diff --git a/icecat/.cargo/config.toml.in b/icecat/.cargo/config.toml.in index c3a03570df..785926f536 100644 --- a/icecat/.cargo/config.toml.in +++ b/icecat/.cargo/config.toml.in @@ -85,9 +85,9 @@ git = "https://github.com/mozilla/audioipc" rev = "e6f44a2bd1e57d11dfc737632a9e849077632330" replace-with = "vendored-sources" -[source."git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=bebaa23317332c95734df76e25193c24a83a6840"] +[source."git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c"] git = "https://github.com/mozilla/cubeb-coreaudio-rs" -rev = "bebaa23317332c95734df76e25193c24a83a6840" +rev = "2407441a2f67341a0e13b4ba6547555e387c671c" replace-with = "vendored-sources" [source."git+https://github.com/mozilla/cubeb-pulse-rs?rev=8678dcab1c287de79c4c184ccc2e065bc62b70e2"] @@ -100,9 +100,9 @@ git = "https://github.com/mozilla/midir.git" rev = "85156e360a37d851734118104619f86bd18e94c6" replace-with = "vendored-sources" -[source."git+https://github.com/mozilla/mp4parse-rust?rev=25ebfa59a21dc0d223052d73a2fafdd55307c2d7"] +[source."git+https://github.com/mozilla/mp4parse-rust?rev=e64650a686e5c5732395cd059e17cfd3b1e5b63b"] git = "https://github.com/mozilla/mp4parse-rust" -rev = "25ebfa59a21dc0d223052d73a2fafdd55307c2d7" +rev = "e64650a686e5c5732395cd059e17cfd3b1e5b63b" replace-with = "vendored-sources" [source."git+https://github.com/mozilla/neqo?tag=v0.13.4"] diff --git a/icecat/.cron.yml b/icecat/.cron.yml index ef22a38f4d..29b3a60198 100644 --- a/icecat/.cron.yml +++ b/icecat/.cron.yml @@ -263,7 +263,8 @@ jobs: - mozilla-release - mozilla-esr140 when: - - {weekday: 'Monday', hour: 5, minute: 0} + - {weekday: 'Monday', hour: 8, minute: 0} + - {weekday: 'Thursday', hour: 8, minute: 0} - name: daily-beta-perf job: diff --git a/icecat/.gitignore b/icecat/.gitignore index da8625027c..b9baa03857 100644 --- a/icecat/.gitignore +++ b/icecat/.gitignore @@ -37,10 +37,6 @@ ID # third-party packages is dealt with by the script vendoring them. *.egg-info/ -# Ignore pywebsocket3 intermediate files. -testing/web-platform/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info -testing/web-platform/tests/tools/third_party/pywebsocket3/build - # Vim swap files. .*.sw[a-z] .sw[a-z] @@ -373,6 +369,3 @@ toolkit/crashreporter/minidump-analyzer/analyzer-test/target/ # Ignore mozperftest artifacts folder /artifacts/ - -# Ignore personal preferences files -CLAUDE.local.md diff --git a/icecat/.taskcluster.yml b/icecat/.taskcluster.yml index 82326ff0b9..b1fc1e5267 100644 --- a/icecat/.taskcluster.yml +++ b/icecat/.taskcluster.yml @@ -101,7 +101,7 @@ tasks: description: 'Created by a [cron task](https://icecat-ci-tc.services.mozilla.com/tasks/${cron.task_id}) (${treeherder_link})' provisionerId: "${trustDomain}-${repository.level}" - workerType: "decision" + workerType: "decision-gcp" tags: $if: 'tasks_for == "hg-push"' diff --git a/icecat/CLOBBER b/icecat/CLOBBER index 03774e01af..91268ce28a 100644 --- a/icecat/CLOBBER +++ b/icecat/CLOBBER @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Merge day clobber 2026-03-23 \ No newline at end of file +Merge day clobber 2025-11-10 \ No newline at end of file diff --git a/icecat/Cargo.lock b/icecat/Cargo.lock index fffee4d56e..1d1eb0bb5f 100644 --- a/icecat/Cargo.lock +++ b/icecat/Cargo.lock @@ -1086,7 +1086,7 @@ dependencies = [ [[package]] name = "coreaudio-sys-utils" version = "0.1.0" -source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=bebaa23317332c95734df76e25193c24a83a6840#bebaa23317332c95734df76e25193c24a83a6840" +source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c#2407441a2f67341a0e13b4ba6547555e387c671c" dependencies = [ "core-foundation-sys", "coreaudio-sys", @@ -1166,7 +1166,6 @@ dependencies = [ name = "crash_helper_common" version = "0.1.0" dependencies = [ - "getrandom 0.3.3", "minidump-writer", "nix 0.30.1", "num-derive", @@ -1398,7 +1397,7 @@ dependencies = [ [[package]] name = "cubeb-coreaudio" version = "0.1.0" -source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=bebaa23317332c95734df76e25193c24a83a6840#bebaa23317332c95734df76e25193c24a83a6840" +source = "git+https://github.com/mozilla/cubeb-coreaudio-rs?rev=2407441a2f67341a0e13b4ba6547555e387c671c#2407441a2f67341a0e13b4ba6547555e387c671c" dependencies = [ "atomic", "audio-mixer", @@ -4607,7 +4606,7 @@ dependencies = [ [[package]] name = "mp4parse" version = "0.17.0" -source = "git+https://github.com/mozilla/mp4parse-rust?rev=25ebfa59a21dc0d223052d73a2fafdd55307c2d7#25ebfa59a21dc0d223052d73a2fafdd55307c2d7" +source = "git+https://github.com/mozilla/mp4parse-rust?rev=e64650a686e5c5732395cd059e17cfd3b1e5b63b#e64650a686e5c5732395cd059e17cfd3b1e5b63b" dependencies = [ "bitreader", "byteorder", @@ -4624,7 +4623,7 @@ version = "0.1.0" [[package]] name = "mp4parse_capi" version = "0.17.0" -source = "git+https://github.com/mozilla/mp4parse-rust?rev=25ebfa59a21dc0d223052d73a2fafdd55307c2d7#25ebfa59a21dc0d223052d73a2fafdd55307c2d7" +source = "git+https://github.com/mozilla/mp4parse-rust?rev=e64650a686e5c5732395cd059e17cfd3b1e5b63b#e64650a686e5c5732395cd059e17cfd3b1e5b63b" dependencies = [ "byteorder", "fallible_collections", diff --git a/icecat/accessible/base/AccIterator.cpp b/icecat/accessible/base/AccIterator.cpp index 489e5294df..9602a6bb75 100644 --- a/icecat/accessible/base/AccIterator.cpp +++ b/icecat/accessible/base/AccIterator.cpp @@ -23,7 +23,7 @@ using namespace mozilla::a11y; // AccIterator //////////////////////////////////////////////////////////////////////////////// -AccIterator::AccIterator(LocalAccessible* aAccessible, +AccIterator::AccIterator(const LocalAccessible* aAccessible, filters::FilterFuncPtr aFilterFunc) : mFilterFunc(aFilterFunc) { mState = new IteratorState(aAccessible); @@ -63,7 +63,7 @@ LocalAccessible* AccIterator::Next() { //////////////////////////////////////////////////////////////////////////////// // nsAccIterator::IteratorState -AccIterator::IteratorState::IteratorState(LocalAccessible* aParent, +AccIterator::IteratorState::IteratorState(const LocalAccessible* aParent, IteratorState* mParentState) : mParent(aParent), mIndex(0), mParentState(mParentState) {} diff --git a/icecat/accessible/base/AccIterator.h b/icecat/accessible/base/AccIterator.h index 1e6f1fe22e..3a678c87d2 100644 --- a/icecat/accessible/base/AccIterator.h +++ b/icecat/accessible/base/AccIterator.h @@ -42,7 +42,7 @@ class AccIterable { */ class AccIterator : public AccIterable { public: - AccIterator(LocalAccessible* aRoot, filters::FilterFuncPtr aFilterFunc); + AccIterator(const LocalAccessible* aRoot, filters::FilterFuncPtr aFilterFunc); virtual ~AccIterator(); /** @@ -57,10 +57,10 @@ class AccIterator : public AccIterable { AccIterator& operator=(const AccIterator&); struct IteratorState { - explicit IteratorState(LocalAccessible* aParent, + explicit IteratorState(const LocalAccessible* aParent, IteratorState* mParentState = nullptr); - RefPtr mParent; + const LocalAccessible* mParent; int32_t mIndex; IteratorState* mParentState; }; diff --git a/icecat/accessible/base/CachedTableAccessible.cpp b/icecat/accessible/base/CachedTableAccessible.cpp index ea63e705e2..8d59a93053 100644 --- a/icecat/accessible/base/CachedTableAccessible.cpp +++ b/icecat/accessible/base/CachedTableAccessible.cpp @@ -71,14 +71,10 @@ void CachedTableAccessible::Invalidate(Accessible* aAcc) { return; } - Accessible* table = nsAccUtils::TableFor(aAcc); - while (table && table->IsTable()) { + if (Accessible* table = nsAccUtils::TableFor(aAcc)) { // Destroy the instance (if any). We'll create a new one the next time it - // is requested. Climb up the heirarcy to invalidate parent tables as well. + // is requested. sCachedTables->Remove(table); - // The table may be a direct child of another table, invalidate that one as - // well. - table = table->Parent(); } } diff --git a/icecat/accessible/base/TextLeafRange.cpp b/icecat/accessible/base/TextLeafRange.cpp index 840a6a1d78..01e414ef06 100644 --- a/icecat/accessible/base/TextLeafRange.cpp +++ b/icecat/accessible/base/TextLeafRange.cpp @@ -536,7 +536,7 @@ static dom::Selection* GetDOMSelection(const nsIContent* aStartContent, return startFrameSel ? &startFrameSel->NormalSelection() : nullptr; } -std::pair, uint32_t> TextLeafPoint::ToDOMPoint( +std::pair TextLeafPoint::ToDOMPoint( bool aIncludeGenerated) const { if (!(*this) || !mAcc->IsLocal()) { MOZ_ASSERT_UNREACHABLE("Invalid point"); diff --git a/icecat/accessible/base/TextLeafRange.h b/icecat/accessible/base/TextLeafRange.h index 5d862a3841..59312995c6 100644 --- a/icecat/accessible/base/TextLeafRange.h +++ b/icecat/accessible/base/TextLeafRange.h @@ -188,7 +188,7 @@ class TextLeafPoint final { /** * Translate given TextLeafPoint into a DOM point. */ - MOZ_CAN_RUN_SCRIPT std::pair, uint32_t> ToDOMPoint( + MOZ_CAN_RUN_SCRIPT std::pair ToDOMPoint( bool aIncludeGenerated = true) const; private: diff --git a/icecat/accessible/generic/DocAccessible.cpp b/icecat/accessible/generic/DocAccessible.cpp index 6ce0183f61..a3c6759cb2 100644 --- a/icecat/accessible/generic/DocAccessible.cpp +++ b/icecat/accessible/generic/DocAccessible.cpp @@ -1768,12 +1768,11 @@ void DocAccessible::DoInitialUpdate() { } #endif - // Fire a reorder event on the OuterDocAccessible after the document tree is - // constructed. Note that since this reorder event is processed by the parent - // document, events targeted to this child document may be fired prior to this - // reorder event. We don't fire a reorder event for remote documents; the - // parent process handles that. - if (!IPCDoc() && !IsRoot()) { + // Fire reorder event after the document tree is constructed. Note, since + // this reorder event is processed by parent document then events targeted to + // this document may be fired prior to this reorder event. If this is + // a problem then consider to keep event processing per tab document. + if (!IsRoot()) { RefPtr reorderEvent = new AccReorderEvent(LocalParent()); ParentDocument()->FireDelayedEvent(reorderEvent); } diff --git a/icecat/accessible/generic/HyperTextAccessible.cpp b/icecat/accessible/generic/HyperTextAccessible.cpp index 90dba1d46d..a55210297f 100644 --- a/icecat/accessible/generic/HyperTextAccessible.cpp +++ b/icecat/accessible/generic/HyperTextAccessible.cpp @@ -859,15 +859,16 @@ void HyperTextAccessible::ReplaceText(const nsAString& aText) { return; } - RefPtr editorBase = GetEditor(); - SetSelectionBoundsAt(TextLeafRange::kRemoveAllExistingSelectedRanges, 0, CharacterCount()); - if (editorBase) { - DebugOnly rv = editorBase->InsertTextAsAction(aText); - NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "Failed to insert the new text"); + RefPtr editorBase = GetEditor(); + if (!editorBase) { + return; } + + DebugOnly rv = editorBase->InsertTextAsAction(aText); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "Failed to insert the new text"); } void HyperTextAccessible::InsertText(const nsAString& aText, diff --git a/icecat/accessible/ipc/DocAccessibleParent.cpp b/icecat/accessible/ipc/DocAccessibleParent.cpp index 1c90840ed9..b9fce0a322 100644 --- a/icecat/accessible/ipc/DocAccessibleParent.cpp +++ b/icecat/accessible/ipc/DocAccessibleParent.cpp @@ -50,7 +50,6 @@ DocAccessibleParent::DocAccessibleParent() mTopLevel(false), mTopLevelInContentProcess(false), mShutdown(false), - mIsInitialTreeDone(false), mFocus(0), mCaretId(0), mCaretOffset(-1), @@ -118,11 +117,6 @@ mozilla::ipc::IPCResult DocAccessibleParent::ProcessShowEvent( return IPC_OK(); #endif } - - if (parent->IsOuterDoc()) { - return IPC_FAIL(this, "Cannot attach non-doc to OuterDoc"); - } - lastParent = parent; lastParentID = accData.ParentID(); @@ -151,9 +145,7 @@ mozilla::ipc::IPCResult DocAccessibleParent::ProcessShowEvent( // Otherwise, clients might crawl the incomplete subtree and they won't get // mutation events for the remaining pieces. if (aComplete || root != child) { - if (!AttachChild(parent, childIdx, child)) { - return IPC_FAIL(this, "failed to attach child"); - } + AttachChild(parent, childIdx, child); } } @@ -182,9 +174,7 @@ mozilla::ipc::IPCResult DocAccessibleParent::ProcessShowEvent( MOZ_ASSERT(rootParent); root = GetAccessible(mPendingShowChild); MOZ_ASSERT(root); - if (!AttachChild(rootParent, mPendingShowIndex, root)) { - return IPC_FAIL(this, "failed to attach pending show child"); - } + AttachChild(rootParent, mPendingShowIndex, root); mPendingShowChild = 0; mPendingShowParent = 0; mPendingShowIndex = 0; @@ -228,11 +218,6 @@ mozilla::ipc::IPCResult DocAccessibleParent::ProcessShowEvent( RemoteAccessible* DocAccessibleParent::CreateAcc( const AccessibleData& aAccData) { - if (aAccData.ID() == 0) { - MOZ_ASSERT_UNREACHABLE("An ID of 0 is reserved for the document itself"); - return nullptr; - } - RemoteAccessible* newProxy; if ((newProxy = GetAccessible(aAccData.ID()))) { // This is a move. Reuse the Accessible; don't destroy it. @@ -249,11 +234,6 @@ RemoteAccessible* DocAccessibleParent::CreateAcc( return nullptr; } - if (aAccData.GenericTypes() & eDocument) { - MOZ_ASSERT_UNREACHABLE("Invalid acc type"); - return nullptr; - } - newProxy = new RemoteAccessible(aAccData.ID(), this, aAccData.Role(), aAccData.Type(), aAccData.GenericTypes(), aAccData.RoleMapEntryIndex()); @@ -266,20 +246,9 @@ RemoteAccessible* DocAccessibleParent::CreateAcc( return newProxy; } -bool DocAccessibleParent::AttachChild(RemoteAccessible* aParent, +void DocAccessibleParent::AttachChild(RemoteAccessible* aParent, uint32_t aIndex, RemoteAccessible* aChild) { - if (aChild->RemoteParent()) { - MOZ_ASSERT_UNREACHABLE( - "Attempt to attach child which already has a parent!"); - return false; - } - - if (aParent == aChild) { - MOZ_ASSERT_UNREACHABLE("Attempt to make an accessible its own child!"); - return false; - } - aParent->AddChildAt(aIndex, aChild); aChild->SetParent(aParent); // ProxyCreated might have already been called if aChild is being moved. @@ -300,16 +269,11 @@ bool DocAccessibleParent::AttachChild(RemoteAccessible* aParent, } MOZ_ASSERT(bridge->GetEmbedderAccessibleDoc() == this); if (DocAccessibleParent* childDoc = bridge->GetDocAccessibleParent()) { - MOZ_DIAGNOSTIC_ASSERT(!childDoc->RemoteParent(), - "Pending OOP child doc shouldn't have parent " - "once new OuterDoc is attached"); AddChildDoc(childDoc, aChild->ID(), false); } return true; }); } - - return true; } void DocAccessibleParent::ShutdownOrPrepareForMove(RemoteAccessible* aAcc) { @@ -322,10 +286,6 @@ void DocAccessibleParent::ShutdownOrPrepareForMove(RemoteAccessible* aAcc) { // the show event. For now, clear all of them by moving them to a temporary. auto children{std::move(aAcc->mChildren)}; for (RemoteAccessible* child : children) { - if (child == aAcc) { - MOZ_ASSERT_UNREACHABLE( - "Somehow an accessible got added as a child of itself!"); - } ShutdownOrPrepareForMove(child); } } @@ -643,18 +603,6 @@ mozilla::ipc::IPCResult DocAccessibleParent::RecvMutationEvents( mozilla::ipc::IPCResult DocAccessibleParent::RecvRequestAckMutationEvents() { if (!mShutdown) { - if (!mIsInitialTreeDone) { - // This is the first request for an ACK, which means we now have the - // initial tree. - mIsInitialTreeDone = true; - // If this document is already bound to its embedder, fire a reorder event - // to notify the client that the embedded document is available. If not, - // this will be handled when this document is bound in AddChildDoc. - if (RemoteAccessible* parent = RemoteParent()) { - parent->Document()->FireEvent(parent, - nsIAccessibleEvent::EVENT_REORDER); - } - } Unused << SendAckMutationEvents(); } return IPC_OK(); @@ -916,10 +864,7 @@ mozilla::ipc::IPCResult DocAccessibleParent::RecvBindChildDoc( MOZ_ASSERT(CheckDocTree()); auto childDoc = static_cast(aChildDoc.get()); - if (childDoc->IsShutdown()) { - return IPC_FAIL(this, "Attempt to bind a shutdown child doc"); - } - + childDoc->Unbind(); ipc::IPCResult result = AddChildDoc(childDoc, aID, false); MOZ_ASSERT(result); MOZ_ASSERT(CheckDocTree()); @@ -937,15 +882,6 @@ mozilla::ipc::IPCResult DocAccessibleParent::RecvBindChildDoc( ipc::IPCResult DocAccessibleParent::AddChildDoc(DocAccessibleParent* aChildDoc, uint64_t aParentID, bool aCreating) { - if (aChildDoc->RemoteParent()) { - return IPC_FAIL(this, - "Attempt to add child doc which already has a parent"); - } - - if (aChildDoc->IsShutdown()) { - return IPC_FAIL(this, "Attempt to add a shutdown child doc"); - } - // We do not use GetAccessible here because we want to be sure to not get the // document it self. ProxyEntry* e = mAccessibles.GetEntry(aParentID); @@ -994,20 +930,11 @@ ipc::IPCResult DocAccessibleParent::AddChildDoc(DocAccessibleParent* aChildDoc, aChildDoc->SetEmulatedWindowHandle(mEmulatedWindowHandle); } #endif // defined(XP_WIN) - } - // We need to fire a reorder event on the embedder. We do this here rather - // than in the content process for two reasons: - // 1. It isn't possible for the content process to fire a reorder event on the - // embedder when the embedded document is in a different process to its - // embedder. - // 2. Doing it here ensures that the event is fired after the child document - // is bound. Otherwise, there could be a short period where the content - // process has fired the reorder event, but the child document isn't bound - // yet. - // However, if the initial tree hasn't been received yet, we don't want to - // fire the reorder event yet. That gets handled in - // RecvRequestAckMutationEvents. - if (aChildDoc->mIsInitialTreeDone) { + // We need to fire a reorder event on the outer doc accessible. + // For same-process documents, this is fired by the content process, but + // this isn't possible when the document is in a different process to its + // embedder. + // FireEvent fires both OS and XPCOM events. FireEvent(outerDoc, nsIAccessibleEvent::EVENT_REORDER); } @@ -1048,9 +975,6 @@ void DocAccessibleParent::Destroy() { // If we are already shutdown that is because our containing tab parent is // shutting down in which case we don't need to do anything. if (mShutdown) { - // Just in case there is a cycle in the document heirarchy. - mParent = nullptr; - mIndexInParent = -1; return; } @@ -1088,8 +1012,6 @@ void DocAccessibleParent::Destroy() { RemoteAccessible* acc = iter.Get()->mProxy; MOZ_ASSERT(acc != this); if (acc->IsTable()) { - // Prevents the invalidation code from trying to walk up the tree. - acc->SetParent(nullptr); CachedTableAccessible::Invalidate(acc); } ProxyDestroyed(acc); @@ -1135,9 +1057,6 @@ void DocAccessibleParent::ActorDestroy(ActorDestroyReason aWhy) { if (!mShutdown) { ACQUIRE_ANDROID_LOCK Destroy(); - } else if (RemoteParent()) { - ACQUIRE_ANDROID_LOCK - Unbind(); } } diff --git a/icecat/accessible/ipc/DocAccessibleParent.h b/icecat/accessible/ipc/DocAccessibleParent.h index 21ec619536..49eaccae47 100644 --- a/icecat/accessible/ipc/DocAccessibleParent.h +++ b/icecat/accessible/ipc/DocAccessibleParent.h @@ -325,14 +325,11 @@ class DocAccessibleParent : public RemoteAccessible, }; RemoteAccessible* CreateAcc(const AccessibleData& aAccData); - bool AttachChild(RemoteAccessible* aParent, uint32_t aIndex, + void AttachChild(RemoteAccessible* aParent, uint32_t aIndex, RemoteAccessible* aChild); [[nodiscard]] bool CheckDocTree() const; xpcAccessibleGeneric* GetXPCAccessible(RemoteAccessible* aProxy); - /** - * Fire an event to both OS and XPCOM consumers. - */ void FireEvent(RemoteAccessible* aAcc, const uint32_t& aType); /** @@ -368,10 +365,9 @@ class DocAccessibleParent : public RemoteAccessible, uint32_t mPendingShowIndex = 0; nsTHashSet mMovingIDs; uint64_t mActorID; - bool mTopLevel : 1; - bool mTopLevelInContentProcess : 1; - bool mShutdown : 1; - bool mIsInitialTreeDone : 1; + bool mTopLevel; + bool mTopLevelInContentProcess; + bool mShutdown; RefPtr mBrowsingContext; nsTHashSet> mPendingOOPChildDocs; diff --git a/icecat/accessible/tests/browser/fission/browser.toml b/icecat/accessible/tests/browser/fission/browser.toml index 4993aa6eb8..8ddd5ed862 100644 --- a/icecat/accessible/tests/browser/fission/browser.toml +++ b/icecat/accessible/tests/browser/fission/browser.toml @@ -11,8 +11,6 @@ support-files = [ ["browser_hidden_iframe.js"] https_first_disabled = true -["browser_iframe_recreation.js"] - ["browser_nested_iframe.js"] ["browser_reframe_root.js"] diff --git a/icecat/accessible/tests/browser/fission/browser_iframe_recreation.js b/icecat/accessible/tests/browser/fission/browser_iframe_recreation.js deleted file mode 100644 index f0edbf55f7..0000000000 --- a/icecat/accessible/tests/browser/fission/browser_iframe_recreation.js +++ /dev/null @@ -1,29 +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/. */ - -"use strict"; - -addAccessibleTask( - `test`, - async function testRecreation(browser, iframeDocAcc, topDocAcc) { - let iframe = findAccessibleChildByID(topDocAcc, DEFAULT_IFRAME_ID); - is(iframeDocAcc.parent, iframe, "iframe doc's parent is iframe"); - // The ARIA role currently causes re-creation. If that ever changes, we'll - // need to switch to another technique here. - info("Change iframe's role to recreate it"); - let shown = waitForEvent(EVENT_SHOW, DEFAULT_IFRAME_ID); - let reordered = waitForEvent(EVENT_REORDER, DEFAULT_IFRAME_ID); - await SpecialPowers.spawn( - topDocAcc.browsingContext, - [DEFAULT_IFRAME_ID], - id => { - content.document.getElementById(id).role = "foo"; - } - ); - iframe = (await shown).accessible; - await reordered; - is(iframeDocAcc.parent, iframe, "iframe doc's parent is iframe"); - }, - { chrome: false, topLevel: false, iframe: true, remoteIframe: true } -); diff --git a/icecat/browser/actors/BlockedSiteChild.sys.mjs b/icecat/browser/actors/BlockedSiteChild.sys.mjs index 3f2dfec9b6..c6abb29124 100644 --- a/icecat/browser/actors/BlockedSiteChild.sys.mjs +++ b/icecat/browser/actors/BlockedSiteChild.sys.mjs @@ -16,9 +16,25 @@ function getSiteBlockedErrorDetails(docShell) { Ci.nsIClassifiedChannel ); if (classifiedChannel) { + let httpChannel = docShell.failedChannel.QueryInterface( + Ci.nsIHttpChannel + ); + + let reportUri = httpChannel.URI; + + // Remove the query to avoid leaking sensitive data + if (reportUri instanceof Ci.nsIURL) { + reportUri = reportUri.mutate().setQuery("").finalize(); + } + + let triggeringPrincipal = docShell.failedChannel.loadInfo + ? docShell.failedChannel.loadInfo.triggeringPrincipal + : null; blockedInfo = { list: classifiedChannel.matchedList, + triggeringPrincipal, provider: classifiedChannel.matchedProvider, + uri: reportUri.asciiSpec, }; } } diff --git a/icecat/browser/actors/BlockedSiteParent.sys.mjs b/icecat/browser/actors/BlockedSiteParent.sys.mjs index e1ef7896c4..d36e71ecc8 100644 --- a/icecat/browser/actors/BlockedSiteParent.sys.mjs +++ b/icecat/browser/actors/BlockedSiteParent.sys.mjs @@ -177,11 +177,8 @@ export class BlockedSiteParent extends EscapablePageParent { // site, so that they don't lose track after, e.g., tab switching. // We can't use browser.contentPrincipal which is principal of about:blocked // Create one from uri with current principal origin attributes - - // Remove the query to avoid leaking sensitive data - let uri = browsingContext.currentURI.mutate().setQuery("").finalize(); let principal = Services.scriptSecurityManager.createContentPrincipal( - uri, + Services.io.newURI(blockedInfo.uri), browsingContext.currentWindowGlobal.documentPrincipal.originAttributes ); Services.perms.addFromPrincipal( @@ -209,10 +206,10 @@ export class BlockedSiteParent extends EscapablePageParent { let title; let chromeWin = browsingContext.topChromeWindow; if (reason === "malware") { - let reportUrl = lazy.SafeBrowsing.getReportURL("MalwareMistake", { - ...blockedInfo, - uri: uri.asciiSpec, - }); + let reportUrl = lazy.SafeBrowsing.getReportURL( + "MalwareMistake", + blockedInfo + ); title = lazy.browserBundle.GetStringFromName( "safebrowsing.reportedAttackSite" ); @@ -236,10 +233,10 @@ export class BlockedSiteParent extends EscapablePageParent { }; } } else if (reason === "phishing") { - let reportUrl = lazy.SafeBrowsing.getReportURL("PhishMistake", { - ...blockedInfo, - uri: uri.asciiSpec, - }); + let reportUrl = lazy.SafeBrowsing.getReportURL( + "PhishMistake", + blockedInfo + ); title = lazy.browserBundle.GetStringFromName( "safebrowsing.deceptiveSite" ); @@ -284,15 +281,16 @@ export class BlockedSiteParent extends EscapablePageParent { buttons ); - let activeSHEntry = browsingContext.activeSessionHistoryEntry; - if (!activeSHEntry) { - console.error("No active session history entry found"); - return; - } - // Allow users to override and continue through to the site. - browsingContext.loadURI(uri, { - triggeringPrincipal: activeSHEntry.triggeringPrincipal, + // Note that we have to use the passed URI info and can't just + // rely on the document URI, because the latter contains + // additional query parameters that should be stripped. + let triggeringPrincipal = + blockedInfo.triggeringPrincipal || + Services.scriptSecurityManager.createNullPrincipal({}); + + browsingContext.fixupAndLoadURIString(blockedInfo.uri, { + triggeringPrincipal, loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CLASSIFIER, }); } diff --git a/icecat/browser/actors/DOMFullscreenParent.sys.mjs b/icecat/browser/actors/DOMFullscreenParent.sys.mjs index a15e55a7c1..153bc33b75 100644 --- a/icecat/browser/actors/DOMFullscreenParent.sys.mjs +++ b/icecat/browser/actors/DOMFullscreenParent.sys.mjs @@ -142,7 +142,9 @@ export class DOMFullscreenParent extends JSWindowActorParent { case "DOMFullscreen:NewOrigin": { // Don't show the warning if we've already exited fullscreen. if (window.document.fullscreen) { - window.PointerlockFsWarning.showFullScreen(topBrowsingContext); + window.PointerlockFsWarning.showFullScreen( + aMessage.data.originNoSuffix + ); } this.updateFullscreenWindowReference(window); break; @@ -220,7 +222,7 @@ export class DOMFullscreenParent extends JSWindowActorParent { if (!this.hasBeenDestroyed() && this.requestOrigin) { window.PointerlockFsWarning.showFullScreen( - this.requestOrigin.browsingContext + this.requestOrigin.manager.documentPrincipal.originNoSuffix ); } break; diff --git a/icecat/browser/app/winlauncher/LauncherProcessWin.cpp b/icecat/browser/app/winlauncher/LauncherProcessWin.cpp index 8a8007b852..8167d2b81c 100644 --- a/icecat/browser/app/winlauncher/LauncherProcessWin.cpp +++ b/icecat/browser/app/winlauncher/LauncherProcessWin.cpp @@ -11,6 +11,7 @@ #include "mozilla/Attributes.h" #include "mozilla/CmdLineAndEnvUtils.h" #include "mozilla/DebugOnly.h" +#include "mozilla/DynamicallyLinkedFunctionPtr.h" #include "mozilla/glue/Debug.h" #include "mozilla/GeckoArgs.h" #include "mozilla/Maybe.h" @@ -18,14 +19,12 @@ #include "mozilla/SafeMode.h" #include "mozilla/UniquePtr.h" #include "mozilla/WindowsConsole.h" -#include "mozilla/WindowsProcessMitigations.h" #include "mozilla/WindowsVersion.h" #include "mozilla/WinHeaderOnlyUtils.h" #include "nsWindowsHelpers.h" #include #include -#include #include "DllBlocklistInit.h" #include "ErrorHandler.h" @@ -112,82 +111,16 @@ static nsReturnRef CreateJobAndAssignProcess(HANDLE aProcess) { return job.out(); } -enum class VCRuntimeDLLDir : bool { - Application, - System, -}; -static bool GetMSVCP140VersionInfo(VCRuntimeDLLDir aDir, - uint64_t& aOutVersion) { - wchar_t dllPath[MAX_PATH]; - if (aDir == VCRuntimeDLLDir::Application) { - DWORD size = ::GetModuleFileNameW(nullptr, dllPath, MAX_PATH); - if (!size || - (size == MAX_PATH && ::GetLastError() == ERROR_INSUFFICIENT_BUFFER) || - !::PathRemoveFileSpecW(dllPath)) { - return false; - } - } else { - MOZ_ASSERT(aDir == VCRuntimeDLLDir::System); - UINT size = ::GetSystemDirectoryW(dllPath, MAX_PATH); - if (!size || size >= MAX_PATH) { - return false; - } - } +#if !defined( \ + PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON) +# define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON \ + (0x00000001ULL << 60) +#endif // !defined(PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON) - if (!::PathAppendW(dllPath, L"msvcp140.dll")) { - return false; - } - HMODULE crt = - ::LoadLibraryExW(dllPath, nullptr, LOAD_LIBRARY_AS_IMAGE_RESOURCE); - if (!crt) { - return false; - } - - mozilla::nt::PEHeaders headers{crt}; - bool result = headers.GetVersionInfo(aOutVersion); - ::FreeLibrary(crt); - return result; -} - -/** - * Choose whether we want to favor loading DLLs from the system directory over - * the application directory. This choice automatically propagates to all child - * processes. In particular, it determines whether child processes will load - * Visual C++ runtime DLLs from the system or the application directory at - * startup. - * - * Whenever possible, we want all processes to favor loading DLLs from the - * system directory. But if old Visual C++ runtime DLLs are installed - * system-wide, then we must favor loading from the application directory - * instead to ensure compatibility, at least during startup. So in this case we - * only apply the delayed variant of the mitigation and only in sandboxed - * processes, which is the best compromise (see SandboxBroker::LaunchApp). - * - * This function is called from the launcher process *and* the browser process. - * This is because if the launcher process is disabled, we still want the - * browser process to go through this code so that it enforces the correct - * choice for itself and for child processes. - */ -static void EnablePreferLoadFromSystem32IfCompatible() { - // We may already have the mitigation if we are the browser process and we - // inherited it from the launcher process. - if (!mozilla::IsPreferLoadFromSystem32Available() || - mozilla::IsPreferLoadFromSystem32Enabled()) { - return; - } - - // Only bail out if (1) there is a conflict because the two DLLs exist *and* - // (2) the version of the system DLL is problematic. - uint64_t systemDirVersion = 0, appDirVersion = 0; - if (GetMSVCP140VersionInfo(VCRuntimeDLLDir::System, systemDirVersion) && - GetMSVCP140VersionInfo(VCRuntimeDLLDir::Application, appDirVersion) && - systemDirVersion < appDirVersion) { - return; - } - - mozilla::DebugOnly setOk = mozilla::EnablePreferLoadFromSystem32(); - MOZ_ASSERT(setOk); -} +#if !defined(PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF) +# define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF \ + (0x00000002ULL << 40) +#endif // !defined(PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF) /** * Any mitigation policies that should be set on the browser process should go @@ -195,11 +128,10 @@ static void EnablePreferLoadFromSystem32IfCompatible() { */ static void SetMitigationPolicies(mozilla::ProcThreadAttributes& aAttrs, const bool aIsSafeMode) { - // Note: Do *not* handle IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON here. For this - // mitigation we rely on EnablePreferLoadFromSystem32IfCompatible(). - // The launcher process or the browser process will choose whether we - // want to apply the mitigation or not, and child processes will - // automatically inherit that choice. + if (mozilla::IsWin10AnniversaryUpdateOrLater()) { + aAttrs.AddMitigationPolicy( + PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON); + } #if defined(_M_ARM64) // Disable CFG on older versions of ARM64 Windows to avoid a crash in COM. @@ -354,9 +286,6 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], return Nothing(); } - // Called from the launcher process *and* the browser process. - EnablePreferLoadFromSystem32IfCompatible(); - #if defined(MOZ_LAUNCHER_PROCESS) LauncherRegistryInfo regInfo; Maybe runAsLauncher = RunAsLauncherProcess(regInfo, argc, argv); @@ -380,6 +309,22 @@ Maybe LauncherMain(int& argc, wchar_t* argv[], return Nothing(); } + // Make sure that the launcher process itself has image load policies set + if (IsWin10AnniversaryUpdateOrLater()) { + static const StaticDynamicallyLinkedFunctionPtr< + decltype(&SetProcessMitigationPolicy)> + pSetProcessMitigationPolicy(L"kernel32.dll", + "SetProcessMitigationPolicy"); + if (pSetProcessMitigationPolicy) { + PROCESS_MITIGATION_IMAGE_LOAD_POLICY imgLoadPol = {}; + imgLoadPol.PreferSystem32Images = 1; + + DebugOnly setOk = pSetProcessMitigationPolicy( + ProcessImageLoadPolicy, &imgLoadPol, sizeof(imgLoadPol)); + MOZ_ASSERT(setOk); + } + } + #if defined(MOZ_SANDBOX) // Ensure the relevant mitigations are enforced. mozilla::sandboxing::ApplyParentProcessMitigations(); diff --git a/icecat/browser/app/winlauncher/moz.build b/icecat/browser/app/winlauncher/moz.build index 0a4d00cf24..20fc547808 100644 --- a/icecat/browser/app/winlauncher/moz.build +++ b/icecat/browser/app/winlauncher/moz.build @@ -24,7 +24,6 @@ OS_LIBS += [ "oleaut32", "ole32", "rpcrt4", - "shlwapi", "version", ] diff --git a/icecat/browser/base/content/browser-fullScreenAndPointerLock.js b/icecat/browser/base/content/browser-fullScreenAndPointerLock.js index 3c9343b0cf..e3586e9fb5 100644 --- a/icecat/browser/base/content/browser-fullScreenAndPointerLock.js +++ b/icecat/browser/base/content/browser-fullScreenAndPointerLock.js @@ -49,16 +49,10 @@ var PointerlockFsWarning = { } }, - // Show info that top level has entered fullscreen. Ultimately, it is always - // ancestors who are in control and can with various means make the user believe - // a site has entered fullscreen while displaying it's own content. - // We try to make it clear to the user that it's the top level that is actually in fullscreen - showFullScreen(browsingContext) { - const origin = - browsingContext.top.currentWindowGlobal.documentPrincipal.originNoSuffix; + showFullScreen(aOrigin) { let timeout = Services.prefs.getIntPref("full-screen-api.warning.timeout"); let delay = Services.prefs.getIntPref("full-screen-api.warning.delay"); - this.show(origin, "fullscreen-warning", timeout, delay); + this.show(aOrigin, "fullscreen-warning", timeout, delay); }, // Shows a warning that the site has entered fullscreen or @@ -109,9 +103,10 @@ var PointerlockFsWarning = { } else { textElem.removeAttribute("hidden"); // Document's principal's URI has a host. Display a warning including it. - let displayHost = BrowserUtils.formatURIForDisplay(uri, { - onlyBaseDomain: true, - }); + let { DownloadUtils } = ChromeUtils.importESModule( + "resource://gre/modules/DownloadUtils.sys.mjs" + ); + let displayHost = DownloadUtils.getURIHost(uri.spec)[0]; let l10nString = { "fullscreen-warning": "fullscreen-warning-domain", "pointerlock-warning": "pointerlock-warning-domain", diff --git a/icecat/browser/base/content/browser.js b/icecat/browser/base/content/browser.js index 166845c340..71f4dfbbd8 100644 --- a/icecat/browser/base/content/browser.js +++ b/icecat/browser/base/content/browser.js @@ -2230,7 +2230,7 @@ var XULBrowserWindow = { // Ensure we close any remaining open locationspecific panels if (!isSameDocument) { - closeOpenPanels(":is(panel, menupopup)[locationspecific='true']"); + closeOpenPanels("panel[locationspecific='true']"); } gPermissionPanel.onLocationChange(); diff --git a/icecat/browser/base/content/test/fullscreen/browser.toml b/icecat/browser/base/content/test/fullscreen/browser.toml index adac9764fb..bdfbb1d5d1 100644 --- a/icecat/browser/base/content/test/fullscreen/browser.toml +++ b/icecat/browser/base/content/test/fullscreen/browser.toml @@ -60,9 +60,6 @@ skip-if = [ "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && swgl", # Bug 1949995 ] -["browser_fullscreen_toplevel_warning.js"] -support-files = ["fullscreen.html"] - ["browser_fullscreen_warning.js"] support-files = ["fullscreen.html"] skip-if = [ diff --git a/icecat/browser/base/content/test/fullscreen/browser_fullscreen_toplevel_warning.js b/icecat/browser/base/content/test/fullscreen/browser_fullscreen_toplevel_warning.js deleted file mode 100644 index 0b15affacb..0000000000 --- a/icecat/browser/base/content/test/fullscreen/browser_fullscreen_toplevel_warning.js +++ /dev/null @@ -1,184 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -const FULLSCREEN_PATH = - "/browser/browser/base/content/test/fullscreen/fullscreen.html"; - -function getWarningDomain(warning) { - let textElem = warning.querySelector(".pointerlockfswarning-domain-text"); - if (textElem.hidden) { - return null; - } - let args = textElem.getAttribute("data-l10n-args"); - return args ? JSON.parse(args).domain : null; -} - -async function waitForWarningState(aWarningElement, aExpectedState) { - await BrowserTestUtils.waitForAttribute(aExpectedState, aWarningElement, ""); -} - -add_setup(async function init() { - await SpecialPowers.pushPrefEnv({ - set: [ - ["test.wait300msAfterTabSwitch", true], - ["full-screen-api.enabled", true], - ["full-screen-api.allow-trusted-requests-only", false], - ], - }); -}); - -// Bug 2021080 - Verify the fullscreen warning always displays the top-level domain, -// not the origin of the cross-origin frame that requested fullscreen. -add_task(async function test_fullscreen_warning_cross_origin_shows_toplevel() { - await BrowserTestUtils.withNewTab("https://example.com", async browser => { - let warning = document.getElementById("fullscreen-warning"); - - await SpecialPowers.spawn(browser, [FULLSCREEN_PATH], async path => { - let iframe = content.document.createElement("iframe"); - iframe.allow = "fullscreen"; - iframe.src = `https://example.org${path}`; - let loaded = new Promise(r => - iframe.addEventListener("load", r, { once: true }) - ); - content.document.body.appendChild(iframe); - await loaded; - }); - - let warningShown = waitForWarningState(warning, "onscreen"); - await SpecialPowers.spawn(browser, [], async () => { - let frame = content.document.querySelector("iframe"); - frame.focus(); - await SpecialPowers.spawn(frame, [], () => { - content.document.getElementById("request").click(); - }); - }); - await warningShown; - - let activeOrigin = await SpecialPowers.spawn(browser, [], async () => { - let frame = content.document.querySelector("iframe"); - return SpecialPowers.spawn(frame, [], () => content.location.hostname); - }); - is( - activeOrigin, - "example.org", - "Cross-origin frame (example.org) is the active fullscreen document" - ); - is( - getWarningDomain(warning), - "example.com", - "Warning shows top-level domain, not the active fullscreen frame's domain" - ); - - let warningHidden = waitForWarningState(warning, "hidden"); - let exitPromise = BrowserTestUtils.waitForEvent( - document, - "fullscreenchange", - false, - () => !document.fullscreenElement - ); - document.getElementById("fullscreen-exit-button").click(); - await Promise.all([exitPromise, warningHidden]); - }); -}); - -// Bug 2021080 - Verify the fullscreen warning shows the top-level domain when each -// of three nested cross-origin frames (top, middle, inner) requests fullscreen. -add_task(async function test_fullscreen_warning_three_nested_origins() { - await BrowserTestUtils.withNewTab("https://example.com", async browser => { - let warning = document.getElementById("fullscreen-warning"); - - // Build a 3-level nested structure: - // example.com (div > iframe[example.org (div > iframe[example.net])]) - await SpecialPowers.spawn(browser, [FULLSCREEN_PATH], async path => { - let topDiv = content.document.createElement("div"); - content.document.body.appendChild(topDiv); - - let middleFrame = content.document.createElement("iframe"); - middleFrame.allow = "fullscreen"; - middleFrame.src = `https://example.org${path}`; - let loaded = new Promise(r => - middleFrame.addEventListener("load", r, { once: true }) - ); - topDiv.appendChild(middleFrame); - await loaded; - - await SpecialPowers.spawn(middleFrame, [path], async innerPath => { - let middleDiv = content.document.createElement("div"); - content.document.body.appendChild(middleDiv); - - let innerFrame = content.document.createElement("iframe"); - innerFrame.allow = "fullscreen"; - innerFrame.src = `https://example.net${innerPath}`; - let innerLoaded = new Promise(r => - innerFrame.addEventListener("load", r, { once: true }) - ); - middleDiv.appendChild(innerFrame); - await innerLoaded; - }); - }); - - async function exitFullscreen() { - let warningHidden = waitForWarningState(warning, "hidden"); - let exitPromise = BrowserTestUtils.waitForEvent( - document, - "fullscreenchange", - false, - () => !document.fullscreenElement - ); - document.getElementById("fullscreen-exit-button").click(); - await Promise.all([exitPromise, warningHidden]); - } - - // Step 1: Top-level (example.com) requests fullscreen on its div. - let warningShown = waitForWarningState(warning, "onscreen"); - await SpecialPowers.spawn(browser, [], () => { - content.document.querySelector("div").requestFullscreen(); - }); - await warningShown; - is( - getWarningDomain(warning), - "example.com", - "Top-level fullscreen: warning shows top-level domain" - ); - await exitFullscreen(); - - // Step 2: Middle frame (example.org) requests fullscreen on its div. - warningShown = waitForWarningState(warning, "onscreen"); - await SpecialPowers.spawn(browser, [], async () => { - let middleFrame = content.document.querySelector("iframe"); - middleFrame.focus(); - await SpecialPowers.spawn(middleFrame, [], () => { - content.document.querySelector("div").requestFullscreen(); - }); - }); - await warningShown; - is( - getWarningDomain(warning), - "example.com", - "Middle frame fullscreen: warning shows top-level domain" - ); - await exitFullscreen(); - - // Step 3: Inner frame (example.net) requests fullscreen on an element. - warningShown = waitForWarningState(warning, "onscreen"); - await SpecialPowers.spawn(browser, [], async () => { - let middleFrame = content.document.querySelector("iframe"); - await SpecialPowers.spawn(middleFrame, [], async () => { - let innerFrame = content.document.querySelector("iframe"); - innerFrame.focus(); - await SpecialPowers.spawn(innerFrame, [], () => { - content.document.getElementById("request").click(); - }); - }); - }); - await warningShown; - is( - getWarningDomain(warning), - "example.com", - "Inner frame fullscreen: warning shows top-level domain" - ); - await exitFullscreen(); - }); -}); diff --git a/icecat/browser/components/DesktopActorRegistry.sys.mjs b/icecat/browser/components/DesktopActorRegistry.sys.mjs index eccc1457d0..a7e78d2599 100644 --- a/icecat/browser/components/DesktopActorRegistry.sys.mjs +++ b/icecat/browser/components/DesktopActorRegistry.sys.mjs @@ -127,9 +127,6 @@ let JSWINDOWACTORS = { }, }, matches: ["about:messagepreview", "about:messagepreview?*"], - remoteTypes: ["privilegedabout"], - enablePreference: - "browser.newtabpage.activity-stream.asrouter.devtoolsEnabled", }, AboutPocket: { diff --git a/icecat/browser/components/about/AboutRedirector.cpp b/icecat/browser/components/about/AboutRedirector.cpp index f98c33533e..e8caa80736 100644 --- a/icecat/browser/components/about/AboutRedirector.cpp +++ b/icecat/browser/components/about/AboutRedirector.cpp @@ -110,7 +110,6 @@ static const RedirEntry kRedirMap[] = { {"messagepreview", "chrome://browser/content/messagepreview/messagepreview.html", nsIAboutModule::URI_MUST_LOAD_IN_CHILD | - nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS | nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT}, {"pocket-saved", "chrome://pocket/content/panels/saved.html", diff --git a/icecat/browser/components/asrouter/modules/ASRouterTargeting.sys.mjs b/icecat/browser/components/asrouter/modules/ASRouterTargeting.sys.mjs index ef45572e2b..ad0b143ea4 100644 --- a/icecat/browser/components/asrouter/modules/ASRouterTargeting.sys.mjs +++ b/icecat/browser/components/asrouter/modules/ASRouterTargeting.sys.mjs @@ -551,8 +551,11 @@ async function getAutofillRecords(data) { // JSActors, but that would import a lot of code for a targeting attribute. return 0; } - let records = await actor?.getRecords(data); - return records?.length ?? 0; + let records = await actor?.receiveMessage({ + name: "FormAutofill:GetRecords", + data, + }); + return records?.records?.length ?? 0; } // Attribution data can be encoded multiple times so we need this function to diff --git a/icecat/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js b/icecat/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js index df22305118..1acb04964c 100644 --- a/icecat/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js +++ b/icecat/browser/components/asrouter/tests/browser/browser_asrouter_targeting.js @@ -1418,10 +1418,15 @@ add_task(async function test_creditCardsSaved() { gBrowser.selectedBrowser.browsingContext.currentWindowGlobal.getActor( "FormAutofill" ), - "getRecords" + "receiveMessage" ) - .withArgs(sandbox.match({ collectionName: "creditCards" })) - .resolves([creditcard]) + .withArgs( + sandbox.match({ + name: "FormAutofill:GetRecords", + data: { collectionName: "creditCards" }, + }) + ) + .resolves({ records: [creditcard] }) .callThrough(); is( @@ -1430,8 +1435,8 @@ add_task(async function test_creditCardsSaved() { "Should return 1 when 1 credit card is saved" ); ok( - stub.calledWithMatch({ collectionName: "creditCards" }), - "Targeting called getRecords" + stub.calledWithMatch({ name: "FormAutofill:GetRecords" }), + "Targeting called FormAutofill:GetRecords" ); sandbox.restore(); diff --git a/icecat/browser/components/downloads/DownloadsViewUI.sys.mjs b/icecat/browser/components/downloads/DownloadsViewUI.sys.mjs index 67801c7983..408c25f5d6 100644 --- a/icecat/browser/components/downloads/DownloadsViewUI.sys.mjs +++ b/icecat/browser/components/downloads/DownloadsViewUI.sys.mjs @@ -12,7 +12,6 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { - BrowserUtils: "resource://gre/modules/BrowserUtils.sys.mjs", BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", Downloads: "resource://gre/modules/Downloads.sys.mjs", @@ -601,13 +600,7 @@ DownloadsViewUI.DownloadElementShell.prototype = { this.showStatus(stateLabel, hoverStatus); return; } - let uri = URL.parse(this.download.source.url)?.URI; - let displayHost = uri - ? lazy.BrowserUtils.formatURIForDisplay(uri, { - onlyBaseDomain: true, - }) - : ""; - + let [displayHost] = lazy.DownloadUtils.getURIHost(this.download.source.url); let [displayDate] = lazy.DownloadUtils.getReadableDates( new Date(this.download.endTime) ); diff --git a/icecat/browser/components/icecatview/fxview-tab-list.mjs b/icecat/browser/components/icecatview/fxview-tab-list.mjs index 77991f496e..65c5e95160 100644 --- a/icecat/browser/components/icecatview/fxview-tab-list.mjs +++ b/icecat/browser/components/icecatview/fxview-tab-list.mjs @@ -513,9 +513,7 @@ export class FxviewTabRowBase extends MozLitElement { formatURIForDisplay(uriString) { return !window.IS_STORYBOOK - ? lazy.BrowserUtils.formatURIStringForDisplay(uriString, { - showFilenameForLocalURIs: true, - }) + ? lazy.BrowserUtils.formatURIStringForDisplay(uriString) : uriString; } diff --git a/icecat/browser/components/icecatview/helpers.mjs b/icecat/browser/components/icecatview/helpers.mjs index 488164c242..f57e02c941 100644 --- a/icecat/browser/components/icecatview/helpers.mjs +++ b/icecat/browser/components/icecatview/helpers.mjs @@ -24,9 +24,7 @@ export const LOGGING_PREF = "browser.tabs.icecat-view.logLevel"; export const MAX_TABS_FOR_RECENT_BROWSING = 5; export function formatURIForDisplay(uriString) { - return lazy.BrowserUtils.formatURIStringForDisplay(uriString, { - showFilenameForLocalURIs: true, - }); + return lazy.BrowserUtils.formatURIStringForDisplay(uriString); } export function convertTimestamp( diff --git a/icecat/browser/components/icecatview/history.mjs b/icecat/browser/components/icecatview/history.mjs index d5fc796247..73865f46e0 100644 --- a/icecat/browser/components/icecatview/history.mjs +++ b/icecat/browser/components/icecatview/history.mjs @@ -18,7 +18,6 @@ const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { HistoryController: "resource:///modules/HistoryController.sys.mjs", - PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs", ProfileAge: "resource://gre/modules/ProfileAge.sys.mjs", }); @@ -249,7 +248,6 @@ class HistoryInView extends ViewPage { @click=${this.openInNewPrivateWindow} data-l10n-id="fxviewtabrow-open-in-private-window" data-l10n-attrs="accesskey" - ?hidden=${!lazy.PrivateBrowsingUtils.enabled} >
{ }); await setStorage(TEST_ADDRESS_1); - await setStorage(TEST_CREDIT_CARD_1); registerCleanupFunction(async () => { await removeAllRecords(); @@ -102,7 +101,7 @@ add_task( /* eslint-disable mozilla/no-arbitrary-setTimeout */ await new Promise(resolve => { - setTimeout(resolve, FormAutofill.refillOnSiteClearingFieldsTimeout); + setTimeout(resolve, FormAutofill.refillOnSiteClearingFields); }); return await SpecialPowers.spawn( @@ -117,56 +116,3 @@ add_task( Assert.equal(orgaValue, "", "Element was not refilled"); } ); - -add_task(async function address_field_not_refilled_after_reformat_by_site() { - const value = await BrowserTestUtils.withNewTab( - CREDITCARD_FORM_URL, - async browser => { - const selectorToTriggerAutocompletion = "#cc-number"; - const elementValueToVerifyAutofill = TEST_CREDIT_CARD_1["cc-number"]; - - info("Triggering autocompletion."); - await openPopupOn(browser, selectorToTriggerAutocompletion); - await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser); - await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, browser); - await waitForAutofill( - browser, - selectorToTriggerAutocompletion, - elementValueToVerifyAutofill - ); - - const formatValue = TEST_CREDIT_CARD_1["cc-number"] - .replace(/(.{4})/g, "$1 ") - .trim(); - await SpecialPowers.spawn( - browser, - [selectorToTriggerAutocompletion, formatValue], - async (ccNumberSelector, reformatValue) => { - const ccNumberInput = - content.document.querySelector(ccNumberSelector); - - info("Simulating site reformats an input"); - ccNumberInput.value = reformatValue; - } - ); - - /* eslint-disable mozilla/no-arbitrary-setTimeout */ - await new Promise(resolve => { - setTimeout(resolve, FormAutofill.refillOnSiteClearingFieldsTimeout); - }); - - return await SpecialPowers.spawn( - browser, - [selectorToTriggerAutocompletion], - async ccNumberSelector => { - return content.document.querySelector(ccNumberSelector).value; - } - ); - } - ); - - const formatValue = TEST_CREDIT_CARD_1["cc-number"] - .replace(/(.{4})/g, "$1 ") - .trim(); - Assert.equal(value, formatValue, "Element was not refilled"); -}); diff --git a/icecat/browser/extensions/formautofill/test/browser/head.js b/icecat/browser/extensions/formautofill/test/browser/head.js index 8f71e1eac9..8e547ffeba 100644 --- a/icecat/browser/extensions/formautofill/test/browser/head.js +++ b/icecat/browser/extensions/formautofill/test/browser/head.js @@ -1473,9 +1473,6 @@ async function triggerCapture(browser, submitButtonSelector, fillSelectors) { * @param {object} patterns.captureExpectedRecord * The expected saved record after capturing the form. Keyed by field name. This * parameter is only used when `options.testCapture` is set. - * @param {boolean} patterns.useTestYear - * Set to the current year to assign while running the test, useful for credit - * card expiry tests with a manual set of year options in the dropdown. * @param {object} patterns.only * This parameter is used solely for debugging purposes. When set to true, * it restricts the execution to only the specified testcase. @@ -1600,32 +1597,16 @@ async function add_heuristic_tests( const sleepAfterFocus = contexts.length > 1; for (const context of contexts) { - await SpecialPowers.spawn( - context, - [testPattern.useTestYear], - async year => { - let FormAutofillHeuristics; - if (year) { - FormAutofillHeuristics = ChromeUtils.importESModule( - "resource://gre/modules/shared/FormAutofillHeuristics.sys.mjs" - ).FormAutofillHeuristics; - FormAutofillHeuristics.useTestYear = year; - } - - const elements = Array.from( - content.document.querySelectorAll("input, select") - ); - // Focus on each field in the test document to trigger autofill field detection - // on all the fields. - elements.forEach(element => { - element.focus(); - }); - - if (year) { - FormAutofillHeuristics.useTestYear = null; - } - } - ); + await SpecialPowers.spawn(context, [], async () => { + const elements = Array.from( + content.document.querySelectorAll("input, select") + ); + // Focus on each field in the test document to trigger autofill field detection + // on all the fields. + elements.forEach(element => { + element.focus(); + }); + }); try { await BrowserTestUtils.synthesizeKey("VK_ESCAPE", {}, context); diff --git a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser.toml b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser.toml index c3cfd3ab12..86792699b9 100644 --- a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser.toml +++ b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser.toml @@ -8,6 +8,7 @@ support-files = [ ["browser_BestBuy.js"] ["browser_CDW.js"] +skip-if = ["true"] # Bug 1939626 ["browser_CostCo.js"] diff --git a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CDW.js b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CDW.js index 17559eb6b3..020f26ff42 100644 --- a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CDW.js +++ b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CDW.js @@ -30,7 +30,6 @@ add_heuristic_tests( }, { fixturePath: "Checkout_BillingPaymentInfo.html", - useTestYear: 2024, expectedResult: [ { default: { diff --git a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CostCo.js b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CostCo.js index 3acf7c335f..40c083a746 100644 --- a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CostCo.js +++ b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_CostCo.js @@ -74,7 +74,6 @@ add_heuristic_tests( }, { fixturePath: "Payment.html", - useTestYear: 2025, expectedResult: [ { default: { diff --git a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_GlobalDirectAsda.js b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_GlobalDirectAsda.js index 86ff9501f4..d329584ca2 100644 --- a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_GlobalDirectAsda.js +++ b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_GlobalDirectAsda.js @@ -6,7 +6,6 @@ add_heuristic_tests( [ { fixturePath: "Payment.html", - useTestYear: 2024, expectedResult: [ { default: { diff --git a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lufthansa.js b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lufthansa.js index 863e96d54b..4d1fdb3d52 100644 --- a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lufthansa.js +++ b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lufthansa.js @@ -6,7 +6,6 @@ add_heuristic_tests( [ { fixturePath: "Checkout_Payment.html", - useTestYear: 2024, expectedResult: [ { default: { diff --git a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lush.js b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lush.js index cb865883f3..6b8eb7ae95 100644 --- a/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lush.js +++ b/icecat/browser/extensions/formautofill/test/browser/heuristics/third_party/browser_Lush.js @@ -6,7 +6,6 @@ add_heuristic_tests( [ { fixturePath: "index.html", - useTestYear: 2024, expectedResult: [ { default: { diff --git a/icecat/browser/extensions/webcompat/injections/js/bug1950282-f1tv.formula1.com-unblock-icecat.js b/icecat/browser/extensions/webcompat/injections/js/bug1950282-f1tv.formula1.com-unblock-icecat.js index 8e8ee2de99..716d512a71 100644 --- a/icecat/browser/extensions/webcompat/injections/js/bug1950282-f1tv.formula1.com-unblock-icecat.js +++ b/icecat/browser/extensions/webcompat/injections/js/bug1950282-f1tv.formula1.com-unblock-icecat.js @@ -120,65 +120,3 @@ window.wrappedJSObject.chrome = cloneInto( window, { cloneFunctions: true } ); - -const ua = navigator.userAgent; -const mobile = ua.includes("Mobile") || ua.includes("Tablet"); - -// Very roughly matches Chromium's GetPlatformForUAMetadata() -let platform = "Linux"; -if (mobile) { - platform = "Android"; -} else if (navigator.platform.startsWith("Win")) { - platform = "Windows"; -} else if (navigator.platform.startsWith("Mac")) { - platform = "macOS"; -} - -const version = (ua.match(/IceCat\/([0-9]+)/) || ["", "58.0"])[1]; - -// These match Chrome's output as of version 126. -const brands = [ - { - brand: "Not/A)Brand", - version: "8", - }, - { - brand: "Chromium", - version, - }, - { - brand: "Google Chrome", - version, - }, -]; - -const userAgentData = cloneInto( - { - brands, - mobile, - platform, - getHighEntropyValues() { - return window.wrappedJSObject.Promise.resolve( - cloneInto( - { - brands, - mobile, - platform, - platformVersion: "19.0.0", - }, - window - ) - ); - }, - }, - window, - { cloneFunctions: true } -); - -Object.defineProperty(window.navigator.wrappedJSObject, "userAgentData", { - get: exportFunction(function () { - return userAgentData; - }, window), - - set: exportFunction(function () {}, window), -}); diff --git a/icecat/browser/extensions/webcompat/manifest.json b/icecat/browser/extensions/webcompat/manifest.json index 823d5fac41..7e3507265b 100644 --- a/icecat/browser/extensions/webcompat/manifest.json +++ b/icecat/browser/extensions/webcompat/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Web Compatibility Interventions", "description": "Urgent post-release fixes for web compatibility.", - "version": "140.12.0", + "version": "140.11.0", "browser_specific_settings": { "gecko": { "id": "webcompat@mozilla.org", diff --git a/icecat/build/pgo/certs/cert9.db b/icecat/build/pgo/certs/cert9.db index 030153bea3..747ba383b6 100644 Binary files a/icecat/build/pgo/certs/cert9.db and b/icecat/build/pgo/certs/cert9.db differ diff --git a/icecat/build/pgo/certs/key4.db b/icecat/build/pgo/certs/key4.db index 0ba980afca..49652af0f4 100644 Binary files a/icecat/build/pgo/certs/key4.db and b/icecat/build/pgo/certs/key4.db differ diff --git a/icecat/build/pgo/certs/mochitest.client b/icecat/build/pgo/certs/mochitest.client index 91c7c9a4d8..f2efad0a6c 100644 Binary files a/icecat/build/pgo/certs/mochitest.client and b/icecat/build/pgo/certs/mochitest.client differ diff --git a/icecat/config/milestone.txt b/icecat/config/milestone.txt index 9b54709fd8..e5b5df6ba3 100644 --- a/icecat/config/milestone.txt +++ b/icecat/config/milestone.txt @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -140.10.1 +140.6.0 diff --git a/icecat/debian/build/rules.mk b/icecat/debian/build/rules.mk index 7a2d960920..c5f929c3a2 100644 --- a/icecat/debian/build/rules.mk +++ b/icecat/debian/build/rules.mk @@ -157,12 +157,8 @@ ifeq (official, $(MOZ_BRANDING)) MOZ_DEFINES += -DMOZ_OFFICIAL_BRANDING endif ifneq (,$(DEB_PARALLEL_JOBS)) -ifneq (,$(filter armhf, $(DEB_HOST_ARCH))) -MOZ_DEFINES += -DDEB_PARALLEL_JOBS=1 -else MOZ_DEFINES += -DDEB_PARALLEL_JOBS=$(DEB_PARALLEL_JOBS) endif -endif MOZ_EXECUTABLES_$(MOZ_PKG_NAME) += $(MOZ_LIBDIR)/$(MOZ_PKG_BASENAME).sh \ $(NULL) diff --git a/icecat/debian/changelog b/icecat/debian/changelog index 9c89ae4fce..40040552f5 100644 --- a/icecat/debian/changelog +++ b/icecat/debian/changelog @@ -1,39 +1,3 @@ -icecat (140.10.1-1gnu1+build1-0.12.0) ecne; urgency=medium - - * New upstream stable release (icecat-140.10.1-1gnu1) - - -- Capitulo Mexicano de Software Libre Mon, 04 May 2026 16:44:54 -0600 - -icecat (140.10.0-1gnu1+build1-0.12.0) ecne; urgency=medium - - * New upstream stable release (icecat-140.10.0-1gnu1) - - -- Capitulo Mexicano de Software Libre Tue, 28 Apr 2026 03:08:30 -0600 - -icecat (140.9.0-1gnu1+build1-0.12.0) ecne; urgency=medium - - * New upstream stable release (icecat-140.9.0-1gnu1) - - -- Capitulo Mexicano de Software Libre Sat, 28 Mar 2026 01:16:35 -0600 - -icecat (140.8.0-2gnu1+build1-0.12.0) ecne; urgency=medium - - * New upstream stable release (icecat-140.8.0-2gnu1) - - -- Capitulo Mexicano de Software Libre Tue, 10 Mar 2026 23:20:02 -0600 - -icecat (140.7.1-1gnu1+build1-0.12.0) ecne; urgency=medium - - * New upstream stable release (icecat-140.7.1-1gnu1) - - -- Capitulo Mexicano de Software Libre Mon, 16 Feb 2026 22:12:00 -0600 - -icecat (140.7.0-1gnu1+build1-0.12.0) ecne; urgency=medium - - * New upstream stable release (icecat-140.7.0-1gnu1) - - -- Capitulo Mexicano de Software Libre Sat, 17 Jan 2026 21:13:41 -0600 - icecat (140.6.0-1gnu1+build1-0.12.0) ecne; urgency=medium * New upstream stable release (icecat-140.6.0-1gnu1) diff --git a/icecat/debian/config/mozconfig.in b/icecat/debian/config/mozconfig.in index 8455b9e7bc..19bcfa9be1 100644 --- a/icecat/debian/config/mozconfig.in +++ b/icecat/debian/config/mozconfig.in @@ -11,11 +11,7 @@ ac_add_options --disable-updater ac_add_options --enable-application=browser ac_add_options --with-distribution-id=org.trisquel %%if DEB_BUILD_ARCH_BITS == 32 -%%if DEB_HOST_ARCH == armhf -ac_add_options --disable-debug-symbols -%%else ac_add_options --enable-debug-symbols=-g1 -%%endif %%else ac_add_options --enable-debug-symbols %%endif diff --git a/icecat/debian/patches/armhf-rustc-lto-off.patch b/icecat/debian/patches/armhf-rustc-thin-lto.patch similarity index 70% rename from icecat/debian/patches/armhf-rustc-lto-off.patch rename to icecat/debian/patches/armhf-rustc-thin-lto.patch index 67f08bf28e..4c5b20f2b1 100644 --- a/icecat/debian/patches/armhf-rustc-lto-off.patch +++ b/icecat/debian/patches/armhf-rustc-thin-lto.patch @@ -1,30 +1,22 @@ -Description: Do not enable LTO for rustc when building on armhf, +Description: Do not enable LTO for rustc when building on arm64 and armhf, to work around OOM failures on Launchpad builders. Note that this alone is not sufficient, because by default cargo will also enable full LTO when building with a release profile, so the top-level Cargo.toml file needs to be conditionally patched (this is done in debian/build/rules.mk). Author: Olivier Tilloy -Author: Nathan Pratte Teodosio Forwarded: not-needed --- a/config/makefiles/rust.mk +++ b/config/makefiles/rust.mk -@@ -70,10 +70,18 @@ ifndef MOZ_DEBUG_RUST +@@ -70,8 +70,10 @@ ifndef MOZ_DEBUG_RUST # Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045. ifndef MOZ_CODE_COVERAGE ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE))) -+ifneq (,$(filter arm,$(TARGET_CPU))) -+cargo_rustc_flags += -Clto=off -+else ++ifeq (,$(filter aarch64 arm,$(TARGET_CPU))) cargo_rustc_flags += -Clto$(if $(filter full,$(MOZ_LTO_RUST_CROSS)),=fat) -+endif endif ++endif # We need -Cembed-bitcode=yes for all crates when using -Clto. -+ifneq (,$(filter arm,$(TARGET_CPU))) -+RUSTFLAGS += -Cembed-bitcode=no -+else RUSTFLAGS += -Cembed-bitcode=yes -+endif - endif - endif endif + diff --git a/icecat/debian/patches/series b/icecat/debian/patches/series index c33408c116..d0b8fcc329 100644 --- a/icecat/debian/patches/series +++ b/icecat/debian/patches/series @@ -7,7 +7,7 @@ webrtc-fix-compiler-flags-for-armhf.patch s390x-ycbcr.patch reduce-rust-debuginfo.patch armhf-reduce-linker-memory-use.patch -armhf-rustc-lto-off.patch +armhf-rustc-thin-lto.patch ppc64el-workaround-bug-1555531.patch ppc64el-workaround-gcc-ice.patch armhf-clang-no-integrated-as-for-neon.patch diff --git a/icecat/devtools/client/aboutdebugging/test/browser/browser.toml b/icecat/devtools/client/aboutdebugging/test/browser/browser.toml index f3b2164e6f..e981075374 100644 --- a/icecat/devtools/client/aboutdebugging/test/browser/browser.toml +++ b/icecat/devtools/client/aboutdebugging/test/browser/browser.toml @@ -190,7 +190,6 @@ fail-if = ["a11y_checks"] # Bug 1849028 clicked element may not be focusable and ["browser_aboutdebugging_serviceworker_start.js"] skip-if = [ - "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && tsan", # Bug 1947358, Bug 2030884 "os == 'linux' && os_version == '24.04' && processor == 'x86_64' && display == 'x11' && tsan", # Bug 1947358 ] diff --git a/icecat/devtools/client/application/test/browser/browser.toml b/icecat/devtools/client/application/test/browser/browser.toml index f5792d92a7..01bdbcba5b 100644 --- a/icecat/devtools/client/application/test/browser/browser.toml +++ b/icecat/devtools/client/application/test/browser/browser.toml @@ -96,11 +96,8 @@ fail-if = ["a11y_checks"] # Bug 1849028 clicked element may not be focusable and ["browser_application_panel_start-service-worker.js"] fail-if = ["a11y_checks"] # Bug 1849028 clicked element may not be focusable and/or labeled skip-if = [ - "os == 'linux' && processor == 'x86_64' && tsan", # Bug 1608640, Bug 2030884 - "os == 'linux' && processor == 'x86_64' && asan", # Bug 1781479, Bug 2030884 - "os == 'mac' && os_version == '14.70' && processor == 'x86_64'", # Bug 1980084, Bug 2030884 - "os == 'win' && os_version == '11.26100' && processor == 'x86_64' && asan", # Bug 1781479, Bug 2030884 - "os == 'win' && os_version == '11.26200' && processor == 'x86_64' && asan", # Bug 1781479, Bug 2030884 + "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && tsan", # Bug 1608640 + "os == 'linux' && os_version == '24.04' && processor == 'x86_64' && display == 'x11' && tsan", # Bug 1608640 ] ["browser_application_panel_target-switching.js"] diff --git a/icecat/devtools/client/debugger/src/.eslintrc.mjs b/icecat/devtools/client/debugger/src/.eslintrc.mjs index 6a4ea02acf..1cdf483aaf 100644 --- a/icecat/devtools/client/debugger/src/.eslintrc.mjs +++ b/icecat/devtools/client/debugger/src/.eslintrc.mjs @@ -47,8 +47,6 @@ export default [ process: true, global: true, L10N: true, - // TODO: Add this to the main ESlint globals Bug 2025542 - Sanitizer: true, }, }, rules: { diff --git a/icecat/devtools/client/debugger/src/components/QuickOpenModal.js b/icecat/devtools/client/debugger/src/components/QuickOpenModal.js index b88303e6ce..fb9a5a3632 100644 --- a/icecat/devtools/client/debugger/src/components/QuickOpenModal.js +++ b/icecat/devtools/client/debugger/src/components/QuickOpenModal.js @@ -2,12 +2,11 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at . */ -import React, { - Component, - createRef, -} from "devtools/client/shared/vendor/react"; +import React, { Component } from "devtools/client/shared/vendor/react"; +import { div } from "devtools/client/shared/vendor/react-dom-factories"; import PropTypes from "devtools/client/shared/vendor/react-prop-types"; import { connect } from "devtools/client/shared/vendor/react-redux"; +import { basename } from "../utils/path"; import { createLocation } from "../utils/location"; const fuzzyAldrin = require("resource://devtools/client/shared/vendor/fuzzaldrin-plus.js"); @@ -60,7 +59,6 @@ export class QuickOpenModal extends Component { constructor(props) { super(props); this.state = { results: null, selectedIndex: 0 }; - this.resultListRef = createRef(); } static get propTypes() { @@ -225,14 +223,20 @@ export class QuickOpenModal extends Component { if (query == "" && !this.isShortcutQuery()) { this.showTopSources(); - } else if (this.isSymbolSearch()) { - await this.searchSymbols(query); - } else if (this.isShortcutQuery()) { - this.searchShortcuts(query); - } else { - this.searchSources(query); + return; } - this.highlightQueryMatches(this.props.query); + + if (this.isSymbolSearch()) { + await this.searchSymbols(query); + return; + } + + if (this.isShortcutQuery()) { + this.searchShortcuts(query); + return; + } + + this.searchSources(query); } catch (e) { // Due to throttling this might get scheduled after the component and the // toolbox are destroyed. @@ -390,35 +394,23 @@ export class QuickOpenModal extends Component { isSourcesQuery = () => this.props.searchType === "sources"; isSourceSearch = () => this.isSourcesQuery() || this.isGotoSourceQuery(); - highlightQueryMatches(query) { + /* eslint-disable react/no-danger */ + renderHighlight(candidateString, query) { const options = { wrap: { tagOpen: '', tagClose: "", }, }; - if (this.resultListRef.current) { - const domEl = this.resultListRef.current.ref.current; - for (const titleNode of domEl.querySelectorAll(".title")) { - const htmlString = fuzzyAldrin.wrap( - titleNode.innerText, - query, - options - ); - // Sanitizer API not supported in ESR 140 - // Should remove at ESR 153 - if ("Sanitizer" in window) { - const sanitizer = new Sanitizer({ - elements: ["mark"], - attributes: ["class"], - }); - titleNode.setHTML(htmlString, { sanitizer }); - } - } - } + const html = fuzzyAldrin.wrap(candidateString, query, options); + return div({ + dangerouslySetInnerHTML: { + __html: html, + }, + }); } - renderResults = (query, results) => { + highlightMatching = (query, results) => { let newQuery = query; if (newQuery === "") { return results; @@ -429,7 +421,11 @@ export class QuickOpenModal extends Component { if (typeof result.title == "string") { return { ...result, - title: result.title, + title: this.renderHighlight( + result.title, + basename(newQuery), + "title" + ), }; } return result; @@ -458,7 +454,7 @@ export class QuickOpenModal extends Component { const { query } = this.props; const { selectedIndex, results } = this.state; - const items = this.renderResults(query, results || []); + const items = this.highlightMatching(query, results || []); const expanded = !!items && !!items.length; return React.createElement( Modal, @@ -491,7 +487,7 @@ export class QuickOpenModal extends Component { items, selected: selectedIndex, selectItem: this.selectResultItem, - ref: this.resultListRef, + ref: "resultList", expanded, ...(this.isSourceSearch() ? SIZE_BIG : SIZE_DEFAULT), }) diff --git a/icecat/devtools/client/debugger/test/mochitest/browser_aj.toml b/icecat/devtools/client/debugger/test/mochitest/browser_aj.toml index 8051ed89af..4106a27111 100644 --- a/icecat/devtools/client/debugger/test/mochitest/browser_aj.toml +++ b/icecat/devtools/client/debugger/test/mochitest/browser_aj.toml @@ -115,9 +115,6 @@ skip-if = [ ["browser_dbg-call-stack.js"] ["browser_dbg-chrome-create.js"] -skip-if = [ - "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && asan", # Bug 2030884 -] ["browser_dbg-console-async.js"] @@ -289,7 +286,6 @@ skip-if = [ ["browser_dbg-javascript-tracer-values-preview.js"] skip-if = [ "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && opt && a11y_checks", # Bug The tracer tree isn't yet accessible - "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && tsan", # Bug 1959018, Bug 2030884 "os == 'linux' && os_version == '24.04' && processor == 'x86_64' && display == 'x11' && opt && a11y_checks", # Bug The tracer tree isn't yet accessible ] diff --git a/icecat/devtools/client/debugger/test/mochitest/browser_dbg-quick-open.js b/icecat/devtools/client/debugger/test/mochitest/browser_dbg-quick-open.js index 3761c4cc8b..c73d52fde9 100644 --- a/icecat/devtools/client/debugger/test/mochitest/browser_dbg-quick-open.js +++ b/icecat/devtools/client/debugger/test/mochitest/browser_dbg-quick-open.js @@ -94,18 +94,6 @@ add_task(async function () { pressKey(dbg, "Escape"); assertQuickOpenDisabled(dbg); - info("Test that the highlighted result matches match the query"); - await quickOpen(dbg, "sw"); - await waitForResults(dbg, [ - "script-switching-01.js", - "script-switching-02.js", - ]); - await assertHighlightMatches(dbg, 1, "sw"); - await assertHighlightMatches(dbg, 2, "sw"); - EventUtils.sendString("i"); - await assertHighlightMatches(dbg, 1, "swi"); - pressKey(dbg, "Escape"); - info("Testing goto line:column"); assertLine(dbg, 0); assertColumn(dbg, 1); @@ -182,19 +170,3 @@ async function assertResultIsTab(dbg, index) { "Result should be a tab" ); } - -async function assertHighlightMatches(dbg, resultIndex, expectedMatchText) { - // Sanitizer API not supported in ESR 140 - // Should remove at ESR 153 - if ("Sanitizer" in dbg.win) { - const el = await findResultEl(dbg, resultIndex); - const highlight = await waitForElementWithSelector(dbg, "mark.highlight"); - ok(el && !!highlight, "The query match is highlighted"); - await waitUntil( - () => el.querySelector("mark.highlight").innerText == expectedMatchText - ); - ok(true, "The highlighted text matches the query text"); - } else { - ok(true, "The text is not highlighted"); - } -} diff --git a/icecat/devtools/client/framework/test/browser.toml b/icecat/devtools/client/framework/test/browser.toml index 7533b0c534..87225f094c 100644 --- a/icecat/devtools/client/framework/test/browser.toml +++ b/icecat/devtools/client/framework/test/browser.toml @@ -112,12 +112,6 @@ skip-if = [ ["browser_tab_commands_factory.js"] ["browser_tab_descriptor_fission.js"] -skip-if = [ - "os == 'linux' && processor == 'x86_64' && asan", # Bug 1966872, Bug 2030884 - "os == 'linux' && processor == 'x86_64' && tsan", # Bug 1966872, Bug 2030884 - "os == 'win' && os_version == '11.26100' && processor == 'x86_64' && asan", # Bug 1966872, Bug 2030884 - "os == 'win' && os_version == '11.26200' && processor == 'x86_64' && asan", # Bug 1966872, Bug 2030884 -] ["browser_target_cached-front.js"] @@ -297,9 +291,6 @@ fail-if = ["a11y_checks"] # Bug 1849028 clicked element may not be focusable and ["browser_toolbox_watchedByDevTools.js"] ["browser_toolbox_window_global_debugging.js"] -skip-if = [ - "os == 'linux' && processor == 'x86_64' && tsan", # Bug 1950845, Bug 2030884 -] ["browser_toolbox_window_reload_target.js"] diff --git a/icecat/devtools/client/inspector/animation/test/browser.toml b/icecat/devtools/client/inspector/animation/test/browser.toml index c989156fff..4563a3793a 100644 --- a/icecat/devtools/client/inspector/animation/test/browser.toml +++ b/icecat/devtools/client/inspector/animation/test/browser.toml @@ -150,11 +150,8 @@ fail-if = ["a11y_checks"] # Bug 1849028 clicked element may not be focusable and ["browser_animation_logic_mutations_fast.js"] skip-if = [ - "os == 'linux' && processor == 'x86_64' && asan", # Bug 1980142, Bug 2030884 - "os == 'linux' && processor == 'x86_64' && debug", # Bug 1567800, Bug 2030884 - "os == 'linux' && processor == 'x86_64' && tsan", # Bug 1980142, Bug 2030884 - "os == 'win' && os_version == '11.26100' && processor == 'x86_64' && debug", # Bug 1980142, Bug 2030884 - "os == 'win' && os_version == '11.26200' && processor == 'x86_64' && debug", # Bug 1980142, Bug 2030884 + "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && debug", # Bug 1567800 + "os == 'linux' && os_version == '24.04' && processor == 'x86_64' && display == 'x11' && debug", # Bug 1567800 ] ["browser_animation_logic_mutations_properties.js"] diff --git a/icecat/devtools/client/netmonitor/src/components/request-details/RequestPanel.js b/icecat/devtools/client/netmonitor/src/components/request-details/RequestPanel.js index b87999999d..b81d3a1bb9 100644 --- a/icecat/devtools/client/netmonitor/src/components/request-details/RequestPanel.js +++ b/icecat/devtools/client/netmonitor/src/components/request-details/RequestPanel.js @@ -124,34 +124,30 @@ class RequestPanel extends Component { } /** - * This maps an array to a dictionary for TreeView usage, - * sincs the treeView only supports the Object(dict) format. + * Mapping array to dict for TreeView usage. + * Since TreeView only support Object(dict) format. + * This function also deal with duplicate key case + * (for multiple selection and query params with same keys) * - * This function also deals with the duplicate key scenario - * (i.e multiple selections and query params with same keys) + * This function is not sorting result properties since it can + * results in unexpected order of params. See bug 1469533 * - * Note: This is not sorting the result properties since it can - * result in an unexpected order of parameters. See bug 1469533 - * - * @param {object[]} arrOfKeyValuePairs - An array of key-value pairs or form params. - * @param {string} arrOfKeyValuePairs[].name - * @param {string|Array} arrOfKeyValuePairs[].value - * - * @returns {object} Rep compatible object + * @param {Object[]} arr - key-value pair array or form params + * @returns {Object} Rep compatible object */ - getProperties(arrOfKeyValuePairs) { - return arrOfKeyValuePairs.reduce((dict, { name, value }) => { - if (name in dict) { - const dictValue = dict[name]; - if (!Array.isArray(dictValue)) { - dict[name] = [dictValue]; + getProperties(arr) { + return arr.reduce((map, obj) => { + const value = map[obj.name]; + if (value || value === "") { + if (typeof value !== "object") { + map[obj.name] = [value]; } - dict[name].push(value); + map[obj.name].push(obj.value); } else { - dict[name] = value; + map[obj.name] = obj.value; } - return dict; - }, Object.create(null)); + return map; + }, {}); } toggleRawRequestPayload() { @@ -209,9 +205,10 @@ class RequestPanel extends Component { // Form Data section if (formDataSections && formDataSections.length) { + const sections = formDataSections.filter(str => /\S/.test(str)).join("&"); component = PropertiesView; componentProps = { - object: this.getProperties(parseFormData(formDataSections)), + object: this.getProperties(parseFormData(sections)), filterText, targetSearchResult, defaultSelectFirstNode: false, diff --git a/icecat/devtools/client/netmonitor/src/utils/request-utils.js b/icecat/devtools/client/netmonitor/src/utils/request-utils.js index 95eb985522..e54c4f404e 100644 --- a/icecat/devtools/client/netmonitor/src/utils/request-utils.js +++ b/icecat/devtools/client/netmonitor/src/utils/request-utils.js @@ -83,6 +83,7 @@ async function getFormDataSections( } } } + return formDataSections; } @@ -417,29 +418,28 @@ function parseQueryString(query) { /** * Parse a string of formdata sections into its components * - * @param {Array} sections Array of sections of formdata - * e.g ["", "a=x&b=y", "c=z"] - * @return {Array} Array of formdata params - * e.g [{ name: 'a', value: 'x' }, { name: 'b', value: 'y'}, { name: 'c', value: 'z'}] + * @param {string} sections - sections of formdata joined by & + * @return {array} array of formdata params { name, value } */ function parseFormData(sections) { - if (!sections || !sections.length) { + if (!sections) { return []; } - const formDataParams = []; - const searchStr = sections - // Filter out empty sections - .filter(str => /\S/.test(str)) - .join("&"); - const params = new URLSearchParams(searchStr); - for (const [key, value] of params) { - formDataParams.push({ - name: getUnicodeUrlPath(key), - value: getUnicodeUrlPath(value), + return sections + .replace(/^&/, "") + .split("&") + .map(e => { + const firstEqualSignIndex = e.indexOf("="); + const paramName = + firstEqualSignIndex !== -1 ? e.slice(0, firstEqualSignIndex) : e; + const paramValue = + firstEqualSignIndex !== -1 ? e.slice(firstEqualSignIndex + 1) : ""; + return { + name: paramName ? getUnicodeUrlPath(paramName) : "", + value: paramValue ? getUnicodeUrlPath(paramValue) : "", + }; }); - } - return formDataParams; } /** diff --git a/icecat/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js b/icecat/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js index de4180e955..248b5ff665 100644 --- a/icecat/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js +++ b/icecat/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js @@ -746,7 +746,7 @@ class RequestListContextMenu { }; const options = JSON.stringify(fetchOptions, null, 4); - const fetchString = `await fetch(${JSON.stringify(url)}, ${options});`; + const fetchString = `await fetch("${url}", ${options});`; return fetchString; } diff --git a/icecat/devtools/client/netmonitor/test/browser_net_columns_time.js b/icecat/devtools/client/netmonitor/test/browser_net_columns_time.js index 0d490b585a..c2e9a9b858 100644 --- a/icecat/devtools/client/netmonitor/test/browser_net_columns_time.js +++ b/icecat/devtools/client/netmonitor/test/browser_net_columns_time.js @@ -50,11 +50,10 @@ add_task(async function () { const types = ["end", "response", "duration", "latency"]; for (const t of types) { - info("Check the timing column for type: " + t); await waitUntil(() => { const node = item.querySelector(".requests-list-" + t + "-time"); const value = parseInt(node.textContent, 10); - return value >= 0; + return value > 0; }); } diff --git a/icecat/devtools/client/netmonitor/test/browser_net_complex-params.js b/icecat/devtools/client/netmonitor/test/browser_net_complex-params.js index b973608677..53d13372f5 100644 --- a/icecat/devtools/client/netmonitor/test/browser_net_complex-params.js +++ b/icecat/devtools/client/netmonitor/test/browser_net_complex-params.js @@ -20,7 +20,7 @@ add_task(async function () { store.dispatch(Actions.batchEnable(false)); // Execute requests. - await performRequests(monitor, tab, 13); + await performRequests(monitor, tab, 12); const requestListItems = document.querySelectorAll( ".network-monitor .request-list-item" @@ -49,7 +49,7 @@ add_task(async function () { await testRequestWithFormattedView( monitor, requestListItems[2], - "foo", + "?foo", "bar=123=xyz", "?foo=bar=123=xyz", 1 @@ -92,14 +92,6 @@ add_task(async function () { '{ "foo": "bar" }', 1 ); - await testRequestWithFormattedView( - monitor, - requestListItems[12], - "__proto__", - "evil_value", - "__proto__=evil_value", - 1 - ); await teardown(monitor); }); diff --git a/icecat/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js b/icecat/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js index e8589e097d..517e9e54f8 100644 --- a/icecat/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js +++ b/icecat/devtools/client/netmonitor/test/browser_net_copy_as_fetch.js @@ -7,7 +7,7 @@ * Tests if Copy as Fetch works. */ -add_task(async function testBasicCopyAsFetch() { +add_task(async function () { const { tab, monitor } = await initNetMonitor(HTTPS_CURL_URL, { requestCount: 1, }); @@ -15,9 +15,7 @@ add_task(async function testBasicCopyAsFetch() { // GET request, no cookies (first request) await performRequest("GET"); - await testClipboardContent( - monitor, - `await fetch("https://example.com/browser/devtools/client/netmonitor/test/sjs_simple-test-server.sjs", { + await testClipboardContent(`await fetch("https://example.com/browser/devtools/client/netmonitor/test/sjs_simple-test-server.sjs", { "credentials": "omit", "headers": { "User-Agent": "${navigator.userAgent}", @@ -35,8 +33,7 @@ add_task(async function testBasicCopyAsFetch() { "referrer": "https://example.com/browser/devtools/client/netmonitor/test/html_copy-as-curl.html", "method": "GET", "mode": "cors" -});` - ); +});`); await teardown(monitor); @@ -57,71 +54,39 @@ add_task(async function testBasicCopyAsFetch() { ); await waitRequest; } -}); -/** - * Tests for Url escaping of copy as Fetch - */ -add_task(async function testUrlEscapeOfCopyAsFetch() { - const { monitor } = await initNetMonitor(HTTPS_CURL_URL, { - requestCount: 1, - }); - info("Starting test... "); + async function testClipboardContent(expectedResult) { + const { document } = monitor.panelWin; - const waitRequest = waitForNetworkEvents(monitor, 1); - await SpecialPowers.spawn( - gBrowser.selectedBrowser, - ['data:text/html,"+alert(document.domain)+"'], - url => { - content.fetch(url); - } - ); - await waitRequest; + const items = document.querySelectorAll(".request-list-item"); + EventUtils.sendMouseEvent({ type: "mousedown" }, items[items.length - 1]); + EventUtils.sendMouseEvent( + { type: "contextmenu" }, + document.querySelectorAll(".request-list-item")[0] + ); - await testClipboardContent( - monitor, - `await fetch("data:text/html,\\"+alert(document.domain)+\\"", { - "credentials": "omit", - "headers": {}, - "method": "GET", - "mode": "cors" -});` - ); + /* Ensure that the copy as fetch option is always visible */ + is( + !!getContextMenuItem(monitor, "request-list-context-copy-as-fetch"), + true, + 'The "Copy as Fetch" context menu item should not be hidden.' + ); - await teardown(monitor); -}); - -async function testClipboardContent(monitor, expectedResult) { - const { document } = monitor.panelWin; - - const items = document.querySelectorAll(".request-list-item"); - EventUtils.sendMouseEvent({ type: "mousedown" }, items[items.length - 1]); - EventUtils.sendMouseEvent( - { type: "contextmenu" }, - document.querySelectorAll(".request-list-item")[0] - ); - - /* Ensure that the copy as fetch option is always visible */ - is( - !!getContextMenuItem(monitor, "request-list-context-copy-as-fetch"), - true, - 'The "Copy as Fetch" context menu item should not be hidden.' - ); - - await waitForClipboardPromise( - async function setup() { - await selectContextMenuItem( - monitor, - "request-list-context-copy-as-fetch" - ); - }, - function validate(result) { - if (typeof result !== "string") { - return false; + await waitForClipboardPromise( + async function setup() { + await selectContextMenuItem( + monitor, + "request-list-context-copy-as-fetch" + ); + }, + function validate(result) { + if (typeof result !== "string") { + return false; + } + return expectedResult === result; } - return expectedResult === result; - } - ); + ); - info("Clipboard contains a fetch command for item " + (items.length - 1)); -} + info("Clipboard contains a fetch command for item " + (items.length - 1)); + } +}); diff --git a/icecat/devtools/client/netmonitor/test/browser_net_curl-utils.js b/icecat/devtools/client/netmonitor/test/browser_net_curl-utils.js index a1273afb7d..b4b2c175ee 100644 --- a/icecat/devtools/client/netmonitor/test/browser_net_curl-utils.js +++ b/icecat/devtools/client/netmonitor/test/browser_net_curl-utils.js @@ -326,10 +326,10 @@ function testEscapeStringWin() { "Percent signs should be escaped." ); - const backslashes = " - \\A simple string\\ - "; + const backslashes = "\\A simple string\\"; is( CurlUtils.escapeStringWin(backslashes), - '^\" - ^\\^\\A simple string^\\^\\ - ^\"', + '^\"^\\A simple string^\\^\"', "Backslashes should be escaped." ); diff --git a/icecat/devtools/client/netmonitor/test/html_params-test-page.html b/icecat/devtools/client/netmonitor/test/html_params-test-page.html index a3a799b76a..3d657a5e87 100644 --- a/icecat/devtools/client/netmonitor/test/html_params-test-page.html +++ b/icecat/devtools/client/netmonitor/test/html_params-test-page.html @@ -71,7 +71,6 @@ await get("baz", "?species=in=(52,60)"); await get("baz", "?a=&a=b"); await get("baz", "?a=b&a=c&d=1"); - await post("baz", "", urlencoded, "__proto__=evil_value"); } diff --git a/icecat/devtools/client/responsive/test/browser/browser_device_state_restore.js b/icecat/devtools/client/responsive/test/browser/browser_device_state_restore.js index aa913caefe..6a40e3b621 100644 --- a/icecat/devtools/client/responsive/test/browser/browser_device_state_restore.js +++ b/icecat/devtools/client/responsive/test/browser/browser_device_state_restore.js @@ -10,13 +10,15 @@ const DEFAULT_DPPX = window.devicePixelRatio; /* eslint-disable max-len */ const TEST_DEVICE = { - name: "iPhone 17 / 17 Pro", - width: 402, - height: 874, - pixelRatio: 3, + name: "iPhone 6/7/8", + width: 375, + height: 667, + pixelRatio: 2, userAgent: - "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", + "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1", touch: true, + icecatOS: false, + os: "iOS", featured: true, }; /* eslint-enable max-len */ diff --git a/icecat/devtools/client/shared/curl.js b/icecat/devtools/client/shared/curl.js index fb4f77dfe8..90d8d5f6f6 100644 --- a/icecat/devtools/client/shared/curl.js +++ b/icecat/devtools/client/shared/curl.js @@ -458,9 +458,6 @@ const CurlUtils = { return ( encapsChars + str - // Replace all the \ (used as the escape character in the next replace) with \\ - .replace(/\\/g, "\\\\") - // Replace all " with \" to ensure the first parser does not remove it. .replace(/"/g, '\\"') diff --git a/icecat/devtools/client/webconsole/test/browser/_webconsole.toml b/icecat/devtools/client/webconsole/test/browser/_webconsole.toml index 3d91d7c2af..0840895a6d 100644 --- a/icecat/devtools/client/webconsole/test/browser/_webconsole.toml +++ b/icecat/devtools/client/webconsole/test/browser/_webconsole.toml @@ -587,9 +587,7 @@ support-files = ["browser_webconsole_object_inspector_entries.snapshot.mjs"] https_first_disabled = true # JS HttpServer doesn't support https skip-if = [ "http3", # JS HttpServer doesn't support http3 - "os == 'linux' && os_version == '18.04' && processor == 'x86_64' && opt", # Bug 1965340, Bug 2030884 "os == 'linux' && os_version == '24.04' && processor == 'x86_64' && display == 'x11' && opt", # Bug 1965340 - "os == 'mac' && os_version == '14.70' && processor == 'x86_64'", # Bug 1965340, Bug 2030884 ] ["browser_webconsole_object_inspector_getters.js"] diff --git a/icecat/devtools/client/webconsole/test/browser/stub-generator-helpers.js b/icecat/devtools/client/webconsole/test/browser/stub-generator-helpers.js index 47b91e5aab..a8030532de 100644 --- a/icecat/devtools/client/webconsole/test/browser/stub-generator-helpers.js +++ b/icecat/devtools/client/webconsole/test/browser/stub-generator-helpers.js @@ -179,17 +179,17 @@ function getCleanedPacket(key, packet) { res.startedDateTime = existingPacket.startedDateTime; } + if (res.totalTime && existingPacket.totalTime) { + res.totalTime = existingPacket.totalTime; + } + if (res.securityState && existingPacket.securityState) { res.securityState = existingPacket.securityState; } - // totalTime and waitingTime can be very small and rounded to 0. However this - // is still a valid time value, so check isNaN instead of a simple truthy check. - if (!isNaN(res.totalTime) && !isNaN(existingPacket.totalTime)) { - res.totalTime = existingPacket.totalTime; - } - - if (!isNaN(res.waitingTime) && !isNaN(existingPacket.waitingTime)) { + // waitingTime can be very small and rounded to 0. However this is still a + // valid waiting time, so check isNaN instead of a simple truthy check. + if (!isNaN(res.waitingTime) && existingPacket.waitingTime) { res.waitingTime = existingPacket.waitingTime; } diff --git a/icecat/docshell/base/BrowsingContext.cpp b/icecat/docshell/base/BrowsingContext.cpp index 0f2aed7525..2b862d5c4e 100644 --- a/icecat/docshell/base/BrowsingContext.cpp +++ b/icecat/docshell/base/BrowsingContext.cpp @@ -1937,19 +1937,6 @@ NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_BEGIN(BrowsingContext) return IsCertainlyAliveForCC(tmp); NS_IMPL_CYCLE_COLLECTION_CAN_SKIP_THIS_END -/* static */ -void BrowsingContext::SweepWindowProxies(JSTracer* aTrc) { - if (!sBrowsingContexts) { - return; - } - - for (BrowsingContext* bc : sBrowsingContexts->Values()) { - if (bc->mWindowProxy) { - JS_UpdateWeakPointerAfterGC(aTrc, &bc->mWindowProxy); - } - } -} - class RemoteLocationProxy : public RemoteObjectProxy { @@ -2799,11 +2786,6 @@ void BrowsingContext::DidSet(FieldIndex, }); } -bool BrowsingContext::CanSet(FieldIndex, const bool&, - ContentParent* aSource) { - return XRE_IsParentProcess() && IsTop() && !aSource; -} - void BrowsingContext::DidSet(FieldIndex, bool aOldValue) { MOZ_ASSERT(IsTop(), "Should only set InRDMPane in the top-level browsing context"); @@ -4067,10 +4049,6 @@ bool IPDLParamTraits>::Read( if (id == 0) { *aResult = nullptr; } else if (RefPtr bc = dom::BrowsingContext::Get(id)) { - if (!bc->Group()->IsKnownForMessageReader(aReader)) { - return false; - } - *aResult = std::move(bc); } else { aResult->SetDiscarded(id); diff --git a/icecat/docshell/base/BrowsingContext.h b/icecat/docshell/base/BrowsingContext.h index a4067a02fb..0bd3efa16d 100644 --- a/icecat/docshell/base/BrowsingContext.h +++ b/icecat/docshell/base/BrowsingContext.h @@ -734,9 +734,6 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { mWindowProxy = aWindowProxy; } - // Since mWindowProxy is a weak pointer it has to be updated during sweeping. - static void SweepWindowProxies(JSTracer* aTrc); - Nullable GetWindow(); NS_DECL_CYCLE_COLLECTING_ISUPPORTS @@ -1139,7 +1136,6 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { return IsTop(); } - bool CanSet(FieldIndex, const bool&, ContentParent* aSource); void DidSet(FieldIndex, bool aOldValue); MOZ_CAN_RUN_SCRIPT_BOUNDARY void DidSet(FieldIndex, bool aOldValue); @@ -1381,8 +1377,10 @@ class BrowsingContext : public nsILoadContext, public nsWrapperCache { RefPtr mGeolocationServiceOverride; - // This is a weak reference. It will be updated automatically during sweeping - // by SweepWindowProxies. + // This is not a strong reference, but using a JS::Heap for that should be + // fine. The JSObject stored in here should be a proxy with a + // nsOuterWindowProxy handler, which will update the pointer from its + // objectMoved hook and clear it from its finalize hook. JS::Heap mWindowProxy; LocationProxy mLocation; diff --git a/icecat/docshell/base/BrowsingContextGroup.cpp b/icecat/docshell/base/BrowsingContextGroup.cpp index d5bfae2816..9f07d8dda4 100644 --- a/icecat/docshell/base/BrowsingContextGroup.cpp +++ b/icecat/docshell/base/BrowsingContextGroup.cpp @@ -251,42 +251,6 @@ ContentParent* BrowsingContextGroup::GetHostProcess( return mHosts.GetWeak(aRemoteType); } -bool BrowsingContextGroup::IsKnownForMessageReader( - IPC::MessageReader* aReader) { - if (!aReader->GetActor()) { - aReader->FatalError( - "No actor for BrowsingContextGroup::IsKnownForMessageReader"); - return false; - } - - mozilla::ipc::IToplevelProtocol* topActor = - aReader->GetActor()->ToplevelProtocol(); - switch (topActor->GetProtocolId()) { - case PInProcessMsgStart: - // PInProcess always exists only within a single process, so we don't need - // to do any validation on it. - return true; - - case PContentMsgStart: - // The process should only be able to name this BCG if it is - // subscribed, or if the BCG has been destroyed (and has therefore - // stopped tracking subscribers). - if (topActor->GetSide() == mozilla::ipc::ParentSide && !mDestroyed && - !mSubscribers.Contains(static_cast(topActor))) { - aReader->FatalError( - "Process is not subscribed to this BrowsingContextGroup"); - return false; - } - return true; - - default: - aReader->FatalError( - "Unsupported toplevel actor for " - "BrowsingContextGroup::IsKnownForMessageReader"); - return false; - } -} - void BrowsingContextGroup::UpdateToplevelsSuspendedIfNeeded() { if (!StaticPrefs::dom_suspend_inactive_enabled()) { return; @@ -332,8 +296,8 @@ void BrowsingContextGroup::Destroy() { !sBrowsingContextGroups->Contains(Id()) || *sBrowsingContextGroups->Lookup(Id()) != this); } -#endif mDestroyed = true; +#endif // Make sure to call `RemoveBrowsingContextGroup` for every entry in both // `mHosts` and `mSubscribers`. This will visit most entries twice, but diff --git a/icecat/docshell/base/BrowsingContextGroup.h b/icecat/docshell/base/BrowsingContextGroup.h index ea8c3b4449..0b95ff0611 100644 --- a/icecat/docshell/base/BrowsingContextGroup.h +++ b/icecat/docshell/base/BrowsingContextGroup.h @@ -87,12 +87,6 @@ class BrowsingContextGroup final : public nsWrapperCache { // BrowsingContextGroup, if possible. ContentParent* GetHostProcess(const nsACString& aRemoteType); - // Check if the process which sent the message being read from aReader is - // aware of this BrowsingContextGroup's existence. - // If this returns false, it will first set a fatal error on aReader with more - // details. - bool IsKnownForMessageReader(IPC::MessageReader* aReader); - // When a BrowsingContext is being discarded, we may want to keep the // corresponding BrowsingContextGroup alive until the other process // acknowledges that the BrowsingContext has been discarded. A `KeepAlive` @@ -266,7 +260,9 @@ class BrowsingContextGroup final : public nsWrapperCache { uint32_t mKeepAliveCount = 0; +#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED bool mDestroyed = false; +#endif // A BrowsingContextGroup contains a series of {Browsing,Window}Context // objects. They are addressed using a hashtable to avoid linear lookup when diff --git a/icecat/docshell/base/ChildProcessChannelListener.h b/icecat/docshell/base/ChildProcessChannelListener.h index 30bdc8c722..c00c2ff5a7 100644 --- a/icecat/docshell/base/ChildProcessChannelListener.h +++ b/icecat/docshell/base/ChildProcessChannelListener.h @@ -45,8 +45,8 @@ class ChildProcessChannelListener final { }; // TODO Backtrack. - nsTHashMap, Callback> mCallbacks; - nsTHashMap, CallbackArgs> mChannelArgs; + nsTHashMap mCallbacks; + nsTHashMap mChannelArgs; }; } // namespace mozilla::dom diff --git a/icecat/docshell/base/WindowContext.cpp b/icecat/docshell/base/WindowContext.cpp index 52569e985a..b1473028ca 100644 --- a/icecat/docshell/base/WindowContext.cpp +++ b/icecat/docshell/base/WindowContext.cpp @@ -764,10 +764,6 @@ bool IPDLParamTraits>::Read( if (id == 0) { *aResult = nullptr; } else if (RefPtr wc = dom::WindowContext::GetById(id)) { - if (!wc->Group()->IsKnownForMessageReader(aReader)) { - return false; - } - *aResult = std::move(wc); } else { aResult->SetDiscarded(id); diff --git a/icecat/dom/abort/AbortSignal.cpp b/icecat/dom/abort/AbortSignal.cpp index 2cd86e2275..68c26cba55 100644 --- a/icecat/dom/abort/AbortSignal.cpp +++ b/icecat/dom/abort/AbortSignal.cpp @@ -38,11 +38,6 @@ void AbortSignalImpl::GetReason(JSContext* aCx, } MaybeAssignAbortError(aCx); aReason.set(mReason); - if (NS_WARN_IF(!JS_WrapValue(aCx, aReason))) { - aReason.setUndefined(); - // TODO(Bug 2026137) - AbortSignalImpl::GetReason should be made fallible - JS_ClearPendingException(aCx); - } } JS::Value AbortSignalImpl::RawReason() const { return mReason.get(); } @@ -80,7 +75,7 @@ void AbortSignalImpl::RunAbortSteps() { // https://dom.spec.whatwg.org/#abortsignal-remove could be invoked in an // earlier algorithm to remove a later algorithm, so |mFollowers| must be a // |nsTObserverArray| to defend against mutation. - for (RefPtr follower : mFollowers.ForwardRange()) { + for (RefPtr& follower : mFollowers.ForwardRange()) { MOZ_ASSERT(follower->mFollowingSignal == this); follower->RunAbortAlgorithm(); } diff --git a/icecat/dom/animation/Animation.cpp b/icecat/dom/animation/Animation.cpp index edd19d02bc..5281d20621 100644 --- a/icecat/dom/animation/Animation.cpp +++ b/icecat/dom/animation/Animation.cpp @@ -386,9 +386,11 @@ void Animation::SetStartTime(const Nullable& aNewStartTime) { } CancelPendingTasks(); - // We may have already resolved mReady, but in that case calling - // MaybeResolve is a no-op, so that's okay. - MaybeResolvePromiseWithThis(mReady); + if (mReady) { + // We may have already resolved mReady, but in that case calling + // MaybeResolve is a no-op, so that's okay. + mReady->MaybeResolve(this); + } UpdateTiming(SeekFlag::DidSeek, SyncNotifyFlag::Async); if (IsRelevant()) { @@ -447,7 +449,9 @@ void Animation::SetCurrentTimeNoUpdate(const TimeDuration& aSeekTime) { ApplyPendingPlaybackRate(); mStartTime.SetNull(); - MaybeResolvePromiseWithThis(mReady); + if (mReady) { + mReady->MaybeResolve(this); + } CancelPendingTasks(); } @@ -604,25 +608,11 @@ Promise* Animation::GetReady(ErrorResult& aRv) { return nullptr; } if (!Pending()) { - MaybeResolvePromiseWithThis(mReady); + mReady->MaybeResolve(this); } return mReady; } -void Animation::MaybeResolvePromiseWithThis(Promise* aPromise) { - if (!aPromise) { - return; - } - if (!nsContentUtils::IsSafeToRunScript()) { - nsContentUtils::AddScriptRunner(NewRunnableMethod>( - "MaybeResolvePromiseWithThis", this, - &Animation::MaybeResolvePromiseWithThis, aPromise)); - return; - } - RefPtr promise = aPromise; - promise->MaybeResolve(this); -} - Promise* Animation::GetFinished(ErrorResult& aRv) { nsCOMPtr global = GetOwnerGlobal(); if (!mFinished && global) { @@ -724,7 +714,9 @@ void Animation::Finish(ErrorResult& aRv) { } CancelPendingTasks(); didChange = true; - MaybeResolvePromiseWithThis(mReady); + if (mReady) { + mReady->MaybeResolve(this); + } } UpdateTiming(SeekFlag::DidSeek, SyncNotifyFlag::Sync); if (didChange && IsRelevant()) { @@ -1615,7 +1607,9 @@ void Animation::ResumeAt(const TimeDuration& aReadyTime) { MutationObservers::NotifyAnimationChanged(this); } - MaybeResolvePromiseWithThis(mReady); + if (mReady) { + mReady->MaybeResolve(this); + } } void Animation::PauseAt(const TimeDuration& aReadyTime) { @@ -1632,7 +1626,9 @@ void Animation::PauseAt(const TimeDuration& aReadyTime) { UpdateTiming(SeekFlag::NoSeek, SyncNotifyFlag::Async); - MaybeResolvePromiseWithThis(mReady); + if (mReady) { + mReady->MaybeResolve(this); + } } void Animation::UpdateTiming(SeekFlag aSeekFlag, @@ -1881,8 +1877,10 @@ void Animation::ResetFinishedPromise() { } void Animation::MaybeResolveFinishedPromise() { + if (mFinished) { + mFinished->MaybeResolve(this); + } mFinishedIsResolved = true; - MaybeResolvePromiseWithThis(mFinished); } void Animation::DoFinishNotificationImmediately(MicroTaskRunnable* aAsync) { diff --git a/icecat/dom/animation/Animation.h b/icecat/dom/animation/Animation.h index e0eda9f0a9..d757b27760 100644 --- a/icecat/dom/animation/Animation.h +++ b/icecat/dom/animation/Animation.h @@ -466,7 +466,6 @@ class Animation : public DOMEventTargetHelper, friend class AsyncFinishNotification; void DoFinishNotificationImmediately(MicroTaskRunnable* aAsync = nullptr); void QueuePlaybackEvent(nsAtom* aOnEvent, TimeStamp&& aScheduledEventTime); - void MaybeResolvePromiseWithThis(Promise*); /** * Remove this animation from the pending animation tracker and reset diff --git a/icecat/dom/base/Document.cpp b/icecat/dom/base/Document.cpp index a2ca82838c..3eefcc5928 100644 --- a/icecat/dom/base/Document.cpp +++ b/icecat/dom/base/Document.cpp @@ -687,10 +687,7 @@ class SimpleHTMLCollection final : public nsSimpleContentList, } virtual uint32_t Length() override { return nsSimpleContentList::Length(); } virtual Element* GetElementAt(uint32_t aIndex) override { - if (nsIContent* content = mElements.SafeElementAt(aIndex)) { - return content->AsElement(); - } - return nullptr; + return mElements.SafeElementAt(aIndex)->AsElement(); } virtual Element* GetFirstNamedElement(const nsAString& aName, @@ -10664,25 +10661,23 @@ void nsDOMAttributeMap::BlastSubtreeToPieces(nsINode* aNode) { mozilla::DebugOnly rv = element->UnsetAttr(attr->NodeInfo()->NamespaceID(), - attr->NodeInfo()->NameAtom(), true); + attr->NodeInfo()->NameAtom(), false); // XXX Should we abort here? NS_ASSERTION(NS_SUCCEEDED(rv), "Uh-oh, UnsetAttr shouldn't fail!"); } } - // Hold the strong reference to be sure, since we may notify - if (RefPtr shadow = element->GetShadowRoot()) { + if (mozilla::dom::ShadowRoot* shadow = element->GetShadowRoot()) { BlastSubtreeToPieces(shadow); element->UnattachShadow(); } } while (aNode->HasChildren()) { - // Hold the strong reference to be sure, since we are notifying. - nsCOMPtr node = aNode->GetFirstChild(); + nsIContent* node = aNode->GetFirstChild(); BlastSubtreeToPieces(node); - aNode->RemoveChildNode(node, true); + aNode->RemoveChildNode(node, false); } } @@ -16277,16 +16272,11 @@ void Document::RequestFullscreenInParentProcess( /* static */ bool Document::HandlePendingFullscreenRequests(Document* aDoc) { - AutoTArray, 1> requests; - { - PendingFullscreenChangeList::Iterator iter( - aDoc, PendingFullscreenChangeList::eDocumentsWithSameRoot); - while (!iter.AtEnd()) { - requests.AppendElement(iter.TakeAndNext()); - } - } bool handled = false; - for (UniquePtr& request : requests) { + PendingFullscreenChangeList::Iterator iter( + aDoc, PendingFullscreenChangeList::eDocumentsWithSameRoot); + while (!iter.AtEnd()) { + UniquePtr request = iter.TakeAndNext(); Document* doc = request->Document(); if (doc->ApplyFullscreen(std::move(request))) { handled = true; diff --git a/icecat/dom/base/Document.h b/icecat/dom/base/Document.h index d4efb82cc7..32c23b19f3 100644 --- a/icecat/dom/base/Document.h +++ b/icecat/dom/base/Document.h @@ -5732,7 +5732,7 @@ class MOZ_RAII IgnoreOpensDuringUnload final { } private: - RefPtr mDoc; + Document* mDoc; }; bool IsInFocusedTab(Document* aDoc); diff --git a/icecat/dom/base/DocumentOrShadowRoot.cpp b/icecat/dom/base/DocumentOrShadowRoot.cpp index 828f6c85fc..324d250517 100644 --- a/icecat/dom/base/DocumentOrShadowRoot.cpp +++ b/icecat/dom/base/DocumentOrShadowRoot.cpp @@ -7,7 +7,6 @@ #include "DocumentOrShadowRoot.h" #include "mozilla/AnimationComparator.h" #include "mozilla/EventStateManager.h" -#include "mozilla/Likely.h" #include "mozilla/PointerLockManager.h" #include "mozilla/PresShell.h" #include "mozilla/StyleSheet.h" @@ -113,10 +112,6 @@ void DocumentOrShadowRoot::RemoveSheetFromStylesIfApplicable( void DocumentOrShadowRoot::OnSetAdoptedStyleSheets(StyleSheet& aSheet, uint32_t aIndex, ErrorResult& aRv) { - if (MOZ_UNLIKELY(aIndex > mAdoptedStyleSheets.Length())) { - MOZ_ASSERT_UNREACHABLE("Out of sync proxy"); - return; - } Document& doc = *AsNode().OwnerDoc(); // 1. If value’s constructed flag is not set, or its constructor document is // not equal to this DocumentOrShadowRoot's node document, throw a @@ -169,10 +164,7 @@ void DocumentOrShadowRoot::OnSetAdoptedStyleSheets(StyleSheet& aSheet, void DocumentOrShadowRoot::OnDeleteAdoptedStyleSheets(StyleSheet& aSheet, uint32_t aIndex, ErrorResult&) { - if (MOZ_UNLIKELY(mAdoptedStyleSheets.ElementAt(aIndex) != &aSheet)) { - MOZ_ASSERT_UNREACHABLE("Out of sync proxy"); - return; - } + MOZ_ASSERT(mAdoptedStyleSheets.ElementAt(aIndex) == &aSheet); mAdoptedStyleSheets.RemoveElementAt(aIndex); auto existingIndex = mAdoptedStyleSheets.LastIndexOf(&aSheet); if (existingIndex != mAdoptedStyleSheets.NoIndex && existingIndex >= aIndex) { diff --git a/icecat/dom/base/Element.cpp b/icecat/dom/base/Element.cpp index e21cfa34a8..7db8a9c0e0 100644 --- a/icecat/dom/base/Element.cpp +++ b/icecat/dom/base/Element.cpp @@ -279,9 +279,8 @@ nsIFrame* nsIContent::GetPrimaryFrame(mozilla::FlushType aType) { return nullptr; } - RefPtr presShell = frame->PresShell(); if (aType == mozilla::FlushType::Layout) { - presShell->EnsureReflowIfFrameHasHiddenContent(frame); + frame->PresShell()->EnsureReflowIfFrameHasHiddenContent(frame); frame = GetPrimaryFrame(); } @@ -2808,7 +2807,6 @@ bool Element::OnlyNotifySameValueSet(int32_t aNamespaceID, nsAtom* aName, } nsAutoScriptBlocker scriptBlocker; - OnAttrSetButNotChanged(aNamespaceID, aName, aValue, aNotify); MutationObservers::NotifyAttributeSetToCurrentValue(this, aNamespaceID, aName); return true; @@ -2858,6 +2856,7 @@ nsresult Element::SetAttr(int32_t aNamespaceID, nsAtom* aName, nsAtom* aPrefix, if (OnlyNotifySameValueSet(aNamespaceID, aName, aPrefix, value, aNotify, oldValue, &modType, &hasListeners, &oldValueSet)) { + OnAttrSetButNotChanged(aNamespaceID, aName, value, aNotify); return NS_OK; } } @@ -2907,6 +2906,7 @@ nsresult Element::SetParsedAttr(int32_t aNamespaceID, nsAtom* aName, if (OnlyNotifySameValueSet(aNamespaceID, aName, aPrefix, value, aNotify, oldValue, &modType, &hasListeners, &oldValueSet)) { + OnAttrSetButNotChanged(aNamespaceID, aName, value, aNotify); return NS_OK; } } diff --git a/icecat/dom/base/ImageEncoder.cpp b/icecat/dom/base/ImageEncoder.cpp index 8c2636e326..e437a4d108 100644 --- a/icecat/dom/base/ImageEncoder.cpp +++ b/icecat/dom/base/ImageEncoder.cpp @@ -341,8 +341,8 @@ nsresult ImageEncoder::ExtractDataInternal( return NS_ERROR_INVALID_ARG; } auto size = data->GetSize(); - rv = aEncoder->InitFromData(map.mData, map.mStride * size.height, - size.width, size.height, map.mStride, + rv = aEncoder->InitFromData(map.mData, size.width * size.height * 4, + size.width, size.height, size.width * 4, imgIEncoder::INPUT_FORMAT_HOSTARGB, aOptions); data->Unmap(); } @@ -374,8 +374,8 @@ nsresult ImageEncoder::ExtractDataInternal( } rv = aEncoder->InitFromData(data.Elements(), - length, aSize.width, - aSize.height, stride, + aSize.width * aSize.height * 4, aSize.width, + aSize.height, aSize.width * 4, imgIEncoder::INPUT_FORMAT_HOSTARGB, aOptions); } else { if (BufferSizeFromDimensions(aSize.width, aSize.height, 4) == 0) { @@ -391,8 +391,8 @@ nsresult ImageEncoder::ExtractDataInternal( return NS_ERROR_INVALID_ARG; } auto size = dataSurface->GetSize(); - rv = aEncoder->InitFromData(map.mData, map.mStride * size.height, - size.width, size.height, map.mStride, + rv = aEncoder->InitFromData(map.mData, size.width * size.height * 4, + size.width, size.height, size.width * 4, imgIEncoder::INPUT_FORMAT_HOSTARGB, aOptions); dataSurface->Unmap(); } @@ -421,13 +421,13 @@ nsresult ImageEncoder::ExtractDataInternal( if (!emptyCanvas->Map(DataSourceSurface::MapType::WRITE, &map)) { return NS_ERROR_INVALID_ARG; } - auto size = map.mStride * aSize.height; if (aUsePlaceholder) { + auto size = 4 * aSize.width * aSize.height; auto* data = map.mData; GeneratePlaceholderCanvasData(size, data); } - rv = aEncoder->InitFromData(map.mData, size, aSize.width, aSize.height, - map.mStride, + rv = aEncoder->InitFromData(map.mData, aSize.width * aSize.height * 4, + aSize.width, aSize.height, aSize.width * 4, imgIEncoder::INPUT_FORMAT_HOSTARGB, aOptions); emptyCanvas->Unmap(); if (NS_SUCCEEDED(rv)) { diff --git a/icecat/dom/base/MimeType.cpp b/icecat/dom/base/MimeType.cpp index 86fd9c76c2..1e6d6a7cd4 100644 --- a/icecat/dom/base/MimeType.cpp +++ b/icecat/dom/base/MimeType.cpp @@ -271,7 +271,6 @@ template const nsTSubstring& aMimeType, nsTSubstring& aOutEssence, nsTSubstring& aOutCharset) { - // https://fetch.spec.whatwg.org/#concept-header-extract-mime-type static char_type kCHARSET[] = {'c', 'h', 'a', 'r', 's', 'e', 't'}; static nsTDependentSubstring kCharset(kCHARSET, 7); @@ -279,8 +278,8 @@ template nsTAutoString prevContentType; nsTAutoString prevCharset; - aOutEssence.Truncate(); - aOutCharset.Truncate(); + prevContentType.Assign(aOutEssence); + prevCharset.Assign(aOutCharset); nsTArray> mimeTypeParts = SplitMimetype(aMimeType); @@ -293,7 +292,9 @@ template parsed = Parse(mimeTypeString); if (!parsed) { - continue; + aOutEssence.Truncate(); + aOutCharset.Truncate(); + return false; } parsed->GetEssence(aOutEssence); @@ -321,10 +322,6 @@ template } } - if (aOutEssence.IsEmpty()) { - return false; - } - return true; } diff --git a/icecat/dom/base/ScreenOrientation.cpp b/icecat/dom/base/ScreenOrientation.cpp index 9268acc485..b03738607e 100644 --- a/icecat/dom/base/ScreenOrientation.cpp +++ b/icecat/dom/base/ScreenOrientation.cpp @@ -70,24 +70,15 @@ ScreenOrientation::ScreenOrientation(nsPIDOMWindowInner* aWindow, : DOMEventTargetHelper(aWindow), mScreen(aScreen) { MOZ_ASSERT(aWindow); MOZ_ASSERT(aScreen); -} -/* static */ already_AddRefed ScreenOrientation::Create( - nsPIDOMWindowInner* aWindow, nsScreen* aScreen) { - RefPtr screenOrientation = new ScreenOrientation(aWindow, aScreen); + mAngle = aScreen->GetOrientationAngle(); + mType = InternalOrientationToType(aScreen->GetOrientationType()); - screenOrientation->mAngle = aScreen->GetOrientationAngle(); - screenOrientation->mType = - InternalOrientationToType(aScreen->GetOrientationType()); - - Document* doc = screenOrientation->GetResponsibleDocument(); + Document* doc = GetResponsibleDocument(); BrowsingContext* bc = doc ? doc->GetBrowsingContext() : nullptr; if (bc && !bc->IsDiscarded() && !bc->InRDMPane()) { - MOZ_ALWAYS_SUCCEEDS(bc->SetCurrentOrientation(screenOrientation->mType, - screenOrientation->mAngle)); + MOZ_ALWAYS_SUCCEEDS(bc->SetCurrentOrientation(mType, mAngle)); } - - return screenOrientation.forget(); } ScreenOrientation::~ScreenOrientation() { diff --git a/icecat/dom/base/ScreenOrientation.h b/icecat/dom/base/ScreenOrientation.h index e137801172..bbc736db64 100644 --- a/icecat/dom/base/ScreenOrientation.h +++ b/icecat/dom/base/ScreenOrientation.h @@ -33,13 +33,8 @@ class ScreenOrientation final : public DOMEventTargetHelper { // Called when the orientation may have changed. void MaybeChanged(); - private: ScreenOrientation(nsPIDOMWindowInner* aWindow, nsScreen* aScreen); - public: - static already_AddRefed Create(nsPIDOMWindowInner* aWindow, - nsScreen* aScreen); - already_AddRefed Lock(OrientationLockType aOrientation, ErrorResult& aRv); @@ -112,8 +107,8 @@ class ScreenOrientation final : public DOMEventTargetHelper { RefPtr mScreen; RefPtr mFullscreenListener; RefPtr mVisibleListener; - OrientationType mType{}; - uint16_t mAngle{}; + OrientationType mType; + uint16_t mAngle; // Whether we've tried to call into hal to lock the device orientation. This // is needed because you don't want calling UnlockDeviceOrientation() during // shutdown to initialize PHal if it hasn't been initialized earlier. Also, diff --git a/icecat/dom/base/ShadowRoot.cpp b/icecat/dom/base/ShadowRoot.cpp index 429ece5e87..c13a2b492a 100644 --- a/icecat/dom/base/ShadowRoot.cpp +++ b/icecat/dom/base/ShadowRoot.cpp @@ -213,7 +213,7 @@ void ShadowRoot::Unattach() { void ShadowRoot::InvalidateStyleAndLayoutOnSubtree(Element* aElement) { MOZ_ASSERT(aElement); - Document* doc = aElement->GetComposedDoc(); + Document* doc = GetComposedDoc(); if (!doc) { return; } diff --git a/icecat/dom/base/ShadowRoot.h b/icecat/dom/base/ShadowRoot.h index 37baf5f6da..3464da9ab3 100644 --- a/icecat/dom/base/ShadowRoot.h +++ b/icecat/dom/base/ShadowRoot.h @@ -136,7 +136,7 @@ class ShadowRoot final : public DocumentFragment, public DocumentOrShadowRoot { * It is important that this runs _before_ actually shuffling the flat tree * around, so that layout knows the actual tree that it needs to invalidate. */ - static void InvalidateStyleAndLayoutOnSubtree(Element*); + void InvalidateStyleAndLayoutOnSubtree(Element*); private: void InsertSheetIntoAuthorData(size_t aIndex, StyleSheet&, diff --git a/icecat/dom/base/StructuredCloneBlob.cpp b/icecat/dom/base/StructuredCloneBlob.cpp index 78eb2fcc48..9c0f764323 100644 --- a/icecat/dom/base/StructuredCloneBlob.cpp +++ b/icecat/dom/base/StructuredCloneBlob.cpp @@ -15,10 +15,8 @@ #include "js/Wrapper.h" #include "jsapi.h" #include "mozilla/Assertions.h" -#include "mozilla/CheckedInt.h" #include "mozilla/ErrorResult.h" #include "mozilla/Maybe.h" -#include "mozilla/Span.h" #include "mozilla/UniquePtr.h" #include "mozilla/dom/BindingDeclarations.h" #include "mozilla/dom/BlobImpl.h" @@ -175,8 +173,7 @@ bool StructuredCloneBlob::Holder::ReadStructuredCloneInternal( return false; } #endif - BlobImpls().AppendElements( - Span(aHolder->BlobImpls()).Subspan(blobOffset, blobCount)); + BlobImpls().AppendElements(&aHolder->BlobImpls()[blobOffset], blobCount); } JSStructuredCloneData data(mStructuredCloneScope); @@ -215,13 +212,8 @@ bool StructuredCloneBlob::WriteStructuredClone(JSContext* aCx, bool StructuredCloneBlob::Holder::WriteStructuredClone( JSContext* aCx, JSStructuredCloneWriter* aWriter, StructuredCloneHolder* aHolder) { - const auto& data = mBuffer->data(); - CheckedUint32 dataSize(data.Size()); - if (!dataSize.isValid()) { - return false; - } - if (!JS_WriteUint32Pair(aWriter, dataSize.value(), - JS_STRUCTURED_CLONE_VERSION) || + auto& data = mBuffer->data(); + if (!JS_WriteUint32Pair(aWriter, data.Size(), JS_STRUCTURED_CLONE_VERSION) || !JS_WriteUint32Pair(aWriter, aHolder->BlobImpls().Length(), BlobImpls().Length())) { return false; diff --git a/icecat/dom/base/TextInputProcessor.cpp b/icecat/dom/base/TextInputProcessor.cpp index d5d7305570..2809113600 100644 --- a/icecat/dom/base/TextInputProcessor.cpp +++ b/icecat/dom/base/TextInputProcessor.cpp @@ -938,8 +938,9 @@ TextInputProcessor::NotifyIME(TextEventDispatcher* aTextEventDispatcher, NS_IMETHODIMP_(IMENotificationRequests) TextInputProcessor::GetIMENotificationRequests() { // TextInputProcessor should support all change notifications. - return {IMENotificationRequest::TextChange, - IMENotificationRequest::PositionChange}; + return IMENotificationRequests( + IMENotificationRequests::NOTIFY_TEXT_CHANGE | + IMENotificationRequests::NOTIFY_POSITION_CHANGE); } NS_IMETHODIMP_(void) diff --git a/icecat/dom/base/TextInputProcessor.h b/icecat/dom/base/TextInputProcessor.h index 912b2fc7fc..10e0421953 100644 --- a/icecat/dom/base/TextInputProcessor.h +++ b/icecat/dom/base/TextInputProcessor.h @@ -27,10 +27,9 @@ class KeyboardEvent; class TextInputProcessor final : public nsITextInputProcessor, public widget::TextEventDispatcherListener { - using IMENotification = mozilla::widget::IMENotification; - using IMENotificationRequest = mozilla::widget::IMENotificationRequest; - using IMENotificationRequests = mozilla::widget::IMENotificationRequests; - using TextEventDispatcher = mozilla::widget::TextEventDispatcher; + typedef mozilla::widget::IMENotification IMENotification; + typedef mozilla::widget::IMENotificationRequests IMENotificationRequests; + typedef mozilla::widget::TextEventDispatcher TextEventDispatcher; public: TextInputProcessor(); diff --git a/icecat/dom/base/TimeoutManager.cpp b/icecat/dom/base/TimeoutManager.cpp index 3fec5c19e6..e37fc282d5 100644 --- a/icecat/dom/base/TimeoutManager.cpp +++ b/icecat/dom/base/TimeoutManager.cpp @@ -104,10 +104,6 @@ bool TimeoutManager::IsActive() const { return true; } - if (mIsChromeWorker) { - return true; - } - // Check if we're playing audio if (mGlobalObject.IsPlayingAudio()) { return true; @@ -326,7 +322,7 @@ TimeDuration TimeoutManager::CalculateDelay(Timeout* aTimeout) const { TimeDuration result = aTimeout->mInterval; if (aTimeout->mNestingLevel >= - StaticPrefs::dom_clamp_timeout_nesting_level() && !mIsChromeWorker) { + StaticPrefs::dom_clamp_timeout_nesting_level()) { uint32_t minTimeoutValue = StaticPrefs::dom_min_timeout_value(); result = TimeDuration::Max(result, TimeDuration::FromMilliseconds(minTimeoutValue)); @@ -408,7 +404,7 @@ uint32_t TimeoutManager::sNestingLevel = 0; TimeoutManager::TimeoutManager(nsIGlobalObject& aHandle, uint32_t aMaxIdleDeferMS, - nsISerialEventTarget* aEventTarget, bool aIsChromeWorker) + nsISerialEventTarget* aEventTarget) : mGlobalObject(aHandle), mExecutor(new TimeoutExecutor(this, false, 0)), mIdleExecutor(new TimeoutExecutor(this, true, aMaxIdleDeferMS)), @@ -429,8 +425,7 @@ TimeoutManager::TimeoutManager(nsIGlobalObject& aHandle, mBudgetThrottleTimeouts(false), mIsLoading(false), mEventTarget(aEventTarget), - mIsWindow(aHandle.GetAsInnerWindow()), - mIsChromeWorker(aIsChromeWorker) { + mIsWindow(aHandle.GetAsInnerWindow()) { MOZ_LOG(gTimeoutLog, LogLevel::Debug, ("TimeoutManager %p created, tracking bucketing %s\n", this, StaticPrefs::privacy_trackingprotection_annotate_channels() diff --git a/icecat/dom/base/TimeoutManager.h b/icecat/dom/base/TimeoutManager.h index 4df3c4230a..d995ba70a0 100644 --- a/icecat/dom/base/TimeoutManager.h +++ b/icecat/dom/base/TimeoutManager.h @@ -30,8 +30,7 @@ class TimeoutManager final { public: TimeoutManager(nsIGlobalObject& aHandle, uint32_t aMaxIdleDeferMS, - nsISerialEventTarget* aEventTarget, - bool aIsChromeWorker = false); + nsISerialEventTarget* aEventTarget); ~TimeoutManager(); TimeoutManager(const TimeoutManager& rhs) = delete; void operator=(const TimeoutManager& rhs) = delete; @@ -271,8 +270,6 @@ class TimeoutManager final { const bool mIsWindow; - const bool mIsChromeWorker; - uint32_t mNestingLevel{0}; static uint32_t sNestingLevel; diff --git a/icecat/dom/base/nsAttrValue.cpp b/icecat/dom/base/nsAttrValue.cpp index 634077e59b..3156bd966c 100644 --- a/icecat/dom/base/nsAttrValue.cpp +++ b/icecat/dom/base/nsAttrValue.cpp @@ -1333,11 +1333,7 @@ void nsAttrValue::ParseAtom(const nsAString& aValue) { void nsAttrValue::ParseAtomArray(nsAtom* aValue) { if (MiscContainer* cont = AtomArrayCache::Lookup(aValue)) { // Set our MiscContainer to the cached one. - // AddRef must happen before ResetIfSet: the cache does not hold a strong - // reference, and ResetIfSet could release the last reference to cont if - // this nsAttrValue is already holding it. NS_ADDREF(cont); - ResetIfSet(); SetPtrValueAndType(cont, eOtherBase); return; } @@ -1937,11 +1933,7 @@ bool nsAttrValue::ParseStyleAttribute(const nsAString& aString, if (cachingAllowed) { if (MiscContainer* cont = attrStyles->LookupStyleAttr(aString)) { // Set our MiscContainer to the cached one. - // AddRef must happen before ResetIfSet: the cache does not hold a strong - // reference, and ResetIfSet could release the last reference to cont if - // this nsAttrValue is already holding it. NS_ADDREF(cont); - ResetIfSet(); SetPtrValueAndType(cont, eOtherBase); return true; } diff --git a/icecat/dom/base/nsContentList.cpp b/icecat/dom/base/nsContentList.cpp index 3b4ddb2f88..bd43a4e6ce 100644 --- a/icecat/dom/base/nsContentList.cpp +++ b/icecat/dom/base/nsContentList.cpp @@ -592,8 +592,7 @@ Element* nsContentList::NamedItem(const nsAString& aName, bool aDoFlush) { return mNamedItemsCache->Get(name); } -void nsContentList::GetSupportedNames(nsTArray& aNames, - FilterElementWithName aFilter) { +void nsContentList::GetSupportedNames(nsTArray& aNames) { BringSelfUpToDate(true); AutoTArray atoms; @@ -607,14 +606,14 @@ void nsContentList::GetSupportedNames(nsTArray& aNames, } } - if (nsGenericHTMLElement* el = nsGenericHTMLElement::FromNode(content)) { + nsGenericHTMLElement* el = nsGenericHTMLElement::FromNode(content); + if (el) { // XXXbz should we be checking for particular tags here? How // stable is this part of the spec? // Note: nsINode::HasName means the name is exposed on the document, // which is false for options, so we don't check it here. const nsAttrValue* val = el->GetParsedAttr(nsGkAtoms::name); - if (val && val->Type() == nsAttrValue::eAtom && - (!aFilter || aFilter(el))) { + if (val && val->Type() == nsAttrValue::eAtom) { nsAtom* name = val->GetAtomValue(); MOZ_ASSERT(name != nsGkAtoms::_empty, "Empty names don't get atomized"); if (!atoms.Contains(name)) { diff --git a/icecat/dom/base/nsContentList.h b/icecat/dom/base/nsContentList.h index 7a862e9818..a70c5281b2 100644 --- a/icecat/dom/base/nsContentList.h +++ b/icecat/dom/base/nsContentList.h @@ -296,21 +296,13 @@ class nsContentList : public nsBaseContentList, aFound = !!item; return item; } - void GetSupportedNames(nsTArray& aNames) override { - GetSupportedNames(aNames, nullptr); - } + void GetSupportedNames(nsTArray& aNames) override; // nsContentList public methods uint32_t Length(bool aDoFlush); nsIContent* Item(uint32_t aIndex, bool aDoFlush); Element* NamedItem(const nsAString& aName, bool aDoFlush); - // Used by HTMLAllCollection to limit the elements whose name attribute is - // considered. The filter MUST NOT cause any flushes. - using FilterElementWithName = bool (*)(nsIContent*); - void GetSupportedNames(nsTArray& aNames, - FilterElementWithName aFilter); - // nsIMutationObserver NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED diff --git a/icecat/dom/base/nsContentPermissionHelper.cpp b/icecat/dom/base/nsContentPermissionHelper.cpp index 5b76715de1..0e1668ec5e 100644 --- a/icecat/dom/base/nsContentPermissionHelper.cpp +++ b/icecat/dom/base/nsContentPermissionHelper.cpp @@ -44,15 +44,12 @@ class ContentPermissionRequestParent : public PContentPermissionRequestParent { // @param aIsRequestDelegatedToUnsafeThirdParty see // mIsRequestDelegatedToUnsafeThirdParty. ContentPermissionRequestParent( - Element* aElement, nsIPrincipal* aPrincipal, - nsIPrincipal* aTopLevelPrincipal, + const nsTArray& aRequests, Element* aElement, + nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, const bool aHasValidTransientUserGestureActivation, const bool aIsRequestDelegatedToUnsafeThirdParty); virtual ~ContentPermissionRequestParent(); - MOZ_CAN_RUN_SCRIPT_BOUNDARY - void Init(nsTArray&& aRequests); - bool IsBeingDestroyed(); nsCOMPtr mPrincipal; @@ -67,13 +64,16 @@ class ContentPermissionRequestParent : public PContentPermissionRequestParent { nsTArray mRequests; private: + // Not MOZ_CAN_RUN_SCRIPT because we can't annotate the thing we override yet. + MOZ_CAN_RUN_SCRIPT_BOUNDARY + virtual mozilla::ipc::IPCResult Recvprompt() override; virtual mozilla::ipc::IPCResult RecvDestroy() override; virtual void ActorDestroy(ActorDestroyReason why) override; }; ContentPermissionRequestParent::ContentPermissionRequestParent( - Element* aElement, nsIPrincipal* aPrincipal, - nsIPrincipal* aTopLevelPrincipal, + const nsTArray& aRequests, Element* aElement, + nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, const bool aHasValidTransientUserGestureActivation, const bool aIsRequestDelegatedToUnsafeThirdParty) { MOZ_COUNT_CTOR(ContentPermissionRequestParent); @@ -81,6 +81,7 @@ ContentPermissionRequestParent::ContentPermissionRequestParent( mPrincipal = aPrincipal; mTopLevelPrincipal = aTopLevelPrincipal; mElement = aElement; + mRequests = aRequests.Clone(); mHasValidTransientUserGestureActivation = aHasValidTransientUserGestureActivation; mIsRequestDelegatedToUnsafeThirdParty = aIsRequestDelegatedToUnsafeThirdParty; @@ -90,14 +91,13 @@ ContentPermissionRequestParent::~ContentPermissionRequestParent() { MOZ_COUNT_DTOR(ContentPermissionRequestParent); } -void ContentPermissionRequestParent::Init( - nsTArray&& aRequests) { - mRequests = std::move(aRequests); +mozilla::ipc::IPCResult ContentPermissionRequestParent::Recvprompt() { mProxy = new nsContentPermissionRequestProxy(this); if (NS_FAILED(mProxy->Init(mRequests))) { RefPtr proxy(mProxy); proxy->Cancel(); } + return IPC_OK(); } mozilla::ipc::IPCResult ContentPermissionRequestParent::RecvDestroy() { @@ -239,12 +239,12 @@ nsresult nsContentPermissionUtils::CreatePermissionArray( /* static */ PContentPermissionRequestParent* nsContentPermissionUtils::CreateContentPermissionRequestParent( - Element* aElement, nsIPrincipal* aPrincipal, - nsIPrincipal* aTopLevelPrincipal, + const nsTArray& aRequests, Element* aElement, + nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, const bool aHasValidTransientUserGestureActivation, const bool aIsRequestDelegatedToUnsafeThirdParty, const TabId& aTabId) { PContentPermissionRequestParent* parent = new ContentPermissionRequestParent( - aElement, aPrincipal, aTopLevelPrincipal, + aRequests, aElement, aPrincipal, aTopLevelPrincipal, aHasValidTransientUserGestureActivation, aIsRequestDelegatedToUnsafeThirdParty); ContentPermissionRequestParentMap()[parent] = aTabId; @@ -252,14 +252,6 @@ nsContentPermissionUtils::CreateContentPermissionRequestParent( return parent; } -/* static */ -void nsContentPermissionUtils::InitContentPermissionRequestParent( - PContentPermissionRequestParent* aActor, - nsTArray&& aRequests) { - static_cast(aActor)->Init( - std::move(aRequests)); -} - /* static */ nsresult nsContentPermissionUtils::AskPermission( nsIContentPermissionRequest* aRequest, nsPIDOMWindowInner* aWindow) { @@ -309,6 +301,7 @@ nsresult nsContentPermissionUtils::AskPermission( } ContentPermissionRequestChildMap()[req.get()] = child->GetTabId(); + req->Sendprompt(); return NS_OK; } diff --git a/icecat/dom/base/nsContentPermissionHelper.h b/icecat/dom/base/nsContentPermissionHelper.h index 91fda16141..18ce5c8f0f 100644 --- a/icecat/dom/base/nsContentPermissionHelper.h +++ b/icecat/dom/base/nsContentPermissionHelper.h @@ -63,15 +63,11 @@ class nsContentPermissionUtils { // @param aIsRequestDelegatedToUnsafeThirdParty see // ContentPermissionRequestParent. static PContentPermissionRequestParent* CreateContentPermissionRequestParent( - Element* aElement, nsIPrincipal* aPrincipal, - nsIPrincipal* aTopLevelPrincipal, + const nsTArray& aRequests, Element* aElement, + nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal, const bool aHasValidTransientUserGestureActivation, const bool aIsRequestDelegatedToUnsafeThirdParty, const TabId& aTabId); - static void InitContentPermissionRequestParent( - PContentPermissionRequestParent* aActor, - nsTArray&& aRequests); - static nsresult AskPermission(nsIContentPermissionRequest* aRequest, nsPIDOMWindowInner* aWindow); diff --git a/icecat/dom/base/nsDOMWindowUtils.cpp b/icecat/dom/base/nsDOMWindowUtils.cpp index 3709f4c426..e85140d5af 100644 --- a/icecat/dom/base/nsDOMWindowUtils.cpp +++ b/icecat/dom/base/nsDOMWindowUtils.cpp @@ -4533,9 +4533,10 @@ nsDOMWindowUtils::WrCapture() { } NS_IMETHODIMP -nsDOMWindowUtils::WrStartCaptureSequence(uint32_t aFlags) { +nsDOMWindowUtils::WrStartCaptureSequence(const nsACString& aPath, + uint32_t aFlags) { if (WebRenderBridgeChild* wrbc = GetWebRenderBridge()) { - wrbc->StartCaptureSequence(aFlags); + wrbc->StartCaptureSequence(nsCString(aPath), aFlags); } return NS_OK; } diff --git a/icecat/dom/base/nsFrameLoaderOwner.cpp b/icecat/dom/base/nsFrameLoaderOwner.cpp index e3c9cfcdbb..b99bb2a402 100644 --- a/icecat/dom/base/nsFrameLoaderOwner.cpp +++ b/icecat/dom/base/nsFrameLoaderOwner.cpp @@ -105,7 +105,7 @@ void nsFrameLoaderOwner::ChangeRemotenessCommon( // no other blockers. Since we're going to be adding a new blocker as soon as // we recreate the frame loader, this is not what we want, so add our own // blocker until the process is complete. - RefPtr doc = owner->OwnerDoc(); + Document* doc = owner->OwnerDoc(); doc->BlockOnload(); auto cleanup = MakeScopeExit([&]() { doc->UnblockOnload(false); }); diff --git a/icecat/dom/base/nsGlobalWindowInner.cpp b/icecat/dom/base/nsGlobalWindowInner.cpp index 8a10410b5f..c08219a734 100644 --- a/icecat/dom/base/nsGlobalWindowInner.cpp +++ b/icecat/dom/base/nsGlobalWindowInner.cpp @@ -2459,7 +2459,7 @@ VisualViewport* nsGlobalWindowInner::VisualViewport() { nsScreen* nsGlobalWindowInner::Screen() { if (!mScreen) { - mScreen = nsScreen::Create(this); + mScreen = new nsScreen(this); } return mScreen; } @@ -2535,10 +2535,6 @@ Maybe nsPIDOMWindowInner::GetController() const { return nsGlobalWindowInner::Cast(this)->GetController(); } -ClientSource* nsPIDOMWindowInner::GetClientSource() const { - return nsGlobalWindowInner::Cast(this)->GetClientSource(); -} - void nsPIDOMWindowInner::SetCsp(nsIContentSecurityPolicy* aCsp) { return nsGlobalWindowInner::Cast(this)->SetCsp(aCsp); } diff --git a/icecat/dom/base/nsGlobalWindowInner.h b/icecat/dom/base/nsGlobalWindowInner.h index 7a3e85b752..300368dd2d 100644 --- a/icecat/dom/base/nsGlobalWindowInner.h +++ b/icecat/dom/base/nsGlobalWindowInner.h @@ -1286,10 +1286,6 @@ class nsGlobalWindowInner final : public mozilla::dom::EventTarget, void SetCurrentPasteDataTransfer(mozilla::dom::DataTransfer* aDataTransfer); mozilla::dom::DataTransfer* GetCurrentPasteDataTransfer() const; - mozilla::dom::ClientSource* GetClientSource() const { - return mClientSource.get(); - } - private: RefPtr mContentMediaController; diff --git a/icecat/dom/base/nsINode.cpp b/icecat/dom/base/nsINode.cpp index dde0358b7c..7d5e58f27b 100644 --- a/icecat/dom/base/nsINode.cpp +++ b/icecat/dom/base/nsINode.cpp @@ -1105,7 +1105,11 @@ void nsINode::Normalize() { const nsTextFragment* text = node->GetText(); if (text->GetLength()) { nsIContent* target = node->GetPreviousSibling(); - if (target && target->NodeType() == TEXT_NODE) { + NS_ASSERTION( + (target && target->NodeType() == TEXT_NODE) || hasRemoveListeners, + "Should always have a previous text sibling unless " + "mutation events messed us up"); + if (!hasRemoveListeners || (target && target->NodeType() == TEXT_NODE)) { nsTextNode* t = static_cast(target); if (text->Is2b()) { t->AppendTextForNormalize(text->Get2b(), text->GetLength(), true, @@ -3717,10 +3721,8 @@ already_AddRefed nsINode::CloneAndAdopt( JSAutoRealm ar(cx, wrapper); UpdateReflectorGlobal(cx, wrapper, aError); if (aError.Failed()) { - bool needsRollBack = false; if (wasRegistered) { - needsRollBack = - newDoc->UnregisterActivityObserver(aNode->AsElement()); + newDoc->UnregisterActivityObserver(aNode->AsElement()); } if (hadProperties) { // NOTE: When it fails it removes all properties for the node @@ -3730,7 +3732,7 @@ already_AddRefed nsINode::CloneAndAdopt( } aNode->mNodeInfo.swap(newNodeInfo); aNode->NodeInfoChanged(newDoc); - if (needsRollBack) { + if (wasRegistered) { oldDoc->RegisterActivityObserver(aNode->AsElement()); } return nullptr; diff --git a/icecat/dom/base/nsObjectLoadingContent.cpp b/icecat/dom/base/nsObjectLoadingContent.cpp index 55213f2d74..02792af55d 100644 --- a/icecat/dom/base/nsObjectLoadingContent.cpp +++ b/icecat/dom/base/nsObjectLoadingContent.cpp @@ -214,8 +214,8 @@ already_AddRefed nsObjectLoadingContent::SetupDocShell( } if (!docShell) { - RefPtr loader = std::move(mFrameLoader); - loader->Destroy(); + mFrameLoader->Destroy(); + mFrameLoader = nullptr; return nullptr; } @@ -1284,8 +1284,8 @@ nsresult nsObjectLoadingContent::LoadObject(bool aNotify, bool aForceLoad, nsCOMPtr uriLoader(components::URILoader::Service()); if (NS_WARN_IF(!uriLoader)) { MOZ_ASSERT_UNREACHABLE("Failed to get uriLoader service"); - RefPtr loader = std::move(mFrameLoader); - loader->Destroy(); + mFrameLoader->Destroy(); + mFrameLoader = nullptr; break; } @@ -1591,6 +1591,11 @@ uint32_t nsObjectLoadingContent::GetCapabilities() const { } void nsObjectLoadingContent::Destroy() { + if (mFrameLoader) { + mFrameLoader->Destroy(); + mFrameLoader = nullptr; + } + // Reset state so that if the element is re-appended to tree again (e.g. // adopting to another document), it will reload resource again. UnloadObject(); @@ -1614,8 +1619,8 @@ void nsObjectLoadingContent::Unlink(nsObjectLoadingContent* tmp) { void nsObjectLoadingContent::UnloadObject(bool aResetState) { if (mFrameLoader) { - RefPtr loader = std::move(mFrameLoader); - loader->Destroy(); + mFrameLoader->Destroy(); + mFrameLoader = nullptr; } if (aResetState) { @@ -1713,30 +1718,23 @@ void nsObjectLoadingContent::TriggerInnerFallbackLoads() { } // Do a depth-first traverse of node tree with the current element as root, // looking for non- elements. If we find some then we have an HTML - // fallback for this element - AutoTArray, 4> targets; + // fallback for this element. for (nsIContent* child = el->GetFirstChild(); child;) { // and elements in the fallback need to StartObjectLoad. // Their children should be ignored since they are part of those element's // fallback. - if (child->IsAnyOfHTMLElements(nsGkAtoms::embed, nsGkAtoms::object)) { - targets.AppendElement(child); + if (auto* embed = HTMLEmbedElement::FromNode(child)) { + embed->StartObjectLoad(true, true); + // Skip the children + child = child->GetNextNonChildNode(el); + } else if (auto* object = HTMLObjectElement::FromNode(child)) { + object->StartObjectLoad(true, true); + // Skip the children child = child->GetNextNonChildNode(el); } else { child = child->GetNextNode(el); } } - - for (RefPtr& target : targets) { - if (!target->IsInclusiveDescendantOf(el)) { - continue; - } - if (auto* embed = HTMLEmbedElement::FromNode(target)) { - embed->StartObjectLoad(true, true); - } else if (auto* object = HTMLObjectElement::FromNode(target)) { - object->StartObjectLoad(true, true); - } - } } NS_IMETHODIMP diff --git a/icecat/dom/base/nsPIDOMWindow.h b/icecat/dom/base/nsPIDOMWindow.h index d3e8c4cb20..b3dbb1c450 100644 --- a/icecat/dom/base/nsPIDOMWindow.h +++ b/icecat/dom/base/nsPIDOMWindow.h @@ -366,7 +366,6 @@ class nsPIDOMWindowInner : public mozIDOMWindow { mozilla::Maybe GetClientInfo() const; mozilla::Maybe GetClientState() const; mozilla::Maybe GetController() const; - mozilla::dom::ClientSource* GetClientSource() const; void SetCsp(nsIContentSecurityPolicy* aCsp); void SetPreloadCsp(nsIContentSecurityPolicy* aPreloadCsp); diff --git a/icecat/dom/base/nsRange.cpp b/icecat/dom/base/nsRange.cpp index c9ac5e068e..cbba9dde91 100644 --- a/icecat/dom/base/nsRange.cpp +++ b/icecat/dom/base/nsRange.cpp @@ -2829,6 +2829,20 @@ static nsTextFrame* GetTextFrameForContent(nsIContent* aContent, return nullptr; } + // Try to un-suppress whitespace if needed, but only if we'll be able to flush + // to immediately see the results of the un-suppression. If we can't flush + // here, then calling EnsureFrameForTextNodeIsCreatedAfterFlush would be + // pointless anyway. + if (aFlushLayout) { + const bool frameWillBeUnsuppressed = + presShell->FrameConstructor() + ->EnsureFrameForTextNodeIsCreatedAfterFlush( + static_cast(aContent)); + if (frameWillBeUnsuppressed) { + doc->FlushPendingNotifications(FlushType::Layout); + } + } + nsIFrame* frame = aContent->GetPrimaryFrame(); if (!frame || !frame->IsTextFrame()) { return nullptr; @@ -3569,7 +3583,6 @@ void nsRange::CreateOrUpdateCrossShadowBoundaryRangeIfNeeded( // Nodes at least needs to be in the same document. if (startNode && endNode && startNode->GetComposedDoc() != endNode->GetComposedDoc()) { - ResetCrossShadowBoundaryRange(); return; } @@ -3584,13 +3597,6 @@ void nsRange::CreateOrUpdateCrossShadowBoundaryRangeIfNeeded( return false; } - // We don't allow ranges to span different NAC subtrees (because we don't - // notify when unbinding NAC roots historically). nsRange can already deal - // with the "same anonymous subtree" case. - if (aContainer->IsInNativeAnonymousSubtree()) { - return false; - } - // AbstractRange::GetClosestCommonInclusiveAncestor only supports // Document and Content nodes. return aContainer->IsDocument() || aContainer->IsContent(); diff --git a/icecat/dom/base/nsScreen.cpp b/icecat/dom/base/nsScreen.cpp index c8e39619fd..8f76f268ec 100644 --- a/icecat/dom/base/nsScreen.cpp +++ b/icecat/dom/base/nsScreen.cpp @@ -23,14 +23,8 @@ using namespace mozilla; using namespace mozilla::dom; nsScreen::nsScreen(nsPIDOMWindowInner* aWindow) - : DOMEventTargetHelper(aWindow) {} - -/* static */ already_AddRefed nsScreen::Create( - nsPIDOMWindowInner* aWindow) { - RefPtr screen = new nsScreen(aWindow); - screen->mScreenOrientation = ScreenOrientation::Create(aWindow, screen); - return screen.forget(); -} + : DOMEventTargetHelper(aWindow), + mScreenOrientation(new ScreenOrientation(aWindow, this)) {} nsScreen::~nsScreen() = default; diff --git a/icecat/dom/base/nsScreen.h b/icecat/dom/base/nsScreen.h index 0e345a0449..fbe2404431 100644 --- a/icecat/dom/base/nsScreen.h +++ b/icecat/dom/base/nsScreen.h @@ -21,11 +21,8 @@ enum class RFPTarget : uint64_t; // Script "screen" object class nsScreen : public mozilla::DOMEventTargetHelper { - private: - explicit nsScreen(nsPIDOMWindowInner* aWindow); - public: - static already_AddRefed Create(nsPIDOMWindowInner* aWindow); + explicit nsScreen(nsPIDOMWindowInner* aWindow); NS_DECL_ISUPPORTS_INHERITED NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsScreen, diff --git a/icecat/dom/base/nsWrapperCache.cpp b/icecat/dom/base/nsWrapperCache.cpp index d73b29623d..317e580c6c 100644 --- a/icecat/dom/base/nsWrapperCache.cpp +++ b/icecat/dom/base/nsWrapperCache.cpp @@ -47,13 +47,6 @@ void nsWrapperCache::SetWrapperJSObject(JSObject* aNewWrapper) { } } -void nsWrapperCache::ClearWrapperOnWrapFailure() { - if (IsNurseryWrapper(mWrapper)) { - CycleCollectedJSRuntime::Get()->NurseryWrapperRemovedSlow(this); - } - ClearWrapper(); -} - void nsWrapperCache::ReleaseWrapper(void* aScriptObjectHolder) { // If the behavior here changes in a substantive way, you may need // to update css::Rule::UnlinkDeclarationWrapper as well. diff --git a/icecat/dom/base/nsWrapperCache.h b/icecat/dom/base/nsWrapperCache.h index bf492244ec..7b6d6997ea 100644 --- a/icecat/dom/base/nsWrapperCache.h +++ b/icecat/dom/base/nsWrapperCache.h @@ -170,8 +170,6 @@ class JS_HAZ_ROOTED nsWrapperCache { } } - void ClearWrapperOnWrapFailure(); - /** * Update the wrapper when the object moves between globals. */ diff --git a/icecat/dom/base/nsWrapperCacheInlines.h b/icecat/dom/base/nsWrapperCacheInlines.h index 3e09e9351c..efd0e9a7f5 100644 --- a/icecat/dom/base/nsWrapperCacheInlines.h +++ b/icecat/dom/base/nsWrapperCacheInlines.h @@ -86,18 +86,12 @@ inline void nsWrapperCache::UpdateWrapperForNewGlobal(T* aScriptObjectHolder, SetPreservingWrapper(false); } - JSObject* oldWrapper = mWrapper; SetWrapper(aNewWrapper); if (zoneChanged) { PreserveWrapper(aScriptObjectHolder); } else if (preserving) { SetPreservingWrapper(true); - if (!JS::ObjectIsTenured(mWrapper)) { - // SetWrapper doesn't fire a write barrier; add one so minor GC can - // update mWrapper if the new wrapper is tenured. - JS::HeapObjectPostWriteBarrier(&mWrapper, oldWrapper, mWrapper); - } } } diff --git a/icecat/dom/base/test/gtest/TestMimeType.cpp b/icecat/dom/base/test/gtest/TestMimeType.cpp index b100b60e39..40916130a8 100644 --- a/icecat/dom/base/test/gtest/TestMimeType.cpp +++ b/icecat/dom/base/test/gtest/TestMimeType.cpp @@ -821,8 +821,8 @@ TEST(MimeTypeParsing, contentTypes1) bool parsed = CMimeType::Parse(val, contentType, contentCharset); - ASSERT_TRUE(parsed); - ASSERT_TRUE(contentType.EqualsLiteral("text/plain")); + ASSERT_FALSE(parsed); + ASSERT_TRUE(contentType.EqualsLiteral("")); ASSERT_TRUE(contentCharset.EqualsLiteral("")); } @@ -1074,43 +1074,3 @@ TEST(MimeTypeParsing, contentTypes20) ASSERT_TRUE(contentType.EqualsLiteral("text/plain")); ASSERT_TRUE(contentCharset.EqualsLiteral("")); } - -// U+002F(/) is not a valid HTTP token code point -// https://mimesniff.spec.whatwg.org/#http-token-code-point -TEST(MimeTypeParsing, invalidSubtype1) -{ - const nsAutoCString val("text/json/"); - RefPtr parsed = CMimeType::Parse(val); - ASSERT_TRUE(!parsed); -} - -TEST(MimeTypeParsing, invalidSubtype2) -{ - const nsAutoCString val("text/json/bad"); - RefPtr parsed = CMimeType::Parse(val); - ASSERT_TRUE(!parsed); -} - -TEST(MimeTypeParsing, EmptyParsing) -{ - constexpr nsLiteralCString val(""); - nsCString contentType; - nsCString contentCharset; - bool parsed = CMimeType::Parse(val, contentType, contentCharset); - - ASSERT_FALSE(parsed); - ASSERT_TRUE(contentType.EqualsLiteral("")); - ASSERT_TRUE(contentCharset.EqualsLiteral("")); -} - -TEST(MimeTypeParsing, EmptySubtype) -{ - constexpr nsLiteralCString val("audio/"); - nsCString contentType; - nsCString contentCharset; - bool parsed = CMimeType::Parse(val, contentType, contentCharset); - - ASSERT_FALSE(parsed); - ASSERT_TRUE(contentType.EqualsLiteral("")); - ASSERT_TRUE(contentCharset.EqualsLiteral("")); -} diff --git a/icecat/dom/base/test/jsmodules/mochitest.toml b/icecat/dom/base/test/jsmodules/mochitest.toml index a099c6af0b..99b842ef1d 100644 --- a/icecat/dom/base/test/jsmodules/mochitest.toml +++ b/icecat/dom/base/test/jsmodules/mochitest.toml @@ -1,5 +1,3 @@ [DEFAULT] -["test_bug_2027541.html"] - ["test_nested_modules.html"] diff --git a/icecat/dom/base/test/jsmodules/test_bug_2027541.html b/icecat/dom/base/test/jsmodules/test_bug_2027541.html deleted file mode 100644 index 2dfbe7c687..0000000000 --- a/icecat/dom/base/test/jsmodules/test_bug_2027541.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - Call import.meta.resolve after iframe removal - - - - - diff --git a/icecat/dom/bindings/BindingUtils.cpp b/icecat/dom/bindings/BindingUtils.cpp index 5196a199c8..aa44af3c45 100644 --- a/icecat/dom/bindings/BindingUtils.cpp +++ b/icecat/dom/bindings/BindingUtils.cpp @@ -14,7 +14,6 @@ #include "mozilla/DebugOnly.h" #include "mozilla/Encoding.h" #include "mozilla/FloatingPoint.h" -#include "mozilla/Maybe.h" #include "mozilla/Preferences.h" #include "mozilla/ScopeExit.h" #include "mozilla/StaticPrefs_dom.h" @@ -259,6 +258,39 @@ nsTArray& TErrorResult::CreateErrorMessageHelper( return message->mArgs; } +template +void TErrorResult::SerializeMessage( + IPC::MessageWriter* aWriter) const { + using namespace IPC; + AssertInOwningThread(); + MOZ_ASSERT(mUnionState == HasMessage); + MOZ_ASSERT(mExtra.mMessage); + WriteParam(aWriter, mExtra.mMessage->mArgs); + WriteParam(aWriter, mExtra.mMessage->mErrorNumber); +} + +template +bool TErrorResult::DeserializeMessage( + IPC::MessageReader* aReader) { + using namespace IPC; + AssertInOwningThread(); + auto readMessage = MakeUnique(); + if (!ReadParam(aReader, &readMessage->mArgs) || + !ReadParam(aReader, &readMessage->mErrorNumber)) { + return false; + } + if (!readMessage->HasCorrectNumberOfArguments()) { + return false; + } + + MOZ_ASSERT(mUnionState == HasNothing); + InitMessage(readMessage.release()); +#ifdef DEBUG + mUnionState = HasMessage; +#endif // DEBUG + return true; +} + template void TErrorResult::SetPendingExceptionWithMessage( JSContext* aCx, const char* context) { @@ -368,106 +400,34 @@ struct TErrorResult::DOMExceptionInfo { }; template -void TErrorResult::SerializeErrorResult( +void TErrorResult::SerializeDOMExceptionInfo( IPC::MessageWriter* aWriter) const { using namespace IPC; AssertInOwningThread(); - - // It should be the case that mMightHaveUnreportedJSException can only be - // true when we're expecting a JS exception. We cannot send such messages - // over the IPC channel since there is no sane way of transferring the JS - // value over to the other side. Callers should never do that. - MOZ_ASSERT(!mMightHaveUnreportedJSException); - if (IsJSException() || IsJSContextException()) { - MOZ_CRASH( - "Cannot serialize an ErrorResult representing a Javascript exception"); - } - - WriteParam(aWriter, mResult); - if (IsErrorWithMessage()) { - MOZ_ASSERT(mResult == NS_ERROR_INTERNAL_ERRORRESULT_TYPEERROR || - mResult == NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR); - MOZ_ASSERT(mUnionState == HasMessage); - MOZ_ASSERT(mExtra.mMessage); - - WriteParam(aWriter, mExtra.mMessage->mArgs); - WriteParam(aWriter, mExtra.mMessage->mErrorNumber); - } else if (IsDOMException()) { - MOZ_ASSERT(mResult == NS_ERROR_INTERNAL_ERRORRESULT_DOMEXCEPTION); - MOZ_ASSERT(mUnionState == HasDOMExceptionInfo); - MOZ_ASSERT(mExtra.mDOMExceptionInfo); - - WriteParam(aWriter, mExtra.mDOMExceptionInfo->mMessage); - WriteParam(aWriter, mExtra.mDOMExceptionInfo->mRv); - } else { - MOZ_ASSERT(mUnionState == HasNothing); - } + MOZ_ASSERT(mUnionState == HasDOMExceptionInfo); + MOZ_ASSERT(mExtra.mDOMExceptionInfo); + WriteParam(aWriter, mExtra.mDOMExceptionInfo->mMessage); + WriteParam(aWriter, mExtra.mDOMExceptionInfo->mRv); } template -bool TErrorResult::DeserializeErrorResult( +bool TErrorResult::DeserializeDOMExceptionInfo( IPC::MessageReader* aReader) { using namespace IPC; AssertInOwningThread(); - - nsresult result; - if (!ReadParam(aReader, &result)) { + nsCString message; + nsresult rv; + if (!ReadParam(aReader, &message) || !ReadParam(aReader, &rv)) { return false; } - switch (result) { - case NS_ERROR_INTERNAL_ERRORRESULT_JS_EXCEPTION: - case NS_ERROR_INTERNAL_ERRORRESULT_EXCEPTION_ON_JSCONTEXT: - // JS exceptions can not be serialized. - return false; - - case NS_ERROR_INTERNAL_ERRORRESULT_TYPEERROR: - case NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR: { - nsTArray args; - dom::ErrNum errorNumber; - if (!ReadParam(aReader, &args) || !ReadParam(aReader, &errorNumber)) { - return false; - } - - if (GetErrorArgCount(errorNumber) != args.Length()) { - return false; - } - - for (nsCString& arg : args) { - if (Utf8ValidUpTo(arg) != arg.Length()) { - return false; - } - } - - ClearUnionData(); - - nsTArray& messageArgsArray = - CreateErrorMessageHelper(errorNumber, result); - messageArgsArray = std::move(args); - MOZ_ASSERT(mExtra.mMessage->HasCorrectNumberOfArguments(), - "validated earlier"); + MOZ_ASSERT(mUnionState == HasNothing); + MOZ_ASSERT(IsDOMException()); + InitDOMExceptionInfo(new DOMExceptionInfo(rv, message)); #ifdef DEBUG - mUnionState = HasMessage; -#endif - return true; - } - - case NS_ERROR_INTERNAL_ERRORRESULT_DOMEXCEPTION: { - nsCString message; - nsresult rv; - if (!ReadParam(aReader, &message) || !ReadParam(aReader, &rv)) { - return false; - } - - ThrowDOMException(rv, message); - return true; - } - - default: - ClearUnionData(); - AssignErrorCode(result); - return true; - } + mUnionState = HasDOMExceptionInfo; +#endif // DEBUG + return true; } template @@ -2473,7 +2433,8 @@ void UpdateReflectorGlobal(JSContext* aCx, JS::Handle aObjArg, } // We've set up |newobj|, so we make it own the native by setting its reserved - // slot and nulling out the reserved slot of |obj|. + // slot and nulling out the reserved slot of |obj|. Update the wrapper cache + // to keep everything consistent in case GC moves newobj. // // NB: It's important to do this _after_ copying the properties to // propertyHolder. Otherwise, an object with |foo.x === foo| will @@ -2482,37 +2443,18 @@ void UpdateReflectorGlobal(JSContext* aCx, JS::Handle aObjArg, JS::SetReservedSlot(newobj, DOM_OBJECT_SLOT, JS::GetReservedSlot(aObj, DOM_OBJECT_SLOT)); JS::SetReservedSlot(aObj, DOM_OBJECT_SLOT, JS::PrivateValue(nullptr)); - size_t nslots = JSCLASS_RESERVED_SLOTS(JS::GetClass(aObj)); - for (size_t slot = DOM_INSTANCE_RESERVED_SLOTS; slot < nslots; ++slot) { - const JS::Value& slotValue = JS::GetReservedSlot(aObj, slot); - if (slotValue.isObject()) { - JSObject* slotObj = &slotValue.toObject(); - if (IsObservableArrayProxy(slotObj)) { - JS::SetReservedSlot(newobj, slot, slotValue); - JS::SetReservedSlot(aObj, slot, JS::UndefinedValue()); - } - } - } - nsWrapperCache* cache = nullptr; CallQueryInterface(native, &cache); - - // For preserved wrappers the store buffer keeps mWrapper consistent across - // the transplant. For non-preserved wrappers clear mWrapper so that - // JSObjectsTenured doesn't follow a stale pointer if nursery GC fires. - bool preserving = cache->PreservingWrapper(); - if (preserving) { - cache->UpdateWrapperForNewGlobal(native, newobj); - } else { - cache->ClearWrapper(); - } + cache->UpdateWrapperForNewGlobal(native, newobj); aObj = xpc::TransplantObjectRetainingXrayExpandos(aCx, aObj, newobj); if (!aObj) { MOZ_CRASH(); } - if (!preserving || aObj != newobj) { + // Update the wrapper cache again if transplanting didn't use newobj but + // returned some other object. + if (aObj != newobj) { MOZ_ASSERT(UnwrapDOMObjectToISupports(aObj) == native); cache->UpdateWrapperForNewGlobal(native, aObj); } @@ -3573,7 +3515,6 @@ static bool GetBackingObject(JSContext* aCx, JS::Handle aObj, ? aObj : js::UncheckedUnwrap(aObj, /* stopAtWindowProxy = */ false); - MOZ_ASSERT(aSlotIndex < JSCLASS_RESERVED_SLOTS(JS::GetClass(reflector))); // Retrieve the backing object from the reserved slot on the maplike/setlike // object. If it doesn't exist yet, create it. @@ -3859,7 +3800,7 @@ bool HTMLConstructor(JSContext* aCx, unsigned aArgc, JS::Value* aVp, // Technically, per spec, a window always has a document. In Gecko, a // sufficiently torn-down window might not, so check for that case. We're // going to need a document to create an element. - RefPtr doc = window->GetExtantDoc(); + Document* doc = window->GetExtantDoc(); if (!doc) { rv.Throw(NS_ERROR_UNEXPECTED); return false; @@ -3902,7 +3843,7 @@ bool HTMLConstructor(JSContext* aCx, unsigned aArgc, JS::Value* aVp, } // Step 3. - RefPtr definition = + CustomElementDefinition* definition = registry->LookupCustomElementDefinition(aCx, newTarget); if (!definition) { rv.ThrowTypeError(); @@ -4002,21 +3943,6 @@ bool HTMLConstructor(JSContext* aCx, unsigned aArgc, JS::Value* aVp, // Steps 7 and 8. JS::Rooted desiredProto(aCx); - - // Check which construction path we're taking before running any JS. - // This determines whether we need AutoConstructionDepth protection. - nsTArray>& constructionStack = definition->mConstructionStack; - const bool isDirectConstruction = constructionStack.IsEmpty(); - - // For direct construction (not upgrade), create AutoConstructionDepth before - // GetDesiredProto. This ensures mConstructionDepth is incremented before any - // re-entrant JS can run via Proxy traps, preventing desynchronization with - // mPrefixStack which may be pushed by nsContentUtils::NewXULOrHTMLElement. - mozilla::Maybe autoDepth; - if (isDirectConstruction) { - autoDepth.emplace(definition); - } - if (!GetDesiredProto(aCx, args, aProtoId, aCreator, &desiredProto)) { return false; } @@ -4027,12 +3953,14 @@ bool HTMLConstructor(JSContext* aCx, unsigned aArgc, JS::Value* aVp, // one branch and steps 9-12 on another branch, then common up the "return // element" work. RefPtr element; - if (isDirectConstruction) { + nsTArray>& constructionStack = definition->mConstructionStack; + if (constructionStack.IsEmpty()) { // Step 8. // Now we go to construct an element. We want to do this in global's // realm, not caller realm (the normal constructor behavior), // just in case those elements create JS things. JSAutoRealm ar(aCx, global.Get()); + AutoConstructionDepth acd(definition); RefPtr nodeInfo = doc->NodeInfoManager()->GetNodeInfo( definition->mLocalName, definition->mPrefixStack.LastElement(), ns, diff --git a/icecat/dom/bindings/Codegen.py b/icecat/dom/bindings/Codegen.py index 435ab7f85b..9e5e5e7181 100644 --- a/icecat/dom/bindings/Codegen.py +++ b/icecat/dom/bindings/Codegen.py @@ -4683,7 +4683,7 @@ class CGWrapWithCacheMethod(CGAbstractMethod): failureCode = dedent( """ aCache->ReleaseWrapper(aObject); - aCache->ClearWrapperOnWrapFailure(); + aCache->ClearWrapper(); return false; """ ) @@ -23213,9 +23213,7 @@ class CGIterableMethodGenerator(CGGeneric): CGGeneric.__init__(self, createIterator) -def getObservableArrayBackingObject( - descriptor, attr, objName="obj", errorReturn="return false;\n" -): +def getObservableArrayBackingObject(descriptor, attr, errorReturn="return false;\n"): """ Generate code to get/create a JS backing list for an observableArray attribute from the declaration slot. @@ -23230,7 +23228,7 @@ def getObservableArrayBackingObject( """ JS::Rooted backingObj(cx); bool created = false; - if (!GetObservableArrayBackingObject(cx, ${objName}, ${slot}, + if (!GetObservableArrayBackingObject(cx, obj, ${slot}, &backingObj, &created, ${namespace}::ObservableArrayProxyHandler::getInstance(), self)) { $*{errorReturn} @@ -23239,9 +23237,8 @@ def getObservableArrayBackingObject( PreserveWrapper(self); } """, - objName=objName, - slot=memberReservedSlot(attr, descriptor), namespace=toBindingNamespace(MakeNativeName(attr.identifier.name)), + slot=memberReservedSlot(attr, descriptor), errorReturn=errorReturn, selfType=descriptor.nativeType, ) @@ -23353,18 +23350,12 @@ class CGObservableArrayProxyHandler_callback(ClassMethod): $*{convertType} $*{preCallback} - const JS::Value& val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT); - if (MOZ_LIKELY(!val.isUndefined())) { - auto* interface = static_cast<${ifaceType}*>(val.toPrivate()); - MOZ_ASSERT(interface); - - ErrorResult rv; - MOZ_KnownLive(interface)->${methodName}(${callbackArgs}); - if (rv.MaybeSetPendingException(cx)) { - return false; - } - } + JS::Value val = js::GetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_DOM_INTERFACE_SLOT); + auto* interface = static_cast<${ifaceType}*>(val.toPrivate()); + MOZ_ASSERT(interface); + ErrorResult rv; + MOZ_KnownLive(interface)->${methodName}(${callbackArgs}); $*{postCallback} """, preConversion=self.preConversion(), @@ -23408,7 +23399,7 @@ class CGObservableArrayProxyHandler_OnDeleteItem( def postCallback(self): return dedent( """ - return true; + return !rv.MaybeSetPendingException(cx); """ ) @@ -23473,6 +23464,10 @@ class CGObservableArrayProxyHandler_SetIndexedValue( def postCallback(self): return dedent( """ + if (rv.MaybeSetPendingException(cx)) { + return false; + } + if (!JS_SetElement(aCx, aBackingList, aIndex, aValue)) { return false; } @@ -23535,9 +23530,7 @@ class CGObservableArraySetterGenerator(CGGeneric): def __init__(self, descriptor, attr): assert attr.isAttr() assert attr.type.isObservableArray() - getBackingObject = getObservableArrayBackingObject( - descriptor, attr, objName="unwrappedObj" - ) + getBackingObject = getObservableArrayBackingObject(descriptor, attr) setElement = dedent( """ if (!JS_SetElement(cx, backingObj, i, val)) { @@ -23564,22 +23557,15 @@ class CGObservableArraySetterGenerator(CGGeneric): return false; } - JS::Rooted unwrappedObj(cx, js::UncheckedUnwrap(obj, /* stopAtWindowProxy = */ false)); - MOZ_ASSERT(IsDOMObject(unwrappedObj)); - { - JSAutoRealm ar(cx, unwrappedObj); + ${getBackingObject} + const ObservableArrayProxyHandler* handler = GetObservableArrayProxyHandler(backingObj); + if (!handler->SetLength(cx, backingObj, 0)) { + return false; + } - $*{getBackingObject} - - const ObservableArrayProxyHandler* handler = GetObservableArrayProxyHandler(backingObj); - if (!handler->SetLength(cx, backingObj, 0)) { - return false; - } - - JS::Rooted val(cx); - for (size_t i = 0; i < arg0.Length(); i++) { - $*{conversion} - } + JS::Rooted val(cx); + for (size_t i = 0; i < arg0.Length(); i++) { + $*{conversion} } """, conversion=conversion, @@ -23625,7 +23611,7 @@ class CGObservableArrayHelperFunctionGenerator(CGHelperFunctionGenerator): getObservableArrayBackingObject( descriptor, attr, - errorReturn=dedent( + dedent( """ aRv.Throw(NS_ERROR_UNEXPECTED); return%s; diff --git a/icecat/dom/bindings/ErrorIPCUtils.h b/icecat/dom/bindings/ErrorIPCUtils.h index fa71b259e1..064d851503 100644 --- a/icecat/dom/bindings/ErrorIPCUtils.h +++ b/icecat/dom/bindings/ErrorIPCUtils.h @@ -7,8 +7,11 @@ #ifndef IPC_ErrorIPCUtils_h #define IPC_ErrorIPCUtils_h +#include + #include "ipc/EnumSerializer.h" #include "ipc/IPCMessageUtils.h" +#include "mozilla/Assertions.h" #include "mozilla/ErrorResult.h" namespace IPC { @@ -21,18 +24,64 @@ struct ParamTraits template <> struct ParamTraits { - static void Write(MessageWriter* aWriter, - const mozilla::ErrorResult& aParam) { - aParam.SerializeErrorResult(aWriter); + typedef mozilla::ErrorResult paramType; + + static void Write(MessageWriter* aWriter, const paramType& aParam) { + // It should be the case that mMightHaveUnreportedJSException can only be + // true when we're expecting a JS exception. We cannot send such messages + // over the IPC channel since there is no sane way of transferring the JS + // value over to the other side. Callers should never do that. + MOZ_ASSERT_IF(aParam.IsJSException(), + aParam.mMightHaveUnreportedJSException); + if (aParam.IsJSException() +#ifdef DEBUG + || aParam.mMightHaveUnreportedJSException +#endif + ) { + MOZ_CRASH( + "Cannot encode an ErrorResult representing a Javascript exception"); + } + + WriteParam(aWriter, aParam.mResult); + WriteParam(aWriter, aParam.IsErrorWithMessage()); + WriteParam(aWriter, aParam.IsDOMException()); + if (aParam.IsErrorWithMessage()) { + aParam.SerializeMessage(aWriter); + } else if (aParam.IsDOMException()) { + aParam.SerializeDOMExceptionInfo(aWriter); + } } - static void Write(MessageWriter* aWriter, mozilla::ErrorResult&& aParam) { - aParam.SerializeErrorResult(aWriter); + static void Write(MessageWriter* aWriter, paramType&& aParam) { + Write(aWriter, static_cast(aParam)); aParam.SuppressException(); } - static bool Read(MessageReader* aReader, mozilla::ErrorResult* aResult) { - return aResult->DeserializeErrorResult(aReader); + static bool Read(MessageReader* aReader, paramType* aResult) { + paramType readValue; + if (!ReadParam(aReader, &readValue.mResult)) { + return false; + } + bool hasMessage = false; + if (!ReadParam(aReader, &hasMessage)) { + return false; + } + bool hasDOMExceptionInfo = false; + if (!ReadParam(aReader, &hasDOMExceptionInfo)) { + return false; + } + if (hasMessage && hasDOMExceptionInfo) { + // Shouldn't have both! + return false; + } + if (hasMessage && !readValue.DeserializeMessage(aReader)) { + return false; + } else if (hasDOMExceptionInfo && + !readValue.DeserializeDOMExceptionInfo(aReader)) { + return false; + } + *aResult = std::move(readValue); + return true; } }; @@ -41,11 +90,14 @@ struct ParamTraits { typedef mozilla::CopyableErrorResult paramType; static void Write(MessageWriter* aWriter, const paramType& aParam) { - aParam.SerializeErrorResult(aWriter); + ParamTraits::Write(aWriter, aParam); } static bool Read(MessageReader* aReader, paramType* aResult) { - return aResult->DeserializeErrorResult(aReader); + // We can't cast *aResult to ErrorResult&, so cheat and just cast + // to ErrorResult*. + return ParamTraits::Read( + aReader, reinterpret_cast(aResult)); } }; diff --git a/icecat/dom/bindings/ErrorResult.h b/icecat/dom/bindings/ErrorResult.h index b66df64225..76ff54c3bc 100644 --- a/icecat/dom/bindings/ErrorResult.h +++ b/icecat/dom/bindings/ErrorResult.h @@ -215,7 +215,6 @@ class TErrorResult { // informative message and calling the relevant Throw*Error. void MOZ_MUST_RETURN_FROM_CALLER_IF_THIS_IS_ARG Throw(nsresult rv) { MOZ_ASSERT(NS_FAILED(rv), "Please don't try throwing success"); - ClearUnionData(); AssignErrorCode(rv); } @@ -402,7 +401,7 @@ class TErrorResult { // Check whether the TErrorResult says to just throw whatever is on // the JSContext already. - bool IsJSContextException() const { + bool IsJSContextException() { return ErrorCode() == NS_ERROR_INTERNAL_ERRORRESULT_EXCEPTION_ON_JSCONTEXT; } @@ -432,10 +431,7 @@ class TErrorResult { // Backwards-compat to make conversion simpler. We don't call // Throw() here because people can easily pass success codes to // this. This operator is deprecated and ideally shouldn't be used. - void operator=(nsresult rv) { - ClearUnionData(); - AssignErrorCode(rv); - } + void operator=(nsresult rv) { AssignErrorCode(rv); } bool Failed() const { return NS_FAILED(mResult); } @@ -485,10 +481,11 @@ class TErrorResult { friend struct IPC::ParamTraits; friend struct IPC::ParamTraits; - friend struct IPC::ParamTraits; + void SerializeMessage(IPC::MessageWriter* aWriter) const; + bool DeserializeMessage(IPC::MessageReader* aReader); - void SerializeErrorResult(IPC::MessageWriter* aWriter) const; - bool DeserializeErrorResult(IPC::MessageReader* aReader); + void SerializeDOMExceptionInfo(IPC::MessageWriter* aWriter) const; + bool DeserializeDOMExceptionInfo(IPC::MessageReader* aReader); // Helper method that creates a new Message for this TErrorResult, // and returns the arguments array from that Message. @@ -546,7 +543,6 @@ class TErrorResult { } void AssignErrorCode(nsresult aRv) { - MOZ_ASSERT(mUnionState == HasNothing); MOZ_ASSERT(aRv != NS_ERROR_INTERNAL_ERRORRESULT_TYPEERROR, "Use ThrowTypeError()"); MOZ_ASSERT(aRv != NS_ERROR_INTERNAL_ERRORRESULT_RANGEERROR, diff --git a/icecat/dom/bindings/ObservableArrayProxyHandler.cpp b/icecat/dom/bindings/ObservableArrayProxyHandler.cpp index fde26b72c8..931950a492 100644 --- a/icecat/dom/bindings/ObservableArrayProxyHandler.cpp +++ b/icecat/dom/bindings/ObservableArrayProxyHandler.cpp @@ -277,9 +277,6 @@ bool ObservableArrayProxyHandler::GetBackingListObject( if (NS_WARN_IF(!newBackingListObj)) { return false; } - if (NS_WARN_IF(!JS_SetPrototype(aCx, newBackingListObj, nullptr))) { - return false; - } slotValue = JS::ObjectValue(*newBackingListObj); js::SetProxyReservedSlot(aProxy, OBSERVABLE_ARRAY_BACKING_LIST_OBJECT_SLOT, slotValue); diff --git a/icecat/dom/cache/Manager.cpp b/icecat/dom/cache/Manager.cpp index da60b111a8..c3b598f299 100644 --- a/icecat/dom/cache/Manager.cpp +++ b/icecat/dom/cache/Manager.cpp @@ -658,8 +658,7 @@ class Manager::CacheMatchAction final : public Manager::BaseAction { // If we entered shutdown on the main thread while we were doing IO, // bail out now. - if (IsCanceled() || - AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { + if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { if (stream) { stream->Close(); } @@ -735,8 +734,7 @@ class Manager::CacheMatchAllAction final : public Manager::BaseAction { // If we entered shutdown on the main thread while we were doing IO, // bail out now. - if (IsCanceled() || - AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { + if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { if (stream) { stream->Close(); } @@ -1291,8 +1289,7 @@ class Manager::CacheKeysAction final : public Manager::BaseAction { // If we entered shutdown on the main thread while we were doing IO, // bail out now. - if (IsCanceled() || - AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { + if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { if (stream) { stream->Close(); } @@ -1371,8 +1368,7 @@ class Manager::StorageMatchAction final : public Manager::BaseAction { // If we entered shutdown on the main thread while we were doing IO, // bail out now. - if (IsCanceled() || - AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { + if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownQM)) { if (stream) { stream->Close(); } diff --git a/icecat/dom/cache/StreamList.cpp b/icecat/dom/cache/StreamList.cpp index 278e75627b..00dd3b585f 100644 --- a/icecat/dom/cache/StreamList.cpp +++ b/icecat/dom/cache/StreamList.cpp @@ -30,6 +30,7 @@ StreamList::StreamList(SafeRefPtr aManager, mStreamControl(nullptr), mActivated(false) { MOZ_DIAGNOSTIC_ASSERT(mManager); + mContext->AddActivity(*this); } Manager& StreamList::GetManager() const { @@ -72,9 +73,6 @@ void StreamList::Activate(CacheId aCacheId) { MOZ_DIAGNOSTIC_ASSERT(mCacheId == INVALID_CACHE_ID); mActivated = true; mCacheId = aCacheId; - - mContext->AddActivity(*this); - mManager->AddRefCacheId(mCacheId); mManager->AddStreamList(*this); @@ -136,7 +134,6 @@ void StreamList::NoteClosedAll() { void StreamList::CloseAll() { NS_ASSERT_OWNINGTHREAD(StreamList); - SafeRefPtr kungFuDeathGrip = SafeRefPtrFromThis(); if (mStreamControl && mStreamControl->CanSend()) { // CloseAll will kick off everything needed for shutdown. @@ -195,13 +192,13 @@ StreamList::~StreamList() { NS_ASSERT_OWNINGTHREAD(StreamList); MOZ_DIAGNOSTIC_ASSERT(!mStreamControl); if (mActivated) { - mContext->RemoveActivity(*this); mManager->RemoveStreamList(*this); for (uint32_t i = 0; i < mList.Length(); ++i) { mManager->ReleaseBodyId(mList[i].mId); } mManager->ReleaseCacheId(mCacheId); } + mContext->RemoveActivity(*this); } } // namespace mozilla::dom::cache diff --git a/icecat/dom/canvas/CanvasRenderingContext2D.cpp b/icecat/dom/canvas/CanvasRenderingContext2D.cpp index ba683f9ce4..8901e170f7 100644 --- a/icecat/dom/canvas/CanvasRenderingContext2D.cpp +++ b/icecat/dom/canvas/CanvasRenderingContext2D.cpp @@ -880,8 +880,6 @@ NS_IMPL_CYCLE_COLLECTING_RELEASE(CanvasRenderingContext2D) NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS(CanvasRenderingContext2D) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(CanvasRenderingContext2D) - tmp->RemoveShutdownObserver(); - tmp->OnShutdown(); // Make sure we remove ourselves from the list of demotable contexts (raw // pointers), since we're logically destructed at this point. NS_IMPL_CYCLE_COLLECTION_UNLINK(mCanvasElement) @@ -2890,12 +2888,8 @@ void CanvasRenderingContext2D::GetLetterSpacing(nsACString& aLetterSpacing) { void CanvasRenderingContext2D::SetLetterSpacing( const nsACString& aLetterSpacing) { - nsAutoCString normalized; - Maybe value = ParseSpacing(aLetterSpacing, normalized); - if (value) { - CurrentState().letterSpacing = *value; - CurrentState().letterSpacingStr = normalized; - } + ParseSpacing(aLetterSpacing, &CurrentState().letterSpacing, + CurrentState().letterSpacingStr); } void CanvasRenderingContext2D::GetWordSpacing(nsACString& aWordSpacing) { @@ -2907,12 +2901,8 @@ void CanvasRenderingContext2D::GetWordSpacing(nsACString& aWordSpacing) { } void CanvasRenderingContext2D::SetWordSpacing(const nsACString& aWordSpacing) { - nsAutoCString normalized; - Maybe value = ParseSpacing(aWordSpacing, normalized); - if (value) { - CurrentState().wordSpacing = *value; - CurrentState().wordSpacingStr = normalized; - } + ParseSpacing(aWordSpacing, &CurrentState().wordSpacing, + CurrentState().wordSpacingStr); } static GeckoFontMetrics GetFontMetricsFromCanvas(void* aContext) { @@ -2943,8 +2933,9 @@ static GeckoFontMetrics GetFontMetricsFromCanvas(void* aContext) { 0.0f}; } -Maybe CanvasRenderingContext2D::ParseSpacing(const nsACString& aSpacing, - nsACString& aNormalized) { +void CanvasRenderingContext2D::ParseSpacing(const nsACString& aSpacing, + float* aValue, + nsACString& aNormalized) { // Normalize whitespace in the string before trying to parse it, as we want // to store it in normalized form, and this allows a simple check against the // 'normal' keyword, which is not accepted. @@ -2952,28 +2943,28 @@ Maybe CanvasRenderingContext2D::ParseSpacing(const nsACString& aSpacing, normalized.CompressWhitespace(true, true); ToLowerCase(normalized); if (normalized.EqualsLiteral("normal")) { - return Nothing(); + return; } float value; if (!Servo_ParseLengthWithoutStyleContext(&normalized, &value, GetFontMetricsFromCanvas, this)) { if (!GetPresShell()) { - return Nothing(); + return; } // This will parse aSpacing as a ... RefPtr style = ResolveStyleForProperty(eCSSProperty_letter_spacing, aSpacing); if (!style) { - return Nothing(); + return; } // ...but only is allowed according to the canvas spec. if (!style->StyleText()->mLetterSpacing.IsLength()) { - return Nothing(); + return; } value = style->StyleText()->mLetterSpacing.AsLength().ToCSSPixels(); } aNormalized = normalized; - return Some(value); + *aValue = value; } class CanvasUserSpaceMetrics final : public UserSpaceMetricsWithSize { @@ -3443,11 +3434,6 @@ void CanvasRenderingContext2D::StrokeImpl(const gfx::Path& aPath) { return; } - const bool needBounds = NeedToCalculateBounds(); - if (!IsTargetValid()) { - return; - } - const ContextState* state = &CurrentState(); StrokeOptions strokeOptions(state->lineWidth, CanvasToGfx(state->lineJoin), CanvasToGfx(state->lineCap), state->miterLimit, @@ -3455,6 +3441,10 @@ void CanvasRenderingContext2D::StrokeImpl(const gfx::Path& aPath) { state->dashOffset); state = nullptr; + const bool needBounds = NeedToCalculateBounds(); + if (!IsTargetValid()) { + return; + } gfx::Rect bounds; if (needBounds) { bounds = aPath.GetStrokedBounds(strokeOptions, mTarget->GetTransform()); @@ -4705,7 +4695,6 @@ struct MOZ_STACK_CLASS CanvasBidiProcessor final } mCtx->EnsureTarget(); - const bool needBounds = mCtx->NeedToCalculateBounds(); if (!mCtx->IsTargetValid()) { return; } @@ -4720,7 +4709,7 @@ struct MOZ_STACK_CLASS CanvasBidiProcessor final const ContextState& state = mCtx->CurrentState(); gfx::Rect bounds; - if (needBounds) { + if (mCtx->NeedToCalculateBounds()) { bounds = ToRect(mBoundingBox); bounds.MoveBy(mPt / mAppUnitsPerDevPixel); if (style == Style::STROKE) { @@ -4868,9 +4857,6 @@ UniquePtr CanvasRenderingContext2D::DrawOrMeasureText( canvasStyle = nsComputedDOMStyle::GetComputedStyle(mCanvasElement); } - // This is only needed to know if we can know the drawing bounding box easily. - const bool doCalculateBounds = NeedToCalculateBounds(); - // Get text direction, either from the property or inherited from context. const ContextState& state = CurrentState(); bool isRTL; @@ -4896,6 +4882,8 @@ UniquePtr CanvasRenderingContext2D::DrawOrMeasureText( MOZ_CRASH("unknown direction!"); } + // This is only needed to know if we can know the drawing bounding box easily. + const bool doCalculateBounds = NeedToCalculateBounds(); if (presShell && presShell->IsDestroying()) { aError = NS_ERROR_FAILURE; return nullptr; @@ -5175,54 +5163,50 @@ gfxFontGroup* CanvasRenderingContext2D::GetCurrentFontStyle() { nsPresContext* presContext = presShell ? presShell->GetPresContext() : nullptr; - { - // If we have a cached fontGroup, check that it is valid for the current - // prescontext; if not, we need to discard and re-create it. - RefPtr& fontGroup = CurrentState().fontGroup; - if (fontGroup) { - if (fontGroup->GetPresContext() != presContext) { - fontGroup = nullptr; + // If we have a cached fontGroup, check that it is valid for the current + // prescontext; if not, we need to discard and re-create it. + RefPtr& fontGroup = CurrentState().fontGroup; + if (fontGroup) { + if (fontGroup->GetPresContext() != presContext) { + fontGroup = nullptr; + } + } + + if (!fontGroup) { + ErrorResult err; + constexpr auto kDefaultFontStyle = "10px sans-serif"_ns; + const float kDefaultFontSize = 10.0; + // If the font has already been set, we're re-creating the fontGroup + // and should re-use the existing font attribute; if not, we initialize + // it to the canvas default. + const nsCString& currentFont = CurrentState().font; + bool fontUpdated = SetFontInternal( + currentFont.IsEmpty() ? kDefaultFontStyle : currentFont, err); + if (err.Failed() || !fontUpdated) { + err.SuppressException(); + // XXX Should we get a default lang from the prescontext or something? + nsAtom* language = nsGkAtoms::x_western; + bool explicitLanguage = false; + gfxFontStyle style; + style.size = kDefaultFontSize; + int32_t perDevPixel, perCSSPixel; + GetAppUnitsValues(&perDevPixel, &perCSSPixel); + gfxFloat devToCssSize = gfxFloat(perDevPixel) / gfxFloat(perCSSPixel); + const auto* sans = + Servo_FontFamily_Generic(StyleGenericFontFamily::SansSerif); + fontGroup = new gfxFontGroup( + presContext, sans->families, &style, language, explicitLanguage, + presContext ? presContext->GetTextPerfMetrics() : nullptr, nullptr, + devToCssSize, StyleFontVariantEmoji::Normal); + if (fontGroup) { + CurrentState().font = kDefaultFontStyle; } else { - return fontGroup; + NS_ERROR("Default canvas font is invalid"); } } } - ErrorResult err; - constexpr auto kDefaultFontStyle = "10px sans-serif"_ns; - const float kDefaultFontSize = 10.0; - // If the font has already been set, we're re-creating the fontGroup - // and should re-use the existing font attribute; if not, we initialize - // it to the canvas default. - nsAutoCString currentFont(CurrentState().font); - if (currentFont.IsEmpty()) { - currentFont = kDefaultFontStyle; - } - bool fontUpdated = SetFontInternal(currentFont, err); - if (err.Failed() || !fontUpdated) { - err.SuppressException(); - // XXX Should we get a default lang from the prescontext or something? - nsAtom* language = nsGkAtoms::x_western; - bool explicitLanguage = false; - gfxFontStyle style; - style.size = kDefaultFontSize; - int32_t perDevPixel, perCSSPixel; - GetAppUnitsValues(&perDevPixel, &perCSSPixel); - gfxFloat devToCssSize = gfxFloat(perDevPixel) / gfxFloat(perCSSPixel); - const auto* sans = - Servo_FontFamily_Generic(StyleGenericFontFamily::SansSerif); - CurrentState().fontGroup = new gfxFontGroup( - presContext, sans->families, &style, language, explicitLanguage, - presContext ? presContext->GetTextPerfMetrics() : nullptr, nullptr, - devToCssSize, StyleFontVariantEmoji::Normal); - if (CurrentState().fontGroup) { - CurrentState().font = kDefaultFontStyle; - } else { - NS_ERROR("Default canvas font is invalid"); - } - } - - return CurrentState().fontGroup; + return fontGroup; } // @@ -5727,7 +5711,7 @@ void CanvasRenderingContext2D::DrawImage(const CanvasImageSource& aImage, HTMLVideoElement* video = HTMLVideoElement::FromNodeOrNull(element); if (video && mBufferProvider->IsAccelerated() && mTarget->IsRecording() && - !(NeedToApplyFilter() || NeedToDrawShadow())) { + !(!NeedToApplyFilter() && NeedToDrawShadow())) { res = nsLayoutUtils::SurfaceFromElement( video, sfeFlags, mTarget, /* aOptimizeSourceSurface */ false); surfaceDescriptor = MaybeGetSurfaceDescriptorForRemoteCanvas(res); diff --git a/icecat/dom/canvas/CanvasRenderingContext2D.h b/icecat/dom/canvas/CanvasRenderingContext2D.h index 555a52659c..490ed2ef52 100644 --- a/icecat/dom/canvas/CanvasRenderingContext2D.h +++ b/icecat/dom/canvas/CanvasRenderingContext2D.h @@ -613,13 +613,11 @@ class CanvasRenderingContext2D : public nsICanvasRenderingContextInternal, protected: /** * Helper to parse a value for the letterSpacing or wordSpacing attribute. - * If the string can be parsed, returns Some(value) and sets aNormalized to - * the normalized form of the specified string. If it cannot be parsed as a - * spacing value, returns Nothing, and aNormalized is untouched. - * Note that ParseSpacing may flush style (to resolve font-relative units). + * If successful, returns the result in aValue, and the whitespace-normalized + * value string in aNormalized; if unsuccessful these are left untouched. */ - mozilla::Maybe ParseSpacing(const nsACString& aSpacing, - nsACString& aNormalized); + void ParseSpacing(const nsACString& aSpacing, float* aValue, + nsACString& aNormalized); already_AddRefed ResolveStyleForProperty( nsCSSPropertyID aProperty, const nsACString& aValue); @@ -1002,14 +1000,10 @@ class CanvasRenderingContext2D : public nsICanvasRenderingContextInternal, * last call to UpdateFilter and now. */ const gfx::FilterDescription& EnsureUpdatedFilter() { - bool isWriteOnly = IsWriteOnly() || - (mCanvasElement && mCanvasElement->IsWriteOnly()) || - (mOffscreenCanvas && mOffscreenCanvas->IsWriteOnly()); + bool isWriteOnly = mCanvasElement && mCanvasElement->IsWriteOnly(); if (CurrentState().filterSourceGraphicTainted != isWriteOnly) { - // Do not flush here: this runs inside drawing operations that hold raw - // references to mPath/state, and a flush can run script that resets the - // context, leading to UAF. Flush already happened at SetFilter() time. - UpdateFilter(/* aFlushIfNeeded = */ false); + UpdateFilter(/* aFlushIfNeeded = */ true); + EnsureTarget(); } MOZ_ASSERT(CurrentState().filterSourceGraphicTainted == isWriteOnly); return CurrentState().filter; diff --git a/icecat/dom/canvas/ClientWebGLContext.cpp b/icecat/dom/canvas/ClientWebGLContext.cpp index 594d4a8d05..341608daa1 100644 --- a/icecat/dom/canvas/ClientWebGLContext.cpp +++ b/icecat/dom/canvas/ClientWebGLContext.cpp @@ -198,18 +198,7 @@ ClientWebGLContext::ClientWebGLContext(const bool webgl2) : mIsWebGL2(webgl2), mExtLoseContext(new ClientWebGLExtensionLoseContext(*this)) {} -static inline void SafeReleaseNotLostData(std::shared_ptr& notLost) { - if (notLost) { - const auto keepAlive = std::move(notLost); - keepAlive->extensions = {}; - keepAlive->state = {}; - } -} - -ClientWebGLContext::~ClientWebGLContext() { - RemovePostRefreshObserver(); - SafeReleaseNotLostData(mNotLost); -} +ClientWebGLContext::~ClientWebGLContext() { RemovePostRefreshObserver(); } void ClientWebGLContext::JsWarning(const std::string& utf8) const { nsIGlobalObject* global = nullptr; @@ -4522,14 +4511,6 @@ void ClientWebGLContext::TexImage(uint8_t funcDims, GLenum imageTarget, std::string{"gpuProcessTextureId works only in GPU process."}); } } break; - case layers::SurfaceDescriptor::TSurfaceDescriptorDXGIYCbCr: { - MOZ_ASSERT(desc->image); - keepAliveImage = desc->image; - } break; - case layers::SurfaceDescriptor::TSurfaceDescriptorMacIOSurface: { - MOZ_ASSERT(desc->image); - keepAliveImage = desc->image; - } break; case layers::SurfaceDescriptor::TSurfaceDescriptorGPUVideo: { const auto& inProcess = mNotLost->inProcess; MOZ_ASSERT(desc->image); @@ -7023,7 +7004,11 @@ void ImplCycleCollectionTraverse( } void ImplCycleCollectionUnlink(std::shared_ptr& field) { - SafeReleaseNotLostData(field); + if (!field) return; + const auto keepAlive = field; + keepAlive->extensions = {}; + keepAlive->state = {}; + field = nullptr; } // ----------------------------------------------------- diff --git a/icecat/dom/canvas/DrawTargetWebgl.cpp b/icecat/dom/canvas/DrawTargetWebgl.cpp index 1df4c51ca6..56688ed23e 100644 --- a/icecat/dom/canvas/DrawTargetWebgl.cpp +++ b/icecat/dom/canvas/DrawTargetWebgl.cpp @@ -21,6 +21,7 @@ #include "mozilla/gfx/Swizzle.h" #include "mozilla/layers/ImageDataSerializer.h" #include "mozilla/layers/RemoteTextureMap.h" +#include "mozilla/widget/ScreenManager.h" #include "skia/include/core/SkPixmap.h" #include "nsContentUtils.h" #include "nsIMemoryReporter.h" @@ -816,7 +817,7 @@ bool DrawTargetWebgl::GenerateComplexClipMask() { return !!data; } -Maybe DrawTargetWebgl::ComputeSimpleClipRect() const { +bool DrawTargetWebgl::SetSimpleClipRect() { // Determine whether the clipping rectangle is simple enough to accelerate. // Check if there is a device space clip rectangle available from the Skia // target. @@ -828,7 +829,9 @@ Maybe DrawTargetWebgl::ComputeSimpleClipRect() const { if (!clip->IsEmpty() && clip->Contains(GetRect())) { clip = Some(GetRect()); } - return Some(Rect(*clip)); + mSharedContext->SetClipRect(*clip); + mSharedContext->SetNoClipMask(); + return true; } // There was no pixel-aligned clip rect available, so check the clip stack to @@ -839,22 +842,15 @@ Maybe DrawTargetWebgl::ComputeSimpleClipRect() const { // complex. if (clipStack.mPath || !clipStack.mTransform.PreservesAxisAlignedRectangles()) { - return Nothing(); + return false; } // Transform the rect and intersect it with the current clip. rect = clipStack.mTransform.TransformBounds(clipStack.mRect).Intersect(rect); } - return Some(rect); -} - -bool DrawTargetWebgl::SetSimpleClipRect() { - if (Maybe rect = ComputeSimpleClipRect()) { - mSharedContext->SetClipRect(*rect); - mSharedContext->SetNoClipMask(); - return true; - } - return false; + mSharedContext->SetClipRect(rect); + mSharedContext->SetNoClipMask(); + return true; } // Installs the Skia clip rectangle, if applicable, onto the shared WebGL @@ -878,21 +874,6 @@ bool DrawTargetWebgl::PrepareContext(bool aClipped) { return mSharedContext->SetTarget(this); } -// Whether clipping may be necessary for the operation. This tries to avoid -// generating a complex clip mask in case the current target is not active -// or not using WebGL. If there is only a simple clip mask and its bounds -// encompass the viewport, then no clipping is required. -bool DrawTargetWebgl::ShouldClip() { - if (mSharedContext->IsCurrentTarget(this) && !mRefreshClipState) { - return mSharedContext->HasClipMask() || - !mSharedContext->mClipAARect.Contains(Rect(GetRect())); - } - if (Maybe rect = ComputeSimpleClipRect()) { - return !rect->Contains(Rect(GetRect())); - } - return true; -} - bool SharedContextWebgl::IsContextLost() const { return !mWebgl || mWebgl->IsContextLost(); } @@ -924,12 +905,29 @@ bool DrawTargetWebgl::CanCreate(const IntSize& aSize, SurfaceFormat aFormat) { return false; } - // Maximum pref allows 2 different options: - // <= 0 means unlimited size, + // Maximum pref allows 3 different options: + // 0 means unlimited size, // > 0 means use value as an absolute threshold, + // < 0 means use the number of screen pixels as a threshold. int32_t maxSize = StaticPrefs::gfx_canvas_accelerated_max_size(); - if (maxSize > 0 && std::max(aSize.width, aSize.height) > maxSize) { - return false; + if (maxSize > 0) { + if (std::max(aSize.width, aSize.height) > maxSize) { + return false; + } + } else if (maxSize < 0) { + // Default to historical mobile screen size of 980x480, like FishIEtank. + // In addition, allow acceleration up to this size even if the screen is + // smaller. A lot content expects this size to work well. See Bug 999841 + static const int32_t kScreenPixels = 980 * 480; + + if (RefPtr screen = + widget::ScreenManager::GetSingleton().GetPrimaryScreen()) { + LayoutDeviceIntSize screenSize = screen->GetRect().Size(); + if (aSize.width * aSize.height > + std::max(screenSize.width * screenSize.height, kScreenPixels)) { + return false; + } + } } return true; @@ -1647,7 +1645,9 @@ void DrawTargetWebgl::ClearRect(const Rect& aRect) { // If the clear rectangle encompasses the entire viewport and is not clipped, // then mark the target as entirely clear. - if (containsViewport && !ShouldClip()) { + if (containsViewport && mSharedContext->IsCurrentTarget(this) && + !mSharedContext->HasClipMask() && + mSharedContext->mClipAARect.Contains(Rect(GetRect()))) { mIsClear = true; } } @@ -2038,7 +2038,6 @@ bool SharedContextWebgl::UploadSurface(DataSourceSurface* aData, if (srcRect.IsEmpty()) { return true; } - Maybe map; if (aData) { // If the source rect could not possibly overlap the surface, then it is // effectively empty with nothing to upload. @@ -2059,15 +2058,15 @@ bool SharedContextWebgl::UploadSurface(DataSourceSurface* aData, // The surface needs to be uploaded to its backing texture either to // initialize or update the texture handle contents. Map the data // contents of the surface so it can be read. - map.emplace(aData, DataSourceSurface::READ); - if (!map->IsMapped()) { + DataSourceSurface::ScopedMap map(aData, DataSourceSurface::READ); + if (!map.IsMapped()) { return false; } - int32_t stride = map->GetStride(); + int32_t stride = map.GetStride(); // Get the data pointer range considering the sampling rect offset and // size. Span range( - map->GetData() + srcRect.y * size_t(stride) + srcRect.x * bpp, + map.GetData() + srcRect.y * size_t(stride) + srcRect.x * bpp, std::max(srcRect.height - 1, 0) * size_t(stride) + srcRect.width * bpp); texDesc.cpuData = Some(range); // If the stride happens to be 4 byte aligned, assume that is the diff --git a/icecat/dom/canvas/DrawTargetWebgl.h b/icecat/dom/canvas/DrawTargetWebgl.h index d1b1cf6cb1..0ae45c39b9 100644 --- a/icecat/dom/canvas/DrawTargetWebgl.h +++ b/icecat/dom/canvas/DrawTargetWebgl.h @@ -617,11 +617,9 @@ class DrawTargetWebgl : public DrawTarget, public SupportsWeakPtr { return mSharedContext->SupportsPattern(aPattern); } - Maybe ComputeSimpleClipRect() const; bool SetSimpleClipRect(); bool GenerateComplexClipMask(); bool PrepareContext(bool aClipped = true); - bool ShouldClip(); void DrawRectFallback(const Rect& aRect, const Pattern& aPattern, const DrawOptions& aOptions, diff --git a/icecat/dom/canvas/ImageData.cpp b/icecat/dom/canvas/ImageData.cpp index 25622c5f46..3c5f79fc75 100644 --- a/icecat/dom/canvas/ImageData.cpp +++ b/icecat/dom/canvas/ImageData.cpp @@ -146,29 +146,10 @@ already_AddRefed ImageData::ReadStructuredClone( !JS_ReadTypedArray(aReader, &dataArray)) { return nullptr; } + MOZ_ASSERT(dataArray.isObject()); - JS::Rooted dataObj(aCx, &dataArray.toObject()); - RootedSpiderMonkeyInterface data(aCx); - if (!data.Init(dataObj)) { - return nullptr; - } - - Maybe maybeLength = data.ProcessData( - [&](const Span& aData, JS::AutoCheckCannotGC&& nogc) { - return Some(aData.Length()); - }); - if (maybeLength.isNothing()) { - return nullptr; - } - - CheckedInt calculatedLength = - CheckedInt(width) * height * 4; - if (!calculatedLength.isValid() || - size_t(calculatedLength.value()) != maybeLength.value()) { - return nullptr; - } - - RefPtr imageData = new ImageData(aGlobal, width, height, dataObj); + JS::Rooted arrayObj(aCx, &dataArray.toObject()); + RefPtr imageData = new ImageData(aGlobal, width, height, arrayObj); return imageData.forget(); } diff --git a/icecat/dom/canvas/TexUnpackBlob.cpp b/icecat/dom/canvas/TexUnpackBlob.cpp index 5c10a22611..ba494c5fda 100644 --- a/icecat/dom/canvas/TexUnpackBlob.cpp +++ b/icecat/dom/canvas/TexUnpackBlob.cpp @@ -391,8 +391,8 @@ static bool HasColorAndAlpha(const WebGLTexelFormat format) { } bool TexUnpackBlob::ConvertIfNeeded( - const WebGLContext* const webgl, const size_t rowLength, - const size_t rowCount, WebGLTexelFormat srcFormat, + const WebGLContext* const webgl, const uint32_t rowLength, + const uint32_t rowCount, WebGLTexelFormat srcFormat, const uint8_t* const srcBegin, const ptrdiff_t srcStride, WebGLTexelFormat dstFormat, const ptrdiff_t dstStride, const uint8_t** const out_begin, @@ -469,7 +469,7 @@ bool TexUnpackBlob::ConvertIfNeeded( //// - const auto dstTotalBytes = CheckedInt(rowCount) * dstStride; + const auto dstTotalBytes = CheckedUint32(rowCount) * dstStride; if (!dstTotalBytes.isValid()) { webgl->ErrorOutOfMemory("Calculation failed."); return false; @@ -580,7 +580,7 @@ bool TexUnpackBytes::TexOrSubImage(bool isSubImage, bool needsRespec, const auto& unpacking = unpackingRes.inspect(); const auto stride = unpacking.metrics.bytesPerRowStride; // clang-format off - if (!ConvertIfNeeded(webgl, unpacking.metrics.usedPixelsPerRow, + if (!ConvertIfNeeded(webgl, unpacking.state.rowLength, unpacking.metrics.totalRows, format, uploadPtr, AutoAssertCast(stride), format, AutoAssertCast(stride), &uploadPtr, &tempBuffer)) { @@ -855,14 +855,9 @@ bool TexUnpackImage::TexOrSubImage(bool isSubImage, bool needsRespec, : dom::PredefinedColorSpace::Srgb; bool sameColorSpace = (srcColorSpace == dstColorSpace); - Maybe reason; - if (!webgl->IsUploadableSdType(sd)) { - reason = Some(std::string("Unsupported surface descriptor type")); - } else { - reason = BlitPreventReason( + const auto reason = BlitPreventReason( level, {xOffset, yOffset, zOffset}, dui->internalFormat, pi, mDesc, webgl->mOptionalRenderableFormatBits, sameColorSpace); - } if (reason) { webgl->GeneratePerfWarning( "Failed to hit GPU-copy fast-path." @@ -1114,8 +1109,6 @@ bool TexUnpackSurface::TexOrSubImage(bool isSubImage, bool needsRespec, //// - const auto surfSize = surf->GetSize(); - WebGLTexelFormat srcFormat; uint8_t srcBPP; if (!GetFormatForSurf(surf, &srcFormat, &srcBPP)) { @@ -1140,7 +1133,7 @@ bool TexUnpackSurface::TexOrSubImage(bool isSubImage, bool needsRespec, const auto dstFormat = FormatForPackingInfo(dstPI); const size_t dstBpp = BytesPerPixel(dstPI); - const size_t dstUsedBytesPerRow = dstBpp * surfSize.width; + const size_t dstUsedBytesPerRow = dstBpp * surf->GetSize().width; size_t dstStride = dstFormat == srcFormat ? srcStride // Try To match : dstUsedBytesPerRow; @@ -1166,18 +1159,12 @@ bool TexUnpackSurface::TexOrSubImage(bool isSubImage, bool needsRespec, const auto& dstUnpacking = dstUnpackingRes.inspect(); MOZ_ASSERT(dstUnpacking.metrics.bytesPerRowStride == dstStride); - if (uint32_t(surfSize.width) < dstUnpacking.metrics.usedPixelsPerRow || - uint32_t(surfSize.height) < dstUnpacking.metrics.totalRows) { - gfxCriticalError() << "Source surface size too small for upload."; - return false; - } - // - const uint8_t* dstBegin = srcBegin; UniqueBuffer tempBuffer; // clang-format off - if (!ConvertIfNeeded(webgl, surfSize.width, surfSize.height, + if (!ConvertIfNeeded(webgl, surf->GetSize().width, surf->GetSize().height, srcFormat, srcBegin, AutoAssertCast(srcStride), dstFormat, AutoAssertCast(dstUnpacking.metrics.bytesPerRowStride), &dstBegin, &tempBuffer)) { diff --git a/icecat/dom/canvas/TexUnpackBlob.h b/icecat/dom/canvas/TexUnpackBlob.h index e4ebdf8772..8fc7ee63b5 100644 --- a/icecat/dom/canvas/TexUnpackBlob.h +++ b/icecat/dom/canvas/TexUnpackBlob.h @@ -65,8 +65,8 @@ class TexUnpackBlob { virtual ~TexUnpackBlob() = default; protected: - bool ConvertIfNeeded(const WebGLContext*, const size_t rowLength, - const size_t rowCount, WebGLTexelFormat srcFormat, + bool ConvertIfNeeded(const WebGLContext*, const uint32_t rowLength, + const uint32_t rowCount, WebGLTexelFormat srcFormat, const uint8_t* const srcBegin, const ptrdiff_t srcStride, WebGLTexelFormat dstFormat, const ptrdiff_t dstStride, diff --git a/icecat/dom/canvas/WebGLContext.cpp b/icecat/dom/canvas/WebGLContext.cpp index 85ea87a08c..23e1d34013 100644 --- a/icecat/dom/canvas/WebGLContext.cpp +++ b/icecat/dom/canvas/WebGLContext.cpp @@ -630,6 +630,50 @@ RefPtr WebGLContext::Create(HostWebGLContext* host, // - + const auto UploadableSdTypes = [&]() { + webgl::EnumMask types; + types[layers::SurfaceDescriptor::TSurfaceDescriptorBuffer] = true; + // Only support canvas surface interchange if using AC2D. This guarantees + // that WebGL and AC2D commands are sequenced and processed on the same + // thread, so that there is no mal-ordering between AC2D and WebGL + // processing. We can flush out AC2D commands to produce a surface in time + // for WebGL to use without requiring any blocking to occur. + types[layers::SurfaceDescriptor::TSurfaceDescriptorCanvasSurface] = + gfx::gfxVars::UseAcceleratedCanvas2D(); + // This is conditional on not using the Compositor thread because we may + // need to synchronize with the RDD process over the PVideoBridge protocol + // to wait for the texture to be available in the compositor process. We + // cannot block on the Compositor thread, so in that configuration, we would + // prefer to do the readback from the RDD which is guaranteed to work, and + // only block the owning thread for WebGL. + const bool offCompositorThread = gfx::gfxVars::UseCanvasRenderThread() || + !gfx::gfxVars::SupportsThreadsafeGL(); + types[layers::SurfaceDescriptor::TSurfaceDescriptorGPUVideo] = + offCompositorThread; + // Similarly to the PVideoBridge protocol, we may need to synchronize with + // the content process over the PCompositorManager protocol to wait for the + // shared surface to be available in the compositor process, and we cannot + // block on the Compositor thread. + types[layers::SurfaceDescriptor::TSurfaceDescriptorExternalImage] = + offCompositorThread; + if (webgl->gl->IsANGLE()) { + types[layers::SurfaceDescriptor::TSurfaceDescriptorD3D10] = true; + types[layers::SurfaceDescriptor::TSurfaceDescriptorDXGIYCbCr] = true; + } + if (kIsMacOS) { + types[layers::SurfaceDescriptor::TSurfaceDescriptorMacIOSurface] = true; + } + if (kIsAndroid) { + types[layers::SurfaceDescriptor::TSurfaceTextureDescriptor] = true; + } + if (kIsLinux) { + types[layers::SurfaceDescriptor::TSurfaceDescriptorDMABuf] = true; + } + return types; + }; + + // - + constexpr GLenum SHADER_TYPES[] = { LOCAL_GL_VERTEX_SHADER, LOCAL_GL_FRAGMENT_SHADER, @@ -665,7 +709,7 @@ RefPtr WebGLContext::Create(HostWebGLContext* host, out->options = webgl->mOptions; out->limits = *webgl->mLimits; - out->uploadableSdTypes = webgl->mUploadableSdTypes; + out->uploadableSdTypes = UploadableSdTypes(); out->vendor = webgl->gl->Vendor(); out->optionalRenderableFormatBits = webgl->mOptionalRenderableFormatBits; @@ -767,58 +811,6 @@ void WebGLContext::FinishInit() { gl->ResetSyncCallCount("WebGLContext Initialization"); LoseLruContextIfLimitExceeded(); - - InitUploadableSdTypes(); -} - -void WebGLContext::InitUploadableSdTypes() { - webgl::EnumMask types; - types[layers::SurfaceDescriptor::TSurfaceDescriptorBuffer] = true; - // Only support canvas surface interchange if using AC2D. This guarantees - // that WebGL and AC2D commands are sequenced and processed on the same - // thread, so that there is no mal-ordering between AC2D and WebGL - // processing. We can flush out AC2D commands to produce a surface in time - // for WebGL to use without requiring any blocking to occur. - types[layers::SurfaceDescriptor::TSurfaceDescriptorCanvasSurface] = - gfx::gfxVars::UseAcceleratedCanvas2D(); - // This is conditional on not using the Compositor thread because we may - // need to synchronize with the RDD process over the PVideoBridge protocol - // to wait for the texture to be available in the compositor process. We - // cannot block on the Compositor thread, so in that configuration, we would - // prefer to do the readback from the RDD which is guaranteed to work, and - // only block the owning thread for WebGL. - const bool offCompositorThread = gfx::gfxVars::UseCanvasRenderThread() || - !gfx::gfxVars::SupportsThreadsafeGL(); - types[layers::SurfaceDescriptor::TSurfaceDescriptorGPUVideo] = - offCompositorThread; - // Similarly to the PVideoBridge protocol, we may need to synchronize with - // the content process over the PCompositorManager protocol to wait for the - // shared surface to be available in the compositor process, and we cannot - // block on the Compositor thread. - types[layers::SurfaceDescriptor::TSurfaceDescriptorExternalImage] = - offCompositorThread; - if (gl->IsANGLE()) { - types[layers::SurfaceDescriptor::TSurfaceDescriptorD3D10] = true; - types[layers::SurfaceDescriptor::TSurfaceDescriptorDXGIYCbCr] = true; - } - if (kIsMacOS) { - types[layers::SurfaceDescriptor::TSurfaceDescriptorMacIOSurface] = true; - } - if (kIsAndroid) { - types[layers::SurfaceDescriptor::TSurfaceTextureDescriptor] = true; - } - if (kIsLinux) { - types[layers::SurfaceDescriptor::TSurfaceDescriptorDMABuf] = true; - } - - mUploadableSdTypes = types; -} - -bool WebGLContext::IsUploadableSdType( - const layers::SurfaceDescriptor& sd) const { - // If the WebGLContext is remote, then validate that the SD is an allowed - // type. - return !bool(mHost) || mUploadableSdTypes[sd.type()]; } void WebGLContext::SetCompositableHost( @@ -2795,23 +2787,6 @@ webgl::ExplicitPixelPackingState::ForUseWith( const Maybe bytesPerRowStrideOverride) { auto state = stateOrZero; - // Enforce the GLES alignmentInTypeElems invariant. ElemsPerRowStride below - // assumes a in {1,2,4,8}. Callers at IPC entry points validate this but - // alignmentInTypeElems is deserialized from IPC, so guard it here too. - switch (state.alignmentInTypeElems) { - case 1: - case 2: - case 4: - case 8: - break; - default: { - const auto text = nsPrintfCString( - "PACK/UNPACK_ALIGNMENT must be one of [1,2,4,8], was %u.", - state.alignmentInTypeElems); - return Err(mozilla::ToString(text)); - } - } - if (!IsTexTarget3D(target)) { state.skipImages = 0; state.imageHeight = 0; @@ -2910,16 +2885,13 @@ webgl::ExplicitPixelPackingState::ForUseWith( auto metrics = Metrics{}; metrics.usedSize = subrectSize; - metrics.usedPixelsPerRow = usedPixelsPerRow.value(); metrics.bytesPerPixel = BytesPerPixel(pi); // - const auto elemsPerRowStride = ElemsPerRowStride(); const auto bytesPerRowStride = pii.bytesPerElement * elemsPerRowStride; - const auto maxBytesPerRow = StaticPrefs::webgl_max_bytes_per_row(); - if (!bytesPerRowStride.isValid() || - (maxBytesPerRow > 0 && bytesPerRowStride.value() > maxBytesPerRow)) { + if (!bytesPerRowStride.isValid()) { return Err("ROW_LENGTH or width too large for packing."); } metrics.bytesPerRowStride = bytesPerRowStride.value(); diff --git a/icecat/dom/canvas/WebGLContext.h b/icecat/dom/canvas/WebGLContext.h index 132ea2a381..3c8f712b08 100644 --- a/icecat/dom/canvas/WebGLContext.h +++ b/icecat/dom/canvas/WebGLContext.h @@ -292,7 +292,6 @@ class WebGLContext : public VRefCounted, public SupportsWeakPtr { WebGLContextOptions mOptions; const uint32_t mPrincipalKey; Maybe mLimits; - webgl::EnumMask mUploadableSdTypes; const uint32_t mMaxVertIdsPerDraw = StaticPrefs::webgl_max_vert_ids_per_draw(); @@ -341,7 +340,6 @@ class WebGLContext : public VRefCounted, public SupportsWeakPtr { webgl::OptionalRenderableFormatBits mOptionalRenderableFormatBits = webgl::OptionalRenderableFormatBits{0}; void FinishInit(); - void InitUploadableSdTypes(); protected: WebGLContext(HostWebGLContext*, const webgl::InitContextDesc&); @@ -997,8 +995,6 @@ class WebGLContext : public VRefCounted, public SupportsWeakPtr { bool IsFormatValidForFB(TexInternalFormat format) const; - bool IsUploadableSdType(const layers::SurfaceDescriptor& sd) const; - protected: // ------------------------------------------------------------------------- // WebGL extensions (implemented in WebGLContextExtensions.cpp) diff --git a/icecat/dom/canvas/WebGLContextGL.cpp b/icecat/dom/canvas/WebGLContextGL.cpp index 683ac288fc..6c365b706e 100644 --- a/icecat/dom/canvas/WebGLContextGL.cpp +++ b/icecat/dom/canvas/WebGLContextGL.cpp @@ -1133,18 +1133,6 @@ webgl::ReadPixelsResult WebGLContext::ReadPixelsImpl( ////// - // Reject invalid pack alignment. - switch (desc.packState.alignmentInTypeElems) { - case 1: - case 2: - case 4: - case 8: - break; // all good - default: - ErrorInvalidValue("pack alignment must be 1, 2, 4, or 8."); - return {}; - } - const auto& srcOffset = desc.srcOffset; const auto& size = desc.size; diff --git a/icecat/dom/canvas/WebGLShaderValidator.cpp b/icecat/dom/canvas/WebGLShaderValidator.cpp index 6d902cfc42..2011f1b80a 100644 --- a/icecat/dom/canvas/WebGLShaderValidator.cpp +++ b/icecat/dom/canvas/WebGLShaderValidator.cpp @@ -487,28 +487,23 @@ bool ShaderValidatorResults::CanLinkTo(const ShaderValidatorResults& vert, size_t ShaderValidatorResults::SizeOfIncludingThis( const MallocSizeOf fnSizeOf) const { auto ret = fnSizeOf(this); + ret += mInfoLog.size(); + ret += mObjectCode.size(); - // std::string heap allocations are not measured here because: - // 1. Small String Optimization (SSO) means data() may point to inline - // storage within the std::string object (already counted in - // fnSizeOf(this)) - // 2. There's no standard way to distinguish SSO from heap-allocated strings - // 3. Calling fnSizeOf on a pointer to inline storage is inappropriate - - if (!mAttributes.empty()) { - ret += fnSizeOf(mAttributes.data()); + for (const auto& cur : mAttributes) { + ret += fnSizeOf(&cur); } - if (!mInterfaceBlocks.empty()) { - ret += fnSizeOf(mInterfaceBlocks.data()); + for (const auto& cur : mInterfaceBlocks) { + ret += fnSizeOf(&cur); } - if (!mOutputVariables.empty()) { - ret += fnSizeOf(mOutputVariables.data()); + for (const auto& cur : mOutputVariables) { + ret += fnSizeOf(&cur); } - if (!mUniforms.empty()) { - ret += fnSizeOf(mUniforms.data()); + for (const auto& cur : mUniforms) { + ret += fnSizeOf(&cur); } - if (!mVaryings.empty()) { - ret += fnSizeOf(mVaryings.data()); + for (const auto& cur : mVaryings) { + ret += fnSizeOf(&cur); } return ret; diff --git a/icecat/dom/canvas/WebGLTypes.h b/icecat/dom/canvas/WebGLTypes.h index 6ffbe01df5..3cc1ab162f 100644 --- a/icecat/dom/canvas/WebGLTypes.h +++ b/icecat/dom/canvas/WebGLTypes.h @@ -1142,9 +1142,6 @@ struct ExplicitPixelPackingState final { // ...aligned to ALIGNMENT. size_t bytesPerRowStride = 0; - // SKIP_PIXELS+size.x - size_t usedPixelsPerRow = 0; - // structuredSrcSize.y, otherwise IMAGE_HEIGHT*(SKIP_IMAGES+size.z) size_t totalRows = 0; diff --git a/icecat/dom/clients/manager/ClientChannelHelper.cpp b/icecat/dom/clients/manager/ClientChannelHelper.cpp index 41c723e170..f36cbb5319 100644 --- a/icecat/dom/clients/manager/ClientChannelHelper.cpp +++ b/icecat/dom/clients/manager/ClientChannelHelper.cpp @@ -9,9 +9,6 @@ #include "ClientManager.h" #include "ClientSource.h" #include "MainThreadUtils.h" -#include "mozilla/AntiTrackingUtils.h" -#include "mozilla/StaticPrefs_privacy.h" -#include "mozilla/StoragePrincipalHelper.h" #include "mozilla/dom/ClientsBinding.h" #include "mozilla/dom/ServiceWorkerDescriptor.h" #include "mozilla/ipc/BackgroundUtils.h" @@ -136,13 +133,6 @@ class ClientChannelHelper : public nsIInterfaceRequestor, // If it's a cross-origin redirect then we discard the old reserved client // and create a new one. else { - // The partition-key, and in particular the foreign bit, can change on a - // cross-origin redirect so it is essential to update the anti-tracking - // info for the channel. This will happen in nsHttpChannel::AsyncOpen but - // that happens strictly after now, whereas we are sampling the principal - // now. - AntiTrackingUtils::UpdateAntiTrackingInfoForChannel(aNewChannel); - nsCOMPtr foreignPartitionedPrincipal; rv = StoragePrincipalHelper::GetPrincipal( aNewChannel, diff --git a/icecat/dom/clients/manager/ClientManagerChild.cpp b/icecat/dom/clients/manager/ClientManagerChild.cpp index 515a9e3024..744758f48d 100644 --- a/icecat/dom/clients/manager/ClientManagerChild.cpp +++ b/icecat/dom/clients/manager/ClientManagerChild.cpp @@ -55,9 +55,8 @@ bool ClientManagerChild::DeallocPClientNavigateOpChild( mozilla::ipc::IPCResult ClientManagerChild::RecvPClientNavigateOpConstructor( PClientNavigateOpChild* aActor, const ClientNavigateOpConstructorArgs& aArgs) { - RefPtr proxy = aActor->GetLifecycleProxy(); - auto* actor = static_cast(aActor); - actor->Init(aArgs, proxy); + auto actor = static_cast(aActor); + actor->Init(aArgs); return IPC_OK(); } diff --git a/icecat/dom/clients/manager/ClientNavigateOpChild.cpp b/icecat/dom/clients/manager/ClientNavigateOpChild.cpp index 4fdd066cc1..5ea27f8b14 100644 --- a/icecat/dom/clients/manager/ClientNavigateOpChild.cpp +++ b/icecat/dom/clients/manager/ClientNavigateOpChild.cpp @@ -152,8 +152,7 @@ NS_IMPL_ISUPPORTS(NavigateLoadListener, nsIWebProgressListener, } // anonymous namespace RefPtr ClientNavigateOpChild::DoNavigate( - const ClientNavigateOpConstructorArgs& aArgs, - mozilla::ipc::ActorLifecycleProxy* aProxy) { + const ClientNavigateOpConstructorArgs& aArgs) { nsCOMPtr window; // Navigating the target client window will result in the original @@ -279,12 +278,6 @@ RefPtr ClientNavigateOpChild::DoNavigate( return ClientOpPromise::CreateAndReject(result, __func__); } - if (!aProxy->Get() || !CanSend()) { - CopyableErrorResult result; - result.ThrowInvalidStateError("Unknown Client"); - return ClientOpPromise::CreateAndReject(result, __func__); - } - RefPtr promise = new ClientOpPromise::Private(__func__); @@ -312,12 +305,8 @@ void ClientNavigateOpChild::ActorDestroy(ActorDestroyReason aReason) { mPromiseRequestHolder.DisconnectIfExists(); } -void ClientNavigateOpChild::Init(const ClientNavigateOpConstructorArgs& aArgs, - mozilla::ipc::ActorLifecycleProxy* aProxy) { - RefPtr promise = DoNavigate(aArgs, aProxy); - if (!aProxy->Get() || !CanSend()) { - return; - } +void ClientNavigateOpChild::Init(const ClientNavigateOpConstructorArgs& aArgs) { + RefPtr promise = DoNavigate(aArgs); // Normally we get the event target from the window in DoNavigate(). If a // failure occurred, though, we may need to fall back to the current thread diff --git a/icecat/dom/clients/manager/ClientNavigateOpChild.h b/icecat/dom/clients/manager/ClientNavigateOpChild.h index d9c3dfefac..9f48748b9a 100644 --- a/icecat/dom/clients/manager/ClientNavigateOpChild.h +++ b/icecat/dom/clients/manager/ClientNavigateOpChild.h @@ -16,8 +16,7 @@ class ClientNavigateOpChild final : public PClientNavigateOpChild { nsCOMPtr mSerialEventTarget; [[nodiscard]] RefPtr DoNavigate( - const ClientNavigateOpConstructorArgs& aArgs, - mozilla::ipc::ActorLifecycleProxy* aProxy); + const ClientNavigateOpConstructorArgs& aArgs); // PClientNavigateOpChild interface void ActorDestroy(ActorDestroyReason aReason) override; @@ -26,8 +25,7 @@ class ClientNavigateOpChild final : public PClientNavigateOpChild { ClientNavigateOpChild() = default; ~ClientNavigateOpChild() = default; - void Init(const ClientNavigateOpConstructorArgs& aArgs, - mozilla::ipc::ActorLifecycleProxy* aProxy); + void Init(const ClientNavigateOpConstructorArgs& aArgs); }; } // namespace mozilla::dom diff --git a/icecat/dom/clients/manager/ClientSource.cpp b/icecat/dom/clients/manager/ClientSource.cpp index 973a5c0fa1..080eb72ccb 100644 --- a/icecat/dom/clients/manager/ClientSource.cpp +++ b/icecat/dom/clients/manager/ClientSource.cpp @@ -520,12 +520,11 @@ RefPtr ClientSource::Focus(const ClientFocusArgs& aArgs) { return ClientOpPromise::CreateAndReject(rv, __func__); } nsCOMPtr outer; - nsCOMPtr inner = GetInnerWindow(); - nsIDocShell* docshell = nullptr; + nsPIDOMWindowInner* inner = GetInnerWindow(); if (inner) { outer = inner->GetOuterWindow(); } else { - docshell = GetDocShell(); + nsIDocShell* docshell = GetDocShell(); if (docshell) { outer = docshell->GetWindow(); } @@ -538,48 +537,9 @@ RefPtr ClientSource::Focus(const ClientFocusArgs& aArgs) { } MOZ_ASSERT(NS_IsMainThread()); - - // Inlined from `ClientSource::SnapshotWindowState()`: - // Should not be necessary after bug 543435. Clean this up in bug 2025284. - if (docshell) { - // Force the creation of the initial document if it does not yet exist. - if (!docshell->GetDocument()) { - CopyableErrorResult rv; - rv.ThrowInvalidStateError("No document available."); - return ClientOpPromise::CreateAndReject(rv, __func__); - } - inner = GetInnerWindow(); - } - nsFocusManager::FocusWindow(outer, aArgs.callerType()); - Result state = - [&]() -> Result { - if (!inner) { - // Inlined from `ClientSource::SnapshotWindowState()`: - return ClientState(ClientWindowState(VisibilityState::Hidden, TimeStamp(), - StorageAccess::eDeny, false)); - } - if (inner->GetClientSource() == this) { - // The pointer comparison assumes that an inner window - // cannot gain a new ClientSource other than this same - // `ClientSource` having moved from a docshell owner to an - // inner window owner gained via `outer`, so we don't need to worry - // about a newly-allocated ClientSource occupying the same - // memory as the one pointed to by `this`. That is, in the case - // of the pointers being unequal, `inner->GetClientSource()` - // returns `nullptr` and `this` is an invalid pointer. - // Per [expr.eq], it's not UB to compare a pointer to a deleted - // object, since no pointer comparisons are UB anymore. The - // case about pointer-past-end for a different object being - // _unspecified_ behavior does not apply here. - return SnapshotState(); - } - ErrorResult rv; - rv.ThrowInvalidStateError("Client destroyed during focus"); - return Err(std::move(rv)); - }(); - + Result state = SnapshotState(); if (state.isErr()) { return ClientOpPromise::CreateAndReject( CopyableErrorResult(state.unwrapErr()), __func__); diff --git a/icecat/dom/console/Console.cpp b/icecat/dom/console/Console.cpp index bdb8a7a8ee..98d1995ee8 100644 --- a/icecat/dom/console/Console.cpp +++ b/icecat/dom/console/Console.cpp @@ -424,7 +424,6 @@ class ConsoleRunnable : public StructuredCloneHolderBase { } Sequence arguments; - SequenceRooter rooter(aCx, &arguments); for (uint32_t i = 0; i < length; ++i) { JS::Rooted value(aCx); diff --git a/icecat/dom/cookiestore/CookieStoreNotifier.cpp b/icecat/dom/cookiestore/CookieStoreNotifier.cpp index c89f34f844..2fda55a207 100644 --- a/icecat/dom/cookiestore/CookieStoreNotifier.cpp +++ b/icecat/dom/cookiestore/CookieStoreNotifier.cpp @@ -196,17 +196,10 @@ void CookieStoreNotifier::DispatchEvent(const CookieListItem& aItem, void CookieStoreNotifier::FireDelayedDOMEvents() { MOZ_ASSERT(NS_IsMainThread()); - RefPtr kungFuDeathGrip(this); - nsTArray> delayedDOMEvents; delayedDOMEvents.SwapElements(mDelayedDOMEvents); for (Event* event : delayedDOMEvents) { - // mCookieStore is a raw pointer cleared by Disentangle(). - if (!mCookieStore) { - break; - } - mCookieStore->DispatchEvent(*event); } } diff --git a/icecat/dom/credentialmanagement/CredentialsContainer.cpp b/icecat/dom/credentialmanagement/CredentialsContainer.cpp index 582a93d4db..6b2672342f 100644 --- a/icecat/dom/credentialmanagement/CredentialsContainer.cpp +++ b/icecat/dom/credentialmanagement/CredentialsContainer.cpp @@ -194,12 +194,6 @@ already_AddRefed CredentialsContainer::Get( return promise.forget(); } - if (aOptions.mMediation != CredentialMediationRequirement::Conditional && - aOptions.mMediation != CredentialMediationRequirement::Optional && - aOptions.mMediation != CredentialMediationRequirement::Required) { - return CreateAndRejectWithNotSupported(mParent, aRv); - } - EnsureWebAuthnHandler(); return mWebAuthnHandler->GetAssertion(aOptions.mPublicKey.Value(), conditionallyMediated, @@ -275,11 +269,6 @@ already_AddRefed CredentialsContainer::Create( return CreateAndRejectWithNotAllowed(mParent, aRv); } - if (aOptions.mMediation != CredentialMediationRequirement::Optional && - aOptions.mMediation != CredentialMediationRequirement::Required) { - return CreateAndRejectWithNotSupported(mParent, aRv); - } - EnsureWebAuthnHandler(); return mWebAuthnHandler->MakeCredential(aOptions.mPublicKey.Value(), aOptions.mSignal, aRv); diff --git a/icecat/dom/events/EventListenerManager.cpp b/icecat/dom/events/EventListenerManager.cpp index 241e839187..3b9cd2721a 100644 --- a/icecat/dom/events/EventListenerManager.cpp +++ b/icecat/dom/events/EventListenerManager.cpp @@ -2134,13 +2134,9 @@ const TypedEventHandler* EventListenerManager::GetTypedEventHandler( } JSEventHandler* jsEventHandler = listener->GetJSEventHandler(); - Maybe> pin; + if (listener->mHandlerIsString) { - pin.emplace(jsEventHandler); - if (NS_FAILED(CompileEventHandlerInternal(listener, aEventName, nullptr, - nullptr))) { - listener = nullptr; - } + CompileEventHandlerInternal(listener, aEventName, nullptr, nullptr); } const TypedEventHandler& typedHandler = diff --git a/icecat/dom/events/GlobalKeyListener.cpp b/icecat/dom/events/GlobalKeyListener.cpp index f32e8c25cc..1a51a8ad94 100644 --- a/icecat/dom/events/GlobalKeyListener.cpp +++ b/icecat/dom/events/GlobalKeyListener.cpp @@ -418,11 +418,6 @@ GlobalKeyListener::WalkHandlersResult GlobalKeyListener::WalkHandlersAndExecute( bool GlobalKeyListener::IsReservedKey(WidgetKeyboardEvent* aKeyEvent, KeyEventHandler* aHandler) { - // If the event is a reply event, it means that we've already sent the event - // to the remote process because of not reserved. - if (aKeyEvent->IsHandledInRemoteProcess()) { - return false; - } ReservedKey reserved = aHandler->GetIsReserved(); // reserved="true" means that the key is always reserved. reserved="false" // means that the key is never reserved. Otherwise, we check site-specific diff --git a/icecat/dom/events/IMEContentObserver.cpp b/icecat/dom/events/IMEContentObserver.cpp index 34d9f7ae4c..b9f6055a12 100644 --- a/icecat/dom/events/IMEContentObserver.cpp +++ b/icecat/dom/events/IMEContentObserver.cpp @@ -788,8 +788,7 @@ nsresult IMEContentObserver::MaybeHandleSelectionEvent( bool IMEContentObserver::OnMouseButtonEvent(nsPresContext& aPresContext, WidgetMouseEvent& aMouseEvent) { if (!mIMENotificationRequests || - !mIMENotificationRequests->contains( - IMENotificationRequest::MouseEventOnChar)) { + !mIMENotificationRequests->WantMouseButtonEventOnChar()) { return false; } if (!aMouseEvent.IsTrusted() || aMouseEvent.DefaultPrevented() || diff --git a/icecat/dom/events/IMEContentObserver.h b/icecat/dom/events/IMEContentObserver.h index 3a81a822e2..480a377aec 100644 --- a/icecat/dom/events/IMEContentObserver.h +++ b/icecat/dom/events/IMEContentObserver.h @@ -47,7 +47,6 @@ class IMEContentObserver final : public nsStubMutationObserver, using SelectionChangeData = widget::IMENotification::SelectionChangeData; using TextChangeData = widget::IMENotification::TextChangeData; using TextChangeDataBase = widget::IMENotification::TextChangeDataBase; - using IMENotificationRequest = widget::IMENotificationRequest; using IMENotificationRequests = widget::IMENotificationRequests; using IMEMessage = widget::IMEMessage; enum class ForRemoval : bool { No, Yes }; @@ -164,8 +163,7 @@ class IMEContentObserver final : public nsStubMutationObserver, bool IsEditorHandlingEventForComposition() const; bool KeepAliveDuringDeactive() const { return mIMENotificationRequests && - mIMENotificationRequests->contains( - IMENotificationRequest::NotifyDuringInactive); + mIMENotificationRequests->WantDuringDeactive(); } [[nodiscard]] bool EditorIsTextEditor() const { return mEditorBase && mEditorBase->IsTextEditor(); @@ -330,13 +328,12 @@ class IMEContentObserver final : public nsStubMutationObserver, void UnregisterObservers(); void FlushMergeableNotifications(); bool NeedsTextChangeNotification() const { - return mIMENotificationRequests && mIMENotificationRequests->contains( - IMENotificationRequest::TextChange); + return mIMENotificationRequests && + mIMENotificationRequests->WantTextChange(); } bool NeedsPositionChangeNotification() const { return mIMENotificationRequests && - mIMENotificationRequests->contains( - IMENotificationRequest::PositionChange); + mIMENotificationRequests->WantPositionChanged(); } void ClearPendingNotifications() { mNeedsToNotifyIMEOfFocusSet = false; diff --git a/icecat/dom/events/IMEStateManager.cpp b/icecat/dom/events/IMEStateManager.cpp index fe51d62f45..7d738fe2b2 100644 --- a/icecat/dom/events/IMEStateManager.cpp +++ b/icecat/dom/events/IMEStateManager.cpp @@ -198,12 +198,13 @@ void IMEStateManager::OnFocusMovedBetweenBrowsers(BrowserParent* aBlur, RefPtr composition = sTextCompositions->GetCompositionFor(oldWidget); if (composition) { - MOZ_LOG(sISMLog, LogLevel::Debug, - (" OnFocusMovedBetweenBrowsers(), requesting to commit " - "composition to " - "the (previous) focused widget (would request=%s)", - GetBoolName(!oldWidget->IMENotificationRequestsRef().contains( - IMENotificationRequest::NotifyDuringInactive)))); + MOZ_LOG( + sISMLog, LogLevel::Debug, + (" OnFocusMovedBetweenBrowsers(), requesting to commit " + "composition to " + "the (previous) focused widget (would request=%s)", + GetBoolName( + !oldWidget->IMENotificationRequestsRef().WantDuringDeactive()))); NotifyIME(REQUEST_TO_COMMIT_COMPOSITION, oldWidget, composition->GetBrowserParent()); } @@ -726,8 +727,8 @@ nsresult IMEStateManager::OnChangeFocusInternal(nsPresContext* aPresContext, // such case, sFocusedIMEWidget is perhaps nullptr). For example, IME // may receive only blur notification but still has composition. // We need to clean up only the oldWidget's composition state here. - if (aPresContext || !oldWidget->IMENotificationRequestsRef().contains( - IMENotificationRequest::NotifyDuringInactive)) { + if (aPresContext || + !oldWidget->IMENotificationRequestsRef().WantDuringDeactive()) { MOZ_LOG( sISMLog, LogLevel::Info, (" OnChangeFocusInternal(), requesting to commit composition to " diff --git a/icecat/dom/events/test/clipboard/browser.toml b/icecat/dom/events/test/clipboard/browser.toml index 6cbf7ab4b5..06e36f4d7c 100644 --- a/icecat/dom/events/test/clipboard/browser.toml +++ b/icecat/dom/events/test/clipboard/browser.toml @@ -10,12 +10,6 @@ support-files = ["simple_navigator_clipboard_keydown.html"] run-if = ["os != 'win'"] # The popupmenus dismiss when access keys for disabled items are pressed on windows skip-if = ["os == 'mac' && verify"] -["browser_navigator_clipboard_contextmenu_dismiss.js"] -support-files = [ - "file_toplevel.html", - "file_iframe.html", -] - ["browser_navigator_clipboard_contextmenu_suppression.js"] support-files = [ "file_toplevel.html", diff --git a/icecat/dom/events/test/clipboard/browser_navigator_clipboard_contextmenu_dismiss.js b/icecat/dom/events/test/clipboard/browser_navigator_clipboard_contextmenu_dismiss.js deleted file mode 100644 index 067b553aa8..0000000000 --- a/icecat/dom/events/test/clipboard/browser_navigator_clipboard_contextmenu_dismiss.js +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: JavaScript; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* 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/. */ - -"use strict"; - -const kBaseUrlForContent = getRootDirectory(gTestPath).replace( - "chrome://mochitests/content", - "https://example.com" -); -const kContentFileUrl = kBaseUrlForContent + "file_toplevel.html"; -Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js", - this -); - -async function readText(aBrowser) { - return SpecialPowers.spawn(aBrowser, [], () => { - content.document.notifyUserGestureActivation(); - content.eval(`navigator.clipboard.readText();`); - }); -} - -add_task(async function test_context_menu_dimiss_tab_navigate() { - await BrowserTestUtils.withNewTab(kContentFileUrl, async aBrowser => { - info(`Randomized text to avoid overlappings with other tests`); - await promiseWritingRandomTextToClipboard(); - - info(`Wait for paste context menu is shown`); - let pasteButtonIsShown = promisePasteButtonIsShown(); - await readText(aBrowser); - await pasteButtonIsShown; - - info("Navigate tab"); - let pasteButtonIsHidden = promisePasteButtonIsHidden(); - aBrowser.loadURI(Services.io.newURI("https://example.com/"), { - triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(), - }); - - info(`Wait for paste context menu is hidden`); - await pasteButtonIsHidden; - }); -}); - -add_task(async function test_context_menu_dimiss_tab_reload() { - await BrowserTestUtils.withNewTab(kContentFileUrl, async aBrowser => { - info(`Randomized text to avoid overlappings with other tests`); - await promiseWritingRandomTextToClipboard(); - - info(`Wait for paste context menu is shown`); - let pasteButtonIsShown = promisePasteButtonIsShown(); - await readText(aBrowser); - await pasteButtonIsShown; - - info("Reload tab"); - let pasteButtonIsHidden = promisePasteButtonIsHidden(); - await BrowserTestUtils.reloadTab(gBrowser.selectedTab); - - info(`Wait for paste context menu is hidden`); - await pasteButtonIsHidden; - }); -}); diff --git a/icecat/dom/fetch/Fetch.cpp b/icecat/dom/fetch/Fetch.cpp index 20ddaabdd1..2a29279a6d 100644 --- a/icecat/dom/fetch/Fetch.cpp +++ b/icecat/dom/fetch/Fetch.cpp @@ -66,17 +66,21 @@ namespace { // https://fetch.spec.whatwg.org/#concept-http-network-fetch // If stream is readable, then error stream with ... void AbortStream(JSContext* aCx, ReadableStream* aReadableStream, - AbortSignalImpl* aSignal, ErrorResult& aRv) { - MOZ_ASSERT(aSignal->Aborted()); - + ErrorResult& aRv, JS::Handle aReasonDetails) { if (aReadableStream->State() != ReadableStream::ReaderState::Readable) { return; } - JS::Rooted reason(aCx); - aSignal->GetReason(aCx, &reason); + JS::Rooted value(aCx, aReasonDetails); - aReadableStream->ErrorNative(aCx, reason, aRv); + if (aReasonDetails.isUndefined()) { + RefPtr e = DOMException::Create(NS_ERROR_DOM_ABORT_ERR); + if (!GetOrCreateDOMReflector(aCx, e, &value)) { + return; + } + } + + aReadableStream->ErrorNative(aCx, value, aRv); } } // namespace @@ -529,8 +533,12 @@ already_AddRefed FetchRequest(nsIGlobalObject* aGlobal, if (signalImpl && signalImpl->Aborted()) { // Already aborted signal rejects immediately. - JS::Rooted reason(cx); - signalImpl->GetReason(cx, &reason); + JS::Rooted reason(cx, signalImpl->RawReason()); + if (reason.get().isUndefined()) { + aRv.Throw(NS_ERROR_DOM_ABORT_ERR); + return nullptr; + } + p->MaybeReject(reason); return p.forget(); } @@ -1414,15 +1422,16 @@ already_AddRefed FetchBody::ConsumeBody( DerivedClass()->GetSignalImplToConsumeBody(); if (signalImpl && signalImpl->Aborted()) { - JS::Rooted abortReason(aCx); - signalImpl->GetReason(aCx, &abortReason); + JS::Rooted abortReason(aCx, signalImpl->RawReason()); - nsCOMPtr global = DerivedClass()->GetParentObject(); - RefPtr promise = Promise::Create(global, aRv); - if (aRv.Failed()) { + if (abortReason.get().isUndefined()) { + aRv.Throw(NS_ERROR_DOM_ABORT_ERR); return nullptr; } + nsCOMPtr go = DerivedClass()->GetParentObject(); + + RefPtr promise = Promise::Create(go, aRv); promise->MaybeReject(abortReason); return promise.forget(); } @@ -1563,9 +1572,11 @@ void FetchBody::SetReadableStreamBody(JSContext* aCx, return; } - if (signalImpl->Aborted()) { + bool aborted = signalImpl->Aborted(); + if (aborted) { IgnoredErrorResult result; - AbortStream(aCx, mReadableStreamBody, signalImpl, result); + JS::Rooted abortReason(aCx, signalImpl->RawReason()); + AbortStream(aCx, mReadableStreamBody, result, abortReason); if (NS_WARN_IF(result.Failed())) { return; } @@ -1621,7 +1632,8 @@ already_AddRefed FetchBody::GetBody(JSContext* aCx, RefPtr signalImpl = DerivedClass()->GetSignalImpl(); if (signalImpl) { if (signalImpl->Aborted()) { - AbortStream(aCx, body, signalImpl, aRv); + JS::Rooted abortReason(aCx, signalImpl->RawReason()); + AbortStream(aCx, body, aRv, abortReason); if (NS_WARN_IF(aRv.Failed())) { return nullptr; } @@ -1721,7 +1733,16 @@ void FetchBody::RunAbortAlgorithm() { JSContext* cx = jsapi.cx(); RefPtr body(mReadableStreamBody); - AbortStream(cx, body, Signal(), IgnoredErrorResult()); + IgnoredErrorResult result; + + JS::Rooted abortReason(cx); + + AbortSignalImpl* signalImpl = Signal(); + if (signalImpl) { + abortReason.set(signalImpl->RawReason()); + } + + AbortStream(cx, body, result, abortReason); } template void FetchBody::RunAbortAlgorithm(); diff --git a/icecat/dom/fetch/FetchParent.cpp b/icecat/dom/fetch/FetchParent.cpp index 34fce64488..6f969246aa 100644 --- a/icecat/dom/fetch/FetchParent.cpp +++ b/icecat/dom/fetch/FetchParent.cpp @@ -89,9 +89,6 @@ IPCResult FetchParent::RecvFetchOp(FetchOpArgs&& aArgs) { FETCH_LOG(("FetchParent::RecvFetchOp [%p]", this)); AssertIsOnBackgroundThread(); - if (mReceivedFetchOp.exchange(true)) { - return IPC_FAIL(this, "FetchOp received more than once on this actor"); - } MOZ_ASSERT(!mIsDone); if (mActorDestroyed) { return IPC_OK(); @@ -179,7 +176,7 @@ IPCResult FetchParent::RecvFetchOp(FetchOpArgs&& aArgs) { self->mResponsePromises = fetchService->Fetch(AsVariant(FetchService::WorkerFetchArgs( {self->mRequest.clonePtr(), self->mPrincipalInfo, - self->mWorkerScript, *self->mClientInfo, self->mController, + self->mWorkerScript, self->mClientInfo, self->mController, self->mCookieJarSettings, self->mNeedOnDataAvailable, self->mCSPEventListener, self->mAssociatedBrowsingContextID, self->mBackgroundEventTarget, self->mID, @@ -192,7 +189,6 @@ IPCResult FetchParent::RecvFetchOp(FetchOpArgs&& aArgs) { fetchService->Fetch(AsVariant(FetchService::MainThreadFetchArgs({ self->mRequest.clonePtr(), self->mPrincipalInfo, - *self->mClientInfo, self->mCookieJarSettings, self->mNeedOnDataAvailable, self->mCSPEventListener, diff --git a/icecat/dom/fetch/FetchParent.h b/icecat/dom/fetch/FetchParent.h index 2bb06c414e..0d41589e28 100644 --- a/icecat/dom/fetch/FetchParent.h +++ b/icecat/dom/fetch/FetchParent.h @@ -103,7 +103,6 @@ class FetchParent final : public PFetchParent { Atomic mIsDone{false}; Atomic mActorDestroyed{false}; - Atomic mReceivedFetchOp{false}; nsCOMPtr mBackgroundEventTarget; }; diff --git a/icecat/dom/fetch/FetchService.cpp b/icecat/dom/fetch/FetchService.cpp index e69f4ee615..fcdddf2f77 100644 --- a/icecat/dom/fetch/FetchService.cpp +++ b/icecat/dom/fetch/FetchService.cpp @@ -271,7 +271,8 @@ RefPtr FetchService::FetchInstance::Fetch() { if (mArgsType == FetchArgsType::WorkerFetch) { auto& args = mArgs.as(); mFetchDriver->SetWorkerScript(args.mWorkerScript); - mFetchDriver->SetClientInfo(args.mClientInfo); + MOZ_ASSERT(args.mClientInfo.isSome()); + mFetchDriver->SetClientInfo(args.mClientInfo.ref()); mFetchDriver->SetController(args.mController); if (args.mCSPEventListener) { mFetchDriver->SetCSPEventListener(args.mCSPEventListener); @@ -284,7 +285,6 @@ RefPtr FetchService::FetchInstance::Fetch() { if (mArgsType == FetchArgsType::MainThreadFetch) { auto& args = mArgs.as(); - mFetchDriver->SetClientInfo(args.mClientInfo); mFetchDriver->SetIsThirdPartyContext(Some(args.mIsThirdPartyContext)); } diff --git a/icecat/dom/fetch/FetchService.h b/icecat/dom/fetch/FetchService.h index 608db652b0..e98aaa4d27 100644 --- a/icecat/dom/fetch/FetchService.h +++ b/icecat/dom/fetch/FetchService.h @@ -108,7 +108,7 @@ class FetchService final : public nsIObserver { SafeRefPtr mRequest; mozilla::ipc::PrincipalInfo mPrincipalInfo; nsCString mWorkerScript; - ClientInfo mClientInfo; + Maybe mClientInfo; Maybe mController; Maybe mCookieJarSettings; bool mNeedOnDataAvailable; @@ -131,7 +131,6 @@ class FetchService final : public nsIObserver { struct MainThreadFetchArgs { SafeRefPtr mRequest; mozilla::ipc::PrincipalInfo mPrincipalInfo; - ClientInfo mClientInfo; Maybe mCookieJarSettings; bool mNeedOnDataAvailable; nsCOMPtr mCSPEventListener; diff --git a/icecat/dom/fetch/InternalResponse.cpp b/icecat/dom/fetch/InternalResponse.cpp index b9fea875f5..3359f2aeae 100644 --- a/icecat/dom/fetch/InternalResponse.cpp +++ b/icecat/dom/fetch/InternalResponse.cpp @@ -123,19 +123,6 @@ template InternalResponse::~InternalResponse() = default; -void InternalResponse::SnapshotUnfilteredHeaders() { - auto snapshot = [](InternalHeaders* aHeaders) { - nsTArray entries; - aHeaders->GetEntries(entries); - return MakeRefPtr(std::move(entries), aHeaders->Guard()); - }; - if (mWrappedResponse) { - mWrappedResponse->mHeaders = snapshot(mWrappedResponse->mHeaders); - } else { - mHeaders = snapshot(mHeaders); - } -} - InternalResponseMetadata InternalResponse::GetMetadata() { nsTArray headers; HeadersGuardEnum headersGuard; diff --git a/icecat/dom/fetch/InternalResponse.h b/icecat/dom/fetch/InternalResponse.h index b05b9690fe..dc6bdc8d4e 100644 --- a/icecat/dom/fetch/InternalResponse.h +++ b/icecat/dom/fetch/InternalResponse.h @@ -169,8 +169,6 @@ class InternalResponse final : public AtomicSafeRefCounted { return Headers(); } - void SnapshotUnfilteredHeaders(); - void GetUnfilteredBody(nsIInputStream** aStream, int64_t* aBodySize = nullptr) { if (mWrappedResponse) { diff --git a/icecat/dom/file/Blob.cpp b/icecat/dom/file/Blob.cpp index a4929983a5..342986e173 100644 --- a/icecat/dom/file/Blob.cpp +++ b/icecat/dom/file/Blob.cpp @@ -8,7 +8,6 @@ #include "EmptyBlobImpl.h" #include "File.h" #include "MemoryBlobImpl.h" -#include "js/Object.h" #include "mozilla/dom/BlobBinding.h" #include "mozilla/dom/ReadableStream.h" #include "mozilla/dom/WorkerCommon.h" @@ -122,16 +121,6 @@ Blob::Blob(nsIGlobalObject* aGlobal, BlobImpl* aImpl) Blob::~Blob() = default; -already_AddRefed Blob::Clone() const { - RefPtr clone = Create(GetParentObject(), Impl()); - return clone.forget(); -} - -bool Blob::HasExpandos() const { - const JSObject* wrapper = GetWrapperPreserveColor(); - return wrapper && JS::NativeObjectHasOwnProperties(wrapper); -} - bool Blob::IsFile() const { return mImpl->IsFile(); } const nsTArray>* Blob::GetSubBlobImpls() const { diff --git a/icecat/dom/file/Blob.h b/icecat/dom/file/Blob.h index a8df001cb6..fa70eb854e 100644 --- a/icecat/dom/file/Blob.h +++ b/icecat/dom/file/Blob.h @@ -56,12 +56,6 @@ class Blob : public nsSupportsWeakReference, public nsWrapperCache { uint64_t aLength, const nsAString& aContentType); - // This clones the current Blob - already_AddRefed Clone() const; - - // Returns true if the blob's JS wrapper has user-added properties (expandos). - bool HasExpandos() const; - BlobImpl* Impl() const { return mImpl; } bool IsFile() const; diff --git a/icecat/dom/file/FileReader.cpp b/icecat/dom/file/FileReader.cpp index d7ed6eecf4..1613aaf8bd 100644 --- a/icecat/dom/file/FileReader.cpp +++ b/icecat/dom/file/FileReader.cpp @@ -416,15 +416,10 @@ void FileReader::ReadFileContent(Blob& aBlob, const nsAString& aCharset, // Binary Format doesn't need a post-processing of the data. Everything is // written directly into mResult. if (mDataFormat != FILE_AS_BINARY) { - CheckedInt size(mTotal); - if (!size.isValid()) { - aRv.Throw(NS_ERROR_OUT_OF_MEMORY); - return; - } if (mDataFormat == FILE_AS_ARRAYBUFFER) { - mFileData = js_pod_malloc(size.value()); + mFileData = js_pod_malloc(mTotal); } else { - mFileData = (char*)malloc(size.value()); + mFileData = (char*)malloc(mTotal); } if (!mFileData) { diff --git a/icecat/dom/filesystem/FileSystemSecurity.cpp b/icecat/dom/filesystem/FileSystemSecurity.cpp index cf1e092539..b9468270d4 100644 --- a/icecat/dom/filesystem/FileSystemSecurity.cpp +++ b/icecat/dom/filesystem/FileSystemSecurity.cpp @@ -80,24 +80,22 @@ bool FileSystemSecurity::ContentProcessHasAccessTo(ContentParentId aId, #if defined(XP_WIN) if (StringBeginsWith(aPath, u"..\\"_ns) || - FindInReadable(u"\\..\\"_ns, aPath) || - StringEndsWith(aPath, u"\\.."_ns)) { + FindInReadable(u"\\..\\"_ns, aPath)) { + return false; + } +#elif defined(XP_UNIX) + if (StringBeginsWith(aPath, u"../"_ns) || FindInReadable(u"/../"_ns, aPath)) { return false; } #endif - if (StringBeginsWith(aPath, u"../"_ns) || FindInReadable(u"/../"_ns, aPath) || - StringEndsWith(aPath, u"/.."_ns) || aPath.EqualsLiteral("..")) { - return false; - } nsTArray* paths; if (!mPaths.Get(aId, &paths)) { return false; } - MOZ_DIAGNOSTIC_ASSERT(paths); - for (const auto& authorizedRoot : *paths) { - if (FileSystemUtils::IsDescendantPath(authorizedRoot, aPath)) { + for (uint32_t i = 0, len = paths->Length(); i < len; ++i) { + if (FileSystemUtils::IsDescendantPath(paths->ElementAt(i), aPath)) { return true; } } diff --git a/icecat/dom/filesystem/FileSystemUtils.cpp b/icecat/dom/filesystem/FileSystemUtils.cpp index 3aa6d20cb1..136f683e5e 100644 --- a/icecat/dom/filesystem/FileSystemUtils.cpp +++ b/icecat/dom/filesystem/FileSystemUtils.cpp @@ -12,28 +12,11 @@ namespace mozilla::dom { /* static */ -bool FileSystemUtils::IsDescendantPath(const nsAString& aAuthorizedRoot, - const nsAString& aRequestedDescendant) { +bool FileSystemUtils::IsDescendantPath(const nsAString& aPath, + const nsAString& aDescendantPath) { // Check the sub-directory path to see if it has the parent path as prefix. - if (aRequestedDescendant.Equals(aAuthorizedRoot)) { - return true; - } - - if (!StringBeginsWith(/*aSource*/ aRequestedDescendant, - /*aSubstring*/ aAuthorizedRoot)) { - return false; - } - - // Require a path separator immediately after the granted prefix. - const uint32_t prefixLen = aAuthorizedRoot.Length(); - if (prefixLen > 0 && - aAuthorizedRoot.Last() == FILESYSTEM_DOM_PATH_SEPARATOR_CHAR) { - return true; - } - - if (aRequestedDescendant.Length() <= prefixLen || - aRequestedDescendant.CharAt(prefixLen) != - FILESYSTEM_DOM_PATH_SEPARATOR_CHAR) { + if (!aDescendantPath.Equals(aPath) && + !StringBeginsWith(aDescendantPath, aPath)) { return false; } diff --git a/icecat/dom/fs/child/FileSystemRequestHandler.cpp b/icecat/dom/fs/child/FileSystemRequestHandler.cpp index 045f5e76a7..106769da53 100644 --- a/icecat/dom/fs/child/FileSystemRequestHandler.cpp +++ b/icecat/dom/fs/child/FileSystemRequestHandler.cpp @@ -214,13 +214,12 @@ void ResolveCallback( HandleFailedStatus(aResponse.get_nsresult(), aPromise); } +template <> void ResolveCallback( FileSystemMoveEntryResponse&& aResponse, RefPtr aPromise, // NOLINT(performance-unnecessary-value-param) - RefPtr aHandle, FileSystemEntryMetadata* const& aEntry, - const Name& aName) { + FileSystemEntryMetadata* const& aEntry, const Name& aName) { MOZ_ASSERT(aPromise); - MOZ_ASSERT(aHandle); QM_TRY(OkIf(Promise::PromiseState::Pending == aPromise->State()), QM_VOID); if (FileSystemMoveEntryResponse::TEntryId == aResponse.type()) { @@ -554,7 +553,7 @@ void FileSystemRequestHandler::RemoveEntry( } void FileSystemRequestHandler::MoveEntry( - RefPtr& aManager, RefPtr aHandle, + RefPtr& aManager, FileSystemHandle* aHandle, FileSystemEntryMetadata* const aEntry, const FileSystemChildMetadata& aNewEntry, RefPtr aPromise, // NOLINT(performance-unnecessary-value-param) @@ -578,7 +577,7 @@ void FileSystemRequestHandler::MoveEntry( aManager->BeginRequest( [request = FileSystemMoveEntryRequest(*aEntry, aNewEntry), onResolve = SelectResolveCallback( - aPromise, std::move(aHandle), aEntry, aNewEntry.childName()), + aPromise, aEntry, aNewEntry.childName()), onReject = GetRejectCallback(aPromise)](const auto& actor) mutable { actor->SendMoveEntry(request, std::move(onResolve), std::move(onReject)); @@ -587,7 +586,7 @@ void FileSystemRequestHandler::MoveEntry( } void FileSystemRequestHandler::RenameEntry( - RefPtr& aManager, RefPtr aHandle, + RefPtr& aManager, FileSystemHandle* aHandle, FileSystemEntryMetadata* const aEntry, const Name& aName, RefPtr aPromise, // NOLINT(performance-unnecessary-value-param) ErrorResult& aError) { @@ -610,7 +609,7 @@ void FileSystemRequestHandler::RenameEntry( aManager->BeginRequest( [request = FileSystemRenameEntryRequest(*aEntry, aName), onResolve = SelectResolveCallback( - aPromise, std::move(aHandle), aEntry, aName), + aPromise, aEntry, aName), onReject = GetRejectCallback(aPromise)](const auto& actor) mutable { actor->SendRenameEntry(request, std::move(onResolve), std::move(onReject)); diff --git a/icecat/dom/fs/include/fs/FileSystemRequestHandler.h b/icecat/dom/fs/include/fs/FileSystemRequestHandler.h index 4e015cd667..04d03daad9 100644 --- a/icecat/dom/fs/include/fs/FileSystemRequestHandler.h +++ b/icecat/dom/fs/include/fs/FileSystemRequestHandler.h @@ -69,13 +69,13 @@ class FileSystemRequestHandler { ErrorResult& aError); virtual void MoveEntry(RefPtr& aManager, - RefPtr aHandle, + FileSystemHandle* aHandle, FileSystemEntryMetadata* const aEntry, const FileSystemChildMetadata& aNewEntry, RefPtr aPromise, ErrorResult& aError); virtual void RenameEntry(RefPtr& aManager, - RefPtr aHandle, + FileSystemHandle* aHandle, FileSystemEntryMetadata* const aEntry, const Name& aName, RefPtr aPromise, ErrorResult& aError); diff --git a/icecat/dom/fs/parent/FileSystemAccessHandle.cpp b/icecat/dom/fs/parent/FileSystemAccessHandle.cpp index 4e1ffd1af9..5fb2e02fc4 100644 --- a/icecat/dom/fs/parent/FileSystemAccessHandle.cpp +++ b/icecat/dom/fs/parent/FileSystemAccessHandle.cpp @@ -124,9 +124,6 @@ void FileSystemAccessHandle::UnregisterControlActor( bool FileSystemAccessHandle::IsOpen() const { return !mClosed; } RefPtr FileSystemAccessHandle::BeginClose() { - if (mClosed) { - return BoolPromise::CreateAndResolve(true, __func__); - } MOZ_ASSERT(IsOpen()); LOG(("Closing AccessHandle")); diff --git a/icecat/dom/fs/test/gtest/FileSystemMocks.h b/icecat/dom/fs/test/gtest/FileSystemMocks.h index c924095bff..b6f88a86f2 100644 --- a/icecat/dom/fs/test/gtest/FileSystemMocks.h +++ b/icecat/dom/fs/test/gtest/FileSystemMocks.h @@ -24,7 +24,6 @@ #include "mozilla/dom/BindingUtils.h" #include "mozilla/dom/DOMException.h" #include "mozilla/dom/DOMExceptionBinding.h" -#include "mozilla/dom/FileSystemHandle.h" #include "mozilla/dom/FileSystemManagerChild.h" #include "mozilla/dom/Promise.h" #include "mozilla/dom/PromiseNativeHandler.h" @@ -93,16 +92,14 @@ class MockFileSystemRequestHandler : public FileSystemRequestHandler { (override)); MOCK_METHOD(void, MoveEntry, - (RefPtr & aManager, - RefPtr aHandle, + (RefPtr & aManager, FileSystemHandle* aHandle, FileSystemEntryMetadata* const aEntry, const FileSystemChildMetadata& aNewEntry, RefPtr aPromise, ErrorResult& aError), (override)); MOCK_METHOD(void, RenameEntry, - (RefPtr & aManager, - RefPtr aHandle, + (RefPtr & aManager, FileSystemHandle* aHandle, FileSystemEntryMetadata* const aEntry, const Name& aName, RefPtr aPromise, ErrorResult& aError), (override)); diff --git a/icecat/dom/gamepad/GamepadPlatformService.cpp b/icecat/dom/gamepad/GamepadPlatformService.cpp index 1cd9f8ddf8..7d730e3d0a 100644 --- a/icecat/dom/gamepad/GamepadPlatformService.cpp +++ b/icecat/dom/gamepad/GamepadPlatformService.cpp @@ -80,8 +80,8 @@ void GamepadMonitoringState::Set(bool aIsMonitoring) { } GamepadPlatformService::GamepadPlatformService() - : mMutex("mozilla::dom::GamepadPlatformService"), - mNextGamepadHandleValue(1) {} + : mNextGamepadHandleValue(1), + mMutex("mozilla::dom::GamepadPlatformService") {} GamepadPlatformService::~GamepadPlatformService() { Cleanup(); } @@ -113,6 +113,10 @@ void GamepadPlatformService::NotifyGamepadChange(GamepadHandle aHandle, GamepadChangeEventBody body(aInfo); GamepadChangeEvent e(aHandle, body); + // mChannelParents may be accessed by background thread in the + // same time, we use mutex to prevent possible race condtion + MutexAutoLock autoLock(mMutex); + for (uint32_t i = 0; i < mChannelParents.Length(); ++i) { mChannelParents[i]->DispatchUpdateEvent(e); } @@ -127,19 +131,16 @@ GamepadHandle GamepadPlatformService::AddGamepad( MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!NS_IsMainThread()); + GamepadHandle gamepadHandle{mNextGamepadHandleValue++, + GamepadHandleKind::GamepadPlatformManager}; + // Only VR controllers has displayID, we give 0 to the general gamepads. GamepadAdded a(NS_ConvertUTF8toUTF16(nsDependentCString(aID)), aMapping, aHand, 0, aNumButtons, aNumAxes, aHaptics, aNumLightIndicator, aNumTouchEvents); - GamepadHandle gamepadHandle; - { - MutexAutoLock autoLock(mMutex); - gamepadHandle = GamepadHandle{mNextGamepadHandleValue++, - GamepadHandleKind::GamepadPlatformManager}; - mGamepadAdded.emplace(gamepadHandle, a); - NotifyGamepadChange(gamepadHandle, a); - } + mGamepadAdded.emplace(gamepadHandle, a); + NotifyGamepadChange(gamepadHandle, a); return gamepadHandle; } @@ -149,11 +150,8 @@ void GamepadPlatformService::RemoveGamepad(GamepadHandle aHandle) { MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!NS_IsMainThread()); GamepadRemoved a; - { - MutexAutoLock autoLock(mMutex); - NotifyGamepadChange(aHandle, a); - mGamepadAdded.erase(aHandle); - } + NotifyGamepadChange(aHandle, a); + mGamepadAdded.erase(aHandle); } void GamepadPlatformService::NewButtonEvent(GamepadHandle aHandle, @@ -164,7 +162,6 @@ void GamepadPlatformService::NewButtonEvent(GamepadHandle aHandle, MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!NS_IsMainThread()); GamepadButtonInformation a(aButton, aValue, aPressed, aTouched); - MutexAutoLock autoLock(mMutex); NotifyGamepadChange(aHandle, a); } @@ -207,7 +204,6 @@ void GamepadPlatformService::NewAxisMoveEvent(GamepadHandle aHandle, MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!NS_IsMainThread()); GamepadAxisInformation a(aAxis, aValue); - MutexAutoLock autoLock(mMutex); NotifyGamepadChange(aHandle, a); } @@ -218,7 +214,6 @@ void GamepadPlatformService::NewLightIndicatorTypeEvent( MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!NS_IsMainThread()); GamepadLightIndicatorTypeInformation a(aLight, aType); - MutexAutoLock autoLock(mMutex); NotifyGamepadChange(aHandle, a); } @@ -229,7 +224,6 @@ void GamepadPlatformService::NewPoseEvent(GamepadHandle aHandle, MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!NS_IsMainThread()); GamepadPoseInformation a(aState); - MutexAutoLock autoLock(mMutex); NotifyGamepadChange(aHandle, a); } @@ -242,7 +236,6 @@ void GamepadPlatformService::NewMultiTouchEvent( MOZ_ASSERT(!NS_IsMainThread()); GamepadTouchInformation a(aTouchArrayIndex, aState); - MutexAutoLock autoLock(mMutex); NotifyGamepadChange(aHandle, a); } @@ -251,7 +244,6 @@ void GamepadPlatformService::ResetGamepadIndexes() { // platform-dependent backends MOZ_ASSERT(XRE_IsParentProcess()); MOZ_ASSERT(!NS_IsMainThread()); - MutexAutoLock autoLock(mMutex); mNextGamepadHandleValue = 1; } @@ -261,11 +253,11 @@ void GamepadPlatformService::AddChannelParent( // is created or removed in Background thread AssertIsOnBackgroundThread(); MOZ_ASSERT(aParent); + MOZ_ASSERT(!mChannelParents.Contains(aParent)); // We use mutex here to prevent race condition with monitor thread { MutexAutoLock autoLock(mMutex); - MOZ_ASSERT(!mChannelParents.Contains(aParent)); mChannelParents.AppendElement(aParent); // For a new GamepadEventChannel, we have to send the exising GamepadAdded @@ -290,11 +282,11 @@ void GamepadPlatformService::RemoveChannelParent( // is created or removed in Background thread AssertIsOnBackgroundThread(); MOZ_ASSERT(aParent); + MOZ_ASSERT(mChannelParents.Contains(aParent)); // We use mutex here to prevent race condition with monitor thread { MutexAutoLock autoLock(mMutex); - MOZ_ASSERT(mChannelParents.Contains(aParent)); mChannelParents.RemoveElement(aParent); if (!mChannelParents.IsEmpty()) { return; diff --git a/icecat/dom/gamepad/GamepadPlatformService.h b/icecat/dom/gamepad/GamepadPlatformService.h index 850b6c66b1..cb451a1b31 100644 --- a/icecat/dom/gamepad/GamepadPlatformService.h +++ b/icecat/dom/gamepad/GamepadPlatformService.h @@ -75,9 +75,9 @@ class GamepadPlatformService final { GamepadHand aHand, uint32_t aNumButtons, uint32_t aNumAxes, uint32_t aNumHaptics, uint32_t aNumLightIndicator, - uint32_t aNumTouchEvents) MOZ_EXCLUDES(mMutex); + uint32_t aNumTouchEvents); // Remove the gamepad at |aHandle| from the list of known gamepads. - void RemoveGamepad(GamepadHandle aHandle) MOZ_EXCLUDES(mMutex); + void RemoveGamepad(GamepadHandle aHandle); // Update the state of |aButton| for the gamepad at |aHandle| for all // windows that are listening and visible, and fire one of @@ -85,51 +85,44 @@ class GamepadPlatformService final { // aPressed is used for digital buttons, aTouched is for detecting touched // events, aValue is for analog buttons. void NewButtonEvent(GamepadHandle aHandle, uint32_t aButton, bool aPressed, - bool aTouched, double aValue) MOZ_EXCLUDES(mMutex); + bool aTouched, double aValue); // When only a digital button is available the value will be synthesized. - void NewButtonEvent(GamepadHandle aHandle, uint32_t aButton, bool aPressed) - MOZ_EXCLUDES(mMutex); + void NewButtonEvent(GamepadHandle aHandle, uint32_t aButton, bool aPressed); // When only a digital button are available the value will be synthesized. void NewButtonEvent(GamepadHandle aHandle, uint32_t aButton, bool aPressed, - bool aTouched) MOZ_EXCLUDES(mMutex); + bool aTouched); // When only a digital button are available the value will be synthesized. void NewButtonEvent(GamepadHandle aHandle, uint32_t aButton, bool aPressed, - double aValue) MOZ_EXCLUDES(mMutex); + double aValue); // Update the state of |aAxis| for the gamepad at |aHandle| for all // windows that are listening and visible, and fire a gamepadaxismove // event at them as well. - void NewAxisMoveEvent(GamepadHandle aHandle, uint32_t aAxis, double aValue) - MOZ_EXCLUDES(mMutex); + void NewAxisMoveEvent(GamepadHandle aHandle, uint32_t aAxis, double aValue); // Update the state of |aState| for the gamepad at |aHandle| for all // windows that are listening and visible. - void NewPoseEvent(GamepadHandle aHandle, const GamepadPoseState& aState) - MOZ_EXCLUDES(mMutex); + void NewPoseEvent(GamepadHandle aHandle, const GamepadPoseState& aState); // Update the type of |aType| for the gamepad at |aHandle| for all // windows that are listening and visible. void NewLightIndicatorTypeEvent(GamepadHandle aHandle, uint32_t aLight, - GamepadLightIndicatorType aType) - MOZ_EXCLUDES(mMutex); + GamepadLightIndicatorType aType); // Update the state of |aState| for the gamepad at |aHandle| with // |aTouchArrayIndex| for all windows that are listening and visible. void NewMultiTouchEvent(GamepadHandle aHandle, uint32_t aTouchArrayIndex, - const GamepadTouchState& aState) MOZ_EXCLUDES(mMutex); + const GamepadTouchState& aState); // When shutting down the platform communications for gamepad, also reset the // indexes. - void ResetGamepadIndexes() MOZ_EXCLUDES(mMutex); + void ResetGamepadIndexes(); // Add IPDL parent instance - void AddChannelParent(GamepadEventChannelParent* aParent) - MOZ_EXCLUDES(mMutex); + void AddChannelParent(GamepadEventChannelParent* aParent); // Remove IPDL parent instance - void RemoveChannelParent(GamepadEventChannelParent* aParent) - MOZ_EXCLUDES(mMutex); + void RemoveChannelParent(GamepadEventChannelParent* aParent); - void MaybeShutdown() MOZ_EXCLUDES(mMutex); + void MaybeShutdown(); - nsTArray GetAllGamePads() MOZ_EXCLUDES(mMutex) { - MutexAutoLock autoLock(mMutex); + nsTArray GetAllGamePads() { nsTArray gamepads; for (const auto& elem : mGamepadAdded) { @@ -142,24 +135,23 @@ class GamepadPlatformService final { GamepadPlatformService(); ~GamepadPlatformService(); template - void NotifyGamepadChange(GamepadHandle aHandle, const T& aInfo) - MOZ_REQUIRES(mMutex); + void NotifyGamepadChange(GamepadHandle aHandle, const T& aInfo); - void Cleanup() MOZ_EXCLUDES(mMutex); + void Cleanup(); - // This mutex protects mNextGamepadHandleValue, mChannelParents, and - // mGamepadAdded from race condition between background and monitor thread - Mutex mMutex; - - uint32_t mNextGamepadHandleValue MOZ_GUARDED_BY(mMutex); + // mNextGamepadHandleValue can only be accessed by monitor thread + uint32_t mNextGamepadHandleValue; // mChannelParents stores all the GamepadEventChannelParent instances // which may be accessed by both background thread and monitor thread - // simultaneously - nsTArray> mChannelParents - MOZ_GUARDED_BY(mMutex); + // simultaneously, so we have a mutex to prevent race condition + nsTArray> mChannelParents; - std::map mGamepadAdded MOZ_GUARDED_BY(mMutex); + // This mutex protects mChannelParents from race condition + // between background and monitor thread + Mutex mMutex MOZ_UNANNOTATED; + + std::map mGamepadAdded; }; } // namespace mozilla::dom diff --git a/icecat/dom/gamepad/GamepadRemapping.cpp b/icecat/dom/gamepad/GamepadRemapping.cpp index 4e9bbef323..2c3ec252f5 100644 --- a/icecat/dom/gamepad/GamepadRemapping.cpp +++ b/icecat/dom/gamepad/GamepadRemapping.cpp @@ -477,16 +477,10 @@ class Dualshock4Remapper final : public GamepadRemapper { return MAX_INPUT_LEN; } - static constexpr size_t kMinTouchReportLen = 43; - - virtual void ProcessTouchData(GamepadHandle aHandle, const uint8_t* aInput, - size_t aInputLen) override { - if (aInputLen < kMinTouchReportLen) { - return; - } + virtual void ProcessTouchData(GamepadHandle aHandle, void* aInput) override { nsTArray touches(TOUCH_EVENT_COUNT); touches.SetLength(TOUCH_EVENT_COUNT); - const uint8_t* rawData = aInput; + uint8_t* rawData = (uint8_t*)aInput; const uint32_t kTouchDimensionX = 1920; const uint32_t kTouchDimensionY = 942; diff --git a/icecat/dom/gamepad/GamepadRemapping.h b/icecat/dom/gamepad/GamepadRemapping.h index deb6344f28..0a508fe134 100644 --- a/icecat/dom/gamepad/GamepadRemapping.h +++ b/icecat/dom/gamepad/GamepadRemapping.h @@ -152,8 +152,7 @@ class GamepadRemapper { virtual GamepadMappingType GetMappingType() const { return GamepadMappingType::Standard; } - virtual void ProcessTouchData(GamepadHandle aHandle, const uint8_t* aInput, - size_t aInputLen) {} + virtual void ProcessTouchData(GamepadHandle aHandle, void* aInput) {} virtual void RemapAxisMoveEvent(GamepadHandle aHandle, uint32_t aAxis, double aValue) const = 0; virtual void RemapButtonEvent(GamepadHandle aHandle, uint32_t aButton, diff --git a/icecat/dom/gamepad/cocoa/CocoaGamepad.cpp b/icecat/dom/gamepad/cocoa/CocoaGamepad.cpp index 7cd430fb52..700ac8a69a 100644 --- a/icecat/dom/gamepad/cocoa/CocoaGamepad.cpp +++ b/icecat/dom/gamepad/cocoa/CocoaGamepad.cpp @@ -7,8 +7,6 @@ // mostly derived from the Allegro source code at: // http://alleg.svn.sourceforge.net/viewvc/alleg/allegro/branches/4.9/src/macosx/hidjoy.m?revision=13760&view=markup -#include "mozilla/Atomics.h" -#include "mozilla/Mutex.h" #include "mozilla/dom/GamepadHandle.h" #include "mozilla/dom/GamepadPlatformService.h" #include "mozilla/dom/GamepadRemapping.h" @@ -98,7 +96,6 @@ class Gamepad { bool operator==(IOHIDDeviceRef device) const { return mDevice == device; } bool empty() const { return mDevice == nullptr; } - IOHIDDeviceRef Device() const { return mDevice; } void clear() { mDevice = nullptr; buttons.Clear(); @@ -107,6 +104,7 @@ class Gamepad { } void init(IOHIDDeviceRef device, bool defaultRemapper); void ReportChanged(uint8_t* report, CFIndex report_length); + size_t WriteOutputReport(const std::vector& aReport) const; size_t numButtons() { return buttons.Length(); } size_t numAxes() { return axes.Length(); } @@ -202,13 +200,12 @@ void Gamepad::init(IOHIDDeviceRef aDevice, bool aDefaultRemapper) { class DarwinGamepadService { private: IOHIDManagerRef mManager; - Mutex mGamepadsMutex; - nsTArray mGamepads MOZ_GUARDED_BY(mGamepadsMutex); + nsTArray mGamepads; nsCOMPtr mMonitorThread; nsCOMPtr mBackgroundThread; nsCOMPtr mPollingTimer; - Atomic mIsRunning; + bool mIsRunning; static void DeviceAddedCallback(void* data, IOReturn result, void* sender, IOHIDDeviceRef device); @@ -295,12 +292,6 @@ void DarwinGamepadService::DeviceAdded(IOHIDDeviceRef device) { return; } - // Holding the lock through IOHIDDeviceRegisterInputReportCallback is safe: - // ReportChangedCallback (which also acquires this lock) is only ever invoked - // from within CFRunLoopRunInMode on the monitor thread, which is not running - // while DeviceAdded is executing. - MutexAutoLock lock(mGamepadsMutex); - size_t slot = size_t(-1); for (size_t i = 0; i < mGamepads.Length(); i++) { if (mGamepads[i] == device) return; @@ -377,11 +368,6 @@ void DarwinGamepadService::DeviceRemoved(IOHIDDeviceRef device) { if (!service) { return; } - // Same reasoning as DeviceAdded: holding the lock through - // IOHIDDeviceRegisterInputReportCallback (the unregister call) is safe - // because ReportChangedCallback only runs from within CFRunLoopRunInMode on - // the monitor thread, which is not running while DeviceRemoved executes. - MutexAutoLock lock(mGamepadsMutex); for (Gamepad& gamepad : mGamepads) { if (gamepad == device) { IOHIDDeviceRegisterInputReportCallback( @@ -404,7 +390,6 @@ void DarwinGamepadService::ReportChangedCallback( if (context && report_type == kIOHIDReportTypeInput && report_length) { auto reportContext = static_cast(context); DarwinGamepadService* service = reportContext->service; - MutexAutoLock lock(service->mGamepadsMutex); service->mGamepads[reportContext->gamepadSlot].ReportChanged(report, report_length); } @@ -412,7 +397,16 @@ void DarwinGamepadService::ReportChangedCallback( void Gamepad::ReportChanged(uint8_t* report, CFIndex report_len) { MOZ_RELEASE_ASSERT(report_len <= mRemapper->GetMaxInputReportLength()); - mRemapper->ProcessTouchData(mHandle, report, report_len); + mRemapper->ProcessTouchData(mHandle, report); +} + +size_t Gamepad::WriteOutputReport(const std::vector& aReport) const { + IOReturn success = + IOHIDDeviceSetReport(mDevice, kIOHIDReportTypeOutput, aReport[0], + aReport.data(), aReport.size()); + + MOZ_ASSERT(success == kIOReturnSuccess); + return (success == kIOReturnSuccess) ? aReport.size() : 0; } void DarwinGamepadService::InputValueChanged(IOHIDValueRef value) { @@ -431,7 +425,6 @@ void DarwinGamepadService::InputValueChanged(IOHIDValueRef value) { IOHIDElementRef element = IOHIDValueGetElement(value); IOHIDDeviceRef device = IOHIDElementGetDevice(element); - MutexAutoLock lock(mGamepadsMutex); for (Gamepad& gamepad : mGamepads) { if (gamepad == device) { // Axis elements represent axes and d-pads. @@ -512,9 +505,7 @@ static CFMutableDictionaryRef MatchingDictionary(UInt32 inUsagePage, } DarwinGamepadService::DarwinGamepadService() - : mManager(nullptr), - mGamepadsMutex("DarwinGamepadService::mGamepads"), - mIsRunning(false) {} + : mManager(nullptr), mIsRunning(false) {} DarwinGamepadService::~DarwinGamepadService() { if (mManager != nullptr) CFRelease(mManager); @@ -621,38 +612,24 @@ void DarwinGamepadService::SetLightIndicatorColor( const uint8_t& aGreen, const uint8_t& aBlue) { // We get aControllerIdx from GamepadPlatformService::AddGamepad(), // It begins from 1 and is stored at Gamepad.id. - IOHIDDeviceRef device = nullptr; + const Gamepad* gamepad = MOZ_FIND_AND_VALIDATE( + aGamepadHandle, list_item.mHandle == aGamepadHandle, mGamepads); + if (!gamepad) { + MOZ_ASSERT(false); + return; + } + + RefPtr remapper = gamepad->mRemapper; + if (!remapper || + MOZ_IS_VALID(aLightColorIndex, + remapper->GetLightIndicatorCount() <= aLightColorIndex)) { + MOZ_ASSERT(false); + return; + } + std::vector report; - { - MutexAutoLock lock(mGamepadsMutex); - // the tainting macro confuses clang - MOZ_PUSH_IGNORE_THREAD_SAFETY - const Gamepad* gamepad = MOZ_FIND_AND_VALIDATE( - aGamepadHandle, list_item.mHandle == aGamepadHandle, mGamepads); - MOZ_POP_THREAD_SAFETY - if (!gamepad) { - MOZ_ASSERT(false); - return; - } - - RefPtr remapper = gamepad->mRemapper; - if (!remapper || - MOZ_IS_VALID(aLightColorIndex, - remapper->GetLightIndicatorCount() <= aLightColorIndex)) { - MOZ_ASSERT(false); - return; - } - - remapper->GetLightColorReport(aRed, aGreen, aBlue, report); - device = gamepad->Device(); - } - if (device) { - IOReturn success = IOHIDDeviceSetReport(device, kIOHIDReportTypeOutput, - report[0], report.data(), - report.size()); - MOZ_ASSERT(success == kIOReturnSuccess); - (void)success; - } + remapper->GetLightColorReport(aRed, aGreen, aBlue, report); + gamepad->WriteOutputReport(report); } } // namespace diff --git a/icecat/dom/gamepad/windows/WindowsGamepad.cpp b/icecat/dom/gamepad/windows/WindowsGamepad.cpp index e9d9f38cfd..2bf76406fa 100644 --- a/icecat/dom/gamepad/windows/WindowsGamepad.cpp +++ b/icecat/dom/gamepad/windows/WindowsGamepad.cpp @@ -883,8 +883,8 @@ bool WindowsGamepadService::HandleRawInput(HRAWINPUT handle) { } } - gamepad->remapper->ProcessTouchData( - gamepad->gamepadHandle, raw->data.hid.bRawData, raw->data.hid.dwSizeHid); + BYTE* rawData = raw->data.hid.bRawData; + gamepad->remapper->ProcessTouchData(gamepad->gamepadHandle, rawData); return true; } diff --git a/icecat/dom/geolocation/Geolocation.cpp b/icecat/dom/geolocation/Geolocation.cpp index a161208444..70ce9ce97c 100644 --- a/icecat/dom/geolocation/Geolocation.cpp +++ b/icecat/dom/geolocation/Geolocation.cpp @@ -1018,12 +1018,9 @@ void nsGeolocationService::RemoveLocator(Geolocation* aLocator) { } void nsGeolocationService::MoveLocators(nsGeolocationService* aService) { - for (Geolocation* loc : mGeolocators) { - aService->AddLocator(loc); - loc->SetService(aService); + for (uint32_t i = 0; i < mGeolocators.Length(); i++) { + aService->AddLocator(mGeolocators[i]); } - - mGeolocators.Clear(); } //////////////////////////////////////////////////// diff --git a/icecat/dom/geolocation/Geolocation.h b/icecat/dom/geolocation/Geolocation.h index 0dc56a9494..57814242d5 100644 --- a/icecat/dom/geolocation/Geolocation.h +++ b/icecat/dom/geolocation/Geolocation.h @@ -126,8 +126,6 @@ namespace mozilla::dom { * Can return a geolocation info */ class Geolocation final : public nsIGeolocationUpdate, public nsWrapperCache { - friend class ::nsGeolocationService; - public: NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS(Geolocation) @@ -236,9 +234,6 @@ class Geolocation final : public nsIGeolocationUpdate, public nsWrapperCache { // Initates the asynchronous process of filling the request. static void RequestIfPermitted(nsGeolocationRequest* request); - // Allow updating service for shutdown deregistering - void SetService(nsGeolocationService* aService) { mService = aService; } - // Two callback arrays. The first |mPendingCallbacks| holds objects for only // one callback and then they are released/removed from the array. The second // |mWatchingCallbacks| holds objects until the object is explicitly removed diff --git a/icecat/dom/html/HTMLAllCollection.cpp b/icecat/dom/html/HTMLAllCollection.cpp index a524cb0cc1..b26c96b3c2 100644 --- a/icecat/dom/html/HTMLAllCollection.cpp +++ b/icecat/dom/html/HTMLAllCollection.cpp @@ -151,7 +151,40 @@ void HTMLAllCollection::NamedGetter( } void HTMLAllCollection::GetSupportedNames(nsTArray& aNames) { - Collection()->GetSupportedNames(aNames, IsAllNamedElement); + // XXXbz this is very similar to nsContentList::GetSupportedNames, + // but has to check IsAllNamedElement for the name case. + AutoTArray atoms; + for (uint32_t i = 0; i < Length(); ++i) { + nsIContent* content = Item(i); + if (content->HasID()) { + nsAtom* id = content->GetID(); + MOZ_ASSERT(id != nsGkAtoms::_empty, "Empty ids don't get atomized"); + if (!atoms.Contains(id)) { + atoms.AppendElement(id); + } + } + + nsGenericHTMLElement* el = nsGenericHTMLElement::FromNode(content); + if (el) { + // Note: nsINode::HasName means the name is exposed on the document, + // which is false for options, so we don't check it here. + const nsAttrValue* val = el->GetParsedAttr(nsGkAtoms::name); + if (val && val->Type() == nsAttrValue::eAtom && + IsAllNamedElement(content)) { + nsAtom* name = val->GetAtomValue(); + MOZ_ASSERT(name != nsGkAtoms::_empty, "Empty names don't get atomized"); + if (!atoms.Contains(name)) { + atoms.AppendElement(name); + } + } + } + } + + uint32_t atomsLen = atoms.Length(); + nsString* names = aNames.AppendElements(atomsLen); + for (uint32_t i = 0; i < atomsLen; ++i) { + atoms[i]->ToString(names[i]); + } } JSObject* HTMLAllCollection::WrapObject(JSContext* aCx, diff --git a/icecat/dom/html/HTMLFieldSetElement.cpp b/icecat/dom/html/HTMLFieldSetElement.cpp index c84ebf8575..23128efc0f 100644 --- a/icecat/dom/html/HTMLFieldSetElement.cpp +++ b/icecat/dom/html/HTMLFieldSetElement.cpp @@ -23,6 +23,7 @@ HTMLFieldSetElement::HTMLFieldSetElement( : nsGenericHTMLFormControlElement(std::move(aNodeInfo), FormControlType::Fieldset), mElements(nullptr), + mFirstLegend(nullptr), mInvalidElementsCount(0) { //
is always barred from constraint validation. SetBarredFromConstraintValidation(true); @@ -40,7 +41,7 @@ HTMLFieldSetElement::~HTMLFieldSetElement() { NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLFieldSetElement, nsGenericHTMLFormControlElement, mValidity, - mElements, mFirstLegend) + mElements) NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED(HTMLFieldSetElement, nsGenericHTMLFormControlElement, @@ -109,7 +110,6 @@ void HTMLFieldSetElement::InsertChildBefore(nsIContent* aChild, nsIContent* aBeforeThis, bool aNotify, ErrorResult& aRv) { bool firstLegendHasChanged = false; - RefPtr oldFirstLegend = mFirstLegend; if (aChild->IsHTMLElement(nsGkAtoms::legend)) { if (!mFirstLegend) { @@ -134,7 +134,6 @@ void HTMLFieldSetElement::InsertChildBefore(nsIContent* aChild, nsGenericHTMLFormControlElement::InsertChildBefore(aChild, aBeforeThis, aNotify, aRv); if (aRv.Failed()) { - mFirstLegend = oldFirstLegend; return; } diff --git a/icecat/dom/html/HTMLFieldSetElement.h b/icecat/dom/html/HTMLFieldSetElement.h index ad006ee3c7..e0d2303cdc 100644 --- a/icecat/dom/html/HTMLFieldSetElement.h +++ b/icecat/dom/html/HTMLFieldSetElement.h @@ -126,7 +126,7 @@ class HTMLFieldSetElement final : public nsGenericHTMLFormControlElement, // List of elements which have this fieldset as first fieldset ancestor. nsTArray mDependentElements; - RefPtr mFirstLegend; + nsIContent* mFirstLegend; /** * Number of invalid and candidate for constraint validation diff --git a/icecat/dom/html/HTMLFormElement.cpp b/icecat/dom/html/HTMLFormElement.cpp index e6b4e8efab..83b84fe43f 100644 --- a/icecat/dom/html/HTMLFormElement.cpp +++ b/icecat/dom/html/HTMLFormElement.cpp @@ -249,7 +249,7 @@ void HTMLFormElement::MaybeSubmit(Element* aSubmitter) { // 1-4 of // https://html.spec.whatwg.org/multipage/forms.html#concept-form-submit - RefPtr doc = GetComposedDoc(); + Document* doc = GetComposedDoc(); if (mIsConstructingEntryList || !doc || (doc->GetSandboxFlags() & SANDBOXED_FORMS)) { return; diff --git a/icecat/dom/html/HTMLMediaElement.cpp b/icecat/dom/html/HTMLMediaElement.cpp index e6a89903ea..69a4ed5b03 100644 --- a/icecat/dom/html/HTMLMediaElement.cpp +++ b/icecat/dom/html/HTMLMediaElement.cpp @@ -2161,7 +2161,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLMediaElement, NS_IMPL_CYCLE_COLLECTION_UNLINK(mMediaKeys) NS_IMPL_CYCLE_COLLECTION_UNLINK(mIncomingMediaKeys) NS_IMPL_CYCLE_COLLECTION_UNLINK(mSelectedVideoStreamTrack) - tmp->mSelectedVideoStreamTrackGraph = nullptr; NS_IMPL_CYCLE_COLLECTION_UNLINK(mPendingPlayPromises) NS_IMPL_CYCLE_COLLECTION_UNLINK(mSeekDOMPromise) NS_IMPL_CYCLE_COLLECTION_UNLINK(mSetMediaKeysDOMPromise) @@ -2883,24 +2882,17 @@ void HTMLMediaElement::NotifyMediaTrackEnabled(dom::MediaTrack* aTrack) { mSelectedVideoStreamTrack = t->GetVideoStreamTrack(); mSelectedVideoStreamTrack->AddPrincipalChangeObserver(this); - if (!mSelectedVideoStreamTrackGraph) { - mSelectedVideoStreamTrackGraph = mSelectedVideoStreamTrack->Graph(); + if (mMediaStreamRenderer) { + mMediaStreamRenderer->AddTrack(mSelectedVideoStreamTrack); } - if (mSelectedVideoStreamTrackGraph == - mSelectedVideoStreamTrack->Graph()) { - if (mMediaStreamRenderer) { - mMediaStreamRenderer->AddTrack(mSelectedVideoStreamTrack); - } - if (mSecondaryMediaStreamRenderer) { - mSecondaryMediaStreamRenderer->AddTrack(mSelectedVideoStreamTrack); - } - if (mMediaInfo.HasVideo()) { - mMediaInfo.mVideo.SetAlpha(mSelectedVideoStreamTrack->HasAlpha()); - } - nsContentUtils::CombineResourcePrincipals( - &mSrcStreamVideoPrincipal, - mSelectedVideoStreamTrack->GetPrincipal()); + if (mSecondaryMediaStreamRenderer) { + mSecondaryMediaStreamRenderer->AddTrack(mSelectedVideoStreamTrack); } + if (mMediaInfo.HasVideo()) { + mMediaInfo.mVideo.SetAlpha(mSelectedVideoStreamTrack->HasAlpha()); + } + nsContentUtils::CombineResourcePrincipals( + &mSrcStreamVideoPrincipal, mSelectedVideoStreamTrack->GetPrincipal()); } } @@ -5492,7 +5484,6 @@ void HTMLMediaElement::EndSrcMediaStreamPlayback() { mSelectedVideoStreamTrack->RemovePrincipalChangeObserver(this); } mSelectedVideoStreamTrack = nullptr; - mSelectedVideoStreamTrackGraph = nullptr; MOZ_ASSERT_IF(mSecondaryMediaStreamRenderer, !mMediaStreamRenderer == !mSecondaryMediaStreamRenderer); diff --git a/icecat/dom/html/HTMLMediaElement.h b/icecat/dom/html/HTMLMediaElement.h index b144d529c9..6169af25a3 100644 --- a/icecat/dom/html/HTMLMediaElement.h +++ b/icecat/dom/html/HTMLMediaElement.h @@ -1490,7 +1490,6 @@ class HTMLMediaElement : public nsGenericHTMLElement, // The currently selected video stream track. RefPtr mSelectedVideoStreamTrack; - MediaTrackGraph* mSelectedVideoStreamTrackGraph = nullptr; const RefPtr mShutdownObserver; diff --git a/icecat/dom/html/HTMLSelectElement.cpp b/icecat/dom/html/HTMLSelectElement.cpp index 13b28aa30b..7ed06aa515 100644 --- a/icecat/dom/html/HTMLSelectElement.cpp +++ b/icecat/dom/html/HTMLSelectElement.cpp @@ -299,10 +299,24 @@ void HTMLSelectElement::InsertOptionsIntoList(nsIContent* aOptions, OnSelectionChanged(); } + // Get the frame stuff for notification. No need to flush here + // since if there's no frame for the select yet the select will + // get into the right state once it's created. + nsISelectControlFrame* selectFrame = nullptr; + AutoWeakFrame weakSelectFrame; + bool didGetFrame = false; + // Actually select the options if the added options warrant it for (int32_t i = aListIndex; i < insertIndex; i++) { - if (auto* frame = GetSelectFrame()) { - frame->AddOption(i); + // Notify the frame that the option is added + if (!didGetFrame || (selectFrame && !weakSelectFrame.IsAlive())) { + selectFrame = GetSelectFrame(); + weakSelectFrame = do_QueryFrame(selectFrame); + didGetFrame = true; + } + + if (selectFrame) { + selectFrame->AddOption(i); } RefPtr option = Item(i); @@ -318,7 +332,7 @@ void HTMLSelectElement::InsertOptionsIntoList(nsIContent* aOptions, // This is sort of a hack ... we need to notify that the option was // set and change selectedIndex even though we didn't really change // its value. - OnOptionSelected(i, true, false, aNotify); + OnOptionSelected(selectFrame, i, true, false, aNotify); } } @@ -701,7 +715,8 @@ bool HTMLSelectElement::IsOptionSelectedByIndex(int32_t aIndex) const { return option && option->Selected(); } -void HTMLSelectElement::OnOptionSelected(int32_t aIndex, bool aSelected, +void HTMLSelectElement::OnOptionSelected(nsISelectControlFrame* aSelectFrame, + int32_t aIndex, bool aSelected, bool aChangeOptionState, bool aNotify) { // Set the selected index @@ -721,8 +736,8 @@ void HTMLSelectElement::OnOptionSelected(int32_t aIndex, bool aSelected, } // Let the frame know too - if (auto* frame = GetSelectFrame()) { - frame->OnOptionSelected(aIndex, aSelected); + if (aSelectFrame) { + aSelectFrame->OnOptionSelected(aIndex, aSelected); } UpdateSelectedOptions(); @@ -793,6 +808,10 @@ bool HTMLSelectElement::SetOptionsSelectedByIndex(int32_t aStartIndex, bool optionsSelected = false; bool optionsDeselected = false; + nsISelectControlFrame* selectFrame = nullptr; + bool didGetFrame = false; + AutoWeakFrame weakSelectFrame; + if (aOptionsMask.contains(OptionFlag::IsSelected)) { // Setting selectedIndex to an out-of-bounds index means -1. (HTML5) if (aStartIndex < 0 || AssertedCast(aStartIndex) >= numItems || @@ -842,7 +861,15 @@ bool HTMLSelectElement::SetOptionsSelectedByIndex(int32_t aStartIndex, // the option has just been inserted we have to get in sync with it. if (option && (aOptionsMask.contains(OptionFlag::InsertingOptions) || !option->Selected())) { - OnOptionSelected(optIndex, true, !option->Selected(), + // To notify the frame if anything gets changed. No need + // to flush here, if there's no frame yet we don't need to + // force it to be created just to notify it about a change + // in the select. + selectFrame = GetSelectFrame(); + weakSelectFrame = do_QueryFrame(selectFrame); + didGetFrame = true; + + OnOptionSelected(selectFrame, optIndex, true, !option->Selected(), aOptionsMask.contains(OptionFlag::Notify)); optionsSelected = true; } @@ -862,7 +889,17 @@ bool HTMLSelectElement::SetOptionsSelectedByIndex(int32_t aStartIndex, HTMLOptionElement* option = Item(optIndex); // If the index is already deselected, ignore it. if (option && option->Selected()) { - OnOptionSelected(optIndex, false, true, + if (!didGetFrame || (selectFrame && !weakSelectFrame.IsAlive())) { + // To notify the frame if anything gets changed, don't + // flush, if the frame doesn't exist we don't need to + // create it just to tell it about this change. + selectFrame = GetSelectFrame(); + weakSelectFrame = do_QueryFrame(selectFrame); + + didGetFrame = true; + } + + OnOptionSelected(selectFrame, optIndex, false, true, aOptionsMask.contains(OptionFlag::Notify)); optionsDeselected = true; @@ -886,7 +923,17 @@ bool HTMLSelectElement::SetOptionsSelectedByIndex(int32_t aStartIndex, // If the index is already selected, ignore it. if (option && option->Selected()) { - OnOptionSelected(optIndex, false, true, + if (!didGetFrame || (selectFrame && !weakSelectFrame.IsAlive())) { + // To notify the frame if anything gets changed, don't + // flush, if the frame doesn't exist we don't need to + // create it just to tell it about this change. + selectFrame = GetSelectFrame(); + weakSelectFrame = do_QueryFrame(selectFrame); + + didGetFrame = true; + } + + OnOptionSelected(selectFrame, optIndex, false, true, aOptionsMask.contains(OptionFlag::Notify)); optionsDeselected = true; } diff --git a/icecat/dom/html/HTMLSelectElement.h b/icecat/dom/html/HTMLSelectElement.h index d2b0409c6d..6c8cda2b18 100644 --- a/icecat/dom/html/HTMLSelectElement.h +++ b/icecat/dom/html/HTMLSelectElement.h @@ -368,6 +368,7 @@ class HTMLSelectElement final : public nsGenericHTMLFormControlElementWithState, /** * Called to trigger notifications of frames and fixing selected index * + * @param aSelectFrame the frame for this content (could be null) * @param aIndex the index that was selected or deselected * @param aSelected whether the index was selected or deselected * @param aChangeOptionState if false, don't do anything to the @@ -375,8 +376,8 @@ class HTMLSelectElement final : public nsGenericHTMLFormControlElementWithState, * its selected state to aSelected. * @param aNotify whether to notify the style system and such */ - void OnOptionSelected(int32_t aIndex, bool aSelected, bool aChangeOptionState, - bool aNotify); + void OnOptionSelected(nsISelectControlFrame* aSelectFrame, int32_t aIndex, + bool aSelected, bool aChangeOptionState, bool aNotify); /** * Restore state to a particular state string (representing the options) * @param aNewSelected the state string to restore to diff --git a/icecat/dom/html/HTMLSlotElement.cpp b/icecat/dom/html/HTMLSlotElement.cpp index 2f7424d967..2b236f7bdc 100644 --- a/icecat/dom/html/HTMLSlotElement.cpp +++ b/icecat/dom/html/HTMLSlotElement.cpp @@ -231,9 +231,7 @@ void HTMLSlotElement::Assign(const Sequence& aNodes) { if (!mAssignedNodes.IsEmpty()) { changedSlots.EnsureInserted(this); if (root) { - // If not in a shadow tree, the flat tree is not really changing, so no - // need to invalidate layout. Same applies to other callers here. - ShadowRoot::InvalidateStyleAndLayoutOnSubtree(this); + root->InvalidateStyleAndLayoutOnSubtree(this); } ClearAssignedNodes(); } @@ -254,27 +252,29 @@ void HTMLSlotElement::Assign(const Sequence& aNodes) { // XXXsmaug Should we have a helper for // https://infra.spec.whatwg.org/#ordered-set? if (content->GetManualSlotAssignment() != this) { - // Step 3.1: If content's manual slot assignment refers to a slot, - // then remove node from that slot's manually assigned nodes. - if (HTMLSlotElement* prevSlot = content->GetManualSlotAssignment()) { - ShadowRoot* prevSlotRoot = prevSlot->GetContainingShadow(); - const bool wasAssigned = content->GetAssignedSlot() == prevSlot; - if (wasAssigned && prevSlotRoot && - changedSlots.EnsureInserted(prevSlot)) { - ShadowRoot::InvalidateStyleAndLayoutOnSubtree(prevSlot); + if (HTMLSlotElement* oldSlot = content->GetAssignedSlot()) { + if (changedSlots.EnsureInserted(oldSlot)) { + if (root) { + MOZ_ASSERT(oldSlot->GetContainingShadow() == root); + root->InvalidateStyleAndLayoutOnSubtree(oldSlot); + } } - prevSlot->RemoveManuallyAssignedNode(*content); } - // Step 3.2: Set content's manual slot assignment to this. + if (changedSlots.EnsureInserted(this)) { + if (root) { + root->InvalidateStyleAndLayoutOnSubtree(this); + } + } + // 3.1 (HTML Spec) If content's manual slot assignment refers to a slot, + // then remove node from that slot's manually assigned nodes. 3.2 (HTML + // Spec) Set content's manual slot assignment to this. + if (HTMLSlotElement* oldSlot = content->GetManualSlotAssignment()) { + oldSlot->RemoveManuallyAssignedNode(*content); + } content->SetManualSlotAssignment(this); - // Step 3.3: Append content to nodesSet. mManuallyAssignedNodes.AppendElement(content); - if (changedSlots.EnsureInserted(this) && root) { - ShadowRoot::InvalidateStyleAndLayoutOnSubtree(this); - } - if (root && host && content->GetParent() == host) { // Equivalent to 4.2.2.4.3 (DOM Spec) `Set slot's assigned nodes to // slottables` @@ -295,11 +295,7 @@ void HTMLSlotElement::Assign(const Sequence& aNodes) { } } } - } - // Fire slotchange for any remaining slots that are in a different shadow - // tree (cross-root case). The spec doesn't define an ordering here. - for (const auto& slot : changedSlots) { - slot->EnqueueSlotChangeEvent(); + MOZ_ASSERT(changedSlots.IsEmpty()); } } diff --git a/icecat/dom/html/TextTrackManager.cpp b/icecat/dom/html/TextTrackManager.cpp index 07af0819c7..496b40d870 100644 --- a/icecat/dom/html/TextTrackManager.cpp +++ b/icecat/dom/html/TextTrackManager.cpp @@ -202,7 +202,6 @@ void TextTrackManager::AddCues(TextTrack* aTextTrack) { for (uint32_t i = 0; i < cueList->Length(); ++i) { mNewCues->AddCue(*cueList->IndexedGetter(i, dummy)); } - RefPtr kungFuDeathGrip(this); MaybeRunTimeMarchesOn(); } } @@ -227,7 +226,6 @@ void TextTrackManager::RemoveTextTrack(TextTrack* aTextTrack, for (uint32_t i = 0; i < removeCueList->Length(); ++i) { mNewCues->RemoveCue(*((*removeCueList)[i])); } - RefPtr kungFuDeathGrip(this); MaybeRunTimeMarchesOn(); } } @@ -290,7 +288,6 @@ void TextTrackManager::NotifyCueAdded(TextTrackCue& aCue) { if (mNewCues) { mNewCues->AddCue(aCue); } - RefPtr kungFuDeathGrip(this); MaybeRunTimeMarchesOn(); } @@ -299,7 +296,6 @@ void TextTrackManager::NotifyCueRemoved(TextTrackCue& aCue) { if (mNewCues) { mNewCues->RemoveCue(aCue); } - RefPtr kungFuDeathGrip(this); MaybeRunTimeMarchesOn(); DispatchUpdateCueDisplay(); } @@ -346,7 +342,7 @@ void TextTrackManager::HonorUserPreferencesForTrackSelection() { // Step 4: Set all TextTracks with a kind of metadata that are disabled // to hidden. for (uint32_t i = 0; i < mTextTracks->Length(); i++) { - RefPtr track = (*mTextTracks)[i]; + TextTrack* track = (*mTextTracks)[i]; if (track->Kind() == TextTrackKind::Metadata && TrackIsDefault(track) && track->Mode() == TextTrackMode::Disabled) { track->SetMode(TextTrackMode::Hidden); @@ -387,11 +383,11 @@ void TextTrackManager::PerformTrackSelection(TextTrackKind aTextTrackKinds[], // first TextTrack in candidates with a default attribute to showing. // TODO: Bug 981691 - Honor user preferences for text track selection. for (uint32_t i = 0; i < candidates.Length(); i++) { - RefPtr track = candidates[i]; - if (TrackIsDefault(track) && track->Mode() == TextTrackMode::Disabled) { - track->SetMode(TextTrackMode::Showing); + if (TrackIsDefault(candidates[i]) && + candidates[i]->Mode() == TextTrackMode::Disabled) { + candidates[i]->SetMode(TextTrackMode::Showing); WEBVTT_LOGV("PerformTrackSelection set Showing kind %d", - static_cast(track->Kind())); + static_cast(candidates[i]->Kind())); return; } } @@ -835,7 +831,6 @@ void TextTrackManager::TimeMarchesOn() { void TextTrackManager::NotifyCueUpdated(TextTrackCue* aCue) { // TODO: Add/Reorder the cue to mNewCues if we have some optimization? WEBVTT_LOG("NotifyCueUpdated, cue=%p", aCue); - RefPtr kungFuDeathGrip(this); MaybeRunTimeMarchesOn(); // For the case "Texttrack.mode = hidden/showing", if the mode // changing between showing and hidden, TimeMarchesOn diff --git a/icecat/dom/html/nsHTMLDocument.cpp b/icecat/dom/html/nsHTMLDocument.cpp index 631aac97f3..92542ee71c 100644 --- a/icecat/dom/html/nsHTMLDocument.cpp +++ b/icecat/dom/html/nsHTMLDocument.cpp @@ -596,10 +596,6 @@ void nsHTMLDocument::NamedGetter(JSContext* aCx, const nsAString& aName, aRv.NoteJSContextException(aCx); return; } - - if (v.isNullOrUndefined()) { - return; - } } else { // Step 3. Otherwise, if elements has only one element, return that // element. diff --git a/icecat/dom/indexedDB/ActorsParent.cpp b/icecat/dom/indexedDB/ActorsParent.cpp index d984398e49..2e8f63ac60 100644 --- a/icecat/dom/indexedDB/ActorsParent.cpp +++ b/icecat/dom/indexedDB/ActorsParent.cpp @@ -1316,7 +1316,6 @@ class DatabaseConnection::UpdateRefcountFunction::FileInfoEntry final { } } void DecBySavepointDelta() { mDelta -= mSavepointDelta; } - void ResetSavepointDelta() { mSavepointDelta = 0; } SafeRefPtr ReleaseFileInfo() { return std::move(mFileInfo); } @@ -7572,15 +7571,6 @@ void DatabaseConnection::UpdateRefcountFunction::ReleaseSavepoint() { mConnection->AssertIsOnConnectionThread(); MOZ_ASSERT(mInSavepoint); - // The savepoint is being committed. The deltas it contributed are now - // permanent in mDelta, so reset mSavepointDelta on each entry before - // dropping the index. The FileInfoEntry objects themselves persist in - // mFileInfoEntries across savepoints; without this reset, a stale - // mSavepointDelta would be carried into the next savepoint. - for (const auto& entry : mSavepointEntriesIndex.Values()) { - entry->ResetSavepointDelta(); - } - mSavepointEntriesIndex.Clear(); mInSavepoint = false; } @@ -7593,7 +7583,6 @@ void DatabaseConnection::UpdateRefcountFunction::RollbackSavepoint() { for (const auto& entry : mSavepointEntriesIndex.Values()) { entry->DecBySavepointDelta(); - entry->ResetSavepointDelta(); } mInSavepoint = false; @@ -10338,13 +10327,6 @@ bool TransactionBase::VerifyRequestParams( if (NS_AUUF_OR_WARN_IF(!file)) { return false; } - - // Reject actors managed by a different Database - if (NS_AUUF_OR_WARN_IF(file->Manager() != - static_cast( - &GetDatabase()))) { - return false; - } break; case StructuredCloneFileBase::eMutableFile: { @@ -10566,8 +10548,8 @@ already_AddRefed TransactionBase::AllocCursor( if (NS_AUUF_OR_WARN_IF(!objectStoreMetadata)) { return nullptr; } - if (!aTrustParams && NS_AUUF_OR_WARN_IF(!VerifyRequestParams( - commonParams.optionalKeyRange()))) { + if (aTrustParams && NS_AUUF_OR_WARN_IF(!VerifyRequestParams( + commonParams.optionalKeyRange()))) { return nullptr; } direction = commonParams.direction(); @@ -17028,8 +17010,6 @@ void GetDatabasesOp::SendResults() { if (HasFailed()) { mResolver(ClampResultCode(ResultCode())); } else { - std::sort(mDatabaseMetadataArray.begin(), mDatabaseMetadataArray.end(), - [](const auto& a, const auto& b) { return a.name() < b.name(); }); mResolver(mDatabaseMetadataArray); } @@ -18741,14 +18721,6 @@ mozilla::ipc::IPCResult NormalTransactionOp::RecvContinue( const PreprocessResponse& aResponse) { AssertIsOnOwningThread(); - // mWaitingForContinue is only touched on the owning thread. If it is not - // set, either we never sent Preprocess (child is misbehaving) or the op is - // still running on the connection thread. Calling NoteContinueReceived() - // in either case would race Cleanup() with DoDatabaseWork(). - if (NS_WARN_IF(!IsWaitingForContinue())) { - return IPC_FAIL(this, "Continue received when not waiting for continue"); - } - switch (aResponse.type()) { case PreprocessResponse::Tnsresult: SetFailureCode(aResponse.get_nsresult()); @@ -19002,8 +18974,7 @@ nsresult ObjectStoreAddOrPutRequestOp::DoDatabaseWork( // Update index keys if primary key is preserved in child. for (auto& updateInfo : mParams.indexUpdateInfos()) { - QM_TRY( - updateInfo.value().MaybeUpdateAutoIncrementKey(autoIncrementNum)); + updateInfo.value().MaybeUpdateAutoIncrementKey(autoIncrementNum); } } else if (key.IsFloat()) { double numericKey = key.ToFloat(); diff --git a/icecat/dom/indexedDB/FileInfoImpl.h b/icecat/dom/indexedDB/FileInfoImpl.h index ded50f0210..b7ffa3be8c 100644 --- a/icecat/dom/indexedDB/FileInfoImpl.h +++ b/icecat/dom/indexedDB/FileInfoImpl.h @@ -74,7 +74,7 @@ void FileInfo::UpdateReferences(ThreadSafeAutoRefCnt& aRefCount, aRefCount = aRefCount + aDelta; - if (mRefCnt > 0 || mDBRefCnt > 0) { + if (mRefCnt + mDBRefCnt > 0) { return; } diff --git a/icecat/dom/indexedDB/IDBObjectStore.cpp b/icecat/dom/indexedDB/IDBObjectStore.cpp index 7b7300ec58..eeba94a1e8 100644 --- a/icecat/dom/indexedDB/IDBObjectStore.cpp +++ b/icecat/dom/indexedDB/IDBObjectStore.cpp @@ -454,15 +454,9 @@ JSObject* CopyingStructuredCloneReadCallback( RefPtr blob = fileChild.BlobPtr(); MOZ_ASSERT(blob->IsFile()); - RefPtr file; - if (blob->HasExpandos()) { - const RefPtr clonedBlob = blob->Clone(); - file = clonedBlob->ToFile(); - } else { - file = blob->ToFile(); - } + RefPtr file = blob->ToFile(); if (!file) { - MOZ_ASSERT(false, "Could not create file!"); + MOZ_ASSERT(false, "Could not convert blob to file!"); return nullptr; } @@ -495,29 +489,11 @@ JSObject* CopyingStructuredCloneReadCallback( StructuredCloneFileChild& file = cloneInfo->mFiles[aData]; switch (static_cast(aTag)) { - case SCTAG_DOM_BLOB: { + case SCTAG_DOM_BLOB: MOZ_ASSERT(file.Type() == StructuredCloneFileBase::eBlob); MOZ_ASSERT(!file.Blob().IsFile()); - JS::Rooted result(aCx); - if (file.Blob().HasExpandos()) { - const RefPtr newBlob = file.Blob().Clone(); - MOZ_ASSERT(newBlob); - - if (!WrapAsJSObject(aCx, newBlob, &result)) { - return nullptr; - } - } else { - // If the blob has no expandos, we can return the existing wrapper - // directly. This is an optimization over step 10 of - // https://w3c.github.io/IndexedDB/#add-or-put since the result is - // observably equivalent when there are no user-added properties. - if (!WrapAsJSObject(aCx, file.MutableBlob(), &result)) { - return nullptr; - } - } - return result; - } + return WrapAsJSObject(aCx, file.MutableBlob()); case SCTAG_DOM_FILE: { MOZ_ASSERT(file.Type() == StructuredCloneFileBase::eBlob); @@ -526,30 +502,15 @@ JSObject* CopyingStructuredCloneReadCallback( { // Create a scope so ~RefPtr fires before returning an unwrapped - // JSObject*. Otherwise ~JS::Rooted will unroot the object, then - // ~RefPtr will trigger GC before the value is returned and rooted - // again by the caller. - // See bug 1480640 for details. + // JS::Value. const RefPtr blob = file.BlobPtr(); MOZ_ASSERT(blob->IsFile()); - // Same logic as blob above: clone only if necessary - if (blob->HasExpandos()) { - const RefPtr clonedBlob = blob->Clone(); - MOZ_ASSERT(clonedBlob); - const RefPtr file = clonedBlob->ToFile(); - MOZ_ASSERT(file); + const RefPtr file = blob->ToFile(); + MOZ_ASSERT(file); - if (!WrapAsJSObject(aCx, file, &result)) { - return nullptr; - } - } else { - const RefPtr file = blob->ToFile(); - MOZ_ASSERT(file); - - if (!WrapAsJSObject(aCx, file, &result)) { - return nullptr; - } + if (!WrapAsJSObject(aCx, file, &result)) { + return nullptr; } } diff --git a/icecat/dom/indexedDB/Key.cpp b/icecat/dom/indexedDB/Key.cpp index 1f175ca7eb..8d0b2b563a 100644 --- a/icecat/dom/indexedDB/Key.cpp +++ b/icecat/dom/indexedDB/Key.cpp @@ -585,34 +585,19 @@ void Key::ReserveAutoIncrementKey(bool aFirstOfArray) { mozilla::BigEndian::writeUint64(buffer, UINT64_MAX); } -Result Key::MaybeUpdateAutoIncrementKey(int64_t aKey) { +void Key::MaybeUpdateAutoIncrementKey(int64_t aKey) { if (mAutoIncrementKeyOffsets.IsEmpty()) { - return Ok{}; + return; } - static constexpr auto maxOffset = - KEY_MAXIMUM_BUFFER_LENGTH - sizeof(double) - 1; - for (uint32_t offset : mAutoIncrementKeyOffsets) { - if (offset > maxOffset) { - return Err(NS_ERROR_DOM_INDEXEDDB_KEY_ERR); - } - char* buffer; - const auto capacity = mBuffer.GetMutableData(&buffer); - MOZ_ALWAYS_TRUE(capacity); - - if (offset + sizeof(double) > capacity) { - return Err(NS_ERROR_DOM_INDEXEDDB_KEY_ERR); - } - + MOZ_ALWAYS_TRUE(mBuffer.GetMutableData(&buffer)); buffer += offset; WriteDoubleToUint64(buffer, double(aKey)); } TrimBuffer(); - - return Ok{}; } void Key::WriteDoubleToUint64(char* aBuffer, double aValue) { @@ -940,12 +925,6 @@ Result Key::EncodeBinary( return Err(NS_ERROR_DOM_INDEXEDDB_DATA_ERR); } - JSObject* obj = aArrayBufferOrView.asObjectUnbarriered(); - if (JS::IsSharedArrayBufferObject(obj) || - (JS_IsArrayBufferViewObject(obj) && JS::IsArrayBufferViewShared(obj))) { - return Err(NS_ERROR_DOM_INDEXEDDB_DATA_ERR); - } - // 1. Let aData be the result of getting the bytes held by the buffer source // input. // 2. Return a new key with type binary and value aData. diff --git a/icecat/dom/indexedDB/Key.h b/icecat/dom/indexedDB/Key.h index 73aba88de7..523145e1cc 100644 --- a/icecat/dom/indexedDB/Key.h +++ b/icecat/dom/indexedDB/Key.h @@ -185,7 +185,7 @@ class Key { void ReserveAutoIncrementKey(bool aFirstOfArray); - Result MaybeUpdateAutoIncrementKey(int64_t aKey); + void MaybeUpdateAutoIncrementKey(int64_t aKey); private: class MOZ_STACK_CLASS ArrayValueEncoder; diff --git a/icecat/dom/interfaces/base/nsIDOMWindowUtils.idl b/icecat/dom/interfaces/base/nsIDOMWindowUtils.idl index c6d41a78b3..1fc0d32fc4 100644 --- a/icecat/dom/interfaces/base/nsIDOMWindowUtils.idl +++ b/icecat/dom/interfaces/base/nsIDOMWindowUtils.idl @@ -2193,7 +2193,7 @@ interface nsIDOMWindowUtils : nsISupports { /** * Start capturing each WebRender frame to disk. * - * a new directory with name "wr-capture" is created to hold the captures. + * |aPath| is the name of a new directory to be created to hold the captures. * it is relative to: * - the |PUBLIC_STORAGE| environment variable, if set, else * - the |MOZ_UPLOAD_DIR| environment variable, if set, else @@ -2201,14 +2201,15 @@ interface nsIDOMWindowUtils : nsISupports { * the current directory. * * If there is already a directory with the given name, a numeric suffix is - * added to ensure a fresh directory is created. + * added to ensure a fresh directory is created. This means that you can't + * be sure your capture directory is actually named |aPath|. * * |aFlags| is a set of flags from |webrender::render_api::CaptureBits|. * * If there is already a sequence capture in progress, stop it and start a new * one, with the new path and flags. */ - void wrStartCaptureSequence(in uint32_t aFlags); + void wrStartCaptureSequence(in ACString aPath, in uint32_t aFlags); /** * Stop a capture begun with |wrStartCaptureSequence|. diff --git a/icecat/dom/ipc/BrowserBridgeParent.cpp b/icecat/dom/ipc/BrowserBridgeParent.cpp index 513dd6c8cd..736ea9e9e2 100644 --- a/icecat/dom/ipc/BrowserBridgeParent.cpp +++ b/icecat/dom/ipc/BrowserBridgeParent.cpp @@ -280,16 +280,10 @@ IPCResult BrowserBridgeParent::RecvSetEmbedderAccessible( # if defined(ANDROID) MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); # endif - if (!aDoc && !mEmbedderAccessibleDoc) { - return IPC_FAIL(this, "Embedder doc shouldn't be cleared if it wasn't set"); - } - if (mEmbedderAccessibleDoc && aDoc && mEmbedderAccessibleDoc != aDoc) { - return IPC_FAIL(this, - "Embedder doc shouldn't change from one doc to another"); - } - if (aDoc && aDoc->Manager() != Manager()) { - return IPC_FAIL(this, "Embedder doc not managed by our PBrowser"); - } + MOZ_ASSERT(aDoc || mEmbedderAccessibleDoc, + "Embedder doc shouldn't be cleared if it wasn't set"); + MOZ_ASSERT(!mEmbedderAccessibleDoc || !aDoc || mEmbedderAccessibleDoc == aDoc, + "Embedder doc shouldn't change from one doc to another"); if (!aDoc && mEmbedderAccessibleDoc && !mEmbedderAccessibleDoc->IsShutdown()) { // We're clearing the embedder doc, so remove the pending child doc addition @@ -299,22 +293,14 @@ IPCResult BrowserBridgeParent::RecvSetEmbedderAccessible( mEmbedderAccessibleDoc = static_cast(aDoc); mEmbedderAccessibleID = aID; if (!aDoc) { - if (aID) { - return IPC_FAIL(this, "Attempt to clear embedder but id given"); - } + MOZ_ASSERT(!aID); return IPC_OK(); } - if (!aID) { - return IPC_FAIL(this, "Attempt to set embedder without id"); - } + MOZ_ASSERT(aID); if (GetDocAccessibleParent()) { // The embedded DocAccessibleParent has already been created. This can - // happen if, for example, an iframe is hidden and then shown or an iframe - // Accessible is re-created. In the case of re-creation, the old iframe - // Accessible still exists at this point because this IPDL message is - // received *before* we receive the accessibility hide and show events. This - // is okay; DocAccessibleParent will store this as a pending OOP child - // document and add it when the new OuterDocAccessible arrives. + // happen if, for example, an iframe is hidden and then shown or + // an iframe is reflowed by layout. mEmbedderAccessibleDoc->AddChildDoc(this); } return IPC_OK(); diff --git a/icecat/dom/ipc/BrowserChild.cpp b/icecat/dom/ipc/BrowserChild.cpp index 0e190c4cfc..310e22a130 100644 --- a/icecat/dom/ipc/BrowserChild.cpp +++ b/icecat/dom/ipc/BrowserChild.cpp @@ -2440,10 +2440,6 @@ mozilla::ipc::IPCResult BrowserChild::RecvRealKeyEvent( // we need to clear the flag explicitly here because ParamTraits should // keep checking the flag for avoiding regression. localEvent.mFlags.mNoRemoteProcessDispatch = false; - // The parent process won't use the native key bindings of the reply event - // anymore. To save the IPC cost, let's clear the edit commands before sending - // the event back to the parent process. - localEvent.PreventNativeKeyBindings(); SendReplyKeyEvent(localEvent, aUUID); return IPC_OK(); diff --git a/icecat/dom/ipc/BrowserParent.cpp b/icecat/dom/ipc/BrowserParent.cpp index a53c80bbbf..7b904bcee4 100644 --- a/icecat/dom/ipc/BrowserParent.cpp +++ b/icecat/dom/ipc/BrowserParent.cpp @@ -1291,14 +1291,6 @@ mozilla::ipc::IPCResult BrowserParent::RecvPDocAccessibleConstructor( return IPC_OK(); } - if (auto* prevTopLevel = GetTopLevelDocAccessible()) { - // Sometimes, we can get a new top level DocAccessibleParent before the - // old one gets destroyed. The old one will die pretty shortly anyway, - // so just destroy it now. If we don't do this, GetTopLevelDocAccessible() - // might return the wrong document for a short while. - prevTopLevel->Destroy(); - } - if (aBrowsingContext) { doc->SetBrowsingContext(aBrowsingContext.get_canonical()); } @@ -1333,6 +1325,13 @@ mozilla::ipc::IPCResult BrowserParent::RecvPDocAccessibleConstructor( return IPC_FAIL_NO_REASON(this); } + if (auto* prevTopLevel = GetTopLevelDocAccessible()) { + // Sometimes, we can get a new top level DocAccessibleParent before the + // old one gets destroyed. The old one will die pretty shortly anyway, + // so just destroy it now. If we don't do this, GetTopLevelDocAccessible() + // might return the wrong document for a short while. + prevTopLevel->Destroy(); + } doc->SetTopLevel(); a11y::DocManager::RemoteDocAdded(doc); # ifdef XP_WIN @@ -2287,12 +2286,6 @@ bool BrowserParent::SendHandleTap( } } } - // SetFocus may have run script (blur handlers) that destroyed this - // actor. Callers hold a strong reference to us to reading - // mIsDestroyed is safe, but do not send an IPC message in that case. - if (mIsDestroyed) { - return false; - } } return Manager()->IsInputPriorityEventEnabled() ? PBrowserParent::SendHandleTap( @@ -2789,10 +2782,7 @@ mozilla::ipc::IPCResult BrowserParent::RecvReplyKeyEvent( NS_WARN_IF(data.mPseudoCharCode != aEvent.mPseudoCharCode) || NS_WARN_IF(data.mKeyNameIndex != aEvent.mKeyNameIndex) || NS_WARN_IF(data.mCodeNameIndex != aEvent.mCodeNameIndex) || - NS_WARN_IF(data.mModifiers != aEvent.mModifiers) || - // The child process should've already cleared the editor commands - // because we don't use them. - NS_WARN_IF(aEvent.HasEditCommands())) { + NS_WARN_IF(data.mModifiers != aEvent.mModifiers)) { // Got different event data from what we stored before dispatching an // event with the ID. return Nothing(); @@ -3919,18 +3909,13 @@ mozilla::ipc::IPCResult BrowserParent::RecvInvokeDragSession( cookieJarSettings, aSourceWindowContext.GetMaybeDiscarded(), aSourceTopWindowContext.GetMaybeDiscarded()); - if (aVisualDnDData && aDragRect.width >= 0 && aDragRect.height >= 0) { - const auto checkedSize = CheckedInt(aDragRect.height) * aStride; - const auto computedStride = - CheckedInt(aDragRect.width) * gfx::BytesPerPixel(aFormat); - const auto checkedStride = CheckedInt(aStride); - if (checkedSize.isValid() && checkedSize.value() >= 0 && - aVisualDnDData->Size() >= static_cast(checkedSize.value()) && - computedStride.isValid() && checkedStride.isValid() && - computedStride.value() <= checkedStride.value()) { + if (aVisualDnDData) { + const auto checkedSize = CheckedInt(aDragRect.height) * aStride; + if (checkedSize.isValid() && + aVisualDnDData->Size() >= checkedSize.value()) { dragStartData->SetVisualization(gfx::CreateDataSourceSurfaceFromData( gfx::IntSize(aDragRect.width, aDragRect.height), aFormat, - aVisualDnDData->Data(), checkedStride.value())); + aVisualDnDData->Data(), aStride)); } } diff --git a/icecat/dom/ipc/BrowserParent.h b/icecat/dom/ipc/BrowserParent.h index 69589f7d83..14989a9eaa 100644 --- a/icecat/dom/ipc/BrowserParent.h +++ b/icecat/dom/ipc/BrowserParent.h @@ -590,9 +590,6 @@ class BrowserParent final : public PBrowserParent, bool SendSelectionEvent(mozilla::WidgetSelectionEvent& aEvent); - // TODO(bug 2028623): Mark this function and callers as MOZ_CAN_RUN_SCRIPT. - // Current callers hold a strong reference to `this` but MOZ_CAN_RUN_SCRIPT - // would enforce that via static analysis. MOZ_CAN_RUN_SCRIPT_BOUNDARY bool SendHandleTap( TapType aType, const LayoutDevicePoint& aPoint, Modifiers aModifiers, const ScrollableLayerGuid& aGuid, uint64_t aInputBlockId, diff --git a/icecat/dom/ipc/ClonedErrorHolder.cpp b/icecat/dom/ipc/ClonedErrorHolder.cpp index b3b8d592db..8db9bd064e 100644 --- a/icecat/dom/ipc/ClonedErrorHolder.cpp +++ b/icecat/dom/ipc/ClonedErrorHolder.cpp @@ -174,12 +174,7 @@ static bool ReadStringPair(JSStructuredCloneReader* aReader, bool ClonedErrorHolder::WriteStructuredClone(JSContext* aCx, JSStructuredCloneWriter* aWriter, StructuredCloneHolder* aHolder) { - const auto& data = mStack.BufferData(); - CheckedUint32 dataSize(data.Size()); - if (!dataSize.isValid()) { - return false; - } - + auto& data = mStack.BufferData(); return JS_WriteUint32Pair(aWriter, SCTAG_DOM_CLONED_ERROR_OBJECT, 0) && WriteStringPair(aWriter, mName, mMessage) && WriteStringPair(aWriter, mFilename, mSourceLine) && @@ -188,7 +183,7 @@ bool ClonedErrorHolder::WriteStructuredClone(JSContext* aCx, JS_WriteUint32Pair(aWriter, mTokenOffset, mErrorNumber) && JS_WriteUint32Pair(aWriter, uint32_t(mType), uint32_t(mExnType)) && JS_WriteUint32Pair(aWriter, mCode, uint32_t(mResult)) && - JS_WriteUint32Pair(aWriter, dataSize.value(), + JS_WriteUint32Pair(aWriter, data.Size(), JS_STRUCTURED_CLONE_VERSION) && data.ForEachDataChunk([&](const char* aData, size_t aSize) { return JS_WriteBytes(aWriter, aData, aSize); diff --git a/icecat/dom/ipc/ContentParent.cpp b/icecat/dom/ipc/ContentParent.cpp index 0a44a55d5b..20e5dc975b 100644 --- a/icecat/dom/ipc/ContentParent.cpp +++ b/icecat/dom/ipc/ContentParent.cpp @@ -4413,21 +4413,22 @@ bool ContentParent::SendRequestMemoryReport( const bool& aMinimizeMemoryUsage, const Maybe& aDMDFile) { // This automatically cancels the previous request. mMemoryReportRequest = MakeUnique(aGeneration); + // If we run the callback in response to a reply, then by definition |this| + // is still alive, so the ref pointer is redundant, but it seems easier + // to hold a strong reference than to worry about that. RefPtr self(this); - PContentParent::SendRequestMemoryReport(aGeneration, aAnonymize, - aMinimizeMemoryUsage, aDMDFile) - ->Then( - GetCurrentSerialEventTarget(), __func__, - [self](uint32_t aGeneration2) { - if (self->mMemoryReportRequest) { - self->mMemoryReportRequest->Finish(aGeneration2); - self->mMemoryReportRequest = nullptr; - } - }, - [self](mozilla::ipc::ResponseRejectReason) { - self->mMemoryReportRequest = nullptr; - }); - return true; + PContentParent::SendRequestMemoryReport( + aGeneration, aAnonymize, aMinimizeMemoryUsage, aDMDFile, + [&, self](const uint32_t& aGeneration2) { + if (self->mMemoryReportRequest) { + self->mMemoryReportRequest->Finish(aGeneration2); + self->mMemoryReportRequest = nullptr; + } + }, + [&, self](mozilla::ipc::ResponseRejectReason) { + self->mMemoryReportRequest = nullptr; + }); + return IPC_OK(); } mozilla::ipc::IPCResult ContentParent::RecvAddMemoryReport( @@ -5129,18 +5130,8 @@ ContentParent::AllocPContentPermissionRequestParent( topPrincipal = principal; } return nsContentPermissionUtils::CreateContentPermissionRequestParent( - tp->GetOwnerElement(), aPrincipal, topPrincipal, aIsHandlingUserInput, - aMaybeUnsafePermissionDelegate, aTabId); -} - -mozilla::ipc::IPCResult ContentParent::RecvPContentPermissionRequestConstructor( - PContentPermissionRequestParent* aActor, - nsTArray&& aRequests, nsIPrincipal* aPrincipal, - nsIPrincipal* aTopLevelPrincipal, const bool& aIsHandlingUserInput, - const bool& aMaybeUnsafePermissionDelegate, const TabId& tabId) { - nsContentPermissionUtils::InitContentPermissionRequestParent( - aActor, std::move(aRequests)); - return IPC_OK(); + aRequests, tp->GetOwnerElement(), aPrincipal, topPrincipal, + aIsHandlingUserInput, aMaybeUnsafePermissionDelegate, aTabId); } bool ContentParent::DeallocPContentPermissionRequestParent( diff --git a/icecat/dom/ipc/ContentParent.h b/icecat/dom/ipc/ContentParent.h index 96b1763364..75ab5336d1 100644 --- a/icecat/dom/ipc/ContentParent.h +++ b/icecat/dom/ipc/ContentParent.h @@ -538,12 +538,6 @@ class ContentParent final : public PContentParent, nsIPrincipal* aTopLevelPrincipal, const bool& aIsHandlingUserInput, const bool& aMaybeUnsafePermissionDelegate, const TabId& aTabId); - mozilla::ipc::IPCResult RecvPContentPermissionRequestConstructor( - PContentPermissionRequestParent* aActor, - nsTArray&& aRequests, nsIPrincipal* aPrincipal, - nsIPrincipal* aTopLevelPrincipal, const bool& aIsHandlingUserInput, - const bool& aMaybeUnsafePermissionDelegate, const TabId& tabId) override; - bool DeallocPContentPermissionRequestParent( PContentPermissionRequestParent* actor); diff --git a/icecat/dom/ipc/PBrowser.ipdl b/icecat/dom/ipc/PBrowser.ipdl index 64cf5be0bf..44f5d290f8 100644 --- a/icecat/dom/ipc/PBrowser.ipdl +++ b/icecat/dom/ipc/PBrowser.ipdl @@ -30,7 +30,6 @@ include PTabContext; include PBackgroundSharedTypes; include "mozilla/AntiTrackingIPCUtils.h"; -include "mozilla/EnumSet.h"; include "mozilla/dom/BindingIPCUtils.h"; include "mozilla/dom/CSPMessageUtils.h"; include "mozilla/dom/DocShellMessageUtils.h"; @@ -63,7 +62,7 @@ using struct mozilla::void_t from "mozilla/ipc/IPCCore.h"; using mozilla::WindowsHandle from "mozilla/ipc/IPCTypes.h"; using class mozilla::WidgetCompositionEvent from "ipc/nsGUIEventIPC.h"; using struct mozilla::widget::IMENotification from "mozilla/widget/IMEData.h"; -using mozilla::widget::IMENotificationRequests from "mozilla/widget/IMEData.h"; +using struct mozilla::widget::IMENotificationRequests from "mozilla/widget/IMEData.h"; using struct mozilla::widget::IMEState from "mozilla/widget/IMEData.h"; using struct mozilla::widget::InputContext from "mozilla/widget/IMEData.h"; using struct mozilla::widget::InputContextAction from "mozilla/widget/IMEData.h"; diff --git a/icecat/dom/ipc/PContentPermissionRequest.ipdl b/icecat/dom/ipc/PContentPermissionRequest.ipdl index 90a6032b96..0ce5acbe95 100644 --- a/icecat/dom/ipc/PContentPermissionRequest.ipdl +++ b/icecat/dom/ipc/PContentPermissionRequest.ipdl @@ -16,6 +16,7 @@ protocol PContentPermissionRequest manager PContent; parent: + async prompt(); async Destroy(); child: diff --git a/icecat/dom/ipc/RefMessageBodyService.cpp b/icecat/dom/ipc/RefMessageBodyService.cpp index 4174c2c854..e340443a53 100644 --- a/icecat/dom/ipc/RefMessageBodyService.cpp +++ b/icecat/dom/ipc/RefMessageBodyService.cpp @@ -45,28 +45,12 @@ RefMessageBodyService::RefMessageBodyService( MOZ_DIAGNOSTIC_ASSERT(sService == nullptr); } -MozExternalRefCountType RefMessageBodyService::AddRef() { - MOZ_ASSERT(int32_t(mRefCnt) >= 0, "illegal refcnt"); - nsrefcnt cnt = ++mRefCnt; - NS_LOG_ADDREF(this, cnt, "RefMessageBodyService", sizeof(*this)); - return cnt; -} - -MozExternalRefCountType RefMessageBodyService::Release() { +RefMessageBodyService::~RefMessageBodyService() { StaticMutexAutoLock lock(sRefMessageBodyServiceMutex); - nsrefcnt cnt = --mRefCnt; - NS_LOG_RELEASE(this, cnt, "RefMessageBodyService"); - if (cnt > 0) { - return cnt; - } MOZ_DIAGNOSTIC_ASSERT(sService == this); sService = nullptr; - delete this; - return 0; } -RefMessageBodyService::~RefMessageBodyService() = default; - const nsID RefMessageBodyService::Register( already_AddRefed aBody, ErrorResult& aRv) { RefPtr body = aBody; diff --git a/icecat/dom/ipc/RefMessageBodyService.h b/icecat/dom/ipc/RefMessageBodyService.h index 14e98c680a..6cca2a836e 100644 --- a/icecat/dom/ipc/RefMessageBodyService.h +++ b/icecat/dom/ipc/RefMessageBodyService.h @@ -107,9 +107,7 @@ class RefMessageBody final { class RefMessageBodyService final { public: - MozExternalRefCountType AddRef(); - MozExternalRefCountType Release(); - using HasThreadSafeRefCnt = std::true_type; + NS_INLINE_DECL_THREADSAFE_REFCOUNTING(RefMessageBodyService) static already_AddRefed GetOrCreate(); @@ -127,9 +125,6 @@ class RefMessageBodyService final { explicit RefMessageBodyService(const StaticMutexAutoLock& aProofOfLock); ~RefMessageBodyService(); - protected: - ::mozilla::ThreadSafeAutoRefCnt mRefCnt; - static RefMessageBodyService* GetOrCreateInternal( const StaticMutexAutoLock& aProofOfLock); diff --git a/icecat/dom/ipc/ReferrerInfoUtils.cpp b/icecat/dom/ipc/ReferrerInfoUtils.cpp index ac5a47ef02..a2728e342c 100644 --- a/icecat/dom/ipc/ReferrerInfoUtils.cpp +++ b/icecat/dom/ipc/ReferrerInfoUtils.cpp @@ -7,19 +7,25 @@ #include "mozilla/dom/ReferrerInfoUtils.h" #include "ipc/IPCMessageUtilsSpecializations.h" -#include "mozilla/dom/ReferrerInfo.h" -#include "nsQueryObject.h" +#include "nsSerializationHelper.h" +#include "nsString.h" namespace IPC { + void ParamTraits::Write(MessageWriter* aWriter, nsIReferrerInfo* aParam) { bool isNull = !aParam; WriteParam(aWriter, isNull); - if (!isNull) { - RefPtr info = do_QueryObject(aParam); - MOZ_ASSERT(info); - info->Serialize(aWriter); + if (isNull) { + return; } + nsAutoCString infoString; + nsresult rv = NS_SerializeToString(aParam, infoString); + if (NS_FAILED(rv)) { + MOZ_CRASH("Unable to serialize referrer info."); + return; + } + WriteParam(aWriter, infoString); } bool ParamTraits::Read(MessageReader* aReader, @@ -32,7 +38,17 @@ bool ParamTraits::Read(MessageReader* aReader, *aResult = nullptr; return true; } - return mozilla::dom::ReferrerInfo::Deserialize(aReader, aResult); + nsAutoCString infoString; + if (!ReadParam(aReader, &infoString)) { + return false; + } + nsCOMPtr iSupports; + nsresult rv = NS_DeserializeObject(infoString, getter_AddRefs(iSupports)); + NS_ENSURE_SUCCESS(rv, false); + nsCOMPtr referrerInfo = do_QueryInterface(iSupports); + NS_ENSURE_TRUE(referrerInfo, false); + *aResult = ToRefPtr(std::move(referrerInfo)); + return true; } } // namespace IPC diff --git a/icecat/dom/ipc/VsyncParent.cpp b/icecat/dom/ipc/VsyncParent.cpp index ecd66765e4..617e054cd3 100644 --- a/icecat/dom/ipc/VsyncParent.cpp +++ b/icecat/dom/ipc/VsyncParent.cpp @@ -8,6 +8,7 @@ #include "mozilla/Unused.h" #include "nsThreadUtils.h" +#include "nsIThread.h" namespace mozilla::dom { diff --git a/icecat/dom/ipc/VsyncParent.h b/icecat/dom/ipc/VsyncParent.h index 0ad801d784..3fe8a8e5f2 100644 --- a/icecat/dom/ipc/VsyncParent.h +++ b/icecat/dom/ipc/VsyncParent.h @@ -12,7 +12,7 @@ #include "nsCOMPtr.h" #include "mozilla/RefPtr.h" -#include "nsIThread.h" +class nsIThread; namespace mozilla::dom { @@ -22,8 +22,7 @@ namespace mozilla::dom { class VsyncParent final : public PVsyncParent, public VsyncObserver { friend class PVsyncParent; - NS_INLINE_DECL_THREADSAFE_REFCOUNTING_WITH_DELETE_ON_EVENT_TARGET( - VsyncParent, mInitialThread, override) + NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VsyncParent, override) public: VsyncParent(); diff --git a/icecat/dom/localstorage/ActorsParent.cpp b/icecat/dom/localstorage/ActorsParent.cpp index f0301e3bfe..1161a030c4 100644 --- a/icecat/dom/localstorage/ActorsParent.cpp +++ b/icecat/dom/localstorage/ActorsParent.cpp @@ -6595,12 +6595,6 @@ mozilla::ipc::IPCResult LSRequestBase::RecvCancel() { mozilla::ipc::IPCResult LSRequestBase::RecvFinish() { AssertIsOnOwningThread(); - // A well-behaved content process only sends Finish() after receiving Ready(), - // which transitions us to WaitingForFinish. - if (NS_WARN_IF(mState != State::WaitingForFinish)) { - return IPC_FAIL(this, "Finish received in unexpected state"); - } - Finish(); return IPC_OK(); diff --git a/icecat/dom/locks/LockRequestChild.cpp b/icecat/dom/locks/LockRequestChild.cpp index 648f3f88da..51731c5eed 100644 --- a/icecat/dom/locks/LockRequestChild.cpp +++ b/icecat/dom/locks/LockRequestChild.cpp @@ -56,7 +56,6 @@ void LockRequestChild::MaybeSetWorkerRef() { } void LockRequestChild::ActorDestroy(ActorDestroyReason aReason) { - Unfollow(); CastedManager()->NotifyRequestDestroy(); } @@ -110,6 +109,7 @@ void LockRequestChild::RunAbortAlgorithm() { mRequest.mPromise->MaybeReject(reason); } + Unfollow(); Send__delete__(this, true); } diff --git a/icecat/dom/media/ADTSDemuxer.cpp b/icecat/dom/media/ADTSDemuxer.cpp index dc9409bec9..5214b5d3de 100644 --- a/icecat/dom/media/ADTSDemuxer.cpp +++ b/icecat/dom/media/ADTSDemuxer.cpp @@ -550,7 +550,7 @@ uint32_t ADTSTrackDemuxer::Read(uint8_t* aBuffer, int64_t aOffset, if (mInfo && streamLen > 0) { int64_t max = streamLen > aOffset ? streamLen - aOffset : 0; // Prevent blocking reads after successful initialization. - aSize = static_cast(std::min(static_cast(aSize), max)); + aSize = std::min(aSize, AssertedCast(max)); } uint32_t read = 0; diff --git a/icecat/dom/media/AsyncLogger.h b/icecat/dom/media/AsyncLogger.h index f6f6bb7f32..7c37bd5ed9 100644 --- a/icecat/dom/media/AsyncLogger.h +++ b/icecat/dom/media/AsyncLogger.h @@ -44,15 +44,9 @@ class MOZ_STACK_CLASS StringWriter { size_t toCopy = strlen(aString); bool truncated = false; - size_t availableBytes = Available(); - if (availableBytes == 0) { - // Treat nothing written as truncated - return true; - } - - if (toCopy >= availableBytes) { + if (toCopy > Available()) { truncated = true; - toCopy = availableBytes - 1; + toCopy = Available() - 1; } memcpy(&(mMemory[mWriteIndex]), aString, toCopy); @@ -65,7 +59,7 @@ class MOZ_STACK_CLASS StringWriter { private: size_t Available() { - MOZ_ASSERT(mLength >= mWriteIndex); + MOZ_ASSERT(mLength > mWriteIndex); return mLength - mWriteIndex; } @@ -194,10 +188,9 @@ class AsyncLogger { msg->data.mTimestamp = TimeStamp::Now(); msg->data.mDurationUs = (static_cast(aFrames) / aSampleRate) * 1e6; - StringWriter writer(msg->data.mName, std::size(msg->data.mName)); - size_t unused; - // Unused since we don't need to know the location of the new index - writer.AppendCString(aName, &unused); + size_t len = std::min(strlen(aName), std::size(msg->data.mName)); + memcpy(msg->data.mName, aName, len); + msg->data.mName[len] = 0; mMessageQueueProfiler.Push(msg); } } diff --git a/icecat/dom/media/AudioChannelFormat.h b/icecat/dom/media/AudioChannelFormat.h index 89a07fcee9..1b913f5535 100644 --- a/icecat/dom/media/AudioChannelFormat.h +++ b/icecat/dom/media/AudioChannelFormat.h @@ -119,8 +119,6 @@ static const DownMixMatrix gDownMixMatrices[CUSTOM_CHANNEL_LAYOUTS * * Given an array of input channels, downmix to aOutputChannelCount, and copy * the results to the channel buffers in aOutputChannels. Don't call this with * input count <= output count. - * Each of aOutputChannels must be non-null. - * aInputChannels elements may be null. */ template void AudioChannelsDownMix(Span aInputChannels, @@ -133,11 +131,7 @@ void AudioChannelsDownMix(Span aInputChannels, if (inputChannelCount > 6) { // Just drop the unknown channels. for (uint32_t o = 0; o < outputChannelCount; ++o) { - if (aInputChannels[o]) { - ConvertAudioSamples(aInputChannels[o], aOutputChannels[o], aDuration); - } else { - std::fill_n(aOutputChannels[o], aDuration, static_cast(0)); - } + ConvertAudioSamples(aInputChannels[o], aOutputChannels[o], aDuration); } return; } @@ -156,7 +150,7 @@ void AudioChannelsDownMix(Span aInputChannels, } for (uint32_t c = 0; c < inputChannelCount; ++c) { uint32_t dstIndex = m.mInputDestination[c]; - if (dstIndex == IGNORE || !aInputChannels[c]) { + if (dstIndex == IGNORE) { continue; } AddAudioSamplesWithScale(aInputChannels[c], aOutputChannels[dstIndex], @@ -165,7 +159,7 @@ void AudioChannelsDownMix(Span aInputChannels, // Utilize the fact that in every layout, C is the only channel that may // contribute to more than one output channel. uint32_t dstIndex = m.mCExtraDestination; - if (dstIndex != IGNORE && aInputChannels[SURROUND_C]) { + if (dstIndex != IGNORE) { AddAudioSamplesWithScale(aInputChannels[SURROUND_C], aOutputChannels[dstIndex], aDuration, m.mInputCoefficient[SURROUND_C]); diff --git a/icecat/dom/media/AudioSegment.cpp b/icecat/dom/media/AudioSegment.cpp index 875cac709e..243cdffd0e 100644 --- a/icecat/dom/media/AudioSegment.cpp +++ b/icecat/dom/media/AudioSegment.cpp @@ -203,14 +203,9 @@ static void DownMixChunk(const AudioChunk& aChunk, } else { // The channel count is already what we want. for (uint32_t channel = 0; channel < aOutputChannels.Length(); channel++) { - if (channelData[channel]) { - ConvertAudioSamplesWithScale(channelData[channel], - aOutputChannels[channel], frameCount, - aChunk.mVolume); - } else { - std::fill_n(aOutputChannels[channel], frameCount, - static_cast(0)); - } + ConvertAudioSamplesWithScale(channelData[channel], + aOutputChannels[channel], frameCount, + aChunk.mVolume); } } } @@ -281,7 +276,7 @@ void AudioSegment::Mix(AudioMixer& aMixer, uint32_t aOutputChannels, // Up-mix. upMixChunk = c; AudioChannelsUpMix(&upMixChunk.mChannelData, aOutputChannels, - nullptr); + SilentChannel::gZeroChannel); downMixInput = &upMixChunk; } downMixInput->DownMixTo(outChannelPtrs); diff --git a/icecat/dom/media/AudioSegment.h b/icecat/dom/media/AudioSegment.h index 25f30b3e4f..d879eccb5c 100644 --- a/icecat/dom/media/AudioSegment.h +++ b/icecat/dom/media/AudioSegment.h @@ -75,21 +75,14 @@ const uint32_t WEBAUDIO_BLOCK_SIZE = 1 << WEBAUDIO_BLOCK_SIZE_BITS; template static void InterleaveAndConvertBuffer(const SrcT* const* aSourceChannels, uint32_t aLength, float aVolume, - uint32_t aChannelCount, DestT* aOutput) { - for (size_t channel = 0; channel < aChannelCount; ++channel) { - DestT* output = aOutput + channel; - if (aSourceChannels[channel]) { - for (size_t i = 0; i < aLength; ++i) { - float v = - ConvertAudioSample(aSourceChannels[channel][i]) * aVolume; - *output = FloatToAudioSample(v); - output += aChannelCount; - } - } else { - for (size_t i = 0; i < aLength; ++i) { - *output = static_cast(0); - output += aChannelCount; - } + uint32_t aChannels, DestT* aOutput) { + DestT* output = aOutput; + for (size_t i = 0; i < aLength; ++i) { + for (size_t channel = 0; channel < aChannels; ++channel) { + float v = + ConvertAudioSample(aSourceChannels[channel][i]) * aVolume; + *output = FloatToAudioSample(v); + ++output; } } } @@ -480,7 +473,7 @@ void WriteChunk(const AudioChunk& aChunk, uint32_t aOutputChannels, // Up-mix. Note that this might actually make channelData have more // than aOutputChannels temporarily. AudioChannelsUpMix(&channelData, aOutputChannels, - static_cast(nullptr)); + SilentChannel::ZeroChannel()); } if (channelData.Length() > aOutputChannels) { // Down-mix. diff --git a/icecat/dom/media/BaseMediaResource.cpp b/icecat/dom/media/BaseMediaResource.cpp index aad1628123..e5ba50109a 100644 --- a/icecat/dom/media/BaseMediaResource.cpp +++ b/icecat/dom/media/BaseMediaResource.cpp @@ -141,30 +141,27 @@ void BaseMediaResource::SetLoadInBackground(bool aLoadInBackground) { } nsresult BaseMediaResource::ModifyLoadFlags(nsLoadFlags aFlags) { - RefPtr kungFuDeathGrip(this); - nsCOMPtr channel = mChannel; - nsCOMPtr loadGroup; - nsresult rv = channel->GetLoadGroup(getter_AddRefs(loadGroup)); + nsresult rv = mChannel->GetLoadGroup(getter_AddRefs(loadGroup)); MOZ_ASSERT(NS_SUCCEEDED(rv), "GetLoadGroup() failed!"); bool inLoadGroup = false; if (loadGroup) { nsresult status; - channel->GetStatus(&status); + mChannel->GetStatus(&status); - rv = loadGroup->RemoveRequest(channel, nullptr, status); + rv = loadGroup->RemoveRequest(mChannel, nullptr, status); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } inLoadGroup = true; } - rv = channel->SetLoadFlags(aFlags); + rv = mChannel->SetLoadFlags(aFlags); MOZ_ASSERT(NS_SUCCEEDED(rv), "SetLoadFlags() failed!"); if (inLoadGroup) { - rv = loadGroup->AddRequest(channel, nullptr); + rv = loadGroup->AddRequest(mChannel, nullptr); MOZ_ASSERT(NS_SUCCEEDED(rv), "AddRequest() failed!"); } diff --git a/icecat/dom/media/ExternalEngineStateMachine.cpp b/icecat/dom/media/ExternalEngineStateMachine.cpp index 44c0e9c5f3..7e7fb79834 100644 --- a/icecat/dom/media/ExternalEngineStateMachine.cpp +++ b/icecat/dom/media/ExternalEngineStateMachine.cpp @@ -1367,13 +1367,6 @@ void ExternalEngineStateMachine::UpdateSecondaryVideoContainer() { RefPtr ExternalEngineStateMachine::SetCDMProxy( CDMProxy* aProxy) { - if (!OnTaskQueue()) { - return InvokeAsync(OwnerThread(), __func__, - [self = RefPtr{this}, proxy = RefPtr{aProxy}, this]() { - return SetCDMProxy(proxy); - }); - } - AssertOnTaskQueue(); if (mState.IsShutdownEngine()) { return SetCDMPromise::CreateAndReject(NS_ERROR_FAILURE, __func__); } diff --git a/icecat/dom/media/MediaData.cpp b/icecat/dom/media/MediaData.cpp index daec9597ae..05ab6b80cc 100644 --- a/icecat/dom/media/MediaData.cpp +++ b/icecat/dom/media/MediaData.cpp @@ -10,7 +10,6 @@ #include "MediaInfo.h" #include "MediaResult.h" #include "PerformanceRecorder.h" -#include "PlatformDecoderModule.h" #include "VideoUtils.h" #include "YCbCrUtils.h" #include "mozilla/gfx/gfxVars.h" @@ -29,12 +28,8 @@ # include "mozilla/gfx/gfxVars.h" #endif -#define LOG(level, msg, ...) \ - MOZ_LOG_FMT(sPDMLog, level, "%s: " msg, __func__, ##__VA_ARGS__) namespace mozilla { -extern LazyLogModule sPDMLog; - using namespace mozilla::gfx; using layers::PlanarYCbCrData; using layers::PlanarYCbCrImage; @@ -118,15 +113,13 @@ bool AudioData::SetTrimWindow(const media::TimeInterval& aTrim) { } size_t frameOffset = trimBefore.ToTicksAtRate(mRate); - size_t dataOffset = frameOffset * mChannels; - int64_t frameCountAfterTrim = (trimAfter - trimBefore).ToTicksAtRate(mRate); - if (dataOffset > mAudioData.Length() || frameCountAfterTrim < 0) { - return false; - } mTrimWindow = Some(aTrim); - mDataOffset = dataOffset; - const size_t availFrames = (mAudioData.Length() - mDataOffset) / mChannels; - if (frameCountAfterTrim > AssertedCast(availFrames)) { + mDataOffset = frameOffset * mChannels; + MOZ_DIAGNOSTIC_ASSERT(mDataOffset <= mAudioData.Length(), + "Data offset outside original buffer"); + int64_t frameCountAfterTrim = (trimAfter - trimBefore).ToTicksAtRate(mRate); + if (frameCountAfterTrim > + AssertedCast(mAudioData.Length() / mChannels)) { // Accept rounding error caused by an imprecise time_base in the container, // that can cause a mismatch but not other kind of unexpected frame count. MOZ_RELEASE_ASSERT(!trimBefore.IsBase(mRate)); @@ -193,19 +186,6 @@ static bool ValidatePlane(const VideoData::YCbCrBuffer::Plane& aPlane) { static MediaResult ValidateBufferAndPicture( const VideoData::YCbCrBuffer& aBuffer, const IntRect& aPicture) { - // mChromaSubsampling describes the relationship between plane sizes. - if (aBuffer.mChromaSubsampling == ChromaSubsampling::FULL) { - MOZ_ASSERT(aBuffer.mPlanes[1].mWidth == aBuffer.mPlanes[0].mWidth); - } else { - MOZ_ASSERT(aBuffer.mPlanes[1].mWidth == - (aBuffer.mPlanes[0].mWidth + 1) / 2); - } - if (aBuffer.mChromaSubsampling == ChromaSubsampling::HALF_WIDTH_AND_HEIGHT) { - MOZ_ASSERT(aBuffer.mPlanes[1].mHeight == - (aBuffer.mPlanes[0].mHeight + 1) / 2); - } else { - MOZ_ASSERT(aBuffer.mPlanes[1].mHeight == aBuffer.mPlanes[0].mHeight); - } // The following situation should never happen unless there is a bug // in the decoder if (aBuffer.mPlanes[1].mWidth != aBuffer.mPlanes[2].mWidth || @@ -213,6 +193,7 @@ static MediaResult ValidateBufferAndPicture( return MediaResult(NS_ERROR_INVALID_ARG, "Chroma planes with different sizes"); } + // The following situations could be triggered by invalid input if (aPicture.width <= 0 || aPicture.height <= 0) { return MediaResult(NS_ERROR_INVALID_ARG, "Empty picture rect"); @@ -222,12 +203,7 @@ static MediaResult ValidateBufferAndPicture( !ValidatePlane(aBuffer.mPlanes[2])) { return MediaResult(NS_ERROR_INVALID_ARG, "Invalid plane size"); } - // ConstructPlanarYCbCrData() and ConvertI420AlphaToARGB() assume Chroma - // planes have equal strides. - if (aBuffer.mPlanes[1].mStride != aBuffer.mPlanes[2].mStride) { - return MediaResult(NS_ERROR_INVALID_ARG, - "Chroma planes with different strides"); - } + // Ensure the picture size specified in the headers can be extracted out of // the frame we've been supplied without indexing out of bounds. CheckedUint32 xLimit = aPicture.x + CheckedUint32(aPicture.width); @@ -315,7 +291,6 @@ PlanarYCbCrData ConstructPlanarYCbCrData(const VideoInfo& aInfo, data.mYSkip = AssertedCast(Y.mSkip); data.mCbChannel = Cb.mData; data.mCrChannel = Cr.mData; - MOZ_ASSERT(Cb.mStride == Cr.mStride); data.mCbCrStride = AssertedCast(Cb.mStride); data.mCbSkip = AssertedCast(Cb.mSkip); data.mCrSkip = AssertedCast(Cr.mSkip); @@ -434,22 +409,6 @@ already_AddRefed VideoData::CreateAndCopyData( NS_ERROR(r.Message().get()); return nullptr; } - if (!ValidatePlane(aAlphaPlane)) { - MOZ_LOG_FMT(sPDMLog, LogLevel::Warning, "Invalid alpha plane"); - return nullptr; - } - // The alpha plane is expected to be the same size as the luma plane. - // See Method 1 at https://wiki.webmproject.org/alpha-channel - if (aBuffer.mPlanes[0].mWidth != aAlphaPlane.mWidth || - aBuffer.mPlanes[0].mHeight != aAlphaPlane.mHeight) { - MOZ_LOG_FMT(sPDMLog, LogLevel::Warning, "luma and alpha sizes differ"); - return nullptr; - } - // ConvertI420AlphaToARGB() expects equal strides for luma and alpha - if (aBuffer.mPlanes[0].mStride != aAlphaPlane.mStride) { - MOZ_LOG_FMT(sPDMLog, LogLevel::Warning, "luma and alpha strides differ"); - return nullptr; - } RefPtr v(new VideoData(aOffset, aTime, aDuration, aKeyframe, aTimecode, aInfo.mDisplay, 0)); @@ -676,4 +635,3 @@ CryptoScheme StringToCryptoScheme(const nsAString& aString) { } } // namespace mozilla -#undef LOG diff --git a/icecat/dom/media/MediaData.h b/icecat/dom/media/MediaData.h index 0f5d7b9d5e..488f68d49d 100644 --- a/icecat/dom/media/MediaData.h +++ b/icecat/dom/media/MediaData.h @@ -342,13 +342,13 @@ class MediaData { template const ReturnType* As() const { - MOZ_RELEASE_ASSERT(this->mType == ReturnType::sType); + MOZ_ASSERT(this->mType == ReturnType::sType); return static_cast(this); } template ReturnType* As() { - MOZ_RELEASE_ASSERT(this->mType == ReturnType::sType); + MOZ_ASSERT(this->mType == ReturnType::sType); return static_cast(this); } diff --git a/icecat/dom/media/MediaDecoderStateMachine.cpp b/icecat/dom/media/MediaDecoderStateMachine.cpp index 4c81e37ec8..8ba3e9f900 100644 --- a/icecat/dom/media/MediaDecoderStateMachine.cpp +++ b/icecat/dom/media/MediaDecoderStateMachine.cpp @@ -1129,10 +1129,11 @@ class MediaDecoderStateMachine::LoopingDecodingState OwnerThread(), __func__, [this, isAudio, master = RefPtr{mMaster}]() mutable -> void { AUTO_PROFILER_LABEL( - isAudio ? "LoopingDecodingState::" - "RequestDataFromStartPosition(audio)::SeekResolved" - : "LoopingDecodingState::" - "RequestDataFromStartPosition(video)::SeekResolved", + nsPrintfCString( + "LoopingDecodingState::RequestDataFromStartPosition(%s)::" + "SeekResolved", + isAudio ? "audio" : "video") + .get(), MEDIA_PLAYBACK); if (auto& state = master->mStateObj; state && @@ -1167,10 +1168,11 @@ class MediaDecoderStateMachine::LoopingDecodingState [this, isAudio, master = RefPtr{mMaster}]( const SeekRejectValue& aReject) mutable -> void { AUTO_PROFILER_LABEL( - isAudio ? "LoopingDecodingState::" - "RequestDataFromStartPosition(audio)::SeekRejected" - : "LoopingDecodingState::" - "RequestDataFromStartPosition(video)::SeekRejected", + nsPrintfCString("LoopingDecodingState::" + "RequestDataFromStartPosition(%s)::" + "SeekRejected", + isAudio ? "audio" : "video") + .get(), MEDIA_PLAYBACK); if (auto& state = master->mStateObj; state && diff --git a/icecat/dom/media/eme/MediaEncryptedEvent.cpp b/icecat/dom/media/eme/MediaEncryptedEvent.cpp index 78f7a86eb7..bef98bcd55 100644 --- a/icecat/dom/media/eme/MediaEncryptedEvent.cpp +++ b/icecat/dom/media/eme/MediaEncryptedEvent.cpp @@ -28,8 +28,7 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(MediaEncryptedEvent, Event) NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(MediaEncryptedEvent, Event) - tmp->mInitData = nullptr; - tmp->mRawInitData.Clear(); + mozilla::DropJSObjects(tmp); NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MediaEncryptedEvent) diff --git a/icecat/dom/media/eme/MediaKeyMessageEvent.cpp b/icecat/dom/media/eme/MediaKeyMessageEvent.cpp index 3a467e5da5..0884e3b0e0 100644 --- a/icecat/dom/media/eme/MediaKeyMessageEvent.cpp +++ b/icecat/dom/media/eme/MediaKeyMessageEvent.cpp @@ -31,8 +31,7 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(MediaKeyMessageEvent, Event) NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(MediaKeyMessageEvent, Event) - tmp->mMessage = nullptr; - tmp->mRawMessage.Clear(); + mozilla::DropJSObjects(tmp); NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MediaKeyMessageEvent) diff --git a/icecat/dom/media/eme/MediaKeys.cpp b/icecat/dom/media/eme/MediaKeys.cpp index 20e81cbd59..7fc69bc5d7 100644 --- a/icecat/dom/media/eme/MediaKeys.cpp +++ b/icecat/dom/media/eme/MediaKeys.cpp @@ -325,7 +325,6 @@ void MediaKeys::RejectPromise(PromiseId aId, ErrorResult&& aException, this, aId, errorCodeAsInt); return; } - RefPtr keys(this); // This promise could be a createSession or loadSession promise, // so we might have a pending session waiting to be resolved into @@ -380,7 +379,6 @@ void MediaKeys::ResolvePromise(PromiseId aId) { if (!promise) { return; } - RefPtr keys(this); uint32_t token = 0; if (!mPromiseIdToken.Get(aId, &token)) { diff --git a/icecat/dom/media/eme/clearkey/ClearKeyUtils.cpp b/icecat/dom/media/eme/clearkey/ClearKeyUtils.cpp index 204bc89213..3037fe0dca 100644 --- a/icecat/dom/media/eme/clearkey/ClearKeyUtils.cpp +++ b/icecat/dom/media/eme/clearkey/ClearKeyUtils.cpp @@ -189,10 +189,8 @@ bool ClearKeyUtils::DecryptCbcs(const vector& aKey, /* static */ bool ClearKeyUtils::DecryptAES(const vector& aKey, vector& aData, vector& aIV) { - if (aKey.size() != CENC_KEY_LEN || aIV.size() != CENC_KEY_LEN) { - CK_LOGE("Key and IV size should be 16!"); - return false; - } + assert(aIV.size() == CENC_KEY_LEN); + assert(aKey.size() == CENC_KEY_LEN); PK11SlotInfo* slot = PK11_GetInternalKeySlot(); if (!slot) { diff --git a/icecat/dom/media/eme/mediafoundation/WMFCDMProxy.cpp b/icecat/dom/media/eme/mediafoundation/WMFCDMProxy.cpp index f0f55e08a0..2465eff3e0 100644 --- a/icecat/dom/media/eme/mediafoundation/WMFCDMProxy.cpp +++ b/icecat/dom/media/eme/mediafoundation/WMFCDMProxy.cpp @@ -103,12 +103,10 @@ void WMFCDMProxy::Init(PromiseId aPromiseId, const nsAString& aOrigin, mCDM->Init(params)->Then( mMainThread, __func__, [self = RefPtr{this}, this, aPromiseId](const bool) { - RETURN_IF_SHUTDOWN(); MOZ_ASSERT(mCDM->Id() > 0); mKeys->OnCDMCreated(aPromiseId, mCDM->Id()); }, [self = RefPtr{this}, this, aPromiseId](const nsresult rv) { - RETURN_IF_SHUTDOWN(); RejectPromiseWithStateError( aPromiseId, nsLiteralCString("WMFCDMProxy::Init: WMFCDM init error")); @@ -317,7 +315,6 @@ void WMFCDMProxy::Shutdown() { mProxyCallback = nullptr; } mIsShutdown = true; - mKeys.Clear(); } void WMFCDMProxy::OnSessionMessage(const nsAString& aSessionId, diff --git a/icecat/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp b/icecat/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp index 2a99e88296..f88ba49252 100644 --- a/icecat/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp +++ b/icecat/dom/media/gmp-plugin-openh264/gmp-fake-openh264.cpp @@ -129,10 +129,6 @@ class FakeVideoEncoder : public GMPVideoEncoder { GMPVideoEncoderCallback* callback, int32_t numberOfCores, uint32_t maxPayloadSize) override { callback_ = callback; - constexpr uint16_t kFrameDropCadence = 5; - frame_drop_cadence_ = - codecSettings.mFrameDroppingOn ? kFrameDropCadence : 0; - num_frames_since_drop_ = 0; frame_size_ = (maxPayloadSize > 0 && maxPayloadSize < BIG_FRAME) ? maxPayloadSize : BIG_FRAME; @@ -150,18 +146,6 @@ class FakeVideoEncoder : public GMPVideoEncoder { void SendFrame(GMPVideoi420Frame* inputImage, GMPVideoFrameType frame_type, int nal_type) { - if (frame_drop_cadence_ > 0) { - const auto frame_drop_id = ++num_frames_since_drop_; - num_frames_since_drop_ %= frame_drop_cadence_; - GMPLOG(GL_DEBUG, - "Frame dropping is on, id=" - << frame_drop_id << "/" << frame_drop_cadence_ << ". " - << (frame_drop_id == frame_drop_cadence_ ? "Dropping" - : "Keeping")); - if (frame_drop_id == frame_drop_cadence_) { - return; - } - } // Encode this in a frame that looks a little bit like H.264. // Send SPS/PPS/IDR to avoid confusing people // Copy the data. This really should convert this to network byte order. @@ -217,7 +201,7 @@ class FakeVideoEncoder : public GMPVideoEncoder { f->SetCompleteFrame(true); f->SetBufferType(GMP_BufferLength32); - GMPLOG(GL_DEBUG, "Encoding complete. type=" + GMPLOG(GL_DEBUG, "Encoding complete. type= " << f->FrameType() << " NAL_type=" << (int)eframe.idr_nalu.h264_compat_ << " length=" << f->Size() @@ -287,8 +271,6 @@ class FakeVideoEncoder : public GMPVideoEncoder { GMPVideoHost* host_; GMPVideoEncoderCallback* callback_ = nullptr; - uint16_t frame_drop_cadence_ = 0; - uint16_t num_frames_since_drop_ = 0; uint32_t frame_size_ = BIG_FRAME; uint32_t frames_encoded_ = 0; }; @@ -392,9 +374,9 @@ class FakeVideoDecoder : public GMPVideoDecoder { callback_->Decoded(frame); } - void Reset() override { callback_->ResetComplete(); } + void Reset() override {} - void Drain() override { callback_->DrainComplete(); } + void Drain() override {} void DecodingComplete() override { delete this; } diff --git a/icecat/dom/media/gmp/ChromiumCDMCallback.h b/icecat/dom/media/gmp/ChromiumCDMCallback.h index f18347aea5..3f62634933 100644 --- a/icecat/dom/media/gmp/ChromiumCDMCallback.h +++ b/icecat/dom/media/gmp/ChromiumCDMCallback.h @@ -26,7 +26,7 @@ class ChromiumCDMCallback { bool aSuccessful) = 0; virtual void ResolvePromiseWithKeyStatus(uint32_t aPromiseId, - cdm::KeyStatus aKeyStatus) = 0; + uint32_t aKeyStatus) = 0; virtual void ResolvePromise(uint32_t aPromiseId) = 0; @@ -34,7 +34,7 @@ class ChromiumCDMCallback { const nsCString& aErrorMessage) = 0; virtual void SessionMessage(const nsACString& aSessionId, - cdm::MessageType aMessageType, + uint32_t aMessageType, nsTArray&& aMessage) = 0; virtual void SessionKeysChange( diff --git a/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.cpp b/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.cpp index 51824dc316..481534c0e4 100644 --- a/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.cpp +++ b/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.cpp @@ -55,9 +55,8 @@ void ChromiumCDMCallbackProxy::RejectPromise(uint32_t aPromiseId, std::move(aException), aErrorMessage); } -static dom::MediaKeyMessageType ToDOMMessageType( - cdm::MessageType aMessageType) { - switch (aMessageType) { +static dom::MediaKeyMessageType ToDOMMessageType(uint32_t aMessageType) { + switch (static_cast(aMessageType)) { case cdm::kLicenseRequest: return dom::MediaKeyMessageType::License_request; case cdm::kLicenseRenewal: @@ -72,7 +71,7 @@ static dom::MediaKeyMessageType ToDOMMessageType( } void ChromiumCDMCallbackProxy::SessionMessage(const nsACString& aSessionId, - cdm::MessageType aMessageType, + uint32_t aMessageType, nsTArray&& aMessage) { DispatchToMainThread("ChromiumCDMProxy::OnSessionMessage", &ChromiumCDMProxy::OnSessionMessage, @@ -80,8 +79,8 @@ void ChromiumCDMCallbackProxy::SessionMessage(const nsACString& aSessionId, ToDOMMessageType(aMessageType), std::move(aMessage)); } -static dom::MediaKeyStatus ToDOMMediaKeyStatus(cdm::KeyStatus aStatus) { - switch (aStatus) { +static dom::MediaKeyStatus ToDOMMediaKeyStatus(uint32_t aStatus) { + switch (static_cast(aStatus)) { case cdm::kUsable: return dom::MediaKeyStatus::Usable; case cdm::kInternalError: @@ -102,7 +101,7 @@ static dom::MediaKeyStatus ToDOMMediaKeyStatus(cdm::KeyStatus aStatus) { } void ChromiumCDMCallbackProxy::ResolvePromiseWithKeyStatus( - uint32_t aPromiseId, cdm::KeyStatus aKeyStatus) { + uint32_t aPromiseId, uint32_t aKeyStatus) { DispatchToMainThread("ChromiumCDMProxy::OnResolvePromiseWithKeyStatus", &ChromiumCDMProxy::OnResolvePromiseWithKeyStatus, aPromiseId, ToDOMMediaKeyStatus(aKeyStatus)); diff --git a/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.h b/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.h index f50c161db8..5b240f9102 100644 --- a/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.h +++ b/icecat/dom/media/gmp/ChromiumCDMCallbackProxy.h @@ -12,7 +12,7 @@ namespace mozilla { -class ChromiumCDMCallbackProxy final : public ChromiumCDMCallback { +class ChromiumCDMCallbackProxy : public ChromiumCDMCallback { public: ChromiumCDMCallbackProxy(ChromiumCDMProxy* aProxy, nsIEventTarget* aMainThread) @@ -24,15 +24,14 @@ class ChromiumCDMCallbackProxy final : public ChromiumCDMCallback { bool aSuccessful) override; void ResolvePromiseWithKeyStatus(uint32_t aPromiseId, - cdm::KeyStatus aKeyStatus) override; + uint32_t aKeyStatus) override; void ResolvePromise(uint32_t aPromiseId) override; void RejectPromise(uint32_t aPromiseId, ErrorResult&& aException, const nsCString& aErrorMessage) override; - void SessionMessage(const nsACString& aSessionId, - cdm::MessageType aMessageType, + void SessionMessage(const nsACString& aSessionId, uint32_t aMessageType, nsTArray&& aMessage) override; void SessionKeysChange( diff --git a/icecat/dom/media/gmp/ChromiumCDMChild.cpp b/icecat/dom/media/gmp/ChromiumCDMChild.cpp index 20c56a324d..5867846f9f 100644 --- a/icecat/dom/media/gmp/ChromiumCDMChild.cpp +++ b/icecat/dom/media/gmp/ChromiumCDMChild.cpp @@ -9,7 +9,6 @@ #include "WidevineFileIO.h" #include "WidevineVideoFrame.h" #include "GMPLog.h" -#include "GMPMessageUtils.h" #include "GMPPlatform.h" #include "mozilla/Unused.h" #include "nsPrintfCString.h" @@ -29,35 +28,6 @@ ChromiumCDMChild::ChromiumCDMChild(GMPContentChild* aPlugin) GMP_LOG_DEBUG("ChromiumCDMChild:: ctor this=%p", this); } -cdm::Exception ChromiumCDMChild::ClampException(cdm::Exception aValue) const { - if (NS_WARN_IF(!IPC::CDMExceptionEnumValidator::IsLegalValue(aValue))) { - GMP_LOG_DEBUG("ChromiumCDMChild::ClampException: unhandled %" PRIu32, - aValue); - return cdm::Exception::kExceptionInvalidStateError; - } - return aValue; -} - -cdm::Status ChromiumCDMChild::ClampStatus(cdm::Status aValue, - cdm::Status aFallback) const { - if (NS_WARN_IF(!IPC::CDMStatusEnumValidator::IsLegalValue(aValue))) { - GMP_LOG_DEBUG("ChromiumCDMChild::ClampStatus: unhandled %" PRIu32, aValue); - return aFallback; - } - return aValue; -} - -cdm::KeyStatus ChromiumCDMChild::ClampKeyStatus(cdm::KeyStatus aValue) const { - if (NS_WARN_IF(!IPC::CDMKeyStatusEnumValidator::IsLegalValue(aValue))) { - // TODO(aosmond): When we switch to Host_12/KeyStatus_2, we should return - // cdm::KeyStatus_2::kUsableInFuture. - GMP_LOG_DEBUG("ChromiumCDMChild::ClampKeyStatus: unhandled %" PRIu32, - aValue); - return cdm::KeyStatus::kInternalError; - } - return aValue; -} - void ChromiumCDMChild::Init(cdm::ContentDecryptionModule_11* aCDM, const nsACString& aStorageId) { MOZ_ASSERT(IsOnMessageLoopThread()); @@ -230,7 +200,7 @@ void ChromiumCDMChild::OnResolveKeyStatusPromise(uint32_t aPromiseId, aPromiseId, aKeyStatus); CallOnMessageLoopThread("gmp::ChromiumCDMChild::OnResolveKeyStatusPromise", &ChromiumCDMChild::SendOnResolvePromiseWithKeyStatus, - aPromiseId, ClampKeyStatus(aKeyStatus)); + aPromiseId, static_cast(aKeyStatus)); } bool ChromiumCDMChild::OnResolveNewSessionPromiseInternal( @@ -282,7 +252,7 @@ void ChromiumCDMChild::OnRejectPromise(uint32_t aPromiseId, aPromiseId, aException, aSystemCode, aErrorMessage); CallOnMessageLoopThread("gmp::ChromiumCDMChild::OnRejectPromise", &ChromiumCDMChild::SendOnRejectPromise, aPromiseId, - ClampException(aException), aSystemCode, + static_cast(aException), aSystemCode, nsCString(aErrorMessage, aErrorMessageSize)); } @@ -294,19 +264,12 @@ void ChromiumCDMChild::OnSessionMessage(const char* aSessionId, GMP_LOG_DEBUG("ChromiumCDMChild::OnSessionMessage(sid=%s, type=%" PRIu32 " size=%" PRIu32 ")", aSessionId, aMessageType, aMessageSize); - if (NS_WARN_IF( - !IPC::CDMMessageTypeEnumValidator::IsLegalValue(aMessageType))) { - GMP_LOG_DEBUG( - "ChromiumCDMChild::OnSessionMessage: unhandled message %" PRIu32, - aMessageType); - return; - } CopyableTArray message; message.AppendElements(aMessage, aMessageSize); CallOnMessageLoopThread("gmp::ChromiumCDMChild::OnSessionMessage", &ChromiumCDMChild::SendOnSessionMessage, - nsCString(aSessionId, aSessionIdSize), aMessageType, - message); + nsCString(aSessionId, aSessionIdSize), + static_cast(aMessageType), message); } static auto ToString(const cdm::KeyInformation* aKeysInfo, @@ -331,15 +294,6 @@ void ChromiumCDMChild::OnSessionKeysChange(const char* aSessionId, keys.SetCapacity(aKeysInfoCount); for (uint32_t i = 0; i < aKeysInfoCount; i++) { const cdm::KeyInformation& key = aKeysInfo[i]; - if (NS_WARN_IF(!IPC::CDMKeyStatusEnumValidator::IsLegalValue(key.status))) { - // TODO(aosmond): When we switch to Host_12/KeyStatus_2, we should use - // cdm::KeyStatus_2::kUsableInFuture. - GMP_LOG_DEBUG( - "ChromiumCDMChild::OnSessionKeysChange: unhandled key status " - "%" PRIu32, - key.status); - continue; - } nsTArray kid; kid.AppendElements(key.key_id, key.key_id_size); keys.AppendElement(CDMKeyInformation(kid, key.status, key.system_code)); @@ -429,15 +383,7 @@ bool ChromiumCDMChild::IsOnMessageLoopThread() { } void ChromiumCDMChild::ActorDestroy(ActorDestroyReason aReason) { - mInitPromise.RejectIfExists(NS_ERROR_ABORT, __func__); - - if (mCDM) { - mCDM->Destroy(); - mCDM = nullptr; - } - mPlugin = nullptr; - mDestroyed = true; } void ChromiumCDMChild::PurgeShmems() { @@ -611,41 +557,33 @@ mozilla::ipc::IPCResult ChromiumCDMChild::RecvGetStatusForPolicy( return IPC_OK(); } -static bool InitInputBuffer(const CDMInputBuffer& aBuffer, +static void InitInputBuffer(const CDMInputBuffer& aBuffer, nsTArray& aSubSamples, cdm::InputBuffer_2& aInputBuffer) { aInputBuffer.data = aBuffer.mData().get(); aInputBuffer.data_size = aBuffer.mData().Size(); - switch (aBuffer.mEncryptionScheme()) { - case cdm::EncryptionScheme::kCenc: - case cdm::EncryptionScheme::kCbcs: - aInputBuffer.key_id = aBuffer.mKeyId().Elements(); - aInputBuffer.key_id_size = aBuffer.mKeyId().Length(); + if (aBuffer.mEncryptionScheme() != cdm::EncryptionScheme::kUnencrypted) { + MOZ_ASSERT(aBuffer.mEncryptionScheme() == cdm::EncryptionScheme::kCenc || + aBuffer.mEncryptionScheme() == cdm::EncryptionScheme::kCbcs); + aInputBuffer.key_id = aBuffer.mKeyId().Elements(); + aInputBuffer.key_id_size = aBuffer.mKeyId().Length(); - aInputBuffer.iv = aBuffer.mIV().Elements(); - aInputBuffer.iv_size = aBuffer.mIV().Length(); + aInputBuffer.iv = aBuffer.mIV().Elements(); + aInputBuffer.iv_size = aBuffer.mIV().Length(); - aSubSamples.SetCapacity(aBuffer.mClearBytes().Length()); - for (size_t i = 0; i < aBuffer.mCipherBytes().Length(); i++) { - aSubSamples.AppendElement(cdm::SubsampleEntry{ - aBuffer.mClearBytes()[i], aBuffer.mCipherBytes()[i]}); - } - aInputBuffer.subsamples = aSubSamples.Elements(); - aInputBuffer.num_subsamples = aSubSamples.Length(); - break; - case cdm::EncryptionScheme::kUnencrypted: - break; - default: - GMP_LOG_ERROR("InitInputBuffer: Unhandled encryption scheme %" PRIu32, - static_cast(aBuffer.mEncryptionScheme())); - return false; + aSubSamples.SetCapacity(aBuffer.mClearBytes().Length()); + for (size_t i = 0; i < aBuffer.mCipherBytes().Length(); i++) { + aSubSamples.AppendElement(cdm::SubsampleEntry{aBuffer.mClearBytes()[i], + aBuffer.mCipherBytes()[i]}); + } + aInputBuffer.subsamples = aSubSamples.Elements(); + aInputBuffer.num_subsamples = aSubSamples.Length(); + aInputBuffer.encryption_scheme = aBuffer.mEncryptionScheme(); } - aInputBuffer.encryption_scheme = aBuffer.mEncryptionScheme(); aInputBuffer.pattern.crypt_byte_block = aBuffer.mCryptByteBlock(); aInputBuffer.pattern.skip_byte_block = aBuffer.mSkipByteBlock(); aInputBuffer.timestamp = aBuffer.mTimestamp(); - return true; } bool ChromiumCDMChild::HasShmemOfSize(size_t aSize) const { @@ -700,17 +638,14 @@ mozilla::ipc::IPCResult ChromiumCDMChild::RecvDecrypt( cdm::InputBuffer_2 input = {}; nsTArray subsamples; - if (!InitInputBuffer(aBuffer, subsamples, input)) { - (void)SendDecryptFailed(aId, cdm::kDecryptError); - return IPC_OK(); - } + InitInputBuffer(aBuffer, subsamples, input); WidevineDecryptedBlock output; cdm::Status status = mCDM->Decrypt(input, &output); // CDM should have allocated a cdm::Buffer for output. if (status != cdm::kSuccess || !output.DecryptedBuffer()) { - Unused << SendDecryptFailed(aId, ClampStatus(status, cdm::kDecryptError)); + Unused << SendDecryptFailed(aId, status); return IPC_OK(); } @@ -760,8 +695,7 @@ mozilla::ipc::IPCResult ChromiumCDMChild::RecvInitializeVideoDecoder( cdm::Status status = mCDM->InitializeVideoDecoder(config); GMP_LOG_DEBUG("ChromiumCDMChild::RecvInitializeVideoDecoder() status=%u", status); - Unused << SendOnDecoderInitDone( - ClampStatus(status, cdm::Status::kInitializationError)); + Unused << SendOnDecoderInitDone(status); mDecoderInitialized = status == cdm::kSuccess; return IPC_OK(); } @@ -795,22 +729,15 @@ mozilla::ipc::IPCResult ChromiumCDMChild::RecvDecryptAndDecodeFrame( aBuffer.mTimestamp()); MOZ_ASSERT(mDecoderInitialized); - RefPtr self = this; - auto autoDeallocateShmem = - MakeScopeExit([&, self] { self->DeallocShmem(aBuffer.mData()); }); - if (!mCDM) { GMP_LOG_DEBUG("ChromiumCDMChild::RecvDecryptAndDecodeFrame() no CDM"); Unused << SendDecodeFailed(cdm::kDecodeError); return IPC_OK(); } - cdm::InputBuffer_2 input = {}; - nsTArray subsamples; - if (!InitInputBuffer(aBuffer, subsamples, input)) { - (void)SendDecodeFailed(cdm::kDecodeError); - return IPC_OK(); - } + RefPtr self = this; + auto autoDeallocateShmem = + MakeScopeExit([&, self] { self->DeallocShmem(aBuffer.mData()); }); // The output frame may not have the same timestamp as the frame we put in. // We may need to input a number of frames before we receive output. The @@ -819,6 +746,10 @@ mozilla::ipc::IPCResult ChromiumCDMChild::RecvDecryptAndDecodeFrame( // on output. mFrameDurations.Insert(aBuffer.mTimestamp(), aBuffer.mDuration()); + cdm::InputBuffer_2 input = {}; + nsTArray subsamples; + InitInputBuffer(aBuffer, subsamples, input); + WidevineVideoFrame frame; cdm::Status rv = mCDM->DecryptAndDecodeFrame(input, &frame); GMP_LOG_DEBUG("ChromiumCDMChild::RecvDecryptAndDecodeFrame() t=%" PRId64 @@ -852,7 +783,7 @@ mozilla::ipc::IPCResult ChromiumCDMChild::RecvDecryptAndDecodeFrame( // CDM didn't set a frame buffer on the sample, report it as an error. [[fallthrough]]; default: - Unused << SendDecodeFailed(ClampStatus(rv, cdm::kDecodeError)); + Unused << SendDecodeFailed(rv); break; } @@ -921,6 +852,14 @@ mozilla::ipc::IPCResult ChromiumCDMChild::RecvDestroy() { MOZ_ASSERT(!mDecoderInitialized); + mInitPromise.RejectIfExists(NS_ERROR_ABORT, __func__); + + if (mCDM) { + mCDM->Destroy(); + mCDM = nullptr; + } + mDestroyed = true; + Unused << Send__delete__(this); return IPC_OK(); diff --git a/icecat/dom/media/gmp/ChromiumCDMChild.h b/icecat/dom/media/gmp/ChromiumCDMChild.h index eaefe1e865..947899c0bf 100644 --- a/icecat/dom/media/gmp/ChromiumCDMChild.h +++ b/icecat/dom/media/gmp/ChromiumCDMChild.h @@ -71,10 +71,6 @@ class ChromiumCDMChild final : public PChromiumCDMChild, protected: ~ChromiumCDMChild(); - cdm::Exception ClampException(cdm::Exception aValue) const; - cdm::Status ClampStatus(cdm::Status aValue, cdm::Status aFallback) const; - cdm::KeyStatus ClampKeyStatus(cdm::KeyStatus aValue) const; - bool OnResolveNewSessionPromiseInternal(uint32_t aPromiseId, const nsACString& aSessionId); diff --git a/icecat/dom/media/gmp/ChromiumCDMParent.cpp b/icecat/dom/media/gmp/ChromiumCDMParent.cpp index db5caee4bd..f1f6bf55be 100644 --- a/icecat/dom/media/gmp/ChromiumCDMParent.cpp +++ b/icecat/dom/media/gmp/ChromiumCDMParent.cpp @@ -78,9 +78,6 @@ RefPtr ChromiumCDMParent::Init( ->Then( GetCurrentSerialEventTarget(), __func__, [self, aCDMCallback](bool aSuccess) { - if (self->mIsShutdown) { - return; - } if (!aSuccess) { GMP_LOG_DEBUG( "ChromiumCDMParent::Init() failed with callback from " @@ -427,7 +424,7 @@ ipc::IPCResult ChromiumCDMParent::Recv__delete__() { } ipc::IPCResult ChromiumCDMParent::RecvOnResolvePromiseWithKeyStatus( - const uint32_t& aPromiseId, const cdm::KeyStatus& aKeyStatus) { + const uint32_t& aPromiseId, const uint32_t& aKeyStatus) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); GMP_LOG_DEBUG( "ChromiumCDMParent::RecvOnResolvePromiseWithKeyStatus(this=%p, " @@ -535,12 +532,12 @@ void ChromiumCDMParent::RejectPromiseWithStateError( RejectPromise(aPromiseId, std::move(rv), aErrorMessage); } -static ErrorResult ToErrorResult(cdm::Exception aException, +static ErrorResult ToErrorResult(uint32_t aException, const nsCString& aErrorMessage) { // XXXbz could we have a CopyableErrorResult sent to us with a better error // message? ErrorResult rv; - switch (aException) { + switch (static_cast(aException)) { case cdm::Exception::kExceptionNotSupportedError: rv.ThrowNotSupportedError(aErrorMessage); break; @@ -562,7 +559,7 @@ static ErrorResult ToErrorResult(cdm::Exception aException, } ipc::IPCResult ChromiumCDMParent::RecvOnRejectPromise( - const uint32_t& aPromiseId, const cdm::Exception& aException, + const uint32_t& aPromiseId, const uint32_t& aException, const uint32_t& aSystemCode, const nsCString& aErrorMessage) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); RejectPromise(aPromiseId, ToErrorResult(aException, aErrorMessage), @@ -571,7 +568,7 @@ ipc::IPCResult ChromiumCDMParent::RecvOnRejectPromise( } ipc::IPCResult ChromiumCDMParent::RecvOnSessionMessage( - const nsCString& aSessionId, const cdm::MessageType& aMessageType, + const nsCString& aSessionId, const uint32_t& aMessageType, nsTArray&& aMessage) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); GMP_LOG_DEBUG("ChromiumCDMParent::RecvOnSessionMessage(this=%p, sid=%s)", @@ -656,8 +653,8 @@ ipc::IPCResult ChromiumCDMParent::RecvOnQueryOutputProtectionStatus() { return IPC_OK(); } -DecryptStatus ToDecryptStatus(cdm::Status aStatus) { - switch (aStatus) { +DecryptStatus ToDecryptStatus(uint32_t aStatus) { + switch (static_cast(aStatus)) { case cdm::kSuccess: return DecryptStatus::Ok; case cdm::kNoKey: @@ -667,8 +664,8 @@ DecryptStatus ToDecryptStatus(cdm::Status aStatus) { } } -ipc::IPCResult ChromiumCDMParent::RecvDecryptFailed( - const uint32_t& aId, const cdm::Status& aStatus) { +ipc::IPCResult ChromiumCDMParent::RecvDecryptFailed(const uint32_t& aId, + const uint32_t& aStatus) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); GMP_LOG_DEBUG("ChromiumCDMParent::RecvDecryptFailed(this=%p, id=%" PRIu32 ", status=%" PRIu32 ")", @@ -690,7 +687,7 @@ ipc::IPCResult ChromiumCDMParent::RecvDecryptFailed( } ipc::IPCResult ChromiumCDMParent::RecvDecryptedShmem(const uint32_t& aId, - const cdm::Status& aStatus, + const uint32_t& aStatus, ipc::Shmem&& aShmem) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); GMP_LOG_DEBUG("ChromiumCDMParent::RecvDecryptedShmem(this=%p, id=%" PRIu32 @@ -720,7 +717,7 @@ ipc::IPCResult ChromiumCDMParent::RecvDecryptedShmem(const uint32_t& aId, } ipc::IPCResult ChromiumCDMParent::RecvDecryptedData(const uint32_t& aId, - const cdm::Status& aStatus, + const uint32_t& aStatus, nsTArray&& aData) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); GMP_LOG_DEBUG("ChromiumCDMParent::RecvDecryptedData(this=%p, id=%" PRIu32 @@ -1096,7 +1093,7 @@ already_AddRefed ChromiumCDMParent::CreateVideoFrame( return v.forget(); } -ipc::IPCResult ChromiumCDMParent::RecvDecodeFailed(const cdm::Status& aStatus) { +ipc::IPCResult ChromiumCDMParent::RecvDecodeFailed(const uint32_t& aStatus) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); GMP_LOG_DEBUG("ChromiumCDMParent::RecvDecodeFailed(this=%p status=%" PRIu32 ")", @@ -1117,7 +1114,7 @@ ipc::IPCResult ChromiumCDMParent::RecvDecodeFailed(const cdm::Status& aStatus) { RESULT_DETAIL( "ChromiumCDMParent::RecvDecodeFailed with status %s (%" PRIu32 ")", - cdm::EnumValueToString(aStatus), aStatus)), + cdm::EnumValueToString(cdm::Status(aStatus)), aStatus)), __func__); return IPC_OK(); } @@ -1214,7 +1211,7 @@ RefPtr ChromiumCDMParent::InitializeVideoDecoder( } ipc::IPCResult ChromiumCDMParent::RecvOnDecoderInitDone( - const cdm::Status& aStatus) { + const uint32_t& aStatus) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); GMP_LOG_DEBUG( "ChromiumCDMParent::RecvOnDecoderInitDone(this=%p, status=%" PRIu32 ")", @@ -1223,15 +1220,15 @@ ipc::IPCResult ChromiumCDMParent::RecvOnDecoderInitDone( MOZ_ASSERT(mInitVideoDecoderPromise.IsEmpty()); return IPC_OK(); } - if (aStatus == cdm::kSuccess) { + if (aStatus == static_cast(cdm::kSuccess)) { mInitVideoDecoderPromise.ResolveIfExists(TrackInfo::kVideoTrack, __func__); } else { mVideoDecoderInitialized = false; mInitVideoDecoderPromise.RejectIfExists( - MediaResult( - NS_ERROR_DOM_MEDIA_FATAL_ERR, - RESULT_DETAIL("CDM init decode failed with status %s (%" PRIu32 ")", - cdm::EnumValueToString(aStatus), aStatus)), + MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, + RESULT_DETAIL( + "CDM init decode failed with status %s (%" PRIu32 ")", + cdm::EnumValueToString(cdm::Status(aStatus)), aStatus)), __func__); } return IPC_OK(); diff --git a/icecat/dom/media/gmp/ChromiumCDMParent.h b/icecat/dom/media/gmp/ChromiumCDMParent.h index 9e0fec45a7..12d8fcb9d6 100644 --- a/icecat/dom/media/gmp/ChromiumCDMParent.h +++ b/icecat/dom/media/gmp/ChromiumCDMParent.h @@ -106,19 +106,19 @@ class ChromiumCDMParent final : public PChromiumCDMParent, ~ChromiumCDMParent() = default; ipc::IPCResult Recv__delete__() override; - ipc::IPCResult RecvOnResolvePromiseWithKeyStatus( - const uint32_t& aPromiseId, const cdm::KeyStatus& aKeyStatus); + ipc::IPCResult RecvOnResolvePromiseWithKeyStatus(const uint32_t& aPromiseId, + const uint32_t& aKeyStatus); ipc::IPCResult RecvOnResolveNewSessionPromise(const uint32_t& aPromiseId, const nsCString& aSessionId); ipc::IPCResult RecvResolveLoadSessionPromise(const uint32_t& aPromiseId, const bool& aSuccessful); ipc::IPCResult RecvOnResolvePromise(const uint32_t& aPromiseId); ipc::IPCResult RecvOnRejectPromise(const uint32_t& aPromiseId, - const cdm::Exception& aError, + const uint32_t& aError, const uint32_t& aSystemCode, const nsCString& aErrorMessage); ipc::IPCResult RecvOnSessionMessage(const nsCString& aSessionId, - const cdm::MessageType& aMessageType, + const uint32_t& aMessageType, nsTArray&& aMessage); ipc::IPCResult RecvOnSessionKeysChange( const nsCString& aSessionId, nsTArray&& aKeysInfo); @@ -127,19 +127,18 @@ class ChromiumCDMParent final : public PChromiumCDMParent, ipc::IPCResult RecvOnSessionClosed(const nsCString& aSessionId); ipc::IPCResult RecvOnQueryOutputProtectionStatus(); ipc::IPCResult RecvDecryptedShmem(const uint32_t& aId, - const cdm::Status& aStatus, + const uint32_t& aStatus, ipc::Shmem&& aData); - ipc::IPCResult RecvDecryptedData(const uint32_t& aId, - const cdm::Status& aStatus, + ipc::IPCResult RecvDecryptedData(const uint32_t& aId, const uint32_t& aStatus, nsTArray&& aData); ipc::IPCResult RecvDecryptFailed(const uint32_t& aId, - const cdm::Status& aStatus); - ipc::IPCResult RecvOnDecoderInitDone(const cdm::Status& aStatus); + const uint32_t& aStatus); + ipc::IPCResult RecvOnDecoderInitDone(const uint32_t& aStatus); ipc::IPCResult RecvDecodedShmem(const CDMVideoFrame& aFrame, ipc::Shmem&& aShmem); ipc::IPCResult RecvDecodedData(const CDMVideoFrame& aFrame, nsTArray&& aData); - ipc::IPCResult RecvDecodeFailed(const cdm::Status& aStatus); + ipc::IPCResult RecvDecodeFailed(const uint32_t& aStatus); ipc::IPCResult RecvShutdown(); ipc::IPCResult RecvResetVideoDecoderComplete(); ipc::IPCResult RecvDrainComplete(); diff --git a/icecat/dom/media/gmp/GMPChild.cpp b/icecat/dom/media/gmp/GMPChild.cpp index 9b64eb906b..b5eff34c4d 100644 --- a/icecat/dom/media/gmp/GMPChild.cpp +++ b/icecat/dom/media/gmp/GMPChild.cpp @@ -71,7 +71,6 @@ namespace gmp { GMPChild::GMPChild() : mGMPMessageLoop(MessageLoop::current()), mGMPLoader(nullptr) { - MOZ_ASSERT(NS_IsMainThread()); GMP_CHILD_LOG_DEBUG("GMPChild ctor"); nsDebugImpl::SetMultiprocessMode("GMP"); } @@ -585,6 +584,8 @@ void GMPChild::ActorDestroy(ActorDestroyReason aWhy) { mGMPLoader->Shutdown(); } + ShutdownPlatformAPI(); + if (AbnormalShutdown == aWhy) { NS_WARNING("Abnormal shutdown of GMP process!"); ProcessChild::QuickExit(); diff --git a/icecat/dom/media/gmp/GMPContentChild.cpp b/icecat/dom/media/gmp/GMPContentChild.cpp index 1b122c31f1..eac1949c7a 100644 --- a/icecat/dom/media/gmp/GMPContentChild.cpp +++ b/icecat/dom/media/gmp/GMPContentChild.cpp @@ -57,8 +57,7 @@ mozilla::ipc::IPCResult GMPContentChild::RecvPGMPVideoDecoderConstructor( auto vdc = static_cast(aActor); void* vd = nullptr; - GMPErr err = mGMPChild->GetAPI(GMP_API_VIDEO_DECODER, - static_cast(vdc), &vd); + GMPErr err = mGMPChild->GetAPI(GMP_API_VIDEO_DECODER, &vdc->Host(), &vd); if (err != GMPNoErr || !vd) { return IPC_FAIL(this, "GMPGetAPI call failed trying to construct decoder."); } @@ -73,8 +72,7 @@ mozilla::ipc::IPCResult GMPContentChild::RecvPGMPVideoEncoderConstructor( auto vec = static_cast(aActor); void* ve = nullptr; - GMPErr err = mGMPChild->GetAPI(GMP_API_VIDEO_ENCODER, - static_cast(vec), &ve); + GMPErr err = mGMPChild->GetAPI(GMP_API_VIDEO_ENCODER, &vec->Host(), &ve); if (err != GMPNoErr || !ve) { return IPC_FAIL(this, "GMPGetAPI call failed trying to construct encoder."); } diff --git a/icecat/dom/media/gmp/GMPLoader.cpp b/icecat/dom/media/gmp/GMPLoader.cpp index 3749d3468c..0a684d6452 100644 --- a/icecat/dom/media/gmp/GMPLoader.cpp +++ b/icecat/dom/media/gmp/GMPLoader.cpp @@ -8,14 +8,14 @@ #include #include "mozilla/Attributes.h" #include "nsExceptionHandler.h" -#include "GMPLog.h" #include "gmp-entrypoints.h" #include "prlink.h" #include "prenv.h" #include "prerror.h" #if defined(XP_WIN) && defined(MOZ_SANDBOX) # include "mozilla/sandboxTarget.h" -# include "nsWindowsHelpers.h" +# include "mozilla/sandboxing/SandboxInitialization.h" +# include "mozilla/sandboxing/sandboxLogging.h" #endif #if defined(XP_LINUX) && defined(MOZ_SANDBOX) # include "mozilla/Sandbox.h" @@ -83,107 +83,18 @@ class PassThroughGMPAdapter : public GMPAdapter { PRLibrary* mLib = nullptr; }; -#if defined(XP_WIN) && defined(MOZ_SANDBOX) -// This performs the same checks for an AppLocker policy that are performed in -// SaferpIsV2PolicyPresent from ntdll.dll, they are used to decide whether an -// AppLocker ioctl call is made. -static bool IsAppLockerPolicyPresent() { - // RuleCount check for policy configured via Local Security Policy. - DWORD ruleCount = 0; - DWORD ruleCountSize = sizeof(ruleCount); - if (RegGetValueW(HKEY_LOCAL_MACHINE, - LR"(SYSTEM\CurrentControlSet\Control\Srp\GP)", L"RuleCount", - RRF_RT_REG_DWORD, nullptr, &ruleCount, - &ruleCountSize) == ERROR_SUCCESS && - ruleCount != 0) { - return true; - } - - // Directory check for policy configured via Mobile Device Management. - static constexpr wchar_t appLockerMDMPath[] = LR"(\System32\AppLocker\MDM)"; - wchar_t path[MAX_PATH + sizeof(appLockerMDMPath) / sizeof(wchar_t)]; - UINT len = GetSystemWindowsDirectoryW(path, MAX_PATH); - if (len != 0 && len < MAX_PATH) { - wcscpy(path + len, appLockerMDMPath); - return GetFileAttributesW(path) != INVALID_FILE_ATTRIBUTES; - } - return false; -} - -static void EnsureAppLockerCacheIsWarm(const wchar_t* aWidePath) { - // IOCTL to \Device\SrpDevice (\\.\SrpDevice via DosDevices) that triggers - // AppLocker to cache the allow/deny decision for the DLL, warming the NTFS - // EA cache before the sandbox starts. - static constexpr DWORD IOCTL_SRP_VERIFY_DLL = 0x225804; - static constexpr wchar_t kSrpDevicePath[] = LR"(\\.\SrpDevice)"; - - // Buffer layout: [HANDLE as 8 bytes][USHORT pathBytes][WCHAR path...] - // The handle field is always 8 bytes. On x86 the handle is zero-extended. - struct SrpIoctlBuffer { - uint64_t handle; - USHORT pathBytes; - WCHAR path[1]; - }; - static constexpr DWORD kSrpHeaderSize = offsetof(SrpIoctlBuffer, path); - - UniquePtr fileHandle(CreateFileW( - aWidePath, FILE_READ_DATA | FILE_EXECUTE | SYNCHRONIZE, - FILE_SHARE_READ | FILE_SHARE_DELETE, nullptr, OPEN_EXISTING, 0, nullptr)); - if (fileHandle.get() == INVALID_HANDLE_VALUE) { - GMP_LOG_WARNING("EnsureAppLockerCacheIsWarm: CreateFileW failed (%lu)", - GetLastError()); - return; - } - - NtPathFromDosPath ntPath(aWidePath); - if (!ntPath.IsValid()) { - return; - } - - DWORD ioctlSize = kSrpHeaderSize + ntPath.LengthInBytes(); - auto buf = MakeUnique(ioctlSize); - auto* srp = reinterpret_cast(buf.get()); - - // ULONG_PTR is pointer-sized (4 bytes on x86, 8 on x64). Casting to uint64_t - // zero-extends on x86, matching the cdq zero-extension in x86 ntdll. - srp->handle = - static_cast(reinterpret_cast(fileHandle.get())); - srp->pathBytes = ntPath.LengthInBytes(); - if (!ntPath.CopyTo( - mozilla::Span(srp->path, ntPath.LengthInBytes() / sizeof(WCHAR)))) { - MOZ_DIAGNOSTIC_ASSERT(false, "CopyTo failed: buffer too small"); - return; - } - - UniquePtr srpDevice( - CreateFileW(kSrpDevicePath, FILE_READ_DATA, - FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - nullptr, OPEN_EXISTING, 0, nullptr)); - if (srpDevice.get() == INVALID_HANDLE_VALUE) { - GMP_LOG_WARNING( - "EnsureAppLockerCacheIsWarm: opening SrpDevice failed (%lu)", - GetLastError()); - return; - } - - DWORD outBuf = 0; - DWORD bytesReturned = 0; - if (!DeviceIoControl(srpDevice.get(), IOCTL_SRP_VERIFY_DLL, srp, ioctlSize, - &outBuf, sizeof(outBuf), &bytesReturned, nullptr)) { - GMP_LOG_DEBUG( - "EnsureAppLockerCacheIsWarm: DeviceIoControl failed (%lu), " - "AppLocker may not be enabled", - GetLastError()); - } -} -#endif - bool GMPLoader::Load(const char* aUTF8LibPath, uint32_t aUTF8LibPathLen, const GMPPlatformAPI* aPlatformAPI, GMPAdapter* aAdapter) { CrashReporter::AutoRecordAnnotation autoLibPath( CrashReporter::Annotation::GMPLibraryPath, nsDependentCString(aUTF8LibPath)); + if (!getenv("MOZ_DISABLE_GMP_SANDBOX") && mSandboxStarter && + !mSandboxStarter->Start(aUTF8LibPath)) { + MOZ_CRASH("Cannot start sandbox!"); + return false; + } + // Load the GMP. PRLibSpec libSpec; #ifdef XP_WIN @@ -200,20 +111,6 @@ bool GMPLoader::Load(const char* aUTF8LibPath, uint32_t aUTF8LibPathLen, return false; } -# if defined(MOZ_SANDBOX) - if (IsAppLockerPolicyPresent()) { - EnsureAppLockerCacheIsWarm(widePath.get()); - } -# endif -#endif - - if (!getenv("MOZ_DISABLE_GMP_SANDBOX") && mSandboxStarter && - !mSandboxStarter->Start(aUTF8LibPath)) { - MOZ_CRASH("Cannot start sandbox!"); - return false; - } - -#ifdef XP_WIN libSpec.value.pathname_u = widePath.get(); libSpec.type = PR_LibSpec_PathnameU; #else diff --git a/icecat/dom/media/gmp/GMPMessageUtils.h b/icecat/dom/media/gmp/GMPMessageUtils.h index f4157b2582..fae4d16543 100644 --- a/icecat/dom/media/gmp/GMPMessageUtils.h +++ b/icecat/dom/media/gmp/GMPMessageUtils.h @@ -92,34 +92,6 @@ struct ParamTraits cdm::HdcpVersion, cdm::HdcpVersion::kHdcpVersionNone, cdm::HdcpVersion::kHdcpVersion2_3> {}; -using CDMStatusEnumValidator = - ContiguousEnumValidatorInclusive; -template <> -struct ParamTraits - : public EnumSerializer {}; - -using CDMExceptionEnumValidator = ContiguousEnumValidatorInclusive< - cdm::Exception, cdm::Exception::kExceptionTypeError, - cdm::Exception::kExceptionQuotaExceededError>; -template <> -struct ParamTraits - : public EnumSerializer {}; - -using CDMKeyStatusEnumValidator = - ContiguousEnumValidatorInclusive; -template <> -struct ParamTraits - : public EnumSerializer {}; - -using CDMMessageTypeEnumValidator = ContiguousEnumValidatorInclusive< - cdm::MessageType, cdm::MessageType::kLicenseRequest, - cdm::MessageType::kIndividualizationRequest>; -template <> -struct ParamTraits - : public EnumSerializer {}; - template <> struct ParamTraits { typedef GMPSimulcastStream paramType; diff --git a/icecat/dom/media/gmp/GMPParent.cpp b/icecat/dom/media/gmp/GMPParent.cpp index 9663c3aeff..918b7d793c 100644 --- a/icecat/dom/media/gmp/GMPParent.cpp +++ b/icecat/dom/media/gmp/GMPParent.cpp @@ -657,11 +657,13 @@ void GMPParent::DeleteProcess() { self->DeleteProcess(); }, [self](const ipc::ResponseRejectReason&) { - // We crashed during shutdown, ActorDestroy will perform cleanup. GMP_LOG_DEBUG( "GMPParent[%p|childPid=%d] DeleteProcess: Shutdown handshake " "error.", self.get(), self->mChildPid); + self->mState = GMPState::Closed; + self->Close(); + self->DeleteProcess(); }); return; } diff --git a/icecat/dom/media/gmp/GMPPlatform.cpp b/icecat/dom/media/gmp/GMPPlatform.cpp index e54ba97815..8d6dc14d5a 100644 --- a/icecat/dom/media/gmp/GMPPlatform.cpp +++ b/icecat/dom/media/gmp/GMPPlatform.cpp @@ -10,6 +10,8 @@ #include "GMPChild.h" #include "mozilla/Mutex.h" #include "mozilla/ReentrantMonitor.h" +#include "mozilla/StaticMonitor.h" +#include "nsTArray.h" #include "nsThreadUtils.h" #include "base/task.h" #include "base/thread.h" @@ -23,8 +25,18 @@ namespace mozilla::gmp { +static MessageLoop* sMainLoop = nullptr; static GMPChild* sChild = nullptr; +static StaticMonitor sMainLoopMonitor; +static nsTArray>* sMainLoopPendingEvents + MOZ_GUARDED_BY(sMainLoopMonitor) = nullptr; +static bool sMainLoopHasPendingProcess MOZ_GUARDED_BY(sMainLoopMonitor) = false; + +static bool IsOnChildMainThread() { + return sMainLoop && sMainLoop == MessageLoop::current(); +} + // We just need a refcounted wrapper for GMPTask objects. class GMPRunnable final : public Runnable { public: @@ -46,8 +58,11 @@ class GMPRunnable final : public Runnable { class GMPSyncRunnable final : public Runnable { public: - explicit GMPSyncRunnable(GMPTask* aTask) - : Runnable("mozilla::gmp::GMPSyncRunnable"), mTask(aTask) { + GMPSyncRunnable(GMPTask* aTask, MessageLoop* aMessageLoop) + : Runnable("mozilla::gmp::GMPSyncRunnable"), + mDone(false), + mTask(aTask), + mMonitor("GMPSyncRunnable") { MOZ_ASSERT(mTask); } @@ -56,7 +71,7 @@ class GMPSyncRunnable final : public Runnable { // 1) Nobody should be blocking the main thread. // 2) This prevents deadlocks when doing sync calls to main which if the // main thread tries to do a sync call back to the calling thread. - MOZ_ASSERT(!NS_IsMainThread()); + MOZ_ASSERT(!IsOnChildMainThread()); MonitorAutoLock lock(mMonitor); while (!mDone) { @@ -75,9 +90,9 @@ class GMPSyncRunnable final : public Runnable { } private: - bool mDone MOZ_GUARDED_BY(mMonitor) = false; + bool mDone MOZ_GUARDED_BY(mMonitor); GMPTask* mTask; - Monitor mMonitor{"GMPSyncRunnable"}; + Monitor mMonitor; }; class GMPThreadImpl final : public GMPThread { @@ -90,8 +105,8 @@ class GMPThreadImpl final : public GMPThread { void Join() override; private: - Mutex mMutex{"GMPThreadImpl"}; - base::Thread mThread MOZ_GUARDED_BY(mMutex){"GMPThread"}; + Mutex mMutex MOZ_UNANNOTATED; + base::Thread mThread MOZ_GUARDED_BY(mMutex); }; GMPErr CreateThread(GMPThread** aThread) { @@ -104,29 +119,77 @@ GMPErr CreateThread(GMPThread** aThread) { return GMPNoErr; } +bool SpinPendingGmpEventsUntil(const SpinPendingPredicate& aPred, + uint32_t aTimeoutMs) { + MOZ_ASSERT(IsOnChildMainThread()); + + auto timeout = TimeDuration::FromMilliseconds(aTimeoutMs); + + while (!aPred()) { + nsTArray> pendingEvents; + { + StaticMonitorAutoLock lock(sMainLoopMonitor); + while (sMainLoopPendingEvents->IsEmpty()) { + if (lock.Wait(timeout) == CVStatus::Timeout) { + return false; + } + } + pendingEvents = std::move(*sMainLoopPendingEvents); + } + + for (auto& event : pendingEvents) { + event->Run(); + } + } + + return true; +} + +static void ProcessPendingGmpEvents() { + MOZ_ASSERT(IsOnChildMainThread()); + + nsTArray> pendingEvents; + { + StaticMonitorAutoLock lock(sMainLoopMonitor); + pendingEvents = std::move(*sMainLoopPendingEvents); + sMainLoopHasPendingProcess = false; + } + + for (auto& event : pendingEvents) { + event->Run(); + } +} + +static void QueueForMainThread(RefPtr&& aRunnable) { + StaticMonitorAutoLock lock(sMainLoopMonitor); + sMainLoopPendingEvents->AppendElement(std::move(aRunnable)); + if (!sMainLoopHasPendingProcess) { + sMainLoop->PostTask(NewRunnableFunction( + "mozilla::gmp::ProcessPendingGmpEvents", &ProcessPendingGmpEvents)); + sMainLoopHasPendingProcess = true; + } + lock.Notify(); +} + GMPErr RunOnMainThread(GMPTask* aTask) { - if (!aTask) { - return GMPGenericErr; - } - - if (NS_FAILED(NS_DispatchToMainThread(MakeAndAddRef(aTask)))) { + if (!aTask || !sMainLoop) { return GMPGenericErr; } + RefPtr r = new GMPRunnable(aTask); + QueueForMainThread(std::move(r)); return GMPNoErr; } GMPErr SyncRunOnMainThread(GMPTask* aTask) { - if (!aTask || NS_IsMainThread()) { - return GMPGenericErr; - } - - RefPtr r = new GMPSyncRunnable(aTask); - if (NS_FAILED(NS_DispatchToMainThread(r))) { + if (!aTask || !sMainLoop || IsOnChildMainThread()) { return GMPGenericErr; } + RefPtr r = new GMPSyncRunnable(aTask, sMainLoop); + QueueForMainThread(RefPtr{r}); r->WaitUntilDone(); + return GMPNoErr; } @@ -141,7 +204,7 @@ class MOZ_CAPABILITY("mutex") GMPMutexImpl final : public GMPMutex { void Destroy() override; private: - ReentrantMonitor mMonitor{"gmp-mutex"}; + ReentrantMonitor mMonitor MOZ_UNANNOTATED; }; GMPErr CreateMutex(GMPMutex** aMutex) { @@ -170,7 +233,7 @@ GMPErr CreateRecord(const char* aRecordName, uint32_t aRecordNameSize, } GMPErr SetTimerOnMainThread(GMPTask* aTask, int64_t aTimeoutMS) { - if (!aTask || !NS_IsMainThread()) { + if (!aTask || !sMainLoop || !IsOnChildMainThread()) { return GMPGenericErr; } GMPTimerChild* timers = sChild->GetGMPTimers(); @@ -187,10 +250,20 @@ GMPErr GetClock(GMPTimestamp* aOutTime) { } void InitPlatformAPI(GMPPlatformAPI& aPlatformAPI, GMPChild* aChild) { + if (!sMainLoop) { + sMainLoop = MessageLoop::current(); + } if (!sChild) { sChild = aChild; } + { + StaticMonitorAutoLock lock(sMainLoopMonitor); + if (!sMainLoopPendingEvents) { + sMainLoopPendingEvents = new nsTArray>(); + } + } + aPlatformAPI.version = 0; aPlatformAPI.createthread = &CreateThread; aPlatformAPI.runonmainthread = &RunOnMainThread; @@ -201,6 +274,14 @@ void InitPlatformAPI(GMPPlatformAPI& aPlatformAPI, GMPChild* aChild) { aPlatformAPI.getcurrenttime = &GetClock; } +void ShutdownPlatformAPI() { + StaticMonitorAutoLock lock(sMainLoopMonitor); + if (sMainLoopPendingEvents) { + delete sMainLoopPendingEvents; + sMainLoopPendingEvents = nullptr; + } +} + void SendFOGData(ipc::ByteBuf&& buf) { if (sChild) { sChild->SendFOGData(std::move(buf)); @@ -218,7 +299,9 @@ RefPtr SendGetModulesTrust( } #endif -GMPThreadImpl::GMPThreadImpl() { MOZ_COUNT_CTOR(GMPThread); } +GMPThreadImpl::GMPThreadImpl() : mMutex("GMPThreadImpl"), mThread("GMPThread") { + MOZ_COUNT_CTOR(GMPThread); +} GMPThreadImpl::~GMPThreadImpl() { MOZ_COUNT_DTOR(GMPThread); } @@ -248,7 +331,9 @@ void GMPThreadImpl::Join() { delete this; } -GMPMutexImpl::GMPMutexImpl() { MOZ_COUNT_CTOR(GMPMutexImpl); } +GMPMutexImpl::GMPMutexImpl() : mMonitor("gmp-mutex") { + MOZ_COUNT_CTOR(GMPMutexImpl); +} GMPMutexImpl::~GMPMutexImpl() { MOZ_COUNT_DTOR(GMPMutexImpl); } diff --git a/icecat/dom/media/gmp/GMPPlatform.h b/icecat/dom/media/gmp/GMPPlatform.h index 553f2d0db8..aad5d09662 100644 --- a/icecat/dom/media/gmp/GMPPlatform.h +++ b/icecat/dom/media/gmp/GMPPlatform.h @@ -6,8 +6,9 @@ #ifndef GMPPlatform_h_ #define GMPPlatform_h_ -#include "gmp-platform.h" #include "mozilla/RefPtr.h" +#include "gmp-platform.h" +#include #include "mozilla/gmp/PGMPChild.h" namespace mozilla { @@ -24,6 +25,7 @@ namespace gmp { class GMPChild; void InitPlatformAPI(GMPPlatformAPI& aPlatformAPI, GMPChild* aChild); +void ShutdownPlatformAPI(); GMPErr RunOnMainThread(GMPTask* aTask); @@ -31,6 +33,24 @@ GMPTask* NewGMPTask(std::function&& aFunction); GMPErr SetTimerOnMainThread(GMPTask* aTask, int64_t aTimeoutMS); +/** + * This is intended to be used by encoders/decoders that will make a GMP call + * that is a synchronous post to the GMP worker thread. Because the GMP worker + * threads can synchronously callback to the main thread, this has the potential + * for a deadlock. If the encoder/decoder tracks any outstanding requests that + * will result in a synchronous callback to the main thread, we can simply spin + * the event loop on those callbacks until they are completed. Then we can + * safefully make our own synchronous call to the GMP worker thread without fear + * of a deadlock. + * + * Note that each encoder/decoder has its own worker thread, so assuming we + * drain the synchronous events for that specific encoder/decoder, we know there + * are no more forthcoming to cause us to deadlock. + */ +using SpinPendingPredicate = std::function; +bool SpinPendingGmpEventsUntil(const SpinPendingPredicate& aPred, + uint32_t aTimeoutMs); + void SendFOGData(ipc::ByteBuf&& buf); #ifdef XP_WIN diff --git a/icecat/dom/media/gmp/GMPService.cpp b/icecat/dom/media/gmp/GMPService.cpp index f5da1a8c66..8535f50978 100644 --- a/icecat/dom/media/gmp/GMPService.cpp +++ b/icecat/dom/media/gmp/GMPService.cpp @@ -459,10 +459,12 @@ GeckoMediaPluginService::GetGMPVideoDecoder( RefPtr parent = wrapper->mParent; UniquePtr callback(rawCallback); GMPVideoDecoderParent* actor = nullptr; + GMPVideoHostImpl* host = nullptr; if (parent && NS_SUCCEEDED(parent->GetGMPVideoDecoder(&actor))) { + host = &(actor->Host()); actor->SetCrashHelper(helper); } - callback->Done(actor, actor); + callback->Done(actor, host); }, [rawCallback] { UniquePtr callback(rawCallback); @@ -497,10 +499,12 @@ GeckoMediaPluginService::GetGMPVideoEncoder( RefPtr parent = wrapper->mParent; UniquePtr callback(rawCallback); GMPVideoEncoderParent* actor = nullptr; + GMPVideoHostImpl* host = nullptr; if (parent && NS_SUCCEEDED(parent->GetGMPVideoEncoder(&actor))) { + host = &(actor->Host()); actor->SetCrashHelper(helper); } - callback->Done(actor, actor); + callback->Done(actor, host); }, [rawCallback] { UniquePtr callback(rawCallback); diff --git a/icecat/dom/media/gmp/GMPSharedMemManager.cpp b/icecat/dom/media/gmp/GMPSharedMemManager.cpp index 5b0079312c..c33393ba1f 100644 --- a/icecat/dom/media/gmp/GMPSharedMemManager.cpp +++ b/icecat/dom/media/gmp/GMPSharedMemManager.cpp @@ -63,9 +63,7 @@ void GMPSharedMemManager::MgrGiveShmem(GMPSharedMemClass aClass, ipc::Shmem&& aMem) { MOZ_ASSERT(MgrIsOnOwningThread()); - if (!aMem.IsWritable() || !MgrCanSend()) { - // Either the shmem is not allocated, or the actor is already dead and it - // will get freed when the Shmem reference goes away. + if (!aMem.IsWritable()) { return; } diff --git a/icecat/dom/media/gmp/GMPSharedMemManager.h b/icecat/dom/media/gmp/GMPSharedMemManager.h index 5390ac38a5..d3ae0fbd09 100644 --- a/icecat/dom/media/gmp/GMPSharedMemManager.h +++ b/icecat/dom/media/gmp/GMPSharedMemManager.h @@ -11,8 +11,6 @@ namespace mozilla::gmp { -class GMPVideoi420FrameImpl; - enum class GMPSharedMemClass { Decoded, Encoded }; class GMPSharedMemManager { @@ -29,11 +27,8 @@ class GMPSharedMemManager { virtual bool MgrAllocShmem(size_t aSize, ipc::Shmem* aMem) { return false; } virtual void MgrDeallocShmem(ipc::Shmem& aMem) = 0; - virtual void MgrDecodedFrameDestroyed(GMPVideoi420FrameImpl* aFrame) {} - protected: virtual bool MgrIsOnOwningThread() const = 0; - virtual bool MgrCanSend() const = 0; static constexpr size_t kMaxPools = 2; diff --git a/icecat/dom/media/gmp/GMPStorageChild.cpp b/icecat/dom/media/gmp/GMPStorageChild.cpp index 159c87b08c..b08356e0d6 100644 --- a/icecat/dom/media/gmp/GMPStorageChild.cpp +++ b/icecat/dom/media/gmp/GMPStorageChild.cpp @@ -33,117 +33,57 @@ GMPRecordImpl::GMPRecordImpl(GMPStorageChild* aOwner, const nsCString& aName, GMPRecordClient* aClient) : mName(aName), mClient(aClient), mOwner(aOwner) {} -RefPtr GMPRecordImpl::GetOwner() { - RecursiveMutexAutoLock lock(mMutex); - return RefPtr{mOwner}; -} - -GMPErr GMPRecordImpl::Open() { - // The IPDL actor might be destroyed on another thread, releasing the owner, - // so take a strong reference to ensure it stays alive long enough. - if (auto owner = GetOwner()) { - return owner->Open(this); - } - return GMPClosedErr; -} +GMPErr GMPRecordImpl::Open() { return mOwner->Open(this); } void GMPRecordImpl::OpenComplete(GMPErr aStatus) { - // While we know mClient is not yet destroyed if the pointer is still valid - // while holding the lock, be careful to note that it may be destroyed by the - // plugin after the callback returns. - RecursiveMutexAutoLock lock(mMutex); - if (mClient) { - mClient->OpenComplete(aStatus); - } + mClient->OpenComplete(aStatus); } -GMPErr GMPRecordImpl::Read() { - // The IPDL actor might be destroyed on another thread, releasing the owner, - // so take a strong reference to ensure it stays alive long enough. - if (auto owner = GetOwner()) { - return owner->Read(this); - } - return GMPClosedErr; -} +GMPErr GMPRecordImpl::Read() { return mOwner->Read(this); } void GMPRecordImpl::ReadComplete(GMPErr aStatus, const uint8_t* aBytes, uint32_t aLength) { - // While we know mClient is not yet destroyed if the pointer is still valid - // while holding the lock, be careful to note that it may be destroyed by the - // plugin after the callback returns. - RecursiveMutexAutoLock lock(mMutex); - if (mClient) { - mClient->ReadComplete(aStatus, aBytes, aLength); - } + mClient->ReadComplete(aStatus, aBytes, aLength); } GMPErr GMPRecordImpl::Write(const uint8_t* aData, uint32_t aDataSize) { - // The IPDL actor might be destroyed on another thread, releasing the owner, - // so take a strong reference to ensure it stays alive long enough. - if (auto owner = GetOwner()) { - return owner->Write(this, aData, aDataSize); - } - return GMPClosedErr; + return mOwner->Write(this, aData, aDataSize); } void GMPRecordImpl::WriteComplete(GMPErr aStatus) { - // While we know mClient is not yet destroyed if the pointer is still valid - // while holding the lock, be careful to note that it may be destroyed by the - // plugin after the callback returns. - RecursiveMutexAutoLock lock(mMutex); - if (mClient) { - mClient->WriteComplete(aStatus); - } + mClient->WriteComplete(aStatus); } GMPErr GMPRecordImpl::Close() { RefPtr kungfuDeathGrip(this); // Delete our self reference. Release(); - - // We need to only clear mClient within the lock to avoid destroying it while - // a callback is in progress. Since we have no control over the plugins on - // when they choose to call Close, we must support this being re-entrant (e.g. - // call Close from the OpenComplete, ReadComplete or WriteComplete callbacks). - RefPtr owner; - { - RecursiveMutexAutoLock lock(mMutex); - owner = RefPtr{mOwner}; - mClient = nullptr; - } - - if (owner) { - owner->Close(this->Name()); - } + mOwner->Close(this->Name()); return GMPNoErr; } -void GMPRecordImpl::DestroyOwner() { - RecursiveMutexAutoLock lock(mMutex); - mOwner = nullptr; -} - -GMPStorageChild::GMPStorageChild(GMPChild* aPlugin) : mPlugin(aPlugin) { +GMPStorageChild::GMPStorageChild(GMPChild* aPlugin) + : mMonitor("GMPStorageChild"), mPlugin(aPlugin), mShutdown(false) { MOZ_ASSERT(ON_GMP_THREAD()); } GMPErr GMPStorageChild::CreateRecord(const nsCString& aRecordName, GMPRecord** aOutRecord, GMPRecordClient* aClient) { - MutexAutoLock lock(mMutex); + MonitorAutoLock lock(mMonitor); - if (NS_WARN_IF(mShutdown)) { + if (mShutdown) { + NS_WARNING("GMPStorage used after it's been shutdown!"); return GMPClosedErr; } - MOZ_ASSERT(!aRecordName.IsEmpty()); - MOZ_ASSERT(aOutRecord); + MOZ_ASSERT(aRecordName.Length() && aOutRecord); if (HasRecord(aRecordName)) { return GMPRecordInUse; } - auto record = MakeRefPtr(this, aRecordName, aClient); + RefPtr record(new GMPRecordImpl(this, aRecordName, aClient)); mRecords.InsertOrUpdate(aRecordName, RefPtr{record}); // Addrefs // The GMPRecord holds a self reference until the GMP calls Close() on @@ -155,24 +95,23 @@ GMPErr GMPStorageChild::CreateRecord(const nsCString& aRecordName, } bool GMPStorageChild::HasRecord(const nsCString& aRecordName) { + mMonitor.AssertCurrentThreadOwns(); return mRecords.Contains(aRecordName); } already_AddRefed GMPStorageChild::GetRecord( const nsCString& aRecordName) { - MutexAutoLock lock(mMutex); - if (NS_WARN_IF(mShutdown)) { - return nullptr; - } + MonitorAutoLock lock(mMonitor); RefPtr record; mRecords.Get(aRecordName, getter_AddRefs(record)); return record.forget(); } GMPErr GMPStorageChild::Open(GMPRecordImpl* aRecord) { - MutexAutoLock lock(mMutex); + MonitorAutoLock lock(mMonitor); - if (NS_WARN_IF(mShutdown)) { + if (mShutdown) { + NS_WARNING("GMPStorage used after it's been shutdown!"); return GMPClosedErr; } @@ -187,9 +126,10 @@ GMPErr GMPStorageChild::Open(GMPRecordImpl* aRecord) { } GMPErr GMPStorageChild::Read(GMPRecordImpl* aRecord) { - MutexAutoLock lock(mMutex); + MonitorAutoLock lock(mMonitor); - if (NS_WARN_IF(mShutdown)) { + if (mShutdown) { + NS_WARNING("GMPStorage used after it's been shutdown!"); return GMPClosedErr; } @@ -209,9 +149,10 @@ GMPErr GMPStorageChild::Write(GMPRecordImpl* aRecord, const uint8_t* aData, return GMPQuotaExceededErr; } - MutexAutoLock lock(mMutex); + MonitorAutoLock lock(mMonitor); - if (NS_WARN_IF(mShutdown)) { + if (mShutdown) { + NS_WARNING("GMPStorage used after it's been shutdown!"); return GMPClosedErr; } @@ -226,13 +167,15 @@ GMPErr GMPStorageChild::Write(GMPRecordImpl* aRecord, const uint8_t* aData, } GMPErr GMPStorageChild::Close(const nsCString& aRecordName) { - MutexAutoLock lock(mMutex); + MonitorAutoLock lock(mMonitor); - if (!mRecords.Remove(aRecordName)) { + if (!HasRecord(aRecordName)) { // Already closed. return GMPClosedErr; } + mRecords.Remove(aRecordName); + if (!mShutdown) { CALL_ON_GMP_THREAD(SendClose, aRecordName); } @@ -242,26 +185,46 @@ GMPErr GMPStorageChild::Close(const nsCString& aRecordName) { mozilla::ipc::IPCResult GMPStorageChild::RecvOpenComplete( const nsCString& aRecordName, const GMPErr& aStatus) { - if (RefPtr record = GetRecord(aRecordName)) { - record->OpenComplete(aStatus); + // We don't need a lock to read |mShutdown| since it is only changed in + // the GMP thread. + if (mShutdown) { + return IPC_OK(); } + RefPtr record = GetRecord(aRecordName); + if (!record) { + // Not fatal. + return IPC_OK(); + } + record->OpenComplete(aStatus); return IPC_OK(); } mozilla::ipc::IPCResult GMPStorageChild::RecvReadComplete( const nsCString& aRecordName, const GMPErr& aStatus, nsTArray&& aBytes) { - if (RefPtr record = GetRecord(aRecordName)) { - record->ReadComplete(aStatus, aBytes.Elements(), aBytes.Length()); + if (mShutdown) { + return IPC_OK(); } + RefPtr record = GetRecord(aRecordName); + if (!record) { + // Not fatal. + return IPC_OK(); + } + record->ReadComplete(aStatus, aBytes.Elements(), aBytes.Length()); return IPC_OK(); } mozilla::ipc::IPCResult GMPStorageChild::RecvWriteComplete( const nsCString& aRecordName, const GMPErr& aStatus) { - if (RefPtr record = GetRecord(aRecordName)) { - record->WriteComplete(aStatus); + if (mShutdown) { + return IPC_OK(); } + RefPtr record = GetRecord(aRecordName); + if (!record) { + // Not fatal. + return IPC_OK(); + } + record->WriteComplete(aStatus); return IPC_OK(); } @@ -269,26 +232,11 @@ mozilla::ipc::IPCResult GMPStorageChild::RecvShutdown() { // Block any new storage requests, and thus any messages back to the // parent. We don't delete any objects here, as that may invalidate // GMPRecord pointers held by the GMP. - MutexAutoLock lock(mMutex); + MonitorAutoLock lock(mMonitor); mShutdown = true; return IPC_OK(); } -void GMPStorageChild::ActorDestroy(ActorDestroyReason aWhy) { - nsRefPtrHashtable records; - { - MutexAutoLock lock(mMutex); - mShutdown = true; - records = std::move(mRecords); - } - - // We know that any other thread that may be using the owner has a strong - // reference to it, so it is safe to clear our own reference here. - for (auto& record : records) { - record.GetData()->DestroyOwner(); - } -} - } // namespace mozilla::gmp // avoid redefined macro in unified build diff --git a/icecat/dom/media/gmp/GMPStorageChild.h b/icecat/dom/media/gmp/GMPStorageChild.h index cfb2baa14b..97c61a5007 100644 --- a/icecat/dom/media/gmp/GMPStorageChild.h +++ b/icecat/dom/media/gmp/GMPStorageChild.h @@ -7,8 +7,6 @@ #define GMPStorageChild_h_ #include "mozilla/gmp/PGMPStorageChild.h" -#include "mozilla/Mutex.h" -#include "mozilla/RecursiveMutex.h" #include "gmp-storage.h" #include "nsTHashtable.h" #include "nsRefPtrHashtable.h" @@ -21,15 +19,13 @@ namespace mozilla::gmp { class GMPChild; class GMPStorageChild; -class GMPRecordImpl final : public GMPRecord { +class GMPRecordImpl : public GMPRecord { public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(GMPRecordImpl) GMPRecordImpl(GMPStorageChild* aOwner, const nsCString& aName, GMPRecordClient* aClient); - void DestroyOwner(); - // GMPRecord. GMPErr Open() override; GMPErr Read() override; @@ -43,16 +39,13 @@ class GMPRecordImpl final : public GMPRecord { void WriteComplete(GMPErr aStatus); private: - RefPtr GetOwner(); - ~GMPRecordImpl() = default; - RecursiveMutex mMutex{"GMPRecordImpl"}; const nsCString mName; - GMPRecordClient* mClient MOZ_GUARDED_BY(mMutex); - GMPStorageChild* mOwner MOZ_GUARDED_BY(mMutex); + GMPRecordClient* const mClient; + GMPStorageChild* const mOwner; }; -class GMPStorageChild final : public PGMPStorageChild { +class GMPStorageChild : public PGMPStorageChild { friend class PGMPStorageChild; public: @@ -72,10 +65,8 @@ class GMPStorageChild final : public PGMPStorageChild { GMPErr Close(const nsCString& aRecordName); - void ActorDestroy(ActorDestroyReason aWhy) override; - private: - bool HasRecord(const nsCString& aRecordName) MOZ_REQUIRES(mMutex); + bool HasRecord(const nsCString& aRecordName); already_AddRefed GetRecord(const nsCString& aRecordName); protected: @@ -92,11 +83,10 @@ class GMPStorageChild final : public PGMPStorageChild { mozilla::ipc::IPCResult RecvShutdown(); private: - Mutex mMutex{"GMPStorageChild"}; - nsRefPtrHashtable mRecords - MOZ_GUARDED_BY(mMutex); + Monitor mMonitor MOZ_UNANNOTATED; + nsRefPtrHashtable mRecords; GMPChild* mPlugin; - bool mShutdown MOZ_GUARDED_BY(mMutex) = false; + bool mShutdown; }; } // namespace mozilla::gmp diff --git a/icecat/dom/media/gmp/GMPTypes.ipdlh b/icecat/dom/media/gmp/GMPTypes.ipdlh index 8cb63eb8fe..21cfa9afa2 100644 --- a/icecat/dom/media/gmp/GMPTypes.ipdlh +++ b/icecat/dom/media/gmp/GMPTypes.ipdlh @@ -6,7 +6,6 @@ include "GMPMessageUtils.h"; using cdm::EncryptionScheme from "GMPSanitizedExports.h"; -using cdm::KeyStatus from "GMPSanitizedExports.h"; using GMPBufferType from "gmp-video-codec.h"; namespace mozilla { @@ -93,7 +92,7 @@ struct CDMVideoDecoderConfig { struct CDMKeyInformation { uint8_t[] mKeyId; - KeyStatus mStatus; + uint32_t mStatus; uint32_t mSystemCode; }; diff --git a/icecat/dom/media/gmp/GMPUtils.cpp b/icecat/dom/media/gmp/GMPUtils.cpp index 3849e089ba..3e47e141ac 100644 --- a/icecat/dom/media/gmp/GMPUtils.cpp +++ b/icecat/dom/media/gmp/GMPUtils.cpp @@ -256,23 +256,30 @@ static int SizeNumBytes(GMPBufferType aBufferType) { } } -bool AdjustOpenH264NALUSequence(uint8_t* aBuffer, uint32_t aSize, - GMPBufferType aType) { +bool AdjustOpenH264NALUSequence(GMPVideoEncodedFrame* aEncodedFrame) { + MOZ_ASSERT(aEncodedFrame); + MOZ_ASSERT(IsOnGMPThread()); + + uint8_t* encodedBuffer = aEncodedFrame->Buffer(); + uint32_t encodedSize = aEncodedFrame->Size(); + GMPBufferType encodedType = aEncodedFrame->BufferType(); + + if (NS_WARN_IF(!encodedBuffer)) { + GMP_LOG_ERROR("GMP plugin returned null buffer"); + return false; + } + // Libwebrtc's RtpPacketizerH264 expects a 3- or 4-byte NALU start sequence // before the start of the NALU payload. {0,0,1} or {0,0,0,1}. We set this // in-place. Any other length of the length field we reject. - const uint32_t sizeNumBytes = static_cast(SizeNumBytes(aType)); - if (sizeNumBytes > aSize) { - return false; - } + + const int sizeNumBytes = SizeNumBytes(encodedType); uint32_t unitOffset = 0; uint32_t unitSize = 0; - // Make sure we don't read past the end of the buffer getting the size. - // Subtraction form avoids uint32_t wraparound: aSize - sizeNumBytes - // cannot underflow (checked above). - while (unitOffset < aSize - sizeNumBytes) { - uint8_t* unitBuffer = aBuffer + unitOffset; - switch (aType) { + // Make sure we don't read past the end of the buffer getting the size + while (unitOffset + sizeNumBytes < encodedSize) { + uint8_t* unitBuffer = encodedBuffer + unitOffset; + switch (encodedType) { case GMP_BufferLength24: { #if MOZ_LITTLE_ENDIAN() unitSize = (static_cast(*unitBuffer)) | @@ -289,7 +296,7 @@ bool AdjustOpenH264NALUSequence(uint8_t* aBuffer, uint32_t aSize, // sequence to the NALU size per the GMP protocol. We mitigate this by // letting it through as this is what libwebrtc already expects and // scans for. - unitSize = aSize - 3; + unitSize = encodedSize - 3; break; } memcpy(unitBuffer, startSequence, 3); @@ -307,54 +314,41 @@ bool AdjustOpenH264NALUSequence(uint8_t* aBuffer, uint32_t aSize, // sequence to the NALU size per the GMP protocol. We mitigate this by // letting it through as this is what libwebrtc already expects and // scans for. - unitSize = aSize - 4; + unitSize = encodedSize - 4; break; } memcpy(unitBuffer, startSequence, 4); break; } default: - GMP_LOG_ERROR("GMP plugin returned type we cannot handle (%d)", aType); + GMP_LOG_ERROR("GMP plugin returned type we cannot handle (%d)", + encodedType); return false; } - // Loop invariant: unitOffset + sizeNumBytes <= aSize, so - // aSize - unitOffset - sizeNumBytes cannot underflow. - const uint32_t remaining = aSize - unitOffset - sizeNumBytes; - if (unitSize == 0 || unitSize > remaining) { + MOZ_ASSERT(unitSize != 0); + MOZ_ASSERT(unitOffset + sizeNumBytes + unitSize <= encodedSize); + if (unitSize == 0 || unitOffset + sizeNumBytes + unitSize > encodedSize) { // XXX Should we kill the plugin for returning extra bytes? Probably GMP_LOG_ERROR( "GMP plugin returned badly formatted encoded data: " - "unitOffset=%u, sizeNumBytes=%u, unitSize=%u, size=%u", - unitOffset, sizeNumBytes, unitSize, aSize); + "unitOffset=%u, sizeNumBytes=%d, unitSize=%u, size=%u", + unitOffset, sizeNumBytes, unitSize, encodedSize); return false; } unitOffset += sizeNumBytes + unitSize; } - if (unitOffset != aSize) { + if (unitOffset != encodedSize) { // At most 3 bytes can be left over, depending on buffertype - GMP_LOG_DEBUG("GMP plugin returned %u extra bytes", aSize - unitOffset); + GMP_LOG_DEBUG("GMP plugin returned %u extra bytes", + encodedSize - unitOffset); } return true; } -bool AdjustOpenH264NALUSequence(GMPVideoEncodedFrame* aEncodedFrame) { - MOZ_ASSERT(aEncodedFrame); - MOZ_ASSERT(IsOnGMPThread()); - - uint8_t* encodedBuffer = aEncodedFrame->Buffer(); - if (NS_WARN_IF(!encodedBuffer)) { - GMP_LOG_ERROR("GMP plugin returned null buffer"); - return false; - } - - return AdjustOpenH264NALUSequence(encodedBuffer, aEncodedFrame->Size(), - aEncodedFrame->BufferType()); -} - MediaResult ToMediaResult(GMPErr aErr, const nsACString& aMessage) { nsPrintfCString msg("%s (GMPErr:%x)", aMessage.Data(), aErr); switch (aErr) { diff --git a/icecat/dom/media/gmp/GMPUtils.h b/icecat/dom/media/gmp/GMPUtils.h index 608197a571..017af9eb0d 100644 --- a/icecat/dom/media/gmp/GMPUtils.h +++ b/icecat/dom/media/gmp/GMPUtils.h @@ -7,7 +7,6 @@ #define GMPUtils_h_ #include "gmp-errors.h" -#include "gmp-video-codec.h" #include "MediaResult.h" #include "mozilla/AbstractThread.h" #include "mozilla/RefPtr.h" @@ -84,9 +83,6 @@ already_AddRefed GetGMPThread(); // I420 format, padded so that the width and height are multiples of 16. size_t I420FrameBufferSizePadded(int32_t aWidth, int32_t aHeight); -bool AdjustOpenH264NALUSequence(uint8_t* aBuffer, uint32_t aSize, - GMPBufferType aType); - bool AdjustOpenH264NALUSequence(GMPVideoEncodedFrame* aEncodedFrame); MediaResult ToMediaResult(GMPErr aErr, const nsACString& aMessage); diff --git a/icecat/dom/media/gmp/GMPVideoDecoderChild.cpp b/icecat/dom/media/gmp/GMPVideoDecoderChild.cpp index 249d801fc1..429f9fd4dd 100644 --- a/icecat/dom/media/gmp/GMPVideoDecoderChild.cpp +++ b/icecat/dom/media/gmp/GMPVideoDecoderChild.cpp @@ -4,34 +4,23 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "GMPVideoDecoderChild.h" - +#include "GMPVideoi420FrameImpl.h" #include "GMPContentChild.h" #include #include "mozilla/Unused.h" +#include "mozilla/StaticPrefs_media.h" #include "GMPPlatform.h" #include "GMPVideoEncodedFrameImpl.h" -#include "GMPVideoi420FrameImpl.h" -#include "mozilla/StaticPrefs_media.h" -#include "nsProxyRelease.h" -#include "nsThreadUtils.h" #include "runnable_utils.h" namespace mozilla::gmp { GMPVideoDecoderChild::GMPVideoDecoderChild(GMPContentChild* aPlugin) - : mPlugin(aPlugin), mVideoDecoder(nullptr) { + : mPlugin(aPlugin), mVideoDecoder(nullptr), mVideoHost(this) { MOZ_ASSERT(mPlugin); } -GMPVideoDecoderChild::~GMPVideoDecoderChild() { - // Since any outstanding synchronous runnables require a strong reference to - // ourselves, we know that when we are freed, they must have all successfully - // dispatched. As such, it should now be safe to free the plugin and join with - // the worker thread. - if (mVideoDecoder) { - mVideoDecoder->DecodingComplete(); - } -} +GMPVideoDecoderChild::~GMPVideoDecoderChild() = default; bool GMPVideoDecoderChild::MgrIsOnOwningThread() const { return !mPlugin || mPlugin->GMPMessageLoop() == MessageLoop::current(); @@ -43,6 +32,8 @@ void GMPVideoDecoderChild::Init(GMPVideoDecoder* aDecoder) { mVideoDecoder = aDecoder; } +GMPVideoHostImpl& GMPVideoDecoderChild::Host() { return mVideoHost; } + void GMPVideoDecoderChild::Decoded(GMPVideoi420Frame* aDecodedFrame) { if (!aDecodedFrame) { MOZ_CRASH("Not given a decoded frame!"); @@ -57,9 +48,11 @@ void GMPVideoDecoderChild::Decoded(GMPVideoi420Frame* aDecodedFrame) { auto df = static_cast(aDecodedFrame); - ipc::Shmem inputShmem; - if (MgrTakeShmem(GMPSharedMemClass::Encoded, &inputShmem)) { - Unused << SendReturnShmem(std::move(inputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + ipc::Shmem inputShmem; + if (memMgr->MgrTakeShmem(GMPSharedMemClass::Encoded, &inputShmem)) { + Unused << SendReturnShmem(std::move(inputShmem)); + } } GMPVideoi420FrameData frameData; @@ -109,17 +102,8 @@ void GMPVideoDecoderChild::InputDataExhausted() { } void GMPVideoDecoderChild::DrainComplete() { - if (!mDrainSelfRef) { - MOZ_ASSERT_UNREACHABLE("DrainComplete without Drain!"); - return; - } - - // Proxy release to ensure that any synchronous runnables from the plugin can - // first unblock the worker thread. If we destroy the plugin once this - // reference is freed, we won't be blocked trying to join the worker thread. - NS_ProxyRelease("GMPVideoDecoderChild::DrainComplete", - GetMainThreadSerialEventTarget(), mDrainSelfRef.forget(), - /* aAlwaysProxy */ true); + MOZ_ASSERT(mOutstandingDrain, "DrainComplete without Drain!"); + mOutstandingDrain = false; if (NS_WARN_IF(!mPlugin)) { return; @@ -131,17 +115,8 @@ void GMPVideoDecoderChild::DrainComplete() { } void GMPVideoDecoderChild::ResetComplete() { - if (!mResetSelfRef) { - MOZ_ASSERT_UNREACHABLE("ResetComplete without Reset!"); - return; - } - - // Proxy release to ensure that any synchronous runnables from the plugin can - // first unblock the worker thread. If we destroy the plugin once this - // reference is freed, we won't be blocked trying to join the worker thread. - NS_ProxyRelease("GMPVideoDecoderChild::ResetComplete", - GetMainThreadSerialEventTarget(), mResetSelfRef.forget(), - /* aAlwaysProxy */ true); + MOZ_ASSERT(mOutstandingReset, "ResetComplete without Reset!"); + mOutstandingReset = false; if (NS_WARN_IF(!mPlugin)) { return; @@ -178,7 +153,12 @@ mozilla::ipc::IPCResult GMPVideoDecoderChild::RecvInitDecode( mozilla::ipc::IPCResult GMPVideoDecoderChild::RecvGiveShmem( ipc::Shmem&& aOutputShmem) { - MgrGiveShmem(GMPSharedMemClass::Decoded, std::move(aOutputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + memMgr->MgrGiveShmem(GMPSharedMemClass::Decoded, std::move(aOutputShmem)); + } else { + DeallocShmem(aOutputShmem); + } + return IPC_OK(); } @@ -191,8 +171,8 @@ mozilla::ipc::IPCResult GMPVideoDecoderChild::RecvDecode( return IPC_FAIL(this, "!mVideoDecoder"); } - auto* f = - new GMPVideoEncodedFrameImpl(aInputFrame, std::move(aInputShmem), this); + auto* f = new GMPVideoEncodedFrameImpl(aInputFrame, std::move(aInputShmem), + &mVideoHost); // Ignore any return code. It is OK for this to fail without killing the // process. @@ -207,14 +187,14 @@ mozilla::ipc::IPCResult GMPVideoDecoderChild::RecvReset() { return IPC_FAIL(this, "!mVideoDecoder"); } - if (mResetSelfRef) { + if (mOutstandingReset) { MOZ_ASSERT_UNREACHABLE("Already has outstanding reset!"); return IPC_OK(); } // Ignore any return code. It is OK for this to fail without killing the // process. - mResetSelfRef = this; + mOutstandingReset = true; mVideoDecoder->Reset(); return IPC_OK(); @@ -225,24 +205,42 @@ mozilla::ipc::IPCResult GMPVideoDecoderChild::RecvDrain() { return IPC_FAIL(this, "!mVideoDecoder"); } - if (mDrainSelfRef) { + if (mOutstandingDrain) { MOZ_ASSERT_UNREACHABLE("Already has outstanding drain!"); return IPC_OK(); } // Ignore any return code. It is OK for this to fail without killing the // process. - mDrainSelfRef = this; + mOutstandingDrain = true; mVideoDecoder->Drain(); return IPC_OK(); } void GMPVideoDecoderChild::ActorDestroy(ActorDestroyReason why) { - // We don't destroy the video decoder from the plugin here because there may - // be outstanding synchronous runnables. They hold a strong reference to - // ourselves, so we can wait for our destructor to be called first. - MgrPurgeShmems(); + // If there are no encoded frames, then we know that OpenH264 has destroyed + // any outstanding references to its pending decode frames. This means it + // should be safe to destroy the decoder since there should not be any pending + // sync callbacks. + if (!SpinPendingGmpEventsUntil( + [&]() -> bool { + return mOutstandingDrain || mOutstandingReset || + mVideoHost.IsEncodedFramesEmpty(); + }, + StaticPrefs::media_gmp_coder_shutdown_timeout_ms())) { + NS_WARNING("Timed out waiting for synchronous events!"); + } + + if (mVideoDecoder) { + // Ignore any return code. It is OK for this to fail without killing the + // process. + mVideoDecoder->DecodingComplete(); + mVideoDecoder = nullptr; + } + + mVideoHost.DoneWithAPI(); + mPlugin = nullptr; } diff --git a/icecat/dom/media/gmp/GMPVideoDecoderChild.h b/icecat/dom/media/gmp/GMPVideoDecoderChild.h index 790d7400e9..1e4f6df546 100644 --- a/icecat/dom/media/gmp/GMPVideoDecoderChild.h +++ b/icecat/dom/media/gmp/GMPVideoDecoderChild.h @@ -19,7 +19,7 @@ class GMPContentChild; class GMPVideoDecoderChild final : public PGMPVideoDecoderChild, public GMPVideoDecoderCallback, - public GMPVideoHostImpl { + public GMPSharedMemManager { friend class PGMPVideoDecoderChild; public: @@ -30,6 +30,7 @@ class GMPVideoDecoderChild final : public PGMPVideoDecoderChild, explicit GMPVideoDecoderChild(GMPContentChild* aPlugin); void Init(GMPVideoDecoder* aDecoder); + GMPVideoHostImpl& Host(); // GMPVideoDecoderCallback void Decoded(GMPVideoi420Frame* decodedFrame) override; @@ -41,13 +42,8 @@ class GMPVideoDecoderChild final : public PGMPVideoDecoderChild, void Error(GMPErr aError) override; // GMPSharedMemManager - bool MgrCanSend() const override { return CanSend(); } bool MgrIsOnOwningThread() const override; - void MgrDeallocShmem(Shmem& aMem) override { - if (CanSend()) { - DeallocShmem(aMem); - } - } + void MgrDeallocShmem(Shmem& aMem) override { DeallocShmem(aMem); } private: virtual ~GMPVideoDecoderChild(); @@ -67,8 +63,9 @@ class GMPVideoDecoderChild final : public PGMPVideoDecoderChild, GMPContentChild* mPlugin; GMPVideoDecoder* mVideoDecoder; - RefPtr mDrainSelfRef; - RefPtr mResetSelfRef; + GMPVideoHostImpl mVideoHost; + bool mOutstandingDrain = false; + bool mOutstandingReset = false; }; } // namespace mozilla::gmp diff --git a/icecat/dom/media/gmp/GMPVideoDecoderParent.cpp b/icecat/dom/media/gmp/GMPVideoDecoderParent.cpp index 5b19d30e89..5b676be879 100644 --- a/icecat/dom/media/gmp/GMPVideoDecoderParent.cpp +++ b/icecat/dom/media/gmp/GMPVideoDecoderParent.cpp @@ -37,6 +37,7 @@ GMPVideoDecoderParent::GMPVideoDecoderParent(GMPContentParent* aPlugin) mIsAwaitingDrainComplete(false), mPlugin(aPlugin), mCallback(nullptr), + mVideoHost(this), mPluginId(aPlugin->GetPluginId()), mPluginType(aPlugin->GetPluginType()), mFrameCount(0) { @@ -49,6 +50,8 @@ bool GMPVideoDecoderParent::MgrIsOnOwningThread() const { return !mPlugin || mPlugin->GMPEventTarget()->IsOnCurrentThread(); } +GMPVideoHostImpl& GMPVideoDecoderParent::Host() { return mVideoHost; } + // Note: may be called via Terminated() void GMPVideoDecoderParent::Close() { GMP_LOG_DEBUG("GMPVideoDecoderParent[%p]::Close()", this); @@ -130,10 +133,12 @@ nsresult GMPVideoDecoderParent::Decode( } if (mDecodedShmemSize > 0) { - ipc::Shmem outputShmem; - if (MgrTakeShmem(GMPSharedMemClass::Decoded, mDecodedShmemSize, - &outputShmem)) { - Unused << SendGiveShmem(std::move(outputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + ipc::Shmem outputShmem; + if (memMgr->MgrTakeShmem(GMPSharedMemClass::Decoded, mDecodedShmemSize, + &outputShmem)) { + Unused << SendGiveShmem(std::move(outputShmem)); + } } } @@ -275,7 +280,7 @@ void GMPVideoDecoderParent::ActorDestroy(ActorDestroyReason aWhy) { mPlugin->VideoDecoderDestroyed(this); mPlugin = nullptr; } - MgrPurgeShmems(); + mVideoHost.ActorDestroyed(); MaybeDisconnect(aWhy == AbnormalShutdown); } @@ -314,7 +319,12 @@ bool GMPVideoDecoderParent::HandleDecoded( mozilla::ipc::IPCResult GMPVideoDecoderParent::RecvReturnShmem( ipc::Shmem&& aInputShmem) { - MgrGiveShmem(GMPSharedMemClass::Encoded, std::move(aInputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + memMgr->MgrGiveShmem(GMPSharedMemClass::Encoded, std::move(aInputShmem)); + } else { + DeallocShmem(aInputShmem); + } + return IPC_OK(); } @@ -322,7 +332,7 @@ mozilla::ipc::IPCResult GMPVideoDecoderParent::RecvDecodedShmem( const GMPVideoi420FrameData& aDecodedFrame, ipc::Shmem&& aDecodedShmem) { if (HandleDecoded(aDecodedFrame, aDecodedShmem.Size())) { auto* f = new GMPVideoi420FrameImpl(aDecodedFrame, std::move(aDecodedShmem), - this); + &mVideoHost); mCallback->Decoded(f); } else { DeallocShmem(aDecodedShmem); @@ -336,7 +346,7 @@ mozilla::ipc::IPCResult GMPVideoDecoderParent::RecvDecodedData( if (HandleDecoded(aDecodedFrame, aDecodedArray.Length())) { mDecodedShmemSize = std::max(mDecodedShmemSize, aDecodedArray.Length()); auto* f = new GMPVideoi420FrameImpl(aDecodedFrame, std::move(aDecodedArray), - this); + &mVideoHost); mCallback->Decoded(f); } diff --git a/icecat/dom/media/gmp/GMPVideoDecoderParent.h b/icecat/dom/media/gmp/GMPVideoDecoderParent.h index c1cc338c71..9bae36220b 100644 --- a/icecat/dom/media/gmp/GMPVideoDecoderParent.h +++ b/icecat/dom/media/gmp/GMPVideoDecoderParent.h @@ -23,7 +23,7 @@ class GMPContentParent; class GMPVideoDecoderParent final : public PGMPVideoDecoderParent, public GMPVideoDecoderProxy, - public GMPVideoHostImpl, + public GMPSharedMemManager, public GMPCrashHelperHolder { friend class PGMPVideoDecoderParent; @@ -34,6 +34,7 @@ class GMPVideoDecoderParent final : public PGMPVideoDecoderParent, explicit GMPVideoDecoderParent(GMPContentParent* aPlugin); + GMPVideoHostImpl& Host(); nsresult Shutdown(); // GMPVideoDecoder @@ -57,14 +58,9 @@ class GMPVideoDecoderParent final : public PGMPVideoDecoderParent, return AllocShmem(aSize, aMem); } - void MgrDeallocShmem(Shmem& aMem) override { - if (CanSend()) { - DeallocShmem(aMem); - } - } + void MgrDeallocShmem(Shmem& aMem) override { DeallocShmem(aMem); } protected: - bool MgrCanSend() const override { return CanSend(); } bool MgrIsOnOwningThread() const override; private: @@ -103,6 +99,7 @@ class GMPVideoDecoderParent final : public PGMPVideoDecoderParent, bool mIsAwaitingDrainComplete; RefPtr mPlugin; RefPtr mCallback; + GMPVideoHostImpl mVideoHost; const uint32_t mPluginId; GMPPluginType mPluginType = GMPPluginType::Unknown; int32_t mFrameCount; diff --git a/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.cpp b/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.cpp index feb657b381..57c677f4e8 100644 --- a/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.cpp +++ b/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.cpp @@ -7,9 +7,7 @@ #include "GMPVideoHost.h" #include "mozilla/gmp/GMPTypes.h" #include "mozilla/Unused.h" -#include "nsProxyRelease.h" -#include "nsThreadUtils.h" -#include "nsXULAppAPI.h" +#include "GMPSharedMemManager.h" namespace mozilla::gmp { @@ -25,6 +23,7 @@ GMPVideoEncodedFrameImpl::GMPVideoEncodedFrameImpl(GMPVideoHostImpl* aHost) mHost(aHost), mBufferType(GMP_BufferSingle) { MOZ_ASSERT(aHost); + aHost->EncodedFrameCreated(this); } GMPVideoEncodedFrameImpl::GMPVideoEncodedFrameImpl( @@ -42,6 +41,7 @@ GMPVideoEncodedFrameImpl::GMPVideoEncodedFrameImpl( mShmemBuffer(std::move(aShmemBuffer)), mBufferType(aFrameData.mBufferType()) { MOZ_ASSERT(aHost); + aHost->EncodedFrameCreated(this); } GMPVideoEncodedFrameImpl::GMPVideoEncodedFrameImpl( @@ -59,17 +59,13 @@ GMPVideoEncodedFrameImpl::GMPVideoEncodedFrameImpl( mArrayBuffer(std::move(aArrayBuffer)), mBufferType(aFrameData.mBufferType()) { MOZ_ASSERT(aHost); + aHost->EncodedFrameCreated(this); } GMPVideoEncodedFrameImpl::~GMPVideoEncodedFrameImpl() { DestroyBuffer(); - // Proxy release to ensure that any synchronous runnables from the plugin can - // first unblock the worker thread. If we destroy the plugin once this - // reference is freed, we won't be blocked trying to join the worker thread. - if (XRE_IsGMPluginProcess()) { - NS_ProxyRelease("GMPVideoEncodedFrameImpl::~GMPVideoEncodedFrameImpl", - GetMainThreadSerialEventTarget(), mHost.forget(), - /* aAlwaysProxy */ true); + if (mHost) { + mHost->EncodedFrameDestroyed(this); } } @@ -77,20 +73,18 @@ GMPVideoFrameFormat GMPVideoEncodedFrameImpl::GetFrameFormat() { return kGMPEncodedVideoFrame; } +void GMPVideoEncodedFrameImpl::DoneWithAPI() { + DestroyBuffer(); + + // Do this after destroying the buffer because destruction + // involves deallocation, which requires a host. + mHost = nullptr; +} + /* static */ bool GMPVideoEncodedFrameImpl::CheckFrameData( const GMPVideoEncodedFrameData& aFrameData, size_t aBufferSize) { - if (aFrameData.mTemporalLayerId() < -1 || - aFrameData.mTemporalLayerId() >= 4) { - // Valid temporal layer IDs are -1 which denotes that no layer ID was set, - // and 0-3 to denote up to the max number of layers supported for sending by - // libwebrtc (4), see webrtc::kMaxTemporalStreams. - return false; - } - // 100 MB is far beyond any legitimate single encoded video frame. - static constexpr uint32_t kMaxFrameSize = 100u * 1024u * 1024u; - return aFrameData.mSize() <= aBufferSize && - aFrameData.mSize() <= kMaxFrameSize; + return aFrameData.mSize() <= aBufferSize; } void GMPVideoEncodedFrameImpl::RelinquishFrameData( @@ -135,8 +129,9 @@ bool GMPVideoEncodedFrameImpl::RelinquishFrameData( } void GMPVideoEncodedFrameImpl::DestroyBuffer() { - if (mShmemBuffer.IsWritable()) { - mHost->MgrGiveShmem(GMPSharedMemClass::Encoded, std::move(mShmemBuffer)); + if (mHost && mShmemBuffer.IsWritable()) { + mHost->SharedMemMgr()->MgrGiveShmem(GMPSharedMemClass::Encoded, + std::move(mShmemBuffer)); } mShmemBuffer = ipc::Shmem(); mArrayBuffer.Clear(); @@ -147,8 +142,8 @@ GMPErr GMPVideoEncodedFrameImpl::CreateEmptyFrame(uint32_t aSize) { DestroyBuffer(); } else if (aSize > AllocatedSize()) { DestroyBuffer(); - if (!mHost->MgrTakeShmem(GMPSharedMemClass::Encoded, aSize, - &mShmemBuffer) && + if (!mHost->SharedMemMgr()->MgrTakeShmem(GMPSharedMemClass::Encoded, aSize, + &mShmemBuffer) && !mArrayBuffer.SetLength(aSize, fallible)) { return GMPAllocErr; } @@ -217,13 +212,18 @@ void GMPVideoEncodedFrameImpl::SetAllocatedSize(uint32_t aNewSize) { return; } + if (!mHost) { + return; + } + if (!mArrayBuffer.IsEmpty()) { Unused << mArrayBuffer.SetLength(aNewSize, fallible); return; } ipc::Shmem new_mem; - if (!mHost->MgrTakeShmem(GMPSharedMemClass::Encoded, aNewSize, &new_mem) && + if (!mHost->SharedMemMgr()->MgrTakeShmem(GMPSharedMemClass::Encoded, aNewSize, + &new_mem) && !mArrayBuffer.SetLength(aNewSize, fallible)) { return; } @@ -232,7 +232,8 @@ void GMPVideoEncodedFrameImpl::SetAllocatedSize(uint32_t aNewSize) { if (new_mem.IsWritable()) { memcpy(new_mem.get(), mShmemBuffer.get(), mSize); } - mHost->MgrGiveShmem(GMPSharedMemClass::Encoded, std::move(mShmemBuffer)); + mHost->SharedMemMgr()->MgrGiveShmem(GMPSharedMemClass::Encoded, + std::move(mShmemBuffer)); } mShmemBuffer = new_mem; diff --git a/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.h b/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.h index d94e1c31e0..c444f3d9e1 100644 --- a/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.h +++ b/icecat/dom/media/gmp/GMPVideoEncodedFrameImpl.h @@ -57,6 +57,10 @@ class GMPVideoEncodedFrameImpl : public GMPVideoEncodedFrame { GMPVideoHostImpl* aHost); virtual ~GMPVideoEncodedFrameImpl(); + // This is called during a normal destroy sequence, which is + // when a consumer is finished or during XPCOM shutdown. + void DoneWithAPI(); + static bool CheckFrameData(const GMPVideoEncodedFrameData& aFrameData, size_t aBufferSize); @@ -112,7 +116,7 @@ class GMPVideoEncodedFrameImpl : public GMPVideoEncodedFrame { uint32_t mSize; int32_t mTemporalLayerId = -1; bool mCompleteFrame; - RefPtr mHost; + GMPVideoHostImpl* mHost; nsTArray mArrayBuffer; ipc::Shmem mShmemBuffer; GMPBufferType mBufferType; diff --git a/icecat/dom/media/gmp/GMPVideoEncoderChild.cpp b/icecat/dom/media/gmp/GMPVideoEncoderChild.cpp index a1e33ab4b5..f4b507d427 100644 --- a/icecat/dom/media/gmp/GMPVideoEncoderChild.cpp +++ b/icecat/dom/media/gmp/GMPVideoEncoderChild.cpp @@ -10,24 +10,17 @@ #include "mozilla/Unused.h" #include "GMPPlatform.h" #include "GMPVideoEncodedFrameImpl.h" +#include "GMPVideoi420FrameImpl.h" #include "runnable_utils.h" namespace mozilla::gmp { GMPVideoEncoderChild::GMPVideoEncoderChild(GMPContentChild* aPlugin) - : mPlugin(aPlugin), mVideoEncoder(nullptr) { + : mPlugin(aPlugin), mVideoEncoder(nullptr), mVideoHost(this) { MOZ_ASSERT(mPlugin); } -GMPVideoEncoderChild::~GMPVideoEncoderChild() { - // Since any outstanding synchronous runnables require a strong reference to - // ourselves, we know that when we are freed, they must have all successfully - // dispatched. As such, it should now be safe to free the plugin and join with - // the worker thread. - if (mVideoEncoder) { - mVideoEncoder->EncodingComplete(); - } -} +GMPVideoEncoderChild::~GMPVideoEncoderChild() = default; bool GMPVideoEncoderChild::MgrIsOnOwningThread() const { return !mPlugin || mPlugin->GMPMessageLoop() == MessageLoop::current(); @@ -39,6 +32,8 @@ void GMPVideoEncoderChild::Init(GMPVideoEncoder* aEncoder) { mVideoEncoder = aEncoder; } +GMPVideoHostImpl& GMPVideoEncoderChild::Host() { return mVideoHost; } + void GMPVideoEncoderChild::Encoded(GMPVideoEncodedFrame* aEncodedFrame, const uint8_t* aCodecSpecificInfo, uint32_t aCodecSpecificInfoLength) { @@ -51,9 +46,11 @@ void GMPVideoEncoderChild::Encoded(GMPVideoEncodedFrame* aEncodedFrame, auto ef = static_cast(aEncodedFrame); - ipc::Shmem inputShmem; - if (MgrTakeShmem(GMPSharedMemClass::Decoded, &inputShmem)) { - Unused << SendReturnShmem(std::move(inputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + ipc::Shmem inputShmem; + if (memMgr->MgrTakeShmem(GMPSharedMemClass::Decoded, &inputShmem)) { + Unused << SendReturnShmem(std::move(inputShmem)); + } } nsTArray codecSpecific; @@ -70,26 +67,9 @@ void GMPVideoEncoderChild::Encoded(GMPVideoEncodedFrame* aEncodedFrame, MOZ_CRASH("Encoded without any frame data!"); } - mLatestEncodedTimestamp = frameData.mTimestamp(); - aEncodedFrame->Destroy(); } -void GMPVideoEncoderChild::MgrDecodedFrameDestroyed( - GMPVideoi420FrameImpl* aFrame) { - if (NS_WARN_IF(!mPlugin)) { - return; - } - - // The OpenH264 encoder destroys the input frame if it has skipped encoding - // it. When it has encoded it, it calls the Encoded() callback before - // destroying the frame. - MOZ_ASSERT(mPlugin->GMPMessageLoop() == MessageLoop::current()); - if (aFrame->Timestamp() > mLatestEncodedTimestamp) { - (void)SendDroppedFrame(aFrame->Timestamp()); - } -} - void GMPVideoEncoderChild::Error(GMPErr aError) { if (NS_WARN_IF(!mPlugin)) { return; @@ -118,7 +98,12 @@ mozilla::ipc::IPCResult GMPVideoEncoderChild::RecvInitEncode( mozilla::ipc::IPCResult GMPVideoEncoderChild::RecvGiveShmem( ipc::Shmem&& aOutputShmem) { - MgrGiveShmem(GMPSharedMemClass::Encoded, std::move(aOutputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + memMgr->MgrGiveShmem(GMPSharedMemClass::Encoded, std::move(aOutputShmem)); + } else { + DeallocShmem(aOutputShmem); + } + return IPC_OK(); } @@ -131,10 +116,8 @@ mozilla::ipc::IPCResult GMPVideoEncoderChild::RecvEncode( return IPC_FAIL(this, "!mVideoDecoder"); } - // The `this` destroyed callback outlives the frame, because `mVideoEncoder` - // is responsible for destroying the frame, and we outlive `mVideoEncoder`. - auto* f = new GMPVideoi420FrameImpl(aInputFrame, std::move(aInputShmem), this, - HostReportPolicy::Destroyed); + auto* f = new GMPVideoi420FrameImpl(aInputFrame, std::move(aInputShmem), + &mVideoHost); // Ignore any return code. It is OK for this to fail without killing the // process. @@ -185,10 +168,25 @@ mozilla::ipc::IPCResult GMPVideoEncoderChild::RecvSetPeriodicKeyFrames( } void GMPVideoEncoderChild::ActorDestroy(ActorDestroyReason why) { - // We don't destroy the video encoder from the plugin here because there may - // be outstanding synchronous runnables. They hold a strong reference to - // ourselves, so we can wait for our destructor to be called first. - MgrPurgeShmems(); + // If there are no decoded frames, then we know that OpenH264 has destroyed + // any outstanding references to its pending encode frames. This means it + // should be safe to destroy the encoder since there should not be any pending + // sync callbacks. + if (!SpinPendingGmpEventsUntil( + [&]() -> bool { return mVideoHost.IsDecodedFramesEmpty(); }, + StaticPrefs::media_gmp_coder_shutdown_timeout_ms())) { + NS_WARNING("Timed out waiting for synchronous events!"); + } + + if (mVideoEncoder) { + // Ignore any return code. It is OK for this to fail without killing the + // process. + mVideoEncoder->EncodingComplete(); + mVideoEncoder = nullptr; + } + + mVideoHost.DoneWithAPI(); + mPlugin = nullptr; } diff --git a/icecat/dom/media/gmp/GMPVideoEncoderChild.h b/icecat/dom/media/gmp/GMPVideoEncoderChild.h index def711aba0..6cfd161c1f 100644 --- a/icecat/dom/media/gmp/GMPVideoEncoderChild.h +++ b/icecat/dom/media/gmp/GMPVideoEncoderChild.h @@ -10,7 +10,6 @@ #include "mozilla/gmp/PGMPVideoEncoderChild.h" #include "gmp-video-encode.h" #include "GMPSharedMemManager.h" -#include "GMPVideoi420FrameImpl.h" #include "GMPVideoHost.h" namespace mozilla::gmp { @@ -19,7 +18,7 @@ class GMPContentChild; class GMPVideoEncoderChild final : public PGMPVideoEncoderChild, public GMPVideoEncoderCallback, - public GMPVideoHostImpl { + public GMPSharedMemManager { friend class PGMPVideoEncoderChild; public: @@ -30,6 +29,7 @@ class GMPVideoEncoderChild final : public PGMPVideoEncoderChild, explicit GMPVideoEncoderChild(GMPContentChild* aPlugin); void Init(GMPVideoEncoder* aEncoder); + GMPVideoHostImpl& Host(); // GMPVideoEncoderCallback void Encoded(GMPVideoEncodedFrame* aEncodedFrame, @@ -38,15 +38,9 @@ class GMPVideoEncoderChild final : public PGMPVideoEncoderChild, void Error(GMPErr aError) override; // GMPSharedMemManager - void MgrDeallocShmem(Shmem& aMem) override { - if (CanSend()) { - DeallocShmem(aMem); - } - } - void MgrDecodedFrameDestroyed(GMPVideoi420FrameImpl* aFrame) override; + void MgrDeallocShmem(Shmem& aMem) override { DeallocShmem(aMem); } protected: - bool MgrCanSend() const override { return CanSend(); } bool MgrIsOnOwningThread() const override; private: @@ -71,7 +65,7 @@ class GMPVideoEncoderChild final : public PGMPVideoEncoderChild, GMPContentChild* mPlugin; GMPVideoEncoder* mVideoEncoder; - uint64_t mLatestEncodedTimestamp = 0; + GMPVideoHostImpl mVideoHost; }; } // namespace mozilla::gmp diff --git a/icecat/dom/media/gmp/GMPVideoEncoderParent.cpp b/icecat/dom/media/gmp/GMPVideoEncoderParent.cpp index 79d96bb5c3..53ac87878a 100644 --- a/icecat/dom/media/gmp/GMPVideoEncoderParent.cpp +++ b/icecat/dom/media/gmp/GMPVideoEncoderParent.cpp @@ -41,6 +41,7 @@ GMPVideoEncoderParent::GMPVideoEncoderParent(GMPContentParent* aPlugin) mActorDestroyed(false), mPlugin(aPlugin), mCallback(nullptr), + mVideoHost(this), mPluginId(aPlugin->GetPluginId()) { MOZ_ASSERT(mPlugin); } @@ -49,6 +50,8 @@ bool GMPVideoEncoderParent::MgrIsOnOwningThread() const { return !mPlugin || mPlugin->GMPEventTarget()->IsOnCurrentThread(); } +GMPVideoHostImpl& GMPVideoEncoderParent::Host() { return mVideoHost; } + // Note: may be called via Terminated() void GMPVideoEncoderParent::Close() { GMP_LOG_DEBUG("%s::%s: %p", __CLASS__, __FUNCTION__, this); @@ -74,6 +77,7 @@ GMPErr GMPVideoEncoderParent::InitEncode( if (mIsOpen) { NS_WARNING("Trying to re-init an in-use GMP video encoder!"); return GMPGenericErr; + ; } MOZ_ASSERT(mPlugin->GMPEventTarget()->IsOnCurrentThread()); @@ -116,10 +120,12 @@ GMPErr GMPVideoEncoderParent::Encode( } if (mEncodedShmemSize > 0) { - ipc::Shmem outputShmem; - if (MgrTakeShmem(GMPSharedMemClass::Encoded, mEncodedShmemSize, - &outputShmem)) { - Unused << SendGiveShmem(std::move(outputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + ipc::Shmem outputShmem; + if (memMgr->MgrTakeShmem(GMPSharedMemClass::Encoded, mEncodedShmemSize, + &outputShmem)) { + Unused << SendGiveShmem(std::move(outputShmem)); + } } } @@ -221,13 +227,18 @@ void GMPVideoEncoderParent::ActorDestroy(ActorDestroyReason aWhy) { mPlugin->VideoEncoderDestroyed(this); mPlugin = nullptr; } - MgrPurgeShmems(); + mVideoHost.ActorDestroyed(); // same as DoneWithAPI MaybeDisconnect(aWhy == AbnormalShutdown); } mozilla::ipc::IPCResult GMPVideoEncoderParent::RecvReturnShmem( ipc::Shmem&& aInputShmem) { - MgrGiveShmem(GMPSharedMemClass::Decoded, std::move(aInputShmem)); + if (GMPSharedMemManager* memMgr = mVideoHost.SharedMemMgr()) { + memMgr->MgrGiveShmem(GMPSharedMemClass::Decoded, std::move(aInputShmem)); + } else { + DeallocShmem(aInputShmem); + } + return IPC_OK(); } @@ -236,8 +247,8 @@ mozilla::ipc::IPCResult GMPVideoEncoderParent::RecvEncodedShmem( nsTArray&& aCodecSpecificInfo) { if (mCallback && GMPVideoEncodedFrameImpl::CheckFrameData( aEncodedFrame, aEncodedShmem.Size())) { - auto* f = new GMPVideoEncodedFrameImpl(aEncodedFrame, - std::move(aEncodedShmem), this); + auto* f = new GMPVideoEncodedFrameImpl( + aEncodedFrame, std::move(aEncodedShmem), &mVideoHost); mCallback->Encoded(f, aCodecSpecificInfo); f->Destroy(); } else { @@ -252,22 +263,14 @@ mozilla::ipc::IPCResult GMPVideoEncoderParent::RecvEncodedData( if (mCallback && GMPVideoEncodedFrameImpl::CheckFrameData( aEncodedFrame, aEncodedData.Length())) { mEncodedShmemSize = std::max(mEncodedShmemSize, aEncodedData.Length()); - auto* f = new GMPVideoEncodedFrameImpl(aEncodedFrame, - std::move(aEncodedData), this); + auto* f = new GMPVideoEncodedFrameImpl( + aEncodedFrame, std::move(aEncodedData), &mVideoHost); mCallback->Encoded(f, aCodecSpecificInfo); f->Destroy(); } return IPC_OK(); } -mozilla::ipc::IPCResult GMPVideoEncoderParent::RecvDroppedFrame( - const uint64_t& aTimestamp) { - if (mCallback) { - mCallback->Dropped(aTimestamp); - } - return IPC_OK(); -} - mozilla::ipc::IPCResult GMPVideoEncoderParent::RecvError(const GMPErr& aError) { if (mCallback) { mCallback->Error(aError); diff --git a/icecat/dom/media/gmp/GMPVideoEncoderParent.h b/icecat/dom/media/gmp/GMPVideoEncoderParent.h index fa335e669a..78306ab2f9 100644 --- a/icecat/dom/media/gmp/GMPVideoEncoderParent.h +++ b/icecat/dom/media/gmp/GMPVideoEncoderParent.h @@ -22,7 +22,7 @@ class GMPContentParent; class GMPVideoEncoderParent final : public GMPVideoEncoderProxy, public PGMPVideoEncoderParent, - public GMPVideoHostImpl, + public GMPSharedMemManager, public GMPCrashHelperHolder { friend class PGMPVideoEncoderParent; @@ -33,6 +33,7 @@ class GMPVideoEncoderParent final : public GMPVideoEncoderProxy, explicit GMPVideoEncoderParent(GMPContentParent* aPlugin); + GMPVideoHostImpl& Host(); void Shutdown(); // GMPVideoEncoderProxy @@ -54,14 +55,9 @@ class GMPVideoEncoderParent final : public GMPVideoEncoderProxy, return AllocShmem(aSize, aMem); } - void MgrDeallocShmem(Shmem& aMem) override { - if (CanSend()) { - DeallocShmem(aMem); - } - } + void MgrDeallocShmem(Shmem& aMem) override { DeallocShmem(aMem); } protected: - bool MgrCanSend() const override { return CanSend(); } bool MgrIsOnOwningThread() const override; private: @@ -77,7 +73,6 @@ class GMPVideoEncoderParent final : public GMPVideoEncoderProxy, const GMPVideoEncodedFrameData& aEncodedFrame, nsTArray&& aEncodedData, nsTArray&& aCodecSpecificInfo) override; - mozilla::ipc::IPCResult RecvDroppedFrame(const uint64_t& aTimestamp) override; mozilla::ipc::IPCResult RecvError(const GMPErr& aError) override; mozilla::ipc::IPCResult RecvShutdown() override; @@ -87,6 +82,7 @@ class GMPVideoEncoderParent final : public GMPVideoEncoderProxy, bool mActorDestroyed; RefPtr mPlugin; RefPtr mCallback; + GMPVideoHostImpl mVideoHost; const uint32_t mPluginId; }; diff --git a/icecat/dom/media/gmp/GMPVideoEncoderProxy.h b/icecat/dom/media/gmp/GMPVideoEncoderProxy.h index 6da7702770..ad638ebb3a 100644 --- a/icecat/dom/media/gmp/GMPVideoEncoderProxy.h +++ b/icecat/dom/media/gmp/GMPVideoEncoderProxy.h @@ -19,7 +19,6 @@ class GMPVideoEncoderCallbackProxy : public GMPCallbackBase { virtual ~GMPVideoEncoderCallbackProxy() = default; virtual void Encoded(GMPVideoEncodedFrame* aEncodedFrame, const nsTArray& aCodecSpecificInfo) = 0; - virtual void Dropped(uint64_t aTimestamp) = 0; virtual void Error(GMPErr aError) = 0; }; diff --git a/icecat/dom/media/gmp/GMPVideoHost.cpp b/icecat/dom/media/gmp/GMPVideoHost.cpp index 61c6524823..76580f6c6a 100644 --- a/icecat/dom/media/gmp/GMPVideoHost.cpp +++ b/icecat/dom/media/gmp/GMPVideoHost.cpp @@ -12,12 +12,17 @@ namespace mozilla::gmp { -GMPVideoHostImpl::GMPVideoHostImpl() = default; +GMPVideoHostImpl::GMPVideoHostImpl(GMPSharedMemManager* aSharedMemMgr) + : mSharedMemMgr(aSharedMemMgr) {} GMPVideoHostImpl::~GMPVideoHostImpl() = default; GMPErr GMPVideoHostImpl::CreateFrame(GMPVideoFrameFormat aFormat, GMPVideoFrame** aFrame) { + if (!mSharedMemMgr) { + return GMPGenericErr; + } + if (!aFrame) { return GMPGenericErr; } @@ -38,6 +43,10 @@ GMPErr GMPVideoHostImpl::CreateFrame(GMPVideoFrameFormat aFormat, } GMPErr GMPVideoHostImpl::CreatePlane(GMPPlane** aPlane) { + if (!mSharedMemMgr) { + return GMPGenericErr; + } + if (!aPlane) { return GMPGenericErr; } @@ -50,4 +59,40 @@ GMPErr GMPVideoHostImpl::CreatePlane(GMPPlane** aPlane) { return GMPNoErr; } +GMPSharedMemManager* GMPVideoHostImpl::SharedMemMgr() { return mSharedMemMgr; } + +// XXX This should merge with ActorDestroyed +void GMPVideoHostImpl::DoneWithAPI() { ActorDestroyed(); } + +void GMPVideoHostImpl::ActorDestroyed() { + for (uint32_t i = mEncodedFrames.Length(); i > 0; i--) { + mEncodedFrames[i - 1]->DoneWithAPI(); + mEncodedFrames.RemoveElementAt(i - 1); + } + for (uint32_t i = mDecodedFrames.Length(); i > 0; i--) { + mDecodedFrames[i - 1]->DoneWithAPI(); + mDecodedFrames.RemoveElementAt(i - 1); + } + mSharedMemMgr->MgrPurgeShmems(); + mSharedMemMgr = nullptr; +} + +void GMPVideoHostImpl::EncodedFrameCreated( + GMPVideoEncodedFrameImpl* aEncodedFrame) { + mEncodedFrames.AppendElement(aEncodedFrame); +} + +void GMPVideoHostImpl::EncodedFrameDestroyed(GMPVideoEncodedFrameImpl* aFrame) { + MOZ_ALWAYS_TRUE(mEncodedFrames.RemoveElement(aFrame)); +} + +void GMPVideoHostImpl::DecodedFrameCreated( + GMPVideoi420FrameImpl* aDecodedFrame) { + mDecodedFrames.AppendElement(aDecodedFrame); +} + +void GMPVideoHostImpl::DecodedFrameDestroyed(GMPVideoi420FrameImpl* aFrame) { + MOZ_ALWAYS_TRUE(mDecodedFrames.RemoveElement(aFrame)); +} + } // namespace mozilla::gmp diff --git a/icecat/dom/media/gmp/GMPVideoHost.h b/icecat/dom/media/gmp/GMPVideoHost.h index 5e9f989009..530e95c690 100644 --- a/icecat/dom/media/gmp/GMPVideoHost.h +++ b/icecat/dom/media/gmp/GMPVideoHost.h @@ -6,29 +6,51 @@ #ifndef GMPVideoHost_h_ #define GMPVideoHost_h_ -#include "GMPSharedMemManager.h" -#include "gmp-video-frame.h" #include "gmp-video-host.h" #include "gmp-video-plane.h" +#include "gmp-video-frame.h" #include "nsTArray.h" namespace mozilla::gmp { +class GMPSharedMemManager; class GMPVideoEncodedFrameImpl; class GMPVideoi420FrameImpl; -class GMPVideoHostImpl : public GMPVideoHost, public GMPSharedMemManager { +class GMPVideoHostImpl : public GMPVideoHost { public: - NS_INLINE_DECL_PURE_VIRTUAL_REFCOUNTING + explicit GMPVideoHostImpl(GMPSharedMemManager* aSharedMemMgr); + virtual ~GMPVideoHostImpl(); + + // Used for shared memory allocation and deallocation. + GMPSharedMemManager* SharedMemMgr(); + void DoneWithAPI(); + void ActorDestroyed(); + void EncodedFrameCreated(GMPVideoEncodedFrameImpl* aEncodedFrame); + void EncodedFrameDestroyed(GMPVideoEncodedFrameImpl* aFrame); + void DecodedFrameCreated(GMPVideoi420FrameImpl* aDecodedFrame); + void DecodedFrameDestroyed(GMPVideoi420FrameImpl* aFrame); + + bool IsEncodedFramesEmpty() const { return mEncodedFrames.IsEmpty(); } + + bool IsDecodedFramesEmpty() const { return mDecodedFrames.IsEmpty(); } // GMPVideoHost GMPErr CreateFrame(GMPVideoFrameFormat aFormat, GMPVideoFrame** aFrame) override; GMPErr CreatePlane(GMPPlane** aPlane) override; - protected: - GMPVideoHostImpl(); - virtual ~GMPVideoHostImpl(); + private: + // All shared memory allocations have to be made by an IPDL actor. + // This is a reference to the owning actor. If this reference is + // null then the actor has died and all allocations must fail. + GMPSharedMemManager* mSharedMemMgr; + + // We track all of these things because they need to handle further + // allocations through us and we need to notify them when they + // can't use us any more. + nsTArray mEncodedFrames; + nsTArray mDecodedFrames; }; } // namespace mozilla::gmp diff --git a/icecat/dom/media/gmp/GMPVideoi420FrameImpl.cpp b/icecat/dom/media/gmp/GMPVideoi420FrameImpl.cpp index ce9b3fa8ea..c291893033 100644 --- a/icecat/dom/media/gmp/GMPVideoi420FrameImpl.cpp +++ b/icecat/dom/media/gmp/GMPVideoi420FrameImpl.cpp @@ -8,9 +8,7 @@ #include "mozilla/gmp/GMPTypes.h" #include "mozilla/CheckedInt.h" #include "GMPVideoHost.h" -#include "nsProxyRelease.h" -#include "nsThreadUtils.h" -#include "nsXULAppAPI.h" +#include "GMPSharedMemManager.h" namespace mozilla::gmp { @@ -40,24 +38,16 @@ void GMPVideoi420FrameImpl::GMPFramePlane::Copy(uint8_t* aDst, } } -GMPVideoi420FrameImpl::GMPVideoi420FrameImpl( - GMPVideoHostImpl* aHost, - HostReportPolicy aReportPolicy /*= HostReportPolicy::None*/) - : mReportPolicy(aReportPolicy), - mHost(aHost), - mWidth(0), - mHeight(0), - mTimestamp(0ll), - mDuration(0ll) { +GMPVideoi420FrameImpl::GMPVideoi420FrameImpl(GMPVideoHostImpl* aHost) + : mHost(aHost), mWidth(0), mHeight(0), mTimestamp(0ll), mDuration(0ll) { MOZ_ASSERT(aHost); + aHost->DecodedFrameCreated(this); } GMPVideoi420FrameImpl::GMPVideoi420FrameImpl( const GMPVideoi420FrameData& aFrameData, ipc::Shmem&& aShmemBuffer, - GMPVideoHostImpl* aHost, - HostReportPolicy aReportPolicy /*= HostReportPolicy::None*/) - : mReportPolicy(aReportPolicy), - mHost(aHost), + GMPVideoHostImpl* aHost) + : mHost(aHost), mShmemBuffer(std::move(aShmemBuffer)), mYPlane(aFrameData.mYPlane()), mUPlane(aFrameData.mUPlane()), @@ -68,14 +58,13 @@ GMPVideoi420FrameImpl::GMPVideoi420FrameImpl( mUpdatedTimestamp(aFrameData.mUpdatedTimestamp()), mDuration(aFrameData.mDuration()) { MOZ_ASSERT(aHost); + aHost->DecodedFrameCreated(this); } GMPVideoi420FrameImpl::GMPVideoi420FrameImpl( const GMPVideoi420FrameData& aFrameData, nsTArray&& aArrayBuffer, - GMPVideoHostImpl* aHost, - HostReportPolicy aReportPolicy /*= HostReportPolicy::None*/) - : mReportPolicy(aReportPolicy), - mHost(aHost), + GMPVideoHostImpl* aHost) + : mHost(aHost), mArrayBuffer(std::move(aArrayBuffer)), mYPlane(aFrameData.mYPlane()), mUPlane(aFrameData.mUPlane()), @@ -86,25 +75,24 @@ GMPVideoi420FrameImpl::GMPVideoi420FrameImpl( mUpdatedTimestamp(aFrameData.mUpdatedTimestamp()), mDuration(aFrameData.mDuration()) { MOZ_ASSERT(aHost); + aHost->DecodedFrameCreated(this); } GMPVideoi420FrameImpl::~GMPVideoi420FrameImpl() { - if (mReportPolicy == HostReportPolicy::Destroyed) { - mHost->MgrDecodedFrameDestroyed(this); - } - if (mShmemBuffer.IsWritable()) { - mHost->MgrGiveShmem(GMPSharedMemClass::Decoded, std::move(mShmemBuffer)); - } - // Proxy release to ensure that any synchronous runnables from the plugin can - // first unblock the worker thread. If we destroy the plugin once this - // reference is freed, we won't be blocked trying to join the worker thread. - if (XRE_IsGMPluginProcess()) { - NS_ProxyRelease("GMPVideoi420FrameImpl::~GMPVideoi420FrameImpl", - GetMainThreadSerialEventTarget(), mHost.forget(), - /* aAlwaysProxy */ true); + DestroyBuffer(); + if (mHost) { + mHost->DecodedFrameDestroyed(this); } } +void GMPVideoi420FrameImpl::DoneWithAPI() { + DestroyBuffer(); + + // Do this after destroying the buffer because destruction + // involves deallocation, which requires a host. + mHost = nullptr; +} + void GMPVideoi420FrameImpl::InitFrameData(GMPVideoi420FrameData& aFrameData) { mYPlane.InitPlaneData(aFrameData.mYPlane()); mUPlane.InitPlaneData(aFrameData.mUPlane()); @@ -157,80 +145,31 @@ bool GMPVideoi420FrameImpl::CheckFrameData( // This implies a bug or serious error on the child size. Ignore this frame // if so. Note: Size() greater than expected is also an error, but with no // negative consequences - if (aFrameData.mWidth() <= 0 || aFrameData.mHeight() <= 0) { - return false; - } int32_t half_width = (aFrameData.mWidth() + 1) / 2; - int32_t half_height = (aFrameData.mHeight() + 1) / 2; - - // Check for negative offsets - if ((aFrameData.mYPlane().mOffset() < 0) || - (aFrameData.mUPlane().mOffset() < 0) || - (aFrameData.mVPlane().mOffset() < 0)) { - return false; - } - - // Check for non-positive strides and sizes if ((aFrameData.mYPlane().mStride() <= 0) || (aFrameData.mYPlane().mSize() <= 0) || + (aFrameData.mYPlane().mOffset() < 0) || (aFrameData.mUPlane().mStride() <= 0) || (aFrameData.mUPlane().mSize() <= 0) || + (aFrameData.mUPlane().mOffset() < + aFrameData.mYPlane().mOffset() + aFrameData.mYPlane().mSize()) || (aFrameData.mVPlane().mStride() <= 0) || - (aFrameData.mVPlane().mSize() <= 0)) { - return false; - } - - // Check stride requirements (must be at least as wide as the data) - if ((aFrameData.mYPlane().mStride() < aFrameData.mWidth()) || + (aFrameData.mVPlane().mSize() <= 0) || + (aFrameData.mVPlane().mOffset() < + aFrameData.mUPlane().mOffset() + aFrameData.mUPlane().mSize()) || + (aBufferSize < static_cast(aFrameData.mVPlane().mOffset()) + + static_cast(aFrameData.mVPlane().mSize())) || + (aFrameData.mYPlane().mStride() < aFrameData.mWidth()) || (aFrameData.mUPlane().mStride() < half_width) || - (aFrameData.mVPlane().mStride() < half_width)) { + (aFrameData.mVPlane().mStride() < half_width) || + (aFrameData.mYPlane().mSize() < + aFrameData.mYPlane().mStride() * aFrameData.mHeight()) || + (aFrameData.mUPlane().mSize() < + aFrameData.mUPlane().mStride() * ((aFrameData.mHeight() + 1) / 2)) || + (aFrameData.mVPlane().mSize() < + aFrameData.mVPlane().mStride() * ((aFrameData.mHeight() + 1) / 2))) { return false; } - - // Validate plane end calculations - auto y_plane_end = CheckedInt(aFrameData.mYPlane().mOffset()) + - aFrameData.mYPlane().mSize(); - auto u_plane_end = CheckedInt(aFrameData.mUPlane().mOffset()) + - aFrameData.mUPlane().mSize(); - auto v_plane_end = CheckedInt(aFrameData.mVPlane().mOffset()) + - aFrameData.mVPlane().mSize(); - - if (!y_plane_end.isValid() || !u_plane_end.isValid() || - !v_plane_end.isValid()) { - return false; - } - - // Check that planes don't overlap - if ((aFrameData.mUPlane().mOffset() < y_plane_end.value()) || - (aFrameData.mVPlane().mOffset() < u_plane_end.value())) { - return false; - } - - // Check buffer size - if (aBufferSize < static_cast(v_plane_end.value())) { - return false; - } - - // Validate size calculations - auto y_expected_size = CheckedInt(aFrameData.mYPlane().mStride()) * - aFrameData.mHeight(); - auto u_expected_size = - CheckedInt(aFrameData.mUPlane().mStride()) * half_height; - auto v_expected_size = - CheckedInt(aFrameData.mVPlane().mStride()) * half_height; - - if (!y_expected_size.isValid() || !u_expected_size.isValid() || - !v_expected_size.isValid()) { - return false; - } - - // Check that allocated sizes are sufficient - if ((aFrameData.mYPlane().mSize() < y_expected_size.value()) || - (aFrameData.mUPlane().mSize() < u_expected_size.value()) || - (aFrameData.mVPlane().mSize() < v_expected_size.value())) { - return false; - } - return true; } @@ -313,6 +252,10 @@ GMPErr GMPVideoi420FrameImpl::MaybeResize(int32_t aNewSize) { return GMPNoErr; } + if (!mHost) { + return GMPGenericErr; + } + if (!mArrayBuffer.IsEmpty()) { if (!mArrayBuffer.SetLength(aNewSize, fallible)) { return GMPAllocErr; @@ -321,7 +264,8 @@ GMPErr GMPVideoi420FrameImpl::MaybeResize(int32_t aNewSize) { } ipc::Shmem new_mem; - if (!mHost->MgrTakeShmem(GMPSharedMemClass::Decoded, aNewSize, &new_mem) && + if (!mHost->SharedMemMgr()->MgrTakeShmem(GMPSharedMemClass::Decoded, aNewSize, + &new_mem) && !mArrayBuffer.SetLength(aNewSize, fallible)) { return GMPAllocErr; } @@ -330,7 +274,8 @@ GMPErr GMPVideoi420FrameImpl::MaybeResize(int32_t aNewSize) { if (new_mem.IsWritable()) { memcpy(new_mem.get(), mShmemBuffer.get(), aNewSize); } - mHost->MgrGiveShmem(GMPSharedMemClass::Decoded, std::move(mShmemBuffer)); + mHost->SharedMemMgr()->MgrGiveShmem(GMPSharedMemClass::Decoded, + std::move(mShmemBuffer)); } mShmemBuffer = new_mem; @@ -338,6 +283,15 @@ GMPErr GMPVideoi420FrameImpl::MaybeResize(int32_t aNewSize) { return GMPNoErr; } +void GMPVideoi420FrameImpl::DestroyBuffer() { + if (mHost && mShmemBuffer.IsWritable()) { + mHost->SharedMemMgr()->MgrGiveShmem(GMPSharedMemClass::Decoded, + std::move(mShmemBuffer)); + } + mShmemBuffer = ipc::Shmem(); + mArrayBuffer.Clear(); +} + GMPErr GMPVideoi420FrameImpl::CreateEmptyFrame(int32_t aWidth, int32_t aHeight, int32_t aStride_y, int32_t aStride_u, diff --git a/icecat/dom/media/gmp/GMPVideoi420FrameImpl.h b/icecat/dom/media/gmp/GMPVideoi420FrameImpl.h index 38a0762a64..1490495a90 100644 --- a/icecat/dom/media/gmp/GMPVideoi420FrameImpl.h +++ b/icecat/dom/media/gmp/GMPVideoi420FrameImpl.h @@ -17,26 +17,20 @@ class GMPPlaneData; class GMPVideoi420FrameData; class GMPVideoHostImpl; -enum class HostReportPolicy : uint8_t { - None, - Destroyed, -}; - -class GMPVideoi420FrameImpl : public GMPVideoi420Frame { +class GMPVideoi420FrameImpl final : public GMPVideoi420Frame { public: - explicit GMPVideoi420FrameImpl( - GMPVideoHostImpl* aHost, - HostReportPolicy aReportPolicy = HostReportPolicy::None); - GMPVideoi420FrameImpl( - const GMPVideoi420FrameData& aFrameData, ipc::Shmem&& aShmemBuffer, - GMPVideoHostImpl* aHost, - HostReportPolicy aReportPolicy = HostReportPolicy::None); - GMPVideoi420FrameImpl( - const GMPVideoi420FrameData& aFrameData, nsTArray&& aArrayBuffer, - GMPVideoHostImpl* aHost, - HostReportPolicy aReportPolicy = HostReportPolicy::None); + explicit GMPVideoi420FrameImpl(GMPVideoHostImpl* aHost); + GMPVideoi420FrameImpl(const GMPVideoi420FrameData& aFrameData, + ipc::Shmem&& aShmemBuffer, GMPVideoHostImpl* aHost); + GMPVideoi420FrameImpl(const GMPVideoi420FrameData& aFrameData, + nsTArray&& aArrayBuffer, + GMPVideoHostImpl* aHost); virtual ~GMPVideoi420FrameImpl(); + // This is called during a normal destroy sequence, which is + // when a consumer is finished or during XPCOM shutdown. + void DoneWithAPI(); + static bool CheckFrameData(const GMPVideoi420FrameData& aFrameData, size_t aBufferSize); @@ -81,7 +75,7 @@ class GMPVideoi420FrameImpl : public GMPVideoi420Frame { const uint8_t* Buffer() const; int32_t AllocatedSize() const; - protected: + private: struct GMPFramePlane { explicit GMPFramePlane(const GMPPlaneData& aPlaneData); GMPFramePlane() = default; @@ -102,12 +96,9 @@ class GMPVideoi420FrameImpl : public GMPVideoi420Frame { bool CheckDimensions(int32_t aWidth, int32_t aHeight, int32_t aStride_y, int32_t aStride_u, int32_t aStride_v); GMPErr MaybeResize(int32_t aNewSize); + void DestroyBuffer(); - public: - const HostReportPolicy mReportPolicy; - - protected: - RefPtr mHost; + GMPVideoHostImpl* mHost; nsTArray mArrayBuffer; ipc::Shmem mShmemBuffer; GMPFramePlane mYPlane; diff --git a/icecat/dom/media/gmp/PChromiumCDM.ipdl b/icecat/dom/media/gmp/PChromiumCDM.ipdl index a48564693d..e7aaf3bbab 100644 --- a/icecat/dom/media/gmp/PChromiumCDM.ipdl +++ b/icecat/dom/media/gmp/PChromiumCDM.ipdl @@ -9,11 +9,7 @@ include GMPTypes; include "GMPMessageUtils.h"; include "ChromiumCDMParent.h"; -using cdm::Exception from "GMPSanitizedExports.h"; -using cdm::KeyStatus from "GMPSanitizedExports.h"; using cdm::HdcpVersion from "GMPSanitizedExports.h"; -using cdm::MessageType from "GMPSanitizedExports.h"; -using cdm::Status from "GMPSanitizedExports.h"; namespace mozilla { namespace gmp { @@ -82,19 +78,19 @@ parent: async __delete__(); // cdm::Host_11 - async OnResolvePromiseWithKeyStatus(uint32_t aPromiseId, KeyStatus aKeyStatus); + async OnResolvePromiseWithKeyStatus(uint32_t aPromiseId, uint32_t aKeyStatus); async OnResolveNewSessionPromise(uint32_t aPromiseId, nsCString aSessionId); async OnResolvePromise(uint32_t aPromiseId); async OnRejectPromise(uint32_t aPromiseId, - Exception aException, + uint32_t aException, uint32_t aSystemCode, nsCString aErrorMessage); async OnSessionMessage(nsCString aSessionId, - MessageType aMessageType, + uint32_t aMessageType, uint8_t[] aMessage); async OnSessionKeysChange(nsCString aSessionId, @@ -110,16 +106,16 @@ parent: async ResolveLoadSessionPromise(uint32_t aPromiseId, bool aSuccessful); // Return values of cdm::ContentDecryptionModule_10::Decrypt - async DecryptedShmem(uint32_t aId, Status aStatus, Shmem aData); - async DecryptedData(uint32_t aId, Status aStatus, uint8_t[] aData); - async DecryptFailed(uint32_t aId, Status aStatus); + async DecryptedShmem(uint32_t aId, uint32_t aStatus, Shmem aData); + async DecryptedData(uint32_t aId, uint32_t aStatus, uint8_t[] aData); + async DecryptFailed(uint32_t aId, uint32_t aStatus); - async OnDecoderInitDone(Status aStatus); + async OnDecoderInitDone(uint32_t aStatus); // Return values of cdm::ContentDecryptionModule_10::DecryptAndDecodeFrame async DecodedShmem(CDMVideoFrame aFrame, Shmem aData); async DecodedData(CDMVideoFrame aFrame, uint8_t[] aData); - async DecodeFailed(Status aStatus); + async DecodeFailed(uint32_t aStatus); async ResetVideoDecoderComplete(); diff --git a/icecat/dom/media/gmp/PGMPVideoEncoder.ipdl b/icecat/dom/media/gmp/PGMPVideoEncoder.ipdl index 959600e98b..25b7d2b05b 100644 --- a/icecat/dom/media/gmp/PGMPVideoEncoder.ipdl +++ b/icecat/dom/media/gmp/PGMPVideoEncoder.ipdl @@ -43,7 +43,6 @@ parent: async EncodedData(GMPVideoEncodedFrameData aEncodedFrame, uint8_t[] aEncodedData, uint8_t[] aCodecSpecificInfo); - async DroppedFrame(uint64_t aTimestamp); async Error(GMPErr aErr); async Shutdown(); }; diff --git a/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.cpp b/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.cpp index 3bc4855703..913f6ba288 100644 --- a/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.cpp +++ b/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.cpp @@ -16,27 +16,25 @@ extern const GMPPlatformAPI* sPlatform; namespace mozilla { void WidevineFileIO::Open(const char* aFilename, uint32_t aFilenameLength) { - DestroyRecord(); - mName = std::string(aFilename, aFilename + aFilenameLength); - GMPErr err = sPlatform->createrecord(aFilename, aFilenameLength, &mRecord, + GMPRecord* record = nullptr; + GMPErr err = sPlatform->createrecord(aFilename, aFilenameLength, &record, static_cast(this)); if (GMP_FAILED(err)) { GMP_LOG_DEBUG("WidevineFileIO::Open() '%s' GMPCreateRecord failed", mName.c_str()); - DestroyRecord(); mClient->OnOpenComplete(cdm::FileIOClient::Status::kError); return; } - if (GMP_FAILED(mRecord->Open())) { + if (GMP_FAILED(record->Open())) { GMP_LOG_DEBUG("WidevineFileIO::Open() '%s' record open failed", mName.c_str()); - DestroyRecord(); mClient->OnOpenComplete(cdm::FileIOClient::Status::kError); return; } GMP_LOG_DEBUG("WidevineFileIO::Open() '%s'", mName.c_str()); + mRecord = record; } void WidevineFileIO::Read() { @@ -60,16 +58,12 @@ void WidevineFileIO::Write(const uint8_t* aData, uint32_t aDataSize) { mRecord->Write(aData, aDataSize); } -void WidevineFileIO::DestroyRecord() { +void WidevineFileIO::Close() { + GMP_LOG_DEBUG("WidevineFileIO::Close() '%s'", mName.c_str()); if (mRecord) { mRecord->Close(); mRecord = nullptr; } -} - -void WidevineFileIO::Close() { - GMP_LOG_DEBUG("WidevineFileIO::Close() '%s'", mName.c_str()); - DestroyRecord(); delete this; } diff --git a/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.h b/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.h index 0c2da9f660..8c36f032be 100644 --- a/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.h +++ b/icecat/dom/media/gmp/widevine-adapter/WidevineFileIO.h @@ -13,9 +13,10 @@ namespace mozilla { -class WidevineFileIO final : public cdm::FileIO, public GMPRecordClient { +class WidevineFileIO : public cdm::FileIO, public GMPRecordClient { public: - explicit WidevineFileIO(cdm::FileIOClient* aClient) : mClient(aClient) {} + explicit WidevineFileIO(cdm::FileIOClient* aClient) + : mClient(aClient), mRecord(nullptr) {} // cdm::FileIO void Open(const char* aFilename, uint32_t aFilenameLength) override; @@ -30,10 +31,8 @@ class WidevineFileIO final : public cdm::FileIO, public GMPRecordClient { void WriteComplete(GMPErr aStatus) override; private: - void DestroyRecord(); - cdm::FileIOClient* mClient; - GMPRecord* mRecord = nullptr; + GMPRecord* mRecord; std::string mName; }; diff --git a/icecat/dom/media/gtest/TestCDMStorage.cpp b/icecat/dom/media/gtest/TestCDMStorage.cpp index efc9925889..36f45643ff 100644 --- a/icecat/dom/media/gtest/TestCDMStorage.cpp +++ b/icecat/dom/media/gtest/TestCDMStorage.cpp @@ -1109,8 +1109,7 @@ class CDMStorageTest { SchedulerGroup::Dispatch(task.forget()); } - void SessionMessage(const nsACString& aSessionId, - cdm::MessageType aMessageType, + void SessionMessage(const nsACString& aSessionId, uint32_t aMessageType, const nsTArray& aMessage) { MonitorAutoLock mon(mMonitor); @@ -1163,15 +1162,14 @@ class CDMStorageTest { bool aSuccessful) override {} void ResolvePromiseWithKeyStatus(uint32_t aPromiseId, - cdm::KeyStatus aKeyStatus) override {} + uint32_t aKeyStatus) override {} void ResolvePromise(uint32_t aPromiseId) override {} void RejectPromise(uint32_t aPromiseId, ErrorResult&& aError, const nsCString& aErrorMessage) override {} - void SessionMessage(const nsACString& aSessionId, - cdm::MessageType aMessageType, + void SessionMessage(const nsACString& aSessionId, uint32_t aMessageType, nsTArray&& aMessage) override { mRunner->SessionMessage(aSessionId, aMessageType, std::move(aMessage)); } diff --git a/icecat/dom/media/gtest/TestWebrtcGmpCodec.cpp b/icecat/dom/media/gtest/TestWebrtcGmpCodec.cpp deleted file mode 100644 index 18700b9282..0000000000 --- a/icecat/dom/media/gtest/TestWebrtcGmpCodec.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=2 et sw=2 tw=80: */ -/* 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 "api/video/i420_buffer.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include "libwebrtcglue/WebrtcGmpVideoCodec.h" -#include "media/base/media_constants.h" -#include "mozilla/gtest/WaitFor.h" -#include "nsServiceManagerUtils.h" - -using testing::_; -using testing::AtLeast; -using testing::Eq; -using testing::Ge; -using testing::Gt; -using testing::InSequence; -using testing::Property; -using testing::Test; - -namespace mozilla { - -struct TestWebrtcGmpVideoEncoder : public Test { - nsCOMPtr mGmpThread; - RefPtr mEncoder; - webrtc::VideoCodec mCodecSettings; - webrtc::VideoEncoder::Settings mSettings = { - webrtc::VideoEncoder::Capabilities(/*loss_notification=*/true), - /*number_of_cores=*/1, /*max_payload_size=*/0}; - - void SetUp() override { - mEncoder = MakeRefPtr( - webrtc::SdpVideoFormat(cricket::kH264CodecName), "dummy"); - mCodecSettings.codecType = webrtc::VideoCodecType::kVideoCodecH264; - mCodecSettings.numberOfSimulcastStreams = 1; - mCodecSettings.simulcastStream[0].active = true; - mCodecSettings.simulcastStream[0].numberOfTemporalLayers = 1; - mCodecSettings.width = 640; - mCodecSettings.height = 480; - mCodecSettings.maxFramerate = 60; - mCodecSettings.minBitrate = 50; - mCodecSettings.startBitrate = 200; - mCodecSettings.maxBitrate = 1000; - - nsCOMPtr mps = - do_GetService("@mozilla.org/gecko-media-plugin-service;1"); - ASSERT_TRUE(mps); - mps->GetThread(getter_AddRefs(mGmpThread)); - ASSERT_TRUE(mGmpThread); - } - - void TearDown() override { mEncoder = nullptr; } -}; - -struct MockEncodedImageCallback : public webrtc::EncodedImageCallback { - MOCK_METHOD(Result, OnEncodedImage, - (const webrtc::EncodedImage&, const webrtc::CodecSpecificInfo*), - (override)); - MOCK_METHOD(void, OnDroppedFrame, (DropReason), (override)); -}; - -auto CreateBlackFrame(int width, int height) { - auto buffer = webrtc::I420Buffer::Create(width, height); - webrtc::I420Buffer::SetBlack(buffer.get()); - return buffer; -} - -TEST_F(TestWebrtcGmpVideoEncoder, EmptyLifecycle) {} - -TEST_F(TestWebrtcGmpVideoEncoder, InitEncode) { - mEncoder->InitEncode(&mCodecSettings, mSettings); - WaitFor(*mEncoder->InitPluginEvent()); -} - -TEST_F(TestWebrtcGmpVideoEncoder, Encode) { - using Result = webrtc::EncodedImageCallback::Result; - mEncoder->InitEncode(&mCodecSettings, mSettings); - WaitFor(*mEncoder->InitPluginEvent()); - - MozPromiseHolder doneHolder; - RefPtr donePromise = doneHolder.Ensure(__func__); - MockEncodedImageCallback callback; - constexpr uint32_t rtp_time = 55; - EXPECT_CALL( - callback, - OnEncodedImage( - Property(&webrtc::EncodedImage::RtpTimestamp, Eq(rtp_time)), _)) - .WillOnce([&] { - doneHolder.Resolve(true, "TestWebrtcGmpVideoEncoder::Encode"); - return Result(Result::OK); - }); - mEncoder->RegisterEncodeCompleteCallback(&callback); - std::vector types = { - webrtc::VideoFrameType::kVideoFrameKey}; - EXPECT_EQ( - mEncoder->Encode(webrtc::VideoFrame::Builder() - .set_rtp_timestamp(rtp_time) - .set_video_frame_buffer(CreateBlackFrame( - mCodecSettings.width, mCodecSettings.height)) - .build(), - &types), - WEBRTC_VIDEO_CODEC_OK); - EXPECT_EQ(WaitForResolve(donePromise), true); -} - -TEST_F(TestWebrtcGmpVideoEncoder, BackPressure) { - using Result = webrtc::EncodedImageCallback::Result; - mEncoder->InitEncode(&mCodecSettings, mSettings); - WaitFor(*mEncoder->InitPluginEvent()); - - MozPromiseHolder doneHolder; - RefPtr donePromise = doneHolder.Ensure(__func__); - MockEncodedImageCallback callback; - constexpr uint32_t rtpTime = 55; - constexpr size_t iterations = 1000; - Atomic lastRtpTime{}; - Atomic eventCount{}; - const auto countIteration = [&] { - size_t c = ++eventCount; - EXPECT_LE(c, iterations); - if (c == iterations) { - doneHolder.Resolve(true, "TestWebrtcGmpVideoEncoder::BackPressure"); - } - }; - EXPECT_CALL( - callback, - OnEncodedImage( - Property(&webrtc::EncodedImage::RtpTimestamp, - testing::AllOf(Ge(rtpTime), Gt(lastRtpTime))), - _)) - .Times(AtLeast(1)) - .WillRepeatedly([&](const auto& aImage, const auto*) { - lastRtpTime = aImage.RtpTimestamp(); - countIteration(); - return Result(Result::OK); - }); - EXPECT_CALL( - callback, - OnDroppedFrame(MockEncodedImageCallback::DropReason::kDroppedByEncoder)) - .Times(AtLeast(iterations / 10)) - .WillRepeatedly(countIteration); - mEncoder->RegisterEncodeCompleteCallback(&callback); - std::vector types = { - webrtc::VideoFrameType::kVideoFrameKey}; - EXPECT_EQ( - mEncoder->Encode(webrtc::VideoFrame::Builder() - .set_rtp_timestamp(rtpTime) - .set_video_frame_buffer(CreateBlackFrame( - mCodecSettings.width, mCodecSettings.height)) - .build(), - &types), - WEBRTC_VIDEO_CODEC_OK); - for (size_t i = 1; i < iterations; ++i) { - mEncoder->Encode(webrtc::VideoFrame::Builder() - .set_rtp_timestamp(rtpTime + i) - .set_video_frame_buffer(CreateBlackFrame( - mCodecSettings.width, mCodecSettings.height)) - .build(), - &types); - } - EXPECT_EQ(WaitForResolve(donePromise), true); - EXPECT_EQ(eventCount, iterations); -} - -TEST_F(TestWebrtcGmpVideoEncoder, ReUse) { - using Result = webrtc::EncodedImageCallback::Result; - mEncoder->InitEncode(&mCodecSettings, mSettings); - WaitFor(*mEncoder->InitPluginEvent()); - - MozPromiseHolder doneHolder; - RefPtr donePromise = doneHolder.Ensure(__func__); - MockEncodedImageCallback callback; - constexpr uint32_t rtpTime = 55; - constexpr uint32_t rtpTime2 = rtpTime * 2; - EXPECT_CALL(callback, - OnEncodedImage( - Property(&webrtc::EncodedImage::RtpTimestamp, rtpTime2), _)) - .WillOnce([&] { - doneHolder.Resolve(true, "TestWebrtcGmpVideoEncoder::ReUse"); - return Result(Result::OK); - }); - mEncoder->RegisterEncodeCompleteCallback(&callback); - - // Block the GMP thread until after Shutdown() as to avoid racing between the - // first encoded callback and the Shutdown() call. - Monitor mon(__func__); - bool block = true; - MOZ_ALWAYS_SUCCEEDS( - mGmpThread->Dispatch(NS_NewRunnableFunction(__func__, [&] { - MonitorAutoLock lock(mon); - while (block) { - lock.Wait(); - } - }))); - std::vector types = { - webrtc::VideoFrameType::kVideoFrameKey}; - EXPECT_EQ( - mEncoder->Encode(webrtc::VideoFrame::Builder() - .set_rtp_timestamp(rtpTime) - .set_video_frame_buffer(CreateBlackFrame( - mCodecSettings.width, mCodecSettings.height)) - .build(), - &types), - WEBRTC_VIDEO_CODEC_OK); - - // Shutdown mid-encode, then re-init and encode again. - mEncoder->Shutdown(); - { - MonitorAutoLock lock(mon); - block = false; - lock.Notify(); - } - mEncoder->InitEncode(&mCodecSettings, mSettings); - WaitFor(*mEncoder->InitPluginEvent()); - mEncoder->RegisterEncodeCompleteCallback(&callback); - - EXPECT_EQ( - mEncoder->Encode(webrtc::VideoFrame::Builder() - .set_rtp_timestamp(rtpTime2) - .set_video_frame_buffer(CreateBlackFrame( - mCodecSettings.width, mCodecSettings.height)) - .build(), - &types), - WEBRTC_VIDEO_CODEC_OK); - EXPECT_EQ(WaitForResolve(donePromise), true); -} - -TEST_F(TestWebrtcGmpVideoEncoder, TrackedFrameDrops) { - using Result = webrtc::EncodedImageCallback::Result; - // Tell the fakeopenh264 plugin to drop some allocated input frames without - // telling us. It will drop every fifth input frame. This shall get tracked - // as frame drops. - mCodecSettings.SetFrameDropEnabled(true); - mEncoder->InitEncode(&mCodecSettings, mSettings); - WaitFor(*mEncoder->InitPluginEvent()); - - Monitor m(__func__); - size_t numEvents = 0; - const auto handleEvent = ([&] { - MonitorAutoLock lock(m); - ++numEvents; - lock.Notify(); - }); - MockEncodedImageCallback callback; - { - InSequence s; - EXPECT_CALL(callback, OnEncodedImage(_, _)).Times(4).WillRepeatedly([&] { - handleEvent(); - return Result(Result::OK); - }); - EXPECT_CALL( - callback, - OnDroppedFrame(MockEncodedImageCallback::DropReason::kDroppedByEncoder)) - .WillOnce(handleEvent); - } - mEncoder->RegisterEncodeCompleteCallback(&callback); - - constexpr uint32_t ntpTime = 55; - std::vector types = { - webrtc::VideoFrameType::kVideoFrameKey}; - for (uint8_t i = 0; i < 5; ++i) { - EXPECT_EQ( - mEncoder->Encode(webrtc::VideoFrame::Builder() - .set_ntp_time_ms(ntpTime * (i + 1)) - .set_video_frame_buffer(CreateBlackFrame( - mCodecSettings.width, mCodecSettings.height)) - .build(), - &types), - WEBRTC_VIDEO_CODEC_OK); - MonitorAutoLock lock(m); - while (numEvents <= i) { - lock.Wait(); - } - } -} -} // namespace mozilla diff --git a/icecat/dom/media/gtest/moz.build b/icecat/dom/media/gtest/moz.build index aa8dfd911f..0e4d2fd4ea 100644 --- a/icecat/dom/media/gtest/moz.build +++ b/icecat/dom/media/gtest/moz.build @@ -92,7 +92,6 @@ if CONFIG["MOZ_WEBRTC"] and CONFIG["OS_TARGET"] != "Android": "TestAudioDeviceEnumerator.cpp", "TestPacer.cpp", "TestVideoFrameConverter.cpp", - "TestWebrtcGmpCodec.cpp", ] TEST_HARNESS_FILES.gtest += [ diff --git a/icecat/dom/media/ipc/RDDChild.cpp b/icecat/dom/media/ipc/RDDChild.cpp index e9aedc6647..b6a452bf48 100644 --- a/icecat/dom/media/ipc/RDDChild.cpp +++ b/icecat/dom/media/ipc/RDDChild.cpp @@ -86,27 +86,25 @@ bool RDDChild::SendRequestMemoryReport(const uint32_t& aGeneration, const Maybe& aDMDFile) { mMemoryReportRequest = MakeUnique(aGeneration); - PRDDChild::SendRequestMemoryReport(aGeneration, aAnonymize, - aMinimizeMemoryUsage, aDMDFile) - ->Then( - GetCurrentSerialEventTarget(), __func__, - [](uint32_t aGeneration2) { - if (RDDProcessManager* rddpm = RDDProcessManager::Get()) { - if (RDDChild* child = rddpm->GetRDDChild()) { - if (child->mMemoryReportRequest) { - child->mMemoryReportRequest->Finish(aGeneration2); - child->mMemoryReportRequest = nullptr; - } - } + PRDDChild::SendRequestMemoryReport( + aGeneration, aAnonymize, aMinimizeMemoryUsage, aDMDFile, + [&](const uint32_t& aGeneration2) { + if (RDDProcessManager* rddpm = RDDProcessManager::Get()) { + if (RDDChild* child = rddpm->GetRDDChild()) { + if (child->mMemoryReportRequest) { + child->mMemoryReportRequest->Finish(aGeneration2); + child->mMemoryReportRequest = nullptr; } - }, - [](mozilla::ipc::ResponseRejectReason) { - if (RDDProcessManager* rddpm = RDDProcessManager::Get()) { - if (RDDChild* child = rddpm->GetRDDChild()) { - child->mMemoryReportRequest = nullptr; - } - } - }); + } + } + }, + [&](mozilla::ipc::ResponseRejectReason) { + if (RDDProcessManager* rddpm = RDDProcessManager::Get()) { + if (RDDChild* child = rddpm->GetRDDChild()) { + child->mMemoryReportRequest = nullptr; + } + } + }); return true; } diff --git a/icecat/dom/media/ipc/RemoteAudioDecoder.cpp b/icecat/dom/media/ipc/RemoteAudioDecoder.cpp index 67fc67eaf5..f7974fc167 100644 --- a/icecat/dom/media/ipc/RemoteAudioDecoder.cpp +++ b/icecat/dom/media/ipc/RemoteAudioDecoder.cpp @@ -72,11 +72,6 @@ RemoteAudioDecoderParent::RemoteAudioDecoderParent( IPCResult RemoteAudioDecoderParent::RecvConstruct( ConstructResolver&& aResolver) { - if (mDecoder || mShutdown) { - aResolver(MediaResult(NS_ERROR_ALREADY_INITIALIZED, __func__)); - return IPC_OK(); - } - auto params = CreateDecoderParams{ mAudioInfo, mOptions, CreateDecoderParams::WrapperSet({/* No wrapper */}), mMediaEngineId, mTrackingId}; @@ -91,11 +86,6 @@ IPCResult RemoteAudioDecoderParent::RecvConstruct( return; } MOZ_ASSERT(aValue.ResolveValue()); - if (self->mDecoder || self->mShutdown) { - aValue.ResolveValue()->Shutdown(); - resolver(MediaResult(NS_ERROR_ALREADY_INITIALIZED, __func__)); - return; - } self->mDecoder = new MediaDataDecoderProxy(aValue.ResolveValue().forget(), do_AddRef(self->mDecodeTaskQueue.get())); diff --git a/icecat/dom/media/ipc/RemoteDecoderManagerChild.cpp b/icecat/dom/media/ipc/RemoteDecoderManagerChild.cpp index 585943da23..2ddd82a736 100644 --- a/icecat/dom/media/ipc/RemoteDecoderManagerChild.cpp +++ b/icecat/dom/media/ipc/RemoteDecoderManagerChild.cpp @@ -27,7 +27,6 @@ #include "mozilla/MozPromise.h" #include "mozilla/StaticPrefs_media.h" #include "mozilla/StaticPtr.h" -#include "mozilla/layers/ImageDataSerializer.h" #include "nsContentUtils.h" #include "nsIObserver.h" #include "nsPrintfCString.h" @@ -44,8 +43,6 @@ namespace mozilla { #define LOG(msg, ...) \ MOZ_LOG(gRemoteDecodeLog, LogLevel::Debug, (msg, ##__VA_ARGS__)) -#define LOGE(msg, ...) \ - MOZ_LOG(gRemoteDecodeLog, LogLevel::Error, (msg, ##__VA_ARGS__)) using namespace layers; using namespace gfx; @@ -843,31 +840,6 @@ bool RemoteDecoderManagerChild::DeallocShmem(mozilla::ipc::Shmem& aShmem) { return PRemoteDecoderManagerChild::DeallocShmem(aShmem); } -static already_AddRefed GetSurfaceForDescriptor( - const SurfaceDescriptor& aDescriptor) { - const auto& sdb = aDescriptor.get_SurfaceDescriptorBuffer(); - const auto& shmem = sdb.data().get_Shmem(); - const auto& rgb = sdb.desc().get_RGBDescriptor(); - const uint32_t stride = ImageDataSerializer::GetRGBStride(rgb); - const size_t requiredSize = - ImageDataSerializer::ComputeRGBBufferSize(rgb.size(), rgb.format()); - if (shmem.Size() < requiredSize) { - LOGE("Shmem too small for required buffer size"); - return nullptr; - } - - return gfx::Factory::CreateWrappingDataSourceSurface( - shmem.get(), stride, rgb.size(), rgb.format()); -} - -static void DestroySurfaceDescriptor(ipc::IShmemAllocator* aAllocator, - SurfaceDescriptor* aSurface) { - MOZ_ASSERT(aSurface); - const SurfaceDescriptorBuffer& desc = aSurface->get_SurfaceDescriptorBuffer(); - aAllocator->DeallocShmem(desc.data().get_Shmem()); - *aSurface = SurfaceDescriptor(); -} - struct SurfaceDescriptorUserData { SurfaceDescriptorUserData(RemoteDecoderManagerChild* aAllocator, SurfaceDescriptor& aSD) @@ -903,20 +875,14 @@ already_AddRefed RemoteDecoderManagerChild::Readback( }); SyncRunnable::DispatchToThread(managerThread, task); - if (sd.type() != SurfaceDescriptor::TSurfaceDescriptorBuffer) { - LOGE("Unexpected SurfaceDescriptor type in Readback"); - return nullptr; - } - auto& sdb = sd.get_SurfaceDescriptorBuffer(); - if (sdb.data().type() != MemoryOrShmem::TShmem) { - LOGE("Unexpected SurfaceDescriptorBuffer data type in Readback"); + if (!IsSurfaceDescriptorValid(sd)) { return nullptr; } RefPtr source = GetSurfaceForDescriptor(sd); if (!source) { DestroySurfaceDescriptor(this, &sd); - LOGE("Failed to map SurfaceDescriptor in Readback"); + NS_WARNING("Failed to map SurfaceDescriptor in Readback"); return nullptr; } @@ -966,6 +932,5 @@ void RemoteDecoderManagerChild::SetSupported( } #undef LOG -#undef LOGE } // namespace mozilla diff --git a/icecat/dom/media/ipc/RemoteDecoderParent.cpp b/icecat/dom/media/ipc/RemoteDecoderParent.cpp index e72239e3be..7ba8520540 100644 --- a/icecat/dom/media/ipc/RemoteDecoderParent.cpp +++ b/icecat/dom/media/ipc/RemoteDecoderParent.cpp @@ -43,11 +43,6 @@ void RemoteDecoderParent::Destroy() { mozilla::ipc::IPCResult RemoteDecoderParent::RecvInit( InitResolver&& aResolver) { MOZ_ASSERT(OnManagerThread()); - if (!mDecoder) { - aResolver(MediaResult(NS_ERROR_ABORT, __func__)); - return IPC_OK(); - } - RefPtr self = this; mDecoder->Init()->Then( mManagerThread, __func__, @@ -148,11 +143,6 @@ mozilla::ipc::IPCResult RemoteDecoderParent::RecvDecode( mozilla::ipc::IPCResult RemoteDecoderParent::RecvFlush( FlushResolver&& aResolver) { MOZ_ASSERT(OnManagerThread()); - if (!mDecoder) { - aResolver(MediaResult(NS_ERROR_ABORT, __func__)); - return IPC_OK(); - } - RefPtr self = this; mDecoder->Flush()->Then( mManagerThread, __func__, @@ -172,11 +162,6 @@ mozilla::ipc::IPCResult RemoteDecoderParent::RecvFlush( mozilla::ipc::IPCResult RemoteDecoderParent::RecvDrain( DrainResolver&& aResolver) { MOZ_ASSERT(OnManagerThread()); - if (!mDecoder) { - aResolver(MediaResult(NS_ERROR_ABORT, __func__)); - return IPC_OK(); - } - RefPtr self = this; mDecoder->Drain()->Then( mManagerThread, __func__, @@ -218,16 +203,13 @@ mozilla::ipc::IPCResult RemoteDecoderParent::RecvShutdown( }); } mDecoder = nullptr; - mShutdown = true; return IPC_OK(); } mozilla::ipc::IPCResult RemoteDecoderParent::RecvSetSeekThreshold( const TimeUnit& aTime) { MOZ_ASSERT(OnManagerThread()); - if (mDecoder) { - mDecoder->SetSeekThreshold(aTime); - } + mDecoder->SetSeekThreshold(aTime); return IPC_OK(); } diff --git a/icecat/dom/media/ipc/RemoteDecoderParent.h b/icecat/dom/media/ipc/RemoteDecoderParent.h index 1ab3d15a7a..002a93fa09 100644 --- a/icecat/dom/media/ipc/RemoteDecoderParent.h +++ b/icecat/dom/media/ipc/RemoteDecoderParent.h @@ -61,8 +61,6 @@ class RemoteDecoderParent : public ShmemRecycleAllocator, // Only be used on Windows when the media engine playback is enabled. const Maybe mMediaEngineId; - bool mShutdown = false; - private: void DecodeNextSample(const RefPtr& aData, size_t aIndex, MediaDataDecoder::DecodedData&& aOutput, diff --git a/icecat/dom/media/ipc/RemoteMediaData.cpp b/icecat/dom/media/ipc/RemoteMediaData.cpp index 39f3f0578c..6334a3bd6d 100644 --- a/icecat/dom/media/ipc/RemoteMediaData.cpp +++ b/icecat/dom/media/ipc/RemoteMediaData.cpp @@ -312,14 +312,6 @@ already_AddRefed ArrayOfRemoteAudioData::ElementAt( audioData->mDuration = sample.mBase.duration(); audioData->mOriginalTime = sample.mOriginalTime; audioData->mTrimWindow = sample.mTrimWindow; - CheckedInt requiredLen = - CheckedInt(sample.mDataOffset) + - CheckedInt(sample.mFrames) * CheckedInt(sample.mChannels); - if (!requiredLen.isValid() || - requiredLen.value() > audioData->mAudioData.Length()) { - NS_WARNING("Malformed RemoteAudioData"); - return nullptr; - } audioData->mFrames = sample.mFrames; audioData->mDataOffset = sample.mDataOffset; return audioData.forget(); diff --git a/icecat/dom/media/ipc/RemoteVideoDecoder.cpp b/icecat/dom/media/ipc/RemoteVideoDecoder.cpp index 2a22ec0282..1d2c1513bc 100644 --- a/icecat/dom/media/ipc/RemoteVideoDecoder.cpp +++ b/icecat/dom/media/ipc/RemoteVideoDecoder.cpp @@ -32,18 +32,18 @@ using namespace layers; // for PlanarYCbCrData and BufferRecycleBin using namespace ipc; using namespace gfx; -RefPtr KnowsCompositorVideo::GetTextureForwarder() { - auto vbc = VideoBridgeChild::GetSingleton(); +layers::TextureForwarder* KnowsCompositorVideo::GetTextureForwarder() { + auto* vbc = VideoBridgeChild::GetSingleton(); return (vbc && vbc->CanSend()) ? vbc : nullptr; } layers::LayersIPCActor* KnowsCompositorVideo::GetLayersIPCActor() { - return GetTextureForwarder().get(); + return GetTextureForwarder(); } /* static */ already_AddRefed KnowsCompositorVideo::TryCreateForIdentifier( const layers::TextureFactoryIdentifier& aIdentifier) { - auto child = VideoBridgeChild::GetSingleton(); + VideoBridgeChild* child = VideoBridgeChild::GetSingleton(); if (!child) { return nullptr; } @@ -151,11 +151,6 @@ RemoteVideoDecoderParent::RemoteVideoDecoderParent( IPCResult RemoteVideoDecoderParent::RecvConstruct( ConstructResolver&& aResolver) { - if (mDecoder || mShutdown) { - aResolver(MediaResult(NS_ERROR_ALREADY_INITIALIZED, __func__)); - return IPC_OK(); - } - auto imageContainer = MakeRefPtr( layers::ImageUsageType::RemoteVideoDecoder, layers::ImageContainer::SYNCHRONOUS); @@ -180,11 +175,6 @@ IPCResult RemoteVideoDecoderParent::RecvConstruct( return; } MOZ_ASSERT(aValue.ResolveValue()); - if (self->mDecoder || self->mShutdown) { - aValue.ResolveValue()->Shutdown(); - resolver(MediaResult(NS_ERROR_ALREADY_INITIALIZED, __func__)); - return; - } self->mDecoder = new MediaDataDecoderProxy(aValue.ResolveValue().forget(), do_AddRef(self->mDecodeTaskQueue.get())); diff --git a/icecat/dom/media/ipc/RemoteVideoDecoder.h b/icecat/dom/media/ipc/RemoteVideoDecoder.h index 49ee2018d7..160d5cc4ba 100644 --- a/icecat/dom/media/ipc/RemoteVideoDecoder.h +++ b/icecat/dom/media/ipc/RemoteVideoDecoder.h @@ -19,7 +19,7 @@ class KnowsCompositorVideo : public layers::KnowsCompositor { public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(KnowsCompositorVideo, override) - RefPtr GetTextureForwarder() override; + layers::TextureForwarder* GetTextureForwarder() override; layers::LayersIPCActor* GetLayersIPCActor() override; static already_AddRefed TryCreateForIdentifier( diff --git a/icecat/dom/media/mp3/MP3Demuxer.cpp b/icecat/dom/media/mp3/MP3Demuxer.cpp index ab2fa038c3..428de70c7e 100644 --- a/icecat/dom/media/mp3/MP3Demuxer.cpp +++ b/icecat/dom/media/mp3/MP3Demuxer.cpp @@ -14,7 +14,6 @@ #include "TimeUnits.h" #include "VideoUtils.h" #include "mozilla/Assertions.h" -#include "mozilla/CheckedInt.h" extern mozilla::LazyLogModule gMediaDemuxerLog; #define MP3LOG(msg, ...) \ @@ -767,14 +766,8 @@ int64_t MP3TrackDemuxer::OffsetFromFrameIndex(int64_t aFrameIndex) const { const auto& vbr = mParser.VBRInfo(); if (vbr.IsComplete()) { - CheckedInt product = - CheckedInt(aFrameIndex) * vbr.NumBytes().value(); - if (product.isValid()) { - offset = - mFirstFrameOffset + product.value() / vbr.NumAudioFrames().value(); - } else { - offset = StreamLength(); - } + offset = mFirstFrameOffset + aFrameIndex * vbr.NumBytes().value() / + vbr.NumAudioFrames().value(); } else if (AverageFrameLength() > 0) { offset = mFirstFrameOffset + AssertedCast(static_cast(aFrameIndex) * diff --git a/icecat/dom/media/platforms/MediaCodecsSupport.cpp b/icecat/dom/media/platforms/MediaCodecsSupport.cpp index 49b7629ce1..f19b59b4d3 100644 --- a/icecat/dom/media/platforms/MediaCodecsSupport.cpp +++ b/icecat/dom/media/platforms/MediaCodecsSupport.cpp @@ -22,14 +22,15 @@ using MediaCodecsSupport = mozilla::media::MediaCodecsSupport; namespace mozilla::media { static StaticAutoPtr sInstance; -static StaticMutex sMutex; +static StaticMutex sInitMutex; +static StaticMutex sUpdateMutex; #define CODEC_SUPPORT_LOG(msg, ...) \ MOZ_LOG(sPDMLog, LogLevel::Debug, ("MediaCodecsSupport, " msg, ##__VA_ARGS__)) void MCSInfo::AddSupport(const MediaCodecsSupported& aSupport) { - StaticMutexAutoLock lock(sMutex); - MCSInfo* instance = GetInstance(lock); + StaticMutexAutoLock lock(sUpdateMutex); + MCSInfo* instance = GetInstance(); if (!instance) { CODEC_SUPPORT_LOG("Can't add codec support without a MCSInfo instance!"); return; @@ -38,8 +39,8 @@ void MCSInfo::AddSupport(const MediaCodecsSupported& aSupport) { } MediaCodecsSupported MCSInfo::GetSupport() { - StaticMutexAutoLock lock(sMutex); - MCSInfo* instance = GetInstance(lock); + StaticMutexAutoLock lock(sUpdateMutex); + MCSInfo* instance = GetInstance(); if (!instance) { CODEC_SUPPORT_LOG("Can't get codec support without a MCSInfo instance!"); return MediaCodecsSupported{}; @@ -48,8 +49,8 @@ MediaCodecsSupported MCSInfo::GetSupport() { } void MCSInfo::ResetSupport() { - StaticMutexAutoLock lock(sMutex); - MCSInfo* instance = GetInstance(lock); + StaticMutexAutoLock lock(sUpdateMutex); + MCSInfo* instance = GetInstance(); if (!instance) { CODEC_SUPPORT_LOG("Can't reset codec support without a MCSInfo instance!"); return; @@ -102,8 +103,7 @@ void MCSInfo::GetMediaCodecsSupportedString( nsCString& aSupportString, const MediaCodecsSupported& aSupportedCodecs) { CodecDefinition supportInfo; aSupportString = ""_ns; - StaticMutexAutoLock lock(sMutex); - MCSInfo* instance = GetInstance(lock); + MCSInfo* instance = GetInstance(); if (!instance) { CODEC_SUPPORT_LOG("Can't get codec support string w/o a MCSInfo instance!"); return; @@ -142,7 +142,8 @@ void MCSInfo::GetMediaCodecsSupportedString( } } -MCSInfo* MCSInfo::GetInstance(const StaticMutexAutoLock& /* unused */) { +MCSInfo* MCSInfo::GetInstance() { + StaticMutexAutoLock lock(sInitMutex); if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { CODEC_SUPPORT_LOG("In XPCOM shutdown - not returning MCSInfo instance!"); return nullptr; @@ -167,10 +168,13 @@ MCSInfo::MCSInfo() { } GetMainThreadSerialEventTarget()->Dispatch( - NS_NewRunnableFunction("MCSInfo::MCSInfo", [] { + NS_NewRunnableFunction("MCSInfo::MCSInfo", [&] { + // Ensure hash tables freed on shutdown RunOnShutdown( - [] { - StaticMutexAutoLock lock(sMutex); + [&] { + mHashTableMCS.reset(); + mHashTableString.reset(); + mHashTableCodec.reset(); sInstance = nullptr; }, ShutdownPhase::XPCOMShutdown); @@ -179,8 +183,7 @@ MCSInfo::MCSInfo() { CodecDefinition MCSInfo::GetCodecDefinition(const MediaCodec& aCodec) { CodecDefinition info; - StaticMutexAutoLock lock(sMutex); - MCSInfo* instance = GetInstance(lock); + MCSInfo* instance = GetInstance(); if (!instance) { CODEC_SUPPORT_LOG("Can't get codec definition without a MCSInfo instance!"); } else if (!instance->mHashTableCodec->Get(aCodec, &info)) { diff --git a/icecat/dom/media/platforms/MediaCodecsSupport.h b/icecat/dom/media/platforms/MediaCodecsSupport.h index 75f7228c1e..f5ca01e2bb 100644 --- a/icecat/dom/media/platforms/MediaCodecsSupport.h +++ b/icecat/dom/media/platforms/MediaCodecsSupport.h @@ -196,7 +196,7 @@ class MCSInfo final { private: MCSInfo(); - static MCSInfo* GetInstance(const StaticMutexAutoLock& /* unused */); + static MCSInfo* GetInstance(); // Returns a codec definition by MIME type name ("media/vp9") // or "common" name ("VP9") diff --git a/icecat/dom/media/platforms/agnostic/VPXDecoder.cpp b/icecat/dom/media/platforms/agnostic/VPXDecoder.cpp index c849709299..002d8957ca 100644 --- a/icecat/dom/media/platforms/agnostic/VPXDecoder.cpp +++ b/icecat/dom/media/platforms/agnostic/VPXDecoder.cpp @@ -187,17 +187,13 @@ RefPtr VPXDecoder::ProcessDecode( if (img->fmt == VPX_IMG_FMT_I420) { b.mChromaSubsampling = gfx::ChromaSubsampling::HALF_WIDTH_AND_HEIGHT; - MOZ_ASSERT(img->y_chroma_shift == 1); + b.mPlanes[1].mHeight = (img->d_h + 1) >> img->y_chroma_shift; - MOZ_ASSERT(img->x_chroma_shift == 1); b.mPlanes[1].mWidth = (img->d_w + 1) >> img->x_chroma_shift; b.mPlanes[2].mHeight = (img->d_h + 1) >> img->y_chroma_shift; b.mPlanes[2].mWidth = (img->d_w + 1) >> img->x_chroma_shift; } else if (img->fmt == VPX_IMG_FMT_I444) { - MOZ_ASSERT(b.mChromaSubsampling == gfx::ChromaSubsampling::FULL); - MOZ_ASSERT(img->y_chroma_shift == 0); - MOZ_ASSERT(img->x_chroma_shift == 0); b.mPlanes[1].mHeight = img->d_h; b.mPlanes[1].mWidth = img->d_w; diff --git a/icecat/dom/media/platforms/agnostic/bytestreams/H265.cpp b/icecat/dom/media/platforms/agnostic/bytestreams/H265.cpp index 3972a563bc..78ffe6f9e8 100644 --- a/icecat/dom/media/platforms/agnostic/bytestreams/H265.cpp +++ b/icecat/dom/media/platforms/agnostic/bytestreams/H265.cpp @@ -630,8 +630,6 @@ Result H265::ParseStRefPicSet(BitReader& aReader, if (aStRpsIdx != 0) { inter_ref_pic_set_prediction_flag = aReader.ReadBit(); } - const uint32_t spsMaxDecPicBufferingMinus1 = - aSPS.sps_max_dec_pic_buffering_minus1[aSPS.sps_max_sub_layers_minus1]; if (inter_ref_pic_set_prediction_flag) { int delta_idx_minus1 = 0; if (aStRpsIdx == aSPS.num_short_term_ref_pic_sets) { @@ -709,20 +707,11 @@ Result H265::ParseStRefPicSet(BitReader& aReader, } } curStRefPicSet.num_positive_pics = i; - // 7.4.8 - num_negative_pics shall be in the range of 0 to - // sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1], inclusive. - // num_positive_pics shall be in the range of 0 to - // sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1] - - // num_negative_pics, inclusive. - IN_RANGE_OR_RETURN(curStRefPicSet.num_negative_pics, 0, - spsMaxDecPicBufferingMinus1); - CheckedUint32 maxPositivePics{spsMaxDecPicBufferingMinus1}; - maxPositivePics -= curStRefPicSet.num_negative_pics; - IN_RANGE_OR_RETURN(curStRefPicSet.num_positive_pics, 0, - maxPositivePics.value()); } else { curStRefPicSet.num_negative_pics = aReader.ReadUE(); curStRefPicSet.num_positive_pics = aReader.ReadUE(); + const uint32_t spsMaxDecPicBufferingMinus1 = + aSPS.sps_max_dec_pic_buffering_minus1[aSPS.sps_max_sub_layers_minus1]; IN_RANGE_OR_RETURN(curStRefPicSet.num_negative_pics, 0, spsMaxDecPicBufferingMinus1); CheckedUint32 maxPositivePics{spsMaxDecPicBufferingMinus1}; @@ -759,9 +748,6 @@ Result H265::ParseStRefPicSet(BitReader& aReader, // (7-71) curStRefPicSet.numDeltaPocs = curStRefPicSet.num_negative_pics + curStRefPicSet.num_positive_pics; - // 7.4.8 - NumDeltaPocs = num_negative_pics + num_positive_pics counts DPB - // entries, bounded by sps_max_dec_pic_buffering_minus1. - IN_RANGE_OR_RETURN(curStRefPicSet.numDeltaPocs, 0, spsMaxDecPicBufferingMinus1); return Ok(); } diff --git a/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp b/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp index d16963803c..477fb63d7c 100644 --- a/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp +++ b/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.cpp @@ -427,24 +427,6 @@ void GMPVideoEncoder::Encoded(GMPVideoEncodedFrame* aEncodedFrame, } } -void GMPVideoEncoder::Dropped(uint64_t aTimestamp) { - MOZ_ASSERT(IsOnGMPThread()); - - RefPtr promise; - if (!mPendingEncodes.Remove(aTimestamp, getter_AddRefs(promise))) { - GMP_LOG_WARNING( - "[%p] GMPVideoEncoder::Dropped -- no frame matching timestamp %" PRIu64, - this, aTimestamp); - return; - } - - promise->Resolve(EncodedData(), __func__); - - if (mPendingEncodes.IsEmpty()) { - mDrainPromise.ResolveIfExists(EncodedData(), __func__); - } -} - void GMPVideoEncoder::Teardown(const MediaResult& aResult, StaticString aCallSite) { GMP_LOG_DEBUG("[%p] GMPVideoEncoder::Teardown", this); diff --git a/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h b/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h index d0646a4566..121d41cc59 100644 --- a/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h +++ b/icecat/dom/media/platforms/agnostic/gmp/GMPVideoEncoder.h @@ -38,7 +38,6 @@ class GMPVideoEncoder final : public MediaDataEncoder, void Encoded(GMPVideoEncodedFrame* aEncodedFrame, const nsTArray& aCodecSpecificInfo) override; - void Dropped(uint64_t aTimestamp) override; void Error(GMPErr aError) override; void Terminated() override; diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp b/icecat/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp index 84a7eaf993..18cf8c591f 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp @@ -162,8 +162,7 @@ static AlignedAudioBuffer CopyAndPackAudio(AVFrame* aFrame, } else if (aFrame->format == AV_SAMPLE_FMT_FLTP) { // Planar audio data. Pack it into something we can understand. AudioDataValue* tmp = audio.get(); - AudioDataValue** data = - reinterpret_cast(aFrame->extended_data); + AudioDataValue** data = reinterpret_cast(aFrame->data); for (uint32_t frame = 0; frame < aNumAFrames; frame++) { for (uint32_t channel = 0; channel < aNumChannels; channel++) { *tmp++ = data[channel][frame]; @@ -182,7 +181,7 @@ static AlignedAudioBuffer CopyAndPackAudio(AVFrame* aFrame, // Planar audio data. Convert it from S16 to 32 bits float // and pack it into something we can understand. AudioDataValue* tmp = audio.get(); - int16_t** data = reinterpret_cast(aFrame->extended_data); + int16_t** data = reinterpret_cast(aFrame->data); for (uint32_t frame = 0; frame < aNumAFrames; frame++) { for (uint32_t channel = 0; channel < aNumChannels; channel++) { *tmp++ = ConvertAudioSample(data[channel][frame]); @@ -201,7 +200,7 @@ static AlignedAudioBuffer CopyAndPackAudio(AVFrame* aFrame, // Planar audio data. Convert it from S32 to 32 bits float // and pack it into something we can understand. AudioDataValue* tmp = audio.get(); - int32_t** data = reinterpret_cast(aFrame->extended_data); + int32_t** data = reinterpret_cast(aFrame->data); for (uint32_t frame = 0; frame < aNumAFrames; frame++) { for (uint32_t channel = 0; channel < aNumChannels; channel++) { *tmp++ = ConvertAudioSample(data[channel][frame]); @@ -220,7 +219,7 @@ static AlignedAudioBuffer CopyAndPackAudio(AVFrame* aFrame, // Planar audio data. Convert it from u8 to the expected sample-format // and pack it into something we can understand. AudioDataValue* tmp = audio.get(); - uint8_t** data = reinterpret_cast(aFrame->extended_data); + uint8_t** data = reinterpret_cast(aFrame->data); for (uint32_t frame = 0; frame < aNumAFrames; frame++) { for (uint32_t channel = 0; channel < aNumChannels; channel++) { *tmp++ = ConvertAudioSample(data[channel][frame]); diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp b/icecat/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp index a831c5b8e5..f912620be6 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegAudioEncoder.cpp @@ -300,9 +300,10 @@ FFmpegAudioEncoder::EncodeOnePacket(Span aSamples, aSamples.Length()); } else { MOZ_ASSERT(mCodecContext->sample_fmt == AV_SAMPLE_FMT_FLTP); - DeinterleaveAndConvertBuffer(aSamples.data(), mFrame->nb_samples, - mConfig.mNumberOfChannels, - mFrame->extended_data); + for (uint32_t i = 0; i < mConfig.mNumberOfChannels; i++) { + DeinterleaveAndConvertBuffer(aSamples.data(), mFrame->nb_samples, + mConfig.mNumberOfChannels, mFrame->data); + } } // Now send the AVFrame to ffmpeg for encoding, same code for audio and video. diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegDataEncoder.cpp b/icecat/dom/media/platforms/ffmpeg/FFmpegDataEncoder.cpp index 4dc50f299c..18861a573d 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegDataEncoder.cpp +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegDataEncoder.cpp @@ -286,12 +286,8 @@ void FFmpegDataEncoder::ShutdownInternal() { DestroyFrame(); if (mCodecContext) { -#if LIBAVCODEC_VERSION_MAJOR >= 62 - mLib->avcodec_free_context(&mCodecContext); -#else CloseCodecContext(); mLib->av_freep(&mCodecContext); -#endif mCodecContext = nullptr; } } diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp b/icecat/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp index 8a1f892886..abc6c8ef61 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp @@ -71,7 +71,6 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() { AV_FUNC_59 = 1 << 6, AV_FUNC_60 = 1 << 7, AV_FUNC_61 = 1 << 8, - AV_FUNC_62 = 1 << 9, AV_FUNC_AVUTIL_53 = AV_FUNC_53 | AV_FUNC_AVUTIL_MASK, AV_FUNC_AVUTIL_54 = AV_FUNC_54 | AV_FUNC_AVUTIL_MASK, AV_FUNC_AVUTIL_55 = AV_FUNC_55 | AV_FUNC_AVUTIL_MASK, @@ -81,10 +80,9 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() { AV_FUNC_AVUTIL_59 = AV_FUNC_59 | AV_FUNC_AVUTIL_MASK, AV_FUNC_AVUTIL_60 = AV_FUNC_60 | AV_FUNC_AVUTIL_MASK, AV_FUNC_AVUTIL_61 = AV_FUNC_61 | AV_FUNC_AVUTIL_MASK, - AV_FUNC_AVUTIL_62 = AV_FUNC_62 | AV_FUNC_AVUTIL_MASK, AV_FUNC_AVCODEC_ALL = AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | - AV_FUNC_61 | AV_FUNC_62, + AV_FUNC_61, AV_FUNC_AVUTIL_ALL = AV_FUNC_AVCODEC_ALL | AV_FUNC_AVUTIL_MASK }; @@ -116,9 +114,6 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() { case 61: version = AV_FUNC_61; break; - case 62: - version = AV_FUNC_62; - break; default: FFMPEGV_LOG("Unknown avcodec version: %d", macro); Unlink(); @@ -159,19 +154,17 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() { AV_FUNC(av_lockmgr_register, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58) AV_FUNC(avcodec_alloc_context3, AV_FUNC_AVCODEC_ALL) - AV_FUNC(avcodec_close, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 | - AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | - AV_FUNC_61) + AV_FUNC(avcodec_close, AV_FUNC_AVCODEC_ALL) AV_FUNC(avcodec_decode_audio4, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58) AV_FUNC(avcodec_decode_video2, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58) AV_FUNC(avcodec_find_decoder, AV_FUNC_AVCODEC_ALL) AV_FUNC(avcodec_find_decoder_by_name, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) AV_FUNC(avcodec_find_encoder, AV_FUNC_AVCODEC_ALL) AV_FUNC(avcodec_find_encoder_by_name, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) AV_FUNC(avcodec_flush_buffers, AV_FUNC_AVCODEC_ALL) AV_FUNC(avcodec_open2, AV_FUNC_AVCODEC_ALL) AV_FUNC(avcodec_register_all, AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | @@ -186,22 +179,21 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() { AV_FUNC(avcodec_get_frame_defaults, (AV_FUNC_53 | AV_FUNC_54)) AV_FUNC(avcodec_free_frame, AV_FUNC_54) AV_FUNC(avcodec_send_packet, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) AV_FUNC(avcodec_receive_packet, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) - AV_FUNC(avcodec_send_frame, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC(avcodec_send_frame, AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) AV_FUNC(avcodec_receive_frame, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) AV_FUNC(avcodec_default_get_buffer2, (AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | - AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62)) - AV_FUNC(av_packet_alloc, (AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | - AV_FUNC_61 | AV_FUNC_62)) - AV_FUNC(av_packet_unref, (AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | - AV_FUNC_61 | AV_FUNC_62)) - AV_FUNC(av_packet_free, (AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | - AV_FUNC_61 | AV_FUNC_62)) + AV_FUNC_60 | AV_FUNC_61)) + AV_FUNC(av_packet_alloc, + (AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61)) + AV_FUNC(av_packet_unref, + (AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61)) + AV_FUNC(av_packet_free, + (AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61)) AV_FUNC(avcodec_descriptor_get, AV_FUNC_AVCODEC_ALL) AV_FUNC(av_log_set_level, AV_FUNC_AVUTIL_ALL) AV_FUNC(av_malloc, AV_FUNC_AVUTIL_ALL) @@ -209,39 +201,37 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() { AV_FUNC(av_frame_alloc, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62)) + AV_FUNC_AVUTIL_61)) AV_FUNC(av_frame_free, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62)) + AV_FUNC_AVUTIL_61)) AV_FUNC(av_frame_unref, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62)) + AV_FUNC_AVUTIL_61)) AV_FUNC(av_frame_get_buffer, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62)) + AV_FUNC_AVUTIL_61)) AV_FUNC(av_frame_make_writable, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62)) + AV_FUNC_AVUTIL_61)) AV_FUNC(av_image_check_size, AV_FUNC_AVUTIL_ALL) AV_FUNC(av_image_get_buffer_size, AV_FUNC_AVUTIL_ALL) AV_FUNC_OPTION(av_channel_layout_default, - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) AV_FUNC_OPTION(av_channel_layout_from_mask, - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62) - AV_FUNC_OPTION(av_channel_layout_copy, - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) + AV_FUNC_OPTION(av_channel_layout_copy, AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) AV_FUNC_OPTION(av_buffer_get_opaque, (AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58 | - AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62)) - AV_FUNC(av_buffer_create, - (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | - AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62)) + AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61)) + AV_FUNC( + av_buffer_create, + (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | + AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | AV_FUNC_61)) AV_FUNC_OPTION(av_frame_get_colorspace, AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58) @@ -249,71 +239,56 @@ FFmpegLibWrapper::LinkResult FFmpegLibWrapper::Link() { AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58) AV_FUNC(av_strerror, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) AV_FUNC(av_get_sample_fmt_name, AV_FUNC_AVUTIL_ALL) AV_FUNC(av_dict_set, AV_FUNC_AVUTIL_ALL) AV_FUNC(av_dict_free, AV_FUNC_AVUTIL_ALL) AV_FUNC(av_opt_set, AV_FUNC_AVUTIL_ALL) AV_FUNC(av_opt_set_double, AV_FUNC_AVUTIL_ALL) AV_FUNC(av_opt_set_int, AV_FUNC_AVUTIL_ALL) - AV_FUNC(avcodec_free_context, AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | - AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) - AV_FUNC_OPTION_SILENT(avcodec_get_hw_config, AV_FUNC_58 | AV_FUNC_59 | - AV_FUNC_60 | AV_FUNC_61 | - AV_FUNC_62) - AV_FUNC_OPTION_SILENT(av_codec_is_decoder, AV_FUNC_58 | AV_FUNC_59 | - AV_FUNC_60 | AV_FUNC_61 | - AV_FUNC_62) - AV_FUNC_OPTION_SILENT(av_codec_iterate, AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | - AV_FUNC_61 | AV_FUNC_62) + AV_FUNC(avcodec_free_context, + AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC_OPTION_SILENT(avcodec_get_hw_config, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC_OPTION_SILENT(av_codec_is_decoder, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC_OPTION_SILENT(av_codec_iterate, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_init, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_alloc, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62) - AV_FUNC_OPTION_SILENT( - av_buffer_ref, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) + AV_FUNC_OPTION_SILENT(av_buffer_ref, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | + AV_FUNC_AVUTIL_60 | + AV_FUNC_AVUTIL_61) AV_FUNC_OPTION_SILENT(av_buffer_unref, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | AV_FUNC_AVUTIL_60 | - AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_61) AV_FUNC_OPTION_SILENT(av_hwframe_ctx_alloc, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) AV_FUNC_OPTION_SILENT(av_hwframe_ctx_init, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) #ifdef MOZ_WIDGET_GTK - AV_FUNC_OPTION_SILENT(av_hwdevice_hwconfig_alloc, AV_FUNC_58 | AV_FUNC_59 | - AV_FUNC_60 | - AV_FUNC_61 | AV_FUNC_62) - AV_FUNC_OPTION_SILENT( - av_hwdevice_get_hwframe_constraints, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) - AV_FUNC_OPTION_SILENT( - av_hwframe_constraints_free, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) - AV_FUNC_OPTION_SILENT( - av_hwframe_transfer_get_formats, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) - AV_FUNC_OPTION_SILENT( - av_hwdevice_ctx_create_derived, - AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61 | AV_FUNC_62) + AV_FUNC_OPTION_SILENT(av_hwdevice_hwconfig_alloc, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC_OPTION_SILENT(av_hwdevice_get_hwframe_constraints, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC_OPTION_SILENT(av_hwframe_constraints_free, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC_OPTION_SILENT(av_hwframe_transfer_get_formats, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) + AV_FUNC_OPTION_SILENT(av_hwdevice_ctx_create_derived, + AV_FUNC_58 | AV_FUNC_59 | AV_FUNC_60 | AV_FUNC_61) AV_FUNC_OPTION_SILENT(avcodec_get_name, AV_FUNC_57 | AV_FUNC_58 | AV_FUNC_59 | - AV_FUNC_60 | AV_FUNC_61 | - AV_FUNC_62) + AV_FUNC_60 | AV_FUNC_61) AV_FUNC_OPTION_SILENT(av_get_pix_fmt_string, AV_FUNC_AVUTIL_58 | AV_FUNC_AVUTIL_59 | - AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61 | - AV_FUNC_AVUTIL_62) + AV_FUNC_AVUTIL_60 | AV_FUNC_AVUTIL_61) #endif AV_FUNC_OPTION(av_tx_init, AV_FUNC_AVUTIL_ALL) diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp b/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp index db600a2379..042218af04 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp @@ -12,7 +12,6 @@ namespace mozilla { -StaticMutex FFmpegRuntimeLinker::sMutex; FFmpegRuntimeLinker::LinkStatus FFmpegRuntimeLinker::sLinkStatus = LinkStatus_INIT; const char* FFmpegRuntimeLinker::sLinkStatusLibraryName = ""; @@ -66,7 +65,6 @@ static const char* sLibs[] = { /* static */ bool FFmpegRuntimeLinker::Init() { - StaticMutexAutoLock lock(sMutex); if (sLinkStatus != LinkStatus_INIT) { return sLinkStatus == LinkStatus_SUCCEEDED; } @@ -115,9 +113,6 @@ bool FFmpegRuntimeLinker::Init() { case 61: FFmpegDecoderModule<61>::Init(&sLibAV); break; - case 62: - FFmpegDecoderModule<62>::Init(&sLibAV); - break; } return true; case FFmpegLibWrapper::LinkResult::NoProvidedLib: @@ -208,9 +203,6 @@ already_AddRefed FFmpegRuntimeLinker::CreateDecoder() { case 61: module = FFmpegDecoderModule<61>::Create(&sLibAV); break; - case 62: - module = FFmpegDecoderModule<62>::Create(&sLibAV); - break; default: module = nullptr; } @@ -249,9 +241,6 @@ already_AddRefed FFmpegRuntimeLinker::CreateEncoder() { case 61: module = FFmpegEncoderModule<61>::Create(&sLibAV); break; - case 62: - module = FFmpegEncoderModule<62>::Create(&sLibAV); - break; default: module = nullptr; } @@ -259,7 +248,6 @@ already_AddRefed FFmpegRuntimeLinker::CreateEncoder() { } /* static */ const char* FFmpegRuntimeLinker::LinkStatusString() { - StaticMutexAutoLock lock(sMutex); switch (sLinkStatus) { case LinkStatus_INIT: return "Libavcodec not initialized yet"; diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.h b/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.h index 32dbdeeb1e..0fb5f5a26b 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.h +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.h @@ -9,13 +9,12 @@ #include "PlatformDecoderModule.h" #include "PlatformEncoderModule.h" -#include "mozilla/StaticMutex.h" namespace mozilla { class FFmpegRuntimeLinker { public: - static bool Init() MOZ_EXCLUDES(sMutex); + static bool Init(); static already_AddRefed CreateDecoder(); static already_AddRefed CreateEncoder(); enum LinkStatus { @@ -33,21 +32,14 @@ class FFmpegRuntimeLinker { LinkStatus_INVALID_CANDIDATE, // Found some lib with unexpected contents. LinkStatus_NOT_FOUND, // Haven't found any library with an expected name. }; - static LinkStatus LinkStatusCode() { - StaticMutexAutoLock lock(sMutex); - return sLinkStatus; - } + static LinkStatus LinkStatusCode() { return sLinkStatus; } static const char* LinkStatusString(); // Library name to which the sLinkStatus applies, or "" if not applicable. - static const char* LinkStatusLibraryName() { - StaticMutexAutoLock lock(sMutex); - return sLinkStatusLibraryName; - } + static const char* LinkStatusLibraryName() { return sLinkStatusLibraryName; } private: - static StaticMutex sMutex; - static LinkStatus sLinkStatus MOZ_GUARDED_BY(sMutex); - static const char* sLinkStatusLibraryName MOZ_GUARDED_BY(sMutex); + static LinkStatus sLinkStatus; + static const char* sLinkStatusLibraryName; }; } // namespace mozilla diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/icecat/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp index 2e7d3535ef..46730e8c1a 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp @@ -1077,14 +1077,6 @@ void FFmpegVideoDecoder::DecodeStats::UpdateDecodeTimes( } #endif -static bool IsKeyFrame(const AVFrame* aFrame) { -#if LIBAVCODEC_VERSION_MAJOR > 61 - return !!(aFrame->flags & AV_FRAME_FLAG_KEY); -#else - return !!aFrame->key_frame; -#endif -} - MediaResult FFmpegVideoDecoder::DoDecode( MediaRawData* aSample, uint8_t* aData, int aSize, bool* aGotFrame, MediaDataDecoder::DecodedData& aResults) { @@ -1199,12 +1191,6 @@ MediaResult FFmpegVideoDecoder::DoDecode( mDecodeStats.UpdateDecodeTimes(mFrame); - int64_t fpos = -# if LIBAVCODEC_VERSION_MAJOR > 61 - packet->pos; -# else - mFrame->pkt_pos; -# endif MediaResult rv; # ifdef MOZ_USE_HWDECODE if (IsHardwareAccelerated()) { @@ -1219,11 +1205,11 @@ MediaResult FFmpegVideoDecoder::DoDecode( RESULT_DETAIL("HW decoding is slow, switching back to SW decode")); } if (mUsingV4L2) { - rv = CreateImageV4L2(fpos, GetFramePts(mFrame), Duration(mFrame), - aResults); + rv = CreateImageV4L2(mFrame->pkt_pos, GetFramePts(mFrame), + Duration(mFrame), aResults); } else { - rv = CreateImageVAAPI(fpos, GetFramePts(mFrame), Duration(mFrame), - aResults); + rv = CreateImageVAAPI(mFrame->pkt_pos, GetFramePts(mFrame), + Duration(mFrame), aResults); } // If VA-API/V4L2 playback failed, just quit. Decoder is going to be @@ -1235,8 +1221,8 @@ MediaResult FFmpegVideoDecoder::DoDecode( return rv; } # elif defined(MOZ_ENABLE_D3D11VA) - rv = CreateImageD3D11(fpos, GetFramePts(mFrame), Duration(mFrame), - aResults); + rv = CreateImageD3D11(mFrame->pkt_pos, GetFramePts(mFrame), + Duration(mFrame), aResults); # else return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR, RESULT_DETAIL("No HW decoding implementation!")); @@ -1244,7 +1230,8 @@ MediaResult FFmpegVideoDecoder::DoDecode( } else # endif { - rv = CreateImage(fpos, GetFramePts(mFrame), Duration(mFrame), aResults); + rv = CreateImage(mFrame->pkt_pos, GetFramePts(mFrame), Duration(mFrame), + aResults); } if (NS_FAILED(rv)) { return rv; @@ -1588,7 +1575,7 @@ MediaResult FFmpegVideoDecoder::CreateImage( v = VideoData::CreateFromImage( mInfo.mDisplay, aOffset, TimeUnit::FromMicroseconds(aPts), TimeUnit::FromMicroseconds(aDuration), wrapper->AsImage(), - IsKeyFrame(mFrame), TimeUnit::FromMicroseconds(-1)); + !!mFrame->key_frame, TimeUnit::FromMicroseconds(-1)); } #endif #if defined(MOZ_WIDGET_GTK) && defined(MOZ_USE_HWDECODE) @@ -1615,7 +1602,7 @@ MediaResult FFmpegVideoDecoder::CreateImage( v = VideoData::CreateFromImage( mInfo.mDisplay, aOffset, TimeUnit::FromMicroseconds(aPts), TimeUnit::FromMicroseconds(aDuration), surface->GetAsImage(), - IsKeyFrame(mFrame), TimeUnit::FromMicroseconds(-1)); + !!mFrame->key_frame, TimeUnit::FromMicroseconds(-1)); } else { FFMPEG_LOG("Failed to uploaded video data to DMABuf"); } @@ -1628,7 +1615,7 @@ MediaResult FFmpegVideoDecoder::CreateImage( Result, MediaResult> r = VideoData::CreateAndCopyData( mInfo, mImageContainer, aOffset, TimeUnit::FromMicroseconds(aPts), - TimeUnit::FromMicroseconds(aDuration), b, IsKeyFrame(mFrame), + TimeUnit::FromMicroseconds(aDuration), b, !!mFrame->key_frame, TimeUnit::FromMicroseconds(-1), mInfo.ScaledImageRect(mFrame->width, mFrame->height), mImageAllocator); @@ -1701,7 +1688,7 @@ MediaResult FFmpegVideoDecoder::CreateImageVAAPI( RefPtr vp = VideoData::CreateFromImage( mInfo.mDisplay, aOffset, TimeUnit::FromMicroseconds(aPts), TimeUnit::FromMicroseconds(aDuration), surface->GetAsImage(), - IsKeyFrame(mFrame), TimeUnit::FromMicroseconds(-1)); + !!mFrame->key_frame, TimeUnit::FromMicroseconds(-1)); if (!vp) { return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR, @@ -1750,7 +1737,7 @@ MediaResult FFmpegVideoDecoder::CreateImageV4L2( RefPtr vp = VideoData::CreateFromImage( mInfo.mDisplay, aOffset, TimeUnit::FromMicroseconds(aPts), TimeUnit::FromMicroseconds(aDuration), surface->GetAsImage(), - IsKeyFrame(mFrame), TimeUnit::FromMicroseconds(-1)); + !!mFrame->key_frame, TimeUnit::FromMicroseconds(-1)); if (!vp) { return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR, @@ -2188,7 +2175,7 @@ MediaResult FFmpegVideoDecoder::CreateImageD3D11( RefPtr v = VideoData::CreateFromImage( mInfo.mDisplay, aOffset, TimeUnit::FromMicroseconds(aPts), - TimeUnit::FromMicroseconds(aDuration), image, IsKeyFrame(mFrame), + TimeUnit::FromMicroseconds(aDuration), image, !!mFrame->key_frame, TimeUnit::FromMicroseconds(-1)); if (!v) { nsPrintfCString msg("D3D image allocation error"); diff --git a/icecat/dom/media/platforms/ffmpeg/FFmpegVideoEncoder.cpp b/icecat/dom/media/platforms/ffmpeg/FFmpegVideoEncoder.cpp index da663d9550..2120d09f89 100644 --- a/icecat/dom/media/platforms/ffmpeg/FFmpegVideoEncoder.cpp +++ b/icecat/dom/media/platforms/ffmpeg/FFmpegVideoEncoder.cpp @@ -118,19 +118,11 @@ struct H264LiteralSetting { H264Setting get() const { return {mValue, mString.AsString()}; } }; -#if LIBAVCODEC_VERSION_MAJOR < 62 static constexpr H264LiteralSetting H264Profiles[]{ {FF_PROFILE_H264_BASELINE, "baseline"_ns}, {FF_PROFILE_H264_MAIN, "main"_ns}, {FF_PROFILE_H264_EXTENDED, ""_ns}, {FF_PROFILE_H264_HIGH, "high"_ns}}; -#else -static constexpr H264LiteralSetting H264Profiles[]{ - {AV_PROFILE_H264_BASELINE, "baseline"_ns}, - {AV_PROFILE_H264_MAIN, "main"_ns}, - {AV_PROFILE_H264_EXTENDED, ""_ns}, - {AV_PROFILE_H264_HIGH, "high"_ns}}; -#endif static Maybe GetH264Profile(const H264_PROFILE& aProfile) { switch (aProfile) { diff --git a/icecat/dom/media/platforms/ffmpeg/VALibWrapper.cpp b/icecat/dom/media/platforms/ffmpeg/VALibWrapper.cpp index 468ce038a4..05e3f2f4c4 100644 --- a/icecat/dom/media/platforms/ffmpeg/VALibWrapper.cpp +++ b/icecat/dom/media/platforms/ffmpeg/VALibWrapper.cpp @@ -7,7 +7,6 @@ #include "FFmpegLog.h" #include "PlatformDecoderModule.h" #include "prlink.h" -#include "mozilla/DataMutex.h" #include "mozilla/gfx/gfxVars.h" #include "mozilla/widget/DMABufDevice.h" @@ -18,8 +17,8 @@ static int (*vaInitialize)(void* dpy, int* major_version, int* minor_version); static int (*vaTerminate)(void* dpy); static void* (*vaGetDisplayDRM)(int fd); -MOZ_RUNINIT static StaticDataMutex> - sDisplayHolder("VADisplayHolder::sDisplayHolder"); +static VADisplayHolder* sDisplayHolder; +static StaticMutex sDisplayHolderMutex; void VALibWrapper::Link() { #define VA_FUNC_OPTION_SILENT(func) \ @@ -103,11 +102,10 @@ VADisplayHolder::~VADisplayHolder() = default; /* static */ RefPtr VADisplayHolder::GetSingleton() { - auto weakInstance = sDisplayHolder.Lock(); + StaticMutexAutoLock lock(sDisplayHolderMutex); - RefPtr instance(*weakInstance); - if (instance) { - return instance; + if (sDisplayHolder) { + return RefPtr{sDisplayHolder}; } UniqueFileHandle drmFd{widget::GetDMABufDevice()->OpenDRMFd()}; @@ -127,9 +125,21 @@ RefPtr VADisplayHolder::GetSingleton() { return nullptr; } - instance = new VADisplayHolder(std::move(display), std::move(drmFd)); - *weakInstance = instance; - return instance; + RefPtr displayHolder = + new VADisplayHolder(std::move(display), std::move(drmFd)); + sDisplayHolder = displayHolder; + + return displayHolder; +} + +void VADisplayHolder::MaybeDestroy() { + StaticMutexAutoLock lock(sDisplayHolderMutex); + MOZ_ASSERT(int32_t(mRefCnt) >= 0, "dup release"); + if (mRefCnt == 0) { + // No new reference added before the lock was taken. + sDisplayHolder = nullptr; + delete this; + } } void VADisplayHolder::VADisplayDeleter::operator()(VADisplay aDisplay) { diff --git a/icecat/dom/media/platforms/ffmpeg/VALibWrapper.h b/icecat/dom/media/platforms/ffmpeg/VALibWrapper.h index 06350e0968..719dc2221d 100644 --- a/icecat/dom/media/platforms/ffmpeg/VALibWrapper.h +++ b/icecat/dom/media/platforms/ffmpeg/VALibWrapper.h @@ -6,7 +6,6 @@ #define DOM_MEDIA_PLATFORMS_FFMPEG_VALIBWRAPPER_H_ #include "mozilla/Attributes.h" -#include "mozilla/ThreadSafeWeakPtr.h" #include "mozilla/Types.h" #include "mozilla/UniquePtrExtensions.h" #include "nsISupportsImpl.h" @@ -56,15 +55,14 @@ class MOZ_ONLY_USED_TO_AVOID_STATIC_CONSTRUCTORS VALibWrapper { PRLibrary* mVALibDrm; }; -class VADisplayHolder final - : public SupportsThreadSafeWeakPtr { +class VADisplayHolder { public: - MOZ_DECLARE_REFCOUNTED_TYPENAME(VADisplayHolder) + NS_INLINE_DECL_THREADSAFE_REFCOUNTING_WITH_DESTROY(VADisplayHolder, + MaybeDestroy()) static RefPtr GetSingleton(); VADisplay Display() const { return mDisplay.get(); } - ~VADisplayHolder(); private: struct VADisplayDeleter { @@ -74,6 +72,9 @@ class VADisplayHolder final using UniqueVADisplay = std::unique_ptr; VADisplayHolder(UniqueVADisplay aDisplay, UniqueFileHandle aDRMFd); + ~VADisplayHolder(); + + void MaybeDestroy(); // mDRMFd is declared before mDisplay, so that mDRMFd is closed after // mDisplay is terminated. diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/COPYING.LGPLv2.1 b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/COPYING.LGPLv2.1 deleted file mode 100644 index 00b4fedfe7..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/COPYING.LGPLv2.1 +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/avcodec.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/avcodec.h deleted file mode 100644 index 6824bfc9a6..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/avcodec.h +++ /dev/null @@ -1,2995 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVCODEC_H -#define AVCODEC_AVCODEC_H - -/** - * @file - * @ingroup libavc - * Libavcodec external API header - */ - -#include "libavutil/samplefmt.h" -#include "libavutil/attributes.h" -#include "libavutil/avutil.h" -#include "libavutil/buffer.h" -#include "libavutil/channel_layout.h" -#include "libavutil/dict.h" -#include "libavutil/frame.h" -#include "libavutil/log.h" -#include "libavutil/pixfmt.h" -#include "libavutil/rational.h" - -#include "codec.h" -#include "codec_id.h" -#include "defs.h" -#include "packet.h" -#include "version_major.h" -#ifndef HAVE_AV_CONFIG_H -/* When included as part of the ffmpeg build, only include the major version - * to avoid unnecessary rebuilds. When included externally, keep including - * the full version information. */ -#include "version.h" - -#include "codec_desc.h" -#include "codec_par.h" -#endif - -struct AVCodecParameters; - -/** - * @defgroup libavc libavcodec - * Encoding/Decoding Library - * - * @{ - * - * @defgroup lavc_decoding Decoding - * @{ - * @} - * - * @defgroup lavc_encoding Encoding - * @{ - * @} - * - * @defgroup lavc_codec Codecs - * @{ - * @defgroup lavc_codec_native Native Codecs - * @{ - * @} - * @defgroup lavc_codec_wrappers External library wrappers - * @{ - * @} - * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge - * @{ - * @} - * @} - * @defgroup lavc_internal Internal - * @{ - * @} - * @} - */ - -/** - * @ingroup libavc - * @defgroup lavc_encdec send/receive encoding and decoding API overview - * @{ - * - * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/ - * avcodec_receive_packet() functions provide an encode/decode API, which - * decouples input and output. - * - * The API is very similar for encoding/decoding and audio/video, and works as - * follows: - * - Set up and open the AVCodecContext as usual. - * - Send valid input: - * - For decoding, call avcodec_send_packet() to give the decoder raw - * compressed data in an AVPacket. - * - For encoding, call avcodec_send_frame() to give the encoder an AVFrame - * containing uncompressed audio or video. - * - * In both cases, it is recommended that AVPackets and AVFrames are - * refcounted, or libavcodec might have to copy the input data. (libavformat - * always returns refcounted AVPackets, and av_frame_get_buffer() allocates - * refcounted AVFrames.) - * - Receive output in a loop. Periodically call one of the avcodec_receive_*() - * functions and process their output: - * - For decoding, call avcodec_receive_frame(). On success, it will return - * an AVFrame containing uncompressed audio or video data. - * - For encoding, call avcodec_receive_packet(). On success, it will return - * an AVPacket with a compressed frame. - * - * Repeat this call until it returns AVERROR(EAGAIN) or an error. The - * AVERROR(EAGAIN) return value means that new input data is required to - * return new output. In this case, continue with sending input. For each - * input frame/packet, the codec will typically return 1 output frame/packet, - * but it can also be 0 or more than 1. - * - * At the beginning of decoding or encoding, the codec might accept multiple - * input frames/packets without returning a frame, until its internal buffers - * are filled. This situation is handled transparently if you follow the steps - * outlined above. - * - * In theory, sending input can result in EAGAIN - this should happen only if - * not all output was received. You can use this to structure alternative decode - * or encode loops other than the one suggested above. For example, you could - * try sending new input on each iteration, and try to receive output if that - * returns EAGAIN. - * - * End of stream situations. These require "flushing" (aka draining) the codec, - * as the codec might buffer multiple frames or packets internally for - * performance or out of necessity (consider B-frames). - * This is handled as follows: - * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding) - * or avcodec_send_frame() (encoding) functions. This will enter draining - * mode. - * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet() - * (encoding) in a loop until AVERROR_EOF is returned. The functions will - * not return AVERROR(EAGAIN), unless you forgot to enter draining mode. - * - Before decoding can be resumed again, the codec has to be reset with - * avcodec_flush_buffers(). - * - * Using the API as outlined above is highly recommended. But it is also - * possible to call functions outside of this rigid schema. For example, you can - * call avcodec_send_packet() repeatedly without calling - * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed - * until the codec's internal buffer has been filled up (which is typically of - * size 1 per output frame, after initial input), and then reject input with - * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to - * read at least some output. - * - * Not all codecs will follow a rigid and predictable dataflow; the only - * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on - * one end implies that a receive/send call on the other end will succeed, or - * at least will not fail with AVERROR(EAGAIN). In general, no codec will - * permit unlimited buffering of input or output. - * - * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This - * would be an invalid state, which could put the codec user into an endless - * loop. The API has no concept of time either: it cannot happen that trying to - * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second - * later accepts the packet (with no other receive/flush API calls involved). - * The API is a strict state machine, and the passage of time is not supposed - * to influence it. Some timing-dependent behavior might still be deemed - * acceptable in certain cases. But it must never result in both send/receive - * returning EAGAIN at the same time at any point. It must also absolutely be - * avoided that the current state is "unstable" and can "flip-flop" between - * the send/receive APIs allowing progress. For example, it's not allowed that - * the codec randomly decides that it actually wants to consume a packet now - * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an - * avcodec_send_packet() call. - * @} - */ - -/** - * @defgroup lavc_core Core functions/structures. - * @ingroup libavc - * - * Basic definitions, functions for querying libavcodec capabilities, - * allocating core structures, etc. - * @{ - */ - -/** - * @ingroup lavc_encoding - */ -typedef struct RcOverride{ - int start_frame; - int end_frame; - int qscale; // If this is 0 then quality_factor will be used instead. - float quality_factor; -} RcOverride; - -/* encoding support - These flags can be passed in AVCodecContext.flags before initialization. - Note: Not everything is supported yet. -*/ - -/** - * Allow decoders to produce frames with data planes that are not aligned - * to CPU requirements (e.g. due to cropping). - */ -#define AV_CODEC_FLAG_UNALIGNED (1 << 0) -/** - * Use fixed qscale. - */ -#define AV_CODEC_FLAG_QSCALE (1 << 1) -/** - * 4 MV per MB allowed / advanced prediction for H.263. - */ -#define AV_CODEC_FLAG_4MV (1 << 2) -/** - * Output even those frames that might be corrupted. - */ -#define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3) -/** - * Use qpel MC. - */ -#define AV_CODEC_FLAG_QPEL (1 << 4) -/** - * Request the encoder to output reconstructed frames, i.e.\ frames that would - * be produced by decoding the encoded bitstream. These frames may be retrieved - * by calling avcodec_receive_frame() immediately after a successful call to - * avcodec_receive_packet(). - * - * Should only be used with encoders flagged with the - * @ref AV_CODEC_CAP_ENCODER_RECON_FRAME capability. - * - * @note - * Each reconstructed frame returned by the encoder corresponds to the last - * encoded packet, i.e. the frames are returned in coded order rather than - * presentation order. - * - * @note - * Frame parameters (like pixel format or dimensions) do not have to match the - * AVCodecContext values. Make sure to use the values from the returned frame. - */ -#define AV_CODEC_FLAG_RECON_FRAME (1 << 6) -/** - * @par decoding - * Request the decoder to propagate each packet's AVPacket.opaque and - * AVPacket.opaque_ref to its corresponding output AVFrame. - * - * @par encoding: - * Request the encoder to propagate each frame's AVFrame.opaque and - * AVFrame.opaque_ref values to its corresponding output AVPacket. - * - * @par - * May only be set on encoders that have the - * @ref AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability flag. - * - * @note - * While in typical cases one input frame produces exactly one output packet - * (perhaps after a delay), in general the mapping of frames to packets is - * M-to-N, so - * - Any number of input frames may be associated with any given output packet. - * This includes zero - e.g. some encoders may output packets that carry only - * metadata about the whole stream. - * - A given input frame may be associated with any number of output packets. - * Again this includes zero - e.g. some encoders may drop frames under certain - * conditions. - * . - * This implies that when using this flag, the caller must NOT assume that - * - a given input frame's opaques will necessarily appear on some output packet; - * - every output packet will have some non-NULL opaque value. - * . - * When an output packet contains multiple frames, the opaque values will be - * taken from the first of those. - * - * @note - * The converse holds for decoders, with frames and packets switched. - */ -#define AV_CODEC_FLAG_COPY_OPAQUE (1 << 7) -/** - * Signal to the encoder that the values of AVFrame.duration are valid and - * should be used (typically for transferring them to output packets). - * - * If this flag is not set, frame durations are ignored. - */ -#define AV_CODEC_FLAG_FRAME_DURATION (1 << 8) -/** - * Use internal 2pass ratecontrol in first pass mode. - */ -#define AV_CODEC_FLAG_PASS1 (1 << 9) -/** - * Use internal 2pass ratecontrol in second pass mode. - */ -#define AV_CODEC_FLAG_PASS2 (1 << 10) -/** - * loop filter. - */ -#define AV_CODEC_FLAG_LOOP_FILTER (1 << 11) -/** - * Only decode/encode grayscale. - */ -#define AV_CODEC_FLAG_GRAY (1 << 13) -/** - * error[?] variables will be set during encoding. - */ -#define AV_CODEC_FLAG_PSNR (1 << 15) -/** - * Use interlaced DCT. - */ -#define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18) -/** - * Force low delay. - */ -#define AV_CODEC_FLAG_LOW_DELAY (1 << 19) -/** - * Place global headers in extradata instead of every keyframe. - */ -#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) -/** - * Use only bitexact stuff (except (I)DCT). - */ -#define AV_CODEC_FLAG_BITEXACT (1 << 23) -/* Fx : Flag for H.263+ extra options */ -/** - * H.263 advanced intra coding / MPEG-4 AC prediction - */ -#define AV_CODEC_FLAG_AC_PRED (1 << 24) -/** - * interlaced motion estimation - */ -#define AV_CODEC_FLAG_INTERLACED_ME (1 << 29) -#define AV_CODEC_FLAG_CLOSED_GOP (1U << 31) - -/** - * Allow non spec compliant speedup tricks. - */ -#define AV_CODEC_FLAG2_FAST (1 << 0) -/** - * Skip bitstream encoding. - */ -#define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2) -/** - * Place global headers at every keyframe instead of in extradata. - */ -#define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3) - -/** - * Input bitstream might be truncated at a packet boundaries - * instead of only at frame boundaries. - */ -#define AV_CODEC_FLAG2_CHUNKS (1 << 15) -/** - * Discard cropping information from SPS. - */ -#define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16) - -/** - * Show all frames before the first keyframe - */ -#define AV_CODEC_FLAG2_SHOW_ALL (1 << 22) -/** - * Export motion vectors through frame side data - */ -#define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28) -/** - * Do not skip samples and export skip information as frame side data - */ -#define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29) -/** - * Do not reset ASS ReadOrder field on flush (subtitles decoding) - */ -#define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30) -/** - * Generate/parse ICC profiles on encode/decode, as appropriate for the type of - * file. No effect on codecs which cannot contain embedded ICC profiles, or - * when compiled without support for lcms2. - */ -#define AV_CODEC_FLAG2_ICC_PROFILES (1U << 31) - -/* Exported side data. - These flags can be passed in AVCodecContext.export_side_data before initialization. -*/ -/** - * Export motion vectors through frame side data - */ -#define AV_CODEC_EXPORT_DATA_MVS (1 << 0) -/** - * Export encoder Producer Reference Time through packet side data - */ -#define AV_CODEC_EXPORT_DATA_PRFT (1 << 1) -/** - * Decoding only. - * Export the AVVideoEncParams structure through frame side data. - */ -#define AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS (1 << 2) -/** - * Decoding only. - * Do not apply film grain, export it instead. - */ -#define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3) - -/** - * Decoding only. - * Do not apply picture enhancement layers, export them instead. - */ -#define AV_CODEC_EXPORT_DATA_ENHANCEMENTS (1 << 4) - -/** - * The decoder will keep a reference to the frame and may reuse it later. - */ -#define AV_GET_BUFFER_FLAG_REF (1 << 0) - -/** - * The encoder will keep a reference to the packet and may reuse it later. - */ -#define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0) - -/** - * The decoder will bypass frame threading and return the next frame as soon as - * possible. Note that this may deliver frames earlier than the advertised - * `AVCodecContext.delay`. No effect when frame threading is disabled, or on - * encoding. - */ -#define AV_CODEC_RECEIVE_FRAME_FLAG_SYNCHRONOUS (1 << 0) - -/** - * main external API structure. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user - * applications. - * The name string for AVOptions options matches the associated command line - * parameter name and can be found in libavcodec/options_table.h - * The AVOption/command line parameter names differ in some cases from the C - * structure field names for historic reasons or brevity. - * sizeof(AVCodecContext) must not be used outside libav*. - */ -typedef struct AVCodecContext { - /** - * information on struct for av_log - * - set by avcodec_alloc_context3 - */ - const AVClass *av_class; - int log_level_offset; - - enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ - const struct AVCodec *codec; - enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ - - /** - * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). - * This is used to work around some encoder bugs. - * A demuxer should set this to what is stored in the field used to identify the codec. - * If there are multiple such fields in a container then the demuxer should choose the one - * which maximizes the information about the used codec. - * If the codec tag field in a container is larger than 32 bits then the demuxer should - * remap the longer ID to 32 bits with a table or other structure. Alternatively a new - * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated - * first. - * - encoding: Set by user, if not then the default based on codec_id will be used. - * - decoding: Set by user, will be converted to uppercase by libavcodec during init. - */ - unsigned int codec_tag; - - void *priv_data; - - /** - * Private context used for internal data. - * - * Unlike priv_data, this is not codec-specific. It is used in general - * libavcodec functions. - */ - struct AVCodecInternal *internal; - - /** - * Private data of the user, can be used to carry app specific stuff. - * - encoding: Set by user. - * - decoding: Set by user. - */ - void *opaque; - - /** - * the average bitrate - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: Set by user, may be overwritten by libavcodec - * if this info is available in the stream - */ - int64_t bit_rate; - - /** - * AV_CODEC_FLAG_*. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags; - - /** - * AV_CODEC_FLAG2_* - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags2; - - /** - * Out-of-band global headers that may be used by some codecs. - * - * - decoding: Should be set by the caller when available (typically from a - * demuxer) before opening the decoder; some decoders require this to be - * set and will fail to initialize otherwise. - * - * The array must be allocated with the av_malloc() family of functions; - * allocated size must be at least AV_INPUT_BUFFER_PADDING_SIZE bytes - * larger than extradata_size. - * - * - encoding: May be set by the encoder in avcodec_open2() (possibly - * depending on whether the AV_CODEC_FLAG_GLOBAL_HEADER flag is set). - * - * After being set, the array is owned by the codec and freed in - * avcodec_free_context(). - */ - uint8_t *extradata; - int extradata_size; - - /** - * This is the fundamental unit of time (in seconds) in terms - * of which frame timestamps are represented. For fixed-fps content, - * timebase should be 1/framerate and timestamp increments should be - * identically 1. - * This often, but not always is the inverse of the frame rate or field rate - * for video. 1/time_base is not the average frame rate if the frame rate is not - * constant. - * - * Like containers, elementary streams also can store timestamps, 1/time_base - * is the unit in which these timestamps are specified. - * As example of such codec time base see ISO/IEC 14496-2:2001(E) - * vop_time_increment_resolution and fixed_vop_rate - * (fixed_vop_rate == 0 implies that it is different from the framerate) - * - * - encoding: MUST be set by user. - * - decoding: unused. - */ - AVRational time_base; - - /** - * Timebase in which pkt_dts/pts and AVPacket.dts/pts are expressed. - * - encoding: unused. - * - decoding: set by user. - */ - AVRational pkt_timebase; - - /** - * - decoding: For codecs that store a framerate value in the compressed - * bitstream, the decoder may export it here. { 0, 1} when - * unknown. - * - encoding: May be used to signal the framerate of CFR content to an - * encoder. - */ - AVRational framerate; - - /** - * Codec delay. - * - * Encoding: Number of frames delay there will be from the encoder input to - * the decoder output. (we assume the decoder matches the spec) - * Decoding: Number of frames delay in addition to what a standard decoder - * as specified in the spec would produce. - * - * Video: - * Number of frames the decoded output will be delayed relative to the - * encoded input. - * - * Audio: - * For encoding, this field is unused (see initial_padding). - * - * For decoding, this is the number of samples the decoder needs to - * output before the decoder's output is valid. When seeking, you should - * start decoding this many samples prior to your desired seek point. - * - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int delay; - - - /* video only */ - /** - * picture width / height. - * - * @note Those fields may not match the values of the last - * AVFrame output by avcodec_receive_frame() due frame - * reordering. - * - * - encoding: MUST be set by user. - * - decoding: May be set by the user before opening the decoder if known e.g. - * from the container. Some decoders will require the dimensions - * to be set by the caller. During decoding, the decoder may - * overwrite those values as required while parsing the data. - */ - int width, height; - - /** - * Bitstream width / height, may be different from width/height e.g. when - * the decoded frame is cropped before being output or lowres is enabled. - * - * @note Those field may not match the value of the last - * AVFrame output by avcodec_receive_frame() due frame - * reordering. - * - * - encoding: unused - * - decoding: May be set by the user before opening the decoder if known - * e.g. from the container. During decoding, the decoder may - * overwrite those values as required while parsing the data. - */ - int coded_width, coded_height; - - /** - * sample aspect ratio (0 if unknown) - * That is the width of a pixel divided by the height of the pixel. - * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVRational sample_aspect_ratio; - - /** - * Pixel format, see AV_PIX_FMT_xxx. - * May be set by the demuxer if known from headers. - * May be overridden by the decoder if it knows better. - * - * @note This field may not match the value of the last - * AVFrame output by avcodec_receive_frame() due frame - * reordering. - * - * - encoding: Set by user. - * - decoding: Set by user if known, overridden by libavcodec while - * parsing the data. - */ - enum AVPixelFormat pix_fmt; - - /** - * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx. - * - encoding: unused. - * - decoding: Set by libavcodec before calling get_format() - */ - enum AVPixelFormat sw_pix_fmt; - - /** - * Chromaticity coordinates of the source primaries. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorPrimaries color_primaries; - - /** - * Color Transfer Characteristic. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorTransferCharacteristic color_trc; - - /** - * YUV colorspace type. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorSpace colorspace; - - /** - * MPEG vs JPEG YUV range. - * - encoding: Set by user to override the default output color range value, - * If not specified, libavcodec sets the color range depending on the - * output format. - * - decoding: Set by libavcodec, can be set by the user to propagate the - * color range to components reading from the decoder context. - */ - enum AVColorRange color_range; - - /** - * This defines the location of chroma samples. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVChromaLocation chroma_sample_location; - - /** Field order - * - encoding: set by libavcodec - * - decoding: Set by user. - */ - enum AVFieldOrder field_order; - - /** - * number of reference frames - * - encoding: Set by user. - * - decoding: Set by lavc. - */ - int refs; - - /** - * Size of the frame reordering buffer in the decoder. - * For MPEG-2 it is 1 IPB or 0 low delay IP. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int has_b_frames; - - /** - * slice flags - * - encoding: unused - * - decoding: Set by user. - */ - int slice_flags; -#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display -#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics) -#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) - - /** - * If non NULL, 'draw_horiz_band' is called by the libavcodec - * decoder to draw a horizontal band. It improves cache usage. Not - * all codecs can do that. You must check the codec capabilities - * beforehand. - * When multithreading is used, it may be called from multiple threads - * at the same time; threads might draw different parts of the same AVFrame, - * or multiple AVFrames, and there is no guarantee that slices will be drawn - * in order. - * The function is also used by hardware acceleration APIs. - * It is called at least once during frame decoding to pass - * the data needed for hardware render. - * In that mode instead of pixel data, AVFrame points to - * a structure specific to the acceleration API. The application - * reads the structure and can change some fields to indicate progress - * or mark state. - * - encoding: unused - * - decoding: Set by user. - * @param height the height of the slice - * @param y the y position of the slice - * @param type 1->top field, 2->bottom field, 3->frame - * @param offset offset into the AVFrame.data from which the slice should be read - */ - void (*draw_horiz_band)(struct AVCodecContext *s, - const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], - int y, int type, int height); - - /** - * Callback to negotiate the pixel format. Decoding only, may be set by the - * caller before avcodec_open2(). - * - * Called by some decoders to select the pixel format that will be used for - * the output frames. This is mainly used to set up hardware acceleration, - * then the provided format list contains the corresponding hwaccel pixel - * formats alongside the "software" one. The software pixel format may also - * be retrieved from \ref sw_pix_fmt. - * - * This callback will be called when the coded frame properties (such as - * resolution, pixel format, etc.) change and more than one output format is - * supported for those new properties. If a hardware pixel format is chosen - * and initialization for it fails, the callback may be called again - * immediately. - * - * This callback may be called from different threads if the decoder is - * multi-threaded, but not from more than one thread simultaneously. - * - * @param fmt list of formats which may be used in the current - * configuration, terminated by AV_PIX_FMT_NONE. - * @warning Behavior is undefined if the callback returns a value other - * than one of the formats in fmt or AV_PIX_FMT_NONE. - * @return the chosen format or AV_PIX_FMT_NONE - */ - enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - - /** - * maximum number of B-frames between non-B-frames - * Note: The output will be delayed by max_b_frames+1 relative to the input. - * - encoding: Set by user. - * - decoding: unused - */ - int max_b_frames; - - /** - * qscale factor between IP and B-frames - * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_factor; - - /** - * qscale offset between IP and B-frames - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_offset; - - /** - * qscale factor between P- and I-frames - * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_factor; - - /** - * qscale offset between P and I-frames - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_offset; - - /** - * luminance masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float lumi_masking; - - /** - * temporary complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float temporal_cplx_masking; - - /** - * spatial complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float spatial_cplx_masking; - - /** - * p block masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float p_masking; - - /** - * darkness masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float dark_masking; - - /** - * noise vs. sse weight for the nsse comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int nsse_weight; - - /** - * motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_cmp; - /** - * subpixel motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_sub_cmp; - /** - * macroblock comparison function (not supported yet) - * - encoding: Set by user. - * - decoding: unused - */ - int mb_cmp; - /** - * interlaced DCT comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int ildct_cmp; -#define FF_CMP_SAD 0 -#define FF_CMP_SSE 1 -#define FF_CMP_SATD 2 -#define FF_CMP_DCT 3 -#define FF_CMP_PSNR 4 -#define FF_CMP_BIT 5 -#define FF_CMP_RD 6 -#define FF_CMP_ZERO 7 -#define FF_CMP_VSAD 8 -#define FF_CMP_VSSE 9 -#define FF_CMP_NSSE 10 -#define FF_CMP_W53 11 -#define FF_CMP_W97 12 -#define FF_CMP_DCTMAX 13 -#define FF_CMP_DCT264 14 -#define FF_CMP_MEDIAN_SAD 15 -#define FF_CMP_CHROMA 256 - - /** - * ME diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int dia_size; - - /** - * amount of previous MV predictors (2a+1 x 2a+1 square) - * - encoding: Set by user. - * - decoding: unused - */ - int last_predictor_count; - - /** - * motion estimation prepass comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_pre_cmp; - - /** - * ME prepass diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int pre_dia_size; - - /** - * subpel ME quality - * - encoding: Set by user. - * - decoding: unused - */ - int me_subpel_quality; - - /** - * maximum motion estimation search range in subpel units - * If 0 then no limit. - * - * - encoding: Set by user. - * - decoding: unused - */ - int me_range; - - /** - * macroblock decision mode - * - encoding: Set by user. - * - decoding: unused - */ - int mb_decision; -#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp -#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits -#define FF_MB_DECISION_RD 2 ///< rate distortion - - /** - * custom intra quantization matrix - * Must be allocated with the av_malloc() family of functions, and will be freed in - * avcodec_free_context(). - * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL. - * - decoding: Set/allocated/freed by libavcodec. - */ - uint16_t *intra_matrix; - - /** - * custom inter quantization matrix - * Must be allocated with the av_malloc() family of functions, and will be freed in - * avcodec_free_context(). - * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL. - * - decoding: Set/allocated/freed by libavcodec. - */ - uint16_t *inter_matrix; - - /** - * custom intra quantization matrix - * - encoding: Set by user, can be NULL. - * - decoding: unused. - */ - uint16_t *chroma_intra_matrix; - -#if FF_API_INTRA_DC_PRECISION - /** - * precision of the intra DC coefficient - 8 - * - encoding: Set by user. - * - decoding: Set by libavcodec - * @deprecated Use the MPEG-2 encoder's private option "intra_dc_precision" instead. - */ - attribute_deprecated - int intra_dc_precision; -#endif - - /** - * minimum MB Lagrange multiplier - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmin; - - /** - * maximum MB Lagrange multiplier - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmax; - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int bidir_refine; - - /** - * minimum GOP size - * - encoding: Set by user. - * - decoding: unused - */ - int keyint_min; - - /** - * the number of pictures in a group of pictures, or 0 for intra_only - * - encoding: Set by user. - * - decoding: unused - */ - int gop_size; - - /** - * Note: Value depends upon the compare function used for fullpel ME. - * - encoding: Set by user. - * - decoding: unused - */ - int mv0_threshold; - - /** - * Number of slices. - * Indicates number of picture subdivisions. Used for parallelized - * decoding. - * - encoding: Set by user - * - decoding: unused - */ - int slices; - - /* audio only */ - int sample_rate; ///< samples per second - - /** - * audio sample format - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVSampleFormat sample_fmt; ///< sample format - - /** - * Audio channel layout. - * - encoding: must be set by the caller, to one of AVCodec.ch_layouts. - * - decoding: may be set by the caller if known e.g. from the container. - * The decoder can then override during decoding as needed. - */ - AVChannelLayout ch_layout; - - /* The following data should not be initialized. */ - /** - * Number of samples per channel in an audio frame. - * - * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame - * except the last must contain exactly frame_size samples per channel. - * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the - * frame size is not restricted. - * - decoding: may be set by some decoders to indicate constant frame size - */ - int frame_size; - - /** - * number of bytes per packet if constant and known or 0 - * Used by some WAV based audio codecs. - */ - int block_align; - - /** - * Audio cutoff bandwidth (0 means "automatic") - * - encoding: Set by user. - * - decoding: unused - */ - int cutoff; - - /** - * Type of service that the audio stream conveys. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVAudioServiceType audio_service_type; - - /** - * desired sample format - * - encoding: Not used. - * - decoding: Set by user. - * Decoder will decode to this format if it can. - */ - enum AVSampleFormat request_sample_fmt; - - /** - * Audio only. The number of "priming" samples (padding) inserted by the - * encoder at the beginning of the audio. I.e. this number of leading - * decoded samples must be discarded by the caller to get the original audio - * without leading padding. - * - * - decoding: unused - * - encoding: Set by libavcodec. The timestamps on the output packets are - * adjusted by the encoder so that they always refer to the - * first sample of the data actually contained in the packet, - * including any added padding. E.g. if the timebase is - * 1/samplerate and the timestamp of the first input sample is - * 0, the timestamp of the first output packet will be - * -initial_padding. - */ - int initial_padding; - - /** - * Audio only. The amount of padding (in samples) appended by the encoder to - * the end of the audio. I.e. this number of decoded samples must be - * discarded by the caller from the end of the stream to get the original - * audio without any trailing padding. - * - * - decoding: unused - * - encoding: unused - */ - int trailing_padding; - - /** - * Number of samples to skip after a discontinuity - * - decoding: unused - * - encoding: set by libavcodec - */ - int seek_preroll; - - /** - * This callback is called at the beginning of each frame to get data - * buffer(s) for it. There may be one contiguous buffer for all the data or - * there may be a buffer per each data plane or anything in between. What - * this means is, you may set however many entries in buf[] you feel necessary. - * Each buffer must be reference-counted using the AVBuffer API (see description - * of buf[] below). - * - * The following fields will be set in the frame before this callback is - * called: - * - format - * - width, height (video only) - * - sample_rate, channel_layout, nb_samples (audio only) - * Their values may differ from the corresponding values in - * AVCodecContext. This callback must use the frame values, not the codec - * context values, to calculate the required buffer size. - * - * This callback must fill the following fields in the frame: - * - data[] - * - linesize[] - * - extended_data: - * * if the data is planar audio with more than 8 channels, then this - * callback must allocate and fill extended_data to contain all pointers - * to all data planes. data[] must hold as many pointers as it can. - * extended_data must be allocated with av_malloc() and will be freed in - * av_frame_unref(). - * * otherwise extended_data must point to data - * - buf[] must contain one or more pointers to AVBufferRef structures. Each of - * the frame's data and extended_data pointers must be contained in these. That - * is, one AVBufferRef for each allocated chunk of memory, not necessarily one - * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(), - * and av_buffer_ref(). - * - extended_buf and nb_extended_buf must be allocated with av_malloc() by - * this callback and filled with the extra buffers if there are more - * buffers than buf[] can hold. extended_buf will be freed in - * av_frame_unref(). - * Decoders will generally initialize the whole buffer before it is output - * but it can in rare error conditions happen that uninitialized data is passed - * through. \important The buffers returned by get_buffer* should thus not contain sensitive - * data. - * - * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call - * avcodec_default_get_buffer2() instead of providing buffers allocated by - * some other means. - * - * Each data plane must be aligned to the maximum required by the target - * CPU. - * - * @see avcodec_default_get_buffer2() - * - * Video: - * - * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused - * (read and/or written to if it is writable) later by libavcodec. - * - * avcodec_align_dimensions2() should be used to find the required width and - * height, as they normally need to be rounded up to the next multiple of 16. - * - * Some decoders do not support linesizes changing between frames. - * - * If frame multithreading is used, this callback may be called from a - * different thread, but not from more than one at once. Does not need to be - * reentrant. - * - * @see avcodec_align_dimensions2() - * - * Audio: - * - * Decoders request a buffer of a particular size by setting - * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may, - * however, utilize only part of the buffer by setting AVFrame.nb_samples - * to a smaller value in the output frame. - * - * As a convenience, av_samples_get_buffer_size() and - * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2() - * functions to find the required data size and to fill data pointers and - * linesize. In AVFrame.linesize, only linesize[0] may be set for audio - * since all planes must be the same size. - * - * @see av_samples_get_buffer_size(), av_samples_fill_arrays() - * - * - encoding: unused - * - decoding: Set by libavcodec, user can override. - */ - int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags); - - /* - encoding parameters */ - /** - * number of bits the bitstream is allowed to diverge from the reference. - * the reference can be CBR (for CBR pass1) or VBR (for pass2) - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: unused - */ - int bit_rate_tolerance; - - /** - * Global quality for codecs which cannot change it per frame. - * This should be proportional to MPEG-1/2/4 qscale. - * - encoding: Set by user. - * - decoding: unused - */ - int global_quality; - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int compression_level; -#define FF_COMPRESSION_DEFAULT -1 - - float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) - float qblur; ///< amount of qscale smoothing over time (0.0-1.0) - - /** - * minimum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmin; - - /** - * maximum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmax; - - /** - * maximum quantizer difference between frames - * - encoding: Set by user. - * - decoding: unused - */ - int max_qdiff; - - /** - * decoder bitstream buffer size - * - encoding: Set by user. - * - decoding: May be set by libavcodec. - */ - int rc_buffer_size; - - /** - * ratecontrol override, see RcOverride - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - int rc_override_count; - RcOverride *rc_override; - - /** - * maximum bitrate - * - encoding: Set by user. - * - decoding: Set by user, may be overwritten by libavcodec. - */ - int64_t rc_max_rate; - - /** - * minimum bitrate - * - encoding: Set by user. - * - decoding: unused - */ - int64_t rc_min_rate; - - /** - * Ratecontrol attempt to use, at maximum, of what can be used without an underflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_max_available_vbv_use; - - /** - * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_min_vbv_overflow_use; - - /** - * Number of bits which should be loaded into the rc buffer before decoding starts. - * - encoding: Set by user. - * - decoding: unused - */ - int rc_initial_buffer_occupancy; - - /** - * trellis RD quantization - * - encoding: Set by user. - * - decoding: unused - */ - int trellis; - - /** - * pass1 encoding statistics output buffer - * - encoding: Set by libavcodec. - * - decoding: unused - */ - char *stats_out; - - /** - * pass2 encoding statistics input buffer - * Concatenated stuff from stats_out of pass1 should be placed here. - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - char *stats_in; - - /** - * Work around bugs in encoders which sometimes cannot be detected automatically. - * - encoding: Set by user - * - decoding: Set by user - */ - int workaround_bugs; -#define FF_BUG_AUTODETECT 1 ///< autodetection -#define FF_BUG_XVID_ILACE 4 -#define FF_BUG_UMP4 8 -#define FF_BUG_NO_PADDING 16 -#define FF_BUG_AMV 32 -#define FF_BUG_QPEL_CHROMA 64 -#define FF_BUG_STD_QPEL 128 -#define FF_BUG_QPEL_CHROMA2 256 -#define FF_BUG_DIRECT_BLOCKSIZE 512 -#define FF_BUG_EDGE 1024 -#define FF_BUG_HPEL_CHROMA 2048 -#define FF_BUG_DC_CLIP 4096 -#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. -#define FF_BUG_TRUNCATED 16384 -#define FF_BUG_IEDGE 32768 - - /** - * strictly follow the standard (MPEG-4, ...). - * - encoding: Set by user. - * - decoding: Set by user. - * Setting this to STRICT or higher means the encoder and decoder will - * generally do stupid things, whereas setting it to unofficial or lower - * will mean the encoder might produce output that is not supported by all - * spec-compliant decoders. Decoders don't differentiate between normal, - * unofficial and experimental (that is, they always try to decode things - * when they can) unless they are explicitly asked to behave stupidly - * (=strictly conform to the specs) - * This may only be set to one of the FF_COMPLIANCE_* values in defs.h. - */ - int strict_std_compliance; - - /** - * error concealment flags - * - encoding: unused - * - decoding: Set by user. - */ - int error_concealment; -#define FF_EC_GUESS_MVS 1 -#define FF_EC_DEBLOCK 2 -#define FF_EC_FAVOR_INTER 256 - - /** - * debug - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug; -#define FF_DEBUG_PICT_INFO 1 -#define FF_DEBUG_RC 2 -#define FF_DEBUG_BITSTREAM 4 -#define FF_DEBUG_MB_TYPE 8 -#define FF_DEBUG_QP 16 -#define FF_DEBUG_DCT_COEFF 0x00000040 -#define FF_DEBUG_SKIP 0x00000080 -#define FF_DEBUG_STARTCODE 0x00000100 -#define FF_DEBUG_ER 0x00000400 -#define FF_DEBUG_MMCO 0x00000800 -#define FF_DEBUG_BUGS 0x00001000 -#define FF_DEBUG_BUFFERS 0x00008000 -#define FF_DEBUG_THREADS 0x00010000 -#define FF_DEBUG_GREEN_MD 0x00800000 -#define FF_DEBUG_NOMC 0x01000000 - - /** - * Error recognition; may misdetect some more or less valid parts as errors. - * This is a bitfield of the AV_EF_* values defined in defs.h. - * - * - encoding: Set by user. - * - decoding: Set by user. - */ - int err_recognition; - - /** - * Hardware accelerator in use - * - encoding: unused. - * - decoding: Set by libavcodec - */ - const struct AVHWAccel *hwaccel; - - /** - * Legacy hardware accelerator context. - * - * For some hardware acceleration methods, the caller may use this field to - * signal hwaccel-specific data to the codec. The struct pointed to by this - * pointer is hwaccel-dependent and defined in the respective header. Please - * refer to the FFmpeg HW accelerator documentation to know how to fill - * this. - * - * In most cases this field is optional - the necessary information may also - * be provided to libavcodec through @ref hw_frames_ctx or @ref - * hw_device_ctx (see avcodec_get_hw_config()). However, in some cases it - * may be the only method of signalling some (optional) information. - * - * The struct and its contents are owned by the caller. - * - * - encoding: May be set by the caller before avcodec_open2(). Must remain - * valid until avcodec_free_context(). - * - decoding: May be set by the caller in the get_format() callback. - * Must remain valid until the next get_format() call, - * or avcodec_free_context() (whichever comes first). - */ - void *hwaccel_context; - - /** - * A reference to the AVHWFramesContext describing the input (for encoding) - * or output (decoding) frames. The reference is set by the caller and - * afterwards owned (and freed) by libavcodec - it should never be read by - * the caller after being set. - * - * - decoding: This field should be set by the caller from the get_format() - * callback. The previous reference (if any) will always be - * unreffed by libavcodec before the get_format() call. - * - * If the default get_buffer2() is used with a hwaccel pixel - * format, then this AVHWFramesContext will be used for - * allocating the frame buffers. - * - * - encoding: For hardware encoders configured to use a hwaccel pixel - * format, this field should be set by the caller to a reference - * to the AVHWFramesContext describing input frames. - * AVHWFramesContext.format must be equal to - * AVCodecContext.pix_fmt. - * - * This field should be set before avcodec_open2() is called. - */ - AVBufferRef *hw_frames_ctx; - - /** - * A reference to the AVHWDeviceContext describing the device which will - * be used by a hardware encoder/decoder. The reference is set by the - * caller and afterwards owned (and freed) by libavcodec. - * - * This should be used if either the codec device does not require - * hardware frames or any that are used are to be allocated internally by - * libavcodec. If the user wishes to supply any of the frames used as - * encoder input or decoder output then hw_frames_ctx should be used - * instead. When hw_frames_ctx is set in get_format() for a decoder, this - * field will be ignored while decoding the associated stream segment, but - * may again be used on a following one after another get_format() call. - * - * For both encoders and decoders this field should be set before - * avcodec_open2() is called and must not be written to thereafter. - * - * Note that some decoders may require this field to be set initially in - * order to support hw_frames_ctx at all - in that case, all frames - * contexts used must be created on the same device. - */ - AVBufferRef *hw_device_ctx; - - /** - * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated - * decoding (if active). - * - encoding: unused - * - decoding: Set by user (either before avcodec_open2(), or in the - * AVCodecContext.get_format callback) - */ - int hwaccel_flags; - - /** - * Video decoding only. Sets the number of extra hardware frames which - * the decoder will allocate for use by the caller. This must be set - * before avcodec_open2() is called. - * - * Some hardware decoders require all frames that they will use for - * output to be defined in advance before decoding starts. For such - * decoders, the hardware frame pool must therefore be of a fixed size. - * The extra frames set here are on top of any number that the decoder - * needs internally in order to operate normally (for example, frames - * used as reference pictures). - */ - int extra_hw_frames; - - /** - * error - * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR. - * - decoding: unused - */ - uint64_t error[AV_NUM_DATA_POINTERS]; - - /** - * DCT algorithm, see FF_DCT_* below - * - encoding: Set by user. - * - decoding: unused - */ - int dct_algo; -#define FF_DCT_AUTO 0 -#define FF_DCT_FASTINT 1 -#define FF_DCT_INT 2 -#define FF_DCT_MMX 3 -#define FF_DCT_ALTIVEC 5 -#define FF_DCT_FAAN 6 -#define FF_DCT_NEON 7 - - /** - * IDCT algorithm, see FF_IDCT_* below. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int idct_algo; -#define FF_IDCT_AUTO 0 -#define FF_IDCT_INT 1 -#define FF_IDCT_SIMPLE 2 -#define FF_IDCT_SIMPLEMMX 3 -#define FF_IDCT_ARM 7 -#define FF_IDCT_ALTIVEC 8 -#define FF_IDCT_SIMPLEARM 10 -#define FF_IDCT_XVID 14 -#define FF_IDCT_SIMPLEARMV5TE 16 -#define FF_IDCT_SIMPLEARMV6 17 -#define FF_IDCT_FAAN 20 -#define FF_IDCT_SIMPLENEON 22 -#define FF_IDCT_SIMPLEAUTO 128 - - /** - * bits per sample/pixel from the demuxer (needed for huffyuv). - * - encoding: Set by libavcodec. - * - decoding: Set by user. - */ - int bits_per_coded_sample; - - /** - * Bits per sample/pixel of internal libavcodec pixel/sample format. - * - encoding: set by user. - * - decoding: set by libavcodec. - */ - int bits_per_raw_sample; - - /** - * thread count - * is used to decide how many independent tasks should be passed to execute() - * - encoding: Set by user. - * - decoding: Set by user. - */ - int thread_count; - - /** - * Which multithreading methods to use. - * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, - * so clients which cannot provide future frames should not use it. - * - * - encoding: Set by user, otherwise the default is used. - * - decoding: Set by user, otherwise the default is used. - */ - int thread_type; -#define FF_THREAD_FRAME 1 ///< Decode more than one frame at once -#define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once - - /** - * Which multithreading methods are in use by the codec. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int active_thread_type; - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * @param count the number of things to execute - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * @param c context passed also to func - * @param count the number of things to execute - * @param arg2 argument passed unchanged to func - * @param ret return values of executed functions, must have space for "count" values. May be NULL. - * @param func function that will be called count times, with jobnr from 0 to count-1. - * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no - * two instances of func executing at the same time will have the same threadnr. - * @return always 0 currently, but code should handle a future improvement where when any call to func - * returns < 0 no further calls to func may be done and < 0 is returned. - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); - - /** - * profile - * - encoding: Set by user. - * - decoding: Set by libavcodec. - * See the AV_PROFILE_* defines in defs.h. - */ - int profile; - - /** - * Encoding level descriptor. - * - encoding: Set by user, corresponds to a specific level defined by the - * codec, usually corresponding to the profile level, if not specified it - * is set to AV_LEVEL_UNKNOWN. - * - decoding: Set by libavcodec. - * See AV_LEVEL_* in defs.h. - */ - int level; - -#if FF_API_CODEC_PROPS - /** - * Properties of the stream that gets decoded - * - encoding: unused - * - decoding: set by libavcodec - */ - attribute_deprecated - unsigned properties; -#define FF_CODEC_PROPERTY_LOSSLESS 0x00000001 -#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002 -#define FF_CODEC_PROPERTY_FILM_GRAIN 0x00000004 -#endif - - /** - * Skip loop filtering for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_loop_filter; - - /** - * Skip IDCT/dequantization for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_idct; - - /** - * Skip decoding for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_frame; - - /** - * Skip processing alpha if supported by codec. - * Note that if the format uses pre-multiplied alpha (common with VP6, - * and recommended due to better video quality/compression) - * the image will look as if alpha-blended onto a black background. - * However for formats that do not use pre-multiplied alpha - * there might be serious artefacts (though e.g. libswscale currently - * assumes pre-multiplied alpha anyway). - * - * - decoding: set by user - * - encoding: unused - */ - int skip_alpha; - - /** - * Number of macroblock rows at the top which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_top; - - /** - * Number of macroblock rows at the bottom which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_bottom; - - /** - * low resolution decoding, 1-> 1/2 size, 2->1/4 size - * - encoding: unused - * - decoding: Set by user. - */ - int lowres; - - /** - * AVCodecDescriptor - * - encoding: unused. - * - decoding: set by libavcodec. - */ - const struct AVCodecDescriptor *codec_descriptor; - - /** - * Character encoding of the input subtitles file. - * - decoding: set by user - * - encoding: unused - */ - char *sub_charenc; - - /** - * Subtitles character encoding mode. Formats or codecs might be adjusting - * this setting (if they are doing the conversion themselves for instance). - * - decoding: set by libavcodec - * - encoding: unused - */ - int sub_charenc_mode; -#define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance) -#define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself -#define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv -#define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8 - - /** - * Header containing style information for text subtitles. - * For SUBTITLE_ASS subtitle type, it should contain the whole ASS - * [Script Info] and [V4+ Styles] section, plus the [Events] line and - * the Format line following. It shouldn't include any Dialogue line. - * - * - encoding: May be set by the caller before avcodec_open2() to an array - * allocated with the av_malloc() family of functions. - * - decoding: May be set by libavcodec in avcodec_open2(). - * - * After being set, the array is owned by the codec and freed in - * avcodec_free_context(). - */ - int subtitle_header_size; - uint8_t *subtitle_header; - - /** - * dump format separator. - * can be ", " or "\n " or anything else - * - encoding: Set by user. - * - decoding: Set by user. - */ - uint8_t *dump_separator; - - /** - * ',' separated list of allowed decoders. - * If NULL then all are allowed - * - encoding: unused - * - decoding: set by user - */ - char *codec_whitelist; - - /** - * Additional data associated with the entire coded stream. - * - * - decoding: may be set by user before calling avcodec_open2(). - * - encoding: may be set by libavcodec after avcodec_open2(). - */ - AVPacketSideData *coded_side_data; - int nb_coded_side_data; - - /** - * Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of - * metadata exported in frame, packet, or coded stream side data by - * decoders and encoders. - * - * - decoding: set by user - * - encoding: set by user - */ - int export_side_data; - - /** - * The number of pixels per image to maximally accept. - * - * - decoding: set by user - * - encoding: set by user - */ - int64_t max_pixels; - - /** - * Video decoding only. Certain video codecs support cropping, meaning that - * only a sub-rectangle of the decoded frame is intended for display. This - * option controls how cropping is handled by libavcodec. - * - * When set to 1 (the default), libavcodec will apply cropping internally. - * I.e. it will modify the output frame width/height fields and offset the - * data pointers (only by as much as possible while preserving alignment, or - * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that - * the frames output by the decoder refer only to the cropped area. The - * crop_* fields of the output frames will be zero. - * - * When set to 0, the width/height fields of the output frames will be set - * to the coded dimensions and the crop_* fields will describe the cropping - * rectangle. Applying the cropping is left to the caller. - * - * @warning When hardware acceleration with opaque output frames is used, - * libavcodec is unable to apply cropping from the top/left border. - * - * @note when this option is set to zero, the width/height fields of the - * AVCodecContext and output AVFrames have different meanings. The codec - * context fields store display dimensions (with the coded dimensions in - * coded_width/height), while the frame fields store the coded dimensions - * (with the display dimensions being determined by the crop_* fields). - */ - int apply_cropping; - - /** - * The percentage of damaged samples to discard a frame. - * - * - decoding: set by user - * - encoding: unused - */ - int discard_damaged_percentage; - - /** - * The number of samples per frame to maximally accept. - * - * - decoding: set by user - * - encoding: set by user - */ - int64_t max_samples; - - /** - * This callback is called at the beginning of each packet to get a data - * buffer for it. - * - * The following field will be set in the packet before this callback is - * called: - * - size - * This callback must use the above value to calculate the required buffer size, - * which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes. - * - * In some specific cases, the encoder may not use the entire buffer allocated by this - * callback. This will be reflected in the size value in the packet once returned by - * avcodec_receive_packet(). - * - * This callback must fill the following fields in the packet: - * - data: alignment requirements for AVPacket apply, if any. Some architectures and - * encoders may benefit from having aligned data. - * - buf: must contain a pointer to an AVBufferRef structure. The packet's - * data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(), - * and av_buffer_ref(). - * - * If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call - * avcodec_default_get_encode_buffer() instead of providing a buffer allocated by - * some other means. - * - * The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags. - * They may be used for example to hint what use the buffer may get after being - * created. - * Implementations of this callback may ignore flags they don't understand. - * If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused - * (read and/or written to if it is writable) later by libavcodec. - * - * This callback must be thread-safe, as when frame threading is used, it may - * be called from multiple threads simultaneously. - * - * @see avcodec_default_get_encode_buffer() - * - * - encoding: Set by libavcodec, user can override. - * - decoding: unused - */ - int (*get_encode_buffer)(struct AVCodecContext *s, AVPacket *pkt, int flags); - - /** - * Frame counter, set by libavcodec. - * - * - decoding: total number of frames returned from the decoder so far. - * - encoding: total number of frames passed to the encoder so far. - * - * @note the counter is not incremented if encoding/decoding resulted in - * an error. - */ - int64_t frame_num; - - /** - * Decoding only. May be set by the caller before avcodec_open2() to an - * av_malloc()'ed array (or via AVOptions). Owned and freed by the decoder - * afterwards. - * - * Side data attached to decoded frames may come from several sources: - * 1. coded_side_data, which the decoder will for certain types translate - * from packet-type to frame-type and attach to frames; - * 2. side data attached to an AVPacket sent for decoding (same - * considerations as above); - * 3. extracted from the coded bytestream. - * The first two cases are supplied by the caller and typically come from a - * container. - * - * This array configures decoder behaviour in cases when side data of the - * same type is present both in the coded bytestream and in the - * user-supplied side data (items 1. and 2. above). In all cases, at most - * one instance of each side data type will be attached to output frames. By - * default it will be the bytestream side data. Adding an - * AVPacketSideDataType value to this array will flip the preference for - * this type, thus making the decoder prefer user-supplied side data over - * bytestream. In case side data of the same type is present both in - * coded_data and attacked to a packet, the packet instance always has - * priority. - * - * The array may also contain a single -1, in which case the preference is - * switched for all side data types. - */ - int *side_data_prefer_packet; - /** - * Number of entries in side_data_prefer_packet. - */ - unsigned nb_side_data_prefer_packet; - - /** - * Array containing static side data, such as HDR10 CLL / MDCV structures. - * Side data entries should be allocated by usage of helpers defined in - * libavutil/frame.h. - * - * - encoding: may be set by user before calling avcodec_open2() for - * encoder configuration. Afterwards owned and freed by the - * encoder. - * - decoding: may be set by libavcodec in avcodec_open2(). - */ - AVFrameSideData **decoded_side_data; - int nb_decoded_side_data; - - /** - * Indicates how the alpha channel of the video is represented. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVAlphaMode alpha_mode; -} AVCodecContext; - -/** - * @defgroup lavc_hwaccel AVHWAccel - * - * @note Nothing in this structure should be accessed by the user. At some - * point in future it will not be externally visible at all. - * - * @{ - */ -typedef struct AVHWAccel { - /** - * Name of the hardware accelerated codec. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - */ - const char *name; - - /** - * Type of codec implemented by the hardware accelerator. - * - * See AVMEDIA_TYPE_xxx - */ - enum AVMediaType type; - - /** - * Codec implemented by the hardware accelerator. - * - * See AV_CODEC_ID_xxx - */ - enum AVCodecID id; - - /** - * Supported pixel format. - * - * Only hardware accelerated formats are supported here. - */ - enum AVPixelFormat pix_fmt; - - /** - * Hardware accelerated codec capabilities. - * see AV_HWACCEL_CODEC_CAP_* - */ - int capabilities; -} AVHWAccel; - -/** - * HWAccel is experimental and is thus avoided in favor of non experimental - * codecs - */ -#define AV_HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200 - -/** - * Hardware acceleration should be used for decoding even if the codec level - * used is unknown or higher than the maximum supported level reported by the - * hardware driver. - * - * It's generally a good idea to pass this flag unless you have a specific - * reason not to, as hardware tends to under-report supported levels. - */ -#define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0) - -/** - * Hardware acceleration can output YUV pixel formats with a different chroma - * sampling than 4:2:0 and/or other than 8 bits per component. - */ -#define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1) - -/** - * Hardware acceleration should still be attempted for decoding when the - * codec profile does not match the reported capabilities of the hardware. - * - * For example, this can be used to try to decode baseline profile H.264 - * streams in hardware - it will often succeed, because many streams marked - * as baseline profile actually conform to constrained baseline profile. - * - * @warning If the stream is actually not supported then the behaviour is - * undefined, and may include returning entirely incorrect output - * while indicating success. - */ -#define AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH (1 << 2) - -/** - * Some hardware decoders (namely nvdec) can either output direct decoder - * surfaces, or make an on-device copy and return said copy. - * There is a hard limit on how many decoder surfaces there can be, and it - * cannot be accurately guessed ahead of time. - * For some processing chains, this can be okay, but others will run into the - * limit and in turn produce very confusing errors that require fine tuning of - * more or less obscure options by the user, or in extreme cases cannot be - * resolved at all without inserting an avfilter that forces a copy. - * - * Thus, the hwaccel will by default make a copy for safety and resilience. - * If a users really wants to minimize the amount of copies, they can set this - * flag and ensure their processing chain does not exhaust the surface pool. - */ -#define AV_HWACCEL_FLAG_UNSAFE_OUTPUT (1 << 3) - -/** - * @} - */ - -enum AVSubtitleType { - SUBTITLE_NONE, - - SUBTITLE_BITMAP, ///< A bitmap, pict will be set - - /** - * Plain text, the text field must be set by the decoder and is - * authoritative. ass and pict fields may contain approximations. - */ - SUBTITLE_TEXT, - - /** - * Formatted text, the ass field must be set by the decoder and is - * authoritative. pict and text fields may contain approximations. - */ - SUBTITLE_ASS, -}; - -#define AV_SUBTITLE_FLAG_FORCED 0x00000001 - -typedef struct AVSubtitleRect { - int x; ///< top left corner of pict, undefined when pict is not set - int y; ///< top left corner of pict, undefined when pict is not set - int w; ///< width of pict, undefined when pict is not set - int h; ///< height of pict, undefined when pict is not set - int nb_colors; ///< number of colors in pict, undefined when pict is not set - - /** - * data+linesize for the bitmap of this subtitle. - * Can be set for text/ass as well once they are rendered. - */ - uint8_t *data[4]; - int linesize[4]; - - int flags; - enum AVSubtitleType type; - - char *text; ///< 0 terminated plain UTF-8 text - - /** - * 0 terminated ASS/SSA compatible event line. - * The presentation of this is unaffected by the other values in this - * struct. - */ - char *ass; -} AVSubtitleRect; - -typedef struct AVSubtitle { - uint16_t format; /* 0 = graphics */ - uint32_t start_display_time; /* relative to packet pts, in ms */ - uint32_t end_display_time; /* relative to packet pts, in ms */ - unsigned num_rects; - AVSubtitleRect **rects; - int64_t pts; ///< Same as packet pts, in AV_TIME_BASE -} AVSubtitle; - -/** - * Return the LIBAVCODEC_VERSION_INT constant. - */ -unsigned avcodec_version(void); - -/** - * Return the libavcodec build-time configuration. - */ -const char *avcodec_configuration(void); - -/** - * Return the libavcodec license. - */ -const char *avcodec_license(void); - -/** - * Allocate an AVCodecContext and set its fields to default values. The - * resulting struct should be freed with avcodec_free_context(). - * - * @param codec if non-NULL, allocate private data and initialize defaults - * for the given codec. It is illegal to then call avcodec_open2() - * with a different codec. - * If NULL, then the codec-specific defaults won't be initialized, - * which may result in suboptimal default settings (this is - * important mainly for encoders, e.g. libx264). - * - * @return An AVCodecContext filled with default values or NULL on failure. - */ -AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); - -/** - * Free the codec context and everything associated with it and write NULL to - * the provided pointer. - */ -void avcodec_free_context(AVCodecContext **avctx); - -/** - * Get the AVClass for AVCodecContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_class(void); - -/** - * Get the AVClass for AVSubtitleRect. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_subtitle_rect_class(void); - -/** - * Fill the parameters struct based on the values from the supplied codec - * context. Any allocated fields in par are freed and replaced with duplicates - * of the corresponding fields in codec. - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int avcodec_parameters_from_context(struct AVCodecParameters *par, - const AVCodecContext *codec); - -/** - * Fill the codec context based on the values from the supplied codec - * parameters. Any allocated fields in codec that have a corresponding field in - * par are freed and replaced with duplicates of the corresponding field in par. - * Fields in codec that do not have a counterpart in par are not touched. - * - * @return >= 0 on success, a negative AVERROR code on failure. - */ -int avcodec_parameters_to_context(AVCodecContext *codec, - const struct AVCodecParameters *par); - -/** - * Initialize the AVCodecContext to use the given AVCodec. Prior to using this - * function the context has to be allocated with avcodec_alloc_context3(). - * - * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), - * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for - * retrieving a codec. - * - * Depending on the codec, you might need to set options in the codec context - * also for decoding (e.g. width, height, or the pixel or audio sample format in - * the case the information is not available in the bitstream, as when decoding - * raw audio or video). - * - * Options in the codec context can be set either by setting them in the options - * AVDictionary, or by setting the values in the context itself, directly or by - * using the av_opt_set() API before calling this function. - * - * Example: - * @code - * av_dict_set(&opts, "b", "2.5M", 0); - * codec = avcodec_find_decoder(AV_CODEC_ID_H264); - * if (!codec) - * exit(1); - * - * context = avcodec_alloc_context3(codec); - * - * if (avcodec_open2(context, codec, opts) < 0) - * exit(1); - * @endcode - * - * In the case AVCodecParameters are available (e.g. when demuxing a stream - * using libavformat, and accessing the AVStream contained in the demuxer), the - * codec parameters can be copied to the codec context using - * avcodec_parameters_to_context(), as in the following example: - * - * @code - * AVStream *stream = ...; - * context = avcodec_alloc_context3(codec); - * if (avcodec_parameters_to_context(context, stream->codecpar) < 0) - * exit(1); - * if (avcodec_open2(context, codec, NULL) < 0) - * exit(1); - * @endcode - * - * @note Always call this function before using decoding routines (such as - * @ref avcodec_receive_frame()). - * - * @param avctx The context to initialize. - * @param codec The codec to open this context for. If a non-NULL codec has been - * previously passed to avcodec_alloc_context3() or - * for this context, then this parameter MUST be either NULL or - * equal to the previously passed codec. - * @param options A dictionary filled with AVCodecContext and codec-private - * options, which are set on top of the options already set in - * avctx, can be NULL. On return this object will be filled with - * options that were not found in the avctx codec context. - * - * @return zero on success, a negative value on error - * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), - * av_dict_set(), av_opt_set(), av_opt_find(), avcodec_parameters_to_context() - */ -int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); - -/** - * Free all allocated data in the given subtitle struct. - * - * @param sub AVSubtitle to free. - */ -void avsubtitle_free(AVSubtitle *sub); - -/** - * @} - */ - -/** - * @addtogroup lavc_decoding - * @{ - */ - -/** - * The default callback for AVCodecContext.get_buffer2(). It is made public so - * it can be called by custom get_buffer2() implementations for decoders without - * AV_CODEC_CAP_DR1 set. - */ -int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags); - -/** - * The default callback for AVCodecContext.get_encode_buffer(). It is made public so - * it can be called by custom get_encode_buffer() implementations for encoders without - * AV_CODEC_CAP_DR1 set. - */ -int avcodec_default_get_encode_buffer(AVCodecContext *s, AVPacket *pkt, int flags); - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you do not use any horizontal - * padding. - * - * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. - */ -void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you also ensure that all - * line sizes are a multiple of the respective linesize_align[i]. - * - * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. - */ -void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, - int linesize_align[AV_NUM_DATA_POINTERS]); - -/** - * Decode a subtitle message. - * Return a negative value on error, otherwise return the number of bytes used. - * If no subtitle could be decompressed, got_sub_ptr is zero. - * Otherwise, the subtitle is stored in *sub. - * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for - * simplicity, because the performance difference is expected to be negligible - * and reusing a get_buffer written for video codecs would probably perform badly - * due to a potentially very different allocation pattern. - * - * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input - * and output. This means that for some packets they will not immediately - * produce decoded output and need to be flushed at the end of decoding to get - * all the decoded data. Flushing is done by calling this function with packets - * with avpkt->data set to NULL and avpkt->size set to 0 until it stops - * returning subtitles. It is safe to flush even those decoders that are not - * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx the codec context - * @param[out] sub The preallocated AVSubtitle in which the decoded subtitle will be stored, - * must be freed with avsubtitle_free if *got_sub_ptr is set. - * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. - * @param[in] avpkt The input AVPacket containing the input buffer. - */ -int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, - int *got_sub_ptr, const AVPacket *avpkt); - -/** - * Supply raw packet data as input to a decoder. - * - * Internally, this call will copy relevant AVCodecContext fields, which can - * influence decoding per-packet, and apply them when the packet is actually - * decoded. (For example AVCodecContext.skip_frame, which might direct the - * decoder to drop the frame contained by the packet sent with this function.) - * - * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE - * larger than the actual read bytes because some optimized bitstream - * readers read 32 or 64 bits at once and could read over the end. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx codec context - * @param[in] avpkt The input AVPacket. Usually, this will be a single video - * frame, or several complete audio frames. - * Ownership of the packet remains with the caller, and the - * decoder will not write to the packet. The decoder may create - * a reference to the packet data (or copy it if the packet is - * not reference-counted). - * Unlike with older APIs, the packet is always fully consumed, - * and if it contains multiple frames (e.g. some audio codecs), - * will require you to call avcodec_receive_frame() multiple - * times afterwards before you can send a new packet. - * It can be NULL (or an AVPacket with data set to NULL and - * size set to 0); in this case, it is considered a flush - * packet, which signals the end of the stream. Sending the - * first flush packet will return success. Subsequent ones are - * unnecessary and will return AVERROR_EOF. If the decoder - * still has frames buffered, it will return them after sending - * a flush packet. - * - * @retval 0 success - * @retval AVERROR(EAGAIN) input is not accepted in the current state - user - * must read output with avcodec_receive_frame() (once - * all output is read, the packet should be resent, - * and the call will not fail with EAGAIN). - * @retval AVERROR_EOF the decoder has been flushed, and no new packets can be - * sent to it (also returned if more than 1 flush - * packet is sent) - * @retval AVERROR(EINVAL) codec not opened, it is an encoder, or requires flush - * @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar - * @retval "another negative error code" legitimate decoding errors - */ -int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); - -/** - * Return decoded output data from a decoder or encoder (when the - * @ref AV_CODEC_FLAG_RECON_FRAME flag is used). - * - * @param avctx codec context - * @param frame This will be set to a reference-counted video or audio - * frame (depending on the decoder type) allocated by the - * codec. Note that the function will always call - * av_frame_unref(frame) before doing anything else. - * @param flags Combination of AV_CODEC_RECEIVE_FRAME_FLAG_* flags. - * - * @retval 0 success, a frame was returned - * @retval AVERROR(EAGAIN) output is not available in this state - user must - * try to send new input - * @retval AVERROR_EOF the codec has been fully flushed, and there will be - * no more output frames - * @retval AVERROR(EINVAL) codec not opened, or it is an encoder without the - * @ref AV_CODEC_FLAG_RECON_FRAME flag enabled - * @retval "other negative error code" legitimate decoding errors - */ -int avcodec_receive_frame_flags(AVCodecContext *avctx, AVFrame *frame, unsigned flags); - -/** - * Alias for `avcodec_receive_frame_flags(avctx, frame, 0)`. - */ -int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame); - -/** - * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet() - * to retrieve buffered output packets. - * - * @param avctx codec context - * @param[in] frame AVFrame containing the raw audio or video frame to be encoded. - * Ownership of the frame remains with the caller, and the - * encoder will not write to the frame. The encoder may create - * a reference to the frame data (or copy it if the frame is - * not reference-counted). - * It can be NULL, in which case it is considered a flush - * packet. This signals the end of the stream. If the encoder - * still has packets buffered, it will return them after this - * call. Once flushing mode has been entered, additional flush - * packets are ignored, and sending frames will return - * AVERROR_EOF. - * - * For audio: - * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame - * can have any number of samples. - * If it is not set, frame->nb_samples must be equal to - * avctx->frame_size for all frames except the last. - * The final frame may be smaller than avctx->frame_size. - * @retval 0 success - * @retval AVERROR(EAGAIN) input is not accepted in the current state - user must - * read output with avcodec_receive_packet() (once all - * output is read, the packet should be resent, and the - * call will not fail with EAGAIN). - * @retval AVERROR_EOF the encoder has been flushed, and no new frames can - * be sent to it - * @retval AVERROR(EINVAL) codec not opened, it is a decoder, or requires flush - * @retval AVERROR(ENOMEM) failed to add packet to internal queue, or similar - * @retval "another negative error code" legitimate encoding errors - */ -int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame); - -/** - * Read encoded data from the encoder. - * - * @param avctx codec context - * @param avpkt This will be set to a reference-counted packet allocated by the - * encoder. Note that the function will always call - * av_packet_unref(avpkt) before doing anything else. - * @retval 0 success - * @retval AVERROR(EAGAIN) output is not available in the current state - user must - * try to send input - * @retval AVERROR_EOF the encoder has been fully flushed, and there will be no - * more output packets - * @retval AVERROR(EINVAL) codec not opened, or it is a decoder - * @retval "another negative error code" legitimate encoding errors - */ -int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt); - -/** - * Create and return a AVHWFramesContext with values adequate for hardware - * decoding. This is meant to get called from the get_format callback, and is - * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx. - * This API is for decoding with certain hardware acceleration modes/APIs only. - * - * The returned AVHWFramesContext is not initialized. The caller must do this - * with av_hwframe_ctx_init(). - * - * Calling this function is not a requirement, but makes it simpler to avoid - * codec or hardware API specific details when manually allocating frames. - * - * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx, - * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes - * it unnecessary to call this function or having to care about - * AVHWFramesContext initialization at all. - * - * There are a number of requirements for calling this function: - * - * - It must be called from get_format with the same avctx parameter that was - * passed to get_format. Calling it outside of get_format is not allowed, and - * can trigger undefined behavior. - * - The function is not always supported (see description of return values). - * Even if this function returns successfully, hwaccel initialization could - * fail later. (The degree to which implementations check whether the stream - * is actually supported varies. Some do this check only after the user's - * get_format callback returns.) - * - The hw_pix_fmt must be one of the choices suggested by get_format. If the - * user decides to use a AVHWFramesContext prepared with this API function, - * the user must return the same hw_pix_fmt from get_format. - * - The device_ref passed to this function must support the given hw_pix_fmt. - * - After calling this API function, it is the user's responsibility to - * initialize the AVHWFramesContext (returned by the out_frames_ref parameter), - * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done - * before returning from get_format (this is implied by the normal - * AVCodecContext.hw_frames_ctx API rules). - * - The AVHWFramesContext parameters may change every time time get_format is - * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So - * you are inherently required to go through this process again on every - * get_format call. - * - It is perfectly possible to call this function without actually using - * the resulting AVHWFramesContext. One use-case might be trying to reuse a - * previously initialized AVHWFramesContext, and calling this API function - * only to test whether the required frame parameters have changed. - * - Fields that use dynamically allocated values of any kind must not be set - * by the user unless setting them is explicitly allowed by the documentation. - * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque, - * the new free callback must call the potentially set previous free callback. - * This API call may set any dynamically allocated fields, including the free - * callback. - * - * The function will set at least the following fields on AVHWFramesContext - * (potentially more, depending on hwaccel API): - * - * - All fields set by av_hwframe_ctx_alloc(). - * - Set the format field to hw_pix_fmt. - * - Set the sw_format field to the most suited and most versatile format. (An - * implication is that this will prefer generic formats over opaque formats - * with arbitrary restrictions, if possible.) - * - Set the width/height fields to the coded frame size, rounded up to the - * API-specific minimum alignment. - * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size - * field to the number of maximum reference surfaces possible with the codec, - * plus 1 surface for the user to work (meaning the user can safely reference - * at most 1 decoded surface at a time), plus additional buffering introduced - * by frame threading. If the hwaccel does not require pre-allocation, the - * field is left to 0, and the decoder will allocate new surfaces on demand - * during decoding. - * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying - * hardware API. - * - * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but - * with basic frame parameters set. - * - * The function is stateless, and does not change the AVCodecContext or the - * device_ref AVHWDeviceContext. - * - * @param avctx The context which is currently calling get_format, and which - * implicitly contains all state needed for filling the returned - * AVHWFramesContext properly. - * @param device_ref A reference to the AVHWDeviceContext describing the device - * which will be used by the hardware decoder. - * @param hw_pix_fmt The hwaccel format you are going to return from get_format. - * @param out_frames_ref On success, set to a reference to an _uninitialized_ - * AVHWFramesContext, created from the given device_ref. - * Fields will be set to values required for decoding. - * Not changed if an error is returned. - * @return zero on success, a negative value on error. The following error codes - * have special semantics: - * AVERROR(ENOENT): the decoder does not support this functionality. Setup - * is always manual, or it is a decoder which does not - * support setting AVCodecContext.hw_frames_ctx at all, - * or it is a software format. - * AVERROR(EINVAL): it is known that hardware decoding is not supported for - * this configuration, or the device_ref is not supported - * for the hwaccel referenced by hw_pix_fmt. - */ -int avcodec_get_hw_frames_parameters(AVCodecContext *avctx, - AVBufferRef *device_ref, - enum AVPixelFormat hw_pix_fmt, - AVBufferRef **out_frames_ref); - -enum AVCodecConfig { - AV_CODEC_CONFIG_PIX_FORMAT, ///< AVPixelFormat, terminated by AV_PIX_FMT_NONE - AV_CODEC_CONFIG_FRAME_RATE, ///< AVRational, terminated by {0, 0} - AV_CODEC_CONFIG_SAMPLE_RATE, ///< int, terminated by 0 - AV_CODEC_CONFIG_SAMPLE_FORMAT, ///< AVSampleFormat, terminated by AV_SAMPLE_FMT_NONE - AV_CODEC_CONFIG_CHANNEL_LAYOUT, ///< AVChannelLayout, terminated by {0} - AV_CODEC_CONFIG_COLOR_RANGE, ///< AVColorRange, terminated by AVCOL_RANGE_UNSPECIFIED - AV_CODEC_CONFIG_COLOR_SPACE, ///< AVColorSpace, terminated by AVCOL_SPC_UNSPECIFIED - AV_CODEC_CONFIG_ALPHA_MODE, ///< AVAlphaMode, terminated by AVALPHA_MODE_UNSPECIFIED -}; - -/** - * Retrieve a list of all supported values for a given configuration type. - * - * @param avctx An optional context to use. Values such as - * `strict_std_compliance` may affect the result. If NULL, - * default values are used. - * @param codec The codec to query, or NULL to use avctx->codec. - * @param config The configuration to query. - * @param flags Currently unused; should be set to zero. - * @param out_configs On success, set to a list of configurations, terminated - * by a config-specific terminator, or NULL if all - * possible values are supported. - * @param out_num_configs On success, set to the number of elements in - *out_configs, excluding the terminator. Optional. - */ -int avcodec_get_supported_config(const AVCodecContext *avctx, - const AVCodec *codec, enum AVCodecConfig config, - unsigned flags, const void **out_configs, - int *out_num_configs); - - - -/** - * @defgroup lavc_parsing Frame parsing - * @{ - */ - -enum AVPictureStructure { - AV_PICTURE_STRUCTURE_UNKNOWN, ///< unknown - AV_PICTURE_STRUCTURE_TOP_FIELD, ///< coded as top field - AV_PICTURE_STRUCTURE_BOTTOM_FIELD, ///< coded as bottom field - AV_PICTURE_STRUCTURE_FRAME, ///< coded as frame -}; - -typedef struct AVCodecParserContext { - void *priv_data; - const struct AVCodecParser *parser; - int64_t frame_offset; /* offset of the current frame */ - int64_t cur_offset; /* current offset - (incremented by each av_parser_parse()) */ - int64_t next_frame_offset; /* offset of the next frame */ - /* video info */ - int pict_type; /* XXX: Put it back in AVCodecContext. */ - /** - * This field is used for proper frame duration computation in lavf. - * It signals, how much longer the frame duration of the current frame - * is compared to normal frame duration. - * - * frame_duration = (1 + repeat_pict) * time_base - * - * It is used by codecs like H.264 to display telecined material. - */ - int repeat_pict; /* XXX: Put it back in AVCodecContext. */ - int64_t pts; /* pts of the current frame */ - int64_t dts; /* dts of the current frame */ - - /* private data */ - int64_t last_pts; - int64_t last_dts; - int fetch_timestamp; - -#define AV_PARSER_PTS_NB 4 - int cur_frame_start_index; - int64_t cur_frame_offset[AV_PARSER_PTS_NB]; - int64_t cur_frame_pts[AV_PARSER_PTS_NB]; - int64_t cur_frame_dts[AV_PARSER_PTS_NB]; - - int flags; -#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 -#define PARSER_FLAG_ONCE 0x0002 -/// Set if the parser has a valid file offset -#define PARSER_FLAG_FETCHED_OFFSET 0x0004 -#define PARSER_FLAG_USE_CODEC_TS 0x1000 - - int64_t offset; ///< byte offset from starting packet start - int64_t cur_frame_end[AV_PARSER_PTS_NB]; - - /** - * Set by parser to 1 for key frames and 0 for non-key frames. - * It is initialized to -1, so if the parser doesn't set this flag, - * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames - * will be used. - */ - int key_frame; - - // Timestamp generation support: - /** - * Synchronization point for start of timestamp generation. - * - * Set to >0 for sync point, 0 for no sync point and <0 for undefined - * (default). - * - * For example, this corresponds to presence of H.264 buffering period - * SEI message. - */ - int dts_sync_point; - - /** - * Offset of the current timestamp against last timestamp sync point in - * units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain a valid timestamp offset. - * - * Note that the timestamp of sync point has usually a nonzero - * dts_ref_dts_delta, which refers to the previous sync point. Offset of - * the next frame after timestamp sync point will be usually 1. - * - * For example, this corresponds to H.264 cpb_removal_delay. - */ - int dts_ref_dts_delta; - - /** - * Presentation delay of current frame in units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain valid non-negative timestamp delta (presentation time of a frame - * must not lie in the past). - * - * This delay represents the difference between decoding and presentation - * time of the frame. - * - * For example, this corresponds to H.264 dpb_output_delay. - */ - int pts_dts_delta; - - /** - * Position of the packet in file. - * - * Analogous to cur_frame_pts/dts - */ - int64_t cur_frame_pos[AV_PARSER_PTS_NB]; - - /** - * Byte position of currently parsed frame in stream. - */ - int64_t pos; - - /** - * Previous frame byte position. - */ - int64_t last_pos; - - /** - * Duration of the current frame. - * For audio, this is in units of 1 / AVCodecContext.sample_rate. - * For all other types, this is in units of AVCodecContext.time_base. - */ - int duration; - - enum AVFieldOrder field_order; - - /** - * Indicate whether a picture is coded as a frame, top field or bottom field. - * - * For example, H.264 field_pic_flag equal to 0 corresponds to - * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag - * equal to 1 and bottom_field_flag equal to 0 corresponds to - * AV_PICTURE_STRUCTURE_TOP_FIELD. - */ - enum AVPictureStructure picture_structure; - - /** - * Picture number incremented in presentation or output order. - * This field may be reinitialized at the first picture of a new sequence. - * - * For example, this corresponds to H.264 PicOrderCnt. - */ - int output_picture_number; - - /** - * Dimensions of the decoded video intended for presentation. - */ - int width; - int height; - - /** - * Dimensions of the coded video. - */ - int coded_width; - int coded_height; - - /** - * The format of the coded data, corresponds to enum AVPixelFormat for video - * and for enum AVSampleFormat for audio. - * - * Note that a decoder can have considerable freedom in how exactly it - * decodes the data, so the format reported here might be different from the - * one returned by a decoder. - */ - int format; -} AVCodecParserContext; - -typedef struct AVCodecParser { -#if FF_API_PARSER_CODECID - int codec_ids[7]; /* several codec IDs are permitted */ -#else - enum AVCodecID codec_ids[7]; /* several codec IDs are permitted */ -#endif -#if FF_API_PARSER_PRIVATE - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - attribute_deprecated - int priv_data_size; - attribute_deprecated - int (*parser_init)(AVCodecParserContext *s); - /* This callback never returns an error, a negative value means that - * the frame start was in a previous packet. */ - attribute_deprecated - int (*parser_parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - attribute_deprecated - void (*parser_close)(AVCodecParserContext *s); - attribute_deprecated - int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); -#endif -} AVCodecParser; - -/** - * Iterate over all registered codec parsers. - * - * @param opaque a pointer where libavcodec will store the iteration state. Must - * point to NULL to start the iteration. - * - * @return the next registered codec parser or NULL when the iteration is - * finished - */ -const AVCodecParser *av_parser_iterate(void **opaque); - -#if FF_API_PARSER_CODECID -AVCodecParserContext *av_parser_init(int codec_id); -#else -AVCodecParserContext *av_parser_init(enum AVCodecID codec_id); -#endif - -/** - * Parse a packet. - * - * @param s parser context. - * @param avctx codec context. - * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. - * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. - * @param buf input buffer. - * @param buf_size buffer size in bytes without the padding. I.e. the full buffer - size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE. - To signal EOF, this should be 0 (so that the last frame - can be output). - * @param pts input presentation timestamp. - * @param dts input decoding timestamp. - * @param pos input byte position in stream. - * @return the number of bytes of the input bitstream used. - * - * Example: - * @code - * while(in_len){ - * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, - * in_data, in_len, - * pts, dts, pos); - * in_data += len; - * in_len -= len; - * - * if(size) - * decode_frame(data, size); - * } - * @endcode - */ -int av_parser_parse2(AVCodecParserContext *s, - AVCodecContext *avctx, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, - int64_t pts, int64_t dts, - int64_t pos); - -void av_parser_close(AVCodecParserContext *s); - -/** - * @} - * @} - */ - -/** - * @addtogroup lavc_encoding - * @{ - */ - -int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, - const AVSubtitle *sub); - - -/** - * @} - */ - -/** - * @defgroup lavc_misc Utility functions - * @ingroup libavc - * - * Miscellaneous utility functions related to both encoding and decoding - * (or neither). - * @{ - */ - -/** - * @defgroup lavc_misc_pixfmt Pixel formats - * - * Functions for working with pixel formats. - * @{ - */ - -/** - * Return a value representing the fourCC code associated to the - * pixel format pix_fmt, or 0 if no associated fourCC code can be - * found. - */ -unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); - -/** - * Find the best pixel format to convert to given a certain source pixel - * format. When converting from one pixel format to another, information loss - * may occur. For example, when converting from RGB24 to GRAY, the color - * information will be lost. Similarly, other losses occur when converting from - * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of - * the given pixel formats should be used to suffer the least amount of loss. - * The pixel formats from which it chooses one, are determined by the - * pix_fmt_list parameter. - * - * - * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. - * @return The best pixel format to convert to or -1 if none was found. - */ -enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, - enum AVPixelFormat src_pix_fmt, - int has_alpha, int *loss_ptr); - -enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - -/** - * @} - */ - -void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); - -int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); -int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); -//FIXME func typedef - -/** - * Fill AVFrame audio data and linesize pointers. - * - * The buffer buf must be a preallocated buffer with a size big enough - * to contain the specified samples amount. The filled AVFrame data - * pointers will point to this buffer. - * - * AVFrame extended_data channel pointers are allocated if necessary for - * planar audio. - * - * @param frame the AVFrame - * frame->nb_samples must be set prior to calling the - * function. This function fills in frame->data, - * frame->extended_data, frame->linesize[0]. - * @param nb_channels channel count - * @param sample_fmt sample format - * @param buf buffer to use for frame data - * @param buf_size size of buffer - * @param align plane size sample alignment (0 = default) - * @return >=0 on success, negative error code on failure - * @todo return the size in bytes required to store the samples in - * case of success, at the next libavutil bump - */ -int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, - enum AVSampleFormat sample_fmt, const uint8_t *buf, - int buf_size, int align); - -/** - * Reset the internal codec state / flush internal buffers. Should be called - * e.g. when seeking or when switching to a different stream. - * - * @note for decoders, this function just releases any references the decoder - * might keep internally, but the caller's references remain valid. - * - * @note for encoders, this function will only do something if the encoder - * declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder - * will drain any remaining packets, and can then be reused for a different - * stream (as opposed to sending a null frame which will leave the encoder - * in a permanent EOF state after draining). This can be desirable if the - * cost of tearing down and replacing the encoder instance is high. - */ -void avcodec_flush_buffers(AVCodecContext *avctx); - -/** - * Return audio frame duration. - * - * @param avctx codec context - * @param frame_bytes size of the frame, or 0 if unknown - * @return frame duration, in samples, if known. 0 if not able to - * determine. - */ -int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); - -/* memory */ - -/** - * Same behaviour av_fast_malloc but the buffer has additional - * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0. - * - * In addition the whole buffer will initially and after resizes - * be 0-initialized so that no uninitialized data will ever appear. - */ -void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Same behaviour av_fast_padded_malloc except that buffer will always - * be 0-initialized after call. - */ -void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); - -/** - * @return a positive value if s is open (i.e. avcodec_open2() was called on it), - * 0 otherwise. - */ -int avcodec_is_open(AVCodecContext *s); - -/** - * @} - */ - -#endif /* AVCODEC_AVCODEC_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/avdct.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/avdct.h deleted file mode 100644 index 6411fab6f6..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/avdct.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVDCT_H -#define AVCODEC_AVDCT_H - -#include "libavutil/opt.h" - -/** - * AVDCT context. - * @note function pointers can be NULL if the specific features have been - * disabled at build time. - */ -typedef struct AVDCT { - const AVClass *av_class; - - void (*idct)(int16_t *block /* align 16 */); - - /** - * IDCT input permutation. - * Several optimized IDCTs need a permutated input (relative to the - * normal order of the reference IDCT). - * This permutation must be performed before the idct_put/add. - * Note, normally this can be merged with the zigzag/alternate scan
- * An example to avoid confusion: - * - (->decode coeffs -> zigzag reorder -> dequant -> reference IDCT -> ...) - * - (x -> reference DCT -> reference IDCT -> x) - * - (x -> reference DCT -> simple_mmx_perm = idct_permutation - * -> simple_idct_mmx -> x) - * - (-> decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant - * -> simple_idct_mmx -> ...) - */ - uint8_t idct_permutation[64]; - - void (*fdct)(int16_t *block /* align 16 */); - - - /** - * DCT algorithm. - * must use AVOptions to set this field. - */ - int dct_algo; - - /** - * IDCT algorithm. - * must use AVOptions to set this field. - */ - int idct_algo; - - void (*get_pixels)(int16_t *block /* align 16 */, - const uint8_t *pixels /* align 8 */, - ptrdiff_t line_size); - - int bits_per_sample; - - void (*get_pixels_unaligned)(int16_t *block /* align 16 */, - const uint8_t *pixels, - ptrdiff_t line_size); -} AVDCT; - -/** - * Allocates a AVDCT context. - * This needs to be initialized with avcodec_dct_init() after optionally - * configuring it with AVOptions. - * - * To free it use av_free() - */ -AVDCT *avcodec_dct_alloc(void); -int avcodec_dct_init(AVDCT *); - -const AVClass *avcodec_dct_get_class(void); - -#endif /* AVCODEC_AVDCT_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/bsf.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/bsf.h deleted file mode 100644 index a09c69f242..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/bsf.h +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Bitstream filters public API - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_BSF_H -#define AVCODEC_BSF_H - -#include "libavutil/dict.h" -#include "libavutil/log.h" -#include "libavutil/rational.h" - -#include "codec_id.h" -#include "codec_par.h" -#include "packet.h" - -/** - * @defgroup lavc_bsf Bitstream filters - * @ingroup libavc - * - * Bitstream filters transform encoded media data without decoding it. This - * allows e.g. manipulating various header values. Bitstream filters operate on - * @ref AVPacket "AVPackets". - * - * The bitstream filtering API is centered around two structures: - * AVBitStreamFilter and AVBSFContext. The former represents a bitstream filter - * in abstract, the latter a specific filtering process. Obtain an - * AVBitStreamFilter using av_bsf_get_by_name() or av_bsf_iterate(), then pass - * it to av_bsf_alloc() to create an AVBSFContext. Fill in the user-settable - * AVBSFContext fields, as described in its documentation, then call - * av_bsf_init() to prepare the filter context for use. - * - * Submit packets for filtering using av_bsf_send_packet(), obtain filtered - * results with av_bsf_receive_packet(). When no more input packets will be - * sent, submit a NULL AVPacket to signal the end of the stream to the filter. - * av_bsf_receive_packet() will then return trailing packets, if any are - * produced by the filter. - * - * Finally, free the filter context with av_bsf_free(). - * @{ - */ - -/** - * The bitstream filter state. - * - * This struct must be allocated with av_bsf_alloc() and freed with - * av_bsf_free(). - * - * The fields in the struct will only be changed (by the caller or by the - * filter) as described in their documentation, and are to be considered - * immutable otherwise. - */ -typedef struct AVBSFContext { - /** - * A class for logging and AVOptions - */ - const AVClass *av_class; - - /** - * The bitstream filter this context is an instance of. - */ - const struct AVBitStreamFilter *filter; - - /** - * Opaque filter-specific private data. If filter->priv_class is non-NULL, - * this is an AVOptions-enabled struct. - */ - void *priv_data; - - /** - * Parameters of the input stream. This field is allocated in - * av_bsf_alloc(), it needs to be filled by the caller before - * av_bsf_init(). - */ - AVCodecParameters *par_in; - - /** - * Parameters of the output stream. This field is allocated in - * av_bsf_alloc(), it is set by the filter in av_bsf_init(). - */ - AVCodecParameters *par_out; - - /** - * The timebase used for the timestamps of the input packets. Set by the - * caller before av_bsf_init(). - */ - AVRational time_base_in; - - /** - * The timebase used for the timestamps of the output packets. Set by the - * filter in av_bsf_init(). - */ - AVRational time_base_out; -} AVBSFContext; - -typedef struct AVBitStreamFilter { - const char *name; - - /** - * A list of codec ids supported by the filter, terminated by - * AV_CODEC_ID_NONE. - * May be NULL, in that case the bitstream filter works with any codec id. - */ - const enum AVCodecID *codec_ids; - - /** - * A class for the private data, used to declare bitstream filter private - * AVOptions. This field is NULL for bitstream filters that do not declare - * any options. - * - * If this field is non-NULL, the first member of the filter private data - * must be a pointer to AVClass, which will be set by libavcodec generic - * code to this class. - */ - const AVClass *priv_class; -} AVBitStreamFilter; - -/** - * @return a bitstream filter with the specified name or NULL if no such - * bitstream filter exists. - */ -const AVBitStreamFilter *av_bsf_get_by_name(const char *name); - -/** - * Iterate over all registered bitstream filters. - * - * @param opaque a pointer where libavcodec will store the iteration state. Must - * point to NULL to start the iteration. - * - * @return the next registered bitstream filter or NULL when the iteration is - * finished - */ -const AVBitStreamFilter *av_bsf_iterate(void **opaque); - -/** - * Allocate a context for a given bitstream filter. The caller must fill in the - * context parameters as described in the documentation and then call - * av_bsf_init() before sending any data to the filter. - * - * @param filter the filter for which to allocate an instance. - * @param[out] ctx a pointer into which the pointer to the newly-allocated context - * will be written. It must be freed with av_bsf_free() after the - * filtering is done. - * - * @return 0 on success, a negative AVERROR code on failure - */ -int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **ctx); - -/** - * Prepare the filter for use, after all the parameters and options have been - * set. - * - * @param ctx a AVBSFContext previously allocated with av_bsf_alloc() - */ -int av_bsf_init(AVBSFContext *ctx); - -/** - * Submit a packet for filtering. - * - * After sending each packet, the filter must be completely drained by calling - * av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or - * AVERROR_EOF. - * - * @param ctx an initialized AVBSFContext - * @param pkt the packet to filter. The bitstream filter will take ownership of - * the packet and reset the contents of pkt. pkt is not touched if an error occurs. - * If pkt is empty (i.e. NULL, or pkt->data is NULL and pkt->side_data_elems zero), - * it signals the end of the stream (i.e. no more non-empty packets will be sent; - * sending more empty packets does nothing) and will cause the filter to output - * any packets it may have buffered internally. - * - * @return - * - 0 on success. - * - AVERROR(EAGAIN) if packets need to be retrieved from the filter (using - * av_bsf_receive_packet()) before new input can be consumed. - * - Another negative AVERROR value if an error occurs. - */ -int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt); - -/** - * Retrieve a filtered packet. - * - * @param ctx an initialized AVBSFContext - * @param[out] pkt this struct will be filled with the contents of the filtered - * packet. It is owned by the caller and must be freed using - * av_packet_unref() when it is no longer needed. - * This parameter should be "clean" (i.e. freshly allocated - * with av_packet_alloc() or unreffed with av_packet_unref()) - * when this function is called. If this function returns - * successfully, the contents of pkt will be completely - * overwritten by the returned data. On failure, pkt is not - * touched. - * - * @return - * - 0 on success. - * - AVERROR(EAGAIN) if more packets need to be sent to the filter (using - * av_bsf_send_packet()) to get more output. - * - AVERROR_EOF if there will be no further output from the filter. - * - Another negative AVERROR value if an error occurs. - * - * @note one input packet may result in several output packets, so after sending - * a packet with av_bsf_send_packet(), this function needs to be called - * repeatedly until it stops returning 0. It is also possible for a filter to - * output fewer packets than were sent to it, so this function may return - * AVERROR(EAGAIN) immediately after a successful av_bsf_send_packet() call. - */ -int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt); - -/** - * Reset the internal bitstream filter state. Should be called e.g. when seeking. - */ -void av_bsf_flush(AVBSFContext *ctx); - -/** - * Free a bitstream filter context and everything associated with it; write NULL - * into the supplied pointer. - */ -void av_bsf_free(AVBSFContext **ctx); - -/** - * Get the AVClass for AVBSFContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *av_bsf_get_class(void); - -/** - * Structure for chain/list of bitstream filters. - * Empty list can be allocated by av_bsf_list_alloc(). - */ -typedef struct AVBSFList AVBSFList; - -/** - * Allocate empty list of bitstream filters. - * The list must be later freed by av_bsf_list_free() - * or finalized by av_bsf_list_finalize(). - * - * @return Pointer to @ref AVBSFList on success, NULL in case of failure - */ -AVBSFList *av_bsf_list_alloc(void); - -/** - * Free list of bitstream filters. - * - * @param lst Pointer to pointer returned by av_bsf_list_alloc() - */ -void av_bsf_list_free(AVBSFList **lst); - -/** - * Append bitstream filter to the list of bitstream filters. - * - * @param lst List to append to - * @param bsf Filter context to be appended - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_append(AVBSFList *lst, AVBSFContext *bsf); - -/** - * Construct new bitstream filter context given it's name and options - * and append it to the list of bitstream filters. - * - * @param lst List to append to - * @param bsf_name Name of the bitstream filter - * @param options Options for the bitstream filter, can be set to NULL - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_append2(AVBSFList *lst, const char * bsf_name, AVDictionary **options); -/** - * Finalize list of bitstream filters. - * - * This function will transform @ref AVBSFList to single @ref AVBSFContext, - * so the whole chain of bitstream filters can be treated as single filter - * freshly allocated by av_bsf_alloc(). - * If the call is successful, @ref AVBSFList structure is freed and lst - * will be set to NULL. In case of failure, caller is responsible for - * freeing the structure by av_bsf_list_free() - * - * @param lst Filter list structure to be transformed - * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure - * representing the chain of bitstream filters - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf); - -/** - * Parse string describing list of bitstream filters and create single - * @ref AVBSFContext describing the whole chain of bitstream filters. - * Resulting @ref AVBSFContext can be treated as any other @ref AVBSFContext freshly - * allocated by av_bsf_alloc(). - * - * @param str String describing chain of bitstream filters in format - * `bsf1[=opt1=val1:opt2=val2][,bsf2]` - * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure - * representing the chain of bitstream filters - * - * @return >=0 on success, negative AVERROR in case of failure - */ -int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf); - -/** - * Get null/pass-through bitstream filter. - * - * @param[out] bsf Pointer to be set to new instance of pass-through bitstream filter - * - * @return - */ -int av_bsf_get_null_filter(AVBSFContext **bsf); - -/** - * @} - */ - -#endif // AVCODEC_BSF_H diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec.h deleted file mode 100644 index f509e5d94e..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec.h +++ /dev/null @@ -1,367 +0,0 @@ -/* - * AVCodec public API - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_CODEC_H -#define AVCODEC_CODEC_H - -#include - -#include "libavutil/avutil.h" -#include "libavutil/hwcontext.h" -#include "libavutil/log.h" -#include "libavutil/pixfmt.h" -#include "libavutil/rational.h" -#include "libavutil/samplefmt.h" - -#include "libavcodec/codec_id.h" -#include "libavcodec/version_major.h" - -/** - * @addtogroup lavc_core - * @{ - */ - -/** - * Decoder can use draw_horiz_band callback. - */ -#define AV_CODEC_CAP_DRAW_HORIZ_BAND (1 << 0) -/** - * Codec uses get_buffer() or get_encode_buffer() for allocating buffers and - * supports custom allocators. - * If not set, it might not use get_buffer() or get_encode_buffer() at all, or - * use operations that assume the buffer was allocated by - * avcodec_default_get_buffer2 or avcodec_default_get_encode_buffer. - */ -#define AV_CODEC_CAP_DR1 (1 << 1) -/** - * Encoder or decoder requires flushing with NULL input at the end in order to - * give the complete and correct output. - * - * NOTE: If this flag is not set, the codec is guaranteed to never be fed with - * with NULL data. The user can still send NULL data to the public encode - * or decode function, but libavcodec will not pass it along to the codec - * unless this flag is set. - * - * Decoders: - * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to get the delayed data until the decoder no longer - * returns frames. - * - * Encoders: - * The encoder needs to be fed with NULL data at the end of encoding until the - * encoder no longer returns data. - * - * NOTE: For encoders implementing the AVCodec.encode2() function, setting this - * flag also means that the encoder must set the pts and duration for - * each output packet. If this flag is not set, the pts and duration will - * be determined by libavcodec from the input frame. - */ -#define AV_CODEC_CAP_DELAY (1 << 5) -/** - * Codec can be fed a final frame with a smaller size. - * This can be used to prevent truncation of the last audio samples. - */ -#define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6) - -/** - * Codec is experimental and is thus avoided in favor of non experimental - * encoders - */ -#define AV_CODEC_CAP_EXPERIMENTAL (1 << 9) -/** - * Codec should fill in channel configuration and samplerate instead of container - */ -#define AV_CODEC_CAP_CHANNEL_CONF (1 << 10) -/** - * Codec supports frame-level multithreading. - */ -#define AV_CODEC_CAP_FRAME_THREADS (1 << 12) -/** - * Codec supports slice-based (or partition-based) multithreading. - */ -#define AV_CODEC_CAP_SLICE_THREADS (1 << 13) -/** - * Codec supports changed parameters at any point. - */ -#define AV_CODEC_CAP_PARAM_CHANGE (1 << 14) -/** - * Codec supports multithreading through a method other than slice- or - * frame-level multithreading. Typically this marks wrappers around - * multithreading-capable external libraries. - */ -#define AV_CODEC_CAP_OTHER_THREADS (1 << 15) -/** - * Audio encoder supports receiving a different number of samples in each call. - */ -#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16) -/** - * Decoder is not a preferred choice for probing. - * This indicates that the decoder is not a good choice for probing. - * It could for example be an expensive to spin up hardware decoder, - * or it could simply not provide a lot of useful information about - * the stream. - * A decoder marked with this flag should only be used as last resort - * choice for probing. - */ -#define AV_CODEC_CAP_AVOID_PROBING (1 << 17) - -/** - * Codec is backed by a hardware implementation. Typically used to - * identify a non-hwaccel hardware decoder. For information about hwaccels, use - * avcodec_get_hw_config() instead. - */ -#define AV_CODEC_CAP_HARDWARE (1 << 18) - -/** - * Codec is potentially backed by a hardware implementation, but not - * necessarily. This is used instead of AV_CODEC_CAP_HARDWARE, if the - * implementation provides some sort of internal fallback. - */ -#define AV_CODEC_CAP_HYBRID (1 << 19) - -/** - * This encoder can reorder user opaque values from input AVFrames and return - * them with corresponding output packets. - * @see AV_CODEC_FLAG_COPY_OPAQUE - */ -#define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE (1 << 20) - -/** - * This encoder can be flushed using avcodec_flush_buffers(). If this flag is - * not set, the encoder must be closed and reopened to ensure that no frames - * remain pending. - */ -#define AV_CODEC_CAP_ENCODER_FLUSH (1 << 21) - -/** - * The encoder is able to output reconstructed frame data, i.e. raw frames that - * would be produced by decoding the encoded bitstream. - * - * Reconstructed frame output is enabled by the AV_CODEC_FLAG_RECON_FRAME flag. - */ -#define AV_CODEC_CAP_ENCODER_RECON_FRAME (1 << 22) - -/** - * AVProfile. - */ -typedef struct AVProfile { - int profile; - const char *name; ///< short name for the profile -} AVProfile; - -/** - * AVCodec. - */ -typedef struct AVCodec { - /** - * Name of the codec implementation. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - * This is the primary way to find a codec from the user perspective. - */ - const char *name; - /** - * Descriptive name for the codec, meant to be more human readable than name. - * You should use the NULL_IF_CONFIG_SMALL() macro to define it. - */ - const char *long_name; - enum AVMediaType type; - enum AVCodecID id; - /** - * Codec capabilities. - * see AV_CODEC_CAP_* - */ - int capabilities; - uint8_t max_lowres; ///< maximum value for lowres supported by the decoder - - /** - * Deprecated codec capabilities. - */ - attribute_deprecated - const AVRational *supported_framerates; ///< @deprecated use avcodec_get_supported_config() - attribute_deprecated - const enum AVPixelFormat *pix_fmts; ///< @deprecated use avcodec_get_supported_config() - attribute_deprecated - const int *supported_samplerates; ///< @deprecated use avcodec_get_supported_config() - attribute_deprecated - const enum AVSampleFormat *sample_fmts; ///< @deprecated use avcodec_get_supported_config() - - const AVClass *priv_class; ///< AVClass for the private context - const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {AV_PROFILE_UNKNOWN} - - /** - * Group name of the codec implementation. - * This is a short symbolic name of the wrapper backing this codec. A - * wrapper uses some kind of external implementation for the codec, such - * as an external library, or a codec implementation provided by the OS or - * the hardware. - * If this field is NULL, this is a builtin, libavcodec native codec. - * If non-NULL, this will be the suffix in AVCodec.name in most cases - * (usually AVCodec.name will be of the form "_"). - */ - const char *wrapper_name; - - /** - * Array of supported channel layouts, terminated with a zeroed layout. - * @deprecated use avcodec_get_supported_config() - */ - attribute_deprecated - const AVChannelLayout *ch_layouts; -} AVCodec; - -/** - * Iterate over all registered codecs. - * - * @param opaque a pointer where libavcodec will store the iteration state. Must - * point to NULL to start the iteration. - * - * @return the next registered codec or NULL when the iteration is - * finished - */ -const AVCodec *av_codec_iterate(void **opaque); - -/** - * Find a registered decoder with a matching codec ID. - * - * @param id AVCodecID of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -const AVCodec *avcodec_find_decoder(enum AVCodecID id); - -/** - * Find a registered decoder with the specified name. - * - * @param name name of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -const AVCodec *avcodec_find_decoder_by_name(const char *name); - -/** - * Find a registered encoder with a matching codec ID. - * - * @param id AVCodecID of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -const AVCodec *avcodec_find_encoder(enum AVCodecID id); - -/** - * Find a registered encoder with the specified name. - * - * @param name name of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -const AVCodec *avcodec_find_encoder_by_name(const char *name); -/** - * @return a non-zero number if codec is an encoder, zero otherwise - */ -int av_codec_is_encoder(const AVCodec *codec); - -/** - * @return a non-zero number if codec is a decoder, zero otherwise - */ -int av_codec_is_decoder(const AVCodec *codec); - -/** - * Return a name for the specified profile, if available. - * - * @param codec the codec that is searched for the given profile - * @param profile the profile value for which a name is requested - * @return A name for the profile if found, NULL otherwise. - */ -const char *av_get_profile_name(const AVCodec *codec, int profile); - -enum { - /** - * The codec supports this format via the hw_device_ctx interface. - * - * When selecting this format, AVCodecContext.hw_device_ctx should - * have been set to a device of the specified type before calling - * avcodec_open2(). - */ - AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX = 0x01, - /** - * The codec supports this format via the hw_frames_ctx interface. - * - * When selecting this format for a decoder, - * AVCodecContext.hw_frames_ctx should be set to a suitable frames - * context inside the get_format() callback. The frames context - * must have been created on a device of the specified type. - * - * When selecting this format for an encoder, - * AVCodecContext.hw_frames_ctx should be set to the context which - * will be used for the input frames before calling avcodec_open2(). - */ - AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX = 0x02, - /** - * The codec supports this format by some internal method. - * - * This format can be selected without any additional configuration - - * no device or frames context is required. - */ - AV_CODEC_HW_CONFIG_METHOD_INTERNAL = 0x04, - /** - * The codec supports this format by some ad-hoc method. - * - * Additional settings and/or function calls are required. See the - * codec-specific documentation for details. (Methods requiring - * this sort of configuration are deprecated and others should be - * used in preference.) - */ - AV_CODEC_HW_CONFIG_METHOD_AD_HOC = 0x08, -}; - -typedef struct AVCodecHWConfig { - /** - * For decoders, a hardware pixel format which that decoder may be - * able to decode to if suitable hardware is available. - * - * For encoders, a pixel format which the encoder may be able to - * accept. If set to AV_PIX_FMT_NONE, this applies to all pixel - * formats supported by the codec. - */ - enum AVPixelFormat pix_fmt; - /** - * Bit set of AV_CODEC_HW_CONFIG_METHOD_* flags, describing the possible - * setup methods which can be used with this configuration. - */ - int methods; - /** - * The device type associated with the configuration. - * - * Must be set for AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX and - * AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX, otherwise unused. - */ - enum AVHWDeviceType device_type; -} AVCodecHWConfig; - -/** - * Retrieve supported hardware configurations for a codec. - * - * Values of index from zero to some maximum return the indexed configuration - * descriptor; all other values return NULL. If the codec does not support - * any hardware configurations then it will always return NULL. - */ -const AVCodecHWConfig *avcodec_get_hw_config(const AVCodec *codec, int index); - -/** - * @} - */ - -#endif /* AVCODEC_CODEC_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_desc.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_desc.h deleted file mode 100644 index 1186433c90..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_desc.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Codec descriptors public API - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_CODEC_DESC_H -#define AVCODEC_CODEC_DESC_H - -#include "libavutil/avutil.h" - -#include "codec_id.h" - -/** - * @addtogroup lavc_core - * @{ - */ - -/** - * This struct describes the properties of a single codec described by an - * AVCodecID. - * @see avcodec_descriptor_get() - */ -typedef struct AVCodecDescriptor { - enum AVCodecID id; - enum AVMediaType type; - /** - * Name of the codec described by this descriptor. It is non-empty and - * unique for each codec descriptor. It should contain alphanumeric - * characters and '_' only. - */ - const char *name; - /** - * A more descriptive name for this codec. May be NULL. - */ - const char *long_name; - /** - * Codec properties, a combination of AV_CODEC_PROP_* flags. - */ - int props; - /** - * MIME type(s) associated with the codec. - * May be NULL; if not, a NULL-terminated array of MIME types. - * The first item is always non-NULL and is the preferred MIME type. - */ - const char *const *mime_types; - /** - * If non-NULL, an array of profiles recognized for this codec. - * Terminated with AV_PROFILE_UNKNOWN. - */ - const struct AVProfile *profiles; -} AVCodecDescriptor; - -/** - * Codec uses only intra compression. - * Video and audio codecs only. - */ -#define AV_CODEC_PROP_INTRA_ONLY (1 << 0) -/** - * Codec supports lossy compression. Audio and video codecs only. - * @note a codec may support both lossy and lossless - * compression modes - */ -#define AV_CODEC_PROP_LOSSY (1 << 1) -/** - * Codec supports lossless compression. Audio and video codecs only. - */ -#define AV_CODEC_PROP_LOSSLESS (1 << 2) -/** - * Codec supports frame reordering. That is, the coded order (the order in which - * the encoded packets are output by the encoders / stored / input to the - * decoders) may be different from the presentation order of the corresponding - * frames. - * - * For codecs that do not have this property set, PTS and DTS should always be - * equal. - */ -#define AV_CODEC_PROP_REORDER (1 << 3) - -/** - * Video codec supports separate coding of fields in interlaced frames. - */ -#define AV_CODEC_PROP_FIELDS (1 << 4) - -/** - * Video codec contains enhancement information meant to be applied to other - * existing frames, and can't generate usable image data on its own. - * A standalone decoder is unlikely to be available for it and should not - * be expected. - */ -#define AV_CODEC_PROP_ENHANCEMENT (1 << 5) - -/** - * Subtitle codec is bitmap based - * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field. - */ -#define AV_CODEC_PROP_BITMAP_SUB (1 << 16) -/** - * Subtitle codec is text based. - * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field. - */ -#define AV_CODEC_PROP_TEXT_SUB (1 << 17) - -/** - * @return descriptor for given codec ID or NULL if no descriptor exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id); - -/** - * Iterate over all codec descriptors known to libavcodec. - * - * @param prev previous descriptor. NULL to get the first descriptor. - * - * @return next descriptor or NULL after the last descriptor - */ -const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev); - -/** - * @return codec descriptor with the given name or NULL if no such descriptor - * exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name); - -/** - * @} - */ - -#endif // AVCODEC_CODEC_DESC_H diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_id.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_id.h deleted file mode 100644 index 6529f0a6bc..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_id.h +++ /dev/null @@ -1,693 +0,0 @@ -/* - * Codec IDs - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_CODEC_ID_H -#define AVCODEC_CODEC_ID_H - -#include "libavutil/avutil.h" -#include "libavutil/samplefmt.h" - -#include "version_major.h" - -/** - * @addtogroup lavc_core - * @{ - */ - -/** - * Identify the syntax and semantics of the bitstream. - * The principle is roughly: - * Two decoders with the same ID can decode the same streams. - * Two encoders with the same ID can encode compatible streams. - * There may be slight deviations from the principle due to implementation - * details. - * - * If you add a codec ID to this list, add it so that - * 1. no value of an existing codec ID changes (that would break ABI), - * 2. it is as close as possible to similar codecs - * - * After adding new codec IDs, do not forget to add an entry to the codec - * descriptor list and bump libavcodec minor version. - */ -enum AVCodecID { - AV_CODEC_ID_NONE, - - /* video codecs */ - AV_CODEC_ID_MPEG1VIDEO, - AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding - AV_CODEC_ID_H261, - AV_CODEC_ID_H263, - AV_CODEC_ID_RV10, - AV_CODEC_ID_RV20, - AV_CODEC_ID_MJPEG, - AV_CODEC_ID_MJPEGB, - AV_CODEC_ID_LJPEG, - AV_CODEC_ID_SP5X, - AV_CODEC_ID_JPEGLS, - AV_CODEC_ID_MPEG4, - AV_CODEC_ID_RAWVIDEO, - AV_CODEC_ID_MSMPEG4V1, - AV_CODEC_ID_MSMPEG4V2, - AV_CODEC_ID_MSMPEG4V3, - AV_CODEC_ID_WMV1, - AV_CODEC_ID_WMV2, - AV_CODEC_ID_H263P, - AV_CODEC_ID_H263I, - AV_CODEC_ID_FLV1, - AV_CODEC_ID_SVQ1, - AV_CODEC_ID_SVQ3, - AV_CODEC_ID_DVVIDEO, - AV_CODEC_ID_HUFFYUV, - AV_CODEC_ID_CYUV, - AV_CODEC_ID_H264, - AV_CODEC_ID_INDEO3, - AV_CODEC_ID_VP3, - AV_CODEC_ID_THEORA, - AV_CODEC_ID_ASV1, - AV_CODEC_ID_ASV2, - AV_CODEC_ID_FFV1, - AV_CODEC_ID_4XM, - AV_CODEC_ID_VCR1, - AV_CODEC_ID_CLJR, - AV_CODEC_ID_MDEC, - AV_CODEC_ID_ROQ, - AV_CODEC_ID_INTERPLAY_VIDEO, - AV_CODEC_ID_XAN_WC3, - AV_CODEC_ID_XAN_WC4, - AV_CODEC_ID_RPZA, - AV_CODEC_ID_CINEPAK, - AV_CODEC_ID_WS_VQA, - AV_CODEC_ID_MSRLE, - AV_CODEC_ID_MSVIDEO1, - AV_CODEC_ID_IDCIN, - AV_CODEC_ID_8BPS, - AV_CODEC_ID_SMC, - AV_CODEC_ID_FLIC, - AV_CODEC_ID_TRUEMOTION1, - AV_CODEC_ID_VMDVIDEO, - AV_CODEC_ID_MSZH, - AV_CODEC_ID_ZLIB, - AV_CODEC_ID_QTRLE, - AV_CODEC_ID_TSCC, - AV_CODEC_ID_ULTI, - AV_CODEC_ID_QDRAW, - AV_CODEC_ID_VIXL, - AV_CODEC_ID_QPEG, - AV_CODEC_ID_PNG, - AV_CODEC_ID_PPM, - AV_CODEC_ID_PBM, - AV_CODEC_ID_PGM, - AV_CODEC_ID_PGMYUV, - AV_CODEC_ID_PAM, - AV_CODEC_ID_FFVHUFF, - AV_CODEC_ID_RV30, - AV_CODEC_ID_RV40, - AV_CODEC_ID_VC1, - AV_CODEC_ID_WMV3, - AV_CODEC_ID_LOCO, - AV_CODEC_ID_WNV1, - AV_CODEC_ID_AASC, - AV_CODEC_ID_INDEO2, - AV_CODEC_ID_FRAPS, - AV_CODEC_ID_TRUEMOTION2, - AV_CODEC_ID_BMP, - AV_CODEC_ID_CSCD, - AV_CODEC_ID_MMVIDEO, - AV_CODEC_ID_ZMBV, - AV_CODEC_ID_AVS, - AV_CODEC_ID_SMACKVIDEO, - AV_CODEC_ID_NUV, - AV_CODEC_ID_KMVC, - AV_CODEC_ID_FLASHSV, - AV_CODEC_ID_CAVS, - AV_CODEC_ID_JPEG2000, - AV_CODEC_ID_VMNC, - AV_CODEC_ID_VP5, - AV_CODEC_ID_VP6, - AV_CODEC_ID_VP6F, - AV_CODEC_ID_TARGA, - AV_CODEC_ID_DSICINVIDEO, - AV_CODEC_ID_TIERTEXSEQVIDEO, - AV_CODEC_ID_TIFF, - AV_CODEC_ID_GIF, - AV_CODEC_ID_DXA, - AV_CODEC_ID_DNXHD, - AV_CODEC_ID_THP, - AV_CODEC_ID_SGI, - AV_CODEC_ID_C93, - AV_CODEC_ID_BETHSOFTVID, - AV_CODEC_ID_PTX, - AV_CODEC_ID_TXD, - AV_CODEC_ID_VP6A, - AV_CODEC_ID_AMV, - AV_CODEC_ID_VB, - AV_CODEC_ID_PCX, - AV_CODEC_ID_SUNRAST, - AV_CODEC_ID_INDEO4, - AV_CODEC_ID_INDEO5, - AV_CODEC_ID_MIMIC, - AV_CODEC_ID_RL2, - AV_CODEC_ID_ESCAPE124, - AV_CODEC_ID_DIRAC, - AV_CODEC_ID_BFI, - AV_CODEC_ID_CMV, - AV_CODEC_ID_MOTIONPIXELS, - AV_CODEC_ID_TGV, - AV_CODEC_ID_TGQ, - AV_CODEC_ID_TQI, - AV_CODEC_ID_AURA, - AV_CODEC_ID_AURA2, - AV_CODEC_ID_V210X, - AV_CODEC_ID_TMV, - AV_CODEC_ID_V210, - AV_CODEC_ID_DPX, - AV_CODEC_ID_MAD, - AV_CODEC_ID_FRWU, - AV_CODEC_ID_FLASHSV2, - AV_CODEC_ID_CDGRAPHICS, - AV_CODEC_ID_R210, - AV_CODEC_ID_ANM, - AV_CODEC_ID_BINKVIDEO, - AV_CODEC_ID_IFF_ILBM, -#define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM - AV_CODEC_ID_KGV1, - AV_CODEC_ID_YOP, - AV_CODEC_ID_VP8, - AV_CODEC_ID_PICTOR, - AV_CODEC_ID_ANSI, - AV_CODEC_ID_A64_MULTI, - AV_CODEC_ID_A64_MULTI5, - AV_CODEC_ID_R10K, - AV_CODEC_ID_MXPEG, - AV_CODEC_ID_LAGARITH, - AV_CODEC_ID_PRORES, - AV_CODEC_ID_JV, - AV_CODEC_ID_DFA, - AV_CODEC_ID_WMV3IMAGE, - AV_CODEC_ID_VC1IMAGE, - AV_CODEC_ID_UTVIDEO, - AV_CODEC_ID_BMV_VIDEO, - AV_CODEC_ID_VBLE, - AV_CODEC_ID_DXTORY, -#if FF_API_V408_CODECID - AV_CODEC_ID_V410, -#endif - AV_CODEC_ID_XWD, - AV_CODEC_ID_CDXL, - AV_CODEC_ID_XBM, - AV_CODEC_ID_ZEROCODEC, - AV_CODEC_ID_MSS1, - AV_CODEC_ID_MSA1, - AV_CODEC_ID_TSCC2, - AV_CODEC_ID_MTS2, - AV_CODEC_ID_CLLC, - AV_CODEC_ID_MSS2, - AV_CODEC_ID_VP9, - AV_CODEC_ID_AIC, - AV_CODEC_ID_ESCAPE130, - AV_CODEC_ID_G2M, - AV_CODEC_ID_WEBP, - AV_CODEC_ID_HNM4_VIDEO, - AV_CODEC_ID_HEVC, -#define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC - AV_CODEC_ID_FIC, - AV_CODEC_ID_ALIAS_PIX, - AV_CODEC_ID_BRENDER_PIX, - AV_CODEC_ID_PAF_VIDEO, - AV_CODEC_ID_EXR, - AV_CODEC_ID_VP7, - AV_CODEC_ID_SANM, - AV_CODEC_ID_SGIRLE, - AV_CODEC_ID_MVC1, - AV_CODEC_ID_MVC2, - AV_CODEC_ID_HQX, - AV_CODEC_ID_TDSC, - AV_CODEC_ID_HQ_HQA, - AV_CODEC_ID_HAP, - AV_CODEC_ID_DDS, - AV_CODEC_ID_DXV, - AV_CODEC_ID_SCREENPRESSO, - AV_CODEC_ID_RSCC, - AV_CODEC_ID_AVS2, - AV_CODEC_ID_PGX, - AV_CODEC_ID_AVS3, - AV_CODEC_ID_MSP2, - AV_CODEC_ID_VVC, -#define AV_CODEC_ID_H266 AV_CODEC_ID_VVC - AV_CODEC_ID_Y41P, - AV_CODEC_ID_AVRP, - AV_CODEC_ID_012V, - AV_CODEC_ID_AVUI, - AV_CODEC_ID_TARGA_Y216, -#if FF_API_V408_CODECID - AV_CODEC_ID_V308, - AV_CODEC_ID_V408, -#endif - AV_CODEC_ID_YUV4, - AV_CODEC_ID_AVRN, - AV_CODEC_ID_CPIA, - AV_CODEC_ID_XFACE, - AV_CODEC_ID_SNOW, - AV_CODEC_ID_SMVJPEG, - AV_CODEC_ID_APNG, - AV_CODEC_ID_DAALA, - AV_CODEC_ID_CFHD, - AV_CODEC_ID_TRUEMOTION2RT, - AV_CODEC_ID_M101, - AV_CODEC_ID_MAGICYUV, - AV_CODEC_ID_SHEERVIDEO, - AV_CODEC_ID_YLC, - AV_CODEC_ID_PSD, - AV_CODEC_ID_PIXLET, - AV_CODEC_ID_SPEEDHQ, - AV_CODEC_ID_FMVC, - AV_CODEC_ID_SCPR, - AV_CODEC_ID_CLEARVIDEO, - AV_CODEC_ID_XPM, - AV_CODEC_ID_AV1, - AV_CODEC_ID_BITPACKED, - AV_CODEC_ID_MSCC, - AV_CODEC_ID_SRGC, - AV_CODEC_ID_SVG, - AV_CODEC_ID_GDV, - AV_CODEC_ID_FITS, - AV_CODEC_ID_IMM4, - AV_CODEC_ID_PROSUMER, - AV_CODEC_ID_MWSC, - AV_CODEC_ID_WCMV, - AV_CODEC_ID_RASC, - AV_CODEC_ID_HYMT, - AV_CODEC_ID_ARBC, - AV_CODEC_ID_AGM, - AV_CODEC_ID_LSCR, - AV_CODEC_ID_VP4, - AV_CODEC_ID_IMM5, - AV_CODEC_ID_MVDV, - AV_CODEC_ID_MVHA, - AV_CODEC_ID_CDTOONS, - AV_CODEC_ID_MV30, - AV_CODEC_ID_NOTCHLC, - AV_CODEC_ID_PFM, - AV_CODEC_ID_MOBICLIP, - AV_CODEC_ID_PHOTOCD, - AV_CODEC_ID_IPU, - AV_CODEC_ID_ARGO, - AV_CODEC_ID_CRI, - AV_CODEC_ID_SIMBIOSIS_IMX, - AV_CODEC_ID_SGA_VIDEO, - AV_CODEC_ID_GEM, - AV_CODEC_ID_VBN, - AV_CODEC_ID_JPEGXL, - AV_CODEC_ID_QOI, - AV_CODEC_ID_PHM, - AV_CODEC_ID_RADIANCE_HDR, - AV_CODEC_ID_WBMP, - AV_CODEC_ID_MEDIA100, - AV_CODEC_ID_VQC, - AV_CODEC_ID_PDV, - AV_CODEC_ID_EVC, - AV_CODEC_ID_RTV1, - AV_CODEC_ID_VMIX, - AV_CODEC_ID_LEAD, - AV_CODEC_ID_DNXUC, - AV_CODEC_ID_RV60, - AV_CODEC_ID_JPEGXL_ANIM, - AV_CODEC_ID_APV, - AV_CODEC_ID_PRORES_RAW, - AV_CODEC_ID_JPEGXS, - - /* various PCM "codecs" */ - AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs - AV_CODEC_ID_PCM_S16LE = 0x10000, - AV_CODEC_ID_PCM_S16BE, - AV_CODEC_ID_PCM_U16LE, - AV_CODEC_ID_PCM_U16BE, - AV_CODEC_ID_PCM_S8, - AV_CODEC_ID_PCM_U8, - AV_CODEC_ID_PCM_MULAW, - AV_CODEC_ID_PCM_ALAW, - AV_CODEC_ID_PCM_S32LE, - AV_CODEC_ID_PCM_S32BE, - AV_CODEC_ID_PCM_U32LE, - AV_CODEC_ID_PCM_U32BE, - AV_CODEC_ID_PCM_S24LE, - AV_CODEC_ID_PCM_S24BE, - AV_CODEC_ID_PCM_U24LE, - AV_CODEC_ID_PCM_U24BE, - AV_CODEC_ID_PCM_S24DAUD, - AV_CODEC_ID_PCM_ZORK, - AV_CODEC_ID_PCM_S16LE_PLANAR, - AV_CODEC_ID_PCM_DVD, - AV_CODEC_ID_PCM_F32BE, - AV_CODEC_ID_PCM_F32LE, - AV_CODEC_ID_PCM_F64BE, - AV_CODEC_ID_PCM_F64LE, - AV_CODEC_ID_PCM_BLURAY, - AV_CODEC_ID_PCM_LXF, - AV_CODEC_ID_S302M, - AV_CODEC_ID_PCM_S8_PLANAR, - AV_CODEC_ID_PCM_S24LE_PLANAR, - AV_CODEC_ID_PCM_S32LE_PLANAR, - AV_CODEC_ID_PCM_S16BE_PLANAR, - AV_CODEC_ID_PCM_S64LE, - AV_CODEC_ID_PCM_S64BE, - AV_CODEC_ID_PCM_F16LE, - AV_CODEC_ID_PCM_F24LE, - AV_CODEC_ID_PCM_VIDC, - AV_CODEC_ID_PCM_SGA, - - /* various ADPCM codecs */ - AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, - AV_CODEC_ID_ADPCM_IMA_WAV, - AV_CODEC_ID_ADPCM_IMA_DK3, - AV_CODEC_ID_ADPCM_IMA_DK4, - AV_CODEC_ID_ADPCM_IMA_WS, - AV_CODEC_ID_ADPCM_IMA_SMJPEG, - AV_CODEC_ID_ADPCM_MS, - AV_CODEC_ID_ADPCM_4XM, - AV_CODEC_ID_ADPCM_XA, - AV_CODEC_ID_ADPCM_ADX, - AV_CODEC_ID_ADPCM_EA, - AV_CODEC_ID_ADPCM_G726, - AV_CODEC_ID_ADPCM_CT, - AV_CODEC_ID_ADPCM_SWF, - AV_CODEC_ID_ADPCM_YAMAHA, - AV_CODEC_ID_ADPCM_SBPRO_4, - AV_CODEC_ID_ADPCM_SBPRO_3, - AV_CODEC_ID_ADPCM_SBPRO_2, - AV_CODEC_ID_ADPCM_THP, - AV_CODEC_ID_ADPCM_IMA_AMV, - AV_CODEC_ID_ADPCM_EA_R1, - AV_CODEC_ID_ADPCM_EA_R3, - AV_CODEC_ID_ADPCM_EA_R2, - AV_CODEC_ID_ADPCM_IMA_EA_SEAD, - AV_CODEC_ID_ADPCM_IMA_EA_EACS, - AV_CODEC_ID_ADPCM_EA_XAS, - AV_CODEC_ID_ADPCM_EA_MAXIS_XA, - AV_CODEC_ID_ADPCM_IMA_ISS, - AV_CODEC_ID_ADPCM_G722, - AV_CODEC_ID_ADPCM_IMA_APC, - AV_CODEC_ID_ADPCM_VIMA, - AV_CODEC_ID_ADPCM_AFC, - AV_CODEC_ID_ADPCM_IMA_OKI, - AV_CODEC_ID_ADPCM_DTK, - AV_CODEC_ID_ADPCM_IMA_RAD, - AV_CODEC_ID_ADPCM_G726LE, - AV_CODEC_ID_ADPCM_THP_LE, - AV_CODEC_ID_ADPCM_PSX, - AV_CODEC_ID_ADPCM_AICA, - AV_CODEC_ID_ADPCM_IMA_DAT4, - AV_CODEC_ID_ADPCM_MTAF, - AV_CODEC_ID_ADPCM_AGM, - AV_CODEC_ID_ADPCM_ARGO, - AV_CODEC_ID_ADPCM_IMA_SSI, - AV_CODEC_ID_ADPCM_ZORK, - AV_CODEC_ID_ADPCM_IMA_APM, - AV_CODEC_ID_ADPCM_IMA_ALP, - AV_CODEC_ID_ADPCM_IMA_MTF, - AV_CODEC_ID_ADPCM_IMA_CUNNING, - AV_CODEC_ID_ADPCM_IMA_MOFLEX, - AV_CODEC_ID_ADPCM_IMA_ACORN, - AV_CODEC_ID_ADPCM_XMD, - AV_CODEC_ID_ADPCM_IMA_XBOX, - AV_CODEC_ID_ADPCM_SANYO, - AV_CODEC_ID_ADPCM_IMA_HVQM4, - AV_CODEC_ID_ADPCM_IMA_PDA, - AV_CODEC_ID_ADPCM_N64, - AV_CODEC_ID_ADPCM_IMA_HVQM2, - AV_CODEC_ID_ADPCM_IMA_MAGIX, - AV_CODEC_ID_ADPCM_PSXC, - AV_CODEC_ID_ADPCM_CIRCUS, - AV_CODEC_ID_ADPCM_IMA_ESCAPE, - - /* AMR */ - AV_CODEC_ID_AMR_NB = 0x12000, - AV_CODEC_ID_AMR_WB, - - /* RealAudio codecs*/ - AV_CODEC_ID_RA_144 = 0x13000, - AV_CODEC_ID_RA_288, - - /* various DPCM codecs */ - AV_CODEC_ID_ROQ_DPCM = 0x14000, - AV_CODEC_ID_INTERPLAY_DPCM, - AV_CODEC_ID_XAN_DPCM, - AV_CODEC_ID_SOL_DPCM, - AV_CODEC_ID_SDX2_DPCM, - AV_CODEC_ID_GREMLIN_DPCM, - AV_CODEC_ID_DERF_DPCM, - AV_CODEC_ID_WADY_DPCM, - AV_CODEC_ID_CBD2_DPCM, - - /* audio codecs */ - AV_CODEC_ID_MP2 = 0x15000, - AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 - AV_CODEC_ID_AAC, - AV_CODEC_ID_AC3, - AV_CODEC_ID_DTS, - AV_CODEC_ID_VORBIS, - AV_CODEC_ID_DVAUDIO, - AV_CODEC_ID_WMAV1, - AV_CODEC_ID_WMAV2, - AV_CODEC_ID_MACE3, - AV_CODEC_ID_MACE6, - AV_CODEC_ID_VMDAUDIO, - AV_CODEC_ID_FLAC, - AV_CODEC_ID_MP3ADU, - AV_CODEC_ID_MP3ON4, - AV_CODEC_ID_SHORTEN, - AV_CODEC_ID_ALAC, - AV_CODEC_ID_WESTWOOD_SND1, - AV_CODEC_ID_GSM, ///< as in Berlin toast format - AV_CODEC_ID_QDM2, - AV_CODEC_ID_COOK, - AV_CODEC_ID_TRUESPEECH, - AV_CODEC_ID_TTA, - AV_CODEC_ID_SMACKAUDIO, - AV_CODEC_ID_QCELP, - AV_CODEC_ID_WAVPACK, - AV_CODEC_ID_DSICINAUDIO, - AV_CODEC_ID_IMC, - AV_CODEC_ID_MUSEPACK7, - AV_CODEC_ID_MLP, - AV_CODEC_ID_GSM_MS, /* as found in WAV */ - AV_CODEC_ID_ATRAC3, - AV_CODEC_ID_APE, - AV_CODEC_ID_NELLYMOSER, - AV_CODEC_ID_MUSEPACK8, - AV_CODEC_ID_SPEEX, - AV_CODEC_ID_WMAVOICE, - AV_CODEC_ID_WMAPRO, - AV_CODEC_ID_WMALOSSLESS, - AV_CODEC_ID_ATRAC3P, - AV_CODEC_ID_EAC3, - AV_CODEC_ID_SIPR, - AV_CODEC_ID_MP1, - AV_CODEC_ID_TWINVQ, - AV_CODEC_ID_TRUEHD, - AV_CODEC_ID_MP4ALS, - AV_CODEC_ID_ATRAC1, - AV_CODEC_ID_BINKAUDIO_RDFT, - AV_CODEC_ID_BINKAUDIO_DCT, - AV_CODEC_ID_AAC_LATM, - AV_CODEC_ID_QDMC, - AV_CODEC_ID_CELT, - AV_CODEC_ID_G723_1, - AV_CODEC_ID_G729, - AV_CODEC_ID_8SVX_EXP, - AV_CODEC_ID_8SVX_FIB, - AV_CODEC_ID_BMV_AUDIO, - AV_CODEC_ID_RALF, - AV_CODEC_ID_IAC, - AV_CODEC_ID_ILBC, - AV_CODEC_ID_OPUS, - AV_CODEC_ID_COMFORT_NOISE, - AV_CODEC_ID_TAK, - AV_CODEC_ID_METASOUND, - AV_CODEC_ID_PAF_AUDIO, - AV_CODEC_ID_ON2AVC, - AV_CODEC_ID_DSS_SP, - AV_CODEC_ID_CODEC2, - AV_CODEC_ID_FFWAVESYNTH, - AV_CODEC_ID_SONIC, - AV_CODEC_ID_SONIC_LS, - AV_CODEC_ID_EVRC, - AV_CODEC_ID_SMV, - AV_CODEC_ID_DSD_LSBF, - AV_CODEC_ID_DSD_MSBF, - AV_CODEC_ID_DSD_LSBF_PLANAR, - AV_CODEC_ID_DSD_MSBF_PLANAR, - AV_CODEC_ID_4GV, - AV_CODEC_ID_INTERPLAY_ACM, - AV_CODEC_ID_XMA1, - AV_CODEC_ID_XMA2, - AV_CODEC_ID_DST, - AV_CODEC_ID_ATRAC3AL, - AV_CODEC_ID_ATRAC3PAL, - AV_CODEC_ID_DOLBY_E, - AV_CODEC_ID_APTX, - AV_CODEC_ID_APTX_HD, - AV_CODEC_ID_SBC, - AV_CODEC_ID_ATRAC9, - AV_CODEC_ID_HCOM, - AV_CODEC_ID_ACELP_KELVIN, - AV_CODEC_ID_MPEGH_3D_AUDIO, - AV_CODEC_ID_SIREN, - AV_CODEC_ID_HCA, - AV_CODEC_ID_FASTAUDIO, - AV_CODEC_ID_MSNSIREN, - AV_CODEC_ID_DFPWM, - AV_CODEC_ID_BONK, - AV_CODEC_ID_MISC4, - AV_CODEC_ID_APAC, - AV_CODEC_ID_FTR, - AV_CODEC_ID_WAVARC, - AV_CODEC_ID_RKA, - AV_CODEC_ID_AC4, - AV_CODEC_ID_OSQ, - AV_CODEC_ID_QOA, - AV_CODEC_ID_LC3, - AV_CODEC_ID_G728, - AV_CODEC_ID_AHX, - - /* subtitle codecs */ - AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. - AV_CODEC_ID_DVD_SUBTITLE = 0x17000, - AV_CODEC_ID_DVB_SUBTITLE, - AV_CODEC_ID_TEXT, ///< raw UTF-8 text - AV_CODEC_ID_XSUB, - AV_CODEC_ID_SSA, - AV_CODEC_ID_MOV_TEXT, - AV_CODEC_ID_HDMV_PGS_SUBTITLE, - AV_CODEC_ID_DVB_TELETEXT, - AV_CODEC_ID_SRT, - AV_CODEC_ID_MICRODVD, - AV_CODEC_ID_EIA_608, - AV_CODEC_ID_JACOSUB, - AV_CODEC_ID_SAMI, - AV_CODEC_ID_REALTEXT, - AV_CODEC_ID_STL, - AV_CODEC_ID_SUBVIEWER1, - AV_CODEC_ID_SUBVIEWER, - AV_CODEC_ID_SUBRIP, - AV_CODEC_ID_WEBVTT, - AV_CODEC_ID_MPL2, - AV_CODEC_ID_VPLAYER, - AV_CODEC_ID_PJS, - AV_CODEC_ID_ASS, - AV_CODEC_ID_HDMV_TEXT_SUBTITLE, - AV_CODEC_ID_TTML, - AV_CODEC_ID_ARIB_CAPTION, - AV_CODEC_ID_IVTV_VBI, - - /* other specific kind of codecs (generally used for attachments) */ - AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. - AV_CODEC_ID_TTF = 0x18000, - - AV_CODEC_ID_SCTE_35, ///< Contain timestamp estimated through PCR of program stream. - AV_CODEC_ID_EPG, - AV_CODEC_ID_BINTEXT, - AV_CODEC_ID_XBIN, - AV_CODEC_ID_IDF, - AV_CODEC_ID_OTF, - AV_CODEC_ID_SMPTE_KLV, - AV_CODEC_ID_DVD_NAV, - AV_CODEC_ID_TIMED_ID3, - AV_CODEC_ID_BIN_DATA, - AV_CODEC_ID_SMPTE_2038, - AV_CODEC_ID_LCEVC, - AV_CODEC_ID_SMPTE_436M_ANC, - - - AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it - - AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS - * stream (only used by libavformat) */ - AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems - * stream (only used by libavformat) */ - AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. - AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames wrapped in AVPacket - /** - * Dummy null video codec, useful mainly for development and debugging. - * Null encoder/decoder discard all input and never return any output. - */ - AV_CODEC_ID_VNULL, - /** - * Dummy null audio codec, useful mainly for development and debugging. - * Null encoder/decoder discard all input and never return any output. - */ - AV_CODEC_ID_ANULL, -}; - -/** - * Get the type of the given codec. - */ -enum AVMediaType avcodec_get_type(enum AVCodecID codec_id); - -/** - * Get the name of a codec. - * @return a static string identifying the codec; never NULL - */ -const char *avcodec_get_name(enum AVCodecID id); - -/** - * Return codec bits per sample. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return codec bits per sample. - * Only return non-zero if the bits per sample is exactly correct, not an - * approximation. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_exact_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return a name for the specified profile, if available. - * - * @param codec_id the ID of the codec to which the requested profile belongs - * @param profile the profile value for which a name is requested - * @return A name for the profile if found, NULL otherwise. - * - * @note unlike av_get_profile_name(), which searches a list of profiles - * supported by a specific decoder or encoder implementation, this - * function searches the list of profiles from the AVCodecDescriptor - */ -const char *avcodec_profile_name(enum AVCodecID codec_id, int profile); - -/** - * Return the PCM codec associated with a sample format. - * @param be endianness, 0 for little, 1 for big, - * -1 (or anything else) for native - * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE - */ -enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be); - -/** - * @} - */ - -#endif // AVCODEC_CODEC_ID_H diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_par.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_par.h deleted file mode 100644 index 2697605d4d..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/codec_par.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Codec parameters public API - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_CODEC_PAR_H -#define AVCODEC_CODEC_PAR_H - -#include - -#include "libavutil/avutil.h" -#include "libavutil/channel_layout.h" -#include "libavutil/rational.h" -#include "libavutil/pixfmt.h" - -#include "codec_id.h" -#include "defs.h" -#include "packet.h" - -/** - * @addtogroup lavc_core - * @{ - */ - -/** - * This struct describes the properties of an encoded stream. - * - * sizeof(AVCodecParameters) is not a part of the public ABI, this struct must - * be allocated with avcodec_parameters_alloc() and freed with - * avcodec_parameters_free(). - */ -typedef struct AVCodecParameters { - /** - * General type of the encoded data. - */ - enum AVMediaType codec_type; - /** - * Specific type of the encoded data (the codec used). - */ - enum AVCodecID codec_id; - /** - * Additional information about the codec (corresponds to the AVI FOURCC). - */ - uint32_t codec_tag; - - /** - * Extra binary data needed for initializing the decoder, codec-dependent. - * - * Must be allocated with av_malloc() and will be freed by - * avcodec_parameters_free(). The allocated size of extradata must be at - * least extradata_size + AV_INPUT_BUFFER_PADDING_SIZE, with the padding - * bytes zeroed. - */ - uint8_t *extradata; - /** - * Size of the extradata content in bytes. - */ - int extradata_size; - - /** - * Additional data associated with the entire stream. - * - * Should be allocated with av_packet_side_data_new() or - * av_packet_side_data_add(), and will be freed by avcodec_parameters_free(). - */ - AVPacketSideData *coded_side_data; - - /** - * Amount of entries in @ref coded_side_data. - */ - int nb_coded_side_data; - - /** - * - video: the pixel format, the value corresponds to enum AVPixelFormat. - * - audio: the sample format, the value corresponds to enum AVSampleFormat. - */ - int format; - - /** - * The average bitrate of the encoded data (in bits per second). - */ - int64_t bit_rate; - - /** - * The number of bits per sample in the codedwords. - * - * This is basically the bitrate per sample. It is mandatory for a bunch of - * formats to actually decode them. It's the number of bits for one sample in - * the actual coded bitstream. - * - * This could be for example 4 for ADPCM - * For PCM formats this matches bits_per_raw_sample - * Can be 0 - */ - int bits_per_coded_sample; - - /** - * This is the number of valid bits in each output sample. If the - * sample format has more bits, the least significant bits are additional - * padding bits, which are always 0. Use right shifts to reduce the sample - * to its actual size. For example, audio formats with 24 bit samples will - * have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32. - * To get the original sample use "(int32_t)sample >> 8"." - * - * For ADPCM this might be 12 or 16 or similar - * Can be 0 - */ - int bits_per_raw_sample; - - /** - * Codec-specific bitstream restrictions that the stream conforms to. - */ - int profile; - int level; - - /** - * Video only. The dimensions of the video frame in pixels. - */ - int width; - int height; - - /** - * Video only. The aspect ratio (width / height) which a single pixel - * should have when displayed. - * - * When the aspect ratio is unknown / undefined, the numerator should be - * set to 0 (the denominator may have any value). - */ - AVRational sample_aspect_ratio; - - /** - * Video only. Number of frames per second, for streams with constant frame - * durations. Should be set to { 0, 1 } when some frames have differing - * durations or if the value is not known. - * - * @note This field corresponds to values that are stored in codec-level - * headers and is typically overridden by container/transport-layer - * timestamps, when available. It should thus be used only as a last resort, - * when no higher-level timing information is available. - */ - AVRational framerate; - - /** - * Video only. The order of the fields in interlaced video. - */ - enum AVFieldOrder field_order; - - /** - * Video only. Additional colorspace characteristics. - */ - enum AVColorRange color_range; - enum AVColorPrimaries color_primaries; - enum AVColorTransferCharacteristic color_trc; - enum AVColorSpace color_space; - enum AVChromaLocation chroma_location; - - /** - * Video only. Number of delayed frames. - */ - int video_delay; - - /** - * Audio only. The channel layout and number of channels. - */ - AVChannelLayout ch_layout; - /** - * Audio only. The number of audio samples per second. - */ - int sample_rate; - /** - * Audio only. The number of bytes per coded audio frame, required by some - * formats. - * - * Corresponds to nBlockAlign in WAVEFORMATEX. - */ - int block_align; - /** - * Audio only. Audio frame size, if known. Required by some formats to be static. - */ - int frame_size; - - /** - * Audio only. The amount of padding (in samples) inserted by the encoder at - * the beginning of the audio. I.e. this number of leading decoded samples - * must be discarded by the caller to get the original audio without leading - * padding. - */ - int initial_padding; - /** - * Audio only. The amount of padding (in samples) appended by the encoder to - * the end of the audio. I.e. this number of decoded samples must be - * discarded by the caller from the end of the stream to get the original - * audio without any trailing padding. - */ - int trailing_padding; - /** - * Audio only. Number of samples to skip after a discontinuity. - */ - int seek_preroll; - - /** - * Video with alpha channel only. Alpha channel handling - */ - enum AVAlphaMode alpha_mode; -} AVCodecParameters; - -/** - * Allocate a new AVCodecParameters and set its fields to default values - * (unknown/invalid/0). The returned struct must be freed with - * avcodec_parameters_free(). - */ -AVCodecParameters *avcodec_parameters_alloc(void); - -/** - * Free an AVCodecParameters instance and everything associated with it and - * write NULL to the supplied pointer. - */ -void avcodec_parameters_free(AVCodecParameters **par); - -/** - * Copy the contents of src to dst. Any allocated fields in dst are freed and - * replaced with newly allocated duplicates of the corresponding fields in src. - * - * @return >= 0 on success, a negative AVERROR code on failure. - */ -int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src); - -/** - * This function is the same as av_get_audio_frame_duration(), except it works - * with AVCodecParameters instead of an AVCodecContext. - */ -int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes); - -/** - * @} - */ - -#endif // AVCODEC_CODEC_PAR_H diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/defs.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/defs.h deleted file mode 100644 index b13e983b13..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/defs.h +++ /dev/null @@ -1,362 +0,0 @@ -/* - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_DEFS_H -#define AVCODEC_DEFS_H - -/** - * @file - * @ingroup libavc - * Misc types and constants that do not belong anywhere else. - */ - -#include -#include - -/** - * @ingroup lavc_decoding - * Required number of additionally allocated bytes at the end of the input bitstream for decoding. - * This is mainly needed because some optimized bitstream readers read - * 32 or 64 bit at once and could read over the end.
- * Note: If the first 23 bits of the additional bytes are not 0, then damaged - * MPEG bitstreams could cause overread and segfault. - */ -#define AV_INPUT_BUFFER_PADDING_SIZE 64 - -/** - * Verify checksums embedded in the bitstream (could be of either encoded or - * decoded data, depending on the format) and print an error message on mismatch. - * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the - * decoder/demuxer returning an error. - */ -#define AV_EF_CRCCHECK (1<<0) -#define AV_EF_BITSTREAM (1<<1) ///< detect bitstream specification deviations -#define AV_EF_BUFFER (1<<2) ///< detect improper bitstream length -#define AV_EF_EXPLODE (1<<3) ///< abort decoding on minor error detection - -#define AV_EF_IGNORE_ERR (1<<15) ///< ignore errors and continue -#define AV_EF_CAREFUL (1<<16) ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors -#define AV_EF_COMPLIANT (1<<17) ///< consider all spec non compliances as errors -#define AV_EF_AGGRESSIVE (1<<18) ///< consider things that a sane encoder/muxer should not do as an error - -#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. -#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. -#define FF_COMPLIANCE_NORMAL 0 -#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions -#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. - - -#define AV_PROFILE_UNKNOWN -99 -#define AV_PROFILE_RESERVED -100 - -#define AV_PROFILE_AAC_MAIN 0 -#define AV_PROFILE_AAC_LOW 1 -#define AV_PROFILE_AAC_SSR 2 -#define AV_PROFILE_AAC_LTP 3 -#define AV_PROFILE_AAC_HE 4 -#define AV_PROFILE_AAC_HE_V2 28 -#define AV_PROFILE_AAC_LD 22 -#define AV_PROFILE_AAC_ELD 38 -#define AV_PROFILE_AAC_USAC 41 -#define AV_PROFILE_MPEG2_AAC_LOW 128 -#define AV_PROFILE_MPEG2_AAC_HE 131 - -#define AV_PROFILE_DNXHD 0 -#define AV_PROFILE_DNXHR_LB 1 -#define AV_PROFILE_DNXHR_SQ 2 -#define AV_PROFILE_DNXHR_HQ 3 -#define AV_PROFILE_DNXHR_HQX 4 -#define AV_PROFILE_DNXHR_444 5 - -#define AV_PROFILE_DTS 20 -#define AV_PROFILE_DTS_ES 30 -#define AV_PROFILE_DTS_96_24 40 -#define AV_PROFILE_DTS_HD_HRA 50 -#define AV_PROFILE_DTS_HD_MA 60 -#define AV_PROFILE_DTS_EXPRESS 70 -#define AV_PROFILE_DTS_HD_MA_X 61 -#define AV_PROFILE_DTS_HD_MA_X_IMAX 62 - -#define AV_PROFILE_EAC3_DDP_ATMOS 30 - -#define AV_PROFILE_TRUEHD_ATMOS 30 - -#define AV_PROFILE_MPEG2_422 0 -#define AV_PROFILE_MPEG2_HIGH 1 -#define AV_PROFILE_MPEG2_SS 2 -#define AV_PROFILE_MPEG2_SNR_SCALABLE 3 -#define AV_PROFILE_MPEG2_MAIN 4 -#define AV_PROFILE_MPEG2_SIMPLE 5 - -#define AV_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag -#define AV_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag - -#define AV_PROFILE_H264_BASELINE 66 -#define AV_PROFILE_H264_CONSTRAINED_BASELINE (66|AV_PROFILE_H264_CONSTRAINED) -#define AV_PROFILE_H264_MAIN 77 -#define AV_PROFILE_H264_EXTENDED 88 -#define AV_PROFILE_H264_HIGH 100 -#define AV_PROFILE_H264_HIGH_10 110 -#define AV_PROFILE_H264_HIGH_10_INTRA (110|AV_PROFILE_H264_INTRA) -#define AV_PROFILE_H264_MULTIVIEW_HIGH 118 -#define AV_PROFILE_H264_HIGH_422 122 -#define AV_PROFILE_H264_HIGH_422_INTRA (122|AV_PROFILE_H264_INTRA) -#define AV_PROFILE_H264_STEREO_HIGH 128 -#define AV_PROFILE_H264_HIGH_444 144 -#define AV_PROFILE_H264_HIGH_444_PREDICTIVE 244 -#define AV_PROFILE_H264_HIGH_444_INTRA (244|AV_PROFILE_H264_INTRA) -#define AV_PROFILE_H264_CAVLC_444 44 - -#define AV_PROFILE_VC1_SIMPLE 0 -#define AV_PROFILE_VC1_MAIN 1 -#define AV_PROFILE_VC1_COMPLEX 2 -#define AV_PROFILE_VC1_ADVANCED 3 - -#define AV_PROFILE_MPEG4_SIMPLE 0 -#define AV_PROFILE_MPEG4_SIMPLE_SCALABLE 1 -#define AV_PROFILE_MPEG4_CORE 2 -#define AV_PROFILE_MPEG4_MAIN 3 -#define AV_PROFILE_MPEG4_N_BIT 4 -#define AV_PROFILE_MPEG4_SCALABLE_TEXTURE 5 -#define AV_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 -#define AV_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 -#define AV_PROFILE_MPEG4_HYBRID 8 -#define AV_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 -#define AV_PROFILE_MPEG4_CORE_SCALABLE 10 -#define AV_PROFILE_MPEG4_ADVANCED_CODING 11 -#define AV_PROFILE_MPEG4_ADVANCED_CORE 12 -#define AV_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 -#define AV_PROFILE_MPEG4_SIMPLE_STUDIO 14 -#define AV_PROFILE_MPEG4_ADVANCED_SIMPLE 15 - -#define AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1 -#define AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2 -#define AV_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768 -#define AV_PROFILE_JPEG2000_DCINEMA_2K 3 -#define AV_PROFILE_JPEG2000_DCINEMA_4K 4 - -#define AV_PROFILE_VP9_0 0 -#define AV_PROFILE_VP9_1 1 -#define AV_PROFILE_VP9_2 2 -#define AV_PROFILE_VP9_3 3 - -#define AV_PROFILE_HEVC_MAIN 1 -#define AV_PROFILE_HEVC_MAIN_10 2 -#define AV_PROFILE_HEVC_MAIN_STILL_PICTURE 3 -#define AV_PROFILE_HEVC_REXT 4 -#define AV_PROFILE_HEVC_MULTIVIEW_MAIN 6 -#define AV_PROFILE_HEVC_SCC 9 - -#define AV_PROFILE_VVC_MAIN_10 1 -#define AV_PROFILE_VVC_MAIN_10_444 33 - -#define AV_PROFILE_AV1_MAIN 0 -#define AV_PROFILE_AV1_HIGH 1 -#define AV_PROFILE_AV1_PROFESSIONAL 2 - -#define AV_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0 -#define AV_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1 -#define AV_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2 -#define AV_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3 -#define AV_PROFILE_MJPEG_JPEG_LS 0xf7 - -#define AV_PROFILE_SBC_MSBC 1 - -#define AV_PROFILE_PRORES_PROXY 0 -#define AV_PROFILE_PRORES_LT 1 -#define AV_PROFILE_PRORES_STANDARD 2 -#define AV_PROFILE_PRORES_HQ 3 -#define AV_PROFILE_PRORES_4444 4 -#define AV_PROFILE_PRORES_XQ 5 - -#define AV_PROFILE_PRORES_RAW 0 -#define AV_PROFILE_PRORES_RAW_HQ 1 - -#define AV_PROFILE_ARIB_PROFILE_A 0 -#define AV_PROFILE_ARIB_PROFILE_C 1 - -#define AV_PROFILE_KLVA_SYNC 0 -#define AV_PROFILE_KLVA_ASYNC 1 - -#define AV_PROFILE_EVC_BASELINE 0 -#define AV_PROFILE_EVC_MAIN 1 - -#define AV_PROFILE_APV_422_10 33 -#define AV_PROFILE_APV_422_12 44 -#define AV_PROFILE_APV_444_10 55 -#define AV_PROFILE_APV_444_12 66 -#define AV_PROFILE_APV_4444_10 77 -#define AV_PROFILE_APV_4444_12 88 -#define AV_PROFILE_APV_400_10 99 - - -#define AV_LEVEL_UNKNOWN -99 - -enum AVFieldOrder { - AV_FIELD_UNKNOWN, - AV_FIELD_PROGRESSIVE, - AV_FIELD_TT, ///< Top coded_first, top displayed first - AV_FIELD_BB, ///< Bottom coded first, bottom displayed first - AV_FIELD_TB, ///< Top coded first, bottom displayed first - AV_FIELD_BT, ///< Bottom coded first, top displayed first -}; - -/** - * @ingroup lavc_decoding - */ -enum AVDiscard{ - /* We leave some space between them for extensions (drop some - * keyframes for intra-only or drop just some bidir frames). */ - AVDISCARD_NONE =-16, ///< discard nothing - AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi - AVDISCARD_NONREF = 8, ///< discard all non reference - AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames - AVDISCARD_NONINTRA= 24, ///< discard all non intra frames - AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes - AVDISCARD_ALL = 48, ///< discard all -}; - -enum AVAudioServiceType { - AV_AUDIO_SERVICE_TYPE_MAIN = 0, - AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, - AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, - AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, - AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, - AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, - AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, - AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, - AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, - AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI -}; - -/** - * Pan Scan area. - * This specifies the area which should be displayed. - * Note there may be multiple such areas for one frame. - */ -typedef struct AVPanScan { - /** - * id - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int id; - - /** - * width and height in 1/16 pel - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int width; - int height; - - /** - * position of the top left corner in 1/16 pel for up to 3 fields/frames - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int16_t position[3][2]; -} AVPanScan; - -/** - * This structure describes the bitrate properties of an encoded bitstream. It - * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD - * parameters for H.264/HEVC. - */ -typedef struct AVCPBProperties { - /** - * Maximum bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int64_t max_bitrate; - /** - * Minimum bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int64_t min_bitrate; - /** - * Average bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int64_t avg_bitrate; - - /** - * The size of the buffer to which the ratecontrol is applied, in bits. - * Zero if unknown or unspecified. - */ - int64_t buffer_size; - - /** - * The delay between the time the packet this structure is associated with - * is received and the time when it should be decoded, in periods of a 27MHz - * clock. - * - * UINT64_MAX when unknown or unspecified. - */ - uint64_t vbv_delay; -} AVCPBProperties; - -/** - * Allocate a CPB properties structure and initialize its fields to default - * values. - * - * @param size if non-NULL, the size of the allocated struct will be written - * here. This is useful for embedding it in side data. - * - * @return the newly allocated struct or NULL on failure - */ -AVCPBProperties *av_cpb_properties_alloc(size_t *size); - -/** - * This structure supplies correlation between a packet timestamp and a wall clock - * production time. The definition follows the Producer Reference Time ('prft') - * as defined in ISO/IEC 14496-12 - */ -typedef struct AVProducerReferenceTime { - /** - * A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()). - */ - int64_t wallclock; - int flags; -} AVProducerReferenceTime; - -/** - * RTCP SR (Sender Report) information - * - * The received sender report information for an RTSP - * stream, exposed as AV_PKT_DATA_RTCP_SR side data. - */ -typedef struct AVRTCPSenderReport { - uint32_t ssrc; ///< Synchronization source identifier - uint64_t ntp_timestamp; ///< NTP time when the report was sent - uint32_t rtp_timestamp; ///< RTP time when the report was sent - uint32_t sender_nb_packets; ///< Total number of packets sent - uint32_t sender_nb_bytes; ///< Total number of bytes sent (excluding headers or padding) -} AVRTCPSenderReport; - -/** - * Encode extradata length to a buffer. Used by xiph codecs. - * - * @param s buffer to write to; must be at least (v/255+1) bytes long - * @param v size of extradata in bytes - * @return number of bytes written to the buffer. - */ -unsigned int av_xiphlacing(unsigned char *s, unsigned int v); - -#endif // AVCODEC_DEFS_H diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/packet.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/packet.h deleted file mode 100644 index 59bfddf4cc..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/packet.h +++ /dev/null @@ -1,943 +0,0 @@ -/* - * AVPacket public API - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_PACKET_H -#define AVCODEC_PACKET_H - -#include -#include - -#include "libavutil/attributes.h" -#include "libavutil/buffer.h" -#include "libavutil/dict.h" -#include "libavutil/rational.h" -#include "libavutil/version.h" - -#include "libavcodec/version_major.h" - -/** - * @defgroup lavc_packet_side_data AVPacketSideData - * - * Types and functions for working with AVPacketSideData. - * @{ - */ -enum AVPacketSideDataType { - /** - * An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE - * bytes worth of palette. This side data signals that a new palette is - * present. - */ - AV_PKT_DATA_PALETTE, - - /** - * The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format - * that the extradata buffer was changed and the receiving side should - * act upon it appropriately. The new extradata is embedded in the side - * data buffer and should be immediately used for processing the current - * frame or packet. - */ - AV_PKT_DATA_NEW_EXTRADATA, - - /** - * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: - * @code - * u32le param_flags - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) - * s32le sample_rate - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) - * s32le width - * s32le height - * @endcode - */ - AV_PKT_DATA_PARAM_CHANGE, - - /** - * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of - * structures with info about macroblocks relevant to splitting the - * packet into smaller packets on macroblock edges (e.g. as for RFC 2190). - * That is, it does not necessarily contain info about all macroblocks, - * as long as the distance between macroblocks in the info is smaller - * than the target payload size. - * Each MB info structure is 12 bytes, and is laid out as follows: - * @code - * u32le bit offset from the start of the packet - * u8 current quantizer at the start of the macroblock - * u8 GOB number - * u16le macroblock address within the GOB - * u8 horizontal MV predictor - * u8 vertical MV predictor - * u8 horizontal MV predictor for block number 3 - * u8 vertical MV predictor for block number 3 - * @endcode - */ - AV_PKT_DATA_H263_MB_INFO, - - /** - * This side data should be associated with an audio stream and contains - * ReplayGain information in form of the AVReplayGain struct. - */ - AV_PKT_DATA_REPLAYGAIN, - - /** - * This side data contains a 3x3 transformation matrix describing an affine - * transformation that needs to be applied to the decoded video frames for - * correct presentation. - * - * See libavutil/display.h for a detailed description of the data. - */ - AV_PKT_DATA_DISPLAYMATRIX, - - /** - * This side data should be associated with a video stream and contains - * Stereoscopic 3D information in form of the AVStereo3D struct. - */ - AV_PKT_DATA_STEREO3D, - - /** - * This side data should be associated with an audio stream and corresponds - * to enum AVAudioServiceType. - */ - AV_PKT_DATA_AUDIO_SERVICE_TYPE, - - /** - * This side data contains quality related information from the encoder. - * @code - * u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad). - * u8 picture type - * u8 error count - * u16 reserved - * u64le[error count] sum of squared differences between encoder in and output - * @endcode - */ - AV_PKT_DATA_QUALITY_STATS, - - /** - * This side data contains an integer value representing the stream index - * of a "fallback" track. A fallback track indicates an alternate - * track to use when the current track can not be decoded for some reason. - * e.g. no decoder available for codec. - */ - AV_PKT_DATA_FALLBACK_TRACK, - - /** - * This side data corresponds to the AVCPBProperties struct. - */ - AV_PKT_DATA_CPB_PROPERTIES, - - /** - * Recommends skipping the specified number of samples - * @code - * u32le number of samples to skip from start of this packet - * u32le number of samples to skip from end of this packet - * u8 reason for start skip - * u8 reason for end skip (0=padding silence, 1=convergence) - * @endcode - */ - AV_PKT_DATA_SKIP_SAMPLES, - - /** - * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that - * the packet may contain "dual mono" audio specific to Japanese DTV - * and if it is true, recommends only the selected channel to be used. - * @code - * u8 selected channels (0=main/left, 1=sub/right, 2=both) - * @endcode - */ - AV_PKT_DATA_JP_DUALMONO, - - /** - * A list of zero terminated key/value strings. There is no end marker for - * the list, so it is required to rely on the side data size to stop. - */ - AV_PKT_DATA_STRINGS_METADATA, - - /** - * Subtitle event position - * @code - * u32le x1 - * u32le y1 - * u32le x2 - * u32le y2 - * @endcode - */ - AV_PKT_DATA_SUBTITLE_POSITION, - - /** - * Data found in BlockAdditional element of matroska container. There is - * no end marker for the data, so it is required to rely on the side data - * size to recognize the end. 8 byte id (as found in BlockAddId) followed - * by data. - */ - AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, - - /** - * The optional first identifier line of a WebVTT cue. - */ - AV_PKT_DATA_WEBVTT_IDENTIFIER, - - /** - * The optional settings (rendering instructions) that immediately - * follow the timestamp specifier of a WebVTT cue. - */ - AV_PKT_DATA_WEBVTT_SETTINGS, - - /** - * A list of zero terminated key/value strings. There is no end marker for - * the list, so it is required to rely on the side data size to stop. This - * side data includes updated metadata which appeared in the stream. - */ - AV_PKT_DATA_METADATA_UPDATE, - - /** - * MPEGTS stream ID as uint8_t, this is required to pass the stream ID - * information from the demuxer to the corresponding muxer. - */ - AV_PKT_DATA_MPEGTS_STREAM_ID, - - /** - * Mastering display metadata (based on SMPTE-2086:2014). This metadata - * should be associated with a video stream and contains data in the form - * of the AVMasteringDisplayMetadata struct. - */ - AV_PKT_DATA_MASTERING_DISPLAY_METADATA, - - /** - * This side data should be associated with a video stream and corresponds - * to the AVSphericalMapping structure. - */ - AV_PKT_DATA_SPHERICAL, - - /** - * Content light level (based on CTA-861.3). This metadata should be - * associated with a video stream and contains data in the form of the - * AVContentLightMetadata struct. - */ - AV_PKT_DATA_CONTENT_LIGHT_LEVEL, - - /** - * ATSC A53 Part 4 Closed Captions. This metadata should be associated with - * a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data. - * The number of bytes of CC data is AVPacketSideData.size. - */ - AV_PKT_DATA_A53_CC, - - /** - * This side data is encryption initialization data. - * The format is not part of ABI, use av_encryption_init_info_* methods to - * access. - */ - AV_PKT_DATA_ENCRYPTION_INIT_INFO, - - /** - * This side data contains encryption info for how to decrypt the packet. - * The format is not part of ABI, use av_encryption_info_* methods to access. - */ - AV_PKT_DATA_ENCRYPTION_INFO, - - /** - * Active Format Description data consisting of a single byte as specified - * in ETSI TS 101 154 using AVActiveFormatDescription enum. - */ - AV_PKT_DATA_AFD, - - /** - * Producer Reference Time data corresponding to the AVProducerReferenceTime struct, - * usually exported by some encoders (on demand through the prft flag set in the - * AVCodecContext export_side_data field). - */ - AV_PKT_DATA_PRFT, - - /** - * ICC profile data consisting of an opaque octet buffer following the - * format described by ISO 15076-1. - */ - AV_PKT_DATA_ICC_PROFILE, - - /** - * DOVI configuration - * ref: - * dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2, section 2.2 - * dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2, section 3.3 - * Tags are stored in struct AVDOVIDecoderConfigurationRecord. - */ - AV_PKT_DATA_DOVI_CONF, - - /** - * Timecode which conforms to SMPTE ST 12-1:2014. The data is an array of 4 uint32_t - * where the first uint32_t describes how many (1-3) of the other timecodes are used. - * The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum() - * function in libavutil/timecode.h. - */ - AV_PKT_DATA_S12M_TIMECODE, - - /** - * HDR10+ dynamic metadata associated with a video frame. The metadata is in - * the form of the AVDynamicHDRPlus struct and contains - * information for color volume transform - application 4 of - * SMPTE 2094-40:2016 standard. - */ - AV_PKT_DATA_DYNAMIC_HDR10_PLUS, - - /** - * IAMF Mix Gain Parameter Data associated with the audio frame. This metadata - * is in the form of the AVIAMFParamDefinition struct and contains information - * defined in sections 3.6.1 and 3.8.1 of the Immersive Audio Model and - * Formats standard. - */ - AV_PKT_DATA_IAMF_MIX_GAIN_PARAM, - - /** - * IAMF Demixing Info Parameter Data associated with the audio frame. This - * metadata is in the form of the AVIAMFParamDefinition struct and contains - * information defined in sections 3.6.1 and 3.8.2 of the Immersive Audio Model - * and Formats standard. - */ - AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM, - - /** - * IAMF Recon Gain Info Parameter Data associated with the audio frame. This - * metadata is in the form of the AVIAMFParamDefinition struct and contains - * information defined in sections 3.6.1 and 3.8.3 of the Immersive Audio Model - * and Formats standard. - */ - AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM, - - /** - * Ambient viewing environment metadata, as defined by H.274. This metadata - * should be associated with a video stream and contains data in the form - * of the AVAmbientViewingEnvironment struct. - */ - AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT, - - /** - * The number of pixels to discard from the top/bottom/left/right border of the - * decoded frame to obtain the sub-rectangle intended for presentation. - * - * @code - * u32le crop_top - * u32le crop_bottom - * u32le crop_left - * u32le crop_right - * @endcode - */ - AV_PKT_DATA_FRAME_CROPPING, - - /** - * Raw LCEVC payload data, as a uint8_t array, with NAL emulation - * bytes intact. - */ - AV_PKT_DATA_LCEVC, - - /** - * This side data contains information about the reference display width(s) - * and reference viewing distance(s) as well as information about the - * corresponding reference stereo pair(s), i.e., the pair(s) of views to be - * displayed for the viewer's left and right eyes on the reference display - * at the reference viewing distance. - * The payload is the AV3DReferenceDisplaysInfo struct defined in - * libavutil/tdrdi.h. - */ - AV_PKT_DATA_3D_REFERENCE_DISPLAYS, - - /** - * Contains the last received RTCP SR (Sender Report) information - * in the form of the AVRTCPSenderReport struct. - */ - AV_PKT_DATA_RTCP_SR, - - /** - * Extensible image file format metadata. The payload is a buffer containing - * EXIF metadata, starting with either 49 49 2a 00, or 4d 4d 00 2a. - */ - AV_PKT_DATA_EXIF, - - /** - * The number of side data types. - * This is not part of the public API/ABI in the sense that it may - * change when new side data types are added. - * This must stay the last enum value. - * If its value becomes huge, some code using it - * needs to be updated as it assumes it to be smaller than other limits. - */ - AV_PKT_DATA_NB -}; - -/** - * This structure stores auxiliary information for decoding, presenting, or - * otherwise processing the coded stream. It is typically exported by demuxers - * and encoders and can be fed to decoders and muxers either in a per packet - * basis, or as global side data (applying to the entire coded stream). - * - * Global side data is handled as follows: - * - During demuxing, it may be exported through - * @ref AVCodecParameters.coded_side_data "AVStream's codec parameters", which can - * then be passed as input to decoders through the - * @ref AVCodecContext.coded_side_data "decoder context's side data", for - * initialization. - * - For muxing, it can be fed through @ref AVCodecParameters.coded_side_data - * "AVStream's codec parameters", typically the output of encoders through - * the @ref AVCodecContext.coded_side_data "encoder context's side data", for - * initialization. - * - * Packet specific side data is handled as follows: - * - During demuxing, it may be exported through @ref AVPacket.side_data - * "AVPacket's side data", which can then be passed as input to decoders. - * - For muxing, it can be fed through @ref AVPacket.side_data "AVPacket's - * side data", typically the output of encoders. - * - * Different modules may accept or export different types of side data - * depending on media type and codec. Refer to @ref AVPacketSideDataType for a - * list of defined types and where they may be found or used. - */ -typedef struct AVPacketSideData { - uint8_t *data; - size_t size; - enum AVPacketSideDataType type; -} AVPacketSideData; - -/** - * Allocate a new packet side data. - * - * @param sd pointer to an array of side data to which the side data should - * be added. *sd may be NULL, in which case the array will be - * initialized. - * @param nb_sd pointer to an integer containing the number of entries in - * the array. The integer value will be increased by 1 on success. - * @param type side data type - * @param size desired side data size - * @param flags currently unused. Must be zero - * - * @return pointer to freshly allocated side data on success, or NULL otherwise. - */ -AVPacketSideData *av_packet_side_data_new(AVPacketSideData **psd, int *pnb_sd, - enum AVPacketSideDataType type, - size_t size, int flags); - -/** - * Wrap existing data as packet side data. - * - * @param sd pointer to an array of side data to which the side data should - * be added. *sd may be NULL, in which case the array will be - * initialized - * @param nb_sd pointer to an integer containing the number of entries in - * the array. The integer value will be increased by 1 on success. - * @param type side data type - * @param data a data array. It must be allocated with the av_malloc() family - * of functions. The ownership of the data is transferred to the - * side data array on success - * @param size size of the data array - * @param flags currently unused. Must be zero - * - * @return pointer to freshly allocated side data on success, or NULL otherwise - * On failure, the side data array is unchanged and the data remains - * owned by the caller. - */ -AVPacketSideData *av_packet_side_data_add(AVPacketSideData **sd, int *nb_sd, - enum AVPacketSideDataType type, - void *data, size_t size, int flags); - -/** - * Get side information from a side data array. - * - * @param sd the array from which the side data should be fetched - * @param nb_sd value containing the number of entries in the array. - * @param type desired side information type - * - * @return pointer to side data if present or NULL otherwise - */ -const AVPacketSideData *av_packet_side_data_get(const AVPacketSideData *sd, - int nb_sd, - enum AVPacketSideDataType type); - -/** - * Remove side data of the given type from a side data array. - * - * @param sd the array from which the side data should be removed - * @param nb_sd pointer to an integer containing the number of entries in - * the array. Will be reduced by the amount of entries removed - * upon return - * @param type side information type - */ -void av_packet_side_data_remove(AVPacketSideData *sd, int *nb_sd, - enum AVPacketSideDataType type); - -/** - * Convenience function to free all the side data stored in an array, and - * the array itself. - * - * @param sd pointer to array of side data to free. Will be set to NULL - * upon return. - * @param nb_sd pointer to an integer containing the number of entries in - * the array. Will be set to 0 upon return. - */ -void av_packet_side_data_free(AVPacketSideData **sd, int *nb_sd); - -struct AVFrameSideData; - -/** - * Add a new packet side data entry to an array based on existing frame - * side data, if a matching type exists for packet side data. - * - * @param flags Currently unused. Must be 0. - * @retval >= 0 Success - * @retval AVERROR(EINVAL) The frame side data type does not have a matching - * packet side data type. - * @retval AVERROR(ENOMEM) Failed to add a side data entry to the array, or - * similar. - */ -int av_packet_side_data_from_frame(AVPacketSideData **sd, int *nb_sd, - const struct AVFrameSideData *src, unsigned int flags); -/** - * Add a new frame side data entry to an array based on existing packet - * side data, if a matching type exists for frame side data. - * - * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, - * or 0. - * @retval >= 0 Success - * @retval AVERROR(EINVAL) The packet side data type does not have a matching - * frame side data type. - * @retval AVERROR(ENOMEM) Failed to add a side data entry to the array, or - * similar. - */ -int av_packet_side_data_to_frame(struct AVFrameSideData ***sd, int *nb_sd, - const AVPacketSideData *src, unsigned int flags); - -const char *av_packet_side_data_name(enum AVPacketSideDataType type); - -/** - * @} - */ - -/** - * @defgroup lavc_packet AVPacket - * - * Types and functions for working with AVPacket. - * @{ - */ - -/** - * This structure stores compressed data. It is typically exported by demuxers - * and then passed as input to decoders, or received as output from encoders and - * then passed to muxers. - * - * For video, it should typically contain one compressed frame. For audio it may - * contain several compressed frames. Encoders are allowed to output empty - * packets, with no compressed data, containing only side data - * (e.g. to update some stream parameters at the end of encoding). - * - * The semantics of data ownership depends on the buf field. - * If it is set, the packet data is dynamically allocated and is - * valid indefinitely until a call to av_packet_unref() reduces the - * reference count to 0. - * - * If the buf field is not set av_packet_ref() would make a copy instead - * of increasing the reference count. - * - * The side data is always allocated with av_malloc(), copied by - * av_packet_ref() and freed by av_packet_unref(). - * - * sizeof(AVPacket) being a part of the public ABI is deprecated. once - * av_init_packet() is removed, new packets will only be able to be allocated - * with av_packet_alloc(), and new fields may be added to the end of the struct - * with a minor bump. - * - * @see av_packet_alloc - * @see av_packet_ref - * @see av_packet_unref - */ -typedef struct AVPacket { - /** - * A reference to the reference-counted buffer where the packet data is - * stored. - * May be NULL, then the packet data is not reference-counted. - */ - AVBufferRef *buf; - /** - * Presentation timestamp in AVStream->time_base units; the time at which - * the decompressed packet will be presented to the user. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - * pts MUST be larger or equal to dts as presentation cannot happen before - * decompression, unless one wants to view hex dumps. Some formats misuse - * the terms dts and pts/cts to mean something different. Such timestamps - * must be converted to true pts/dts before they are stored in AVPacket. - */ - int64_t pts; - /** - * Decompression timestamp in AVStream->time_base units; the time at which - * the packet is decompressed. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - */ - int64_t dts; - uint8_t *data; - int size; - int stream_index; - /** - * A combination of AV_PKT_FLAG values - */ - int flags; - /** - * Additional packet data that can be provided by the container. - * Packet can contain several types of side information. - */ - AVPacketSideData *side_data; - int side_data_elems; - - /** - * Duration of this packet in AVStream->time_base units, 0 if unknown. - * Equals next_pts - this_pts in presentation order. - */ - int64_t duration; - - int64_t pos; ///< byte position in stream, -1 if unknown - - /** - * for some private data of the user - */ - void *opaque; - - /** - * AVBufferRef for free use by the API user. FFmpeg will never check the - * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when - * the packet is unreferenced. av_packet_copy_props() calls create a new - * reference with av_buffer_ref() for the target packet's opaque_ref field. - * - * This is unrelated to the opaque field, although it serves a similar - * purpose. - */ - AVBufferRef *opaque_ref; - - /** - * Time base of the packet's timestamps. - * In the future, this field may be set on packets output by encoders or - * demuxers, but its value will be by default ignored on input to decoders - * or muxers. - */ - AVRational time_base; -} AVPacket; - -#if FF_API_INIT_PACKET -attribute_deprecated -typedef struct AVPacketList { - AVPacket pkt; - struct AVPacketList *next; -} AVPacketList; -#endif - -#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe -#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted -/** - * Flag is used to discard packets which are required to maintain valid - * decoder state but are not required for output and should be dropped - * after decoding. - **/ -#define AV_PKT_FLAG_DISCARD 0x0004 -/** - * The packet comes from a trusted source. - * - * Otherwise-unsafe constructs such as arbitrary pointers to data - * outside the packet may be followed. - */ -#define AV_PKT_FLAG_TRUSTED 0x0008 -/** - * Flag is used to indicate packets that contain frames that can - * be discarded by the decoder. I.e. Non-reference frames. - */ -#define AV_PKT_FLAG_DISPOSABLE 0x0010 - -enum AVSideDataParamChangeFlags { - AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, - AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, -}; - -/** - * Allocate an AVPacket and set its fields to default values. The resulting - * struct must be freed using av_packet_free(). - * - * @return An AVPacket filled with default values or NULL on failure. - * - * @note this only allocates the AVPacket itself, not the data buffers. Those - * must be allocated through other means such as av_new_packet. - * - * @see av_new_packet - */ -AVPacket *av_packet_alloc(void); - -/** - * Create a new packet that references the same data as src. - * - * This is a shortcut for av_packet_alloc()+av_packet_ref(). - * - * @return newly created AVPacket on success, NULL on error. - * - * @see av_packet_alloc - * @see av_packet_ref - */ -AVPacket *av_packet_clone(const AVPacket *src); - -/** - * Free the packet, if the packet is reference counted, it will be - * unreferenced first. - * - * @param pkt packet to be freed. The pointer will be set to NULL. - * @note passing NULL is a no-op. - */ -void av_packet_free(AVPacket **pkt); - -#if FF_API_INIT_PACKET -/** - * Initialize optional fields of a packet with default values. - * - * Note, this does not touch the data and size members, which have to be - * initialized separately. - * - * @param pkt packet - * - * @see av_packet_alloc - * @see av_packet_unref - * - * @deprecated This function is deprecated. Once it's removed, - sizeof(AVPacket) will not be a part of the ABI anymore. - */ -attribute_deprecated -void av_init_packet(AVPacket *pkt); -#endif - -/** - * Allocate the payload of a packet and initialize its fields with - * default values. - * - * @param pkt packet - * @param size wanted payload size - * @return 0 if OK, AVERROR_xxx otherwise - */ -int av_new_packet(AVPacket *pkt, int size); - -/** - * Reduce packet size, correctly zeroing padding - * - * @param pkt packet - * @param size new size - */ -void av_shrink_packet(AVPacket *pkt, int size); - -/** - * Increase packet size, correctly zeroing padding - * - * @param pkt packet - * @param grow_by number of bytes by which to increase the size of the packet - */ -int av_grow_packet(AVPacket *pkt, int grow_by); - -/** - * Initialize a reference-counted packet from av_malloc()ed data. - * - * @param pkt packet to be initialized. This function will set the data, size, - * and buf fields, all others are left untouched. - * @param data Data allocated by av_malloc() to be used as packet data. If this - * function returns successfully, the data is owned by the underlying AVBuffer. - * The caller may not access the data through other means. - * @param size size of data in bytes, without the padding. I.e. the full buffer - * size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE. - * - * @return 0 on success, a negative AVERROR on error - */ -int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size); - -/** - * Allocate new information of a packet. - * - * @param pkt packet - * @param type side information type - * @param size side information size - * @return pointer to fresh allocated data or NULL otherwise - */ -uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - size_t size); - -/** - * Wrap an existing array as a packet side data. - * - * @param pkt packet - * @param type side information type - * @param data the side data array. It must be allocated with the av_malloc() - * family of functions. The ownership of the data is transferred to - * pkt. - * @param size side information size - * @return a non-negative number on success, a negative AVERROR code on - * failure. On failure, the packet is unchanged and the data remains - * owned by the caller. - */ -int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - uint8_t *data, size_t size); - -/** - * Shrink the already allocated side data buffer - * - * @param pkt packet - * @param type side information type - * @param size new side information size - * @return 0 on success, < 0 on failure - */ -int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - size_t size); - -/** - * Get side information from packet. - * - * @param pkt packet - * @param type desired side information type - * @param size If supplied, *size will be set to the size of the side data - * or to zero if the desired side data is not present. - * @return pointer to data if present or NULL otherwise - */ -uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, - size_t *size); - -/** - * Pack a dictionary for use in side_data. - * - * @param dict The dictionary to pack. - * @param size pointer to store the size of the returned data - * @return pointer to data if successful, NULL otherwise - */ -uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size); -/** - * Unpack a dictionary from side_data. - * - * @param data data from side_data - * @param size size of the data - * @param dict the metadata storage dictionary - * @return 0 on success, < 0 on failure - */ -int av_packet_unpack_dictionary(const uint8_t *data, size_t size, - AVDictionary **dict); - -/** - * Convenience function to free all the side data stored. - * All the other fields stay untouched. - * - * @param pkt packet - */ -void av_packet_free_side_data(AVPacket *pkt); - -/** - * Setup a new reference to the data described by a given packet - * - * If src is reference-counted, setup dst as a new reference to the - * buffer in src. Otherwise allocate a new buffer in dst and copy the - * data from src into it. - * - * All the other fields are copied from src. - * - * @see av_packet_unref - * - * @param dst Destination packet. Will be completely overwritten. - * @param src Source packet - * - * @return 0 on success, a negative AVERROR on error. On error, dst - * will be blank (as if returned by av_packet_alloc()). - */ -int av_packet_ref(AVPacket *dst, const AVPacket *src); - -/** - * Wipe the packet. - * - * Unreference the buffer referenced by the packet and reset the - * remaining packet fields to their default values. - * - * @param pkt The packet to be unreferenced. - */ -void av_packet_unref(AVPacket *pkt); - -/** - * Move every field in src to dst and reset src. - * - * @see av_packet_unref - * - * @param src Source packet, will be reset - * @param dst Destination packet - */ -void av_packet_move_ref(AVPacket *dst, AVPacket *src); - -/** - * Copy only "properties" fields from src to dst. - * - * Properties for the purpose of this function are all the fields - * beside those related to the packet data (buf, data, size) - * - * @param dst Destination packet - * @param src Source packet - * - * @return 0 on success AVERROR on failure. - */ -int av_packet_copy_props(AVPacket *dst, const AVPacket *src); - -/** - * Ensure the data described by a given packet is reference counted. - * - * @note This function does not ensure that the reference will be writable. - * Use av_packet_make_writable instead for that purpose. - * - * @see av_packet_ref - * @see av_packet_make_writable - * - * @param pkt packet whose data should be made reference counted. - * - * @return 0 on success, a negative AVERROR on error. On failure, the - * packet is unchanged. - */ -int av_packet_make_refcounted(AVPacket *pkt); - -/** - * Create a writable reference for the data described by a given packet, - * avoiding data copy if possible. - * - * @param pkt Packet whose data should be made writable. - * - * @return 0 on success, a negative AVERROR on failure. On failure, the - * packet is unchanged. - */ -int av_packet_make_writable(AVPacket *pkt); - -/** - * Convert valid timing fields (timestamps / durations) in a packet from one - * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be - * ignored. - * - * @param pkt packet on which the conversion will be performed - * @param tb_src source timebase, in which the timing fields in pkt are - * expressed - * @param tb_dst destination timebase, to which the timing fields will be - * converted - */ -void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); - -/** - * Allocate an AVContainerFifo instance for AVPacket. - * - * @param flags currently unused - */ -struct AVContainerFifo *av_container_fifo_alloc_avpacket(unsigned flags); - -/** - * @} - */ - -#endif // AVCODEC_PACKET_H diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/vdpau.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/vdpau.h deleted file mode 100644 index da77c5daed..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/vdpau.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * The Video Decode and Presentation API for UNIX (VDPAU) is used for - * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1. - * - * Copyright (C) 2008 NVIDIA - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VDPAU_H -#define AVCODEC_VDPAU_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vdpau - * Public libavcodec VDPAU header. - */ - - -/** - * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer - * @ingroup lavc_codec_hwaccel - * - * VDPAU hardware acceleration has two modules - * - VDPAU decoding - * - VDPAU presentation - * - * The VDPAU decoding module parses all headers using FFmpeg - * parsing mechanisms and uses VDPAU for the actual decoding. - * - * As per the current implementation, the actual decoding - * and rendering (API calls) are done as part of the VDPAU - * presentation (vo_vdpau.c) module. - * - * @{ - */ - -#include - -#include "libavutil/avconfig.h" -#include "libavutil/attributes.h" - -#include "avcodec.h" - -struct AVCodecContext; -struct AVFrame; - -typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *, - const VdpPictureInfo *, uint32_t, - const VdpBitstreamBuffer *); - -/** - * This structure is used to share data between the libavcodec library and - * the client video application. - * This structure will be allocated and stored in AVCodecContext.hwaccel_context - * by av_vdpau_bind_context(). Members can be set by the user once - * during initialization or through each AVCodecContext.get_buffer() - * function call. In any case, they must be valid prior to calling - * decoding functions. - * - * The size of this structure is not a part of the public ABI and must not - * be used outside of libavcodec. - */ -typedef struct AVVDPAUContext { - /** - * VDPAU decoder handle - * - * Set by user. - */ - VdpDecoder decoder; - - /** - * VDPAU decoder render callback - * - * Set by the user. - */ - VdpDecoderRender *render; - - AVVDPAU_Render2 render2; -} AVVDPAUContext; - -/** - * Associate a VDPAU device with a codec context for hardware acceleration. - * This function is meant to be called from the get_format() codec callback, - * or earlier. It can also be called after avcodec_flush_buffers() to change - * the underlying VDPAU device mid-stream (e.g. to recover from non-transparent - * display preemption). - * - * @note get_format() must return AV_PIX_FMT_VDPAU if this function completes - * successfully. - * - * @param avctx decoding context whose get_format() callback is invoked - * @param device VDPAU device handle to use for hardware acceleration - * @param get_proc_address VDPAU device driver - * @param flags zero of more OR'd AV_HWACCEL_FLAG_* flags - * - * @return 0 on success, an AVERROR code on failure. - */ -int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device, - VdpGetProcAddress *get_proc_address, unsigned flags); - -/** - * Gets the parameters to create an adequate VDPAU video surface for the codec - * context using VDPAU hardware decoding acceleration. - * - * @note Behavior is undefined if the context was not successfully bound to a - * VDPAU device using av_vdpau_bind_context(). - * - * @param avctx the codec context being used for decoding the stream - * @param type storage space for the VDPAU video surface chroma type - * (or NULL to ignore) - * @param width storage space for the VDPAU video surface pixel width - * (or NULL to ignore) - * @param height storage space for the VDPAU video surface pixel height - * (or NULL to ignore) - * - * @return 0 on success, a negative AVERROR code on failure. - */ -int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type, - uint32_t *width, uint32_t *height); - -/** @} */ - -#endif /* AVCODEC_VDPAU_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/version.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/version.h deleted file mode 100644 index e60d3c1afc..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/version.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VERSION_H -#define AVCODEC_VERSION_H - -/** - * @file - * @ingroup libavc - * Libavcodec version macros. - */ - -#include "libavutil/version.h" - -#include "version_major.h" - -#define LIBAVCODEC_VERSION_MINOR 29 -#define LIBAVCODEC_VERSION_MICRO 101 - -#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT - -#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) - -#endif /* AVCODEC_VERSION_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/version_major.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/version_major.h deleted file mode 100644 index 52f6d629dd..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavcodec/version_major.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VERSION_MAJOR_H -#define AVCODEC_VERSION_MAJOR_H - -/** - * @file - * @ingroup libavc - * Libavcodec version macros. - */ - -#define LIBAVCODEC_VERSION_MAJOR 62 - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - */ - -#define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_V408_CODECID (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_CODEC_PROPS (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_EXR_GAMMA (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_INTRA_DC_PRECISION (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_NVDEC_OLD_PIX_FMTS (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_PARSER_PRIVATE (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_PARSER_CODECID (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_MJPEG_EXTERN_HUFF (LIBAVCODEC_VERSION_MAJOR < 63) - -// reminder to remove the OMX encoder on next major bump -#define FF_CODEC_OMX (LIBAVCODEC_VERSION_MAJOR < 63) -// reminder to remove Sonic Lossy/Lossless encoders on next major bump -#define FF_CODEC_SONIC_ENC (LIBAVCODEC_VERSION_MAJOR < 63) -// reminder to remove Sonic decoder on next-next major bump -#define FF_CODEC_SONIC_DEC (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_NVENC_H264_MAIN (LIBAVCODEC_VERSION_MAJOR < 63) - -#endif /* AVCODEC_VERSION_MAJOR_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/attributes.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/attributes.h deleted file mode 100644 index c9c74c28b6..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/attributes.h +++ /dev/null @@ -1,227 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Macro definitions for various function/variable attributes - */ - -#ifndef AVUTIL_ATTRIBUTES_H -#define AVUTIL_ATTRIBUTES_H - -#ifdef __GNUC__ -# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > (x) || __GNUC__ == (x) && __GNUC_MINOR__ >= (y)) -# define AV_GCC_VERSION_AT_MOST(x,y) (__GNUC__ < (x) || __GNUC__ == (x) && __GNUC_MINOR__ <= (y)) -#else -# define AV_GCC_VERSION_AT_LEAST(x,y) 0 -# define AV_GCC_VERSION_AT_MOST(x,y) 0 -#endif - -#ifdef __has_builtin -# define AV_HAS_BUILTIN(x) __has_builtin(x) -#else -# define AV_HAS_BUILTIN(x) 0 -#endif - -#ifdef __has_attribute -# define AV_HAS_ATTRIBUTE(x) __has_attribute(x) -#else -# define AV_HAS_ATTRIBUTE(x) 0 -#endif - -#if defined(__cplusplus) && \ - defined(__has_cpp_attribute) && \ - __cplusplus >= 201103L -# define AV_HAS_STD_ATTRIBUTE(x) __has_cpp_attribute(x) -#elif !defined(__cplusplus) && \ - defined(__has_c_attribute) && \ - defined(__STDC_VERSION__) && \ - __STDC_VERSION__ >= 202311L -# define AV_HAS_STD_ATTRIBUTE(x) __has_c_attribute(x) -#else -# define AV_HAS_STD_ATTRIBUTE(x) 0 -#endif - -#ifndef av_always_inline -#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) -# define av_always_inline __attribute__((always_inline)) inline -#elif defined(_MSC_VER) -# define av_always_inline __forceinline -#else -# define av_always_inline inline -#endif -#endif - -#ifndef av_extern_inline -#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__) -# define av_extern_inline extern inline -#else -# define av_extern_inline inline -#endif -#endif - -#if AV_HAS_STD_ATTRIBUTE(nodiscard) -# define av_warn_unused_result [[nodiscard]] -#elif AV_GCC_VERSION_AT_LEAST(3,4) || defined(__clang__) -# define av_warn_unused_result __attribute__((warn_unused_result)) -#else -# define av_warn_unused_result -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) -# define av_noinline __attribute__((noinline)) -#elif defined(_MSC_VER) -# define av_noinline __declspec(noinline) -#else -# define av_noinline -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) -# define av_pure __attribute__((pure)) -#else -# define av_pure -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,6) || defined(__clang__) -# define av_const __attribute__((const)) -#else -# define av_const -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) || defined(__clang__) -# define av_cold __attribute__((cold)) -#else -# define av_cold -#endif - -#if (AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__clang__ )) || AV_HAS_ATTRIBUTE(flatten) -# define av_flatten __attribute__((flatten)) -#else -# define av_flatten -#endif - -#if AV_HAS_STD_ATTRIBUTE(deprecated) -# define attribute_deprecated [[deprecated]] -#elif AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) -# define attribute_deprecated __attribute__((deprecated)) -#elif defined(_MSC_VER) -# define attribute_deprecated __declspec(deprecated) -#else -# define attribute_deprecated -#endif - -/** - * Disable warnings about deprecated features - * This is useful for sections of code kept for backward compatibility and - * scheduled for removal. - */ -#ifndef AV_NOWARN_DEPRECATED -#if AV_GCC_VERSION_AT_LEAST(4,6) || defined(__clang__) -# define AV_NOWARN_DEPRECATED(code) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \ - code \ - _Pragma("GCC diagnostic pop") -#elif defined(_MSC_VER) -# define AV_NOWARN_DEPRECATED(code) \ - __pragma(warning(push)) \ - __pragma(warning(disable : 4996)) \ - code; \ - __pragma(warning(pop)) -#else -# define AV_NOWARN_DEPRECATED(code) code -#endif -#endif - -#if AV_HAS_STD_ATTRIBUTE(maybe_unused) -# define av_unused [[maybe_unused]] -#elif defined(__GNUC__) || defined(__clang__) -# define av_unused __attribute__((unused)) -#else -# define av_unused -#endif - -/** - * Mark a variable as used and prevent the compiler from optimizing it - * away. This is useful for variables accessed only from inline - * assembler without the compiler being aware. - */ -#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) -# define av_used __attribute__((used)) -#else -# define av_used -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,3) || defined(__clang__) -# define av_alias __attribute__((may_alias)) -#else -# define av_alias -#endif - -#if (defined(__GNUC__) || defined(__clang__)) && !defined(__INTEL_COMPILER) -# define av_uninit(x) x=x -#else -# define av_uninit(x) x -#endif - -#if defined(__GNUC__) || defined(__clang__) -# define av_builtin_constant_p __builtin_constant_p -#else -# define av_builtin_constant_p(x) 0 -#endif - -// for __MINGW_PRINTF_FORMAT and __MINGW_SCANF_FORMAT -#ifdef __MINGW32__ -# include -#endif - -#ifdef __MINGW_PRINTF_FORMAT -# define AV_PRINTF_FMT __MINGW_PRINTF_FORMAT -#elif AV_HAS_ATTRIBUTE(format) -# define AV_PRINTF_FMT __printf__ -#endif - -#ifdef __MINGW_SCANF_FORMAT -# define AV_SCANF_FMT __MINGW_SCANF_FORMAT -#elif AV_HAS_ATTRIBUTE(format) -# define AV_SCANF_FMT __scanf__ -#endif - -#ifdef AV_PRINTF_FMT -# define av_printf_format(fmtpos, attrpos) __attribute__((format(AV_PRINTF_FMT, fmtpos, attrpos))) -#else -# define av_printf_format(fmtpos, attrpos) -#endif - -#ifdef AV_SCANF_FMT -# define av_scanf_format(fmtpos, attrpos) __attribute__((format(AV_SCANF_FMT, fmtpos, attrpos))) -#else -# define av_scanf_format(fmtpos, attrpos) -#endif - -#if AV_HAS_STD_ATTRIBUTE(noreturn) -# define av_noreturn [[noreturn]] -#elif AV_GCC_VERSION_AT_LEAST(2,5) || defined(__clang__) -# define av_noreturn __attribute__((noreturn)) -#else -# define av_noreturn -#endif - -#endif /* AVUTIL_ATTRIBUTES_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/avconfig.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/avconfig.h deleted file mode 100644 index 8558b35027..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/avconfig.h +++ /dev/null @@ -1,6 +0,0 @@ -/* Generated by ffmpeg configure */ -#ifndef AVUTIL_AVCONFIG_H -#define AVUTIL_AVCONFIG_H -#define AV_HAVE_BIGENDIAN 0 -#define AV_HAVE_FAST_UNALIGNED 0 -#endif /* AVUTIL_AVCONFIG_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/avutil.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/avutil.h deleted file mode 100644 index c8ae114ab6..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/avutil.h +++ /dev/null @@ -1,364 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVUTIL_H -#define AVUTIL_AVUTIL_H - -/** - * @file - * @ingroup lavu - * Convenience header that includes @ref lavu "libavutil"'s core. - */ - -/** - * @mainpage - * - * @section ffmpeg_intro Introduction - * - * This document describes the usage of the different libraries - * provided by FFmpeg. - * - * @li @ref libavc "libavcodec" encoding/decoding library - * @li @ref lavfi "libavfilter" graph-based frame editing library - * @li @ref libavf "libavformat" I/O and muxing/demuxing library - * @li @ref lavd "libavdevice" special devices muxing/demuxing library - * @li @ref lavu "libavutil" common utility library - * @li @ref lswr "libswresample" audio resampling, format conversion and mixing - * @li @ref libsws "libswscale" color conversion and scaling library - * - * @section ffmpeg_versioning Versioning and compatibility - * - * Each of the FFmpeg libraries contains a version.h header, which defines a - * major, minor and micro version number with the - * LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO} macros. The major version - * number is incremented with backward incompatible changes - e.g. removing - * parts of the public API, reordering public struct members, etc. The minor - * version number is incremented for backward compatible API changes or major - * new features - e.g. adding a new public function or a new decoder. The micro - * version number is incremented for smaller changes that a calling program - * might still want to check for - e.g. changing behavior in a previously - * unspecified situation. - * - * FFmpeg guarantees backward API and ABI compatibility for each library as long - * as its major version number is unchanged. This means that no public symbols - * will be removed or renamed. Types and names of the public struct members and - * values of public macros and enums will remain the same (unless they were - * explicitly declared as not part of the public API). Documented behavior will - * not change. - * - * In other words, any correct program that works with a given FFmpeg snapshot - * should work just as well without any changes with any later snapshot with the - * same major versions. This applies to both rebuilding the program against new - * FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program - * links against. - * - * However, new public symbols may be added and new members may be appended to - * public structs whose size is not part of public ABI (most public structs in - * FFmpeg). New macros and enum values may be added. Behavior in undocumented - * situations may change slightly (and be documented). All those are accompanied - * by an entry in doc/APIchanges and incrementing either the minor or micro - * version number. - */ - -/** - * @defgroup lavu libavutil - * Common code shared across all FFmpeg libraries. - * - * @note - * libavutil is designed to be modular. In most cases, in order to use the - * functions provided by one component of libavutil you must explicitly include - * the specific header containing that feature. If you are only using - * media-related components, you could simply include libavutil/avutil.h, which - * brings in most of the "core" components. - * - * @{ - * - * @defgroup lavu_crypto Crypto and Hashing - * - * @{ - * @} - * - * @defgroup lavu_math Mathematics - * @{ - * - * @} - * - * @defgroup lavu_string String Manipulation - * - * @{ - * - * @} - * - * @defgroup lavu_mem Memory Management - * - * @{ - * - * @} - * - * @defgroup lavu_data Data Structures - * @{ - * - * @} - * - * @defgroup lavu_video Video related - * - * @{ - * - * @} - * - * @defgroup lavu_audio Audio related - * - * @{ - * - * @} - * - * @defgroup lavu_error Error Codes - * - * @{ - * - * @} - * - * @defgroup lavu_log Logging Facility - * - * @{ - * - * @} - * - * @defgroup lavu_misc Other - * - * @{ - * - * @defgroup preproc_misc Preprocessor String Macros - * - * @{ - * - * @} - * - * @defgroup version_utils Library Version Macros - * - * @{ - * - * @} - */ - - -/** - * @addtogroup lavu_ver - * @{ - */ - -/** - * Return the LIBAVUTIL_VERSION_INT constant. - */ -unsigned avutil_version(void); - -/** - * Return an informative version string. This usually is the actual release - * version number or a git commit description. This string has no fixed format - * and can change any time. It should never be parsed by code. - */ -const char *av_version_info(void); - -/** - * Return the libavutil build-time configuration. - */ -const char *avutil_configuration(void); - -/** - * Return the libavutil license. - */ -const char *avutil_license(void); - -/** - * @} - */ - -/** - * @addtogroup lavu_media Media Type - * @brief Media Type - */ - -enum AVMediaType { - AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA - AVMEDIA_TYPE_VIDEO, - AVMEDIA_TYPE_AUDIO, - AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous - AVMEDIA_TYPE_SUBTITLE, - AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse - AVMEDIA_TYPE_NB -}; - -/** - * Return a string describing the media_type enum, NULL if media_type - * is unknown. - */ -const char *av_get_media_type_string(enum AVMediaType media_type); - -/** - * @defgroup lavu_const Constants - * @{ - * - * @defgroup lavu_enc Encoding specific - * - * @note those definition should move to avcodec - * @{ - */ - -#define FF_LAMBDA_SHIFT 7 -#define FF_LAMBDA_SCALE (1< -#include - -/** - * @defgroup lavu_buffer AVBuffer - * @ingroup lavu_data - * - * @{ - * AVBuffer is an API for reference-counted data buffers. - * - * There are two core objects in this API -- AVBuffer and AVBufferRef. AVBuffer - * represents the data buffer itself; it is opaque and not meant to be accessed - * by the caller directly, but only through AVBufferRef. However, the caller may - * e.g. compare two AVBuffer pointers to check whether two different references - * are describing the same data buffer. AVBufferRef represents a single - * reference to an AVBuffer and it is the object that may be manipulated by the - * caller directly. - * - * There are two functions provided for creating a new AVBuffer with a single - * reference -- av_buffer_alloc() to just allocate a new buffer, and - * av_buffer_create() to wrap an existing array in an AVBuffer. From an existing - * reference, additional references may be created with av_buffer_ref(). - * Use av_buffer_unref() to free a reference (this will automatically free the - * data once all the references are freed). - * - * The convention throughout this API and the rest of FFmpeg is such that the - * buffer is considered writable if there exists only one reference to it (and - * it has not been marked as read-only). The av_buffer_is_writable() function is - * provided to check whether this is true and av_buffer_make_writable() will - * automatically create a new writable buffer when necessary. - * Of course nothing prevents the calling code from violating this convention, - * however that is safe only when all the existing references are under its - * control. - * - * @note Referencing and unreferencing the buffers is thread-safe and thus - * may be done from multiple threads simultaneously without any need for - * additional locking. - * - * @note Two different references to the same buffer can point to different - * parts of the buffer (i.e. their AVBufferRef.data will not be equal). - */ - -/** - * A reference counted buffer type. It is opaque and is meant to be used through - * references (AVBufferRef). - */ -typedef struct AVBuffer AVBuffer; - -/** - * A reference to a data buffer. - * - * The size of this struct is not a part of the public ABI and it is not meant - * to be allocated directly. - */ -typedef struct AVBufferRef { - AVBuffer *buffer; - - /** - * The data buffer. It is considered writable if and only if - * this is the only reference to the buffer, in which case - * av_buffer_is_writable() returns 1. - */ - uint8_t *data; - /** - * Size of data in bytes. - */ - size_t size; -} AVBufferRef; - -/** - * Allocate an AVBuffer of the given size using av_malloc(). - * - * @return an AVBufferRef of given size or NULL when out of memory - */ -AVBufferRef *av_buffer_alloc(size_t size); - -/** - * Same as av_buffer_alloc(), except the returned buffer will be initialized - * to zero. - */ -AVBufferRef *av_buffer_allocz(size_t size); - -/** - * Always treat the buffer as read-only, even when it has only one - * reference. - */ -#define AV_BUFFER_FLAG_READONLY (1 << 0) - -/** - * Create an AVBuffer from an existing array. - * - * If this function is successful, data is owned by the AVBuffer. The caller may - * only access data through the returned AVBufferRef and references derived from - * it. - * If this function fails, data is left untouched. - * @param data data array - * @param size size of data in bytes - * @param free a callback for freeing this buffer's data - * @param opaque parameter to be got for processing or passed to free - * @param flags a combination of AV_BUFFER_FLAG_* - * - * @return an AVBufferRef referring to data on success, NULL on failure. - */ -AVBufferRef *av_buffer_create(uint8_t *data, size_t size, - void (*free)(void *opaque, uint8_t *data), - void *opaque, int flags); - -/** - * Default free callback, which calls av_free() on the buffer data. - * This function is meant to be passed to av_buffer_create(), not called - * directly. - */ -void av_buffer_default_free(void *opaque, uint8_t *data); - -/** - * Create a new reference to an AVBuffer. - * - * @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on - * failure. - */ -AVBufferRef *av_buffer_ref(const AVBufferRef *buf); - -/** - * Free a given reference and automatically free the buffer if there are no more - * references to it. - * - * @param buf the reference to be freed. The pointer is set to NULL on return. - */ -void av_buffer_unref(AVBufferRef **buf); - -/** - * @return 1 if the caller may write to the data referred to by buf (which is - * true if and only if buf is the only reference to the underlying AVBuffer). - * Return 0 otherwise. - * A positive answer is valid until av_buffer_ref() is called on buf. - */ -int av_buffer_is_writable(const AVBufferRef *buf); - -/** - * @return the opaque parameter set by av_buffer_create. - */ -void *av_buffer_get_opaque(const AVBufferRef *buf); - -int av_buffer_get_ref_count(const AVBufferRef *buf); - -/** - * Create a writable reference from a given buffer reference, avoiding data copy - * if possible. - * - * @param buf buffer reference to make writable. On success, buf is either left - * untouched, or it is unreferenced and a new writable AVBufferRef is - * written in its place. On failure, buf is left untouched. - * @return 0 on success, a negative AVERROR on failure. - */ -int av_buffer_make_writable(AVBufferRef **buf); - -/** - * Reallocate a given buffer. - * - * @param buf a buffer reference to reallocate. On success, buf will be - * unreferenced and a new reference with the required size will be - * written in its place. On failure buf will be left untouched. *buf - * may be NULL, then a new buffer is allocated. - * @param size required new buffer size. - * @return 0 on success, a negative AVERROR on failure. - * - * @note the buffer is actually reallocated with av_realloc() only if it was - * initially allocated through av_buffer_realloc(NULL) and there is only one - * reference to it (i.e. the one passed to this function). In all other cases - * a new buffer is allocated and the data is copied. - */ -int av_buffer_realloc(AVBufferRef **buf, size_t size); - -/** - * Ensure dst refers to the same data as src. - * - * When *dst is already equivalent to src, do nothing. Otherwise unreference dst - * and replace it with a new reference to src. - * - * @param dst Pointer to either a valid buffer reference or NULL. On success, - * this will point to a buffer reference equivalent to src. On - * failure, dst will be left untouched. - * @param src A buffer reference to replace dst with. May be NULL, then this - * function is equivalent to av_buffer_unref(dst). - * @return 0 on success - * AVERROR(ENOMEM) on memory allocation failure. - */ -int av_buffer_replace(AVBufferRef **dst, const AVBufferRef *src); - -/** - * @} - */ - -/** - * @defgroup lavu_bufferpool AVBufferPool - * @ingroup lavu_data - * - * @{ - * AVBufferPool is an API for a lock-free thread-safe pool of AVBuffers. - * - * Frequently allocating and freeing large buffers may be slow. AVBufferPool is - * meant to solve this in cases when the caller needs a set of buffers of the - * same size (the most obvious use case being buffers for raw video or audio - * frames). - * - * At the beginning, the user must call av_buffer_pool_init() to create the - * buffer pool. Then whenever a buffer is needed, call av_buffer_pool_get() to - * get a reference to a new buffer, similar to av_buffer_alloc(). This new - * reference works in all aspects the same way as the one created by - * av_buffer_alloc(). However, when the last reference to this buffer is - * unreferenced, it is returned to the pool instead of being freed and will be - * reused for subsequent av_buffer_pool_get() calls. - * - * When the caller is done with the pool and no longer needs to allocate any new - * buffers, av_buffer_pool_uninit() must be called to mark the pool as freeable. - * Once all the buffers are released, it will automatically be freed. - * - * Allocating and releasing buffers with this API is thread-safe as long as - * either the default alloc callback is used, or the user-supplied one is - * thread-safe. - */ - -/** - * The buffer pool. This structure is opaque and not meant to be accessed - * directly. It is allocated with av_buffer_pool_init() and freed with - * av_buffer_pool_uninit(). - */ -typedef struct AVBufferPool AVBufferPool; - -/** - * Allocate and initialize a buffer pool. - * - * @param size size of each buffer in this pool - * @param alloc a function that will be used to allocate new buffers when the - * pool is empty. May be NULL, then the default allocator will be used - * (av_buffer_alloc()). - * @return newly created buffer pool on success, NULL on error. - */ -AVBufferPool *av_buffer_pool_init(size_t size, AVBufferRef* (*alloc)(size_t size)); - -/** - * Allocate and initialize a buffer pool with a more complex allocator. - * - * @param size size of each buffer in this pool - * @param opaque arbitrary user data used by the allocator - * @param alloc a function that will be used to allocate new buffers when the - * pool is empty. May be NULL, then the default allocator will be - * used (av_buffer_alloc()). - * @param pool_free a function that will be called immediately before the pool - * is freed. I.e. after av_buffer_pool_uninit() is called - * by the caller and all the frames are returned to the pool - * and freed. It is intended to uninitialize the user opaque - * data. May be NULL. - * @return newly created buffer pool on success, NULL on error. - */ -AVBufferPool *av_buffer_pool_init2(size_t size, void *opaque, - AVBufferRef* (*alloc)(void *opaque, size_t size), - void (*pool_free)(void *opaque)); - -/** - * Mark the pool as being available for freeing. It will actually be freed only - * once all the allocated buffers associated with the pool are released. Thus it - * is safe to call this function while some of the allocated buffers are still - * in use. - * - * @param pool pointer to the pool to be freed. It will be set to NULL. - */ -void av_buffer_pool_uninit(AVBufferPool **pool); - -/** - * Allocate a new AVBuffer, reusing an old buffer from the pool when available. - * This function may be called simultaneously from multiple threads. - * - * @return a reference to the new buffer on success, NULL on error. - */ -AVBufferRef *av_buffer_pool_get(AVBufferPool *pool); - -/** - * Query the original opaque parameter of an allocated buffer in the pool. - * - * @param ref a buffer reference to a buffer returned by av_buffer_pool_get. - * @return the opaque parameter set by the buffer allocator function of the - * buffer pool. - * - * @note the opaque parameter of ref is used by the buffer pool implementation, - * therefore you have to use this function to access the original opaque - * parameter of an allocated buffer. - */ -void *av_buffer_pool_buffer_get_opaque(const AVBufferRef *ref); - -/** - * @} - */ - -#endif /* AVUTIL_BUFFER_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/channel_layout.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/channel_layout.h deleted file mode 100644 index 5ad2d5ed98..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/channel_layout.h +++ /dev/null @@ -1,762 +0,0 @@ -/* - * Copyright (c) 2006 Michael Niedermayer - * Copyright (c) 2008 Peter Ross - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CHANNEL_LAYOUT_H -#define AVUTIL_CHANNEL_LAYOUT_H - -#include -#include - -#include "version.h" -#include "attributes.h" - -/** - * @file - * @ingroup lavu_audio_channels - * Public libavutil channel layout APIs header. - */ - - -/** - * @defgroup lavu_audio_channels Audio channels - * @ingroup lavu_audio - * - * Audio channel layout utility functions - * - * @{ - */ - -enum AVChannel { - /// Invalid channel index - AV_CHAN_NONE = -1, - AV_CHAN_FRONT_LEFT, - AV_CHAN_FRONT_RIGHT, - AV_CHAN_FRONT_CENTER, - AV_CHAN_LOW_FREQUENCY, - AV_CHAN_BACK_LEFT, - AV_CHAN_BACK_RIGHT, - AV_CHAN_FRONT_LEFT_OF_CENTER, - AV_CHAN_FRONT_RIGHT_OF_CENTER, - AV_CHAN_BACK_CENTER, - AV_CHAN_SIDE_LEFT, - AV_CHAN_SIDE_RIGHT, - AV_CHAN_TOP_CENTER, - AV_CHAN_TOP_FRONT_LEFT, - AV_CHAN_TOP_FRONT_CENTER, - AV_CHAN_TOP_FRONT_RIGHT, - AV_CHAN_TOP_BACK_LEFT, - AV_CHAN_TOP_BACK_CENTER, - AV_CHAN_TOP_BACK_RIGHT, - /** Stereo downmix. */ - AV_CHAN_STEREO_LEFT = 29, - /** See above. */ - AV_CHAN_STEREO_RIGHT, - AV_CHAN_WIDE_LEFT, - AV_CHAN_WIDE_RIGHT, - AV_CHAN_SURROUND_DIRECT_LEFT, - AV_CHAN_SURROUND_DIRECT_RIGHT, - AV_CHAN_LOW_FREQUENCY_2, - AV_CHAN_TOP_SIDE_LEFT, - AV_CHAN_TOP_SIDE_RIGHT, - AV_CHAN_BOTTOM_FRONT_CENTER, - AV_CHAN_BOTTOM_FRONT_LEFT, - AV_CHAN_BOTTOM_FRONT_RIGHT, - AV_CHAN_SIDE_SURROUND_LEFT, ///< +90 degrees, Lss, SiL - AV_CHAN_SIDE_SURROUND_RIGHT, ///< -90 degrees, Rss, SiR - AV_CHAN_TOP_SURROUND_LEFT, ///< +110 degrees, Lvs, TpLS - AV_CHAN_TOP_SURROUND_RIGHT, ///< -110 degrees, Rvs, TpRS - - AV_CHAN_BINAURAL_LEFT = 61, - AV_CHAN_BINAURAL_RIGHT, - - /** Channel is empty can be safely skipped. */ - AV_CHAN_UNUSED = 0x200, - - /** Channel contains data, but its position is unknown. */ - AV_CHAN_UNKNOWN = 0x300, - - /** - * Range of channels between AV_CHAN_AMBISONIC_BASE and - * AV_CHAN_AMBISONIC_END represent Ambisonic components using the ACN system. - * - * Given a channel id `` between AV_CHAN_AMBISONIC_BASE and - * AV_CHAN_AMBISONIC_END (inclusive), the ACN index of the channel `` is - * ` = - AV_CHAN_AMBISONIC_BASE`. - * - * @note these values are only used for AV_CHANNEL_ORDER_CUSTOM channel - * orderings, the AV_CHANNEL_ORDER_AMBISONIC ordering orders the channels - * implicitly by their position in the stream. - */ - AV_CHAN_AMBISONIC_BASE = 0x400, - // leave space for 1024 ids, which correspond to maximum order-32 harmonics, - // which should be enough for the foreseeable use cases - AV_CHAN_AMBISONIC_END = 0x7ff, -}; - -enum AVChannelOrder { - /** - * Only the channel count is specified, without any further information - * about the channel order. - */ - AV_CHANNEL_ORDER_UNSPEC, - /** - * The native channel order, i.e. the channels are in the same order in - * which they are defined in the AVChannel enum. This supports up to 63 - * different channels. - */ - AV_CHANNEL_ORDER_NATIVE, - /** - * The channel order does not correspond to any other predefined order and - * is stored as an explicit map. For example, this could be used to support - * layouts with 64 or more channels, or with empty/skipped (AV_CHAN_UNUSED) - * channels at arbitrary positions. - */ - AV_CHANNEL_ORDER_CUSTOM, - /** - * The audio is represented as the decomposition of the sound field into - * spherical harmonics. Each channel corresponds to a single expansion - * component. Channels are ordered according to ACN (Ambisonic Channel - * Number). - * - * The channel with the index n in the stream contains the spherical - * harmonic of degree l and order m given by - * @code{.unparsed} - * l = floor(sqrt(n)), - * m = n - l * (l + 1). - * @endcode - * - * Conversely given a spherical harmonic of degree l and order m, the - * corresponding channel index n is given by - * @code{.unparsed} - * n = l * (l + 1) + m. - * @endcode - * - * Normalization is assumed to be SN3D (Schmidt Semi-Normalization) - * as defined in AmbiX format $ 2.1. - */ - AV_CHANNEL_ORDER_AMBISONIC, - /** - * Number of channel orders, not part of ABI/API - */ - FF_CHANNEL_ORDER_NB -}; - - -/** - * @defgroup channel_masks Audio channel masks - * - * A channel layout is a 64-bits integer with a bit set for every channel. - * The number of bits set must be equal to the number of channels. - * The value 0 means that the channel layout is not known. - * @note this data structure is not powerful enough to handle channels - * combinations that have the same channel multiple times, such as - * dual-mono. - * - * @{ - */ -#define AV_CH_FRONT_LEFT (1ULL << AV_CHAN_FRONT_LEFT ) -#define AV_CH_FRONT_RIGHT (1ULL << AV_CHAN_FRONT_RIGHT ) -#define AV_CH_FRONT_CENTER (1ULL << AV_CHAN_FRONT_CENTER ) -#define AV_CH_LOW_FREQUENCY (1ULL << AV_CHAN_LOW_FREQUENCY ) -#define AV_CH_BACK_LEFT (1ULL << AV_CHAN_BACK_LEFT ) -#define AV_CH_BACK_RIGHT (1ULL << AV_CHAN_BACK_RIGHT ) -#define AV_CH_FRONT_LEFT_OF_CENTER (1ULL << AV_CHAN_FRONT_LEFT_OF_CENTER ) -#define AV_CH_FRONT_RIGHT_OF_CENTER (1ULL << AV_CHAN_FRONT_RIGHT_OF_CENTER) -#define AV_CH_BACK_CENTER (1ULL << AV_CHAN_BACK_CENTER ) -#define AV_CH_SIDE_LEFT (1ULL << AV_CHAN_SIDE_LEFT ) -#define AV_CH_SIDE_RIGHT (1ULL << AV_CHAN_SIDE_RIGHT ) -#define AV_CH_TOP_CENTER (1ULL << AV_CHAN_TOP_CENTER ) -#define AV_CH_TOP_FRONT_LEFT (1ULL << AV_CHAN_TOP_FRONT_LEFT ) -#define AV_CH_TOP_FRONT_CENTER (1ULL << AV_CHAN_TOP_FRONT_CENTER ) -#define AV_CH_TOP_FRONT_RIGHT (1ULL << AV_CHAN_TOP_FRONT_RIGHT ) -#define AV_CH_TOP_BACK_LEFT (1ULL << AV_CHAN_TOP_BACK_LEFT ) -#define AV_CH_TOP_BACK_CENTER (1ULL << AV_CHAN_TOP_BACK_CENTER ) -#define AV_CH_TOP_BACK_RIGHT (1ULL << AV_CHAN_TOP_BACK_RIGHT ) -#define AV_CH_STEREO_LEFT (1ULL << AV_CHAN_STEREO_LEFT ) -#define AV_CH_STEREO_RIGHT (1ULL << AV_CHAN_STEREO_RIGHT ) -#define AV_CH_WIDE_LEFT (1ULL << AV_CHAN_WIDE_LEFT ) -#define AV_CH_WIDE_RIGHT (1ULL << AV_CHAN_WIDE_RIGHT ) -#define AV_CH_SURROUND_DIRECT_LEFT (1ULL << AV_CHAN_SURROUND_DIRECT_LEFT ) -#define AV_CH_SURROUND_DIRECT_RIGHT (1ULL << AV_CHAN_SURROUND_DIRECT_RIGHT) -#define AV_CH_LOW_FREQUENCY_2 (1ULL << AV_CHAN_LOW_FREQUENCY_2 ) -#define AV_CH_TOP_SIDE_LEFT (1ULL << AV_CHAN_TOP_SIDE_LEFT ) -#define AV_CH_TOP_SIDE_RIGHT (1ULL << AV_CHAN_TOP_SIDE_RIGHT ) -#define AV_CH_BOTTOM_FRONT_CENTER (1ULL << AV_CHAN_BOTTOM_FRONT_CENTER ) -#define AV_CH_BOTTOM_FRONT_LEFT (1ULL << AV_CHAN_BOTTOM_FRONT_LEFT ) -#define AV_CH_BOTTOM_FRONT_RIGHT (1ULL << AV_CHAN_BOTTOM_FRONT_RIGHT ) -#define AV_CH_SIDE_SURROUND_LEFT (1ULL << AV_CHAN_SIDE_SURROUND_LEFT ) -#define AV_CH_SIDE_SURROUND_RIGHT (1ULL << AV_CHAN_SIDE_SURROUND_RIGHT ) -#define AV_CH_TOP_SURROUND_LEFT (1ULL << AV_CHAN_TOP_SURROUND_LEFT ) -#define AV_CH_TOP_SURROUND_RIGHT (1ULL << AV_CHAN_TOP_SURROUND_RIGHT ) -#define AV_CH_BINAURAL_LEFT (1ULL << AV_CHAN_BINAURAL_LEFT ) -#define AV_CH_BINAURAL_RIGHT (1ULL << AV_CHAN_BINAURAL_RIGHT ) - -/** - * @} - * @defgroup channel_mask_c Audio channel layouts - * @{ - * */ -#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) -#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_3POINT1POINT2 (AV_CH_LAYOUT_3POINT1|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) -#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_5POINT1POINT2 (AV_CH_LAYOUT_5POINT1|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) -#define AV_CH_LAYOUT_5POINT1POINT2_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) -#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_CUBE (AV_CH_LAYOUT_QUAD|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT1POINT4_BACK (AV_CH_LAYOUT_5POINT1POINT2|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT1POINT2 (AV_CH_LAYOUT_7POINT1|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) -#define AV_CH_LAYOUT_7POINT1POINT4_BACK (AV_CH_LAYOUT_7POINT1POINT2|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT2POINT3 (AV_CH_LAYOUT_7POINT1POINT2|AV_CH_TOP_BACK_CENTER|AV_CH_LOW_FREQUENCY_2) -#define AV_CH_LAYOUT_9POINT1POINT4_BACK (AV_CH_LAYOUT_7POINT1POINT4_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_9POINT1POINT6 (AV_CH_LAYOUT_9POINT1POINT4_BACK|AV_CH_TOP_SIDE_LEFT|AV_CH_TOP_SIDE_RIGHT) -#define AV_CH_LAYOUT_HEXADECAGONAL (AV_CH_LAYOUT_OCTAGONAL|AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) -#define AV_CH_LAYOUT_BINAURAL (AV_CH_BINAURAL_LEFT|AV_CH_BINAURAL_RIGHT) -#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) -#define AV_CH_LAYOUT_22POINT2 (AV_CH_LAYOUT_9POINT1POINT6|AV_CH_BACK_CENTER|AV_CH_LOW_FREQUENCY_2|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_CENTER|AV_CH_TOP_BACK_CENTER|AV_CH_BOTTOM_FRONT_CENTER|AV_CH_BOTTOM_FRONT_LEFT|AV_CH_BOTTOM_FRONT_RIGHT) - -#define AV_CH_LAYOUT_7POINT1_TOP_BACK AV_CH_LAYOUT_5POINT1POINT2_BACK - -enum AVMatrixEncoding { - AV_MATRIX_ENCODING_NONE, - AV_MATRIX_ENCODING_DOLBY, - AV_MATRIX_ENCODING_DPLII, - AV_MATRIX_ENCODING_DPLIIX, - AV_MATRIX_ENCODING_DPLIIZ, - AV_MATRIX_ENCODING_DOLBYEX, - AV_MATRIX_ENCODING_DOLBYHEADPHONE, - AV_MATRIX_ENCODING_NB -}; - -/** - * @} - */ - -/** - * An AVChannelCustom defines a single channel within a custom order layout - * - * Unlike most structures in FFmpeg, sizeof(AVChannelCustom) is a part of the - * public ABI. - * - * No new fields may be added to it without a major version bump. - */ -typedef struct AVChannelCustom { - enum AVChannel id; - char name[16]; - void *opaque; -} AVChannelCustom; - -/** - * An AVChannelLayout holds information about the channel layout of audio data. - * - * A channel layout here is defined as a set of channels ordered in a specific - * way (unless the channel order is AV_CHANNEL_ORDER_UNSPEC, in which case an - * AVChannelLayout carries only the channel count). - * All orders may be treated as if they were AV_CHANNEL_ORDER_UNSPEC by - * ignoring everything but the channel count, as long as av_channel_layout_check() - * considers they are valid. - * - * Unlike most structures in FFmpeg, sizeof(AVChannelLayout) is a part of the - * public ABI and may be used by the caller. E.g. it may be allocated on stack - * or embedded in caller-defined structs. - * - * AVChannelLayout can be initialized as follows: - * - default initialization with {0}, followed by setting all used fields - * correctly; - * - by assigning one of the predefined AV_CHANNEL_LAYOUT_* initializers; - * - with a constructor function, such as av_channel_layout_default(), - * av_channel_layout_from_mask() or av_channel_layout_from_string(). - * - * The channel layout must be uninitialized with av_channel_layout_uninit() - * - * Copying an AVChannelLayout via assigning is forbidden, - * av_channel_layout_copy() must be used instead (and its return value should - * be checked) - * - * No new fields may be added to it without a major version bump, except for - * new elements of the union fitting in sizeof(uint64_t). - */ -typedef struct AVChannelLayout { - /** - * Channel order used in this layout. - * This is a mandatory field. - */ - enum AVChannelOrder order; - - /** - * Number of channels in this layout. Mandatory field. - */ - int nb_channels; - - /** - * Details about which channels are present in this layout. - * For AV_CHANNEL_ORDER_UNSPEC, this field is undefined and must not be - * used. - */ - union { - /** - * This member must be used for AV_CHANNEL_ORDER_NATIVE, and may be used - * for AV_CHANNEL_ORDER_AMBISONIC to signal non-diegetic channels. - * It is a bitmask, where the position of each set bit means that the - * AVChannel with the corresponding value is present. - * - * I.e. when (mask & (1 << AV_CHAN_FOO)) is non-zero, then AV_CHAN_FOO - * is present in the layout. Otherwise it is not present. - * - * @note when a channel layout using a bitmask is constructed or - * modified manually (i.e. not using any of the av_channel_layout_* - * functions), the code doing it must ensure that the number of set bits - * is equal to nb_channels. - */ - uint64_t mask; - /** - * This member must be used when the channel order is - * AV_CHANNEL_ORDER_CUSTOM. It is a nb_channels-sized array, with each - * element signalling the presence of the AVChannel with the - * corresponding value in map[i].id. - * - * I.e. when map[i].id is equal to AV_CHAN_FOO, then AV_CH_FOO is the - * i-th channel in the audio data. - * - * When map[i].id is in the range between AV_CHAN_AMBISONIC_BASE and - * AV_CHAN_AMBISONIC_END (inclusive), the channel contains an ambisonic - * component with ACN index (as defined above) - * n = map[i].id - AV_CHAN_AMBISONIC_BASE. - * - * map[i].name may be filled with a 0-terminated string, in which case - * it will be used for the purpose of identifying the channel with the - * convenience functions below. Otherwise it must be zeroed. - */ - AVChannelCustom *map; - } u; - - /** - * For some private data of the user. - */ - void *opaque; -} AVChannelLayout; - -/** - * Macro to define native channel layouts - * - * @note This doesn't use designated initializers for compatibility with C++ 17 and older. - */ -#define AV_CHANNEL_LAYOUT_MASK(nb, m) \ - { /* .order */ AV_CHANNEL_ORDER_NATIVE, \ - /* .nb_channels */ (nb), \ - /* .u.mask */ { m }, \ - /* .opaque */ NULL } - -/** - * @name Common pre-defined channel layouts - * @{ - */ -#define AV_CHANNEL_LAYOUT_MONO AV_CHANNEL_LAYOUT_MASK(1, AV_CH_LAYOUT_MONO) -#define AV_CHANNEL_LAYOUT_STEREO AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO) -#define AV_CHANNEL_LAYOUT_2POINT1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2POINT1) -#define AV_CHANNEL_LAYOUT_2_1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2_1) -#define AV_CHANNEL_LAYOUT_SURROUND AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_SURROUND) -#define AV_CHANNEL_LAYOUT_3POINT1 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_3POINT1) -#define AV_CHANNEL_LAYOUT_4POINT0 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_4POINT0) -#define AV_CHANNEL_LAYOUT_4POINT1 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_4POINT1) -#define AV_CHANNEL_LAYOUT_2_2 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_2_2) -#define AV_CHANNEL_LAYOUT_QUAD AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_QUAD) -#define AV_CHANNEL_LAYOUT_5POINT0 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0) -#define AV_CHANNEL_LAYOUT_5POINT1 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1) -#define AV_CHANNEL_LAYOUT_5POINT0_BACK AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0_BACK) -#define AV_CHANNEL_LAYOUT_5POINT1_BACK AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1_BACK) -#define AV_CHANNEL_LAYOUT_6POINT0 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0) -#define AV_CHANNEL_LAYOUT_6POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0_FRONT) -#define AV_CHANNEL_LAYOUT_3POINT1POINT2 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_3POINT1POINT2) -#define AV_CHANNEL_LAYOUT_HEXAGONAL AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_HEXAGONAL) -#define AV_CHANNEL_LAYOUT_6POINT1 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1) -#define AV_CHANNEL_LAYOUT_6POINT1_BACK AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_BACK) -#define AV_CHANNEL_LAYOUT_6POINT1_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_FRONT) -#define AV_CHANNEL_LAYOUT_7POINT0 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0) -#define AV_CHANNEL_LAYOUT_7POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0_FRONT) -#define AV_CHANNEL_LAYOUT_7POINT1 AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1) -#define AV_CHANNEL_LAYOUT_7POINT1_WIDE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE) -#define AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE_BACK) -#define AV_CHANNEL_LAYOUT_5POINT1POINT2 AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_5POINT1POINT2) -#define AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_5POINT1POINT2_BACK) -#define AV_CHANNEL_LAYOUT_OCTAGONAL AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_OCTAGONAL) -#define AV_CHANNEL_LAYOUT_CUBE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_CUBE) -#define AV_CHANNEL_LAYOUT_5POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_5POINT1POINT4_BACK) -#define AV_CHANNEL_LAYOUT_7POINT1POINT2 AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_7POINT1POINT2) -#define AV_CHANNEL_LAYOUT_7POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(12, AV_CH_LAYOUT_7POINT1POINT4_BACK) -#define AV_CHANNEL_LAYOUT_7POINT2POINT3 AV_CHANNEL_LAYOUT_MASK(12, AV_CH_LAYOUT_7POINT2POINT3) -#define AV_CHANNEL_LAYOUT_9POINT1POINT4_BACK AV_CHANNEL_LAYOUT_MASK(14, AV_CH_LAYOUT_9POINT1POINT4_BACK) -#define AV_CHANNEL_LAYOUT_9POINT1POINT6 AV_CHANNEL_LAYOUT_MASK(16, AV_CH_LAYOUT_9POINT1POINT6) -#define AV_CHANNEL_LAYOUT_HEXADECAGONAL AV_CHANNEL_LAYOUT_MASK(16, AV_CH_LAYOUT_HEXADECAGONAL) -#define AV_CHANNEL_LAYOUT_BINAURAL AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_BINAURAL) -#define AV_CHANNEL_LAYOUT_STEREO_DOWNMIX AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO_DOWNMIX) -#define AV_CHANNEL_LAYOUT_22POINT2 AV_CHANNEL_LAYOUT_MASK(24, AV_CH_LAYOUT_22POINT2) - -#define AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK - -#define AV_CHANNEL_LAYOUT_AMBISONIC_FIRST_ORDER \ - { /* .order */ AV_CHANNEL_ORDER_AMBISONIC, \ - /* .nb_channels */ 4, \ - /* .u.mask */ { 0 }, \ - /* .opaque */ NULL } -/** @} */ - -struct AVBPrint; - -/** - * Get a human readable string in an abbreviated form describing a given channel. - * This is the inverse function of @ref av_channel_from_string(). - * - * @param buf pre-allocated buffer where to put the generated string - * @param buf_size size in bytes of the buffer. - * @param channel the AVChannel whose name to get - * @return amount of bytes needed to hold the output string, or a negative AVERROR - * on failure. If the returned value is bigger than buf_size, then the - * string was truncated. - */ -int av_channel_name(char *buf, size_t buf_size, enum AVChannel channel); - -/** - * bprint variant of av_channel_name(). - * - * @note the string will be appended to the bprint buffer. - */ -void av_channel_name_bprint(struct AVBPrint *bp, enum AVChannel channel_id); - -/** - * Get a human readable string describing a given channel. - * - * @param buf pre-allocated buffer where to put the generated string - * @param buf_size size in bytes of the buffer. - * @param channel the AVChannel whose description to get - * @return amount of bytes needed to hold the output string, or a negative AVERROR - * on failure. If the returned value is bigger than buf_size, then the - * string was truncated. - */ -int av_channel_description(char *buf, size_t buf_size, enum AVChannel channel); - -/** - * bprint variant of av_channel_description(). - * - * @note the string will be appended to the bprint buffer. - */ -void av_channel_description_bprint(struct AVBPrint *bp, enum AVChannel channel_id); - -/** - * This is the inverse function of @ref av_channel_name(). - * - * @return the channel with the given name - * AV_CHAN_NONE when name does not identify a known channel - */ -enum AVChannel av_channel_from_string(const char *name); - -/** - * Initialize a custom channel layout with the specified number of channels. - * The channel map will be allocated and the designation of all channels will - * be set to AV_CHAN_UNKNOWN. - * - * This is only a convenience helper function, a custom channel layout can also - * be constructed without using this. - * - * @param channel_layout the layout structure to be initialized - * @param nb_channels the number of channels - * - * @return 0 on success - * AVERROR(EINVAL) if the number of channels <= 0 - * AVERROR(ENOMEM) if the channel map could not be allocated - */ -int av_channel_layout_custom_init(AVChannelLayout *channel_layout, int nb_channels); - -/** - * Initialize a native channel layout from a bitmask indicating which channels - * are present. - * - * @param channel_layout the layout structure to be initialized - * @param mask bitmask describing the channel layout - * - * @return 0 on success - * AVERROR(EINVAL) for invalid mask values - */ -int av_channel_layout_from_mask(AVChannelLayout *channel_layout, uint64_t mask); - -/** - * Initialize a channel layout from a given string description. - * The input string can be represented by: - * - the formal channel layout name (returned by av_channel_layout_describe()) - * - single or multiple channel names (returned by av_channel_name(), eg. "FL", - * or concatenated with "+", each optionally containing a custom name after - * a "@", eg. "FL@Left+FR@Right+LFE") - * - a decimal or hexadecimal value of a native channel layout (eg. "4" or "0x4") - * - the number of channels with default layout (eg. "4c") - * - the number of unordered channels (eg. "4C" or "4 channels") - * - the ambisonic order followed by optional non-diegetic channels (eg. - * "ambisonic 2+stereo") - * On error, the channel layout will remain uninitialized, but not necessarily - * untouched. - * - * @param channel_layout uninitialized channel layout for the result - * @param str string describing the channel layout - * @return 0 on success parsing the channel layout - * AVERROR(EINVAL) if an invalid channel layout string was provided - * AVERROR(ENOMEM) if there was not enough memory - */ -int av_channel_layout_from_string(AVChannelLayout *channel_layout, - const char *str); - -/** - * Get the default channel layout for a given number of channels. - * - * @param ch_layout the layout structure to be initialized - * @param nb_channels number of channels - */ -void av_channel_layout_default(AVChannelLayout *ch_layout, int nb_channels); - -/** - * Iterate over all standard channel layouts. - * - * @param opaque a pointer where libavutil will store the iteration state. Must - * point to NULL to start the iteration. - * - * @return the standard channel layout or NULL when the iteration is - * finished - */ -const AVChannelLayout *av_channel_layout_standard(void **opaque); - -/** - * Free any allocated data in the channel layout and reset the channel - * count to 0. - * - * @param channel_layout the layout structure to be uninitialized - */ -void av_channel_layout_uninit(AVChannelLayout *channel_layout); - -/** - * Make a copy of a channel layout. This differs from just assigning src to dst - * in that it allocates and copies the map for AV_CHANNEL_ORDER_CUSTOM. - * - * @note the destination channel_layout will be always uninitialized before copy. - * - * @param dst destination channel layout - * @param src source channel layout - * @return 0 on success, a negative AVERROR on error. - */ -int av_channel_layout_copy(AVChannelLayout *dst, const AVChannelLayout *src); - -/** - * Get a human-readable string describing the channel layout properties. - * The string will be in the same format that is accepted by - * @ref av_channel_layout_from_string(), allowing to rebuild the same - * channel layout, except for opaque pointers. - * - * @param channel_layout channel layout to be described - * @param buf pre-allocated buffer where to put the generated string - * @param buf_size size in bytes of the buffer. - * @return amount of bytes needed to hold the output string, or a negative AVERROR - * on failure. If the returned value is bigger than buf_size, then the - * string was truncated. - */ -int av_channel_layout_describe(const AVChannelLayout *channel_layout, - char *buf, size_t buf_size); - -/** - * bprint variant of av_channel_layout_describe(). - * - * @note the string will be appended to the bprint buffer. - * @return 0 on success, or a negative AVERROR value on failure. - */ -int av_channel_layout_describe_bprint(const AVChannelLayout *channel_layout, - struct AVBPrint *bp); - -/** - * Get the channel with the given index in a channel layout. - * - * @param channel_layout input channel layout - * @param idx index of the channel - * @return channel with the index idx in channel_layout on success or - * AV_CHAN_NONE on failure (if idx is not valid or the channel order is - * unspecified) - */ -enum AVChannel -av_channel_layout_channel_from_index(const AVChannelLayout *channel_layout, unsigned int idx); - -/** - * Get the index of a given channel in a channel layout. In case multiple - * channels are found, only the first match will be returned. - * - * @param channel_layout input channel layout - * @param channel the channel whose index to obtain - * @return index of channel in channel_layout on success or a negative number if - * channel is not present in channel_layout. - */ -int av_channel_layout_index_from_channel(const AVChannelLayout *channel_layout, - enum AVChannel channel); - -/** - * Get the index in a channel layout of a channel described by the given string. - * In case multiple channels are found, only the first match will be returned. - * - * This function accepts channel names in the same format as - * @ref av_channel_from_string(). - * - * @param channel_layout input channel layout - * @param name string describing the channel whose index to obtain - * @return a channel index described by the given string, or a negative AVERROR - * value. - */ -int av_channel_layout_index_from_string(const AVChannelLayout *channel_layout, - const char *name); - -/** - * Get a channel described by the given string. - * - * This function accepts channel names in the same format as - * @ref av_channel_from_string(). - * - * @param channel_layout input channel layout - * @param name string describing the channel to obtain - * @return a channel described by the given string in channel_layout on success - * or AV_CHAN_NONE on failure (if the string is not valid or the channel - * order is unspecified) - */ -enum AVChannel -av_channel_layout_channel_from_string(const AVChannelLayout *channel_layout, - const char *name); - -/** - * Find out what channels from a given set are present in a channel layout, - * without regard for their positions. - * - * @param channel_layout input channel layout - * @param mask a combination of AV_CH_* representing a set of channels - * @return a bitfield representing all the channels from mask that are present - * in channel_layout - */ -uint64_t av_channel_layout_subset(const AVChannelLayout *channel_layout, - uint64_t mask); - -/** - * Check whether a channel layout is valid, i.e. can possibly describe audio - * data. - * - * @param channel_layout input channel layout - * @return 1 if channel_layout is valid, 0 otherwise. - */ -int av_channel_layout_check(const AVChannelLayout *channel_layout); - -/** - * Check whether two channel layouts are semantically the same, i.e. the same - * channels are present on the same positions in both. - * - * If one of the channel layouts is AV_CHANNEL_ORDER_UNSPEC, while the other is - * not, they are considered to be unequal. If both are AV_CHANNEL_ORDER_UNSPEC, - * they are considered equal iff the channel counts are the same in both. - * - * @param chl input channel layout - * @param chl1 input channel layout - * @return 0 if chl and chl1 are equal, 1 if they are not equal. A negative - * AVERROR code if one or both are invalid. - */ -int av_channel_layout_compare(const AVChannelLayout *chl, const AVChannelLayout *chl1); - -/** - * Return the order if the layout is n-th order standard-order ambisonic. - * The presence of optional extra non-diegetic channels at the end is not taken - * into account. - * - * @param channel_layout input channel layout - * @return the order of the layout, a negative error code otherwise. - */ -int av_channel_layout_ambisonic_order(const AVChannelLayout *channel_layout); - -/** - * The conversion must be lossless. - */ -#define AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS (1 << 0) - -/** - * The specified retype target order is ignored and the simplest possible - * (canonical) order is used for which the input layout can be losslessy - * represented. - */ -#define AV_CHANNEL_LAYOUT_RETYPE_FLAG_CANONICAL (1 << 1) - -/** - * Change the AVChannelOrder of a channel layout. - * - * Change of AVChannelOrder can be either lossless or lossy. In case of a - * lossless conversion all the channel designations and the associated channel - * names (if any) are kept. On a lossy conversion the channel names and channel - * designations might be lost depending on the capabilities of the desired - * AVChannelOrder. Note that some conversions are simply not possible in which - * case this function returns AVERROR(ENOSYS). - * - * The following conversions are supported: - * - * Any -> Custom : Always possible, always lossless. - * Any -> Unspecified: Always possible, lossless if channel designations - * are all unknown and channel names are not used, lossy otherwise. - * Custom -> Ambisonic : Possible if it contains ambisonic channels with - * optional non-diegetic channels in the end. Lossy if the channels have - * custom names, lossless otherwise. - * Custom -> Native : Possible if it contains native channels in native - * order. Lossy if the channels have custom names, lossless otherwise. - * - * On error this function keeps the original channel layout untouched. - * - * @param channel_layout channel layout which will be changed - * @param order the desired channel layout order - * @param flags a combination of AV_CHANNEL_LAYOUT_RETYPE_FLAG_* constants - * @return 0 if the conversion was successful and lossless or if the channel - * layout was already in the desired order - * >0 if the conversion was successful but lossy - * AVERROR(ENOSYS) if the conversion was not possible (or would be - * lossy and AV_CHANNEL_LAYOUT_RETYPE_FLAG_LOSSLESS was specified) - * AVERROR(EINVAL), AVERROR(ENOMEM) on error - */ -int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrder order, int flags); - -/** - * @} - */ - -#endif /* AVUTIL_CHANNEL_LAYOUT_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/common.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/common.h deleted file mode 100644 index bf23aa50b0..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/common.h +++ /dev/null @@ -1,589 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * common internal and external API header - */ - -#ifndef AVUTIL_COMMON_H -#define AVUTIL_COMMON_H - -#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) && !defined(UINT64_C) -#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "attributes.h" -#include "error.h" -#include "macros.h" -#include "version.h" - -#ifdef HAVE_AV_CONFIG_H -# include "config.h" -# include "intmath.h" -# include "internal.h" -#else -# include "mem.h" -#endif /* HAVE_AV_CONFIG_H */ - -//rounded division & shift -#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) -/* assume b>0 */ -#define ROUNDED_DIV(a,b) (((a)>=0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) -/* Fast a/(1<=0 and b>=0 */ -#define AV_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \ - : ((a) + (1<<(b)) - 1) >> (b)) -/* Backwards compat. */ -#define FF_CEIL_RSHIFT AV_CEIL_RSHIFT - -#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b)) -#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b)) - -/** - * Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they - * are not representable as absolute values of their type. This is the same - * as with *abs() - * @see FFNABS() - */ -#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) -#define FFSIGN(a) ((a) > 0 ? 1 : -1) - -/** - * Negative Absolute value. - * this works for all integers of all types. - * As with many macros, this evaluates its argument twice, it thus must not have - * a sideeffect, that is FFNABS(x++) has undefined behavior. - */ -#define FFNABS(a) ((a) <= 0 ? (a) : (-(a))) - -/** - * Unsigned Absolute value. - * This takes the absolute value of a signed int and returns it as a unsigned. - * This also works with INT_MIN which would otherwise not be representable - * As with many macros, this evaluates its argument twice. - */ -#define FFABSU(a) ((a) <= 0 ? -(unsigned)(a) : (unsigned)(a)) -#define FFABS64U(a) ((a) <= 0 ? -(uint64_t)(a) : (uint64_t)(a)) - -/* misc math functions */ - -#ifndef av_ceil_log2 -# define av_ceil_log2 av_ceil_log2_c -#endif -#ifndef av_clip -# define av_clip av_clip_c -#endif -#ifndef av_clip64 -# define av_clip64 av_clip64_c -#endif -#ifndef av_clip_uint8 -# define av_clip_uint8 av_clip_uint8_c -#endif -#ifndef av_clip_int8 -# define av_clip_int8 av_clip_int8_c -#endif -#ifndef av_clip_uint16 -# define av_clip_uint16 av_clip_uint16_c -#endif -#ifndef av_clip_int16 -# define av_clip_int16 av_clip_int16_c -#endif -#ifndef av_clipl_int32 -# define av_clipl_int32 av_clipl_int32_c -#endif -#ifndef av_clip_intp2 -# define av_clip_intp2 av_clip_intp2_c -#endif -#ifndef av_clip_uintp2 -# define av_clip_uintp2 av_clip_uintp2_c -#endif -#ifndef av_sat_add32 -# define av_sat_add32 av_sat_add32_c -#endif -#ifndef av_sat_dadd32 -# define av_sat_dadd32 av_sat_dadd32_c -#endif -#ifndef av_sat_sub32 -# define av_sat_sub32 av_sat_sub32_c -#endif -#ifndef av_sat_dsub32 -# define av_sat_dsub32 av_sat_dsub32_c -#endif -#ifndef av_sat_add64 -# define av_sat_add64 av_sat_add64_c -#endif -#ifndef av_sat_sub64 -# define av_sat_sub64 av_sat_sub64_c -#endif -#ifndef av_clipf -# define av_clipf av_clipf_c -#endif -#ifndef av_clipd -# define av_clipd av_clipd_c -#endif -#ifndef av_zero_extend -# define av_zero_extend av_zero_extend_c -#endif -#ifndef av_popcount -# define av_popcount av_popcount_c -#endif -#ifndef av_popcount64 -# define av_popcount64 av_popcount64_c -#endif -#ifndef av_parity -# define av_parity av_parity_c -#endif - -#ifndef av_log2 -av_const int av_log2(unsigned v); -#endif - -#ifndef av_log2_16bit -av_const int av_log2_16bit(unsigned v); -#endif - -/** - * Clip a signed integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int av_clip_c(int a, int amin, int amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed 64bit integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed integer value into the 0-255 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint8_t av_clip_uint8_c(int a) -{ - if (a&(~0xFF)) return (~a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -128,127 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int8_t av_clip_int8_c(int a) -{ - if ((a+0x80U) & ~0xFF) return (a>>31) ^ 0x7F; - else return a; -} - -/** - * Clip a signed integer value into the 0-65535 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint16_t av_clip_uint16_c(int a) -{ - if (a&(~0xFFFF)) return (~a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -32768,32767 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int16_t av_clip_int16_c(int a) -{ - if ((a+0x8000U) & ~0xFFFF) return (a>>31) ^ 0x7FFF; - else return a; -} - -/** - * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) -{ - if ((a+UINT64_C(0x80000000)) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF); - else return (int32_t)a; -} - -/** - * Clip a signed integer into the -(2^p),(2^p-1) range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const int av_clip_intp2_c(int a, int p) -{ - if (((unsigned)a + (1U << p)) & ~((2U << p) - 1)) - return (a >> 31) ^ ((1 << p) - 1); - else - return a; -} - -/** - * Clip a signed integer to an unsigned power of two range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) -{ - if (a & ~((1U<> 31 & ((1U<= 2 - if (p > 31) abort(); -#endif - return a & ((1U << p) - 1); -} - -#if FF_API_MOD_UINTP2 -#ifndef av_mod_uintp2 -# define av_mod_uintp2 av_mod_uintp2_c -#endif -attribute_deprecated -static av_always_inline av_const unsigned av_mod_uintp2_c(unsigned a, unsigned p) -{ - return av_zero_extend_c(a, p); -} -#endif - -/** - * Add two signed 32-bit values with saturation. - * - * @param a one value - * @param b another value - * @return sum with signed saturation - */ -static av_always_inline int av_sat_add32_c(int a, int b) -{ - return av_clipl_int32((int64_t)a + b); -} - -/** - * Add a doubled value to another value with saturation at both stages. - * - * @param a first value - * @param b value doubled and added to a - * @return sum sat(a + sat(2*b)) with signed saturation - */ -static av_always_inline int av_sat_dadd32_c(int a, int b) -{ - return av_sat_add32(a, av_sat_add32(b, b)); -} - -/** - * Subtract two signed 32-bit values with saturation. - * - * @param a one value - * @param b another value - * @return difference with signed saturation - */ -static av_always_inline int av_sat_sub32_c(int a, int b) -{ - return av_clipl_int32((int64_t)a - b); -} - -/** - * Subtract a doubled value from another value with saturation at both stages. - * - * @param a first value - * @param b value doubled and subtracted from a - * @return difference sat(a - sat(2*b)) with signed saturation - */ -static av_always_inline int av_sat_dsub32_c(int a, int b) -{ - return av_sat_sub32(a, av_sat_add32(b, b)); -} - -/** - * Add two signed 64-bit values with saturation. - * - * @param a one value - * @param b another value - * @return sum with signed saturation - */ -static av_always_inline int64_t av_sat_add64_c(int64_t a, int64_t b) { -#if (!defined(__INTEL_COMPILER) && AV_GCC_VERSION_AT_LEAST(5,1)) || AV_HAS_BUILTIN(__builtin_add_overflow) - int64_t tmp; - return !__builtin_add_overflow(a, b, &tmp) ? tmp : (tmp < 0 ? INT64_MAX : INT64_MIN); -#else - int64_t s = a+(uint64_t)b; - if ((int64_t)(a^b | ~s^b) >= 0) - return INT64_MAX ^ (b >> 63); - return s; -#endif -} - -/** - * Subtract two signed 64-bit values with saturation. - * - * @param a one value - * @param b another value - * @return difference with signed saturation - */ -static av_always_inline int64_t av_sat_sub64_c(int64_t a, int64_t b) { -#if (!defined(__INTEL_COMPILER) && AV_GCC_VERSION_AT_LEAST(5,1)) || AV_HAS_BUILTIN(__builtin_sub_overflow) - int64_t tmp; - return !__builtin_sub_overflow(a, b, &tmp) ? tmp : (tmp < 0 ? INT64_MAX : INT64_MIN); -#else - if (b <= 0 && a >= INT64_MAX + b) - return INT64_MAX; - if (b >= 0 && a <= INT64_MIN + b) - return INT64_MIN; - return a - b; -#endif -} - -/** - * Clip a float value into the amin-amax range. - * If a is nan or -inf amin will be returned. - * If a is +inf amax will be returned. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const float av_clipf_c(float a, float amin, float amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - return FFMIN(FFMAX(a, amin), amax); -} - -/** - * Clip a double value into the amin-amax range. - * If a is nan or -inf amin will be returned. - * If a is +inf amax will be returned. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const double av_clipd_c(double a, double amin, double amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - return FFMIN(FFMAX(a, amin), amax); -} - -/** Compute ceil(log2(x)). - * @param x value used to compute ceil(log2(x)) - * @return computed ceiling of log2(x) - */ -static av_always_inline av_const int av_ceil_log2_c(int x) -{ - return av_log2((x - 1U) << 1); -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount_c(uint32_t x) -{ - x -= (x >> 1) & 0x55555555; - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - x = (x + (x >> 4)) & 0x0F0F0F0F; - x += x >> 8; - return (x + (x >> 16)) & 0x3F; -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount64_c(uint64_t x) -{ - return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32)); -} - -static av_always_inline av_const int av_parity_c(uint32_t v) -{ - return av_popcount(v) & 1; -} - -/** - * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_BYTE Expression reading one byte from the input. - * Evaluated up to 7 times (4 for the currently - * assigned Unicode range). With a memory buffer - * input, this could be *ptr++, or if you want to make sure - * that *ptr stops at the end of a NULL terminated string then - * *ptr ? *ptr++ : 0 - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - * - * @warning ERROR should not contain a loop control statement which - * could interact with the internal while loop, and should force an - * exit from the macro code (e.g. through a goto or a return) in order - * to prevent undefined results. - */ -#define GET_UTF8(val, GET_BYTE, ERROR)\ - val= (uint8_t)(GET_BYTE);\ - {\ - uint32_t top = (val & 128) >> 1;\ - if ((val & 0xc0) == 0x80 || val >= 0xFE)\ - {ERROR}\ - while (val & top) {\ - unsigned int tmp = (uint8_t)(GET_BYTE) - 128;\ - if(tmp>>6)\ - {ERROR}\ - val= (val<<6) + tmp;\ - top <<= 5;\ - }\ - val &= (top << 1) - 1;\ - } - -/** - * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_16BIT Expression returning two bytes of UTF-16 data converted - * to native byte order. Evaluated one or two times. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - */ -#define GET_UTF16(val, GET_16BIT, ERROR)\ - val = (uint16_t)(GET_16BIT);\ - {\ - unsigned int hi = val - 0xD800;\ - if (hi < 0x800) {\ - val = (uint16_t)(GET_16BIT) - 0xDC00;\ - if (val > 0x3FFU || hi > 0x3FFU)\ - {ERROR}\ - val += (hi<<10) + 0x10000;\ - }\ - }\ - -/** - * @def PUT_UTF8(val, tmp, PUT_BYTE) - * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint8_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_BYTE. - * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. - * It could be a function or a statement, and uses tmp as the input byte. - * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be - * executed up to 4 times for values in the valid UTF-8 range and up to - * 7 times in the general case, depending on the length of the converted - * Unicode character. - */ -#define PUT_UTF8(val, tmp, PUT_BYTE)\ - {\ - int bytes, shift;\ - uint32_t in = val;\ - if (in < 0x80) {\ - tmp = in;\ - PUT_BYTE\ - } else {\ - bytes = (av_log2(in) + 4) / 5;\ - shift = (bytes - 1) * 6;\ - tmp = (256 - (256 >> bytes)) | (in >> shift);\ - PUT_BYTE\ - while (shift >= 6) {\ - shift -= 6;\ - tmp = 0x80 | ((in >> shift) & 0x3f);\ - PUT_BYTE\ - }\ - }\ - } - -/** - * @def PUT_UTF16(val, tmp, PUT_16BIT) - * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint16_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_16BIT. - * @param PUT_16BIT writes the converted UTF-16 data to any proper destination - * in desired endianness. It could be a function or a statement, and uses tmp - * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" - * PUT_BYTE will be executed 1 or 2 times depending on input character. - */ -#define PUT_UTF16(val, tmp, PUT_16BIT)\ - {\ - uint32_t in = val;\ - if (in < 0x10000) {\ - tmp = in;\ - PUT_16BIT\ - } else {\ - tmp = 0xD800 | ((in - 0x10000) >> 10);\ - PUT_16BIT\ - tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ - PUT_16BIT\ - }\ - }\ - -#endif /* AVUTIL_COMMON_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/cpu.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/cpu.h deleted file mode 100644 index 07076dafb8..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/cpu.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 2002 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CPU_H -#define AVUTIL_CPU_H - -#include -#include "version.h" - -#if FF_API_CPU_FLAG_FORCE -#define AV_CPU_FLAG_FORCE 0x80000000 /* @deprecated, should not be used */ -#endif - - /* lower 16 bits - CPU features */ -#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX -#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW -#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions -#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions -#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt -#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions -#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions -#define AV_CPU_FLAG_SSSE3SLOW 0x4000000 ///< SSSE3 supported, but usually not faster -#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower -#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions -#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions -#define AV_CPU_FLAG_AESNI 0x80000 ///< Advanced Encryption Standard functions -#define AV_CPU_FLAG_CLMUL 0x400000 ///< Carry-less Multiplication instruction -#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_AVXSLOW 0x8000000 ///< AVX supported, but slow when using YMM registers (e.g. Bulldozer) -#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions -#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions -#define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction -#define AV_CPU_FLAG_AVX2 0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_FMA3 0x10000 ///< Haswell FMA3 functions -#define AV_CPU_FLAG_BMI1 0x20000 ///< Bit Manipulation Instruction Set 1 -#define AV_CPU_FLAG_BMI2 0x40000 ///< Bit Manipulation Instruction Set 2 -#define AV_CPU_FLAG_AVX512 0x100000 ///< AVX-512 functions: requires OS support even if YMM/ZMM registers aren't used -#define AV_CPU_FLAG_AVX512ICL 0x200000 ///< F/CD/BW/DQ/VL/VNNI/IFMA/VBMI/VBMI2/VPOPCNTDQ/BITALG/GFNI/VAES/VPCLMULQDQ -#define AV_CPU_FLAG_SLOW_GATHER 0x2000000 ///< CPU has slow gathers. - -#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard -#define AV_CPU_FLAG_VSX 0x0002 ///< ISA 2.06 -#define AV_CPU_FLAG_POWER8 0x0004 ///< ISA 2.07 - -#define AV_CPU_FLAG_ARMV5TE (1 << 0) -#define AV_CPU_FLAG_ARMV6 (1 << 1) -#define AV_CPU_FLAG_ARMV6T2 (1 << 2) -#define AV_CPU_FLAG_VFP (1 << 3) -#define AV_CPU_FLAG_VFPV3 (1 << 4) -#define AV_CPU_FLAG_NEON (1 << 5) -#define AV_CPU_FLAG_ARMV8 (1 << 6) -#define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations -#define AV_CPU_FLAG_DOTPROD (1 << 8) -#define AV_CPU_FLAG_I8MM (1 << 9) -#define AV_CPU_FLAG_SVE (1 <<10) -#define AV_CPU_FLAG_SVE2 (1 <<11) -#define AV_CPU_FLAG_SME (1 <<12) -#define AV_CPU_FLAG_ARM_CRC (1 <<13) -#define AV_CPU_FLAG_SME2 (1 <<14) -#define AV_CPU_FLAG_SME_I16I64 (1 <<15) -#define AV_CPU_FLAG_SETEND (1 <<16) -#define AV_CPU_FLAG_PMULL (1 <<17) -#define AV_CPU_FLAG_EOR3 (1 <<18) - -#define AV_CPU_FLAG_MMI (1 << 0) -#define AV_CPU_FLAG_MSA (1 << 1) - -//Loongarch SIMD extension. -#define AV_CPU_FLAG_LSX (1 << 0) -#define AV_CPU_FLAG_LASX (1 << 1) - -// RISC-V extensions -#define AV_CPU_FLAG_RVI (1 << 0) ///< I (full GPR bank) -#if FF_API_RISCV_FD_ZBA -#define AV_CPU_FLAG_RVF (1 << 1) ///< F (single precision FP) -#define AV_CPU_FLAG_RVD (1 << 2) ///< D (double precision FP) -#endif -#define AV_CPU_FLAG_RVV_I32 (1 << 3) ///< Vectors of 8/16/32-bit int's */ -#define AV_CPU_FLAG_RVV_F32 (1 << 4) ///< Vectors of float's */ -#define AV_CPU_FLAG_RVV_I64 (1 << 5) ///< Vectors of 64-bit int's */ -#define AV_CPU_FLAG_RVV_F64 (1 << 6) ///< Vectors of double's -#define AV_CPU_FLAG_RVB_BASIC (1 << 7) ///< Basic bit-manipulations -#if FF_API_RISCV_FD_ZBA -#define AV_CPU_FLAG_RVB_ADDR (1 << 8) ///< Address bit-manipulations -#endif -#define AV_CPU_FLAG_RV_ZVBB (1 << 9) ///< Vector basic bit-manipulations -#define AV_CPU_FLAG_RV_MISALIGNED (1 <<10) ///< Fast misaligned accesses -#define AV_CPU_FLAG_RVB (1 <<11) ///< B (bit manipulations) - -// WASM extensions -#define AV_CPU_FLAG_SIMD128 (1 << 0) - -/** - * Return the flags which specify extensions supported by the CPU. - * The returned value is affected by av_force_cpu_flags() if that was used - * before. So av_get_cpu_flags() can easily be used in an application to - * detect the enabled cpu flags. - */ -int av_get_cpu_flags(void); - -/** - * Disables cpu detection and forces the specified flags. - * -1 is a special case that disables forcing of specific flags. - */ -void av_force_cpu_flags(int flags); - -/** - * Parse CPU caps from a string and update the given AV_CPU_* flags based on that. - * - * @return negative on error. - */ -int av_parse_cpu_caps(unsigned *flags, const char *s); - -/** - * @return the number of logical CPU cores present. - */ -int av_cpu_count(void); - -/** - * Overrides cpu count detection and forces the specified count. - * Count < 1 disables forcing of specific count. - */ -void av_cpu_force_count(int count); - -/** - * Get the maximum data alignment that may be required by FFmpeg. - * - * Note that this is affected by the build configuration and the CPU flags mask, - * so e.g. if the CPU supports AVX, but libavutil has been built with - * --disable-avx or the AV_CPU_FLAG_AVX flag has been disabled through - * av_set_cpu_flags_mask(), then this function will behave as if AVX is not - * present. - */ -size_t av_cpu_max_align(void); - -#endif /* AVUTIL_CPU_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/dict.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/dict.h deleted file mode 100644 index 93c7cbf128..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/dict.h +++ /dev/null @@ -1,242 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Public dictionary API. - * @deprecated - * AVDictionary is provided for compatibility with libav. It is both in - * implementation as well as API inefficient. It does not scale and is - * extremely slow with large dictionaries. - * It is recommended that new code uses our tree container from tree.c/h - * where applicable, which uses AVL trees to achieve O(log n) performance. - */ - -#ifndef AVUTIL_DICT_H -#define AVUTIL_DICT_H - -#include - -/** - * @addtogroup lavu_dict AVDictionary - * @ingroup lavu_data - * - * @brief Simple key:value store - * - * @{ - * Dictionaries are used for storing key-value pairs. - * - * - To **create an AVDictionary**, simply pass an address of a NULL - * pointer to av_dict_set(). NULL can be used as an empty dictionary - * wherever a pointer to an AVDictionary is required. - * - To **insert an entry**, use av_dict_set(). - * - Use av_dict_get() to **retrieve an entry**. - * - To **iterate over all entries**, use av_dict_iterate(). - * - In order to **free the dictionary and all its contents**, use av_dict_free(). - * - @code - AVDictionary *d = NULL; // "create" an empty dictionary - AVDictionaryEntry *t = NULL; - - av_dict_set(&d, "foo", "bar", 0); // add an entry - - char *k = av_strdup("key"); // if your strings are already allocated, - char *v = av_strdup("value"); // you can avoid copying them like this - av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); - - while ((t = av_dict_iterate(d, t))) { - <....> // iterate over all entries in d - } - av_dict_free(&d); - @endcode - */ - -/** - * @name AVDictionary Flags - * Flags that influence behavior of the matching of keys or insertion to the dictionary. - * @{ - */ -#define AV_DICT_MATCH_CASE 1 /**< Only get an entry with exact-case key match. Only relevant in av_dict_get(). */ -#define AV_DICT_IGNORE_SUFFIX 2 /**< Return first entry in a dictionary whose first part corresponds to the search key, - ignoring the suffix of the found key string. Only relevant in av_dict_get(). */ -#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been - allocated with av_malloc() or another memory allocation function. */ -#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been - allocated with av_malloc() or another memory allocation function. */ -#define AV_DICT_DONT_OVERWRITE 16 /**< Don't overwrite existing entries. */ -#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no - delimiter is added, the strings are simply concatenated. */ -#define AV_DICT_MULTIKEY 64 /**< Allow to store several equal keys in the dictionary */ -#define AV_DICT_DEDUP 128 /**< If inserting a value that already exists for a key, do nothing. Only relevant with AV_DICT_MULTIKEY. */ -/** - * @} - */ - -typedef struct AVDictionaryEntry { - char *key; - char *value; -} AVDictionaryEntry; - -typedef struct AVDictionary AVDictionary; - -/** - * Get a dictionary entry with matching key. - * - * The returned entry key or value must not be changed, or it will - * cause undefined behavior. - * - * @param prev Set to the previous matching element to find the next. - * If set to NULL the first matching element is returned. - * @param key Matching key - * @param flags A collection of AV_DICT_* flags controlling how the - * entry is retrieved - * - * @return Found entry or NULL in case no matching entry was found in the dictionary - */ -AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key, - const AVDictionaryEntry *prev, int flags); - -/** - * Iterate over a dictionary - * - * Iterates through all entries in the dictionary. - * - * @warning The returned AVDictionaryEntry key/value must not be changed. - * - * @warning As av_dict_set() invalidates all previous entries returned - * by this function, it must not be called while iterating over the dict. - * - * Typical usage: - * @code - * const AVDictionaryEntry *e = NULL; - * while ((e = av_dict_iterate(m, e))) { - * // ... - * } - * @endcode - * - * @param m The dictionary to iterate over - * @param prev Pointer to the previous AVDictionaryEntry, NULL initially - * - * @retval AVDictionaryEntry* The next element in the dictionary - * @retval NULL No more elements in the dictionary - */ -const AVDictionaryEntry *av_dict_iterate(const AVDictionary *m, - const AVDictionaryEntry *prev); - -/** - * Get number of entries in dictionary. - * - * @param m dictionary - * @return number of entries in dictionary - */ -int av_dict_count(const AVDictionary *m); - -/** - * Set the given entry in *pm, overwriting an existing entry. - * - * Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set, - * these arguments will be freed on error. - * - * @warning Adding a new entry to a dictionary invalidates all existing entries - * previously returned with av_dict_get() or av_dict_iterate(). - * - * @param pm Pointer to a pointer to a dictionary struct. If *pm is NULL - * a dictionary struct is allocated and put in *pm. - * @param key Entry key to add to *pm (will either be av_strduped or added as a new key depending on flags) - * @param value Entry value to add to *pm (will be av_strduped or added as a new key depending on flags). - * Passing a NULL value will cause an existing entry to be deleted. - * - * @return >= 0 on success otherwise an error code <0 - */ -int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); - -/** - * Convenience wrapper for av_dict_set() that converts the value to a string - * and stores it. - * - * Note: If ::AV_DICT_DONT_STRDUP_KEY is set, key will be freed on error. - */ -int av_dict_set_int(AVDictionary **pm, const char *key, int64_t value, int flags); - -/** - * Parse the key/value pairs list and add the parsed entries to a dictionary. - * - * In case of failure, all the successfully set entries are stored in - * *pm. You may need to manually free the created dictionary. - * - * @param key_val_sep A 0-terminated list of characters used to separate - * key from value - * @param pairs_sep A 0-terminated list of characters used to separate - * two pairs from each other - * @param flags Flags to use when adding to the dictionary. - * ::AV_DICT_DONT_STRDUP_KEY and ::AV_DICT_DONT_STRDUP_VAL - * are ignored since the key/value tokens will always - * be duplicated. - * - * @return 0 on success, negative AVERROR code on failure - */ -int av_dict_parse_string(AVDictionary **pm, const char *str, - const char *key_val_sep, const char *pairs_sep, - int flags); - -/** - * Copy entries from one AVDictionary struct into another. - * - * @note Metadata is read using the ::AV_DICT_IGNORE_SUFFIX flag - * - * @param dst Pointer to a pointer to a AVDictionary struct to copy into. If *dst is NULL, - * this function will allocate a struct for you and put it in *dst - * @param src Pointer to the source AVDictionary struct to copy items from. - * @param flags Flags to use when setting entries in *dst - * - * @return 0 on success, negative AVERROR code on failure. If dst was allocated - * by this function, callers should free the associated memory. - */ -int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags); - -/** - * Free all the memory allocated for an AVDictionary struct - * and all keys and values. - */ -void av_dict_free(AVDictionary **m); - -/** - * Get dictionary entries as a string. - * - * Create a string containing dictionary's entries. - * Such string may be passed back to av_dict_parse_string(). - * @note String is escaped with backslashes ('\'). - * - * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same. - * - * @param[in] m The dictionary - * @param[out] buffer Pointer to buffer that will be allocated with string containing entries. - * Buffer must be freed by the caller when is no longer needed. - * @param[in] key_val_sep Character used to separate key from value - * @param[in] pairs_sep Character used to separate two pairs from each other - * - * @return >= 0 on success, negative on error - */ -int av_dict_get_string(const AVDictionary *m, char **buffer, - const char key_val_sep, const char pairs_sep); - -/** - * @} - */ - -#endif /* AVUTIL_DICT_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/error.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/error.h deleted file mode 100644 index 1efa86c4c1..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/error.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * error code definitions - */ - -#ifndef AVUTIL_ERROR_H -#define AVUTIL_ERROR_H - -#include -#include - -#include "macros.h" - -/** - * @addtogroup lavu_error - * - * @{ - */ - - -/* error handling */ -#if EDOM > 0 -#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. -#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. -#else -/* Some platforms have E* and errno already negated. */ -#define AVERROR(e) (e) -#define AVUNERROR(e) (e) -#endif - -#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d)) - -#define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found -#define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2 -#define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small -#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found -#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found -#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found -#define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file -#define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted -#define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library -#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found -#define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input -#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found -#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found -#define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome -#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found - -#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found -/** - * This is semantically identical to AVERROR_BUG - * it has been introduced in Libav after our AVERROR_BUG and with a modified value. - */ -#define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ') -#define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library -#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it. -#define AVERROR_INPUT_CHANGED (-0x636e6701) ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED) -#define AVERROR_OUTPUT_CHANGED (-0x636e6702) ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED) -/* HTTP & RTSP errors */ -#define AVERROR_HTTP_BAD_REQUEST FFERRTAG(0xF8,'4','0','0') -#define AVERROR_HTTP_UNAUTHORIZED FFERRTAG(0xF8,'4','0','1') -#define AVERROR_HTTP_FORBIDDEN FFERRTAG(0xF8,'4','0','3') -#define AVERROR_HTTP_NOT_FOUND FFERRTAG(0xF8,'4','0','4') -#define AVERROR_HTTP_TOO_MANY_REQUESTS FFERRTAG(0xF8,'4','2','9') -#define AVERROR_HTTP_OTHER_4XX FFERRTAG(0xF8,'4','X','X') -#define AVERROR_HTTP_SERVER_ERROR FFERRTAG(0xF8,'5','X','X') - -#define AV_ERROR_MAX_STRING_SIZE 64 - -/** - * Put a description of the AVERROR code errnum in errbuf. - * In case of failure the global variable errno is set to indicate the - * error. Even in case of failure av_strerror() will print a generic - * error message indicating the errnum provided to errbuf. - * - * @param errnum error code to describe - * @param errbuf buffer to which description is written - * @param errbuf_size the size in bytes of errbuf - * @return 0 on success, a negative value if a description for errnum - * cannot be found - */ -int av_strerror(int errnum, char *errbuf, size_t errbuf_size); - -/** - * Fill the provided buffer with a string containing an error string - * corresponding to the AVERROR code errnum. - * - * @param errbuf a buffer - * @param errbuf_size size in bytes of errbuf - * @param errnum error code to describe - * @return the buffer in input, filled with the error description - * @see av_strerror() - */ -static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum) -{ - av_strerror(errnum, errbuf, errbuf_size); - return errbuf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_err2str(errnum) \ - av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum) - -/** - * @} - */ - -#endif /* AVUTIL_ERROR_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/frame.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/frame.h deleted file mode 100644 index 02a54303bc..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/frame.h +++ /dev/null @@ -1,1183 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_frame - * reference-counted frame API - */ - -#ifndef AVUTIL_FRAME_H -#define AVUTIL_FRAME_H - -#include -#include - -#include "avutil.h" -#include "buffer.h" -#include "channel_layout.h" -#include "dict.h" -#include "rational.h" -#include "samplefmt.h" -#include "pixfmt.h" -#include "version.h" - - -/** - * @defgroup lavu_frame AVFrame - * @ingroup lavu_data - * - * @{ - * AVFrame is an abstraction for reference-counted raw multimedia data. - */ - -enum AVFrameSideDataType { - /** - * The data is the AVPanScan struct defined in libavcodec. - */ - AV_FRAME_DATA_PANSCAN, - /** - * ATSC A53 Part 4 Closed Captions. - * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data. - * The number of bytes of CC data is AVFrameSideData.size. - */ - AV_FRAME_DATA_A53_CC, - /** - * Stereoscopic 3d metadata. - * The data is the AVStereo3D struct defined in libavutil/stereo3d.h. - */ - AV_FRAME_DATA_STEREO3D, - /** - * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h. - */ - AV_FRAME_DATA_MATRIXENCODING, - /** - * Metadata relevant to a downmix procedure. - * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h. - */ - AV_FRAME_DATA_DOWNMIX_INFO, - /** - * ReplayGain information in the form of the AVReplayGain struct. - */ - AV_FRAME_DATA_REPLAYGAIN, - /** - * This side data contains a 3x3 transformation matrix describing an affine - * transformation that needs to be applied to the frame for correct - * presentation. - * - * See libavutil/display.h for a detailed description of the data. - */ - AV_FRAME_DATA_DISPLAYMATRIX, - /** - * Active Format Description data consisting of a single byte as specified - * in ETSI TS 101 154 using AVActiveFormatDescription enum. - */ - AV_FRAME_DATA_AFD, - /** - * Motion vectors exported by some codecs (on demand through the export_mvs - * flag set in the libavcodec AVCodecContext flags2 option). - * The data is the AVMotionVector struct defined in - * libavutil/motion_vector.h. - */ - AV_FRAME_DATA_MOTION_VECTORS, - /** - * Recommends skipping the specified number of samples. This is exported - * only if the "skip_manual" AVOption is set in libavcodec. - * This has the same format as AV_PKT_DATA_SKIP_SAMPLES. - * @code - * u32le number of samples to skip from start of this packet - * u32le number of samples to skip from end of this packet - * u8 reason for start skip - * u8 reason for end skip (0=padding silence, 1=convergence) - * @endcode - */ - AV_FRAME_DATA_SKIP_SAMPLES, - /** - * This side data must be associated with an audio frame and corresponds to - * enum AVAudioServiceType defined in avcodec.h. - */ - AV_FRAME_DATA_AUDIO_SERVICE_TYPE, - /** - * Mastering display metadata associated with a video frame. The payload is - * an AVMasteringDisplayMetadata type and contains information about the - * mastering display color volume. - */ - AV_FRAME_DATA_MASTERING_DISPLAY_METADATA, - /** - * The GOP timecode in 25 bit timecode format. Data format is 64-bit integer. - * This is set on the first frame of a GOP that has a temporal reference of 0. - */ - AV_FRAME_DATA_GOP_TIMECODE, - - /** - * The data represents the AVSphericalMapping structure defined in - * libavutil/spherical.h. - */ - AV_FRAME_DATA_SPHERICAL, - - /** - * Content light level (based on CTA-861.3). This payload contains data in - * the form of the AVContentLightMetadata struct. - */ - AV_FRAME_DATA_CONTENT_LIGHT_LEVEL, - - /** - * The data contains an ICC profile as an opaque octet buffer following the - * format described by ISO 15076-1 with an optional name defined in the - * metadata key entry "name". - */ - AV_FRAME_DATA_ICC_PROFILE, - - /** - * Timecode which conforms to SMPTE ST 12-1. The data is an array of 4 uint32_t - * where the first uint32_t describes how many (1-3) of the other timecodes are used. - * The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum() - * function in libavutil/timecode.h. - */ - AV_FRAME_DATA_S12M_TIMECODE, - - /** - * HDR dynamic metadata associated with a video frame. The payload is - * an AVDynamicHDRPlus type and contains information for color - * volume transform - application 4 of SMPTE 2094-40:2016 standard. - */ - AV_FRAME_DATA_DYNAMIC_HDR_PLUS, - - /** - * Regions Of Interest, the data is an array of AVRegionOfInterest type, the number of - * array element is implied by AVFrameSideData.size / AVRegionOfInterest.self_size. - */ - AV_FRAME_DATA_REGIONS_OF_INTEREST, - - /** - * Encoding parameters for a video frame, as described by AVVideoEncParams. - */ - AV_FRAME_DATA_VIDEO_ENC_PARAMS, - - /** - * User data unregistered metadata associated with a video frame. - * This is the H.26[45] UDU SEI message, and shouldn't be used for any other purpose - * The data is stored as uint8_t in AVFrameSideData.data which is 16 bytes of - * uuid_iso_iec_11578 followed by AVFrameSideData.size - 16 bytes of user_data_payload_byte. - */ - AV_FRAME_DATA_SEI_UNREGISTERED, - - /** - * Film grain parameters for a frame, described by AVFilmGrainParams. - * Must be present for every frame which should have film grain applied. - * - * May be present multiple times, for example when there are multiple - * alternative parameter sets for different video signal characteristics. - * The user should select the most appropriate set for the application. - */ - AV_FRAME_DATA_FILM_GRAIN_PARAMS, - - /** - * Bounding boxes for object detection and classification, - * as described by AVDetectionBBoxHeader. - */ - AV_FRAME_DATA_DETECTION_BBOXES, - - /** - * Dolby Vision RPU raw data, suitable for passing to x265 - * or other libraries. Array of uint8_t, with NAL emulation - * bytes intact. - */ - AV_FRAME_DATA_DOVI_RPU_BUFFER, - - /** - * Parsed Dolby Vision metadata, suitable for passing to a software - * implementation. The payload is the AVDOVIMetadata struct defined in - * libavutil/dovi_meta.h. - */ - AV_FRAME_DATA_DOVI_METADATA, - - /** - * HDR Vivid dynamic metadata associated with a video frame. The payload is - * an AVDynamicHDRVivid type and contains information for color - * volume transform - CUVA 005.1-2021. - */ - AV_FRAME_DATA_DYNAMIC_HDR_VIVID, - - /** - * Ambient viewing environment metadata, as defined by H.274. - */ - AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT, - - /** - * Provide encoder-specific hinting information about changed/unchanged - * portions of a frame. It can be used to pass information about which - * macroblocks can be skipped because they didn't change from the - * corresponding ones in the previous frame. This could be useful for - * applications which know this information in advance to speed up - * encoding. - */ - AV_FRAME_DATA_VIDEO_HINT, - - /** - * Raw LCEVC payload data, as a uint8_t array, with NAL emulation - * bytes intact. - */ - AV_FRAME_DATA_LCEVC, - - /** - * This side data must be associated with a video frame. - * The presence of this side data indicates that the video stream is - * composed of multiple views (e.g. stereoscopic 3D content, - * cf. H.264 Annex H or H.265 Annex G). - * The data is an int storing the view ID. - */ - AV_FRAME_DATA_VIEW_ID, - - /** - * This side data contains information about the reference display width(s) - * and reference viewing distance(s) as well as information about the - * corresponding reference stereo pair(s), i.e., the pair(s) of views to be - * displayed for the viewer's left and right eyes on the reference display - * at the reference viewing distance. - * The payload is the AV3DReferenceDisplaysInfo struct defined in - * libavutil/tdrdi.h. - */ - AV_FRAME_DATA_3D_REFERENCE_DISPLAYS, - - /** - * Extensible image file format metadata. The payload is a buffer containing - * EXIF metadata, starting with either 49 49 2a 00, or 4d 4d 00 2a. - */ - AV_FRAME_DATA_EXIF, - - /** - * HDR dynamic metadata associated with a video frame. The payload is - * an AVDynamicHDRSmpte2094App5 type and contains information for color - * volume transform as specified in the SMPTE 2094-50 standard. - */ - AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5, -}; - -enum AVActiveFormatDescription { - AV_AFD_SAME = 8, - AV_AFD_4_3 = 9, - AV_AFD_16_9 = 10, - AV_AFD_14_9 = 11, - AV_AFD_4_3_SP_14_9 = 13, - AV_AFD_16_9_SP_14_9 = 14, - AV_AFD_SP_4_3 = 15, -}; - - -/** - * Structure to hold side data for an AVFrame. - * - * sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added - * to the end with a minor bump. - */ -typedef struct AVFrameSideData { - enum AVFrameSideDataType type; - uint8_t *data; - size_t size; - AVDictionary *metadata; - AVBufferRef *buf; -} AVFrameSideData; - -enum AVSideDataProps { - /** - * The side data type can be used in stream-global structures. - * Side data types without this property are only meaningful on per-frame - * basis. - */ - AV_SIDE_DATA_PROP_GLOBAL = (1 << 0), - - /** - * Multiple instances of this side data type can be meaningfully present in - * a single side data array. - */ - AV_SIDE_DATA_PROP_MULTI = (1 << 1), - - /** - * Side data depends on the video dimensions. Side data with this property - * loses its meaning when rescaling or cropping the image, unless - * either recomputed or adjusted to the new resolution. - */ - AV_SIDE_DATA_PROP_SIZE_DEPENDENT = (1 << 2), - - /** - * Side data depends on the video color space. Side data with this property - * loses its meaning when changing the video color encoding, e.g. by - * adapting to a different set of primaries or transfer characteristics. - */ - AV_SIDE_DATA_PROP_COLOR_DEPENDENT = (1 << 3), - - /** - * Side data depends on the channel layout. Side data with this property - * loses its meaning when downmixing or upmixing, unless either recomputed - * or adjusted to the new layout. - */ - AV_SIDE_DATA_PROP_CHANNEL_DEPENDENT = (1 << 4), -}; - -/** - * This struct describes the properties of a side data type. Its instance - * corresponding to a given type can be obtained from av_frame_side_data_desc(). - */ -typedef struct AVSideDataDescriptor { - /** - * Human-readable side data description. - */ - const char *name; - - /** - * Side data property flags, a combination of AVSideDataProps values. - */ - unsigned props; -} AVSideDataDescriptor; - -/** - * Structure describing a single Region Of Interest. - * - * When multiple regions are defined in a single side-data block, they - * should be ordered from most to least important - some encoders are only - * capable of supporting a limited number of distinct regions, so will have - * to truncate the list. - * - * When overlapping regions are defined, the first region containing a given - * area of the frame applies. - */ -typedef struct AVRegionOfInterest { - /** - * Must be set to the size of this data structure (that is, - * sizeof(AVRegionOfInterest)). - */ - uint32_t self_size; - /** - * Distance in pixels from the top edge of the frame to the top and - * bottom edges and from the left edge of the frame to the left and - * right edges of the rectangle defining this region of interest. - * - * The constraints on a region are encoder dependent, so the region - * actually affected may be slightly larger for alignment or other - * reasons. - */ - int top; - int bottom; - int left; - int right; - /** - * Quantisation offset. - * - * Must be in the range -1 to +1. A value of zero indicates no quality - * change. A negative value asks for better quality (less quantisation), - * while a positive value asks for worse quality (greater quantisation). - * - * The range is calibrated so that the extreme values indicate the - * largest possible offset - if the rest of the frame is encoded with the - * worst possible quality, an offset of -1 indicates that this region - * should be encoded with the best possible quality anyway. Intermediate - * values are then interpolated in some codec-dependent way. - * - * For example, in 10-bit H.264 the quantisation parameter varies between - * -12 and 51. A typical qoffset value of -1/10 therefore indicates that - * this region should be encoded with a QP around one-tenth of the full - * range better than the rest of the frame. So, if most of the frame - * were to be encoded with a QP of around 30, this region would get a QP - * of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3). - * An extreme value of -1 would indicate that this region should be - * encoded with the best possible quality regardless of the treatment of - * the rest of the frame - that is, should be encoded at a QP of -12. - */ - AVRational qoffset; -} AVRegionOfInterest; - -/** - * This structure describes decoded (raw) audio or video data. - * - * AVFrame must be allocated using av_frame_alloc(). Note that this only - * allocates the AVFrame itself, the buffers for the data must be managed - * through other means (see below). - * AVFrame must be freed with av_frame_free(). - * - * AVFrame is typically allocated once and then reused multiple times to hold - * different data (e.g. a single AVFrame to hold frames received from a - * decoder). In such a case, av_frame_unref() will free any references held by - * the frame and reset it to its original clean state before it - * is reused again. - * - * The data described by an AVFrame is usually reference counted through the - * AVBuffer API. The underlying buffer references are stored in AVFrame.buf / - * AVFrame.extended_buf. An AVFrame is considered to be reference counted if at - * least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case, - * every single data plane must be contained in one of the buffers in - * AVFrame.buf or AVFrame.extended_buf. - * There may be a single buffer for all the data, or one separate buffer for - * each plane, or anything in between. - * - * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added - * to the end with a minor bump. - * - * Fields can be accessed through AVOptions, the name string used, matches the - * C structure field name for fields accessible through AVOptions. - */ -typedef struct AVFrame { -#define AV_NUM_DATA_POINTERS 8 - /** - * pointer to the picture/channel planes. - * This might be different from the first allocated byte. For video, - * it could even point to the end of the image data. - * - * All pointers in data and extended_data must point into one of the - * AVBufferRef in buf or extended_buf. - * - * Some decoders access areas outside 0,0 - width,height, please - * see avcodec_align_dimensions2(). Some filters and swscale can read - * up to 16 bytes beyond the planes, if these filters are to be used, - * then 16 extra bytes must be allocated. - * - * NOTE: Pointers not needed by the format MUST be set to NULL. - * - * @attention In case of video, the data[] pointers can point to the - * end of image data in order to reverse line order, when used in - * combination with negative values in the linesize[] array. - */ - uint8_t *data[AV_NUM_DATA_POINTERS]; - - /** - * For video, a positive or negative value, which is typically indicating - * the size in bytes of each picture line, but it can also be: - * - the negative byte size of lines for vertical flipping - * (with data[n] pointing to the end of the data - * - a positive or negative multiple of the byte size as for accessing - * even and odd fields of a frame (possibly flipped) - * - * For audio, only linesize[0] may be set. For planar audio, each channel - * plane must be the same size. - * - * For video the linesizes should be multiples of the CPUs alignment - * preference, this is 16 or 32 for modern desktop CPUs. - * Some code requires such alignment other code can be slower without - * correct alignment, for yet other it makes no difference. - * - * @note The linesize may be larger than the size of usable data -- there - * may be extra padding present for performance reasons. - * - * @attention In case of video, line size values can be negative to achieve - * a vertically inverted iteration over image lines. - */ - int linesize[AV_NUM_DATA_POINTERS]; - - /** - * pointers to the data planes/channels. - * - * For video, this should simply point to data[]. - * - * For planar audio, each channel has a separate data pointer, and - * linesize[0] contains the size of each channel buffer. - * For packed audio, there is just one data pointer, and linesize[0] - * contains the total size of the buffer for all channels. - * - * Note: Both data and extended_data should always be set in a valid frame, - * but for planar audio with more channels that can fit in data, - * extended_data must be used in order to access all channels. - */ - uint8_t **extended_data; - - /** - * @name Video dimensions - * Video frames only. The coded dimensions (in pixels) of the video frame, - * i.e. the size of the rectangle that contains some well-defined values. - * - * @note The part of the frame intended for display/presentation is further - * restricted by the @ref cropping "Cropping rectangle". - * @{ - */ - int width, height; - /** - * @} - */ - - /** - * number of audio samples (per channel) described by this frame - */ - int nb_samples; - - /** - * format of the frame, -1 if unknown or unset - * Values correspond to enum AVPixelFormat for video frames, - * enum AVSampleFormat for audio) - */ - int format; - - /** - * Picture type of the frame. - */ - enum AVPictureType pict_type; - - /** - * Sample aspect ratio for the video frame, 0/1 if unknown/unspecified. - */ - AVRational sample_aspect_ratio; - - /** - * Presentation timestamp in time_base units (time when frame should be shown to user). - */ - int64_t pts; - - /** - * DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used) - * This is also the Presentation time of this AVFrame calculated from - * only AVPacket.dts values without pts values. - */ - int64_t pkt_dts; - - /** - * Time base for the timestamps in this frame. - * In the future, this field may be set on frames output by decoders or - * filters, but its value will be by default ignored on input to encoders - * or filters. - */ - AVRational time_base; - - /** - * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) - */ - int quality; - - /** - * Frame owner's private data. - * - * This field may be set by the code that allocates/owns the frame data. - * It is then not touched by any library functions, except: - * - it is copied to other references by av_frame_copy_props() (and hence by - * av_frame_ref()); - * - it is set to NULL when the frame is cleared by av_frame_unref() - * - on the caller's explicit request. E.g. libavcodec encoders/decoders - * will copy this field to/from @ref AVPacket "AVPackets" if the caller sets - * @ref AV_CODEC_FLAG_COPY_OPAQUE. - * - * @see opaque_ref the reference-counted analogue - */ - void *opaque; - - /** - * Number of fields in this frame which should be repeated, i.e. the total - * duration of this frame should be repeat_pict + 2 normal field durations. - * - * For interlaced frames this field may be set to 1, which signals that this - * frame should be presented as 3 fields: beginning with the first field (as - * determined by AV_FRAME_FLAG_TOP_FIELD_FIRST being set or not), followed - * by the second field, and then the first field again. - * - * For progressive frames this field may be set to a multiple of 2, which - * signals that this frame's duration should be (repeat_pict + 2) / 2 - * normal frame durations. - * - * @note This field is computed from MPEG2 repeat_first_field flag and its - * associated flags, H.264 pic_struct from picture timing SEI, and - * their analogues in other codecs. Typically it should only be used when - * higher-layer timing information is not available. - */ - int repeat_pict; - - /** - * Sample rate of the audio data. - */ - int sample_rate; - - /** - * AVBuffer references backing the data for this frame. All the pointers in - * data and extended_data must point inside one of the buffers in buf or - * extended_buf. This array must be filled contiguously -- if buf[i] is - * non-NULL then buf[j] must also be non-NULL for all j < i. - * - * There may be at most one AVBuffer per data plane, so for video this array - * always contains all the references. For planar audio with more than - * AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in - * this array. Then the extra AVBufferRef pointers are stored in the - * extended_buf array. - */ - AVBufferRef *buf[AV_NUM_DATA_POINTERS]; - - /** - * For planar audio which requires more than AV_NUM_DATA_POINTERS - * AVBufferRef pointers, this array will hold all the references which - * cannot fit into AVFrame.buf. - * - * Note that this is different from AVFrame.extended_data, which always - * contains all the pointers. This array only contains the extra pointers, - * which cannot fit into AVFrame.buf. - * - * This array is always allocated using av_malloc() by whoever constructs - * the frame. It is freed in av_frame_unref(). - */ - AVBufferRef **extended_buf; - /** - * Number of elements in extended_buf. - */ - int nb_extended_buf; - - AVFrameSideData **side_data; - int nb_side_data; - -/** - * @defgroup lavu_frame_flags AV_FRAME_FLAGS - * @ingroup lavu_frame - * Flags describing additional frame properties. - * - * @{ - */ - -/** - * The frame data may be corrupted, e.g. due to decoding errors. - */ -#define AV_FRAME_FLAG_CORRUPT (1 << 0) -/** - * A flag to mark frames that are keyframes. - */ -#define AV_FRAME_FLAG_KEY (1 << 1) -/** - * A flag to mark the frames which need to be decoded, but shouldn't be output. - */ -#define AV_FRAME_FLAG_DISCARD (1 << 2) -/** - * A flag to mark frames whose content is interlaced. - */ -#define AV_FRAME_FLAG_INTERLACED (1 << 3) -/** - * A flag to mark frames where the top field is displayed first if the content - * is interlaced. - */ -#define AV_FRAME_FLAG_TOP_FIELD_FIRST (1 << 4) -/** - * A decoder can use this flag to mark frames which were originally encoded losslessly. - * - * For coding bitstream formats which support both lossless and lossy - * encoding, it is sometimes possible for a decoder to determine which method - * was used when the bitstream was encoded. - */ -#define AV_FRAME_FLAG_LOSSLESS (1 << 5) -/** - * @} - */ - - /** - * Frame flags, a combination of @ref lavu_frame_flags - */ - int flags; - - /** - * MPEG vs JPEG YUV range. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorRange color_range; - - enum AVColorPrimaries color_primaries; - - enum AVColorTransferCharacteristic color_trc; - - /** - * YUV colorspace type. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorSpace colorspace; - - enum AVChromaLocation chroma_location; - - /** - * frame timestamp estimated using various heuristics, in stream time base - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int64_t best_effort_timestamp; - - /** - * metadata. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVDictionary *metadata; - - /** - * decode error flags of the frame, set to a combination of - * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there - * were errors during the decoding. - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int decode_error_flags; -#define FF_DECODE_ERROR_INVALID_BITSTREAM 1 -#define FF_DECODE_ERROR_MISSING_REFERENCE 2 -#define FF_DECODE_ERROR_CONCEALMENT_ACTIVE 4 -#define FF_DECODE_ERROR_DECODE_SLICES 8 - - /** - * For hwaccel-format frames, this should be a reference to the - * AVHWFramesContext describing the frame. - */ - AVBufferRef *hw_frames_ctx; - - /** - * Frame owner's private data. - * - * This field may be set by the code that allocates/owns the frame data. - * It is then not touched by any library functions, except: - * - a new reference to the underlying buffer is propagated by - * av_frame_copy_props() (and hence by av_frame_ref()); - * - it is unreferenced in av_frame_unref(); - * - on the caller's explicit request. E.g. libavcodec encoders/decoders - * will propagate a new reference to/from @ref AVPacket "AVPackets" if the - * caller sets @ref AV_CODEC_FLAG_COPY_OPAQUE. - * - * @see opaque the plain pointer analogue - */ - AVBufferRef *opaque_ref; - - /** - * @anchor cropping - * @name Cropping - * Video frames only. The number of pixels to discard from the - * top/bottom/left/right border of the frame to obtain the sub-rectangle of - * the frame intended for presentation. - * @{ - */ - size_t crop_top; - size_t crop_bottom; - size_t crop_left; - size_t crop_right; - /** - * @} - */ - - /** - * RefStruct reference for internal use by a single libav* library. - * Must not be used to transfer data between libraries. - * Has to be NULL when ownership of the frame leaves the respective library. - * - * Code outside the FFmpeg libs must never check or change private_ref. - */ - void *private_ref; - - /** - * Channel layout of the audio data. - */ - AVChannelLayout ch_layout; - - /** - * Duration of the frame, in the same units as pts. 0 if unknown. - */ - int64_t duration; - - /** - * Indicates how the alpha channel of the video is to be handled. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVAlphaMode alpha_mode; -} AVFrame; - - -/** - * Allocate an AVFrame and set its fields to default values. The resulting - * struct must be freed using av_frame_free(). - * - * @return An AVFrame filled with default values or NULL on failure. - * - * @note this only allocates the AVFrame itself, not the data buffers. Those - * must be allocated through other means, e.g. with av_frame_get_buffer() or - * manually. - */ -AVFrame *av_frame_alloc(void); - -/** - * Free the frame and any dynamically allocated objects in it, - * e.g. extended_data. If the frame is reference counted, it will be - * unreferenced first. - * - * @param frame frame to be freed. The pointer will be set to NULL. - */ -void av_frame_free(AVFrame **frame); - -/** - * Set up a new reference to the data described by the source frame. - * - * Copy frame properties from src to dst and create a new reference for each - * AVBufferRef from src. - * - * If src is not reference counted, new buffers are allocated and the data is - * copied. - * - * @warning: dst MUST have been either unreferenced with av_frame_unref(dst), - * or newly allocated with av_frame_alloc() before calling this - * function, or undefined behavior will occur. - * - * @return 0 on success, a negative AVERROR on error - */ -int av_frame_ref(AVFrame *dst, const AVFrame *src); - -/** - * Ensure the destination frame refers to the same data described by the source - * frame, either by creating a new reference for each AVBufferRef from src if - * they differ from those in dst, by allocating new buffers and copying data if - * src is not reference counted, or by unreferencing it if src is empty. - * - * Frame properties on dst will be replaced by those from src. - * - * @return 0 on success, a negative AVERROR on error. On error, dst is - * unreferenced. - */ -int av_frame_replace(AVFrame *dst, const AVFrame *src); - -/** - * Create a new frame that references the same data as src. - * - * This is a shortcut for av_frame_alloc()+av_frame_ref(). - * - * @return newly created AVFrame on success, NULL on error. - */ -AVFrame *av_frame_clone(const AVFrame *src); - -/** - * Unreference all the buffers referenced by frame and reset the frame fields. - */ -void av_frame_unref(AVFrame *frame); - -/** - * Move everything contained in src to dst and reset src. - * - * @warning: dst is not unreferenced, but directly overwritten without reading - * or deallocating its contents. Call av_frame_unref(dst) manually - * before calling this function to ensure that no memory is leaked. - */ -void av_frame_move_ref(AVFrame *dst, AVFrame *src); - -/** - * Allocate new buffer(s) for audio or video data. - * - * The following fields must be set on frame before calling this function: - * - format (pixel format for video, sample format for audio) - * - width and height for video - * - nb_samples and ch_layout for audio - * - * This function will fill AVFrame.data and AVFrame.buf arrays and, if - * necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf. - * For planar formats, one buffer will be allocated for each plane. - * - * @warning: if frame already has been allocated, calling this function will - * leak memory. In addition, undefined behavior can occur in certain - * cases. - * - * @param frame frame in which to store the new buffers. - * @param align Required buffer size and data pointer alignment. If equal to 0, - * alignment will be chosen automatically for the current CPU. - * It is highly recommended to pass 0 here unless you know what - * you are doing. - * - * @return 0 on success, a negative AVERROR on error. - */ -int av_frame_get_buffer(AVFrame *frame, int align); - -/** - * Check if the frame data is writable. - * - * @return A positive value if the frame data is writable (which is true if and - * only if each of the underlying buffers has only one reference, namely the one - * stored in this frame). Return 0 otherwise. - * - * If 1 is returned the answer is valid until av_buffer_ref() is called on any - * of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly). - * - * @see av_frame_make_writable(), av_buffer_is_writable() - */ -int av_frame_is_writable(AVFrame *frame); - -/** - * Ensure that the frame data is writable, avoiding data copy if possible. - * - * Do nothing if the frame is writable, allocate new buffers and copy the data - * if it is not. Non-refcounted frames behave as non-writable, i.e. a copy - * is always made. - * - * @return 0 on success, a negative AVERROR on error. - * - * @see av_frame_is_writable(), av_buffer_is_writable(), - * av_buffer_make_writable() - */ -int av_frame_make_writable(AVFrame *frame); - -/** - * Copy the frame data from src to dst. - * - * This function does not allocate anything, dst must be already initialized and - * allocated with the same parameters as src. - * - * This function only copies the frame data (i.e. the contents of the data / - * extended data arrays), not any other properties. - * - * @return >= 0 on success, a negative AVERROR on error. - */ -int av_frame_copy(AVFrame *dst, const AVFrame *src); - -/** - * Copy only "metadata" fields from src to dst. - * - * Metadata for the purpose of this function are those fields that do not affect - * the data layout in the buffers. E.g. pts, sample rate (for audio) or sample - * aspect ratio (for video), but not width/height or channel layout. - * Side data is also copied. - */ -int av_frame_copy_props(AVFrame *dst, const AVFrame *src); - -/** - * Get the buffer reference a given data plane is stored in. - * - * @param frame the frame to get the plane's buffer from - * @param plane index of the data plane of interest in frame->extended_data. - * - * @return the buffer reference that contains the plane or NULL if the input - * frame is not valid. - */ -AVBufferRef *av_frame_get_plane_buffer(const AVFrame *frame, int plane); - -/** - * Add a new side data to a frame. - * - * @param frame a frame to which the side data should be added - * @param type type of the added side data - * @param size size of the side data - * - * @return newly added side data on success, NULL on error - */ -AVFrameSideData *av_frame_new_side_data(AVFrame *frame, - enum AVFrameSideDataType type, - size_t size); - -/** - * Add a new side data to a frame from an existing AVBufferRef - * - * @param frame a frame to which the side data should be added - * @param type the type of the added side data - * @param buf an AVBufferRef to add as side data. The ownership of - * the reference is transferred to the frame. - * - * @return newly added side data on success, NULL on error. On failure - * the frame is unchanged and the AVBufferRef remains owned by - * the caller. - */ -AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, - enum AVFrameSideDataType type, - AVBufferRef *buf); - -/** - * @return a pointer to the side data of a given type on success, NULL if there - * is no side data with such type in this frame. - */ -AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, - enum AVFrameSideDataType type); - -/** - * Remove and free all side data instances of the given type. - */ -void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type); - - -/** - * Flags for frame cropping. - */ -enum { - /** - * Apply the maximum possible cropping, even if it requires setting the - * AVFrame.data[] entries to unaligned pointers. Passing unaligned data - * to FFmpeg API is generally not allowed, and causes undefined behavior - * (such as crashes). You can pass unaligned data only to FFmpeg APIs that - * are explicitly documented to accept it. Use this flag only if you - * absolutely know what you are doing. - */ - AV_FRAME_CROP_UNALIGNED = 1 << 0, -}; - -/** - * Crop the given video AVFrame according to its crop_left/crop_top/crop_right/ - * crop_bottom fields. If cropping is successful, the function will adjust the - * data pointers and the width/height fields, and set the crop fields to 0. - * - * In all cases, the cropping boundaries will be rounded to the inherent - * alignment of the pixel format. In some cases, such as for opaque hwaccel - * formats, the left/top cropping is ignored. The crop fields are set to 0 even - * if the cropping was rounded or ignored. - * - * @param frame the frame which should be cropped - * @param flags Some combination of AV_FRAME_CROP_* flags, or 0. - * - * @return >= 0 on success, a negative AVERROR on error. If the cropping fields - * were invalid, AVERROR(ERANGE) is returned, and nothing is changed. - */ -int av_frame_apply_cropping(AVFrame *frame, int flags); - -/** - * @return a string identifying the side data type - */ -const char *av_frame_side_data_name(enum AVFrameSideDataType type); - -/** - * @return side data descriptor corresponding to a given side data type, NULL - * when not available. - */ -const AVSideDataDescriptor *av_frame_side_data_desc(enum AVFrameSideDataType type); - -/** - * Free all side data entries and their contents, then zeroes out the - * values which the pointers are pointing to. - * - * @param sd pointer to array of side data to free. Will be set to NULL - * upon return. - * @param nb_sd pointer to an integer containing the number of entries in - * the array. Will be set to 0 upon return. - */ -void av_frame_side_data_free(AVFrameSideData ***sd, int *nb_sd); - -/** - * Remove existing entries before adding new ones. - */ -#define AV_FRAME_SIDE_DATA_FLAG_UNIQUE (1 << 0) -/** - * Don't add a new entry if another of the same type exists. - * Applies only for side data types without the AV_SIDE_DATA_PROP_MULTI prop. - */ -#define AV_FRAME_SIDE_DATA_FLAG_REPLACE (1 << 1) -/** - * Create a new reference to the passed in buffer instead of taking ownership - * of it. - */ -#define AV_FRAME_SIDE_DATA_FLAG_NEW_REF (1 << 2) - -/** - * Add new side data entry to an array. - * - * @param sd pointer to array of side data to which to add another entry, - * or to NULL in order to start a new array. - * @param nb_sd pointer to an integer containing the number of entries in - * the array. - * @param type type of the added side data - * @param size size of the side data - * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, or 0. - * - * @return newly added side data on success, NULL on error. - * @note In case of AV_FRAME_SIDE_DATA_FLAG_UNIQUE being set, entries of - * matching AVFrameSideDataType will be removed before the addition - * is attempted. - * @note In case of AV_FRAME_SIDE_DATA_FLAG_REPLACE being set, if an - * entry of the same type already exists, it will be replaced instead. - */ -AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd, - enum AVFrameSideDataType type, - size_t size, unsigned int flags); - -/** - * Add a new side data entry to an array from an existing AVBufferRef. - * - * @param sd pointer to array of side data to which to add another entry, - * or to NULL in order to start a new array. - * @param nb_sd pointer to an integer containing the number of entries in - * the array. - * @param type type of the added side data - * @param buf Pointer to AVBufferRef to add to the array. On success, - * the function takes ownership of the AVBufferRef and *buf is - * set to NULL, unless AV_FRAME_SIDE_DATA_FLAG_NEW_REF is set - * in which case the ownership will remain with the caller. - * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, or 0. - * - * @return newly added side data on success, NULL on error. - * @note In case of AV_FRAME_SIDE_DATA_FLAG_UNIQUE being set, entries of - * matching AVFrameSideDataType will be removed before the addition - * is attempted. - * @note In case of AV_FRAME_SIDE_DATA_FLAG_REPLACE being set, if an - * entry of the same type already exists, it will be replaced instead. - * - */ -AVFrameSideData *av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd, - enum AVFrameSideDataType type, - AVBufferRef **buf, unsigned int flags); - -/** - * Add a new side data entry to an array based on existing side data, taking - * a reference towards the contained AVBufferRef. - * - * @param sd pointer to array of side data to which to add another entry, - * or to NULL in order to start a new array. - * @param nb_sd pointer to an integer containing the number of entries in - * the array. - * @param src side data to be cloned, with a new reference utilized - * for the buffer. - * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, or 0. - * - * @return negative error code on failure, >=0 on success. - * @note In case of AV_FRAME_SIDE_DATA_FLAG_UNIQUE being set, entries of - * matching AVFrameSideDataType will be removed before the addition - * is attempted. - * @note In case of AV_FRAME_SIDE_DATA_FLAG_REPLACE being set, if an - * entry of the same type already exists, it will be replaced instead. - */ -int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, - const AVFrameSideData *src, unsigned int flags); - -/** - * Get a side data entry of a specific type from an array. - * - * @param sd array of side data. - * @param nb_sd integer containing the number of entries in the array. - * @param type type of side data to be queried - * - * @return a pointer to the side data of a given type on success, NULL if there - * is no side data with such type in this set. - */ -const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *sd, - const int nb_sd, - enum AVFrameSideDataType type); - -/** - * Wrapper around av_frame_side_data_get_c() to workaround the limitation - * that for any type T the conversion from T * const * to const T * const * - * is not performed automatically in C. - * @see av_frame_side_data_get_c() - */ -static inline -const AVFrameSideData *av_frame_side_data_get(AVFrameSideData * const *sd, - const int nb_sd, - enum AVFrameSideDataType type) -{ - return av_frame_side_data_get_c((const AVFrameSideData * const *)sd, - nb_sd, type); -} - -/** - * Remove and free all side data instances of the given type from an array. - */ -void av_frame_side_data_remove(AVFrameSideData ***sd, int *nb_sd, - enum AVFrameSideDataType type); - -/** - * Remove and free all side data instances that match any of the given - * side data properties. (See enum AVSideDataProps) - */ -void av_frame_side_data_remove_by_props(AVFrameSideData ***sd, int *nb_sd, - int props); - -/** - * @} - */ - -#endif /* AVUTIL_FRAME_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext.h deleted file mode 100644 index 29374cf0a7..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext.h +++ /dev/null @@ -1,601 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_H -#define AVUTIL_HWCONTEXT_H - -#include "buffer.h" -#include "frame.h" -#include "log.h" -#include "pixfmt.h" - -enum AVHWDeviceType { - AV_HWDEVICE_TYPE_NONE, - AV_HWDEVICE_TYPE_VDPAU, - AV_HWDEVICE_TYPE_CUDA, - AV_HWDEVICE_TYPE_VAAPI, - AV_HWDEVICE_TYPE_DXVA2, - AV_HWDEVICE_TYPE_QSV, - AV_HWDEVICE_TYPE_VIDEOTOOLBOX, - AV_HWDEVICE_TYPE_D3D11VA, - AV_HWDEVICE_TYPE_DRM, - AV_HWDEVICE_TYPE_OPENCL, - AV_HWDEVICE_TYPE_MEDIACODEC, - AV_HWDEVICE_TYPE_VULKAN, - AV_HWDEVICE_TYPE_D3D12VA, - AV_HWDEVICE_TYPE_AMF, - /* OpenHarmony Codec device */ - AV_HWDEVICE_TYPE_OHCODEC, -}; - -/** - * This struct aggregates all the (hardware/vendor-specific) "high-level" state, - * i.e. state that is not tied to a concrete processing configuration. - * E.g., in an API that supports hardware-accelerated encoding and decoding, - * this struct will (if possible) wrap the state that is common to both encoding - * and decoding and from which specific instances of encoders or decoders can be - * derived. - * - * This struct is reference-counted with the AVBuffer mechanism. The - * av_hwdevice_ctx_alloc() constructor yields a reference, whose data field - * points to the actual AVHWDeviceContext. Further objects derived from - * AVHWDeviceContext (such as AVHWFramesContext, describing a frame pool with - * specific properties) will hold an internal reference to it. After all the - * references are released, the AVHWDeviceContext itself will be freed, - * optionally invoking a user-specified callback for uninitializing the hardware - * state. - */ -typedef struct AVHWDeviceContext { - /** - * A class for logging. Set by av_hwdevice_ctx_alloc(). - */ - const AVClass *av_class; - - /** - * This field identifies the underlying API used for hardware access. - * - * This field is set when this struct is allocated and never changed - * afterwards. - */ - enum AVHWDeviceType type; - - /** - * The format-specific data, allocated and freed by libavutil along with - * this context. - * - * Should be cast by the user to the format-specific context defined in the - * corresponding header (hwcontext_*.h) and filled as described in the - * documentation before calling av_hwdevice_ctx_init(). - * - * After calling av_hwdevice_ctx_init() this struct should not be modified - * by the caller. - */ - void *hwctx; - - /** - * This field may be set by the caller before calling av_hwdevice_ctx_init(). - * - * If non-NULL, this callback will be called when the last reference to - * this context is unreferenced, immediately before it is freed. - * - * @note when other objects (e.g an AVHWFramesContext) are derived from this - * struct, this callback will be invoked after all such child objects - * are fully uninitialized and their respective destructors invoked. - */ - void (*free)(struct AVHWDeviceContext *ctx); - - /** - * Arbitrary user data, to be used e.g. by the free() callback. - */ - void *user_opaque; -} AVHWDeviceContext; - -/** - * This struct describes a set or pool of "hardware" frames (i.e. those with - * data not located in normal system memory). All the frames in the pool are - * assumed to be allocated in the same way and interchangeable. - * - * This struct is reference-counted with the AVBuffer mechanism and tied to a - * given AVHWDeviceContext instance. The av_hwframe_ctx_alloc() constructor - * yields a reference, whose data field points to the actual AVHWFramesContext - * struct. - */ -typedef struct AVHWFramesContext { - /** - * A class for logging. - */ - const AVClass *av_class; - - /** - * A reference to the parent AVHWDeviceContext. This reference is owned and - * managed by the enclosing AVHWFramesContext, but the caller may derive - * additional references from it. - */ - AVBufferRef *device_ref; - - /** - * The parent AVHWDeviceContext. This is simply a pointer to - * device_ref->data provided for convenience. - * - * Set by libavutil in av_hwframe_ctx_init(). - */ - AVHWDeviceContext *device_ctx; - - /** - * The format-specific data, allocated and freed automatically along with - * this context. - * - * The user shall ignore this field if the corresponding format-specific - * header (hwcontext_*.h) does not define a context to be used as - * AVHWFramesContext.hwctx. - * - * Otherwise, it should be cast by the user to said context and filled - * as described in the documentation before calling av_hwframe_ctx_init(). - * - * After any frames using this context are created, the contents of this - * struct should not be modified by the caller. - */ - void *hwctx; - - /** - * This field may be set by the caller before calling av_hwframe_ctx_init(). - * - * If non-NULL, this callback will be called when the last reference to - * this context is unreferenced, immediately before it is freed. - */ - void (*free)(struct AVHWFramesContext *ctx); - - /** - * Arbitrary user data, to be used e.g. by the free() callback. - */ - void *user_opaque; - - /** - * A pool from which the frames are allocated by av_hwframe_get_buffer(). - * This field may be set by the caller before calling av_hwframe_ctx_init(). - * The buffers returned by calling av_buffer_pool_get() on this pool must - * have the properties described in the documentation in the corresponding hw - * type's header (hwcontext_*.h). The pool will be freed strictly before - * this struct's free() callback is invoked. - * - * This field may be NULL, then libavutil will attempt to allocate a pool - * internally. Note that certain device types enforce pools allocated at - * fixed size (frame count), which cannot be extended dynamically. In such a - * case, initial_pool_size must be set appropriately. - */ - AVBufferPool *pool; - - /** - * Initial size of the frame pool. If a device type does not support - * dynamically resizing the pool, then this is also the maximum pool size. - * - * May be set by the caller before calling av_hwframe_ctx_init(). Must be - * set if pool is NULL and the device type does not support dynamic pools. - */ - int initial_pool_size; - - /** - * The pixel format identifying the underlying HW surface type. - * - * Must be a hwaccel format, i.e. the corresponding descriptor must have the - * AV_PIX_FMT_FLAG_HWACCEL flag set. - * - * Must be set by the user before calling av_hwframe_ctx_init(). - */ - enum AVPixelFormat format; - - /** - * The pixel format identifying the actual data layout of the hardware - * frames. - * - * Must be set by the caller before calling av_hwframe_ctx_init(). - * - * @note when the underlying API does not provide the exact data layout, but - * only the colorspace/bit depth, this field should be set to the fully - * planar version of that format (e.g. for 8-bit 420 YUV it should be - * AV_PIX_FMT_YUV420P, not AV_PIX_FMT_NV12 or anything else). - */ - enum AVPixelFormat sw_format; - - /** - * The allocated dimensions of the frames in this pool. - * - * Must be set by the user before calling av_hwframe_ctx_init(). - */ - int width, height; -} AVHWFramesContext; - -/** - * Look up an AVHWDeviceType by name. - * - * @param name String name of the device type (case-insensitive). - * @return The type from enum AVHWDeviceType, or AV_HWDEVICE_TYPE_NONE if - * not found. - */ -enum AVHWDeviceType av_hwdevice_find_type_by_name(const char *name); - -/** Get the string name of an AVHWDeviceType. - * - * @param type Type from enum AVHWDeviceType. - * @return Pointer to a static string containing the name, or NULL if the type - * is not valid. - */ -const char *av_hwdevice_get_type_name(enum AVHWDeviceType type); - -/** - * Iterate over supported device types. - * - * @param prev AV_HWDEVICE_TYPE_NONE initially, then the previous type - * returned by this function in subsequent iterations. - * @return The next usable device type from enum AVHWDeviceType, or - * AV_HWDEVICE_TYPE_NONE if there are no more. - */ -enum AVHWDeviceType av_hwdevice_iterate_types(enum AVHWDeviceType prev); - -/** - * Allocate an AVHWDeviceContext for a given hardware type. - * - * @param type the type of the hardware device to allocate. - * @return a reference to the newly created AVHWDeviceContext on success or NULL - * on failure. - */ -AVBufferRef *av_hwdevice_ctx_alloc(enum AVHWDeviceType type); - -/** - * Finalize the device context before use. This function must be called after - * the context is filled with all the required information and before it is - * used in any way. - * - * @param ref a reference to the AVHWDeviceContext - * @return 0 on success, a negative AVERROR code on failure - */ -int av_hwdevice_ctx_init(AVBufferRef *ref); - -/** - * Open a device of the specified type and create an AVHWDeviceContext for it. - * - * This is a convenience function intended to cover the simple cases. Callers - * who need to fine-tune device creation/management should open the device - * manually and then wrap it in an AVHWDeviceContext using - * av_hwdevice_ctx_alloc()/av_hwdevice_ctx_init(). - * - * The returned context is already initialized and ready for use, the caller - * should not call av_hwdevice_ctx_init() on it. The user_opaque/free fields of - * the created AVHWDeviceContext are set by this function and should not be - * touched by the caller. - * - * @param device_ctx On success, a reference to the newly-created device context - * will be written here. The reference is owned by the caller - * and must be released with av_buffer_unref() when no longer - * needed. On failure, NULL will be written to this pointer. - * @param type The type of the device to create. - * @param device A type-specific string identifying the device to open. - * @param opts A dictionary of additional (type-specific) options to use in - * opening the device. The dictionary remains owned by the caller. - * @param flags currently unused - * - * @return 0 on success, a negative AVERROR code on failure. - */ -int av_hwdevice_ctx_create(AVBufferRef **device_ctx, enum AVHWDeviceType type, - const char *device, AVDictionary *opts, int flags); - -/** - * Create a new device of the specified type from an existing device. - * - * If the source device is a device of the target type or was originally - * derived from such a device (possibly through one or more intermediate - * devices of other types), then this will return a reference to the - * existing device of the same type as is requested. - * - * Otherwise, it will attempt to derive a new device from the given source - * device. If direct derivation to the new type is not implemented, it will - * attempt the same derivation from each ancestor of the source device in - * turn looking for an implemented derivation method. - * - * @param dst_ctx On success, a reference to the newly-created - * AVHWDeviceContext. - * @param type The type of the new device to create. - * @param src_ctx A reference to an existing AVHWDeviceContext which will be - * used to create the new device. - * @param flags Currently unused; should be set to zero. - * @return Zero on success, a negative AVERROR code on failure. - */ -int av_hwdevice_ctx_create_derived(AVBufferRef **dst_ctx, - enum AVHWDeviceType type, - AVBufferRef *src_ctx, int flags); - -/** - * Create a new device of the specified type from an existing device. - * - * This function performs the same action as av_hwdevice_ctx_create_derived, - * however, it is able to set options for the new device to be derived. - * - * @param dst_ctx On success, a reference to the newly-created - * AVHWDeviceContext. - * @param type The type of the new device to create. - * @param src_ctx A reference to an existing AVHWDeviceContext which will be - * used to create the new device. - * @param options Options for the new device to create, same format as in - * av_hwdevice_ctx_create. - * @param flags Currently unused; should be set to zero. - * @return Zero on success, a negative AVERROR code on failure. - */ -int av_hwdevice_ctx_create_derived_opts(AVBufferRef **dst_ctx, - enum AVHWDeviceType type, - AVBufferRef *src_ctx, - AVDictionary *options, int flags); - -/** - * Allocate an AVHWFramesContext tied to a given device context. - * - * @param device_ctx a reference to a AVHWDeviceContext. This function will make - * a new reference for internal use, the one passed to the - * function remains owned by the caller. - * @return a reference to the newly created AVHWFramesContext on success or NULL - * on failure. - */ -AVBufferRef *av_hwframe_ctx_alloc(AVBufferRef *device_ctx); - -/** - * Finalize the context before use. This function must be called after the - * context is filled with all the required information and before it is attached - * to any frames. - * - * @param ref a reference to the AVHWFramesContext - * @return 0 on success, a negative AVERROR code on failure - */ -int av_hwframe_ctx_init(AVBufferRef *ref); - -/** - * Allocate a new frame attached to the given AVHWFramesContext. - * - * @param hwframe_ctx a reference to an AVHWFramesContext - * @param frame an empty (freshly allocated or unreffed) frame to be filled with - * newly allocated buffers. - * @param flags currently unused, should be set to zero - * @return 0 on success, a negative AVERROR code on failure - */ -int av_hwframe_get_buffer(AVBufferRef *hwframe_ctx, AVFrame *frame, int flags); - -/** - * Copy data to or from a hw surface. At least one of dst/src must have an - * AVHWFramesContext attached. - * - * If src has an AVHWFramesContext attached, then the format of dst (if set) - * must use one of the formats returned by av_hwframe_transfer_get_formats(src, - * AV_HWFRAME_TRANSFER_DIRECTION_FROM). - * If dst has an AVHWFramesContext attached, then the format of src must use one - * of the formats returned by av_hwframe_transfer_get_formats(dst, - * AV_HWFRAME_TRANSFER_DIRECTION_TO) - * - * dst may be "clean" (i.e. with data/buf pointers unset), in which case the - * data buffers will be allocated by this function using av_frame_get_buffer(). - * If dst->format is set, then this format will be used, otherwise (when - * dst->format is AV_PIX_FMT_NONE) the first acceptable format will be chosen. - * - * The two frames must have matching allocated dimensions (i.e. equal to - * AVHWFramesContext.width/height), since not all device types support - * transferring a sub-rectangle of the whole surface. The display dimensions - * (i.e. AVFrame.width/height) may be smaller than the allocated dimensions, but - * also have to be equal for both frames. When the display dimensions are - * smaller than the allocated dimensions, the content of the padding in the - * destination frame is unspecified. - * - * @param dst the destination frame. dst is not touched on failure. - * @param src the source frame. - * @param flags currently unused, should be set to zero - * @return 0 on success, a negative AVERROR error code on failure. - */ -int av_hwframe_transfer_data(AVFrame *dst, const AVFrame *src, int flags); - -enum AVHWFrameTransferDirection { - /** - * Transfer the data from the queried hw frame. - */ - AV_HWFRAME_TRANSFER_DIRECTION_FROM, - - /** - * Transfer the data to the queried hw frame. - */ - AV_HWFRAME_TRANSFER_DIRECTION_TO, -}; - -/** - * Get a list of possible source or target formats usable in - * av_hwframe_transfer_data(). - * - * @param hwframe_ctx the frame context to obtain the information for - * @param dir the direction of the transfer - * @param formats the pointer to the output format list will be written here. - * The list is terminated with AV_PIX_FMT_NONE and must be freed - * by the caller when no longer needed using av_free(). - * If this function returns successfully, the format list will - * have at least one item (not counting the terminator). - * On failure, the contents of this pointer are unspecified. - * @param flags currently unused, should be set to zero - * @return 0 on success, a negative AVERROR code on failure. - */ -int av_hwframe_transfer_get_formats(AVBufferRef *hwframe_ctx, - enum AVHWFrameTransferDirection dir, - enum AVPixelFormat **formats, int flags); - - -/** - * This struct describes the constraints on hardware frames attached to - * a given device with a hardware-specific configuration. This is returned - * by av_hwdevice_get_hwframe_constraints() and must be freed by - * av_hwframe_constraints_free() after use. - */ -typedef struct AVHWFramesConstraints { - /** - * A list of possible values for format in the hw_frames_ctx, - * terminated by AV_PIX_FMT_NONE. This member will always be filled. - */ - enum AVPixelFormat *valid_hw_formats; - - /** - * A list of possible values for sw_format in the hw_frames_ctx, - * terminated by AV_PIX_FMT_NONE. Can be NULL if this information is - * not known. - */ - enum AVPixelFormat *valid_sw_formats; - - /** - * The minimum size of frames in this hw_frames_ctx. - * (Zero if not known.) - */ - int min_width; - int min_height; - - /** - * The maximum size of frames in this hw_frames_ctx. - * (INT_MAX if not known / no limit.) - */ - int max_width; - int max_height; -} AVHWFramesConstraints; - -/** - * Allocate a HW-specific configuration structure for a given HW device. - * After use, the user must free all members as required by the specific - * hardware structure being used, then free the structure itself with - * av_free(). - * - * @param device_ctx a reference to the associated AVHWDeviceContext. - * @return The newly created HW-specific configuration structure on - * success or NULL on failure. - */ -void *av_hwdevice_hwconfig_alloc(AVBufferRef *device_ctx); - -/** - * Get the constraints on HW frames given a device and the HW-specific - * configuration to be used with that device. If no HW-specific - * configuration is provided, returns the maximum possible capabilities - * of the device. - * - * @param ref a reference to the associated AVHWDeviceContext. - * @param hwconfig a filled HW-specific configuration structure, or NULL - * to return the maximum possible capabilities of the device. - * @return AVHWFramesConstraints structure describing the constraints - * on the device, or NULL if not available. - */ -AVHWFramesConstraints *av_hwdevice_get_hwframe_constraints(AVBufferRef *ref, - const void *hwconfig); - -/** - * Free an AVHWFrameConstraints structure. - * - * @param constraints The (filled or unfilled) AVHWFrameConstraints structure. - */ -void av_hwframe_constraints_free(AVHWFramesConstraints **constraints); - - -/** - * Flags to apply to frame mappings. - */ -enum { - /** - * The mapping must be readable. - */ - AV_HWFRAME_MAP_READ = 1 << 0, - /** - * The mapping must be writeable. - */ - AV_HWFRAME_MAP_WRITE = 1 << 1, - /** - * The mapped frame will be overwritten completely in subsequent - * operations, so the current frame data need not be loaded. Any values - * which are not overwritten are unspecified. - */ - AV_HWFRAME_MAP_OVERWRITE = 1 << 2, - /** - * The mapping must be direct. That is, there must not be any copying in - * the map or unmap steps. Note that performance of direct mappings may - * be much lower than normal memory. - */ - AV_HWFRAME_MAP_DIRECT = 1 << 3, -}; - -/** - * Map a hardware frame. - * - * This has a number of different possible effects, depending on the format - * and origin of the src and dst frames. On input, src should be a usable - * frame with valid buffers and dst should be blank (typically as just created - * by av_frame_alloc()). src should have an associated hwframe context, and - * dst may optionally have a format and associated hwframe context. - * - * If src was created by mapping a frame from the hwframe context of dst, - * then this function undoes the mapping - dst is replaced by a reference to - * the frame that src was originally mapped from. - * - * If both src and dst have an associated hwframe context, then this function - * attempts to map the src frame from its hardware context to that of dst and - * then fill dst with appropriate data to be usable there. This will only be - * possible if the hwframe contexts and associated devices are compatible - - * given compatible devices, av_hwframe_ctx_create_derived() can be used to - * create a hwframe context for dst in which mapping should be possible. - * - * If src has a hwframe context but dst does not, then the src frame is - * mapped to normal memory and should thereafter be usable as a normal frame. - * If the format is set on dst, then the mapping will attempt to create dst - * with that format and fail if it is not possible. If format is unset (is - * AV_PIX_FMT_NONE) then dst will be mapped with whatever the most appropriate - * format to use is (probably the sw_format of the src hwframe context). - * - * A return value of AVERROR(ENOSYS) indicates that the mapping is not - * possible with the given arguments and hwframe setup, while other return - * values indicate that it failed somehow. - * - * On failure, the destination frame will be left blank, except for the - * hw_frames_ctx/format fields they may have been set by the caller - those will - * be preserved as they were. - * - * @param dst Destination frame, to contain the mapping. - * @param src Source frame, to be mapped. - * @param flags Some combination of AV_HWFRAME_MAP_* flags. - * @return Zero on success, negative AVERROR code on failure. - */ -int av_hwframe_map(AVFrame *dst, const AVFrame *src, int flags); - - -/** - * Create and initialise an AVHWFramesContext as a mapping of another existing - * AVHWFramesContext on a different device. - * - * av_hwframe_ctx_init() should not be called after this. - * - * @param derived_frame_ctx On success, a reference to the newly created - * AVHWFramesContext. - * @param format The AVPixelFormat for the derived context. - * @param derived_device_ctx A reference to the device to create the new - * AVHWFramesContext on. - * @param source_frame_ctx A reference to an existing AVHWFramesContext - * which will be mapped to the derived context. - * @param flags Some combination of AV_HWFRAME_MAP_* flags, defining the - * mapping parameters to apply to frames which are allocated - * in the derived device. - * @return Zero on success, negative AVERROR code on failure. - */ -int av_hwframe_ctx_create_derived(AVBufferRef **derived_frame_ctx, - enum AVPixelFormat format, - AVBufferRef *derived_device_ctx, - AVBufferRef *source_frame_ctx, - int flags); - -#endif /* AVUTIL_HWCONTEXT_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_drm.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_drm.h deleted file mode 100644 index 42709f215e..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_drm.h +++ /dev/null @@ -1,169 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_DRM_H -#define AVUTIL_HWCONTEXT_DRM_H - -#include -#include - -/** - * @file - * API-specific header for AV_HWDEVICE_TYPE_DRM. - * - * Internal frame allocation is not currently supported - all frames - * must be allocated by the user. Thus AVHWFramesContext is always - * NULL, though this may change if support for frame allocation is - * added in future. - */ - -enum { - /** - * The maximum number of layers/planes in a DRM frame. - */ - AV_DRM_MAX_PLANES = 4 -}; - -/** - * DRM object descriptor. - * - * Describes a single DRM object, addressing it as a PRIME file - * descriptor. - */ -typedef struct AVDRMObjectDescriptor { - /** - * DRM PRIME fd for the object. - */ - int fd; - /** - * Total size of the object. - * - * (This includes any parts not which do not contain image data.) - */ - size_t size; - /** - * Format modifier applied to the object (DRM_FORMAT_MOD_*). - * - * If the format modifier is unknown then this should be set to - * DRM_FORMAT_MOD_INVALID. - */ - uint64_t format_modifier; -} AVDRMObjectDescriptor; - -/** - * DRM plane descriptor. - * - * Describes a single plane of a layer, which is contained within - * a single object. - */ -typedef struct AVDRMPlaneDescriptor { - /** - * Index of the object containing this plane in the objects - * array of the enclosing frame descriptor. - */ - int object_index; - /** - * Offset within that object of this plane. - */ - ptrdiff_t offset; - /** - * Pitch (linesize) of this plane. - */ - ptrdiff_t pitch; -} AVDRMPlaneDescriptor; - -/** - * DRM layer descriptor. - * - * Describes a single layer within a frame. This has the structure - * defined by its format, and will contain one or more planes. - */ -typedef struct AVDRMLayerDescriptor { - /** - * Format of the layer (DRM_FORMAT_*). - */ - uint32_t format; - /** - * Number of planes in the layer. - * - * This must match the number of planes required by format. - */ - int nb_planes; - /** - * Array of planes in this layer. - */ - AVDRMPlaneDescriptor planes[AV_DRM_MAX_PLANES]; -} AVDRMLayerDescriptor; - -/** - * DRM frame descriptor. - * - * This is used as the data pointer for AV_PIX_FMT_DRM_PRIME frames. - * It is also used by user-allocated frame pools - allocating in - * AVHWFramesContext.pool must return AVBufferRefs which contain - * an object of this type. - * - * The fields of this structure should be set such it can be - * imported directly by EGL using the EGL_EXT_image_dma_buf_import - * and EGL_EXT_image_dma_buf_import_modifiers extensions. - * (Note that the exact layout of a particular format may vary between - * platforms - we only specify that the same platform should be able - * to import it.) - * - * The total number of planes must not exceed AV_DRM_MAX_PLANES, and - * the order of the planes by increasing layer index followed by - * increasing plane index must be the same as the order which would - * be used for the data pointers in the equivalent software format. - */ -typedef struct AVDRMFrameDescriptor { - /** - * Number of DRM objects making up this frame. - */ - int nb_objects; - /** - * Array of objects making up the frame. - */ - AVDRMObjectDescriptor objects[AV_DRM_MAX_PLANES]; - /** - * Number of layers in the frame. - */ - int nb_layers; - /** - * Array of layers in the frame. - */ - AVDRMLayerDescriptor layers[AV_DRM_MAX_PLANES]; -} AVDRMFrameDescriptor; - -/** - * DRM device. - * - * Allocated as AVHWDeviceContext.hwctx. - */ -typedef struct AVDRMDeviceContext { - /** - * File descriptor of DRM device. - * - * This is used as the device to create frames on, and may also be - * used in some derivation and mapping operations. - * - * If no device is required, set to -1. - */ - int fd; -} AVDRMDeviceContext; - -#endif /* AVUTIL_HWCONTEXT_DRM_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_vaapi.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_vaapi.h deleted file mode 100644 index 82e4194a92..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_vaapi.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_VAAPI_H -#define AVUTIL_HWCONTEXT_VAAPI_H - -#include - -/** - * @file - * API-specific header for AV_HWDEVICE_TYPE_VAAPI. - * - * Dynamic frame pools are supported, but note that any pool used as a render - * target is required to be of fixed size in order to be usable as an - * argument to vaCreateContext(). - * - * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs - * with the data pointer set to a VASurfaceID. - */ - -enum { - /** - * The quirks field has been set by the user and should not be detected - * automatically by av_hwdevice_ctx_init(). - */ - AV_VAAPI_DRIVER_QUIRK_USER_SET = (1 << 0), - /** - * The driver does not destroy parameter buffers when they are used by - * vaRenderPicture(). Additional code will be required to destroy them - * separately afterwards. - */ - AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS = (1 << 1), - - /** - * The driver does not support the VASurfaceAttribMemoryType attribute, - * so the surface allocation code will not try to use it. - */ - AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE = (1 << 2), - - /** - * The driver does not support surface attributes at all. - * The surface allocation code will never pass them to surface allocation, - * and the results of the vaQuerySurfaceAttributes() call will be faked. - */ - AV_VAAPI_DRIVER_QUIRK_SURFACE_ATTRIBUTES = (1 << 3), -}; - -/** - * VAAPI connection details. - * - * Allocated as AVHWDeviceContext.hwctx - */ -typedef struct AVVAAPIDeviceContext { - /** - * The VADisplay handle, to be filled by the user. - */ - VADisplay display; - /** - * Driver quirks to apply - this is filled by av_hwdevice_ctx_init(), - * with reference to a table of known drivers, unless the - * AV_VAAPI_DRIVER_QUIRK_USER_SET bit is already present. The user - * may need to refer to this field when performing any later - * operations using VAAPI with the same VADisplay. - */ - unsigned int driver_quirks; -} AVVAAPIDeviceContext; - -/** - * VAAPI-specific data associated with a frame pool. - * - * Allocated as AVHWFramesContext.hwctx. - */ -typedef struct AVVAAPIFramesContext { - /** - * Set by the user to apply surface attributes to all surfaces in - * the frame pool. If null, default settings are used. - */ - VASurfaceAttrib *attributes; - int nb_attributes; - /** - * The surfaces IDs of all surfaces in the pool after creation. - * Only valid if AVHWFramesContext.initial_pool_size was positive. - * These are intended to be used as the render_targets arguments to - * vaCreateContext(). - */ - VASurfaceID *surface_ids; - int nb_surfaces; -} AVVAAPIFramesContext; - -/** - * VAAPI hardware pipeline configuration details. - * - * Allocated with av_hwdevice_hwconfig_alloc(). - */ -typedef struct AVVAAPIHWConfig { - /** - * ID of a VAAPI pipeline configuration. - */ - VAConfigID config_id; -} AVVAAPIHWConfig; - -#endif /* AVUTIL_HWCONTEXT_VAAPI_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_vulkan.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_vulkan.h deleted file mode 100644 index b9a841a197..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/hwcontext_vulkan.h +++ /dev/null @@ -1,404 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_VULKAN_H -#define AVUTIL_HWCONTEXT_VULKAN_H - -#if defined(_WIN32) && !defined(VK_USE_PLATFORM_WIN32_KHR) -#define VK_USE_PLATFORM_WIN32_KHR -#endif -#include - -#include "pixfmt.h" -#include "frame.h" -#include "hwcontext.h" - -typedef struct AVVkFrame AVVkFrame; - -typedef struct AVVulkanDeviceQueueFamily { - /* Queue family index */ - int idx; - /* Number of queues in the queue family in use */ - int num; - /* Queue family capabilities. Must be non-zero. - * Flags may be removed to indicate the queue family may not be used - * for a given purpose. */ - VkQueueFlagBits flags; - /* Vulkan implementations are allowed to list multiple video queues - * which differ in what they can encode or decode. */ - VkVideoCodecOperationFlagBitsKHR video_caps; -} AVVulkanDeviceQueueFamily; - -/** - * @file - * API-specific header for AV_HWDEVICE_TYPE_VULKAN. - * - * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs - * with the data pointer set to an AVVkFrame. - */ - -/** - * Main Vulkan context, allocated as AVHWDeviceContext.hwctx. - * All of these can be set before init to change what the context uses - */ -typedef struct AVVulkanDeviceContext { - /** - * Custom memory allocator, else NULL - */ - const VkAllocationCallbacks *alloc; - - /** - * Pointer to a vkGetInstanceProcAddr loading function. - * If unset, will dynamically load and use libvulkan. - */ - PFN_vkGetInstanceProcAddr get_proc_addr; - - /** - * Vulkan instance. Must be at least version 1.3. - */ - VkInstance inst; - - /** - * Physical device - */ - VkPhysicalDevice phys_dev; - - /** - * Active device - */ - VkDevice act_dev; - - /** - * This structure should be set to the set of features that present and enabled - * during device creation. When a device is created by FFmpeg, it will default to - * enabling all that are present of the shaderImageGatherExtended, - * fragmentStoresAndAtomics, shaderInt64 and vertexPipelineStoresAndAtomics features. - */ - VkPhysicalDeviceFeatures2 device_features; - - /** - * Enabled instance extensions. - * If supplying your own device context, set this to an array of strings, with - * each entry containing the specified Vulkan extension string to enable. - * Duplicates are possible and accepted. - * If no extensions are enabled, set these fields to NULL, and 0 respectively. - * av_vk_get_optional_instance_extensions() can be used to enumerate extensions - * that FFmpeg may use if enabled. - */ - const char * const *enabled_inst_extensions; - int nb_enabled_inst_extensions; - - /** - * Enabled device extensions. By default, VK_KHR_external_memory_fd, - * VK_EXT_external_memory_dma_buf, VK_EXT_image_drm_format_modifier, - * VK_KHR_external_semaphore_fd and VK_EXT_external_memory_host are enabled if found. - * If supplying your own device context, these fields takes the same format as - * the above fields, with the same conditions that duplicates are possible - * and accepted, and that NULL and 0 respectively means no extensions are enabled. - * av_vk_get_optional_device_extensions() can be used to enumerate extensions - * that FFmpeg may use if enabled. - */ - const char * const *enabled_dev_extensions; - int nb_enabled_dev_extensions; - -#if FF_API_VULKAN_FIXED_QUEUES - /** - * Queue family index for graphics operations, and the number of queues - * enabled for it. If unavailable, will be set to -1. Not required. - * av_hwdevice_create() will attempt to find a dedicated queue for each - * queue family, or pick the one with the least unrelated flags set. - * Queue indices here may overlap if a queue has to share capabilities. - */ - attribute_deprecated - int queue_family_index; - attribute_deprecated - int nb_graphics_queues; - - /** - * Queue family index for transfer operations and the number of queues - * enabled. Required. - */ - attribute_deprecated - int queue_family_tx_index; - attribute_deprecated - int nb_tx_queues; - - /** - * Queue family index for compute operations and the number of queues - * enabled. Required. - */ - attribute_deprecated - int queue_family_comp_index; - attribute_deprecated - int nb_comp_queues; - - /** - * Queue family index for video encode ops, and the amount of queues enabled. - * If the device doesn't support such, queue_family_encode_index will be -1. - * Not required. - */ - attribute_deprecated - int queue_family_encode_index; - attribute_deprecated - int nb_encode_queues; - - /** - * Queue family index for video decode ops, and the amount of queues enabled. - * If the device doesn't support such, queue_family_decode_index will be -1. - * Not required. - */ - attribute_deprecated - int queue_family_decode_index; - attribute_deprecated - int nb_decode_queues; -#endif - -#if FF_API_VULKAN_SYNC_QUEUES - /** - * Locks a queue, preventing other threads from submitting any command - * buffers to this queue. - * If set to NULL, will be set to lavu-internal functions that utilize a - * mutex. - * - * Deprecated: use VK_KHR_internally_synchronized_queues. - */ - attribute_deprecated - void (*lock_queue)(struct AVHWDeviceContext *ctx, uint32_t queue_family, uint32_t index); - - /** - * Similar to lock_queue(), unlocks a queue. Must only be called after locking. - * - * Deprecated: use VK_KHR_internally_synchronized_queues. - */ - attribute_deprecated - void (*unlock_queue)(struct AVHWDeviceContext *ctx, uint32_t queue_family, uint32_t index); -#endif - - /** - * Queue families used. Must be preferentially ordered. List may contain - * duplicates. - * - * For compatibility reasons, all the enabled queue families listed above - * (queue_family_(tx/comp/encode/decode)_index) must also be included in - * this list until they're removed after deprecation. - */ - AVVulkanDeviceQueueFamily qf[64]; - int nb_qf; -} AVVulkanDeviceContext; - -/** - * Defines the behaviour of frame allocation. - */ -typedef enum AVVkFrameFlags { - /* Unless this flag is set, autodetected flags will be OR'd based on the - * device and tiling during av_hwframe_ctx_init(). */ - AV_VK_FRAME_FLAG_NONE = (1ULL << 0), - - /* Disables multiplane images. - * This is required to export/import images from CUDA. */ - AV_VK_FRAME_FLAG_DISABLE_MULTIPLANE = (1ULL << 2), -} AVVkFrameFlags; - -/** - * Allocated as AVHWFramesContext.hwctx, used to set pool-specific options - */ -typedef struct AVVulkanFramesContext { - /** - * Controls the tiling of allocated frames. - * If left as VK_IMAGE_TILING_OPTIMAL (0), will use optimal tiling. - * Can be set to VK_IMAGE_TILING_LINEAR to force linear images, - * or VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT to force DMABUF-backed - * images. - * @note Imported frames from other APIs ignore this. - */ - VkImageTiling tiling; - - /** - * Defines extra usage of output frames. If non-zero, all flags MUST be - * supported by the VkFormat. Regardless, frames will always have the - * following usage flags enabled, if supported by the format: - * - VK_IMAGE_USAGE_SAMPLED_BIT - * - VK_IMAGE_USAGE_STORAGE_BIT - * - VK_IMAGE_USAGE_TRANSFER_SRC_BIT - * - VK_IMAGE_USAGE_TRANSFER_DST_BIT - */ - VkImageUsageFlagBits usage; - - /** - * Extension data for image creation. - * If DRM tiling is used, a VkImageDrmFormatModifierListCreateInfoEXT structure - * can be added to specify the exact modifier to use. - * - * Additional structures may be added at av_hwframe_ctx_init() time, - * which will be freed automatically on uninit(), so users must only free - * any structures they've allocated themselves. - */ - void *create_pnext; - - /** - * Extension data for memory allocation. Must have as many entries as - * the number of planes of the sw_format. - * This will be chained to VkExportMemoryAllocateInfo, which is used - * to make all pool images exportable to other APIs if the necessary - * extensions are present in enabled_dev_extensions. - */ - void *alloc_pnext[AV_NUM_DATA_POINTERS]; - - /** - * A combination of AVVkFrameFlags. Unless AV_VK_FRAME_FLAG_NONE is set, - * autodetected flags will be OR'd based on the device and tiling during - * av_hwframe_ctx_init(). - */ - AVVkFrameFlags flags; - - /** - * Flags to set during image creation. If unset, defaults to - * VK_IMAGE_CREATE_ALIAS_BIT. - */ - VkImageCreateFlags img_flags; - - /** - * Vulkan format for each image. MUST be compatible with the pixel format. - * If unset, will be automatically set. - * There are at most two compatible formats for a frame - a multiplane - * format, and a single-plane multi-image format. - */ - VkFormat format[AV_NUM_DATA_POINTERS]; - - /** - * Number of layers each image will have. - */ - int nb_layers; - - /** - * Locks a frame, preventing other threads from changing frame properties. - * Users SHOULD only ever lock just before command submission in order - * to get accurate frame properties, and unlock immediately after command - * submission without waiting for it to finish. - * - * If unset, will be set to lavu-internal functions that utilize a mutex. - */ - void (*lock_frame)(struct AVHWFramesContext *fc, AVVkFrame *vkf); - - /** - * Similar to lock_frame(), unlocks a frame. Must only be called after locking. - */ - void (*unlock_frame)(struct AVHWFramesContext *fc, AVVkFrame *vkf); -} AVVulkanFramesContext; - -/* - * Frame structure. - * - * @note the size of this structure is not part of the ABI, to allocate - * you must use @av_vk_frame_alloc(). - */ -struct AVVkFrame { - /** - * Vulkan images to which the memory is bound to. - * May be one for multiplane formats, or multiple. - */ - VkImage img[AV_NUM_DATA_POINTERS]; - - /** - * Tiling for the frame. - */ - VkImageTiling tiling; - - /** - * Memory backing the images. Either one, or as many as there are planes - * in the sw_format. - * In case of having multiple VkImages, but one memory, the offset field - * will indicate the bound offset for each image. - */ - VkDeviceMemory mem[AV_NUM_DATA_POINTERS]; - size_t size[AV_NUM_DATA_POINTERS]; - - /** - * OR'd flags for all memory allocated - */ - VkMemoryPropertyFlagBits flags; - - /** - * Updated after every barrier. One per VkImage. - */ - VkAccessFlagBits access[AV_NUM_DATA_POINTERS]; - VkImageLayout layout[AV_NUM_DATA_POINTERS]; - - /** - * Synchronization timeline semaphores, one for each VkImage. - * Must not be freed manually. Must be waited on at every submission using - * the value in sem_value, and must be signalled at every submission, - * using an incremented value. - */ - VkSemaphore sem[AV_NUM_DATA_POINTERS]; - - /** - * Up to date semaphore value at which each image becomes accessible. - * One per VkImage. - * Clients must wait on this value when submitting a command queue, - * and increment it when signalling. - */ - uint64_t sem_value[AV_NUM_DATA_POINTERS]; - - /** - * Internal data. - */ - struct AVVkFrameInternal *internal; - - /** - * Describes the binding offset of each image to the VkDeviceMemory. - * One per VkImage. - */ - ptrdiff_t offset[AV_NUM_DATA_POINTERS]; - - /** - * Queue family of the images. Must be VK_QUEUE_FAMILY_IGNORED if - * the image was allocated with the CONCURRENT concurrency option. - * One per VkImage. - */ - uint32_t queue_family[AV_NUM_DATA_POINTERS]; -}; - -/** - * Allocates a single AVVkFrame and initializes everything as 0. - * @note Must be freed via av_free() - */ -AVVkFrame *av_vk_frame_alloc(void); - -/** - * Returns the optimal per-plane Vulkan format for a given sw_format, - * one for each plane. - * Returns NULL on unsupported formats. - */ -const VkFormat *av_vkfmt_from_pixfmt(enum AVPixelFormat p); - -/** - * Returns an array of optional Vulkan instance extensions that FFmpeg - * may use if enabled. - * @note Must be freed via av_free() - */ -const char **av_vk_get_optional_instance_extensions(int *count); - -/** - * Returns an array of optional Vulkan device extensions that FFmpeg - * may use if enabled. - * @note Must be freed via av_free() - */ -const char **av_vk_get_optional_device_extensions(int *count); - -#endif /* AVUTIL_HWCONTEXT_VULKAN_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/intfloat.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/intfloat.h deleted file mode 100644 index fe3d7ec4a5..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/intfloat.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTFLOAT_H -#define AVUTIL_INTFLOAT_H - -#include -#include "attributes.h" - -union av_intfloat32 { - uint32_t i; - float f; -}; - -union av_intfloat64 { - uint64_t i; - double f; -}; - -/** - * Reinterpret a 32-bit integer as a float. - */ -static av_always_inline float av_int2float(uint32_t i) -{ - union av_intfloat32 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a float as a 32-bit integer. - */ -static av_always_inline uint32_t av_float2int(float f) -{ - union av_intfloat32 v; - v.f = f; - return v.i; -} - -/** - * Reinterpret a 64-bit integer as a double. - */ -static av_always_inline double av_int2double(uint64_t i) -{ - union av_intfloat64 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a double as a 64-bit integer. - */ -static av_always_inline uint64_t av_double2int(double f) -{ - union av_intfloat64 v; - v.f = f; - return v.i; -} - -#endif /* AVUTIL_INTFLOAT_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/log.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/log.h deleted file mode 100644 index 4a111ca9a5..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/log.h +++ /dev/null @@ -1,427 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LOG_H -#define AVUTIL_LOG_H - -#include -#include "attributes.h" -#include "version.h" - -typedef enum { - AV_CLASS_CATEGORY_NA = 0, - AV_CLASS_CATEGORY_INPUT, - AV_CLASS_CATEGORY_OUTPUT, - AV_CLASS_CATEGORY_MUXER, - AV_CLASS_CATEGORY_DEMUXER, - AV_CLASS_CATEGORY_ENCODER, - AV_CLASS_CATEGORY_DECODER, - AV_CLASS_CATEGORY_FILTER, - AV_CLASS_CATEGORY_BITSTREAM_FILTER, - AV_CLASS_CATEGORY_SWSCALER, - AV_CLASS_CATEGORY_SWRESAMPLER, - AV_CLASS_CATEGORY_HWDEVICE, - AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40, - AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT, - AV_CLASS_CATEGORY_DEVICE_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_INPUT, - AV_CLASS_CATEGORY_NB ///< not part of ABI/API -}AVClassCategory; - -enum AVClassStateFlags { - /** - * Object initialization has finished and it is now in the 'runtime' stage. - * This affects e.g. what options can be set on the object (only - * AV_OPT_FLAG_RUNTIME_PARAM options can be set on initialized objects). - */ - AV_CLASS_STATE_INITIALIZED = (1 << 0), -}; - -#define AV_IS_INPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT)) - -#define AV_IS_OUTPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT)) - -struct AVOptionRanges; - -/** - * Describe the class of an AVClass context structure. That is an - * arbitrary struct of which the first field is a pointer to an - * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). - */ -typedef struct AVClass { - /** - * The name of the class; usually it is the same name as the - * context structure type to which the AVClass is associated. - */ - const char* class_name; - - /** - * A pointer to a function which returns the name of a context - * instance ctx associated with the class. - */ - const char* (*item_name)(void* ctx); - - /** - * An array of options for the structure or NULL. - * When non-NULL, the array must be terminated by an option with a NULL - * name. - * - * @see av_set_default_options() - */ - const struct AVOption *option; - - /** - * LIBAVUTIL_VERSION with which this structure was created. - * This is used to allow fields to be added to AVClass without requiring - * major version bumps everywhere. - */ - - int version; - - /** - * Offset in the structure where the log level offset is stored. The log - * level offset is an int added to the log level for logging with this - * object as the context. - * - * 0 means there is no such variable. - */ - int log_level_offset_offset; - - /** - * Offset in the structure where a pointer to the parent context for - * logging is stored. For example a decoder could pass its AVCodecContext - * to eval as such a parent context, which an ::av_log() implementation - * could then leverage to display the parent context. - * - * When the pointer is NULL, or this offset is zero, the object is assumed - * to have no parent. - */ - int parent_log_context_offset; - - /** - * Category used for visualization (like color). - * - * Only used when ::get_category() is NULL. Use this field when all - * instances of this class have the same category, use ::get_category() - * otherwise. - */ - AVClassCategory category; - - /** - * Callback to return the instance category. Use this callback when - * different instances of this class may have different categories, - * ::category otherwise. - */ - AVClassCategory (*get_category)(void* ctx); - - /** - * Callback to return the supported/allowed ranges. - */ - int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags); - - /** - * Return next AVOptions-enabled child or NULL - */ - void* (*child_next)(void *obj, void *prev); - - /** - * Iterate over the AVClasses corresponding to potential AVOptions-enabled - * children. - * - * @param iter pointer to opaque iteration state. The caller must initialize - * *iter to NULL before the first call. - * @return AVClass for the next AVOptions-enabled child or NULL if there are - * no more such children. - * - * @note The difference between ::child_next() and ::child_class_iterate() - * is that ::child_next() iterates over _actual_ children of an - * _existing_ object instance, while ::child_class_iterate() iterates - * over the classes of all _potential_ children of any possible - * instance of this class. - */ - const struct AVClass* (*child_class_iterate)(void **iter); - - /** - * When non-zero, offset in the object to an unsigned int holding object - * state flags, a combination of AVClassStateFlags values. The flags are - * updated by the object to signal its state to the generic code. - * - * Added in version 59.41.100. - */ - int state_flags_offset; -} AVClass; - -/** - * @addtogroup lavu_log - * - * @{ - * - * @defgroup lavu_log_constants Logging Constants - * - * @{ - */ - -/** - * Print no output. - */ -#define AV_LOG_QUIET -8 - -/** - * Something went really wrong and we will crash now. - */ -#define AV_LOG_PANIC 0 - -/** - * Something went wrong and recovery is not possible. - * For example, no header was found for a format which depends - * on headers or an illegal combination of parameters is used. - */ -#define AV_LOG_FATAL 8 - -/** - * Something went wrong and cannot losslessly be recovered. - * However, not all future data is affected. - */ -#define AV_LOG_ERROR 16 - -/** - * Something somehow does not look correct. This may or may not - * lead to problems. An example would be the use of '-vstrict -2'. - */ -#define AV_LOG_WARNING 24 - -/** - * Standard information. - */ -#define AV_LOG_INFO 32 - -/** - * Detailed information. - */ -#define AV_LOG_VERBOSE 40 - -/** - * Stuff which is only useful for libav* developers. - */ -#define AV_LOG_DEBUG 48 - -/** - * Extremely verbose debugging, useful for libav* development. - */ -#define AV_LOG_TRACE 56 - -#define AV_LOG_MAX_OFFSET (AV_LOG_TRACE - AV_LOG_QUIET) - -/** - * @} - */ - -/** - * Sets additional colors for extended debugging sessions. - * @code - av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n"); - @endcode - * Requires 256color terminal support. Uses outside debugging is not - * recommended. - */ -#define AV_LOG_C(x) ((x) << 8) - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct or NULL if general log. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - */ -void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); - -/** - * Send the specified message to the log once with the initial_level and then with - * the subsequent_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct or NULL if general log. - * @param initial_level importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant" for the first occurrence. - * @param subsequent_level importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant" after the first occurrence. - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param state a variable to keep trak of if a message has already been printed - * this must be initialized to 0 before the first use. The same state - * must not be accessed by 2 Threads simultaneously. - */ -void av_log_once(void* avcl, int initial_level, int subsequent_level, int *state, const char *fmt, ...) av_printf_format(5, 6); - - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_vlog(void *avcl, int level, const char *fmt, va_list vl); - -/** - * Get the current log level - * - * @see lavu_log_constants - * - * @return Current log level - */ -int av_log_get_level(void); - -/** - * Set the log level - * - * @see lavu_log_constants - * - * @param level Logging level - */ -void av_log_set_level(int level); - -/** - * Set the logging callback - * - * @note The callback must be thread safe, even if the application does not use - * threads itself as some codecs are multithreaded. - * - * @see av_log_default_callback - * - * @param callback A logging function with a compatible signature. - */ -void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)); - -/** - * Default logging callback - * - * It prints the message to stderr, optionally colorizing it. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_log_default_callback(void *avcl, int level, const char *fmt, - va_list vl); - -/** - * Return the context name - * - * @param ctx The AVClass context - * - * @return The AVClass class_name - */ -const char* av_default_item_name(void* ctx); -AVClassCategory av_default_get_category(void *ptr); - -/** - * Format a line of log the same way as the default callback. - * @param line buffer to receive the formatted line - * @param line_size size of the buffer - * @param print_prefix used to store whether the prefix must be printed; - * must point to a persistent integer initially set to 1 - */ -void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, - char *line, int line_size, int *print_prefix); - -/** - * Format a line of log the same way as the default callback. - * @param line buffer to receive the formatted line; - * may be NULL if line_size is 0 - * @param line_size size of the buffer; at most line_size-1 characters will - * be written to the buffer, plus one null terminator - * @param print_prefix used to store whether the prefix must be printed; - * must point to a persistent integer initially set to 1 - * @return Returns a negative value if an error occurred, otherwise returns - * the number of characters that would have been written for a - * sufficiently large buffer, not including the terminating null - * character. If the return value is not less than line_size, it means - * that the log message was truncated to fit the buffer. - */ -int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, - char *line, int line_size, int *print_prefix); - -/** - * Skip repeated messages, this requires the user app to use av_log() instead of - * (f)printf as the 2 would otherwise interfere and lead to - * "Last message repeated x times" messages below (f)printf messages with some - * bad luck. - * Also to receive the last, "last repeated" line if any, the user app must - * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end - */ -#define AV_LOG_SKIP_REPEATED 1 - -/** - * Include the log severity in messages originating from codecs. - * - * Results in messages such as: - * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts - */ -#define AV_LOG_PRINT_LEVEL 2 - -/** - * Include system time in log output. - */ -#define AV_LOG_PRINT_TIME 4 - -/** - * Include system date and time in log output. - */ -#define AV_LOG_PRINT_DATETIME 8 - -void av_log_set_flags(int arg); -int av_log_get_flags(void); - -/** - * @} - */ - -#endif /* AVUTIL_LOG_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/macros.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/macros.h deleted file mode 100644 index 2a7567c3ea..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/macros.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu - * Utility Preprocessor macros - */ - -#ifndef AVUTIL_MACROS_H -#define AVUTIL_MACROS_H - -#include "libavutil/avconfig.h" - -#if AV_HAVE_BIGENDIAN -# define AV_NE(be, le) (be) -#else -# define AV_NE(be, le) (le) -#endif - -/** - * Comparator. - * For two numerical expressions x and y, gives 1 if x > y, -1 if x < y, and 0 - * if x == y. This is useful for instance in a qsort comparator callback. - * Furthermore, compilers are able to optimize this to branchless code, and - * there is no risk of overflow with signed types. - * As with many macros, this evaluates its argument multiple times, it thus - * must not have a side-effect. - */ -#define FFDIFFSIGN(x,y) (((x)>(y)) - ((x)<(y))) - -#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) -#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) -#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) -#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) - -#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) -#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) - -#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) -#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) - -/** - * @addtogroup preproc_misc Preprocessor String Macros - * - * String manipulation macros - * - * @{ - */ - -#define AV_STRINGIFY(s) AV_TOSTRING(s) -#define AV_TOSTRING(s) #s - -#define AV_GLUE(a, b) a ## b -#define AV_JOIN(a, b) AV_GLUE(a, b) - -/** - * @} - */ - -#define AV_PRAGMA(s) _Pragma(#s) - -#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) - -#endif /* AVUTIL_MACROS_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/mathematics.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/mathematics.h deleted file mode 100644 index 486de530f2..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/mathematics.h +++ /dev/null @@ -1,300 +0,0 @@ -/* - * copyright (c) 2005-2012 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @addtogroup lavu_math - * Mathematical utilities for working with timestamp and time base. - */ - -#ifndef AVUTIL_MATHEMATICS_H -#define AVUTIL_MATHEMATICS_H - -#include -#include -#include "attributes.h" -#include "rational.h" -#include "intfloat.h" - -#ifndef M_E -#define M_E 2.7182818284590452354 /* e */ -#endif -#ifndef M_Ef -#define M_Ef 2.7182818284590452354f /* e */ -#endif -#ifndef M_LN2 -#define M_LN2 0.69314718055994530942 /* log_e 2 */ -#endif -#ifndef M_LN2f -#define M_LN2f 0.69314718055994530942f /* log_e 2 */ -#endif -#ifndef M_LN10 -#define M_LN10 2.30258509299404568402 /* log_e 10 */ -#endif -#ifndef M_LN10f -#define M_LN10f 2.30258509299404568402f /* log_e 10 */ -#endif -#ifndef M_LOG2_10 -#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ -#endif -#ifndef M_LOG2_10f -#define M_LOG2_10f 3.32192809488736234787f /* log_2 10 */ -#endif -#ifndef M_PHI -#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ -#endif -#ifndef M_PHIf -#define M_PHIf 1.61803398874989484820f /* phi / golden ratio */ -#endif -#ifndef M_PI -#define M_PI 3.14159265358979323846 /* pi */ -#endif -#ifndef M_PIf -#define M_PIf 3.14159265358979323846f /* pi */ -#endif -#ifndef M_PI_2 -#define M_PI_2 1.57079632679489661923 /* pi/2 */ -#endif -#ifndef M_PI_2f -#define M_PI_2f 1.57079632679489661923f /* pi/2 */ -#endif -#ifndef M_PI_4 -#define M_PI_4 0.78539816339744830962 /* pi/4 */ -#endif -#ifndef M_PI_4f -#define M_PI_4f 0.78539816339744830962f /* pi/4 */ -#endif -#ifndef M_1_PI -#define M_1_PI 0.31830988618379067154 /* 1/pi */ -#endif -#ifndef M_1_PIf -#define M_1_PIf 0.31830988618379067154f /* 1/pi */ -#endif -#ifndef M_2_PI -#define M_2_PI 0.63661977236758134308 /* 2/pi */ -#endif -#ifndef M_2_PIf -#define M_2_PIf 0.63661977236758134308f /* 2/pi */ -#endif -#ifndef M_2_SQRTPI -#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ -#endif -#ifndef M_2_SQRTPIf -#define M_2_SQRTPIf 1.12837916709551257390f /* 2/sqrt(pi) */ -#endif -#ifndef M_SQRT1_2 -#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ -#endif -#ifndef M_SQRT1_2f -#define M_SQRT1_2f 0.70710678118654752440f /* 1/sqrt(2) */ -#endif -#ifndef M_SQRT2 -#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ -#endif -#ifndef M_SQRT2f -#define M_SQRT2f 1.41421356237309504880f /* sqrt(2) */ -#endif -#ifndef NAN -#define NAN av_int2float(0x7fc00000) -#endif -#ifndef INFINITY -#define INFINITY av_int2float(0x7f800000) -#endif - -/** - * @addtogroup lavu_math - * - * @{ - */ - -/** - * Rounding methods. - */ -enum AVRounding { - AV_ROUND_ZERO = 0, ///< Round toward zero. - AV_ROUND_INF = 1, ///< Round away from zero. - AV_ROUND_DOWN = 2, ///< Round toward -infinity. - AV_ROUND_UP = 3, ///< Round toward +infinity. - AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. - /** - * Flag telling rescaling functions to pass `INT64_MIN`/`MAX` through - * unchanged, avoiding special cases for #AV_NOPTS_VALUE. - * - * Unlike other values of the enumeration AVRounding, this value is a - * bitmask that must be used in conjunction with another value of the - * enumeration through a bitwise OR, in order to set behavior for normal - * cases. - * - * @code{.c} - * av_rescale_rnd(3, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX); - * // Rescaling 3: - * // Calculating 3 * 1 / 2 - * // 3 / 2 is rounded up to 2 - * // => 2 - * - * av_rescale_rnd(AV_NOPTS_VALUE, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX); - * // Rescaling AV_NOPTS_VALUE: - * // AV_NOPTS_VALUE == INT64_MIN - * // AV_NOPTS_VALUE is passed through - * // => AV_NOPTS_VALUE - * @endcode - */ - AV_ROUND_PASS_MINMAX = 8192, -}; - -/** - * Compute the greatest common divisor of two integer operands. - * - * @param a Operand - * @param b Operand - * @return GCD of a and b up to sign; if a >= 0 and b >= 0, return value is >= 0; - * if a == 0 and b == 0, returns 0. - */ -int64_t av_const av_gcd(int64_t a, int64_t b); - -/** - * Rescale a 64-bit integer with rounding to nearest. - * - * The operation is mathematically equivalent to `a * b / c`, but writing that - * directly can overflow. - * - * This function is equivalent to av_rescale_rnd() with #AV_ROUND_NEAR_INF. - * - * @see av_rescale_rnd(), av_rescale_q(), av_rescale_q_rnd() - */ -int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; - -/** - * Rescale a 64-bit integer with specified rounding. - * - * The operation is mathematically equivalent to `a * b / c`, but writing that - * directly can overflow, and does not support different rounding methods. - * If the result is not representable then INT64_MIN is returned. - * - * @see av_rescale(), av_rescale_q(), av_rescale_q_rnd() - */ -int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers. - * - * The operation is mathematically equivalent to `a * bq / cq`. - * - * This function is equivalent to av_rescale_q_rnd() with #AV_ROUND_NEAR_INF. - * - * @see av_rescale(), av_rescale_rnd(), av_rescale_q_rnd() - */ -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers with specified rounding. - * - * The operation is mathematically equivalent to `a * bq / cq`. - * - * @see av_rescale(), av_rescale_rnd(), av_rescale_q() - */ -int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, - enum AVRounding rnd) av_const; - -/** - * Compare two timestamps each in its own time base. - * - * @return One of the following values: - * - -1 if `ts_a` is before `ts_b` - * - 1 if `ts_a` is after `ts_b` - * - 0 if they represent the same position - * - * @warning - * The result of the function is undefined if one of the timestamps is outside - * the `int64_t` range when represented in the other's timebase. - */ -int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); - -/** - * Compare the remainders of two integer operands divided by a common divisor. - * - * In other words, compare the least significant `log2(mod)` bits of integers - * `a` and `b`. - * - * @code{.c} - * av_compare_mod(0x11, 0x02, 0x10) < 0 // since 0x11 % 0x10 (0x1) < 0x02 % 0x10 (0x2) - * av_compare_mod(0x11, 0x02, 0x20) > 0 // since 0x11 % 0x20 (0x11) > 0x02 % 0x20 (0x02) - * @endcode - * - * @param a Operand - * @param b Operand - * @param mod Divisor; must be a power of 2 - * @return - * - a negative value if `a % mod < b % mod` - * - a positive value if `a % mod > b % mod` - * - zero if `a % mod == b % mod` - */ -int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); - -/** - * Rescale a timestamp while preserving known durations. - * - * This function is designed to be called per audio packet to scale the input - * timestamp to a different time base. Compared to a simple av_rescale_q() - * call, this function is robust against possible inconsistent frame durations. - * - * The `last` parameter is a state variable that must be preserved for all - * subsequent calls for the same stream. For the first call, `*last` should be - * initialized to #AV_NOPTS_VALUE. - * - * @param[in] in_tb Input time base - * @param[in] in_ts Input timestamp - * @param[in] fs_tb Duration time base; typically this is finer-grained - * (greater) than `in_tb` and `out_tb` - * @param[in] duration Duration till the next call to this function (i.e. - * duration of the current packet/frame) - * @param[in,out] last Pointer to a timestamp expressed in terms of - * `fs_tb`, acting as a state variable - * @param[in] out_tb Output timebase - * @return Timestamp expressed in terms of `out_tb` - * - * @note In the context of this function, "duration" is in term of samples, not - * seconds. - */ -int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb); - -/** - * Add a value to a timestamp. - * - * This function guarantees that when the same value is repeatedly added that - * no accumulation of rounding errors occurs. - * - * @param[in] ts Input timestamp - * @param[in] ts_tb Input timestamp time base - * @param[in] inc Value to be added - * @param[in] inc_tb Time base of `inc` - */ -int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc); - -/** - * 0th order modified bessel function of the first kind. - */ -double av_bessel_i0(double x); - -/** - * @} - */ - -#endif /* AVUTIL_MATHEMATICS_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/mem.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/mem.h deleted file mode 100644 index ab7648ac57..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/mem.h +++ /dev/null @@ -1,607 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_mem - * Memory handling functions - */ - -#ifndef AVUTIL_MEM_H -#define AVUTIL_MEM_H - -#include -#include - -#include "attributes.h" - -/** - * @addtogroup lavu_mem - * Utilities for manipulating memory. - * - * FFmpeg has several applications of memory that are not required of a typical - * program. For example, the computing-heavy components like video decoding and - * encoding can be sped up significantly through the use of aligned memory. - * - * However, for each of FFmpeg's applications of memory, there might not be a - * recognized or standardized API for that specific use. Memory alignment, for - * instance, varies wildly depending on operating systems, architectures, and - * compilers. Hence, this component of @ref libavutil is created to make - * dealing with memory consistently possible on all platforms. - * - * @{ - */ - -/** - * @defgroup lavu_mem_attrs Function Attributes - * Function attributes applicable to memory handling functions. - * - * These function attributes can help compilers emit more useful warnings, or - * generate better code. - * @{ - */ - -/** - * @def av_malloc_attrib - * Function attribute denoting a malloc-like function. - * - * @see Function attribute `malloc` in GCC's documentation - */ - -#if AV_GCC_VERSION_AT_LEAST(3,1) - #define av_malloc_attrib __attribute__((__malloc__)) -#else - #define av_malloc_attrib -#endif - -/** - * @def av_alloc_size(...) - * Function attribute used on a function that allocates memory, whose size is - * given by the specified parameter(s). - * - * @code{.c} - * void *av_malloc(size_t size) av_alloc_size(1); - * void *av_calloc(size_t nmemb, size_t size) av_alloc_size(1, 2); - * @endcode - * - * @param ... One or two parameter indexes, separated by a comma - * - * @see Function attribute `alloc_size` in GCC's documentation - */ - -#if AV_GCC_VERSION_AT_LEAST(4,3) - #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__))) -#else - #define av_alloc_size(...) -#endif - -/** - * @} - */ - -/** - * @defgroup lavu_mem_funcs Heap Management - * Functions responsible for allocating, freeing, and copying memory. - * - * All memory allocation functions have a built-in upper limit of `INT_MAX` - * bytes. This may be changed with av_max_alloc(), although exercise extreme - * caution when doing so. - * - * @{ - */ - -/** - * Allocate a memory block with alignment suitable for all memory accesses - * (including vectors if available on the CPU). - * - * @param size Size in bytes for the memory block to be allocated - * @return Pointer to the allocated block, or `NULL` if the block cannot - * be allocated - * @see av_mallocz() - */ -void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a memory block with alignment suitable for all memory accesses - * (including vectors if available on the CPU) and zero all the bytes of the - * block. - * - * @param size Size in bytes for the memory block to be allocated - * @return Pointer to the allocated block, or `NULL` if it cannot be allocated - * @see av_malloc() - */ -void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a memory block for an array with av_malloc(). - * - * The allocated memory will have size `size * nmemb` bytes. - * - * @param nmemb Number of element - * @param size Size of a single element - * @return Pointer to the allocated block, or `NULL` if the block cannot - * be allocated - * @see av_malloc() - */ -av_alloc_size(1, 2) void *av_malloc_array(size_t nmemb, size_t size); - -/** - * Allocate a memory block for an array with av_mallocz(). - * - * The allocated memory will have size `size * nmemb` bytes. - * - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, or `NULL` if the block cannot - * be allocated - * - * @see av_mallocz() - * @see av_malloc_array() - */ -void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib av_alloc_size(1, 2); - -/** - * Allocate, reallocate, or free a block of memory. - * - * If `ptr` is `NULL` and `size` > 0, allocate a new block. Otherwise, expand or - * shrink that block of memory according to `size`. - * - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or `NULL` - * @param size Size in bytes of the memory block to be allocated or - * reallocated - * - * @return Pointer to a newly-reallocated block or `NULL` if the block - * cannot be reallocated - * - * @warning Unlike av_malloc(), the returned pointer is not guaranteed to be - * correctly aligned. The returned pointer must be freed after even - * if size is zero. - * @see av_fast_realloc() - * @see av_reallocp() - */ -void *av_realloc(void *ptr, size_t size) av_alloc_size(2); - -/** - * Allocate, reallocate, or free a block of memory through a pointer to a - * pointer. - * - * If `*ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is - * zero, free the memory block pointed to by `*ptr`. Otherwise, expand or - * shrink that block of memory according to `size`. - * - * @param[in,out] ptr Pointer to a pointer to a memory block already allocated - * with av_realloc(), or a pointer to `NULL`. The pointer - * is updated on success, or freed on failure. - * @param[in] size Size in bytes for the memory block to be allocated or - * reallocated - * - * @return Zero on success, an AVERROR error code on failure - * - * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be - * correctly aligned. - */ -av_warn_unused_result -int av_reallocp(void *ptr, size_t size); - -/** - * Allocate, reallocate, or free a block of memory. - * - * This function does the same thing as av_realloc(), except: - * - It takes two size arguments and allocates `nelem * elsize` bytes, - * after checking the result of the multiplication for integer overflow. - * - It frees the input block in case of failure, thus avoiding the memory - * leak with the classic - * @code{.c} - * buf = realloc(buf); - * if (!buf) - * return -1; - * @endcode - * pattern. - */ -void *av_realloc_f(void *ptr, size_t nelem, size_t elsize); - -/** - * Allocate, reallocate, or free an array. - * - * If `ptr` is `NULL` and `nmemb` > 0, allocate a new block. - * - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or `NULL` - * @param nmemb Number of elements in the array - * @param size Size of the single element of the array - * - * @return Pointer to a newly-reallocated block or NULL if the block - * cannot be reallocated - * - * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be - * correctly aligned. The returned pointer must be freed after even if - * nmemb is zero. - * @see av_reallocp_array() - */ -av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size); - -/** - * Allocate, reallocate an array through a pointer to a pointer. - * - * If `*ptr` is `NULL` and `nmemb` > 0, allocate a new block. - * - * @param[in,out] ptr Pointer to a pointer to a memory block already - * allocated with av_realloc(), or a pointer to `NULL`. - * The pointer is updated on success, or freed on failure. - * @param[in] nmemb Number of elements - * @param[in] size Size of the single element - * - * @return Zero on success, an AVERROR error code on failure - * - * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be - * correctly aligned. *ptr must be freed after even if nmemb is zero. - */ -int av_reallocp_array(void *ptr, size_t nmemb, size_t size); - -/** - * Reallocate the given buffer if it is not large enough, otherwise do nothing. - * - * If the given buffer is `NULL`, then a new uninitialized buffer is allocated. - * - * If the given buffer is not large enough, and reallocation fails, `NULL` is - * returned and `*size` is set to 0, but the original buffer is not changed or - * freed. - * - * A typical use pattern follows: - * - * @code{.c} - * uint8_t *buf = ...; - * uint8_t *new_buf = av_fast_realloc(buf, ¤t_size, size_needed); - * if (!new_buf) { - * // Allocation failed; clean up original buffer - * av_freep(&buf); - * return AVERROR(ENOMEM); - * } - * @endcode - * - * @param[in,out] ptr Already allocated buffer, or `NULL` - * @param[in,out] size Pointer to the size of buffer `ptr`. `*size` is - * updated to the new allocated size, in particular 0 - * in case of failure. - * @param[in] min_size Desired minimal size of buffer `ptr` - * @return `ptr` if the buffer is large enough, a pointer to newly reallocated - * buffer if the buffer was not large enough, or `NULL` in case of - * error - * @see av_realloc() - * @see av_fast_malloc() - */ -void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate a buffer, reusing the given one if large enough. - * - * Contrary to av_fast_realloc(), the current buffer contents might not be - * preserved and on error the old buffer is freed, thus no special handling to - * avoid memleaks is necessary. - * - * `*ptr` is allowed to be `NULL`, in which case allocation always happens if - * `size_needed` is greater than 0. - * - * @code{.c} - * uint8_t *buf = ...; - * av_fast_malloc(&buf, ¤t_size, size_needed); - * if (!buf) { - * // Allocation failed; buf already freed - * return AVERROR(ENOMEM); - * } - * @endcode - * - * @param[in,out] ptr Pointer to pointer to an already allocated buffer. - * `*ptr` will be overwritten with pointer to new - * buffer on success or `NULL` on failure - * @param[in,out] size Pointer to the size of buffer `*ptr`. `*size` is - * updated to the new allocated size, in particular 0 - * in case of failure. - * @param[in] min_size Desired minimal size of buffer `*ptr` - * @see av_realloc() - * @see av_fast_mallocz() - */ -void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate and clear a buffer, reusing the given one if large enough. - * - * Like av_fast_malloc(), but all newly allocated space is initially cleared. - * Reused buffer is not cleared. - * - * `*ptr` is allowed to be `NULL`, in which case allocation always happens if - * `size_needed` is greater than 0. - * - * @param[in,out] ptr Pointer to pointer to an already allocated buffer. - * `*ptr` will be overwritten with pointer to new - * buffer on success or `NULL` on failure - * @param[in,out] size Pointer to the size of buffer `*ptr`. `*size` is - * updated to the new allocated size, in particular 0 - * in case of failure. - * @param[in] min_size Desired minimal size of buffer `*ptr` - * @see av_fast_malloc() - */ -void av_fast_mallocz(void *ptr, unsigned int *size, size_t min_size); - -/** - * Free a memory block which has been allocated with a function of av_malloc() - * or av_realloc() family. - * - * @param ptr Pointer to the memory block which should be freed. - * - * @note `ptr = NULL` is explicitly allowed. - * @note It is recommended that you use av_freep() instead, to prevent leaving - * behind dangling pointers. - * @see av_freep() - */ -void av_free(void *ptr); - -/** - * Free a memory block which has been allocated with a function of av_malloc() - * or av_realloc() family, and set the pointer pointing to it to `NULL`. - * - * @code{.c} - * uint8_t *buf = av_malloc(16); - * av_free(buf); - * // buf now contains a dangling pointer to freed memory, and accidental - * // dereference of buf will result in a use-after-free, which may be a - * // security risk. - * - * uint8_t *buf = av_malloc(16); - * av_freep(&buf); - * // buf is now NULL, and accidental dereference will only result in a - * // NULL-pointer dereference. - * @endcode - * - * @param ptr Pointer to the pointer to the memory block which should be freed - * @note `*ptr = NULL` is safe and leads to no action. - * @see av_free() - */ -void av_freep(void *ptr); - -/** - * Duplicate a string. - * - * @param s String to be duplicated - * @return Pointer to a newly-allocated string containing a - * copy of `s` or `NULL` if the string cannot be allocated - * @see av_strndup() - */ -char *av_strdup(const char *s) av_malloc_attrib; - -/** - * Duplicate a substring of a string. - * - * @param s String to be duplicated - * @param len Maximum length of the resulting string (not counting the - * terminating byte) - * @return Pointer to a newly-allocated string containing a - * substring of `s` or `NULL` if the string cannot be allocated - */ -char *av_strndup(const char *s, size_t len) av_malloc_attrib; - -/** - * Duplicate a buffer with av_malloc(). - * - * @param p Buffer to be duplicated - * @param size Size in bytes of the buffer copied - * @return Pointer to a newly allocated buffer containing a - * copy of `p` or `NULL` if the buffer cannot be allocated - */ -void *av_memdup(const void *p, size_t size); - -/** - * Overlapping memcpy() implementation. - * - * @param dst Destination buffer - * @param back Number of bytes back to start copying (i.e. the initial size of - * the overlapping window); must be > 0 - * @param cnt Number of bytes to copy; must be >= 0 - * - * @note `cnt > back` is valid, this will copy the bytes we just copied, - * thus creating a repeating pattern with a period length of `back`. - */ -void av_memcpy_backptr(uint8_t *dst, int back, int cnt); - -/** - * @} - */ - -/** - * @defgroup lavu_mem_dynarray Dynamic Array - * - * Utilities to make an array grow when needed. - * - * Sometimes, the programmer would want to have an array that can grow when - * needed. The libavutil dynamic array utilities fill that need. - * - * libavutil supports two systems of appending elements onto a dynamically - * allocated array, the first one storing the pointer to the value in the - * array, and the second storing the value directly. In both systems, the - * caller is responsible for maintaining a variable containing the length of - * the array, as well as freeing of the array after use. - * - * The first system stores pointers to values in a block of dynamically - * allocated memory. Since only pointers are stored, the function does not need - * to know the size of the type. Both av_dynarray_add() and - * av_dynarray_add_nofree() implement this system. - * - * @code - * type **array = NULL; //< an array of pointers to values - * int nb = 0; //< a variable to keep track of the length of the array - * - * type to_be_added = ...; - * type to_be_added2 = ...; - * - * av_dynarray_add(&array, &nb, &to_be_added); - * if (nb == 0) - * return AVERROR(ENOMEM); - * - * av_dynarray_add(&array, &nb, &to_be_added2); - * if (nb == 0) - * return AVERROR(ENOMEM); - * - * // Now: - * // nb == 2 - * // &to_be_added == array[0] - * // &to_be_added2 == array[1] - * - * av_freep(&array); - * @endcode - * - * The second system stores the value directly in a block of memory. As a - * result, the function has to know the size of the type. av_dynarray2_add() - * implements this mechanism. - * - * @code - * type *array = NULL; //< an array of values - * int nb = 0; //< a variable to keep track of the length of the array - * - * type to_be_added = ...; - * type to_be_added2 = ...; - * - * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array), NULL); - * if (!addr) - * return AVERROR(ENOMEM); - * memcpy(addr, &to_be_added, sizeof(to_be_added)); - * - * // Shortcut of the above. - * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array), - * (const void *)&to_be_added2); - * if (!addr) - * return AVERROR(ENOMEM); - * - * // Now: - * // nb == 2 - * // to_be_added == array[0] - * // to_be_added2 == array[1] - * - * av_freep(&array); - * @endcode - * - * @{ - */ - -/** - * Add the pointer to an element to a dynamic array. - * - * The array to grow is supposed to be an array of pointers to - * structures, and the element to add must be a pointer to an already - * allocated structure. - * - * The array is reallocated when its size reaches powers of 2. - * Therefore, the amortized cost of adding an element is constant. - * - * In case of success, the pointer to the array is updated in order to - * point to the new grown array, and the number pointed to by `nb_ptr` - * is incremented. - * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and - * `*nb_ptr` is set to 0. - * - * @param[in,out] tab_ptr Pointer to the array to grow - * @param[in,out] nb_ptr Pointer to the number of elements in the array - * @param[in] elem Element to add - * @see av_dynarray_add_nofree(), av_dynarray2_add() - */ -void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem); - -/** - * Add an element to a dynamic array. - * - * Function has the same functionality as av_dynarray_add(), - * but it doesn't free memory on fails. It returns error code - * instead and leave current buffer untouched. - * - * @return >=0 on success, negative otherwise - * @see av_dynarray_add(), av_dynarray2_add() - */ -av_warn_unused_result -int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem); - -/** - * Add an element of size `elem_size` to a dynamic array. - * - * The array is reallocated when its number of elements reaches powers of 2. - * Therefore, the amortized cost of adding an element is constant. - * - * In case of success, the pointer to the array is updated in order to - * point to the new grown array, and the number pointed to by `nb_ptr` - * is incremented. - * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and - * `*nb_ptr` is set to 0. - * - * @param[in,out] tab_ptr Pointer to the array to grow - * @param[in,out] nb_ptr Pointer to the number of elements in the array - * @param[in] elem_size Size in bytes of an element in the array - * @param[in] elem_data Pointer to the data of the element to add. If - * `NULL`, the space of the newly added element is - * allocated but left uninitialized. - * - * @return Pointer to the data of the element to copy in the newly allocated - * space - * @see av_dynarray_add(), av_dynarray_add_nofree() - */ -void *av_dynarray2_add(void **tab_ptr, int *nb_ptr, size_t elem_size, - const uint8_t *elem_data); - -/** - * @} - */ - -/** - * @defgroup lavu_mem_misc Miscellaneous Functions - * - * Other functions related to memory allocation. - * - * @{ - */ - -/** - * Multiply two `size_t` values checking for overflow. - * - * @param[in] a Operand of multiplication - * @param[in] b Operand of multiplication - * @param[out] r Pointer to the result of the operation - * @return 0 on success, AVERROR(EINVAL) on overflow - */ -int av_size_mult(size_t a, size_t b, size_t *r); - -/** - * Set the maximum size that may be allocated in one block. - * - * The value specified with this function is effective for all libavutil's @ref - * lavu_mem_funcs "heap management functions." - * - * By default, the max value is defined as `INT_MAX`. - * - * @param max Value to be set as the new maximum size - * - * @warning Exercise extreme caution when using this function. Don't touch - * this if you do not understand the full consequence of doing so. - */ -void av_max_alloc(size_t max); - -/** - * @} - * @} - */ - -#endif /* AVUTIL_MEM_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/pixfmt.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/pixfmt.h deleted file mode 100644 index 2e7b6457e0..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/pixfmt.h +++ /dev/null @@ -1,817 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXFMT_H -#define AVUTIL_PIXFMT_H - -/** - * @file - * pixel format definitions - */ - -#include "libavutil/avconfig.h" -#include "version.h" - -#define AVPALETTE_SIZE 1024 -#define AVPALETTE_COUNT 256 - -/** - * Maximum number of planes in any pixel format. - * This should be used when a maximum is needed, but code should not - * be written to require a maximum for no good reason. - */ -#define AV_VIDEO_MAX_PLANES 4 - -/** - * Pixel format. - * - * @note - * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA - * color is put together as: - * (A << 24) | (R << 16) | (G << 8) | B - * This is stored as BGRA on little-endian CPU architectures and ARGB on - * big-endian CPUs. - * - * @note - * If the resolution is not a multiple of the chroma subsampling factor - * then the chroma plane resolution must be rounded up. - * - * @par - * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized - * image data is stored in AVFrame.data[0]. The palette is transported in - * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is - * formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is - * also endian-specific). Note also that the individual RGB32 palette - * components stored in AVFrame.data[1] should be in the range 0..255. - * This is important as many custom PAL8 video codecs that were designed - * to run on the IBM VGA graphics adapter use 6-bit palette components. - * - * @par - * For all the 8 bits per pixel formats, an RGB32 palette is in data[1] like - * for pal8. This palette is filled in automatically by the function - * allocating the picture. - */ -enum AVPixelFormat { - AV_PIX_FMT_NONE = -1, - AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - AV_PIX_FMT_GRAY8, ///< Y , 8bpp - AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_PAL8, ///< 8 bits with AV_PIX_FMT_RGB32 palette - AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range - AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting color_range - AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting color_range - AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)3R 3G 2B(lsb) - AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped - - AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian - AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian - AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range - AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) - AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined - AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined - - AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined - AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined - - /** - * Hardware acceleration through VA-API, data[3] contains a - * VASurfaceID. - */ - AV_PIX_FMT_VAAPI, - - AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined - AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined - AV_PIX_FMT_YA8, ///< 8 bits gray, 8 bits alpha - - AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 - AV_PIX_FMT_GRAY8A= AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 - - AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - - /** - * The following 12 formats have the disadvantage of needing 1 format for each bit depth. - * Notice that each 9/10 bits sample is stored in 16 bits with extra padding. - * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better. - */ - AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp - AV_PIX_FMT_GBR24P = AV_PIX_FMT_GBRP, // alias for #AV_PIX_FMT_GBRP - AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian - AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian - AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian - AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian - AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian - AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian - AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) - AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) - AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian - AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian - AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - - AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface - - AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_NV16, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - - AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - - AV_PIX_FMT_YVYU422, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb - - AV_PIX_FMT_YA16BE, ///< 16 bits gray, 16 bits alpha (big-endian) - AV_PIX_FMT_YA16LE, ///< 16 bits gray, 16 bits alpha (little-endian) - - AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp - AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian - AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian - /** - * HW acceleration through QSV, data[3] contains a pointer to the - * mfxFrameSurface1 structure. - * - * Before FFmpeg 5.0: - * mfxFrameSurface1.Data.MemId contains a pointer when importing - * the following frames as QSV frames: - * - * VAAPI: - * mfxFrameSurface1.Data.MemId contains a pointer to VASurfaceID - * - * DXVA2: - * mfxFrameSurface1.Data.MemId contains a pointer to IDirect3DSurface9 - * - * FFmpeg 5.0 and above: - * mfxFrameSurface1.Data.MemId contains a pointer to the mfxHDLPair - * structure when importing the following frames as QSV frames: - * - * VAAPI: - * mfxHDLPair.first contains a VASurfaceID pointer. - * mfxHDLPair.second is always MFX_INFINITE. - * - * DXVA2: - * mfxHDLPair.first contains IDirect3DSurface9 pointer. - * mfxHDLPair.second is always MFX_INFINITE. - * - * D3D11: - * mfxHDLPair.first contains a ID3D11Texture2D pointer. - * mfxHDLPair.second contains the texture array index of the frame if the - * ID3D11Texture2D is an array texture, or always MFX_INFINITE if it is a - * normal texture. - */ - AV_PIX_FMT_QSV, - /** - * HW acceleration though MMAL, data[3] contains a pointer to the - * MMAL_BUFFER_HEADER_T structure. - */ - AV_PIX_FMT_MMAL, - - AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer - - /** - * HW acceleration through CUDA. data[i] contain CUdeviceptr pointers - * exactly as for system memory frames. - */ - AV_PIX_FMT_CUDA, - - AV_PIX_FMT_0RGB, ///< packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined - AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined - AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined - AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined - - AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian - AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian - AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian - AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian - AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV411P and setting color_range - - AV_PIX_FMT_BAYER_BGGR8, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples - AV_PIX_FMT_BAYER_RGGB8, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples - AV_PIX_FMT_BAYER_GBRG8, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples - AV_PIX_FMT_BAYER_GRBG8, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples - AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian - AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian - AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian - AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian - AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian - AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian - AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian - AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian - - AV_PIX_FMT_YUV440P10LE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian - AV_PIX_FMT_YUV440P10BE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian - AV_PIX_FMT_YUV440P12LE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian - AV_PIX_FMT_YUV440P12BE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian - AV_PIX_FMT_AYUV64LE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_AYUV64BE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - - AV_PIX_FMT_VIDEOTOOLBOX, ///< hardware decoding through Videotoolbox - - AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian - AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian - - AV_PIX_FMT_GBRAP12BE, ///< planar GBR 4:4:4:4 48bpp, big-endian - AV_PIX_FMT_GBRAP12LE, ///< planar GBR 4:4:4:4 48bpp, little-endian - - AV_PIX_FMT_GBRAP10BE, ///< planar GBR 4:4:4:4 40bpp, big-endian - AV_PIX_FMT_GBRAP10LE, ///< planar GBR 4:4:4:4 40bpp, little-endian - - AV_PIX_FMT_MEDIACODEC, ///< hardware decoding through MediaCodec - - AV_PIX_FMT_GRAY12BE, ///< Y , 12bpp, big-endian - AV_PIX_FMT_GRAY12LE, ///< Y , 12bpp, little-endian - AV_PIX_FMT_GRAY10BE, ///< Y , 10bpp, big-endian - AV_PIX_FMT_GRAY10LE, ///< Y , 10bpp, little-endian - - AV_PIX_FMT_P016LE, ///< like NV12, with 16bpp per component, little-endian - AV_PIX_FMT_P016BE, ///< like NV12, with 16bpp per component, big-endian - - /** - * Hardware surfaces for Direct3D11. - * - * This is preferred over the legacy AV_PIX_FMT_D3D11VA_VLD. The new D3D11 - * hwaccel API and filtering support AV_PIX_FMT_D3D11 only. - * - * data[0] contains a ID3D11Texture2D pointer, and data[1] contains the - * texture array index of the frame as intptr_t if the ID3D11Texture2D is - * an array texture (or always 0 if it's a normal texture). - */ - AV_PIX_FMT_D3D11, - - AV_PIX_FMT_GRAY9BE, ///< Y , 9bpp, big-endian - AV_PIX_FMT_GRAY9LE, ///< Y , 9bpp, little-endian - - AV_PIX_FMT_GBRPF32BE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian - AV_PIX_FMT_GBRPF32LE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian - AV_PIX_FMT_GBRAPF32BE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian - AV_PIX_FMT_GBRAPF32LE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian - - /** - * DRM-managed buffers exposed through PRIME buffer sharing. - * - * data[0] points to an AVDRMFrameDescriptor. - */ - AV_PIX_FMT_DRM_PRIME, - /** - * Hardware surfaces for OpenCL. - * - * data[i] contain 2D image objects (typed in C as cl_mem, used - * in OpenCL as image2d_t) for each plane of the surface. - */ - AV_PIX_FMT_OPENCL, - - AV_PIX_FMT_GRAY14BE, ///< Y , 14bpp, big-endian - AV_PIX_FMT_GRAY14LE, ///< Y , 14bpp, little-endian - - AV_PIX_FMT_GRAYF32BE, ///< IEEE-754 single precision Y, 32bpp, big-endian - AV_PIX_FMT_GRAYF32LE, ///< IEEE-754 single precision Y, 32bpp, little-endian - - AV_PIX_FMT_YUVA422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, big-endian - AV_PIX_FMT_YUVA422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, little-endian - AV_PIX_FMT_YUVA444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, big-endian - AV_PIX_FMT_YUVA444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, little-endian - - AV_PIX_FMT_NV24, ///< planar YUV 4:4:4, 24bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - AV_PIX_FMT_NV42, ///< as above, but U and V bytes are swapped - - /** - * Vulkan hardware images. - * - * data[0] points to an AVVkFrame - */ - AV_PIX_FMT_VULKAN, - - AV_PIX_FMT_Y210BE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian - AV_PIX_FMT_Y210LE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian - - AV_PIX_FMT_X2RGB10LE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_X2RGB10BE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined - AV_PIX_FMT_X2BGR10LE, ///< packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_X2BGR10BE, ///< packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), big-endian, X=unused/undefined - - AV_PIX_FMT_P210BE, ///< interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, big-endian - AV_PIX_FMT_P210LE, ///< interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, little-endian - - AV_PIX_FMT_P410BE, ///< interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, big-endian - AV_PIX_FMT_P410LE, ///< interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, little-endian - - AV_PIX_FMT_P216BE, ///< interleaved chroma YUV 4:2:2, 32bpp, big-endian - AV_PIX_FMT_P216LE, ///< interleaved chroma YUV 4:2:2, 32bpp, little-endian - - AV_PIX_FMT_P416BE, ///< interleaved chroma YUV 4:4:4, 48bpp, big-endian - AV_PIX_FMT_P416LE, ///< interleaved chroma YUV 4:4:4, 48bpp, little-endian - - AV_PIX_FMT_VUYA, ///< packed VUYA 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), VUYAVUYA... - - AV_PIX_FMT_RGBAF16BE, ///< IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., big-endian - AV_PIX_FMT_RGBAF16LE, ///< IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., little-endian - - AV_PIX_FMT_VUYX, ///< packed VUYX 4:4:4:4, 32bpp, Variant of VUYA where alpha channel is left undefined - - AV_PIX_FMT_P012LE, ///< like NV12, with 12bpp per component, data in the high bits, zeros in the low bits, little-endian - AV_PIX_FMT_P012BE, ///< like NV12, with 12bpp per component, data in the high bits, zeros in the low bits, big-endian - - AV_PIX_FMT_Y212BE, ///< packed YUV 4:2:2 like YUYV422, 24bpp, data in the high bits, zeros in the low bits, big-endian - AV_PIX_FMT_Y212LE, ///< packed YUV 4:2:2 like YUYV422, 24bpp, data in the high bits, zeros in the low bits, little-endian - - AV_PIX_FMT_XV30BE, ///< packed XVYU 4:4:4, 32bpp, (msb)2X 10V 10Y 10U(lsb), big-endian, variant of Y410 where alpha channel is left undefined - AV_PIX_FMT_XV30LE, ///< packed XVYU 4:4:4, 32bpp, (msb)2X 10V 10Y 10U(lsb), little-endian, variant of Y410 where alpha channel is left undefined - - AV_PIX_FMT_XV36BE, ///< packed XVYU 4:4:4, 48bpp, data in the high bits, zeros in the low bits, big-endian, variant of Y412 where alpha channel is left undefined - AV_PIX_FMT_XV36LE, ///< packed XVYU 4:4:4, 48bpp, data in the high bits, zeros in the low bits, little-endian, variant of Y412 where alpha channel is left undefined - - AV_PIX_FMT_RGBF32BE, ///< IEEE-754 single precision packed RGB 32:32:32, 96bpp, RGBRGB..., big-endian - AV_PIX_FMT_RGBF32LE, ///< IEEE-754 single precision packed RGB 32:32:32, 96bpp, RGBRGB..., little-endian - - AV_PIX_FMT_RGBAF32BE, ///< IEEE-754 single precision packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., big-endian - AV_PIX_FMT_RGBAF32LE, ///< IEEE-754 single precision packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., little-endian - - AV_PIX_FMT_P212BE, ///< interleaved chroma YUV 4:2:2, 24bpp, data in the high bits, big-endian - AV_PIX_FMT_P212LE, ///< interleaved chroma YUV 4:2:2, 24bpp, data in the high bits, little-endian - - AV_PIX_FMT_P412BE, ///< interleaved chroma YUV 4:4:4, 36bpp, data in the high bits, big-endian - AV_PIX_FMT_P412LE, ///< interleaved chroma YUV 4:4:4, 36bpp, data in the high bits, little-endian - - AV_PIX_FMT_GBRAP14BE, ///< planar GBR 4:4:4:4 56bpp, big-endian - AV_PIX_FMT_GBRAP14LE, ///< planar GBR 4:4:4:4 56bpp, little-endian - - /** - * Hardware surfaces for Direct3D 12. - * - * data[0] points to an AVD3D12VAFrame - */ - AV_PIX_FMT_D3D12, - - AV_PIX_FMT_AYUV, ///< packed AYUV 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), AYUVAYUV... - - AV_PIX_FMT_UYVA, ///< packed UYVA 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), UYVAUYVA... - - AV_PIX_FMT_VYU444, ///< packed VYU 4:4:4, 24bpp (1 Cr & Cb sample per 1x1 Y), VYUVYU... - - AV_PIX_FMT_V30XBE, ///< packed VYUX 4:4:4 like XV30, 32bpp, (msb)10V 10Y 10U 2X(lsb), big-endian - AV_PIX_FMT_V30XLE, ///< packed VYUX 4:4:4 like XV30, 32bpp, (msb)10V 10Y 10U 2X(lsb), little-endian - - AV_PIX_FMT_RGBF16BE, ///< IEEE-754 half precision packed RGB 16:16:16, 48bpp, RGBRGB..., big-endian - AV_PIX_FMT_RGBF16LE, ///< IEEE-754 half precision packed RGB 16:16:16, 48bpp, RGBRGB..., little-endian - - AV_PIX_FMT_RGBA128BE, ///< packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., big-endian - AV_PIX_FMT_RGBA128LE, ///< packed RGBA 32:32:32:32, 128bpp, RGBARGBA..., little-endian - - AV_PIX_FMT_RGB96BE, ///< packed RGBA 32:32:32, 96bpp, RGBRGB..., big-endian - AV_PIX_FMT_RGB96LE, ///< packed RGBA 32:32:32, 96bpp, RGBRGB..., little-endian - - AV_PIX_FMT_Y216BE, ///< packed YUV 4:2:2 like YUYV422, 32bpp, big-endian - AV_PIX_FMT_Y216LE, ///< packed YUV 4:2:2 like YUYV422, 32bpp, little-endian - - AV_PIX_FMT_XV48BE, ///< packed XVYU 4:4:4, 64bpp, big-endian, variant of Y416 where alpha channel is left undefined - AV_PIX_FMT_XV48LE, ///< packed XVYU 4:4:4, 64bpp, little-endian, variant of Y416 where alpha channel is left undefined - - AV_PIX_FMT_GBRPF16BE, ///< IEEE-754 half precision planer GBR 4:4:4, 48bpp, big-endian - AV_PIX_FMT_GBRPF16LE, ///< IEEE-754 half precision planer GBR 4:4:4, 48bpp, little-endian - AV_PIX_FMT_GBRAPF16BE, ///< IEEE-754 half precision planar GBRA 4:4:4:4, 64bpp, big-endian - AV_PIX_FMT_GBRAPF16LE, ///< IEEE-754 half precision planar GBRA 4:4:4:4, 64bpp, little-endian - - AV_PIX_FMT_GRAYF16BE, ///< IEEE-754 half precision Y, 16bpp, big-endian - AV_PIX_FMT_GRAYF16LE, ///< IEEE-754 half precision Y, 16bpp, little-endian - - /** - * HW acceleration through AMF. data[0] contain AMFSurface pointer - */ - AV_PIX_FMT_AMF_SURFACE, - - AV_PIX_FMT_GRAY32BE, ///< Y , 32bpp, big-endian - AV_PIX_FMT_GRAY32LE, ///< Y , 32bpp, little-endian - - AV_PIX_FMT_YAF32BE, ///< IEEE-754 single precision packed YA, 32 bits gray, 32 bits alpha, 64bpp, big-endian - AV_PIX_FMT_YAF32LE, ///< IEEE-754 single precision packed YA, 32 bits gray, 32 bits alpha, 64bpp, little-endian - - AV_PIX_FMT_YAF16BE, ///< IEEE-754 half precision packed YA, 16 bits gray, 16 bits alpha, 32bpp, big-endian - AV_PIX_FMT_YAF16LE, ///< IEEE-754 half precision packed YA, 16 bits gray, 16 bits alpha, 32bpp, little-endian - - AV_PIX_FMT_GBRAP32BE, ///< planar GBRA 4:4:4:4 128bpp, big-endian - AV_PIX_FMT_GBRAP32LE, ///< planar GBRA 4:4:4:4 128bpp, little-endian - - AV_PIX_FMT_YUV444P10MSBBE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian - AV_PIX_FMT_YUV444P10MSBLE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian - AV_PIX_FMT_YUV444P12MSBBE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian - AV_PIX_FMT_YUV444P12MSBLE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian - AV_PIX_FMT_GBRP10MSBBE, ///< planar GBR 4:4:4 30bpp, lowest bits zero, big-endian - AV_PIX_FMT_GBRP10MSBLE, ///< planar GBR 4:4:4 30bpp, lowest bits zero, little-endian - AV_PIX_FMT_GBRP12MSBBE, ///< planar GBR 4:4:4 36bpp, lowest bits zero, big-endian - AV_PIX_FMT_GBRP12MSBLE, ///< planar GBR 4:4:4 36bpp, lowest bits zero, little-endian - - AV_PIX_FMT_OHCODEC, /// hardware decoding through openharmony - - AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions -}; - -#if AV_HAVE_BIGENDIAN -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be -#else -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le -#endif - -#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA) -#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR) -#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA) -#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB) -#define AV_PIX_FMT_0RGB32 AV_PIX_FMT_NE(0RGB, BGR0) -#define AV_PIX_FMT_0BGR32 AV_PIX_FMT_NE(0BGR, RGB0) - -#define AV_PIX_FMT_GRAY9 AV_PIX_FMT_NE(GRAY9BE, GRAY9LE) -#define AV_PIX_FMT_GRAY10 AV_PIX_FMT_NE(GRAY10BE, GRAY10LE) -#define AV_PIX_FMT_GRAY12 AV_PIX_FMT_NE(GRAY12BE, GRAY12LE) -#define AV_PIX_FMT_GRAY14 AV_PIX_FMT_NE(GRAY14BE, GRAY14LE) -#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) -#define AV_PIX_FMT_GRAY32 AV_PIX_FMT_NE(GRAY32BE, GRAY32LE) -#define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE) -#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) -#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) -#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) -#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) -#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) -#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) -#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) -#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) -#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) -#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) - -#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) -#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) -#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE) -#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE) -#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE) -#define AV_PIX_FMT_YUV440P10 AV_PIX_FMT_NE(YUV440P10BE, YUV440P10LE) -#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE) -#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE) -#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE) -#define AV_PIX_FMT_YUV440P12 AV_PIX_FMT_NE(YUV440P12BE, YUV440P12LE) -#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE) -#define AV_PIX_FMT_YUV420P14 AV_PIX_FMT_NE(YUV420P14BE, YUV420P14LE) -#define AV_PIX_FMT_YUV422P14 AV_PIX_FMT_NE(YUV422P14BE, YUV422P14LE) -#define AV_PIX_FMT_YUV444P14 AV_PIX_FMT_NE(YUV444P14BE, YUV444P14LE) -#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE) -#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) -#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) - -#define AV_PIX_FMT_YUV444P10MSB AV_PIX_FMT_NE(YUV444P10MSBBE, YUV444P10MSBLE) -#define AV_PIX_FMT_YUV444P12MSB AV_PIX_FMT_NE(YUV444P12MSBBE, YUV444P12MSBLE) - -#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) -#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) -#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) -#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE) -#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) -#define AV_PIX_FMT_GBRAP10 AV_PIX_FMT_NE(GBRAP10BE, GBRAP10LE) -#define AV_PIX_FMT_GBRAP12 AV_PIX_FMT_NE(GBRAP12BE, GBRAP12LE) -#define AV_PIX_FMT_GBRAP14 AV_PIX_FMT_NE(GBRAP14BE, GBRAP14LE) -#define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE) -#define AV_PIX_FMT_GBRAP32 AV_PIX_FMT_NE(GBRAP32BE, GBRAP32LE) - -#define AV_PIX_FMT_GBRP10MSB AV_PIX_FMT_NE(GBRP10MSBBE, GBRP10MSBLE) -#define AV_PIX_FMT_GBRP12MSB AV_PIX_FMT_NE(GBRP12MSBBE, GBRP12MSBLE) - -#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE) -#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE) -#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) -#define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE) - -#define AV_PIX_FMT_GBRPF16 AV_PIX_FMT_NE(GBRPF16BE, GBRPF16LE) -#define AV_PIX_FMT_GBRAPF16 AV_PIX_FMT_NE(GBRAPF16BE, GBRAPF16LE) -#define AV_PIX_FMT_GBRPF32 AV_PIX_FMT_NE(GBRPF32BE, GBRPF32LE) -#define AV_PIX_FMT_GBRAPF32 AV_PIX_FMT_NE(GBRAPF32BE, GBRAPF32LE) - -#define AV_PIX_FMT_GRAYF16 AV_PIX_FMT_NE(GRAYF16BE, GRAYF16LE) -#define AV_PIX_FMT_GRAYF32 AV_PIX_FMT_NE(GRAYF32BE, GRAYF32LE) - -#define AV_PIX_FMT_YAF16 AV_PIX_FMT_NE(YAF16BE, YAF16LE) -#define AV_PIX_FMT_YAF32 AV_PIX_FMT_NE(YAF32BE, YAF32LE) - -#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) -#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) -#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) -#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE) -#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE) -#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE) -#define AV_PIX_FMT_YUVA422P12 AV_PIX_FMT_NE(YUVA422P12BE, YUVA422P12LE) -#define AV_PIX_FMT_YUVA444P12 AV_PIX_FMT_NE(YUVA444P12BE, YUVA444P12LE) -#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE) -#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE) -#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE) - -#define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) -#define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) -#define AV_PIX_FMT_AYUV64 AV_PIX_FMT_NE(AYUV64BE, AYUV64LE) -#define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE) -#define AV_PIX_FMT_P012 AV_PIX_FMT_NE(P012BE, P012LE) -#define AV_PIX_FMT_P016 AV_PIX_FMT_NE(P016BE, P016LE) - -#define AV_PIX_FMT_Y210 AV_PIX_FMT_NE(Y210BE, Y210LE) -#define AV_PIX_FMT_Y212 AV_PIX_FMT_NE(Y212BE, Y212LE) -#define AV_PIX_FMT_Y216 AV_PIX_FMT_NE(Y216BE, Y216LE) -#define AV_PIX_FMT_XV30 AV_PIX_FMT_NE(XV30BE, XV30LE) -#define AV_PIX_FMT_XV36 AV_PIX_FMT_NE(XV36BE, XV36LE) -#define AV_PIX_FMT_XV48 AV_PIX_FMT_NE(XV48BE, XV48LE) -#define AV_PIX_FMT_V30X AV_PIX_FMT_NE(V30XBE, V30XLE) -#define AV_PIX_FMT_X2RGB10 AV_PIX_FMT_NE(X2RGB10BE, X2RGB10LE) -#define AV_PIX_FMT_X2BGR10 AV_PIX_FMT_NE(X2BGR10BE, X2BGR10LE) - -#define AV_PIX_FMT_P210 AV_PIX_FMT_NE(P210BE, P210LE) -#define AV_PIX_FMT_P410 AV_PIX_FMT_NE(P410BE, P410LE) -#define AV_PIX_FMT_P212 AV_PIX_FMT_NE(P212BE, P212LE) -#define AV_PIX_FMT_P412 AV_PIX_FMT_NE(P412BE, P412LE) -#define AV_PIX_FMT_P216 AV_PIX_FMT_NE(P216BE, P216LE) -#define AV_PIX_FMT_P416 AV_PIX_FMT_NE(P416BE, P416LE) - -#define AV_PIX_FMT_RGBF16 AV_PIX_FMT_NE(RGBF16BE, RGBF16LE) -#define AV_PIX_FMT_RGBAF16 AV_PIX_FMT_NE(RGBAF16BE, RGBAF16LE) - -#define AV_PIX_FMT_RGBF32 AV_PIX_FMT_NE(RGBF32BE, RGBF32LE) -#define AV_PIX_FMT_RGBAF32 AV_PIX_FMT_NE(RGBAF32BE, RGBAF32LE) - -#define AV_PIX_FMT_RGB96 AV_PIX_FMT_NE(RGB96BE, RGB96LE) -#define AV_PIX_FMT_RGBA128 AV_PIX_FMT_NE(RGBA128BE, RGBA128LE) - -/** - * Chromaticity coordinates of the source primaries. - * These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.1 and ITU-T H.273. - */ -enum AVColorPrimaries { - AVCOL_PRI_RESERVED0 = 0, - AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP 177 Annex B - AVCOL_PRI_UNSPECIFIED = 2, - AVCOL_PRI_RESERVED = 3, - AVCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - - AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM - AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - AVCOL_PRI_SMPTE240M = 7, ///< identical to above, also called "SMPTE C" even though it uses D65 - AVCOL_PRI_FILM = 8, ///< colour filters using Illuminant C - AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020 - AVCOL_PRI_SMPTE428 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ) - AVCOL_PRI_SMPTEST428_1 = AVCOL_PRI_SMPTE428, - AVCOL_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) / DCI P3 - AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3 - AVCOL_PRI_EBU3213 = 22, ///< EBU Tech. 3213-E (nothing there) / one of JEDEC P22 group phosphors - AVCOL_PRI_JEDEC_P22 = AVCOL_PRI_EBU3213, - AVCOL_PRI_NB, ///< Not part of ABI - - /* The following entries are not part of H.273, but custom extensions */ - AVCOL_PRI_EXT_BASE = 256, - AVCOL_PRI_V_GAMUT = AVCOL_PRI_EXT_BASE, - AVCOL_PRI_EXT_NB ///< Not part of ABI -}; - -/** - * Color Transfer Characteristic. - * These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.2. - */ -enum AVColorTransferCharacteristic { - AVCOL_TRC_RESERVED0 = 0, - AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 - AVCOL_TRC_UNSPECIFIED = 2, - AVCOL_TRC_RESERVED = 3, - AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM - AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG - AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC - AVCOL_TRC_SMPTE240M = 7, - AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics" - AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" - AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" - AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 - AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut - AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) - AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10-bit system - AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12-bit system - AVCOL_TRC_SMPTE2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems - AVCOL_TRC_SMPTEST2084 = AVCOL_TRC_SMPTE2084, - AVCOL_TRC_SMPTE428 = 17, ///< SMPTE ST 428-1 - AVCOL_TRC_SMPTEST428_1 = AVCOL_TRC_SMPTE428, - AVCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma" - AVCOL_TRC_NB, ///< Not part of ABI - - /* The following entries are not part of H.273, but custom extensions */ - AVCOL_TRC_EXT_BASE = 256, - AVCOL_TRC_V_LOG = AVCOL_TRC_EXT_BASE, - AVCOL_TRC_EXT_NB ///< Not part of ABI -}; - -/** - * YUV colorspace type. - * These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.3. - */ -enum AVColorSpace { - AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB), YZX and ST 428-1 - AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / derived in SMPTE RP 177 Annex B - AVCOL_SPC_UNSPECIFIED = 2, - AVCOL_SPC_RESERVED = 3, ///< reserved for future use by ITU-T and ISO/IEC just like 15-255 are - AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 - AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above - AVCOL_SPC_SMPTE240M = 7, ///< derived from 170M primaries and D65 white point, 170M is derived from BT470 System M's primaries - AVCOL_SPC_YCGCO = 8, ///< used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 - AVCOL_SPC_YCOCG = AVCOL_SPC_YCGCO, - AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system - AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system - AVCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x - AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system - AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system - AVCOL_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp - AVCOL_SPC_IPT_C2 = 15, ///< SMPTE ST 2128, IPT-C2 - AVCOL_SPC_YCGCO_RE = 16, ///< YCgCo-R, even addition of bits - AVCOL_SPC_YCGCO_RO = 17, ///< YCgCo-R, odd addition of bits - AVCOL_SPC_NB ///< Not part of ABI -}; - -/** - * Visual content value range. - * - * These values are based on definitions that can be found in multiple - * specifications, such as ITU-T BT.709 (3.4 - Quantization of RGB, luminance - * and colour-difference signals), ITU-T BT.2020 (Table 5 - Digital - * Representation) as well as ITU-T BT.2100 (Table 9 - Digital 10- and 12-bit - * integer representation). At the time of writing, the BT.2100 one is - * recommended, as it also defines the full range representation. - * - * Common definitions: - * - For RGB and luma planes such as Y in YCbCr and I in ICtCp, - * 'E' is the original value in range of 0.0 to 1.0. - * - For chroma planes such as Cb,Cr and Ct,Cp, 'E' is the original - * value in range of -0.5 to 0.5. - * - 'n' is the output bit depth. - * - For additional definitions such as rounding and clipping to valid n - * bit unsigned integer range, please refer to BT.2100 (Table 9). - */ -enum AVColorRange { - AVCOL_RANGE_UNSPECIFIED = 0, - - /** - * Narrow or limited range content. - * - * - For luma planes: - * - * (219 * E + 16) * 2^(n-8) - * - * F.ex. the range of 16-235 for 8 bits - * - * - For chroma planes: - * - * (224 * E + 128) * 2^(n-8) - * - * F.ex. the range of 16-240 for 8 bits - */ - AVCOL_RANGE_MPEG = 1, - - /** - * Full range content. - * - * - For RGB and luma planes: - * - * (2^n - 1) * E - * - * F.ex. the range of 0-255 for 8 bits - * - * - For chroma planes: - * - * (2^n - 1) * E + 2^(n - 1) - * - * F.ex. the range of 1-255 for 8 bits - */ - AVCOL_RANGE_JPEG = 2, - AVCOL_RANGE_NB ///< Not part of ABI -}; - -/** - * Location of chroma samples. - * - * Illustration showing the location of the first (top left) chroma sample of the - * image, the left shows only luma, the right - * shows the location of the chroma sample, the 2 could be imagined to overlay - * each other but are drawn separately due to limitations of ASCII - * - * 1st 2nd 1st 2nd horizontal luma sample positions - * v v v v - * ______ ______ - *1st luma line > |X X ... |3 4 X ... X are luma samples, - * | |1 2 1-6 are possible chroma positions - *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position - */ -enum AVChromaLocation { - AVCHROMA_LOC_UNSPECIFIED = 0, - AVCHROMA_LOC_LEFT = 1, ///< MPEG-2/4 4:2:0, H.264 default for 4:2:0 - AVCHROMA_LOC_CENTER = 2, ///< MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0 - AVCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2 - AVCHROMA_LOC_TOP = 4, - AVCHROMA_LOC_BOTTOMLEFT = 5, - AVCHROMA_LOC_BOTTOM = 6, - AVCHROMA_LOC_NB ///< Not part of ABI -}; - -/** - * Correlation between the alpha channel and color values. - */ -enum AVAlphaMode { - AVALPHA_MODE_UNSPECIFIED = 0, ///< Unknown alpha handling, or no alpha channel - AVALPHA_MODE_PREMULTIPLIED = 1, ///< Alpha channel is multiplied into color values - AVALPHA_MODE_STRAIGHT = 2, ///< Alpha channel is independent of color values - AVALPHA_MODE_NB ///< Not part of ABI -}; - -#endif /* AVUTIL_PIXFMT_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/rational.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/rational.h deleted file mode 100644 index 30ac2aced7..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/rational.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - * rational numbers - * Copyright (c) 2003 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_math_rational - * Utilities for rational number calculation. - * @author Michael Niedermayer - */ - -#ifndef AVUTIL_RATIONAL_H -#define AVUTIL_RATIONAL_H - -#include -#include -#include "attributes.h" - -/** - * @defgroup lavu_math_rational AVRational - * @ingroup lavu_math - * Rational number calculation. - * - * While rational numbers can be expressed as floating-point numbers, the - * conversion process is a lossy one, so are floating-point operations. On the - * other hand, the nature of FFmpeg demands highly accurate calculation of - * timestamps. This set of rational number utilities serves as a generic - * interface for manipulating rational numbers as pairs of numerators and - * denominators. - * - * Many of the functions that operate on AVRational's have the suffix `_q`, in - * reference to the mathematical symbol "ℚ" (Q) which denotes the set of all - * rational numbers. - * - * @{ - */ - -/** - * Rational number (pair of numerator and denominator). - */ -typedef struct AVRational{ - int num; ///< Numerator - int den; ///< Denominator -} AVRational; - -/** - * Create an AVRational. - * - * Useful for compilers that do not support compound literals. - * - * @note The return value is not reduced. - * @see av_reduce() - */ -static inline AVRational av_make_q(int num, int den) -{ - AVRational r = { num, den }; - return r; -} - -/** - * Compare two rationals. - * - * @param a First rational - * @param b Second rational - * - * @return One of the following values: - * - 0 if `a == b` - * - 1 if `a > b` - * - -1 if `a < b` - * - `INT_MIN` if one of the values is of the form `0 / 0` - */ -static inline int av_cmp_q(AVRational a, AVRational b){ - const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den; - - if(tmp) return (int)((tmp ^ a.den ^ b.den)>>63)|1; - else if(b.den && a.den) return 0; - else if(a.num && b.num) return (a.num>>31) - (b.num>>31); - else return INT_MIN; -} - -/** - * Convert an AVRational to a `double`. - * @param a AVRational to convert - * @return `a` in floating-point form - * @see av_d2q() - */ -static inline double av_q2d(AVRational a){ - return a.num / (double) a.den; -} - -/** - * Reduce a fraction. - * - * This is useful for framerate calculations. - * - * @param[out] dst_num Destination numerator - * @param[out] dst_den Destination denominator - * @param[in] num Source numerator - * @param[in] den Source denominator - * @param[in] max Maximum allowed values for `dst_num` & `dst_den` - * @return 1 if the operation is exact, 0 otherwise - */ -int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); - -/** - * Multiply two rationals. - * @param b First rational - * @param c Second rational - * @return b*c - */ -AVRational av_mul_q(AVRational b, AVRational c) av_const; - -/** - * Divide one rational by another. - * @param b First rational - * @param c Second rational - * @return b/c - */ -AVRational av_div_q(AVRational b, AVRational c) av_const; - -/** - * Add two rationals. - * @param b First rational - * @param c Second rational - * @return b+c - */ -AVRational av_add_q(AVRational b, AVRational c) av_const; - -/** - * Subtract one rational from another. - * @param b First rational - * @param c Second rational - * @return b-c - */ -AVRational av_sub_q(AVRational b, AVRational c) av_const; - -/** - * Invert a rational. - * @param q value - * @return 1 / q - */ -static av_always_inline AVRational av_inv_q(AVRational q) -{ - AVRational r = { q.den, q.num }; - return r; -} - -/** - * Convert a double precision floating point number to a rational. - * - * In case of infinity, the returned value is expressed as `{1, 0}` or - * `{-1, 0}` depending on the sign. - * - * In general rational numbers with |num| <= 1<<26 && |den| <= 1<<26 - * can be recovered exactly from their double representation. - * (no exceptions were found within 1B random ones) - * - * @param d `double` to convert - * @param max Maximum allowed numerator and denominator - * @return `d` in AVRational form - * @see av_q2d() - */ -AVRational av_d2q(double d, int max) av_const; - -/** - * Find which of the two rationals is closer to another rational. - * - * @param q Rational to be compared against - * @param q1 Rational to be tested - * @param q2 Rational to be tested - * @return One of the following values: - * - 1 if `q1` is nearer to `q` than `q2` - * - -1 if `q2` is nearer to `q` than `q1` - * - 0 if they have the same distance - */ -int av_nearer_q(AVRational q, AVRational q1, AVRational q2); - -/** - * Find the value in a list of rationals nearest a given reference rational. - * - * @param q Reference rational - * @param q_list Array of rationals terminated by `{0, 0}` - * @return Index of the nearest value found in the array - */ -int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); - -/** - * Convert an AVRational to a IEEE 32-bit `float` expressed in fixed-point - * format. - * - * @param q Rational to be converted - * @return Equivalent floating-point value, expressed as an unsigned 32-bit - * integer. - * @note The returned value is platform-indepedant. - */ -uint32_t av_q2intfloat(AVRational q); - -/** - * Return the best rational so that a and b are multiple of it. - * If the resulting denominator is larger than max_den, return def. - */ -AVRational av_gcd_q(AVRational a, AVRational b, int max_den, AVRational def); - -/** - * @} - */ - -#endif /* AVUTIL_RATIONAL_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/samplefmt.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/samplefmt.h deleted file mode 100644 index 6e55d71140..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/samplefmt.h +++ /dev/null @@ -1,268 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_SAMPLEFMT_H -#define AVUTIL_SAMPLEFMT_H - -#include - -/** - * @addtogroup lavu_audio - * @{ - * - * @defgroup lavu_sampfmts Audio sample formats - * - * Audio sample format enumeration and related convenience functions. - * @{ - */ - -/** - * Audio sample formats - * - * - The data described by the sample format is always in native-endian order. - * Sample values can be expressed by native C types, hence the lack of a signed - * 24-bit sample format even though it is a common raw audio data format. - * - * - The floating-point formats are based on full volume being in the range - * [-1.0, 1.0]. Any values outside this range are beyond full volume level. - * - * - The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg - * (such as AVFrame in libavcodec) is as follows: - * - * @par - * For planar sample formats, each audio channel is in a separate data plane, - * and linesize is the buffer size, in bytes, for a single plane. All data - * planes must be the same size. For packed sample formats, only the first data - * plane is used, and samples for each channel are interleaved. In this case, - * linesize is the buffer size, in bytes, for the 1 plane. - * - */ -enum AVSampleFormat { - AV_SAMPLE_FMT_NONE = -1, - AV_SAMPLE_FMT_U8, ///< unsigned 8 bits - AV_SAMPLE_FMT_S16, ///< signed 16 bits - AV_SAMPLE_FMT_S32, ///< signed 32 bits - AV_SAMPLE_FMT_FLT, ///< float - AV_SAMPLE_FMT_DBL, ///< double - - AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar - AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar - AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar - AV_SAMPLE_FMT_FLTP, ///< float, planar - AV_SAMPLE_FMT_DBLP, ///< double, planar - AV_SAMPLE_FMT_S64, ///< signed 64 bits - AV_SAMPLE_FMT_S64P, ///< signed 64 bits, planar - - AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically -}; - -/** - * Return the name of sample_fmt, or NULL if sample_fmt is not - * recognized. - */ -const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt); - -/** - * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE - * on error. - */ -enum AVSampleFormat av_get_sample_fmt(const char *name); - -/** - * Return the planar<->packed alternative form of the given sample format, or - * AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the - * requested planar/packed format, the format returned is the same as the - * input. - */ -enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar); - -/** - * Get the packed alternative form of the given sample format. - * - * If the passed sample_fmt is already in packed format, the format returned is - * the same as the input. - * - * @return the packed alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Get the planar alternative form of the given sample format. - * - * If the passed sample_fmt is already in planar format, the format returned is - * the same as the input. - * - * @return the planar alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Generate a string corresponding to the sample format with - * sample_fmt, or a header if sample_fmt is negative. - * - * @param buf the buffer where to write the string - * @param buf_size the size of buf - * @param sample_fmt the number of the sample format to print the - * corresponding info string, or a negative value to print the - * corresponding header. - * @return the pointer to the filled buffer or NULL in case of other errors - */ -char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); - -/** - * Return number of bytes per sample. - * - * @param sample_fmt the sample format - * @return number of bytes per sample or zero if unknown for the given - * sample format - */ -int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); - -/** - * Check if the sample format is planar. - * - * @param sample_fmt the sample format to inspect - * @return 1 if the sample format is planar, 0 if it is interleaved - */ -int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt); - -/** - * Get the required buffer size for the given audio parameters. - * - * @param[out] linesize calculated linesize, may be NULL - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return required buffer size, or negative error code on failure - */ -int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * @} - * - * @defgroup lavu_sampmanip Samples manipulation - * - * Functions that manipulate audio samples - * @{ - */ - -/** - * Fill plane data pointers and linesize for samples with sample - * format sample_fmt. - * - * The audio_data array is filled with the pointers to the samples data planes: - * for planar, set the start point of each channel's data within the buffer, - * for packed, set the start point of the entire buffer only. - * - * The value pointed to by linesize is set to the aligned size of each - * channel's data buffer for planar layout, or to the aligned size of the - * buffer for all channels for packed layout. - * - * The buffer in buf must be big enough to contain all the samples - * (use av_samples_get_buffer_size() to compute its minimum size), - * otherwise the audio_data pointers will point to invalid data. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize calculated linesize, may be NULL - * @param buf the pointer to a buffer containing the samples - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return minimum size in bytes required for the buffer on success, - * or a negative error code on failure - */ -int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, - const uint8_t *buf, - int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * Allocate a samples buffer for nb_samples samples, and fill data pointers and - * linesize accordingly. - * The allocated samples buffer can be freed by using av_freep(&audio_data[0]) - * Allocated data will be initialized to silence. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize aligned size for audio buffer(s), may be NULL - * @param nb_channels number of audio channels - * @param nb_samples number of samples per channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return >=0 on success or a negative error code on failure - * @todo return the size of the allocated buffer in case of success at the next bump - * @see av_samples_fill_arrays() - * @see av_samples_alloc_array_and_samples() - */ -int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, - int nb_samples, enum AVSampleFormat sample_fmt, int align); - -/** - * Allocate a data pointers array, samples buffer for nb_samples - * samples, and fill data pointers and linesize accordingly. - * - * This is the same as av_samples_alloc(), but also allocates the data - * pointers array. - * - * @see av_samples_alloc() - */ -int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels, - int nb_samples, enum AVSampleFormat sample_fmt, int align); - -/** - * Copy samples from src to dst. - * - * @param dst destination array of pointers to data planes - * @param src source array of pointers to data planes - * @param dst_offset offset in samples at which the data will be written to dst - * @param src_offset offset in samples at which the data will be read from src - * @param nb_samples number of samples to be copied - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_copy(uint8_t * const *dst, uint8_t * const *src, int dst_offset, - int src_offset, int nb_samples, int nb_channels, - enum AVSampleFormat sample_fmt); - -/** - * Fill an audio buffer with silence. - * - * @param audio_data array of pointers to data planes - * @param offset offset in samples at which to start filling - * @param nb_samples number of samples to fill - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_set_silence(uint8_t * const *audio_data, int offset, int nb_samples, - int nb_channels, enum AVSampleFormat sample_fmt); - -/** - * @} - * @} - */ -#endif /* AVUTIL_SAMPLEFMT_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/version.h b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/version.h deleted file mode 100644 index 40a7d8e300..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/include/libavutil/version.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * copyright (c) 2003 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu - * Libavutil version macros - */ - -#ifndef AVUTIL_VERSION_H -#define AVUTIL_VERSION_H - -#include "macros.h" - -/** - * @addtogroup version_utils - * - * Useful to check and match library version in order to maintain - * backward compatibility. - * - * The FFmpeg libraries follow a versioning scheme very similar to - * Semantic Versioning (http://semver.org/) - * The difference is that the component called PATCH is called MICRO in FFmpeg - * and its value is reset to 100 instead of 0 to keep it above or equal to 100. - * Also we do not increase MICRO for every bugfix or change in git master. - * - * Prior to FFmpeg 3.2 point releases did not change any lib version number to - * avoid aliassing different git master checkouts. - * Starting with FFmpeg 3.2, the released library versions will occupy - * a separate MAJOR.MINOR that is not used on the master development branch. - * That is if we branch a release of master 55.10.123 we will bump to 55.11.100 - * for the release and master will continue at 55.12.100 after it. Each new - * point release will then bump the MICRO improving the usefulness of the lib - * versions. - * - * @{ - */ - -#define AV_VERSION_INT(a, b, c) ((a)<<16 | (b)<<8 | (c)) -#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c -#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) - -/** - * Extract version components from the full ::AV_VERSION_INT int as returned - * by functions like ::avformat_version() and ::avcodec_version() - */ -#define AV_VERSION_MAJOR(a) ((a) >> 16) -#define AV_VERSION_MINOR(a) (((a) & 0x00FF00) >> 8) -#define AV_VERSION_MICRO(a) ((a) & 0xFF) - -/** - * @} - */ - -/** - * @defgroup lavu_ver Version and Build diagnostics - * - * Macros and function useful to check at compile time and at runtime - * which version of libavutil is in use. - * - * @{ - */ - -#define LIBAVUTIL_VERSION_MAJOR 60 -#define LIBAVUTIL_VERSION_MINOR 30 -#define LIBAVUTIL_VERSION_MICRO 100 - -#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT - -#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) - -/** - * @defgroup lavu_depr_guards Deprecation Guards - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - * - * @{ - */ - -#define FF_API_MOD_UINTP2 (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_RISCV_FD_ZBA (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_VULKAN_FIXED_QUEUES (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_OPT_INT_LIST (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_OPT_PTR (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_CPU_FLAG_FORCE (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_DOVI_L11_INVALID_PROPS (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_ASSERT_FPU (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_VULKAN_SYNC_QUEUES (LIBAVUTIL_VERSION_MAJOR < 62) - -/** - * @} - * @} - */ - -#endif /* AVUTIL_VERSION_H */ diff --git a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/moz.build b/icecat/dom/media/platforms/ffmpeg/ffmpeg62/moz.build deleted file mode 100644 index df3179bb4c..0000000000 --- a/icecat/dom/media/platforms/ffmpeg/ffmpeg62/moz.build +++ /dev/null @@ -1,53 +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/. - -UNIFIED_SOURCES += [ - "../FFmpegAudioDecoder.cpp", - "../FFmpegAudioEncoder.cpp", - "../FFmpegDataDecoder.cpp", - "../FFmpegDataEncoder.cpp", - "../FFmpegDecoderModule.cpp", - "../FFmpegEncoderModule.cpp", - "../FFmpegVideoDecoder.cpp", - "../FFmpegVideoEncoder.cpp", -] -LOCAL_INCLUDES += [ - "..", - "/media/mozva", - "include", -] - -if CONFIG["CC_TYPE"] in ("clang", "gcc"): - CXXFLAGS += ["-Wno-deprecated-declarations"] -if CONFIG["CC_TYPE"] == "clang": - CXXFLAGS += [ - "-Wno-unknown-attributes", - ] -if CONFIG["CC_TYPE"] == "gcc": - CXXFLAGS += [ - "-Wno-attributes", - ] -if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": - CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"] -if CONFIG["MOZ_ENABLE_VAAPI"] or CONFIG["MOZ_ENABLE_V4L2"]: - UNIFIED_SOURCES += ["../FFmpegVideoFramePool.cpp"] - CXXFLAGS += CONFIG['MOZ_DRM_CFLAGS'] - if not CONFIG['MOZ_SYSTEM_LIBDRM']: - LOCAL_INCLUDES += [ - '/third_party/drm/drm/include', - '/third_party/drm/drm/include/libdrm' - ] - USE_LIBS += ["mozva"] - DEFINES["MOZ_USE_HWDECODE"] = 1 - -if CONFIG["MOZ_SYSTEM_AV1"]: - CXXFLAGS += CONFIG["MOZ_SYSTEM_LIBAOM_CFLAGS"] - -include("/ipc/chromium/chromium-config.mozbuild") - -LOCAL_INCLUDES += [ - "/media/libyuv/libyuv/include", -] - -FINAL_LIBRARY = "xul" diff --git a/icecat/dom/media/platforms/ffmpeg/ffvpx/moz.build b/icecat/dom/media/platforms/ffmpeg/ffvpx/moz.build index 73d806b934..9043d3a2fb 100644 --- a/icecat/dom/media/platforms/ffmpeg/ffvpx/moz.build +++ b/icecat/dom/media/platforms/ffmpeg/ffvpx/moz.build @@ -25,7 +25,7 @@ SOURCES += [ ] LOCAL_INCLUDES += [ "..", - "/media/ffvpx", + "../ffmpeg61/include", "/media/mozva", ] diff --git a/icecat/dom/media/platforms/ffmpeg/moz.build b/icecat/dom/media/platforms/ffmpeg/moz.build index 6dcf80e892..a5a5bee637 100644 --- a/icecat/dom/media/platforms/ffmpeg/moz.build +++ b/icecat/dom/media/platforms/ffmpeg/moz.build @@ -17,7 +17,6 @@ DIRS += [ "ffmpeg59", "ffmpeg60", "ffmpeg61", - "ffmpeg62", ] UNIFIED_SOURCES += ["FFmpegRuntimeLinker.cpp"] diff --git a/icecat/dom/media/platforms/wrappers/MediaChangeMonitor.cpp b/icecat/dom/media/platforms/wrappers/MediaChangeMonitor.cpp index 02a0dedcd7..b5c4d42c8a 100644 --- a/icecat/dom/media/platforms/wrappers/MediaChangeMonitor.cpp +++ b/icecat/dom/media/platforms/wrappers/MediaChangeMonitor.cpp @@ -1200,7 +1200,7 @@ MediaResult MediaChangeMonitor::CreateDecoderAndInit(MediaRawData* aSample) { return; } - mDecodePromise.RejectIfExists( + mDecodePromise.Reject( MediaResult( aError.Code(), RESULT_DETAIL("Unable to initialize decoder")), @@ -1215,7 +1215,7 @@ MediaResult MediaChangeMonitor::CreateDecoderAndInit(MediaRawData* aSample) { mFlushPromise.Reject(aError, __func__); return; } - mDecodePromise.RejectIfExists( + mDecodePromise.Reject( MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, RESULT_DETAIL("Unable to create decoder")), __func__); @@ -1259,12 +1259,12 @@ void MediaChangeMonitor::DecodeFirstSample(MediaRawData* aSample) { [self, this](MediaDataDecoder::DecodedData&& aResults) { mDecodePromiseRequest.Complete(); mPendingFrames.AppendElements(std::move(aResults)); - mDecodePromise.ResolveIfExists(std::move(mPendingFrames), __func__); + mDecodePromise.Resolve(std::move(mPendingFrames), __func__); mPendingFrames = DecodedData(); }, [self, this](const MediaResult& aError) { mDecodePromiseRequest.Complete(); - mDecodePromise.RejectIfExists(aError, __func__); + mDecodePromise.Reject(aError, __func__); }) ->Track(mDecodePromiseRequest); } @@ -1323,7 +1323,7 @@ void MediaChangeMonitor::DrainThenFlushDecoder(MediaRawData* aPendingSample) { mFlushPromise.Reject(aError, __func__); return; } - mDecodePromise.RejectIfExists(aError, __func__); + mDecodePromise.Reject(aError, __func__); }) ->Track(mDrainRequest); } @@ -1367,7 +1367,7 @@ void MediaChangeMonitor::FlushThenShutdownDecoder( return; } MOZ_ASSERT(NS_FAILED(rv)); - mDecodePromise.RejectIfExists(rv, __func__); + mDecodePromise.Reject(rv, __func__); return; }, [] { MOZ_CRASH("Can't reach here'"); }) @@ -1380,7 +1380,7 @@ void MediaChangeMonitor::FlushThenShutdownDecoder( mFlushPromise.Reject(aError, __func__); return; } - mDecodePromise.RejectIfExists(aError, __func__); + mDecodePromise.Reject(aError, __func__); }) ->Track(mFlushRequest); } diff --git a/icecat/dom/media/systemservices/MediaSystemResourceManager.cpp b/icecat/dom/media/systemservices/MediaSystemResourceManager.cpp index 692edaa858..414ef8e81d 100644 --- a/icecat/dom/media/systemservices/MediaSystemResourceManager.cpp +++ b/icecat/dom/media/systemservices/MediaSystemResourceManager.cpp @@ -81,36 +81,44 @@ void MediaSystemResourceManager::Init() { } } -MediaSystemResourceManager::MediaSystemResourceManager() { +MediaSystemResourceManager::MediaSystemResourceManager() + : mReentrantMonitor("MediaSystemResourceManager.mReentrantMonitor"), + mShutDown(false), + mChild(nullptr) { MOZ_ASSERT(InImageBridgeChildThread()); - if (auto imageBridge = ImageBridgeChild::GetSingleton()) { - if (auto* child = - imageBridge->SendPMediaSystemResourceManagerConstructor()) { - mChild = static_cast(child); - mChild->SetManager(this); - } - } + OpenIPC(); } MediaSystemResourceManager::~MediaSystemResourceManager() { + MOZ_ASSERT(IsIpcClosed()); +} + +void MediaSystemResourceManager::OpenIPC() { + MOZ_ASSERT(InImageBridgeChildThread()); MOZ_ASSERT(!mChild); + + media::PMediaSystemResourceManagerChild* child = + ImageBridgeChild::GetSingleton() + ->SendPMediaSystemResourceManagerConstructor(); + mChild = static_cast(child); + mChild->SetManager(this); } void MediaSystemResourceManager::CloseIPC() { MOZ_ASSERT(InImageBridgeChildThread()); - if (mChild) { - mChild->Destroy(); - mChild = nullptr; + if (!mChild) { + return; } -} - -void MediaSystemResourceManager::OnIpcClosed() { - MOZ_ASSERT(InImageBridgeChildThread()); - + mChild->Destroy(); mChild = nullptr; + mShutDown = true; } +void MediaSystemResourceManager::OnIpcClosed() { mChild = nullptr; } + +bool MediaSystemResourceManager::IsIpcClosed() { return mChild ? true : false; } + void MediaSystemResourceManager::Register(MediaSystemResourceClient* aClient) { ReentrantMonitorAutoEnter mon(mReentrantMonitor); MOZ_ASSERT(aClient); @@ -237,7 +245,7 @@ bool MediaSystemResourceManager::AcquireSyncNoWait( void MediaSystemResourceManager::DoAcquire(uint32_t aId) { MOZ_ASSERT(InImageBridgeChildThread()); - if (!mChild) { + if (mShutDown || !mChild) { HandleAcquireResult(aId, false); return; } @@ -286,9 +294,10 @@ void MediaSystemResourceManager::ReleaseResource( void MediaSystemResourceManager::DoRelease(uint32_t aId) { MOZ_ASSERT(InImageBridgeChildThread()); - if (mChild) { - mChild->SendRelease(aId); + if (mShutDown || !mChild) { + return; } + mChild->SendRelease(aId); } void MediaSystemResourceManager::RecvResponse(uint32_t aId, bool aSuccess) { diff --git a/icecat/dom/media/systemservices/MediaSystemResourceManager.h b/icecat/dom/media/systemservices/MediaSystemResourceManager.h index 195bce2fcc..293595ece0 100644 --- a/icecat/dom/media/systemservices/MediaSystemResourceManager.h +++ b/icecat/dom/media/systemservices/MediaSystemResourceManager.h @@ -55,7 +55,9 @@ class MediaSystemResourceManager { MediaSystemResourceManager(); virtual ~MediaSystemResourceManager(); + void OpenIPC(); void CloseIPC(); + bool IsIpcClosed(); void DoAcquire(uint32_t aId); @@ -63,13 +65,13 @@ class MediaSystemResourceManager { void HandleAcquireResult(uint32_t aId, bool aSuccess); - ReentrantMonitor mReentrantMonitor{ - "MediaSystemResourceManager.mReentrantMonitor"}; + ReentrantMonitor mReentrantMonitor MOZ_UNANNOTATED; - media::MediaSystemResourceManagerChild* mChild = nullptr; + bool mShutDown; - nsTHashMap mResourceClients - MOZ_GUARDED_BY(mReentrantMonitor); + media::MediaSystemResourceManagerChild* mChild; + + nsTHashMap mResourceClients; static StaticRefPtr sSingleton; }; diff --git a/icecat/dom/media/systemservices/MediaSystemResourceManagerChild.cpp b/icecat/dom/media/systemservices/MediaSystemResourceManagerChild.cpp index a9e11885a1..ff671fdf8d 100644 --- a/icecat/dom/media/systemservices/MediaSystemResourceManagerChild.cpp +++ b/icecat/dom/media/systemservices/MediaSystemResourceManagerChild.cpp @@ -27,7 +27,6 @@ void MediaSystemResourceManagerChild::ActorDestroy( MOZ_ASSERT(!mDestroyed); if (mManager) { mManager->OnIpcClosed(); - mManager = nullptr; } mDestroyed = true; } @@ -36,7 +35,7 @@ void MediaSystemResourceManagerChild::Destroy() { if (mDestroyed) { return; } - Send__delete__(this); + SendRemoveResourceManager(); // WARNING: |this| is dead, hands off } diff --git a/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.cpp b/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.cpp index 26a1474590..ec20079abc 100644 --- a/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.cpp +++ b/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.cpp @@ -52,6 +52,15 @@ mozilla::ipc::IPCResult MediaSystemResourceManagerParent::RecvRelease( return IPC_OK(); } +mozilla::ipc::IPCResult +MediaSystemResourceManagerParent::RecvRemoveResourceManager() { + IProtocol* mgr = Manager(); + if (!PMediaSystemResourceManagerParent::Send__delete__(this)) { + return IPC_FAIL_NO_REASON(mgr); + } + return IPC_OK(); +} + void MediaSystemResourceManagerParent::ActorDestroy( ActorDestroyReason aReason) { MOZ_ASSERT(!mDestroyed); diff --git a/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.h b/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.h index 75d7417d13..29ed219f2e 100644 --- a/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.h +++ b/icecat/dom/media/systemservices/MediaSystemResourceManagerParent.h @@ -31,6 +31,8 @@ class MediaSystemResourceManagerParent final mozilla::ipc::IPCResult RecvRelease(const uint32_t& aId); + mozilla::ipc::IPCResult RecvRemoveResourceManager(); + private: void ActorDestroy(ActorDestroyReason aActorDestroyReason) override; diff --git a/icecat/dom/media/systemservices/MediaSystemResourceService.cpp b/icecat/dom/media/systemservices/MediaSystemResourceService.cpp index bf3be63c71..88c4566e76 100644 --- a/icecat/dom/media/systemservices/MediaSystemResourceService.cpp +++ b/icecat/dom/media/systemservices/MediaSystemResourceService.cpp @@ -18,11 +18,12 @@ namespace mozilla { StaticRefPtr MediaSystemResourceService::sSingleton; /* static */ -already_AddRefed MediaSystemResourceService::Get() { - if (!sSingleton) { - Init(); +MediaSystemResourceService* MediaSystemResourceService::Get() { + if (sSingleton) { + return sSingleton; } - return do_AddRef(sSingleton); + Init(); + return sSingleton; } /* static */ @@ -34,7 +35,6 @@ void MediaSystemResourceService::Init() { /* static */ void MediaSystemResourceService::Shutdown() { - MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread()); if (sSingleton) { sSingleton->Destroy(); sSingleton = nullptr; diff --git a/icecat/dom/media/systemservices/MediaSystemResourceService.h b/icecat/dom/media/systemservices/MediaSystemResourceService.h index 3d615b1412..8a75a6cafd 100644 --- a/icecat/dom/media/systemservices/MediaSystemResourceService.h +++ b/icecat/dom/media/systemservices/MediaSystemResourceService.h @@ -26,7 +26,7 @@ class MediaSystemResourceService { public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MediaSystemResourceService) - static already_AddRefed Get(); + static MediaSystemResourceService* Get(); static void Init(); static void Shutdown(); diff --git a/icecat/dom/media/systemservices/PMediaSystemResourceManager.ipdl b/icecat/dom/media/systemservices/PMediaSystemResourceManager.ipdl index e9ddf27db7..a682de60bf 100644 --- a/icecat/dom/media/systemservices/PMediaSystemResourceManager.ipdl +++ b/icecat/dom/media/systemservices/PMediaSystemResourceManager.ipdl @@ -21,11 +21,16 @@ sync protocol PMediaSystemResourceManager child: async Response(uint32_t aId, bool aSuccess); + async __delete__(); parent: async Acquire(uint32_t aId, MediaSystemResourceType aResourceType, bool aWillWait); async Release(uint32_t aId); - async __delete__(); + + /** + * Asynchronously tell the parent side to remove the PMediaSystemResourceManager. + */ + async RemoveResourceManager(); }; } // namespace media diff --git a/icecat/dom/media/test/crashtests/2014824.html b/icecat/dom/media/test/crashtests/2014824.html deleted file mode 100644 index cdeb6f6379..0000000000 --- a/icecat/dom/media/test/crashtests/2014824.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - diff --git a/icecat/dom/media/test/crashtests/crashtests.list b/icecat/dom/media/test/crashtests/crashtests.list index 6cab7d0106..fb68404a06 100644 --- a/icecat/dom/media/test/crashtests/crashtests.list +++ b/icecat/dom/media/test/crashtests/crashtests.list @@ -187,4 +187,3 @@ load 1905234.html load 1905231.webm load 1917627.mp4 skip-if(Android) load audioworkletprocessor-recursion.html -load 2014824.html diff --git a/icecat/dom/media/webaudio/AudioBufferSourceNode.cpp b/icecat/dom/media/webaudio/AudioBufferSourceNode.cpp index bee969319d..db34c49f48 100644 --- a/icecat/dom/media/webaudio/AudioBufferSourceNode.cpp +++ b/icecat/dom/media/webaudio/AudioBufferSourceNode.cpp @@ -169,14 +169,10 @@ class AudioBufferSourceNodeEngine final : public AudioNodeEngine { if (mResamplerOutRate == aOutRate) { return; } - int result = - speex_resampler_set_rate(mResampler, mBufferSampleRate, aOutRate); - if (result != RESAMPLER_ERR_SUCCESS) { - WEB_AUDIO_API_LOG("speex_resampler_set_rate failed: %i", result); - // mResampler den_rate and num_rate might have been updated, despite - // the error, in which case the resampler will output zeros but - // still consume input. Continue below to update mBeginProcessing - // for any change in resampler behavior. + if (speex_resampler_set_rate(mResampler, mBufferSampleRate, aOutRate) != + RESAMPLER_ERR_SUCCESS) { + NS_ASSERTION(false, "speex_resampler_set_rate failed"); + return; } } diff --git a/icecat/dom/media/webaudio/MediaBufferDecoder.cpp b/icecat/dom/media/webaudio/MediaBufferDecoder.cpp index 5ab19ddc8c..a6014b9316 100644 --- a/icecat/dom/media/webaudio/MediaBufferDecoder.cpp +++ b/icecat/dom/media/webaudio/MediaBufferDecoder.cpp @@ -229,12 +229,7 @@ class AutoResampler final { MOZ_ASSERT(mResampler); return mResampler; } - void operator=(SpeexResamplerState* aResampler) { - if (mResampler) { - speex_resampler_destroy(mResampler); - } - mResampler = aResampler; - } + void operator=(SpeexResamplerState* aResampler) { mResampler = aResampler; } private: SpeexResamplerState* mResampler; @@ -569,13 +564,6 @@ void MediaDecodeTask::FinishDecode() { } mDecodeJob.mBuffer.mBuffer = std::move(newBuffers); channelCount = audioData->mChannels; - - // Don't bother draining the previous resampler for unexpected edge case. - if (sampleRate != destSampleRate) { - resampler = speex_resampler_init(channelCount, sampleRate, destSampleRate, - SPEEX_RESAMPLER_QUALITY_DEFAULT, nullptr); - speex_resampler_skip_zeros(resampler); - } } const AudioDataValue* bufferData = diff --git a/icecat/dom/media/webaudio/test/ting-44.1k-1ch.wav b/icecat/dom/media/webaudio/test/ting-44.1k-1ch.wav index 6854c9d898..dd731e354c 100644 Binary files a/icecat/dom/media/webaudio/test/ting-44.1k-1ch.wav and b/icecat/dom/media/webaudio/test/ting-44.1k-1ch.wav differ diff --git a/icecat/dom/media/webaudio/test/ting-44.1k-2ch.wav b/icecat/dom/media/webaudio/test/ting-44.1k-2ch.wav index 703d885892..b2ef11ecbe 100644 Binary files a/icecat/dom/media/webaudio/test/ting-44.1k-2ch.wav and b/icecat/dom/media/webaudio/test/ting-44.1k-2ch.wav differ diff --git a/icecat/dom/media/webaudio/test/ting-48k-1ch.wav b/icecat/dom/media/webaudio/test/ting-48k-1ch.wav index 8fe471666c..91874dfbb2 100644 Binary files a/icecat/dom/media/webaudio/test/ting-48k-1ch.wav and b/icecat/dom/media/webaudio/test/ting-48k-1ch.wav differ diff --git a/icecat/dom/media/webaudio/test/ting-48k-2ch.wav b/icecat/dom/media/webaudio/test/ting-48k-2ch.wav index ad4d0466da..6adb8d3e5d 100644 Binary files a/icecat/dom/media/webaudio/test/ting-48k-2ch.wav and b/icecat/dom/media/webaudio/test/ting-48k-2ch.wav differ diff --git a/icecat/dom/media/webcodecs/AudioData.cpp b/icecat/dom/media/webcodecs/AudioData.cpp index 931ea56527..4d72a1bf01 100644 --- a/icecat/dom/media/webcodecs/AudioData.cpp +++ b/icecat/dom/media/webcodecs/AudioData.cpp @@ -401,7 +401,6 @@ uint32_t AudioData::AllocationSize(const AudioDataCopyToOptions& aOptions, template void CopySamples(Span aSource, Span aDest, uint32_t aSourceChannelCount, - uint32_t aSourceFramesPerChannel, const AudioSampleFormat aSourceFormat, const CopyToSpec& aCopyToSpec) { if (IsInterleaved(aSourceFormat) && IsInterleaved(aCopyToSpec.mFormat)) { @@ -410,12 +409,12 @@ void CopySamples(Span aSource, Span aDest, uint32_t aSourceChannelCount, MOZ_ASSERT(aSource.Length() - aCopyToSpec.mFrameOffset >= aCopyToSpec.mFrameCount); // This turns into a regular memcpy if the types are in fact equal - ConvertAudioSamples( - aSource.data() + aCopyToSpec.mFrameOffset * aSourceChannelCount, - aDest.data(), aCopyToSpec.mFrameCount * aSourceChannelCount); + ConvertAudioSamples(aSource.data() + aCopyToSpec.mFrameOffset, aDest.data(), + aCopyToSpec.mFrameCount * aSourceChannelCount); return; } if (IsInterleaved(aSourceFormat) && !IsInterleaved(aCopyToSpec.mFormat)) { + DebugOnly sourceFrameCount = aSource.Length() / aSourceChannelCount; MOZ_ASSERT(aDest.Length() >= aCopyToSpec.mFrameCount); MOZ_ASSERT(aSource.Length() - aCopyToSpec.mFrameOffset >= aCopyToSpec.mFrameCount); @@ -439,10 +438,11 @@ void CopySamples(Span aSource, Span aDest, uint32_t aSourceChannelCount, aCopyToSpec.mFrameOffset * aSourceChannelCount >= aCopyToSpec.mFrameCount * aSourceChannelCount); size_t writeIndex = 0; + // Scan the source linearly and put each sample at the right position in the + // destination interleaved buffer. + size_t readIndex = 0; for (size_t channel = 0; channel < aSourceChannelCount; channel++) { writeIndex = channel; - size_t readIndex = - channel * aSourceFramesPerChannel + aCopyToSpec.mFrameOffset; for (size_t i = 0; i < aCopyToSpec.mFrameCount; i++) { aDest[writeIndex] = ConvertAudioSample(aSource[readIndex]); readIndex++; @@ -453,7 +453,8 @@ void CopySamples(Span aSource, Span aDest, uint32_t aSourceChannelCount, } if (!IsInterleaved(aSourceFormat) && !IsInterleaved(aCopyToSpec.mFormat)) { // Planar to Planar / convert + copy from the right index in the source. - size_t offset = aCopyToSpec.mPlaneIndex * aSourceFramesPerChannel; + size_t framePerPlane = aSource.Length() / aSourceChannelCount; + size_t offset = aCopyToSpec.mPlaneIndex * framePerPlane; MOZ_ASSERT(aDest.Length() >= aCopyToSpec.mFrameCount, "Destination buffer too small"); MOZ_ASSERT(aSource.Length() >= offset + aCopyToSpec.mFrameCount, @@ -515,26 +516,22 @@ DataSpanType GetDataSpan(Span aSpan, const AudioSampleFormat aFormat) { void CopySamples(DataSpanType& aSource, DataSpanType& aDest, uint32_t aSourceChannelCount, - uint32_t aSourceFramesPerChannel, const AudioSampleFormat aSourceFormat, const CopyToSpec& aCopyToSpec) { aSource.match([&](auto& src) { aDest.match([&](auto& dst) { - CopySamples(src, dst, aSourceChannelCount, aSourceFramesPerChannel, - aSourceFormat, aCopyToSpec); + CopySamples(src, dst, aSourceChannelCount, aSourceFormat, aCopyToSpec); }); }); } void DoCopy(Span aSource, Span aDest, const uint32_t aSourceChannelCount, - uint32_t aSourceFramesPerChannel, const AudioSampleFormat aSourceFormat, const CopyToSpec& aCopyToSpec) { DataSpanType source = GetDataSpan(aSource, aSourceFormat); DataSpanType dest = GetDataSpan(aDest, aCopyToSpec.mFormat); - CopySamples(source, dest, aSourceChannelCount, aSourceFramesPerChannel, - aSourceFormat, aCopyToSpec); + CopySamples(source, dest, aSourceChannelCount, aSourceFormat, aCopyToSpec); } // https://w3c.github.io/webcodecs/#dom-audiodata-copyto @@ -571,7 +568,7 @@ void AudioData::CopyTo(const AllowSharedBufferSource& aDestination, uint32_t bytesPerSample = BytesPerSamples(destFormat.value()); CheckedInt copyLength = bytesPerSample; copyLength *= copyElementCount; - if (!copyLength.isValid() || copyLength.value() > destLength) { + if (copyLength.value() > destLength) { auto msg = nsFmtCString(FMT_STRING("destination buffer of length {} too " "small for copying {} elements"), destLength, bytesPerSample * copyElementCount); @@ -591,7 +588,7 @@ void AudioData::CopyTo(const AllowSharedBufferSource& aDestination, // Now a couple layers of macros to type the pointers and perform the actual // copy. ProcessTypedArraysFixed(aDestination, [&](const Span& aData) { - DoCopy(mResource->Data(), aData, mNumberOfChannels, mNumberOfFrames, + DoCopy(mResource->Data(), aData, mNumberOfChannels, mAudioSampleFormat.value(), copyToSpec); }); } @@ -717,8 +714,7 @@ RefPtr AudioData::ToAudioData() const { CopyToSpec spec(mNumberOfFrames, 0, 0, AudioSampleFormat::F32); - DoCopy(data, storage, mNumberOfChannels, mNumberOfFrames, - mAudioSampleFormat.value(), spec); + DoCopy(data, storage, mNumberOfChannels, mAudioSampleFormat.value(), spec); return MakeRefPtr( 0, media::TimeUnit::FromMicroseconds(mTimestamp), std::move(buf), diff --git a/icecat/dom/media/webcodecs/ImageDecoder.cpp b/icecat/dom/media/webcodecs/ImageDecoder.cpp index a3914802bd..4e61e28532 100644 --- a/icecat/dom/media/webcodecs/ImageDecoder.cpp +++ b/icecat/dom/media/webcodecs/ImageDecoder.cpp @@ -340,7 +340,7 @@ void ImageDecoder::CheckOutstandingDecodes() { return; } - RefPtr track = mTracks->GetDefaultTrack(); + ImageTrack* track = mTracks->GetDefaultTrack(); if (!track) { return; } @@ -410,31 +410,19 @@ void ImageDecoder::CheckOutstandingDecodes() { // 4. Resolve promise with result. for (const auto& i : resolved) { - if (!mClosed) { - ImageDecodeResult result; - result.mImage = track->GetDecodedFrame(i.mFrameIndex); - // TODO(aosmond): progressive images - result.mComplete = true; - i.mPromise->MaybeResolve(result); - } else { - i.mPromise->MaybeRejectWithAbortError("Closed decoder"_ns); - } + ImageDecodeResult result; + result.mImage = track->GetDecodedFrame(i.mFrameIndex); + // TODO(aosmond): progressive images + result.mComplete = true; + i.mPromise->MaybeResolve(result); } for (const auto& i : rejectedRange) { - if (!mClosed) { - i.mPromise->MaybeRejectWithRangeError("No more frames available"_ns); - } else { - i.mPromise->MaybeRejectWithAbortError("Closed decoder"_ns); - } + i.mPromise->MaybeRejectWithRangeError("No more frames available"_ns); } for (const auto& i : rejectedState) { - if (!mClosed) { - i.mPromise->MaybeRejectWithInvalidStateError("Error decoding frame"_ns); - } else { - i.mPromise->MaybeRejectWithAbortError("Closed decoder"_ns); - } + i.mPromise->MaybeRejectWithInvalidStateError("Error decoding frame"_ns); } } @@ -1006,13 +994,8 @@ void ImageDecoder::Reset(const MediaResult& aResult) { } void ImageDecoder::Close(const MediaResult& aResult) { - RefPtr kungFuDeathGrip(this); MOZ_LOG(gWebCodecsLog, LogLevel::Debug, ("ImageDecoder %p Close", this)); - if (mClosed) { - return; - } - // 10.2.5. Algorithms - Close ImageDecoder (with exception) mClosed = true; mTypeNotSupported = aResult.Code() == NS_ERROR_DOM_NOT_SUPPORTED_ERR; diff --git a/icecat/dom/media/webcodecs/ImageDecoderReadRequest.cpp b/icecat/dom/media/webcodecs/ImageDecoderReadRequest.cpp index acb83802a5..b4aa855be8 100644 --- a/icecat/dom/media/webcodecs/ImageDecoderReadRequest.cpp +++ b/icecat/dom/media/webcodecs/ImageDecoderReadRequest.cpp @@ -60,7 +60,6 @@ void ImageDecoderReadRequest::Destroy(bool aCancel) { MOZ_LOG(gWebCodecsLog, LogLevel::Debug, ("ImageDecoderReadRequest %p Destroy", this)); - RefPtr self(this); if (aCancel) { // Ensure we stop reading from the ReadableStream. Cancel(); @@ -161,6 +160,8 @@ void ImageDecoderReadRequest::Cancel() { return; } + RefPtr self(this); + AutoJSAPI jsapi; if (!jsapi.Init(mDecoder->GetParentObject())) { MOZ_LOG(gWebCodecsLog, LogLevel::Debug, diff --git a/icecat/dom/media/webcodecs/VideoFrame.cpp b/icecat/dom/media/webcodecs/VideoFrame.cpp index 78fbc0d73a..d97b3175f6 100644 --- a/icecat/dom/media/webcodecs/VideoFrame.cpp +++ b/icecat/dom/media/webcodecs/VideoFrame.cpp @@ -2793,11 +2793,11 @@ bool VideoFrame::Resource::CopyTo(const Format::Plane& aPlane, return false; } - auto copyPlane = [&](const uint8_t* aPlaneData, int32_t aSourceStride) { + auto copyPlane = [&](const uint8_t* aPlaneData) { MOZ_ASSERT(aPlaneData); CheckedInt offset(aRect.Y()); - offset *= aSourceStride; + offset *= Stride(aPlane); offset += aRect.X() * mFormat->SampleBytes(aPlane); if (!offset.isValid()) { return false; @@ -2812,38 +2812,37 @@ bool VideoFrame::Resource::CopyTo(const Format::Plane& aPlane, aPlaneData += offset.value(); for (int32_t row = 0; row < aRect.Height(); ++row) { PodCopy(aPlaneDest.data(), aPlaneData, elementsBytes.value()); - aPlaneData += aSourceStride; + aPlaneData += Stride(aPlane); // Spec asks to move `aDestinationStride` bytes instead of - // `aSourceStride` forward. + // `Stride(aPlane)` forward. aPlaneDest = aPlaneDest.From(aDestinationStride); } return true; }; if (mImage->GetFormat() == ImageFormat::PLANAR_YCBCR) { - const auto* data = mImage->AsPlanarYCbCrImage()->GetData(); switch (aPlane) { case Format::Plane::Y: - return copyPlane(data->mYChannel, data->mYStride); + return copyPlane(mImage->AsPlanarYCbCrImage()->GetData()->mYChannel); case Format::Plane::U: - return copyPlane(data->mCbChannel, data->mCbCrStride); + return copyPlane(mImage->AsPlanarYCbCrImage()->GetData()->mCbChannel); case Format::Plane::V: - return copyPlane(data->mCrChannel, data->mCbCrStride); + return copyPlane(mImage->AsPlanarYCbCrImage()->GetData()->mCrChannel); case Format::Plane::A: MOZ_ASSERT(mFormat->PixelFormat() == VideoPixelFormat::I420A); - MOZ_ASSERT(data->mAlpha); - return copyPlane(data->mAlpha->mChannel, data->mYStride); + MOZ_ASSERT(mImage->AsPlanarYCbCrImage()->GetData()->mAlpha); + return copyPlane( + mImage->AsPlanarYCbCrImage()->GetData()->mAlpha->mChannel); } MOZ_ASSERT_UNREACHABLE("invalid plane"); } if (mImage->GetFormat() == ImageFormat::NV_IMAGE) { - const auto* data = mImage->AsNVImage()->GetData(); switch (aPlane) { case Format::Plane::Y: - return copyPlane(data->mYChannel, data->mYStride); + return copyPlane(mImage->AsNVImage()->GetData()->mYChannel); case Format::Plane::UV: - return copyPlane(data->mCbChannel, data->mCbCrStride); + return copyPlane(mImage->AsNVImage()->GetData()->mCbChannel); case Format::Plane::V: case Format::Plane::A: MOZ_ASSERT_UNREACHABLE("invalid plane"); @@ -2917,7 +2916,7 @@ bool VideoFrame::Resource::CopyTo(const Format::Plane& aPlane, return false; } - return copyPlane(tempMap.GetData(), tempMap.GetStride()); + return copyPlane(tempMap.GetData()); } #undef LOGW diff --git a/icecat/dom/media/webm/WebMDemuxer.cpp b/icecat/dom/media/webm/WebMDemuxer.cpp index 3adc3ffb34..1ed58c5525 100644 --- a/icecat/dom/media/webm/WebMDemuxer.cpp +++ b/icecat/dom/media/webm/WebMDemuxer.cpp @@ -900,12 +900,6 @@ nsresult WebMDemuxer::GetNextPacket(TrackInfo::TrackType aType, for (uint8_t i = 0; i < numPartitions; i++) { uint32_t partition = partitions[i]; - if (partition > length || partition < lastOffset) { - WEBM_DEBUG( - "Invalid partition offset: %u (length: %zu, lastOffset: %u)", - partition, length, lastOffset); - return NS_ERROR_DOM_MEDIA_DEMUXER_ERR; - } uint32_t currentLength = partition - lastOffset; if (encrypted) { @@ -916,6 +910,8 @@ nsresult WebMDemuxer::GetNextPacket(TrackInfo::TrackType aType, encrypted = !encrypted; lastOffset = partition; + + MOZ_ASSERT(lastOffset <= length); } // Add the data between the last offset and the end of the data. diff --git a/icecat/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp b/icecat/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp index a6f23217df..31495e1713 100644 --- a/icecat/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp +++ b/icecat/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp @@ -1868,11 +1868,7 @@ PeerConnectionImpl::SetPeerIdentity(const nsAString& aPeerIdentity) { } nsresult PeerConnectionImpl::OnAlpnNegotiated(bool aPrivacyRequested) { - MOZ_ASSERT(NS_IsMainThread(), "Wrong thread"); - RefPtr kungFuDeathGrip(this); - if (IsClosed()) { - return NS_OK; // Nod and smile - } + PC_AUTO_ENTER_API_CALL(false); MOZ_DIAGNOSTIC_ASSERT(!mRequestedPrivacy || (*mRequestedPrivacy == PrincipalPrivacy::Private) == aPrivacyRequested); @@ -1889,12 +1885,6 @@ nsresult PeerConnectionImpl::OnAlpnNegotiated(bool aPrivacyRequested) { void PeerConnectionImpl::OnDtlsStateChange(const std::string& aTransportId, TransportLayer::State aState) { - MOZ_ASSERT(NS_IsMainThread(), "Wrong thread"); - RefPtr kungFuDeathGrip(this); - if (IsClosed()) { - return; - } - nsCString key(aTransportId.data(), aTransportId.size()); RefPtr dtlsTransport = mTransportIdToRTCDtlsTransport.Get(key); @@ -3324,16 +3314,8 @@ void PeerConnectionImpl::SendLocalIceCandidateToContent( void PeerConnectionImpl::IceConnectionStateChange( const std::string& aTransportId, dom::RTCIceTransportState domState) { - MOZ_ASSERT(NS_IsMainThread(), "Wrong thread"); - - // Let connection be the RTCPeerConnection object associated with this ICE - // Agent. - RefPtr connection(this); - // If connection.[[IsClosed]] is true, abort these steps. - if (IsClosed()) { - return; - } + PC_AUTO_ENTER_API_CALL_VOID_RETURN(false); CSFLogDebug(LOGTAG, "IceConnectionStateChange: %s %d (%p)", aTransportId.c_str(), static_cast(domState), this); @@ -3493,9 +3475,6 @@ bool PeerConnectionImpl::UpdateIceConnectionState() { void PeerConnectionImpl::OnCandidateFound(const std::string& aTransportId, const CandidateInfo& aCandidateInfo) { - MOZ_ASSERT(NS_IsMainThread(), "Wrong thread"); - RefPtr kungFuDeathGrip(this); - if (mStunAddrsRequest && !aCandidateInfo.mMDNSAddress.empty()) { MOZ_ASSERT(!aCandidateInfo.mActualAddress.empty()); @@ -3528,13 +3507,8 @@ void PeerConnectionImpl::OnCandidateFound(const std::string& aTransportId, void PeerConnectionImpl::IceGatheringStateChange( const std::string& aTransportId, dom::RTCIceGathererState state) { - MOZ_ASSERT(NS_IsMainThread(), "Wrong thread"); - RefPtr kungFuDeathGrip(this); - // If connection.[[IsClosed]] is true, abort these steps. - if (IsClosed()) { - return; - } + PC_AUTO_ENTER_API_CALL_VOID_RETURN(false); CSFLogWarn(LOGTAG, "IceGatheringStateChange: %s %d (%p)", aTransportId.c_str(), static_cast(state), this); diff --git a/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.cpp b/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.cpp index 8ae7bbb80a..43f7a1f13b 100644 --- a/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.cpp +++ b/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.cpp @@ -17,6 +17,9 @@ #include "jsapi/RTCRtpScriptTransform.h" #include "mozilla/dom/RTCRtpScriptTransformer.h" #include "mozilla/dom/RTCEncodedAudioFrameBinding.h" +#include "nsWrapperCache.h" +#include "nsISupports.h" +#include "nsCycleCollectionParticipant.h" #include "nsIGlobalObject.h" #include "nsContentUtils.h" #include "mozilla/HoldDropJSObjects.h" @@ -27,11 +30,21 @@ namespace mozilla::dom { +NS_IMPL_CYCLE_COLLECTION_INHERITED(RTCEncodedAudioFrame, RTCEncodedFrameBase, + mOwner) +NS_IMPL_ADDREF_INHERITED(RTCEncodedAudioFrame, RTCEncodedFrameBase) +NS_IMPL_RELEASE_INHERITED(RTCEncodedAudioFrame, RTCEncodedFrameBase) + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(RTCEncodedAudioFrame) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY +NS_INTERFACE_MAP_END_INHERITING(RTCEncodedFrameBase) + RTCEncodedAudioFrame::RTCEncodedAudioFrame( nsIGlobalObject* aGlobal, std::unique_ptr aFrame, uint64_t aCounter, RTCRtpScriptTransformer* aOwner) - : RTCEncodedFrameBase(aGlobal, std::move(aFrame), aCounter, aOwner) { + : RTCEncodedFrameBase(aGlobal, std::move(aFrame), aCounter), + mOwner(aOwner) { mMetadata.mSynchronizationSource.Construct(mFrame->GetSsrc()); mMetadata.mPayloadType.Construct(mFrame->GetPayloadType()); // send frames are derived directly from TransformableFrameInterface, not @@ -51,6 +64,16 @@ RTCEncodedAudioFrame::RTCEncodedAudioFrame( mMetadata.mSequenceNumber.Construct(*optionalSeqNum); } } + + // Base class needs this, but can't do it itself because of an assertion in + // the cycle-collector. + mozilla::HoldJSObjects(this); +} + +RTCEncodedAudioFrame::~RTCEncodedAudioFrame() { + // Base class needs this, but can't do it itself because of an assertion in + // the cycle-collector. + mozilla::DropJSObjects(this); } JSObject* RTCEncodedAudioFrame::WrapObject(JSContext* aCx, @@ -58,6 +81,10 @@ JSObject* RTCEncodedAudioFrame::WrapObject(JSContext* aCx, return RTCEncodedAudioFrame_Binding::Wrap(aCx, this, aGivenProto); } +nsIGlobalObject* RTCEncodedAudioFrame::GetParentObject() const { + return mGlobal; +} + void RTCEncodedAudioFrame::GetMetadata( RTCEncodedAudioFrameMetadata& aMetadata) const { aMetadata = mMetadata; diff --git a/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.h b/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.h index 7b7f9ed606..339231ccc2 100644 --- a/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.h +++ b/icecat/dom/media/webrtc/jsapi/RTCEncodedAudioFrame.h @@ -25,10 +25,17 @@ class RTCEncodedAudioFrame final : public RTCEncodedFrameBase { std::unique_ptr aFrame, uint64_t aCounter, RTCRtpScriptTransformer* aOwner); + // nsISupports + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(RTCEncodedAudioFrame, + RTCEncodedFrameBase) + // webidl (timestamp and data accessors live in base class) JSObject* WrapObject(JSContext* aCx, JS::Handle aGivenProto) override; + nsIGlobalObject* GetParentObject() const; + void GetMetadata(RTCEncodedAudioFrameMetadata& aMetadata) const; bool CheckOwner(RTCRtpScriptTransformer* aOwner) const override; @@ -36,7 +43,8 @@ class RTCEncodedAudioFrame final : public RTCEncodedFrameBase { bool IsVideo() const override { return false; } private: - virtual ~RTCEncodedAudioFrame() = default; + virtual ~RTCEncodedAudioFrame(); + RefPtr mOwner; RTCEncodedAudioFrameMetadata mMetadata; }; diff --git a/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.cpp b/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.cpp index de3fa3c5ef..ea547c9633 100644 --- a/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.cpp +++ b/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.cpp @@ -7,10 +7,8 @@ #include "jsapi/RTCEncodedFrameBase.h" #include "js/GCAPI.h" -#include "mozilla/HoldDropJSObjects.h" #include "nsIGlobalObject.h" #include "mozilla/dom/ScriptSettings.h" -#include "mozilla/dom/RTCRtpScriptTransformer.h" #include "js/ArrayBuffer.h" namespace mozilla::dom { @@ -19,56 +17,46 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(RTCEncodedFrameBase) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(RTCEncodedFrameBase) using ::ImplCycleCollectionUnlink; tmp->DetachData(); - NS_IMPL_CYCLE_COLLECTION_UNLINK(mOwner, mGlobal) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mGlobal) NS_IMPL_CYCLE_COLLECTION_UNLINK(mData) - NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(RTCEncodedFrameBase) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOwner, mGlobal) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mGlobal) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(RTCEncodedFrameBase) NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBERS(mData) - NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTING_ADDREF(RTCEncodedFrameBase) NS_IMPL_CYCLE_COLLECTING_RELEASE(RTCEncodedFrameBase) NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(RTCEncodedFrameBase) - NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY NS_INTERFACE_MAP_ENTRY(nsISupports) NS_INTERFACE_MAP_END RTCEncodedFrameBase::RTCEncodedFrameBase( nsIGlobalObject* aGlobal, std::unique_ptr aFrame, - uint64_t aCounter, RTCRtpScriptTransformer* aOwner) + uint64_t aCounter) : mGlobal(aGlobal), mFrame(std::move(aFrame)), mCounter(aCounter), - mTimestamp(mFrame->GetTimestamp()), - mOwner(aOwner) { + mTimestamp(mFrame->GetTimestamp()) { AutoJSAPI jsapi; if (NS_WARN_IF(!jsapi.Init(mGlobal))) { return; } - mozilla::HoldJSObjects(this); - // Avoid a copy mData = JS::NewArrayBufferWithUserOwnedContents( jsapi.cx(), mFrame->GetData().size(), (void*)(mFrame->GetData().data())); } -RTCEncodedFrameBase::~RTCEncodedFrameBase() { - DetachData(); - mData = nullptr; - mozilla::DropJSObjects(this); -} +RTCEncodedFrameBase::~RTCEncodedFrameBase() { DetachData(); } void RTCEncodedFrameBase::DetachData() { // We might have handled this in unlink already - if (mGlobal && mData) { + if (mGlobal) { AutoJSAPI jsapi; if (NS_WARN_IF(!jsapi.Init(mGlobal))) { return; @@ -81,10 +69,6 @@ void RTCEncodedFrameBase::DetachData() { } } -nsIGlobalObject* RTCEncodedFrameBase::GetParentObject() const { - return mGlobal; -} - unsigned long RTCEncodedFrameBase::Timestamp() const { return mTimestamp; } void RTCEncodedFrameBase::SetData(const ArrayBuffer& aData) { @@ -110,11 +94,4 @@ RTCEncodedFrameBase::TakeFrame() { return std::move(mFrame); } -size_t RTCEncodedFrameBase::Size() const { - if (!mFrame) { - return 0; - } - return mFrame->GetData().size(); -} - } // namespace mozilla::dom diff --git a/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.h b/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.h index 0b836f4db0..420b68614e 100644 --- a/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.h +++ b/icecat/dom/media/webrtc/jsapi/RTCEncodedFrameBase.h @@ -24,14 +24,12 @@ class RTCEncodedFrameBase : public nsISupports, public nsWrapperCache { explicit RTCEncodedFrameBase( nsIGlobalObject* aGlobal, std::unique_ptr aFrame, - uint64_t aCounter, RTCRtpScriptTransformer* aOwner); + uint64_t aCounter); // nsISupports NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(RTCEncodedFrameBase) - nsIGlobalObject* GetParentObject() const; - // Common webidl for RTCEncodedVideoFrame/RTCEncodedAudioFrame unsigned long Timestamp() const; @@ -41,8 +39,6 @@ class RTCEncodedFrameBase : public nsISupports, public nsWrapperCache { uint64_t GetCounter() const; - size_t Size() const; - virtual bool CheckOwner(RTCRtpScriptTransformer* aOwner) const = 0; std::unique_ptr TakeFrame(); @@ -57,7 +53,6 @@ class RTCEncodedFrameBase : public nsISupports, public nsWrapperCache { std::unique_ptr mFrame; const uint64_t mCounter = 0; const unsigned long mTimestamp = 0; - RefPtr mOwner; JS::Heap mData; }; diff --git a/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.cpp b/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.cpp index e5b88480ec..8ca7215c98 100644 --- a/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.cpp +++ b/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.cpp @@ -16,6 +16,9 @@ #include "jsapi/RTCEncodedFrameBase.h" #include "mozilla/dom/RTCEncodedVideoFrameBinding.h" #include "mozilla/dom/RTCRtpScriptTransformer.h" +#include "nsWrapperCache.h" +#include "nsISupports.h" +#include "nsCycleCollectionParticipant.h" #include "nsIGlobalObject.h" #include "nsContentUtils.h" #include "mozilla/RefPtr.h" @@ -26,11 +29,21 @@ namespace mozilla::dom { +NS_IMPL_CYCLE_COLLECTION_INHERITED(RTCEncodedVideoFrame, RTCEncodedFrameBase, + mOwner) +NS_IMPL_ADDREF_INHERITED(RTCEncodedVideoFrame, RTCEncodedFrameBase) +NS_IMPL_RELEASE_INHERITED(RTCEncodedVideoFrame, RTCEncodedFrameBase) + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(RTCEncodedVideoFrame) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY +NS_INTERFACE_MAP_END_INHERITING(RTCEncodedFrameBase) + RTCEncodedVideoFrame::RTCEncodedVideoFrame( nsIGlobalObject* aGlobal, std::unique_ptr aFrame, uint64_t aCounter, RTCRtpScriptTransformer* aOwner) - : RTCEncodedFrameBase(aGlobal, std::move(aFrame), aCounter, aOwner) { + : RTCEncodedFrameBase(aGlobal, std::move(aFrame), aCounter), + mOwner(aOwner) { const auto& videoFrame( static_cast(*mFrame)); mType = videoFrame.IsKeyFrame() ? RTCEncodedVideoFrameType::Key @@ -72,11 +85,21 @@ RTCEncodedVideoFrame::RTCEncodedVideoFrame( mozilla::HoldJSObjects(this); } +RTCEncodedVideoFrame::~RTCEncodedVideoFrame() { + // Base class needs this, but can't do it itself because of an assertion in + // the cycle-collector. + mozilla::DropJSObjects(this); +} + JSObject* RTCEncodedVideoFrame::WrapObject(JSContext* aCx, JS::Handle aGivenProto) { return RTCEncodedVideoFrame_Binding::Wrap(aCx, this, aGivenProto); } +nsIGlobalObject* RTCEncodedVideoFrame::GetParentObject() const { + return mGlobal; +} + RTCEncodedVideoFrameType RTCEncodedVideoFrame::Type() const { return mType; } void RTCEncodedVideoFrame::GetMetadata( diff --git a/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.h b/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.h index a1ea726225..7f1e04db96 100644 --- a/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.h +++ b/icecat/dom/media/webrtc/jsapi/RTCEncodedVideoFrame.h @@ -7,6 +7,7 @@ #ifndef MOZILLA_DOM_MEDIA_WEBRTC_JSAPI_RTCENCODEDVIDEOFRAME_H_ #define MOZILLA_DOM_MEDIA_WEBRTC_JSAPI_RTCENCODEDVIDEOFRAME_H_ +#include "mozilla/RefPtr.h" #include "nsIGlobalObject.h" #include "jsapi/RTCEncodedFrameBase.h" #include "mozilla/dom/RTCEncodedVideoFrameBinding.h" @@ -25,10 +26,17 @@ class RTCEncodedVideoFrame final : public RTCEncodedFrameBase { std::unique_ptr aFrame, uint64_t aCounter, RTCRtpScriptTransformer* aOwner); + // nsISupports + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(RTCEncodedVideoFrame, + RTCEncodedFrameBase) + // webidl (timestamp and data accessors live in base class) JSObject* WrapObject(JSContext* aCx, JS::Handle aGivenProto) override; + nsIGlobalObject* GetParentObject() const; + RTCEncodedVideoFrameType Type() const; void GetMetadata(RTCEncodedVideoFrameMetadata& aMetadata); @@ -42,7 +50,8 @@ class RTCEncodedVideoFrame final : public RTCEncodedFrameBase { Maybe Rid() const; private: - virtual ~RTCEncodedVideoFrame() = default; + virtual ~RTCEncodedVideoFrame(); + RefPtr mOwner; RTCEncodedVideoFrameType mType; RTCEncodedVideoFrameMetadata mMetadata; Maybe mRid; diff --git a/icecat/dom/media/webrtc/jsapi/RTCRtpScriptTransformer.cpp b/icecat/dom/media/webrtc/jsapi/RTCRtpScriptTransformer.cpp index 8b7e453c53..cb11b6e102 100644 --- a/icecat/dom/media/webrtc/jsapi/RTCRtpScriptTransformer.cpp +++ b/icecat/dom/media/webrtc/jsapi/RTCRtpScriptTransformer.cpp @@ -8,7 +8,6 @@ #include -#include #include #include #include @@ -437,10 +436,8 @@ JSObject* RTCRtpScriptTransformer::WrapObject( already_AddRefed RTCRtpScriptTransformer::OnTransformedFrame( RTCEncodedFrameBase* aFrame, ErrorResult& aError) { // Spec says to skip frames that are out of order or have wrong owner - // We also skip frames that are unreasonably large if (aFrame->GetCounter() > mLastReceivedFrameCounter && - aFrame->CheckOwner(this) && mProxy && - aFrame->Size() <= std::numeric_limits::max() / 4) { + aFrame->CheckOwner(this) && mProxy) { mLastReceivedFrameCounter = aFrame->GetCounter(); mProxy->OnTransformedFrame(aFrame->TakeFrame()); } diff --git a/icecat/dom/media/webrtc/jsep/JsepSessionImpl.cpp b/icecat/dom/media/webrtc/jsep/JsepSessionImpl.cpp index e597852453..e173819bbe 100644 --- a/icecat/dom/media/webrtc/jsep/JsepSessionImpl.cpp +++ b/icecat/dom/media/webrtc/jsep/JsepSessionImpl.cpp @@ -1905,17 +1905,17 @@ nsresult JsepSessionImpl::ValidateRemoteDescription(const Sdp& description) { const SdpMediaSection& oldMsection = mCurrentRemoteDescription->GetMediaSection(i); + if (mSdpHelper.MsectionIsDisabled(newMsection) || + mSdpHelper.MsectionIsDisabled(oldMsection)) { + continue; + } + if (oldMsection.GetMediaType() != newMsection.GetMediaType()) { JSEP_SET_ERROR("Remote description changes the media type of m-line " << i); return NS_ERROR_INVALID_ARG; } - if (mSdpHelper.MsectionIsDisabled(newMsection) || - mSdpHelper.MsectionIsDisabled(oldMsection)) { - continue; - } - bool differ = mSdpHelper.IceCredentialsDiffer(newMsection, oldMsection); if (mIsPendingOfferer.isSome() && *mIsPendingOfferer && differ && diff --git a/icecat/dom/media/webrtc/jsep/JsepTrack.cpp b/icecat/dom/media/webrtc/jsep/JsepTrack.cpp index 96d7df79e2..f77ceaedba 100644 --- a/icecat/dom/media/webrtc/jsep/JsepTrack.cpp +++ b/icecat/dom/media/webrtc/jsep/JsepTrack.cpp @@ -5,14 +5,10 @@ #include "jsep/JsepTrack.h" #include "jsep/JsepCodecDescription.h" #include "jsep/JsepTrackEncoding.h" -#include "transport/logging.h" #include namespace mozilla { - -MOZ_MTLOG_MODULE("jsep") - void JsepTrack::GetNegotiatedPayloadTypes( std::vector* payloadTypes) const { if (!mNegotiatedDetails) { @@ -36,8 +32,6 @@ void JsepTrack::GetPayloadTypes( for (const auto& codec : codecs) { uint16_t pt; if (!codec->GetPtAsInt(&pt)) { - MOZ_MTLOG(ML_ERROR, "Codec " << codec->mName - << " does not have a valid payload type"); MOZ_ASSERT(false); continue; } @@ -58,47 +52,14 @@ void JsepTrack::EnsureSsrcs(SsrcGenerator& ssrcGenerator, size_t aNumber) { uint32_t ssrc, rtxSsrc; if (!ssrcGenerator.GenerateSsrc(&ssrc) || !ssrcGenerator.GenerateSsrc(&rtxSsrc)) { - MOZ_MTLOG(ML_ERROR, "Unable to generate SSRC"); return; } mSsrcs.push_back(ssrc); mSsrcToRtxSsrc[ssrc] = rtxSsrc; - if (mSsrcs.size() != mSsrcToRtxSsrc.size()) { - MOZ_MTLOG(ML_ERROR, - "[" << mTrackId - << "]: mSsrcToRtxSsrc has different size than mSsrcs."); - MOZ_ASSERT(false); - mSsrcs.clear(); - mSsrcToRtxSsrc.clear(); - } + MOZ_ASSERT(mSsrcs.size() == mSsrcToRtxSsrc.size()); } } -std::vector JsepTrack::GetRtxSsrcs() const { - std::vector result; - if (mRtxIsAllowed && - Preferences::GetBool("media.peerconnection.video.use_rtx", false) && - !mSsrcToRtxSsrc.empty()) { - if (mSsrcToRtxSsrc.size() != mSsrcs.size()) { - MOZ_MTLOG(ML_ERROR, - "[" << mTrackId - << "]: mSsrcToRtxSsrc has different size than mSsrcs."); - return {}; - } - for (const auto ssrc : mSsrcs) { - auto it = mSsrcToRtxSsrc.find(ssrc); - if (it != mSsrcToRtxSsrc.end()) { - result.push_back(it->second); - } else { - MOZ_MTLOG(ML_ERROR, - "[" << mTrackId << "]: No RTX SSRC found for SSRC " << ssrc); - return {}; - } - } - } - return result; -} - void JsepTrack::PopulateCodecs( const std::vector>& prototype, bool aUsePreferredCodecsOrder) { @@ -156,10 +117,7 @@ void JsepTrack::AddToAnswer(const SdpMediaSection& offer, } void JsepTrack::SetRids(const std::vector& aRids) { - if (!aRids.size()) { - MOZ_MTLOG(ML_ERROR, "cannot set empty rids"); - return; - } + MOZ_ASSERT(!aRids.empty()); if (!mRids.empty()) { return; } @@ -176,17 +134,9 @@ void JsepTrack::SetMaxEncodings(size_t aMax) { void JsepTrack::RecvTrackSetRemote(const Sdp& aSdp, const SdpMediaSection& aMsection) { mInHaveRemote = true; - if (mDirection != sdp::kRecv) { - MOZ_MTLOG(ML_ERROR, "RecvTrackSetRemote called on non-receive track"); - MOZ_ASSERT(false); - return; - } - if (aMsection.GetMediaType() == SdpMediaSection::kApplication) { - MOZ_MTLOG(ML_ERROR, - "RecvTrackSetRemote called on application media section"); - MOZ_ASSERT(false); - return; - } + MOZ_ASSERT(mDirection == sdp::kRecv); + MOZ_ASSERT(aMsection.GetMediaType() != + SdpMediaSection::MediaType::kApplication); std::string error; SdpHelper helper(&error); @@ -237,11 +187,7 @@ void JsepTrack::RecvTrackSetRemote(const Sdp& aSdp, } void JsepTrack::RecvTrackSetLocal(const SdpMediaSection& aMsection) { - if (mDirection != sdp::kRecv) { - MOZ_MTLOG(ML_ERROR, "RecvTrackSetLocal called on non-receive track"); - MOZ_ASSERT(false); - return; - } + MOZ_ASSERT(mDirection == sdp::kRecv); // TODO: Should more stuff live in here? Anything that needs to happen when we // decide we're ready to receive packets should probably go in here. @@ -313,16 +259,9 @@ void JsepTrack::SendTrackSetRemote(SsrcGenerator& aSsrcGenerator, void JsepTrack::AddToMsection( const std::vector>& codecs, SdpMediaSection* msection) const { - if (msection->GetMediaType() != mType) { - MOZ_MTLOG(ML_ERROR, "AddToMsection called on wrong media section type"); - MOZ_ASSERT(false); - return; - } - if (codecs.empty()) { - MOZ_MTLOG(ML_ERROR, "AddToMsection called with empty codecs"); - MOZ_ASSERT(false); - return; - } + MOZ_ASSERT(msection->GetMediaType() == mType); + MOZ_ASSERT(!codecs.empty()); + for (const auto& codec : codecs) { codec->AddToMediaSection(*msection); } @@ -340,16 +279,8 @@ void JsepTrack::AddToMsection( } void JsepTrack::UpdateSsrcs(SsrcGenerator& ssrcGenerator, size_t encodings) { - if (mDirection != sdp::kSend) { - MOZ_MTLOG(ML_ERROR, "UpdateSsrcs called on non-send track"); - MOZ_ASSERT(false); - return; - } - if (mType == SdpMediaSection::kApplication) { - MOZ_MTLOG(ML_ERROR, "UpdateSsrcs called on application media section"); - MOZ_ASSERT(false); - return; - } + MOZ_ASSERT(mDirection == sdp::kSend); + MOZ_ASSERT(mType != SdpMediaSection::kApplication); size_t numSsrcs = std::max(encodings, 1U); EnsureSsrcs(ssrcGenerator, numSsrcs); @@ -357,10 +288,8 @@ void JsepTrack::UpdateSsrcs(SsrcGenerator& ssrcGenerator, size_t encodings) { if (mNegotiatedDetails && mNegotiatedDetails->GetEncodingCount() > numSsrcs) { mNegotiatedDetails->TruncateEncodings(numSsrcs); } - if (mSsrcs.empty()) { - MOZ_MTLOG(ML_ERROR, "UpdateSsrcs resulted in empty mSsrcs"); - MOZ_ASSERT(false); - } + + MOZ_ASSERT(!mSsrcs.empty()); } void JsepTrack::PruneSsrcs(size_t aNumSsrcs) { @@ -423,12 +352,7 @@ void JsepTrack::AddToMsection(const std::vector& aRids, UpdateSsrcs(ssrcGenerator, aRids.size()); if (requireRtxSsrcs) { - if (mSsrcs.size() != mSsrcToRtxSsrc.size()) { - MOZ_MTLOG(ML_ERROR, - "[" << mTrackId - << "]: mSsrcToRtxSsrc has different size than mSsrcs."); - return; - } + MOZ_ASSERT(mSsrcs.size() == mSsrcToRtxSsrc.size()); std::vector allSsrcs; UniquePtr group(new SdpSsrcGroupAttributeList); for (const auto& ssrc : mSsrcs) { diff --git a/icecat/dom/media/webrtc/jsep/JsepTrack.h b/icecat/dom/media/webrtc/jsep/JsepTrack.h index d753a77df5..0bcc2f27e6 100644 --- a/icecat/dom/media/webrtc/jsep/JsepTrack.h +++ b/icecat/dom/media/webrtc/jsep/JsepTrack.h @@ -166,7 +166,20 @@ class JsepTrack { virtual const std::vector& GetSsrcs() const { return mSsrcs; } - virtual std::vector GetRtxSsrcs() const; + virtual std::vector GetRtxSsrcs() const { + std::vector result; + if (mRtxIsAllowed && + Preferences::GetBool("media.peerconnection.video.use_rtx", false) && + !mSsrcToRtxSsrc.empty()) { + MOZ_ASSERT(mSsrcToRtxSsrc.size() == mSsrcs.size()); + for (const auto ssrc : mSsrcs) { + auto it = mSsrcToRtxSsrc.find(ssrc); + MOZ_ASSERT(it != mSsrcToRtxSsrc.end()); + result.push_back(it->second); + } + } + return result; + } virtual void EnsureSsrcs(SsrcGenerator& ssrcGenerator, size_t aNumber); diff --git a/icecat/dom/media/webrtc/jsep/moz.build b/icecat/dom/media/webrtc/jsep/moz.build index 8fc5ac162f..0e7ebdc82f 100644 --- a/icecat/dom/media/webrtc/jsep/moz.build +++ b/icecat/dom/media/webrtc/jsep/moz.build @@ -13,9 +13,6 @@ LOCAL_INCLUDES += [ "/third_party/sipcc", ] -UNIFIED_SOURCES += ["JsepSessionImpl.cpp", "SsrcGenerator.cpp"] - -# Can not be built in unified build because of MOZ_MTLOG -SOURCES += ["JsepTrack.cpp"] +UNIFIED_SOURCES += ["JsepSessionImpl.cpp", "JsepTrack.cpp", "SsrcGenerator.cpp"] FINAL_LIBRARY = "xul" diff --git a/icecat/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp b/icecat/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp index 0c4ada8fa8..718a9010b6 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp +++ b/icecat/dom/media/webrtc/libwebrtcglue/VideoConduit.cpp @@ -780,17 +780,6 @@ void WebrtcVideoConduit::OnControlConfigChange() { .valueOr(-1); })()); - // Set each layer's max-bitrate explicitly or libwebrtc may ignore all - // stream-specific max-bitrate settings later on, as provided by the - // VideoStreamFactory. Default to our max of 10Mbps, overriden by - // SDP/JS. - int maxBps = KBPS(10000); - maxBps = MinIgnoreZero(maxBps, mPrefMaxBitrate); - maxBps = MinIgnoreZero(maxBps, mNegotiatedMaxBitrate); - maxBps = MinIgnoreZero(maxBps, - static_cast(encodingConstraints.maxBr)); - video_stream.max_bitrate_bps = maxBps; - // At this time, other values are not used until after // CreateEncoderStreams(). We fill these in directly from the codec // config in VideoStreamFactory. @@ -951,14 +940,6 @@ void WebrtcVideoConduit::OnControlConfigChange() { mEncoderConfig.number_of_streams, "Each video substream must have a corresponding ssrc."); mEncoderConfig.video_stream_factory = CreateVideoStreamFactory(); - for (const auto& stream : mEncoderConfig.simulcast_layers) { - CSFLogDebug( - LOGTAG, - "%s Reconfigure with simulcast stream maxFps=%d, " - "bitrate=[%dkbps, %dkbps, %dkbps]", - __FUNCTION__, stream.max_framerate, stream.min_bitrate_bps / 1000, - stream.target_bitrate_bps / 1000, stream.max_bitrate_bps / 1000); - } mSendStream->ReconfigureVideoEncoder(mEncoderConfig.Copy()); } if (sendSourceUpdateNeeded && mTrackSource) { @@ -1385,13 +1366,13 @@ RefPtr WebrtcVideoConduit::Shutdown() { } mCall->UnregisterConduit(this); + mDecoderFactory->DisconnectAll(); + mEncoderFactory->DisconnectAll(); { MutexAutoLock lock(mMutex); DeleteSendStream(); DeleteRecvStream(); } - mDecoderFactory->DisconnectAll(); - mEncoderFactory->DisconnectAll(); return GenericPromise::CreateAndResolve(true, __func__); }); diff --git a/icecat/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp b/icecat/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp index 3adcf2e257..76a77d9810 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp +++ b/icecat/dom/media/webrtc/libwebrtcglue/VideoStreamFactory.cpp @@ -223,20 +223,15 @@ std::vector VideoStreamFactory::CreateEncoderStreams( __FUNCTION__, encoding.rid.c_str()); } + CSFLogInfo(LOGTAG, "%s Stream with RID %s maxFps=%d (global max fps = %u)", + __FUNCTION__, encoding.rid.c_str(), video_stream.max_framerate, + (unsigned)mMaxFramerateForAllStreams); + SelectBitrates({video_stream.width, video_stream.height}, mMinBitrate, mStartBitrate, SaturatingCast(encoding.constraints.maxBr), mPrefMaxBitrate, mNegotiatedMaxBitrate, video_stream); - CSFLogInfo(LOGTAG, - "%s Stream with RID %s maxFps=%d (global max fps = %u), " - "bitrate=[%dkbps, %dkbps, %dkbps]", - __FUNCTION__, encoding.rid.c_str(), video_stream.max_framerate, - (unsigned)mMaxFramerateForAllStreams, - video_stream.min_bitrate_bps / 1000, - video_stream.target_bitrate_bps / 1000, - video_stream.max_bitrate_bps / 1000); - video_stream.bitrate_priority = aConfig.bitrate_priority; video_stream.max_qp = kQpMax; diff --git a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp index 7c0a23cd96..d909050e94 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp +++ b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.cpp @@ -257,7 +257,6 @@ void WebrtcGmpVideoEncoder::Close_g() { mGMP = nullptr; mHost = nullptr; mInitting = false; - mInputImageMap.Clear(); if (mCachedPluginId) { mReleasePluginEvent.Notify(*mCachedPluginId); @@ -341,14 +340,6 @@ void WebrtcGmpVideoEncoder::RegetEncoderForResolutionChange(uint32_t aWidth, void WebrtcGmpVideoEncoder::Encode_g( const webrtc::VideoFrame& aInputImage, std::vector aFrameTypes) { - auto reportDroppedOnExit = MakeScopeExit([&] { - MutexAutoLock lock(mCallbackMutex); - if (mCallback) { - mCallback->OnDroppedFrame( - webrtc::EncodedImageCallback::DropReason::kDroppedByEncoder); - } - }); - if (!mGMP) { // destroyed via Terminate(), failed to init, or just not initted yet GMP_LOG_DEBUG("GMP Encode: not initted yet"); @@ -356,13 +347,6 @@ void WebrtcGmpVideoEncoder::Encode_g( } MOZ_ASSERT(mHost); - if (mInputImageMap.Length() >= kMaxImagesInFlight) { - GMP_LOG_WARNING( - "GMP Encode: Max number of frames already in flight. Dropping this " - "one."); - return; - } - if (static_cast(aInputImage.width()) != mCodecParams.mWidth || static_cast(aInputImage.height()) != mCodecParams.mHeight) { GMP_LOG_DEBUG("GMP Encode: resolution change from %ux%u to %dx%d", @@ -403,9 +387,7 @@ void WebrtcGmpVideoEncoder::Encode_g( GMP_LOG_DEBUG("GMP Encode: failed to create frame"); return; } - const auto gmpTimestamp = - AssertedCast(aInputImage.ntp_time_ms() * 1000); - frame->SetTimestamp(gmpTimestamp); + frame->SetTimestamp(AssertedCast(aInputImage.ntp_time_ms() * 1000)); GMPCodecSpecificInfo info{}; info.mCodecType = kGMPVideoCodecH264; @@ -439,23 +421,18 @@ void WebrtcGmpVideoEncoder::Encode_g( MOZ_RELEASE_ASSERT(mInputImageMap.IsEmpty() || mInputImageMap.LastElement().ntp_timestamp_ms < aInputImage.ntp_time_ms()); + mInputImageMap.AppendElement( + InputImageData{.gmp_timestamp_us = frame->Timestamp(), + .ntp_timestamp_ms = aInputImage.ntp_time_ms(), + .timestamp_us = aInputImage.timestamp_us(), + .rtp_timestamp = aInputImage.rtp_timestamp(), + .frame_config = frameConfigs[0]}); GMP_LOG_DEBUG("GMP Encode: %" PRIu64, (frame->Timestamp())); err = mGMP->Encode(std::move(frame), codecSpecificInfo, gmp_frame_types); if (err != GMPNoErr) { GMP_LOG_DEBUG("GMP Encode: failed to encode frame"); - return; } - - // Once in mInputImageMap, frame drops are reported by GMP callbacks - // (Encoded/Dropped). - reportDroppedOnExit.release(); - mInputImageMap.AppendElement( - InputImageData{.gmp_timestamp_us = gmpTimestamp, - .ntp_timestamp_ms = aInputImage.ntp_time_ms(), - .timestamp_us = aInputImage.timestamp_us(), - .rtp_timestamp = aInputImage.rtp_timestamp(), - .frame_config = frameConfigs[0]}); } int32_t WebrtcGmpVideoEncoder::RegisterEncodeCompleteCallback( @@ -514,8 +491,6 @@ int32_t WebrtcGmpVideoEncoder::SetRates_g(uint32_t aOldBitRateKbps, return WEBRTC_VIDEO_CODEC_ERROR; } - GMP_LOG_DEBUG("GMP Encoder %p setting rate %ukbps", this, aNewBitRateKbps); - mNeedKeyframe |= (aOldBitRateKbps == 0 && aNewBitRateKbps != 0); GMPErr err = mGMP->SetRates( @@ -540,7 +515,6 @@ void WebrtcGmpVideoEncoder::Terminated() { mGMP = nullptr; mHost = nullptr; mInitting = false; - mInputImageMap.Clear(); if (gmp) { // Do this last, since this could cause us to be destroyed @@ -550,23 +524,20 @@ void WebrtcGmpVideoEncoder::Terminated() { // Could now notify that it's dead } -static int32_t GmpTimestampComparator(const InputImageData& aA, - const InputImageData& aB) { - const auto& a = aA.gmp_timestamp_us; - const auto& b = aB.gmp_timestamp_us; - return a < b ? -1 : a != b; -} - void WebrtcGmpVideoEncoder::Encoded( GMPVideoEncodedFrame* aEncodedFrame, const nsTArray& aCodecSpecificInfo) { MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); Maybe data; - MOZ_ASSERT(!mInputImageMap.IsEmpty()); - MOZ_ASSERT(mInputImageMap.Length() <= kMaxImagesInFlight); + auto gmp_timestamp_comparator = [](const InputImageData& aA, + const InputImageData& aB) -> int32_t { + const auto& a = aA.gmp_timestamp_us; + const auto& b = aB.gmp_timestamp_us; + return a < b ? -1 : a != b; + }; size_t nextIdx = mInputImageMap.IndexOfFirstElementGt( InputImageData{.gmp_timestamp_us = aEncodedFrame->TimeStamp()}, - GmpTimestampComparator); + gmp_timestamp_comparator); const size_t numToRemove = nextIdx; size_t numFramesDropped = numToRemove; MOZ_ASSERT(nextIdx != 0); @@ -672,8 +643,7 @@ void WebrtcGmpVideoEncoder::Encoded( } if (mCodecParams.mTemporalLayerNum > 1) { - int temporalIdx = std::clamp(aEncodedFrame->GetTemporalLayerId(), 0, - mCodecParams.mTemporalLayerNum - 1); + int temporalIdx = std::max(0, aEncodedFrame->GetTemporalLayerId()); unit.SetTemporalIndex(temporalIdx); info.codecSpecific.H264.temporal_idx = temporalIdx; info.scalability_mode = GmpCodecParamsToScalabilityMode(mCodecParams); @@ -704,34 +674,6 @@ void WebrtcGmpVideoEncoder::Encoded( mCallback->OnEncodedImage(unit, &info); } -void WebrtcGmpVideoEncoder::Dropped(uint64_t aTimestamp) { - MOZ_ASSERT(mGMPThread->IsOnCurrentThread()); - MOZ_ASSERT(!mInputImageMap.IsEmpty()); - MOZ_ASSERT(mInputImageMap.Length() <= kMaxImagesInFlight); - - size_t nextIdx = mInputImageMap.IndexOfFirstElementGt( - InputImageData{.gmp_timestamp_us = aTimestamp}, GmpTimestampComparator); - const size_t numDropped = nextIdx; - MOZ_ASSERT(nextIdx != 0); - MOZ_ASSERT(mInputImageMap.ElementAt(nextIdx - 1).gmp_timestamp_us == - aTimestamp); - mInputImageMap.RemoveElementsAt(0, numDropped); - - GMP_LOG_DEBUG("GMP Dropped: %" PRIu64 - " dropped by encoder. Reporting %u frames dropped.", - aTimestamp, static_cast(numDropped)); - - MutexAutoLock lock(mCallbackMutex); - if (!mCallback) { - return; - } - - for (size_t i = 0; i < numDropped; ++i) { - mCallback->OnDroppedFrame( - webrtc::EncodedImageCallback::DropReason::kDroppedByEncoder); - } -} - // Decoder. WebrtcGmpVideoDecoder::WebrtcGmpVideoDecoder(std::string aPCHandle, TrackingId aTrackingId) @@ -911,15 +853,6 @@ int32_t WebrtcGmpVideoDecoder::Decode(const webrtc::EncodedImage& aInputImage, } void WebrtcGmpVideoDecoder::Decode_g(UniquePtr&& aDecodeData) { - CheckedInt dataSize(aDecodeData->mImage.size()); - dataSize -= 4; - if (!dataSize.isValid()) { - GMP_LOG_ERROR("%s: bad input size (%zu)!", __PRETTY_FUNCTION__, - aDecodeData->mImage.size()); - mDecoderStatus = GMPInvalidArgErr; - return; - } - if (!mGMP) { if (mInitting) { // InitDone hasn't been called yet (race) @@ -1048,10 +981,9 @@ void WebrtcGmpVideoDecoder::Decoded(GMPVideoi420Frame* aDecodedFrame) { CheckedInt32 length = (CheckedInt32(aDecodedFrame->Stride(kGMPYPlane)) * aDecodedFrame->Height()) + - (CheckedInt32(aDecodedFrame->Stride(kGMPVPlane)) + - aDecodedFrame->Stride(kGMPUPlane)) * - ((aDecodedFrame->Height() + 1) / 2); - int32_t size = length.isValid() ? length.value() : 0; + (aDecodedFrame->Stride(kGMPVPlane) + aDecodedFrame->Stride(kGMPUPlane)) * + ((aDecodedFrame->Height() + 1) / 2); + int32_t size = length.value(); MOZ_RELEASE_ASSERT(length.isValid() && size > 0); // Don't use MakeUniqueFallible here, because UniquePtr isn't copyable, and diff --git a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h index 4e93bfb9f3..c9352204c6 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h +++ b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcGmpVideoCodec.h @@ -204,8 +204,6 @@ class WebrtcGmpVideoEncoder final : public GMPVideoEncoderCallbackProxy, void Encoded(GMPVideoEncodedFrame* aEncodedFrame, const nsTArray& aCodecSpecificInfo) override; - void Dropped(uint64_t aTimestamp) override; - void Error(GMPErr aError) override {} private: diff --git a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp index 7e2e1b7b27..7fd099df00 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp +++ b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.cpp @@ -474,8 +474,8 @@ int32_t WebrtcMediaDataEncoder::Encode( CheckedInt64 time = TimeUnitToFrames(frame->mTime, cricket::kVideoCodecClockrate); if (!time.isValid()) { - mError = MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, - "invalid timestamp from encoder"); + self->mError = MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, + "invalid timestamp from encoder"); break; } image.SetRtpTimestamp(time.value()); @@ -487,12 +487,11 @@ int32_t WebrtcMediaDataEncoder::Encode( frame->mKeyframe); LOG_V("Send encoded image"); - mCallback->OnEncodedImage(image, &mCodecSpecific); - mBitrateAdjuster.Update(image.size()); + self->mCallback->OnEncodedImage(image, &mCodecSpecific); + self->mBitrateAdjuster.Update(image.size()); } }, [self = RefPtr(this)](const MediaResult& aError) { - MutexAutoLock lock(self->mCallbackMutex); self->mError = aError; }); return WEBRTC_VIDEO_CODEC_OK; diff --git a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.h b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.h index 97e25051c7..0c2070f6a9 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.h +++ b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcMediaDataEncoderCodec.h @@ -60,10 +60,9 @@ class WebrtcMediaDataEncoder : public RefCountedWebrtcVideoEncoder { const RefPtr mFactory; RefPtr mEncoder; - Mutex mCallbackMutex; - webrtc::EncodedImageCallback* mCallback MOZ_GUARDED_BY(mCallbackMutex) = - nullptr; - MediaResult mError MOZ_GUARDED_BY(mCallbackMutex) = NS_OK; + Mutex mCallbackMutex MOZ_UNANNOTATED; // Protects mCallback and mError. + webrtc::EncodedImageCallback* mCallback = nullptr; + MediaResult mError = NS_OK; VideoInfo mInfo; webrtc::CodecParameterMap mFormatParams; diff --git a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.cpp b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.cpp index 7d76d1d709..828954d89b 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.cpp +++ b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.cpp @@ -38,11 +38,8 @@ std::unique_ptr WebrtcVideoDecoderFactory::Create( // Get an external decoder auto gmpDecoder = WrapUnique(GmpVideoCodec::CreateDecoder(mPCHandle, mTrackingId)); - { - MutexAutoLock lock(mGmpPluginMutex); - mCreatedGmpPluginEvent.Forward(*gmpDecoder->InitPluginEvent()); - mReleasedGmpPluginEvent.Forward(*gmpDecoder->ReleasePluginEvent()); - } + mCreatedGmpPluginEvent.Forward(*gmpDecoder->InitPluginEvent()); + mReleasedGmpPluginEvent.Forward(*gmpDecoder->ReleasePluginEvent()); decoder.reset(gmpDecoder.release()); break; } @@ -135,11 +132,8 @@ WebrtcVideoEncoderFactory::InternalFactory::Create( // get an external encoder auto gmpEncoder = WrapUnique(GmpVideoCodec::CreateEncoder(aFormat, mPCHandle)); - { - MutexAutoLock lock(mGmpPluginMutex); - mCreatedGmpPluginEvent.Forward(*gmpEncoder->InitPluginEvent()); - mReleasedGmpPluginEvent.Forward(*gmpEncoder->ReleasePluginEvent()); - } + mCreatedGmpPluginEvent.Forward(*gmpEncoder->InitPluginEvent()); + mReleasedGmpPluginEvent.Forward(*gmpEncoder->ReleasePluginEvent()); encoder.reset(gmpEncoder.release()); break; } diff --git a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.h b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.h index 9256e93947..ac873aac24 100644 --- a/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.h +++ b/icecat/dom/media/webrtc/libwebrtcglue/WebrtcVideoCodecFactory.h @@ -22,7 +22,6 @@ class GmpPluginNotifier : public GmpPluginNotifierInterface { public: explicit GmpPluginNotifier(nsCOMPtr aOwningThread) : mOwningThread(std::move(aOwningThread)), - mGmpPluginMutex("GmpPluginNotifier::mGmpPluginMutex"), mCreatedGmpPluginEvent(mOwningThread), mReleasedGmpPluginEvent(mOwningThread) {} @@ -30,7 +29,6 @@ class GmpPluginNotifier : public GmpPluginNotifierInterface { void DisconnectAll() override { MOZ_ASSERT(mOwningThread->IsOnCurrentThread()); - MutexAutoLock lock(mGmpPluginMutex); mCreatedGmpPluginEvent.DisconnectAll(); mReleasedGmpPluginEvent.DisconnectAll(); } @@ -45,7 +43,6 @@ class GmpPluginNotifier : public GmpPluginNotifierInterface { protected: const nsCOMPtr mOwningThread; - Mutex mGmpPluginMutex MOZ_UNANNOTATED; MediaEventForwarder mCreatedGmpPluginEvent; MediaEventForwarder mReleasedGmpPluginEvent; }; diff --git a/icecat/dom/media/webrtc/transport/ipc/WebrtcTCPSocket.cpp b/icecat/dom/media/webrtc/transport/ipc/WebrtcTCPSocket.cpp index f63bc23584..a98e5dad86 100644 --- a/icecat/dom/media/webrtc/transport/ipc/WebrtcTCPSocket.cpp +++ b/icecat/dom/media/webrtc/transport/ipc/WebrtcTCPSocket.cpp @@ -685,52 +685,44 @@ WebrtcTCPSocket::OnInputStreamReady(nsIAsyncInputStream* in) { MOZ_ASSERT(mTransport, "webrtc TCP socket not connected"); MOZ_ASSERT(mSocketIn == in, "wrong input stream"); - while (true) { - char buffer[9216]; - uint32_t remainingCapacity = sizeof(buffer); - uint32_t read = 0; + char buffer[9216]; + uint32_t remainingCapacity = sizeof(buffer); + uint32_t read = 0; - while (remainingCapacity > 0) { - uint32_t count = 0; - nsresult rv = mSocketIn->Read(buffer + read, remainingCapacity, &count); - if (rv == NS_BASE_STREAM_WOULD_BLOCK) { - break; - } - - if (NS_FAILED(rv)) { - LOG(("WebrtcTCPSocket::OnInputStreamReady %p failed %u\n", this, - static_cast(rv))); - CloseWithReason(rv); - return rv; - } - - // base stream closed - if (count == 0) { - LOG(("WebrtcTCPSocket::OnInputStreamReady %p connection closed\n", - this)); - CloseWithReason(NS_ERROR_FAILURE); - return NS_OK; - } - - remainingCapacity -= count; - read += count; - } - - if (read > 0) { - nsTArray array(read); - array.AppendElements(buffer, read); - - InvokeOnRead(std::move(array)); - } - - if (remainingCapacity != 0) { - // Loop exited above, but not because we ran out of space. We're actually - // done, break out of the while(true) loop. + while (remainingCapacity > 0) { + uint32_t count = 0; + nsresult rv = mSocketIn->Read(buffer + read, remainingCapacity, &count); + if (rv == NS_BASE_STREAM_WOULD_BLOCK) { break; } + + if (NS_FAILED(rv)) { + LOG(("WebrtcTCPSocket::OnInputStreamReady %p failed %u\n", this, + static_cast(rv))); + CloseWithReason(rv); + return rv; + } + + // base stream closed + if (count == 0) { + LOG(("WebrtcTCPSocket::OnInputStreamReady %p connection closed\n", this)); + CloseWithReason(NS_ERROR_FAILURE); + return NS_OK; + } + + remainingCapacity -= count; + read += count; + } + + if (read > 0) { + nsTArray array(read); + array.AppendElements(buffer, read); + + InvokeOnRead(std::move(array)); } mSocketIn->AsyncWait(this, 0, 0, nullptr); + return NS_OK; } diff --git a/icecat/dom/media/webrtc/transport/mediapacket.cpp b/icecat/dom/media/webrtc/transport/mediapacket.cpp index 69ab8d83c7..e222612eb7 100644 --- a/icecat/dom/media/webrtc/transport/mediapacket.cpp +++ b/icecat/dom/media/webrtc/transport/mediapacket.cpp @@ -8,17 +8,7 @@ #include -#include "ipc/EnumSerializer.h" #include "ipc/IPCMessageUtils.h" -#include "ipc/IPCMessageUtilsSpecializations.h" - -namespace IPC { -template <> -struct ParamTraits - : public ContiguousEnumSerializerInclusive< - mozilla::MediaPacket::Type, mozilla::MediaPacket::UNCLASSIFIED, - mozilla::MediaPacket::SCTP> {}; -} // namespace IPC namespace mozilla { @@ -41,52 +31,66 @@ MediaPacket MediaPacket::Clone() const { } void MediaPacket::Serialize(IPC::MessageWriter* aWriter) const { - WriteParam(aWriter, len_); - WriteParam(aWriter, capacity_); - WriteParam(aWriter, encrypted_len_); - WriteParam(aWriter, sdp_level_); - WriteParam(aWriter, type_); - + aWriter->WriteUInt32(len_); + aWriter->WriteUInt32(capacity_); if (len_) { aWriter->WriteBytes(data_.get(), len_); } + aWriter->WriteUInt32(encrypted_len_); if (encrypted_len_) { aWriter->WriteBytes(encrypted_data_.get(), encrypted_len_); } + aWriter->WriteInt32(sdp_level_.isSome() ? *sdp_level_ : -1); + aWriter->WriteInt32(type_); } bool MediaPacket::Deserialize(IPC::MessageReader* aReader) { Reset(); - if (!ReadParam(aReader, &len_) || !ReadParam(aReader, &capacity_) || - !ReadParam(aReader, &encrypted_len_) || - !ReadParam(aReader, &sdp_level_) || !ReadParam(aReader, &type_)) { + uint32_t len; + if (!aReader->ReadUInt32(&len)) { return false; } - - if (capacity_ < len_) { + uint32_t capacity; + if (!aReader->ReadUInt32(&capacity)) { return false; } - - // Kinda arbitrary, but we want some sort of ceiling here. - if ((capacity_ > 1024 * 1024) || (encrypted_len_ > 1024 * 1024)) { - return false; - } - - if (capacity_) { - data_.reset(new uint8_t[capacity_]); - if (len_) { - if (!aReader->ReadBytesInto(data_.get(), len_)) { - return false; - } - } - } - - if (encrypted_len_) { - encrypted_data_.reset(new uint8_t[encrypted_len_]); - if (!aReader->ReadBytesInto(encrypted_data_.get(), encrypted_len_)) { + if (len) { + MOZ_RELEASE_ASSERT(capacity >= len); + UniquePtr data(new uint8_t[capacity]); + if (!aReader->ReadBytesInto(data.get(), len)) { return false; } + data_ = std::move(data); + len_ = len; + capacity_ = capacity; } + + if (!aReader->ReadUInt32(&len)) { + return false; + } + if (len) { + UniquePtr data(new uint8_t[len]); + if (!aReader->ReadBytesInto(data.get(), len)) { + return false; + } + encrypted_data_ = std::move(data); + encrypted_len_ = len; + } + + int32_t sdp_level; + if (!aReader->ReadInt32(&sdp_level)) { + return false; + } + + if (sdp_level >= 0) { + sdp_level_ = Some(sdp_level); + } + + int32_t type; + if (!aReader->ReadInt32(&type)) { + return false; + } + type_ = static_cast(type); return true; } diff --git a/icecat/dom/media/webrtc/transport/nr_socket_prsock.cpp b/icecat/dom/media/webrtc/transport/nr_socket_prsock.cpp index 68cfc77ba6..3bb296450a 100644 --- a/icecat/dom/media/webrtc/transport/nr_socket_prsock.cpp +++ b/icecat/dom/media/webrtc/transport/nr_socket_prsock.cpp @@ -532,7 +532,7 @@ abort: int nr_transport_addr_get_addrstring_and_port(const nr_transport_addr* addr, nsACString* host, int32_t* port) { int r, _status; - char addr_string[256]; + char addr_string[64]; // We cannot directly use |nr_transport_addr.as_string| because it contains // more than ip address, therefore, we need to explicity convert it diff --git a/icecat/dom/media/webrtc/transport/nricectx.cpp b/icecat/dom/media/webrtc/transport/nricectx.cpp index b00c2e9fc0..079dd43416 100644 --- a/icecat/dom/media/webrtc/transport/nricectx.cpp +++ b/icecat/dom/media/webrtc/transport/nricectx.cpp @@ -236,7 +236,7 @@ nsresult NrIceTurnServer::ToNicerTurnStruct(nr_ice_turn_server* server) const { nsresult rv = ToNicerStunStruct(&server->turn_server); if (NS_FAILED(rv)) return rv; - if (!(server->username = strdup(username_.c_str()))) + if (!(server->username = r_strdup(username_.c_str()))) return NS_ERROR_OUT_OF_MEMORY; // TODO(ekr@rtfm.com): handle non-ASCII passwords somehow? @@ -249,7 +249,7 @@ nsresult NrIceTurnServer::ToNicerTurnStruct(nr_ice_turn_server* server) const { const UCHAR* data = password_.empty() ? nullptr : &password_[0]; int r = r_data_create(&server->password, data, password_.size()); if (r) { - free(server->username); + RFREE(server->username); return NS_ERROR_OUT_OF_MEMORY; } @@ -968,9 +968,9 @@ std::vector NrIceCtx::GetGlobalAttributes() { for (int i = 0; i < attrct; i++) { ret.push_back(std::string(attrs[i])); - free(attrs[i]); + RFREE(attrs[i]); } - free(attrs); + RFREE(attrs); return ret; } @@ -1102,7 +1102,7 @@ void NrIceCtx::GenerateObfuscatedAddress(nr_ice_candidate* candidate, obfuscated_host_addresses_[*actual_address] = *mdns_address; } - candidate->mdns_addr = strdup(mdns_address->c_str()); + candidate->mdns_addr = r_strdup(mdns_address->c_str()); } } diff --git a/icecat/dom/media/webrtc/transport/nricemediastream.cpp b/icecat/dom/media/webrtc/transport/nricemediastream.cpp index ecd13ca204..a3a0c147c9 100644 --- a/icecat/dom/media/webrtc/transport/nricemediastream.cpp +++ b/icecat/dom/media/webrtc/transport/nricemediastream.cpp @@ -516,10 +516,10 @@ std::vector NrIceMediaStream::GetAttributes() const { for (int i = 0; i < attrct; i++) { ret.push_back(attrs[i]); - free(attrs[i]); + RFREE(attrs[i]); } - free(attrs); + RFREE(attrs); return ret; } diff --git a/icecat/dom/media/webrtc/transport/nricestunaddr.cpp b/icecat/dom/media/webrtc/transport/nricestunaddr.cpp index 7990b8e870..d1e8d3ac52 100644 --- a/icecat/dom/media/webrtc/transport/nricestunaddr.cpp +++ b/icecat/dom/media/webrtc/transport/nricestunaddr.cpp @@ -75,19 +75,6 @@ nsresult NrIceStunAddr::Deserialize(const char* buffer, size_t buffer_size) { nr_local_addr* from_addr = const_cast((const nr_local_addr*)buffer); - // Just in case - constexpr size_t ifname_size = - sizeof(from_addr->addr.ifname) / sizeof(from_addr->addr.ifname[0]); - constexpr size_t as_string_size = - sizeof(from_addr->addr.as_string) / sizeof(from_addr->addr.as_string[0]); - constexpr size_t fqdn_size = - sizeof(from_addr->addr.fqdn) / sizeof(from_addr->addr.fqdn[0]); - from_addr->addr.ifname[ifname_size - 1] = '\0'; - from_addr->addr.as_string[as_string_size - 1] = '\0'; - from_addr->addr.fqdn[fqdn_size - 1] = '\0'; - from_addr->addr.is_proxied = !!from_addr->addr.is_proxied; - from_addr->addr.tls = !!from_addr->addr.tls; - // At this point, from_addr->addr.addr is invalid (null), but will // be fixed by nr_local_addr_copy. if (nr_local_addr_copy(localAddr_, from_addr)) { diff --git a/icecat/dom/media/webrtc/transport/test/test_nr_socket_ice_unittest.cpp b/icecat/dom/media/webrtc/transport/test/test_nr_socket_ice_unittest.cpp index 5a35c27689..7b3546f1cd 100644 --- a/icecat/dom/media/webrtc/transport/test/test_nr_socket_ice_unittest.cpp +++ b/icecat/dom/media/webrtc/transport/test/test_nr_socket_ice_unittest.cpp @@ -147,9 +147,9 @@ class IcePeer { for (int i = 0; i < attrct; i++) { ret.push_back(std::string(attrs[i])); - free(attrs[i]); + RFREE(attrs[i]); } - free(attrs); + RFREE(attrs); return ret; } @@ -170,9 +170,9 @@ class IcePeer { for (int i = 0; i < attrct; i++) { ret.push_back(std::string(attrs[i])); - free(attrs[i]); + RFREE(attrs[i]); } - free(attrs); + RFREE(attrs); return ret; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate.c index 0e7819b640..b7cf2c9a99 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate.c @@ -172,7 +172,7 @@ int nr_ice_candidate_create(nr_ice_ctx *ctx,nr_ice_component *comp,nr_ice_socket } } - if(!(cand->label=strdup(label))) + if(!(cand->label=r_strdup(label))) ABORT(R_NO_MEMORY); if(r=nr_ice_get_foundation(ctx,cand)) @@ -220,7 +220,7 @@ int nr_ice_peer_peer_rflx_candidate_create(nr_ice_ctx *ctx,char *label, nr_ice_c if(!(cand=RCALLOC(sizeof(nr_ice_candidate)))) ABORT(R_NO_MEMORY); - if(!(cand->label=strdup(label))) + if(!(cand->label=r_strdup(label))) ABORT(R_NO_MEMORY); cand->state=NR_ICE_CAND_STATE_INITIALIZED; @@ -239,7 +239,7 @@ int nr_ice_peer_peer_rflx_candidate_create(nr_ice_ctx *ctx,char *label, nr_ice_c if(r=nr_transport_addr_copy(&cand->addr,addr)) ABORT(r); /* Bogus foundation */ - if(!(cand->foundation=strdup(cand->addr.as_string))) + if(!(cand->foundation=r_strdup(cand->addr.as_string))) ABORT(R_NO_MEMORY); nr_ice_candidate_compute_codeword(cand); @@ -333,10 +333,10 @@ int nr_ice_candidate_destroy(nr_ice_candidate **candp) break; } - free(cand->mdns_addr); - free(cand->foundation); - free(cand->label); - free(cand); + RFREE(cand->mdns_addr); + RFREE(cand->foundation); + RFREE(cand->label); + RFREE(cand); return(0); } @@ -383,7 +383,7 @@ static int nr_ice_get_foundation(nr_ice_ctx *ctx,nr_ice_candidate *cand) } snprintf(fnd,sizeof(fnd),"%d",i); - if(!(cand->foundation=strdup(fnd))) + if(!(cand->foundation=r_strdup(fnd))) ABORT(R_NO_MEMORY); return(0); @@ -402,7 +402,7 @@ static int nr_ice_get_foundation(nr_ice_ctx *ctx,nr_ice_candidate *cand) STAILQ_INSERT_TAIL(&ctx->foundations,foundation,entry); snprintf(fnd,sizeof(fnd),"%d",i); - if(!(cand->foundation=strdup(fnd))) + if(!(cand->foundation=r_strdup(fnd))) ABORT(R_NO_MEMORY); _status=0; @@ -933,7 +933,7 @@ static void nr_ice_turn_allocated_cb(NR_SOCKET s, int how, void *cb_arg) r_log(LOG_ICE,LOG_DEBUG,"ICE(%s)/CAND(%s): new relay base=%s addr=%s", cand->ctx->label, cand->label, cand->base.as_string, cand->addr.as_string); - free(cand->label); + RFREE(cand->label); cand->label=label; nr_ice_candidate_mark_done(cand, NR_ICE_CAND_STATE_INITIALIZED); cand = 0; diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate_pair.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate_pair.c index 64bfb577e5..cd7d91cca3 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate_pair.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_candidate_pair.c @@ -134,7 +134,7 @@ int nr_ice_candidate_pair_create(nr_ice_peer_ctx *pctx, nr_ice_candidate *lcand, lcand->osock, &rcand->addr,RTO,&pair->stun_client)) ABORT(r); - if(!(pair->stun_client->params.ice_binding_request.username=strdup(rcand->stream->l2r_user))) + if(!(pair->stun_client->params.ice_binding_request.username=r_strdup(rcand->stream->l2r_user))) ABORT(R_NO_MEMORY); if(r=r_data_copy(&pair->stun_client->params.ice_binding_request.password, &rcand->stream->l2r_pass)) @@ -171,12 +171,12 @@ int nr_ice_candidate_pair_destroy(nr_ice_cand_pair **pairp) nr_accumulate_count(&(pair->local->ctx->stats.stun_retransmits), pair->stun_client->retransmit_ct); } - free(pair->as_string); - free(pair->foundation); + RFREE(pair->as_string); + RFREE(pair->foundation); nr_ice_socket_deregister(pair->local->isock,pair->stun_client_handle); if (pair->stun_client) { - free(pair->stun_client->params.ice_binding_request.username); - free(pair->stun_client->params.ice_binding_request.password.data); + RFREE(pair->stun_client->params.ice_binding_request.username); + RFREE(pair->stun_client->params.ice_binding_request.password.data); nr_stun_client_ctx_destroy(&pair->stun_client); } @@ -184,7 +184,7 @@ int nr_ice_candidate_pair_destroy(nr_ice_cand_pair **pairp) NR_async_timer_cancel(pair->restart_role_change_cb_timer); NR_async_timer_cancel(pair->restart_nominated_cb_timer); - free(pair); + RFREE(pair); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_component.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_component.c index 0eff4d2f8d..cfa2f70bef 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_component.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_component.c @@ -75,7 +75,7 @@ static int nr_ice_pre_answer_request_create(nr_transport_addr *dst, nr_stun_serv ABORT(r); if (!nr_stun_message_has_attribute(par->req.request, NR_STUN_ATTR_USERNAME, &attr)) ABORT(R_INTERNAL); - if (!(par->username = strdup(attr->u.username))) + if (!(par->username = r_strdup(attr->u.username))) ABORT(R_NO_MEMORY); *parp=par; @@ -103,8 +103,8 @@ static int nr_ice_pre_answer_request_destroy(nr_ice_pre_answer_request **parp) nr_stun_message_destroy(&par->req.request); nr_stun_message_destroy(&par->req.response); - free(par->username); - free(par); + RFREE(par->username); + RFREE(par); return(0); } @@ -174,7 +174,7 @@ int nr_ice_component_destroy(nr_ice_component **componentp) nr_ice_pre_answer_request_destroy(&r1); } - free(component); + RFREE(component); return(0); } @@ -1683,7 +1683,7 @@ int nr_ice_component_select_pair(nr_ice_peer_ctx *pctx, nr_ice_component *comp) _status=0; abort: - free(pairs); + RFREE(pairs); return(_status); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_ctx.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_ctx.c index 4a88f4b3fd..b428264e5a 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_ctx.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_ctx.c @@ -104,7 +104,7 @@ int nr_ice_fetch_stun_servers(int ct, nr_ice_stun_server **out) if (r = nr_ip4_port_to_transport_addr(ntohl(addr_int), port, IPPROTO_UDP, &servers[i].addr)) ABORT(r); - free(addr); + RFREE(addr); addr=0; } @@ -112,8 +112,8 @@ int nr_ice_fetch_stun_servers(int ct, nr_ice_stun_server **out) _status=0; abort: - free(addr); - if (_status) free(servers); + RFREE(addr); + if (_status) RFREE(servers); return(_status); } @@ -122,7 +122,7 @@ int nr_ice_ctx_set_stun_servers(nr_ice_ctx *ctx,nr_ice_stun_server *servers,int int _status; if(ctx->stun_servers_cfg){ - free(ctx->stun_servers_cfg); + RFREE(ctx->stun_servers_cfg); ctx->stun_servers_cfg=NULL; ctx->stun_server_ct_cfg=0; } @@ -146,10 +146,10 @@ int nr_ice_ctx_set_turn_servers(nr_ice_ctx *ctx,nr_ice_turn_server *servers,int if(ctx->turn_servers_cfg){ for (int i = 0; i < ctx->turn_server_ct_cfg; i++) { - free(ctx->turn_servers_cfg[i].username); + RFREE(ctx->turn_servers_cfg[i].username); r_data_destroy(&ctx->turn_servers_cfg[i].password); } - free(ctx->turn_servers_cfg); + RFREE(ctx->turn_servers_cfg); ctx->turn_servers_cfg=NULL; ctx->turn_server_ct_cfg=0; } @@ -177,7 +177,7 @@ int nr_ice_ctx_copy_turn_servers(nr_ice_ctx *ctx, nr_ice_turn_server *servers, i // make copies of the username and password so they aren't freed twice for (i = 0; i < ct; ++i) { - if (!(ctx->turn_servers_cfg[i].username = strdup(servers[i].username))) { + if (!(ctx->turn_servers_cfg[i].username = r_strdup(servers[i].username))) { ABORT(R_NO_MEMORY); } if (r = r_data_create(&ctx->turn_servers_cfg[i].password, @@ -197,7 +197,7 @@ static int nr_ice_ctx_set_local_addrs(nr_ice_ctx *ctx,nr_local_addr *addrs,int c int _status,i,r; if(ctx->local_addrs) { - free(ctx->local_addrs); + RFREE(ctx->local_addrs); ctx->local_addr_ct=0; ctx->local_addrs=0; } @@ -309,7 +309,7 @@ int nr_ice_fetch_turn_servers(int ct, nr_ice_turn_server **out) data.data=0; } - free(addr); + RFREE(addr); addr=0; } @@ -317,9 +317,9 @@ int nr_ice_fetch_turn_servers(int ct, nr_ice_turn_server **out) _status=0; abort: - free(data.data); - free(addr); - if (_status) free(servers); + RFREE(data.data); + RFREE(addr); + if (_status) RFREE(servers); return(_status); } #endif /* USE_TURN */ @@ -339,7 +339,7 @@ int nr_ice_fetch_turn_servers(int ct, nr_ice_turn_server **out) ctx->flags=flags; - if(!(ctx->label=strdup(label))) + if(!(ctx->label=r_strdup(label))) ABORT(R_NO_MEMORY); ctx->gather_handler = gather_handler; @@ -453,39 +453,39 @@ int nr_ice_fetch_turn_servers(int ct, nr_ice_turn_server **out) nr_ice_media_stream_destroy(&s1); } - free(ctx->label); + RFREE(ctx->label); ctx->gather_handler = 0; - free(ctx->stun_servers_cfg); + RFREE(ctx->stun_servers_cfg); - free(ctx->local_addrs); + RFREE(ctx->local_addrs); - free(ctx->target_for_default_local_address_lookup); + RFREE(ctx->target_for_default_local_address_lookup); for (i = 0; i < ctx->turn_server_ct_cfg; i++) { - free(ctx->turn_servers_cfg[i].username); + RFREE(ctx->turn_servers_cfg[i].username); r_data_destroy(&ctx->turn_servers_cfg[i].password); } - free(ctx->turn_servers_cfg); + RFREE(ctx->turn_servers_cfg); f1=STAILQ_FIRST(&ctx->foundations); while(f1){ f2=STAILQ_NEXT(f1,entry); - free(f1); + RFREE(f1); f1=f2; } STAILQ_FOREACH_SAFE(id1, &ctx->ids, entry, id2){ STAILQ_REMOVE(&ctx->ids,id1,nr_ice_stun_id_,entry); - free(id1); + RFREE(id1); } nr_resolver_destroy(&ctx->resolver); nr_interface_prioritizer_destroy(&ctx->interface_prioritizer); nr_socket_factory_destroy(&ctx->socket_factory); - free(ctx); + RFREE(ctx); *ctxp=0; } @@ -843,7 +843,7 @@ int nr_ice_set_target_for_default_local_address_lookup(nr_ice_ctx *ctx, const ch int r,_status; if (ctx->target_for_default_local_address_lookup) { - free(ctx->target_for_default_local_address_lookup); + RFREE(ctx->target_for_default_local_address_lookup); ctx->target_for_default_local_address_lookup=0; } @@ -851,7 +851,7 @@ int nr_ice_set_target_for_default_local_address_lookup(nr_ice_ctx *ctx, const ch ABORT(R_NO_MEMORY); if ((r=nr_str_port_to_transport_addr(target_ip, target_port, IPPROTO_UDP, ctx->target_for_default_local_address_lookup))) { - free(ctx->target_for_default_local_address_lookup); + RFREE(ctx->target_for_default_local_address_lookup); ctx->target_for_default_local_address_lookup=0; ABORT(r); } @@ -1103,13 +1103,13 @@ int nr_ice_get_new_ice_ufrag(char** ufrag) if(r=nr_ice_random_string(buf,ICE_UFRAG_LEN)) ABORT(r); - if(!(*ufrag=strdup(buf))) + if(!(*ufrag=r_strdup(buf))) ABORT(r); _status=0; abort: if(_status) { - free(*ufrag); + RFREE(*ufrag); *ufrag = 0; } return(_status); @@ -1122,13 +1122,13 @@ int nr_ice_get_new_ice_pwd(char** pwd) if(r=nr_ice_random_string(buf,ICE_PWD_LEN)) ABORT(r); - if(!(*pwd=strdup(buf))) + if(!(*pwd=r_strdup(buf))) ABORT(r); _status=0; abort: if(_status) { - free(*pwd); + RFREE(*pwd); *pwd = 0; } return(_status); diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_media_stream.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_media_stream.c index a55ddca0f9..90e278bedb 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_media_stream.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_media_stream.c @@ -54,13 +54,13 @@ int nr_ice_media_stream_create(nr_ice_ctx *ctx,const char *label,const char *ufr if(!(stream=RCALLOC(sizeof(nr_ice_media_stream)))) ABORT(R_NO_MEMORY); - if(!(stream->label=strdup(label))) + if(!(stream->label=r_strdup(label))) ABORT(R_NO_MEMORY); - if(!(stream->ufrag=strdup(ufrag))) + if(!(stream->ufrag=r_strdup(ufrag))) ABORT(R_NO_MEMORY); - if(!(stream->pwd=strdup(pwd))) + if(!(stream->pwd=r_strdup(pwd))) ABORT(R_NO_MEMORY); stream->ctx=ctx; @@ -100,7 +100,7 @@ int nr_ice_media_stream_create(nr_ice_ctx *ctx,const char *label,const char *ufr nr_ice_turn_server *dst = &stream->turn_servers[i]; nr_ice_turn_server *src = &ctx->turn_servers_cfg[i]; memcpy(&dst->turn_server, &src->turn_server, sizeof(nr_ice_stun_server)); - dst->username = strdup(src->username); + dst->username = r_strdup(src->username); r_data_create(&dst->password, src->password->data, src->password->len); } stream->turn_server_ct = ctx->turn_server_ct_cfg; @@ -140,26 +140,26 @@ int nr_ice_media_stream_destroy(nr_ice_media_stream **streamp) nr_ice_candidate_pair_destroy(&p1); } - free(stream->label); + RFREE(stream->label); - free(stream->ufrag); - free(stream->pwd); - free(stream->r2l_user); - free(stream->l2r_user); + RFREE(stream->ufrag); + RFREE(stream->pwd); + RFREE(stream->r2l_user); + RFREE(stream->l2r_user); r_data_zfree(&stream->r2l_pass); r_data_zfree(&stream->l2r_pass); - free(stream->stun_servers); + RFREE(stream->stun_servers); for (int i = 0; i < stream->turn_server_ct; i++) { - free(stream->turn_servers[i].username); + RFREE(stream->turn_servers[i].username); r_data_destroy(&stream->turn_servers[i].password); } - free(stream->turn_servers); + RFREE(stream->turn_servers); if(stream->timer) NR_async_timer_cancel(stream->timer); - free(stream); + RFREE(stream); return(0); } @@ -228,7 +228,7 @@ int nr_ice_media_stream_get_attributes(nr_ice_media_stream *stream, char ***attr if(!(attrs=RCALLOC(sizeof(char *)*attrct))) ABORT(R_NO_MEMORY); for(index=0;indexufrag); attrs[index++]=tmp; - if(!(tmp=(char*)malloc(100))) + if(!(tmp=RMALLOC(100))) ABORT(R_NO_MEMORY); snprintf(tmp,100,"ice-pwd:%s",stream->pwd); attrs[index++]=tmp; @@ -278,9 +278,9 @@ int nr_ice_media_stream_get_attributes(nr_ice_media_stream *stream, char ***attr if(_status){ if(attrs){ for(index=0;indexlabel=strdup(orig))) + if(!(cand->label=r_strdup(orig))) ABORT(R_NO_MEMORY); cand->ctx=ctx; @@ -358,8 +356,8 @@ nr_ice_peer_candidate_from_attribute(nr_ice_ctx *ctx,char *orig,nr_ice_media_str nr_ice_candidate_destroy(&cand); } - free(connection_address); - free(rel_addr); + RFREE(connection_address); + RFREE(rel_addr); return(_status); } @@ -382,7 +380,7 @@ nr_ice_peer_ctx_parse_media_stream_attribute(nr_ice_peer_ctx *pctx, nr_ice_media if (*str == '\0') ABORT(R_BAD_DATA); - free(stream->ufrag); + RFREE(stream->ufrag); if ((r=grab_token(&str, &stream->ufrag))) ABORT(r); } @@ -395,7 +393,7 @@ nr_ice_peer_ctx_parse_media_stream_attribute(nr_ice_peer_ctx *pctx, nr_ice_media if (*str == '\0') ABORT(R_BAD_DATA); - free(stream->pwd); + RFREE(stream->pwd); if ((r=grab_token(&str, &stream->pwd))) ABORT(r); } @@ -488,7 +486,7 @@ nr_ice_peer_ctx_parse_global_attributes(nr_ice_peer_ctx *pctx, char **attrs, int #endif component_id = 0; /* prevent free */ - free(connection_address); + RFREE(connection_address); connection_address = 0; /* prevent free */ } } @@ -532,7 +530,7 @@ nr_ice_peer_ctx_parse_global_attributes(nr_ice_peer_ctx *pctx, char **attrs, int skip_whitespace(&str); //TODO: for now, just throw away; later put somewhere - free(ice_option_tag); + RFREE(ice_option_tag); ice_option_tag = 0; /* prevent free */ } @@ -558,9 +556,9 @@ nr_ice_peer_ctx_parse_global_attributes(nr_ice_peer_ctx *pctx, char **attrs, int r_log(LOG_ICE,LOG_WARNING,"ICE-PEER(%s): Error parsing attribute: %s",pctx->label,orig); } - free(connection_address); - free(component_id); - free(ice_option_tag); + RFREE(connection_address); + RFREE(component_id); + RFREE(ice_option_tag); return(_status); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_peer_ctx.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_peer_ctx.c index 8bd04b80ff..bfa1fcf44b 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_peer_ctx.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_peer_ctx.c @@ -56,7 +56,7 @@ int nr_ice_peer_ctx_create(nr_ice_ctx *ctx, nr_ice_handler *handler,char *label, pctx->state = NR_ICE_PEER_STATE_UNPAIRED; - if(!(pctx->label=strdup(label))) + if(!(pctx->label=r_strdup(label))) ABORT(R_NO_MEMORY); pctx->ctx=ctx; @@ -187,7 +187,7 @@ static int nr_ice_ctx_parse_candidate(nr_ice_peer_ctx *pctx, nr_ice_media_stream cand->trickled = trickled; if (mdns_addr) { - cand->mdns_addr = strdup(mdns_addr); + cand->mdns_addr = r_strdup(mdns_addr); if (!cand->mdns_addr) { ABORT(R_NO_MEMORY); } @@ -496,7 +496,7 @@ int nr_ice_peer_ctx_disable_component(nr_ice_peer_ctx *pctx, nr_ice_media_stream pctx->handler = 0; NR_async_timer_cancel(pctx->connected_cb_timer); - free(pctx->label); + RFREE(pctx->label); STAILQ_FOREACH_SAFE(str1, &pctx->peer_streams, entry, str2){ STAILQ_REMOVE(&pctx->peer_streams,str1,nr_ice_media_stream_,entry); @@ -511,7 +511,7 @@ int nr_ice_peer_ctx_disable_component(nr_ice_peer_ctx *pctx, nr_ice_media_stream pctx->trickle_grace_period_timer=0; } - free(pctx); + RFREE(pctx); *pctxp=0; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_socket.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_socket.c index 685debf77c..a6c8513300 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_socket.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/ice/ice_socket.c @@ -110,7 +110,7 @@ static void nr_ice_socket_readable_cb(NR_SOCKET s, int how, void *cb_arg) /* This has been deleted, prune... */ case NR_ICE_STUN_NONE: TAILQ_REMOVE(&sock->stun_ctxs,sc1,entry); - free(sc1); + RFREE(sc1); break; case NR_ICE_STUN_CLIENT: @@ -243,7 +243,7 @@ int nr_ice_socket_create(nr_ice_ctx *ctx,nr_ice_component *comp, nr_socket *nsoc _status=0; abort: - if(_status) free(sock); + if(_status) RFREE(sock); return(_status); } @@ -268,10 +268,10 @@ int nr_ice_socket_destroy(nr_ice_socket **isockp) /* Now clean up the STUN ctxs */ TAILQ_FOREACH_SAFE(s1, &isock->stun_ctxs, entry, s2){ TAILQ_REMOVE(&isock->stun_ctxs, s1, entry); - free(s1); + RFREE(s1); } - free(isock); + RFREE(isock); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_interface_prioritizer.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_interface_prioritizer.c index e80ffb371d..83a96739b3 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_interface_prioritizer.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_interface_prioritizer.c @@ -66,7 +66,7 @@ int nr_interface_prioritizer_destroy(nr_interface_prioritizer **ifpp) ifp = *ifpp; *ifpp = 0; ifp->vtbl->destroy(&ifp->obj); - free(ifp); + RFREE(ifp); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_resolver.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_resolver.c index 2bfec14374..6a49086793 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_resolver.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_resolver.c @@ -65,7 +65,7 @@ int nr_resolver_destroy(nr_resolver **resolverp) resolver->vtbl->destroy(&resolver->obj); - free(resolver); + RFREE(resolver); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket.c index 488b8b2514..c9867610a6 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket.c @@ -75,7 +75,7 @@ int nr_socket_destroy(nr_socket **sockp) if (sock->vtbl) sock->vtbl->destroy(&sock->obj); - free(sock); + RFREE(sock); return(0); } @@ -176,7 +176,7 @@ int nr_socket_factory_destroy(nr_socket_factory **factorypp) factoryp = *factorypp; *factorypp = NULL; factoryp->vtbl->destroy(&factoryp->obj); - free(factoryp); + RFREE(factoryp); return (0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_multi_tcp.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_multi_tcp.c index d3207845a2..9b2489b214 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_multi_tcp.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_multi_tcp.c @@ -66,7 +66,7 @@ static int nr_tcp_socket_ctx_destroy(nr_tcp_socket_ctx **objp) nr_socket_destroy(&sock->inner); - free(sock); + RFREE(sock); return(0); } @@ -462,7 +462,7 @@ static int nr_socket_multi_tcp_destroy(void **objp) nr_tcp_socket_ctx_destroy(&tcpsock); } - free(sock); + RFREE(sock); return 0; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_wrapper.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_wrapper.c index 0a4d39d893..4340c40752 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_wrapper.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/nr_socket_wrapper.c @@ -77,7 +77,7 @@ int nr_socket_wrapper_factory_destroy(nr_socket_wrapper_factory **wrapperp) if (wrapper->vtbl) wrapper->vtbl->destroy(&wrapper->obj); - free(wrapper); + RFREE(wrapper); return 0; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr.c index 8e21096fb7..efedb3782a 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr.c @@ -281,9 +281,6 @@ int nr_transport_addr_get_addrstring(const nr_transport_addr *addr, char *str, i int _status; if (addr->fqdn[0]) { - if (maxlen <= (int)(strlen(addr->fqdn))) { - ABORT(R_BAD_ARGS); - } strncpy(str, addr->fqdn, maxlen); } else { const char* res; diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr_reg.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr_reg.c index 5614b3c886..10f93f1947 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr_reg.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/net/transport_addr_reg.c @@ -116,9 +116,9 @@ nr_reg_get_transport_addr(NR_registry prefix, int keep, nr_transport_addr *addr) _status=0; abort: - free(protocol); - free(ifname); - free(address); + RFREE(protocol); + RFREE(ifname); + RFREE(address); return(_status); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-win32.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-win32.c index c1715f8b9f..a1b0cd9f0a 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-win32.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-win32.c @@ -115,7 +115,7 @@ stun_getaddrs_filtered(nr_local_addr addrs[], int maxaddrs, int *count) /* According to MSDN (see above) we have try GetAdapterAddresses() multiple times */ for (n = 0; n < 5; n++) { - AdapterAddresses = (PIP_ADAPTER_ADDRESSES) malloc(buflen); + AdapterAddresses = (PIP_ADAPTER_ADDRESSES) RMALLOC(buflen); if (AdapterAddresses == NULL) { r_log(NR_LOG_STUN, LOG_ERR, "Error allocating buf for GetAdaptersAddresses()"); ABORT(R_NO_MEMORY); @@ -126,7 +126,7 @@ stun_getaddrs_filtered(nr_local_addr addrs[], int maxaddrs, int *count) break; } r_log(NR_LOG_STUN, LOG_ERR, "GetAdaptersAddresses() returned error (%d)", r); - free(AdapterAddresses); + RFREE(AdapterAddresses); AdapterAddresses = NULL; } @@ -197,7 +197,7 @@ stun_getaddrs_filtered(nr_local_addr addrs[], int maxaddrs, int *count) _status = 0; abort: - free(AdapterAddresses); + RFREE(AdapterAddresses); return _status; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c index e7c3b5687e..51f72f4179 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs.c @@ -160,7 +160,7 @@ nr_stun_filter_addrs(nr_local_addr addrs[], int remove_loopback, int remove_link nr_local_addr *tmp = 0; int dest_index = 0; - tmp = (nr_local_addr*)malloc(*count * sizeof(*tmp)); + tmp = RMALLOC(*count * sizeof(*tmp)); if (!tmp) ABORT(R_NO_MEMORY); @@ -187,7 +187,7 @@ nr_stun_filter_addrs(nr_local_addr addrs[], int remove_loopback, int remove_link _status = 0; abort: - free(tmp); + RFREE(tmp); return _status; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_buffered_stun.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_buffered_stun.c index 4b6a375a53..ee734c887e 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_buffered_stun.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_buffered_stun.c @@ -163,7 +163,7 @@ int nr_socket_buffered_stun_create(nr_socket *inner, int max_pending, } /* TODO(ekr@rtfm.com): Check this */ - if (!(sock->buffer = (UCHAR*)malloc(sock->buffer_size))) + if (!(sock->buffer = RMALLOC(sock->buffer_size))) ABORT(R_NO_MEMORY); sock->read_state = NR_ICE_SOCKET_READ_NONE; @@ -200,7 +200,7 @@ int nr_socket_buffered_stun_destroy(void **objp) *objp = 0; /* Free the buffer if needed */ - free(sock->buffer); + RFREE(sock->buffer); /* Cancel waiting on the socket */ if (sock->inner && !nr_socket_getfd(sock->inner, &fd)) { @@ -211,7 +211,7 @@ int nr_socket_buffered_stun_destroy(void **objp) nr_p_buf_free_chain(sock->p_bufs, &sock->pending_writes); nr_p_buf_ctx_destroy(&sock->p_bufs); nr_socket_destroy(&sock->inner); - free(sock); + RFREE(sock); return 0; } @@ -239,7 +239,7 @@ static int nr_socket_buffered_stun_sendto(void *obj,const void *msg, size_t len, if (len > NR_MAX_FRAME_SIZE) ABORT(R_FAILED); - if (!(frame = (nr_frame_header*)malloc(len + sizeof(nr_frame_header)))) + if (!(frame = RMALLOC(len + sizeof(nr_frame_header)))) ABORT(R_NO_MEMORY); frame->frame_length = htons(len); @@ -256,7 +256,7 @@ static int nr_socket_buffered_stun_sendto(void *obj,const void *msg, size_t len, _status=0; abort: - free(frame); + RFREE(frame); return _status; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_turn.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_turn.c index 8092d209b5..1a0162b13e 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_turn.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/nr_socket_turn.c @@ -111,7 +111,7 @@ static int nr_socket_turn_destroy(void **objp) /* we don't own the socket, so don't destroy it */ - free(sturn); + RFREE(sturn); _status=0; return(_status); diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_build.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_build.c index 1a81027828..416bd80b6f 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_build.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_build.c @@ -95,7 +95,7 @@ nr_stun_form_request_or_indication(int mode, int msg_type, nr_stun_message **msg _status=0; abort: - if (_status) free(req); + if (_status) RFREE(req); return _status; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.c index 1dd01f9ad7..50b9f74a5b 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.c @@ -63,7 +63,7 @@ int nr_stun_client_ctx_create(char *label, nr_socket *sock, nr_transport_addr *p ctx->state=NR_STUN_CLIENT_STATE_INITTED; - if(!(ctx->label=strdup(label))) + if(!(ctx->label=r_strdup(label))) ABORT(R_NO_MEMORY); ctx->sock=sock; @@ -832,16 +832,6 @@ int nr_stun_client_process_response(nr_stun_client_ctx *ctx, UCHAR *msg, int len return(_status); } -static void nr_stun_client_ctx_destroy_final(NR_SOCKET s, int b, void *cb_arg) - { - nr_stun_client_ctx *ctx=(nr_stun_client_ctx*)cb_arg; - free(ctx->nonce); - free(ctx->realm); - - free(ctx->label); - free(ctx); - } - int nr_stun_client_ctx_destroy(nr_stun_client_ctx **ctxp) { nr_stun_client_ctx *ctx; @@ -853,7 +843,13 @@ int nr_stun_client_ctx_destroy(nr_stun_client_ctx **ctxp) *ctxp=0; nr_stun_client_reset(ctx); - NR_ASYNC_TIMER_SET(0, nr_stun_client_ctx_destroy_final, ctx, &ctx->destroy_timer_handle); + + RFREE(ctx->nonce); + RFREE(ctx->realm); + + RFREE(ctx->label); + RFREE(ctx); + return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.h b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.h index 2870edaa7e..0cc9045e2a 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.h +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_client_ctx.h @@ -176,7 +176,6 @@ struct nr_stun_client_ctx_ { UINT4 mapped_addr_check_mask; /* What checks to run on mapped addresses */ int timeout_ms; struct timeval timer_set; - void *destroy_timer_handle; NR_async_cb finished_cb; void *cb_arg; nr_stun_message *request; diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_msg.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_msg.c index 2d9193c7a2..7e01686109 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_msg.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_msg.c @@ -102,7 +102,7 @@ nr_stun_message_destroy(nr_stun_message **msg) nr_stun_message_attribute_destroy(*msg, &attr); } - free(*msg); + RFREE(*msg); *msg = 0; } @@ -141,7 +141,7 @@ nr_stun_message_attribute_destroy(nr_stun_message *msg, nr_stun_message_attribut a = *attr; TAILQ_REMOVE(&msg->attributes, a, entry); - free(a); + RFREE(a); *attr = 0; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_proc.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_proc.c index 17ae910053..80b6444b1a 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_proc.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_proc.c @@ -156,7 +156,7 @@ nr_stun_process_request(nr_stun_message *req, nr_stun_message *res) /* unrecognized attribute */ /* should never happen, but truncate if it ever were to occur */ - if (unknown_attributes.num_attributes >= NR_STUN_MAX_UNKNOWN_ATTRIBUTES) + if (unknown_attributes.num_attributes > NR_STUN_MAX_UNKNOWN_ATTRIBUTES) break; unknown_attributes.attribute[unknown_attributes.num_attributes++] = attr->type; @@ -421,7 +421,7 @@ nr_stun_add_realm_and_nonce(int new_nonce, nr_stun_server_client *clnt, nr_stun_ #ifdef USE_TURN assert(_status == 0); /* TODO: !nn! cleanup after I reimplmement TURN */ #endif - free(realm); + RFREE(realm); return _status; } @@ -510,8 +510,8 @@ nr_stun_receive_response_long_term_auth(nr_stun_message *res, nr_stun_client_ctx /* drop thru */ case NR_STUN_MAGIC_COOKIE: if (nr_stun_message_has_attribute(res, NR_STUN_ATTR_REALM, &attr)) { - free(ctx->realm); - ctx->realm = strdup(attr->u.realm); + RFREE(ctx->realm); + ctx->realm = r_strdup(attr->u.realm); if (!ctx->realm) ABORT(R_NO_MEMORY); } @@ -521,8 +521,8 @@ nr_stun_receive_response_long_term_auth(nr_stun_message *res, nr_stun_client_ctx } if (nr_stun_message_has_attribute(res, NR_STUN_ATTR_NONCE, &attr)) { - free(ctx->nonce); - ctx->nonce = strdup(attr->u.nonce); + RFREE(ctx->nonce); + ctx->nonce = r_strdup(attr->u.nonce); if (!ctx->nonce) ABORT(R_NO_MEMORY); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_server_ctx.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_server_ctx.c index 5a80747448..b92b6b5ab6 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_server_ctx.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/stun_server_ctx.c @@ -52,7 +52,7 @@ int nr_stun_server_ctx_create(char *label, nr_stun_server_ctx **ctxp) if(!(ctx=RCALLOC(sizeof(nr_stun_server_ctx)))) ABORT(R_NO_MEMORY); - if(!(ctx->label=strdup(label))) + if(!(ctx->label=r_strdup(label))) ABORT(R_NO_MEMORY); STAILQ_INIT(&ctx->clients); @@ -80,8 +80,8 @@ int nr_stun_server_ctx_destroy(nr_stun_server_ctx **ctxp) nr_stun_server_destroy_client(ctx->default_client); - free(ctx->label); - free(ctx); + RFREE(ctx->label); + RFREE(ctx); return(0); } @@ -94,10 +94,10 @@ static int nr_stun_server_client_create(nr_stun_server_ctx *ctx, char *client_la if(!(clnt=RCALLOC(sizeof(nr_stun_server_client)))) ABORT(R_NO_MEMORY); - if(!(clnt->label=strdup(client_label))) + if(!(clnt->label=r_strdup(client_label))) ABORT(R_NO_MEMORY); - if(!(clnt->username=strdup(user))) + if(!(clnt->username=r_strdup(user))) ABORT(R_NO_MEMORY); if(r=r_data_copy(&clnt->password,pass)) @@ -416,11 +416,11 @@ static int nr_stun_server_destroy_client(nr_stun_server_client *clnt) if (!clnt) return 0; - free(clnt->label); - free(clnt->username); + RFREE(clnt->label); + RFREE(clnt->username); r_data_zfree(&clnt->password); - free(clnt); + RFREE(clnt); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/turn_client_ctx.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/turn_client_ctx.c index 2e0416ddaa..cdab53dd1c 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/turn_client_ctx.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/stun/turn_client_ctx.c @@ -116,7 +116,7 @@ abort: void nr_transport_addr_listnode_destroy(nr_transport_addr_listnode **listnode) { - free(*listnode); + RFREE(*listnode); *listnode = 0; } @@ -179,8 +179,8 @@ static int nr_turn_stun_ctx_destroy(nr_turn_stun_ctx **ctxp) *ctxp = 0; nr_stun_client_ctx_destroy(&ctx->stun); - free(ctx->realm); - free(ctx->nonce); + RFREE(ctx->realm); + RFREE(ctx->nonce); while (!STAILQ_EMPTY(&ctx->addresses_tried)) { nr_transport_addr_listnode *listnode = STAILQ_FIRST(&ctx->addresses_tried); @@ -188,7 +188,7 @@ static int nr_turn_stun_ctx_destroy(nr_turn_stun_ctx **ctxp) nr_transport_addr_listnode_destroy(&listnode); } - free(ctx); + RFREE(ctx); return 0; } @@ -198,25 +198,25 @@ static int nr_turn_stun_set_auth_params(nr_turn_stun_ctx *ctx, { int _status; - free(ctx->realm); - free(ctx->nonce); + RFREE(ctx->realm); + RFREE(ctx->nonce); assert(realm); if (!realm) ABORT(R_BAD_ARGS); - ctx->realm=strdup(realm); + ctx->realm=r_strdup(realm); if (!ctx->realm) ABORT(R_NO_MEMORY); assert(nonce); if (!nonce) ABORT(R_BAD_ARGS); - ctx->nonce=strdup(nonce); + ctx->nonce=r_strdup(nonce); if (!ctx->nonce) ABORT(R_NO_MEMORY); - free(ctx->stun->realm); - ctx->stun->realm = strdup(ctx->realm); + RFREE(ctx->stun->realm); + ctx->stun->realm = r_strdup(ctx->realm); if (!ctx->stun->realm) ABORT(R_NO_MEMORY); @@ -434,15 +434,15 @@ static void nr_turn_stun_ctx_cb(NR_SOCKET s, int how, void *arg) /* Save the realm and nonce */ if (ctx->stun->realm && (!ctx->tctx->realm || strcmp(ctx->stun->realm, ctx->tctx->realm))) { - free(ctx->tctx->realm); - ctx->tctx->realm = strdup(ctx->stun->realm); + RFREE(ctx->tctx->realm); + ctx->tctx->realm = r_strdup(ctx->stun->realm); if (!ctx->tctx->realm) ABORT(R_NO_MEMORY); } if (ctx->stun->nonce && (!ctx->tctx->nonce || strcmp(ctx->stun->nonce, ctx->tctx->nonce))) { - free(ctx->tctx->nonce); - ctx->tctx->nonce = strdup(ctx->stun->nonce); + RFREE(ctx->tctx->nonce); + ctx->tctx->nonce = r_strdup(ctx->stun->nonce); if (!ctx->tctx->nonce) ABORT(R_NO_MEMORY); } @@ -545,11 +545,11 @@ int nr_turn_client_ctx_create(const char* label, nr_socket* sock, STAILQ_INIT(&ctx->stun_ctxs); STAILQ_INIT(&ctx->permissions); - if(!(ctx->label=strdup(label))) + if(!(ctx->label=r_strdup(label))) ABORT(R_NO_MEMORY); ctx->sock=sock; - ctx->username = strdup(username); + ctx->username = r_strdup(username); if (!ctx->username) ABORT(R_NO_MEMORY); @@ -595,17 +595,17 @@ nr_turn_client_ctx_destroy(nr_turn_client_ctx **ctxp) nr_turn_client_deallocate(ctx); /* Cancel frees the rest of our data */ - free(ctx->label); + RFREE(ctx->label); ctx->label = 0; nr_turn_client_cancel(ctx); - free(ctx->username); + RFREE(ctx->username); ctx->username = 0; r_data_destroy(&ctx->password); - free(ctx->nonce); + RFREE(ctx->nonce); ctx->nonce = 0; - free(ctx->realm); + RFREE(ctx->realm); ctx->realm = 0; /* Destroy the STUN client ctxs */ @@ -622,7 +622,7 @@ nr_turn_client_ctx_destroy(nr_turn_client_ctx **ctxp) nr_turn_permission_destroy(&perm); } - free(ctx); + RFREE(ctx); return(0); } @@ -1269,7 +1269,7 @@ static int nr_turn_permission_destroy(nr_turn_permission **permp) perm = *permp; *permp = 0; - free(perm); + RFREE(perm); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/util/ice_util.c b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/util/ice_util.c index 86b30f845c..249cfe350f 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nICEr/src/util/ice_util.c +++ b/icecat/dom/media/webrtc/transport/third_party/nICEr/src/util/ice_util.c @@ -49,7 +49,7 @@ int nr_concat_strings(char **outp,...) va_end(ap); - if(!(out=(char*)malloc(len+1))) + if(!(out=RMALLOC(len+1))) ABORT(R_NO_MEMORY); *outp=out; diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp b/icecat/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp index 1325b2564a..c3f88af4bc 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/nrappkit.gyp @@ -54,6 +54,7 @@ # './src/util/libekr/r_list.c', # './src/util/libekr/r_list.h', './src/util/libekr/r_macros.h', + './src/util/libekr/r_memory.c', './src/util/libekr/r_memory.h', './src/util/libekr/r_replace.c', './src/util/libekr/r_thread.h', diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c index a2d338c1f2..bb47cda879 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/log/r_log.c @@ -183,7 +183,7 @@ int r_log_register(char *facility_name,int *log_facility) i=log_type_ct; /* Initial registration completed, increment log_type_ct */ - log_types[i].facility_name=strdup(facility_name); + log_types[i].facility_name=r_strdup(facility_name); *log_facility=log_type_ct; log_type_ct++; @@ -223,7 +223,7 @@ int r_log_register(char *facility_name,int *log_facility) _status=0; abort: if(_status) - free(buf); + RFREE(buf); return(_status); } @@ -313,7 +313,7 @@ int r_dump(int facility,int level,char *name,char *data,int len) if(!r_logging(facility,level)) return(0); - hex=(char*)malloc((len*2)+1); + hex=RMALLOC((len*2)+1); if (!hex) return(R_FAILED); @@ -325,7 +325,7 @@ int r_dump(int facility,int level,char *name,char *data,int len) else r_log(facility,level,"%s",hex); - free(hex); + RFREE(hex); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/c2ru.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/c2ru.c index 8c05b271fc..3e71ca37d9 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/c2ru.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/c2ru.c @@ -170,13 +170,33 @@ abort: return (_status); } +#define NRFREE(func, type) \ +int \ +func(type *in) \ +{ \ + if (in) \ + RFREE(in); \ + return 0; \ +} + +NRFREE(nr_c2ru_free_char, char) +NRFREE(nr_c2ru_free_uchar, UCHAR) +NRFREE(nr_c2ru_free_int2, INT2) +NRFREE(nr_c2ru_free_uint2, UINT2) +NRFREE(nr_c2ru_free_int4, INT4) +NRFREE(nr_c2ru_free_uint4, UINT4) +NRFREE(nr_c2ru_free_int8, INT8) +NRFREE(nr_c2ru_free_uint8, UINT8) +NRFREE(nr_c2ru_free_double, double) + + int nr_c2ru_free_string(char **in) { if (*in) - free(*in); + RFREE(*in); if (in) - free(in); + RFREE(in); return 0; } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.c index 07b65675c1..3134ad1536 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.c @@ -245,7 +245,7 @@ NR_reg_get_child_registry(NR_registry parent, unsigned int i, NR_registry child) _status=0; abort: - free(children); + RFREE(children); return(_status); } @@ -268,7 +268,7 @@ NR_reg_dump() return(_status); } -// convenience methods, call free on the returned data +// convenience methods, call RFREE on the returned data int NR_reg_alloc_data(NR_registry name, Data *data) { @@ -280,7 +280,7 @@ NR_reg_alloc_data(NR_registry name, Data *data) if ((r=NR_reg_get_length(name, &length))) ABORT(r); - if (!(tmp = (UCHAR*)malloc(length))) + if (!(tmp = (void*)RMALLOC(length))) ABORT(R_NO_MEMORY); if ((r=NR_reg_get_bytes(name, tmp, length, &sanity_check))) @@ -294,7 +294,7 @@ NR_reg_alloc_data(NR_registry name, Data *data) _status=0; abort: if (_status) { - if (tmp) free(tmp); + if (tmp) RFREE(tmp); } return(_status); } @@ -309,7 +309,7 @@ NR_reg_alloc_string(NR_registry name, char **data) if ((r=NR_reg_get_length(name, &length))) ABORT(r); - if (!(tmp = (char*)malloc(length+1))) + if (!(tmp = (void*)RMALLOC(length+1))) ABORT(R_NO_MEMORY); if ((r=NR_reg_get_string(name, tmp, length+1))) @@ -322,7 +322,7 @@ NR_reg_alloc_string(NR_registry name, char **data) _status=0; abort: if (_status) { - if (tmp) free(tmp); + if (tmp) RFREE(tmp); } return(_status); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.h b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.h index 6157fc1ee6..b48893ba72 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.h +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry.h @@ -137,7 +137,7 @@ int NR_reg_get_children(NR_registry parent, NR_registry children[], size_t size, int NR_reg_dump(void); -/* convenience methods, call free on the returned data */ +/* convenience methods, call RFREE on the returned data */ int NR_reg_alloc_data(NR_registry name, Data *data); int NR_reg_alloc_string(NR_registry name, char **data); diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry_local.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry_local.c index 44b3e64d9f..b3b7ed1948 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry_local.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registry_local.c @@ -297,7 +297,7 @@ nr_reg_local_dump_print(void *ptr, r_assoc_iterator *iter, char *prefix, char *n else r_log(NR_LOG_REGISTRY, LOG_INFO, "%s: %s", name, data); if (freeit) - free(data); + RFREE(data); } _status=0; @@ -309,7 +309,7 @@ nr_reg_local_dump_print(void *ptr, r_assoc_iterator *iter, char *prefix, char *n int nr_reg_rfree(void *ptr) { - free(ptr); + RFREE(ptr); return 0; } @@ -378,7 +378,7 @@ nr_reg_insert_node(char *name, void *node) nr_reg_type_name(((nr_registry_node*)node)->type), (_status ? "FAILED" : "succeeded"), data); if (freeit) - free(data); + RFREE(data); } return(_status); } @@ -409,7 +409,7 @@ nr_reg_change_node(char *name, void *node, void *old) nr_reg_type_name(((nr_registry_node*)node)->type), (_status ? "FAILED" : "succeeded"), data); if (freeit) - free(data); + RFREE(data); } return(_status); } @@ -440,7 +440,7 @@ nr_reg_alloc_node_data(char *name, nr_registry_node *node, int *freeit) } if (alloc > 0) { - s = (char*)malloc(alloc); + s = (void*)RMALLOC(alloc); if (!s) return ""; @@ -517,7 +517,7 @@ nr_reg_get(char *name, int type, void *out) _status=0; abort: - if (free_node) free(node); + if (free_node) RFREE(node); return(_status); } @@ -584,7 +584,7 @@ nr_reg_get_array(char *name, unsigned char type, unsigned char *out, size_t size _status=0; abort: - if (node && free_node) free(node); + if (node && free_node) RFREE(node); return(_status); } @@ -661,7 +661,7 @@ nr_reg_set(char *name, int type, void *data) _status=0; abort: if (_status) { - if (node && free_node) free(node); + if (node && free_node) RFREE(node); } return(_status); } @@ -735,7 +735,7 @@ nr_reg_set_parent_registries(char *name) char *parent = 0; char *dot = 0; - if ((parent = strdup(name)) == 0) + if ((parent = r_strdup(name)) == 0) ABORT(R_NO_MEMORY); if ((dot = strrchr(parent, '.')) != 0) { @@ -746,7 +746,7 @@ nr_reg_set_parent_registries(char *name) _status=0; abort: - if (parent) free(parent); + if (parent) RFREE(parent); return(_status); } @@ -896,7 +896,7 @@ nr_reg_local_get_registry(NR_registry name, NR_registry out) _status=0; abort: - if (free_node) free(node); + if (free_node) RFREE(node); return(_status); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registrycb.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registrycb.c index 0c36ad4bda..bd3570cefc 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registrycb.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/registry/registrycb.c @@ -181,7 +181,7 @@ nr_reg_register_callback(NR_registry name, char action, void (*cb)(void *cb_arg, r_log(NR_LOG_REGISTRY, LOG_DEBUG, "register callback %p on '%s' for '%s' %s", cb, name, nr_reg_action_name(action), (_status ? "FAILED" : "succeeded")); if (_status) { - if (create_info && info) free(info); + if (create_info && info) RFREE(info); if (create_assoc && assoc) nr_reg_assoc_destroy(&assoc); } return(_status); @@ -274,7 +274,7 @@ nr_reg_assoc_destroy(void *ptr) int nr_reg_info_free(void *ptr) { - free(ptr); + RFREE(ptr); return 0; } @@ -293,7 +293,7 @@ nr_reg_raise_event_recurse(char *name, char *tmp, int action) int count; if (tmp == 0) { - if (!(tmp = (char*)strdup(name))) + if (!(tmp = (char*)r_strdup(name))) ABORT(R_NO_MEMORY); free_tmp = 1; } @@ -351,7 +351,7 @@ nr_reg_raise_event_recurse(char *name, char *tmp, int action) _status=0; abort: - if (free_tmp && tmp != 0) free(tmp); + if (free_tmp && tmp != 0) RFREE(tmp); return(_status); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_assoc.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_assoc.c index 9c32af4588..95fe4dcd2a 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_assoc.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_assoc.c @@ -160,8 +160,8 @@ int r_assoc_destroy(r_assoc **assocp) for(i=0;isize;i++) destroy_assoc_chain(assoc->chains[i]); - free(assoc->chains); - free(*assocp); + RFREE(assoc->chains); + RFREE(*assocp); return(0); } @@ -176,9 +176,9 @@ static int destroy_assoc_chain(r_assoc_el *chain) if(chain->destroy) chain->destroy(chain->data); - free(chain->key); + RFREE(chain->key); - free(chain); + RFREE(chain); chain=nxt; } @@ -220,7 +220,7 @@ static int copy_assoc_chain(r_assoc_el **knewp, r_assoc_el *old) else ptr->data=old->data; - if(!(ptr->key=(char *)malloc(old->key_len))) + if(!(ptr->key=(char *)RMALLOC(old->key_len))) ABORT(R_NO_MEMORY); memcpy(ptr->key,old->key,ptr->key_len=old->key_len); } @@ -295,7 +295,7 @@ int r_assoc_insert( if(!(new_bucket=(r_assoc_el *)RCALLOC(sizeof(r_assoc_el)))) ABORT(R_NO_MEMORY); - if(!(new_bucket->key=(char *)malloc(len))) + if(!(new_bucket->key=(char *)RMALLOC(len))) ABORT(R_NO_MEMORY); memcpy(new_bucket->key,key,len); new_bucket->key_len=len; @@ -323,8 +323,8 @@ int r_assoc_insert( _status=0; abort: if(_status && new_bucket){ - free(new_bucket->key); - free(new_bucket); + RFREE(new_bucket->key); + RFREE(new_bucket); } return(_status); } @@ -357,8 +357,8 @@ int r_assoc_delete(r_assoc *assoc, char *key, int len) if(bucket->destroy) bucket->destroy(bucket->data); - free(bucket->key); - free(bucket); + RFREE(bucket->key); + RFREE(bucket); assoc->num_elements--; return(0); @@ -479,8 +479,8 @@ int r_assoc_iter_delete(r_assoc_iterator *iter) iter->prev->destroy(iter->prev->data); iter->assoc->num_elements--; - free(iter->prev->key); - free(iter->prev); + RFREE(iter->prev->key); + RFREE(iter->prev); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_data.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_data.c index 1d761b6ef9..ca92c73310 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_data.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_data.c @@ -91,7 +91,7 @@ int r_data_create(Data **dp, const UCHAR *d, size_t l) if(!(d_=(Data *)RCALLOC(sizeof(Data)))) ABORT(R_NO_MEMORY); - if(!(d_->data=(UCHAR *)malloc(l))) + if(!(d_->data=(UCHAR *)RMALLOC(l))) ABORT(R_NO_MEMORY); if (d) { @@ -114,7 +114,7 @@ int r_data_alloc_mem(Data *d, size_t l) { int _status; - if(!(d->data=(UCHAR *)malloc(l))) + if(!(d->data=(UCHAR *)RMALLOC(l))) ABORT(R_NO_MEMORY); d->len=l; @@ -146,7 +146,7 @@ int r_data_alloc(Data **dp, size_t l) int r_data_make(Data *dp, const UCHAR *d, size_t l) { - if(!(dp->data=(UCHAR *)malloc(l))) + if(!(dp->data=(UCHAR *)RMALLOC(l))) ERETURN(R_NO_MEMORY); memcpy(dp->data,d,l); @@ -161,9 +161,9 @@ int r_data_destroy(Data **dp) return(0); if((*dp)->data) - free((*dp)->data); + RFREE((*dp)->data); - free(*dp); + RFREE(*dp); *dp=0; return(0); @@ -179,7 +179,7 @@ int r_data_destroy_v(void *v) d=(Data *)v; r_data_zfree(d); - free(d); + RFREE(d); return(0); } @@ -195,14 +195,14 @@ int r_data_destroy_vp(void **v) r_data_zfree(d); *v=0; - free(d); + RFREE(d); return(0); } int r_data_copy(Data *dst, Data *src) { - if(!(dst->data=(UCHAR *)malloc(src->len))) + if(!(dst->data=(UCHAR *)RMALLOC(src->len))) ERETURN(R_NO_MEMORY); memcpy(dst->data,src->data,dst->len=src->len); return(0); @@ -215,7 +215,7 @@ int r_data_zfree(Data *d) if(!d->data) return(0); memset(d->data,0,d->len); - free(d->data); + RFREE(d->data); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_list.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_list.c index 45c4dd566a..527d39b43a 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_list.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_list.c @@ -133,10 +133,10 @@ int r_list_destroy(listp) el->destroy(&el->data); el_t=el; el=el->next; - free(el_t); + RFREE(el_t); } - free(list); + RFREE(list); *listp=0; return(0); diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_memory.h b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_memory.h index e664a9011c..4357070767 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_memory.h +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/libekr/r_memory.h @@ -40,13 +40,62 @@ #ifndef _r_memory_h #define _r_memory_h +#define R_MALLOC_X 2 + +#include "r_types.h" + +void *r_malloc(int type, size_t size); +void *r_malloc_compat(size_t size); +void *r_calloc(int type,size_t number,size_t size); +void r_free (void *ptr); +void *r_realloc(void *ptr,size_t size); +char *r_strdup(const char *str); +int r_mem_get_usage(UINT4 *usage); +int r_memory_dump_stats(void); + +#ifdef NO_MALLOC_REPLACE + +#ifndef RMALLOC +#define RMALLOC(a) malloc(a) +#endif + #ifndef RCALLOC #define RCALLOC(a) calloc(1,a) #endif +#ifndef RFREE +#define RFREE(a) if(a) free(a) +#endif + #ifndef RREALLOC #define RREALLOC(a,b) realloc(a,b) #endif +#else + + +#ifndef R_MALLOC_TYPE +#define R_MALLOC_TYPE 0 +#endif + +#ifndef RMALLOC +#define RMALLOC(a) r_malloc(R_MALLOC_TYPE,a) +#endif + +#ifndef RCALLOC +#define RCALLOC(a) r_calloc(R_MALLOC_TYPE,1,a) +#endif + +#ifndef RFREE +#define RFREE(a) if(a) r_free(a) +#endif + +#ifndef RREALLOC +#define RREALLOC(a,b) r_realloc(a,b) +#endif + +#endif + + #endif diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/p_buf.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/p_buf.c index 88657a2a72..cac6957554 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/p_buf.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/p_buf.c @@ -78,7 +78,7 @@ int nr_p_buf_ctx_destroy(nr_p_buf_ctx **ctxp) nr_p_buf_destroy_chain(&ctx->free_list); - free(ctx); + RFREE(ctx); *ctxp=0; return(0); @@ -97,7 +97,7 @@ int nr_p_buf_alloc(nr_p_buf_ctx *ctx, nr_p_buf **bufp) else { if(!(buf=(nr_p_buf *)RCALLOC(sizeof(nr_p_buf)))) ABORT(R_NO_MEMORY); - if(!(buf->data=(UCHAR *)malloc(ctx->buf_size))) + if(!(buf->data=(UCHAR *)RMALLOC(ctx->buf_size))) ABORT(R_NO_MEMORY); buf->size=ctx->buf_size; } @@ -195,8 +195,8 @@ static int nr_p_buf_destroy(nr_p_buf *buf) if(!buf) return(0); - free(buf->data); - free(buf); + RFREE(buf->data); + RFREE(buf); return(0); } diff --git a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/util.c b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/util.c index 736d42398f..d92d650b57 100644 --- a/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/util.c +++ b/icecat/dom/media/webrtc/transport/third_party/nrappkit/src/util/util.c @@ -62,7 +62,7 @@ int nr_get_filename(char *base, char *name, char **namep) char *ret=0; int _status; - if(!(ret=(char *)malloc(len))) + if(!(ret=(char *)RMALLOC(len))) ABORT(R_NO_MEMORY); if(base[strlen(base)-1]!='/'){ sprintf(ret,"%s/%s",base,name); diff --git a/icecat/dom/media/webvtt/TextTrack.cpp b/icecat/dom/media/webvtt/TextTrack.cpp index cdd8f1a6e9..692d872f96 100644 --- a/icecat/dom/media/webvtt/TextTrack.cpp +++ b/icecat/dom/media/webvtt/TextTrack.cpp @@ -79,7 +79,6 @@ JSObject* TextTrack::WrapObject(JSContext* aCx, } void TextTrack::SetMode(TextTrackMode aValue) { - RefPtr kungFuDeathGrip = this; if (mMode == aValue) { return; } diff --git a/icecat/dom/network/TCPServerSocketParent.cpp b/icecat/dom/network/TCPServerSocketParent.cpp index 404c76569f..c73ee7e0ff 100644 --- a/icecat/dom/network/TCPServerSocketParent.cpp +++ b/icecat/dom/network/TCPServerSocketParent.cpp @@ -25,11 +25,6 @@ NS_INTERFACE_MAP_END void TCPServerSocketParent::ReleaseIPDLReference() { MOZ_ASSERT(mIPCOpen); - NS_ASSERTION(mIPCOpen, - "ReleaseIPDLReference called without matching AddIPDLReference"); - if (!mIPCOpen) { - return; - } mIPCOpen = false; this->Release(); } @@ -75,9 +70,8 @@ nsresult TCPServerSocketParent::SendCallbackAccept(TCPSocketParent* socket) { if (mNeckoParent) { if (mNeckoParent->SendPTCPSocketConstructor(socket, host, port)) { - // Call |AddIPDLReference| only on success; on failure IPDL calls - // DeallocPTCPSocketParent which calls ReleaseIPDLReference, guarded - // against the unbalanced case. + // Call |AddIPDLReference| after the consructor message is sent + // successfully, otherwise |socket| could be leaked. socket->AddIPDLReference(); mozilla::Unused << PTCPServerSocketParent::SendCallbackAccept( diff --git a/icecat/dom/network/TCPSocket.cpp b/icecat/dom/network/TCPSocket.cpp index 9198e16365..b1333f127f 100644 --- a/icecat/dom/network/TCPSocket.cpp +++ b/icecat/dom/network/TCPSocket.cpp @@ -10,7 +10,6 @@ #include "TCPSocketParent.h" #include "mozilla/BasePrincipal.h" #include "mozilla/ErrorResult.h" -#include "mozilla/StaticPrefs_dom.h" #include "mozilla/SyncRunnable.h" #include "mozilla/dom/RootedDictionary.h" #include "mozilla/dom/ScriptSettings.h" @@ -1164,10 +1163,6 @@ TCPSocket::Observe(nsISupports* aSubject, const char* aTopic, /* static */ bool TCPSocket::ShouldTCPSocketExist(JSContext* aCx, JSObject* aGlobal) { - if (XRE_IsContentProcess() && - !StaticPrefs::dom_tcpsocket_in_child_enabled()) { - return false; - } JS::Rooted global(aCx, aGlobal); return nsContentUtils::ObjectPrincipal(global)->IsSystemPrincipal(); } diff --git a/icecat/dom/network/TCPSocketParent.cpp b/icecat/dom/network/TCPSocketParent.cpp index 2ce078cc90..dc7bc3c530 100644 --- a/icecat/dom/network/TCPSocketParent.cpp +++ b/icecat/dom/network/TCPSocketParent.cpp @@ -56,11 +56,6 @@ TCPSocketParentBase::~TCPSocketParentBase() = default; void TCPSocketParentBase::ReleaseIPDLReference() { MOZ_ASSERT(mIPCOpen); - NS_ASSERTION(mIPCOpen, - "ReleaseIPDLReference called without matching AddIPDLReference"); - if (!mIPCOpen) { - return; - } mIPCOpen = false; this->Release(); } @@ -83,9 +78,6 @@ NS_IMETHODIMP_(MozExternalRefCountType) TCPSocketParent::Release(void) { mozilla::ipc::IPCResult TCPSocketParent::RecvOpen( const nsString& aHost, const uint16_t& aPort, const bool& aUseSSL, const bool& aUseArrayBuffers) { - if (!StaticPrefs::dom_tcpsocket_in_child_enabled()) { - return IPC_FAIL(this, "tcp socket not enabled"); - } mSocket = new TCPSocket(nullptr, aHost, aPort, aUseSSL, aUseArrayBuffers); mSocket->SetSocketBridgeParent(this); NS_ENSURE_SUCCESS(mSocket->Init(nullptr), IPC_OK()); diff --git a/icecat/dom/network/UDPSocket.cpp b/icecat/dom/network/UDPSocket.cpp index 85132987b4..9f172fff63 100644 --- a/icecat/dom/network/UDPSocket.cpp +++ b/icecat/dom/network/UDPSocket.cpp @@ -159,8 +159,6 @@ void UDPSocket::CloseWithReason(nsresult aReason) { return; } - RefPtr kungFuDeathGrip(this); - if (mOpened) { if (mReadyState == SocketReadyState::Opening) { // reject openedPromise with AbortError if socket is closed without error diff --git a/icecat/dom/network/UDPSocketParent.cpp b/icecat/dom/network/UDPSocketParent.cpp index d5916fe085..d536f3afe4 100644 --- a/icecat/dom/network/UDPSocketParent.cpp +++ b/icecat/dom/network/UDPSocketParent.cpp @@ -307,10 +307,6 @@ mozilla::ipc::IPCResult UDPSocketParent::RecvOutgoingData( return IPC_OK(); } - if (!mFilter && aData.type() == UDPData::TIPCStream) { - return IPC_FAIL(this, "IPCStream payload requires a filter"); - } - nsresult rv; if (mFilter) { if (aAddr.type() != UDPSocketAddr::TNetAddr) { diff --git a/icecat/dom/network/tests/chrome.toml b/icecat/dom/network/tests/chrome.toml index 7a769cff8d..c22fe38572 100644 --- a/icecat/dom/network/tests/chrome.toml +++ b/icecat/dom/network/tests/chrome.toml @@ -1,5 +1,4 @@ [DEFAULT] -prefs = ["dom.tcpsocket_in_child.enabled=true"] support-files = [ "tcpsocket_test.sys.mjs", "test_tcpsocket_client_and_server_basics.js", diff --git a/icecat/dom/reporting/ReportingHeader.cpp b/icecat/dom/reporting/ReportingHeader.cpp index fa15c5c532..7616ba4757 100644 --- a/icecat/dom/reporting/ReportingHeader.cpp +++ b/icecat/dom/reporting/ReportingHeader.cpp @@ -8,7 +8,6 @@ #include #include "js/Array.h" // JS::GetArrayLength, JS::IsArrayObject -#include "js/GCAPI.h" #include "js/JSON.h" #include "js/PropertyAndElement.h" // JS_GetElement #include "mozilla/dom/ReportingBinding.h" @@ -346,7 +345,7 @@ ReportingHeader::ParseReportToHeader(nsIHttpChannel* aChannel, nsIURI* aURI, return nullptr; } - RootedDictionary data(cx); + dom::ReportingHeaderValue data; if (!data.Init(cx, jsonValue)) { LogToConsoleInvalidJSON(aChannel, aURI); return nullptr; diff --git a/icecat/dom/script/ScriptElement.cpp b/icecat/dom/script/ScriptElement.cpp index a65dfcb608..0634de2bf0 100644 --- a/icecat/dom/script/ScriptElement.cpp +++ b/icecat/dom/script/ScriptElement.cpp @@ -85,18 +85,12 @@ ScriptElement::ScriptEvaluated(nsresult aResult, nsIScriptElement* aElement, void ScriptElement::CharacterDataChanged(nsIContent* aContent, const CharacterDataChangeInfo&) { - if (!nsContentUtils::IsInSameAnonymousTree(GetAsContent(), aContent)) { - return; - } MaybeProcessScript(); } void ScriptElement::AttributeChanged(Element* aElement, int32_t aNameSpaceID, nsAtom* aAttribute, int32_t aModType, const nsAttrValue* aOldValue) { - if (aElement != GetAsContent()) { - return; - } // https://html.spec.whatwg.org/#script-processing-model // When a script element el that is not parser-inserted experiences one of the // events listed in the following list, the user agent must immediately @@ -122,17 +116,10 @@ void ScriptElement::AttributeChanged(Element* aElement, int32_t aNameSpaceID, } void ScriptElement::ContentAppended(nsIContent* aFirstNewContent) { - if (!nsContentUtils::IsInSameAnonymousTree(GetAsContent(), - aFirstNewContent)) { - return; - } MaybeProcessScript(); } void ScriptElement::ContentInserted(nsIContent* aChild) { - if (!nsContentUtils::IsInSameAnonymousTree(GetAsContent(), aChild)) { - return; - } MaybeProcessScript(); } diff --git a/icecat/dom/security/ReferrerInfo.cpp b/icecat/dom/security/ReferrerInfo.cpp index 77c6bfa574..74d5641066 100644 --- a/icecat/dom/security/ReferrerInfo.cpp +++ b/icecat/dom/security/ReferrerInfo.cpp @@ -22,16 +22,13 @@ #include "nsStreamUtils.h" #include "ReferrerInfo.h" -#include "ipc/IPCMessageUtilsSpecializations.h" #include "mozilla/BasePrincipal.h" #include "mozilla/ContentBlockingAllowList.h" #include "mozilla/net/CookieJarSettings.h" #include "mozilla/net/HttpBaseChannel.h" #include "mozilla/dom/Document.h" #include "mozilla/dom/Element.h" -#include "mozilla/dom/FetchIPCTypes.h" #include "mozilla/dom/RequestBinding.h" -#include "mozilla/ipc/URIUtils.h" #include "mozilla/StaticPrefs_network.h" #include "mozilla/StorageAccess.h" #include "mozilla/StyleSheet.h" @@ -991,62 +988,6 @@ ReferrerInfo::ReferrerInfo(const ReferrerInfo& rhs) mOverridePolicyByDefault(rhs.mOverridePolicyByDefault), mComputedReferrer(rhs.mComputedReferrer) {} -void ReferrerInfo::Serialize(IPC::MessageWriter* aWriter) const { - MOZ_ASSERT(mInitialized); - nsCOMPtr originalReferrer = mOriginalReferrer; - WriteParam(aWriter, originalReferrer.get()); - WriteParam(aWriter, mPolicy); - WriteParam(aWriter, mOriginalPolicy); - WriteParam(aWriter, mSendReferrer); - WriteParam(aWriter, mOverridePolicyByDefault); - WriteParam(aWriter, mComputedReferrer); -} - -// static -bool ReferrerInfo::Deserialize(IPC::MessageReader* aReader, - RefPtr* aResult) { - RefPtr originalReferrer; - if (!ReadParam(aReader, &originalReferrer)) { - return false; - } - - ReferrerPolicyEnum policy; - if (!ReadParam(aReader, &policy)) { - return false; - } - - ReferrerPolicyEnum originalPolicy; - if (!ReadParam(aReader, &originalPolicy)) { - return false; - } - - bool sendReferrer; - if (!ReadParam(aReader, &sendReferrer)) { - return false; - } - - bool overridePolicyByDefault; - if (!ReadParam(aReader, &overridePolicyByDefault)) { - return false; - } - - Maybe computedReferrer; - if (!ReadParam(aReader, &computedReferrer)) { - return false; - } - - RefPtr info = new ReferrerInfo(); - info->mOriginalReferrer = originalReferrer; - info->mPolicy = policy; - info->mOriginalPolicy = originalPolicy; - info->mSendReferrer = sendReferrer; - info->mInitialized = true; - info->mOverridePolicyByDefault = overridePolicyByDefault; - info->mComputedReferrer = std::move(computedReferrer); - *aResult = info.forget(); - return true; -} - already_AddRefed ReferrerInfo::Clone() const { RefPtr copy(new ReferrerInfo(*this)); return copy.forget(); diff --git a/icecat/dom/security/ReferrerInfo.h b/icecat/dom/security/ReferrerInfo.h index 66a36b0472..82ab8f8c35 100644 --- a/icecat/dom/security/ReferrerInfo.h +++ b/icecat/dom/security/ReferrerInfo.h @@ -14,11 +14,6 @@ #include "mozilla/HashFunctions.h" #include "mozilla/dom/ReferrerPolicyBinding.h" -namespace IPC { -class MessageReader; -class MessageWriter; -} // namespace IPC - #define REFERRERINFO_CONTRACTID "@mozilla.org/referrer-info;1" // 041a129f-10ce-4bda-a60d-e027a26d5ed0 #define REFERRERINFO_CID \ @@ -79,10 +74,6 @@ class ReferrerInfo : public nsIReferrerInfo { // create an exact copy of the ReferrerInfo already_AddRefed Clone() const; - void Serialize(IPC::MessageWriter* aWriter) const; - static bool Deserialize(IPC::MessageReader* aReader, - RefPtr* aResult); - // create an copy of the ReferrerInfo with new referrer policy already_AddRefed CloneWithNewPolicy( ReferrerPolicyEnum aPolicy) const; diff --git a/icecat/dom/security/nsCSPUtils.cpp b/icecat/dom/security/nsCSPUtils.cpp index 69c2fd0c8d..e60484891d 100644 --- a/icecat/dom/security/nsCSPUtils.cpp +++ b/icecat/dom/security/nsCSPUtils.cpp @@ -1333,14 +1333,10 @@ bool nsCSPDirective::permits(CSPDirective aDirective, nsILoadInfo* aLoadInfo, // Step 1.4. If directive’s value contains a source expression that is an // ASCII case-insensitive match for the "'strict-dynamic'" keyword-source: - if (hasStrictDynamicKeyword) { - // GetParserCreatedScript() isn't set for XSLT. - if (aLoadInfo->InternalContentPolicyType() == - nsIContentPolicy::TYPE_XSLT) { - CSPUTILSLOG((" Blocked XSLT by default with 'strict-dynamic'")); - return false; - } + // XXX I don't think we should apply strict-dynamic to XSLT. + if (hasStrictDynamicKeyword && aLoadInfo->InternalContentPolicyType() != + nsIContentPolicy::TYPE_XSLT) { // Step 1.4.1 If the request’s parser metadata is "parser-inserted", // return "Blocked". Otherwise, return "Allowed". if (aLoadInfo->GetParserCreatedScript()) { diff --git a/icecat/dom/security/trusted-types/TrustedTypeUtils.cpp b/icecat/dom/security/trusted-types/TrustedTypeUtils.cpp index c78aff62c3..d6b847cb3f 100644 --- a/icecat/dom/security/trusted-types/TrustedTypeUtils.cpp +++ b/icecat/dom/security/trusted-types/TrustedTypeUtils.cpp @@ -231,7 +231,6 @@ void ProcessValueWithADefaultPolicy(nsIGlobalObject& aGlobalObject, AutoTArray arguments = {trustedTypeName, sink}; - SequenceRooter rooter(cx, &arguments); nsString policyValue; if constexpr (std::is_same_v) { diff --git a/icecat/dom/serviceworkers/ServiceWorkerOp.cpp b/icecat/dom/serviceworkers/ServiceWorkerOp.cpp index d3ec040486..c57fd7fe2a 100644 --- a/icecat/dom/serviceworkers/ServiceWorkerOp.cpp +++ b/icecat/dom/serviceworkers/ServiceWorkerOp.cpp @@ -1694,10 +1694,10 @@ void FetchEventOp::ResolvedCallback(JSContext* aCx, // https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm Step 26: If // eventHandled is not null, then resolve eventHandled. // - // Take an immutable snapshot of the headers now, while still on the worker - // thread. - ir->SnapshotUnfilteredHeaders(); - + // mRespondWithPromiseHolder will resolve a MozPromise that will resolve on + // the worker owner's thread, so it's fine to resolve the mHandled promise now + // because content will not interfere with respondWith getting the Response to + // where it's going. mHandled->MaybeResolveWithUndefined(); mRespondWithPromiseHolder.Resolve( FetchEventRespondWithResult(std::make_tuple( @@ -1865,14 +1865,10 @@ nsresult FetchEventOp::DispatchFetchEvent(JSContext* aCx, GetCurrentSerialEventTarget(), __func__, [self, globalObjectAsSupports]( SafeRefPtr&& aPreloadResponse) { - // let's complete the promise holder before MaybeResolve + self->mPreloadResponse->MaybeResolve( + MakeRefPtr(globalObjectAsSupports, + std::move(aPreloadResponse), nullptr)); self->mPreloadResponseAvailablePromiseRequestHolder.Complete(); - RefPtr preloadResponse = self->mPreloadResponse; - if (preloadResponse) { - preloadResponse->MaybeResolve( - MakeRefPtr(globalObjectAsSupports, - std::move(aPreloadResponse), nullptr)); - } }, [self](int) { self->mPreloadResponseAvailablePromiseRequestHolder.Complete(); @@ -1911,14 +1907,10 @@ nsresult FetchEventOp::DispatchFetchEvent(JSContext* aCx, ->Then( GetCurrentSerialEventTarget(), __func__, [self, globalObjectAsSupports](ResponseEndArgs&& aArgs) { - // let's complete the promise holder before MaybeReject - self->mPreloadResponseEndPromiseRequestHolder.Complete(); if (aArgs.endReason() == FetchDriverObserver::eAborted) { - RefPtr preloadResponse = self->mPreloadResponse; - if (preloadResponse) { - preloadResponse->MaybeReject(NS_ERROR_DOM_ABORT_ERR); - } + self->mPreloadResponse->MaybeReject(NS_ERROR_DOM_ABORT_ERR); } + self->mPreloadResponseEndPromiseRequestHolder.Complete(); }, [self](int) { self->mPreloadResponseEndPromiseRequestHolder.Complete(); diff --git a/icecat/dom/serviceworkers/ServiceWorkerPrivate.cpp b/icecat/dom/serviceworkers/ServiceWorkerPrivate.cpp index 0c22638365..807e0521d2 100644 --- a/icecat/dom/serviceworkers/ServiceWorkerPrivate.cpp +++ b/icecat/dom/serviceworkers/ServiceWorkerPrivate.cpp @@ -771,7 +771,7 @@ nsresult ServiceWorkerPrivate::Initialize() { OriginTrials(), std::move(serviceWorkerData), regInfo->AgentClusterId(), remoteType.unwrap()); - mRemoteWorkerData.referrerInfo() = MakeAndAddRef(nullptr); + mRemoteWorkerData.referrerInfo() = MakeAndAddRef(); // This fills in the rest of mRemoteWorkerData.serviceWorkerData(). RefreshRemoteWorkerData(regInfo); diff --git a/icecat/dom/serviceworkers/ServiceWorkerRegistrationChild.cpp b/icecat/dom/serviceworkers/ServiceWorkerRegistrationChild.cpp index 3f2e4a0a4c..41bbbd1fe1 100644 --- a/icecat/dom/serviceworkers/ServiceWorkerRegistrationChild.cpp +++ b/icecat/dom/serviceworkers/ServiceWorkerRegistrationChild.cpp @@ -18,8 +18,7 @@ void ServiceWorkerRegistrationChild::ActorDestroy(ActorDestroyReason aReason) { mIPCWorkerRef = nullptr; if (mOwner) { - RefPtr owner = mOwner; - owner->RevokeActor(this); + mOwner->RevokeActor(this); MOZ_DIAGNOSTIC_ASSERT(!mOwner); } } diff --git a/icecat/dom/serviceworkers/ServiceWorkerRegistrationParent.cpp b/icecat/dom/serviceworkers/ServiceWorkerRegistrationParent.cpp index 74efc89c31..e97e86e679 100644 --- a/icecat/dom/serviceworkers/ServiceWorkerRegistrationParent.cpp +++ b/icecat/dom/serviceworkers/ServiceWorkerRegistrationParent.cpp @@ -9,7 +9,6 @@ #include #include "ServiceWorkerRegistrationProxy.h" -#include "nsNetUtil.h" namespace mozilla::dom { @@ -90,9 +89,6 @@ IPCResult ServiceWorkerRegistrationParent::RecvSetNavigationPreloadEnabled( IPCResult ServiceWorkerRegistrationParent::RecvSetNavigationPreloadHeader( const nsACString& aHeader, SetNavigationPreloadHeaderResolver&& aResolver) { - if (!NS_IsReasonableHTTPHeaderValue(aHeader)) { - return IPC_FAIL(this, "Invalid navigation preload header value"); - } if (!mProxy) { aResolver(false); return IPC_OK(); diff --git a/icecat/dom/smil/SMILCSSValueType.cpp b/icecat/dom/smil/SMILCSSValueType.cpp index 02297803b6..2a00fa2177 100644 --- a/icecat/dom/smil/SMILCSSValueType.cpp +++ b/icecat/dom/smil/SMILCSSValueType.cpp @@ -438,7 +438,7 @@ void SMILCSSValueType::ValueFromString(nsCSSPropertyID aPropID, } RefPtr computedStyle = - nsComputedDOMStyle::GetComputedStyleNoFlush(aTargetElement); + nsComputedDOMStyle::GetComputedStyle(aTargetElement); if (!computedStyle) { return; } diff --git a/icecat/dom/streams/QueueWithSizes.h b/icecat/dom/streams/QueueWithSizes.h index 316f84aff9..45cd6da4a9 100644 --- a/icecat/dom/streams/QueueWithSizes.h +++ b/icecat/dom/streams/QueueWithSizes.h @@ -8,8 +8,8 @@ #define mozilla_dom_QueueWithSizes_h #include - -#include "jsapi.h" +#include "js/TypeDecls.h" +#include "js/Value.h" #include "mozilla/ErrorResult.h" #include "mozilla/UniquePtr.h" #include "nsTArray.h" @@ -83,9 +83,8 @@ inline void EnqueueValueWithSize(QueueContainingClass aContainer, // https://streams.spec.whatwg.org/#dequeue-value template -inline void DequeueValue(JSContext* aCx, QueueContainingClass aContainer, - JS::MutableHandle aResultValue, - ErrorResult& aRv) { +inline void DequeueValue(QueueContainingClass aContainer, + JS::MutableHandle aResultValue) { // Step 1. Implicit via template instantiation. // Step 2. MOZ_ASSERT(!aContainer->Queue().isEmpty()); @@ -105,18 +104,12 @@ inline void DequeueValue(JSContext* aCx, QueueContainingClass aContainer, // Step 7. aResultValue.set(valueWithSize->mValue); - valueWithSize.reset(); - if (!JS_WrapValue(aCx, aResultValue)) { - aResultValue.setUndefined(); - aRv.StealExceptionFromJSContext(aCx); - } } // https://streams.spec.whatwg.org/#peek-queue-value template -inline void PeekQueueValue(JSContext* aCx, QueueContainingClass aContainer, - JS::MutableHandle aResultValue, - ErrorResult& aRv) { +inline void PeekQueueValue(QueueContainingClass aContainer, + JS::MutableHandle aResultValue) { // Step 1. Assert: container has [[queue]] and [[queueTotalSize]] internal // slots. // Step 2. Assert: container.[[queue]] is not empty. @@ -127,11 +120,6 @@ inline void PeekQueueValue(JSContext* aCx, QueueContainingClass aContainer, // Step 4. Return valueWithSize’s value. aResultValue.set(valueWithSize->mValue); - valueWithSize = nullptr; - if (!JS_WrapValue(aCx, aResultValue)) { - aResultValue.setUndefined(); - aRv.StealExceptionFromJSContext(aCx); - } } // https://streams.spec.whatwg.org/#reset-queue diff --git a/icecat/dom/streams/ReadableByteStreamController.cpp b/icecat/dom/streams/ReadableByteStreamController.cpp index ce2f21769a..6ee729d087 100644 --- a/icecat/dom/streams/ReadableByteStreamController.cpp +++ b/icecat/dom/streams/ReadableByteStreamController.cpp @@ -1448,15 +1448,14 @@ static void ReadableByteStreamControllerRespondInReadableState( return; } - RefPtr stream(aController->Stream()); - // Step 3.3. For each filledPullInto of filledPullIntos, for (auto& filledPullInto : filledPullIntos) { // Step 3.3.1. Perform ! // ReadableByteStreamControllerCommitPullIntoDescriptor(controller.[[stream]], // filledPullInto). ReadableByteStreamControllerCommitPullIntoDescriptor( - aCx, stream, MOZ_KnownLive(filledPullInto), aRv); + aCx, MOZ_KnownLive(aController->Stream()), + MOZ_KnownLive(filledPullInto), aRv); if (aRv.Failed()) { return; } diff --git a/icecat/dom/streams/ReadableStream.cpp b/icecat/dom/streams/ReadableStream.cpp index 3520fab59b..8365b389b1 100644 --- a/icecat/dom/streams/ReadableStream.cpp +++ b/icecat/dom/streams/ReadableStream.cpp @@ -112,16 +112,6 @@ JSObject* ReadableStream::WrapObject(JSContext* aCx, return ReadableStream_Binding::Wrap(aCx, this, aGivenProto); } -void ReadableStream::GetStoredError(JSContext* aCx, - JS::MutableHandle aStoredError, - ErrorResult& aRv) const { - aStoredError.set(mStoredError); - if (!JS_WrapValue(aCx, aStoredError)) { - aStoredError.setUndefined(); - aRv.StealExceptionFromJSContext(aCx); - } -} - ReadableStreamDefaultReader* ReadableStream::GetDefaultReader() { return mReader->AsDefault(); } @@ -596,12 +586,7 @@ already_AddRefed ReadableStreamCancel(JSContext* aCx, // Step 3. if (aStream->State() == ReadableStream::ReaderState::Errored) { - JS::Rooted storedError(aCx); - aStream->GetStoredError(aCx, &storedError, aRv); - if (aRv.Failed()) { - return nullptr; - } - + JS::Rooted storedError(aCx, aStream->StoredError()); return Promise::CreateRejected(aStream->GetParentObject(), storedError, aRv); } @@ -907,21 +892,13 @@ ReadableStreamDefaultTeeSourceAlgorithms::CancelCallback( return nullptr; } - JS::Rooted reason1(aCx); - mTeeState->GetReason1(aCx, &reason1, aRv); - if (aRv.Failed()) { - return nullptr; - } + JS::Rooted reason1(aCx, mTeeState->Reason1()); if (!JS_SetElement(aCx, compositeReason, 0, reason1)) { aRv.StealExceptionFromJSContext(aCx); return nullptr; } - JS::Rooted reason2(aCx); - mTeeState->GetReason2(aCx, &reason2, aRv); - if (aRv.Failed()) { - return nullptr; - } + JS::Rooted reason2(aCx, mTeeState->Reason2()); if (!JS_SetElement(aCx, compositeReason, 1, reason2)) { aRv.StealExceptionFromJSContext(aCx); return nullptr; diff --git a/icecat/dom/streams/ReadableStream.h b/icecat/dom/streams/ReadableStream.h index 3835bcb9f7..75e63fc9dd 100644 --- a/icecat/dom/streams/ReadableStream.h +++ b/icecat/dom/streams/ReadableStream.h @@ -103,9 +103,7 @@ class ReadableStream : public nsISupports, public nsWrapperCache { ReaderState State() const { return mState; } void SetState(const ReaderState& aState) { mState = aState; } - void GetStoredError(JSContext* aCx, JS::MutableHandle aStoredError, - ErrorResult& aRv) const; - JS::Value UnsafeStoredError() const { return mStoredError; } + JS::Value StoredError() const { return mStoredError; } void SetStoredError(JS::Handle aStoredError) { mStoredError = aStoredError; } diff --git a/icecat/dom/streams/ReadableStreamBYOBReader.cpp b/icecat/dom/streams/ReadableStreamBYOBReader.cpp index c887a6cc24..a8a632fbe8 100644 --- a/icecat/dom/streams/ReadableStreamBYOBReader.cpp +++ b/icecat/dom/streams/ReadableStreamBYOBReader.cpp @@ -188,11 +188,7 @@ void ReadableStreamBYOBReaderRead(JSContext* aCx, // Step 4. If stream.[[state]] is "errored", perform readIntoRequest’s error // steps given stream.[[storedError]]. if (stream->State() == ReadableStream::ReaderState::Errored) { - JS::Rooted error(aCx); - stream->GetStoredError(aCx, &error, aRv); - if (aRv.Failed()) { - return; - } + JS::Rooted error(aCx, stream->StoredError()); aReadIntoRequest->ErrorSteps(aCx, error, aRv); return; diff --git a/icecat/dom/streams/ReadableStreamDefaultController.cpp b/icecat/dom/streams/ReadableStreamDefaultController.cpp index fd91dc4bbf..5ec525470b 100644 --- a/icecat/dom/streams/ReadableStreamDefaultController.cpp +++ b/icecat/dom/streams/ReadableStreamDefaultController.cpp @@ -616,10 +616,7 @@ void ReadableStreamDefaultController::PullSteps(JSContext* aCx, if (!mQueue.isEmpty()) { // Step 2.1 JS::Rooted chunk(aCx); - DequeueValue(aCx, this, &chunk, aRv); - if (aRv.Failed()) { - return; - } + DequeueValue(this, &chunk); // Step 2.2 if (CloseRequested() && mQueue.isEmpty()) { diff --git a/icecat/dom/streams/ReadableStreamDefaultReader.cpp b/icecat/dom/streams/ReadableStreamDefaultReader.cpp index f5a8d38cd4..3669782e67 100644 --- a/icecat/dom/streams/ReadableStreamDefaultReader.cpp +++ b/icecat/dom/streams/ReadableStreamDefaultReader.cpp @@ -89,8 +89,7 @@ bool ReadableStreamReaderGenericInitialize(ReadableStreamGenericReader* aReader, // Step 5.1 Implicit // Step 5.2 JS::RootingContext* rcx = RootingCx(); - // MaybeReject will wrap the value for us. - JS::Rooted rootedError(rcx, aStream->UnsafeStoredError()); + JS::Rooted rootedError(rcx, aStream->StoredError()); aReader->ClosedPromise()->MaybeReject(rootedError); // Step 5.3 @@ -225,11 +224,7 @@ void ReadableStreamDefaultReaderRead(JSContext* aCx, } case ReadableStream::ReaderState::Errored: { - JS::Rooted storedError(aCx); - stream->GetStoredError(aCx, &storedError, aRv); - if (aRv.Failed()) { - return; - } + JS::Rooted storedError(aCx, stream->StoredError()); aRequest->ErrorSteps(aCx, storedError, aRv); return; } diff --git a/icecat/dom/streams/ReadableStreamPipeTo.cpp b/icecat/dom/streams/ReadableStreamPipeTo.cpp index eea5a1dbae..ed5db4f086 100644 --- a/icecat/dom/streams/ReadableStreamPipeTo.cpp +++ b/icecat/dom/streams/ReadableStreamPipeTo.cpp @@ -259,8 +259,7 @@ bool PipeToPump::SourceOrDestErroredOrClosed(JSContext* aCx) { // Step 1. Errors must be propagated forward: if source.[[state]] is or // becomes "errored", then if (source->State() == ReadableStream::ReaderState::Errored) { - JS::Rooted storedError(aCx); - source->GetStoredError(aCx, &storedError, IgnoredErrorResult()); + JS::Rooted storedError(aCx, source->StoredError()); OnSourceErrored(aCx, storedError); return true; } @@ -268,8 +267,7 @@ bool PipeToPump::SourceOrDestErroredOrClosed(JSContext* aCx) { // Step 2. Errors must be propagated backward: if dest.[[state]] is or becomes // "errored", then if (dest->State() == WritableStream::WriterState::Errored) { - JS::Rooted storedError(aCx); - dest->GetStoredError(aCx, &storedError, IgnoredErrorResult()); + JS::Rooted storedError(aCx, dest->StoredError()); OnDestErrored(aCx, storedError); return true; } @@ -459,20 +457,15 @@ class ShutdownActionFinishedPromiseHandler final : public PromiseNativeHandler { } void ResolvedCallback(JSContext* aCx, JS::Handle aValue, - ErrorResult& aRv) override { + ErrorResult&) override { // https://streams.spec.whatwg.org/#rs-pipeTo-shutdown-with-action // Step 5. Upon fulfillment of p, finalize, passing along originalError if // it was given. - JS::Rooted> maybeError(aCx); + JS::Rooted> error(aCx); if (mHasError) { - JS::Rooted error(aCx, mError); - if (!JS_WrapValue(aCx, &error)) { - aRv.StealExceptionFromJSContext(aCx); - return; - } - maybeError = Some(error.get()); + error = Some(mError); } - mPipeToPump->Finalize(aCx, maybeError); + mPipeToPump->Finalize(aCx, error); } void RejectedCallback(JSContext* aCx, JS::Handle aReason, diff --git a/icecat/dom/streams/ReadableStreamTee.cpp b/icecat/dom/streams/ReadableStreamTee.cpp index 298a8b783c..50084a7d9e 100644 --- a/icecat/dom/streams/ReadableStreamTee.cpp +++ b/icecat/dom/streams/ReadableStreamTee.cpp @@ -292,21 +292,13 @@ class ByteStreamTeeSourceAlgorithms final return nullptr; } - JS::Rooted reason1(aCx); - mTeeState->GetReason1(aCx, &reason1, aRv); - if (aRv.Failed()) { - return nullptr; - } + JS::Rooted reason1(aCx, mTeeState->Reason1()); if (!JS_SetElement(aCx, compositeReason, 0, reason1)) { aRv.StealExceptionFromJSContext(aCx); return nullptr; } - JS::Rooted reason2(aCx); - mTeeState->GetReason2(aCx, &reason2, aRv); - if (aRv.Failed()) { - return nullptr; - } + JS::Rooted reason2(aCx, mTeeState->Reason2()); if (!JS_SetElement(aCx, compositeReason, 1, reason2)) { aRv.StealExceptionFromJSContext(aCx); return nullptr; diff --git a/icecat/dom/streams/TeeState.cpp b/icecat/dom/streams/TeeState.cpp index f4a9652b44..8600ea1205 100644 --- a/icecat/dom/streams/TeeState.cpp +++ b/icecat/dom/streams/TeeState.cpp @@ -36,24 +36,6 @@ TeeState::TeeState(ReadableStream* aStream, bool aCloneForBranch2) "cloneForBranch2 path is not implemented."); } -void TeeState::GetReason1(JSContext* aCx, JS::MutableHandle aReason, - ErrorResult& aRv) const { - aReason.set(mReason1); - if (!JS_WrapValue(aCx, aReason)) { - aReason.setUndefined(); - aRv.StealExceptionFromJSContext(aCx); - } -} - -void TeeState::GetReason2(JSContext* aCx, JS::MutableHandle aReason, - ErrorResult& aRv) const { - aReason.set(mReason2); - if (!JS_WrapValue(aCx, aReason)) { - aReason.setUndefined(); - aRv.StealExceptionFromJSContext(aCx); - } -} - already_AddRefed TeeState::Create(ReadableStream* aStream, bool aCloneForBranch2, ErrorResult& aRv) { diff --git a/icecat/dom/streams/TeeState.h b/icecat/dom/streams/TeeState.h index 07685d6e87..9a688be662 100644 --- a/icecat/dom/streams/TeeState.h +++ b/icecat/dom/streams/TeeState.h @@ -82,12 +82,10 @@ struct TeeState : public nsISupports { return aBranch == TeeBranch::Branch1 ? Canceled1() : Canceled2(); } - void GetReason1(JSContext* aCx, JS::MutableHandle aReason, - ErrorResult& aRv) const; + JS::Value Reason1() const { return mReason1; } void SetReason1(JS::Handle aReason1) { mReason1 = aReason1; } - void GetReason2(JSContext* aCx, JS::MutableHandle aReason, - ErrorResult& aRv) const; + JS::Value Reason2() const { return mReason2; } void SetReason2(JS::Handle aReason2) { mReason2 = aReason2; } void SetReason(TeeBranch aBranch, JS::Handle aReason) { diff --git a/icecat/dom/streams/TransformStream.cpp b/icecat/dom/streams/TransformStream.cpp index f1e6c2f92a..a88ed6933b 100644 --- a/icecat/dom/streams/TransformStream.cpp +++ b/icecat/dom/streams/TransformStream.cpp @@ -265,12 +265,8 @@ class TransformStreamUnderlyingSinkAlgorithms final // Step 3: If state is "erroring", throw // writable.[[storedError]]. if (state == WritableStream::WriterState::Erroring) { - JS::Rooted storedError(aCx); - writable->GetStoredError(aCx, &storedError, aRv); - if (aRv.Failed()) { - return nullptr; - } - + JS::Rooted storedError(aCx, + writable->StoredError()); aRv.MightThrowJSException(); aRv.ThrowJSException(aCx, storedError); return nullptr; @@ -365,12 +361,8 @@ class TransformStreamUnderlyingSinkAlgorithms final // readable.[[storedError]]. if (aReadable->State() == ReadableStream::ReaderState::Errored) { - JS::Rooted storedError(aCx); - aReadable->GetStoredError(aCx, &storedError, aRv); - if (aRv.Failed()) { - return nullptr; - } - + JS::Rooted storedError(aCx, + aReadable->StoredError()); aRv.MightThrowJSException(); aRv.ThrowJSException(aCx, storedError); return nullptr; @@ -397,12 +389,8 @@ class TransformStreamUnderlyingSinkAlgorithms final } // Step 5.2.2: Throw readable.[[storedError]]. - JS::Rooted storedError(aCx); - aReadable->GetStoredError(aCx, &storedError, aRv); - if (aRv.Failed()) { - return nullptr; - } - + JS::Rooted storedError(aCx, + aReadable->StoredError()); aRv.MightThrowJSException(); aRv.ThrowJSException(aCx, storedError); return nullptr; diff --git a/icecat/dom/streams/TransformStreamDefaultController.cpp b/icecat/dom/streams/TransformStreamDefaultController.cpp index 33293b18a7..bbcb7f94f2 100644 --- a/icecat/dom/streams/TransformStreamDefaultController.cpp +++ b/icecat/dom/streams/TransformStreamDefaultController.cpp @@ -125,12 +125,7 @@ void TransformStreamDefaultController::Enqueue(JSContext* aCx, TransformStreamErrorWritableAndUnblockWrite(aCx, stream, error, aRv); // Step 5.2: Throw stream.[[readable]].[[storedError]]. - JS::Rooted storedError(aCx); - stream->Readable()->GetStoredError(aCx, &storedError, aRv); - if (aRv.Failed()) { - return; - } - + JS::Rooted storedError(aCx, stream->Readable()->StoredError()); aRv.MightThrowJSException(); aRv.ThrowJSException(aCx, storedError); return; diff --git a/icecat/dom/streams/UnderlyingSourceCallbackHelpers.cpp b/icecat/dom/streams/UnderlyingSourceCallbackHelpers.cpp index 42427e7d1b..63147d2c13 100644 --- a/icecat/dom/streams/UnderlyingSourceCallbackHelpers.cpp +++ b/icecat/dom/streams/UnderlyingSourceCallbackHelpers.cpp @@ -222,10 +222,10 @@ nsresult InputStreamHolder::AsyncWait(uint32_t aFlags, uint32_t aRequestedCount, NS_IMETHODIMP InputStreamHolder::OnInputStreamReady( nsIAsyncInputStream* aStream) { mAsyncWaitWorkerRef = nullptr; + mAsyncWaitAlgorithms = nullptr; // We may get called back after ::Shutdown() - if (RefPtr callback = - mAsyncWaitAlgorithms.forget()) { - return callback->OnInputStreamReady(aStream); + if (mCallback) { + return mCallback->OnInputStreamReady(aStream); } return NS_ERROR_FAILURE; } @@ -448,10 +448,8 @@ void InputToReadableStreamAlgorithms::PullFromInputStream(JSContext* aCx, // But we do not use pullSize but use byteWritten here, since nsIInputStream // does not guarantee to read as much as it told in Available(). MOZ_DIAGNOSTIC_ASSERT(pullSize == bytesWritten); - RefPtr byteController( - mStream->Controller()->AsByte()); - MOZ_ASSERT(byteController); - ReadableByteStreamControllerRespond(aCx, byteController, bytesWritten, aRv); + ReadableByteStreamControllerRespond( + aCx, MOZ_KnownLive(mStream->Controller()->AsByte()), bytesWritten, aRv); } // Step 9. Otherwise, else { @@ -485,10 +483,8 @@ void InputToReadableStreamAlgorithms::PullFromInputStream(JSContext* aCx, // Step 9.2. Perform ? // ReadableByteStreamControllerEnqueue(stream.[[controller]], view). - RefPtr byteController( - mStream->Controller()->AsByte()); - MOZ_ASSERT(byteController); - ReadableByteStreamControllerEnqueue(aCx, byteController, view, aRv); + ReadableByteStreamControllerEnqueue( + aCx, MOZ_KnownLive(mStream->Controller()->AsByte()), view, aRv); } } diff --git a/icecat/dom/streams/WritableStream.cpp b/icecat/dom/streams/WritableStream.cpp index d5be8f9b56..8dab9a564e 100644 --- a/icecat/dom/streams/WritableStream.cpp +++ b/icecat/dom/streams/WritableStream.cpp @@ -79,16 +79,6 @@ JSObject* WritableStream::WrapObject(JSContext* aCx, return WritableStream_Binding::Wrap(aCx, this, aGivenProto); } -void WritableStream::GetStoredError(JSContext* aCx, - JS::MutableHandle aStoredError, - ErrorResult& aRv) const { - aStoredError.set(mStoredError); - if (!JS_WrapValue(aCx, aStoredError)) { - aStoredError.setUndefined(); - aRv.StealExceptionFromJSContext(aCx); - } -} - // https://streams.spec.whatwg.org/#writable-stream-deal-with-rejection void WritableStream::DealWithRejection(JSContext* aCx, JS::Handle aError, @@ -150,10 +140,6 @@ void WritableStream::FinishErroring(JSContext* aCx, ErrorResult& aRv) { // Step 9. Let abortRequest be stream.[[pendingAbortRequest]]. RefPtr abortPromise = mPendingAbortRequestPromise; JS::Rooted abortReason(aCx, mPendingAbortRequestReason); - if (!JS_WrapValue(aCx, &abortReason)) { - aRv.StealExceptionFromJSContext(aCx); - return; - } bool abortWasAlreadyErroring = mPendingAbortRequestWasAlreadyErroring; // Step 10. Set stream.[[pendingAbortRequest]] to undefined. diff --git a/icecat/dom/streams/WritableStream.h b/icecat/dom/streams/WritableStream.h index 3af6c64dbd..8b380020fe 100644 --- a/icecat/dom/streams/WritableStream.h +++ b/icecat/dom/streams/WritableStream.h @@ -89,9 +89,7 @@ class WritableStream : public nsISupports, public nsWrapperCache { WriterState State() const { return mState; } void SetState(const WriterState& aState) { mState = aState; } - void GetStoredError(JSContext* aCx, JS::MutableHandle aStoredError, - ErrorResult& aRv) const; - JS::Value UnsafeStoredError() const { return mStoredError; } + JS::Value StoredError() const { return mStoredError; } void SetStoredError(JS::Handle aStoredError) { mStoredError = aStoredError; } diff --git a/icecat/dom/streams/WritableStreamDefaultController.cpp b/icecat/dom/streams/WritableStreamDefaultController.cpp index 3177deab9f..9ef965cf88 100644 --- a/icecat/dom/streams/WritableStreamDefaultController.cpp +++ b/icecat/dom/streams/WritableStreamDefaultController.cpp @@ -256,10 +256,7 @@ MOZ_CAN_RUN_SCRIPT static void WritableStreamDefaultControllerProcessClose( // Step 3. Perform ! DequeueValue(controller). JS::Rooted value(aCx); - DequeueValue(aCx, aController, &value, aRv); - if (aRv.Failed()) { - return; - } + DequeueValue(aController, &value); // Step 4. Assert: controller.[[queue]] is empty. MOZ_ASSERT(aController->Queue().isEmpty()); @@ -337,10 +334,7 @@ MOZ_CAN_RUN_SCRIPT static void WritableStreamDefaultControllerProcessWrite( // Step 4.4. Perform ! DequeueValue(controller). JS::Rooted value(aCx); - DequeueValue(aCx, aController, &value, aRv); - if (aRv.Failed()) { - return; - } + DequeueValue(aController, &value); // Step 4.5. If ! WritableStreamCloseQueuedOrInFlight(stream) is // false and state is "writable", @@ -423,10 +417,7 @@ static void WritableStreamDefaultControllerAdvanceQueueIfNeeded( // Step 8. Let value be ! PeekQueueValue(controller). JS::Rooted value(aCx); - PeekQueueValue(aCx, aController, &value, aRv); - if (aRv.Failed()) { - return; - } + PeekQueueValue(aController, &value); // Step 9. If value is the close sentinel, perform ! // WritableStreamDefaultControllerProcessClose(controller). diff --git a/icecat/dom/streams/WritableStreamDefaultWriter.cpp b/icecat/dom/streams/WritableStreamDefaultWriter.cpp index 2200f5562f..589eada7e2 100644 --- a/icecat/dom/streams/WritableStreamDefaultWriter.cpp +++ b/icecat/dom/streams/WritableStreamDefaultWriter.cpp @@ -302,11 +302,7 @@ already_AddRefed WritableStreamDefaultWriterWrite( // Step 7. If state is "errored", return a promise rejected with // stream.[[storedError]]. if (state == WritableStream::WriterState::Errored) { - JS::Rooted error(aCx); - stream->GetStoredError(aCx, &error, aRv); - if (aRv.Failed()) { - return nullptr; - } + JS::Rooted error(aCx, stream->StoredError()); return Promise::CreateRejected(aWriter->GetParentObject(), error, aRv); } @@ -322,11 +318,7 @@ already_AddRefed WritableStreamDefaultWriterWrite( // Step 9. If state is "erroring", return a promise rejected with // stream.[[storedError]]. if (state == WritableStream::WriterState::Erroring) { - JS::Rooted error(aCx); - stream->GetStoredError(aCx, &error, aRv); - if (aRv.Failed()) { - return nullptr; - } + JS::Rooted error(aCx, stream->StoredError()); return Promise::CreateRejected(aWriter->GetParentObject(), error, aRv); } @@ -410,9 +402,7 @@ void SetUpWritableStreamDefaultWriter(WritableStreamDefaultWriter* aWriter, // Step 6.1. Set writer.[[readyPromise]] to a promise rejected with // stream.[[storedError]]. - // MaybeReject will wrap the value. - JS::Rooted storedError(RootingCx(), - aStream->UnsafeStoredError()); + JS::Rooted storedError(RootingCx(), aStream->StoredError()); RefPtr readyPromise = Promise::CreateInfallible(aWriter->GetParentObject()); readyPromise->MaybeReject(storedError); @@ -450,9 +440,7 @@ void SetUpWritableStreamDefaultWriter(WritableStreamDefaultWriter* aWriter, MOZ_ASSERT(state == WritableStream::WriterState::Errored); // Step 8.2. Step Let storedError be stream.[[storedError]]. - // MaybeReject will wrap the value. - JS::Rooted storedError(RootingCx(), - aStream->UnsafeStoredError()); + JS::Rooted storedError(RootingCx(), aStream->StoredError()); // Step 8.3. Set writer.[[readyPromise]] to a promise rejected with // storedError. @@ -539,11 +527,7 @@ already_AddRefed WritableStreamDefaultWriterCloseWithErrorPropagation( // Step 5. If state is "errored", // return a promise rejected with stream.[[storedError]]. if (state == WritableStream::WriterState::Errored) { - JS::Rooted error(aCx); - stream->GetStoredError(aCx, &error, aRv); - if (aRv.Failed()) { - return nullptr; - } + JS::Rooted error(aCx, stream->StoredError()); return Promise::CreateRejected(aWriter->GetParentObject(), error, aRv); } diff --git a/icecat/dom/svg/DOMSVGLength.cpp b/icecat/dom/svg/DOMSVGLength.cpp index 8d591ebae0..cc3fbf9fb6 100644 --- a/icecat/dom/svg/DOMSVGLength.cpp +++ b/icecat/dom/svg/DOMSVGLength.cpp @@ -84,8 +84,8 @@ void DOMSVGLength::CleanupWeakRefs() { // cycle collected), so we that don't leave behind a pointer to // free / soon-to-be-free memory. if (nsCOMPtr lengthList = do_QueryInterface(mOwner)) { - MOZ_RELEASE_ASSERT(lengthList->mItems[mListIndex] == this, - "Clearing out the wrong list index...?"); + MOZ_ASSERT(lengthList->mItems[mListIndex] == this, + "Clearing out the wrong list index...?"); lengthList->mItems[mListIndex] = nullptr; } diff --git a/icecat/dom/svg/DOMSVGLength.h b/icecat/dom/svg/DOMSVGLength.h index 82aee1904d..07dad37e81 100644 --- a/icecat/dom/svg/DOMSVGLength.h +++ b/icecat/dom/svg/DOMSVGLength.h @@ -133,10 +133,7 @@ class DOMSVGLength final : public nsWrapperCache { } /// This method is called to notify this object that its list index changed. - void UpdateListIndex(uint32_t aListIndex) { - MOZ_RELEASE_ASSERT(aListIndex <= MaxListIndex()); - mListIndex = aListIndex; - } + void UpdateListIndex(uint32_t aListIndex) { mListIndex = aListIndex; } /** * This method is called to notify this DOM object that it is about to be diff --git a/icecat/dom/svg/DOMSVGLengthList.cpp b/icecat/dom/svg/DOMSVGLengthList.cpp index d4ac6802ef..3d2a0e494d 100644 --- a/icecat/dom/svg/DOMSVGLengthList.cpp +++ b/icecat/dom/svg/DOMSVGLengthList.cpp @@ -197,8 +197,9 @@ already_AddRefed DOMSVGLengthList::InsertItemBefore( return nullptr; } - if (LengthNoFlush() >= DOMSVGLength::MaxListIndex()) { - aRv.ThrowIndexSizeError("List too long"); + index = std::min(index, LengthNoFlush()); + if (index >= DOMSVGLength::MaxListIndex()) { + aRv.ThrowIndexSizeError("Index out of range"); return nullptr; } @@ -221,8 +222,6 @@ already_AddRefed DOMSVGLengthList::InsertItemBefore( } } - index = std::min(index, LengthNoFlush()); - AutoChangeLengthListNotifier notifier(this); // Now that we know we're inserting, keep animVal list in sync as necessary. MaybeInsertNullInAnimValListAt(index); diff --git a/icecat/dom/svg/DOMSVGNumber.h b/icecat/dom/svg/DOMSVGNumber.h index d876021a05..7023f6bf0f 100644 --- a/icecat/dom/svg/DOMSVGNumber.h +++ b/icecat/dom/svg/DOMSVGNumber.h @@ -109,10 +109,7 @@ class DOMSVGNumber final : public nsWrapperCache { } /// This method is called to notify this object that its list index changed. - void UpdateListIndex(uint32_t aListIndex) { - MOZ_RELEASE_ASSERT(aListIndex <= MaxListIndex()); - mListIndex = aListIndex; - } + void UpdateListIndex(uint32_t aListIndex) { mListIndex = aListIndex; } /** * This method is called to notify this DOM object that it is about to be diff --git a/icecat/dom/svg/DOMSVGNumberList.cpp b/icecat/dom/svg/DOMSVGNumberList.cpp index 4d857c1f35..601ce19da5 100644 --- a/icecat/dom/svg/DOMSVGNumberList.cpp +++ b/icecat/dom/svg/DOMSVGNumberList.cpp @@ -185,8 +185,9 @@ already_AddRefed DOMSVGNumberList::InsertItemBefore( return nullptr; } - if (LengthNoFlush() >= DOMSVGNumber::MaxListIndex()) { - aRv.ThrowIndexSizeError("List too long"); + index = std::min(index, LengthNoFlush()); + if (index >= DOMSVGNumber::MaxListIndex()) { + aRv.ThrowIndexSizeError("Index out of range"); return nullptr; } @@ -207,8 +208,6 @@ already_AddRefed DOMSVGNumberList::InsertItemBefore( } } - index = std::min(index, LengthNoFlush()); - AutoChangeNumberListNotifier notifier(this); // Now that we know we're inserting, keep animVal list in sync as necessary. MaybeInsertNullInAnimValListAt(index); diff --git a/icecat/dom/svg/DOMSVGPoint.cpp b/icecat/dom/svg/DOMSVGPoint.cpp index ac7614a228..f374394131 100644 --- a/icecat/dom/svg/DOMSVGPoint.cpp +++ b/icecat/dom/svg/DOMSVGPoint.cpp @@ -200,8 +200,8 @@ void DOMSVGPoint::CleanupWeakRefs() { // cycle collected), so we that don't leave behind a pointer to // free / soon-to-be-free memory. if (nsCOMPtr pointList = do_QueryInterface(mOwner)) { - MOZ_RELEASE_ASSERT(pointList->mItems[mListIndex] == this, - "Clearing out the wrong list index...?"); + MOZ_ASSERT(pointList->mItems[mListIndex] == this, + "Clearing out the wrong list index...?"); pointList->mItems[mListIndex] = nullptr; } diff --git a/icecat/dom/svg/DOMSVGPoint.h b/icecat/dom/svg/DOMSVGPoint.h index aa95a230d4..f36dbc9550 100644 --- a/icecat/dom/svg/DOMSVGPoint.h +++ b/icecat/dom/svg/DOMSVGPoint.h @@ -118,10 +118,7 @@ class DOMSVGPoint final : public nsWrapperCache { } /// This method is called to notify this object that its list index changed. - void UpdateListIndex(uint32_t aListIndex) { - MOZ_RELEASE_ASSERT(aListIndex <= MaxListIndex()); - mListIndex = aListIndex; - } + void UpdateListIndex(uint32_t aListIndex) { mListIndex = aListIndex; } /** * This method is called to notify this DOM object that it is about to be diff --git a/icecat/dom/svg/DOMSVGPointList.cpp b/icecat/dom/svg/DOMSVGPointList.cpp index 4c9516be27..6e820ae1ae 100644 --- a/icecat/dom/svg/DOMSVGPointList.cpp +++ b/icecat/dom/svg/DOMSVGPointList.cpp @@ -253,8 +253,9 @@ already_AddRefed DOMSVGPointList::InsertItemBefore( return nullptr; } - if (LengthNoFlush() >= DOMSVGPoint::MaxListIndex()) { - aRv.ThrowIndexSizeError("List too long"); + aIndex = std::min(aIndex, LengthNoFlush()); + if (aIndex >= DOMSVGPoint::MaxListIndex()) { + aRv.ThrowIndexSizeError("Index out of range"); return nullptr; } @@ -279,8 +280,6 @@ already_AddRefed DOMSVGPointList::InsertItemBefore( } } - aIndex = std::min(aIndex, LengthNoFlush()); - AutoChangePointListNotifier notifier(this); // Now that we know we're inserting, keep animVal list in sync as necessary. MaybeInsertNullInAnimValListAt(aIndex); diff --git a/icecat/dom/svg/DOMSVGTransform.h b/icecat/dom/svg/DOMSVGTransform.h index c2dc054cc6..625aa6dfde 100644 --- a/icecat/dom/svg/DOMSVGTransform.h +++ b/icecat/dom/svg/DOMSVGTransform.h @@ -99,10 +99,7 @@ class DOMSVGTransform final : public nsWrapperCache { } /// This method is called to notify this object that its list index changed. - void UpdateListIndex(uint32_t aListIndex) { - MOZ_RELEASE_ASSERT(aListIndex <= MaxListIndex()); - mListIndex = aListIndex; - } + void UpdateListIndex(uint32_t aListIndex) { mListIndex = aListIndex; } /** * This method is called to notify this DOM object that it is about to be diff --git a/icecat/dom/svg/DOMSVGTransformList.cpp b/icecat/dom/svg/DOMSVGTransformList.cpp index 8b7199085c..b87e9f2247 100644 --- a/icecat/dom/svg/DOMSVGTransformList.cpp +++ b/icecat/dom/svg/DOMSVGTransformList.cpp @@ -190,8 +190,9 @@ already_AddRefed DOMSVGTransformList::InsertItemBefore( return nullptr; } - if (LengthNoFlush() >= DOMSVGTransform::MaxListIndex()) { - error.ThrowIndexSizeError("List too long"); + index = std::min(index, LengthNoFlush()); + if (index >= DOMSVGTransform::MaxListIndex()) { + error.ThrowIndexSizeError("Index out of range"); return nullptr; } @@ -214,8 +215,6 @@ already_AddRefed DOMSVGTransformList::InsertItemBefore( } } - index = std::min(index, LengthNoFlush()); - AutoChangeTransformListNotifier notifier(this); // Now that we know we're inserting, keep animVal list in sync as necessary. MaybeInsertNullInAnimValListAt(index); diff --git a/icecat/dom/svg/SVGContentUtils.cpp b/icecat/dom/svg/SVGContentUtils.cpp index 46b1b542ba..77cf042971 100644 --- a/icecat/dom/svg/SVGContentUtils.cpp +++ b/icecat/dom/svg/SVGContentUtils.cpp @@ -436,8 +436,9 @@ static gfx::Matrix GetCTMInternal(SVGElement* aElement, CTMType aCTMType, auto postTranslateFrameOffset = [](nsIFrame* aFrame, nsIFrame* aAncestorFrame, gfx::Matrix& aMatrix) { auto point = aFrame->GetOffsetTo(aAncestorFrame); - aMatrix.PostTranslate(nsPresContext::AppUnitsToFloatCSSPixels(point.x), - nsPresContext::AppUnitsToFloatCSSPixels(point.y)); + aMatrix = + aMatrix.PostTranslate(nsPresContext::AppUnitsToFloatCSSPixels(point.x), + nsPresContext::AppUnitsToFloatCSSPixels(point.y)); }; gfxMatrix matrix = getLocalTransformHelper(aElement, aHaveRecursed); @@ -498,7 +499,8 @@ static gfx::Matrix GetCTMInternal(SVGElement* aElement, CTMType aCTMType, if (frame->IsSVGOuterSVGFrame()) { nsMargin bp = frame->GetUsedBorderAndPadding(); int32_t appUnitsPerCSSPixel = AppUnitsPerCSSPixel(); - nscoord xOffset, yOffset; + float xOffset = NSAppUnitsToFloatPixels(bp.left, appUnitsPerCSSPixel); + float yOffset = NSAppUnitsToFloatPixels(bp.top, appUnitsPerCSSPixel); // See // https://drafts.csswg.org/css-transforms/#valdef-transform-box-fill-box // For elements with associated CSS layout box, the used value for fill-box @@ -506,24 +508,17 @@ static gfx::Matrix GetCTMInternal(SVGElement* aElement, CTMType aCTMType, switch (frame->StyleDisplay()->mTransformBox) { case StyleTransformBox::FillBox: case StyleTransformBox::ContentBox: - xOffset = bp.left; - yOffset = bp.top; + // Apply border/padding separate from the rest of the transform. + // i.e. after it's been transformed + tm.PostTranslate(xOffset, yOffset); break; case StyleTransformBox::StrokeBox: case StyleTransformBox::ViewBox: - case StyleTransformBox::BorderBox: { - // Extract the rotation component of the matrix. - float angle = std::atan2(tm._12, tm._11); - float cosAngle = std::cos(angle); - float sinAngle = std::sin(angle); - // Apply that rotation to bp.left and bp.top. - xOffset = bp.left * cosAngle - bp.top * sinAngle; - yOffset = bp.top * cosAngle + bp.left * sinAngle; + case StyleTransformBox::BorderBox: + // Apply border/padding before we transform the surface. + tm.PreTranslate(xOffset, yOffset); break; - } } - tm.PostTranslate(NSAppUnitsToFloatPixels(xOffset, appUnitsPerCSSPixel), - NSAppUnitsToFloatPixels(yOffset, appUnitsPerCSSPixel)); } if (!ancestor || !ancestor->IsElement()) { diff --git a/icecat/dom/svg/SVGFEBlendElement.cpp b/icecat/dom/svg/SVGFEBlendElement.cpp index edbb0f6787..27481e9ecf 100644 --- a/icecat/dom/svg/SVGFEBlendElement.cpp +++ b/icecat/dom/svg/SVGFEBlendElement.cpp @@ -21,26 +21,26 @@ JSObject* SVGFEBlendElement::WrapNode(JSContext* aCx, } SVGEnumMapping SVGFEBlendElement::sModeMap[] = { - {nsGkAtoms::normal, uint8_t(SVGFEBlendMode::Normal)}, - {nsGkAtoms::multiply, uint8_t(SVGFEBlendMode::Multiply)}, - {nsGkAtoms::screen, uint8_t(SVGFEBlendMode::Screen)}, - {nsGkAtoms::darken, uint8_t(SVGFEBlendMode::Darken)}, - {nsGkAtoms::lighten, uint8_t(SVGFEBlendMode::Lighten)}, - {nsGkAtoms::overlay, uint8_t(SVGFEBlendMode::Overlay)}, - {nsGkAtoms::colorDodge, uint8_t(SVGFEBlendMode::ColorDodge)}, - {nsGkAtoms::colorBurn, uint8_t(SVGFEBlendMode::ColorBurn)}, - {nsGkAtoms::hardLight, uint8_t(SVGFEBlendMode::HardLight)}, - {nsGkAtoms::softLight, uint8_t(SVGFEBlendMode::SoftLight)}, - {nsGkAtoms::difference, uint8_t(SVGFEBlendMode::Difference)}, - {nsGkAtoms::exclusion, uint8_t(SVGFEBlendMode::Exclusion)}, - {nsGkAtoms::hue, uint8_t(SVGFEBlendMode::Hue)}, - {nsGkAtoms::saturation, uint8_t(SVGFEBlendMode::Saturation)}, - {nsGkAtoms::color, uint8_t(SVGFEBlendMode::Color)}, - {nsGkAtoms::luminosity, uint8_t(SVGFEBlendMode::Luminosity)}, + {nsGkAtoms::normal, SVG_FEBLEND_MODE_NORMAL}, + {nsGkAtoms::multiply, SVG_FEBLEND_MODE_MULTIPLY}, + {nsGkAtoms::screen, SVG_FEBLEND_MODE_SCREEN}, + {nsGkAtoms::darken, SVG_FEBLEND_MODE_DARKEN}, + {nsGkAtoms::lighten, SVG_FEBLEND_MODE_LIGHTEN}, + {nsGkAtoms::overlay, SVG_FEBLEND_MODE_OVERLAY}, + {nsGkAtoms::colorDodge, SVG_FEBLEND_MODE_COLOR_DODGE}, + {nsGkAtoms::colorBurn, SVG_FEBLEND_MODE_COLOR_BURN}, + {nsGkAtoms::hardLight, SVG_FEBLEND_MODE_HARD_LIGHT}, + {nsGkAtoms::softLight, SVG_FEBLEND_MODE_SOFT_LIGHT}, + {nsGkAtoms::difference, SVG_FEBLEND_MODE_DIFFERENCE}, + {nsGkAtoms::exclusion, SVG_FEBLEND_MODE_EXCLUSION}, + {nsGkAtoms::hue, SVG_FEBLEND_MODE_HUE}, + {nsGkAtoms::saturation, SVG_FEBLEND_MODE_SATURATION}, + {nsGkAtoms::color, SVG_FEBLEND_MODE_COLOR}, + {nsGkAtoms::luminosity, SVG_FEBLEND_MODE_LUMINOSITY}, {nullptr, 0}}; SVGElement::EnumInfo SVGFEBlendElement::sEnumInfo[1] = { - {nsGkAtoms::mode, sModeMap, uint8_t(SVGFEBlendMode::Normal)}}; + {nsGkAtoms::mode, sModeMap, SVG_FEBLEND_MODE_NORMAL}}; SVGElement::StringInfo SVGFEBlendElement::sStringInfo[3] = { {nsGkAtoms::result, kNameSpaceID_None, true}, @@ -71,8 +71,9 @@ FilterPrimitiveDescription SVGFEBlendElement::GetPrimitiveDescription( SVGFilterInstance* aInstance, const IntRect& aFilterSubregion, const nsTArray& aInputsAreTainted, nsTArray>& aInputImages) { + uint32_t mode = mEnumAttributes[MODE].GetAnimValue(); BlendAttributes attributes; - attributes.mBlendMode = SVGFEBlendMode(mEnumAttributes[MODE].GetAnimValue()); + attributes.mBlendMode = mode; return FilterPrimitiveDescription(AsVariant(std::move(attributes))); } diff --git a/icecat/dom/svg/SVGFEColorMatrixElement.cpp b/icecat/dom/svg/SVGFEColorMatrixElement.cpp index 6423b67bfc..f9de1116b7 100644 --- a/icecat/dom/svg/SVGFEColorMatrixElement.cpp +++ b/icecat/dom/svg/SVGFEColorMatrixElement.cpp @@ -25,15 +25,14 @@ JSObject* SVGFEColorMatrixElement::WrapNode(JSContext* aCx, } SVGEnumMapping SVGFEColorMatrixElement::sTypeMap[] = { - {nsGkAtoms::matrix, uint8_t(SVGFEColorMatrixType::Matrix)}, - {nsGkAtoms::saturate, uint8_t(SVGFEColorMatrixType::Saturate)}, - {nsGkAtoms::hueRotate, uint8_t(SVGFEColorMatrixType::HueRotate)}, - {nsGkAtoms::luminanceToAlpha, - uint8_t(SVGFEColorMatrixType::LuminanceToAlpha)}, + {nsGkAtoms::matrix, SVG_FECOLORMATRIX_TYPE_MATRIX}, + {nsGkAtoms::saturate, SVG_FECOLORMATRIX_TYPE_SATURATE}, + {nsGkAtoms::hueRotate, SVG_FECOLORMATRIX_TYPE_HUE_ROTATE}, + {nsGkAtoms::luminanceToAlpha, SVG_FECOLORMATRIX_TYPE_LUMINANCE_TO_ALPHA}, {nullptr, 0}}; SVGElement::EnumInfo SVGFEColorMatrixElement::sEnumInfo[1] = { - {nsGkAtoms::type, sTypeMap, uint8_t(SVGFEColorMatrixType::Matrix)}}; + {nsGkAtoms::type, sTypeMap, SVG_FECOLORMATRIX_TYPE_MATRIX}}; SVGElement::StringInfo SVGFEColorMatrixElement::sStringInfo[2] = { {nsGkAtoms::result, kNameSpaceID_None, true}, @@ -71,16 +70,15 @@ FilterPrimitiveDescription SVGFEColorMatrixElement::GetPrimitiveDescription( SVGFilterInstance* aInstance, const IntRect& aFilterSubregion, const nsTArray& aInputsAreTainted, nsTArray>& aInputImages) { - SVGFEColorMatrixType type = - SVGFEColorMatrixType(mEnumAttributes[TYPE].GetAnimValue()); + uint32_t type = mEnumAttributes[TYPE].GetAnimValue(); const SVGNumberList& values = mNumberListAttributes[VALUES].GetAnimValue(); ColorMatrixAttributes atts; if (!mNumberListAttributes[VALUES].IsExplicitlySet() && - (type == SVGFEColorMatrixType::Matrix || - type == SVGFEColorMatrixType::Saturate || - type == SVGFEColorMatrixType::HueRotate)) { - atts.mType = SVGFEColorMatrixType::Matrix; + (type == SVG_FECOLORMATRIX_TYPE_MATRIX || + type == SVG_FECOLORMATRIX_TYPE_SATURATE || + type == SVG_FECOLORMATRIX_TYPE_HUE_ROTATE)) { + atts.mType = (uint32_t)SVG_FECOLORMATRIX_TYPE_MATRIX; static const auto identityMatrix = std::array{ // clang-format off 1, 0, 0, 0, 0, diff --git a/icecat/dom/svg/SVGFEComponentTransferElement.cpp b/icecat/dom/svg/SVGFEComponentTransferElement.cpp index e7e07f5013..b9156e011d 100644 --- a/icecat/dom/svg/SVGFEComponentTransferElement.cpp +++ b/icecat/dom/svg/SVGFEComponentTransferElement.cpp @@ -68,7 +68,7 @@ SVGFEComponentTransferElement::GetPrimitiveDescription( if (childForChannel[i]) { childForChannel[i]->ComputeAttributes(i, atts); } else { - atts.mTypes[i] = SVGFEComponentTransferType::Identity; + atts.mTypes[i] = (uint8_t)SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY; } } return FilterPrimitiveDescription(AsVariant(std::move(atts))); diff --git a/icecat/dom/svg/SVGFECompositeElement.cpp b/icecat/dom/svg/SVGFECompositeElement.cpp index e6bf018b45..9d19760ae1 100644 --- a/icecat/dom/svg/SVGFECompositeElement.cpp +++ b/icecat/dom/svg/SVGFECompositeElement.cpp @@ -27,18 +27,17 @@ SVGElement::NumberInfo SVGFECompositeElement::sNumberInfo[4] = { {nsGkAtoms::k4, 0}}; SVGEnumMapping SVGFECompositeElement::sOperatorMap[] = { - {nsGkAtoms::over, uint8_t(SVGFECompositeOperator::Over)}, - {nsGkAtoms::in, uint8_t(SVGFECompositeOperator::In)}, - {nsGkAtoms::out, uint8_t(SVGFECompositeOperator::Out)}, - {nsGkAtoms::atop, uint8_t(SVGFECompositeOperator::Atop)}, - {nsGkAtoms::xor_, uint8_t(SVGFECompositeOperator::Xor)}, - {nsGkAtoms::arithmetic, uint8_t(SVGFECompositeOperator::Arithmetic)}, - {nsGkAtoms::lighter, uint8_t(SVGFECompositeOperator::Lighter)}, + {nsGkAtoms::over, SVG_FECOMPOSITE_OPERATOR_OVER}, + {nsGkAtoms::in, SVG_FECOMPOSITE_OPERATOR_IN}, + {nsGkAtoms::out, SVG_FECOMPOSITE_OPERATOR_OUT}, + {nsGkAtoms::atop, SVG_FECOMPOSITE_OPERATOR_ATOP}, + {nsGkAtoms::xor_, SVG_FECOMPOSITE_OPERATOR_XOR}, + {nsGkAtoms::arithmetic, SVG_FECOMPOSITE_OPERATOR_ARITHMETIC}, + {nsGkAtoms::lighter, SVG_FECOMPOSITE_OPERATOR_LIGHTER}, {nullptr, 0}}; SVGElement::EnumInfo SVGFECompositeElement::sEnumInfo[1] = { - {nsGkAtoms::_operator, sOperatorMap, - uint8_t(SVGFECompositeOperator::Over)}}; + {nsGkAtoms::_operator, sOperatorMap, SVG_FECOMPOSITE_OPERATOR_OVER}}; SVGElement::StringInfo SVGFECompositeElement::sStringInfo[3] = { {nsGkAtoms::result, kNameSpaceID_None, true}, @@ -90,10 +89,10 @@ FilterPrimitiveDescription SVGFECompositeElement::GetPrimitiveDescription( const nsTArray& aInputsAreTainted, nsTArray>& aInputImages) { CompositeAttributes atts; - atts.mOperator = - SVGFECompositeOperator(mEnumAttributes[OPERATOR].GetAnimValue()); + uint32_t op = mEnumAttributes[OPERATOR].GetAnimValue(); + atts.mOperator = op; - if (atts.mOperator == SVGFECompositeOperator::Arithmetic) { + if (op == SVG_FECOMPOSITE_OPERATOR_ARITHMETIC) { std::array k; GetAnimatedNumberValues(&k[0], &k[1], &k[2], &k[3], nullptr); atts.mCoefficients.AppendElements(Span(k)); diff --git a/icecat/dom/svg/SVGFEConvolveMatrixElement.cpp b/icecat/dom/svg/SVGFEConvolveMatrixElement.cpp index 806408e9d2..5550fa53a9 100644 --- a/icecat/dom/svg/SVGFEConvolveMatrixElement.cpp +++ b/icecat/dom/svg/SVGFEConvolveMatrixElement.cpp @@ -42,13 +42,13 @@ SVGElement::BooleanInfo SVGFEConvolveMatrixElement::sBooleanInfo[1] = { {nsGkAtoms::preserveAlpha, false}}; SVGEnumMapping SVGFEConvolveMatrixElement::sEdgeModeMap[] = { - {nsGkAtoms::duplicate, uint8_t(SVGEdgeMode::Duplicate)}, - {nsGkAtoms::wrap, uint8_t(SVGEdgeMode::Wrap)}, - {nsGkAtoms::none, uint8_t(SVGEdgeMode::None)}, + {nsGkAtoms::duplicate, SVG_EDGEMODE_DUPLICATE}, + {nsGkAtoms::wrap, SVG_EDGEMODE_WRAP}, + {nsGkAtoms::none, SVG_EDGEMODE_NONE}, {nullptr, 0}}; SVGElement::EnumInfo SVGFEConvolveMatrixElement::sEnumInfo[1] = { - {nsGkAtoms::edgeMode, sEdgeModeMap, uint8_t(SVGEdgeMode::Duplicate)}}; + {nsGkAtoms::edgeMode, sEdgeModeMap, SVG_EDGEMODE_DUPLICATE}}; SVGElement::StringInfo SVGFEConvolveMatrixElement::sStringInfo[2] = { {nsGkAtoms::result, kNameSpaceID_None, true}, @@ -174,7 +174,7 @@ FilterPrimitiveDescription SVGFEConvolveMatrixElement::GetPrimitiveDescription( if (divisor == 0) divisor = 1; } - SVGEdgeMode edgeMode = SVGEdgeMode(mEnumAttributes[EDGEMODE].GetAnimValue()); + uint32_t edgeMode = mEnumAttributes[EDGEMODE].GetAnimValue(); bool preserveAlpha = mBooleanAttributes[PRESERVEALPHA].GetAnimValue(); float bias = mNumberAttributes[BIAS].GetAnimValue(); diff --git a/icecat/dom/svg/SVGFEDisplacementMapElement.cpp b/icecat/dom/svg/SVGFEDisplacementMapElement.cpp index 027bf71224..211e8b7413 100644 --- a/icecat/dom/svg/SVGFEDisplacementMapElement.cpp +++ b/icecat/dom/svg/SVGFEDisplacementMapElement.cpp @@ -26,15 +26,15 @@ SVGElement::NumberInfo SVGFEDisplacementMapElement::sNumberInfo[1] = { }; SVGEnumMapping SVGFEDisplacementMapElement::sChannelMap[] = { - {nsGkAtoms::R, uint8_t(SVGChannel::R)}, - {nsGkAtoms::G, uint8_t(SVGChannel::G)}, - {nsGkAtoms::B, uint8_t(SVGChannel::B)}, - {nsGkAtoms::A, uint8_t(SVGChannel::A)}, + {nsGkAtoms::R, SVG_CHANNEL_R}, + {nsGkAtoms::G, SVG_CHANNEL_G}, + {nsGkAtoms::B, SVG_CHANNEL_B}, + {nsGkAtoms::A, SVG_CHANNEL_A}, {nullptr, 0}}; SVGElement::EnumInfo SVGFEDisplacementMapElement::sEnumInfo[2] = { - {nsGkAtoms::xChannelSelector, sChannelMap, uint8_t(SVGChannel::A)}, - {nsGkAtoms::yChannelSelector, sChannelMap, uint8_t(SVGChannel::A)}}; + {nsGkAtoms::xChannelSelector, sChannelMap, SVG_CHANNEL_A}, + {nsGkAtoms::yChannelSelector, sChannelMap, SVG_CHANNEL_A}}; SVGElement::StringInfo SVGFEDisplacementMapElement::sStringInfo[3] = { {nsGkAtoms::result, kNameSpaceID_None, true}, @@ -84,10 +84,12 @@ FilterPrimitiveDescription SVGFEDisplacementMapElement::GetPrimitiveDescription( float scale = aInstance->GetPrimitiveNumber(SVGContentUtils::XY, &mNumberAttributes[SCALE]); + uint32_t xChannel = mEnumAttributes[CHANNEL_X].GetAnimValue(); + uint32_t yChannel = mEnumAttributes[CHANNEL_Y].GetAnimValue(); DisplacementMapAttributes atts; atts.mScale = scale; - atts.mXChannel = SVGChannel(mEnumAttributes[CHANNEL_X].GetAnimValue()); - atts.mYChannel = SVGChannel(mEnumAttributes[CHANNEL_Y].GetAnimValue()); + atts.mXChannel = xChannel; + atts.mYChannel = yChannel; return FilterPrimitiveDescription(AsVariant(std::move(atts))); } diff --git a/icecat/dom/svg/SVGFEMorphologyElement.cpp b/icecat/dom/svg/SVGFEMorphologyElement.cpp index 2ff64313b4..a897035c04 100644 --- a/icecat/dom/svg/SVGFEMorphologyElement.cpp +++ b/icecat/dom/svg/SVGFEMorphologyElement.cpp @@ -25,13 +25,12 @@ SVGElement::NumberPairInfo SVGFEMorphologyElement::sNumberPairInfo[1] = { {nsGkAtoms::radius, 0, 0}}; SVGEnumMapping SVGFEMorphologyElement::sOperatorMap[] = { - {nsGkAtoms::erode, uint8_t(SVGMorphologyOperator::Erode)}, - {nsGkAtoms::dilate, uint8_t(SVGMorphologyOperator::Dilate)}, + {nsGkAtoms::erode, SVG_OPERATOR_ERODE}, + {nsGkAtoms::dilate, SVG_OPERATOR_DILATE}, {nullptr, 0}}; SVGElement::EnumInfo SVGFEMorphologyElement::sEnumInfo[1] = { - {nsGkAtoms::_operator, sOperatorMap, - uint8_t(SVGMorphologyOperator::Erode)}}; + {nsGkAtoms::_operator, sOperatorMap, SVG_OPERATOR_ERODE}}; SVGElement::StringInfo SVGFEMorphologyElement::sStringInfo[2] = { {nsGkAtoms::result, kNameSpaceID_None, true}, @@ -98,8 +97,7 @@ FilterPrimitiveDescription SVGFEMorphologyElement::GetPrimitiveDescription( GetRXY(&rx, &ry, *aInstance); MorphologyAttributes atts; atts.mRadii = Size(rx, ry); - atts.mOperator = - SVGMorphologyOperator(mEnumAttributes[OPERATOR].GetAnimValue()); + atts.mOperator = (uint32_t)mEnumAttributes[OPERATOR].GetAnimValue(); return FilterPrimitiveDescription(AsVariant(std::move(atts))); } diff --git a/icecat/dom/svg/SVGFETurbulenceElement.cpp b/icecat/dom/svg/SVGFETurbulenceElement.cpp index 917e667ef8..ae22c4bcf8 100644 --- a/icecat/dom/svg/SVGFETurbulenceElement.cpp +++ b/icecat/dom/svg/SVGFETurbulenceElement.cpp @@ -37,8 +37,8 @@ SVGElement::IntegerInfo SVGFETurbulenceElement::sIntegerInfo[1] = { {nsGkAtoms::numOctaves, 1}}; SVGEnumMapping SVGFETurbulenceElement::sTypeMap[] = { - {nsGkAtoms::fractalNoise, uint8_t(SVGTurbulenceType::FractalNoise)}, - {nsGkAtoms::turbulence, uint8_t(SVGTurbulenceType::Turbulence)}, + {nsGkAtoms::fractalNoise, SVG_TURBULENCE_TYPE_FRACTALNOISE}, + {nsGkAtoms::turbulence, SVG_TURBULENCE_TYPE_TURBULENCE}, {nullptr, 0}}; SVGEnumMapping SVGFETurbulenceElement::sStitchTilesMap[] = { @@ -47,7 +47,7 @@ SVGEnumMapping SVGFETurbulenceElement::sStitchTilesMap[] = { {nullptr, 0}}; SVGElement::EnumInfo SVGFETurbulenceElement::sEnumInfo[2] = { - {nsGkAtoms::type, sTypeMap, uint8_t(SVGTurbulenceType::Turbulence)}, + {nsGkAtoms::type, sTypeMap, SVG_TURBULENCE_TYPE_TURBULENCE}, {nsGkAtoms::stitchTiles, sStitchTilesMap, SVG_STITCHTYPE_NOSTITCH}}; SVGElement::StringInfo SVGFETurbulenceElement::sStringInfo[1] = { @@ -100,14 +100,13 @@ FilterPrimitiveDescription SVGFETurbulenceElement::GetPrimitiveDescription( float seed = mNumberAttributes[OCTAVES].GetAnimValue(); uint32_t octaves = std::clamp(mIntegerAttributes[OCTAVES].GetAnimValue(), 0, MAX_OCTAVES); - SVGTurbulenceType type = - SVGTurbulenceType(mEnumAttributes[TYPE].GetAnimValue()); + uint32_t type = mEnumAttributes[TYPE].GetAnimValue(); uint16_t stitch = mEnumAttributes[STITCHTILES].GetAnimValue(); if (fX == 0 && fY == 0) { // A base frequency of zero results in transparent black for // type="turbulence" and in 50% alpha 50% gray for type="fractalNoise". - if (type == SVGTurbulenceType::Turbulence) { + if (type == SVG_TURBULENCE_TYPE_TURBULENCE) { return FilterPrimitiveDescription(); } FloodAttributes atts; diff --git a/icecat/dom/svg/SVGFilters.cpp b/icecat/dom/svg/SVGFilters.cpp index 873d9f5188..07d3370498 100644 --- a/icecat/dom/svg/SVGFilters.cpp +++ b/icecat/dom/svg/SVGFilters.cpp @@ -146,15 +146,15 @@ SVGElement::NumberInfo SVGComponentTransferFunctionElement::sNumberInfo[5] = { {nsGkAtoms::offset, 0}}; SVGEnumMapping SVGComponentTransferFunctionElement::sTypeMap[] = { - {nsGkAtoms::identity, uint8_t(SVGFEComponentTransferType::Identity)}, - {nsGkAtoms::table, uint8_t(SVGFEComponentTransferType::Table)}, - {nsGkAtoms::discrete, uint8_t(SVGFEComponentTransferType::Discrete)}, - {nsGkAtoms::linear, uint8_t(SVGFEComponentTransferType::Linear)}, - {nsGkAtoms::gamma, uint8_t(SVGFEComponentTransferType::Gamma)}, + {nsGkAtoms::identity, SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY}, + {nsGkAtoms::table, SVG_FECOMPONENTTRANSFER_TYPE_TABLE}, + {nsGkAtoms::discrete, SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE}, + {nsGkAtoms::linear, SVG_FECOMPONENTTRANSFER_TYPE_LINEAR}, + {nsGkAtoms::gamma, SVG_FECOMPONENTTRANSFER_TYPE_GAMMA}, {nullptr, 0}}; SVGElement::EnumInfo SVGComponentTransferFunctionElement::sEnumInfo[1] = { - {nsGkAtoms::type, sTypeMap, uint8_t(SVGFEComponentTransferType::Identity)}}; + {nsGkAtoms::type, sTypeMap, SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY}}; //---------------------------------------------------------------------- // nsSVGFilterPrimitiveChildElement methods @@ -210,8 +210,7 @@ SVGComponentTransferFunctionElement::Offset() { void SVGComponentTransferFunctionElement::ComputeAttributes( int32_t aChannel, ComponentTransferAttributes& aAttributes) { - SVGFEComponentTransferType type = - SVGFEComponentTransferType(mEnumAttributes[TYPE].GetAnimValue()); + uint32_t type = mEnumAttributes[TYPE].GetAnimValue(); float slope, intercept, amplitude, exponent, offset; GetAnimatedNumberValues(&slope, &intercept, &litude, &exponent, &offset, @@ -220,16 +219,16 @@ void SVGComponentTransferFunctionElement::ComputeAttributes( const SVGNumberList& tableValues = mNumberListAttributes[TABLEVALUES].GetAnimValue(); - aAttributes.mTypes[aChannel] = type; + aAttributes.mTypes[aChannel] = (uint8_t)type; switch (type) { - case SVGFEComponentTransferType::Linear: { + case SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: { aAttributes.mValues[aChannel].SetLength(2); aAttributes.mValues[aChannel][kComponentTransferSlopeIndex] = slope; aAttributes.mValues[aChannel][kComponentTransferInterceptIndex] = intercept; break; } - case SVGFEComponentTransferType::Gamma: { + case SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: { aAttributes.mValues[aChannel].SetLength(3); aAttributes.mValues[aChannel][kComponentTransferAmplitudeIndex] = amplitude; @@ -237,16 +236,14 @@ void SVGComponentTransferFunctionElement::ComputeAttributes( aAttributes.mValues[aChannel][kComponentTransferOffsetIndex] = offset; break; } - case SVGFEComponentTransferType::Discrete: - case SVGFEComponentTransferType::Table: { + case SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: + case SVG_FECOMPONENTTRANSFER_TYPE_TABLE: { if (!tableValues.IsEmpty()) { aAttributes.mValues[aChannel].AppendElements(&tableValues[0], tableValues.Length()); } break; } - default: - break; } } diff --git a/icecat/dom/svg/SVGFragmentIdentifier.cpp b/icecat/dom/svg/SVGFragmentIdentifier.cpp index 3c65cd72f1..6652ff9bc1 100644 --- a/icecat/dom/svg/SVGFragmentIdentifier.cpp +++ b/icecat/dom/svg/SVGFragmentIdentifier.cpp @@ -152,7 +152,7 @@ bool SVGFragmentIdentifier::ProcessFragmentIdentifier( MOZ_ASSERT(aDocument->GetRootElement()->IsSVGElement(nsGkAtoms::svg), "expecting an SVG root element"); - RefPtr rootElement = SVGSVGElement::FromNode(aDocument->GetRootElement()); + auto* rootElement = SVGSVGElement::FromNode(aDocument->GetRootElement()); const auto* viewElement = SVGViewElement::FromNodeOrNull(aDocument->GetElementById(aAnchorName)); diff --git a/icecat/dom/webauthn/AuthenticatorAssertionResponse.cpp b/icecat/dom/webauthn/AuthenticatorAssertionResponse.cpp index dc6821f996..9824edc30b 100644 --- a/icecat/dom/webauthn/AuthenticatorAssertionResponse.cpp +++ b/icecat/dom/webauthn/AuthenticatorAssertionResponse.cpp @@ -14,11 +14,17 @@ namespace mozilla::dom { NS_IMPL_CYCLE_COLLECTION_CLASS(AuthenticatorAssertionResponse) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(AuthenticatorAssertionResponse, AuthenticatorResponse) + tmp->mAuthenticatorDataCachedObj = nullptr; + tmp->mSignatureCachedObj = nullptr; + tmp->mUserHandleCachedObj = nullptr; NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(AuthenticatorAssertionResponse, AuthenticatorResponse) NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER + NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mAuthenticatorDataCachedObj) + NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mSignatureCachedObj) + NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mUserHandleCachedObj) NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED( @@ -33,7 +39,16 @@ NS_INTERFACE_MAP_END_INHERITING(AuthenticatorResponse) AuthenticatorAssertionResponse::AuthenticatorAssertionResponse( nsPIDOMWindowInner* aParent) - : AuthenticatorResponse(aParent) {} + : AuthenticatorResponse(aParent), + mAuthenticatorDataCachedObj(nullptr), + mSignatureCachedObj(nullptr), + mUserHandleCachedObj(nullptr) { + mozilla::HoldJSObjects(this); +} + +AuthenticatorAssertionResponse::~AuthenticatorAssertionResponse() { + mozilla::DropJSObjects(this); +} JSObject* AuthenticatorAssertionResponse::WrapObject( JSContext* aCx, JS::Handle aGivenProto) { @@ -42,7 +57,14 @@ JSObject* AuthenticatorAssertionResponse::WrapObject( void AuthenticatorAssertionResponse::GetAuthenticatorData( JSContext* aCx, JS::MutableHandle aValue, ErrorResult& aRv) { - aValue.set(ArrayBuffer::Create(aCx, mAuthenticatorData, aRv)); + if (!mAuthenticatorDataCachedObj) { + mAuthenticatorDataCachedObj = + ArrayBuffer::Create(aCx, mAuthenticatorData, aRv); + if (aRv.Failed()) { + return; + } + } + aValue.set(mAuthenticatorDataCachedObj); } void AuthenticatorAssertionResponse::SetAuthenticatorData( @@ -52,7 +74,13 @@ void AuthenticatorAssertionResponse::SetAuthenticatorData( void AuthenticatorAssertionResponse::GetSignature( JSContext* aCx, JS::MutableHandle aValue, ErrorResult& aRv) { - aValue.set(ArrayBuffer::Create(aCx, mSignature, aRv)); + if (!mSignatureCachedObj) { + mSignatureCachedObj = ArrayBuffer::Create(aCx, mSignature, aRv); + if (aRv.Failed()) { + return; + } + } + aValue.set(mSignatureCachedObj); } void AuthenticatorAssertionResponse::SetSignature( @@ -68,7 +96,13 @@ void AuthenticatorAssertionResponse::GetUserHandle( if (mUserHandle.IsEmpty()) { aValue.set(nullptr); } else { - aValue.set(ArrayBuffer::Create(aCx, mUserHandle, aRv)); + if (!mUserHandleCachedObj) { + mUserHandleCachedObj = ArrayBuffer::Create(aCx, mUserHandle, aRv); + if (aRv.Failed()) { + return; + } + } + aValue.set(mUserHandleCachedObj); } } diff --git a/icecat/dom/webauthn/AuthenticatorAssertionResponse.h b/icecat/dom/webauthn/AuthenticatorAssertionResponse.h index b0c1b30982..75982800d1 100644 --- a/icecat/dom/webauthn/AuthenticatorAssertionResponse.h +++ b/icecat/dom/webauthn/AuthenticatorAssertionResponse.h @@ -26,7 +26,7 @@ class AuthenticatorAssertionResponse final : public AuthenticatorResponse { explicit AuthenticatorAssertionResponse(nsPIDOMWindowInner* aParent); protected: - ~AuthenticatorAssertionResponse() override = default; + ~AuthenticatorAssertionResponse() override; public: virtual JSObject* WrapObject(JSContext* aCx, @@ -51,8 +51,11 @@ class AuthenticatorAssertionResponse final : public AuthenticatorResponse { private: nsTArray mAuthenticatorData; + JS::Heap mAuthenticatorDataCachedObj; nsTArray mSignature; + JS::Heap mSignatureCachedObj; nsTArray mUserHandle; + JS::Heap mUserHandleCachedObj; }; } // namespace mozilla::dom diff --git a/icecat/dom/webauthn/AuthenticatorAttestationResponse.cpp b/icecat/dom/webauthn/AuthenticatorAttestationResponse.cpp index 31a94c82e4..7fe493dae3 100644 --- a/icecat/dom/webauthn/AuthenticatorAttestationResponse.cpp +++ b/icecat/dom/webauthn/AuthenticatorAttestationResponse.cpp @@ -6,6 +6,7 @@ #include "AuthrsBridge_ffi.h" #include "mozilla/Base64.h" +#include "mozilla/HoldDropJSObjects.h" #include "mozilla/dom/AuthenticatorAttestationResponse.h" #include "mozilla/dom/WebAuthenticationBinding.h" @@ -14,11 +15,13 @@ namespace mozilla::dom { NS_IMPL_CYCLE_COLLECTION_CLASS(AuthenticatorAttestationResponse) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED( AuthenticatorAttestationResponse, AuthenticatorResponse) + tmp->mAttestationObjectCachedObj = nullptr; NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(AuthenticatorAttestationResponse, AuthenticatorResponse) NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER + NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mAttestationObjectCachedObj) NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED( @@ -35,7 +38,13 @@ NS_INTERFACE_MAP_END_INHERITING(AuthenticatorResponse) AuthenticatorAttestationResponse::AuthenticatorAttestationResponse( nsPIDOMWindowInner* aParent) - : AuthenticatorResponse(aParent) {} + : AuthenticatorResponse(aParent), mAttestationObjectCachedObj(nullptr) { + mozilla::HoldJSObjects(this); +} + +AuthenticatorAttestationResponse::~AuthenticatorAttestationResponse() { + mozilla::DropJSObjects(this); +} JSObject* AuthenticatorAttestationResponse::WrapObject( JSContext* aCx, JS::Handle aGivenProto) { @@ -44,7 +53,14 @@ JSObject* AuthenticatorAttestationResponse::WrapObject( void AuthenticatorAttestationResponse::GetAttestationObject( JSContext* aCx, JS::MutableHandle aValue, ErrorResult& aRv) { - aValue.set(ArrayBuffer::Create(aCx, mAttestationObject, aRv)); + if (!mAttestationObjectCachedObj) { + mAttestationObjectCachedObj = + ArrayBuffer::Create(aCx, mAttestationObject, aRv); + if (aRv.Failed()) { + return; + } + } + aValue.set(mAttestationObjectCachedObj); } void AuthenticatorAttestationResponse::SetAttestationObject( diff --git a/icecat/dom/webauthn/AuthenticatorAttestationResponse.h b/icecat/dom/webauthn/AuthenticatorAttestationResponse.h index db4510410d..04b28be397 100644 --- a/icecat/dom/webauthn/AuthenticatorAttestationResponse.h +++ b/icecat/dom/webauthn/AuthenticatorAttestationResponse.h @@ -27,7 +27,7 @@ class AuthenticatorAttestationResponse final : public AuthenticatorResponse { explicit AuthenticatorAttestationResponse(nsPIDOMWindowInner* aParent); protected: - ~AuthenticatorAttestationResponse() override = default; + ~AuthenticatorAttestationResponse() override; public: virtual JSObject* WrapObject(JSContext* aCx, @@ -58,6 +58,7 @@ class AuthenticatorAttestationResponse final : public AuthenticatorResponse { nsTArray mAttestationObject; nsCOMPtr mAttestationObjectParsed; + JS::Heap mAttestationObjectCachedObj; nsTArray mTransports; }; diff --git a/icecat/dom/webauthn/AuthenticatorResponse.cpp b/icecat/dom/webauthn/AuthenticatorResponse.cpp index 52c33aa972..f0c3888fa8 100644 --- a/icecat/dom/webauthn/AuthenticatorResponse.cpp +++ b/icecat/dom/webauthn/AuthenticatorResponse.cpp @@ -12,7 +12,8 @@ namespace mozilla::dom { -NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(AuthenticatorResponse, mParent) +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_WITH_JS_MEMBERS( + AuthenticatorResponse, (mParent), (mClientDataJSONCachedObj)) NS_IMPL_CYCLE_COLLECTING_ADDREF(AuthenticatorResponse) NS_IMPL_CYCLE_COLLECTING_RELEASE(AuthenticatorResponse) @@ -23,15 +24,25 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(AuthenticatorResponse) NS_INTERFACE_MAP_END AuthenticatorResponse::AuthenticatorResponse(nsPIDOMWindowInner* aParent) - : mParent(aParent) {} + : mParent(aParent), mClientDataJSONCachedObj(nullptr) { + // Call HoldJSObjects() in subclasses. +} -AuthenticatorResponse::~AuthenticatorResponse() = default; +AuthenticatorResponse::~AuthenticatorResponse() { + // Call DropJSObjects() in subclasses. +} nsISupports* AuthenticatorResponse::GetParentObject() const { return mParent; } void AuthenticatorResponse::GetClientDataJSON( JSContext* aCx, JS::MutableHandle aValue, ErrorResult& aRv) { - aValue.set(ArrayBuffer::Create(aCx, mClientDataJSON, aRv)); + if (!mClientDataJSONCachedObj) { + mClientDataJSONCachedObj = ArrayBuffer::Create(aCx, mClientDataJSON, aRv); + if (aRv.Failed()) { + return; + } + } + aValue.set(mClientDataJSONCachedObj); } void AuthenticatorResponse::SetClientDataJSON(const nsCString& aBuffer) { diff --git a/icecat/dom/webauthn/AuthenticatorResponse.h b/icecat/dom/webauthn/AuthenticatorResponse.h index 81d0c2c9ab..b0abb3185c 100644 --- a/icecat/dom/webauthn/AuthenticatorResponse.h +++ b/icecat/dom/webauthn/AuthenticatorResponse.h @@ -21,7 +21,7 @@ namespace mozilla::dom { class AuthenticatorResponse : public nsISupports, public nsWrapperCache { public: NS_DECL_CYCLE_COLLECTING_ISUPPORTS - NS_DECL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS(AuthenticatorResponse) + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(AuthenticatorResponse) explicit AuthenticatorResponse(nsPIDOMWindowInner* aParent); @@ -43,6 +43,7 @@ class AuthenticatorResponse : public nsISupports, public nsWrapperCache { private: nsCOMPtr mParent; + JS::Heap mClientDataJSONCachedObj; }; } // namespace mozilla::dom diff --git a/icecat/dom/webauthn/MacOSWebAuthnService.mm b/icecat/dom/webauthn/MacOSWebAuthnService.mm index a3a1e8062a..1c43967a52 100644 --- a/icecat/dom/webauthn/MacOSWebAuthnService.mm +++ b/icecat/dom/webauthn/MacOSWebAuthnService.mm @@ -319,9 +319,8 @@ NSDictionary* keys = [NSMutableArray arrayWithCapacity:count]; - NSMutableArray* - objects = [NSMutableArray arrayWithCapacity:count]; + NSData* keys[count]; + ASAuthorizationPublicKeyCredentialPRFAssertionInputValues* objects[count]; for (size_t i = 0; i < count; i++) { NSData* saltInput1 = [NSData dataWithBytes:prfEvalByCredFirsts[i].Elements() length:prfEvalByCredFirsts[i].Length()]; @@ -330,15 +329,15 @@ NSDictionary hints; - (void)aArgs->GetHints(hints); - for (nsString& hint : hints) { - if (hint.Equals(u"hybrid"_ns)) { - hasHybridHint = true; - } - } - platformRegistrationRequest.shouldShowHybridTransport = - hints.Length() == 0 || hasHybridHint; - } if (__builtin_available(macos 14.0, *)) { bool largeBlobSupportRequired; nsresult rv = @@ -1188,19 +1173,11 @@ void MacOSWebAuthnService::DoGetAssertion( *userVerificationPreference; } if (__builtin_available(macos 13.5, *)) { - // Show the hybrid transport option if (1) none of the allowlist - // credentials list transports, or (2) at least one allow list entry - // lists the hybrid transport, or (3) the request has the hybrid hint. + // Show the hybrid transport option if (1) we have no transport hints + // or (2) at least one allow list entry lists the hybrid transport. bool shouldShowHybridTransport = !transports || (transports & MOZ_WEBAUTHN_AUTHENTICATOR_TRANSPORT_ID_HYBRID); - nsTArray hints; - (void)aArgs->GetHints(hints); - for (nsString& hint : hints) { - if (hint.Equals(u"hybrid"_ns)) { - shouldShowHybridTransport = true; - } - } platformAssertionRequest.shouldShowHybridTransport = shouldShowHybridTransport; } diff --git a/icecat/dom/webauthn/PWebAuthnTransaction.ipdl b/icecat/dom/webauthn/PWebAuthnTransaction.ipdl index 0f7c6c879e..28ac462c7d 100644 --- a/icecat/dom/webauthn/PWebAuthnTransaction.ipdl +++ b/icecat/dom/webauthn/PWebAuthnTransaction.ipdl @@ -143,7 +143,6 @@ struct WebAuthnMakeCredentialInfo { WebAuthnExtension[] Extensions; WebAuthnAuthenticatorSelection AuthenticatorSelection; nsString attestationConveyancePreference; - nsString[] Hints; }; struct WebAuthnMakeCredentialResult { @@ -169,7 +168,6 @@ struct WebAuthnGetAssertionInfo { WebAuthnExtension[] Extensions; nsString userVerificationRequirement; bool ConditionallyMediated; - nsString[] Hints; }; struct WebAuthnGetAssertionResult { diff --git a/icecat/dom/webauthn/PublicKeyCredential.cpp b/icecat/dom/webauthn/PublicKeyCredential.cpp index 6eecbd9e7a..97b912e93b 100644 --- a/icecat/dom/webauthn/PublicKeyCredential.cpp +++ b/icecat/dom/webauthn/PublicKeyCredential.cpp @@ -5,6 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mozilla/Base64.h" +#include "mozilla/HoldDropJSObjects.h" #include "mozilla/Preferences.h" #include "mozilla/StaticPrefs_security.h" #include "mozilla/dom/AuthenticatorResponse.h" @@ -27,12 +28,12 @@ namespace mozilla::dom { NS_IMPL_CYCLE_COLLECTION_CLASS(PublicKeyCredential) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(PublicKeyCredential, Credential) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mAttestationResponse) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mAssertionResponse) + tmp->mRawIdCachedObj = nullptr; NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(PublicKeyCredential, Credential) NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER + NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mRawIdCachedObj) NS_IMPL_CYCLE_COLLECTION_TRACE_END NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(PublicKeyCredential, @@ -48,7 +49,11 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(PublicKeyCredential) NS_INTERFACE_MAP_END_INHERITING(Credential) PublicKeyCredential::PublicKeyCredential(nsPIDOMWindowInner* aParent) - : Credential(aParent) {} + : Credential(aParent), mRawIdCachedObj(nullptr) { + mozilla::HoldJSObjects(this); +} + +PublicKeyCredential::~PublicKeyCredential() { mozilla::DropJSObjects(this); } JSObject* PublicKeyCredential::WrapObject(JSContext* aCx, JS::Handle aGivenProto) { @@ -58,7 +63,13 @@ JSObject* PublicKeyCredential::WrapObject(JSContext* aCx, void PublicKeyCredential::GetRawId(JSContext* aCx, JS::MutableHandle aValue, ErrorResult& aRv) { - aValue.set(ArrayBuffer::Create(aCx, mRawId, aRv)); + if (!mRawIdCachedObj) { + mRawIdCachedObj = ArrayBuffer::Create(aCx, mRawId, aRv); + if (aRv.Failed()) { + return; + } + } + aValue.set(mRawIdCachedObj); } void PublicKeyCredential::GetAuthenticatorAttachment( @@ -648,8 +659,6 @@ void PublicKeyCredential::ParseCreationOptionsFromJSON( aResult.mAuthenticatorSelection = aOptions.mAuthenticatorSelection.Value(); } - aResult.mHints = aOptions.mHints; - aResult.mAttestation = aOptions.mAttestation; if (aOptions.mExtensions.WasPassed()) { @@ -743,8 +752,6 @@ void PublicKeyCredential::ParseRequestOptionsFromJSON( aResult.mUserVerification = aOptions.mUserVerification; - aResult.mHints = aOptions.mHints; - if (aOptions.mExtensions.WasPassed()) { if (aOptions.mExtensions.Value().mAppid.WasPassed()) { aResult.mExtensions.mAppid.Construct( diff --git a/icecat/dom/webauthn/PublicKeyCredential.h b/icecat/dom/webauthn/PublicKeyCredential.h index ff531d391d..f110e9cc49 100644 --- a/icecat/dom/webauthn/PublicKeyCredential.h +++ b/icecat/dom/webauthn/PublicKeyCredential.h @@ -27,7 +27,7 @@ class PublicKeyCredential final : public Credential { explicit PublicKeyCredential(nsPIDOMWindowInner* aParent); protected: - ~PublicKeyCredential() override = default; + ~PublicKeyCredential() override; public: virtual JSObject* WrapObject(JSContext* aCx, @@ -97,6 +97,7 @@ class PublicKeyCredential final : public Credential { private: nsTArray mRawId; + JS::Heap mRawIdCachedObj; Maybe mAuthenticatorAttachment; RefPtr mAttestationResponse; RefPtr mAssertionResponse; diff --git a/icecat/dom/webauthn/WebAuthnArgs.cpp b/icecat/dom/webauthn/WebAuthnArgs.cpp index b765805f1e..6a475613eb 100644 --- a/icecat/dom/webauthn/WebAuthnArgs.cpp +++ b/icecat/dom/webauthn/WebAuthnArgs.cpp @@ -245,12 +245,6 @@ WebAuthnRegisterArgs::GetLargeBlobSupportRequired( return NS_ERROR_NOT_AVAILABLE; } -NS_IMETHODIMP -WebAuthnRegisterArgs::GetHints(nsTArray& aHints) { - aHints.Assign(mInfo.Hints()); - return NS_OK; -} - NS_IMPL_ISUPPORTS(WebAuthnSignArgs, nsIWebAuthnSignArgs) NS_IMETHODIMP @@ -490,10 +484,4 @@ WebAuthnSignArgs::GetLargeBlobWrite(nsTArray& aLargeBlobWrite) { return NS_ERROR_NOT_AVAILABLE; } -NS_IMETHODIMP -WebAuthnSignArgs::GetHints(nsTArray& aHints) { - aHints.Assign(mInfo.Hints()); - return NS_OK; -} - } // namespace mozilla::dom diff --git a/icecat/dom/webauthn/WebAuthnHandler.cpp b/icecat/dom/webauthn/WebAuthnHandler.cpp index ad2c5b200c..e3df8f341f 100644 --- a/icecat/dom/webauthn/WebAuthnHandler.cpp +++ b/icecat/dom/webauthn/WebAuthnHandler.cpp @@ -392,7 +392,7 @@ already_AddRefed WebAuthnHandler::MakeCredential( WebAuthnMakeCredentialInfo info(rpId, challenge, adjustedTimeout, excludeList, rpInfo, userInfo, coseAlgos, extensions, - authSelection, attestation, aOptions.mHints); + authSelection, attestation); // Set up the transaction state. Fallible operations should not be performed // below this line, as we must not leave the transaction state partially @@ -430,6 +430,8 @@ already_AddRefed WebAuthnHandler::MakeCredential( return promise.forget(); } +const size_t MAX_ALLOWED_CREDENTIALS = 20; + already_AddRefed WebAuthnHandler::GetAssertion( const PublicKeyCredentialRequestOptions& aOptions, const bool aConditionallyMediated, @@ -492,7 +494,7 @@ already_AddRefed WebAuthnHandler::GetAssertion( } // Abort the request if the allowCredentials set is too large - if (aOptions.mAllowCredentials.Length() > kWebAuthnMaxAllowedCredentials) { + if (aOptions.mAllowCredentials.Length() > MAX_ALLOWED_CREDENTIALS) { promise->MaybeReject(NS_ERROR_DOM_SECURITY_ERR); return promise.forget(); } @@ -664,7 +666,7 @@ already_AddRefed WebAuthnHandler::GetAssertion( WebAuthnGetAssertionInfo info( rpId, maybeAppId, challenge, adjustedTimeout, allowList, extensions, - aOptions.mUserVerification, aConditionallyMediated, aOptions.mHints); + aOptions.mUserVerification, aConditionallyMediated); // Set up the transaction state. Fallible operations should not be performed // below this line, as we must not leave the transaction state partially diff --git a/icecat/dom/webauthn/WebAuthnTransactionParent.cpp b/icecat/dom/webauthn/WebAuthnTransactionParent.cpp index 2d244f38ed..010f785e11 100644 --- a/icecat/dom/webauthn/WebAuthnTransactionParent.cpp +++ b/icecat/dom/webauthn/WebAuthnTransactionParent.cpp @@ -386,16 +386,6 @@ mozilla::ipc::IPCResult WebAuthnTransactionParent::RecvRequestSign( return IPC_OK(); } - for (const WebAuthnExtension& ext : aTransactionInfo.Extensions()) { - if (ext.type() == WebAuthnExtension::TWebAuthnExtensionPrf) { - if (ext.get_WebAuthnExtensionPrf().evalByCredential().Length() > - kWebAuthnMaxAllowedCredentials) { - aResolver(NS_ERROR_DOM_NOT_ALLOWED_ERR); - return IPC_OK(); - } - } - } - nsCString clientDataJSON; rv = AssembleClientData(manager, "webauthn.get"_ns, aTransactionInfo.Challenge(), clientDataJSON); diff --git a/icecat/dom/webauthn/WebAuthnUtil.h b/icecat/dom/webauthn/WebAuthnUtil.h index 35804323e3..0806db47e0 100644 --- a/icecat/dom/webauthn/WebAuthnUtil.h +++ b/icecat/dom/webauthn/WebAuthnUtil.h @@ -12,8 +12,6 @@ namespace mozilla::dom { -static const size_t kWebAuthnMaxAllowedCredentials = 20; - bool IsValidAppId(const nsCOMPtr& aPrincipal, const nsCString& aAppId); diff --git a/icecat/dom/webauthn/WinWebAuthnService.cpp b/icecat/dom/webauthn/WinWebAuthnService.cpp index 22477501c0..72bef99935 100644 --- a/icecat/dom/webauthn/WinWebAuthnService.cpp +++ b/icecat/dom/webauthn/WinWebAuthnService.cpp @@ -30,10 +30,6 @@ StaticRWLock gWinWebAuthnModuleLock; static bool gWinWebAuthnModuleUnusable = false; static HMODULE gWinWebAuthnModule = 0; -static const LPCWSTR gWebAuthnHintStrings[3] = { - WEBAUTHN_CREDENTIAL_HINT_SECURITY_KEY, - WEBAUTHN_CREDENTIAL_HINT_CLIENT_DEVICE, WEBAUTHN_CREDENTIAL_HINT_HYBRID}; - static decltype(WebAuthNIsUserVerifyingPlatformAuthenticatorAvailable)* gWinWebauthnIsUVPAA = nullptr; static decltype(WebAuthNAuthenticatorMakeCredential)* @@ -54,6 +50,7 @@ static decltype(WebAuthNGetPlatformCredentialList)* gWinWebauthnGetPlatformCredentialList = nullptr; static decltype(WebAuthNFreePlatformCredentialList)* gWinWebauthnFreePlatformCredentialList = nullptr; + } // namespace /*********************************************************************** @@ -179,18 +176,6 @@ WinWebAuthnService::~WinWebAuthnService() { gWinWebAuthnModule = 0; } -// static -void PrunePublicKeyCredentialHints(const nsTArray& aInHints, - /* out */ nsTArray& aOutHints) { - for (const nsString& inputHint : aInHints) { - for (const LPCWSTR knownHint : gWebAuthnHintStrings) { - if (inputHint.Equals(knownHint)) { - aOutHints.AppendElement(knownHint); - } - } - } -} - // static bool WinWebAuthnService::AreWebAuthNApisAvailable() { nsresult rv = EnsureWinWebAuthnModuleLoaded(); @@ -609,16 +594,10 @@ WinWebAuthnService::MakeCredential(uint64_t aTransactionId, winPrivateBrowsing = TRUE; } - nsTArray inputHints; - (void)aArgs->GetHints(inputHints); - - nsTArray hints; - PrunePublicKeyCredentialHints(inputHints, hints); - // MakeCredentialOptions WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS WebAuthNCredentialOptions = { - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_8, + WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7, timeout, {0, NULL}, {0, NULL}, @@ -630,16 +609,13 @@ WinWebAuthnService::MakeCredential(uint64_t aTransactionId, &cancellationId, // CancellationId pExcludeCredentialList, WEBAUTHN_ENTERPRISE_ATTESTATION_NONE, - largeBlobSupport, // LargeBlobSupport - winPreferResidentKey, // PreferResidentKey - winPrivateBrowsing, // BrowserInPrivateMode - winEnablePrf, // EnablePrf - NULL, // LinkedDevice - 0, // size of JsonExt - NULL, // JsonExt - NULL, // PRFGlobalEval - (DWORD)hints.Length(), // Size of CredentialHints - hints.Elements(), // CredentialHints + largeBlobSupport, // LargeBlobSupport + winPreferResidentKey, // PreferResidentKey + winPrivateBrowsing, // BrowserInPrivateMode + winEnablePrf, // EnablePrf + NULL, // LinkedDevice + 0, // size of JsonExt + NULL, // JsonExt }; if (rgExtension.Length() != 0) { @@ -992,12 +968,6 @@ void WinWebAuthnService::DoGetAssertion( pAllowCredentialList = &allowCredentialList; } - nsTArray inputHints; - (void)aArgs->GetHints(inputHints); - - nsTArray hints; - PrunePublicKeyCredentialHints(inputHints, hints); - uint32_t timeout_u32; Unused << aArgs->GetTimeoutMS(&timeout_u32); DWORD timeout = timeout_u32; @@ -1011,7 +981,7 @@ void WinWebAuthnService::DoGetAssertion( WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS WebAuthNAssertionOptions = { - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_8, + WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7, timeout, {0, NULL}, {0, NULL}, @@ -1031,8 +1001,6 @@ void WinWebAuthnService::DoGetAssertion( FALSE, // AutoFill 0, // Size of JsonExt NULL, // JsonExt - (DWORD)hints.Length(), // Size of CredentialHints - hints.Elements(), // CredentialHints }; PWEBAUTHN_ASSERTION pWebAuthNAssertion = nullptr; diff --git a/icecat/dom/webauthn/nsIWebAuthnArgs.idl b/icecat/dom/webauthn/nsIWebAuthnArgs.idl index 262d28e948..8d48becd48 100644 --- a/icecat/dom/webauthn/nsIWebAuthnArgs.idl +++ b/icecat/dom/webauthn/nsIWebAuthnArgs.idl @@ -65,8 +65,6 @@ interface nsIWebAuthnRegisterArgs : nsISupports { // consent popup. [must_use] readonly attribute AString attestationConveyancePreference; - readonly attribute Array hints; - readonly attribute boolean privateBrowsing; }; @@ -113,8 +111,6 @@ interface nsIWebAuthnSignArgs : nsISupports { // cancel transactions. readonly attribute unsigned long timeoutMS; - readonly attribute Array hints; - readonly attribute boolean conditionallyMediated; readonly attribute boolean privateBrowsing; diff --git a/icecat/dom/webauthn/tests/test_webauthn_get_assertion.html b/icecat/dom/webauthn/tests/test_webauthn_get_assertion.html index 6bfd8166a4..9b161f8d75 100644 --- a/icecat/dom/webauthn/tests/test_webauthn_get_assertion.html +++ b/icecat/dom/webauthn/tests/test_webauthn_get_assertion.html @@ -47,7 +47,6 @@ add_task(test_empty_credential_list); add_task(test_credential_protection_policy_uv_optional_with_list); add_task(test_credential_protection_policy_uv_required); - add_task(test_unsupported_mediation_requirements); function requestGetAssertion(params) { return navigator.credentials.get(params); @@ -81,11 +80,6 @@ is(aResult.code, DOMException.ABORT_ERR, "Expecting an AbortError"); } - function expectNotSupportedError(aResult) { - ok(aResult.toString().startsWith("NotSupportedError"), "Expecting a NotSupportedError"); - return Promise.resolve(); - } - // Set up a valid credential async function test_setup_valid_credential() { let publicKey = { @@ -299,19 +293,6 @@ setUserVerified(authenticatorId, true) } - - async function test_unsupported_mediation_requirements() { - let publicKey = { - challenge: gAssertionChallenge, - allowCredentials: [validCred] - }; - - for (const mediation of ["silent"]) { - await requestGetAssertion({publicKey, mediation}) - .then(arrivingHereIsBad) - .catch(expectNotSupportedError); - } - } diff --git a/icecat/dom/webauthn/tests/test_webauthn_make_credential.html b/icecat/dom/webauthn/tests/test_webauthn_make_credential.html index f855b24887..4812d0da0d 100644 --- a/icecat/dom/webauthn/tests/test_webauthn_make_credential.html +++ b/icecat/dom/webauthn/tests/test_webauthn_make_credential.html @@ -78,7 +78,6 @@ add_task(test_no_unexpected_extensions); add_task(test_cred_props_with_rk_required); add_task(test_cred_props_with_rk_discouraged); - add_task(test_unsupported_mediation_requirements); function arrivingHereIsGood(aResult) { ok(true, "Good result! Received a: " + aResult); @@ -454,17 +453,6 @@ is(extensionResults.credProps?.rk, false, "rk is false"); } - async function test_unsupported_mediation_requirements() { - let makeCredentialOptions = { - rp, user, challenge: gCredentialChallenge, pubKeyCredParams: [param] - }; - for (const mediation of ["conditional", "silent"]) { - await credm.create({publicKey: makeCredentialOptions, mediation}) - .then(arrivingHereIsBad) - .catch(expectNotSupportedError); - } - } - diff --git a/icecat/dom/webauthn/tests/test_webauthn_serialization.html b/icecat/dom/webauthn/tests/test_webauthn_serialization.html index 3cc63923f4..41b5858950 100644 --- a/icecat/dom/webauthn/tests/test_webauthn_serialization.html +++ b/icecat/dom/webauthn/tests/test_webauthn_serialization.html @@ -36,18 +36,6 @@ is(arr.length, 0, `${description} (array should be empty)`); } - function stringArrayEquals(actual, expected, description) { - is(actual.length, expected.length, `${description} (actual and expected should have the same length)`); - for (let i = 0; i < actual.length; i++) { - if (actual[i] instanceof String) { - throw new Error(`actual[${i}] is not a string` + typeof actual[i]); - } - if (actual[i] !== expected[i]) { - throw new Error(`actual and expected differ in position ${i}: ${actual[i]} vs ${expected[i]}`); - } - } - } - function shouldThrow(func, expectedError, description) { let threw = false; try { @@ -67,7 +55,7 @@ pubKeyCredParams: [], }; let creationOptions = PublicKeyCredential.parseCreationOptionsFromJSON(creationOptionsJSON); - is(Object.getOwnPropertyNames(creationOptions).length, 9, "creation options should have 9 properties"); + is(Object.getOwnPropertyNames(creationOptions).length, 8, "creation options should have 8 properties"); is(creationOptions.rp.id, undefined, "rp.id should be undefined"); is(creationOptions.rp.name, "Example", "rp.name should be Example"); arrayBufferEqualsArray(creationOptions.user.id, [ 250, 93, 234, 52, 180, 202, 38, 120 ], "user.id should be as expected"); @@ -82,7 +70,6 @@ is(creationOptions.authenticatorSelection.requireResidentKey, false, "creationOptions.authenticatorSelection.requireResidentKey should be false"); is(creationOptions.authenticatorSelection.userVerification, "preferred", "creationOptions.authenticatorSelection.userVerification should be preferred"); is(creationOptions.attestation, "none", "attestation should be none"); - stringArrayEquals(creationOptions.hints, [], "hints should be an empty array"); is(Object.getOwnPropertyNames(creationOptions.extensions).length, 0, "extensions should be an empty object"); }); @@ -118,7 +105,7 @@ }, }; let creationOptions = PublicKeyCredential.parseCreationOptionsFromJSON(creationOptionsJSON); - is(Object.getOwnPropertyNames(creationOptions).length, 10, "creation options should have 10 properties"); + is(Object.getOwnPropertyNames(creationOptions).length, 9, "creation options should have 9 properties"); is(creationOptions.rp.name, "Example", "rp.name should be Example"); is(creationOptions.rp.id, "example.com", "rp.id should be example.com"); arrayBufferEqualsArray(creationOptions.user.id, [ 215, 212, 213, 166, 160, 65, 56, 3 ], "user.id should be as expected"); @@ -138,7 +125,6 @@ is(creationOptions.authenticatorSelection.residentKey, "required", "creationOptions.authenticatorSelection.residentKey should be required"); is(creationOptions.authenticatorSelection.requireResidentKey, true, "creationOptions.authenticatorSelection.requireResidentKey should be true"); is(creationOptions.authenticatorSelection.userVerification, "discouraged", "creationOptions.authenticatorSelection.userVerification should be discouraged"); - stringArrayEquals(creationOptions.hints, creationOptionsJSON.hints, "creationOptions.hints should be as expected"); is(creationOptions.attestation, "indirect", "attestation should be indirect"); is(creationOptions.extensions.appid, "https://www.example.com/appID", "extensions.appid should be https://www.example.com/appID"); is(creationOptions.extensions.credProps, true, "extensions.credProps should be true"); @@ -200,13 +186,12 @@ challenge: "3yW2WHD_jbU", }; let requestOptions = PublicKeyCredential.parseRequestOptionsFromJSON(requestOptionsJSON); - is(Object.getOwnPropertyNames(requestOptions).length, 5, "request options should have 5 properties"); + is(Object.getOwnPropertyNames(requestOptions).length, 4, "request options should have 4 properties"); arrayBufferEqualsArray(requestOptions.challenge, [ 223, 37, 182, 88, 112, 255, 141, 181 ], "challenge should be as expected"); is(requestOptions.timeout, undefined, "timeout should be undefined"); is(requestOptions.rpId, undefined, "rpId should be undefined"); isEmptyArray(requestOptions.allowCredentials, "allowCredentials should be an empty array"); is(requestOptions.userVerification, "preferred", "userVerification should be preferred"); - stringArrayEquals(requestOptions.hints, [], "hints should be an empty array"); is(Object.getOwnPropertyNames(requestOptions.extensions).length, 0, "extensions should be an empty object"); }); @@ -237,7 +222,7 @@ }, }; let requestOptions = PublicKeyCredential.parseRequestOptionsFromJSON(requestOptionsJSON); - is(Object.getOwnPropertyNames(requestOptions).length, 7, "request options should have 7 properties"); + is(Object.getOwnPropertyNames(requestOptions).length, 6, "request options should have 6 properties"); arrayBufferEqualsArray(requestOptions.challenge, [ 64, 7, 218, 103, 1, 16, 10, 68 ], "challenge should be as expected"); is(requestOptions.timeout, 25000, "timeout should be 25000"); is(requestOptions.rpId, "example.com", "rpId should be example.com"); @@ -247,7 +232,6 @@ is(requestOptions.allowCredentials[0].transports.length, 1, "allowCredentials[0].transports should have one element"); is(requestOptions.allowCredentials[0].transports[0], "smart-card", "allowCredentials[0].transports[0] should be usb"); is(requestOptions.userVerification, "discouraged", "userVerification should be discouraged"); - stringArrayEquals(requestOptions.hints, requestOptionsJSON.hints, "requestOptions.hints should be as expected"); is(requestOptions.extensions.appid, "https://www.example.com/anotherAppID", "extensions.appid should be https://www.example.com/anotherAppID"); arrayBufferEqualsArray(requestOptions.extensions.prf.eval.first, [102, 105, 114, 115, 116], "extensions.prf.eval.first should be 'first'"); arrayBufferEqualsArray(requestOptions.extensions.prf.eval.second, [115, 101, 99, 111, 110, 100], "extensions.prf.eval.second should be 'second'"); diff --git a/icecat/dom/webauthn/winwebauthn/.gitignore b/icecat/dom/webauthn/winwebauthn/.gitignore new file mode 100644 index 0000000000..3e759b75bf --- /dev/null +++ b/icecat/dom/webauthn/winwebauthn/.gitignore @@ -0,0 +1,330 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ diff --git a/icecat/dom/webauthn/winwebauthn/README.md b/icecat/dom/webauthn/winwebauthn/README.md index 894b6cefdf..7aaa69079b 100644 --- a/icecat/dom/webauthn/winwebauthn/README.md +++ b/icecat/dom/webauthn/winwebauthn/README.md @@ -1,20 +1,16 @@ # Description -## WebAuthn Specification APIs +This project includes Win32 headers for communicating to Windows Hello and external secruity keys as part of WebAuthn and CTAP specification. -Win32 APIs for performing operations corresponding to WebAuthn (https://w3c.github.io/webauthn) specification are present in following files. -- webauthn.h +For more details about the standards, please follow these links: +* WebAuthn: https://w3c.github.io/webauthn/ +* CTAP: https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html -## Plugin Passkey Authenticators Implementation APIs/Interfaces - -APIs, interfaces and helper functions for passkey plugin authenticator implementators are present in following files -- pluginauthenticator.idl -- pluginauthenticator.h -- webauthnplugin.h # Having Issues? If you have any issues in adopting these APIs or need some clarification, please contact fido-dev@microsoft.com. + # Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a diff --git a/icecat/dom/webauthn/winwebauthn/moz.yaml b/icecat/dom/webauthn/winwebauthn/moz.yaml deleted file mode 100644 index 1211f0fd54..0000000000 --- a/icecat/dom/webauthn/winwebauthn/moz.yaml +++ /dev/null @@ -1,26 +0,0 @@ -schema: 1 - -bugzilla: - product: Core - component: "DOM: Web Authentication" - -origin: - name: Microsoft WebAuthn - description: Win32 APIs for WebAuthn - url: https://github.com/microsoft/webauthn - - release: 9108981ca80b3c6788fa598708dcf3cb10220ad7 - revision: 9108981ca80b3c6788fa598708dcf3cb10220ad7 - - license: MIT - -vendoring: - url: https://github.com/microsoft/webauthn - source-hosting: github - vendor-directory: dom/webauthn/winwebauthn - exclude: - - "**" - include: - - LICENSE - - README.md - - webauthn.h diff --git a/icecat/dom/webauthn/winwebauthn/webauthn.h b/icecat/dom/webauthn/winwebauthn/webauthn.h index b5eaca30f1..71fbc4b8b1 100644 --- a/icecat/dom/webauthn/winwebauthn/webauthn.h +++ b/icecat/dom/webauthn/winwebauthn/webauthn.h @@ -95,7 +95,6 @@ extern "C" { // - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 5 // - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 6 // - WEBAUTHN_ASSERTION : 3 -// - WEBAUTHN_GET_CREDENTIALS_OPTIONS : 1 // - WEBAUTHN_CREDENTIAL_DETAILS : 1 // APIs: // - WebAuthNGetPlatformCredentialList @@ -128,30 +127,7 @@ extern "C" { // - WEBAUTHN_CREDENTIAL_ATTESTATION : 6 // - WEBAUTHN_ASSERTION : 5 -#define WEBAUTHN_API_VERSION_8 8 -// WEBAUTHN_API_VERSION_8 : Delta From WEBAUTHN_API_VERSION_7 -// Data Structures and their sub versions: -// - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 8 -// - WEBAUTHN_CREDENTIAL_DETAILS : 3 -// - WEBAUTHN_CREDENTIAL_ATTESTATION : 7 -// - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 8 -// - -#define WEBAUTHN_API_VERSION_9 9 -// WEBAUTHN_API_VERSION_9 : Delta From WEBAUTHN_API_VERSION_8 -// Data Structures and their sub versions: -// - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 9 -// - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 9 -// - WEBAUTHN_ASSERTION : 6 -// - WEBAUTHN_CREDENTIAL_DETAILS : 4 -// - WEBAUTHN_CREDENTIAL_ATTESTATION : 8 -// - WEBAUTHN_AUTHENTICATOR_DETAILS : 1 -// - WEBAUTHN_AUTHENTICATOR_DETAILS_LIST : Not Applicable -// APIs: -// - WebAuthNGetAuthenticatorList -// - WebAuthNFreeAuthenticatorList - -#define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_9 +#define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_7 //+------------------------------------------------------------------------------------------ // Information about an RP Entity @@ -171,7 +147,7 @@ typedef struct _WEBAUTHN_RP_ENTITY_INFORMATION { // This field is required. PCWSTR pwszName; - // Optional URL pointing to RP's logo. + // Optional URL pointing to RP's logo. PCWSTR pwszIcon; } WEBAUTHN_RP_ENTITY_INFORMATION, *PWEBAUTHN_RP_ENTITY_INFORMATION; typedef const WEBAUTHN_RP_ENTITY_INFORMATION *PCWEBAUTHN_RP_ENTITY_INFORMATION; @@ -307,15 +283,7 @@ typedef const WEBAUTHN_CREDENTIALS *PCWEBAUTHN_CREDENTIALS; #define WEBAUTHN_CTAP_TRANSPORT_TEST 0x00000008 #define WEBAUTHN_CTAP_TRANSPORT_INTERNAL 0x00000010 #define WEBAUTHN_CTAP_TRANSPORT_HYBRID 0x00000020 -#define WEBAUTHN_CTAP_TRANSPORT_SMART_CARD 0x00000040 -#define WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK 0x0000007F - -#define WEBAUTHN_CTAP_TRANSPORT_USB_STRING "usb" -#define WEBAUTHN_CTAP_TRANSPORT_NFC_STRING "nfc" -#define WEBAUTHN_CTAP_TRANSPORT_BLE_STRING "ble" -#define WEBAUTHN_CTAP_TRANSPORT_SMART_CARD_STRING "smart-card" -#define WEBAUTHN_CTAP_TRANSPORT_HYBRID_STRING "hybrid" -#define WEBAUTHN_CTAP_TRANSPORT_INTERNAL_STRING "internal" +#define WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK 0x0000003F #define WEBAUTHN_CREDENTIAL_EX_CURRENT_VERSION 1 @@ -355,7 +323,6 @@ typedef const WEBAUTHN_CREDENTIAL_LIST *PCWEBAUTHN_CREDENTIAL_LIST; #define CTAPCBOR_HYBRID_STORAGE_LINKED_DATA_VERSION_1 1 #define CTAPCBOR_HYBRID_STORAGE_LINKED_DATA_CURRENT_VERSION CTAPCBOR_HYBRID_STORAGE_LINKED_DATA_VERSION_1 -// Deprecated typedef struct _CTAPCBOR_HYBRID_STORAGE_LINKED_DATA { // Version @@ -389,65 +356,13 @@ typedef struct _CTAPCBOR_HYBRID_STORAGE_LINKED_DATA } CTAPCBOR_HYBRID_STORAGE_LINKED_DATA, *PCTAPCBOR_HYBRID_STORAGE_LINKED_DATA; typedef const CTAPCBOR_HYBRID_STORAGE_LINKED_DATA *PCCTAPCBOR_HYBRID_STORAGE_LINKED_DATA; -//+------------------------------------------------------------------------------------------ -// Authenticator Information for WebAuthNGetAuthenticatorList API -//------------------------------------------------------------------------------------------- - -#define WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS_VERSION_1 1 -#define WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS_VERSION_1 - -typedef struct _WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS { - // Version of this structure, to allow for modifications in the future. - DWORD dwVersion; - -} WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS; -typedef const WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS; - -#define WEBAUTHN_AUTHENTICATOR_DETAILS_VERSION_1 1 -#define WEBAUTHN_AUTHENTICATOR_DETAILS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_DETAILS_VERSION_1 - -typedef struct _WEBAUTHN_AUTHENTICATOR_DETAILS { - // Version of this structure, to allow for modifications in the future. - DWORD dwVersion; - - // Authenticator ID - DWORD cbAuthenticatorId; - _Field_size_bytes_(cbAuthenticatorId) - PBYTE pbAuthenticatorId; - - // Authenticator Name - PCWSTR pwszAuthenticatorName; - - // Authenticator logo (expected to be in SVG format) - DWORD cbAuthenticatorLogo; - _Field_size_bytes_(cbAuthenticatorLogo) - PBYTE pbAuthenticatorLogo; - - // Is the authenticator currently locked? When locked, this authenticator's credentials - // might not be present or updated in WebAuthNGetPlatformCredentialList. - BOOL bLocked; - -} WEBAUTHN_AUTHENTICATOR_DETAILS, *PWEBAUTHN_AUTHENTICATOR_DETAILS; -typedef const WEBAUTHN_AUTHENTICATOR_DETAILS *PCWEBAUTHN_AUTHENTICATOR_DETAILS; - -typedef struct _WEBAUTHN_AUTHENTICATOR_DETAILS_LIST { - // Authenticator Details - DWORD cAuthenticatorDetails; - _Field_size_(cAuthenticatorDetails) - PWEBAUTHN_AUTHENTICATOR_DETAILS *ppAuthenticatorDetails; - -} WEBAUTHN_AUTHENTICATOR_DETAILS_LIST, *PWEBAUTHN_AUTHENTICATOR_DETAILS_LIST; -typedef const WEBAUTHN_AUTHENTICATOR_DETAILS_LIST *PCWEBAUTHN_AUTHENTICATOR_DETAILS_LIST; - //+------------------------------------------------------------------------------------------ // Credential Information for WebAuthNGetPlatformCredentialList API //------------------------------------------------------------------------------------------- #define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_1 1 #define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_2 2 -#define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_3 3 -#define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_4 4 -#define WEBAUTHN_CREDENTIAL_DETAILS_CURRENT_VERSION WEBAUTHN_CREDENTIAL_DETAILS_VERSION_4 +#define WEBAUTHN_CREDENTIAL_DETAILS_CURRENT_VERSION WEBAUTHN_CREDENTIAL_DETAILS_VERSION_2 typedef struct _WEBAUTHN_CREDENTIAL_DETAILS { // Version of this structure, to allow for modifications in the future. @@ -473,27 +388,6 @@ typedef struct _WEBAUTHN_CREDENTIAL_DETAILS { // Backed Up or not. BOOL bBackedUp; - - // - // The following fields have been added in WEBAUTHN_CREDENTIAL_DETAILS_VERSION_3 - // - PCWSTR pwszAuthenticatorName; - - // The logo is expected to be in the svg format - DWORD cbAuthenticatorLogo; - _Field_size_bytes_(cbAuthenticatorLogo) - PBYTE pbAuthenticatorLogo; - - // ThirdPartyPayment Credential or not. - BOOL bThirdPartyPayment; - - // - // The following fields have been added in WEBAUTHN_CREDENTIAL_DETAILS_VERSION_4 - // - - // Applicable Transports - DWORD dwTransports; - } WEBAUTHN_CREDENTIAL_DETAILS, *PWEBAUTHN_CREDENTIAL_DETAILS; typedef const WEBAUTHN_CREDENTIAL_DETAILS *PCWEBAUTHN_CREDENTIAL_DETAILS; @@ -699,10 +593,6 @@ typedef const WEBAUTHN_EXTENSIONS *PCWEBAUTHN_EXTENSIONS; #define WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED 1 #define WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED 2 -#define WEBAUTHN_CREDENTIAL_HINT_SECURITY_KEY L"security-key" -#define WEBAUTHN_CREDENTIAL_HINT_CLIENT_DEVICE L"client-device" -#define WEBAUTHN_CREDENTIAL_HINT_HYBRID L"hybrid" - #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_1 1 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_2 2 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3 3 @@ -710,9 +600,7 @@ typedef const WEBAUTHN_EXTENSIONS *PCWEBAUTHN_EXTENSIONS; #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_5 5 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_6 6 #define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7 7 -#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_8 8 -#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_9 9 -#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_9 +#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7 typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS { // Version of this structure, to allow for modifications in the future. @@ -792,7 +680,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS { // The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7 // - // Deprecated // Optional. Linked Device Connection Info. PCTAPCBOR_HYBRID_STORAGE_LINKED_DATA pLinkedDevice; @@ -800,41 +687,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS { DWORD cbJsonExt; _Field_size_bytes_(cbJsonExt) PBYTE pbJsonExt; - - // - // The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_8 - // - - // PRF extension "eval" values which will be converted into HMAC-SECRET values according to WebAuthn Spec. - // Set WEBAUTHN_AUTHENTICATOR_HMAC_SECRET_VALUES_FLAG in dwFlags above, if caller wants to provide RAW Hmac-Secret SALT values directly. - // In that case, values provided MUST be of WEBAUTHN_CTAP_ONE_HMAC_SECRET_LENGTH size. - PWEBAUTHN_HMAC_SECRET_SALT pPRFGlobalEval; - - // PublicKeyCredentialHints (https://w3c.github.io/webauthn/#enum-hints) - DWORD cCredentialHints; - _Field_size_(cCredentialHints) - LPCWSTR *ppwszCredentialHints; - - // Enable ThirdPartyPayment - BOOL bThirdPartyPayment; - - // - // The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_9 - // - - // Web Origin. For Remote Web App scenario. - PCWSTR pwszRemoteWebOrigin; - - // UTF-8 encoded JSON serialization of the PublicKeyCredentialCreationOptions. - DWORD cbPublicKeyCredentialCreationOptionsJSON; - _Field_size_bytes_(cbPublicKeyCredentialCreationOptionsJSON) - PBYTE pbPublicKeyCredentialCreationOptionsJSON; - - // Authenticator ID got from WebAuthNGetAuthenticatorList API. - DWORD cbAuthenticatorId; - _Field_size_bytes_(cbAuthenticatorId) - PBYTE pbAuthenticatorId; - } WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS; typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS; @@ -850,9 +702,7 @@ typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENT #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 5 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_6 6 #define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7 7 -#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_8 8 -#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_9 9 -#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_9 +#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7 /* Information about flags. @@ -933,7 +783,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS { // The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7 // - // Deprecated // Optional. Linked Device Connection Info. PCTAPCBOR_HYBRID_STORAGE_LINKED_DATA pLinkedDevice; @@ -944,33 +793,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS { DWORD cbJsonExt; _Field_size_bytes_(cbJsonExt) PBYTE pbJsonExt; - - // - // The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_8 - // - - // PublicKeyCredentialHints (https://w3c.github.io/webauthn/#enum-hints) - DWORD cCredentialHints; - _Field_size_(cCredentialHints) - LPCWSTR *ppwszCredentialHints; - - // - // The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_9 - // - - // Web Origin. For Remote Web App scenario. - PCWSTR pwszRemoteWebOrigin; - - // UTF-8 encoded JSON serialization of the PublicKeyCredentialRequestOptions. - DWORD cbPublicKeyCredentialRequestOptionsJSON; - _Field_size_bytes_(cbPublicKeyCredentialRequestOptionsJSON) - PBYTE pbPublicKeyCredentialRequestOptionsJSON; - - // Authenticator ID got from WebAuthNGetAuthenticatorList API. - DWORD cbAuthenticatorId; - _Field_size_bytes_(cbAuthenticatorId) - PBYTE pbAuthenticatorId; - } WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS; typedef const WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS; @@ -1049,9 +871,7 @@ typedef const WEBAUTHN_COMMON_ATTESTATION *PCWEBAUTHN_COMMON_ATTESTATION; #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 4 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_5 5 #define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_6 6 -#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_7 7 -#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_8 8 -#define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_8 +#define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_6 typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION { // Version of this structure, to allow for modifications in the future. @@ -1127,34 +947,6 @@ typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION { DWORD cbUnsignedExtensionOutputs; _Field_size_bytes_(cbUnsignedExtensionOutputs) PBYTE pbUnsignedExtensionOutputs; - - // - // Following fields have been added in WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_7 - // - - PWEBAUTHN_HMAC_SECRET_SALT pHmacSecret; - - // ThirdPartyPayment Credential or not. - BOOL bThirdPartyPayment; - - // - // Following fields have been added in WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_8 - // - - // Multiple WEBAUTHN_CTAP_TRANSPORT_* bits will be set corresponding to - // the transports that are supported. - DWORD dwTransports; - - // UTF-8 encoded JSON serialization of the client data. - DWORD cbClientDataJSON; - _Field_size_bytes_(cbClientDataJSON) - PBYTE pbClientDataJSON; - - // UTF-8 encoded JSON serialization of the RegistrationResponse. - DWORD cbRegistrationResponseJSON; - _Field_size_bytes_(cbRegistrationResponseJSON) - PBYTE pbRegistrationResponseJSON; - } WEBAUTHN_CREDENTIAL_ATTESTATION, *PWEBAUTHN_CREDENTIAL_ATTESTATION; typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION; @@ -1179,8 +971,7 @@ typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION #define WEBAUTHN_ASSERTION_VERSION_3 3 #define WEBAUTHN_ASSERTION_VERSION_4 4 #define WEBAUTHN_ASSERTION_VERSION_5 5 -#define WEBAUTHN_ASSERTION_VERSION_6 6 -#define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_6 +#define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_5 typedef struct _WEBAUTHN_ASSERTION { // Version of this structure, to allow for modifications in the future. @@ -1241,21 +1032,6 @@ typedef struct _WEBAUTHN_ASSERTION { DWORD cbUnsignedExtensionOutputs; _Field_size_bytes_(cbUnsignedExtensionOutputs) PBYTE pbUnsignedExtensionOutputs; - - // - // Following fields have been added in WEBAUTHN_ASSERTION_VERSION_6 - // - - // UTF-8 encoded JSON serialization of the client data. - DWORD cbClientDataJSON; - _Field_size_bytes_(cbClientDataJSON) - PBYTE pbClientDataJSON; - - // UTF-8 encoded JSON serialization of the AuthenticationResponse. - DWORD cbAuthenticationResponseJSON; - _Field_size_bytes_(cbAuthenticationResponseJSON) - PBYTE pbAuthenticationResponseJSON; - } WEBAUTHN_ASSERTION, *PWEBAUTHN_ASSERTION; typedef const WEBAUTHN_ASSERTION *PCWEBAUTHN_ASSERTION; @@ -1333,18 +1109,6 @@ WebAuthNDeletePlatformCredential( _In_reads_bytes_(cbCredentialId) const BYTE *pbCredentialId ); -// Returns NTE_NOT_FOUND when authenticator details are not found. -HRESULT -WINAPI -WebAuthNGetAuthenticatorList( - _In_opt_ PCWEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS pWebAuthNGetAuthenticatorListOptions, - _Outptr_result_maybenull_ PWEBAUTHN_AUTHENTICATOR_DETAILS_LIST* ppAuthenticatorDetailsList); - -void -WINAPI -WebAuthNFreeAuthenticatorList( - _In_ PWEBAUTHN_AUTHENTICATOR_DETAILS_LIST pAuthenticatorDetailsList); - // // Returns the following Error Names: // L"Success" - S_OK diff --git a/icecat/dom/webbrowserpersist/WebBrowserPersistSerializeParent.cpp b/icecat/dom/webbrowserpersist/WebBrowserPersistSerializeParent.cpp index c9be785bc5..1fe1af95ff 100644 --- a/icecat/dom/webbrowserpersist/WebBrowserPersistSerializeParent.cpp +++ b/icecat/dom/webbrowserpersist/WebBrowserPersistSerializeParent.cpp @@ -51,14 +51,11 @@ mozilla::ipc::IPCResult WebBrowserPersistSerializeParent::RecvWriteData( mozilla::ipc::IPCResult WebBrowserPersistSerializeParent::Recv__delete__( const nsACString& aContentType, const nsresult& aStatus) { - nsCOMPtr finish = std::move(mFinish); - if (!finish) { - return IPC_FAIL(this, "missing finish callback"); - } if (NS_SUCCEEDED(mOutputError)) { mOutputError = aStatus; } - finish->OnFinish(mDocument, mStream, aContentType, mOutputError); + mFinish->OnFinish(mDocument, mStream, aContentType, mOutputError); + mFinish = nullptr; return IPC_OK(); } diff --git a/icecat/dom/webidl/CredentialManagement.webidl b/icecat/dom/webidl/CredentialManagement.webidl index d32c8bbede..fa1f04edc7 100644 --- a/icecat/dom/webidl/CredentialManagement.webidl +++ b/icecat/dom/webidl/CredentialManagement.webidl @@ -50,7 +50,6 @@ enum CredentialMediationRequirement { }; dictionary CredentialCreationOptions { - CredentialMediationRequirement mediation = "optional"; // This is taken from the partial definition in // https://w3c.github.io/webauthn/#sctn-credentialcreationoptions-extension [Pref="security.webauth.webauthn"] diff --git a/icecat/dom/webidl/WebAuthentication.webidl b/icecat/dom/webidl/WebAuthentication.webidl index 1f965cd8c2..90b0cabfe2 100644 --- a/icecat/dom/webidl/WebAuthentication.webidl +++ b/icecat/dom/webidl/WebAuthentication.webidl @@ -12,9 +12,9 @@ [SecureContext, Pref="security.webauth.webauthn", Exposed=Window] interface PublicKeyCredential : Credential { - [SameObject, Throws, Cached] readonly attribute ArrayBuffer rawId; - [SameObject] readonly attribute AuthenticatorResponse response; - readonly attribute DOMString? authenticatorAttachment; + [SameObject, Throws] readonly attribute ArrayBuffer rawId; + [SameObject] readonly attribute AuthenticatorResponse response; + readonly attribute DOMString? authenticatorAttachment; AuthenticationExtensionsClientOutputs getClientExtensionResults(); [NewObject] static Promise isConditionalMediationAvailable(); [Throws, Pref="security.webauthn.enable_json_serialization_methods"] object toJSON(); @@ -140,25 +140,25 @@ dictionary PublicKeyCredentialRequestOptionsJSON { [SecureContext, Pref="security.webauth.webauthn", Exposed=Window] interface AuthenticatorResponse { - [SameObject, Throws, Cached] readonly attribute ArrayBuffer clientDataJSON; + [SameObject, Throws] readonly attribute ArrayBuffer clientDataJSON; }; [SecureContext, Pref="security.webauth.webauthn", Exposed=Window] interface AuthenticatorAttestationResponse : AuthenticatorResponse { - [SameObject, Throws, Cached] readonly attribute ArrayBuffer attestationObject; - sequence getTransports(); - [Throws] ArrayBuffer getAuthenticatorData(); - [Throws] ArrayBuffer? getPublicKey(); - [Throws] COSEAlgorithmIdentifier getPublicKeyAlgorithm(); + [SameObject, Throws] readonly attribute ArrayBuffer attestationObject; + sequence getTransports(); + [Throws] ArrayBuffer getAuthenticatorData(); + [Throws] ArrayBuffer? getPublicKey(); + [Throws] COSEAlgorithmIdentifier getPublicKeyAlgorithm(); }; [SecureContext, Pref="security.webauth.webauthn", Exposed=Window] interface AuthenticatorAssertionResponse : AuthenticatorResponse { - [SameObject, Throws, Cached] readonly attribute ArrayBuffer authenticatorData; - [SameObject, Throws, Cached] readonly attribute ArrayBuffer signature; - [SameObject, Throws, Cached] readonly attribute ArrayBuffer? userHandle; + [SameObject, Throws] readonly attribute ArrayBuffer authenticatorData; + [SameObject, Throws] readonly attribute ArrayBuffer signature; + [SameObject, Throws] readonly attribute ArrayBuffer? userHandle; }; dictionary PublicKeyCredentialParameters { @@ -177,7 +177,6 @@ dictionary PublicKeyCredentialCreationOptions { sequence excludeCredentials = []; // FIXME: bug 1493860: should this "= {}" be here? AuthenticatorSelectionCriteria authenticatorSelection = {}; - sequence hints = []; DOMString attestation = "none"; // FIXME: bug 1493860: should this "= {}" be here? AuthenticationExtensionsClientInputs extensions = {}; @@ -209,7 +208,6 @@ dictionary PublicKeyCredentialRequestOptions { USVString rpId; sequence allowCredentials = []; DOMString userVerification = "preferred"; - sequence hints = []; // FIXME: bug 1493860: should this "= {}" be here? AuthenticationExtensionsClientInputs extensions = {}; }; diff --git a/icecat/dom/webtransport/parent/WebTransportParent.cpp b/icecat/dom/webtransport/parent/WebTransportParent.cpp index 3fd89bc27a..6648cac11f 100644 --- a/icecat/dom/webtransport/parent/WebTransportParent.cpp +++ b/icecat/dom/webtransport/parent/WebTransportParent.cpp @@ -166,9 +166,6 @@ IPCResult WebTransportParent::RecvClose(const uint32_t& aCode, const nsACString& aReason) { LOG(("Close for %p received, code = %u, reason = %s", this, aCode, PromiseFlatCString(aReason).get())); - if (!mSessionReady) { - return IPC_FAIL(this, "Close received before session was ready"); - } { MutexAutoLock lock(mMutex); MOZ_ASSERT(!mClosed); diff --git a/icecat/dom/webtransport/parent/WebTransportParent.h b/icecat/dom/webtransport/parent/WebTransportParent.h index 6f9d027f66..8b1b1a6867 100644 --- a/icecat/dom/webtransport/parent/WebTransportParent.h +++ b/icecat/dom/webtransport/parent/WebTransportParent.h @@ -103,11 +103,9 @@ class WebTransportParent : public PWebTransportParent, OnResetOrStopSendingCallback mCallback; nsCOMPtr mStream; }; - nsTHashMap, - StreamHash> + nsTHashMap> mBidiStreamCallbackMap; - nsTHashMap, - StreamHash> + nsTHashMap> mUniStreamCallbackMap; }; diff --git a/icecat/dom/workers/MessageEventRunnable.cpp b/icecat/dom/workers/MessageEventRunnable.cpp index 6c036bfe3c..33efc966b4 100644 --- a/icecat/dom/workers/MessageEventRunnable.cpp +++ b/icecat/dom/workers/MessageEventRunnable.cpp @@ -19,9 +19,10 @@ MessageEventRunnable::MessageEventRunnable(WorkerPrivate* aWorkerPrivate) StructuredCloneHolder(CloningSupported, TransferringSupported, StructuredCloneScope::SameProcess) {} -bool MessageEventRunnable::DispatchDOMEvent( - JSContext* aCx, WorkerPrivate* aWorkerPrivate, - RefPtr aTarget, bool aIsMainThread) { +bool MessageEventRunnable::DispatchDOMEvent(JSContext* aCx, + WorkerPrivate* aWorkerPrivate, + DOMEventTargetHelper* aTarget, + bool aIsMainThread) { nsCOMPtr parent = aTarget->GetParentObject(); // For some workers without window, parent is null and we try to find it @@ -116,7 +117,7 @@ MessageEventToParentRunnable::MessageEventToParentRunnable( bool MessageEventToParentRunnable::DispatchDOMEvent( JSContext* aCx, WorkerPrivate* aWorkerPrivate, - RefPtr aTarget, bool aIsMainThread) { + DOMEventTargetHelper* aTarget, bool aIsMainThread) { nsCOMPtr parent = aTarget->GetParentObject(); // For some workers without window, parent is null and we try to find it diff --git a/icecat/dom/workers/MessageEventRunnable.h b/icecat/dom/workers/MessageEventRunnable.h index e1b9be9ecd..45bce9949f 100644 --- a/icecat/dom/workers/MessageEventRunnable.h +++ b/icecat/dom/workers/MessageEventRunnable.h @@ -23,8 +23,7 @@ class MessageEventRunnable final : public WorkerDebuggeeRunnable, explicit MessageEventRunnable(WorkerPrivate* aWorkerPrivate); bool DispatchDOMEvent(JSContext* aCx, WorkerPrivate* aWorkerPrivate, - RefPtr aTarget, - bool aIsMainThread); + DOMEventTargetHelper* aTarget, bool aIsMainThread); private: bool WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override; @@ -38,8 +37,7 @@ class MessageEventToParentRunnable final : public WorkerParentDebuggeeRunnable, explicit MessageEventToParentRunnable(WorkerPrivate* aWorkerPrivate); bool DispatchDOMEvent(JSContext* aCx, WorkerPrivate* aWorkerPrivate, - RefPtr aTarget, - bool aIsMainThread); + DOMEventTargetHelper* aTarget, bool aIsMainThread); private: bool WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override; diff --git a/icecat/dom/workers/RuntimeService.cpp b/icecat/dom/workers/RuntimeService.cpp index 4bd8b03500..321fea0b62 100644 --- a/icecat/dom/workers/RuntimeService.cpp +++ b/icecat/dom/workers/RuntimeService.cpp @@ -1258,8 +1258,6 @@ bool RuntimeService::RegisterWorker(WorkerPrivate& aWorkerPrivate) { } } else { if (!mNavigatorPropertiesLoaded) { - MutexAutoLock lock(mMutex); - if (NS_FAILED(Navigator::GetAppVersion( mNavigatorProperties.mAppVersion, aWorkerPrivate.GetDocument(), false /* aUsePrefOverriddenValue */)) || @@ -1694,11 +1692,6 @@ void RuntimeService::CrashIfHanging() { void RuntimeService::Cleanup() { AssertIsOnMainThread(); - if (mCleanedUp) { - return; - } - mCleanedUp = true; - if (!mShuttingDown) { Shutdown(); } @@ -1793,9 +1786,9 @@ void RuntimeService::Cleanup() { obs->RemoveObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID); mObserved = false; } - - nsLayoutStatics::Release(); } + + nsLayoutStatics::Release(); } void RuntimeService::AddAllTopLevelWorkersToArray( @@ -1930,13 +1923,11 @@ void RuntimeService::UpdateAllWorkerContextOptions() { void RuntimeService::UpdateAppVersionOverridePreference( const nsAString& aValue) { AssertIsOnMainThread(); - MutexAutoLock lock(mMutex); mNavigatorProperties.mAppVersionOverridden = aValue; } void RuntimeService::UpdatePlatformOverridePreference(const nsAString& aValue) { AssertIsOnMainThread(); - MutexAutoLock lock(mMutex); mNavigatorProperties.mPlatformOverridden = aValue; } @@ -1944,10 +1935,7 @@ void RuntimeService::UpdateAllWorkerLanguages( const nsTArray& aLanguages) { MOZ_ASSERT(NS_IsMainThread()); - { - MutexAutoLock lock(mMutex); - mNavigatorProperties.mLanguages = aLanguages.Clone(); - } + mNavigatorProperties.mLanguages = aLanguages.Clone(); BroadcastAllWorkers( [&aLanguages](auto& worker) { worker.UpdateLanguages(aLanguages); }); } diff --git a/icecat/dom/workers/RuntimeService.h b/icecat/dom/workers/RuntimeService.h index c084700c34..b17efeafac 100644 --- a/icecat/dom/workers/RuntimeService.h +++ b/icecat/dom/workers/RuntimeService.h @@ -54,7 +54,7 @@ class RuntimeService final : public nsIObserver { } }; - mutable mozilla::Mutex mMutex; + mozilla::Mutex mMutex; // Protected by mMutex. nsClassHashtable mDomainMap @@ -77,13 +77,12 @@ class RuntimeService final : public nsIObserver { }; private: - NavigatorProperties mNavigatorProperties MOZ_GUARDED_BY(mMutex); + NavigatorProperties mNavigatorProperties; // True when the observer service holds a reference to this object. bool mObserved; bool mShuttingDown; bool mNavigatorPropertiesLoaded; - bool mCleanedUp{false}; public: NS_DECL_ISUPPORTS @@ -113,8 +112,7 @@ class RuntimeService final : public nsIObserver { void PropagateStorageAccessPermissionGranted( const nsPIDOMWindowInner& aWindow); - NavigatorProperties GetNavigatorProperties() const { - MutexAutoLock lock(mMutex); + const NavigatorProperties& GetNavigatorProperties() const { return mNavigatorProperties; } diff --git a/icecat/dom/workers/WorkerError.cpp b/icecat/dom/workers/WorkerError.cpp index c82099d2d6..f430090c48 100644 --- a/icecat/dom/workers/WorkerError.cpp +++ b/icecat/dom/workers/WorkerError.cpp @@ -242,7 +242,7 @@ void WorkerErrorReport::AssignErrorReport(JSErrorReport* aReport) { /* static */ void WorkerErrorReport::ReportError( JSContext* aCx, WorkerPrivate* aWorkerPrivate, bool aFireAtScope, - RefPtr aTarget, UniquePtr aReport, + DOMEventTargetHelper* aTarget, UniquePtr aReport, uint64_t aInnerWindowId, JS::Handle aException) { if (aWorkerPrivate) { aWorkerPrivate->AssertIsOnWorkerThread(); @@ -324,7 +324,7 @@ void WorkerErrorReport::ReportError( MOZ_ASSERT(globalScope->GetWrapperPreserveColor() == global); RefPtr event = ErrorEvent::Constructor( - aTarget ? aTarget.get() : globalScope, u"error"_ns, init); + aTarget ? aTarget : globalScope, u"error"_ns, init); event->SetTrusted(true); if (NS_FAILED(EventDispatcher::DispatchDOMEvent( diff --git a/icecat/dom/workers/WorkerError.h b/icecat/dom/workers/WorkerError.h index 14b9683191..c5b2f97b8d 100644 --- a/icecat/dom/workers/WorkerError.h +++ b/icecat/dom/workers/WorkerError.h @@ -57,8 +57,8 @@ class WorkerErrorReport : public WorkerErrorBase, public SerializedStackHolder { // TODO: Convert this to MOZ_CAN_RUN_SCRIPT (bug 1743443) MOZ_CAN_RUN_SCRIPT_BOUNDARY static void ReportError( JSContext* aCx, WorkerPrivate* aWorkerPrivate, bool aFireAtScope, - RefPtr aTarget, - UniquePtr aReport, uint64_t aInnerWindowId, + DOMEventTargetHelper* aTarget, UniquePtr aReport, + uint64_t aInnerWindowId, JS::Handle aException = JS::NullHandleValue); static void LogErrorToConsole(JSContext* aCx, WorkerErrorReport& aReport, diff --git a/icecat/dom/workers/WorkerNavigator.cpp b/icecat/dom/workers/WorkerNavigator.cpp index d927039288..1563d6ce19 100644 --- a/icecat/dom/workers/WorkerNavigator.cpp +++ b/icecat/dom/workers/WorkerNavigator.cpp @@ -67,7 +67,7 @@ already_AddRefed WorkerNavigator::Create(bool aOnLine) { RuntimeService* rts = RuntimeService::GetService(); MOZ_ASSERT(rts); - RuntimeService::NavigatorProperties properties = + const RuntimeService::NavigatorProperties& properties = rts->GetNavigatorProperties(); RefPtr navigator = new WorkerNavigator(properties, aOnLine); diff --git a/icecat/dom/workers/WorkerPrivate.cpp b/icecat/dom/workers/WorkerPrivate.cpp index dd7acebda9..edd2960b90 100644 --- a/icecat/dom/workers/WorkerPrivate.cpp +++ b/icecat/dom/workers/WorkerPrivate.cpp @@ -4797,15 +4797,6 @@ bool WorkerPrivate::FreezeInternal() { return true; } -bool WorkerPrivate::HasActiveWorkerRefs() { - auto data = mWorkerThreadAccessible.Access(); - auto* timeoutManager = - data->mScope ? data->mScope->GetTimeoutManager() : nullptr; - return !data->mChildWorkers.IsEmpty() || - (timeoutManager && timeoutManager->HasTimeouts()) || - !data->mWorkerRefs.IsEmpty(); -} - bool WorkerPrivate::ThawInternal() { auto data = mWorkerThreadAccessible.Access(); NS_ASSERTION(data->mFrozen, "Not yet frozen!"); diff --git a/icecat/dom/workers/WorkerPrivate.h b/icecat/dom/workers/WorkerPrivate.h index f36a1315f3..d887a9ca51 100644 --- a/icecat/dom/workers/WorkerPrivate.h +++ b/icecat/dom/workers/WorkerPrivate.h @@ -1332,7 +1332,11 @@ class WorkerPrivate final void NotifyWorkerRefs(WorkerStatus aStatus); - bool HasActiveWorkerRefs(); + bool HasActiveWorkerRefs() { + auto data = mWorkerThreadAccessible.Access(); + return !(data->mChildWorkers.IsEmpty() && data->mTimeouts.IsEmpty() && + data->mWorkerRefs.IsEmpty()); + } friend class WorkerEventTarget; diff --git a/icecat/dom/workers/WorkerScope.cpp b/icecat/dom/workers/WorkerScope.cpp index 6e2dc75143..02680f67ef 100644 --- a/icecat/dom/workers/WorkerScope.cpp +++ b/icecat/dom/workers/WorkerScope.cpp @@ -271,8 +271,7 @@ WorkerGlobalScopeBase::WorkerGlobalScopeBase( mSerialEventTarget(aWorkerPrivate->HybridEventTarget()) { if (StaticPrefs::dom_workers_timeoutmanager_AtStartup()) { mTimeoutManager = MakeUnique( - *this, /* not used on workers */ 0, mSerialEventTarget, - mWorkerPrivate->IsChromeWorker()); + *this, /* not used on workers */ 0, mSerialEventTarget); } LOG(("WorkerGlobalScopeBase::WorkerGlobalScopeBase [%p]", this)); MOZ_ASSERT(mWorkerPrivate); diff --git a/icecat/dom/workers/loader/CacheLoadHandler.cpp b/icecat/dom/workers/loader/CacheLoadHandler.cpp index f18ade00e9..49f9cd50f7 100644 --- a/icecat/dom/workers/loader/CacheLoadHandler.cpp +++ b/icecat/dom/workers/loader/CacheLoadHandler.cpp @@ -52,8 +52,7 @@ void CachePromiseHandler::ResolvedCallback(JSContext* aCx, JS::Handle aValue, ErrorResult& aRv) { AssertIsOnMainThread(); - // skip to schedule execution if it has been scheduled already. - if (mRequestHandle->mExecutionScheduled) { + if (mRequestHandle->IsEmpty()) { return; } WorkerLoadContext* loadContext = mRequestHandle->GetContext(); @@ -76,8 +75,7 @@ void CachePromiseHandler::RejectedCallback(JSContext* aCx, JS::Handle aValue, ErrorResult& aRv) { AssertIsOnMainThread(); - // skip to schedule execution if it has been scheduled already. - if (mRequestHandle->mExecutionScheduled) { + if (mRequestHandle->IsEmpty()) { return; } WorkerLoadContext* loadContext = mRequestHandle->GetContext(); @@ -269,11 +267,6 @@ void CacheLoadHandler::Fail(nsresult aRv) { mPump->Cancel(aRv); mPump = nullptr; } - - if (mRequestHandle->mExecutionScheduled) { - return; - } - if (mRequestHandle->IsEmpty()) { return; } @@ -288,12 +281,7 @@ void CacheLoadHandler::Fail(nsresult aRv) { loadContext->mCachePromise = nullptr; - if (loadContext->mLoadingFinished) { - loadContext->mLoadResult = aRv; - mRequestHandle->MaybeExecuteFinishedScripts(); - } else { - mRequestHandle->LoadingFinished(aRv); - } + mRequestHandle->LoadingFinished(aRv); } void CacheLoadHandler::Load(Cache* aCache) { diff --git a/icecat/dom/workers/remoteworkers/RemoteWorkerController.cpp b/icecat/dom/workers/remoteworkers/RemoteWorkerController.cpp index c235b381b6..424c10bd5f 100644 --- a/icecat/dom/workers/remoteworkers/RemoteWorkerController.cpp +++ b/icecat/dom/workers/remoteworkers/RemoteWorkerController.cpp @@ -334,10 +334,6 @@ RefPtr RemoteWorkerController::SetServiceWorkerSkipWaitingFlag() AssertIsOnBackgroundThread(); MOZ_ASSERT(mObserver); - if (!mIsServiceWorker) { - return GenericPromise::CreateAndResolve(false, __func__); - } - RefPtr promise = new GenericPromise::Private(__func__); diff --git a/icecat/dom/worklet/WorkletFetchHandler.cpp b/icecat/dom/worklet/WorkletFetchHandler.cpp index 8b95756d23..5280551721 100644 --- a/icecat/dom/worklet/WorkletFetchHandler.cpp +++ b/icecat/dom/worklet/WorkletFetchHandler.cpp @@ -42,13 +42,13 @@ class StartModuleLoadRunnable final : public Runnable { WorkletImpl* aWorkletImpl, const nsMainThreadPtrHandle& aHandlerRef, nsCOMPtr aURI, nsIURI* aReferrer, - nsTArray&& aLocalizedStrs) + const nsTArray& aLocalizedStrs) : Runnable("Worklet::StartModuleLoadRunnable"), mWorkletImpl(aWorkletImpl), mHandlerRef(aHandlerRef), mURI(std::move(aURI)), mReferrer(aReferrer), - mLocalizedStrs(std::move(aLocalizedStrs)), + mLocalizedStrs(aLocalizedStrs), mParentRuntime( JS_GetParentRuntime(CycleCollectedJSContext::Get()->Context())) { MOZ_ASSERT(NS_IsMainThread()); @@ -67,7 +67,7 @@ class StartModuleLoadRunnable final : public Runnable { nsMainThreadPtrHandle mHandlerRef; nsCOMPtr mURI; nsCOMPtr mReferrer; - nsTArray mLocalizedStrs; + const nsTArray& mLocalizedStrs; JSRuntime* mParentRuntime; JS::ContextOptions mContextOptions; }; @@ -107,7 +107,7 @@ NS_IMETHODIMP StartModuleLoadRunnable::RunOnWorkletThread() { MOZ_ASSERT(moduleLoader); if (!moduleLoader->HasSetLocalizedStrings()) { - moduleLoader->SetLocalizedStrings(mLocalizedStrs.Clone()); + moduleLoader->SetLocalizedStrings(&mLocalizedStrs); } RefPtr loadContext = new WorkletLoadContext(mHandlerRef); @@ -338,7 +338,7 @@ already_AddRefed WorkletFetchHandler::AddModule( nsIURI* referrer = doc->GetDocumentURIAsReferrer(); nsCOMPtr runnable = new StartModuleLoadRunnable( aWorklet->mImpl, handlerRef, std::move(resolvedURI), referrer, - aWorklet->GetLocalizedStrings().Clone()); + aWorklet->GetLocalizedStrings()); if (NS_FAILED(aWorklet->mImpl->SendControlMessage(runnable.forget()))) { return nullptr; diff --git a/icecat/dom/worklet/loader/WorkletModuleLoader.cpp b/icecat/dom/worklet/loader/WorkletModuleLoader.cpp index bb279d792b..1e46085b4c 100644 --- a/icecat/dom/worklet/loader/WorkletModuleLoader.cpp +++ b/icecat/dom/worklet/loader/WorkletModuleLoader.cpp @@ -306,12 +306,13 @@ nsresult WorkletModuleLoader::GetResolveFailureMessage( ResolveError aError, const nsAString& aSpecifier, nsAString& aResult) { uint8_t index = static_cast(aError); MOZ_ASSERT(index < static_cast(ResolveError::Length)); - MOZ_ASSERT(HasSetLocalizedStrings()); - if (NS_WARN_IF(mLocalizedStrs.IsEmpty())) { + MOZ_ASSERT(mLocalizedStrs); + MOZ_ASSERT(!mLocalizedStrs->IsEmpty()); + if (!mLocalizedStrs || NS_WARN_IF(mLocalizedStrs->IsEmpty())) { return NS_ERROR_FAILURE; } - const nsString& localizedStr = mLocalizedStrs.ElementAt(index); + const nsString& localizedStr = mLocalizedStrs->ElementAt(index); AutoTArray params; params.AppendElement(aSpecifier); diff --git a/icecat/dom/worklet/loader/WorkletModuleLoader.h b/icecat/dom/worklet/loader/WorkletModuleLoader.h index e22ff6db0d..7ac8616ec1 100644 --- a/icecat/dom/worklet/loader/WorkletModuleLoader.h +++ b/icecat/dom/worklet/loader/WorkletModuleLoader.h @@ -55,10 +55,9 @@ class WorkletModuleLoader : public JS::loader::ModuleLoaderBase { void RemoveRequest(nsIURI* aURI); JS::loader::ModuleLoadRequest* GetRequest(nsIURI* aURI) const; - bool HasSetLocalizedStrings() const { return !mLocalizedStrs.IsEmpty(); } - void SetLocalizedStrings(nsTArray&& aStrings) { - MOZ_ASSERT(!aStrings.IsEmpty()); - mLocalizedStrs = std::move(aStrings); + bool HasSetLocalizedStrings() const { return (bool)mLocalizedStrs; } + void SetLocalizedStrings(const nsTArray* aStrings) { + mLocalizedStrs = aStrings; } private: @@ -105,7 +104,7 @@ class WorkletModuleLoader : public JS::loader::ModuleLoaderBase { // We get the localized strings on the main thread, and pass it to // WorkletModuleLoader. - nsTArray mLocalizedStrs; + const nsTArray* mLocalizedStrs = nullptr; }; } // namespace loader diff --git a/icecat/dom/xhr/XMLHttpRequestMainThread.cpp b/icecat/dom/xhr/XMLHttpRequestMainThread.cpp index f081e8810e..7f349eaa81 100644 --- a/icecat/dom/xhr/XMLHttpRequestMainThread.cpp +++ b/icecat/dom/xhr/XMLHttpRequestMainThread.cpp @@ -313,7 +313,10 @@ XMLHttpRequestMainThread::~XMLHttpRequestMainThread() { Abort(); } - mParseEndListener = nullptr; + if (mParseEndListener) { + mParseEndListener->SetIsStale(); + mParseEndListener = nullptr; + } MOZ_ASSERT(!mFlagSyncLooping, "we rather crash than hang"); mFlagSyncLooping = false; @@ -2504,7 +2507,6 @@ void XMLHttpRequestMainThread::ChangeStateToDone(bool aWasSync) { void XMLHttpRequestMainThread::ChangeStateToDoneInternal() { DEBUG_WORKERREFS; - RefPtr kungfuDeathGrip(this); DisconnectDoneNotifier(); StopProgressEventTimer(); diff --git a/icecat/dom/xhr/XMLHttpRequestMainThread.h b/icecat/dom/xhr/XMLHttpRequestMainThread.h index e5eb88d474..ce1d41936c 100644 --- a/icecat/dom/xhr/XMLHttpRequestMainThread.h +++ b/icecat/dom/xhr/XMLHttpRequestMainThread.h @@ -47,7 +47,6 @@ #include "mozilla/dom/XMLHttpRequestEventTarget.h" #include "mozilla/dom/XMLHttpRequestString.h" #include "mozilla/Encoding.h" -#include "mozilla/WeakPtr.h" #ifdef Status /* Xlib headers insist on this for some reason... Nuke it because @@ -184,7 +183,6 @@ class XMLHttpRequestDoneNotifier; // Make sure that any non-DOM interfaces added here are also added to // nsXMLHttpRequestXPCOMifier. class XMLHttpRequestMainThread final : public XMLHttpRequest, - public SupportsWeakPtr, public nsIStreamListener, public nsIChannelEventSink, public nsIProgressEventSink, @@ -846,18 +844,21 @@ class nsXHRParseEndListener : public nsIDOMEventListener { public: NS_DECL_ISUPPORTS NS_IMETHOD HandleEvent(Event* event) override { - if (RefPtr xhr = mXHR.get()) { - xhr->OnBodyParseEnd(); + if (mXHR) { + mXHR->OnBodyParseEnd(); } + mXHR = nullptr; return NS_OK; } explicit nsXHRParseEndListener(XMLHttpRequestMainThread* aXHR) : mXHR(aXHR) {} + void SetIsStale() { mXHR = nullptr; } + private: virtual ~nsXHRParseEndListener() = default; - WeakPtr mXHR; + XMLHttpRequestMainThread* mXHR; }; } // namespace dom diff --git a/icecat/dom/xml/crashtests/1192544.xhtml b/icecat/dom/xml/crashtests/1192544.xhtml deleted file mode 100644 index 036078c59c..0000000000 --- a/icecat/dom/xml/crashtests/1192544.xhtml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - -]> - - -
-
-
-
-
-
-
-
-
-
-
diff --git a/icecat/dom/xml/crashtests/crashtests.list b/icecat/dom/xml/crashtests/crashtests.list index bbfd8f3cce..158342c84d 100644 --- a/icecat/dom/xml/crashtests/crashtests.list +++ b/icecat/dom/xml/crashtests/crashtests.list @@ -10,6 +10,5 @@ load 453278.html load 803586.xhtml load 994740-1.xhtml load 1038887.xhtml -load 1192544.xhtml load 1405878.xml load 1523655.xml diff --git a/icecat/dom/xml/nsXMLPrettyPrinter.cpp b/icecat/dom/xml/nsXMLPrettyPrinter.cpp index 78174c8cfb..94cfabe132 100644 --- a/icecat/dom/xml/nsXMLPrettyPrinter.cpp +++ b/icecat/dom/xml/nsXMLPrettyPrinter.cpp @@ -179,8 +179,6 @@ void nsXMLPrettyPrinter::ContentWillBeRemoved(nsIContent* aChild, } void nsXMLPrettyPrinter::NodeWillBeDestroyed(nsINode* aNode) { - MOZ_DIAGNOSTIC_ASSERT(mDocument == aNode); - mDocument->RemoveMutationObserver(this); mDocument = nullptr; NS_RELEASE_THIS(); } diff --git a/icecat/dom/xslt/xpath/txForwardContext.h b/icecat/dom/xslt/xpath/txForwardContext.h index 712b74ff6d..5acca4d35c 100644 --- a/icecat/dom/xslt/xpath/txForwardContext.h +++ b/icecat/dom/xslt/xpath/txForwardContext.h @@ -21,7 +21,7 @@ class MOZ_STACK_CLASS txForwardContext : public txIEvalContext { private: txIMatchContext* mInner; - txXPathNode mContextNode; + const txXPathNode& mContextNode; RefPtr mContextSet; }; diff --git a/icecat/dom/xslt/xpath/txPathExpr.cpp b/icecat/dom/xslt/xpath/txPathExpr.cpp index c0f8f40c32..79be4caa08 100644 --- a/icecat/dom/xslt/xpath/txPathExpr.cpp +++ b/icecat/dom/xslt/xpath/txPathExpr.cpp @@ -148,10 +148,10 @@ nsresult PathExpr::evalDescendants(Expr* aStep, const txXPathNode& aNode, resNodes->addAndTransfer(newSet); bool filterWS; - rv = aContext->isStripSpaceAllowed(eContext.getContextNode(), filterWS); + rv = aContext->isStripSpaceAllowed(aNode, filterWS); NS_ENSURE_SUCCESS(rv, rv); - txXPathTreeWalker walker(eContext.getContextNode()); + txXPathTreeWalker walker(aNode); if (!walker.moveToFirstChild()) { return NS_OK; } diff --git a/icecat/dom/xslt/xslt/txInstructions.cpp b/icecat/dom/xslt/xslt/txInstructions.cpp index b71f755c6e..df6e1ffeb0 100644 --- a/icecat/dom/xslt/xslt/txInstructions.cpp +++ b/icecat/dom/xslt/xslt/txInstructions.cpp @@ -47,26 +47,26 @@ nsresult txApplyImportsEnd::execute(txExecutionState& aEs) { } nsresult txApplyImportsStart::execute(txExecutionState& aEs) { - txExecutionState::TemplateRule rule = *aEs.getCurrentTemplateRule(); + txExecutionState::TemplateRule* rule = aEs.getCurrentTemplateRule(); // The frame is set to null when there is no current template rule, or // when the current template rule is a default template. However this // instruction isn't used in default templates. - if (!rule.mFrame) { + if (!rule->mFrame) { // XXX ErrorReport: apply-imports instantiated without a current rule return NS_ERROR_XSLT_EXECUTION_FAILURE; } - aEs.pushParamMap(rule.mParams); + aEs.pushParamMap(rule->mParams); txStylesheet::ImportFrame* frame = 0; - txExpandedName mode(rule.mModeNsId, rule.mModeLocalName); + txExpandedName mode(rule->mModeNsId, rule->mModeLocalName); txInstruction* templ; nsresult rv = aEs.mStylesheet->findTemplate(aEs.getEvalContext()->getContextNode(), - mode, &aEs, rule.mFrame, &templ, &frame); + mode, &aEs, rule->mFrame, &templ, &frame); NS_ENSURE_SUCCESS(rv, rv); - aEs.pushTemplateRule(frame, mode, rule.mParams); + aEs.pushTemplateRule(frame, mode, rule->mParams); rv = aEs.runTemplate(templ); if (NS_FAILED(rv)) { diff --git a/icecat/dom/xslt/xslt/txKey.h b/icecat/dom/xslt/xslt/txKey.h index 02fb5c7db2..e3bf56ebaa 100644 --- a/icecat/dom/xslt/xslt/txKey.h +++ b/icecat/dom/xslt/xslt/txKey.h @@ -69,12 +69,11 @@ struct txIndexedKeyHashEntry : public PLDHashEntryHdr { using KeyType = const txIndexedKeyHashKey&; using KeyTypePointer = const txIndexedKeyHashKey*; - explicit txIndexedKeyHashEntry(KeyTypePointer aKey) : mKey(*aKey) {} + explicit txIndexedKeyHashEntry(KeyTypePointer aKey) + : mKey(*aKey), mIndexed(false) {} txIndexedKeyHashEntry(const txIndexedKeyHashEntry& entry) - : mKey(entry.mKey), - mIndexed(entry.mIndexed), - mIsBeingIndexed(entry.mIsBeingIndexed) {} + : mKey(entry.mKey), mIndexed(entry.mIndexed) {} bool KeyEquals(KeyTypePointer aKey) const; @@ -85,8 +84,7 @@ struct txIndexedKeyHashEntry : public PLDHashEntryHdr { enum { ALLOW_MEMMOVE = true }; txIndexedKeyHashKey mKey; - bool mIndexed = false; - bool mIsBeingIndexed = false; + bool mIndexed; }; using txIndexedKeyHash = nsTHashtable; diff --git a/icecat/dom/xslt/xslt/txKeyFunctionCall.cpp b/icecat/dom/xslt/xslt/txKeyFunctionCall.cpp index f90cc69cfd..9219b335ca 100644 --- a/icecat/dom/xslt/xslt/txKeyFunctionCall.cpp +++ b/icecat/dom/xslt/xslt/txKeyFunctionCall.cpp @@ -183,13 +183,6 @@ nsresult txKeyHash::getKeyNodes(const txExpandedName& aKeyName, return NS_OK; } - // This means an xsl:key's match or use expression is (indirectly) - // looking up the same key. - // XSLT allows for recursion but prohibits circularity. - if (indexEntry->mIsBeingIndexed) { - return NS_ERROR_XSLT_BAD_RECURSION; - } - // The key needs to be indexed. txXSLKey* xslKey = mKeys.get(aKeyName); if (!xslKey) { @@ -197,15 +190,10 @@ nsresult txKeyHash::getKeyNodes(const txExpandedName& aKeyName, return NS_ERROR_INVALID_ARG; } - indexEntry->mIsBeingIndexed = true; nsresult rv = xslKey->indexSubtreeRoot(aRoot, mKeyValues, aEs); NS_ENSURE_SUCCESS(rv, rv); - indexEntry = mIndexedKeys.GetEntry(indexKey); - if (MOZ_LIKELY(indexEntry)) { - indexEntry->mIsBeingIndexed = false; - indexEntry->mIndexed = true; - } + indexEntry->mIndexed = true; // Now that the key is indexed we can get its value. valueEntry = mKeyValues.GetEntry(valueKey); diff --git a/icecat/dom/xslt/xslt/txXSLTNumber.cpp b/icecat/dom/xslt/xslt/txXSLTNumber.cpp index 3051aff9f1..c7a29f1968 100644 --- a/icecat/dom/xslt/xslt/txXSLTNumber.cpp +++ b/icecat/dom/xslt/xslt/txXSLTNumber.cpp @@ -107,7 +107,7 @@ nsresult txXSLTNumber::getValueList(Expr* aValueExpr, txPattern* aCountPattern, txPattern* countPattern = aCountPattern; UniquePtr newCountPattern; - txXPathNode currNode(aContext->getContextNode()); + const txXPathNode& currNode = aContext->getContextNode(); // Parse count- and from-attributes diff --git a/icecat/editor/libeditor/EditorBase.cpp b/icecat/editor/libeditor/EditorBase.cpp index 67c9b55851..60102ee7d9 100644 --- a/icecat/editor/libeditor/EditorBase.cpp +++ b/icecat/editor/libeditor/EditorBase.cpp @@ -2878,26 +2878,13 @@ void EditorBase::DispatchInputEvent() { return; } RefPtr dataTransfer = GetInputEventDataTransfer(); - const EditAction editAction = GetEditAction(); - if (editAction == EditAction::eCancelComposition || - editAction == EditAction::eCommitComposition) { - MOZ_ASSERT(!mComposition); - if (MOZ_UNLIKELY(!CanDispatchInputEventAfterCompositionEnd())) { - MOZ_LOG(gEventLog, LogLevel::Info, - ("%p %s: Blocked to dispatch \"input\" event immediately after " - "eCompositionEnd", - this, mIsHTMLEditorClass ? "HTMLEditor" : "TextEditor")); - return; - } - } - const EditorInputType inputType = ToInputType(editAction); mEditActionData->WillDispatchInputEvent(); MOZ_LOG(gEventLog, LogLevel::Info, ("%p %s: Dispatching \"input\" event: { inputType=\"%s\" }...", this, mIsHTMLEditorClass ? "HTMLEditor" : "TextEditor", - ToString(inputType).c_str())); + ToString(ToInputType(GetEditAction())).c_str())); DebugOnly rvIgnored = nsContentUtils::DispatchInputEvent( - targetElement, eEditorInput, inputType, this, + targetElement, eEditorInput, ToInputType(GetEditAction()), this, dataTransfer ? InputEventOptions(dataTransfer, InputEventOptions::NeverCancelable::No) : InputEventOptions(GetInputEventData(), @@ -2905,7 +2892,7 @@ void EditorBase::DispatchInputEvent() { MOZ_LOG(gEventLog, LogLevel::Debug, ("%p %s: Dispatched \"input\" event: { inputType=\"%s\" }", this, mIsHTMLEditorClass ? "HTMLEditor" : "TextEditor", - ToString(inputType).c_str())); + ToString(ToInputType(GetEditAction())).c_str())); mEditActionData->DidDispatchInputEvent(); NS_WARNING_ASSERTION( NS_SUCCEEDED(rvIgnored), @@ -4228,10 +4215,8 @@ nsresult EditorBase::OnCompositionChange( // NOTE: When the pref is enabled, the last `input` event which will be fired // after `compositionend` won't be paired with corresponding `beforeinput` // event. - else if (MOZ_LIKELY( - StaticPrefs::dom_input_events_dispatch_before_compositionend() && - mDispatchInputEvent && !IsEditActionAborted() && - CanDispatchInputEventBeforeCompositionEnd())) { + else if (StaticPrefs::dom_input_events_dispatch_before_compositionend() && + mDispatchInputEvent && !IsEditActionAborted()) { DispatchInputEvent(); } @@ -4312,56 +4297,6 @@ void EditorBase::OnCompositionEnd( NotifyEditorObservers(eNotifyEditorObserversOfEnd); } -bool EditorBase::CanDispatchInputEventBeforeCompositionEnd() const { - Document* const doc = GetDocument(); - if (NS_WARN_IF(!doc)) { - return false; - } - nsIPrincipal* const principal = doc->GetPrincipalForPrefBasedHacks(); - if (!principal) { - return true; - } - constexpr static auto* kTextEditorPref = - "editor.texteditor.inputevent.hack.no_dispatch_before_compositionend"; - constexpr static auto* kTextEditorAddlPref = - "editor.texteditor.inputevent.hack.no_dispatch_before_compositionend." - "addl"; - constexpr static auto* kHTMLEditorPref = - "editor.htmleditor.inputevent.hack.no_dispatch_before_compositionend"; - constexpr static auto* kHTMLEditorAddlPref = - "editor.htmleditor.inputevent.hack.no_dispatch_before_compositionend." - "addl"; - return !principal->IsURIInPrefList(IsTextEditor() ? kTextEditorPref - : kHTMLEditorPref) && - !principal->IsURIInPrefList(IsTextEditor() ? kTextEditorAddlPref - : kHTMLEditorAddlPref); -} - -bool EditorBase::CanDispatchInputEventAfterCompositionEnd() const { - Document* const doc = GetDocument(); - if (NS_WARN_IF(!doc)) { - return false; - } - nsIPrincipal* const principal = doc->GetPrincipalForPrefBasedHacks(); - if (!principal) { - return true; - } - constexpr static auto* kTextEditorPref = - "editor.texteditor.inputevent.hack.no_dispatch_after_compositionend"; - constexpr static auto* kTextEditorAddlPref = - "editor.texteditor.inputevent.hack.no_dispatch_after_compositionend." - "addl"; - constexpr static auto* kHTMLEditorPref = - "editor.htmleditor.inputevent.hack.no_dispatch_after_compositionend"; - constexpr static auto* kHTMLEditorAddlPref = - "editor.htmleditor.inputevent.hack.no_dispatch_after_compositionend." - "addl"; - return !principal->IsURIInPrefList(IsTextEditor() ? kTextEditorPref - : kHTMLEditorPref) && - !principal->IsURIInPrefList(IsTextEditor() ? kTextEditorAddlPref - : kHTMLEditorAddlPref); -} - bool EditorBase::WillHandleMouseButtonEvent(WidgetMouseEvent& aMouseEvent) { MOZ_ASSERT(aMouseEvent.mMessage == eMouseDown || aMouseEvent.mMessage == eMouseUp); diff --git a/icecat/editor/libeditor/EditorBase.h b/icecat/editor/libeditor/EditorBase.h index d32352aaba..7540237dc9 100644 --- a/icecat/editor/libeditor/EditorBase.h +++ b/icecat/editor/libeditor/EditorBase.h @@ -2514,18 +2514,6 @@ class EditorBase : public nsIEditor, */ MOZ_CAN_RUN_SCRIPT void DispatchInputEvent(); - /** - * Return true if it's NOT blocked by the pref to dispatch `input` event - * immediately before `compositionend`. - */ - [[nodiscard]] bool CanDispatchInputEventBeforeCompositionEnd() const; - - /** - * Return true if it's NOT blocked by the pref to dispatch `input` event - * immediately after `compositionend`. - */ - [[nodiscard]] bool CanDispatchInputEventAfterCompositionEnd() const; - /** * Called after a transaction is done successfully. */ diff --git a/icecat/editor/libeditor/HTMLEditUtils.cpp b/icecat/editor/libeditor/HTMLEditUtils.cpp index 91fc80e984..c60e57ea66 100644 --- a/icecat/editor/libeditor/HTMLEditUtils.cpp +++ b/icecat/editor/libeditor/HTMLEditUtils.cpp @@ -147,31 +147,6 @@ template Result HTMLEditUtils::ComputePointToPutCaretInElementIfOutside( const Element& aElement, const EditorRawDOMPoint& aCurrentPoint); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorDOMPoint&, const Element&); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorDOMPoint&, const Element&); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorRawDOMPoint&, const Element&); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorRawDOMPoint&, const Element&); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorDOMPointInText&, const Element&); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorDOMPointInText&, const Element&); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorRawDOMPointInText&, const Element&); -template Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorRawDOMPointInText&, const Element&); - template bool HTMLEditUtils::IsSameCSSColorValue(const nsAString& aColorA, const nsAString& aColorB); template bool HTMLEditUtils::IsSameCSSColorValue(const nsACString& aColorA, @@ -2898,33 +2873,6 @@ HTMLEditUtils::ComputePointToPutCaretInElementIfOutside( return EditorDOMPointType(firstEditableContent, 0u); } -// static -template -Maybe -HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorDOMPointType& aPoint, const Element& aEditingHost) { - MOZ_ASSERT(aPoint.IsSet()); - if (MOZ_UNLIKELY(!aPoint.IsInContentNode())) { - return Nothing{}; - } - const WSScanResult previousThing = - WSRunScanner::ScanPreviousVisibleNodeOrBlockBoundary( - WSRunScanner::Scan::All, aPoint, - BlockInlineCheck::UseComputedDisplayStyle, &aEditingHost); - if (!previousThing.ReachedLineBreak()) { - return Nothing{}; // No preceding line break. - } - const WSScanResult nextThing = - WSRunScanner::ScanInclusiveNextVisibleNodeOrBlockBoundary( - WSRunScanner::Scan::All, aPoint, - BlockInlineCheck::UseComputedDisplayStyle, &aEditingHost); - if (!nextThing.ReachedBlockBoundary()) { - return Nothing{}; // The line break is not followed by a block boundary so - // that it's a visible line break. - } - return Some(previousThing.CreateEditorLineBreak()); -} - // static bool HTMLEditUtils::IsInlineStyleSetByElement( const nsIContent& aContent, const EditorInlineStyle& aStyle, diff --git a/icecat/editor/libeditor/HTMLEditUtils.h b/icecat/editor/libeditor/HTMLEditUtils.h index 524edd17a0..409e01777f 100644 --- a/icecat/editor/libeditor/HTMLEditUtils.h +++ b/icecat/editor/libeditor/HTMLEditUtils.h @@ -2547,15 +2547,6 @@ class HTMLEditUtils final { ComputePointToPutCaretInElementIfOutside( const Element& aElement, const EditorDOMPointTypeInput& aCurrentPoint); - /** - * Return a line break if aPoint is after a line break which is immediately - * before a block boundary. - */ - template - static Maybe - GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem( - const EditorDOMPointType& aPoint, const Element& aEditingHost); - /** * Content-based query returns true if * effects aContent. If there is diff --git a/icecat/editor/libeditor/HTMLEditorDeleteHandler.cpp b/icecat/editor/libeditor/HTMLEditorDeleteHandler.cpp index c38b64c5ce..972d2edfcb 100644 --- a/icecat/editor/libeditor/HTMLEditorDeleteHandler.cpp +++ b/icecat/editor/libeditor/HTMLEditorDeleteHandler.cpp @@ -1214,8 +1214,7 @@ class MOZ_STACK_CLASS HTMLEditor::AutoDeleteRangesHandler final { */ [[nodiscard]] Result GetNewCaretPosition( const HTMLEditor& aHTMLEditor, - nsIEditor::EDirection aDirectionAndAmount, - const Element& aEditingHost) const; + nsIEditor::EDirection aDirectionAndAmount) const; RefPtr mEmptyInclusiveAncestorBlockElement; }; // HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter @@ -3356,8 +3355,8 @@ Result HTMLEditor::AutoDeleteRangesHandler:: return EditActionResult::HandledResult(); } - EditorDOMPoint newCaretPosition = - HTMLEditUtils::GetGoodCaretPointFor( + EditorRawDOMPoint newCaretPosition = + HTMLEditUtils::GetGoodCaretPointFor( *mLeafContentInOtherBlock, aDirectionAndAmount); if (MOZ_UNLIKELY(!newCaretPosition.IsInContentNode())) { NS_WARNING("HTMLEditUtils::GetGoodCaretPointFor() failed"); @@ -3381,8 +3380,6 @@ Result HTMLEditor::AutoDeleteRangesHandler:: BlockInlineCheck::UseComputedDisplayOutsideStyle); } if (nextThingOfCaretPoint.ReachedBlockBoundary()) { - AutoTrackDOMPoint trackNewCaretPosition(aHTMLEditor.RangeUpdaterRef(), - &newCaretPosition); const EditorDOMPoint atBlockBoundary = nextThingOfCaretPoint.ReachedCurrentBlockBoundary() ? EditorDOMPoint::AtEndOf(*nextThingOfCaretPoint.ElementPtr()) @@ -3396,10 +3393,6 @@ Result HTMLEditor::AutoDeleteRangesHandler:: "failed"); return afterLastVisibleThingOrError.propagateErr(); } - trackNewCaretPosition.Flush(StopTracking::Yes); - if (NS_WARN_IF(!newCaretPosition.IsSetAndValidInComposedDoc())) { - return Err(NS_ERROR_EDITOR_UNEXPECTED_DOM_TREE); - } } } rv = aHTMLEditor.CollapseSelectionTo(newCaretPosition); @@ -8382,8 +8375,7 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter:: Result HTMLEditor::AutoDeleteRangesHandler:: AutoEmptyBlockAncestorDeleter::GetNewCaretPosition( const HTMLEditor& aHTMLEditor, - nsIEditor::EDirection aDirectionAndAmount, - const Element& aEditingHost) const { + nsIEditor::EDirection aDirectionAndAmount) const { MOZ_ASSERT(mEmptyInclusiveAncestorBlockElement); MOZ_ASSERT(mEmptyInclusiveAncestorBlockElement->GetParentElement()); MOZ_ASSERT(aHTMLEditor.IsEditActionDataAvailable()); @@ -8394,23 +8386,12 @@ Result HTMLEditor::AutoDeleteRangesHandler:: case nsIEditor::eToEndOfLine: { // Collapse Selection to next node of after empty block element // if there is. Otherwise, to just after the empty block. - nsIContent* const nextContentOfEmptyBlock = [&]() -> nsIContent* { - for (EditorRawDOMPoint scanStartPoint = - EditorRawDOMPoint::After(mEmptyInclusiveAncestorBlockElement); - scanStartPoint.IsInContentNode();) { - nsIContent* const nextContent = HTMLEditUtils::GetNextContent( - scanStartPoint, {}, BlockInlineCheck::Unused, &aEditingHost); - // Let's ignore invisible `Text`. - if (nextContent && nextContent->IsText() && - !HTMLEditUtils::IsVisibleTextNode(*nextContent->AsText())) { - scanStartPoint = EditorRawDOMPoint::After(*nextContent); - continue; - } - return nextContent; - } - return nullptr; - }(); - if (nextContentOfEmptyBlock) { + auto afterEmptyBlock( + EditorDOMPoint::After(mEmptyInclusiveAncestorBlockElement)); + MOZ_ASSERT(afterEmptyBlock.IsSet()); + if (nsIContent* nextContentOfEmptyBlock = HTMLEditUtils::GetNextContent( + afterEmptyBlock, {}, BlockInlineCheck::Unused, + aHTMLEditor.ComputeEditingHost())) { EditorDOMPoint pt = HTMLEditUtils::GetGoodCaretPointFor( *nextContentOfEmptyBlock, aDirectionAndAmount); if (!pt.IsSet()) { @@ -8419,8 +8400,6 @@ Result HTMLEditor::AutoDeleteRangesHandler:: } return CaretPoint(std::move(pt)); } - EditorDOMPoint afterEmptyBlock = - EditorDOMPoint::After(mEmptyInclusiveAncestorBlockElement); if (NS_WARN_IF(!afterEmptyBlock.IsSet())) { return Err(NS_ERROR_FAILURE); } @@ -8430,43 +8409,20 @@ Result HTMLEditor::AutoDeleteRangesHandler:: case nsIEditor::ePreviousWord: case nsIEditor::eToBeginningOfLine: { // Collapse Selection to previous editable node of the empty block - // if there is. - nsIContent* const previousContentOfEmptyBlock = [&]() -> nsIContent* { - for (EditorRawDOMPoint scanStartPoint = - EditorRawDOMPoint(mEmptyInclusiveAncestorBlockElement); - scanStartPoint.IsInContentNode();) { - nsIContent* const previousContent = HTMLEditUtils::GetPreviousContent( - scanStartPoint, {WalkTreeOption::IgnoreNonEditableNode}, - BlockInlineCheck::Unused, &aEditingHost); - // Let's ignore invisible `Text`. - if (previousContent && previousContent->IsText() && - !HTMLEditUtils::IsVisibleTextNode(*previousContent->AsText())) { - scanStartPoint = EditorRawDOMPoint(previousContent, 0u); - continue; - } - return previousContent; - } - return nullptr; - }(); - if (previousContentOfEmptyBlock) { - const EditorRawDOMPoint atEndOfPreviousContent = - HTMLEditUtils::GetGoodCaretPointFor( - *previousContentOfEmptyBlock, aDirectionAndAmount); - if (!atEndOfPreviousContent.IsSet()) { + // if there is. Otherwise, to after the empty block. + EditorRawDOMPoint atEmptyBlock(mEmptyInclusiveAncestorBlockElement); + if (nsIContent* previousContentOfEmptyBlock = + HTMLEditUtils::GetPreviousContent( + atEmptyBlock, {WalkTreeOption::IgnoreNonEditableNode}, + BlockInlineCheck::Unused, aHTMLEditor.ComputeEditingHost())) { + EditorDOMPoint pt = HTMLEditUtils::GetGoodCaretPointFor( + *previousContentOfEmptyBlock, aDirectionAndAmount); + if (!pt.IsSet()) { NS_WARNING("HTMLEditUtils::GetGoodCaretPointFor() failed"); return Err(NS_ERROR_FAILURE); } - // If the previous content is between a preceding line break and the - // block boundary of current empty block, let's move caret to the line - // break if there is no visible things between them. - const Maybe precedingLineBreak = - HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem< - EditorRawLineBreak>(atEndOfPreviousContent, aEditingHost); - return precedingLineBreak.isSome() - ? CaretPoint(precedingLineBreak->To()) - : CaretPoint(atEndOfPreviousContent.To()); + return CaretPoint(std::move(pt)); } - // Otherwise, let's put caret next to the deleting block. auto afterEmptyBlock = EditorDOMPoint::After(*mEmptyInclusiveAncestorBlockElement); if (NS_WARN_IF(!afterEmptyBlock.IsSet())) { @@ -8536,7 +8492,7 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter::Run( : EditorDOMPoint()); } Result caretPointOrError = - GetNewCaretPosition(aHTMLEditor, aDirectionAndAmount, aEditingHost); + GetNewCaretPosition(aHTMLEditor, aDirectionAndAmount); NS_WARNING_ASSERTION( caretPointOrError.isOk(), "AutoEmptyBlockAncestorDeleter::GetNewCaretPosition() failed"); @@ -8567,7 +8523,6 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter::Run( NS_WARNING("EditorBase::DeleteNodeWithTransaction() failed"); return Err(rv); } - trackPointToPutCaret.FlushAndStopTracking(); } else { Result caretPointOrError = WhiteSpaceVisibilityKeeper::DeleteContentNodeAndJoinTextNodesAroundIt( @@ -8579,11 +8534,11 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter::Run( "DeleteContentNodeAndJoinTextNodesAroundIt() failed"); return caretPointOrError.propagateErr(); } - trackPointToPutCaret.FlushAndStopTracking(); caretPointOrError.unwrap().MoveCaretPointTo( pointToPutCaret, {SuggestCaret::OnlyIfHasSuggestion}); } trackEmptyBlockPoint.FlushAndStopTracking(); + trackPointToPutCaret.FlushAndStopTracking(); if (NS_WARN_IF(!atEmptyInclusiveAncestorBlockElement .IsInContentNodeAndValidInComposedDoc()) || NS_WARN_IF(pointToPutCaret.IsSet() && diff --git a/icecat/editor/libeditor/WSRunScanner.h b/icecat/editor/libeditor/WSRunScanner.h index cf3952d1f2..b0da7f3e2b 100644 --- a/icecat/editor/libeditor/WSRunScanner.h +++ b/icecat/editor/libeditor/WSRunScanner.h @@ -162,22 +162,6 @@ class MOZ_STACK_CLASS WSScanResult final { return mContent->AsText(); } - template - MOZ_NEVER_INLINE_DEBUG EditorLineBreakType CreateEditorLineBreak() const { - if (ReachedBRElement()) { - return EditorLineBreakType(*BRElementPtr()); - } - if (ReachedPreformattedLineBreak()) { - MOZ_ASSERT_IF(mDirection == ScanDirection::Backward, *mOffset > 0); - return EditorLineBreakType(*TextPtr(), - mDirection == ScanDirection::Forward - ? mOffset.valueOr(0) - : std::max(mOffset.valueOr(1), 1u) - 1); - } - MOZ_CRASH("Didn't reach a line break"); - return EditorLineBreakType(*BRElementPtr()); - } - /** * Returns true if found or reached content is editable. */ @@ -293,15 +277,6 @@ class MOZ_STACK_CLASS WSScanResult final { return mReason == WSType::PreformattedLineBreak; } - /** - * Return true if reached a
element or a preformatted line break. - * Return false when reached a block boundary. Use ReachedLineBoundary() if - * you want it to return true in the case too. - */ - [[nodiscard]] bool ReachedLineBreak() const { - return ReachedBRElement() || ReachedPreformattedLineBreak(); - } - /** * The scanner reached a
element. */ diff --git a/icecat/editor/libeditor/WhiteSpaceVisibilityKeeper.cpp b/icecat/editor/libeditor/WhiteSpaceVisibilityKeeper.cpp index cf7db902fd..656ccbc221 100644 --- a/icecat/editor/libeditor/WhiteSpaceVisibilityKeeper.cpp +++ b/icecat/editor/libeditor/WhiteSpaceVisibilityKeeper.cpp @@ -3503,10 +3503,8 @@ WhiteSpaceVisibilityKeeper::DeleteContentNodeAndJoinTextNodesAroundIt( WSRunScanner::ScanInclusiveNextVisibleNodeOrBlockBoundary( Scan::All, pointToPutCaret, BlockInlineCheck::UseComputedDisplayOutsideStyle); - Maybe lineBreak; - if (nextThingOfCaretPoint.ReachedLineBreak()) { - lineBreak.emplace( - nextThingOfCaretPoint.CreateEditorLineBreak()); + if (nextThingOfCaretPoint.ReachedBRElement() || + nextThingOfCaretPoint.ReachedPreformattedLineBreak()) { nextThingOfCaretPoint = WSRunScanner::ScanInclusiveNextVisibleNodeOrBlockBoundary( Scan::All, @@ -3532,26 +3530,6 @@ WhiteSpaceVisibilityKeeper::DeleteContentNodeAndJoinTextNodesAroundIt( if (NS_WARN_IF(!aContentToDelete.IsInComposedDoc())) { return Err(NS_ERROR_EDITOR_UNEXPECTED_DOM_TREE); } - // If the previous content ends with an invisible line break, let's - // delete it. - if (lineBreak.isSome() && lineBreak->IsInComposedDoc()) { - const WSScanResult prevThing = - WSRunScanner::ScanPreviousVisibleNodeOrBlockBoundary( - WSRunScanner::Scan::All, - lineBreak->To(), - BlockInlineCheck::UseComputedDisplayStyle, &aEditingHost); - if (!prevThing.ReachedLineBoundary()) { - Result pointOrError = - aHTMLEditor.DeleteLineBreakWithTransaction( - lineBreak.ref(), nsIEditor::eStrip, aEditingHost); - if (MOZ_UNLIKELY(pointOrError.isErr())) { - NS_WARNING( - "HTMLEditor::DeleteLineBreakWithTransaction() failed"); - return pointOrError.propagateErr(); - } - trackPointToPutCaret->Flush(StopTracking::No); - } - } } } // Similarly, we may put caret into the following block (this is the diff --git a/icecat/editor/libeditor/tests/mochitest.toml b/icecat/editor/libeditor/tests/mochitest.toml index b4b55e6049..09b7d70bcd 100644 --- a/icecat/editor/libeditor/tests/mochitest.toml +++ b/icecat/editor/libeditor/tests/mochitest.toml @@ -622,8 +622,6 @@ support-files = ["file_sanitizer_on_paste.sjs"] ["test_select_all_without_body.html"] support-files = ["file_select_all_without_body.html"] -["test_selectable_input_event_dispatching_for_compositionend.html"] - ["test_selection_move_commands.html"] support-files = ["!/gfx/layers/apz/test/mochitest/apz_test_utils.js"] diff --git a/icecat/editor/libeditor/tests/test_selectable_input_event_dispatching_for_compositionend.html b/icecat/editor/libeditor/tests/test_selectable_input_event_dispatching_for_compositionend.html deleted file mode 100644 index 227ea9c471..0000000000 --- a/icecat/editor/libeditor/tests/test_selectable_input_event_dispatching_for_compositionend.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - -Test for block list of dispatching `input` event around `compositionend` - - - - - - - - -

- - diff --git a/icecat/extensions/permissions/test/unit/test_permmanager_expiration.js b/icecat/extensions/permissions/test/unit/test_permmanager_expiration.js index 5de650f62a..24ff366730 100644 --- a/icecat/extensions/permissions/test/unit/test_permmanager_expiration.js +++ b/icecat/extensions/permissions/test/unit/test_permmanager_expiration.js @@ -23,21 +23,20 @@ function* do_run_test() { let now = Number(Date.now()); - // add a permission with *now* expiration (minus 10ms to ensure timing doesn't - // treat them as still valid) + // add a permission with *now* expiration pm.addFromPrincipal( principal, "test/expiration-perm-exp", 1, pm.EXPIRE_TIME, - now - 10 + now ); pm.addFromPrincipal( principal, "test/expiration-session-exp", 1, pm.EXPIRE_SESSION, - now - 10 + now ); // add a permission with future expiration (100 milliseconds) diff --git a/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.cpp b/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.cpp index d71b983979..8971694db3 100644 --- a/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.cpp +++ b/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.cpp @@ -14,17 +14,7 @@ RemoteSpellcheckEngineChild::RemoteSpellcheckEngineChild( RemoteSpellcheckEngineChild::~RemoteSpellcheckEngineChild() { // null out the owner's SpellcheckEngineChild to prevent state corruption // during shutdown - if (mOwner) { - mOwner->DeleteRemoteEngine(); - } -} - -void RemoteSpellcheckEngineChild::Destroy() { - if (mOwner) { - mOwner->DeleteRemoteEngine(); - mOwner = nullptr; - } - (void)RemoteSpellcheckEngineChild::Send__delete__(this); + mOwner->DeleteRemoteEngine(); } RefPtr RemoteSpellcheckEngineChild::SetCurrentDictionaries( diff --git a/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.h b/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.h index cd474498a3..1579908f46 100644 --- a/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.h +++ b/icecat/extensions/spellcheck/ipc/RemoteSpellCheckEngineChild.h @@ -17,11 +17,8 @@ class RemoteSpellcheckEngineChild : public mozilla::PRemoteSpellcheckEngineChild { public: explicit RemoteSpellcheckEngineChild(mozSpellChecker* aOwner); - RemoteSpellcheckEngineChild() = delete; virtual ~RemoteSpellcheckEngineChild(); - void Destroy(); - RefPtr SetCurrentDictionaries( const nsTArray& aDictionaries); diff --git a/icecat/extensions/spellcheck/src/mozSpellChecker.cpp b/icecat/extensions/spellcheck/src/mozSpellChecker.cpp index c1f60b2250..8e92d04416 100644 --- a/icecat/extensions/spellcheck/src/mozSpellChecker.cpp +++ b/icecat/extensions/spellcheck/src/mozSpellChecker.cpp @@ -42,7 +42,7 @@ mozSpellChecker::~mozSpellChecker() { if (mEngine) { MOZ_ASSERT(XRE_IsContentProcess()); - mEngine->Destroy(); + RemoteSpellcheckEngineChild::Send__delete__(mEngine); MOZ_ASSERT(!mEngine); } } diff --git a/icecat/gfx/2d/2D.h b/icecat/gfx/2d/2D.h index 26362d619d..c416183660 100644 --- a/icecat/gfx/2d/2D.h +++ b/icecat/gfx/2d/2D.h @@ -1195,7 +1195,6 @@ class FTUserFontData final explicit FTUserFontData(const char* aFilename) : mFilename(aFilename) {} const uint8_t* FontData() const { return mFontData; } - uint32_t FontDataLength() const { return mLength; } already_AddRefed CloneFace( int aFaceIndex = 0) override; diff --git a/icecat/gfx/2d/ConvolutionFilterAVX2.cpp b/icecat/gfx/2d/ConvolutionFilterAVX2.cpp index 815ab6e67c..633e95b830 100644 --- a/icecat/gfx/2d/ConvolutionFilterAVX2.cpp +++ b/icecat/gfx/2d/ConvolutionFilterAVX2.cpp @@ -52,18 +52,7 @@ void convolve_vertically_avx2( }; int i = 0; - if (i < filterLen && (reinterpret_cast(filter) & 2) != 0) { - // _mm256_set1_epi32 may generate instructions that require 4-byte align - // for the memory load. ConvolutionFixed is 2 bytes, so a random offset - // into the filter array might be only 2-byte aligned. Process the first - // entry individually so that subsequent blocks will be 4-byte aligned. - convolve_16_pixels( - _mm256_set1_epi32(*(const int16_t*)(filter + i)), - _mm256_loadu_si256((const __m256i*)(srcRows[i] + x * 4)), - _mm256_setzero_si256()); - i++; - } - for (; i + 1 < filterLen; i += 2) { + for (; i < filterLen / 2 * 2; i += 2) { convolve_16_pixels( _mm256_set1_epi32(*(const int32_t*)(filter + i)), _mm256_loadu_si256((const __m256i*)(srcRows[i + 0] + x * 4)), diff --git a/icecat/gfx/2d/DrawTargetCairo.cpp b/icecat/gfx/2d/DrawTargetCairo.cpp index 9c52d3d43a..ac3d6fba43 100644 --- a/icecat/gfx/2d/DrawTargetCairo.cpp +++ b/icecat/gfx/2d/DrawTargetCairo.cpp @@ -199,7 +199,6 @@ static void ReleaseData(void* aData) { } static cairo_surface_t* CopyToImageSurface(unsigned char* aData, - const IntSize& aSize, const IntRect& aRect, int32_t aStride, SurfaceFormat aFormat) { @@ -220,23 +219,15 @@ static cairo_surface_t* CopyToImageSurface(unsigned char* aData, } unsigned char* surfData = cairo_image_surface_get_data(surf); - size_t surfStride = cairo_image_surface_get_stride(surf); - size_t pixelWidth = BytesPerPixel(aFormat); - size_t rowDataWidth = size_t(aRectWidth) * pixelWidth; - if (rowDataWidth > surfStride || rowDataWidth > size_t(aStride) || - !IntRect(IntPoint(), aSize).Contains(aRect)) { - cairo_surface_destroy(surf); - return nullptr; - } + int surfStride = cairo_image_surface_get_stride(surf); + int32_t pixelWidth = BytesPerPixel(aFormat); - const unsigned char* sourceRow = aData + size_t(aRect.Y()) * size_t(aStride) + - size_t(aRect.X()) * pixelWidth; - unsigned char* destRow = surfData; + unsigned char* source = aData + aRect.Y() * aStride + aRect.X() * pixelWidth; + MOZ_ASSERT(aStride >= aRectWidth * pixelWidth); for (int32_t y = 0; y < aRectHeight; ++y) { - memcpy(destRow, sourceRow, rowDataWidth); - sourceRow += aStride; - destRow += surfStride; + memcpy(surfData + y * surfStride, source + y * aStride, + aRectWidth * pixelWidth); } cairo_surface_mark_dirty(surf); return surf; @@ -260,15 +251,14 @@ static cairo_surface_t* GetAsImageSurface(cairo_surface_t* aSurface) { } static cairo_surface_t* CreateSubImageForData(unsigned char* aData, - const IntSize& aSize, const IntRect& aRect, int aStride, SurfaceFormat aFormat) { - if (!aData || aStride < 0 || !IntRect(IntPoint(), aSize).Contains(aRect)) { + if (!aData) { gfxWarning() << "DrawTargetCairo.CreateSubImageForData null aData"; return nullptr; } - unsigned char* data = aData + size_t(aRect.Y()) * size_t(aStride) + - size_t(aRect.X()) * size_t(BytesPerPixel(aFormat)); + unsigned char* data = + aData + aRect.Y() * aStride + aRect.X() * BytesPerPixel(aFormat); cairo_surface_t* image = cairo_image_surface_create_for_data( data, GfxFormatToCairoFormat(aFormat), aRect.Width(), aRect.Height(), @@ -292,11 +282,9 @@ static cairo_surface_t* ExtractSubImage(cairo_surface_t* aSurface, cairo_surface_t* image = GetAsImageSurface(aSurface); if (image) { - image = CreateSubImageForData( - cairo_image_surface_get_data(image), - IntSize(cairo_image_surface_get_width(image), - cairo_image_surface_get_height(image)), - aSubImage, cairo_image_surface_get_stride(image), aFormat); + image = + CreateSubImageForData(cairo_image_surface_get_data(image), aSubImage, + cairo_image_surface_get_stride(image), aFormat); return image; } @@ -371,8 +359,8 @@ static cairo_surface_t* GetCairoSurfaceForSourceSurface( return nullptr; } - cairo_surface_t* surf = CreateSubImageForData( - map.mData, data->GetSize(), subimage, map.mStride, data->GetFormat()); + cairo_surface_t* surf = CreateSubImageForData(map.mData, subimage, + map.mStride, data->GetFormat()); // In certain scenarios, requesting larger than 8k image fails. Bug 803568 // covers the details of how to run into it, but the full detailed @@ -385,7 +373,7 @@ static cairo_surface_t* GetCairoSurfaceForSourceSurface( // set user data since we're not dependent on the original // data. cairo_surface_t* result = CopyToImageSurface( - map.mData, data->GetSize(), subimage, map.mStride, data->GetFormat()); + map.mData, subimage, map.mStride, data->GetFormat()); data->Unmap(); return result; } @@ -1874,8 +1862,8 @@ already_AddRefed DrawTargetCairo::CreateSourceSurfaceFromData( return nullptr; } - cairo_surface_t* surf = CopyToImageSurface( - aData, aSize, IntRect(IntPoint(), aSize), aStride, aFormat); + cairo_surface_t* surf = + CopyToImageSurface(aData, IntRect(IntPoint(), aSize), aStride, aFormat); if (!surf) { return nullptr; } diff --git a/icecat/gfx/2d/DrawTargetSkia.cpp b/icecat/gfx/2d/DrawTargetSkia.cpp index 56ce129404..d119dd80bf 100644 --- a/icecat/gfx/2d/DrawTargetSkia.cpp +++ b/icecat/gfx/2d/DrawTargetSkia.cpp @@ -260,14 +260,6 @@ static sk_sp GetSkImageForSurface(SourceSurface* aSurface, return nullptr; } - // Wrapper surfaces (e.g. SourceSurfaceOffset) can hand back the inner - // SourceSurfaceSkia here; route it through GetImage so copy-on-write - // snapshots are detached/locked rather than borrowing a raw pixel pointer - // that can outlive the originating SkSurface. - if (dataSurface->GetType() == SurfaceType::SKIA) { - return static_cast(dataSurface.get())->GetImage(aLock); - } - DataSourceSurface::MappedSurface map; void (*releaseProc)(const void*, void*); if (dataSurface->GetType() == SurfaceType::DATA_SHARED_WRAPPER) { diff --git a/icecat/gfx/2d/FilterNodeSoftware.cpp b/icecat/gfx/2d/FilterNodeSoftware.cpp index 9d756b595f..d7d9d3866a 100644 --- a/icecat/gfx/2d/FilterNodeSoftware.cpp +++ b/icecat/gfx/2d/FilterNodeSoftware.cpp @@ -1765,10 +1765,12 @@ void FilterNodeComponentTransferSoftware::SetAttribute(uint32_t aIndex, void FilterNodeComponentTransferSoftware::GenerateLookupTable( ptrdiff_t aComponent, uint8_t aTables[4][256], bool aDisabled) { - if (aDisabled || !FillLookupTable(aComponent, aTables[aComponent])) { + if (aDisabled) { for (int32_t i = 0; i < 256; ++i) { aTables[aComponent][i] = i; } + } else { + FillLookupTable(aComponent, aTables[aComponent]); } } @@ -1925,29 +1927,32 @@ void FilterNodeTableTransferSoftware::SetAttribute(uint32_t aIndex, Invalidate(); } -bool FilterNodeTableTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +void FilterNodeTableTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - return FillLookupTableImpl(mTableR, aTable); + FillLookupTableImpl(mTableR, aTable); break; case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - return FillLookupTableImpl(mTableG, aTable); + FillLookupTableImpl(mTableG, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - return FillLookupTableImpl(mTableB, aTable); + FillLookupTableImpl(mTableB, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - return FillLookupTableImpl(mTableA, aTable); + FillLookupTableImpl(mTableA, aTable); + break; default: MOZ_ASSERT(false, "unknown component"); - return false; + break; } } -bool FilterNodeTableTransferSoftware::FillLookupTableImpl( +void FilterNodeTableTransferSoftware::FillLookupTableImpl( std::vector& aTableValues, uint8_t aTable[256]) { uint32_t tvLength = aTableValues.size(); - if (tvLength < 1) { - return false; + if (tvLength < 2) { + return; } for (size_t i = 0; i < 256; i++) { @@ -1960,7 +1965,6 @@ bool FilterNodeTableTransferSoftware::FillLookupTableImpl( val = std::max(0, val); aTable[i] = val; } - return true; } void FilterNodeDiscreteTransferSoftware::SetAttribute(uint32_t aIndex, @@ -1986,28 +1990,32 @@ void FilterNodeDiscreteTransferSoftware::SetAttribute(uint32_t aIndex, Invalidate(); } -bool FilterNodeDiscreteTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +void FilterNodeDiscreteTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - return FillLookupTableImpl(mTableR, aTable); + FillLookupTableImpl(mTableR, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - return FillLookupTableImpl(mTableG, aTable); + FillLookupTableImpl(mTableG, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - return FillLookupTableImpl(mTableB, aTable); + FillLookupTableImpl(mTableB, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - return FillLookupTableImpl(mTableA, aTable); + FillLookupTableImpl(mTableA, aTable); + break; default: MOZ_ASSERT(false, "unknown component"); - return false; + break; } } -bool FilterNodeDiscreteTransferSoftware::FillLookupTableImpl( +void FilterNodeDiscreteTransferSoftware::FillLookupTableImpl( std::vector& aTableValues, uint8_t aTable[256]) { uint32_t tvLength = aTableValues.size(); if (tvLength < 1) { - return false; + return; } for (size_t i = 0; i < 256; i++) { @@ -2019,7 +2027,6 @@ bool FilterNodeDiscreteTransferSoftware::FillLookupTableImpl( val = std::max(0, val); aTable[i] = val; } - return true; } FilterNodeLinearTransferSoftware::FilterNodeLinearTransferSoftware() @@ -2065,24 +2072,28 @@ void FilterNodeLinearTransferSoftware::SetAttribute(uint32_t aIndex, Invalidate(); } -bool FilterNodeLinearTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +void FilterNodeLinearTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - return FillLookupTableImpl(mSlopeR, mInterceptR, aTable); + FillLookupTableImpl(mSlopeR, mInterceptR, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - return FillLookupTableImpl(mSlopeG, mInterceptG, aTable); + FillLookupTableImpl(mSlopeG, mInterceptG, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - return FillLookupTableImpl(mSlopeB, mInterceptB, aTable); + FillLookupTableImpl(mSlopeB, mInterceptB, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - return FillLookupTableImpl(mSlopeA, mInterceptA, aTable); + FillLookupTableImpl(mSlopeA, mInterceptA, aTable); + break; default: MOZ_ASSERT(false, "unknown component"); - return false; + break; } } -bool FilterNodeLinearTransferSoftware::FillLookupTableImpl( +void FilterNodeLinearTransferSoftware::FillLookupTableImpl( Float aSlope, Float aIntercept, uint8_t aTable[256]) { for (size_t i = 0; i < 256; i++) { int32_t val = NS_lround(aSlope * i + 255 * aIntercept); @@ -2090,7 +2101,6 @@ bool FilterNodeLinearTransferSoftware::FillLookupTableImpl( val = std::max(0, val); aTable[i] = val; } - return true; } FilterNodeGammaTransferSoftware::FilterNodeGammaTransferSoftware() @@ -2152,24 +2162,28 @@ void FilterNodeGammaTransferSoftware::SetAttribute(uint32_t aIndex, Invalidate(); } -bool FilterNodeGammaTransferSoftware::FillLookupTable(ptrdiff_t aComponent, +void FilterNodeGammaTransferSoftware::FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) { switch (aComponent) { case B8G8R8A8_COMPONENT_BYTEOFFSET_R: - return FillLookupTableImpl(mAmplitudeR, mExponentR, mOffsetR, aTable); + FillLookupTableImpl(mAmplitudeR, mExponentR, mOffsetR, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_G: - return FillLookupTableImpl(mAmplitudeG, mExponentG, mOffsetG, aTable); + FillLookupTableImpl(mAmplitudeG, mExponentG, mOffsetG, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_B: - return FillLookupTableImpl(mAmplitudeB, mExponentB, mOffsetB, aTable); + FillLookupTableImpl(mAmplitudeB, mExponentB, mOffsetB, aTable); + break; case B8G8R8A8_COMPONENT_BYTEOFFSET_A: - return FillLookupTableImpl(mAmplitudeA, mExponentA, mOffsetA, aTable); + FillLookupTableImpl(mAmplitudeA, mExponentA, mOffsetA, aTable); + break; default: MOZ_ASSERT(false, "unknown component"); - return false; + break; } } -bool FilterNodeGammaTransferSoftware::FillLookupTableImpl(Float aAmplitude, +void FilterNodeGammaTransferSoftware::FillLookupTableImpl(Float aAmplitude, Float aExponent, Float aOffset, uint8_t aTable[256]) { @@ -2180,14 +2194,12 @@ bool FilterNodeGammaTransferSoftware::FillLookupTableImpl(Float aAmplitude, val = std::max(0, val); aTable[i] = val; } - return true; } FilterNodeConvolveMatrixSoftware::FilterNodeConvolveMatrixSoftware() : mDivisor(0), mBias(0), mEdgeMode(EDGE_MODE_DUPLICATE), - mKernelUnitLength(1.0f, 1.0f), mPreserveAlpha(false) {} int32_t FilterNodeConvolveMatrixSoftware::InputIndex(uint32_t aInputEnumIndex) { @@ -2233,21 +2245,7 @@ void FilterNodeConvolveMatrixSoftware::SetAttribute( uint32_t aIndex, const Size& aKernelUnitLength) { switch (aIndex) { case ATT_CONVOLVE_MATRIX_KERNEL_UNIT_LENGTH: - // Spec for feConvolveMatrix: - // If the attribute (kernelUnitLength) is not specified, the default value - // is one pixel in the offscreen bitmap. If a negative or zero value is - // specified the default value will be used instead. The first number is - // the x value. The second number is the y value. If the value is not - // specified, it defaults to the same value as x. mKernelUnitLength = aKernelUnitLength; - if (mKernelUnitLength.width <= 0.0f || - !std::isfinite(mKernelUnitLength.width)) { - mKernelUnitLength.width = 1.0f; - } - if (mKernelUnitLength.height <= 0.0f || - !std::isfinite(mKernelUnitLength.height)) { - mKernelUnitLength.height = mKernelUnitLength.width; - } break; default: MOZ_CRASH("GFX: FilterNodeConvolveMatrixSoftware::SetAttribute"); @@ -2448,26 +2446,20 @@ template already_AddRefed FilterNodeConvolveMatrixSoftware::DoRender( const IntRect& aRect, CoordType aKernelUnitLengthX, CoordType aKernelUnitLengthY) { - // Ensure multiply fits in an int32_t so convolve math won't overflow. - auto kernelArea = CheckedInt32(mKernelSize.width) * mKernelSize.height; if (mKernelSize.width <= 0 || mKernelSize.height <= 0 || - !kernelArea.isValid() || - mKernelMatrix.size() != size_t(kernelArea.value()) || + mKernelMatrix.size() != + uint32_t(mKernelSize.width * mKernelSize.height) || !IntRect(IntPoint(0, 0), mKernelSize).Contains(mTarget) || mDivisor == 0) { return Factory::CreateDataSourceSurface(aRect.Size(), SurfaceFormat::B8G8R8A8, true); } - RectDouble srcRectD(aRect); - srcRectD.Inflate(GetInflateSourceMargin()); + IntRect srcRect = InflatedSourceRect(aRect); + // Inflate the source rect by another pixel because the bilinear filtering in // ColorComponentAtPoint may want to access the margins. - srcRectD.Inflate(1); - if (!RectIsInt32Safe(srcRectD)) { - return nullptr; - } - IntRect srcRect = TruncatedToInt(srcRectD); + srcRect.Inflate(1); RefPtr input = GetInputDataSourceSurface(IN_CONVOLVE_MATRIX_IN, srcRect, @@ -2546,26 +2538,23 @@ IntRect FilterNodeConvolveMatrixSoftware::MapRectToSource( aMax, aSourceNode); } -MarginDouble FilterNodeConvolveMatrixSoftware::GetInflateSourceMargin() const { - double kulX = double(mKernelUnitLength.width); - double kulY = double(mKernelUnitLength.height); - MarginDouble margin; - margin.left = ceil(mTarget.x * kulX); - margin.top = ceil(mTarget.y * kulY); - margin.right = ceil((mKernelSize.width - mTarget.x - 1) * kulX); - margin.bottom = ceil((mKernelSize.height - mTarget.y - 1) * kulY); - return margin; -} - IntRect FilterNodeConvolveMatrixSoftware::InflatedSourceRect( const IntRect& aDestRect) { if (aDestRect.IsEmpty()) { return IntRect(); } - RectDouble srcRect(aDestRect); - srcRect.Inflate(GetInflateSourceMargin()); - return RectIsInt32Safe(srcRect) ? TruncatedToInt(srcRect) : aDestRect; + IntMargin margin; + margin.left = static_cast(ceil(mTarget.x * mKernelUnitLength.width)); + margin.top = static_cast(ceil(mTarget.y * mKernelUnitLength.height)); + margin.right = static_cast( + ceil((mKernelSize.width - mTarget.x - 1) * mKernelUnitLength.width)); + margin.bottom = static_cast( + ceil((mKernelSize.height - mTarget.y - 1) * mKernelUnitLength.height)); + + IntRect srcRect = aDestRect; + srcRect.Inflate(margin); + return srcRect; } IntRect FilterNodeConvolveMatrixSoftware::InflatedDestRect( @@ -2574,12 +2563,19 @@ IntRect FilterNodeConvolveMatrixSoftware::InflatedDestRect( return IntRect(); } - RectDouble destRect(aSourceRect); - MarginDouble margin = GetInflateSourceMargin(); - std::swap(margin.left, margin.right); - std::swap(margin.top, margin.bottom); + IntMargin margin; + margin.left = static_cast( + ceil((mKernelSize.width - mTarget.x - 1) * mKernelUnitLength.width)); + margin.top = static_cast( + ceil((mKernelSize.height - mTarget.y - 1) * mKernelUnitLength.height)); + margin.right = + static_cast(ceil(mTarget.x * mKernelUnitLength.width)); + margin.bottom = + static_cast(ceil(mTarget.y * mKernelUnitLength.height)); + + IntRect destRect = aSourceRect; destRect.Inflate(margin); - return RectIsInt32Safe(destRect) ? TruncatedToInt(destRect) : aSourceRect; + return destRect; } IntRect FilterNodeConvolveMatrixSoftware::GetOutputRectInRect( @@ -2613,11 +2609,6 @@ void FilterNodeDisplacementMapSoftware::SetAttribute(uint32_t aIndex, void FilterNodeDisplacementMapSoftware::SetAttribute(uint32_t aIndex, uint32_t aValue) { - // Refuse channel values that exceed channel maximum. - if (aValue > ColorChannel::COLOR_CHANNEL_MAX) { - return; - } - switch (aIndex) { case ATT_DISPLACEMENT_MAP_X_CHANNEL: mChannelX = static_cast(aValue); @@ -2664,7 +2655,7 @@ already_AddRefed FilterNodeDisplacementMapSoftware::Render( uint8_t* targetData = targetMap.GetData(); int32_t targetStride = targetMap.GetStride(); - static const ptrdiff_t channelMap[COLOR_CHANNEL_MAX + 1] = { + static const ptrdiff_t channelMap[4] = { B8G8R8A8_COMPONENT_BYTEOFFSET_R, B8G8R8A8_COMPONENT_BYTEOFFSET_G, B8G8R8A8_COMPONENT_BYTEOFFSET_B, B8G8R8A8_COMPONENT_BYTEOFFSET_A}; uint16_t xChannel = channelMap[mChannelX]; @@ -3355,8 +3346,7 @@ static inline Point3D Normalized(const Point3D& vec) { template FilterNodeLightingSoftware::FilterNodeLightingSoftware( const char* aTypeName) - : mSurfaceScale(0), - mKernelUnitLength(1.0f, 1.0f) + : mSurfaceScale(0) #if defined(MOZILLA_INTERNAL_API) && defined(NS_BUILD_REFCNT_LOGGING) , mTypeName(aTypeName) @@ -3409,23 +3399,6 @@ void FilterNodeLightingSoftware::SetAttribute( switch (aIndex) { case ATT_LIGHTING_KERNEL_UNIT_LENGTH: mKernelUnitLength = aKernelUnitLength; - // Spec for fe*Lighting: - // The first number is the value. The second number is the - // value. If the value is not specified, it defaults to the same - // value as . If kernelUnitLength is not specified, the dx and dy - // values should represent very small deltas relative to a given (x,y) - // position, which might be implemented in some cases as one pixel in the - // intermediate image offscreen bitmap, which is a pixel-based coordinate - // system, and thus potentially not scalable. If a negative or zero value - // is specified the default value will be used instead. - if (mKernelUnitLength.width <= 0.0f || - !std::isfinite(mKernelUnitLength.width)) { - mKernelUnitLength.width = 1.0f; - } - if (mKernelUnitLength.height <= 0.0f || - !std::isfinite(mKernelUnitLength.height)) { - mKernelUnitLength.height = mKernelUnitLength.width; - } break; default: MOZ_CRASH("GFX: FilterNodeLightingSoftware::SetAttribute size"); @@ -3475,8 +3448,7 @@ uint32_t SpotLightSoftware::GetColor(uint32_t aLightColor, uint8_t colorC[4]; }; - Float dot = std::clamp( - -aVectorToLight.DotProduct(mVectorFromFocusPointToLight), 0.0f, 1.0f); + Float dot = -aVectorToLight.DotProduct(mVectorFromFocusPointToLight); if (!mPowCache.HasPowerTable()) { dot *= (dot >= mLimitingConeCos); color = aLightColor; @@ -3485,7 +3457,7 @@ uint32_t SpotLightSoftware::GetColor(uint32_t aLightColor, colorC[B8G8R8A8_COMPONENT_BYTEOFFSET_B] *= dot; } else { color = aLightColor; - uint16_t doti = dot * (1 << PowCache::sInputIntPrecisionBits); + uint16_t doti = dot * (dot >= 0) * (1 << PowCache::sInputIntPrecisionBits); uint32_t tmp = mPowCache.Pow(doti) * (dot >= mLimitingConeCos); MOZ_ASSERT(tmp <= (1 << PowCache::sOutputIntPrecisionBits), "pow() result must not exceed 1.0"); @@ -3575,33 +3547,22 @@ FilterNodeLightingSoftware::Render( return DoRender(aRect, mKernelUnitLength.width, mKernelUnitLength.height); } -template -MarginDouble FilterNodeLightingSoftware< - LightType, LightingType>::GetInflateSourceMargin() const { - double kulX = ceil(double(mKernelUnitLength.width)); - double kulY = ceil(double(mKernelUnitLength.height)); - return MarginDouble(kulY, kulX, kulY, kulX); -} - -template -IntRect FilterNodeLightingSoftware::InflatedSourceRect( - const IntRect& aDestRect) { - RectDouble srcRect(aDestRect); - srcRect.Inflate(GetInflateSourceMargin()); - return RectIsInt32Safe(srcRect) ? TruncatedToInt(srcRect) : aDestRect; -} - template void FilterNodeLightingSoftware< LightType, LightingType>::RequestFromInputsForRect(const IntRect& aRect) { - RequestInputRect(IN_LIGHTING_IN, InflatedSourceRect(aRect)); + IntRect srcRect = aRect; + srcRect.Inflate(ceil(mKernelUnitLength.width), + ceil(mKernelUnitLength.height)); + RequestInputRect(IN_LIGHTING_IN, srcRect); } template IntRect FilterNodeLightingSoftware::MapRectToSource( const IntRect& aRect, const IntRect& aMax, FilterNode* aSourceNode) { - return MapInputRectToSource(IN_LIGHTING_IN, InflatedSourceRect(aRect), aMax, - aSourceNode); + IntRect srcRect = aRect; + srcRect.Inflate(ceil(mKernelUnitLength.width), + ceil(mKernelUnitLength.height)); + return MapInputRectToSource(IN_LIGHTING_IN, srcRect, aMax, aSourceNode); } template @@ -3615,17 +3576,14 @@ FilterNodeLightingSoftware::DoRender( MOZ_ASSERT(aKernelUnitLengthY > 0, "aKernelUnitLengthY can be a negative or zero value"); - RectDouble srcRectD(aRect); - srcRectD.Inflate(GetInflateSourceMargin()); + IntRect srcRect = aRect; + IntSize size = aRect.Size(); + srcRect.Inflate(ceil(float(aKernelUnitLengthX)), + ceil(float(aKernelUnitLengthY))); + // Inflate the source rect by another pixel because the bilinear filtering in // ColorComponentAtPoint may want to access the margins. - srcRectD.Inflate(1); - if (!RectIsInt32Safe(srcRectD)) { - return nullptr; - } - IntRect srcRect = TruncatedToInt(srcRectD); - - IntSize size = aRect.Size(); + srcRect.Inflate(1); RefPtr input = GetInputDataSourceSurface( IN_LIGHTING_IN, srcRect, CAN_HANDLE_A8, EDGE_MODE_NONE); @@ -3758,8 +3716,9 @@ uint32_t SpecularLightingSoftware::LightPixel(const Point3D& aNormal, if (halfwayLength > 0) { halfwayVector /= halfwayLength; } - Float dotNH = std::clamp(aNormal.DotProduct(halfwayVector), 0.0f, 1.0f); - uint16_t dotNHi = uint16_t(dotNH * (1 << PowCache::sInputIntPrecisionBits)); + Float dotNH = aNormal.DotProduct(halfwayVector); + uint16_t dotNHi = + uint16_t(dotNH * (dotNH >= 0) * (1 << PowCache::sInputIntPrecisionBits)); // The exponent for specular is in [1,128] range, so we don't need to check // and optimize for the "default power table" scenario here. MOZ_ASSERT(mPowCache.HasPowerTable()); diff --git a/icecat/gfx/2d/FilterNodeSoftware.h b/icecat/gfx/2d/FilterNodeSoftware.h index 11c77651ab..25b2481bfe 100644 --- a/icecat/gfx/2d/FilterNodeSoftware.h +++ b/icecat/gfx/2d/FilterNodeSoftware.h @@ -360,7 +360,7 @@ class FilterNodeComponentTransferSoftware : public FilterNodeSoftware { void RequestFromInputsForRect(const IntRect& aRect) override; virtual void GenerateLookupTable(ptrdiff_t aComponent, uint8_t aTables[4][256], bool aDisabled); - virtual bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) = 0; + virtual void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) = 0; bool mDisableR; bool mDisableG; @@ -379,10 +379,10 @@ class FilterNodeTableTransferSoftware uint32_t aSize) override; protected: - bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - bool FillLookupTableImpl(std::vector& aTableValues, + void FillLookupTableImpl(std::vector& aTableValues, uint8_t aTable[256]); std::vector mTableR; @@ -402,10 +402,10 @@ class FilterNodeDiscreteTransferSoftware uint32_t aSize) override; protected: - bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - bool FillLookupTableImpl(std::vector& aTableValues, + void FillLookupTableImpl(std::vector& aTableValues, uint8_t aTable[256]); std::vector mTableR; @@ -425,10 +425,10 @@ class FilterNodeLinearTransferSoftware void SetAttribute(uint32_t aIndex, Float aValue) override; protected: - bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - bool FillLookupTableImpl(Float aSlope, Float aIntercept, uint8_t aTable[256]); + void FillLookupTableImpl(Float aSlope, Float aIntercept, uint8_t aTable[256]); Float mSlopeR; Float mSlopeG; @@ -451,10 +451,10 @@ class FilterNodeGammaTransferSoftware void SetAttribute(uint32_t aIndex, Float aValue) override; protected: - bool FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; + void FillLookupTable(ptrdiff_t aComponent, uint8_t aTable[256]) override; private: - bool FillLookupTableImpl(Float aAmplitude, Float aExponent, Float aOffset, + void FillLookupTableImpl(Float aAmplitude, Float aExponent, Float aOffset, uint8_t aTable[256]); Float mAmplitudeR; @@ -502,7 +502,6 @@ class FilterNodeConvolveMatrixSoftware : public FilterNodeSoftware { CoordType aKernelUnitLengthX, CoordType aKernelUnitLengthY); - MarginDouble GetInflateSourceMargin() const; IntRect InflatedSourceRect(const IntRect& aDestRect); IntRect InflatedDestRect(const IntRect& aSourceRect); @@ -765,9 +764,6 @@ class FilterNodeLightingSoftware : public FilterNodeSoftware { CoordType aKernelUnitLengthX, CoordType aKernelUnitLengthY); - MarginDouble GetInflateSourceMargin() const; - IntRect InflatedSourceRect(const IntRect& aDestRect); - LightType mLight; LightingType mLighting; Float mSurfaceScale; diff --git a/icecat/gfx/2d/FilterProcessingScalar.cpp b/icecat/gfx/2d/FilterProcessingScalar.cpp index ec64c45556..e1ab274f50 100644 --- a/icecat/gfx/2d/FilterProcessingScalar.cpp +++ b/icecat/gfx/2d/FilterProcessingScalar.cpp @@ -267,8 +267,8 @@ void FilterProcessing::DoOpacityCalculationA8_Scalar( uint8_t alpha = uint8_t(255.f * aValue); for (int32_t y = 0; y < aSize.height; y++) { for (int32_t x = 0; x < aSize.width; x++) { - int32_t inputIndex = y * aSourceStride + x; - int32_t targetIndex = y * aTargetStride + x; + int32_t inputIndex = y * aSourceStride; + int32_t targetIndex = y * aTargetStride; aTargetData[targetIndex] = FastDivideBy255(aSourceData[inputIndex] * alpha); } diff --git a/icecat/gfx/2d/Filters.h b/icecat/gfx/2d/Filters.h index 731575ccc0..a9f77ce6aa 100644 --- a/icecat/gfx/2d/Filters.h +++ b/icecat/gfx/2d/Filters.h @@ -193,8 +193,7 @@ enum ColorChannel { COLOR_CHANNEL_R = 0, COLOR_CHANNEL_G, COLOR_CHANNEL_B, - COLOR_CHANNEL_A, - COLOR_CHANNEL_MAX = COLOR_CHANNEL_A + COLOR_CHANNEL_A }; enum DisplacementMapInputs { diff --git a/icecat/gfx/2d/HelpersCairo.h b/icecat/gfx/2d/HelpersCairo.h index a10e01bdd6..e3c707944b 100644 --- a/icecat/gfx/2d/HelpersCairo.h +++ b/icecat/gfx/2d/HelpersCairo.h @@ -140,15 +140,9 @@ static inline cairo_extend_t GfxExtendToCairoExtend(ExtendMode extend) { static inline cairo_format_t GfxFormatToCairoFormat(SurfaceFormat format) { switch (format) { - case SurfaceFormat::B8G8R8A8: - case SurfaceFormat::R8G8B8A8: - case SurfaceFormat::A8R8G8B8: - // case SurfaceFormat::A8R8G8B8_UINT32: + case SurfaceFormat::A8R8G8B8_UINT32: return CAIRO_FORMAT_ARGB32; - case SurfaceFormat::B8G8R8X8: - case SurfaceFormat::R8G8B8X8: - case SurfaceFormat::X8R8G8B8: - // case SurfaceFormat::X8R8G8B8_UINT32: + case SurfaceFormat::X8R8G8B8_UINT32: return CAIRO_FORMAT_RGB24; case SurfaceFormat::A8: return CAIRO_FORMAT_A8; @@ -156,7 +150,7 @@ static inline cairo_format_t GfxFormatToCairoFormat(SurfaceFormat format) { return CAIRO_FORMAT_RGB16_565; default: gfxCriticalError() << "Unknown image format " << (int)format; - return CAIRO_FORMAT_INVALID; + return CAIRO_FORMAT_ARGB32; } } diff --git a/icecat/gfx/2d/Rect.h b/icecat/gfx/2d/Rect.h index 63e1c96f2c..0e1d2c8fdf 100644 --- a/icecat/gfx/2d/Rect.h +++ b/icecat/gfx/2d/Rect.h @@ -169,11 +169,6 @@ struct MOZ_EMPTY_BASES IntRectTyped aRect.Height()); } - static IntRectTyped Truncate(const RectTyped& aRect) { - return IntRectTyped(int32_t(aRect.X()), int32_t(aRect.Y()), - int32_t(aRect.Width()), int32_t(aRect.Height())); - } - // Rounding isn't meaningful on an integer rectangle. void Round() {} void RoundIn() {} @@ -343,10 +338,10 @@ IntRectTyped RoundedToInt(const RectTyped& aRect) { int32_t(copy.Width()), int32_t(copy.Height())); } -template -bool RectIsInt32Safe(const RectTyped& aRect) { - F min = (F)std::numeric_limits::min(); - F max = (F)std::numeric_limits::max(); +template +bool RectIsInt32Safe(const RectTyped& aRect) { + float min = (float)std::numeric_limits::min(); + float max = (float)std::numeric_limits::max(); return aRect.x > min && aRect.y > min && aRect.width < max && aRect.height < max && aRect.XMost() < max && aRect.YMost() < max; } @@ -361,8 +356,8 @@ IntRectTyped RoundedOut(const RectTyped& aRect) { return IntRectTyped::RoundOut(aRect); } -template -IntRectTyped TruncatedToInt(const RectTyped& aRect) { +template +IntRectTyped TruncatedToInt(const RectTyped& aRect) { return IntRectTyped::Truncate(aRect); } diff --git a/icecat/gfx/2d/ScaledFontMac.cpp b/icecat/gfx/2d/ScaledFontMac.cpp index d7bb972df4..6bfbcfe519 100644 --- a/icecat/gfx/2d/ScaledFontMac.cpp +++ b/icecat/gfx/2d/ScaledFontMac.cpp @@ -784,7 +784,7 @@ cairo_font_face_t* ScaledFontMac::CreateCairoFontFace( already_AddRefed UnscaledFontMac::CreateFromFontDescriptor( const uint8_t* aData, uint32_t aDataLength, uint32_t aIndex) { - if (aDataLength == 0 || aIndex > aDataLength) { + if (aDataLength == 0) { gfxWarning() << "Mac font descriptor is truncated."; return nullptr; } diff --git a/icecat/gfx/2d/Swizzle.cpp b/icecat/gfx/2d/Swizzle.cpp index a247d63d71..03647348f3 100644 --- a/icecat/gfx/2d/Swizzle.cpp +++ b/icecat/gfx/2d/Swizzle.cpp @@ -868,7 +868,7 @@ static void SwizzleChunkOpaqueUpdate(uint8_t*& aBuffer, int32_t aLength) { } template -static void SwizzleChunkOpaqueCopy(const uint8_t*& aSrc, uint8_t*& aDst, +static void SwizzleChunkOpaqueCopy(const uint8_t*& aSrc, uint8_t* aDst, int32_t aLength) { const uint8_t* end = aSrc + 4 * aLength; do { diff --git a/icecat/gfx/angle/checkout/include/GLSLANG/ShaderVars.h b/icecat/gfx/angle/checkout/include/GLSLANG/ShaderVars.h index 4db1902d1b..4b76d33af2 100644 --- a/icecat/gfx/angle/checkout/include/GLSLANG/ShaderVars.h +++ b/icecat/gfx/angle/checkout/include/GLSLANG/ShaderVars.h @@ -12,7 +12,6 @@ #include #include -#include #include #include diff --git a/icecat/gfx/angle/checkout/out/gen/angle/angle_commit.h b/icecat/gfx/angle/checkout/out/gen/angle/angle_commit.h index 9fd1496b6e..7b221d5009 100644 --- a/icecat/gfx/angle/checkout/out/gen/angle/angle_commit.h +++ b/icecat/gfx/angle/checkout/out/gen/angle/angle_commit.h @@ -1,5 +1,5 @@ -#define ANGLE_COMMIT_HASH "b0098a1ebdb0" +#define ANGLE_COMMIT_HASH "419cd2c3213b" #define ANGLE_COMMIT_HASH_SIZE 12 -#define ANGLE_COMMIT_DATE "2026-04-09 15:03:30 +0200" -#define ANGLE_COMMIT_POSITION 19751 +#define ANGLE_COMMIT_DATE "2024-07-29 14:40:59 -0700" +#define ANGLE_COMMIT_POSITION 19739 #define ANGLE_HAS_BINARY_LOADING diff --git a/icecat/gfx/angle/checkout/src/compiler/translator/BaseTypes.h b/icecat/gfx/angle/checkout/src/compiler/translator/BaseTypes.h index e03fab0fdf..7e569f4e9d 100644 --- a/icecat/gfx/angle/checkout/src/compiler/translator/BaseTypes.h +++ b/icecat/gfx/angle/checkout/src/compiler/translator/BaseTypes.h @@ -1591,9 +1591,6 @@ inline const char *getQualifierString(TQualifier q) case EvqLocalInvocationIndex: return "LocalInvocationIndex"; case EvqReadOnly: return "readonly"; case EvqWriteOnly: return "writeonly"; - case EvqCoherent: return "coherent"; - case EvqRestrict: return "restrict"; - case EvqVolatile: return "volatile"; case EvqGeometryIn: return "in"; case EvqGeometryOut: return "out"; case EvqPerVertexIn: return "gl_in"; diff --git a/icecat/gfx/angle/checkout/src/compiler/translator/Compiler.cpp b/icecat/gfx/angle/checkout/src/compiler/translator/Compiler.cpp index f53002d27e..f70e275787 100644 --- a/icecat/gfx/angle/checkout/src/compiler/translator/Compiler.cpp +++ b/icecat/gfx/angle/checkout/src/compiler/translator/Compiler.cpp @@ -686,14 +686,6 @@ bool TCompiler::checkAndSimplifyAST(TIntermBlock *root, // Desktop GLSL shaders don't have precision, so don't expect them to be specified. mValidateASTOptions.validatePrecision = !IsDesktopGLSpec(mShaderSpec); - // Disallow expressions deemed too complex. - // This needs to be checked before other functions that will traverse the AST - // to prevent potential stack overflow crashes. - if (compileOptions.limitExpressionComplexity && !limitExpressionComplexity(root)) - { - return false; - } - if (!validateAST(root)) { return false; @@ -717,6 +709,12 @@ bool TCompiler::checkAndSimplifyAST(TIntermBlock *root, } } + // Disallow expressions deemed too complex. + if (compileOptions.limitExpressionComplexity && !limitExpressionComplexity(root)) + { + return false; + } + if (shouldRunLoopAndIndexingValidation(compileOptions) && !ValidateLimitations(root, mShaderType, &mSymbolTable, &mDiagnostics)) { diff --git a/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.cpp b/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.cpp index e4f4683491..4312c2c966 100644 --- a/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.cpp +++ b/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.cpp @@ -790,14 +790,6 @@ bool TParseContext::checkIsAtGlobalLevel(const TSourceLoc &line, const char *tok return true; } -void TParseContext::checkIsValidExpressionStatement(const TSourceLoc &line, TIntermTyped *expr) -{ - if (expr->isInterfaceBlock()) - { - error(line, "expression statement is not allowed for interface blocks", ""); - } -} - // ESSL 3.00.5 sections 3.8 and 3.9. // If it starts "gl_" or contains two consecutive underscores, it's reserved. // Also checks for "webgl_" and "_webgl_" reserved identifiers if parsing a webgl shader. @@ -958,13 +950,6 @@ bool TParseContext::checkConstructorArguments(const TSourceLoc &line, "constructor"); return false; } - if (argTyped->getBasicType() == EbtInterfaceBlock) - { - error(line, - "an interface block cannot be used as a constructor argument for this type", - "constructor"); - return false; - } if (argTyped->getType().isArray()) { error(line, "constructing from a non-dereferenced array", "constructor"); @@ -1350,6 +1335,9 @@ bool TParseContext::declareVariable(const TSourceLoc &line, (*variable) = new TVariable(&symbolTable, identifier, type, symbolType); + ASSERT(type->getLayoutQualifier().index == -1 || + (isExtensionEnabled(TExtension::EXT_blend_func_extended) && + mShaderType == GL_FRAGMENT_SHADER && mShaderVersion >= 300)); if (type->getQualifier() == EvqFragmentOut) { if (type->getLayoutQualifier().index != -1 && type->getLayoutQualifier().location == -1) @@ -3389,10 +3377,7 @@ TIntermGlobalQualifierDeclaration *TParseContext::parseGlobalQualifierDeclaratio typeQualifier.line); checkMemoryQualifierIsNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line); - if (typeQualifier.invariant) - { - symbolTable.addInvariantVarying(*variable); - } + symbolTable.addInvariantVarying(*variable); TIntermSymbol *intermSymbol = new TIntermSymbol(variable); intermSymbol->setLine(identifierLoc); @@ -4473,11 +4458,6 @@ bool TParseContext::checkUnsizedArrayConstructorArgumentDimensionality( { const TIntermTyped *element = arg->getAsTyped(); ASSERT(element); - if (element->getType().isUnsizedArray()) - { - error(line, "constructing from an unsized array", "constructor"); - return false; - } size_t dimensionalityFromElement = element->getType().getNumArraySizes() + 1u; if (dimensionalityFromElement > type.getNumArraySizes()) { @@ -5217,12 +5197,14 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression, int TParseContext::checkIndexLessThan(bool outOfRangeIndexIsError, const TSourceLoc &location, int index, - unsigned int arraySize, + int arraySize, const char *reason) { + // Should not reach here with an unsized / runtime-sized array. + ASSERT(arraySize > 0); // A negative index should already have been checked. ASSERT(index >= 0); - if (static_cast(index) >= arraySize) + if (index >= arraySize) { std::stringstream reasonStream = sh::InitializeStream(); reasonStream << reason << " '" << index << "'"; @@ -6414,11 +6396,6 @@ bool TParseContext::binaryOpCommonCheck(TOperator op, TIntermTyped *right, const TSourceLoc &loc) { - if (left->getBasicType() == EbtVoid || right->getBasicType() == EbtVoid) - { - error(loc, "operation with void operands", GetOperatorString(op)); - return false; - } // Check opaque types are not allowed to be operands in expressions other than array indexing // and structure member selection. if (IsOpaqueType(left->getBasicType()) || IsOpaqueType(right->getBasicType())) @@ -6865,10 +6842,6 @@ TIntermTyped *TParseContext::addComma(TIntermTyped *left, "sequence operator is not allowed for void, arrays, or structs containing arrays", ","); } - if (left->isInterfaceBlock() || right->isInterfaceBlock()) - { - error(loc, "sequence operator is not allowed for interface blocks", ","); - } TIntermBinary *commaNode = TIntermBinary::CreateComma(left, right, mShaderVersion); markStaticReadIfSymbol(left); @@ -7372,8 +7345,8 @@ TIntermTyped *TParseContext::addMethod(TFunctionLookup *fnCall, const TSourceLoc return CreateZeroNode(TType(EbtInt, EbpUndefined, EvqConst)); } -TIntermTyped *TParseContext::addNonConstructorFunctionCallImpl(TFunctionLookup *fnCall, - const TSourceLoc &loc) +TIntermTyped *TParseContext::addNonConstructorFunctionCall(TFunctionLookup *fnCall, + const TSourceLoc &loc) { // First check whether the function has been hidden by a variable name or struct typename by // using the symbol looked up in the lexical phase. If the function is not hidden, look for one @@ -7435,7 +7408,10 @@ TIntermTyped *TParseContext::addNonConstructorFunctionCallImpl(TFunctionLookup * { // Treat it like a built-in unary operator. TIntermNode *unaryParamNode = fnCall->arguments().front(); - return createUnaryMath(op, unaryParamNode->getAsTyped(), loc, fnCandidate); + TIntermTyped *callNode = + createUnaryMath(op, unaryParamNode->getAsTyped(), loc, fnCandidate); + ASSERT(callNode != nullptr); + return callNode; } TIntermAggregate *callNode = @@ -7460,17 +7436,7 @@ TIntermTyped *TParseContext::addNonConstructorFunctionCallImpl(TFunctionLookup * error(loc, "no matching overloaded function found", fnCall->name()); } } - return nullptr; -} -TIntermTyped *TParseContext::addNonConstructorFunctionCall(TFunctionLookup *fnCall, - const TSourceLoc &loc) -{ - TIntermTyped *result = addNonConstructorFunctionCallImpl(fnCall, loc); - if (result != nullptr) - { - return result; - } // Error message was already written. Put on an unused node for error recovery. return CreateZeroNode(TType(EbtFloat, EbpMedium, EvqConst)); } diff --git a/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.h b/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.h index e004ee24f0..666f5e3851 100644 --- a/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.h +++ b/icecat/gfx/angle/checkout/src/compiler/translator/ParseContext.h @@ -129,7 +129,6 @@ class TParseContext : angle::NonCopyable // Check functions - the ones that return bool return false if an error was generated. - void checkIsValidExpressionStatement(const TSourceLoc &line, TIntermTyped *expr); bool checkIsNotReserved(const TSourceLoc &line, const ImmutableString &identifier); void checkPrecisionSpecified(const TSourceLoc &line, TPrecision precision, TBasicType type); bool checkCanBeLValue(const TSourceLoc &line, const char *op, TIntermTyped *node); @@ -539,7 +538,7 @@ class TParseContext : angle::NonCopyable int checkIndexLessThan(bool outOfRangeIndexIsError, const TSourceLoc &location, int index, - unsigned int arraySize, + int arraySize, const char *reason); bool declareVariable(const TSourceLoc &line, @@ -652,7 +651,6 @@ class TParseContext : angle::NonCopyable TIntermTyped *addMethod(TFunctionLookup *fnCall, const TSourceLoc &loc); TIntermTyped *addConstructor(TFunctionLookup *fnCall, const TSourceLoc &line); - TIntermTyped *addNonConstructorFunctionCallImpl(TFunctionLookup *fnCall, const TSourceLoc &loc); TIntermTyped *addNonConstructorFunctionCall(TFunctionLookup *fnCall, const TSourceLoc &loc); // Return either the original expression or the folded version of the expression in case the diff --git a/icecat/gfx/angle/checkout/src/compiler/translator/glslang_tab_autogen.cpp b/icecat/gfx/angle/checkout/src/compiler/translator/glslang_tab_autogen.cpp index 7fb69bcf26..233b571b79 100644 --- a/icecat/gfx/angle/checkout/src/compiler/translator/glslang_tab_autogen.cpp +++ b/icecat/gfx/angle/checkout/src/compiler/translator/glslang_tab_autogen.cpp @@ -862,9 +862,9 @@ static const yytype_int16 yyrline[] = { 1330, 1333, 1336, 1339, 1342, 1350, 1358, 1366, 1374, 1382, 1390, 1400, 1410, 1420, 1423, 1430, 1437, 1444, 1447, 1455, 1455, 1458, 1458, 1464, 1467, 1473, 1476, 1483, 1487, 1493, 1496, 1502, 1506, 1510, 1511, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1527, 1531, 1531, 1531, 1538, 1539, - 1543, 1543, 1544, 1544, 1549, 1553, 1560, 1564, 1571, 1572, 1579, 1585, 1589, 1598, 1598, 1605, - 1608, 1614, 1618, 1624, 1624, 1629, 1629, 1633, 1633, 1641, 1644, 1650, 1653, 1659, 1663, 1670, - 1673, 1676, 1679, 1682, 1690, 1696, 1702, 1705, 1711, 1711}; + 1543, 1543, 1544, 1544, 1549, 1553, 1560, 1564, 1571, 1572, 1576, 1582, 1586, 1595, 1595, 1602, + 1605, 1611, 1615, 1621, 1621, 1626, 1626, 1630, 1630, 1638, 1641, 1647, 1650, 1656, 1660, 1667, + 1670, 1673, 1676, 1679, 1687, 1693, 1699, 1702, 1708, 1708}; #endif /** Accessing symbol of state STATE. */ @@ -4483,7 +4483,6 @@ yyreduce: case 297: /* expression_statement: expression SEMICOLON */ { - context->checkIsValidExpressionStatement((yyloc), (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermTypedNode); } break; diff --git a/icecat/gfx/angle/checkout/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.cpp b/icecat/gfx/angle/checkout/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.cpp index eba3193978..8790c4f5f2 100644 --- a/icecat/gfx/angle/checkout/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.cpp +++ b/icecat/gfx/angle/checkout/src/compiler/translator/tree_ops/d3d/AddDefaultReturnStatements.cpp @@ -29,10 +29,6 @@ bool NeedsReturnStatement(TIntermFunctionDefinition *node, TType *returnType) } TIntermBlock *bodyNode = node->getBody(); - if (bodyNode->getSequence()->empty()) - { - return true; - } TIntermBranch *returnNode = bodyNode->getSequence()->back()->getAsBranchNode(); if (returnNode != nullptr && returnNode->getFlowOp() == EOpReturn) { diff --git a/icecat/gfx/angle/checkout/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/icecat/gfx/angle/checkout/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp index 859c4477ac..fdd264e92b 100644 --- a/icecat/gfx/angle/checkout/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp +++ b/icecat/gfx/angle/checkout/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp @@ -2064,14 +2064,8 @@ angle::Result Renderer11::drawLineLoop(const gl::Context *context, GetLineLoopIndices(indices, type, static_cast(count), glState.isPrimitiveRestartEnabled(), &mScratchIndexDataBuffer); - - uint64_t spaceNeeded64 = sizeof(GLuint) * mScratchIndexDataBuffer.size(); - ANGLE_CHECK(GetImplAs(context), spaceNeeded64 <= std::numeric_limits::max(), - "Failed to create a 32-bit looping index buffer for " - "a GL_LINE_LOOP of <32-bit element type; too many indices required.", - GL_OUT_OF_MEMORY); - int spaceNeeded = static_cast(spaceNeeded64); - + unsigned int spaceNeeded = + static_cast(sizeof(GLuint) * mScratchIndexDataBuffer.size()); ANGLE_TRY( mLineLoopIB->reserveBufferSpace(context, spaceNeeded, gl::DrawElementsType::UnsignedInt)); @@ -2152,12 +2146,8 @@ angle::Result Renderer11::drawTriangleFan(const gl::Context *context, GetTriFanIndices(indexPointer, type, count, glState.isPrimitiveRestartEnabled(), &mScratchIndexDataBuffer); - uint64_t spaceNeeded64 = mScratchIndexDataBuffer.size() * sizeof(unsigned int); - ANGLE_CHECK(GetImplAs(context), spaceNeeded64 <= std::numeric_limits::max(), - "Failed to create a 32-bit looping index buffer for " - "a GL_TRIANGLE_FAN of <32-bit element type; too many indices required.", - GL_OUT_OF_MEMORY); - int spaceNeeded = static_cast(spaceNeeded64); + const unsigned int spaceNeeded = + static_cast(mScratchIndexDataBuffer.size() * sizeof(unsigned int)); ANGLE_TRY(mTriangleFanIB->reserveBufferSpace(context, spaceNeeded, gl::DrawElementsType::UnsignedInt)); diff --git a/icecat/gfx/angle/cherry_picks.txt b/icecat/gfx/angle/cherry_picks.txt index 20357c8edf..d9e07f3e4c 100644 --- a/icecat/gfx/angle/cherry_picks.txt +++ b/icecat/gfx/angle/cherry_picks.txt @@ -1,10 +1,4 @@ -commit b0098a1ebdb0400b515ff7a662685bda111e9e87 -Author: Emilio Cobos Álvarez -Date: Thu Apr 9 15:03:30 2026 +0200 - - Add a missing change to 7918168436578718b234bfd56da152e34a85af1d that is in Gecko. - -commit 442302a3b7ae7cca7f85524e6bb3d774a10b6fbc +commit 419cd2c3213b594f8e2488bf48034fed20ace81d Author: Shahbaz Youssefi Date: Mon Mar 27 13:05:36 2023 -0400 @@ -21,198 +15,6 @@ Date: Mon Mar 27 13:05:36 2023 -0400 Reviewed-by: Kenneth Russell Commit-Queue: Shahbaz Youssefi -commit 4f5c3dbc01f70efbaaed41743893ed2c8a7653cd -Author: Emilio Cobos Álvarez -Date: Thu Apr 9 13:40:10 2026 +0200 - - Add missing codegen from #27. - -commit be5a7593658365659dfc6384a95c44406e4e5d9e -Author: Kimmo Kinnunen -Date: Thu Oct 24 11:46:54 2024 +0300 - - Disallow discarded uniform block references - - Uniform block instances cannot be used by themselves, as there - is no way to refer to their type. Disallow the only typeless - access pattern, discarding via expression statement: - - uniform MyBlock { int x; } b; - void main() { - b; - 0, b; - } - - Explained as disallowed in newer GLSL 300: - https://github.com/KhronosGroup/WebGL/issues/3644 - - The comma expression form would ASSERT in CollectVariables. - - Bug: angleproject:42267026 - Change-Id: I6c8b835482fd551bd97576c1bd24f005874da6af - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961498 - Reviewed-by: Alexey Knyazev - Reviewed-by: Geoff Lang - Reviewed-by: Shahbaz Youssefi - Commit-Queue: Kimmo Kinnunen - Auto-Submit: Kimmo Kinnunen - -commit 329044148ea14623910a1b33a4f1fd81445fd21e -Author: Scott Marcy -Date: Thu May 30 11:36:58 2024 -0600 - - Fix stack overflow crash by traversing a too-deep AST - - This simply moves the check for a too-deep AST before the first attempts - to traverse the AST (i.e., `validateAST()`). - - Bug: angleproject:343505104 - Change-Id: Iafb658a30f74a666beab8c69745ca53d17d70dd3 - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5585186 - Reviewed-by: Shahbaz Youssefi - Reviewed-by: Kimmo Kinnunen - Commit-Queue: Kimmo Kinnunen - Auto-Submit: Scott M - -commit 28669be7c0129fa7ed117f730484db302a39bcb2 -Author: Nisha Jain -Date: Thu Mar 7 14:19:58 2024 +0200 - - Avoid asserts when const folding binary ops on void variables - - Fix asserts for example with / and % during constant folding when - the operands might be voids. - - Bug: angleproject:8592 - Change-Id: I22275642dbcdf9066940d3a94114e8daa5cbbe41 - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5416376 - Auto-Submit: Kimmo Kinnunen - Commit-Queue: Geoff Lang - Reviewed-by: Geoff Lang - Reviewed-by: Kimmo Kinnunen - -commit ebaab5cd66b66183175f8c5d5f72210afcba38ca -Author: Kimmo Kinnunen -Date: Fri Mar 8 14:26:56 2024 +0200 - - Check array index against unsigned array size - - Fix an assert during GLSL parsing when a very - large array (~1U) type is indexed. - - Bug: angleproject:8596 - Change-Id: I219ac5c8f3fa58aa4c7d679eade6f32b59eb1103 - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5352653 - Auto-Submit: Kimmo Kinnunen - Reviewed-by: Shahbaz Youssefi - Commit-Queue: Kimmo Kinnunen - -commit 5a3f53d8bff0709e94e9b5c2a97684c9a012f6f6 -Author: Erica Li -Date: Fri Mar 8 12:40:09 2024 +0200 - - Avoid assert with multiple memory qualifiers - - Add missing qualifier strings. - - Bug: angleproject:8593 - Change-Id: I484571c33effd85d52712b4876f6a3a5c73d8fde - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5352255 - Reviewed-by: Shahbaz Youssefi - Auto-Submit: Kimmo Kinnunen - Commit-Queue: Shahbaz Youssefi - -commit f95d411e7d0c5cfb4b0dfef2ecadb952cc92b06a -Author: Kimmo Kinnunen -Date: Tue Mar 5 21:42:32 2024 +0200 - - Ensure unary math op parse to an node on error - - Return the error node for ops like radians(). - The math op parse can fail in multiple ways. - - Fixed: angleproject:8583 - Change-Id: Ief7e150dffefe711f567d95c62d1023fc7fa1c91 - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5344716 - Reviewed-by: Kenneth Russell - Auto-Submit: Kimmo Kinnunen - Commit-Queue: Kenneth Russell - -commit 386e3783a143a5268df86bdf93cd10892419f395 -Author: Kimmo Kinnunen -Date: Mon Mar 4 14:43:10 2024 +0200 - - Fix layout(index=) parse assert on es 100 shaders - - Remove invalid assert about layout index qualifier being present only if - EXT_blend_func_extended is present. - - The layout qualifier gets parsed to support EXT_shader_framebuffer_fetch - in ES 100 shaders to support - "layout(incoherent) mediump vec4 gl_FragData[gl_MaxDrawBuffers]" - - Fixed: angleproject:8570 - Change-Id: I0d0d99bcc882a0befd97c2510dec4a8ccf1690bd - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5340249 - Reviewed-by: Kenneth Russell - Commit-Queue: Kenneth Russell - Auto-Submit: Kimmo Kinnunen - -commit abe9de5edc89a3db4188c8ddf52e61f6820ecebd -Author: Kimmo Kinnunen -Date: Fri Feb 16 22:28:18 2024 +0200 - - Fix ASSERT in non-global precise var decls - - Precise was treated as invariant. Precise can be - declared for non-global variables. - - Bug: angleproject:8550 - Change-Id: Ia0d00d67d0d1504b78294ee2256785fe3da3e399 - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5300976 - Commit-Queue: Shahbaz Youssefi - Auto-Submit: Kimmo Kinnunen - Reviewed-by: Shahbaz Youssefi - Reviewed-by: Kenneth Russell - -commit 718164d445a82bd24da61ff670deb5f1702fbfc3 -Author: Kimmo Kinnunen -Date: Tue Feb 13 17:54:12 2024 +0200 - - Uniform block reference in constuctors crash - - Passing uniform block instance name to a built-in constructor would - cause type confusion. Block this by failing to parse. - - Bug: angleproject:8533 - Change-Id: I5a676b41e2f3d766ece4ed472debc1c874753293 - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5290897 - Commit-Queue: Shahbaz Youssefi - Reviewed-by: Shahbaz Youssefi - Commit-Queue: Kimmo Kinnunen - Auto-Submit: Kimmo Kinnunen - -commit a7ce496eaa3ac8f108190ca544e00024edead840 -Author: Kimmo Kinnunen -Date: Wed Feb 7 14:25:32 2024 +0200 - - Fix an assert on multidim array constructors - - Fail early instead of asserting when trying to parse a - multidimensional array constructor call with unsized - argument array argument. - - int A[]; - int B[int[][](A)]; - - Bug: angleproject:8519 - Change-Id: Iee2c70318eebd2def57ffab8db709d1076692922 - Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5272434 - Reviewed-by: Shahbaz Youssefi - Auto-Submit: Kimmo Kinnunen - Commit-Queue: Kimmo Kinnunen - Commit-Queue: Shahbaz Youssefi - commit 7918168436578718b234bfd56da152e34a85af1d Author: Kelsey Gilbert Date: Tue Jun 4 15:37:29 2024 -0700 diff --git a/icecat/gfx/cairo/cairo/src/cairo-cff-subset.c b/icecat/gfx/cairo/cairo/src/cairo-cff-subset.c index b02b7c1aa0..fd74d2ddc0 100644 --- a/icecat/gfx/cairo/cairo/src/cairo-cff-subset.c +++ b/icecat/gfx/cairo/cairo/src/cairo-cff-subset.c @@ -930,8 +930,6 @@ cairo_cff_font_read_private_dict (cairo_cff_font_t *font, if (operand) { decode_integer (operand, &offset); p = ptr + offset; - if (unlikely (p < font->data || p > font->data_end)) - return CAIRO_INT_STATUS_UNSUPPORTED; status = cff_index_read (local_sub_index, &p, font->data_end); if (unlikely (status)) return status; @@ -1868,10 +1866,6 @@ cairo_cff_font_subset_fontdict (cairo_cff_font_t *font) } fd = font->fdselect[gid]; - if (fd < 0 || (unsigned int) fd >= font->num_fontdicts) { - free (reverse_map); - return CAIRO_INT_STATUS_UNSUPPORTED; - } if (reverse_map[fd] < 0) { font->fd_subset_map[font->num_subset_fontdicts] = fd; reverse_map[fd] = font->num_subset_fontdicts++; diff --git a/icecat/gfx/gl/GLBlitHelper.cpp b/icecat/gfx/gl/GLBlitHelper.cpp index bb490a3dee..c08fe2cb20 100644 --- a/icecat/gfx/gl/GLBlitHelper.cpp +++ b/icecat/gfx/gl/GLBlitHelper.cpp @@ -359,7 +359,7 @@ ScopedSaveMultiTex::ScopedSaveMultiTex(GLContext* const gl, mTexUnits(texUnits), mTexTarget(texTarget), mOldTexUnit(mGL.GetIntAs(LOCAL_GL_ACTIVE_TEXTURE)) { - MOZ_RELEASE_ASSERT(texUnits >= 1 && texUnits <= std::size(mOldTex)); + MOZ_RELEASE_ASSERT(texUnits >= 1); GLenum texBinding; switch (mTexTarget) { @@ -944,9 +944,6 @@ bool GLBlitHelper::BlitSdToFramebuffer(const layers::SurfaceDescriptor& asd, case layers::SurfaceDescriptor::TSurfaceDescriptorDMABuf: { const auto& sd = asd.get_SurfaceDescriptorDMABuf(); RefPtr surface = DMABufSurface::CreateDMABufSurface(sd); - if (!surface) { - return false; - } return Blit(surface, destSize, destOrigin); } #endif @@ -1547,12 +1544,6 @@ bool GLBlitHelper::Blit(DMABufSurface* surface, const gfx::IntSize& destSize, const DrawBlitProg::YUVArgs* pYuvArgs = nullptr; const auto planes = surface->GetTextureCount(); - // The shaders used below currently only support 1-3 planes. - if (planes < 1 || planes > 3) { - gfxCriticalError() << "Unexpected DMABuf planes count: " << planes; - return false; - } - // - // Ensure textures for all planes have been created. diff --git a/icecat/gfx/gl/GLContextEGL.h b/icecat/gfx/gl/GLContextEGL.h index 1e65c2b437..39b0036294 100644 --- a/icecat/gfx/gl/GLContextEGL.h +++ b/icecat/gfx/gl/GLContextEGL.h @@ -61,7 +61,7 @@ class GLContextEGL final : public GLContext { } static GLContextEGL* Cast(GLContext* gl) { - MOZ_RELEASE_ASSERT(gl->GetContextType() == GLContextType::EGL); + MOZ_ASSERT(gl->GetContextType() == GLContextType::EGL); return static_cast(gl); } diff --git a/icecat/gfx/gl/GLLibraryEGL.cpp b/icecat/gfx/gl/GLLibraryEGL.cpp index f0fda22ddd..01a24206a6 100644 --- a/icecat/gfx/gl/GLLibraryEGL.cpp +++ b/icecat/gfx/gl/GLLibraryEGL.cpp @@ -810,9 +810,7 @@ std::shared_ptr EglDisplay::Create( const auto ret = std::make_shared(PrivateUseOnly{}, lib, display, isWarp); - // Insert if there is no existing display entry, or assign if there is an - // expired weak_ptr that failed to lock above and was awaiting removal. - lib.mActiveDisplays.insert_or_assign(display, ret); + lib.mActiveDisplays.insert({display, ret}); return ret; } @@ -860,13 +858,6 @@ EglDisplay::EglDisplay(const PrivateUseOnly&, GLLibraryEGL& lib, EglDisplay::~EglDisplay() { StaticMutexAutoLock lock(GLLibraryEGL::sMutex); - // EglDisplay is being destructed, so its weak_ptr should be expired. If there - // is an entry that is still live, it means a new EGLDisplay was subsequently - // created that needs to use this display, so avoid terminating it. - const auto itr = mLib->mActiveDisplays.find(mDisplay); - if (itr != mLib->mActiveDisplays.end() && !itr->second.expired()) { - return; - } fTerminate(); mLib->mActiveDisplays.erase(mDisplay); } diff --git a/icecat/gfx/harfbuzz/src/hb-aat-layout-morx-table.hh b/icecat/gfx/harfbuzz/src/hb-aat-layout-morx-table.hh index 7b24b149c2..663e47991d 100644 --- a/icecat/gfx/harfbuzz/src/hb-aat-layout-morx-table.hh +++ b/icecat/gfx/harfbuzz/src/hb-aat-layout-morx-table.hh @@ -987,16 +987,9 @@ struct hb_aat_layout_chain_accelerator_t { unsigned count = chain.get_subtable_count (); - unsigned product; - if (unlikely (hb_unsigned_mul_overflows (count, - sizeof (hb_accelerate_subtables_context_t::hb_applicable_t), &product))) - return nullptr; - - unsigned size; - if (unlikely (hb_unsigned_add_overflows (sizeof (hb_aat_layout_chain_accelerator_t) - - HB_VAR_ARRAY * sizeof (hb_accelerate_subtables_context_t::hb_applicable_t), product, &size))) { - return nullptr; - } + unsigned size = sizeof (hb_aat_layout_chain_accelerator_t) - + HB_VAR_ARRAY * sizeof (hb_accelerate_subtables_context_t::hb_applicable_t) + + count * sizeof (hb_accelerate_subtables_context_t::hb_applicable_t); /* The following is a calloc because when we are collecting subtables, * some of them might be invalid and hence not collect; as a result, diff --git a/icecat/gfx/harfbuzz/src/hb-algs.hh b/icecat/gfx/harfbuzz/src/hb-algs.hh index 812839cdba..0252fa7dfe 100644 --- a/icecat/gfx/harfbuzz/src/hb-algs.hh +++ b/icecat/gfx/harfbuzz/src/hb-algs.hh @@ -1042,21 +1042,6 @@ hb_unsigned_mul_overflows (unsigned int count, unsigned int size, unsigned *resu return (size > 0) && (count >= ((unsigned int) -1) / size); } -static inline bool -hb_unsigned_add_overflows (unsigned int a, unsigned int b, unsigned *result = nullptr) -{ -#if hb_has_builtin(__builtin_add_overflow) - unsigned stack_result; - if (!result) - result = &stack_result; - return __builtin_add_overflow (a, b, result); -#endif - - if (result) - *result = a + b; - return b > (unsigned int) -1 - a; -} - /* * Sort and search. diff --git a/icecat/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc b/icecat/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc index 384462bc5f..d25a3f6f48 100644 --- a/icecat/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc +++ b/icecat/gfx/harfbuzz/src/hb-ot-shaper-arabic.cc @@ -561,29 +561,20 @@ apply_stch (const hb_ot_shape_plan_t *plan HB_UNUSED, DEBUG_MSG (ARABIC, nullptr, "fixed tiles: count=%d width=%" PRId32, n_fixed, w_fixed); DEBUG_MSG (ARABIC, nullptr, "repeating tiles: count=%d width=%" PRId32, n_repeating, w_repeating); - static constexpr unsigned STCH_MAX_GLYPHS = 256; - /* Number of additional times to repeat each repeating tile. */ - unsigned int n_copies = 0; + int n_copies = 0; - int64_t w_remaining_signed = (int64_t) w_total - w_fixed; - int64_t w_repeating_signed = w_repeating; - if (sign < 0) - { - w_remaining_signed = -w_remaining_signed; - w_repeating_signed = -w_repeating_signed; - } - hb_position_t w_remaining = (hb_position_t) (w_total - w_fixed); - if (w_remaining_signed > w_repeating_signed && w_repeating_signed > 0) - n_copies = w_remaining_signed / w_repeating_signed - 1; + hb_position_t w_remaining = w_total - w_fixed; + if (sign * w_remaining > sign * w_repeating && sign * w_repeating > 0) + n_copies = (sign * w_remaining) / (sign * w_repeating) - 1; /* See if we can improve the fit by adding an extra repeat and squeezing them together a bit. */ hb_position_t extra_repeat_overlap = 0; - int64_t shortfall = w_remaining_signed - w_repeating_signed * (n_copies + 1); + hb_position_t shortfall = sign * w_remaining - sign * w_repeating * (n_copies + 1); if (shortfall > 0 && n_repeating > 0) { ++n_copies; - int64_t excess = (n_copies + 1) * w_repeating_signed - w_remaining_signed; + hb_position_t excess = (n_copies + 1) * sign * w_repeating - sign * w_remaining; if (excess > 0) { extra_repeat_overlap = excess / (n_copies * n_repeating); @@ -591,22 +582,10 @@ apply_stch (const hb_ot_shape_plan_t *plan HB_UNUSED, } } - unsigned int max_copies = 0; - if (n_repeating > 0) - { - unsigned int base_glyphs = n_fixed + n_repeating; - if (base_glyphs < STCH_MAX_GLYPHS) - max_copies = (STCH_MAX_GLYPHS - base_glyphs) / n_repeating; - } - n_copies = hb_min (n_copies, max_copies); - if (step == MEASURE) { - unsigned int added_glyphs = 0; - if (unlikely (hb_unsigned_mul_overflows (n_copies, n_repeating, &added_glyphs) || - hb_unsigned_add_overflows (extra_glyphs_needed, added_glyphs, &extra_glyphs_needed))) - break; - DEBUG_MSG (ARABIC, nullptr, "will add extra %u copies of repeating tiles", n_copies); + extra_glyphs_needed += n_copies * n_repeating; + DEBUG_MSG (ARABIC, nullptr, "will add extra %d copies of repeating tiles", n_copies); } else { @@ -650,9 +629,7 @@ apply_stch (const hb_ot_shape_plan_t *plan HB_UNUSED, if (step == MEASURE) { - unsigned int total_glyphs = 0; - if (unlikely (hb_unsigned_add_overflows (count, extra_glyphs_needed, &total_glyphs) || - !buffer->ensure (total_glyphs))) + if (unlikely (!buffer->ensure (count + extra_glyphs_needed))) break; } else diff --git a/icecat/gfx/harfbuzz/src/moz.build b/icecat/gfx/harfbuzz/src/moz.build index 8ccb72ce8b..ba54833b4f 100644 --- a/icecat/gfx/harfbuzz/src/moz.build +++ b/icecat/gfx/harfbuzz/src/moz.build @@ -131,13 +131,12 @@ DEFINES['HB_NO_FALLBACK_SHAPE'] = True DEFINES['HB_NO_UCD'] = True DEFINES['HB_NO_UNICODE_FUNCS'] = True -# We want to use harfbuzz's mmap support for file access, +# On Android, we want to use harfbuzz's mmap support for file access, # so we need to set the appropriate configuration flags as we're not # running harfbuzz's own configure script. -if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'windows': +if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': DEFINES['HAVE_MMAP'] = 1 DEFINES['HAVE_SYS_MMAN_H'] = 1 - DEFINES['HAVE_UNISTD_H'] = 1 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': DEFINES['UNICODE'] = True diff --git a/icecat/gfx/ipc/CanvasShutdownManager.cpp b/icecat/gfx/ipc/CanvasShutdownManager.cpp index f8466ecfdd..2c3167cd4c 100644 --- a/icecat/gfx/ipc/CanvasShutdownManager.cpp +++ b/icecat/gfx/ipc/CanvasShutdownManager.cpp @@ -31,21 +31,10 @@ CanvasShutdownManager::CanvasShutdownManager(StrongWorkerRef* aWorkerRef) CanvasShutdownManager::CanvasShutdownManager() = default; CanvasShutdownManager::~CanvasShutdownManager() = default; -std::vector> -CanvasShutdownManager::RefActiveCanvas() const { - std::vector> activeCanvas; - activeCanvas.reserve(mActiveCanvas.size()); - for (const auto& canvas : mActiveCanvas) { - activeCanvas.emplace_back(canvas); - } - return activeCanvas; -} - void CanvasShutdownManager::Destroy() { - auto activeCanvas = RefActiveCanvas(); - mActiveCanvas.clear(); - for (const auto& canvas : activeCanvas) { - canvas->OnShutdown(); + std::set activeCanvas = std::move(mActiveCanvas); + for (const auto& i : activeCanvas) { + i->OnShutdown(); } CanvasManagerChild::Shutdown(); @@ -132,13 +121,17 @@ void CanvasShutdownManager::RemoveShutdownObserver( } void CanvasShutdownManager::OnRemoteCanvasLost() { - for (const auto& canvas : RefActiveCanvas()) { + // Note that the canvas cannot do anything that mutates our state. It will + // dispatch for anything that risks re-entrancy. + for (const auto& canvas : mActiveCanvas) { canvas->OnRemoteCanvasLost(); } } void CanvasShutdownManager::OnRemoteCanvasRestored() { - for (const auto& canvas : RefActiveCanvas()) { + // Note that the canvas cannot do anything that mutates our state. It will + // dispatch for anything that risks re-entrancy. + for (const auto& canvas : mActiveCanvas) { canvas->OnRemoteCanvasRestored(); } } @@ -149,7 +142,7 @@ void CanvasShutdownManager::OnRemoteCanvasReset( return; } - for (const auto& canvas : RefActiveCanvas()) { + for (const auto& canvas : mActiveCanvas) { auto* bufferProvider = canvas->GetBufferProvider(); if (!bufferProvider) { continue; diff --git a/icecat/gfx/ipc/CanvasShutdownManager.h b/icecat/gfx/ipc/CanvasShutdownManager.h index 287bf07bcb..58da18b319 100644 --- a/icecat/gfx/ipc/CanvasShutdownManager.h +++ b/icecat/gfx/ipc/CanvasShutdownManager.h @@ -11,7 +11,6 @@ #include "mozilla/ThreadLocal.h" #include "mozilla/layers/LayersTypes.h" #include -#include namespace mozilla { namespace dom { @@ -45,8 +44,6 @@ class CanvasShutdownManager final { ~CanvasShutdownManager(); void Destroy(); - std::vector> RefActiveCanvas() const; - static void MaybeRestoreRemoteCanvas(); RefPtr mWorkerRef; diff --git a/icecat/gfx/ipc/GPUChild.cpp b/icecat/gfx/ipc/GPUChild.cpp index 323eb8f66f..42f6946bf1 100644 --- a/icecat/gfx/ipc/GPUChild.cpp +++ b/icecat/gfx/ipc/GPUChild.cpp @@ -177,8 +177,7 @@ mozilla::ipc::IPCResult GPUChild::RecvGraphicsError(const nsCString& aError) { mozilla::ipc::IPCResult GPUChild::RecvCreateVRProcess() { // Make sure create VR process at the main process MOZ_ASSERT(XRE_IsParentProcess()); - if (StaticPrefs::dom_vr_process_enabled_AtStartup() && - StaticPrefs::dom_vr_enabled()) { + if (StaticPrefs::dom_vr_process_enabled_AtStartup()) { VRProcessManager::Initialize(); VRProcessManager* vr = VRProcessManager::Get(); MOZ_ASSERT(vr, "VRProcessManager must be initialized first."); @@ -194,20 +193,19 @@ mozilla::ipc::IPCResult GPUChild::RecvCreateVRProcess() { mozilla::ipc::IPCResult GPUChild::RecvShutdownVRProcess() { // Make sure stopping VR process at the main process MOZ_ASSERT(XRE_IsParentProcess()); - if (StaticPrefs::dom_vr_process_enabled_AtStartup() && - StaticPrefs::dom_vr_enabled()) { + if (StaticPrefs::dom_vr_process_enabled_AtStartup()) { VRProcessManager::Shutdown(); } return IPC_OK(); } -mozilla::ipc::IPCResult GPUChild::RecvFlushActiveCheckerboardReportsDone() { +mozilla::ipc::IPCResult GPUChild::RecvNotifyUiObservers( + const nsCString& aTopic) { nsCOMPtr obsSvc = mozilla::services::GetObserverService(); MOZ_ASSERT(obsSvc); if (obsSvc) { - obsSvc->NotifyObservers(nullptr, "APZ:FlushActiveCheckerboard:Done", - nullptr); + obsSvc->NotifyObservers(nullptr, aTopic.get(), nullptr); } return IPC_OK(); } @@ -290,27 +288,25 @@ bool GPUChild::SendRequestMemoryReport(const uint32_t& aGeneration, const Maybe& aDMDFile) { mMemoryReportRequest = MakeUnique(aGeneration); - PGPUChild::SendRequestMemoryReport(aGeneration, aAnonymize, - aMinimizeMemoryUsage, aDMDFile) - ->Then( - GetCurrentSerialEventTarget(), __func__, - [](uint32_t aGeneration2) { - if (GPUProcessManager* gpm = GPUProcessManager::Get()) { - if (GPUChild* child = gpm->GetGPUChild()) { - if (child->mMemoryReportRequest) { - child->mMemoryReportRequest->Finish(aGeneration2); - child->mMemoryReportRequest = nullptr; - } - } + PGPUChild::SendRequestMemoryReport( + aGeneration, aAnonymize, aMinimizeMemoryUsage, aDMDFile, + [&](const uint32_t& aGeneration2) { + if (GPUProcessManager* gpm = GPUProcessManager::Get()) { + if (GPUChild* child = gpm->GetGPUChild()) { + if (child->mMemoryReportRequest) { + child->mMemoryReportRequest->Finish(aGeneration2); + child->mMemoryReportRequest = nullptr; } - }, - [](mozilla::ipc::ResponseRejectReason) { - if (GPUProcessManager* gpm = GPUProcessManager::Get()) { - if (GPUChild* child = gpm->GetGPUChild()) { - child->mMemoryReportRequest = nullptr; - } - } - }); + } + } + }, + [&](mozilla::ipc::ResponseRejectReason) { + if (GPUProcessManager* gpm = GPUProcessManager::Get()) { + if (GPUChild* child = gpm->GetGPUChild()) { + child->mMemoryReportRequest = nullptr; + } + } + }); return true; } diff --git a/icecat/gfx/ipc/GPUChild.h b/icecat/gfx/ipc/GPUChild.h index ada6778a1a..7ea3c9a177 100644 --- a/icecat/gfx/ipc/GPUChild.h +++ b/icecat/gfx/ipc/GPUChild.h @@ -79,7 +79,7 @@ class GPUChild final : public ipc::CrashReporterHelper, void ActorDestroy(ActorDestroyReason aWhy) override; mozilla::ipc::IPCResult RecvGraphicsError(const nsCString& aError); - mozilla::ipc::IPCResult RecvFlushActiveCheckerboardReportsDone(); + mozilla::ipc::IPCResult RecvNotifyUiObservers(const nsCString& aTopic); mozilla::ipc::IPCResult RecvNotifyDeviceReset( const GPUDeviceData& aData, const DeviceResetReason& aReason, const DeviceResetDetectPlace& aPlace); diff --git a/icecat/gfx/ipc/GPUParent.cpp b/icecat/gfx/ipc/GPUParent.cpp index dba9bcc5d3..69665aa1b5 100644 --- a/icecat/gfx/ipc/GPUParent.cpp +++ b/icecat/gfx/ipc/GPUParent.cpp @@ -655,11 +655,12 @@ mozilla::ipc::IPCResult GPUParent::RecvRemoveLayerTreeIdMapping( return IPC_OK(); } -mozilla::ipc::IPCResult GPUParent::RecvFlushActiveCheckerboardReports() { +mozilla::ipc::IPCResult GPUParent::RecvNotifyGpuObservers( + const nsCString& aTopic) { nsCOMPtr obsSvc = mozilla::services::GetObserverService(); MOZ_ASSERT(obsSvc); if (obsSvc) { - obsSvc->NotifyObservers(nullptr, "APZ:FlushActiveCheckerboard", nullptr); + obsSvc->NotifyObservers(nullptr, aTopic.get(), nullptr); } return IPC_OK(); } @@ -696,8 +697,7 @@ mozilla::ipc::IPCResult GPUParent::RecvRequestMemoryReport( } mozilla::ipc::IPCResult GPUParent::RecvShutdownVR() { - if (StaticPrefs::dom_vr_process_enabled_AtStartup() && - StaticPrefs::dom_vr_enabled()) { + if (StaticPrefs::dom_vr_process_enabled_AtStartup()) { VRGPUChild::Shutdown(); } return IPC_OK(); diff --git a/icecat/gfx/ipc/GPUParent.h b/icecat/gfx/ipc/GPUParent.h index 4631ac42dd..32b236538f 100644 --- a/icecat/gfx/ipc/GPUParent.h +++ b/icecat/gfx/ipc/GPUParent.h @@ -95,7 +95,7 @@ class GPUParent final : public PGPUParent { const LayerTreeIdMapping& aMapping); mozilla::ipc::IPCResult RecvRemoveLayerTreeIdMapping( const LayerTreeIdMapping& aMapping); - mozilla::ipc::IPCResult RecvFlushActiveCheckerboardReports(); + mozilla::ipc::IPCResult RecvNotifyGpuObservers(const nsCString& aTopic); mozilla::ipc::IPCResult RecvRequestMemoryReport( const uint32_t& generation, const bool& anonymize, const bool& minimizeMemoryUsage, diff --git a/icecat/gfx/ipc/GPUProcessManager.cpp b/icecat/gfx/ipc/GPUProcessManager.cpp index 2daace292e..d8e1ba35dc 100644 --- a/icecat/gfx/ipc/GPUProcessManager.cpp +++ b/icecat/gfx/ipc/GPUProcessManager.cpp @@ -1640,11 +1640,12 @@ void GPUProcessManager::RemoveListener(GPUProcessListener* aListener) { mListeners.RemoveElement(aListener); } -bool GPUProcessManager::FlushActiveCheckerboardReports() { +bool GPUProcessManager::NotifyGpuObservers(const char* aTopic) { if (NS_FAILED(EnsureGPUReady())) { return false; } - mGPUChild->SendFlushActiveCheckerboardReports(); + nsCString topic(aTopic); + mGPUChild->SendNotifyGpuObservers(topic); return true; } diff --git a/icecat/gfx/ipc/GPUProcessManager.h b/icecat/gfx/ipc/GPUProcessManager.h index 1e78a484d4..9a780f959f 100644 --- a/icecat/gfx/ipc/GPUProcessManager.h +++ b/icecat/gfx/ipc/GPUProcessManager.h @@ -180,9 +180,9 @@ class GPUProcessManager final : public GPUProcessHost::Listener { void AddListener(GPUProcessListener* aListener); void RemoveListener(GPUProcessListener* aListener); - // Send a message to the GPU process to flush any active checkerboard reports. - // Returns true if the message was sent, false if not. - bool FlushActiveCheckerboardReports(); + // Send a message to the GPU process observer service to broadcast. Returns + // true if the message was sent, false if not. + bool NotifyGpuObservers(const char* aTopic); // Kills the GPU process. Used in normal operation to recover from an error, // as well as for tests and diagnostics. diff --git a/icecat/gfx/ipc/GfxMessageUtils.h b/icecat/gfx/ipc/GfxMessageUtils.h index 7f1eec67a2..484be9d680 100644 --- a/icecat/gfx/ipc/GfxMessageUtils.h +++ b/icecat/gfx/ipc/GfxMessageUtils.h @@ -19,7 +19,6 @@ #include "gfxTelemetry.h" #include "gfxTypes.h" #include "ipc/EnumSerializer.h" -#include "mozilla/EnumTypeTraits.h" #include "ipc/IPCMessageUtilsSpecializations.h" #include "mozilla/gfx/CrossProcessPaint.h" #include "mozilla/gfx/FileHandleWrapper.h" @@ -260,36 +259,6 @@ struct ParamTraits mozilla::gfx::ColorSpace::SRGB, mozilla::gfx::ColorSpace::Max> {}; -template -using GfxEnumSerializer = - ContiguousEnumSerializerInclusive::min, - mozilla::ContiguousEnumValues::max>; - -template <> -struct ParamTraits - : public GfxEnumSerializer {}; -template <> -struct ParamTraits - : public GfxEnumSerializer {}; -template <> -struct ParamTraits - : public GfxEnumSerializer {}; -template <> -struct ParamTraits - : public GfxEnumSerializer {}; -template <> -struct ParamTraits - : public GfxEnumSerializer {}; -template <> -struct ParamTraits - : public GfxEnumSerializer {}; -template <> -struct ParamTraits - : public GfxEnumSerializer {}; -template <> -struct ParamTraits - : public GfxEnumSerializer {}; - template <> struct ParamTraits : public ContiguousEnumSerializerInclusive< diff --git a/icecat/gfx/ipc/PGPU.ipdl b/icecat/gfx/ipc/PGPU.ipdl index 9ad46d2f9c..8f8a9b2e35 100644 --- a/icecat/gfx/ipc/PGPU.ipdl +++ b/icecat/gfx/ipc/PGPU.ipdl @@ -104,7 +104,9 @@ parent: // the GPU process. This blocks until one is available (i.e., Init has completed). async SimulateDeviceReset(); - async FlushActiveCheckerboardReports(); + // Have a message be broadcasted to the GPU process by the GPU process + // observer service. + async NotifyGpuObservers(nsCString aTopic); async RequestMemoryReport(uint32_t generation, bool anonymize, @@ -151,7 +153,9 @@ child: async CreateVRProcess(); async ShutdownVRProcess(); - async FlushActiveCheckerboardReportsDone(); + // Have a message be broadcasted to the UI process by the UI process + // observer service. + async NotifyUiObservers(nsCString aTopic); // Messages for reporting telemetry to the UI process. async AccumulateChildHistograms(HistogramAccumulation[] accumulations); diff --git a/icecat/gfx/layers/AnimationHelper.cpp b/icecat/gfx/layers/AnimationHelper.cpp index c3535a97b5..e30cf5764e 100644 --- a/icecat/gfx/layers/AnimationHelper.cpp +++ b/icecat/gfx/layers/AnimationHelper.cpp @@ -239,12 +239,8 @@ static AnimationHelper::SampleResult SampleAnimationForProperty( #endif } - size_t segmentSize = animation.mSegments.Length(); - if (segmentSize == 0) { - return AnimationHelper::SampleResult(); - } - uint32_t segmentIndex = 0; + size_t segmentSize = animation.mSegments.Length(); PropertyAnimation::SegmentData* segment = animation.mSegments.Elements(); while (segment->mEndPortion < computedTiming.mProgress.Value() && segmentIndex < segmentSize - 1) { diff --git a/icecat/gfx/layers/BufferTexture.cpp b/icecat/gfx/layers/BufferTexture.cpp index 35285d2ae5..e5d8e6ca41 100644 --- a/icecat/gfx/layers/BufferTexture.cpp +++ b/icecat/gfx/layers/BufferTexture.cpp @@ -84,7 +84,7 @@ class ShmemTextureData : public BufferTextureData { LayersBackend aLayersBackend, TextureFlags aFlags, TextureAllocationFlags aAllocFlags, - LayersIPCChannel* aAllocator); + IShmemAllocator* aAllocator); virtual TextureData* CreateSimilar( LayersIPCChannel* aAllocator, LayersBackend aLayersBackend, @@ -95,55 +95,25 @@ class ShmemTextureData : public BufferTextureData { virtual void Deallocate(LayersIPCChannel* aAllocator) override; - class ShmemHolder final { - public: - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(ShmemHolder) - - ShmemHolder(LayersIPCChannel* aAllocator, mozilla::ipc::Shmem aShmem) - : mAllocator(aAllocator), mShmem(std::move(aShmem)) {} - mozilla::ipc::Shmem& GetShmem() { return mShmem; } - void SetDeallocShmem() { mDeallocShmem = true; } - - const RefPtr mAllocator; - - protected: - ~ShmemHolder() { - if (mDeallocShmem) { - mAllocator->DeallocShmem(mShmem); - } - } - - mozilla::ipc::Shmem mShmem; - mozilla::Atomic mDeallocShmem{false}; - }; - ShmemTextureData(const BufferDescriptor& aDesc, - gfx::BackendType aMoz2DBackend, RefPtr& aShmemHolder) - : BufferTextureData(aDesc, aMoz2DBackend), mShmemHolder(aShmemHolder) { - MOZ_ASSERT(mShmemHolder); - MOZ_ASSERT(mShmemHolder->GetShmem().Size()); + gfx::BackendType aMoz2DBackend, mozilla::ipc::Shmem aShmem) + : BufferTextureData(aDesc, aMoz2DBackend), mShmem(aShmem) { + MOZ_ASSERT(mShmem.Size()); } - virtual uint8_t* GetBuffer() override { - return mShmemHolder->GetShmem().get(); - } + virtual uint8_t* GetBuffer() override { return mShmem.get(); } - virtual size_t GetBufferSize() override { - return mShmemHolder->GetShmem().Size(); - } - - virtual void OnBorrowDrawTarget(gfx::DrawTarget* aDrawTarget) override; + virtual size_t GetBufferSize() override { return mShmem.Size(); } protected: - const RefPtr mShmemHolder; - gfx::UserDataKey mShmemHolderKey = {0}; + mozilla::ipc::Shmem mShmem; }; BufferTextureData* BufferTextureData::Create( gfx::IntSize aSize, gfx::SurfaceFormat aFormat, gfx::BackendType aMoz2DBackend, LayersBackend aLayersBackend, TextureFlags aFlags, TextureAllocationFlags aAllocFlags, - LayersIPCChannel* aAllocator, bool aIsSameProcess) { + mozilla::ipc::IShmemAllocator* aAllocator, bool aIsSameProcess) { if (!aAllocator || aIsSameProcess) { return MemoryTextureData::Create(aSize, aFormat, aMoz2DBackend, aLayersBackend, aFlags, aAllocFlags, @@ -174,9 +144,7 @@ BufferTextureData* BufferTextureData::CreateInternal( return nullptr; } - RefPtr shmemHolder = - new ShmemTextureData::ShmemHolder(aAllocator, shm); - return new ShmemTextureData(aDesc, aMoz2DBackend, shmemHolder); + return new ShmemTextureData(aDesc, aMoz2DBackend, shm); } } @@ -188,8 +156,7 @@ BufferTextureData* BufferTextureData::CreateForYCbCr( gfx::ColorRange aColorRange, gfx::ChromaSubsampling aSubsampling, TextureFlags aTextureFlags) { uint32_t bufSize = ImageDataSerializer::ComputeYCbCrBufferSize( - aDisplay, aYSize, aYStride, aCbCrSize, aCbCrStride, aColorDepth, - aSubsampling); + aYSize, aYStride, aCbCrSize, aCbCrStride); if (bufSize == 0) { return nullptr; } @@ -207,8 +174,8 @@ BufferTextureData* BufferTextureData::CreateForYCbCr( aYUVColorSpace, aColorRange, aSubsampling); return CreateInternal( - aAllocator ? aAllocator->GetTextureForwarder().get() : nullptr, - descriptor, gfx::BackendType::NONE, bufSize, aTextureFlags); + aAllocator ? aAllocator->GetTextureForwarder() : nullptr, descriptor, + gfx::BackendType::NONE, bufSize, aTextureFlags); } void BufferTextureData::FillInfo(TextureData::Info& aInfo) const { @@ -272,35 +239,6 @@ gfx::SurfaceFormat BufferTextureData::GetFormat() const { return ImageDataSerializer::FormatFromBufferDescriptor(mDescriptor); } -struct ShmemHolderUserData { - explicit ShmemHolderUserData(ShmemTextureData::ShmemHolder* aShmemHolder) - : mShmemHolder(aShmemHolder) {} - ~ShmemHolderUserData() {} - RefPtr mShmemHolder; -}; - -void DeleteShmemHolderUserData(void* aClosure) { - ShmemHolderUserData* data = reinterpret_cast(aClosure); - auto* eventTarget = data->mShmemHolder->mAllocator->GetThread(); - - if (!eventTarget->IsOnCurrentThread()) { - RefPtr runnable = - NS_NewRunnableFunction("DeleteShmemHolderUserData::Runnable", - [wrapper = std::move(data->mShmemHolder)]() {}); - eventTarget->Dispatch(runnable.forget()); - } - - delete data; -} - -void ShmemTextureData::OnBorrowDrawTarget(gfx::DrawTarget* aDrawTarget) { - if (!aDrawTarget) { - return; - } - auto* data = new ShmemHolderUserData(mShmemHolder); - aDrawTarget->AddUserData(&mShmemHolderKey, data, DeleteShmemHolderUserData); -} - already_AddRefed BufferTextureData::BorrowDrawTarget() { if (mDescriptor.type() != BufferDescriptor::TRGBDescriptor) { return nullptr; @@ -336,15 +274,11 @@ bool BufferTextureData::BorrowMappedData(MappedTextureData& aData) { gfx::IntSize size = GetSize(); - auto stride = ImageDataSerializer::ComputeRGBStride(GetFormat(), size.width); - if (stride == 0) { - return false; - } - aData.data = GetBuffer(); aData.size = size; aData.format = GetFormat(); - aData.stride = stride; + aData.stride = + ImageDataSerializer::ComputeRGBStride(aData.format, size.width); return true; } @@ -538,8 +472,8 @@ bool ShmemTextureData::Serialize(SurfaceDescriptor& aOutDescriptor) { return false; } - aOutDescriptor = SurfaceDescriptorBuffer( - mDescriptor, MemoryOrShmem(mShmemHolder->GetShmem())); + aOutDescriptor = + SurfaceDescriptorBuffer(mDescriptor, MemoryOrShmem(std::move(mShmem))); return true; } @@ -550,11 +484,10 @@ ShmemTextureData* ShmemTextureData::Create(gfx::IntSize aSize, LayersBackend aLayersBackend, TextureFlags aFlags, TextureAllocationFlags aAllocFlags, - LayersIPCChannel* aAllocator) { + IShmemAllocator* aAllocator) { MOZ_ASSERT(aAllocator); // Should have used CreateForYCbCr. MOZ_ASSERT(aFormat != gfx::SurfaceFormat::YUV420); - MOZ_ASSERT(!(aFlags & TextureFlags::DEALLOCATE_CLIENT)); if (!aAllocator) { return nullptr; @@ -582,9 +515,8 @@ ShmemTextureData* ShmemTextureData::Create(gfx::IntSize aSize, } BufferDescriptor descriptor = RGBDescriptor(aSize, aFormat); - RefPtr shmemHolder = - new ShmemTextureData::ShmemHolder(aAllocator, shm); - return new ShmemTextureData(descriptor, aMoz2DBackend, shmemHolder); + + return new ShmemTextureData(descriptor, aMoz2DBackend, shm); } TextureData* ShmemTextureData::CreateSimilar( @@ -600,8 +532,7 @@ void ShmemTextureData::Deallocate(LayersIPCChannel* aAllocator) { gfxCriticalNote << "No allocator in ShmemTextureData::Deallocate"; return; } - MOZ_ASSERT(aAllocator == mShmemHolder->mAllocator); - mShmemHolder->SetDeallocShmem(); + aAllocator->DeallocShmem(mShmem); } } // namespace layers diff --git a/icecat/gfx/layers/BufferTexture.h b/icecat/gfx/layers/BufferTexture.h index 05a03c1db2..cdb2545c56 100644 --- a/icecat/gfx/layers/BufferTexture.h +++ b/icecat/gfx/layers/BufferTexture.h @@ -77,14 +77,12 @@ class BufferTextureData : public TextureData { virtual size_t GetBufferSize() = 0; - virtual void OnBorrowDrawTarget(gfx::DrawTarget* aDrawTarget) {} - protected: static BufferTextureData* Create( gfx::IntSize aSize, gfx::SurfaceFormat aFormat, gfx::BackendType aMoz2DBackend, LayersBackend aLayersBackend, TextureFlags aFlags, TextureAllocationFlags aAllocFlags, - LayersIPCChannel* aAllocator, bool aIsSameProcess); + mozilla::ipc::IShmemAllocator* aAllocator, bool aIsSameProcess); static BufferTextureData* CreateInternal(LayersIPCChannel* aAllocator, const BufferDescriptor& aDesc, diff --git a/icecat/gfx/layers/D3D11ShareHandleImage.cpp b/icecat/gfx/layers/D3D11ShareHandleImage.cpp index 9630074ff4..46966dce89 100644 --- a/icecat/gfx/layers/D3D11ShareHandleImage.cpp +++ b/icecat/gfx/layers/D3D11ShareHandleImage.cpp @@ -141,8 +141,8 @@ class MOZ_RAII D3D11TextureClientAllocationHelper } data->mColorSpace = mColorSpace; data->SetColorRange(mColorRange); - return MakeAndAddRef( - data, mTextureFlags, aAllocator->GetTextureForwarder().get()); + return MakeAndAddRef(data, mTextureFlags, + aAllocator->GetTextureForwarder()); } private: diff --git a/icecat/gfx/layers/D3D11YCbCrImage.cpp b/icecat/gfx/layers/D3D11YCbCrImage.cpp index 6414e1662d..7801d2a198 100644 --- a/icecat/gfx/layers/D3D11YCbCrImage.cpp +++ b/icecat/gfx/layers/D3D11YCbCrImage.cpp @@ -81,7 +81,7 @@ already_AddRefed DXGIYCbCrTextureAllocationHelper::Allocate( hr = mDevice->CreateTexture2D(&newDesc, nullptr, getter_AddRefs(textureCr)); NS_ENSURE_TRUE(SUCCEEDED(hr), nullptr); - RefPtr forwarder = + TextureForwarder* forwarder = aAllocator ? aAllocator->GetTextureForwarder() : nullptr; return TextureClient::CreateWithData( diff --git a/icecat/gfx/layers/DMABUFSurfaceImage.cpp b/icecat/gfx/layers/DMABUFSurfaceImage.cpp index 9bbd210416..46c9655494 100644 --- a/icecat/gfx/layers/DMABUFSurfaceImage.cpp +++ b/icecat/gfx/layers/DMABUFSurfaceImage.cpp @@ -65,7 +65,7 @@ TextureClient* DMABUFSurfaceImage::GetTextureClient( BackendType backend = BackendType::NONE; mTextureClient = TextureClient::CreateWithData( DMABUFTextureData::Create(mSurface, backend), TextureFlags::DEFAULT, - aKnowsCompositor->GetTextureForwarder().get()); + aKnowsCompositor->GetTextureForwarder()); } return mTextureClient; } diff --git a/icecat/gfx/layers/DcompSurfaceImage.cpp b/icecat/gfx/layers/DcompSurfaceImage.cpp index 2417ad02a2..99569fdccd 100644 --- a/icecat/gfx/layers/DcompSurfaceImage.cpp +++ b/icecat/gfx/layers/DcompSurfaceImage.cpp @@ -34,7 +34,7 @@ already_AddRefed DcompSurfaceTexture::CreateTextureClient( KnowsCompositor* aKnowsCompositor) { RefPtr textureClient = MakeAndAddRef( new DcompSurfaceTexture(aHandle, aSize, aFormat), TextureFlags::NO_FLAGS, - aKnowsCompositor->GetTextureForwarder().get()); + aKnowsCompositor->GetTextureForwarder()); return textureClient.forget(); } @@ -106,12 +106,7 @@ void DcompSurfaceHandleHost::PushResourceUpdates( return; } MOZ_ASSERT(mHandle); - - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } - + MOZ_ASSERT(aImageKeys.length() == 1); auto method = aOp == TextureHost::ADD_IMAGE ? &wr::TransactionBuilder::AddExternalImage : &wr::TransactionBuilder::UpdateExternalImage; @@ -142,10 +137,7 @@ void DcompSurfaceHandleHost::PushDisplayItems( return; } LOG("DcompSurfaceHandleHost %p PushDisplayItems", this); - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); aBuilder.PushImage( aBounds, aClip, true, false, aFilter, aImageKeys[0], !(mFlags & TextureFlags::NON_PREMULTIPLIED), diff --git a/icecat/gfx/layers/ImageContainer.cpp b/icecat/gfx/layers/ImageContainer.cpp index 81b7a052b3..a55252e9f9 100644 --- a/icecat/gfx/layers/ImageContainer.cpp +++ b/icecat/gfx/layers/ImageContainer.cpp @@ -645,9 +645,7 @@ Maybe PlanarYCbCrData::From( yuvDesc.ySize().width < 0 || yuvDesc.ySize().height < 0 || yuvDesc.cbCrSize().width < 0 || yuvDesc.cbCrSize().height < 0 || yuvData.mYStride < 0 || yuvData.mCbCrStride < 0 || !yuvData.mYChannel || - !yuvData.mCbChannel || !yuvData.mCrChannel || - !(yuvData.YDataSize() <= yuvDesc.ySize()) || - !(yuvData.CbCrDataSize() <= yuvDesc.cbCrSize())) { + !yuvData.mCbChannel || !yuvData.mCrChannel) { gfxCriticalError() << "Unusual PlanarYCbCrData: " << yuvData.mYSkip << "," << yuvData.mCbSkip << "," << yuvData.mCrSkip << ", " << yuvDesc.ySize().width << "," << yuvDesc.ySize().height @@ -655,8 +653,7 @@ Maybe PlanarYCbCrData::From( << yuvDesc.cbCrSize().height << ", " << yuvData.mYStride << "," << yuvData.mCbCrStride << ", " << yuvData.mYChannel << "," << yuvData.mCbChannel << "," - << yuvData.mCrChannel << "," << yuvData.YDataSize().width - << "," << yuvData.YDataSize().height; + << yuvData.mCrChannel; return {}; } @@ -753,12 +750,8 @@ nsresult PlanarYCbCrImage::BuildSurfaceDescriptorBuffer( yOffset, cbOffset, crOffset); uint32_t bufferSize = ImageDataSerializer::ComputeYCbCrBufferSize( - pdata->mPictureRect, ySize, pdata->mYStride, cbcrSize, pdata->mCbCrStride, - yOffset, cbOffset, crOffset, pdata->mColorDepth, - pdata->mChromaSubsampling); - if (bufferSize == 0) { - return NS_ERROR_FAILURE; - } + ySize, pdata->mYStride, cbcrSize, pdata->mCbCrStride, yOffset, cbOffset, + crOffset); aSdBuffer.data() = aAllocate(bufferSize); diff --git a/icecat/gfx/layers/ImageDataSerializer.cpp b/icecat/gfx/layers/ImageDataSerializer.cpp index da0c6d7a3f..12918e92c2 100644 --- a/icecat/gfx/layers/ImageDataSerializer.cpp +++ b/icecat/gfx/layers/ImageDataSerializer.cpp @@ -58,56 +58,36 @@ uint32_t ComputeRGBBufferSize(IntSize aSize, SurfaceFormat aFormat) { return bufsize; } -static bool CheckYCbCrStride(const gfx::IntSize& aSize, int32_t aStride, - gfx::ColorDepth aDepth) { - gfx::SurfaceFormat format = gfx::SurfaceFormatForColorDepth(aDepth); - CheckedInt32 minStride = - CheckedInt32(gfx::BytesPerPixel(format)) * aSize.width; - return minStride.isValid() && aStride >= minStride.value(); -} - // Minimum required shmem size in bytes -uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, - const gfx::IntSize& aYSize, int32_t aYStride, +uint32_t ComputeYCbCrBufferSize(const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, - int32_t aCbCrStride, gfx::ColorDepth aDepth, - const ChromaSubsampling aSubsampling) { + int32_t aCbCrStride) { MOZ_ASSERT(aYSize.height >= 0 && aYSize.width >= 0); - if (aDisplay.IsEmpty() || aDisplay.x < 0 || aDisplay.y < 0 || - !gfx::IntRect(gfx::IntPoint(), aYSize).Contains(aDisplay) || - aYSize.height < 0 || aYSize.width < 0 || aCbCrSize.height < 0 || + if (aYSize.height < 0 || aYSize.width < 0 || aCbCrSize.height < 0 || aCbCrSize.width < 0 || !gfx::Factory::AllowedSurfaceSize(IntSize(aYStride, aYSize.height)) || !gfx::Factory::AllowedSurfaceSize( - IntSize(aCbCrStride, aCbCrSize.height)) || - !CheckYCbCrStride(aYSize, aYStride, aDepth) || - !CheckYCbCrStride(aCbCrSize, aCbCrStride, aDepth) || - !(ChromaSize(aYSize, aSubsampling) <= aCbCrSize)) { + IntSize(aCbCrStride, aCbCrSize.height))) { return 0; } - // Overflow checks are performed only individually in AllowedSurfaceSize - auto bufLen = - CheckedInt(GetAlignedStride<4>(aYSize.height, aYStride)) + - CheckedInt(GetAlignedStride<4>(aCbCrSize.height, aCbCrStride)) * - 2; - if (!bufLen.isValid()) { - return 0; - } - return bufLen.value(); + // Overflow checks are performed in AllowedSurfaceSize + return GetAlignedStride<4>(aYSize.height, aYStride) + + 2 * GetAlignedStride<4>(aCbCrSize.height, aCbCrStride); } -uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, - const gfx::IntSize& aYSize, int32_t aYStride, +uint32_t ComputeYCbCrBufferSize(const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, int32_t aCbCrStride, uint32_t aYOffset, - uint32_t aCbOffset, uint32_t aCrOffset, - gfx::ColorDepth aDepth, - const ChromaSubsampling aSubsampling) { - uint32_t minBufLen = ComputeYCbCrBufferSize( - aDisplay, aYSize, aYStride, aCbCrSize, aCbCrStride, aDepth, aSubsampling); - if (minBufLen == 0) { + uint32_t aCbOffset, uint32_t aCrOffset) { + MOZ_ASSERT(aYSize.height >= 0 && aYSize.width >= 0); + + if (aYSize.height < 0 || aYSize.width < 0 || aCbCrSize.height < 0 || + aCbCrSize.width < 0 || + !gfx::Factory::AllowedSurfaceSize(IntSize(aYStride, aYSize.height)) || + !gfx::Factory::AllowedSurfaceSize( + IntSize(aCbCrStride, aCbCrSize.height))) { return 0; } @@ -125,8 +105,7 @@ uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, crEnd += cbCrLength; if (!yEnd.isValid() || !cbEnd.isValid() || !crEnd.isValid() || - yEnd.value() > aCbOffset || cbEnd.value() > aCrOffset || - crEnd.value() < minBufLen) { + yEnd.value() > aCbOffset || cbEnd.value() > aCrOffset) { return 0; } @@ -330,10 +309,6 @@ already_AddRefed DataSourceSurfaceFromYCbCrDescriptor( return nullptr; } - if (!aBuffer) { - return nullptr; - } - layers::PlanarYCbCrData ycbcrData; ycbcrData.mYChannel = GetYChannel(aBuffer, aDescriptor); ycbcrData.mYStride = aDescriptor.yStride(); diff --git a/icecat/gfx/layers/ImageDataSerializer.h b/icecat/gfx/layers/ImageDataSerializer.h index 47e575a274..8584ea1a10 100644 --- a/icecat/gfx/layers/ImageDataSerializer.h +++ b/icecat/gfx/layers/ImageDataSerializer.h @@ -40,18 +40,13 @@ uint32_t ComputeRGBBufferSize(gfx::IntSize aSize, gfx::SurfaceFormat aFormat); /// This function is meant as a helper to know how much shared memory we need /// to allocate in a shmem in order to place a shared YCbCr image blob of /// given dimensions. -uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, - const gfx::IntSize& aYSize, int32_t aYStride, +uint32_t ComputeYCbCrBufferSize(const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, - int32_t aCbCrStride, gfx::ColorDepth aDepth, - const gfx::ChromaSubsampling aSubsampling); -uint32_t ComputeYCbCrBufferSize(const gfx::IntRect& aDisplay, - const gfx::IntSize& aYSize, int32_t aYStride, + int32_t aCbCrStride); +uint32_t ComputeYCbCrBufferSize(const gfx::IntSize& aYSize, int32_t aYStride, const gfx::IntSize& aCbCrSize, int32_t aCbCrStride, uint32_t aYOffset, - uint32_t aCbOffset, uint32_t aCrOffset, - gfx::ColorDepth aDepth, - const gfx::ChromaSubsampling aSubsampling); + uint32_t aCbOffset, uint32_t aCrOffset); uint32_t ComputeYCbCrBufferSize(uint32_t aBufferSize); void ComputeYCbCrOffsets(int32_t yStride, int32_t yHeight, int32_t cbCrStride, diff --git a/icecat/gfx/layers/MacIOSurfaceImage.cpp b/icecat/gfx/layers/MacIOSurfaceImage.cpp index 6e0dab1fd6..a6f1da18b4 100644 --- a/icecat/gfx/layers/MacIOSurfaceImage.cpp +++ b/icecat/gfx/layers/MacIOSurfaceImage.cpp @@ -27,7 +27,7 @@ TextureClient* MacIOSurfaceImage::GetTextureClient( IsDRM() ? TextureFlags::DRM_SOURCE : TextureFlags::DEFAULT; mTextureClient = TextureClient::CreateWithData( MacIOSurfaceTextureData::Create(mSurface, backend), flags, - aKnowsCompositor->GetTextureForwarder().get()); + aKnowsCompositor->GetTextureForwarder()); } return mTextureClient; } diff --git a/icecat/gfx/layers/RemoteTextureMap.cpp b/icecat/gfx/layers/RemoteTextureMap.cpp index 581e05d93e..ab242ba0e9 100644 --- a/icecat/gfx/layers/RemoteTextureMap.cpp +++ b/icecat/gfx/layers/RemoteTextureMap.cpp @@ -1305,7 +1305,7 @@ bool RemoteTextureMap::WaitRemoteTextureReady(const RemoteTextureInfo& aInfo) { return false; } - owner = GetTextureOwner(lock, aInfo.mOwnerId, aInfo.mForPid); + auto* owner = GetTextureOwner(lock, aInfo.mOwnerId, aInfo.mForPid); // When owner is alreay unregistered, remote texture will not be pushed. if (!owner || owner->mIsContextLost) { // This could happen with IPC abnormal shutdown diff --git a/icecat/gfx/layers/ScreenshotGrabber.cpp b/icecat/gfx/layers/ScreenshotGrabber.cpp index 46b310d324..3719afa336 100644 --- a/icecat/gfx/layers/ScreenshotGrabber.cpp +++ b/icecat/gfx/layers/ScreenshotGrabber.cpp @@ -154,14 +154,10 @@ void ScreenshotGrabberImpl::GrabScreenshot(Window& aWindow, return; } - if (aWindowSize.IsEmpty() || mBufferSize.IsEmpty()) { - return; - } - Size windowSize(aWindowSize); float scale = std::min(mBufferSize.width / windowSize.width, mBufferSize.height / windowSize.height); - IntSize scaledSize = Max(IntSize::Round(windowSize * scale), IntSize(1, 1)); + IntSize scaledSize = IntSize::Round(windowSize * scale); RefPtr scaledTarget = ScaleDownWindowRenderSourceToSize( aWindow, scaledSize, windowRenderSource, 0); diff --git a/icecat/gfx/layers/SourceSurfaceSharedData.cpp b/icecat/gfx/layers/SourceSurfaceSharedData.cpp index 02096cc3b6..10498c0230 100644 --- a/icecat/gfx/layers/SourceSurfaceSharedData.cpp +++ b/icecat/gfx/layers/SourceSurfaceSharedData.cpp @@ -13,7 +13,6 @@ #include "mozilla/layers/SharedSurfacesChild.h" #include "mozilla/layers/SharedSurfacesParent.h" #include "nsDebug.h" // for NS_ABORT_OOM -#include "mozilla/image/SurfaceCache.h" #include "base/process_util.h" @@ -47,7 +46,7 @@ void SourceSurfaceSharedDataWrapper::Init( MOZ_CRASH("Invalid shared memory handle!"); } - bool mapped = EnsureMapped(); + bool mapped = EnsureMapped(len); if ((sizeof(uintptr_t) <= 4 || StaticPrefs::image_mem_shared_unmap_force_enabled_AtStartup()) && len / 1024 > @@ -78,20 +77,9 @@ void SourceSurfaceSharedDataWrapper::Init(SourceSurfaceSharedData* aSurface) { mBuf = aSurface->mBuf; } -bool SourceSurfaceSharedDataWrapper::EnsureMapped() { +bool SourceSurfaceSharedDataWrapper::EnsureMapped(size_t aLength) { MOZ_ASSERT(!GetData()); - auto computedStride = - CheckedInt(mSize.width) * BytesPerPixel(mFormat); - auto computedLength = CheckedInt(mSize.height) * mStride; - if (mSize.width < 0 || mSize.height < 0 || mStride < 0 || - !computedStride.isValid() || computedStride.value() <= 0 || - mStride < computedStride.value() || !computedLength.isValid() || - computedLength.value() <= 0 || !image::SurfaceCache::IsLegalSize(mSize) || - mBufHandle.Size() < GetAlignedDataLength()) { - return false; - } - auto mapping = mBufHandle.Map(); while (!mapping) { nsTArray> expired; @@ -126,8 +114,9 @@ bool SourceSurfaceSharedDataWrapper::Map(MapType aMapType, SharedSurfacesParent::RemoveTracking(this); } if (!dataPtr) { - if (!EnsureMapped()) { - NS_ABORT_OOM(GetAlignedDataLength()); + size_t len = GetAlignedDataLength(); + if (!EnsureMapped(len)) { + NS_ABORT_OOM(len); } dataPtr = GetData(); } diff --git a/icecat/gfx/layers/SourceSurfaceSharedData.h b/icecat/gfx/layers/SourceSurfaceSharedData.h index 845448aa7c..d442c00930 100644 --- a/icecat/gfx/layers/SourceSurfaceSharedData.h +++ b/icecat/gfx/layers/SourceSurfaceSharedData.h @@ -104,7 +104,7 @@ class SourceSurfaceSharedDataWrapper final : public DataSourceSurface { return mozilla::ipc::shared_memory::PageAlignedSize(GetDataLength()); } - bool EnsureMapped(); + bool EnsureMapped(size_t aLength); // Protects mapping and unmapping of mBuf. Maybe mHandleLock; diff --git a/icecat/gfx/layers/apz/src/APZCTreeManager.cpp b/icecat/gfx/layers/apz/src/APZCTreeManager.cpp index 3385f4bad8..1ac0eb9f03 100644 --- a/icecat/gfx/layers/apz/src/APZCTreeManager.cpp +++ b/icecat/gfx/layers/apz/src/APZCTreeManager.cpp @@ -216,7 +216,8 @@ APZCTreeManager::CheckerboardFlushObserver::Observe(nsISupports* aSubject, } if (XRE_IsGPUProcess()) { if (gfx::GPUParent* gpu = gfx::GPUParent::GetSingleton()) { - Unused << gpu->SendFlushActiveCheckerboardReportsDone(); + nsCString topic("APZ:FlushActiveCheckerboard:Done"); + Unused << gpu->SendNotifyUiObservers(topic); } } else { MOZ_ASSERT(XRE_IsParentProcess()); diff --git a/icecat/gfx/layers/apz/util/CheckerboardReportService.cpp b/icecat/gfx/layers/apz/util/CheckerboardReportService.cpp index 34a17a29e8..b6ae712b3f 100644 --- a/icecat/gfx/layers/apz/util/CheckerboardReportService.cpp +++ b/icecat/gfx/layers/apz/util/CheckerboardReportService.cpp @@ -202,7 +202,7 @@ void CheckerboardReportService::SetRecordingEnabled(bool aEnabled) { void CheckerboardReportService::FlushActiveReports() { MOZ_ASSERT(XRE_IsParentProcess()); gfx::GPUProcessManager* gpu = gfx::GPUProcessManager::Get(); - if (gpu && gpu->FlushActiveCheckerboardReports()) { + if (gpu && gpu->NotifyGpuObservers("APZ:FlushActiveCheckerboard")) { return; } diff --git a/icecat/gfx/layers/client/ImageClient.cpp b/icecat/gfx/layers/client/ImageClient.cpp index 82c84526e8..847399fcd8 100644 --- a/icecat/gfx/layers/client/ImageClient.cpp +++ b/icecat/gfx/layers/client/ImageClient.cpp @@ -118,7 +118,7 @@ already_AddRefed ImageClient::CreateTextureClientForImage( typedImage->GetOriginPos(), typedImage->GetHasAlpha(), typedImage->GetForceBT709ColorSpace(), typedImage->GetTransformOverride(), - aKnowsCompositor->GetTextureForwarder().get(), TextureFlags::DEFAULT); + aKnowsCompositor->GetTextureForwarder(), TextureFlags::DEFAULT); #endif } else { RefPtr surface = aImage->GetAsSourceSurface(); diff --git a/icecat/gfx/layers/client/TextureClient.cpp b/icecat/gfx/layers/client/TextureClient.cpp index e4aa340ece..5c3db838a4 100644 --- a/icecat/gfx/layers/client/TextureClient.cpp +++ b/icecat/gfx/layers/client/TextureClient.cpp @@ -1180,8 +1180,8 @@ void TextureClient::SetRecycleAllocator( } bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { - RefPtr textureFwd = aForwarder->GetTextureForwarder(); - MOZ_ASSERT(aForwarder && textureFwd->GetThread() == mAllocator->GetThread()); + MOZ_ASSERT(aForwarder && aForwarder->GetTextureForwarder()->GetThread() == + mAllocator->GetThread()); if (mActor && !mActor->IPCOpen()) { return false; @@ -1189,6 +1189,7 @@ bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { if (mActor && !mActor->mDestroyed) { CompositableForwarder* currentFwd = mActor->mCompositableForwarder; + TextureForwarder* currentTexFwd = mActor->mTextureForwarder; if (currentFwd != aForwarder) { // It's a bit iffy but right now ShadowLayerForwarder inherits // TextureForwarder even though it should not. @@ -1196,8 +1197,7 @@ bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { // the CompositorBridgeChild. It's Ok for a texture to move from a // ShadowLayerForwarder to another, but not form a CompositorBridgeChild // to another (they use different channels). - if (mActor->mTextureForwarder && - mActor->mTextureForwarder != textureFwd) { + if (currentTexFwd && currentTexFwd != aForwarder->GetTextureForwarder()) { gfxCriticalError() << "Attempt to move a texture to a different channel CF."; MOZ_ASSERT_UNREACHABLE("unexpected to be called"); @@ -1211,7 +1211,8 @@ bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { return false; } mActor->mCompositableForwarder = aForwarder; - mActor->mUsesImageBridge = textureFwd->UsesImageBridge(); + mActor->mUsesImageBridge = + aForwarder->GetTextureForwarder()->UsesImageBridge(); } return true; } @@ -1224,7 +1225,8 @@ bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { } // Try external image id allocation. - mExternalImageId = textureFwd->GetNextExternalImageId(); + mExternalImageId = + aForwarder->GetTextureForwarder()->GetNextExternalImageId(); ReadLockDescriptor readLockDescriptor = null_t(); @@ -1236,7 +1238,7 @@ bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { } } - PTextureChild* actor = textureFwd->CreateTexture( + PTextureChild* actor = aForwarder->GetTextureForwarder()->CreateTexture( desc, std::move(readLockDescriptor), aForwarder->GetCompositorBackendType(), GetFlags(), dom::ContentParentId(), mSerial, mExternalImageId); @@ -1252,7 +1254,7 @@ bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { mActor = static_cast(actor); mActor->mCompositableForwarder = aForwarder; - mActor->mTextureForwarder = textureFwd; + mActor->mTextureForwarder = aForwarder->GetTextureForwarder(); mActor->mTextureClient = this; // If the TextureClient is already locked, we have to lock TextureChild's @@ -1266,11 +1268,13 @@ bool TextureClient::InitIPDLActor(CompositableForwarder* aForwarder) { bool TextureClient::InitIPDLActor(KnowsCompositor* aKnowsCompositor, const dom::ContentParentId& aContentId) { - RefPtr textureFwd = aKnowsCompositor->GetTextureForwarder(); MOZ_ASSERT(aKnowsCompositor && - textureFwd->GetThread() == mAllocator->GetThread()); + aKnowsCompositor->GetTextureForwarder()->GetThread() == + mAllocator->GetThread()); + TextureForwarder* fwd = aKnowsCompositor->GetTextureForwarder(); if (mActor && !mActor->mDestroyed) { CompositableForwarder* currentFwd = mActor->mCompositableForwarder; + TextureForwarder* currentTexFwd = mActor->mTextureForwarder; if (currentFwd) { gfxCriticalError() @@ -1278,12 +1282,12 @@ bool TextureClient::InitIPDLActor(KnowsCompositor* aKnowsCompositor, return false; } - if (mActor->mTextureForwarder && mActor->mTextureForwarder != textureFwd) { + if (currentTexFwd && currentTexFwd != fwd) { gfxCriticalError() << "Attempt to move a texture to a different channel TF."; return false; } - mActor->mTextureForwarder = textureFwd; + mActor->mTextureForwarder = fwd; return true; } MOZ_ASSERT(!mActor || mActor->mDestroyed, @@ -1295,7 +1299,8 @@ bool TextureClient::InitIPDLActor(KnowsCompositor* aKnowsCompositor, } // Try external image id allocation. - mExternalImageId = textureFwd->GetNextExternalImageId(); + mExternalImageId = + aKnowsCompositor->GetTextureForwarder()->GetNextExternalImageId(); ReadLockDescriptor readLockDescriptor = null_t(); { @@ -1306,10 +1311,10 @@ bool TextureClient::InitIPDLActor(KnowsCompositor* aKnowsCompositor, } } - PTextureChild* actor = textureFwd->CreateTexture( - desc, std::move(readLockDescriptor), - aKnowsCompositor->GetCompositorBackendType(), GetFlags(), aContentId, - mSerial, mExternalImageId); + PTextureChild* actor = + fwd->CreateTexture(desc, std::move(readLockDescriptor), + aKnowsCompositor->GetCompositorBackendType(), + GetFlags(), aContentId, mSerial, mExternalImageId); if (!actor) { gfxCriticalNote << static_cast(desc.type()) << ", " << static_cast( @@ -1320,7 +1325,7 @@ bool TextureClient::InitIPDLActor(KnowsCompositor* aKnowsCompositor, } mActor = static_cast(actor); - mActor->mTextureForwarder = textureFwd; + mActor->mTextureForwarder = fwd; mActor->mTextureClient = this; // If the TextureClient is already locked, we have to lock TextureChild's @@ -1339,9 +1344,9 @@ already_AddRefed TextureClient::CreateForDrawing( KnowsCompositor* aAllocator, gfx::SurfaceFormat aFormat, gfx::IntSize aSize, BackendSelector aSelector, TextureFlags aTextureFlags, TextureAllocationFlags aAllocFlags) { - return TextureClient::CreateForDrawing( - aAllocator->GetTextureForwarder().get(), aFormat, aSize, aAllocator, - aSelector, aTextureFlags, aAllocFlags); + return TextureClient::CreateForDrawing(aAllocator->GetTextureForwarder(), + aFormat, aSize, aAllocator, aSelector, + aTextureFlags, aAllocFlags); } // static @@ -1414,8 +1419,8 @@ already_AddRefed TextureClient::CreateFromSurface( #endif if (data) { - return MakeAndAddRef( - data, aTextureFlags, aAllocator->GetTextureForwarder().get()); + return MakeAndAddRef(data, aTextureFlags, + aAllocator->GetTextureForwarder()); } // Fall back to using UpdateFromSurface @@ -1444,7 +1449,7 @@ already_AddRefed TextureClient::CreateForRawBufferAccess( gfx::BackendType aMoz2DBackend, TextureFlags aTextureFlags, TextureAllocationFlags aAllocFlags) { return CreateForRawBufferAccess( - aAllocator->GetTextureForwarder().get(), aFormat, aSize, aMoz2DBackend, + aAllocator->GetTextureForwarder(), aFormat, aSize, aMoz2DBackend, aAllocator->GetCompositorBackendType(), aTextureFlags, aAllocFlags); } @@ -1513,7 +1518,7 @@ already_AddRefed TextureClient::CreateForYCbCr( } return MakeAndAddRef(data, aTextureFlags, - aAllocator->GetTextureForwarder().get()); + aAllocator->GetTextureForwarder()); } TextureClient::TextureClient(TextureData* aData, TextureFlags aFlags, @@ -1716,9 +1721,7 @@ already_AddRefed TextureReadLock::Deserialize( case ReadLockDescriptor::TUntrustedShmemSection: { const UntrustedShmemSection& untrusted = aDescriptor.get_UntrustedShmemSection(); - size_t minSize = sizeof(ShmemTextureReadLock::ShmReadLockInfo); - Maybe section = - ShmemSection::FromUntrusted(untrusted, minSize); + Maybe section = ShmemSection::FromUntrusted(untrusted); if (section.isNothing()) { return nullptr; } diff --git a/icecat/gfx/layers/composite/TextureHost.cpp b/icecat/gfx/layers/composite/TextureHost.cpp index a5987f48b1..e4d8449cac 100644 --- a/icecat/gfx/layers/composite/TextureHost.cpp +++ b/icecat/gfx/layers/composite/TextureHost.cpp @@ -123,12 +123,9 @@ PTextureParent* TextureHost::CreateIPDLActor( ReadLockDescriptor&& aReadLock, LayersBackend aLayersBackend, TextureFlags aFlags, const dom::ContentParentId& aContentId, uint64_t aSerial, const wr::MaybeExternalImageId& aExternalImageId) { - MOZ_ASSERT(!(aFlags & TextureFlags::DEALLOCATE_CLIENT)); - - TextureFlags flags = aFlags & ~TextureFlags::DEALLOCATE_CLIENT; TextureParent* actor = new TextureParent(aAllocator, aContentId, aSerial, aExternalImageId); - if (!actor->Init(aSharedData, std::move(aReadLock), aLayersBackend, flags)) { + if (!actor->Init(aSharedData, std::move(aReadLock), aLayersBackend, aFlags)) { actor->ActorDestroy(ipc::IProtocol::ActorDestroyReason::FailedConstructor); delete actor; return nullptr; @@ -267,27 +264,24 @@ already_AddRefed CreateBackendIndependentTextureHost( switch (data.type()) { case MemoryOrShmem::TShmem: { const ipc::Shmem& shmem = data.get_Shmem(); + const BufferDescriptor& desc = bufferDesc.desc(); if (!shmem.IsReadable()) { - // We failed to map the shmem so we can't verify its size. - // Attempting to construct a ShmemTextureHost with it will succeed, - // but the resulting object will have a null shmem and can't ever be - // locked or mapped -- it's not useful at all. We just return - // nullptr instead. - gfxCriticalError() << "Failed texture host with unmappable shmem."; - return nullptr; + // We failed to map the shmem so we can't verify its size. This + // should not be a fatal error, so just create the texture with + // nothing backing it. + result = new ShmemTextureHost(shmem, desc, aDeallocator, aFlags); + break; } size_t bufSize = shmem.Size(); size_t reqSize = SIZE_MAX; - const BufferDescriptor& desc = bufferDesc.desc(); switch (desc.type()) { case BufferDescriptor::TYCbCrDescriptor: { const YCbCrDescriptor& ycbcr = desc.get_YCbCrDescriptor(); reqSize = ImageDataSerializer::ComputeYCbCrBufferSize( - ycbcr.display(), ycbcr.ySize(), ycbcr.yStride(), - ycbcr.cbCrSize(), ycbcr.cbCrStride(), ycbcr.yOffset(), - ycbcr.cbOffset(), ycbcr.crOffset(), ycbcr.colorDepth(), - ycbcr.chromaSubsampling()); + ycbcr.ySize(), ycbcr.yStride(), ycbcr.cbCrSize(), + ycbcr.cbCrStride(), ycbcr.yOffset(), ycbcr.cbOffset(), + ycbcr.crOffset()); break; } case BufferDescriptor::TRGBDescriptor: { @@ -511,10 +505,6 @@ void BufferTextureHost::CreateRenderTexture( } else { texture = new wr::RenderBufferTextureHost(GetBuffer(), GetBufferDescriptor()); - - if (auto* shmemTextureHost = AsShmemTextureHost()) { - shmemTextureHost->OnRenderTextureCreated(texture); - } } wr::RenderThread::Get()->RegisterExternalImage(aExternalImageId, @@ -547,10 +537,7 @@ void BufferTextureHost::PushResourceUpdates( : wr::ExternalImageType::Buffer(); if (GetFormat() != gfx::SurfaceFormat::YUV420) { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected keys lenght"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); wr::ImageDescriptor descriptor( GetSize(), @@ -559,10 +546,7 @@ void BufferTextureHost::PushResourceUpdates( (aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0, /* aNormalizedUvs */ false); } else { - if (aImageKeys.length() != 3) { - MOZ_ASSERT_UNREACHABLE("unexpected keys lenght"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 3); const layers::YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor(); gfx::IntSize ySize = desc.display().Size(); @@ -593,19 +577,13 @@ void BufferTextureHost::PushDisplayItems(wr::DisplayListBuilder& aBuilder, bool useExternalSurface = aFlags.contains(PushDisplayItemFlag::SUPPORTS_EXTERNAL_BUFFER_TEXTURES); if (GetFormat() != gfx::SurfaceFormat::YUV420) { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); aBuilder.PushImage(aBounds, aClip, true, false, aFilter, aImageKeys[0], !(mFlags & TextureFlags::NON_PREMULTIPLIED), wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f}, preferCompositorSurface, useExternalSurface); } else { - if (aImageKeys.length() != 3) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 3); const YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor(); aBuilder.PushYCbCrPlanarImage( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], aImageKeys[2], @@ -735,9 +713,6 @@ already_AddRefed BufferTextureHost::GetAsSurface( NS_WARNING("BufferTextureHost: unsupported format!"); return nullptr; } - if (!GetBuffer()) { - return nullptr; - } if (mFormat == gfx::SurfaceFormat::YUV420) { result = ImageDataSerializer::DataSourceSurfaceFromYCbCrDescriptor( GetBuffer(), mDescriptor.get_YCbCrDescriptor(), aSurface); @@ -745,29 +720,10 @@ already_AddRefed BufferTextureHost::GetAsSurface( return nullptr; } } else { - auto stride = - ImageDataSerializer::GetRGBStride(mDescriptor.get_RGBDescriptor()); - - struct Closure { - RefPtr mEventTarget; - RefPtr mRunnable; - }; - - RefPtr eventTarget = CompositorThread(); - RefPtr runnable = - NS_NewRunnableFunction("BufferTextureHost::GetAsSurface::Runnable", - [self = RefPtr{this}]() {}); - - Closure* closure = new Closure{eventTarget.forget(), runnable.forget()}; - - auto destroyedCallback = [](void* aClosure) mutable { - auto* closure = static_cast(aClosure); - closure->mEventTarget->Dispatch(closure->mRunnable.forget()); - delete closure; - }; - result = gfx::Factory::CreateWrappingDataSourceSurface( - GetBuffer(), stride, mSize, mFormat, destroyedCallback, closure); + GetBuffer(), + ImageDataSerializer::GetRGBStride(mDescriptor.get_RGBDescriptor()), + mSize, mFormat); } return result.forget(); } @@ -777,12 +733,8 @@ ShmemTextureHost::ShmemTextureHost(const ipc::Shmem& aShmem, ISurfaceAllocator* aDeallocator, TextureFlags aFlags) : BufferTextureHost(aDesc, aFlags), mDeallocator(aDeallocator) { - MOZ_ASSERT(!(mFlags & TextureFlags::DEALLOCATE_CLIENT)); - if (aShmem.IsReadable()) { - UniquePtr shmem = MakeUnique(aShmem); - mShmemDeallocRunnable = - new ShmemDeallocRunnable(mDeallocator, std::move(shmem)); + mShmem = MakeUnique(aShmem); } else { // This can happen if we failed to map the shmem on this process, perhaps // because it was big and we didn't have enough contiguous address space @@ -797,69 +749,35 @@ ShmemTextureHost::ShmemTextureHost(const ipc::Shmem& aShmem, } ShmemTextureHost::~ShmemTextureHost() { + MOZ_ASSERT(!mShmem || (mFlags & TextureFlags::DEALLOCATE_CLIENT), + "Leaking our buffer"); DeallocateDeviceData(); MOZ_COUNT_DTOR(ShmemTextureHost); } -void ShmemTextureHost::DeallocateSharedData() {} - -void ShmemTextureHost::ForgetSharedData() {} - -void ShmemTextureHost::OnShutdown() { mShmemDeallocRunnable = nullptr; } - -ShmemTextureHost::ShmemDeallocRunnable::ShmemDeallocRunnable( - ISurfaceAllocator* aDeallocator, UniquePtr&& aShmem) - : Runnable("ShmemDeallocRunnable"), - mDeallocator(aDeallocator), - mShmem(std::move(aShmem)) {} - -nsresult ShmemTextureHost::ShmemDeallocRunnable::Run() { - if (!mDeallocator || !mShmem) { - return NS_OK; +void ShmemTextureHost::DeallocateSharedData() { + if (mShmem) { + MOZ_ASSERT(mDeallocator, + "Shared memory would leak without a ISurfaceAllocator"); + mDeallocator->AsShmemAllocator()->DeallocShmem(*mShmem); + mShmem = nullptr; } - mDeallocator->AsShmemAllocator()->DeallocShmem(*mShmem); - mShmem = nullptr; - return NS_OK; } -ShmemTextureHost::ShmemDeallocRunnable::~ShmemDeallocRunnable() { - if (!mDeallocator || !mShmem) { - return; +void ShmemTextureHost::ForgetSharedData() { + if (mShmem) { + mShmem = nullptr; } - mDeallocator->AsShmemAllocator()->DeallocShmem(*mShmem); } -void ShmemTextureHost::OnRenderTextureCreated( - wr::RenderTextureHost* aRenderTexture) { - MOZ_ASSERT(aRenderTexture); - - if (!mShmemDeallocRunnable || !mShmemDeallocRunnable->GetShmem()) { - return; - } - - RefPtr eventTarget = GetCurrentSerialEventTarget(); - RefPtr runnable = mShmemDeallocRunnable; - - auto destroyedCallback = [eventTarget = std::move(eventTarget), - runnable = std::move(runnable)]() mutable { - eventTarget->Dispatch(runnable.forget()); - }; - - aRenderTexture->SetDestroyedCallback(destroyedCallback); -} +void ShmemTextureHost::OnShutdown() { mShmem = nullptr; } uint8_t* ShmemTextureHost::GetBuffer() { - if (mShmemDeallocRunnable && mShmemDeallocRunnable->GetShmem()) { - return mShmemDeallocRunnable->GetShmem()->get(); - } - return nullptr; + return mShmem ? mShmem->get() : nullptr; } size_t ShmemTextureHost::GetBufferSize() { - if (mShmemDeallocRunnable && mShmemDeallocRunnable->GetShmem()) { - return mShmemDeallocRunnable->GetShmem()->Size(); - } - return 0; + return mShmem ? mShmem->Size() : 0; } MemoryTextureHost::MemoryTextureHost(uint8_t* aBuffer, diff --git a/icecat/gfx/layers/composite/TextureHost.h b/icecat/gfx/layers/composite/TextureHost.h index 5b4aec5bf3..eb0c21ae41 100644 --- a/icecat/gfx/layers/composite/TextureHost.h +++ b/icecat/gfx/layers/composite/TextureHost.h @@ -50,7 +50,6 @@ class Shmem; namespace wr { class DisplayListBuilder; class TransactionBuilder; -class RenderTextureHost; } // namespace wr namespace layers { @@ -904,25 +903,9 @@ class ShmemTextureHost : public BufferTextureHost { ShmemTextureHost* AsShmemTextureHost() override { return this; } - void OnRenderTextureCreated(wr::RenderTextureHost* aRenderTexture); - protected: - class ShmemDeallocRunnable final : public Runnable { - public: - ShmemDeallocRunnable(ISurfaceAllocator* aDeallocator, - UniquePtr&& aShmem); - NS_IMETHOD Run() override; - mozilla::ipc::Shmem* GetShmem() { return mShmem.get(); } - - protected: - virtual ~ShmemDeallocRunnable(); - - RefPtr mDeallocator; - UniquePtr mShmem; - }; - + UniquePtr mShmem; RefPtr mDeallocator; - RefPtr mShmemDeallocRunnable; }; /** diff --git a/icecat/gfx/layers/d3d11/TextureD3D11.cpp b/icecat/gfx/layers/d3d11/TextureD3D11.cpp index 1a9b35ad53..a63757b0e2 100644 --- a/icecat/gfx/layers/d3d11/TextureD3D11.cpp +++ b/icecat/gfx/layers/d3d11/TextureD3D11.cpp @@ -494,8 +494,7 @@ already_AddRefed D3D11TextureData::CreateTextureClient( data->SetColorRange(aColorRange); RefPtr textureClient = MakeAndAddRef( - data, TextureFlags::NO_FLAGS, - aKnowsCompositor->GetTextureForwarder().get()); + data, TextureFlags::NO_FLAGS, aKnowsCompositor->GetTextureForwarder()); const auto textureId = GpuProcessD3D11TextureMap::GetNextTextureId(); data->SetGpuProcessTextureId(textureId); @@ -1339,10 +1338,7 @@ void DXGITextureHostD3D11::PushResourceUpdates( case gfx::SurfaceFormat::R8G8B8A8: case gfx::SurfaceFormat::B8G8R8A8: case gfx::SurfaceFormat::B8G8R8X8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); wr::ImageDescriptor descriptor(mSize, GetFormat()); // Prefer TextureExternal unless the backend requires TextureRect. @@ -1361,11 +1357,7 @@ void DXGITextureHostD3D11::PushResourceUpdates( case gfx::SurfaceFormat::P010: case gfx::SurfaceFormat::P016: case gfx::SurfaceFormat::NV12: { - if (aImageKeys.length() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } - + MOZ_ASSERT(aImageKeys.length() == 2); MOZ_ASSERT(mSize.width % 2 == 0); MOZ_ASSERT(mSize.height % 2 == 0); @@ -1420,10 +1412,7 @@ void DXGITextureHostD3D11::PushDisplayItems( case gfx::SurfaceFormat::R8G8B8A8: case gfx::SurfaceFormat::B8G8R8A8: case gfx::SurfaceFormat::B8G8R8X8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); aBuilder.PushImage(aBounds, aClip, true, false, aFilter, aImageKeys[0], !(mFlags & TextureFlags::NON_PREMULTIPLIED), wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f}, @@ -1438,10 +1427,7 @@ void DXGITextureHostD3D11::PushDisplayItems( // it may be handled as if it was DXGI_FORMAT_P016. This is approximately // perceptually correct. However, due to rounding error, the precise // quantized value after sampling may be off by 1. - if (aImageKeys.length() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); aBuilder.PushNV12Image( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], GetFormat() == gfx::SurfaceFormat::NV12 ? wr::ColorDepth::Color8 @@ -1529,13 +1515,8 @@ void DXGIYCbCrTextureHostD3D11::PushResourceUpdates( return; } - if (aImageKeys.length() != 3) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } - MOZ_ASSERT(mHandles[0] && mHandles[1] && mHandles[2]); - + MOZ_ASSERT(aImageKeys.length() == 3); // Assume the chroma planes are rounded up if the luma plane is odd sized. MOZ_ASSERT((mSizeCbCr.width == mSizeY.width || mSizeCbCr.width == (mSizeY.width + 1) >> 1) && @@ -1579,10 +1560,7 @@ void DXGIYCbCrTextureHostD3D11::PushDisplayItems( return; } - if (aImageKeys.length() != 3) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 3); aBuilder.PushYCbCrPlanarImage( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], aImageKeys[2], diff --git a/icecat/gfx/layers/ipc/APZInputBridgeChild.cpp b/icecat/gfx/layers/ipc/APZInputBridgeChild.cpp index d53c1ec120..f9de8575a6 100644 --- a/icecat/gfx/layers/ipc/APZInputBridgeChild.cpp +++ b/icecat/gfx/layers/ipc/APZInputBridgeChild.cpp @@ -205,9 +205,7 @@ void APZInputBridgeChild::HandleTapOnMainThread( aDoubleTapToZoomMetrics); return; } - // Hold strong reference to BrowserParent because SendHandleTap - // can run script via SetFocus. - RefPtr tab = + dom::BrowserParent* tab = dom::BrowserParent::GetBrowserParentFromLayersId(aGuid.mLayersId); if (tab) { #ifdef MOZ_WIDGET_ANDROID diff --git a/icecat/gfx/layers/ipc/CanvasChild.cpp b/icecat/gfx/layers/ipc/CanvasChild.cpp index c56bda8b43..93378de00f 100644 --- a/icecat/gfx/layers/ipc/CanvasChild.cpp +++ b/icecat/gfx/layers/ipc/CanvasChild.cpp @@ -142,18 +142,20 @@ class SourceSurfaceCanvasRecording final : public gfx::SourceSurface { } already_AddRefed GetDataSurface() final { - MutexAutoLock lock(mDataSurfaceLock); - EnsureDataSurfaceOnMainThread(lock); + EnsureDataSurfaceOnMainThread(); return do_AddRef(mDataSourceSurface); } void AttachSurface() { mDetached = false; } - void DetachSurface(bool aInvalidate = false) { - mDetached = true; + void DetachSurface() { mDetached = true; } - if (aInvalidate) { - MutexAutoLock lock(mDataSurfaceLock); - InvalidateDataSurface(lock); + void InvalidateDataSurface() { + if (mDataSourceSurface && mMayInvalidate) { + // This must be the only reference to the data left. + MOZ_ASSERT(mDataSourceSurface->hasOneRef()); + mDataSourceSurface = + gfx::Factory::CopyDataSourceSurface(mDataSourceSurface); + mMayInvalidate = false; } } @@ -163,10 +165,6 @@ class SourceSurfaceCanvasRecording final : public gfx::SourceSurface { } bool GetSurfaceDescriptor(SurfaceDescriptor& aDesc) final { - if (!NS_IsMainThread()) { - // Only allow recording surface upload optimization on main thread. - return false; - } static Atomic sNextExportID(0); if (!mExportID) { mExportID = gfx::ReferencePtr(++sNextExportID); @@ -179,31 +177,11 @@ class SourceSurfaceCanvasRecording final : public gfx::SourceSurface { } private: - void InvalidateDataSurface(const MutexAutoLock& aProofOfLock) - MOZ_REQUIRES(mDataSurfaceLock) { - // The data is about to be invalidated and must be copied before it is - // modified. - if (mDataSourceSurface && mMayInvalidate) { - mDataSourceSurface = - gfx::Factory::CopyDataSourceSurface(mDataSourceSurface); - mMayInvalidate = false; - } - } - - void EnsureDataSurfaceOnMainThread(const MutexAutoLock& aProofOfLock) - MOZ_REQUIRES(mDataSurfaceLock) { - if (NS_IsMainThread()) { - // The data can only be retrieved on the main thread. - if (!mDataSourceSurface) { - mDataSourceSurface = mCanvasChild->GetDataSurface( - mTextureOwnerId, mRecordedSurface, mDetached, mMayInvalidate); - } - } else { - // If data is going to be accessed on another thread, then copy the data - // if necessary before access. This avoids the main thread accidentally - // trying to invalidate the data surface while the other thread is still - // accessing it. - InvalidateDataSurface(aProofOfLock); + void EnsureDataSurfaceOnMainThread() { + // The data can only be retrieved on the main thread. + if (!mDataSourceSurface && NS_IsMainThread()) { + mDataSourceSurface = mCanvasChild->GetDataSurface( + mTextureOwnerId, mRecordedSurface, mDetached, mMayInvalidate); } } @@ -229,11 +207,9 @@ class SourceSurfaceCanvasRecording final : public gfx::SourceSurface { RefPtr mRecordedSurface; RefPtr mCanvasChild; RefPtr mRecorder; - Mutex mDataSurfaceLock{"SourceSurfaceCanvasRecording::mDataSurfaceLock"}; - RefPtr mDataSourceSurface - MOZ_GUARDED_BY(mDataSurfaceLock); - bool mMayInvalidate MOZ_GUARDED_BY(mDataSurfaceLock) = false; + RefPtr mDataSourceSurface; bool mDetached = false; + bool mMayInvalidate = false; ReferencePtr mExportID; }; @@ -703,7 +679,10 @@ void CanvasChild::DetachSurface(const RefPtr& aSurface, bool aInvalidate) { if (auto* surface = static_cast(aSurface.get())) { - surface->DetachSurface(aInvalidate); + surface->DetachSurface(); + if (aInvalidate) { + surface->InvalidateDataSurface(); + } } } diff --git a/icecat/gfx/layers/ipc/CanvasTranslator.cpp b/icecat/gfx/layers/ipc/CanvasTranslator.cpp index be7ee37b31..68b8336bcf 100644 --- a/icecat/gfx/layers/ipc/CanvasTranslator.cpp +++ b/icecat/gfx/layers/ipc/CanvasTranslator.cpp @@ -1587,36 +1587,11 @@ CanvasTranslator::MaybeRecycleDataSurfaceForSurfaceDescriptor( if (usedDescriptor.isSome() && usedDescriptor.ref() == aSurfaceDescriptor) { MOZ_ASSERT(usedSurf); MOZ_ASSERT(usedWrapper); + MOZ_ASSERT(aTextureHost->GetSize() == usedSurf->GetSize()); - auto* bufferTextureHost = aTextureHost->AsBufferTextureHost(); - if (bufferTextureHost) { - if (usedSurf->GetType() == gfx::SurfaceType::DATA_ALIGNED) { - // Buffer of DataSourceSurface is owned by DataSourceSurface - MOZ_ASSERT(aTextureHost->GetSize() == usedSurf->GetSize()); - if (aTextureHost->GetSize() == usedSurf->GetSize()) { - // Since the data is the same as before, the DataSourceSurfaceWrapper - // can be reused. - return do_AddRef(usedWrapper); - } else { - mUsedDataSurfaceForSurfaceDescriptor = nullptr; - mUsedWrapperForSurfaceDescriptor = nullptr; - mUsedSurfaceDescriptorForSurfaceDescriptor = Nothing(); - } - } else { - // Buffer of DataSourceSurface is owned by BufferTextureHost - if (bufferTextureHost->GetBuffer() && - bufferTextureHost->GetBuffer() == usedSurf->GetData() && - aTextureHost->GetSize() == usedSurf->GetSize() && - aTextureHost->GetFormat() == usedSurf->GetFormat()) { - // Since the data is the same as before, the DataSourceSurfaceWrapper - // can be reused. - return do_AddRef(usedWrapper); - } - mUsedDataSurfaceForSurfaceDescriptor = nullptr; - mUsedWrapperForSurfaceDescriptor = nullptr; - mUsedSurfaceDescriptorForSurfaceDescriptor = Nothing(); - } - } + // Since the data is the same as before, the DataSourceSurfaceWrapper can be + // reused. + return do_AddRef(usedWrapper); } usedWrapper = nullptr; diff --git a/icecat/gfx/layers/ipc/CompositableTransactionParent.cpp b/icecat/gfx/layers/ipc/CompositableTransactionParent.cpp index 7eb08e2c35..facd811298 100644 --- a/icecat/gfx/layers/ipc/CompositableTransactionParent.cpp +++ b/icecat/gfx/layers/ipc/CompositableTransactionParent.cpp @@ -19,7 +19,6 @@ #include "mozilla/Unused.h" #include "nsDebug.h" // for NS_WARNING, NS_ASSERTION #include "nsRegion.h" // for nsIntRegion -#include "nsTHashSet.h" namespace mozilla { namespace layers { @@ -127,21 +126,6 @@ void CompositableParentManager::DestroyActor(const OpDestroy& aOp) { } } -void CompositableParentManager::DestroyActors( - const nsTArray& aToDestroy) { - nsTHashSet seenTextureParents; - for (const auto& op : aToDestroy) { - if (op.type() == OpDestroy::TPTexture) { - PTextureParent* textureParent = op.get_PTexture().AsParent(); - if (!seenTextureParents.EnsureInserted(textureParent)) { - // Already destroyed this one in the current batch; skip. - continue; - } - } - DestroyActor(op); - } -} - RefPtr CompositableParentManager::AddCompositable( const CompositableHandle& aHandle, const TextureInfo& aInfo) { if (mCompositables.find(aHandle.Value()) != mCompositables.end()) { diff --git a/icecat/gfx/layers/ipc/CompositableTransactionParent.h b/icecat/gfx/layers/ipc/CompositableTransactionParent.h index c94d5b99aa..172c6bb035 100644 --- a/icecat/gfx/layers/ipc/CompositableTransactionParent.h +++ b/icecat/gfx/layers/ipc/CompositableTransactionParent.h @@ -28,8 +28,6 @@ class CompositableParentManager : public HostIPCAllocator { void DestroyActor(const OpDestroy& aOp); - void DestroyActors(const nsTArray& aToDestroy); - void UpdateFwdTransactionId(uint64_t aTransactionId) { MOZ_ASSERT(mFwdTransactionId < aTransactionId); mFwdTransactionId = aTransactionId; diff --git a/icecat/gfx/layers/ipc/CompositorBridgeChild.cpp b/icecat/gfx/layers/ipc/CompositorBridgeChild.cpp index a751c9aac1..90af9aebce 100644 --- a/icecat/gfx/layers/ipc/CompositorBridgeChild.cpp +++ b/icecat/gfx/layers/ipc/CompositorBridgeChild.cpp @@ -391,7 +391,7 @@ bool CompositorBridgeChild::SendStopFrameTimeRecording( PTextureChild* CompositorBridgeChild::AllocPTextureChild( const SurfaceDescriptor&, ReadLockDescriptor&, const LayersBackend&, - const TextureFlags&, const uint64_t& aSerial, + const TextureFlags&, const LayersId&, const uint64_t& aSerial, const wr::MaybeExternalImageId& aExternalImageId) { return TextureClient::CreateIPDLActor(); } @@ -513,11 +513,11 @@ PTextureChild* CompositorBridgeChild::CreateTexture( wr::MaybeExternalImageId& aExternalImageId) { PTextureChild* textureChild = AllocPTextureChild(aSharedData, aReadLock, aLayersBackend, aFlags, - aSerial, aExternalImageId); + LayersId{0} /* FIXME */, aSerial, aExternalImageId); - return SendPTextureConstructor(textureChild, aSharedData, - std::move(aReadLock), aLayersBackend, aFlags, - aSerial, aExternalImageId); + return SendPTextureConstructor( + textureChild, aSharedData, std::move(aReadLock), aLayersBackend, aFlags, + LayersId{0} /* FIXME? */, aSerial, aExternalImageId); } already_AddRefed CompositorBridgeChild::GetCanvasChild() { diff --git a/icecat/gfx/layers/ipc/CompositorBridgeChild.h b/icecat/gfx/layers/ipc/CompositorBridgeChild.h index 267c8fdec6..abc3df6fce 100644 --- a/icecat/gfx/layers/ipc/CompositorBridgeChild.h +++ b/icecat/gfx/layers/ipc/CompositorBridgeChild.h @@ -88,7 +88,7 @@ class CompositorBridgeChild final : public PCompositorBridgeChild, PTextureChild* AllocPTextureChild( const SurfaceDescriptor& aSharedData, ReadLockDescriptor& aReadLock, const LayersBackend& aLayersBackend, const TextureFlags& aFlags, - const uint64_t& aSerial, + const LayersId& aId, const uint64_t& aSerial, const wr::MaybeExternalImageId& aExternalImageId); bool DeallocPTextureChild(PTextureChild* actor); diff --git a/icecat/gfx/layers/ipc/CompositorBridgeParent.cpp b/icecat/gfx/layers/ipc/CompositorBridgeParent.cpp index fddfc3c764..baca0b8ba1 100644 --- a/icecat/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/icecat/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -1693,7 +1693,8 @@ CompositorBridgeParent::GetGeckoContentControllerForRoot( PTextureParent* CompositorBridgeParent::AllocPTextureParent( const SurfaceDescriptor& aSharedData, ReadLockDescriptor& aReadLock, const LayersBackend& aLayersBackend, const TextureFlags& aFlags, - const uint64_t& aSerial, const wr::MaybeExternalImageId& aExternalImageId) { + const LayersId& aId, const uint64_t& aSerial, + const wr::MaybeExternalImageId& aExternalImageId) { return TextureHost::CreateIPDLActor( this, aSharedData, std::move(aReadLock), aLayersBackend, aFlags, mCompositorManager->GetContentId(), aSerial, aExternalImageId); diff --git a/icecat/gfx/layers/ipc/CompositorBridgeParent.h b/icecat/gfx/layers/ipc/CompositorBridgeParent.h index 76f7432bb4..dcc26c4bed 100644 --- a/icecat/gfx/layers/ipc/CompositorBridgeParent.h +++ b/icecat/gfx/layers/ipc/CompositorBridgeParent.h @@ -161,7 +161,7 @@ class CompositorBridgeParentBase : public PCompositorBridgeParent, virtual PTextureParent* AllocPTextureParent( const SurfaceDescriptor& aSharedData, ReadLockDescriptor& aReadLock, const LayersBackend& aBackend, const TextureFlags& aTextureFlags, - const uint64_t& aSerial, + const LayersId& id, const uint64_t& aSerial, const MaybeExternalImageId& aExternalImageId) = 0; virtual bool DeallocPTextureParent(PTextureParent* aActor) = 0; @@ -316,7 +316,7 @@ class CompositorBridgeParent final : public CompositorBridgeParentBase, PTextureParent* AllocPTextureParent( const SurfaceDescriptor& aSharedData, ReadLockDescriptor& aReadLock, const LayersBackend& aLayersBackend, const TextureFlags& aFlags, - const uint64_t& aSerial, + const LayersId& aId, const uint64_t& aSerial, const wr::MaybeExternalImageId& aExternalImageId) override; bool DeallocPTextureParent(PTextureParent* actor) override; diff --git a/icecat/gfx/layers/ipc/CompositorThread.cpp b/icecat/gfx/layers/ipc/CompositorThread.cpp index 0c8c31d4af..78e7f3ad67 100644 --- a/icecat/gfx/layers/ipc/CompositorThread.cpp +++ b/icecat/gfx/layers/ipc/CompositorThread.cpp @@ -136,9 +136,7 @@ void CompositorThreadHolder::Shutdown() { ImageBridgeParent::Shutdown(); gfx::VRManagerParent::Shutdown(); - CompositorThread()->Dispatch( - NS_NewRunnableFunction("MediaSystemResourceService::Shutdown", - []() { MediaSystemResourceService::Shutdown(); })); + MediaSystemResourceService::Shutdown(); CompositorManagerParent::Shutdown(); gfx::gfxGradientCache::Shutdown(); diff --git a/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.cpp b/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.cpp index a1a99ff72b..7297306839 100644 --- a/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.cpp +++ b/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.cpp @@ -211,10 +211,6 @@ bool ContentCompositorBridgeParent::DeallocPWebRenderBridgeParent( mozilla::ipc::IPCResult ContentCompositorBridgeParent::RecvNotifyChildCreated( const LayersId& child, CompositorOptions* aOptions) { - if (NS_WARN_IF(!LayerTreeOwnerTracker::Get()->IsMapped(child, OtherPid()))) { - return IPC_OK(); - } - StaticMonitorAutoLock lock(CompositorBridgeParent::sIndirectLayerTreesLock); for (auto it = CompositorBridgeParent::sIndirectLayerTrees.begin(); it != CompositorBridgeParent::sIndirectLayerTrees.end(); it++) { @@ -385,7 +381,32 @@ ContentCompositorBridgeParent::~ContentCompositorBridgeParent() { PTextureParent* ContentCompositorBridgeParent::AllocPTextureParent( const SurfaceDescriptor& aSharedData, ReadLockDescriptor& aReadLock, const LayersBackend& aLayersBackend, const TextureFlags& aFlags, - const uint64_t& aSerial, const wr::MaybeExternalImageId& aExternalImageId) { + const LayersId& aId, const uint64_t& aSerial, + const wr::MaybeExternalImageId& aExternalImageId) { + CompositorBridgeParent::LayerTreeState* state = nullptr; + + StaticMonitorAutoLock lock(CompositorBridgeParent::sIndirectLayerTreesLock); + auto itr = CompositorBridgeParent::sIndirectLayerTrees.find(aId); + if (CompositorBridgeParent::sIndirectLayerTrees.end() != itr) { + state = &itr->second; + } + + TextureFlags flags = aFlags; + + LayersBackend actualBackend = LayersBackend::LAYERS_NONE; + if (!state) { + // The compositor was recreated, and we're receiving layers updates for a + // a layer manager that will soon be discarded or invalidated. We can't + // return null because this will mess up deserialization later and we'll + // kill the content process. Instead, we signal that the underlying + // TextureHost should not attempt to access the compositor. + flags |= TextureFlags::INVALID_COMPOSITOR; + } else if (actualBackend != LayersBackend::LAYERS_NONE && + aLayersBackend != actualBackend) { + gfxDevCrash(gfx::LogReason::PAllocTextureBackendMismatch) + << "Texture backend is wrong"; + } + return TextureHost::CreateIPDLActor( this, aSharedData, std::move(aReadLock), aLayersBackend, aFlags, mCompositorManager->GetContentId(), aSerial, aExternalImageId); diff --git a/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.h b/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.h index 427a105fc9..2425b33c7b 100644 --- a/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.h +++ b/icecat/gfx/layers/ipc/ContentCompositorBridgeParent.h @@ -122,7 +122,7 @@ class ContentCompositorBridgeParent final : public CompositorBridgeParentBase { PTextureParent* AllocPTextureParent( const SurfaceDescriptor& aSharedData, ReadLockDescriptor& aReadLock, const LayersBackend& aLayersBackend, const TextureFlags& aFlags, - const uint64_t& aSerial, + const LayersId& aId, const uint64_t& aSerial, const wr::MaybeExternalImageId& aExternalImageId) override; bool DeallocPTextureParent(PTextureParent* actor) override; diff --git a/icecat/gfx/layers/ipc/ISurfaceAllocator.cpp b/icecat/gfx/layers/ipc/ISurfaceAllocator.cpp index 29ba833074..e4ce2ce901 100644 --- a/icecat/gfx/layers/ipc/ISurfaceAllocator.cpp +++ b/icecat/gfx/layers/ipc/ISurfaceAllocator.cpp @@ -18,10 +18,6 @@ NS_IMPL_ISUPPORTS(GfxMemoryImageReporter, nsIMemoryReporter) mozilla::Atomic GfxMemoryImageReporter::sAmount(0); -RefPtr ISurfaceAllocator::GetTextureForwarder() { - return nullptr; -} - void HostIPCAllocator::SendPendingAsyncMessages() { if (mPendingAsyncMessage.empty()) { return; @@ -170,13 +166,10 @@ void FixedSizeSmallShmemSectionAllocator::FreeShmemSection( return; } - size_t headerSize = sizeof(ShmemSectionHeapAllocation); - MOZ_RELEASE_ASSERT(aShmemSection.offset() >= headerSize); - ShmemSectionHeapAllocation* allocHeader = reinterpret_cast( aShmemSection.shmem().get() + aShmemSection.offset() - - headerSize); + sizeof(ShmemSectionHeapAllocation)); MOZ_ASSERT(allocHeader->mSize == aShmemSection.size()); @@ -232,11 +225,7 @@ void FixedSizeSmallShmemSectionAllocator::ShrinkShmemSectionHeap() { } Maybe ShmemSection::FromUntrusted( - const UntrustedShmemSection& aUntrusted, size_t aMinimumSize) { - if (aUntrusted.size() < aMinimumSize) { - return Nothing(); - } - + const UntrustedShmemSection& aUntrusted) { ShmemSection section; if (!section.Init(aUntrusted.shmem(), aUntrusted.offset(), aUntrusted.size())) { diff --git a/icecat/gfx/layers/ipc/ISurfaceAllocator.h b/icecat/gfx/layers/ipc/ISurfaceAllocator.h index 62b1f994ae..cd79d1a8f0 100644 --- a/icecat/gfx/layers/ipc/ISurfaceAllocator.h +++ b/icecat/gfx/layers/ipc/ISurfaceAllocator.h @@ -76,7 +76,7 @@ class ISurfaceAllocator { virtual CompositableForwarder* AsCompositableForwarder() { return nullptr; } - virtual RefPtr GetTextureForwarder(); + virtual TextureForwarder* GetTextureForwarder() { return nullptr; } virtual ClientIPCAllocator* AsClientAllocator() { return nullptr; } @@ -157,7 +157,7 @@ class HostIPCAllocator : public ISurfaceAllocator { class ShmemSection { public: static Maybe FromUntrusted( - const UntrustedShmemSection& aUntrusted, size_t aMinSize); + const UntrustedShmemSection& aUntrusted); bool Init(const mozilla::ipc::Shmem& aShm, uint32_t offset, uint32_t size); UntrustedShmemSection AsUntrusted(); @@ -204,6 +204,14 @@ class LegacySurfaceDescriptorAllocator { bool IsSurfaceDescriptorValid(const SurfaceDescriptor& aSurface); +already_AddRefed GetSurfaceForDescriptor( + const SurfaceDescriptor& aDescriptor); + +uint8_t* GetAddressFromDescriptor(const SurfaceDescriptor& aDescriptor); + +void DestroySurfaceDescriptor(mozilla::ipc::IShmemAllocator* aAllocator, + SurfaceDescriptor* aSurface); + class GfxMemoryImageReporter final : public nsIMemoryReporter { ~GfxMemoryImageReporter() = default; diff --git a/icecat/gfx/layers/ipc/ImageBridgeChild.h b/icecat/gfx/layers/ipc/ImageBridgeChild.h index 1ea2d211d5..7cd126c11e 100644 --- a/icecat/gfx/layers/ipc/ImageBridgeChild.h +++ b/icecat/gfx/layers/ipc/ImageBridgeChild.h @@ -115,7 +115,7 @@ class ImageBridgeChild final : public PImageBridgeChild, public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(ImageBridgeChild, override); - RefPtr GetTextureForwarder() override { return this; } + TextureForwarder* GetTextureForwarder() override { return this; } LayersIPCActor* GetLayersIPCActor() override { return this; } /** diff --git a/icecat/gfx/layers/ipc/ImageBridgeParent.cpp b/icecat/gfx/layers/ipc/ImageBridgeParent.cpp index bef7a2ab8b..2e6d02a88e 100644 --- a/icecat/gfx/layers/ipc/ImageBridgeParent.cpp +++ b/icecat/gfx/layers/ipc/ImageBridgeParent.cpp @@ -181,7 +181,9 @@ class MOZ_STACK_CLASS AutoImageBridgeParentAsyncMessageSender final { ~AutoImageBridgeParentAsyncMessageSender() { mImageBridge->SendPendingAsyncMessages(); if (mToDestroy) { - mImageBridge->DestroyActors(*mToDestroy); + for (const auto& op : *mToDestroy) { + mImageBridge->DestroyActor(op); + } } } @@ -304,12 +306,6 @@ PTextureParent* ImageBridgeParent::AllocPTextureParent( const SurfaceDescriptor& aSharedData, ReadLockDescriptor& aReadLock, const LayersBackend& aLayersBackend, const TextureFlags& aFlags, const uint64_t& aSerial, const wr::MaybeExternalImageId& aExternalImageId) { - if (aExternalImageId.isSome()) { - uint32_t ns = static_cast(wr::AsUint64(*aExternalImageId) >> 32); - if (ns == 0) { - return nullptr; - } - } return TextureHost::CreateIPDLActor(this, aSharedData, std::move(aReadLock), aLayersBackend, aFlags, mContentId, aSerial, aExternalImageId); diff --git a/icecat/gfx/layers/ipc/KnowsCompositor.cpp b/icecat/gfx/layers/ipc/KnowsCompositor.cpp index 4789b1c88c..8099c4de88 100644 --- a/icecat/gfx/layers/ipc/KnowsCompositor.cpp +++ b/icecat/gfx/layers/ipc/KnowsCompositor.cpp @@ -5,6 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "KnowsCompositor.h" +#include "mozilla/layers/ImageDataSerializer.h" #include "mozilla/layers/ImageBridgeChild.h" #include "mozilla/ipc/ProtocolUtils.h" @@ -37,7 +38,7 @@ KnowsCompositorMediaProxy::KnowsCompositorMediaProxy( KnowsCompositorMediaProxy::~KnowsCompositorMediaProxy() = default; -RefPtr KnowsCompositorMediaProxy::GetTextureForwarder() { +TextureForwarder* KnowsCompositorMediaProxy::GetTextureForwarder() { return mThreadSafeAllocator->GetTextureForwarder(); } @@ -55,4 +56,53 @@ bool IsSurfaceDescriptorValid(const SurfaceDescriptor& aSurface) { aSurface.type() != SurfaceDescriptor::Tnull_t; } +uint8_t* GetAddressFromDescriptor(const SurfaceDescriptor& aDescriptor) { + MOZ_ASSERT(IsSurfaceDescriptorValid(aDescriptor)); + MOZ_RELEASE_ASSERT( + aDescriptor.type() == SurfaceDescriptor::TSurfaceDescriptorBuffer, + "GFX: surface descriptor is not the right type."); + + auto memOrShmem = aDescriptor.get_SurfaceDescriptorBuffer().data(); + if (memOrShmem.type() == MemoryOrShmem::TShmem) { + return memOrShmem.get_Shmem().get(); + } else { + return reinterpret_cast(memOrShmem.get_uintptr_t()); + } +} + +already_AddRefed GetSurfaceForDescriptor( + const SurfaceDescriptor& aDescriptor) { + if (aDescriptor.type() != SurfaceDescriptor::TSurfaceDescriptorBuffer) { + return nullptr; + } + uint8_t* data = GetAddressFromDescriptor(aDescriptor); + auto rgb = + aDescriptor.get_SurfaceDescriptorBuffer().desc().get_RGBDescriptor(); + uint32_t stride = ImageDataSerializer::GetRGBStride(rgb); + return gfx::Factory::CreateWrappingDataSourceSurface(data, stride, rgb.size(), + rgb.format()); +} + +void DestroySurfaceDescriptor(ipc::IShmemAllocator* aAllocator, + SurfaceDescriptor* aSurface) { + MOZ_ASSERT(aSurface); + + SurfaceDescriptorBuffer& desc = aSurface->get_SurfaceDescriptorBuffer(); + switch (desc.data().type()) { + case MemoryOrShmem::TShmem: { + aAllocator->DeallocShmem(desc.data().get_Shmem()); + break; + } + case MemoryOrShmem::Tuintptr_t: { + uint8_t* ptr = (uint8_t*)desc.data().get_uintptr_t(); + GfxMemoryImageReporter::WillFree(ptr); + delete[] ptr; + break; + } + default: + MOZ_CRASH("surface type not implemented!"); + } + *aSurface = SurfaceDescriptor(); +} + } // namespace mozilla::layers diff --git a/icecat/gfx/layers/ipc/KnowsCompositor.h b/icecat/gfx/layers/ipc/KnowsCompositor.h index 51032241fd..2f79a3c171 100644 --- a/icecat/gfx/layers/ipc/KnowsCompositor.h +++ b/icecat/gfx/layers/ipc/KnowsCompositor.h @@ -183,7 +183,7 @@ class KnowsCompositor { /** * Helpers for finding other related interface. These are infallible. */ - virtual RefPtr GetTextureForwarder() = 0; + virtual TextureForwarder* GetTextureForwarder() = 0; virtual LayersIPCActor* GetLayersIPCActor() = 0; protected: @@ -215,7 +215,7 @@ class KnowsCompositorMediaProxy : public KnowsCompositor { explicit KnowsCompositorMediaProxy( const TextureFactoryIdentifier& aIdentifier); - RefPtr GetTextureForwarder() override; + TextureForwarder* GetTextureForwarder() override; LayersIPCActor* GetLayersIPCActor() override; diff --git a/icecat/gfx/layers/ipc/PCompositorBridge.ipdl b/icecat/gfx/layers/ipc/PCompositorBridge.ipdl index fa058d13f1..15573c50ca 100644 --- a/icecat/gfx/layers/ipc/PCompositorBridge.ipdl +++ b/icecat/gfx/layers/ipc/PCompositorBridge.ipdl @@ -185,7 +185,7 @@ parent: sync StopFrameTimeRecording(uint32_t startIndex) returns (float[] intervals); - async PTexture(SurfaceDescriptor aSharedData, ReadLockDescriptor aReadLock, LayersBackend aBackend, TextureFlags aTextureFlags, uint64_t aSerial, MaybeExternalImageId aExternalImageId); + async PTexture(SurfaceDescriptor aSharedData, ReadLockDescriptor aReadLock, LayersBackend aBackend, TextureFlags aTextureFlags, LayersId id, uint64_t aSerial, MaybeExternalImageId aExternalImageId); sync SyncWithCompositor(); diff --git a/icecat/gfx/layers/ipc/PWebRenderBridge.ipdl b/icecat/gfx/layers/ipc/PWebRenderBridge.ipdl index 44c4658742..5efcf21b35 100644 --- a/icecat/gfx/layers/ipc/PWebRenderBridge.ipdl +++ b/icecat/gfx/layers/ipc/PWebRenderBridge.ipdl @@ -79,7 +79,7 @@ parent: // Start capturing each frame to disk. See // nsIDOMWindowUtils::wrStartCaptureSequence for documentation. - async StartCaptureSequence(uint32_t aFlags); + async StartCaptureSequence(nsCString aPath, uint32_t aFlags); // Stop the captures started by StartCaptureSequence. See // nsIDOMWindowUtils::wrStopCaptureSequence for documentation. diff --git a/icecat/gfx/layers/ipc/RemoteContentController.cpp b/icecat/gfx/layers/ipc/RemoteContentController.cpp index 2b3696d37b..f2accf428d 100644 --- a/icecat/gfx/layers/ipc/RemoteContentController.cpp +++ b/icecat/gfx/layers/ipc/RemoteContentController.cpp @@ -71,9 +71,7 @@ void RemoteContentController::HandleTapOnParentProcessMainThread( ("HandleTapOnMainThread(%d)", (int)aTapType)); MOZ_ASSERT(NS_IsMainThread()); - // Hold strong reference to BrowserParent because SendHandleTap - // can run script via SetFocus. - RefPtr tab = + dom::BrowserParent* tab = dom::BrowserParent::GetBrowserParentFromLayersId(aGuid.mLayersId); if (tab) { tab->SendHandleTap(aTapType, aPoint, aModifiers, aGuid, aInputBlockId, diff --git a/icecat/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp b/icecat/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp index e17e62b888..c4b361b153 100644 --- a/icecat/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp +++ b/icecat/gfx/layers/ipc/SharedPlanarYCbCrImage.cpp @@ -170,8 +170,7 @@ nsresult SharedPlanarYCbCrImage::CreateEmptyBuffer( // will try to manage this memory without knowing it belongs to a // shmem. mBufferSize = ImageDataSerializer::ComputeYCbCrBufferSize( - mData.mPictureRect, aYSize, mData.mYStride, aCbCrSize, mData.mCbCrStride, - mData.mColorDepth, mData.mChromaSubsampling); + aYSize, mData.mYStride, aCbCrSize, mData.mCbCrStride); mSize = mData.mPictureRect.Size(); mOrigin = mData.mPictureRect.TopLeft(); diff --git a/icecat/gfx/layers/ipc/SharedSurfacesParent.cpp b/icecat/gfx/layers/ipc/SharedSurfacesParent.cpp index 07c84d665e..0a6d851f4a 100644 --- a/icecat/gfx/layers/ipc/SharedSurfacesParent.cpp +++ b/icecat/gfx/layers/ipc/SharedSurfacesParent.cpp @@ -238,11 +238,6 @@ void SharedSurfacesParent::Add(const wr::ExternalImageId& aId, MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread()); MOZ_ASSERT(aPid != base::GetCurrentProcId()); - if (aDesc.format() != SurfaceFormat::B8G8R8X8 && - aDesc.format() != SurfaceFormat::B8G8R8A8) { - return; - } - RefPtr surface = new SourceSurfaceSharedDataWrapper(); diff --git a/icecat/gfx/layers/ipc/VideoBridgeChild.cpp b/icecat/gfx/layers/ipc/VideoBridgeChild.cpp index f96f48921c..d5e47a1334 100644 --- a/icecat/gfx/layers/ipc/VideoBridgeChild.cpp +++ b/icecat/gfx/layers/ipc/VideoBridgeChild.cpp @@ -59,7 +59,7 @@ VideoBridgeChild::VideoBridgeChild() VideoBridgeChild::~VideoBridgeChild() = default; -RefPtr VideoBridgeChild::GetSingleton() { +VideoBridgeChild* VideoBridgeChild::GetSingleton() { StaticMutexAutoLock lock(sVideoBridgeLock); return sVideoBridge; } diff --git a/icecat/gfx/layers/ipc/VideoBridgeChild.h b/icecat/gfx/layers/ipc/VideoBridgeChild.h index 324817e9a0..b72289e4b6 100644 --- a/icecat/gfx/layers/ipc/VideoBridgeChild.h +++ b/icecat/gfx/layers/ipc/VideoBridgeChild.h @@ -25,7 +25,7 @@ class VideoBridgeChild final : public PVideoBridgeChild, static void StartupForGPUProcess(); static void Shutdown(); - static RefPtr GetSingleton(); + static VideoBridgeChild* GetSingleton(); // PVideoBridgeChild PTextureChild* AllocPTextureChild(const SurfaceDescriptor& aSharedData, diff --git a/icecat/gfx/layers/ipc/VideoBridgeParent.cpp b/icecat/gfx/layers/ipc/VideoBridgeParent.cpp index 369cd92c7c..ff35f66aea 100644 --- a/icecat/gfx/layers/ipc/VideoBridgeParent.cpp +++ b/icecat/gfx/layers/ipc/VideoBridgeParent.cpp @@ -99,16 +99,16 @@ already_AddRefed VideoBridgeParent::LookupTextureAsync( MOZ_ASSERT(mCompositorThreadHolder->IsInThread()); - const auto i = mTextureMap.find(aSerial); - if (NS_WARN_IF(i == mTextureMap.end())) { + auto* actor = mTextureMap[aSerial]; + if (NS_WARN_IF(!actor)) { return nullptr; } - if (NS_WARN_IF(aContentId != i->second.mContentId)) { + if (NS_WARN_IF(aContentId != TextureHost::GetTextureContentId(actor))) { return nullptr; } - return do_AddRef(i->second.mTextureHost); + return do_AddRef(TextureHost::AsTextureHost(actor)); } already_AddRefed VideoBridgeParent::LookupTexture( @@ -120,12 +120,12 @@ already_AddRefed VideoBridgeParent::LookupTexture( return nullptr; } - auto i = mTextureMap.find(aSerial); - if (i != mTextureMap.end()) { - if (NS_WARN_IF(aContentId != i->second.mContentId)) { + auto* actor = mTextureMap[aSerial]; + if (actor) { + if (NS_WARN_IF(aContentId != TextureHost::GetTextureContentId(actor))) { return nullptr; } - return do_AddRef(i->second.mTextureHost); + return do_AddRef(TextureHost::AsTextureHost(actor)); } // We cannot block on the Compositor thread because that is the thread we get @@ -166,16 +166,16 @@ already_AddRefed VideoBridgeParent::LookupTexture( lock.Wait(); } - i = mTextureMap.find(aSerial); - if (NS_WARN_IF(i == mTextureMap.end())) { + actor = mTextureMap[aSerial]; + if (!actor) { return nullptr; } - if (NS_WARN_IF(aContentId != i->second.mContentId)) { + if (NS_WARN_IF(aContentId != TextureHost::GetTextureContentId(actor))) { return nullptr; } - return do_AddRef(i->second.mTextureHost); + return do_AddRef(TextureHost::AsTextureHost(actor)); } void VideoBridgeParent::ActorDestroy(ActorDestroyReason aWhy) { @@ -259,21 +259,13 @@ PTextureParent* VideoBridgeParent::AllocPTextureParent( } MonitorAutoLock lock(mMonitor); - mTextureMap.insert( - {aSerial, {TextureHost::AsTextureHost(parent), aContentId}}); + mTextureMap[aSerial] = parent; return parent; } bool VideoBridgeParent::DeallocPTextureParent(PTextureParent* actor) { - RefPtr textureHost; - { - MonitorAutoLock lock(mMonitor); - auto i = mTextureMap.find(TextureHost::GetTextureSerial(actor)); - if (i != mTextureMap.end()) { - textureHost = std::move(i->second.mTextureHost); - mTextureMap.erase(i); - } - } + MonitorAutoLock lock(mMonitor); + mTextureMap.erase(TextureHost::GetTextureSerial(actor)); return TextureHost::DestroyIPDLActor(actor); } diff --git a/icecat/gfx/layers/ipc/VideoBridgeParent.h b/icecat/gfx/layers/ipc/VideoBridgeParent.h index 633725b805..e7d973287e 100644 --- a/icecat/gfx/layers/ipc/VideoBridgeParent.h +++ b/icecat/gfx/layers/ipc/VideoBridgeParent.h @@ -74,15 +74,10 @@ class VideoBridgeParent final : public PVideoBridgeParent, void DoUnregisterExternalImages(); - struct TextureHolder { - RefPtr mTextureHost; - dom::ContentParentId mContentId; - }; - Monitor mMonitor; RefPtr mCompositorThreadHolder MOZ_GUARDED_BY(mMonitor); - std::map mTextureMap MOZ_GUARDED_BY(mMonitor); + std::map mTextureMap MOZ_GUARDED_BY(mMonitor); bool mClosed; }; diff --git a/icecat/gfx/layers/opengl/DMABUFTextureHostOGL.cpp b/icecat/gfx/layers/opengl/DMABUFTextureHostOGL.cpp index 0d41b2c045..bd6dbd7eca 100644 --- a/icecat/gfx/layers/opengl/DMABUFTextureHostOGL.cpp +++ b/icecat/gfx/layers/opengl/DMABUFTextureHostOGL.cpp @@ -94,10 +94,7 @@ void DMABUFTextureHostOGL::PushResourceUpdates( case gfx::SurfaceFormat::R8G8B8A8: case gfx::SurfaceFormat::B8G8R8X8: case gfx::SurfaceFormat::B8G8R8A8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); // XXX Add RGBA handling. Temporary hack to avoid crash // With BGRA format setting, rendering works without problem. wr::ImageDescriptor descriptor(GetSize(), mSurface->GetFormat()); @@ -106,10 +103,8 @@ void DMABUFTextureHostOGL::PushResourceUpdates( break; } case gfx::SurfaceFormat::NV12: { - if (aImageKeys.length() != 2 || mSurface->GetTextureCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetTextureCount() == 2); wr::ImageDescriptor descriptor0( gfx::IntSize(mSurface->GetWidth(0), mSurface->GetHeight(0)), gfx::SurfaceFormat::A8); @@ -123,10 +118,8 @@ void DMABUFTextureHostOGL::PushResourceUpdates( break; } case gfx::SurfaceFormat::YUV420: { - if (aImageKeys.length() != 3 || mSurface->GetTextureCount() != 3) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 3); + MOZ_ASSERT(mSurface->GetTextureCount() == 3); wr::ImageDescriptor descriptor0( gfx::IntSize(mSurface->GetWidth(0), mSurface->GetHeight(0)), gfx::SurfaceFormat::A8); @@ -142,10 +135,8 @@ void DMABUFTextureHostOGL::PushResourceUpdates( break; } case gfx::SurfaceFormat::P010: { - if (aImageKeys.length() != 2 || mSurface->GetTextureCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetTextureCount() == 2); wr::ImageDescriptor descriptor0( gfx::IntSize(mSurface->GetWidth(0), mSurface->GetHeight(0)), gfx::SurfaceFormat::A16); @@ -159,10 +150,8 @@ void DMABUFTextureHostOGL::PushResourceUpdates( break; } case gfx::SurfaceFormat::NV16: { - if (aImageKeys.length() != 2 || mSurface->GetTextureCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetTextureCount() == 2); wr::ImageDescriptor descriptor0( gfx::IntSize(mSurface->GetWidth(0), mSurface->GetHeight(0)), gfx::SurfaceFormat::A16); @@ -196,10 +185,7 @@ void DMABUFTextureHostOGL::PushDisplayItems( case gfx::SurfaceFormat::R8G8B8A8: case gfx::SurfaceFormat::B8G8R8A8: case gfx::SurfaceFormat::B8G8R8X8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); aBuilder.PushImage(aBounds, aClip, true, false, aFilter, aImageKeys[0], !(mFlags & TextureFlags::NON_PREMULTIPLIED), wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f}, @@ -208,10 +194,8 @@ void DMABUFTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::NV12: { - if (aImageKeys.length() != 2 || mSurface->GetTextureCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetTextureCount() == 2); // Those images can only be generated at present by the VAAPI H264 decoder // which only supports 8 bits color depth. aBuilder.PushNV12Image( @@ -222,10 +206,8 @@ void DMABUFTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::YUV420: { - if (aImageKeys.length() != 3 || mSurface->GetTextureCount() != 3) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 3); + MOZ_ASSERT(mSurface->GetTextureCount() == 3); // Those images can only be generated at present by the VAAPI vp8 decoder // which only supports 8 bits color depth. aBuilder.PushYCbCrPlanarImage( @@ -236,10 +218,8 @@ void DMABUFTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::P010: { - if (aImageKeys.length() != 2 || mSurface->GetTextureCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetTextureCount() == 2); aBuilder.PushP010Image( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], wr::ColorDepth::Color10, wr::ToWrYuvColorSpace(GetYUVColorSpace()), @@ -248,10 +228,8 @@ void DMABUFTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::NV16: { - if (aImageKeys.length() != 2 || mSurface->GetTextureCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetTextureCount() == 2); aBuilder.PushNV16Image( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], wr::ColorDepth::Color10, wr::ToWrYuvColorSpace(GetYUVColorSpace()), diff --git a/icecat/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp b/icecat/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp index 0150e77296..7d53ded551 100644 --- a/icecat/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp +++ b/icecat/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp @@ -124,10 +124,8 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates( switch (GetFormat()) { case gfx::SurfaceFormat::B8G8R8A8: case gfx::SurfaceFormat::B8G8R8X8: { - if (aImageKeys.length() != 1 || mSurface->GetPlaneCount() != 0) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); + MOZ_ASSERT(mSurface->GetPlaneCount() == 0); // The internal pixel format of MacIOSurface is always BGRX or BGRA // format. auto format = GetFormat() == gfx::SurfaceFormat::B8G8R8A8 @@ -143,20 +141,16 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates( // converted RGB interleaving data or a YCbCr interleaving data depending // on the different platform setting. (e.g. It will be RGB at OpenGL 2.1 // and YCbCr at OpenGL 3.1) - if (aImageKeys.length() != 1 || mSurface->GetPlaneCount() != 0) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); + MOZ_ASSERT(mSurface->GetPlaneCount() == 0); wr::ImageDescriptor descriptor(GetSize(), gfx::SurfaceFormat::B8G8R8X8); (aResources.*method)(aImageKeys[0], descriptor, aExtID, imageType, 0, /* aNormalizedUvs */ false); break; } case gfx::SurfaceFormat::NV12: { - if (aImageKeys.length() != 2 || mSurface->GetPlaneCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetPlaneCount() == 2); wr::ImageDescriptor descriptor0( gfx::IntSize(mSurface->GetDevicePixelWidth(0), mSurface->GetDevicePixelHeight(0)), @@ -172,10 +166,8 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates( break; } case gfx::SurfaceFormat::P010: { - if (aImageKeys.length() != 2 || mSurface->GetPlaneCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetPlaneCount() == 2); wr::ImageDescriptor descriptor0( gfx::IntSize(mSurface->GetDevicePixelWidth(0), mSurface->GetDevicePixelHeight(0)), @@ -191,10 +183,8 @@ void MacIOSurfaceTextureHostOGL::PushResourceUpdates( break; } case gfx::SurfaceFormat::NV16: { - if (aImageKeys.length() != 2 || mSurface->GetPlaneCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetPlaneCount() == 2); wr::ImageDescriptor descriptor0( gfx::IntSize(mSurface->GetDevicePixelWidth(0), mSurface->GetDevicePixelHeight(0)), @@ -224,10 +214,8 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems( switch (GetFormat()) { case gfx::SurfaceFormat::B8G8R8A8: case gfx::SurfaceFormat::B8G8R8X8: { - if (aImageKeys.length() != 1 || mSurface->GetPlaneCount() != 0) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); + MOZ_ASSERT(mSurface->GetPlaneCount() == 0); // We disable external compositing for RGB surfaces for now until // we've tested support more thoroughly. Bug 1667917. aBuilder.PushImage(aBounds, aClip, true, false, aFilter, aImageKeys[0], @@ -238,10 +226,8 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::YUY2: { - if (aImageKeys.length() != 1 || mSurface->GetPlaneCount() != 0) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); + MOZ_ASSERT(mSurface->GetPlaneCount() == 0); // Those images can only be generated at present by the Apple H264 decoder // which only supports 8 bits color depth. aBuilder.PushYCbCrInterleavedImage( @@ -252,10 +238,8 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::NV12: { - if (aImageKeys.length() != 2 || mSurface->GetPlaneCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetPlaneCount() == 2); aBuilder.PushNV12Image( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], wr::ColorDepth::Color8, wr::ToWrYuvColorSpace(GetYUVColorSpace()), @@ -264,10 +248,8 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::P010: { - if (aImageKeys.length() != 2 || mSurface->GetPlaneCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetPlaneCount() == 2); aBuilder.PushP010Image( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], wr::ColorDepth::Color10, wr::ToWrYuvColorSpace(GetYUVColorSpace()), @@ -276,10 +258,8 @@ void MacIOSurfaceTextureHostOGL::PushDisplayItems( break; } case gfx::SurfaceFormat::NV16: { - if (aImageKeys.length() != 2 || mSurface->GetPlaneCount() != 2) { - MOZ_ASSERT_UNREACHABLE("unexpected key length or plane count"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetPlaneCount() == 2); aBuilder.PushNV16Image( aBounds, aClip, true, aImageKeys[0], aImageKeys[1], wr::ColorDepth::Color10, wr::ToWrYuvColorSpace(GetYUVColorSpace()), diff --git a/icecat/gfx/layers/opengl/TextureHostOGL.cpp b/icecat/gfx/layers/opengl/TextureHostOGL.cpp index 32e8dbfad1..3b1adef141 100644 --- a/icecat/gfx/layers/opengl/TextureHostOGL.cpp +++ b/icecat/gfx/layers/opengl/TextureHostOGL.cpp @@ -81,11 +81,6 @@ already_AddRefed CreateTextureHostOGL( #endif case SurfaceDescriptor::TEGLImageDescriptor: { - if (aDeallocator && !aDeallocator->IsSameProcess()) { - gfxCriticalError() - << "EGLImageDescriptor must only be used in same process"; - return nullptr; - } const EGLImageDescriptor& desc = aDesc.get_EGLImageDescriptor(); result = new EGLImageTextureHost(aFlags, (EGLImage)desc.image(), (EGLSync)desc.fence(), desc.size(), @@ -114,11 +109,6 @@ already_AddRefed CreateTextureHostOGL( #endif case SurfaceDescriptor::TSurfaceDescriptorSharedGLTexture: { - if (aDeallocator && !aDeallocator->IsSameProcess()) { - gfxCriticalError() << "SurfaceDescriptorSharedGLTexture must only be " - "used in same process"; - return nullptr; - } const auto& desc = aDesc.get_SurfaceDescriptorSharedGLTexture(); result = new GLTextureHost(aFlags, desc.texture(), desc.target(), @@ -593,10 +583,7 @@ void SurfaceTextureHost::PushResourceUpdates( switch (GetFormat()) { case gfx::SurfaceFormat::R8G8B8X8: case gfx::SurfaceFormat::R8G8B8A8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); // XXX Add RGBA handling. Temporary hack to avoid crash // With BGRA format setting, rendering works without problem. @@ -630,10 +617,7 @@ void SurfaceTextureHost::PushDisplayItems(wr::DisplayListBuilder& aBuilder, case gfx::SurfaceFormat::R8G8B8A8: case gfx::SurfaceFormat::B8G8R8A8: case gfx::SurfaceFormat::B8G8R8X8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); aBuilder.PushImage(aBounds, aClip, true, false, aFilter, aImageKeys[0], !(mFlags & TextureFlags::NON_PREMULTIPLIED), wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f}, @@ -891,10 +875,7 @@ void AndroidHardwareBufferTextureHost::PushResourceUpdates( switch (GetFormat()) { case gfx::SurfaceFormat::R8G8B8X8: case gfx::SurfaceFormat::R8G8B8A8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); // XXX Add RGBA handling. Temporary hack to avoid crash // With BGRA format setting, rendering works without problem. @@ -926,10 +907,7 @@ void AndroidHardwareBufferTextureHost::PushDisplayItems( case gfx::SurfaceFormat::R8G8B8A8: case gfx::SurfaceFormat::B8G8R8A8: case gfx::SurfaceFormat::B8G8R8X8: { - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); aBuilder.PushImage(aBounds, aClip, true, false, aFilter, aImageKeys[0], !(mFlags & TextureFlags::NON_PREMULTIPLIED), wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f}, @@ -1055,11 +1033,7 @@ void EGLImageTextureHost::PushResourceUpdates( gfx::SurfaceFormat format = GetFormat(); - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); - return; - } - + MOZ_ASSERT(aImageKeys.length() == 1); // XXX Add RGBA handling. Temporary hack to avoid crash // With BGRA format setting, rendering works without problem. auto formatTmp = format == gfx::SurfaceFormat::R8G8B8A8 @@ -1079,10 +1053,7 @@ void EGLImageTextureHost::PushDisplayItems( bool supportsExternalCompositing = SupportsExternalCompositing(aBuilder.GetBackendType()); - if (aImageKeys.length() != 1) { - MOZ_ASSERT_UNREACHABLE("unexpected key length"); - return; - } + MOZ_ASSERT(aImageKeys.length() == 1); aBuilder.PushImage(aBounds, aClip, true, false, aFilter, aImageKeys[0], !(mFlags & TextureFlags::NON_PREMULTIPLIED), wr::ColorF{1.0f, 1.0f, 1.0f, 1.0f}, diff --git a/icecat/gfx/layers/wr/AsyncImagePipelineOp.cpp b/icecat/gfx/layers/wr/AsyncImagePipelineOp.cpp index 0c8a3c41f4..cf84b38531 100644 --- a/icecat/gfx/layers/wr/AsyncImagePipelineOp.cpp +++ b/icecat/gfx/layers/wr/AsyncImagePipelineOp.cpp @@ -11,32 +11,6 @@ namespace mozilla { namespace layers { -AsyncImagePipelineOp::AsyncImagePipelineOp( - Tag aTag, AsyncImagePipelineManager* aAsyncImageManager, - const wr::PipelineId& aPipelineId, TextureHost* aTextureHost) - : mTag(aTag), - mAsyncImageManager(aAsyncImageManager), - mPipelineId(aPipelineId), - mTextureHost(aTextureHost) { - MOZ_ASSERT(mTag == Tag::ApplyAsyncImageForPipeline); -} - -AsyncImagePipelineOp::AsyncImagePipelineOp( - Tag aTag, AsyncImagePipelineManager* aAsyncImageManager, - const wr::PipelineId& aPipelineId) - : mTag(aTag), - mAsyncImageManager(aAsyncImageManager), - mPipelineId(aPipelineId) { - MOZ_ASSERT(mTag == Tag::RemoveAsyncImagePipeline); -} - -AsyncImagePipelineOp::~AsyncImagePipelineOp() = default; -AsyncImagePipelineOp::AsyncImagePipelineOp(AsyncImagePipelineOp&&) = default; -AsyncImagePipelineOp::AsyncImagePipelineOp(const AsyncImagePipelineOp&) = - default; - -AsyncImagePipelineOps::~AsyncImagePipelineOps() = default; - void AsyncImagePipelineOps::HandleOps(wr::TransactionBuilder& aTxn) { MOZ_ASSERT(!mList.empty()); @@ -44,7 +18,7 @@ void AsyncImagePipelineOps::HandleOps(wr::TransactionBuilder& aTxn) { auto& frontOp = mList.front(); switch (frontOp.mTag) { case AsyncImagePipelineOp::Tag::ApplyAsyncImageForPipeline: { - AsyncImagePipelineManager* manager = frontOp.mAsyncImageManager.get(); + auto* manager = frontOp.mAsyncImageManager; const auto& pipelineId = frontOp.mPipelineId; const auto& textureHost = frontOp.mTextureHost; @@ -52,7 +26,7 @@ void AsyncImagePipelineOps::HandleOps(wr::TransactionBuilder& aTxn) { break; } case AsyncImagePipelineOp::Tag::RemoveAsyncImagePipeline: { - AsyncImagePipelineManager* manager = frontOp.mAsyncImageManager.get(); + auto* manager = frontOp.mAsyncImageManager; const auto& pipelineId = frontOp.mPipelineId; manager->RemoveAsyncImagePipeline(pipelineId, /* aPendingOps */ nullptr, aTxn); diff --git a/icecat/gfx/layers/wr/AsyncImagePipelineOp.h b/icecat/gfx/layers/wr/AsyncImagePipelineOp.h index bdef101ce3..664e431c0d 100644 --- a/icecat/gfx/layers/wr/AsyncImagePipelineOp.h +++ b/icecat/gfx/layers/wr/AsyncImagePipelineOp.h @@ -10,7 +10,6 @@ #include #include "mozilla/layers/TextureHost.h" -#include "mozilla/RefPtr.h" #include "mozilla/webrender/webrender_ffi.h" #include "Units.h" @@ -34,26 +33,30 @@ class AsyncImagePipelineOp { const Tag mTag; - // Hold a strong reference: queued ops can outlive their owning - // WebRenderBridgeParent and be processed after StopAndClearResources frees - // the manager via a deferred remote-texture callback. - const RefPtr mAsyncImageManager; + AsyncImagePipelineManager* const mAsyncImageManager; const wr::PipelineId mPipelineId; const CompositableTextureHostRef mTextureHost; - // Out-of-line so callers don't need the full AsyncImagePipelineManager type - // to instantiate ~RefPtr. - ~AsyncImagePipelineOp(); - AsyncImagePipelineOp(AsyncImagePipelineOp&&); - AsyncImagePipelineOp(const AsyncImagePipelineOp&); - private: - AsyncImagePipelineOp(Tag aTag, AsyncImagePipelineManager* aAsyncImageManager, + AsyncImagePipelineOp(const Tag aTag, + AsyncImagePipelineManager* aAsyncImageManager, const wr::PipelineId& aPipelineId, - TextureHost* aTextureHost); + TextureHost* aTextureHost) + : mTag(aTag), + mAsyncImageManager(aAsyncImageManager), + mPipelineId(aPipelineId), + mTextureHost(aTextureHost) { + MOZ_ASSERT(mTag == Tag::ApplyAsyncImageForPipeline); + } - AsyncImagePipelineOp(Tag aTag, AsyncImagePipelineManager* aAsyncImageManager, - const wr::PipelineId& aPipelineId); + AsyncImagePipelineOp(const Tag aTag, + AsyncImagePipelineManager* aAsyncImageManager, + const wr::PipelineId& aPipelineId) + : mTag(aTag), + mAsyncImageManager(aAsyncImageManager), + mPipelineId(aPipelineId) { + MOZ_ASSERT(mTag == Tag::RemoveAsyncImagePipeline); + } public: static AsyncImagePipelineOp ApplyAsyncImageForPipeline( @@ -74,9 +77,6 @@ class AsyncImagePipelineOp { struct AsyncImagePipelineOps { explicit AsyncImagePipelineOps(wr::Transaction* aTransaction) : mTransaction(aTransaction) {} - // Out-of-line so callers don't need the full AsyncImagePipelineManager type - // to instantiate ~RefPtr for queued ops. - ~AsyncImagePipelineOps(); void HandleOps(wr::TransactionBuilder& aTxn); diff --git a/icecat/gfx/layers/wr/WebRenderBridgeChild.cpp b/icecat/gfx/layers/wr/WebRenderBridgeChild.cpp index fc207ebe04..7ced5b7a5b 100644 --- a/icecat/gfx/layers/wr/WebRenderBridgeChild.cpp +++ b/icecat/gfx/layers/wr/WebRenderBridgeChild.cpp @@ -341,7 +341,7 @@ CompositorBridgeChild* WebRenderBridgeChild::GetCompositorBridgeChild() { return static_cast(Manager()); } -RefPtr WebRenderBridgeChild::GetTextureForwarder() { +TextureForwarder* WebRenderBridgeChild::GetTextureForwarder() { return static_cast(GetCompositorBridgeChild()); } @@ -575,8 +575,9 @@ void WebRenderBridgeChild::DeallocResourceShmem(RefCountedShmem& aShm) { void WebRenderBridgeChild::Capture() { this->SendCapture(); } -void WebRenderBridgeChild::StartCaptureSequence(uint32_t aFlags) { - this->SendStartCaptureSequence(aFlags); +void WebRenderBridgeChild::StartCaptureSequence(const nsCString& aPath, + uint32_t aFlags) { + this->SendStartCaptureSequence(aPath, aFlags); } void WebRenderBridgeChild::StopCaptureSequence() { diff --git a/icecat/gfx/layers/wr/WebRenderBridgeChild.h b/icecat/gfx/layers/wr/WebRenderBridgeChild.h index 0f2196d8d4..b22103905d 100644 --- a/icecat/gfx/layers/wr/WebRenderBridgeChild.h +++ b/icecat/gfx/layers/wr/WebRenderBridgeChild.h @@ -91,7 +91,7 @@ class WebRenderBridgeChild final : public PWebRenderBridgeChild, wr::PipelineId GetPipeline() { return mPipelineId; } // KnowsCompositor - RefPtr GetTextureForwarder() override; + TextureForwarder* GetTextureForwarder() override; LayersIPCActor* GetLayersIPCActor() override; void SyncWithCompositor( const Maybe& aWindowID = Nothing()) override; @@ -178,7 +178,7 @@ class WebRenderBridgeChild final : public PWebRenderBridgeChild, void DeallocResourceShmem(RefCountedShmem& aShm); void Capture(); - void StartCaptureSequence(uint32_t aFlags); + void StartCaptureSequence(const nsCString& path, uint32_t aFlags); void StopCaptureSequence(); bool SendEnsureConnected(TextureFactoryIdentifier* textureFactoryIdentifier, diff --git a/icecat/gfx/layers/wr/WebRenderBridgeParent.cpp b/icecat/gfx/layers/wr/WebRenderBridgeParent.cpp index 8cf4368489..52016224c6 100644 --- a/icecat/gfx/layers/wr/WebRenderBridgeParent.cpp +++ b/icecat/gfx/layers/wr/WebRenderBridgeParent.cpp @@ -16,7 +16,6 @@ #include "GLContextProvider.h" #include "GLLibraryLoader.h" #include "nsExceptionHandler.h" -#include "mozilla/CheckedInt.h" #include "mozilla/Range.h" #include "mozilla/EnumeratedRange.h" #include "mozilla/StaticPrefs_gfx.h" @@ -316,7 +315,9 @@ class MOZ_STACK_CLASS AutoWebRenderBridgeParentAsyncMessageSender final { if (mActorsToDestroy) { // Destroy the actors after sending the async messages because the latter // may contain references to some actors. - mWebRenderBridgeParent->DestroyActors(*mActorsToDestroy); + for (const auto& op : *mActorsToDestroy) { + mWebRenderBridgeParent->DestroyActor(op); + } } } @@ -464,10 +465,8 @@ struct WROTSAlloc { wr::Vec mVec; void* Grow(void* aPtr, size_t aLength) { - // Only grow if capacity is insufficient. if (aLength > mVec.Capacity()) { - // Reserve() is relative to existing length. - mVec.Reserve(aLength - mVec.Length()); + mVec.Reserve(aLength - mVec.Capacity()); } return mVec.inner.data; } @@ -481,17 +480,20 @@ struct WROTSAlloc { static bool ReadRawFont(const OpAddRawFont& aOp, wr::ShmSegmentsReader& aReader, wr::TransactionBuilder& aUpdates) { - wr::Vec source; - if (!aReader.Read(aOp.bytes(), source)) { - gfxCriticalNote << "Failed to read data for sanitizing font " + wr::Vec sourceBytes; + Maybe> ptr = + aReader.GetReadPointerOrCopy(aOp.bytes(), sourceBytes); + if (ptr.isNothing()) { + gfxCriticalNote << "No read pointer from reader for sanitizing font " << aOp.key().mHandle; return false; } + Range& source = ptr.ref(); // Attempt to sanitize the font before passing it along for updating. // Ensure that we're not strict here about font types, since any font that // failed generating a descriptor might end up here as raw font data. size_t lengthHint = gfxOTSContext::GuessSanitizedFontSize( - source.Data(), source.Length(), false); + source.begin().get(), source.length(), false); if (!lengthHint) { gfxCriticalNote << "Could not determine font type for sanitizing font " << aOp.key().mHandle; @@ -499,7 +501,7 @@ static bool ReadRawFont(const OpAddRawFont& aOp, wr::ShmSegmentsReader& aReader, } gfxOTSExpandingMemoryStream output(lengthHint); gfxOTSContext otsContext; - if (!otsContext.Process(&output, source.Data(), source.Length())) { + if (!otsContext.Process(&output, source.begin().get(), source.length())) { gfxCriticalNote << "Failed sanitizing font " << aOp.key().mHandle; return false; } @@ -813,14 +815,6 @@ bool WebRenderBridgeParent::PushExternalImageForTexture( auto op = aIsUpdate ? TextureHost::UPDATE_IMAGE : TextureHost::ADD_IMAGE; WebRenderTextureHost* wrTexture = aTexture->AsWebRenderTextureHost(); if (wrTexture) { - if (wrTexture->NumSubTextures() != 1) { - gfxCriticalNote << "PushExternalImageForTexture: texture requires " - << wrTexture->NumSubTextures() - << " keys but only 1 provided for extId:" - << wr::AsUint64(aExtId); - return false; - } - Range keys(&aKey, 1); wrTexture->PushResourceUpdates(aResources, op, keys, wrTexture->GetExternalImageKey()); @@ -1258,7 +1252,9 @@ mozilla::ipc::IPCResult WebRenderBridgeParent::RecvSetDisplayList( const TimeStamp& aFwdTime, nsTArray&& aPayloads, const bool& aRenderOffscreen) { if (mDestroyed) { - DestroyActors(aToDestroy); + for (const auto& op : aToDestroy) { + DestroyActor(op); + } wr::IpcResourceUpdateQueue::ReleaseShmems(this, aDisplayList.mSmallShmems); wr::IpcResourceUpdateQueue::ReleaseShmems(this, aDisplayList.mLargeShmems); return IPC_OK(); @@ -1394,7 +1390,9 @@ mozilla::ipc::IPCResult WebRenderBridgeParent::RecvEmptyTransaction( const TimeStamp& aTxnStartTime, const nsACString& aTxnURL, const TimeStamp& aFwdTime, nsTArray&& aPayloads) { if (mDestroyed) { - DestroyActors(aToDestroy); + for (const auto& op : aToDestroy) { + DestroyActor(op); + } if (aTransactionData) { wr::IpcResourceUpdateQueue::ReleaseShmems(this, aTransactionData->mSmallShmems); @@ -1845,37 +1843,25 @@ mozilla::ipc::IPCResult WebRenderBridgeParent::RecvGetSnapshot( TimeStamp start = TimeStamp::Now(); MOZ_ASSERT(bufferTexture->GetBufferDescriptor().type() == BufferDescriptor::TRGBDescriptor); - if (bufferTexture->GetBufferDescriptor().type() != - BufferDescriptor::TRGBDescriptor) { - return IPC_FAIL_NO_REASON(this); - } - + DebugOnly stride = ImageDataSerializer::GetRGBStride( + bufferTexture->GetBufferDescriptor().get_RGBDescriptor()); uint8_t* buffer = bufferTexture->GetBuffer(); - MOZ_ASSERT(buffer); - if (!buffer) { - return IPC_FAIL_NO_REASON(this); - } - IntSize size = bufferTexture->GetSize(); + MOZ_ASSERT(buffer); // For now the only formats we get here are RGBA and BGRA, and code below is // assuming a bpp of 4. If we allow other formats, the code needs adjusting // accordingly. MOZ_ASSERT(BytesPerPixel(bufferTexture->GetFormat()) == 4); - if (BytesPerPixel(bufferTexture->GetFormat()) != 4) { - return IPC_FAIL_NO_REASON(this); - } + uint32_t buffer_size = size.width * size.height * 4; - auto buffer_size = (CheckedInt(size.width) * size.height * 4); - if (!buffer_size.isValid()) { - return IPC_FAIL_NO_REASON(this); - } + // Assert the stride of the buffer is what webrender expects + MOZ_ASSERT((uint32_t)(size.width * 4) == stride); FlushSceneBuilds(); FlushFrameGeneration(wr::RenderReasons::SNAPSHOT); mApi->Readback(start, size, bufferTexture->GetFormat(), - Range(buffer, buffer_size.value()), - aNeedsYFlip); + Range(buffer, buffer_size), aNeedsYFlip); return IPC_OK(); } @@ -1888,12 +1874,6 @@ void WebRenderBridgeParent::AddPipelineIdForCompositable( return; } - if (aPipelineId == mPipelineId) { - gfxCriticalNote << "Content attempted AddPipelineIdForCompositable on " - "root pipeline"; - return; - } - MOZ_ASSERT(mAsyncCompositables.find(wr::AsUint64(aPipelineId)) == mAsyncCompositables.end()); @@ -1950,12 +1930,6 @@ void WebRenderBridgeParent::RemovePipelineIdForCompositable( return; } - if (aPipelineId == mPipelineId) { - gfxCriticalNote << "Content attempted RemovePipelineIdForCompositable on " - "root pipeline"; - return; - } - auto it = mAsyncCompositables.find(wr::AsUint64(aPipelineId)); if (it == mAsyncCompositables.end()) { return; @@ -2152,9 +2126,9 @@ mozilla::ipc::IPCResult WebRenderBridgeParent::RecvCapture() { } mozilla::ipc::IPCResult WebRenderBridgeParent::RecvStartCaptureSequence( - const uint32_t& aFlags) { + const nsACString& aPath, const uint32_t& aFlags) { if (!mDestroyed) { - mApi->StartCaptureSequence(aFlags); + mApi->StartCaptureSequence(aPath, aFlags); } return IPC_OK(); } diff --git a/icecat/gfx/layers/wr/WebRenderBridgeParent.h b/icecat/gfx/layers/wr/WebRenderBridgeParent.h index 5a2c144f63..ecef1b812b 100644 --- a/icecat/gfx/layers/wr/WebRenderBridgeParent.h +++ b/icecat/gfx/layers/wr/WebRenderBridgeParent.h @@ -146,7 +146,7 @@ class WebRenderBridgeParent final : public PWebRenderBridgeParent, const wr::RenderReasons& aReasons) override; mozilla::ipc::IPCResult RecvCapture() override; mozilla::ipc::IPCResult RecvStartCaptureSequence( - const uint32_t& aFlags) override; + const nsACString& path, const uint32_t& aFlags) override; mozilla::ipc::IPCResult RecvStopCaptureSequence() override; mozilla::ipc::IPCResult RecvSyncWithCompositor() override; diff --git a/icecat/gfx/layers/wr/WebRenderMessageUtils.h b/icecat/gfx/layers/wr/WebRenderMessageUtils.h index e17d34ccfd..a06863957c 100644 --- a/icecat/gfx/layers/wr/WebRenderMessageUtils.h +++ b/icecat/gfx/layers/wr/WebRenderMessageUtils.h @@ -11,6 +11,8 @@ #include "ipc/EnumSerializer.h" #include "ipc/IPCMessageUtils.h" +#include "mozilla/IsEnumCase.h" +#include "mozilla/ParamTraits_IsEnumCase.h" #include "mozilla/ParamTraits_TiedFields.h" #include "mozilla/webrender/webrender_ffi.h" #include "mozilla/webrender/WebRenderTypes.h" @@ -176,6 +178,42 @@ inline auto TiedFields( return std::tie(a.flags, a.synthetic_italics, a.render_mode, a._padding); } +// - + +#if !(defined(XP_MACOSX) || defined(XP_WIN)) + +template <> +inline constexpr bool IsEnumCase( + const wr::FontLCDFilter raw) { + switch (raw) { + case wr::FontLCDFilter::None: + case wr::FontLCDFilter::Default: + case wr::FontLCDFilter::Light: + case wr::FontLCDFilter::Legacy: + case wr::FontLCDFilter::Sentinel: + return true; + } + return false; +} + +template <> +inline constexpr bool IsEnumCase(const wr::FontHinting raw) { + switch (raw) { + case wr::FontHinting::None: + case wr::FontHinting::Mono: + case wr::FontHinting::Light: + case wr::FontHinting::Normal: + case wr::FontHinting::LCD: + case wr::FontHinting::Sentinel: + return true; + } + return false; +} + +#endif // !(defined(XP_MACOSX) || defined(XP_WIN)) + +// - + template <> inline auto TiedFields( mozilla::wr::FontInstancePlatformOptions& a) { @@ -212,6 +250,30 @@ inline auto TiedFields(mozilla::wr::LayoutPoint& a) { return std::tie(a.x, a.y); } +template <> +inline constexpr bool IsEnumCase(const wr::OpacityType raw) { + switch (raw) { + case wr::OpacityType::Opaque: + case wr::OpacityType::HasAlphaChannel: + case wr::OpacityType::Sentinel: + return true; + } + return false; +} + +template <> +inline constexpr bool IsEnumCase( + const wr::FontRenderMode raw) { + switch (raw) { + case wr::FontRenderMode::Mono: + case wr::FontRenderMode::Alpha: + case wr::FontRenderMode::Subpixel: + case wr::FontRenderMode::Sentinel: + return true; + } + return false; +} + template <> inline auto TiedFields( mozilla::wr::InternerSubReport& a) { @@ -312,15 +374,11 @@ struct ParamTraits template <> struct ParamTraits - : public ContiguousEnumSerializer {}; + : public ParamTraits_IsEnumCase {}; template <> struct ParamTraits - : public ContiguousEnumSerializer {}; + : public ParamTraits_IsEnumCase {}; #endif // !(defined(XP_MACOSX) || defined(XP_WIN)) @@ -393,15 +451,11 @@ struct ParamTraits template <> struct ParamTraits - : public ContiguousEnumSerializer {}; + : public ParamTraits_IsEnumCase {}; template <> struct ParamTraits - : public ContiguousEnumSerializer {}; + : public ParamTraits_IsEnumCase {}; template <> struct ParamTraits diff --git a/icecat/gfx/layers/wr/WebRenderScrollData.cpp b/icecat/gfx/layers/wr/WebRenderScrollData.cpp index 4d85d98545..eb04019091 100644 --- a/icecat/gfx/layers/wr/WebRenderScrollData.cpp +++ b/icecat/gfx/layers/wr/WebRenderScrollData.cpp @@ -305,11 +305,7 @@ bool WebRenderLayerScrollData::ValidateSubtree( const WebRenderLayerScrollData* currentChild = &aParent.mLayerScrollData[currentChildIndex]; childDescendantCounts += currentChild->mDescendantCount; - if (!currentChild->ValidateSubtree(aParent, aVisitCounts, - currentChildIndex)) { - // If a subtree is invalid, we are also invalid. - return false; - } + currentChild->ValidateSubtree(aParent, aVisitCounts, currentChildIndex); // The current child's descendants come first in the array, and the next // element after that is our next child. diff --git a/icecat/gfx/ots/moz.yaml b/icecat/gfx/ots/moz.yaml index fed89a270d..19fdee1d16 100644 --- a/icecat/gfx/ots/moz.yaml +++ b/icecat/gfx/ots/moz.yaml @@ -10,8 +10,8 @@ origin: url: https://github.com/khaledhosny/ots - release: 35a4c35a46c01c172ef51a0da9a487e710c2d499 (2026-03-27T19:05:02Z). - revision: 35a4c35a46c01c172ef51a0da9a487e710c2d499 + release: 41136f2f0afc3db21a1f95b3348f62c5d6372b93 (2025-01-07T23:20:03Z). + revision: 41136f2f0afc3db21a1f95b3348f62c5d6372b93 license: BSD-3-Clause license-file: LICENSE diff --git a/icecat/gfx/ots/ots-lz4.patch b/icecat/gfx/ots/ots-lz4.patch index a1192759b7..ff0041dbd5 100644 --- a/icecat/gfx/ots/ots-lz4.patch +++ b/icecat/gfx/ots/ots-lz4.patch @@ -1,7 +1,11 @@ diff --git a/src/glat.cc b/src/glat.cc --- a/src/glat.cc +++ b/src/glat.cc -@@ -5,7 +5,7 @@ +@@ -1,16 +1,16 @@ + // Copyright (c) 2009-2017 The OTS Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + #include "glat.h" #include "gloc.h" @@ -9,8 +13,18 @@ diff --git a/src/glat.cc b/src/glat.cc +#include "mozilla/Compression.h" #include #include - -@@ -217,14 +217,15 @@ bool OpenTypeGLAT_v3::Parse(const uint8_t* data, size_t length, + + namespace ots { + + // ----------------------------------------------------------------------------- + // OpenTypeGLAT_v1 + // ----------------------------------------------------------------------------- +@@ -212,24 +212,25 @@ bool OpenTypeGLAT_v3::Parse(const uint8_ + } + // decompressed table must be <= OTS_MAX_DECOMPRESSED_TABLE_SIZE + if (decompressed_size > OTS_MAX_DECOMPRESSED_TABLE_SIZE) { + return DropGraphite("Decompressed size exceeds %gMB: %gMB", + OTS_MAX_DECOMPRESSED_TABLE_SIZE / (1024.0 * 1024.0), decompressed_size / (1024.0 * 1024.0)); } std::unique_ptr decompressed(new uint8_t[decompressed_size]()); @@ -25,12 +39,17 @@ diff --git a/src/glat.cc b/src/glat.cc - decompressed_size); // output buffer size - if (ret < 0 || unsigned(ret) != decompressed_size) { - return DropGraphite("Decompression failed with error code %d", ret); -+ &outputSize); // output buffer size ++ &outputSize); // return output size + if (!ret || outputSize != decompressed_size) { + return DropGraphite("Decompression failed"); } return this->Parse(decompressed.get(), decompressed_size, true); - + } + default: + return DropGraphite("Unknown compression scheme"); + } + if (this->compHead & RESERVED) { + Warning("Nonzero reserved"); diff --git a/src/silf.cc b/src/silf.cc --- a/src/silf.cc +++ b/src/silf.cc @@ -52,7 +71,7 @@ diff --git a/src/silf.cc b/src/silf.cc bool OpenTypeSILF::Parse(const uint8_t* data, size_t length, bool prevent_decompression) { Buffer table(data, length); -@@ -45,24 +45,25 @@ bool OpenTypeSILF::Parse(const uint8_t* +@@ -45,24 +45,25 @@ bool OpenTypeSILF::Parse(const uint8_t* } // decompressed table must be <= OTS_MAX_DECOMPRESSED_TABLE_SIZE if (decompressed_size > OTS_MAX_DECOMPRESSED_TABLE_SIZE) { @@ -60,7 +79,7 @@ diff --git a/src/silf.cc b/src/silf.cc OTS_MAX_DECOMPRESSED_TABLE_SIZE / (1024.0 * 1024.0), decompressed_size / (1024.0 * 1024.0)); } - std::unique_ptr decompressed(new uint8_t[decompressed_size]()); + std::unique_ptr decompressed(new uint8_t[decompressed_size]()); - int ret = LZ4_decompress_safe_partial( + size_t outputSize = 0; + bool ret = mozilla::Compression::LZ4::decompressPartial( @@ -72,7 +91,7 @@ diff --git a/src/silf.cc b/src/silf.cc - decompressed_size); // output buffer size - if (ret < 0 || unsigned(ret) != decompressed_size) { - return DropGraphite("Decompression failed with error code %d", ret); -+ &outputSize); // output buffer size ++ &outputSize); // return output size + if (!ret || outputSize != decompressed_size) { + return DropGraphite("Decompression failed"); } @@ -82,4 +101,4 @@ diff --git a/src/silf.cc b/src/silf.cc return DropGraphite("Unknown compression scheme"); } } - if (!table.ReadU16(&this->numSub)) { + if (!table.ReadU16(&this->numSub)) { diff --git a/icecat/gfx/ots/src/cff.cc b/icecat/gfx/ots/src/cff.cc index c654252917..95ff7f744b 100644 --- a/icecat/gfx/ots/src/cff.cc +++ b/icecat/gfx/ots/src/cff.cc @@ -214,7 +214,7 @@ bool ParseDictDataBcd(ots::Buffer &table, std::vector &operands) { // check number format uint8_t nibbles[2]; - nibbles[0] = (nibble & 0xf0) >> 4; + nibbles[0] = (nibble & 0xf0) >> 8; nibbles[1] = (nibble & 0x0f); for (unsigned i = 0; i < 2; ++i) { if (nibbles[i] == 0xd) { // reserved number @@ -311,7 +311,7 @@ bool ParseDictDataNumber(ots::Buffer &table, uint8_t b0, if (!table.ReadU8(&b1)) { return OTS_FAILURE(); } - result = -(b0 - 251) * 256 - b1 - 108; + result = -(b0 - 251) * 256 + b1 - 108; } else { return OTS_FAILURE(); } @@ -556,7 +556,7 @@ bool ParsePrivateDictData( return OTS_FAILURE(); } uint16_t k = out_cff->region_index_count.at(vsindex); - + if (operands.back().first > static_cast(0xffff) || operands.back().first < 0){ return OTS_FAILURE(); } @@ -899,11 +899,6 @@ bool ParseDictData(ots::Buffer& table, ots::Buffer& dict, if (type != DICT_DATA_TOPLEVEL) { return OTS_FAILURE(); } - // A CID-keyed font must have exactly one FDSelect; duplicates would - // make the validated fd_select map diverge from the serialized bytes. - if (!out_cff->fd_select.empty()) { - return OTS_FAILURE(); - } if (operands.size() != 1) { return OTS_FAILURE(); } @@ -1055,20 +1050,21 @@ bool ParseDictData(ots::Buffer& table, ots::Buffer& dict, if (operands.size() != 2) { return OTS_FAILURE(); } - // We pass table.length() + 1 here because it's OK for private_offset to be equal to - // table.length(), provided private_length turns out to be zero. - if (!CheckOffset(operands.back(), table.length() + 1)) { + if (operands.back().second != DICT_OPERAND_INTEGER) { return OTS_FAILURE(); } const int32_t private_offset = operands.back().first; operands.pop_back(); - // The next operand is a length, not an offset, but we can usefully apply the same check: - // if it is negative or exceeds the table length, it cannot be valid. - if (!CheckOffset(operands.back(), table.length())) { + if (operands.back().second != DICT_OPERAND_INTEGER) { return OTS_FAILURE(); } const int32_t private_length = operands.back().first; - // The offset & length were individually plausible; check that the combination doesn't overflow the table. + if (private_offset > static_cast(table.length())) { + return OTS_FAILURE(); + } + if (private_length >= static_cast(table.length()) || private_length < 0) { + return OTS_FAILURE(); + } if (private_length + private_offset > static_cast(table.length()) || private_length + private_offset < 0) { return OTS_FAILURE(); } diff --git a/icecat/gfx/ots/src/cff_charstring.cc b/icecat/gfx/ots/src/cff_charstring.cc index f208950936..9ea5d407e2 100644 --- a/icecat/gfx/ots/src/cff_charstring.cc +++ b/icecat/gfx/ots/src/cff_charstring.cc @@ -195,7 +195,7 @@ bool ReadNextNumberFromCharString(ots::Buffer *char_string, return OTS_FAILURE(); } result += v; - *out_number = static_cast(result); + *out_number = result; } else if (v <= 31) { *out_number = v; *out_is_operator = true; diff --git a/icecat/gfx/ots/src/cmap.cc b/icecat/gfx/ots/src/cmap.cc index 610be9cd81..5673c766d3 100644 --- a/icecat/gfx/ots/src/cmap.cc +++ b/icecat/gfx/ots/src/cmap.cc @@ -314,9 +314,8 @@ bool OpenTypeCMAP::Parse31012(const uint8_t *data, size_t length, return Error("format 12 subtable group endCharCode before startCharCode (0x%4X < 0x%4X)", groups[i].end_range, groups[i].start_range); } - // Maximum glyph ID must be less than num_glyphs. if ((groups[i].end_range - groups[i].start_range) + - groups[i].start_glyph_id >= num_glyphs) { + groups[i].start_glyph_id > num_glyphs) { return Error("bad format 12 subtable group startGlyphID (%d)", groups[i].start_glyph_id); } } diff --git a/icecat/gfx/ots/src/colr.cc b/icecat/gfx/ots/src/colr.cc index 8556d4a0d7..a09d3ab3a4 100644 --- a/icecat/gfx/ots/src/colr.cc +++ b/icecat/gfx/ots/src/colr.cc @@ -788,8 +788,9 @@ bool ParseBaseGlyphList(const ots::Font* font, } int32_t prevGlyphID = -1; - // We first collect all the glyph IDs present, and their paint offsets, - // then check they can all be parsed. + // We loop over the list twice, first to collect all the glyph IDs present, + // and then to check they can be parsed. + size_t saveOffset = subtable.offset(); for (auto i = 0u; i < numBaseGlyphPaintRecords; ++i) { uint16_t glyphID; uint32_t paintOffset; @@ -817,9 +818,18 @@ bool ParseBaseGlyphList(const ots::Font* font, prevGlyphID = glyphID; } - for (const auto& [gid, rec] : state.baseGlyphMap) { - if (!ParsePaint(font, rec.first, rec.second, state)) { - return OTS_FAILURE_MSG("Failed to parse paint for base glyph ID %u", gid); + subtable.set_offset(saveOffset); + for (auto i = 0u; i < numBaseGlyphPaintRecords; ++i) { + uint16_t glyphID; + uint32_t paintOffset; + + if (!subtable.ReadU16(&glyphID) || + !subtable.ReadU32(&paintOffset)) { + return OTS_FAILURE_MSG("Failed to read base glyph list"); + } + + if (!ParsePaint(font, data + paintOffset, length - paintOffset, state)) { + return OTS_FAILURE_MSG("Failed to parse paint for base glyph ID %u", glyphID); } // After each base glyph record is fully processed, the visited set should be clear; diff --git a/icecat/gfx/ots/src/glat.cc b/icecat/gfx/ots/src/glat.cc index 296e208628..626f9b0cdb 100644 --- a/icecat/gfx/ots/src/glat.cc +++ b/icecat/gfx/ots/src/glat.cc @@ -223,7 +223,7 @@ bool OpenTypeGLAT_v3::Parse(const uint8_t* data, size_t length, table.remaining(), // input buffer size (input size + padding) reinterpret_cast(decompressed.get()), decompressed_size, // target output size - &outputSize); // output buffer size + &outputSize); // return output size if (!ret || outputSize != decompressed_size) { return DropGraphite("Decompression failed"); } diff --git a/icecat/gfx/ots/src/layout.cc b/icecat/gfx/ots/src/layout.cc index 56342e6acc..41c13692d5 100644 --- a/icecat/gfx/ots/src/layout.cc +++ b/icecat/gfx/ots/src/layout.cc @@ -190,7 +190,7 @@ bool ParseClassDefFormat1(const ots::Font *font, if (!subtable.ReadU16(&start_glyph)) { return OTS_FAILURE_MSG("Failed to read starting glyph of class definition"); } - if (start_glyph >= num_glyphs) { + if (start_glyph > num_glyphs) { return OTS_FAILURE_MSG("Bad starting glyph %d in class definition", start_glyph); } @@ -281,7 +281,7 @@ bool ParseCoverageFormat1(const ots::Font *font, if (!subtable.ReadU16(&glyph)) { return OTS_FAILURE_MSG("Failed to read glyph %d in coverage", i); } - if (glyph >= num_glyphs) { + if (glyph > num_glyphs) { return OTS_FAILURE_MSG("bad glyph ID: %u", glyph); } } @@ -386,7 +386,7 @@ bool ParseRuleSubtable(const ots::Font *font, if (!subtable.ReadU16(&glyph_id)) { return OTS_FAILURE_MSG("Failed to read glyph %d", i); } - if (glyph_id >= num_glyphs) { + if (glyph_id > num_glyphs) { return OTS_FAILURE_MSG("Bad glyph %d for entry %d", glyph_id, i); } } @@ -662,7 +662,7 @@ bool ParseChainRuleSubtable(const ots::Font *font, if (!subtable.ReadU16(&glyph_id)) { return OTS_FAILURE_MSG("Failed to read backtrack glyph %d in chain rule subtable", i); } - if (glyph_id >= num_glyphs) { + if (glyph_id > num_glyphs) { return OTS_FAILURE_MSG("Bad glyph id %d for bactrack glyph %d in chain rule subtable", glyph_id, i); } } @@ -679,7 +679,7 @@ bool ParseChainRuleSubtable(const ots::Font *font, if (!subtable.ReadU16(&glyph_id)) { return OTS_FAILURE_MSG("Failed to read input glyph %d in chain rule subtable", i); } - if (glyph_id >= num_glyphs) { + if (glyph_id > num_glyphs) { return OTS_FAILURE_MSG("Bad glyph id %d for input glyph %d in chain rule subtable", glyph_id, i); } } @@ -693,7 +693,7 @@ bool ParseChainRuleSubtable(const ots::Font *font, if (!subtable.ReadU16(&glyph_id)) { return OTS_FAILURE_MSG("Failed to read lookahead glyph %d in chain rule subtable", i); } - if (glyph_id >= num_glyphs) { + if (glyph_id > num_glyphs) { return OTS_FAILURE_MSG("Bad glyph id %d for lookadhead glyph %d in chain rule subtable", glyph_id, i); } } diff --git a/icecat/gfx/ots/src/ots.cc b/icecat/gfx/ots/src/ots.cc index fb82a9fb29..7bf85c5c14 100644 --- a/icecat/gfx/ots/src/ots.cc +++ b/icecat/gfx/ots/src/ots.cc @@ -1066,7 +1066,7 @@ bool Table::ShouldSerialize() { void Table::Message(int level, const char *format, va_list va) { char msg[206] = { OTS_UNTAG(m_tag), ':', ' ' }; std::vsnprintf(msg + 6, 200, format, va); - m_font->file->context->Message(level, "%s", msg); + m_font->file->context->Message(level, msg); } bool Table::Error(const char *format, ...) { diff --git a/icecat/gfx/ots/src/silf.cc b/icecat/gfx/ots/src/silf.cc index 5ac80b1864..e1d521a98c 100644 --- a/icecat/gfx/ots/src/silf.cc +++ b/icecat/gfx/ots/src/silf.cc @@ -49,14 +49,14 @@ bool OpenTypeSILF::Parse(const uint8_t* data, size_t length, OTS_MAX_DECOMPRESSED_TABLE_SIZE / (1024.0 * 1024.0), decompressed_size / (1024.0 * 1024.0)); } - std::unique_ptr decompressed(new uint8_t[decompressed_size]()); + std::unique_ptr decompressed(new uint8_t[decompressed_size]()); size_t outputSize = 0; bool ret = mozilla::Compression::LZ4::decompressPartial( reinterpret_cast(data + table.offset()), table.remaining(), // input buffer size (input size + padding) reinterpret_cast(decompressed.get()), decompressed_size, // target output size - &outputSize); // output buffer size + &outputSize); // return output size if (!ret || outputSize != decompressed_size) { return DropGraphite("Decompression failed"); } diff --git a/icecat/gfx/ots/src/variations.cc b/icecat/gfx/ots/src/variations.cc index 0c5164323b..55afd976ca 100644 --- a/icecat/gfx/ots/src/variations.cc +++ b/icecat/gfx/ots/src/variations.cc @@ -222,8 +222,7 @@ bool ParseVariationData(const Font* font, const uint8_t* data, size_t length, } if (tupleIndex & INTERMEDIATE_REGION) { - std::vector startTuple; - startTuple.reserve(axisCount); + std::vector startTuple(axisCount); for (unsigned axis = 0; axis < axisCount; axis++) { int16_t coordinate; if (!subtable.ReadS16(&coordinate)) { @@ -235,8 +234,7 @@ bool ParseVariationData(const Font* font, const uint8_t* data, size_t length, startTuple.push_back(coordinate); } - std::vector endTuple; - endTuple.reserve(axisCount); + std::vector endTuple(axisCount); for (unsigned axis = 0; axis < axisCount; axis++) { int16_t coordinate; if (!subtable.ReadS16(&coordinate)) { diff --git a/icecat/gfx/src/FilterSupport.cpp b/icecat/gfx/src/FilterSupport.cpp index da28198a64..76ef39fd1f 100644 --- a/icecat/gfx/src/FilterSupport.cpp +++ b/icecat/gfx/src/FilterSupport.cpp @@ -417,7 +417,7 @@ bool ComputeColorMatrix(const ColorMatrixAttributes& aMatrixAttributes, static const float hueRotateB = 0.283f; switch (aMatrixAttributes.mType) { - case SVGFEColorMatrixType::Matrix: { + case SVG_FECOLORMATRIX_TYPE_MATRIX: { if (aMatrixAttributes.mValues.Length() != 20) { return false; } @@ -426,7 +426,7 @@ bool ComputeColorMatrix(const ColorMatrixAttributes& aMatrixAttributes, break; } - case SVGFEColorMatrixType::Saturate: { + case SVG_FECOLORMATRIX_TYPE_SATURATE: { if (aMatrixAttributes.mValues.Length() != 1) { return false; } @@ -441,7 +441,7 @@ bool ComputeColorMatrix(const ColorMatrixAttributes& aMatrixAttributes, break; } - case SVGFEColorMatrixType::HueRotate: { + case SVG_FECOLORMATRIX_TYPE_HUE_ROTATE: { if (aMatrixAttributes.mValues.Length() != 1) { return false; } @@ -468,12 +468,12 @@ bool ComputeColorMatrix(const ColorMatrixAttributes& aMatrixAttributes, break; } - case SVGFEColorMatrixType::LuminanceToAlpha: { + case SVG_FECOLORMATRIX_TYPE_LUMINANCE_TO_ALPHA: { PodCopy(aOutMatrix, luminanceToAlphaMatrix, 20); break; } - case SVGFEColorMatrixType::Sepia: { + case SVG_FECOLORMATRIX_TYPE_SEPIA: { if (aMatrixAttributes.mValues.Length() != 1) { return false; } @@ -532,10 +532,10 @@ static void ConvertComponentTransferFunctionToFilter( RefPtr filter; - SVGFEComponentTransferType type = aFunctionAttributes.mTypes[aInChannel]; + uint32_t type = aFunctionAttributes.mTypes[aInChannel]; switch (type) { - case SVGFEComponentTransferType::Table: { + case SVG_FECOMPONENTTRANSFER_TYPE_TABLE: { const nsTArray& tableValues = aFunctionAttributes.mValues[aInChannel]; if (tableValues.Length() < 2) return; @@ -557,7 +557,7 @@ static void ConvertComponentTransferFunctionToFilter( break; } - case SVGFEComponentTransferType::Discrete: { + case SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: { const nsTArray& tableValues = aFunctionAttributes.mValues[aInChannel]; if (tableValues.Length() < 1) return; @@ -580,7 +580,7 @@ static void ConvertComponentTransferFunctionToFilter( break; } - case SVGFEComponentTransferType::Linear: { + case SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: { static const LinearTransferAtts slopeAtt[4] = { ATT_LINEAR_TRANSFER_SLOPE_R, ATT_LINEAR_TRANSFER_SLOPE_G, ATT_LINEAR_TRANSFER_SLOPE_B, ATT_LINEAR_TRANSFER_SLOPE_A}; @@ -605,7 +605,7 @@ static void ConvertComponentTransferFunctionToFilter( break; } - case SVGFEComponentTransferType::Gamma: { + case SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: { static const GammaTransferAtts amplitudeAtt[4] = { ATT_GAMMA_TRANSFER_AMPLITUDE_R, ATT_GAMMA_TRANSFER_AMPLITUDE_G, ATT_GAMMA_TRANSFER_AMPLITUDE_B, ATT_GAMMA_TRANSFER_AMPLITUDE_A}; @@ -635,7 +635,7 @@ static void ConvertComponentTransferFunctionToFilter( break; } - case SVGFEComponentTransferType::Identity: + case SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: default: break; } @@ -678,12 +678,12 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( } already_AddRefed operator()(const BlendAttributes& aBlend) { - SVGFEBlendMode mode = aBlend.mBlendMode; + uint32_t mode = aBlend.mBlendMode; RefPtr filter; - if (mode == SVGFEBlendMode::Unknown) { + if (mode == SVG_FEBLEND_MODE_UNKNOWN) { return nullptr; } - if (mode == SVGFEBlendMode::Normal) { + if (mode == SVG_FEBLEND_MODE_NORMAL) { filter = mDT->CreateFilter(FilterType::COMPOSITE); if (!filter) { return nullptr; @@ -695,27 +695,25 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( if (!filter) { return nullptr; } - static const uint8_t blendModes[] = {0, - 0, - BLEND_MODE_MULTIPLY, - BLEND_MODE_SCREEN, - BLEND_MODE_DARKEN, - BLEND_MODE_LIGHTEN, - BLEND_MODE_OVERLAY, - BLEND_MODE_COLOR_DODGE, - BLEND_MODE_COLOR_BURN, - BLEND_MODE_HARD_LIGHT, - BLEND_MODE_SOFT_LIGHT, - BLEND_MODE_DIFFERENCE, - BLEND_MODE_EXCLUSION, - BLEND_MODE_HUE, - BLEND_MODE_SATURATION, - BLEND_MODE_COLOR, - BLEND_MODE_LUMINOSITY}; - static_assert(std::size(blendModes) == - ContiguousEnumSize::value); - filter->SetAttribute(ATT_BLEND_BLENDMODE, - (uint32_t)blendModes[static_cast(mode)]); + static const uint8_t blendModes[SVG_FEBLEND_MODE_LUMINOSITY + 1] = { + 0, + 0, + BLEND_MODE_MULTIPLY, + BLEND_MODE_SCREEN, + BLEND_MODE_DARKEN, + BLEND_MODE_LIGHTEN, + BLEND_MODE_OVERLAY, + BLEND_MODE_COLOR_DODGE, + BLEND_MODE_COLOR_BURN, + BLEND_MODE_HARD_LIGHT, + BLEND_MODE_SOFT_LIGHT, + BLEND_MODE_DIFFERENCE, + BLEND_MODE_EXCLUSION, + BLEND_MODE_HUE, + BLEND_MODE_SATURATION, + BLEND_MODE_COLOR, + BLEND_MODE_LUMINOSITY}; + filter->SetAttribute(ATT_BLEND_BLENDMODE, (uint32_t)blendModes[mode]); // The correct input order for both software and D2D filters is flipped // from our source order, so flip here. filter->SetInput(IN_BLEND_IN, mSources[1]); @@ -766,10 +764,9 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( rx = std::min(rx, kMorphologyMaxRadius); ry = std::min(ry, kMorphologyMaxRadius); - MorphologyOperator op = - aMorphology.mOperator == SVGMorphologyOperator::Erode - ? MORPHOLOGY_OPERATOR_ERODE - : MORPHOLOGY_OPERATOR_DILATE; + MorphologyOperator op = aMorphology.mOperator == SVG_OPERATOR_ERODE + ? MORPHOLOGY_OPERATOR_ERODE + : MORPHOLOGY_OPERATOR_DILATE; RefPtr filter = mDT->CreateFilter(FilterType::MORPHOLOGY); if (!filter) { @@ -804,14 +801,14 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( already_AddRefed operator()( const ComponentTransferAttributes& aComponentTransfer) { MOZ_ASSERT(aComponentTransfer.mTypes[0] != - SVGFEComponentTransferType::SameAsR); + SVG_FECOMPONENTTRANSFER_SAME_AS_R); MOZ_ASSERT(aComponentTransfer.mTypes[3] != - SVGFEComponentTransferType::SameAsR); + SVG_FECOMPONENTTRANSFER_SAME_AS_R); RefPtr filters[4]; // one for each FILTER_*_TRANSFER type for (int32_t i = 0; i < 4; i++) { int32_t inputIndex = (aComponentTransfer.mTypes[i] == - SVGFEComponentTransferType::SameAsR) && + SVG_FECOMPONENTTRANSFER_SAME_AS_R) && (i < 3) ? 0 : i; @@ -859,17 +856,15 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( filter->SetAttribute(ATT_CONVOLVE_MATRIX_BIAS, aConvolveMatrix.mBias); filter->SetAttribute(ATT_CONVOLVE_MATRIX_TARGET, aConvolveMatrix.mTarget); filter->SetAttribute(ATT_CONVOLVE_MATRIX_SOURCE_RECT, mSourceRegions[0]); - static const uint8_t edgeModes[] = { - EDGE_MODE_NONE, // SVGEdgeMode::Unknown - EDGE_MODE_DUPLICATE, // SVGEdgeMode::Duplicate - EDGE_MODE_WRAP, // SVGEdgeMode::Wrap - EDGE_MODE_NONE // SVGEdgeMode::None + uint32_t edgeMode = aConvolveMatrix.mEdgeMode; + static const uint8_t edgeModes[SVG_EDGEMODE_NONE + 1] = { + EDGE_MODE_NONE, // SVG_EDGEMODE_UNKNOWN + EDGE_MODE_DUPLICATE, // SVG_EDGEMODE_DUPLICATE + EDGE_MODE_WRAP, // SVG_EDGEMODE_WRAP + EDGE_MODE_NONE // SVG_EDGEMODE_NONE }; - static_assert(std::size(edgeModes) == - ContiguousEnumSize::value); - filter->SetAttribute( - ATT_CONVOLVE_MATRIX_EDGE_MODE, - (uint32_t)edgeModes[static_cast(aConvolveMatrix.mEdgeMode)]); + filter->SetAttribute(ATT_CONVOLVE_MATRIX_EDGE_MODE, + (uint32_t)edgeModes[edgeMode]); filter->SetAttribute(ATT_CONVOLVE_MATRIX_KERNEL_UNIT_LENGTH, aConvolveMatrix.mKernelUnitLength); filter->SetAttribute(ATT_CONVOLVE_MATRIX_PRESERVE_ALPHA, @@ -890,21 +885,17 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( return nullptr; } filter->SetAttribute(ATT_DISPLACEMENT_MAP_SCALE, aDisplacementMap.mScale); - static const uint8_t channel[] = { - COLOR_CHANNEL_R, // SVGChannel::Unknown - COLOR_CHANNEL_R, // SVGChannel::R - COLOR_CHANNEL_G, // SVGChannel::G - COLOR_CHANNEL_B, // SVGChannel::B - COLOR_CHANNEL_A // SVGChannel::A + static const uint8_t channel[SVG_CHANNEL_A + 1] = { + COLOR_CHANNEL_R, // SVG_CHANNEL_UNKNOWN + COLOR_CHANNEL_R, // SVG_CHANNEL_R + COLOR_CHANNEL_G, // SVG_CHANNEL_G + COLOR_CHANNEL_B, // SVG_CHANNEL_B + COLOR_CHANNEL_A // SVG_CHANNEL_A }; - static_assert(std::size(channel) == - ContiguousEnumSize::value); - filter->SetAttribute( - ATT_DISPLACEMENT_MAP_X_CHANNEL, - (uint32_t)channel[static_cast(aDisplacementMap.mXChannel)]); - filter->SetAttribute( - ATT_DISPLACEMENT_MAP_Y_CHANNEL, - (uint32_t)channel[static_cast(aDisplacementMap.mYChannel)]); + filter->SetAttribute(ATT_DISPLACEMENT_MAP_X_CHANNEL, + (uint32_t)channel[aDisplacementMap.mXChannel]); + filter->SetAttribute(ATT_DISPLACEMENT_MAP_Y_CHANNEL, + (uint32_t)channel[aDisplacementMap.mYChannel]); filter->SetInput(IN_DISPLACEMENT_MAP_IN, mSources[0]); filter->SetInput(IN_DISPLACEMENT_MAP_IN2, mSources[1]); return filter.forget(); @@ -921,16 +912,13 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( filter->SetAttribute(ATT_TURBULENCE_NUM_OCTAVES, aTurbulence.mOctaves); filter->SetAttribute(ATT_TURBULENCE_STITCHABLE, aTurbulence.mStitchable); filter->SetAttribute(ATT_TURBULENCE_SEED, (uint32_t)aTurbulence.mSeed); - static const uint8_t type[] = { - TURBULENCE_TYPE_FRACTAL_NOISE, // SVGTurbulenceType::Unknown - TURBULENCE_TYPE_FRACTAL_NOISE, // SVGTurbulenceType::FractalNoise - TURBULENCE_TYPE_TURBULENCE // SVGTurbulenceType::Turbulence + static const uint8_t type[SVG_TURBULENCE_TYPE_TURBULENCE + 1] = { + TURBULENCE_TYPE_FRACTAL_NOISE, // SVG_TURBULENCE_TYPE_UNKNOWN + TURBULENCE_TYPE_FRACTAL_NOISE, // SVG_TURBULENCE_TYPE_FRACTALNOISE + TURBULENCE_TYPE_TURBULENCE // SVG_TURBULENCE_TYPE_TURBULENCE }; - static_assert(std::size(type) == - ContiguousEnumSize::value); - filter->SetAttribute( - ATT_TURBULENCE_TYPE, - (uint32_t)type[static_cast(aTurbulence.mType)]); + filter->SetAttribute(ATT_TURBULENCE_TYPE, + (uint32_t)type[aTurbulence.mType]); filter->SetAttribute( ATT_TURBULENCE_RECT, mDescription.PrimitiveSubregion() - aTurbulence.mOffset); @@ -940,8 +928,8 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( already_AddRefed operator()( const CompositeAttributes& aComposite) { RefPtr filter; - SVGFECompositeOperator op = aComposite.mOperator; - if (op == SVGFECompositeOperator::Arithmetic) { + uint32_t op = aComposite.mOperator; + if (op == SVG_FECOMPOSITE_OPERATOR_ARITHMETIC) { const nsTArray& coefficients = aComposite.mCoefficients; static const float allZero[4] = {0, 0, 0, 0}; filter = mDT->CreateFilter(FilterType::ARITHMETIC_COMBINE); @@ -960,20 +948,17 @@ static already_AddRefed FilterNodeFromPrimitiveDescription( if (!filter) { return nullptr; } - static const uint8_t operators[] = { - COMPOSITE_OPERATOR_OVER, // SVGFECompositeOperator::Unknown - COMPOSITE_OPERATOR_OVER, // SVGFECompositeOperator::Over - COMPOSITE_OPERATOR_IN, // SVGFECompositeOperator::In - COMPOSITE_OPERATOR_OUT, // SVGFECompositeOperator::Out - COMPOSITE_OPERATOR_ATOP, // SVGFECompositeOperator::Atop - COMPOSITE_OPERATOR_XOR, // SVGFECompositeOperator::Xor + static const uint8_t operators[SVG_FECOMPOSITE_OPERATOR_LIGHTER + 1] = { + COMPOSITE_OPERATOR_OVER, // SVG_FECOMPOSITE_OPERATOR_UNKNOWN + COMPOSITE_OPERATOR_OVER, // SVG_FECOMPOSITE_OPERATOR_OVER + COMPOSITE_OPERATOR_IN, // SVG_FECOMPOSITE_OPERATOR_IN + COMPOSITE_OPERATOR_OUT, // SVG_FECOMPOSITE_OPERATOR_OUT + COMPOSITE_OPERATOR_ATOP, // SVG_FECOMPOSITE_OPERATOR_ATOP + COMPOSITE_OPERATOR_XOR, // SVG_FECOMPOSITE_OPERATOR_XOR COMPOSITE_OPERATOR_OVER, // Unused, arithmetic is handled above - COMPOSITE_OPERATOR_LIGHTER // SVGFECompositeOperator::Lighter + COMPOSITE_OPERATOR_LIGHTER // SVG_FECOMPOSITE_OPERATOR_LIGHTER }; - static_assert(std::size(operators) == - ContiguousEnumSize::value); - filter->SetAttribute(ATT_COMPOSITE_OPERATOR, - (uint32_t)operators[static_cast(op)]); + filter->SetAttribute(ATT_COMPOSITE_OPERATOR, (uint32_t)operators[op]); filter->SetInput(IN_COMPOSITE_IN_START, mSources[1]); filter->SetInput(IN_COMPOSITE_IN_START + 1, mSources[0]); } @@ -1431,7 +1416,7 @@ static nsIntRegion ResultChangeRegionForPrimitive( } nsIntRegion operator()(const ConvolveMatrixAttributes& aConvolveMatrix) { - if (aConvolveMatrix.mEdgeMode != SVGEdgeMode::None) { + if (aConvolveMatrix.mEdgeMode != EDGE_MODE_NONE) { return mDescription.PrimitiveSubregion(); } Size kernelUnitLength = aConvolveMatrix.mKernelUnitLength; @@ -1550,7 +1535,7 @@ nsIntRegion FilterSupport::ComputeResultChangeRegion( static float ResultOfZeroUnderTransferFunction( const ComponentTransferAttributes& aFunctionAttributes, int32_t channel) { switch (aFunctionAttributes.mTypes[channel]) { - case SVGFEComponentTransferType::Table: { + case SVG_FECOMPONENTTRANSFER_TYPE_TABLE: { const nsTArray& tableValues = aFunctionAttributes.mValues[channel]; if (tableValues.Length() < 2) { return 0.0f; @@ -1558,7 +1543,7 @@ static float ResultOfZeroUnderTransferFunction( return tableValues[0]; } - case SVGFEComponentTransferType::Discrete: { + case SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: { const nsTArray& tableValues = aFunctionAttributes.mValues[channel]; if (tableValues.Length() < 1) { return 0.0f; @@ -1566,17 +1551,17 @@ static float ResultOfZeroUnderTransferFunction( return tableValues[0]; } - case SVGFEComponentTransferType::Linear: { + case SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: { const nsTArray& values = aFunctionAttributes.mValues[channel]; return values[kComponentTransferInterceptIndex]; } - case SVGFEComponentTransferType::Gamma: { + case SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: { const nsTArray& values = aFunctionAttributes.mValues[channel]; return values[kComponentTransferOffsetIndex]; } - case SVGFEComponentTransferType::Identity: + case SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: default: return 0.0f; } @@ -1602,7 +1587,7 @@ nsIntRegion FilterSupport::PostFilterExtentsForPrimitive( } nsIntRegion operator()(const ColorMatrixAttributes& aColorMatrix) { - if (aColorMatrix.mType == SVGFEColorMatrixType::Matrix) { + if (aColorMatrix.mType == (uint32_t)SVG_FECOLORMATRIX_TYPE_MATRIX) { const nsTArray& values = aColorMatrix.mValues; if (values.Length() == 20 && values[19] > 0.0f) { return mDescription.PrimitiveSubregion(); @@ -1612,8 +1597,8 @@ nsIntRegion FilterSupport::PostFilterExtentsForPrimitive( } nsIntRegion operator()(const MorphologyAttributes& aMorphology) { - SVGMorphologyOperator op = aMorphology.mOperator; - if (op == SVGMorphologyOperator::Erode) { + uint32_t op = aMorphology.mOperator; + if (op == SVG_OPERATOR_ERODE) { return mInputExtents[0]; } Size radii = aMorphology.mRadii; @@ -1665,8 +1650,8 @@ nsIntRegion FilterSupport::PostFilterExtentsForPrimitive( } nsIntRegion operator()(const CompositeAttributes& aComposite) { - SVGFECompositeOperator op = aComposite.mOperator; - if (op == SVGFECompositeOperator::Arithmetic) { + uint32_t op = aComposite.mOperator; + if (op == SVG_FECOMPOSITE_OPERATOR_ARITHMETIC) { // The arithmetic composite primitive can draw outside the bounding // box of its source images. const nsTArray& coefficients = aComposite.mCoefficients; @@ -1689,7 +1674,7 @@ nsIntRegion FilterSupport::PostFilterExtentsForPrimitive( } return region; } - if (op == SVGFECompositeOperator::In) { + if (op == SVG_FECOMPOSITE_OPERATOR_IN) { return mInputExtents[0].Intersect(mInputExtents[1]); } return ResultChangeRegionForPrimitive(mDescription, mInputExtents); diff --git a/icecat/gfx/src/FilterSupport.h b/icecat/gfx/src/FilterSupport.h index bc5fcb7e02..94c535ab0f 100644 --- a/icecat/gfx/src/FilterSupport.h +++ b/icecat/gfx/src/FilterSupport.h @@ -7,7 +7,6 @@ #ifndef __FilterSupport_h #define __FilterSupport_h -#include "mozilla/EnumTypeTraits.h" #include "mozilla/gfx/2D.h" #include "mozilla/gfx/Matrix.h" #include "mozilla/gfx/Point.h" @@ -33,120 +32,75 @@ extern already_AddRefed ForSurface( DrawTarget* aDT, SourceSurface* aSurface, const IntPoint& aSurfacePosition); } // namespace FilterWrappers -enum class SVGMorphologyOperator : uint8_t { - Unknown = 0, - Erode = 1, - Dilate = 2, -}; +// Morphology Operators +const unsigned short SVG_OPERATOR_UNKNOWN = 0; +const unsigned short SVG_OPERATOR_ERODE = 1; +const unsigned short SVG_OPERATOR_DILATE = 2; -enum class SVGFEColorMatrixType : uint8_t { - Unknown = 0, - Matrix = 1, - Saturate = 2, - HueRotate = 3, - LuminanceToAlpha = 4, - // ColorMatrix types for CSS filters - Sepia = 5, -}; +// ColorMatrix types +const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; +const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1; +const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2; +const unsigned short SVG_FECOLORMATRIX_TYPE_HUE_ROTATE = 3; +const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCE_TO_ALPHA = 4; +// ColorMatrix types for CSS filters +const unsigned short SVG_FECOLORMATRIX_TYPE_SEPIA = 5; -enum class SVGFEComponentTransferType : uint8_t { - Unknown = 0, - Identity = 1, - Table = 2, - Discrete = 3, - Linear = 4, - Gamma = 5, - SameAsR = 6, -}; +// ComponentTransfer types +const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0; +const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1; +const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2; +const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3; +const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4; +const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5; +const unsigned short SVG_FECOMPONENTTRANSFER_SAME_AS_R = 6; -enum class SVGFEBlendMode : uint8_t { - Unknown = 0, - Normal = 1, - Multiply = 2, - Screen = 3, - Darken = 4, - Lighten = 5, - Overlay = 6, - ColorDodge = 7, - ColorBurn = 8, - HardLight = 9, - SoftLight = 10, - Difference = 11, - Exclusion = 12, - Hue = 13, - Saturation = 14, - Color = 15, - Luminosity = 16, -}; +// Blend Mode Values +const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0; +const unsigned short SVG_FEBLEND_MODE_NORMAL = 1; +const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2; +const unsigned short SVG_FEBLEND_MODE_SCREEN = 3; +const unsigned short SVG_FEBLEND_MODE_DARKEN = 4; +const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5; +const unsigned short SVG_FEBLEND_MODE_OVERLAY = 6; +const unsigned short SVG_FEBLEND_MODE_COLOR_DODGE = 7; +const unsigned short SVG_FEBLEND_MODE_COLOR_BURN = 8; +const unsigned short SVG_FEBLEND_MODE_HARD_LIGHT = 9; +const unsigned short SVG_FEBLEND_MODE_SOFT_LIGHT = 10; +const unsigned short SVG_FEBLEND_MODE_DIFFERENCE = 11; +const unsigned short SVG_FEBLEND_MODE_EXCLUSION = 12; +const unsigned short SVG_FEBLEND_MODE_HUE = 13; +const unsigned short SVG_FEBLEND_MODE_SATURATION = 14; +const unsigned short SVG_FEBLEND_MODE_COLOR = 15; +const unsigned short SVG_FEBLEND_MODE_LUMINOSITY = 16; -enum class SVGEdgeMode : uint8_t { - Unknown = 0, - Duplicate = 1, - Wrap = 2, - None = 3, -}; +// Edge Mode Values +const unsigned short SVG_EDGEMODE_UNKNOWN = 0; +const unsigned short SVG_EDGEMODE_DUPLICATE = 1; +const unsigned short SVG_EDGEMODE_WRAP = 2; +const unsigned short SVG_EDGEMODE_NONE = 3; -enum class SVGChannel : uint8_t { - Unknown = 0, - R = 1, - G = 2, - B = 3, - A = 4, -}; +// Channel Selectors +const unsigned short SVG_CHANNEL_UNKNOWN = 0; +const unsigned short SVG_CHANNEL_R = 1; +const unsigned short SVG_CHANNEL_G = 2; +const unsigned short SVG_CHANNEL_B = 3; +const unsigned short SVG_CHANNEL_A = 4; -enum class SVGTurbulenceType : uint8_t { - Unknown = 0, - FractalNoise = 1, - Turbulence = 2, -}; +// Turbulence Types +const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0; +const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; +const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2; -enum class SVGFECompositeOperator : uint8_t { - Unknown = 0, - Over = 1, - In = 2, - Out = 3, - Atop = 4, - Xor = 5, - Arithmetic = 6, - Lighter = 7, -}; - -} // namespace gfx - -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGMorphologyOperator::Dilate; -}; -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGFEColorMatrixType::Sepia; -}; -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGFEComponentTransferType::SameAsR; -}; -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGFEBlendMode::Luminosity; -}; -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGEdgeMode::None; -}; -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGChannel::A; -}; -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGTurbulenceType::Turbulence; -}; -template <> -struct MaxContiguousEnumValue { - static constexpr auto value = gfx::SVGFECompositeOperator::Lighter; -}; - -namespace gfx { +// Composite Operators +const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; +const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1; +const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2; +const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3; +const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4; +const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5; +const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6; +const unsigned short SVG_FECOMPOSITE_OPERATOR_LIGHTER = 7; struct FilterAttribute; @@ -160,7 +114,7 @@ struct EmptyAttributes { }; struct BlendAttributes { - SVGFEBlendMode mBlendMode; + uint32_t mBlendMode; bool operator==(const BlendAttributes& aOther) const { return mBlendMode == aOther.mBlendMode; @@ -168,7 +122,7 @@ struct BlendAttributes { }; struct MorphologyAttributes { - SVGMorphologyOperator mOperator; + uint32_t mOperator; Size mRadii; bool operator==(const MorphologyAttributes& aOther) const { @@ -206,8 +160,8 @@ struct OffsetAttributes { struct DisplacementMapAttributes { float mScale; - SVGChannel mXChannel; - SVGChannel mYChannel; + uint32_t mXChannel; + uint32_t mYChannel; bool operator==(const DisplacementMapAttributes& aOther) const { return mScale == aOther.mScale && mXChannel == aOther.mXChannel && @@ -221,7 +175,7 @@ struct TurbulenceAttributes { float mSeed; uint32_t mOctaves; bool mStitchable; - SVGTurbulenceType mType; + uint32_t mType; bool operator==(const TurbulenceAttributes& aOther) const { return mOffset == aOther.mOffset && @@ -288,7 +242,7 @@ class ImplicitlyCopyableFloatArray : public CopyableTArray { }; struct ColorMatrixAttributes { - SVGFEColorMatrixType mType; + uint32_t mType; ImplicitlyCopyableFloatArray mValues; bool operator==(const ColorMatrixAttributes& aOther) const { @@ -296,7 +250,7 @@ struct ColorMatrixAttributes { } }; -// If the types for G and B are SVGFEComponentTransferType::SameAsR, +// If the types for G and B are SVG_FECOMPONENTTRANSFER_SAME_AS_R, // use the R channel values - this lets us avoid copies. const uint32_t kChannelROrRGB = 0; const uint32_t kChannelG = 1; @@ -311,7 +265,7 @@ const uint32_t kComponentTransferExponentIndex = 1; const uint32_t kComponentTransferOffsetIndex = 2; struct ComponentTransferAttributes { - SVGFEComponentTransferType mTypes[4]; + uint8_t mTypes[4]; ImplicitlyCopyableFloatArray mValues[4]; bool operator==(const ComponentTransferAttributes& aOther) const { @@ -328,7 +282,7 @@ struct ConvolveMatrixAttributes { float mDivisor; float mBias; IntPoint mTarget; - SVGEdgeMode mEdgeMode; + uint32_t mEdgeMode; Size mKernelUnitLength; bool mPreserveAlpha; @@ -343,7 +297,7 @@ struct ConvolveMatrixAttributes { }; struct CompositeAttributes { - SVGFECompositeOperator mOperator; + uint32_t mOperator; ImplicitlyCopyableFloatArray mCoefficients; bool operator==(const CompositeAttributes& aOther) const { diff --git a/icecat/gfx/tests/gtest/TestYUVtoRGB32.cpp b/icecat/gfx/tests/gtest/TestYUVtoRGB32.cpp index c1aa6ba086..364dfaac4a 100644 --- a/icecat/gfx/tests/gtest/TestYUVtoRGB32.cpp +++ b/icecat/gfx/tests/gtest/TestYUVtoRGB32.cpp @@ -21,12 +21,8 @@ const Color MAGENTA(255, 0, 255); const Color YELLOW(255, 255, 0); const Color WHITE(255, 255, 255); const Color CHOCOLATE(210, 105, 30); -const Color PERU(205, 133, 63); -const Color ROSYBROWN(188, 143, 143); -const Color STEELBLUE(70, 130, 180); -const std::array COLOR_LIST = { - BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, - YELLOW, WHITE, CHOCOLATE, PERU, ROSYBROWN, STEELBLUE}; +const std::array COLOR_LIST = {BLACK, BLUE, GREEN, CYAN, RED, + MAGENTA, YELLOW, WHITE, CHOCOLATE}; Color RGB2YUV(const Color& aRGBColor) { const uint8_t& r = std::get<0>(aRGBColor); @@ -240,26 +236,6 @@ std::unordered_map> GetExpectedConvertedRGB() { Color(236, 111, 20), // gfx::YUVColorSpace::BT2020 Color(229, 102, 20)}); - map.emplace(Hash(PERU), std::array{// gfx::YUVColorSpace::BT601 - Color(219, 137, 58), - // gfx::YUVColorSpace::BT709 - Color(228, 140, 58), - // gfx::YUVColorSpace::BT2020 - Color(223, 134, 59)}); - map.emplace(Hash(ROSYBROWN), - std::array{// gfx::YUVColorSpace::BT601 - Color(200, 147, 147), - // gfx::YUVColorSpace::BT709 - Color(204, 152, 147), - // gfx::YUVColorSpace::BT2020 - Color(201, 149, 147)}); - map.emplace(Hash(STEELBLUE), - std::array{// gfx::YUVColorSpace::BT601 - Color(65, 133, 189), - // gfx::YUVColorSpace::BT709 - Color(58, 129, 189), - // gfx::YUVColorSpace::BT2020 - Color(62, 135, 189)}); return map; } @@ -380,131 +356,3 @@ TEST(YCbCrUtils, ConvertYCbCrToRGB32WithIdentityColorSpace) IsColorMatched(expectation, RGBX.get(), bufferSize); } } - -// Fills a 4×4 Y plane and chroma planes for a frame whose luma is divided -// into four 2×2 blocks. aColors[blockRow][blockCol] gives the color for each -// block. Chroma plane dimensions depend on aSubsampling: -// FULL (YV24): 4×4 chroma, each pixel maps 1:1 to a luma pixel. -// HALF_WIDTH (YV16): 2×4 chroma, half-width but full height. -// HALF_WIDTH_AND_HEIGHT (YV12): 2×2 chroma. -// Callers must provide at least 16 bytes for aUBuf/aVBuf to cover the FULL -// case; smaller subsamplings use only a prefix of that. -static void FillTwoByTwoFrame(const Color aColors[2][2], - gfx::ChromaSubsampling aSubsampling, - uint8_t* aYBuf, uint8_t* aUBuf, uint8_t* aVBuf) { - // Give each luma pixel a unique Y by adding a small per-pixel offset based - // on its position within its 2x2 chroma block: +0/+2/+4/+6 for - // (top-left/top-right/bottom-left/bottom-right). This makes luma sampling - // bugs detectable without meaningfully shifting the color. - for (int r = 0; r < 4; r++) { - for (int c = 0; c < 4; c++) { - uint8_t baseY = std::get<0>(RGB2YUV(aColors[r / 2][c / 2])); - aYBuf[r * 4 + c] = baseY + (r % 2) * 4 + (c % 2) * 2; - } - } - int chromaWidth = (aSubsampling == gfx::ChromaSubsampling::FULL) ? 4 : 2; - int chromaHeight = - (aSubsampling == gfx::ChromaSubsampling::HALF_WIDTH_AND_HEIGHT) ? 2 : 4; - for (int chromaRow = 0; chromaRow < chromaHeight; chromaRow++) { - int blockRow = chromaRow * 2 / chromaHeight; - for (int chromaCol = 0; chromaCol < chromaWidth; chromaCol++) { - int blockCol = chromaCol * 2 / chromaWidth; - aUBuf[chromaRow * chromaWidth + chromaCol] = - std::get<1>(RGB2YUV(aColors[blockRow][blockCol])); - aVBuf[chromaRow * chromaWidth + chromaCol] = - std::get<2>(RGB2YUV(aColors[blockRow][blockCol])); - } - } -} - -// Fills and converts a 4×4 test frame, writing the result into aOutput. -// aStride is in bytes. See FillTwoByTwoFrame for the aColors layout. -static void ConvertTestFrame(const Color aColors[2][2], - gfx::ChromaSubsampling aSubsampling, - const gfx::IntRect& aPictureRect, uint8_t* aOutput, - int32_t aStride) { - uint8_t yBuf[16], uBuf[16], vBuf[16]; - FillTwoByTwoFrame(aColors, aSubsampling, yBuf, uBuf, vBuf); - layers::PlanarYCbCrData data; - data.mYChannel = yBuf; - data.mYStride = 4; - data.mYSkip = 0; - data.mCbChannel = uBuf; - data.mCrChannel = vBuf; - data.mCbCrStride = (aSubsampling == gfx::ChromaSubsampling::FULL) ? 4 : 2; - data.mCbSkip = 0; - data.mCrSkip = 0; - data.mChromaSubsampling = aSubsampling; - data.mYUVColorSpace = gfx::YUVColorSpace::BT709; - data.mColorRange = gfx::ColorRange::LIMITED; - data.mPictureRect = aPictureRect; - ConvertYCbCrToRGB32(data, gfx::SurfaceFormat::R8G8B8X8, aOutput, aStride, - nullptr); -} - -// Tests for odd pic_x / pic_y offsets in YV12, YV16, and YV24. -// -// The 4x4 frame has four 2x2 chroma blocks with distinct mid-range colors. -// Within each block each luma pixel has a unique Y value (offset +0/+2/+4/+6), -// so both chroma and luma misalignment are detectable. The reference is a full -// even-aligned 4x4 conversion; each odd-crop output pixel is checked against -// its corresponding source position in that reference. -static const gfx::ChromaSubsampling kTestSubsamplings[] = { - gfx::ChromaSubsampling::HALF_WIDTH_AND_HEIGHT, - gfx::ChromaSubsampling::HALF_WIDTH, gfx::ChromaSubsampling::FULL}; - -static void RunOddPicTest(const Color aColors[2][2], - const gfx::IntRect& aRect) { - const int32_t stride = aRect.Width() * 4; - UniquePtr output = MakeUnique(aRect.Height() * stride); - auto exp = GetExpectedConvertedRGB(); - const size_t bt709 = static_cast(gfx::YUVColorSpace::BT709); - - for (gfx::ChromaSubsampling subsampling : kTestSubsamplings) { - // fullRef: even-aligned 4x4 reference (no odd-offset ambiguity). - uint8_t fullRef[4 * 4 * 4]; - ConvertTestFrame(aColors, subsampling, gfx::IntRect(0, 0, 4, 4), fullRef, - 4 * 4); - - // Sanity-check the reference: top-left of each 2x2 block (Y offset 0) - // must match GetExpectedConvertedRGB; the other three pixels in the block - // must be distinct but close (Y delta ≤6 → channel delta ~2-7). - for (int br = 0; br < 2; br++) { - for (int bc = 0; bc < 2; bc++) { - uint8_t* base = fullRef + (br * 2) * 4 * 4 + (bc * 2) * 4; - IsColorMatched(exp[Hash(aColors[br][bc])][bt709], base, 4); - for (int dr = 0; dr < 2; dr++) { - for (int dc = 0; dc < 2; dc++) { - if (dr == 0 && dc == 0) continue; - uint8_t* other = - fullRef + (br * 2 + dr) * 4 * 4 + (bc * 2 + dc) * 4; - for (int ch = 0; ch < 3; ch++) { - ASSERT_NE(base[ch], other[ch]); - ASSERT_NEAR(base[ch], other[ch], 10); - } - } - } - } - } - - // output: the odd-crop conversion under test. - ConvertTestFrame(aColors, subsampling, aRect, output.get(), stride); - - // Each output pixel must match its source position in the full reference. - for (int row = 0; row < aRect.Height(); row++) { - for (int col = 0; col < aRect.Width(); col++) { - uint8_t* ref = fullRef + (aRect.y + row) * 4 * 4 + (aRect.x + col) * 4; - Color expected(ref[0], ref[1], ref[2]); - IsColorMatched(expected, output.get() + row * stride + col * 4, 4); - } - } - } -} - -TEST(YCbCrUtils, ConvertYCbCrToRGB32OddPicOffset) -{ - const Color colors[2][2] = {{CHOCOLATE, PERU}, {ROSYBROWN, STEELBLUE}}; - RunOddPicTest(colors, gfx::IntRect(1, 1, 3, 3)); // both odd - RunOddPicTest(colors, gfx::IntRect(1, 0, 3, 4)); // odd pic_x only - RunOddPicTest(colors, gfx::IntRect(0, 1, 4, 3)); // odd pic_y only -} diff --git a/icecat/gfx/thebes/COLRFonts.cpp b/icecat/gfx/thebes/COLRFonts.cpp index 3ef199f688..335bf35080 100644 --- a/icecat/gfx/thebes/COLRFonts.cpp +++ b/icecat/gfx/thebes/COLRFonts.cpp @@ -2312,7 +2312,7 @@ bool ItemVariationData::Validate(const COLRv1Header* aHeader, uint32_t deltaSetSize = (uint16_t(regionIndexCount) + uint16_t(wordDeltaCount)) << longWords; if (reinterpret_cast(deltaSets()) + - uint64_t(uint16_t(itemCount)) * deltaSetSize > + uint16_t(itemCount) * deltaSetSize > reinterpret_cast(aHeader) + aLength) { return false; } diff --git a/icecat/gfx/thebes/CoreTextFontList.h b/icecat/gfx/thebes/CoreTextFontList.h index 56997b9d83..97052b36f6 100644 --- a/icecat/gfx/thebes/CoreTextFontList.h +++ b/icecat/gfx/thebes/CoreTextFontList.h @@ -84,8 +84,6 @@ class CTFontEntry final : public gfxFontEntry { static void DestroyBlobFunc(void* aUserData); - FontTableCache* GetFontTableCache(bool aCreate) override { return nullptr; } - CGFontRef mFontRef MOZ_GUARDED_BY(mLock); // owning reference const double mSizeHint; diff --git a/icecat/gfx/thebes/SharedFontList.cpp b/icecat/gfx/thebes/SharedFontList.cpp index 8f27bfb426..0aa95a9347 100644 --- a/icecat/gfx/thebes/SharedFontList.cpp +++ b/icecat/gfx/thebes/SharedFontList.cpp @@ -798,14 +798,6 @@ FontList::Header& FontList::GetHeader() const MOZ_NO_THREAD_SAFETY_ANALYSIS { bool FontList::AppendShmBlock(uint32_t aSizeNeeded) { MOZ_ASSERT(XRE_IsParentProcess()); - - // TODO: currently most callers of AppendShmBlock() (via Alloc()) assume - // the allocation is infallible; hence the release-assert here is the safe - // way to handle overflow. Consider whether to make the allocation fallible, - // and instead handle null safely in the callers. - MOZ_RELEASE_ASSERT(mBlocks.Length() < (1u << Pointer::kIndexBits), - "FontList shm block limit exceeded"); - uint32_t size = std::max(aSizeNeeded, SHM_BLOCK_SIZE); auto handle = ipc::shared_memory::CreateFreezable(size); if (!handle) { diff --git a/icecat/gfx/thebes/SharedFontList.h b/icecat/gfx/thebes/SharedFontList.h index 47384c4941..59ac223efe 100644 --- a/icecat/gfx/thebes/SharedFontList.h +++ b/icecat/gfx/thebes/SharedFontList.h @@ -42,8 +42,7 @@ struct Pointer { Pointer(uint32_t aBlock, uint32_t aOffset) : mBlockAndOffset((aBlock << kBlockShift) | aOffset) { - MOZ_RELEASE_ASSERT(aBlock < (1u << kIndexBits) && - aOffset < (1u << kBlockShift)); + MOZ_ASSERT(aBlock < (1u << kIndexBits) && aOffset < (1u << kBlockShift)); } Pointer(const Pointer& aOther) { diff --git a/icecat/gfx/thebes/StandardFonts-macos.inc b/icecat/gfx/thebes/StandardFonts-macos.inc index 008ea6e574..0d264bbd5e 100644 --- a/icecat/gfx/thebes/StandardFonts-macos.inc +++ b/icecat/gfx/thebes/StandardFonts-macos.inc @@ -296,5 +296,4 @@ static const char* kBaseFonts[] = { static const char* kBaseFonts_13_Higher[] = { "Stix Two Math", - "Stix Two Math Regular", }; diff --git a/icecat/gfx/thebes/gfxDWriteFontList.cpp b/icecat/gfx/thebes/gfxDWriteFontList.cpp index 4235b01614..76fa0b14f7 100644 --- a/icecat/gfx/thebes/gfxDWriteFontList.cpp +++ b/icecat/gfx/thebes/gfxDWriteFontList.cpp @@ -384,10 +384,7 @@ gfxFontEntry* gfxDWriteFontEntry::Clone() const { return fe; } -gfxDWriteFontEntry::~gfxDWriteFontEntry() { - auto* cache = mFontTableCache.exchange(nullptr); - delete cache; -} +gfxDWriteFontEntry::~gfxDWriteFontEntry() {} static bool UsingArabicOrHebrewScriptSystemLocale() { LANGID langid = PRIMARYLANGID(::GetSystemDefaultLangID()); @@ -515,18 +512,6 @@ hb_blob_t* gfxDWriteFontEntry::GetFontTable(uint32_t aTag) { return nullptr; } -gfxFontEntry::FontTableCache* gfxDWriteFontEntry::GetFontTableCache( - bool aCreate) { - // Create the cache if it does not yet exist. - if (!mFontTableCache && aCreate) { - auto* cache = new FontTableCache(); - if (!mFontTableCache.compareExchange(nullptr, cache)) { - delete cache; - } - } - return mFontTableCache; -} - nsresult gfxDWriteFontEntry::ReadCMAP(FontInfoData* aFontInfoData) { AUTO_PROFILER_LABEL("gfxDWriteFontEntry::ReadCMAP", GRAPHICS); @@ -1599,7 +1584,7 @@ void gfxDWriteFontList::InitSharedFontListForPlatform() { if (FAILED(hr)) { glean::fontlist::dwritefont_init_problem.AccumulateSingleSample( uint32_t(errGDIInterop)); - delete mSharedFontList.exchange(nullptr); + mSharedFontList.reset(nullptr); return; } @@ -1608,7 +1593,7 @@ void gfxDWriteFontList::InitSharedFontListForPlatform() { if (!mSystemFonts) { glean::fontlist::dwritefont_init_problem.AccumulateSingleSample( uint32_t(errSystemFontCollection)); - delete mSharedFontList.exchange(nullptr); + mSharedFontList.reset(nullptr); return; } #ifdef MOZ_BUNDLED_FONTS diff --git a/icecat/gfx/thebes/gfxDWriteFontList.h b/icecat/gfx/thebes/gfxDWriteFontList.h index d219062dd6..d8d509ca41 100644 --- a/icecat/gfx/thebes/gfxDWriteFontList.h +++ b/icecat/gfx/thebes/gfxDWriteFontList.h @@ -217,8 +217,6 @@ class gfxDWriteFontEntry final : public gfxFontEntry { static bool InitLogFont(IDWriteFont* aFont, LOGFONTW* aLogFont); - FontTableCache* GetFontTableCache(bool aCreate) override; - /** * A fontentry only needs to have either of these. If it has both only * the IDWriteFont will be used. @@ -238,8 +236,6 @@ class gfxDWriteFontEntry final : public gfxFontEntry { DWRITE_FONT_FACE_TYPE mFaceType; - mozilla::Atomic mFontTableCache; - int8_t mIsCJK; bool mIsSystemFont; bool mForceGDIClassic; diff --git a/icecat/gfx/thebes/gfxFT2FontBase.cpp b/icecat/gfx/thebes/gfxFT2FontBase.cpp index cf5cc2f2e5..ba0fa3887f 100644 --- a/icecat/gfx/thebes/gfxFT2FontBase.cpp +++ b/icecat/gfx/thebes/gfxFT2FontBase.cpp @@ -747,7 +747,7 @@ bool gfxFT2FontBase::GetFTGlyphExtents(uint16_t aGID, int32_t* aAdvance, * Get the cached glyph metrics for the glyph id if available. Otherwise, query * FreeType for the glyph extents and initialize the glyph metrics. */ -gfxFT2FontBase::GlyphMetrics gfxFT2FontBase::GetCachedGlyphMetrics( +const gfxFT2FontBase::GlyphMetrics& gfxFT2FontBase::GetCachedGlyphMetrics( uint16_t aGID, IntRect* aBounds) { { // Try to read cached metrics without exclusive locking. @@ -782,7 +782,7 @@ gfxFT2FontBase::GlyphMetrics gfxFT2FontBase::GetCachedGlyphMetrics( bool gfxFT2FontBase::GetGlyphBounds(uint16_t aGID, gfxRect* aBounds, bool aTight) { IntRect bounds; - const GlyphMetrics metrics = GetCachedGlyphMetrics(aGID, &bounds); + const GlyphMetrics& metrics = GetCachedGlyphMetrics(aGID, &bounds); if (!metrics.HasValidBounds()) { return false; } diff --git a/icecat/gfx/thebes/gfxFT2FontBase.h b/icecat/gfx/thebes/gfxFT2FontBase.h index df41c74634..08a79c2ada 100644 --- a/icecat/gfx/thebes/gfxFT2FontBase.h +++ b/icecat/gfx/thebes/gfxFT2FontBase.h @@ -142,7 +142,7 @@ class gfxFT2FontBase : public gfxFont { uint16_t mHeight; }; - GlyphMetrics GetCachedGlyphMetrics( + const GlyphMetrics& GetCachedGlyphMetrics( uint16_t aGID, mozilla::gfx::IntRect* aBounds = nullptr); mozilla::UniquePtr> mGlyphMetrics diff --git a/icecat/gfx/thebes/gfxFT2FontList.cpp b/icecat/gfx/thebes/gfxFT2FontList.cpp index 9924b1b2e7..d19775b2c6 100644 --- a/icecat/gfx/thebes/gfxFT2FontList.cpp +++ b/icecat/gfx/thebes/gfxFT2FontList.cpp @@ -165,10 +165,6 @@ FTUserFontData* FT2FontEntry::GetUserFontData() { */ FT2FontEntry::~FT2FontEntry() { - auto* cache = mFontTableCache.exchange(nullptr); - delete cache; - auto* face = mHBFace.exchange(nullptr); - hb_face_destroy(face); if (mMMVar) { SharedFTFace* face = mFTFace; FT_Done_MM_Var(face->GetFace()->glyph->library, mMMVar); @@ -457,52 +453,45 @@ nsresult FT2FontEntry::ReadCMAP(FontInfoData* aFontInfoData) { return rv; } -hb_face_t* FT2FontEntry::CreateHBFace() { - if (mHBFace) { - return hb_face_reference(mHBFace); - } +hb_face_t* FT2FontEntry::CreateHBFace() const { + hb_face_t* result = nullptr; - hb_face_t* face = nullptr; if (mFilename[0] == '/') { // An absolute path means a normal file in the filesystem, so we can use - // hb_face_create_from_file_or_fail, and keep the face around. - face = hb_face_create_from_file_or_fail(mFilename.get(), mFTFontIndex); - if (face) { - if (!mHBFace.compareExchange(nullptr, face)) { - hb_face_destroy(face); - face = mHBFace; - } + // hb_blob_create_from_file to read it. + gfxFontUtils::AutoHBBlob fileBlob( + hb_blob_create_from_file(mFilename.get())); + if (hb_blob_get_length(fileBlob) > 0) { + result = hb_face_create(fileBlob, mFTFontIndex); } - return hb_face_reference(face); - } - - // A relative path means an omnijar resource, which we may need to - // decompress to a temporary buffer. - RefPtr reader = Omnijar::GetReader(Omnijar::Type::GRE); - nsZipItem* item = reader->GetItem(mFilename); - MOZ_ASSERT(item, "failed to find zip entry"); - if (item) { - // TODO(jfkthame): - // Check whether the item is compressed; if not, we could just get a - // pointer without needing to allocate a buffer and copy the data. - // (Currently this configuration isn't used for Gecko on Android.) - uint32_t length = item->RealSize(); - uint8_t* buffer = static_cast(malloc(length)); - if (buffer) { - nsZipCursor cursor(item, reader, buffer, length); - cursor.Copy(&length); - MOZ_ASSERT(length == item->RealSize(), "error reading font"); - if (length == item->RealSize()) { - gfxFontUtils::AutoHBBlob blob( - hb_blob_create((const char*)buffer, length, HB_MEMORY_MODE_READONLY, - buffer, free)); - // We don't retain this face; the caller will own the only reference. - return hb_face_create(blob, mFTFontIndex); + } else { + // A relative path means an omnijar resource, which we may need to + // decompress to a temporary buffer. + RefPtr reader = Omnijar::GetReader(Omnijar::Type::GRE); + nsZipItem* item = reader->GetItem(mFilename); + MOZ_ASSERT(item, "failed to find zip entry"); + if (item) { + // TODO(jfkthame): + // Check whether the item is compressed; if not, we could just get a + // pointer without needing to allocate a buffer and copy the data. + // (Currently this configuration isn't used for Gecko on Android.) + uint32_t length = item->RealSize(); + uint8_t* buffer = static_cast(malloc(length)); + if (buffer) { + nsZipCursor cursor(item, reader, buffer, length); + cursor.Copy(&length); + MOZ_ASSERT(length == item->RealSize(), "error reading font"); + if (length == item->RealSize()) { + gfxFontUtils::AutoHBBlob blob( + hb_blob_create((const char*)buffer, length, + HB_MEMORY_MODE_READONLY, buffer, free)); + result = hb_face_create(blob, mFTFontIndex); + } } } } - return nullptr; + return result; } bool FT2FontEntry::HasFontTable(uint32_t aTableTag) { @@ -573,13 +562,14 @@ hb_blob_t* FT2FontEntry::GetFontTable(uint32_t aTableTag) { } } - // Try to read table directly via harfbuzz API, unless CreateHBFace will be - // expensive. - if (mHBFace || (!mFilename.IsEmpty() && mFilename[0] == '/')) { - if (hb_face_t* face = CreateHBFace()) { + // If the FT_Face hasn't been instantiated, try to read table directly + // via harfbuzz API to avoid expensive FT_Face creation. + if (!mFTFace && !mFilename.IsEmpty()) { + hb_face_t* face = CreateHBFace(); + if (face) { hb_blob_t* result = hb_face_reference_table(face, aTableTag); hb_face_destroy(face); - return result != hb_blob_get_empty() ? result : nullptr; + return result; } } @@ -588,17 +578,6 @@ hb_blob_t* FT2FontEntry::GetFontTable(uint32_t aTableTag) { return gfxFontEntry::GetFontTable(aTableTag); } -gfxFontEntry::FontTableCache* FT2FontEntry::GetFontTableCache(bool aCreate) { - // Create the cache if it does not yet exist. - if (!mFontTableCache && aCreate) { - auto* cache = new FontTableCache(); - if (!mFontTableCache.compareExchange(nullptr, cache)) { - delete cache; - } - } - return mFontTableCache; -} - bool FT2FontEntry::HasVariations() { switch (mHasVariations) { case HasVariationsState::No: diff --git a/icecat/gfx/thebes/gfxFT2FontList.h b/icecat/gfx/thebes/gfxFT2FontList.h index 66a8b7f917..446aeaf0cd 100644 --- a/icecat/gfx/thebes/gfxFT2FontList.h +++ b/icecat/gfx/thebes/gfxFT2FontList.h @@ -86,11 +86,9 @@ class FT2FontEntry final : public gfxFT2FontEntryBase { // Get a harfbuzz face for this font, if possible. The caller is responsible // to destroy the face when no longer needed. - // Note that a face may be cached by the font entry, and a new reference - // returned to the caller. // This may be a bit expensive, so avoid calling multiple times if the same // face can be re-used for several purposes instead. - hb_face_t* CreateHBFace(); + hb_face_t* CreateHBFace() const; /** * Append this face's metadata to aFaceList for storage in the FontNameCache @@ -108,22 +106,15 @@ class FT2FontEntry final : public gfxFT2FontEntryBase { void AddSizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf, FontListSizes* aSizes) const override; - nsCString mFilename; - uint8_t mFTFontIndex; - - protected: - FontTableCache* GetFontTableCache(bool aCreate) override; - - mozilla::Atomic mFontTableCache; - - mozilla::Atomic mHBFace; - // Strong reference (addref'd), but held in an atomic ptr rather than a // normal RefPtr. mozilla::Atomic mFTFace; FT_MM_Var* mMMVar = nullptr; + nsCString mFilename; + uint8_t mFTFontIndex; + mozilla::ThreadSafeWeakPtr mUnscaledFont; nsTHashSet mAvailableTables; diff --git a/icecat/gfx/thebes/gfxFcPlatformFontList.cpp b/icecat/gfx/thebes/gfxFcPlatformFontList.cpp index ca51ea6fed..a6240702ca 100644 --- a/icecat/gfx/thebes/gfxFcPlatformFontList.cpp +++ b/icecat/gfx/thebes/gfxFcPlatformFontList.cpp @@ -7,6 +7,7 @@ #include "gfxFcPlatformFontList.h" #include "gfxFont.h" +#include "gfxFontConstants.h" #include "gfxFT2Utils.h" #include "gfxPlatform.h" #include "nsPresContext.h" @@ -17,20 +18,25 @@ #include "mozilla/Sprintf.h" #include "mozilla/StaticPrefs_gfx.h" #include "mozilla/glean/GfxMetrics.h" +#include "mozilla/TimeStamp.h" #include "nsGkAtoms.h" #include "nsIConsoleService.h" #include "nsIGfxInfo.h" #include "mozilla/Components.h" #include "nsString.h" #include "nsStringFwd.h" +#include "nsUnicodeProperties.h" #include "nsDirectoryServiceUtils.h" #include "nsDirectoryServiceDefs.h" +#include "nsAppDirectoryServiceDefs.h" #include "nsCharSeparatedTokenizer.h" #include "nsXULAppAPI.h" #include "SharedFontList-impl.h" #include "StandardFonts-linux.inc" #include "mozilla/intl/Locale.h" +#include "mozilla/gfx/HelpersCairo.h" + #include #include #include @@ -58,6 +64,7 @@ using namespace mozilla; using namespace mozilla::gfx; +using namespace mozilla::unicode; using namespace mozilla::intl; #ifndef FC_POSTSCRIPT_NAME @@ -394,17 +401,13 @@ static void InitializeVarFuncs() { } gfxFontconfigFontEntry::~gfxFontconfigFontEntry() { - auto* cache = mFontTableCache.exchange(nullptr); - delete cache; - auto* face = mHBFace.exchange(nullptr); - hb_face_destroy(face); if (mMMVar) { // Prior to freetype 2.9, there was no specific function to free the // FT_MM_Var record, and the docs just said to use free(). // InitializeVarFuncs must have been called in order for mMMVar to be // non-null here, so we don't need to do it again. if (sDoneVar) { - auto* ftFace = GetFTFace(); + auto ftFace = GetFTFace(); MOZ_ASSERT(ftFace, "How did mMMVar get set without a face?"); (*sDoneVar)(ftFace->GetFace()->glyph->library, mMMVar); } else { @@ -412,75 +415,11 @@ gfxFontconfigFontEntry::~gfxFontconfigFontEntry() { } } if (mFTFaceInitialized) { - auto* face = mFTFace.exchange(nullptr); + auto face = mFTFace.exchange(nullptr); NS_IF_RELEASE(face); } } -gfxFontconfigFontEntry::AutoHBFace gfxFontconfigFontEntry::GetHBFace() { - hb_face_t* face = mHBFace; - if (!face) { - FcChar8* filename; - FcPattern* pattern = GetPattern(); - bool useTableCache = false; - if (FcPatternGetString(pattern, FC_FILE, 0, &filename) == FcResultMatch) { - // Pattern has a filename: system font that we can load via - // hb_face_create_from_file_or_fail, allowing harfbuzz to manage table - // access internally. - int index; - if (FcPatternGetInteger(pattern, FC_INDEX, 0, &index) != FcResultMatch) { - index = 0; // default to 0 if not found in pattern - } - // Mask out possible variation-instance index stashed by fontconfig; we - // just want the face index within a collection file. - index &= 0xFFFF; - face = hb_face_create_from_file_or_fail((const char*)filename, index); - } else { - // If we have an FT_Font with webfont user data attached, we can use - // hb_face_create to wrap that. - if (mFTFaceInitialized) { - if (const FTUserFontData* ufd = GetUserFontData()) { - if (ufd->FontData()) { - hb_blob_t* blob = hb_blob_create( - (const char*)ufd->FontData(), ufd->FontDataLength(), - HB_MEMORY_MODE_READONLY, nullptr, nullptr); - // Currently the face index is always zero, as we don't support - // collections as webfonts. - face = hb_face_create(blob, 0); - // Drop our blob reference; the face will hold on to it. - hb_blob_destroy(blob); - } - } - } - } - if (!face) { - // Failed to create a face directly; fall back to gfxFontEntry::GetHBFace, - // which will use hb_face_create_for_tables and the font table cache. - NS_WARNING(nsPrintfCString("fallback to gfxFontEntry::GetHBFace for %s", - Name().get()) - .get()); - face = hb_face_reference(gfxFontEntry::GetHBFace()); - useTableCache = true; - } - AutoWriteLock lock(mLock); - if (mHBFace.compareExchange(nullptr, face)) { - if (useTableCache) { - auto* cache = new FontTableCache(); - if (!mFontTableCache.compareExchange(nullptr, cache)) { - delete cache; - } - } - } else { - // Lost a race to initialize mHBFace; discard our new one and use the - // winner of the race. - hb_face_destroy(face); - face = mHBFace; - } - } - // Return a new reference, owned by the AutoHBFace. - return AutoHBFace(hb_face_reference(face)); -} - nsresult gfxFontconfigFontEntry::ReadCMAP(FontInfoData* aFontInfoData) { // attempt this once, if errors occur leave a blank cmap if (mCharacterMap) { @@ -589,13 +528,7 @@ hb_blob_t* gfxFontconfigFontEntry::GetFontTable(uint32_t aTableTag) { } } - // Use the cache only if it has already been created. - if (mFontTableCache) { - return gfxFontEntry::GetFontTable(aTableTag); - } - - auto* table = hb_face_reference_table(GetHBFace(), aTableTag); - return table != hb_blob_get_empty() ? table : nullptr; + return gfxFontEntry::GetFontTable(aTableTag); } double gfxFontconfigFontEntry::GetAspect(uint8_t aSizeAdjustBasis) { @@ -1004,7 +937,7 @@ gfxFont* gfxFontconfigFontEntry::CreateFontInstance( AutoWriteLock lock(mLock); // Here, we use the original mFTFace, not a potential clone with variation // settings applied. - auto* ftFace = GetFTFace(); + auto ftFace = GetFTFace(); unscaledFont = ftFace->GetData() ? new UnscaledFontFontconfig(ftFace) : new UnscaledFontFontconfig( std::move(file), index, ftFace); @@ -1034,7 +967,7 @@ SharedFTFace* gfxFontconfigFontEntry::GetFTFace() { } FTUserFontData* gfxFontconfigFontEntry::GetUserFontData() { - auto* face = GetFTFace(); + auto face = GetFTFace(); if (face && face->GetData()) { return static_cast(face->GetData()); } @@ -1072,7 +1005,7 @@ bool gfxFontconfigFontEntry::HasVariations() { return true; } } else { - if (auto* ftFace = GetFTFace()) { + if (auto ftFace = GetFTFace()) { if (ftFace->GetFace()->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS) { mHasVariations = HasVariationsState::Yes; return true; @@ -1099,7 +1032,7 @@ FT_MM_Var* gfxFontconfigFontEntry::GetMMVar() { if (!sGetVar) { return nullptr; } - auto* ftFace = GetFTFace(); + auto ftFace = GetFTFace(); if (!ftFace) { return nullptr; } @@ -1373,7 +1306,7 @@ void gfxFontconfigFontFamily::AddFacesToFontList(Func aAddPatternFunc) { if (!fe) { continue; } - auto* fce = static_cast(fe.get()); + auto fce = static_cast(fe.get()); aAddPatternFunc(fce->GetPattern(), mContainsAppFonts); } } else { @@ -1938,7 +1871,7 @@ void gfxFcPlatformFontList::InitSharedFontListForPlatform() { return MakeUnique(); }) .get() - ->Add(fontlist::Face::InitData(initData), /* aSingleName = */ false); + ->Add(fontlist::Face::InitData(initData), /* singleName = */ false); n++; if (n == int(cIndex)) { diff --git a/icecat/gfx/thebes/gfxFcPlatformFontList.h b/icecat/gfx/thebes/gfxFcPlatformFontList.h index a8c0f46030..66bb604f28 100644 --- a/icecat/gfx/thebes/gfxFcPlatformFontList.h +++ b/icecat/gfx/thebes/gfxFcPlatformFontList.h @@ -9,9 +9,11 @@ #include "gfxFT2FontBase.h" #include "gfxPlatformFontList.h" #include "mozilla/FontPropertyTypes.h" +#include "mozilla/mozalloc.h" #include "mozilla/RefPtr.h" #include "mozilla/UniquePtr.h" #include "nsClassHashtable.h" +#include "nsTHashMap.h" #include #include "ft2build.h" @@ -87,8 +89,6 @@ class gfxFontconfigFontEntry final : public gfxFT2FontEntryBase { gfxFontEntry* Clone() const override; - AutoHBFace GetHBFace() override; - FcPattern* GetPattern() { return mFontPattern; } nsresult ReadCMAP(FontInfoData* aFontInfoData = nullptr) override; @@ -107,9 +107,6 @@ class gfxFontconfigFontEntry final : public gfxFT2FontEntryBase { bool HasFontTable(uint32_t aTableTag) override; nsresult CopyFontTable(uint32_t aTableTag, nsTArray&) override; hb_blob_t* GetFontTable(uint32_t aTableTag) override; - FontTableCache* GetFontTableCache(bool aCreate) override { - return mFontTableCache; - }; double GetAspect(uint8_t aSizeAdjustBasis); @@ -130,14 +127,6 @@ class gfxFontconfigFontEntry final : public gfxFT2FontEntryBase { mozilla::Atomic mFTFace; mozilla::Atomic mFTFaceInitialized; - // HarfBuzz face, if the entry is backed by a disk file. Initialized on first - // use. - mozilla::Atomic mHBFace; - - // Font table cache, created only if we fail to create a hb_face_t that wraps - // the complete font data. - mozilla::Atomic mFontTableCache; - // Whether TestCharacterMap should check the actual cmap rather than asking // fontconfig about character coverage. // We do this for app-bundled (rather than system) fonts, as they may diff --git a/icecat/gfx/thebes/gfxFont.cpp b/icecat/gfx/thebes/gfxFont.cpp index b32ed6521f..394cff9a6c 100644 --- a/icecat/gfx/thebes/gfxFont.cpp +++ b/icecat/gfx/thebes/gfxFont.cpp @@ -49,7 +49,6 @@ #include "gfxSVGGlyphs.h" #include "gfx2DGlue.h" #include "TextDrawTarget.h" -#include "COLRFonts.h" #include "ThebesRLBox.h" @@ -1080,6 +1079,7 @@ gfxFont::RoundingFlags gfxFont::GetRoundOffsetsToPixels( gfxHarfBuzzShaper* gfxFont::GetHarfBuzzShaper() { if (!mHarfBuzzShaper) { auto* shaper = new gfxHarfBuzzShaper(this); + shaper->Initialize(); if (!mHarfBuzzShaper.compareExchange(nullptr, shaper)) { delete shaper; } @@ -1528,11 +1528,10 @@ tainted_boolean_hint gfxFont::SpaceMayParticipateInShaping( } } - // Note that Graphite shaping is only available on the main thread. - // `UseGraphiteShaping` will always be false in workers. - if (gfxPlatform::GetPlatform()->UseGraphiteShaping() && - FontCanSupportGraphite()) { - return mFontEntry->HasGraphiteSpaceContextuals(); + if (FontCanSupportGraphite()) { + if (gfxPlatform::GetPlatform()->UseGraphiteShaping()) { + return mFontEntry->HasGraphiteSpaceContextuals(); + } } // We record the presence of space-dependent features in the font entry @@ -1567,9 +1566,6 @@ tainted_boolean_hint gfxFont::SpaceMayParticipateInShaping( } bool gfxFont::SupportsFeature(Script aScript, uint32_t aFeatureTag) { - // mGraphiteShaper may be observed non-null on a worker thread, but workers - // shape via harfbuzz regardless, because graphite shaping is only available - // on the main thread. if (mGraphiteShaper && gfxPlatform::GetPlatform()->UseGraphiteShaping()) { return GetFontEntry()->SupportsGraphiteFeature(aFeatureTag); } @@ -2688,7 +2684,7 @@ bool gfxFont::RenderColorGlyph(DrawTarget* aDrawTarget, gfxContext* aContext, // We need the hbShaper to get color glyph bounds, so check that it's // usable. hbShaper = GetHarfBuzzShaper(); - if (!hbShaper) { + if (!hbShaper && !hbShaper->IsInitialized()) { return false; } if (aTextDrawer) { @@ -3452,23 +3448,23 @@ bool gfxFont::ShapeText(DrawTarget* aDrawTarget, const char16_t* aText, // XXX Currently, we do all vertical shaping through harfbuzz. // Vertical graphite support may be wanted as a future enhancement. // XXX Graphite shaping currently only supported on the main thread! - // On workers (offscreen canvas), `UseGraphiteShaping` always returns false, - // and shaping uses harfbuzz. - if (gfxPlatform::GetPlatform()->UseGraphiteShaping() && - FontCanSupportGraphite() && !aVertical) { - gfxGraphiteShaper* shaper = mGraphiteShaper; - if (!shaper) { - shaper = new gfxGraphiteShaper(this); - if (!mGraphiteShaper.compareExchange(nullptr, shaper)) { - delete shaper; - shaper = mGraphiteShaper; + // Worker-thread shaping (offscreen canvas) will always go via harfbuzz. + if (FontCanSupportGraphite() && !aVertical && NS_IsMainThread()) { + if (gfxPlatform::GetPlatform()->UseGraphiteShaping()) { + gfxGraphiteShaper* shaper = mGraphiteShaper; + if (!shaper) { + shaper = new gfxGraphiteShaper(this); + if (!mGraphiteShaper.compareExchange(nullptr, shaper)) { + delete shaper; + shaper = mGraphiteShaper; + } + } + if (shaper->ShapeText(aDrawTarget, aText, aOffset, aLength, aScript, + aLanguage, aVertical, aRounding, aShapedText)) { + PostShapingFixup(aDrawTarget, aText, aOffset, aLength, aVertical, + aShapedText); + return true; } - } - if (shaper->ShapeText(aDrawTarget, aText, aOffset, aLength, aScript, - aLanguage, aVertical, aRounding, aShapedText)) { - PostShapingFixup(aDrawTarget, aText, aOffset, aLength, aVertical, - aShapedText); - return true; } } diff --git a/icecat/gfx/thebes/gfxFontEntry.cpp b/icecat/gfx/thebes/gfxFontEntry.cpp index f161ffe12e..20cd580565 100644 --- a/icecat/gfx/thebes/gfxFontEntry.cpp +++ b/icecat/gfx/thebes/gfxFontEntry.cpp @@ -13,21 +13,30 @@ #include "gfxTextRun.h" #include "gfxPlatform.h" +#include "nsGkAtoms.h" #include "gfxTypes.h" #include "gfxContext.h" +#include "gfxFontConstants.h" #include "gfxGraphiteShaper.h" #include "gfxHarfBuzzShaper.h" #include "gfxUserFontSet.h" #include "gfxPlatformFontList.h" +#include "nsUnicodeProperties.h" +#include "nsMathUtils.h" +#include "nsBidiUtils.h" +#include "nsStyleConsts.h" +#include "mozilla/AppUnits.h" #include "mozilla/FloatingPoint.h" #include "mozilla/Likely.h" #include "mozilla/MemoryReporting.h" +#include "mozilla/Preferences.h" #include "mozilla/ProfilerLabels.h" #include "mozilla/ScopeExit.h" +#include "mozilla/Services.h" #include "mozilla/StaticPrefs_layout.h" #include "gfxSVGGlyphs.h" -#include "COLRFonts.h" +#include "gfx2DGlue.h" #include "harfbuzz/hb.h" #include "harfbuzz/hb-ot.h" @@ -41,12 +50,10 @@ using namespace mozilla; using namespace mozilla::gfx; using namespace mozilla::unicode; -void gfxCharacterMap::NotifyMaybeReleased(gfxCharacterMap* aCmap, - uint32_t aHash) { +void gfxCharacterMap::NotifyMaybeReleased(gfxCharacterMap* aCmap) { // Tell gfxPlatformFontList that a charmap's refcount was decremented, - // so it should check whether the object is to be deleted. aCmap may be - // dangling; aHash was captured while it was alive. - gfxPlatformFontList::PlatformFontList()->MaybeRemoveCmap(aCmap, aHash); + // so it should check whether the object is to be deleted. + gfxPlatformFontList::PlatformFontList()->MaybeRemoveCmap(aCmap); } gfxFontEntry::gfxFontEntry(const nsACString& aName, bool aIsStandardFace) @@ -104,6 +111,8 @@ gfxFontEntry::~gfxFontEntry() { } } + mFontTableCache.reset(nullptr); + delete mSVGGlyphs.exchange(nullptr); delete[] mUVSData.exchange(nullptr); @@ -111,8 +120,9 @@ gfxFontEntry::~gfxFontEntry() { NS_IF_RELEASE(cmap); // By the time the entry is destroyed, all font instances that were - // using it should already have been deleted, and so any Graphite - // face object should have been released. + // using it should already have been deleted, and so the HB and/or Gr + // face objects should have been released. + MOZ_ASSERT(!mHBFace); MOZ_ASSERT(!mGrFaceInitialized); } @@ -133,16 +143,9 @@ void gfxFontEntry::InitializeFrom(fontlist::Face* aFace, } bool gfxFontEntry::TrySetShmemCharacterMap() { - auto* pfl = gfxPlatformFontList::PlatformFontList(); - // Hold the platform-fontlist lock so InitFontList() cannot reset - // mSharedFontList while we dereference it. - gfxPlatformFontList::AutoLock lock(pfl->mLock); - auto* face = mShmemFace; - if (!face) { - return false; - } - auto* list = pfl->SharedFontList(); - const auto* shmemCmap = face->mCharacterMap.ToPtr(list); + MOZ_ASSERT(mShmemFace); + auto list = gfxPlatformFontList::PlatformFontList()->SharedFontList(); + auto* shmemCmap = mShmemFace->mCharacterMap.ToPtr(list); mShmemCharacterMap.exchange(shmemCmap); return shmemCmap != nullptr; } @@ -384,7 +387,7 @@ bool gfxFontEntry::TryGetColorGlyphs() { auto* colr = GetFontTable(TRUETYPE_TAG('C', 'O', 'L', 'R')); auto* cpal = colr ? GetFontTable(TRUETYPE_TAG('C', 'P', 'A', 'L')) : nullptr; - if (colr && cpal && COLRFonts::ValidateColorGlyphs(colr, cpal)) { + if (colr && cpal && gfx::COLRFonts::ValidateColorGlyphs(colr, cpal)) { if (!mCOLR.compareExchange(nullptr, colr)) { hb_blob_destroy(colr); } @@ -400,6 +403,159 @@ bool gfxFontEntry::TryGetColorGlyphs() { return mCOLR && mCPAL; } +/** + * FontTableBlobData + * + * See FontTableHashEntry for the general strategy. + */ + +class gfxFontEntry::FontTableBlobData { + public: + explicit FontTableBlobData(nsTArray&& aBuffer) + : mTableData(std::move(aBuffer)), mFontEntry(nullptr), mHashKey(0) { + MOZ_COUNT_CTOR(FontTableBlobData); + } + + ~FontTableBlobData() { + MOZ_COUNT_DTOR(FontTableBlobData); + if (mFontEntry && mHashKey) { + AutoWriteLock lock(mFontEntry->mLock); + mFontEntry->mFontTableCache->RemoveEntry(mHashKey); + } + } + + // Useful for creating blobs + const char* GetTable() const { + return reinterpret_cast(mTableData.Elements()); + } + uint32_t GetTableLength() const { return mTableData.Length(); } + + // Tell this FontTableBlobData to remove the HashEntry when this is + // destroyed. + void ManageHashEntry(gfxFontEntry* aFontEntry, uint32_t aHashKey) { + mFontEntry = aFontEntry; + mHashKey = aHashKey; + } + + // Disconnect from the HashEntry (because the blob has already been + // removed from the hashtable). + void ForgetHashEntry() { + mFontEntry = nullptr; + mHashKey = 0; + } + + size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const { + return mTableData.ShallowSizeOfExcludingThis(aMallocSizeOf); + } + size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const { + return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf); + } + + private: + // The font table data block + const nsTArray mTableData; + + // The blob destroy function needs to know the owning font entry + // so that it can take the font-entry's lock while modifying the + // hashtable; and the hashtable key, so that it can remove the entry. + gfxFontEntry* mFontEntry; + uint32_t mHashKey; + + // not implemented + FontTableBlobData(const FontTableBlobData&); +}; + +hb_blob_t* gfxFontEntry::FontTableHashEntry::ShareTableAndGetBlob( + nsTArray&& aTable, gfxFontEntry* aFontEntry) { + Clear(); + // adopts elements of aTable + mSharedBlobData = new FontTableBlobData(std::move(aTable)); + + mBlob = hb_blob_create( + mSharedBlobData->GetTable(), mSharedBlobData->GetTableLength(), + HB_MEMORY_MODE_READONLY, mSharedBlobData, DeleteFontTableBlobData); + if (mBlob == hb_blob_get_empty()) { + // The FontTableBlobData was destroyed during hb_blob_create(). + // The (empty) blob will still be held in the hashtable with a strong + // reference. + mSharedBlobData = nullptr; + return hb_blob_reference(mBlob); + } + + // Tell the FontTableBlobData to remove this hash entry when destroyed. + // The hashtable does not keep a strong reference. + mSharedBlobData->ManageHashEntry(aFontEntry, GetKey()); + return mBlob; +} + +void gfxFontEntry::FontTableHashEntry::Clear() { + // If the FontTableBlobData is managing the hash entry, then the blob is + // not owned by this HashEntry; otherwise there is strong reference to the + // blob that must be removed. + if (mSharedBlobData) { + mSharedBlobData->ForgetHashEntry(); + mSharedBlobData = nullptr; + } else { + hb_blob_destroy(mBlob); + } + mBlob = nullptr; +} + +// a hb_destroy_func for hb_blob_create + +/* static */ +void gfxFontEntry::FontTableHashEntry::DeleteFontTableBlobData( + void* aBlobData) { + delete static_cast(aBlobData); +} + +hb_blob_t* gfxFontEntry::FontTableHashEntry::GetBlob() const { + return hb_blob_reference(mBlob); +} + +bool gfxFontEntry::GetExistingFontTable(uint32_t aTag, hb_blob_t** aBlob) { + AutoReadLock lock(mLock); + + if (MOZ_UNLIKELY(!mFontTableCache)) { + return false; + } + + if (const auto* entry = mFontTableCache->GetEntry(aTag)) { + *aBlob = entry->GetBlob(); + return true; + } + + return false; +} + +hb_blob_t* gfxFontEntry::ShareFontTableAndGetBlob(uint32_t aTag, + nsTArray* aBuffer) { + AutoWriteLock lock(mLock); + + if (MOZ_UNLIKELY(!mFontTableCache)) { + mFontTableCache = MakeUnique(8); + } + + FontTableHashEntry* entry; + if (MOZ_UNLIKELY(entry = mFontTableCache->GetEntry(aTag))) { + // We must have been racing with another GetFontTable for the same table, + // and it won the race and filled in the entry before we took the lock. + // Ignore `aBuffer` and return a reference to the existing blob. + return entry->GetBlob(); + } + + // Infallible PutEntry call, so `entry` will be non-null. + entry = mFontTableCache->PutEntry(aTag); + + if (!aBuffer) { + // ensure the entry is null + entry->Clear(); + return nullptr; + } + + return entry->ShareTableAndGetBlob(std::move(*aBuffer), this); +} + already_AddRefed gfxFontEntry::GetCMAPFromFontInfo( FontInfoData* aFontInfoData, uint32_t& aUVSOffset) { if (!aFontInfoData || !aFontInfoData->mLoadCmaps) { @@ -409,46 +565,16 @@ already_AddRefed gfxFontEntry::GetCMAPFromFontInfo( return aFontInfoData->GetCMAP(mName, aUVSOffset); } -gfxFontEntry::FontTableBlob::FontTableBlob(nsTArray&& aData) - : mData(std::move(aData)) { - if (!mData.IsEmpty()) { - mBlob = hb_blob_create(reinterpret_cast(mData.Elements()), - mData.Length(), HB_MEMORY_MODE_READONLY, nullptr, - nullptr); - } -} - -size_t gfxFontEntry::FontTableBlob::SizeOfExcludingThis( - MallocSizeOf aMallocSizeOf) const { - return mData.ShallowSizeOfExcludingThis(aMallocSizeOf) + - ((mBlob && mBlob != hb_blob_get_empty()) ? aMallocSizeOf(mBlob) : 0); -} - hb_blob_t* gfxFontEntry::GetFontTable(uint32_t aTag) { - auto* cache = GetFontTableCache(true); - MOZ_ASSERT(cache, "missing or incomplete GetFontTable override?"); - if (!cache) { - return nullptr; - } - - { - AutoReadLock lock(mLock); - if (auto lookup = cache->Lookup(aTag)) { - return lookup.Data().GetBlob(); - } + hb_blob_t* blob; + if (GetExistingFontTable(aTag, &blob)) { + return blob; } nsTArray buffer; bool haveTable = NS_SUCCEEDED(CopyFontTable(aTag, buffer)); - AutoWriteLock lock(mLock); - return cache - ->LookupOrInsertWith(aTag, - [&] { - return haveTable ? FontTableBlob(std::move(buffer)) - : FontTableBlob(); - }) - .GetBlob(); + return ShareFontTableAndGetBlob(aTag, haveTable ? &buffer : nullptr); } // callback for HarfBuzz to get a font table (in hb_blob_t form) @@ -571,10 +697,13 @@ gfxFontEntry::GetGrSandboxAdvanceCallbackHandle() { } tainted_opaque_gr gfxFontEntry::GetGrFace() { - // Graphite shaping is only available on the main thread. - MOZ_RELEASE_ASSERT(NS_IsMainThread()); - if (!mGrFaceInitialized) { + // When possible, the below code will use WASM as a sandboxing mechanism. + // At this time the wasm sandbox does not support threads. + // If Thebes is updated to make callst to the sandbox on multiple threaads, + // we need to make sure the underlying sandbox supports threading. + MOZ_ASSERT(NS_IsMainThread()); + mSandboxData = new GrSandboxData(); auto p_faceOps = mSandboxData->sandbox.malloc_in_sandbox(); @@ -643,8 +772,6 @@ bool gfxFontEntry::HasFontTable(uint32_t aTableTag) { } tainted_boolean_hint gfxFontEntry::HasGraphiteSpaceContextuals() { - // Graphite shaping is only available on the main thread. - MOZ_RELEASE_ASSERT(NS_IsMainThread()); LazyFlag flag = mHasGraphiteSpaceContextuals; if (flag == LazyFlag::Uninitialized) { auto face = GetGrFace(); @@ -961,7 +1088,7 @@ bool gfxFontEntry::ParseTrakTable() { if (len < sizeof(TrakHeader)) { return false; } - const auto* trak = reinterpret_cast(data); + auto trak = reinterpret_cast(data); uint16_t horizOffset = trak->horizOffset; if (trak->version != 0x00010000 || uint16_t(trak->format) != 0 || horizOffset == 0 || uint16_t(trak->reserved) != 0) { @@ -971,8 +1098,7 @@ bool gfxFontEntry::ParseTrakTable() { if (horizOffset > len - sizeof(TrackData)) { return false; } - const auto* trackData = - reinterpret_cast(data + horizOffset); + auto trackData = reinterpret_cast(data + horizOffset); uint16_t nTracks = trackData->nTracks; mNumTrakSizes = trackData->nSizes; if (nTracks == 0 || mNumTrakSizes < 2) { @@ -984,7 +1110,7 @@ bool gfxFontEntry::ParseTrakTable() { len - (sizeof(TrackData) + nTracks * sizeof(TrackTableEntry))) { return false; } - const auto* trackTable = reinterpret_cast( + auto trackTable = reinterpret_cast( data + horizOffset + sizeof(TrackData)); // Look for 'normal' tracking, bail out if no such track is present. unsigned trackIndex; @@ -1272,6 +1398,18 @@ void gfxFontEntry::GetVariationsForStyle(nsTArray& aResult, } } +size_t gfxFontEntry::FontTableHashEntry::SizeOfExcludingThis( + mozilla::MallocSizeOf aMallocSizeOf) const { + size_t n = 0; + if (mBlob) { + n += aMallocSizeOf(mBlob); + } + if (mSharedBlobData) { + n += mSharedBlobData->SizeOfIncludingThis(aMallocSizeOf); + } + return n; +} + void gfxFontEntry::AddSizeOfExcludingThis(MallocSizeOf aMallocSizeOf, FontListSizes* aSizes) const { aSizes->mFontListSize += mName.SizeOfExcludingThisIfUnshared(aMallocSizeOf); @@ -1281,19 +1419,11 @@ void gfxFontEntry::AddSizeOfExcludingThis(MallocSizeOf aMallocSizeOf, aSizes->mCharMapsSize += GetCharacterMap()->SizeOfIncludingThis(aMallocSizeOf); } - { AutoReadLock lock(mLock); - // Passing `false` to GetFontTableCache() here means it will not actually - // modify anything, just return the existing cache if any. - if (auto* cache = - const_cast(this)->GetFontTableCache(false)) { + if (mFontTableCache) { aSizes->mFontTableCacheSize += - cache->ShallowSizeOfIncludingThis(aMallocSizeOf); - for (auto it = cache->ConstIter(); !it.Done(); it.Next()) { - aSizes->mFontTableCacheSize += - it.Data().SizeOfExcludingThis(aMallocSizeOf); - } + mFontTableCache->SizeOfIncludingThis(aMallocSizeOf); } } @@ -1659,7 +1789,7 @@ void gfxFontFamily::FindFontForChar(GlobalFontMatch* aMatchData) { gfxFontEntry* fe = nullptr; float distance = INFINITY; - for (auto* e : entries) { + for (auto e : entries) { if (e->SkipDuringSystemFallback()) { continue; } diff --git a/icecat/gfx/thebes/gfxFontEntry.h b/icecat/gfx/thebes/gfxFontEntry.h index 0adee62a53..3194205222 100644 --- a/icecat/gfx/thebes/gfxFontEntry.h +++ b/icecat/gfx/thebes/gfxFontEntry.h @@ -8,7 +8,9 @@ #include #include +#include #include +#include "COLRFonts.h" #include "ThebesRLBoxTypes.h" #include "gfxFontUtils.h" #include "gfxFontVariations.h" @@ -26,6 +28,7 @@ #include "mozilla/TypedEnumBits.h" #include "mozilla/UniquePtr.h" #include "mozilla/intl/UnicodeScriptCodes.h" +#include "nsTHashMap.h" #include "nsDebug.h" #include "nsHashKeys.h" #include "nsISupports.h" @@ -88,15 +91,14 @@ class gfxCharacterMap : public gfxSparseBitSet { // new reference, or completes the release first!) void Release() { MOZ_ASSERT(int32_t(mRefCnt) > 0, "dup release"); - // We can't safely read mShared and mHash after we've decremented mRefCnt, - // so save them in locals here. Note that mShared is never reset to false + // We can't safely read this after we've decremented mRefCnt, so save it + // in a local variable here. Note that the value is never reset to false // once it has been set to true (when recording the cmap in the shared // table), so there's no risk of this resulting in a "false positive" when // tested later. A "false negative" is possible but harmless; it would // just mean we miss an opportunity to release a reference from the shared - // cmap table. mHash is set once before sharing and never changes. + // cmap table. bool isShared = mShared; - uint32_t hash = mHash; // Ensure we only access mRefCnt once, for consistency if the object is // being used by multiple threads. @@ -109,13 +111,7 @@ class gfxCharacterMap : public gfxSparseBitSet { if (isShared) { MOZ_ASSERT(count > 0); if (count == 1) { - // After --mRefCnt (above), `this` may be freed at any time (by another - // thread racing us into MaybeRemoveCmap and deleting first, or by the - // gfxPlatformFontList destructor's teardown path). We must not - // dereference `this` from here on. Pass the captured hash by value so - // MaybeRemoveCmap can perform the hashtable lookup without - // dereferencing the potentially-dangling pointer. - NotifyMaybeReleased(this, hash); + NotifyMaybeReleased(this); } return; } @@ -161,7 +157,7 @@ class gfxCharacterMap : public gfxSparseBitSet { void CalcHash() { mHash = GetChecksum(); } - static void NotifyMaybeReleased(gfxCharacterMap* aCmap, uint32_t aHash); + static void NotifyMaybeReleased(gfxCharacterMap* aCmap); // Only used when clearing the shared-cmap hashtable during shutdown. void ClearSharedFlag() { @@ -452,7 +448,7 @@ class gfxFontEntry { hb_face_t* mFace; }; - virtual AutoHBFace GetHBFace() { + AutoHBFace GetHBFace() { return AutoHBFace(hb_face_create_for_tables(HBGetTable, this, nullptr)); } @@ -754,6 +750,13 @@ class gfxFontEntry { // Usually, only one of these will actually be created for any given font // entry, depending on the font tables that are present. + // hb_face_t is refcounted internally, so each shaper that's using it will + // bump the ref count when it acquires the face, and "destroy" (release) it + // in its destructor. The font entry has only this non-owning reference to + // the face; when the face is deleted, it will tell the font entry to forget + // it, so that a new face will be created next time it is needed. + mozilla::Atomic mHBFace; + static hb_blob_t* HBGetTable(hb_face_t* face, uint32_t aTag, void* aUserData); // Callback that the hb_face will use to tell us when it is being deleted. @@ -808,35 +811,96 @@ class gfxFontEntry { int16_t mXMax = std::numeric_limits::max(); int16_t mYMax = std::numeric_limits::max(); - protected: - // Font table cache, used only by backend implementations that are not able - // to provide a cheap GetFontTable() that wraps already-cached data. - class FontTableBlob { + private: + /** + * Font table hashtable, to support GetFontTable for harfbuzz. + * + * The harfbuzz shaper (and potentially other clients) needs access to raw + * font table data. This needs to be cached so that it can be used + * repeatedly (each time we construct a text run; in some cases, for + * each character/glyph within the run) without re-fetching large tables + * every time. + * + * Because we may instantiate many gfxFonts for the same physical font + * file (at different sizes), we should ensure that they can share a + * single cached copy of the font tables. To do this, we implement table + * access and sharing on the fontEntry rather than the font itself. + * + * The default implementation uses GetFontTable() to read font table + * data into byte arrays, and wraps them in blobs which are registered in + * a hashtable. The hashtable can then return pre-existing blobs to + * harfbuzz. + * + * Harfbuzz will "destroy" the blobs when it is finished with them. When + * the last blob reference is removed, the FontTableBlobData user data + * will remove the blob from the hashtable if still registered. + */ + + class FontTableBlobData; + + /** + * FontTableHashEntry manages the entries of hb_blob_t's containing font + * table data. + * + * This is used to share font tables across fonts with the same + * font entry (but different sizes) for use by HarfBuzz. The hashtable + * does not own a strong reference to the blob, but keeps a weak pointer, + * managed by FontTableBlobData. Similarly FontTableBlobData keeps only a + * weak pointer to the hashtable, managed by FontTableHashEntry. + */ + + class FontTableHashEntry : public nsUint32HashKey { public: - FontTableBlob() = default; - explicit FontTableBlob(nsTArray&& aData); - FontTableBlob(const FontTableBlob& aOther) = delete; - FontTableBlob(FontTableBlob&& aOther) - : mData(std::move(aOther.mData)), mBlob(std::move(aOther.mBlob)) { - aOther.mBlob = nullptr; + // Declarations for nsTHashtable + + typedef nsUint32HashKey KeyClass; + typedef KeyClass::KeyType KeyType; + typedef KeyClass::KeyTypePointer KeyTypePointer; + + explicit FontTableHashEntry(KeyTypePointer aTag) + : KeyClass(aTag), mSharedBlobData(nullptr), mBlob(nullptr) {} + + // NOTE: This assumes the new entry belongs to the same hashtable as + // the old, because the mHashtable pointer in mSharedBlobData (if + // present) will not be updated. + FontTableHashEntry(FontTableHashEntry&& toMove) + : KeyClass(std::move(toMove)), + mSharedBlobData(std::move(toMove.mSharedBlobData)), + mBlob(std::move(toMove.mBlob)) { + toMove.mSharedBlobData = nullptr; + toMove.mBlob = nullptr; } - ~FontTableBlob() { hb_blob_destroy(mBlob); } - hb_blob_t* GetBlob() const { return hb_blob_reference(mBlob); } + ~FontTableHashEntry() { Clear(); } + + // FontTable/Blob API + + // Transfer (not copy) elements of aTable to a new hb_blob_t and + // return ownership to the caller. A weak reference to the blob is + // recorded in the font entry's table cache so that others may use + // the same table. + hb_blob_t* ShareTableAndGetBlob(nsTArray&& aTable, + gfxFontEntry* aFontEntry); + + // Return a strong reference to the blob. + // Callers must hb_blob_destroy the returned blob. + hb_blob_t* GetBlob() const; + + void Clear(); size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const; - protected: - nsTArray mData; - hb_blob_t* mBlob = nullptr; + private: + static void DeleteFontTableBlobData(void* aBlobData); + // not implemented + FontTableHashEntry& operator=(FontTableHashEntry& toCopy); + + FontTableBlobData* mSharedBlobData; + hb_blob_t* mBlob; }; - using FontTableCache = nsTHashMap; - // Get the font table cache, if this backend uses it. Backends or individual - // font entries that don't want to use the cache just return nullptr. - // If aCreate is false, a new cache will not be created, but if one already - // exists it will be returned. - virtual FontTableCache* GetFontTableCache(bool aCreate) = 0; + using FontTableCache = nsTHashtable; + mozilla::UniquePtr mFontTableCache MOZ_GUARDED_BY(mLock); }; MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(gfxFontEntry::RangeFlags) diff --git a/icecat/gfx/thebes/gfxGDIFontList.cpp b/icecat/gfx/thebes/gfxGDIFontList.cpp index 75a6e4e688..58295e919b 100644 --- a/icecat/gfx/thebes/gfxGDIFontList.cpp +++ b/icecat/gfx/thebes/gfxGDIFontList.cpp @@ -133,29 +133,12 @@ GDIFontEntry::GDIFontEntry(const nsACString& aFaceName, InitLogFont(aFaceName, aFontType); } -GDIFontEntry::~GDIFontEntry() { - auto* cache = mFontTableCache.exchange(nullptr); - delete cache; -} - gfxFontEntry* GDIFontEntry::Clone() const { MOZ_ASSERT(!IsUserFont(), "we can only clone installed fonts!"); return new GDIFontEntry(Name(), mFontType, SlantStyle(), Weight(), Stretch(), nullptr); } -gfxFontEntry::FontTableCache* GDIFontEntry::GetFontTableCache( - bool aCreate) { - // Create the cache if it does not yet exist. - if (!mFontTableCache && aCreate) { - auto* cache = new FontTableCache(); - if (!mFontTableCache.compareExchange(nullptr, cache)) { - delete cache; - } - } - return mFontTableCache; -} - nsresult GDIFontEntry::ReadCMAP(FontInfoData* aFontInfoData) { AUTO_PROFILER_LABEL("GDIFontEntry::ReadCMAP", OTHER); diff --git a/icecat/gfx/thebes/gfxGDIFontList.h b/icecat/gfx/thebes/gfxGDIFontList.h index 315fa8e5f6..685cc4070b 100644 --- a/icecat/gfx/thebes/gfxGDIFontList.h +++ b/icecat/gfx/thebes/gfxGDIFontList.h @@ -94,8 +94,6 @@ enum gfxWindowsFontType { // This replaces FontEntry from gfxWindowsFonts.h/cpp. class GDIFontEntry final : public gfxFontEntry { public: - virtual ~GDIFontEntry(); - LPLOGFONTW GetLogFont() { return &mLogFont; } nsresult ReadCMAP(FontInfoData* aFontInfoData = nullptr) override; @@ -165,8 +163,6 @@ class GDIFontEntry final : public gfxFontEntry { SlantStyleRange aStyle, WeightRange aWeight, StretchRange aStretch, gfxUserFontData* aUserFontData); - FontTableCache* GetFontTableCache(bool aCreate) override; - void InitLogFont(const nsACString& aName, gfxWindowsFontType aFontType); gfxFont* CreateFontInstance(const gfxFontStyle* aFontStyle) override; @@ -180,8 +176,6 @@ class GDIFontEntry final : public gfxFontEntry { LOGFONTW mLogFont; mozilla::ThreadSafeWeakPtr mUnscaledFont; - - mozilla::Atomic mFontTableCache; }; // a single font family, referencing one or more faces diff --git a/icecat/gfx/thebes/gfxHarfBuzzShaper.cpp b/icecat/gfx/thebes/gfxHarfBuzzShaper.cpp index 47f82e7d48..fd9ac6684e 100644 --- a/icecat/gfx/thebes/gfxHarfBuzzShaper.cpp +++ b/icecat/gfx/thebes/gfxHarfBuzzShaper.cpp @@ -37,10 +37,30 @@ using namespace mozilla::unicode; // for Unicode property lookup gfxHarfBuzzShaper::gfxHarfBuzzShaper(gfxFont* aFont) : gfxFontShaper(aFont), + mHBFont(nullptr), + mBuffer(nullptr), + mCallbackData(), + mKernTable(nullptr), + mHmtxTable(nullptr), + mVmtxTable(nullptr), + mVORGTable(nullptr), + mLocaTable(nullptr), + mGlyfTable(nullptr), + mCmapTable(nullptr), + mCmapFormat(-1), + mSubtableOffset(0), + mUVSTableOffset(0), + mNumLongHMetrics(0), + mNumLongVMetrics(0), + mDefaultVOrg(-1.0), mUseFontGetGlyph(aFont->ProvidesGetGlyph()), - mUseFontGlyphWidths(aFont->ProvidesGlyphWidths()) { - (void)NS_WARN_IF(!Initialize()); -} + mIsSymbolFont(false), + mUseFontGlyphWidths(aFont->ProvidesGlyphWidths()), + mInitialized(false), + mVerticalInitialized(false), + mUseVerticalPresentationForms(false), + mLoadedLocaGlyf(false), + mLocaLongOffsets(false) {} gfxHarfBuzzShaper::~gfxHarfBuzzShaper() { // hb_*_destroy functions are safe to call on nullptr @@ -59,16 +79,15 @@ gfxHarfBuzzShaper::~gfxHarfBuzzShaper() { hb_codepoint_t gfxHarfBuzzShaper::GetGlyphUncached( hb_codepoint_t unicode) const { - // Note that the fields used here are set during Initialize() and then never - // modified, so locking is not necessary. hb_codepoint_t gid = 0; if (mUseFontGetGlyph) { + MutexAutoUnlock unlock(mCacheLock); gid = mFont->GetGlyph(unicode, 0); } else { // we only instantiate a harfbuzz shaper if there's a cmap available - MOZ_ASSERT(mCmapTable && (mCmapFormat > 0) && (mSubtableOffset > 0), - "cmap data not correctly set up, expect disaster"); + NS_ASSERTION(mCmapTable && (mCmapFormat > 0) && (mSubtableOffset > 0), + "cmap data not correctly set up, expect disaster"); uint32_t length; const uint8_t* data = (const uint8_t*)hb_blob_get_data(mCmapTable, &length); @@ -128,21 +147,30 @@ hb_codepoint_t gfxHarfBuzzShaper::GetGlyphUncached( hb_codepoint_t gfxHarfBuzzShaper::GetNominalGlyph( hb_codepoint_t unicode) const { - RecursiveMutexAutoLock lock(mMutex); + MutexAutoLock lock(mCacheLock); auto cached = mCmapCache->Lookup(unicode); if (cached) { return cached.Data().mGlyphId; } + // This call can temporarily unlock the cache if mUseFontGetGlyph is true. hb_codepoint_t gid = GetGlyphUncached(unicode); - mCmapCache->Put(unicode, CmapCacheData{unicode, gid}); + + if (mUseFontGetGlyph) { + // GetGlyphUncached may have invalidated our earlier cache lookup! + mCmapCache->Put(unicode, CmapCacheData{unicode, gid}); + } else { + cached.Set(CmapCacheData{unicode, gid}); + } + return gid; } unsigned int gfxHarfBuzzShaper::GetNominalGlyphs( unsigned int count, const hb_codepoint_t* first_unicode, unsigned int unicode_stride, hb_codepoint_t* first_glyph, - unsigned int glyph_stride) const { + unsigned int glyph_stride) { + MutexAutoLock lock(mCacheLock); unsigned int result = 0; while (result < count) { hb_codepoint_t usv = *first_unicode; @@ -274,18 +302,17 @@ hb_codepoint_t gfxHarfBuzzShaper::GetVerticalPresentationForm( return charPair ? charPair[1] : 0; } -hb_bool_t gfxHarfBuzzShaper::HBGetNominalGlyph(hb_font_t* font, void* font_data, - hb_codepoint_t unicode, - hb_codepoint_t* glyph, - void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); +static hb_bool_t HBGetNominalGlyph(hb_font_t* font, void* font_data, + hb_codepoint_t unicode, + hb_codepoint_t* glyph, void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); - if (shaper->UseVerticalPresentationForms()) { + if (fcd->mShaper->UseVerticalPresentationForms()) { hb_codepoint_t verticalForm = gfxHarfBuzzShaper::GetVerticalPresentationForm(unicode); if (verticalForm) { - *glyph = shaper->GetNominalGlyph(verticalForm); + *glyph = fcd->mShaper->GetNominalGlyph(verticalForm); if (*glyph != 0) { return true; } @@ -293,39 +320,37 @@ hb_bool_t gfxHarfBuzzShaper::HBGetNominalGlyph(hb_font_t* font, void* font_data, // fall back to the non-vertical form if we didn't find an alternate } - *glyph = shaper->GetNominalGlyph(unicode); + *glyph = fcd->mShaper->GetNominalGlyph(unicode); return *glyph != 0; } -/* static */ unsigned int gfxHarfBuzzShaper::HBGetNominalGlyphs( +static unsigned int HBGetNominalGlyphs( hb_font_t* font, void* font_data, unsigned int count, const hb_codepoint_t* first_unicode, unsigned int unicode_stride, hb_codepoint_t* first_glyph, unsigned int glyph_stride, void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); - if (shaper->UseVerticalPresentationForms()) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); + if (fcd->mShaper->UseVerticalPresentationForms()) { return 0; } - // GetNominalGlyphs requires that the mMutex is held, which is guaranteed - // because we're inside a callback from hb_shape. - MOZ_PUSH_IGNORE_THREAD_SAFETY - return shaper->GetNominalGlyphs(count, first_unicode, unicode_stride, - first_glyph, glyph_stride); - MOZ_POP_THREAD_SAFETY + return fcd->mShaper->GetNominalGlyphs(count, first_unicode, unicode_stride, + first_glyph, glyph_stride); } -/* static */ hb_bool_t gfxHarfBuzzShaper::HBGetVariationGlyph( - hb_font_t* font, void* font_data, hb_codepoint_t unicode, - hb_codepoint_t variation_selector, hb_codepoint_t* glyph, void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); +static hb_bool_t HBGetVariationGlyph(hb_font_t* font, void* font_data, + hb_codepoint_t unicode, + hb_codepoint_t variation_selector, + hb_codepoint_t* glyph, void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); - if (shaper->UseVerticalPresentationForms()) { + if (fcd->mShaper->UseVerticalPresentationForms()) { hb_codepoint_t verticalForm = gfxHarfBuzzShaper::GetVerticalPresentationForm(unicode); if (verticalForm) { - *glyph = shaper->GetVariationGlyph(verticalForm, variation_selector); + *glyph = + fcd->mShaper->GetVariationGlyph(verticalForm, variation_selector); if (*glyph != 0) { return true; } @@ -333,7 +358,7 @@ hb_bool_t gfxHarfBuzzShaper::HBGetNominalGlyph(hb_font_t* font, void* font_data, // fall back to the non-vertical form if we didn't find an alternate } - *glyph = shaper->GetVariationGlyph(unicode, variation_selector); + *glyph = fcd->mShaper->GetVariationGlyph(unicode, variation_selector); return *glyph != 0; } @@ -380,12 +405,13 @@ hb_position_t gfxHarfBuzzShaper::GetGlyphHAdvanceUncached( hb_position_t gfxHarfBuzzShaper::GetGlyphHAdvance(hb_codepoint_t glyph) const { if (mUseFontGlyphWidths) { - RecursiveMutexAutoLock lock(mMutex); + MutexAutoLock lock(mCacheLock); if (auto cached = mWidthCache->Lookup(glyph)) { return cached.Data().mAdvance; } - + mCacheLock.Unlock(); hb_position_t advance = GetFont()->GetGlyphWidth(glyph); + mCacheLock.Lock(); mWidthCache->Put(glyph, WidthCacheData{glyph, advance}); return advance; } @@ -398,14 +424,19 @@ void gfxHarfBuzzShaper::GetGlyphHAdvances(unsigned int count, unsigned int glyph_stride, hb_position_t* first_advance, unsigned int advance_stride) const { - // This is called with the mMutex mutex already held. if (mUseFontGlyphWidths) { + // Take the cache lock here, hoping we'll be able to retrieve a bunch of + // widths from the cache for the cost of a single locking operation. + MutexAutoLock lock(mCacheLock); for (unsigned int i = 0; i < count; ++i) { hb_codepoint_t gid = *first_glyph; if (auto cached = mWidthCache->Lookup(gid)) { *first_advance = cached.Data().mAdvance; } else { + // Unlock to avoid deadlock if the font needs internal locking. + mCacheLock.Unlock(); hb_position_t advance = GetFont()->GetGlyphWidth(gid); + mCacheLock.Lock(); mWidthCache->Put(gid, WidthCacheData{gid, advance}); *first_advance = advance; } @@ -427,9 +458,7 @@ void gfxHarfBuzzShaper::GetGlyphHAdvances(unsigned int count, } hb_position_t gfxHarfBuzzShaper::GetGlyphVAdvance(hb_codepoint_t glyph) { - if (!mVerticalInitialized) { - InitializeVertical(); - } + InitializeVertical(); if (!mVmtxTable) { // Must be a "vertical" font that doesn't actually have vertical metrics. @@ -454,41 +483,39 @@ hb_position_t gfxHarfBuzzShaper::GetGlyphVAdvance(hb_codepoint_t glyph) { uint16_t(metrics->metrics[glyph].advanceWidth)); } -/* static */ hb_position_t gfxHarfBuzzShaper::HBGetGlyphHAdvance( - hb_font_t* font, void* font_data, hb_codepoint_t glyph, void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); - return shaper->GetGlyphHAdvance(glyph); +static hb_position_t HBGetGlyphHAdvance(hb_font_t* font, void* font_data, + hb_codepoint_t glyph, void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); + return fcd->mShaper->GetGlyphHAdvance(glyph); } -/* static */ void gfxHarfBuzzShaper::HBGetGlyphHAdvances( - hb_font_t* font, void* font_data, unsigned int count, - const hb_codepoint_t* first_glyph, unsigned int glyph_stride, - hb_position_t* first_advance, unsigned int advance_stride, - void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); - - // GetGlyphHAdvances requires that mMutex is held, which is guaranteed - // because we're inside a callback from hb_shape. - MOZ_PUSH_IGNORE_THREAD_SAFETY - shaper->GetGlyphHAdvances(count, first_glyph, glyph_stride, first_advance, - advance_stride); - MOZ_POP_THREAD_SAFETY +static void HBGetGlyphHAdvances(hb_font_t* font, void* font_data, + unsigned int count, + const hb_codepoint_t* first_glyph, + unsigned int glyph_stride, + hb_position_t* first_advance, + unsigned int advance_stride, void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); + fcd->mShaper->GetGlyphHAdvances(count, first_glyph, glyph_stride, + first_advance, advance_stride); } -/* static */ hb_position_t gfxHarfBuzzShaper::HBGetGlyphVAdvance( - hb_font_t* font, void* font_data, hb_codepoint_t glyph, void* user_data) { - gfxHarfBuzzShaper* shaper = static_cast(font_data); +static hb_position_t HBGetGlyphVAdvance(hb_font_t* font, void* font_data, + hb_codepoint_t glyph, void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); // Currently, we don't offer gfxFont subclasses a method to override this // and provide hinted platform-specific vertical advances (analogous to the // GetGlyphWidth method for horizontal advances). If that proves necessary, // we'll add a new gfxFont method and call it from here. - hb_position_t advance = shaper->GetGlyphVAdvance(glyph); + hb_position_t advance = fcd->mShaper->GetGlyphVAdvance(glyph); if (advance < 0) { // Not available (e.g. broken metrics in the font); use a fallback value. - advance = FloatToFixed( - shaper->GetFont()->GetMetrics(nsFontMetrics::eVertical).aveCharWidth); + advance = FloatToFixed(fcd->mShaper->GetFont() + ->GetMetrics(nsFontMetrics::eVertical) + .aveCharWidth); } // We negate the value from GetGlyphVAdvance here because harfbuzz shapes // with a coordinate system where positive is upwards, whereas the inline @@ -508,12 +535,12 @@ struct VORGrec { AutoSwap_PRInt16 vertOriginY; }; -/* static */ hb_bool_t gfxHarfBuzzShaper::HBGetGlyphVOrigin( - hb_font_t* font, void* font_data, hb_codepoint_t glyph, hb_position_t* x, - hb_position_t* y, void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); - shaper->GetGlyphVOrigin(glyph, x, y); +static hb_bool_t HBGetGlyphVOrigin(hb_font_t* font, void* font_data, + hb_codepoint_t glyph, hb_position_t* x, + hb_position_t* y, void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); + fcd->mShaper->GetGlyphVOrigin(glyph, x, y); return true; } @@ -617,12 +644,13 @@ void gfxHarfBuzzShaper::GetGlyphVOrigin(hb_codepoint_t aGlyph, *aY = mDefaultVOrg; } -/* static */ hb_bool_t gfxHarfBuzzShaper::HBGetGlyphExtents( - hb_font_t* font, void* font_data, hb_codepoint_t glyph, - hb_glyph_extents_t* extents, void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); - return shaper->GetGlyphExtents(glyph, extents); +static hb_bool_t HBGetGlyphExtents(hb_font_t* font, void* font_data, + hb_codepoint_t glyph, + hb_glyph_extents_t* extents, + void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); + return fcd->mShaper->GetGlyphExtents(glyph, extents); } // Find the data for glyph ID |aGlyph| in the 'glyf' table, if present. @@ -659,17 +687,15 @@ const gfxHarfBuzzShaper::Glyf* gfxHarfBuzzShaper::FindGlyf( uint32_t len; const char* data = hb_blob_get_data(mLocaTable, &len); if (mLocaLongOffsets) { - // We read offsets[aGlyph] and offsets[aGlyph + 1], so require aGlyph + 2 - // entries. - if ((aGlyph + 2) * sizeof(AutoSwap_PRUint32) > len) { + if ((aGlyph + 1) * sizeof(AutoSwap_PRUint32) > len) { return nullptr; } const AutoSwap_PRUint32* offsets = reinterpret_cast(data); offset = offsets[aGlyph]; - *aEmptyGlyf = (offset == uint32_t(offsets[aGlyph + 1])); + *aEmptyGlyf = (offset == uint16_t(offsets[aGlyph + 1])); } else { - if ((aGlyph + 2) * sizeof(AutoSwap_PRUint16) > len) { + if ((aGlyph + 1) * sizeof(AutoSwap_PRUint16) > len) { return nullptr; } const AutoSwap_PRUint16* offsets = @@ -719,9 +745,10 @@ hb_bool_t gfxHarfBuzzShaper::GetGlyphExtents( return true; } -/* static */ hb_bool_t gfxHarfBuzzShaper::HBGetContourPoint( - hb_font_t* font, void* font_data, unsigned int point_index, - hb_codepoint_t glyph, hb_position_t* x, hb_position_t* y, void* user_data) { +static hb_bool_t HBGetContourPoint(hb_font_t* font, void* font_data, + unsigned int point_index, + hb_codepoint_t glyph, hb_position_t* x, + hb_position_t* y, void* user_data) { /* not yet implemented - no support for used of hinted contour points to fine-tune anchor positions in GPOS AnchorFormat2 */ return false; @@ -1096,12 +1123,13 @@ hb_position_t gfxHarfBuzzShaper::GetHKerning(uint16_t aFirstGlyph, return 0; } -/* static */ hb_position_t gfxHarfBuzzShaper::HBGetHKerning( - hb_font_t* font, void* font_data, hb_codepoint_t first_glyph, - hb_codepoint_t second_glyph, void* user_data) { - const gfxHarfBuzzShaper* shaper = - static_cast(font_data); - return shaper->GetHKerning(first_glyph, second_glyph); +static hb_position_t HBGetHKerning(hb_font_t* font, void* font_data, + hb_codepoint_t first_glyph, + hb_codepoint_t second_glyph, + void* user_data) { + const gfxHarfBuzzShaper::FontCallbackData* fcd = + static_cast(font_data); + return fcd->mShaper->GetHKerning(first_glyph, second_glyph); } /* @@ -1188,9 +1216,11 @@ MOZ_RUNINIT static const hb_script_t sMathScript = hb_ot_tag_to_script(HB_TAG('m', 'a', 't', 'h')); bool gfxHarfBuzzShaper::Initialize() { - // We don't need to lock here, as we're just initializing the shaper and no - // other thread can yet be using it. - MOZ_PUSH_IGNORE_THREAD_SAFETY + if (mInitialized) { + return mHBFont != nullptr; + } + mInitialized = true; + mCallbackData.mShaper = this; if (!sHBFontFuncs) { // static function callback pointers, initialized by the first @@ -1263,6 +1293,9 @@ bool gfxHarfBuzzShaper::Initialize() { mNumGlyphs = uint16_t(maxp->numGlyphs); } + // We don't need to take the cache lock here, as we're just initializing the + // shaper and no other thread can yet be using it. + MOZ_PUSH_IGNORE_THREAD_SAFETY mCmapCache = MakeUnique(); if (mUseFontGlyphWidths) { @@ -1274,6 +1307,7 @@ bool gfxHarfBuzzShaper::Initialize() { return false; } } + MOZ_POP_THREAD_SAFETY mBuffer = hb_buffer_create(); hb_buffer_set_unicode_funcs(mBuffer, sHBUnicodeFuncs); @@ -1284,16 +1318,14 @@ bool gfxHarfBuzzShaper::Initialize() { mFont->GetFontEntry()->HasFontTable(TRUETYPE_TAG('C', 'F', 'F', ' ')) ? sNominalGlyphFunc : sHBFontFuncs; - mHBFont = CreateHBFont(mFont, funcs, this); - - MOZ_POP_THREAD_SAFETY + mHBFont = CreateHBFont(mFont, funcs, &mCallbackData); return true; } hb_font_t* gfxHarfBuzzShaper::CreateHBFont(gfxFont* aFont, hb_font_funcs_t* aFontFuncs, - void* aCallbackData) { + FontCallbackData* aCallbackData) { auto face(aFont->GetFontEntry()->GetHBFace()); hb_font_t* result = hb_font_create(face); @@ -1363,8 +1395,9 @@ bool gfxHarfBuzzShaper::LoadHmtxTable() { void gfxHarfBuzzShaper::InitializeVertical() { // We only do this once. If we don't have a mHmtxTable after that, // we'll be making up fallback metrics. - RecursiveMutexAutoLock lock(mMutex); - + if (mVerticalInitialized) { + return; + } mVerticalInitialized = true; if (!mHmtxTable) { @@ -1426,16 +1459,14 @@ bool gfxHarfBuzzShaper::ShapeText(DrawTarget* aDrawTarget, nsAtom* aLanguage, bool aVertical, RoundingFlags aRounding, gfxShapedText* aShapedText) { - // gfxFont (and hence this shaper) may be shared across threads via the - // global font cache; serialize ShapeText so that mBuffer and other mutable - // per-call state cannot be touched concurrently. - RecursiveMutexAutoLock lock(mMutex); - mUseVerticalPresentationForms = false; + + if (!Initialize()) { + return false; + } + if (aVertical) { - if (!mVerticalInitialized) { - InitializeVertical(); - } + InitializeVertical(); if (!mFont->GetFontEntry()->SupportsOpenTypeFeature( aScript, HB_TAG('v', 'e', 'r', 't'))) { mUseVerticalPresentationForms = true; diff --git a/icecat/gfx/thebes/gfxHarfBuzzShaper.h b/icecat/gfx/thebes/gfxHarfBuzzShaper.h index b5cc064ab2..6e930eb12c 100644 --- a/icecat/gfx/thebes/gfxHarfBuzzShaper.h +++ b/icecat/gfx/thebes/gfxHarfBuzzShaper.h @@ -12,53 +12,24 @@ #include "nsUnicodeProperties.h" #include "mozilla/gfx/2D.h" #include "mozilla/MruCache.h" -#include "mozilla/RecursiveMutex.h" +#include "mozilla/Mutex.h" class gfxHarfBuzzShaper : public gfxFontShaper { - // private static methods for HarfBuzz callbacks: - static hb_bool_t HBGetNominalGlyph(hb_font_t* font, void* font_data, - hb_codepoint_t unicode, - hb_codepoint_t* glyph, void* user_data); - static unsigned int HBGetNominalGlyphs( - hb_font_t* font, void* font_data, unsigned int count, - const hb_codepoint_t* first_unicode, unsigned int unicode_stride, - hb_codepoint_t* first_glyph, unsigned int glyph_stride, void* user_data); - static hb_bool_t HBGetVariationGlyph(hb_font_t* font, void* font_data, - hb_codepoint_t unicode, - hb_codepoint_t variation_selector, - hb_codepoint_t* glyph, void* user_data); - static hb_position_t HBGetGlyphHAdvance(hb_font_t* font, void* font_data, - hb_codepoint_t glyph, - void* user_data); - static void HBGetGlyphHAdvances(hb_font_t* font, void* font_data, - unsigned int count, - const hb_codepoint_t* first_glyph, - unsigned int glyph_stride, - hb_position_t* first_advance, - unsigned int advance_stride, void* user_data); - static hb_position_t HBGetGlyphVAdvance(hb_font_t* font, void* font_data, - hb_codepoint_t glyph, - void* user_data); - static hb_bool_t HBGetGlyphVOrigin(hb_font_t* font, void* font_data, - hb_codepoint_t glyph, hb_position_t* x, - hb_position_t* y, void* user_data); - static hb_bool_t HBGetGlyphExtents(hb_font_t* font, void* font_data, - hb_codepoint_t glyph, - hb_glyph_extents_t* extents, - void* user_data); - static hb_bool_t HBGetContourPoint(hb_font_t* font, void* font_data, - unsigned int point_index, - hb_codepoint_t glyph, hb_position_t* x, - hb_position_t* y, void* user_data); - static hb_position_t HBGetHKerning(hb_font_t* font, void* font_data, - hb_codepoint_t first_glyph, - hb_codepoint_t second_glyph, - void* user_data); - public: explicit gfxHarfBuzzShaper(gfxFont* aFont); virtual ~gfxHarfBuzzShaper(); + /* + * For HarfBuzz font callback functions, font_data is a ptr to a + * FontCallbackData struct + */ + struct FontCallbackData { + gfxHarfBuzzShaper* mShaper; + }; + + // Initializes the shaper and returns whether this was successful. + bool Initialize(); + // Returns whether the shaper has been successfully initialized. bool IsInitialized() const { return mHBFont != nullptr; } @@ -67,20 +38,41 @@ class gfxHarfBuzzShaper : public gfxFontShaper { nsAtom* aLanguage, bool aVertical, RoundingFlags aRounding, gfxShapedText* aShapedText) override; + // get a given font table in harfbuzz blob form + hb_blob_t* GetFontTable(hb_tag_t aTag) const; + // map unicode character to glyph ID hb_codepoint_t GetNominalGlyph(hb_codepoint_t unicode) const; - + unsigned int GetNominalGlyphs(unsigned int count, + const hb_codepoint_t* first_unicode, + unsigned int unicode_stride, + hb_codepoint_t* first_glyph, + unsigned int glyph_stride); hb_codepoint_t GetVariationGlyph(hb_codepoint_t unicode, hb_codepoint_t variation_selector) const; // get harfbuzz glyph advance, in font design units hb_position_t GetGlyphHAdvance(hb_codepoint_t glyph) const; + void GetGlyphHAdvances(unsigned int count, const hb_codepoint_t* first_glyph, + unsigned int glyph_stride, + hb_position_t* first_advance, + unsigned int advance_stride) const; // Get vertical glyph advance, or -1 if not available; caller should check // for a negative result and provide a fallback or fail, as appropriate. hb_position_t GetGlyphVAdvance(hb_codepoint_t glyph); - hb_font_t* GetHBFont() const { return mHBFont; } + void GetGlyphVOrigin(hb_codepoint_t aGlyph, hb_position_t* aX, + hb_position_t* aY) const; + + hb_position_t GetHKerning(uint16_t aFirstGlyph, uint16_t aSecondGlyph) const; + + hb_bool_t GetGlyphExtents(hb_codepoint_t aGlyph, + hb_glyph_extents_t* aExtents) const; + + bool UseVerticalPresentationForms() const { + return mUseVerticalPresentationForms; + } static hb_script_t GetHBScriptUsedForShaping(Script aScript) { // Decide what harfbuzz script code will be used for shaping @@ -103,48 +95,23 @@ class gfxHarfBuzzShaper : public gfxFontShaper { // bounds, etc; if not, the built-in hb_ot font functions will be used. static hb_font_t* CreateHBFont(gfxFont* aFont, hb_font_funcs_t* aFontFuncs = nullptr, - void* aCallbackData = nullptr); + FontCallbackData* aCallbackData = nullptr); + + hb_font_t* GetHBFont() const { return mHBFont; } + hb_face_t* GetHBFace() const { return hb_font_get_face(mHBFont); } protected: - // Initializes the shaper and returns whether this was successful. - bool Initialize(); - - // get a given font table in harfbuzz blob form - hb_blob_t* GetFontTable(hb_tag_t aTag) const; - - unsigned int GetNominalGlyphs(unsigned int count, - const hb_codepoint_t* first_unicode, - unsigned int unicode_stride, - hb_codepoint_t* first_glyph, - unsigned int glyph_stride) const - MOZ_REQUIRES(mMutex); - - void GetGlyphHAdvances(unsigned int count, const hb_codepoint_t* first_glyph, - unsigned int glyph_stride, - hb_position_t* first_advance, - unsigned int advance_stride) const - MOZ_REQUIRES(mMutex); - - void GetGlyphVOrigin(hb_codepoint_t aGlyph, hb_position_t* aX, - hb_position_t* aY) const; - - hb_position_t GetHKerning(uint16_t aFirstGlyph, uint16_t aSecondGlyph) const; - - hb_bool_t GetGlyphExtents(hb_codepoint_t aGlyph, - hb_glyph_extents_t* aExtents) const; - - bool UseVerticalPresentationForms() const { - return mUseVerticalPresentationForms; - } - - hb_codepoint_t GetGlyphUncached(hb_codepoint_t unicode) const; + // This is called with the cache locked, but if mUseFontGetGlyph is true, it + // may unlock it temporarily. So in this case, it may invalidate an earlier + // cache entry reference. + hb_codepoint_t GetGlyphUncached(hb_codepoint_t unicode) const + MOZ_REQUIRES(mCacheLock); hb_position_t GetGlyphHAdvanceUncached(hb_codepoint_t gid) const; nsresult SetGlyphsFromRun(gfxShapedText* aShapedText, uint32_t aOffset, uint32_t aLength, const char16_t* aText, - bool aVertical, RoundingFlags aRounding) - MOZ_REQUIRES(mMutex); + bool aVertical, RoundingFlags aRounding); // retrieve glyph positions, applying advance adjustments and attachments // returns results in appUnits @@ -166,20 +133,12 @@ class gfxHarfBuzzShaper : public gfxFontShaper { const Glyf* FindGlyf(hb_codepoint_t aGlyph, bool* aEmptyGlyf) const; // size-specific font object, owned by the gfxHarfBuzzShaper - hb_font_t* mHBFont = nullptr; + hb_font_t* mHBFont; - // Held for the duration of ShapeText(): the shaper (and its hb_buffer_t) - // is shared across threads via the global gfxFontCache, so concurrent - // ShapeText() calls must be serialized to avoid racing on mBuffer and - // other mutable per-call state. - // GetNominalGlyph() and GetGlyphHAdvance() also need to lock the mutex - // because they may be called directly from thebes code, as well as via - // harfbuzz callbacks. - mutable mozilla::RecursiveMutex mMutex = - mozilla::RecursiveMutex("gfxHarfBuzzShaper::mMutex"); + // harfbuzz buffer for the shaping process + hb_buffer_t* mBuffer; - // harfbuzz buffer for the shaping process. - hb_buffer_t* mBuffer MOZ_GUARDED_BY(mMutex) = nullptr; + mutable mozilla::Mutex mCacheLock = mozilla::Mutex("shaperCacheMutex"); struct CmapCacheData { uint32_t mCodepoint; @@ -194,7 +153,7 @@ class gfxHarfBuzzShaper : public gfxFontShaper { } }; - mutable mozilla::UniquePtr mCmapCache MOZ_GUARDED_BY(mMutex); + mutable mozilla::UniquePtr mCmapCache MOZ_GUARDED_BY(mCacheLock); struct WidthCacheData { hb_codepoint_t mGlyphId; @@ -209,7 +168,9 @@ class gfxHarfBuzzShaper : public gfxFontShaper { } }; - mutable mozilla::UniquePtr mWidthCache MOZ_GUARDED_BY(mMutex); + mutable mozilla::UniquePtr mWidthCache MOZ_GUARDED_BY(mCacheLock); + + FontCallbackData mCallbackData; // Following table references etc are declared "mutable" because the // harfbuzz callback functions take a const ptr to the shaper, but @@ -217,68 +178,66 @@ class gfxHarfBuzzShaper : public gfxFontShaper { // in the font. // Old-style TrueType kern table, if we're not doing GPOS kerning - mutable hb_blob_t* mKernTable = nullptr; + mutable hb_blob_t* mKernTable; // Cached copy of the hmtx table. - mutable hb_blob_t* mHmtxTable = nullptr; + mutable hb_blob_t* mHmtxTable; // For vertical fonts, cached vmtx and VORG table, if present. - mutable hb_blob_t* mVmtxTable = nullptr; - mutable hb_blob_t* mVORGTable = nullptr; + mutable hb_blob_t* mVmtxTable; + mutable hb_blob_t* mVORGTable; // And for vertical TrueType (not CFF) fonts that have vmtx, // we also use loca and glyf to get glyph bounding boxes. - mutable hb_blob_t* mLocaTable = nullptr; - mutable hb_blob_t* mGlyfTable = nullptr; + mutable hb_blob_t* mLocaTable; + mutable hb_blob_t* mGlyfTable; // Cached pointer to cmap subtable to be used for char-to-glyph mapping. // This comes from GetFontTablePtr; if it is non-null, our destructor // must call ReleaseFontTablePtr to avoid permanently caching the table. - // These are set during Initialize(), before any use of the shaper. - hb_blob_t* mCmapTable = nullptr; - int32_t mCmapFormat = -1; - uint32_t mSubtableOffset = 0; - uint32_t mUVSTableOffset = 0; + mutable hb_blob_t* mCmapTable; + mutable int32_t mCmapFormat; + mutable uint32_t mSubtableOffset; + mutable uint32_t mUVSTableOffset; // Cached copy of numLongMetrics field from the hhea table, // for use when looking up glyph metrics; initialized to 0 by the // constructor so we can tell it hasn't been set yet. // This is a signed value so that we can use -1 to indicate // an error (if the hhea table was not available). - mutable int32_t mNumLongHMetrics = 0; + mutable int32_t mNumLongHMetrics; // Similarly for vhea if it's a vertical font. - mutable int32_t mNumLongVMetrics = 0; + mutable int32_t mNumLongVMetrics; // Default y-coordinate for glyph vertical origin, used if the font // does not actually have vertical-layout metrics. - mutable gfxFloat mDefaultVOrg = -1.0; + mutable gfxFloat mDefaultVOrg; // Number of glyphs in the font (set from 'maxp' during initialization). uint32_t mNumGlyphs = 0; // Whether the font implements GetGlyph, or we should read tables // directly - bool mUseFontGetGlyph = false; + bool mUseFontGetGlyph; // Whether the font is an MS Symbol-encoded font, in which case we will // try remapping U+0020..00FF to U+F020..F0FF for characters in the U+00xx // range that are otherwise unsupported. - bool mIsSymbolFont = false; + bool mIsSymbolFont; // Whether the font implements GetGlyphWidth, or we should read tables // directly to get ideal widths - bool mUseFontGlyphWidths = false; + bool mUseFontGlyphWidths; + + bool mInitialized; + bool mVerticalInitialized; // Whether to use vertical presentation forms for CJK characters // when available (only set if the 'vert' feature is not available). - bool mUseVerticalPresentationForms = false; + bool mUseVerticalPresentationForms; // these are set from the FindGlyf callback on first use of the glyf data - mutable bool mLoadedLocaGlyf = false; - mutable bool mLocaLongOffsets = false; - - // This is atomic so that we can check it without necessarily holding the - // lock. - std::atomic mVerticalInitialized = false; + mutable bool mLoadedLocaGlyf; + mutable bool mLocaLongOffsets; }; #endif /* GFX_HARFBUZZSHAPER_H */ diff --git a/icecat/gfx/thebes/gfxPlatform.cpp b/icecat/gfx/thebes/gfxPlatform.cpp index 074d3c91f5..27ec226371 100644 --- a/icecat/gfx/thebes/gfxPlatform.cpp +++ b/icecat/gfx/thebes/gfxPlatform.cpp @@ -1852,9 +1852,7 @@ uint32_t gfxPlatform::WordCacheMaxEntries() { } bool gfxPlatform::UseGraphiteShaping() { - // Graphite shaping is only available on the main thread. - return StaticPrefs::gfx_font_rendering_graphite_enabled() && - NS_IsMainThread(); + return StaticPrefs::gfx_font_rendering_graphite_enabled(); } bool gfxPlatform::IsFontFormatSupported( @@ -3544,14 +3542,6 @@ void gfxPlatform::ReInitFrameRate(const char* aPrefIgnored, gPlatform->mVsyncDispatcher->SetVsyncSource(vsyncSource); } -/* static */ -void gfxPlatform::ResetHardwareVsyncSource() { - if (gPlatform->mGlobalHardwareVsyncSource) { - gPlatform->mGlobalHardwareVsyncSource->Shutdown(); - gPlatform->mGlobalHardwareVsyncSource = nullptr; - } -} - const char* gfxPlatform::GetAzureCanvasBackend() const { BackendType backend{}; diff --git a/icecat/gfx/thebes/gfxPlatform.h b/icecat/gfx/thebes/gfxPlatform.h index 2492111875..d631113184 100644 --- a/icecat/gfx/thebes/gfxPlatform.h +++ b/icecat/gfx/thebes/gfxPlatform.h @@ -695,12 +695,6 @@ class gfxPlatform : public mozilla::layers::MemoryPressureListener { */ static void ReInitFrameRate(const char* aPrefIgnored, void* aDataIgnored); - /** - * Reset the global hardware vsync source. The next call to ReInitFrameRate - * will attempt to reestablish it, and fall back to software if needed. - */ - static void ResetHardwareVsyncSource(); - /** * Update force subpixel AA quality setting (called after pref * changes). diff --git a/icecat/gfx/thebes/gfxPlatformFontList.cpp b/icecat/gfx/thebes/gfxPlatformFontList.cpp index ba02035f0a..3128b88f75 100644 --- a/icecat/gfx/thebes/gfxPlatformFontList.cpp +++ b/icecat/gfx/thebes/gfxPlatformFontList.cpp @@ -379,8 +379,6 @@ gfxPlatformFontList::~gfxPlatformFontList() { kFontSystemWhitelistPref); } NS_RELEASE(gFontListPrefObserver); - - delete mSharedFontList.exchange(nullptr); } FontVisibility gfxPlatformFontList::GetFontVisibility(nsCString& aFont, @@ -659,9 +657,7 @@ bool gfxPlatformFontList::InitFontList() { // From here, gfxPlatformFontList::IsInitialized will return true, // unless InitFontListForPlatform() fails and we reset it below. - if (MOZ_UNLIKELY(!++mFontlistInitCount)) { - ++mFontlistInitCount; // if the counter wrapped, bump it past zero - } + mFontlistInitCount++; InitializeCodepointsWithNoFonts(); @@ -680,20 +676,19 @@ bool gfxPlatformFontList::InitFontList() { } mFontEntries.Clear(); mShmemCharMaps.Clear(); - bool oldSharedList = SharedFontList() != nullptr; - delete mSharedFontList.exchange(new fontlist::FontList(mFontlistInitCount)); + bool oldSharedList = mSharedFontList != nullptr; + mSharedFontList.reset(new fontlist::FontList(mFontlistInitCount)); InitSharedFontListForPlatform(); - auto* newList = SharedFontList(); - if (newList && newList->Initialized()) { + if (mSharedFontList && mSharedFontList->Initialized()) { if (mLocalNameTable.Count()) { - newList->SetLocalNames(mLocalNameTable); + SharedFontList()->SetLocalNames(mLocalNameTable); mLocalNameTable.Clear(); } } else { // something went wrong, fall back to in-process list gfxCriticalNote << "Failed to initialize shared font list, " "falling back to in-process list."; - delete mSharedFontList.exchange(nullptr); + mSharedFontList.reset(nullptr); } if (oldSharedList && XRE_IsParentProcess()) { // notify all children of the change @@ -707,10 +702,7 @@ bool gfxPlatformFontList::InitFontList() { } } - if (SharedFontList()) { - mFontListGeneration = SharedFontList()->GetGeneration(); - } else { - mFontListGeneration = 0; + if (!SharedFontList()) { if (NS_FAILED(InitFontListForPlatform())) { mFontlistInitCount = 0; return false; @@ -797,7 +789,7 @@ class InitOtherFamilyNamesForStylo : public mozilla::Runnable { } bool initialized = false; dom::ContentChild::GetSingleton()->SendInitOtherFamilyNames( - pfl->GetGeneration(), mDefer, &initialized); + list->GetGeneration(), mDefer, &initialized); pfl->mOtherFamilyNamesInitialized.compareExchange(false, initialized); return NS_OK; } @@ -818,7 +810,8 @@ bool gfxPlatformFontList::InitOtherFamilyNames( if (NS_IsMainThread()) { bool initialized; dom::ContentChild::GetSingleton()->SendInitOtherFamilyNames( - GetGeneration(), aDeferOtherFamilyNamesLoading, &initialized); + SharedFontList()->GetGeneration(), aDeferOtherFamilyNamesLoading, + &initialized); mOtherFamilyNamesInitialized.compareExchange(false, initialized); } else { NS_DispatchToMainThread( @@ -1414,10 +1407,10 @@ class StartCmapLoadingRunnable : public mozilla::Runnable { return NS_OK; } if (XRE_IsParentProcess()) { - pfl->StartCmapLoading(pfl->GetGeneration(), mStartIndex); + pfl->StartCmapLoading(list->GetGeneration(), mStartIndex); } else { dom::ContentChild::GetSingleton()->SendStartCmapLoading( - pfl->GetGeneration(), mStartIndex); + list->GetGeneration(), mStartIndex); } return NS_OK; } @@ -1438,11 +1431,12 @@ void gfxPlatformFontList::StartCmapLoadingFromFamily(uint32_t aStartIndex) { // If we're already on the main thread, don't bother dispatching a runnable // here to kick off the loading process, just do it directly. if (NS_IsMainThread()) { + auto* list = SharedFontList(); if (XRE_IsParentProcess()) { - StartCmapLoading(GetGeneration(), aStartIndex); + StartCmapLoading(list->GetGeneration(), aStartIndex); } else { - dom::ContentChild::GetSingleton()->SendStartCmapLoading(GetGeneration(), - aStartIndex); + dom::ContentChild::GetSingleton()->SendStartCmapLoading( + list->GetGeneration(), aStartIndex); } } else { NS_DispatchToMainThread(new StartCmapLoadingRunnable(aStartIndex)); @@ -1497,7 +1491,7 @@ class LoadCmapsRunnable final : public IdleRunnable, if (!list) { return NS_OK; } - if (mGeneration != pfl->GetGeneration()) { + if (mGeneration != list->GetGeneration()) { return NS_OK; } uint32_t numFamilies = list->NumFamilies(); @@ -1565,7 +1559,7 @@ void gfxPlatformFontList::CancelLoadCmapsTask() { void gfxPlatformFontList::StartCmapLoading(uint32_t aGeneration, uint32_t aStartIndex) { MOZ_RELEASE_ASSERT(XRE_IsParentProcess()); - if (aGeneration != GetGeneration()) { + if (aGeneration != SharedFontList()->GetGeneration()) { return; } if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { @@ -1837,8 +1831,7 @@ class InitializeFamilyRunnable : public mozilla::Runnable { mLoadCmaps(aLoadCmaps) {} NS_IMETHOD Run() override { - auto* pfl = gfxPlatformFontList::PlatformFontList(); - auto* list = pfl->SharedFontList(); + auto list = gfxPlatformFontList::PlatformFontList()->SharedFontList(); if (!list) { return NS_OK; } @@ -1847,12 +1840,8 @@ class InitializeFamilyRunnable : public mozilla::Runnable { // was posted - just ignore it. return NS_OK; } - auto& family = list->Families()[mIndex]; - if (mLoadCmaps ? family.IsFullyInitialized() : family.IsInitialized()) { - // Some other runnable initialized this or somesuch. - return NS_OK; - } - (void)pfl->InitializeFamily(&family, mLoadCmaps); + dom::ContentChild::GetSingleton()->SendInitializeFamily( + list->GetGeneration(), mIndex, mLoadCmaps); return NS_OK; } @@ -1865,21 +1854,21 @@ bool gfxPlatformFontList::InitializeFamily(fontlist::Family* aFamily, bool aLoadCmaps) { MOZ_ASSERT(SharedFontList()); auto list = SharedFontList(); - auto* families = list->Families(); - if (!families) { - return false; - } - uint32_t index = aFamily - families; - if (index >= list->NumFamilies()) { - return false; - } - if (!NS_IsMainThread() && (!sInitFontListThread || !IsInitFontListThread())) { - NS_DispatchToMainThread(new InitializeFamilyRunnable(index, aLoadCmaps)); - return aFamily->IsInitialized(); - } if (!XRE_IsParentProcess()) { - dom::ContentChild::GetSingleton()->SendInitializeFamily( - GetGeneration(), index, aLoadCmaps); + auto* families = list->Families(); + if (!families) { + return false; + } + uint32_t index = aFamily - families; + if (index >= list->NumFamilies()) { + return false; + } + if (NS_IsMainThread()) { + dom::ContentChild::GetSingleton()->SendInitializeFamily( + list->GetGeneration(), index, aLoadCmaps); + } else { + NS_DispatchToMainThread(new InitializeFamilyRunnable(index, aLoadCmaps)); + } return aFamily->IsInitialized(); } @@ -1895,7 +1884,8 @@ bool gfxPlatformFontList::InitializeFamily(fontlist::Family* aFamily, // all the cmaps at once and reduce IPC traffic (and content-process file // access overhead, which is crippling for DirectWrite on Windows). if (aLoadCmaps) { - if (auto* faces = aFamily->Faces(list)) { + auto* faces = aFamily->Faces(list); + if (faces) { for (size_t i = 0; i < aFamily->NumFaces(); i++) { auto* face = faces[i].ToPtr(list); if (face && face->mCharacterMap.IsNull()) { @@ -2064,8 +2054,7 @@ already_AddRefed gfxPlatformFontList::FindCharMap( aCmap->CalcHash(); aCmap->mShared = true; // Set the shared flag in preparation for adding // to the global table. - CharMapLookup lookup{aCmap, aCmap->mHash, /* mCompareByPointer */ false}; - RefPtr cmap = mSharedCmaps.PutEntry(lookup)->GetCharMap(); + RefPtr cmap = mSharedCmaps.PutEntry(aCmap)->GetKey(); // If we ended up finding a different, pre-existing entry, clear the // shared flag on this one so that it'll get deleted on Release(). @@ -2080,17 +2069,9 @@ already_AddRefed gfxPlatformFontList::FindCharMap( // when a user of the charmap drops a reference and the refcount goes to 1; // in that case, it is possible our shared set is the only remaining user // of the object, and we should remove it. -// -// CAUTION: aCharMap may already have been freed by the time we are called -// (another thread may have raced us here and deleted it first, or the -// destructor's teardown path may have run). We MUST NOT dereference aCharMap -// until we have established that it is still present in our table -- the -// table's strong reference then guarantees the object is alive. The hash -// lookup itself uses aHash (captured before the caller's --mRefCnt while the -// object was definitely alive) and pointer-identity comparison, so it never -// dereferences aCharMap. -void gfxPlatformFontList::MaybeRemoveCmap(gfxCharacterMap* aCharMap, - uint32_t aHash) { +// Note that aCharMap might have already been freed, so we must not try to +// dereference it until we have checked that it's still present in our table. +void gfxPlatformFontList::MaybeRemoveCmap(gfxCharacterMap* aCharMap) { // Lock so that nobody else can get a reference via FindCharMap while we're // checking here. AutoLock lock(mLock); @@ -2100,18 +2081,14 @@ void gfxPlatformFontList::MaybeRemoveCmap(gfxCharacterMap* aCharMap, return; } - // Look up by captured hash + pointer identity; this does not dereference - // aCharMap. If a racing thread already removed and freed aCharMap, GetEntry - // simply won't find it (the freed slot can't reappear in the table at the - // same address while we hold mLock, since insertions also need mLock). - CharMapLookup lookup{aCharMap, aHash, /* mCompareByPointer */ true}; - CharMapHashKey* found = mSharedCmaps.GetEntry(lookup); - - // If found, the table holds a strong ref, so aCharMap is alive and we may - // dereference it. We must check that it still has a refcount of exactly 1 - // (the table's ref) before we remove; a FindCharMap may have raced us and - // AddRef'd it. - if (found && aCharMap->RefCount() == 1) { + // aCharMap needs to match the entry and be the same ptr and still have a + // refcount of exactly 1 (i.e. we hold the only reference) before removing. + // If we're racing another thread, it might already have been removed, in + // which case GetEntry will not find it and we won't try to dereference the + // already-freed pointer. + CharMapHashKey* found = + mSharedCmaps.GetEntry(const_cast(aCharMap)); + if (found && found->GetKey() == aCharMap && aCharMap->RefCount() == 1) { // Forget our reference to the object that's being deleted, without // calling Release() on it. Unused << found->mCharMap.forget(); @@ -3042,8 +3019,7 @@ void gfxPlatformFontList::AddSizeOfExcludingThis(MallocSizeOf aMallocSizeOf, aSizes->mFontListSize += mSharedCmaps.ShallowSizeOfExcludingThis(aMallocSizeOf); for (const auto& entry : mSharedCmaps) { - aSizes->mCharMapsSize += - entry.GetCharMap()->SizeOfIncludingThis(aMallocSizeOf); + aSizes->mCharMapsSize += entry.GetKey()->SizeOfIncludingThis(aMallocSizeOf); } aSizes->mFontListSize += @@ -3178,7 +3154,7 @@ void gfxPlatformFontList::ShareFontListShmBlockToProcess( if (!list) { return; } - if (!aGeneration || GetGeneration() == aGeneration) { + if (!aGeneration || list->GetGeneration() == aGeneration) { list->ShareShmBlockToProcess(aIndex, aPid, aOut); } else { *aOut = nullptr; @@ -3218,7 +3194,7 @@ void gfxPlatformFontList::InitializeFamily(uint32_t aGeneration, if (!list) { return; } - if (GetGeneration() != aGeneration) { + if (list->GetGeneration() != aGeneration) { return; } if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { @@ -3243,7 +3219,7 @@ void gfxPlatformFontList::SetCharacterMap(uint32_t aGeneration, if (!list) { return; } - if (GetGeneration() != aGeneration) { + if (list->GetGeneration() != aGeneration) { return; } if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { @@ -3284,7 +3260,7 @@ void gfxPlatformFontList::SetupFamilyCharMap(uint32_t aGeneration, if (!list) { return; } - if (GetGeneration() != aGeneration) { + if (list->GetGeneration() != aGeneration) { return; } if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { @@ -3314,7 +3290,7 @@ bool gfxPlatformFontList::InitOtherFamilyNames(uint32_t aGeneration, if (!list) { return false; } - if (GetGeneration() != aGeneration) { + if (list->GetGeneration() != aGeneration) { return false; } if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) { @@ -3323,6 +3299,10 @@ bool gfxPlatformFontList::InitOtherFamilyNames(uint32_t aGeneration, return InitOtherFamilyNames(aDefer); } +uint32_t gfxPlatformFontList::GetGeneration() const { + return SharedFontList() ? SharedFontList()->GetGeneration() : 0; +} + gfxPlatformFontList::FontPrefs::FontPrefs() { // This must be created on the main thread, so that we can safely use the // Preferences service. Once created, it can be read from any thread. diff --git a/icecat/gfx/thebes/gfxPlatformFontList.h b/icecat/gfx/thebes/gfxPlatformFontList.h index 3800a6434a..51d6530e44 100644 --- a/icecat/gfx/thebes/gfxPlatformFontList.h +++ b/icecat/gfx/thebes/gfxPlatformFontList.h @@ -36,29 +36,13 @@ struct AliasData; } } // namespace mozilla -// Lookup key for the shared-cmap hashtable. The hash is carried separately -// from the gfxCharacterMap pointer so that MaybeRemoveCmap can look up an -// entry without dereferencing the (potentially already freed) pointer. -struct CharMapLookup { - // The cmap to look up. In pointer-compare mode this may be dangling and is - // used for pointer-equality only; in content-compare mode it must be alive. - gfxCharacterMap* mCharMap; - // The cmap's mHash, captured while the object was known to be alive. - uint32_t mHash; - // If true, KeyEquals compares by pointer identity (no deref of mCharMap). - // If false, KeyEquals compares by content (derefs mCharMap; must be alive). - bool mCompareByPointer; -}; - class CharMapHashKey : public PLDHashEntryHdr { public: - typedef CharMapLookup KeyType; - typedef const CharMapLookup* KeyTypePointer; + typedef gfxCharacterMap* KeyType; + typedef const gfxCharacterMap* KeyTypePointer; - explicit CharMapHashKey(const CharMapLookup* aLookup) - : mCharMap(aLookup->mCharMap) { - // Only content-compare lookups (FindCharMap) insert; the cmap is alive. - MOZ_ASSERT(!aLookup->mCompareByPointer); + explicit CharMapHashKey(const gfxCharacterMap* aCharMap) + : mCharMap(const_cast(aCharMap)) { MOZ_COUNT_CTOR(CharMapHashKey); } CharMapHashKey(const CharMapHashKey& toCopy) : mCharMap(toCopy.mCharMap) { @@ -66,29 +50,23 @@ class CharMapHashKey : public PLDHashEntryHdr { } MOZ_COUNTED_DTOR(CharMapHashKey) - gfxCharacterMap* GetCharMap() const { return mCharMap.get(); } + gfxCharacterMap* GetKey() const { return mCharMap.get(); } - bool KeyEquals(const CharMapLookup* aLookup) const { - if (aLookup->mCompareByPointer) { - // Pointer-identity compare for MaybeRemoveCmap. Does not dereference - // aLookup->mCharMap, which may be dangling. - return mCharMap.get() == aLookup->mCharMap; - } - // Content compare for FindCharMap. aLookup->mCharMap must be alive. - MOZ_ASSERT(!aLookup->mCharMap->mBuildOnTheFly && !mCharMap->mBuildOnTheFly, + bool KeyEquals(const gfxCharacterMap* aCharMap) const { + MOZ_ASSERT(!aCharMap->mBuildOnTheFly && !mCharMap->mBuildOnTheFly, "custom cmap used in shared cmap hashtable"); - if (aLookup->mHash != mCharMap->mHash) { + // cmaps built on the fly never match + if (aCharMap->mHash != mCharMap->mHash) { return false; } - return mCharMap->Equals(aLookup->mCharMap); + return mCharMap->Equals(aCharMap); } - static const CharMapLookup* KeyToPointer(const CharMapLookup& aLookup) { - return &aLookup; + static const gfxCharacterMap* KeyToPointer(gfxCharacterMap* aCharMap) { + return aCharMap; } - static PLDHashNumber HashKey(const CharMapLookup* aLookup) { - // Use the captured hash; never dereference aLookup->mCharMap. - return aLookup->mHash; + static PLDHashNumber HashKey(const gfxCharacterMap* aCharMap) { + return aCharMap->mHash; } enum { ALLOW_MEMMOVE = true }; @@ -371,7 +349,7 @@ class gfxPlatformFontList : public gfxFontInfoLoader { const gfxFontStyle* aStyle); mozilla::fontlist::FontList* SharedFontList() const { - return mSharedFontList; + return mSharedFontList.get(); } // Create a handle for a single shmem block (identified by index) ready to @@ -532,9 +510,8 @@ class gfxPlatformFontList : public gfxFontInfoLoader { already_AddRefed FindCharMap(gfxCharacterMap* aCmap); // Remove the cmap from the shared cmap set if it holds the only remaining - // reference to the object. aCharMap may be dangling; aHash is its mHash - // captured while it was known alive. - void MaybeRemoveCmap(gfxCharacterMap* aCharMap, uint32_t aHash); + // reference to the object. + void MaybeRemoveCmap(gfxCharacterMap* aCharMap); // Keep track of userfont sets to notify when global fontlist changes occur. void AddUserFontSet(gfxUserFontSet* aUserFontSet) { @@ -662,7 +639,7 @@ class gfxPlatformFontList : public gfxFontInfoLoader { // existing references to shared font family or face objects and character // maps will no longer be valid. // (The legacy (non-shared) list just returns 0 here.) - uint32_t GetGeneration() const { return mFontListGeneration; } + uint32_t GetGeneration() const; // Sometimes we need to know if we're on the InitFontList startup thread. static bool IsInitFontListThread() { @@ -1085,9 +1062,7 @@ class gfxPlatformFontList : public gfxFontInfoLoader { nsTArray mEnabledFontsList; nsTHashSet mIconFontsSet; - // This is an owning reference; we are responsible to delete the FontList at - // appropriate times. - std::atomic mSharedFontList = nullptr; + mozilla::UniquePtr mSharedFontList; nsClassHashtable mAliasTable; nsTHashMap @@ -1103,9 +1078,6 @@ class gfxPlatformFontList : public gfxFontInfoLoader { RefPtr mLoadCmapsRunnable; uint32_t mStartedLoadingCmapsFrom MOZ_GUARDED_BY(mLock) = 0xffffffffu; - // Cached value of mSharedFontList->GetGeneration(), updated by InitFontList. - std::atomic mFontListGeneration = 0; - bool mFontFamilyWhitelistActive = false; static PRThread* sInitFontListThread; diff --git a/icecat/gfx/thebes/gfxPlatformMac.cpp b/icecat/gfx/thebes/gfxPlatformMac.cpp index 554ddf29cb..6d42535edf 100644 --- a/icecat/gfx/thebes/gfxPlatformMac.cpp +++ b/icecat/gfx/thebes/gfxPlatformMac.cpp @@ -8,7 +8,6 @@ #include "gfxQuartzSurface.h" #include "mozilla/DataMutex.h" #include "mozilla/gfx/2D.h" -#include "mozilla/gfx/Logging.h" #include "gfxMacFont.h" #include "gfxCoreTextShaper.h" @@ -735,48 +734,33 @@ class OSXVsyncSource final : public VsyncSource { OSXVsyncSource() : mDisplayLink(nullptr, "OSXVsyncSource::mDisplayLink") { MOZ_ASSERT(NS_IsMainThread()); mTimer = NS_NewTimer(); - CGError err = CGDisplayRegisterReconfigurationCallback( - DisplayReconfigurationCallback, this); - if (err != kCGErrorSuccess) { - gfxWarning() << "Failed to register display reconfiguration callback"; - // We're in a tricky situation. Without a working reconfiguration - // callback, we might fail to recover from sleep. Best to early exit - // without creating a display link, and fall back to software vsync. - return; - } - + CGDisplayRegisterReconfigurationCallback(DisplayReconfigurationCallback, + this); CreateDisplayLink(); - auto displayLink = mDisplayLink.Lock(); - if (!*displayLink) { - gfxWarning() - << "Could not create a display link during construction. This is " - "unrecoverable. We'll fallback to software vsync."; - } } virtual ~OSXVsyncSource() { MOZ_ASSERT(NS_IsMainThread()); - Shutdown(); + CGDisplayRemoveReconfigurationCallback(DisplayReconfigurationCallback, + this); + DisableVsync(); + DestroyDisplayLink(); } - static void RetryCreateDisplayLinkAndEnableVsync(nsITimer* aTimer, - void* aOsxVsyncSource) { + static void RetryCreateDisplayLink(nsITimer* aTimer, void* aOsxVsyncSource) { MOZ_ASSERT(NS_IsMainThread()); OSXVsyncSource* osxVsyncSource = static_cast(aOsxVsyncSource); MOZ_ASSERT(osxVsyncSource); - - osxVsyncSource->DisableVsync(); - osxVsyncSource->DestroyDisplayLink(); osxVsyncSource->CreateDisplayLink(); - osxVsyncSource->EnableVsync(); + } - if (!osxVsyncSource->IsVsyncEnabled()) { - gfxWarning() << "Display reconfiguration vsync has failed; giving up."; - osxVsyncSource->Shutdown(); - gfxPlatform::ResetHardwareVsyncSource(); - gfxPlatform::ReInitFrameRate(nullptr, nullptr); - } + static void RetryEnableVsync(nsITimer* aTimer, void* aOsxVsyncSource) { + MOZ_ASSERT(NS_IsMainThread()); + OSXVsyncSource* osxVsyncSource = + static_cast(aOsxVsyncSource); + MOZ_ASSERT(osxVsyncSource); + osxVsyncSource->EnableVsync(); } void CreateDisplayLink() { @@ -790,11 +774,6 @@ class OSXVsyncSource final : public VsyncSource { // with all displays running on the computer But if we have different // monitors at different display rates, we may hit issues. CVReturn retval = CVDisplayLinkCreateWithActiveCGDisplays(&*displayLink); - if (!*displayLink) { - gfxWarning() - << "Could not create a display link with all active displays."; - return; - } // Workaround for bug 1201401: CVDisplayLinkCreateWithCGDisplays() // (called by CVDisplayLinkCreateWithActiveCGDisplays()) sometimes @@ -810,18 +789,37 @@ class OSXVsyncSource final : public VsyncSource { retval = kCVReturnInvalidDisplay; } - if (retval != kCVReturnSuccess) { - gfxWarning() - << "Display link was created, but is malformed; destroying it."; - CVDisplayLinkRelease(*displayLink); - *displayLink = nullptr; + if (!*displayLink || (retval != kCVReturnSuccess)) { + NS_WARNING( + "Could not create a display link with all active displays. " + "Retrying"); + if (*displayLink) { + CVDisplayLinkRelease(*displayLink); + *displayLink = nullptr; + } + + // bug 1142708 - When coming back from sleep, + // or when changing displays, active displays may not be ready yet, + // even if listening for the kIOMessageSystemHasPoweredOn event + // from OS X sleep notifications. + // Active displays are those that are drawable. + // bug 1144638 - When changing display configurations and getting + // notifications from CGDisplayReconfigurationCallBack, the + // callback gets called twice for each active display + // so it's difficult to know when all displays are active. + // Instead, try again soon. The delay is arbitrary. 100ms chosen + // because on a late 2013 15" retina, it takes about that + // long to come back up from sleep. + uint32_t delay = 100; + mTimer->InitWithNamedFuncCallback(RetryCreateDisplayLink, this, delay, + nsITimer::TYPE_ONE_SHOT, + "RetryCreateDisplayLink"); return; } if (CVDisplayLinkSetOutputCallback(*displayLink, &VsyncCallback, this) != kCVReturnSuccess) { - gfxWarning() - << "Could not set display link output callback; destroying it."; + NS_WARNING("Could not set displaylink output callback"); CVDisplayLinkRelease(*displayLink); *displayLink = nullptr; } @@ -844,20 +842,20 @@ class OSXVsyncSource final : public VsyncSource { auto displayLink = mDisplayLink.Lock(); if (!*displayLink) { - gfxWarning() << "No display link available when starting vsync."; + NS_WARNING("No display link available when starting vsync"); return; } mPreviousTimestamp = TimeStamp::Now(); if (CVDisplayLinkStart(*displayLink) != kCVReturnSuccess) { - gfxWarning() << "Could not activate the display link."; + NS_WARNING("Could not activate the display link"); return; } CVTime vsyncRate = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(*displayLink); if (vsyncRate.flags & kCVTimeIsIndefinite) { - gfxWarning() << "Could not get vsync rate, setting to 60."; + NS_WARNING("Could not get vsync rate, setting to 60."); mVsyncRate = TimeDuration::FromMilliseconds(1000.0 / 60.0); } else { int64_t timeValue = vsyncRate.timeValue; @@ -894,12 +892,8 @@ class OSXVsyncSource final : public VsyncSource { void Shutdown() override { MOZ_ASSERT(NS_IsMainThread()); - if (mTimer) { - mTimer->Cancel(); - mTimer = nullptr; - } - CGDisplayRemoveReconfigurationCallback(DisplayReconfigurationCallback, - this); + mTimer->Cancel(); + mTimer = nullptr; DisableVsync(); DestroyDisplayLink(); } @@ -956,12 +950,10 @@ class OSXVsyncSource final : public VsyncSource { // Check if we actually succeeded in enabling vsync, and if we didn't, // retry one time. if (!IsVsyncEnabled()) { - gfxWarning() - << "Display reconfiguration vsync has failed; retrying one time."; uint32_t delay = 100; - mTimer->InitWithNamedFuncCallback( - RetryCreateDisplayLinkAndEnableVsync, this, delay, - nsITimer::TYPE_ONE_SHOT, "RetryCreateDisplayLinkAndEnableVsync"); + mTimer->InitWithNamedFuncCallback(RetryCreateDisplayLink, this, delay, + nsITimer::TYPE_ONE_SHOT, + "RetryEnableVsync"); } } } @@ -1015,8 +1007,8 @@ gfxPlatformMac::CreateGlobalHardwareVsyncSource() { RefPtr osxVsyncSource = new OSXVsyncSource(); osxVsyncSource->EnableVsync(); if (!osxVsyncSource->IsVsyncEnabled()) { - gfxWarning() - << "OS X Vsync source not enabled. Falling back to software vsync."; + NS_WARNING( + "OS X Vsync source not enabled. Falling back to software vsync."); return GetSoftwareVsyncSource(); } diff --git a/icecat/gfx/thebes/gfxTextRun.cpp b/icecat/gfx/thebes/gfxTextRun.cpp index 3e10543600..bb85d2478e 100644 --- a/icecat/gfx/thebes/gfxTextRun.cpp +++ b/icecat/gfx/thebes/gfxTextRun.cpp @@ -2026,8 +2026,17 @@ void gfxFontGroup::AddFamilyToFontList(gfxFontFamily* aFamily, void gfxFontGroup::AddFamilyToFontList(fontlist::Family* aFamily, StyleGenericFontFamily aGeneric) { gfxPlatformFontList* pfl = gfxPlatformFontList::PlatformFontList(); - if (!aFamily->IsInitialized() && !pfl->InitializeFamily(aFamily)) { - return; + if (!aFamily->IsInitialized()) { + if (ServoStyleSet* set = gfxFontUtils::CurrentServoStyleSet()) { + // If we need to initialize a Family record, but we're on a style + // worker thread, we have to defer it. + set->AppendTask(PostTraversalTask::InitializeFamily(aFamily)); + set->AppendTask(PostTraversalTask::FontInfoUpdate(set)); + return; + } + if (!pfl->InitializeFamily(aFamily)) { + return; + } } AutoTArray faceList; aFamily->FindAllFacesForStyle(pfl->SharedFontList(), mStyle, faceList); diff --git a/icecat/gfx/thebes/gfxUserFontSet.cpp b/icecat/gfx/thebes/gfxUserFontSet.cpp index 27b907fbd3..c0ac18d669 100644 --- a/icecat/gfx/thebes/gfxUserFontSet.cpp +++ b/icecat/gfx/thebes/gfxUserFontSet.cpp @@ -94,10 +94,6 @@ gfxUserFontEntry::~gfxUserFontEntry() { // traversal, since PostTraversalTask objects can hold raw pointers to // gfxUserFontEntry objects. MOZ_ASSERT(!gfxFontUtils::IsInServoTraversal()); - // Ensure the platform font entry is destroyed on the main thread, to avoid - // potential race updating the sUserFonts cache. - NS_ReleaseOnMainThread("gfxUserFontEntry::mPlatformFontEntry", - mPlatformFontEntry.forget()); } bool gfxUserFontEntry::Matches(const nsTArray& aFontFaceSrcList, @@ -545,7 +541,7 @@ void gfxUserFontEntry::DoLoadNextSrc(bool aIsContinue) { // If we need to start a font load and we're on a style // worker thread, we have to defer it. SetLoadState(STATUS_LOAD_PENDING); - set->AppendTask(PostTraversalTask::LoadFontEntry(do_AddRef(this))); + set->AppendTask(PostTraversalTask::LoadFontEntry(this)); return; } @@ -1119,16 +1115,6 @@ void gfxUserFontSet::ForgetLocalFace(gfxUserFontFamily* aFontFamily) { // discard it as no longer valid. if (ufe->GetPlatformFontEntry() && ufe->GetPlatformFontEntry()->IsLocalUserFont()) { - // Clear shmem pointers on the local-user-font entry: it is not tracked - // in gfxPlatformFontList::mFontEntries, so InitFontList()'s cleanup loop - // misses it. - gfxFontEntry* pfe = ufe->GetPlatformFontEntry(); - { - AutoWriteLock lock(pfe->mLock); - pfe->mShmemCharacterMap = nullptr; - pfe->mShmemFace = nullptr; - pfe->mShmemFamily = nullptr; - } ufe->mPlatformFontEntry = nullptr; } // If the entry had a local source, we need to re-evaluate the source list @@ -1144,13 +1130,12 @@ void gfxUserFontSet::ForgetLocalFace(gfxUserFontFamily* aFontFamily) { for (auto& ufe : entriesToCancel) { if (auto* loader = ufe->GetLoader()) { // If there's a loader, we need to cancel it, because we'll trigger a - // fresh load if required when we re-resolve the font. Cancel() removes - // the loader from the set it was registered in (not necessarily |this| - // font set). + // fresh load if required when we re-resolve the font... loader->Cancel(); + RemoveLoader(loader); } else { - // Otherwise, just reset our state so that we'll re-evaluate the source - // list from the beginning. + // ...otherwise, just reset our state so that we'll re-evaluate the + // source list from the beginning. ufe->LoadCanceled(); } } @@ -1244,7 +1229,6 @@ bool gfxUserFontSet::UserFontCache::Entry::KeyEquals( } void gfxUserFontSet::UserFontCache::CacheFont(gfxFontEntry* aFontEntry) { - MOZ_ASSERT(NS_IsMainThread()); NS_ASSERTION(aFontEntry->mFamilyName.Length() != 0, "caching a font associated with no family yet"); @@ -1299,10 +1283,6 @@ void gfxUserFontSet::UserFontCache::CacheFont(gfxFontEntry* aFontEntry) { } void gfxUserFontSet::UserFontCache::ForgetFont(gfxFontEntry* aFontEntry) { - // The only caller is ~gfxFontEntry; if this fires, there is a path to - // off-main-thread destruction of a font entry with mIsDataUserFont set - // that needs to be proxied to main thread (see ~gfxUserFontEntry). - MOZ_ASSERT(NS_IsMainThread()); if (!sUserFonts) { // if we've already deleted the cache (i.e. during shutdown), // just ignore this @@ -1326,7 +1306,6 @@ void gfxUserFontSet::UserFontCache::ForgetFont(gfxFontEntry* aFontEntry) { gfxFontEntry* gfxUserFontSet::UserFontCache::GetFont( const gfxFontFaceSrc& aSrc, const gfxUserFontEntry& aUserFontEntry) { - MOZ_ASSERT(NS_IsMainThread() || gfxFontUtils::CurrentServoStyleSet()); if (!sUserFonts || StaticPrefs::gfx_downloadable_fonts_disable_cache()) { return nullptr; } diff --git a/icecat/gfx/thebes/gfxUserFontSet.h b/icecat/gfx/thebes/gfxUserFontSet.h index da058868c2..a876219382 100644 --- a/icecat/gfx/thebes/gfxUserFontSet.h +++ b/icecat/gfx/thebes/gfxUserFontSet.h @@ -767,8 +767,6 @@ class gfxUserFontEntry : public gfxFontEntry { // user font entry. virtual void GetUserFontSets(nsTArray>& aResult); - FontTableCache* GetFontTableCache(bool aCreate) override { return nullptr; } - // general load state UserFontLoadState mUserFontLoadState; diff --git a/icecat/gfx/thebes/gfxUtils.cpp b/icecat/gfx/thebes/gfxUtils.cpp index 7e5a4f0d75..1950d9e540 100644 --- a/icecat/gfx/thebes/gfxUtils.cpp +++ b/icecat/gfx/thebes/gfxUtils.cpp @@ -230,7 +230,8 @@ already_AddRefed gfxUtils::CreatePremultipliedDataSurface( DataSourceSurface::MappedSurface destMap; if (!MapSrcAndCreateMappedDest(srcSurf, &destSurf, &srcMap, &destMap)) { MOZ_ASSERT(false, "MapSrcAndCreateMappedDest failed."); - return nullptr; + RefPtr surface(srcSurf); + return surface.forget(); } PremultiplyData(srcMap.mData, srcMap.mStride, srcSurf->GetFormat(), @@ -248,7 +249,8 @@ already_AddRefed gfxUtils::CreateUnpremultipliedDataSurface( DataSourceSurface::MappedSurface destMap; if (!MapSrcAndCreateMappedDest(srcSurf, &destSurf, &srcMap, &destMap)) { MOZ_ASSERT(false, "MapSrcAndCreateMappedDest failed."); - return nullptr; + RefPtr surface(srcSurf); + return surface.forget(); } UnpremultiplyData(srcMap.mData, srcMap.mStride, srcSurf->GetFormat(), diff --git a/icecat/gfx/vr/VRManager.cpp b/icecat/gfx/vr/VRManager.cpp index bbd0c75704..373ae1081e 100644 --- a/icecat/gfx/vr/VRManager.cpp +++ b/icecat/gfx/vr/VRManager.cpp @@ -155,8 +155,8 @@ VRManager::VRManager() #if !defined(MOZ_WIDGET_ANDROID) // XRE_IsGPUProcess() is helping us to check some platforms like // Win 7 try which are not using GPU process but VR process is enabled. - mVRProcessEnabled = StaticPrefs::dom_vr_process_enabled_AtStartup() && - StaticPrefs::dom_vr_enabled() && XRE_IsGPUProcess(); + mVRProcessEnabled = + StaticPrefs::dom_vr_process_enabled_AtStartup() && XRE_IsGPUProcess(); VRServiceHost::Init(mVRProcessEnabled); mServiceHost = VRServiceHost::Get(); // We must shutdown before VRServiceHost, which is cleared diff --git a/icecat/gfx/vr/external_api/moz_external_vr.h b/icecat/gfx/vr/external_api/moz_external_vr.h index 04b64ff659..33cd1c017d 100644 --- a/icecat/gfx/vr/external_api/moz_external_vr.h +++ b/icecat/gfx/vr/external_api/moz_external_vr.h @@ -209,9 +209,8 @@ inline constexpr bool IsEnumCase( case gfx::VRControllerType::PicoGaze: case gfx::VRControllerType::PicoG2: case gfx::VRControllerType::PicoNeo2: - return true; case gfx::VRControllerType::_end: - break; + return true; } return false; } diff --git a/icecat/gfx/vr/ipc/VRChild.cpp b/icecat/gfx/vr/ipc/VRChild.cpp index d5b820d892..68cf90ce57 100644 --- a/icecat/gfx/vr/ipc/VRChild.cpp +++ b/icecat/gfx/vr/ipc/VRChild.cpp @@ -169,27 +169,25 @@ bool VRChild::SendRequestMemoryReport(const uint32_t& aGeneration, const Maybe& aDMDFile) { mMemoryReportRequest = MakeUnique(aGeneration); - PVRChild::SendRequestMemoryReport(aGeneration, aAnonymize, - aMinimizeMemoryUsage, aDMDFile) - ->Then( - GetCurrentSerialEventTarget(), __func__, - [](uint32_t aGeneration2) { - if (VRProcessManager* vpm = VRProcessManager::Get()) { - if (VRChild* child = vpm->GetVRChild()) { - if (child->mMemoryReportRequest) { - child->mMemoryReportRequest->Finish(aGeneration2); - child->mMemoryReportRequest = nullptr; - } - } + PVRChild::SendRequestMemoryReport( + aGeneration, aAnonymize, aMinimizeMemoryUsage, aDMDFile, + [&](const uint32_t& aGeneration2) { + if (VRProcessManager* vpm = VRProcessManager::Get()) { + if (VRChild* child = vpm->GetVRChild()) { + if (child->mMemoryReportRequest) { + child->mMemoryReportRequest->Finish(aGeneration2); + child->mMemoryReportRequest = nullptr; } - }, - [](mozilla::ipc::ResponseRejectReason) { - if (VRProcessManager* vpm = VRProcessManager::Get()) { - if (VRChild* child = vpm->GetVRChild()) { - child->mMemoryReportRequest = nullptr; - } - } - }); + } + } + }, + [&](mozilla::ipc::ResponseRejectReason) { + if (VRProcessManager* vpm = VRProcessManager::Get()) { + if (VRChild* child = vpm->GetVRChild()) { + child->mMemoryReportRequest = nullptr; + } + } + }); return true; } diff --git a/icecat/gfx/webrender_bindings/RenderTextureHost.cpp b/icecat/gfx/webrender_bindings/RenderTextureHost.cpp index 5af6ad2050..0c1f58f471 100644 --- a/icecat/gfx/webrender_bindings/RenderTextureHost.cpp +++ b/icecat/gfx/webrender_bindings/RenderTextureHost.cpp @@ -91,9 +91,6 @@ RenderTextureHost::RenderTextureHost() : mIsFromDRMSource(false) { RenderTextureHost::~RenderTextureHost() { MOZ_ASSERT(RenderThread::IsInRenderThread()); MOZ_COUNT_DTOR(RenderTextureHost); - if (mDestroyedCallback) { - mDestroyedCallback(); - } } wr::WrExternalImage RenderTextureHost::Lock(uint8_t aChannelIndex, diff --git a/icecat/gfx/webrender_bindings/RenderTextureHost.h b/icecat/gfx/webrender_bindings/RenderTextureHost.h index 00f1b1b13c..ef37ffc334 100644 --- a/icecat/gfx/webrender_bindings/RenderTextureHost.h +++ b/icecat/gfx/webrender_bindings/RenderTextureHost.h @@ -97,11 +97,6 @@ class RenderTextureHost { virtual void UnlockSWGL() {} - virtual bool LockSWGLCompositeSurface(void* aContext, - wr::SWGLCompositeSurfaceInfo* aInfo) { - return false; - } - virtual RefPtr CreateTextureSource( layers::TextureSourceProvider* aProvider); @@ -182,11 +177,6 @@ class RenderTextureHost { virtual RefPtr GetTextureHostUsageInfo( const MutexAutoLock& aProofOfMapLock); - void SetDestroyedCallback(std::function&& aDestroyedCallback) { - MOZ_ASSERT(!mDestroyedCallback); - mDestroyedCallback = std::move(aDestroyedCallback); - } - protected: virtual ~RenderTextureHost(); @@ -194,7 +184,6 @@ class RenderTextureHost { // protected by RenderThread::mRenderTextureMapLock RefPtr mRenderTextureHostUsageInfo; - std::function mDestroyedCallback; friend class RenderTextureHostWrapper; }; diff --git a/icecat/gfx/webrender_bindings/RenderTextureHostSWGL.h b/icecat/gfx/webrender_bindings/RenderTextureHostSWGL.h index e9fff61a99..b5d1e92056 100644 --- a/icecat/gfx/webrender_bindings/RenderTextureHostSWGL.h +++ b/icecat/gfx/webrender_bindings/RenderTextureHostSWGL.h @@ -49,7 +49,7 @@ class RenderTextureHostSWGL : public RenderTextureHost { // WrSWGLCompositeSurfaceInfo. This is paired with a call to UnlockSWGL when // composition is done. bool LockSWGLCompositeSurface(void* aContext, - wr::SWGLCompositeSurfaceInfo* aInfo) override; + wr::SWGLCompositeSurfaceInfo* aInfo); size_t BytesFromPlanes() { NS_ASSERTION(mPlanes.size(), "Can't compute bytes without any planes"); diff --git a/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.cpp b/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.cpp index 4900674c86..84124c7c57 100644 --- a/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.cpp +++ b/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.cpp @@ -52,30 +52,6 @@ void RenderTextureHostWrapper::Unlock() { } } -wr::WrExternalImage RenderTextureHostWrapper::LockSWGL( - uint8_t aChannelIndex, void* aContext, RenderCompositor* aCompositor) { - if (!mTextureHost) { - return InvalidToWrExternalImage(); - } - - return mTextureHost->LockSWGL(aChannelIndex, aContext, aCompositor); -} - -void RenderTextureHostWrapper::UnlockSWGL() { - if (mTextureHost) { - mTextureHost->UnlockSWGL(); - } -} - -bool RenderTextureHostWrapper::LockSWGLCompositeSurface( - void* aContext, wr::SWGLCompositeSurfaceInfo* aInfo) { - if (!mTextureHost) { - return false; - } - - return mTextureHost->LockSWGLCompositeSurface(aContext, aInfo); -} - void RenderTextureHostWrapper::ClearCachedResources() { if (mTextureHost) { mTextureHost->ClearCachedResources(); diff --git a/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.h b/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.h index c36a51fe31..a25dcbbc3b 100644 --- a/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.h +++ b/icecat/gfx/webrender_bindings/RenderTextureHostWrapper.h @@ -65,13 +65,6 @@ class RenderTextureHostWrapper final : public RenderTextureHostSWGL { PlaneInfo& aPlaneInfo) override; void UnmapPlanes() override; - wr::WrExternalImage LockSWGL(uint8_t aChannelIndex, void* aContext, - RenderCompositor* aCompositor) override; - - void UnlockSWGL() override; - bool LockSWGLCompositeSurface(void* aContext, - wr::SWGLCompositeSurfaceInfo* aInfo) override; - // This is just a wrapper, so doesn't need to report the // size of the wrapped object (which reports itself). size_t Bytes() override { return 0; } diff --git a/icecat/gfx/webrender_bindings/RenderThread.cpp b/icecat/gfx/webrender_bindings/RenderThread.cpp index d47a3c31ad..2232c80137 100644 --- a/icecat/gfx/webrender_bindings/RenderThread.cpp +++ b/icecat/gfx/webrender_bindings/RenderThread.cpp @@ -1041,8 +1041,7 @@ void RenderThread::RegisterExternalImage( if (texture->SyncObjectNeeded()) { mSyncObjectNeededRenderTextures.emplace(aExternalImageId, texture); } - auto [it, inserted] = mRenderTextures.emplace(aExternalImageId, texture); - MOZ_RELEASE_ASSERT(inserted, "ExternalImageId collision"); + mRenderTextures.emplace(aExternalImageId, texture); #ifdef DEBUG int32_t maxAllowedIncrease = diff --git a/icecat/gfx/webrender_bindings/WebRenderAPI.cpp b/icecat/gfx/webrender_bindings/WebRenderAPI.cpp index f1e11623a9..3869186f83 100644 --- a/icecat/gfx/webrender_bindings/WebRenderAPI.cpp +++ b/icecat/gfx/webrender_bindings/WebRenderAPI.cpp @@ -876,16 +876,19 @@ void WebRenderAPI::WaitFlushed() { void WebRenderAPI::Capture() { // see CaptureBits // SCENE | FRAME | TILE_CACHE - uint8_t bits = 15; // TODO: get from JavaScript - wr_api_capture(mDocHandle, bits); + uint8_t bits = 15; // TODO: get from JavaScript + const char* path = "wr-capture"; // TODO: get from JavaScript + wr_api_capture(mDocHandle, path, bits); } -void WebRenderAPI::StartCaptureSequence(uint32_t aFlags) { +void WebRenderAPI::StartCaptureSequence(const nsACString& aPath, + uint32_t aFlags) { if (mCaptureSequence) { wr_api_stop_capture_sequence(mDocHandle); } - wr_api_start_capture_sequence(mDocHandle, aFlags); + wr_api_start_capture_sequence(mDocHandle, PromiseFlatCString(aPath).get(), + aFlags); mCaptureSequence = true; } diff --git a/icecat/gfx/webrender_bindings/WebRenderAPI.h b/icecat/gfx/webrender_bindings/WebRenderAPI.h index fda4e75eae..ffbdd1111a 100644 --- a/icecat/gfx/webrender_bindings/WebRenderAPI.h +++ b/icecat/gfx/webrender_bindings/WebRenderAPI.h @@ -313,7 +313,7 @@ class WebRenderAPI final { void Capture(); - void StartCaptureSequence(uint32_t aFlags); + void StartCaptureSequence(const nsACString& aPath, uint32_t aFlags); void StopCaptureSequence(); void BeginRecording(const TimeStamp& aRecordingStart, diff --git a/icecat/gfx/webrender_bindings/src/bindings.rs b/icecat/gfx/webrender_bindings/src/bindings.rs index ec6f27577d..37a706e338 100644 --- a/icecat/gfx/webrender_bindings/src/bindings.rs +++ b/icecat/gfx/webrender_bindings/src/bindings.rs @@ -2599,11 +2599,12 @@ pub extern "C" fn wr_resource_updates_add_raw_font( txn.add_raw_font(key, bytes.flush_into_vec(), index); } -fn generate_capture_path() -> Option { +fn generate_capture_path(path: *const c_char) -> Option { use std::fs::{create_dir_all, File}; use std::io::Write; - let local_dir = PathBuf::from("wr-capture"); + let cstr = unsafe { CStr::from_ptr(path) }; + let local_dir = PathBuf::from(&*cstr.to_string_lossy()); // On Android we need to write into a particular folder on external // storage so that (a) it can be written without requiring permissions @@ -2652,16 +2653,16 @@ fn generate_capture_path() -> Option { } #[no_mangle] -pub extern "C" fn wr_api_capture(dh: &mut DocumentHandle, bits_raw: u32) { - if let Some(path) = generate_capture_path() { +pub extern "C" fn wr_api_capture(dh: &mut DocumentHandle, path: *const c_char, bits_raw: u32) { + if let Some(path) = generate_capture_path(path) { let bits = CaptureBits::from_bits(bits_raw as _).unwrap(); dh.api.save_capture(path, bits); } } #[no_mangle] -pub extern "C" fn wr_api_start_capture_sequence(dh: &mut DocumentHandle, bits_raw: u32) { - if let Some(path) = generate_capture_path() { +pub extern "C" fn wr_api_start_capture_sequence(dh: &mut DocumentHandle, path: *const c_char, bits_raw: u32) { + if let Some(path) = generate_capture_path(path) { let bits = CaptureBits::from_bits(bits_raw as _).unwrap(); dh.api.start_capture_sequence(path, bits); } diff --git a/icecat/gfx/ycbcr/scale_yuv_argb.cpp b/icecat/gfx/ycbcr/scale_yuv_argb.cpp index dab8066814..2a103fb61e 100644 --- a/icecat/gfx/ycbcr/scale_yuv_argb.cpp +++ b/icecat/gfx/ycbcr/scale_yuv_argb.cpp @@ -11,7 +11,6 @@ #include "libyuv/scale.h" -#include #include #include @@ -938,7 +937,7 @@ static void YUVToARGBCopy(const uint8_t* src_y, int src_stride_y, YUVColorSpace yuv_color_space) { YUVBuferIter iter; - iter.src_width = std::min(src_width, dst_width); + iter.src_width = src_width; iter.src_height = src_height; iter.src_stride_y = src_stride_y; iter.src_stride_u = src_stride_u; diff --git a/icecat/gfx/ycbcr/yuv_convert.cpp b/icecat/gfx/ycbcr/yuv_convert.cpp index 7dca203ec2..e225bd8ee4 100644 --- a/icecat/gfx/ycbcr/yuv_convert.cpp +++ b/icecat/gfx/ycbcr/yuv_convert.cpp @@ -96,11 +96,6 @@ ConvertYCbCrToRGB32(const uint8_t* y_buf, YUVColorSpace yuv_color_space, ColorRange color_range, RGB32Type rgb32_type) { - if (pic_x < 0 || pic_y < 0 || y_pitch < 0 || uv_pitch < 0 || rgb_pitch < 0) { - NS_WARNING("Negative origin or pitch is unsupported"); - return NS_ERROR_NOT_IMPLEMENTED; - } - // Deprecated function's conversion is accurate. // libyuv converion is a bit inaccurate to get performance. It dynamically // calculates RGB from YUV to use simd. In it, signed byte is used for @@ -177,7 +172,6 @@ ConvertYCbCrToRGB32(const uint8_t* y_buf, } case YV16: { src_y = y_buf + y_pitch * pic_y + pic_x; - // Only used when pic_x is even; odd pic_x is handled below. src_u = u_buf + uv_pitch * pic_y + pic_x / 2; src_v = v_buf + uv_pitch * pic_y + pic_x / 2; @@ -186,10 +180,8 @@ ConvertYCbCrToRGB32(const uint8_t* y_buf, } case YV12: { src_y = y_buf + y_pitch * pic_y + pic_x; - // Only used when pic_x and pic_y are both even; odd values are handled - // below. - src_u = u_buf + uv_pitch * (pic_y / 2) + pic_x / 2; - src_v = v_buf + uv_pitch * (pic_y / 2) + pic_x / 2; + src_u = u_buf + (uv_pitch * pic_y + pic_x) / 2; + src_v = v_buf + (uv_pitch * pic_y + pic_x) / 2; fConvertYUVToARGB = libyuv::I420ToARGBMatrix; break; @@ -213,81 +205,6 @@ ConvertYCbCrToRGB32(const uint8_t* y_buf, const uint8_t* u_channel = swap_uv? src_v : src_u; const uint8_t* v_channel = swap_uv? src_u : src_v; - - // libyuv handles odd crop widths and heights correctly via its _Any_ row - // variants, but cannot handle an odd pic_x or pic_y for subsampled formats. - // For YV12/YV16 an odd pic_x means the Y plane starts at a position that - // doesn't align with a chroma column boundary; for YV12, odd pic_y has the - // same problem vertically. libyuv would then pair each Y sample with the - // wrong chroma, affecting every pixel in the image. - // - // Fix: split the output into up to 4 non-overlapping regions, each with - // even-aligned source coordinates. Integer division of an odd sx or sy by 2 - // floors to the correct chroma index (both luma positions in a 2x2 block - // share one chroma sample), so all regions are correct. - // - // With dx = pic_x & 1 and dy = pic_y & 1 (each 0 or 1): - // - // +------------+--------------------+ - // | dx x dy | (W-dx) x dy | <- only when dy > 0 - // +------------+--------------------+ - // | dx x (H-dy)| (W-dx) x (H-dy) | <- left col only when dx > 0 - // +------------+--------------------+ - - // dx/dy: 1 if pic_x/pic_y is odd and the format has chroma subsampling in - // that axis, 0 otherwise. - int dx = (yuv_type == YV12 || yuv_type == YV16) ? (pic_x & 1) : 0; - int dy = (yuv_type == YV12) ? (pic_y & 1) : 0; - if (dx | dy) { - // Converts source sub-region (sx, sy, w, h) to the area at dst in rgb_buf. - auto convert = [&](int sx, int sy, int w, int h, uint8_t* dst) -> nsresult { - if (w <= 0 || h <= 0) { - return NS_OK; - } - const uint8_t* py = y_buf + sy * y_pitch + sx; - const uint8_t* pu; - const uint8_t* pv; - if (yuv_type == YV12) { - pu = u_buf + (sy / 2) * uv_pitch + sx / 2; - pv = v_buf + (sy / 2) * uv_pitch + sx / 2; - } else { // YV16: full-height chroma planes, only horizontally subsampled. - pu = u_buf + sy * uv_pitch + sx / 2; - pv = v_buf + sy * uv_pitch + sx / 2; - } - const uint8_t* uc = swap_uv ? pv : pu; - const uint8_t* vc = swap_uv ? pu : pv; - return ToNSResult(fConvertYUVToARGB(py, y_pitch, uc, uv_pitch, vc, uv_pitch, - dst, rgb_pitch, yuv_constant, w, h)); - }; - if (dy) { - // First output row (source row pic_y is odd). - if (dx) { - // Corner pixel: source (pic_x, pic_y) → output top-left. - nsresult rv = convert(pic_x, pic_y, 1, 1, rgb_buf); - if (NS_FAILED(rv)) { - return rv; - } - } - // Remaining columns of first row; source x pic_x+dx is even. - nsresult rv = convert(pic_x + dx, pic_y, pic_width - dx, 1, rgb_buf + dx * 4); - if (NS_FAILED(rv)) { - return rv; - } - } - int sy = pic_y + dy; // even-aligned source y for remaining output rows - int h = pic_height - dy; - if (dx) { - // Left column of remaining rows; width=1 handles the odd source x. - nsresult rv = convert(pic_x, sy, 1, h, rgb_buf + dy * rgb_pitch); - if (NS_FAILED(rv)) { - return rv; - } - } - // Main body: source (pic_x+dx, sy), both even-aligned. - return convert(pic_x + dx, sy, pic_width - dx, h, - rgb_buf + dy * rgb_pitch + dx * 4); - } - return ToNSResult(fConvertYUVToARGB(src_y, y_pitch, u_channel, uv_pitch, v_channel, uv_pitch, rgb_buf, rgb_pitch, yuv_constant, pic_width, pic_height)); diff --git a/icecat/image/ImageWrapper.cpp b/icecat/image/ImageWrapper.cpp index ebb6cf9dba..1a4e7bd2f2 100644 --- a/icecat/image/ImageWrapper.cpp +++ b/icecat/image/ImageWrapper.cpp @@ -240,8 +240,7 @@ ImageWrapper::RequestDiscard() { return mInnerImage->RequestDiscard(); } NS_IMETHODIMP_(void) ImageWrapper::RequestRefresh(const TimeStamp& aTime) { - RefPtr inner = mInnerImage; - return inner->RequestRefresh(aTime); + return mInnerImage->RequestRefresh(aTime); } NS_IMETHODIMP diff --git a/icecat/image/RasterImage.cpp b/icecat/image/RasterImage.cpp index b519ed2793..2c1ec02abb 100644 --- a/icecat/image/RasterImage.cpp +++ b/icecat/image/RasterImage.cpp @@ -81,8 +81,6 @@ RasterImage::RasterImage(nsIURI* aURI /* = nullptr */) //****************************************************************************** RasterImage::~RasterImage() { - mIsBeingDestroyed = true; - // Make sure our SourceBuffer is marked as complete. This will ensure that any // outstanding decoders terminate. if (!mSourceBuffer->IsComplete()) { @@ -491,12 +489,8 @@ RasterImage::WillDrawOpaqueNow() { void RasterImage::OnSurfaceDiscarded(const SurfaceKey& aSurfaceKey) { MOZ_ASSERT(mProgressTracker); - if (mIsBeingDestroyed) { - return; - } - bool animatedFramesDiscarded = - aSurfaceKey.Playback() == PlaybackType::eAnimated; + mAnimationState && aSurfaceKey.Playback() == PlaybackType::eAnimated; nsCOMPtr eventTarget = do_GetMainThread(); diff --git a/icecat/image/RasterImage.h b/icecat/image/RasterImage.h index b32a754e56..5354f87547 100644 --- a/icecat/image/RasterImage.h +++ b/icecat/image/RasterImage.h @@ -17,7 +17,6 @@ #ifndef mozilla_image_RasterImage_h #define mozilla_image_RasterImage_h -#include "mozilla/Atomics.h" #include "Image.h" #include "nsCOMPtr.h" #include "imgIContainer.h" @@ -383,8 +382,6 @@ class RasterImage final : public ImageResource, // This is currently only used for statistics int32_t mDecodeCount; - Atomic mIsBeingDestroyed{false}; - #ifdef DEBUG uint32_t mFramesNotified; #endif diff --git a/icecat/image/SourceBuffer.cpp b/icecat/image/SourceBuffer.cpp index 0b25709dd6..cb7b1c178a 100644 --- a/icecat/image/SourceBuffer.cpp +++ b/icecat/image/SourceBuffer.cpp @@ -206,11 +206,7 @@ nsresult SourceBuffer::Compact() { if (capacity == MAX_CHUNK_CAPACITY) { size_t lastLength = mChunks.LastElement().Length(); if (lastLength != capacity) { - if (lastLength == 0) { - mChunks.RemoveLastElement(); - } else { - mChunks.LastElement().SetCapacity(lastLength); - } + mChunks.LastElement().SetCapacity(lastLength); } return NS_OK; } diff --git a/icecat/image/SourceBuffer.h b/icecat/image/SourceBuffer.h index 77ce7813ae..79188fb882 100644 --- a/icecat/image/SourceBuffer.h +++ b/icecat/image/SourceBuffer.h @@ -419,10 +419,6 @@ class SourceBuffer final { bool SetCapacity(size_t aCapacity) { MOZ_ASSERT(mData, "Allocation failed but nobody checked for it"); - MOZ_ASSERT(aCapacity > 0, "zero sized resize"); - if (aCapacity == 0) { - return false; - } char* data = static_cast(realloc(mData, aCapacity)); if (!data) { return false; diff --git a/icecat/image/VectorImage.cpp b/icecat/image/VectorImage.cpp index 4776487a76..ca8303a5b4 100644 --- a/icecat/image/VectorImage.cpp +++ b/icecat/image/VectorImage.cpp @@ -1603,10 +1603,6 @@ void VectorImage::OnSVGDocumentError() { // invalid document. ReportDocumentUseCounters(); - // ProgressTracker::SyncNotifyProgress may release us, so ensure we - // stick around long enough to complete our work. - RefPtr kungFuDeathGrip(this); - if (mProgressTracker) { // Notify observers about the error and unblock page load. Progress progress = FLAG_HAS_ERROR; diff --git a/icecat/image/decoders/nsAVIFDecoder.cpp b/icecat/image/decoders/nsAVIFDecoder.cpp index a276236a2a..dfb86eb5cc 100644 --- a/icecat/image/decoders/nsAVIFDecoder.cpp +++ b/icecat/image/decoders/nsAVIFDecoder.cpp @@ -139,19 +139,13 @@ Orientation GetImageOrientation(const Mp4parseAvifInfo& aInfo) { } bool AVIFDecoderStream::ReadAt(int64_t offset, void* data, size_t size, size_t* bytes_read) { - CheckedInt checkedOffset(offset); - if (!checkedOffset.isValid() || offset < 0 || - checkedOffset.value() >= mBuffer->length()) { - return false; - } - CheckedInt endPoint = checkedOffset + size; - if (!endPoint.isValid() || endPoint.value() > mBuffer->length()) { + size = std::min(size, size_t(mBuffer->length() - offset)); + + if (size <= 0) { return false; } - size = std::min(size, mBuffer->length() - checkedOffset.value()); - - memcpy(data, mBuffer->begin() + checkedOffset.value(), size); + memcpy(data, mBuffer->begin() + offset, size); *bytes_read = size; return true; } @@ -164,14 +158,11 @@ bool AVIFDecoderStream::Length(int64_t* size) { const uint8_t* AVIFDecoderStream::GetContiguousAccess(int64_t aOffset, size_t aSize) { - CheckedInt checkedOffset(aOffset); - CheckedInt endPoint = checkedOffset + aSize; - if (!checkedOffset.isValid() || !endPoint.isValid() || - endPoint.value() > mBuffer->length()) { + if (aOffset + aSize >= mBuffer->length()) { return nullptr; } - return mBuffer->begin() + checkedOffset.value(); + return mBuffer->begin() + aOffset; } AVIFParser::~AVIFParser() { diff --git a/icecat/image/decoders/nsBMPDecoder.cpp b/icecat/image/decoders/nsBMPDecoder.cpp index 4b91a9c106..650d1a751d 100644 --- a/icecat/image/decoders/nsBMPDecoder.cpp +++ b/icecat/image/decoders/nsBMPDecoder.cpp @@ -238,8 +238,7 @@ nsBMPDecoder::nsBMPDecoder(RasterImage* aImage, uint32_t aDataOffset) nsBMPDecoder::~nsBMPDecoder() {} // Obtains the size of the compressed image resource. -uint32_t nsBMPDecoder::GetCompressedImageSize() const { - // Keep this in sync with the overflow check in ReadInfoHeaderRest. +int32_t nsBMPDecoder::GetCompressedImageSize() const { // In the RGB case mImageSize might not be set, so compute it manually. MOZ_ASSERT(mPixelRowSize != 0); return mH.mCompression == Compression::RGB ? mPixelRowSize * AbsoluteHeight() @@ -638,16 +637,6 @@ LexerTransition nsBMPDecoder::ReadInfoHeaderRest( mPixelRowSize += 4 - surplus; } - if (mIsWithinICO && mH.mCompression == Compression::RGB) { - // The ICO decoders calls GetCompressedImageSize so we need to make sure the - // computation it does cannot overflow. Keep this in sync with that - // function. - auto product = CheckedInt(mPixelRowSize) * AbsoluteHeight(); - if (!product.isValid()) { - return Transition::TerminateFailure(); - } - } - size_t bitFieldsLengthStillToRead = 0; if (mH.mCompression == Compression::BITFIELDS) { // Need to read bitfields. diff --git a/icecat/image/decoders/nsBMPDecoder.h b/icecat/image/decoders/nsBMPDecoder.h index d93b0b82de..c7990834b9 100644 --- a/icecat/image/decoders/nsBMPDecoder.h +++ b/icecat/image/decoders/nsBMPDecoder.h @@ -159,7 +159,7 @@ class nsBMPDecoder : public Decoder { size_t GetImageDataLength() const { return mImageDataLength; } /// Obtains the size of the compressed image resource. - uint32_t GetCompressedImageSize() const; + int32_t GetCompressedImageSize() const; /// Mark this BMP as being within an ICO file. Only used for testing purposes /// because the ICO-specific constructor does this marking automatically. @@ -205,7 +205,7 @@ class nsBMPDecoder : public Decoder { nsBMPDecoder(RasterImage* aImage, State aState, size_t aLength, bool aForClipboard); - uint32_t AbsoluteHeight() const { return abs(mH.mHeight); } + int32_t AbsoluteHeight() const { return abs(mH.mHeight); } uint32_t* RowBuffer(); void ClearRowBufferRemainder(); diff --git a/icecat/image/decoders/nsICODecoder.cpp b/icecat/image/decoders/nsICODecoder.cpp index 81eb180bbf..502cad990d 100644 --- a/icecat/image/decoders/nsICODecoder.cpp +++ b/icecat/image/decoders/nsICODecoder.cpp @@ -136,7 +136,7 @@ size_t nsICODecoder::FirstResourceOffset() const { // The first resource starts right after the directory, which starts right // after the ICO header. - return ICOHEADERSIZE + static_cast(mNumIcons) * ICODIRENTRYSIZE; + return ICOHEADERSIZE + mNumIcons * ICODIRENTRYSIZE; } LexerTransition nsICODecoder::ReadDirEntry(const char* aData) { @@ -221,11 +221,7 @@ LexerTransition nsICODecoder::IterateUnsizedDirEntry() { // Move to the resource data to start metadata decoding. mDirEntry = &mUnsizedDirEntries[0]; - // We ignored any dir entries whose offset didn't make sense before this. - MOZ_ASSERT(static_cast(mDirEntry->mImageOffset) >= - FirstResourceOffset()); - size_t offsetToResource = - static_cast(mDirEntry->mImageOffset) - FirstResourceOffset(); + size_t offsetToResource = mDirEntry->mImageOffset - FirstResourceOffset(); return Transition::ToUnbuffered(ICOState::FOUND_RESOURCE, ICOState::SKIP_TO_RESOURCE, offsetToResource); } @@ -320,9 +316,6 @@ LexerTransition nsICODecoder::FinishDirEntry() { mDownscaler.emplace(OutputSize().ToUnknownSize()); } - // We ignored any dir entries whose offset didn't make sense before this. - MOZ_ASSERT(static_cast(mDirEntry->mImageOffset) >= - FirstResourceOffset()); size_t offsetToResource = mDirEntry->mImageOffset - FirstResourceOffset(); return Transition::ToUnbuffered(ICOState::FOUND_RESOURCE, ICOState::SKIP_TO_RESOURCE, offsetToResource); @@ -444,67 +437,37 @@ LexerTransition nsICODecoder::ReadBIH(const char* aData) { // Do we have an AND mask on this BMP? If so, we need to read it after we read // the BMP data itself. - auto bmpDataLength = - CheckedInt(bmpDecoder->GetCompressedImageSize()) + - 4 * numColors; - auto fullBmpLength = bmpDataLength + BITMAPINFOSIZE; - if (!bmpDataLength.isValid() || !fullBmpLength.isValid() || - fullBmpLength.value() > mDirEntry->mBytesInRes) { - // Claimed data length inside the bmp resource exceeds dir entry size. - return Transition::TerminateFailure(); - } - bool hasANDMask = fullBmpLength.value() < mDirEntry->mBytesInRes; + uint32_t bmpDataLength = bmpDecoder->GetCompressedImageSize() + 4 * numColors; + bool hasANDMask = (BITMAPINFOSIZE + bmpDataLength) < mDirEntry->mBytesInRes; ICOState afterBMPState = hasANDMask ? ICOState::PREPARE_FOR_MASK : ICOState::FINISHED_RESOURCE; // Read in the rest of the BMP unbuffered. return Transition::ToUnbuffered(afterBMPState, ICOState::READ_RESOURCE, - bmpDataLength.value()); + bmpDataLength); } LexerTransition nsICODecoder::PrepareForMask() { MOZ_ASSERT(mDirEntry); + MOZ_ASSERT(mContainedDecoder->GetDecodeDone()); // We have received all of the data required by the BMP decoder so flushing - // here guarantees the decode has finished, if we have a valid file. + // here guarantees the decode has finished. if (!FlushContainedDecoder()) { return Transition::TerminateFailure(); } - if (!mContainedDecoder->GetDecodeDone()) { - return Transition::TerminateFailure(); - } + MOZ_ASSERT(mContainedDecoder->GetDecodeDone()); RefPtr bmpDecoder = static_cast(mContainedDecoder.get()); - if (!bmpDecoder->GetImageData() || bmpDecoder->GetImageDataLength() == 0) { - return Transition::TerminateFailure(); - } - if (mDownscaler) { - if (mDownscaler->TargetSize().width < 0 || - mDownscaler->TargetSize().height < 0 || - bmpDecoder->GetImageDataLength() != - static_cast(mDownscaler->TargetSize().width * - mDownscaler->TargetSize().height * 4)) { - return Transition::TerminateFailure(); - } - } else { - if (mDirEntry->mSize.width < 0 || mDirEntry->mSize.height < 0 || - bmpDecoder->GetImageDataLength() != - static_cast(mDirEntry->mSize.width * - mDirEntry->mSize.height * 4)) { - return Transition::TerminateFailure(); - } - } - uint16_t numColors = GetNumColors(); MOZ_ASSERT(numColors != uint16_t(-1)); // Determine the length of the AND mask. uint32_t bmpLengthWithHeader = BITMAPINFOSIZE + bmpDecoder->GetCompressedImageSize() + 4 * numColors; - // We can't get here unless this is true. MOZ_ASSERT(bmpLengthWithHeader < mDirEntry->mBytesInRes); uint32_t maskLength = mDirEntry->mBytesInRes - bmpLengthWithHeader; @@ -528,6 +491,9 @@ LexerTransition nsICODecoder::PrepareForMask() { // produced, so we need to downscale the mask into a temporary buffer and then // combine the mask's alpha values with the color values from the image. if (mDownscaler) { + MOZ_ASSERT(bmpDecoder->GetImageDataLength() == + mDownscaler->TargetSize().width * + mDownscaler->TargetSize().height * sizeof(uint32_t)); mMaskBuffer = MakeUniqueFallible(bmpDecoder->GetImageDataLength()); if (NS_WARN_IF(!mMaskBuffer)) { @@ -650,11 +616,7 @@ LexerTransition nsICODecoder::FinishResource() { return Transition::TerminateFailure(); } - if (!mContainedDecoder->GetDecodeDone()) { - // We've sent as much data as the dir entry says for this resource, if it's - // not done by now then something is corrupt. - return Transition::TerminateFailure(); - } + MOZ_ASSERT(mContainedDecoder->GetDecodeDone()); // If it is a metadata decode, all we were trying to get was the size // information missing from the dir entry. diff --git a/icecat/image/decoders/nsPNGDecoder.cpp b/icecat/image/decoders/nsPNGDecoder.cpp index c17def8ed8..5962468a10 100644 --- a/icecat/image/decoders/nsPNGDecoder.cpp +++ b/icecat/image/decoders/nsPNGDecoder.cpp @@ -448,6 +448,9 @@ uint32_t nsPNGDecoder::ReadColorProfile(png_structp png_ptr, png_infop info_ptr, mInProfile = qcms_profile_create_cicp( primaries, ChooseTransferCharacteristics(tc)); if (mInProfile) { + if (!(color_type & PNG_COLOR_MASK_COLOR)) { + png_set_gray_to_rgb(png_ptr); + } return qcms_profile_get_rendering_intent(mInProfile); } } @@ -474,7 +477,9 @@ uint32_t nsPNGDecoder::ReadColorProfile(png_structp png_ptr, png_infop info_ptr, mismatch = true; } } else { - if (profileSpace != icSigRgbData && profileSpace != icSigGrayData) { + if (profileSpace == icSigRgbData) { + png_set_gray_to_rgb(png_ptr); + } else if (profileSpace != icSigGrayData) { mismatch = true; } } @@ -493,6 +498,7 @@ uint32_t nsPNGDecoder::ReadColorProfile(png_structp png_ptr, png_infop info_ptr, *sRGBTag = true; int fileIntent; + png_set_gray_to_rgb(png_ptr); png_get_sRGB(png_ptr, info_ptr, &fileIntent); uint32_t map[] = {QCMS_INTENT_PERCEPTUAL, QCMS_INTENT_RELATIVE_COLORIMETRIC, QCMS_INTENT_SATURATION, @@ -517,6 +523,10 @@ uint32_t nsPNGDecoder::ReadColorProfile(png_structp png_ptr, png_infop info_ptr, mInProfile = qcms_profile_create_rgb_with_gamma(whitePoint, primaries, 1.0 / gammaOfFile); + + if (mInProfile) { + png_set_gray_to_rgb(png_ptr); + } } return QCMS_INTENT_PERCEPTUAL; // Our default @@ -583,9 +593,9 @@ void nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr) { // We only need to extract the color profile for non-metadata decodes. It is // fairly expensive to read the profile and create the transform so we should // avoid it if not necessary. + uint32_t intent = -1; + bool sRGBTag = false; if (!decoder->IsMetadataDecode()) { - uint32_t intent = -1; - bool sRGBTag = false; if (decoder->mCMSMode != CMSMode::Off) { intent = gfxPlatform::GetRenderingIntent(); uint32_t pIntent = @@ -594,74 +604,15 @@ void nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr) { if (intent == uint32_t(-1)) { intent = pIntent; } - - // png_get_channels won't return accurate info for determining the alpha - // status until after we call png_read_update_info below so we use this - // method of determining if we will have alpha so that we can select the - // correct qcms input type here. - const bool willHaveAlpha = - (color_type & PNG_COLOR_MASK_ALPHA) || num_trans != 0; - - // Determine the qcms transform here, before png_read_update_info commits - // libpng to a specific output format. For gray images the presence or - // absence of a qcms transform determines if we want libpng to output - // gray data (we call qcms to transform it to rgb before passing it to - // the surface pipe), or rgb data (no qcms transform so we need rgb data - // to pass directly into the surface pipe). - if (decoder->mInProfile && decoder->GetCMSOutputProfile()) { - uint32_t profileSpace = - qcms_profile_get_color_space(decoder->mInProfile); - decoder->mUsePipeTransform = profileSpace != icSigGrayData; - - qcms_data_type inType, outType; - if (decoder->mUsePipeTransform) { - // libpng outputs data in RGBA order and we want our final output to - // be BGRA order. SurfacePipe takes care of this for us but - // unfortunately the swizzle to change the order can happen before or - // after color management depending on if we have alpha. If we have - // alpha then the order will be color management then swizzle. If we - // do not have alpha then the order will be swizzle then color - // management. See CreateSurfacePipe - // https://searchfox.org/mozilla-central/rev/7d6651d29c5c1620bc059f879a3e9bbfb53f271f/image/SurfacePipeFactory.h#133-145 - if (willHaveAlpha) { - inType = QCMS_DATA_RGBA_8; - outType = QCMS_DATA_RGBA_8; - } else { - inType = gfxPlatform::GetCMSOSRGBAType(); - outType = inType; - } - } else { - // qcms operates on the data before we hand it to SurfacePipe. - inType = willHaveAlpha ? QCMS_DATA_GRAYA_8 : QCMS_DATA_GRAY_8; - outType = gfxPlatform::GetCMSOSRGBAType(); - } - decoder->mTransform = qcms_transform_create( - decoder->mInProfile, inType, decoder->GetCMSOutputProfile(), - outType, (qcms_intent)intent); - } else if ((sRGBTag && decoder->mCMSMode == CMSMode::TaggedOnly) || - decoder->mCMSMode == CMSMode::All) { - // See comment above about SurfacePipe, color management and ordering. - decoder->mUsePipeTransform = true; - if (willHaveAlpha) { - decoder->mTransform = - decoder->GetCMSsRGBTransform(SurfaceFormat::R8G8B8A8); - } else { - decoder->mTransform = - decoder->GetCMSsRGBTransform(SurfaceFormat::OS_RGBA); - } - } } - - // Expand gray to RGB unless we will pass the data to qcms to handle it via - // a non-pipe transform. - if (!decoder->mTransform || decoder->mUsePipeTransform) { + const bool hasColorInfo = decoder->mInProfile || sRGBTag; + if (!hasColorInfo || !decoder->GetCMSOutputProfile()) { png_set_gray_to_rgb(png_ptr); - } - // Only apply libpng gamma correction when there is no qcms transform to - // handle it, and CMS is not entirely disabled. - if (!decoder->mTransform && decoder->mCMSMode != CMSMode::Off) { - PNGDoGammaCorrection(png_ptr, info_ptr); + // only do gamma correction if CMS isn't entirely disabled + if (decoder->mCMSMode != CMSMode::Off) { + PNGDoGammaCorrection(png_ptr, info_ptr); + } } } @@ -700,6 +651,7 @@ void nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr) { } #endif + auto transparency = decoder->GetTransparencyType(frameRect); if (decoder->IsMetadataDecode()) { // If we are animated then the first frame rect is either: // 1) the whole image if the IDAT chunk is part of the animation @@ -708,14 +660,61 @@ void nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr) { // PostHasTransparency in the metadata decode if we need to. So it's // okay to pass IntRect(0, 0, width, height) here for animated images; // they will call with the proper first frame rect in the full decode. - decoder->PostHasTransparencyIfNeeded( - decoder->GetTransparencyType(frameRect)); + decoder->PostHasTransparencyIfNeeded(transparency); // We have the metadata we're looking for, so stop here, before we allocate // buffers below. return decoder->DoTerminate(png_ptr, TerminalState::SUCCESS); } + if (decoder->mInProfile && decoder->GetCMSOutputProfile()) { + qcms_data_type inType; + qcms_data_type outType; + + uint32_t profileSpace = qcms_profile_get_color_space(decoder->mInProfile); + decoder->mUsePipeTransform = profileSpace != icSigGrayData; + if (decoder->mUsePipeTransform) { + // libpng outputs data in RGBA order and we want our final output to be + // BGRA order. SurfacePipe takes care of this for us but unfortunately the + // swizzle to change the order can happen before or after color management + // depending on if we have alpha. If we have alpha then the order will be + // color management then swizzle. If we do not have alpha then the order + // will be swizzle then color management. See CreateSurfacePipe + // https://searchfox.org/mozilla-central/rev/7d6651d29c5c1620bc059f879a3e9bbfb53f271f/image/SurfacePipeFactory.h#133-145 + if (transparency == TransparencyType::eAlpha) { + inType = QCMS_DATA_RGBA_8; + outType = QCMS_DATA_RGBA_8; + } else { + inType = gfxPlatform::GetCMSOSRGBAType(); + outType = inType; + } + } else { + // qcms operates on the data before we hand it to SurfacePipe. + if (color_type & PNG_COLOR_MASK_ALPHA) { + inType = QCMS_DATA_GRAYA_8; + outType = gfxPlatform::GetCMSOSRGBAType(); + } else { + inType = QCMS_DATA_GRAY_8; + outType = gfxPlatform::GetCMSOSRGBAType(); + } + } + + decoder->mTransform = qcms_transform_create(decoder->mInProfile, inType, + decoder->GetCMSOutputProfile(), + outType, (qcms_intent)intent); + } else if ((sRGBTag && decoder->mCMSMode == CMSMode::TaggedOnly) || + decoder->mCMSMode == CMSMode::All) { + // See comment above about SurfacePipe, color management and ordering. + decoder->mUsePipeTransform = true; + if (transparency == TransparencyType::eAlpha) { + decoder->mTransform = + decoder->GetCMSsRGBTransform(SurfaceFormat::R8G8B8A8); + } else { + decoder->mTransform = + decoder->GetCMSsRGBTransform(SurfaceFormat::OS_RGBA); + } + } + #ifdef PNG_APNG_SUPPORTED if (isAnimated) { png_set_progressive_frame_fn(png_ptr, nsPNGDecoder::frame_info_callback, diff --git a/icecat/image/moz.build b/icecat/image/moz.build index a075a4f7f7..7fbd88d284 100644 --- a/icecat/image/moz.build +++ b/icecat/image/moz.build @@ -65,10 +65,8 @@ EXPORTS.mozilla.image += [ "ICOFileHeaders.h", "ImageMemoryReporter.h", "ImageUtils.h", - "PlaybackType.h", "Resolution.h", "SourceBuffer.h", - "SurfaceCache.h", "SurfaceFlags.h", "WebRenderImageProvider.h", ] diff --git a/icecat/intl/icu-patches/bug-2029806-surrogates.diff b/icecat/intl/icu-patches/bug-2029806-surrogates.diff deleted file mode 100644 index 6bae1f20d1..0000000000 --- a/icecat/intl/icu-patches/bug-2029806-surrogates.diff +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/intl/icu/source/common/ustrcase.cpp b/intl/icu/source/common/ustrcase.cpp ---- a/intl/icu/source/common/ustrcase.cpp -+++ b/intl/icu/source/common/ustrcase.cpp -@@ -1713,8 +1713,10 @@ - * remember that this simulates bulk text replacement: - * the decomposition would replace the entire code point - */ -- --s2; -- --m2; -- c2=*(s2-1); -+ if (start2<=(s2-2)) { -+ --s2; -+ --m2; -+ c2=*(s2-1); -+ } - } - } - -@@ -1759,8 +1761,10 @@ - * remember that this simulates bulk text replacement: - * the decomposition would replace the entire code point - */ -- --s1; -- --m2; -- c1=*(s1-1); -+ if (start1<=(s1-2)) { -+ --s1; -+ --m1; -+ c1=*(s1-1); -+ } - } - } diff --git a/icecat/intl/icu/source/common/ustrcase.cpp b/icecat/intl/icu/source/common/ustrcase.cpp index 41649ac0e6..58b5c5ef62 100644 --- a/icecat/intl/icu/source/common/ustrcase.cpp +++ b/icecat/intl/icu/source/common/ustrcase.cpp @@ -1713,11 +1713,9 @@ static int32_t _cmpFold( * remember that this simulates bulk text replacement: * the decomposition would replace the entire code point */ - if (start2<=(s2-2)) { - --s2; - --m2; - c2=*(s2-1); - } + --s2; + --m2; + c2=*(s2-1); } } @@ -1761,11 +1759,9 @@ static int32_t _cmpFold( * remember that this simulates bulk text replacement: * the decomposition would replace the entire code point */ - if (start1<=(s1-2)) { - --s1; - --m1; - c1=*(s1-1); - } + --s1; + --m2; + c1=*(s1-1); } } diff --git a/icecat/ipc/glue/BackgroundParentImpl.cpp b/icecat/ipc/glue/BackgroundParentImpl.cpp index 1dcdd8a79c..98f33cd7b2 100644 --- a/icecat/ipc/glue/BackgroundParentImpl.cpp +++ b/icecat/ipc/glue/BackgroundParentImpl.cpp @@ -537,12 +537,6 @@ IPCResult BackgroundParentImpl::RecvPSharedWorkerConstructor( PSharedWorkerParent* aActor, const mozilla::dom::RemoteWorkerData& aData, const uint64_t& aWindowID, const mozilla::dom::MessagePortIdentifier& aPortIdentifier) { - - if (MOZ_UNLIKELY(aData.serviceWorkerData().type() != - OptionalServiceWorkerData::Tvoid_t)) { - return IPC_FAIL(this, "Invalid worker type for PSharedWorkerParent"); - } - mozilla::dom::SharedWorkerParent* actor = static_cast(aActor); actor->Initialize(aData, aWindowID, aPortIdentifier); @@ -683,10 +677,6 @@ mozilla::ipc::IPCResult BackgroundParentImpl::RecvPUDPSocketConstructor( AssertIsInMainProcess(); AssertIsOnBackgroundThread(); - if (!StaticPrefs::dom_udpsocket_enabled() && aFilter.IsEmpty()) { - return IPC_FAIL(this, "udp socket not enabled"); - } - if (aOptionalPrincipal.isSome()) { // Support for checking principals (for non-mtransport use) will be handled // in bug 1167039 diff --git a/icecat/ipc/glue/BackgroundUtils.cpp b/icecat/ipc/glue/BackgroundUtils.cpp index d33986c0d9..536030a45b 100644 --- a/icecat/ipc/glue/BackgroundUtils.cpp +++ b/icecat/ipc/glue/BackgroundUtils.cpp @@ -605,8 +605,7 @@ nsresult LoadInfoToLoadInfoArgs(nsILoadInfo* aLoadInfo, aLoadInfo->GetIsMetaRefresh(), aLoadInfo->GetLoadingEmbedderPolicy(), aLoadInfo->GetIsOriginTrialCoepCredentiallessEnabledForTopLevel(), unstrippedURI, interceptionInfoArg, aLoadInfo->GetIsNewWindowTarget(), - aLoadInfo->GetUserNavigationInvolvement(), - aLoadInfo->GetContainerFeaturePolicyInfo()); + aLoadInfo->GetUserNavigationInvolvement()); return NS_OK; } @@ -854,8 +853,7 @@ nsresult LoadInfoArgsToLoadInfo(const LoadInfoArgs& loadInfoArgs, RefPtr loadInfo = new mozilla::net::LoadInfo( loadingPrincipal, triggeringPrincipal, principalToInherit, topLevelPrincipal, resultPrincipalURI, cookieJarSettings, cspToInherit, - loadInfoArgs.containerFeaturePolicyInfo(), triggeringRemoteType, - loadInfoArgs.sandboxedNullPrincipalID(), clientInfo, + triggeringRemoteType, loadInfoArgs.sandboxedNullPrincipalID(), clientInfo, reservedClientInfo, initialClientInfo, controller, loadInfoArgs.securityFlags(), loadInfoArgs.sandboxFlags(), loadInfoArgs.triggeringSandboxFlags(), loadInfoArgs.triggeringWindowId(), diff --git a/icecat/ipc/glue/UtilityProcessParent.cpp b/icecat/ipc/glue/UtilityProcessParent.cpp index b629cf40fe..723fee08c8 100644 --- a/icecat/ipc/glue/UtilityProcessParent.cpp +++ b/icecat/ipc/glue/UtilityProcessParent.cpp @@ -37,20 +37,17 @@ bool UtilityProcessParent::SendRequestMemoryReport( const bool& aMinimizeMemoryUsage, const Maybe& aDMDFile) { mMemoryReportRequest = MakeUnique(aGeneration); - RefPtr self(this); - PUtilityProcessParent::SendRequestMemoryReport(aGeneration, aAnonymize, - aMinimizeMemoryUsage, aDMDFile) - ->Then( - GetCurrentSerialEventTarget(), __func__, - [self](uint32_t aGeneration2) { - if (self->mMemoryReportRequest) { - self->mMemoryReportRequest->Finish(aGeneration2); - self->mMemoryReportRequest = nullptr; - } - }, - [self](mozilla::ipc::ResponseRejectReason) { - self->mMemoryReportRequest = nullptr; - }); + PUtilityProcessParent::SendRequestMemoryReport( + aGeneration, aAnonymize, aMinimizeMemoryUsage, aDMDFile, + [self = RefPtr{this}](const uint32_t& aGeneration2) { + if (self->mMemoryReportRequest) { + self->mMemoryReportRequest->Finish(aGeneration2); + self->mMemoryReportRequest = nullptr; + } + }, + [self = RefPtr{this}](mozilla::ipc::ResponseRejectReason) { + self->mMemoryReportRequest = nullptr; + }); return true; } diff --git a/icecat/js/loader/ModuleLoaderBase.cpp b/icecat/js/loader/ModuleLoaderBase.cpp index ec27d4e33b..dbe8f11c4e 100644 --- a/icecat/js/loader/ModuleLoaderBase.cpp +++ b/icecat/js/loader/ModuleLoaderBase.cpp @@ -169,14 +169,8 @@ JSObject* ModuleLoaderBase::HostResolveImportedModule( bool ModuleLoaderBase::ImportMetaResolve(JSContext* cx, unsigned argc, Value* vp) { CallArgs args = CallArgsFromVp(argc, vp); - RootedValue moduleValue( - cx, js::GetFunctionNativeReserved( - &args.callee(), - static_cast(ModuleRecordSlot))); - MOZ_ASSERT(!moduleValue.isUndefined()); - RootedObject moduleRecord(cx, &moduleValue.toObject()); - RootedValue modulePrivate(cx, GetModulePrivate(moduleRecord)); - MOZ_ASSERT(!modulePrivate.isUndefined()); + RootedValue modulePrivate( + cx, js::GetFunctionNativeReserved(&args.callee(), ModulePrivateSlot)); // https://html.spec.whatwg.org/#hostgetimportmetaproperties // Step 4.1. Set specifier to ? ToString(specifier). @@ -286,15 +280,10 @@ bool ModuleLoaderBase::HostPopulateImportMeta( } // Store the 'active script' of the meta object into the function slot. - // See https://html.spec.whatwg.org/#active-script - // - // Note: Hold a reference to the module record which in turn keeps the - // ModuleScript alive when import.resolve is called. + // https://html.spec.whatwg.org/#active-script RootedObject resolveFuncObj(aCx, JS_GetFunctionObject(resolveFunc)); - RootedObject moduleRecord(aCx, script->ModuleRecord()); - js::SetFunctionNativeReserved( - resolveFuncObj, static_cast(ModuleRecordSlot), - JS::ObjectValue(*moduleRecord)); + js::SetFunctionNativeReserved(resolveFuncObj, ModulePrivateSlot, + aReferencingPrivate); return true; } diff --git a/icecat/js/loader/ModuleLoaderBase.h b/icecat/js/loader/ModuleLoaderBase.h index 4888ce693e..8e67a41485 100644 --- a/icecat/js/loader/ModuleLoaderBase.h +++ b/icecat/js/loader/ModuleLoaderBase.h @@ -557,7 +557,7 @@ class ModuleLoaderBase : public nsISupports { bool IsFetchingAndHasWaitingRequest(ModuleLoadRequest* aRequest); // The slot stored in ImportMetaResolve function. - enum { ModuleRecordSlot = 0, SlotCount }; + enum { ModulePrivateSlot = 0, SlotCount }; // The number of args in ImportMetaResolve. static const uint32_t ImportMetaResolveNumArgs = 1; diff --git a/icecat/js/public/Object.h b/icecat/js/public/Object.h index 22083b7b3e..c7c5e3c617 100644 --- a/icecat/js/public/Object.h +++ b/icecat/js/public/Object.h @@ -129,12 +129,6 @@ inline void SetObjectISupports(JSObject* obj, void* nsISupportsValue) { SetReservedSlot(obj, 0, PrivateValue(nsISupportsValue)); } -/** - * Returns true if the native object has own named properties, i.e. user-added - * properties (expandos). Must not be called on proxy objects. - */ -extern JS_PUBLIC_API bool NativeObjectHasOwnProperties(const JSObject* obj); - } // namespace JS // JSObject* is an aligned pointer, but this information isn't available in the diff --git a/icecat/js/public/Realm.h b/icecat/js/public/Realm.h index e5fa11a8db..065b1fc111 100644 --- a/icecat/js/public/Realm.h +++ b/icecat/js/public/Realm.h @@ -21,8 +21,8 @@ namespace js { namespace gc { -JS_PUBLIC_API void TraceRealmRoot(JSTracer* trc, JS::Realm* realm, - const char* name); +JS_PUBLIC_API void TraceRealm(JSTracer* trc, JS::Realm* realm, + const char* name); } // namespace gc } // namespace js @@ -34,7 +34,7 @@ template <> struct GCPolicy : public NonGCPointerPolicy { static void trace(JSTracer* trc, Realm** vp, const char* name) { if (*vp) { - ::js::gc::TraceRealmRoot(trc, *vp, name); + ::js::gc::TraceRealm(trc, *vp, name); } } }; diff --git a/icecat/js/public/Value.h b/icecat/js/public/Value.h index 277b5e197c..c70d5b6888 100644 --- a/icecat/js/public/Value.h +++ b/icecat/js/public/Value.h @@ -426,7 +426,7 @@ constexpr uint64_t CanonicalizedNaNSignificand = 0x8000000000000; #endif #if defined(JS_RUNTIME_CANONICAL_NAN) -extern JS_PUBLIC_API uint64_t CanonicalizedNaNBits; +extern uint64_t CanonicalizedNaNBits; #else constexpr uint64_t CanonicalizedNaNBits = mozilla::SpecificNaNBitsnames().ok)); for (uint32_t i = 0; i < promisesToResolve.length(); i++) { - AutoRealm ar(cx, promisesToResolve[i]); if (!PromiseObject::resolve(cx, promisesToResolve[i], resultMsg)) { MOZ_ASSERT(cx->isThrowingOutOfMemory() || cx->isThrowingOverRecursed()); return false; diff --git a/icecat/js/src/builtin/ModuleObject.cpp b/icecat/js/src/builtin/ModuleObject.cpp index 6a6265d6bf..52e1bd0369 100644 --- a/icecat/js/src/builtin/ModuleObject.cpp +++ b/icecat/js/src/builtin/ModuleObject.cpp @@ -913,9 +913,8 @@ bool ModuleObject::isInstance(HandleValue value) { } bool ModuleObject::hasCyclicModuleFields() const { - bool result = !getReservedSlot(CyclicModuleFieldsSlot).isUndefined(); - MOZ_ASSERT_IF(result, !hasSyntheticModuleFields()); - return result; + // This currently only returns false if we GC during initialization. + return !getReservedSlot(CyclicModuleFieldsSlot).isUndefined(); } CyclicModuleFields* ModuleObject::cyclicModuleFields() { @@ -1497,9 +1496,7 @@ bool ModuleObject::createSyntheticEnvironment(JSContext* cx, return false; } - // We expect one property per synthetic value plus one for the *namespace* - // binding. - MOZ_ASSERT(env->shape()->propMapLength() == values.length() + 1); + MOZ_ASSERT(env->shape()->propMapLength() == values.length()); for (uint32_t i = 0; i < values.length(); i++) { env->setAliasedBinding(env->firstSyntheticValueSlot() + i, values[i]); diff --git a/icecat/js/src/builtin/RegExp.cpp b/icecat/js/src/builtin/RegExp.cpp index 3f21500ae5..8de4374907 100644 --- a/icecat/js/src/builtin/RegExp.cpp +++ b/icecat/js/src/builtin/RegExp.cpp @@ -1058,7 +1058,7 @@ static constexpr auto AsciiRegExpEscapeMap() { */ template [[nodiscard]] static bool EncodeForRegExpEscape( - JSContext* cx, mozilla::Span chars, JSStringBuilder& sb) { + mozilla::Span chars, JSStringBuilder& sb) { MOZ_ASSERT(sb.empty()); const size_t length = chars.size(); @@ -1075,7 +1075,7 @@ template // Initial scan to determine if escape sequences are needed and to compute // the output length. - mozilla::CheckedInt outLength = length; + size_t outLength = length; // Leading Ascii alpha-numeric character is hex-escaped. size_t scanStart = 0; @@ -1115,16 +1115,12 @@ template outLength += UnicodeEscapeAddLength; } } - if (!outLength.isValid()) { - ReportAllocationOverflow(cx); - return false; - } // Return if no escape sequences are needed. - if (outLength.value() == length) { + if (outLength == length) { return true; } - MOZ_ASSERT(outLength.value() > length); + MOZ_ASSERT(outLength > length); // Inflating is fallible, so we have to convert to two-byte upfront. if constexpr (std::is_same_v) { @@ -1134,7 +1130,7 @@ template } // Allocate memory for the output using the final length. - if (!sb.reserve(outLength.value())) { + if (!sb.reserve(outLength)) { return false; } @@ -1234,20 +1230,19 @@ template appendUnescaped(length); } - MOZ_ASSERT(sb.length() == outLength.value(), "all characters were written"); + MOZ_ASSERT(sb.length() == outLength, "all characters were written"); return true; } -[[nodiscard]] static bool EncodeForRegExpEscape(JSContext* cx, - JSLinearString* string, +[[nodiscard]] static bool EncodeForRegExpEscape(JSLinearString* string, JSStringBuilder& sb) { JS::AutoCheckCannotGC nogc; if (string->hasLatin1Chars()) { auto chars = mozilla::Span(string->latin1Range(nogc)); - return EncodeForRegExpEscape(cx, chars, sb); + return EncodeForRegExpEscape(chars, sb); } auto chars = mozilla::Span(string->twoByteRange(nogc)); - return EncodeForRegExpEscape(cx, chars, sb); + return EncodeForRegExpEscape(chars, sb); } /** @@ -1271,7 +1266,7 @@ static bool regexp_escape(JSContext* cx, unsigned argc, Value* vp) { // Step 2-5. JSStringBuilder sb(cx); - if (!EncodeForRegExpEscape(cx, string, sb)) { + if (!EncodeForRegExpEscape(string, sb)) { return false; } diff --git a/icecat/js/src/builtin/TestingFunctions.cpp b/icecat/js/src/builtin/TestingFunctions.cpp index c9debc2d33..4d7bdb0470 100644 --- a/icecat/js/src/builtin/TestingFunctions.cpp +++ b/icecat/js/src/builtin/TestingFunctions.cpp @@ -6180,14 +6180,6 @@ static bool Deserialize(JSContext* cx, unsigned argc, Value* vp) { } } - if (scope > JS::StructuredCloneScope::SameProcess && - (policy.areIntraClusterClonableSharedObjectsAllowed() || - policy.areSharedMemoryObjectsAllowed())) { - JS_ReportErrorASCII( - cx, "deserialize in DifferentProcess scope cannot allow shared memory"); - return false; - } - // Clone buffer was already consumed? if (!obj->data()) { JS_ReportErrorASCII(cx, diff --git a/icecat/js/src/builtin/temporal/Instant.cpp b/icecat/js/src/builtin/temporal/Instant.cpp index 4052e208ec..ae4064d1bf 100644 --- a/icecat/js/src/builtin/temporal/Instant.cpp +++ b/icecat/js/src/builtin/temporal/Instant.cpp @@ -235,10 +235,10 @@ static BigInt* CreateBigInt(JSContext* cx, if (!result) { return nullptr; } - if (length > 1) { + if (y) { result->setDigit(1, y); } - if (length > 0) { + if (x) { result->setDigit(0, x); } return result; diff --git a/icecat/js/src/debugger/DebugScript.cpp b/icecat/js/src/debugger/DebugScript.cpp index a175ed647e..1db8d9deff 100644 --- a/icecat/js/src/debugger/DebugScript.cpp +++ b/icecat/js/src/debugger/DebugScript.cpp @@ -99,7 +99,6 @@ void DebugScriptObject::finalize(JS::GCContext* gcx, JSObject* obj) { /* static */ DebugScript* DebugScript::get(JSScript* script) { - MOZ_ASSERT(!IsAboutToBeFinalizedUnbarriered(script)); MOZ_ASSERT(script->hasDebugScript()); DebugScriptMap* map = script->zone()->debugScriptMap; MOZ_ASSERT(map); @@ -206,12 +205,7 @@ JSBreakpointSite* DebugScript::getOrCreateBreakpointSite(JSContext* cx, /* static */ void DebugScript::destroyBreakpointSite(JS::GCContext* gcx, JSScript* script, jsbytecode* pc) { - if (IsAboutToBeFinalizedUnbarriered(script)) { - return; - } - DebugScript* debug = get(script); - JSBreakpointSite*& site = debug->breakpoints[script->pcToOffset(pc)]; MOZ_ASSERT(site); MOZ_ASSERT(site->isEmpty()); @@ -289,10 +283,6 @@ bool DebugScript::incrementStepperCount(JSContext* cx, HandleScript script) { /* static */ void DebugScript::decrementStepperCount(JS::GCContext* gcx, JSScript* script) { - if (IsAboutToBeFinalizedUnbarriered(script)) { - return; - } - DebugScript* debug = get(script); MOZ_ASSERT(debug); MOZ_ASSERT(debug->stepperCount > 0); @@ -338,10 +328,6 @@ bool DebugScript::incrementGeneratorObserverCount(JSContext* cx, /* static */ void DebugScript::decrementGeneratorObserverCount(JS::GCContext* gcx, JSScript* script) { - if (IsAboutToBeFinalizedUnbarriered(script)) { - return; - } - DebugScript* debug = get(script); MOZ_ASSERT(debug); MOZ_ASSERT(debug->generatorObserverCount > 0); @@ -407,10 +393,6 @@ void DebugAPI::checkDebugScriptAfterMovingGC(DebugScript* ds) { /* static */ bool DebugAPI::stepModeEnabledSlow(JSScript* script) { - if (IsAboutToBeFinalizedUnbarriered(script)) { - return false; - } - return DebugScript::get(script)->stepperCount > 0; } diff --git a/icecat/js/src/debugger/Debugger.cpp b/icecat/js/src/debugger/Debugger.cpp index 1b05ce4fe7..2ff6743d73 100644 --- a/icecat/js/src/debugger/Debugger.cpp +++ b/icecat/js/src/debugger/Debugger.cpp @@ -453,10 +453,7 @@ Breakpoint::Breakpoint(Debugger* debugger, HandleObject wrappedDebugger, } void Breakpoint::trace(JSTracer* trc) { - MOZ_ASSERT_IF(trc->kind() != JS::TracerKind::Moving, - !IsDeadProxyObject(wrappedDebugger)); TraceEdge(trc, &wrappedDebugger, "breakpoint owner"); - TraceEdge(trc, &handler, "breakpoint handler"); } @@ -1152,9 +1149,6 @@ bool DebugAPI::slowPathOnLeaveFrame(JSContext* cx, AbstractFramePtr frame, if (success && completion.get().suspending()) { Debugger::suspendGeneratorDebuggerFrames(cx, frame); } else { - if (frame.isWasmDebugFrame()) { - DebugEnvironments::onPopWasm(cx, frame); - } Debugger::terminateDebuggerFrames(cx, frame); } }); @@ -2028,27 +2022,26 @@ Completion Completion::fromJSFramePop(JSContext* cx, AbstractFramePtr frame, // // GetGeneratorObjectForFrame can return nullptr even when a generator // object does exist, if the frame is paused between the Generator and - // SetAliasedVar opcodes. + // SetAliasedVar opcodes. But by checking the opcode first we eliminate that + // possibility, so it's fine to call genObj->isClosed(). Rooted generatorObj( cx, GetGeneratorObjectForFrame(cx, frame)); + switch (JSOp(*pc)) { + case JSOp::InitialYield: + MOZ_ASSERT(!generatorObj->isClosed()); + return Completion(InitialYield(generatorObj)); - if (generatorObj && !generatorObj->isClosed()) { - switch (JSOp(*pc)) { - case JSOp::InitialYield: - return Completion(InitialYield(generatorObj)); + case JSOp::Yield: + MOZ_ASSERT(!generatorObj->isClosed()); + return Completion(Yield(generatorObj, frame.returnValue())); - case JSOp::Yield: - return Completion(Yield(generatorObj, frame.returnValue())); + case JSOp::Await: + MOZ_ASSERT(!generatorObj->isClosed()); + return Completion(Await(generatorObj, frame.returnValue())); - case JSOp::Await: - return Completion(Await(generatorObj, frame.returnValue())); - - default: - break; - } + default: + return Completion(Return(frame.returnValue())); } - - return Completion(Return(frame.returnValue())); } void Completion::trace(JSTracer* trc) { diff --git a/icecat/js/src/gc/BufferAllocator.cpp b/icecat/js/src/gc/BufferAllocator.cpp index f8118d167c..ce016a8c3a 100644 --- a/icecat/js/src/gc/BufferAllocator.cpp +++ b/icecat/js/src/gc/BufferAllocator.cpp @@ -1210,13 +1210,6 @@ void BufferAllocator::abortMajorSweeping(const AutoLock& lock) { clearAllocatedDuringCollectionState(lock); - if (minorState == State::Sweeping) { - // If we are minor sweeping then chunks with allocatedDuringCollection set - // may be present in |mixedChunksToSweep|. Set a flag so these are cleared - // when they are merged later. - majorFinishedWhileMinorSweeping = true; - } - for (BufferChunk* chunk : mediumTenuredChunksToSweep.ref()) { chunk->markBits.ref().clear(); } diff --git a/icecat/js/src/gc/FinalizationObservers.cpp b/icecat/js/src/gc/FinalizationObservers.cpp index 2c303ccd5b..0b1a727d4f 100644 --- a/icecat/js/src/gc/FinalizationObservers.cpp +++ b/icecat/js/src/gc/FinalizationObservers.cpp @@ -15,7 +15,6 @@ #include "builtin/FinalizationRegistryObject.h" #include "builtin/WeakRefObject.h" #include "gc/GCRuntime.h" -#include "gc/PublicIterators.h" #include "gc/Zone.h" #include "vm/JSContext.h" @@ -518,34 +517,3 @@ void FinalizationRegistryGlobalData::removeRecord( void FinalizationRegistryGlobalData::trace(JSTracer* trc) { recordSet.trace(trc); } - -JS_PUBLIC_API void JS::MaybeClearWeakRefTargets( - JSRuntime* runtime, JS::ShouldClearWeakRefTargetCallback callback, - void* data) { - MOZ_ASSERT(CurrentThreadCanAccessRuntime(runtime)); - AssertHeapIsIdle(); - runtime->gc.maybeClearWeakRefTargets(callback, data); -} - -void GCRuntime::maybeClearWeakRefTargets( - JS::ShouldClearWeakRefTargetCallback callback, void* data) { - for (AllZonesIter zone(this); !zone.done(); zone.next()) { - FinalizationObservers* observers = zone->finalizationObservers(); - if (observers) { - observers->maybeClearWeakRefTargets(callback, data); - } - } -} - -void FinalizationObservers::maybeClearWeakRefTargets( - JS::ShouldClearWeakRefTargetCallback callback, void* data) { - for (auto iter = weakRefMap.modIter(); !iter.done(); iter.next()) { - JSObject* target = iter.get().key(); - if (callback(JS::GCCellPtr(target), data)) { - for (JSObject* obj : iter.get().value()) { - updateForRemovedWeakRef(obj, UnwrapWeakRef(obj)); - } - iter.remove(); - } - } -} diff --git a/icecat/js/src/gc/FinalizationObservers.h b/icecat/js/src/gc/FinalizationObservers.h index 240c3a1b0c..eee8ef14e0 100644 --- a/icecat/js/src/gc/FinalizationObservers.h +++ b/icecat/js/src/gc/FinalizationObservers.h @@ -10,7 +10,6 @@ #include "gc/Barrier.h" #include "gc/WeakMap.h" #include "gc/ZoneAllocator.h" -#include "js/friend/CycleCollector.h" #include "js/GCHashTable.h" #include "js/GCVector.h" @@ -82,8 +81,6 @@ class FinalizationObservers { bool addWeakRefTarget(Handle target, Handle weakRef); void removeWeakRefTarget(Handle target, Handle weakRef); - void maybeClearWeakRefTargets(JS::ShouldClearWeakRefTargetCallback callback, - void* data); void unregisterWeakRefWrapper(JSObject* wrapper, WeakRefObject* weakRef); diff --git a/icecat/js/src/gc/GC.cpp b/icecat/js/src/gc/GC.cpp index 50e91848df..bce7229ad6 100644 --- a/icecat/js/src/gc/GC.cpp +++ b/icecat/js/src/gc/GC.cpp @@ -2194,11 +2194,8 @@ void GCRuntime::decommitEmptyChunks(const bool& cancel, AutoLockGC& lock) { break; } - // Check whether something used the chunk while the lock was released. The - // chunk may have been taken from the empty chunks pool (e.g. adopted as - // the current chunk, or repurposed as a nursery/buffer chunk), so we must - // verify it is still a member of the pool before removing it. - if (!emptyChunks(lock).contains(chunk) || !CanDecommitWholeChunk(chunk)) { + // Check whether something used the chunk while lock was released. + if (!CanDecommitWholeChunk(chunk)) { continue; } diff --git a/icecat/js/src/gc/GCRuntime.h b/icecat/js/src/gc/GCRuntime.h index b970b35f44..652b0332c0 100644 --- a/icecat/js/src/gc/GCRuntime.h +++ b/icecat/js/src/gc/GCRuntime.h @@ -24,7 +24,6 @@ #include "gc/Scheduling.h" #include "gc/Statistics.h" #include "gc/StoreBuffer.h" -#include "js/friend/CycleCollector.h" #include "js/friend/PerformanceHint.h" #include "js/GCAnnotations.h" #include "js/UniquePtr.h" @@ -109,15 +108,13 @@ class ChunkPool { void sort(); - // Linear time, use with caution. - bool contains(ArenaChunk* chunk) const; - private: ArenaChunk* mergeSort(ArenaChunk* list, size_t count); bool isSorted() const; #ifdef DEBUG public: + bool contains(ArenaChunk* chunk) const; bool verify() const; void verifyChunks() const; #endif @@ -689,9 +686,6 @@ class GCRuntime { bool registerWeakRef(HandleObject target, HandleObject weakRef); void traceKeptObjects(JSTracer* trc); - void maybeClearWeakRefTargets(JS::ShouldClearWeakRefTargetCallback callback, - void* data); - JS::GCReason lastStartReason() const { return initialReason; } void updateAllocationRates(); diff --git a/icecat/js/src/gc/Heap.cpp b/icecat/js/src/gc/Heap.cpp index 0cfffd255f..9e17c06336 100644 --- a/icecat/js/src/gc/Heap.cpp +++ b/icecat/js/src/gc/Heap.cpp @@ -696,11 +696,10 @@ bool ChunkPool::isSorted() const { return true; } -bool ChunkPool::contains(ArenaChunk* chunk) const { #ifdef DEBUG - verify(); -#endif +bool ChunkPool::contains(ArenaChunk* chunk) const { + verify(); for (ArenaChunk* cursor = head_; cursor; cursor = cursor->info.next) { if (cursor == chunk) { return true; @@ -709,8 +708,6 @@ bool ChunkPool::contains(ArenaChunk* chunk) const { return false; } -#ifdef DEBUG - bool ChunkPool::verify() const { MOZ_ASSERT(bool(head_) == bool(count_)); uint32_t count = 0; diff --git a/icecat/js/src/gc/Memory.cpp b/icecat/js/src/gc/Memory.cpp index 7d02eb7f33..5540362f3b 100644 --- a/icecat/js/src/gc/Memory.cpp +++ b/icecat/js/src/gc/Memory.cpp @@ -894,10 +894,7 @@ bool MarkPagesUnusedSoft(void* region, size_t length) { int status; do { # if defined(XP_DARWIN) - // Note: we use MADV_FREE instead of MADV_FREE_REUSABLE + MADV_FREE_REUSE to - // work around a kernel bug on macOS Tahoe. We should change this back once - // that bug is fixed. See bug 2015359. - status = madvise(region, length, MADV_FREE); + status = madvise(region, length, MADV_FREE_REUSABLE); # elif defined(XP_SOLARIS) status = posix_madvise(region, length, POSIX_MADV_DONTNEED); # else @@ -928,6 +925,11 @@ void MarkPagesInUseSoft(void* region, size_t length) { MOZ_ASSERT(DecommitEnabled()); CheckDecommit(region, length); +#if defined(XP_DARWIN) + while (madvise(region, length, MADV_FREE_REUSE) == -1 && errno == EAGAIN) { + } +#endif + MOZ_MAKE_MEM_UNDEFINED(region, length); } diff --git a/icecat/js/src/gc/Verifier.cpp b/icecat/js/src/gc/Verifier.cpp index eb8fc5a1aa..e66d774067 100644 --- a/icecat/js/src/gc/Verifier.cpp +++ b/icecat/js/src/gc/Verifier.cpp @@ -1215,14 +1215,10 @@ void GCRuntime::checkHeapBeforeMinorGC(AutoHeapSession& session) { // to tenured strings but contain nursery data. for (ZonesIter zone(rt, SkipAtoms); !zone.done(); zone.next()) { - if (zone->isGCFinished()) { - continue; // Don't access zones that are being swept off thread. - } - for (ArenaIter aiter(zone, gc::AllocKind::STRING); !aiter.done(); aiter.next()) { for (ArenaCellIterUnderGC cell(aiter.get()); !cell.done(); cell.next()) { - if (cell->as()->isDependent()) { + if (cell->is() && cell->as()->isDependent()) { JSDependentString* str = &cell->as()->asDependent(); if (str->isTenured() && str->base()->isTenured()) { MOZ_RELEASE_ASSERT(!str->hasCharsInCollectedNurseryRegion()); diff --git a/icecat/js/src/jit-test/tests/arguments/bug2029316.js b/icecat/js/src/jit-test/tests/arguments/bug2029316.js deleted file mode 100644 index c0926aca9f..0000000000 --- a/icecat/js/src/jit-test/tests/arguments/bug2029316.js +++ /dev/null @@ -1,17 +0,0 @@ -function makeArgs() { - "use strict"; - return arguments; -} -function test() { - for (var alloc = 1; alloc < 50; alloc++) { - var args = makeArgs(1, 2, 3); - oomAtAllocation(alloc); - try { - delete args[0]; - } catch (e) {} - resetOOMFailure(); - args[0] = "x"; - assertEq(args[0], "x"); - } -} -test(); diff --git a/icecat/js/src/jit-test/tests/arguments/bug2029317.js b/icecat/js/src/jit-test/tests/arguments/bug2029317.js deleted file mode 100644 index 8e150d437d..0000000000 --- a/icecat/js/src/jit-test/tests/arguments/bug2029317.js +++ /dev/null @@ -1,25 +0,0 @@ -function test() { - var f = function() { return arguments; }; - var template = new Array(9000).fill(0); - - var a = f.apply(null, template); - Object.defineProperty(a, 0, {value: "v1", writable: false, configurable: true}); - - for (var alloc = 4; alloc < 15; alloc++) { - var args = null; - var ok = false; - oomAtAllocation(alloc); - try { - args = f.apply(null, template); - ok = true; - Object.defineProperty(args, 0, {value: "v1", writable: false, configurable: true}); - } catch (e) {} - resetOOMFailure(); - - if (ok) { - Object.defineProperty(args, 0, {value: "v2"}); - assertEq(args[0], "v2"); - } - } -} -test(); diff --git a/icecat/js/src/jit-test/tests/debug/Debugger-clearAllBreakpoints-finalized.js b/icecat/js/src/jit-test/tests/debug/Debugger-clearAllBreakpoints-finalized.js deleted file mode 100644 index bd092e95ea..0000000000 --- a/icecat/js/src/jit-test/tests/debug/Debugger-clearAllBreakpoints-finalized.js +++ /dev/null @@ -1,17 +0,0 @@ -gczeal(23); - -String + ""; - -var g = newGlobal({ newCompartment: true }); -var dbg = Debugger(g); -dbg.onNewScript = function (script) { - script.setBreakpoint(0, () => {}); -}; -g.eval(""); - -// Trigger GC, which will mark the eval script about to be finalized, -// and the DebugScriptMap entry will be removed. -Uint8Array; - -// This shouldn't try to use the DebugScriptMap entry. -dbg.clearAllBreakpoints(); diff --git a/icecat/js/src/jit-test/tests/debug/Frame-onStep-generator-resumption-04.js b/icecat/js/src/jit-test/tests/debug/Frame-onStep-generator-resumption-04.js deleted file mode 100644 index 79ddb611f0..0000000000 --- a/icecat/js/src/jit-test/tests/debug/Frame-onStep-generator-resumption-04.js +++ /dev/null @@ -1,31 +0,0 @@ -// Don't crash on {return:} from onStep in a generator at a Yield. - -// This test force-returns from each bytecode instruction in a generator. - -let g = newGlobal({ newCompartment: true }); -g.eval(` -function* gen() { - yield 1; -} -`) - -let dbg = new Debugger(g); - -let targetSteps = 0; -let found = true; -dbg.onEnterFrame = (frame) => { - let steps = 0; - frame.onStep = () => { - if (steps++ == targetSteps) { - found = true; - return { return: 0xdead }; - } - } -} -dbg.uncaughtExceptionHook = () => undefined - -while (found) { - found = false; - targetSteps++; - for (var y of g.gen()) {} -} diff --git a/icecat/js/src/jit-test/tests/debug/bug-1995637.js b/icecat/js/src/jit-test/tests/debug/bug-1995637.js deleted file mode 100644 index f5719c2e41..0000000000 --- a/icecat/js/src/jit-test/tests/debug/bug-1995637.js +++ /dev/null @@ -1,66 +0,0 @@ -// |jit-test| error: TypeError -gczeal(9,16); -function F1() { - if (!new.target) { throw 'must be called with new'; } - this.b = null; -} -new F1(); -new F1(); -function f5() {} -new BigUint64Array(3474); -function f14() {} -function f25(a26, a27) { - for (let i30 = 0, i31 = true; i31; i31--) { - function f37() { - function F38() {} - for (let i44 = 0, i45 = SharedArrayBuffer; i45; - (() => { - i45--; - Int8Array.principal = BigUint64Array; - function F50() {} - Int8Array.sameZoneAs = /wp(?:a?)+/imu; - const v54 = this.newGlobal(Int8Array); - const t7 = ({ __proto__: v54 }).Debugger; - const v57 = t7(F50); - const v59 = v57.getNewestFrame(i30, i45, i45, f25, v57).older; - v59.script.setBreakpoint(16, v59); - })()) {} - for (let [i134, i135] = (() => { - for (let i84 = 0, i85 = 10; i85; - (() => { - i85--; - for (let [i102, i103] = (() => { - for (let [i95, i96] = (() => { - new Uint8Array(); - return [0, 10]; - })(); i96; i96--) { - } - return [0, SharedArrayBuffer]; - })(); - i103; i103--) {} - for (let i113 = -4, i114 = 10; i114; i114--) {} - for (let i122 = 4, i123 = 10; i123--, i123; i123--) { - i123++; - } - })()) {} - return [0, SharedArrayBuffer]; - })(); - i135; i135--) { } - for (let i143 = 0, i144 = 10; i144; i144--) {} - } - f37.apply(); - } - for (let i153 = 0, i154 = 10; i154; i154--) {} - function F160(a162, a163) { - if (!new.target) { throw 'must be called with new'; } - this.c = a27; - this.h = a162; - } - new F160(234, a27); - const v167 = this.nukeAllCCWs(); - for (let i170 = 0, i171 = 10; i171; i171--) {} - try { - f25(); - } catch(e178) {} -} -f25(f25, f25); diff --git a/icecat/js/src/jit-test/tests/debug/bug-1999464.js b/icecat/js/src/jit-test/tests/debug/bug-1999464.js deleted file mode 100644 index 25a89a2dbc..0000000000 --- a/icecat/js/src/jit-test/tests/debug/bug-1999464.js +++ /dev/null @@ -1,6 +0,0 @@ -fullcompartmentchecks(1); -var x = newGlobal({ newCompartment: true }); -Debugger(x).onEnterFrame = function (y) { - y.script.setBreakpoint(0, {}); -}; -x.eval("(function(){})()"); diff --git a/icecat/js/src/jit-test/tests/debug/bug-2002646.js b/icecat/js/src/jit-test/tests/debug/bug-2002646.js deleted file mode 100644 index 008920caa4..0000000000 --- a/icecat/js/src/jit-test/tests/debug/bug-2002646.js +++ /dev/null @@ -1,8 +0,0 @@ -var x = newGlobal({ newCompartment: true }); -Debugger(x).onDebuggerStatement = function (y) { - y.script.setBreakpoint(y.script.getLineOffsets(1)[0], { - hit: function () {}, - }); -}; -x.eval("function* g() { debugger; return; };g().next()"); -relazifyFunctions(); diff --git a/icecat/js/src/jit-test/tests/debug/bug-2003588.js b/icecat/js/src/jit-test/tests/debug/bug-2003588.js deleted file mode 100644 index 98ecaaeea8..0000000000 --- a/icecat/js/src/jit-test/tests/debug/bug-2003588.js +++ /dev/null @@ -1,9 +0,0 @@ -var x = newGlobal({ newCompartment: true }); -var y = Debugger(x); -y.x = y; -y.onDebuggerStatement = function(w) { - nukeAllCCWs(); - w.environment.getVariable("x"); -} -x.eval('function f(z) { with(z) { debugger } }'); -x.f(y); diff --git a/icecat/js/src/jit-test/tests/debug/bug-2003809.js b/icecat/js/src/jit-test/tests/debug/bug-2003809.js deleted file mode 100644 index 4cb93564bc..0000000000 --- a/icecat/js/src/jit-test/tests/debug/bug-2003809.js +++ /dev/null @@ -1,8 +0,0 @@ -var x = newGlobal({ newCompartment: true }); -Debugger(x).onNewScript = function f(z) { m = z }; -x.eval("function g(){}"); -m.setBreakpoint(0, {}); -nukeAllCCWs(); -recomputeWrappers(); -gc(); - diff --git a/icecat/js/src/jit-test/tests/gc/bug-2003100.js b/icecat/js/src/jit-test/tests/gc/bug-2003100.js deleted file mode 100644 index 5b9919116e..0000000000 --- a/icecat/js/src/jit-test/tests/gc/bug-2003100.js +++ /dev/null @@ -1,9 +0,0 @@ -var dbgA = new Debugger; -var g1 = newGlobal({newCompartment: true}); -g1.eval('function g1f() { print("Weltuntergang"); }'); -var DOAg1 = dbgA.addDebuggee(g1); -var DOAg1f = DOAg1.getOwnPropertyDescriptor('g1f').value; -DOAg1f.script.setBreakpoint(0, { hit: () => { logA += '1'; } }); -gczeal(2,1) -class Base { } -recomputeWrappers(); diff --git a/icecat/js/src/jit-test/tests/modules/bug-2027274.js b/icecat/js/src/jit-test/tests/modules/bug-2027274.js deleted file mode 100644 index 05f16a93f7..0000000000 --- a/icecat/js/src/jit-test/tests/modules/bug-2027274.js +++ /dev/null @@ -1,14 +0,0 @@ -// |jit-test| slow; error: InternalError: too much recursion -var leaf = parseModule("await 0; throw 1;", "l.js"); -registerModule("l", leaf); -moduleLink(leaf); -moduleEvaluate(leaf); -var p = "l"; -for (var i = 0; i < 50000; i++) { - var m = parseModule("import '" + p + "'; if(0) await 0;", "m" + i + ".js"); - registerModule("m" + i, m); - moduleLink(m); - moduleEvaluate(m); - p = "m" + i; -} -drainJobQueue(); diff --git a/icecat/js/src/jit-test/tests/structured-clone/allobjs.js b/icecat/js/src/jit-test/tests/structured-clone/allobjs.js deleted file mode 100644 index 7aa47bb228..0000000000 --- a/icecat/js/src/jit-test/tests/structured-clone/allobjs.js +++ /dev/null @@ -1,34 +0,0 @@ -var bytes = new BigUint64Array([ - 0xfff1000000000002n, // SCTAG_HEADER (version=2) - 0xffff002200000000n, // SCTAG_ERROR_OBJECT - 0xffff000480000001n, // .message = SCTAG_STRING (length=1, Latin-1) - 0x0000000000000078n, // string data: "x" - 0xffff000700000000n, // .hasCause = SCTAG_ARRAY_OBJECT (length=0) <-- INVALID!!! - 0xffff000480000002n, // .filename = SCTAG_STRING (length=2, Latin-1) - 0x000000000000652dn, // string data: "e-" - 0xffff000300000002n, // .lineNumber = SCTAG_INT32 (value=2) - 0xffff000300000011n, // .column = SCTAG_INT32 (value=17) - 0xffff000000000000n, // .cause = SCTAG_NULL - 0xffff000000000000n, // .errors = SCTAG_NULL - 0xffff0016ffff0018n, // .stack = SCTAG_SAVED_FRAME_OBJECT | SCTAG_NULL_JSPRINCIPALS - 0xffff000200000000n, // .mutedErrors = SCTAG_BOOLEAN (value=0) - 0xffff000480000002n, // .source = SCTAG_STRING (length=2, Latin-1) - 0x000000000000652dn, // string data: "e-" - 0xffff000300000002n, // .lineNumber = SCTAG_INT32 (value=2) - 0xffff000300000011n, // .columnNumber SCTAG_INT32 (value=17) - 0xffff000000000000n, // .functionDisplayName = SCTAG_NULL - 0xffff000000000000n, // .asyncCause = SCTAG_NULL - 0xffff000000000000n, // .parent = SCTAG_NULL - 0xffff001300000000n, // SCTAG_END_OF_KEYS - 0xffff001300000000n, // SCTAG_END_OF_KEYS -]); -var buf = serialize(null, undefined, {scope: 'DifferentProcess'}); -buf.arraybuffer = bytes.buffer; - -var e; -try { - deserialize(buf); -} catch (err) { - e = err; -} -assertEq(e.message.includes("hasCause must be a boolean"), true); diff --git a/icecat/js/src/jit-test/tests/structured-clone/sab-errMsg.js b/icecat/js/src/jit-test/tests/structured-clone/sab-errMsg.js index f7de75001d..ea8c7de0fd 100644 --- a/icecat/js/src/jit-test/tests/structured-clone/sab-errMsg.js +++ b/icecat/js/src/jit-test/tests/structured-clone/sab-errMsg.js @@ -24,47 +24,3 @@ assertEq(ex.toString(), `TypeError: The SharedArrayBuffer object cannot be serialized. The ` + `Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy HTTP ` + `headers can be used to enable this.`); - -try { - const s = serialize([sab], undefined, { scope: "DifferentProcess", SharedArrayBuffer: "allow" }); - deserialize(s, { scope: "DifferentProcess" }); - assertEq("threw exception?", true); -} catch (e) { - ex = e; -} -assertEq(ex.toString().includes("Policy object must forbid cloning shared memory objects cross-process"), true); - -// Can't deserialize a SameProcess buffer when only allowing DifferentProcess scope. -try { - const s = serialize([sab], undefined, { SharedArrayBuffer: "allow" }); - deserialize(s, { scope: "DifferentProcess" }); - assertEq("threw exception?", true); -} catch (e) { - ex = e; -} -assertEq(ex.toString().includes("incompatible structured clone scope"), true); - -// If a buffer is tampered with, it can only be deserialized as DifferentProcess. -try { - const s = serialize([sab], undefined, { SharedArrayBuffer: "allow" }); - const s2 = serialize([sab], undefined, { SharedArrayBuffer: "allow" }); - const ta = new Uint32Array(s.arraybuffer); - ta[2] = 2; // DifferentProcess - // synthetic buffer! Forces scope to DifferentProcess despite what we say below. - s2.clonebuffer = ta.buffer; - const result = deserialize(s2, { SharedArrayBuffer: "allow", scope: "SameProcess" }); - assertEq("threw exception?", true); -} catch (e) { - ex = e; -} -assertEq(ex.toString().includes("Cannot use less restrictive scope"), true); - -// You can't deserialize with both scope=DifferentProcess and allowing shared memory. -try { - const s = serialize([sab], undefined, { SharedArrayBuffer: "allow" }); - const result = deserialize(s, { SharedArrayBuffer: "allow", scope: "DifferentProcess" }); - assertEq("threw exception?", true); -} catch (e) { - ex = e; - } -assertEq(ex.toString().includes("deserialize in DifferentProcess scope cannot allow shared memory"), true); diff --git a/icecat/js/src/jit-test/tests/wasm/bug2020378.js b/icecat/js/src/jit-test/tests/wasm/bug2020378.js deleted file mode 100644 index 5beb3d00b8..0000000000 --- a/icecat/js/src/jit-test/tests/wasm/bug2020378.js +++ /dev/null @@ -1,177 +0,0 @@ -// |jit-test| skip-if: !wasmThreadsEnabled() - -const m = new WebAssembly.Module(wasmTextToBinary(` -(module - (memory $m32 1 1) - (memory $m64 i64 1 1) - (memory $m32s 1 1 shared) - (memory $m64s i64 1 1 shared) - - ${["", "s"].map(s => ` - (func (export "wait3232${s}") (param i32) (result i32) - (memory.atomic.wait32 $m32${s} - (local.get 0) - (i32.const 0) - (i64.const 0) - ) - ) - (func (export "wait3264${s}") (param i32) (result i32) - (memory.atomic.wait64 $m32${s} - (local.get 0) - (i64.const 0) - (i64.const 0) - ) - ) - (func (export "wait6432${s}") (param i64) (result i32) - (memory.atomic.wait32 $m64${s} - (local.get 0) - (i32.const 0) - (i64.const 0) - ) - ) - (func (export "wait6464${s}") (param i64) (result i32) - (memory.atomic.wait64 $m64${s} - (local.get 0) - (i64.const 0) - (i64.const 0) - ) - ) - (func (export "notify32${s}") (param i32) (result i32) - (memory.atomic.notify $m32${s} - (local.get 0) - (i32.const 0) - ) - ) - (func (export "notify64${s}") (param i64) (result i32) - (memory.atomic.notify $m64${s} - (local.get 0) - (i32.const 0) - ) - ) - `).join("\n")} -)`)); -const { - wait3232, wait3264, - wait6432, wait6464, - notify32, notify64, - - wait3232s, wait3264s, - wait6432s, wait6464s, - notify32s, notify64s, -} = new WebAssembly.Instance(m).exports; - -// -// Shared memories -// - -assertEq(wait3232s(0), 2); -assertEq(wait3232s(65532), 2); -assertErrorMessage(() => wait3232s(65533), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3232s(65536), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait3232s(-8), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait3232s(-4), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait3232s(-3), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3232s(-2), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3232s(-1), WebAssembly.RuntimeError, /unaligned/); - -assertEq(wait3264s(0), 2); -assertEq(wait3264s(65528), 2); -assertErrorMessage(() => wait3264s(65529), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264s(65536), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait3264s(-16), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait3264s(-8), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait3264s(-7), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264s(-6), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264s(-5), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264s(-4), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264s(-3), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264s(-2), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264s(-1), WebAssembly.RuntimeError, /unaligned/); - -assertEq(wait6432s(0n), 2); -assertEq(wait6432s(65532n), 2); -assertErrorMessage(() => wait6432s(65533n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6432s(65536n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**32n-8n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**32n-4n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**32n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**33n-8n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**33n-4n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**33n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(-8n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(-4n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(-3n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6432s(-2n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6432s(-1n), WebAssembly.RuntimeError, /unaligned/); - -assertEq(wait6464s(0n), 2); -assertEq(wait6464s(65528n), 2); -assertErrorMessage(() => wait6464s(65529n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464s(65536n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**32n-16n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**32n-8n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**32n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**33n-16n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**33n-8n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6432s(2n**33n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6464s(-16n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6464s(-8n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => wait6464s(-7n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464s(-6n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464s(-5n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464s(-4n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464s(-3n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464s(-2n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464s(-1n), WebAssembly.RuntimeError, /unaligned/); - -assertEq(notify32s(65532), 0); -assertErrorMessage(() => notify32s(65533), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify32s(65536), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify32s(-8), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify32s(-4), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify32s(-3), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify32s(-2), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify32s(-1), WebAssembly.RuntimeError, /unaligned/); - -assertEq(notify64s(65532n), 0); -assertErrorMessage(() => notify64s(65533n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify64s(65536n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify64s(-8n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify64s(-4n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify64s(-3n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify64s(-2n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify64s(-1n), WebAssembly.RuntimeError, /unaligned/); - -// -// Non-shared memories -// - -assertErrorMessage(() => wait3232(65532), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait3232(65533), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3232(65536), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait3232(-4), WebAssembly.RuntimeError, /non-shared/); - -assertErrorMessage(() => wait3264(65528), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait3264(65529), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait3264(65536), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait3264(-8), WebAssembly.RuntimeError, /non-shared/); - -assertErrorMessage(() => wait6432(65532n), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait6432(65533n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6432(65536n), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait6432(-4n), WebAssembly.RuntimeError, /non-shared/); - -assertErrorMessage(() => wait6464(65528n), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait6464(65529n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => wait6464(65536n), WebAssembly.RuntimeError, /non-shared/); -assertErrorMessage(() => wait6464(-8n), WebAssembly.RuntimeError, /non-shared/); - -assertEq(notify32(65532), 0); -assertErrorMessage(() => notify32(65533), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify32(65536), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify32(-4), WebAssembly.RuntimeError, /index out of bounds/); - -assertEq(notify64(65532n), 0); -assertErrorMessage(() => notify64(65533n), WebAssembly.RuntimeError, /unaligned/); -assertErrorMessage(() => notify64(65536n), WebAssembly.RuntimeError, /index out of bounds/); -assertErrorMessage(() => notify64(-4n), WebAssembly.RuntimeError, /index out of bounds/); diff --git a/icecat/js/src/jit-test/tests/wasm/gc/i31ref.js b/icecat/js/src/jit-test/tests/wasm/gc/i31ref.js index a03f4f6bd8..998eb03cfd 100644 --- a/icecat/js/src/jit-test/tests/wasm/gc/i31ref.js +++ b/icecat/js/src/jit-test/tests/wasm/gc/i31ref.js @@ -178,26 +178,3 @@ const { i31GetU_null, i31GetS_null } = wasmEvalText(`(module assertErrorMessage(() => i31GetU_null(), WebAssembly.RuntimeError, /dereferencing null pointer/); assertErrorMessage(() => i31GetS_null(), WebAssembly.RuntimeError, /dereferencing null pointer/); - -// Test i31.get_s and i31.get_u operations with some cornercases. -let { f } = new WebAssembly.Instance( - new WebAssembly.Module(wasmTextToBinary(` -(module - (func (export "f") (param i32) (result i32) - (local i31ref) - local.get 0 - ref.i31 - local.tee 1 - i31.get_s - local.get 1 - i31.get_u - i32.eq - ) -)`))).exports; - -assertEq(f(-1), 0); -assertEq(f(-2), 0); -assertEq(f(-0x40000000), 0); -assertEq(f(0), 1); -assertEq(f(1), 1); -assertEq(f(0x3FFFFFFF), 1); diff --git a/icecat/js/src/jit-test/tests/wasm/memory-cloning.js b/icecat/js/src/jit-test/tests/wasm/memory-cloning.js index effb116eda..42540a772f 100644 --- a/icecat/js/src/jit-test/tests/wasm/memory-cloning.js +++ b/icecat/js/src/jit-test/tests/wasm/memory-cloning.js @@ -42,7 +42,7 @@ for ( let memtype of memtypes ) { // Serialization and deserialization of shared memories work: - let mem2 = deserialize(serialize(mem1, [], {SharedArrayBuffer: 'allow'}), {SharedArrayBuffer: 'allow', scope: 'SameProcess'}); + let mem2 = deserialize(serialize(mem1, [], {SharedArrayBuffer: 'allow'}), {SharedArrayBuffer: 'allow'}); assertEq(mem2 instanceof WebAssembly.Memory, true); let buf2 = mem2.buffer; assertEq(buf2 instanceof SharedArrayBuffer, true); @@ -102,6 +102,6 @@ for ( let memtype of memtypes ) { let buf = mem.buffer; let clonedbuf = serialize(buf, [], {SharedArrayBuffer: 'allow'}); mem.grow(Idx(memtype, 1)); - let buf2 = deserialize(clonedbuf, {SharedArrayBuffer: 'allow', scope: 'SameProcess'}); + let buf2 = deserialize(clonedbuf, {SharedArrayBuffer: 'allow'}); assertEq(buf.byteLength, buf2.byteLength); } diff --git a/icecat/js/src/jit-test/tests/wasm/regress/bug2029735.js b/icecat/js/src/jit-test/tests/wasm/regress/bug2029735.js deleted file mode 100644 index 91d0b9c11a..0000000000 --- a/icecat/js/src/jit-test/tests/wasm/regress/bug2029735.js +++ /dev/null @@ -1,11 +0,0 @@ -var dummy = {abc: 1}; -// Non-Latin1 UTF-8 function name that hash-collides with the Latin1 "abc" atom. -// The unreachable trap exercises UTF8EqualsChars when building the error message. -var bytes = wasmTextToBinary('(module (func $"\\ee\\96\\95\\ea\\b5\\81\\04" (export "f") unreachable))'); -var ex = null; -try { - new WebAssembly.Instance(new WebAssembly.Module(bytes)).exports.f(); -} catch (e) { - ex = e; -} -assertEq(ex.stack.includes("\uE595\uAD41\x04@"), true); diff --git a/icecat/js/src/jit/BaselineCacheIRCompiler.cpp b/icecat/js/src/jit/BaselineCacheIRCompiler.cpp index b390c4b616..b06c02f9fa 100644 --- a/icecat/js/src/jit/BaselineCacheIRCompiler.cpp +++ b/icecat/js/src/jit/BaselineCacheIRCompiler.cpp @@ -2980,23 +2980,14 @@ void BaselineCacheIRCompiler::pushArguments(Register argcReg, Register scratch, Register scratch2, CallFlags flags, uint32_t argcFixed, bool isJitCall) { - bool isConstructing = flags.isConstructing(); - - // Push the formal arguments, and possibly `this` and/or `callee`. - // There are three cases: - // 1. Non-scripted call: all arguments are pushed here. - // 2. Scripted call: all arguments except `callee` are pushed here. `callee` - // must be passed as a CalleeToken, and is pushed below. - // 3. Scripted constructor: only formal arguments are pushed here. We must - // push a new `this` value using createThis, and then push `callee` as - // a CalleeToken. Note that constructors must be Standard or Spread. switch (flags.getArgFormat()) { case CallFlags::Standard: pushStandardArguments(argcReg, scratch, scratch2, argcFixed, isJitCall, - isConstructing); + flags.isConstructing()); break; case CallFlags::Spread: - pushArrayArguments(argcReg, scratch, scratch2, isJitCall, isConstructing); + pushArrayArguments(argcReg, scratch, scratch2, isJitCall, + flags.isConstructing()); break; case CallFlags::FunCall: pushFunCallArguments(argcReg, calleeReg, scratch, scratch2, argcFixed, @@ -3015,16 +3006,6 @@ void BaselineCacheIRCompiler::pushArguments(Register argcReg, default: MOZ_CRASH("Invalid arg format"); } - - if (isJitCall) { - if (isConstructing) { - createThis(argcReg, calleeReg, scratch, scratch2, flags); - } - - // Note that we use Push, not push, so that callJit will align the stack - // properly on ARM. - masm.PushCalleeToken(calleeReg, isConstructing); - } } void BaselineCacheIRCompiler::pushStandardArguments( @@ -3032,16 +3013,11 @@ void BaselineCacheIRCompiler::pushStandardArguments( bool isJitCall, bool isConstructing) { MOZ_ASSERT(enteredStubFrame_); - // The arguments to the call IC were pushed on the stack from left to right, - // meaning that the first argument is at the highest address and the last - // argument is at the lowest address. Our callee needs them to be in the - // opposite order, so we duplicate them now. - - bool shouldCopyCallee = !isJitCall; - bool shouldCopyThis = shouldCopyCallee || !isConstructing; - bool shouldCopyNewTarget = isConstructing; - int additionalArgc = shouldCopyCallee + shouldCopyThis + shouldCopyNewTarget; + // The arguments to the call IC are pushed on the stack left-to-right. + // Our calling conventions want them right-to-left in the callee, so + // we duplicate them on the stack in reverse order. + int additionalArgc = 1 + !isJitCall + isConstructing; if (argcFixed < MaxUnrolledArgCopy) { #ifdef DEBUG Label ok; @@ -3053,8 +3029,7 @@ void BaselineCacheIRCompiler::pushStandardArguments( size_t realArgc = argcFixed + additionalArgc; if (isJitCall) { - masm.alignJitStackBasedOnNArgs(realArgc, - /*countIncludesThis = */ shouldCopyThis); + masm.alignJitStackBasedOnNArgs(realArgc, /*countIncludesThis = */ true); } for (size_t i = 0; i < realArgc; ++i) { @@ -3082,8 +3057,7 @@ void BaselineCacheIRCompiler::pushStandardArguments( // Align the stack such that the JitFrameLayout is aligned on the // JitStackAlignment. if (isJitCall) { - masm.alignJitStackBasedOnNArgs(countReg, - /*countIncludesThis = */ shouldCopyThis); + masm.alignJitStackBasedOnNArgs(countReg, /*countIncludesThis = */ true); } // Push all values, starting at the last one. @@ -3146,15 +3120,15 @@ void BaselineCacheIRCompiler::pushArrayArguments(Register argcReg, masm.jump(©Start); masm.bind(©Done); - bool shouldPushCallee = !isJitCall; - bool shouldPushThis = shouldPushCallee || !isConstructing; + // Push |this|. + size_t thisvOffset = + BaselineStubFrameLayout::Size() + (1 + isConstructing) * sizeof(Value); + masm.pushValue(Address(FramePointer, thisvOffset)); - if (shouldPushThis) { - size_t thisvOffset = arrayOffset + sizeof(Value); - masm.pushValue(Address(FramePointer, thisvOffset)); - } - if (shouldPushCallee) { - size_t calleeOffset = arrayOffset + 2 * sizeof(Value); + // Push |callee| if needed. + if (!isJitCall) { + size_t calleeOffset = + BaselineStubFrameLayout::Size() + (2 + isConstructing) * sizeof(Value); masm.pushValue(Address(FramePointer, calleeOffset)); } } @@ -3381,7 +3355,14 @@ void BaselineCacheIRCompiler::pushBoundFunctionArguments( } } - if (!isConstructing) { + if (isConstructing) { + // Push the |this| Value. This is either the object we allocated or the + // JS_UNINITIALIZED_LEXICAL magic value. It's stored in the BaselineFrame, + // so skip past the stub frame, (unbound) arguments and newTarget. + BaseValueIndex thisAddress(FramePointer, argcReg, + BaselineStubFrameLayout::Size() + sizeof(Value)); + masm.pushValue(thisAddress, scratch); + } else { // Push the bound |this|. Address boundThis(calleeReg, BoundFunctionObject::offsetOfBoundThisSlot()); masm.pushValue(boundThis); @@ -3597,16 +3578,15 @@ bool BaselineCacheIRCompiler::emitCallClassHook(ObjOperandId calleeId, // and unboxes an object from a specific slot. void BaselineCacheIRCompiler::loadStackObject(ArgumentKind kind, CallFlags flags, Register argcReg, - Register dest, - uint32_t extraArgs) { + Register dest) { MOZ_ASSERT(enteredStubFrame_); bool addArgc = false; int32_t slotIndex = GetIndexOfArgument(kind, flags, &addArgc); if (addArgc) { - int32_t slotOffset = (slotIndex - extraArgs) * sizeof(JS::Value) + - BaselineStubFrameLayout::Size(); + int32_t slotOffset = + slotIndex * sizeof(JS::Value) + BaselineStubFrameLayout::Size(); BaseValueIndex slotAddr(FramePointer, argcReg, slotOffset); masm.unboxObject(slotAddr, dest); } else { @@ -3617,33 +3597,50 @@ void BaselineCacheIRCompiler::loadStackObject(ArgumentKind kind, } } +template +void BaselineCacheIRCompiler::storeThis(const T& newThis, Register argcReg, + CallFlags flags) { + switch (flags.getArgFormat()) { + case CallFlags::Standard: { + BaseValueIndex thisAddress( + FramePointer, + argcReg, // Arguments + 1 * sizeof(Value) + // NewTarget + BaselineStubFrameLayout::Size()); // Stub frame + masm.storeValue(newThis, thisAddress); + } break; + case CallFlags::Spread: { + Address thisAddress(FramePointer, + 2 * sizeof(Value) + // Arg array, NewTarget + BaselineStubFrameLayout::Size()); // Stub frame + masm.storeValue(newThis, thisAddress); + } break; + default: + MOZ_CRASH("Invalid arg format for scripted constructor"); + } +} + /* * Scripted constructors require a |this| object to be created prior to the - * call. This is called after we have pushed the formal arguments, but before - * pushing the callee token. When this is called, argcReg must contain the - * number of actual arguments (including bound or spread arguments; not - * including `undef` pushed in cases of argument underflow). calleeReg should - * contain the actual callee. + * call. When this function is called, the stack looks like (bottom->top): + * + * [..., Callee, ThisV, Arg0V, ..., ArgNV, NewTarget, StubFrameHeader] + * + * At this point, |ThisV| is JSWhyMagic::JS_IS_CONSTRUCTING. + * + * This function calls CreateThis to generate a new |this| object, then + * overwrites the magic ThisV on the stack. */ void BaselineCacheIRCompiler::createThis(Register argcReg, Register calleeReg, - Register scratch, Register scratch2, - CallFlags flags, - Maybe numBoundArgs) { + Register scratch, CallFlags flags, + bool isBoundFunction) { MOZ_ASSERT(flags.isConstructing()); - bool isBoundFunction = numBoundArgs.isSome(); - // Derived constructors don't allocate a `this` object. They instead call - // `super`, and the base class constructor will allocate `this`. if (flags.needsUninitializedThis()) { - masm.Push(MagicValue(JS_UNINITIALIZED_LEXICAL)); + storeThis(MagicValue(JS_UNINITIALIZED_LEXICAL), argcReg, flags); return; } - // Save a reference to the start of the arguments, so that we can root - // them in CreateThisFromIC. - Register argvReg = scratch2; - masm.moveStackPtrTo(argvReg); - // Save live registers that don't have to be traced. LiveGeneralRegisterSet liveNonGCRegs; liveNonGCRegs.add(argcReg); @@ -3651,27 +3648,25 @@ void BaselineCacheIRCompiler::createThis(Register argcReg, Register calleeReg, // CreateThis takes two arguments: callee, and newTarget. - // Push argv/argc for rooting in CreateThisFromIC - masm.push(argcReg); - masm.push(argvReg); - if (isBoundFunction) { // Push the bound function's target as callee and newTarget. - masm.push(calleeReg); - masm.push(calleeReg); + Address boundTarget(calleeReg, BoundFunctionObject::offsetOfTargetSlot()); + masm.unboxObject(boundTarget, scratch); + masm.push(scratch); + masm.push(scratch); } else { // Push newTarget: loadStackObject(ArgumentKind::NewTarget, flags, argcReg, scratch); masm.push(scratch); - // Push callee. - masm.push(calleeReg); + // Push callee: + loadStackObject(ArgumentKind::Callee, flags, argcReg, scratch); + masm.push(scratch); } // Call CreateThisFromIC. using Fn = - bool (*)(JSContext*, HandleObject, HandleObject, Value*, uint32_t, - MutableHandleValue); + bool (*)(JSContext*, HandleObject, HandleObject, MutableHandleValue); callVM(masm); #ifdef DEBUG @@ -3691,29 +3686,14 @@ void BaselineCacheIRCompiler::createThis(Register argcReg, Register calleeReg, Address stubAddr(FramePointer, BaselineStubFrameLayout::ICStubOffsetFromFP); masm.loadPtr(stubAddr, ICStubReg); - // Push |this|. + // Save |this| value back into pushed arguments on stack. MOZ_ASSERT(!liveNonGCRegs.aliases(JSReturnOperand)); - masm.Push(TypedOrValueRegister(JSReturnOperand)); + storeThis(JSReturnOperand, argcReg, flags); // Restore calleeReg. CreateThisFromIC may trigger a GC, so we reload the - // callee from the caller's frame (which is traced) instead of spilling it to + // callee from the stub frame (which is traced) instead of spilling it to // the stack. - if (isBoundFunction) { - // Load the callee (which is a bound function). - // At this point, argcReg is the number of actual arguments being passed. - // For bound functions, this includes bound arguments. However, to compute - // the address of `callee` in the caller's frame, we need to know how many - // arguments were passed by the caller. This is argcReg - numBoundArgs. - // We pass in `numBoundArgs` so that loadStackObject can adjust accordingly. - loadStackObject(ArgumentKind::Callee, flags, argcReg, calleeReg, - *numBoundArgs); - - // Load the target JSFunction. - Address boundTarget(calleeReg, BoundFunctionObject::offsetOfTargetSlot()); - masm.unboxObject(boundTarget, calleeReg); - } else { - loadStackObject(ArgumentKind::Callee, flags, argcReg, calleeReg); - } + loadStackObject(ArgumentKind::Callee, flags, argcReg, calleeReg); } void BaselineCacheIRCompiler::updateReturnValue() { @@ -3773,6 +3753,11 @@ bool BaselineCacheIRCompiler::emitCallScriptedFunction(ObjOperandId calleeId, masm.switchToObjectRealm(calleeReg, scratch); } + if (isConstructing) { + createThis(argcReg, calleeReg, scratch, flags, + /* isBoundFunction = */ false); + } + pushArguments(argcReg, calleeReg, scratch, scratch2, flags, argcFixed, /*isJitCall =*/true); @@ -3782,6 +3767,7 @@ bool BaselineCacheIRCompiler::emitCallScriptedFunction(ObjOperandId calleeId, // Note that we use Push, not push, so that callJit will align the stack // properly on ARM. + masm.PushCalleeToken(calleeReg, isConstructing); masm.PushFrameDescriptorForJitCall(FrameType::BaselineStub, argcReg, scratch); // Handle arguments underflow. @@ -3857,11 +3843,11 @@ bool BaselineCacheIRCompiler::emitCallInlinedFunction(ObjOperandId calleeId, masm.switchToObjectRealm(calleeReg, scratch); } - pushArguments(argcReg, calleeReg, scratch, scratch2, flags, argcFixed, - /*isJitCall =*/true); - Label baselineScriptDiscarded; if (isConstructing) { + createThis(argcReg, calleeReg, scratch, flags, + /* isBoundFunction = */ false); + // CreateThisFromIC may trigger a GC and discard the BaselineScript. // We have already called discardStack, so we can't use a FailurePath. // Instead, we skip storing the ICScript in the JSContext and use a @@ -3882,8 +3868,12 @@ bool BaselineCacheIRCompiler::emitCallInlinedFunction(ObjOperandId calleeId, masm.bind(&skip); } + pushArguments(argcReg, calleeReg, scratch, scratch2, flags, argcFixed, + /*isJitCall =*/true); + // Note that we use Push, not push, so that callJit will align the stack // properly on ARM. + masm.PushCalleeToken(calleeReg, isConstructing); masm.PushFrameDescriptorForJitCall(FrameType::BaselineStub, argcReg, scratch); // Handle arguments underflow. @@ -4045,26 +4035,34 @@ bool BaselineCacheIRCompiler::emitCallBoundScriptedFunction( AutoStubFrame stubFrame(*this); stubFrame.enter(masm, scratch); + Address boundTarget(calleeReg, BoundFunctionObject::offsetOfTargetSlot()); + + // If we're constructing, switch to the target's realm and create |this|. If + // we're not constructing, we switch to the target's realm after pushing the + // arguments and loading the target. + if (isConstructing) { + if (!isSameRealm) { + masm.unboxObject(boundTarget, scratch); + masm.switchToObjectRealm(scratch, scratch); + } + createThis(argcReg, calleeReg, scratch, flags, + /* isBoundFunction = */ true); + } + // Push all arguments, including |this|. pushBoundFunctionArguments(argcReg, calleeReg, scratch, scratch2, flags, numBoundArgs, /* isJitCall = */ true); // Load the target JSFunction. - Address boundTarget(calleeReg, BoundFunctionObject::offsetOfTargetSlot()); masm.unboxObject(boundTarget, calleeReg); - if (!isSameRealm) { + if (!isConstructing && !isSameRealm) { masm.switchToObjectRealm(calleeReg, scratch); } // Update argc. masm.add32(Imm32(numBoundArgs), argcReg); - if (isConstructing) { - createThis(argcReg, calleeReg, scratch, scratch2, flags, - mozilla::Some(numBoundArgs)); - } - // Load the start of the target JitCode. Register code = scratch2; masm.loadJitCodeRaw(calleeReg, code); diff --git a/icecat/js/src/jit/BaselineCacheIRCompiler.h b/icecat/js/src/jit/BaselineCacheIRCompiler.h index f4b04fb684..c8f4656229 100644 --- a/icecat/js/src/jit/BaselineCacheIRCompiler.h +++ b/icecat/js/src/jit/BaselineCacheIRCompiler.h @@ -73,7 +73,7 @@ class MOZ_RAII BaselineCacheIRCompiler : public CacheIRCompiler { bool updateArgc(CallFlags flags, Register argcReg, Register scratch); void loadStackObject(ArgumentKind kind, CallFlags flags, Register argcReg, - Register dest, uint32_t extraArgs = 0); + Register dest); void pushArguments(Register argcReg, Register calleeReg, Register scratch, Register scratch2, CallFlags flags, uint32_t argcFixed, bool isJitCall); @@ -93,8 +93,9 @@ class MOZ_RAII BaselineCacheIRCompiler : public CacheIRCompiler { CallFlags flags, uint32_t numBoundArgs, bool isJitCall); void createThis(Register argcReg, Register calleeReg, Register scratch, - Register scratch2, CallFlags flags, - mozilla::Maybe numBoundArgs = mozilla::Nothing()); + CallFlags flags, bool isBoundFunction); + template + void storeThis(const T& newThis, Register argcReg, CallFlags flags); void updateReturnValue(); enum class NativeCallType { Native, ClassHook }; diff --git a/icecat/js/src/jit/BaselineIC.h b/icecat/js/src/jit/BaselineIC.h index 1418eb8f5b..26d66bfdd5 100644 --- a/icecat/js/src/jit/BaselineIC.h +++ b/icecat/js/src/jit/BaselineIC.h @@ -299,9 +299,7 @@ class ICCacheIRStub final : public ICStub { void trace(JSTracer* trc); bool traceWeak(JSTracer* trc); - enum class ICScriptHandling { MarkActive, AssertActive }; - ICCacheIRStub* clone(JSRuntime* rt, ICStubSpace& newSpace, - ICScriptHandling icScriptHandling); + ICCacheIRStub* clone(JSRuntime* rt, ICStubSpace& newSpace); // Returns true if this stub can call JS or VM code that can trigger a GC. bool makesGCCalls() const; diff --git a/icecat/js/src/jit/CacheIR.cpp b/icecat/js/src/jit/CacheIR.cpp index fd6eeda81b..339018b955 100644 --- a/icecat/js/src/jit/CacheIR.cpp +++ b/icecat/js/src/jit/CacheIR.cpp @@ -243,9 +243,6 @@ uint32_t CacheIRCloner::getRawInt32Field(uint32_t stubOffset) { const void* CacheIRCloner::getRawPointerField(uint32_t stubOffset) { return reinterpret_cast(readStubWord(stubOffset)); } -const ICScript* CacheIRCloner::getICScriptField(uint32_t stubOffset) { - return reinterpret_cast(readStubWord(stubOffset)); -} uint64_t CacheIRCloner::getRawInt64Field(uint32_t stubOffset) { return static_cast(readStubInt64(stubOffset)); } diff --git a/icecat/js/src/jit/CacheIR.h b/icecat/js/src/jit/CacheIR.h index e072ab86fd..82036d8621 100644 --- a/icecat/js/src/jit/CacheIR.h +++ b/icecat/js/src/jit/CacheIR.h @@ -239,7 +239,6 @@ class StubField { // These fields take up a single word. RawInt32, RawPointer, - ICScript, Shape, WeakShape, WeakGetterSetter, @@ -313,8 +312,6 @@ inline const char* StubFieldTypeName(StubField::Type ty) { return "RawInt32"; case StubField::Type::RawPointer: return "RawPointer"; - case StubField::Type::ICScript: - return "ICScript"; case StubField::Type::Shape: return "Shape"; case StubField::Type::WeakShape: diff --git a/icecat/js/src/jit/CacheIRCloner.h b/icecat/js/src/jit/CacheIRCloner.h index a3d31c7783..11c78dcd6c 100644 --- a/icecat/js/src/jit/CacheIRCloner.h +++ b/icecat/js/src/jit/CacheIRCloner.h @@ -71,7 +71,6 @@ class MOZ_RAII CacheIRCloner { JitCode* getJitCodeField(uint32_t stubOffset); uint32_t getRawInt32Field(uint32_t stubOffset); const void* getRawPointerField(uint32_t stubOffset); - const ICScript* getICScriptField(uint32_t stubOffset); jsid getIdField(uint32_t stubOffset); const Value getValueField(uint32_t stubOffset); uint64_t getRawInt64Field(uint32_t stubOffset); diff --git a/icecat/js/src/jit/CacheIRCompiler.cpp b/icecat/js/src/jit/CacheIRCompiler.cpp index d4cd4f512c..3db9acdb26 100644 --- a/icecat/js/src/jit/CacheIRCompiler.cpp +++ b/icecat/js/src/jit/CacheIRCompiler.cpp @@ -1119,7 +1119,6 @@ static void InitWordStubField(StubField::Type type, void* dest, switch (type) { case StubField::Type::RawInt32: case StubField::Type::RawPointer: - case StubField::Type::ICScript: case StubField::Type::AllocSite: *static_cast(dest) = value; break; @@ -1180,7 +1179,6 @@ static void InitInt64StubField(StubField::Type type, void* dest, break; case StubField::Type::RawInt32: case StubField::Type::RawPointer: - case StubField::Type::ICScript: case StubField::Type::AllocSite: case StubField::Type::Shape: case StubField::Type::WeakShape: @@ -1211,8 +1209,7 @@ void CacheIRWriter::copyStubData(uint8_t* dest) const { } } -ICCacheIRStub* ICCacheIRStub::clone(JSRuntime* rt, ICStubSpace& newSpace, - ICScriptHandling icScriptHandling) { +ICCacheIRStub* ICCacheIRStub::clone(JSRuntime* rt, ICStubSpace& newSpace) { const CacheIRStubInfo* info = stubInfo(); MOZ_ASSERT(info->makesGCCalls()); @@ -1245,15 +1242,6 @@ ICCacheIRStub* ICCacheIRStub::clone(JSRuntime* rt, ICStubSpace& newSpace, InitWordStubField(type, dest, *srcField); src += sizeof(uintptr_t); dest += sizeof(uintptr_t); - if (type == StubField::Type::ICScript) { - auto* icScript = reinterpret_cast(*srcField); - if (icScriptHandling == ICScriptHandling::MarkActive) { - icScript->setActive(); - } else { - MOZ_ASSERT(icScriptHandling == ICScriptHandling::AssertActive); - MOZ_RELEASE_ASSERT(icScript->active()); - } - } } else { const uint64_t* srcField = reinterpret_cast(src); InitInt64StubField(type, dest, *srcField); @@ -1290,7 +1278,6 @@ void jit::TraceCacheIRStub(JSTracer* trc, T* stub, switch (fieldType) { case Type::RawInt32: case Type::RawPointer: - case Type::ICScript: case Type::RawInt64: case Type::Double: break; @@ -1438,7 +1425,6 @@ bool jit::TraceWeakCacheIRStub(JSTracer* trc, T* stub, return !isDead; case Type::RawInt32: case Type::RawPointer: - case Type::ICScript: case Type::Shape: case Type::JSObject: case Type::Symbol: diff --git a/icecat/js/src/jit/CacheIROps.yaml b/icecat/js/src/jit/CacheIROps.yaml index 4d42961c0a..8dae8260c5 100644 --- a/icecat/js/src/jit/CacheIROps.yaml +++ b/icecat/js/src/jit/CacheIROps.yaml @@ -1931,7 +1931,7 @@ receiver: ObjId setter: ObjectField rhs: ValId - icScript: ICScriptField + icScript: RawPointerField sameRealm: BoolImm nargsAndFlags: RawInt32Field @@ -2124,7 +2124,7 @@ args: callee: ObjId argc: Int32Id - icScript: ICScriptField + icScript: RawPointerField flags: CallFlagsImm argcFixed: UInt32Imm @@ -2558,7 +2558,7 @@ args: receiver: ValId getter: ObjectField - icScript: ICScriptField + icScript: RawPointerField sameRealm: BoolImm nargsAndFlags: RawInt32Field diff --git a/icecat/js/src/jit/CacheIRWriter.h b/icecat/js/src/jit/CacheIRWriter.h index 61dcd2644c..6738e3de9a 100644 --- a/icecat/js/src/jit/CacheIRWriter.h +++ b/icecat/js/src/jit/CacheIRWriter.h @@ -238,9 +238,6 @@ class MOZ_RAII CacheIRWriter : public JS::CustomAutoRooter { void writeRawPointerField(const void* ptr) { addStubField(uintptr_t(ptr), StubField::Type::RawPointer); } - void writeICScriptField(const ICScript* icScript) { - addStubField(uintptr_t(icScript), StubField::Type::ICScript); - } void writeIdField(jsid id) { addStubField(id.asRawBits(), StubField::Type::Id); } diff --git a/icecat/js/src/jit/GenerateCacheIRFiles.py b/icecat/js/src/jit/GenerateCacheIRFiles.py index 6bd3962487..70f940ea9d 100644 --- a/icecat/js/src/jit/GenerateCacheIRFiles.py +++ b/icecat/js/src/jit/GenerateCacheIRFiles.py @@ -76,7 +76,6 @@ arg_writer_info = { "JitCodeField": ("JitCode*", "writeJitCodeField"), "RawInt32Field": ("uint32_t", "writeRawInt32Field"), "RawPointerField": ("const void*", "writeRawPointerField"), - "ICScriptField": ("const ICScript*", "writeICScriptField"), "IdField": ("jsid", "writeIdField"), "ValueField": ("const Value&", "writeValueField"), "RawInt64Field": ("uint64_t", "writeRawInt64Field"), @@ -182,7 +181,6 @@ arg_reader_info = { "JitCodeField": ("uint32_t", "Offset", "reader.stubOffset()"), "RawInt32Field": ("uint32_t", "Offset", "reader.stubOffset()"), "RawPointerField": ("uint32_t", "Offset", "reader.stubOffset()"), - "ICScriptField": ("uint32_t", "Offset", "reader.stubOffset()"), "IdField": ("uint32_t", "Offset", "reader.stubOffset()"), "ValueField": ("uint32_t", "Offset", "reader.stubOffset()"), "RawInt64Field": ("uint32_t", "Offset", "reader.stubOffset()"), @@ -278,7 +276,6 @@ arg_spewer_method = { "JitCodeField": "spewField", "RawInt32Field": "spewField", "RawPointerField": "spewField", - "ICScriptField": "spewField", "IdField": "spewField", "ValueField": "spewField", "RawInt64Field": "spewField", @@ -421,7 +418,6 @@ arg_length = { "JitCodeField": 1, "RawInt32Field": 1, "RawPointerField": 1, - "ICScriptField": 1, "RawInt64Field": 1, "DoubleField": 1, "IdField": 1, diff --git a/icecat/js/src/jit/IonAnalysis.cpp b/icecat/js/src/jit/IonAnalysis.cpp index 0efe238a27..5d4756f0c6 100644 --- a/icecat/js/src/jit/IonAnalysis.cpp +++ b/icecat/js/src/jit/IonAnalysis.cpp @@ -568,9 +568,8 @@ static bool BlockIsSingleTest(MBasicBlock* phiBlock, MBasicBlock* testBlock, *ptest = nullptr; if (phiBlock != testBlock) { - MOZ_RELEASE_ASSERT(phiBlock->lastIns()->isGoto()); - MOZ_RELEASE_ASSERT(phiBlock->lastIns()->toGoto()->target() == testBlock); - MOZ_RELEASE_ASSERT(testBlock->numPredecessors() == 1); + MOZ_ASSERT(phiBlock->numSuccessors() == 1 && + phiBlock->getSuccessor(0) == testBlock); if (!phiBlock->begin()->isGoto()) { return false; } @@ -687,7 +686,7 @@ static bool IsTestInputMaybeToBool(MTest* test, MDefinition* value) { blockResult->setImplicitlyUsedUnchecked(); MInstruction* ins = block->lastIns(); - MOZ_RELEASE_ASSERT(ins->isGoto()); + MOZ_ASSERT(ins->isGoto()); ins->toGoto()->target()->removePredecessor(block); block->discardLastIns(); @@ -708,14 +707,15 @@ static bool IsTestInputMaybeToBool(MTest* test, MDefinition* value) { MInstruction* ins = block->lastIns(); if (ins->isTest()) { MTest* test = ins->toTest(); - MOZ_RELEASE_ASSERT(test->input() == value); + MOZ_ASSERT(test->input() == value); if (ifTrue != test->ifTrue()) { test->ifTrue()->removePredecessor(block); if (!ifTrue->addPredecessorSameInputsAs(block, existingPred)) { return false; } - test->replaceSuccessor(MTest::TrueBranchIndex, ifTrue); + MOZ_ASSERT(test->ifTrue() == test->getSuccessor(0)); + test->replaceSuccessor(0, ifTrue); } if (ifFalse != test->ifFalse()) { @@ -723,13 +723,14 @@ static bool IsTestInputMaybeToBool(MTest* test, MDefinition* value) { if (!ifFalse->addPredecessorSameInputsAs(block, existingPred)) { return false; } - test->replaceSuccessor(MTest::FalseBranchIndex, ifFalse); + MOZ_ASSERT(test->ifFalse() == test->getSuccessor(1)); + test->replaceSuccessor(1, ifFalse); } return true; } - MOZ_RELEASE_ASSERT(ins->isGoto()); + MOZ_ASSERT(ins->isGoto()); ins->toGoto()->target()->removePredecessor(block); block->discardLastIns(); @@ -774,8 +775,8 @@ static bool IsDiamondPattern(MBasicBlock* initialBlock) { return false; } - MBasicBlock* phiBlock = trueBranch->lastIns()->toGoto()->target(); - if (phiBlock != falseBranch->lastIns()->toGoto()->target()) { + MBasicBlock* phiBlock = trueBranch->getSuccessor(0); + if (phiBlock != falseBranch->getSuccessor(0)) { return false; } if (phiBlock->numPredecessors() != 2) { @@ -819,13 +820,13 @@ static bool IsDiamondPattern(MBasicBlock* initialBlock) { return true; } - MBasicBlock* phiBlock = trueBranch->lastIns()->toGoto()->target(); + MBasicBlock* phiBlock = trueBranch->getSuccessor(0); MBasicBlock* testBlock = phiBlock; - if (testBlock->lastIns()->isGoto()) { + if (testBlock->numSuccessors() == 1) { if (testBlock->isLoopBackedge()) { return true; } - testBlock = testBlock->lastIns()->toGoto()->target(); + testBlock = testBlock->getSuccessor(0); if (testBlock->numPredecessors() != 1) { return true; } @@ -837,7 +838,7 @@ static bool IsDiamondPattern(MBasicBlock* initialBlock) { return true; } - MOZ_RELEASE_ASSERT(phi->numOperands() == 2); + MOZ_ASSERT(phi->numOperands() == 2); // Make sure the test block does not have any outgoing loop backedges. if (!SplitCriticalEdgesForBlock(graph, testBlock)) { @@ -928,8 +929,8 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { MBasicBlock* trueBranch = initialTest->ifTrue(); MBasicBlock* falseBranch = initialTest->ifFalse(); - if (trueBranch->lastIns()->isGoto() && - trueBranch->lastIns()->toGoto()->target() == falseBranch) { + if (trueBranch->numSuccessors() == 1 && + trueBranch->getSuccessor(0) == falseBranch) { if (trueBranch->numPredecessors() != 1) { return false; } @@ -939,8 +940,8 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { return true; } - if (falseBranch->lastIns()->isGoto() && - falseBranch->lastIns()->toGoto()->target() == trueBranch) { + if (falseBranch->numSuccessors() == 1 && + falseBranch->getSuccessor(0) == trueBranch) { if (trueBranch->numPredecessors() != 2) { return false; } @@ -998,19 +999,19 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { } MBasicBlock* phiBlock; - if (trueBranch->lastIns()->isGoto() && - trueBranch->lastIns()->toGoto()->target() == falseBranch) { + if (trueBranch->numSuccessors() == 1 && + trueBranch->getSuccessor(0) == falseBranch) { phiBlock = falseBranch; } else { - MOZ_ASSERT(falseBranch->lastIns()->toGoto()->target() == trueBranch); + MOZ_ASSERT(falseBranch->getSuccessor(0) == trueBranch); phiBlock = trueBranch; } MBasicBlock* testBlock = phiBlock; - if (testBlock->lastIns()->isGoto()) { - MOZ_RELEASE_ASSERT(!testBlock->isLoopBackedge()); + if (testBlock->numSuccessors() == 1) { + MOZ_ASSERT(!testBlock->isLoopBackedge()); - testBlock = testBlock->lastIns()->toGoto()->target(); + testBlock = testBlock->getSuccessor(0); if (testBlock->numPredecessors() != 1) { return true; } @@ -1022,7 +1023,7 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { return true; } - MOZ_RELEASE_ASSERT(phi->numOperands() == 2); + MOZ_ASSERT(phi->numOperands() == 2); // If the phi-operand doesn't match the initial input, we can't fold the test. auto* phiInputForInitialBlock = @@ -1193,17 +1194,17 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { } MBasicBlock* testBlock = phiBlock; - if (testBlock->lastIns()->isGoto()) { + if (testBlock->numSuccessors() == 1) { if (testBlock->isLoopBackedge()) { return true; } - testBlock = testBlock->lastIns()->toGoto()->target(); + testBlock = testBlock->getSuccessor(0); if (testBlock->numPredecessors() != 1) { return true; } } - MOZ_RELEASE_ASSERT(!phiBlock->isLoopBackedge()); + MOZ_ASSERT(!phiBlock->isLoopBackedge()); MPhi* phi = nullptr; MTest* finalTest = nullptr; @@ -1211,7 +1212,7 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { return true; } - MOZ_RELEASE_ASSERT(phiBlock->numPredecessors() == phi->numOperands()); + MOZ_ASSERT(phiBlock->numPredecessors() == phi->numOperands()); // If the phi-operand doesn't match the initial input, we can't fold the test. auto* phiInputForInitialBlock = @@ -1242,7 +1243,7 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { return true; } - MOZ_RELEASE_ASSERT(!pred->isLoopBackedge()); + MOZ_ASSERT(!pred->isLoopBackedge()); } // Ensure we found the single goto block. @@ -1269,7 +1270,7 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { // Update all test instructions to point to the final target. while (phiBlock->numPredecessors()) { - size_t oldNumPred = phiBlock->numPredecessors(); + mozilla::DebugOnly oldNumPred = phiBlock->numPredecessors(); auto* pred = phiBlock->getPredecessor(0); auto* test = pred->lastIns()->toTest(); @@ -1280,7 +1281,7 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { return false; } } else { - MOZ_RELEASE_ASSERT(test->ifFalse() == phiBlock); + MOZ_ASSERT(test->ifFalse() == phiBlock); if (!UpdateTestSuccessors(graph.alloc(), pred, test->input(), test->ifTrue(), finalTest->ifFalse(), testBlock)) { @@ -1289,7 +1290,7 @@ static bool IsTrianglePattern(MBasicBlock* initialBlock) { } // Ensure we've made progress. - MOZ_RELEASE_ASSERT(phiBlock->numPredecessors() + 1 == oldNumPred); + MOZ_ASSERT(phiBlock->numPredecessors() + 1 == oldNumPred); } // Remove phiBlock, if different from testBlock. diff --git a/icecat/js/src/jit/JitFrames.cpp b/icecat/js/src/jit/JitFrames.cpp index 28e65d5d1c..5fff3d82d0 100644 --- a/icecat/js/src/jit/JitFrames.cpp +++ b/icecat/js/src/jit/JitFrames.cpp @@ -1745,7 +1745,6 @@ bool SnapshotIterator::allocationReadable(const RValueAllocation& alloc, case RValueAllocation::INT64_REG: return hasRegister(alloc.reg()); case RValueAllocation::INT64_STACK: - case RValueAllocation::INT64_INT32_STACK: return hasStack(alloc.stackOffset()); #endif @@ -1856,7 +1855,6 @@ Value SnapshotIterator::allocationValue(const RValueAllocation& alloc, #elif defined(JS_PUNBOX64) case RValueAllocation::INT64_REG: case RValueAllocation::INT64_STACK: - case RValueAllocation::INT64_INT32_STACK: #endif MOZ_CRASH("Can't read Int64 as Value"); @@ -1913,7 +1911,6 @@ bool SnapshotIterator::readMaybeUnpackedBigInt(JSContext* cx, #elif defined(JS_PUNBOX64) case RValueAllocation::INT64_REG: case RValueAllocation::INT64_STACK: - case RValueAllocation::INT64_INT32_STACK: #endif { auto* bigInt = JS::BigInt::createFromInt64(cx, allocationInt64(alloc)); @@ -1981,9 +1978,6 @@ int64_t SnapshotIterator::allocationInt64(const RValueAllocation& alloc) { case RValueAllocation::INT64_STACK: { return static_cast(fromStack(alloc.stackOffset())); } - case RValueAllocation::INT64_INT32_STACK: { - return static_cast(ReadFrameInt32Slot(fp_, alloc.stackOffset())); - } #endif default: break; @@ -2057,7 +2051,6 @@ void SnapshotIterator::writeAllocationValuePayload( #elif defined(JS_PUNBOX64) case RValueAllocation::INT64_REG: case RValueAllocation::INT64_STACK: - case RValueAllocation::INT64_INT32_STACK: #endif MOZ_CRASH("Not a GC thing: Unexpected write"); break; diff --git a/icecat/js/src/jit/JitScript.cpp b/icecat/js/src/jit/JitScript.cpp index 0ca4e93591..b8f57a16ca 100644 --- a/icecat/js/src/jit/JitScript.cpp +++ b/icecat/js/src/jit/JitScript.cpp @@ -532,8 +532,7 @@ void ICScript::purgeStubs(Zone* zone, ICStubSpace& newStubSpace) { ICCacheIRStub* prev = nullptr; ICStub* stub = entry.firstStub(); while (stub != fallback) { - ICCacheIRStub* clone = stub->toCacheIRStub()->clone( - rt, newStubSpace, ICCacheIRStub::ICScriptHandling::AssertActive); + ICCacheIRStub* clone = stub->toCacheIRStub()->clone(rt, newStubSpace); if (prev) { prev->setNext(clone); } else { @@ -752,15 +751,26 @@ static void MarkActiveICScriptsAndCopyStubs( ICCacheIRStub* stub = layout->maybeStubPtr()->toCacheIRStub(); auto lookup = alreadyClonedStubs.lookupForAdd(stub); if (!lookup) { - ICCacheIRStub* newStub = - stub->clone(cx->runtime(), newStubSpace, - ICCacheIRStub::ICScriptHandling::MarkActive); + ICCacheIRStub* newStub = stub->clone(cx->runtime(), newStubSpace); AutoEnterOOMUnsafeRegion oomUnsafe; if (!alreadyClonedStubs.add(lookup, stub, newStub)) { oomUnsafe.crash("MarkActiveICScriptsAndCopyStubs"); } } layout->setStubPtr(lookup->value()); + + // If this is a trial-inlining call site, also preserve the callee + // ICScript. Inlined constructor calls invoke CreateThisFromIC (which + // can trigger GC) before using the inlined ICScript. + JSJitFrameIter parentFrame(frame); + ++parentFrame; + BaselineFrame* blFrame = parentFrame.baselineFrame(); + jsbytecode* pc; + parentFrame.baselineScriptAndPc(nullptr, &pc); + uint32_t pcOffset = blFrame->script()->pcToOffset(pc); + if (blFrame->icScript()->hasInlinedChild(pcOffset)) { + blFrame->icScript()->findInlinedChild(pcOffset)->setActive(); + } } break; } diff --git a/icecat/js/src/jit/MIR-wasm.cpp b/icecat/js/src/jit/MIR-wasm.cpp index 94e6fe6fb0..2b72f79d14 100644 --- a/icecat/js/src/jit/MIR-wasm.cpp +++ b/icecat/js/src/jit/MIR-wasm.cpp @@ -311,16 +311,6 @@ bool MAsmJSLoadHeap::congruentTo(const MDefinition* ins) const { return load->accessType() == accessType() && congruentIfOperandsEqual(load); } -bool MWasmI31RefGet::congruentTo(const MDefinition* ins) const { - if (!ins->isWasmI31RefGet()) { - return false; - } - // Make sure that we have a signed/signed or unsigned/unsigned pair to be - // considered congruent. - return congruentIfOperandsEqual(ins) && - ins->toWasmI31RefGet()->wideningOp() == wideningOp(); -} - MDefinition::AliasType MWasmLoadInstanceDataField::mightAlias( const MDefinition* def) const { if (def->isWasmStoreInstanceDataField()) { diff --git a/icecat/js/src/jit/MIR-wasm.h b/icecat/js/src/jit/MIR-wasm.h index f1c8079864..27e9bb5ff0 100644 --- a/icecat/js/src/jit/MIR-wasm.h +++ b/icecat/js/src/jit/MIR-wasm.h @@ -1346,6 +1346,7 @@ class MWasmLoadTableElement : public MBinaryInstruction, wasm::RefType refType) : MBinaryInstruction(classOpcode, elements, index) { setResultType(MIRType::WasmAnyRef); + setMovable(); initWasmRefType(wasm::MaybeRefType(refType)); } diff --git a/icecat/js/src/jit/MIR.cpp b/icecat/js/src/jit/MIR.cpp index 40ddd413aa..da3c56acf4 100644 --- a/icecat/js/src/jit/MIR.cpp +++ b/icecat/js/src/jit/MIR.cpp @@ -6549,34 +6549,6 @@ MDefinition* MGuardNumberToIntPtrIndex::foldsTo(TempAllocator& alloc) { return MConstant::NewIntPtr(alloc, intptr_t(ival)); } -AliasSet MLoadScriptedProxyHandler::getAliasSet() const { - return AliasSet::Load(AliasSet::ObjectFields); -} - -AliasSet MGuardIsNativeObject::getAliasSet() const { - return AliasSet::Load(AliasSet::ObjectFields); -} - -AliasSet MGuardIsProxy::getAliasSet() const { - return AliasSet::Load(AliasSet::ObjectFields); -} - -AliasSet MGuardIsNotProxy::getAliasSet() const { - return AliasSet::Load(AliasSet::ObjectFields); -} - -AliasSet MGuardIsNotDOMProxy::getAliasSet() const { - return AliasSet::Load(AliasSet::ObjectFields); -} - -AliasSet MGuardHasProxyHandler::getAliasSet() const { - return AliasSet::Load(AliasSet::ObjectFields); -} - -AliasSet MIsConstructor::getAliasSet() const { - return AliasSet::Load(AliasSet::ObjectFields); -} - MDefinition* MIsObject::foldsTo(TempAllocator& alloc) { MDefinition* input = object(); if (!input->isBox()) { diff --git a/icecat/js/src/jit/MIR.h b/icecat/js/src/jit/MIR.h index 92db62e343..9396075c5e 100644 --- a/icecat/js/src/jit/MIR.h +++ b/icecat/js/src/jit/MIR.h @@ -9051,9 +9051,7 @@ class MIsCallable : public MUnaryInstruction, } MDefinition* foldsTo(TempAllocator& alloc) override; - AliasSet getAliasSet() const override { - return AliasSet::Load(AliasSet::ObjectFields); - } + AliasSet getAliasSet() const override { return AliasSet::None(); } }; class MHasClass : public MUnaryInstruction, public SingleObjectPolicy::Data { @@ -9074,9 +9072,7 @@ class MHasClass : public MUnaryInstruction, public SingleObjectPolicy::Data { const JSClass* getClass() const { return class_; } MDefinition* foldsTo(TempAllocator& alloc) override; - AliasSet getAliasSet() const override { - return AliasSet::Load(AliasSet::ObjectFields); - } + AliasSet getAliasSet() const override { return AliasSet::None(); } bool congruentTo(const MDefinition* ins) const override { if (!ins->isHasClass()) { return false; @@ -9116,9 +9112,7 @@ class MGuardToClass : public MUnaryInstruction, } MDefinition* foldsTo(TempAllocator& alloc) override; - AliasSet getAliasSet() const override { - return AliasSet::Load(AliasSet::ObjectFields); - } + AliasSet getAliasSet() const override { return AliasSet::None(); } bool congruentTo(const MDefinition* ins) const override { if (!ins->isGuardToClass()) { return false; diff --git a/icecat/js/src/jit/MIROps.yaml b/icecat/js/src/jit/MIROps.yaml index b1559404d1..57fc29aac8 100644 --- a/icecat/js/src/jit/MIROps.yaml +++ b/icecat/js/src/jit/MIROps.yaml @@ -668,7 +668,7 @@ result_type: Object guard: true congruent_to: if_operands_equal - alias_set: custom + alias_set: none generate_lir: true #ifdef JS_PUNBOX64 @@ -825,7 +825,7 @@ wideningOp: wasm::FieldWideningOp type_policy: none result_type: Int32 - congruent_to: custom + congruent_to: if_operands_equal alias_set: none generate_lir: true @@ -2161,7 +2161,7 @@ guard: true movable: true congruent_to: if_operands_equal - alias_set: custom + alias_set: none - name: GuardGlobalGeneration arguments: @@ -2180,7 +2180,7 @@ guard: true movable: true congruent_to: if_operands_equal - alias_set: custom + alias_set: none - name: GuardIsNotDOMProxy operands: @@ -2189,7 +2189,7 @@ guard: true movable: true congruent_to: if_operands_equal - alias_set: custom + alias_set: none - name: GuardIsNotProxy operands: @@ -2199,7 +2199,7 @@ movable: true congruent_to: if_operands_equal folds_to: custom - alias_set: custom + alias_set: none - name: ProxyGet operands: @@ -2401,7 +2401,7 @@ guard: true movable: true congruent_to: if_operands_equal - alias_set: custom + alias_set: none # Loads a specific JSObject* that was originally nursery-allocated. # See also WarpObjectField. @@ -2965,7 +2965,7 @@ result_type: Boolean movable: true congruent_to: if_operands_equal - alias_set: custom + alias_set: none generate_lir: true - name: IsCrossRealmArrayConstructor diff --git a/icecat/js/src/jit/MacroAssembler.cpp b/icecat/js/src/jit/MacroAssembler.cpp index 0a15ce53da..6ed3729ae9 100644 --- a/icecat/js/src/jit/MacroAssembler.cpp +++ b/icecat/js/src/jit/MacroAssembler.cpp @@ -5765,7 +5765,6 @@ static ReturnCallTrampolineData MakeReturnCallTrampoline(MacroAssembler& masm) { masm.loadPtr( Address(masm.getStackPointer(), WasmCallerInstanceOffsetBeforeCall), InstanceReg); - masm.loadWasmPinnedRegsFromInstance(mozilla::Nothing()); masm.switchToWasmInstanceRealm(ABINonArgReturnReg0, ABINonArgReturnReg1); masm.moveToStackPtr(FramePointer); #ifdef JS_CODEGEN_ARM64 diff --git a/icecat/js/src/jit/ScalarReplacement.cpp b/icecat/js/src/jit/ScalarReplacement.cpp index e105498605..e56e78bceb 100644 --- a/icecat/js/src/jit/ScalarReplacement.cpp +++ b/icecat/js/src/jit/ScalarReplacement.cpp @@ -3044,7 +3044,11 @@ class WasmStructMemoryView : public MDefinitionVisitorDefaultNoop { bool mergeIntoSuccessorState(MBasicBlock* curr, MBasicBlock* succ, BlockState** pSuccState); +#ifdef DEBUG void assertSuccess(); +#else + void assertSuccess() {} +#endif bool oom() const { return oom_; } @@ -3061,13 +3065,15 @@ void WasmStructMemoryView::setEntryBlockState(BlockState* state) { state_ = state; } +#ifdef DEBUG void WasmStructMemoryView::assertSuccess() { // Make sure that the undefined value used as a placeholder is not used. - MOZ_RELEASE_ASSERT(!undefinedVal_->hasUses()); + MOZ_ASSERT(!undefinedVal_->hasUses()); // Make sure that the MWasmNewStruct instruction is not used anymore. - MOZ_RELEASE_ASSERT(!struct_->hasUses()); + MOZ_ASSERT(!struct_->hasUses()); } +#endif MBasicBlock* WasmStructMemoryView::startingBlock() { return startBlock_; } @@ -3317,7 +3323,7 @@ static bool IsWasmStructEscaped(MDefinition* ins, MInstruction* newStruct) { } case MDefinition::Opcode::WasmStoreFieldRef: { // Escaped if it's stored into another struct. - if (def->toWasmStoreFieldRef()->value() == ins) { + if (def->toWasmStoreFieldRef()->value() == newStruct) { JitSpewDef(JitSpew_Escape, "is escaped by\n", def); return true; } diff --git a/icecat/js/src/jit/Snapshots.cpp b/icecat/js/src/jit/Snapshots.cpp index 41560a6208..541efeb5eb 100644 --- a/icecat/js/src/jit/Snapshots.cpp +++ b/icecat/js/src/jit/Snapshots.cpp @@ -154,9 +154,6 @@ using namespace js::jit; // register/stack-offset correspond to the low 32-bits, and the // second correspond to the high 32-bits. // -// INT64_INT32_STACK [STACK_OFFSET]: (64-bit platform) -// Unpacked Int64 value stored in int32_t. Payload is stored at an -// offset on the stack. const RValueAllocation::Layout& RValueAllocation::layoutFromMode(Mode mode) { switch (mode) { @@ -311,12 +308,6 @@ const RValueAllocation::Layout& RValueAllocation::layoutFromMode(Mode mode) { PAYLOAD_STACK_OFFSET, PAYLOAD_NONE, "unpacked int64"}; return layout; } - - case INT64_INT32_STACK: { - static const RValueAllocation::Layout layout = { - PAYLOAD_STACK_OFFSET, PAYLOAD_NONE, "unpacked int64 (int32)"}; - return layout; - } #endif default: { diff --git a/icecat/js/src/jit/Snapshots.h b/icecat/js/src/jit/Snapshots.h index 5fe49806b9..b7e08b4cf7 100644 --- a/icecat/js/src/jit/Snapshots.h +++ b/icecat/js/src/jit/Snapshots.h @@ -82,7 +82,6 @@ class RValueAllocation { #elif defined(JS_PUNBOX64) INT64_REG = 0x31, INT64_STACK = 0x32, - INT64_INT32_STACK = 0x33, #endif // This mask can be used with any other valid mode. When this flag is @@ -349,11 +348,6 @@ class RValueAllocation { static RValueAllocation Int64(int32_t stackOffset) { return RValueAllocation(INT64_STACK, payloadOfStackOffset(stackOffset)); } - - static RValueAllocation Int64Int32(int32_t stackOffset) { - return RValueAllocation(INT64_INT32_STACK, - payloadOfStackOffset(stackOffset)); - } #endif void setNeedSideEffect() { diff --git a/icecat/js/src/jit/VMFunctions.cpp b/icecat/js/src/jit/VMFunctions.cpp index 2ead306e94..5612a67b0c 100644 --- a/icecat/js/src/jit/VMFunctions.cpp +++ b/icecat/js/src/jit/VMFunctions.cpp @@ -882,23 +882,14 @@ bool GetIntrinsicValue(JSContext* cx, Handle name, return GlobalObject::getIntrinsicValue(cx, cx->global(), name, rval); } -static uint32_t NumTraceableArgsForCreateThis(HandleFunction fun, - uint32_t argc) { - return argc + 1; // Add 1 for newTarget -} - bool CreateThisFromIC(JSContext* cx, HandleObject callee, - HandleObject newTarget, Value* argv, uint32_t argc, - MutableHandleValue rval) { + HandleObject newTarget, MutableHandleValue rval) { HandleFunction fun = callee.as(); MOZ_ASSERT(fun->isInterpreted()); MOZ_ASSERT(fun->isConstructor()); MOZ_ASSERT(cx->realm() == fun->realm(), "Realm switching happens before creating this"); - RootedExternalValueArray args(cx, NumTraceableArgsForCreateThis(fun, argc), - argv); - // CreateThis expects rval to be this magic value. rval.set(MagicValue(JS_IS_CONSTRUCTING)); diff --git a/icecat/js/src/jit/VMFunctions.h b/icecat/js/src/jit/VMFunctions.h index 228c317ff5..4a7006255a 100644 --- a/icecat/js/src/jit/VMFunctions.h +++ b/icecat/js/src/jit/VMFunctions.h @@ -408,8 +408,8 @@ bool OperatorIn(JSContext* cx, HandleValue key, HandleObject obj, bool* out); MutableHandleValue rval); [[nodiscard]] bool CreateThisFromIC(JSContext* cx, HandleObject callee, - HandleObject newTarget, Value* argv, - uint32_t argc, MutableHandleValue rval); + HandleObject newTarget, + MutableHandleValue rval); [[nodiscard]] bool CreateThisFromIon(JSContext* cx, HandleObject callee, HandleObject newTarget, MutableHandleValue rval); diff --git a/icecat/js/src/jit/WarpOracle.cpp b/icecat/js/src/jit/WarpOracle.cpp index 2118ceb92e..92e30bf570 100644 --- a/icecat/js/src/jit/WarpOracle.cpp +++ b/icecat/js/src/jit/WarpOracle.cpp @@ -1256,7 +1256,6 @@ bool WarpScriptOracle::replaceNurseryAndAllocSitePointers( switch (fieldType) { case StubField::Type::RawInt32: case StubField::Type::RawPointer: - case StubField::Type::ICScript: case StubField::Type::RawInt64: case StubField::Type::Double: break; diff --git a/icecat/js/src/jit/WarpSnapshot.cpp b/icecat/js/src/jit/WarpSnapshot.cpp index 47b233f651..51275ae3c3 100644 --- a/icecat/js/src/jit/WarpSnapshot.cpp +++ b/icecat/js/src/jit/WarpSnapshot.cpp @@ -341,7 +341,6 @@ void WarpCacheIR::traceData(JSTracer* trc) { switch (fieldType) { case StubField::Type::RawInt32: case StubField::Type::RawPointer: - case StubField::Type::ICScript: case StubField::Type::RawInt64: case StubField::Type::Double: break; diff --git a/icecat/js/src/jit/arm/MacroAssembler-arm.cpp b/icecat/js/src/jit/arm/MacroAssembler-arm.cpp index a7519354f2..ef2565a2b2 100644 --- a/icecat/js/src/jit/arm/MacroAssembler-arm.cpp +++ b/icecat/js/src/jit/arm/MacroAssembler-arm.cpp @@ -4862,24 +4862,20 @@ void MacroAssembler::wasmBoundsCheck32(Condition cond, Register index, void MacroAssembler::wasmBoundsCheck64(Condition cond, Register64 index, Register64 boundsCheckLimit, Label* ok) { - MOZ_ASSERT(cond == Assembler::AboveOrEqual || cond == Assembler::Below); - Label rejoin; - Label* failLabel = cond == Assembler::AboveOrEqual ? ok : &rejoin; + Label notOk; cmp32(index.high, Imm32(0)); - j(Assembler::NonZero, failLabel); + j(Assembler::NonZero, ¬Ok); wasmBoundsCheck32(cond, index.low, boundsCheckLimit.low, ok); - bind(&rejoin); + bind(¬Ok); } void MacroAssembler::wasmBoundsCheck64(Condition cond, Register64 index, Address boundsCheckLimit, Label* ok) { - MOZ_ASSERT(cond == Assembler::AboveOrEqual || cond == Assembler::Below); - Label rejoin; - Label* failLabel = cond == Assembler::AboveOrEqual ? ok : &rejoin; + Label notOk; cmp32(index.high, Imm32(0)); - j(Assembler::NonZero, failLabel); + j(Assembler::NonZero, ¬Ok); wasmBoundsCheck32(cond, index.low, boundsCheckLimit, ok); - bind(&rejoin); + bind(¬Ok); } void MacroAssembler::wasmTruncateDoubleToUInt32(FloatRegister input, diff --git a/icecat/js/src/jit/shared/CodeGenerator-shared.cpp b/icecat/js/src/jit/shared/CodeGenerator-shared.cpp index 4ba7b42355..5f505e7794 100644 --- a/icecat/js/src/jit/shared/CodeGenerator-shared.cpp +++ b/icecat/js/src/jit/shared/CodeGenerator-shared.cpp @@ -599,14 +599,9 @@ void CodeGeneratorShared::encodeAllocation(LSnapshot* snapshot, if (payload->isGeneralReg()) { alloc = RValueAllocation::Int64(ToRegister(payload)); } else if (payload->isStackSlot()) { - LStackSlot::Width width = payload->toStackSlot()->width(); - MOZ_ASSERT(width == LStackSlot::width(LDefinition::GENERAL) || - width == LStackSlot::width(LDefinition::INT32)); - if (width == LStackSlot::width(LDefinition::GENERAL)) { - alloc = RValueAllocation::Int64(ToStackIndex(payload)); - } else { - alloc = RValueAllocation::Int64Int32(ToStackIndex(payload)); - } + MOZ_ASSERT(payload->toStackSlot()->width() == + LStackSlot::width(LDefinition::GENERAL)); + alloc = RValueAllocation::Int64(ToStackIndex(payload)); } else { MOZ_CRASH("Unexpected payload type."); } diff --git a/icecat/js/src/jit/x86/MacroAssembler-x86.cpp b/icecat/js/src/jit/x86/MacroAssembler-x86.cpp index 53f7a2aed4..d3e5c9c406 100644 --- a/icecat/js/src/jit/x86/MacroAssembler-x86.cpp +++ b/icecat/js/src/jit/x86/MacroAssembler-x86.cpp @@ -1882,24 +1882,20 @@ void MacroAssembler::patchNearAddressMove(CodeLocationLabel loc, void MacroAssembler::wasmBoundsCheck64(Condition cond, Register64 index, Register64 boundsCheckLimit, Label* ok) { - MOZ_ASSERT(cond == Assembler::AboveOrEqual || cond == Assembler::Below); - Label rejoin; - Label* failLabel = cond == Assembler::AboveOrEqual ? ok : &rejoin; + Label notOk; cmp32(index.high, Imm32(0)); - j(Assembler::NonZero, failLabel); + j(Assembler::NonZero, ¬Ok); wasmBoundsCheck32(cond, index.low, boundsCheckLimit.low, ok); - bind(&rejoin); + bind(¬Ok); } void MacroAssembler::wasmBoundsCheck64(Condition cond, Register64 index, Address boundsCheckLimit, Label* ok) { - MOZ_ASSERT(cond == Assembler::AboveOrEqual || cond == Assembler::Below); - Label rejoin; - Label* failLabel = cond == Assembler::AboveOrEqual ? ok : &rejoin; + Label notOk; cmp32(index.high, Imm32(0)); - j(Assembler::NonZero, failLabel); + j(Assembler::NonZero, ¬Ok); wasmBoundsCheck32(cond, index.low, boundsCheckLimit, ok); - bind(&rejoin); + bind(¬Ok); } void MacroAssembler::wasmMarkCallAsSlow() { diff --git a/icecat/js/src/jsapi-tests/testGCExactRooting.cpp b/icecat/js/src/jsapi-tests/testGCExactRooting.cpp index 59f7ebeb3a..0c6c41701d 100644 --- a/icecat/js/src/jsapi-tests/testGCExactRooting.cpp +++ b/icecat/js/src/jsapi-tests/testGCExactRooting.cpp @@ -1032,27 +1032,3 @@ BEGIN_TEST(testRootedTuple) { return true; } END_TEST(testRootedTuple) - -BEGIN_TEST(testRootedRealm) { - // Create a new global and use Rooted to keep it alive. - Rooted realm(cx); - { - JS::RealmOptions globalOptions; - JSObject* otherGlobal = JS_NewGlobalObject( - cx, getGlobalClass(), nullptr, JS::FireOnNewGlobalHook, globalOptions); - CHECK(otherGlobal); - realm = JS::GetObjectRealmOrNull(otherGlobal); - CHECK(realm); - } - - JS_GC(cx); - - // Use the realm. - JSAutoRealm ar(cx, JS::GetRealmGlobalOrNull(realm)); - JS::RootedValue v(cx); - EVAL("let x = -1234; Math.abs(x)", &v); - CHECK(v.toNumber() == 1234); - - return true; -} -END_TEST(testRootedRealm) diff --git a/icecat/js/src/jsapi-tests/testJitRValueAlloc.cpp b/icecat/js/src/jsapi-tests/testJitRValueAlloc.cpp index 40b20c1c6d..78e716e0ff 100644 --- a/icecat/js/src/jsapi-tests/testJitRValueAlloc.cpp +++ b/icecat/js/src/jsapi-tests/testJitRValueAlloc.cpp @@ -336,15 +336,6 @@ BEGIN_TEST(testJitRValueAlloc_Int64Stack) { return true; } END_TEST(testJitRValueAlloc_Int64Stack) - -BEGIN_TEST(testJitRValueAlloc_Int64Int32Stack) { - for (auto i : Fibonacci{}) { - auto s = RValueAllocation::Int64Int32(i); - CHECK(s == Read(s)); - } - return true; -} -END_TEST(testJitRValueAlloc_Int64Int32Stack) #endif BEGIN_TEST(testJitRValueAlloc_IntPtrCst) { diff --git a/icecat/js/src/jsfriendapi.cpp b/icecat/js/src/jsfriendapi.cpp index 7bbe98cd17..6de69a90fd 100644 --- a/icecat/js/src/jsfriendapi.cpp +++ b/icecat/js/src/jsfriendapi.cpp @@ -479,10 +479,6 @@ void JS::detail::SetReservedSlotWithBarrier(JSObject* obj, size_t slot, } } -bool JS::NativeObjectHasOwnProperties(const JSObject* obj) { - return !obj->as().empty(); -} - void js::SetPreserveWrapperCallbacks( JSContext* cx, PreserveWrapperCallback preserveWrapper, HasReleasedWrapperCallback hasReleasedWrapper) { diff --git a/icecat/js/src/moz.build b/icecat/js/src/moz.build index a6c671f581..b6a3ccfd23 100644 --- a/icecat/js/src/moz.build +++ b/icecat/js/src/moz.build @@ -259,7 +259,6 @@ EXPORTS.js.experimental += [ # a clean design. Use this only if you absolutely must, and feel free to # propose clean APIs to replace what's here! EXPORTS.js.friend += [ - "../public/friend/CycleCollector.h", "../public/friend/DOMProxy.h", "../public/friend/DumpFunctions.h", "../public/friend/ErrorMessages.h", diff --git a/icecat/js/src/proxy/CrossCompartmentWrapper.cpp b/icecat/js/src/proxy/CrossCompartmentWrapper.cpp index bf423c332e..d3ec13186a 100644 --- a/icecat/js/src/proxy/CrossCompartmentWrapper.cpp +++ b/icecat/js/src/proxy/CrossCompartmentWrapper.cpp @@ -5,7 +5,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "builtin/FinalizationRegistryObject.h" -#include "debugger/Debugger.h" #include "gc/GC.h" #include "gc/PublicIterators.h" #include "js/friend/WindowProxy.h" // js::IsWindow, js::IsWindowProxy @@ -450,12 +449,6 @@ JS_PUBLIC_API bool js::NukeCrossCompartmentWrappers( continue; } - // Don't nuke wrappers for debugger objects. These are used in Breakpoints - // and nuking them breaks debugger invariants. - if (MOZ_UNLIKELY(wrapped->is())) { - continue; - } - // We only skip nuking window references that point to a target // compartment, not the ones that belong to it. if (nukeReferencesToWindow == DontNukeWindowReferences && @@ -478,12 +471,6 @@ JS_PUBLIC_API bool js::AllowNewWrapper(JS::Compartment* target, JSObject* obj) { MOZ_ASSERT(obj->compartment() != target); - // Wrappers for debugger objects are not nuked and we must continue to allow - // them to be created or we will break the invariants in Compartment::wrap. - if (MOZ_UNLIKELY(obj->is())) { - return true; - } - if (target->nukedOutgoingWrappers || obj->nonCCWRealm()->nukedIncomingWrappers) { return false; @@ -514,9 +501,6 @@ void js::RemapWrapper(JSContext* cx, JSObject* wobjArg, AutoDisableProxyCheck adpc; - // This can't GC (and RemapDeadWrapper suppresses it). - JS::AutoAssertNoGC nogc(cx); - // If we're mapping to a different target (as opposed to just recomputing // for the same target), we must not have an existing wrapper for the new // target, otherwise this will break. @@ -558,10 +542,6 @@ void js::RemapDeadWrapper(JSContext* cx, HandleObject wobj, AutoDisableProxyCheck adpc; - // Suppress GC while we manipulate the wrapper map so that it can't observe - // intervening state. - gc::AutoSuppressGC nogc(cx); - // wobj is not a cross-compartment wrapper, so we can use nonCCWRealm. Realm* wrealm = wobj->nonCCWRealm(); diff --git a/icecat/js/src/proxy/Proxy.cpp b/icecat/js/src/proxy/Proxy.cpp index 76df797b44..f72f035cd4 100644 --- a/icecat/js/src/proxy/Proxy.cpp +++ b/icecat/js/src/proxy/Proxy.cpp @@ -425,9 +425,7 @@ bool js::ProxyHas(JSContext* cx, HandleObject proxy, HandleValue idVal, if (!ToPropertyKey(cx, idVal, &id)) { return false; } - if (MOZ_UNLIKELY(!proxy->is())) { - return HasProperty(cx, proxy, id, result); - } + return Proxy::has(cx, proxy, id, result); } @@ -468,9 +466,7 @@ bool js::ProxyHasOwn(JSContext* cx, HandleObject proxy, HandleValue idVal, if (!ToPropertyKey(cx, idVal, &id)) { return false; } - if (MOZ_UNLIKELY(!proxy->is())) { - return HasOwnProperty(cx, proxy, id, result); - } + return Proxy::hasOwn(cx, proxy, id, result); } @@ -552,9 +548,6 @@ bool js::ProxyGetPropertyByValue(JSContext* cx, HandleObject proxy, } RootedValue receiver(cx, ObjectValue(*proxy)); - if (MOZ_UNLIKELY(!proxy->is())) { - return GetProperty(cx, proxy, receiver, id, vp); - } return Proxy::getInternal(cx, proxy, receiver, id, vp); } @@ -628,11 +621,7 @@ bool js::ProxySetPropertyByValue(JSContext* cx, HandleObject proxy, ObjectOpResult result; RootedValue receiver(cx, ObjectValue(*proxy)); - if (MOZ_UNLIKELY(!proxy->is())) { - if (!SetProperty(cx, proxy, id, val, receiver, result)) { - return false; - } - } else if (!Proxy::setInternal(cx, proxy, id, val, receiver, result)) { + if (!Proxy::setInternal(cx, proxy, id, val, receiver, result)) { return false; } return result.checkStrictModeError(cx, proxy, id, strict); diff --git a/icecat/js/src/vm/ArgumentsObject.cpp b/icecat/js/src/vm/ArgumentsObject.cpp index b874731655..a9c1f31ec3 100644 --- a/icecat/js/src/vm/ArgumentsObject.cpp +++ b/icecat/js/src/vm/ArgumentsObject.cpp @@ -864,12 +864,6 @@ bool MappedArgumentsObject::obj_defineProperty(JSContext* cx, HandleObject obj, } } - // Ensure the arguments object has RareArgumentsData so that step 8 is - // infallible. - if (isMapped && !argsobj->getOrCreateRareData(cx)) { - return false; - } - // Step 6. NativeDefineProperty will lookup [[Value]] for us. if (defineMapped) { if (!DefineMappedIndex(cx, argsobj, id, &newArgDesc, result)) { @@ -890,15 +884,17 @@ bool MappedArgumentsObject::obj_defineProperty(JSContext* cx, HandleObject obj, if (isMapped) { unsigned arg = unsigned(id.toInt()); if (desc.isAccessorDescriptor()) { - bool ok = argsobj->markElementDeleted(cx, arg); - MOZ_RELEASE_ASSERT(ok, "shouldn't fail after getOrCreateRareData"); + if (!argsobj->markElementDeleted(cx, arg)) { + return false; + } } else { if (desc.hasValue()) { argsobj->setElement(arg, desc.value()); } if (desc.hasWritable() && !desc.writable()) { - bool ok = argsobj->markElementDeleted(cx, arg); - MOZ_RELEASE_ASSERT(ok, "shouldn't fail after getOrCreateRareData"); + if (!argsobj->markElementDeleted(cx, arg)) { + return false; + } } } } @@ -944,7 +940,7 @@ bool js::UnmappedArgSetter(JSContext* cx, HandleObject obj, HandleId id, if (id.isInt()) { unsigned arg = unsigned(id.toInt()); - if (argsobj->isElement(arg)) { + if (arg < argsobj->initialLength()) { argsobj->setElement(arg, v); return result.succeed(); } diff --git a/icecat/js/src/vm/ArrayBufferObject.cpp b/icecat/js/src/vm/ArrayBufferObject.cpp index 4def16af95..09f105044b 100644 --- a/icecat/js/src/vm/ArrayBufferObject.cpp +++ b/icecat/js/src/vm/ArrayBufferObject.cpp @@ -2266,15 +2266,36 @@ ResizableArrayBufferObject::createBufferAndData( size_t sourceByteLength = source->byteLength(); size_t newMaxByteLength = source->maxByteLength(); + if (newByteLength > sourceByteLength) { + // Copy into a larger buffer. + AutoSetNewObjectMetadata metadata(cx); + auto [buffer, toFill] = createBufferAndData( + cx, newByteLength, newMaxByteLength, metadata, nullptr); + if (!buffer) { + return nullptr; + } + + // The `createBufferAndData()` call first zero-initializes the complete + // buffer and then we copy over |sourceByteLength| bytes from |source|. It + // seems prudent to only zero-initialize the trailing bytes of |toFill| + // to avoid writing twice to `toFill[0..newByteLength]`. We don't yet + // implement this optimization, because this method is only called for + // small, inline buffers, so any write optimizations probably won't make + // much of a difference. + std::copy_n(source->dataPointer(), sourceByteLength, toFill); + + return buffer; + } + + // Copy into a smaller or same size buffer. AutoSetNewObjectMetadata metadata(cx); - auto [buffer, toFill] = createBufferAndData( + auto [buffer, toFill] = createBufferAndData( cx, newByteLength, newMaxByteLength, metadata, nullptr); if (!buffer) { return nullptr; } - size_t nbytes = std::min(newByteLength, sourceByteLength); - std::copy_n(source->dataPointer(), nbytes, toFill); + std::uninitialized_copy_n(source->dataPointer(), newByteLength, toFill); return buffer; } diff --git a/icecat/js/src/vm/AsyncFunction.cpp b/icecat/js/src/vm/AsyncFunction.cpp index a348027504..8663ace479 100644 --- a/icecat/js/src/vm/AsyncFunction.cpp +++ b/icecat/js/src/vm/AsyncFunction.cpp @@ -316,8 +316,9 @@ static bool AsyncModuleExecutionRejectedHandler(JSContext* cx, unsigned argc, cx, &func.getExtendedSlot(FunctionExtended::MODULE_SLOT) .toObject() .as()); + AsyncModuleExecutionRejected(cx, module, args.get(0)); args.rval().setUndefined(); - return AsyncModuleExecutionRejected(cx, module, args.get(0)); + return true; } AsyncFunctionGeneratorObject* AsyncFunctionGeneratorObject::create( diff --git a/icecat/js/src/vm/CharacterEncoding.cpp b/icecat/js/src/vm/CharacterEncoding.cpp index 668e8847a2..7ff13f87cc 100644 --- a/icecat/js/src/vm/CharacterEncoding.cpp +++ b/icecat/js/src/vm/CharacterEncoding.cpp @@ -536,14 +536,21 @@ bool GetUTF8AtomizationData(JSContext* cx, const JS::UTF8Chars& utf8, template bool UTF8EqualsChars(const JS::UTF8Chars& utfChars, const CharT* chars) { - static_assert(std::is_same_v || - std::is_same_v); - size_t ind = 0; bool isEqual = true; auto checkEqual = [&isEqual, &ind, chars](char16_t c) -> LoopDisposition { - if (c != char16_t(chars[ind])) { +#ifdef DEBUG + JS::SmallestEncoding encoding = JS::SmallestEncoding::ASCII; + UpdateSmallestEncodingForChar(c, &encoding); + if (std::is_same_v) { + MOZ_ASSERT(encoding <= JS::SmallestEncoding::Latin1); + } else if (!std::is_same_v) { + MOZ_CRASH("Invalid character type in UTF8EqualsChars"); + } +#endif + + if (CharT(c) != chars[ind]) { isEqual = false; return LoopDisposition::Break; } @@ -552,7 +559,7 @@ bool UTF8EqualsChars(const JS::UTF8Chars& utfChars, const CharT* chars) { return LoopDisposition::Continue; }; - // The caller must have already validated UTF-8 well-formedness. + // To get here, you must have checked your work. InflateUTF8ToUTF16(/* cx = */ nullptr, utfChars, checkEqual); diff --git a/icecat/js/src/vm/EnvironmentObject.cpp b/icecat/js/src/vm/EnvironmentObject.cpp index 544fbddd60..7f2b086aa8 100644 --- a/icecat/js/src/vm/EnvironmentObject.cpp +++ b/icecat/js/src/vm/EnvironmentObject.cpp @@ -3081,30 +3081,6 @@ void DebugEnvironments::onPopModule(JSContext* cx, const EnvironmentIter& ei) { onPopGeneric(cx, ei); } -void DebugEnvironments::onPopWasm(JSContext* cx, AbstractFramePtr frame) { - MOZ_ASSERT(frame.isWasmDebugFrame()); - - DebugEnvironments* envs = cx->realm()->debugEnvs(); - if (!envs) { - return; - } - - Rooted instance(cx, frame.wasmInstance()->object()); - uint32_t funcIndex = frame.asWasmDebugFrame()->funcIndex(); - Rooted wasmFunctionScope( - cx, instance->getExistingFunctionScope(funcIndex)); - if (!wasmFunctionScope) { - return; - } - - MissingEnvironmentKey key(frame, wasmFunctionScope); - if (MissingEnvironmentMap::Ptr p = envs->missingEnvs.lookup(key)) { - EnvironmentObject& env = p->value()->environment(); - envs->liveEnvs.remove(&env); - envs->missingEnvs.remove(p); - } -} - void DebugEnvironments::onRealmUnsetIsDebuggee(Realm* realm) { if (DebugEnvironments* envs = realm->debugEnvs()) { envs->proxiedEnvs.clear(); diff --git a/icecat/js/src/vm/EnvironmentObject.h b/icecat/js/src/vm/EnvironmentObject.h index 4af6fc04d8..753da854df 100644 --- a/icecat/js/src/vm/EnvironmentObject.h +++ b/icecat/js/src/vm/EnvironmentObject.h @@ -773,7 +773,7 @@ class ModuleEnvironmentObject : public EnvironmentObject { // `env` may be a DebugEnvironmentProxy, but not a hollow environment. static ModuleEnvironmentObject* find(JSObject* env); - uint32_t firstSyntheticValueSlot() { return RESERVED_SLOTS + 1; } + uint32_t firstSyntheticValueSlot() { return RESERVED_SLOTS; } private: static bool lookupProperty(JSContext* cx, HandleObject obj, HandleId id, @@ -1518,7 +1518,6 @@ class DebugEnvironments { const jsbytecode* pc); static void onPopWith(AbstractFramePtr frame); static void onPopModule(JSContext* cx, const EnvironmentIter& ei); - static void onPopWasm(JSContext* cx, AbstractFramePtr frame); static void onRealmUnsetIsDebuggee(Realm* realm); }; diff --git a/icecat/js/src/vm/Iteration.cpp b/icecat/js/src/vm/Iteration.cpp index 1ed6ab755b..8ae52bd598 100644 --- a/icecat/js/src/vm/Iteration.cpp +++ b/icecat/js/src/vm/Iteration.cpp @@ -42,7 +42,6 @@ #include "vm/Watchtower.h" #include "vm/NativeObject-inl.h" #include "vm/PlainObject-inl.h" // js::PlainObject::createWithTemplate -#include "vm/Shape-inl.h" // js::GetPropertyAttributes using namespace js; @@ -1799,23 +1798,25 @@ static bool SuppressDeletedProperty(JSContext* cx, NativeIterator* ni, // Check whether another property along the prototype chain became // visible as a result of this deletion. - if (obj->hasStaticPrototype()) { - JSObject* proto = obj->staticPrototype(); - if (proto) { - JSAtom* atom = AtomizeString(cx, str); - if (!atom) { - return false; - } - PropertyKey key = AtomToId(atom); - NativeObject* holder = nullptr; - PropertyResult prop; - if (LookupPropertyPure(cx, proto, key, &holder, &prop) && - prop.isFound()) { - JS::PropertyAttributes attrs = GetPropertyAttributes(holder, prop); - if (attrs.enumerable()) { - continue; - } - } + RootedObject proto(cx); + if (!GetPrototype(cx, obj, &proto)) { + return false; + } + if (proto) { + RootedId id(cx); + RootedValue idv(cx, StringValue(*idp)); + if (!PrimitiveValueToId(cx, idv, &id)) { + return false; + } + + Rooted> desc(cx); + RootedObject holder(cx); + if (!GetPropertyDescriptor(cx, proto, id, &desc, &holder)) { + return false; + } + + if (desc.isSome() && desc->enumerable()) { + continue; } } diff --git a/icecat/js/src/vm/MatchPairs.h b/icecat/js/src/vm/MatchPairs.h index 61c9931b26..6bb60b46dd 100644 --- a/icecat/js/src/vm/MatchPairs.h +++ b/icecat/js/src/vm/MatchPairs.h @@ -72,10 +72,7 @@ class MatchPairs { friend class RegExpShared; friend class RegExpStatics; - void forgetArray() { - pairs_ = nullptr; - pairCount_ = 0; - } + void forgetArray() { pairs_ = nullptr; } public: void checkAgainst(size_t inputLength) { diff --git a/icecat/js/src/vm/Modules.cpp b/icecat/js/src/vm/Modules.cpp index 64cbe3fbab..bc7cb5bb40 100644 --- a/icecat/js/src/vm/Modules.cpp +++ b/icecat/js/src/vm/Modules.cpp @@ -1366,9 +1366,8 @@ static bool InnerModuleLinking(JSContext* cx, Handle module, size_t* indexOut) { // Step 1. If module is not a Cyclic Module Record, then if (!module->hasCyclicModuleFields()) { - // Step 1.a. Perform ? module.Link(). - // (Skipped as we have already created the environment for these modules). - // Step 1.b. Return index. + // Step 1.a. Perform ? module.Link(). (Skipped) + // Step 2.b. Return index. *indexOut = index; return true; } @@ -1973,9 +1972,7 @@ static void RejectExecutionWithPendingException(JSContext* cx, std::ignore = cx->getPendingException(&exception); } cx->clearPendingException(); - if (!AsyncModuleExecutionRejected(cx, module, exception)) { - MOZ_ASSERT(cx->isThrowingOverRecursed()); - } + AsyncModuleExecutionRejected(cx, module, exception); } // https://tc39.es/ecma262/#sec-async-module-execution-fulfilled @@ -2114,30 +2111,25 @@ void js::AsyncModuleExecutionFulfilled(JSContext* cx, // https://tc39.es/ecma262/#sec-async-module-execution-rejected // ES2023 16.2.1.5.2.5 AsyncModuleExecutionRejected -bool js::AsyncModuleExecutionRejected(JSContext* cx, +void js::AsyncModuleExecutionRejected(JSContext* cx, Handle module, HandleValue error) { - AutoCheckRecursionLimit recursion(cx); - if (!recursion.check(cx)) { - return false; - } - // Step 1. If module.[[Status]] is evaluated, then: if (module->status() == ModuleStatus::Evaluated) { // Step 1.a. Assert: module.[[EvaluationError]] is not empty MOZ_ASSERT(module->hadEvaluationError()); // Step 1.b. Return unused. - return true; + return; } // Step 2. Assert: module.[[Status]] is evaluating-async. MOZ_ASSERT(module->status() == ModuleStatus::EvaluatingAsync); - // Step 3. Assert: module.[[AsyncEvaluationOrder]] is an integer. + // Step 3. Assert: module.[[AsyncEvaluation]] is true. MOZ_ASSERT(module->isAsyncEvaluating()); - // Step 4. Assert: module.[[EvaluationError]] is empty. + // Step 4. 4. Assert: module.[[EvaluationError]] is empty. MOZ_ASSERT(!module->hadEvaluationError()); ModuleObject::onTopLevelEvaluationFinished(module); @@ -2148,15 +2140,25 @@ bool js::AsyncModuleExecutionRejected(JSContext* cx, // Step 6. Set module.[[Status]] to evaluated. MOZ_ASSERT(module->status() == ModuleStatus::Evaluated); - // Step 7. Set module.[[AsyncEvaluationOrder]] to done. module->clearAsyncEvaluatingPostOrder(); - // Step 9. If module.[[TopLevelCapability]] is not empty, then: + // Step 7. For each Cyclic Module Record m of module.[[AsyncParentModules]], + // do: + Rooted parents(cx, module->asyncParentModules()); + Rooted parent(cx); + for (uint32_t i = 0; i < parents->length(); i++) { + parent = &parents->get(i).toObject().as(); + + // Step 7.a. Perform AsyncModuleExecutionRejected(m, error). + AsyncModuleExecutionRejected(cx, parent, error); + } + + // Step 8. If module.[[TopLevelCapability]] is not empty, then: if (module->hasTopLevelCapability()) { - // Step 9.a. Assert: module.[[CycleRoot]] is module. + // Step 8.a. Assert: module.[[CycleRoot]] is module. MOZ_ASSERT(module->getCycleRoot() == module); - // Step 9.b. Perform ! Call(module.[[TopLevelCapability]].[[Reject]], + // Step 8.b. Perform ! Call(module.[[TopLevelCapability]].[[Reject]], // undefined, error). if (!ModuleObject::topLevelCapabilityReject(cx, module, error)) { // If Reject fails, there's nothing more we can do here. @@ -2164,19 +2166,5 @@ bool js::AsyncModuleExecutionRejected(JSContext* cx, } } - // Step 10. For each Cyclic Module Record m of module.[[AsyncParentModules]], - // do: - Rooted parents(cx, module->asyncParentModules()); - Rooted parent(cx); - for (uint32_t i = 0; i < parents->length(); i++) { - parent = &parents->get(i).toObject().as(); - - // Step 10.a. Perform AsyncModuleExecutionRejected(m, error). - if (!AsyncModuleExecutionRejected(cx, parent, error)) { - return false; - } - } - - // Step 11. Return unused. - return true; + // Step 9. Return unused. } diff --git a/icecat/js/src/vm/Modules.h b/icecat/js/src/vm/Modules.h index 76071f3799..d59c9db552 100644 --- a/icecat/js/src/vm/Modules.h +++ b/icecat/js/src/vm/Modules.h @@ -49,9 +49,7 @@ ModuleNamespaceObject* GetOrCreateModuleNamespace(JSContext* cx, void AsyncModuleExecutionFulfilled(JSContext* cx, Handle module); -// This function recusively calls AsyncModuleExecutionRejected on async parent -// modules. It returns false if the stack recusion limit is exceeded. -bool AsyncModuleExecutionRejected(JSContext* cx, Handle module, +void AsyncModuleExecutionRejected(JSContext* cx, Handle module, HandleValue error); } // namespace js diff --git a/icecat/js/src/vm/PortableBaselineInterpret.cpp b/icecat/js/src/vm/PortableBaselineInterpret.cpp index f48821374a..2ced517408 100644 --- a/icecat/js/src/vm/PortableBaselineInterpret.cpp +++ b/icecat/js/src/vm/PortableBaselineInterpret.cpp @@ -2355,11 +2355,8 @@ uint64_t ICInterpretOps(uint64_t arg0, uint64_t arg1, ICStub* stub, ReservedRooted calleeObj(&ctx.state.obj0, callee); ReservedRooted newTargetRooted( &ctx.state.obj1, &origArgs[0].asValue().toObject()); - ReservedRooted result(&ctx.state.value0, - MagicValue(JS_IS_CONSTRUCTING)); - HandleFunction fun = calleeObj.as(); - if (!js::CreateThis(cx, fun, newTargetRooted, GenericObject, - &result)) { + ReservedRooted result(&ctx.state.value0); + if (!CreateThisFromIC(cx, calleeObj, newTargetRooted, &result)) { ctx.error = PBIResult::Error; return IC_ERROR_SENTINEL(); } diff --git a/icecat/js/src/vm/Realm.cpp b/icecat/js/src/vm/Realm.cpp index dd52a38041..8604f7dd26 100644 --- a/icecat/js/src/vm/Realm.cpp +++ b/icecat/js/src/vm/Realm.cpp @@ -250,12 +250,6 @@ void Realm::traceGlobalData(JSTracer* trc) { DebugAPI::traceFromRealm(trc, this); } -void Realm::traceGlobalRoot(JSTracer* trc, const char* name) { - if (global_) { - TraceRoot(trc, global_.unbarrieredAddress(), name); - } -} - void ObjectRealm::trace(JSTracer* trc) { if (objectMetadataTable) { objectMetadataTable->trace(trc); @@ -278,8 +272,8 @@ void Realm::traceRoots(JSTracer* trc, // // If a realm is on-stack, we mark its global so that JSContext::global() // remains valid. - if (shouldTraceGlobal()) { - traceGlobalRoot(trc, "on-stack realm global"); + if (shouldTraceGlobal() && global_) { + TraceRoot(trc, global_.unbarrieredAddress(), "on-stack realm global"); } // If the realm is still being initialized we set a flag so that it doesn't @@ -635,16 +629,16 @@ void AutoSetNewObjectMetadata::setPendingMetadata() { (void)SetNewObjectMetadata(cx_, obj); } -JS_PUBLIC_API void gc::TraceRealmRoot(JSTracer* trc, JS::Realm* realm, - const char* name) { - // Trace the realm's global object to keep the realm alive. +JS_PUBLIC_API void gc::TraceRealm(JSTracer* trc, JS::Realm* realm, + const char* name) { + // The way GC works with compartments is basically incomprehensible. + // For Realms, what we want is very simple: each Realm has a strong + // reference to its GlobalObject, and vice versa. // - // Note: this is called for Rooted. If a realm has been entered with - // AutoRealm, the global object is traced in Realm::traceRoots. - MOZ_RELEASE_ASSERT(realm->hasLiveGlobal(), - "we need to have a global to keep the realm alive"); - gc::AssertRootMarkingPhase(trc); - realm->traceGlobalRoot(trc, "rooted realm"); + // Here we simply trace our side of that edge. During GC, + // GCRuntime::traceRuntimeCommon() marks all other realm roots, for + // all realms. + realm->traceGlobalData(trc); } JS_PUBLIC_API JS::Realm* JS::GetCurrentRealmOrNull(JSContext* cx) { diff --git a/icecat/js/src/vm/Realm.h b/icecat/js/src/vm/Realm.h index 37a257ca2f..f6d4a6e257 100644 --- a/icecat/js/src/vm/Realm.h +++ b/icecat/js/src/vm/Realm.h @@ -542,8 +542,6 @@ class JS::Realm : public JS::shadow::Realm { */ void traceGlobalData(JSTracer* trc); - void traceGlobalRoot(JSTracer* trc, const char* name); - void traceWeakGlobalEdge(JSTracer* trc); /* diff --git a/icecat/js/src/vm/RegExpStatics.h b/icecat/js/src/vm/RegExpStatics.h index a43393b993..f34ae2dc9a 100644 --- a/icecat/js/src/vm/RegExpStatics.h +++ b/icecat/js/src/vm/RegExpStatics.h @@ -248,7 +248,6 @@ inline bool RegExpStatics::updateFromMatchPairs(JSContext* cx, if (!matches.initArrayFrom(newPairs)) { ReportOutOfMemory(cx); - clear(); return false; } diff --git a/icecat/js/src/vm/Scope.cpp b/icecat/js/src/vm/Scope.cpp index b1b66cca5f..09bceb8cdd 100644 --- a/icecat/js/src/vm/Scope.cpp +++ b/icecat/js/src/vm/Scope.cpp @@ -161,22 +161,11 @@ SharedShape* js::CreateEnvironmentShapeForSyntheticModule( RootedId id(cx); uint32_t slotIndex = numSlots; - - auto addProperty = [&](PropertyName* name) { - id = NameToId(name); - return SharedPropMap::addPropertyWithKnownSlot( - cx, cls, &map, &mapLength, id, propFlags, slotIndex, &objectFlags); - }; - - // Add internal *namespace* property. - if (!addProperty(cx->names().star_namespace_star_)) { - return nullptr; - } - slotIndex++; - - // Add synthetic exports. for (JSAtom* exportName : module->syntheticExportNames()) { - if (!addProperty(exportName->asPropertyName())) { + id = NameToId(exportName->asPropertyName()); + if (!SharedPropMap::addPropertyWithKnownSlot(cx, cls, &map, &mapLength, id, + propFlags, slotIndex, + &objectFlags)) { return nullptr; } slotIndex++; diff --git a/icecat/js/src/vm/StructuredClone.cpp b/icecat/js/src/vm/StructuredClone.cpp index 2d60326be3..6cc51cd3a3 100644 --- a/icecat/js/src/vm/StructuredClone.cpp +++ b/icecat/js/src/vm/StructuredClone.cpp @@ -1582,7 +1582,6 @@ bool JSStructuredCloneWriter::writeSharedWasmMemory(HandleObject obj) { Rooted memoryObj(context(), &obj->unwrapAs()); - JSAutoRealm ar(context(), memoryObj); Rooted sab( context(), &memoryObj->buffer().as()); @@ -2565,10 +2564,6 @@ JSStructuredCloneReader::JSStructuredCloneReader( callbacks(cb), closure(cbClosure), gcHeap(in.context()) { - // Readers should never enable SAB for a DifferentProcess scope. - MOZ_RELEASE_ASSERT(!(scope == JS::StructuredCloneScope::DifferentProcess && - cloneDataPolicy.areSharedMemoryObjectsAllowed())); - // Avoid the need to bounds check by keeping a never-matching element at the // base of the `objState` stack. This append() will always succeed because // the objState vector has a nonzero MinInlineCapacity. @@ -2990,12 +2985,6 @@ bool JSStructuredCloneReader::readSharedWasmMemory(uint32_t nbytes, if (!startRead(&isHuge)) { return false; } - if (!isHuge.isBoolean()) { - JS_ReportErrorNumberASCII(context(), GetErrorMessage, nullptr, - JSMSG_SC_BAD_SERIALIZED_DATA, - "isHuge must be a boolean"); - return false; - } // Read the SharedArrayBuffer object. RootedValue payload(cx); @@ -3455,12 +3444,6 @@ bool JSStructuredCloneReader::readHeader() { return false; } - if (allowedScope == JS::StructuredCloneScope::DifferentProcess) { - MOZ_RELEASE_ASSERT( - !cloneDataPolicy.areIntraClusterClonableSharedObjectsAllowed()); - MOZ_RELEASE_ASSERT(!cloneDataPolicy.areSharedMemoryObjectsAllowed()); - } - return true; } @@ -3814,13 +3797,7 @@ JSObject* JSStructuredCloneReader::readErrorHeader(uint32_t type) { if (!startRead(&val)) { return nullptr; } - if (!val.isBoolean()) { - JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, - JSMSG_SC_BAD_SERIALIZED_DATA, - "hasCause must be a boolean"); - return nullptr; - } - bool hasCause = val.toBoolean(); + bool hasCause = ToBoolean(val); Rooted> cause(cx, mozilla::Nothing()); if (hasCause) { cause = mozilla::Some(BooleanValue(true)); @@ -3886,12 +3863,6 @@ bool JSStructuredCloneReader::readErrorFields(Handle errorObj, } if (errorObj->type() == JSEXN_AGGREGATEERR) { - if (!errors.isObject() || !errors.toObject().is()) { - JS_ReportErrorNumberASCII( - cx, GetErrorMessage, nullptr, JSMSG_SC_BAD_SERIALIZED_DATA, - "AggregateError 'errors' field must be an Array"); - return false; - } if (!DefineDataProperty(context(), errorObj, cx->names().errors, errors, 0)) { return false; diff --git a/icecat/js/src/wasm/WasmBaselineCompile.cpp b/icecat/js/src/wasm/WasmBaselineCompile.cpp index 6db1d5868e..fe3c71232e 100644 --- a/icecat/js/src/wasm/WasmBaselineCompile.cpp +++ b/icecat/js/src/wasm/WasmBaselineCompile.cpp @@ -8816,25 +8816,27 @@ bool BaseCompiler::emitArrayFill() { freePtr(RegPtr(PreBarrierReg)); } - // Perform the fill loop using `numElements` as the loop variable, counting - // down to zero. + // Perform an initialization loop using `numElements` as the loop variable, + // starting at `numElements` and counting down to zero. Label done; Label loop; + // Skip initialization if numElements = 0 masm.branch32(Assembler::Equal, numElements, Imm32(0), &done); - masm.bind(&loop); + + // Move to the next element masm.sub32(Imm32(1), numElements); // Assign value to rdata[numElements]. All registers are preserved. if (!emitGcArraySet(rp, rdata, numElements, arrayType, value, - PreBarrierKind::Normal)) { + PreBarrierKind::None)) { return false; } + // Loop back if there are still elements to initialize masm.branch32(Assembler::NotEqual, numElements, Imm32(0), &loop); masm.bind(&done); - // Clean up freePtr(rdata); freeRef(rp); freeI32(numElements); diff --git a/icecat/js/src/wasm/WasmInstance.cpp b/icecat/js/src/wasm/WasmInstance.cpp index 78bf6949f7..1c0ae2af0c 100644 --- a/icecat/js/src/wasm/WasmInstance.cpp +++ b/icecat/js/src/wasm/WasmInstance.cpp @@ -393,18 +393,18 @@ static int32_t PerformWait(Instance* instance, uint32_t memoryIndex, PtrT byteOffset, ValT value, int64_t timeout_ns) { JSContext* cx = instance->cx(); - if (byteOffset & (sizeof(ValT) - 1)) { - ReportTrapError(cx, JSMSG_WASM_UNALIGNED_ACCESS); - return -1; - } - if (!instance->memory(memoryIndex)->isShared()) { ReportTrapError(cx, JSMSG_WASM_NONSHARED_WAIT); return -1; } - size_t memSizeBytes = instance->memory(memoryIndex)->volatileMemoryLength(); - if (memSizeBytes < sizeof(ValT) || byteOffset > memSizeBytes - sizeof(ValT)) { + if (byteOffset & (sizeof(ValT) - 1)) { + ReportTrapError(cx, JSMSG_WASM_UNALIGNED_ACCESS); + return -1; + } + + if (byteOffset + sizeof(ValT) > + instance->memory(memoryIndex)->volatileMemoryLength()) { ReportTrapError(cx, JSMSG_WASM_OUT_OF_BOUNDS); return -1; } @@ -468,14 +468,16 @@ static int32_t PerformWake(Instance* instance, PtrT byteOffset, int32_t count, uint32_t memoryIndex) { JSContext* cx = instance->cx(); + // The alignment guard is not in the wasm spec as of 2017-11-02, but is + // considered likely to appear, as 4-byte alignment is required for WAKE by + // the spec's validation algorithm. + if (byteOffset & 3) { ReportTrapError(cx, JSMSG_WASM_UNALIGNED_ACCESS); return -1; } - size_t memSizeBytes = instance->memory(memoryIndex)->volatileMemoryLength(); - if (memSizeBytes < sizeof(int32_t) || - byteOffset > memSizeBytes - sizeof(int32_t)) { + if (byteOffset >= instance->memory(memoryIndex)->volatileMemoryLength()) { ReportTrapError(cx, JSMSG_WASM_OUT_OF_BOUNDS); return -1; } diff --git a/icecat/js/src/wasm/WasmJS.cpp b/icecat/js/src/wasm/WasmJS.cpp index f807b22c54..d2631872b6 100644 --- a/icecat/js/src/wasm/WasmJS.cpp +++ b/icecat/js/src/wasm/WasmJS.cpp @@ -2009,15 +2009,6 @@ JSObject& WasmInstanceObject::exportsObj() const { return getReservedSlot(EXPORTS_OBJ_SLOT).toObject(); } -WasmFunctionScope* WasmInstanceObject::getExistingFunctionScope( - uint32_t funcIndex) const { - if (auto p = scopes().asWasmFunctionScopeMap().lookup(funcIndex)) { - return p->value(); - } - - return nullptr; -} - WasmInstanceObject::UnspecifiedScopeMap& WasmInstanceObject::scopes() const { return *(UnspecifiedScopeMap*)(getReservedSlot(SCOPES_SLOT).toPrivate()); } diff --git a/icecat/js/src/wasm/WasmJS.h b/icecat/js/src/wasm/WasmJS.h index 8cba54b416..3bcdb92713 100644 --- a/icecat/js/src/wasm/WasmJS.h +++ b/icecat/js/src/wasm/WasmJS.h @@ -223,7 +223,6 @@ class WasmInstanceObject : public NativeObject { wasm::Instance& instance() const; JSObject& exportsObj() const; - WasmFunctionScope* getExistingFunctionScope(uint32_t funcIndex) const; [[nodiscard]] static bool getExportedFunction( JSContext* cx, Handle instanceObj, diff --git a/icecat/js/xpconnect/loader/ScriptPreloader.cpp b/icecat/js/xpconnect/loader/ScriptPreloader.cpp index 5be75e2c33..64bf9e7973 100644 --- a/icecat/js/xpconnect/loader/ScriptPreloader.cpp +++ b/icecat/js/xpconnect/loader/ScriptPreloader.cpp @@ -673,36 +673,6 @@ void ScriptPreloader::PrepareCacheWrite() { PrepareCacheWriteInternal(); } -// A struct to hold reference to a CachedStencil and the snapshot of the -// CachedStencil::mLoadTime field. -// CachedStencil::mLoadTime field can be modified concurrently, and we need -// to create a snapshot, in order to sort scripts. -struct CachedStencilRefAndTime { - using CachedStencil = ScriptPreloader::CachedStencil; - CachedStencil* mStencil; - TimeStamp mLoadTime; - - explicit CachedStencilRefAndTime(CachedStencil* aStencil) - : mStencil(aStencil), mLoadTime(aStencil->mLoadTime) {} - - // For use with nsTArray::Sort. - // - // Orders scripts by script load time, so that scripts which are needed - // earlier are stored earlier, and scripts needed at approximately the - // same time are stored approximately contiguously. - struct Comparator { - bool Equals(const CachedStencilRefAndTime& a, - const CachedStencilRefAndTime& b) const { - return a.mLoadTime == b.mLoadTime; - } - - bool LessThan(const CachedStencilRefAndTime& a, - const CachedStencilRefAndTime& b) const { - return a.mLoadTime < b.mLoadTime; - } - }; -} JS_HAZ_NON_GC_POINTER; - // Writes out a script cache file for the scripts accessed during early // startup in this session. The cache file is a little-endian binary file with // the following format: @@ -756,20 +726,19 @@ Result ScriptPreloader::WriteCache() { mMonitor.AssertNotCurrentThreadOwns(); MonitorAutoLock mal(mMonitor); - nsTArray scriptRefs; + nsTArray scripts; for (auto& script : IterHash(mScripts, Match())) { - scriptRefs.AppendElement(CachedStencilRefAndTime(script)); + scripts.AppendElement(script); } // Sort scripts by load time, with async loaded scripts before sync scripts. // Since async scripts are always loaded immediately at startup, it helps to // have them stored contiguously. - scriptRefs.Sort(CachedStencilRefAndTime::Comparator()); + scripts.Sort(CachedStencil::Comparator()); OutputBuffer buf; size_t offset = 0; - for (auto& scriptRef : scriptRefs) { - auto* script = scriptRef.mStencil; + for (auto script : scripts) { script->mOffset = offset; MOZ_DIAGNOSTIC_ASSERT( JS::IsTranscodingBytecodeOffsetAligned(script->mOffset)); @@ -799,8 +768,7 @@ Result ScriptPreloader::WriteCache() { written += padding; } - for (auto& scriptRef : scriptRefs) { - auto* script = scriptRef.mStencil; + for (auto script : scripts) { MOZ_DIAGNOSTIC_ASSERT(JS::IsTranscodingBytecodeOffsetAligned(written)); MOZ_TRY(Write(fd, script->Range().begin().get(), script->mSize)); diff --git a/icecat/js/xpconnect/loader/ScriptPreloader.h b/icecat/js/xpconnect/loader/ScriptPreloader.h index d73d7fe128..fa40c2dc6c 100644 --- a/icecat/js/xpconnect/loader/ScriptPreloader.h +++ b/icecat/js/xpconnect/loader/ScriptPreloader.h @@ -67,8 +67,6 @@ struct Matcher { using namespace mozilla::loader; -struct CachedStencilRefAndTime; - class ScriptPreloader : public nsIObserver, public nsIMemoryReporter, public nsIRunnable, @@ -218,6 +216,21 @@ class ScriptPreloader : public nsIObserver, : ScriptStatus::Saved; } + // For use with nsTArray::Sort. + // + // Orders scripts by script load time, so that scripts which are needed + // earlier are stored earlier, and scripts needed at approximately the + // same time are stored approximately contiguously. + struct Comparator { + bool Equals(const CachedStencil* a, const CachedStencil* b) const { + return a->mLoadTime == b->mLoadTime; + } + + bool LessThan(const CachedStencil* a, const CachedStencil* b) const { + return a->mLoadTime < b->mLoadTime; + } + }; + struct StatusMatcher final : public Matcher { explicit StatusMatcher(ScriptStatus status) : mStatus(status) {} @@ -375,8 +388,6 @@ class ScriptPreloader : public nsIObserver, MaybeOneOf> mXDRData; } JS_HAZ_NON_GC_POINTER; - friend struct CachedStencilRefAndTime; - template static Matcher* Match() { static CachedStencil::StatusMatcher matcher{status}; diff --git a/icecat/js/xpconnect/src/ExportHelpers.cpp b/icecat/js/xpconnect/src/ExportHelpers.cpp index 01201027fb..a59e9087ec 100644 --- a/icecat/js/xpconnect/src/ExportHelpers.cpp +++ b/icecat/js/xpconnect/src/ExportHelpers.cpp @@ -402,7 +402,7 @@ bool NewFunctionForwarder(JSContext* cx, HandleId idArg, HandleObject callable, FunctionForwarderOptions& options, MutableHandleValue vp) { RootedId id(cx, idArg); - if (!id.isString()) { + if (id.isVoid()) { id = GetJSIDByIndex(cx, XPCJSContext::IDX_EMPTYSTRING); } @@ -501,7 +501,7 @@ bool ExportFunction(JSContext* cx, HandleValue vfunction, HandleValue vscope, } } if (!funName) { - funName = JS_GetEmptyString(cx); + funName = JS_AtomizeAndPinString(cx, ""); } JS_MarkCrossZoneIdValue(cx, StringValue(funName)); @@ -511,11 +511,7 @@ bool ExportFunction(JSContext* cx, HandleValue vfunction, HandleValue vscope, } else { JS_MarkCrossZoneId(cx, id); } - - if (!id.isString()) { - JS_ReportErrorASCII(cx, "defineAs must be a string"); - return false; - } + MOZ_ASSERT(id.isString()); // The function forwarder will live in the target compartment. Since // this function will be referenced from its private slot, to avoid a diff --git a/icecat/js/xpconnect/src/XPCJSRuntime.cpp b/icecat/js/xpconnect/src/XPCJSRuntime.cpp index d8499425f8..8dc1bba0d5 100644 --- a/icecat/js/xpconnect/src/XPCJSRuntime.cpp +++ b/icecat/js/xpconnect/src/XPCJSRuntime.cpp @@ -956,8 +956,6 @@ void XPCJSRuntime::WeakPointerZonesCallback(JSTracer* trc, void* data) { self->mWrappedJSMap->UpdateWeakPointersAfterGC(trc); self->mUAWidgetScopeMap.traceWeak(trc); - - BrowsingContext::SweepWindowProxies(trc); } /* static */ diff --git a/icecat/layout/base/PresShell.cpp b/icecat/layout/base/PresShell.cpp index 1fc375ce65..1922382f92 100644 --- a/icecat/layout/base/PresShell.cpp +++ b/icecat/layout/base/PresShell.cpp @@ -5167,9 +5167,6 @@ UniquePtr PresShell::CreateRangePaintInfo( // XXX deal with frame being null due to display:contents for (; frame; frame = nsLayoutUtils::GetNextContinuationOrIBSplitSibling(frame)) { - if (frame->HasAnyStateBits(NS_FRAME_IS_NONDISPLAY)) { - continue; - } info->mBuilder.SetVisibleRect(frame->InkOverflowRect()); info->mBuilder.SetDirtyRect(frame->InkOverflowRect()); frame->BuildDisplayListForStackingContext(&info->mBuilder, &info->mList); @@ -7867,13 +7864,17 @@ bool PresShell::EventHandler::MaybeFlushPendingNotifications( switch (aGUIEvent->mMessage) { case eMouseDown: - case eMouseUp: // XXX How about eContextMenu? - { - if (NS_WARN_IF(!mPresShell->GetPresContext())) { + case eMouseUp: { + RefPtr presContext = mPresShell->GetPresContext(); + if (NS_WARN_IF(!presContext)) { return false; } + uint64_t framesConstructedCount = presContext->FramesConstructedCount(); + uint64_t framesReflowedCount = presContext->FramesReflowedCount(); + MOZ_KnownLive(mPresShell)->FlushPendingNotifications(FlushType::Layout); - return true; + return framesConstructedCount != presContext->FramesConstructedCount() || + framesReflowedCount != presContext->FramesReflowedCount(); } default: return false; @@ -7943,19 +7944,18 @@ nsIFrame* PresShell::EventHandler::GetFrameToHandleNonTouchEvent( // If target is in a child document, we've not flushed its layout yet. PresShell* childPresShell = targetFrame->PresShell(); EventHandler childEventHandler(*childPresShell); - const AutoWeakFrame targetFrameWeak(targetFrame); - const DebugOnly flushedPendingNotifications = + bool layoutChanged = childEventHandler.MaybeFlushPendingNotifications(aGUIEvent); if (!aWeakRootFrameToHandleEvent.IsAlive()) { // Stop handling the event if the root frame to handle event is destroyed // by the reflow. (but why?) return nullptr; } - if (targetFrameWeak.IsAlive()) { - // If the target frame is alive, we don't need to recompute the target. + if (!layoutChanged) { + // If the layout in the child PresShell hasn't been changed, we don't + // need to recompute the target. return targetFrame; } - MOZ_ASSERT(flushedPendingNotifications); // Finally, we need to recompute the target with the latest layout. targetFrame = diff --git a/icecat/layout/base/PresShell.h b/icecat/layout/base/PresShell.h index 6f7443e16f..d238fe5841 100644 --- a/icecat/layout/base/PresShell.h +++ b/icecat/layout/base/PresShell.h @@ -2331,10 +2331,11 @@ class PresShell final : public nsStubDocumentObserver, * * @param aGUIEvent The handling event. * @return true if this actually flushes pending + * layout and that has caused changing the * layout. */ - MOZ_CAN_RUN_SCRIPT bool MaybeFlushPendingNotifications( - WidgetGUIEvent* aGUIEvent); + MOZ_CAN_RUN_SCRIPT + bool MaybeFlushPendingNotifications(WidgetGUIEvent* aGUIEvent); /** * GetFrameToHandleNonTouchEvent() returns a frame to handle the event. diff --git a/icecat/layout/base/tests/mochitest.toml b/icecat/layout/base/tests/mochitest.toml index d306593b7b..b2513af3e8 100644 --- a/icecat/layout/base/tests/mochitest.toml +++ b/icecat/layout/base/tests/mochitest.toml @@ -273,6 +273,8 @@ support-files = [ "file_getBoxQuads_convertPointRectQuad_frame2.html", ] +["test_getClientRects_emptytext.html"] + ["test_interactive_widget.html"] run-if = ["os == 'android'"] diff --git a/icecat/layout/base/tests/test_getClientRects_emptytext.html b/icecat/layout/base/tests/test_getClientRects_emptytext.html new file mode 100644 index 0000000000..3717beb0ae --- /dev/null +++ b/icecat/layout/base/tests/test_getClientRects_emptytext.html @@ -0,0 +1,26 @@ + + + + + + + + + +

+ +
+ + + diff --git a/icecat/layout/forms/nsRangeFrame.cpp b/icecat/layout/forms/nsRangeFrame.cpp index 7a462f7954..0fa386835f 100644 --- a/icecat/layout/forms/nsRangeFrame.cpp +++ b/icecat/layout/forms/nsRangeFrame.cpp @@ -429,9 +429,13 @@ nsTArray nsRangeFrame::TickMarks() { } auto min = input.GetMinimum(); auto max = input.GetMaximum(); - for (nsINode* n = list->GetFirstChild(); n; n = n->GetNextNode(list)) { - auto* option = HTMLOptionElement::FromNode(n); - if (!option || option->Disabled()) { + auto* options = list->Options(); + nsAutoString label; + for (uint32_t i = 0; i < options->Length(); ++i) { + auto* item = options->Item(i); + auto* option = HTMLOptionElement::FromNode(item); + MOZ_ASSERT(option); + if (option->Disabled()) { continue; } nsAutoString str; diff --git a/icecat/layout/forms/nsTextControlFrame.cpp b/icecat/layout/forms/nsTextControlFrame.cpp index c51dbf321b..4b3721d5e5 100644 --- a/icecat/layout/forms/nsTextControlFrame.cpp +++ b/icecat/layout/forms/nsTextControlFrame.cpp @@ -754,7 +754,7 @@ void nsTextControlFrame::OnFocus() { return; } - RefPtr presShell = PresShell(); + mozilla::PresShell* presShell = PresShell(); RefPtr caret = presShell->GetCaret(); if (!caret) { return; @@ -776,9 +776,6 @@ void nsTextControlFrame::OnFocus() { if (!docSel->IsCollapsed()) { docSel->RemoveAllRanges(IgnoreErrors()); } - if (presShell->IsDestroying()) { - return; - } // If the focus moved to a text control during text selection by pointer // device, stop extending the selection. diff --git a/icecat/layout/generic/ScrollContainerFrame.cpp b/icecat/layout/generic/ScrollContainerFrame.cpp index 0a3e271c27..a6ae123a94 100644 --- a/icecat/layout/generic/ScrollContainerFrame.cpp +++ b/icecat/layout/generic/ScrollContainerFrame.cpp @@ -2457,12 +2457,9 @@ void ScrollContainerFrame::ScrollToWithOrigin(nsPoint aScrollPosition, if (aParams.IsInstant()) { // Asynchronous scrolling is not allowed, so we'll kill any existing // async-scrolling process and do an instant scroll. - AutoWeakFrame weakFrame(this); CompleteAsyncScroll(GetScrollPosition(), range, std::move(snapTargetIds), aParams.mOrigin); - if (weakFrame.IsAlive()) { - mApzSmoothScrollDestination = Nothing(); - } + mApzSmoothScrollDestination = Nothing(); return; } diff --git a/icecat/layout/generic/ScrollbarActivity.cpp b/icecat/layout/generic/ScrollbarActivity.cpp index 3fbed40a06..1742f991e1 100644 --- a/icecat/layout/generic/ScrollbarActivity.cpp +++ b/icecat/layout/generic/ScrollbarActivity.cpp @@ -37,7 +37,6 @@ void ScrollbarActivity::Destroy() { } void ScrollbarActivity::ActivityOccurred() { - nsAutoScriptBlocker scriptBlocker; ActivityStarted(); ActivityStopped(); } diff --git a/icecat/layout/generic/nsBlockFrame.cpp b/icecat/layout/generic/nsBlockFrame.cpp index 2b6af4f3ba..da9935c1bd 100644 --- a/icecat/layout/generic/nsBlockFrame.cpp +++ b/icecat/layout/generic/nsBlockFrame.cpp @@ -1532,9 +1532,7 @@ void nsBlockFrame::Reflow(nsPresContext* aPresContext, ReflowOutput& aMetrics, // will take effect for the current line list. Only to be used when there are // enough lines that the clamp will apply. auto getClampPosition = [&](uint32_t aClampCount) -> BalanceTarget { - if (NS_WARN_IF(aClampCount >= mLines.size())) { - return BalanceTarget{}; - } + MOZ_ASSERT(aClampCount < mLines.size()); auto iter = mLines.begin(); for (uint32_t i = 0; i < aClampCount; i++) { ++iter; diff --git a/icecat/layout/generic/nsFrameSelection.cpp b/icecat/layout/generic/nsFrameSelection.cpp index 9fbd71a0dc..e5a78f86f8 100644 --- a/icecat/layout/generic/nsFrameSelection.cpp +++ b/icecat/layout/generic/nsFrameSelection.cpp @@ -1487,7 +1487,7 @@ nsresult nsFrameSelection::TakeFocus(nsIContent& aNewFocus, } case FocusMode::kExtendSelection: { // Now update the range list: - nsCOMPtr inclusiveTableCellAncestor = + nsINode* inclusiveTableCellAncestor = GetClosestInclusiveTableCellAncestor(&aNewFocus); if (mTableSelection.mClosestInclusiveTableCellAncestor && inclusiveTableCellAncestor && @@ -1641,7 +1641,8 @@ void nsFrameSelection::AddHighlightSelection( } } -void nsFrameSelection::RepaintHighlightSelection(nsAtom* aHighlightName) { +void nsFrameSelection::RepaintHighlightSelection( + nsAtom* aHighlightName) { if (auto iter = std::find_if(mHighlightSelections.begin(), mHighlightSelections.end(), [&aHighlightName](auto const& aElm) { @@ -1816,84 +1817,76 @@ nsresult nsFrameSelection::PageMove(bool aForward, bool aExtend, SelectionIntoView aSelectionIntoView) { MOZ_ASSERT(aFrame); - if (MOZ_UNLIKELY(!IsAvailable())) { - return NS_OK; - } - // expected behavior for PageMove is to scroll AND move the caret // and remain relative position of the caret in view. see Bug 4302. - // find out where the caret is. - // we should know mDesiredCaretPos.mValue value of nsFrameSelection, but I - // haven't seen that behavior in other windows applications yet. - MOZ_DIAGNOSTIC_ASSERT(GetSelection(mozilla::SelectionType::eNormal)); - const OwningNonNull selection = NormalSelection(); - // Get the scroll container frame. If aFrame is not scrollable, this is // nullptr. ScrollContainerFrame* scrollContainerFrame = aFrame->GetScrollTargetFrame(); - const AutoWeakFrame scrollContainerFrameWeak(scrollContainerFrame); + // Get the scrolled frame. If aFrame is not scrollable, this is aFrame + // itself. + nsIFrame* scrolledFrame = + scrollContainerFrame ? scrollContainerFrame->GetScrolledFrame() : aFrame; + if (!scrolledFrame) { + return NS_OK; + } - bool scrolledFrameIsInLimiter = true; - const auto offsets = [&]() - MOZ_NEVER_INLINE_DEBUG -> nsIFrame::ContentOffsets { - // Get the scrolled frame. If aFrame is not scrollable, this is aFrame - // itself. - nsIFrame* scrolledFrame = scrollContainerFrame - ? scrollContainerFrame->GetScrolledFrame() - : aFrame; - if (MOZ_UNLIKELY(!scrolledFrame)) { - return {}; + // find out where the caret is. + // we should know mDesiredCaretPos.mValue value of nsFrameSelection, but I + // havent seen that behavior in other windows applications yet. + RefPtr selection = &NormalSelection(); + if (!selection) { + return NS_OK; + } + + nsRect caretPos; + nsIFrame* caretFrame = nsCaret::GetGeometry(selection, &caretPos); + if (!caretFrame) { + return NS_OK; + } + + // If the scrolled frame is outside of current selection limiter, + // we need to scroll the frame but keep moving selection in the limiter. + nsIFrame* frameToClick = scrolledFrame; + if (!NodeIsInLimiters(scrolledFrame->GetContent())) { + frameToClick = GetFrameToPageSelect(); + if (NS_WARN_IF(!frameToClick)) { + return NS_OK; } + } - nsRect caretPos; - nsIFrame* caretFrame = nsCaret::GetGeometry(selection, &caretPos); - if (MOZ_UNLIKELY(!caretFrame)) { - return {}; - } - - // If the scrolled frame is outside of current selection limiter, - // we need to scroll the frame but keep moving selection in the limiter. - nsIFrame* frameToClick = scrolledFrame; - if (!NodeIsInLimiters(scrolledFrame->GetContent())) { - frameToClick = GetFrameToPageSelect(); - scrolledFrameIsInLimiter = scrolledFrame == frameToClick; - if (NS_WARN_IF(!frameToClick)) { - return {}; - } - } - - if (scrollContainerFrame) { - // If there is a scrollable frame, adjust pseudo-click position with page - // scroll amount. - // XXX This may scroll more than one page if ScrollSelectionIntoView is - // called later because caret may not fully visible. E.g., if - // clicking line will be visible only half height with scrolling - // the frame, ScrollSelectionIntoView additionally scrolls to show - // the caret entirely. - if (aForward) { - caretPos.y += scrollContainerFrame->GetPageScrollAmount().height; - } else { - caretPos.y -= scrollContainerFrame->GetPageScrollAmount().height; - } + if (scrollContainerFrame) { + // If there is a scrollable frame, adjust pseudo-click position with page + // scroll amount. + // XXX This may scroll more than one page if ScrollSelectionIntoView is + // called later because caret may not fully visible. E.g., if + // clicking line will be visible only half height with scrolling + // the frame, ScrollSelectionIntoView additionally scrolls to show + // the caret entirely. + if (aForward) { + caretPos.y += scrollContainerFrame->GetPageScrollAmount().height; } else { - // Otherwise, adjust pseudo-click position with the frame size. - if (aForward) { - caretPos.y += frameToClick->GetSize().height; - } else { - caretPos.y -= frameToClick->GetSize().height; - } + caretPos.y -= scrollContainerFrame->GetPageScrollAmount().height; } + } else { + // Otherwise, adjust pseudo-click position with the frame size. + if (aForward) { + caretPos.y += frameToClick->GetSize().height; + } else { + caretPos.y -= frameToClick->GetSize().height; + } + } - caretPos += caretFrame->GetOffsetTo(frameToClick); + caretPos += caretFrame->GetOffsetTo(frameToClick); - // get a content at desired location - nsPoint desiredPoint; - desiredPoint.x = caretPos.x; - desiredPoint.y = caretPos.y + caretPos.height / 2; - return frameToClick->GetContentOffsetsFromPoint(desiredPoint); - }(); - if (MOZ_UNLIKELY(!offsets.content)) { + // get a content at desired location + nsPoint desiredPoint; + desiredPoint.x = caretPos.x; + desiredPoint.y = caretPos.y + caretPos.height / 2; + nsIFrame::ContentOffsets offsets = + frameToClick->GetContentOffsetsFromPoint(desiredPoint); + + if (!offsets.content) { // XXX Do we need to handle ScrollSelectionIntoView in this case? return NS_OK; } @@ -1903,7 +1896,7 @@ nsresult nsFrameSelection::PageMove(bool aForward, bool aExtend, { // We don't want any script to run until we check whether selection is // modified by HandleClick. - SelectionBatcher ensureNoSelectionChangeNotifications(selection.ref(), + SelectionBatcher ensureNoSelectionChangeNotifications(selection, __FUNCTION__); RangeBoundary oldAnchor = selection->AnchorRef(); @@ -1923,7 +1916,7 @@ nsresult nsFrameSelection::PageMove(bool aForward, bool aExtend, aSelectionIntoView == SelectionIntoView::IfChanged && !selectionChanged); // Then, scroll the given frame one page. - if (scrollContainerFrameWeak.IsAlive()) { + if (scrollContainerFrame) { // If we'll call ScrollSelectionIntoView later and selection wasn't // changed and we scroll outside of selection limiter, we shouldn't use // smooth scroll here because ScrollContainerFrame uses normal runnable, @@ -1932,10 +1925,9 @@ nsresult nsFrameSelection::PageMove(bool aForward, bool aExtend, // case, ScrollSelectionIntoView would scroll to show caret instead of // page scroll of an element outside selection limiter. ScrollMode scrollMode = doScrollSelectionIntoView && !selectionChanged && - !scrolledFrameIsInLimiter + scrolledFrame != frameToClick ? ScrollMode::Instant : ScrollMode::Smooth; - MOZ_ASSERT(scrollContainerFrameWeak.GetFrame() == scrollContainerFrame); scrollContainerFrame->ScrollBy(nsIntPoint(0, aForward ? 1 : -1), ScrollUnit::PAGES, scrollMode); } diff --git a/icecat/layout/generic/nsFrameSelection.h b/icecat/layout/generic/nsFrameSelection.h index 86c020acd4..cbbbf90054 100644 --- a/icecat/layout/generic/nsFrameSelection.h +++ b/icecat/layout/generic/nsFrameSelection.h @@ -279,13 +279,6 @@ class nsFrameSelection final { CaretAssociationHint aHint); public: - [[nodiscard]] bool IsAvailable() const { - // mDomSelections is initialized at construction and cleared if the cycle - // collector unlink them so that if the first selection is available, the - // others should be fine. - return !!mDomSelections[0]; - } - /** * Sets the type of the selection based on whether a selection is created * by doubleclick, long tapping a word or tripleclick. diff --git a/icecat/layout/generic/nsIFrame.cpp b/icecat/layout/generic/nsIFrame.cpp index e53ea2fe0b..428526d917 100644 --- a/icecat/layout/generic/nsIFrame.cpp +++ b/icecat/layout/generic/nsIFrame.cpp @@ -1324,7 +1324,12 @@ void nsIFrame::DidSetComputedStyle(ComputedStyle* aOldComputedStyle) { } if (handleStickyChange && !HasAnyStateBits(NS_FRAME_IS_NONDISPLAY) && - nsLayoutUtils::IsFirstContinuationOrIBSplitSibling(this)) { + !GetPrevInFlow()) { + // Note that we only add first continuations, but we really only + // want to add first continuation-or-ib-split-siblings. But since we don't + // yet know if we're a later part of a block-in-inline split, we'll just + // add later members of a block-in-inline split here, and then + // StickyScrollContainer will remove them later. if (auto* ssc = StickyScrollContainer::GetStickyScrollContainerForFrame(this)) { if (disp->mPosition == StylePositionProperty::Sticky) { @@ -3174,8 +3179,7 @@ void nsIFrame::BuildDisplayListForStackingContext( return; } - if (HasAnyStateBits(NS_FRAME_TOO_DEEP_IN_FRAME_TREE | - NS_FRAME_IS_NONDISPLAY)) { + if (HasAnyStateBits(NS_FRAME_TOO_DEEP_IN_FRAME_TREE)) { return; } diff --git a/icecat/layout/generic/nsInlineFrame.cpp b/icecat/layout/generic/nsInlineFrame.cpp index 32029e82fc..142fe5cbbd 100644 --- a/icecat/layout/generic/nsInlineFrame.cpp +++ b/icecat/layout/generic/nsInlineFrame.cpp @@ -936,14 +936,7 @@ void nsInlineFrame::UpdateStyleOfOwnedAnonBoxesForIBSplit( } nsIFrame* nextInline = blockFrame->GetProperty(nsIFrame::IBSplitSibling()); - if (MOZ_UNLIKELY(!nextInline)) { - MOZ_ASSERT_UNREACHABLE("There should always a be trailing inline " - "in an IB split"); - // Gracefully bail so that nextInline usage below doesn't - // null-deref. (We can stop worrying about this when we remove - // IB split siblings in bug 2031448.) - return; - } + MOZ_ASSERT(nextInline, "There is always a trailing inline in an IB split"); for (nsIFrame* cont = nextInline; cont; cont = cont->GetNextContinuation()) { diff --git a/icecat/layout/painting/nsDisplayList.h b/icecat/layout/painting/nsDisplayList.h index 4bb89e3cba..4456a966b7 100644 --- a/icecat/layout/painting/nsDisplayList.h +++ b/icecat/layout/painting/nsDisplayList.h @@ -3216,7 +3216,7 @@ class nsDisplayList { for (nsDisplayItem* item : TakeItems()) { items.AppendElement(Item(item)); } - items.template StableSort(aComparator); + items.StableSort(aComparator); for (Item& item : items) { AppendToTop(item); diff --git a/icecat/layout/printing/ipc/RemotePrintJobParent.cpp b/icecat/layout/printing/ipc/RemotePrintJobParent.cpp index d14bee95fb..3c6fbfa1da 100644 --- a/icecat/layout/printing/ipc/RemotePrintJobParent.cpp +++ b/icecat/layout/printing/ipc/RemotePrintJobParent.cpp @@ -26,18 +26,15 @@ namespace mozilla::layout { RemotePrintJobParent::RemotePrintJobParent(nsIPrintSettings* aPrintSettings) - : mPrintSettings(aPrintSettings), mStatus(NS_ERROR_UNEXPECTED) { + : mPrintSettings(aPrintSettings), + mIsDoingPrinting(false), + mStatus(NS_ERROR_UNEXPECTED) { MOZ_COUNT_CTOR(RemotePrintJobParent); } mozilla::ipc::IPCResult RemotePrintJobParent::RecvInitializePrint( const nsAString& aDocumentTitle, const int32_t& aStartPage, const int32_t& aEndPage) { - if (mInitializeReceived) { - MOZ_ASSERT_UNREACHABLE("Unexpected redundant call to RecvInitializePrint"); - return IPC_FAIL(this, "Unexpected redundant call to RecvInitializePrint"); - } - mInitializeReceived = true; PROFILER_MARKER_TEXT("RemotePrintJobParent", LAYOUT_Printing, {}, "RemotePrintJobParent::RecvInitializePrint"_ns); diff --git a/icecat/layout/printing/ipc/RemotePrintJobParent.h b/icecat/layout/printing/ipc/RemotePrintJobParent.h index 28fea9396c..2f80553183 100644 --- a/icecat/layout/printing/ipc/RemotePrintJobParent.h +++ b/icecat/layout/printing/ipc/RemotePrintJobParent.h @@ -92,10 +92,8 @@ class RemotePrintJobParent final : public PRemotePrintJobParent { UniquePtr mPrintTranslator; nsCOMArray mPrintProgressListeners; PRFileDescStream mCurrentPageStream; + bool mIsDoingPrinting; nsresult mStatus; - bool mIsDoingPrinting = false; - bool mInitializeReceived = - false; // True after RecvInitializePrint is called. }; } // namespace layout diff --git a/icecat/layout/style/FontFace.cpp b/icecat/layout/style/FontFace.cpp index 9286d98156..20769bf378 100644 --- a/icecat/layout/style/FontFace.cpp +++ b/icecat/layout/style/FontFace.cpp @@ -254,7 +254,6 @@ Promise* FontFace::Load(ErrorResult& aRv) { } mImpl->Load(aRv); - mImpl->UpdateOwnerKeepAlive(); return mLoaded; } @@ -266,27 +265,34 @@ Promise* FontFace::GetLoaded(ErrorResult& aRv) { return nullptr; } - if (mImpl) { - mImpl->UpdateOwnerKeepAlive(); - } - return mLoaded; } void FontFace::MaybeResolve() { gfxFontUtils::AssertSafeThreadOrServoFontMetricsLocked(); - MOZ_ASSERT(!NS_IsMainThread() || nsContentUtils::IsSafeToRunScript()); - MOZ_ASSERT(!gfxFontUtils::CurrentServoStyleSet()); - if (RefPtr loaded = mLoaded) { - loaded->MaybeResolve(this); + if (!mLoaded) { + return; } + + if (ServoStyleSet* ss = gfxFontUtils::CurrentServoStyleSet()) { + // See comments in Gecko_GetFontMetrics. + ss->AppendTask(PostTraversalTask::ResolveFontFaceLoadedPromise(this)); + return; + } + + mLoaded->MaybeResolve(this); } void FontFace::MaybeReject(nsresult aResult) { gfxFontUtils::AssertSafeThreadOrServoFontMetricsLocked(); - MOZ_ASSERT(!NS_IsMainThread() || nsContentUtils::IsSafeToRunScript()); - MOZ_ASSERT(!gfxFontUtils::CurrentServoStyleSet()); + + if (ServoStyleSet* ss = gfxFontUtils::CurrentServoStyleSet()) { + // See comments in Gecko_GetFontMetrics. + ss->AppendTask( + PostTraversalTask::RejectFontFaceLoadedPromise(this, aResult)); + return; + } if (mLoaded) { mLoaded->MaybeReject(aResult); diff --git a/icecat/layout/style/FontFaceImpl.cpp b/icecat/layout/style/FontFaceImpl.cpp index 83dc6a32b6..8e2e335e84 100644 --- a/icecat/layout/style/FontFaceImpl.cpp +++ b/icecat/layout/style/FontFaceImpl.cpp @@ -385,45 +385,35 @@ void FontFaceImpl::SetStatus(FontFaceLoadStatus aStatus) { } void FontFaceImpl::UpdateOwnerPromise() { - mFontFaceSet->DispatchToOwningThread( - "FontFaceImpl::UpdateOwnerPromise", - [self = RefPtr{this}] { self->UpdateOwnerPromiseSync(); }); -} - -void FontFaceImpl::UpdateOwnerKeepAlive() { - AssertIsOnOwningThread(); - if (!mOwner) { - MOZ_DIAGNOSTIC_ASSERT(!mKeepingOwnerAlive); + if (!mFontFaceSet->IsOnOwningThread()) { + mFontFaceSet->DispatchToOwningThread( + "FontFaceImpl::UpdateOwnerPromise", + [self = RefPtr{this}] { self->UpdateOwnerPromise(); }); return; } - const bool shouldKeepOwnerAlive = - mStatus == FontFaceLoadStatus::Loading && !!mOwner->GetParentObject(); - if (shouldKeepOwnerAlive == mKeepingOwnerAlive) { - return; - } - mKeepingOwnerAlive = shouldKeepOwnerAlive; - if (shouldKeepOwnerAlive) { - mOwner->AddRef(); - } else { - mOwner->Release(); - } -} -void FontFaceImpl::UpdateOwnerPromiseSync() { if (NS_WARN_IF(!mOwner)) { MOZ_DIAGNOSTIC_ASSERT(!mKeepingOwnerAlive); return; } - RefPtr owner = mOwner; - UpdateOwnerKeepAlive(); if (mStatus == FontFaceLoadStatus::Loaded) { - owner->MaybeResolve(); + mOwner->MaybeResolve(); } else if (mStatus == FontFaceLoadStatus::Error) { if (mSourceType == eSourceType_Buffer) { - owner->MaybeReject(NS_ERROR_DOM_SYNTAX_ERR); + mOwner->MaybeReject(NS_ERROR_DOM_SYNTAX_ERR); } else { - owner->MaybeReject(NS_ERROR_DOM_NETWORK_ERR); + mOwner->MaybeReject(NS_ERROR_DOM_NETWORK_ERR); + } + } + + const bool shouldKeepOwnerAlive = mStatus == FontFaceLoadStatus::Loading; + if (shouldKeepOwnerAlive != mKeepingOwnerAlive) { + mKeepingOwnerAlive = shouldKeepOwnerAlive; + if (shouldKeepOwnerAlive) { + mOwner->AddRef(); + } else { + mOwner->Release(); } } } diff --git a/icecat/layout/style/FontFaceImpl.h b/icecat/layout/style/FontFaceImpl.h index 1ffa452be0..40e21584bb 100644 --- a/icecat/layout/style/FontFaceImpl.h +++ b/icecat/layout/style/FontFaceImpl.h @@ -202,8 +202,6 @@ class FontFaceImpl final { void InitializeSourceURL(const nsACString& aURL); void InitializeSourceBuffer(uint8_t* aBuffer, uint32_t aLength); - void UpdateOwnerKeepAlive(); - /** * Sets all of the descriptor values in mDescriptors using values passed * to the JS constructor. @@ -223,7 +221,6 @@ class FontFaceImpl final { // Helper function for Load. void DoLoad(); void UpdateOwnerPromise(); - void UpdateOwnerPromiseSync(); // Helper function for the descriptor setter methods. // Returns true if the descriptor was modified, false if descriptor is diff --git a/icecat/layout/style/FontFaceSet.cpp b/icecat/layout/style/FontFaceSet.cpp index 82abf42407..984bf79221 100644 --- a/icecat/layout/style/FontFaceSet.cpp +++ b/icecat/layout/style/FontFaceSet.cpp @@ -394,18 +394,18 @@ void FontFaceSet::DispatchLoadingEventAndReplaceReadyPromise() { // refcounting. (Also, the Promise object creation must be done on // the main thread.) set->AppendTask( - PostTraversalTask::DispatchLoadingEventAndReplaceReadyPromise( - do_AddRef(mImpl))); + PostTraversalTask::DispatchLoadingEventAndReplaceReadyPromise(this)); return; } (new AsyncEventDispatcher(this, u"loading"_ns, CanBubble::eNo)) ->PostDOMEvent(); - if (mReady && mReady->State() != Promise::PromiseState::Pending && - GetParentObject()) { - IgnoredErrorResult rv; - mReady = Promise::Create(GetParentObject(), rv); + if (mReady && mReady->State() != Promise::PromiseState::Pending) { + if (GetParentObject()) { + ErrorResult rv; + mReady = Promise::Create(GetParentObject(), rv); + } } // We may previously have been in a state where all fonts had finished diff --git a/icecat/layout/style/FontFaceSetDocumentImpl.cpp b/icecat/layout/style/FontFaceSetDocumentImpl.cpp index f95bf14a92..fbedeced49 100644 --- a/icecat/layout/style/FontFaceSetDocumentImpl.cpp +++ b/icecat/layout/style/FontFaceSetDocumentImpl.cpp @@ -469,8 +469,8 @@ bool FontFaceSetDocumentImpl::UpdateRules( RefPtr f = record.mFontFace; if (gfxUserFontEntry* userFontEntry = f->GetUserFontEntry()) { if (nsFontFaceLoader* loader = userFontEntry->GetLoader()) { - // Cancel() removes the loader from its registering set's mLoaders. loader->Cancel(); + RemoveLoader(loader); } } diff --git a/icecat/layout/style/FontFaceSetImpl.cpp b/icecat/layout/style/FontFaceSetImpl.cpp index 1dd3a682f2..001b46aa5a 100644 --- a/icecat/layout/style/FontFaceSetImpl.cpp +++ b/icecat/layout/style/FontFaceSetImpl.cpp @@ -93,12 +93,10 @@ void FontFaceSetImpl::DestroyLoaders() { return; } if (NS_IsMainThread()) { - // Move mLoaders to a local, because Cancel() calls RemoveLoader() which - // would otherwise mutate the table during the iteration. - auto loaders = std::move(mLoaders); - for (const auto& key : loaders.Keys()) { + for (const auto& key : mLoaders.Keys()) { key->Cancel(); } + mLoaders.Clear(); return; } @@ -766,6 +764,21 @@ void FontFaceSetImpl::OnFontFaceStatusChanged(FontFaceImpl* aFontFace) { } void FontFaceSetImpl::DispatchCheckLoadingFinishedAfterDelay() { + gfxFontUtils::AssertSafeThreadOrServoFontMetricsLocked(); + + if (ServoStyleSet* set = gfxFontUtils::CurrentServoStyleSet()) { + // See comments in Gecko_GetFontMetrics. + // + // We can't just dispatch the runnable below if we're not on the main + // thread, since it needs to take a strong reference to the FontFaceSet, + // and being a DOM object, FontFaceSet doesn't support thread-safe + // refcounting. + set->AppendTask( + PostTraversalTask::DispatchFontFaceSetCheckLoadingFinishedAfterDelay( + this)); + return; + } + DispatchToOwningThread( "FontFaceSetImpl::DispatchCheckLoadingFinishedAfterDelay", [self = RefPtr{this}]() { self->CheckLoadingFinishedAfterDelay(); }); @@ -802,7 +815,7 @@ void FontFaceSetImpl::CheckLoadingStarted() { [self = RefPtr{this}]() { self->OnLoadingStarted(); }); } -void FontFaceSetImpl::DispatchLoadingEventAndReplaceReadyPromise() { +void FontFaceSetImpl::OnLoadingStarted() { RecursiveMutexAutoLock lock(mMutex); if (mOwner) { mOwner->DispatchLoadingEventAndReplaceReadyPromise(); diff --git a/icecat/layout/style/FontFaceSetImpl.h b/icecat/layout/style/FontFaceSetImpl.h index 5df463efe9..dd412dd721 100644 --- a/icecat/layout/style/FontFaceSetImpl.h +++ b/icecat/layout/style/FontFaceSetImpl.h @@ -171,7 +171,6 @@ class FontFaceSetImpl : public nsISupports, public gfxUserFontSet { ErrorResult& aRv); virtual void DispatchCheckLoadingFinishedAfterDelay(); - void DispatchLoadingEventAndReplaceReadyPromise(); protected: ~FontFaceSetImpl() override; @@ -201,9 +200,7 @@ class FontFaceSetImpl : public nsISupports, public gfxUserFontSet { */ void CheckLoadingFinishedAfterDelay(); - void OnLoadingStarted() { - DispatchLoadingEventAndReplaceReadyPromise(); - } + void OnLoadingStarted(); void OnLoadingFinished(); // Note: if you add new cycle collected objects to FontFaceRecord, diff --git a/icecat/layout/style/PostTraversalTask.cpp b/icecat/layout/style/PostTraversalTask.cpp index 86a4b1eb3f..b6320641ff 100644 --- a/icecat/layout/style/PostTraversalTask.cpp +++ b/icecat/layout/style/PostTraversalTask.cpp @@ -18,29 +18,40 @@ namespace mozilla { using namespace dom; -PostTraversalTask::~PostTraversalTask() { - if (!mTarget) { - return; - } - switch (mType) { - case Type::DispatchLoadingEventAndReplaceReadyPromise: - static_cast(mTarget)->Release(); - break; - case Type::LoadFontEntry: - static_cast(mTarget)->Release(); - break; - } -} - void PostTraversalTask::Run() { switch (mType) { + case Type::ResolveFontFaceLoadedPromise: + static_cast(mTarget)->MaybeResolve(); + break; + + case Type::RejectFontFaceLoadedPromise: + static_cast(mTarget)->MaybeReject(mResult); + break; + case Type::DispatchLoadingEventAndReplaceReadyPromise: - static_cast(mTarget) + static_cast(mTarget) ->DispatchLoadingEventAndReplaceReadyPromise(); break; + + case Type::DispatchFontFaceSetCheckLoadingFinishedAfterDelay: + static_cast(mTarget) + ->DispatchCheckLoadingFinishedAfterDelay(); + break; + case Type::LoadFontEntry: static_cast(mTarget)->ContinueLoad(); break; + + case Type::InitializeFamily: + Unused << gfxPlatformFontList::PlatformFontList()->InitializeFamily( + static_cast(mTarget)); + break; + + case Type::FontInfoUpdate: + if (auto* pc = static_cast(mTarget)->GetPresContext()) { + pc->ForceReflowForFontInfoUpdateFromStyle(); + } + break; } } diff --git a/icecat/layout/style/PostTraversalTask.h b/icecat/layout/style/PostTraversalTask.h index 29f762ab6f..64d67b0227 100644 --- a/icecat/layout/style/PostTraversalTask.h +++ b/icecat/layout/style/PostTraversalTask.h @@ -7,13 +7,14 @@ #ifndef mozilla_PostTraversalTask_h #define mozilla_PostTraversalTask_h -#include "mozilla/AlreadyAddRefed.h" +#include "nscore.h" /* a task to be performed immediately after a Servo traversal */ namespace mozilla { class ServoStyleSet; namespace dom { +class FontFace; class FontFaceSet; class FontFaceSetImpl; } // namespace dom @@ -35,46 +36,91 @@ namespace mozilla { */ class PostTraversalTask { public: - static PostTraversalTask DispatchLoadingEventAndReplaceReadyPromise( - already_AddRefed aFontFaceSetImpl) { - PostTraversalTask task(Type::DispatchLoadingEventAndReplaceReadyPromise); - task.mTarget = aFontFaceSetImpl.take(); + static PostTraversalTask ResolveFontFaceLoadedPromise( + dom::FontFace* aFontFace) { + auto task = PostTraversalTask(Type::ResolveFontFaceLoadedPromise); + task.mTarget = aFontFace; return task; } - static PostTraversalTask LoadFontEntry( - already_AddRefed aFontEntry) { - PostTraversalTask task(Type::LoadFontEntry); - task.mTarget = aFontEntry.take(); + static PostTraversalTask RejectFontFaceLoadedPromise(dom::FontFace* aFontFace, + nsresult aResult) { + auto task = PostTraversalTask(Type::ResolveFontFaceLoadedPromise); + task.mTarget = aFontFace; + task.mResult = aResult; + return task; + } + + static PostTraversalTask DispatchLoadingEventAndReplaceReadyPromise( + dom::FontFaceSet* aFontFaceSet) { + auto task = + PostTraversalTask(Type::DispatchLoadingEventAndReplaceReadyPromise); + task.mTarget = aFontFaceSet; + return task; + } + + static PostTraversalTask DispatchFontFaceSetCheckLoadingFinishedAfterDelay( + dom::FontFaceSetImpl* aFontFaceSet) { + auto task = PostTraversalTask( + Type::DispatchFontFaceSetCheckLoadingFinishedAfterDelay); + task.mTarget = aFontFaceSet; + return task; + } + + static PostTraversalTask LoadFontEntry(gfxUserFontEntry* aFontEntry) { + auto task = PostTraversalTask(Type::LoadFontEntry); + task.mTarget = aFontEntry; + return task; + } + + static PostTraversalTask InitializeFamily(fontlist::Family* aFamily) { + auto task = PostTraversalTask(Type::InitializeFamily); + task.mTarget = aFamily; + return task; + } + + static PostTraversalTask FontInfoUpdate(ServoStyleSet* aSet) { + auto task = PostTraversalTask(Type::FontInfoUpdate); + task.mTarget = aSet; return task; } void Run(); - PostTraversalTask(const PostTraversalTask&) = delete; - PostTraversalTask(PostTraversalTask&& aOther) - : PostTraversalTask(aOther.mType) { - mTarget = aOther.mTarget; - aOther.mTarget = nullptr; - }; - - ~PostTraversalTask(); - private: + // For any new raw pointer type that we need to store in a PostTraversalTask, + // please add an assertion that class' destructor that we are not in a Servo + // traversal, to protect against the possibility of having dangling pointers. enum class Type { - // mTarget (FontFaceSetImpl*) + // mTarget (FontFace*) + ResolveFontFaceLoadedPromise, + + // mTarget (FontFace*) + // mResult + RejectFontFaceLoadedPromise, + + // mTarget (FontFaceSet*) DispatchLoadingEventAndReplaceReadyPromise, + // mTarget (FontFaceSetImpl*) + DispatchFontFaceSetCheckLoadingFinishedAfterDelay, + // mTarget (gfxUserFontEntry*) LoadFontEntry, + + // mTarget (fontlist::Family*) + InitializeFamily, + + // mTarget (ServoStyleSet*) + FontInfoUpdate, }; explicit PostTraversalTask(Type aType) - : mType(aType), mTarget(nullptr) {} + : mType(aType), mTarget(nullptr), mResult(NS_OK) {} - const Type mType; - // Note that this is a strong reference of the relevant target - void* mTarget = nullptr; + Type mType; + void* mTarget; + nsresult mResult; }; } // namespace mozilla diff --git a/icecat/layout/style/ServoStyleSet.cpp b/icecat/layout/style/ServoStyleSet.cpp index 51a23c9492..1328bd03c3 100644 --- a/icecat/layout/style/ServoStyleSet.cpp +++ b/icecat/layout/style/ServoStyleSet.cpp @@ -7,7 +7,6 @@ #include "mozilla/ServoStyleSet.h" #include "mozilla/ServoStyleSetInlines.h" -#include "COLRFonts.h" #include "mozilla/DocumentStyleRootIterator.h" #include "mozilla/AttributeStyles.h" #include "mozilla/EffectCompositor.h" diff --git a/icecat/layout/style/ServoStyleSet.h b/icecat/layout/style/ServoStyleSet.h index 633c16535a..8ef7feca8f 100644 --- a/icecat/layout/style/ServoStyleSet.h +++ b/icecat/layout/style/ServoStyleSet.h @@ -425,7 +425,7 @@ class ServoStyleSet { // synchronization measures. AssertIsMainThreadOrServoFontMetricsLocked(); - mPostTraversalTasks.AppendElement(std::move(aTask)); + mPostTraversalTasks.AppendElement(aTask); } // Returns true if a restyle of the document is needed due to cloning diff --git a/icecat/layout/style/nsFontFaceLoader.cpp b/icecat/layout/style/nsFontFaceLoader.cpp index 73983edbd4..fa2394773c 100644 --- a/icecat/layout/style/nsFontFaceLoader.cpp +++ b/icecat/layout/style/nsFontFaceLoader.cpp @@ -350,9 +350,6 @@ void nsFontFaceLoader::Cancel() { if (doc) { doc->UnblockOnload(false); } - // Remove ourselves from the set that registered us, so it never holds a - // dangling raw pointer to us after we're freed. - mFontFaceSet->RemoveLoader(this); mFontFaceSet = nullptr; if (mLoadTimer) { mLoadTimer->Cancel(); diff --git a/icecat/layout/svg/CSSFilterInstance.cpp b/icecat/layout/svg/CSSFilterInstance.cpp index d7df442611..88ab747ddc 100644 --- a/icecat/layout/svg/CSSFilterInstance.cpp +++ b/icecat/layout/svg/CSSFilterInstance.cpp @@ -127,15 +127,15 @@ nsresult CSSFilterInstance::SetAttributesForBrightness( ComponentTransferAttributes atts; // Set transfer functions for RGB. - atts.mTypes[kChannelROrRGB] = SVGFEComponentTransferType::Linear; - atts.mTypes[kChannelG] = SVGFEComponentTransferType::SameAsR; - atts.mTypes[kChannelB] = SVGFEComponentTransferType::SameAsR; + atts.mTypes[kChannelROrRGB] = (uint8_t)SVG_FECOMPONENTTRANSFER_TYPE_LINEAR; + atts.mTypes[kChannelG] = (uint8_t)SVG_FECOMPONENTTRANSFER_SAME_AS_R; + atts.mTypes[kChannelB] = (uint8_t)SVG_FECOMPONENTTRANSFER_SAME_AS_R; std::array slopeIntercept; slopeIntercept[kComponentTransferSlopeIndex] = value; slopeIntercept[kComponentTransferInterceptIndex] = intercept; atts.mValues[kChannelROrRGB].AppendElements(Span(slopeIntercept)); - atts.mTypes[kChannelA] = SVGFEComponentTransferType::Identity; + atts.mTypes[kChannelA] = (uint8_t)SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY; aDescr.Attributes() = AsVariant(std::move(atts)); return NS_OK; @@ -148,15 +148,15 @@ nsresult CSSFilterInstance::SetAttributesForContrast( ComponentTransferAttributes atts; // Set transfer functions for RGB. - atts.mTypes[kChannelROrRGB] = SVGFEComponentTransferType::Linear; - atts.mTypes[kChannelG] = SVGFEComponentTransferType::SameAsR; - atts.mTypes[kChannelB] = SVGFEComponentTransferType::SameAsR; + atts.mTypes[kChannelROrRGB] = (uint8_t)SVG_FECOMPONENTTRANSFER_TYPE_LINEAR; + atts.mTypes[kChannelG] = (uint8_t)SVG_FECOMPONENTTRANSFER_SAME_AS_R; + atts.mTypes[kChannelB] = (uint8_t)SVG_FECOMPONENTTRANSFER_SAME_AS_R; std::array slopeIntercept; slopeIntercept[kComponentTransferSlopeIndex] = value; slopeIntercept[kComponentTransferInterceptIndex] = intercept; atts.mValues[kChannelROrRGB].AppendElements(Span(slopeIntercept)); - atts.mTypes[kChannelA] = SVGFEComponentTransferType::Identity; + atts.mTypes[kChannelA] = (uint8_t)SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY; aDescr.Attributes() = AsVariant(std::move(atts)); return NS_OK; @@ -189,7 +189,7 @@ nsresult CSSFilterInstance::SetAttributesForGrayscale( FilterPrimitiveDescription& aDescr) { ColorMatrixAttributes atts; // Set color matrix type. - atts.mType = SVGFEColorMatrixType::Saturate; + atts.mType = (uint32_t)SVG_FECOLORMATRIX_TYPE_SATURATE; // Set color matrix value. atts.mValues.AppendElement(1 - ClampFactor(mFilter.AsGrayscale())); @@ -202,7 +202,7 @@ nsresult CSSFilterInstance::SetAttributesForHueRotate( FilterPrimitiveDescription& aDescr) { ColorMatrixAttributes atts; // Set color matrix type. - atts.mType = SVGFEColorMatrixType::HueRotate; + atts.mType = (uint32_t)SVG_FECOLORMATRIX_TYPE_HUE_ROTATE; // Set color matrix value. atts.mValues.AppendElement(mFilter.AsHueRotate().ToDegrees()); @@ -220,12 +220,12 @@ nsresult CSSFilterInstance::SetAttributesForInvert( std::array invertTableValues = {value, 1 - value}; // Set transfer functions for RGB. - atts.mTypes[kChannelROrRGB] = SVGFEComponentTransferType::Table; - atts.mTypes[kChannelG] = SVGFEComponentTransferType::SameAsR; - atts.mTypes[kChannelB] = SVGFEComponentTransferType::SameAsR; + atts.mTypes[kChannelROrRGB] = (uint8_t)SVG_FECOMPONENTTRANSFER_TYPE_TABLE; + atts.mTypes[kChannelG] = (uint8_t)SVG_FECOMPONENTTRANSFER_SAME_AS_R; + atts.mTypes[kChannelB] = (uint8_t)SVG_FECOMPONENTTRANSFER_SAME_AS_R; atts.mValues[kChannelROrRGB].AppendElements(Span(invertTableValues)); - atts.mTypes[kChannelA] = SVGFEComponentTransferType::Identity; + atts.mTypes[kChannelA] = (uint8_t)SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY; aDescr.Attributes() = AsVariant(std::move(atts)); return NS_OK; @@ -245,7 +245,7 @@ nsresult CSSFilterInstance::SetAttributesForSaturate( FilterPrimitiveDescription& aDescr) { ColorMatrixAttributes atts; // Set color matrix type. - atts.mType = SVGFEColorMatrixType::Saturate; + atts.mType = (uint32_t)SVG_FECOLORMATRIX_TYPE_SATURATE; // Set color matrix value. atts.mValues.AppendElement(mFilter.AsSaturate()); @@ -258,7 +258,7 @@ nsresult CSSFilterInstance::SetAttributesForSepia( FilterPrimitiveDescription& aDescr) { ColorMatrixAttributes atts; // Set color matrix type. - atts.mType = SVGFEColorMatrixType::Sepia; + atts.mType = (uint32_t)SVG_FECOLORMATRIX_TYPE_SEPIA; // Set color matrix value. atts.mValues.AppendElement(ClampFactor(mFilter.AsSepia())); diff --git a/icecat/layout/svg/FilterInstance.cpp b/icecat/layout/svg/FilterInstance.cpp index e0f1c04b60..14bf00dabd 100644 --- a/icecat/layout/svg/FilterInstance.cpp +++ b/icecat/layout/svg/FilterInstance.cpp @@ -114,19 +114,18 @@ void FilterInstance::PaintFilteredFrame( } } -static mozilla::wr::ComponentTransferFuncType FuncTypeToWr( - SVGFEComponentTransferType aFuncType) { - MOZ_ASSERT(aFuncType != SVGFEComponentTransferType::SameAsR); +static mozilla::wr::ComponentTransferFuncType FuncTypeToWr(uint8_t aFuncType) { + MOZ_ASSERT(aFuncType != SVG_FECOMPONENTTRANSFER_SAME_AS_R); switch (aFuncType) { - case SVGFEComponentTransferType::Table: + case SVG_FECOMPONENTTRANSFER_TYPE_TABLE: return mozilla::wr::ComponentTransferFuncType::Table; - case SVGFEComponentTransferType::Discrete: + case SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: return mozilla::wr::ComponentTransferFuncType::Discrete; - case SVGFEComponentTransferType::Linear: + case SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: return mozilla::wr::ComponentTransferFuncType::Linear; - case SVGFEComponentTransferType::Gamma: + case SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: return mozilla::wr::ComponentTransferFuncType::Gamma; - case SVGFEComponentTransferType::Identity: + case SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: default: return mozilla::wr::ComponentTransferFuncType::Identity; } @@ -334,14 +333,14 @@ WrFiltersStatus FilterInstance::BuildWebRenderFiltersImpl( filterData.R_values_count = attributes.mValues[0].Length(); size_t indexToUse = - attributes.mTypes[1] == SVGFEComponentTransferType::SameAsR ? 0 : 1; + attributes.mTypes[1] == SVG_FECOMPONENTTRANSFER_SAME_AS_R ? 0 : 1; filterData.funcG_type = FuncTypeToWr(attributes.mTypes[indexToUse]); size_t G_startindex = values->Length(); values->AppendElements(attributes.mValues[indexToUse]); filterData.G_values_count = attributes.mValues[indexToUse].Length(); indexToUse = - attributes.mTypes[2] == SVGFEComponentTransferType::SameAsR ? 0 : 2; + attributes.mTypes[2] == SVG_FECOMPONENTTRANSFER_SAME_AS_R ? 0 : 2; filterData.funcB_type = FuncTypeToWr(attributes.mTypes[indexToUse]); size_t B_startindex = values->Length(); values->AppendElements(attributes.mValues[indexToUse]); @@ -488,66 +487,66 @@ static WrFiltersStatus WrFilterOpSVGFEBlend( return WrFiltersStatus::BLOB_FALLBACK; } switch (aAttributes.mBlendMode) { - case SVGFEBlendMode::Color: + case SVG_FEBLEND_MODE_COLOR: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendColor(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::ColorBurn: + case SVG_FEBLEND_MODE_COLOR_BURN: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendColorBurn(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::ColorDodge: + case SVG_FEBLEND_MODE_COLOR_DODGE: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendColorDodge(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Darken: + case SVG_FEBLEND_MODE_DARKEN: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendDarken(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Difference: + case SVG_FEBLEND_MODE_DIFFERENCE: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendDifference(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Exclusion: + case SVG_FEBLEND_MODE_EXCLUSION: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendExclusion(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::HardLight: + case SVG_FEBLEND_MODE_HARD_LIGHT: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendHardLight(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Hue: + case SVG_FEBLEND_MODE_HUE: aWrFilters.filters.AppendElement(wr::FilterOp::SVGFEBlendHue(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Lighten: + case SVG_FEBLEND_MODE_LIGHTEN: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendLighten(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Luminosity: + case SVG_FEBLEND_MODE_LUMINOSITY: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendLuminosity(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Multiply: + case SVG_FEBLEND_MODE_MULTIPLY: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendMultiply(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Normal: + case SVG_FEBLEND_MODE_NORMAL: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendNormal(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Overlay: + case SVG_FEBLEND_MODE_OVERLAY: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendOverlay(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Saturation: + case SVG_FEBLEND_MODE_SATURATION: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendSaturation(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::Screen: + case SVG_FEBLEND_MODE_SCREEN: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendScreen(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFEBlendMode::SoftLight: + case SVG_FEBLEND_MODE_SOFT_LIGHT: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEBlendSoftLight(aGraphNode)); return WrFiltersStatus::SVGFE; @@ -567,33 +566,33 @@ static WrFiltersStatus WrFilterOpSVGFEComposite( return WrFiltersStatus::BLOB_FALLBACK; } switch (aAttributes.mOperator) { - case SVGFECompositeOperator::Arithmetic: + case SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: aWrFilters.filters.AppendElement(wr::FilterOp::SVGFECompositeArithmetic( aGraphNode, aAttributes.mCoefficients[0], aAttributes.mCoefficients[1], aAttributes.mCoefficients[2], aAttributes.mCoefficients[3])); return WrFiltersStatus::SVGFE; - case SVGFECompositeOperator::Atop: + case SVG_FECOMPOSITE_OPERATOR_ATOP: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFECompositeATop(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFECompositeOperator::In: + case SVG_FECOMPOSITE_OPERATOR_IN: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFECompositeIn(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFECompositeOperator::Lighter: + case SVG_FECOMPOSITE_OPERATOR_LIGHTER: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFECompositeLighter(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFECompositeOperator::Out: + case SVG_FECOMPOSITE_OPERATOR_OUT: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFECompositeOut(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFECompositeOperator::Over: + case SVG_FECOMPOSITE_OPERATOR_OVER: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFECompositeOver(aGraphNode)); return WrFiltersStatus::SVGFE; - case SVGFECompositeOperator::Xor: + case SVG_FECOMPOSITE_OPERATOR_XOR: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFECompositeXOR(aGraphNode)); return WrFiltersStatus::SVGFE; @@ -654,19 +653,19 @@ static WrFiltersStatus WrFilterOpSVGFEComponentTransfer( // The only type that doesn't use interpolation is discrete. wr::WrFilterData filterData{}; filterData.funcR_type = - aAttributes.mTypes[0] != SVGFEComponentTransferType::Discrete + aAttributes.mTypes[0] != SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE ? mozilla::wr::ComponentTransferFuncType::Table : mozilla::wr::ComponentTransferFuncType::Discrete; filterData.funcG_type = - aAttributes.mTypes[1] != SVGFEComponentTransferType::Discrete + aAttributes.mTypes[1] != SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE ? mozilla::wr::ComponentTransferFuncType::Table : mozilla::wr::ComponentTransferFuncType::Discrete; filterData.funcB_type = - aAttributes.mTypes[2] != SVGFEComponentTransferType::Discrete + aAttributes.mTypes[2] != SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE ? mozilla::wr::ComponentTransferFuncType::Table : mozilla::wr::ComponentTransferFuncType::Discrete; filterData.funcA_type = - aAttributes.mTypes[3] != SVGFEComponentTransferType::Discrete + aAttributes.mTypes[3] != SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE ? mozilla::wr::ComponentTransferFuncType::Table : mozilla::wr::ComponentTransferFuncType::Discrete; @@ -692,15 +691,15 @@ static WrFiltersStatus WrFilterOpSVGFEComponentTransfer( auto f = aAttributes.mTypes[c]; // Check if there's no data (we have crashtests for this). if (aAttributes.mValues[c].Length() < 1 && - f != SVGFEComponentTransferType::SameAsR) { - f = SVGFEComponentTransferType::Identity; + f != SVG_FECOMPONENTTRANSFER_SAME_AS_R) { + f = SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY; } - // Check for misuse of SVGFEComponentTransferType::SameAsR. - if (c == 0 && f == SVGFEComponentTransferType::SameAsR) { - f = SVGFEComponentTransferType::Identity; + // Check for misuse of SVG_FECOMPONENTTRANSFER_SAME_AS_R. + if (c == 0 && f == SVG_FECOMPONENTTRANSFER_SAME_AS_R) { + f = SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY; } switch (f) { - case SVGFEComponentTransferType::Discrete: { + case SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE: { size_t length = (size_t)aAttributes.mValues[c].Length(); size_t length1 = length - 1; float step = (float)length / (float)stops; @@ -717,7 +716,7 @@ static WrFiltersStatus WrFilterOpSVGFEComponentTransfer( } break; } - case SVGFEComponentTransferType::Gamma: { + case SVG_FECOMPONENTTRANSFER_TYPE_GAMMA: { float step = 1.0f / (float)(stops - 1); float amplitude = aAttributes.mValues[c][0]; float exponent = aAttributes.mValues[c][1]; @@ -729,7 +728,7 @@ static WrFiltersStatus WrFilterOpSVGFEComponentTransfer( } break; } - case SVGFEComponentTransferType::Identity: { + case SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY: { float step = 1.0f / (float)(stops - 1); for (size_t i = 0; i < stops; i++) { float v = (float)i * step; @@ -738,7 +737,7 @@ static WrFiltersStatus WrFilterOpSVGFEComponentTransfer( } break; } - case SVGFEComponentTransferType::Linear: { + case SVG_FECOMPONENTTRANSFER_TYPE_LINEAR: { float step = aAttributes.mValues[c][0] / (float)(stops - 1); float intercept = aAttributes.mValues[c][1]; for (size_t i = 0; i < stops; i++) { @@ -748,7 +747,7 @@ static WrFiltersStatus WrFilterOpSVGFEComponentTransfer( } break; } - case SVGFEComponentTransferType::Table: { + case SVG_FECOMPONENTTRANSFER_TYPE_TABLE: { size_t length1 = (size_t)aAttributes.mValues[c].Length() - 1; float step = (float)length1 / (float)(stops - 1); for (size_t i = 0; i < stops; i++) { @@ -764,7 +763,7 @@ static WrFiltersStatus WrFilterOpSVGFEComponentTransfer( } break; } - case SVGFEComponentTransferType::SameAsR: { + case SVG_FECOMPONENTTRANSFER_SAME_AS_R: { // We already checked c > 0 above. for (size_t i = 0; i < stops; i++) { values[i * 4 + c] = values[i * 4]; @@ -825,8 +824,8 @@ static WrFiltersStatus WrFilterOpSVGFEConvolveMatrix( } } switch (aAttributes.mEdgeMode) { - case SVGEdgeMode::Unknown: - case SVGEdgeMode::Duplicate: + case SVG_EDGEMODE_UNKNOWN: + case SVG_EDGEMODE_DUPLICATE: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEConvolveMatrixEdgeModeDuplicate( aGraphNode, aAttributes.mKernelSize.Width(), @@ -837,7 +836,7 @@ static WrFiltersStatus WrFilterOpSVGFEConvolveMatrix( aAttributes.mKernelUnitLength.Height(), aAttributes.mPreserveAlpha)); return WrFiltersStatus::SVGFE; - case SVGEdgeMode::None: + case SVG_EDGEMODE_NONE: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEConvolveMatrixEdgeModeNone( aGraphNode, aAttributes.mKernelSize.Width(), @@ -848,7 +847,7 @@ static WrFiltersStatus WrFilterOpSVGFEConvolveMatrix( aAttributes.mKernelUnitLength.Height(), aAttributes.mPreserveAlpha)); return WrFiltersStatus::SVGFE; - case SVGEdgeMode::Wrap: + case SVG_EDGEMODE_WRAP: aWrFilters.filters.AppendElement( wr::FilterOp::SVGFEConvolveMatrixEdgeModeWrap( aGraphNode, aAttributes.mKernelSize.Width(), @@ -925,9 +924,8 @@ static WrFiltersStatus WrFilterOpSVGFEDisplacementMap( return WrFiltersStatus::BLOB_FALLBACK; } aWrFilters.filters.AppendElement(wr::FilterOp::SVGFEDisplacementMap( - aGraphNode, aAttributes.mScale, - static_cast(aAttributes.mXChannel), - static_cast(aAttributes.mYChannel))); + aGraphNode, aAttributes.mScale, aAttributes.mXChannel, + aAttributes.mYChannel)); return WrFiltersStatus::SVGFE; } @@ -1067,11 +1065,11 @@ static WrFiltersStatus WrFilterOpSVGFEMorphology( return WrFiltersStatus::BLOB_FALLBACK; } switch (aAttributes.mOperator) { - case SVGMorphologyOperator::Dilate: + case SVG_OPERATOR_DILATE: aWrFilters.filters.AppendElement(wr::FilterOp::SVGFEMorphologyDilate( aGraphNode, aAttributes.mRadii.width, aAttributes.mRadii.height)); return WrFiltersStatus::SVGFE; - case SVGMorphologyOperator::Erode: + case SVG_OPERATOR_ERODE: aWrFilters.filters.AppendElement(wr::FilterOp::SVGFEMorphologyErode( aGraphNode, aAttributes.mRadii.width, aAttributes.mRadii.height)); return WrFiltersStatus::SVGFE; @@ -1179,7 +1177,7 @@ static WrFiltersStatus WrFilterOpSVGFETurbulence( seed = m1; } switch (aAttributes.mType) { - case SVGTurbulenceType::FractalNoise: + case SVG_TURBULENCE_TYPE_FRACTALNOISE: if (aAttributes.mStitchable) { aWrFilters.filters.AppendElement( wr::FilterOp::SVGFETurbulenceWithFractalNoiseWithStitching( @@ -1192,7 +1190,7 @@ static WrFiltersStatus WrFilterOpSVGFETurbulence( aAttributes.mBaseFrequency.height, aAttributes.mOctaves, seed)); } return WrFiltersStatus::SVGFE; - case SVGTurbulenceType::Turbulence: + case SVG_TURBULENCE_TYPE_TURBULENCE: if (aAttributes.mStitchable) { aWrFilters.filters.AppendElement( wr::FilterOp::SVGFETurbulenceWithTurbulenceNoiseWithStitching( diff --git a/icecat/layout/svg/SVGObserverUtils.cpp b/icecat/layout/svg/SVGObserverUtils.cpp index 0e44f31053..14a5732ccb 100644 --- a/icecat/layout/svg/SVGObserverUtils.cpp +++ b/icecat/layout/svg/SVGObserverUtils.cpp @@ -1738,10 +1738,8 @@ SVGPaintServerFrame* SVGObserverUtils::GetAndObservePaintServer( // anonymous block frame, then we look up to its parent (the SVGTextFrame). nsIFrame* paintedFrame = aPaintedFrame; if (paintedFrame->IsInSVGTextSubtree()) { - // Continuations can come and go during reflow, and we don't need to - // observe the referenced element more than once for a given node. - paintedFrame = paintedFrame->GetParent()->FirstContinuation(); - nsIFrame* grandparent = paintedFrame->GetParent()->FirstContinuation(); + paintedFrame = paintedFrame->GetParent(); + nsIFrame* grandparent = paintedFrame->GetParent(); if (grandparent && grandparent->IsSVGTextFrame()) { paintedFrame = grandparent; } diff --git a/icecat/layout/tables/celldata.h b/icecat/layout/tables/celldata.h index 45eb3d61af..c365bdae51 100644 --- a/icecat/layout/tables/celldata.h +++ b/icecat/layout/tables/celldata.h @@ -10,7 +10,6 @@ #include "nsCoord.h" #include "mozilla/gfx/Types.h" #include "mozilla/WritingModes.h" -#include #include class nsTableCellFrame; @@ -293,10 +292,6 @@ inline uint32_t CellData::GetRowSpanOffset() const { } inline void CellData::SetRowSpanOffset(uint32_t aSpan) { - MOZ_ASSERT(aSpan > 0, "a zero-sized span is nonsensical"); - MOZ_ASSERT(aSpan <= MAX_ROWSPAN, "span shouldn't exceed what we can handle"); - aSpan = std::min(aSpan, static_cast(MAX_ROWSPAN)); - mBits &= ~ROW_SPAN_OFFSET; mBits |= (aSpan << ROW_SPAN_SHIFT); mBits |= SPAN; @@ -315,10 +310,6 @@ inline uint32_t CellData::GetColSpanOffset() const { } inline void CellData::SetColSpanOffset(uint32_t aSpan) { - MOZ_ASSERT(aSpan > 0, "a zero-sized span is nonsensical"); - MOZ_ASSERT(aSpan <= MAX_COLSPAN, "span shouldn't exceed what we can handle"); - aSpan = std::min(aSpan, static_cast(MAX_COLSPAN)); - mBits &= ~COL_SPAN_OFFSET; mBits |= (aSpan << COL_SPAN_SHIFT); diff --git a/icecat/layout/tables/nsCellMap.cpp b/icecat/layout/tables/nsCellMap.cpp index 1f8b3c4361..41acc759a1 100644 --- a/icecat/layout/tables/nsCellMap.cpp +++ b/icecat/layout/tables/nsCellMap.cpp @@ -1845,9 +1845,7 @@ int32_t nsCellMap::GetEffectiveColSpan(const nsTableCellMap& aMap, break; } } - - // Enforce that the effective colSpan is between 1 and MAX_COLSPAN: - return std::clamp(colSpan, 1, MAX_COLSPAN); + return colSpan; } int32_t nsCellMap::GetRowSpanForNewCell(nsTableCellFrame* aCellFrameToAdd, @@ -1858,7 +1856,7 @@ int32_t nsCellMap::GetRowSpanForNewCell(nsTableCellFrame* aCellFrameToAdd, if (0 == rowSpan) { // Use a min value of 2 for a zero rowspan to make computations easier // elsewhere. Zero rowspans are only content dependent! - rowSpan = std::clamp(mContentRowCount - aRowIndex, 2, MAX_ROWSPAN); + rowSpan = std::max(2, mContentRowCount - aRowIndex); aIsZeroRowSpan = true; } return rowSpan; @@ -1912,9 +1910,7 @@ int32_t nsCellMap::GetRowSpan(int32_t aRowIndex, int32_t aColIndex, break; } } - - // Enforce that the effective rowSpan is between 1 and MAX_ROWSPAN: - return std::clamp(rowSpan, 1, MAX_ROWSPAN); + return rowSpan; } void nsCellMap::ShrinkWithoutCell(nsTableCellMap& aMap, diff --git a/icecat/media/ffvpx/COPYING.LGPLv2.1 b/icecat/media/ffvpx/COPYING.LGPLv2.1 index 40924c2a6d..58af0d3787 100644 --- a/icecat/media/ffvpx/COPYING.LGPLv2.1 +++ b/icecat/media/ffvpx/COPYING.LGPLv2.1 @@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. - + Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a @@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. - + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION @@ -158,7 +158,7 @@ Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - + 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 @@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - + Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. @@ -267,7 +267,7 @@ Library will still fall under Section 6.) distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - + 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work @@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - + 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined @@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. - + 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or @@ -422,7 +422,7 @@ conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - + 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is @@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - + How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest diff --git a/icecat/media/ffvpx/README_MOZILLA b/icecat/media/ffvpx/README_MOZILLA index 7456e13477..4dc9062902 100644 --- a/icecat/media/ffvpx/README_MOZILLA +++ b/icecat/media/ffvpx/README_MOZILLA @@ -3,9 +3,9 @@ This directory contains files used in gecko builds from FFmpeg (http://ffmpeg.org). The current files are from FFmpeg as of revision -6c114bd6fa9fe006bed7dcdb88de4790510080d4 +252fc2e047297697dea78e63aa908377b47c2136 git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg -git checkout 6c114bd6fa9fe006bed7dcdb88de4790510080d4 +git checkout 252fc2e047297697dea78e63aa908377b47c2136 All source files match their path from the library's source archive. @@ -128,10 +128,6 @@ might need to be reapplied or extended to other files including `time.h`. The issue being that it's included instead of the system header, causing all sorts of issues. -Additionally, `jni.h` and `jni.c` in ffmpeg sources need to be renamed to -`fffjni.h` and `fffjni.c`, and `#include` to those files need to be updated. -This is because there are header collisions with the JDK. - `moz.build` files might need to be modified as well, in light of compilation and link errors. @@ -145,4 +141,3 @@ Finally, apply the patches: stdio.h function, that causes bug 1879740 issue on Windows. - opusenc-dtx.patch to allow enabling DTX in the opus encoder. - libaomenc-svc.patch to allow configuring SVC in the libaom encoder. -- vp9-get-format-rollback.patch to fix a VP9 decoder error handling issue. diff --git a/icecat/media/ffvpx/bug1603271-videodsp-pointer-overflow.patch b/icecat/media/ffvpx/bug1603271-videodsp-pointer-overflow.patch deleted file mode 100644 index bb9add0b0c..0000000000 --- a/icecat/media/ffvpx/bug1603271-videodsp-pointer-overflow.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/media/ffvpx/libavcodec/videodsp_template.c -+++ b/media/ffvpx/libavcodec/videodsp_template.c -@@ -43,8 +43,7 @@ - src += (h - 1) * src_linesize; - src_y = h - 1; - } else if (src_y <= -block_h) { -- src -= src_y * src_linesize; -- src += (1 - block_h) * src_linesize; -+ src += (-src_y + 1 - block_h) * src_linesize; - src_y = 1 - block_h; - } - if (src_x >= w) { diff --git a/icecat/media/ffvpx/changes.patch b/icecat/media/ffvpx/changes.patch index 275ac815cd..0a7d40ed97 100644 --- a/icecat/media/ffvpx/changes.patch +++ b/icecat/media/ffvpx/changes.patch @@ -1,17 +1,32 @@ ---- a/media/ffvpx/libavutil/time.c 2026-04-07 19:11:31.943291487 -0400 -+++ b/media/ffvpx/libavutil/time.c 2026-04-09 10:13:16.927011463 -0400 -@@ -33,7 +33,7 @@ +--- a/libavutil/time.c 2024-02-14 14:57:10.389087159 +0100 ++++ b/libavutil/time.c 2024-04-05 14:43:19.097889433 +0200 +@@ -28,17 +28,17 @@ + #endif + #if HAVE_UNISTD_H + #include + #endif + #if HAVE_WINDOWS_H #include #endif - + -#include "time.h" +#include "fftime.h" #include "error.h" - + int64_t av_gettime(void) ---- a/media/ffvpx/libavutil/parseutils.c 2026-04-07 19:11:31.939291442 -0400 -+++ b/media/ffvpx/libavutil/parseutils.c 2026-04-09 10:13:16.927011463 -0400 -@@ -28,10 +28,10 @@ + { + #if HAVE_GETTIMEOFDAY + struct timeval tv; + gettimeofday(&tv, NULL); + return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec; +--- a/libavutil/parseutils.c 2024-03-26 14:03:12.080640731 +0100 ++++ b/libavutil/parseutils.c 2024-04-05 14:44:56.508766832 +0200 +@@ -23,20 +23,20 @@ + + #include + + #include "avstring.h" + #include "avutil.h" #include "common.h" #include "eval.h" #include "log.h" @@ -21,21 +36,41 @@ #include "parseutils.h" -#include "time.h" +#include "fftime.h" - + #ifdef TEST - -@@ -378,7 +378,7 @@ + + #define av_get_random_seed av_get_random_seed_deterministic + static uint32_t av_get_random_seed_deterministic(void); + + #define av_gettime() 1331972053200000 + +@@ -370,17 +370,17 @@ + av_strlcpy(color_string2, color_string + hex_offset, + FFMIN(slen-hex_offset+1, sizeof(color_string2))); + if ((tail = strchr(color_string2, ALPHA_SEP))) + *tail++ = 0; + len = strlen(color_string2); rgba_color[3] = 255; - + if (!av_strcasecmp(color_string2, "random") || !av_strcasecmp(color_string2, "bikeshed")) { - int rgba = av_get_random_seed(); + int rgba = 0xffffffff; /* av_get_random_seed(); */ rgba_color[0] = rgba >> 24; rgba_color[1] = rgba >> 16; rgba_color[2] = rgba >> 8; ---- a/media/ffvpx/libavutil/eval.c 2026-04-07 19:11:31.939291442 -0400 -+++ b/media/ffvpx/libavutil/eval.c 2026-04-09 10:13:16.927011463 -0400 -@@ -37,7 +37,7 @@ + rgba_color[3] = rgba; + } else if (hex_offset || + strspn(color_string2, "0123456789ABCDEFabcdef") == len) { + char *tail; + unsigned int rgba = strtoul(color_string2, &tail, 16); +--- a/libavutil/eval.c 2024-04-05 14:40:56.917791496 +0200 ++++ b/libavutil/eval.c 2024-04-05 17:39:45.061516936 +0200 +@@ -31,17 +31,17 @@ + #include "avutil.h" + #include "common.h" + #include "eval.h" + #include "ffmath.h" + #include "log.h" #include "mathematics.h" #include "mem.h" #include "sfc64.h" @@ -43,33 +78,39 @@ +#include "fftime.h" #include "avstring.h" #include "reverse.h" - ---- a/media/ffvpx/libavcodec/dxva2.c 2026-04-07 19:11:31.851290449 -0400 -+++ b/media/ffvpx/libavcodec/dxva2.c 2026-04-09 10:13:16.923011414 -0400 + + typedef struct Parser { + const AVClass *class; + int stack_index; + char *s; + const double *const_values; +--- a/media/ffvpx/libavcodec/dxva2.c ++++ b/media/ffvpx/libavcodec/dxva2.c @@ -27,7 +27,7 @@ #include "libavutil/common.h" #include "libavutil/log.h" #include "libavutil/mem.h" -#include "libavutil/time.h" +#include "libavutil/fftime.h" - + #include "avcodec.h" #include "decode.h" -@@ -647,6 +647,7 @@ +--- a/media/ffvpx/libavcodec/dxva2_internal.h ++++ b/media/ffvpx/libavcodec/dxva2_internal.h +@@ -65,6 +65,7 @@ + #endif + + #include "libavutil/hwcontext.h" ++#include "libavutil/mem.h" + + #include "avcodec.h" + #include "internal.h" +--- a/media/ffvpx/libavcodec/dxva2.c ++++ b/media/ffvpx/libavcodec/dxva2.c +@@ -647,6 +647,7 @@ int ff_dxva2_common_frame_params(AVCodec AVD3D11VAFramesContext *frames_hwctx = frames_ctx->hwctx; - + frames_hwctx->BindFlags |= D3D11_BIND_DECODER; + frames_hwctx->BindFlags |= D3D11_BIND_SHADER_RESOURCE; } #endif - ---- a/media/ffvpx/libavcodec/dxva2_internal.h 2026-04-07 19:11:31.851290449 -0400 -+++ b/media/ffvpx/libavcodec/dxva2_internal.h 2026-04-09 10:13:16.923011414 -0400 -@@ -65,6 +65,7 @@ - #endif - - #include "libavutil/hwcontext.h" -+#include "libavutil/mem.h" - - #include "avcodec.h" - #include "internal.h" diff --git a/icecat/media/ffvpx/compat/w32pthreads.h b/icecat/media/ffvpx/compat/w32pthreads.h index b77c299b04..3990e62d58 100644 --- a/icecat/media/ffvpx/compat/w32pthreads.h +++ b/icecat/media/ffvpx/compat/w32pthreads.h @@ -44,9 +44,8 @@ #include "libavutil/internal.h" #include "libavutil/mem.h" #include "libavutil/fftime.h" -#include "libavutil/wchar_filename.h" -typedef struct w32pthread_t { +typedef struct pthread_t { void *handle; void *(*func)(void* arg); void *arg; @@ -72,7 +71,7 @@ typedef CONDITION_VARIABLE pthread_cond_t; #define THREADFUNC_RETTYPE unsigned #endif -av_unused static THREADFUNC_RETTYPE +static av_unused THREADFUNC_RETTYPE __stdcall attribute_align_arg win32thread_worker(void *arg) { pthread_t h = (pthread_t)arg; @@ -80,12 +79,12 @@ __stdcall attribute_align_arg win32thread_worker(void *arg) return 0; } -av_unused static int pthread_create(pthread_t *thread, const void *unused_attr, +static av_unused int pthread_create(pthread_t *thread, const void *unused_attr, void *(*start_routine)(void*), void *arg) { pthread_t ret; - ret = (pthread_t)av_mallocz(sizeof(*ret)); + ret = av_mallocz(sizeof(*ret)); if (!ret) return EAGAIN; @@ -109,7 +108,7 @@ av_unused static int pthread_create(pthread_t *thread, const void *unused_attr, return 0; } -av_unused static int pthread_join(pthread_t thread, void **value_ptr) +static av_unused int pthread_join(pthread_t thread, void **value_ptr) { DWORD ret = WaitForSingleObject(thread->handle, INFINITE); if (ret != WAIT_OBJECT_0) { @@ -149,7 +148,7 @@ static inline int pthread_mutex_unlock(pthread_mutex_t *m) typedef INIT_ONCE pthread_once_t; #define PTHREAD_ONCE_INIT INIT_ONCE_STATIC_INIT -av_unused static int pthread_once(pthread_once_t *once_control, void (*init_routine)(void)) +static av_unused int pthread_once(pthread_once_t *once_control, void (*init_routine)(void)) { BOOL pending = FALSE; InitOnceBeginInitialize(once_control, 0, &pending, NULL); @@ -210,38 +209,4 @@ static inline int pthread_setcancelstate(int state, int *oldstate) return 0; } -static inline int win32_thread_setname(const char *name) -{ -#if !HAVE_UWP - typedef HRESULT (WINAPI *SetThreadDescriptionFn)(HANDLE, PCWSTR); - - // Although SetThreadDescription lives in kernel32.dll, on Windows Server 2016, - // Windows 10 LTSB 2016 and Windows 10 version 1607, it was only available in - // kernelbase.dll. So, load it from there for maximum coverage. - HMODULE kernelbase = GetModuleHandleW(L"kernelbase.dll"); - if (!kernelbase) - return AVERROR(ENOSYS); - - SetThreadDescriptionFn pSetThreadDescription = - (SetThreadDescriptionFn)GetProcAddress(kernelbase, "SetThreadDescription"); - if (!pSetThreadDescription) - return AVERROR(ENOSYS); - - wchar_t *wname; - if (utf8towchar(name, &wname) < 0) - return AVERROR(ENOMEM); - - HRESULT hr = pSetThreadDescription(GetCurrentThread(), wname); - av_free(wname); - return SUCCEEDED(hr) ? 0 : AVERROR(EINVAL); -#else - // UWP is not supported because we cannot use LoadLibrary/GetProcAddress to - // detect the availability of the SetThreadDescription API. There is a small - // gap in Windows builds 1507-1607 where it was not available. UWP allows - // querying the availability of APIs with QueryOptionalDelayLoadedAPI, but it - // requires /DELAYLOAD:kernel32.dll during linking, and we cannot enforce that. - return AVERROR(ENOSYS); -#endif -} - #endif /* COMPAT_W32PTHREADS_H */ diff --git a/icecat/media/ffvpx/config.h b/icecat/media/ffvpx/config.h index baf1fa959a..528215efd6 100644 --- a/icecat/media/ffvpx/config.h +++ b/icecat/media/ffvpx/config.h @@ -1,3 +1,5 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ /* 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/. */ @@ -10,8 +12,6 @@ # include "config_android32.h" # elif defined(MOZ_WIDGET_ANDROID) && defined(__aarch64__) # include "config_android64.h" -# elif defined(MOZ_WIDGET_ANDROID) && defined(HAVE_64BIT_BUILD) -# include "config_android_x86_64.h" # elif defined(__aarch64__) # include "config_unix_aarch64.h" # else @@ -49,16 +49,10 @@ # else # include "config_darwin64.h" # endif -# elif defined(MOZ_WIDGET_ANDROID) && defined(__aarch64__) -# include "config_android64.h" -# elif defined(MOZ_WIDGET_ANDROID) && defined(__arm__) -# include "config_android32.h" # elif defined(MOZ_WIDGET_ANDROID) && defined(HAVE_64BIT_BUILD) -# include "config_android_x86_64.h" +# include "config_android_x86_64.h" # elif defined(XP_UNIX) -# if defined(__aarch64__) -# include "config_unix_aarch64.h" -# elif defined(HAVE_64BIT_BUILD) +# if defined(HAVE_64BIT_BUILD) # include "config_unix64.h" # else # include "config_unix32.h" diff --git a/icecat/media/ffvpx/config_android32.h b/icecat/media/ffvpx/config_android32.h index 10bdaa98cc..0136155f7e 100644 --- a/icecat/media/ffvpx/config_android32.h +++ b/icecat/media/ffvpx/config_android32.h @@ -322,7 +322,7 @@ #define HAVE_MPROTECT 1 #define HAVE_NANOSLEEP 1 #define HAVE_PEEKNAMEDPIPE 0 -#define HAVE_POSIX_MEMALIGN 1 +#define HAVE_POSIX_MEMALIGN 0 #define HAVE_PTHREAD_CANCEL 0 #define HAVE_SCHED_GETAFFINITY 1 #define HAVE_SECITEMIMPORT 0 @@ -342,7 +342,6 @@ #define HAVE_BCRYPT 0 #define HAVE_VAAPI_DRM 0 #define HAVE_VAAPI_WIN32 0 -#define HAVE_VAAPI_X11 0 #define HAVE_VDPAU_X11 0 #define HAVE_PTHREADS 1 #define HAVE_OS2THREADS 0 @@ -479,7 +478,7 @@ #define CONFIG_LIBCACA 0 #define CONFIG_LIBCELT 0 #define CONFIG_LIBCODEC2 0 -#define CONFIG_LIBDAV1D 1 +#define CONFIG_LIBDAV1D 0 #define CONFIG_LIBDC1394 0 #define CONFIG_LIBDRM 0 #define CONFIG_LIBFLITE 0 @@ -535,8 +534,7 @@ #define CONFIG_LIBZMQ 0 #define CONFIG_LIBZVBI 0 #define CONFIG_LV2 0 -#define CONFIG_MEDIACODEC 1 -#define CONFIG_AAC_MEDIACODEC_DECODER 1 +#define CONFIG_MEDIACODEC 0 #define CONFIG_OPENAL 0 #define CONFIG_OPENGL 0 #define CONFIG_OPENSSL 0 @@ -591,7 +589,7 @@ #define CONFIG_RUNTIME_CPUDETECT 1 #define CONFIG_SAFE_BITSTREAM_READER 1 #define CONFIG_SHARED 1 -#define CONFIG_SMALL 0 +#define CONFIG_SMALL 1 #define CONFIG_STATIC 0 #define CONFIG_SWSCALE_ALPHA 1 #define CONFIG_GPL 0 @@ -622,21 +620,21 @@ #define CONFIG_AUTODETECT 0 #define CONFIG_FONTCONFIG 0 #define CONFIG_LARGE_TESTS 1 -#define CONFIG_LINUX_PERF 0 +#define CONFIG_LINUX_PERF 1 #define CONFIG_MACOS_KPERF 0 #define CONFIG_MEMORY_POISONING 0 #define CONFIG_NEON_CLOBBER_TEST 0 #define CONFIG_OSSFUZZ 0 #define CONFIG_PIC 1 #define CONFIG_PTX_COMPRESSION 0 -#define CONFIG_THUMB 1 +#define CONFIG_THUMB 0 #define CONFIG_VALGRIND_BACKTRACE 0 #define CONFIG_XMM_CLOBBER_TEST 0 #define CONFIG_BSFS 0 #define CONFIG_DECODERS 1 -#define CONFIG_ENCODERS 1 -#define CONFIG_HWACCELS 1 -#define CONFIG_PARSERS 1 +#define CONFIG_ENCODERS 0 +#define CONFIG_HWACCELS 0 +#define CONFIG_PARSERS 0 #define CONFIG_INDEVS 0 #define CONFIG_OUTDEVS 0 #define CONFIG_FILTERS 0 @@ -645,7 +643,7 @@ #define CONFIG_PROTOCOLS 0 #define CONFIG_AANDCTTABLES 0 #define CONFIG_AC3DSP 0 -#define CONFIG_ADTS_HEADER 1 +#define CONFIG_ADTS_HEADER 0 #define CONFIG_ATSC_A53 0 #define CONFIG_AUDIO_FRAME_QUEUE 0 #define CONFIG_AUDIODSP 0 @@ -678,7 +676,7 @@ #define CONFIG_H264CHROMA 0 #define CONFIG_H264DSP 0 #define CONFIG_H264PARSE 0 -#define CONFIG_H264PRED 1 +#define CONFIG_H264PRED 0 #define CONFIG_H264QPEL 0 #define CONFIG_HEVCPARSE 0 #define CONFIG_HPELDSP 0 @@ -733,10 +731,10 @@ #define CONFIG_VAAPI_1 0 #define CONFIG_VAAPI_ENCODE 0 #define CONFIG_VC1DSP 0 -#define CONFIG_VIDEODSP 1 +#define CONFIG_VIDEODSP 0 #define CONFIG_VP3DSP 0 #define CONFIG_VP56DSP 0 -#define CONFIG_VP8DSP 1 +#define CONFIG_VP8DSP 0 #define CONFIG_WMA_FREQS 0 #define CONFIG_WMV2DSP 0 #endif /* FFMPEG_CONFIG_H */ diff --git a/icecat/media/ffvpx/config_android64.h b/icecat/media/ffvpx/config_android64.h index 748a08c1ed..8eb0b2a073 100644 --- a/icecat/media/ffvpx/config_android64.h +++ b/icecat/media/ffvpx/config_android64.h @@ -479,7 +479,7 @@ #define CONFIG_LIBCACA 0 #define CONFIG_LIBCELT 0 #define CONFIG_LIBCODEC2 0 -#define CONFIG_LIBDAV1D 1 +#define CONFIG_LIBDAV1D 0 #define CONFIG_LIBDC1394 0 #define CONFIG_LIBDRM 0 #define CONFIG_LIBFLITE 0 @@ -535,8 +535,7 @@ #define CONFIG_LIBZMQ 0 #define CONFIG_LIBZVBI 0 #define CONFIG_LV2 0 -#define CONFIG_MEDIACODEC 1 -#define CONFIG_AAC_MEDIACODEC_DECODER 1 +#define CONFIG_MEDIACODEC 0 #define CONFIG_OPENAL 0 #define CONFIG_OPENGL 0 #define CONFIG_OPENSSL 0 @@ -591,7 +590,7 @@ #define CONFIG_RUNTIME_CPUDETECT 1 #define CONFIG_SAFE_BITSTREAM_READER 1 #define CONFIG_SHARED 1 -#define CONFIG_SMALL 0 +#define CONFIG_SMALL 1 #define CONFIG_STATIC 0 #define CONFIG_SWSCALE_ALPHA 1 #define CONFIG_GPL 0 @@ -622,7 +621,7 @@ #define CONFIG_AUTODETECT 0 #define CONFIG_FONTCONFIG 0 #define CONFIG_LARGE_TESTS 1 -#define CONFIG_LINUX_PERF 0 +#define CONFIG_LINUX_PERF 1 #define CONFIG_MACOS_KPERF 0 #define CONFIG_MEMORY_POISONING 0 #define CONFIG_NEON_CLOBBER_TEST 0 @@ -634,9 +633,9 @@ #define CONFIG_XMM_CLOBBER_TEST 0 #define CONFIG_BSFS 0 #define CONFIG_DECODERS 1 -#define CONFIG_ENCODERS 1 -#define CONFIG_HWACCELS 1 -#define CONFIG_PARSERS 1 +#define CONFIG_ENCODERS 0 +#define CONFIG_HWACCELS 0 +#define CONFIG_PARSERS 0 #define CONFIG_INDEVS 0 #define CONFIG_OUTDEVS 0 #define CONFIG_FILTERS 0 @@ -645,7 +644,7 @@ #define CONFIG_PROTOCOLS 0 #define CONFIG_AANDCTTABLES 0 #define CONFIG_AC3DSP 0 -#define CONFIG_ADTS_HEADER 1 +#define CONFIG_ADTS_HEADER 0 #define CONFIG_ATSC_A53 0 #define CONFIG_AUDIO_FRAME_QUEUE 0 #define CONFIG_AUDIODSP 0 @@ -678,7 +677,7 @@ #define CONFIG_H264CHROMA 0 #define CONFIG_H264DSP 0 #define CONFIG_H264PARSE 0 -#define CONFIG_H264PRED 1 +#define CONFIG_H264PRED 0 #define CONFIG_H264QPEL 0 #define CONFIG_HEVCPARSE 0 #define CONFIG_HPELDSP 0 @@ -733,10 +732,10 @@ #define CONFIG_VAAPI_1 0 #define CONFIG_VAAPI_ENCODE 0 #define CONFIG_VC1DSP 0 -#define CONFIG_VIDEODSP 1 +#define CONFIG_VIDEODSP 0 #define CONFIG_VP3DSP 0 #define CONFIG_VP56DSP 0 -#define CONFIG_VP8DSP 1 +#define CONFIG_VP8DSP 0 #define CONFIG_WMA_FREQS 0 #define CONFIG_WMV2DSP 0 #endif /* FFMPEG_CONFIG_H */ diff --git a/icecat/media/ffvpx/config_android_x86_64.h b/icecat/media/ffvpx/config_android_x86_64.h index 55d06fd1d3..3f1c28d9d2 100644 --- a/icecat/media/ffvpx/config_android_x86_64.h +++ b/icecat/media/ffvpx/config_android_x86_64.h @@ -535,8 +535,7 @@ #define CONFIG_LIBZMQ 0 #define CONFIG_LIBZVBI 0 #define CONFIG_LV2 0 -#define CONFIG_MEDIACODEC 1 -#define CONFIG_AAC_MEDIACODEC_DECODER 1 +#define CONFIG_MEDIACODEC 0 #define CONFIG_OPENAL 0 #define CONFIG_OPENGL 0 #define CONFIG_OPENSSL 0 @@ -591,7 +590,7 @@ #define CONFIG_RUNTIME_CPUDETECT 1 #define CONFIG_SAFE_BITSTREAM_READER 1 #define CONFIG_SHARED 1 -#define CONFIG_SMALL 0 +#define CONFIG_SMALL 1 #define CONFIG_STATIC 0 #define CONFIG_SWSCALE_ALPHA 1 #define CONFIG_GPL 0 @@ -634,8 +633,8 @@ #define CONFIG_XMM_CLOBBER_TEST 0 #define CONFIG_BSFS 0 #define CONFIG_DECODERS 1 -#define CONFIG_ENCODERS 1 -#define CONFIG_HWACCELS 1 +#define CONFIG_ENCODERS 0 +#define CONFIG_HWACCELS 0 #define CONFIG_PARSERS 1 #define CONFIG_INDEVS 0 #define CONFIG_OUTDEVS 0 @@ -645,7 +644,7 @@ #define CONFIG_PROTOCOLS 0 #define CONFIG_AANDCTTABLES 0 #define CONFIG_AC3DSP 0 -#define CONFIG_ADTS_HEADER 1 +#define CONFIG_ADTS_HEADER 0 #define CONFIG_ATSC_A53 0 #define CONFIG_AUDIO_FRAME_QUEUE 0 #define CONFIG_AUDIODSP 0 diff --git a/icecat/media/ffvpx/config_components.h b/icecat/media/ffvpx/config_components.h index 23b3f2d848..7528cf0314 100644 --- a/icecat/media/ffvpx/config_components.h +++ b/icecat/media/ffvpx/config_components.h @@ -1,3 +1,5 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ /* 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/. */ diff --git a/icecat/media/ffvpx/config_components_audio_only.h b/icecat/media/ffvpx/config_components_audio_only.h index 58938311f1..60ccfc423b 100644 --- a/icecat/media/ffvpx/config_components_audio_only.h +++ b/icecat/media/ffvpx/config_components_audio_only.h @@ -128,6 +128,7 @@ #define CONFIG_H264_DECODER 0 #define CONFIG_H264_CRYSTALHD_DECODER 0 #define CONFIG_H264_V4L2M2M_DECODER 0 +#define CONFIG_H264_MEDIACODEC_DECODER 0 #define CONFIG_H264_MMAL_DECODER 0 #define CONFIG_H264_QSV_DECODER 0 #define CONFIG_H264_RKMPP_DECODER 0 @@ -585,6 +586,7 @@ #define CONFIG_LIBOPENH264_DECODER 0 #define CONFIG_H264_CUVID_DECODER 0 #define CONFIG_HEVC_CUVID_DECODER 0 +#define CONFIG_HEVC_MEDIACODEC_DECODER 0 #define CONFIG_MJPEG_CUVID_DECODER 0 #define CONFIG_MJPEG_QSV_DECODER 0 #define CONFIG_MPEG1_CUVID_DECODER 0 @@ -593,8 +595,10 @@ #define CONFIG_MPEG4_MEDIACODEC_DECODER 0 #define CONFIG_VC1_CUVID_DECODER 0 #define CONFIG_VP8_CUVID_DECODER 0 +#define CONFIG_VP8_MEDIACODEC_DECODER 0 #define CONFIG_VP8_QSV_DECODER 0 #define CONFIG_VP9_CUVID_DECODER 0 +#define CONFIG_VP9_MEDIACODEC_DECODER 0 #define CONFIG_VP9_QSV_DECODER 0 #define CONFIG_A64MULTI_ENCODER 0 #define CONFIG_A64MULTI5_ENCODER 0 @@ -830,7 +834,6 @@ #define CONFIG_MPEG2_QSV_ENCODER 0 #define CONFIG_MPEG2_VAAPI_ENCODER 0 #define CONFIG_MPEG4_OMX_ENCODER 0 -#define CONFIG_MPEG4_MEDIACODEC_ENCODER 0 #define CONFIG_MPEG4_V4L2M2M_ENCODER 0 #define CONFIG_PRORES_VIDEOTOOLBOX_ENCODER 0 #define CONFIG_VP8_V4L2M2M_ENCODER 0 @@ -894,7 +897,6 @@ #define CONFIG_VP9_VAAPI_HWACCEL 0 #define CONFIG_VP9_VDPAU_HWACCEL 0 #define CONFIG_VP9_VIDEOTOOLBOX_HWACCEL 0 -#define CONFIG_VP9_VULKAN_HWACCEL 0 #define CONFIG_WMV3_D3D11VA_HWACCEL 0 #define CONFIG_WMV3_D3D11VA2_HWACCEL 0 #define CONFIG_WMV3_DXVA2_HWACCEL 0 diff --git a/icecat/media/ffvpx/config_components_audio_video.h b/icecat/media/ffvpx/config_components_audio_video.h index b287b85bd4..d665d51480 100644 --- a/icecat/media/ffvpx/config_components_audio_video.h +++ b/icecat/media/ffvpx/config_components_audio_video.h @@ -1,7 +1,7 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_COMPONENTS_H #define FFMPEG_CONFIG_COMPONENTS_H -#define CONFIG_AAC_ADTSTOASC_BSF 1 +#define CONFIG_AAC_ADTSTOASC_BSF 0 #define CONFIG_AV1_FRAME_MERGE_BSF 0 #define CONFIG_AV1_FRAME_SPLIT_BSF 0 #define CONFIG_AV1_METADATA_BSF 0 @@ -130,6 +130,7 @@ #define CONFIG_H264_DECODER 0 #define CONFIG_H264_CRYSTALHD_DECODER 0 #define CONFIG_H264_V4L2M2M_DECODER 0 +#define CONFIG_H264_MEDIACODEC_DECODER 0 #define CONFIG_H264_MMAL_DECODER 0 #define CONFIG_H264_QSV_DECODER 0 #define CONFIG_H264_RKMPP_DECODER 0 @@ -597,10 +598,12 @@ #define CONFIG_LIBAOM_AV1_DECODER 0 #define CONFIG_AV1_DECODER 1 #define CONFIG_AV1_CUVID_DECODER 0 +#define CONFIG_AV1_MEDIACODEC_DECODER 0 #define CONFIG_AV1_QSV_DECODER 0 #define CONFIG_LIBOPENH264_DECODER 0 #define CONFIG_H264_CUVID_DECODER 0 #define CONFIG_HEVC_CUVID_DECODER 0 +#define CONFIG_HEVC_MEDIACODEC_DECODER 0 #define CONFIG_MJPEG_CUVID_DECODER 0 #define CONFIG_MJPEG_QSV_DECODER 0 #define CONFIG_MPEG1_CUVID_DECODER 0 @@ -609,8 +612,10 @@ #define CONFIG_MPEG4_MEDIACODEC_DECODER 0 #define CONFIG_VC1_CUVID_DECODER 0 #define CONFIG_VP8_CUVID_DECODER 0 +#define CONFIG_VP8_MEDIACODEC_DECODER 0 #define CONFIG_VP8_QSV_DECODER 0 #define CONFIG_VP9_CUVID_DECODER 0 +#define CONFIG_VP9_MEDIACODEC_DECODER 0 #define CONFIG_VP9_QSV_DECODER 0 #define CONFIG_VNULL_DECODER 0 #define CONFIG_ANULL_DECODER 0 @@ -644,6 +649,7 @@ #define CONFIG_H261_ENCODER 0 #define CONFIG_H263_ENCODER 0 #define CONFIG_H263P_ENCODER 0 +#define CONFIG_H264_MEDIACODEC_ENCODER 0 #define CONFIG_HAP_ENCODER 0 #define CONFIG_HUFFYUV_ENCODER 0 #define CONFIG_JPEG2000_ENCODER 0 @@ -654,7 +660,6 @@ #define CONFIG_MPEG1VIDEO_ENCODER 0 #define CONFIG_MPEG2VIDEO_ENCODER 0 #define CONFIG_MPEG4_ENCODER 0 -#define CONFIG_MPEG4_MEDIACODEC_ENCODER 0 #define CONFIG_MSMPEG4V2_ENCODER 0 #define CONFIG_MSMPEG4V3_ENCODER 0 #define CONFIG_MSVIDEO1_ENCODER 0 @@ -842,6 +847,7 @@ #define CONFIG_H264_VAAPI_ENCODER 0 #define CONFIG_H264_VIDEOTOOLBOX_ENCODER 0 #define CONFIG_HEVC_AMF_ENCODER 0 +#define CONFIG_HEVC_MEDIACODEC_ENCODER 0 #define CONFIG_HEVC_MF_ENCODER 0 #define CONFIG_HEVC_NVENC_ENCODER 0 #define CONFIG_HEVC_QSV_ENCODER 0 @@ -920,7 +926,6 @@ #define CONFIG_VP9_VAAPI_HWACCEL 0 #define CONFIG_VP9_VDPAU_HWACCEL 0 #define CONFIG_VP9_VIDEOTOOLBOX_HWACCEL 0 -#define CONFIG_VP9_VULKAN_HWACCEL 0 #define CONFIG_WMV3_D3D11VA_HWACCEL 0 #define CONFIG_WMV3_D3D11VA2_HWACCEL 0 #define CONFIG_WMV3_DXVA2_HWACCEL 0 diff --git a/icecat/media/ffvpx/config_override.h b/icecat/media/ffvpx/config_override.h index fcc255a318..b628ab8fe7 100644 --- a/icecat/media/ffvpx/config_override.h +++ b/icecat/media/ffvpx/config_override.h @@ -1,21 +1,5 @@ // This file contains overrides for config.h, that can be platform-specific. -// CBS is required for VP9 and AV1 decoding. -#if !defined(MOZ_FFVPX_AUDIOONLY) -#undef CONFIG_CBS -#define CONFIG_CBS 1 -#undef CONFIG_CBS_VP9 -#define CONFIG_CBS_VP9 1 -#endif - -// libdav1d is the AV1 decoder; only built on video configurations. -#undef CONFIG_LIBDAV1D -#if defined(MOZ_FFVPX_AUDIOONLY) -#define CONFIG_LIBDAV1D 0 -#else -#define CONFIG_LIBDAV1D 1 -#endif - #undef CONFIG_FFT #undef CONFIG_RDFT #define CONFIG_FFT 1 @@ -81,51 +65,3 @@ #undef HAVE_GETAUXVAL #define HAVE_GETAUXVAL 0 #endif - -/** - * Android hardware decoding via MediaCodec NDK -*/ - -#undef CONFIG_MEDIACODEC -#undef CONFIG_AAC_MEDIACODEC_DECODER -#undef CONFIG_H264_MEDIACODEC_DECODER -#undef CONFIG_HEVC_MEDIACODEC_DECODER -#undef CONFIG_VP8_MEDIACODEC_DECODER -#undef CONFIG_VP9_MEDIACODEC_DECODER -#undef CONFIG_AV1_MEDIACODEC_DECODER -#undef CONFIG_H264_MEDIACODEC_ENCODER -#undef CONFIG_HEVC_MEDIACODEC_ENCODER -#undef CONFIG_VP8_MEDIACODEC_ENCODER -#undef CONFIG_VP9_MEDIACODEC_ENCODER -#undef CONFIG_AV1_MEDIACODEC_ENCODER - -#if defined (MOZ_WIDGET_ANDROID) && !defined(MOZ_FFVPX_AUDIOONLY) - #define CONFIG_MEDIACODEC 1 - #define CONFIG_AAC_MEDIACODEC_DECODER 1 - #define CONFIG_H264_MEDIACODEC_DECODER 1 - #define CONFIG_HEVC_MEDIACODEC_DECODER 1 - #define CONFIG_VP8_MEDIACODEC_DECODER 1 - #define CONFIG_VP9_MEDIACODEC_DECODER 1 - #define CONFIG_AV1_MEDIACODEC_DECODER 1 - #define CONFIG_H264_MEDIACODEC_ENCODER 1 - #define CONFIG_HEVC_MEDIACODEC_ENCODER 1 - #define CONFIG_VP8_MEDIACODEC_ENCODER 1 - #define CONFIG_VP9_MEDIACODEC_ENCODER 1 - #define CONFIG_AV1_MEDIACODEC_ENCODER 1 -#else - #define CONFIG_MEDIACODEC 0 - #define CONFIG_AAC_MEDIACODEC_DECODER 0 - #define CONFIG_H264_MEDIACODEC_DECODER 0 - #define CONFIG_HEVC_MEDIACODEC_DECODER 0 - #define CONFIG_VP8_MEDIACODEC_DECODER 0 - #define CONFIG_VP9_MEDIACODEC_DECODER 0 - #define CONFIG_AV1_MEDIACODEC_DECODER 0 - #define CONFIG_H264_MEDIACODEC_ENCODER 0 - #define CONFIG_HEVC_MEDIACODEC_ENCODER 0 - #define CONFIG_VP8_MEDIACODEC_ENCODER 0 - #define CONFIG_VP9_MEDIACODEC_ENCODER 0 - #define CONFIG_AV1_MEDIACODEC_ENCODER 0 -#endif - -#define CONFIG_H264_MEDIACODEC_DECODER_EXTRADATA 0 -#define CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA 0 diff --git a/icecat/media/ffvpx/flac-alloc-failure.patch b/icecat/media/ffvpx/flac-alloc-failure.patch deleted file mode 100644 index 3773b4d14c..0000000000 --- a/icecat/media/ffvpx/flac-alloc-failure.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/media/ffvpx/libavcodec/flacdec.c b/media/ffvpx/libavcodec/flacdec.c -index 0c88f577a1..e6e6487470 100644 ---- a/media/ffvpx/libavcodec/flacdec.c -+++ b/media/ffvpx/libavcodec/flacdec.c -@@ -148,8 +148,10 @@ - return buf_size; - - av_fast_malloc(&s->decoded_buffer, &s->decoded_buffer_size, buf_size); -- if (!s->decoded_buffer) -+ if (!s->decoded_buffer) { -+ memset(s->decoded, 0, sizeof(s->decoded)); - return AVERROR(ENOMEM); -+ } - - ret = av_samples_fill_arrays((uint8_t **)s->decoded, NULL, - s->decoded_buffer, -@@ -164,8 +166,10 @@ - return buf_size; - - av_fast_malloc(&s->decoded_buffer_33bps, &s->decoded_buffer_size_33bps, buf_size); -- if (!s->decoded_buffer_33bps) -+ if (!s->decoded_buffer_33bps) { -+ s->decoded_33bps = NULL; - return AVERROR(ENOMEM); -+ } - - ret = av_samples_fill_arrays((uint8_t **)&s->decoded_33bps, NULL, - s->decoded_buffer_33bps, -@@ -665,7 +669,7 @@ - fi.samplerate = s->stream_info.samplerate; - s->stream_info.samplerate = s->avctx->sample_rate = fi.samplerate; - -- if (!s->got_streaminfo) { -+ if (!s->got_streaminfo || !s->decoded_buffer) { - ret = allocate_buffers(s); - if (ret < 0) - return ret; diff --git a/icecat/media/ffvpx/libaomenc-svc.patch b/icecat/media/ffvpx/libaomenc-svc.patch index 082db6546c..7dcff3dbfa 100644 --- a/icecat/media/ffvpx/libaomenc-svc.patch +++ b/icecat/media/ffvpx/libaomenc-svc.patch @@ -119,8 +119,8 @@ index 0f7571ee7a1ba..a116989b1f4bc 100644 #if AOM_ENCODER_ABI_VERSION >= 23 { const AVDictionaryEntry *en = NULL; -@@ -1395,6 +1395,25 @@ - +@@ -1310,6 +1385,25 @@ FF_ENABLE_DEPRECATION_WARNINGS + if (frame->pict_type == AV_PICTURE_TYPE_I) flags |= AOM_EFLAG_FORCE_KF; + @@ -142,9 +142,9 @@ index 0f7571ee7a1ba..a116989b1f4bc 100644 + return res; + } + } - - res = add_hdr_plus(avctx, rawimg, frame); - if (res < 0) + } + + res = aom_codec_encode(&ctx->encoder, rawimg, timestamp, duration, flags); @@ -1538,6 +1632,7 @@ static const AVOption options[] = { { "enable-masked-comp", "Enable masked compound", OFFSET(enable_masked_comp), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, { "enable-interintra-comp", "Enable interintra compound", OFFSET(enable_interintra_comp), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, diff --git a/icecat/media/ffvpx/libavcodec/aarch64/h264dsp_init_aarch64.c b/icecat/media/ffvpx/libavcodec/aarch64/h264dsp_init_aarch64.c index c684574320..6bf3ecb8a1 100644 --- a/icecat/media/ffvpx/libavcodec/aarch64/h264dsp_init_aarch64.c +++ b/icecat/media/ffvpx/libavcodec/aarch64/h264dsp_init_aarch64.c @@ -112,55 +112,55 @@ av_cold void ff_h264dsp_init_aarch64(H264DSPContext *c, const int bit_depth, int cpu_flags = av_get_cpu_flags(); if (have_neon(cpu_flags) && bit_depth == 8) { - c->v_loop_filter_luma = ff_h264_v_loop_filter_luma_neon; - c->h_loop_filter_luma = ff_h264_h_loop_filter_luma_neon; - c->v_loop_filter_luma_intra= ff_h264_v_loop_filter_luma_intra_neon; - c->h_loop_filter_luma_intra= ff_h264_h_loop_filter_luma_intra_neon; + c->h264_v_loop_filter_luma = ff_h264_v_loop_filter_luma_neon; + c->h264_h_loop_filter_luma = ff_h264_h_loop_filter_luma_neon; + c->h264_v_loop_filter_luma_intra= ff_h264_v_loop_filter_luma_intra_neon; + c->h264_h_loop_filter_luma_intra= ff_h264_h_loop_filter_luma_intra_neon; - c->v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon; - c->v_loop_filter_chroma_intra = ff_h264_v_loop_filter_chroma_intra_neon; + c->h264_v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon; + c->h264_v_loop_filter_chroma_intra = ff_h264_v_loop_filter_chroma_intra_neon; if (chroma_format_idc <= 1) { - c->h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon; - c->h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma_intra_neon; - c->h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_mbaff_intra_neon; + c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon; + c->h264_h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma_intra_neon; + c->h264_h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_mbaff_intra_neon; } else { - c->h_loop_filter_chroma = ff_h264_h_loop_filter_chroma422_neon; - c->h_loop_filter_chroma_mbaff = ff_h264_h_loop_filter_chroma_neon; - c->h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma422_intra_neon; - c->h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_intra_neon; + c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma422_neon; + c->h264_h_loop_filter_chroma_mbaff = ff_h264_h_loop_filter_chroma_neon; + c->h264_h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma422_intra_neon; + c->h264_h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_intra_neon; } - c->weight_pixels_tab[0] = ff_weight_h264_pixels_16_neon; - c->weight_pixels_tab[1] = ff_weight_h264_pixels_8_neon; - c->weight_pixels_tab[2] = ff_weight_h264_pixels_4_neon; + c->weight_h264_pixels_tab[0] = ff_weight_h264_pixels_16_neon; + c->weight_h264_pixels_tab[1] = ff_weight_h264_pixels_8_neon; + c->weight_h264_pixels_tab[2] = ff_weight_h264_pixels_4_neon; - c->biweight_pixels_tab[0] = ff_biweight_h264_pixels_16_neon; - c->biweight_pixels_tab[1] = ff_biweight_h264_pixels_8_neon; - c->biweight_pixels_tab[2] = ff_biweight_h264_pixels_4_neon; + c->biweight_h264_pixels_tab[0] = ff_biweight_h264_pixels_16_neon; + c->biweight_h264_pixels_tab[1] = ff_biweight_h264_pixels_8_neon; + c->biweight_h264_pixels_tab[2] = ff_biweight_h264_pixels_4_neon; - c->idct_add = ff_h264_idct_add_neon; - c->idct_dc_add = ff_h264_idct_dc_add_neon; - c->idct_add16 = ff_h264_idct_add16_neon; - c->idct_add16intra = ff_h264_idct_add16intra_neon; + c->h264_idct_add = ff_h264_idct_add_neon; + c->h264_idct_dc_add = ff_h264_idct_dc_add_neon; + c->h264_idct_add16 = ff_h264_idct_add16_neon; + c->h264_idct_add16intra = ff_h264_idct_add16intra_neon; if (chroma_format_idc <= 1) - c->idct_add8 = ff_h264_idct_add8_neon; - c->idct8_add = ff_h264_idct8_add_neon; - c->idct8_dc_add = ff_h264_idct8_dc_add_neon; - c->idct8_add4 = ff_h264_idct8_add4_neon; + c->h264_idct_add8 = ff_h264_idct_add8_neon; + c->h264_idct8_add = ff_h264_idct8_add_neon; + c->h264_idct8_dc_add = ff_h264_idct8_dc_add_neon; + c->h264_idct8_add4 = ff_h264_idct8_add4_neon; } else if (have_neon(cpu_flags) && bit_depth == 10) { - c->v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon_10; - c->v_loop_filter_chroma_intra = ff_h264_v_loop_filter_chroma_intra_neon_10; + c->h264_v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon_10; + c->h264_v_loop_filter_chroma_intra = ff_h264_v_loop_filter_chroma_intra_neon_10; if (chroma_format_idc <= 1) { - c->h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon_10; - c->h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma_intra_neon_10; - c->h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_mbaff_intra_neon_10; + c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon_10; + c->h264_h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma_intra_neon_10; + c->h264_h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_mbaff_intra_neon_10; } else { - c->h_loop_filter_chroma = ff_h264_h_loop_filter_chroma422_neon_10; - c->h_loop_filter_chroma_mbaff = ff_h264_h_loop_filter_chroma_neon_10; - c->h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma422_intra_neon_10; - c->h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_intra_neon_10; + c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma422_neon_10; + c->h264_h_loop_filter_chroma_mbaff = ff_h264_h_loop_filter_chroma_neon_10; + c->h264_h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma422_intra_neon_10; + c->h264_h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_intra_neon_10; } } } diff --git a/icecat/media/ffvpx/libavcodec/aarch64/h264pred_init.c b/icecat/media/ffvpx/libavcodec/aarch64/h264pred_init.c index 9819f85f7d..0ae8f70d23 100644 --- a/icecat/media/ffvpx/libavcodec/aarch64/h264pred_init.c +++ b/icecat/media/ffvpx/libavcodec/aarch64/h264pred_init.c @@ -25,19 +25,6 @@ #include "libavcodec/avcodec.h" #include "libavcodec/h264pred.h" -/* PERFORMANCE WARNING: - * These assembly optimizations have been identified as "performance regressions." - * Due to advancements in modern CPU micro-architectures and compiler optimization - * the C implementations now consistently outperform these handwritten routines. - * - * Keep them here for historical reference. - * - * New optimizations are highly welcome! If you can provide an optimized - * implementation that demonstrably beats the current C version in rigorous - * benchmarks, please submit a patch. - */ -#define ENABLE_INEFFICIENT_ASM 0 - void ff_pred16x16_vert_neon(uint8_t *src, ptrdiff_t stride); void ff_pred16x16_hor_neon(uint8_t *src, ptrdiff_t stride); void ff_pred16x16_plane_neon(uint8_t *src, ptrdiff_t stride); @@ -82,22 +69,16 @@ static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id, { if (bit_depth == 8) { if (chroma_format_idc <= 1) { -#if ENABLE_INEFFICIENT_ASM h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vert_neon; h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_hor_neon; -#endif if (codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) h->pred8x8[PLANE_PRED8x8] = ff_pred8x8_plane_neon; -#if ENABLE_INEFFICIENT_ASM h->pred8x8[DC_128_PRED8x8 ] = ff_pred8x8_128_dc_neon; -#endif if (codec_id != AV_CODEC_ID_RV40 && codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) { -#if ENABLE_INEFFICIENT_ASM h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_neon; h->pred8x8[LEFT_DC_PRED8x8] = ff_pred8x8_left_dc_neon; h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_neon; -#endif h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8] = ff_pred8x8_l0t_dc_neon; h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8] = ff_pred8x8_0lt_dc_neon; h->pred8x8[ALZHEIMER_DC_L00_PRED8x8] = ff_pred8x8_l00_dc_neon; @@ -105,37 +86,27 @@ static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id, } } -#if ENABLE_INEFFICIENT_ASM h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_neon; -#endif h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vert_neon; h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_hor_neon; -#if ENABLE_INEFFICIENT_ASM h->pred16x16[LEFT_DC_PRED8x8] = ff_pred16x16_left_dc_neon; h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_neon; h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_neon; -#endif if (codec_id != AV_CODEC_ID_SVQ3 && codec_id != AV_CODEC_ID_RV40 && codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_neon; } if (bit_depth == 10) { if (chroma_format_idc <= 1) { -#if ENABLE_INEFFICIENT_ASM h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vert_neon_10; -#endif h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_hor_neon_10; if (codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) h->pred8x8[PLANE_PRED8x8] = ff_pred8x8_plane_neon_10; -#if ENABLE_INEFFICIENT_ASM h->pred8x8[DC_128_PRED8x8 ] = ff_pred8x8_128_dc_neon_10; -#endif if (codec_id != AV_CODEC_ID_RV40 && codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) { -#if ENABLE_INEFFICIENT_ASM h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_neon_10; h->pred8x8[LEFT_DC_PRED8x8] = ff_pred8x8_left_dc_neon_10; -#endif h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_neon_10; h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8] = ff_pred8x8_l0t_dc_neon_10; h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8] = ff_pred8x8_0lt_dc_neon_10; diff --git a/icecat/media/ffvpx/libavcodec/aarch64/h264pred_neon.S b/icecat/media/ffvpx/libavcodec/aarch64/h264pred_neon.S index 795d2ce540..d0999938ef 100644 --- a/icecat/media/ffvpx/libavcodec/aarch64/h264pred_neon.S +++ b/icecat/media/ffvpx/libavcodec/aarch64/h264pred_neon.S @@ -489,10 +489,10 @@ function ff_pred16x16_plane_neon_10, export=1 mul v2.8h, v2.8h, v0.8h mul v3.8h, v3.8h, v0.8h addp v2.8h, v2.8h, v3.8h - saddlp v2.4s, v2.8h - addp v2.4s, v2.4s, v2.4s - shl v3.4s, v2.4s, #2 - add v2.4s, v3.4s, v2.4s + addp v2.8h, v2.8h, v2.8h + addp v2.4h, v2.4h, v2.4h + sshll v3.4s, v2.4h, #2 + saddw v2.4s, v3.4s, v2.4h rshrn v4.4h, v2.4s, #6 trn2 v5.4h, v4.4h, v4.4h add v2.4h, v4.4h, v5.4h @@ -506,13 +506,14 @@ function ff_pred16x16_plane_neon_10, export=1 sxtl v6.4s, v5.4h // c mov v0.h[0], wzr + mul v0.8h, v0.8h, v4.h[0] dup v16.4s, v2.s[0] dup v17.4s, v2.s[0] dup v2.8h, v4.h[0] // b dup v3.4s, v6.s[0] // c sshll v2.4s, v2.4h, #3 // b * 8 - smlal v16.4s, v0.4h, v4.h[0] - smlal2 v17.4s, v0.8h, v4.h[0] + saddw v16.4s, v16.4s, v0.4h + saddw2 v17.4s, v17.4s, v0.8h sub v3.4s, v3.4s, v2.4s mov w3, #16 diff --git a/icecat/media/ffvpx/libavcodec/aarch64/hpeldsp_neon.S b/icecat/media/ffvpx/libavcodec/aarch64/hpeldsp_neon.S index fd2c2c98c4..e7c1549c40 100644 --- a/icecat/media/ffvpx/libavcodec/aarch64/hpeldsp_neon.S +++ b/icecat/media/ffvpx/libavcodec/aarch64/hpeldsp_neon.S @@ -50,13 +50,12 @@ .endm .macro pixels16_x2 rnd=1, avg=0 -1: - ldur q1, [x1, #1] - ld1 {v0.16b}, [x1], x2 +1: ld1 {v0.16b, v1.16b}, [x1], x2 + ld1 {v2.16b, v3.16b}, [x1], x2 subs w3, w3, #2 - ldur q3, [x1, #1] - ld1 {v2.16b}, [x1], x2 + ext v1.16b, v0.16b, v1.16b, #1 avg v0.16b, v0.16b, v1.16b + ext v3.16b, v2.16b, v3.16b, #1 avg v2.16b, v2.16b, v3.16b .if \avg ld1 {v1.16b}, [x0], x2 @@ -109,20 +108,20 @@ .macro pixels16_xy2 rnd=1, avg=0 sub w3, w3, #2 - ldur q1, [x1, #1] - ld1 {v0.16b}, [x1], x2 + ld1 {v0.16b, v1.16b}, [x1], x2 + ld1 {v4.16b, v5.16b}, [x1], x2 NRND movi v26.8H, #1 - ldur q5, [x1, #1] - ld1 {v4.16b}, [x1], x2 + ext v1.16b, v0.16b, v1.16b, #1 + ext v5.16b, v4.16b, v5.16b, #1 uaddl v16.8h, v0.8b, v1.8b uaddl2 v20.8h, v0.16b, v1.16b uaddl v18.8h, v4.8b, v5.8b uaddl2 v22.8h, v4.16b, v5.16b 1: subs w3, w3, #2 - ldur q30, [x1, #1] - ld1 {v0.16b}, [x1], x2 + ld1 {v0.16b, v1.16b}, [x1], x2 add v24.8h, v16.8h, v18.8h NRND add v24.8H, v24.8H, v26.8H + ext v30.16b, v0.16b, v1.16b, #1 add v1.8h, v20.8h, v22.8h mshrn v28.8b, v24.8h, #2 NRND add v1.8H, v1.8H, v26.8H @@ -132,12 +131,12 @@ NRND add v1.8H, v1.8H, v26.8H urhadd v28.16b, v28.16b, v16.16b .endif uaddl v16.8h, v0.8b, v30.8b - ldur q3, [x1, #1] - ld1 {v2.16b}, [x1], x2 + ld1 {v2.16b, v3.16b}, [x1], x2 uaddl2 v20.8h, v0.16b, v30.16b st1 {v28.16b}, [x0], x2 add v24.8h, v16.8h, v18.8h NRND add v24.8H, v24.8H, v26.8H + ext v3.16b, v2.16b, v3.16b, #1 add v0.8h, v20.8h, v22.8h mshrn v30.8b, v24.8h, #2 NRND add v0.8H, v0.8H, v26.8H @@ -151,10 +150,10 @@ NRND add v0.8H, v0.8H, v26.8H st1 {v30.16b}, [x0], x2 b.gt 1b - ldur q30, [x1, #1] - ld1 {v0.16b}, [x1], x2 + ld1 {v0.16b, v1.16b}, [x1], x2 add v24.8h, v16.8h, v18.8h NRND add v24.8H, v24.8H, v26.8H + ext v30.16b, v0.16b, v1.16b, #1 add v1.8h, v20.8h, v22.8h mshrn v28.8b, v24.8h, #2 NRND add v1.8H, v1.8H, v26.8H @@ -207,11 +206,10 @@ NRND add v0.8H, v0.8H, v26.8H .endm .macro pixels8_x2 rnd=1, avg=0 -1: - ldur d1, [x1, #1] - ld1 {v0.8b}, [x1], x2 - ldur d3, [x1, #1] - ld1 {v2.8b}, [x1], x2 +1: ld1 {v0.8b, v1.8b}, [x1], x2 + ext v1.8b, v0.8b, v1.8b, #1 + ld1 {v2.8b, v3.8b}, [x1], x2 + ext v3.8b, v2.8b, v3.8b, #1 subs w3, w3, #2 avg v0.8b, v0.8b, v1.8b avg v2.8b, v2.8b, v3.8b @@ -265,23 +263,22 @@ NRND add v0.8H, v0.8H, v26.8H .endm .macro pixels8_xy2 rnd=1, avg=0 - ldur d4, [x1, #1] sub w3, w3, #2 - ld1 {v0.8b}, [x1], x2 + ld1 {v0.16b}, [x1], x2 + ld1 {v1.16b}, [x1], x2 NRND movi v19.8H, #1 - ldur d6, [x1, #1] - ld1 {v1.8b}, [x1], x2 + ext v4.16b, v0.16b, v4.16b, #1 + ext v6.16b, v1.16b, v6.16b, #1 uaddl v16.8h, v0.8b, v4.8b uaddl v17.8h, v1.8b, v6.8b 1: subs w3, w3, #2 - ldur d4, [x1, #1] - ld1 {v0.8b}, [x1], x2 + ld1 {v0.16b}, [x1], x2 add v18.8h, v16.8h, v17.8h + ext v4.16b, v0.16b, v4.16b, #1 NRND add v18.8H, v18.8H, v19.8H uaddl v16.8h, v0.8b, v4.8b mshrn v5.8b, v18.8h, #2 - ldur d6, [x1, #1] - ld1 {v1.8b}, [x1], x2 + ld1 {v1.16b}, [x1], x2 add v18.8h, v16.8h, v17.8h .if \avg ld1 {v7.8b}, [x0] @@ -294,13 +291,14 @@ NRND add v18.8H, v18.8H, v19.8H ld1 {v5.8b}, [x0] urhadd v7.8b, v7.8b, v5.8b .endif + ext v6.16b, v1.16b, v6.16b, #1 uaddl v17.8h, v1.8b, v6.8b st1 {v7.8b}, [x0], x2 b.gt 1b - ldur d4, [x1, #1] - ld1 {v0.8b}, [x1], x2 + ld1 {v0.16b}, [x1], x2 add v18.8h, v16.8h, v17.8h + ext v4.16b, v0.16b, v4.16b, #1 NRND add v18.8H, v18.8H, v19.8H uaddl v16.8h, v0.8b, v4.8b mshrn v5.8b, v18.8h, #2 diff --git a/icecat/media/ffvpx/libavcodec/adts_header.c b/icecat/media/ffvpx/libavcodec/adts_header.c deleted file mode 100644 index 0d6be1aa0e..0000000000 --- a/icecat/media/ffvpx/libavcodec/adts_header.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Audio and Video frame extraction - * Copyright (c) 2003 Fabrice Bellard - * Copyright (c) 2003 Michael Niedermayer - * Copyright (c) 2009 Alex Converse - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "adts_header.h" -#include "adts_parser.h" -#include "get_bits.h" -#include "mpeg4audio.h" -#include "libavutil/avassert.h" - -int ff_adts_header_parse(GetBitContext *gbc, AACADTSHeaderInfo *hdr) -{ - int size, rdb, ch, sr; - int aot, crc_abs; - - memset(hdr, 0, sizeof(*hdr)); - - if (get_bits(gbc, 12) != 0xfff) - return AAC_PARSE_ERROR_SYNC; - - skip_bits1(gbc); /* id */ - skip_bits(gbc, 2); /* layer */ - crc_abs = get_bits1(gbc); /* protection_absent */ - aot = get_bits(gbc, 2); /* profile_objecttype */ - sr = get_bits(gbc, 4); /* sample_frequency_index */ - if (!ff_mpeg4audio_sample_rates[sr]) - return AAC_PARSE_ERROR_SAMPLE_RATE; - skip_bits1(gbc); /* private_bit */ - ch = get_bits(gbc, 3); /* channel_configuration */ - - skip_bits1(gbc); /* original/copy */ - skip_bits1(gbc); /* home */ - - /* adts_variable_header */ - skip_bits1(gbc); /* copyright_identification_bit */ - skip_bits1(gbc); /* copyright_identification_start */ - size = get_bits(gbc, 13); /* aac_frame_length */ - if (size < AV_AAC_ADTS_HEADER_SIZE) - return AAC_PARSE_ERROR_FRAME_SIZE; - - skip_bits(gbc, 11); /* adts_buffer_fullness */ - rdb = get_bits(gbc, 2); /* number_of_raw_data_blocks_in_frame */ - - hdr->object_type = aot + 1; - hdr->chan_config = ch; - hdr->crc_absent = crc_abs; - hdr->num_aac_frames = rdb + 1; - hdr->sampling_index = sr; - hdr->sample_rate = ff_mpeg4audio_sample_rates[sr]; - hdr->samples = (rdb + 1) * 1024; - hdr->bit_rate = size * 8 * hdr->sample_rate / hdr->samples; - hdr->frame_length = size; - - return size; -} - -int ff_adts_header_parse_buf(const uint8_t buf[AV_AAC_ADTS_HEADER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE], - AACADTSHeaderInfo *hdr) -{ - GetBitContext gb; - av_unused int ret = init_get_bits8(&gb, buf, AV_AAC_ADTS_HEADER_SIZE); - av_assert1(ret >= 0); - return ff_adts_header_parse(&gb, hdr); -} diff --git a/icecat/media/ffvpx/libavcodec/adts_header.h b/icecat/media/ffvpx/libavcodec/adts_header.h deleted file mode 100644 index 49bb74ee22..0000000000 --- a/icecat/media/ffvpx/libavcodec/adts_header.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * AAC ADTS header decoding prototypes and structures - * Copyright (c) 2003 Fabrice Bellard - * Copyright (c) 2003 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ADTS_HEADER_H -#define AVCODEC_ADTS_HEADER_H - -#include "adts_parser.h" -#include "defs.h" - -typedef enum { - AAC_PARSE_ERROR_SYNC = -0x1030c0a, - AAC_PARSE_ERROR_SAMPLE_RATE = -0x3030c0a, - AAC_PARSE_ERROR_FRAME_SIZE = -0x4030c0a, -} AACParseError; - -typedef struct AACADTSHeaderInfo { - uint32_t sample_rate; - uint32_t samples; - uint32_t bit_rate; - uint8_t crc_absent; - uint8_t object_type; - uint8_t sampling_index; - uint8_t chan_config; - uint8_t num_aac_frames; - uint32_t frame_length; -} AACADTSHeaderInfo; - -struct GetBitContext; - -/** - * Parse the ADTS frame header to the end of the variable header, which is - * the first 54 bits. - * @param[in] gbc BitContext containing the first 54 bits of the frame. - * @param[out] hdr Pointer to struct where header info is written. - * @return the size in bytes of the header parsed on success and - * AAC_PARSE_ERROR_* values otherwise. - */ -int ff_adts_header_parse(struct GetBitContext *gbc, AACADTSHeaderInfo *hdr); - -/** - * Wrapper around ff_adts_header_parse() for users that don't already have - * a suitable GetBitContext. - */ -int ff_adts_header_parse_buf(const uint8_t buf[AV_AAC_ADTS_HEADER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE], - AACADTSHeaderInfo *hdr); - -/** - * Parse the ADTS frame header contained in the buffer, which is - * the first 54 bits. - * @param[in] buf Pointer to buffer containing the first 54 bits of the frame. - * @param[in] size Size of buffer containing the first 54 bits of the frame. - * @param[out] phdr Pointer to pointer to struct AACADTSHeaderInfo for which - * memory is allocated and header info is written into it. After using the header - * information, the allocated memory must be freed by using av_free. - * @return 0 on success, AAC_PARSE_ERROR_* values on invalid input and - * ordinary AVERROR codes otherwise. - */ -int avpriv_adts_header_parse(AACADTSHeaderInfo **phdr, const uint8_t *buf, size_t size); - -#endif /* AVCODEC_ADTS_HEADER_H */ diff --git a/icecat/media/ffvpx/libavcodec/adts_parser.c b/icecat/media/ffvpx/libavcodec/adts_parser.c deleted file mode 100644 index 66b988d6f6..0000000000 --- a/icecat/media/ffvpx/libavcodec/adts_parser.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include -#include -#include - -#include "libavutil/error.h" -#include "libavutil/mem.h" -#include "adts_header.h" -#include "adts_parser.h" - -int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, uint8_t *frames) -{ -#if CONFIG_ADTS_HEADER - uint8_t tmpbuf[AV_AAC_ADTS_HEADER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE]; - AACADTSHeaderInfo hdr; - int err; - if (!buf) - return AVERROR(EINVAL); - memcpy(tmpbuf, buf, AV_AAC_ADTS_HEADER_SIZE); - err = ff_adts_header_parse_buf(tmpbuf, &hdr); - if (err < 0) - return err; - *samples = hdr.samples; - *frames = hdr.num_aac_frames; - return 0; -#else - return AVERROR(ENOSYS); -#endif -} - -int avpriv_adts_header_parse(AACADTSHeaderInfo **phdr, const uint8_t *buf, size_t size) -{ -#if CONFIG_ADTS_HEADER - int ret = 0; - int allocated = 0; - - if (!phdr || !buf || size < AV_AAC_ADTS_HEADER_SIZE) - return AVERROR_INVALIDDATA; - - if (!*phdr) { - allocated = 1; - *phdr = av_mallocz(sizeof(AACADTSHeaderInfo)); - } - if (!*phdr) - return AVERROR(ENOMEM); - - ret = ff_adts_header_parse_buf(buf, *phdr); - if (ret < 0) { - if (allocated) - av_freep(phdr); - return ret; - } - - return 0; -#else - return AVERROR(ENOSYS); -#endif -} diff --git a/icecat/media/ffvpx/libavcodec/adts_parser.h b/icecat/media/ffvpx/libavcodec/adts_parser.h deleted file mode 100644 index f85becd131..0000000000 --- a/icecat/media/ffvpx/libavcodec/adts_parser.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ADTS_PARSER_H -#define AVCODEC_ADTS_PARSER_H - -#include -#include - -#define AV_AAC_ADTS_HEADER_SIZE 7 - -/** - * Extract the number of samples and frames from AAC data. - * @param[in] buf pointer to AAC data buffer - * @param[out] samples Pointer to where number of samples is written - * @param[out] frames Pointer to where number of frames is written - * @return Returns 0 on success, error code on failure. - */ -int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, - uint8_t *frames); - -#endif /* AVCODEC_ADTS_PARSER_H */ diff --git a/icecat/media/ffvpx/libavcodec/allcodecs.c b/icecat/media/ffvpx/libavcodec/allcodecs.c index 7f8ab4adcd..a2de741403 100644 --- a/icecat/media/ffvpx/libavcodec/allcodecs.c +++ b/icecat/media/ffvpx/libavcodec/allcodecs.c @@ -29,13 +29,10 @@ #include "config.h" #include "config_components.h" -#include "libavutil/avassert.h" #include "libavutil/thread.h" -#include "avcodec.h" #include "codec.h" #include "codec_id.h" #include "codec_internal.h" -#include "codec_desc.h" extern const FFCodec ff_a64multi_encoder; extern const FFCodec ff_a64multi5_encoder; @@ -50,7 +47,6 @@ extern const FFCodec ff_anm_decoder; extern const FFCodec ff_ansi_decoder; extern const FFCodec ff_apng_encoder; extern const FFCodec ff_apng_decoder; -extern const FFCodec ff_apv_decoder; extern const FFCodec ff_arbc_decoder; extern const FFCodec ff_argo_decoder; extern const FFCodec ff_asv1_encoder; @@ -159,13 +155,11 @@ extern const FFCodec ff_h264_mediacodec_encoder; extern const FFCodec ff_h264_mmal_decoder; extern const FFCodec ff_h264_qsv_decoder; extern const FFCodec ff_h264_rkmpp_decoder; -extern const FFCodec ff_h264_rkmpp_encoder; extern const FFCodec ff_hap_encoder; extern const FFCodec ff_hap_decoder; extern const FFCodec ff_hevc_decoder; extern const FFCodec ff_hevc_qsv_decoder; extern const FFCodec ff_hevc_rkmpp_decoder; -extern const FFCodec ff_hevc_rkmpp_encoder; extern const FFCodec ff_hevc_v4l2m2m_decoder; extern const FFCodec ff_hnm4_video_decoder; extern const FFCodec ff_hq_hqa_decoder; @@ -253,7 +247,6 @@ extern const FFCodec ff_pbm_encoder; extern const FFCodec ff_pbm_decoder; extern const FFCodec ff_pcx_encoder; extern const FFCodec ff_pcx_decoder; -extern const FFCodec ff_pdv_encoder; extern const FFCodec ff_pdv_decoder; extern const FFCodec ff_pfm_encoder; extern const FFCodec ff_pfm_decoder; @@ -275,8 +268,6 @@ extern const FFCodec ff_prores_encoder; extern const FFCodec ff_prores_decoder; extern const FFCodec ff_prores_aw_encoder; extern const FFCodec ff_prores_ks_encoder; -extern const FFCodec ff_prores_ks_vulkan_encoder; -extern const FFCodec ff_prores_raw_decoder; extern const FFCodec ff_prosumer_decoder; extern const FFCodec ff_psd_decoder; extern const FFCodec ff_ptx_decoder; @@ -441,7 +432,6 @@ extern const FFCodec ff_ac3_decoder; extern const FFCodec ff_ac3_fixed_encoder; extern const FFCodec ff_ac3_fixed_decoder; extern const FFCodec ff_acelp_kelvin_decoder; -extern const FFCodec ff_ahx_decoder; extern const FFCodec ff_alac_encoder; extern const FFCodec ff_alac_decoder; extern const FFCodec ff_als_decoder; @@ -486,7 +476,6 @@ extern const FFCodec ff_flac_decoder; extern const FFCodec ff_ftr_decoder; extern const FFCodec ff_g723_1_encoder; extern const FFCodec ff_g723_1_decoder; -extern const FFCodec ff_g728_decoder; extern const FFCodec ff_g729_decoder; extern const FFCodec ff_gsm_decoder; extern const FFCodec ff_gsm_ms_decoder; @@ -656,7 +645,6 @@ extern const FFCodec ff_adpcm_agm_decoder; extern const FFCodec ff_adpcm_aica_decoder; extern const FFCodec ff_adpcm_argo_decoder; extern const FFCodec ff_adpcm_argo_encoder; -extern const FFCodec ff_adpcm_circus_decoder; extern const FFCodec ff_adpcm_ct_decoder; extern const FFCodec ff_adpcm_dtk_decoder; extern const FFCodec ff_adpcm_ea_decoder; @@ -685,15 +673,10 @@ extern const FFCodec ff_adpcm_ima_dk3_decoder; extern const FFCodec ff_adpcm_ima_dk4_decoder; extern const FFCodec ff_adpcm_ima_ea_eacs_decoder; extern const FFCodec ff_adpcm_ima_ea_sead_decoder; -extern const FFCodec ff_adpcm_ima_escape_decoder; -extern const FFCodec ff_adpcm_ima_hvqm2_decoder; -extern const FFCodec ff_adpcm_ima_hvqm4_decoder; extern const FFCodec ff_adpcm_ima_iss_decoder; -extern const FFCodec ff_adpcm_ima_magix_decoder; extern const FFCodec ff_adpcm_ima_moflex_decoder; extern const FFCodec ff_adpcm_ima_mtf_decoder; extern const FFCodec ff_adpcm_ima_oki_decoder; -extern const FFCodec ff_adpcm_ima_pda_decoder; extern const FFCodec ff_adpcm_ima_qt_encoder; extern const FFCodec ff_adpcm_ima_qt_decoder; extern const FFCodec ff_adpcm_ima_rad_decoder; @@ -708,10 +691,7 @@ extern const FFCodec ff_adpcm_ima_xbox_decoder; extern const FFCodec ff_adpcm_ms_encoder; extern const FFCodec ff_adpcm_ms_decoder; extern const FFCodec ff_adpcm_mtaf_decoder; -extern const FFCodec ff_adpcm_n64_decoder; extern const FFCodec ff_adpcm_psx_decoder; -extern const FFCodec ff_adpcm_psxc_decoder; -extern const FFCodec ff_adpcm_sanyo_decoder; extern const FFCodec ff_adpcm_sbpro_2_decoder; extern const FFCodec ff_adpcm_sbpro_3_decoder; extern const FFCodec ff_adpcm_sbpro_4_decoder; @@ -806,8 +786,6 @@ extern const FFCodec ff_libjxl_encoder; extern const FFCodec ff_liblc3_encoder; extern const FFCodec ff_liblc3_decoder; extern const FFCodec ff_libmp3lame_encoder; -extern const FFCodec ff_libmpeghdec_decoder; -extern const FFCodec ff_liboapv_encoder; extern const FFCodec ff_libopencore_amrnb_encoder; extern const FFCodec ff_libopencore_amrnb_decoder; extern const FFCodec ff_libopencore_amrwb_decoder; @@ -820,8 +798,6 @@ extern const FFCodec ff_libshine_encoder; extern const FFCodec ff_libspeex_encoder; extern const FFCodec ff_libspeex_decoder; extern const FFCodec ff_libsvtav1_encoder; -extern const FFCodec ff_libsvtjpegxs_encoder; -extern const FFCodec ff_libsvtjpegxs_decoder; extern const FFCodec ff_libtheora_encoder; extern const FFCodec ff_libtwolame_encoder; extern const FFCodec ff_libuavs3d_decoder; @@ -864,27 +840,20 @@ extern const FFCodec ff_libaom_av1_decoder; /* hwaccel hooks only, so prefer external decoders */ extern const FFCodec ff_av1_decoder; extern const FFCodec ff_av1_cuvid_decoder; -extern const FFCodec ff_av1_d3d12va_encoder; extern const FFCodec ff_av1_mediacodec_decoder; extern const FFCodec ff_av1_mediacodec_encoder; extern const FFCodec ff_av1_nvenc_encoder; extern const FFCodec ff_av1_qsv_decoder; extern const FFCodec ff_av1_qsv_encoder; extern const FFCodec ff_av1_amf_encoder; -extern const FFCodec ff_av1_amf_decoder; extern const FFCodec ff_av1_mf_encoder; extern const FFCodec ff_av1_vaapi_encoder; -extern const FFCodec ff_av1_vulkan_encoder; extern const FFCodec ff_libopenh264_encoder; extern const FFCodec ff_libopenh264_decoder; extern const FFCodec ff_h264_amf_encoder; -extern const FFCodec ff_h264_amf_decoder; extern const FFCodec ff_h264_cuvid_decoder; -extern const FFCodec ff_h264_d3d12va_encoder; extern const FFCodec ff_h264_mf_encoder; extern const FFCodec ff_h264_nvenc_encoder; -extern const FFCodec ff_h264_oh_decoder; -extern const FFCodec ff_h264_oh_encoder; extern const FFCodec ff_h264_omx_encoder; extern const FFCodec ff_h264_qsv_encoder; extern const FFCodec ff_h264_v4l2m2m_encoder; @@ -892,15 +861,12 @@ extern const FFCodec ff_h264_vaapi_encoder; extern const FFCodec ff_h264_videotoolbox_encoder; extern const FFCodec ff_h264_vulkan_encoder; extern const FFCodec ff_hevc_amf_encoder; -extern const FFCodec ff_hevc_amf_decoder; extern const FFCodec ff_hevc_cuvid_decoder; extern const FFCodec ff_hevc_d3d12va_encoder; extern const FFCodec ff_hevc_mediacodec_decoder; extern const FFCodec ff_hevc_mediacodec_encoder; extern const FFCodec ff_hevc_mf_encoder; extern const FFCodec ff_hevc_nvenc_encoder; -extern const FFCodec ff_hevc_oh_decoder; -extern const FFCodec ff_hevc_oh_encoder; extern const FFCodec ff_hevc_qsv_encoder; extern const FFCodec ff_hevc_v4l2m2m_encoder; extern const FFCodec ff_hevc_vaapi_encoder; @@ -930,7 +896,6 @@ extern const FFCodec ff_vp8_mediacodec_encoder; extern const FFCodec ff_vp8_qsv_decoder; extern const FFCodec ff_vp8_v4l2m2m_encoder; extern const FFCodec ff_vp8_vaapi_encoder; -extern const FFCodec ff_vp9_amf_decoder; extern const FFCodec ff_vp9_cuvid_decoder; extern const FFCodec ff_vp9_mediacodec_decoder; extern const FFCodec ff_vp9_mediacodec_encoder; @@ -969,11 +934,14 @@ static void av_codec_init_static(void) FF_DISABLE_DEPRECATION_WARNINGS switch (codec->p.type) { case AVMEDIA_TYPE_VIDEO: - if (!codec->p.pix_fmts) - codec->get_supported_config(NULL, &codec->p, - AV_CODEC_CONFIG_PIX_FORMAT, 0, - (const void **) &codec->p.pix_fmts, - &dummy); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_PIX_FORMAT, 0, + (const void **) &codec->p.pix_fmts, + &dummy); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_FRAME_RATE, 0, + (const void **) &codec->p.supported_framerates, + &dummy); break; case AVMEDIA_TYPE_AUDIO: codec->get_supported_config(NULL, &codec->p, @@ -1022,7 +990,6 @@ static enum AVCodecID remap_deprecated_codec_id(enum AVCodecID id) static const AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *)) { const AVCodec *p, *experimental = NULL; - av_unused const AVCodecDescriptor *desc = avcodec_descriptor_get(id); void *i = 0; id = remap_deprecated_codec_id(id); @@ -1031,7 +998,6 @@ static const AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *)) if (!x(p)) continue; if (p->id == id) { - av_assert1(!desc || !(desc->props & AV_CODEC_PROP_ENHANCEMENT)); if (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL && !experimental) { experimental = p; } else @@ -1044,12 +1010,12 @@ static const AVCodec *find_codec(enum AVCodecID id, int (*x)(const AVCodec *)) const AVCodec *avcodec_find_encoder(enum AVCodecID id) { - return find_codec(id, ff_codec_is_encoder); + return find_codec(id, av_codec_is_encoder); } const AVCodec *avcodec_find_decoder(enum AVCodecID id) { - return find_codec(id, ff_codec_is_decoder); + return find_codec(id, av_codec_is_decoder); } static const AVCodec *find_codec_by_name(const char *name, int (*x)(const AVCodec *)) @@ -1072,10 +1038,10 @@ static const AVCodec *find_codec_by_name(const char *name, int (*x)(const AVCode const AVCodec *avcodec_find_encoder_by_name(const char *name) { - return find_codec_by_name(name, ff_codec_is_encoder); + return find_codec_by_name(name, av_codec_is_encoder); } const AVCodec *avcodec_find_decoder_by_name(const char *name) { - return find_codec_by_name(name, ff_codec_is_decoder); + return find_codec_by_name(name, av_codec_is_decoder); } diff --git a/icecat/media/ffvpx/libavcodec/arm/h264chroma_init_arm.c b/icecat/media/ffvpx/libavcodec/arm/h264chroma_init_arm.c deleted file mode 100644 index 5c7d523186..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/h264chroma_init_arm.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * ARM NEON optimised H.264 chroma functions - * Copyright (c) 2008 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavutil/cpu.h" -#include "libavutil/arm/cpu.h" -#include "libavcodec/h264chroma.h" - -void ff_put_h264_chroma_mc8_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, - int h, int x, int y); -void ff_put_h264_chroma_mc4_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, - int h, int x, int y); -void ff_put_h264_chroma_mc2_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, - int h, int x, int y); - -void ff_avg_h264_chroma_mc8_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, - int h, int x, int y); -void ff_avg_h264_chroma_mc4_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, - int h, int x, int y); -void ff_avg_h264_chroma_mc2_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, - int h, int x, int y); - -av_cold void ff_h264chroma_init_arm(H264ChromaContext *c, int bit_depth) -{ - const int high_bit_depth = bit_depth > 8; - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags) && !high_bit_depth) { - c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon; - c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_neon; - c->put_h264_chroma_pixels_tab[2] = ff_put_h264_chroma_mc2_neon; - - c->avg_h264_chroma_pixels_tab[0] = ff_avg_h264_chroma_mc8_neon; - c->avg_h264_chroma_pixels_tab[1] = ff_avg_h264_chroma_mc4_neon; - c->avg_h264_chroma_pixels_tab[2] = ff_avg_h264_chroma_mc2_neon; - } -} diff --git a/icecat/media/ffvpx/libavcodec/arm/h264dsp_init_arm.c b/icecat/media/ffvpx/libavcodec/arm/h264dsp_init_arm.c deleted file mode 100644 index 050ceb90bf..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/h264dsp_init_arm.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2010 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavutil/arm/cpu.h" -#include "libavcodec/h264dsp.h" -#include "libavcodec/arm/startcode.h" - -void ff_h264_v_loop_filter_luma_neon(uint8_t *pix, ptrdiff_t stride, int alpha, - int beta, int8_t *tc0); -void ff_h264_h_loop_filter_luma_neon(uint8_t *pix, ptrdiff_t stride, int alpha, - int beta, int8_t *tc0); -void ff_h264_v_loop_filter_chroma_neon(uint8_t *pix, ptrdiff_t stride, int alpha, - int beta, int8_t *tc0); -void ff_h264_h_loop_filter_chroma_neon(uint8_t *pix, ptrdiff_t stride, int alpha, - int beta, int8_t *tc0); -void ff_h264_h_loop_filter_chroma422_neon(uint8_t *pix, ptrdiff_t stride, int alpha, - int beta, int8_t *tc0); - -void ff_weight_h264_pixels_16_neon(uint8_t *dst, int stride, int height, - int log2_den, int weight, int offset); -void ff_weight_h264_pixels_8_neon(uint8_t *dst, int stride, int height, - int log2_den, int weight, int offset); -void ff_weight_h264_pixels_4_neon(uint8_t *dst, int stride, int height, - int log2_den, int weight, int offset); - -void ff_biweight_h264_pixels_16_neon(uint8_t *dst, uint8_t *src, int stride, - int height, int log2_den, int weightd, - int weights, int offset); -void ff_biweight_h264_pixels_8_neon(uint8_t *dst, uint8_t *src, int stride, - int height, int log2_den, int weightd, - int weights, int offset); -void ff_biweight_h264_pixels_4_neon(uint8_t *dst, uint8_t *src, int stride, - int height, int log2_den, int weightd, - int weights, int offset); - -void ff_h264_idct_add_neon(uint8_t *dst, int16_t *block, int stride); -void ff_h264_idct_dc_add_neon(uint8_t *dst, int16_t *block, int stride); -void ff_h264_idct_add16_neon(uint8_t *dst, const int *block_offset, - int16_t *block, int stride, - const uint8_t nnzc[5 * 8]); -void ff_h264_idct_add16intra_neon(uint8_t *dst, const int *block_offset, - int16_t *block, int stride, - const uint8_t nnzc[5 * 8]); -void ff_h264_idct_add8_neon(uint8_t **dest, const int *block_offset, - int16_t *block, int stride, - const uint8_t nnzc[15 * 8]); - -void ff_h264_idct8_add_neon(uint8_t *dst, int16_t *block, int stride); -void ff_h264_idct8_dc_add_neon(uint8_t *dst, int16_t *block, int stride); -void ff_h264_idct8_add4_neon(uint8_t *dst, const int *block_offset, - int16_t *block, int stride, - const uint8_t nnzc[5 * 8]); - -static av_cold void h264dsp_init_neon(H264DSPContext *c, const int bit_depth, - const int chroma_format_idc) -{ -#if HAVE_NEON - if (bit_depth == 8) { - c->v_loop_filter_luma = ff_h264_v_loop_filter_luma_neon; - c->h_loop_filter_luma = ff_h264_h_loop_filter_luma_neon; - c->v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon; - - if (chroma_format_idc <= 1) - c->h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon; - else - c->h_loop_filter_chroma = ff_h264_h_loop_filter_chroma422_neon; - - c->weight_pixels_tab[0] = ff_weight_h264_pixels_16_neon; - c->weight_pixels_tab[1] = ff_weight_h264_pixels_8_neon; - c->weight_pixels_tab[2] = ff_weight_h264_pixels_4_neon; - - c->biweight_pixels_tab[0] = ff_biweight_h264_pixels_16_neon; - c->biweight_pixels_tab[1] = ff_biweight_h264_pixels_8_neon; - c->biweight_pixels_tab[2] = ff_biweight_h264_pixels_4_neon; - - c->idct_add = ff_h264_idct_add_neon; - c->idct_dc_add = ff_h264_idct_dc_add_neon; - c->idct_add16 = ff_h264_idct_add16_neon; - c->idct_add16intra = ff_h264_idct_add16intra_neon; - if (chroma_format_idc <= 1) - c->idct_add8 = ff_h264_idct_add8_neon; - c->idct8_add = ff_h264_idct8_add_neon; - c->idct8_dc_add = ff_h264_idct8_dc_add_neon; - c->idct8_add4 = ff_h264_idct8_add4_neon; - } -#endif // HAVE_NEON -} - -av_cold void ff_h264dsp_init_arm(H264DSPContext *c, const int bit_depth, - const int chroma_format_idc) -{ - int cpu_flags = av_get_cpu_flags(); - -#if HAVE_ARMV6 - if (have_setend(cpu_flags)) - c->startcode_find_candidate = ff_startcode_find_candidate_armv6; -#endif - if (have_neon(cpu_flags)) - h264dsp_init_neon(c, bit_depth, chroma_format_idc); -} diff --git a/icecat/media/ffvpx/libavcodec/arm/h264pred_init_arm.c b/icecat/media/ffvpx/libavcodec/arm/h264pred_init_arm.c deleted file mode 100644 index cc324d7dca..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/h264pred_init_arm.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2009 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavutil/arm/cpu.h" -#include "libavcodec/avcodec.h" -#include "libavcodec/h264pred.h" - -void ff_pred16x16_vert_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred16x16_hor_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred16x16_plane_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred16x16_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred16x16_128_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred16x16_left_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred16x16_top_dc_neon(uint8_t *src, ptrdiff_t stride); - -void ff_pred8x8_vert_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_hor_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_plane_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_128_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_left_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_top_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_l0t_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_0lt_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_l00_dc_neon(uint8_t *src, ptrdiff_t stride); -void ff_pred8x8_0l0_dc_neon(uint8_t *src, ptrdiff_t stride); - -static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id, - const int bit_depth, - const int chroma_format_idc) -{ -#if HAVE_NEON - const int high_depth = bit_depth > 8; - - if (high_depth) - return; - - if (chroma_format_idc <= 1) { - h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vert_neon; - h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_hor_neon; - if (codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) - h->pred8x8[PLANE_PRED8x8] = ff_pred8x8_plane_neon; - h->pred8x8[DC_128_PRED8x8 ] = ff_pred8x8_128_dc_neon; - if (codec_id != AV_CODEC_ID_RV40 && codec_id != AV_CODEC_ID_VP7 && - codec_id != AV_CODEC_ID_VP8) { - h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_neon; - h->pred8x8[LEFT_DC_PRED8x8] = ff_pred8x8_left_dc_neon; - h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_neon; - h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8] = ff_pred8x8_l0t_dc_neon; - h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8] = ff_pred8x8_0lt_dc_neon; - h->pred8x8[ALZHEIMER_DC_L00_PRED8x8] = ff_pred8x8_l00_dc_neon; - h->pred8x8[ALZHEIMER_DC_0L0_PRED8x8] = ff_pred8x8_0l0_dc_neon; - } - } - - h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_neon; - h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vert_neon; - h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_hor_neon; - h->pred16x16[LEFT_DC_PRED8x8] = ff_pred16x16_left_dc_neon; - h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_neon; - h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_neon; - if (codec_id != AV_CODEC_ID_SVQ3 && codec_id != AV_CODEC_ID_RV40 && - codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8) - h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_neon; -#endif // HAVE_NEON -} - -av_cold void ff_h264_pred_init_arm(H264PredContext *h, int codec_id, - int bit_depth, const int chroma_format_idc) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) - h264_pred_init_neon(h, codec_id, bit_depth, chroma_format_idc); -} diff --git a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_arm.h b/icecat/media/ffvpx/libavcodec/arm/hpeldsp_arm.h deleted file mode 100644 index 5f3c7741c1..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_arm.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2009 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ARM_HPELDSP_ARM_H -#define AVCODEC_ARM_HPELDSP_ARM_H - -#include "libavcodec/hpeldsp.h" - -void ff_hpeldsp_init_armv6(HpelDSPContext *c, int flags); -void ff_hpeldsp_init_neon(HpelDSPContext *c, int flags); - -#endif /* AVCODEC_ARM_HPELDSP_ARM_H */ diff --git a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_arm.c b/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_arm.c deleted file mode 100644 index 1977b1379b..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_arm.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * ARM-optimized halfpel functions - * Copyright (c) 2001 Lionel Ulmer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/arm/cpu.h" -#include "libavutil/attributes.h" -#include "libavcodec/pixels.h" -#include "hpeldsp_arm.h" - -void ff_put_pixels8_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); -void ff_put_pixels8_x2_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); -void ff_put_pixels8_y2_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); -void ff_put_pixels8_xy2_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); - -void ff_put_no_rnd_pixels8_x2_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); -void ff_put_no_rnd_pixels8_y2_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); -void ff_put_no_rnd_pixels8_xy2_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); - -void ff_put_pixels16_arm(uint8_t *block, const uint8_t *pixels, ptrdiff_t line_size, int h); - -CALL_2X_PIXELS(ff_put_pixels16_x2_arm, ff_put_pixels8_x2_arm, 8) -CALL_2X_PIXELS(ff_put_pixels16_y2_arm, ff_put_pixels8_y2_arm, 8) -CALL_2X_PIXELS(ff_put_pixels16_xy2_arm, ff_put_pixels8_xy2_arm, 8) -CALL_2X_PIXELS(ff_put_no_rnd_pixels16_x2_arm, ff_put_no_rnd_pixels8_x2_arm, 8) -CALL_2X_PIXELS(ff_put_no_rnd_pixels16_y2_arm, ff_put_no_rnd_pixels8_y2_arm, 8) -CALL_2X_PIXELS(ff_put_no_rnd_pixels16_xy2_arm, ff_put_no_rnd_pixels8_xy2_arm,8) - -av_cold void ff_hpeldsp_init_arm(HpelDSPContext *c, int flags) -{ - int cpu_flags = av_get_cpu_flags(); - - c->put_pixels_tab[0][0] = ff_put_pixels16_arm; - c->put_pixels_tab[0][1] = ff_put_pixels16_x2_arm; - c->put_pixels_tab[0][2] = ff_put_pixels16_y2_arm; - c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_arm; - c->put_pixels_tab[1][0] = ff_put_pixels8_arm; - c->put_pixels_tab[1][1] = ff_put_pixels8_x2_arm; - c->put_pixels_tab[1][2] = ff_put_pixels8_y2_arm; - c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_arm; - - c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_arm; - c->put_no_rnd_pixels_tab[0][1] = ff_put_no_rnd_pixels16_x2_arm; - c->put_no_rnd_pixels_tab[0][2] = ff_put_no_rnd_pixels16_y2_arm; - c->put_no_rnd_pixels_tab[0][3] = ff_put_no_rnd_pixels16_xy2_arm; - c->put_no_rnd_pixels_tab[1][0] = ff_put_pixels8_arm; - c->put_no_rnd_pixels_tab[1][1] = ff_put_no_rnd_pixels8_x2_arm; - c->put_no_rnd_pixels_tab[1][2] = ff_put_no_rnd_pixels8_y2_arm; - c->put_no_rnd_pixels_tab[1][3] = ff_put_no_rnd_pixels8_xy2_arm; - - if (have_armv6(cpu_flags)) - ff_hpeldsp_init_armv6(c, flags); - if (have_neon(cpu_flags)) - ff_hpeldsp_init_neon(c, flags); -} diff --git a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_armv6.c b/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_armv6.c deleted file mode 100644 index 967a8e0427..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_armv6.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2009 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include "libavutil/attributes.h" -#include "hpeldsp_arm.h" - -void ff_put_pixels16_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_x2_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_y2_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); - -void ff_put_pixels16_x2_no_rnd_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_y2_no_rnd_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); - -void ff_avg_pixels16_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); - -void ff_put_pixels8_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_x2_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_y2_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); - -void ff_put_pixels8_x2_no_rnd_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_y2_no_rnd_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); - -void ff_avg_pixels8_armv6(uint8_t *, const uint8_t *, ptrdiff_t, int); - -av_cold void ff_hpeldsp_init_armv6(HpelDSPContext *c, int flags) -{ - c->put_pixels_tab[0][0] = ff_put_pixels16_armv6; - c->put_pixels_tab[0][1] = ff_put_pixels16_x2_armv6; - c->put_pixels_tab[0][2] = ff_put_pixels16_y2_armv6; -/* c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_armv6; */ - c->put_pixels_tab[1][0] = ff_put_pixels8_armv6; - c->put_pixels_tab[1][1] = ff_put_pixels8_x2_armv6; - c->put_pixels_tab[1][2] = ff_put_pixels8_y2_armv6; -/* c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_armv6; */ - - c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_armv6; - c->put_no_rnd_pixels_tab[0][1] = ff_put_pixels16_x2_no_rnd_armv6; - c->put_no_rnd_pixels_tab[0][2] = ff_put_pixels16_y2_no_rnd_armv6; -/* c->put_no_rnd_pixels_tab[0][3] = ff_put_pixels16_xy2_no_rnd_armv6; */ - c->put_no_rnd_pixels_tab[1][0] = ff_put_pixels8_armv6; - c->put_no_rnd_pixels_tab[1][1] = ff_put_pixels8_x2_no_rnd_armv6; - c->put_no_rnd_pixels_tab[1][2] = ff_put_pixels8_y2_no_rnd_armv6; -/* c->put_no_rnd_pixels_tab[1][3] = ff_put_pixels8_xy2_no_rnd_armv6; */ - - c->avg_pixels_tab[0][0] = ff_avg_pixels16_armv6; - c->avg_pixels_tab[1][0] = ff_avg_pixels8_armv6; -} diff --git a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_neon.c b/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_neon.c deleted file mode 100644 index d9feadd1dd..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/hpeldsp_init_neon.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * ARM NEON optimised DSP functions - * Copyright (c) 2008 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include "libavutil/attributes.h" -#include "hpeldsp_arm.h" - -void ff_put_pixels16_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_x2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_y2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_xy2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_x2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_y2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_xy2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_x2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_y2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels16_xy2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_x2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_y2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); - -void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels16_x2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels16_y2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels16_xy2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels8_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels8_x2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels8_y2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels8_xy2_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels16_x2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels16_y2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); -void ff_avg_pixels16_xy2_no_rnd_neon(uint8_t *, const uint8_t *, ptrdiff_t, int); - -av_cold void ff_hpeldsp_init_neon(HpelDSPContext *c, int flags) -{ - c->put_pixels_tab[0][0] = ff_put_pixels16_neon; - c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon; - c->put_pixels_tab[0][2] = ff_put_pixels16_y2_neon; - c->put_pixels_tab[0][3] = ff_put_pixels16_xy2_neon; - c->put_pixels_tab[1][0] = ff_put_pixels8_neon; - c->put_pixels_tab[1][1] = ff_put_pixels8_x2_neon; - c->put_pixels_tab[1][2] = ff_put_pixels8_y2_neon; - c->put_pixels_tab[1][3] = ff_put_pixels8_xy2_neon; - - c->put_no_rnd_pixels_tab[0][0] = ff_put_pixels16_neon; - c->put_no_rnd_pixels_tab[0][1] = ff_put_pixels16_x2_no_rnd_neon; - c->put_no_rnd_pixels_tab[0][2] = ff_put_pixels16_y2_no_rnd_neon; - c->put_no_rnd_pixels_tab[0][3] = ff_put_pixels16_xy2_no_rnd_neon; - c->put_no_rnd_pixels_tab[1][0] = ff_put_pixels8_neon; - c->put_no_rnd_pixels_tab[1][1] = ff_put_pixels8_x2_no_rnd_neon; - c->put_no_rnd_pixels_tab[1][2] = ff_put_pixels8_y2_no_rnd_neon; - c->put_no_rnd_pixels_tab[1][3] = ff_put_pixels8_xy2_no_rnd_neon; - - c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon; - c->avg_pixels_tab[0][1] = ff_avg_pixels16_x2_neon; - c->avg_pixels_tab[0][2] = ff_avg_pixels16_y2_neon; - c->avg_pixels_tab[0][3] = ff_avg_pixels16_xy2_neon; - c->avg_pixels_tab[1][0] = ff_avg_pixels8_neon; - c->avg_pixels_tab[1][1] = ff_avg_pixels8_x2_neon; - c->avg_pixels_tab[1][2] = ff_avg_pixels8_y2_neon; - c->avg_pixels_tab[1][3] = ff_avg_pixels8_xy2_neon; - - c->avg_no_rnd_pixels_tab[0] = ff_avg_pixels16_neon; - c->avg_no_rnd_pixels_tab[1] = ff_avg_pixels16_x2_no_rnd_neon; - c->avg_no_rnd_pixels_tab[2] = ff_avg_pixels16_y2_no_rnd_neon; - c->avg_no_rnd_pixels_tab[3] = ff_avg_pixels16_xy2_no_rnd_neon; -} diff --git a/icecat/media/ffvpx/libavcodec/arm/mathops.h b/icecat/media/ffvpx/libavcodec/arm/mathops.h index 9d0385db6c..dc57c5571c 100644 --- a/icecat/media/ffvpx/libavcodec/arm/mathops.h +++ b/icecat/media/ffvpx/libavcodec/arm/mathops.h @@ -81,6 +81,28 @@ static inline av_const int MUL16(int ra, int rb) #endif +#define mid_pred mid_pred +static inline av_const int mid_pred(int a, int b, int c) +{ + int m; + __asm__ ( + "mov %0, %2 \n\t" + "cmp %1, %2 \n\t" + "itt gt \n\t" + "movgt %0, %1 \n\t" + "movgt %1, %2 \n\t" + "cmp %1, %3 \n\t" + "it le \n\t" + "movle %1, %3 \n\t" + "cmp %0, %1 \n\t" + "it gt \n\t" + "movgt %0, %1 \n\t" + : "=&r"(m), "+r"(a) + : "r"(b), "r"(c) + : "cc"); + return m; +} + #endif /* HAVE_INLINE_ASM */ #endif /* AVCODEC_ARM_MATHOPS_H */ diff --git a/icecat/media/ffvpx/libavcodec/arm/startcode.h b/icecat/media/ffvpx/libavcodec/arm/startcode.h deleted file mode 100644 index cf25d9d4df..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/startcode.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ARM_STARTCODE_H -#define AVCODEC_ARM_STARTCODE_H - -#include - -int ff_startcode_find_candidate_armv6(const uint8_t *buf, int size); - -#endif /* AVCODEC_ARM_STARTCODE_H */ diff --git a/icecat/media/ffvpx/libavcodec/arm/videodsp_arm.h b/icecat/media/ffvpx/libavcodec/arm/videodsp_arm.h deleted file mode 100644 index 112cbb86c7..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/videodsp_arm.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2009 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ARM_VIDEODSP_ARM_H -#define AVCODEC_ARM_VIDEODSP_ARM_H - -#include "libavcodec/avcodec.h" -#include "libavcodec/videodsp.h" - -void ff_videodsp_init_armv5te(VideoDSPContext* ctx, int bpc); - -#endif /* AVCODEC_ARM_VIDEODSP_ARM_H */ diff --git a/icecat/media/ffvpx/libavcodec/arm/videodsp_init_arm.c b/icecat/media/ffvpx/libavcodec/arm/videodsp_init_arm.c deleted file mode 100644 index a89abb25d5..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/videodsp_init_arm.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2012 Ronald S. Bultje - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/attributes.h" -#include "libavutil/arm/cpu.h" -#include "libavcodec/videodsp.h" -#include "videodsp_arm.h" - -av_cold void ff_videodsp_init_arm(VideoDSPContext *ctx, int bpc) -{ - int cpu_flags = av_get_cpu_flags(); - if (have_armv5te(cpu_flags)) ff_videodsp_init_armv5te(ctx, bpc); -} diff --git a/icecat/media/ffvpx/libavcodec/arm/videodsp_init_armv5te.c b/icecat/media/ffvpx/libavcodec/arm/videodsp_init_armv5te.c deleted file mode 100644 index eaa8c5bbf8..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/videodsp_init_armv5te.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2012 Ronald S. Bultje - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/attributes.h" -#include "libavutil/arm/cpu.h" -#include "libavcodec/videodsp.h" -#include "videodsp_arm.h" - -void ff_prefetch_arm(const uint8_t *mem, ptrdiff_t stride, int h); - -av_cold void ff_videodsp_init_armv5te(VideoDSPContext *ctx, int bpc) -{ -#if HAVE_ARMV5TE_EXTERNAL - ctx->prefetch = ff_prefetch_arm; -#endif -} diff --git a/icecat/media/ffvpx/libavcodec/arm/vp8.h b/icecat/media/ffvpx/libavcodec/arm/vp8.h deleted file mode 100644 index 6f128ffebe..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp8.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ARM_VP8_H -#define AVCODEC_ARM_VP8_H - -#include - -#include "config.h" -#include "libavcodec/vpx_rac.h" -#include "libavcodec/vp8.h" - -#if HAVE_ARMV6_EXTERNAL -#define vp8_decode_block_coeffs_internal ff_decode_block_coeffs_armv6 -int ff_decode_block_coeffs_armv6(VPXRangeCoder *rc, int16_t block[16], - uint8_t probs[8][3][NUM_DCT_TOKENS-1], - int i, const uint8_t *token_prob, - const int16_t qmul[2]); -#endif - -#endif /* AVCODEC_ARM_VP8_H */ diff --git a/icecat/media/ffvpx/libavcodec/arm/vp8dsp.h b/icecat/media/ffvpx/libavcodec/arm/vp8dsp.h deleted file mode 100644 index 11dcc78d7a..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp8dsp.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ARM_VP8DSP_H -#define AVCODEC_ARM_VP8DSP_H - -#include "libavcodec/vp8dsp.h" - -void ff_vp78dsp_init_armv6(VP8DSPContext *dsp); -void ff_vp78dsp_init_neon(VP8DSPContext *dsp); -void ff_vp8dsp_init_armv6(VP8DSPContext *dsp); -void ff_vp8dsp_init_neon(VP8DSPContext *dsp); - -#define VP8_LF_Y(hv, inner, opt) \ - void ff_vp8_##hv##_loop_filter16##inner##_##opt(uint8_t *dst, \ - ptrdiff_t stride, \ - int flim_E, int flim_I, \ - int hev_thresh) - -#define VP8_LF_UV(hv, inner, opt) \ - void ff_vp8_##hv##_loop_filter8uv##inner##_##opt(uint8_t *dstU, \ - uint8_t *dstV, \ - ptrdiff_t stride, \ - int flim_E, int flim_I, \ - int hev_thresh) - -#define VP8_LF_SIMPLE(hv, opt) \ - void ff_vp8_##hv##_loop_filter16_simple_##opt(uint8_t *dst, \ - ptrdiff_t stride, \ - int flim) - -#define VP8_LF_HV(inner, opt) \ - VP8_LF_Y(h, inner, opt); \ - VP8_LF_Y(v, inner, opt); \ - VP8_LF_UV(h, inner, opt); \ - VP8_LF_UV(v, inner, opt) - -#define VP8_LF(opt) \ - VP8_LF_HV(, opt); \ - VP8_LF_HV(_inner, opt); \ - VP8_LF_SIMPLE(h, opt); \ - VP8_LF_SIMPLE(v, opt) - -#define VP8_MC(n, opt) \ - void ff_put_vp8_##n##_##opt(uint8_t *dst, ptrdiff_t dststride, \ - const uint8_t *src, ptrdiff_t srcstride,\ - int h, int x, int y) - -#define VP8_EPEL(w, opt) \ - VP8_MC(pixels ## w, opt); \ - VP8_MC(epel ## w ## _h4, opt); \ - VP8_MC(epel ## w ## _h6, opt); \ - VP8_MC(epel ## w ## _v4, opt); \ - VP8_MC(epel ## w ## _h4v4, opt); \ - VP8_MC(epel ## w ## _h6v4, opt); \ - VP8_MC(epel ## w ## _v6, opt); \ - VP8_MC(epel ## w ## _h4v6, opt); \ - VP8_MC(epel ## w ## _h6v6, opt) - -#define VP8_BILIN(w, opt) \ - VP8_MC(bilin ## w ## _h, opt); \ - VP8_MC(bilin ## w ## _v, opt); \ - VP8_MC(bilin ## w ## _hv, opt) - -#endif /* AVCODEC_ARM_VP8DSP_H */ diff --git a/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_arm.c b/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_arm.c deleted file mode 100644 index 8b801766d7..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_arm.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavutil/arm/cpu.h" -#include "libavcodec/vp8dsp.h" -#include "vp8dsp.h" - -av_cold void ff_vp78dsp_init_arm(VP8DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_armv6(cpu_flags)) - ff_vp78dsp_init_armv6(dsp); - if (have_neon(cpu_flags)) - ff_vp78dsp_init_neon(dsp); -} - -av_cold void ff_vp8dsp_init_arm(VP8DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_armv6(cpu_flags)) - ff_vp8dsp_init_armv6(dsp); - if (have_neon(cpu_flags)) - ff_vp8dsp_init_neon(dsp); -} diff --git a/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_armv6.c b/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_armv6.c deleted file mode 100644 index a5bcd733e0..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_armv6.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavcodec/vp8dsp.h" -#include "vp8dsp.h" - -void ff_vp8_luma_dc_wht_armv6(int16_t block[4][4][16], int16_t dc[16]); -void ff_vp8_luma_dc_wht_dc_armv6(int16_t block[4][4][16], int16_t dc[16]); - -void ff_vp8_idct_add_armv6(uint8_t *dst, int16_t block[16], ptrdiff_t stride); -void ff_vp8_idct_dc_add_armv6(uint8_t *dst, int16_t block[16], ptrdiff_t stride); -void ff_vp8_idct_dc_add4y_armv6(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride); -void ff_vp8_idct_dc_add4uv_armv6(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride); - -VP8_LF(armv6); - -VP8_EPEL(16, armv6); -VP8_EPEL(8, armv6); -VP8_EPEL(4, armv6); - -VP8_BILIN(16, armv6); -VP8_BILIN(8, armv6); -VP8_BILIN(4, armv6); - -av_cold void ff_vp78dsp_init_armv6(VP8DSPContext *dsp) -{ - dsp->put_vp8_epel_pixels_tab[0][0][0] = ff_put_vp8_pixels16_armv6; - dsp->put_vp8_epel_pixels_tab[0][0][2] = ff_put_vp8_epel16_h6_armv6; - dsp->put_vp8_epel_pixels_tab[0][2][0] = ff_put_vp8_epel16_v6_armv6; - dsp->put_vp8_epel_pixels_tab[0][2][2] = ff_put_vp8_epel16_h6v6_armv6; - - dsp->put_vp8_epel_pixels_tab[1][0][0] = ff_put_vp8_pixels8_armv6; - dsp->put_vp8_epel_pixels_tab[1][0][1] = ff_put_vp8_epel8_h4_armv6; - dsp->put_vp8_epel_pixels_tab[1][0][2] = ff_put_vp8_epel8_h6_armv6; - dsp->put_vp8_epel_pixels_tab[1][1][0] = ff_put_vp8_epel8_v4_armv6; - dsp->put_vp8_epel_pixels_tab[1][1][1] = ff_put_vp8_epel8_h4v4_armv6; - dsp->put_vp8_epel_pixels_tab[1][1][2] = ff_put_vp8_epel8_h6v4_armv6; - dsp->put_vp8_epel_pixels_tab[1][2][0] = ff_put_vp8_epel8_v6_armv6; - dsp->put_vp8_epel_pixels_tab[1][2][1] = ff_put_vp8_epel8_h4v6_armv6; - dsp->put_vp8_epel_pixels_tab[1][2][2] = ff_put_vp8_epel8_h6v6_armv6; - - dsp->put_vp8_epel_pixels_tab[2][0][0] = ff_put_vp8_pixels4_armv6; - dsp->put_vp8_epel_pixels_tab[2][0][1] = ff_put_vp8_epel4_h4_armv6; - dsp->put_vp8_epel_pixels_tab[2][0][2] = ff_put_vp8_epel4_h6_armv6; - dsp->put_vp8_epel_pixels_tab[2][1][0] = ff_put_vp8_epel4_v4_armv6; - dsp->put_vp8_epel_pixels_tab[2][1][1] = ff_put_vp8_epel4_h4v4_armv6; - dsp->put_vp8_epel_pixels_tab[2][1][2] = ff_put_vp8_epel4_h6v4_armv6; - dsp->put_vp8_epel_pixels_tab[2][2][0] = ff_put_vp8_epel4_v6_armv6; - dsp->put_vp8_epel_pixels_tab[2][2][1] = ff_put_vp8_epel4_h4v6_armv6; - dsp->put_vp8_epel_pixels_tab[2][2][2] = ff_put_vp8_epel4_h6v6_armv6; - - dsp->put_vp8_bilinear_pixels_tab[0][0][0] = ff_put_vp8_pixels16_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][0][1] = ff_put_vp8_bilin16_h_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][0][2] = ff_put_vp8_bilin16_h_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][1][0] = ff_put_vp8_bilin16_v_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][1][1] = ff_put_vp8_bilin16_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][1][2] = ff_put_vp8_bilin16_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][2][0] = ff_put_vp8_bilin16_v_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][2][1] = ff_put_vp8_bilin16_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[0][2][2] = ff_put_vp8_bilin16_hv_armv6; - - dsp->put_vp8_bilinear_pixels_tab[1][0][0] = ff_put_vp8_pixels8_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][0][1] = ff_put_vp8_bilin8_h_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][0][2] = ff_put_vp8_bilin8_h_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][1][0] = ff_put_vp8_bilin8_v_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][1][1] = ff_put_vp8_bilin8_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][1][2] = ff_put_vp8_bilin8_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][2][0] = ff_put_vp8_bilin8_v_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][2][1] = ff_put_vp8_bilin8_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[1][2][2] = ff_put_vp8_bilin8_hv_armv6; - - dsp->put_vp8_bilinear_pixels_tab[2][0][0] = ff_put_vp8_pixels4_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][0][1] = ff_put_vp8_bilin4_h_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][0][2] = ff_put_vp8_bilin4_h_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][1][0] = ff_put_vp8_bilin4_v_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][1][1] = ff_put_vp8_bilin4_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][1][2] = ff_put_vp8_bilin4_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][2][0] = ff_put_vp8_bilin4_v_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][2][1] = ff_put_vp8_bilin4_hv_armv6; - dsp->put_vp8_bilinear_pixels_tab[2][2][2] = ff_put_vp8_bilin4_hv_armv6; -} - -av_cold void ff_vp8dsp_init_armv6(VP8DSPContext *dsp) -{ - dsp->vp8_luma_dc_wht = ff_vp8_luma_dc_wht_armv6; - dsp->vp8_luma_dc_wht_dc = ff_vp8_luma_dc_wht_dc_armv6; - - dsp->vp8_idct_add = ff_vp8_idct_add_armv6; - dsp->vp8_idct_dc_add = ff_vp8_idct_dc_add_armv6; - dsp->vp8_idct_dc_add4y = ff_vp8_idct_dc_add4y_armv6; - dsp->vp8_idct_dc_add4uv = ff_vp8_idct_dc_add4uv_armv6; - - dsp->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16_armv6; - dsp->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16_armv6; - dsp->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_armv6; - dsp->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_armv6; - - dsp->vp8_v_loop_filter16y_inner = ff_vp8_v_loop_filter16_inner_armv6; - dsp->vp8_h_loop_filter16y_inner = ff_vp8_h_loop_filter16_inner_armv6; - dsp->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_armv6; - dsp->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_armv6; - - dsp->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter16_simple_armv6; - dsp->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter16_simple_armv6; -} diff --git a/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_neon.c b/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_neon.c deleted file mode 100644 index 53f1f23380..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp8dsp_init_neon.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavcodec/vp8dsp.h" -#include "vp8dsp.h" - -void ff_vp8_luma_dc_wht_neon(int16_t block[4][4][16], int16_t dc[16]); - -void ff_vp8_idct_add_neon(uint8_t *dst, int16_t block[16], ptrdiff_t stride); -void ff_vp8_idct_dc_add_neon(uint8_t *dst, int16_t block[16], ptrdiff_t stride); -void ff_vp8_idct_dc_add4y_neon(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride); -void ff_vp8_idct_dc_add4uv_neon(uint8_t *dst, int16_t block[4][16], ptrdiff_t stride); - -VP8_LF(neon); - -VP8_EPEL(16, neon); -VP8_EPEL(8, neon); -VP8_EPEL(4, neon); - -VP8_BILIN(16, neon); -VP8_BILIN(8, neon); -VP8_BILIN(4, neon); - -av_cold void ff_vp78dsp_init_neon(VP8DSPContext *dsp) -{ - dsp->put_vp8_epel_pixels_tab[0][0][0] = ff_put_vp8_pixels16_neon; - dsp->put_vp8_epel_pixels_tab[0][0][2] = ff_put_vp8_epel16_h6_neon; - dsp->put_vp8_epel_pixels_tab[0][2][0] = ff_put_vp8_epel16_v6_neon; - dsp->put_vp8_epel_pixels_tab[0][2][2] = ff_put_vp8_epel16_h6v6_neon; - - dsp->put_vp8_epel_pixels_tab[1][0][0] = ff_put_vp8_pixels8_neon; - dsp->put_vp8_epel_pixels_tab[1][0][1] = ff_put_vp8_epel8_h4_neon; - dsp->put_vp8_epel_pixels_tab[1][0][2] = ff_put_vp8_epel8_h6_neon; - dsp->put_vp8_epel_pixels_tab[1][1][0] = ff_put_vp8_epel8_v4_neon; - dsp->put_vp8_epel_pixels_tab[1][1][1] = ff_put_vp8_epel8_h4v4_neon; - dsp->put_vp8_epel_pixels_tab[1][1][2] = ff_put_vp8_epel8_h6v4_neon; - dsp->put_vp8_epel_pixels_tab[1][2][0] = ff_put_vp8_epel8_v6_neon; - dsp->put_vp8_epel_pixels_tab[1][2][1] = ff_put_vp8_epel8_h4v6_neon; - dsp->put_vp8_epel_pixels_tab[1][2][2] = ff_put_vp8_epel8_h6v6_neon; - - dsp->put_vp8_epel_pixels_tab[2][0][1] = ff_put_vp8_epel4_h4_neon; - dsp->put_vp8_epel_pixels_tab[2][0][2] = ff_put_vp8_epel4_h6_neon; - dsp->put_vp8_epel_pixels_tab[2][1][0] = ff_put_vp8_epel4_v4_neon; - dsp->put_vp8_epel_pixels_tab[2][1][1] = ff_put_vp8_epel4_h4v4_neon; - dsp->put_vp8_epel_pixels_tab[2][1][2] = ff_put_vp8_epel4_h6v4_neon; - dsp->put_vp8_epel_pixels_tab[2][2][0] = ff_put_vp8_epel4_v6_neon; - dsp->put_vp8_epel_pixels_tab[2][2][1] = ff_put_vp8_epel4_h4v6_neon; - dsp->put_vp8_epel_pixels_tab[2][2][2] = ff_put_vp8_epel4_h6v6_neon; - - dsp->put_vp8_bilinear_pixels_tab[0][0][0] = ff_put_vp8_pixels16_neon; - dsp->put_vp8_bilinear_pixels_tab[0][0][1] = ff_put_vp8_bilin16_h_neon; - dsp->put_vp8_bilinear_pixels_tab[0][0][2] = ff_put_vp8_bilin16_h_neon; - dsp->put_vp8_bilinear_pixels_tab[0][1][0] = ff_put_vp8_bilin16_v_neon; - dsp->put_vp8_bilinear_pixels_tab[0][1][1] = ff_put_vp8_bilin16_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[0][1][2] = ff_put_vp8_bilin16_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[0][2][0] = ff_put_vp8_bilin16_v_neon; - dsp->put_vp8_bilinear_pixels_tab[0][2][1] = ff_put_vp8_bilin16_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[0][2][2] = ff_put_vp8_bilin16_hv_neon; - - dsp->put_vp8_bilinear_pixels_tab[1][0][0] = ff_put_vp8_pixels8_neon; - dsp->put_vp8_bilinear_pixels_tab[1][0][1] = ff_put_vp8_bilin8_h_neon; - dsp->put_vp8_bilinear_pixels_tab[1][0][2] = ff_put_vp8_bilin8_h_neon; - dsp->put_vp8_bilinear_pixels_tab[1][1][0] = ff_put_vp8_bilin8_v_neon; - dsp->put_vp8_bilinear_pixels_tab[1][1][1] = ff_put_vp8_bilin8_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[1][1][2] = ff_put_vp8_bilin8_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[1][2][0] = ff_put_vp8_bilin8_v_neon; - dsp->put_vp8_bilinear_pixels_tab[1][2][1] = ff_put_vp8_bilin8_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[1][2][2] = ff_put_vp8_bilin8_hv_neon; - - dsp->put_vp8_bilinear_pixels_tab[2][0][1] = ff_put_vp8_bilin4_h_neon; - dsp->put_vp8_bilinear_pixels_tab[2][0][2] = ff_put_vp8_bilin4_h_neon; - dsp->put_vp8_bilinear_pixels_tab[2][1][0] = ff_put_vp8_bilin4_v_neon; - dsp->put_vp8_bilinear_pixels_tab[2][1][1] = ff_put_vp8_bilin4_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[2][1][2] = ff_put_vp8_bilin4_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[2][2][0] = ff_put_vp8_bilin4_v_neon; - dsp->put_vp8_bilinear_pixels_tab[2][2][1] = ff_put_vp8_bilin4_hv_neon; - dsp->put_vp8_bilinear_pixels_tab[2][2][2] = ff_put_vp8_bilin4_hv_neon; -} - -av_cold void ff_vp8dsp_init_neon(VP8DSPContext *dsp) -{ - dsp->vp8_luma_dc_wht = ff_vp8_luma_dc_wht_neon; - - dsp->vp8_idct_add = ff_vp8_idct_add_neon; - dsp->vp8_idct_dc_add = ff_vp8_idct_dc_add_neon; - dsp->vp8_idct_dc_add4y = ff_vp8_idct_dc_add4y_neon; - dsp->vp8_idct_dc_add4uv = ff_vp8_idct_dc_add4uv_neon; - - dsp->vp8_v_loop_filter16y = ff_vp8_v_loop_filter16_neon; - dsp->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16_neon; - dsp->vp8_v_loop_filter8uv = ff_vp8_v_loop_filter8uv_neon; - dsp->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_neon; - - dsp->vp8_v_loop_filter16y_inner = ff_vp8_v_loop_filter16_inner_neon; - dsp->vp8_h_loop_filter16y_inner = ff_vp8_h_loop_filter16_inner_neon; - dsp->vp8_v_loop_filter8uv_inner = ff_vp8_v_loop_filter8uv_inner_neon; - dsp->vp8_h_loop_filter8uv_inner = ff_vp8_h_loop_filter8uv_inner_neon; - - dsp->vp8_v_loop_filter_simple = ff_vp8_v_loop_filter16_simple_neon; - dsp->vp8_h_loop_filter_simple = ff_vp8_h_loop_filter16_simple_neon; -} diff --git a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init.h b/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init.h deleted file mode 100644 index 0dc1c2dc20..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2017 Google Inc. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ARM_VP9DSP_INIT_H -#define AVCODEC_ARM_VP9DSP_INIT_H - -#include "libavcodec/vp9dsp.h" - -void ff_vp9dsp_init_10bpp_arm(VP9DSPContext *dsp); -void ff_vp9dsp_init_12bpp_arm(VP9DSPContext *dsp); - -#endif /* AVCODEC_ARM_VP9DSP_INIT_H */ diff --git a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_10bpp_arm.c b/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_10bpp_arm.c deleted file mode 100644 index b8cb293b20..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_10bpp_arm.c +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2017 Google Inc. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#define BPP 10 -#define INIT_FUNC ff_vp9dsp_init_10bpp_arm -#include "vp9dsp_init_16bpp_arm_template.c" diff --git a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_12bpp_arm.c b/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_12bpp_arm.c deleted file mode 100644 index fa65eb260b..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_12bpp_arm.c +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2017 Google Inc. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#define BPP 12 -#define INIT_FUNC ff_vp9dsp_init_12bpp_arm -#include "vp9dsp_init_16bpp_arm_template.c" diff --git a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_16bpp_arm_template.c b/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_16bpp_arm_template.c deleted file mode 100644 index b0907094c1..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_16bpp_arm_template.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright (c) 2017 Google Inc. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavutil/internal.h" -#include "libavutil/mem_internal.h" -#include "libavutil/arm/cpu.h" -#include "vp9dsp_init.h" - -#define declare_fpel(type, sz, suffix) \ -void ff_vp9_##type##sz##suffix##_neon(uint8_t *dst, ptrdiff_t dst_stride, \ - const uint8_t *src, ptrdiff_t src_stride, \ - int h, int mx, int my) - -#define decl_mc_func(op, filter, dir, sz, bpp) \ -void ff_vp9_##op##_##filter##sz##_##dir##_##bpp##_neon(uint8_t *dst, ptrdiff_t dst_stride, \ - const uint8_t *src, ptrdiff_t src_stride, \ - int h, int mx, int my) - -#define define_8tap_2d_fn(op, filter, sz, bpp) \ -static void op##_##filter##sz##_hv_##bpp##_neon(uint8_t *dst, ptrdiff_t dst_stride, \ - const uint8_t *src, \ - ptrdiff_t src_stride, \ - int h, int mx, int my) \ -{ \ - LOCAL_ALIGNED_16(uint8_t, temp, [((1 + (sz < 64)) * sz + 8) * sz * 2]); \ - /* We only need h + 7 lines, but the horizontal filter assumes an \ - * even number of rows, so filter h + 8 lines here. */ \ - ff_vp9_put_##filter##sz##_h_##bpp##_neon(temp, 2 * sz, \ - src - 3 * src_stride, src_stride, \ - h + 8, mx, 0); \ - ff_vp9_##op##_##filter##sz##_v_##bpp##_neon(dst, dst_stride, \ - temp + 3 * 2 * sz, 2 * sz, \ - h, 0, my); \ -} - -#define decl_filter_funcs(op, dir, sz, bpp) \ - decl_mc_func(op, regular, dir, sz, bpp); \ - decl_mc_func(op, sharp, dir, sz, bpp); \ - decl_mc_func(op, smooth, dir, sz, bpp) - -#define decl_mc_funcs(sz, bpp) \ - decl_filter_funcs(put, h, sz, bpp); \ - decl_filter_funcs(avg, h, sz, bpp); \ - decl_filter_funcs(put, v, sz, bpp); \ - decl_filter_funcs(avg, v, sz, bpp); \ - decl_filter_funcs(put, hv, sz, bpp); \ - decl_filter_funcs(avg, hv, sz, bpp) - -declare_fpel(copy, 128, ); -declare_fpel(copy, 64, ); -declare_fpel(copy, 32, ); -declare_fpel(copy, 16, ); -declare_fpel(copy, 8, ); -declare_fpel(avg, 64, _16); -declare_fpel(avg, 32, _16); -declare_fpel(avg, 16, _16); -declare_fpel(avg, 8, _16); -declare_fpel(avg, 4, _16); - -decl_mc_funcs(64, BPP); -decl_mc_funcs(32, BPP); -decl_mc_funcs(16, BPP); -decl_mc_funcs(8, BPP); -decl_mc_funcs(4, BPP); - -#define define_8tap_2d_funcs(sz, bpp) \ - define_8tap_2d_fn(put, regular, sz, bpp) \ - define_8tap_2d_fn(put, sharp, sz, bpp) \ - define_8tap_2d_fn(put, smooth, sz, bpp) \ - define_8tap_2d_fn(avg, regular, sz, bpp) \ - define_8tap_2d_fn(avg, sharp, sz, bpp) \ - define_8tap_2d_fn(avg, smooth, sz, bpp) - -define_8tap_2d_funcs(64, BPP) -define_8tap_2d_funcs(32, BPP) -define_8tap_2d_funcs(16, BPP) -define_8tap_2d_funcs(8, BPP) -define_8tap_2d_funcs(4, BPP) - - -static av_cold void vp9dsp_mc_init_arm(VP9DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) { -#define init_fpel(idx1, idx2, sz, type, suffix) \ - dsp->mc[idx1][FILTER_8TAP_SMOOTH ][idx2][0][0] = \ - dsp->mc[idx1][FILTER_8TAP_REGULAR][idx2][0][0] = \ - dsp->mc[idx1][FILTER_8TAP_SHARP ][idx2][0][0] = \ - dsp->mc[idx1][FILTER_BILINEAR ][idx2][0][0] = ff_vp9_##type##sz##suffix##_neon - -#define init_copy_avg(idx, sz1, sz2) \ - init_fpel(idx, 0, sz2, copy, ); \ - init_fpel(idx, 1, sz1, avg, _16) - -#define init_mc_func(idx1, idx2, op, filter, fname, dir, mx, my, sz, pfx, bpp) \ - dsp->mc[idx1][filter][idx2][mx][my] = pfx##op##_##fname##sz##_##dir##_##bpp##_neon - -#define init_mc_funcs(idx, dir, mx, my, sz, pfx, bpp) \ - init_mc_func(idx, 0, put, FILTER_8TAP_REGULAR, regular, dir, mx, my, sz, pfx, bpp); \ - init_mc_func(idx, 0, put, FILTER_8TAP_SHARP, sharp, dir, mx, my, sz, pfx, bpp); \ - init_mc_func(idx, 0, put, FILTER_8TAP_SMOOTH, smooth, dir, mx, my, sz, pfx, bpp); \ - init_mc_func(idx, 1, avg, FILTER_8TAP_REGULAR, regular, dir, mx, my, sz, pfx, bpp); \ - init_mc_func(idx, 1, avg, FILTER_8TAP_SHARP, sharp, dir, mx, my, sz, pfx, bpp); \ - init_mc_func(idx, 1, avg, FILTER_8TAP_SMOOTH, smooth, dir, mx, my, sz, pfx, bpp) - -#define init_mc_funcs_dirs(idx, sz, bpp) \ - init_mc_funcs(idx, h, 1, 0, sz, ff_vp9_, bpp); \ - init_mc_funcs(idx, v, 0, 1, sz, ff_vp9_, bpp); \ - init_mc_funcs(idx, hv, 1, 1, sz, , bpp) - - init_copy_avg(0, 64, 128); - init_copy_avg(1, 32, 64); - init_copy_avg(2, 16, 32); - init_copy_avg(3, 8, 16); - init_copy_avg(4, 4, 8); - - init_mc_funcs_dirs(0, 64, BPP); - init_mc_funcs_dirs(1, 32, BPP); - init_mc_funcs_dirs(2, 16, BPP); - init_mc_funcs_dirs(3, 8, BPP); - init_mc_funcs_dirs(4, 4, BPP); - } -} - -#define define_itxfm2(type_a, type_b, sz, bpp) \ -void ff_vp9_##type_a##_##type_b##_##sz##x##sz##_add_##bpp##_neon(uint8_t *_dst, \ - ptrdiff_t stride, \ - int16_t *_block, int eob) -#define define_itxfm(type_a, type_b, sz, bpp) define_itxfm2(type_a, type_b, sz, bpp) - -#define define_itxfm_funcs(sz, bpp) \ - define_itxfm(idct, idct, sz, bpp); \ - define_itxfm(iadst, idct, sz, bpp); \ - define_itxfm(idct, iadst, sz, bpp); \ - define_itxfm(iadst, iadst, sz, bpp) - -define_itxfm_funcs(4, BPP); -define_itxfm_funcs(8, BPP); -define_itxfm_funcs(16, BPP); -define_itxfm(idct, idct, 32, BPP); -define_itxfm(iwht, iwht, 4, BPP); - - -static av_cold void vp9dsp_itxfm_init_arm(VP9DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) { -#define init_itxfm2(tx, sz, bpp) \ - dsp->itxfm_add[tx][DCT_DCT] = ff_vp9_idct_idct_##sz##_add_##bpp##_neon; \ - dsp->itxfm_add[tx][DCT_ADST] = ff_vp9_iadst_idct_##sz##_add_##bpp##_neon; \ - dsp->itxfm_add[tx][ADST_DCT] = ff_vp9_idct_iadst_##sz##_add_##bpp##_neon; \ - dsp->itxfm_add[tx][ADST_ADST] = ff_vp9_iadst_iadst_##sz##_add_##bpp##_neon -#define init_itxfm(tx, sz, bpp) init_itxfm2(tx, sz, bpp) - -#define init_idct2(tx, nm, bpp) \ - dsp->itxfm_add[tx][DCT_DCT] = \ - dsp->itxfm_add[tx][ADST_DCT] = \ - dsp->itxfm_add[tx][DCT_ADST] = \ - dsp->itxfm_add[tx][ADST_ADST] = ff_vp9_##nm##_add_##bpp##_neon -#define init_idct(tx, nm, bpp) init_idct2(tx, nm, bpp) - - init_itxfm(TX_4X4, 4x4, BPP); - init_itxfm(TX_8X8, 8x8, BPP); - init_itxfm(TX_16X16, 16x16, BPP); - init_idct(TX_32X32, idct_idct_32x32, BPP); - init_idct(4, iwht_iwht_4x4, BPP); - } -} - -#define define_loop_filter(dir, wd, size, bpp) \ -void ff_vp9_loop_filter_##dir##_##wd##_##size##_##bpp##_neon(uint8_t *dst, ptrdiff_t stride, int E, int I, int H) - -#define define_loop_filters(wd, size, bpp) \ - define_loop_filter(h, wd, size, bpp); \ - define_loop_filter(v, wd, size, bpp) - -define_loop_filters(4, 8, BPP); -define_loop_filters(8, 8, BPP); -define_loop_filters(16, 8, BPP); - -define_loop_filters(16, 16, BPP); - -define_loop_filters(44, 16, BPP); -define_loop_filters(48, 16, BPP); -define_loop_filters(84, 16, BPP); -define_loop_filters(88, 16, BPP); - -static av_cold void vp9dsp_loopfilter_init_arm(VP9DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) { -#define init_lpf_func_8(idx1, idx2, dir, wd, bpp) \ - dsp->loop_filter_8[idx1][idx2] = ff_vp9_loop_filter_##dir##_##wd##_8_##bpp##_neon - -#define init_lpf_func_16(idx, dir, bpp) \ - dsp->loop_filter_16[idx] = ff_vp9_loop_filter_##dir##_16_16_##bpp##_neon - -#define init_lpf_func_mix2(idx1, idx2, idx3, dir, wd, bpp) \ - dsp->loop_filter_mix2[idx1][idx2][idx3] = ff_vp9_loop_filter_##dir##_##wd##_16_##bpp##_neon - -#define init_lpf_funcs_8_wd(idx, wd, bpp) \ - init_lpf_func_8(idx, 0, h, wd, bpp); \ - init_lpf_func_8(idx, 1, v, wd, bpp) - -#define init_lpf_funcs_16(bpp) \ - init_lpf_func_16(0, h, bpp); \ - init_lpf_func_16(1, v, bpp) - -#define init_lpf_funcs_mix2_wd(idx1, idx2, wd, bpp) \ - init_lpf_func_mix2(idx1, idx2, 0, h, wd, bpp); \ - init_lpf_func_mix2(idx1, idx2, 1, v, wd, bpp) - -#define init_lpf_funcs_8(bpp) \ - init_lpf_funcs_8_wd(0, 4, bpp); \ - init_lpf_funcs_8_wd(1, 8, bpp); \ - init_lpf_funcs_8_wd(2, 16, bpp) - -#define init_lpf_funcs_mix2(bpp) \ - init_lpf_funcs_mix2_wd(0, 0, 44, bpp); \ - init_lpf_funcs_mix2_wd(0, 1, 48, bpp); \ - init_lpf_funcs_mix2_wd(1, 0, 84, bpp); \ - init_lpf_funcs_mix2_wd(1, 1, 88, bpp) - - init_lpf_funcs_8(BPP); - init_lpf_funcs_16(BPP); - init_lpf_funcs_mix2(BPP); - } -} - -av_cold void INIT_FUNC(VP9DSPContext *dsp) -{ - vp9dsp_mc_init_arm(dsp); - vp9dsp_loopfilter_init_arm(dsp); - vp9dsp_itxfm_init_arm(dsp); -} diff --git a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_arm.c b/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_arm.c deleted file mode 100644 index b3911f7e49..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vp9dsp_init_arm.c +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright (c) 2016 Google Inc. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "libavutil/attributes.h" -#include "libavutil/internal.h" -#include "libavutil/mem_internal.h" -#include "libavutil/arm/cpu.h" -#include "libavcodec/vp9dsp.h" -#include "vp9dsp_init.h" - -#define declare_fpel(type, sz) \ -void ff_vp9_##type##sz##_neon(uint8_t *dst, ptrdiff_t dst_stride, \ - const uint8_t *src, ptrdiff_t src_stride, \ - int h, int mx, int my) - -#define declare_copy_avg(sz) \ - declare_fpel(copy, sz); \ - declare_fpel(avg , sz) - -#define decl_mc_func(op, filter, dir, sz) \ -void ff_vp9_##op##_##filter##sz##_##dir##_neon(uint8_t *dst, ptrdiff_t dst_stride, \ - const uint8_t *src, ptrdiff_t src_stride, \ - int h, int mx, int my) - -#define define_8tap_2d_fn(op, filter, sz) \ -static void op##_##filter##sz##_hv_neon(uint8_t *dst, ptrdiff_t dst_stride, \ - const uint8_t *src, ptrdiff_t src_stride, \ - int h, int mx, int my) \ -{ \ - LOCAL_ALIGNED_16(uint8_t, temp, [((1 + (sz < 64)) * sz + 8) * sz]); \ - /* We only need h + 7 lines, but the horizontal filter assumes an \ - * even number of rows, so filter h + 8 lines here. */ \ - ff_vp9_put_##filter##sz##_h_neon(temp, sz, \ - src - 3 * src_stride, src_stride, \ - h + 8, mx, 0); \ - ff_vp9_##op##_##filter##sz##_v_neon(dst, dst_stride, \ - temp + 3 * sz, sz, \ - h, 0, my); \ -} - -#define decl_filter_funcs(op, dir, sz) \ - decl_mc_func(op, regular, dir, sz); \ - decl_mc_func(op, sharp, dir, sz); \ - decl_mc_func(op, smooth, dir, sz) - -#define decl_mc_funcs(sz) \ - decl_filter_funcs(put, h, sz); \ - decl_filter_funcs(avg, h, sz); \ - decl_filter_funcs(put, v, sz); \ - decl_filter_funcs(avg, v, sz); \ - decl_filter_funcs(put, hv, sz); \ - decl_filter_funcs(avg, hv, sz) - -declare_copy_avg(64); -declare_copy_avg(32); -declare_copy_avg(16); -declare_copy_avg(8); -declare_copy_avg(4); - -decl_mc_funcs(64); -decl_mc_funcs(32); -decl_mc_funcs(16); -decl_mc_funcs(8); -decl_mc_funcs(4); - -#define define_8tap_2d_funcs(sz) \ - define_8tap_2d_fn(put, regular, sz) \ - define_8tap_2d_fn(put, sharp, sz) \ - define_8tap_2d_fn(put, smooth, sz) \ - define_8tap_2d_fn(avg, regular, sz) \ - define_8tap_2d_fn(avg, sharp, sz) \ - define_8tap_2d_fn(avg, smooth, sz) - -define_8tap_2d_funcs(64) -define_8tap_2d_funcs(32) -define_8tap_2d_funcs(16) -define_8tap_2d_funcs(8) -define_8tap_2d_funcs(4) - - -static av_cold void vp9dsp_mc_init_arm(VP9DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) { -#define init_fpel(idx1, idx2, sz, type) \ - dsp->mc[idx1][FILTER_8TAP_SMOOTH ][idx2][0][0] = \ - dsp->mc[idx1][FILTER_8TAP_REGULAR][idx2][0][0] = \ - dsp->mc[idx1][FILTER_8TAP_SHARP ][idx2][0][0] = \ - dsp->mc[idx1][FILTER_BILINEAR ][idx2][0][0] = ff_vp9_##type##sz##_neon - -#define init_copy_avg(idx, sz) \ - init_fpel(idx, 0, sz, copy); \ - init_fpel(idx, 1, sz, avg) - -#define init_mc_func(idx1, idx2, op, filter, fname, dir, mx, my, sz, pfx) \ - dsp->mc[idx1][filter][idx2][mx][my] = pfx##op##_##fname##sz##_##dir##_neon - -#define init_mc_funcs(idx, dir, mx, my, sz, pfx) \ - init_mc_func(idx, 0, put, FILTER_8TAP_REGULAR, regular, dir, mx, my, sz, pfx); \ - init_mc_func(idx, 0, put, FILTER_8TAP_SHARP, sharp, dir, mx, my, sz, pfx); \ - init_mc_func(idx, 0, put, FILTER_8TAP_SMOOTH, smooth, dir, mx, my, sz, pfx); \ - init_mc_func(idx, 1, avg, FILTER_8TAP_REGULAR, regular, dir, mx, my, sz, pfx); \ - init_mc_func(idx, 1, avg, FILTER_8TAP_SHARP, sharp, dir, mx, my, sz, pfx); \ - init_mc_func(idx, 1, avg, FILTER_8TAP_SMOOTH, smooth, dir, mx, my, sz, pfx) - -#define init_mc_funcs_dirs(idx, sz) \ - init_mc_funcs(idx, h, 1, 0, sz, ff_vp9_); \ - init_mc_funcs(idx, v, 0, 1, sz, ff_vp9_); \ - init_mc_funcs(idx, hv, 1, 1, sz,) - - init_copy_avg(0, 64); - init_copy_avg(1, 32); - init_copy_avg(2, 16); - init_copy_avg(3, 8); - init_copy_avg(4, 4); - - init_mc_funcs_dirs(0, 64); - init_mc_funcs_dirs(1, 32); - init_mc_funcs_dirs(2, 16); - init_mc_funcs_dirs(3, 8); - init_mc_funcs_dirs(4, 4); - } -} - -#define define_itxfm(type_a, type_b, sz) \ -void ff_vp9_##type_a##_##type_b##_##sz##x##sz##_add_neon(uint8_t *_dst, \ - ptrdiff_t stride, \ - int16_t *_block, int eob) - -#define define_itxfm_funcs(sz) \ - define_itxfm(idct, idct, sz); \ - define_itxfm(iadst, idct, sz); \ - define_itxfm(idct, iadst, sz); \ - define_itxfm(iadst, iadst, sz) - -define_itxfm_funcs(4); -define_itxfm_funcs(8); -define_itxfm_funcs(16); -define_itxfm(idct, idct, 32); -define_itxfm(iwht, iwht, 4); - - -static av_cold void vp9dsp_itxfm_init_arm(VP9DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) { -#define init_itxfm(tx, sz) \ - dsp->itxfm_add[tx][DCT_DCT] = ff_vp9_idct_idct_##sz##_add_neon; \ - dsp->itxfm_add[tx][DCT_ADST] = ff_vp9_iadst_idct_##sz##_add_neon; \ - dsp->itxfm_add[tx][ADST_DCT] = ff_vp9_idct_iadst_##sz##_add_neon; \ - dsp->itxfm_add[tx][ADST_ADST] = ff_vp9_iadst_iadst_##sz##_add_neon - -#define init_idct(tx, nm) \ - dsp->itxfm_add[tx][DCT_DCT] = \ - dsp->itxfm_add[tx][ADST_DCT] = \ - dsp->itxfm_add[tx][DCT_ADST] = \ - dsp->itxfm_add[tx][ADST_ADST] = ff_vp9_##nm##_add_neon - - init_itxfm(TX_4X4, 4x4); - init_itxfm(TX_8X8, 8x8); - init_itxfm(TX_16X16, 16x16); - init_idct(TX_32X32, idct_idct_32x32); - init_idct(4, iwht_iwht_4x4); - } -} - -#define define_loop_filter(dir, wd, size) \ -void ff_vp9_loop_filter_##dir##_##wd##_##size##_neon(uint8_t *dst, ptrdiff_t stride, int E, int I, int H) - -#define define_loop_filters(wd, size) \ - define_loop_filter(h, wd, size); \ - define_loop_filter(v, wd, size) - -define_loop_filters(4, 8); -define_loop_filters(8, 8); -define_loop_filters(16, 8); -define_loop_filters(16, 16); - -define_loop_filters(44, 16); - -#define lf_mix_fn(dir, wd1, wd2, stridea) \ -static void loop_filter_##dir##_##wd1##wd2##_16_neon(uint8_t *dst, \ - ptrdiff_t stride, \ - int E, int I, int H) \ -{ \ - ff_vp9_loop_filter_##dir##_##wd1##_8_neon(dst, stride, E & 0xff, I & 0xff, H & 0xff); \ - ff_vp9_loop_filter_##dir##_##wd2##_8_neon(dst + 8 * stridea, stride, E >> 8, I >> 8, H >> 8); \ -} - -#define lf_mix_fns(wd1, wd2) \ - lf_mix_fn(h, wd1, wd2, stride) \ - lf_mix_fn(v, wd1, wd2, sizeof(uint8_t)) - -lf_mix_fns(4, 8) -lf_mix_fns(8, 4) -lf_mix_fns(8, 8) - -static av_cold void vp9dsp_loopfilter_init_arm(VP9DSPContext *dsp) -{ - int cpu_flags = av_get_cpu_flags(); - - if (have_neon(cpu_flags)) { - dsp->loop_filter_8[0][1] = ff_vp9_loop_filter_v_4_8_neon; - dsp->loop_filter_8[0][0] = ff_vp9_loop_filter_h_4_8_neon; - dsp->loop_filter_8[1][1] = ff_vp9_loop_filter_v_8_8_neon; - dsp->loop_filter_8[1][0] = ff_vp9_loop_filter_h_8_8_neon; - dsp->loop_filter_8[2][1] = ff_vp9_loop_filter_v_16_8_neon; - dsp->loop_filter_8[2][0] = ff_vp9_loop_filter_h_16_8_neon; - - dsp->loop_filter_16[0] = ff_vp9_loop_filter_h_16_16_neon; - dsp->loop_filter_16[1] = ff_vp9_loop_filter_v_16_16_neon; - - dsp->loop_filter_mix2[0][0][0] = ff_vp9_loop_filter_h_44_16_neon; - dsp->loop_filter_mix2[0][0][1] = ff_vp9_loop_filter_v_44_16_neon; - dsp->loop_filter_mix2[0][1][0] = loop_filter_h_48_16_neon; - dsp->loop_filter_mix2[0][1][1] = loop_filter_v_48_16_neon; - dsp->loop_filter_mix2[1][0][0] = loop_filter_h_84_16_neon; - dsp->loop_filter_mix2[1][0][1] = loop_filter_v_84_16_neon; - dsp->loop_filter_mix2[1][1][0] = loop_filter_h_88_16_neon; - dsp->loop_filter_mix2[1][1][1] = loop_filter_v_88_16_neon; - } -} - -av_cold void ff_vp9dsp_init_arm(VP9DSPContext *dsp, int bpp) -{ - if (bpp == 10) { - ff_vp9dsp_init_10bpp_arm(dsp); - return; - } else if (bpp == 12) { - ff_vp9dsp_init_12bpp_arm(dsp); - return; - } else if (bpp != 8) - return; - - vp9dsp_mc_init_arm(dsp); - vp9dsp_loopfilter_init_arm(dsp); - vp9dsp_itxfm_init_arm(dsp); -} diff --git a/icecat/media/ffvpx/libavcodec/arm/vpx_arith.h b/icecat/media/ffvpx/libavcodec/arm/vpx_arith.h deleted file mode 100644 index 1ead2284c3..0000000000 --- a/icecat/media/ffvpx/libavcodec/arm/vpx_arith.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2010 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_ARM_VPX_ARITH_H -#define AVCODEC_ARM_VPX_ARITH_H - -#if CONFIG_THUMB -# define A(x) -# define T(x) x -#else -# define A(x) x -# define T(x) -#endif - -#if CONFIG_THUMB || defined __clang__ -# define L(x) -# define U(x) x -#else -# define L(x) x -# define U(x) -#endif - -#if HAVE_ARMV6_INLINE - -#define vpx_rac_get_prob vp56_rac_get_prob_armv6 -static inline int vp56_rac_get_prob_armv6(VPXRangeCoder *c, int pr) -{ - unsigned shift = ff_vpx_norm_shift[c->high]; - unsigned code_word = c->code_word << shift; - unsigned high = c->high << shift; - unsigned bit; - - __asm__ ("adds %3, %3, %0 \n" - "itt cs \n" - "cmpcs %7, %4 \n" - L("ldrcsh %2, [%4], #2 \n") - U("ldrhcs %2, [%4], #2 \n") - "rsb %0, %6, #256 \n" - "smlabb %0, %5, %6, %0 \n" - T("itttt cs \n") - "rev16cs %2, %2 \n" - T("lslcs %2, %2, %3 \n") - T("orrcs %1, %1, %2 \n") - A("orrcs %1, %1, %2, lsl %3 \n") - "subcs %3, %3, #16 \n" - "lsr %0, %0, #8 \n" - "cmp %1, %0, lsl #16 \n" - "ittte ge \n" - "subge %1, %1, %0, lsl #16 \n" - "subge %0, %5, %0 \n" - "movge %2, #1 \n" - "movlt %2, #0 \n" - : "=&r"(c->high), "=&r"(c->code_word), "=&r"(bit), - "+&r"(c->bits), "+&r"(c->buffer) - : "r"(high), "r"(pr), "r"(c->end - 1), - "0"(shift), "1"(code_word) - : "cc"); - - return bit; -} - -#define vpx_rac_get_prob_branchy vp56_rac_get_prob_branchy_armv6 -static inline int vp56_rac_get_prob_branchy_armv6(VPXRangeCoder *c, int pr) -{ - unsigned shift = ff_vpx_norm_shift[c->high]; - unsigned code_word = c->code_word << shift; - unsigned high = c->high << shift; - unsigned low; - unsigned tmp; - - __asm__ ("adds %3, %3, %0 \n" - "itt cs \n" - "cmpcs %7, %4 \n" - L("ldrcsh %2, [%4], #2 \n") - U("ldrhcs %2, [%4], #2 \n") - "rsb %0, %6, #256 \n" - "smlabb %0, %5, %6, %0 \n" - T("itttt cs \n") - "rev16cs %2, %2 \n" - T("lslcs %2, %2, %3 \n") - T("orrcs %1, %1, %2 \n") - A("orrcs %1, %1, %2, lsl %3 \n") - "subcs %3, %3, #16 \n" - "lsr %0, %0, #8 \n" - "lsl %2, %0, #16 \n" - : "=&r"(low), "+&r"(code_word), "=&r"(tmp), - "+&r"(c->bits), "+&r"(c->buffer) - : "r"(high), "r"(pr), "r"(c->end - 1), "0"(shift) - : "cc"); - - if (code_word >= tmp) { - c->high = high - low; - c->code_word = code_word - tmp; - return 1; - } - - c->high = low; - c->code_word = code_word; - return 0; -} - -#endif - -#endif /* AVCODEC_ARM_VPX_ARITH_H */ diff --git a/icecat/media/ffvpx/libavcodec/audio_frame_queue.c b/icecat/media/ffvpx/libavcodec/audio_frame_queue.c index 1ca5f70304..10b5d21392 100644 --- a/icecat/media/ffvpx/libavcodec/audio_frame_queue.c +++ b/icecat/media/ffvpx/libavcodec/audio_frame_queue.c @@ -33,7 +33,7 @@ av_cold void ff_af_queue_init(AVCodecContext *avctx, AudioFrameQueue *afq) afq->frame_count = 0; } -av_cold void ff_af_queue_close(AudioFrameQueue *afq) +void ff_af_queue_close(AudioFrameQueue *afq) { if(afq->frame_count) av_log(afq->avctx, AV_LOG_WARNING, "%d frames left in the queue on closing\n", afq->frame_count); diff --git a/icecat/media/ffvpx/libavcodec/av1_parser.c b/icecat/media/ffvpx/libavcodec/av1_parser.c index 68a98285ef..2b79493bf8 100644 --- a/icecat/media/ffvpx/libavcodec/av1_parser.c +++ b/icecat/media/ffvpx/libavcodec/av1_parser.c @@ -20,14 +20,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "av1_parse.h" -#include "avcodec.h" #include "cbs.h" #include "cbs_av1.h" -#include "parser_internal.h" +#include "parser.h" typedef struct AV1ParseContext { CodedBitstreamContext *cbc; @@ -84,7 +82,7 @@ static int av1_parser_parse(AVCodecParserContext *ctx, ff_cbs_fragment_reset(td); } - ret = ff_cbs_read(s->cbc, td, NULL, data, size); + ret = ff_cbs_read(s->cbc, td, data, size); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Failed to parse temporal unit.\n"); goto end; @@ -134,13 +132,6 @@ static int av1_parser_parse(AVCodecParserContext *ctx, break; } ctx->picture_structure = AV_PICTURE_STRUCTURE_FRAME; - - /* Extract SAR from render_height_minus_1 & render_width_minus_1 */ - av_reduce(&avctx->sample_aspect_ratio.num, - &avctx->sample_aspect_ratio.den, - (int64_t)ctx->height * (frame->render_width_minus_1 + 1), - (int64_t)ctx->width * (frame->render_height_minus_1 + 1), - INT_MAX); } switch (av1->bit_depth) { @@ -192,7 +183,6 @@ static const CodedBitstreamUnitType decompose_unit_types[] = { AV1_OBU_FRAME_HEADER, AV1_OBU_TILE_GROUP, AV1_OBU_FRAME, - AV1_OBU_REDUNDANT_FRAME_HEADER, }; static av_cold int av1_parser_init(AVCodecParserContext *ctx) @@ -210,7 +200,7 @@ static av_cold int av1_parser_init(AVCodecParserContext *ctx) return 0; } -static av_cold void av1_parser_close(AVCodecParserContext *ctx) +static void av1_parser_close(AVCodecParserContext *ctx) { AV1ParseContext *s = ctx->priv_data; @@ -218,10 +208,10 @@ static av_cold void av1_parser_close(AVCodecParserContext *ctx) ff_cbs_close(&s->cbc); } -const FFCodecParser ff_av1_parser = { - PARSER_CODEC_LIST(AV_CODEC_ID_AV1), +const AVCodecParser ff_av1_parser = { + .codec_ids = { AV_CODEC_ID_AV1 }, .priv_data_size = sizeof(AV1ParseContext), - .init = av1_parser_init, - .close = av1_parser_close, - .parse = av1_parser_parse, + .parser_init = av1_parser_init, + .parser_close = av1_parser_close, + .parser_parse = av1_parser_parse, }; diff --git a/icecat/media/ffvpx/libavcodec/av1dec.c b/icecat/media/ffvpx/libavcodec/av1dec.c index 8a42a9cf60..7c54e36220 100644 --- a/icecat/media/ffvpx/libavcodec/av1dec.c +++ b/icecat/media/ffvpx/libavcodec/av1dec.c @@ -20,7 +20,6 @@ #include "config_components.h" -#include "libavutil/attributes.h" #include "libavutil/hdr_dynamic_metadata.h" #include "libavutil/film_grain_params.h" #include "libavutil/mastering_display_metadata.h" @@ -42,7 +41,7 @@ #include "progressframe.h" #include "libavutil/refstruct.h" -/** same with Div_Lut defined in spec 7.11.3.7 */ +/**< same with Div_Lut defined in spec 7.11.3.7 */ static const uint16_t div_lut[AV1_DIV_LUT_NUM] = { 16384, 16320, 16257, 16194, 16132, 16070, 16009, 15948, 15888, 15828, 15768, 15709, 15650, 15592, 15534, 15477, 15420, 15364, 15308, 15252, 15197, 15142, @@ -774,13 +773,11 @@ static int set_context_with_sequence(AVCodecContext *avctx, avctx->profile = seq->seq_profile; avctx->level = seq->seq_level_idx[0]; - if (seq->color_config.color_description_present_flag) { - avctx->color_range = - seq->color_config.color_range ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG; - avctx->color_primaries = seq->color_config.color_primaries; - avctx->colorspace = seq->color_config.matrix_coefficients; - avctx->color_trc = seq->color_config.transfer_characteristics; - } + avctx->color_range = + seq->color_config.color_range ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG; + avctx->color_primaries = seq->color_config.color_primaries; + avctx->colorspace = seq->color_config.matrix_coefficients; + avctx->color_trc = seq->color_config.transfer_characteristics; switch (seq->color_config.chroma_sample_position) { case AV1_CSP_VERTICAL: @@ -893,8 +890,7 @@ static av_cold int av1_decode_init(AVCodecContext *avctx) seq = ((CodedBitstreamAV1Context *)(s->cbc->priv_data))->sequence_header; if (!seq) { - if (!(avctx->extradata[0] & 0x80)) - av_log(avctx, AV_LOG_WARNING, "No sequence header available in extradata.\n"); + av_log(avctx, AV_LOG_WARNING, "No sequence header available.\n"); goto end; } @@ -969,109 +965,78 @@ static int export_itut_t35(AVCodecContext *avctx, AVFrame *frame, { GetByteContext gb; AV1DecContext *s = avctx->priv_data; - int ret, provider_code, country_code; + int ret, provider_code; bytestream2_init(&gb, itut_t35->payload, itut_t35->payload_size); - country_code = itut_t35->itu_t_t35_country_code ; - switch (country_code) { - case ITU_T_T35_COUNTRY_CODE_US: - provider_code = bytestream2_get_be16(&gb); + provider_code = bytestream2_get_be16(&gb); + switch (provider_code) { + case ITU_T_T35_PROVIDER_CODE_ATSC: { + uint32_t user_identifier = bytestream2_get_be32(&gb); + switch (user_identifier) { + case MKBETAG('G', 'A', '9', '4'): { // closed captions + AVBufferRef *buf = NULL; - switch (provider_code) { - case ITU_T_T35_PROVIDER_CODE_ATSC: { - uint32_t user_identifier = bytestream2_get_be32(&gb); - switch (user_identifier) { - case MKBETAG('G', 'A', '9', '4'): { // closed captions - AVBufferRef *buf = NULL; + ret = ff_parse_a53_cc(&buf, gb.buffer, bytestream2_get_bytes_left(&gb)); + if (ret < 0) + return ret; + if (!ret) + break; - ret = ff_parse_a53_cc(&buf, gb.buffer, bytestream2_get_bytes_left(&gb)); - if (ret < 0) - return ret; - if (!ret) - break; - - ret = ff_frame_new_side_data_from_buf(avctx, frame, AV_FRAME_DATA_A53_CC, &buf); - if (ret < 0) - return ret; + ret = ff_frame_new_side_data_from_buf(avctx, frame, AV_FRAME_DATA_A53_CC, &buf); + if (ret < 0) + return ret; #if FF_API_CODEC_PROPS FF_DISABLE_DEPRECATION_WARNINGS - avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; + avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; FF_ENABLE_DEPRECATION_WARNINGS #endif - break; - } - default: // ignore unsupported identifiers - break; - } break; } - case ITU_T_T35_PROVIDER_CODE_SAMSUNG: { - AVDynamicHDRPlus *hdrplus; - int provider_oriented_code = bytestream2_get_be16(&gb); - int application_identifier = bytestream2_get_byte(&gb); - - if (provider_oriented_code != 1 || application_identifier != 4) - return 0; // ignore - - hdrplus = av_dynamic_hdr_plus_create_side_data(frame); - if (!hdrplus) - return AVERROR(ENOMEM); - - ret = av_dynamic_hdr_plus_from_t35(hdrplus, gb.buffer, - bytestream2_get_bytes_left(&gb)); - if (ret < 0) - return ret; - break; - } - case ITU_T_T35_PROVIDER_CODE_DOLBY: { - int provider_oriented_code = bytestream2_get_be32(&gb); - if (provider_oriented_code != 0x800) - return 0; // ignore - - ret = ff_dovi_rpu_parse(&s->dovi, gb.buffer, bytestream2_get_bytes_left(&gb), - avctx->err_recognition); - if (ret < 0) { - av_log(avctx, AV_LOG_WARNING, "Error parsing DOVI OBU.\n"); - return 0; // ignore - } - - ret = ff_dovi_attach_side_data(&s->dovi, frame); - if (ret < 0) - return ret; - break; - } - default: + default: // ignore unsupported identifiers break; } break; - case ITU_T_T35_COUNTRY_CODE_UK: - bytestream2_skip(&gb, 1); // t35_uk_country_code_second_octet + } + case ITU_T_T35_PROVIDER_CODE_SMTPE: { + AVDynamicHDRPlus *hdrplus; + int provider_oriented_code = bytestream2_get_be16(&gb); + int application_identifier = bytestream2_get_byte(&gb); - provider_code = bytestream2_get_be16(&gb); - switch (provider_code) { - case ITU_T_T35_PROVIDER_CODE_VNOVA: { - AVFrameSideData *sd; - if (bytestream2_get_bytes_left(&gb) < 2) - return AVERROR_INVALIDDATA; - - ret = ff_frame_new_side_data(avctx, frame, AV_FRAME_DATA_LCEVC, - bytestream2_get_bytes_left(&gb), &sd); - if (ret < 0) - return ret; - if (!sd) - break; - - bytestream2_get_bufferu(&gb, sd->data, sd->size); + if (itut_t35->itu_t_t35_country_code != ITU_T_T35_COUNTRY_CODE_US || + provider_oriented_code != 1 || application_identifier != 4) break; - } - default: - break; - } + + hdrplus = av_dynamic_hdr_plus_create_side_data(frame); + if (!hdrplus) + return AVERROR(ENOMEM); + + ret = av_dynamic_hdr_plus_from_t35(hdrplus, gb.buffer, + bytestream2_get_bytes_left(&gb)); + if (ret < 0) + return ret; break; - default: - // ignore unsupported provider codes + } + case ITU_T_T35_PROVIDER_CODE_DOLBY: { + int provider_oriented_code = bytestream2_get_be32(&gb); + if (itut_t35->itu_t_t35_country_code != ITU_T_T35_COUNTRY_CODE_US || + provider_oriented_code != 0x800) + break; + + ret = ff_dovi_rpu_parse(&s->dovi, gb.buffer, gb.buffer_end - gb.buffer, + avctx->err_recognition); + if (ret < 0) { + av_log(avctx, AV_LOG_WARNING, "Error parsing DOVI OBU.\n"); + break; // ignore + } + + ret = ff_dovi_attach_side_data(&s->dovi, frame); + if (ret < 0) + return ret; + break; + } + default: // ignore unsupported provider codes break; } @@ -1231,6 +1196,12 @@ static int set_output_frame(AVCodecContext *avctx, AVFrame *frame) frame->pts = pkt->pts; frame->pkt_dts = pkt->dts; +#if FF_API_FRAME_PKT +FF_DISABLE_DEPRECATION_WARNINGS + frame->pkt_size = pkt->size; + frame->pkt_pos = pkt->pos; +FF_ENABLE_DEPRECATION_WARNINGS +#endif av_packet_unref(pkt); @@ -1346,8 +1317,6 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) av_refstruct_replace(&s->seq_ref, unit->content_ref); s->raw_seq = &obu->obu.sequence_header; - s->raw_frame_header = NULL; - raw_tile_group = NULL; ret = set_context_with_sequence(avctx, s->raw_seq); if (ret < 0) { @@ -1360,15 +1329,6 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) s->pix_fmt = AV_PIX_FMT_NONE; - if (FF_HW_HAS_CB(avctx, decode_params)) { - ret = FF_HW_CALL(avctx, decode_params, AV1_OBU_SEQUENCE_HEADER, - s->seq_data_ref->data, s->seq_data_ref->size); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "HW accel decode params fail.\n"); - return ret; - } - } - break; case AV1_OBU_REDUNDANT_FRAME_HEADER: if (s->raw_frame_header) @@ -1384,8 +1344,6 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) av_refstruct_replace(&s->header_ref, unit->content_ref); - raw_tile_group = NULL; - if (unit->type == AV1_OBU_FRAME) s->raw_frame_header = &obu->obu.frame.header; else @@ -1422,8 +1380,7 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) s->cur_frame.temporal_id = header->temporal_id; if (avctx->hwaccel && s->cur_frame.f) { - ret = FF_HW_CALL(avctx, start_frame, s->pkt->buf, - unit->data, unit->data_size); + ret = FF_HW_CALL(avctx, start_frame, unit->data, unit->data_size); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "HW accel start frame fail.\n"); goto end; @@ -1458,11 +1415,8 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) } } break; - case AV1_OBU_TEMPORAL_DELIMITER: - s->raw_frame_header = NULL; - raw_tile_group = NULL; - // fall-through case AV1_OBU_TILE_LIST: + case AV1_OBU_TEMPORAL_DELIMITER: case AV1_OBU_PADDING: break; case AV1_OBU_METADATA: @@ -1496,7 +1450,7 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) break; default: av_log(avctx, AV_LOG_DEBUG, - "Unknown obu type: %d (%zu bits).\n", + "Unknown obu type: %d (%"SIZE_SPECIFIER" bits).\n", unit->type, unit->data_size); } @@ -1585,7 +1539,7 @@ static int av1_receive_frame(AVCodecContext *avctx, AVFrame *frame) return ret; } -static av_cold void av1_decode_flush(AVCodecContext *avctx) +static void av1_decode_flush(AVCodecContext *avctx) { AV1DecContext *s = avctx->priv_data; AV1RawMetadataITUTT35 itut_t35; diff --git a/icecat/media/ffvpx/libavcodec/avcodec.c b/icecat/media/ffvpx/libavcodec/avcodec.c index 9ff4c7f319..e7e2c09222 100644 --- a/icecat/media/ffvpx/libavcodec/avcodec.c +++ b/icecat/media/ffvpx/libavcodec/avcodec.c @@ -23,8 +23,6 @@ * AVCodecContext functions for libavcodec */ -#include - #include "config.h" #include "libavutil/avassert.h" #include "libavutil/avstring.h" @@ -32,6 +30,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/common.h" #include "libavutil/emms.h" +#include "libavutil/fifo.h" #include "libavutil/imgutils.h" #include "libavutil/mem.h" #include "libavutil/opt.h" @@ -42,10 +41,12 @@ #include "codec_desc.h" #include "codec_internal.h" #include "decode.h" +#include "encode.h" #include "frame_thread_encoder.h" #include "hwconfig.h" #include "internal.h" #include "libavutil/refstruct.h" +#include "thread.h" /** * Maximum size in bytes of extradata. @@ -64,8 +65,6 @@ const SideDataMap ff_sd_global_map[] = { { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, { AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT,AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT }, - { AV_PKT_DATA_3D_REFERENCE_DISPLAYS, AV_FRAME_DATA_3D_REFERENCE_DISPLAYS }, - { AV_PKT_DATA_EXIF, AV_FRAME_DATA_EXIF }, { AV_PKT_DATA_NB }, }; @@ -191,7 +190,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code return AVERROR(EINVAL); } - avci = ff_codec_is_decoder(codec) ? + avci = av_codec_is_decoder(codec) ? ff_decode_internal_alloc() : ff_encode_internal_alloc(); if (!avci) { @@ -255,11 +254,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code } } - /* AV_CODEC_CAP_CHANNEL_CONF is a decoder-only flag; so the code below - * in particular checks that sample_rate is set for all audio encoders. */ - if (avctx->sample_rate < 0 || - avctx->sample_rate == 0 && avctx->codec_type == AVMEDIA_TYPE_AUDIO && - !(codec->capabilities & AV_CODEC_CAP_CHANNEL_CONF)) { + if (avctx->sample_rate < 0) { av_log(avctx, AV_LOG_ERROR, "Invalid sample rate: %d\n", avctx->sample_rate); ret = AVERROR(EINVAL); goto free_and_end; @@ -275,7 +270,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code if (avctx->codec_type == AVMEDIA_TYPE_AUDIO && !avctx->ch_layout.nb_channels && !(codec->capabilities & AV_CODEC_CAP_CHANNEL_CONF)) { av_log(avctx, AV_LOG_ERROR, "%s requires channel layout to be set\n", - ff_codec_is_decoder(codec) ? "Decoder" : "Encoder"); + av_codec_is_decoder(codec) ? "Decoder" : "Encoder"); ret = AVERROR(EINVAL); goto free_and_end; } @@ -295,13 +290,13 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code if ((avctx->codec->capabilities & AV_CODEC_CAP_EXPERIMENTAL) && avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { - const char *codec_string = ff_codec_is_encoder(codec) ? "encoder" : "decoder"; + const char *codec_string = av_codec_is_encoder(codec) ? "encoder" : "decoder"; const AVCodec *codec2; av_log(avctx, AV_LOG_ERROR, "The %s '%s' is experimental but experimental codecs are not enabled, " "add '-strict %d' if you want to use it.\n", codec_string, codec->name, FF_COMPLIANCE_EXPERIMENTAL); - codec2 = ff_codec_is_encoder(codec) ? avcodec_find_encoder(codec->id) : avcodec_find_decoder(codec->id); + codec2 = av_codec_is_encoder(codec) ? avcodec_find_encoder(codec->id) : avcodec_find_decoder(codec->id); if (!(codec2->capabilities & AV_CODEC_CAP_EXPERIMENTAL)) av_log(avctx, AV_LOG_ERROR, "Alternatively use the non experimental %s '%s'.\n", codec_string, codec2->name); @@ -315,7 +310,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code avctx->time_base.den = avctx->sample_rate; } - if (ff_codec_is_encoder(avctx->codec)) + if (av_codec_is_encoder(avctx->codec)) ret = ff_encode_preinit(avctx); else ret = ff_decode_preinit(avctx); @@ -350,12 +345,10 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code ret=0; - if (ff_codec_is_decoder(avctx->codec)) { + if (av_codec_is_decoder(avctx->codec)) { if (!avctx->bit_rate) avctx->bit_rate = get_bit_rate(avctx); - avci->skip_samples = avctx->delay; - /* validate channel layout from the decoder */ if ((avctx->ch_layout.nb_channels && !av_channel_layout_check(&avctx->ch_layout)) || avctx->ch_layout.nb_channels > FF_SANE_NB_CHANNELS) { @@ -436,14 +429,16 @@ av_cold void ff_codec_close(AVCodecContext *avctx) { int i; + if (!avctx) + return; + if (avcodec_is_open(avctx)) { AVCodecInternal *avci = avctx->internal; -#if CONFIG_FRAME_THREAD_ENCODER - if (avci->frame_thread_encoder && avctx->thread_count > 1) { + if (CONFIG_FRAME_THREAD_ENCODER && + avci->frame_thread_encoder && avctx->thread_count > 1) { ff_frame_thread_encoder_free(avctx); } -#endif if (HAVE_THREADS && avci->thread_ctx) ff_thread_free(avctx); if (avci->needs_close && ffcodec(avctx->codec)->close) @@ -467,6 +462,10 @@ av_cold void ff_codec_close(AVCodecContext *avctx) av_bsf_free(&avci->bsf); +#if FF_API_DROPCHANGED + av_channel_layout_uninit(&avci->initial_ch_layout); +#endif + #if CONFIG_LCMS2 ff_icc_context_uninit(&avci->icc); #endif @@ -498,6 +497,14 @@ av_cold void ff_codec_close(AVCodecContext *avctx) avctx->active_thread_type = 0; } +#if FF_API_AVCODEC_CLOSE +int avcodec_close(AVCodecContext *avctx) +{ + ff_codec_close(avctx); + return 0; +} +#endif + static const char *unknown_if_null(const char *str) { return str ? str : "unknown"; @@ -707,62 +714,48 @@ int avcodec_is_open(AVCodecContext *s) return !!s->internal; } -int attribute_align_arg avcodec_receive_frame_flags(AVCodecContext *avctx, - AVFrame *frame, unsigned flags) +int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) { av_frame_unref(frame); - if (!avcodec_is_open(avctx) || !avctx->codec) - return AVERROR(EINVAL); - - if (ff_codec_is_decoder(avctx->codec)) - return ff_decode_receive_frame(avctx, frame, flags); + if (av_codec_is_decoder(avctx->codec)) + return ff_decode_receive_frame(avctx, frame); return ff_encode_receive_frame(avctx, frame); } -int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) -{ - return avcodec_receive_frame_flags(avctx, frame, 0); -} - -#define WRAP_CONFIG(allowed_type, field, var, field_type, sentinel_check) \ +#define WRAP_CONFIG(allowed_type, field, field_type, terminator) \ do { \ + static const field_type end = terminator; \ if (codec->type != (allowed_type)) \ return AVERROR(EINVAL); \ - const field_type *ptr = codec->field; \ - *out_configs = ptr; \ - if (ptr) { \ + *out_configs = (field); \ + if (out_num_configs) { \ for (int i = 0;; i++) { \ - const field_type var = ptr[i]; \ - if (sentinel_check) { \ + if (!(field) || !memcmp(&(field)[i], &end, sizeof(end))) { \ *out_num_configs = i; \ break; \ } \ } \ - } else \ - *out_num_configs = 0; \ + } \ return 0; \ } while (0) -static const enum AVColorRange color_range_tab[] = { - AVCOL_RANGE_MPEG, AVCOL_RANGE_JPEG, AVCOL_RANGE_UNSPECIFIED, - AVCOL_RANGE_MPEG, AVCOL_RANGE_UNSPECIFIED, +static const enum AVColorRange color_range_jpeg[] = { + AVCOL_RANGE_JPEG, AVCOL_RANGE_UNSPECIFIED }; -static const enum AVAlphaMode alpha_mode_tab[] = { - AVALPHA_MODE_PREMULTIPLIED, AVALPHA_MODE_STRAIGHT, AVALPHA_MODE_UNSPECIFIED, - AVALPHA_MODE_PREMULTIPLIED, AVALPHA_MODE_UNSPECIFIED +static const enum AVColorRange color_range_mpeg[] = { + AVCOL_RANGE_MPEG, AVCOL_RANGE_UNSPECIFIED }; -static_assert((int)AVCOL_RANGE_MPEG == (int)AVALPHA_MODE_PREMULTIPLIED, "unexpected enum values"); -static_assert((int)AVCOL_RANGE_JPEG == (int)AVALPHA_MODE_STRAIGHT, "unexpected enum values"); -static_assert(AVCOL_RANGE_UNSPECIFIED == 0 && AVALPHA_MODE_UNSPECIFIED == 0, "unexpected enum values"); -static_assert(AVCOL_RANGE_NB == 3 && AVALPHA_MODE_NB == 3, "unexpected enum values"); +static const enum AVColorRange color_range_all[] = { + AVCOL_RANGE_MPEG, AVCOL_RANGE_JPEG, AVCOL_RANGE_UNSPECIFIED +}; -static const uint8_t offset_tab[] = { - [AVCOL_RANGE_MPEG] = 3, - [AVCOL_RANGE_JPEG] = 1, - [AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG] = 0, +static const enum AVColorRange *color_range_table[] = { + [AVCOL_RANGE_MPEG] = color_range_mpeg, + [AVCOL_RANGE_JPEG] = color_range_jpeg, + [AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG] = color_range_all, }; int ff_default_get_supported_config(const AVCodecContext *avctx, @@ -772,49 +765,33 @@ int ff_default_get_supported_config(const AVCodecContext *avctx, const void **out_configs, int *out_num_configs) { - const FFCodec *codec2 = ffcodec(codec); - switch (config) { FF_DISABLE_DEPRECATION_WARNINGS case AV_CODEC_CONFIG_PIX_FORMAT: - WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, pix_fmts, pix_fmt, enum AVPixelFormat, pix_fmt == AV_PIX_FMT_NONE); + WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->pix_fmts, enum AVPixelFormat, AV_PIX_FMT_NONE); case AV_CODEC_CONFIG_FRAME_RATE: - WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, supported_framerates, framerate, AVRational, framerate.num == 0); + WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->supported_framerates, AVRational, {0}); case AV_CODEC_CONFIG_SAMPLE_RATE: - WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, supported_samplerates, samplerate, int, samplerate == 0); + WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->supported_samplerates, int, 0); case AV_CODEC_CONFIG_SAMPLE_FORMAT: - WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, sample_fmts, sample_fmt, enum AVSampleFormat, sample_fmt == AV_SAMPLE_FMT_NONE); + WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->sample_fmts, enum AVSampleFormat, AV_SAMPLE_FMT_NONE); case AV_CODEC_CONFIG_CHANNEL_LAYOUT: - WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, ch_layouts, ch_layout, AVChannelLayout, ch_layout.nb_channels == 0); + WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->ch_layouts, AVChannelLayout, {0}); FF_ENABLE_DEPRECATION_WARNINGS case AV_CODEC_CONFIG_COLOR_RANGE: if (codec->type != AVMEDIA_TYPE_VIDEO) return AVERROR(EINVAL); - unsigned color_ranges = codec2->color_ranges; - if (color_ranges) - *out_configs = color_range_tab + offset_tab[color_ranges]; - else - *out_configs = NULL; - *out_num_configs = av_popcount(color_ranges); + *out_configs = color_range_table[ffcodec(codec)->color_ranges]; + if (out_num_configs) + *out_num_configs = av_popcount(ffcodec(codec)->color_ranges); return 0; case AV_CODEC_CONFIG_COLOR_SPACE: *out_configs = NULL; - *out_num_configs = 0; + if (out_num_configs) + *out_num_configs = 0; return 0; - - case AV_CODEC_CONFIG_ALPHA_MODE: - if (codec->type != AVMEDIA_TYPE_VIDEO) - return AVERROR(EINVAL); - unsigned alpha_modes = codec2->alpha_modes; - if (alpha_modes) - *out_configs = alpha_mode_tab + offset_tab[alpha_modes]; - else - *out_configs = NULL; - *out_num_configs = av_popcount(alpha_modes); - return 0; - default: return AVERROR(EINVAL); } @@ -838,53 +815,3 @@ int avcodec_get_supported_config(const AVCodecContext *avctx, const AVCodec *cod return ff_default_get_supported_config(avctx, codec, config, flags, out, out_num); } } - -int av_packet_side_data_from_frame(AVPacketSideData **psd, int *pnb_sd, - const AVFrameSideData *src, unsigned int flags) -{ - AVPacketSideData *sd = NULL; - - for (unsigned j = 0; ff_sd_global_map[j].packet < AV_PKT_DATA_NB; j++) { - if (ff_sd_global_map[j].frame != src->type) - continue; - - sd = av_packet_side_data_new(psd, pnb_sd, ff_sd_global_map[j].packet, - src->size, 0); - - if (!sd) - return AVERROR(ENOMEM); - - memcpy(sd->data, src->data, src->size); - break; - } - - if (!sd) - return AVERROR(EINVAL); - - return 0; -} - -int av_packet_side_data_to_frame(AVFrameSideData ***psd, int *pnb_sd, - const AVPacketSideData *src, unsigned int flags) -{ - AVFrameSideData *sd = NULL; - - for (unsigned j = 0; ff_sd_global_map[j].packet < AV_PKT_DATA_NB; j++) { - if (ff_sd_global_map[j].packet != src->type) - continue; - - sd = av_frame_side_data_new(psd, pnb_sd, ff_sd_global_map[j].frame, - src->size, flags); - - if (!sd) - return AVERROR(ENOMEM); - - memcpy(sd->data, src->data, src->size); - break; - } - - if (!sd) - return AVERROR(EINVAL); - - return 0; -} diff --git a/icecat/media/ffvpx/libavcodec/avcodec.h b/icecat/media/ffvpx/libavcodec/avcodec.h index 928da109d6..403f02d841 100644 --- a/icecat/media/ffvpx/libavcodec/avcodec.h +++ b/icecat/media/ffvpx/libavcodec/avcodec.h @@ -187,6 +187,17 @@ struct AVCodecParameters; * @{ */ +#if FF_API_BUFFER_MIN_SIZE +/** + * @ingroup lavc_encoding + * minimum encoding buffer size + * Used to avoid some checks during header writing. + * @deprecated Unused: avcodec_receive_packet() does not work + * with preallocated packet buffers. + */ +#define AV_INPUT_BUFFER_MIN_SIZE 16384 +#endif + /** * @ingroup lavc_encoding */ @@ -223,9 +234,18 @@ typedef struct RcOverride{ * Use qpel MC. */ #define AV_CODEC_FLAG_QPEL (1 << 4) +#if FF_API_DROPCHANGED +/** + * Don't output frames whose parameters differ from first + * decoded frame in stream. + * + * @deprecated callers should implement this functionality in their own code + */ +#define AV_CODEC_FLAG_DROPCHANGED (1 << 5) +#endif /** * Request the encoder to output reconstructed frames, i.e.\ frames that would - * be produced by decoding the encoded bitstream. These frames may be retrieved + * be produced by decoding the encoded bistream. These frames may be retrieved * by calling avcodec_receive_frame() immediately after a successful call to * avcodec_receive_packet(). * @@ -415,14 +435,6 @@ typedef struct RcOverride{ */ #define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0) -/** - * The decoder will bypass frame threading and return the next frame as soon as - * possible. Note that this may deliver frames earlier than the advertised - * `AVCodecContext.delay`. No effect when frame threading is disabled, or on - * encoding. - */ -#define AV_CODEC_RECEIVE_FRAME_FLAG_SYNCHRONOUS (1 << 0) - /** * main external API structure. * New fields can be added to the end with minor version bumps. @@ -518,6 +530,9 @@ typedef struct AVCodecContext { * * After being set, the array is owned by the codec and freed in * avcodec_free_context(). + * + * @warning the deprecated avcodec_close() function DOES NOT free this array + * for decoding, it must be freed manually by the caller. */ uint8_t *extradata; int extradata_size; @@ -558,6 +573,23 @@ typedef struct AVCodecContext { */ AVRational framerate; +#if FF_API_TICKS_PER_FRAME + /** + * For some codecs, the time base is closer to the field rate than the frame rate. + * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration + * if no telecine is used ... + * + * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. + * + * @deprecated + * - decoding: Use AVCodecDescriptor.props & AV_CODEC_PROP_FIELDS + * - encoding: Set AVCodecContext.framerate instead + * + */ + attribute_deprecated + int ticks_per_frame; +#endif + /** * Codec delay. * @@ -971,16 +1003,12 @@ typedef struct AVCodecContext { */ uint16_t *chroma_intra_matrix; -#if FF_API_INTRA_DC_PRECISION /** * precision of the intra DC coefficient - 8 * - encoding: Set by user. * - decoding: Set by libavcodec - * @deprecated Use the MPEG-2 encoder's private option "intra_dc_precision" instead. */ - attribute_deprecated int intra_dc_precision; -#endif /** * minimum MB Lagrange multiplier @@ -1628,16 +1656,155 @@ typedef struct AVCodecContext { * See the AV_PROFILE_* defines in defs.h. */ int profile; +#if FF_API_FF_PROFILE_LEVEL + /** @deprecated The following defines are deprecated; use AV_PROFILE_* + * in defs.h instead. */ +#define FF_PROFILE_UNKNOWN -99 +#define FF_PROFILE_RESERVED -100 + +#define FF_PROFILE_AAC_MAIN 0 +#define FF_PROFILE_AAC_LOW 1 +#define FF_PROFILE_AAC_SSR 2 +#define FF_PROFILE_AAC_LTP 3 +#define FF_PROFILE_AAC_HE 4 +#define FF_PROFILE_AAC_HE_V2 28 +#define FF_PROFILE_AAC_LD 22 +#define FF_PROFILE_AAC_ELD 38 +#define FF_PROFILE_MPEG2_AAC_LOW 128 +#define FF_PROFILE_MPEG2_AAC_HE 131 + +#define FF_PROFILE_DNXHD 0 +#define FF_PROFILE_DNXHR_LB 1 +#define FF_PROFILE_DNXHR_SQ 2 +#define FF_PROFILE_DNXHR_HQ 3 +#define FF_PROFILE_DNXHR_HQX 4 +#define FF_PROFILE_DNXHR_444 5 + +#define FF_PROFILE_DTS 20 +#define FF_PROFILE_DTS_ES 30 +#define FF_PROFILE_DTS_96_24 40 +#define FF_PROFILE_DTS_HD_HRA 50 +#define FF_PROFILE_DTS_HD_MA 60 +#define FF_PROFILE_DTS_EXPRESS 70 +#define FF_PROFILE_DTS_HD_MA_X 61 +#define FF_PROFILE_DTS_HD_MA_X_IMAX 62 + + +#define FF_PROFILE_EAC3_DDP_ATMOS 30 + +#define FF_PROFILE_TRUEHD_ATMOS 30 + +#define FF_PROFILE_MPEG2_422 0 +#define FF_PROFILE_MPEG2_HIGH 1 +#define FF_PROFILE_MPEG2_SS 2 +#define FF_PROFILE_MPEG2_SNR_SCALABLE 3 +#define FF_PROFILE_MPEG2_MAIN 4 +#define FF_PROFILE_MPEG2_SIMPLE 5 + +#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag +#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag + +#define FF_PROFILE_H264_BASELINE 66 +#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) +#define FF_PROFILE_H264_MAIN 77 +#define FF_PROFILE_H264_EXTENDED 88 +#define FF_PROFILE_H264_HIGH 100 +#define FF_PROFILE_H264_HIGH_10 110 +#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_MULTIVIEW_HIGH 118 +#define FF_PROFILE_H264_HIGH_422 122 +#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_STEREO_HIGH 128 +#define FF_PROFILE_H264_HIGH_444 144 +#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 +#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_CAVLC_444 44 + +#define FF_PROFILE_VC1_SIMPLE 0 +#define FF_PROFILE_VC1_MAIN 1 +#define FF_PROFILE_VC1_COMPLEX 2 +#define FF_PROFILE_VC1_ADVANCED 3 + +#define FF_PROFILE_MPEG4_SIMPLE 0 +#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 +#define FF_PROFILE_MPEG4_CORE 2 +#define FF_PROFILE_MPEG4_MAIN 3 +#define FF_PROFILE_MPEG4_N_BIT 4 +#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 +#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 +#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 +#define FF_PROFILE_MPEG4_HYBRID 8 +#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 +#define FF_PROFILE_MPEG4_CORE_SCALABLE 10 +#define FF_PROFILE_MPEG4_ADVANCED_CODING 11 +#define FF_PROFILE_MPEG4_ADVANCED_CORE 12 +#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 +#define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 +#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 + +#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1 +#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2 +#define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768 +#define FF_PROFILE_JPEG2000_DCINEMA_2K 3 +#define FF_PROFILE_JPEG2000_DCINEMA_4K 4 + +#define FF_PROFILE_VP9_0 0 +#define FF_PROFILE_VP9_1 1 +#define FF_PROFILE_VP9_2 2 +#define FF_PROFILE_VP9_3 3 + +#define FF_PROFILE_HEVC_MAIN 1 +#define FF_PROFILE_HEVC_MAIN_10 2 +#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 +#define FF_PROFILE_HEVC_REXT 4 +#define FF_PROFILE_HEVC_SCC 9 + +#define FF_PROFILE_VVC_MAIN_10 1 +#define FF_PROFILE_VVC_MAIN_10_444 33 + +#define FF_PROFILE_AV1_MAIN 0 +#define FF_PROFILE_AV1_HIGH 1 +#define FF_PROFILE_AV1_PROFESSIONAL 2 + +#define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0 +#define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1 +#define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2 +#define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3 +#define FF_PROFILE_MJPEG_JPEG_LS 0xf7 + +#define FF_PROFILE_SBC_MSBC 1 + +#define FF_PROFILE_PRORES_PROXY 0 +#define FF_PROFILE_PRORES_LT 1 +#define FF_PROFILE_PRORES_STANDARD 2 +#define FF_PROFILE_PRORES_HQ 3 +#define FF_PROFILE_PRORES_4444 4 +#define FF_PROFILE_PRORES_XQ 5 + +#define FF_PROFILE_ARIB_PROFILE_A 0 +#define FF_PROFILE_ARIB_PROFILE_C 1 + +#define FF_PROFILE_KLVA_SYNC 0 +#define FF_PROFILE_KLVA_ASYNC 1 + +#define FF_PROFILE_EVC_BASELINE 0 +#define FF_PROFILE_EVC_MAIN 1 +#endif /** * Encoding level descriptor. * - encoding: Set by user, corresponds to a specific level defined by the * codec, usually corresponding to the profile level, if not specified it - * is set to AV_LEVEL_UNKNOWN. + * is set to FF_LEVEL_UNKNOWN. * - decoding: Set by libavcodec. * See AV_LEVEL_* in defs.h. */ int level; +#if FF_API_FF_PROFILE_LEVEL + /** @deprecated The following define is deprecated; use AV_LEVEL_UNKOWN + * in defs.h instead. */ +#define FF_LEVEL_UNKNOWN -99 +#endif #if FF_API_CODEC_PROPS /** @@ -1746,6 +1913,9 @@ typedef struct AVCodecContext { * * After being set, the array is owned by the codec and freed in * avcodec_free_context(). + * + * @warning the deprecated avcodec_close() function DOES NOT free this array + * for encoding, it must be freed manually by the caller. */ int subtitle_header_size; uint8_t *subtitle_header; @@ -1935,17 +2105,6 @@ typedef struct AVCodecContext { */ AVFrameSideData **decoded_side_data; int nb_decoded_side_data; - - /** - * Indicates how the alpha channel of the video is represented. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVAlphaMode alpha_mode; - - int moz_extradata_offset; - - void* moz_ndk_crypto; } AVCodecContext; /** @@ -2240,6 +2399,24 @@ int avcodec_parameters_to_context(AVCodecContext *codec, */ int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); +#if FF_API_AVCODEC_CLOSE +/** + * Close a given AVCodecContext and free all the data associated with it + * (but not the AVCodecContext itself). + * + * Calling this function on an AVCodecContext that hasn't been opened will free + * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL + * codec. Subsequent calls will do nothing. + * + * @deprecated Do not use this function. Use avcodec_free_context() to destroy a + * codec context (either open or closed). Opening and closing a codec context + * multiple times is not supported anymore -- use multiple codec contexts + * instead. + */ +attribute_deprecated +int avcodec_close(AVCodecContext *avctx); +#endif + /** * Free all allocated data in the given subtitle struct. * @@ -2376,7 +2553,6 @@ int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); * frame (depending on the decoder type) allocated by the * codec. Note that the function will always call * av_frame_unref(frame) before doing anything else. - * @param flags Combination of AV_CODEC_RECEIVE_FRAME_FLAG_* flags. * * @retval 0 success, a frame was returned * @retval AVERROR(EAGAIN) output is not available in this state - user must @@ -2387,11 +2563,6 @@ int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); * @ref AV_CODEC_FLAG_RECON_FRAME flag enabled * @retval "other negative error code" legitimate decoding errors */ -int avcodec_receive_frame_flags(AVCodecContext *avctx, AVFrame *frame, unsigned flags); - -/** - * Alias for `avcodec_receive_frame_flags(avctx, frame, 0)`. - */ int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame); /** @@ -2557,7 +2728,6 @@ enum AVCodecConfig { AV_CODEC_CONFIG_CHANNEL_LAYOUT, ///< AVChannelLayout, terminated by {0} AV_CODEC_CONFIG_COLOR_RANGE, ///< AVColorRange, terminated by AVCOL_RANGE_UNSPECIFIED AV_CODEC_CONFIG_COLOR_SPACE, ///< AVColorSpace, terminated by AVCOL_SPC_UNSPECIFIED - AV_CODEC_CONFIG_ALPHA_MODE, ///< AVAlphaMode, terminated by AVALPHA_MODE_UNSPECIFIED }; /** @@ -2754,35 +2924,17 @@ typedef struct AVCodecParserContext { } AVCodecParserContext; typedef struct AVCodecParser { -#if FF_API_PARSER_CODECID int codec_ids[7]; /* several codec IDs are permitted */ -#else - enum AVCodecID codec_ids[7]; /* several codec IDs are permitted */ -#endif -#if FF_API_PARSER_PRIVATE - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - attribute_deprecated int priv_data_size; - attribute_deprecated int (*parser_init)(AVCodecParserContext *s); /* This callback never returns an error, a negative value means that * the frame start was in a previous packet. */ - attribute_deprecated int (*parser_parse)(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size); - attribute_deprecated void (*parser_close)(AVCodecParserContext *s); - attribute_deprecated int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); -#endif } AVCodecParser; /** @@ -2796,11 +2948,7 @@ typedef struct AVCodecParser { */ const AVCodecParser *av_parser_iterate(void **opaque); -#if FF_API_PARSER_CODECID AVCodecParserContext *av_parser_init(int codec_id); -#else -AVCodecParserContext *av_parser_init(enum AVCodecID codec_id); -#endif /** * Parse a packet. @@ -2952,7 +3100,7 @@ int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, * * @note for encoders, this function will only do something if the encoder * declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder - * will drain any remaining packets, and can then be reused for a different + * will drain any remaining packets, and can then be re-used for a different * stream (as opposed to sending a null frame which will leave the encoder * in a permanent EOF state after draining). This can be desirable if the * cost of tearing down and replacing the encoder instance is high. @@ -2987,8 +3135,8 @@ void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); /** - * @return a positive value if s is open (i.e. avcodec_open2() was called on it), - * 0 otherwise. + * @return a positive value if s is open (i.e. avcodec_open2() was called on it + * with no corresponding avcodec_close()), 0 otherwise. */ int avcodec_is_open(AVCodecContext *s); diff --git a/icecat/media/ffvpx/libavcodec/avcodec.symbols b/icecat/media/ffvpx/libavcodec/avcodec.symbols index 30593df089..ce8da53698 100644 --- a/icecat/media/ffvpx/libavcodec/avcodec.symbols +++ b/icecat/media/ffvpx/libavcodec/avcodec.symbols @@ -25,6 +25,7 @@ av_xiphlacing avcodec_align_dimensions avcodec_align_dimensions2 avcodec_alloc_context3 +avcodec_close avcodec_configuration avcodec_decode_subtitle2 avcodec_default_execute @@ -63,7 +64,3 @@ ff_thread_progress_await ff_thread_progress_destroy ff_thread_progress_init ff_thread_progress_report -#if defined(MOZ_WIDGET_ANDROID) && !defined(MOZ_FFVPX_AUDIOONLY) -av_mediacodec_release_buffer -moz_avcodec_mediacodec_is_eos -#endif diff --git a/icecat/media/ffvpx/libavcodec/avcodec_internal.h b/icecat/media/ffvpx/libavcodec/avcodec_internal.h index 06645e91a0..184d7b526c 100644 --- a/icecat/media/ffvpx/libavcodec/avcodec_internal.h +++ b/icecat/media/ffvpx/libavcodec/avcodec_internal.h @@ -45,8 +45,7 @@ extern const SideDataMap ff_sd_global_map[]; /** * avcodec_receive_frame() implementation for decoders. */ -int ff_decode_receive_frame(struct AVCodecContext *avctx, struct AVFrame *frame, - unsigned flags); +int ff_decode_receive_frame(struct AVCodecContext *avctx, struct AVFrame *frame); /** * avcodec_receive_frame() implementation for encoders. @@ -92,10 +91,9 @@ void ff_thread_flush(struct AVCodecContext *avctx); * Submit available packets for decoding to worker threads, return a * decoded frame if available. Returns AVERROR(EAGAIN) if none is available. * - * Parameters are the same as FFCodec.receive_frame, plus flags. + * Parameters are the same as FFCodec.receive_frame. */ -int ff_thread_receive_frame(struct AVCodecContext *avctx, AVFrame *frame, - unsigned flags); +int ff_thread_receive_frame(struct AVCodecContext *avctx, AVFrame *frame); /** * Do the actual decoding and obtain a decoded frame from the decoder, if diff --git a/icecat/media/ffvpx/libavcodec/avdct.c b/icecat/media/ffvpx/libavcodec/avdct.c index f7941a457c..f995e73eab 100644 --- a/icecat/media/ffvpx/libavcodec/avdct.c +++ b/icecat/media/ffvpx/libavcodec/avdct.c @@ -18,7 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavutil/attributes.h" #include "libavutil/mem.h" #include "avcodec.h" #include "idctdsp.h" @@ -69,12 +68,12 @@ static const AVClass avdct_class = { .version = LIBAVUTIL_VERSION_INT, }; -av_cold const AVClass *avcodec_dct_get_class(void) +const AVClass *avcodec_dct_get_class(void) { return &avdct_class; } -av_cold AVDCT *avcodec_dct_alloc(void) +AVDCT *avcodec_dct_alloc(void) { AVDCT *dsp = av_mallocz(sizeof(AVDCT)); @@ -87,7 +86,7 @@ av_cold AVDCT *avcodec_dct_alloc(void) return dsp; } -av_cold int avcodec_dct_init(AVDCT *dsp) +int avcodec_dct_init(AVDCT *dsp) { AVCodecContext *avctx = avcodec_alloc_context3(NULL); @@ -120,7 +119,7 @@ av_cold int avcodec_dct_init(AVDCT *dsp) #if CONFIG_PIXBLOCKDSP { PixblockDSPContext pdsp; - ff_pixblockdsp_init(&pdsp, dsp->bits_per_sample); + ff_pixblockdsp_init(&pdsp, avctx); COPY(pdsp, get_pixels); COPY(pdsp, get_pixels_unaligned); } diff --git a/icecat/media/ffvpx/libavcodec/bit_depth_template.c b/icecat/media/ffvpx/libavcodec/bit_depth_template.c index 6a80cdaf32..d44d47ea45 100644 --- a/icecat/media/ffvpx/libavcodec/bit_depth_template.c +++ b/icecat/media/ffvpx/libavcodec/bit_depth_template.c @@ -30,6 +30,7 @@ # undef pixel4 # undef dctcoef # undef idctin +# undef INIT_CLIP # undef no_rnd_avg_pixel4 # undef rnd_avg_pixel4 # undef AV_RN2P @@ -43,13 +44,11 @@ # undef FUNCC # undef av_clip_pixel # undef PIXEL_SPLAT_X4 -# undef PIXELSIZE #else # define AVCODEC_BIT_DEPTH_TEMPLATE_C #endif #if BIT_DEPTH > 8 -# define PIXELSIZE 16 # define pixel uint16_t # define pixel2 uint32_t # define pixel4 uint64_t @@ -65,6 +64,7 @@ # define idctin int16_t #endif +# define INIT_CLIP # define no_rnd_avg_pixel4 no_rnd_avg64 # define rnd_avg_pixel4 rnd_avg64 # define AV_RN2P AV_RN32 @@ -78,13 +78,13 @@ # define av_clip_pixel(a) av_clip_uintp2(a, BIT_DEPTH) # define CLIP(a) av_clip_uintp2(a, BIT_DEPTH) #else -# define PIXELSIZE 8 # define pixel uint8_t # define pixel2 uint16_t # define pixel4 uint32_t # define dctcoef int16_t # define idctin int16_t +# define INIT_CLIP # define no_rnd_avg_pixel4 no_rnd_avg32 # define rnd_avg_pixel4 rnd_avg32 # define AV_RN2P AV_RN16 @@ -103,7 +103,6 @@ #define FUNC2(a, b, c) FUNC3(a, b, c) #define FUNC(a) FUNC2(a, BIT_DEPTH,) #define FUNCC(a) FUNC2(a, BIT_DEPTH, _c) -#define FUNCC2(a) FUNC2(a, PIXELSIZE, _c) #define FUNC4(a, b, c) a ## _int ## b ## _ ## c ## bit #define FUNC5(a, b, c) FUNC4(a, b, c) #define FUNC6(a) FUNC5(a, IN_IDCT_DEPTH, BIT_DEPTH) diff --git a/icecat/media/ffvpx/libavcodec/bitstream_filters.c b/icecat/media/ffvpx/libavcodec/bitstream_filters.c index 150cca8939..f923411bee 100644 --- a/icecat/media/ffvpx/libavcodec/bitstream_filters.c +++ b/icecat/media/ffvpx/libavcodec/bitstream_filters.c @@ -25,8 +25,6 @@ #include "bsf_internal.h" extern const FFBitStreamFilter ff_aac_adtstoasc_bsf; -extern const FFBitStreamFilter ff_ahx_to_mp2_bsf; -extern const FFBitStreamFilter ff_apv_metadata_bsf; extern const FFBitStreamFilter ff_av1_frame_merge_bsf; extern const FFBitStreamFilter ff_av1_frame_split_bsf; extern const FFBitStreamFilter ff_av1_metadata_bsf; @@ -37,7 +35,6 @@ extern const FFBitStreamFilter ff_dovi_rpu_bsf; extern const FFBitStreamFilter ff_dts2pts_bsf; extern const FFBitStreamFilter ff_dv_error_marker_bsf; extern const FFBitStreamFilter ff_eac3_core_bsf; -extern const FFBitStreamFilter ff_eia608_to_smpte436m_bsf; extern const FFBitStreamFilter ff_evc_frame_merge_bsf; extern const FFBitStreamFilter ff_extract_extradata_bsf; extern const FFBitStreamFilter ff_filter_units_bsf; @@ -48,7 +45,6 @@ extern const FFBitStreamFilter ff_hapqa_extract_bsf; extern const FFBitStreamFilter ff_hevc_metadata_bsf; extern const FFBitStreamFilter ff_hevc_mp4toannexb_bsf; extern const FFBitStreamFilter ff_imx_dump_header_bsf; -extern const FFBitStreamFilter ff_lcevc_metadata_bsf; extern const FFBitStreamFilter ff_media100_to_mjpegb_bsf; extern const FFBitStreamFilter ff_mjpeg2jpeg_bsf; extern const FFBitStreamFilter ff_mjpega_dump_header_bsf; @@ -64,7 +60,6 @@ extern const FFBitStreamFilter ff_prores_metadata_bsf; extern const FFBitStreamFilter ff_remove_extradata_bsf; extern const FFBitStreamFilter ff_setts_bsf; extern const FFBitStreamFilter ff_showinfo_bsf; -extern const FFBitStreamFilter ff_smpte436m_to_eia608_bsf; extern const FFBitStreamFilter ff_text2movsub_bsf; extern const FFBitStreamFilter ff_trace_headers_bsf; extern const FFBitStreamFilter ff_truehd_core_bsf; diff --git a/icecat/media/ffvpx/libavcodec/blockdsp.h b/icecat/media/ffvpx/libavcodec/blockdsp.h index f83068ce53..6d751d797b 100644 --- a/icecat/media/ffvpx/libavcodec/blockdsp.h +++ b/icecat/media/ffvpx/libavcodec/blockdsp.h @@ -38,6 +38,7 @@ typedef struct BlockDSPContext { void ff_blockdsp_init(BlockDSPContext *c); +void ff_blockdsp_init_alpha(BlockDSPContext *c); void ff_blockdsp_init_arm(BlockDSPContext *c); void ff_blockdsp_init_ppc(BlockDSPContext *c); void ff_blockdsp_init_riscv(BlockDSPContext *c); diff --git a/icecat/media/ffvpx/libavcodec/bsf/aac_adtstoasc.c b/icecat/media/ffvpx/libavcodec/bsf/aac_adtstoasc.c deleted file mode 100644 index b821414f2a..0000000000 --- a/icecat/media/ffvpx/libavcodec/bsf/aac_adtstoasc.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - * MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration bitstream filter - * Copyright (c) 2009 Alex Converse - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "adts_header.h" -#include "adts_parser.h" -#include "bsf.h" -#include "bsf_internal.h" -#include "put_bits.h" -#include "get_bits.h" -#include "mpeg4audio.h" -#include "mpeg4audio_copy_pce.h" - -typedef struct AACBSFContext { - int first_frame_done; -} AACBSFContext; - -/** - * This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4 - * ADTS header and removes the ADTS header. - */ -static int aac_adtstoasc_filter(AVBSFContext *bsfc, AVPacket *pkt) -{ - AACBSFContext *ctx = bsfc->priv_data; - - PutBitContext pb; - AACADTSHeaderInfo hdr; - int ret; - - ret = ff_bsf_get_packet_ref(bsfc, pkt); - if (ret < 0) - return ret; - - if (bsfc->par_in->extradata && pkt->size >= 2 && (AV_RB16(pkt->data) >> 4) != 0xfff) - return 0; - - if (pkt->size < AV_AAC_ADTS_HEADER_SIZE) - goto packet_too_small; - - if (ff_adts_header_parse_buf(pkt->data, &hdr) < 0) { - av_log(bsfc, AV_LOG_ERROR, "Error parsing ADTS frame header!\n"); - ret = AVERROR_INVALIDDATA; - goto fail; - } - - if (!hdr.crc_absent && hdr.num_aac_frames > 1) { - avpriv_report_missing_feature(bsfc, - "Multiple RDBs per frame with CRC"); - ret = AVERROR_PATCHWELCOME; - goto fail; - } - - pkt->size -= AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent; - if (pkt->size <= 0) - goto packet_too_small; - pkt->data += AV_AAC_ADTS_HEADER_SIZE + 2 * !hdr.crc_absent; - - if (!ctx->first_frame_done) { - int pce_size = 0; - uint8_t pce_data[MAX_PCE_SIZE]; - uint8_t *extradata; - - if (!hdr.chan_config) { - GetBitContext gb; - init_get_bits(&gb, pkt->data, pkt->size * 8); - if (get_bits(&gb, 3) != 5) { - avpriv_report_missing_feature(bsfc, - "PCE-based channel configuration " - "without PCE as first syntax " - "element"); - ret = AVERROR_PATCHWELCOME; - goto fail; - } - init_put_bits(&pb, pce_data, MAX_PCE_SIZE); - pce_size = ff_copy_pce_data(&pb, &gb) / 8; - flush_put_bits(&pb); - pkt->size -= get_bits_count(&gb)/8; - pkt->data += get_bits_count(&gb)/8; - } - - extradata = av_packet_new_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, - 2 + pce_size); - if (!extradata) { - ret = AVERROR(ENOMEM); - goto fail; - } - - init_put_bits(&pb, extradata, 2 + pce_size); - put_bits(&pb, 5, hdr.object_type); - put_bits(&pb, 4, hdr.sampling_index); - put_bits(&pb, 4, hdr.chan_config); - put_bits(&pb, 1, 0); //frame length - 1024 samples - put_bits(&pb, 1, 0); //does not depend on core coder - put_bits(&pb, 1, 0); //is not extension - flush_put_bits(&pb); - if (pce_size) { - memcpy(extradata + 2, pce_data, pce_size); - } - - ctx->first_frame_done = 1; - } - - return 0; - -packet_too_small: - av_log(bsfc, AV_LOG_ERROR, "Input packet too small\n"); - ret = AVERROR_INVALIDDATA; -fail: - av_packet_unref(pkt); - return ret; -} - -static int aac_adtstoasc_init(AVBSFContext *ctx) -{ - /* Validate the extradata if the stream is already MPEG-4 AudioSpecificConfig */ - if (ctx->par_in->extradata) { - MPEG4AudioConfig mp4ac; - int ret = avpriv_mpeg4audio_get_config2(&mp4ac, ctx->par_in->extradata, - ctx->par_in->extradata_size, 1, ctx); - if (ret < 0) { - av_log(ctx, AV_LOG_ERROR, "Error parsing AudioSpecificConfig extradata!\n"); - return ret; - } - } - - return 0; -} - -static const enum AVCodecID codec_ids[] = { - AV_CODEC_ID_AAC, AV_CODEC_ID_NONE, -}; - -const FFBitStreamFilter ff_aac_adtstoasc_bsf = { - .p.name = "aac_adtstoasc", - .p.codec_ids = codec_ids, - .priv_data_size = sizeof(AACBSFContext), - .init = aac_adtstoasc_init, - .filter = aac_adtstoasc_filter, -}; diff --git a/icecat/media/ffvpx/libavcodec/bsf/moz.build b/icecat/media/ffvpx/libavcodec/bsf/moz.build index 8aad55c496..28e71edbc8 100644 --- a/icecat/media/ffvpx/libavcodec/bsf/moz.build +++ b/icecat/media/ffvpx/libavcodec/bsf/moz.build @@ -11,7 +11,6 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: ] SOURCES += [ - 'aac_adtstoasc.c', 'null.c', ] diff --git a/icecat/media/ffvpx/libavcodec/bsf_list.c b/icecat/media/ffvpx/libavcodec/bsf_list.c index 249e1b31f4..4050b41fde 100644 --- a/icecat/media/ffvpx/libavcodec/bsf_list.c +++ b/icecat/media/ffvpx/libavcodec/bsf_list.c @@ -6,9 +6,6 @@ static const FFBitStreamFilter * const bitstream_filters[] = { #endif #if CONFIG_AV1_VAAPI_HWACCEL &ff_av1_frame_split_bsf, -#endif -#if CONFIG_MEDIACODEC - &ff_aac_adtstoasc_bsf, #endif &ff_null_bsf, NULL }; diff --git a/icecat/media/ffvpx/libavcodec/bytestream.h b/icecat/media/ffvpx/libavcodec/bytestream.h index c5ce928647..67080604b9 100644 --- a/icecat/media/ffvpx/libavcodec/bytestream.h +++ b/icecat/media/ffvpx/libavcodec/bytestream.h @@ -77,11 +77,11 @@ static av_always_inline type bytestream2_get_ ## name(GetByteContext *g) \ } \ return bytestream2_get_ ## name ## u(g); \ } \ -static av_always_inline type bytestream2_peek_ ## name ## u(const GetByteContext *g) \ +static av_always_inline type bytestream2_peek_ ## name ## u(GetByteContext *g) \ { \ return read(g->buffer); \ } \ -static av_always_inline type bytestream2_peek_ ## name(const GetByteContext *g)\ +static av_always_inline type bytestream2_peek_ ## name(GetByteContext *g) \ { \ if (g->buffer_end - g->buffer < bytes) \ return 0; \ @@ -138,7 +138,7 @@ static av_always_inline void bytestream2_init(GetByteContext *g, const uint8_t *buf, int buf_size) { - av_assert0(buf && buf_size >= 0); + av_assert0(buf_size >= 0); g->buffer = buf; g->buffer_start = buf; g->buffer_end = buf + buf_size; @@ -148,19 +148,19 @@ static av_always_inline void bytestream2_init_writer(PutByteContext *p, uint8_t *buf, int buf_size) { - av_assert0(buf && buf_size >= 0); + av_assert0(buf_size >= 0); p->buffer = buf; p->buffer_start = buf; p->buffer_end = buf + buf_size; p->eof = 0; } -static av_always_inline int bytestream2_get_bytes_left(const GetByteContext *g) +static av_always_inline int bytestream2_get_bytes_left(GetByteContext *g) { return g->buffer_end - g->buffer; } -static av_always_inline int bytestream2_get_bytes_left_p(const PutByteContext *p) +static av_always_inline int bytestream2_get_bytes_left_p(PutByteContext *p) { return p->buffer_end - p->buffer; } @@ -189,22 +189,22 @@ static av_always_inline void bytestream2_skip_p(PutByteContext *p, p->buffer += size2; } -static av_always_inline int bytestream2_tell(const GetByteContext *g) +static av_always_inline int bytestream2_tell(GetByteContext *g) { return (int)(g->buffer - g->buffer_start); } -static av_always_inline int bytestream2_tell_p(const PutByteContext *p) +static av_always_inline int bytestream2_tell_p(PutByteContext *p) { return (int)(p->buffer - p->buffer_start); } -static av_always_inline int bytestream2_size(const GetByteContext *g) +static av_always_inline int bytestream2_size(GetByteContext *g) { return (int)(g->buffer_end - g->buffer_start); } -static av_always_inline int bytestream2_size_p(const PutByteContext *p) +static av_always_inline int bytestream2_size_p(PutByteContext *p) { return (int)(p->buffer_end - p->buffer_start); } diff --git a/icecat/media/ffvpx/libavcodec/cbs.c b/icecat/media/ffvpx/libavcodec/cbs.c index 7ff0f89aa5..01dd916d81 100644 --- a/icecat/media/ffvpx/libavcodec/cbs.c +++ b/icecat/media/ffvpx/libavcodec/cbs.c @@ -18,6 +18,8 @@ #include +#include "config.h" + #include "libavutil/avassert.h" #include "libavutil/buffer.h" #include "libavutil/common.h" @@ -31,73 +33,61 @@ static const CodedBitstreamType *const cbs_type_table[] = { -#if CBS_APV - &CBS_FUNC(type_apv), +#if CONFIG_CBS_AV1 + &ff_cbs_type_av1, #endif -#if CBS_AV1 - &CBS_FUNC(type_av1), +#if CONFIG_CBS_H264 + &ff_cbs_type_h264, #endif -#if CBS_H264 - &CBS_FUNC(type_h264), +#if CONFIG_CBS_H265 + &ff_cbs_type_h265, #endif -#if CBS_H265 - &CBS_FUNC(type_h265), +#if CONFIG_CBS_H266 + &ff_cbs_type_h266, #endif -#if CBS_H266 - &CBS_FUNC(type_h266), +#if CONFIG_CBS_JPEG + &ff_cbs_type_jpeg, #endif -#if CBS_LCEVC - &CBS_FUNC(type_lcevc), +#if CONFIG_CBS_MPEG2 + &ff_cbs_type_mpeg2, #endif -#if CBS_JPEG - &CBS_FUNC(type_jpeg), +#if CONFIG_CBS_VP8 + &ff_cbs_type_vp8, #endif -#if CBS_MPEG2 - &CBS_FUNC(type_mpeg2), -#endif -#if CBS_VP8 - &CBS_FUNC(type_vp8), -#endif -#if CBS_VP9 - &CBS_FUNC(type_vp9), +#if CONFIG_CBS_VP9 + &ff_cbs_type_vp9, #endif }; -const enum AVCodecID CBS_FUNC(all_codec_ids)[] = { -#if CBS_APV - AV_CODEC_ID_APV, -#endif -#if CBS_AV1 +const enum AVCodecID ff_cbs_all_codec_ids[] = { +#if CONFIG_CBS_AV1 AV_CODEC_ID_AV1, #endif -#if CBS_H264 +#if CONFIG_CBS_H264 AV_CODEC_ID_H264, #endif -#if CBS_H265 +#if CONFIG_CBS_H265 AV_CODEC_ID_H265, #endif -#if CBS_H266 +#if CONFIG_CBS_H266 AV_CODEC_ID_H266, #endif -#if CBS_LCEVC - AV_CODEC_ID_LCEVC, -#endif -#if CBS_JPEG +#if CONFIG_CBS_JPEG AV_CODEC_ID_MJPEG, #endif -#if CBS_MPEG2 +#if CONFIG_CBS_MPEG2 AV_CODEC_ID_MPEG2VIDEO, #endif -#if CBS_VP8 +#if CONFIG_CBS_VP8 AV_CODEC_ID_VP8, #endif -#if CBS_VP9 +#if CONFIG_CBS_VP9 AV_CODEC_ID_VP9, #endif AV_CODEC_ID_NONE }; -av_cold int CBS_FUNC(init)(CodedBitstreamContext **ctx_ptr, +av_cold int ff_cbs_init(CodedBitstreamContext **ctx_ptr, enum AVCodecID codec_id, void *log_ctx) { CodedBitstreamContext *ctx; @@ -143,13 +133,13 @@ av_cold int CBS_FUNC(init)(CodedBitstreamContext **ctx_ptr, return 0; } -av_cold void CBS_FUNC(flush)(CodedBitstreamContext *ctx) +av_cold void ff_cbs_flush(CodedBitstreamContext *ctx) { if (ctx->codec->flush) ctx->codec->flush(ctx); } -av_cold void CBS_FUNC(close)(CodedBitstreamContext **ctx_ptr) +av_cold void ff_cbs_close(CodedBitstreamContext **ctx_ptr) { CodedBitstreamContext *ctx = *ctx_ptr; @@ -179,7 +169,7 @@ static void cbs_unit_uninit(CodedBitstreamUnit *unit) unit->data_bit_padding = 0; } -void CBS_FUNC(fragment_reset)(CodedBitstreamFragment *frag) +void ff_cbs_fragment_reset(CodedBitstreamFragment *frag) { int i; @@ -193,15 +183,14 @@ void CBS_FUNC(fragment_reset)(CodedBitstreamFragment *frag) frag->data_bit_padding = 0; } -av_cold void CBS_FUNC(fragment_free)(CodedBitstreamFragment *frag) +av_cold void ff_cbs_fragment_free(CodedBitstreamFragment *frag) { - CBS_FUNC(fragment_reset)(frag); + ff_cbs_fragment_reset(frag); av_freep(&frag->units); frag->nb_units_allocated = 0; } -#if CBS_READ static int cbs_read_fragment_content(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag) { @@ -237,8 +226,7 @@ static int cbs_read_fragment_content(CodedBitstreamContext *ctx, unit->content = NULL; } else if (err < 0) { av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to read unit %d " - "(type %"PRIu32"): %s.\n", - i, unit->type, av_err2str(err)); + "(type %"PRIu32").\n", i, unit->type); return err; } } @@ -268,7 +256,7 @@ static int cbs_fill_fragment_data(CodedBitstreamFragment *frag, static int cbs_read_data(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, - const AVBufferRef *buf, + AVBufferRef *buf, const uint8_t *data, size_t size, int header) { @@ -295,7 +283,7 @@ static int cbs_read_data(CodedBitstreamContext *ctx, return cbs_read_fragment_content(ctx, frag); } -int CBS_FUNC(read_extradata)(CodedBitstreamContext *ctx, +int ff_cbs_read_extradata(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVCodecParameters *par) { @@ -304,7 +292,7 @@ int CBS_FUNC(read_extradata)(CodedBitstreamContext *ctx, par->extradata_size, 1); } -int CBS_FUNC(read_extradata_from_codec)(CodedBitstreamContext *ctx, +int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVCodecContext *avctx) { @@ -313,7 +301,7 @@ int CBS_FUNC(read_extradata_from_codec)(CodedBitstreamContext *ctx, avctx->extradata_size, 1); } -int CBS_FUNC(read_packet)(CodedBitstreamContext *ctx, +int ff_cbs_read_packet(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVPacket *pkt) { @@ -321,7 +309,7 @@ int CBS_FUNC(read_packet)(CodedBitstreamContext *ctx, pkt->data, pkt->size, 0); } -int CBS_FUNC(read_packet_side_data)(CodedBitstreamContext *ctx, +int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVPacket *pkt) { @@ -334,17 +322,14 @@ int CBS_FUNC(read_packet_side_data)(CodedBitstreamContext *ctx, side_data, side_data_size, 1); } -int CBS_FUNC(read)(CodedBitstreamContext *ctx, +int ff_cbs_read(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, - const AVBufferRef *buf, const uint8_t *data, size_t size) { - return cbs_read_data(ctx, frag, buf, + return cbs_read_data(ctx, frag, NULL, data, size, 0); } -#endif -#if CBS_WRITE /** * Allocate a new internal data buffer of the given size in the unit. * @@ -382,7 +367,7 @@ static int cbs_write_unit_data(CodedBitstreamContext *ctx, if (ret < 0) { av_log(ctx->log_ctx, AV_LOG_ERROR, "Unable to allocate a " "sufficiently large write buffer (last attempt " - "%zu bytes).\n", ctx->write_buffer_size); + "%"SIZE_SPECIFIER" bytes).\n", ctx->write_buffer_size); return ret; } } @@ -421,7 +406,7 @@ static int cbs_write_unit_data(CodedBitstreamContext *ctx, return 0; } -int CBS_FUNC(write_fragment_data)(CodedBitstreamContext *ctx, +int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag) { int err, i; @@ -457,13 +442,13 @@ int CBS_FUNC(write_fragment_data)(CodedBitstreamContext *ctx, return 0; } -int CBS_FUNC(write_extradata)(CodedBitstreamContext *ctx, +int ff_cbs_write_extradata(CodedBitstreamContext *ctx, AVCodecParameters *par, CodedBitstreamFragment *frag) { int err; - err = CBS_FUNC(write_fragment_data)(ctx, frag); + err = ff_cbs_write_fragment_data(ctx, frag); if (err < 0) return err; @@ -486,14 +471,14 @@ int CBS_FUNC(write_extradata)(CodedBitstreamContext *ctx, return 0; } -int CBS_FUNC(write_packet)(CodedBitstreamContext *ctx, +int ff_cbs_write_packet(CodedBitstreamContext *ctx, AVPacket *pkt, CodedBitstreamFragment *frag) { AVBufferRef *buf; int err; - err = CBS_FUNC(write_fragment_data)(ctx, frag); + err = ff_cbs_write_fragment_data(ctx, frag); if (err < 0) return err; @@ -509,26 +494,22 @@ int CBS_FUNC(write_packet)(CodedBitstreamContext *ctx, return 0; } -#endif -void CBS_FUNC(trace_header)(CodedBitstreamContext *ctx, +void ff_cbs_trace_header(CodedBitstreamContext *ctx, const char *name) { -#if CBS_TRACE if (!ctx->trace_enable) return; av_log(ctx->log_ctx, ctx->trace_level, "%s\n", name); -#endif } -void CBS_FUNC(trace_read_log)(void *trace_context, +void ff_cbs_trace_read_log(void *trace_context, GetBitContext *gbc, int length, const char *str, const int *subscripts, int64_t value) { -#if CBS_TRACE CodedBitstreamContext *ctx = trace_context; char name[256]; char bits[256]; @@ -580,15 +561,13 @@ void CBS_FUNC(trace_read_log)(void *trace_context, av_log(ctx->log_ctx, ctx->trace_level, "%-10d %s%*s = %"PRId64"\n", position, name, pad, bits, value); -#endif } -void CBS_FUNC(trace_write_log)(void *trace_context, +void ff_cbs_trace_write_log(void *trace_context, PutBitContext *pbc, int length, const char *str, const int *subscripts, int64_t value) { -#if CBS_TRACE CodedBitstreamContext *ctx = trace_context; // Ensure that the syntax element is written to the output buffer, @@ -611,11 +590,9 @@ void CBS_FUNC(trace_write_log)(void *trace_context, skip_bits_long(&gbc, position - length); - CBS_FUNC(trace_read_log)(ctx, &gbc, length, str, subscripts, value); -#endif + ff_cbs_trace_read_log(ctx, &gbc, length, str, subscripts, value); } -#if CBS_READ static av_always_inline int cbs_read_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, @@ -651,7 +628,7 @@ static av_always_inline int cbs_read_unsigned(CodedBitstreamContext *ctx, return 0; } -int CBS_FUNC(read_unsigned)(CodedBitstreamContext *ctx, GetBitContext *gbc, +int ff_cbs_read_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, const int *subscripts, uint32_t *write_to, uint32_t range_min, uint32_t range_max) @@ -660,16 +637,14 @@ int CBS_FUNC(read_unsigned)(CodedBitstreamContext *ctx, GetBitContext *gbc, write_to, range_min, range_max); } -int CBS_FUNC(read_simple_unsigned)(CodedBitstreamContext *ctx, GetBitContext *gbc, +int ff_cbs_read_simple_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, uint32_t *write_to) { return cbs_read_unsigned(ctx, gbc, width, name, NULL, write_to, 0, UINT32_MAX); } -#endif -#if CBS_WRITE -int CBS_FUNC(write_unsigned)(CodedBitstreamContext *ctx, PutBitContext *pbc, +int ff_cbs_write_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, const int *subscripts, uint32_t value, uint32_t range_min, uint32_t range_max) @@ -688,23 +663,24 @@ int CBS_FUNC(write_unsigned)(CodedBitstreamContext *ctx, PutBitContext *pbc, if (put_bits_left(pbc) < width) return AVERROR(ENOSPC); - put_bits63(pbc, width, value); + if (width < 32) + put_bits(pbc, width, value); + else + put_bits32(pbc, value); CBS_TRACE_WRITE_END(); return 0; } -int CBS_FUNC(write_simple_unsigned)(CodedBitstreamContext *ctx, PutBitContext *pbc, +int ff_cbs_write_simple_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, uint32_t value) { - return CBS_FUNC(write_unsigned)(ctx, pbc, width, name, NULL, + return ff_cbs_write_unsigned(ctx, pbc, width, name, NULL, value, 0, MAX_UINT_BITS(width)); } -#endif -#if CBS_READ -int CBS_FUNC(read_signed)(CodedBitstreamContext *ctx, GetBitContext *gbc, +int ff_cbs_read_signed(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, const int *subscripts, int32_t *write_to, int32_t range_min, int32_t range_max) @@ -735,10 +711,8 @@ int CBS_FUNC(read_signed)(CodedBitstreamContext *ctx, GetBitContext *gbc, *write_to = value; return 0; } -#endif -#if CBS_WRITE -int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, +int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, const int *subscripts, int32_t value, int32_t range_min, int32_t range_max) @@ -757,13 +731,15 @@ int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, if (put_bits_left(pbc) < width) return AVERROR(ENOSPC); - put_bits63(pbc, width, zero_extend(value, width)); + if (width < 32) + put_sbits(pbc, width, value); + else + put_bits32(pbc, value); CBS_TRACE_WRITE_END(); return 0; } -#endif static int cbs_insert_unit(CodedBitstreamFragment *frag, @@ -790,19 +766,21 @@ static int cbs_insert_unit(CodedBitstreamFragment *frag, if (position < frag->nb_units) memcpy(units + position + 1, frag->units + position, (frag->nb_units - position) * sizeof(*units)); - - av_free(frag->units); - frag->units = units; } memset(units + position, 0, sizeof(*units)); + if (units != frag->units) { + av_free(frag->units); + frag->units = units; + } + ++frag->nb_units; return 0; } -int CBS_FUNC(insert_unit_content)(CodedBitstreamFragment *frag, +int ff_cbs_insert_unit_content(CodedBitstreamFragment *frag, int position, CodedBitstreamUnitType type, void *content, @@ -869,7 +847,7 @@ static int cbs_insert_unit_data(CodedBitstreamFragment *frag, return 0; } -int CBS_FUNC(append_unit_data)(CodedBitstreamFragment *frag, +int ff_cbs_append_unit_data(CodedBitstreamFragment *frag, CodedBitstreamUnitType type, uint8_t *data, size_t data_size, AVBufferRef *data_buf) @@ -879,7 +857,7 @@ int CBS_FUNC(append_unit_data)(CodedBitstreamFragment *frag, frag->nb_units); } -void CBS_FUNC(delete_unit)(CodedBitstreamFragment *frag, +void ff_cbs_delete_unit(CodedBitstreamFragment *frag, int position) { av_assert0(0 <= position && position < frag->nb_units @@ -897,7 +875,7 @@ void CBS_FUNC(delete_unit)(CodedBitstreamFragment *frag, static void cbs_default_free_unit_content(AVRefStructOpaque opaque, void *content) { - CodedBitstreamUnitTypeDescriptor *desc = opaque.c; + const CodedBitstreamUnitTypeDescriptor *desc = opaque.c; for (int i = 0; i < desc->type.ref.nb_offsets; i++) { void **ptr = (void**)((char*)content + desc->type.ref.offsets[i]); @@ -905,11 +883,11 @@ static void cbs_default_free_unit_content(AVRefStructOpaque opaque, void *conten } } -static CodedBitstreamUnitTypeDescriptor +static const CodedBitstreamUnitTypeDescriptor *cbs_find_unit_type_desc(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) { - CodedBitstreamUnitTypeDescriptor *desc; + const CodedBitstreamUnitTypeDescriptor *desc; int i, j; if (!ctx->codec->unit_types) @@ -933,7 +911,7 @@ static CodedBitstreamUnitTypeDescriptor return NULL; } -static void *cbs_alloc_content(CodedBitstreamUnitTypeDescriptor *desc) +static void *cbs_alloc_content(const CodedBitstreamUnitTypeDescriptor *desc) { return av_refstruct_alloc_ext_c(desc->content_size, 0, (AVRefStructOpaque){ .c = desc }, @@ -942,10 +920,10 @@ static void *cbs_alloc_content(CodedBitstreamUnitTypeDescriptor *desc) : cbs_default_free_unit_content); } -int CBS_FUNC(alloc_unit_content)(CodedBitstreamContext *ctx, +int ff_cbs_alloc_unit_content(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) { - CodedBitstreamUnitTypeDescriptor *desc; + const CodedBitstreamUnitTypeDescriptor *desc; av_assert0(!unit->content && !unit->content_ref); @@ -963,11 +941,11 @@ int CBS_FUNC(alloc_unit_content)(CodedBitstreamContext *ctx, static int cbs_clone_noncomplex_unit_content(void **clonep, const CodedBitstreamUnit *unit, - CodedBitstreamUnitTypeDescriptor *desc) + const CodedBitstreamUnitTypeDescriptor *desc) { const uint8_t *src; uint8_t *copy; - int err; + int err, i; av_assert0(unit->content); src = unit->content; @@ -982,7 +960,7 @@ static int cbs_clone_noncomplex_unit_content(void **clonep, *(ptr + 1) = NULL; } - for (int i = 0; i < desc->type.ref.nb_offsets; i++) { + for (i = 0; i < desc->type.ref.nb_offsets; i++) { const uint8_t *const *src_ptr = (const uint8_t* const*)(src + desc->type.ref.offsets[i]); const AVBufferRef *src_buf = *(AVBufferRef**)(src_ptr + 1); uint8_t **copy_ptr = (uint8_t**)(copy + desc->type.ref.offsets[i]); @@ -1023,7 +1001,7 @@ fail: static int cbs_clone_unit_content(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) { - CodedBitstreamUnitTypeDescriptor *desc; + const CodedBitstreamUnitTypeDescriptor *desc; void *new_content; int err; @@ -1054,7 +1032,7 @@ static int cbs_clone_unit_content(CodedBitstreamContext *ctx, return 0; } -int CBS_FUNC(make_unit_refcounted)(CodedBitstreamContext *ctx, +int ff_cbs_make_unit_refcounted(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) { av_assert0(unit->content); @@ -1063,7 +1041,7 @@ int CBS_FUNC(make_unit_refcounted)(CodedBitstreamContext *ctx, return cbs_clone_unit_content(ctx, unit); } -int CBS_FUNC(make_unit_writable)(CodedBitstreamContext *ctx, +int ff_cbs_make_unit_writable(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) { void *ref = unit->content_ref; @@ -1080,7 +1058,7 @@ int CBS_FUNC(make_unit_writable)(CodedBitstreamContext *ctx, return 0; } -void CBS_FUNC(discard_units)(CodedBitstreamContext *ctx, +void ff_cbs_discard_units(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, enum AVDiscard skip, int flags) @@ -1092,11 +1070,11 @@ void CBS_FUNC(discard_units)(CodedBitstreamContext *ctx, if (ctx->codec->discarded_unit(ctx, &frag->units[i], skip)) { // discard all units if (!(flags & DISCARD_FLAG_KEEP_NON_VCL)) { - CBS_FUNC(fragment_free)(frag); + ff_cbs_fragment_free(frag); return; } - CBS_FUNC(delete_unit)(frag, i); + ff_cbs_delete_unit(frag, i); } } } diff --git a/icecat/media/ffvpx/libavcodec/cbs.h b/icecat/media/ffvpx/libavcodec/cbs.h index 8c4614479f..d479b1ac2d 100644 --- a/icecat/media/ffvpx/libavcodec/cbs.h +++ b/icecat/media/ffvpx/libavcodec/cbs.h @@ -29,13 +29,6 @@ #include "defs.h" #include "packet.h" -#ifndef CBS_PREFIX -#define CBS_PREFIX cbs -#endif - -#define CBS_FUNC_PREFIX_NAME(prefix, name) ff_ ## prefix ## _ ## name -#define CBS_FUNC_NAME(prefix, name) CBS_FUNC_PREFIX_NAME(prefix, name) -#define CBS_FUNC(name) CBS_FUNC_NAME(CBS_PREFIX, name) /* * This defines a framework for converting between a coded bitstream @@ -301,24 +294,24 @@ typedef struct CodedBitstreamContext { * * Terminated by AV_CODEC_ID_NONE. */ -extern const enum AVCodecID CBS_FUNC(all_codec_ids)[]; +extern const enum AVCodecID ff_cbs_all_codec_ids[]; /** * Create and initialise a new context for the given codec. */ -int CBS_FUNC(init)(CodedBitstreamContext **ctx, +int ff_cbs_init(CodedBitstreamContext **ctx, enum AVCodecID codec_id, void *log_ctx); /** * Reset all internal state in a context. */ -void CBS_FUNC(flush)(CodedBitstreamContext *ctx); +void ff_cbs_flush(CodedBitstreamContext *ctx); /** * Close a context and free all internal state. */ -void CBS_FUNC(close)(CodedBitstreamContext **ctx); +void ff_cbs_close(CodedBitstreamContext **ctx); /** @@ -332,7 +325,7 @@ void CBS_FUNC(close)(CodedBitstreamContext **ctx); * The fragment must have been zeroed or reset via ff_cbs_fragment_reset * before use. */ -int CBS_FUNC(read_extradata)(CodedBitstreamContext *ctx, +int ff_cbs_read_extradata(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVCodecParameters *par); @@ -343,11 +336,11 @@ int CBS_FUNC(read_extradata)(CodedBitstreamContext *ctx, * This acts identical to ff_cbs_read_extradata() for the case where * you already have a codec context. */ -int CBS_FUNC(read_extradata_from_codec)(CodedBitstreamContext *ctx, +int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const struct AVCodecContext *avctx); -int CBS_FUNC(read_packet_side_data)(CodedBitstreamContext *ctx, +int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVPacket *pkt); @@ -362,7 +355,7 @@ int CBS_FUNC(read_packet_side_data)(CodedBitstreamContext *ctx, * The fragment must have been zeroed or reset via ff_cbs_fragment_reset * before use. */ -int CBS_FUNC(read_packet)(CodedBitstreamContext *ctx, +int ff_cbs_read_packet(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVPacket *pkt); @@ -377,9 +370,8 @@ int CBS_FUNC(read_packet)(CodedBitstreamContext *ctx, * The fragment must have been zeroed or reset via ff_cbs_fragment_reset * before use. */ -int CBS_FUNC(read)(CodedBitstreamContext *ctx, +int ff_cbs_read(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, - const AVBufferRef *buf, const uint8_t *data, size_t size); @@ -395,7 +387,7 @@ int CBS_FUNC(read)(CodedBitstreamContext *ctx, * with any persistent data from the fragment which may be required to * write following fragments (e.g. parameter sets). */ -int CBS_FUNC(write_fragment_data)(CodedBitstreamContext *ctx, +int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag); /** @@ -404,7 +396,7 @@ int CBS_FUNC(write_fragment_data)(CodedBitstreamContext *ctx, * Modifies context and fragment as ff_cbs_write_fragment_data does and * replaces any existing extradata in the structure. */ -int CBS_FUNC(write_extradata)(CodedBitstreamContext *ctx, +int ff_cbs_write_extradata(CodedBitstreamContext *ctx, AVCodecParameters *par, CodedBitstreamFragment *frag); @@ -418,7 +410,7 @@ int CBS_FUNC(write_extradata)(CodedBitstreamContext *ctx, * fragment; other fields are not touched. On failure, the packet is not * touched at all. */ -int CBS_FUNC(write_packet)(CodedBitstreamContext *ctx, +int ff_cbs_write_packet(CodedBitstreamContext *ctx, AVPacket *pkt, CodedBitstreamFragment *frag); @@ -427,20 +419,20 @@ int CBS_FUNC(write_packet)(CodedBitstreamContext *ctx, * Free the units contained in a fragment as well as the fragment's * own data buffer, but not the units array itself. */ -void CBS_FUNC(fragment_reset)(CodedBitstreamFragment *frag); +void ff_cbs_fragment_reset(CodedBitstreamFragment *frag); /** * Free the units array of a fragment in addition to what * ff_cbs_fragment_reset does. */ -void CBS_FUNC(fragment_free)(CodedBitstreamFragment *frag); +void ff_cbs_fragment_free(CodedBitstreamFragment *frag); /** * Allocate a new internal content buffer matching the type of the unit. * * The content will be zeroed. */ -int CBS_FUNC(alloc_unit_content)(CodedBitstreamContext *ctx, +int ff_cbs_alloc_unit_content(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit); /** @@ -451,7 +443,7 @@ int CBS_FUNC(alloc_unit_content)(CodedBitstreamContext *ctx, * The content structure continues to be owned by the caller if * content_ref is not supplied. */ -int CBS_FUNC(insert_unit_content)(CodedBitstreamFragment *frag, +int ff_cbs_insert_unit_content(CodedBitstreamFragment *frag, int position, CodedBitstreamUnitType type, void *content, @@ -464,7 +456,7 @@ int CBS_FUNC(insert_unit_content)(CodedBitstreamFragment *frag, * av_malloc() and will on success become owned by the unit after this * call or freed on error. */ -int CBS_FUNC(append_unit_data)(CodedBitstreamFragment *frag, +int ff_cbs_append_unit_data(CodedBitstreamFragment *frag, CodedBitstreamUnitType type, uint8_t *data, size_t data_size, AVBufferRef *data_buf); @@ -474,7 +466,7 @@ int CBS_FUNC(append_unit_data)(CodedBitstreamFragment *frag, * * Requires position to be >= 0 and < frag->nb_units. */ -void CBS_FUNC(delete_unit)(CodedBitstreamFragment *frag, +void ff_cbs_delete_unit(CodedBitstreamFragment *frag, int position); @@ -487,7 +479,7 @@ void CBS_FUNC(delete_unit)(CodedBitstreamFragment *frag, * It is not valid to call this function on a unit which does not have * decomposed content. */ -int CBS_FUNC(make_unit_refcounted)(CodedBitstreamContext *ctx, +int ff_cbs_make_unit_refcounted(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit); /** @@ -503,7 +495,7 @@ int CBS_FUNC(make_unit_refcounted)(CodedBitstreamContext *ctx, * It is not valid to call this function on a unit which does not have * decomposed content. */ -int CBS_FUNC(make_unit_writable)(CodedBitstreamContext *ctx, +int ff_cbs_make_unit_writable(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit); enum CbsDiscardFlags { @@ -516,9 +508,9 @@ enum CbsDiscardFlags { }; /** - * Discard units according to 'skip'. + * Discard units accroding to 'skip'. */ -void CBS_FUNC(discard_units)(CodedBitstreamContext *ctx, +void ff_cbs_discard_units(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, enum AVDiscard skip, int flags); @@ -530,7 +522,7 @@ void CBS_FUNC(discard_units)(CodedBitstreamContext *ctx, * * Trace context should be set to the CodedBitstreamContext. */ -void CBS_FUNC(trace_read_log)(void *trace_context, +void ff_cbs_trace_read_log(void *trace_context, struct GetBitContext *gbc, int length, const char *str, const int *subscripts, int64_t value); @@ -541,7 +533,7 @@ void CBS_FUNC(trace_read_log)(void *trace_context, * * Trace context should be set to the CodedBitstreamContext. */ -void CBS_FUNC(trace_write_log)(void *trace_context, +void ff_cbs_trace_write_log(void *trace_context, struct PutBitContext *pbc, int length, const char *str, const int *subscripts, int64_t value); diff --git a/icecat/media/ffvpx/libavcodec/cbs_av1.c b/icecat/media/ffvpx/libavcodec/cbs_av1.c index d05352c738..fea079379b 100644 --- a/icecat/media/ffvpx/libavcodec/cbs_av1.c +++ b/icecat/media/ffvpx/libavcodec/cbs_av1.c @@ -16,7 +16,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/opt.h" #include "libavutil/pixfmt.h" @@ -28,7 +27,6 @@ #include "libavutil/refstruct.h" -#if CBS_READ static int cbs_av1_read_uvlc(CodedBitstreamContext *ctx, GetBitContext *gbc, const char *name, uint32_t *write_to, uint32_t range_min, uint32_t range_max) @@ -86,9 +84,7 @@ static int cbs_av1_read_uvlc(CodedBitstreamContext *ctx, GetBitContext *gbc, *write_to = value; return 0; } -#endif -#if CBS_WRITE static int cbs_av1_write_uvlc(CodedBitstreamContext *ctx, PutBitContext *pbc, const char *name, uint32_t value, uint32_t range_min, uint32_t range_max) @@ -119,9 +115,7 @@ static int cbs_av1_write_uvlc(CodedBitstreamContext *ctx, PutBitContext *pbc, return 0; } -#endif -#if CBS_READ static int cbs_av1_read_leb128(CodedBitstreamContext *ctx, GetBitContext *gbc, const char *name, uint64_t *write_to) { @@ -152,9 +146,7 @@ static int cbs_av1_read_leb128(CodedBitstreamContext *ctx, GetBitContext *gbc, *write_to = value; return 0; } -#endif -#if CBS_WRITE static int cbs_av1_write_leb128(CodedBitstreamContext *ctx, PutBitContext *pbc, const char *name, uint64_t value, int fixed_length) { @@ -190,9 +182,7 @@ static int cbs_av1_write_leb128(CodedBitstreamContext *ctx, PutBitContext *pbc, return 0; } -#endif -#if CBS_READ static int cbs_av1_read_ns(CodedBitstreamContext *ctx, GetBitContext *gbc, uint32_t n, const char *name, const int *subscripts, uint32_t *write_to) @@ -230,9 +220,7 @@ static int cbs_av1_read_ns(CodedBitstreamContext *ctx, GetBitContext *gbc, *write_to = value; return 0; } -#endif -#if CBS_WRITE static int cbs_av1_write_ns(CodedBitstreamContext *ctx, PutBitContext *pbc, uint32_t n, const char *name, const int *subscripts, uint32_t value) @@ -268,9 +256,7 @@ static int cbs_av1_write_ns(CodedBitstreamContext *ctx, PutBitContext *pbc, return 0; } -#endif -#if CBS_READ static int cbs_av1_read_increment(CodedBitstreamContext *ctx, GetBitContext *gbc, uint32_t range_min, uint32_t range_max, const char *name, uint32_t *write_to) @@ -298,9 +284,7 @@ static int cbs_av1_read_increment(CodedBitstreamContext *ctx, GetBitContext *gbc *write_to = value; return 0; } -#endif -#if CBS_WRITE static int cbs_av1_write_increment(CodedBitstreamContext *ctx, PutBitContext *pbc, uint32_t range_min, uint32_t range_max, const char *name, uint32_t value) @@ -331,9 +315,7 @@ static int cbs_av1_write_increment(CodedBitstreamContext *ctx, PutBitContext *pb return 0; } -#endif -#if CBS_READ static int cbs_av1_read_subexp(CodedBitstreamContext *ctx, GetBitContext *gbc, uint32_t range_max, const char *name, const int *subscripts, uint32_t *write_to) @@ -360,7 +342,7 @@ static int cbs_av1_read_subexp(CodedBitstreamContext *ctx, GetBitContext *gbc, } if (len < max_len) { - err = CBS_FUNC(read_simple_unsigned)(ctx, gbc, range_bits, + err = ff_cbs_read_simple_unsigned(ctx, gbc, range_bits, "subexp_bits", &value); if (err < 0) return err; @@ -378,9 +360,7 @@ static int cbs_av1_read_subexp(CodedBitstreamContext *ctx, GetBitContext *gbc, *write_to = value; return err; } -#endif -#if CBS_WRITE static int cbs_av1_write_subexp(CodedBitstreamContext *ctx, PutBitContext *pbc, uint32_t range_max, const char *name, const int *subscripts, uint32_t value) @@ -422,7 +402,7 @@ static int cbs_av1_write_subexp(CodedBitstreamContext *ctx, PutBitContext *pbc, return err; if (len < max_len) { - err = CBS_FUNC(write_simple_unsigned)(ctx, pbc, range_bits, + err = ff_cbs_write_simple_unsigned(ctx, pbc, range_bits, "subexp_bits", value - range_offset); if (err < 0) @@ -440,7 +420,6 @@ static int cbs_av1_write_subexp(CodedBitstreamContext *ctx, PutBitContext *pbc, return err; } -#endif static int cbs_av1_tile_log2(int blksize, int target) @@ -462,7 +441,7 @@ static int cbs_av1_get_relative_dist(const AV1RawSequenceHeader *seq, return diff; } -av_unused static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) +static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) { GetBitContext tmp = *gbc; size_t size = 0; @@ -475,7 +454,7 @@ av_unused static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) #define HEADER(name) do { \ - CBS_FUNC(trace_header)(ctx, name); \ + ff_cbs_trace_header(ctx, name); \ } while (0) #define CHECK(call) do { \ @@ -490,7 +469,6 @@ av_unused static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) #define SUBSCRIPTS(subs, ...) (subs > 0 ? ((int[subs + 1]){ subs, __VA_ARGS__ }) : NULL) -#if CBS_READ #define fc(width, name, range_min, range_max) \ xf(width, name, current->name, range_min, range_max, 0, ) #define flag(name) fb(1, name) @@ -518,14 +496,14 @@ av_unused static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) #define fb(width, name) do { \ uint32_t value; \ - CHECK(CBS_FUNC(read_simple_unsigned)(ctx, rw, width, \ + CHECK(ff_cbs_read_simple_unsigned(ctx, rw, width, \ #name, &value)); \ current->name = value; \ } while (0) #define xf(width, name, var, range_min, range_max, subs, ...) do { \ uint32_t value; \ - CHECK(CBS_FUNC(read_unsigned)(ctx, rw, width, #name, \ + CHECK(ff_cbs_read_unsigned(ctx, rw, width, #name, \ SUBSCRIPTS(subs, __VA_ARGS__), \ &value, range_min, range_max)); \ var = value; \ @@ -533,7 +511,7 @@ av_unused static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) #define xsu(width, name, var, subs, ...) do { \ int32_t value; \ - CHECK(CBS_FUNC(read_signed)(ctx, rw, width, #name, \ + CHECK(ff_cbs_read_signed(ctx, rw, width, #name, \ SUBSCRIPTS(subs, __VA_ARGS__), &value, \ MIN_INT_BITS(width), \ MAX_INT_BITS(width))); \ @@ -606,27 +584,25 @@ av_unused static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) #undef leb128 #undef infer #undef byte_alignment -#endif // CBS_READ -#if CBS_WRITE #define WRITE #define READWRITE write #define RWContext PutBitContext #define fb(width, name) do { \ - CHECK(CBS_FUNC(write_simple_unsigned)(ctx, rw, width, #name, \ + CHECK(ff_cbs_write_simple_unsigned(ctx, rw, width, #name, \ current->name)); \ } while (0) #define xf(width, name, var, range_min, range_max, subs, ...) do { \ - CHECK(CBS_FUNC(write_unsigned)(ctx, rw, width, #name, \ + CHECK(ff_cbs_write_unsigned(ctx, rw, width, #name, \ SUBSCRIPTS(subs, __VA_ARGS__), \ var, range_min, range_max)); \ } while (0) #define xsu(width, name, var, subs, ...) do { \ - CHECK(CBS_FUNC(write_signed)(ctx, rw, width, #name, \ + CHECK(ff_cbs_write_signed(ctx, rw, width, #name, \ SUBSCRIPTS(subs, __VA_ARGS__), var, \ MIN_INT_BITS(width), \ MAX_INT_BITS(width))); \ @@ -692,13 +668,12 @@ av_unused static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc) #undef leb128 #undef infer #undef byte_alignment -#endif // CBS_WRITE + static int cbs_av1_split_fragment(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, int header) { -#if CBS_READ GetBitContext gbc; uint8_t *data; size_t size; @@ -714,7 +689,7 @@ static int cbs_av1_split_fragment(CodedBitstreamContext *ctx, if (INT_MAX / 8 < size) { av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid fragment: " - "too large (%zu bytes).\n", size); + "too large (%"SIZE_SPECIFIER" bytes).\n", size); err = AVERROR_INVALIDDATA; goto fail; } @@ -765,7 +740,7 @@ static int cbs_av1_split_fragment(CodedBitstreamContext *ctx, if (obu_header.obu_has_size_field) { if (get_bits_left(&gbc) < 8) { av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid OBU: fragment " - "too short (%zu bytes).\n", size); + "too short (%"SIZE_SPECIFIER" bytes).\n", size); err = AVERROR_INVALIDDATA; goto fail; } @@ -782,13 +757,13 @@ static int cbs_av1_split_fragment(CodedBitstreamContext *ctx, if (size < obu_length) { av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid OBU length: " - "%"PRIu64", but only %zu bytes remaining in fragment.\n", + "%"PRIu64", but only %"SIZE_SPECIFIER" bytes remaining in fragment.\n", obu_length, size); err = AVERROR_INVALIDDATA; goto fail; } - err = CBS_FUNC(append_unit_data)(frag, obu_header.obu_type, + err = ff_cbs_append_unit_data(frag, obu_header.obu_type, data, obu_length, frag->data_ref); if (err < 0) goto fail; @@ -802,17 +777,12 @@ success: fail: ctx->trace_enable = trace; return err; -#else - return AVERROR(ENOSYS); -#endif } -#if CBS_READ static int cbs_av1_ref_tile_data(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, GetBitContext *gbc, - AVBufferRef **data_ref, - uint8_t **data, size_t *data_size) + AV1RawTileData *td) { int pos; @@ -825,27 +795,25 @@ static int cbs_av1_ref_tile_data(CodedBitstreamContext *ctx, // Must be byte-aligned at this point. av_assert0(pos % 8 == 0); - *data_ref = av_buffer_ref(unit->data_ref); - if (!*data_ref) + td->data_ref = av_buffer_ref(unit->data_ref); + if (!td->data_ref) return AVERROR(ENOMEM); - *data = unit->data + pos / 8; - *data_size = unit->data_size - pos / 8; + td->data = unit->data + pos / 8; + td->data_size = unit->data_size - pos / 8; return 0; } -#endif static int cbs_av1_read_unit(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) { -#if CBS_READ CodedBitstreamAV1Context *priv = ctx->priv_data; AV1RawOBU *obu; GetBitContext gbc; int err, start_pos, end_pos; - err = CBS_FUNC(alloc_unit_content)(ctx, unit); + err = ff_cbs_alloc_unit_content(ctx, unit); if (err < 0) return err; obu = unit->content; @@ -868,7 +836,7 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx, } else { if (unit->data_size < 1 + obu->header.obu_extension_flag) { av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid OBU length: " - "unit too short (%zu).\n", unit->data_size); + "unit too short (%"SIZE_SPECIFIER").\n", unit->data_size); return AVERROR_INVALIDDATA; } obu->obu_size = unit->data_size - 1 - obu->header.obu_extension_flag; @@ -933,36 +901,32 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx, return err; } break; - case AV1_OBU_FRAME: - err = cbs_av1_read_frame_obu(ctx, &gbc, &obu->obu.frame, - unit->data_ref); - if (err < 0) - return err; - // fall-through case AV1_OBU_TILE_GROUP: { - AV1RawTileGroup *tile_group = obu->header.obu_type == AV1_OBU_FRAME ? &obu->obu.frame.tile_group - : &obu->obu.tile_group; - err = cbs_av1_ref_tile_data(ctx, unit, &gbc, - &tile_group->data_ref, - &tile_group->data, - &tile_group->data_size); - if (err < 0) - return err; - - err = cbs_av1_read_tile_group_obu(ctx, &gbc, tile_group); + err = cbs_av1_read_tile_group_obu(ctx, &gbc, + &obu->obu.tile_group); if (err < 0) return err; err = cbs_av1_ref_tile_data(ctx, unit, &gbc, - &tile_group->tile_data.data_ref, - &tile_group->tile_data.data, - &tile_group->tile_data.data_size); + &obu->obu.tile_group.tile_data); + if (err < 0) + return err; + } + break; + case AV1_OBU_FRAME: + { + err = cbs_av1_read_frame_obu(ctx, &gbc, &obu->obu.frame, + unit->data_ref); + if (err < 0) + return err; + + err = cbs_av1_ref_tile_data(ctx, unit, &gbc, + &obu->obu.frame.tile_group.tile_data); if (err < 0) return err; } break; -#if CBS_AV1_OBU_TILE_LIST case AV1_OBU_TILE_LIST: { err = cbs_av1_read_tile_list_obu(ctx, &gbc, @@ -971,15 +935,11 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx, return err; err = cbs_av1_ref_tile_data(ctx, unit, &gbc, - &obu->obu.tile_list.tile_data.data_ref, - &obu->obu.tile_list.tile_data.data, - &obu->obu.tile_list.tile_data.data_size); + &obu->obu.tile_list.tile_data); if (err < 0) return err; } break; -#endif -#if CBS_AV1_OBU_METADATA case AV1_OBU_METADATA: { err = cbs_av1_read_metadata_obu(ctx, &gbc, &obu->obu.metadata); @@ -987,8 +947,6 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx, return err; } break; -#endif -#if CBS_AV1_OBU_PADDING case AV1_OBU_PADDING: { err = cbs_av1_read_padding_obu(ctx, &gbc, &obu->obu.padding); @@ -996,7 +954,6 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx, return err; } break; -#endif default: return AVERROR(ENOSYS); } @@ -1019,16 +976,12 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx, } return 0; -#else - return AVERROR(ENOSYS); -#endif } static int cbs_av1_write_obu(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, PutBitContext *pbc) { -#if CBS_WRITE CodedBitstreamAV1Context *priv = ctx->priv_data; AV1RawOBU *obu = unit->content; PutBitContext pbc_tmp; @@ -1085,7 +1038,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx, av_refstruct_unref(&priv->sequence_header_ref); priv->sequence_header = NULL; - err = CBS_FUNC(make_unit_refcounted)(ctx, unit); + err = ff_cbs_make_unit_refcounted(ctx, unit); if (err < 0) goto error; @@ -1112,23 +1065,25 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx, goto error; } break; - case AV1_OBU_FRAME: - err = cbs_av1_write_frame_obu(ctx, pbc, &obu->obu.frame, NULL); - if (err < 0) - goto error; - // fall-through case AV1_OBU_TILE_GROUP: { - AV1RawTileGroup *tile_group = obu->header.obu_type == AV1_OBU_FRAME ? &obu->obu.frame.tile_group - : &obu->obu.tile_group; - err = cbs_av1_write_tile_group_obu(ctx, pbc, tile_group); + err = cbs_av1_write_tile_group_obu(ctx, pbc, + &obu->obu.tile_group); if (err < 0) goto error; - td = &tile_group->tile_data; + td = &obu->obu.tile_group.tile_data; + } + break; + case AV1_OBU_FRAME: + { + err = cbs_av1_write_frame_obu(ctx, pbc, &obu->obu.frame, NULL); + if (err < 0) + goto error; + + td = &obu->obu.frame.tile_group.tile_data; } break; -#if CBS_AV1_OBU_TILE_LIST case AV1_OBU_TILE_LIST: { err = cbs_av1_write_tile_list_obu(ctx, pbc, &obu->obu.tile_list); @@ -1138,8 +1093,6 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx, td = &obu->obu.tile_list.tile_data; } break; -#endif -#if CBS_AV1_OBU_METADATA case AV1_OBU_METADATA: { err = cbs_av1_write_metadata_obu(ctx, pbc, &obu->obu.metadata); @@ -1147,8 +1100,6 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx, goto error; } break; -#endif -#if CBS_AV1_OBU_PADDING case AV1_OBU_PADDING: { err = cbs_av1_write_padding_obu(ctx, pbc, &obu->obu.padding); @@ -1156,7 +1107,6 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx, goto error; } break; -#endif default: err = AVERROR(ENOSYS); goto error; @@ -1229,15 +1179,11 @@ error: av_buffer_unref(&av1ctx.frame_header_ref); return err; -#else - return AVERROR(ENOSYS); -#endif } static int cbs_av1_assemble_fragment(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag) { -#if CBS_WRITE size_t size, pos; int i; @@ -1261,12 +1207,9 @@ static int cbs_av1_assemble_fragment(CodedBitstreamContext *ctx, frag->data_size = size; return 0; -#else - return AVERROR(ENOSYS); -#endif } -static av_cold void cbs_av1_flush(CodedBitstreamContext *ctx) +static void cbs_av1_flush(CodedBitstreamContext *ctx) { CodedBitstreamAV1Context *priv = ctx->priv_data; @@ -1280,7 +1223,7 @@ static av_cold void cbs_av1_flush(CodedBitstreamContext *ctx) priv->tile_num = 0; } -static av_cold void cbs_av1_close(CodedBitstreamContext *ctx) +static void cbs_av1_close(CodedBitstreamContext *ctx) { CodedBitstreamAV1Context *priv = ctx->priv_data; @@ -1288,7 +1231,6 @@ static av_cold void cbs_av1_close(CodedBitstreamContext *ctx) av_buffer_unref(&priv->frame_header_ref); } -#if CBS_AV1_OBU_METADATA static void cbs_av1_free_metadata(AVRefStructOpaque unused, void *content) { AV1RawOBU *obu = content; @@ -1310,49 +1252,24 @@ static void cbs_av1_free_metadata(AVRefStructOpaque unused, void *content) av_buffer_unref(&md->metadata.unknown.payload_ref); } } -#endif -static CodedBitstreamUnitTypeDescriptor cbs_av1_unit_types[] = { +static const CodedBitstreamUnitTypeDescriptor cbs_av1_unit_types[] = { CBS_UNIT_TYPE_POD(AV1_OBU_SEQUENCE_HEADER, AV1RawOBU), CBS_UNIT_TYPE_POD(AV1_OBU_TEMPORAL_DELIMITER, AV1RawOBU), CBS_UNIT_TYPE_POD(AV1_OBU_FRAME_HEADER, AV1RawOBU), CBS_UNIT_TYPE_POD(AV1_OBU_REDUNDANT_FRAME_HEADER, AV1RawOBU), - { - .nb_unit_types = 1, - .unit_type.list[0] = AV1_OBU_TILE_GROUP, - .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, - .content_size = sizeof(AV1RawOBU), - .type.ref = { - .nb_offsets = 2, - .offsets = { offsetof(AV1RawOBU, obu.tile_group.data), - offsetof(AV1RawOBU, obu.tile_group.tile_data.data) } - }, - }, - { - .nb_unit_types = 1, - .unit_type.list[0] = AV1_OBU_FRAME, - .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, - .content_size = sizeof(AV1RawOBU), - .type.ref = { - .nb_offsets = 2, - .offsets = { offsetof(AV1RawOBU, obu.frame.tile_group.data), - offsetof(AV1RawOBU, obu.frame.tile_group.tile_data.data) } - }, - }, -#if CBS_AV1_OBU_TILE_LIST + CBS_UNIT_TYPE_INTERNAL_REF(AV1_OBU_TILE_GROUP, AV1RawOBU, + obu.tile_group.tile_data.data), + CBS_UNIT_TYPE_INTERNAL_REF(AV1_OBU_FRAME, AV1RawOBU, + obu.frame.tile_group.tile_data.data), CBS_UNIT_TYPE_INTERNAL_REF(AV1_OBU_TILE_LIST, AV1RawOBU, obu.tile_list.tile_data.data), -#endif -#if CBS_AV1_OBU_PADDING CBS_UNIT_TYPE_INTERNAL_REF(AV1_OBU_PADDING, AV1RawOBU, obu.padding.payload), -#endif -#if CBS_AV1_OBU_METADATA CBS_UNIT_TYPE_COMPLEX(AV1_OBU_METADATA, AV1RawOBU, &cbs_av1_free_metadata), -#endif CBS_UNIT_TYPE_END_OF_LIST }; @@ -1373,7 +1290,7 @@ static const AVClass cbs_av1_class = { .version = LIBAVUTIL_VERSION_INT, }; -const CodedBitstreamType CBS_FUNC(type_av1) = { +const CodedBitstreamType ff_cbs_type_av1 = { .codec_id = AV_CODEC_ID_AV1, .priv_class = &cbs_av1_class, diff --git a/icecat/media/ffvpx/libavcodec/cbs_av1.h b/icecat/media/ffvpx/libavcodec/cbs_av1.h index 874f64561f..8586f2bf4a 100644 --- a/icecat/media/ffvpx/libavcodec/cbs_av1.h +++ b/icecat/media/ffvpx/libavcodec/cbs_av1.h @@ -25,15 +25,6 @@ #include "av1.h" #include "cbs.h" -#ifndef CBS_AV1_OBU_METADATA -#define CBS_AV1_OBU_METADATA 1 -#endif -#ifndef CBS_AV1_OBU_TILE_LIST -#define CBS_AV1_OBU_TILE_LIST 1 -#endif -#ifndef CBS_AV1_OBU_PADDING -#define CBS_AV1_OBU_PADDING 1 -#endif typedef struct AV1RawOBUHeader { uint8_t obu_forbidden_bit; @@ -304,10 +295,6 @@ typedef struct AV1RawTileData { } AV1RawTileData; typedef struct AV1RawTileGroup { - uint8_t *data; - AVBufferRef *data_ref; - size_t data_size; - uint8_t tile_start_and_end_present_flag; uint16_t tg_start; uint16_t tg_end; @@ -420,15 +407,9 @@ typedef struct AV1RawOBU { AV1RawFrameHeader frame_header; AV1RawFrame frame; AV1RawTileGroup tile_group; -#if CBS_AV1_OBU_TILE_LIST AV1RawTileList tile_list; -#endif -#if CBS_AV1_OBU_METADATA AV1RawMetadata metadata; -#endif -#if CBS_AV1_OBU_PADDING AV1RawPadding padding; -#endif } obu; } AV1RawOBU; diff --git a/icecat/media/ffvpx/libavcodec/cbs_av1_syntax_template.c b/icecat/media/ffvpx/libavcodec/cbs_av1_syntax_template.c index f43c3a4de5..a4a912482c 100644 --- a/icecat/media/ffvpx/libavcodec/cbs_av1_syntax_template.c +++ b/icecat/media/ffvpx/libavcodec/cbs_av1_syntax_template.c @@ -595,7 +595,7 @@ static int FUNC(tile_info)(CodedBitstreamContext *ctx, RWContext *rw, int max_tile_width_sb, max_tile_height_sb, max_tile_area_sb; int min_log2_tile_cols, max_log2_tile_cols, max_log2_tile_rows; int min_log2_tiles, min_log2_tile_rows; - int err; + int i, err; mi_cols = 2 * ((priv->frame_width + 7) >> 3); mi_rows = 2 * ((priv->frame_height + 7) >> 3); @@ -627,8 +627,8 @@ static int FUNC(tile_info)(CodedBitstreamContext *ctx, RWContext *rw, tile_width_sb = (sb_cols + (1 << current->tile_cols_log2) - 1) >> current->tile_cols_log2; - for (int off = 0, j = 0; off < sb_cols; off += tile_width_sb) - current->tile_start_col_sb[j++] = off; + for (int off = 0, i = 0; off < sb_cols; off += tile_width_sb) + current->tile_start_col_sb[i++] = off; current->tile_cols = (sb_cols + tile_width_sb - 1) / tile_width_sb; @@ -639,12 +639,11 @@ static int FUNC(tile_info)(CodedBitstreamContext *ctx, RWContext *rw, tile_height_sb = (sb_rows + (1 << current->tile_rows_log2) - 1) >> current->tile_rows_log2; - for (int off = 0, j = 0; off < sb_rows; off += tile_height_sb) - current->tile_start_row_sb[j++] = off; + for (int off = 0, i = 0; off < sb_rows; off += tile_height_sb) + current->tile_start_row_sb[i++] = off; current->tile_rows = (sb_rows + tile_height_sb - 1) / tile_height_sb; - int i; for (i = 0; i < current->tile_cols - 1; i++) infer(width_in_sbs_minus_1[i], tile_width_sb - 1); infer(width_in_sbs_minus_1[i], @@ -655,7 +654,7 @@ static int FUNC(tile_info)(CodedBitstreamContext *ctx, RWContext *rw, sb_rows - (current->tile_rows - 1) * tile_height_sb - 1); } else { - int widest_tile_sb, start_sb, size_sb, max_width, max_height, i; + int widest_tile_sb, start_sb, size_sb, max_width, max_height; widest_tile_sb = 0; @@ -1759,15 +1758,7 @@ static int FUNC(frame_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, } } else { if (redundant) -#ifdef READ HEADER("Redundant Frame Header (used as Frame Header)"); -#else - { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid redundant " - "frame header OBU.\n"); - return AVERROR_INVALIDDATA; - } -#endif else HEADER("Frame Header"); @@ -1874,10 +1865,11 @@ static int FUNC(frame_obu)(CodedBitstreamContext *ctx, RWContext *rw, CHECK(FUNC(byte_alignment)(ctx, rw)); + CHECK(FUNC(tile_group_obu)(ctx, rw, ¤t->tile_group)); + return 0; } -#if CBS_AV1_OBU_TILE_LIST static int FUNC(tile_list_obu)(CodedBitstreamContext *ctx, RWContext *rw, AV1RawTileList *current) { @@ -1892,9 +1884,7 @@ static int FUNC(tile_list_obu)(CodedBitstreamContext *ctx, RWContext *rw, return 0; } -#endif -#if CBS_AV1_OBU_METADATA static int FUNC(metadata_hdr_cll)(CodedBitstreamContext *ctx, RWContext *rw, AV1RawMetadataHDRCLL *current) { @@ -2113,9 +2103,7 @@ static int FUNC(metadata_obu)(CodedBitstreamContext *ctx, RWContext *rw, return 0; } -#endif -#if CBS_AV1_OBU_PADDING static int FUNC(padding_obu)(CodedBitstreamContext *ctx, RWContext *rw, AV1RawPadding *current) { @@ -2139,4 +2127,3 @@ static int FUNC(padding_obu)(CodedBitstreamContext *ctx, RWContext *rw, return 0; } -#endif diff --git a/icecat/media/ffvpx/libavcodec/cbs_internal.h b/icecat/media/ffvpx/libavcodec/cbs_internal.h index 2af8075f78..80cad2b162 100644 --- a/icecat/media/ffvpx/libavcodec/cbs_internal.h +++ b/icecat/media/ffvpx/libavcodec/cbs_internal.h @@ -22,8 +22,6 @@ #include #include -#include "config.h" - #include "libavutil/log.h" #include "cbs.h" @@ -32,46 +30,6 @@ #include "put_bits.h" #include "libavutil/refstruct.h" -#ifndef CBS_READ -#define CBS_READ 1 -#endif -#ifndef CBS_WRITE -#define CBS_WRITE 1 -#endif -#ifndef CBS_TRACE -#define CBS_TRACE 1 -#endif - -#ifndef CBS_APV -#define CBS_APV CONFIG_CBS_APV -#endif -#ifndef CBS_AV1 -#define CBS_AV1 CONFIG_CBS_AV1 -#endif -#ifndef CBS_H264 -#define CBS_H264 CONFIG_CBS_H264 -#endif -#ifndef CBS_H265 -#define CBS_H265 CONFIG_CBS_H265 -#endif -#ifndef CBS_H266 -#define CBS_H266 CONFIG_CBS_H266 -#endif -#ifndef CBS_LCEVC -#define CBS_LCEVC CONFIG_CBS_LCEVC -#endif -#ifndef CBS_JPEG -#define CBS_JPEG CONFIG_CBS_JPEG -#endif -#ifndef CBS_MPEG2 -#define CBS_MPEG2 CONFIG_CBS_MPEG2 -#endif -#ifndef CBS_VP8 -#define CBS_VP8 CONFIG_CBS_VP8 -#endif -#ifndef CBS_VP9 -#define CBS_VP9 CONFIG_CBS_VP9 -#endif enum CBSContentType { // Unit content may contain some references to other structures, but all @@ -154,7 +112,7 @@ typedef struct CodedBitstreamType { // List of unit type descriptors for this codec. // Terminated by a descriptor with nb_unit_types equal to zero. - CodedBitstreamUnitTypeDescriptor *unit_types; + const CodedBitstreamUnitTypeDescriptor *unit_types; // Split frag->data into coded bitstream units, creating the // frag->units array. Fill data but not content on each unit. @@ -197,7 +155,7 @@ typedef struct CodedBitstreamType { // Helper functions for trace output. -void CBS_FUNC(trace_header)(CodedBitstreamContext *ctx, +void ff_cbs_trace_header(CodedBitstreamContext *ctx, const char *name); @@ -207,28 +165,28 @@ void CBS_FUNC(trace_header)(CodedBitstreamContext *ctx, // (i.e. only limited by the amount of bits used) and they lack // the ability to use subscripts. -int CBS_FUNC(read_unsigned)(CodedBitstreamContext *ctx, GetBitContext *gbc, +int ff_cbs_read_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, const int *subscripts, uint32_t *write_to, uint32_t range_min, uint32_t range_max); -int CBS_FUNC(read_simple_unsigned)(CodedBitstreamContext *ctx, GetBitContext *gbc, +int ff_cbs_read_simple_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, uint32_t *write_to); -int CBS_FUNC(write_unsigned)(CodedBitstreamContext *ctx, PutBitContext *pbc, +int ff_cbs_write_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, const int *subscripts, uint32_t value, uint32_t range_min, uint32_t range_max); -int CBS_FUNC(write_simple_unsigned)(CodedBitstreamContext *ctx, PutBitContext *pbc, +int ff_cbs_write_simple_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, uint32_t value); -int CBS_FUNC(read_signed)(CodedBitstreamContext *ctx, GetBitContext *gbc, +int ff_cbs_read_signed(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, const int *subscripts, int32_t *write_to, int32_t range_min, int32_t range_max); -int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, +int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, const int *subscripts, int32_t value, int32_t range_min, int32_t range_max); @@ -246,7 +204,6 @@ int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, #define MIN_INT_BITS(length) (-(INT64_C(1) << ((length) - 1))) -#if CBS_TRACE // Start of a syntax element during read tracing. #define CBS_TRACE_READ_START() \ GetBitContext trace_start; \ @@ -276,7 +233,7 @@ int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, } while (0) // End of a syntax element which is made up of subelements which -// are already traced, so we are only showing the value. +// are aleady traced, so we are only showing the value. #define CBS_TRACE_READ_END_VALUE_ONLY() \ do { \ if (ctx->trace_enable) { \ @@ -313,7 +270,7 @@ int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, } while (0) // End of a syntax element which is made up of subelements which are -// already traced, so we are only showing the value. This forges a +// aleady traced, so we are only showing the value. This forges a // PutBitContext to point to the position of the start of the syntax // element, but the other state doesn't matter because length is zero. #define CBS_TRACE_WRITE_END_VALUE_ONLY() \ @@ -327,17 +284,6 @@ int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, } \ } while (0) -#else // CBS_TRACE -#define CBS_TRACE_READ_START() do { } while (0) -#define CBS_TRACE_READ_END() do { } while (0) -#define CBS_TRACE_READ_END_NO_SUBSCRIPTS() do { } while (0) -#define CBS_TRACE_READ_END_VALUE_ONLY() do { } while (0) -#define CBS_TRACE_WRITE_START() do { } while (0) -#define CBS_TRACE_WRITE_END() do { } while (0) -#define CBS_TRACE_WRITE_END_NO_SUBSCRIPTS() do { } while (0) -#define CBS_TRACE_WRITE_END_VALUE_ONLY() do { } while (0) -#endif // CBS_TRACE - #define TYPE_LIST(...) { __VA_ARGS__ } #define CBS_UNIT_TYPE_POD(type_, structure) { \ .nb_unit_types = 1, \ @@ -389,16 +335,14 @@ int CBS_FUNC(write_signed)(CodedBitstreamContext *ctx, PutBitContext *pbc, #define CBS_UNIT_TYPE_END_OF_LIST { .nb_unit_types = 0 } -extern const CodedBitstreamType CBS_FUNC(type_apv); -extern const CodedBitstreamType CBS_FUNC(type_av1); -extern const CodedBitstreamType CBS_FUNC(type_h264); -extern const CodedBitstreamType CBS_FUNC(type_h265); -extern const CodedBitstreamType CBS_FUNC(type_h266); -extern const CodedBitstreamType CBS_FUNC(type_lcevc); -extern const CodedBitstreamType CBS_FUNC(type_jpeg); -extern const CodedBitstreamType CBS_FUNC(type_mpeg2); -extern const CodedBitstreamType CBS_FUNC(type_vp8); -extern const CodedBitstreamType CBS_FUNC(type_vp9); +extern const CodedBitstreamType ff_cbs_type_av1; +extern const CodedBitstreamType ff_cbs_type_h264; +extern const CodedBitstreamType ff_cbs_type_h265; +extern const CodedBitstreamType ff_cbs_type_h266; +extern const CodedBitstreamType ff_cbs_type_jpeg; +extern const CodedBitstreamType ff_cbs_type_mpeg2; +extern const CodedBitstreamType ff_cbs_type_vp8; +extern const CodedBitstreamType ff_cbs_type_vp9; #endif /* AVCODEC_CBS_INTERNAL_H */ diff --git a/icecat/media/ffvpx/libavcodec/cbs_vp9.c b/icecat/media/ffvpx/libavcodec/cbs_vp9.c deleted file mode 100644 index 37015f5c77..0000000000 --- a/icecat/media/ffvpx/libavcodec/cbs_vp9.c +++ /dev/null @@ -1,616 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/avassert.h" - -#include "cbs.h" -#include "cbs_internal.h" -#include "cbs_vp9.h" - - -static int cbs_vp9_read_s(CodedBitstreamContext *ctx, GetBitContext *gbc, - int width, const char *name, - const int *subscripts, int32_t *write_to) -{ - uint32_t magnitude; - int sign; - int32_t value; - - CBS_TRACE_READ_START(); - - if (get_bits_left(gbc) < width + 1) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid signed value at " - "%s: bitstream ended.\n", name); - return AVERROR_INVALIDDATA; - } - - magnitude = get_bits(gbc, width); - sign = get_bits1(gbc); - value = sign ? -(int32_t)magnitude : magnitude; - - CBS_TRACE_READ_END(); - - *write_to = value; - return 0; -} - -static int cbs_vp9_write_s(CodedBitstreamContext *ctx, PutBitContext *pbc, - int width, const char *name, - const int *subscripts, int32_t value) -{ - uint32_t magnitude; - int sign; - - CBS_TRACE_WRITE_START(); - - if (put_bits_left(pbc) < width + 1) - return AVERROR(ENOSPC); - - sign = value < 0; - magnitude = sign ? -value : value; - - put_bits(pbc, width, magnitude); - put_bits(pbc, 1, sign); - - CBS_TRACE_WRITE_END(); - - return 0; -} - -static int cbs_vp9_read_increment(CodedBitstreamContext *ctx, GetBitContext *gbc, - uint32_t range_min, uint32_t range_max, - const char *name, uint32_t *write_to) -{ - uint32_t value; - - CBS_TRACE_READ_START(); - - av_assert0(range_min <= range_max && range_max - range_min < 32); - - for (value = range_min; value < range_max;) { - if (get_bits_left(gbc) < 1) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid increment value at " - "%s: bitstream ended.\n", name); - return AVERROR_INVALIDDATA; - } - if (get_bits1(gbc)) - ++value; - else - break; - } - - CBS_TRACE_READ_END_NO_SUBSCRIPTS(); - - *write_to = value; - return 0; -} - -static int cbs_vp9_write_increment(CodedBitstreamContext *ctx, PutBitContext *pbc, - uint32_t range_min, uint32_t range_max, - const char *name, uint32_t value) -{ - int len; - - CBS_TRACE_WRITE_START(); - - av_assert0(range_min <= range_max && range_max - range_min < 8); - if (value < range_min || value > range_max) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "%s out of range: " - "%"PRIu32", but must be in [%"PRIu32",%"PRIu32"].\n", - name, value, range_min, range_max); - return AVERROR_INVALIDDATA; - } - - if (value == range_max) - len = range_max - range_min; - else - len = value - range_min + 1; - if (put_bits_left(pbc) < len) - return AVERROR(ENOSPC); - - if (len > 0) - put_bits(pbc, len, (1 << len) - 1 - (value != range_max)); - - CBS_TRACE_WRITE_END_NO_SUBSCRIPTS(); - - return 0; -} - -static int cbs_vp9_read_le(CodedBitstreamContext *ctx, GetBitContext *gbc, - int width, const char *name, - const int *subscripts, uint32_t *write_to) -{ - uint32_t value; - int b; - - CBS_TRACE_READ_START(); - - av_assert0(width % 8 == 0); - - if (get_bits_left(gbc) < width) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid le value at " - "%s: bitstream ended.\n", name); - return AVERROR_INVALIDDATA; - } - - value = 0; - for (b = 0; b < width; b += 8) - value |= get_bits(gbc, 8) << b; - - CBS_TRACE_READ_END(); - - *write_to = value; - return 0; -} - -static int cbs_vp9_write_le(CodedBitstreamContext *ctx, PutBitContext *pbc, - int width, const char *name, - const int *subscripts, uint32_t value) -{ - int b; - - CBS_TRACE_WRITE_START(); - - av_assert0(width % 8 == 0); - - if (put_bits_left(pbc) < width) - return AVERROR(ENOSPC); - - for (b = 0; b < width; b += 8) - put_bits(pbc, 8, value >> b & 0xff); - - CBS_TRACE_WRITE_END(); - - return 0; -} - -#define HEADER(name) do { \ - ff_cbs_trace_header(ctx, name); \ - } while (0) - -#define CHECK(call) do { \ - err = (call); \ - if (err < 0) \ - return err; \ - } while (0) - -#define FUNC_NAME(rw, codec, name) cbs_ ## codec ## _ ## rw ## _ ## name -#define FUNC_VP9(rw, name) FUNC_NAME(rw, vp9, name) -#define FUNC(name) FUNC_VP9(READWRITE, name) - -#define SUBSCRIPTS(subs, ...) (subs > 0 ? ((int[subs + 1]){ subs, __VA_ARGS__ }) : NULL) - -#define s(width, name) \ - xs(width, name, current->name, 0, ) -#define fs(width, name, subs, ...) \ - xf(width, name, current->name, subs, __VA_ARGS__) -#define ss(width, name, subs, ...) \ - xs(width, name, current->name, subs, __VA_ARGS__) - -#define READ -#define READWRITE read -#define RWContext GetBitContext - -#define f(width, name) do { \ - uint32_t value; \ - CHECK(ff_cbs_read_simple_unsigned(ctx, rw, width, #name, \ - &value)); \ - current->name = value; \ - } while (0) -#define xf(width, name, var, subs, ...) do { \ - uint32_t value; \ - CHECK(ff_cbs_read_unsigned(ctx, rw, width, #name, \ - SUBSCRIPTS(subs, __VA_ARGS__), \ - &value, 0, (1 << width) - 1)); \ - var = value; \ - } while (0) -#define xs(width, name, var, subs, ...) do { \ - int32_t value; \ - CHECK(cbs_vp9_read_s(ctx, rw, width, #name, \ - SUBSCRIPTS(subs, __VA_ARGS__), &value)); \ - var = value; \ - } while (0) - - -#define increment(name, min, max) do { \ - uint32_t value; \ - CHECK(cbs_vp9_read_increment(ctx, rw, min, max, #name, &value)); \ - current->name = value; \ - } while (0) - -#define fle(width, name, subs, ...) do { \ - CHECK(cbs_vp9_read_le(ctx, rw, width, #name, \ - SUBSCRIPTS(subs, __VA_ARGS__), ¤t->name)); \ - } while (0) - -#define delta_q(name) do { \ - uint8_t delta_coded; \ - int8_t delta_q; \ - xf(1, name.delta_coded, delta_coded, 0, ); \ - if (delta_coded) \ - xs(4, name.delta_q, delta_q, 0, ); \ - else \ - delta_q = 0; \ - current->name = delta_q; \ - } while (0) - -#define prob(name, subs, ...) do { \ - uint8_t prob_coded; \ - uint8_t prob; \ - xf(1, name.prob_coded, prob_coded, subs, __VA_ARGS__); \ - if (prob_coded) \ - xf(8, name.prob, prob, subs, __VA_ARGS__); \ - else \ - prob = 255; \ - current->name = prob; \ - } while (0) - -#define fixed(width, name, value) do { \ - av_unused uint32_t fixed_value; \ - CHECK(ff_cbs_read_unsigned(ctx, rw, width, #name, \ - 0, &fixed_value, value, value)); \ - } while (0) - -#define infer(name, value) do { \ - current->name = value; \ - } while (0) - -#define byte_alignment(rw) (get_bits_count(rw) % 8) - -#include "cbs_vp9_syntax_template.c" - -#undef READ -#undef READWRITE -#undef RWContext -#undef f -#undef xf -#undef xs -#undef increment -#undef fle -#undef delta_q -#undef prob -#undef fixed -#undef infer -#undef byte_alignment - - -#define WRITE -#define READWRITE write -#define RWContext PutBitContext - -#define f(width, name) do { \ - CHECK(ff_cbs_write_simple_unsigned(ctx, rw, width, #name, \ - current->name)); \ - } while (0) -#define xf(width, name, var, subs, ...) do { \ - CHECK(ff_cbs_write_unsigned(ctx, rw, width, #name, \ - SUBSCRIPTS(subs, __VA_ARGS__), \ - var, 0, (1 << width) - 1)); \ - } while (0) -#define xs(width, name, var, subs, ...) do { \ - CHECK(cbs_vp9_write_s(ctx, rw, width, #name, \ - SUBSCRIPTS(subs, __VA_ARGS__), var)); \ - } while (0) - -#define increment(name, min, max) do { \ - CHECK(cbs_vp9_write_increment(ctx, rw, min, max, #name, current->name)); \ - } while (0) - -#define fle(width, name, subs, ...) do { \ - CHECK(cbs_vp9_write_le(ctx, rw, width, #name, \ - SUBSCRIPTS(subs, __VA_ARGS__), current->name)); \ - } while (0) - -#define delta_q(name) do { \ - xf(1, name.delta_coded, !!current->name, 0, ); \ - if (current->name) \ - xs(4, name.delta_q, current->name, 0, ); \ - } while (0) - -#define prob(name, subs, ...) do { \ - xf(1, name.prob_coded, current->name != 255, subs, __VA_ARGS__); \ - if (current->name != 255) \ - xf(8, name.prob, current->name, subs, __VA_ARGS__); \ - } while (0) - -#define fixed(width, name, value) do { \ - CHECK(ff_cbs_write_unsigned(ctx, rw, width, #name, \ - 0, value, value, value)); \ - } while (0) - -#define infer(name, value) do { \ - if (current->name != (value)) { \ - av_log(ctx->log_ctx, AV_LOG_WARNING, "Warning: " \ - "%s does not match inferred value: " \ - "%"PRId64", but should be %"PRId64".\n", \ - #name, (int64_t)current->name, (int64_t)(value)); \ - } \ - } while (0) - -#define byte_alignment(rw) (put_bits_count(rw) % 8) - -#include "cbs_vp9_syntax_template.c" - -#undef WRITE -#undef READWRITE -#undef RWContext -#undef f -#undef xf -#undef xs -#undef increment -#undef fle -#undef delta_q -#undef prob -#undef fixed -#undef infer -#undef byte_alignment - - -static int cbs_vp9_split_fragment(CodedBitstreamContext *ctx, - CodedBitstreamFragment *frag, - int header) -{ - uint8_t superframe_header; - int err; - - if (frag->data_size == 0) - return AVERROR_INVALIDDATA; - - // Last byte in the packet. - superframe_header = frag->data[frag->data_size - 1]; - - if ((superframe_header & 0xe0) == 0xc0) { - VP9RawSuperframeIndex sfi = {0}; - GetBitContext gbc; - size_t index_size, pos; - int i; - - index_size = 2 + (((superframe_header & 0x18) >> 3) + 1) * - ((superframe_header & 0x07) + 1); - - if (index_size > frag->data_size) - return AVERROR_INVALIDDATA; - - err = init_get_bits(&gbc, frag->data + frag->data_size - index_size, - 8 * index_size); - if (err < 0) - return err; - - err = cbs_vp9_read_superframe_index(ctx, &gbc, &sfi); - if (err < 0) - return err; - - pos = 0; - for (i = 0; i <= sfi.frames_in_superframe_minus_1; i++) { - if (pos + sfi.frame_sizes[i] + index_size > frag->data_size) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Frame %d too large " - "in superframe: %"PRIu32" bytes.\n", - i, sfi.frame_sizes[i]); - return AVERROR_INVALIDDATA; - } - - err = ff_cbs_append_unit_data(frag, 0, - frag->data + pos, - sfi.frame_sizes[i], - frag->data_ref); - if (err < 0) - return err; - - pos += sfi.frame_sizes[i]; - } - if (pos + index_size != frag->data_size) { - av_log(ctx->log_ctx, AV_LOG_WARNING, "Extra padding at " - "end of superframe: %zu bytes.\n", - frag->data_size - (pos + index_size)); - } - - return 0; - - } else { - err = ff_cbs_append_unit_data(frag, 0, - frag->data, frag->data_size, - frag->data_ref); - if (err < 0) - return err; - } - - return 0; -} - -static int cbs_vp9_read_unit(CodedBitstreamContext *ctx, - CodedBitstreamUnit *unit) -{ - VP9RawFrame *frame; - GetBitContext gbc; - int err, pos; - - err = init_get_bits(&gbc, unit->data, 8 * unit->data_size); - if (err < 0) - return err; - - err = ff_cbs_alloc_unit_content(ctx, unit); - if (err < 0) - return err; - frame = unit->content; - - err = cbs_vp9_read_frame(ctx, &gbc, frame); - if (err < 0) - return err; - - pos = get_bits_count(&gbc); - av_assert0(pos % 8 == 0); - pos /= 8; - av_assert0(pos <= unit->data_size); - - if (pos == unit->data_size) { - // No data (e.g. a show-existing-frame frame). - } else { - frame->data_ref = av_buffer_ref(unit->data_ref); - if (!frame->data_ref) - return AVERROR(ENOMEM); - - frame->data = unit->data + pos; - frame->data_size = unit->data_size - pos; - } - - return 0; -} - -static int cbs_vp9_write_unit(CodedBitstreamContext *ctx, - CodedBitstreamUnit *unit, - PutBitContext *pbc) -{ - VP9RawFrame *frame = unit->content; - int err; - - err = cbs_vp9_write_frame(ctx, pbc, frame); - if (err < 0) - return err; - - // Frame must be byte-aligned. - av_assert0(put_bits_count(pbc) % 8 == 0); - - if (frame->data) { - if (frame->data_size > put_bits_left(pbc) / 8) - return AVERROR(ENOSPC); - - flush_put_bits(pbc); - memcpy(put_bits_ptr(pbc), frame->data, frame->data_size); - skip_put_bytes(pbc, frame->data_size); - } - - return 0; -} - -static int cbs_vp9_assemble_fragment(CodedBitstreamContext *ctx, - CodedBitstreamFragment *frag) -{ - int err; - - if (frag->nb_units == 1) { - // Output is just the content of the single frame. - - CodedBitstreamUnit *frame = &frag->units[0]; - - frag->data_ref = av_buffer_ref(frame->data_ref); - if (!frag->data_ref) - return AVERROR(ENOMEM); - - frag->data = frame->data; - frag->data_size = frame->data_size; - - } else { - // Build superframe out of frames. - - VP9RawSuperframeIndex sfi; - PutBitContext pbc; - AVBufferRef *ref; - uint8_t *data; - size_t size, max, pos; - int i, size_len; - - if (frag->nb_units > 8) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Too many frames to " - "make superframe: %d.\n", frag->nb_units); - return AVERROR(EINVAL); - } - - max = 0; - for (i = 0; i < frag->nb_units; i++) - if (max < frag->units[i].data_size) - max = frag->units[i].data_size; - - if (max < 2) - size_len = 1; - else - size_len = av_log2(max) / 8 + 1; - av_assert0(size_len <= 4); - - sfi.superframe_marker = VP9_SUPERFRAME_MARKER; - sfi.bytes_per_framesize_minus_1 = size_len - 1; - sfi.frames_in_superframe_minus_1 = frag->nb_units - 1; - - size = 2; - for (i = 0; i < frag->nb_units; i++) { - size += size_len + frag->units[i].data_size; - sfi.frame_sizes[i] = frag->units[i].data_size; - } - - ref = av_buffer_alloc(size + AV_INPUT_BUFFER_PADDING_SIZE); - if (!ref) - return AVERROR(ENOMEM); - data = ref->data; - memset(data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE); - - pos = 0; - for (i = 0; i < frag->nb_units; i++) { - av_assert0(size - pos > frag->units[i].data_size); - memcpy(data + pos, frag->units[i].data, - frag->units[i].data_size); - pos += frag->units[i].data_size; - } - av_assert0(size - pos == 2 + frag->nb_units * size_len); - - init_put_bits(&pbc, data + pos, size - pos); - - err = cbs_vp9_write_superframe_index(ctx, &pbc, &sfi); - if (err < 0) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to write " - "superframe index.\n"); - av_buffer_unref(&ref); - return err; - } - - av_assert0(put_bits_left(&pbc) == 0); - flush_put_bits(&pbc); - - frag->data_ref = ref; - frag->data = data; - frag->data_size = size; - } - - return 0; -} - -static av_cold void cbs_vp9_flush(CodedBitstreamContext *ctx) -{ - CodedBitstreamVP9Context *vp9 = ctx->priv_data; - - memset(vp9->ref, 0, sizeof(vp9->ref)); -} - -static CodedBitstreamUnitTypeDescriptor cbs_vp9_unit_types[] = { - CBS_UNIT_TYPE_INTERNAL_REF(0, VP9RawFrame, data), - CBS_UNIT_TYPE_END_OF_LIST -}; - -const CodedBitstreamType ff_cbs_type_vp9 = { - .codec_id = AV_CODEC_ID_VP9, - - .priv_data_size = sizeof(CodedBitstreamVP9Context), - - .unit_types = cbs_vp9_unit_types, - - .split_fragment = &cbs_vp9_split_fragment, - .read_unit = &cbs_vp9_read_unit, - .write_unit = &cbs_vp9_write_unit, - - .flush = &cbs_vp9_flush, - - .assemble_fragment = &cbs_vp9_assemble_fragment, -}; diff --git a/icecat/media/ffvpx/libavcodec/cbs_vp9.h b/icecat/media/ffvpx/libavcodec/cbs_vp9.h deleted file mode 100644 index 588765b873..0000000000 --- a/icecat/media/ffvpx/libavcodec/cbs_vp9.h +++ /dev/null @@ -1,221 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_CBS_VP9_H -#define AVCODEC_CBS_VP9_H - -#include -#include - -#include "cbs.h" - - -// Miscellaneous constants (section 3). -enum { - VP9_REFS_PER_FRAME = 3, - - VP9_MIN_TILE_WIDTH_B64 = 4, - VP9_MAX_TILE_WIDTH_B64 = 64, - - VP9_NUM_REF_FRAMES = 8, - VP9_MAX_REF_FRAMES = 4, - - VP9_MAX_SEGMENTS = 8, - VP9_SEG_LVL_MAX = 4, -}; - -// Frame types (section 7.2). -enum { - VP9_KEY_FRAME = 0, - VP9_NON_KEY_FRAME = 1, -}; - -// Frame sync bytes (section 7.2.1). -enum { - VP9_FRAME_SYNC_0 = 0x49, - VP9_FRAME_SYNC_1 = 0x83, - VP9_FRAME_SYNC_2 = 0x42, -}; - -// Color space values (section 7.2.2). -enum { - VP9_CS_UNKNOWN = 0, - VP9_CS_BT_601 = 1, - VP9_CS_BT_709 = 2, - VP9_CS_SMPTE_170 = 3, - VP9_CS_SMPTE_240 = 4, - VP9_CS_BT_2020 = 5, - VP9_CS_RESERVED = 6, - VP9_CS_RGB = 7, -}; - -// Reference frame types (section 7.4.12). -enum { - VP9_INTRA_FRAME = 0, - VP9_LAST_FRAME = 1, - VP9_GOLDEN_FRAME = 2, - VP9_ALTREF_FRAME = 3, -}; - -// Superframe properties (section B.3). -enum { - VP9_MAX_FRAMES_IN_SUPERFRAME = 8, - - VP9_SUPERFRAME_MARKER = 6, -}; - - -typedef struct VP9RawFrameHeader { - uint8_t frame_marker; - uint8_t profile_low_bit; - uint8_t profile_high_bit; - - uint8_t show_existing_frame; - uint8_t frame_to_show_map_idx; - - uint8_t frame_type; - uint8_t show_frame; - uint8_t error_resilient_mode; - - // Color config. - uint8_t ten_or_twelve_bit; - uint8_t color_space; - uint8_t color_range; - uint8_t subsampling_x; - uint8_t subsampling_y; - - uint8_t refresh_frame_flags; - - uint8_t intra_only; - uint8_t reset_frame_context; - - uint8_t ref_frame_idx[VP9_REFS_PER_FRAME]; - uint8_t ref_frame_sign_bias[VP9_MAX_REF_FRAMES]; - - uint8_t allow_high_precision_mv; - - uint8_t refresh_frame_context; - uint8_t frame_parallel_decoding_mode; - - uint8_t frame_context_idx; - - // Frame/render size. - uint8_t found_ref[VP9_REFS_PER_FRAME]; - uint16_t frame_width_minus_1; - uint16_t frame_height_minus_1; - uint8_t render_and_frame_size_different; - uint16_t render_width_minus_1; - uint16_t render_height_minus_1; - - // Interpolation filter. - uint8_t is_filter_switchable; - uint8_t raw_interpolation_filter_type; - - // Loop filter params. - uint8_t loop_filter_level; - uint8_t loop_filter_sharpness; - uint8_t loop_filter_delta_enabled; - uint8_t loop_filter_delta_update; - uint8_t update_ref_delta[VP9_MAX_REF_FRAMES]; - int8_t loop_filter_ref_deltas[VP9_MAX_REF_FRAMES]; - uint8_t update_mode_delta[2]; - int8_t loop_filter_mode_deltas[2]; - - // Quantization params. - uint8_t base_q_idx; - int8_t delta_q_y_dc; - int8_t delta_q_uv_dc; - int8_t delta_q_uv_ac; - - // Segmentation params. - uint8_t segmentation_enabled; - uint8_t segmentation_update_map; - uint8_t segmentation_tree_probs[7]; - uint8_t segmentation_temporal_update; - uint8_t segmentation_pred_prob[3]; - uint8_t segmentation_update_data; - uint8_t segmentation_abs_or_delta_update; - uint8_t feature_enabled[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]; - uint8_t feature_value[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]; - uint8_t feature_sign[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]; - - // Tile info. - uint8_t tile_cols_log2; - uint8_t tile_rows_log2; - - uint16_t header_size_in_bytes; -} VP9RawFrameHeader; - -typedef struct VP9RawFrame { - VP9RawFrameHeader header; - - uint8_t *data; - AVBufferRef *data_ref; - size_t data_size; -} VP9RawFrame; - -typedef struct VP9RawSuperframeIndex { - uint8_t superframe_marker; - uint8_t bytes_per_framesize_minus_1; - uint8_t frames_in_superframe_minus_1; - uint32_t frame_sizes[VP9_MAX_FRAMES_IN_SUPERFRAME]; -} VP9RawSuperframeIndex; - -typedef struct VP9RawSuperframe { - VP9RawFrame frames[VP9_MAX_FRAMES_IN_SUPERFRAME]; - VP9RawSuperframeIndex index; -} VP9RawSuperframe; - -typedef struct VP9ReferenceFrameState { - int frame_width; // RefFrameWidth - int frame_height; // RefFrameHeight - int subsampling_x; // RefSubsamplingX - int subsampling_y; // RefSubsamplingY - int bit_depth; // RefBitDepth -} VP9ReferenceFrameState; - -typedef struct CodedBitstreamVP9Context { - int profile; - - // Frame dimensions in 8x8 mode info blocks. - uint16_t mi_cols; - uint16_t mi_rows; - // Frame dimensions in 64x64 superblocks. - uint16_t sb64_cols; - uint16_t sb64_rows; - - int frame_width; - int frame_height; - - uint8_t subsampling_x; - uint8_t subsampling_y; - int bit_depth; - - int8_t loop_filter_ref_deltas[VP9_MAX_REF_FRAMES]; - int8_t loop_filter_mode_deltas[2]; - uint8_t segmentation_tree_probs[7]; - uint8_t segmentation_pred_prob[3]; - uint8_t feature_enabled[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]; - uint8_t feature_value[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]; - uint8_t feature_sign[VP9_MAX_SEGMENTS][VP9_SEG_LVL_MAX]; - - VP9ReferenceFrameState ref[VP9_NUM_REF_FRAMES]; -} CodedBitstreamVP9Context; - - -#endif /* AVCODEC_CBS_VP9_H */ diff --git a/icecat/media/ffvpx/libavcodec/cbs_vp9_syntax_template.c b/icecat/media/ffvpx/libavcodec/cbs_vp9_syntax_template.c deleted file mode 100644 index 0669cbed0c..0000000000 --- a/icecat/media/ffvpx/libavcodec/cbs_vp9_syntax_template.c +++ /dev/null @@ -1,484 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -static int FUNC(frame_sync_code)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - int err; - - fixed(8, frame_sync_byte_0, VP9_FRAME_SYNC_0); - fixed(8, frame_sync_byte_1, VP9_FRAME_SYNC_1); - fixed(8, frame_sync_byte_2, VP9_FRAME_SYNC_2); - - return 0; -} - -static int FUNC(color_config)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current, int profile) -{ - CodedBitstreamVP9Context *vp9 = ctx->priv_data; - int err; - - if (profile >= 2) { - f(1, ten_or_twelve_bit); - vp9->bit_depth = current->ten_or_twelve_bit ? 12 : 10; - } else - vp9->bit_depth = 8; - - f(3, color_space); - - if (current->color_space != VP9_CS_RGB) { - f(1, color_range); - if (profile == 1 || profile == 3) { - f(1, subsampling_x); - f(1, subsampling_y); - fixed(1, reserved_zero, 0); - } else { - infer(subsampling_x, 1); - infer(subsampling_y, 1); - } - } else { - infer(color_range, 1); - if (profile == 1 || profile == 3) { - infer(subsampling_x, 0); - infer(subsampling_y, 0); - fixed(1, reserved_zero, 0); - } - } - - vp9->subsampling_x = current->subsampling_x; - vp9->subsampling_y = current->subsampling_y; - - return 0; -} - -static int FUNC(frame_size)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - CodedBitstreamVP9Context *vp9 = ctx->priv_data; - int err; - - f(16, frame_width_minus_1); - f(16, frame_height_minus_1); - - vp9->frame_width = current->frame_width_minus_1 + 1; - vp9->frame_height = current->frame_height_minus_1 + 1; - - vp9->mi_cols = (vp9->frame_width + 7) >> 3; - vp9->mi_rows = (vp9->frame_height + 7) >> 3; - vp9->sb64_cols = (vp9->mi_cols + 7) >> 3; - vp9->sb64_rows = (vp9->mi_rows + 7) >> 3; - - return 0; -} - -static int FUNC(render_size)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - int err; - - f(1, render_and_frame_size_different); - - if (current->render_and_frame_size_different) { - f(16, render_width_minus_1); - f(16, render_height_minus_1); - } - - return 0; -} - -static int FUNC(frame_size_with_refs)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - CodedBitstreamVP9Context *vp9 = ctx->priv_data; - int err, i; - - for (i = 0; i < VP9_REFS_PER_FRAME; i++) { - fs(1, found_ref[i], 1, i); - if (current->found_ref[i]) { - VP9ReferenceFrameState *ref = - &vp9->ref[current->ref_frame_idx[i]]; - - vp9->frame_width = ref->frame_width; - vp9->frame_height = ref->frame_height; - - vp9->subsampling_x = ref->subsampling_x; - vp9->subsampling_y = ref->subsampling_y; - vp9->bit_depth = ref->bit_depth; - - break; - } - } - if (i >= VP9_REFS_PER_FRAME) - CHECK(FUNC(frame_size)(ctx, rw, current)); - else { - vp9->mi_cols = (vp9->frame_width + 7) >> 3; - vp9->mi_rows = (vp9->frame_height + 7) >> 3; - vp9->sb64_cols = (vp9->mi_cols + 7) >> 3; - vp9->sb64_rows = (vp9->mi_rows + 7) >> 3; - } - CHECK(FUNC(render_size)(ctx, rw, current)); - - return 0; -} - -static int FUNC(interpolation_filter)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - int err; - - f(1, is_filter_switchable); - if (!current->is_filter_switchable) - f(2, raw_interpolation_filter_type); - - return 0; -} - -static int FUNC(loop_filter_params)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - int err, i; - - f(6, loop_filter_level); - f(3, loop_filter_sharpness); - - f(1, loop_filter_delta_enabled); - if (current->loop_filter_delta_enabled) { - f(1, loop_filter_delta_update); - if (current->loop_filter_delta_update) { - for (i = 0; i < VP9_MAX_REF_FRAMES; i++) { - fs(1, update_ref_delta[i], 1, i); - if (current->update_ref_delta[i]) - ss(6, loop_filter_ref_deltas[i], 1, i); - } - for (i = 0; i < 2; i++) { - fs(1, update_mode_delta[i], 1, i); - if (current->update_mode_delta[i]) - ss(6, loop_filter_mode_deltas[i], 1, i); - } - } - } else { - infer(loop_filter_delta_update, 0); - } - - return 0; -} - -static int FUNC(quantization_params)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - int err; - - f(8, base_q_idx); - - delta_q(delta_q_y_dc); - delta_q(delta_q_uv_dc); - delta_q(delta_q_uv_ac); - - return 0; -} - -static int FUNC(segmentation_params)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - static const uint8_t segmentation_feature_bits[VP9_SEG_LVL_MAX] = { 8, 6, 2, 0 }; - static const uint8_t segmentation_feature_signed[VP9_SEG_LVL_MAX] = { 1, 1, 0, 0 }; - int err, i, j; - - f(1, segmentation_enabled); - - if (current->segmentation_enabled) { - f(1, segmentation_update_map); - if (current->segmentation_update_map) { - for (i = 0; i < 7; i++) - prob(segmentation_tree_probs[i], 1, i); - f(1, segmentation_temporal_update); - for (i = 0; i < 3; i++) { - if (current->segmentation_temporal_update) - prob(segmentation_pred_prob[i], 1, i); - else - infer(segmentation_pred_prob[i], 255); - } - } - - f(1, segmentation_update_data); - if (current->segmentation_update_data) { - f(1, segmentation_abs_or_delta_update); - for (i = 0; i < VP9_MAX_SEGMENTS; i++) { - for (j = 0; j < VP9_SEG_LVL_MAX; j++) { - fs(1, feature_enabled[i][j], 2, i, j); - if (current->feature_enabled[i][j] && - segmentation_feature_bits[j]) { - fs(segmentation_feature_bits[j], - feature_value[i][j], 2, i, j); - if (segmentation_feature_signed[j]) - fs(1, feature_sign[i][j], 2, i, j); - else - infer(feature_sign[i][j], 0); - } else { - infer(feature_value[i][j], 0); - infer(feature_sign[i][j], 0); - } - } - } - } - } else { - infer(segmentation_update_data, 0); - } - - return 0; -} - -static int FUNC(tile_info)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - CodedBitstreamVP9Context *vp9 = ctx->priv_data; - int min_log2_tile_cols, max_log2_tile_cols; - int err; - - min_log2_tile_cols = 0; - while ((VP9_MAX_TILE_WIDTH_B64 << min_log2_tile_cols) < vp9->sb64_cols) - ++min_log2_tile_cols; - max_log2_tile_cols = 0; - while ((vp9->sb64_cols >> (max_log2_tile_cols + 1)) >= VP9_MIN_TILE_WIDTH_B64) - ++max_log2_tile_cols; - - increment(tile_cols_log2, min_log2_tile_cols, max_log2_tile_cols); - - increment(tile_rows_log2, 0, 2); - - return 0; -} - -static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrameHeader *current) -{ - CodedBitstreamVP9Context *vp9 = ctx->priv_data; - int err, i; - - f(2, frame_marker); - - f(1, profile_low_bit); - f(1, profile_high_bit); - vp9->profile = (current->profile_high_bit << 1) + current->profile_low_bit; - if (vp9->profile == 3) - fixed(1, reserved_zero, 0); - - f(1, show_existing_frame); - if (current->show_existing_frame) { - f(3, frame_to_show_map_idx); - infer(header_size_in_bytes, 0); - infer(refresh_frame_flags, 0x00); - infer(loop_filter_level, 0); - return 0; - } - - f(1, frame_type); - f(1, show_frame); - f(1, error_resilient_mode); - - if (current->frame_type == VP9_KEY_FRAME) { - CHECK(FUNC(frame_sync_code)(ctx, rw, current)); - CHECK(FUNC(color_config)(ctx, rw, current, vp9->profile)); - CHECK(FUNC(frame_size)(ctx, rw, current)); - CHECK(FUNC(render_size)(ctx, rw, current)); - - infer(refresh_frame_flags, 0xff); - - } else { - if (current->show_frame == 0) - f(1, intra_only); - else - infer(intra_only, 0); - - if (current->error_resilient_mode == 0) - f(2, reset_frame_context); - else - infer(reset_frame_context, 0); - - if (current->intra_only == 1) { - CHECK(FUNC(frame_sync_code)(ctx, rw, current)); - - if (vp9->profile > 0) { - CHECK(FUNC(color_config)(ctx, rw, current, vp9->profile)); - } else { - infer(color_space, 1); - infer(subsampling_x, 1); - infer(subsampling_y, 1); - vp9->bit_depth = 8; - - vp9->subsampling_x = current->subsampling_x; - vp9->subsampling_y = current->subsampling_y; - } - - f(8, refresh_frame_flags); - - CHECK(FUNC(frame_size)(ctx, rw, current)); - CHECK(FUNC(render_size)(ctx, rw, current)); - } else { - f(8, refresh_frame_flags); - - for (i = 0; i < VP9_REFS_PER_FRAME; i++) { - fs(3, ref_frame_idx[i], 1, i); - fs(1, ref_frame_sign_bias[VP9_LAST_FRAME + i], - 1, VP9_LAST_FRAME + i); - } - - CHECK(FUNC(frame_size_with_refs)(ctx, rw, current)); - f(1, allow_high_precision_mv); - CHECK(FUNC(interpolation_filter)(ctx, rw, current)); - } - } - - if (current->error_resilient_mode == 0) { - f(1, refresh_frame_context); - f(1, frame_parallel_decoding_mode); - } else { - infer(refresh_frame_context, 0); - infer(frame_parallel_decoding_mode, 1); - } - - f(2, frame_context_idx); - - CHECK(FUNC(loop_filter_params)(ctx, rw, current)); - CHECK(FUNC(quantization_params)(ctx, rw, current)); - CHECK(FUNC(segmentation_params)(ctx, rw, current)); - CHECK(FUNC(tile_info)(ctx, rw, current)); - - f(16, header_size_in_bytes); - - for (i = 0; i < VP9_NUM_REF_FRAMES; i++) { - if (current->refresh_frame_flags & (1 << i)) { - vp9->ref[i] = (VP9ReferenceFrameState) { - .frame_width = vp9->frame_width, - .frame_height = vp9->frame_height, - .subsampling_x = vp9->subsampling_x, - .subsampling_y = vp9->subsampling_y, - .bit_depth = vp9->bit_depth, - }; - } - } - - // Update top-level loop filter and segmentation state with changes - // from this frame. - if (current->frame_type == VP9_KEY_FRAME || - current->intra_only || - current->error_resilient_mode) { - // setup_past_independence() - fill with the initial values. - - vp9->loop_filter_ref_deltas[VP9_INTRA_FRAME] = 1; - vp9->loop_filter_ref_deltas[VP9_LAST_FRAME] = 0; - vp9->loop_filter_ref_deltas[VP9_GOLDEN_FRAME] = -1; - vp9->loop_filter_ref_deltas[VP9_ALTREF_FRAME] = -1; - - vp9->loop_filter_mode_deltas[0] = 0; - vp9->loop_filter_mode_deltas[1] = 0; - - memset(vp9->feature_enabled, 0, sizeof(vp9->feature_enabled)); - memset(vp9->feature_value, 0, sizeof(vp9->feature_value)); - memset(vp9->feature_sign, 0, sizeof(vp9->feature_sign)); - } - - // Modify previous state based on updates in this frame. - if (current->loop_filter_delta_update) { - for (i = 0; i < 4; i++) { - if (current->update_ref_delta[i]) - vp9->loop_filter_ref_deltas[i] = - current->loop_filter_ref_deltas[i]; - } - for (i = 0; i < 2; i++) { - if (current->update_mode_delta[i]) - vp9->loop_filter_mode_deltas[i] = - current->loop_filter_mode_deltas[i]; - } - } - - if (current->segmentation_update_data) { - memcpy(vp9->feature_enabled, current->feature_enabled, - sizeof(vp9->feature_enabled)); - memcpy(vp9->feature_value, current->feature_value, - sizeof(vp9->feature_value)); - memcpy(vp9->feature_sign, current->feature_sign, - sizeof(vp9->feature_sign)); - - if (current->segmentation_update_map) { - memcpy(vp9->segmentation_tree_probs, - current->segmentation_tree_probs, - sizeof(vp9->segmentation_tree_probs)); - memcpy(vp9->segmentation_pred_prob, - current->segmentation_pred_prob, - sizeof(vp9->segmentation_pred_prob)); - } - } - - av_log(ctx->log_ctx, AV_LOG_DEBUG, "Frame: size %dx%d " - "subsample %dx%d bit_depth %d tiles %dx%d.\n", - vp9->frame_width, vp9->frame_height, - vp9->subsampling_x, vp9->subsampling_y, - vp9->bit_depth, 1 << current->tile_cols_log2, - 1 << current->tile_rows_log2); - - return 0; -} - -static int FUNC(trailing_bits)(CodedBitstreamContext *ctx, RWContext *rw) -{ - int err; - while (byte_alignment(rw) != 0) - fixed(1, zero_bit, 0); - - return 0; -} - -static int FUNC(frame)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawFrame *current) -{ - int err; - - HEADER("Frame"); - - CHECK(FUNC(uncompressed_header)(ctx, rw, ¤t->header)); - - CHECK(FUNC(trailing_bits)(ctx, rw)); - - return 0; -} - -static int FUNC(superframe_index)(CodedBitstreamContext *ctx, RWContext *rw, - VP9RawSuperframeIndex *current) -{ - int err, i; - - HEADER("Superframe Index"); - - f(3, superframe_marker); - f(2, bytes_per_framesize_minus_1); - f(3, frames_in_superframe_minus_1); - - for (i = 0; i <= current->frames_in_superframe_minus_1; i++) { - // Surprise little-endian! - fle(8 * (current->bytes_per_framesize_minus_1 + 1), - frame_sizes[i], 1, i); - } - - f(3, superframe_marker); - f(2, bytes_per_framesize_minus_1); - f(3, frames_in_superframe_minus_1); - - return 0; -} diff --git a/icecat/media/ffvpx/libavcodec/codec.h b/icecat/media/ffvpx/libavcodec/codec.h index f509e5d94e..f7541ffc42 100644 --- a/icecat/media/ffvpx/libavcodec/codec.h +++ b/icecat/media/ffvpx/libavcodec/codec.h @@ -80,6 +80,21 @@ */ #define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6) +#if FF_API_SUBFRAMES +/** + * Codec can output multiple frames per AVPacket + * Normally demuxers return one frame at a time, demuxers which do not do + * are connected to a parser to split what they return into proper frames. + * This flag is reserved to the very rare category of codecs which have a + * bitstream that cannot be split into frames without timeconsuming + * operations like full decoding. Demuxers carrying such bitstreams thus + * may return multiple frames in a packet. This has many disadvantages like + * prohibiting stream copy in many cases thus it should only be considered + * as a last resort. + */ +#define AV_CODEC_CAP_SUBFRAMES (1 << 8) +#endif + /** * Codec is experimental and is thus avoided in favor of non experimental * encoders diff --git a/icecat/media/ffvpx/libavcodec/codec_desc.c b/icecat/media/ffvpx/libavcodec/codec_desc.c index a9f21f8152..b734d07ded 100644 --- a/icecat/media/ffvpx/libavcodec/codec_desc.c +++ b/icecat/media/ffvpx/libavcodec/codec_desc.c @@ -1277,7 +1277,7 @@ static const AVCodecDescriptor codec_descriptors[] = { .type = AVMEDIA_TYPE_VIDEO, .name = "hevc", .long_name = NULL_IF_CONFIG_SMALL("H.265 / HEVC (High Efficiency Video Coding)"), - .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS | AV_CODEC_PROP_REORDER, + .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, .profiles = NULL_IF_CONFIG_SMALL(ff_hevc_profiles), }, { @@ -1648,7 +1648,7 @@ static const AVCodecDescriptor codec_descriptors[] = { .type = AVMEDIA_TYPE_VIDEO, .name = "av1", .long_name = NULL_IF_CONFIG_SMALL("Alliance for Open Media AV1"), - .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS, + .props = AV_CODEC_PROP_LOSSY, .profiles = NULL_IF_CONFIG_SMALL(ff_av1_profiles), }, { @@ -1985,30 +1985,6 @@ static const AVCodecDescriptor codec_descriptors[] = { .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS, .mime_types= MT("image/jxl"), }, - { - .id = AV_CODEC_ID_APV, - .type = AVMEDIA_TYPE_VIDEO, - .name = "apv", - .long_name = NULL_IF_CONFIG_SMALL("Advanced Professional Video"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_PRORES_RAW, - .type = AVMEDIA_TYPE_VIDEO, - .name = "prores_raw", - .long_name = NULL_IF_CONFIG_SMALL("Apple ProRes RAW"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - .profiles = NULL_IF_CONFIG_SMALL(ff_prores_raw_profiles), - }, - { - .id = AV_CODEC_ID_JPEGXS, - .type = AVMEDIA_TYPE_VIDEO, - .name = "jpegxs", - .long_name = NULL_IF_CONFIG_SMALL("JPEG XS"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY | - AV_CODEC_PROP_LOSSLESS, - .mime_types= MT("image/jxs"), - }, /* various PCM "codecs" */ { @@ -2636,69 +2612,6 @@ static const AVCodecDescriptor codec_descriptors[] = { .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA Xbox"), .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, }, - { - .id = AV_CODEC_ID_ADPCM_SANYO, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_sanyo", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM Sanyo"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_IMA_HVQM4, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_ima_hvqm4", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA HVQM4"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_IMA_PDA, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_ima_pda", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA PlayDate"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_N64, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_n64", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM Silicon Graphics N64"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_IMA_HVQM2, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_ima_hvqm2", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA HVQM2"), - .props = AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_IMA_MAGIX, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_ima_magix", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA Magix"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_PSXC, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_psxc", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM Playstation C"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_CIRCUS, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_circus", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM Circus"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_ADPCM_IMA_ESCAPE, - .type = AVMEDIA_TYPE_AUDIO, - .name = "adpcm_ima_escape", - .long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA Acorn Escape"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, /* AMR */ { @@ -3553,20 +3466,6 @@ static const AVCodecDescriptor codec_descriptors[] = { .long_name = NULL_IF_CONFIG_SMALL("LC3 (Low Complexity Communication Codec)"), .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, }, - { - .id = AV_CODEC_ID_G728, - .type = AVMEDIA_TYPE_AUDIO, - .name = "g728", - .long_name = NULL_IF_CONFIG_SMALL("G.728"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, - { - .id = AV_CODEC_ID_AHX, - .type = AVMEDIA_TYPE_AUDIO, - .name = "ahx", - .long_name = NULL_IF_CONFIG_SMALL("CRI AHX"), - .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY, - }, /* subtitle codecs */ { @@ -3750,12 +3649,6 @@ static const AVCodecDescriptor codec_descriptors[] = { .long_name = NULL_IF_CONFIG_SMALL("ARIB STD-B24 caption"), .profiles = NULL_IF_CONFIG_SMALL(ff_arib_caption_profiles), }, - { - .id = AV_CODEC_ID_IVTV_VBI, - .type = AVMEDIA_TYPE_SUBTITLE, - .name = "ivtv_vbi", - .long_name = NULL_IF_CONFIG_SMALL("ivtv VBI captions"), - }, /* other kind of codecs and pseudo-codecs */ { @@ -3838,16 +3731,9 @@ static const AVCodecDescriptor codec_descriptors[] = { }, { .id = AV_CODEC_ID_LCEVC, - .type = AVMEDIA_TYPE_VIDEO, + .type = AVMEDIA_TYPE_DATA, .name = "lcevc", .long_name = NULL_IF_CONFIG_SMALL("LCEVC (Low Complexity Enhancement Video Coding) / MPEG-5 LCEVC / MPEG-5 part 2"), - .props = AV_CODEC_PROP_ENHANCEMENT, - }, - { - .id = AV_CODEC_ID_SMPTE_436M_ANC, - .type = AVMEDIA_TYPE_DATA, - .name = "smpte_436m_anc", - .long_name = NULL_IF_CONFIG_SMALL("MXF SMPTE-436M ANC"), }, { .id = AV_CODEC_ID_MPEG2TS, diff --git a/icecat/media/ffvpx/libavcodec/codec_desc.h b/icecat/media/ffvpx/libavcodec/codec_desc.h index 1186433c90..96afd20208 100644 --- a/icecat/media/ffvpx/libavcodec/codec_desc.h +++ b/icecat/media/ffvpx/libavcodec/codec_desc.h @@ -96,14 +96,6 @@ typedef struct AVCodecDescriptor { */ #define AV_CODEC_PROP_FIELDS (1 << 4) -/** - * Video codec contains enhancement information meant to be applied to other - * existing frames, and can't generate usable image data on its own. - * A standalone decoder is unlikely to be available for it and should not - * be expected. - */ -#define AV_CODEC_PROP_ENHANCEMENT (1 << 5) - /** * Subtitle codec is bitmap based * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field. diff --git a/icecat/media/ffvpx/libavcodec/codec_id.h b/icecat/media/ffvpx/libavcodec/codec_id.h index 6529f0a6bc..97b70c5bf5 100644 --- a/icecat/media/ffvpx/libavcodec/codec_id.h +++ b/icecat/media/ffvpx/libavcodec/codec_id.h @@ -329,9 +329,6 @@ enum AVCodecID { AV_CODEC_ID_DNXUC, AV_CODEC_ID_RV60, AV_CODEC_ID_JPEGXL_ANIM, - AV_CODEC_ID_APV, - AV_CODEC_ID_PRORES_RAW, - AV_CODEC_ID_JPEGXS, /* various PCM "codecs" */ AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs @@ -427,15 +424,6 @@ enum AVCodecID { AV_CODEC_ID_ADPCM_IMA_ACORN, AV_CODEC_ID_ADPCM_XMD, AV_CODEC_ID_ADPCM_IMA_XBOX, - AV_CODEC_ID_ADPCM_SANYO, - AV_CODEC_ID_ADPCM_IMA_HVQM4, - AV_CODEC_ID_ADPCM_IMA_PDA, - AV_CODEC_ID_ADPCM_N64, - AV_CODEC_ID_ADPCM_IMA_HVQM2, - AV_CODEC_ID_ADPCM_IMA_MAGIX, - AV_CODEC_ID_ADPCM_PSXC, - AV_CODEC_ID_ADPCM_CIRCUS, - AV_CODEC_ID_ADPCM_IMA_ESCAPE, /* AMR */ AV_CODEC_ID_AMR_NB = 0x12000, @@ -564,8 +552,6 @@ enum AVCodecID { AV_CODEC_ID_OSQ, AV_CODEC_ID_QOA, AV_CODEC_ID_LC3, - AV_CODEC_ID_G728, - AV_CODEC_ID_AHX, /* subtitle codecs */ AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. @@ -595,7 +581,6 @@ enum AVCodecID { AV_CODEC_ID_HDMV_TEXT_SUBTITLE, AV_CODEC_ID_TTML, AV_CODEC_ID_ARIB_CAPTION, - AV_CODEC_ID_IVTV_VBI, /* other specific kind of codecs (generally used for attachments) */ AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. @@ -613,7 +598,6 @@ enum AVCodecID { AV_CODEC_ID_BIN_DATA, AV_CODEC_ID_SMPTE_2038, AV_CODEC_ID_LCEVC, - AV_CODEC_ID_SMPTE_436M_ANC, AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it diff --git a/icecat/media/ffvpx/libavcodec/codec_internal.h b/icecat/media/ffvpx/libavcodec/codec_internal.h index eea982e56c..5b2db74590 100644 --- a/icecat/media/ffvpx/libavcodec/codec_internal.h +++ b/icecat/media/ffvpx/libavcodec/codec_internal.h @@ -22,6 +22,7 @@ #include #include "libavutil/attributes.h" +#include "avcodec.h" #include "codec.h" #include "config.h" @@ -101,7 +102,6 @@ typedef struct FFCodecDefault { struct AVCodecContext; struct AVSubtitle; struct AVPacket; -enum AVCodecConfig; enum FFCodecType { /* The codec is a decoder using the decode callback; @@ -133,12 +133,7 @@ typedef struct FFCodec { /** * Internal codec capabilities FF_CODEC_CAP_*. */ - unsigned caps_internal:24; - - /** - * Is this a decoder? - */ - unsigned is_decoder:1; + unsigned caps_internal:27; /** * This field determines the video color ranges supported by an encoder. @@ -146,12 +141,6 @@ typedef struct FFCodec { */ unsigned color_ranges:2; - /** - * This field determines the alpha modes supported by an encoder. - * Should be set to a bitmask of AVALPHA_MODE_PREMULTIPLIED and AVALPHA_MODE_STRAIGHT. - */ - unsigned alpha_modes:2; - /** * This field determines the type of the codec (decoder/encoder) * and also the exact callback cb implemented by the codec. @@ -279,7 +268,7 @@ typedef struct FFCodec { * ff_default_get_supported_config() will be used. `out_num_configs` will * always be set to a valid pointer. */ - int (*get_supported_config)(const struct AVCodecContext *avctx, + int (*get_supported_config)(const AVCodecContext *avctx, const AVCodec *codec, enum AVCodecConfig config, unsigned flags, @@ -287,31 +276,6 @@ typedef struct FFCodec { int *out_num_configs); } FFCodec; -static av_always_inline const FFCodec *ffcodec(const AVCodec *codec) -{ - return (const FFCodec*)codec; -} - -/** - * Internal version of av_codec_is_encoder(). Must not be called with - * a NULL AVCodec*. - */ -static inline int ff_codec_is_encoder(const AVCodec *avcodec) -{ - const FFCodec *const codec = ffcodec(avcodec); - return !codec->is_decoder; -} - -/** - * Internal version of av_codec_is_decoder(). Must not be called with - * a NULL AVCodec*. - */ -static inline int ff_codec_is_decoder(const AVCodec *avcodec) -{ - const FFCodec *const codec = ffcodec(avcodec); - return codec->is_decoder; -} - /** * Default implementation for avcodec_get_supported_config(). Will return the * relevant fields from AVCodec if present, or NULL otherwise. @@ -319,7 +283,7 @@ static inline int ff_codec_is_decoder(const AVCodec *avcodec) * For AVCODEC_CONFIG_COLOR_RANGE, the output will depend on the bitmask in * FFCodec.color_ranges, with a value of 0 returning NULL. */ -int ff_default_get_supported_config(const struct AVCodecContext *avctx, +int ff_default_get_supported_config(const AVCodecContext *avctx, const AVCodec *codec, enum AVCodecConfig config, unsigned flags, @@ -345,56 +309,27 @@ int ff_default_get_supported_config(const struct AVCodecContext *avctx, #endif #define FF_CODEC_DECODE_CB(func) \ - .is_decoder = 1, \ .cb_type = FF_CODEC_CB_TYPE_DECODE, \ .cb.decode = (func) #define FF_CODEC_DECODE_SUB_CB(func) \ - .is_decoder = 1, \ .cb_type = FF_CODEC_CB_TYPE_DECODE_SUB, \ .cb.decode_sub = (func) #define FF_CODEC_RECEIVE_FRAME_CB(func) \ - .is_decoder = 1, \ .cb_type = FF_CODEC_CB_TYPE_RECEIVE_FRAME, \ .cb.receive_frame = (func) #define FF_CODEC_ENCODE_CB(func) \ - .is_decoder = 0, \ .cb_type = FF_CODEC_CB_TYPE_ENCODE, \ .cb.encode = (func) #define FF_CODEC_ENCODE_SUB_CB(func) \ - .is_decoder = 0, \ .cb_type = FF_CODEC_CB_TYPE_ENCODE_SUB, \ .cb.encode_sub = (func) #define FF_CODEC_RECEIVE_PACKET_CB(func) \ - .is_decoder = 0, \ .cb_type = FF_CODEC_CB_TYPE_RECEIVE_PACKET, \ .cb.receive_packet = (func) -#ifdef __clang__ -#define DISABLE_DEPRECATION_WARNINGS FF_DISABLE_DEPRECATION_WARNINGS -#define ENABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS -#else -#define DISABLE_DEPRECATION_WARNINGS -#define ENABLE_DEPRECATION_WARNINGS -#endif - -#define CODEC_CH_LAYOUTS(...) CODEC_CH_LAYOUTS_ARRAY(((const AVChannelLayout[]) { __VA_ARGS__, { 0 } })) -#define CODEC_CH_LAYOUTS_ARRAY(array) CODEC_ARRAY(ch_layouts, (array)) - -#define CODEC_SAMPLERATES(...) CODEC_SAMPLERATES_ARRAY(((const int[]) { __VA_ARGS__, 0 })) -#define CODEC_SAMPLERATES_ARRAY(array) CODEC_ARRAY(supported_samplerates, (array)) - -#define CODEC_SAMPLEFMTS(...) CODEC_SAMPLEFMTS_ARRAY(((const enum AVSampleFormat[]) { __VA_ARGS__, AV_SAMPLE_FMT_NONE })) -#define CODEC_SAMPLEFMTS_ARRAY(array) CODEC_ARRAY(sample_fmts, (array)) - -#define CODEC_FRAMERATES(...) CODEC_FRAMERATES_ARRAY(((const AVRational[]) { __VA_ARGS__, { 0, 0 } })) -#define CODEC_FRAMERATES_ARRAY(array) CODEC_ARRAY(supported_framerates, (array)) - -#define CODEC_PIXFMTS(...) CODEC_PIXFMTS_ARRAY(((const enum AVPixelFormat[]) { __VA_ARGS__, AV_PIX_FMT_NONE })) -#define CODEC_PIXFMTS_ARRAY(array) CODEC_ARRAY(pix_fmts, (array)) - -#define CODEC_ARRAY(field, array) \ - DISABLE_DEPRECATION_WARNINGS \ - .p.field = (array) \ - ENABLE_DEPRECATION_WARNINGS +static av_always_inline const FFCodec *ffcodec(const AVCodec *codec) +{ + return (const FFCodec*)codec; +} #endif /* AVCODEC_CODEC_INTERNAL_H */ diff --git a/icecat/media/ffvpx/libavcodec/codec_list.c b/icecat/media/ffvpx/libavcodec/codec_list.c index 77ed5707b6..7c6b0ceacd 100644 --- a/icecat/media/ffvpx/libavcodec/codec_list.c +++ b/icecat/media/ffvpx/libavcodec/codec_list.c @@ -64,38 +64,5 @@ static const FFCodec * const codec_list[] = { #endif #if CONFIG_LIBAOM_AV1_ENCODER &ff_libaom_av1_encoder, -#endif -#if CONFIG_AAC_MEDIACODEC_DECODER - &ff_aac_mediacodec_decoder, -#endif -#if CONFIG_AV1_MEDIACODEC_DECODER - &ff_av1_mediacodec_decoder, -#endif -#if CONFIG_VP8_MEDIACODEC_DECODER - &ff_vp8_mediacodec_decoder, -#endif -#if CONFIG_VP9_MEDIACODEC_DECODER - &ff_vp9_mediacodec_decoder, -#endif -#if CONFIG_H264_MEDIACODEC_DECODER - &ff_h264_mediacodec_decoder, -#endif -#if CONFIG_HEVC_MEDIACODEC_DECODER - &ff_hevc_mediacodec_decoder, -#endif -#if CONFIG_AV1_MEDIACODEC_ENCODER - &ff_av1_mediacodec_encoder, -#endif -#if CONFIG_VP8_MEDIACODEC_ENCODER - &ff_vp8_mediacodec_encoder, -#endif -#if CONFIG_VP9_MEDIACODEC_ENCODER - &ff_vp9_mediacodec_encoder, -#endif -#if CONFIG_H264_MEDIACODEC_ENCODER - &ff_h264_mediacodec_encoder, -#endif -#if CONFIG_HEVC_MEDIACODEC_ENCODER - &ff_hevc_mediacodec_encoder, #endif NULL }; diff --git a/icecat/media/ffvpx/libavcodec/codec_par.c b/icecat/media/ffvpx/libavcodec/codec_par.c index ddf349ceea..790ea01d10 100644 --- a/icecat/media/ffvpx/libavcodec/codec_par.c +++ b/icecat/media/ffvpx/libavcodec/codec_par.c @@ -51,7 +51,6 @@ static void codec_parameters_reset(AVCodecParameters *par) par->framerate = (AVRational){ 0, 1 }; par->profile = AV_PROFILE_UNKNOWN; par->level = AV_LEVEL_UNKNOWN; - par->alpha_mode = AVALPHA_MODE_UNSPECIFIED; } AVCodecParameters *avcodec_parameters_alloc(void) @@ -166,7 +165,6 @@ int avcodec_parameters_from_context(AVCodecParameters *par, par->sample_aspect_ratio = codec->sample_aspect_ratio; par->video_delay = codec->has_b_frames; par->framerate = codec->framerate; - par->alpha_mode = codec->alpha_mode; break; case AVMEDIA_TYPE_AUDIO: par->format = codec->sample_fmt; @@ -231,7 +229,6 @@ int avcodec_parameters_to_context(AVCodecContext *codec, codec->sample_aspect_ratio = par->sample_aspect_ratio; codec->has_b_frames = par->video_delay; codec->framerate = par->framerate; - codec->alpha_mode = par->alpha_mode; break; case AVMEDIA_TYPE_AUDIO: codec->sample_fmt = par->format; diff --git a/icecat/media/ffvpx/libavcodec/codec_par.h b/icecat/media/ffvpx/libavcodec/codec_par.h index 2697605d4d..f4b9bb5c06 100644 --- a/icecat/media/ffvpx/libavcodec/codec_par.h +++ b/icecat/media/ffvpx/libavcodec/codec_par.h @@ -148,7 +148,7 @@ typedef struct AVCodecParameters { * durations. Should be set to { 0, 1 } when some frames have differing * durations or if the value is not known. * - * @note This field corresponds to values that are stored in codec-level + * @note This field correponds to values that are stored in codec-level * headers and is typically overridden by container/transport-layer * timestamps, when available. It should thus be used only as a last resort, * when no higher-level timing information is available. @@ -212,11 +212,6 @@ typedef struct AVCodecParameters { * Audio only. Number of samples to skip after a discontinuity. */ int seek_preroll; - - /** - * Video with alpha channel only. Alpha channel handling - */ - enum AVAlphaMode alpha_mode; } AVCodecParameters; /** diff --git a/icecat/media/ffvpx/libavcodec/dct.h b/icecat/media/ffvpx/libavcodec/dct.h index 17135207bd..17c881a695 100644 --- a/icecat/media/ffvpx/libavcodec/dct.h +++ b/icecat/media/ffvpx/libavcodec/dct.h @@ -27,11 +27,11 @@ #include #include -void ff_j_rev_dct(int16_t data[64]); -void ff_j_rev_dct4(int16_t data[64]); -void ff_j_rev_dct2(int16_t data[64]); -void ff_j_rev_dct1(int16_t data[64]); -void ff_jref_idct_put(uint8_t *dest, ptrdiff_t line_size, int16_t block[64]); -void ff_jref_idct_add(uint8_t *dest, ptrdiff_t line_size, int16_t block[64]); +void ff_j_rev_dct(int16_t *data); +void ff_j_rev_dct4(int16_t *data); +void ff_j_rev_dct2(int16_t *data); +void ff_j_rev_dct1(int16_t *data); +void ff_jref_idct_put(uint8_t *dest, ptrdiff_t line_size, int16_t *block); +void ff_jref_idct_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block); #endif /* AVCODEC_DCT_H */ diff --git a/icecat/media/ffvpx/libavcodec/decode.c b/icecat/media/ffvpx/libavcodec/decode.c index ac90ecb6cb..cac7e620d2 100644 --- a/icecat/media/ffvpx/libavcodec/decode.c +++ b/icecat/media/ffvpx/libavcodec/decode.c @@ -47,9 +47,6 @@ #include "codec_desc.h" #include "codec_internal.h" #include "decode.h" -#if CONFIG_EXIF -#include "exif.h" -#endif #include "hwaccel_internal.h" #include "hwconfig.h" #include "internal.h" @@ -96,17 +93,10 @@ typedef struct DecodeContext { */ uint64_t side_data_pref_mask; -#if CONFIG_LIBLCEVC_DEC - struct { - FFLCEVCContext *ctx; - int frame; - enum AVPixelFormat format; - int base_width; - int base_height; - int width; - int height; - } lcevc; -#endif + FFLCEVCContext *lcevc; + int lcevc_frame; + int width; + int height; } DecodeContext; static DecodeContext *decode_ctx(AVCodecInternal *avci) @@ -182,6 +172,10 @@ static int extract_packet_props(AVCodecInternal *avci, const AVPacket *pkt) av_packet_unref(avci->last_pkt_props); if (pkt) { ret = av_packet_copy_props(avci->last_pkt_props, pkt); +#if FF_API_FRAME_PKT + if (!ret) + avci->last_pkt_props->stream_index = pkt->size; // Needed for ff_decode_frame_props(). +#endif } return ret; } @@ -223,7 +217,7 @@ fail: #if !HAVE_THREADS #define ff_thread_get_packet(avctx, pkt) (AVERROR_BUG) -#define ff_thread_receive_frame(avctx, frame, flags) (AVERROR_BUG) +#define ff_thread_receive_frame(avctx, frame) (AVERROR_BUG) #endif static int decode_get_packet(AVCodecContext *avctx, AVPacket *pkt) @@ -450,6 +444,14 @@ static inline int decode_simple_internal(AVCodecContext *avctx, AVFrame *frame, if (!(codec->caps_internal & FF_CODEC_CAP_SETS_PKT_DTS)) frame->pkt_dts = pkt->dts; + if (avctx->codec->type == AVMEDIA_TYPE_VIDEO) { +#if FF_API_FRAME_PKT +FF_DISABLE_DEPRECATION_WARNINGS + if(!avctx->has_b_frames) + frame->pkt_pos = pkt->pos; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + } emms_c(); if (avctx->codec->type == AVMEDIA_TYPE_VIDEO) { @@ -505,6 +507,10 @@ static inline int decode_simple_internal(AVCodecContext *avctx, AVFrame *frame, pkt->pts = AV_NOPTS_VALUE; pkt->dts = AV_NOPTS_VALUE; if (!(codec->caps_internal & FF_CODEC_CAP_SETS_FRAME_PROPS)) { +#if FF_API_FRAME_PKT + // See extract_packet_props() comment. + avci->last_pkt_props->stream_index = avci->last_pkt_props->stream_index - consumed; +#endif avci->last_pkt_props->pts = AV_NOPTS_VALUE; avci->last_pkt_props->dts = AV_NOPTS_VALUE; } @@ -577,8 +583,6 @@ static int fill_frame_props(const AVCodecContext *avctx, AVFrame *frame) frame->color_range = avctx->color_range; if (frame->chroma_location == AVCHROMA_LOC_UNSPECIFIED) frame->chroma_location = avctx->chroma_sample_location; - if (frame->alpha_mode == AVALPHA_MODE_UNSPECIFIED) - frame->alpha_mode = avctx->alpha_mode; if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { if (!frame->sample_aspect_ratio.num) frame->sample_aspect_ratio = avctx->sample_aspect_ratio; @@ -650,15 +654,14 @@ int ff_decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) return ret; } -static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame, - unsigned flags) +static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame) { AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); int ret, ok; if (avctx->active_thread_type & FF_THREAD_FRAME) - ret = ff_thread_receive_frame(avctx, frame, flags); + ret = ff_thread_receive_frame(avctx, frame); else ret = ff_decode_receive_frame_internal(avctx, frame); @@ -683,25 +686,28 @@ static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame, return ret; } +#if FF_API_FRAME_KEY +FF_DISABLE_DEPRECATION_WARNINGS + frame->key_frame = !!(frame->flags & AV_FRAME_FLAG_KEY); +FF_ENABLE_DEPRECATION_WARNINGS +#endif +#if FF_API_INTERLACED_FRAME +FF_DISABLE_DEPRECATION_WARNINGS + frame->interlaced_frame = !!(frame->flags & AV_FRAME_FLAG_INTERLACED); + frame->top_field_first = !!(frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST); +FF_ENABLE_DEPRECATION_WARNINGS +#endif frame->best_effort_timestamp = guess_correct_pts(dc, frame->pts, frame->pkt_dts); /* the only case where decode data is not set should be decoders * that do not call ff_get_buffer() */ - av_assert0(frame->private_ref || + av_assert0((frame->private_ref && frame->private_ref->size == sizeof(FrameDecodeData)) || !(avctx->codec->capabilities & AV_CODEC_CAP_DR1)); if (frame->private_ref) { - FrameDecodeData *fdd = frame->private_ref; - - if (fdd->hwaccel_priv_post_process) { - ret = fdd->hwaccel_priv_post_process(avctx, frame); - if (ret < 0) { - av_frame_unref(frame); - return ret; - } - } + FrameDecodeData *fdd = (FrameDecodeData*)frame->private_ref->data; if (fdd->post_process) { ret = fdd->post_process(avctx, frame); @@ -714,7 +720,7 @@ static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame, } /* free the per-frame decode data */ - av_refstruct_unref(&frame->private_ref); + av_buffer_unref(&frame->private_ref); return ret; } @@ -744,7 +750,7 @@ int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacke dc->draining_started = 1; if (!avci->buffer_frame->buf[0] && !dc->draining_started) { - ret = decode_receive_frame_internal(avctx, avci->buffer_frame, 0); + ret = decode_receive_frame_internal(avctx, avci->buffer_frame); if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) return ret; } @@ -761,8 +767,8 @@ static int apply_cropping(AVCodecContext *avctx, AVFrame *frame) (frame->crop_top + frame->crop_bottom) >= frame->height) { av_log(avctx, AV_LOG_WARNING, "Invalid cropping information set by a decoder: " - "%zu/%zu/%zu/%zu (frame size %dx%d). " - "This is a bug, please report it\n", + "%"SIZE_SPECIFIER"/%"SIZE_SPECIFIER"/%"SIZE_SPECIFIER"/%"SIZE_SPECIFIER" " + "(frame size %dx%d). This is a bug, please report it\n", frame->crop_left, frame->crop_right, frame->crop_top, frame->crop_bottom, frame->width, frame->height); frame->crop_left = 0; @@ -806,15 +812,18 @@ fail: return AVERROR_BUG; } -int ff_decode_receive_frame(AVCodecContext *avctx, AVFrame *frame, unsigned flags) +int ff_decode_receive_frame(AVCodecContext *avctx, AVFrame *frame) { AVCodecInternal *avci = avctx->internal; int ret; + if (!avcodec_is_open(avctx) || !av_codec_is_decoder(avctx->codec)) + return AVERROR(EINVAL); + if (avci->buffer_frame->buf[0]) { av_frame_move_ref(frame, avci->buffer_frame); } else { - ret = decode_receive_frame_internal(avctx, frame, flags); + ret = decode_receive_frame_internal(avctx, frame); if (ret < 0) return ret; } @@ -831,6 +840,53 @@ int ff_decode_receive_frame(AVCodecContext *avctx, AVFrame *frame, unsigned flag avctx->frame_num++; +#if FF_API_DROPCHANGED + if (avctx->flags & AV_CODEC_FLAG_DROPCHANGED) { + + if (avctx->frame_num == 1) { + avci->initial_format = frame->format; + switch(avctx->codec_type) { + case AVMEDIA_TYPE_VIDEO: + avci->initial_width = frame->width; + avci->initial_height = frame->height; + break; + case AVMEDIA_TYPE_AUDIO: + avci->initial_sample_rate = frame->sample_rate ? frame->sample_rate : + avctx->sample_rate; + ret = av_channel_layout_copy(&avci->initial_ch_layout, &frame->ch_layout); + if (ret < 0) + goto fail; + break; + } + } + + if (avctx->frame_num > 1) { + int changed = avci->initial_format != frame->format; + + switch(avctx->codec_type) { + case AVMEDIA_TYPE_VIDEO: + changed |= avci->initial_width != frame->width || + avci->initial_height != frame->height; + break; + case AVMEDIA_TYPE_AUDIO: + changed |= avci->initial_sample_rate != frame->sample_rate || + avci->initial_sample_rate != avctx->sample_rate || + av_channel_layout_compare(&avci->initial_ch_layout, &frame->ch_layout); + break; + } + + if (changed) { + avci->changed_frames_dropped++; + av_log(avctx, AV_LOG_INFO, "dropped changed frame #%"PRId64" pts %"PRId64 + " drop count: %d \n", + avctx->frame_num, frame->pts, + avci->changed_frames_dropped); + ret = AVERROR_INPUT_CHANGED; + goto fail; + } + } + } +#endif return 0; fail: av_frame_unref(frame); @@ -998,6 +1054,7 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *avctx, const enum AVPixelFormat *fmt) { + const AVPixFmtDescriptor *desc; const AVCodecHWConfig *config; int i, n; @@ -1024,13 +1081,12 @@ enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *avctx, // No device or other setup, so we have to choose from things which // don't any other external information. - // Choose the first software format + // If the last element of the list is a software format, choose it // (this should be best software format if any exist). - for (n = 0; fmt[n] != AV_PIX_FMT_NONE; n++) { - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt[n]); - if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) - return fmt[n]; - } + for (n = 0; fmt[n] != AV_PIX_FMT_NONE; n++); + desc = av_pix_fmt_desc_get(fmt[n - 1]); + if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) + return fmt[n - 1]; // Finally, traverse the list in order and choose the first entry // with no external dependencies (if there is no hardware configuration @@ -1409,80 +1465,6 @@ static int side_data_stereo3d_merge(AVFrameSideData *sd_frame, return 0; } -#if CONFIG_EXIF -static int side_data_exif_parse(AVFrame *dst, const AVPacketSideData *sd_pkt) -{ - AVExifMetadata ifd = { 0 }; - AVExifEntry *entry = NULL; - AVBufferRef *buf = NULL; - AVFrameSideData *sd_frame; - int ret; - - ret = av_exif_parse_buffer(NULL, sd_pkt->data, sd_pkt->size, &ifd, - AV_EXIF_TIFF_HEADER); - if (ret < 0) - return ret; - - ret = av_exif_get_entry(NULL, &ifd, av_exif_get_tag_id("Orientation"), 0, &entry); - if (ret < 0) - goto end; - - if (!entry) { - ret = av_exif_ifd_to_dict(NULL, &ifd, &dst->metadata); - if (ret < 0) - goto end; - - sd_frame = av_frame_side_data_new(&dst->side_data, &dst->nb_side_data, AV_FRAME_DATA_EXIF, - sd_pkt->size, 0); - if (sd_frame) - memcpy(sd_frame->data, sd_pkt->data, sd_pkt->size); - ret = sd_frame ? 0 : AVERROR(ENOMEM); - - goto end; - } else if (entry->count <= 0 || entry->type != AV_TIFF_SHORT) { - ret = AVERROR_INVALIDDATA; - goto end; - } - - // If a display matrix already exists in the frame, give it priority - if (av_frame_side_data_get(dst->side_data, dst->nb_side_data, AV_FRAME_DATA_DISPLAYMATRIX)) - goto finish; - - sd_frame = av_frame_side_data_new(&dst->side_data, &dst->nb_side_data, AV_FRAME_DATA_DISPLAYMATRIX, - sizeof(int32_t) * 9, 0); - if (!sd_frame) { - ret = AVERROR(ENOMEM); - goto end; - } - - ret = av_exif_orientation_to_matrix((int32_t *)sd_frame->data, entry->value.uint[0]); - if (ret < 0) - goto end; - -finish: - av_exif_remove_entry(NULL, &ifd, entry->id, 0); - - ret = av_exif_ifd_to_dict(NULL, &ifd, &dst->metadata); - if (ret < 0) - goto end; - - ret = av_exif_write(NULL, &ifd, &buf, AV_EXIF_TIFF_HEADER); - if (ret < 0) - goto end; - - if (!av_frame_side_data_add(&dst->side_data, &dst->nb_side_data, AV_FRAME_DATA_EXIF, &buf, 0)) { - ret = AVERROR(ENOMEM); - goto end; - } - - ret = 0; -end: - av_buffer_unref(&buf); - av_exif_free(&ifd); - return ret; -} -#endif - static int side_data_map(AVFrame *dst, const AVPacketSideData *sd_src, int nb_sd_src, const SideDataMap *map) @@ -1509,23 +1491,11 @@ static int side_data_map(AVFrame *dst, continue; } - switch (type_pkt) { -#if CONFIG_EXIF - case AV_PKT_DATA_EXIF: { - int ret = side_data_exif_parse(dst, sd_pkt); - if (ret < 0) - return ret; - break; - } -#endif - default: - sd_frame = av_frame_new_side_data(dst, type_frame, sd_pkt->size); - if (!sd_frame) - return AVERROR(ENOMEM); + sd_frame = av_frame_new_side_data(dst, type_frame, sd_pkt->size); + if (!sd_frame) + return AVERROR(ENOMEM); - memcpy(sd_frame->data, sd_pkt->data, sd_pkt->size); - break; - } + memcpy(sd_frame->data, sd_pkt->data, sd_pkt->size); } return 0; @@ -1560,6 +1530,12 @@ int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, frame->pts = pkt->pts; frame->duration = pkt->duration; +#if FF_API_FRAME_PKT +FF_DISABLE_DEPRECATION_WARNINGS + frame->pkt_pos = pkt->pos; + frame->pkt_size = pkt->size; +FF_ENABLE_DEPRECATION_WARNINGS +#endif ret = side_data_map(frame, pkt->side_data, pkt->side_data_elems, ff_sd_global_map); if (ret < 0) @@ -1594,21 +1570,17 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) if (ret < 0) return ret; - for (int i = 0; i < avctx->nb_decoded_side_data; i++) { - const AVFrameSideData *src = avctx->decoded_side_data[i]; - if (av_frame_get_side_data(frame, src->type)) - continue; - ret = av_frame_side_data_clone(&frame->side_data, &frame->nb_side_data, src, 0); - if (ret < 0) - return ret; - } - if (!(ffcodec(avctx->codec)->caps_internal & FF_CODEC_CAP_SETS_FRAME_PROPS)) { const AVPacket *pkt = avctx->internal->last_pkt_props; ret = ff_decode_frame_props_from_pkt(avctx, frame, pkt); if (ret < 0) return ret; +#if FF_API_FRAME_PKT +FF_DISABLE_DEPRECATION_WARNINGS + frame->pkt_size = pkt->stream_index; +FF_ENABLE_DEPRECATION_WARNINGS +#endif } ret = fill_frame_props(avctx, frame); @@ -1627,33 +1599,6 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) } break; } - -#if CONFIG_LIBLCEVC_DEC - AVCodecInternal *avci = avctx->internal; - DecodeContext *dc = decode_ctx(avci); - - dc->lcevc.frame = dc->lcevc.ctx && avctx->codec_type == AVMEDIA_TYPE_VIDEO && - av_frame_get_side_data(frame, AV_FRAME_DATA_LCEVC); - - if (dc->lcevc.frame) { - int ret = ff_lcevc_parse_frame(dc->lcevc.ctx, frame, &dc->lcevc.format, - &dc->lcevc.width, &dc->lcevc.height, avctx); - if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) - return ret; - - // force get_buffer2() to allocate the base frame using the same dimensions - // as the final enhanced frame, in order to prevent reinitializing the buffer - // pools unnecessarely - if (!ret && dc->lcevc.width && dc->lcevc.height) { - dc->lcevc.base_width = frame->width; - dc->lcevc.base_height = frame->height; - frame->width = dc->lcevc.width; - frame->height = dc->lcevc.height; - } else - dc->lcevc.frame = 0; - } -#endif - return 0; } @@ -1678,95 +1623,75 @@ static void validate_avframe_allocation(AVCodecContext *avctx, AVFrame *frame) } } -static void decode_data_free(AVRefStructOpaque unused, void *obj) +static void decode_data_free(void *opaque, uint8_t *data) { - FrameDecodeData *fdd = obj; + FrameDecodeData *fdd = (FrameDecodeData*)data; if (fdd->post_process_opaque_free) fdd->post_process_opaque_free(fdd->post_process_opaque); if (fdd->hwaccel_priv_free) fdd->hwaccel_priv_free(fdd->hwaccel_priv); + + av_freep(&fdd); } -int ff_attach_decode_data(AVCodecContext *avctx, AVFrame *frame) +int ff_attach_decode_data(AVFrame *frame) { + AVBufferRef *fdd_buf; FrameDecodeData *fdd; av_assert1(!frame->private_ref); - av_refstruct_unref(&frame->private_ref); + av_buffer_unref(&frame->private_ref); - fdd = av_refstruct_alloc_ext(sizeof(*fdd), 0, NULL, decode_data_free); + fdd = av_mallocz(sizeof(*fdd)); if (!fdd) return AVERROR(ENOMEM); - frame->private_ref = fdd; + fdd_buf = av_buffer_create((uint8_t*)fdd, sizeof(*fdd), decode_data_free, + NULL, AV_BUFFER_FLAG_READONLY); + if (!fdd_buf) { + av_freep(&fdd); + return AVERROR(ENOMEM); + } -#if CONFIG_LIBLCEVC_DEC + frame->private_ref = fdd_buf; + + return 0; +} + +static void update_frame_props(AVCodecContext *avctx, AVFrame *frame) +{ AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); - if (!dc->lcevc.frame) { - dc->lcevc.frame = dc->lcevc.ctx && avctx->codec_type == AVMEDIA_TYPE_VIDEO && - av_frame_get_side_data(frame, AV_FRAME_DATA_LCEVC); + dc->lcevc_frame = dc->lcevc && avctx->codec_type == AVMEDIA_TYPE_VIDEO && + av_frame_get_side_data(frame, AV_FRAME_DATA_LCEVC); - if (dc->lcevc.frame) { - int ret = ff_lcevc_parse_frame(dc->lcevc.ctx, frame, &dc->lcevc.format, - &dc->lcevc.width, &dc->lcevc.height, avctx); - if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) - return ret; - - if (!ret && dc->lcevc.width && dc->lcevc.height) { - dc->lcevc.base_width = frame->width; - dc->lcevc.base_height = frame->height; - } else - dc->lcevc.frame = 0; - } + if (dc->lcevc_frame) { + dc->width = frame->width; + dc->height = frame->height; + frame->width = frame->width * 2 / FFMAX(frame->sample_aspect_ratio.den, 1); + frame->height = frame->height * 2 / FFMAX(frame->sample_aspect_ratio.num, 1); } - if (dc->lcevc.frame) { - FFLCEVCFrame *frame_ctx; - int ret; +} - if (fdd->post_process || !dc->lcevc.width || !dc->lcevc.height) { - dc->lcevc.frame = 0; - return 0; - } +static void attach_post_process_data(AVCodecContext *avctx, AVFrame *frame) +{ + AVCodecInternal *avci = avctx->internal; + DecodeContext *dc = decode_ctx(avci); - frame_ctx = av_mallocz(sizeof(*frame_ctx)); - if (!frame_ctx) - return AVERROR(ENOMEM); + if (dc->lcevc_frame) { + FrameDecodeData *fdd = (FrameDecodeData*)frame->private_ref->data; - frame_ctx->frame = av_frame_alloc(); - if (!frame_ctx->frame) { - av_free(frame_ctx); - return AVERROR(ENOMEM); - } - - frame_ctx->lcevc = av_refstruct_ref(dc->lcevc.ctx); - frame_ctx->frame->width = dc->lcevc.width; - frame_ctx->frame->height = dc->lcevc.height; - frame_ctx->frame->format = dc->lcevc.format; - avctx->bits_per_raw_sample = av_pix_fmt_desc_get(dc->lcevc.format)->comp[0].depth; - - frame->width = dc->lcevc.base_width; - frame->height = dc->lcevc.base_height; - - ret = avctx->get_buffer2(avctx, frame_ctx->frame, 0); - if (ret < 0) { - ff_lcevc_unref(frame_ctx); - return ret; - } - - validate_avframe_allocation(avctx, frame_ctx->frame); - - fdd->post_process_opaque = frame_ctx; + fdd->post_process_opaque = av_refstruct_ref(dc->lcevc); fdd->post_process_opaque_free = ff_lcevc_unref; fdd->post_process = ff_lcevc_process; - } - dc->lcevc.frame = 0; -#endif - return 0; + frame->width = dc->width; + frame->height = dc->height; + } + dc->lcevc_frame = 0; } int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) @@ -1775,7 +1700,7 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) int override_dimensions = 1; int ret; - av_assert0(ff_codec_is_decoder(avctx->codec)); + av_assert0(av_codec_is_decoder(avctx->codec)); if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { if ((unsigned)avctx->width > INT_MAX - STRIDE_ALIGN || @@ -1814,6 +1739,7 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) } } else { avctx->sw_pix_fmt = avctx->pix_fmt; + update_frame_props(avctx, frame); } ret = avctx->get_buffer2(avctx, frame, flags); @@ -1822,10 +1748,12 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) validate_avframe_allocation(avctx, frame); - ret = ff_attach_decode_data(avctx, frame); + ret = ff_attach_decode_data(frame); if (ret < 0) goto fail; + attach_post_process_data(avctx, frame); + end: if (avctx->codec_type == AVMEDIA_TYPE_VIDEO && !override_dimensions && !(ffcodec(avctx->codec)->caps_internal & FF_CODEC_CAP_EXPORTS_CROPPING)) { @@ -1919,9 +1847,14 @@ int ff_progress_frame_alloc(AVCodecContext *avctx, ProgressFrame *f) int ff_progress_frame_get_buffer(AVCodecContext *avctx, ProgressFrame *f, int flags) { - int ret = ff_progress_frame_alloc(avctx, f); - if (ret < 0) - return ret; + int ret; + + check_progress_consistency(f); + if (!f->f) { + ret = ff_progress_frame_alloc(avctx, f); + if (ret < 0) + return ret; + } ret = ff_thread_get_buffer(avctx, f->progress->f, flags); if (ret < 0) { @@ -2007,7 +1940,7 @@ static av_cold void progress_frame_pool_free_entry_cb(AVRefStructOpaque opaque, av_frame_free(&progress->f); } -av_cold int ff_decode_preinit(AVCodecContext *avctx) +int ff_decode_preinit(AVCodecContext *avctx) { AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); @@ -2127,15 +2060,16 @@ av_cold int ff_decode_preinit(AVCodecContext *avctx) return ret; if (!(avctx->export_side_data & AV_CODEC_EXPORT_DATA_ENHANCEMENTS)) { - if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { -#if CONFIG_LIBLCEVC_DEC - ret = ff_lcevc_alloc(&dc->lcevc.ctx, avctx); - if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) - return ret; -#endif - } + ret = ff_lcevc_alloc(&dc->lcevc); + if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) + return ret; } +#if FF_API_DROPCHANGED + if (avctx->flags & AV_CODEC_FLAG_DROPCHANGED) + av_log(avctx, AV_LOG_WARNING, "The dropchanged flag is deprecated.\n"); +#endif + return 0; } @@ -2309,7 +2243,7 @@ int ff_copy_palette(void *dst, const AVPacket *src, void *logctx) return 1; } else if (pal) { av_log(logctx, AV_LOG_ERROR, - "Palette size %zu is wrong\n", size); + "Palette size %"SIZE_SPECIFIER" is wrong\n", size); } return 0; } @@ -2343,7 +2277,7 @@ int ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, void **hwaccel_picture_pr return 0; } -av_cold void ff_decode_flush_buffers(AVCodecContext *avctx) +void ff_decode_flush_buffers(AVCodecContext *avctx) { AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); @@ -2361,136 +2295,23 @@ av_cold void ff_decode_flush_buffers(AVCodecContext *avctx) dc->draining_started = 0; } -av_cold AVCodecInternal *ff_decode_internal_alloc(void) +AVCodecInternal *ff_decode_internal_alloc(void) { return av_mallocz(sizeof(DecodeContext)); } -av_cold void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext *src) +void ff_decode_internal_sync(AVCodecContext *dst, const AVCodecContext *src) { const DecodeContext *src_dc = decode_ctx(src->internal); DecodeContext *dst_dc = decode_ctx(dst->internal); - dst_dc->initial_pict_type = src_dc->initial_pict_type; - dst_dc->intra_only_flag = src_dc->intra_only_flag; - dst_dc->side_data_pref_mask = src_dc->side_data_pref_mask; -#if CONFIG_LIBLCEVC_DEC - av_refstruct_replace(&dst_dc->lcevc.ctx, src_dc->lcevc.ctx); - dst_dc->lcevc.width = src_dc->lcevc.width; - dst_dc->lcevc.height = src_dc->lcevc.height; - dst_dc->lcevc.format = src_dc->lcevc.format; -#endif + av_refstruct_replace(&dst_dc->lcevc, src_dc->lcevc); } -av_cold void ff_decode_internal_uninit(AVCodecContext *avctx) +void ff_decode_internal_uninit(AVCodecContext *avctx) { -#if CONFIG_LIBLCEVC_DEC AVCodecInternal *avci = avctx->internal; DecodeContext *dc = decode_ctx(avci); - av_refstruct_unref(&dc->lcevc.ctx); -#endif + av_refstruct_unref(&dc->lcevc); } - -#if CONFIG_EXIF -static int attach_displaymatrix(AVCodecContext *avctx, AVFrame *frame, int orientation) -{ - AVFrameSideData *sd = NULL; - int32_t *matrix; - int ret; - /* invalid orientation */ - if (orientation < 1 || orientation > 8) - return AVERROR_INVALIDDATA; - ret = ff_frame_new_side_data(avctx, frame, AV_FRAME_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9, &sd); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Could not allocate frame side data: %s\n", av_err2str(ret)); - return ret; - } - if (sd) { - matrix = (int32_t *) sd->data; - ret = av_exif_orientation_to_matrix(matrix, orientation); - } - - return ret; -} - -static int exif_attach_ifd(AVCodecContext *avctx, AVFrame *frame, const AVExifMetadata *ifd, AVBufferRef **pbuf) -{ - const AVExifEntry *orient = NULL; - AVExifMetadata *cloned = NULL; - int ret; - - for (size_t i = 0; i < ifd->count; i++) { - const AVExifEntry *entry = &ifd->entries[i]; - if (entry->id == av_exif_get_tag_id("Orientation") && - entry->count > 0 && entry->type == AV_TIFF_SHORT) { - orient = entry; - break; - } - } - - if (orient) { - av_log(avctx, AV_LOG_DEBUG, "found EXIF orientation: %" PRIu64 "\n", orient->value.uint[0]); - ret = attach_displaymatrix(avctx, frame, orient->value.uint[0]); - if (ret < 0) { - av_log(avctx, AV_LOG_WARNING, "unable to attach displaymatrix from EXIF\n"); - } else { - cloned = av_exif_clone_ifd(ifd); - if (!cloned) { - ret = AVERROR(ENOMEM); - goto end; - } - av_exif_remove_entry(avctx, cloned, orient->id, 0); - ifd = cloned; - } - } - - ret = av_exif_ifd_to_dict(avctx, ifd, &frame->metadata); - if (ret < 0) - goto end; - - if (cloned || !*pbuf) { - av_buffer_unref(pbuf); - ret = av_exif_write(avctx, ifd, pbuf, AV_EXIF_TIFF_HEADER); - if (ret < 0) - goto end; - } - - ret = ff_frame_new_side_data_from_buf(avctx, frame, AV_FRAME_DATA_EXIF, pbuf); - if (ret < 0) - goto end; - - ret = 0; - -end: - av_buffer_unref(pbuf); - av_exif_free(cloned); - av_free(cloned); - return ret; -} - -int ff_decode_exif_attach_ifd(AVCodecContext *avctx, AVFrame *frame, const AVExifMetadata *ifd) -{ - AVBufferRef *dummy = NULL; - return exif_attach_ifd(avctx, frame, ifd, &dummy); -} - -int ff_decode_exif_attach_buffer(AVCodecContext *avctx, AVFrame *frame, AVBufferRef **pbuf, - enum AVExifHeaderMode header_mode) -{ - int ret; - AVBufferRef *data = *pbuf; - AVExifMetadata ifd = { 0 }; - - ret = av_exif_parse_buffer(avctx, data->data, data->size, &ifd, header_mode); - if (ret < 0) - goto end; - - ret = exif_attach_ifd(avctx, frame, &ifd, pbuf); - -end: - av_buffer_unref(pbuf); - av_exif_free(&ifd); - return ret; -} -#endif diff --git a/icecat/media/ffvpx/libavcodec/decode.h b/icecat/media/ffvpx/libavcodec/decode.h index 5a7ab64c29..2c3719a8d0 100644 --- a/icecat/media/ffvpx/libavcodec/decode.h +++ b/icecat/media/ffvpx/libavcodec/decode.h @@ -47,11 +47,7 @@ typedef struct FrameDecodeData { /** * Per-frame private data for hwaccels. - * - * Same as @ref post_process, but used only by some hwaccels to retrieve or - * finalize frames, and executed first. */ - int (*hwaccel_priv_post_process)(void *logctx, AVFrame *frame); void *hwaccel_priv; void (*hwaccel_priv_free)(void *priv); } FrameDecodeData; @@ -86,7 +82,7 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame); int ff_decode_get_hw_frames_ctx(AVCodecContext *avctx, enum AVHWDeviceType dev_type); -int ff_attach_decode_data(AVCodecContext *avctx, AVFrame *frame); +int ff_attach_decode_data(AVFrame *frame); /** * Check whether the side-data of src contains a palette of @@ -115,10 +111,8 @@ int ff_set_sar(AVCodecContext *avctx, AVRational sar); * instead of calling get_format() directly. * * The list of pixel formats must contain at least one valid entry, and is - * terminated with AV_PIX_FMT_NONE. If it is possible to decode to software, - * the first entry after the last hwaccel one in the list must be the most - * accurate software format, followed by less accurate ones in order of - * preference. + * terminated with AV_PIX_FMT_NONE. If it is possible to decode to software, + * the last entry in the list must be the most accurate software format. * If it is not possible to decode to software, AVCodecContext.sw_pix_fmt * must be set before calling this function. */ @@ -226,34 +220,4 @@ int ff_decode_content_light_new(const AVCodecContext *avctx, AVFrame *frame, int ff_decode_content_light_new_ext(const AVCodecContext *avctx, AVFrameSideData ***sd, int *nb_sd, struct AVContentLightMetadata **clm); - -enum AVExifHeaderMode; - -/** - * Attach the data buffer to the frame. This is mostly a wrapper for - * av_side_data_new_from_buffer, but it checks if the orientation tag is - * present in the provided EXIF buffer. If it is, it zeroes it out and - * attaches that information as an AV_FRAME_DATA_DISPLAYMATRIX instead - * of including it in the AV_FRAME_DATA_EXIF side data buffer. - * - * *buf is ALWAYS consumed by this function and NULL written in its place, even - * on failure. - */ -int ff_decode_exif_attach_buffer(AVCodecContext *avctx, AVFrame *frame, AVBufferRef **buf, - enum AVExifHeaderMode header_mode); - -struct AVExifMetadata; - -/** - * Attach an already-parsed EXIF metadata struct to the frame as a side data - * buffer. It writes the EXIF IFD into the buffer and attaches the buffer to - * the frame. - * - * If the metadata struct contains an orientation tag, it will be zeroed before - * writing, and instead, an AV_FRAME_DATA_DISPLAYMATRIX will be attached in - * addition to the AV_FRAME_DATA_EXIF side data. - */ -int ff_decode_exif_attach_ifd(AVCodecContext *avctx, AVFrame *frame, - const struct AVExifMetadata *ifd); - #endif /* AVCODEC_DECODE_H */ diff --git a/icecat/media/ffvpx/libavcodec/defs.h b/icecat/media/ffvpx/libavcodec/defs.h index b13e983b13..24250f8af5 100644 --- a/icecat/media/ffvpx/libavcodec/defs.h +++ b/icecat/media/ffvpx/libavcodec/defs.h @@ -185,9 +185,6 @@ #define AV_PROFILE_PRORES_4444 4 #define AV_PROFILE_PRORES_XQ 5 -#define AV_PROFILE_PRORES_RAW 0 -#define AV_PROFILE_PRORES_RAW_HQ 1 - #define AV_PROFILE_ARIB_PROFILE_A 0 #define AV_PROFILE_ARIB_PROFILE_C 1 @@ -197,14 +194,6 @@ #define AV_PROFILE_EVC_BASELINE 0 #define AV_PROFILE_EVC_MAIN 1 -#define AV_PROFILE_APV_422_10 33 -#define AV_PROFILE_APV_422_12 44 -#define AV_PROFILE_APV_444_10 55 -#define AV_PROFILE_APV_444_12 66 -#define AV_PROFILE_APV_4444_10 77 -#define AV_PROFILE_APV_4444_12 88 -#define AV_PROFILE_APV_400_10 99 - #define AV_LEVEL_UNKNOWN -99 @@ -336,20 +325,6 @@ typedef struct AVProducerReferenceTime { int flags; } AVProducerReferenceTime; -/** - * RTCP SR (Sender Report) information - * - * The received sender report information for an RTSP - * stream, exposed as AV_PKT_DATA_RTCP_SR side data. - */ -typedef struct AVRTCPSenderReport { - uint32_t ssrc; ///< Synchronization source identifier - uint64_t ntp_timestamp; ///< NTP time when the report was sent - uint32_t rtp_timestamp; ///< RTP time when the report was sent - uint32_t sender_nb_packets; ///< Total number of packets sent - uint32_t sender_nb_bytes; ///< Total number of bytes sent (excluding headers or padding) -} AVRTCPSenderReport; - /** * Encode extradata length to a buffer. Used by xiph codecs. * diff --git a/icecat/media/ffvpx/libavcodec/dovi_rpu.h b/icecat/media/ffvpx/libavcodec/dovi_rpu.h index 64388d0650..193b0bf116 100644 --- a/icecat/media/ffvpx/libavcodec/dovi_rpu.h +++ b/icecat/media/ffvpx/libavcodec/dovi_rpu.h @@ -1,3 +1,5 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ /* 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/. */ diff --git a/icecat/media/ffvpx/libavcodec/dxva2.c b/icecat/media/ffvpx/libavcodec/dxva2.c index 669b0833c9..79de987280 100644 --- a/icecat/media/ffvpx/libavcodec/dxva2.c +++ b/icecat/media/ffvpx/libavcodec/dxva2.c @@ -774,6 +774,7 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx, int curr) { void *surface = get_surface(avctx, frame); + unsigned i; #if CONFIG_D3D12VA if (avctx->pix_fmt == AV_PIX_FMT_D3D12) { @@ -790,7 +791,7 @@ unsigned ff_dxva2_get_surface_index(const AVCodecContext *avctx, } #endif #if CONFIG_DXVA2 - for (unsigned i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) { + for (i = 0; i < DXVA_CONTEXT_COUNT(avctx, ctx); i++) { if (avctx->pix_fmt == AV_PIX_FMT_DXVA2_VLD && ctx->dxva2.surface[i] == surface) return i; } diff --git a/icecat/media/ffvpx/libavcodec/dxva2_av1.c b/icecat/media/ffvpx/libavcodec/dxva2_av1.c index 47866ff4c3..ea97fcb87e 100644 --- a/icecat/media/ffvpx/libavcodec/dxva2_av1.c +++ b/icecat/media/ffvpx/libavcodec/dxva2_av1.c @@ -272,7 +272,6 @@ int ff_dxva2_av1_fill_picture_parameters(const AVCodecContext *avctx, AVDXVACont } static int dxva2_av1_start_frame(AVCodecContext *avctx, - av_unused const AVBufferRef *buffer_ref, av_unused const uint8_t *buffer, av_unused uint32_t size) { @@ -451,7 +450,7 @@ static int dxva2_av1_end_frame(AVCodecContext *avctx) return ret; } -static av_cold int dxva2_av1_uninit(AVCodecContext *avctx) +static int dxva2_av1_uninit(AVCodecContext *avctx) { struct AV1DXVAContext *ctx = avctx->internal->hwaccel_priv_data; diff --git a/icecat/media/ffvpx/libavcodec/dxva2_vp9.c b/icecat/media/ffvpx/libavcodec/dxva2_vp9.c index cffa95e1d1..f4ab91c580 100644 --- a/icecat/media/ffvpx/libavcodec/dxva2_vp9.c +++ b/icecat/media/ffvpx/libavcodec/dxva2_vp9.c @@ -254,7 +254,6 @@ static int commit_bitstream_and_slice_buffer(AVCodecContext *avctx, static int dxva2_vp9_start_frame(AVCodecContext *avctx, - av_unused const AVBufferRef *buffer_ref, av_unused const uint8_t *buffer, av_unused uint32_t size) { diff --git a/icecat/media/ffvpx/libavcodec/encode.c b/icecat/media/ffvpx/libavcodec/encode.c index f1a65a9b23..3baf5b8103 100644 --- a/icecat/media/ffvpx/libavcodec/encode.c +++ b/icecat/media/ffvpx/libavcodec/encode.c @@ -18,12 +18,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/channel_layout.h" #include "libavutil/emms.h" #include "libavutil/frame.h" +#include "libavutil/imgutils.h" #include "libavutil/internal.h" -#include "libavutil/intreadwrite.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" #include "libavutil/samplefmt.h" @@ -213,6 +214,21 @@ int ff_encode_get_frame(AVCodecContext *avctx, AVFrame *frame) av_frame_move_ref(frame, avci->buffer_frame); +#if FF_API_FRAME_KEY +FF_DISABLE_DEPRECATION_WARNINGS + if (frame->key_frame) + frame->flags |= AV_FRAME_FLAG_KEY; +FF_ENABLE_DEPRECATION_WARNINGS +#endif +#if FF_API_INTERLACED_FRAME +FF_DISABLE_DEPRECATION_WARNINGS + if (frame->interlaced_frame) + frame->flags |= AV_FRAME_FLAG_INTERLACED; + if (frame->top_field_first) + frame->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + return 0; } @@ -236,7 +252,7 @@ int ff_encode_encode_cb(AVCodecContext *avctx, AVPacket *avpkt, int ret; ret = codec->cb.encode(avctx, avpkt, frame, got_packet); - ff_assert1_fpu(); + emms_c(); av_assert0(ret <= 0); if (!ret && *got_packet) { @@ -317,13 +333,12 @@ static int encode_simple_internal(AVCodecContext *avctx, AVPacket *avpkt) av_assert0(codec->cb_type == FF_CODEC_CB_TYPE_ENCODE); -#if CONFIG_FRAME_THREAD_ENCODER - if (avci->frame_thread_encoder) + if (CONFIG_FRAME_THREAD_ENCODER && avci->frame_thread_encoder) /* This will unref frame. */ ret = ff_thread_video_encode_frame(avctx, avpkt, frame, &got_packet); - else -#endif + else { ret = ff_encode_encode_cb(avctx, avpkt, frame, &got_packet); + } if (avci->draining && !got_packet) avci->draining_done = 1; @@ -357,6 +372,8 @@ static int encode_receive_packet_internal(AVCodecContext *avctx, AVPacket *avpkt if (avctx->codec->type == AVMEDIA_TYPE_VIDEO) { if ((avctx->flags & AV_CODEC_FLAG_PASS1) && avctx->stats_out) avctx->stats_out[0] = '\0'; + if (av_image_check_size2(avctx->width, avctx->height, avctx->max_pixels, AV_PIX_FMT_NONE, 0, avctx)) + return AVERROR(EINVAL); } if (ffcodec(avctx->codec)->cb_type == FF_CODEC_CB_TYPE_RECEIVE_PACKET) { @@ -549,7 +566,7 @@ static int encode_preinit_video(AVCodecContext *avctx) const enum AVPixelFormat *pix_fmts; int ret, i, num_pix_fmts; - if (!pixdesc) { + if (!av_get_pix_fmt_name(avctx->pix_fmt)) { av_log(avctx, AV_LOG_ERROR, "Invalid video pixel format: %d\n", avctx->pix_fmt); return AVERROR(EINVAL); @@ -585,33 +602,6 @@ static int encode_preinit_video(AVCodecContext *avctx) avctx->color_range = AVCOL_RANGE_JPEG; } - if (pixdesc->flags & AV_PIX_FMT_FLAG_ALPHA) { - const enum AVAlphaMode *alpha_modes; - int num_alpha_modes; - ret = avcodec_get_supported_config(avctx, NULL, AV_CODEC_CONFIG_ALPHA_MODE, - 0, (const void **) &alpha_modes, &num_alpha_modes); - if (ret < 0) - return ret; - - if (avctx->alpha_mode != AVALPHA_MODE_UNSPECIFIED && alpha_modes) { - for (i = 0; i < num_alpha_modes; i++) { - if (avctx->alpha_mode == alpha_modes[i]) - break; - } - if (i == num_alpha_modes) { - av_log(avctx, AV_LOG_ERROR, - "Specified alpha mode '%s' is not supported by the %s encoder.\n", - av_alpha_mode_name(avctx->alpha_mode), c->name); - av_log(avctx, AV_LOG_ERROR, "Supported alpha modes:\n"); - for (int p = 0; alpha_modes[p] != AVALPHA_MODE_UNSPECIFIED; p++) { - av_log(avctx, AV_LOG_ERROR, " %s\n", - av_alpha_mode_name(alpha_modes[p])); - } - return AVERROR(EINVAL); - } - } - } - if ( avctx->bits_per_raw_sample < 0 || (avctx->bits_per_raw_sample > 8 && pixdesc->comp[0].depth <= 8)) { av_log(avctx, AV_LOG_WARNING, "Specified bit depth %d not possible with the specified pixel formats depth %d\n", @@ -623,6 +613,20 @@ static int encode_preinit_video(AVCodecContext *avctx) return AVERROR(EINVAL); } +#if FF_API_TICKS_PER_FRAME +FF_DISABLE_DEPRECATION_WARNINGS + if (avctx->ticks_per_frame && avctx->time_base.num && + avctx->ticks_per_frame > INT_MAX / avctx->time_base.num) { + av_log(avctx, AV_LOG_ERROR, + "ticks_per_frame %d too large for the timebase %d/%d.", + avctx->ticks_per_frame, + avctx->time_base.num, + avctx->time_base.den); + return AVERROR(EINVAL); + } +FF_ENABLE_DEPRECATION_WARNINGS +#endif + if (avctx->hw_frames_ctx) { AVHWFramesContext *frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data; if (frames_ctx->format != avctx->pix_fmt) { @@ -658,6 +662,11 @@ static int encode_preinit_audio(AVCodecContext *avctx) avctx->sample_fmt); return AVERROR(EINVAL); } + if (avctx->sample_rate <= 0) { + av_log(avctx, AV_LOG_ERROR, "Invalid audio sample rate: %d\n", + avctx->sample_rate); + return AVERROR(EINVAL); + } ret = avcodec_get_supported_config(avctx, NULL, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, (const void **) &sample_fmts, @@ -826,11 +835,11 @@ int ff_encode_preinit(AVCodecContext *avctx) memcpy(sd_packet->data, sd_frame->data, sd_frame->size); } -#if CONFIG_FRAME_THREAD_ENCODER - ret = ff_frame_thread_encoder_init(avctx); - if (ret < 0) - return ret; -#endif + if (CONFIG_FRAME_THREAD_ENCODER) { + ret = ff_frame_thread_encoder_init(avctx); + if (ret < 0) + return ret; + } return 0; } @@ -839,12 +848,24 @@ int ff_encode_alloc_frame(AVCodecContext *avctx, AVFrame *frame) { int ret; - av_assert1(avctx->codec_type == AVMEDIA_TYPE_VIDEO); + switch (avctx->codec->type) { + case AVMEDIA_TYPE_VIDEO: + frame->format = avctx->pix_fmt; + if (frame->width <= 0 || frame->height <= 0) { + frame->width = FFMAX(avctx->width, avctx->coded_width); + frame->height = FFMAX(avctx->height, avctx->coded_height); + } - frame->format = avctx->pix_fmt; - if (frame->width <= 0 || frame->height <= 0) { - frame->width = avctx->width; - frame->height = avctx->height; + break; + case AVMEDIA_TYPE_AUDIO: + frame->sample_rate = avctx->sample_rate; + frame->format = avctx->sample_fmt; + if (!frame->ch_layout.nb_channels) { + ret = av_channel_layout_copy(&frame->ch_layout, &avctx->ch_layout); + if (ret < 0) + return ret; + } + break; } ret = avcodec_default_get_buffer2(avctx, frame, 0); @@ -915,47 +936,3 @@ AVCPBProperties *ff_encode_add_cpb_side_data(AVCodecContext *avctx) return props; } - -int ff_encode_add_stats_side_data(AVPacket *pkt, int quality, const int64_t error[], - int error_count, enum AVPictureType pict_type) -{ - uint8_t *side_data; - size_t side_data_size; - - side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_QUALITY_STATS, &side_data_size); - if (!side_data) { - side_data_size = 4+4+8*error_count; - side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_QUALITY_STATS, - side_data_size); - } - - if (!side_data || side_data_size < 4+4+8*error_count) - return AVERROR(ENOMEM); - - AV_WL32(side_data, quality); - side_data[4] = pict_type; - side_data[5] = error_count; - for (int i = 0; i < error_count; ++i) - AV_WL64(side_data+8 + 8*i , error[i]); - - return 0; -} - -int ff_check_codec_matrices(AVCodecContext *avctx, unsigned types, uint16_t min, uint16_t max) -{ - uint16_t *matrices[] = {avctx->intra_matrix, avctx->inter_matrix, avctx->chroma_intra_matrix}; - const char *names[] = {"Intra", "Inter", "Chroma Intra"}; - static_assert(FF_ARRAY_ELEMS(matrices) == FF_ARRAY_ELEMS(names), "matrix count mismatch"); - for (int m = 0; m < FF_ARRAY_ELEMS(matrices); m++) { - uint16_t *matrix = matrices[m]; - if (matrix && (types & (1U << m))) { - for (int i = 0; i < 64; i++) { - if (matrix[i] < min || matrix[i] > max) { - av_log(avctx, AV_LOG_ERROR, "%s matrix[%d] is %d which is out of the allowed range [%"PRIu16"-%"PRIu16"].\n", names[m], i, matrix[i], min, max); - return AVERROR(EINVAL); - } - } - } - } - return 0; -} diff --git a/icecat/media/ffvpx/libavcodec/encode.h b/icecat/media/ffvpx/libavcodec/encode.h index b66b387030..85331e04b7 100644 --- a/icecat/media/ffvpx/libavcodec/encode.h +++ b/icecat/media/ffvpx/libavcodec/encode.h @@ -84,9 +84,6 @@ int ff_encode_encode_cb(AVCodecContext *avctx, AVPacket *avpkt, */ AVCPBProperties *ff_encode_add_cpb_side_data(AVCodecContext *avctx); -int ff_encode_add_stats_side_data(AVPacket *pkt, int quality, const int64_t error[], - int error_count, enum AVPictureType pict_type); - /** * Rescale from sample rate to AVCodecContext.time_base. */ @@ -99,25 +96,4 @@ static av_always_inline int64_t ff_samples_to_time_base(const AVCodecContext *av avctx->time_base); } -/** - * Rescale from time base to AVCodecContext.sample_rate. - */ -static av_always_inline int64_t ff_samples_from_time_base(const AVCodecContext *avctx, - int64_t duration) -{ - if (!duration) - return duration; - return av_rescale_q(duration, avctx->time_base, - (AVRational){ 1, avctx->sample_rate }); -} - -/** - * Check if the elements of codec context matrices (intra_matrix, inter_matrix or - * chroma_intra_matrix) are within the specified range. - */ -#define FF_MATRIX_TYPE_INTRA (1U << 0) -#define FF_MATRIX_TYPE_INTER (1U << 1) -#define FF_MATRIX_TYPE_CHROMA_INTRA (1U << 2) -int ff_check_codec_matrices(AVCodecContext *avctx, unsigned types, uint16_t min, uint16_t max); - #endif /* AVCODEC_ENCODE_H */ diff --git a/icecat/media/ffvpx/libavcodec/error_resilience.h b/icecat/media/ffvpx/libavcodec/error_resilience.h index 1beae5a6b0..a1b9b9ec1a 100644 --- a/icecat/media/ffvpx/libavcodec/error_resilience.h +++ b/icecat/media/ffvpx/libavcodec/error_resilience.h @@ -23,8 +23,9 @@ #include #include "avcodec.h" +#include "me_cmp.h" -/// current MB is the first after a resync marker +///< current MB is the first after a resync marker #define VP_START 1 #define ER_AC_ERROR 2 #define ER_DC_ERROR 4 @@ -36,8 +37,6 @@ #define ER_MB_ERROR (ER_AC_ERROR|ER_DC_ERROR|ER_MV_ERROR) #define ER_MB_END (ER_AC_END|ER_DC_END|ER_MV_END) -typedef struct MPVEncContext MPVEncContext; - typedef struct ERPicture { AVFrame *f; const struct ThreadFrame *tf; @@ -54,8 +53,8 @@ typedef struct ERPicture { typedef struct ERContext { AVCodecContext *avctx; - int (*sad)(MPVEncContext *unused, const uint8_t *blk1, - const uint8_t *blk2, ptrdiff_t stride, int h); + me_cmp_func sad; + int mecc_inited; int *mb_index2xy; int mb_num; @@ -90,8 +89,6 @@ typedef struct ERContext { void *opaque; } ERContext; -int ff_er_init(ERContext *const s); - void ff_er_frame_start(ERContext *s); /** diff --git a/icecat/media/ffvpx/libavcodec/fffjni.c b/icecat/media/ffvpx/libavcodec/fffjni.c deleted file mode 100644 index fcb4837413..0000000000 --- a/icecat/media/ffvpx/libavcodec/fffjni.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * JNI public API functions - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include - -#include "libavutil/error.h" -#include "jni.h" - -#if CONFIG_JNI -#include -#include - -#include "libavutil/log.h" -#include "ffjni.h" - -static void *java_vm; -static void *android_app_ctx; -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - -int av_jni_set_java_vm(void *vm, void *log_ctx) -{ - int ret = 0; - - pthread_mutex_lock(&lock); - if (java_vm == NULL) { - java_vm = vm; - } else if (java_vm != vm) { - ret = AVERROR(EINVAL); - av_log(log_ctx, AV_LOG_ERROR, "A Java virtual machine has already been set"); - } - pthread_mutex_unlock(&lock); - - return ret; -} - -void *av_jni_get_java_vm(void *log_ctx) -{ - void *vm; - - pthread_mutex_lock(&lock); - vm = java_vm; - pthread_mutex_unlock(&lock); - - return vm; -} - -#else - -int av_jni_set_java_vm(void *vm, void *log_ctx) -{ - return AVERROR(ENOSYS); -} - -void *av_jni_get_java_vm(void *log_ctx) -{ - return NULL; -} - -#endif - -#if defined(__ANDROID__) - -int av_jni_set_android_app_ctx(void *app_ctx, void *log_ctx) -{ -#if CONFIG_JNI - jobjectRefType type; - - JNIEnv *env = ff_jni_get_env(log_ctx); - if (!env) - return AVERROR(EINVAL); - - type = (*env)->GetObjectRefType(env, app_ctx); - if (type != JNIGlobalRefType) { - av_log(log_ctx, AV_LOG_ERROR, "Application context must be passed as a global reference"); - return AVERROR(EINVAL); - } - - pthread_mutex_lock(&lock); - android_app_ctx = app_ctx; - pthread_mutex_unlock(&lock); - - return 0; -#else - return AVERROR(ENOSYS); -#endif -} - -void *av_jni_get_android_app_ctx(void) -{ -#if CONFIG_JNI - void *ctx; - - pthread_mutex_lock(&lock); - ctx = android_app_ctx; - pthread_mutex_unlock(&lock); - - return ctx; -#else - return NULL; -#endif -} - -#endif diff --git a/icecat/media/ffvpx/libavcodec/fffjni.h b/icecat/media/ffvpx/libavcodec/fffjni.h deleted file mode 100644 index 955cd28096..0000000000 --- a/icecat/media/ffvpx/libavcodec/fffjni.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * JNI public API functions - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_JNI_H -#define AVCODEC_JNI_H - -/* - * Manually set a Java virtual machine which will be used to retrieve the JNI - * environment. Once a Java VM is set it cannot be changed afterwards, meaning - * you can call multiple times av_jni_set_java_vm with the same Java VM pointer - * however it will error out if you try to set a different Java VM. - * - * @param vm Java virtual machine - * @param log_ctx context used for logging, can be NULL - * @return 0 on success, < 0 otherwise - */ -int av_jni_set_java_vm(void *vm, void *log_ctx); - -/* - * Get the Java virtual machine which has been set with av_jni_set_java_vm. - * - * @param vm Java virtual machine - * @return a pointer to the Java virtual machine - */ -void *av_jni_get_java_vm(void *log_ctx); - -/* - * Set the Android application context which will be used to retrieve the Android - * content resolver to handle content uris. - * - * This function is only available on Android. - * - * @param app_ctx global JNI reference to the Android application context - * @return 0 on success, < 0 otherwise - */ -int av_jni_set_android_app_ctx(void *app_ctx, void *log_ctx); - -/* - * Get the Android application context that has been set with - * av_jni_set_android_app_ctx. - * - * This function is only available on Android. - * - * @return a pointer the the Android application context - */ -void *av_jni_get_android_app_ctx(void); - -#endif /* AVCODEC_JNI_H */ diff --git a/icecat/media/ffvpx/libavcodec/ffjni.c b/icecat/media/ffvpx/libavcodec/ffjni.c deleted file mode 100644 index 0d31890474..0000000000 --- a/icecat/media/ffvpx/libavcodec/ffjni.c +++ /dev/null @@ -1,413 +0,0 @@ -/* - * JNI utility functions - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include - -#include "libavutil/bprint.h" -#include "libavutil/error.h" -#include "libavutil/log.h" -#include "libavutil/mem.h" - -#include "config.h" -#include "jni.h" -#include "fffjni.h" -#include "ffjni.h" - -static JavaVM *java_vm; -static pthread_key_t current_env; -static pthread_once_t once = PTHREAD_ONCE_INIT; -static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; - -static void jni_detach_env(void *data) -{ - if (java_vm) { - (*java_vm)->DetachCurrentThread(java_vm); - } -} - -static void jni_create_pthread_key(void) -{ - pthread_key_create(¤t_env, jni_detach_env); -} - -JNIEnv *ff_jni_get_env(void *log_ctx) -{ - int ret = 0; - JNIEnv *env = NULL; - - pthread_mutex_lock(&lock); - if (java_vm == NULL) { - java_vm = av_jni_get_java_vm(log_ctx); - } - - if (!java_vm) { - av_log(log_ctx, AV_LOG_ERROR, "No Java virtual machine has been registered\n"); - goto done; - } - - pthread_once(&once, jni_create_pthread_key); - - if ((env = pthread_getspecific(current_env)) != NULL) { - goto done; - } - - ret = (*java_vm)->GetEnv(java_vm, (void **)&env, JNI_VERSION_1_6); - switch(ret) { - case JNI_EDETACHED: - if ((*java_vm)->AttachCurrentThread(java_vm, &env, NULL) != 0) { - av_log(log_ctx, AV_LOG_ERROR, "Failed to attach the JNI environment to the current thread\n"); - env = NULL; - } else { - pthread_setspecific(current_env, env); - } - break; - case JNI_OK: - break; - case JNI_EVERSION: - av_log(log_ctx, AV_LOG_ERROR, "The specified JNI version is not supported\n"); - break; - default: - av_log(log_ctx, AV_LOG_ERROR, "Failed to get the JNI environment attached to this thread\n"); - break; - } - -done: - pthread_mutex_unlock(&lock); - return env; -} - -char *ff_jni_jstring_to_utf_chars(JNIEnv *env, jstring string, void *log_ctx) -{ - char *ret = NULL; - const char *utf_chars = NULL; - - jboolean copy = 0; - - if (!string) { - return NULL; - } - - utf_chars = (*env)->GetStringUTFChars(env, string, ©); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "String.getStringUTFChars() threw an exception\n"); - return NULL; - } - - ret = av_strdup(utf_chars); - - (*env)->ReleaseStringUTFChars(env, string, utf_chars); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "String.releaseStringUTFChars() threw an exception\n"); - return NULL; - } - - return ret; -} - -jstring ff_jni_utf_chars_to_jstring(JNIEnv *env, const char *utf_chars, void *log_ctx) -{ - jstring ret; - - ret = (*env)->NewStringUTF(env, utf_chars); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "NewStringUTF() threw an exception\n"); - return NULL; - } - - return ret; -} - -int ff_jni_exception_get_summary(JNIEnv *env, jthrowable exception, char **error, void *log_ctx) -{ - int ret = 0; - - AVBPrint bp; - - char *name = NULL; - char *message = NULL; - - jclass class_class = NULL; - jmethodID get_name_id = NULL; - - jclass exception_class = NULL; - jmethodID get_message_id = NULL; - - jstring string = NULL; - - av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC); - - exception_class = (*env)->GetObjectClass(env, exception); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "Could not find Throwable class\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - class_class = (*env)->GetObjectClass(env, exception_class); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "Could not find Throwable class's class\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - get_name_id = (*env)->GetMethodID(env, class_class, "getName", "()Ljava/lang/String;"); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "Could not find method Class.getName()\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - string = (*env)->CallObjectMethod(env, exception_class, get_name_id); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "Class.getName() threw an exception\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - if (string) { - name = ff_jni_jstring_to_utf_chars(env, string, log_ctx); - (*env)->DeleteLocalRef(env, string); - string = NULL; - } - - get_message_id = (*env)->GetMethodID(env, exception_class, "getMessage", "()Ljava/lang/String;"); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "Could not find method java/lang/Throwable.getMessage()\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - string = (*env)->CallObjectMethod(env, exception, get_message_id); - if ((*env)->ExceptionCheck(env)) { - (*env)->ExceptionClear(env); - av_log(log_ctx, AV_LOG_ERROR, "Throwable.getMessage() threw an exception\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - if (string) { - message = ff_jni_jstring_to_utf_chars(env, string, log_ctx); - (*env)->DeleteLocalRef(env, string); - string = NULL; - } - - if (name && message) { - av_bprintf(&bp, "%s: %s", name, message); - } else if (name && !message) { - av_bprintf(&bp, "%s occurred", name); - } else if (!name && message) { - av_bprintf(&bp, "Exception: %s", message); - } else { - av_log(log_ctx, AV_LOG_WARNING, "Could not retrieve exception name and message\n"); - av_bprintf(&bp, "Exception occurred"); - } - - ret = av_bprint_finalize(&bp, error); -done: - - av_free(name); - av_free(message); - - (*env)->DeleteLocalRef(env, class_class); - (*env)->DeleteLocalRef(env, exception_class); - (*env)->DeleteLocalRef(env, string); - - return ret; -} - -int ff_jni_exception_check(JNIEnv *env, int log, void *log_ctx) -{ - int ret; - - jthrowable exception; - - char *message = NULL; - - if (!(*(env))->ExceptionCheck((env))) { - return 0; - } - - if (!log) { - (*(env))->ExceptionClear((env)); - return -1; - } - - exception = (*env)->ExceptionOccurred(env); - (*(env))->ExceptionClear((env)); - - if ((ret = ff_jni_exception_get_summary(env, exception, &message, log_ctx)) < 0) { - (*env)->DeleteLocalRef(env, exception); - return ret; - } - - (*env)->DeleteLocalRef(env, exception); - - av_log(log_ctx, AV_LOG_ERROR, "%s\n", message); - av_free(message); - - return -1; -} - -int ff_jni_init_jfields(JNIEnv *env, void *jfields, const struct FFJniField *jfields_mapping, int global, void *log_ctx) -{ - int i, ret = 0; - jclass last_clazz = NULL; - - for (i = 0; jfields_mapping[i].name; i++) { - int mandatory = jfields_mapping[i].mandatory; - enum FFJniFieldType type = jfields_mapping[i].type; - - if (type == FF_JNI_CLASS) { - jclass clazz; - - last_clazz = NULL; - - clazz = (*env)->FindClass(env, jfields_mapping[i].name); - if ((ret = ff_jni_exception_check(env, mandatory, log_ctx)) < 0 && mandatory) { - goto done; - } - - last_clazz = *(jclass*)((uint8_t*)jfields + jfields_mapping[i].offset) = - global ? (*env)->NewGlobalRef(env, clazz) : clazz; - - if (global) { - (*env)->DeleteLocalRef(env, clazz); - } - - } else { - - if (!last_clazz) { - ret = AVERROR_EXTERNAL; - break; - } - - switch(type) { - case FF_JNI_FIELD: { - jfieldID field_id = (*env)->GetFieldID(env, last_clazz, jfields_mapping[i].method, jfields_mapping[i].signature); - if ((ret = ff_jni_exception_check(env, mandatory, log_ctx)) < 0 && mandatory) { - goto done; - } - - *(jfieldID*)((uint8_t*)jfields + jfields_mapping[i].offset) = field_id; - break; - } - case FF_JNI_STATIC_FIELD: { - jfieldID field_id = (*env)->GetStaticFieldID(env, last_clazz, jfields_mapping[i].method, jfields_mapping[i].signature); - if ((ret = ff_jni_exception_check(env, mandatory, log_ctx)) < 0 && mandatory) { - goto done; - } - - *(jfieldID*)((uint8_t*)jfields + jfields_mapping[i].offset) = field_id; - break; - } - case FF_JNI_METHOD: { - jmethodID method_id = (*env)->GetMethodID(env, last_clazz, jfields_mapping[i].method, jfields_mapping[i].signature); - if ((ret = ff_jni_exception_check(env, mandatory, log_ctx)) < 0 && mandatory) { - goto done; - } - - *(jmethodID*)((uint8_t*)jfields + jfields_mapping[i].offset) = method_id; - break; - } - case FF_JNI_STATIC_METHOD: { - jmethodID method_id = (*env)->GetStaticMethodID(env, last_clazz, jfields_mapping[i].method, jfields_mapping[i].signature); - if ((ret = ff_jni_exception_check(env, mandatory, log_ctx)) < 0 && mandatory) { - goto done; - } - - *(jmethodID*)((uint8_t*)jfields + jfields_mapping[i].offset) = method_id; - break; - } - default: - av_log(log_ctx, AV_LOG_ERROR, "Unknown JNI field type\n"); - ret = AVERROR(EINVAL); - goto done; - } - - ret = 0; - } - } - -done: - if (ret < 0) { - /* reset jfields in case of failure so it does not leak references */ - ff_jni_reset_jfields(env, jfields, jfields_mapping, global, log_ctx); - } - - return ret; -} - -int ff_jni_reset_jfields(JNIEnv *env, void *jfields, const struct FFJniField *jfields_mapping, int global, void *log_ctx) -{ - int i; - - for (i = 0; jfields_mapping[i].name; i++) { - enum FFJniFieldType type = jfields_mapping[i].type; - - switch(type) { - case FF_JNI_CLASS: { - jclass clazz = *(jclass*)((uint8_t*)jfields + jfields_mapping[i].offset); - if (!clazz) - continue; - - if (global) { - (*env)->DeleteGlobalRef(env, clazz); - } else { - (*env)->DeleteLocalRef(env, clazz); - } - - *(jclass*)((uint8_t*)jfields + jfields_mapping[i].offset) = NULL; - break; - } - case FF_JNI_FIELD: { - *(jfieldID*)((uint8_t*)jfields + jfields_mapping[i].offset) = NULL; - break; - } - case FF_JNI_STATIC_FIELD: { - *(jfieldID*)((uint8_t*)jfields + jfields_mapping[i].offset) = NULL; - break; - } - case FF_JNI_METHOD: { - *(jmethodID*)((uint8_t*)jfields + jfields_mapping[i].offset) = NULL; - break; - } - case FF_JNI_STATIC_METHOD: { - *(jmethodID*)((uint8_t*)jfields + jfields_mapping[i].offset) = NULL; - break; - } - default: - av_log(log_ctx, AV_LOG_ERROR, "Unknown JNI field type\n"); - } - } - - return 0; -} diff --git a/icecat/media/ffvpx/libavcodec/ffjni.h b/icecat/media/ffvpx/libavcodec/ffjni.h deleted file mode 100644 index d1e86f8329..0000000000 --- a/icecat/media/ffvpx/libavcodec/ffjni.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * JNI utility functions - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_FFJNI_H -#define AVCODEC_FFJNI_H - -#include -#include - -/* - * Attach permanently a JNI environment to the current thread and retrieve it. - * - * If successfully attached, the JNI environment will automatically be detached - * at thread destruction. - * - * @param attached pointer to an integer that will be set to 1 if the - * environment has been attached to the current thread or 0 if it is - * already attached. - * @param log_ctx context used for logging, can be NULL - * @return the JNI environment on success, NULL otherwise - */ -JNIEnv *ff_jni_get_env(void *log_ctx); - -/* - * Convert a jstring to its utf characters equivalent. - * - * @param env JNI environment - * @param string Java string to convert - * @param log_ctx context used for logging, can be NULL - * @return a pointer to an array of unicode characters on success, NULL - * otherwise - */ -char *ff_jni_jstring_to_utf_chars(JNIEnv *env, jstring string, void *log_ctx); - -/* - * Convert utf chars to its jstring equivalent. - * - * @param env JNI environment - * @param utf_chars a pointer to an array of unicode characters - * @param log_ctx context used for logging, can be NULL - * @return a Java string object on success, NULL otherwise - */ -jstring ff_jni_utf_chars_to_jstring(JNIEnv *env, const char *utf_chars, void *log_ctx); - -/* - * Extract the error summary from a jthrowable in the form of "className: errorMessage" - * - * @param env JNI environment - * @param exception exception to get the summary from - * @param error address pointing to the error, the value is updated if a - * summary can be extracted - * @param log_ctx context used for logging, can be NULL - * @return 0 on success, < 0 otherwise - */ -int ff_jni_exception_get_summary(JNIEnv *env, jthrowable exception, char **error, void *log_ctx); - -/* - * Check if an exception has occurred,log it using av_log and clear it. - * - * @param env JNI environment - * @param log value used to enable logging if an exception has occurred, - * 0 disables logging, != 0 enables logging - * @param log_ctx context used for logging, can be NULL - */ -int ff_jni_exception_check(JNIEnv *env, int log, void *log_ctx); - -/* - * Jni field type. - */ -enum FFJniFieldType { - - FF_JNI_CLASS, - FF_JNI_FIELD, - FF_JNI_STATIC_FIELD, - FF_JNI_METHOD, - FF_JNI_STATIC_METHOD - -}; - -/* - * Jni field describing a class, a field or a method to be retrieved using - * the ff_jni_init_jfields method. - */ -struct FFJniField { - - const char *name; - const char *method; - const char *signature; - enum FFJniFieldType type; - size_t offset; - int mandatory; - -}; - -/* - * Retrieve class references, field ids and method ids to an arbitrary structure. - * - * @param env JNI environment - * @param jfields a pointer to an arbitrary structure where the different - * fields are declared and where the FFJNIField mapping table offsets are - * pointing to - * @param jfields_mapping null terminated array of FFJNIFields describing - * the class/field/method to be retrieved - * @param global make the classes references global. It is the caller - * responsibility to properly release global references. - * @param log_ctx context used for logging, can be NULL - * @return 0 on success, < 0 otherwise - */ -int ff_jni_init_jfields(JNIEnv *env, void *jfields, const struct FFJniField *jfields_mapping, int global, void *log_ctx); - -/* - * Delete class references, field ids and method ids of an arbitrary structure. - * - * @param env JNI environment - * @param jfields a pointer to an arbitrary structure where the different - * fields are declared and where the FFJNIField mapping table offsets are - * pointing to - * @param jfields_mapping null terminated array of FFJNIFields describing - * the class/field/method to be deleted - * @param global threat the classes references as global and delete them - * accordingly - * @param log_ctx context used for logging, can be NULL - * @return 0 on success, < 0 otherwise - */ -int ff_jni_reset_jfields(JNIEnv *env, void *jfields, const struct FFJniField *jfields_mapping, int global, void *log_ctx); - -#endif /* AVCODEC_FFJNI_H */ diff --git a/icecat/media/ffvpx/libavcodec/flac_parse.h b/icecat/media/ffvpx/libavcodec/flac_parse.h index 78485b3320..b0cbad825e 100644 --- a/icecat/media/ffvpx/libavcodec/flac_parse.h +++ b/icecat/media/ffvpx/libavcodec/flac_parse.h @@ -58,7 +58,7 @@ typedef struct FLACFrameInfo { * @param[out] s where parsed information is stored * @param[in] buffer pointer to start of 34-byte streaminfo data * - * @return negative error code on failure or >= 0 on success + * @return negative error code on faiure or >= 0 on success */ int ff_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo *s, const uint8_t *buffer); diff --git a/icecat/media/ffvpx/libavcodec/flacdec.c b/icecat/media/ffvpx/libavcodec/flacdec.c index e6e6487470..ad921a1bd1 100644 --- a/icecat/media/ffvpx/libavcodec/flacdec.c +++ b/icecat/media/ffvpx/libavcodec/flacdec.c @@ -148,10 +148,8 @@ static int allocate_buffers(FLACContext *s) return buf_size; av_fast_malloc(&s->decoded_buffer, &s->decoded_buffer_size, buf_size); - if (!s->decoded_buffer) { - memset(s->decoded, 0, sizeof(s->decoded)); + if (!s->decoded_buffer) return AVERROR(ENOMEM); - } ret = av_samples_fill_arrays((uint8_t **)s->decoded, NULL, s->decoded_buffer, @@ -166,10 +164,8 @@ static int allocate_buffers(FLACContext *s) return buf_size; av_fast_malloc(&s->decoded_buffer_33bps, &s->decoded_buffer_size_33bps, buf_size); - if (!s->decoded_buffer_33bps) { - s->decoded_33bps = NULL; + if (!s->decoded_buffer_33bps) return AVERROR(ENOMEM); - } ret = av_samples_fill_arrays((uint8_t **)&s->decoded_33bps, NULL, s->decoded_buffer_33bps, @@ -669,7 +665,7 @@ static int decode_frame(FLACContext *s) fi.samplerate = s->stream_info.samplerate; s->stream_info.samplerate = s->avctx->sample_rate = fi.samplerate; - if (!s->got_streaminfo || !s->decoded_buffer) { + if (!s->got_streaminfo) { ret = allocate_buffers(s); if (ret < 0) return ret; @@ -831,7 +827,10 @@ const FFCodec ff_flac_decoder = { .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16P, - AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_S32P), + .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_S16P, + AV_SAMPLE_FMT_S32, + AV_SAMPLE_FMT_S32P, + AV_SAMPLE_FMT_NONE }, .p.priv_class = &flac_decoder_class, }; diff --git a/icecat/media/ffvpx/libavcodec/flacdsp.c b/icecat/media/ffvpx/libavcodec/flacdsp.c index f8b48770f4..f5362bf66f 100644 --- a/icecat/media/ffvpx/libavcodec/flacdsp.c +++ b/icecat/media/ffvpx/libavcodec/flacdsp.c @@ -94,7 +94,7 @@ static void flac_lpc_33_c(int64_t *decoded, const int32_t *residual, int64_t sum = 0; for (j = 0; j < pred_order; j++) sum += (int64_t)coeffs[j] * (uint64_t)decoded[j]; - decoded[j] = (uint64_t)residual[i] + (uint64_t)(sum >> qlevel); + decoded[j] = residual[i] + (sum >> qlevel); } } @@ -154,7 +154,7 @@ av_cold void ff_flacdsp_init(FLACDSPContext *c, enum AVSampleFormat fmt, int cha ff_flacdsp_init_arm(c, fmt, channels); #elif ARCH_RISCV ff_flacdsp_init_riscv(c, fmt, channels); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_flacdsp_init_x86(c, fmt, channels); #endif } diff --git a/icecat/media/ffvpx/libavcodec/flacdsp.h b/icecat/media/ffvpx/libavcodec/flacdsp.h index fb76c55aee..3b7b35a112 100644 --- a/icecat/media/ffvpx/libavcodec/flacdsp.h +++ b/icecat/media/ffvpx/libavcodec/flacdsp.h @@ -35,6 +35,10 @@ typedef struct FLACDSPContext { void (*wasted32)(int32_t *decoded, int wasted, int len); void (*wasted33)(int64_t *decoded, const int32_t *residual, int wasted, int len); + void (*lpc16_encode)(int32_t *res, const int32_t *smp, int len, int order, + const int32_t coefs[32], int shift); + void (*lpc32_encode)(int32_t *res, const int32_t *smp, int len, int order, + const int32_t coefs[32], int shift); } FLACDSPContext; void ff_flacdsp_init(FLACDSPContext *c, enum AVSampleFormat fmt, int channels); diff --git a/icecat/media/ffvpx/libavcodec/get_bits.h b/icecat/media/ffvpx/libavcodec/get_bits.h index 940507f74a..fe2f6378b4 100644 --- a/icecat/media/ffvpx/libavcodec/get_bits.h +++ b/icecat/media/ffvpx/libavcodec/get_bits.h @@ -76,7 +76,6 @@ typedef BitstreamContext GetBitContext; #define get_bits_count bits_tell -#define get_bits_bytesize bits_bytesize #define get_bits_left bits_left #define skip_bits_long bits_skip #define skip_bits bits_skip @@ -107,7 +106,7 @@ typedef BitstreamContext GetBitContext; #else // CACHED_BITSTREAM_READER typedef struct GetBitContext { - const uint8_t *buffer; + const uint8_t *buffer, *buffer_end; int index; int size_in_bits; int size_in_bits_plus8; @@ -164,24 +163,24 @@ static inline unsigned int show_bits(GetBitContext *s, int n); * For examples see get_bits, show_bits, skip_bits, get_vlc. */ -#define MIN_CACHE_BITS 25 - -#define OPEN_READER_NOSIZE_NOCACHE(name, gb) \ - unsigned int name ## _index = (gb)->index +#if defined LONG_BITSTREAM_READER +# define MIN_CACHE_BITS 32 +#else +# define MIN_CACHE_BITS 25 +#endif #define OPEN_READER_NOSIZE(name, gb) \ - OPEN_READER_NOSIZE_NOCACHE(name, gb); \ - unsigned int name ## _cache + unsigned int name ## _index = (gb)->index; \ + unsigned int av_unused name ## _cache #if UNCHECKED_BITSTREAM_READER #define OPEN_READER(name, gb) OPEN_READER_NOSIZE(name, gb) -#define OPEN_READER_SIZE(name, gb) ((void)0) + #define BITS_AVAILABLE(name, gb) 1 #else -#define OPEN_READER_SIZE(name, gb) unsigned int name ## _size_plus8 = (gb)->size_in_bits_plus8 #define OPEN_READER(name, gb) \ OPEN_READER_NOSIZE(name, gb); \ - OPEN_READER_SIZE(name, gb) + unsigned int name ## _size_plus8 = (gb)->size_in_bits_plus8 #define BITS_AVAILABLE(name, gb) name ## _index < name ## _size_plus8 #endif @@ -196,11 +195,24 @@ static inline unsigned int show_bits(GetBitContext *s, int n); /* Using these two macros ensures that 32 bits are available. */ # define UPDATE_CACHE_LE_32(name, gb) UPDATE_CACHE_LE_EXT(name, (gb), 64, 32) + # define UPDATE_CACHE_BE_32(name, gb) UPDATE_CACHE_BE_EXT(name, (gb), 64, 32) +# ifdef LONG_BITSTREAM_READER + +# define UPDATE_CACHE_LE(name, gb) UPDATE_CACHE_LE_32(name, (gb)) + +# define UPDATE_CACHE_BE(name, gb) UPDATE_CACHE_BE_32(name, (gb)) + +#else + # define UPDATE_CACHE_LE(name, gb) UPDATE_CACHE_LE_EXT(name, (gb), 32, 32) + # define UPDATE_CACHE_BE(name, gb) UPDATE_CACHE_BE_EXT(name, (gb), 32, 32) +#endif + + #ifdef BITSTREAM_READER_LE # define UPDATE_CACHE(name, gb) UPDATE_CACHE_LE(name, gb) @@ -256,20 +268,6 @@ static inline int get_bits_count(const GetBitContext *s) return s->index; } -/** - * Get the size of the GetBitContext's buffer in bytes. - * - * @param s the GetBitContext - * @param round_up If set, the number of bits will be rounded up to full bytes; - * this does not matter if the number of bits is known to be - * a multiple of eight, e.g. if the GetBitContext has been - * initialized with init_get_bits8. - */ -static inline int get_bits_bytesize(const GetBitContext *s, int round_up) -{ - return (s->size_in_bits + (round_up ? 7 : 0)) >> 3; -} - /** * Skips the specified number of bits. * @param n the number of bits to skip, @@ -382,8 +380,7 @@ static inline unsigned int show_bits(GetBitContext *s, int n) static inline void skip_bits(GetBitContext *s, int n) { - OPEN_READER_NOSIZE_NOCACHE(re, s); - OPEN_READER_SIZE(re, s); + OPEN_READER(re, s); LAST_SKIP_BITS(re, s, n); CLOSE_READER(re, s); } @@ -517,6 +514,7 @@ static inline unsigned int show_bits_long(GetBitContext *s, int n) static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size) { + int buffer_size; int ret = 0; if (bit_size >= INT_MAX - FFMAX(7, AV_INPUT_BUFFER_PADDING_SIZE*8) || bit_size < 0 || !buffer) { @@ -525,9 +523,12 @@ static inline int init_get_bits(GetBitContext *s, const uint8_t *buffer, ret = AVERROR_INVALIDDATA; } + buffer_size = (bit_size + 7) >> 3; + s->buffer = buffer; s->size_in_bits = bit_size; s->size_in_bits_plus8 = bit_size + 8; + s->buffer_end = buffer + buffer_size; s->index = 0; return ret; @@ -572,65 +573,71 @@ static inline const uint8_t *align_get_bits(GetBitContext *s) */ #define GET_VLC(code, name, gb, table, bits, max_depth) \ do { \ - unsigned idx_ = SHOW_UBITS(name, gb, bits); \ - code = table[idx_].sym; \ - int n_ = table[idx_].len; \ + int n, nb_bits; \ + unsigned int index; \ \ - if (max_depth > 1 && n_ < 0) { \ + index = SHOW_UBITS(name, gb, bits); \ + code = table[index].sym; \ + n = table[index].len; \ + \ + if (max_depth > 1 && n < 0) { \ LAST_SKIP_BITS(name, gb, bits); \ UPDATE_CACHE(name, gb); \ \ - int nb__bits = -n_; \ + nb_bits = -n; \ \ - idx_ = SHOW_UBITS(name, gb, nb__bits) + code; \ - code = table[idx_].sym; \ - n_ = table[idx_].len; \ - if (max_depth > 2 && n_ < 0) { \ - LAST_SKIP_BITS(name, gb, nb__bits); \ + index = SHOW_UBITS(name, gb, nb_bits) + code; \ + code = table[index].sym; \ + n = table[index].len; \ + if (max_depth > 2 && n < 0) { \ + LAST_SKIP_BITS(name, gb, nb_bits); \ UPDATE_CACHE(name, gb); \ \ - nb__bits = -n_; \ + nb_bits = -n; \ \ - idx_ = SHOW_UBITS(name, gb, nb__bits) + code; \ - code = table[idx_].sym; \ - n_ = table[idx_].len; \ + index = SHOW_UBITS(name, gb, nb_bits) + code; \ + code = table[index].sym; \ + n = table[index].len; \ } \ } \ - SKIP_BITS(name, gb, n_); \ + SKIP_BITS(name, gb, n); \ } while (0) #define GET_RL_VLC(level, run, name, gb, table, bits, \ max_depth, need_update) \ do { \ - unsigned idx_ = SHOW_UBITS(name, gb, bits); \ - level = table[idx_].level; \ - int n_ = table[idx_].len8; \ + int n, nb_bits; \ + unsigned int index; \ \ - if (max_depth > 1 && n_ < 0) { \ + index = SHOW_UBITS(name, gb, bits); \ + level = table[index].level; \ + n = table[index].len; \ + \ + if (max_depth > 1 && n < 0) { \ SKIP_BITS(name, gb, bits); \ if (need_update) { \ UPDATE_CACHE(name, gb); \ } \ \ - int nb__bits = -n_; \ + nb_bits = -n; \ \ - idx_ = SHOW_UBITS(name, gb, nb__bits) + level; \ - level = table[idx_].level; \ - n_ = table[idx_].len8; \ - if (max_depth > 2 && n_ < 0) { \ - LAST_SKIP_BITS(name, gb, nb__bits); \ + index = SHOW_UBITS(name, gb, nb_bits) + level; \ + level = table[index].level; \ + n = table[index].len; \ + if (max_depth > 2 && n < 0) { \ + LAST_SKIP_BITS(name, gb, nb_bits); \ if (need_update) { \ UPDATE_CACHE(name, gb); \ } \ - nb__bits = -n_; \ + nb_bits = -n; \ \ - idx_ = SHOW_UBITS(name, gb, nb__bits) + level; \ - level = table[idx_].level; \ - n_ = table[idx_].len8; \ + index = SHOW_UBITS(name, gb, nb_bits) + level; \ + level = table[index].level; \ + n = table[index].len; \ } \ } \ - run = table[idx_].run; \ - SKIP_BITS(name, gb, n_); \ + run = table[index].run; \ + SKIP_BITS(name, gb, n); \ } while (0) /** @@ -658,10 +665,10 @@ static av_always_inline int get_vlc2(GetBitContext *s, const VLCElem *table, } static inline int get_vlc_multi(GetBitContext *s, uint8_t *dst, - av_unused const VLC_MULTI_ELEM *const Jtable, + const VLC_MULTI_ELEM *const Jtable, const VLCElem *const table, const int bits, const int max_depth, - av_unused const int symbols_size) + const int symbols_size) { dst[0] = get_vlc2(s, table, bits, max_depth); return 1; diff --git a/icecat/media/ffvpx/libavcodec/golomb.h b/icecat/media/ffvpx/libavcodec/golomb.h index 5169a5a4c0..742334978d 100644 --- a/icecat/media/ffvpx/libavcodec/golomb.h +++ b/icecat/media/ffvpx/libavcodec/golomb.h @@ -455,7 +455,7 @@ static inline int get_ur_golomb_jpegls(GetBitContext *gb, int k, int limit, buf = get_bits_long(gb, k); return buf + (i << k); - } else if (esc_len && i == limit - 1) { + } else if (i == limit - 1) { buf = get_bits_long(gb, esc_len); return buf + 1; @@ -512,7 +512,7 @@ static inline int get_ur_golomb_jpegls(GetBitContext *gb, int k, int limit, } buf += ((SUINT)i << k); - } else if (esc_len && i == limit - 1) { + } else if (i == limit - 1) { buf = SHOW_UBITS(re, gb, esc_len); LAST_SKIP_BITS(re, gb, esc_len); diff --git a/icecat/media/ffvpx/libavcodec/h264dsp.h b/icecat/media/ffvpx/libavcodec/h264dsp.h index f40d324a4e..4a9cb1568d 100644 --- a/icecat/media/ffvpx/libavcodec/h264dsp.h +++ b/icecat/media/ffvpx/libavcodec/h264dsp.h @@ -41,71 +41,71 @@ typedef void (*h264_biweight_func)(uint8_t *dst, uint8_t *src, */ typedef struct H264DSPContext { /* weighted MC */ - h264_weight_func weight_pixels_tab[4]; - h264_biweight_func biweight_pixels_tab[4]; + h264_weight_func weight_h264_pixels_tab[4]; + h264_biweight_func biweight_h264_pixels_tab[4]; /* loop filter */ - void (*v_loop_filter_luma)(uint8_t *pix /*align 16*/, ptrdiff_t stride, - int alpha, int beta, int8_t *tc0); - void (*h_loop_filter_luma)(uint8_t *pix /*align 4 */, ptrdiff_t stride, - int alpha, int beta, int8_t *tc0); - void (*h_loop_filter_luma_mbaff)(uint8_t *pix /*align 16*/, ptrdiff_t stride, - int alpha, int beta, int8_t *tc0); + void (*h264_v_loop_filter_luma)(uint8_t *pix /*align 16*/, ptrdiff_t stride, + int alpha, int beta, int8_t *tc0); + void (*h264_h_loop_filter_luma)(uint8_t *pix /*align 4 */, ptrdiff_t stride, + int alpha, int beta, int8_t *tc0); + void (*h264_h_loop_filter_luma_mbaff)(uint8_t *pix /*align 16*/, ptrdiff_t stride, + int alpha, int beta, int8_t *tc0); /* v/h_loop_filter_luma_intra: align 16 */ - void (*v_loop_filter_luma_intra)(uint8_t *pix, ptrdiff_t stride, - int alpha, int beta); - void (*h_loop_filter_luma_intra)(uint8_t *pix, ptrdiff_t stride, - int alpha, int beta); - void (*h_loop_filter_luma_mbaff_intra)(uint8_t *pix /*align 16*/, - ptrdiff_t stride, int alpha, int beta); - void (*v_loop_filter_chroma)(uint8_t *pix /*align 8*/, ptrdiff_t stride, - int alpha, int beta, int8_t *tc0); - void (*h_loop_filter_chroma)(uint8_t *pix /*align 4*/, ptrdiff_t stride, - int alpha, int beta, int8_t *tc0); - void (*h_loop_filter_chroma_mbaff)(uint8_t *pix /*align 8*/, - ptrdiff_t stride, int alpha, int beta, - int8_t *tc0); - void (*v_loop_filter_chroma_intra)(uint8_t *pix /*align 8*/, - ptrdiff_t stride, int alpha, int beta); - void (*h_loop_filter_chroma_intra)(uint8_t *pix /*align 8*/, - ptrdiff_t stride, int alpha, int beta); - void (*h_loop_filter_chroma_mbaff_intra)(uint8_t *pix /*align 8*/, - ptrdiff_t stride, int alpha, int beta); - // loop_filter_strength: simd only. the C version is inlined in h264_loopfilter.c - void (*loop_filter_strength)(int16_t bS[2][4][4], uint8_t nnz[40], - int8_t ref[2][40], int16_t mv[2][40][2], - int bidir, int edges, int step, - int mask_mv0, int mask_mv1, int field); + void (*h264_v_loop_filter_luma_intra)(uint8_t *pix, ptrdiff_t stride, + int alpha, int beta); + void (*h264_h_loop_filter_luma_intra)(uint8_t *pix, ptrdiff_t stride, + int alpha, int beta); + void (*h264_h_loop_filter_luma_mbaff_intra)(uint8_t *pix /*align 16*/, + ptrdiff_t stride, int alpha, int beta); + void (*h264_v_loop_filter_chroma)(uint8_t *pix /*align 8*/, ptrdiff_t stride, + int alpha, int beta, int8_t *tc0); + void (*h264_h_loop_filter_chroma)(uint8_t *pix /*align 4*/, ptrdiff_t stride, + int alpha, int beta, int8_t *tc0); + void (*h264_h_loop_filter_chroma_mbaff)(uint8_t *pix /*align 8*/, + ptrdiff_t stride, int alpha, int beta, + int8_t *tc0); + void (*h264_v_loop_filter_chroma_intra)(uint8_t *pix /*align 8*/, + ptrdiff_t stride, int alpha, int beta); + void (*h264_h_loop_filter_chroma_intra)(uint8_t *pix /*align 8*/, + ptrdiff_t stride, int alpha, int beta); + void (*h264_h_loop_filter_chroma_mbaff_intra)(uint8_t *pix /*align 8*/, + ptrdiff_t stride, int alpha, int beta); + // h264_loop_filter_strength: simd only. the C version is inlined in h264_loopfilter.c + void (*h264_loop_filter_strength)(int16_t bS[2][4][4], uint8_t nnz[40], + int8_t ref[2][40], int16_t mv[2][40][2], + int bidir, int edges, int step, + int mask_mv0, int mask_mv1, int field); /* IDCT */ - void (*idct_add)(uint8_t *dst /*align 4*/, - int16_t *block /*align 16*/, int stride); - void (*idct8_add)(uint8_t *dst /*align 8*/, - int16_t *block /*align 16*/, int stride); - void (*idct_dc_add)(uint8_t *dst /*align 4*/, - int16_t *block /*align 16*/, int stride); - void (*idct8_dc_add)(uint8_t *dst /*align 8*/, - int16_t *block /*align 16*/, int stride); + void (*h264_idct_add)(uint8_t *dst /*align 4*/, + int16_t *block /*align 16*/, int stride); + void (*h264_idct8_add)(uint8_t *dst /*align 8*/, + int16_t *block /*align 16*/, int stride); + void (*h264_idct_dc_add)(uint8_t *dst /*align 4*/, + int16_t *block /*align 16*/, int stride); + void (*h264_idct8_dc_add)(uint8_t *dst /*align 8*/, + int16_t *block /*align 16*/, int stride); - void (*idct_add16)(uint8_t *dst /*align 16*/, const int *blockoffset, - int16_t *block /*align 16*/, int stride, - const uint8_t nnzc[5 * 8]); - void (*idct8_add4)(uint8_t *dst /*align 16*/, const int *blockoffset, - int16_t *block /*align 16*/, int stride, - const uint8_t nnzc[5 * 8]); - void (*idct_add8)(uint8_t **dst /*align 16*/, const int *blockoffset, - int16_t *block /*align 16*/, int stride, - const uint8_t nnzc[15 * 8]); - void (*idct_add16intra)(uint8_t *dst /*align 16*/, const int *blockoffset, - int16_t *block /*align 16*/, - int stride, const uint8_t nnzc[5 * 8]); - void (*luma_dc_dequant_idct)(int16_t *output, - int16_t *input /*align 16*/, int qmul); - void (*chroma_dc_dequant_idct)(int16_t *block, int qmul); + void (*h264_idct_add16)(uint8_t *dst /*align 16*/, const int *blockoffset, + int16_t *block /*align 16*/, int stride, + const uint8_t nnzc[5 * 8]); + void (*h264_idct8_add4)(uint8_t *dst /*align 16*/, const int *blockoffset, + int16_t *block /*align 16*/, int stride, + const uint8_t nnzc[5 * 8]); + void (*h264_idct_add8)(uint8_t **dst /*align 16*/, const int *blockoffset, + int16_t *block /*align 16*/, int stride, + const uint8_t nnzc[15 * 8]); + void (*h264_idct_add16intra)(uint8_t *dst /*align 16*/, const int *blockoffset, + int16_t *block /*align 16*/, + int stride, const uint8_t nnzc[5 * 8]); + void (*h264_luma_dc_dequant_idct)(int16_t *output, + int16_t *input /*align 16*/, int qmul); + void (*h264_chroma_dc_dequant_idct)(int16_t *block, int qmul); /* bypass-transform */ - void (*add_pixels8_clear)(uint8_t *dst, int16_t *block, int stride); - void (*add_pixels4_clear)(uint8_t *dst, int16_t *block, int stride); + void (*h264_add_pixels8_clear)(uint8_t *dst, int16_t *block, int stride); + void (*h264_add_pixels4_clear)(uint8_t *dst, int16_t *block, int stride); /** * Search buf from the start for up to size bytes. Return the index diff --git a/icecat/media/ffvpx/libavcodec/h264pred.c b/icecat/media/ffvpx/libavcodec/h264pred.c index fbd8d2b91d..25f9995a0b 100644 --- a/icecat/media/ffvpx/libavcodec/h264pred.c +++ b/icecat/media/ffvpx/libavcodec/h264pred.c @@ -592,7 +592,7 @@ av_cold void ff_h264_pred_init(H264PredContext *h, int codec_id, ff_h264_pred_init_aarch64(h, codec_id, bit_depth, chroma_format_idc); #elif ARCH_ARM ff_h264_pred_init_arm(h, codec_id, bit_depth, chroma_format_idc); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_h264_pred_init_x86(h, codec_id, bit_depth, chroma_format_idc); #elif ARCH_MIPS ff_h264_pred_init_mips(h, codec_id, bit_depth, chroma_format_idc); diff --git a/icecat/media/ffvpx/libavcodec/h264pred_template.c b/icecat/media/ffvpx/libavcodec/h264pred_template.c index face13f7c7..b5bc942a5e 100644 --- a/icecat/media/ffvpx/libavcodec/h264pred_template.c +++ b/icecat/media/ffvpx/libavcodec/h264pred_template.c @@ -113,28 +113,28 @@ static void FUNCC(pred4x4_128_dc)(uint8_t *_src, const uint8_t *topright, #define LOAD_TOP_RIGHT_EDGE\ - av_unused const unsigned t4 = topright[0];\ - av_unused const unsigned t5 = topright[1];\ - av_unused const unsigned t6 = topright[2];\ - av_unused const unsigned t7 = topright[3];\ + const unsigned av_unused t4 = topright[0];\ + const unsigned av_unused t5 = topright[1];\ + const unsigned av_unused t6 = topright[2];\ + const unsigned av_unused t7 = topright[3];\ #define LOAD_DOWN_LEFT_EDGE\ - av_unused const unsigned l4 = src[-1+4*stride];\ - av_unused const unsigned l5 = src[-1+5*stride];\ - av_unused const unsigned l6 = src[-1+6*stride];\ - av_unused const unsigned l7 = src[-1+7*stride];\ + const unsigned av_unused l4 = src[-1+4*stride];\ + const unsigned av_unused l5 = src[-1+5*stride];\ + const unsigned av_unused l6 = src[-1+6*stride];\ + const unsigned av_unused l7 = src[-1+7*stride];\ #define LOAD_LEFT_EDGE\ - av_unused const unsigned l0 = src[-1+0*stride];\ - av_unused const unsigned l1 = src[-1+1*stride];\ - av_unused const unsigned l2 = src[-1+2*stride];\ - av_unused const unsigned l3 = src[-1+3*stride];\ + const unsigned av_unused l0 = src[-1+0*stride];\ + const unsigned av_unused l1 = src[-1+1*stride];\ + const unsigned av_unused l2 = src[-1+2*stride];\ + const unsigned av_unused l3 = src[-1+3*stride];\ #define LOAD_TOP_EDGE\ - av_unused const unsigned t0 = src[ 0-1*stride];\ - av_unused const unsigned t1 = src[ 1-1*stride];\ - av_unused const unsigned t2 = src[ 2-1*stride];\ - av_unused const unsigned t3 = src[ 3-1*stride];\ + const unsigned av_unused t0 = src[ 0-1*stride];\ + const unsigned av_unused t1 = src[ 1-1*stride];\ + const unsigned av_unused t2 = src[ 2-1*stride];\ + const unsigned av_unused t3 = src[ 3-1*stride];\ static void FUNCC(pred4x4_down_right)(uint8_t *_src, const uint8_t *topright, ptrdiff_t _stride) @@ -414,6 +414,7 @@ static inline void FUNCC(pred16x16_plane_compat)(uint8_t *_src, { int i, j, k; int a; + INIT_CLIP pixel *src = (pixel*)_src; int stride = _stride>>(sizeof(pixel)-1); const pixel * const src0 = src +7-stride; @@ -747,6 +748,7 @@ static void FUNCC(pred8x8_plane)(uint8_t *_src, ptrdiff_t _stride) { int j, k; int a; + INIT_CLIP pixel *src = (pixel*)_src; int stride = _stride>>(sizeof(pixel)-1); const pixel * const src0 = src +3-stride; @@ -782,6 +784,7 @@ static void FUNCC(pred8x16_plane)(uint8_t *_src, ptrdiff_t _stride) { int j, k; int a; + INIT_CLIP pixel *src = (pixel*)_src; int stride = _stride>>(sizeof(pixel)-1); const pixel * const src0 = src +3-stride; @@ -826,7 +829,7 @@ static void FUNCC(pred8x16_plane)(uint8_t *_src, ptrdiff_t _stride) const int l0 = ((has_topleft ? SRC(-1,-1) : SRC(-1,0)) \ + 2*SRC(-1,0) + SRC(-1,1) + 2) >> 2; \ PL(1) PL(2) PL(3) PL(4) PL(5) PL(6) \ - av_unused const int l7 = (SRC(-1,6) + 3*SRC(-1,7) + 2) >> 2 + const int l7 av_unused = (SRC(-1,6) + 3*SRC(-1,7) + 2) >> 2 #define PT(x) \ const int t##x = (SRC(x-1,-1) + 2*SRC(x,-1) + SRC(x+1,-1) + 2) >> 2; @@ -834,7 +837,7 @@ static void FUNCC(pred8x16_plane)(uint8_t *_src, ptrdiff_t _stride) const int t0 = ((has_topleft ? SRC(-1,-1) : SRC(0,-1)) \ + 2*SRC(0,-1) + SRC(1,-1) + 2) >> 2; \ PT(1) PT(2) PT(3) PT(4) PT(5) PT(6) \ - av_unused const int t7 = ((has_topright ? SRC(8,-1) : SRC(7,-1)) \ + const int t7 av_unused = ((has_topright ? SRC(8,-1) : SRC(7,-1)) \ + 2*SRC(7,-1) + SRC(6,-1) + 2) >> 2 #define PTR(x) \ diff --git a/icecat/media/ffvpx/libavcodec/hpeldsp.h b/icecat/media/ffvpx/libavcodec/hpeldsp.h index 6c9fdce0c1..45e81b10a5 100644 --- a/icecat/media/ffvpx/libavcodec/hpeldsp.h +++ b/icecat/media/ffvpx/libavcodec/hpeldsp.h @@ -31,12 +31,11 @@ #include #include -/** - * Average and put pixel - * Widths can be 16, 8, 4 or 2. For for widths 2 and 4, h is always a positive - * multiple of 2; otherwise, it is a positive multiple of 4. - */ -typedef void (*op_pixels_func)(uint8_t *block /* align width */, +/* add and put pixel (decoding) */ +// blocksizes for hpel_pixels_func are 8x4,8x8 16x8 16x16 +// h for hpel_pixels_func is limited to {width/2, width} but never larger +// than 16 and never smaller than 4 +typedef void (*op_pixels_func)(uint8_t *block /*align width (8 or 16)*/, const uint8_t *pixels /*align 1*/, ptrdiff_t line_size, int h); @@ -47,8 +46,8 @@ typedef struct HpelDSPContext { /** * Halfpel motion compensation with rounding (a+b+1)>>1. * this is an array[4][4] of motion compensation functions for 4 - * horizontal blocksizes (2,4,8,16) and the 4 halfpel positions
- * *pixels_tab[ 0->16xH 1->8xH 2->4xH 3->2xH ][ xhalfpel + 2*yhalfpel ] + * horizontal blocksizes (8,16) and the 4 halfpel positions
+ * *pixels_tab[ 0->16xH 1->8xH ][ xhalfpel + 2*yhalfpel ] * @param block destination where the result is stored * @param pixels source * @param line_size number of bytes in a horizontal line of block @@ -59,8 +58,8 @@ typedef struct HpelDSPContext { /** * Halfpel motion compensation with rounding (a+b+1)>>1. * This is an array[4][4] of motion compensation functions for 4 - * horizontal blocksizes (2,4,8,16) and the 4 halfpel positions
- * *pixels_tab[ 0->16xH 1->8xH 2->4xH 3->2xH ][ xhalfpel + 2*yhalfpel ] + * horizontal blocksizes (8,16) and the 4 halfpel positions
+ * *pixels_tab[ 0->16xH 1->8xH ][ xhalfpel + 2*yhalfpel ] * @param block destination into which the result is averaged (a+b+1)>>1 * @param pixels source * @param line_size number of bytes in a horizontal line of block @@ -77,16 +76,16 @@ typedef struct HpelDSPContext { * @param pixels source * @param line_size number of bytes in a horizontal line of block * @param h height - * @note The size is kept at [3][4] to avoid out of bounds accesses - * in the motion estimation code. + * @note The size is kept at [4][4] to match the above pixel_tabs and avoid + * out of bounds reads in the motion estimation code. */ - op_pixels_func put_no_rnd_pixels_tab[3][4]; + op_pixels_func put_no_rnd_pixels_tab[4][4]; /** * Halfpel motion compensation with no rounding (a+b)>>1. * this is an array[4] of motion compensation functions for 1 * horizontal blocksize (16) and the 4 halfpel positions
- * *pixels_tab[ xhalfpel + 2*yhalfpel ] + * *pixels_tab[0][ xhalfpel + 2*yhalfpel ] * @param block destination into which the result is averaged (a+b)>>1 * @param pixels source * @param line_size number of bytes in a horizontal line of block @@ -98,6 +97,7 @@ typedef struct HpelDSPContext { void ff_hpeldsp_init(HpelDSPContext *c, int flags); void ff_hpeldsp_init_aarch64(HpelDSPContext *c, int flags); +void ff_hpeldsp_init_alpha(HpelDSPContext *c, int flags); void ff_hpeldsp_init_arm(HpelDSPContext *c, int flags); void ff_hpeldsp_init_ppc(HpelDSPContext *c, int flags); void ff_hpeldsp_init_x86(HpelDSPContext *c, int flags); diff --git a/icecat/media/ffvpx/libavcodec/hwaccel_internal.h b/icecat/media/ffvpx/libavcodec/hwaccel_internal.h index 7224406815..77df4e0904 100644 --- a/icecat/media/ffvpx/libavcodec/hwaccel_internal.h +++ b/icecat/media/ffvpx/libavcodec/hwaccel_internal.h @@ -52,13 +52,11 @@ typedef struct FFHWAccel { * Otherwise, this means the whole frame is available at this point. * * @param avctx the codec context - * @param buf_ref the frame data buffer reference (optional) * @param buf the frame data buffer base * @param buf_size the size of the frame in bytes * @return zero if successful, a negative value otherwise */ - int (*start_frame)(AVCodecContext *avctx, const AVBufferRef *buf_ref, - const uint8_t *buf, uint32_t buf_size); + int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); /** * Callback for parameter data (SPS/PPS/VPS etc). diff --git a/icecat/media/ffvpx/libavcodec/hwaccels.h b/icecat/media/ffvpx/libavcodec/hwaccels.h index 3de191288a..910a024032 100644 --- a/icecat/media/ffvpx/libavcodec/hwaccels.h +++ b/icecat/media/ffvpx/libavcodec/hwaccels.h @@ -28,8 +28,6 @@ extern const struct FFHWAccel ff_av1_vaapi_hwaccel; extern const struct FFHWAccel ff_av1_vdpau_hwaccel; extern const struct FFHWAccel ff_av1_videotoolbox_hwaccel; extern const struct FFHWAccel ff_av1_vulkan_hwaccel; -extern const struct FFHWAccel ff_dpx_vulkan_hwaccel; -extern const struct FFHWAccel ff_ffv1_vulkan_hwaccel; extern const struct FFHWAccel ff_h263_vaapi_hwaccel; extern const struct FFHWAccel ff_h263_videotoolbox_hwaccel; extern const struct FFHWAccel ff_h264_d3d11va_hwaccel; @@ -68,8 +66,6 @@ extern const struct FFHWAccel ff_mpeg4_vaapi_hwaccel; extern const struct FFHWAccel ff_mpeg4_vdpau_hwaccel; extern const struct FFHWAccel ff_mpeg4_videotoolbox_hwaccel; extern const struct FFHWAccel ff_prores_videotoolbox_hwaccel; -extern const struct FFHWAccel ff_prores_vulkan_hwaccel; -extern const struct FFHWAccel ff_prores_raw_vulkan_hwaccel; extern const struct FFHWAccel ff_vc1_d3d11va_hwaccel; extern const struct FFHWAccel ff_vc1_d3d11va2_hwaccel; extern const struct FFHWAccel ff_vc1_d3d12va_hwaccel; @@ -87,7 +83,6 @@ extern const struct FFHWAccel ff_vp9_nvdec_hwaccel; extern const struct FFHWAccel ff_vp9_vaapi_hwaccel; extern const struct FFHWAccel ff_vp9_vdpau_hwaccel; extern const struct FFHWAccel ff_vp9_videotoolbox_hwaccel; -extern const struct FFHWAccel ff_vp9_vulkan_hwaccel; extern const struct FFHWAccel ff_vvc_vaapi_hwaccel; extern const struct FFHWAccel ff_wmv3_d3d11va_hwaccel; extern const struct FFHWAccel ff_wmv3_d3d11va2_hwaccel; diff --git a/icecat/media/ffvpx/libavcodec/idctdsp.c b/icecat/media/ffvpx/libavcodec/idctdsp.c index e039f900eb..4259a117dc 100644 --- a/icecat/media/ffvpx/libavcodec/idctdsp.c +++ b/icecat/media/ffvpx/libavcodec/idctdsp.c @@ -41,7 +41,7 @@ av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation, { int i; -#if ARCH_X86 && HAVE_X86ASM +#if ARCH_X86 if (ff_init_scantable_permutation_x86(idct_permutation, perm_type)) return; @@ -276,10 +276,6 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) c->idct = ff_faanidct; c->perm_type = FF_IDCT_PERM_NONE; #endif /* CONFIG_FAANIDCT */ -#if CONFIG_MPEG4_DECODER - } else if (avctx->idct_algo == FF_IDCT_XVID) { - ff_xvid_idct_init(c); -#endif } else { // accurate/default c->idct_put = ff_simple_idct_put_int16_8bit; c->idct_add = ff_simple_idct_add_int16_8bit; @@ -293,6 +289,9 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) c->put_signed_pixels_clamped = put_signed_pixels_clamped_c; c->add_pixels_clamped = ff_add_pixels_clamped_c; + if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID) + ff_xvid_idct_init(c, avctx); + #if ARCH_AARCH64 ff_idctdsp_init_aarch64(c, avctx, high_bit_depth); #elif ARCH_ARM @@ -301,7 +300,7 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) ff_idctdsp_init_ppc(c, avctx, high_bit_depth); #elif ARCH_RISCV ff_idctdsp_init_riscv(c, avctx, high_bit_depth); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_idctdsp_init_x86(c, avctx, high_bit_depth); #elif ARCH_MIPS ff_idctdsp_init_mips(c, avctx, high_bit_depth); diff --git a/icecat/media/ffvpx/libavcodec/idctdsp.h b/icecat/media/ffvpx/libavcodec/idctdsp.h index 7783d7098a..c08242881c 100644 --- a/icecat/media/ffvpx/libavcodec/idctdsp.h +++ b/icecat/media/ffvpx/libavcodec/idctdsp.h @@ -98,6 +98,8 @@ void ff_idctdsp_init(IDCTDSPContext *c, struct AVCodecContext *avctx); void ff_idctdsp_init_aarch64(IDCTDSPContext *c, struct AVCodecContext *avctx, unsigned high_bit_depth); +void ff_idctdsp_init_alpha(IDCTDSPContext *c, struct AVCodecContext *avctx, + unsigned high_bit_depth); void ff_idctdsp_init_arm(IDCTDSPContext *c, struct AVCodecContext *avctx, unsigned high_bit_depth); void ff_idctdsp_init_ppc(IDCTDSPContext *c, struct AVCodecContext *avctx, diff --git a/icecat/media/ffvpx/libavcodec/imgconvert.c b/icecat/media/ffvpx/libavcodec/imgconvert.c index 86cfce1e46..96511ac7d6 100644 --- a/icecat/media/ffvpx/libavcodec/imgconvert.c +++ b/icecat/media/ffvpx/libavcodec/imgconvert.c @@ -45,3 +45,4 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *p *loss_ptr = loss; return best; } + diff --git a/icecat/media/ffvpx/libavcodec/internal.h b/icecat/media/ffvpx/libavcodec/internal.h index 137fd52745..62a37f473f 100644 --- a/icecat/media/ffvpx/libavcodec/internal.h +++ b/icecat/media/ffvpx/libavcodec/internal.h @@ -145,6 +145,15 @@ typedef struct AVCodecInternal { AVFrame *buffer_frame; int draining_done; +#if FF_API_DROPCHANGED + /* used when avctx flag AV_CODEC_FLAG_DROPCHANGED is set */ + int changed_frames_dropped; + int initial_format; + int initial_width, initial_height; + int initial_sample_rate; + AVChannelLayout initial_ch_layout; +#endif + #if CONFIG_LCMS2 FFIccContext icc; /* used to read and write embedded ICC profiles */ #endif diff --git a/icecat/media/ffvpx/libavcodec/itut35.h b/icecat/media/ffvpx/libavcodec/itut35.h index 84ea86f3dd..a75ef37929 100644 --- a/icecat/media/ffvpx/libavcodec/itut35.h +++ b/icecat/media/ffvpx/libavcodec/itut35.h @@ -23,19 +23,10 @@ #define ITU_T_T35_COUNTRY_CODE_UK 0xB4 #define ITU_T_T35_COUNTRY_CODE_US 0xB5 -// The Terminal Provider Code (or "Manufacturer Code") identifies the -// manufacturer within a country. An Assignment Authority appointed by the -// national body assigns this code nationally. The manufacturer code is always -// used in conjunction with a country code. -// - CN providers -#define ITU_T_T35_PROVIDER_CODE_HDR_VIVID 0x0004 -// - UK providers -// https://www.cix.co.uk/~bpechey/H221/h221code.htm -#define ITU_T_T35_PROVIDER_CODE_VNOVA 0x5000 -// - US providers -#define ITU_T_T35_PROVIDER_CODE_ATSC 0x0031 -#define ITU_T_T35_PROVIDER_CODE_DOLBY 0x003B -#define ITU_T_T35_PROVIDER_CODE_AOM 0x5890 -#define ITU_T_T35_PROVIDER_CODE_SAMSUNG 0x003C +#define ITU_T_T35_PROVIDER_CODE_ATSC 0x31 +#define ITU_T_T35_PROVIDER_CODE_CUVA 0x04 +#define ITU_T_T35_PROVIDER_CODE_DOLBY 0x3B +#define ITU_T_T35_PROVIDER_CODE_LCEVC 0x50 +#define ITU_T_T35_PROVIDER_CODE_SMTPE 0x3C #endif /* AVCODEC_ITUT35_H */ diff --git a/icecat/media/ffvpx/libavcodec/jrevdct.c b/icecat/media/ffvpx/libavcodec/jrevdct.c index 531deee3a9..7f1863515f 100644 --- a/icecat/media/ffvpx/libavcodec/jrevdct.c +++ b/icecat/media/ffvpx/libavcodec/jrevdct.c @@ -1159,13 +1159,13 @@ void ff_j_rev_dct1(DCTBLOCK data){ #undef FIX #undef CONST_BITS -void ff_jref_idct_put(uint8_t *dest, ptrdiff_t line_size, int16_t block[64]) +void ff_jref_idct_put(uint8_t *dest, ptrdiff_t line_size, int16_t *block) { ff_j_rev_dct(block); ff_put_pixels_clamped_c(block, dest, line_size); } -void ff_jref_idct_add(uint8_t *dest, ptrdiff_t line_size, int16_t block[64]) +void ff_jref_idct_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block) { ff_j_rev_dct(block); ff_add_pixels_clamped_c(block, dest, line_size); diff --git a/icecat/media/ffvpx/libavcodec/lcevcdec.h b/icecat/media/ffvpx/libavcodec/lcevcdec.h index 0a255d2951..25c41fe65a 100644 --- a/icecat/media/ffvpx/libavcodec/lcevcdec.h +++ b/icecat/media/ffvpx/libavcodec/lcevcdec.h @@ -1,53 +1,33 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* 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/. */ +/* Stubs for lcevcdec.{c,h} */ #ifndef AVCODEC_LCEVCDEC_H #define AVCODEC_LCEVCDEC_H -#include "config.h" +#include "config_components.h" #include -#if CONFIG_LIBLCEVC_DEC -#include -#else typedef uintptr_t LCEVC_DecoderHandle; -#endif - -struct CodedBitstreamContext; -struct CodedBitstreamFragment; typedef struct FFLCEVCContext { LCEVC_DecoderHandle decoder; - struct CodedBitstreamContext *cbc; - struct CodedBitstreamFragment *frag; int initialized; } FFLCEVCContext; struct AVFrame; -typedef struct FFLCEVCFrame { - FFLCEVCContext *lcevc; - struct AVFrame *frame; -} FFLCEVCFrame; +static int ff_lcevc_alloc(FFLCEVCContext **plcevc) { + return 0; +} + +static int ff_lcevc_process(void *logctx, struct AVFrame *frame) { + return 0; +} + +static void ff_lcevc_unref(void *opaque) {} -int ff_lcevc_alloc(FFLCEVCContext **plcevc, void *logctx); -int ff_lcevc_process(void *logctx, struct AVFrame *frame); -int ff_lcevc_parse_frame(FFLCEVCContext *lcevc, const struct AVFrame *frame, - enum AVPixelFormat *format, int *width, int *height, void *logctx); -void ff_lcevc_unref(void *opaque); #endif /* AVCODEC_LCEVCDEC_H */ diff --git a/icecat/media/ffvpx/libavcodec/libaomenc.c b/icecat/media/ffvpx/libavcodec/libaomenc.c index ebaf2d7ad7..a116989b1f 100644 --- a/icecat/media/ffvpx/libavcodec/libaomenc.c +++ b/icecat/media/ffvpx/libavcodec/libaomenc.c @@ -32,8 +32,8 @@ #include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/base64.h" +#include "libavutil/common.h" #include "libavutil/cpu.h" -#include "libavutil/hdr_dynamic_metadata.h" #include "libavutil/imgutils.h" #include "libavutil/mathematics.h" #include "libavutil/mem.h" @@ -43,13 +43,12 @@ #include "av1.h" #include "avcodec.h" #include "bsf.h" -#include "bytestream.h" #include "codec_internal.h" #include "dovi_rpu.h" #include "encode.h" #include "internal.h" -#include "itut35.h" #include "libaom.h" +#include "packet_internal.h" #include "profiles.h" /* @@ -143,8 +142,6 @@ typedef struct AOMEncoderContext { AVDictionary *aom_params; } AOMContext; -#define OFFSET(x) offsetof(AOMContext, x) - static const char *const ctlidstr[] = { [AOME_SET_CPUUSED] = "AOME_SET_CPUUSED", [AOME_SET_CQ_LEVEL] = "AOME_SET_CQ_LEVEL", @@ -243,7 +240,7 @@ static av_cold void dump_enc_cfg(AVCodecContext *avctx, width, "g_pass:", cfg->g_pass, width, "g_lag_in_frames:", cfg->g_lag_in_frames); av_log(avctx, level, "rate control settings\n" - " %*s%u\n %*s%d\n %*s%p(%zu)\n %*s%u\n", + " %*s%u\n %*s%d\n %*s%p(%"SIZE_SPECIFIER")\n %*s%u\n", width, "rc_dropframe_thresh:", cfg->rc_dropframe_thresh, width, "rc_end_usage:", cfg->rc_end_usage, width, "rc_twopass_stats_in:", cfg->rc_twopass_stats_in.buf, cfg->rc_twopass_stats_in.sz, @@ -306,7 +303,11 @@ static av_cold void free_frame_list(struct FrameListData *list) } static av_cold int codecctl_int(AVCodecContext *avctx, - int id, +#ifdef UENUM1BYTE + aome_enc_control_id id, +#else + enum aome_enc_control_id id, +#endif int val) { AOMContext *ctx = avctx->priv_data; @@ -328,58 +329,15 @@ static av_cold int codecctl_int(AVCodecContext *avctx, return 0; } -static int add_hdr_plus(AVCodecContext *avctx, struct aom_image *img, const AVFrame *frame) -{ - // Check for HDR10+ - AVFrameSideData *side_data = - av_frame_get_side_data(frame, AV_FRAME_DATA_DYNAMIC_HDR_PLUS); - if (!side_data) - return 0; - - size_t payload_size; - AVDynamicHDRPlus *hdr_plus = (AVDynamicHDRPlus *)side_data->buf->data; - int res = av_dynamic_hdr_plus_to_t35(hdr_plus, NULL, &payload_size); - if (res < 0) { - log_encoder_error(avctx, "Error finding the size of HDR10+"); - return res; - } - - uint8_t *hdr_plus_buf; - // Extra bytes for the country code, provider code, provider oriented code and app id. - const size_t hdr_plus_buf_size = payload_size + 6; - hdr_plus_buf = av_malloc(hdr_plus_buf_size); - if (!hdr_plus_buf) - return AVERROR(ENOMEM); - - uint8_t *payload = hdr_plus_buf; - // See "HDR10+ AV1 Metadata Handling Specification" v1.0.1, Section 2.1. - bytestream_put_byte(&payload, ITU_T_T35_COUNTRY_CODE_US); - bytestream_put_be16(&payload, ITU_T_T35_PROVIDER_CODE_SAMSUNG); - bytestream_put_be16(&payload, 0x0001); // provider_oriented_code - bytestream_put_byte(&payload, 0x04); // application_identifier - - res = av_dynamic_hdr_plus_to_t35(hdr_plus, &payload, &payload_size); - if (res < 0) { - av_free(hdr_plus_buf); - log_encoder_error(avctx, "Error encoding HDR10+ from side data"); - return res; - } - - res = aom_img_add_metadata(img, OBU_METADATA_TYPE_ITUT_T35, - hdr_plus_buf, hdr_plus_buf_size, AOM_MIF_ANY_FRAME); - av_free(hdr_plus_buf); - if (res < 0) { - log_encoder_error(avctx, "Error adding HDR10+ to aom_img"); - return res; - } - return 0; -} - #if defined(AOM_CTRL_AV1E_GET_NUM_OPERATING_POINTS) && \ defined(AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX) && \ defined(AOM_CTRL_AV1E_GET_TARGET_SEQ_LEVEL_IDX) static av_cold int codecctl_intp(AVCodecContext *avctx, - int id, +#ifdef UENUM1BYTE + aome_enc_control_id id, +#else + enum aome_enc_control_id id, +#endif int* ptr) { AOMContext *ctx = avctx->priv_data; @@ -387,23 +345,27 @@ static av_cold int codecctl_intp(AVCodecContext *avctx, int width = -30; int res; + snprintf(buf, sizeof(buf), "%s:", ctlidstr[id]); + av_log(avctx, AV_LOG_DEBUG, " %*s%d\n", width, buf, *ptr); + res = aom_codec_control(&ctx->encoder, id, ptr); if (res != AOM_CODEC_OK) { - snprintf(buf, sizeof(buf), "Failed to get %s codec control", + snprintf(buf, sizeof(buf), "Failed to set %s codec control", ctlidstr[id]); log_encoder_error(avctx, buf); return AVERROR(EINVAL); } - snprintf(buf, sizeof(buf), "%s:", ctlidstr[id]); - av_log(avctx, AV_LOG_DEBUG, " %*s%d\n", width, buf, *ptr); - return 0; } #endif static av_cold int codecctl_imgp(AVCodecContext *avctx, - int id, +#ifdef UENUM1BYTE + aome_enc_control_id id, +#else + enum aome_enc_control_id id, +#endif struct aom_image *img) { AOMContext *ctx = avctx->priv_data; @@ -510,6 +472,7 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps, struct aom_codec_enc_cfg *enccfg, aom_codec_flags_t *flags, aom_img_fmt_t *img_fmt) { + AOMContext av_unused *ctx = avctx->priv_data; const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); enccfg->g_bit_depth = enccfg->g_input_bit_depth = desc->comp[0].depth; switch (avctx->pix_fmt) { @@ -750,46 +713,6 @@ static int choose_tiling(AVCodecContext *avctx, return 0; } - -static const struct { - int aom_enum; - unsigned offset; -} option_map[] = { - { AOME_SET_ENABLEAUTOALTREF, OFFSET(auto_alt_ref) }, - { AOME_SET_ARNR_MAXFRAMES, OFFSET(arnr_max_frames) }, - { AOME_SET_ARNR_STRENGTH, OFFSET(arnr_strength) }, - { AV1E_SET_ENABLE_CDEF, OFFSET(enable_cdef) }, - { AV1E_SET_ENABLE_RESTORATION, OFFSET(enable_restoration) }, - { AV1E_SET_ENABLE_RECT_PARTITIONS, OFFSET(enable_rect_partitions) }, - { AV1E_SET_ENABLE_1TO4_PARTITIONS, OFFSET(enable_1to4_partitions) }, - { AV1E_SET_ENABLE_AB_PARTITIONS, OFFSET(enable_ab_partitions) }, - { AV1E_SET_ENABLE_ANGLE_DELTA, OFFSET(enable_angle_delta) }, - { AV1E_SET_ENABLE_CFL_INTRA, OFFSET(enable_cfl_intra) }, - { AV1E_SET_ENABLE_FILTER_INTRA, OFFSET(enable_filter_intra) }, - { AV1E_SET_ENABLE_INTRA_EDGE_FILTER, OFFSET(enable_intra_edge_filter) }, - { AV1E_SET_ENABLE_PAETH_INTRA, OFFSET(enable_paeth_intra) }, - { AV1E_SET_ENABLE_SMOOTH_INTRA, OFFSET(enable_smooth_intra) }, - { AV1E_SET_ENABLE_PALETTE, OFFSET(enable_palette) }, - { AV1E_SET_ENABLE_TX64, OFFSET(enable_tx64) }, - { AV1E_SET_ENABLE_FLIP_IDTX, OFFSET(enable_flip_idtx) }, - { AV1E_SET_INTRA_DCT_ONLY, OFFSET(use_intra_dct_only) }, - { AV1E_SET_INTER_DCT_ONLY, OFFSET(use_inter_dct_only) }, - { AV1E_SET_INTRA_DEFAULT_TX_ONLY, OFFSET(use_intra_default_tx_only) }, - { AV1E_SET_REDUCED_TX_TYPE_SET, OFFSET(reduced_tx_type_set) }, - { AV1E_SET_ENABLE_REF_FRAME_MVS, OFFSET(enable_ref_frame_mvs) }, - { AV1E_SET_REDUCED_REFERENCE_SET, OFFSET(enable_reduced_reference_set) }, - { AV1E_SET_ENABLE_DIFF_WTD_COMP, OFFSET(enable_diff_wtd_comp) }, - { AV1E_SET_ENABLE_DIST_WTD_COMP, OFFSET(enable_dist_wtd_comp) }, - { AV1E_SET_ENABLE_DUAL_FILTER, OFFSET(enable_dual_filter) }, - { AV1E_SET_ENABLE_INTERINTER_WEDGE, OFFSET(enable_interinter_wedge) }, - { AV1E_SET_ENABLE_MASKED_COMP, OFFSET(enable_masked_comp) }, - { AV1E_SET_ENABLE_INTERINTRA_COMP, OFFSET(enable_interintra_comp) }, - { AV1E_SET_ENABLE_INTERINTRA_WEDGE, OFFSET(enable_interintra_wedge) }, - { AV1E_SET_ENABLE_OBMC, OFFSET(enable_obmc) }, - { AV1E_SET_ENABLE_ONESIDED_COMP, OFFSET(enable_onesided_comp) }, - { AV1E_SET_ENABLE_SMOOTH_INTERINTRA, OFFSET(enable_smooth_interintra) }, -}; - static av_cold int aom_init(AVCodecContext *avctx, const struct aom_codec_iface *iface) { @@ -798,6 +721,7 @@ static av_cold int aom_init(AVCodecContext *avctx, struct aom_codec_enc_cfg enccfg = { 0 }; aom_codec_flags_t flags = (avctx->flags & AV_CODEC_FLAG_PSNR) ? AOM_CODEC_USE_PSNR : 0; + AVCPBProperties *cpb_props; int res; aom_img_fmt_t img_fmt; aom_codec_caps_t codec_caps = aom_codec_get_caps(iface); @@ -924,7 +848,7 @@ static av_cold int aom_init(AVCodecContext *avctx, ret = av_reallocp(&ctx->twopass_stats.buf, ctx->twopass_stats.sz); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, - "Stat buffer alloc (%zu bytes) failed\n", + "Stat buffer alloc (%"SIZE_SPECIFIER" bytes) failed\n", ctx->twopass_stats.sz); ctx->twopass_stats.sz = 0; return ret; @@ -976,12 +900,73 @@ static av_cold int aom_init(AVCodecContext *avctx, // codec control failures are currently treated only as warnings av_log(avctx, AV_LOG_DEBUG, "aom_codec_control\n"); codecctl_int(avctx, AOME_SET_CPUUSED, ctx->cpu_used); + if (ctx->auto_alt_ref >= 0) + codecctl_int(avctx, AOME_SET_ENABLEAUTOALTREF, ctx->auto_alt_ref); + if (ctx->arnr_max_frames >= 0) + codecctl_int(avctx, AOME_SET_ARNR_MAXFRAMES, ctx->arnr_max_frames); + if (ctx->arnr_strength >= 0) + codecctl_int(avctx, AOME_SET_ARNR_STRENGTH, ctx->arnr_strength); + if (ctx->enable_cdef >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_CDEF, ctx->enable_cdef); + if (ctx->enable_restoration >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_RESTORATION, ctx->enable_restoration); + if (ctx->enable_rect_partitions >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_RECT_PARTITIONS, ctx->enable_rect_partitions); + if (ctx->enable_1to4_partitions >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_1TO4_PARTITIONS, ctx->enable_1to4_partitions); + if (ctx->enable_ab_partitions >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_AB_PARTITIONS, ctx->enable_ab_partitions); + if (ctx->enable_angle_delta >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_ANGLE_DELTA, ctx->enable_angle_delta); + if (ctx->enable_cfl_intra >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_CFL_INTRA, ctx->enable_cfl_intra); + if (ctx->enable_filter_intra >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_FILTER_INTRA, ctx->enable_filter_intra); + if (ctx->enable_intra_edge_filter >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_INTRA_EDGE_FILTER, ctx->enable_intra_edge_filter); + if (ctx->enable_paeth_intra >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_PAETH_INTRA, ctx->enable_paeth_intra); + if (ctx->enable_smooth_intra >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_SMOOTH_INTRA, ctx->enable_smooth_intra); + if (ctx->enable_palette >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_PALETTE, ctx->enable_palette); + if (ctx->enable_tx64 >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_TX64, ctx->enable_tx64); + if (ctx->enable_flip_idtx >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_FLIP_IDTX, ctx->enable_flip_idtx); + if (ctx->use_intra_dct_only >= 0) + codecctl_int(avctx, AV1E_SET_INTRA_DCT_ONLY, ctx->use_intra_dct_only); + if (ctx->use_inter_dct_only >= 0) + codecctl_int(avctx, AV1E_SET_INTER_DCT_ONLY, ctx->use_inter_dct_only); + if (ctx->use_intra_default_tx_only >= 0) + codecctl_int(avctx, AV1E_SET_INTRA_DEFAULT_TX_ONLY, ctx->use_intra_default_tx_only); + if (ctx->reduced_tx_type_set >= 0) + codecctl_int(avctx, AV1E_SET_REDUCED_TX_TYPE_SET, ctx->reduced_tx_type_set); + if (ctx->enable_ref_frame_mvs >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_REF_FRAME_MVS, ctx->enable_ref_frame_mvs); + if (ctx->enable_reduced_reference_set >= 0) + codecctl_int(avctx, AV1E_SET_REDUCED_REFERENCE_SET, ctx->enable_reduced_reference_set); + if (ctx->enable_diff_wtd_comp >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_DIFF_WTD_COMP, ctx->enable_diff_wtd_comp); + if (ctx->enable_dist_wtd_comp >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_DIST_WTD_COMP, ctx->enable_dist_wtd_comp); + if (ctx->enable_dual_filter >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_DUAL_FILTER, ctx->enable_dual_filter); + if (ctx->enable_interinter_wedge >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_INTERINTER_WEDGE, ctx->enable_interinter_wedge); + if (ctx->enable_masked_comp >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_MASKED_COMP, ctx->enable_masked_comp); + if (ctx->enable_interintra_comp >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_INTERINTRA_COMP, ctx->enable_interintra_comp); + if (ctx->enable_interintra_wedge >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_INTERINTRA_WEDGE, ctx->enable_interintra_wedge); + if (ctx->enable_obmc >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_OBMC, ctx->enable_obmc); + if (ctx->enable_onesided_comp >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_ONESIDED_COMP, ctx->enable_onesided_comp); + if (ctx->enable_smooth_interintra >= 0) + codecctl_int(avctx, AV1E_SET_ENABLE_SMOOTH_INTERINTRA, ctx->enable_smooth_interintra); - for (size_t i = 0; i < FF_ARRAY_ELEMS(option_map); ++i) { - int val = *(int*)((char*)ctx + option_map[i].offset); - if (val >= 0) - codecctl_int(avctx, option_map[i].aom_enum, val); - } codecctl_int(avctx, AOME_SET_STATIC_THRESHOLD, ctx->static_thresh); if (ctx->crf >= 0) codecctl_int(avctx, AOME_SET_CQ_LEVEL, ctx->crf); @@ -1079,6 +1064,10 @@ static av_cold int aom_init(AVCodecContext *avctx, if (codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH) ctx->rawimg.bit_depth = enccfg.g_bit_depth; + cpb_props = ff_encode_add_cpb_side_data(avctx); + if (!cpb_props) + return AVERROR(ENOMEM); + ctx->dovi.logctx = avctx; if ((res = ff_dovi_configure(&ctx->dovi, avctx)) < 0) return res; @@ -1105,10 +1094,6 @@ static av_cold int aom_init(AVCodecContext *avctx, return ret; } - AVCPBProperties *cpb_props = ff_encode_add_cpb_side_data(avctx); - if (!cpb_props) - return AVERROR(ENOMEM); - if (enccfg.rc_end_usage == AOM_CBR || enccfg.g_pass != AOM_RC_ONE_PASS) { cpb_props->max_bitrate = avctx->rc_max_rate; @@ -1150,11 +1135,11 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, AVPacket *pkt) { AOMContext *ctx = avctx->priv_data; - enum AVPictureType pict_type; + int av_unused pict_type; int ret = ff_get_encode_buffer(avctx, pkt, cx_frame->sz, 0); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, - "Error getting output packet of size %zu.\n", cx_frame->sz); + "Error getting output packet of size %"SIZE_SPECIFIER".\n", cx_frame->sz); return ret; } memcpy(pkt->data, cx_frame->buf, pkt->size); @@ -1170,8 +1155,8 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, pict_type = AV_PICTURE_TYPE_P; } - ff_encode_add_stats_side_data(pkt, 0, cx_frame->sse + 1, - cx_frame->have_sse ? 3 : 0, pict_type); + ff_side_data_set_encoder_stats(pkt, 0, cx_frame->sse + 1, + cx_frame->have_sse ? 3 : 0, pict_type); if (cx_frame->have_sse) { int i; @@ -1253,7 +1238,7 @@ static int queue_frames(AVCodecContext *avctx, AVPacket *pkt_out) if (!cx_frame->buf) { av_log(avctx, AV_LOG_ERROR, - "Data buffer alloc (%zu bytes) failed\n", + "Data buffer alloc (%"SIZE_SPECIFIER" bytes) failed\n", cx_frame->sz); av_freep(&cx_frame); return AVERROR(ENOMEM); @@ -1344,7 +1329,6 @@ static int aom_encode(AVCodecContext *avctx, AVPacket *pkt, if (frame) { rawimg = &ctx->rawimg; - aom_img_remove_metadata(rawimg); rawimg->planes[AOM_PLANE_Y] = frame->data[0]; rawimg->planes[AOM_PLANE_U] = frame->data[1]; rawimg->planes[AOM_PLANE_V] = frame->data[2]; @@ -1361,7 +1345,13 @@ static int aom_encode(AVCodecContext *avctx, AVPacket *pkt, else if (avctx->framerate.num > 0 && avctx->framerate.den > 0) duration = av_rescale_q(1, av_inv_q(avctx->framerate), avctx->time_base); else { - duration = 1; +FF_DISABLE_DEPRECATION_WARNINGS + duration = +#if FF_API_TICKS_PER_FRAME + avctx->ticks_per_frame ? avctx->ticks_per_frame : +#endif + 1; +FF_ENABLE_DEPRECATION_WARNINGS } switch (frame->color_range) { @@ -1414,10 +1404,6 @@ static int aom_encode(AVCodecContext *avctx, AVPacket *pkt, return res; } } - - res = add_hdr_plus(avctx, rawimg, frame); - if (res < 0) - return res; } res = aom_codec_encode(&ctx->encoder, rawimg, timestamp, duration, flags); @@ -1434,7 +1420,7 @@ static int aom_encode(AVCodecContext *avctx, AVPacket *pkt, avctx->stats_out = av_malloc(b64_size); if (!avctx->stats_out) { - av_log(avctx, AV_LOG_ERROR, "Stat buffer alloc (%zu bytes) failed\n", + av_log(avctx, AV_LOG_ERROR, "Stat buffer alloc (%"SIZE_SPECIFIER" bytes) failed\n", b64_size); return AVERROR(ENOMEM); } @@ -1572,6 +1558,7 @@ static av_cold int av1_init(AVCodecContext *avctx) return aom_init(avctx, aom_codec_av1_cx()); } +#define OFFSET(x) offsetof(AOMContext, x) #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { { "cpu-used", "Quality/Speed ratio modifier", OFFSET(cpu_used), AV_OPT_TYPE_INT, {.i64 = 1}, 0, 8, VE}, diff --git a/icecat/media/ffvpx/libavcodec/libdav1d.c b/icecat/media/ffvpx/libavcodec/libdav1d.c index 5af851085c..f4cbc927b5 100644 --- a/icecat/media/ffvpx/libavcodec/libdav1d.c +++ b/icecat/media/ffvpx/libavcodec/libdav1d.c @@ -50,6 +50,8 @@ typedef struct Libdav1dContext { int pool_size; Dav1dData data; + int tile_threads; + int frame_threads; int max_frame_delay; int apply_grain; int operating_point; @@ -143,14 +145,15 @@ static void libdav1d_init_params(AVCodecContext *c, const Dav1dSequenceHeader *s c->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; break; } - if (seq->color_description_present) { - c->colorspace = (enum AVColorSpace) seq->mtrx; - c->color_primaries = (enum AVColorPrimaries) seq->pri; - c->color_trc = (enum AVColorTransferCharacteristic) seq->trc; - } + c->colorspace = (enum AVColorSpace) seq->mtrx; + c->color_primaries = (enum AVColorPrimaries) seq->pri; + c->color_trc = (enum AVColorTransferCharacteristic) seq->trc; c->color_range = seq->color_range ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG; - if (seq->layout == DAV1D_PIXEL_LAYOUT_I444 && c->colorspace == AVCOL_SPC_RGB) + if (seq->layout == DAV1D_PIXEL_LAYOUT_I444 && + seq->mtrx == DAV1D_MC_IDENTITY && + seq->pri == DAV1D_COLOR_PRI_BT709 && + seq->trc == DAV1D_TRC_SRGB) c->pix_fmt = pix_fmt_rgb[seq->hbd]; else c->pix_fmt = pix_fmt[seq->layout][seq->hbd]; @@ -212,7 +215,11 @@ static av_cold int libdav1d_init(AVCodecContext *c) { Libdav1dContext *dav1d = c->priv_data; Dav1dSettings s; +#if FF_DAV1D_VERSION_AT_LEAST(6,0) int threads = c->thread_count; +#else + int threads = (c->thread_count ? c->thread_count : av_cpu_count()) * 3 / 2; +#endif const AVPacketSideData *sd; int res; @@ -233,14 +240,32 @@ static av_cold int libdav1d_init(AVCodecContext *c) s.all_layers = dav1d->all_layers; if (dav1d->operating_point >= 0) s.operating_point = dav1d->operating_point; +#if FF_DAV1D_VERSION_AT_LEAST(6,2) s.strict_std_compliance = c->strict_std_compliance > 0; +#endif - s.n_threads = FFMIN(threads, DAV1D_MAX_THREADS); +#if FF_DAV1D_VERSION_AT_LEAST(6,0) + if (dav1d->frame_threads || dav1d->tile_threads) + s.n_threads = FFMAX(dav1d->frame_threads, dav1d->tile_threads); + else + s.n_threads = FFMIN(threads, DAV1D_MAX_THREADS); if (dav1d->max_frame_delay > 0 && (c->flags & AV_CODEC_FLAG_LOW_DELAY)) av_log(c, AV_LOG_WARNING, "Low delay mode requested, forcing max_frame_delay 1\n"); s.max_frame_delay = (c->flags & AV_CODEC_FLAG_LOW_DELAY) ? 1 : dav1d->max_frame_delay; av_log(c, AV_LOG_DEBUG, "Using %d threads, %d max_frame_delay\n", s.n_threads, s.max_frame_delay); +#else + s.n_tile_threads = dav1d->tile_threads + ? dav1d->tile_threads + : FFMIN(floor(sqrt(threads)), DAV1D_MAX_TILE_THREADS); + s.n_frame_threads = dav1d->frame_threads + ? dav1d->frame_threads + : FFMIN(ceil(threads / s.n_tile_threads), DAV1D_MAX_FRAME_THREADS); + if (dav1d->max_frame_delay > 0) + s.n_frame_threads = FFMIN(s.n_frame_threads, dav1d->max_frame_delay); + av_log(c, AV_LOG_DEBUG, "Using %d frame threads, %d tile threads\n", + s.n_frame_threads, s.n_tile_threads); +#endif #if FF_DAV1D_VERSION_AT_LEAST(6,8) if (c->skip_frame >= AVDISCARD_NONKEY) @@ -361,130 +386,14 @@ static int libdav1d_receive_frame_internal(AVCodecContext *c, Dav1dPicture *p) return res; } -static int parse_itut_t35_metadata(Libdav1dContext *dav1d, Dav1dPicture *p, - const Dav1dITUTT35 *itut_t35, AVCodecContext *c, - AVFrame *frame) { - GetByteContext gb; - int provider_code, country_code; - int res; - - bytestream2_init(&gb, itut_t35->payload, itut_t35->payload_size); - - country_code = itut_t35->country_code; - switch (country_code) { - case ITU_T_T35_COUNTRY_CODE_US: - if (bytestream2_get_bytes_left(&gb) < 2) - return AVERROR_INVALIDDATA; - provider_code = bytestream2_get_be16u(&gb); - - switch (provider_code) { - case ITU_T_T35_PROVIDER_CODE_ATSC: { - uint32_t user_identifier = bytestream2_get_be32(&gb); - switch (user_identifier) { - case MKBETAG('G', 'A', '9', '4'): { // closed captions - AVBufferRef *buf = NULL; - - res = ff_parse_a53_cc(&buf, gb.buffer, bytestream2_get_bytes_left(&gb)); - if (res < 0) - return res; - if (!res) - return 0; // no cc found, ignore - - res = ff_frame_new_side_data_from_buf(c, frame, AV_FRAME_DATA_A53_CC, &buf); - if (res < 0) - return res; - -#if FF_API_CODEC_PROPS -FF_DISABLE_DEPRECATION_WARNINGS - c->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; -FF_ENABLE_DEPRECATION_WARNINGS -#endif - break; - } - default: // ignore unsupported identifiers - break; - } - break; - } - case ITU_T_T35_PROVIDER_CODE_SAMSUNG: { - AVDynamicHDRPlus *hdrplus; - int provider_oriented_code = bytestream2_get_be16(&gb); - int application_identifier = bytestream2_get_byte(&gb); - - if (provider_oriented_code != 1 || application_identifier != 4) - return 0; // ignore - - hdrplus = av_dynamic_hdr_plus_create_side_data(frame); - if (!hdrplus) - return AVERROR(ENOMEM); - - res = av_dynamic_hdr_plus_from_t35(hdrplus, gb.buffer, - bytestream2_get_bytes_left(&gb)); - if (res < 0) - return res; - break; - } - case ITU_T_T35_PROVIDER_CODE_DOLBY: { - int provider_oriented_code = bytestream2_get_be32(&gb); - if (provider_oriented_code != 0x800) - return 0; // ignore - - res = ff_dovi_rpu_parse(&dav1d->dovi, gb.buffer, bytestream2_get_bytes_left(&gb), - c->err_recognition); - if (res < 0) { - av_log(c, AV_LOG_WARNING, "Error parsing DOVI OBU.\n"); - return 0; // ignore - } - - res = ff_dovi_attach_side_data(&dav1d->dovi, frame); - if (res < 0) - return res; - break; - } - default: - break; - } - break; - case ITU_T_T35_COUNTRY_CODE_UK: - bytestream2_skipu(&gb, 1); // t35_uk_country_code_second_octet - if (bytestream2_get_bytes_left(&gb) < 2) - return AVERROR_INVALIDDATA; - - provider_code = bytestream2_get_be16u(&gb); - switch (provider_code) { - case ITU_T_T35_PROVIDER_CODE_VNOVA: { - AVFrameSideData *sd; - if (bytestream2_get_bytes_left(&gb) < 2) - return AVERROR_INVALIDDATA; - - res = ff_frame_new_side_data(c, frame, AV_FRAME_DATA_LCEVC, - bytestream2_get_bytes_left(&gb), &sd); - if (res < 0) - return res; - if (!sd) - break; - - bytestream2_get_bufferu(&gb, sd->data, sd->size); - break; - } - default: - break; - } - break; - - default: - // ignore unsupported provider codes - break; - } - return 0; -} - static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) { Libdav1dContext *dav1d = c->priv_data; Dav1dPicture pic = { 0 }, *p = &pic; const AVPacket *pkt; +#if FF_DAV1D_VERSION_AT_LEAST(5,1) enum Dav1dEventFlags event_flags = 0; +#endif int res; do { @@ -510,10 +419,12 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) frame->linesize[1] = p->stride[1]; frame->linesize[2] = p->stride[1]; +#if FF_DAV1D_VERSION_AT_LEAST(5,1) dav1d_get_event_flags(dav1d->c, &event_flags); - if (c->pix_fmt == AV_PIX_FMT_NONE || event_flags & DAV1D_EVENT_FLAG_NEW_SEQUENCE) - libdav1d_init_params(c, p->seq_hdr); - + if (c->pix_fmt == AV_PIX_FMT_NONE || + event_flags & DAV1D_EVENT_FLAG_NEW_SEQUENCE) +#endif + libdav1d_init_params(c, p->seq_hdr); res = ff_decode_frame_props(c, frame); if (res < 0) goto fail; @@ -603,9 +514,83 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) #else const Dav1dITUTT35 *itut_t35 = p->itut_t35; #endif - res = parse_itut_t35_metadata(dav1d, p, itut_t35, c, frame); - if (res < 0) - goto fail; + GetByteContext gb; + int provider_code; + + bytestream2_init(&gb, itut_t35->payload, itut_t35->payload_size); + + provider_code = bytestream2_get_be16(&gb); + switch (provider_code) { + case ITU_T_T35_PROVIDER_CODE_ATSC: { + uint32_t user_identifier = bytestream2_get_be32(&gb); + switch (user_identifier) { + case MKBETAG('G', 'A', '9', '4'): { // closed captions + AVBufferRef *buf = NULL; + + res = ff_parse_a53_cc(&buf, gb.buffer, bytestream2_get_bytes_left(&gb)); + if (res < 0) + goto fail; + if (!res) + break; + + res = ff_frame_new_side_data_from_buf(c, frame, AV_FRAME_DATA_A53_CC, &buf); + if (res < 0) + goto fail; + +#if FF_API_CODEC_PROPS +FF_DISABLE_DEPRECATION_WARNINGS + c->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + break; + } + default: // ignore unsupported identifiers + break; + } + break; + } + case ITU_T_T35_PROVIDER_CODE_SMTPE: { + AVDynamicHDRPlus *hdrplus; + int provider_oriented_code = bytestream2_get_be16(&gb); + int application_identifier = bytestream2_get_byte(&gb); + + if (itut_t35->country_code != ITU_T_T35_COUNTRY_CODE_US || + provider_oriented_code != 1 || application_identifier != 4) + break; + + hdrplus = av_dynamic_hdr_plus_create_side_data(frame); + if (!hdrplus) { + res = AVERROR(ENOMEM); + goto fail; + } + + res = av_dynamic_hdr_plus_from_t35(hdrplus, gb.buffer, + bytestream2_get_bytes_left(&gb)); + if (res < 0) + goto fail; + break; + } + case ITU_T_T35_PROVIDER_CODE_DOLBY: { + int provider_oriented_code = bytestream2_get_be32(&gb); + if (itut_t35->country_code != ITU_T_T35_COUNTRY_CODE_US || + provider_oriented_code != 0x800) + break; + + res = ff_dovi_rpu_parse(&dav1d->dovi, gb.buffer, gb.buffer_end - gb.buffer, + c->err_recognition); + if (res < 0) { + av_log(c, AV_LOG_WARNING, "Error parsing DOVI OBU.\n"); + break; // ignore + } + + res = ff_dovi_attach_side_data(&dav1d->dovi, frame); + if (res < 0) + goto fail; + break; + } + default: // ignore unsupported provider codes + break; + } #if FF_DAV1D_VERSION_AT_LEAST(6,9) } #endif @@ -659,10 +644,6 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame) sizeof(fgp->codec.aom.uv_offset)); } - res = ff_attach_decode_data(c, frame); - if (res < 0) - return res; - res = 0; fail: dav1d_picture_unref(p); @@ -696,6 +677,8 @@ static av_cold int libdav1d_close(AVCodecContext *c) #define OFFSET(x) offsetof(Libdav1dContext, x) #define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM static const AVOption libdav1d_options[] = { + { "tilethreads", "Tile threads", OFFSET(tile_threads), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, DAV1D_MAX_TILE_THREADS, VD | AV_OPT_FLAG_DEPRECATED }, + { "framethreads", "Frame threads", OFFSET(frame_threads), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, DAV1D_MAX_FRAME_THREADS, VD | AV_OPT_FLAG_DEPRECATED }, { "max_frame_delay", "Max frame delay", OFFSET(max_frame_delay), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, DAV1D_MAX_FRAME_DELAY, VD }, { "filmgrain", "Apply Film Grain", OFFSET(apply_grain), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VD | AV_OPT_FLAG_DEPRECATED }, { "oppoint", "Select an operating point of the scalable bitstream", OFFSET(operating_point), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 31, VD }, diff --git a/icecat/media/ffvpx/libavcodec/libopusdec.c b/icecat/media/ffvpx/libavcodec/libopusdec.c index fc2119baff..9b9a610343 100644 --- a/icecat/media/ffvpx/libavcodec/libopusdec.c +++ b/icecat/media/ffvpx/libavcodec/libopusdec.c @@ -139,7 +139,7 @@ static av_cold int libopus_decode_init(AVCodecContext *avc) #endif /* Decoder delay (in samples) at 48kHz */ - avc->delay = opus->pre_skip; + avc->delay = avc->internal->skip_samples = opus->pre_skip; return 0; } @@ -244,7 +244,9 @@ const FFCodec ff_libopus_decoder = { .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16), + .p.sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_FLT, + AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_NONE }, .p.priv_class = &libopusdec_class, .p.wrapper_name = "libopus", }; diff --git a/icecat/media/ffvpx/libavcodec/libopusenc.c b/icecat/media/ffvpx/libavcodec/libopusenc.c index 3b4139f995..d1095d3177 100644 --- a/icecat/media/ffvpx/libavcodec/libopusenc.c +++ b/icecat/media/ffvpx/libavcodec/libopusenc.c @@ -519,7 +519,7 @@ static int libopus_encode(AVCodecContext *avctx, AVPacket *avpkt, ff_af_queue_remove(&opus->afq, opus->opts.packet_size, &avpkt->pts, &avpkt->duration); - discard_padding = opus->opts.packet_size - ff_samples_from_time_base(avctx, avpkt->duration); + discard_padding = opus->opts.packet_size - avpkt->duration; // Check if subtraction resulted in an overflow if ((discard_padding < opus->opts.packet_size) != (avpkt->duration > 0)) return AVERROR(EINVAL); @@ -601,8 +601,10 @@ const FFCodec ff_libopus_encoder = { .init = libopus_encode_init, FF_CODEC_ENCODE_CB(libopus_encode), .close = libopus_encode_close, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_FLT), - CODEC_SAMPLERATES_ARRAY(libopus_sample_rates), + .p.sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_FLT, + AV_SAMPLE_FMT_NONE }, + .p.supported_samplerates = libopus_sample_rates, .p.priv_class = &libopus_class, .defaults = libopus_defaults, .p.wrapper_name = "libopus", diff --git a/icecat/media/ffvpx/libavcodec/libvorbisdec.c b/icecat/media/ffvpx/libavcodec/libvorbisdec.c index b38f423b9f..a5e7a691d6 100644 --- a/icecat/media/ffvpx/libavcodec/libvorbisdec.c +++ b/icecat/media/ffvpx/libavcodec/libvorbisdec.c @@ -18,7 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include #include #include "avcodec.h" @@ -36,8 +35,7 @@ typedef struct OggVorbisDecContext { static int oggvorbis_decode_close(AVCodecContext *avccontext); -static av_cold int oggvorbis_decode_init(AVCodecContext *avccontext) -{ +static int oggvorbis_decode_init(AVCodecContext *avccontext) { OggVorbisDecContext *context = avccontext->priv_data ; uint8_t *p= avccontext->extradata; int i, hsizes[3], ret; @@ -115,17 +113,11 @@ static av_cold int oggvorbis_decode_init(AVCodecContext *avccontext) } } - if (context->vi.rate <= 0 || context->vi.rate > INT_MAX) { - av_log(avccontext, AV_LOG_ERROR, "vorbis rate is invalid\n"); - ret = AVERROR_INVALIDDATA; - goto error; - } - av_channel_layout_uninit(&avccontext->ch_layout); avccontext->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; avccontext->ch_layout.nb_channels = context->vi.channels; avccontext->sample_rate = context->vi.rate; - avccontext->sample_fmt = AV_SAMPLE_FMT_FLTP; + avccontext->sample_fmt = AV_SAMPLE_FMT_S16; avccontext->time_base= (AVRational){1, avccontext->sample_rate}; vorbis_synthesis_init(&context->vd, &context->vi); @@ -139,14 +131,33 @@ static av_cold int oggvorbis_decode_init(AVCodecContext *avccontext) } +static inline int conv(int samples, float **pcm, char *buf, int channels) { + int i, j; + ogg_int16_t *ptr, *data = (ogg_int16_t*)buf ; + float *mono ; + + for(i = 0 ; i < channels ; i++){ + ptr = &data[i]; + mono = pcm[i] ; + + for(j = 0 ; j < samples ; j++) { + *ptr = av_clip_int16(mono[j] * 32767.f); + ptr += channels; + } + } + + return 0 ; +} + static int oggvorbis_decode_frame(AVCodecContext *avccontext, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt) { OggVorbisDecContext *context = avccontext->priv_data ; float **pcm ; ogg_packet *op= &context->op; - int samples, total_samples; + int samples, total_samples, total_bytes; int ret; + int16_t *output; if(!avpkt->size){ //FIXME flush @@ -156,6 +167,8 @@ static int oggvorbis_decode_frame(AVCodecContext *avccontext, AVFrame *frame, frame->nb_samples = 8192*4; if ((ret = ff_get_buffer(avccontext, frame, 0)) < 0) return ret; + output = (int16_t *)frame->data[0]; + op->packet = avpkt->data; op->bytes = avpkt->size; @@ -170,10 +183,11 @@ static int oggvorbis_decode_frame(AVCodecContext *avccontext, AVFrame *frame, vorbis_synthesis_blockin(&context->vd, &context->vb) ; total_samples = 0 ; + total_bytes = 0 ; while((samples = vorbis_synthesis_pcmout(&context->vd, &pcm)) > 0) { - for (int ch = 0; ch < context->vi.channels; ch++) - memcpy((float *)frame->extended_data[ch] + total_samples, pcm[ch], samples * sizeof(float)); + conv(samples, pcm, (char*)output + total_bytes, context->vi.channels) ; + total_bytes += samples * 2 * context->vi.channels ; total_samples += samples ; vorbis_synthesis_read(&context->vd, samples) ; } @@ -184,8 +198,7 @@ static int oggvorbis_decode_frame(AVCodecContext *avccontext, AVFrame *frame, } -static av_cold int oggvorbis_decode_close(AVCodecContext *avccontext) -{ +static int oggvorbis_decode_close(AVCodecContext *avccontext) { OggVorbisDecContext *context = avccontext->priv_data ; vorbis_block_clear(&context->vb); diff --git a/icecat/media/ffvpx/libavcodec/libvorbisenc.c b/icecat/media/ffvpx/libavcodec/libvorbisenc.c index c54ebebae8..e4f8cb67ef 100644 --- a/icecat/media/ffvpx/libavcodec/libvorbisenc.c +++ b/icecat/media/ffvpx/libavcodec/libvorbisenc.c @@ -23,7 +23,6 @@ #include "libavutil/avassert.h" #include "libavutil/channel_layout.h" #include "libavutil/fifo.h" -#include "libavutil/intreadwrite.h" #include "libavutil/mem.h" #include "libavutil/opt.h" #include "avcodec.h" @@ -180,62 +179,6 @@ error: return vorbis_error_to_averror(ret); } -static av_cold int libvorbis_get_priming_samples(vorbis_info *vi, AVCodecContext *avctx) -{ - LibvorbisEncContext *s = avctx->priv_data; - vorbis_dsp_state vd; - vorbis_block vb; - ogg_packet op; - int ret; - - if ((ret = vorbis_analysis_init(&vd, vi))) { - av_log(avctx, AV_LOG_ERROR, "analysis init failed\n"); - return vorbis_error_to_averror(ret); - } - if ((ret = vorbis_block_init(&vd, &vb))) { - av_log(avctx, AV_LOG_ERROR, "dsp init failed\n"); - vorbis_dsp_clear(&vd); - return vorbis_error_to_averror(ret); - } - - if ((ret = vorbis_analysis_wrote(&vd, 0)) < 0) { - av_log(avctx, AV_LOG_ERROR, "error in vorbis_analysis_wrote() during init\n"); - ret = vorbis_error_to_averror(ret); - goto error; - } - - /* retrieve available packets from libvorbis */ - if ((ret = vorbis_analysis_blockout(&vd, &vb)) == 1) { - if ((ret = vorbis_analysis(&vb, NULL)) < 0) { - av_log(avctx, AV_LOG_ERROR, "error in vorbis_analysis_blockout() during init\n"); - ret = vorbis_error_to_averror(ret); - goto error; - } - if ((ret = vorbis_bitrate_addblock(&vb)) < 0) { - av_log(avctx, AV_LOG_ERROR, "error in vorbis_bitrate_addblock() during init\n"); - ret = vorbis_error_to_averror(ret); - goto error; - } - - /* add any available packets to the output packet buffer */ - ret = vorbis_bitrate_flushpacket(&vd, &op); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "error in vorbis_bitrate_flushpacket() during init\n"); - ret = vorbis_error_to_averror(ret); - goto error; - } - } - - avctx->initial_padding = av_vorbis_parse_frame(s->vp, op.packet, op.bytes); - - ret = 0; -error: - vorbis_block_clear(&vb); - vorbis_dsp_clear(&vd); - - return ret; -} - /* How many bytes are needed for a buffer of length 'l' */ static int xiph_len(int l) { @@ -326,9 +269,6 @@ static av_cold int libvorbis_encode_init(AVCodecContext *avctx) vorbis_comment_clear(&s->vc); - if ((ret = libvorbis_get_priming_samples(&s->vi, avctx))) - return ret; - avctx->frame_size = LIBVORBIS_FRAME_SIZE; ff_af_queue_init(avctx, &s->afq); @@ -417,19 +357,17 @@ static int libvorbis_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, duration = av_vorbis_parse_frame(s->vp, avpkt->data, avpkt->size); if (duration > 0) { - int discard_padding; - - ff_af_queue_remove(&s->afq, duration, &avpkt->pts, &avpkt->duration); - - discard_padding = duration - ff_samples_from_time_base(avctx, avpkt->duration); - if (discard_padding > 0) { - uint8_t *side_data = av_packet_new_side_data(avpkt, - AV_PKT_DATA_SKIP_SAMPLES, - 10); - if (!side_data) - return AVERROR(ENOMEM); - AV_WL32(side_data + 4, discard_padding); + /* we do not know encoder delay until we get the first packet from + * libvorbis, so we have to update the AudioFrameQueue counts */ + if (!avctx->initial_padding && s->afq.frames) { + avctx->initial_padding = duration; + av_assert0(!s->afq.remaining_delay); + s->afq.frames->duration += duration; + if (s->afq.frames->pts != AV_NOPTS_VALUE) + s->afq.frames->pts -= duration; + s->afq.remaining_samples += duration; } + ff_af_queue_remove(&s->afq, duration, &avpkt->pts, &avpkt->duration); } *got_packet_ptr = 1; @@ -448,7 +386,8 @@ const FFCodec ff_libvorbis_encoder = { .init = libvorbis_encode_init, FF_CODEC_ENCODE_CB(libvorbis_encode_frame), .close = libvorbis_encode_close, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_FLTP), + .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, + AV_SAMPLE_FMT_NONE }, .p.priv_class = &vorbis_class, .defaults = defaults, .p.wrapper_name = "libvorbis", diff --git a/icecat/media/ffvpx/libavcodec/libvpxdec.c b/icecat/media/ffvpx/libavcodec/libvpxdec.c index 317725bf31..c6187fd5a1 100644 --- a/icecat/media/ffvpx/libavcodec/libvpxdec.c +++ b/icecat/media/ffvpx/libavcodec/libvpxdec.c @@ -41,7 +41,6 @@ #include "profiles.h" typedef struct VPxDecoderContext { - const struct vpx_codec_iface *iface; struct vpx_codec_ctx decoder; struct vpx_codec_ctx decoder_alpha; AVBufferPool *pool; @@ -85,9 +84,9 @@ static int release_frame_buffer(void *priv, vpx_codec_frame_buffer_t *fb) } static av_cold int vpx_init(AVCodecContext *avctx, - struct vpx_codec_ctx* decoder) + struct vpx_codec_ctx* decoder, + const struct vpx_codec_iface *iface) { - VPxContext *ctx = avctx->priv_data; struct vpx_codec_dec_cfg deccfg = { .threads = FFMIN(avctx->thread_count ? avctx->thread_count : av_cpu_count(), MAX_VPX_THREADS) }; @@ -95,20 +94,15 @@ static av_cold int vpx_init(AVCodecContext *avctx, av_log(avctx, AV_LOG_INFO, "%s\n", vpx_codec_version_str()); av_log(avctx, AV_LOG_VERBOSE, "%s\n", vpx_codec_build_config()); - if (vpx_codec_dec_init(decoder, ctx->iface, &deccfg, 0) != VPX_CODEC_OK) { + if (vpx_codec_dec_init(decoder, iface, &deccfg, 0) != VPX_CODEC_OK) { const char *error = vpx_codec_error(decoder); av_log(avctx, AV_LOG_ERROR, "Failed to initialize decoder: %s\n", error); return AVERROR(EINVAL); } - if (vpx_codec_get_caps(ctx->iface) & VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER) { - if (vpx_codec_set_frame_buffer_functions(decoder, get_frame_buffer, release_frame_buffer, avctx->priv_data)) { - vpx_codec_destroy(decoder); - av_log(avctx, AV_LOG_ERROR, "Failed to set frame buffer.\n"); - return AVERROR_EXTERNAL; - } - } + if (avctx->codec_id == AV_CODEC_ID_VP9) + vpx_codec_set_frame_buffer_functions(decoder, get_frame_buffer, release_frame_buffer, avctx->priv_data); return 0; } @@ -140,28 +134,23 @@ static int set_pix_fmt(AVCodecContext *avctx, struct vpx_image *img, #if CONFIG_LIBVPX_VP9_DECODER case VPX_IMG_FMT_I422: avctx->profile = AV_PROFILE_VP9_1; - avctx->pix_fmt = - has_alpha_channel ? AV_PIX_FMT_YUVA422P : AV_PIX_FMT_YUV422P; + avctx->pix_fmt = AV_PIX_FMT_YUV422P; return 0; case VPX_IMG_FMT_I440: - //TODO: Add alpha support once the pixel format becomes available avctx->profile = AV_PROFILE_VP9_1; avctx->pix_fmt = AV_PIX_FMT_YUV440P; return 0; case VPX_IMG_FMT_I444: avctx->profile = AV_PROFILE_VP9_1; avctx->pix_fmt = avctx->colorspace == AVCOL_SPC_RGB ? - (has_alpha_channel ? AV_PIX_FMT_GBRAP : AV_PIX_FMT_GBRP) : - (has_alpha_channel ? AV_PIX_FMT_YUVA444P : AV_PIX_FMT_YUV444P); + AV_PIX_FMT_GBRP : AV_PIX_FMT_YUV444P; return 0; case VPX_IMG_FMT_I42016: avctx->profile = AV_PROFILE_VP9_2; if (img->bit_depth == 10) { - avctx->pix_fmt = - has_alpha_channel ? AV_PIX_FMT_YUVA420P10 : AV_PIX_FMT_YUV420P10; + avctx->pix_fmt = AV_PIX_FMT_YUV420P10; return 0; } else if (img->bit_depth == 12) { - //TODO: Add alpha support once the pixel format becomes available avctx->pix_fmt = AV_PIX_FMT_YUV420P12; return 0; } else { @@ -170,18 +159,15 @@ static int set_pix_fmt(AVCodecContext *avctx, struct vpx_image *img, case VPX_IMG_FMT_I42216: avctx->profile = AV_PROFILE_VP9_3; if (img->bit_depth == 10) { - avctx->pix_fmt = - has_alpha_channel ? AV_PIX_FMT_YUVA422P10 : AV_PIX_FMT_YUV422P10; + avctx->pix_fmt = AV_PIX_FMT_YUV422P10; return 0; } else if (img->bit_depth == 12) { - //TODO: Add alpha support once the pixel format becomes available avctx->pix_fmt = AV_PIX_FMT_YUV422P12; return 0; } else { return AVERROR_INVALIDDATA; } case VPX_IMG_FMT_I44016: - //TODO: Add alpha support once the pixel format becomes available avctx->profile = AV_PROFILE_VP9_3; if (img->bit_depth == 10) { avctx->pix_fmt = AV_PIX_FMT_YUV440P10; @@ -196,13 +182,11 @@ static int set_pix_fmt(AVCodecContext *avctx, struct vpx_image *img, avctx->profile = AV_PROFILE_VP9_3; if (img->bit_depth == 10) { avctx->pix_fmt = avctx->colorspace == AVCOL_SPC_RGB ? - (has_alpha_channel ? AV_PIX_FMT_GBRAP10 : AV_PIX_FMT_GBRP10) : - (has_alpha_channel ? AV_PIX_FMT_YUVA444P10 : AV_PIX_FMT_YUV444P10); + AV_PIX_FMT_GBRP10 : AV_PIX_FMT_YUV444P10; return 0; } else if (img->bit_depth == 12) { avctx->pix_fmt = avctx->colorspace == AVCOL_SPC_RGB ? - (has_alpha_channel ? AV_PIX_FMT_GBRAP12 : AV_PIX_FMT_GBRP12) : - (has_alpha_channel ? AV_PIX_FMT_YUVA444P12 : AV_PIX_FMT_YUV444P12); + AV_PIX_FMT_GBRP12 : AV_PIX_FMT_YUV444P12; return 0; } else { return AVERROR_INVALIDDATA; @@ -255,7 +239,17 @@ static int vpx_decode(AVCodecContext *avctx, AVFrame *picture, if (additional_id == 1) { // 1 stands for alpha channel data. if (!ctx->has_alpha_channel) { ctx->has_alpha_channel = 1; - ret = vpx_init(avctx, &ctx->decoder_alpha); + ret = vpx_init(avctx, + &ctx->decoder_alpha, +#if CONFIG_LIBVPX_VP8_DECODER && CONFIG_LIBVPX_VP9_DECODER + (avctx->codec_id == AV_CODEC_ID_VP8) ? + vpx_codec_vp8_dx() : vpx_codec_vp9_dx() +#elif CONFIG_LIBVPX_VP8_DECODER + vpx_codec_vp8_dx() +#else + vpx_codec_vp9_dx() +#endif + ); if (ret) return ret; } @@ -314,7 +308,7 @@ static int vpx_decode(AVCodecContext *avctx, AVFrame *picture, linesizes[3] = ctx->has_alpha_channel ? img_alpha->stride[VPX_PLANE_Y] : 0; - if (vpx_codec_get_caps(ctx->iface) & VPX_CODEC_CAP_EXTERNAL_FRAME_BUFFER) { + if (img->fb_priv && (!ctx->has_alpha_channel || img_alpha->fb_priv)) { ret = ff_decode_frame_props(avctx, picture); if (ret < 0) return ret; @@ -355,8 +349,7 @@ static av_cold int vpx_free(AVCodecContext *avctx) static av_cold int vp8_init(AVCodecContext *avctx) { VPxContext *ctx = avctx->priv_data; - ctx->iface = vpx_codec_vp8_dx(); - return vpx_init(avctx, &ctx->decoder); + return vpx_init(avctx, &ctx->decoder, vpx_codec_vp8_dx()); } const FFCodec ff_libvpx_vp8_decoder = { @@ -379,8 +372,7 @@ const FFCodec ff_libvpx_vp8_decoder = { static av_cold int vp9_init(AVCodecContext *avctx) { VPxContext *ctx = avctx->priv_data; - ctx->iface = vpx_codec_vp9_dx(); - return vpx_init(avctx, &ctx->decoder); + return vpx_init(avctx, &ctx->decoder, vpx_codec_vp9_dx()); } const FFCodec ff_libvpx_vp9_decoder = { diff --git a/icecat/media/ffvpx/libavcodec/libvpxenc.c b/icecat/media/ffvpx/libavcodec/libvpxenc.c index c181927a1d..228ede7c84 100644 --- a/icecat/media/ffvpx/libavcodec/libvpxenc.c +++ b/icecat/media/ffvpx/libavcodec/libvpxenc.c @@ -36,6 +36,7 @@ #include "libavutil/avassert.h" #include "libavutil/mem.h" #include "libvpx.h" +#include "packet_internal.h" #include "profiles.h" #include "libavutil/avstring.h" #include "libavutil/base64.h" @@ -202,14 +203,15 @@ static const char *const ctlidstr[] = { #endif }; -static av_cold void log_encoder_error(void *logctx, struct vpx_codec_ctx *encoder, const char *desc) +static av_cold void log_encoder_error(AVCodecContext *avctx, const char *desc) { - const char *error = vpx_codec_error(encoder); - const char *detail = vpx_codec_error_detail(encoder); + VPxContext *ctx = avctx->priv_data; + const char *error = vpx_codec_error(&ctx->encoder); + const char *detail = vpx_codec_error_detail(&ctx->encoder); - av_log(logctx, AV_LOG_ERROR, "%s: %s\n", desc, error); + av_log(avctx, AV_LOG_ERROR, "%s: %s\n", desc, error); if (detail) - av_log(logctx, AV_LOG_ERROR, " Additional information: %s\n", detail); + av_log(avctx, AV_LOG_ERROR, " Additional information: %s\n", detail); } static av_cold void dump_enc_cfg(AVCodecContext *avctx, @@ -241,7 +243,7 @@ static av_cold void dump_enc_cfg(AVCodecContext *avctx, width, "g_lag_in_frames:", cfg->g_lag_in_frames); av_log(avctx, level, "rate control settings\n" " %*s%u\n %*s%u\n %*s%u\n %*s%u\n" - " %*s%d\n %*s%p(%zu)\n %*s%u\n", + " %*s%d\n %*s%p(%"SIZE_SPECIFIER")\n %*s%u\n", width, "rc_dropframe_thresh:", cfg->rc_dropframe_thresh, width, "rc_resize_allowed:", cfg->rc_resize_allowed, width, "rc_resize_up_thresh:", cfg->rc_resize_up_thresh, @@ -351,13 +353,6 @@ static av_cold void fifo_free(AVFifo **fifo) av_fifo_freep2(fifo); } -static int encoder_can_drop_frames(AVCodecContext *avctx) -{ - VPxContext *ctx = avctx->priv_data; - - return (ctx->drop_threshold > 0) || (ctx->screen_content_mode == 2); -} - static int frame_data_submit(AVCodecContext *avctx, AVFifo *fifo, const AVFrame *frame) { @@ -389,18 +384,6 @@ static int frame_data_submit(AVCodecContext *avctx, AVFifo *fifo, } ret = av_fifo_write(fifo, &fd, 1); - if (ret == AVERROR(ENOSPC)) { - FrameData fd2; - - av_log(avctx, AV_LOG_WARNING, "FIFO full, will drop a front element\n"); - - ret = av_fifo_read(fifo, &fd2, 1); - if (ret >= 0) { - frame_data_uninit(&fd2); - ret = av_fifo_write(fifo, &fd, 1); - } - } - if (ret < 0) goto fail; @@ -416,25 +399,13 @@ static int frame_data_apply(AVCodecContext *avctx, AVFifo *fifo, AVPacket *pkt) uint8_t *data; int ret = 0; - while (1) { - if (av_fifo_peek(fifo, &fd, 1, 0) < 0) - return 0; - - if (fd.pts == pkt->pts) { - break; - } - - if (!encoder_can_drop_frames(avctx)) { - av_log(avctx, AV_LOG_WARNING, - "Mismatching timestamps: libvpx %"PRId64" queued %"PRId64"; " - "this is a bug, please report it\n", pkt->pts, fd.pts); - goto skip; - } - - av_log(avctx, AV_LOG_DEBUG, "Dropped frame with pts %"PRId64"\n", - fd.pts); - av_fifo_drain2(fifo, 1); - frame_data_uninit(&fd); + if (av_fifo_peek(fifo, &fd, 1, 0) < 0) + return 0; + if (fd.pts != pkt->pts) { + av_log(avctx, AV_LOG_WARNING, + "Mismatching timestamps: libvpx %"PRId64" queued %"PRId64"; " + "this is a bug, please report it\n", pkt->pts, fd.pts); + goto skip; } pkt->duration = fd.duration; @@ -476,16 +447,16 @@ static av_cold int codecctl_int(AVCodecContext *avctx, if (res != VPX_CODEC_OK) { snprintf(buf, sizeof(buf), "Failed to set %s codec control", ctlidstr[id]); - log_encoder_error(avctx, &ctx->encoder, buf); + log_encoder_error(avctx, buf); return AVERROR(EINVAL); } - if (ctx->is_alpha && id != VP9E_SET_COLOR_SPACE) { + if (ctx->is_alpha) { int res_alpha = vpx_codec_control(&ctx->encoder_alpha, id, val); if (res_alpha != VPX_CODEC_OK) { snprintf(buf, sizeof(buf), "Failed to set %s alpha codec control", ctlidstr[id]); - log_encoder_error(avctx, &ctx->encoder_alpha, buf); + log_encoder_error(avctx, buf); return AVERROR(EINVAL); } } @@ -509,7 +480,7 @@ static av_cold int codecctl_intp(AVCodecContext *avctx, if (res != VPX_CODEC_OK) { snprintf(buf, sizeof(buf), "Failed to set %s codec control", ctlidstr[id]); - log_encoder_error(avctx, &ctx->encoder, buf); + log_encoder_error(avctx, buf); return AVERROR(EINVAL); } @@ -518,7 +489,7 @@ static av_cold int codecctl_intp(AVCodecContext *avctx, if (res_alpha != VPX_CODEC_OK) { snprintf(buf, sizeof(buf), "Failed to set %s alpha codec control", ctlidstr[id]); - log_encoder_error(avctx, &ctx->encoder_alpha, buf); + log_encoder_error(avctx, buf); return AVERROR(EINVAL); } } @@ -825,7 +796,6 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, *img_fmt = VPX_IMG_FMT_I420; return 0; case AV_PIX_FMT_YUV422P: - case AV_PIX_FMT_YUVA422P: enccfg->g_profile = 1; *img_fmt = VPX_IMG_FMT_I422; return 0; @@ -834,17 +804,12 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, *img_fmt = VPX_IMG_FMT_I440; return 0; case AV_PIX_FMT_GBRP: - case AV_PIX_FMT_GBRAP: ctx->vpx_cs = VPX_CS_SRGB; case AV_PIX_FMT_YUV444P: - case AV_PIX_FMT_YUVA444P: - if (avctx->colorspace == AVCOL_SPC_RGB) - ctx->vpx_cs = VPX_CS_SRGB; enccfg->g_profile = 1; *img_fmt = VPX_IMG_FMT_I444; return 0; case AV_PIX_FMT_YUV420P10: - case AV_PIX_FMT_YUVA420P10: case AV_PIX_FMT_YUV420P12: if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { enccfg->g_profile = 2; @@ -854,7 +819,6 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, } break; case AV_PIX_FMT_YUV422P10: - case AV_PIX_FMT_YUVA422P10: case AV_PIX_FMT_YUV422P12: if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { enccfg->g_profile = 3; @@ -873,16 +837,10 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, } break; case AV_PIX_FMT_GBRP10: - case AV_PIX_FMT_GBRAP10: case AV_PIX_FMT_GBRP12: - case AV_PIX_FMT_GBRAP12: ctx->vpx_cs = VPX_CS_SRGB; case AV_PIX_FMT_YUV444P10: - case AV_PIX_FMT_YUVA444P10: case AV_PIX_FMT_YUV444P12: - case AV_PIX_FMT_YUVA444P12: - if (avctx->colorspace == AVCOL_SPC_RGB) - ctx->vpx_cs = VPX_CS_SRGB; if (codec_caps & VPX_CODEC_CAP_HIGHBITDEPTH) { enccfg->g_profile = 3; *img_fmt = VPX_IMG_FMT_I44416; @@ -897,7 +855,7 @@ static int set_pix_fmt(AVCodecContext *avctx, vpx_codec_caps_t codec_caps, return AVERROR_INVALIDDATA; } -static int set_colorspace(AVCodecContext *avctx) +static void set_colorspace(AVCodecContext *avctx) { enum vpx_color_space vpx_cs; VPxContext *ctx = avctx->priv_data; @@ -906,11 +864,7 @@ static int set_colorspace(AVCodecContext *avctx) vpx_cs = ctx->vpx_cs; } else { switch (avctx->colorspace) { - case AVCOL_SPC_RGB: - av_log(avctx, AV_LOG_ERROR, - "RGB colorspace is not compatible with pixel format %s.\n", - av_get_pix_fmt_name(avctx->pix_fmt)); - return AVERROR(EINVAL); + case AVCOL_SPC_RGB: vpx_cs = VPX_CS_SRGB; break; case AVCOL_SPC_BT709: vpx_cs = VPX_CS_BT_709; break; case AVCOL_SPC_UNSPECIFIED: vpx_cs = VPX_CS_UNKNOWN; break; case AVCOL_SPC_RESERVED: vpx_cs = VPX_CS_RESERVED; break; @@ -921,11 +875,10 @@ static int set_colorspace(AVCodecContext *avctx) default: av_log(avctx, AV_LOG_WARNING, "Unsupported colorspace (%d)\n", avctx->colorspace); - return 0; + return; } } codecctl_int(avctx, VP9E_SET_COLOR_SPACE, vpx_cs); - return 0; } #if VPX_ENCODER_ABI_VERSION >= 11 @@ -1022,21 +975,12 @@ static av_cold int vpx_init(AVCodecContext *avctx, vpx_svc_extra_cfg_t svc_params; #endif const AVDictionaryEntry* en = NULL; - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); av_log(avctx, AV_LOG_INFO, "%s\n", vpx_codec_version_str()); av_log(avctx, AV_LOG_VERBOSE, "%s\n", vpx_codec_build_config()); - if (desc && (desc->flags & AV_PIX_FMT_FLAG_ALPHA)) { + if (avctx->pix_fmt == AV_PIX_FMT_YUVA420P) ctx->is_alpha = 1; - if (avctx->pix_fmt != AV_PIX_FMT_YUVA420P && avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { - av_log(avctx, AV_LOG_ERROR, - "Pixel format '%s' is not widely supported. " - "Use -strict experimental to use it anyway, or use 'yuva420p' pixel format instead.\n", - av_get_pix_fmt_name(avctx->pix_fmt)); - return AVERROR(EINVAL); - } - } if ((res = vpx_codec_enc_config_default(iface, &enccfg, 0)) != VPX_CODEC_OK) { av_log(avctx, AV_LOG_ERROR, "Failed to get config: %s\n", @@ -1174,7 +1118,7 @@ static av_cold int vpx_init(AVCodecContext *avctx, ret = av_reallocp(&ctx->twopass_stats.buf, ctx->twopass_stats.sz); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, - "Stat buffer alloc (%zu bytes) failed\n", + "Stat buffer alloc (%"SIZE_SPECIFIER" bytes) failed\n", ctx->twopass_stats.sz); ctx->twopass_stats.sz = 0; return ret; @@ -1209,7 +1153,7 @@ static av_cold int vpx_init(AVCodecContext *avctx, res = vpx_codec_enc_init(&ctx->encoder, iface, &enccfg, flags); if (res != VPX_CODEC_OK) { dump_enc_cfg(avctx, &enccfg, AV_LOG_WARNING); - log_encoder_error(avctx, &ctx->encoder, "Failed to initialize encoder"); + log_encoder_error(avctx, "Failed to initialize encoder"); return AVERROR(EINVAL); } dump_enc_cfg(avctx, &enccfg, AV_LOG_DEBUG); @@ -1231,10 +1175,9 @@ static av_cold int vpx_init(AVCodecContext *avctx, #endif if (ctx->is_alpha) { enccfg_alpha = enccfg; - enccfg_alpha.g_profile = (flags & VPX_CODEC_USE_HIGHBITDEPTH) ? 2 : 0; res = vpx_codec_enc_init(&ctx->encoder_alpha, iface, &enccfg_alpha, flags); if (res != VPX_CODEC_OK) { - log_encoder_error(avctx, &ctx->encoder_alpha, "Failed to initialize alpha encoder"); + log_encoder_error(avctx, "Failed to initialize alpha encoder"); return AVERROR(EINVAL); } } @@ -1286,9 +1229,7 @@ static av_cold int vpx_init(AVCodecContext *avctx, codecctl_int(avctx, VP9E_SET_FRAME_PARALLEL_DECODING, ctx->frame_parallel); if (ctx->aq_mode >= 0) codecctl_int(avctx, VP9E_SET_AQ_MODE, ctx->aq_mode); - res = set_colorspace(avctx); - if (res < 0) - return res; + set_colorspace(avctx); #if VPX_ENCODER_ABI_VERSION >= 11 set_color_range(avctx); #endif @@ -1383,7 +1324,7 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, VPxContext *ctx = avctx->priv_data; int ret = ff_get_encode_buffer(avctx, pkt, cx_frame->sz, 0); uint8_t *side_data; - enum AVPictureType pict_type; + int pict_type; int quality; if (ret < 0) @@ -1402,8 +1343,8 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, ret = vpx_codec_control(&ctx->encoder, VP8E_GET_LAST_QUANTIZER_64, &quality); if (ret != VPX_CODEC_OK) quality = 0; - ff_encode_add_stats_side_data(pkt, quality * FF_QP2LAMBDA, cx_frame->sse + 1, - cx_frame->have_sse ? 3 : 0, pict_type); + ff_side_data_set_encoder_stats(pkt, quality * FF_QP2LAMBDA, cx_frame->sse + 1, + cx_frame->have_sse ? 3 : 0, pict_type); if (cx_frame->have_sse) { /* Beware of the Y/U/V/all order! */ @@ -1483,7 +1424,7 @@ static int queue_frames(AVCodecContext *avctx, struct vpx_codec_ctx *encoder, if (!cx_frame->buf) { av_log(avctx, AV_LOG_ERROR, - "Data buffer alloc (%zu bytes) failed\n", + "Data buffer alloc (%"SIZE_SPECIFIER" bytes) failed\n", cx_frame->sz); av_freep(&cx_frame); return AVERROR(ENOMEM); @@ -1666,14 +1607,14 @@ static int vp9_encode_set_roi(AVCodecContext *avctx, int frame_width, int frame_ ret = set_roi_map(avctx, sd, frame_width, frame_height, &roi_map, block_size, segment_cnt); if (ret) { - log_encoder_error(avctx, &ctx->encoder, "Failed to set_roi_map.\n"); + log_encoder_error(avctx, "Failed to set_roi_map.\n"); return ret; } memset(roi_map.ref_frame, -1, sizeof(roi_map.ref_frame)); if (vpx_codec_control(&ctx->encoder, VP9E_SET_ROI_MAP, &roi_map)) { - log_encoder_error(avctx, &ctx->encoder, "Failed to set VP9E_SET_ROI_MAP codec control.\n"); + log_encoder_error(avctx, "Failed to set VP9E_SET_ROI_MAP codec control.\n"); ret = AVERROR_INVALIDDATA; } av_freep(&roi_map.roi_map); @@ -1698,12 +1639,12 @@ static int vp8_encode_set_roi(AVCodecContext *avctx, int frame_width, int frame_ int ret = set_roi_map(avctx, sd, frame_width, frame_height, &roi_map, block_size, segment_cnt); if (ret) { - log_encoder_error(avctx, &ctx->encoder, "Failed to set_roi_map.\n"); + log_encoder_error(avctx, "Failed to set_roi_map.\n"); return ret; } if (vpx_codec_control(&ctx->encoder, VP8E_SET_ROI_MAP, &roi_map)) { - log_encoder_error(avctx, &ctx->encoder, "Failed to set VP8E_SET_ROI_MAP codec control.\n"); + log_encoder_error(avctx, "Failed to set VP8E_SET_ROI_MAP codec control.\n"); ret = AVERROR_INVALIDDATA; } @@ -1722,28 +1663,18 @@ static int realloc_alpha_uv(AVCodecContext *avctx, int width, int height) !planes[VPX_PLANE_V] || width != (int)rawimg_alpha->d_w || height != (int)rawimg_alpha->d_h) { - vpx_img_fmt_t alpha_fmt = ctx->rawimg.bit_depth > 8 ? - VPX_IMG_FMT_I42016 : VPX_IMG_FMT_I420; av_freep(&planes[VPX_PLANE_U]); av_freep(&planes[VPX_PLANE_V]); - vpx_img_wrap(rawimg_alpha, alpha_fmt, width, height, 1, + vpx_img_wrap(rawimg_alpha, VPX_IMG_FMT_I420, width, height, 1, (unsigned char*)1); planes[VPX_PLANE_U] = av_malloc_array(stride[VPX_PLANE_U], height); planes[VPX_PLANE_V] = av_malloc_array(stride[VPX_PLANE_V], height); if (!planes[VPX_PLANE_U] || !planes[VPX_PLANE_V]) return AVERROR(ENOMEM); - if (ctx->rawimg.bit_depth > 8) { - int val = 0x80 << (ctx->rawimg.bit_depth - 8); - AV_WN16(planes[VPX_PLANE_U], val); - AV_WN16(planes[VPX_PLANE_V], val); - av_memcpy_backptr(planes[VPX_PLANE_U] + 2, 2, stride[VPX_PLANE_U] * height - 2); - av_memcpy_backptr(planes[VPX_PLANE_V] + 2, 2, stride[VPX_PLANE_V] * height - 2); - } else { - memset(planes[VPX_PLANE_U], 0x80, stride[VPX_PLANE_U] * height); - memset(planes[VPX_PLANE_V], 0x80, stride[VPX_PLANE_V] * height); - } + memset(planes[VPX_PLANE_U], 0x80, stride[VPX_PLANE_U] * height); + memset(planes[VPX_PLANE_V], 0x80, stride[VPX_PLANE_V] * height); } return 0; @@ -1768,7 +1699,7 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt, cfg.rc_max_quantizer = avctx->qmax; res = vpx_codec_enc_config_set(&ctx->encoder, &cfg); if (res != VPX_CODEC_OK) { - log_encoder_error(avctx, &ctx->encoder, "Error reconfiguring encoder"); + log_encoder_error(avctx, "Error reconfiguring encoder"); return AVERROR_INVALIDDATA; } } @@ -1900,13 +1831,19 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt, else if (avctx->framerate.num > 0 && avctx->framerate.den > 0) duration = av_rescale_q(1, av_inv_q(avctx->framerate), avctx->time_base); else { - duration = 1; +FF_DISABLE_DEPRECATION_WARNINGS + duration = +#if FF_API_TICKS_PER_FRAME + avctx->ticks_per_frame ? avctx->ticks_per_frame : +#endif + 1; +FF_ENABLE_DEPRECATION_WARNINGS } res = vpx_codec_encode(&ctx->encoder, rawimg, timestamp, duration, flags, ctx->deadline); if (res != VPX_CODEC_OK) { - log_encoder_error(avctx, &ctx->encoder, "Error encoding frame"); + log_encoder_error(avctx, "Error encoding frame"); return AVERROR_INVALIDDATA; } @@ -1914,7 +1851,7 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt, res = vpx_codec_encode(&ctx->encoder_alpha, rawimg_alpha, timestamp, duration, flags, ctx->deadline); if (res != VPX_CODEC_OK) { - log_encoder_error(avctx, &ctx->encoder_alpha, "Error encoding alpha frame"); + log_encoder_error(avctx, "Error encoding alpha frame"); return AVERROR_INVALIDDATA; } } @@ -2107,7 +2044,7 @@ const FFCodec ff_libvpx_vp8_encoder = { .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_AUTO_THREADS, - CODEC_PIXFMTS(AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVA420P), + .p.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVA420P, AV_PIX_FMT_NONE }, .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG, .p.priv_class = &class_vp8, .defaults = defaults, @@ -2125,12 +2062,9 @@ static const enum AVPixelFormat vp9_pix_fmts_highcol[] = { AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVA420P, AV_PIX_FMT_YUV422P, - AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P, - AV_PIX_FMT_YUVA444P, AV_PIX_FMT_GBRP, - AV_PIX_FMT_GBRAP, AV_PIX_FMT_NONE }; @@ -2138,28 +2072,19 @@ static const enum AVPixelFormat vp9_pix_fmts_highbd[] = { AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVA420P, AV_PIX_FMT_YUV422P, - AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P, - AV_PIX_FMT_YUVA444P, AV_PIX_FMT_YUV420P10, - AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUV422P10, - AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUV440P10, AV_PIX_FMT_YUV444P10, - AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV440P12, AV_PIX_FMT_YUV444P12, - AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_GBRP, - AV_PIX_FMT_GBRAP, AV_PIX_FMT_GBRP10, - AV_PIX_FMT_GBRAP10, AV_PIX_FMT_GBRP12, - AV_PIX_FMT_GBRAP12, AV_PIX_FMT_NONE }; diff --git a/icecat/media/ffvpx/libavcodec/mathops.h b/icecat/media/ffvpx/libavcodec/mathops.h index 64431b8a15..84a924f31b 100644 --- a/icecat/media/ffvpx/libavcodec/mathops.h +++ b/icecat/media/ffvpx/libavcodec/mathops.h @@ -32,9 +32,8 @@ extern const uint32_t ff_inverse[257]; extern const uint8_t ff_log2_run[41]; -EXTERN const uint32_t ff_square_tab[512]; extern const uint8_t ff_sqrt_tab[256]; -EXTERN const uint8_t ff_crop_tab[256 + 2 * MAX_NEG_CROP]; +extern const uint8_t attribute_visibility_hidden ff_crop_tab[256 + 2 * MAX_NEG_CROP]; extern const uint8_t ff_zigzag_direct[64]; extern const uint8_t ff_zigzag_scan[16+1]; @@ -44,8 +43,6 @@ extern const uint8_t ff_zigzag_scan[16+1]; # include "mips/mathops.h" #elif ARCH_PPC # include "ppc/mathops.h" -#elif ARCH_RISCV -# include "riscv/mathops.h" #elif ARCH_X86 # include "x86/mathops.h" #endif @@ -95,24 +92,23 @@ static av_always_inline unsigned UMULH(unsigned a, unsigned b){ #endif /* median of 3 */ -static inline av_const int median3_c(int a, int b, int c) -{ - int max2, min2, m; - - if (a >= b) { - max2 = a; - min2 = b; - } else { - max2 = b; - min2 = a; - } - m = (c >= max2) ? max2 : c; - - return (m >= min2) ? m : min2; -} - #ifndef mid_pred -#define mid_pred median3_c +#define mid_pred mid_pred +static inline av_const int mid_pred(int a, int b, int c) +{ + if(a>b){ + if(c>b){ + if(c>a) b=a; + else b=c; + } + }else{ + if(b>c){ + if(c>a) b=c; + else b=a; + } + } + return b; +} #endif #ifndef median4 diff --git a/icecat/media/ffvpx/libavcodec/mathtables.c b/icecat/media/ffvpx/libavcodec/mathtables.c index 9a25da4964..8b0031eb00 100644 --- a/icecat/media/ffvpx/libavcodec/mathtables.c +++ b/icecat/media/ffvpx/libavcodec/mathtables.c @@ -20,47 +20,8 @@ #include -#include "config.h" #include "mathops.h" -#if CONFIG_ME_CMP || CONFIG_MPEGVIDEOENCDSP -/* (i - 256) * (i - 256) */ -const uint32_t ff_square_tab[512] = { - 65536, 65025, 64516, 64009, 63504, 63001, 62500, 62001, 61504, 61009, 60516, 60025, 59536, 59049, 58564, 58081, - 57600, 57121, 56644, 56169, 55696, 55225, 54756, 54289, 53824, 53361, 52900, 52441, 51984, 51529, 51076, 50625, - 50176, 49729, 49284, 48841, 48400, 47961, 47524, 47089, 46656, 46225, 45796, 45369, 44944, 44521, 44100, 43681, - 43264, 42849, 42436, 42025, 41616, 41209, 40804, 40401, 40000, 39601, 39204, 38809, 38416, 38025, 37636, 37249, - 36864, 36481, 36100, 35721, 35344, 34969, 34596, 34225, 33856, 33489, 33124, 32761, 32400, 32041, 31684, 31329, - 30976, 30625, 30276, 29929, 29584, 29241, 28900, 28561, 28224, 27889, 27556, 27225, 26896, 26569, 26244, 25921, - 25600, 25281, 24964, 24649, 24336, 24025, 23716, 23409, 23104, 22801, 22500, 22201, 21904, 21609, 21316, 21025, - 20736, 20449, 20164, 19881, 19600, 19321, 19044, 18769, 18496, 18225, 17956, 17689, 17424, 17161, 16900, 16641, - 16384, 16129, 15876, 15625, 15376, 15129, 14884, 14641, 14400, 14161, 13924, 13689, 13456, 13225, 12996, 12769, - 12544, 12321, 12100, 11881, 11664, 11449, 11236, 11025, 10816, 10609, 10404, 10201, 10000, 9801, 9604, 9409, - 9216, 9025, 8836, 8649, 8464, 8281, 8100, 7921, 7744, 7569, 7396, 7225, 7056, 6889, 6724, 6561, - 6400, 6241, 6084, 5929, 5776, 5625, 5476, 5329, 5184, 5041, 4900, 4761, 4624, 4489, 4356, 4225, - 4096, 3969, 3844, 3721, 3600, 3481, 3364, 3249, 3136, 3025, 2916, 2809, 2704, 2601, 2500, 2401, - 2304, 2209, 2116, 2025, 1936, 1849, 1764, 1681, 1600, 1521, 1444, 1369, 1296, 1225, 1156, 1089, - 1024, 961, 900, 841, 784, 729, 676, 625, 576, 529, 484, 441, 400, 361, 324, 289, - 256, 225, 196, 169, 144, 121, 100, 81, 64, 49, 36, 25, 16, 9, 4, 1, - 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, - 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, - 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, - 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, - 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, - 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, - 9216, 9409, 9604, 9801, 10000, 10201, 10404, 10609, 10816, 11025, 11236, 11449, 11664, 11881, 12100, 12321, - 12544, 12769, 12996, 13225, 13456, 13689, 13924, 14161, 14400, 14641, 14884, 15129, 15376, 15625, 15876, 16129, - 16384, 16641, 16900, 17161, 17424, 17689, 17956, 18225, 18496, 18769, 19044, 19321, 19600, 19881, 20164, 20449, - 20736, 21025, 21316, 21609, 21904, 22201, 22500, 22801, 23104, 23409, 23716, 24025, 24336, 24649, 24964, 25281, - 25600, 25921, 26244, 26569, 26896, 27225, 27556, 27889, 28224, 28561, 28900, 29241, 29584, 29929, 30276, 30625, - 30976, 31329, 31684, 32041, 32400, 32761, 33124, 33489, 33856, 34225, 34596, 34969, 35344, 35721, 36100, 36481, - 36864, 37249, 37636, 38025, 38416, 38809, 39204, 39601, 40000, 40401, 40804, 41209, 41616, 42025, 42436, 42849, - 43264, 43681, 44100, 44521, 44944, 45369, 45796, 46225, 46656, 47089, 47524, 47961, 48400, 48841, 49284, 49729, - 50176, 50625, 51076, 51529, 51984, 52441, 52900, 53361, 53824, 54289, 54756, 55225, 55696, 56169, 56644, 57121, - 57600, 58081, 58564, 59049, 59536, 60025, 60516, 61009, 61504, 62001, 62500, 63001, 63504, 64009, 64516, 65025, -}; -#endif - /* a*inverse[b]>>32 == a/b for all 0<=a<=16909558 && 2<=b<=256 * for a>16909558, is an overestimate by less than 1 part in 1<<24 */ const uint32_t ff_inverse[257]={ @@ -111,10 +72,10 @@ const uint8_t ff_sqrt_tab[256]={ }; #define times4(x) x, x, x, x -#define times1024(x) times4(times4(times4(times4(times4(x))))) +#define times256(x) times4(times4(times4(times4(times4(x))))) const uint8_t ff_crop_tab[256 + 2 * MAX_NEG_CROP] = { -times1024(0x00), +times256(0x00), 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, @@ -131,7 +92,7 @@ times1024(0x00), 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF, -times1024(0xFF) +times256(0xFF) }; const uint8_t ff_zigzag_direct[64] = { diff --git a/icecat/media/ffvpx/libavcodec/me_cmp.h b/icecat/media/ffvpx/libavcodec/me_cmp.h index 49f81e1901..9053327c4c 100644 --- a/icecat/media/ffvpx/libavcodec/me_cmp.h +++ b/icecat/media/ffvpx/libavcodec/me_cmp.h @@ -21,8 +21,13 @@ #include +#include "libavutil/attributes_internal.h" + #include "avcodec.h" +extern const uint32_t attribute_visibility_hidden ff_square_tab[512]; + + /* minimum alignment rules ;) * If you notice errors in the align stuff, need more alignment for some ASM code * for some CPU or need to use a function with less aligned data then send a mail @@ -36,13 +41,13 @@ * !future video codecs might need functions with less strict alignment */ -typedef struct MPVEncContext MPVEncContext; +struct MpegEncContext; /* Motion estimation: * h is limited to { width / 2, width, 2 * width }, * but never larger than 16 and never smaller than 2. * Although currently h < 4 is not used as functions with * width < 8 are neither used nor implemented. */ -typedef int (*me_cmp_func)(MPVEncContext *c, +typedef int (*me_cmp_func)(struct MpegEncContext *c, const uint8_t *blk1 /* align width (8 or 16) */, const uint8_t *blk2 /* align 1 */, ptrdiff_t stride, int h); @@ -71,6 +76,7 @@ typedef struct MECmpContext { void ff_me_cmp_init(MECmpContext *c, AVCodecContext *avctx); void ff_me_cmp_init_aarch64(MECmpContext *c, AVCodecContext *avctx); +void ff_me_cmp_init_alpha(MECmpContext *c, AVCodecContext *avctx); void ff_me_cmp_init_arm(MECmpContext *c, AVCodecContext *avctx); void ff_me_cmp_init_ppc(MECmpContext *c, AVCodecContext *avctx); void ff_me_cmp_init_riscv(MECmpContext *c, AVCodecContext *avctx); @@ -81,7 +87,7 @@ void ff_me_cmp_init_mips(MECmpContext *c, AVCodecContext *avctx); * Fill the function pointer array cmp[6] with me_cmp_funcs from * c based upon type. If mpvenc is not set, an error is returned * if the type of comparison functions requires an initialized - * MPVEncContext. + * MpegEncContext. */ int ff_set_cmp(const MECmpContext *c, me_cmp_func *cmp, int type, int mpvenc); diff --git a/icecat/media/ffvpx/libavcodec/mediacodec.c b/icecat/media/ffvpx/libavcodec/mediacodec.c deleted file mode 100644 index 33bde8112e..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Android MediaCodec public API functions - * - * Copyright (c) 2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include "libavutil/error.h" - -#include "mediacodec.h" - -#if CONFIG_MEDIACODEC - -#include - -#include "libavcodec/avcodec.h" -#include "libavutil/mem.h" - -#include "ffjni.h" -#include "mediacodecdec_common.h" - -AVMediaCodecContext *av_mediacodec_alloc_context(void) -{ - return av_mallocz(sizeof(AVMediaCodecContext)); -} - -int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface) -{ - int ret = 0; - JNIEnv *env = NULL; - - env = ff_jni_get_env(avctx); - if (!env) { - return AVERROR_EXTERNAL; - } - - ctx->surface = (*env)->NewGlobalRef(env, surface); - if (ctx->surface) { - avctx->hwaccel_context = ctx; - } else { - av_log(avctx, AV_LOG_ERROR, "Could not create new global reference\n"); - ret = AVERROR_EXTERNAL; - } - - return ret; -} - -void av_mediacodec_default_free(AVCodecContext *avctx) -{ - JNIEnv *env = NULL; - - AVMediaCodecContext *ctx = avctx->hwaccel_context; - - if (!ctx) { - return; - } - - env = ff_jni_get_env(avctx); - if (!env) { - return; - } - - if (ctx->surface) { - (*env)->DeleteGlobalRef(env, ctx->surface); - ctx->surface = NULL; - } - - av_freep(&avctx->hwaccel_context); -} - -int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render) -{ - MediaCodecDecContext *ctx = buffer->ctx; - int released = atomic_fetch_add(&buffer->released, 1); - - if (!released && (ctx->delay_flush || buffer->serial == atomic_load(&ctx->serial))) { - atomic_fetch_sub(&ctx->hw_buffer_count, 1); - av_log(ctx->avctx, AV_LOG_DEBUG, - "Releasing output buffer %zd (%p) ts=%"PRId64" with render=%d [%d pending]\n", - buffer->index, buffer, buffer->pts, render, atomic_load(&ctx->hw_buffer_count)); - return ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, render); - } - - return 0; -} - -int av_mediacodec_render_buffer_at_time(AVMediaCodecBuffer *buffer, int64_t time) -{ - MediaCodecDecContext *ctx = buffer->ctx; - int released = atomic_fetch_add(&buffer->released, 1); - - if (!released && (ctx->delay_flush || buffer->serial == atomic_load(&ctx->serial))) { - atomic_fetch_sub(&ctx->hw_buffer_count, 1); - av_log(ctx->avctx, AV_LOG_DEBUG, - "Rendering output buffer %zd (%p) ts=%"PRId64" with time=%"PRId64" [%d pending]\n", - buffer->index, buffer, buffer->pts, time, atomic_load(&ctx->hw_buffer_count)); - return ff_AMediaCodec_releaseOutputBufferAtTime(ctx->codec, buffer->index, time); - } - - return 0; -} - -#else - -#include - -AVMediaCodecContext *av_mediacodec_alloc_context(void) -{ - return NULL; -} - -int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface) -{ - return AVERROR(ENOSYS); -} - -void av_mediacodec_default_free(AVCodecContext *avctx) -{ -} - -int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render) -{ - return AVERROR(ENOSYS); -} - -int av_mediacodec_render_buffer_at_time(AVMediaCodecBuffer *buffer, int64_t time) -{ - return AVERROR(ENOSYS); -} - -#endif diff --git a/icecat/media/ffvpx/libavcodec/mediacodec.h b/icecat/media/ffvpx/libavcodec/mediacodec.h deleted file mode 100644 index 4e9b56a618..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Android MediaCodec public API - * - * Copyright (c) 2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MEDIACODEC_H -#define AVCODEC_MEDIACODEC_H - -#include "libavcodec/avcodec.h" - -/** - * This structure holds a reference to a android/view/Surface object that will - * be used as output by the decoder. - * - */ -typedef struct AVMediaCodecContext { - - /** - * android/view/Surface object reference. - */ - void *surface; - -} AVMediaCodecContext; - -/** - * Allocate and initialize a MediaCodec context. - * - * When decoding with MediaCodec is finished, the caller must free the - * MediaCodec context with av_mediacodec_default_free. - * - * @return a pointer to a newly allocated AVMediaCodecContext on success, NULL otherwise - */ -AVMediaCodecContext *av_mediacodec_alloc_context(void); - -/** - * Convenience function that sets up the MediaCodec context. - * - * @param avctx codec context - * @param ctx MediaCodec context to initialize - * @param surface reference to an android/view/Surface - * @return 0 on success, < 0 otherwise - */ -int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface); - -/** - * This function must be called to free the MediaCodec context initialized with - * av_mediacodec_default_init(). - * - * @param avctx codec context - */ -void av_mediacodec_default_free(AVCodecContext *avctx); - -/** - * Opaque structure representing a MediaCodec buffer to render. - */ -typedef struct MediaCodecBuffer AVMediaCodecBuffer; - -/** - * Release a MediaCodec buffer and render it to the surface that is associated - * with the decoder. This function should only be called once on a given - * buffer, once released the underlying buffer returns to the codec, thus - * subsequent calls to this function will have no effect. - * - * @param buffer the buffer to render - * @param render 1 to release and render the buffer to the surface or 0 to - * discard the buffer - * @return 0 on success, < 0 otherwise - */ -int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render); - -/** - * Release a MediaCodec buffer and render it at the given time to the surface - * that is associated with the decoder. The timestamp must be within one second - * of the current `java/lang/System#nanoTime()` (which is implemented using - * `CLOCK_MONOTONIC` on Android). See the Android MediaCodec documentation - * of [`android/media/MediaCodec#releaseOutputBuffer(int,long)`][0] for more details. - * - * @param buffer the buffer to render - * @param time timestamp in nanoseconds of when to render the buffer - * @return 0 on success, < 0 otherwise - * - * [0]: https://developer.android.com/reference/android/media/MediaCodec#releaseOutputBuffer(int,%20long) - */ -int av_mediacodec_render_buffer_at_time(AVMediaCodecBuffer *buffer, int64_t time); - -#endif /* AVCODEC_MEDIACODEC_H */ diff --git a/icecat/media/ffvpx/libavcodec/mediacodec_surface.c b/icecat/media/ffvpx/libavcodec/mediacodec_surface.c deleted file mode 100644 index ef41cdafa7..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec_surface.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Android MediaCodec Surface functions - * - * Copyright (c) 2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include "libavutil/mem.h" -#include "ffjni.h" -#include "mediacodec_surface.h" - -FFANativeWindow *ff_mediacodec_surface_ref(void *surface, void *native_window, void *log_ctx) -{ - FFANativeWindow *ret; - - ret = av_mallocz(sizeof(*ret)); - if (!ret) - return NULL; - - if (surface) { - JNIEnv *env = NULL; - - env = ff_jni_get_env(log_ctx); - if (env) - ret->surface = (*env)->NewGlobalRef(env, surface); - } - - if (native_window) { - ANativeWindow_acquire(native_window); - ret->native_window = native_window; - } - - if (!ret->surface && !ret->native_window) { - av_log(log_ctx, AV_LOG_ERROR, "Both surface and native_window are NULL\n"); - av_freep(&ret); - } - - return ret; -} - -int ff_mediacodec_surface_unref(FFANativeWindow *window, void *log_ctx) -{ - if (!window) - return 0; - - if (window->surface) { - JNIEnv *env = NULL; - - env = ff_jni_get_env(log_ctx); - if (env) - (*env)->DeleteGlobalRef(env, window->surface); - } - - if (window->native_window) - ANativeWindow_release(window->native_window); - - av_free(window); - - return 0; -} diff --git a/icecat/media/ffvpx/libavcodec/mediacodec_surface.h b/icecat/media/ffvpx/libavcodec/mediacodec_surface.h deleted file mode 100644 index e2ac1c9057..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec_surface.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Android MediaCodec Surface functions - * - * Copyright (c) 2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MEDIACODEC_SURFACE_H -#define AVCODEC_MEDIACODEC_SURFACE_H - -#include "libavcodec/avcodec.h" - -typedef struct FFANativeWindow { - void *surface; - void *native_window; -} FFANativeWindow; - -FFANativeWindow *ff_mediacodec_surface_ref(void *surface, void *native_window, void *log_ctx); -int ff_mediacodec_surface_unref(FFANativeWindow *window, void *log_ctx); - -#endif /* AVCODEC_MEDIACODEC_SURFACE_H */ diff --git a/icecat/media/ffvpx/libavcodec/mediacodec_sw_buffer.c b/icecat/media/ffvpx/libavcodec/mediacodec_sw_buffer.c deleted file mode 100644 index 92428e85f0..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec_sw_buffer.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Android MediaCodec software buffer copy functions - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include "libavutil/frame.h" -#include "libavutil/mem.h" - -#include "avcodec.h" -#include "mediacodec_wrapper.h" -#include "mediacodec_sw_buffer.h" -#include "mediacodecdec_common.h" - -#define QCOM_TILE_WIDTH 64 -#define QCOM_TILE_HEIGHT 32 -#define QCOM_TILE_SIZE (QCOM_TILE_WIDTH * QCOM_TILE_HEIGHT) -#define QCOM_TILE_GROUP_SIZE (4 * QCOM_TILE_SIZE) - -/** - * The code handling the various YUV color formats is taken from the - * GStreamer project. - * - * Gstreamer reference: - * https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/sys/androidmedia/ - * - * Copyright (C) 2012, Collabora Ltd. - * Author: Sebastian Dröge - * - * Copyright (C) 2012, Rafaël Carré - * - * Copyright (C) 2015, Sebastian Dröge - * - * Copyright (C) 2014-2015, Collabora Ltd. - * Author: Matthieu Bouron - * - * Copyright (C) 2015, Edward Hervey - * Author: Edward Hervey - * - * Copyright (C) 2015, Matthew Waters - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation - * version 2.1 of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ -void ff_mediacodec_sw_buffer_copy_yuv420_planar(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - int i; - uint8_t *src = NULL; - - for (i = 0; i < 3; i++) { - int stride = s->stride; - int height; - - src = data + info->offset; - if (i == 0) { - height = avctx->height; - - src += s->crop_top * s->stride; - src += s->crop_left; - } else { - height = avctx->height / 2; - stride = (s->stride + 1) / 2; - - src += s->slice_height * s->stride; - - if (i == 2) { - src += ((s->slice_height + 1) / 2) * stride; - } - - src += s->crop_top * stride; - src += (s->crop_left / 2); - } - - if (frame->linesize[i] == stride) { - memcpy(frame->data[i], src, height * stride); - } else { - int j, width; - uint8_t *dst = frame->data[i]; - - if (i == 0) { - width = avctx->width; - } else if (i >= 1) { - width = FFMIN(frame->linesize[i], FFALIGN(avctx->width, 2) / 2); - } - - for (j = 0; j < height; j++) { - memcpy(dst, src, width); - src += stride; - dst += frame->linesize[i]; - } - } - } -} - -void ff_mediacodec_sw_buffer_copy_yuv420_semi_planar(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - int i; - uint8_t *src = NULL; - - for (i = 0; i < 2; i++) { - int height; - - src = data + info->offset; - if (i == 0) { - height = avctx->height; - - src += s->crop_top * s->stride; - src += s->crop_left; - } else if (i == 1) { - height = avctx->height / 2; - - src += s->slice_height * s->stride; - src += s->crop_top * s->stride; - src += s->crop_left; - } - - if (frame->linesize[i] == s->stride) { - memcpy(frame->data[i], src, height * s->stride); - } else { - int j, width; - uint8_t *dst = frame->data[i]; - - if (i == 0) { - width = avctx->width; - } else if (i == 1) { - width = FFMIN(frame->linesize[i], FFALIGN(avctx->width, 2)); - } - - for (j = 0; j < height; j++) { - memcpy(dst, src, width); - src += s->stride; - dst += frame->linesize[i]; - } - } - } -} - - - -void ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - int i; - uint8_t *src = NULL; - - for (i = 0; i < 2; i++) { - int height; - - src = data + info->offset; - if (i == 0) { - height = avctx->height; - } else if (i == 1) { - height = avctx->height / 2; - - src += (s->slice_height - s->crop_top / 2) * s->stride; - - src += s->crop_top * s->stride; - src += s->crop_left; - } - - if (frame->linesize[i] == s->stride) { - memcpy(frame->data[i], src, height * s->stride); - } else { - int j, width; - uint8_t *dst = frame->data[i]; - - if (i == 0) { - width = avctx->width; - } else if (i == 1) { - width = FFMIN(frame->linesize[i], FFALIGN(avctx->width, 2)); - } - - for (j = 0; j < height; j++) { - memcpy(dst, src, width); - src += s->stride; - dst += frame->linesize[i]; - } - } - } -} - -/** - * The code handling the QCOM_FormatYUV420PackedSemiPlanar64x32Tile2m8ka - * color format is taken from the VLC project. - * - * VLC reference: - * http://git.videolan.org/?p=vlc.git;a=blob;f=modules/codec/omxil/qcom.c;hb=HEAD - * - * VLC copyright notice: - * - ***************************************************************************** - * qcom.c : pixel format translation for Qualcomm tiled nv12 - ***************************************************************************** - * Copyright © 2012 Rafaël Carré - * - * Authors: Rafaël Carré - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - * - */ - -static size_t qcom_tile_pos(size_t x, size_t y, size_t w, size_t h) -{ - size_t flim = x + (y & ~1) * w; - - if (y & 1) { - flim += (x & ~3) + 2; - } else if ((h & 1) == 0 || y != (h - 1)) { - flim += (x + 2) & ~3; - } - - return flim; -} - -void ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar_64x32Tile2m8ka(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - size_t width = frame->width; - size_t linesize = frame->linesize[0]; - size_t height = frame->height; - - const size_t tile_w = (width - 1) / QCOM_TILE_WIDTH + 1; - const size_t tile_w_align = (tile_w + 1) & ~1; - const size_t tile_h_luma = (height - 1) / QCOM_TILE_HEIGHT + 1; - const size_t tile_h_chroma = (height / 2 - 1) / QCOM_TILE_HEIGHT + 1; - - size_t luma_size = tile_w_align * tile_h_luma * QCOM_TILE_SIZE; - if((luma_size % QCOM_TILE_GROUP_SIZE) != 0) - luma_size = (((luma_size - 1) / QCOM_TILE_GROUP_SIZE) + 1) * QCOM_TILE_GROUP_SIZE; - - for(size_t y = 0; y < tile_h_luma; y++) { - size_t row_width = width; - for(size_t x = 0; x < tile_w; x++) { - size_t tile_width = row_width; - size_t tile_height = height; - /* dest luma memory index for this tile */ - size_t luma_idx = y * QCOM_TILE_HEIGHT * linesize + x * QCOM_TILE_WIDTH; - /* dest chroma memory index for this tile */ - /* XXX: remove divisions */ - size_t chroma_idx = (luma_idx / linesize) * linesize / 2 + (luma_idx % linesize); - - /* luma source pointer for this tile */ - const uint8_t *src_luma = data - + qcom_tile_pos(x, y,tile_w_align, tile_h_luma) * QCOM_TILE_SIZE; - - /* chroma source pointer for this tile */ - const uint8_t *src_chroma = data + luma_size - + qcom_tile_pos(x, y/2, tile_w_align, tile_h_chroma) * QCOM_TILE_SIZE; - if (y & 1) - src_chroma += QCOM_TILE_SIZE/2; - - /* account for right columns */ - if (tile_width > QCOM_TILE_WIDTH) - tile_width = QCOM_TILE_WIDTH; - - /* account for bottom rows */ - if (tile_height > QCOM_TILE_HEIGHT) - tile_height = QCOM_TILE_HEIGHT; - - tile_height /= 2; - while (tile_height--) { - memcpy(frame->data[0] + luma_idx, src_luma, tile_width); - src_luma += QCOM_TILE_WIDTH; - luma_idx += linesize; - - memcpy(frame->data[0] + luma_idx, src_luma, tile_width); - src_luma += QCOM_TILE_WIDTH; - luma_idx += linesize; - - memcpy(frame->data[1] + chroma_idx, src_chroma, tile_width); - src_chroma += QCOM_TILE_WIDTH; - chroma_idx += linesize; - } - row_width -= QCOM_TILE_WIDTH; - } - height -= QCOM_TILE_HEIGHT; - } -} diff --git a/icecat/media/ffvpx/libavcodec/mediacodec_sw_buffer.h b/icecat/media/ffvpx/libavcodec/mediacodec_sw_buffer.h deleted file mode 100644 index 574fb529d4..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec_sw_buffer.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Android MediaCodec software buffer copy functions - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MEDIACODEC_SW_BUFFER_H -#define AVCODEC_MEDIACODEC_SW_BUFFER_H - -#include - -#include "libavutil/frame.h" - -#include "avcodec.h" -#include "mediacodec_wrapper.h" -#include "mediacodecdec_common.h" - -void ff_mediacodec_sw_buffer_copy_yuv420_planar(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame); - -void ff_mediacodec_sw_buffer_copy_yuv420_semi_planar(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame); - -void ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame); - -void ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar_64x32Tile2m8ka(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - FFAMediaCodecBufferInfo *info, - AVFrame *frame); - -#endif /* AVCODEC_MEDIACODEC_SW_BUFFER_H */ diff --git a/icecat/media/ffvpx/libavcodec/mediacodec_wrapper.c b/icecat/media/ffvpx/libavcodec/mediacodec_wrapper.c deleted file mode 100644 index 187b43ef47..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec_wrapper.c +++ /dev/null @@ -1,2724 +0,0 @@ -/* - * Android MediaCodec Wrapper - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include - -#include "libavutil/avassert.h" -#include "libavutil/mem.h" -#include "libavutil/avstring.h" - -#include "avcodec.h" -#include "ffjni.h" -#include "mediacodec_wrapper.h" - -struct JNIAMediaCodecListFields { - - jclass mediacodec_list_class; - jmethodID init_id; - jmethodID find_decoder_for_format_id; - - jmethodID get_codec_count_id; - jmethodID get_codec_info_at_id; - - jclass mediacodec_info_class; - jmethodID get_name_id; - jmethodID get_codec_capabilities_id; - jmethodID get_supported_types_id; - jmethodID is_encoder_id; - jmethodID is_software_only_id; - - jclass codec_capabilities_class; - jfieldID color_formats_id; - jfieldID profile_levels_id; - - jclass codec_profile_level_class; - jfieldID profile_id; - jfieldID level_id; -}; - -#define OFFSET(x) offsetof(struct JNIAMediaCodecListFields, x) -static const struct FFJniField jni_amediacodeclist_mapping[] = { - { "android/media/MediaCodecList", NULL, NULL, FF_JNI_CLASS, OFFSET(mediacodec_list_class), 1 }, - { "android/media/MediaCodecList", "", "(I)V", FF_JNI_METHOD, OFFSET(init_id), 0 }, - { "android/media/MediaCodecList", "findDecoderForFormat", "(Landroid/media/MediaFormat;)Ljava/lang/String;", FF_JNI_METHOD, OFFSET(find_decoder_for_format_id), 0 }, - - { "android/media/MediaCodecList", "getCodecCount", "()I", FF_JNI_STATIC_METHOD, OFFSET(get_codec_count_id), 1 }, - { "android/media/MediaCodecList", "getCodecInfoAt", "(I)Landroid/media/MediaCodecInfo;", FF_JNI_STATIC_METHOD, OFFSET(get_codec_info_at_id), 1 }, - - { "android/media/MediaCodecInfo", NULL, NULL, FF_JNI_CLASS, OFFSET(mediacodec_info_class), 1 }, - { "android/media/MediaCodecInfo", "getName", "()Ljava/lang/String;", FF_JNI_METHOD, OFFSET(get_name_id), 1 }, - { "android/media/MediaCodecInfo", "getCapabilitiesForType", "(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;", FF_JNI_METHOD, OFFSET(get_codec_capabilities_id), 1 }, - { "android/media/MediaCodecInfo", "getSupportedTypes", "()[Ljava/lang/String;", FF_JNI_METHOD, OFFSET(get_supported_types_id), 1 }, - { "android/media/MediaCodecInfo", "isEncoder", "()Z", FF_JNI_METHOD, OFFSET(is_encoder_id), 1 }, - { "android/media/MediaCodecInfo", "isSoftwareOnly", "()Z", FF_JNI_METHOD, OFFSET(is_software_only_id), 0 }, - - { "android/media/MediaCodecInfo$CodecCapabilities", NULL, NULL, FF_JNI_CLASS, OFFSET(codec_capabilities_class), 1 }, - { "android/media/MediaCodecInfo$CodecCapabilities", "colorFormats", "[I", FF_JNI_FIELD, OFFSET(color_formats_id), 1 }, - { "android/media/MediaCodecInfo$CodecCapabilities", "profileLevels", "[Landroid/media/MediaCodecInfo$CodecProfileLevel;", FF_JNI_FIELD, OFFSET(profile_levels_id), 1 }, - - { "android/media/MediaCodecInfo$CodecProfileLevel", NULL, NULL, FF_JNI_CLASS, OFFSET(codec_profile_level_class), 1 }, - { "android/media/MediaCodecInfo$CodecProfileLevel", "profile", "I", FF_JNI_FIELD, OFFSET(profile_id), 1 }, - { "android/media/MediaCodecInfo$CodecProfileLevel", "level", "I", FF_JNI_FIELD, OFFSET(level_id), 1 }, - - { NULL } -}; -#undef OFFSET - -struct JNIAMediaFormatFields { - - jclass mediaformat_class; - - jmethodID init_id; - - jmethodID contains_key_id; - - jmethodID get_integer_id; - jmethodID get_long_id; - jmethodID get_float_id; - jmethodID get_bytebuffer_id; - jmethodID get_string_id; - - jmethodID set_integer_id; - jmethodID set_long_id; - jmethodID set_float_id; - jmethodID set_bytebuffer_id; - jmethodID set_string_id; - - jmethodID to_string_id; - -}; - -#define OFFSET(x) offsetof(struct JNIAMediaFormatFields, x) -static const struct FFJniField jni_amediaformat_mapping[] = { - { "android/media/MediaFormat", NULL, NULL, FF_JNI_CLASS, OFFSET(mediaformat_class), 1 }, - - { "android/media/MediaFormat", "", "()V", FF_JNI_METHOD, OFFSET(init_id), 1 }, - - { "android/media/MediaFormat", "containsKey", "(Ljava/lang/String;)Z", FF_JNI_METHOD, OFFSET(contains_key_id), 1 }, - - { "android/media/MediaFormat", "getInteger", "(Ljava/lang/String;)I", FF_JNI_METHOD, OFFSET(get_integer_id), 1 }, - { "android/media/MediaFormat", "getLong", "(Ljava/lang/String;)J", FF_JNI_METHOD, OFFSET(get_long_id), 1 }, - { "android/media/MediaFormat", "getFloat", "(Ljava/lang/String;)F", FF_JNI_METHOD, OFFSET(get_float_id), 1 }, - { "android/media/MediaFormat", "getByteBuffer", "(Ljava/lang/String;)Ljava/nio/ByteBuffer;", FF_JNI_METHOD, OFFSET(get_bytebuffer_id), 1 }, - { "android/media/MediaFormat", "getString", "(Ljava/lang/String;)Ljava/lang/String;", FF_JNI_METHOD, OFFSET(get_string_id), 1 }, - - { "android/media/MediaFormat", "setInteger", "(Ljava/lang/String;I)V", FF_JNI_METHOD, OFFSET(set_integer_id), 1 }, - { "android/media/MediaFormat", "setLong", "(Ljava/lang/String;J)V", FF_JNI_METHOD, OFFSET(set_long_id), 1 }, - { "android/media/MediaFormat", "setFloat", "(Ljava/lang/String;F)V", FF_JNI_METHOD, OFFSET(set_float_id), 1 }, - { "android/media/MediaFormat", "setByteBuffer", "(Ljava/lang/String;Ljava/nio/ByteBuffer;)V", FF_JNI_METHOD, OFFSET(set_bytebuffer_id), 1 }, - { "android/media/MediaFormat", "setString", "(Ljava/lang/String;Ljava/lang/String;)V", FF_JNI_METHOD, OFFSET(set_string_id), 1 }, - - { "android/media/MediaFormat", "toString", "()Ljava/lang/String;", FF_JNI_METHOD, OFFSET(to_string_id), 1 }, - - { NULL } -}; -#undef OFFSET - -static const AVClass amediaformat_class = { - .class_name = "amediaformat", - .item_name = av_default_item_name, - .version = LIBAVUTIL_VERSION_INT, -}; - -typedef struct FFAMediaFormatJni { - FFAMediaFormat api; - - struct JNIAMediaFormatFields jfields; - jobject object; -} FFAMediaFormatJni; - -static const FFAMediaFormat media_format_jni; - -struct JNIAMediaCodecFields { - - jclass mediacodec_class; - - jfieldID info_try_again_later_id; - jfieldID info_output_buffers_changed_id; - jfieldID info_output_format_changed_id; - - jfieldID buffer_flag_codec_config_id; - jfieldID buffer_flag_end_of_stream_id; - jfieldID buffer_flag_key_frame_id; - - jfieldID configure_flag_encode_id; - - jmethodID create_by_codec_name_id; - jmethodID create_decoder_by_type_id; - jmethodID create_encoder_by_type_id; - - jmethodID get_name_id; - - jmethodID configure_id; - jmethodID start_id; - jmethodID flush_id; - jmethodID stop_id; - jmethodID release_id; - - jmethodID get_output_format_id; - - jmethodID dequeue_input_buffer_id; - jmethodID queue_input_buffer_id; - jmethodID get_input_buffer_id; - jmethodID get_input_buffers_id; - - jmethodID dequeue_output_buffer_id; - jmethodID get_output_buffer_id; - jmethodID get_output_buffers_id; - jmethodID release_output_buffer_id; - jmethodID release_output_buffer_at_time_id; - - jmethodID set_input_surface_id; - jmethodID signal_end_of_input_stream_id; - - jclass mediainfo_class; - - jmethodID init_id; - - jfieldID flags_id; - jfieldID offset_id; - jfieldID presentation_time_us_id; - jfieldID size_id; - -}; - -#define OFFSET(x) offsetof(struct JNIAMediaCodecFields, x) -static const struct FFJniField jni_amediacodec_mapping[] = { - { "android/media/MediaCodec", NULL, NULL, FF_JNI_CLASS, OFFSET(mediacodec_class), 1 }, - - { "android/media/MediaCodec", "INFO_TRY_AGAIN_LATER", "I", FF_JNI_STATIC_FIELD, OFFSET(info_try_again_later_id), 1 }, - { "android/media/MediaCodec", "INFO_OUTPUT_BUFFERS_CHANGED", "I", FF_JNI_STATIC_FIELD, OFFSET(info_output_buffers_changed_id), 1 }, - { "android/media/MediaCodec", "INFO_OUTPUT_FORMAT_CHANGED", "I", FF_JNI_STATIC_FIELD, OFFSET(info_output_format_changed_id), 1 }, - - { "android/media/MediaCodec", "BUFFER_FLAG_CODEC_CONFIG", "I", FF_JNI_STATIC_FIELD, OFFSET(buffer_flag_codec_config_id), 1 }, - { "android/media/MediaCodec", "BUFFER_FLAG_END_OF_STREAM", "I", FF_JNI_STATIC_FIELD, OFFSET(buffer_flag_end_of_stream_id), 1 }, - { "android/media/MediaCodec", "BUFFER_FLAG_KEY_FRAME", "I", FF_JNI_STATIC_FIELD, OFFSET(buffer_flag_key_frame_id), 0 }, - - { "android/media/MediaCodec", "CONFIGURE_FLAG_ENCODE", "I", FF_JNI_STATIC_FIELD, OFFSET(configure_flag_encode_id), 1 }, - - { "android/media/MediaCodec", "createByCodecName", "(Ljava/lang/String;)Landroid/media/MediaCodec;", FF_JNI_STATIC_METHOD, OFFSET(create_by_codec_name_id), 1 }, - { "android/media/MediaCodec", "createDecoderByType", "(Ljava/lang/String;)Landroid/media/MediaCodec;", FF_JNI_STATIC_METHOD, OFFSET(create_decoder_by_type_id), 1 }, - { "android/media/MediaCodec", "createEncoderByType", "(Ljava/lang/String;)Landroid/media/MediaCodec;", FF_JNI_STATIC_METHOD, OFFSET(create_encoder_by_type_id), 1 }, - - { "android/media/MediaCodec", "getName", "()Ljava/lang/String;", FF_JNI_METHOD, OFFSET(get_name_id), 1 }, - - { "android/media/MediaCodec", "configure", "(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V", FF_JNI_METHOD, OFFSET(configure_id), 1 }, - { "android/media/MediaCodec", "start", "()V", FF_JNI_METHOD, OFFSET(start_id), 1 }, - { "android/media/MediaCodec", "flush", "()V", FF_JNI_METHOD, OFFSET(flush_id), 1 }, - { "android/media/MediaCodec", "stop", "()V", FF_JNI_METHOD, OFFSET(stop_id), 1 }, - { "android/media/MediaCodec", "release", "()V", FF_JNI_METHOD, OFFSET(release_id), 1 }, - - { "android/media/MediaCodec", "getOutputFormat", "()Landroid/media/MediaFormat;", FF_JNI_METHOD, OFFSET(get_output_format_id), 1 }, - - { "android/media/MediaCodec", "dequeueInputBuffer", "(J)I", FF_JNI_METHOD, OFFSET(dequeue_input_buffer_id), 1 }, - { "android/media/MediaCodec", "queueInputBuffer", "(IIIJI)V", FF_JNI_METHOD, OFFSET(queue_input_buffer_id), 1 }, - { "android/media/MediaCodec", "getInputBuffer", "(I)Ljava/nio/ByteBuffer;", FF_JNI_METHOD, OFFSET(get_input_buffer_id), 0 }, - { "android/media/MediaCodec", "getInputBuffers", "()[Ljava/nio/ByteBuffer;", FF_JNI_METHOD, OFFSET(get_input_buffers_id), 1 }, - - { "android/media/MediaCodec", "dequeueOutputBuffer", "(Landroid/media/MediaCodec$BufferInfo;J)I", FF_JNI_METHOD, OFFSET(dequeue_output_buffer_id), 1 }, - { "android/media/MediaCodec", "getOutputBuffer", "(I)Ljava/nio/ByteBuffer;", FF_JNI_METHOD, OFFSET(get_output_buffer_id), 0 }, - { "android/media/MediaCodec", "getOutputBuffers", "()[Ljava/nio/ByteBuffer;", FF_JNI_METHOD, OFFSET(get_output_buffers_id), 1 }, - { "android/media/MediaCodec", "releaseOutputBuffer", "(IZ)V", FF_JNI_METHOD, OFFSET(release_output_buffer_id), 1 }, - { "android/media/MediaCodec", "releaseOutputBuffer", "(IJ)V", FF_JNI_METHOD, OFFSET(release_output_buffer_at_time_id), 0 }, - - { "android/media/MediaCodec", "setInputSurface", "(Landroid/view/Surface;)V", FF_JNI_METHOD, OFFSET(set_input_surface_id), 0 }, - { "android/media/MediaCodec", "signalEndOfInputStream", "()V", FF_JNI_METHOD, OFFSET(signal_end_of_input_stream_id), 0 }, - - { "android/media/MediaCodec$BufferInfo", NULL, NULL, FF_JNI_CLASS, OFFSET(mediainfo_class), 1 }, - - { "android/media/MediaCodec.BufferInfo", "", "()V", FF_JNI_METHOD, OFFSET(init_id), 1 }, - { "android/media/MediaCodec.BufferInfo", "flags", "I", FF_JNI_FIELD, OFFSET(flags_id), 1 }, - { "android/media/MediaCodec.BufferInfo", "offset", "I", FF_JNI_FIELD, OFFSET(offset_id), 1 }, - { "android/media/MediaCodec.BufferInfo", "presentationTimeUs", "J", FF_JNI_FIELD, OFFSET(presentation_time_us_id), 1 }, - { "android/media/MediaCodec.BufferInfo", "size", "I", FF_JNI_FIELD, OFFSET(size_id), 1 }, - - { NULL } -}; -#undef OFFSET - -static const AVClass amediacodec_class = { - .class_name = "amediacodec", - .item_name = av_default_item_name, - .version = LIBAVUTIL_VERSION_INT, -}; - -typedef struct FFAMediaCodecJni { - FFAMediaCodec api; - - struct JNIAMediaCodecFields jfields; - - jobject object; - jobject buffer_info; - - jobject input_buffers; - jobject output_buffers; - - int INFO_TRY_AGAIN_LATER; - int INFO_OUTPUT_BUFFERS_CHANGED; - int INFO_OUTPUT_FORMAT_CHANGED; - - int BUFFER_FLAG_CODEC_CONFIG; - int BUFFER_FLAG_END_OF_STREAM; - int BUFFER_FLAG_KEY_FRAME; - - int CONFIGURE_FLAG_ENCODE; - - int has_get_i_o_buffer; -} FFAMediaCodecJni; - -static const FFAMediaCodec media_codec_jni; - -#define JNI_GET_ENV_OR_RETURN(env, log_ctx, ret) do { \ - (env) = ff_jni_get_env(log_ctx); \ - if (!(env)) { \ - return ret; \ - } \ -} while (0) - -#define JNI_GET_ENV_OR_RETURN_VOID(env, log_ctx) do { \ - (env) = ff_jni_get_env(log_ctx); \ - if (!(env)) { \ - return; \ - } \ -} while (0) - -int ff_AMediaCodecProfile_getProfileFromAVCodecContext(AVCodecContext *avctx) -{ - // Copy and modified from MediaCodecInfo.java - static const int AVCProfileBaseline = 0x01; - static const int AVCProfileMain = 0x02; - static const int AVCProfileExtended = 0x04; - static const int AVCProfileHigh = 0x08; - static const int AVCProfileHigh10 = 0x10; - static const int AVCProfileHigh422 = 0x20; - static const int AVCProfileHigh444 = 0x40; - static const int AVCProfileConstrainedBaseline = 0x10000; - static const int AVCProfileConstrainedHigh = 0x80000; - - static const int HEVCProfileMain = 0x01; - static const int HEVCProfileMain10 = 0x02; - static const int HEVCProfileMainStill = 0x04; - static const int HEVCProfileMain10HDR10 = 0x1000; - static const int HEVCProfileMain10HDR10Plus = 0x2000; - - static const int VP9Profile0 = 0x01; - static const int VP9Profile1 = 0x02; - static const int VP9Profile2 = 0x04; - static const int VP9Profile3 = 0x08; - static const int VP9Profile2HDR = 0x1000; - static const int VP9Profile3HDR = 0x2000; - static const int VP9Profile2HDR10Plus = 0x4000; - static const int VP9Profile3HDR10Plus = 0x8000; - - static const int MPEG4ProfileSimple = 0x01; - static const int MPEG4ProfileSimpleScalable = 0x02; - static const int MPEG4ProfileCore = 0x04; - static const int MPEG4ProfileMain = 0x08; - static const int MPEG4ProfileNbit = 0x10; - static const int MPEG4ProfileScalableTexture = 0x20; - static const int MPEG4ProfileSimpleFBA = 0x80; - static const int MPEG4ProfileSimpleFace = 0x40; - static const int MPEG4ProfileBasicAnimated = 0x100; - static const int MPEG4ProfileHybrid = 0x200; - static const int MPEG4ProfileAdvancedRealTime = 0x400; - static const int MPEG4ProfileCoreScalable = 0x800; - static const int MPEG4ProfileAdvancedCoding = 0x1000; - static const int MPEG4ProfileAdvancedCore = 0x2000; - static const int MPEG4ProfileAdvancedScalable = 0x4000; - static const int MPEG4ProfileAdvancedSimple = 0x8000; - - - static const int AV1ProfileMain8 = 0x1; - static const int AV1ProfileMain10 = 0x2; - static const int AV1ProfileMain10HDR10 = 0x1000; - static const int AV1ProfileMain10HDR10Plus = 0x2000; - - // Unused yet. - (void)AVCProfileConstrainedHigh; - (void)HEVCProfileMain10HDR10; - (void)HEVCProfileMain10HDR10Plus; - (void)VP9Profile2HDR; - (void)VP9Profile3HDR; - (void)VP9Profile2HDR10Plus; - (void)VP9Profile3HDR10Plus; - (void)MPEG4ProfileSimpleFace; - (void)AV1ProfileMain10; - (void)AV1ProfileMain10HDR10; - (void)AV1ProfileMain10HDR10Plus; - - if (avctx->codec_id == AV_CODEC_ID_H264) { - switch(avctx->profile) { - case AV_PROFILE_H264_BASELINE: - return AVCProfileBaseline; - case AV_PROFILE_H264_CONSTRAINED_BASELINE: - return AVCProfileConstrainedBaseline; - case AV_PROFILE_H264_MAIN: - return AVCProfileMain; - break; - case AV_PROFILE_H264_EXTENDED: - return AVCProfileExtended; - case AV_PROFILE_H264_HIGH: - return AVCProfileHigh; - case AV_PROFILE_H264_HIGH_10: - case AV_PROFILE_H264_HIGH_10_INTRA: - return AVCProfileHigh10; - case AV_PROFILE_H264_HIGH_422: - case AV_PROFILE_H264_HIGH_422_INTRA: - return AVCProfileHigh422; - case AV_PROFILE_H264_HIGH_444: - case AV_PROFILE_H264_HIGH_444_INTRA: - case AV_PROFILE_H264_HIGH_444_PREDICTIVE: - return AVCProfileHigh444; - } - } else if (avctx->codec_id == AV_CODEC_ID_HEVC) { - switch (avctx->profile) { - case AV_PROFILE_HEVC_MAIN: - return HEVCProfileMain; - case AV_PROFILE_HEVC_MAIN_STILL_PICTURE: - return HEVCProfileMainStill; - case AV_PROFILE_HEVC_MAIN_10: - return HEVCProfileMain10; - } - } else if (avctx->codec_id == AV_CODEC_ID_VP9) { - switch (avctx->profile) { - case AV_PROFILE_VP9_0: - return VP9Profile0; - case AV_PROFILE_VP9_1: - return VP9Profile1; - case AV_PROFILE_VP9_2: - return VP9Profile2; - case AV_PROFILE_VP9_3: - return VP9Profile3; - } - } else if(avctx->codec_id == AV_CODEC_ID_MPEG4) { - switch (avctx->profile) - { - case AV_PROFILE_MPEG4_SIMPLE: - return MPEG4ProfileSimple; - case AV_PROFILE_MPEG4_SIMPLE_SCALABLE: - return MPEG4ProfileSimpleScalable; - case AV_PROFILE_MPEG4_CORE: - return MPEG4ProfileCore; - case AV_PROFILE_MPEG4_MAIN: - return MPEG4ProfileMain; - case AV_PROFILE_MPEG4_N_BIT: - return MPEG4ProfileNbit; - case AV_PROFILE_MPEG4_SCALABLE_TEXTURE: - return MPEG4ProfileScalableTexture; - case AV_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION: - return MPEG4ProfileSimpleFBA; - case AV_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE: - return MPEG4ProfileBasicAnimated; - case AV_PROFILE_MPEG4_HYBRID: - return MPEG4ProfileHybrid; - case AV_PROFILE_MPEG4_ADVANCED_REAL_TIME: - return MPEG4ProfileAdvancedRealTime; - case AV_PROFILE_MPEG4_CORE_SCALABLE: - return MPEG4ProfileCoreScalable; - case AV_PROFILE_MPEG4_ADVANCED_CODING: - return MPEG4ProfileAdvancedCoding; - case AV_PROFILE_MPEG4_ADVANCED_CORE: - return MPEG4ProfileAdvancedCore; - case AV_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE: - return MPEG4ProfileAdvancedScalable; - case AV_PROFILE_MPEG4_ADVANCED_SIMPLE: - return MPEG4ProfileAdvancedSimple; - case AV_PROFILE_MPEG4_SIMPLE_STUDIO: - // Studio profiles are not supported by mediacodec. - default: - break; - } - } else if(avctx->codec_id == AV_CODEC_ID_AV1) { - switch (avctx->profile) - { - case AV_PROFILE_AV1_MAIN: - return AV1ProfileMain8; - case AV_PROFILE_AV1_HIGH: - case AV_PROFILE_AV1_PROFESSIONAL: - default: - break; - } - } - - return -1; -} - -char *ff_AMediaCodecList_getCodecNameByType(const char *mime, int profile, int encoder, void *log_ctx) -{ - int ret; - int i; - int codec_count; - int found_codec = 0; - char *name = NULL; - char *supported_type = NULL; - - JNIEnv *env = NULL; - struct JNIAMediaCodecListFields jfields = { 0 }; - struct JNIAMediaFormatFields mediaformat_jfields = { 0 }; - - jobject codec_name = NULL; - - jobject info = NULL; - jobject type = NULL; - jobjectArray types = NULL; - - jobject capabilities = NULL; - jobject profile_level = NULL; - jobjectArray profile_levels = NULL; - - JNI_GET_ENV_OR_RETURN(env, log_ctx, NULL); - - if ((ret = ff_jni_init_jfields(env, &jfields, jni_amediacodeclist_mapping, 0, log_ctx)) < 0) { - goto done; - } - - if ((ret = ff_jni_init_jfields(env, &mediaformat_jfields, jni_amediaformat_mapping, 0, log_ctx)) < 0) { - goto done; - } - - codec_count = (*env)->CallStaticIntMethod(env, jfields.mediacodec_list_class, jfields.get_codec_count_id); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - for(i = 0; i < codec_count; i++) { - int j; - int type_count; - int is_encoder; - - info = (*env)->CallStaticObjectMethod(env, jfields.mediacodec_list_class, jfields.get_codec_info_at_id, i); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - types = (*env)->CallObjectMethod(env, info, jfields.get_supported_types_id); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - is_encoder = (*env)->CallBooleanMethod(env, info, jfields.is_encoder_id); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - if (is_encoder != encoder) { - goto done_with_info; - } - - if (jfields.is_software_only_id) { - int is_software_only = (*env)->CallBooleanMethod(env, info, jfields.is_software_only_id); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - if (is_software_only) { - goto done_with_info; - } - } - - codec_name = (*env)->CallObjectMethod(env, info, jfields.get_name_id); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - name = ff_jni_jstring_to_utf_chars(env, codec_name, log_ctx); - if (!name) { - goto done; - } - - (*env)->DeleteLocalRef(env, codec_name); - codec_name = NULL; - - /* Skip software decoders */ - if ( - strstr(name, "OMX.google") || - strstr(name, "OMX.ffmpeg") || - (strstr(name, "OMX.SEC") && strstr(name, ".sw.")) || - !strcmp(name, "OMX.qcom.video.decoder.hevcswvdec")) { - goto done_with_info; - } - - type_count = (*env)->GetArrayLength(env, types); - for (j = 0; j < type_count; j++) { - int k; - int profile_count; - - type = (*env)->GetObjectArrayElement(env, types, j); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - supported_type = ff_jni_jstring_to_utf_chars(env, type, log_ctx); - if (!supported_type) { - goto done; - } - - if (av_strcasecmp(supported_type, mime)) { - goto done_with_type; - } - - capabilities = (*env)->CallObjectMethod(env, info, jfields.get_codec_capabilities_id, type); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - profile_levels = (*env)->GetObjectField(env, capabilities, jfields.profile_levels_id); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - profile_count = (*env)->GetArrayLength(env, profile_levels); - if (!profile_count) { - found_codec = 1; - } - for (k = 0; k < profile_count; k++) { - int supported_profile = 0; - - if (profile < 0) { - found_codec = 1; - break; - } - - profile_level = (*env)->GetObjectArrayElement(env, profile_levels, k); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - supported_profile = (*env)->GetIntField(env, profile_level, jfields.profile_id); - if (ff_jni_exception_check(env, 1, log_ctx) < 0) { - goto done; - } - - found_codec = profile == supported_profile; - - (*env)->DeleteLocalRef(env, profile_level); - profile_level = NULL; - - if (found_codec) { - break; - } - } - -done_with_type: - (*env)->DeleteLocalRef(env, profile_levels); - profile_levels = NULL; - - (*env)->DeleteLocalRef(env, capabilities); - capabilities = NULL; - - (*env)->DeleteLocalRef(env, type); - type = NULL; - - av_freep(&supported_type); - - if (found_codec) { - break; - } - } - -done_with_info: - (*env)->DeleteLocalRef(env, info); - info = NULL; - - (*env)->DeleteLocalRef(env, types); - types = NULL; - - if (found_codec) { - break; - } - - av_freep(&name); - } - -done: - (*env)->DeleteLocalRef(env, codec_name); - (*env)->DeleteLocalRef(env, info); - (*env)->DeleteLocalRef(env, type); - (*env)->DeleteLocalRef(env, types); - (*env)->DeleteLocalRef(env, capabilities); - (*env)->DeleteLocalRef(env, profile_level); - (*env)->DeleteLocalRef(env, profile_levels); - - av_freep(&supported_type); - - ff_jni_reset_jfields(env, &jfields, jni_amediacodeclist_mapping, 0, log_ctx); - ff_jni_reset_jfields(env, &mediaformat_jfields, jni_amediaformat_mapping, 0, log_ctx); - - if (!found_codec) { - av_freep(&name); - } - - return name; -} - -static FFAMediaFormat *mediaformat_jni_new(void) -{ - JNIEnv *env = NULL; - FFAMediaFormatJni *format = NULL; - jobject object = NULL; - - format = av_mallocz(sizeof(*format)); - if (!format) { - return NULL; - } - format->api = media_format_jni; - - env = ff_jni_get_env(format); - if (!env) { - av_freep(&format); - return NULL; - } - - if (ff_jni_init_jfields(env, &format->jfields, jni_amediaformat_mapping, 1, format) < 0) { - goto fail; - } - - object = (*env)->NewObject(env, format->jfields.mediaformat_class, format->jfields.init_id); - if (!object) { - goto fail; - } - - format->object = (*env)->NewGlobalRef(env, object); - if (!format->object) { - goto fail; - } - -fail: - (*env)->DeleteLocalRef(env, object); - - if (!format->object) { - ff_jni_reset_jfields(env, &format->jfields, jni_amediaformat_mapping, 1, format); - av_freep(&format); - } - - return (FFAMediaFormat *)format; -} - -static FFAMediaFormat *mediaformat_jni_newFromObject(void *object) -{ - JNIEnv *env = NULL; - FFAMediaFormatJni *format = NULL; - - format = av_mallocz(sizeof(*format)); - if (!format) { - return NULL; - } - format->api = media_format_jni; - - env = ff_jni_get_env(format); - if (!env) { - av_freep(&format); - return NULL; - } - - if (ff_jni_init_jfields(env, &format->jfields, jni_amediaformat_mapping, 1, format) < 0) { - goto fail; - } - - format->object = (*env)->NewGlobalRef(env, object); - if (!format->object) { - goto fail; - } - - return (FFAMediaFormat *)format; -fail: - ff_jni_reset_jfields(env, &format->jfields, jni_amediaformat_mapping, 1, format); - - av_freep(&format); - - return NULL; -} - -static int mediaformat_jni_delete(FFAMediaFormat* ctx) -{ - int ret = 0; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - JNIEnv *env = NULL; - - if (!format) { - return 0; - } - - JNI_GET_ENV_OR_RETURN(env, format, AVERROR_EXTERNAL); - - (*env)->DeleteGlobalRef(env, format->object); - format->object = NULL; - - ff_jni_reset_jfields(env, &format->jfields, jni_amediaformat_mapping, 1, format); - - av_freep(&format); - - return ret; -} - -static char* mediaformat_jni_toString(FFAMediaFormat* ctx) -{ - char *ret = NULL; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - JNIEnv *env = NULL; - jstring description = NULL; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN(env, format, NULL); - - description = (*env)->CallObjectMethod(env, format->object, format->jfields.to_string_id); - if (ff_jni_exception_check(env, 1, NULL) < 0) { - goto fail; - } - - ret = ff_jni_jstring_to_utf_chars(env, description, format); -fail: - (*env)->DeleteLocalRef(env, description); - - return ret; -} - -static int mediaformat_jni_getInt32(FFAMediaFormat* ctx, const char *name, int32_t *out) -{ - int ret = 1; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - JNIEnv *env = NULL; - jstring key = NULL; - jboolean contains_key; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN(env, format, 0); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - ret = 0; - goto fail; - } - - contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key); - if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - *out = (*env)->CallIntMethod(env, format->object, format->jfields.get_integer_id, key); - if ((ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - ret = 1; -fail: - (*env)->DeleteLocalRef(env, key); - - return ret; -} - -static int mediaformat_jni_getInt64(FFAMediaFormat* ctx, const char *name, int64_t *out) -{ - int ret = 1; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - JNIEnv *env = NULL; - jstring key = NULL; - jboolean contains_key; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN(env, format, 0); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - ret = 0; - goto fail; - } - - contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key); - if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - *out = (*env)->CallLongMethod(env, format->object, format->jfields.get_long_id, key); - if ((ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - ret = 1; -fail: - (*env)->DeleteLocalRef(env, key); - - return ret; -} - -static int mediaformat_jni_getFloat(FFAMediaFormat* ctx, const char *name, float *out) -{ - int ret = 1; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - JNIEnv *env = NULL; - jstring key = NULL; - jboolean contains_key; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN(env, format, 0); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - ret = 0; - goto fail; - } - - contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key); - if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - *out = (*env)->CallFloatMethod(env, format->object, format->jfields.get_float_id, key); - if ((ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - ret = 1; -fail: - (*env)->DeleteLocalRef(env, key); - - return ret; -} - -static int mediaformat_jni_getBuffer(FFAMediaFormat* ctx, const char *name, void** data, size_t *size) -{ - int ret = 1; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - JNIEnv *env = NULL; - jstring key = NULL; - jboolean contains_key; - jobject result = NULL; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN(env, format, 0); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - ret = 0; - goto fail; - } - - contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key); - if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - result = (*env)->CallObjectMethod(env, format->object, format->jfields.get_bytebuffer_id, key); - if ((ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - *data = (*env)->GetDirectBufferAddress(env, result); - *size = (*env)->GetDirectBufferCapacity(env, result); - - if (*data && *size) { - void *src = *data; - *data = av_malloc(*size); - if (!*data) { - ret = 0; - goto fail; - } - - memcpy(*data, src, *size); - } - - ret = 1; -fail: - (*env)->DeleteLocalRef(env, key); - (*env)->DeleteLocalRef(env, result); - - return ret; -} - -static int mediaformat_jni_getString(FFAMediaFormat* ctx, const char *name, const char **out) -{ - int ret = 1; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - JNIEnv *env = NULL; - jstring key = NULL; - jboolean contains_key; - jstring result = NULL; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN(env, format, 0); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - ret = 0; - goto fail; - } - - contains_key = (*env)->CallBooleanMethod(env, format->object, format->jfields.contains_key_id, key); - if (!contains_key || (ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - result = (*env)->CallObjectMethod(env, format->object, format->jfields.get_string_id, key); - if ((ret = ff_jni_exception_check(env, 1, format)) < 0) { - ret = 0; - goto fail; - } - - *out = ff_jni_jstring_to_utf_chars(env, result, format); - if (!*out) { - ret = 0; - goto fail; - } - - ret = 1; -fail: - (*env)->DeleteLocalRef(env, key); - (*env)->DeleteLocalRef(env, result); - - return ret; -} - -static void mediaformat_jni_setInt32(FFAMediaFormat* ctx, const char* name, int32_t value) -{ - JNIEnv *env = NULL; - jstring key = NULL; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN_VOID(env, format); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - goto fail; - } - - (*env)->CallVoidMethod(env, format->object, format->jfields.set_integer_id, key, value); - if (ff_jni_exception_check(env, 1, format) < 0) { - goto fail; - } - -fail: - (*env)->DeleteLocalRef(env, key); -} - -static void mediaformat_jni_setInt64(FFAMediaFormat* ctx, const char* name, int64_t value) -{ - JNIEnv *env = NULL; - jstring key = NULL; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN_VOID(env, format); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - goto fail; - } - - (*env)->CallVoidMethod(env, format->object, format->jfields.set_long_id, key, value); - if (ff_jni_exception_check(env, 1, format) < 0) { - goto fail; - } - -fail: - (*env)->DeleteLocalRef(env, key); -} - -static void mediaformat_jni_setFloat(FFAMediaFormat* ctx, const char* name, float value) -{ - JNIEnv *env = NULL; - jstring key = NULL; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN_VOID(env, format); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - goto fail; - } - - (*env)->CallVoidMethod(env, format->object, format->jfields.set_float_id, key, value); - if (ff_jni_exception_check(env, 1, format) < 0) { - goto fail; - } - -fail: - (*env)->DeleteLocalRef(env, key); -} - -static void mediaformat_jni_setString(FFAMediaFormat* ctx, const char* name, const char* value) -{ - JNIEnv *env = NULL; - jstring key = NULL; - jstring string = NULL; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN_VOID(env, format); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - goto fail; - } - - string = ff_jni_utf_chars_to_jstring(env, value, format); - if (!string) { - goto fail; - } - - (*env)->CallVoidMethod(env, format->object, format->jfields.set_string_id, key, string); - if (ff_jni_exception_check(env, 1, format) < 0) { - goto fail; - } - -fail: - (*env)->DeleteLocalRef(env, key); - (*env)->DeleteLocalRef(env, string); -} - -static void mediaformat_jni_setBuffer(FFAMediaFormat* ctx, const char* name, void* data, size_t size) -{ - JNIEnv *env = NULL; - jstring key = NULL; - jobject buffer = NULL; - void *buffer_data = NULL; - FFAMediaFormatJni *format = (FFAMediaFormatJni *)ctx; - - av_assert0(format != NULL); - - JNI_GET_ENV_OR_RETURN_VOID(env, format); - - key = ff_jni_utf_chars_to_jstring(env, name, format); - if (!key) { - goto fail; - } - - if (!data || !size) { - goto fail; - } - - buffer_data = av_malloc(size); - if (!buffer_data) { - goto fail; - } - - memcpy(buffer_data, data, size); - - buffer = (*env)->NewDirectByteBuffer(env, buffer_data, size); - if (!buffer) { - goto fail; - } - - (*env)->CallVoidMethod(env, format->object, format->jfields.set_bytebuffer_id, key, buffer); - if (ff_jni_exception_check(env, 1, format) < 0) { - goto fail; - } - -fail: - (*env)->DeleteLocalRef(env, key); - (*env)->DeleteLocalRef(env, buffer); -} - -static int codec_init_static_fields(FFAMediaCodecJni *codec) -{ - int ret = 0; - JNIEnv *env = NULL; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - codec->INFO_TRY_AGAIN_LATER = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_try_again_later_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - - codec->BUFFER_FLAG_CODEC_CONFIG = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.buffer_flag_codec_config_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - - codec->BUFFER_FLAG_END_OF_STREAM = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.buffer_flag_end_of_stream_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - - if (codec->jfields.buffer_flag_key_frame_id) { - codec->BUFFER_FLAG_KEY_FRAME = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.buffer_flag_key_frame_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - } - - codec->CONFIGURE_FLAG_ENCODE = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.configure_flag_encode_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - - codec->INFO_TRY_AGAIN_LATER = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_try_again_later_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - - codec->INFO_OUTPUT_BUFFERS_CHANGED = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_output_buffers_changed_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - - codec->INFO_OUTPUT_FORMAT_CHANGED = (*env)->GetStaticIntField(env, codec->jfields.mediacodec_class, codec->jfields.info_output_format_changed_id); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - goto fail; - } - -fail: - - return ret; -} - -#define CREATE_CODEC_BY_NAME 0 -#define CREATE_DECODER_BY_TYPE 1 -#define CREATE_ENCODER_BY_TYPE 2 - -static inline FFAMediaCodec *codec_create(int method, const char *arg) -{ - int ret = -1; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = NULL; - jstring jarg = NULL; - jobject object = NULL; - jobject buffer_info = NULL; - jmethodID create_id = NULL; - - codec = av_mallocz(sizeof(*codec)); - if (!codec) { - return NULL; - } - codec->api = media_codec_jni; - - env = ff_jni_get_env(codec); - if (!env) { - av_freep(&codec); - return NULL; - } - - if (ff_jni_init_jfields(env, &codec->jfields, jni_amediacodec_mapping, 1, codec) < 0) { - goto fail; - } - - jarg = ff_jni_utf_chars_to_jstring(env, arg, codec); - if (!jarg) { - goto fail; - } - - switch (method) { - case CREATE_CODEC_BY_NAME: create_id = codec->jfields.create_by_codec_name_id; break; - case CREATE_DECODER_BY_TYPE: create_id = codec->jfields.create_decoder_by_type_id; break; - case CREATE_ENCODER_BY_TYPE: create_id = codec->jfields.create_encoder_by_type_id; break; - default: - av_assert0(0); - } - - object = (*env)->CallStaticObjectMethod(env, - codec->jfields.mediacodec_class, - create_id, - jarg); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - - codec->object = (*env)->NewGlobalRef(env, object); - if (!codec->object) { - goto fail; - } - - if (codec_init_static_fields(codec) < 0) { - goto fail; - } - - if (codec->jfields.get_input_buffer_id && codec->jfields.get_output_buffer_id) { - codec->has_get_i_o_buffer = 1; - } - - buffer_info = (*env)->NewObject(env, codec->jfields.mediainfo_class, codec->jfields.init_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - - codec->buffer_info = (*env)->NewGlobalRef(env, buffer_info); - if (!codec->buffer_info) { - goto fail; - } - - ret = 0; -fail: - (*env)->DeleteLocalRef(env, jarg); - (*env)->DeleteLocalRef(env, object); - (*env)->DeleteLocalRef(env, buffer_info); - - if (ret < 0) { - (*env)->DeleteGlobalRef(env, codec->object); - (*env)->DeleteGlobalRef(env, codec->buffer_info); - - ff_jni_reset_jfields(env, &codec->jfields, jni_amediacodec_mapping, 1, codec); - av_freep(&codec); - } - - return (FFAMediaCodec *)codec; -} - -#define DECLARE_FF_AMEDIACODEC_CREATE_FUNC(name, method) \ -static FFAMediaCodec *mediacodec_jni_##name(const char *arg) \ -{ \ - return codec_create(method, arg); \ -} \ - -DECLARE_FF_AMEDIACODEC_CREATE_FUNC(createCodecByName, CREATE_CODEC_BY_NAME) -DECLARE_FF_AMEDIACODEC_CREATE_FUNC(createDecoderByType, CREATE_DECODER_BY_TYPE) -DECLARE_FF_AMEDIACODEC_CREATE_FUNC(createEncoderByType, CREATE_ENCODER_BY_TYPE) - -static int mediacodec_jni_delete(FFAMediaCodec* ctx) -{ - int ret = 0; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - JNIEnv *env = NULL; - - if (!codec) { - return 0; - } - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - } - - (*env)->DeleteGlobalRef(env, codec->input_buffers); - codec->input_buffers = NULL; - - (*env)->DeleteGlobalRef(env, codec->output_buffers); - codec->output_buffers = NULL; - - (*env)->DeleteGlobalRef(env, codec->object); - codec->object = NULL; - - (*env)->DeleteGlobalRef(env, codec->buffer_info); - codec->buffer_info = NULL; - - ff_jni_reset_jfields(env, &codec->jfields, jni_amediacodec_mapping, 1, codec); - - av_freep(&codec); - - return ret; -} - -static char *mediacodec_jni_getName(FFAMediaCodec *ctx) -{ - char *ret = NULL; - JNIEnv *env = NULL; - jobject *name = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, NULL); - - name = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_name_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - - ret = ff_jni_jstring_to_utf_chars(env, name, codec); - -fail: - if (name) { - (*env)->DeleteLocalRef(env, name); - } - - return ret; -} - -static int mediacodec_jni_configure(FFAMediaCodec *ctx, - const FFAMediaFormat* format_ctx, - FFANativeWindow* window, - void *crypto, - uint32_t flags) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - const FFAMediaFormatJni *format = (FFAMediaFormatJni *)format_ctx; - jobject *surface = window ? window->surface : NULL; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - if (flags & codec->CONFIGURE_FLAG_ENCODE) { - if (surface && !codec->jfields.set_input_surface_id) { - av_log(ctx, AV_LOG_ERROR, "System doesn't support setInputSurface\n"); - return AVERROR_EXTERNAL; - } - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.configure_id, format->object, NULL, NULL, flags); - if (ff_jni_exception_check(env, 1, codec) < 0) - return AVERROR_EXTERNAL; - - if (!surface) - return 0; - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.set_input_surface_id, surface); - if (ff_jni_exception_check(env, 1, codec) < 0) - return AVERROR_EXTERNAL; - return 0; - } else { - (*env)->CallVoidMethod(env, codec->object, codec->jfields.configure_id, format->object, surface, NULL, flags); - } - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static int mediacodec_jni_setParameters(FFAMediaCodec *ctx, - const FFAMediaFormat* format_ctx) -{ - return AVERROR_PATCHWELCOME; -} - -static int mediacodec_jni_start(FFAMediaCodec* ctx) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.start_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static int mediacodec_jni_stop(FFAMediaCodec* ctx) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.stop_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static int mediacodec_jni_flush(FFAMediaCodec* ctx) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.flush_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static int mediacodec_jni_releaseOutputBuffer(FFAMediaCodec* ctx, size_t idx, int render) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_output_buffer_id, (jint)idx, (jboolean)render); - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static int mediacodec_jni_releaseOutputBufferAtTime(FFAMediaCodec *ctx, size_t idx, int64_t timestampNs) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_output_buffer_at_time_id, (jint)idx, (jlong)timestampNs); - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static ssize_t mediacodec_jni_dequeueInputBuffer(FFAMediaCodec* ctx, int64_t timeoutUs) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - ret = (*env)->CallIntMethod(env, codec->object, codec->jfields.dequeue_input_buffer_id, timeoutUs); - if (ff_jni_exception_check(env, 1, codec) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static int mediacodec_jni_queueInputBuffer(FFAMediaCodec* ctx, size_t idx, off_t offset, size_t size, uint64_t time, uint32_t flags) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.queue_input_buffer_id, (jint)idx, (jint)offset, (jint)size, time, flags); - if ((ret = ff_jni_exception_check(env, 1, codec)) < 0) { - ret = AVERROR_EXTERNAL; - goto fail; - } - -fail: - return ret; -} - -static ssize_t mediacodec_jni_dequeueOutputBuffer(FFAMediaCodec* ctx, FFAMediaCodecBufferInfo *info, int64_t timeoutUs) -{ - int ret = 0; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - ret = (*env)->CallIntMethod(env, codec->object, codec->jfields.dequeue_output_buffer_id, codec->buffer_info, timeoutUs); - if (ff_jni_exception_check(env, 1, codec) < 0) { - return AVERROR_EXTERNAL; - } - - info->flags = (*env)->GetIntField(env, codec->buffer_info, codec->jfields.flags_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - return AVERROR_EXTERNAL; - } - - info->offset = (*env)->GetIntField(env, codec->buffer_info, codec->jfields.offset_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - return AVERROR_EXTERNAL; - } - - info->presentationTimeUs = (*env)->GetLongField(env, codec->buffer_info, codec->jfields.presentation_time_us_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - return AVERROR_EXTERNAL; - } - - info->size = (*env)->GetIntField(env, codec->buffer_info, codec->jfields.size_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - return AVERROR_EXTERNAL; - } - - return ret; -} - -static uint8_t* mediacodec_jni_getInputBuffer(FFAMediaCodec* ctx, size_t idx, size_t *out_size) -{ - uint8_t *ret = NULL; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - jobject buffer = NULL; - jobject input_buffers = NULL; - - JNI_GET_ENV_OR_RETURN(env, codec, NULL); - - if (codec->has_get_i_o_buffer) { - buffer = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_input_buffer_id, (jint)idx); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - } else { - if (!codec->input_buffers) { - input_buffers = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_input_buffers_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - - codec->input_buffers = (*env)->NewGlobalRef(env, input_buffers); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - } - - buffer = (*env)->GetObjectArrayElement(env, codec->input_buffers, idx); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - } - - ret = (*env)->GetDirectBufferAddress(env, buffer); - *out_size = (*env)->GetDirectBufferCapacity(env, buffer); -fail: - (*env)->DeleteLocalRef(env, buffer); - (*env)->DeleteLocalRef(env, input_buffers); - - return ret; -} - -static uint8_t* mediacodec_jni_getOutputBuffer(FFAMediaCodec* ctx, size_t idx, size_t *out_size) -{ - uint8_t *ret = NULL; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - jobject buffer = NULL; - jobject output_buffers = NULL; - - JNI_GET_ENV_OR_RETURN(env, codec, NULL); - - if (codec->has_get_i_o_buffer) { - buffer = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_output_buffer_id, (jint)idx); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - } else { - if (!codec->output_buffers) { - output_buffers = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_output_buffers_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - - codec->output_buffers = (*env)->NewGlobalRef(env, output_buffers); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - } - - buffer = (*env)->GetObjectArrayElement(env, codec->output_buffers, idx); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - } - - ret = (*env)->GetDirectBufferAddress(env, buffer); - *out_size = (*env)->GetDirectBufferCapacity(env, buffer); -fail: - (*env)->DeleteLocalRef(env, buffer); - (*env)->DeleteLocalRef(env, output_buffers); - - return ret; -} - -static FFAMediaFormat* mediacodec_jni_getOutputFormat(FFAMediaCodec* ctx) -{ - FFAMediaFormat *ret = NULL; - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - jobject mediaformat = NULL; - - JNI_GET_ENV_OR_RETURN(env, codec, NULL); - - mediaformat = (*env)->CallObjectMethod(env, codec->object, codec->jfields.get_output_format_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - goto fail; - } - - ret = mediaformat_jni_newFromObject(mediaformat); -fail: - (*env)->DeleteLocalRef(env, mediaformat); - - return ret; -} - -static int mediacodec_jni_infoTryAgainLater(FFAMediaCodec *ctx, ssize_t idx) -{ - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - return idx == codec->INFO_TRY_AGAIN_LATER; -} - -static int mediacodec_jni_infoOutputBuffersChanged(FFAMediaCodec *ctx, ssize_t idx) -{ - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - return idx == codec->INFO_OUTPUT_BUFFERS_CHANGED; -} - -static int mediacodec_jni_infoOutputFormatChanged(FFAMediaCodec *ctx, ssize_t idx) -{ - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - return idx == codec->INFO_OUTPUT_FORMAT_CHANGED; -} - -static int mediacodec_jni_getBufferFlagCodecConfig(FFAMediaCodec *ctx) -{ - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - return codec->BUFFER_FLAG_CODEC_CONFIG; -} - -static int mediacodec_jni_getBufferFlagEndOfStream(FFAMediaCodec *ctx) -{ - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - return codec->BUFFER_FLAG_END_OF_STREAM; -} - -static int mediacodec_jni_getBufferFlagKeyFrame(FFAMediaCodec *ctx) -{ - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - return codec->BUFFER_FLAG_KEY_FRAME; -} - -static int mediacodec_jni_getConfigureFlagEncode(FFAMediaCodec *ctx) -{ - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - return codec->CONFIGURE_FLAG_ENCODE; -} - -static int mediacodec_jni_cleanOutputBuffers(FFAMediaCodec *ctx) -{ - int ret = 0; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - if (!codec->has_get_i_o_buffer) { - if (codec->output_buffers) { - JNIEnv *env = NULL; - - env = ff_jni_get_env(codec); - if (!env) { - ret = AVERROR_EXTERNAL; - goto fail; - } - - (*env)->DeleteGlobalRef(env, codec->output_buffers); - codec->output_buffers = NULL; - } - } - -fail: - return ret; -} - -static int mediacodec_jni_signalEndOfInputStream(FFAMediaCodec *ctx) -{ - JNIEnv *env = NULL; - FFAMediaCodecJni *codec = (FFAMediaCodecJni *)ctx; - - JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL); - - (*env)->CallVoidMethod(env, codec->object, codec->jfields.signal_end_of_input_stream_id); - if (ff_jni_exception_check(env, 1, codec) < 0) { - return AVERROR_EXTERNAL; - } - - return 0; -} - -static int mediacodec_jni_setAsyncNotifyCallback(FFAMediaCodec *codec, - const FFAMediaCodecOnAsyncNotifyCallback *callback, - void *userdata) -{ - av_log(codec, AV_LOG_ERROR, "Doesn't support aync mode with JNI, please try ndk_codec=1\n"); - return AVERROR(ENOSYS); -} - -static const FFAMediaFormat media_format_jni = { - .class = &amediaformat_class, - - .create = mediaformat_jni_new, - .delete = mediaformat_jni_delete, - - .toString = mediaformat_jni_toString, - - .getInt32 = mediaformat_jni_getInt32, - .getInt64 = mediaformat_jni_getInt64, - .getFloat = mediaformat_jni_getFloat, - .getBuffer = mediaformat_jni_getBuffer, - .getString = mediaformat_jni_getString, - - .setInt32 = mediaformat_jni_setInt32, - .setInt64 = mediaformat_jni_setInt64, - .setFloat = mediaformat_jni_setFloat, - .setString = mediaformat_jni_setString, - .setBuffer = mediaformat_jni_setBuffer, -}; - -static const FFAMediaCodec media_codec_jni = { - .class = &amediacodec_class, - - .getName = mediacodec_jni_getName, - - .createCodecByName = mediacodec_jni_createCodecByName, - .createDecoderByType = mediacodec_jni_createDecoderByType, - .createEncoderByType = mediacodec_jni_createEncoderByType, - .delete = mediacodec_jni_delete, - - .configure = mediacodec_jni_configure, - .setParameters = mediacodec_jni_setParameters, - .start = mediacodec_jni_start, - .stop = mediacodec_jni_stop, - .flush = mediacodec_jni_flush, - - .getInputBuffer = mediacodec_jni_getInputBuffer, - .getOutputBuffer = mediacodec_jni_getOutputBuffer, - - .dequeueInputBuffer = mediacodec_jni_dequeueInputBuffer, - .queueInputBuffer = mediacodec_jni_queueInputBuffer, - - .dequeueOutputBuffer = mediacodec_jni_dequeueOutputBuffer, - .getOutputFormat = mediacodec_jni_getOutputFormat, - - .releaseOutputBuffer = mediacodec_jni_releaseOutputBuffer, - .releaseOutputBufferAtTime = mediacodec_jni_releaseOutputBufferAtTime, - - .infoTryAgainLater = mediacodec_jni_infoTryAgainLater, - .infoOutputBuffersChanged = mediacodec_jni_infoOutputBuffersChanged, - .infoOutputFormatChanged = mediacodec_jni_infoOutputFormatChanged, - - .getBufferFlagCodecConfig = mediacodec_jni_getBufferFlagCodecConfig, - .getBufferFlagEndOfStream = mediacodec_jni_getBufferFlagEndOfStream, - .getBufferFlagKeyFrame = mediacodec_jni_getBufferFlagKeyFrame, - - .getConfigureFlagEncode = mediacodec_jni_getConfigureFlagEncode, - .cleanOutputBuffers = mediacodec_jni_cleanOutputBuffers, - .signalEndOfInputStream = mediacodec_jni_signalEndOfInputStream, - .setAsyncNotifyCallback = mediacodec_jni_setAsyncNotifyCallback, -}; - -typedef struct FFAMediaFormatNdk { - FFAMediaFormat api; - - void *libmedia; - AMediaFormat *impl; - - bool (*getRect)(AMediaFormat *, const char *name, - int32_t *left, int32_t *top, int32_t *right, int32_t *bottom); - void (*setRect)(AMediaFormat *, const char *name, - int32_t left, int32_t top, int32_t right, int32_t bottom); -} FFAMediaFormatNdk; - -typedef struct FFAMediaCodecNdk { - FFAMediaCodec api; - - void *libmedia; - AMediaCodec *impl; - ANativeWindow *window; - - FFAMediaCodecOnAsyncNotifyCallback async_cb; - void *async_userdata; - - // Available since API level 28. - media_status_t (*getName)(AMediaCodec*, char** out_name); - void (*releaseName)(AMediaCodec*, char* name); - - // Available since API level 26. - media_status_t (*setInputSurface)(AMediaCodec*, ANativeWindow *); - media_status_t (*signalEndOfInputStream)(AMediaCodec *); - media_status_t (*setAsyncNotifyCallback)(AMediaCodec *, - struct AMediaCodecOnAsyncNotifyCallback callback, void *userdata); -} FFAMediaCodecNdk; - -static const FFAMediaFormat media_format_ndk; -static const FFAMediaCodec media_codec_ndk; - -static const AVClass amediaformat_ndk_class = { - .class_name = "amediaformat_ndk", - .item_name = av_default_item_name, - .version = LIBAVUTIL_VERSION_INT, -}; - -static const AVClass amediacodec_ndk_class = { - .class_name = "amediacodec_ndk", - .item_name = av_default_item_name, - .version = LIBAVUTIL_VERSION_INT, -}; - -static int media_status_to_error(media_status_t status) -{ - switch (status) { - case AMEDIA_OK: - return 0; - case AMEDIACODEC_ERROR_INSUFFICIENT_RESOURCE: - return AVERROR(ENOMEM); - case AMEDIA_ERROR_MALFORMED: - return AVERROR_INVALIDDATA; - case AMEDIA_ERROR_UNSUPPORTED: - return AVERROR(ENOTSUP); - case AMEDIA_ERROR_INVALID_PARAMETER: - return AVERROR(EINVAL); - case AMEDIA_ERROR_INVALID_OPERATION: - return AVERROR(EOPNOTSUPP); - case AMEDIA_ERROR_END_OF_STREAM: - return AVERROR_EOF; - case AMEDIA_ERROR_IO: - return AVERROR(EIO); - case AMEDIA_ERROR_WOULD_BLOCK: - return AVERROR(EWOULDBLOCK); - default: - return AVERROR_EXTERNAL; - } -} - -static FFAMediaFormat *mediaformat_ndk_create(AMediaFormat *impl) -{ - FFAMediaFormatNdk *format = av_mallocz(sizeof(*format)); - if (!format) - return NULL; - - format->api = media_format_ndk; - - format->libmedia = dlopen("libmediandk.so", RTLD_NOW); - if (!format->libmedia) - goto error; - -#define GET_OPTIONAL_SYMBOL(sym) \ - format->sym = dlsym(format->libmedia, "AMediaFormat_" #sym); - - GET_OPTIONAL_SYMBOL(getRect) - GET_OPTIONAL_SYMBOL(setRect) - -#undef GET_OPTIONAL_SYMBOL - - if (impl) { - format->impl = impl; - } else { - format->impl = AMediaFormat_new(); - if (!format->impl) - goto error; - } - - return (FFAMediaFormat *)format; - -error: - if (format->libmedia) - dlclose(format->libmedia); - av_freep(&format); - return NULL; -} - -static FFAMediaFormat *mediaformat_ndk_new(void) -{ - return mediaformat_ndk_create(NULL); -} - -static int mediaformat_ndk_delete(FFAMediaFormat* ctx) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - int ret = 0; - if (!format) - return 0; - - av_assert0(format->api.class == &amediaformat_ndk_class); - - if (format->impl && (AMediaFormat_delete(format->impl) != AMEDIA_OK)) - ret = AVERROR_EXTERNAL; - if (format->libmedia) - dlclose(format->libmedia); - av_free(format); - - return ret; -} - -static char* mediaformat_ndk_toString(FFAMediaFormat* ctx) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - const char *str = AMediaFormat_toString(format->impl); - return av_strdup(str); -} - -static int mediaformat_ndk_getInt32(FFAMediaFormat* ctx, const char *name, int32_t *out) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - return AMediaFormat_getInt32(format->impl, name, out); -} - -static int mediaformat_ndk_getInt64(FFAMediaFormat* ctx, const char *name, int64_t *out) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - return AMediaFormat_getInt64(format->impl, name, out); -} - -static int mediaformat_ndk_getFloat(FFAMediaFormat* ctx, const char *name, float *out) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - return AMediaFormat_getFloat(format->impl, name, out); -} - -static int mediaformat_ndk_getBuffer(FFAMediaFormat* ctx, const char *name, void** data, size_t *size) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - return AMediaFormat_getBuffer(format->impl, name, data, size); -} - -static int mediaformat_ndk_getString(FFAMediaFormat* ctx, const char *name, const char **out) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - const char *tmp = NULL; - int ret = AMediaFormat_getString(format->impl, name, &tmp); - - if (tmp) - *out = av_strdup(tmp); - return ret; -} - -static int mediaformat_ndk_getRect(FFAMediaFormat *ctx, const char *name, - int32_t *left, int32_t *top, int32_t *right, int32_t *bottom) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - if (!format->getRect) - return AVERROR_EXTERNAL; - return format->getRect(format->impl, name, left, top, right, bottom); -} - -static void mediaformat_ndk_setInt32(FFAMediaFormat* ctx, const char* name, int32_t value) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - AMediaFormat_setInt32(format->impl, name, value); -} - -static void mediaformat_ndk_setInt64(FFAMediaFormat* ctx, const char* name, int64_t value) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - AMediaFormat_setInt64(format->impl, name, value); -} - -static void mediaformat_ndk_setFloat(FFAMediaFormat* ctx, const char* name, float value) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - AMediaFormat_setFloat(format->impl, name, value); -} - -static void mediaformat_ndk_setString(FFAMediaFormat* ctx, const char* name, const char* value) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - AMediaFormat_setString(format->impl, name, value); -} - -static void mediaformat_ndk_setBuffer(FFAMediaFormat* ctx, const char* name, void* data, size_t size) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - AMediaFormat_setBuffer(format->impl, name, data, size); -} - -static void mediaformat_ndk_setRect(FFAMediaFormat *ctx, const char *name, - int32_t left, int32_t top, int32_t right, int32_t bottom) -{ - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)ctx; - if (!format->setRect) { - av_log(ctx, AV_LOG_WARNING, "Doesn't support setRect\n"); - return; - } - format->setRect(format->impl, name, left, top, right, bottom); -} - -static char *mediacodec_ndk_getName(FFAMediaCodec *ctx) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - char *ret = NULL; - char *name = NULL; - - if (!codec->getName || !codec->releaseName) { - av_log(ctx, AV_LOG_DEBUG, "getName() unavailable\n"); - return ret; - } - - codec->getName(codec->impl, &name); - if (name) { - ret = av_strdup(name); - codec->releaseName(codec->impl, name); - } - - return ret; -} - -static inline FFAMediaCodec *ndk_codec_create(int method, const char *arg) { - FFAMediaCodecNdk *codec = av_mallocz(sizeof(*codec)); - const char *lib_name = "libmediandk.so"; - - if (!codec) - return NULL; - - codec->api = media_codec_ndk; - codec->libmedia = dlopen(lib_name, RTLD_NOW); - if (!codec->libmedia) - goto error; - -#define GET_SYMBOL(sym) \ - codec->sym = dlsym(codec->libmedia, "AMediaCodec_" #sym); \ - if (!codec->sym) \ - av_log(codec, AV_LOG_INFO, #sym "() unavailable from %s\n", lib_name); - - GET_SYMBOL(getName) - GET_SYMBOL(releaseName) - - GET_SYMBOL(setInputSurface) - GET_SYMBOL(signalEndOfInputStream) - GET_SYMBOL(setAsyncNotifyCallback) - -#undef GET_SYMBOL - - switch (method) { - case CREATE_CODEC_BY_NAME: - codec->impl = AMediaCodec_createCodecByName(arg); - break; - case CREATE_DECODER_BY_TYPE: - codec->impl = AMediaCodec_createDecoderByType(arg); - break; - case CREATE_ENCODER_BY_TYPE: - codec->impl = AMediaCodec_createEncoderByType(arg); - break; - default: - av_assert0(0); - } - if (!codec->impl) - goto error; - - return (FFAMediaCodec *)codec; - -error: - if (codec->libmedia) - dlclose(codec->libmedia); - av_freep(&codec); - return NULL; -} - -#define DECLARE_NDK_AMEDIACODEC_CREATE_FUNC(name, method) \ -static FFAMediaCodec *mediacodec_ndk_##name(const char *arg) \ -{ \ - return ndk_codec_create(method, arg); \ -} \ - -DECLARE_NDK_AMEDIACODEC_CREATE_FUNC(createCodecByName, CREATE_CODEC_BY_NAME) -DECLARE_NDK_AMEDIACODEC_CREATE_FUNC(createDecoderByType, CREATE_DECODER_BY_TYPE) -DECLARE_NDK_AMEDIACODEC_CREATE_FUNC(createEncoderByType, CREATE_ENCODER_BY_TYPE) - -static int mediacodec_ndk_delete(FFAMediaCodec* ctx) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - int ret = 0; - - if (!codec) - return 0; - - av_assert0(codec->api.class == &amediacodec_ndk_class); - - if (codec->impl && (AMediaCodec_delete(codec->impl) != AMEDIA_OK)) - ret = AVERROR_EXTERNAL; - if (codec->window) - ANativeWindow_release(codec->window); - if (codec->libmedia) - dlclose(codec->libmedia); - av_free(codec); - - return ret; -} - -static int mediacodec_ndk_configure(FFAMediaCodec* ctx, - const FFAMediaFormat* format_ctx, - FFANativeWindow* window, - void *crypto, - uint32_t flags) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)format_ctx; - media_status_t status; - ANativeWindow *native_window = NULL; - - if (window) { - if (window->surface) { - JNIEnv *env = NULL; - JNI_GET_ENV_OR_RETURN(env, ctx, -1); - native_window = ANativeWindow_fromSurface(env, window->surface); - // Save for release - codec->window = native_window; - } else if (window->native_window) { - native_window = window->native_window; - } - } - - if (format_ctx->class != &amediaformat_ndk_class) { - av_log(ctx, AV_LOG_ERROR, "invalid media format\n"); - return AVERROR(EINVAL); - } - - if (flags & AMEDIACODEC_CONFIGURE_FLAG_ENCODE) { - if (native_window && !codec->setInputSurface) { - av_log(ctx, AV_LOG_ERROR, "System doesn't support setInputSurface\n"); - return AVERROR_EXTERNAL; - } - - status = AMediaCodec_configure(codec->impl, format->impl, NULL, NULL, flags); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "Encoder configure failed, %d\n", status); - return AVERROR_EXTERNAL; - } - - if (!native_window) - return 0; - - status = codec->setInputSurface(codec->impl, native_window); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "Encoder set input surface failed, %d\n", status); - return AVERROR_EXTERNAL; - } - } else { - status = AMediaCodec_configure(codec->impl, format->impl, native_window, NULL, flags); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "Decoder configure failed, %d\n", status); - return AVERROR_EXTERNAL; - } - } - - return 0; -} - -static int mediacodec_ndk_setParameters(FFAMediaCodec *ctx, - const FFAMediaFormat* format_ctx) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)format_ctx; - media_status_t status; - - if (format_ctx->class != &amediaformat_ndk_class) { - av_log(ctx, AV_LOG_ERROR, "invalid media format\n"); - return AVERROR(EINVAL); - } - - if (__builtin_available(android 26, *)) { - status = AMediaCodec_setParameters(codec->impl, format->impl); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "setParameters failed, %d\n", status); - return AVERROR_EXTERNAL; - } - return 0; - } - - return AVERROR(ENOSYS); -} - -#define MEDIACODEC_NDK_WRAPPER(method) \ -static int mediacodec_ndk_ ## method(FFAMediaCodec* ctx) \ -{ \ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; \ - media_status_t status = AMediaCodec_ ## method (codec->impl); \ - \ - if (status != AMEDIA_OK) { \ - av_log(codec, AV_LOG_ERROR, #method " failed, %d\n", status); \ - return AVERROR_EXTERNAL; \ - } \ - \ - return 0; \ -} \ - -MEDIACODEC_NDK_WRAPPER(start) -MEDIACODEC_NDK_WRAPPER(stop) -MEDIACODEC_NDK_WRAPPER(flush) - -static uint8_t* mediacodec_ndk_getInputBuffer(FFAMediaCodec* ctx, size_t idx, size_t *out_size) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - return AMediaCodec_getInputBuffer(codec->impl, idx, out_size); -} - -static uint8_t* mediacodec_ndk_getOutputBuffer(FFAMediaCodec* ctx, size_t idx, size_t *out_size) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - return AMediaCodec_getOutputBuffer(codec->impl, idx, out_size); -} - -static ssize_t mediacodec_ndk_dequeueInputBuffer(FFAMediaCodec* ctx, int64_t timeoutUs) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - return AMediaCodec_dequeueInputBuffer(codec->impl, timeoutUs); -} - -static int mediacodec_ndk_queueInputBuffer(FFAMediaCodec *ctx, size_t idx, - off_t offset, size_t size, - uint64_t time, uint32_t flags) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - return AMediaCodec_queueInputBuffer(codec->impl, idx, offset, size, time, flags); -} - -static ssize_t mediacodec_ndk_dequeueOutputBuffer(FFAMediaCodec* ctx, FFAMediaCodecBufferInfo *info, int64_t timeoutUs) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - AMediaCodecBufferInfo buf_info = {0}; - ssize_t ret; - - ret = AMediaCodec_dequeueOutputBuffer(codec->impl, &buf_info, timeoutUs); - info->offset = buf_info.offset; - info->size = buf_info.size; - info->presentationTimeUs = buf_info.presentationTimeUs; - info->flags = buf_info.flags; - - return ret; -} - -static FFAMediaFormat* mediacodec_ndk_getOutputFormat(FFAMediaCodec* ctx) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - AMediaFormat *format = AMediaCodec_getOutputFormat(codec->impl); - - if (!format) - return NULL; - return mediaformat_ndk_create(format); -} - -static int mediacodec_ndk_releaseOutputBuffer(FFAMediaCodec* ctx, size_t idx, int render) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - media_status_t status; - - status = AMediaCodec_releaseOutputBuffer(codec->impl, idx, render); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "release output buffer failed, %d\n", status); - return AVERROR_EXTERNAL; - } - - return 0; -} - -static int mediacodec_ndk_releaseOutputBufferAtTime(FFAMediaCodec *ctx, size_t idx, int64_t timestampNs) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - media_status_t status; - - status = AMediaCodec_releaseOutputBufferAtTime(codec->impl, idx, timestampNs); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "releaseOutputBufferAtTime failed, %d\n", status); - return AVERROR_EXTERNAL; - } - - return 0; -} - -static int mediacodec_ndk_infoTryAgainLater(FFAMediaCodec *ctx, ssize_t idx) -{ - return idx == AMEDIACODEC_INFO_TRY_AGAIN_LATER; -} - -static int mediacodec_ndk_infoOutputBuffersChanged(FFAMediaCodec *ctx, ssize_t idx) -{ - return idx == AMEDIACODEC_INFO_OUTPUT_BUFFERS_CHANGED; -} - -static int mediacodec_ndk_infoOutputFormatChanged(FFAMediaCodec *ctx, ssize_t idx) -{ - return idx == AMEDIACODEC_INFO_OUTPUT_FORMAT_CHANGED; -} - -static int mediacodec_ndk_getBufferFlagCodecConfig(FFAMediaCodec *ctx) -{ - return AMEDIACODEC_BUFFER_FLAG_CODEC_CONFIG; -} - -static int mediacodec_ndk_getBufferFlagEndOfStream(FFAMediaCodec *ctx) -{ - return AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM; -} - -static int mediacodec_ndk_getBufferFlagKeyFrame(FFAMediaCodec *ctx) -{ - return 1; -} - -static int mediacodec_ndk_getConfigureFlagEncode(FFAMediaCodec *ctx) -{ - return AMEDIACODEC_CONFIGURE_FLAG_ENCODE; -} - -static int mediacodec_ndk_cleanOutputBuffers(FFAMediaCodec *ctx) -{ - return 0; -} - -static int mediacodec_ndk_signalEndOfInputStream(FFAMediaCodec *ctx) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - media_status_t status; - - if (!codec->signalEndOfInputStream) { - av_log(codec, AV_LOG_ERROR, "signalEndOfInputStream unavailable\n"); - return AVERROR_EXTERNAL; - } - - status = codec->signalEndOfInputStream(codec->impl); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "signalEndOfInputStream failed, %d\n", status); - return AVERROR_EXTERNAL; - } - av_log(codec, AV_LOG_DEBUG, "signalEndOfInputStream success\n"); - - return 0; -} - -static void mediacodec_ndk_onInputAvailable(AMediaCodec *impl, void *userdata, - int32_t index) -{ - FFAMediaCodecNdk *codec = userdata; - codec->async_cb.onAsyncInputAvailable((FFAMediaCodec *) codec, - codec->async_userdata, index); -} - -static void mediacodec_ndk_onOutputAvailable(AMediaCodec *impl, - void *userdata, - int32_t index, - AMediaCodecBufferInfo *buffer_info) -{ - FFAMediaCodecNdk *codec = userdata; - FFAMediaCodecBufferInfo info = { - .offset = buffer_info->offset, - .size = buffer_info->size, - .presentationTimeUs = buffer_info->presentationTimeUs, - .flags = buffer_info->flags, - }; - - codec->async_cb.onAsyncOutputAvailable(&codec->api, codec->async_userdata, - index, &info); -} - -static void mediacodec_ndk_onFormatChanged(AMediaCodec *impl, void *userdata, - AMediaFormat *format) -{ - FFAMediaCodecNdk *codec = userdata; - FFAMediaFormat *media_format = mediaformat_ndk_create(format); - if (!media_format) - return; - - codec->async_cb.onAsyncFormatChanged(&codec->api, codec->async_userdata, - media_format); - ff_AMediaFormat_delete(media_format); -} - -static void mediacodec_ndk_onError(AMediaCodec *impl, void *userdata, - media_status_t status, - int32_t actionCode, - const char *detail) -{ - FFAMediaCodecNdk *codec = userdata; - int error = media_status_to_error(status); - - codec->async_cb.onAsyncError(&codec->api, codec->async_userdata, error, - detail); -} - -static int mediacodec_ndk_setAsyncNotifyCallback(FFAMediaCodec *ctx, - const FFAMediaCodecOnAsyncNotifyCallback *callback, - void *userdata) -{ - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; - struct AMediaCodecOnAsyncNotifyCallback cb = { - .onAsyncInputAvailable = mediacodec_ndk_onInputAvailable, - .onAsyncOutputAvailable = mediacodec_ndk_onOutputAvailable, - .onAsyncFormatChanged = mediacodec_ndk_onFormatChanged, - .onAsyncError = mediacodec_ndk_onError, - }; - media_status_t status; - - if (!codec->setAsyncNotifyCallback) { - av_log(codec, AV_LOG_ERROR, "setAsyncNotifyCallback unavailable\n"); - return AVERROR(ENOSYS); - } - - if (!callback || - !callback->onAsyncInputAvailable || - !callback->onAsyncOutputAvailable || - !callback->onAsyncFormatChanged || - !callback->onAsyncError) - return AVERROR(EINVAL); - - codec->async_cb = *callback; - codec->async_userdata = userdata; - - status = codec->setAsyncNotifyCallback(codec->impl, cb, codec); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "setAsyncNotifyCallback failed, %d\n", - status); - return AVERROR_EXTERNAL; - } - - return 0; -} - -static const FFAMediaFormat media_format_ndk = { - .class = &amediaformat_ndk_class, - - .create = mediaformat_ndk_new, - .delete = mediaformat_ndk_delete, - - .toString = mediaformat_ndk_toString, - - .getInt32 = mediaformat_ndk_getInt32, - .getInt64 = mediaformat_ndk_getInt64, - .getFloat = mediaformat_ndk_getFloat, - .getBuffer = mediaformat_ndk_getBuffer, - .getString = mediaformat_ndk_getString, - .getRect = mediaformat_ndk_getRect, - - .setInt32 = mediaformat_ndk_setInt32, - .setInt64 = mediaformat_ndk_setInt64, - .setFloat = mediaformat_ndk_setFloat, - .setString = mediaformat_ndk_setString, - .setBuffer = mediaformat_ndk_setBuffer, - .setRect = mediaformat_ndk_setRect, -}; - -static const FFAMediaCodec media_codec_ndk = { - .class = &amediacodec_ndk_class, - - .getName = mediacodec_ndk_getName, - - .createCodecByName = mediacodec_ndk_createCodecByName, - .createDecoderByType = mediacodec_ndk_createDecoderByType, - .createEncoderByType = mediacodec_ndk_createEncoderByType, - .delete = mediacodec_ndk_delete, - - .configure = mediacodec_ndk_configure, - .setParameters = mediacodec_ndk_setParameters, - .start = mediacodec_ndk_start, - .stop = mediacodec_ndk_stop, - .flush = mediacodec_ndk_flush, - - .getInputBuffer = mediacodec_ndk_getInputBuffer, - .getOutputBuffer = mediacodec_ndk_getOutputBuffer, - - .dequeueInputBuffer = mediacodec_ndk_dequeueInputBuffer, - .queueInputBuffer = mediacodec_ndk_queueInputBuffer, - - .dequeueOutputBuffer = mediacodec_ndk_dequeueOutputBuffer, - .getOutputFormat = mediacodec_ndk_getOutputFormat, - - .releaseOutputBuffer = mediacodec_ndk_releaseOutputBuffer, - .releaseOutputBufferAtTime = mediacodec_ndk_releaseOutputBufferAtTime, - - .infoTryAgainLater = mediacodec_ndk_infoTryAgainLater, - .infoOutputBuffersChanged = mediacodec_ndk_infoOutputBuffersChanged, - .infoOutputFormatChanged = mediacodec_ndk_infoOutputFormatChanged, - - .getBufferFlagCodecConfig = mediacodec_ndk_getBufferFlagCodecConfig, - .getBufferFlagEndOfStream = mediacodec_ndk_getBufferFlagEndOfStream, - .getBufferFlagKeyFrame = mediacodec_ndk_getBufferFlagKeyFrame, - - .getConfigureFlagEncode = mediacodec_ndk_getConfigureFlagEncode, - .cleanOutputBuffers = mediacodec_ndk_cleanOutputBuffers, - .signalEndOfInputStream = mediacodec_ndk_signalEndOfInputStream, - .setAsyncNotifyCallback = mediacodec_ndk_setAsyncNotifyCallback, -}; - -FFAMediaFormat *ff_AMediaFormat_new(int ndk) -{ - if (ndk) - return media_format_ndk.create(); - return media_format_jni.create(); -} - -FFAMediaCodec* ff_AMediaCodec_createCodecByName(const char *name, int ndk) -{ - if (ndk) - return media_codec_ndk.createCodecByName(name); - return media_codec_jni.createCodecByName(name); -} - -FFAMediaCodec* ff_AMediaCodec_createDecoderByType(const char *mime_type, int ndk) -{ - if (ndk) - return media_codec_ndk.createDecoderByType(mime_type); - return media_codec_jni.createDecoderByType(mime_type); -} - -FFAMediaCodec* ff_AMediaCodec_createEncoderByType(const char *mime_type, int ndk) -{ - if (ndk) - return media_codec_ndk.createEncoderByType(mime_type); - return media_codec_jni.createEncoderByType(mime_type); -} - -int ff_Build_SDK_INT(AVCodecContext *avctx) -{ - int ret = -1; - -#if __ANDROID_API__ >= 24 - // android_get_device_api_level() is a static inline before API level 29. - // dlsym() might doesn't work. - // - // We can implement android_get_device_api_level() by - // __system_property_get(), but __system_property_get() has created a lot of - // troubles and is deprecated. So avoid using __system_property_get() for - // now. - // - // Hopy we can remove the conditional compilation finally by bumping the - // required API level. - // - ret = android_get_device_api_level(); -#else - JNIEnv *env = NULL; - jclass versionClass; - jfieldID sdkIntFieldID; - JNI_GET_ENV_OR_RETURN(env, avctx, -1); - - versionClass = (*env)->FindClass(env, "android/os/Build$VERSION"); - sdkIntFieldID = (*env)->GetStaticFieldID(env, versionClass, "SDK_INT", "I"); - ret = (*env)->GetStaticIntField(env, versionClass, sdkIntFieldID); - (*env)->DeleteLocalRef(env, versionClass); -#endif - av_log(avctx, AV_LOG_DEBUG, "device api level %d\n", ret); - - return ret; -} - -static struct { - enum FFAMediaFormatColorRange mf_range; - enum AVColorRange range; -} color_range_map[] = { - { COLOR_RANGE_FULL, AVCOL_RANGE_JPEG }, - { COLOR_RANGE_LIMITED, AVCOL_RANGE_MPEG }, -}; - -static struct { - enum FFAMediaFormatColorStandard mf_standard; - enum AVColorSpace space; -} color_space_map[] = { - { COLOR_STANDARD_BT709, AVCOL_SPC_BT709 }, - { COLOR_STANDARD_BT601_PAL, AVCOL_SPC_BT470BG }, - { COLOR_STANDARD_BT601_NTSC, AVCOL_SPC_SMPTE170M }, - { COLOR_STANDARD_BT2020, AVCOL_SPC_BT2020_NCL }, -}; - -static struct { - enum FFAMediaFormatColorStandard mf_standard; - enum AVColorPrimaries primaries; -} color_primaries_map[] = { - { COLOR_STANDARD_BT709, AVCOL_PRI_BT709 }, - { COLOR_STANDARD_BT601_PAL, AVCOL_PRI_BT470BG }, - { COLOR_STANDARD_BT601_NTSC, AVCOL_PRI_SMPTE170M }, - { COLOR_STANDARD_BT2020, AVCOL_PRI_BT2020 }, -}; - -static struct { - enum FFAMediaFormatColorTransfer mf_transfer; - enum AVColorTransferCharacteristic transfer; -} color_transfer_map[] = { - { COLOR_TRANSFER_LINEAR, AVCOL_TRC_LINEAR }, - { COLOR_TRANSFER_SDR_VIDEO, AVCOL_TRC_SMPTE170M }, - { COLOR_TRANSFER_ST2084, AVCOL_TRC_SMPTEST2084 }, - { COLOR_TRANSFER_HLG, AVCOL_TRC_ARIB_STD_B67 }, -}; - -enum AVColorRange ff_AMediaFormatColorRange_to_AVColorRange(int color_range) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(color_range_map); i++) - if (color_range_map[i].mf_range == color_range) - return color_range_map[i].range; - - return AVCOL_RANGE_UNSPECIFIED; -} - -int ff_AMediaFormatColorRange_from_AVColorRange(enum AVColorRange color_range) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(color_range_map); i++) - if (color_range_map[i].range == color_range) - return color_range_map[i].mf_range; - return COLOR_RANGE_UNSPECIFIED; -} - -enum AVColorSpace ff_AMediaFormatColorStandard_to_AVColorSpace(int color_standard) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(color_space_map); i++) - if (color_space_map[i].mf_standard == color_standard) - return color_space_map[i].space; - - return AVCOL_SPC_UNSPECIFIED; -} - -int ff_AMediaFormatColorStandard_from_AVColorSpace(enum AVColorSpace color_space) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(color_space_map); i++) - if (color_space_map[i].space == color_space) - return color_space_map[i].mf_standard; - - return COLOR_STANDARD_UNSPECIFIED; -} - -enum AVColorPrimaries ff_AMediaFormatColorStandard_to_AVColorPrimaries(int color_standard) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(color_primaries_map); i++) - if (color_primaries_map[i].mf_standard == color_standard) - return color_primaries_map[i].primaries; - - return AVCOL_PRI_UNSPECIFIED; -} - -enum AVColorTransferCharacteristic -ff_AMediaFormatColorTransfer_to_AVColorTransfer(int color_transfer) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(color_transfer_map); i++) - if (color_transfer_map[i].mf_transfer == color_transfer) - return color_transfer_map[i].transfer; - - return AVCOL_TRC_UNSPECIFIED; -} - -int ff_AMediaFormatColorTransfer_from_AVColorTransfer( - enum AVColorTransferCharacteristic color_transfer) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(color_transfer_map); i++) - if (color_transfer_map[i].transfer == color_transfer) - return color_transfer_map[i].mf_transfer; - - return COLOR_TRANSFER_UNSPECIFIED; -} diff --git a/icecat/media/ffvpx/libavcodec/mediacodec_wrapper.h b/icecat/media/ffvpx/libavcodec/mediacodec_wrapper.h deleted file mode 100644 index 3b3975a3b2..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodec_wrapper.h +++ /dev/null @@ -1,456 +0,0 @@ -/* - * Android MediaCodec Wrapper - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MEDIACODEC_WRAPPER_H -#define AVCODEC_MEDIACODEC_WRAPPER_H - -#include -#include - -#include "avcodec.h" -#include "mediacodec_surface.h" - -/** - * The following API around MediaCodec and MediaFormat is based on the - * NDK one provided by Google since Android 5.0. - * - * Differences from the NDK API: - * - * Buffers returned by ff_AMediaFormat_toString and ff_AMediaFormat_getString - * are newly allocated buffer and must be freed by the user after use. - * - * The MediaCrypto API is not implemented. - * - * ff_AMediaCodec_infoTryAgainLater, ff_AMediaCodec_infoOutputBuffersChanged, - * ff_AMediaCodec_infoOutputFormatChanged, ff_AMediaCodec_cleanOutputBuffers - * ff_AMediaCodec_getName and ff_AMediaCodec_getBufferFlagEndOfStream are not - * part of the original NDK API and are convenience functions to hide JNI - * implementation. - * - * The API around MediaCodecList is not part of the NDK (and is lacking as - * we still need to retrieve the codec name to work around faulty decoders - * and encoders). - * - * For documentation, please refers to NdkMediaCodec.h NdkMediaFormat.h and - * http://developer.android.com/reference/android/media/MediaCodec.html. - * - */ - -int ff_AMediaCodecProfile_getProfileFromAVCodecContext(AVCodecContext *avctx); - -char *ff_AMediaCodecList_getCodecNameByType(const char *mime, int profile, int encoder, void *log_ctx); - -typedef struct FFAMediaFormat FFAMediaFormat; -struct FFAMediaFormat { - const AVClass *class; - - FFAMediaFormat *(*create)(void); - int (*delete)(FFAMediaFormat *); - - char* (*toString)(FFAMediaFormat* format); - - int (*getInt32)(FFAMediaFormat* format, const char *name, int32_t *out); - int (*getInt64)(FFAMediaFormat* format, const char *name, int64_t *out); - int (*getFloat)(FFAMediaFormat* format, const char *name, float *out); - int (*getBuffer)(FFAMediaFormat* format, const char *name, void** data, size_t *size); - int (*getString)(FFAMediaFormat* format, const char *name, const char **out); - // NDK only, introduced in API level 28 - int (*getRect)(FFAMediaFormat *, const char *name, - int32_t *left, int32_t *top, int32_t *right, int32_t *bottom); - - void (*setInt32)(FFAMediaFormat* format, const char* name, int32_t value); - void (*setInt64)(FFAMediaFormat* format, const char* name, int64_t value); - void (*setFloat)(FFAMediaFormat* format, const char* name, float value); - void (*setString)(FFAMediaFormat* format, const char* name, const char* value); - void (*setBuffer)(FFAMediaFormat* format, const char* name, void* data, size_t size); - // NDK only, introduced in API level 28 - void (*setRect)(FFAMediaFormat*, const char* name, - int32_t left, int32_t top, int32_t right, int32_t bottom); -}; - -FFAMediaFormat *ff_AMediaFormat_new(int ndk); - -static inline int ff_AMediaFormat_delete(FFAMediaFormat* format) -{ - return format->delete(format); -} - -static inline char* ff_AMediaFormat_toString(FFAMediaFormat* format) -{ - return format->toString(format); -} - -static inline int ff_AMediaFormat_getInt32(FFAMediaFormat* format, const char *name, int32_t *out) -{ - return format->getInt32(format, name, out); -} - -static inline int ff_AMediaFormat_getInt64(FFAMediaFormat* format, const char *name, int64_t *out) -{ - return format->getInt64(format, name, out); -} - -static inline int ff_AMediaFormat_getFloat(FFAMediaFormat* format, const char *name, float *out) -{ - return format->getFloat(format, name, out); -} - -static inline int ff_AMediaFormat_getBuffer(FFAMediaFormat* format, const char *name, void** data, size_t *size) -{ - return format->getBuffer(format, name, data, size); -} - -static inline int ff_AMediaFormat_getString(FFAMediaFormat* format, const char *name, const char **out) -{ - return format->getString(format, name, out); -} - -static inline int ff_AMediaFormat_getRect(FFAMediaFormat *format, const char *name, - int32_t *left, int32_t *top, int32_t *right, int32_t *bottom) -{ - if (!format->getRect) - return AVERROR_EXTERNAL; - return format->getRect(format, name, left, top, right, bottom); -} - -static inline void ff_AMediaFormat_setInt32(FFAMediaFormat* format, const char* name, int32_t value) -{ - format->setInt32(format, name, value); -} - -static inline void ff_AMediaFormat_setInt64(FFAMediaFormat* format, const char* name, int64_t value) -{ - format->setInt64(format, name, value); -} - -static inline void ff_AMediaFormat_setFloat(FFAMediaFormat* format, const char* name, float value) -{ - format->setFloat(format, name, value); -} - -static inline void ff_AMediaFormat_setString(FFAMediaFormat* format, const char* name, const char* value) -{ - format->setString(format, name, value); -} - -static inline void ff_AMediaFormat_setBuffer(FFAMediaFormat* format, const char* name, void* data, size_t size) -{ - format->setBuffer(format, name, data, size); -} - -static inline void ff_AMediaFormat_setRect(FFAMediaFormat* format, const char* name, - int32_t left, int32_t top, int32_t right, int32_t bottom) -{ - if (!format->setRect) { - av_log(format, AV_LOG_WARNING, "Doesn't support setRect\n"); - return; - } - format->setRect(format, name, left, top, right, bottom); -} - -typedef struct FFAMediaCodecCryptoInfo FFAMediaCodecCryptoInfo; - -struct FFAMediaCodecBufferInfo { - int32_t offset; - int32_t size; - int64_t presentationTimeUs; - uint32_t flags; -}; -typedef struct FFAMediaCodecBufferInfo FFAMediaCodecBufferInfo; - -typedef struct FFAMediaCodec FFAMediaCodec; - -typedef struct FFAMediaCodecOnAsyncNotifyCallback { - void (*onAsyncInputAvailable)(FFAMediaCodec *codec, void *userdata, - int32_t index); - - void (*onAsyncOutputAvailable)(FFAMediaCodec *codec, void *userdata, - int32_t index, - FFAMediaCodecBufferInfo *buffer_info); - - void (*onAsyncFormatChanged)(FFAMediaCodec *codec, void *userdata, - FFAMediaFormat *format); - - void (*onAsyncError)(FFAMediaCodec *codec, void *userdata, int error, - const char *detail); -} FFAMediaCodecOnAsyncNotifyCallback; - -struct FFAMediaCodec { - const AVClass *class; - - char *(*getName)(FFAMediaCodec *codec); - - FFAMediaCodec* (*createCodecByName)(const char *name); - FFAMediaCodec* (*createDecoderByType)(const char *mime_type); - FFAMediaCodec* (*createEncoderByType)(const char *mime_type); - int (*delete)(FFAMediaCodec* codec); - - int (*configure)(FFAMediaCodec* codec, const FFAMediaFormat* format, FFANativeWindow* surface, void *crypto, uint32_t flags); - int (*setParameters)(FFAMediaCodec* codec, const FFAMediaFormat* format); - int (*start)(FFAMediaCodec* codec); - int (*stop)(FFAMediaCodec* codec); - int (*flush)(FFAMediaCodec* codec); - - uint8_t* (*getInputBuffer)(FFAMediaCodec* codec, size_t idx, size_t *out_size); - uint8_t* (*getOutputBuffer)(FFAMediaCodec* codec, size_t idx, size_t *out_size); - - ssize_t (*dequeueInputBuffer)(FFAMediaCodec* codec, int64_t timeoutUs); - int (*queueInputBuffer)(FFAMediaCodec* codec, size_t idx, off_t offset, size_t size, uint64_t time, uint32_t flags); - - ssize_t (*dequeueOutputBuffer)(FFAMediaCodec* codec, FFAMediaCodecBufferInfo *info, int64_t timeoutUs); - FFAMediaFormat* (*getOutputFormat)(FFAMediaCodec* codec); - - int (*releaseOutputBuffer)(FFAMediaCodec* codec, size_t idx, int render); - int (*releaseOutputBufferAtTime)(FFAMediaCodec *codec, size_t idx, int64_t timestampNs); - - int (*infoTryAgainLater)(FFAMediaCodec *codec, ssize_t idx); - int (*infoOutputBuffersChanged)(FFAMediaCodec *codec, ssize_t idx); - int (*infoOutputFormatChanged)(FFAMediaCodec *codec, ssize_t indx); - - int (*getBufferFlagCodecConfig)(FFAMediaCodec *codec); - int (*getBufferFlagEndOfStream)(FFAMediaCodec *codec); - int (*getBufferFlagKeyFrame)(FFAMediaCodec *codec); - - int (*getConfigureFlagEncode)(FFAMediaCodec *codec); - - int (*cleanOutputBuffers)(FFAMediaCodec *codec); - - // For encoder with FFANativeWindow as input. - int (*signalEndOfInputStream)(FFAMediaCodec *); - - // Introduced in Android API 28 - int (*setAsyncNotifyCallback)(FFAMediaCodec *codec, - const FFAMediaCodecOnAsyncNotifyCallback *callback, - void *userdata); -}; - -static inline char *ff_AMediaCodec_getName(FFAMediaCodec *codec) -{ - return codec->getName(codec); -} - -FFAMediaCodec* ff_AMediaCodec_createCodecByName(const char *name, int ndk); -FFAMediaCodec* ff_AMediaCodec_createDecoderByType(const char *mime_type, int ndk); -FFAMediaCodec* ff_AMediaCodec_createEncoderByType(const char *mime_type, int ndk); - -static inline int ff_AMediaCodec_configure(FFAMediaCodec *codec, - const FFAMediaFormat *format, - FFANativeWindow *surface, - void *crypto, uint32_t flags) -{ - return codec->configure(codec, format, surface, crypto, flags); -} - -static inline int ff_AMediaCodec_setParameters(FFAMediaCodec *codec, - const FFAMediaFormat *format) -{ - return codec->setParameters(codec, format); -} - -static inline int ff_AMediaCodec_start(FFAMediaCodec* codec) -{ - return codec->start(codec); -} - -static inline int ff_AMediaCodec_stop(FFAMediaCodec* codec) -{ - return codec->stop(codec); -} - -static inline int ff_AMediaCodec_flush(FFAMediaCodec* codec) -{ - return codec->flush(codec); -} - -static inline int ff_AMediaCodec_delete(FFAMediaCodec* codec) -{ - return codec->delete(codec); -} - -static inline uint8_t* ff_AMediaCodec_getInputBuffer(FFAMediaCodec* codec, size_t idx, size_t *out_size) -{ - return codec->getInputBuffer(codec, idx, out_size); -} - -static inline uint8_t* ff_AMediaCodec_getOutputBuffer(FFAMediaCodec* codec, size_t idx, size_t *out_size) -{ - return codec->getOutputBuffer(codec, idx, out_size); -} - -static inline ssize_t ff_AMediaCodec_dequeueInputBuffer(FFAMediaCodec* codec, int64_t timeoutUs) -{ - return codec->dequeueInputBuffer(codec, timeoutUs); -} - -static inline int ff_AMediaCodec_queueInputBuffer(FFAMediaCodec *codec, size_t idx, off_t offset, size_t size, uint64_t time, uint32_t flags) -{ - return codec->queueInputBuffer(codec, idx, offset, size, time, flags); -} - -static inline ssize_t ff_AMediaCodec_dequeueOutputBuffer(FFAMediaCodec* codec, FFAMediaCodecBufferInfo *info, int64_t timeoutUs) -{ - return codec->dequeueOutputBuffer(codec, info, timeoutUs); -} - -static inline FFAMediaFormat* ff_AMediaCodec_getOutputFormat(FFAMediaCodec* codec) -{ - return codec->getOutputFormat(codec); -} - -static inline int ff_AMediaCodec_releaseOutputBuffer(FFAMediaCodec* codec, size_t idx, int render) -{ - return codec->releaseOutputBuffer(codec, idx, render); -} - -static inline int ff_AMediaCodec_releaseOutputBufferAtTime(FFAMediaCodec *codec, size_t idx, int64_t timestampNs) -{ - return codec->releaseOutputBufferAtTime(codec, idx, timestampNs); -} - -static inline int ff_AMediaCodec_infoTryAgainLater(FFAMediaCodec *codec, ssize_t idx) -{ - return codec->infoTryAgainLater(codec, idx); -} - -static inline int ff_AMediaCodec_infoOutputBuffersChanged(FFAMediaCodec *codec, ssize_t idx) -{ - return codec->infoOutputBuffersChanged(codec, idx); -} - -static inline int ff_AMediaCodec_infoOutputFormatChanged(FFAMediaCodec *codec, ssize_t idx) -{ - return codec->infoOutputFormatChanged(codec, idx); -} - -static inline int ff_AMediaCodec_getBufferFlagCodecConfig(FFAMediaCodec *codec) -{ - return codec->getBufferFlagCodecConfig(codec); -} - -static inline int ff_AMediaCodec_getBufferFlagEndOfStream(FFAMediaCodec *codec) -{ - return codec->getBufferFlagEndOfStream(codec); -} - -static inline int ff_AMediaCodec_getBufferFlagKeyFrame(FFAMediaCodec *codec) -{ - return codec->getBufferFlagKeyFrame(codec); -} - -static inline int ff_AMediaCodec_getConfigureFlagEncode(FFAMediaCodec *codec) -{ - return codec->getConfigureFlagEncode(codec); -} - -static inline int ff_AMediaCodec_cleanOutputBuffers(FFAMediaCodec *codec) -{ - return codec->cleanOutputBuffers(codec); -} - -static inline int ff_AMediaCodec_signalEndOfInputStream(FFAMediaCodec *codec) -{ - return codec->signalEndOfInputStream(codec); -} - -static inline int ff_AMediaCodec_setAsyncNotifyCallback(FFAMediaCodec *codec, - const FFAMediaCodecOnAsyncNotifyCallback *callback, - void *userdata) -{ - return codec->setAsyncNotifyCallback(codec, callback, userdata); -} - -int ff_Build_SDK_INT(AVCodecContext *avctx); - -enum FFAMediaFormatColorRange { - COLOR_RANGE_UNSPECIFIED = 0x0, - COLOR_RANGE_FULL = 0x1, - COLOR_RANGE_LIMITED = 0x2, -}; - -enum FFAMediaFormatColorStandard { - COLOR_STANDARD_UNSPECIFIED = 0x0, - COLOR_STANDARD_BT709 = 0x1, - COLOR_STANDARD_BT601_PAL = 0x2, - COLOR_STANDARD_BT601_NTSC = 0x4, - COLOR_STANDARD_BT2020 = 0x6, -}; - -enum FFAMediaFormatColorTransfer { - COLOR_TRANSFER_UNSPECIFIED = 0x0, - COLOR_TRANSFER_LINEAR = 0x1, - COLOR_TRANSFER_SDR_VIDEO = 0x3, - COLOR_TRANSFER_ST2084 = 0x6, - COLOR_TRANSFER_HLG = 0x7, -}; - -/** - * Map MediaFormat color range to AVColorRange. - * - * return AVCOL_RANGE_UNSPECIFIED when failed. - */ -enum AVColorRange ff_AMediaFormatColorRange_to_AVColorRange(int color_range); - -/** - * Map AVColorRange to MediaFormat color range. - * - * return COLOR_RANGE_UNSPECIFIED when failed. - */ -int ff_AMediaFormatColorRange_from_AVColorRange(enum AVColorRange color_range); - -/** - * Map MediaFormat color standard to AVColorSpace. - * - * return AVCOL_SPC_UNSPECIFIED when failed. - */ -enum AVColorSpace ff_AMediaFormatColorStandard_to_AVColorSpace(int color_standard); - -/** - * Map AVColorSpace to MediaFormat color standard. - * - * return COLOR_STANDARD_UNSPECIFIED when failed. - */ -int ff_AMediaFormatColorStandard_from_AVColorSpace(enum AVColorSpace color_space); - -/** - * Map MediaFormat color standard to AVColorPrimaries. - * - * return AVCOL_PRI_UNSPECIFIED when failed. - */ -enum AVColorPrimaries ff_AMediaFormatColorStandard_to_AVColorPrimaries(int color_standard); - -/** - * Map MediaFormat color transfer to AVColorTransferCharacteristic. - * - * return AVCOL_TRC_UNSPECIFIED when failed. - */ -enum AVColorTransferCharacteristic -ff_AMediaFormatColorTransfer_to_AVColorTransfer(int color_transfer); - -/** - * Map AVColorTransferCharacteristic to MediaFormat color transfer. - * - * return COLOR_TRANSFER_UNSPECIFIED when failed. - */ -int ff_AMediaFormatColorTransfer_from_AVColorTransfer( - enum AVColorTransferCharacteristic color_transfer); - -#endif /* AVCODEC_MEDIACODEC_WRAPPER_H */ diff --git a/icecat/media/ffvpx/libavcodec/mediacodecdec.c b/icecat/media/ffvpx/libavcodec/mediacodecdec.c deleted file mode 100644 index b842747f56..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodecdec.c +++ /dev/null @@ -1,745 +0,0 @@ -/* - * Android MediaCodec MPEG-2 / H.264 / H.265 / MPEG-4 / VP8 / VP9 decoders - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config_components.h" - -#include -#include - -#include "libavutil/avassert.h" -#include "libavutil/common.h" -#include "libavutil/mem.h" -#include "libavutil/opt.h" -#include "libavutil/intreadwrite.h" -#include "libavutil/pixfmt.h" -#include "libavutil/internal.h" - -#include "avcodec.h" -#include "codec_internal.h" -#include "decode.h" -#if CONFIG_H264_MEDIACODEC_DECODER_EXTRADATA -#include "h264_parse.h" -#include "h264_ps.h" -#endif -#if CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA -#include "hevc/parse.h" -#endif -#include "hwconfig.h" -#include "internal.h" -#include "fffjni.h" -#include "mediacodec_wrapper.h" -#include "mediacodecdec_common.h" - -typedef struct MediaCodecH264DecContext { - - AVClass *avclass; - - MediaCodecDecContext *ctx; - - AVPacket buffered_pkt; - - int delay_flush; - int amlogic_mpeg2_api23_workaround; - - int use_ndk_codec; - // Ref. MediaFormat KEY_OPERATING_RATE - int operating_rate; -} MediaCodecH264DecContext; - -static av_cold int mediacodec_decode_close(AVCodecContext *avctx) -{ - MediaCodecH264DecContext *s = avctx->priv_data; - - ff_mediacodec_dec_close(avctx, s->ctx); - s->ctx = NULL; - - av_packet_unref(&s->buffered_pkt); - - return 0; -} - -#if CONFIG_H264_MEDIACODEC_DECODER || CONFIG_HEVC_MEDIACODEC_DECODER -static int h2645_ps_to_nalu(const uint8_t *src, int src_size, uint8_t **out, int *out_size) -{ - int i; - int ret = 0; - uint8_t *p = NULL; - static const uint8_t nalu_header[] = { 0x00, 0x00, 0x00, 0x01 }; - - if (!out || !out_size) { - return AVERROR(EINVAL); - } - - p = av_malloc(sizeof(nalu_header) + src_size); - if (!p) { - return AVERROR(ENOMEM); - } - - *out = p; - *out_size = sizeof(nalu_header) + src_size; - - memcpy(p, nalu_header, sizeof(nalu_header)); - memcpy(p + sizeof(nalu_header), src, src_size); - - /* Escape 0x00, 0x00, 0x0{0-3} pattern */ - for (i = 4; i < *out_size; i++) { - if (i < *out_size - 3 && - p[i + 0] == 0 && - p[i + 1] == 0 && - p[i + 2] <= 3) { - uint8_t *new; - - *out_size += 1; - new = av_realloc(*out, *out_size); - if (!new) { - ret = AVERROR(ENOMEM); - goto done; - } - *out = p = new; - - i = i + 2; - memmove(p + i + 1, p + i, *out_size - (i + 1)); - p[i] = 0x03; - } - } -done: - if (ret < 0) { - av_freep(out); - *out_size = 0; - } - - return ret; -} -#endif - -static int h264_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) -{ -#if CONFIG_H264_MEDIACODEC_DECODER_EXTRADATA - int i; - int ret; - - H264ParamSets ps = {0}; - const PPS *pps = NULL; - const SPS *sps = NULL; - int is_avc = 0; - int nal_length_size = 0; - - ret = ff_h264_decode_extradata(avctx->extradata, avctx->extradata_size, - &ps, &is_avc, &nal_length_size, 0, avctx); - if (ret < 0) { - goto done; - } - - for (i = 0; i < MAX_PPS_COUNT; i++) { - if (ps.pps_list[i]) { - pps = ps.pps_list[i]; - break; - } - } - - if (pps) { - if (ps.sps_list[pps->sps_id]) { - sps = ps.sps_list[pps->sps_id]; - } - } - - if (pps && sps) { - uint8_t *data = NULL; - int data_size = 0; - - avctx->profile = ff_h264_get_profile(sps); - avctx->level = sps->level_idc; - - if ((ret = h2645_ps_to_nalu(sps->data, sps->data_size, &data, &data_size)) < 0) { - goto done; - } - ff_AMediaFormat_setBuffer(format, "csd-0", (void*)data, data_size); - av_freep(&data); - - if ((ret = h2645_ps_to_nalu(pps->data, pps->data_size, &data, &data_size)) < 0) { - goto done; - } - ff_AMediaFormat_setBuffer(format, "csd-1", (void*)data, data_size); - av_freep(&data); - } else { - const int warn = is_avc && (avctx->codec_tag == MKTAG('a','v','c','1') || - avctx->codec_tag == MKTAG('a','v','c','2')); - av_log(avctx, warn ? AV_LOG_WARNING : AV_LOG_DEBUG, - "Could not extract PPS/SPS from extradata\n"); - ret = 0; - } - -done: - ff_h264_ps_uninit(&ps); - - return ret; -#else - const uint8_t* ed = avctx->extradata; - int edsize = avctx->extradata_size; - int edoffset = avctx->moz_extradata_offset; - - if (ed) { - if (edoffset > 0 && edoffset < edsize) { - ff_AMediaFormat_setBuffer(format, "csd-0", ed, edoffset); - ff_AMediaFormat_setBuffer(format, "csd-1", ed + edoffset, edsize - edoffset); - } else { - ff_AMediaFormat_setBuffer(format, "csd-0", ed, edsize); - } - } - - return 0; -#endif -} - -#if CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA -static int hevc_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) -{ - int i; - int ret; - - HEVCParamSets ps = {0}; - HEVCSEI sei = {0}; - - const HEVCVPS *vps = NULL; - const HEVCPPS *pps = NULL; - const HEVCSPS *sps = NULL; - int is_nalff = 0; - int nal_length_size = 0; - - uint8_t *vps_data = NULL; - uint8_t *sps_data = NULL; - uint8_t *pps_data = NULL; - int vps_data_size = 0; - int sps_data_size = 0; - int pps_data_size = 0; - - ret = ff_hevc_decode_extradata(avctx->extradata, avctx->extradata_size, - &ps, &sei, &is_nalff, &nal_length_size, 0, 1, avctx); - if (ret < 0) { - goto done; - } - - for (i = 0; i < HEVC_MAX_VPS_COUNT; i++) { - if (ps.vps_list[i]) { - vps = ps.vps_list[i]; - break; - } - } - - for (i = 0; i < HEVC_MAX_PPS_COUNT; i++) { - if (ps.pps_list[i]) { - pps = ps.pps_list[i]; - break; - } - } - - if (pps) { - if (ps.sps_list[pps->sps_id]) { - sps = ps.sps_list[pps->sps_id]; - } - } - - if (vps && pps && sps) { - uint8_t *data; - int data_size; - - avctx->profile = sps->ptl.general_ptl.profile_idc; - avctx->level = sps->ptl.general_ptl.level_idc; - - if ((ret = h2645_ps_to_nalu(vps->data, vps->data_size, &vps_data, &vps_data_size)) < 0 || - (ret = h2645_ps_to_nalu(sps->data, sps->data_size, &sps_data, &sps_data_size)) < 0 || - (ret = h2645_ps_to_nalu(pps->data, pps->data_size, &pps_data, &pps_data_size)) < 0) { - goto done; - } - - data_size = vps_data_size + sps_data_size + pps_data_size; - data = av_mallocz(data_size); - if (!data) { - ret = AVERROR(ENOMEM); - goto done; - } - - memcpy(data , vps_data, vps_data_size); - memcpy(data + vps_data_size , sps_data, sps_data_size); - memcpy(data + vps_data_size + sps_data_size, pps_data, pps_data_size); - - ff_AMediaFormat_setBuffer(format, "csd-0", data, data_size); - - av_freep(&data); - } else { - const int warn = is_nalff && avctx->codec_tag == MKTAG('h','v','c','1'); - av_log(avctx, warn ? AV_LOG_WARNING : AV_LOG_DEBUG, - "Could not extract VPS/PPS/SPS from extradata\n"); - ret = 0; - } - -done: - ff_hevc_ps_uninit(&ps); - - av_freep(&vps_data); - av_freep(&sps_data); - av_freep(&pps_data); - - return ret; -} -#endif - -#if CONFIG_MPEG2_MEDIACODEC_DECODER || \ - CONFIG_MPEG4_MEDIACODEC_DECODER || \ - CONFIG_VP8_MEDIACODEC_DECODER || \ - CONFIG_VP9_MEDIACODEC_DECODER || \ - CONFIG_AV1_MEDIACODEC_DECODER || \ - CONFIG_AAC_MEDIACODEC_DECODER || \ - CONFIG_AMRNB_MEDIACODEC_DECODER || \ - CONFIG_AMRWB_MEDIACODEC_DECODER || \ - CONFIG_MP3_MEDIACODEC_DECODER || \ - !CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA -static int common_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) -{ - int ret = 0; - - if (avctx->extradata) { - ff_AMediaFormat_setBuffer(format, "csd-0", avctx->extradata, avctx->extradata_size); - } - - return ret; -} -#endif - -static av_cold int mediacodec_decode_init(AVCodecContext *avctx) -{ - int ret; - int sdk_int; - - const char *codec_mime = NULL; - - FFAMediaFormat *format = NULL; - MediaCodecH264DecContext *s = avctx->priv_data; - - if (s->use_ndk_codec < 0) - s->use_ndk_codec = !av_jni_get_java_vm(avctx); - - format = ff_AMediaFormat_new(s->use_ndk_codec); - if (!format) { - av_log(avctx, AV_LOG_ERROR, "Failed to create media format\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - switch (avctx->codec_id) { -#if CONFIG_AV1_MEDIACODEC_DECODER - case AV_CODEC_ID_AV1: - codec_mime = "video/av01"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_H264_MEDIACODEC_DECODER - case AV_CODEC_ID_H264: - codec_mime = "video/avc"; - - ret = h264_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_HEVC_MEDIACODEC_DECODER - case AV_CODEC_ID_HEVC: - codec_mime = "video/hevc"; - -#if CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA - ret = hevc_set_extradata(avctx, format); -#else - ret = common_set_extradata(avctx, format); -#endif - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_MPEG2_MEDIACODEC_DECODER - case AV_CODEC_ID_MPEG2VIDEO: - codec_mime = "video/mpeg2"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_MPEG4_MEDIACODEC_DECODER - case AV_CODEC_ID_MPEG4: - codec_mime = "video/mp4v-es", - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_VP8_MEDIACODEC_DECODER - case AV_CODEC_ID_VP8: - codec_mime = "video/x-vnd.on2.vp8"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_VP9_MEDIACODEC_DECODER - case AV_CODEC_ID_VP9: - codec_mime = "video/x-vnd.on2.vp9"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_AAC_MEDIACODEC_DECODER - case AV_CODEC_ID_AAC: - codec_mime = "audio/mp4a-latm"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_AMRNB_MEDIACODEC_DECODER - case AV_CODEC_ID_AMR_NB: - codec_mime = "audio/3gpp"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_AMRWB_MEDIACODEC_DECODER - case AV_CODEC_ID_AMR_WB: - codec_mime = "audio/amr-wb"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif -#if CONFIG_MP3_MEDIACODEC_DECODER - case AV_CODEC_ID_MP3: - codec_mime = "audio/mpeg"; - - ret = common_set_extradata(avctx, format); - if (ret < 0) - goto done; - break; -#endif - default: - av_assert0(0); - } - - ff_AMediaFormat_setString(format, "mime", codec_mime); - - if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { - ff_AMediaFormat_setInt32(format, "width", avctx->width); - ff_AMediaFormat_setInt32(format, "height", avctx->height); - } else { - ff_AMediaFormat_setInt32(format, "channel-count", avctx->ch_layout.nb_channels); - ff_AMediaFormat_setInt32(format, "sample-rate", avctx->sample_rate); - } - if (avctx->flags & AV_CODEC_FLAG_LOW_DELAY) { - ff_AMediaFormat_setInt32(format, "low-latency", 1); - } - if (s->operating_rate > 0) - ff_AMediaFormat_setInt32(format, "operating-rate", s->operating_rate); - - s->ctx = av_mallocz(sizeof(*s->ctx)); - if (!s->ctx) { - av_log(avctx, AV_LOG_ERROR, "Failed to allocate MediaCodecDecContext\n"); - ret = AVERROR(ENOMEM); - goto done; - } - - s->ctx->delay_flush = s->delay_flush; - s->ctx->use_ndk_codec = s->use_ndk_codec; - - if ((ret = ff_mediacodec_dec_init(avctx, s->ctx, codec_mime, format)) < 0) { - s->ctx = NULL; - goto done; - } - - av_log(avctx, AV_LOG_INFO, - "MediaCodec started successfully: codec = %s, ret = %d\n", - s->ctx->codec_name, ret); - - sdk_int = ff_Build_SDK_INT(avctx); - /* ff_Build_SDK_INT can fail when target API < 24 and JVM isn't available. - * If we don't check sdk_int > 0, the workaround might be enabled by - * mistake. - * JVM is required to make the workaround works reliably. On the other hand, - * missing a workaround should not be a serious issue, we do as best we can. - */ - if (sdk_int > 0 && sdk_int <= 23 && - strcmp(s->ctx->codec_name, "OMX.amlogic.mpeg2.decoder.awesome") == 0) { - av_log(avctx, AV_LOG_INFO, "Enabling workaround for %s on API=%d\n", - s->ctx->codec_name, sdk_int); - s->amlogic_mpeg2_api23_workaround = 1; - } - -done: - if (format) { - ff_AMediaFormat_delete(format); - } - - if (ret < 0) { - mediacodec_decode_close(avctx); - } - - return ret; -} - -static int mediacodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) -{ - MediaCodecH264DecContext *s = avctx->priv_data; - int ret; - ssize_t index; - - /* In delay_flush mode, wait until the user has released or rendered - all retained frames. */ - if (s->delay_flush && ff_mediacodec_dec_is_flushing(avctx, s->ctx)) { - if (!ff_mediacodec_dec_flush(avctx, s->ctx)) { - return AVERROR(EAGAIN); - } - } - - /* poll for new frame */ - ret = ff_mediacodec_dec_receive(avctx, s->ctx, frame, false); - if (ret != AVERROR(EAGAIN)) - return ret; - - /* feed decoder */ - while (1) { - if (s->ctx->current_input_buffer < 0 && !s->ctx->draining) { - /* poll for input space */ - index = ff_AMediaCodec_dequeueInputBuffer(s->ctx->codec, 0); - if (index < 0) { - /* no space, block for an output frame to appear */ - ret = ff_mediacodec_dec_receive(avctx, s->ctx, frame, true); - /* Try again if both input port and output port return EAGAIN. - * If no data is consumed and no frame in output, it can make - * both avcodec_send_packet() and avcodec_receive_frame() - * return EAGAIN, which violate the design. - */ - if (ff_AMediaCodec_infoTryAgainLater(s->ctx->codec, index) && - ret == AVERROR(EAGAIN)) - continue; - return ret; - } - s->ctx->current_input_buffer = index; - } - - /* try to flush any buffered packet data */ - if (s->buffered_pkt.size > 0) { - ret = ff_mediacodec_dec_send(avctx, s->ctx, &s->buffered_pkt, false); - if (ret >= 0) { - s->buffered_pkt.size -= ret; - s->buffered_pkt.data += ret; - if (s->buffered_pkt.size <= 0) { - av_packet_unref(&s->buffered_pkt); - } else { - av_log(avctx, AV_LOG_WARNING, - "could not send entire packet in single input buffer (%d < %d)\n", - ret, s->buffered_pkt.size+ret); - } - } else if (ret < 0 && ret != AVERROR(EAGAIN)) { - return ret; - } - - if (s->amlogic_mpeg2_api23_workaround && s->buffered_pkt.size <= 0) { - /* fallthrough to fetch next packet regardless of input buffer space */ - } else { - /* poll for space again */ - continue; - } - } - - /* fetch new packet or eof */ - ret = ff_decode_get_packet(avctx, &s->buffered_pkt); - if (ret == AVERROR_EOF) { - AVPacket null_pkt = { 0 }; - ret = ff_mediacodec_dec_send(avctx, s->ctx, &null_pkt, true); - if (ret < 0) - return ret; - return ff_mediacodec_dec_receive(avctx, s->ctx, frame, true); - } else if (ret == AVERROR(EAGAIN) && s->ctx->current_input_buffer < 0) { - return ff_mediacodec_dec_receive(avctx, s->ctx, frame, true); - } else if (ret < 0) { - return ret; - } - } - - return AVERROR(EAGAIN); -} - -static void mediacodec_decode_flush(AVCodecContext *avctx) -{ - MediaCodecH264DecContext *s = avctx->priv_data; - - av_packet_unref(&s->buffered_pkt); - - ff_mediacodec_dec_flush(avctx, s->ctx); -} - -static const AVCodecHWConfigInternal *const mediacodec_hw_configs[] = { - &(const AVCodecHWConfigInternal) { - .public = { - .pix_fmt = AV_PIX_FMT_MEDIACODEC, - .methods = AV_CODEC_HW_CONFIG_METHOD_AD_HOC | - AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX, - .device_type = AV_HWDEVICE_TYPE_MEDIACODEC, - }, - .hwaccel = NULL, - }, - NULL -}; - -#define OFFSET(x) offsetof(MediaCodecH264DecContext, x) -#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM -static const AVOption ff_mediacodec_vdec_options[] = { - { "delay_flush", "Delay flush until hw output buffers are returned to the decoder", - OFFSET(delay_flush), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VD }, - { "ndk_codec", "Use MediaCodec from NDK", - OFFSET(use_ndk_codec), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VD }, - { "operating_rate", "The desired operating rate that the codec will need to operate at, zero for unspecified", - OFFSET(operating_rate), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VD }, - { NULL } -}; - -#define DECLARE_MEDIACODEC_VCLASS(short_name) \ -static const AVClass ff_##short_name##_mediacodec_dec_class = { \ - .class_name = #short_name "_mediacodec", \ - .item_name = av_default_item_name, \ - .option = ff_mediacodec_vdec_options, \ - .version = LIBAVUTIL_VERSION_INT, \ -}; - -#define DECLARE_MEDIACODEC_VDEC(short_name, full_name, codec_id, bsf) \ -DECLARE_MEDIACODEC_VCLASS(short_name) \ -const FFCodec ff_ ## short_name ## _mediacodec_decoder = { \ - .p.name = #short_name "_mediacodec", \ - CODEC_LONG_NAME(full_name " Android MediaCodec decoder"), \ - .p.type = AVMEDIA_TYPE_VIDEO, \ - .p.id = codec_id, \ - .p.priv_class = &ff_##short_name##_mediacodec_dec_class, \ - .priv_data_size = sizeof(MediaCodecH264DecContext), \ - .init = mediacodec_decode_init, \ - FF_CODEC_RECEIVE_FRAME_CB(mediacodec_receive_frame), \ - .flush = mediacodec_decode_flush, \ - .close = mediacodec_decode_close, \ - .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING | AV_CODEC_CAP_HARDWARE, \ - .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE, \ - .bsfs = bsf, \ - .hw_configs = mediacodec_hw_configs, \ - .p.wrapper_name = "mediacodec", \ -}; \ - -#if CONFIG_H264_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_VDEC(h264, "H.264", AV_CODEC_ID_H264, NULL) -#endif - -#if CONFIG_HEVC_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_VDEC(hevc, "H.265", AV_CODEC_ID_HEVC, NULL) -#endif - -#if CONFIG_MPEG2_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_VDEC(mpeg2, "MPEG-2", AV_CODEC_ID_MPEG2VIDEO, NULL) -#endif - -#if CONFIG_MPEG4_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_VDEC(mpeg4, "MPEG-4", AV_CODEC_ID_MPEG4, NULL) -#endif - -#if CONFIG_VP8_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_VDEC(vp8, "VP8", AV_CODEC_ID_VP8, NULL) -#endif - -#if CONFIG_VP9_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_VDEC(vp9, "VP9", AV_CODEC_ID_VP9, NULL) -#endif - -#if CONFIG_AV1_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_VDEC(av1, "AV1", AV_CODEC_ID_AV1, NULL) -#endif - -#define AD AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM -static const AVOption ff_mediacodec_adec_options[] = { - { "ndk_codec", "Use MediaCodec from NDK", - OFFSET(use_ndk_codec), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, AD }, - { "operating_rate", "The desired operating rate that the codec will need to operate at, zero for unspecified", - OFFSET(operating_rate), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AD }, - { NULL } -}; - -#define DECLARE_MEDIACODEC_ACLASS(short_name) \ -static const AVClass ff_##short_name##_mediacodec_dec_class = { \ - .class_name = #short_name "_mediacodec", \ - .item_name = av_default_item_name, \ - .option = ff_mediacodec_adec_options, \ - .version = LIBAVUTIL_VERSION_INT, \ -}; - -#define DECLARE_MEDIACODEC_ADEC(short_name, full_name, codec_id, bsf) \ -DECLARE_MEDIACODEC_VCLASS(short_name) \ -const FFCodec ff_ ## short_name ## _mediacodec_decoder = { \ - .p.name = #short_name "_mediacodec", \ - CODEC_LONG_NAME(full_name " Android MediaCodec decoder"), \ - .p.type = AVMEDIA_TYPE_AUDIO, \ - .p.id = codec_id, \ - .p.priv_class = &ff_##short_name##_mediacodec_dec_class, \ - .priv_data_size = sizeof(MediaCodecH264DecContext), \ - .init = mediacodec_decode_init, \ - FF_CODEC_RECEIVE_FRAME_CB(mediacodec_receive_frame), \ - .flush = mediacodec_decode_flush, \ - .close = mediacodec_decode_close, \ - .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, \ - .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE, \ - .bsfs = bsf, \ - .p.wrapper_name = "mediacodec", \ -}; \ - -#if CONFIG_AAC_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_ADEC(aac, "AAC", AV_CODEC_ID_AAC, "aac_adtstoasc") -#endif - -#if CONFIG_AMRNB_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_ADEC(amrnb, "AMR-NB", AV_CODEC_ID_AMR_NB, NULL) -#endif - -#if CONFIG_AMRWB_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_ADEC(amrwb, "AMR-WB", AV_CODEC_ID_AMR_WB, NULL) -#endif - -#if CONFIG_MP3_MEDIACODEC_DECODER -DECLARE_MEDIACODEC_ADEC(mp3, "MP3", AV_CODEC_ID_MP3, NULL) -#endif - -int moz_avcodec_mediacodec_is_eos(AVCodecContext* avctx) { - // Note that MediaCodecH264DecContext is used by all codec types. - MediaCodecH264DecContext *s = avctx->priv_data; - return s->ctx->eos; -} diff --git a/icecat/media/ffvpx/libavcodec/mediacodecdec_common.c b/icecat/media/ffvpx/libavcodec/mediacodecdec_common.c deleted file mode 100644 index 78cb5e8437..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodecdec_common.c +++ /dev/null @@ -1,1153 +0,0 @@ -/* - * Android MediaCodec decoder - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include "libavutil/avassert.h" -#include "libavutil/common.h" -#include "libavutil/hwcontext_mediacodec.h" -#include "libavutil/mem.h" -#include "libavutil/log.h" -#include "libavutil/pixfmt.h" -#include "libavutil/fftime.h" -#include "libavutil/timestamp.h" -#include "libavutil/channel_layout.h" - -#include "avcodec.h" -#include "decode.h" - -#include "mediacodec.h" -#include "mediacodec_surface.h" -#include "mediacodec_sw_buffer.h" -#include "mediacodec_wrapper.h" -#include "mediacodecdec_common.h" - -/** - * OMX.k3.video.decoder.avc, OMX.NVIDIA.* OMX.SEC.avc.dec and OMX.google - * codec workarounds used in various place are taken from the Gstreamer - * project. - * - * Gstreamer references: - * https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/sys/androidmedia/ - * - * Gstreamer copyright notice: - * - * Copyright (C) 2012, Collabora Ltd. - * Author: Sebastian Dröge - * - * Copyright (C) 2012, Rafaël Carré - * - * Copyright (C) 2015, Sebastian Dröge - * - * Copyright (C) 2014-2015, Collabora Ltd. - * Author: Matthieu Bouron - * - * Copyright (C) 2015, Edward Hervey - * Author: Edward Hervey - * - * Copyright (C) 2015, Matthew Waters - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation - * version 2.1 of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#define INPUT_DEQUEUE_TIMEOUT_US 8000 -#define OUTPUT_DEQUEUE_TIMEOUT_US 8000 -#define OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US 8000 - -enum { - ENCODING_PCM_16BIT = 0x00000002, - ENCODING_PCM_8BIT = 0x00000003, - ENCODING_PCM_FLOAT = 0x00000004, - ENCODING_PCM_24BIT_PACKED = 0x00000015, - ENCODING_PCM_32BIT = 0x00000016, -}; - -static const struct { - - int pcm_format; - enum AVSampleFormat sample_format; - -} sample_formats[] = { - - { ENCODING_PCM_16BIT, AV_SAMPLE_FMT_S16 }, - { ENCODING_PCM_8BIT, AV_SAMPLE_FMT_U8 }, - { ENCODING_PCM_FLOAT, AV_SAMPLE_FMT_FLT }, - { ENCODING_PCM_32BIT, AV_SAMPLE_FMT_S32 }, - { 0 } -}; - -static enum AVSampleFormat mcdec_map_pcm_format(AVCodecContext *avctx, - MediaCodecDecContext *s, - int pcm_format) -{ - enum AVSampleFormat ret = AV_SAMPLE_FMT_NONE; - - for (int i = 0; i < FF_ARRAY_ELEMS(sample_formats); i++) { - if (sample_formats[i].pcm_format == pcm_format) { - return sample_formats[i].sample_format; - } - } - - av_log(avctx, AV_LOG_ERROR, "Output sample format 0x%x (value=%d) is not supported\n", - pcm_format, pcm_format); - - return ret; -} - -enum -{ - CHANNEL_OUT_FRONT_LEFT = 0x4, - CHANNEL_OUT_FRONT_RIGHT = 0x8, - CHANNEL_OUT_FRONT_CENTER = 0x10, - CHANNEL_OUT_LOW_FREQUENCY = 0x20, - CHANNEL_OUT_BACK_LEFT = 0x40, - CHANNEL_OUT_BACK_RIGHT = 0x80, - CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x100, - CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x200, - CHANNEL_OUT_BACK_CENTER = 0x400, - CHANNEL_OUT_SIDE_LEFT = 0x800, - CHANNEL_OUT_SIDE_RIGHT = 0x1000, - CHANNEL_OUT_TOP_CENTER = 0x2000, - CHANNEL_OUT_TOP_FRONT_LEFT = 0x4000, - CHANNEL_OUT_TOP_FRONT_CENTER = 0x8000, - CHANNEL_OUT_TOP_FRONT_RIGHT = 0x10000, - CHANNEL_OUT_TOP_BACK_LEFT = 0x20000, - CHANNEL_OUT_TOP_BACK_CENTER = 0x40000, - CHANNEL_OUT_TOP_BACK_RIGHT = 0x80000, -}; - -static const struct { - - int mask; - uint64_t layout; - -} channel_masks[] = { - { CHANNEL_OUT_FRONT_LEFT, AV_CH_FRONT_LEFT }, - { CHANNEL_OUT_FRONT_RIGHT, AV_CH_FRONT_RIGHT }, - { CHANNEL_OUT_FRONT_CENTER, AV_CH_FRONT_CENTER }, - { CHANNEL_OUT_LOW_FREQUENCY, AV_CH_LOW_FREQUENCY }, - { CHANNEL_OUT_BACK_LEFT, AV_CH_BACK_LEFT }, - { CHANNEL_OUT_BACK_RIGHT, AV_CH_BACK_RIGHT }, - { CHANNEL_OUT_FRONT_LEFT_OF_CENTER, AV_CH_FRONT_LEFT_OF_CENTER }, - { CHANNEL_OUT_FRONT_RIGHT_OF_CENTER, AV_CH_FRONT_RIGHT_OF_CENTER }, - { CHANNEL_OUT_BACK_CENTER, AV_CH_BACK_CENTER }, - { CHANNEL_OUT_SIDE_LEFT, AV_CH_SIDE_LEFT }, - { CHANNEL_OUT_SIDE_RIGHT, AV_CH_SIDE_RIGHT }, - { CHANNEL_OUT_TOP_CENTER, AV_CH_TOP_CENTER }, - { CHANNEL_OUT_TOP_FRONT_LEFT, AV_CH_TOP_FRONT_LEFT }, - { CHANNEL_OUT_TOP_FRONT_CENTER, AV_CH_TOP_FRONT_CENTER }, - { CHANNEL_OUT_TOP_FRONT_RIGHT, AV_CH_TOP_FRONT_RIGHT }, - { CHANNEL_OUT_TOP_BACK_LEFT, AV_CH_TOP_BACK_LEFT }, - { CHANNEL_OUT_TOP_BACK_CENTER, AV_CH_TOP_BACK_CENTER }, - { CHANNEL_OUT_TOP_BACK_RIGHT, AV_CH_TOP_BACK_RIGHT }, -}; - -static uint64_t mcdec_map_channel_mask(AVCodecContext *avctx, - int channel_mask) -{ - uint64_t channel_layout = 0; - - for (int i = 0; i < FF_ARRAY_ELEMS(channel_masks); i++) { - if (channel_mask & channel_masks[i].mask) - channel_layout |= channel_masks[i].layout; - } - - return channel_layout; -} - -enum { - COLOR_FormatYUV420Planar = 0x13, - COLOR_FormatYUV420SemiPlanar = 0x15, - COLOR_FormatYCbYCr = 0x19, - COLOR_FormatAndroidOpaque = 0x7F000789, - COLOR_QCOM_FormatYUV420SemiPlanar = 0x7fa30c00, - COLOR_QCOM_FormatYUV420SemiPlanar32m = 0x7fa30c04, - COLOR_QCOM_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7fa30c03, - COLOR_TI_FormatYUV420PackedSemiPlanar = 0x7f000100, - COLOR_TI_FormatYUV420PackedSemiPlanarInterlaced = 0x7f000001, -}; - -static const struct { - - int color_format; - enum AVPixelFormat pix_fmt; - -} color_formats[] = { - - { COLOR_FormatYUV420Planar, AV_PIX_FMT_YUV420P }, - { COLOR_FormatYUV420SemiPlanar, AV_PIX_FMT_NV12 }, - { COLOR_QCOM_FormatYUV420SemiPlanar, AV_PIX_FMT_NV12 }, - { COLOR_QCOM_FormatYUV420SemiPlanar32m, AV_PIX_FMT_NV12 }, - { COLOR_QCOM_FormatYUV420PackedSemiPlanar64x32Tile2m8ka, AV_PIX_FMT_NV12 }, - { COLOR_TI_FormatYUV420PackedSemiPlanar, AV_PIX_FMT_NV12 }, - { COLOR_TI_FormatYUV420PackedSemiPlanarInterlaced, AV_PIX_FMT_NV12 }, - { 0 } -}; - -static enum AVPixelFormat mcdec_map_color_format(AVCodecContext *avctx, - MediaCodecDecContext *s, - int color_format) -{ - int i; - enum AVPixelFormat ret = AV_PIX_FMT_NONE; - - if (s->surface) { - return AV_PIX_FMT_MEDIACODEC; - } - - if (!strcmp(s->codec_name, "OMX.k3.video.decoder.avc") && color_format == COLOR_FormatYCbYCr) { - s->color_format = color_format = COLOR_TI_FormatYUV420PackedSemiPlanar; - } - - for (i = 0; i < FF_ARRAY_ELEMS(color_formats); i++) { - if (color_formats[i].color_format == color_format) { - return color_formats[i].pix_fmt; - } - } - - av_log(avctx, AV_LOG_ERROR, "Output color format 0x%x (value=%d) is not supported\n", - color_format, color_format); - - return ret; -} - -static void ff_mediacodec_dec_ref(MediaCodecDecContext *s) -{ - atomic_fetch_add(&s->refcount, 1); -} - -static void ff_mediacodec_dec_unref(MediaCodecDecContext *s) -{ - if (!s) - return; - - if (atomic_fetch_sub(&s->refcount, 1) == 1) { - if (s->codec) { - ff_AMediaCodec_delete(s->codec); - s->codec = NULL; - } - - if (s->format) { - ff_AMediaFormat_delete(s->format); - s->format = NULL; - } - - if (s->surface) { - ff_mediacodec_surface_unref(s->surface, NULL); - s->surface = NULL; - } - - av_freep(&s->codec_name); - av_freep(&s); - } -} - -static void mediacodec_buffer_release(void *opaque, uint8_t *data) -{ - AVMediaCodecBuffer *buffer = opaque; - MediaCodecDecContext *ctx = buffer->ctx; - int released = atomic_load(&buffer->released); - - if (!released && (ctx->delay_flush || buffer->serial == atomic_load(&ctx->serial))) { - atomic_fetch_sub(&ctx->hw_buffer_count, 1); - av_log(ctx->avctx, AV_LOG_DEBUG, - "Releasing output buffer %zd (%p) ts=%"PRId64" on free() [%d pending]\n", - buffer->index, buffer, buffer->pts, atomic_load(&ctx->hw_buffer_count)); - ff_AMediaCodec_releaseOutputBuffer(ctx->codec, buffer->index, 0); - } - - ff_mediacodec_dec_unref(ctx); - av_freep(&buffer); -} - -static int mediacodec_wrap_hw_buffer(AVCodecContext *avctx, - MediaCodecDecContext *s, - ssize_t index, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - int ret = 0; - int status = 0; - AVMediaCodecBuffer *buffer = NULL; - - frame->buf[0] = NULL; - frame->width = avctx->width; - frame->height = avctx->height; - frame->format = avctx->pix_fmt; - frame->sample_aspect_ratio = avctx->sample_aspect_ratio; - - if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) { - frame->pts = av_rescale_q(info->presentationTimeUs, - AV_TIME_BASE_Q, - avctx->pkt_timebase); - } else { - frame->pts = info->presentationTimeUs; - } - frame->pkt_dts = AV_NOPTS_VALUE; - frame->color_range = avctx->color_range; - frame->color_primaries = avctx->color_primaries; - frame->color_trc = avctx->color_trc; - frame->colorspace = avctx->colorspace; - - buffer = av_mallocz(sizeof(AVMediaCodecBuffer)); - if (!buffer) { - ret = AVERROR(ENOMEM); - goto fail; - } - - atomic_init(&buffer->released, 0); - - frame->buf[0] = av_buffer_create(NULL, - 0, - mediacodec_buffer_release, - buffer, - AV_BUFFER_FLAG_READONLY); - - if (!frame->buf[0]) { - ret = AVERROR(ENOMEM); - goto fail; - - } - - buffer->ctx = s; - buffer->serial = atomic_load(&s->serial); - ff_mediacodec_dec_ref(s); - - buffer->index = index; - buffer->pts = info->presentationTimeUs; - - frame->data[3] = (uint8_t *)buffer; - - atomic_fetch_add(&s->hw_buffer_count, 1); - av_log(avctx, AV_LOG_DEBUG, - "Wrapping output buffer %zd (%p) ts=%"PRId64" [%d pending]\n", - buffer->index, buffer, buffer->pts, atomic_load(&s->hw_buffer_count)); - - return 0; -fail: - av_freep(&buffer); - status = ff_AMediaCodec_releaseOutputBuffer(s->codec, index, 0); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n"); - ret = AVERROR_EXTERNAL; - } - - return ret; -} - -static int mediacodec_wrap_sw_audio_buffer(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - ssize_t index, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - int ret = 0; - int status = 0; - const int sample_size = av_get_bytes_per_sample(avctx->sample_fmt); - if (!sample_size) { - av_log(avctx, AV_LOG_ERROR, "Could not get bytes per sample\n"); - ret = AVERROR(ENOSYS); - goto done; - } - - if (info->size % (sample_size * avctx->ch_layout.nb_channels)) { - av_log(avctx, AV_LOG_ERROR, "input is not a multiple of channels * sample_size\n"); - ret = AVERROR(EINVAL); - goto done; - } - - frame->format = avctx->sample_fmt; - frame->sample_rate = avctx->sample_rate; - frame->nb_samples = info->size / (sample_size * avctx->ch_layout.nb_channels); - - ret = av_channel_layout_copy(&frame->ch_layout, &avctx->ch_layout); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Could not copy channel layout\n"); - goto done; - } - - /* MediaCodec buffers needs to be copied to our own refcounted buffers - * because the flush command invalidates all input and output buffers. - */ - ret = ff_get_buffer(avctx, frame, 0); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Could not allocate buffer\n"); - goto done; - } - - /* Override frame->pts as ff_get_buffer will override its value based - * on the last avpacket received which is not in sync with the frame: - * * N avpackets can be pushed before 1 frame is actually returned - * * 0-sized avpackets are pushed to flush remaining frames at EOS */ - if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) { - frame->pts = av_rescale_q(info->presentationTimeUs, - AV_TIME_BASE_Q, - avctx->pkt_timebase); - } else { - frame->pts = info->presentationTimeUs; - } - frame->pkt_dts = AV_NOPTS_VALUE; - frame->flags |= AV_FRAME_FLAG_KEY; - - av_log(avctx, AV_LOG_TRACE, - "Frame: format=%d channels=%d sample_rate=%d nb_samples=%d", - avctx->sample_fmt, avctx->ch_layout.nb_channels, avctx->sample_rate, frame->nb_samples); - - memcpy(frame->data[0], data, info->size); - - ret = 0; -done: - status = ff_AMediaCodec_releaseOutputBuffer(s->codec, index, 0); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n"); - ret = AVERROR_EXTERNAL; - } - - return ret; -} - -static int mediacodec_wrap_sw_video_buffer(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - ssize_t index, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - int ret = 0; - int status = 0; - - frame->width = avctx->width; - frame->height = avctx->height; - frame->format = avctx->pix_fmt; - - /* MediaCodec buffers needs to be copied to our own refcounted buffers - * because the flush command invalidates all input and output buffers. - */ - if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) { - av_log(avctx, AV_LOG_ERROR, "Could not allocate buffer\n"); - goto done; - } - - /* Override frame->pkt_pts as ff_get_buffer will override its value based - * on the last avpacket received which is not in sync with the frame: - * * N avpackets can be pushed before 1 frame is actually returned - * * 0-sized avpackets are pushed to flush remaining frames at EOS */ - if (avctx->pkt_timebase.num && avctx->pkt_timebase.den) { - frame->pts = av_rescale_q(info->presentationTimeUs, - AV_TIME_BASE_Q, - avctx->pkt_timebase); - } else { - frame->pts = info->presentationTimeUs; - } - frame->pkt_dts = AV_NOPTS_VALUE; - - av_log(avctx, AV_LOG_TRACE, - "Frame: width=%d stride=%d height=%d slice-height=%d " - "crop-top=%d crop-bottom=%d crop-left=%d crop-right=%d encoder=%s " - "destination linesizes=%d,%d,%d\n" , - avctx->width, s->stride, avctx->height, s->slice_height, - s->crop_top, s->crop_bottom, s->crop_left, s->crop_right, s->codec_name, - frame->linesize[0], frame->linesize[1], frame->linesize[2]); - - switch (s->color_format) { - case COLOR_FormatYUV420Planar: - ff_mediacodec_sw_buffer_copy_yuv420_planar(avctx, s, data, size, info, frame); - break; - case COLOR_FormatYUV420SemiPlanar: - case COLOR_QCOM_FormatYUV420SemiPlanar: - case COLOR_QCOM_FormatYUV420SemiPlanar32m: - ff_mediacodec_sw_buffer_copy_yuv420_semi_planar(avctx, s, data, size, info, frame); - break; - case COLOR_TI_FormatYUV420PackedSemiPlanar: - case COLOR_TI_FormatYUV420PackedSemiPlanarInterlaced: - ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar(avctx, s, data, size, info, frame); - break; - case COLOR_QCOM_FormatYUV420PackedSemiPlanar64x32Tile2m8ka: - ff_mediacodec_sw_buffer_copy_yuv420_packed_semi_planar_64x32Tile2m8ka(avctx, s, data, size, info, frame); - break; - default: - av_log(avctx, AV_LOG_ERROR, "Unsupported color format 0x%x (value=%d)\n", - s->color_format, s->color_format); - ret = AVERROR(EINVAL); - goto done; - } - - ret = 0; -done: - status = ff_AMediaCodec_releaseOutputBuffer(s->codec, index, 0); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n"); - ret = AVERROR_EXTERNAL; - } - - return ret; -} - -static int mediacodec_wrap_sw_buffer(AVCodecContext *avctx, - MediaCodecDecContext *s, - uint8_t *data, - size_t size, - ssize_t index, - FFAMediaCodecBufferInfo *info, - AVFrame *frame) -{ - if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) - return mediacodec_wrap_sw_audio_buffer(avctx, s, data, size, index, info, frame); - else if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) - return mediacodec_wrap_sw_video_buffer(avctx, s, data, size, index, info, frame); - else - av_assert0(0); -} - -#define AMEDIAFORMAT_GET_INT32(name, key, mandatory) do { \ - int32_t value = 0; \ - if (ff_AMediaFormat_getInt32(s->format, key, &value)) { \ - (name) = value; \ - } else if (mandatory) { \ - av_log(avctx, AV_LOG_ERROR, "Could not get %s from format %s\n", key, format); \ - ret = AVERROR_EXTERNAL; \ - goto fail; \ - } else { \ - (name) = 0; \ - } \ -} while (0) \ - -static int mediacodec_dec_parse_video_format(AVCodecContext *avctx, MediaCodecDecContext *s) -{ - int ret = 0; - int width = 0; - int height = 0; - int color_range = 0; - int color_standard = 0; - int color_transfer = 0; - char *format = NULL; - - if (!s->format) { - av_log(avctx, AV_LOG_ERROR, "Output MediaFormat is not set\n"); - return AVERROR(EINVAL); - } - - format = ff_AMediaFormat_toString(s->format); - if (!format) { - return AVERROR_EXTERNAL; - } - av_log(avctx, AV_LOG_DEBUG, "Parsing MediaFormat %s\n", format); - - /* Mandatory fields */ - AMEDIAFORMAT_GET_INT32(s->width, "width", 1); - AMEDIAFORMAT_GET_INT32(s->height, "height", 1); - - AMEDIAFORMAT_GET_INT32(s->stride, "stride", 0); - s->stride = s->stride > 0 ? s->stride : s->width; - - AMEDIAFORMAT_GET_INT32(s->slice_height, "slice-height", 0); - - if (strstr(s->codec_name, "OMX.Nvidia.") && s->slice_height == 0) { - s->slice_height = FFALIGN(s->height, 16); - } else if (strstr(s->codec_name, "OMX.SEC.avc.dec")) { - s->slice_height = avctx->height; - s->stride = avctx->width; - } else if (strstr(s->codec_name, "OMX.MTK.VIDEO.DECODER.MPEG2")) { - s->slice_height = s->height; - } else if (s->slice_height == 0) { - s->slice_height = s->height; - } - - AMEDIAFORMAT_GET_INT32(s->color_format, "color-format", 1); - avctx->pix_fmt = mcdec_map_color_format(avctx, s, s->color_format); - if (avctx->pix_fmt == AV_PIX_FMT_NONE) { - av_log(avctx, AV_LOG_ERROR, "Output color format is not supported\n"); - ret = AVERROR(EINVAL); - goto fail; - } - - /* Optional fields */ - AMEDIAFORMAT_GET_INT32(s->crop_top, "crop-top", 0); - AMEDIAFORMAT_GET_INT32(s->crop_bottom, "crop-bottom", 0); - AMEDIAFORMAT_GET_INT32(s->crop_left, "crop-left", 0); - AMEDIAFORMAT_GET_INT32(s->crop_right, "crop-right", 0); - - // Try "crop" for NDK - // MediaTek SOC return some default value like Rect(0, 0, 318, 238) - if (!(s->crop_right && s->crop_bottom) && s->use_ndk_codec && !strstr(s->codec_name, ".mtk.")) - ff_AMediaFormat_getRect(s->format, "crop", &s->crop_left, &s->crop_top, &s->crop_right, &s->crop_bottom); - - if (s->crop_right && s->crop_bottom) { - width = s->crop_right + 1 - s->crop_left; - height = s->crop_bottom + 1 - s->crop_top; - } else { - /* TODO: NDK MediaFormat should try getRect() first. - * Try crop-width/crop-height, it works on NVIDIA Shield. - */ - AMEDIAFORMAT_GET_INT32(width, "crop-width", 0); - AMEDIAFORMAT_GET_INT32(height, "crop-height", 0); - } - if (!width || !height) { - width = s->width; - height = s->height; - } - - AMEDIAFORMAT_GET_INT32(s->display_width, "display-width", 0); - AMEDIAFORMAT_GET_INT32(s->display_height, "display-height", 0); - - if (s->display_width && s->display_height) { - AVRational sar = av_div_q( - (AVRational){ s->display_width, s->display_height }, - (AVRational){ width, height }); - ff_set_sar(avctx, sar); - } - - AMEDIAFORMAT_GET_INT32(color_range, "color-range", 0); - if (color_range) - avctx->color_range = ff_AMediaFormatColorRange_to_AVColorRange(color_range); - - AMEDIAFORMAT_GET_INT32(color_standard, "color-standard", 0); - if (color_standard) { - avctx->colorspace = ff_AMediaFormatColorStandard_to_AVColorSpace(color_standard); - avctx->color_primaries = ff_AMediaFormatColorStandard_to_AVColorPrimaries(color_standard); - } - - AMEDIAFORMAT_GET_INT32(color_transfer, "color-transfer", 0); - if (color_transfer) - avctx->color_trc = ff_AMediaFormatColorTransfer_to_AVColorTransfer(color_transfer); - - av_log(avctx, AV_LOG_INFO, - "Output crop parameters top=%d bottom=%d left=%d right=%d, " - "resulting dimensions width=%d height=%d\n", - s->crop_top, s->crop_bottom, s->crop_left, s->crop_right, - width, height); - - av_freep(&format); - return ff_set_dimensions(avctx, width, height); -fail: - av_freep(&format); - return ret; -} - -static int mediacodec_dec_parse_audio_format(AVCodecContext *avctx, MediaCodecDecContext *s) -{ - int ret = 0; - int sample_rate = 0; - int channel_count = 0; - int channel_mask = 0; - int pcm_encoding = 0; - char *format = NULL; - - if (!s->format) { - av_log(avctx, AV_LOG_ERROR, "Output MediaFormat is not set\n"); - return AVERROR(EINVAL); - } - - format = ff_AMediaFormat_toString(s->format); - if (!format) { - return AVERROR_EXTERNAL; - } - av_log(avctx, AV_LOG_DEBUG, "Parsing MediaFormat %s\n", format); - - /* Mandatory fields */ - AMEDIAFORMAT_GET_INT32(channel_count, "channel-count", 1); - AMEDIAFORMAT_GET_INT32(sample_rate, "sample-rate", 1); - - AMEDIAFORMAT_GET_INT32(pcm_encoding, "pcm-encoding", 0); - if (pcm_encoding) - avctx->sample_fmt = mcdec_map_pcm_format(avctx, s, pcm_encoding); - else - avctx->sample_fmt = AV_SAMPLE_FMT_S16; - - avctx->sample_rate = sample_rate; - - AMEDIAFORMAT_GET_INT32(channel_mask, "channel-mask", 0); - if (channel_mask) - av_channel_layout_from_mask(&avctx->ch_layout, mcdec_map_channel_mask(avctx, channel_mask)); - else - av_channel_layout_default(&avctx->ch_layout, channel_count); - - av_log(avctx, AV_LOG_INFO, - "Output parameters channel-count=%d channel-layout=%x sample-rate=%d\n", - channel_count, channel_mask, sample_rate); - -fail: - av_freep(&format); - return ret; -} - -static int mediacodec_dec_parse_format(AVCodecContext *avctx, MediaCodecDecContext *s) -{ - if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) - return mediacodec_dec_parse_audio_format(avctx, s); - else if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) - return mediacodec_dec_parse_video_format(avctx, s); - else - av_assert0(0); -} - -static int mediacodec_dec_flush_codec(AVCodecContext *avctx, MediaCodecDecContext *s) -{ - FFAMediaCodec *codec = s->codec; - int status; - - s->output_buffer_count = 0; - - s->draining = 0; - s->flushing = 0; - s->eos = 0; - atomic_fetch_add(&s->serial, 1); - atomic_init(&s->hw_buffer_count, 0); - s->current_input_buffer = -1; - - status = ff_AMediaCodec_flush(codec); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to flush codec\n"); - return AVERROR_EXTERNAL; - } - - return 0; -} - -static int mediacodec_dec_get_video_codec(AVCodecContext *avctx, MediaCodecDecContext *s, - const char *mime, FFAMediaFormat *format) -{ - int profile; - - enum AVPixelFormat pix_fmt; - static const enum AVPixelFormat pix_fmts[] = { - AV_PIX_FMT_MEDIACODEC, - AV_PIX_FMT_NONE, - }; - - pix_fmt = ff_get_format(avctx, pix_fmts); - if (pix_fmt == AV_PIX_FMT_MEDIACODEC) { - AVMediaCodecContext *user_ctx = avctx->hwaccel_context; - - if (avctx->hw_device_ctx) { - AVHWDeviceContext *device_ctx = (AVHWDeviceContext*)(avctx->hw_device_ctx->data); - if (device_ctx->type == AV_HWDEVICE_TYPE_MEDIACODEC) { - if (device_ctx->hwctx) { - AVMediaCodecDeviceContext *mediacodec_ctx = (AVMediaCodecDeviceContext *)device_ctx->hwctx; - s->surface = ff_mediacodec_surface_ref(mediacodec_ctx->surface, mediacodec_ctx->native_window, avctx); - av_log(avctx, AV_LOG_INFO, "Using surface %p\n", s->surface); - } - } - } - - if (!s->surface && user_ctx && user_ctx->surface) { - s->surface = ff_mediacodec_surface_ref(user_ctx->surface, NULL, avctx); - av_log(avctx, AV_LOG_INFO, "Using surface %p\n", s->surface); - } - } - - profile = ff_AMediaCodecProfile_getProfileFromAVCodecContext(avctx); - if (profile < 0) { - av_log(avctx, AV_LOG_WARNING, "Unsupported or unknown profile\n"); - } - - s->codec_name = ff_AMediaCodecList_getCodecNameByType(mime, profile, 0, avctx); - if (!s->codec_name) { - // getCodecNameByType() can fail due to missing JVM, while NDK - // mediacodec can be used without JVM. - if (!s->use_ndk_codec) { - return AVERROR_EXTERNAL; - } - av_log(avctx, AV_LOG_INFO, "Failed to getCodecNameByType\n"); - } else { - av_log(avctx, AV_LOG_DEBUG, "Found decoder %s\n", s->codec_name); - } - - if (s->codec_name) - s->codec = ff_AMediaCodec_createCodecByName(s->codec_name, s->use_ndk_codec); - else { - s->codec = ff_AMediaCodec_createDecoderByType(mime, s->use_ndk_codec); - if (s->codec) { - s->codec_name = ff_AMediaCodec_getName(s->codec); - if (!s->codec_name) - s->codec_name = av_strdup(mime); - } - } - if (!s->codec) { - av_log(avctx, AV_LOG_ERROR, "Failed to create media decoder for type %s and name %s\n", mime, s->codec_name); - return AVERROR_EXTERNAL; - } - - return 0; -} - -static int mediacodec_dec_get_audio_codec(AVCodecContext *avctx, MediaCodecDecContext *s, - const char *mime, FFAMediaFormat *format) -{ - s->codec = ff_AMediaCodec_createDecoderByType(mime, s->use_ndk_codec); - if (!s->codec) { - av_log(avctx, AV_LOG_ERROR, "Failed to create media decoder for mime %s\n", mime); - return AVERROR_EXTERNAL; - } - - s->codec_name = ff_AMediaCodec_getName(s->codec); - if (!s->codec_name) { - s->codec_name = av_strdup(mime); - if (!s->codec_name) - return AVERROR(ENOMEM); - } - - return 0; -} - -int ff_mediacodec_dec_init(AVCodecContext *avctx, MediaCodecDecContext *s, - const char *mime, FFAMediaFormat *format) -{ - int ret; - int status; - - s->avctx = avctx; - atomic_init(&s->refcount, 1); - atomic_init(&s->hw_buffer_count, 0); - atomic_init(&s->serial, 1); - s->current_input_buffer = -1; - - if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) - ret = mediacodec_dec_get_audio_codec(avctx, s, mime, format); - else if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) - ret = mediacodec_dec_get_video_codec(avctx, s, mime, format); - else - av_assert0(0); - if (ret < 0) - goto fail; - - status = ff_AMediaCodec_configure(s->codec, format, s->surface, NULL, 0); - if (status < 0) { - char *desc = ff_AMediaFormat_toString(format); - av_log(avctx, AV_LOG_ERROR, - "Failed to configure codec %s (status = %d) with format %s\n", - s->codec_name, status, desc); - av_freep(&desc); - - ret = AVERROR_EXTERNAL; - goto fail; - } - - status = ff_AMediaCodec_start(s->codec); - if (status < 0) { - char *desc = ff_AMediaFormat_toString(format); - av_log(avctx, AV_LOG_ERROR, - "Failed to start codec %s (status = %d) with format %s\n", - s->codec_name, status, desc); - av_freep(&desc); - ret = AVERROR_EXTERNAL; - goto fail; - } - - if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { - s->format = ff_AMediaCodec_getOutputFormat(s->codec); - if (s->format) { - if ((ret = mediacodec_dec_parse_format(avctx, s)) < 0) { - av_log(avctx, AV_LOG_ERROR, - "Failed to configure context\n"); - goto fail; - } - } - } - - av_log(avctx, AV_LOG_DEBUG, "MediaCodec %p started successfully\n", s->codec); - - return 0; - -fail: - av_log(avctx, AV_LOG_ERROR, "MediaCodec %p failed to start\n", s->codec); - ff_mediacodec_dec_close(avctx, s); - return ret; -} - -int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s, - AVPacket *pkt, bool wait) -{ - int offset = 0; - int need_draining = 0; - uint8_t *data; - size_t size; - FFAMediaCodec *codec = s->codec; - int status; - int64_t input_dequeue_timeout_us = wait ? INPUT_DEQUEUE_TIMEOUT_US : 0; - int64_t pts; - - if (s->flushing) { - av_log(avctx, AV_LOG_ERROR, "Decoder is flushing and cannot accept new buffer " - "until all output buffers have been released\n"); - return AVERROR_EXTERNAL; - } - - if (pkt->size == 0) { - need_draining = 1; - } - - if (s->draining && s->eos) { - return AVERROR_EOF; - } - - while (offset < pkt->size || (need_draining && !s->draining)) { - ssize_t index = s->current_input_buffer; - if (index < 0) { - index = ff_AMediaCodec_dequeueInputBuffer(codec, input_dequeue_timeout_us); - if (ff_AMediaCodec_infoTryAgainLater(codec, index)) { - av_log(avctx, AV_LOG_TRACE, "No input buffer available, try again later\n"); - break; - } - - if (index < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to dequeue input buffer (status=%zd)\n", index); - return AVERROR_EXTERNAL; - } - } - s->current_input_buffer = -1; - - data = ff_AMediaCodec_getInputBuffer(codec, index, &size); - if (!data) { - av_log(avctx, AV_LOG_ERROR, "Failed to get input buffer\n"); - return AVERROR_EXTERNAL; - } - - pts = pkt->pts; - if (pts == AV_NOPTS_VALUE) { - av_log(avctx, AV_LOG_WARNING, "Input packet is missing PTS\n"); - pts = 0; - } - if (pts && avctx->pkt_timebase.num && avctx->pkt_timebase.den) { - pts = av_rescale_q(pts, avctx->pkt_timebase, AV_TIME_BASE_Q); - } - - if (need_draining) { - uint32_t flags = ff_AMediaCodec_getBufferFlagEndOfStream(codec); - - av_log(avctx, AV_LOG_DEBUG, "Sending End Of Stream signal\n"); - - status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, 0, pts, flags); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to queue input empty buffer (status = %d)\n", status); - return AVERROR_EXTERNAL; - } - - av_log(avctx, AV_LOG_TRACE, - "Queued empty EOS input buffer %zd with flags=%d\n", index, flags); - - s->draining = 1; - return 0; - } - - size = FFMIN(pkt->size - offset, size); - memcpy(data, pkt->data + offset, size); - offset += size; - - status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, size, pts, 0); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to queue input buffer (status = %d)\n", status); - return AVERROR_EXTERNAL; - } - - av_log(avctx, AV_LOG_TRACE, - "Queued input buffer %zd size=%zd ts=%"PRIi64"\n", index, size, pts); - } - - if (offset == 0) - return AVERROR(EAGAIN); - return offset; -} - -int ff_mediacodec_dec_receive(AVCodecContext *avctx, MediaCodecDecContext *s, - AVFrame *frame, bool wait) -{ - int ret; - uint8_t *data; - ssize_t index; - size_t size; - FFAMediaCodec *codec = s->codec; - FFAMediaCodecBufferInfo info = { 0 }; - int status; - int64_t output_dequeue_timeout_us = OUTPUT_DEQUEUE_TIMEOUT_US; - - if (s->draining && s->eos) { - return AVERROR_EOF; - } - - if (s->draining) { - /* If the codec is flushing or need to be flushed, block for a fair - * amount of time to ensure we got a frame */ - output_dequeue_timeout_us = OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US; - } else if (s->output_buffer_count == 0 || !wait) { - /* If the codec hasn't produced any frames, do not block so we - * can push data to it as fast as possible, and get the first - * frame */ - output_dequeue_timeout_us = 0; - } - - index = ff_AMediaCodec_dequeueOutputBuffer(codec, &info, output_dequeue_timeout_us); - if (index >= 0) { - av_log(avctx, AV_LOG_TRACE, "Got output buffer %zd" - " offset=%" PRIi32 " size=%" PRIi32 " ts=%" PRIi64 - " flags=%" PRIu32 "\n", index, info.offset, info.size, - info.presentationTimeUs, info.flags); - - if (info.flags & ff_AMediaCodec_getBufferFlagEndOfStream(codec)) { - s->eos = 1; - } - - if (info.size) { - if (s->surface) { - if ((ret = mediacodec_wrap_hw_buffer(avctx, s, index, &info, frame)) < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to wrap MediaCodec buffer\n"); - return ret; - } - } else { - data = ff_AMediaCodec_getOutputBuffer(codec, index, &size); - if (!data) { - av_log(avctx, AV_LOG_ERROR, "Failed to get output buffer\n"); - return AVERROR_EXTERNAL; - } - - if ((ret = mediacodec_wrap_sw_buffer(avctx, s, data, size, index, &info, frame)) < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to wrap MediaCodec buffer\n"); - return ret; - } - } - - s->output_buffer_count++; - return 0; - } else { - status = ff_AMediaCodec_releaseOutputBuffer(codec, index, 0); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to release output buffer\n"); - } - } - - } else if (ff_AMediaCodec_infoOutputFormatChanged(codec, index)) { - char *format = NULL; - - if (s->format) { - status = ff_AMediaFormat_delete(s->format); - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to delete MediaFormat %p\n", s->format); - } - } - - s->format = ff_AMediaCodec_getOutputFormat(codec); - if (!s->format) { - av_log(avctx, AV_LOG_ERROR, "Failed to get output format\n"); - return AVERROR_EXTERNAL; - } - - format = ff_AMediaFormat_toString(s->format); - if (!format) { - return AVERROR_EXTERNAL; - } - av_log(avctx, AV_LOG_INFO, "Output MediaFormat changed to %s\n", format); - av_freep(&format); - - if ((ret = mediacodec_dec_parse_format(avctx, s)) < 0) { - return ret; - } - - } else if (ff_AMediaCodec_infoOutputBuffersChanged(codec, index)) { - ff_AMediaCodec_cleanOutputBuffers(codec); - } else if (ff_AMediaCodec_infoTryAgainLater(codec, index)) { - if (s->draining) { - av_log(avctx, AV_LOG_ERROR, "Failed to dequeue output buffer within %" PRIi64 "ms " - "while draining remaining frames, output will probably lack frames\n", - output_dequeue_timeout_us / 1000); - } else { - av_log(avctx, AV_LOG_TRACE, "No output buffer available, try again later\n"); - } - } else { - av_log(avctx, AV_LOG_ERROR, "Failed to dequeue output buffer (status=%zd)\n", index); - return AVERROR_EXTERNAL; - } - - if (s->draining && s->eos) - return AVERROR_EOF; - return AVERROR(EAGAIN); -} - -/* -* ff_mediacodec_dec_flush returns 0 if the flush cannot be performed on -* the codec (because the user retains frames). The codec stays in the -* flushing state. -* -* ff_mediacodec_dec_flush returns 1 if the flush can actually be -* performed on the codec. The codec leaves the flushing state and can -* process again packets. -* -* ff_mediacodec_dec_flush returns a negative value if an error has -* occurred. -*/ -int ff_mediacodec_dec_flush(AVCodecContext *avctx, MediaCodecDecContext *s) -{ - if (!s->surface || !s->delay_flush || atomic_load(&s->refcount) == 1) { - int ret; - - /* No frames (holding a reference to the codec) are retained by the - * user, thus we can flush the codec and returns accordingly */ - if ((ret = mediacodec_dec_flush_codec(avctx, s)) < 0) { - return ret; - } - - return 1; - } - - s->flushing = 1; - return 0; -} - -int ff_mediacodec_dec_close(AVCodecContext *avctx, MediaCodecDecContext *s) -{ - if (!s) - return 0; - - if (s->codec) { - if (atomic_load(&s->hw_buffer_count) == 0) { - ff_AMediaCodec_stop(s->codec); - av_log(avctx, AV_LOG_DEBUG, "MediaCodec %p stopped\n", s->codec); - } else { - av_log(avctx, AV_LOG_DEBUG, "Not stopping MediaCodec (there are buffers pending)\n"); - } - } - - ff_mediacodec_dec_unref(s); - - return 0; -} - -int ff_mediacodec_dec_is_flushing(AVCodecContext *avctx, MediaCodecDecContext *s) -{ - return s->flushing; -} diff --git a/icecat/media/ffvpx/libavcodec/mediacodecdec_common.h b/icecat/media/ffvpx/libavcodec/mediacodecdec_common.h deleted file mode 100644 index 0ab29036bd..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodecdec_common.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Android MediaCodec decoder - * - * Copyright (c) 2015-2016 Matthieu Bouron - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MEDIACODECDEC_COMMON_H -#define AVCODEC_MEDIACODECDEC_COMMON_H - -#include -#include -#include -#include - -#include "libavutil/frame.h" -#include "libavutil/pixfmt.h" - -#include "avcodec.h" -#include "mediacodec_wrapper.h" - -typedef struct MediaCodecDecContext { - - AVCodecContext *avctx; - atomic_int refcount; - atomic_int hw_buffer_count; - - char *codec_name; - - FFAMediaCodec *codec; - FFAMediaFormat *format; - - void *surface; - - int started; - int draining; - int flushing; - int eos; - - int width; - int height; - int stride; - int slice_height; - int color_format; - int crop_top; - int crop_bottom; - int crop_left; - int crop_right; - int display_width; - int display_height; - - uint64_t output_buffer_count; - ssize_t current_input_buffer; - - bool delay_flush; - atomic_int serial; - - bool use_ndk_codec; -} MediaCodecDecContext; - -int ff_mediacodec_dec_init(AVCodecContext *avctx, - MediaCodecDecContext *s, - const char *mime, - FFAMediaFormat *format); - -int ff_mediacodec_dec_send(AVCodecContext *avctx, - MediaCodecDecContext *s, - AVPacket *pkt, - bool wait); - -int ff_mediacodec_dec_receive(AVCodecContext *avctx, - MediaCodecDecContext *s, - AVFrame *frame, - bool wait); - -int ff_mediacodec_dec_flush(AVCodecContext *avctx, - MediaCodecDecContext *s); - -int ff_mediacodec_dec_close(AVCodecContext *avctx, - MediaCodecDecContext *s); - -int ff_mediacodec_dec_is_flushing(AVCodecContext *avctx, - MediaCodecDecContext *s); - -typedef struct MediaCodecBuffer { - - MediaCodecDecContext *ctx; - ssize_t index; - int64_t pts; - atomic_int released; - int serial; - -} MediaCodecBuffer; - -#endif /* AVCODEC_MEDIACODECDEC_COMMON_H */ diff --git a/icecat/media/ffvpx/libavcodec/mediacodecenc.c b/icecat/media/ffvpx/libavcodec/mediacodecenc.c deleted file mode 100644 index 275afe220c..0000000000 --- a/icecat/media/ffvpx/libavcodec/mediacodecenc.c +++ /dev/null @@ -1,1514 +0,0 @@ -/* - * Android MediaCodec encoders - * - * Copyright (c) 2022 Zhao Zhili - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config_components.h" - -#include "libavutil/avassert.h" -#include "libavutil/fifo.h" -#include "libavutil/avstring.h" -#include "libavutil/hwcontext_mediacodec.h" -#include "libavutil/imgutils.h" -#include "libavutil/mem.h" -#include "libavutil/opt.h" -#include "libavutil/thread.h" - -#include "avcodec.h" -#include "bsf.h" -#include "codec_internal.h" -#include "encode.h" -#include "hwconfig.h" -#include "jni.h" -#include "fffjni.h" -#include "mediacodec.h" -#include "mediacodec_wrapper.h" -#include "mediacodecdec_common.h" -#include "profiles.h" - -#define INPUT_DEQUEUE_TIMEOUT_US 8000 -#define OUTPUT_DEQUEUE_TIMEOUT_US 8000 - -enum BitrateMode { - /* Constant quality mode */ - BITRATE_MODE_CQ = 0, - /* Variable bitrate mode */ - BITRATE_MODE_VBR = 1, - /* Constant bitrate mode */ - BITRATE_MODE_CBR = 2, - /* Constant bitrate mode with frame drops */ - BITRATE_MODE_CBR_FD = 3, -}; - -typedef struct MediaCodecAsyncOutput { - int32_t index; - FFAMediaCodecBufferInfo buf_info; -} MediaCodecAsyncOutput; - -typedef struct MediaCodecEncContext { - AVClass *avclass; - FFAMediaCodec *codec; - int use_ndk_codec; - const char *name; - FFANativeWindow *window; - - int fps; - int width; - int height; - - uint8_t *extradata; - int extradata_size; - int eof_sent; - - AVFrame *frame; - AVBSFContext *bsf; - - int bitrate_mode; - int level; - int pts_as_dts; - int extract_extradata; - // Ref. MediaFormat KEY_OPERATING_RATE - int operating_rate; - int async_mode; - - AVMutex input_mutex; - AVCond input_cond; - AVFifo *input_index; - - AVMutex output_mutex; - AVCond output_cond; - int encode_status; - AVFifo *async_output; - - int qp_i_min; - int qp_p_min; - int qp_b_min; - int qp_i_max; - int qp_p_max; - int qp_b_max; -} MediaCodecEncContext; - -enum { - COLOR_FormatYUV420Planar = 0x13, - COLOR_FormatYUV420SemiPlanar = 0x15, - COLOR_FormatSurface = 0x7F000789, -}; - -static const struct { - int color_format; - enum AVPixelFormat pix_fmt; -} color_formats[] = { - { COLOR_FormatYUV420Planar, AV_PIX_FMT_YUV420P }, - { COLOR_FormatYUV420SemiPlanar, AV_PIX_FMT_NV12 }, - { COLOR_FormatSurface, AV_PIX_FMT_MEDIACODEC }, -}; - -static const enum AVPixelFormat avc_pix_fmts[] = { - AV_PIX_FMT_MEDIACODEC, - AV_PIX_FMT_YUV420P, - AV_PIX_FMT_NV12, - AV_PIX_FMT_NONE -}; - -static void mediacodec_dump_format(AVCodecContext *avctx, - FFAMediaFormat *out_format) -{ - MediaCodecEncContext *s = avctx->priv_data; - const char *name = s->name; - char *str = ff_AMediaFormat_toString(out_format); - - av_log(avctx, AV_LOG_DEBUG, "MediaCodec encoder %s output format %s\n", - name ? name : "unknown", str); - av_free(str); -} - -static void mediacodec_output_format(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - FFAMediaFormat *out_format = ff_AMediaCodec_getOutputFormat(s->codec); - - if (!s->name) - s->name = ff_AMediaCodec_getName(s->codec); - mediacodec_dump_format(avctx, out_format); - ff_AMediaFormat_delete(out_format); -} - -static int extract_extradata_support(AVCodecContext *avctx) -{ - const AVBitStreamFilter *bsf = av_bsf_get_by_name("extract_extradata"); - - if (!bsf) { - av_log(avctx, AV_LOG_WARNING, "extract_extradata bsf not found\n"); - return 0; - } - - for (int i = 0; bsf->codec_ids[i] != AV_CODEC_ID_NONE; i++) { - if (bsf->codec_ids[i] == avctx->codec_id) - return 1; - } - - return 0; -} - -static int mediacodec_init_bsf(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - char str[128] = {0}; - int ret; - int crop_right = s->width - avctx->width; - int crop_bottom = s->height - avctx->height; - - /* Nothing can be done for this format now */ - if (avctx->pix_fmt == AV_PIX_FMT_MEDIACODEC) - return 0; - - s->extract_extradata = (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) && - extract_extradata_support(avctx); - if (!crop_right && !crop_bottom && !s->extract_extradata) - return 0; - - ret = 0; - if (crop_right || crop_bottom) { - if (avctx->codec_id == AV_CODEC_ID_H264) - ret = snprintf(str, sizeof(str), "h264_metadata=crop_right=%d:crop_bottom=%d", - crop_right, crop_bottom); - else if (avctx->codec_id == AV_CODEC_ID_HEVC) - /* Encoder can use CTU size larger than 16x16, so the real crop - * margin can be larger than crop_right/crop_bottom. Let bsf figure - * out the real crop margin. - */ - ret = snprintf(str, sizeof(str), "hevc_metadata=width=%d:height=%d", - avctx->width, avctx->height); - if (ret >= sizeof(str)) - return AVERROR_BUFFER_TOO_SMALL; - } - - if (s->extract_extradata) { - ret = av_strlcatf(str, sizeof(str), "%sextract_extradata", ret ? "," : ""); - if (ret >= sizeof(str)) - return AVERROR_BUFFER_TOO_SMALL; - } - - ret = av_bsf_list_parse_str(str, &s->bsf); - if (ret < 0) - return ret; - - ret = avcodec_parameters_from_context(s->bsf->par_in, avctx); - if (ret < 0) - return ret; - s->bsf->time_base_in = avctx->time_base; - ret = av_bsf_init(s->bsf); - - return ret; -} - -static void copy_frame_to_buffer(AVCodecContext *avctx, const AVFrame *frame, - uint8_t *dst, size_t size) -{ - MediaCodecEncContext *s = avctx->priv_data; - uint8_t *dst_data[4] = {}; - int dst_linesize[4] = {}; - - if (avctx->pix_fmt == AV_PIX_FMT_YUV420P) { - dst_data[0] = dst; - dst_data[1] = dst + s->width * s->height; - dst_data[2] = dst_data[1] + s->width * s->height / 4; - - dst_linesize[0] = s->width; - dst_linesize[1] = dst_linesize[2] = s->width / 2; - } else if (avctx->pix_fmt == AV_PIX_FMT_NV12) { - dst_data[0] = dst; - dst_data[1] = dst + s->width * s->height; - - dst_linesize[0] = s->width; - dst_linesize[1] = s->width; - } else { - av_assert0(0); - } - - av_image_copy2(dst_data, dst_linesize, frame->data, frame->linesize, - avctx->pix_fmt, avctx->width, avctx->height); -} - - -static void on_error(FFAMediaCodec *codec, void *userdata, int error, - const char *detail) -{ - AVCodecContext *avctx = userdata; - MediaCodecEncContext *s = avctx->priv_data; - - if (error == AVERROR(EAGAIN)) - return; - - av_log(avctx, AV_LOG_ERROR, "On error, %s, %s\n", av_err2str(error), detail); - - ff_mutex_lock(&s->input_mutex); - ff_mutex_lock(&s->output_mutex); - s->encode_status = error; - ff_mutex_unlock(&s->output_mutex); - ff_mutex_unlock(&s->input_mutex); - - ff_cond_signal(&s->output_cond); - ff_cond_signal(&s->input_cond); -} - -static void on_input_available(FFAMediaCodec *codec, void *userdata, - int32_t index) -{ - AVCodecContext *avctx = userdata; - MediaCodecEncContext *s = avctx->priv_data; - int ret; - - ff_mutex_lock(&s->input_mutex); - ret = av_fifo_write(s->input_index, &index, 1); - if (ret >= 0) - ff_cond_signal(&s->input_cond); - ff_mutex_unlock(&s->input_mutex); - - if (ret < 0) - on_error(codec, userdata, ret, "av_fifo_write failed"); -} - -static void on_output_available(FFAMediaCodec *codec, void *userdata, - int32_t index, - FFAMediaCodecBufferInfo *out_info) -{ - AVCodecContext *avctx = userdata; - MediaCodecEncContext *s = avctx->priv_data; - MediaCodecAsyncOutput output = { - .index = index, - .buf_info = *out_info, - }; - int ret; - - ff_mutex_lock(&s->output_mutex); - ret = av_fifo_write(s->async_output, &output, 1); - if (ret >= 0) - ff_cond_signal(&s->output_cond); - ff_mutex_unlock(&s->output_mutex); - - if (ret < 0) - on_error(codec, userdata, ret, "av_fifo_write failed"); -} - -static void on_format_changed(FFAMediaCodec *codec, void *userdata, - FFAMediaFormat *format) -{ - mediacodec_dump_format(userdata, format); -} - -static int mediacodec_init_async_state(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - size_t fifo_size = 16; - - if (!s->async_mode) - return 0; - - ff_mutex_init(&s->input_mutex, NULL); - ff_cond_init(&s->input_cond, NULL); - - ff_mutex_init(&s->output_mutex, NULL); - ff_cond_init(&s->output_cond, NULL); - - s->input_index = av_fifo_alloc2(fifo_size, sizeof(int32_t), AV_FIFO_FLAG_AUTO_GROW); - s->async_output = av_fifo_alloc2(fifo_size, sizeof(MediaCodecAsyncOutput), - AV_FIFO_FLAG_AUTO_GROW); - - if (!s->input_index || !s->async_output) - return AVERROR(ENOMEM); - - return 0; -} - -static void mediacodec_uninit_async_state(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - - if (!s->async_mode) - return; - - ff_mutex_destroy(&s->input_mutex); - ff_cond_destroy(&s->input_cond); - - ff_mutex_destroy(&s->output_mutex); - ff_cond_destroy(&s->output_cond); - - av_fifo_freep2(&s->input_index); - av_fifo_freep2(&s->async_output); - - s->async_mode = 0; -} - -static int mediacodec_generate_extradata(AVCodecContext *avctx); - -static void mediacodec_set_qp_range(AVCodecContext *avctx, - FFAMediaFormat *format) -{ - MediaCodecEncContext *s = avctx->priv_data; - - // Handle common options in AVCodecContext first. - if (avctx->qmin >= 0) { - ff_AMediaFormat_setInt32(format, "video-qp-i-min", avctx->qmin); - ff_AMediaFormat_setInt32(format, "video-qp-p-min", avctx->qmin); - ff_AMediaFormat_setInt32(format, "video-qp-b-min", avctx->qmin); - } - - if (avctx->qmax >= 0) { - ff_AMediaFormat_setInt32(format, "video-qp-i-max", avctx->qmax); - ff_AMediaFormat_setInt32(format, "video-qp-p-max", avctx->qmax); - ff_AMediaFormat_setInt32(format, "video-qp-b-max", avctx->qmax); - } - - if (s->qp_i_min >= 0) - ff_AMediaFormat_setInt32(format, "video-qp-i-min", s->qp_i_min); - if (s->qp_p_min >= 0) - ff_AMediaFormat_setInt32(format, "video-qp-p-min", s->qp_p_min); - if (s->qp_b_min >= 0) - ff_AMediaFormat_setInt32(format, "video-qp-b-min", s->qp_b_min); - - if (s->qp_i_max >= 0) - ff_AMediaFormat_setInt32(format, "video-qp-i-max", s->qp_i_max); - if (s->qp_p_max >= 0) - ff_AMediaFormat_setInt32(format, "video-qp-p-max", s->qp_p_max); - if (s->qp_b_max >= 0) - ff_AMediaFormat_setInt32(format, "video-qp-b-max", s->qp_b_max); -} - -static av_cold int mediacodec_init(AVCodecContext *avctx) -{ - const char *codec_mime = NULL; - MediaCodecEncContext *s = avctx->priv_data; - FFAMediaFormat *format = NULL; - int ret; - int gop; - - // Init async state first, so we can do cleanup safely on error path. - ret = mediacodec_init_async_state(avctx); - if (ret < 0) - return ret; - - if (s->use_ndk_codec < 0) - s->use_ndk_codec = !av_jni_get_java_vm(avctx); - - switch (avctx->codec_id) { - case AV_CODEC_ID_H264: - codec_mime = "video/avc"; - break; - case AV_CODEC_ID_HEVC: - codec_mime = "video/hevc"; - break; - case AV_CODEC_ID_VP8: - codec_mime = "video/x-vnd.on2.vp8"; - break; - case AV_CODEC_ID_VP9: - codec_mime = "video/x-vnd.on2.vp9"; - break; - case AV_CODEC_ID_MPEG4: - codec_mime = "video/mp4v-es"; - break; - case AV_CODEC_ID_AV1: - codec_mime = "video/av01"; - break; - default: - av_assert0(0); - } - - if (s->name) - s->codec = ff_AMediaCodec_createCodecByName(s->name, s->use_ndk_codec); - else - s->codec = ff_AMediaCodec_createEncoderByType(codec_mime, s->use_ndk_codec); - if (!s->codec) { - av_log(avctx, AV_LOG_ERROR, "Failed to create encoder for type %s\n", - codec_mime); - return AVERROR_EXTERNAL; - } - - format = ff_AMediaFormat_new(s->use_ndk_codec); - if (!format) { - av_log(avctx, AV_LOG_ERROR, "Failed to create media format\n"); - return AVERROR_EXTERNAL; - } - - ff_AMediaFormat_setString(format, "mime", codec_mime); - // Workaround the alignment requirement of mediacodec. We can't do it - // silently for AV_PIX_FMT_MEDIACODEC. - if (avctx->pix_fmt != AV_PIX_FMT_MEDIACODEC && - (avctx->codec_id == AV_CODEC_ID_H264 || - avctx->codec_id == AV_CODEC_ID_HEVC)) { - s->width = FFALIGN(avctx->width, 16); - s->height = FFALIGN(avctx->height, 16); - } else { - s->width = avctx->width; - s->height = avctx->height; - if (s->width % 16 || s->height % 16) - av_log(avctx, AV_LOG_WARNING, - "Video size %dx%d isn't align to 16, it may have device compatibility issue\n", - s->width, s->height); - } - ff_AMediaFormat_setInt32(format, "width", s->width); - ff_AMediaFormat_setInt32(format, "height", s->height); - - if (avctx->pix_fmt == AV_PIX_FMT_MEDIACODEC) { - AVMediaCodecContext *user_ctx = avctx->hwaccel_context; - if (avctx->hw_device_ctx) { - AVHWDeviceContext *device_ctx = (AVHWDeviceContext*)(avctx->hw_device_ctx->data); - AVMediaCodecDeviceContext *dev_ctx; - - if (device_ctx->type != AV_HWDEVICE_TYPE_MEDIACODEC || !device_ctx->hwctx) { - ret = AVERROR(EINVAL); - goto bailout; - } - dev_ctx = device_ctx->hwctx; - s->window = ff_mediacodec_surface_ref(dev_ctx->surface, dev_ctx->native_window, avctx); - } - - if (!s->window && user_ctx && user_ctx->surface) - s->window = ff_mediacodec_surface_ref(user_ctx->surface, NULL, avctx); - - if (!s->window) { - ret = AVERROR(EINVAL); - av_log(avctx, AV_LOG_ERROR, "Missing hw_device_ctx or hwaccel_context for AV_PIX_FMT_MEDIACODEC\n"); - goto bailout; - } - /* Although there is a method ANativeWindow_toSurface() introduced in - * API level 26, it's easier and safe to always require a Surface for - * Java MediaCodec. - */ - if (!s->use_ndk_codec && !s->window->surface) { - ret = AVERROR(EINVAL); - av_log(avctx, AV_LOG_ERROR, "Missing jobject Surface for AV_PIX_FMT_MEDIACODEC. " - "Please note that Java MediaCodec doesn't work with ANativeWindow.\n"); - goto bailout; - } - } - - for (int i = 0; i < FF_ARRAY_ELEMS(color_formats); i++) { - if (avctx->pix_fmt == color_formats[i].pix_fmt) { - ff_AMediaFormat_setInt32(format, "color-format", - color_formats[i].color_format); - break; - } - } - - ret = ff_AMediaFormatColorRange_from_AVColorRange(avctx->color_range); - if (ret != COLOR_RANGE_UNSPECIFIED) - ff_AMediaFormat_setInt32(format, "color-range", ret); - ret = ff_AMediaFormatColorStandard_from_AVColorSpace(avctx->colorspace); - if (ret != COLOR_STANDARD_UNSPECIFIED) - ff_AMediaFormat_setInt32(format, "color-standard", ret); - ret = ff_AMediaFormatColorTransfer_from_AVColorTransfer(avctx->color_trc); - if (ret != COLOR_TRANSFER_UNSPECIFIED) - ff_AMediaFormat_setInt32(format, "color-transfer", ret); - - if (avctx->bit_rate) - ff_AMediaFormat_setInt32(format, "bitrate", avctx->bit_rate); - if (s->bitrate_mode >= 0) { - ff_AMediaFormat_setInt32(format, "bitrate-mode", s->bitrate_mode); - if (s->bitrate_mode == BITRATE_MODE_CQ && avctx->global_quality > 0) - ff_AMediaFormat_setInt32(format, "quality", avctx->global_quality); - } - mediacodec_set_qp_range(avctx, format); - - // frame-rate and i-frame-interval are required to configure codec - if (avctx->framerate.num >= avctx->framerate.den && avctx->framerate.den > 0) { - s->fps = avctx->framerate.num / avctx->framerate.den; - } else { - s->fps = 30; - av_log(avctx, AV_LOG_INFO, "Use %d as the default MediaFormat frame-rate\n", s->fps); - } - gop = round(avctx->gop_size / s->fps); - if (gop == 0) { - gop = 1; - av_log(avctx, AV_LOG_INFO, - "Use %d as the default MediaFormat i-frame-interval, " - "please set gop_size properly (>= fps)\n", gop); - } else { - av_log(avctx, AV_LOG_DEBUG, "Set i-frame-interval to %d\n", gop); - } - - ff_AMediaFormat_setInt32(format, "frame-rate", s->fps); - ff_AMediaFormat_setInt32(format, "i-frame-interval", gop); - - ret = ff_AMediaCodecProfile_getProfileFromAVCodecContext(avctx); - if (ret > 0) { - av_log(avctx, AV_LOG_DEBUG, "set profile to 0x%x\n", ret); - ff_AMediaFormat_setInt32(format, "profile", ret); - } - if (s->level > 0) { - av_log(avctx, AV_LOG_DEBUG, "set level to 0x%x\n", s->level); - ff_AMediaFormat_setInt32(format, "level", s->level); - } - if (avctx->max_b_frames > 0) { - if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { - av_log(avctx, AV_LOG_ERROR, - "Enabling B frames will produce packets with no DTS. " - "Use -strict experimental to use it anyway.\n"); - ret = AVERROR(EINVAL); - goto bailout; - } - ff_AMediaFormat_setInt32(format, "max-bframes", avctx->max_b_frames); - } - if (s->pts_as_dts == -1) - s->pts_as_dts = avctx->max_b_frames <= 0; - if (s->operating_rate > 0) - ff_AMediaFormat_setInt32(format, "operating-rate", s->operating_rate); - - ret = ff_AMediaCodec_getConfigureFlagEncode(s->codec); - ret = ff_AMediaCodec_configure(s->codec, format, s->window, NULL, ret); - if (ret) { - av_log(avctx, AV_LOG_ERROR, "MediaCodec configure failed, %s\n", av_err2str(ret)); - if (avctx->pix_fmt == AV_PIX_FMT_YUV420P) - av_log(avctx, AV_LOG_ERROR, "Please try -pix_fmt nv12, some devices don't " - "support yuv420p as encoder input format.\n"); - goto bailout; - } - - if (s->async_mode) { - FFAMediaCodecOnAsyncNotifyCallback cb = { - .onAsyncInputAvailable = on_input_available, - .onAsyncOutputAvailable = on_output_available, - .onAsyncFormatChanged = on_format_changed, - .onAsyncError = on_error, - }; - - ret = ff_AMediaCodec_setAsyncNotifyCallback(s->codec, &cb, avctx); - if (ret < 0) { - av_log(avctx, AV_LOG_WARNING, - "Try MediaCodec async mode failed, %s, switch to sync mode\n", - av_err2str(ret)); - mediacodec_uninit_async_state(avctx); - } - } - - ret = mediacodec_init_bsf(avctx); - if (ret) - goto bailout; - - mediacodec_output_format(avctx); - - s->frame = av_frame_alloc(); - if (!s->frame) { - ret = AVERROR(ENOMEM); - goto bailout; - } - - ret = ff_AMediaCodec_start(s->codec); - if (ret) { - av_log(avctx, AV_LOG_ERROR, "MediaCodec failed to start, %s\n", - av_err2str(ret)); - goto bailout; - } - - ret = mediacodec_generate_extradata(avctx); - -bailout: - if (format) - ff_AMediaFormat_delete(format); - return ret; -} - -static int mediacodec_get_output_index(AVCodecContext *avctx, ssize_t *index, - FFAMediaCodecBufferInfo *out_info) -{ - MediaCodecEncContext *s = avctx->priv_data; - FFAMediaCodec *codec = s->codec; - int64_t timeout_us = s->eof_sent ? OUTPUT_DEQUEUE_TIMEOUT_US : 0; - MediaCodecAsyncOutput output = { .index = -1 }; - int ret; - - if (!s->async_mode) { - *index = ff_AMediaCodec_dequeueOutputBuffer(codec, out_info, timeout_us); - return 0; - } - - ff_mutex_lock(&s->output_mutex); - - while (!s->encode_status) { - if (av_fifo_read(s->async_output, &output, 1) >= 0) - break; - - // Only wait after signalEndOfInputStream - if (s->eof_sent && !s->encode_status) - ff_cond_wait(&s->output_cond, &s->output_mutex); - else - break; - } - - ret = s->encode_status; - ff_mutex_unlock(&s->output_mutex); - - // Get output index success - if (output.index >= 0) { - *index = output.index; - *out_info = output.buf_info; - return 0; - } - - return ret ? ret : AVERROR(EAGAIN); -} - -static int mediacodec_receive(AVCodecContext *avctx, AVPacket *pkt) -{ - MediaCodecEncContext *s = avctx->priv_data; - FFAMediaCodec *codec = s->codec; - ssize_t index; - FFAMediaCodecBufferInfo out_info = {0}; - uint8_t *out_buf; - size_t out_size = 0; - int ret; - int extradata_size = 0; - - ret = mediacodec_get_output_index(avctx, &index, &out_info); - if (ret < 0) - return ret; - - if (ff_AMediaCodec_infoTryAgainLater(codec, index)) - return AVERROR(EAGAIN); - - if (ff_AMediaCodec_infoOutputFormatChanged(codec, index)) { - mediacodec_output_format(avctx); - return AVERROR(EAGAIN); - } - - if (ff_AMediaCodec_infoOutputBuffersChanged(codec, index)) { - ff_AMediaCodec_cleanOutputBuffers(codec); - return AVERROR(EAGAIN); - } - - if (index < 0) - return AVERROR_EXTERNAL; - - if (out_info.flags & ff_AMediaCodec_getBufferFlagEndOfStream(codec)) - return AVERROR_EOF; - - out_buf = ff_AMediaCodec_getOutputBuffer(codec, index, &out_size); - if (!out_buf) { - ret = AVERROR_EXTERNAL; - goto bailout; - } - - if (out_info.flags & ff_AMediaCodec_getBufferFlagCodecConfig(codec)) { - if (avctx->codec_id == AV_CODEC_ID_AV1) { - // Skip AV1CodecConfigurationRecord without configOBUs - if (out_info.size <= 4) { - ff_AMediaCodec_releaseOutputBuffer(codec, index, false); - return mediacodec_receive(avctx, pkt); - } - out_info.size -= 4; - out_info.offset += 4; - } - - ret = av_reallocp(&s->extradata, out_info.size); - if (ret) - goto bailout; - - s->extradata_size = out_info.size; - memcpy(s->extradata, out_buf + out_info.offset, out_info.size); - ff_AMediaCodec_releaseOutputBuffer(codec, index, false); - // try immediately - return mediacodec_receive(avctx, pkt); - } - - ret = ff_get_encode_buffer(avctx, pkt, out_info.size + s->extradata_size, 0); - if (ret < 0) - goto bailout; - - if (s->extradata_size) { - extradata_size = s->extradata_size; - s->extradata_size = 0; - memcpy(pkt->data, s->extradata, extradata_size); - } - memcpy(pkt->data + extradata_size, out_buf + out_info.offset, out_info.size); - pkt->pts = av_rescale_q(out_info.presentationTimeUs, AV_TIME_BASE_Q, avctx->time_base); - if (s->pts_as_dts) - pkt->dts = pkt->pts; - if (out_info.flags & ff_AMediaCodec_getBufferFlagKeyFrame(codec)) - pkt->flags |= AV_PKT_FLAG_KEY; - ret = 0; - - av_log(avctx, AV_LOG_TRACE, "receive packet pts %" PRId64 " dts %" PRId64 - " flags %d extradata %d\n", - pkt->pts, pkt->dts, pkt->flags, extradata_size); - -bailout: - ff_AMediaCodec_releaseOutputBuffer(codec, index, false); - return ret; -} - -static int mediacodec_get_input_index(AVCodecContext *avctx, ssize_t *index) -{ - MediaCodecEncContext *s = avctx->priv_data; - FFAMediaCodec *codec = s->codec; - int ret = 0; - int32_t n; - - if (!s->async_mode) { - *index = ff_AMediaCodec_dequeueInputBuffer(codec, INPUT_DEQUEUE_TIMEOUT_US); - return 0; - } - - ff_mutex_lock(&s->input_mutex); - - n = -1; - while (n < 0 && !s->encode_status) { - if (av_fifo_can_read(s->input_index) > 0) { - av_fifo_read(s->input_index, &n, 1); - break; - } - - if (n < 0 && !s->encode_status) - ff_cond_wait(&s->input_cond, &s->input_mutex); - } - - ret = s->encode_status; - *index = n; - ff_mutex_unlock(&s->input_mutex); - - return ret; -} - - -static int mediacodec_send(AVCodecContext *avctx, - const AVFrame *frame) { - MediaCodecEncContext *s = avctx->priv_data; - FFAMediaCodec *codec = s->codec; - ssize_t index; - uint8_t *input_buf = NULL; - size_t input_size = 0; - int64_t pts = 0; - uint32_t flags = 0; - int ret; - - if (s->eof_sent) - return 0; - - if (s->window) { - if (!frame) { - s->eof_sent = 1; - return ff_AMediaCodec_signalEndOfInputStream(codec); - } - - if (frame->data[3]) - av_mediacodec_release_buffer((AVMediaCodecBuffer *)frame->data[3], 1); - return 0; - } - - ret = mediacodec_get_input_index(avctx, &index); - if (ret < 0) - return ret; - - if (ff_AMediaCodec_infoTryAgainLater(codec, index)) - return AVERROR(EAGAIN); - - if (index < 0) { - av_log(avctx, AV_LOG_ERROR, "dequeue input buffer failed, %zd", index); - return AVERROR_EXTERNAL; - } - - if (frame) { - input_buf = ff_AMediaCodec_getInputBuffer(codec, index, &input_size); - copy_frame_to_buffer(avctx, frame, input_buf, input_size); - - pts = av_rescale_q(frame->pts, avctx->time_base, AV_TIME_BASE_Q); - - if (frame->pict_type == AV_PICTURE_TYPE_I) { - FFAMediaFormat *format = ff_AMediaFormat_new(s->use_ndk_codec); - if (format) { - ff_AMediaFormat_setInt32(format, "request-sync", 0); - ff_AMediaCodec_setParameters(codec, format); - ff_AMediaFormat_delete(format); - } - } - } else { - flags |= ff_AMediaCodec_getBufferFlagEndOfStream(codec); - s->eof_sent = 1; - } - - ff_AMediaCodec_queueInputBuffer(codec, index, 0, input_size, pts, flags); - return 0; -} - -static int mediacodec_encode(AVCodecContext *avctx, AVPacket *pkt) -{ - MediaCodecEncContext *s = avctx->priv_data; - int ret; - - // Return on three case: - // 1. Serious error - // 2. Got a packet success - // 3. No AVFrame is available yet (don't return if get_frame return EOF) - while (1) { - if (s->bsf) { - ret = av_bsf_receive_packet(s->bsf, pkt); - if (!ret) - return 0; - if (ret != AVERROR(EAGAIN)) - return ret; - } - - ret = mediacodec_receive(avctx, pkt); - if (s->bsf) { - if (!ret || ret == AVERROR_EOF) - ret = av_bsf_send_packet(s->bsf, pkt); - } else { - if (!ret) - return 0; - } - - if (ret < 0 && ret != AVERROR(EAGAIN)) - return ret; - - if (!s->frame->buf[0]) { - ret = ff_encode_get_frame(avctx, s->frame); - if (ret && ret != AVERROR_EOF) - return ret; - } - - ret = mediacodec_send(avctx, s->frame->buf[0] ? s->frame : NULL); - if (!ret) - av_frame_unref(s->frame); - else if (ret != AVERROR(EAGAIN)) - return ret; - } - - return 0; -} - -static int mediacodec_send_dummy_frame(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - int ret; - - s->frame->width = avctx->width; - s->frame->height = avctx->height; - s->frame->format = avctx->pix_fmt; - s->frame->pts = 0; - - ret = av_frame_get_buffer(s->frame, 0); - if (ret < 0) - return ret; - - do { - ret = mediacodec_send(avctx, s->frame); - } while (ret == AVERROR(EAGAIN)); - av_frame_unref(s->frame); - - if (ret < 0) - return ret; - - ret = mediacodec_send(avctx, NULL); - if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Flush failed: %s\n", av_err2str(ret)); - return ret; - } - - return 0; -} - -static int mediacodec_receive_dummy_pkt(AVCodecContext *avctx, AVPacket *pkt) -{ - MediaCodecEncContext *s = avctx->priv_data; - int ret; - - do { - ret = mediacodec_receive(avctx, pkt); - } while (ret == AVERROR(EAGAIN)); - - if (ret < 0) - return ret; - - do { - ret = av_bsf_send_packet(s->bsf, pkt); - if (ret < 0) - return ret; - ret = av_bsf_receive_packet(s->bsf, pkt); - } while (ret == AVERROR(EAGAIN)); - - return ret; -} - -static int mediacodec_generate_extradata(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - AVPacket *pkt = NULL; - int ret; - size_t side_size; - uint8_t *side; - - if (!(avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER)) - return 0; - - // Send dummy frame and receive a packet doesn't work in async mode - if (s->async_mode || !s->extract_extradata) { - av_log(avctx, AV_LOG_WARNING, - "Mediacodec encoder doesn't support AV_CODEC_FLAG_GLOBAL_HEADER. " - "Use extract_extradata bsf when necessary.\n"); - return 0; - } - - pkt = av_packet_alloc(); - if (!pkt) - return AVERROR(ENOMEM); - - ret = mediacodec_send_dummy_frame(avctx); - if (ret < 0) - goto bailout; - ret = mediacodec_receive_dummy_pkt(avctx, pkt); - if (ret < 0) - goto bailout; - - side = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_size); - if (side && side_size > 0) { - avctx->extradata = av_mallocz(side_size + AV_INPUT_BUFFER_PADDING_SIZE); - if (!avctx->extradata) { - ret = AVERROR(ENOMEM); - goto bailout; - } - - memcpy(avctx->extradata, side, side_size); - avctx->extradata_size = side_size; - } - -bailout: - if (s->eof_sent) { - s->eof_sent = 0; - ff_AMediaCodec_flush(s->codec); - } - av_bsf_flush(s->bsf); - av_packet_free(&pkt); - return ret; -} - -static av_cold int mediacodec_close(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - if (s->codec) { - ff_AMediaCodec_stop(s->codec); - ff_AMediaCodec_delete(s->codec); - s->codec = NULL; - } - - if (s->window) { - ff_mediacodec_surface_unref(s->window, avctx); - s->window = NULL; - } - - av_bsf_free(&s->bsf); - av_frame_free(&s->frame); - - mediacodec_uninit_async_state(avctx); - - return 0; -} - -static av_cold void mediacodec_flush(AVCodecContext *avctx) -{ - MediaCodecEncContext *s = avctx->priv_data; - if (s->bsf) - av_bsf_flush(s->bsf); - av_frame_unref(s->frame); - ff_AMediaCodec_flush(s->codec); -} - -static const AVCodecHWConfigInternal *const mediacodec_hw_configs[] = { - &(const AVCodecHWConfigInternal) { - .public = { - .pix_fmt = AV_PIX_FMT_MEDIACODEC, - .methods = AV_CODEC_HW_CONFIG_METHOD_AD_HOC | - AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX, - .device_type = AV_HWDEVICE_TYPE_MEDIACODEC, - }, - .hwaccel = NULL, - }, - NULL -}; - -static const FFCodecDefault mediacodec_defaults[] = { - {"qmin", "-1"}, - {"qmax", "-1"}, - {NULL}, -}; - -#define OFFSET(x) offsetof(MediaCodecEncContext, x) -#define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM -#define COMMON_OPTION \ - { "ndk_codec", "Use MediaCodec from NDK", \ - OFFSET(use_ndk_codec), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE }, \ - { "ndk_async", "Try NDK MediaCodec in async mode", \ - OFFSET(async_mode), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VE }, \ - { "codec_name", "Select codec by name", \ - OFFSET(name), AV_OPT_TYPE_STRING, {0}, 0, 0, VE }, \ - { "bitrate_mode", "Bitrate control method", \ - OFFSET(bitrate_mode), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE, .unit = "bitrate_mode" }, \ - { "cq", "Constant quality mode", \ - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CQ}, 0, 0, VE, .unit = "bitrate_mode" }, \ - { "vbr", "Variable bitrate mode", \ - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_VBR}, 0, 0, VE, .unit = "bitrate_mode" }, \ - { "cbr", "Constant bitrate mode", \ - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CBR}, 0, 0, VE, .unit = "bitrate_mode" }, \ - { "cbr_fd", "Constant bitrate mode with frame drops", \ - 0, AV_OPT_TYPE_CONST, {.i64 = BITRATE_MODE_CBR_FD}, 0, 0, VE, .unit = "bitrate_mode" }, \ - { "pts_as_dts", "Use PTS as DTS. It is enabled automatically if avctx max_b_frames <= 0, " \ - "since most of Android devices don't output B frames by default.", \ - OFFSET(pts_as_dts), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE }, \ - { "operating_rate", "The desired operating rate that the codec will need to operate at, zero for unspecified", \ - OFFSET(operating_rate), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE }, \ - { "qp_i_min", "minimum quantization parameter for I frame", \ - OFFSET(qp_i_min), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE }, \ - { "qp_p_min", "minimum quantization parameter for P frame", \ - OFFSET(qp_p_min), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE }, \ - { "qp_b_min", "minimum quantization parameter for B frame", \ - OFFSET(qp_b_min), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE }, \ - { "qp_i_max", "maximum quantization parameter for I frame", \ - OFFSET(qp_i_max), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE }, \ - { "qp_p_max", "maximum quantization parameter for P frame", \ - OFFSET(qp_p_max), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE }, \ - { "qp_b_max", "maximum quantization parameter for B frame", \ - OFFSET(qp_b_max), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VE }, \ - - -#define MEDIACODEC_ENCODER_CLASS(name) \ -static const AVClass name ## _mediacodec_class = { \ - .class_name = #name "_mediacodec", \ - .item_name = av_default_item_name, \ - .option = name ## _options, \ - .version = LIBAVUTIL_VERSION_INT, \ -}; \ - -#define DECLARE_MEDIACODEC_ENCODER(short_name, long_name, codec_id) \ -MEDIACODEC_ENCODER_CLASS(short_name) \ -const FFCodec ff_ ## short_name ## _mediacodec_encoder = { \ - .p.name = #short_name "_mediacodec", \ - CODEC_LONG_NAME(long_name " Android MediaCodec encoder"), \ - .p.type = AVMEDIA_TYPE_VIDEO, \ - .p.id = codec_id, \ - .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | \ - AV_CODEC_CAP_HARDWARE | \ - AV_CODEC_CAP_ENCODER_FLUSH, \ - .priv_data_size = sizeof(MediaCodecEncContext), \ - CODEC_PIXFMTS_ARRAY(avc_pix_fmts), \ - .color_ranges = AVCOL_RANGE_MPEG | AVCOL_RANGE_JPEG, \ - .defaults = mediacodec_defaults, \ - .init = mediacodec_init, \ - FF_CODEC_RECEIVE_PACKET_CB(mediacodec_encode), \ - .close = mediacodec_close, \ - .flush = mediacodec_flush, \ - .p.priv_class = &short_name ## _mediacodec_class, \ - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, \ - .p.wrapper_name = "mediacodec", \ - .hw_configs = mediacodec_hw_configs, \ -}; \ - -#if CONFIG_H264_MEDIACODEC_ENCODER - -enum MediaCodecAvcLevel { - AVCLevel1 = 0x01, - AVCLevel1b = 0x02, - AVCLevel11 = 0x04, - AVCLevel12 = 0x08, - AVCLevel13 = 0x10, - AVCLevel2 = 0x20, - AVCLevel21 = 0x40, - AVCLevel22 = 0x80, - AVCLevel3 = 0x100, - AVCLevel31 = 0x200, - AVCLevel32 = 0x400, - AVCLevel4 = 0x800, - AVCLevel41 = 0x1000, - AVCLevel42 = 0x2000, - AVCLevel5 = 0x4000, - AVCLevel51 = 0x8000, - AVCLevel52 = 0x10000, - AVCLevel6 = 0x20000, - AVCLevel61 = 0x40000, - AVCLevel62 = 0x80000, -}; - -static const AVOption h264_options[] = { - COMMON_OPTION - - FF_AVCTX_PROFILE_OPTION("baseline", NULL, VIDEO, AV_PROFILE_H264_BASELINE) - FF_AVCTX_PROFILE_OPTION("constrained_baseline", NULL, VIDEO, AV_PROFILE_H264_CONSTRAINED_BASELINE) - FF_AVCTX_PROFILE_OPTION("main", NULL, VIDEO, AV_PROFILE_H264_MAIN) - FF_AVCTX_PROFILE_OPTION("extended", NULL, VIDEO, AV_PROFILE_H264_EXTENDED) - FF_AVCTX_PROFILE_OPTION("high", NULL, VIDEO, AV_PROFILE_H264_HIGH) - FF_AVCTX_PROFILE_OPTION("high10", NULL, VIDEO, AV_PROFILE_H264_HIGH_10) - FF_AVCTX_PROFILE_OPTION("high422", NULL, VIDEO, AV_PROFILE_H264_HIGH_422) - FF_AVCTX_PROFILE_OPTION("high444", NULL, VIDEO, AV_PROFILE_H264_HIGH_444) - - { "level", "Specify level", - OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, .unit = "level" }, - { "1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel1 }, 0, 0, VE, .unit = "level" }, - { "1b", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel1b }, 0, 0, VE, .unit = "level" }, - { "1.1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel11 }, 0, 0, VE, .unit = "level" }, - { "1.2", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel12 }, 0, 0, VE, .unit = "level" }, - { "1.3", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel13 }, 0, 0, VE, .unit = "level" }, - { "2", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel2 }, 0, 0, VE, .unit = "level" }, - { "2.1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel21 }, 0, 0, VE, .unit = "level" }, - { "2.2", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel22 }, 0, 0, VE, .unit = "level" }, - { "3", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel3 }, 0, 0, VE, .unit = "level" }, - { "3.1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel31 }, 0, 0, VE, .unit = "level" }, - { "3.2", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel32 }, 0, 0, VE, .unit = "level" }, - { "4", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel4 }, 0, 0, VE, .unit = "level" }, - { "4.1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel41 }, 0, 0, VE, .unit = "level" }, - { "4.2", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel42 }, 0, 0, VE, .unit = "level" }, - { "5", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel5 }, 0, 0, VE, .unit = "level" }, - { "5.1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel51 }, 0, 0, VE, .unit = "level" }, - { "5.2", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel52 }, 0, 0, VE, .unit = "level" }, - { "6.0", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel6 }, 0, 0, VE, .unit = "level" }, - { "6.1", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel61 }, 0, 0, VE, .unit = "level" }, - { "6.2", "", 0, AV_OPT_TYPE_CONST, { .i64 = AVCLevel62 }, 0, 0, VE, .unit = "level" }, - { NULL, } -}; - -DECLARE_MEDIACODEC_ENCODER(h264, "H.264", AV_CODEC_ID_H264) - -#endif // CONFIG_H264_MEDIACODEC_ENCODER - -#if CONFIG_HEVC_MEDIACODEC_ENCODER - -enum MediaCodecHevcLevel { - HEVCMainTierLevel1 = 0x1, - HEVCHighTierLevel1 = 0x2, - HEVCMainTierLevel2 = 0x4, - HEVCHighTierLevel2 = 0x8, - HEVCMainTierLevel21 = 0x10, - HEVCHighTierLevel21 = 0x20, - HEVCMainTierLevel3 = 0x40, - HEVCHighTierLevel3 = 0x80, - HEVCMainTierLevel31 = 0x100, - HEVCHighTierLevel31 = 0x200, - HEVCMainTierLevel4 = 0x400, - HEVCHighTierLevel4 = 0x800, - HEVCMainTierLevel41 = 0x1000, - HEVCHighTierLevel41 = 0x2000, - HEVCMainTierLevel5 = 0x4000, - HEVCHighTierLevel5 = 0x8000, - HEVCMainTierLevel51 = 0x10000, - HEVCHighTierLevel51 = 0x20000, - HEVCMainTierLevel52 = 0x40000, - HEVCHighTierLevel52 = 0x80000, - HEVCMainTierLevel6 = 0x100000, - HEVCHighTierLevel6 = 0x200000, - HEVCMainTierLevel61 = 0x400000, - HEVCHighTierLevel61 = 0x800000, - HEVCMainTierLevel62 = 0x1000000, - HEVCHighTierLevel62 = 0x2000000, -}; - -static const AVOption hevc_options[] = { - COMMON_OPTION - - FF_AVCTX_PROFILE_OPTION("main", NULL, VIDEO, AV_PROFILE_HEVC_MAIN) - FF_AVCTX_PROFILE_OPTION("main10", NULL, VIDEO, AV_PROFILE_HEVC_MAIN_10) - - { "level", "Specify tier and level", - OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, .unit = "level" }, - { "m1", "Main tier level 1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel1 }, 0, 0, VE, .unit = "level" }, - { "h1", "High tier level 1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel1 }, 0, 0, VE, .unit = "level" }, - { "m2", "Main tier level 2", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel2 }, 0, 0, VE, .unit = "level" }, - { "h2", "High tier level 2", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel2 }, 0, 0, VE, .unit = "level" }, - { "m2.1", "Main tier level 2.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel21 }, 0, 0, VE, .unit = "level" }, - { "h2.1", "High tier level 2.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel21 }, 0, 0, VE, .unit = "level" }, - { "m3", "Main tier level 3", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel3 }, 0, 0, VE, .unit = "level" }, - { "h3", "High tier level 3", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel3 }, 0, 0, VE, .unit = "level" }, - { "m3.1", "Main tier level 3.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel31 }, 0, 0, VE, .unit = "level" }, - { "h3.1", "High tier level 3.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel31 }, 0, 0, VE, .unit = "level" }, - { "m4", "Main tier level 4", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel4 }, 0, 0, VE, .unit = "level" }, - { "h4", "High tier level 4", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel4 }, 0, 0, VE, .unit = "level" }, - { "m4.1", "Main tier level 4.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel41 }, 0, 0, VE, .unit = "level" }, - { "h4.1", "High tier level 4.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel41 }, 0, 0, VE, .unit = "level" }, - { "m5", "Main tier level 5", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel5 }, 0, 0, VE, .unit = "level" }, - { "h5", "High tier level 5", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel5 }, 0, 0, VE, .unit = "level" }, - { "m5.1", "Main tier level 5.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel51 }, 0, 0, VE, .unit = "level" }, - { "h5.1", "High tier level 5.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel51 }, 0, 0, VE, .unit = "level" }, - { "m5.2", "Main tier level 5.2", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel52 }, 0, 0, VE, .unit = "level" }, - { "h5.2", "High tier level 5.2", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel52 }, 0, 0, VE, .unit = "level" }, - { "m6", "Main tier level 6", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel6 }, 0, 0, VE, .unit = "level" }, - { "h6", "High tier level 6", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel6 }, 0, 0, VE, .unit = "level" }, - { "m6.1", "Main tier level 6.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel61 }, 0, 0, VE, .unit = "level" }, - { "h6.1", "High tier level 6.1", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel61 }, 0, 0, VE, .unit = "level" }, - { "m6.2", "Main tier level 6.2", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCMainTierLevel62 }, 0, 0, VE, .unit = "level" }, - { "h6.2", "High tier level 6.2", - 0, AV_OPT_TYPE_CONST, { .i64 = HEVCHighTierLevel62 }, 0, 0, VE, .unit = "level" }, - { NULL, } -}; - -DECLARE_MEDIACODEC_ENCODER(hevc, "H.265", AV_CODEC_ID_HEVC) - -#endif // CONFIG_HEVC_MEDIACODEC_ENCODER - -#if CONFIG_VP8_MEDIACODEC_ENCODER - -enum MediaCodecVP8Level { - VP8Level_Version0 = 0x01, - VP8Level_Version1 = 0x02, - VP8Level_Version2 = 0x04, - VP8Level_Version3 = 0x08, -}; - -static const AVOption vp8_options[] = { - COMMON_OPTION - { "level", "Specify tier and level", - OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, .unit = "level" }, - { "V0", "Level Version 0", - 0, AV_OPT_TYPE_CONST, { .i64 = VP8Level_Version0 }, 0, 0, VE, .unit = "level" }, - { "V1", "Level Version 1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP8Level_Version1 }, 0, 0, VE, .unit = "level" }, - { "V2", "Level Version 2", - 0, AV_OPT_TYPE_CONST, { .i64 = VP8Level_Version2 }, 0, 0, VE, .unit = "level" }, - { "V3", "Level Version 3", - 0, AV_OPT_TYPE_CONST, { .i64 = VP8Level_Version3 }, 0, 0, VE, .unit = "level" }, - { NULL, } -}; - -DECLARE_MEDIACODEC_ENCODER(vp8, "VP8", AV_CODEC_ID_VP8) - -#endif // CONFIG_VP8_MEDIACODEC_ENCODER - -#if CONFIG_VP9_MEDIACODEC_ENCODER - -enum MediaCodecVP9Level { - VP9Level1 = 0x1, - VP9Level11 = 0x2, - VP9Level2 = 0x4, - VP9Level21 = 0x8, - VP9Level3 = 0x10, - VP9Level31 = 0x20, - VP9Level4 = 0x40, - VP9Level41 = 0x80, - VP9Level5 = 0x100, - VP9Level51 = 0x200, - VP9Level52 = 0x400, - VP9Level6 = 0x800, - VP9Level61 = 0x1000, - VP9Level62 = 0x2000, -}; - -static const AVOption vp9_options[] = { - COMMON_OPTION - - FF_AVCTX_PROFILE_OPTION("profile0", NULL, VIDEO, AV_PROFILE_VP9_0) - FF_AVCTX_PROFILE_OPTION("profile1", NULL, VIDEO, AV_PROFILE_VP9_1) - FF_AVCTX_PROFILE_OPTION("profile2", NULL, VIDEO, AV_PROFILE_VP9_2) - FF_AVCTX_PROFILE_OPTION("profile3", NULL, VIDEO, AV_PROFILE_VP9_3) - - { "level", "Specify tier and level", - OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, .unit = "level" }, - { "1", "Level 1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level1 }, 0, 0, VE, .unit = "level" }, - { "1.1", "Level 1.1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level11 }, 0, 0, VE, .unit = "level" }, - { "2", "Level 2", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level2 }, 0, 0, VE, .unit = "level" }, - { "2.1", "Level 2.1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level21 }, 0, 0, VE, .unit = "level" }, - { "3", "Level 3", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level3 }, 0, 0, VE, .unit = "level" }, - { "3.1", "Level 3.1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level31 }, 0, 0, VE, .unit = "level" }, - { "4", "Level 4", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level4 }, 0, 0, VE, .unit = "level" }, - { "4.1", "Level 4.1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level41 }, 0, 0, VE, .unit = "level" }, - { "5", "Level 5", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level5 }, 0, 0, VE, .unit = "level" }, - { "5.1", "Level 5.1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level51 }, 0, 0, VE, .unit = "level" }, - { "5.2", "Level 5.2", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level52 }, 0, 0, VE, .unit = "level" }, - { "6", "Level 6", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level6 }, 0, 0, VE, .unit = "level" }, - { "6.1", "Level 6.1", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level61 }, 0, 0, VE, .unit = "level" }, - { "6.2", "Level 6.2", - 0, AV_OPT_TYPE_CONST, { .i64 = VP9Level62 }, 0, 0, VE, .unit = "level" }, - { NULL, } -}; - -DECLARE_MEDIACODEC_ENCODER(vp9, "VP9", AV_CODEC_ID_VP9) - -#endif // CONFIG_VP9_MEDIACODEC_ENCODER - -#if CONFIG_MPEG4_MEDIACODEC_ENCODER - -enum MediaCodecMpeg4Level { - MPEG4Level0 = 0x01, - MPEG4Level0b = 0x02, - MPEG4Level1 = 0x04, - MPEG4Level2 = 0x08, - MPEG4Level3 = 0x10, - MPEG4Level3b = 0x18, - MPEG4Level4 = 0x20, - MPEG4Level4a = 0x40, - MPEG4Level5 = 0x80, - MPEG4Level6 = 0x100, -}; - -static const AVOption mpeg4_options[] = { - COMMON_OPTION - - FF_MPEG4_PROFILE_OPTS - - { "level", "Specify tier and level", - OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, .unit = "level" }, - { "0", "Level 0", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level0 }, 0, 0, VE, .unit = "level" }, - { "0b", "Level 0b", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level0b }, 0, 0, VE, .unit = "level" }, - { "1", "Level 1", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level1 }, 0, 0, VE, .unit = "level" }, - { "2", "Level 2", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level2 }, 0, 0, VE, .unit = "level" }, - { "3", "Level 3", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level3 }, 0, 0, VE, .unit = "level" }, - { "3b", "Level 3b", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level3b }, 0, 0, VE, .unit = "level" }, - { "4", "Level 4", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level4 }, 0, 0, VE, .unit = "level" }, - { "4a", "Level 4a", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level4a }, 0, 0, VE, .unit = "level" }, - { "5", "Level 5", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level5 }, 0, 0, VE, .unit = "level" }, - { "6", "Level 6", - 0, AV_OPT_TYPE_CONST, { .i64 = MPEG4Level6 }, 0, 0, VE, .unit = "level" }, - { NULL, } -}; - -DECLARE_MEDIACODEC_ENCODER(mpeg4, "MPEG-4", AV_CODEC_ID_MPEG4) - -#endif // CONFIG_MPEG4_MEDIACODEC_ENCODER - -#if CONFIG_AV1_MEDIACODEC_ENCODER - -enum MediaCodecAV1Level { - AV1Level2 = 0x1, - AV1Level21 = 0x2, - AV1Level22 = 0x4, - AV1Level23 = 0x8, - AV1Level3 = 0x10, - AV1Level31 = 0x20, - AV1Level32 = 0x40, - AV1Level33 = 0x80, - AV1Level4 = 0x100, - AV1Level41 = 0x200, - AV1Level42 = 0x400, - AV1Level43 = 0x800, - AV1Level5 = 0x1000, - AV1Level51 = 0x2000, - AV1Level52 = 0x4000, - AV1Level53 = 0x8000, - AV1Level6 = 0x10000, - AV1Level61 = 0x20000, - AV1Level62 = 0x40000, - AV1Level63 = 0x80000, - AV1Level7 = 0x100000, - AV1Level71 = 0x200000, - AV1Level72 = 0x400000, - AV1Level73 = 0x800000, -}; - -static const AVOption av1_options[] = { - COMMON_OPTION - - FF_AV1_PROFILE_OPTS - - { "level", "Specify tier and level", - OFFSET(level), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, VE, .unit = "level" }, - { "2", "Level 2", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level2 }, 0, 0, VE, .unit = "level" }, - { "2.1", "Level 2.1", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level21 }, 0, 0, VE, .unit = "level" }, - { "2.2", "Level 2.2", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level22 }, 0, 0, VE, .unit = "level" }, - { "2.3", "Level 2.3", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level23 }, 0, 0, VE, .unit = "level" }, - { "3", "Level 3", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level3 }, 0, 0, VE, .unit = "level" }, - { "3.1", "Level 3.1", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level31 }, 0, 0, VE, .unit = "level" }, - { "3.2", "Level 3.2", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level32 }, 0, 0, VE, .unit = "level" }, - { "3.3", "Level 3.3", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level33 }, 0, 0, VE, .unit = "level" }, - { "4", "Level 4", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level4 }, 0, 0, VE, .unit = "level" }, - { "4.1", "Level 4.1", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level41 }, 0, 0, VE, .unit = "level" }, - { "4.2", "Level 4.2", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level42 }, 0, 0, VE, .unit = "level" }, - { "4.3", "Level 4.3", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level43 }, 0, 0, VE, .unit = "level" }, - { "5", "Level 5", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level5 }, 0, 0, VE, .unit = "level" }, - { "5.1", "Level 5.1", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level51 }, 0, 0, VE, .unit = "level" }, - { "5.2", "Level 5.2", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level52 }, 0, 0, VE, .unit = "level" }, - { "5.3", "Level 5.3", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level53 }, 0, 0, VE, .unit = "level" }, - { "6", "Level 6", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level6 }, 0, 0, VE, .unit = "level" }, - { "6.1", "Level 6.1", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level61 }, 0, 0, VE, .unit = "level" }, - { "6.2", "Level 6.2", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level62 }, 0, 0, VE, .unit = "level" }, - { "6.3", "Level 6.3", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level63 }, 0, 0, VE, .unit = "level" }, - { "7", "Level 7", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level7 }, 0, 0, VE, .unit = "level" }, - { "7.1", "Level 7.1", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level71 }, 0, 0, VE, .unit = "level" }, - { "7.2", "Level 7.2", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level72 }, 0, 0, VE, .unit = "level" }, - { "7.3", "Level 7.3", - 0, AV_OPT_TYPE_CONST, { .i64 = AV1Level73 }, 0, 0, VE, .unit = "level" }, - { NULL, } -}; - -DECLARE_MEDIACODEC_ENCODER(av1, "AV1", AV_CODEC_ID_AV1) - -#endif // CONFIG_AV1_MEDIACODEC_ENCODER diff --git a/icecat/media/ffvpx/libavcodec/motion_est.h b/icecat/media/ffvpx/libavcodec/motion_est.h index 7e57a3a79b..12f7cd43ab 100644 --- a/icecat/media/ffvpx/libavcodec/motion_est.h +++ b/icecat/media/ffvpx/libavcodec/motion_est.h @@ -28,8 +28,7 @@ #include "me_cmp.h" #include "qpeldsp.h" -typedef struct MPVEncContext MPVEncContext; -typedef struct MPVMainEncContext MPVMainEncContext; +struct MpegEncContext; #if ARCH_IA64 // Limit static arrays to avoid gcc failing "short data segment overflowed" #define MAX_MV 1024 @@ -48,13 +47,14 @@ typedef struct MPVMainEncContext MPVMainEncContext; */ typedef struct MotionEstContext { AVCodecContext *avctx; - int motion_est; ///< ME algorithm int skip; ///< set if ME is skipped for the current MB int co_located_mv[4][2]; ///< mv from last P-frame for direct mode ME int direct_basis_mv[4][2]; uint8_t *scratchpad; /**< data area for the ME algo, so that * the ME does not need to malloc/free. */ uint8_t *temp; + uint32_t *map; ///< map to avoid duplicate evaluations + uint32_t *score_map; ///< map to store the scores unsigned map_generation; int pre_penalty_factor; int penalty_factor; /**< an estimate of the bits required to @@ -69,7 +69,6 @@ typedef struct MotionEstContext { int mb_flags; int pre_pass; ///< = 1 for the pre pass int dia_size; - int unrestricted_mv; ///< mv can point outside of the coded picture int xmin; int xmax; int ymin; @@ -99,42 +98,49 @@ typedef struct MotionEstContext { qpel_mc_func(*qpel_avg)[16]; const uint8_t (*mv_penalty)[MAX_DMV * 2 + 1]; ///< bit amount needed to encode a MV const uint8_t *current_mv_penalty; - int (*sub_motion_search)(MPVEncContext *s, + int (*sub_motion_search)(struct MpegEncContext *s, int *mx_ptr, int *my_ptr, int dmin, int src_index, int ref_index, int size, int h); - - uint32_t map[ME_MAP_SIZE]; ///< map to avoid duplicate evaluations - uint32_t score_map[ME_MAP_SIZE];///< map to store the scores } MotionEstContext; +static inline int ff_h263_round_chroma(int x) +{ + //FIXME static or not? + static const uint8_t h263_chroma_roundtab[16] = { + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, + }; + return h263_chroma_roundtab[x & 0xf] + (x >> 3); +} + /** * Performs one-time initialization of the MotionEstContext. */ int ff_me_init(MotionEstContext *c, struct AVCodecContext *avctx, const struct MECmpContext *mecc, int mpvenc); -void ff_me_init_pic(MPVEncContext *s); +void ff_me_init_pic(struct MpegEncContext *s); -void ff_estimate_p_frame_motion(MPVEncContext *s, int mb_x, int mb_y); -void ff_estimate_b_frame_motion(MPVEncContext *s, int mb_x, int mb_y); +void ff_estimate_p_frame_motion(struct MpegEncContext *s, int mb_x, int mb_y); +void ff_estimate_b_frame_motion(struct MpegEncContext *s, int mb_x, int mb_y); -int ff_pre_estimate_p_frame_motion(MPVEncContext *s, +int ff_pre_estimate_p_frame_motion(struct MpegEncContext *s, int mb_x, int mb_y); -int ff_epzs_motion_search(MPVEncContext *s, int *mx_ptr, int *my_ptr, +int ff_epzs_motion_search(struct MpegEncContext *s, int *mx_ptr, int *my_ptr, int P[10][2], int src_index, int ref_index, const int16_t (*last_mv)[2], int ref_mv_scale, int size, int h); -int ff_get_mb_score(MPVEncContext *s, int mx, int my, int src_index, +int ff_get_mb_score(struct MpegEncContext *s, int mx, int my, int src_index, int ref_index, int size, int h, int add_rate); -int ff_get_best_fcode(MPVMainEncContext *m, +int ff_get_best_fcode(struct MpegEncContext *s, const int16_t (*mv_table)[2], int type); -void ff_fix_long_p_mvs(MPVEncContext *s, int type); -void ff_fix_long_mvs(MPVEncContext *s, uint8_t *field_select_table, +void ff_fix_long_p_mvs(struct MpegEncContext *s, int type); +void ff_fix_long_mvs(struct MpegEncContext *s, uint8_t *field_select_table, int field_select, int16_t (*mv_table)[2], int f_code, int type, int truncate); diff --git a/icecat/media/ffvpx/libavcodec/moz.build b/icecat/media/ffvpx/libavcodec/moz.build index bda9a1e888..a7281e944c 100644 --- a/icecat/media/ffvpx/libavcodec/moz.build +++ b/icecat/media/ffvpx/libavcodec/moz.build @@ -21,8 +21,6 @@ LOCAL_INCLUDES += ['/modules/fdlibm/inexact-math-override'] SharedLibrary('mozavcodec') SOURCES += [ - 'adts_header.c', - 'adts_parser.c', 'allcodecs.c', 'audio_frame_queue.c', 'avcodec.c', @@ -54,8 +52,6 @@ SOURCES += [ 'libvorbisdec.c', 'libvorbisenc.c', 'log2_tab.c', - 'mpeg4audio.c', - 'mpeg4audio_sample_rates.c', 'mpegaudio.c', 'mpegaudiodata.c', 'mpegaudiodec_common.c', @@ -93,7 +89,6 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: 'av1dec.c', 'cbs.c', 'cbs_av1.c', - 'cbs_vp9.c', 'golomb.c', 'h264pred.c', 'imgconvert.c', @@ -147,18 +142,6 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: USE_LIBS += [ 'mozva' ] - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - SOURCES += [ - 'fffjni.c', - 'ffjni.c', - 'mediacodec.c', - 'mediacodec_surface.c', - 'mediacodec_sw_buffer.c', - 'mediacodec_wrapper.c', - 'mediacodecdec.c', - 'mediacodecdec_common.c', - 'mediacodecenc.c', - ] elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows": SOURCES += [ 'd3d11va.c', @@ -167,11 +150,6 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: 'dxva2_vp9.c', ] -if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - EXPORTS.ffvpx += [ - "mediacodec.h" - ] - LOCAL_INCLUDES += [ '/media/libopus/include', '/media/libvorbis', @@ -194,7 +172,4 @@ USE_LIBS += [ if CONFIG['OS_TARGET'] != 'WINNT': OS_LIBS += ['m'] -if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - OS_LIBS += ['android', 'mediandk'] - include("../ffvpxcommon.mozbuild") diff --git a/icecat/media/ffvpx/libavcodec/mpeg4audio.c b/icecat/media/ffvpx/libavcodec/mpeg4audio.c deleted file mode 100644 index fbd2a8f811..0000000000 --- a/icecat/media/ffvpx/libavcodec/mpeg4audio.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * MPEG-4 Audio common code - * Copyright (c) 2008 Baptiste Coudurier - * Copyright (c) 2009 Alex Converse - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "get_bits.h" -#include "mpeg4audio.h" - -/** - * Parse MPEG-4 audio configuration for ALS object type. - * @param[in] gb bit reader context - * @param[in] c MPEG4AudioConfig structure to fill - * @return on success 0 is returned, otherwise a value < 0 - */ -static int parse_config_ALS(GetBitContext *gb, MPEG4AudioConfig *c, void *logctx) -{ - if (get_bits_left(gb) < 112) - return AVERROR_INVALIDDATA; - - if (get_bits_long(gb, 32) != MKBETAG('A','L','S','\0')) - return AVERROR_INVALIDDATA; - - // override AudioSpecificConfig channel configuration and sample rate - // which are buggy in old ALS conformance files - c->sample_rate = get_bits_long(gb, 32); - - if (c->sample_rate <= 0) { - av_log(logctx, AV_LOG_ERROR, "Invalid sample rate %d\n", c->sample_rate); - return AVERROR_INVALIDDATA; - } - - // skip number of samples - skip_bits_long(gb, 32); - - // read number of channels - c->chan_config = 0; - c->channels = get_bits(gb, 16) + 1; - - return 0; -} - -const uint8_t ff_mpeg4audio_channels[15] = { - 0, - 1, // mono (1/0) - 2, // stereo (2/0) - 3, // 3/0 - 4, // 3/1 - 5, // 3/2 - 6, // 3/2.1 - 8, // 5/2.1 - 0, - 0, - 0, - 7, // 3/3.1 - 8, // 3/2/2.1 - 24, // 3/3/3 - 5/2/3 - 3/0/0.2 - 8, // 3/2.1 - 2/0 -}; - -static inline int get_object_type(GetBitContext *gb) -{ - int object_type = get_bits(gb, 5); - if (object_type == AOT_ESCAPE) - object_type = 32 + get_bits(gb, 6); - return object_type; -} - -static inline int get_sample_rate(GetBitContext *gb, int *index) -{ - *index = get_bits(gb, 4); - return *index == 0x0f ? get_bits(gb, 24) : - ff_mpeg4audio_sample_rates[*index]; -} - -int ff_mpeg4audio_get_config_gb(MPEG4AudioConfig *c, GetBitContext *gb, - int sync_extension, void *logctx) -{ - int specific_config_bitindex, ret; - int start_bit_index = get_bits_count(gb); - c->object_type = get_object_type(gb); - c->sample_rate = get_sample_rate(gb, &c->sampling_index); - c->chan_config = get_bits(gb, 4); - if (c->chan_config < FF_ARRAY_ELEMS(ff_mpeg4audio_channels)) - c->channels = ff_mpeg4audio_channels[c->chan_config]; - else { - av_log(logctx, AV_LOG_ERROR, "Invalid chan_config %d\n", c->chan_config); - return AVERROR_INVALIDDATA; - } - c->sbr = -1; - c->ps = -1; - if (c->object_type == AOT_SBR || (c->object_type == AOT_PS && - // check for W6132 Annex YYYY draft MP3onMP4 - !(show_bits(gb, 3) & 0x03 && !(show_bits(gb, 9) & 0x3F)))) { - if (c->object_type == AOT_PS) - c->ps = 1; - c->ext_object_type = AOT_SBR; - c->sbr = 1; - c->ext_sample_rate = get_sample_rate(gb, &c->ext_sampling_index); - c->object_type = get_object_type(gb); - if (c->object_type == AOT_ER_BSAC) - c->ext_chan_config = get_bits(gb, 4); - } else { - c->ext_object_type = AOT_NULL; - c->ext_sample_rate = 0; - } - specific_config_bitindex = get_bits_count(gb); - - if (c->object_type == AOT_ALS) { - skip_bits(gb, 5); - if (show_bits(gb, 24) != MKBETAG('\0','A','L','S')) - skip_bits(gb, 24); - - specific_config_bitindex = get_bits_count(gb); - - ret = parse_config_ALS(gb, c, logctx); - if (ret < 0) - return ret; - } - - if (c->ext_object_type != AOT_SBR && sync_extension) { - while (get_bits_left(gb) > 15) { - if (show_bits(gb, 11) == 0x2b7) { // sync extension - get_bits(gb, 11); - c->ext_object_type = get_object_type(gb); - if (c->ext_object_type == AOT_SBR && (c->sbr = get_bits1(gb)) == 1) { - c->ext_sample_rate = get_sample_rate(gb, &c->ext_sampling_index); - if (c->ext_sample_rate == c->sample_rate) - c->sbr = -1; - } - if (get_bits_left(gb) > 11 && get_bits(gb, 11) == 0x548) - c->ps = get_bits1(gb); - break; - } else - get_bits1(gb); // skip 1 bit - } - } - - //PS requires SBR - if (!c->sbr) - c->ps = 0; - //Limit implicit PS to the HE-AACv2 Profile - if ((c->ps == -1 && c->object_type != AOT_AAC_LC) || c->channels & ~0x01) - c->ps = 0; - - return specific_config_bitindex - start_bit_index; -} - -int avpriv_mpeg4audio_get_config2(MPEG4AudioConfig *c, const uint8_t *buf, - int size, int sync_extension, void *logctx) -{ - GetBitContext gb; - int ret; - - if (size <= 0) - return AVERROR_INVALIDDATA; - - ret = init_get_bits8(&gb, buf, size); - if (ret < 0) - return ret; - - return ff_mpeg4audio_get_config_gb(c, &gb, sync_extension, logctx); -} diff --git a/icecat/media/ffvpx/libavcodec/mpeg4audio.h b/icecat/media/ffvpx/libavcodec/mpeg4audio.h deleted file mode 100644 index 0819e48a42..0000000000 --- a/icecat/media/ffvpx/libavcodec/mpeg4audio.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * MPEG-4 Audio common header - * Copyright (c) 2008 Baptiste Coudurier - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MPEG4AUDIO_H -#define AVCODEC_MPEG4AUDIO_H - -#include - -#include "get_bits.h" - -typedef struct MPEG4AudioConfig { - int object_type; - int sampling_index; - int sample_rate; - int chan_config; - int sbr; ///< -1 implicit, 1 presence - int ext_object_type; - int ext_sampling_index; - int ext_sample_rate; - int ext_chan_config; - int channels; - int ps; ///< -1 implicit, 1 presence - int frame_length_short; -} MPEG4AudioConfig; - -extern const int ff_mpeg4audio_sample_rates[16]; -extern const uint8_t ff_mpeg4audio_channels[15]; - -/** - * Parse MPEG-4 systems extradata from a potentially unaligned GetBitContext to retrieve audio configuration. - * @param[in] c MPEG4AudioConfig structure to fill. - * @param[in] gb Extradata from container. - * @param[in] sync_extension look for a sync extension after config if true. - * @param[in] logctx opaque struct starting with an AVClass element, used for logging. - * @return negative AVERROR code on error, on success AudioSpecificConfig bit index in extradata. - */ -int ff_mpeg4audio_get_config_gb(MPEG4AudioConfig *c, GetBitContext *gb, - int sync_extension, void *logctx); - -/** - * Parse MPEG-4 systems extradata from a raw buffer to retrieve audio configuration. - * @param[in] c MPEG4AudioConfig structure to fill. - * @param[in] buf Extradata from container. - * @param[in] size Extradata size in bytes. - * @param[in] sync_extension look for a sync extension after config if true. - * @param[in] logctx opaque struct starting with an AVClass element, used for logging. - * @return negative AVERROR code on error, AudioSpecificConfig bit index in extradata on success. - */ -int avpriv_mpeg4audio_get_config2(MPEG4AudioConfig *c, const uint8_t *buf, - int size, int sync_extension, void *logctx); - -enum AudioObjectType { - AOT_NULL = 0, - // Support? Name - AOT_AAC_MAIN = 1, ///< Y Main - AOT_AAC_LC = 2, ///< Y Low Complexity - AOT_AAC_SSR = 3, ///< N (code in SoC repo) Scalable Sample Rate - AOT_AAC_LTP = 4, ///< Y Long Term Prediction - AOT_SBR = 5, ///< Y Spectral Band Replication - AOT_AAC_SCALABLE = 6, ///< N Scalable - AOT_TWINVQ = 7, ///< N Twin Vector Quantizer - AOT_CELP = 8, ///< N Code Excited Linear Prediction - AOT_HVXC = 9, ///< N Harmonic Vector eXcitation Coding - - AOT_TTSI = 12, ///< N Text-To-Speech Interface - AOT_MAINSYNTH = 13, ///< N Main Synthesis - AOT_WAVESYNTH = 14, ///< N Wavetable Synthesis - AOT_MIDI = 15, ///< N General MIDI - AOT_SAFX = 16, ///< N Algorithmic Synthesis and Audio Effects - AOT_ER_AAC_LC = 17, ///< N Error Resilient Low Complexity - - AOT_ER_AAC_LTP = 19, ///< N Error Resilient Long Term Prediction - AOT_ER_AAC_SCALABLE = 20, ///< N Error Resilient Scalable - AOT_ER_TWINVQ = 21, ///< N Error Resilient Twin Vector Quantizer - AOT_ER_BSAC = 22, ///< N Error Resilient Bit-Sliced Arithmetic Coding - AOT_ER_AAC_LD = 23, ///< N Error Resilient Low Delay - AOT_ER_CELP = 24, ///< N Error Resilient Code Excited Linear Prediction - AOT_ER_HVXC = 25, ///< N Error Resilient Harmonic Vector eXcitation Coding - AOT_ER_HILN = 26, ///< N Error Resilient Harmonic and Individual Lines plus Noise - AOT_ER_PARAM = 27, ///< N Error Resilient Parametric - AOT_SSC = 28, ///< N SinuSoidal Coding - AOT_PS = 29, ///< N Parametric Stereo - AOT_SURROUND = 30, ///< N MPEG Surround - AOT_ESCAPE = 31, ///< Y Escape Value - AOT_L1 = 32, ///< Y Layer 1 - AOT_L2 = 33, ///< Y Layer 2 - AOT_L3 = 34, ///< Y Layer 3 - AOT_DST = 35, ///< N Direct Stream Transfer - AOT_ALS = 36, ///< Y Audio LosslesS - AOT_SLS = 37, ///< N Scalable LosslesS - AOT_SLS_NON_CORE = 38, ///< N Scalable LosslesS (non core) - AOT_ER_AAC_ELD = 39, ///< N Error Resilient Enhanced Low Delay - AOT_SMR_SIMPLE = 40, ///< N Symbolic Music Representation Simple - AOT_SMR_MAIN = 41, ///< N Symbolic Music Representation Main - AOT_USAC = 42, ///< Y Unified Speech and Audio Coding - AOT_SAOC = 43, ///< N Spatial Audio Object Coding - AOT_LD_SURROUND = 44, ///< N Low Delay MPEG Surround -}; - -#define MAX_PCE_SIZE 320 /// 16; bits -= 16) - ff_pce_copy_bits(pb, gb, 16); - if (bits) - ff_pce_copy_bits(pb, gb, bits); - align_put_bits(pb); - align_get_bits(gb); - comment_size = ff_pce_copy_bits(pb, gb, 8); - for (; comment_size > 0; comment_size--) - ff_pce_copy_bits(pb, gb, 8); - - return put_bits_count(pb) - offset; -} - -#endif /* AVCODEC_MPEG4AUDIO_COPY_PCE_H */ diff --git a/icecat/media/ffvpx/libavcodec/mpeg4audio_sample_rates.c b/icecat/media/ffvpx/libavcodec/mpeg4audio_sample_rates.c deleted file mode 100644 index b5ceb59c6e..0000000000 --- a/icecat/media/ffvpx/libavcodec/mpeg4audio_sample_rates.c +++ /dev/null @@ -1,23 +0,0 @@ -/* - * MPEG-4 Audio sample rates - * Copyright (c) 2008 Baptiste Coudurier - * Copyright (c) 2009 Alex Converse - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "mpeg4audio_sample_rates.h" diff --git a/icecat/media/ffvpx/libavcodec/mpeg4audio_sample_rates.h b/icecat/media/ffvpx/libavcodec/mpeg4audio_sample_rates.h deleted file mode 100644 index a847a97994..0000000000 --- a/icecat/media/ffvpx/libavcodec/mpeg4audio_sample_rates.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * MPEG-4 Audio sample rates - * Copyright (c) 2008 Baptiste Coudurier - * Copyright (c) 2009 Alex Converse - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_MPEG4AUDIO_SAMPLE_RATES_H -#define AVCODEC_MPEG4AUDIO_SAMPLE_RATES_H - -// This table contains only 13 real elements and is padded with zeroes. -// It is used by the AAC encoder as sample rate table, so the encoder -// needs to actually support all of these rates and it needs to have -// a trailing zero. -const int ff_mpeg4audio_sample_rates[16] = { - 96000, 88200, 64000, 48000, 44100, 32000, - 24000, 22050, 16000, 12000, 11025, 8000, 7350 -}; -#endif diff --git a/icecat/media/ffvpx/libavcodec/mpegaudiodec_fixed.c b/icecat/media/ffvpx/libavcodec/mpegaudiodec_fixed.c index 055e3c64e0..b5b6822a19 100644 --- a/icecat/media/ffvpx/libavcodec/mpegaudiodec_fixed.c +++ b/icecat/media/ffvpx/libavcodec/mpegaudiodec_fixed.c @@ -72,7 +72,9 @@ const FFCodec ff_mp1_decoder = { .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .flush = flush, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S16), + .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, + AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_NONE }, }; #endif #if CONFIG_MP2_DECODER @@ -87,7 +89,9 @@ const FFCodec ff_mp2_decoder = { .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .flush = flush, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S16), + .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, + AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_NONE }, }; #endif #if CONFIG_MP3_DECODER @@ -102,7 +106,9 @@ const FFCodec ff_mp3_decoder = { .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .flush = flush, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S16), + .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, + AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_NONE }, }; #endif #if CONFIG_MP3ADU_DECODER @@ -117,7 +123,9 @@ const FFCodec ff_mp3adu_decoder = { .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .flush = flush, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S16), + .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, + AV_SAMPLE_FMT_S16, + AV_SAMPLE_FMT_NONE }, }; #endif #if CONFIG_MP3ON4_DECODER @@ -133,7 +141,8 @@ const FFCodec ff_mp3on4_decoder = { .p.capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, .flush = flush_mp3on4, - CODEC_SAMPLEFMTS(AV_SAMPLE_FMT_S16P), + .p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, + AV_SAMPLE_FMT_NONE }, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; #endif diff --git a/icecat/media/ffvpx/libavcodec/mpegaudiodec_template.c b/icecat/media/ffvpx/libavcodec/mpegaudiodec_template.c index 08b79312c6..c73b1e0054 100644 --- a/icecat/media/ffvpx/libavcodec/mpegaudiodec_template.c +++ b/icecat/media/ffvpx/libavcodec/mpegaudiodec_template.c @@ -280,9 +280,10 @@ static av_cold void decode_init_static(void) ff_mpegaudiodec_common_init_static(); } -static av_cold int decode_ctx_init(AVCodecContext *avctx, MPADecodeContext *s) +static av_cold int decode_init(AVCodecContext * avctx) { static AVOnce init_static_once = AV_ONCE_INIT; + MPADecodeContext *s = avctx->priv_data; s->avctx = avctx; @@ -314,11 +315,6 @@ static av_cold int decode_ctx_init(AVCodecContext *avctx, MPADecodeContext *s) return 0; } -static av_cold int decode_init(AVCodecContext *avctx) -{ - return decode_ctx_init(avctx, avctx->priv_data); -} - #define C3 FIXHR(0.86602540378443864676/2) #define C4 FIXHR(0.70710678118654752439/2) //0.5 / cos(pi*(9)/36) #define C5 FIXHR(0.51763809020504152469/2) //0.5 / cos(pi*(5)/36) @@ -385,7 +381,7 @@ static int handle_crc(MPADecodeContext *s, int sec_len) crc_val = av_crc(crc_tab, crc_val, tmp_buf, 3); if (crc_val) { - av_log(s->avctx, AV_LOG_ERROR, "CRC mismatch %"PRIX32"!\n", crc_val); + av_log(s->avctx, AV_LOG_ERROR, "CRC mismatch %X!\n", crc_val); if (s->err_recognition & AV_EF_EXPLODE) return AVERROR_INVALIDDATA; } @@ -1608,8 +1604,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, if (ret >= 0) { s->frame->nb_samples = avctx->frame_size; *got_frame_ptr = 1; - if (avctx->codec_id != AV_CODEC_ID_AHX) - avctx->sample_rate = s->sample_rate; + avctx->sample_rate = s->sample_rate; //FIXME maybe move the other codec info stuff from above here too } else { av_log(avctx, AV_LOG_ERROR, "Error while decoding MPEG audio frame.\n"); @@ -1626,7 +1621,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, return buf_size + skipped; } -static av_cold void mp_flush(MPADecodeContext *ctx) +static void mp_flush(MPADecodeContext *ctx) { memset(ctx->synth_buf, 0, sizeof(ctx->synth_buf)); memset(ctx->mdct_buf, 0, sizeof(ctx->mdct_buf)); @@ -1634,7 +1629,7 @@ static av_cold void mp_flush(MPADecodeContext *ctx) ctx->dither_state = 0; } -static av_cold void flush(AVCodecContext *avctx) +static void flush(AVCodecContext *avctx) { mp_flush(avctx->priv_data); } @@ -1739,8 +1734,10 @@ static const int16_t chan_layout[8] = { static av_cold int decode_close_mp3on4(AVCodecContext * avctx) { MP3On4DecodeContext *s = avctx->priv_data; + int i; - av_freep(&s->mp3decctx[0]); + for (i = 0; i < s->frames; i++) + av_freep(&s->mp3decctx[i]); return 0; } @@ -1773,14 +1770,20 @@ static av_cold int decode_init_mp3on4(AVCodecContext * avctx) else s->syncword = 0xfff00000; - /* Init the first mp3 decoder in standard way, so that all tables get built + /* Init the first mp3 decoder in standard way, so that all tables get builded + * We replace avctx->priv_data with the context of the first decoder so that + * decode_init() does not have to be changed. * Other decoders will be initialized here copying data from the first context */ - // Allocate zeroed memory for the decoder contexts - s->mp3decctx[0] = av_calloc(s->frames, sizeof(*s->mp3decctx[0])); + // Allocate zeroed memory for the first decoder context + s->mp3decctx[0] = av_mallocz(sizeof(MPADecodeContext)); if (!s->mp3decctx[0]) return AVERROR(ENOMEM); - ret = decode_ctx_init(avctx, s->mp3decctx[0]); + // Put decoder context in place to make init_decode() happy + avctx->priv_data = s->mp3decctx[0]; + ret = decode_init(avctx); + // Restore mp3on4 context pointer + avctx->priv_data = s; if (ret < 0) return ret; s->mp3decctx[0]->adu_mode = 1; // Set adu mode @@ -1789,20 +1792,20 @@ static av_cold int decode_init_mp3on4(AVCodecContext * avctx) * Each frame is 1 or 2 channels - up to 5 frames allowed */ for (i = 1; i < s->frames; i++) { - s->mp3decctx[i] = s->mp3decctx[0] + i; + s->mp3decctx[i] = av_mallocz(sizeof(MPADecodeContext)); + if (!s->mp3decctx[i]) + return AVERROR(ENOMEM); s->mp3decctx[i]->adu_mode = 1; s->mp3decctx[i]->avctx = avctx; s->mp3decctx[i]->mpadsp = s->mp3decctx[0]->mpadsp; -#if USE_FLOATS s->mp3decctx[i]->butterflies_float = s->mp3decctx[0]->butterflies_float; -#endif } return 0; } -static av_cold void flush_mp3on4(AVCodecContext *avctx) +static void flush_mp3on4(AVCodecContext *avctx) { int i; MP3On4DecodeContext *s = avctx->priv_data; diff --git a/icecat/media/ffvpx/libavcodec/mpegaudiodsp_template.c b/icecat/media/ffvpx/libavcodec/mpegaudiodsp_template.c index 6e8b84664e..fbbd94e486 100644 --- a/icecat/media/ffvpx/libavcodec/mpegaudiodsp_template.c +++ b/icecat/media/ffvpx/libavcodec/mpegaudiodsp_template.c @@ -369,3 +369,4 @@ void RENAME(ff_imdct36_blocks)(INTFLOAT *out, INTFLOAT *buf, INTFLOAT *in, out++; } } + diff --git a/icecat/media/ffvpx/libavcodec/mpegutils.h b/icecat/media/ffvpx/libavcodec/mpegutils.h index 9967762a79..e4ce26d299 100644 --- a/icecat/media/ffvpx/libavcodec/mpegutils.h +++ b/icecat/media/ffvpx/libavcodec/mpegutils.h @@ -33,6 +33,7 @@ #define PICT_FRAME 3 #define MAX_MB_BYTES (30 * 16 * 16 * 3 / 8 + 120) +#define MAX_FCODE 7 /* MB types */ #define MB_TYPE_INTRA4x4 (1 << 0) diff --git a/icecat/media/ffvpx/libavcodec/mpegvideo.h b/icecat/media/ffvpx/libavcodec/mpegvideo.h index d448ac6b5a..eb71198190 100644 --- a/icecat/media/ffvpx/libavcodec/mpegvideo.h +++ b/icecat/media/ffvpx/libavcodec/mpegvideo.h @@ -30,18 +30,26 @@ #include "blockdsp.h" #include "error_resilience.h" +#include "fdctdsp.h" +#include "get_bits.h" #include "h264chroma.h" #include "h263dsp.h" #include "hpeldsp.h" #include "idctdsp.h" +#include "me_cmp.h" +#include "motion_est.h" #include "mpegpicture.h" +#include "mpegvideoencdsp.h" +#include "pixblockdsp.h" +#include "put_bits.h" +#include "ratecontrol.h" #include "qpeldsp.h" #include "videodsp.h" -#include "libavutil/mem_internal.h" - #define MAX_THREADS 32 +#define MAX_B_FRAMES 16 + /** * Scantable. */ @@ -59,8 +67,6 @@ enum OutputFormat { FMT_SPEEDHQ, }; -typedef struct MpegEncContext MPVContext; - /** * MpegEncContext. */ @@ -74,25 +80,47 @@ typedef struct MpegEncContext { /* scantables */ ScanTable inter_scantable; ///< if inter == intra then intra should be used to reduce the cache usage - ScanTable intra_scantable; /* WARNING: changes above this line require updates to hardcoded * offsets used in ASM. */ + ScanTable intra_scantable; + uint8_t permutated_intra_h_scantable[64]; + uint8_t permutated_intra_v_scantable[64]; + struct AVCodecContext *avctx; + /* The following pointer is intended for codecs sharing code + * between decoder and encoder and in need of a common context to do so. */ + void *private_ctx; /* the following parameters must be initialized before encoding */ int width, height;///< picture size. must be a multiple of 16 + int gop_size; + int intra_only; ///< if true, only intra pictures are generated + int64_t bit_rate; ///< wanted bit rate enum OutputFormat out_format; ///< output format int h263_pred; ///< use MPEG-4/H.263 ac/dc predictions + int pb_frame; ///< PB-frame mode (0 = none, 1 = base, 2 = improved) + +/* the following codec id fields are deprecated in favor of codec_id */ + int h263_plus; ///< H.263+ headers + int h263_flv; ///< use flv H.263 header enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ + int fixed_qscale; ///< fixed qscale if non zero int encoding; ///< true if we are encoding (vs decoding) + int max_b_frames; ///< max number of B-frames for encoding + int luma_elim_threshold; + int chroma_elim_threshold; int workaround_bugs; ///< workaround bugs in encoders which cannot be detected automatically int codec_tag; ///< internal codec_tag upper case converted from avctx codec_tag /* the following fields are managed internally by the encoder */ /* sequence parameters */ int context_initialized; + int input_picture_number; ///< used to set pic->display_picture_number, should not be used for/by anything else + int coded_picture_number; ///< used to set pic->coded_picture_number, should not be used for/by anything else + int picture_number; //FIXME remove, unclear definition + int picture_in_gop_number; ///< 0-> first pic in gop, ... int mb_width, mb_height; ///< number of MBs horizontally & vertically int mb_stride; ///< mb_width+1 used for some arrays to allow simple addressing of left & top MBs without sig11 int b8_stride; ///< 2*mb_width+1 used for some 8x8 block arrays to allow simple addressing @@ -101,16 +129,27 @@ typedef struct MpegEncContext { ptrdiff_t linesize; ///< line size, in bytes, may be different from width ptrdiff_t uvlinesize; ///< line size, for chroma in bytes, may be different from width struct AVRefStructPool *picture_pool; ///< Pool for MPVPictures + MPVPicture **input_picture;///< next pictures on display order for encoding + MPVPicture **reordered_input_picture; ///< pointer to the next pictures in coded order for encoding BufferPoolContext buffer_pools; + int64_t user_specified_pts; ///< last non-zero pts from AVFrame which was passed into avcodec_send_frame() + /** + * pts difference between the first and second input frame, used for + * calculating dts of the first frame when there's a delay */ + int64_t dts_delta; + /** + * reordered pts to be used as dts for the next output frame when there's + * a delay */ + int64_t reordered_pts; + + /** bit output */ + PutBitContext pb; + int start_mb_y; ///< start mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) int end_mb_y; ///< end mb_y of this thread (so current thread should process start_mb_y <= row < end_mb_y) - union { - struct MpegEncContext *thread_context[MAX_THREADS]; - struct Mpeg12SliceContext *mpeg12_contexts[MAX_THREADS]; - struct MPVEncContext *enc_contexts[MAX_THREADS]; - }; + struct MpegEncContext *thread_context[MAX_THREADS]; int slice_context_count; ///< number of used thread_contexts /** @@ -125,21 +164,29 @@ typedef struct MpegEncContext { */ MPVWorkPicture next_pic; + /** + * Reference to the source picture for encoding. + * note, linesize & data, might not match the source picture (for field pictures) + */ + AVFrame *new_pic; + /** * copy of the current picture structure. * note, linesize & data, might not match the current picture (for field pictures) */ MPVWorkPicture cur_pic; + int skipped_last_frame; + int last_dc[3]; ///< last DC values for MPEG-1 int16_t *dc_val_base; + int16_t *dc_val[3]; ///< used for MPEG-4 DC prediction, all 3 arrays must be continuous const uint8_t *y_dc_scale_table; ///< qscale -> y_dc_scale table const uint8_t *c_dc_scale_table; ///< qscale -> c_dc_scale table const uint8_t *chroma_qscale_table; ///< qscale -> chroma_qscale (H.263) uint8_t *coded_block_base; uint8_t *coded_block; ///< used for coded block pattern prediction (msmpeg4v3, wmv1) int16_t (*ac_val_base)[16]; - int16_t *dc_val; ///< used for H.263 AIC/MPEG-4 DC prediction and ER - int16_t (*ac_val)[16]; ///< used for H.263 AIC, MPEG-4 AC prediction + int16_t (*ac_val[3])[16]; ///< used for MPEG-4 AC prediction, all 3 arrays must be continuous int mb_skipped; ///< MUST BE SET only during DECODING uint8_t *mbskip_table; /**< used to avoid copy if macroblock skipped (for black regions for example) and used for B-frame encoding & decoding (contains skip table of next P-frame) */ @@ -151,19 +198,65 @@ typedef struct MpegEncContext { int qscale; ///< QP int chroma_qscale; ///< chroma QP - enum AVPictureType pict_type; ///< AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ... + unsigned int lambda; ///< Lagrange multiplier used in rate distortion + unsigned int lambda2; ///< (lambda*lambda) >> FF_LAMBDA_SHIFT + int *lambda_table; + int adaptive_quant; ///< use adaptive quantization + int dquant; ///< qscale difference to prev qscale + int pict_type; ///< AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ... + int vbv_delay; + int last_pict_type; //FIXME removes + int last_non_b_pict_type; ///< used for MPEG-4 gmc B-frames & ratecontrol int droppable; + int last_lambda_for[5]; ///< last lambda for a specific pict type + int skipdct; ///< skip dct and code zero residual + + /* motion compensation */ + int unrestricted_mv; ///< mv can point outside of the coded picture + int h263_long_vectors; ///< use horrible H.263v1 long vector mode BlockDSPContext bdsp; + FDCTDSPContext fdsp; H264ChromaContext h264chroma; HpelDSPContext hdsp; IDCTDSPContext idsp; + MpegvideoEncDSPContext mpvencdsp; + PixblockDSPContext pdsp; QpelDSPContext qdsp; VideoDSPContext vdsp; H263DSPContext h263dsp; + int f_code; ///< forward MV resolution + int b_code; ///< backward MV resolution for B-frames (MPEG-4) + int16_t (*p_mv_table_base)[2]; + int16_t (*b_forw_mv_table_base)[2]; + int16_t (*b_back_mv_table_base)[2]; + int16_t (*b_bidir_forw_mv_table_base)[2]; + int16_t (*b_bidir_back_mv_table_base)[2]; + int16_t (*b_direct_mv_table_base)[2]; int16_t (*p_field_mv_table_base)[2]; + int16_t (*b_field_mv_table_base)[2]; + int16_t (*p_mv_table)[2]; ///< MV table (1MV per MB) P-frame encoding + int16_t (*b_forw_mv_table)[2]; ///< MV table (1MV per MB) forward mode B-frame encoding + int16_t (*b_back_mv_table)[2]; ///< MV table (1MV per MB) backward mode B-frame encoding + int16_t (*b_bidir_forw_mv_table)[2]; ///< MV table (1MV per MB) bidir mode B-frame encoding + int16_t (*b_bidir_back_mv_table)[2]; ///< MV table (1MV per MB) bidir mode B-frame encoding + int16_t (*b_direct_mv_table)[2]; ///< MV table (1MV per MB) direct mode B-frame encoding int16_t (*p_field_mv_table[2][2])[2]; ///< MV table (2MV per MB) interlaced P-frame encoding + int16_t (*b_field_mv_table[2][2][2])[2];///< MV table (4MV per MB) interlaced B-frame encoding + uint8_t (*p_field_select_table[2]); ///< Only the first element is allocated + uint8_t (*b_field_select_table[2][2]); ///< Only the first element is allocated + /* The following fields are encoder-only */ + uint16_t *mb_var; ///< Table for MB variances + uint16_t *mc_mb_var; ///< Table for motion compensated MB variances + uint8_t *mb_mean; ///< Table for MB luminance + int64_t mb_var_sum; ///< sum of MB variance for current frame + int64_t mc_mb_var_sum; ///< motion compensated MB variance for current frame + uint64_t encoding_error[MPV_MAX_PLANES]; + + int motion_est; ///< ME algorithm + int me_penalty_compensation; + int me_pre; ///< prepass for motion estimation int mv_dir; #define MV_DIR_FORWARD 1 #define MV_DIR_BACKWARD 2 @@ -182,14 +275,19 @@ typedef struct MpegEncContext { int mv[2][4][2]; int field_select[2][2]; int last_mv[2][2][2]; ///< last MV, used for MV prediction in MPEG-1 & B-frame MPEG-4 + const uint8_t *fcode_tab; ///< smallest fcode needed for each MV int16_t direct_scale_mv[2][64]; ///< precomputed to avoid divisions in ff_mpeg4_set_direct_mv + MotionEstContext me; + int no_rounding; /**< apply no rounding to motion compensation (MPEG-4, msmpeg4, ...) for B-frames rounding mode is always 0 */ /* macroblock layer */ int mb_x, mb_y; + int mb_skip_run; int mb_intra; + uint16_t *mb_type; ///< Table for candidate MB types for encoding (defines in mpegvideoenc.h) int block_index[6]; ///< index to current MB in block based arrays with edges int block_wrap[6]; @@ -198,26 +296,85 @@ typedef struct MpegEncContext { int *mb_index2xy; ///< mb_index -> mb_x + mb_y*mb_stride /** matrix transmitted in the bitstream */ - DECLARE_ALIGNED(16, uint16_t, intra_matrix)[64]; - DECLARE_ALIGNED(16, uint16_t, chroma_intra_matrix)[64]; - DECLARE_ALIGNED(16, uint16_t, inter_matrix)[64]; - DECLARE_ALIGNED(16, uint16_t, chroma_inter_matrix)[64]; + uint16_t intra_matrix[64]; + uint16_t chroma_intra_matrix[64]; + uint16_t inter_matrix[64]; + uint16_t chroma_inter_matrix[64]; + + int intra_quant_bias; ///< bias for the quantizer + int inter_quant_bias; ///< bias for the quantizer + int min_qcoeff; ///< minimum encodable coefficient + int max_qcoeff; ///< maximum encodable coefficient + int ac_esc_length; ///< num of bits needed to encode the longest esc + uint8_t *intra_ac_vlc_length; + uint8_t *intra_ac_vlc_last_length; + uint8_t *intra_chroma_ac_vlc_length; + uint8_t *intra_chroma_ac_vlc_last_length; + uint8_t *inter_ac_vlc_length; + uint8_t *inter_ac_vlc_last_length; + uint8_t *luma_dc_vlc_length; + + int coded_score[12]; + + /** precomputed matrix (combine qscale and DCT renorm) */ + int (*q_intra_matrix)[64]; + int (*q_chroma_intra_matrix)[64]; + int (*q_inter_matrix)[64]; + /** identical to the above but for MMX & these are not permutated, second 64 entries are bias*/ + uint16_t (*q_intra_matrix16)[2][64]; + uint16_t (*q_chroma_intra_matrix16)[2][64]; + uint16_t (*q_inter_matrix16)[2][64]; + + /* noise reduction */ + int (*dct_error_sum)[64]; + int dct_count[2]; + uint16_t (*dct_offset)[64]; + + /* bit rate control */ + int64_t total_bits; + int frame_bits; ///< bits used for the current frame + int stuffing_bits; ///< bits used for stuffing + int next_lambda; ///< next lambda used for retrying to encode a frame + RateControlContext rc_context; ///< contains stuff only accessed in ratecontrol.c + + /* statistics, used for 2-pass encoding */ + int mv_bits; + int header_bits; + int i_tex_bits; + int p_tex_bits; + int i_count; + int misc_bits; ///< cbp, mb_type + int last_bits; ///< temp var used for calculating the above vars /* error concealment / resync */ int resync_mb_x; ///< x position of last resync marker int resync_mb_y; ///< y position of last resync marker - - /* H.261 specific */ - int mtype; + GetBitContext last_resync_gb; ///< used to search for the next resync marker + int mb_num_left; ///< number of MBs left in this video packet (for partitioned Slices only) /* H.263 specific */ + int gob_index; int obmc; ///< overlapped block motion compensation + int mb_info; ///< interval for outputting info about mb offsets as side data + int prev_mb_info, last_mb_info; + uint8_t *mb_info_ptr; + int mb_info_size; + int ehc_mode; /* H.263+ specific */ + int umvplus; ///< == H.263+ && unrestricted_mv int h263_aic_dir; ///< AIC direction: 0 = left, 1 = top + int h263_slice_structured; + int alt_inter_vlc; ///< alternative inter vlc + int modified_quant; + int loop_filter; + int custom_pcf; /* MPEG-4 specific */ int studio_profile; + int dct_precision; + ///< number of bits to represent the fractional part of time (encoder only) + int time_increment_bits; int last_time_base; int time_base; ///< time in seconds of last I,P,S Frame int64_t time; ///< time of current frame @@ -228,10 +385,37 @@ typedef struct MpegEncContext { uint16_t pb_field_time; ///< like above, just for interlaced int mcsel; int quarter_sample; ///< 1->qpel, 0->half pel ME/MC + int data_partitioning; ///< data partitioning flag from header + int partitioned_frame; ///< is current frame partitioned int low_delay; ///< no reordering needed / has no B-frames + PutBitContext tex_pb; ///< used for data partitioned VOPs + PutBitContext pb2; ///< used for data partitioned VOPs + int mpeg_quant; + int padding_bug_score; ///< used to detect the VERY common padding bug in MPEG-4 + + /* divx specific, used to workaround (many) bugs in divx5 */ + int divx_packed; + uint8_t *bitstream_buffer; //Divx 5.01 puts several frames in a single one, this is used to reorder them + int bitstream_buffer_size; + unsigned int allocated_bitstream_buffer_size; + + /* RV10 specific */ + int rv10_version; ///< RV10 version: 0 or 3 + int rv10_first_dc_coded[3]; + + /* MJPEG specific */ + struct MJpegContext *mjpeg_ctx; + int esc_pos; /* MSMPEG4 specific */ + int mv_table_index; + int rl_table_index; + int rl_chroma_table_index; + int dc_table_index; + int use_skip_mb_code; + int slice_height; ///< in macroblocks int first_slice_line; ///< used in MPEG-4 too to handle resync markers + int flipflop_rounding; enum { MSMP4_UNUSED, MSMP4_V1, @@ -241,9 +425,19 @@ typedef struct MpegEncContext { MSMP4_WMV2, MSMP4_VC1, ///< for VC1 (image), WMV3 (image) and MSS2. } msmpeg4_version; + int per_mb_rl_table; + int esc3_level_length; + int esc3_run_length; int inter_intra_pred; int mspel; + /* decompression specific */ + GetBitContext gb; + + /* MPEG-1 specific */ + int last_mv_dir; ///< last mv_dir, used for B-frame encoding + int vbv_delay_pos; ///< offset of vbv_delay in the bitstream + /* MPEG-2-specific - I wished not to have to support this mess. */ int progressive_sequence; int mpeg_f_code[2][2]; @@ -256,6 +450,7 @@ typedef struct MpegEncContext { int top_field_first; int concealment_motion_vectors; int q_scale_type; + int brd_scale; int intra_vlc_format; int alternate_scan; int repeat_first_field; @@ -272,21 +467,94 @@ typedef struct MpegEncContext { int interlaced_dct; int first_field; ///< is 1 for the first field of a field picture 0 otherwise - void (*dct_unquantize_intra)(const MPVContext *s, // unquantizer to use (MPEG-4 can use both) - int16_t *block/*align 16*/, int n, int qscale); - void (*dct_unquantize_inter)(const MPVContext *s, // unquantizer to use (MPEG-4 can use both) - int16_t *block/*align 16*/, int n, int qscale); + /* RTP specific */ + int rtp_mode; + int rtp_payload_size; + + uint8_t *ptr_lastgob; + + int16_t (*block)[64]; ///< points to one of the following blocks + int16_t (*blocks)[12][64]; // for HQ mode we need to keep the best block + int (*decode_mb)(struct MpegEncContext *s, int16_t block[12][64]); // used by some codecs to avoid a switch() + +#define SLICE_OK 0 +#define SLICE_ERROR -1 +#define SLICE_END -2 /// clipping, 1-> use a nice continuous function to limit qscale within qmin/qmax. + */ + float rc_qsquish; + float rc_qmod_amp; + int rc_qmod_freq; + float rc_initial_cplx; + float rc_buffer_aggressivity; + float border_masking; + int lmin, lmax; + int vbv_ignore_qmax; + + char *rc_eq; + + /* temp buffers for rate control */ + float *cplx_tab, *bits_tab; /* flag to indicate a reinitialization is required, e.g. after * a frame size change */ int context_reinit; - /// If set, ff_mpv_common_init() will allocate slice contexts of this size - unsigned slice_ctx_size; - ERContext er; + + int error_rate; + + /* temporary frames used by b_frame_strategy = 2 */ + AVFrame *tmp_frames[MAX_B_FRAMES + 2]; + int b_frame_strategy; + int b_sensitivity; + + /* frame skip options for encoding */ + int frame_skip_threshold; + int frame_skip_factor; + int frame_skip_exp; + int frame_skip_cmp; + me_cmp_func frame_skip_cmp_fn; + + int scenechange_threshold; + int noise_reduction; + + int intra_penalty; } MpegEncContext; + /** * Set the given MpegEncContext to common defaults (same for encoding * and decoding). The changed fields will not depend upon the prior @@ -295,6 +563,12 @@ typedef struct MpegEncContext { void ff_mpv_common_defaults(MpegEncContext *s); int ff_mpv_common_init(MpegEncContext *s); +void ff_mpv_common_init_arm(MpegEncContext *s); +void ff_mpv_common_init_axp(MpegEncContext *s); +void ff_mpv_common_init_neon(MpegEncContext *s); +void ff_mpv_common_init_ppc(MpegEncContext *s); +void ff_mpv_common_init_x86(MpegEncContext *s); +void ff_mpv_common_init_mips(MpegEncContext *s); /** * Initialize an MpegEncContext's thread contexts. Presumes that * slice_context_count is already set and that all the fields diff --git a/icecat/media/ffvpx/libavcodec/mpegvideoencdsp.h b/icecat/media/ffvpx/libavcodec/mpegvideoencdsp.h index 4d205e1f9a..6ec665677b 100644 --- a/icecat/media/ffvpx/libavcodec/mpegvideoencdsp.h +++ b/icecat/media/ffvpx/libavcodec/mpegvideoencdsp.h @@ -30,9 +30,6 @@ #define EDGE_BOTTOM 2 typedef struct MpegvideoEncDSPContext { - void (*denoise_dct)(int16_t block[64], int dct_error_sum[64], - const uint16_t dct_offset[64]); - int (*try_8x8basis)(const int16_t rem[64], const int16_t weight[64], const int16_t basis[64], int scale); void (*add_8x8basis)(int16_t rem[64], const int16_t basis[64], int scale); @@ -40,9 +37,8 @@ typedef struct MpegvideoEncDSPContext { int (*pix_sum)(const uint8_t *pix, ptrdiff_t line_size); int (*pix_norm1)(const uint8_t *pix, ptrdiff_t line_size); - void (*shrink[4])(uint8_t *restrict dst, ptrdiff_t dst_wrap, - const uint8_t *restrict src, ptrdiff_t src_wrap, - int width, int height); + void (*shrink[4])(uint8_t *dst, ptrdiff_t dst_wrap, const uint8_t *src, + ptrdiff_t src_wrap, int width, int height); void (*draw_edges)(uint8_t *buf, ptrdiff_t wrap, int width, int height, int w, int h, int sides); diff --git a/icecat/media/ffvpx/libavcodec/options.c b/icecat/media/ffvpx/libavcodec/options.c index 834beb5757..f60c41bdc3 100644 --- a/icecat/media/ffvpx/libavcodec/options.c +++ b/icecat/media/ffvpx/libavcodec/options.c @@ -69,7 +69,7 @@ static const AVClass *codec_child_class_iterate(void **iter) static AVClassCategory get_category(void *ptr) { AVCodecContext* avctx = ptr; - if (avctx->codec && ff_codec_is_decoder(avctx->codec)) + if (avctx->codec && av_codec_is_decoder(avctx->codec)) return AV_CLASS_CATEGORY_DECODER; else return AV_CLASS_CATEGORY_ENCODER; diff --git a/icecat/media/ffvpx/libavcodec/options_table.h b/icecat/media/ffvpx/libavcodec/options_table.h index 99e7002076..47da41b0ad 100644 --- a/icecat/media/ffvpx/libavcodec/options_table.h +++ b/icecat/media/ffvpx/libavcodec/options_table.h @@ -47,7 +47,7 @@ #define AV_CODEC_DEFAULT_BITRATE 200*1000 static const AVOption avcodec_options[] = { -{"b", "set bitrate (in bits/s)", OFFSET(bit_rate), AV_OPT_TYPE_INT64, {.i64 = AV_CODEC_DEFAULT_BITRATE }, 0, (double)INT64_MAX, A|V|E}, +{"b", "set bitrate (in bits/s)", OFFSET(bit_rate), AV_OPT_TYPE_INT64, {.i64 = AV_CODEC_DEFAULT_BITRATE }, 0, INT64_MAX, A|V|E}, {"ab", "set bitrate (in bits/s)", OFFSET(bit_rate), AV_OPT_TYPE_INT64, {.i64 = 128*1000 }, 0, INT_MAX, A|E}, {"bt", "Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate tolerance specifies how far " "ratecontrol is willing to deviate from the target average bitrate value. This is not related " @@ -74,6 +74,9 @@ static const AVOption avcodec_options[] = { {"ilme", "interlaced motion estimation", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_INTERLACED_ME }, INT_MIN, INT_MAX, V|E, .unit = "flags"}, {"cgop", "closed GOP", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_CLOSED_GOP }, INT_MIN, INT_MAX, V|E, .unit = "flags"}, {"output_corrupt", "Output even potentially corrupted frames", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_OUTPUT_CORRUPT }, INT_MIN, INT_MAX, V|D, .unit = "flags"}, +#if FF_API_DROPCHANGED +{"drop_changed", "Drop frames whose parameters differ from first decoded frame", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG_DROPCHANGED }, INT_MIN, INT_MAX, A|V|D | AV_OPT_FLAG_DEPRECATED, .unit = "flags"}, +#endif {"flags2", NULL, OFFSET(flags2), AV_OPT_TYPE_FLAGS, {.i64 = DEFAULT}, 0, UINT_MAX, V|A|E|D|S, .unit = "flags2"}, {"fast", "allow non-spec-compliant speedup tricks", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_FAST }, INT_MIN, INT_MAX, V|E, .unit = "flags2"}, {"noout", "skip bitstream encoding", 0, AV_OPT_TYPE_CONST, {.i64 = AV_CODEC_FLAG2_NO_OUTPUT }, INT_MIN, INT_MAX, V|E, .unit = "flags2"}, @@ -214,17 +217,15 @@ static const AVOption avcodec_options[] = { {"rc_init_occupancy", "number of bits which should be loaded into the rc buffer before decoding starts", OFFSET(rc_initial_buffer_occupancy), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, {"threads", "set the number of threads", OFFSET(thread_count), AV_OPT_TYPE_INT, {.i64 = 1 }, 0, INT_MAX, V|A|E|D, .unit = "threads"}, {"auto", "autodetect a suitable number of threads to use", 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, INT_MIN, INT_MAX, V|E|D, .unit = "threads"}, -#if FF_API_INTRA_DC_PRECISION -{"dc", "deprecated; use intra_dc_precision for MPEG-2 instead", OFFSET(intra_dc_precision), AV_OPT_TYPE_INT, {.i64 = 0 }, -8, 16, AV_OPT_FLAG_DEPRECATED|V|E}, -#endif +{"dc", "intra_dc_precision", OFFSET(intra_dc_precision), AV_OPT_TYPE_INT, {.i64 = 0 }, -8, 16, V|E}, {"nssew", "nsse weight", OFFSET(nsse_weight), AV_OPT_TYPE_INT, {.i64 = 8 }, INT_MIN, INT_MAX, V|E}, {"skip_top", "number of macroblock rows at the top which are skipped", OFFSET(skip_top), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|D}, {"skip_bottom", "number of macroblock rows at the bottom which are skipped", OFFSET(skip_bottom), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|D}, {"profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT, {.i64 = AV_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E|CC, .unit = "avctx.profile"}, {"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, .unit = "avctx.profile"}, {"main10", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_PROFILE_HEVC_MAIN_10 }, INT_MIN, INT_MAX, V|E, .unit = "avctx.profile"}, -{"level", "encoding level, usually corresponding to the profile level, codec-specific", OFFSET(level), AV_OPT_TYPE_INT, {.i64 = AV_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E|CC, .unit = "avctx.level"}, -{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = AV_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, .unit = "avctx.level"}, +{"level", "encoding level, usually corresponding to the profile level, codec-specific", OFFSET(level), AV_OPT_TYPE_INT, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E|CC, .unit = "avctx.level"}, +{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, .unit = "avctx.level"}, {"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, V|A|D}, {"cmp", "full-pel ME compare function", OFFSET(me_cmp), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E, .unit = "cmp_func"}, {"subcmp", "sub-pel ME compare function", OFFSET(me_sub_cmp), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E, .unit = "cmp_func"}, @@ -271,6 +272,9 @@ static const AVOption avcodec_options[] = { {"ch_layout", NULL, OFFSET(ch_layout), AV_OPT_TYPE_CHLAYOUT, {.str = NULL }, 0, 0, A|E|D, .unit = "ch_layout"}, {"rc_max_vbv_use", NULL, OFFSET(rc_max_available_vbv_use), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, 0.0, FLT_MAX, V|E}, {"rc_min_vbv_use", NULL, OFFSET(rc_min_vbv_overflow_use), AV_OPT_TYPE_FLOAT, {.dbl = 3 }, 0.0, FLT_MAX, V|E}, +#if FF_API_TICKS_PER_FRAME +{"ticks_per_frame", NULL, OFFSET(ticks_per_frame), AV_OPT_TYPE_INT, {.i64 = 1 }, 1, INT_MAX, A|V|E|D}, +#endif {"color_primaries", "color primaries", OFFSET(color_primaries), AV_OPT_TYPE_INT, {.i64 = AVCOL_PRI_UNSPECIFIED }, 1, INT_MAX, V|E|D, .unit = "color_primaries_type"}, {"bt709", "BT.709", 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_PRI_BT709 }, INT_MIN, INT_MAX, V|E|D, .unit = "color_primaries_type"}, {"unknown", "Unspecified", 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_PRI_UNSPECIFIED }, INT_MIN, INT_MAX, V|E|D, .unit = "color_primaries_type"}, @@ -354,11 +358,6 @@ static const AVOption avcodec_options[] = { {"bottomleft", "Bottom-left", 0, AV_OPT_TYPE_CONST, {.i64 = AVCHROMA_LOC_BOTTOMLEFT }, INT_MIN, INT_MAX, V|E|D, .unit = "chroma_sample_location_type"}, {"bottom", "Bottom", 0, AV_OPT_TYPE_CONST, {.i64 = AVCHROMA_LOC_BOTTOM }, INT_MIN, INT_MAX, V|E|D, .unit = "chroma_sample_location_type"}, {"unspecified", "Unspecified", 0, AV_OPT_TYPE_CONST, {.i64 = AVCHROMA_LOC_UNSPECIFIED }, INT_MIN, INT_MAX, V|E|D, .unit = "chroma_sample_location_type"}, -{"alpha_mode", "alpha mode", OFFSET(alpha_mode), AV_OPT_TYPE_INT, {.i64 = AVALPHA_MODE_UNSPECIFIED }, 0, INT_MAX, V|E|D, .unit = "alpha_mode_type"}, -{"unknown", "Unspecified", 0, AV_OPT_TYPE_CONST, {.i64 = AVALPHA_MODE_UNSPECIFIED }, 0, 0, V|E|D, .unit = "alpha_mode_type"}, -{"unspecified", "Unspecified", 0, AV_OPT_TYPE_CONST, {.i64 = AVALPHA_MODE_UNSPECIFIED }, 0, 0, V|E|D, .unit = "alpha_mode_type"}, -{"premultiplied", "Premultiplied", 0, AV_OPT_TYPE_CONST, {.i64 = AVALPHA_MODE_PREMULTIPLIED }, 0, 0, V|E|D, .unit = "alpha_mode_type"}, -{"straight", "Straight", 0, AV_OPT_TYPE_CONST, {.i64 = AVALPHA_MODE_STRAIGHT }, 0, 0, V|E|D, .unit = "alpha_mode_type"}, {"log_level_offset", "set the log level offset", OFFSET(log_level_offset), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX }, {"slices", "set the number of slices, used in parallelized encoding", OFFSET(slices), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, V|E}, {"thread_type", "select multithreading type", OFFSET(thread_type), AV_OPT_TYPE_FLAGS, {.i64 = FF_THREAD_SLICE|FF_THREAD_FRAME }, 0, INT_MAX, V|A|E|D, .unit = "thread_type"}, @@ -413,7 +412,6 @@ static const AVOption avcodec_options[] = { {"mastering_display_metadata", .default_val.i64 = AV_PKT_DATA_MASTERING_DISPLAY_METADATA, .type = AV_OPT_TYPE_CONST, .flags = A|D, .unit = "side_data_pkt" }, {"content_light_level", .default_val.i64 = AV_PKT_DATA_CONTENT_LIGHT_LEVEL, .type = AV_OPT_TYPE_CONST, .flags = A|D, .unit = "side_data_pkt" }, {"icc_profile", .default_val.i64 = AV_PKT_DATA_ICC_PROFILE, .type = AV_OPT_TYPE_CONST, .flags = A|D, .unit = "side_data_pkt" }, - {"exif", .default_val.i64 = AV_PKT_DATA_EXIF, .type = AV_OPT_TYPE_CONST, .flags = A|D, .unit = "side_data_pkt" }, {NULL}, }; diff --git a/icecat/media/ffvpx/libavcodec/packet.c b/icecat/media/ffvpx/libavcodec/packet.c index 523257328e..5104eb98b1 100644 --- a/icecat/media/ffvpx/libavcodec/packet.c +++ b/icecat/media/ffvpx/libavcodec/packet.c @@ -24,6 +24,7 @@ #include "libavutil/avassert.h" #include "libavutil/avutil.h" #include "libavutil/container_fifo.h" +#include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "libavutil/mem.h" #include "libavutil/rational.h" @@ -307,9 +308,6 @@ const char *av_packet_side_data_name(enum AVPacketSideDataType type) case AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM: return "IAMF Recon Gain Info Parameter Data"; case AV_PKT_DATA_FRAME_CROPPING: return "Frame Cropping"; case AV_PKT_DATA_LCEVC: return "LCEVC NAL data"; - case AV_PKT_DATA_3D_REFERENCE_DISPLAYS: return "3D Reference Displays Info"; - case AV_PKT_DATA_RTCP_SR: return "RTCP Sender Report"; - case AV_PKT_DATA_EXIF: return "EXIF metadata"; } return NULL; } @@ -392,32 +390,6 @@ int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, return AVERROR(ENOENT); } -static void av_packet_free_moz_crypto_info(AVPacket *pkt) { - if (pkt->moz_crypto_info_release && pkt->moz_crypto_info) { - (*pkt->moz_crypto_info_release)(pkt->moz_crypto_info); - } - pkt->moz_ndk_crypto_info = NULL; - pkt->moz_crypto_info = NULL; - pkt->moz_crypto_info_addref = NULL; - pkt->moz_crypto_info_release = NULL; -} - -static int av_packet_copy_moz_crypto_info(AVPacket *dst, const AVPacket *src) { - av_packet_free_moz_crypto_info(dst); - if (!src->moz_ndk_crypto_info) { - return 0; - } - if (!src->moz_crypto_info || !src->moz_crypto_info_addref || !src->moz_crypto_info_release) { - return AVERROR(EINVAL); - } - dst->moz_ndk_crypto_info = src->moz_ndk_crypto_info; - dst->moz_crypto_info = src->moz_crypto_info; - dst->moz_crypto_info_addref = src->moz_crypto_info_addref; - dst->moz_crypto_info_release = src->moz_crypto_info_release; - (*dst->moz_crypto_info_addref)(dst->moz_crypto_info); - return 0; -} - int av_packet_copy_props(AVPacket *dst, const AVPacket *src) { int i, ret; @@ -434,16 +406,10 @@ int av_packet_copy_props(AVPacket *dst, const AVPacket *src) dst->side_data = NULL; dst->side_data_elems = 0; - ret = av_packet_copy_moz_crypto_info(dst, src); + ret = av_buffer_replace(&dst->opaque_ref, src->opaque_ref); if (ret < 0) return ret; - ret = av_buffer_replace(&dst->opaque_ref, src->opaque_ref); - if (ret < 0) { - av_packet_free_moz_crypto_info(dst); - return ret; - } - for (i = 0; i < src->side_data_elems; i++) { enum AVPacketSideDataType type = src->side_data[i].type; size_t size = src->side_data[i].size; @@ -451,7 +417,6 @@ int av_packet_copy_props(AVPacket *dst, const AVPacket *src) uint8_t *dst_data = av_packet_new_side_data(dst, type, size); if (!dst_data) { - av_packet_free_moz_crypto_info(dst); av_buffer_unref(&dst->opaque_ref); av_packet_free_side_data(dst); return AVERROR(ENOMEM); @@ -464,7 +429,6 @@ int av_packet_copy_props(AVPacket *dst, const AVPacket *src) void av_packet_unref(AVPacket *pkt) { - av_packet_free_moz_crypto_info(pkt); av_packet_free_side_data(pkt); av_buffer_unref(&pkt->opaque_ref); av_buffer_unref(&pkt->buf); @@ -583,7 +547,6 @@ int avpriv_packet_list_put(PacketList *packet_buffer, int flags) { PacketListEntry *pktl = av_malloc(sizeof(*pktl)); - unsigned int update_end_point = 1; int ret; if (!pktl) @@ -607,22 +570,13 @@ int avpriv_packet_list_put(PacketList *packet_buffer, pktl->next = NULL; - if (packet_buffer->head) { - if (flags & FF_PACKETLIST_FLAG_PREPEND) { - pktl->next = packet_buffer->head; - packet_buffer->head = pktl; - update_end_point = 0; - } else { - packet_buffer->tail->next = pktl; - } - } else + if (packet_buffer->head) + packet_buffer->tail->next = pktl; + else packet_buffer->head = pktl; - if (update_end_point) { - /* Add the packet in the buffered packet list. */ - packet_buffer->tail = pktl; - } - + /* Add the packet in the buffered packet list. */ + packet_buffer->tail = pktl; return 0; } @@ -653,6 +607,31 @@ void avpriv_packet_list_free(PacketList *pkt_buf) pkt_buf->head = pkt_buf->tail = NULL; } +int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type) +{ + uint8_t *side_data; + size_t side_data_size; + int i; + + side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_QUALITY_STATS, &side_data_size); + if (!side_data) { + side_data_size = 4+4+8*error_count; + side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_QUALITY_STATS, + side_data_size); + } + + if (!side_data || side_data_size < 4+4+8*error_count) + return AVERROR(ENOMEM); + + AV_WL32(side_data , quality ); + side_data[4] = pict_type; + side_data[5] = error_count; + for (i = 0; i= 0 Success - * @retval AVERROR(EINVAL) The frame side data type does not have a matching - * packet side data type. - * @retval AVERROR(ENOMEM) Failed to add a side data entry to the array, or - * similar. - */ -int av_packet_side_data_from_frame(AVPacketSideData **sd, int *nb_sd, - const struct AVFrameSideData *src, unsigned int flags); -/** - * Add a new frame side data entry to an array based on existing packet - * side data, if a matching type exists for frame side data. - * - * @param flags Some combination of AV_FRAME_SIDE_DATA_FLAG_* flags, - * or 0. - * @retval >= 0 Success - * @retval AVERROR(EINVAL) The packet side data type does not have a matching - * frame side data type. - * @retval AVERROR(ENOMEM) Failed to add a side data entry to the array, or - * similar. - */ -int av_packet_side_data_to_frame(struct AVFrameSideData ***sd, int *nb_sd, - const AVPacketSideData *src, unsigned int flags); - const char *av_packet_side_data_name(enum AVPacketSideDataType type); /** @@ -630,15 +581,6 @@ typedef struct AVPacket { * or muxers. */ AVRational time_base; - - /** - * GNU extensions to manage AMediaCryptoInfo for encrypted packets on - * Android. Must provide all parameters if any are given. - */ - void* moz_ndk_crypto_info; - void* moz_crypto_info; - void (*moz_crypto_info_addref)(void*); - void (*moz_crypto_info_release)(void*); } AVPacket; #if FF_API_INIT_PACKET diff --git a/icecat/media/ffvpx/libavcodec/packet_internal.h b/icecat/media/ffvpx/libavcodec/packet_internal.h index 02471ed6df..52fa6d9be9 100644 --- a/icecat/media/ffvpx/libavcodec/packet_internal.h +++ b/icecat/media/ffvpx/libavcodec/packet_internal.h @@ -34,8 +34,6 @@ typedef struct PacketList { PacketListEntry *head, *tail; } PacketList; -#define FF_PACKETLIST_FLAG_PREPEND (1 << 0) /**< Prepend created AVPacketList instead of appending */ - /** * Append an AVPacket to the list. * @@ -70,6 +68,8 @@ int avpriv_packet_list_get(PacketList *list, AVPacket *pkt); */ void avpriv_packet_list_free(PacketList *list); +int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type); + int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp); #endif // AVCODEC_PACKET_INTERNAL_H diff --git a/icecat/media/ffvpx/libavcodec/parser.c b/icecat/media/ffvpx/libavcodec/parser.c index 28f4de5826..426cc314fb 100644 --- a/icecat/media/ffvpx/libavcodec/parser.c +++ b/icecat/media/ffvpx/libavcodec/parser.c @@ -24,23 +24,15 @@ #include #include -#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/mem.h" -#include "codec_desc.h" #include "parser.h" -#include "parser_internal.h" -#if FF_API_PARSER_CODECID -av_cold AVCodecParserContext *av_parser_init(int codec_id) -#else -av_cold AVCodecParserContext *av_parser_init(enum AVCodecID codec_id) -#endif +AVCodecParserContext *av_parser_init(int codec_id) { AVCodecParserContext *s = NULL; const AVCodecParser *parser; - const FFCodecParser *ffparser; void *i = 0; int ret; @@ -60,18 +52,17 @@ av_cold AVCodecParserContext *av_parser_init(enum AVCodecID codec_id) return NULL; found: - ffparser = ffcodecparser(parser); s = av_mallocz(sizeof(AVCodecParserContext)); if (!s) goto err_out; s->parser = parser; - s->priv_data = av_mallocz(ffparser->priv_data_size); + s->priv_data = av_mallocz(parser->priv_data_size); if (!s->priv_data) goto err_out; s->fetch_timestamp=1; s->pict_type = AV_PICTURE_TYPE_I; - if (ffparser->init) { - ret = ffparser->init(s); + if (parser->parser_init) { + ret = parser->parser_init(s); if (ret != 0) goto err_out; } @@ -126,7 +117,6 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t *buf, int buf_size, int64_t pts, int64_t dts, int64_t pos) { - const AVCodecDescriptor *desc; int index, i; uint8_t dummy_buf[AV_INPUT_BUFFER_PADDING_SIZE]; @@ -141,8 +131,6 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, avctx->codec_id == s->parser->codec_ids[5] || avctx->codec_id == s->parser->codec_ids[6]); - desc = avcodec_descriptor_get(avctx->codec_id); - if (!(s->flags & PARSER_FLAG_FETCHED_OFFSET)) { s->next_frame_offset = s->cur_offset = pos; @@ -172,8 +160,8 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, ff_fetch_timestamp(s, 0, 0, 0); } /* WARNING: the returned index can be negative */ - index = ffcodecparser(s->parser)->parse(s, avctx, (const uint8_t **) poutbuf, - poutbuf_size, buf, buf_size); + index = s->parser->parser_parse(s, avctx, (const uint8_t **) poutbuf, + poutbuf_size, buf, buf_size); av_assert0(index > -0x20000000); // The API does not allow returning AVERROR codes #define FILL(name) if(s->name > 0 && avctx->name <= 0) avctx->name = s->name if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { @@ -182,8 +170,6 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, FILL(coded_height); FILL(width); FILL(height); - if (desc && (desc->props & AV_CODEC_PROP_ENHANCEMENT) && - s->format >= 0 && avctx->pix_fmt < 0) avctx->pix_fmt = s->format; } /* update the file pointer */ @@ -204,11 +190,11 @@ int av_parser_parse2(AVCodecParserContext *s, AVCodecContext *avctx, return index; } -av_cold void av_parser_close(AVCodecParserContext *s) +void av_parser_close(AVCodecParserContext *s) { if (s) { - if (ffcodecparser(s->parser)->close) - ffcodecparser(s->parser)->close(s); + if (s->parser->parser_close) + s->parser->parser_close(s); av_freep(&s->priv_data); av_free(s); } @@ -301,7 +287,7 @@ int ff_combine_frame(ParseContext *pc, int next, return 0; } -av_cold void ff_parse_close(AVCodecParserContext *s) +void ff_parse_close(AVCodecParserContext *s) { ParseContext *pc = s->priv_data; diff --git a/icecat/media/ffvpx/libavcodec/parser_internal.h b/icecat/media/ffvpx/libavcodec/parser_internal.h deleted file mode 100644 index fa9af971c1..0000000000 --- a/icecat/media/ffvpx/libavcodec/parser_internal.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_PARSER_INTERNAL_H -#define AVCODEC_PARSER_INTERNAL_H - -#include - -#include "libavutil/macros.h" -#include "avcodec.h" -#include "codec_id.h" - -#if FF_API_PARSER_PRIVATE -typedef union FFCodecParser { - struct { -#if FF_API_PARSER_CODECID - int codec_ids[7]; /* several codec IDs are permitted */ -#else - enum AVCodecID codec_ids[7]; /* several codec IDs are permitted */ -#endif - int priv_data_size; - int (*init)(AVCodecParserContext *s); - int (*parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - void (*close)(AVCodecParserContext *s); - int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); - }; - AVCodecParser p; -#else -typedef struct FFCodecParser { - AVCodecParser p; - unsigned priv_data_size; - int (*init)(AVCodecParserContext *s); - int (*parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - void (*close)(AVCodecParserContext *s); -#endif -} FFCodecParser; - -static inline const FFCodecParser *ffcodecparser(const AVCodecParser *parser) -{ - return (const FFCodecParser*)parser; -} - -#define EIGTH_ARG(a,b,c,d,e,f,g,h,...) h -#define NO_FAIL -// Expands to nothing if <= 7 args; induces compilation failure if not. -#define CHECK_FOR_TOO_MANY_IDS(...) AV_JOIN(EIGTH_ARG(__VA_ARGS__, NO, NO, NO, NO, NO, NO, NO, NO), _FAIL) - -// For compatibility with MSVC's old, spec-incompliant preprocessor. -#define FF_MSVC_EXPAND(...) __VA_ARGS__ -#define FIRST_SEVEN2(a,b,c,d,e,f,g,...) a,b,c,d,e,f,g -#define FIRST_SEVEN(...) FF_MSVC_EXPAND(FIRST_SEVEN2(__VA_ARGS__)) -#define TIMES_SEVEN(a) a,a,a,a,a,a,a - -#if FF_API_PARSER_PRIVATE -#define PARSER_CODEC_LIST(...) CHECK_FOR_TOO_MANY_IDS(__VA_ARGS__) \ - .codec_ids = { FIRST_SEVEN(__VA_ARGS__, TIMES_SEVEN(AV_CODEC_ID_NONE)) } -#else -#define PARSER_CODEC_LIST(...) CHECK_FOR_TOO_MANY_IDS(__VA_ARGS__) \ - .p.codec_ids = { FIRST_SEVEN(__VA_ARGS__, TIMES_SEVEN(AV_CODEC_ID_NONE)) } -#endif - -#endif /* AVCODEC_PARSER_INTERNAL_H */ diff --git a/icecat/media/ffvpx/libavcodec/parsers.c b/icecat/media/ffvpx/libavcodec/parsers.c index 162b96cb69..8bfd2dbce0 100644 --- a/icecat/media/ffvpx/libavcodec/parsers.c +++ b/icecat/media/ffvpx/libavcodec/parsers.c @@ -19,104 +19,78 @@ #include #include "avcodec.h" -#include "parser_internal.h" -#if FF_API_PARSER_PRIVATE -#include "libavutil/internal.h" -#include -#include - -FF_DISABLE_DEPRECATION_WARNINGS -#define CHECK_OFFSET(field, public_prefix) static_assert(offsetof(FFCodecParser, field) == offsetof(FFCodecParser, p.public_prefix ## field), "Wrong offsets") -CHECK_OFFSET(codec_ids,); -CHECK_OFFSET(priv_data_size,); -CHECK_OFFSET(init, parser_); -CHECK_OFFSET(parse, parser_); -CHECK_OFFSET(close, parser_); -CHECK_OFFSET(split,); -FF_ENABLE_DEPRECATION_WARNINGS -#endif - -extern const FFCodecParser ff_aac_parser; -extern const FFCodecParser ff_aac_latm_parser; -extern const FFCodecParser ff_ac3_parser; -extern const FFCodecParser ff_adx_parser; -extern const FFCodecParser ff_ahx_parser; -extern const FFCodecParser ff_amr_parser; -extern const FFCodecParser ff_apv_parser; -extern const FFCodecParser ff_av1_parser; -extern const FFCodecParser ff_avs2_parser; -extern const FFCodecParser ff_avs3_parser; -extern const FFCodecParser ff_bmp_parser; -extern const FFCodecParser ff_cavsvideo_parser; -extern const FFCodecParser ff_cook_parser; -extern const FFCodecParser ff_cri_parser; -extern const FFCodecParser ff_dca_parser; -extern const FFCodecParser ff_dirac_parser; -extern const FFCodecParser ff_dnxhd_parser; -extern const FFCodecParser ff_dnxuc_parser; -extern const FFCodecParser ff_dolby_e_parser; -extern const FFCodecParser ff_dpx_parser; -extern const FFCodecParser ff_dvaudio_parser; -extern const FFCodecParser ff_dvbsub_parser; -extern const FFCodecParser ff_dvdsub_parser; -extern const FFCodecParser ff_dvd_nav_parser; -extern const FFCodecParser ff_evc_parser; -extern const FFCodecParser ff_flac_parser; -extern const FFCodecParser ff_ftr_parser; -extern const FFCodecParser ff_ffv1_parser; -extern const FFCodecParser ff_g723_1_parser; -extern const FFCodecParser ff_g729_parser; -extern const FFCodecParser ff_gif_parser; -extern const FFCodecParser ff_gsm_parser; -extern const FFCodecParser ff_h261_parser; -extern const FFCodecParser ff_h263_parser; -extern const FFCodecParser ff_h264_parser; -extern const FFCodecParser ff_hevc_parser; -extern const FFCodecParser ff_hdr_parser; -extern const FFCodecParser ff_ipu_parser; -extern const FFCodecParser ff_jpeg2000_parser; -extern const FFCodecParser ff_jpegxl_parser; -extern const FFCodecParser ff_jpegxs_parser; -extern const FFCodecParser ff_lcevc_parser; -extern const FFCodecParser ff_misc4_parser; -extern const FFCodecParser ff_mjpeg_parser; -extern const FFCodecParser ff_mlp_parser; -extern const FFCodecParser ff_mpeg4video_parser; -extern const FFCodecParser ff_mpegaudio_parser; -extern const FFCodecParser ff_mpegvideo_parser; -extern const FFCodecParser ff_opus_parser; -extern const FFCodecParser ff_prores_parser; -extern const FFCodecParser ff_png_parser; -extern const FFCodecParser ff_pnm_parser; -extern const FFCodecParser ff_prores_raw_parser; -extern const FFCodecParser ff_qoi_parser; -extern const FFCodecParser ff_rv34_parser; -extern const FFCodecParser ff_sbc_parser; -extern const FFCodecParser ff_sipr_parser; -extern const FFCodecParser ff_tak_parser; -extern const FFCodecParser ff_vc1_parser; -extern const FFCodecParser ff_vorbis_parser; -extern const FFCodecParser ff_vp3_parser; -extern const FFCodecParser ff_vp8_parser; -extern const FFCodecParser ff_vp9_parser; -extern const FFCodecParser ff_vvc_parser; -extern const FFCodecParser ff_webp_parser; -extern const FFCodecParser ff_xbm_parser; -extern const FFCodecParser ff_xma_parser; -extern const FFCodecParser ff_xwd_parser; +extern const AVCodecParser ff_aac_parser; +extern const AVCodecParser ff_aac_latm_parser; +extern const AVCodecParser ff_ac3_parser; +extern const AVCodecParser ff_adx_parser; +extern const AVCodecParser ff_amr_parser; +extern const AVCodecParser ff_av1_parser; +extern const AVCodecParser ff_avs2_parser; +extern const AVCodecParser ff_avs3_parser; +extern const AVCodecParser ff_bmp_parser; +extern const AVCodecParser ff_cavsvideo_parser; +extern const AVCodecParser ff_cook_parser; +extern const AVCodecParser ff_cri_parser; +extern const AVCodecParser ff_dca_parser; +extern const AVCodecParser ff_dirac_parser; +extern const AVCodecParser ff_dnxhd_parser; +extern const AVCodecParser ff_dnxuc_parser; +extern const AVCodecParser ff_dolby_e_parser; +extern const AVCodecParser ff_dpx_parser; +extern const AVCodecParser ff_dvaudio_parser; +extern const AVCodecParser ff_dvbsub_parser; +extern const AVCodecParser ff_dvdsub_parser; +extern const AVCodecParser ff_dvd_nav_parser; +extern const AVCodecParser ff_evc_parser; +extern const AVCodecParser ff_flac_parser; +extern const AVCodecParser ff_ftr_parser; +extern const AVCodecParser ff_g723_1_parser; +extern const AVCodecParser ff_g729_parser; +extern const AVCodecParser ff_gif_parser; +extern const AVCodecParser ff_gsm_parser; +extern const AVCodecParser ff_h261_parser; +extern const AVCodecParser ff_h263_parser; +extern const AVCodecParser ff_h264_parser; +extern const AVCodecParser ff_hevc_parser; +extern const AVCodecParser ff_hdr_parser; +extern const AVCodecParser ff_ipu_parser; +extern const AVCodecParser ff_jpeg2000_parser; +extern const AVCodecParser ff_jpegxl_parser; +extern const AVCodecParser ff_misc4_parser; +extern const AVCodecParser ff_mjpeg_parser; +extern const AVCodecParser ff_mlp_parser; +extern const AVCodecParser ff_mpeg4video_parser; +extern const AVCodecParser ff_mpegaudio_parser; +extern const AVCodecParser ff_mpegvideo_parser; +extern const AVCodecParser ff_opus_parser; +extern const AVCodecParser ff_png_parser; +extern const AVCodecParser ff_pnm_parser; +extern const AVCodecParser ff_qoi_parser; +extern const AVCodecParser ff_rv34_parser; +extern const AVCodecParser ff_sbc_parser; +extern const AVCodecParser ff_sipr_parser; +extern const AVCodecParser ff_tak_parser; +extern const AVCodecParser ff_vc1_parser; +extern const AVCodecParser ff_vorbis_parser; +extern const AVCodecParser ff_vp3_parser; +extern const AVCodecParser ff_vp8_parser; +extern const AVCodecParser ff_vp9_parser; +extern const AVCodecParser ff_vvc_parser; +extern const AVCodecParser ff_webp_parser; +extern const AVCodecParser ff_xbm_parser; +extern const AVCodecParser ff_xma_parser; +extern const AVCodecParser ff_xwd_parser; #include "libavcodec/parser_list.c" const AVCodecParser *av_parser_iterate(void **opaque) { uintptr_t i = (uintptr_t)*opaque; - const FFCodecParser *p = parser_list[i]; + const AVCodecParser *p = parser_list[i]; - if (p) { + if (p) *opaque = (void*)(i + 1); - return &p->p; - } - return NULL; + return p; } diff --git a/icecat/media/ffvpx/libavcodec/pcm.c b/icecat/media/ffvpx/libavcodec/pcm.c index 157adc92d7..a51086a92d 100644 --- a/icecat/media/ffvpx/libavcodec/pcm.c +++ b/icecat/media/ffvpx/libavcodec/pcm.c @@ -38,32 +38,21 @@ #include "encode.h" #include "pcm_tablegen.h" -av_unused av_cold static int pcm_encode_init(AVCodecContext *avctx) +static av_cold int pcm_encode_init(AVCodecContext *avctx) { avctx->frame_size = 0; #if !CONFIG_HARDCODED_TABLES switch (avctx->codec->id) { -#if CONFIG_PCM_ALAW_ENCODER - case AV_CODEC_ID_PCM_ALAW: { - static AVOnce once_alaw = AV_ONCE_INIT; - ff_thread_once(&once_alaw, pcm_alaw_tableinit); - break; - } -#endif -#if CONFIG_PCM_MULAW_ENCODER - case AV_CODEC_ID_PCM_MULAW: { - static AVOnce once_mulaw = AV_ONCE_INIT; - ff_thread_once(&once_mulaw, pcm_ulaw_tableinit); - break; - } -#endif -#if CONFIG_PCM_VIDC_ENCODER - case AV_CODEC_ID_PCM_VIDC: { - static AVOnce once_vidc = AV_ONCE_INIT; - ff_thread_once(&once_vidc, pcm_vidc_tableinit); - break; - } -#endif +#define INIT_ONCE(id, name) \ + case AV_CODEC_ID_PCM_ ## id: \ + if (CONFIG_PCM_ ## id ## _ENCODER) { \ + static AVOnce init_static_once = AV_ONCE_INIT; \ + ff_thread_once(&init_static_once, pcm_ ## name ## _tableinit); \ + } \ + break + INIT_ONCE(ALAW, alaw); + INIT_ONCE(MULAW, ulaw); + INIT_ONCE(VIDC, vidc); default: break; } @@ -104,10 +93,10 @@ av_unused av_cold static int pcm_encode_init(AVCodecContext *avctx) } \ } -av_unused static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, - const AVFrame *frame, int *got_packet_ptr) +static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, + const AVFrame *frame, int *got_packet_ptr) { - int n, c, sample_size, ret; + int n, c, sample_size, v, ret; const short *samples; unsigned char *dst; const uint8_t *samples_uint8_t; @@ -227,30 +216,24 @@ av_unused static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, bytestream_put_buffer(&dst, src, n * sample_size); } break; -#if CONFIG_PCM_ALAW_ENCODER case AV_CODEC_ID_PCM_ALAW: for (; n > 0; n--) { - int v = *samples++; + v = *samples++; *dst++ = linear_to_alaw[(v + 32768) >> 2]; } break; -#endif -#if CONFIG_PCM_MULAW_ENCODER case AV_CODEC_ID_PCM_MULAW: for (; n > 0; n--) { - int v = *samples++; + v = *samples++; *dst++ = linear_to_ulaw[(v + 32768) >> 2]; } break; -#endif -#if CONFIG_PCM_VIDC_ENCODER case AV_CODEC_ID_PCM_VIDC: for (; n > 0; n--) { - int v = *samples++; + v = *samples++; *dst++ = linear_to_vidc[(v + 32768) >> 2]; } break; -#endif default: return -1; } @@ -260,114 +243,51 @@ av_unused static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, } typedef struct PCMDecode { - int sample_size; -} PCMDecode; - -av_unused av_cold static int pcm_decode_init(AVCodecContext *avctx) -{ - PCMDecode *s = avctx->priv_data; - static const struct { - enum AVCodecID codec_id; - int8_t sample_fmt; - uint8_t sample_size; - uint8_t bits_per_sample; - } codec_id_to_samplefmt[] = { - #define ENTRY(CODEC_ID, SAMPLE_FMT, BITS_PER_SAMPLE) \ - { AV_CODEC_ID_PCM_ ## CODEC_ID, AV_SAMPLE_FMT_ ## SAMPLE_FMT, \ - BITS_PER_SAMPLE / 8, BITS_PER_SAMPLE } - ENTRY(S8, U8, 8), ENTRY(S8_PLANAR, U8P, 8), - ENTRY(S16BE, S16, 16), ENTRY(S16BE_PLANAR, S16P, 16), - ENTRY(S16LE, S16, 16), ENTRY(S16LE_PLANAR, S16P, 16), - ENTRY(S24DAUD, S16, 24), ENTRY(S24BE, S32, 24), - ENTRY(S24LE, S32, 24), ENTRY(S24LE_PLANAR, S32P, 24), - ENTRY(S32BE, S32, 32), ENTRY(S32LE, S32, 32), - ENTRY(S32LE_PLANAR, S32P, 32), - ENTRY(S64BE, S64, 64), ENTRY(S64LE, S64, 64), - ENTRY(SGA, U8, 8), ENTRY(U8, U8, 8), - ENTRY(U16BE, S16, 16), ENTRY(U16LE, S16, 16), - ENTRY(U24BE, S32, 24), ENTRY(U24LE, S32, 24), - ENTRY(U32BE, S32, 32), ENTRY(U32LE, S32, 32), - ENTRY(F32BE, FLT, 32), ENTRY(F32LE, FLT, 32), - ENTRY(F64BE, DBL, 64), ENTRY(F64LE, DBL, 64), - { .codec_id = AV_CODEC_ID_PCM_LXF, .sample_fmt = AV_SAMPLE_FMT_S32P, .sample_size = 5 }, - }; - - for (unsigned i = 0; i < FF_ARRAY_ELEMS(codec_id_to_samplefmt); ++i) { - if (codec_id_to_samplefmt[i].codec_id == avctx->codec_id) { - s->sample_size = codec_id_to_samplefmt[i].sample_size; - avctx->sample_fmt = codec_id_to_samplefmt[i].sample_fmt; - if (avctx->sample_fmt == AV_SAMPLE_FMT_S32) - avctx->bits_per_raw_sample = codec_id_to_samplefmt[i].bits_per_sample; - break; - } - av_assert1(i + 1 < FF_ARRAY_ELEMS(codec_id_to_samplefmt)); - } - - return 0; -} - -typedef struct PCMScaleDecode { - PCMDecode base; + short table[256]; void (*vector_fmul_scalar)(float *dst, const float *src, float mul, int len); float scale; -} PCMScaleDecode; +} PCMDecode; -av_unused av_cold static int pcm_scale_decode_init(AVCodecContext *avctx) +static av_cold int pcm_decode_init(AVCodecContext *avctx) { - PCMScaleDecode *s = avctx->priv_data; + PCMDecode *s = avctx->priv_data; AVFloatDSPContext *fdsp; - - avctx->sample_fmt = AV_SAMPLE_FMT_FLT; - s->base.sample_size = 4; - - if (avctx->bits_per_coded_sample < 1 || avctx->bits_per_coded_sample > 24) - return AVERROR_INVALIDDATA; - - s->scale = 1. / (1 << (avctx->bits_per_coded_sample - 1)); - fdsp = avpriv_float_dsp_alloc(0); - if (!fdsp) - return AVERROR(ENOMEM); - s->vector_fmul_scalar = fdsp->vector_fmul_scalar; - av_free(fdsp); - - return 0; -} - -typedef struct PCMLUTDecode { - PCMDecode base; - int16_t table[256]; -} PCMLUTDecode; - -av_unused av_cold static int pcm_lut_decode_init(AVCodecContext *avctx) -{ - PCMLUTDecode *s = avctx->priv_data; + int i; switch (avctx->codec_id) { - default: - av_unreachable("pcm_lut_decode_init() only used with alaw, mulaw and vidc"); -#if CONFIG_PCM_ALAW_DECODER case AV_CODEC_ID_PCM_ALAW: - for (int i = 0; i < 256; i++) + for (i = 0; i < 256; i++) s->table[i] = alaw2linear(i); break; -#endif -#if CONFIG_PCM_MULAW_DECODER case AV_CODEC_ID_PCM_MULAW: - for (int i = 0; i < 256; i++) + for (i = 0; i < 256; i++) s->table[i] = ulaw2linear(i); break; -#endif -#if CONFIG_PCM_VIDC_DECODER case AV_CODEC_ID_PCM_VIDC: - for (int i = 0; i < 256; i++) + for (i = 0; i < 256; i++) s->table[i] = vidc2linear(i); break; -#endif + case AV_CODEC_ID_PCM_F16LE: + case AV_CODEC_ID_PCM_F24LE: + if (avctx->bits_per_coded_sample < 1 || avctx->bits_per_coded_sample > 24) + return AVERROR_INVALIDDATA; + + s->scale = 1. / (1 << (avctx->bits_per_coded_sample - 1)); + fdsp = avpriv_float_dsp_alloc(0); + if (!fdsp) + return AVERROR(ENOMEM); + s->vector_fmul_scalar = fdsp->vector_fmul_scalar; + av_free(fdsp); + break; + default: + break; } - avctx->sample_fmt = AV_SAMPLE_FMT_S16; - s->base.sample_size = 1; + avctx->sample_fmt = avctx->codec->sample_fmts[0]; + + if (avctx->sample_fmt == AV_SAMPLE_FMT_S32) + avctx->bits_per_raw_sample = av_get_bits_per_sample(avctx->codec_id); return 0; } @@ -408,15 +328,23 @@ static int pcm_decode_frame(AVCodecContext *avctx, AVFrame *frame, int buf_size = avpkt->size; PCMDecode *s = avctx->priv_data; int channels = avctx->ch_layout.nb_channels; - int sample_size = s->sample_size; - int c, n, ret, samples_per_block; + int sample_size, c, n, ret, samples_per_block; uint8_t *samples; int32_t *dst_int32_t; + sample_size = av_get_bits_per_sample(avctx->codec_id) / 8; + + /* av_get_bits_per_sample returns 0 for AV_CODEC_ID_PCM_DVD */ samples_per_block = 1; if (avctx->codec_id == AV_CODEC_ID_PCM_LXF) { /* we process 40-bit blocks per channel for LXF */ samples_per_block = 2; + sample_size = 5; + } + + if (sample_size == 0) { + av_log(avctx, AV_LOG_ERROR, "Invalid sample_size\n"); + return AVERROR(EINVAL); } if (channels == 0) { @@ -570,19 +498,14 @@ static int pcm_decode_frame(AVCodecContext *avctx, AVFrame *frame, bytestream_get_buffer(&src, samples, n * sample_size); } break; -#if CONFIG_PCM_ALAW_DECODER || CONFIG_PCM_MULAW_DECODER || \ - CONFIG_PCM_VIDC_DECODER case AV_CODEC_ID_PCM_ALAW: case AV_CODEC_ID_PCM_MULAW: - case AV_CODEC_ID_PCM_VIDC: { - const int16_t *const lut = ((PCMLUTDecode*)avctx->priv_data)->table; - int16_t *restrict samples_16 = (int16_t*)samples; - - for (; n > 0; n--) - *samples_16++ = lut[*src++]; + case AV_CODEC_ID_PCM_VIDC: + for (; n > 0; n--) { + AV_WN16A(samples, s->table[*src++]); + samples += 2; + } break; - } -#endif case AV_CODEC_ID_PCM_LXF: { int i; @@ -613,10 +536,9 @@ static int pcm_decode_frame(AVCodecContext *avctx, AVFrame *frame, if (avctx->codec_id == AV_CODEC_ID_PCM_F16LE || avctx->codec_id == AV_CODEC_ID_PCM_F24LE) { - PCMScaleDecode *s2 = avctx->priv_data; - s2->vector_fmul_scalar((float *)frame->extended_data[0], - (const float *)frame->extended_data[0], - s2->scale, FFALIGN(frame->nb_samples * avctx->ch_layout.nb_channels, 4)); + s->vector_fmul_scalar((float *)frame->extended_data[0], + (const float *)frame->extended_data[0], + s->scale, FFALIGN(frame->nb_samples * avctx->ch_layout.nb_channels, 4)); } *got_frame_ptr = 1; @@ -630,12 +552,13 @@ const FFCodec ff_ ## name_ ## _encoder = { \ .p.name = #name_, \ CODEC_LONG_NAME(long_name_), \ .p.type = AVMEDIA_TYPE_AUDIO, \ - .p.id = id_, \ + .p.id = AV_CODEC_ID_ ## id_, \ .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_VARIABLE_FRAME_SIZE | \ AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, \ .init = pcm_encode_init, \ FF_CODEC_ENCODE_CB(pcm_encode_frame), \ - CODEC_SAMPLEFMTS(sample_fmt_), \ + .p.sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \ + AV_SAMPLE_FMT_NONE }, \ } #define PCM_ENCODER_2(cf, id, sample_fmt, name, long_name) \ @@ -643,76 +566,65 @@ const FFCodec ff_ ## name_ ## _encoder = { \ #define PCM_ENCODER_3(cf, id, sample_fmt, name, long_name) \ PCM_ENCODER_2(cf, id, sample_fmt, name, long_name) #define PCM_ENCODER(id, sample_fmt, name, long_name) \ - PCM_ENCODER_3(CONFIG_PCM_ ## id ## _ENCODER, AV_CODEC_ID_PCM_ ## id, \ - AV_SAMPLE_FMT_ ## sample_fmt, pcm_ ## name, long_name) + PCM_ENCODER_3(CONFIG_ ## id ## _ENCODER, id, sample_fmt, name, long_name) -#define PCM_DECODER_0(id, sample_fmt, name, long_name, Context, init_func) -#define PCM_DECODER_1(id_, sample_fmt, name_, long_name, Context, init_func)\ +#define PCM_DECODER_0(id, sample_fmt, name, long_name) +#define PCM_DECODER_1(id_, sample_fmt_, name_, long_name_) \ const FFCodec ff_ ## name_ ## _decoder = { \ .p.name = #name_, \ - CODEC_LONG_NAME(long_name), \ + CODEC_LONG_NAME(long_name_), \ .p.type = AVMEDIA_TYPE_AUDIO, \ - .p.id = id_, \ - .priv_data_size = sizeof(Context), \ - .init = init_func, \ + .p.id = AV_CODEC_ID_ ## id_, \ + .priv_data_size = sizeof(PCMDecode), \ + .init = pcm_decode_init, \ FF_CODEC_DECODE_CB(pcm_decode_frame), \ .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_PARAM_CHANGE, \ + .p.sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \ + AV_SAMPLE_FMT_NONE }, \ } -#define PCM_DECODER_2(cf, id, sample_fmt, name, long_name, Context, init_func) \ - PCM_DECODER_ ## cf(id, sample_fmt, name, long_name, Context, init_func) -#define PCM_DECODER_3(cf, id, sample_fmt, name, long_name, Context, init_func) \ - PCM_DECODER_2(cf, id, sample_fmt, name, long_name, Context, init_func) -#define PCM_DEC_EXT(id, sample_fmt, name, long_name, Context, init_func) \ - PCM_DECODER_3(CONFIG_PCM_ ## id ## _DECODER, AV_CODEC_ID_PCM_ ## id, \ - AV_SAMPLE_FMT_ ## sample_fmt, pcm_ ## name, long_name, \ - Context, init_func) - -#define PCM_DECODER(id, sample_fmt, name, long_name) \ - PCM_DEC_EXT(id, sample_fmt, name, long_name, PCMDecode, pcm_decode_init) +#define PCM_DECODER_2(cf, id, sample_fmt, name, long_name) \ + PCM_DECODER_ ## cf(id, sample_fmt, name, long_name) +#define PCM_DECODER_3(cf, id, sample_fmt, name, long_name) \ + PCM_DECODER_2(cf, id, sample_fmt, name, long_name) +#define PCM_DECODER(id, sample_fmt, name, long_name) \ + PCM_DECODER_3(CONFIG_ ## id ## _DECODER, id, sample_fmt, name, long_name) #define PCM_CODEC(id, sample_fmt_, name, long_name_) \ PCM_ENCODER(id, sample_fmt_, name, long_name_); \ PCM_DECODER(id, sample_fmt_, name, long_name_) -#define PCM_CODEC_EXT(id, sample_fmt, name, long_name, DecContext, dec_init_func) \ - PCM_DEC_EXT(id, sample_fmt, name, long_name, DecContext, dec_init_func); \ - PCM_ENCODER(id, sample_fmt, name, long_name) - -/* Note: Do not forget to add new entries to the Makefile and - * to the table in pcm_decode_init() as well. */ -// AV_CODEC_ID_* pcm_* name -// AV_SAMPLE_FMT_* long name DecodeContext decode init func -PCM_CODEC_EXT(ALAW, S16, alaw, "PCM A-law / G.711 A-law", PCMLUTDecode, pcm_lut_decode_init); -PCM_DEC_EXT (F16LE, FLT, f16le, "PCM 16.8 floating point little-endian", PCMScaleDecode, pcm_scale_decode_init); -PCM_DEC_EXT (F24LE, FLT, f24le, "PCM 24.0 floating point little-endian", PCMScaleDecode, pcm_scale_decode_init); -PCM_CODEC (F32BE, FLT, f32be, "PCM 32-bit floating point big-endian"); -PCM_CODEC (F32LE, FLT, f32le, "PCM 32-bit floating point little-endian"); -PCM_CODEC (F64BE, DBL, f64be, "PCM 64-bit floating point big-endian"); -PCM_CODEC (F64LE, DBL, f64le, "PCM 64-bit floating point little-endian"); -PCM_DECODER (LXF, S32P,lxf, "PCM signed 20-bit little-endian planar"); -PCM_CODEC_EXT(MULAW, S16, mulaw, "PCM mu-law / G.711 mu-law", PCMLUTDecode, pcm_lut_decode_init); -PCM_CODEC (S8, U8, s8, "PCM signed 8-bit"); -PCM_CODEC (S8_PLANAR, U8P, s8_planar, "PCM signed 8-bit planar"); -PCM_CODEC (S16BE, S16, s16be, "PCM signed 16-bit big-endian"); -PCM_CODEC (S16BE_PLANAR, S16P,s16be_planar, "PCM signed 16-bit big-endian planar"); -PCM_CODEC (S16LE, S16, s16le, "PCM signed 16-bit little-endian"); -PCM_CODEC (S16LE_PLANAR, S16P,s16le_planar, "PCM signed 16-bit little-endian planar"); -PCM_CODEC (S24BE, S32, s24be, "PCM signed 24-bit big-endian"); -PCM_CODEC (S24DAUD, S16, s24daud, "PCM D-Cinema audio signed 24-bit"); -PCM_CODEC (S24LE, S32, s24le, "PCM signed 24-bit little-endian"); -PCM_CODEC (S24LE_PLANAR, S32P,s24le_planar, "PCM signed 24-bit little-endian planar"); -PCM_CODEC (S32BE, S32, s32be, "PCM signed 32-bit big-endian"); -PCM_CODEC (S32LE, S32, s32le, "PCM signed 32-bit little-endian"); -PCM_CODEC (S32LE_PLANAR, S32P,s32le_planar, "PCM signed 32-bit little-endian planar"); -PCM_CODEC (U8, U8, u8, "PCM unsigned 8-bit"); -PCM_CODEC (U16BE, S16, u16be, "PCM unsigned 16-bit big-endian"); -PCM_CODEC (U16LE, S16, u16le, "PCM unsigned 16-bit little-endian"); -PCM_CODEC (U24BE, S32, u24be, "PCM unsigned 24-bit big-endian"); -PCM_CODEC (U24LE, S32, u24le, "PCM unsigned 24-bit little-endian"); -PCM_CODEC (U32BE, S32, u32be, "PCM unsigned 32-bit big-endian"); -PCM_CODEC (U32LE, S32, u32le, "PCM unsigned 32-bit little-endian"); -PCM_CODEC (S64BE, S64, s64be, "PCM signed 64-bit big-endian"); -PCM_CODEC (S64LE, S64, s64le, "PCM signed 64-bit little-endian"); -PCM_CODEC_EXT(VIDC, S16, vidc, "PCM Archimedes VIDC", PCMLUTDecode, pcm_lut_decode_init); -PCM_DECODER (SGA, U8, sga, "PCM SGA"); +/* Note: Do not forget to add new entries to the Makefile as well. */ +PCM_CODEC (PCM_ALAW, AV_SAMPLE_FMT_S16, pcm_alaw, "PCM A-law / G.711 A-law"); +PCM_DECODER(PCM_F16LE, AV_SAMPLE_FMT_FLT, pcm_f16le, "PCM 16.8 floating point little-endian"); +PCM_DECODER(PCM_F24LE, AV_SAMPLE_FMT_FLT, pcm_f24le, "PCM 24.0 floating point little-endian"); +PCM_CODEC (PCM_F32BE, AV_SAMPLE_FMT_FLT, pcm_f32be, "PCM 32-bit floating point big-endian"); +PCM_CODEC (PCM_F32LE, AV_SAMPLE_FMT_FLT, pcm_f32le, "PCM 32-bit floating point little-endian"); +PCM_CODEC (PCM_F64BE, AV_SAMPLE_FMT_DBL, pcm_f64be, "PCM 64-bit floating point big-endian"); +PCM_CODEC (PCM_F64LE, AV_SAMPLE_FMT_DBL, pcm_f64le, "PCM 64-bit floating point little-endian"); +PCM_DECODER(PCM_LXF, AV_SAMPLE_FMT_S32P,pcm_lxf, "PCM signed 20-bit little-endian planar"); +PCM_CODEC (PCM_MULAW, AV_SAMPLE_FMT_S16, pcm_mulaw, "PCM mu-law / G.711 mu-law"); +PCM_CODEC (PCM_S8, AV_SAMPLE_FMT_U8, pcm_s8, "PCM signed 8-bit"); +PCM_CODEC (PCM_S8_PLANAR, AV_SAMPLE_FMT_U8P, pcm_s8_planar, "PCM signed 8-bit planar"); +PCM_CODEC (PCM_S16BE, AV_SAMPLE_FMT_S16, pcm_s16be, "PCM signed 16-bit big-endian"); +PCM_CODEC (PCM_S16BE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16be_planar, "PCM signed 16-bit big-endian planar"); +PCM_CODEC (PCM_S16LE, AV_SAMPLE_FMT_S16, pcm_s16le, "PCM signed 16-bit little-endian"); +PCM_CODEC (PCM_S16LE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16le_planar, "PCM signed 16-bit little-endian planar"); +PCM_CODEC (PCM_S24BE, AV_SAMPLE_FMT_S32, pcm_s24be, "PCM signed 24-bit big-endian"); +PCM_CODEC (PCM_S24DAUD, AV_SAMPLE_FMT_S16, pcm_s24daud, "PCM D-Cinema audio signed 24-bit"); +PCM_CODEC (PCM_S24LE, AV_SAMPLE_FMT_S32, pcm_s24le, "PCM signed 24-bit little-endian"); +PCM_CODEC (PCM_S24LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s24le_planar, "PCM signed 24-bit little-endian planar"); +PCM_CODEC (PCM_S32BE, AV_SAMPLE_FMT_S32, pcm_s32be, "PCM signed 32-bit big-endian"); +PCM_CODEC (PCM_S32LE, AV_SAMPLE_FMT_S32, pcm_s32le, "PCM signed 32-bit little-endian"); +PCM_CODEC (PCM_S32LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s32le_planar, "PCM signed 32-bit little-endian planar"); +PCM_CODEC (PCM_U8, AV_SAMPLE_FMT_U8, pcm_u8, "PCM unsigned 8-bit"); +PCM_CODEC (PCM_U16BE, AV_SAMPLE_FMT_S16, pcm_u16be, "PCM unsigned 16-bit big-endian"); +PCM_CODEC (PCM_U16LE, AV_SAMPLE_FMT_S16, pcm_u16le, "PCM unsigned 16-bit little-endian"); +PCM_CODEC (PCM_U24BE, AV_SAMPLE_FMT_S32, pcm_u24be, "PCM unsigned 24-bit big-endian"); +PCM_CODEC (PCM_U24LE, AV_SAMPLE_FMT_S32, pcm_u24le, "PCM unsigned 24-bit little-endian"); +PCM_CODEC (PCM_U32BE, AV_SAMPLE_FMT_S32, pcm_u32be, "PCM unsigned 32-bit big-endian"); +PCM_CODEC (PCM_U32LE, AV_SAMPLE_FMT_S32, pcm_u32le, "PCM unsigned 32-bit little-endian"); +PCM_CODEC (PCM_S64BE, AV_SAMPLE_FMT_S64, pcm_s64be, "PCM signed 64-bit big-endian"); +PCM_CODEC (PCM_S64LE, AV_SAMPLE_FMT_S64, pcm_s64le, "PCM signed 64-bit little-endian"); +PCM_CODEC (PCM_VIDC, AV_SAMPLE_FMT_S16, pcm_vidc, "PCM Archimedes VIDC"); +PCM_DECODER(PCM_SGA, AV_SAMPLE_FMT_U8, pcm_sga, "PCM SGA"); diff --git a/icecat/media/ffvpx/libavcodec/pcm_tablegen.h b/icecat/media/ffvpx/libavcodec/pcm_tablegen.h index 2fd2e0e4f9..7274c3cd17 100644 --- a/icecat/media/ffvpx/libavcodec/pcm_tablegen.h +++ b/icecat/media/ffvpx/libavcodec/pcm_tablegen.h @@ -24,7 +24,6 @@ #define AVCODEC_PCM_TABLEGEN_H #include -#include "config_components.h" #include "libavutil/attributes.h" /* from g711.c by SUN microsystems (unrestricted use) */ @@ -43,7 +42,6 @@ #define VIDC_SEG_SHIFT (5) #define VIDC_SEG_MASK (0xE0) -#if CONFIG_PCM_ALAW_DECODER || CONFIG_PCM_ALAW_ENCODER /* alaw2linear() - Convert an A-law value to 16-bit linear PCM */ static av_cold int alaw2linear(unsigned char a_val) { @@ -59,9 +57,7 @@ static av_cold int alaw2linear(unsigned char a_val) return (a_val & SIGN_BIT) ? t : -t; } -#endif -#if CONFIG_PCM_MULAW_DECODER || CONFIG_PCM_MULAW_ENCODER static av_cold int ulaw2linear(unsigned char u_val) { int t; @@ -78,9 +74,7 @@ static av_cold int ulaw2linear(unsigned char u_val) return (u_val & SIGN_BIT) ? (BIAS - t) : (t - BIAS); } -#endif -#if CONFIG_PCM_VIDC_DECODER || CONFIG_PCM_VIDC_ENCODER static av_cold int vidc2linear(unsigned char u_val) { int t; @@ -94,7 +88,6 @@ static av_cold int vidc2linear(unsigned char u_val) return (u_val & VIDC_SIGN_BIT) ? (BIAS - t) : (t - BIAS); } -#endif #if CONFIG_HARDCODED_TABLES #define pcm_alaw_tableinit() @@ -102,9 +95,11 @@ static av_cold int vidc2linear(unsigned char u_val) #define pcm_vidc_tableinit() #include "libavcodec/pcm_tables.h" #else +/* 16384 entries per table */ +static uint8_t linear_to_alaw[16384]; +static uint8_t linear_to_ulaw[16384]; +static uint8_t linear_to_vidc[16384]; -#if CONFIG_PCM_ALAW_ENCODER || CONFIG_PCM_MULAW_ENCODER || \ - CONFIG_PCM_VIDC_ENCODER static av_cold void build_xlaw_table(uint8_t *linear_to_xlaw, int (*xlaw2linear)(unsigned char), int mask) @@ -128,31 +123,21 @@ static av_cold void build_xlaw_table(uint8_t *linear_to_xlaw, } linear_to_xlaw[0] = linear_to_xlaw[1]; } -#endif -#if CONFIG_PCM_ALAW_ENCODER -static uint8_t linear_to_alaw[16384]; static void pcm_alaw_tableinit(void) { build_xlaw_table(linear_to_alaw, alaw2linear, 0xd5); } -#endif -#if CONFIG_PCM_MULAW_ENCODER -static uint8_t linear_to_ulaw[16384]; static void pcm_ulaw_tableinit(void) { build_xlaw_table(linear_to_ulaw, ulaw2linear, 0xff); } -#endif -#if CONFIG_PCM_VIDC_ENCODER -static uint8_t linear_to_vidc[16384]; static void pcm_vidc_tableinit(void) { build_xlaw_table(linear_to_vidc, vidc2linear, 0xff); } -#endif #endif /* CONFIG_HARDCODED_TABLES */ #endif /* AVCODEC_PCM_TABLEGEN_H */ diff --git a/icecat/media/ffvpx/libavcodec/pixblockdsp.h b/icecat/media/ffvpx/libavcodec/pixblockdsp.h index d493d0e22b..cac5f3d4a2 100644 --- a/icecat/media/ffvpx/libavcodec/pixblockdsp.h +++ b/icecat/media/ffvpx/libavcodec/pixblockdsp.h @@ -19,17 +19,13 @@ #ifndef AVCODEC_PIXBLOCKDSP_H #define AVCODEC_PIXBLOCKDSP_H -#include #include -#define PIXBLOCKDSP_8BPP_GET_PIXELS_SUPPORTS_UNALIGNED \ - !(ARCH_ARM || ARCH_MIPS || ARCH_PPC || ARCH_RISCV) +#include "avcodec.h" typedef struct PixblockDSPContext { void (*get_pixels)(int16_t *restrict block /* align 16 */, - /* align 16 for > 8 bits; align 8 for <= 8 bits - * (or 1 if PIXBLOCKDSP_8BPP_GET_PIXELS_SUPPORTS_UNALIGNED is set) */ - const uint8_t *pixels, + const uint8_t *pixels /* align 8 */, ptrdiff_t stride); void (*get_pixels_unaligned)(int16_t *restrict block /* align 16 */, const uint8_t *pixels, @@ -45,18 +41,20 @@ typedef struct PixblockDSPContext { } PixblockDSPContext; -void ff_pixblockdsp_init(PixblockDSPContext *c, int bits_per_raw_sample); -void ff_pixblockdsp_init_aarch64(PixblockDSPContext *c, +void ff_pixblockdsp_init(PixblockDSPContext *c, AVCodecContext *avctx); +void ff_pixblockdsp_init_aarch64(PixblockDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth); -void ff_pixblockdsp_init_arm(PixblockDSPContext *c, - unsigned high_bit_depth); -void ff_pixblockdsp_init_ppc(PixblockDSPContext *c, - unsigned high_bit_depth); -void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, +void ff_pixblockdsp_init_alpha(PixblockDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth); -void ff_pixblockdsp_init_x86(PixblockDSPContext *c, +void ff_pixblockdsp_init_arm(PixblockDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth); -void ff_pixblockdsp_init_mips(PixblockDSPContext *c, +void ff_pixblockdsp_init_ppc(PixblockDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth); +void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth); +void ff_pixblockdsp_init_x86(PixblockDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth); +void ff_pixblockdsp_init_mips(PixblockDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth); #endif /* AVCODEC_PIXBLOCKDSP_H */ diff --git a/icecat/media/ffvpx/libavcodec/pixels.h b/icecat/media/ffvpx/libavcodec/pixels.h deleted file mode 100644 index 98eacd4df6..0000000000 --- a/icecat/media/ffvpx/libavcodec/pixels.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_PIXELS_H -#define AVCODEC_PIXELS_H - -#include -#include - -/* pixel operations */ -#define CALL_2X_PIXELS_MACRO(STATIC, a, b, n) \ -STATIC void a(uint8_t *block, const uint8_t *pixels, \ - ptrdiff_t line_size, int h) \ -{ \ - b(block, pixels, line_size, h); \ - b(block + n, pixels + n, line_size, h); \ -} - -#define CALL_2X_PIXELS(a, b, n) CALL_2X_PIXELS_MACRO(static, a, b, n) -#define CALL_2X_PIXELS_EXPORT(a, b, n) CALL_2X_PIXELS_MACRO(, a, b, n) - -#endif /* AVCODEC_PIXELS_H */ diff --git a/icecat/media/ffvpx/libavcodec/profiles.c b/icecat/media/ffvpx/libavcodec/profiles.c index 1b67870c43..3cef82be3b 100644 --- a/icecat/media/ffvpx/libavcodec/profiles.c +++ b/icecat/media/ffvpx/libavcodec/profiles.c @@ -182,12 +182,6 @@ const AVProfile ff_prores_profiles[] = { { AV_PROFILE_UNKNOWN } }; -const AVProfile ff_prores_raw_profiles[] = { - { AV_PROFILE_PRORES_RAW, "RAW" }, - { AV_PROFILE_PRORES_RAW_HQ, "RAW HQ" }, - { AV_PROFILE_UNKNOWN } -}; - const AVProfile ff_mjpeg_profiles[] = { { AV_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT, "Baseline" }, { AV_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT, "Sequential" }, @@ -209,15 +203,4 @@ const AVProfile ff_evc_profiles[] = { { AV_PROFILE_UNKNOWN }, }; -const AVProfile ff_apv_profiles[] = { - { AV_PROFILE_APV_422_10, "422-10" }, - { AV_PROFILE_APV_422_12, "422-12" }, - { AV_PROFILE_APV_444_10, "444-10" }, - { AV_PROFILE_APV_444_12, "444-12" }, - { AV_PROFILE_APV_4444_10, "4444-10" }, - { AV_PROFILE_APV_4444_12, "4444-12" }, - { AV_PROFILE_APV_400_10, "400-10" }, - { AV_PROFILE_UNKNOWN }, -}; - #endif /* !CONFIG_SMALL */ diff --git a/icecat/media/ffvpx/libavcodec/profiles.h b/icecat/media/ffvpx/libavcodec/profiles.h index 6f4011ff0c..33b7ffc17a 100644 --- a/icecat/media/ffvpx/libavcodec/profiles.h +++ b/icecat/media/ffvpx/libavcodec/profiles.h @@ -74,10 +74,8 @@ extern const AVProfile ff_vp9_profiles[]; extern const AVProfile ff_av1_profiles[]; extern const AVProfile ff_sbc_profiles[]; extern const AVProfile ff_prores_profiles[]; -extern const AVProfile ff_prores_raw_profiles[]; extern const AVProfile ff_mjpeg_profiles[]; extern const AVProfile ff_arib_caption_profiles[]; extern const AVProfile ff_evc_profiles[]; -extern const AVProfile ff_apv_profiles[]; #endif /* AVCODEC_PROFILES_H */ diff --git a/icecat/media/ffvpx/libavcodec/progressframe.h b/icecat/media/ffvpx/libavcodec/progressframe.h index e3cb83c5b4..32a345beec 100644 --- a/icecat/media/ffvpx/libavcodec/progressframe.h +++ b/icecat/media/ffvpx/libavcodec/progressframe.h @@ -102,9 +102,10 @@ void ff_progress_frame_report(ProgressFrame *f, int progress); void ff_progress_frame_await(const ProgressFrame *f, int progress); /** - * This function sets up the ProgressFrame, i.e. ProgressFrame.f - * and ProgressFrame.progress. ProgressFrame.f will be blank - * (as if from av_frame_alloc() or av_frame_unref()) on success. + * This function allocates ProgressFrame.f + * May be called before ff_progress_frame_get_buffer() in the cases where the + * AVFrame needs to be accessed before the ff_thread_get_buffer() call in + * ff_progress_frame_alloc(). * * @note: This must only be called by codecs with the * FF_CODEC_CAP_USES_PROGRESSFRAMES internal cap. @@ -112,7 +113,8 @@ void ff_progress_frame_await(const ProgressFrame *f, int progress); int ff_progress_frame_alloc(struct AVCodecContext *avctx, ProgressFrame *f); /** - * Wrapper around ff_progress_frame_alloc() and ff_thread_get_buffer(). + * This function sets up the ProgressFrame, i.e. allocates ProgressFrame.f + * if needed, and also calls ff_thread_get_buffer() on the frame. * * @note: This must only be called by codecs with the * FF_CODEC_CAP_USES_PROGRESSFRAMES internal cap. diff --git a/icecat/media/ffvpx/libavcodec/pthread.c b/icecat/media/ffvpx/libavcodec/pthread.c index 6d604566e3..d32e56de0d 100644 --- a/icecat/media/ffvpx/libavcodec/pthread.c +++ b/icecat/media/ffvpx/libavcodec/pthread.c @@ -29,13 +29,13 @@ * @see doc/multithreading.txt */ -#include "libavutil/attributes.h" #include "libavutil/thread.h" #include "avcodec.h" #include "avcodec_internal.h" #include "codec_internal.h" #include "pthread_internal.h" +#include "thread.h" /** * Set the threading algorithms used. @@ -46,7 +46,7 @@ * * @param avctx The context. */ -static av_cold void validate_thread_parameters(AVCodecContext *avctx) +static void validate_thread_parameters(AVCodecContext *avctx) { int frame_threading_supported = (avctx->codec->capabilities & AV_CODEC_CAP_FRAME_THREADS) && !(avctx->flags & AV_CODEC_FLAG_LOW_DELAY) @@ -69,7 +69,7 @@ static av_cold void validate_thread_parameters(AVCodecContext *avctx) avctx->thread_count, MAX_AUTO_THREADS); } -av_cold int ff_thread_init(AVCodecContext *avctx) +int ff_thread_init(AVCodecContext *avctx) { validate_thread_parameters(avctx); @@ -81,7 +81,7 @@ av_cold int ff_thread_init(AVCodecContext *avctx) return 0; } -av_cold void ff_thread_free(AVCodecContext *avctx) +void ff_thread_free(AVCodecContext *avctx) { if (avctx->active_thread_type&FF_THREAD_FRAME) ff_frame_thread_free(avctx, avctx->thread_count); diff --git a/icecat/media/ffvpx/libavcodec/pthread_frame.c b/icecat/media/ffvpx/libavcodec/pthread_frame.c index c2853086ce..d9df0d62a8 100644 --- a/icecat/media/ffvpx/libavcodec/pthread_frame.c +++ b/icecat/media/ffvpx/libavcodec/pthread_frame.c @@ -115,6 +115,10 @@ typedef struct PerThreadContext { int hwaccel_threadsafe; atomic_int debug_threads; ///< Set if the FF_DEBUG_THREADS option is set. + + /// The following two fields have the same semantics as the DecodeContext field + int intra_only_flag; + enum AVPictureType initial_pict_type; } PerThreadContext; /** @@ -374,10 +378,13 @@ FF_ENABLE_DEPRECATION_WARNINGS dst->level = src->level; dst->bits_per_raw_sample = src->bits_per_raw_sample; +#if FF_API_TICKS_PER_FRAME +FF_DISABLE_DEPRECATION_WARNINGS + dst->ticks_per_frame = src->ticks_per_frame; +FF_ENABLE_DEPRECATION_WARNINGS +#endif dst->color_primaries = src->color_primaries; - dst->alpha_mode = src->alpha_mode; - dst->color_trc = src->color_trc; dst->colorspace = src->colorspace; dst->color_range = src->color_range; @@ -560,7 +567,7 @@ static int submit_packet(PerThreadContext *p, AVCodecContext *user_avctx, return 0; } -int ff_thread_receive_frame(AVCodecContext *avctx, AVFrame *frame, unsigned flags) +int ff_thread_receive_frame(AVCodecContext *avctx, AVFrame *frame) { FrameThreadContext *fctx = avctx->internal->thread_ctx; int ret = 0; @@ -573,10 +580,6 @@ int ff_thread_receive_frame(AVCodecContext *avctx, AVFrame *frame, unsigned flag while (!fctx->df.nb_f && !fctx->result) { PerThreadContext *p; - if (fctx->next_decoding != fctx->next_finished && - (flags & AV_CODEC_RECEIVE_FRAME_FLAG_SYNCHRONOUS)) - goto wait_for_result; - /* get a packet to be submitted to the next thread */ av_packet_unref(fctx->next_pkt); ret = ff_decode_get_packet(avctx, fctx->next_pkt); @@ -593,7 +596,6 @@ int ff_thread_receive_frame(AVCodecContext *avctx, AVFrame *frame, unsigned flag !avctx->internal->draining) continue; - wait_for_result: p = &fctx->threads[fctx->next_finished]; fctx->next_finished = (fctx->next_finished + 1) % avctx->thread_count; @@ -716,7 +718,7 @@ void ff_thread_finish_setup(AVCodecContext *avctx) { } /// Waits for all threads to finish. -static av_cold void park_frame_worker_threads(FrameThreadContext *fctx, int thread_count) +static void park_frame_worker_threads(FrameThreadContext *fctx, int thread_count) { int i; @@ -748,7 +750,7 @@ DEFINE_OFFSET_ARRAY(PerThreadContext, per_thread, pthread_init_cnt, (OFF(input_cond), OFF(progress_cond), OFF(output_cond))); #undef OFF -av_cold void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) +void ff_frame_thread_free(AVCodecContext *avctx, int thread_count) { FrameThreadContext *fctx = avctx->internal->thread_ctx; const FFCodec *codec = ffcodec(avctx->codec); @@ -823,6 +825,13 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free, AVCodecContext *copy; int err; + p->initial_pict_type = AV_PICTURE_TYPE_NONE; + if (avctx->codec_descriptor->props & AV_CODEC_PROP_INTRA_ONLY) { + p->intra_only_flag = AV_FRAME_FLAG_KEY; + if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) + p->initial_pict_type = AV_PICTURE_TYPE_I; + } + atomic_init(&p->state, STATE_INPUT_READY); copy = av_memdup(avctx, sizeof(*avctx)); @@ -913,7 +922,7 @@ static av_cold int init_thread(PerThreadContext *p, int *threads_to_free, return 0; } -av_cold int ff_frame_thread_init(AVCodecContext *avctx) +int ff_frame_thread_init(AVCodecContext *avctx) { int thread_count = avctx->thread_count; const FFCodec *codec = ffcodec(avctx->codec); @@ -976,7 +985,7 @@ error: return err; } -av_cold void ff_thread_flush(AVCodecContext *avctx) +void ff_thread_flush(AVCodecContext *avctx) { int i; FrameThreadContext *fctx = avctx->internal->thread_ctx; @@ -1078,7 +1087,7 @@ void ff_thread_release_ext_buffer(ThreadFrame *f) av_frame_unref(f->f); } -av_cold enum ThreadingStatus ff_thread_sync_ref(AVCodecContext *avctx, size_t offset) +enum ThreadingStatus ff_thread_sync_ref(AVCodecContext *avctx, size_t offset) { PerThreadContext *p; const void *ref; diff --git a/icecat/media/ffvpx/libavcodec/pthread_slice.c b/icecat/media/ffvpx/libavcodec/pthread_slice.c index f9da670735..ac455e48ed 100644 --- a/icecat/media/ffvpx/libavcodec/pthread_slice.c +++ b/icecat/media/ffvpx/libavcodec/pthread_slice.c @@ -22,16 +22,19 @@ * @see doc/multithreading.txt */ +#include "config.h" + #include "avcodec.h" #include "codec_internal.h" #include "internal.h" #include "pthread_internal.h" #include "thread.h" -#include "libavutil/attributes.h" +#include "libavutil/avassert.h" +#include "libavutil/common.h" #include "libavutil/cpu.h" -#include "libavutil/macros.h" #include "libavutil/mem.h" +#include "libavutil/thread.h" #include "libavutil/slicethread.h" typedef int (action_func)(AVCodecContext *c, void *arg); @@ -66,7 +69,7 @@ static void worker_func(void *priv, int jobnr, int threadnr, int nb_jobs, int nb c->rets[jobnr] = ret; } -av_cold void ff_slice_thread_free(AVCodecContext *avctx) +void ff_slice_thread_free(AVCodecContext *avctx) { SliceThreadContext *c = avctx->internal->thread_ctx; @@ -109,12 +112,18 @@ int ff_slice_thread_execute_with_mainfunc(AVCodecContext *avctx, action_func2* f return thread_execute(avctx, NULL, arg, ret, job_count, 0); } -av_cold int ff_slice_thread_init(AVCodecContext *avctx) +int ff_slice_thread_init(AVCodecContext *avctx) { SliceThreadContext *c; int thread_count = avctx->thread_count; void (*mainfunc)(void *); + // We cannot do this in the encoder init as the threads are created before + if (av_codec_is_encoder(avctx->codec) && + avctx->codec_id == AV_CODEC_ID_MPEG1VIDEO && + avctx->height > 2800) + thread_count = avctx->thread_count = 1; + if (!thread_count) { int nb_cpus = av_cpu_count(); if (avctx->height) @@ -132,16 +141,14 @@ av_cold int ff_slice_thread_init(AVCodecContext *avctx) } avctx->internal->thread_ctx = c = av_mallocz(sizeof(*c)); - if (!c) - return AVERROR(ENOMEM); mainfunc = ffcodec(avctx->codec)->caps_internal & FF_CODEC_CAP_SLICE_THREAD_HAS_MF ? &main_function : NULL; - thread_count = avpriv_slicethread_create(&c->thread, avctx, worker_func, - mainfunc, thread_count); - if (thread_count <= 1) { - ff_slice_thread_free(avctx); + if (!c || (thread_count = avpriv_slicethread_create(&c->thread, avctx, worker_func, mainfunc, thread_count)) <= 1) { + if (c) + avpriv_slicethread_free(&c->thread); + av_freep(&avctx->internal->thread_ctx); avctx->thread_count = 1; avctx->active_thread_type = 0; - return thread_count < 0 ? thread_count : 0; + return 0; } avctx->thread_count = thread_count; diff --git a/icecat/media/ffvpx/libavcodec/put_bits.h b/icecat/media/ffvpx/libavcodec/put_bits.h index 98c0d7e51f..0caaa6b338 100644 --- a/icecat/media/ffvpx/libavcodec/put_bits.h +++ b/icecat/media/ffvpx/libavcodec/put_bits.h @@ -39,14 +39,14 @@ typedef uint64_t BitBuf; #define AV_WBBUF AV_WB64 #define AV_WLBUF AV_WL64 -#define BUF_BITS 64 #else typedef uint32_t BitBuf; #define AV_WBBUF AV_WB32 #define AV_WLBUF AV_WL32 -#define BUF_BITS 32 #endif +static const int BUF_BITS = 8 * sizeof(BitBuf); + typedef struct PutBitContext { BitBuf bit_buf; int bit_left; @@ -74,16 +74,6 @@ static inline void init_put_bits(PutBitContext *s, uint8_t *buffer, s->bit_buf = 0; } -/** - * Inform the compiler that a PutBitContext is flushed (i.e. if it has just - * been initialized or flushed). Undefined behaviour occurs if this is used - * with a PutBitContext for which this is not true. - */ -static inline void put_bits_assume_flushed(const PutBitContext *s) -{ - av_assume(s->bit_left == BUF_BITS); -} - /** * @return the total number of bits written to the bitstream. */ @@ -256,7 +246,7 @@ static inline void put_bits_no_assert(PutBitContext *s, int n, BitBuf value) */ static inline void put_bits(PutBitContext *s, int n, BitBuf value) { - av_assert2(n <= 31 && value < (BitBuf)(1U << n)); + av_assert2(n <= 31 && value < (1UL << n)); put_bits_no_assert(s, n, value); } @@ -265,7 +255,7 @@ static inline void put_bits_le(PutBitContext *s, int n, BitBuf value) BitBuf bit_buf; int bit_left; - av_assert2(n <= 31 && value < (BitBuf)(1U << n)); + av_assert2(n <= 31 && value < (1UL << n)); bit_buf = s->bit_buf; bit_left = s->bit_left; @@ -298,7 +288,7 @@ static inline void put_sbits(PutBitContext *pb, int n, int32_t value) /** * Write exactly 32 bits into a bitstream. */ -av_unused static void put_bits32(PutBitContext *s, uint32_t value) +static void av_unused put_bits32(PutBitContext *s, uint32_t value) { BitBuf bit_buf; int bit_left; @@ -339,15 +329,12 @@ av_unused static void put_bits32(PutBitContext *s, uint32_t value) } /** - * Write up to 63 bits into a bitstream. + * Write up to 64 bits into a bitstream. */ -static inline void put_bits63(PutBitContext *s, int n, uint64_t value) +static inline void put_bits64(PutBitContext *s, int n, uint64_t value) { - av_assert2(n < 64U && value < (UINT64_C(1) << n)); + av_assert2((n == 64) || (n < 64 && value < (UINT64_C(1) << n))); -#if BUF_BITS >= 64 - put_bits_no_assert(s, n, value); -#else if (n < 32) put_bits(s, n, value); else if (n == 32) @@ -362,19 +349,6 @@ static inline void put_bits63(PutBitContext *s, int n, uint64_t value) put_bits(s, n - 32, hi); put_bits32(s, lo); #endif - } -#endif -} - -/** - * Write up to 64 bits into a bitstream. - */ -static inline void put_bits64(PutBitContext *s, int n, uint64_t value) -{ - av_assert2((n == 64) || (n < 64 && value < (UINT64_C(1) << n))); - - if (n < 64) { - put_bits63(s, n, value); } else { uint32_t lo = value & 0xffffffff; uint32_t hi = value >> 32; @@ -385,6 +359,7 @@ static inline void put_bits64(PutBitContext *s, int n, uint64_t value) put_bits32(s, hi); put_bits32(s, lo); #endif + } } @@ -392,7 +367,7 @@ static inline void put_sbits63(PutBitContext *pb, int n, int64_t value) { av_assert2(n >= 0 && n < 64); - put_bits63(pb, n, (uint64_t)(value) & (~(UINT64_MAX << n))); + put_bits64(pb, n, (uint64_t)(value) & (~(UINT64_MAX << n))); } /** diff --git a/icecat/media/ffvpx/libavcodec/ratecontrol.h b/icecat/media/ffvpx/libavcodec/ratecontrol.h index 3bcfa5658a..4d71a181b5 100644 --- a/icecat/media/ffvpx/libavcodec/ratecontrol.h +++ b/icecat/media/ffvpx/libavcodec/ratecontrol.h @@ -77,30 +77,17 @@ typedef struct RateControlContext{ int frame_count[5]; int last_non_b_pict_type; - /** - * ratecontrol qmin qmax limiting method - * 0-> clipping, 1-> use a nice continuous function to limit qscale within qmin/qmax. - */ - float qsquish; - float qmod_amp; - int qmod_freq; - float initial_cplx; - float buffer_aggressivity; - - char *rc_eq; struct AVExpr *rc_eq_eval; - - float *cplx_tab, *bits_tab; }RateControlContext; -typedef struct MPVMainEncContext MPVMainEncContext; +struct MpegEncContext; /* rate control */ -int ff_rate_control_init(MPVMainEncContext *m); -float ff_rate_estimate_qscale(MPVMainEncContext *m, int dry_run); -void ff_write_pass1_stats(MPVMainEncContext *m); -int ff_vbv_update(MPVMainEncContext *m, int frame_size); -void ff_get_2pass_fcode(MPVMainEncContext *m); +int ff_rate_control_init(struct MpegEncContext *s); +float ff_rate_estimate_qscale(struct MpegEncContext *s, int dry_run); +void ff_write_pass1_stats(struct MpegEncContext *s); +int ff_vbv_update(struct MpegEncContext *s, int frame_size); +void ff_get_2pass_fcode(struct MpegEncContext *s); void ff_rate_control_uninit(RateControlContext *rcc); #endif /* AVCODEC_RATECONTROL_H */ diff --git a/icecat/media/ffvpx/libavcodec/raw.c b/icecat/media/ffvpx/libavcodec/raw.c index 095bd4310b..578794cb7a 100644 --- a/icecat/media/ffvpx/libavcodec/raw.c +++ b/icecat/media/ffvpx/libavcodec/raw.c @@ -24,9 +24,294 @@ * Raw Video Codec */ +#include "libavutil/macros.h" #include "avcodec.h" #include "raw.h" -#include "raw_pix_fmt_tags.h" + +static const PixelFormatTag raw_pix_fmt_tags[] = { + { AV_PIX_FMT_YUV420P, MKTAG('I', '4', '2', '0') }, /* Planar formats */ + { AV_PIX_FMT_YUV420P, MKTAG('I', 'Y', 'U', 'V') }, + { AV_PIX_FMT_YUV420P, MKTAG('y', 'v', '1', '2') }, + { AV_PIX_FMT_YUV420P, MKTAG('Y', 'V', '1', '2') }, + { AV_PIX_FMT_YUV410P, MKTAG('Y', 'U', 'V', '9') }, + { AV_PIX_FMT_YUV410P, MKTAG('Y', 'V', 'U', '9') }, + { AV_PIX_FMT_YUV411P, MKTAG('Y', '4', '1', 'B') }, + { AV_PIX_FMT_YUV422P, MKTAG('Y', '4', '2', 'B') }, + { AV_PIX_FMT_YUV422P, MKTAG('P', '4', '2', '2') }, + { AV_PIX_FMT_YUV422P, MKTAG('Y', 'V', '1', '6') }, + /* yuvjXXX formats are deprecated hacks specific to libav*, + they are identical to yuvXXX */ + { AV_PIX_FMT_YUVJ420P, MKTAG('I', '4', '2', '0') }, /* Planar formats */ + { AV_PIX_FMT_YUVJ420P, MKTAG('I', 'Y', 'U', 'V') }, + { AV_PIX_FMT_YUVJ420P, MKTAG('Y', 'V', '1', '2') }, + { AV_PIX_FMT_YUVJ422P, MKTAG('Y', '4', '2', 'B') }, + { AV_PIX_FMT_YUVJ422P, MKTAG('P', '4', '2', '2') }, + { AV_PIX_FMT_GRAY8, MKTAG('Y', '8', '0', '0') }, + { AV_PIX_FMT_GRAY8, MKTAG('Y', '8', ' ', ' ') }, + + { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'Y', '2') }, /* Packed formats */ + { AV_PIX_FMT_YUYV422, MKTAG('Y', '4', '2', '2') }, + { AV_PIX_FMT_YUYV422, MKTAG('V', '4', '2', '2') }, + { AV_PIX_FMT_YUYV422, MKTAG('V', 'Y', 'U', 'Y') }, + { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'N', 'V') }, + { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'Y', 'V') }, + { AV_PIX_FMT_YVYU422, MKTAG('Y', 'V', 'Y', 'U') }, /* Philips */ + { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'V', 'Y') }, + { AV_PIX_FMT_UYVY422, MKTAG('H', 'D', 'Y', 'C') }, + { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'N', 'V') }, + { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'N', 'Y') }, + { AV_PIX_FMT_UYVY422, MKTAG('u', 'y', 'v', '1') }, + { AV_PIX_FMT_UYVY422, MKTAG('2', 'V', 'u', '1') }, + { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'R', 'n') }, /* Avid AVI Codec 1:1 */ + { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', '1', 'x') }, /* Avid 1:1x */ + { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'u', 'p') }, + { AV_PIX_FMT_UYVY422, MKTAG('V', 'D', 'T', 'Z') }, /* SoftLab-NSK VideoTizer */ + { AV_PIX_FMT_UYVY422, MKTAG('a', 'u', 'v', '2') }, + { AV_PIX_FMT_UYVY422, MKTAG('c', 'y', 'u', 'v') }, /* CYUV is also Creative YUV */ + { AV_PIX_FMT_UYYVYY411, MKTAG('Y', '4', '1', '1') }, + { AV_PIX_FMT_GRAY8, MKTAG('G', 'R', 'E', 'Y') }, + { AV_PIX_FMT_NV12, MKTAG('N', 'V', '1', '2') }, + { AV_PIX_FMT_NV21, MKTAG('N', 'V', '2', '1') }, + { AV_PIX_FMT_VUYA, MKTAG('A', 'Y', 'U', 'V') }, /* MS 4:4:4:4 */ + { AV_PIX_FMT_XV30LE, MKTAG('Y', '4', '1', '0') }, + { AV_PIX_FMT_XV48LE, MKTAG('Y', '4', '1', '6') }, + { AV_PIX_FMT_Y210LE, MKTAG('Y', '2', '1', '0') }, + { AV_PIX_FMT_Y216LE, MKTAG('Y', '2', '1', '6') }, + + /* nut */ + { AV_PIX_FMT_RGB555LE, MKTAG('R', 'G', 'B', 15) }, + { AV_PIX_FMT_BGR555LE, MKTAG('B', 'G', 'R', 15) }, + { AV_PIX_FMT_RGB565LE, MKTAG('R', 'G', 'B', 16) }, + { AV_PIX_FMT_BGR565LE, MKTAG('B', 'G', 'R', 16) }, + { AV_PIX_FMT_RGB555BE, MKTAG(15 , 'B', 'G', 'R') }, + { AV_PIX_FMT_BGR555BE, MKTAG(15 , 'R', 'G', 'B') }, + { AV_PIX_FMT_RGB565BE, MKTAG(16 , 'B', 'G', 'R') }, + { AV_PIX_FMT_BGR565BE, MKTAG(16 , 'R', 'G', 'B') }, + { AV_PIX_FMT_RGB444LE, MKTAG('R', 'G', 'B', 12) }, + { AV_PIX_FMT_BGR444LE, MKTAG('B', 'G', 'R', 12) }, + { AV_PIX_FMT_RGB444BE, MKTAG(12 , 'B', 'G', 'R') }, + { AV_PIX_FMT_BGR444BE, MKTAG(12 , 'R', 'G', 'B') }, + { AV_PIX_FMT_RGBA64LE, MKTAG('R', 'B', 'A', 64 ) }, + { AV_PIX_FMT_BGRA64LE, MKTAG('B', 'R', 'A', 64 ) }, + { AV_PIX_FMT_RGBA64BE, MKTAG(64 , 'R', 'B', 'A') }, + { AV_PIX_FMT_BGRA64BE, MKTAG(64 , 'B', 'R', 'A') }, + { AV_PIX_FMT_RGBA, MKTAG('R', 'G', 'B', 'A') }, + { AV_PIX_FMT_RGB0, MKTAG('R', 'G', 'B', 0 ) }, + { AV_PIX_FMT_BGRA, MKTAG('B', 'G', 'R', 'A') }, + { AV_PIX_FMT_BGR0, MKTAG('B', 'G', 'R', 0 ) }, + { AV_PIX_FMT_ABGR, MKTAG('A', 'B', 'G', 'R') }, + { AV_PIX_FMT_0BGR, MKTAG( 0 , 'B', 'G', 'R') }, + { AV_PIX_FMT_ARGB, MKTAG('A', 'R', 'G', 'B') }, + { AV_PIX_FMT_0RGB, MKTAG( 0 , 'R', 'G', 'B') }, + { AV_PIX_FMT_RGB24, MKTAG('R', 'G', 'B', 24 ) }, + { AV_PIX_FMT_BGR24, MKTAG('B', 'G', 'R', 24 ) }, + { AV_PIX_FMT_YUV411P, MKTAG('4', '1', '1', 'P') }, + { AV_PIX_FMT_YUV422P, MKTAG('4', '2', '2', 'P') }, + { AV_PIX_FMT_YUVJ422P, MKTAG('4', '2', '2', 'P') }, + { AV_PIX_FMT_YUV440P, MKTAG('4', '4', '0', 'P') }, + { AV_PIX_FMT_YUVJ440P, MKTAG('4', '4', '0', 'P') }, + { AV_PIX_FMT_YUV444P, MKTAG('4', '4', '4', 'P') }, + { AV_PIX_FMT_YUVJ444P, MKTAG('4', '4', '4', 'P') }, + { AV_PIX_FMT_MONOWHITE,MKTAG('B', '1', 'W', '0') }, + { AV_PIX_FMT_MONOBLACK,MKTAG('B', '0', 'W', '1') }, + { AV_PIX_FMT_BGR8, MKTAG('B', 'G', 'R', 8 ) }, + { AV_PIX_FMT_RGB8, MKTAG('R', 'G', 'B', 8 ) }, + { AV_PIX_FMT_BGR4, MKTAG('B', 'G', 'R', 4 ) }, + { AV_PIX_FMT_RGB4, MKTAG('R', 'G', 'B', 4 ) }, + { AV_PIX_FMT_RGB4_BYTE,MKTAG('B', '4', 'B', 'Y') }, + { AV_PIX_FMT_BGR4_BYTE,MKTAG('R', '4', 'B', 'Y') }, + { AV_PIX_FMT_RGB48LE, MKTAG('R', 'G', 'B', 48 ) }, + { AV_PIX_FMT_RGB48BE, MKTAG( 48, 'R', 'G', 'B') }, + { AV_PIX_FMT_BGR48LE, MKTAG('B', 'G', 'R', 48 ) }, + { AV_PIX_FMT_BGR48BE, MKTAG( 48, 'B', 'G', 'R') }, + { AV_PIX_FMT_GRAY9LE, MKTAG('Y', '1', 0 , 9 ) }, + { AV_PIX_FMT_GRAY9BE, MKTAG( 9 , 0 , '1', 'Y') }, + { AV_PIX_FMT_GRAY10LE, MKTAG('Y', '1', 0 , 10 ) }, + { AV_PIX_FMT_GRAY10BE, MKTAG(10 , 0 , '1', 'Y') }, + { AV_PIX_FMT_GRAY12LE, MKTAG('Y', '1', 0 , 12 ) }, + { AV_PIX_FMT_GRAY12BE, MKTAG(12 , 0 , '1', 'Y') }, + { AV_PIX_FMT_GRAY14LE, MKTAG('Y', '1', 0 , 14 ) }, + { AV_PIX_FMT_GRAY14BE, MKTAG(14 , 0 , '1', 'Y') }, + { AV_PIX_FMT_GRAY16LE, MKTAG('Y', '1', 0 , 16 ) }, + { AV_PIX_FMT_GRAY16BE, MKTAG(16 , 0 , '1', 'Y') }, + { AV_PIX_FMT_YUV420P9LE, MKTAG('Y', '3', 11 , 9 ) }, + { AV_PIX_FMT_YUV420P9BE, MKTAG( 9 , 11 , '3', 'Y') }, + { AV_PIX_FMT_YUV422P9LE, MKTAG('Y', '3', 10 , 9 ) }, + { AV_PIX_FMT_YUV422P9BE, MKTAG( 9 , 10 , '3', 'Y') }, + { AV_PIX_FMT_YUV444P9LE, MKTAG('Y', '3', 0 , 9 ) }, + { AV_PIX_FMT_YUV444P9BE, MKTAG( 9 , 0 , '3', 'Y') }, + { AV_PIX_FMT_YUV420P10LE, MKTAG('Y', '3', 11 , 10 ) }, + { AV_PIX_FMT_YUV420P10BE, MKTAG(10 , 11 , '3', 'Y') }, + { AV_PIX_FMT_YUV422P10LE, MKTAG('Y', '3', 10 , 10 ) }, + { AV_PIX_FMT_YUV422P10BE, MKTAG(10 , 10 , '3', 'Y') }, + { AV_PIX_FMT_YUV444P10LE, MKTAG('Y', '3', 0 , 10 ) }, + { AV_PIX_FMT_YUV444P10BE, MKTAG(10 , 0 , '3', 'Y') }, + { AV_PIX_FMT_YUV420P12LE, MKTAG('Y', '3', 11 , 12 ) }, + { AV_PIX_FMT_YUV420P12BE, MKTAG(12 , 11 , '3', 'Y') }, + { AV_PIX_FMT_YUV422P12LE, MKTAG('Y', '3', 10 , 12 ) }, + { AV_PIX_FMT_YUV422P12BE, MKTAG(12 , 10 , '3', 'Y') }, + { AV_PIX_FMT_YUV444P12LE, MKTAG('Y', '3', 0 , 12 ) }, + { AV_PIX_FMT_YUV444P12BE, MKTAG(12 , 0 , '3', 'Y') }, + { AV_PIX_FMT_YUV420P14LE, MKTAG('Y', '3', 11 , 14 ) }, + { AV_PIX_FMT_YUV420P14BE, MKTAG(14 , 11 , '3', 'Y') }, + { AV_PIX_FMT_YUV422P14LE, MKTAG('Y', '3', 10 , 14 ) }, + { AV_PIX_FMT_YUV422P14BE, MKTAG(14 , 10 , '3', 'Y') }, + { AV_PIX_FMT_YUV444P14LE, MKTAG('Y', '3', 0 , 14 ) }, + { AV_PIX_FMT_YUV444P14BE, MKTAG(14 , 0 , '3', 'Y') }, + { AV_PIX_FMT_YUV420P16LE, MKTAG('Y', '3', 11 , 16 ) }, + { AV_PIX_FMT_YUV420P16BE, MKTAG(16 , 11 , '3', 'Y') }, + { AV_PIX_FMT_YUV422P16LE, MKTAG('Y', '3', 10 , 16 ) }, + { AV_PIX_FMT_YUV422P16BE, MKTAG(16 , 10 , '3', 'Y') }, + { AV_PIX_FMT_YUV444P16LE, MKTAG('Y', '3', 0 , 16 ) }, + { AV_PIX_FMT_YUV444P16BE, MKTAG(16 , 0 , '3', 'Y') }, + { AV_PIX_FMT_YUVA420P, MKTAG('Y', '4', 11 , 8 ) }, + { AV_PIX_FMT_YUVA422P, MKTAG('Y', '4', 10 , 8 ) }, + { AV_PIX_FMT_YUVA444P, MKTAG('Y', '4', 0 , 8 ) }, + { AV_PIX_FMT_YA8, MKTAG('Y', '2', 0 , 8 ) }, + { AV_PIX_FMT_PAL8, MKTAG('P', 'A', 'L', 8 ) }, + + { AV_PIX_FMT_YUVA420P9LE, MKTAG('Y', '4', 11 , 9 ) }, + { AV_PIX_FMT_YUVA420P9BE, MKTAG( 9 , 11 , '4', 'Y') }, + { AV_PIX_FMT_YUVA422P9LE, MKTAG('Y', '4', 10 , 9 ) }, + { AV_PIX_FMT_YUVA422P9BE, MKTAG( 9 , 10 , '4', 'Y') }, + { AV_PIX_FMT_YUVA444P9LE, MKTAG('Y', '4', 0 , 9 ) }, + { AV_PIX_FMT_YUVA444P9BE, MKTAG( 9 , 0 , '4', 'Y') }, + { AV_PIX_FMT_YUVA420P10LE, MKTAG('Y', '4', 11 , 10 ) }, + { AV_PIX_FMT_YUVA420P10BE, MKTAG(10 , 11 , '4', 'Y') }, + { AV_PIX_FMT_YUVA422P10LE, MKTAG('Y', '4', 10 , 10 ) }, + { AV_PIX_FMT_YUVA422P10BE, MKTAG(10 , 10 , '4', 'Y') }, + { AV_PIX_FMT_YUVA444P10LE, MKTAG('Y', '4', 0 , 10 ) }, + { AV_PIX_FMT_YUVA444P10BE, MKTAG(10 , 0 , '4', 'Y') }, + { AV_PIX_FMT_YUVA422P12LE, MKTAG('Y', '4', 10 , 12 ) }, + { AV_PIX_FMT_YUVA422P12BE, MKTAG(12 , 10 , '4', 'Y') }, + { AV_PIX_FMT_YUVA444P12LE, MKTAG('Y', '4', 0 , 12 ) }, + { AV_PIX_FMT_YUVA444P12BE, MKTAG(12 , 0 , '4', 'Y') }, + { AV_PIX_FMT_YUVA420P16LE, MKTAG('Y', '4', 11 , 16 ) }, + { AV_PIX_FMT_YUVA420P16BE, MKTAG(16 , 11 , '4', 'Y') }, + { AV_PIX_FMT_YUVA422P16LE, MKTAG('Y', '4', 10 , 16 ) }, + { AV_PIX_FMT_YUVA422P16BE, MKTAG(16 , 10 , '4', 'Y') }, + { AV_PIX_FMT_YUVA444P16LE, MKTAG('Y', '4', 0 , 16 ) }, + { AV_PIX_FMT_YUVA444P16BE, MKTAG(16 , 0 , '4', 'Y') }, + + { AV_PIX_FMT_GBRP, MKTAG('G', '3', 00 , 8 ) }, + { AV_PIX_FMT_GBRP9LE, MKTAG('G', '3', 00 , 9 ) }, + { AV_PIX_FMT_GBRP9BE, MKTAG( 9 , 00 , '3', 'G') }, + { AV_PIX_FMT_GBRP10LE, MKTAG('G', '3', 00 , 10 ) }, + { AV_PIX_FMT_GBRP10BE, MKTAG(10 , 00 , '3', 'G') }, + { AV_PIX_FMT_GBRP12LE, MKTAG('G', '3', 00 , 12 ) }, + { AV_PIX_FMT_GBRP12BE, MKTAG(12 , 00 , '3', 'G') }, + { AV_PIX_FMT_GBRP14LE, MKTAG('G', '3', 00 , 14 ) }, + { AV_PIX_FMT_GBRP14BE, MKTAG(14 , 00 , '3', 'G') }, + { AV_PIX_FMT_GBRP16LE, MKTAG('G', '3', 00 , 16 ) }, + { AV_PIX_FMT_GBRP16BE, MKTAG(16 , 00 , '3', 'G') }, + + { AV_PIX_FMT_GBRAP, MKTAG('G', '4', 00 , 8 ) }, + { AV_PIX_FMT_GBRAP10LE, MKTAG('G', '4', 00 , 10 ) }, + { AV_PIX_FMT_GBRAP10BE, MKTAG(10 , 00 , '4', 'G') }, + { AV_PIX_FMT_GBRAP12LE, MKTAG('G', '4', 00 , 12 ) }, + { AV_PIX_FMT_GBRAP12BE, MKTAG(12 , 00 , '4', 'G') }, + { AV_PIX_FMT_GBRAP14LE, MKTAG('G', '4', 00 , 14 ) }, + { AV_PIX_FMT_GBRAP14BE, MKTAG(14 , 00 , '4', 'G') }, + { AV_PIX_FMT_GBRAP16LE, MKTAG('G', '4', 00 , 16 ) }, + { AV_PIX_FMT_GBRAP16BE, MKTAG(16 , 00 , '4', 'G') }, + + { AV_PIX_FMT_XYZ12LE, MKTAG('X', 'Y', 'Z' , 36 ) }, + { AV_PIX_FMT_XYZ12BE, MKTAG(36 , 'Z' , 'Y', 'X') }, + + { AV_PIX_FMT_BAYER_BGGR8, MKTAG(0xBA, 'B', 'G', 8 ) }, + { AV_PIX_FMT_BAYER_BGGR16LE, MKTAG(0xBA, 'B', 'G', 16 ) }, + { AV_PIX_FMT_BAYER_BGGR16BE, MKTAG(16 , 'G', 'B', 0xBA) }, + { AV_PIX_FMT_BAYER_RGGB8, MKTAG(0xBA, 'R', 'G', 8 ) }, + { AV_PIX_FMT_BAYER_RGGB16LE, MKTAG(0xBA, 'R', 'G', 16 ) }, + { AV_PIX_FMT_BAYER_RGGB16BE, MKTAG(16 , 'G', 'R', 0xBA) }, + { AV_PIX_FMT_BAYER_GBRG8, MKTAG(0xBA, 'G', 'B', 8 ) }, + { AV_PIX_FMT_BAYER_GBRG16LE, MKTAG(0xBA, 'G', 'B', 16 ) }, + { AV_PIX_FMT_BAYER_GBRG16BE, MKTAG(16, 'B', 'G', 0xBA) }, + { AV_PIX_FMT_BAYER_GRBG8, MKTAG(0xBA, 'G', 'R', 8 ) }, + { AV_PIX_FMT_BAYER_GRBG16LE, MKTAG(0xBA, 'G', 'R', 16 ) }, + { AV_PIX_FMT_BAYER_GRBG16BE, MKTAG(16, 'R', 'G', 0xBA) }, + + /* quicktime */ + { AV_PIX_FMT_YUV420P, MKTAG('R', '4', '2', '0') }, /* Radius DV YUV PAL */ + { AV_PIX_FMT_YUV411P, MKTAG('R', '4', '1', '1') }, /* Radius DV YUV NTSC */ + { AV_PIX_FMT_UYVY422, MKTAG('2', 'v', 'u', 'y') }, + { AV_PIX_FMT_UYVY422, MKTAG('2', 'V', 'u', 'y') }, + { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'U', 'I') }, /* FIXME merge both fields */ + { AV_PIX_FMT_UYVY422, MKTAG('b', 'x', 'y', 'v') }, + { AV_PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', '2') }, + { AV_PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', 's') }, + { AV_PIX_FMT_YUYV422, MKTAG('D', 'V', 'O', 'O') }, /* Digital Voodoo SD 8 Bit */ + { AV_PIX_FMT_VYU444, MKTAG('v', '3', '0', '8') }, + { AV_PIX_FMT_UYVA, MKTAG('v', '4', '0', '8') }, + { AV_PIX_FMT_V30XLE, MKTAG('v', '4', '1', '0') }, + { AV_PIX_FMT_AYUV, MKTAG('y', '4', '0', '8') }, + { AV_PIX_FMT_RGB555LE,MKTAG('L', '5', '5', '5') }, + { AV_PIX_FMT_RGB565LE,MKTAG('L', '5', '6', '5') }, + { AV_PIX_FMT_RGB565BE,MKTAG('B', '5', '6', '5') }, + { AV_PIX_FMT_BGR24, MKTAG('2', '4', 'B', 'G') }, + { AV_PIX_FMT_BGR24, MKTAG('b', 'x', 'b', 'g') }, + { AV_PIX_FMT_BGRA, MKTAG('B', 'G', 'R', 'A') }, + { AV_PIX_FMT_RGBA, MKTAG('R', 'G', 'B', 'A') }, + { AV_PIX_FMT_RGB24, MKTAG('b', 'x', 'r', 'g') }, + { AV_PIX_FMT_ABGR, MKTAG('A', 'B', 'G', 'R') }, + { AV_PIX_FMT_GRAY16BE,MKTAG('b', '1', '6', 'g') }, + { AV_PIX_FMT_RGB48BE, MKTAG('b', '4', '8', 'r') }, + { AV_PIX_FMT_RGBA64BE,MKTAG('b', '6', '4', 'a') }, + { AV_PIX_FMT_BAYER_RGGB16BE, MKTAG('B', 'G', 'G', 'R') }, + + /* vlc */ + { AV_PIX_FMT_YUV410P, MKTAG('I', '4', '1', '0') }, + { AV_PIX_FMT_YUV411P, MKTAG('I', '4', '1', '1') }, + { AV_PIX_FMT_YUV422P, MKTAG('I', '4', '2', '2') }, + { AV_PIX_FMT_YUV440P, MKTAG('I', '4', '4', '0') }, + { AV_PIX_FMT_YUV444P, MKTAG('I', '4', '4', '4') }, + { AV_PIX_FMT_YUVJ420P, MKTAG('J', '4', '2', '0') }, + { AV_PIX_FMT_YUVJ422P, MKTAG('J', '4', '2', '2') }, + { AV_PIX_FMT_YUVJ440P, MKTAG('J', '4', '4', '0') }, + { AV_PIX_FMT_YUVJ444P, MKTAG('J', '4', '4', '4') }, + { AV_PIX_FMT_YUVA444P, MKTAG('Y', 'U', 'V', 'A') }, + { AV_PIX_FMT_YUVA420P, MKTAG('I', '4', '0', 'A') }, + { AV_PIX_FMT_YUVA422P, MKTAG('I', '4', '2', 'A') }, + { AV_PIX_FMT_RGB8, MKTAG('R', 'G', 'B', '2') }, + { AV_PIX_FMT_RGB555LE, MKTAG('R', 'V', '1', '5') }, + { AV_PIX_FMT_RGB565LE, MKTAG('R', 'V', '1', '6') }, + { AV_PIX_FMT_BGR24, MKTAG('R', 'V', '2', '4') }, + { AV_PIX_FMT_BGR0, MKTAG('R', 'V', '3', '2') }, + { AV_PIX_FMT_RGBA, MKTAG('A', 'V', '3', '2') }, + { AV_PIX_FMT_YUV420P9LE, MKTAG('I', '0', '9', 'L') }, + { AV_PIX_FMT_YUV420P9BE, MKTAG('I', '0', '9', 'B') }, + { AV_PIX_FMT_YUV422P9LE, MKTAG('I', '2', '9', 'L') }, + { AV_PIX_FMT_YUV422P9BE, MKTAG('I', '2', '9', 'B') }, + { AV_PIX_FMT_YUV444P9LE, MKTAG('I', '4', '9', 'L') }, + { AV_PIX_FMT_YUV444P9BE, MKTAG('I', '4', '9', 'B') }, + { AV_PIX_FMT_YUV420P10LE, MKTAG('I', '0', 'A', 'L') }, + { AV_PIX_FMT_YUV420P10BE, MKTAG('I', '0', 'A', 'B') }, + { AV_PIX_FMT_YUV422P10LE, MKTAG('I', '2', 'A', 'L') }, + { AV_PIX_FMT_YUV422P10BE, MKTAG('I', '2', 'A', 'B') }, + { AV_PIX_FMT_YUV444P10LE, MKTAG('I', '4', 'A', 'L') }, + { AV_PIX_FMT_YUV444P10BE, MKTAG('I', '4', 'A', 'B') }, + { AV_PIX_FMT_YUV420P12LE, MKTAG('I', '0', 'C', 'L') }, + { AV_PIX_FMT_YUV420P12BE, MKTAG('I', '0', 'C', 'B') }, + { AV_PIX_FMT_YUV422P12LE, MKTAG('I', '2', 'C', 'L') }, + { AV_PIX_FMT_YUV422P12BE, MKTAG('I', '2', 'C', 'B') }, + { AV_PIX_FMT_YUV444P12LE, MKTAG('I', '4', 'C', 'L') }, + { AV_PIX_FMT_YUV444P12BE, MKTAG('I', '4', 'C', 'B') }, + { AV_PIX_FMT_YUV420P16LE, MKTAG('I', '0', 'F', 'L') }, + { AV_PIX_FMT_YUV420P16BE, MKTAG('I', '0', 'F', 'B') }, + { AV_PIX_FMT_YUV444P16LE, MKTAG('I', '4', 'F', 'L') }, + { AV_PIX_FMT_YUV444P16BE, MKTAG('I', '4', 'F', 'B') }, + + /* special */ + { AV_PIX_FMT_RGB565LE,MKTAG( 3 , 0 , 0 , 0 ) }, /* flipped RGB565LE */ + { AV_PIX_FMT_YUV444P, MKTAG('Y', 'V', '2', '4') }, /* YUV444P, swapped UV */ + + { AV_PIX_FMT_NONE, 0 }, +}; + +const struct PixelFormatTag *avpriv_get_raw_pix_fmt_tags(void) +{ + return raw_pix_fmt_tags; +} unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat fmt) { diff --git a/icecat/media/ffvpx/libavcodec/raw.h b/icecat/media/ffvpx/libavcodec/raw.h index 69f7f530ad..9a4ddef8fc 100644 --- a/icecat/media/ffvpx/libavcodec/raw.h +++ b/icecat/media/ffvpx/libavcodec/raw.h @@ -34,6 +34,8 @@ typedef struct PixelFormatTag { unsigned int fourcc; } PixelFormatTag; +const struct PixelFormatTag *avpriv_get_raw_pix_fmt_tags(void); + enum PixelFormatTagLists { PIX_FMT_LIST_RAW, PIX_FMT_LIST_AVI, diff --git a/icecat/media/ffvpx/libavcodec/raw_pix_fmt_tags.h b/icecat/media/ffvpx/libavcodec/raw_pix_fmt_tags.h deleted file mode 100644 index bdde060cf7..0000000000 --- a/icecat/media/ffvpx/libavcodec/raw_pix_fmt_tags.h +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Raw Video Codec - * Copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_RAW_PIX_FMT_TAGS_H -#define AVCODEC_RAW_PIX_FMT_TAGS_H - -#include "raw.h" -#include "libavutil/macros.h" - -static const PixelFormatTag raw_pix_fmt_tags[] = { - { AV_PIX_FMT_YUV420P, MKTAG('I', '4', '2', '0') }, /* Planar formats */ - { AV_PIX_FMT_YUV420P, MKTAG('I', 'Y', 'U', 'V') }, - { AV_PIX_FMT_YUV420P, MKTAG('y', 'v', '1', '2') }, - { AV_PIX_FMT_YUV420P, MKTAG('Y', 'V', '1', '2') }, - { AV_PIX_FMT_YUV410P, MKTAG('Y', 'U', 'V', '9') }, - { AV_PIX_FMT_YUV410P, MKTAG('Y', 'V', 'U', '9') }, - { AV_PIX_FMT_YUV411P, MKTAG('Y', '4', '1', 'B') }, - { AV_PIX_FMT_YUV422P, MKTAG('Y', '4', '2', 'B') }, - { AV_PIX_FMT_YUV422P, MKTAG('P', '4', '2', '2') }, - { AV_PIX_FMT_YUV422P, MKTAG('Y', 'V', '1', '6') }, - /* yuvjXXX formats are deprecated hacks specific to libav*, - they are identical to yuvXXX */ - { AV_PIX_FMT_YUVJ420P, MKTAG('I', '4', '2', '0') }, /* Planar formats */ - { AV_PIX_FMT_YUVJ420P, MKTAG('I', 'Y', 'U', 'V') }, - { AV_PIX_FMT_YUVJ420P, MKTAG('Y', 'V', '1', '2') }, - { AV_PIX_FMT_YUVJ422P, MKTAG('Y', '4', '2', 'B') }, - { AV_PIX_FMT_YUVJ422P, MKTAG('P', '4', '2', '2') }, - { AV_PIX_FMT_GRAY8, MKTAG('Y', '8', '0', '0') }, - { AV_PIX_FMT_GRAY8, MKTAG('Y', '8', ' ', ' ') }, - - { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'Y', '2') }, /* Packed formats */ - { AV_PIX_FMT_YUYV422, MKTAG('Y', '4', '2', '2') }, - { AV_PIX_FMT_YUYV422, MKTAG('V', '4', '2', '2') }, - { AV_PIX_FMT_YUYV422, MKTAG('V', 'Y', 'U', 'Y') }, - { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'N', 'V') }, - { AV_PIX_FMT_YUYV422, MKTAG('Y', 'U', 'Y', 'V') }, - { AV_PIX_FMT_YVYU422, MKTAG('Y', 'V', 'Y', 'U') }, /* Philips */ - { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'V', 'Y') }, - { AV_PIX_FMT_UYVY422, MKTAG('H', 'D', 'Y', 'C') }, - { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'N', 'V') }, - { AV_PIX_FMT_UYVY422, MKTAG('U', 'Y', 'N', 'Y') }, - { AV_PIX_FMT_UYVY422, MKTAG('u', 'y', 'v', '1') }, - { AV_PIX_FMT_UYVY422, MKTAG('2', 'V', 'u', '1') }, - { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'R', 'n') }, /* Avid AVI Codec 1:1 */ - { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', '1', 'x') }, /* Avid 1:1x */ - { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'u', 'p') }, - { AV_PIX_FMT_UYVY422, MKTAG('V', 'D', 'T', 'Z') }, /* SoftLab-NSK VideoTizer */ - { AV_PIX_FMT_UYVY422, MKTAG('a', 'u', 'v', '2') }, - { AV_PIX_FMT_UYVY422, MKTAG('c', 'y', 'u', 'v') }, /* CYUV is also Creative YUV */ - { AV_PIX_FMT_UYYVYY411, MKTAG('Y', '4', '1', '1') }, - { AV_PIX_FMT_GRAY8, MKTAG('G', 'R', 'E', 'Y') }, - { AV_PIX_FMT_NV12, MKTAG('N', 'V', '1', '2') }, - { AV_PIX_FMT_NV21, MKTAG('N', 'V', '2', '1') }, - { AV_PIX_FMT_VUYA, MKTAG('A', 'Y', 'U', 'V') }, /* MS 4:4:4:4 */ - { AV_PIX_FMT_XV30LE, MKTAG('Y', '4', '1', '0') }, - { AV_PIX_FMT_XV48LE, MKTAG('Y', '4', '1', '6') }, - { AV_PIX_FMT_Y210LE, MKTAG('Y', '2', '1', '0') }, - { AV_PIX_FMT_Y216LE, MKTAG('Y', '2', '1', '6') }, - - /* nut */ - { AV_PIX_FMT_RGB555LE, MKTAG('R', 'G', 'B', 15) }, - { AV_PIX_FMT_BGR555LE, MKTAG('B', 'G', 'R', 15) }, - { AV_PIX_FMT_RGB565LE, MKTAG('R', 'G', 'B', 16) }, - { AV_PIX_FMT_BGR565LE, MKTAG('B', 'G', 'R', 16) }, - { AV_PIX_FMT_RGB555BE, MKTAG(15 , 'B', 'G', 'R') }, - { AV_PIX_FMT_BGR555BE, MKTAG(15 , 'R', 'G', 'B') }, - { AV_PIX_FMT_RGB565BE, MKTAG(16 , 'B', 'G', 'R') }, - { AV_PIX_FMT_BGR565BE, MKTAG(16 , 'R', 'G', 'B') }, - { AV_PIX_FMT_RGB444LE, MKTAG('R', 'G', 'B', 12) }, - { AV_PIX_FMT_BGR444LE, MKTAG('B', 'G', 'R', 12) }, - { AV_PIX_FMT_RGB444BE, MKTAG(12 , 'B', 'G', 'R') }, - { AV_PIX_FMT_BGR444BE, MKTAG(12 , 'R', 'G', 'B') }, - { AV_PIX_FMT_RGBA64LE, MKTAG('R', 'B', 'A', 64 ) }, - { AV_PIX_FMT_BGRA64LE, MKTAG('B', 'R', 'A', 64 ) }, - { AV_PIX_FMT_RGBA64BE, MKTAG(64 , 'R', 'B', 'A') }, - { AV_PIX_FMT_BGRA64BE, MKTAG(64 , 'B', 'R', 'A') }, - { AV_PIX_FMT_RGBA, MKTAG('R', 'G', 'B', 'A') }, - { AV_PIX_FMT_RGB0, MKTAG('R', 'G', 'B', 0 ) }, - { AV_PIX_FMT_BGRA, MKTAG('B', 'G', 'R', 'A') }, - { AV_PIX_FMT_BGR0, MKTAG('B', 'G', 'R', 0 ) }, - { AV_PIX_FMT_ABGR, MKTAG('A', 'B', 'G', 'R') }, - { AV_PIX_FMT_0BGR, MKTAG( 0 , 'B', 'G', 'R') }, - { AV_PIX_FMT_ARGB, MKTAG('A', 'R', 'G', 'B') }, - { AV_PIX_FMT_0RGB, MKTAG( 0 , 'R', 'G', 'B') }, - { AV_PIX_FMT_RGB24, MKTAG('R', 'G', 'B', 24 ) }, - { AV_PIX_FMT_BGR24, MKTAG('B', 'G', 'R', 24 ) }, - { AV_PIX_FMT_YUV411P, MKTAG('4', '1', '1', 'P') }, - { AV_PIX_FMT_YUV422P, MKTAG('4', '2', '2', 'P') }, - { AV_PIX_FMT_YUVJ422P, MKTAG('4', '2', '2', 'P') }, - { AV_PIX_FMT_YUV440P, MKTAG('4', '4', '0', 'P') }, - { AV_PIX_FMT_YUVJ440P, MKTAG('4', '4', '0', 'P') }, - { AV_PIX_FMT_YUV444P, MKTAG('4', '4', '4', 'P') }, - { AV_PIX_FMT_YUVJ444P, MKTAG('4', '4', '4', 'P') }, - { AV_PIX_FMT_MONOWHITE, MKTAG('B', '1', 'W', '0') }, - { AV_PIX_FMT_MONOBLACK, MKTAG('B', '0', 'W', '1') }, - { AV_PIX_FMT_BGR8, MKTAG('B', 'G', 'R', 8 ) }, - { AV_PIX_FMT_RGB8, MKTAG('R', 'G', 'B', 8 ) }, - { AV_PIX_FMT_BGR4, MKTAG('B', 'G', 'R', 4 ) }, - { AV_PIX_FMT_RGB4, MKTAG('R', 'G', 'B', 4 ) }, - { AV_PIX_FMT_RGB4_BYTE, MKTAG('B', '4', 'B', 'Y') }, - { AV_PIX_FMT_BGR4_BYTE, MKTAG('R', '4', 'B', 'Y') }, - { AV_PIX_FMT_RGB48LE, MKTAG('R', 'G', 'B', 48 ) }, - { AV_PIX_FMT_RGB48BE, MKTAG( 48, 'R', 'G', 'B') }, - { AV_PIX_FMT_BGR48LE, MKTAG('B', 'G', 'R', 48 ) }, - { AV_PIX_FMT_BGR48BE, MKTAG( 48, 'B', 'G', 'R') }, - { AV_PIX_FMT_GRAY9LE, MKTAG('Y', '1', 0 , 9 ) }, - { AV_PIX_FMT_GRAY9BE, MKTAG( 9 , 0 , '1', 'Y') }, - { AV_PIX_FMT_GRAY10LE, MKTAG('Y', '1', 0 , 10 ) }, - { AV_PIX_FMT_GRAY10BE, MKTAG(10 , 0 , '1', 'Y') }, - { AV_PIX_FMT_GRAY12LE, MKTAG('Y', '1', 0 , 12 ) }, - { AV_PIX_FMT_GRAY12BE, MKTAG(12 , 0 , '1', 'Y') }, - { AV_PIX_FMT_GRAY14LE, MKTAG('Y', '1', 0 , 14 ) }, - { AV_PIX_FMT_GRAY14BE, MKTAG(14 , 0 , '1', 'Y') }, - { AV_PIX_FMT_GRAY16LE, MKTAG('Y', '1', 0 , 16 ) }, - { AV_PIX_FMT_GRAY16BE, MKTAG(16 , 0 , '1', 'Y') }, - { AV_PIX_FMT_YUV420P9LE, MKTAG('Y', '3', 11 , 9 ) }, - { AV_PIX_FMT_YUV420P9BE, MKTAG( 9 , 11 , '3', 'Y') }, - { AV_PIX_FMT_YUV422P9LE, MKTAG('Y', '3', 10 , 9 ) }, - { AV_PIX_FMT_YUV422P9BE, MKTAG( 9 , 10 , '3', 'Y') }, - { AV_PIX_FMT_YUV444P9LE, MKTAG('Y', '3', 0 , 9 ) }, - { AV_PIX_FMT_YUV444P9BE, MKTAG( 9 , 0 , '3', 'Y') }, - { AV_PIX_FMT_YUV420P10LE, MKTAG('Y', '3', 11 , 10 ) }, - { AV_PIX_FMT_YUV420P10BE, MKTAG(10 , 11 , '3', 'Y') }, - { AV_PIX_FMT_YUV422P10LE, MKTAG('Y', '3', 10 , 10 ) }, - { AV_PIX_FMT_YUV422P10BE, MKTAG(10 , 10 , '3', 'Y') }, - { AV_PIX_FMT_YUV444P10LE, MKTAG('Y', '3', 0 , 10 ) }, - { AV_PIX_FMT_YUV444P10BE, MKTAG(10 , 0 , '3', 'Y') }, - { AV_PIX_FMT_YUV420P12LE, MKTAG('Y', '3', 11 , 12 ) }, - { AV_PIX_FMT_YUV420P12BE, MKTAG(12 , 11 , '3', 'Y') }, - { AV_PIX_FMT_YUV422P12LE, MKTAG('Y', '3', 10 , 12 ) }, - { AV_PIX_FMT_YUV422P12BE, MKTAG(12 , 10 , '3', 'Y') }, - { AV_PIX_FMT_YUV444P12LE, MKTAG('Y', '3', 0 , 12 ) }, - { AV_PIX_FMT_YUV444P12BE, MKTAG(12 , 0 , '3', 'Y') }, - { AV_PIX_FMT_YUV420P14LE, MKTAG('Y', '3', 11 , 14 ) }, - { AV_PIX_FMT_YUV420P14BE, MKTAG(14 , 11 , '3', 'Y') }, - { AV_PIX_FMT_YUV422P14LE, MKTAG('Y', '3', 10 , 14 ) }, - { AV_PIX_FMT_YUV422P14BE, MKTAG(14 , 10 , '3', 'Y') }, - { AV_PIX_FMT_YUV444P14LE, MKTAG('Y', '3', 0 , 14 ) }, - { AV_PIX_FMT_YUV444P14BE, MKTAG(14 , 0 , '3', 'Y') }, - { AV_PIX_FMT_YUV420P16LE, MKTAG('Y', '3', 11 , 16 ) }, - { AV_PIX_FMT_YUV420P16BE, MKTAG(16 , 11 , '3', 'Y') }, - { AV_PIX_FMT_YUV422P16LE, MKTAG('Y', '3', 10 , 16 ) }, - { AV_PIX_FMT_YUV422P16BE, MKTAG(16 , 10 , '3', 'Y') }, - { AV_PIX_FMT_YUV444P16LE, MKTAG('Y', '3', 0 , 16 ) }, - { AV_PIX_FMT_YUV444P16BE, MKTAG(16 , 0 , '3', 'Y') }, - { AV_PIX_FMT_YUVA420P, MKTAG('Y', '4', 11 , 8 ) }, - { AV_PIX_FMT_YUVA422P, MKTAG('Y', '4', 10 , 8 ) }, - { AV_PIX_FMT_YUVA444P, MKTAG('Y', '4', 0 , 8 ) }, - { AV_PIX_FMT_YA8, MKTAG('Y', '2', 0 , 8 ) }, - { AV_PIX_FMT_PAL8, MKTAG('P', 'A', 'L', 8 ) }, - - { AV_PIX_FMT_YUVA420P9LE, MKTAG('Y', '4', 11 , 9 ) }, - { AV_PIX_FMT_YUVA420P9BE, MKTAG( 9 , 11 , '4', 'Y') }, - { AV_PIX_FMT_YUVA422P9LE, MKTAG('Y', '4', 10 , 9 ) }, - { AV_PIX_FMT_YUVA422P9BE, MKTAG( 9 , 10 , '4', 'Y') }, - { AV_PIX_FMT_YUVA444P9LE, MKTAG('Y', '4', 0 , 9 ) }, - { AV_PIX_FMT_YUVA444P9BE, MKTAG( 9 , 0 , '4', 'Y') }, - { AV_PIX_FMT_YUVA420P10LE, MKTAG('Y', '4', 11 , 10 ) }, - { AV_PIX_FMT_YUVA420P10BE, MKTAG(10 , 11 , '4', 'Y') }, - { AV_PIX_FMT_YUVA422P10LE, MKTAG('Y', '4', 10 , 10 ) }, - { AV_PIX_FMT_YUVA422P10BE, MKTAG(10 , 10 , '4', 'Y') }, - { AV_PIX_FMT_YUVA444P10LE, MKTAG('Y', '4', 0 , 10 ) }, - { AV_PIX_FMT_YUVA444P10BE, MKTAG(10 , 0 , '4', 'Y') }, - { AV_PIX_FMT_YUVA422P12LE, MKTAG('Y', '4', 10 , 12 ) }, - { AV_PIX_FMT_YUVA422P12BE, MKTAG(12 , 10 , '4', 'Y') }, - { AV_PIX_FMT_YUVA444P12LE, MKTAG('Y', '4', 0 , 12 ) }, - { AV_PIX_FMT_YUVA444P12BE, MKTAG(12 , 0 , '4', 'Y') }, - { AV_PIX_FMT_YUVA420P16LE, MKTAG('Y', '4', 11 , 16 ) }, - { AV_PIX_FMT_YUVA420P16BE, MKTAG(16 , 11 , '4', 'Y') }, - { AV_PIX_FMT_YUVA422P16LE, MKTAG('Y', '4', 10 , 16 ) }, - { AV_PIX_FMT_YUVA422P16BE, MKTAG(16 , 10 , '4', 'Y') }, - { AV_PIX_FMT_YUVA444P16LE, MKTAG('Y', '4', 0 , 16 ) }, - { AV_PIX_FMT_YUVA444P16BE, MKTAG(16 , 0 , '4', 'Y') }, - - { AV_PIX_FMT_GBRP, MKTAG('G', '3', 00 , 8 ) }, - { AV_PIX_FMT_GBRP9LE, MKTAG('G', '3', 00 , 9 ) }, - { AV_PIX_FMT_GBRP9BE, MKTAG( 9 , 00 , '3', 'G') }, - { AV_PIX_FMT_GBRP10LE, MKTAG('G', '3', 00 , 10 ) }, - { AV_PIX_FMT_GBRP10BE, MKTAG(10 , 00 , '3', 'G') }, - { AV_PIX_FMT_GBRP12LE, MKTAG('G', '3', 00 , 12 ) }, - { AV_PIX_FMT_GBRP12BE, MKTAG(12 , 00 , '3', 'G') }, - { AV_PIX_FMT_GBRP14LE, MKTAG('G', '3', 00 , 14 ) }, - { AV_PIX_FMT_GBRP14BE, MKTAG(14 , 00 , '3', 'G') }, - { AV_PIX_FMT_GBRP16LE, MKTAG('G', '3', 00 , 16 ) }, - { AV_PIX_FMT_GBRP16BE, MKTAG(16 , 00 , '3', 'G') }, - { AV_PIX_FMT_GBRPF16LE, MKTAG('G', '3', 00 , 17 ) }, - { AV_PIX_FMT_GBRPF16BE, MKTAG(17 , 00 , '3', 'G') }, - { AV_PIX_FMT_GBRPF32LE, MKTAG('G', '3', 00 , 33 ) }, - { AV_PIX_FMT_GBRPF32BE, MKTAG(33 , 00 , '3', 'G') }, - - { AV_PIX_FMT_GBRAP, MKTAG('G', '4', 00 , 8 ) }, - { AV_PIX_FMT_GBRAP10LE, MKTAG('G', '4', 00 , 10 ) }, - { AV_PIX_FMT_GBRAP10BE, MKTAG(10 , 00 , '4', 'G') }, - { AV_PIX_FMT_GBRAP12LE, MKTAG('G', '4', 00 , 12 ) }, - { AV_PIX_FMT_GBRAP12BE, MKTAG(12 , 00 , '4', 'G') }, - { AV_PIX_FMT_GBRAP14LE, MKTAG('G', '4', 00 , 14 ) }, - { AV_PIX_FMT_GBRAP14BE, MKTAG(14 , 00 , '4', 'G') }, - { AV_PIX_FMT_GBRAP16LE, MKTAG('G', '4', 00 , 16 ) }, - { AV_PIX_FMT_GBRAP16BE, MKTAG(16 , 00 , '4', 'G') }, - { AV_PIX_FMT_GBRAPF16LE, MKTAG('G', '4', 00 , 17 ) }, - { AV_PIX_FMT_GBRAPF16BE, MKTAG(17 , 00 , '4', 'G') }, - { AV_PIX_FMT_GBRAPF32LE, MKTAG('G', '4', 00 , 33 ) }, - { AV_PIX_FMT_GBRAPF32BE, MKTAG(33 , 00 , '4', 'G') }, - - { AV_PIX_FMT_XYZ12LE, MKTAG('X', 'Y', 'Z' , 36 ) }, - { AV_PIX_FMT_XYZ12BE, MKTAG(36 , 'Z' , 'Y', 'X') }, - - { AV_PIX_FMT_BAYER_BGGR8, MKTAG(0xBA, 'B', 'G', 8 ) }, - { AV_PIX_FMT_BAYER_BGGR16LE, MKTAG(0xBA, 'B', 'G', 16 ) }, - { AV_PIX_FMT_BAYER_BGGR16BE, MKTAG(16 , 'G', 'B', 0xBA) }, - { AV_PIX_FMT_BAYER_RGGB8, MKTAG(0xBA, 'R', 'G', 8 ) }, - { AV_PIX_FMT_BAYER_RGGB16LE, MKTAG(0xBA, 'R', 'G', 16 ) }, - { AV_PIX_FMT_BAYER_RGGB16BE, MKTAG(16 , 'G', 'R', 0xBA) }, - { AV_PIX_FMT_BAYER_GBRG8, MKTAG(0xBA, 'G', 'B', 8 ) }, - { AV_PIX_FMT_BAYER_GBRG16LE, MKTAG(0xBA, 'G', 'B', 16 ) }, - { AV_PIX_FMT_BAYER_GBRG16BE, MKTAG(16, 'B', 'G', 0xBA) }, - { AV_PIX_FMT_BAYER_GRBG8, MKTAG(0xBA, 'G', 'R', 8 ) }, - { AV_PIX_FMT_BAYER_GRBG16LE, MKTAG(0xBA, 'G', 'R', 16 ) }, - { AV_PIX_FMT_BAYER_GRBG16BE, MKTAG(16, 'R', 'G', 0xBA) }, - - /* quicktime */ - { AV_PIX_FMT_YUV420P, MKTAG('R', '4', '2', '0') }, /* Radius DV YUV PAL */ - { AV_PIX_FMT_YUV411P, MKTAG('R', '4', '1', '1') }, /* Radius DV YUV NTSC */ - { AV_PIX_FMT_UYVY422, MKTAG('2', 'v', 'u', 'y') }, - { AV_PIX_FMT_UYVY422, MKTAG('2', 'V', 'u', 'y') }, - { AV_PIX_FMT_UYVY422, MKTAG('A', 'V', 'U', 'I') }, /* FIXME merge both fields */ - { AV_PIX_FMT_UYVY422, MKTAG('b', 'x', 'y', 'v') }, - { AV_PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', '2') }, - { AV_PIX_FMT_YUYV422, MKTAG('y', 'u', 'v', 's') }, - { AV_PIX_FMT_YUYV422, MKTAG('D', 'V', 'O', 'O') }, /* Digital Voodoo SD 8 Bit */ - { AV_PIX_FMT_VYU444, MKTAG('v', '3', '0', '8') }, - { AV_PIX_FMT_UYVA, MKTAG('v', '4', '0', '8') }, - { AV_PIX_FMT_V30XLE, MKTAG('v', '4', '1', '0') }, - { AV_PIX_FMT_AYUV, MKTAG('y', '4', '0', '8') }, - { AV_PIX_FMT_RGB555LE, MKTAG('L', '5', '5', '5') }, - { AV_PIX_FMT_RGB565LE, MKTAG('L', '5', '6', '5') }, - { AV_PIX_FMT_RGB565BE, MKTAG('B', '5', '6', '5') }, - { AV_PIX_FMT_BGR24, MKTAG('2', '4', 'B', 'G') }, - { AV_PIX_FMT_BGR24, MKTAG('b', 'x', 'b', 'g') }, - { AV_PIX_FMT_BGRA, MKTAG('B', 'G', 'R', 'A') }, - { AV_PIX_FMT_RGBA, MKTAG('R', 'G', 'B', 'A') }, - { AV_PIX_FMT_RGB24, MKTAG('b', 'x', 'r', 'g') }, - { AV_PIX_FMT_ABGR, MKTAG('A', 'B', 'G', 'R') }, - { AV_PIX_FMT_GRAY16BE, MKTAG('b', '1', '6', 'g') }, - { AV_PIX_FMT_RGB48BE, MKTAG('b', '4', '8', 'r') }, - { AV_PIX_FMT_RGBA64BE, MKTAG('b', '6', '4', 'a') }, - { AV_PIX_FMT_BAYER_RGGB16BE, MKTAG('B', 'G', 'G', 'R') }, - - /* vlc */ - { AV_PIX_FMT_YUV410P, MKTAG('I', '4', '1', '0') }, - { AV_PIX_FMT_YUV411P, MKTAG('I', '4', '1', '1') }, - { AV_PIX_FMT_YUV422P, MKTAG('I', '4', '2', '2') }, - { AV_PIX_FMT_YUV440P, MKTAG('I', '4', '4', '0') }, - { AV_PIX_FMT_YUV444P, MKTAG('I', '4', '4', '4') }, - { AV_PIX_FMT_YUVJ420P, MKTAG('J', '4', '2', '0') }, - { AV_PIX_FMT_YUVJ422P, MKTAG('J', '4', '2', '2') }, - { AV_PIX_FMT_YUVJ440P, MKTAG('J', '4', '4', '0') }, - { AV_PIX_FMT_YUVJ444P, MKTAG('J', '4', '4', '4') }, - { AV_PIX_FMT_YUVA444P, MKTAG('Y', 'U', 'V', 'A') }, - { AV_PIX_FMT_YUVA420P, MKTAG('I', '4', '0', 'A') }, - { AV_PIX_FMT_YUVA422P, MKTAG('I', '4', '2', 'A') }, - { AV_PIX_FMT_RGB8, MKTAG('R', 'G', 'B', '2') }, - { AV_PIX_FMT_RGB555LE, MKTAG('R', 'V', '1', '5') }, - { AV_PIX_FMT_RGB565LE, MKTAG('R', 'V', '1', '6') }, - { AV_PIX_FMT_BGR24, MKTAG('R', 'V', '2', '4') }, - { AV_PIX_FMT_BGR0, MKTAG('R', 'V', '3', '2') }, - { AV_PIX_FMT_RGBA, MKTAG('A', 'V', '3', '2') }, - { AV_PIX_FMT_YUV420P9LE, MKTAG('I', '0', '9', 'L') }, - { AV_PIX_FMT_YUV420P9BE, MKTAG('I', '0', '9', 'B') }, - { AV_PIX_FMT_YUV422P9LE, MKTAG('I', '2', '9', 'L') }, - { AV_PIX_FMT_YUV422P9BE, MKTAG('I', '2', '9', 'B') }, - { AV_PIX_FMT_YUV444P9LE, MKTAG('I', '4', '9', 'L') }, - { AV_PIX_FMT_YUV444P9BE, MKTAG('I', '4', '9', 'B') }, - { AV_PIX_FMT_YUV420P10LE, MKTAG('I', '0', 'A', 'L') }, - { AV_PIX_FMT_YUV420P10BE, MKTAG('I', '0', 'A', 'B') }, - { AV_PIX_FMT_YUV422P10LE, MKTAG('I', '2', 'A', 'L') }, - { AV_PIX_FMT_YUV422P10BE, MKTAG('I', '2', 'A', 'B') }, - { AV_PIX_FMT_YUV444P10LE, MKTAG('I', '4', 'A', 'L') }, - { AV_PIX_FMT_YUV444P10BE, MKTAG('I', '4', 'A', 'B') }, - { AV_PIX_FMT_YUV420P12LE, MKTAG('I', '0', 'C', 'L') }, - { AV_PIX_FMT_YUV420P12BE, MKTAG('I', '0', 'C', 'B') }, - { AV_PIX_FMT_YUV422P12LE, MKTAG('I', '2', 'C', 'L') }, - { AV_PIX_FMT_YUV422P12BE, MKTAG('I', '2', 'C', 'B') }, - { AV_PIX_FMT_YUV444P12LE, MKTAG('I', '4', 'C', 'L') }, - { AV_PIX_FMT_YUV444P12BE, MKTAG('I', '4', 'C', 'B') }, - { AV_PIX_FMT_YUV420P16LE, MKTAG('I', '0', 'F', 'L') }, - { AV_PIX_FMT_YUV420P16BE, MKTAG('I', '0', 'F', 'B') }, - { AV_PIX_FMT_YUV444P16LE, MKTAG('I', '4', 'F', 'L') }, - { AV_PIX_FMT_YUV444P16BE, MKTAG('I', '4', 'F', 'B') }, - - /* special */ - { AV_PIX_FMT_RGB565LE, MKTAG( 3 , 0 , 0 , 0 ) }, /* flipped RGB565LE */ - { AV_PIX_FMT_YUV444P, MKTAG('Y', 'V', '2', '4') }, /* YUV444P, swapped UV */ - - { AV_PIX_FMT_NONE, 0 }, -}; - -#endif /* AVCODEC_RAW_PIX_FMT_TAGS_H */ diff --git a/icecat/media/ffvpx/libavcodec/rectangle.h b/icecat/media/ffvpx/libavcodec/rectangle.h index 9f982b2771..df7c18a4e2 100644 --- a/icecat/media/ffvpx/libavcodec/rectangle.h +++ b/icecat/media/ffvpx/libavcodec/rectangle.h @@ -46,7 +46,7 @@ static av_always_inline void fill_rectangle(void *vp, int w, int h, int stride, w *= size; stride *= size; - av_assert2((((uintptr_t)vp)&(FFMIN(w, 8<<(HAVE_NEON|ARCH_PPC|HAVE_MMX))-1)) == 0); + av_assert2((((long)vp)&(FFMIN(w, 8<<(HAVE_NEON|ARCH_PPC|HAVE_MMX))-1)) == 0); av_assert2((stride&(w-1))==0); if(w==2){ const uint16_t v= size==4 ? val : val*0x0101; diff --git a/icecat/media/ffvpx/libavcodec/rl.h b/icecat/media/ffvpx/libavcodec/rl.h index 2588de2440..c45d8659d1 100644 --- a/icecat/media/ffvpx/libavcodec/rl.h +++ b/icecat/media/ffvpx/libavcodec/rl.h @@ -100,9 +100,13 @@ do { \ static inline int get_rl_index(const RLTable *rl, int last, int run, int level) { + int index; + index = rl->index_run[last][run]; + if (index >= rl->n) + return rl->n; if (level > rl->max_level[last][run]) return rl->n; - return rl->index_run[last][run] + level - 1; + return index + level - 1; } #endif /* AVCODEC_RL_H */ diff --git a/icecat/media/ffvpx/libavcodec/simple_idct.c b/icecat/media/ffvpx/libavcodec/simple_idct.c index 5253afc6df..eb13cff146 100644 --- a/icecat/media/ffvpx/libavcodec/simple_idct.c +++ b/icecat/media/ffvpx/libavcodec/simple_idct.c @@ -37,6 +37,11 @@ #define BIT_DEPTH 10 #include "simple_idct_template.c" + +#define EXTRA_SHIFT 2 +#include "simple_idct_template.c" + +#undef EXTRA_SHIFT #undef BIT_DEPTH #define BIT_DEPTH 12 @@ -230,3 +235,35 @@ void ff_simple_idct44_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block) idct4col_add(dest + i, line_size, block + i); } } + +void ff_prores_idct_10(int16_t *block, const int16_t *qmat) +{ + int i; + + for (i = 0; i < 64; i++) + block[i] *= qmat[i]; + + for (i = 0; i < 8; i++) + idctRowCondDC_extrashift_10(block + i*8, 2); + + for (i = 0; i < 8; i++) { + block[i] += 8192; + idctSparseCol_extrashift_10(block + i); + } +} + +void ff_prores_idct_12(int16_t *block, const int16_t *qmat) +{ + int i; + + for (i = 0; i < 64; i++) + block[i] *= qmat[i]; + + for (i = 0; i < 8; i++) + idctRowCondDC_int16_12bit(block + i*8, 0); + + for (i = 0; i < 8; i++) { + block[i] += 8192; + idctSparseCol_int16_12bit(block + i); + } +} diff --git a/icecat/media/ffvpx/libavcodec/simple_idct.h b/icecat/media/ffvpx/libavcodec/simple_idct.h index a3f6cf9111..20578b3347 100644 --- a/icecat/media/ffvpx/libavcodec/simple_idct.h +++ b/icecat/media/ffvpx/libavcodec/simple_idct.h @@ -47,6 +47,14 @@ void ff_simple_idct_put_int16_12bit(uint8_t *dest, ptrdiff_t line_size, int16_t void ff_simple_idct_add_int16_12bit(uint8_t *dest, ptrdiff_t line_size, int16_t *block); void ff_simple_idct_int16_12bit(int16_t *block); +/** + * Special version of ff_simple_idct_int16_10bit() which does dequantization + * and scales by a factor of 2 more between the two IDCTs to account + * for larger scale of input coefficients. + */ +void ff_prores_idct_10(int16_t *block, const int16_t *qmat); +void ff_prores_idct_12(int16_t *block, const int16_t *qmat); + void ff_simple_idct248_put(uint8_t *dest, ptrdiff_t line_size, int16_t *block); void ff_simple_idct84_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block); diff --git a/icecat/media/ffvpx/libavcodec/simple_idct_template.c b/icecat/media/ffvpx/libavcodec/simple_idct_template.c index e189ef1a8e..5ddd0b45a2 100644 --- a/icecat/media/ffvpx/libavcodec/simple_idct_template.c +++ b/icecat/media/ffvpx/libavcodec/simple_idct_template.c @@ -28,6 +28,8 @@ /* Based upon some commented-out C code from mpeg2dec (idct_mmx.c * written by Aaron Holtzman ). */ +#include "simple_idct.h" + #include "bit_depth_template.c" #undef W1 @@ -259,25 +261,6 @@ static inline void FUNC6(idctRowCondDC)(idctin *row, int extra_shift) #ifdef EXTRA_SHIFT static inline void FUNC(idctSparseCol_extrashift)(int16_t *col) #else -static inline void FUNC6(idctSparseCol)(idctin *col) -#endif -{ - unsigned a0, a1, a2, a3, b0, b1, b2, b3; - - IDCT_COLS; - - col[0 ] = ((int)(a0 + b0) >> COL_SHIFT); - col[8 ] = ((int)(a1 + b1) >> COL_SHIFT); - col[16] = ((int)(a2 + b2) >> COL_SHIFT); - col[24] = ((int)(a3 + b3) >> COL_SHIFT); - col[32] = ((int)(a3 - b3) >> COL_SHIFT); - col[40] = ((int)(a2 - b2) >> COL_SHIFT); - col[48] = ((int)(a1 - b1) >> COL_SHIFT); - col[56] = ((int)(a0 - b0) >> COL_SHIFT); -} - -#ifndef PRORES_ONLY -#ifndef EXTRA_SHIFT static inline void FUNC6(idctSparseColPut)(pixel *dest, ptrdiff_t line_size, idctin *col) { @@ -326,6 +309,24 @@ static inline void FUNC6(idctSparseColAdd)(pixel *dest, ptrdiff_t line_size, dest[0] = av_clip_pixel(dest[0] + ((int)(a0 - b0) >> COL_SHIFT)); } +static inline void FUNC6(idctSparseCol)(idctin *col) +#endif +{ + unsigned a0, a1, a2, a3, b0, b1, b2, b3; + + IDCT_COLS; + + col[0 ] = ((int)(a0 + b0) >> COL_SHIFT); + col[8 ] = ((int)(a1 + b1) >> COL_SHIFT); + col[16] = ((int)(a2 + b2) >> COL_SHIFT); + col[24] = ((int)(a3 + b3) >> COL_SHIFT); + col[32] = ((int)(a3 - b3) >> COL_SHIFT); + col[40] = ((int)(a2 - b2) >> COL_SHIFT); + col[48] = ((int)(a1 - b1) >> COL_SHIFT); + col[56] = ((int)(a0 - b0) >> COL_SHIFT); +} + +#ifndef EXTRA_SHIFT void FUNC6(ff_simple_idct_put)(uint8_t *dest_, ptrdiff_t line_size, int16_t *block_) { idctin *block = (idctin *)block_; @@ -368,4 +369,3 @@ void FUNC6(ff_simple_idct)(int16_t *block) } #endif #endif -#endif /* PRORES_ONLY */ diff --git a/icecat/media/ffvpx/libavcodec/utils.c b/icecat/media/ffvpx/libavcodec/utils.c index ec2335af85..dd846b4ae9 100644 --- a/icecat/media/ffvpx/libavcodec/utils.c +++ b/icecat/media/ffvpx/libavcodec/utils.c @@ -33,7 +33,6 @@ #include "libavutil/pixdesc.h" #include "libavutil/imgutils.h" #include "libavutil/pixfmt.h" -/* #include "libavutil/timecode_internal.h" */ #include "avcodec.h" #include "codec.h" #include "codec_desc.h" @@ -79,13 +78,17 @@ void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size) int av_codec_is_encoder(const AVCodec *avcodec) { const FFCodec *const codec = ffcodec(avcodec); - return codec && !codec->is_decoder; + return codec && (codec->cb_type == FF_CODEC_CB_TYPE_ENCODE || + codec->cb_type == FF_CODEC_CB_TYPE_ENCODE_SUB || + codec->cb_type == FF_CODEC_CB_TYPE_RECEIVE_PACKET); } int av_codec_is_decoder(const AVCodec *avcodec) { const FFCodec *const codec = ffcodec(avcodec); - return codec && codec->is_decoder; + return codec && (codec->cb_type == FF_CODEC_CB_TYPE_DECODE || + codec->cb_type == FF_CODEC_CB_TYPE_DECODE_SUB || + codec->cb_type == FF_CODEC_CB_TYPE_RECEIVE_FRAME); } int ff_set_dimensions(AVCodecContext *s, int width, int height) @@ -336,7 +339,7 @@ void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, // H.264 uses edge emulation for out of frame motion vectors, for this // it requires a temporary area large enough to hold a 21x21 block, - // increasing width ensure that the temporary area is large enough, + // increasing witdth ensure that the temporary area is large enough, // the next rounded up width is 32 *width = FFMAX(*width, 32); } @@ -465,7 +468,6 @@ int av_get_exact_bits_per_sample(enum AVCodecID codec_id) case AV_CODEC_ID_ADPCM_IMA_APC: case AV_CODEC_ID_ADPCM_IMA_APM: case AV_CODEC_ID_ADPCM_IMA_EA_SEAD: - case AV_CODEC_ID_ADPCM_IMA_MAGIX: case AV_CODEC_ID_ADPCM_IMA_OKI: case AV_CODEC_ID_ADPCM_IMA_WS: case AV_CODEC_ID_ADPCM_IMA_SSI: @@ -488,7 +490,6 @@ int av_get_exact_bits_per_sample(enum AVCodecID codec_id) case AV_CODEC_ID_CBD2_DPCM: case AV_CODEC_ID_DERF_DPCM: case AV_CODEC_ID_WADY_DPCM: - case AV_CODEC_ID_ADPCM_CIRCUS: return 8; case AV_CODEC_ID_PCM_S16BE: case AV_CODEC_ID_PCM_S16BE_PLANAR: @@ -552,7 +553,6 @@ int av_get_bits_per_sample(enum AVCodecID codec_id) case AV_CODEC_ID_DFPWM: return 1; case AV_CODEC_ID_ADPCM_SBPRO_2: - case AV_CODEC_ID_G728: return 2; case AV_CODEC_ID_ADPCM_SBPRO_3: return 3; @@ -641,16 +641,16 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba, if (frame_bytes > 0) { /* calc from frame_bytes only */ - int64_t d = INT64_MIN; - switch(id) { - case AV_CODEC_ID_TRUESPEECH : d = 240LL * (frame_bytes / 32); break; - case AV_CODEC_ID_NELLYMOSER : d = 256LL * (frame_bytes / 64); break; - case AV_CODEC_ID_RA_144 : d = 160LL * (frame_bytes / 20); break; - case AV_CODEC_ID_APTX : d = 4LL * (frame_bytes / 4); break; - case AV_CODEC_ID_APTX_HD : d = 4LL * (frame_bytes / 6); break; - } - if (d > INT64_MIN) - return ((int)d == d && d > 0) ? d : 0; + if (id == AV_CODEC_ID_TRUESPEECH) + return 240 * (frame_bytes / 32); + if (id == AV_CODEC_ID_NELLYMOSER) + return 256 * (frame_bytes / 64); + if (id == AV_CODEC_ID_RA_144) + return 160 * (frame_bytes / 20); + if (id == AV_CODEC_ID_APTX) + return 4 * (frame_bytes / 4); + if (id == AV_CODEC_ID_APTX_HD) + return 4 * (frame_bytes / 6); if (bps > 0) { /* calc from frame_bytes and bits_per_coded_sample */ @@ -667,27 +667,16 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba, return (frame_bytes - 4 * ch) / (128 * ch) * 256; case AV_CODEC_ID_ADPCM_AFC: return frame_bytes / (9 * ch) * 16; - case AV_CODEC_ID_ADPCM_N64: - frame_bytes /= 9 * ch; - if (frame_bytes > INT_MAX / 16) - return 0; - return frame_bytes * 16; case AV_CODEC_ID_ADPCM_PSX: case AV_CODEC_ID_ADPCM_DTK: frame_bytes /= 16 * ch; if (frame_bytes > INT_MAX / 28) return 0; return frame_bytes * 28; - case AV_CODEC_ID_ADPCM_PSXC: - frame_bytes = (frame_bytes - 1) / ch; - if (frame_bytes > INT_MAX / 2) - return 0; - return frame_bytes * 2; case AV_CODEC_ID_ADPCM_4XM: case AV_CODEC_ID_ADPCM_IMA_ACORN: case AV_CODEC_ID_ADPCM_IMA_DAT4: case AV_CODEC_ID_ADPCM_IMA_ISS: - case AV_CODEC_ID_ADPCM_IMA_PDA: return (frame_bytes - 4 * ch) * 2 / ch; case AV_CODEC_ID_ADPCM_IMA_SMJPEG: return (frame_bytes - 4) * 2 / ch; @@ -979,12 +968,76 @@ AVCPBProperties *av_cpb_properties_alloc(size_t *size) return props; } +static unsigned bcd2uint(uint8_t bcd) +{ + unsigned low = bcd & 0xf; + unsigned high = bcd >> 4; + if (low > 9 || high > 9) + return 0; + return low + 10*high; +} + int ff_alloc_timecode_sei(const AVFrame *frame, AVRational rate, size_t prefix_len, void **data, size_t *sei_size) { - // Stubbed: requires ff_timecode_set_smpte from libavutil internals, - // which cannot be called cross-library. Not used by any ffvpx codec. - *data = NULL; + AVFrameSideData *sd = NULL; + uint8_t *sei_data; + PutBitContext pb; + uint32_t *tc; + int m; + + if (frame) + sd = av_frame_get_side_data(frame, AV_FRAME_DATA_S12M_TIMECODE); + + if (!sd) { + *data = NULL; + return 0; + } + tc = (uint32_t*)sd->data; + m = tc[0] & 3; + + *sei_size = sizeof(uint32_t) * 4; + *data = av_mallocz(*sei_size + prefix_len); + if (!*data) + return AVERROR(ENOMEM); + sei_data = (uint8_t*)*data + prefix_len; + + init_put_bits(&pb, sei_data, *sei_size); + put_bits(&pb, 2, m); // num_clock_ts + + for (int j = 1; j <= m; j++) { + uint32_t tcsmpte = tc[j]; + unsigned hh = bcd2uint(tcsmpte & 0x3f); // 6-bit hours + unsigned mm = bcd2uint(tcsmpte>>8 & 0x7f); // 7-bit minutes + unsigned ss = bcd2uint(tcsmpte>>16 & 0x7f); // 7-bit seconds + unsigned ff = bcd2uint(tcsmpte>>24 & 0x3f); // 6-bit frames + unsigned drop = tcsmpte & 1<<30 && !0; // 1-bit drop if not arbitrary bit + + /* Calculate frame number of HEVC by SMPTE ST 12-1:2014 Sec 12.2 if rate > 30FPS */ + if (av_cmp_q(rate, (AVRational) {30, 1}) == 1) { + unsigned pc; + ff *= 2; + if (av_cmp_q(rate, (AVRational) {50, 1}) == 0) + pc = !!(tcsmpte & 1 << 7); + else + pc = !!(tcsmpte & 1 << 23); + ff = (ff + pc) & 0x7f; + } + + put_bits(&pb, 1, 1); // clock_timestamp_flag + put_bits(&pb, 1, 1); // units_field_based_flag + put_bits(&pb, 5, 0); // counting_type + put_bits(&pb, 1, 1); // full_timestamp_flag + put_bits(&pb, 1, 0); // discontinuity_flag + put_bits(&pb, 1, drop); + put_bits(&pb, 9, ff); + put_bits(&pb, 6, ss); + put_bits(&pb, 6, mm); + put_bits(&pb, 5, hh); + put_bits(&pb, 5, 0); + } + flush_put_bits(&pb); + return 0; } diff --git a/icecat/media/ffvpx/libavcodec/vaapi_av1.c b/icecat/media/ffvpx/libavcodec/vaapi_av1.c index b8f5472c14..5451b6055b 100644 --- a/icecat/media/ffvpx/libavcodec/vaapi_av1.c +++ b/icecat/media/ffvpx/libavcodec/vaapi_av1.c @@ -74,7 +74,7 @@ static int8_t vaapi_av1_get_bit_depth_idx(AVCodecContext *avctx) return bit_depth == 8 ? 0 : bit_depth == 10 ? 1 : 2; } -static av_cold int vaapi_av1_decode_init(AVCodecContext *avctx) +static int vaapi_av1_decode_init(AVCodecContext *avctx) { VAAPIAV1DecContext *ctx = avctx->internal->hwaccel_priv_data; @@ -92,7 +92,7 @@ static av_cold int vaapi_av1_decode_init(AVCodecContext *avctx) return ff_vaapi_decode_init(avctx); } -static av_cold int vaapi_av1_decode_uninit(AVCodecContext *avctx) +static int vaapi_av1_decode_uninit(AVCodecContext *avctx) { VAAPIAV1DecContext *ctx = avctx->internal->hwaccel_priv_data; @@ -108,7 +108,6 @@ static av_cold int vaapi_av1_decode_uninit(AVCodecContext *avctx) static int vaapi_av1_start_frame(AVCodecContext *avctx, - av_unused const AVBufferRef *buffer_ref, av_unused const uint8_t *buffer, av_unused uint32_t size) { diff --git a/icecat/media/ffvpx/libavcodec/vaapi_vp8.c b/icecat/media/ffvpx/libavcodec/vaapi_vp8.c index b9b1f2aa51..66fdde1f39 100644 --- a/icecat/media/ffvpx/libavcodec/vaapi_vp8.c +++ b/icecat/media/ffvpx/libavcodec/vaapi_vp8.c @@ -32,7 +32,6 @@ static VASurfaceID vaapi_vp8_surface_id(VP8Frame *vf) } static int vaapi_vp8_start_frame(AVCodecContext *avctx, - av_unused const AVBufferRef *buffer_ref, av_unused const uint8_t *buffer, av_unused uint32_t size) { diff --git a/icecat/media/ffvpx/libavcodec/vaapi_vp9.c b/icecat/media/ffvpx/libavcodec/vaapi_vp9.c index 7d57f340e0..a28fc75a59 100644 --- a/icecat/media/ffvpx/libavcodec/vaapi_vp9.c +++ b/icecat/media/ffvpx/libavcodec/vaapi_vp9.c @@ -35,7 +35,6 @@ static VASurfaceID vaapi_vp9_surface_id(const VP9Frame *vf) } static int vaapi_vp9_start_frame(AVCodecContext *avctx, - av_unused const AVBufferRef *buffer_ref, av_unused const uint8_t *buffer, av_unused uint32_t size) { diff --git a/icecat/media/ffvpx/libavcodec/version.c b/icecat/media/ffvpx/libavcodec/version.c index 07e8e47e44..03dd95e5ba 100644 --- a/icecat/media/ffvpx/libavcodec/version.c +++ b/icecat/media/ffvpx/libavcodec/version.c @@ -31,13 +31,13 @@ const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION; unsigned avcodec_version(void) { - static_assert(AV_CODEC_ID_PRORES_RAW == 274 && + static_assert(AV_CODEC_ID_DNXUC == 270 && AV_CODEC_ID_PCM_SGA == 65572 && - AV_CODEC_ID_ADPCM_SANYO == 69685 && + AV_CODEC_ID_ADPCM_XMD == 69683 && AV_CODEC_ID_CBD2_DPCM == 81928 && - AV_CODEC_ID_G728 == 86123 && - AV_CODEC_ID_IVTV_VBI == 94234 && - AV_CODEC_ID_SMPTE_436M_ANC == 98317, + AV_CODEC_ID_QOA == 86121 && + AV_CODEC_ID_ARIB_CAPTION == 94233 && + AV_CODEC_ID_SMPTE_2038 == 98315, "Don't insert new codec ids in the middle of a list"); static_assert(LIBAVCODEC_VERSION_MICRO >= 100, "micro version starts at 100"); diff --git a/icecat/media/ffvpx/libavcodec/version.h b/icecat/media/ffvpx/libavcodec/version.h index e60d3c1afc..497389d3f3 100644 --- a/icecat/media/ffvpx/libavcodec/version.h +++ b/icecat/media/ffvpx/libavcodec/version.h @@ -29,8 +29,8 @@ #include "version_major.h" -#define LIBAVCODEC_VERSION_MINOR 29 -#define LIBAVCODEC_VERSION_MICRO 101 +#define LIBAVCODEC_VERSION_MINOR 31 +#define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ diff --git a/icecat/media/ffvpx/libavcodec/version_major.h b/icecat/media/ffvpx/libavcodec/version_major.h index 52f6d629dd..35df5eb779 100644 --- a/icecat/media/ffvpx/libavcodec/version_major.h +++ b/icecat/media/ffvpx/libavcodec/version_major.h @@ -25,7 +25,7 @@ * Libavcodec version macros. */ -#define LIBAVCODEC_VERSION_MAJOR 62 +#define LIBAVCODEC_VERSION_MAJOR 61 /** * FF_API_* defines may be placed below to indicate public API that will be @@ -37,27 +37,25 @@ * at once through the bump. This improves the git bisect-ability of the change. */ -#define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 63) +#define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_SUBFRAMES (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_TICKS_PER_FRAME (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_DROPCHANGED (LIBAVCODEC_VERSION_MAJOR < 62) -#define FF_API_V408_CODECID (LIBAVCODEC_VERSION_MAJOR < 63) +#define FF_API_AVFFT (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_FF_PROFILE_LEVEL (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_AVCODEC_CLOSE (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_BUFFER_MIN_SIZE (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_VDPAU_ALLOC_GET_SET (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_QUALITY_FACTOR (LIBAVCODEC_VERSION_MAJOR < 62) +#define FF_API_V408_CODECID (LIBAVCODEC_VERSION_MAJOR < 62) #define FF_API_CODEC_PROPS (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_EXR_GAMMA (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_INTRA_DC_PRECISION (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_NVDEC_OLD_PIX_FMTS (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_PARSER_PRIVATE (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_PARSER_CODECID (LIBAVCODEC_VERSION_MAJOR < 63) - -#define FF_API_MJPEG_EXTERN_HUFF (LIBAVCODEC_VERSION_MAJOR < 63) // reminder to remove the OMX encoder on next major bump -#define FF_CODEC_OMX (LIBAVCODEC_VERSION_MAJOR < 63) +#define FF_CODEC_OMX (LIBAVCODEC_VERSION_MAJOR < 62) // reminder to remove Sonic Lossy/Lossless encoders on next major bump -#define FF_CODEC_SONIC_ENC (LIBAVCODEC_VERSION_MAJOR < 63) +#define FF_CODEC_SONIC_ENC (LIBAVCODEC_VERSION_MAJOR < 62) // reminder to remove Sonic decoder on next-next major bump #define FF_CODEC_SONIC_DEC (LIBAVCODEC_VERSION_MAJOR < 63) -#define FF_API_NVENC_H264_MAIN (LIBAVCODEC_VERSION_MAJOR < 63) - #endif /* AVCODEC_VERSION_MAJOR_H */ diff --git a/icecat/media/ffvpx/libavcodec/videodsp.c b/icecat/media/ffvpx/libavcodec/videodsp.c index 230a1bfb74..a19e87a819 100644 --- a/icecat/media/ffvpx/libavcodec/videodsp.c +++ b/icecat/media/ffvpx/libavcodec/videodsp.c @@ -40,9 +40,9 @@ av_cold void ff_videodsp_init(VideoDSPContext *ctx, int bpc) { ctx->prefetch = just_return; if (bpc <= 8) { - ctx->emulated_edge_mc = emulated_edge_mc_8; + ctx->emulated_edge_mc = ff_emulated_edge_mc_8; } else { - ctx->emulated_edge_mc = emulated_edge_mc_16; + ctx->emulated_edge_mc = ff_emulated_edge_mc_16; } #if ARCH_AARCH64 @@ -53,7 +53,7 @@ av_cold void ff_videodsp_init(VideoDSPContext *ctx, int bpc) ff_videodsp_init_ppc(ctx, bpc); #elif ARCH_RISCV ff_videodsp_init_riscv(ctx, bpc); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_videodsp_init_x86(ctx, bpc); #elif ARCH_MIPS ff_videodsp_init_mips(ctx, bpc); diff --git a/icecat/media/ffvpx/libavcodec/videodsp.h b/icecat/media/ffvpx/libavcodec/videodsp.h index 4f081e0869..1be3188d09 100644 --- a/icecat/media/ffvpx/libavcodec/videodsp.h +++ b/icecat/media/ffvpx/libavcodec/videodsp.h @@ -29,6 +29,14 @@ #include #include +#define EMULATED_EDGE(depth) \ +void ff_emulated_edge_mc_ ## depth(uint8_t *dst, const uint8_t *src, \ + ptrdiff_t dst_stride, ptrdiff_t src_stride, \ + int block_w, int block_h,\ + int src_x, int src_y, int w, int h); + +EMULATED_EDGE(8) + typedef struct VideoDSPContext { /** * Copy a rectangular area of samples to a temporary buffer and replicate diff --git a/icecat/media/ffvpx/libavcodec/videodsp_template.c b/icecat/media/ffvpx/libavcodec/videodsp_template.c index cafde2d3a2..d653f4d524 100644 --- a/icecat/media/ffvpx/libavcodec/videodsp_template.c +++ b/icecat/media/ffvpx/libavcodec/videodsp_template.c @@ -20,12 +20,15 @@ */ #include "bit_depth_template.c" - -static void FUNC(emulated_edge_mc)(uint8_t *buf, const uint8_t *src, - ptrdiff_t buf_linesize, - ptrdiff_t src_linesize, - int block_w, int block_h, - int src_x, int src_y, int w, int h) +#if BIT_DEPTH != 8 +// ff_emulated_edge_mc_8 is used by the x86 MpegVideoDSP API. +static +#endif +void FUNC(ff_emulated_edge_mc)(uint8_t *buf, const uint8_t *src, + ptrdiff_t buf_linesize, + ptrdiff_t src_linesize, + int block_w, int block_h, + int src_x, int src_y, int w, int h) { int x, y; int start_y, start_x, end_y, end_x; @@ -40,7 +43,8 @@ static void FUNC(emulated_edge_mc)(uint8_t *buf, const uint8_t *src, src += (h - 1) * src_linesize; src_y = h - 1; } else if (src_y <= -block_h) { - src += (-src_y + 1 - block_h) * src_linesize; + src -= src_y * src_linesize; + src += (1 - block_h) * src_linesize; src_y = 1 - block_h; } if (src_x >= w) { diff --git a/icecat/media/ffvpx/libavcodec/vlc.c b/icecat/media/ffvpx/libavcodec/vlc.c index 93d88714f2..f46ecbb55e 100644 --- a/icecat/media/ffvpx/libavcodec/vlc.c +++ b/icecat/media/ffvpx/libavcodec/vlc.c @@ -42,8 +42,6 @@ { \ const uint8_t *ptr = (const uint8_t *)table + i * wrap; \ switch(size) { \ - default: \ - av_unreachable("Only uint8/16/32_t are used"); \ case 1: \ v = *(const uint8_t *)ptr; \ break; \ @@ -51,6 +49,8 @@ v = *(const uint16_t *)ptr; \ break; \ case 4: \ + default: \ + av_assert1(size == 4); \ v = *(const uint32_t *)ptr; \ break; \ } \ @@ -155,7 +155,7 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, int n = codes[i].bits; uint32_t code = codes[i].code; int symbol = codes[i].symbol; - ff_tlog(NULL, "i=%d n=%d code=0x%"PRIx32"\n", i, n, code); + ff_dlog(NULL, "i=%d n=%d code=0x%"PRIx32"\n", i, n, code); if (n <= table_nb_bits) { /* no need to add another table */ int j = code >> (32 - table_nb_bits); @@ -169,7 +169,7 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, for (int k = 0; k < nb; k++) { int bits = table[j].len; int oldsym = table[j].sym; - ff_tlog(NULL, "%4x: code=%d n=%d\n", j, i, n); + ff_dlog(NULL, "%4x: code=%d n=%d\n", j, i, n); if ((bits || oldsym) && (bits != n || oldsym != symbol)) { av_log(NULL, AV_LOG_ERROR, "incorrect codes\n"); return AVERROR_INVALIDDATA; @@ -260,7 +260,7 @@ int ff_vlc_init_sparse(VLC *vlc, int nb_bits, int nb_codes, if (ret < 0) return ret; - av_assert0(symbols_size <= 2U); + av_assert0(symbols_size <= 2 || !symbols); j = 0; #define COPY(condition)\ for (int i = 0; i < nb_codes; i++) { \ @@ -491,7 +491,7 @@ static int vlc_multi_gen(VLC_MULTI_ELEM *table, const VLC *single, // We can only add a code that fits with the shortest other code into the table // We assume the table is sorted by bits and we skip subtables which from our // point of view are basically random corrupted entries - // If we have not a single usable vlc we end with max = nb_codes + // If we have not a single useable vlc we end with max = nb_codes if (buf[max - 1].bits+minbits > numbits) break; } @@ -527,7 +527,7 @@ int ff_vlc_init_multi_from_lengths(VLC *vlc, VLC_MULTI *multi, int nb_bits, int if (ret < 0) return ret; - multi->table = av_mallocz(sizeof(*multi->table) << nb_bits); + multi->table = av_malloc(sizeof(*multi->table) << nb_bits); if (!multi->table) goto fail; diff --git a/icecat/media/ffvpx/libavcodec/vlc.h b/icecat/media/ffvpx/libavcodec/vlc.h index 7eecd9651f..bf7b0e65b4 100644 --- a/icecat/media/ffvpx/libavcodec/vlc.h +++ b/icecat/media/ffvpx/libavcodec/vlc.h @@ -30,23 +30,9 @@ typedef int16_t VLCBaseType; typedef struct VLCElem { - union { - /// The struct is for use as ordinary VLC (with get_vlc2()) - struct { - VLCBaseType sym; - VLCBaseType len; - }; - /// This struct is for use as run-length VLC (with GET_RL_VLC) - struct { - int16_t level; - int8_t len8; - uint8_t run; - }; - }; + VLCBaseType sym, len; } VLCElem; -typedef VLCElem RL_VLC_ELEM; - typedef struct VLC { int bits; VLCElem *table; @@ -67,6 +53,12 @@ typedef struct VLC_MULTI { int table_size, table_allocated; } VLC_MULTI; +typedef struct RL_VLC_ELEM { + int16_t level; + int8_t len; + uint8_t run; +} RL_VLC_ELEM; + #define vlc_init(vlc, nb_bits, nb_codes, \ bits, bits_wrap, bits_size, \ codes, codes_wrap, codes_size, \ diff --git a/icecat/media/ffvpx/libavcodec/vorbis_parser.c b/icecat/media/ffvpx/libavcodec/vorbis_parser.c index 88b81fcb53..c6969f139f 100644 --- a/icecat/media/ffvpx/libavcodec/vorbis_parser.c +++ b/icecat/media/ffvpx/libavcodec/vorbis_parser.c @@ -31,7 +31,6 @@ #include "libavutil/mem.h" #include "get_bits.h" -#include "parser_internal.h" #include "xiph.h" #include "vorbis_parser_internal.h" @@ -330,16 +329,16 @@ end: return buf_size; } -static av_cold void vorbis_parser_close(AVCodecParserContext *ctx) +static void vorbis_parser_close(AVCodecParserContext *ctx) { VorbisParseContext *s = ctx->priv_data; av_vorbis_parse_free(&s->vp); } -const FFCodecParser ff_vorbis_parser = { - PARSER_CODEC_LIST(AV_CODEC_ID_VORBIS), +const AVCodecParser ff_vorbis_parser = { + .codec_ids = { AV_CODEC_ID_VORBIS }, .priv_data_size = sizeof(VorbisParseContext), - .parse = vorbis_parse, - .close = vorbis_parser_close, + .parser_parse = vorbis_parse, + .parser_close = vorbis_parser_close, }; #endif /* CONFIG_VORBIS_PARSER */ diff --git a/icecat/media/ffvpx/libavcodec/vp3dsp.h b/icecat/media/ffvpx/libavcodec/vp3dsp.h index 7512676379..3b849ec05d 100644 --- a/icecat/media/ffvpx/libavcodec/vp3dsp.h +++ b/icecat/media/ffvpx/libavcodec/vp3dsp.h @@ -22,10 +22,6 @@ #include #include -// If this is one, {v,h}_loop_filter expect src to be aligned on eight bytes; -// otherwise they don't have any alignment requirements for src. -#define VP3_LOOP_FILTER_NO_UNALIGNED_SUPPORT (ARCH_ARM || ARCH_MIPS) - typedef struct VP3DSPContext { /** * Copy 8xH pixels from source to destination buffer using a bilinear @@ -57,11 +53,11 @@ void ff_vp3dsp_h_loop_filter_12(uint8_t *first_pixel, ptrdiff_t stride, int *bou void ff_vp3dsp_idct10_put(uint8_t *dest, ptrdiff_t stride, int16_t *block); void ff_vp3dsp_idct10_add(uint8_t *dest, ptrdiff_t stride, int16_t *block); -void ff_vp3dsp_init(VP3DSPContext *c); -void ff_vp3dsp_init_arm(VP3DSPContext *c); -void ff_vp3dsp_init_ppc(VP3DSPContext *c); -void ff_vp3dsp_init_x86(VP3DSPContext *c); -void ff_vp3dsp_init_mips(VP3DSPContext *c); +void ff_vp3dsp_init(VP3DSPContext *c, int flags); +void ff_vp3dsp_init_arm(VP3DSPContext *c, int flags); +void ff_vp3dsp_init_ppc(VP3DSPContext *c, int flags); +void ff_vp3dsp_init_x86(VP3DSPContext *c, int flags); +void ff_vp3dsp_init_mips(VP3DSPContext *c, int flags); void ff_vp3dsp_set_bounding_values(int * bound_values_array, int filter_limit); diff --git a/icecat/media/ffvpx/libavcodec/vp56.h b/icecat/media/ffvpx/libavcodec/vp56.h index 6610fc2892..87b7e06e0b 100644 --- a/icecat/media/ffvpx/libavcodec/vp56.h +++ b/icecat/media/ffvpx/libavcodec/vp56.h @@ -118,10 +118,7 @@ struct vp56_context { HpelDSPContext hdsp; VideoDSPContext vdsp; VP3DSPContext vp3dsp; - union { - VP5DSPContext vp5dsp; - VP6DSPContext vp6dsp; - }; + VP56DSPContext vp56dsp; uint8_t idct_scantable[64]; AVFrame *frames[4]; uint8_t *edge_emu_buffer_alloc; @@ -206,7 +203,7 @@ struct vp56_context { GetBitContext gb; VLC dccv_vlc[2]; VLC runv_vlc[2]; - VLC ract_vlc[2][3][4]; + VLC ract_vlc[2][3][6]; unsigned int nb_null[2][2]; /* number of consecutive NULL DC/AC */ int have_undamaged_frame; @@ -242,7 +239,7 @@ static int vp56_rac_gets(VPXRangeCoder *c, int bits) } // P(7) -av_unused static int vp56_rac_gets_nn(VPXRangeCoder *c, int bits) +static av_unused int vp56_rac_gets_nn(VPXRangeCoder *c, int bits) { int v = vp56_rac_gets(c, 7) << 1; return v + !v; diff --git a/icecat/media/ffvpx/libavcodec/vp56dsp.h b/icecat/media/ffvpx/libavcodec/vp56dsp.h index 3981de4015..e35e232ea3 100644 --- a/icecat/media/ffvpx/libavcodec/vp56dsp.h +++ b/icecat/media/ffvpx/libavcodec/vp56dsp.h @@ -24,19 +24,21 @@ #include #include -typedef struct VP5DSPContext { +typedef struct VP56DSPContext { void (*edge_filter_hor)(uint8_t *yuv, ptrdiff_t stride, int t); void (*edge_filter_ver)(uint8_t *yuv, ptrdiff_t stride, int t); -} VP5DSPContext; -typedef struct VP6DSPContext { - void (*vp6_filter_diag4)(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, + void (*vp6_filter_diag4)(uint8_t *dst, uint8_t *src, ptrdiff_t stride, const int16_t *h_weights,const int16_t *v_weights); -} VP6DSPContext; +} VP56DSPContext; -void ff_vp5dsp_init(VP5DSPContext *s); +void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride, + const int16_t *h_weights, const int16_t *v_weights); -void ff_vp6dsp_init(VP6DSPContext *s); -void ff_vp6dsp_init_x86(VP6DSPContext *s); +void ff_vp5dsp_init(VP56DSPContext *s); +void ff_vp6dsp_init(VP56DSPContext *s); + +void ff_vp6dsp_init_arm(VP56DSPContext *s); +void ff_vp6dsp_init_x86(VP56DSPContext *s); #endif /* AVCODEC_VP56DSP_H */ diff --git a/icecat/media/ffvpx/libavcodec/vp8.c b/icecat/media/ffvpx/libavcodec/vp8.c index 9010e19e6b..3651688c10 100644 --- a/icecat/media/ffvpx/libavcodec/vp8.c +++ b/icecat/media/ffvpx/libavcodec/vp8.c @@ -541,12 +541,9 @@ static int vp7_fade_frame(VP8Context *s, int alpha, int beta) /* preserve the golden frame, write a new previous frame */ if (s->framep[VP8_FRAME_GOLDEN] == s->framep[VP8_FRAME_PREVIOUS]) { - VP8Frame *prev_frame = vp8_find_free_buffer(s); - - ret = vp8_alloc_frame(s, prev_frame, 1); - if (ret < 0) + s->framep[VP8_FRAME_PREVIOUS] = vp8_find_free_buffer(s); + if ((ret = vp8_alloc_frame(s, s->framep[VP8_FRAME_PREVIOUS], 1)) < 0) return ret; - s->framep[VP8_FRAME_PREVIOUS] = prev_frame; dst = s->framep[VP8_FRAME_PREVIOUS]->tf.f; @@ -733,7 +730,7 @@ static int vp8_decode_frame_header(VP8Context *s, const uint8_t *buf, int buf_si int height = s->avctx->height; if (buf_size < 3) { - av_log(s->avctx, AV_LOG_ERROR, "Insufficient data (%d) for header\n", buf_size); + av_log(s->avctx, AV_LOG_ERROR, "Insufficent data (%d) for header\n", buf_size); return AVERROR_INVALIDDATA; } @@ -2416,7 +2413,7 @@ static av_always_inline int decode_mb_row_no_filter(AVCodecContext *avctx, void mb = s->macroblocks_base + ((s->mb_width + 1) * (mb_y + 1) + 1); else { // Make sure the previous frame has read its segmentation map, - // if we reuse the same map. + // if we re-use the same map. if (prev_frame && s->segmentation.enabled && !s->segmentation.update_map) ff_progress_frame_await(&prev_frame->tf, mb_y); @@ -2515,6 +2512,18 @@ static av_always_inline int decode_mb_row_no_filter(AVCodecContext *avctx, void return 0; } +static int vp7_decode_mb_row_no_filter(AVCodecContext *avctx, void *tdata, + int jobnr, int threadnr) +{ + return decode_mb_row_no_filter(avctx, tdata, jobnr, threadnr, 1); +} + +static int vp8_decode_mb_row_no_filter(AVCodecContext *avctx, void *tdata, + int jobnr, int threadnr) +{ + return decode_mb_row_no_filter(avctx, tdata, jobnr, threadnr, 0); +} + static av_always_inline void filter_mb_row(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr, int is_vp7) { @@ -2522,6 +2531,7 @@ static av_always_inline void filter_mb_row(AVCodecContext *avctx, void *tdata, VP8ThreadData *td = &s->thread_data[threadnr]; int mb_x, mb_y = atomic_load(&td->thread_mb_pos) >> 16, num_jobs = s->num_jobs; AVFrame *curframe = s->curframe->tf.f; + VP8Macroblock *mb; VP8ThreadData *prev_td, *next_td; uint8_t *dst[3] = { curframe->data[0] + 16 * mb_y * s->linesize, @@ -2529,6 +2539,11 @@ static av_always_inline void filter_mb_row(AVCodecContext *avctx, void *tdata, curframe->data[2] + 8 * mb_y * s->uvlinesize }; + if (s->mb_layout == 1) + mb = s->macroblocks_base + ((s->mb_width + 1) * (mb_y + 1) + 1); + else + mb = s->macroblocks + (s->mb_height - mb_y - 1) * 2; + if (mb_y == 0) prev_td = td; else @@ -2538,7 +2553,7 @@ static av_always_inline void filter_mb_row(AVCodecContext *avctx, void *tdata, else next_td = &s->thread_data[(jobnr + 1) % num_jobs]; - for (mb_x = 0; mb_x < s->mb_width; mb_x++) { + for (mb_x = 0; mb_x < s->mb_width; mb_x++, mb++) { const VP8FilterStrength *f = &td->filter_strength[mb_x]; if (prev_td != td) check_thread_pos(td, prev_td, @@ -2568,6 +2583,18 @@ static av_always_inline void filter_mb_row(AVCodecContext *avctx, void *tdata, } } +static void vp7_filter_mb_row(AVCodecContext *avctx, void *tdata, + int jobnr, int threadnr) +{ + filter_mb_row(avctx, tdata, jobnr, threadnr, 1); +} + +static void vp8_filter_mb_row(AVCodecContext *avctx, void *tdata, + int jobnr, int threadnr) +{ + filter_mb_row(avctx, tdata, jobnr, threadnr, 0); +} + static av_always_inline int vp78_decode_mb_row_sliced(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr, int is_vp7) @@ -2672,6 +2699,8 @@ int vp78_decode_frame(AVCodecContext *avctx, AVFrame *rframe, int *got_frame, &s->frames[i] != s->framep[VP8_FRAME_ALTREF]) vp8_release_frame(&s->frames[i]); + curframe = s->framep[VP8_FRAME_CURRENT] = vp8_find_free_buffer(s); + if (!s->colorspace) avctx->colorspace = AVCOL_SPC_BT470BG; if (s->fullrange) @@ -2692,10 +2721,8 @@ int vp78_decode_frame(AVCodecContext *avctx, AVFrame *rframe, int *got_frame, goto err; } - curframe = vp8_find_free_buffer(s); if ((ret = vp8_alloc_frame(s, curframe, referenced)) < 0) goto err; - s->framep[VP8_FRAME_CURRENT] = curframe; if (s->keyframe) curframe->tf.f->flags |= AV_FRAME_FLAG_KEY; else @@ -2724,9 +2751,9 @@ int vp78_decode_frame(AVCodecContext *avctx, AVFrame *rframe, int *got_frame, if (!is_vp7 && !s->actually_webp) ff_thread_finish_setup(avctx); - if (!is_vp7 && avctx->hwaccel) { + if (avctx->hwaccel) { const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); - ret = hwaccel->start_frame(avctx, avpkt->buf, avpkt->data, avpkt->size); + ret = hwaccel->start_frame(avctx, avpkt->data, avpkt->size); if (ret < 0) goto err; @@ -2755,7 +2782,7 @@ int vp78_decode_frame(AVCodecContext *avctx, AVFrame *rframe, int *got_frame, if (s->mb_layout == 1) { // Make sure the previous frame has read its segmentation map, - // if we reuse the same map. + // if we re-use the same map. if (prev_frame && s->segmentation.enabled && !s->segmentation.update_map) ff_progress_frame_await(&prev_frame->tf, 1); @@ -2810,6 +2837,20 @@ err: return ret; } +int ff_vp8_decode_frame(AVCodecContext *avctx, AVFrame *frame, + int *got_frame, AVPacket *avpkt) +{ + return vp78_decode_frame(avctx, frame, got_frame, avpkt, IS_VP8); +} + +#if CONFIG_VP7_DECODER +static int vp7_decode_frame(AVCodecContext *avctx, AVFrame *frame, + int *got_frame, AVPacket *avpkt) +{ + return vp78_decode_frame(avctx, frame, got_frame, avpkt, IS_VP7); +} +#endif /* CONFIG_VP7_DECODER */ + av_cold int ff_vp8_decode_free(AVCodecContext *avctx) { vp8_decode_flush_impl(avctx, 1); @@ -2817,7 +2858,8 @@ av_cold int ff_vp8_decode_free(AVCodecContext *avctx) return 0; } -static av_cold void vp78_decode_init(AVCodecContext *avctx) +static av_always_inline +int vp78_decode_init(AVCodecContext *avctx, int is_vp7) { VP8Context *s = avctx->priv_data; @@ -2828,43 +2870,37 @@ static av_cold void vp78_decode_init(AVCodecContext *avctx) ff_videodsp_init(&s->vdsp, 8); ff_vp78dsp_init(&s->vp8dsp); + if (CONFIG_VP7_DECODER && is_vp7) { + ff_h264_pred_init(&s->hpc, AV_CODEC_ID_VP7, 8, 1); + ff_vp7dsp_init(&s->vp8dsp); + s->decode_mb_row_no_filter = vp7_decode_mb_row_no_filter; + s->filter_mb_row = vp7_filter_mb_row; + } else if (CONFIG_VP8_DECODER && !is_vp7) { + ff_h264_pred_init(&s->hpc, AV_CODEC_ID_VP8, 8, 1); + ff_vp8dsp_init(&s->vp8dsp); + s->decode_mb_row_no_filter = vp8_decode_mb_row_no_filter; + s->filter_mb_row = vp8_filter_mb_row; + } /* does not change for VP8 */ memcpy(s->prob[0].scan, ff_zigzag_scan, sizeof(s->prob[0].scan)); -} - -#if CONFIG_VP8_DECODER -static int vp8_decode_mb_row_no_filter(AVCodecContext *avctx, void *tdata, - int jobnr, int threadnr) -{ - return decode_mb_row_no_filter(avctx, tdata, jobnr, threadnr, 0); -} - -static void vp8_filter_mb_row(AVCodecContext *avctx, void *tdata, - int jobnr, int threadnr) -{ - filter_mb_row(avctx, tdata, jobnr, threadnr, 0); -} - -int ff_vp8_decode_frame(AVCodecContext *avctx, AVFrame *frame, - int *got_frame, AVPacket *avpkt) -{ - return vp78_decode_frame(avctx, frame, got_frame, avpkt, IS_VP8); -} - -av_cold int ff_vp8_decode_init(AVCodecContext *avctx) -{ - VP8Context *s = avctx->priv_data; - - vp78_decode_init(avctx); - ff_h264_pred_init(&s->hpc, AV_CODEC_ID_VP8, 8, 1); - ff_vp8dsp_init(&s->vp8dsp); - s->decode_mb_row_no_filter = vp8_decode_mb_row_no_filter; - s->filter_mb_row = vp8_filter_mb_row; return 0; } +#if CONFIG_VP7_DECODER +static int vp7_decode_init(AVCodecContext *avctx) +{ + return vp78_decode_init(avctx, IS_VP7); +} +#endif /* CONFIG_VP7_DECODER */ + +av_cold int ff_vp8_decode_init(AVCodecContext *avctx) +{ + return vp78_decode_init(avctx, IS_VP8); +} + +#if CONFIG_VP8_DECODER #if HAVE_THREADS static void vp8_replace_frame(VP8Frame *dst, const VP8Frame *src) { @@ -2908,37 +2944,6 @@ static int vp8_decode_update_thread_context(AVCodecContext *dst, #endif /* CONFIG_VP8_DECODER */ #if CONFIG_VP7_DECODER -static int vp7_decode_mb_row_no_filter(AVCodecContext *avctx, void *tdata, - int jobnr, int threadnr) -{ - return decode_mb_row_no_filter(avctx, tdata, jobnr, threadnr, 1); -} - -static void vp7_filter_mb_row(AVCodecContext *avctx, void *tdata, - int jobnr, int threadnr) -{ - filter_mb_row(avctx, tdata, jobnr, threadnr, 1); -} - -static int vp7_decode_frame(AVCodecContext *avctx, AVFrame *frame, - int *got_frame, AVPacket *avpkt) -{ - return vp78_decode_frame(avctx, frame, got_frame, avpkt, IS_VP7); -} - -av_cold static int vp7_decode_init(AVCodecContext *avctx) -{ - VP8Context *s = avctx->priv_data; - - vp78_decode_init(avctx); - ff_h264_pred_init(&s->hpc, AV_CODEC_ID_VP7, 8, 1); - ff_vp7dsp_init(&s->vp8dsp); - s->decode_mb_row_no_filter = vp7_decode_mb_row_no_filter; - s->filter_mb_row = vp7_filter_mb_row; - - return 0; -} - const FFCodec ff_vp7_decoder = { .p.name = "vp7", CODEC_LONG_NAME("On2 VP7"), @@ -2979,4 +2984,4 @@ const FFCodec ff_vp8_decoder = { NULL }, }; -#endif /* CONFIG_VP8_DECODER */ +#endif /* CONFIG_VP7_DECODER */ diff --git a/icecat/media/ffvpx/libavcodec/vp89_rac.h b/icecat/media/ffvpx/libavcodec/vp89_rac.h index ff6cba5ba6..bc0924c387 100644 --- a/icecat/media/ffvpx/libavcodec/vp89_rac.h +++ b/icecat/media/ffvpx/libavcodec/vp89_rac.h @@ -38,7 +38,7 @@ static av_always_inline int vp89_rac_get(VPXRangeCoder *c) return vpx_rac_get_prob(c, 128); } -av_unused static int vp89_rac_get_uint(VPXRangeCoder *c, int bits) +static av_unused int vp89_rac_get_uint(VPXRangeCoder *c, int bits) { int value = 0; diff --git a/icecat/media/ffvpx/libavcodec/vp8_parser.c b/icecat/media/ffvpx/libavcodec/vp8_parser.c index f99a414f53..98b752bfb9 100644 --- a/icecat/media/ffvpx/libavcodec/vp8_parser.c +++ b/icecat/media/ffvpx/libavcodec/vp8_parser.c @@ -19,7 +19,6 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" -#include "parser_internal.h" static int parse(AVCodecParserContext *s, AVCodecContext *avctx, @@ -74,7 +73,7 @@ static int parse(AVCodecParserContext *s, return buf_size; } -const FFCodecParser ff_vp8_parser = { - PARSER_CODEC_LIST(AV_CODEC_ID_VP8), - .parse = parse, +const AVCodecParser ff_vp8_parser = { + .codec_ids = { AV_CODEC_ID_VP8 }, + .parser_parse = parse, }; diff --git a/icecat/media/ffvpx/libavcodec/vp8dsp.c b/icecat/media/ffvpx/libavcodec/vp8dsp.c index eabe3edb27..88bb67f78d 100644 --- a/icecat/media/ffvpx/libavcodec/vp8dsp.c +++ b/icecat/media/ffvpx/libavcodec/vp8dsp.c @@ -249,14 +249,14 @@ MK_IDCT_DC_ADD4_C(vp8) // because I like only having two parameters to pass functions... #define LOAD_PIXELS \ - av_unused int p3 = p[-4 * stride]; \ - av_unused int p2 = p[-3 * stride]; \ - av_unused int p1 = p[-2 * stride]; \ - av_unused int p0 = p[-1 * stride]; \ - av_unused int q0 = p[ 0 * stride]; \ - av_unused int q1 = p[ 1 * stride]; \ - av_unused int q2 = p[ 2 * stride]; \ - av_unused int q3 = p[ 3 * stride]; + int av_unused p3 = p[-4 * stride]; \ + int av_unused p2 = p[-3 * stride]; \ + int av_unused p1 = p[-2 * stride]; \ + int av_unused p0 = p[-1 * stride]; \ + int av_unused q0 = p[ 0 * stride]; \ + int av_unused q1 = p[ 1 * stride]; \ + int av_unused q2 = p[ 2 * stride]; \ + int av_unused q3 = p[ 3 * stride]; #define clip_int8(n) (cm[(n) + 0x80] - 0x80) @@ -558,21 +558,26 @@ put_vp8_epel ## SIZE ## _h ## HTAPS ## v ## VTAPS ## _c(uint8_t *dst, \ } \ } +VP8_EPEL_H(16, 4) VP8_EPEL_H(8, 4) VP8_EPEL_H(4, 4) VP8_EPEL_H(16, 6) VP8_EPEL_H(8, 6) VP8_EPEL_H(4, 6) +VP8_EPEL_V(16, 4) VP8_EPEL_V(8, 4) VP8_EPEL_V(4, 4) VP8_EPEL_V(16, 6) VP8_EPEL_V(8, 6) VP8_EPEL_V(4, 6) +VP8_EPEL_HV(16, 4, 4) VP8_EPEL_HV(8, 4, 4) VP8_EPEL_HV(4, 4, 4) +VP8_EPEL_HV(16, 4, 6) VP8_EPEL_HV(8, 4, 6) VP8_EPEL_HV(4, 4, 6) +VP8_EPEL_HV(16, 6, 4) VP8_EPEL_HV(8, 6, 4) VP8_EPEL_HV(4, 6, 4) VP8_EPEL_HV(16, 6, 6) @@ -662,11 +667,7 @@ VP8_BILINEAR(4) av_cold void ff_vp78dsp_init(VP8DSPContext *dsp) { - dsp->put_vp8_epel_pixels_tab[0][0][0] = put_vp8_pixels16_c; - dsp->put_vp8_epel_pixels_tab[0][0][2] = put_vp8_epel16_h6_c; - dsp->put_vp8_epel_pixels_tab[0][2][0] = put_vp8_epel16_v6_c; - dsp->put_vp8_epel_pixels_tab[0][2][2] = put_vp8_epel16_h6v6_c; - + VP78_MC_FUNC(0, 16); VP78_MC_FUNC(1, 8); VP78_MC_FUNC(2, 4); @@ -682,7 +683,7 @@ av_cold void ff_vp78dsp_init(VP8DSPContext *dsp) ff_vp78dsp_init_ppc(dsp); #elif ARCH_RISCV ff_vp78dsp_init_riscv(dsp); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_vp78dsp_init_x86(dsp); #endif } @@ -749,7 +750,7 @@ av_cold void ff_vp8dsp_init(VP8DSPContext *dsp) ff_vp8dsp_init_arm(dsp); #elif ARCH_RISCV ff_vp8dsp_init_riscv(dsp); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_vp8dsp_init_x86(dsp); #elif ARCH_MIPS ff_vp8dsp_init_mips(dsp); diff --git a/icecat/media/ffvpx/libavcodec/vp9.c b/icecat/media/ffvpx/libavcodec/vp9.c index 7957cbeab9..83cd8a1565 100644 --- a/icecat/media/ffvpx/libavcodec/vp9.c +++ b/icecat/media/ffvpx/libavcodec/vp9.c @@ -41,7 +41,6 @@ #include "vp9data.h" #include "vp9dec.h" #include "vpx_rac.h" -#include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" @@ -98,7 +97,6 @@ static void vp9_tile_data_free(VP9TileData *td) static void vp9_frame_unref(VP9Frame *f) { ff_progress_frame_unref(&f->tf); - av_refstruct_unref(&f->header_ref); av_refstruct_unref(&f->extradata); av_refstruct_unref(&f->hwaccel_picture_private); f->segmentation_map = NULL; @@ -147,9 +145,6 @@ fail: static void vp9_frame_replace(VP9Frame *dst, const VP9Frame *src) { - av_refstruct_replace(&dst->header_ref, src->header_ref); - dst->frame_header = src->frame_header; - ff_progress_frame_replace(&dst->tf, &src->tf); av_refstruct_replace(&dst->extradata, src->extradata); @@ -170,19 +165,16 @@ static int update_size(AVCodecContext *avctx, int w, int h) CONFIG_VP9_NVDEC_HWACCEL + \ CONFIG_VP9_VAAPI_HWACCEL + \ CONFIG_VP9_VDPAU_HWACCEL + \ - CONFIG_VP9_VIDEOTOOLBOX_HWACCEL + \ - CONFIG_VP9_VULKAN_HWACCEL) + CONFIG_VP9_VIDEOTOOLBOX_HWACCEL) enum AVPixelFormat pix_fmts[HWACCEL_MAX + 2], *fmtp = pix_fmts; VP9Context *s = avctx->priv_data; uint8_t *p; int bytesperpixel = s->bytesperpixel, ret, cols, rows; int lflvl_len, i; - int changed = 0; av_assert0(w > 0 && h > 0); if (!(s->pix_fmt == s->gf_fmt && w == s->w && h == s->h)) { - changed = 1; if ((ret = ff_set_dimensions(avctx, w, h)) < 0) return ret; @@ -210,9 +202,6 @@ static int update_size(AVCodecContext *avctx, int w, int h) #endif #if CONFIG_VP9_VIDEOTOOLBOX_HWACCEL *fmtp++ = AV_PIX_FMT_VIDEOTOOLBOX; -#endif -#if CONFIG_VP9_VULKAN_HWACCEL - *fmtp++ = AV_PIX_FMT_VULKAN; #endif break; case AV_PIX_FMT_YUV420P12: @@ -224,9 +213,6 @@ static int update_size(AVCodecContext *avctx, int w, int h) #endif #if CONFIG_VP9_VDPAU_HWACCEL *fmtp++ = AV_PIX_FMT_VDPAU; -#endif -#if CONFIG_VP9_VULKAN_HWACCEL - *fmtp++ = AV_PIX_FMT_VULKAN; #endif break; case AV_PIX_FMT_YUV444P: @@ -234,9 +220,6 @@ static int update_size(AVCodecContext *avctx, int w, int h) case AV_PIX_FMT_YUV444P12: #if CONFIG_VP9_VAAPI_HWACCEL *fmtp++ = AV_PIX_FMT_VAAPI; -#endif -#if CONFIG_VP9_VULKAN_HWACCEL - *fmtp++ = AV_PIX_FMT_VULKAN; #endif break; case AV_PIX_FMT_GBRP: @@ -244,9 +227,6 @@ static int update_size(AVCodecContext *avctx, int w, int h) case AV_PIX_FMT_GBRP12: #if CONFIG_VP9_VAAPI_HWACCEL *fmtp++ = AV_PIX_FMT_VAAPI; -#endif -#if CONFIG_VP9_VULKAN_HWACCEL - *fmtp++ = AV_PIX_FMT_VULKAN; #endif break; } @@ -255,10 +235,8 @@ static int update_size(AVCodecContext *avctx, int w, int h) *fmtp = AV_PIX_FMT_NONE; ret = ff_get_format(avctx, pix_fmts); - if (ret < 0) { - ff_set_dimensions(avctx, s->w, s->h); + if (ret < 0) return ret; - } avctx->pix_fmt = ret; s->gf_fmt = s->pix_fmt; @@ -270,7 +248,7 @@ static int update_size(AVCodecContext *avctx, int w, int h) rows = (h + 7) >> 3; if (s->intra_pred_data[0] && cols == s->cols && rows == s->rows && s->pix_fmt == s->last_fmt) - return changed; + return 0; s->last_fmt = s->pix_fmt; s->sb_cols = (w + 63) >> 6; @@ -315,10 +293,9 @@ static int update_size(AVCodecContext *avctx, int w, int h) ff_vp9dsp_init(&s->dsp, s->s.h.bpp, avctx->flags & AV_CODEC_FLAG_BITEXACT); ff_videodsp_init(&s->vdsp, s->s.h.bpp); s->last_bpp = s->s.h.bpp; - changed = 1; } - return changed; + return 0; } static int update_block_buffers(AVCodecContext *avctx) @@ -525,7 +502,6 @@ static int decode_frame_header(AVCodecContext *avctx, int c, i, j, k, l, m, n, w, h, max, size2, ret, sharp; int last_invisible; const uint8_t *data2; - int changed; /* general header */ if ((ret = init_get_bits8(&s->gb, data, size)) < 0) { @@ -795,10 +771,10 @@ FF_ENABLE_DEPRECATION_WARNINGS } /* tiling info */ - if ((changed = update_size(avctx, w, h)) < 0) { + if ((ret = update_size(avctx, w, h)) < 0) { av_log(avctx, AV_LOG_ERROR, "Failed to initialize decoder for %dx%d @ %d\n", w, h, s->pix_fmt); - return changed; + return ret; } for (s->s.h.tiling.log2_tile_cols = 0; s->sb_cols > (64 << s->s.h.tiling.log2_tile_cols); @@ -813,7 +789,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } s->s.h.tiling.log2_tile_rows = decode012(&s->gb); s->s.h.tiling.tile_rows = 1 << s->s.h.tiling.log2_tile_rows; - if (s->s.h.tiling.tile_cols != (1 << s->s.h.tiling.log2_tile_cols) || changed) { + if (s->s.h.tiling.tile_cols != (1 << s->s.h.tiling.log2_tile_cols)) { int n_range_coders; VPXRangeCoder *rc; @@ -1164,8 +1140,7 @@ static void decode_sb(VP9TileData *td, int row, int col, VP9Filter *lflvl, uvoff + (8 * hbs * bytesperpixel >> s->ss_h), bl + 1); break; default: - av_unreachable("ff_vp9_partition_tree only has " - "the four PARTITION_* terminal codes"); + av_assert0(0); } } else if (vpx_rac_get_prob_branchy(td->c, p[1])) { bp = PARTITION_SPLIT; @@ -1272,7 +1247,6 @@ static av_cold int vp9_decode_free(AVCodecContext *avctx) for (i = 0; i < 8; i++) { ff_progress_frame_unref(&s->s.refs[i]); ff_progress_frame_unref(&s->next_refs[i]); - vp9_frame_unref(&s->s.ref_frames[i]); } free_buffers(s); @@ -1280,11 +1254,6 @@ static av_cold int vp9_decode_free(AVCodecContext *avctx) av_freep(&s->entries); ff_pthread_free(s, vp9_context_offsets); #endif - - av_refstruct_unref(&s->header_ref); - ff_cbs_fragment_free(&s->current_frag); - ff_cbs_close(&s->cbc); - av_freep(&s->td); return 0; } @@ -1587,41 +1556,22 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame, int size = pkt->size; VP9Context *s = avctx->priv_data; int ret, i, j, ref; - CodedBitstreamUnit *unit; - VP9RawFrame *rf; - int retain_segmap_ref = s->s.frames[REF_FRAME_SEGMAP].segmentation_map && (!s->s.h.segmentation.enabled || !s->s.h.segmentation.update_map); const VP9Frame *src; AVFrame *f; - ret = ff_cbs_read_packet(s->cbc, &s->current_frag, pkt); - if (ret < 0) { - ff_cbs_fragment_reset(&s->current_frag); - av_log(avctx, AV_LOG_ERROR, "Failed to read frame header.\n"); - return ret; - } - - unit = &s->current_frag.units[0]; - rf = unit->content; - - av_refstruct_replace(&s->header_ref, unit->content_ref); - s->frame_header = &rf->header; - if ((ret = decode_frame_header(avctx, data, size, &ref)) < 0) { - ff_cbs_fragment_reset(&s->current_frag); return ret; } else if (ret == 0) { if (!s->s.refs[ref].f) { av_log(avctx, AV_LOG_ERROR, "Requested reference %d not available\n", ref); - ff_cbs_fragment_reset(&s->current_frag); return AVERROR_INVALIDDATA; } for (int i = 0; i < 8; i++) ff_progress_frame_replace(&s->next_refs[i], &s->s.refs[i]); ff_thread_finish_setup(avctx); ff_progress_frame_await(&s->s.refs[ref], INT_MAX); - ff_cbs_fragment_reset(&s->current_frag); if ((ret = av_frame_ref(frame, s->s.refs[ref].f)) < 0) return ret; @@ -1639,14 +1589,8 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame, vp9_frame_replace(&s->s.frames[REF_FRAME_SEGMAP], src); vp9_frame_replace(&s->s.frames[REF_FRAME_MVPAIR], src); vp9_frame_unref(&s->s.frames[CUR_FRAME]); - if ((ret = vp9_frame_alloc(avctx, &s->s.frames[CUR_FRAME])) < 0) { - ff_cbs_fragment_reset(&s->current_frag); + if ((ret = vp9_frame_alloc(avctx, &s->s.frames[CUR_FRAME])) < 0) return ret; - } - - s->s.frames[CUR_FRAME].header_ref = av_refstruct_ref(s->header_ref); - s->s.frames[CUR_FRAME].frame_header = s->frame_header; - f = s->s.frames[CUR_FRAME].tf.f; if (s->s.h.keyframe) f->flags |= AV_FRAME_FLAG_KEY; @@ -1674,7 +1618,7 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame, if (avctx->hwaccel) { const FFHWAccel *hwaccel = ffhwaccel(avctx->hwaccel); - ret = hwaccel->start_frame(avctx, pkt->buf, pkt->data, pkt->size); + ret = hwaccel->start_frame(avctx, NULL, 0); if (ret < 0) return ret; ret = hwaccel->decode_slice(avctx, pkt->data, pkt->size); @@ -1683,13 +1627,6 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame, ret = hwaccel->end_frame(avctx); if (ret < 0) return ret; - - for (i = 0; i < 8; i++) { - vp9_frame_replace(&s->s.ref_frames[i], - s->s.h.refreshrefmask & (1 << i) ? - &s->s.frames[CUR_FRAME] : &s->s.ref_frames[i]); - } - goto finish; } @@ -1814,8 +1751,6 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame, } finish: - ff_cbs_fragment_reset(&s->current_frag); - ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX); // ref frame setup for (int i = 0; i < 8; i++) @@ -1829,26 +1764,19 @@ finish: return pkt->size; fail: - ff_cbs_fragment_reset(&s->current_frag); ff_progress_frame_report(&s->s.frames[CUR_FRAME].tf, INT_MAX); return ret; } -static av_cold void vp9_decode_flush(AVCodecContext *avctx) +static void vp9_decode_flush(AVCodecContext *avctx) { VP9Context *s = avctx->priv_data; int i; for (i = 0; i < 3; i++) vp9_frame_unref(&s->s.frames[i]); - - for (i = 0; i < 8; i++) { + for (i = 0; i < 8; i++) ff_progress_frame_unref(&s->s.refs[i]); - vp9_frame_unref(&s->s.ref_frames[i]); - } - - ff_cbs_fragment_reset(&s->current_frag); - ff_cbs_flush(s->cbc); if (FF_HW_HAS_CB(avctx, flush)) FF_HW_SIMPLE_CALL(avctx, flush); @@ -1862,10 +1790,6 @@ static av_cold int vp9_decode_init(AVCodecContext *avctx) s->last_bpp = 0; s->s.h.filter.sharpness = -1; - ret = ff_cbs_init(&s->cbc, AV_CODEC_ID_VP9, avctx); - if (ret < 0) - return ret; - #if HAVE_THREADS if (avctx->active_thread_type & FF_THREAD_SLICE) { ret = ff_pthread_init(s, vp9_context_offsets); @@ -1889,13 +1813,6 @@ static int vp9_decode_update_thread_context(AVCodecContext *dst, const AVCodecCo av_refstruct_replace(&s->frame_extradata_pool, ssrc->frame_extradata_pool); s->frame_extradata_pool_size = ssrc->frame_extradata_pool_size; - av_refstruct_replace(&s->header_ref, ssrc->header_ref); - for (int i = 0; i < 8; i++) - vp9_frame_replace(&s->s.ref_frames[i], &ssrc->s.ref_frames[i]); - - s->frame_header = ssrc->frame_header; - memcpy(s->cbc->priv_data, ssrc->cbc->priv_data, sizeof(CodedBitstreamVP9Context)); - s->s.h.invisible = ssrc->s.h.invisible; s->s.h.keyframe = ssrc->s.h.keyframe; s->s.h.intraonly = ssrc->s.h.intraonly; @@ -1961,9 +1878,6 @@ const FFCodec ff_vp9_decoder = { #endif #if CONFIG_VP9_VIDEOTOOLBOX_HWACCEL HWACCEL_VIDEOTOOLBOX(vp9), -#endif -#if CONFIG_VP9_VULKAN_HWACCEL - HWACCEL_VULKAN(vp9), #endif NULL }, diff --git a/icecat/media/ffvpx/libavcodec/vp9_parser.c b/icecat/media/ffvpx/libavcodec/vp9_parser.c index 4caa730f4f..ffcb93505f 100644 --- a/icecat/media/ffvpx/libavcodec/vp9_parser.c +++ b/icecat/media/ffvpx/libavcodec/vp9_parser.c @@ -21,9 +21,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "avcodec.h" -#include "get_bits.h" -#include "parser_internal.h" +#include "libavutil/intreadwrite.h" +#include "libavcodec/get_bits.h" +#include "parser.h" static int parse(AVCodecParserContext *ctx, AVCodecContext *avctx, @@ -64,7 +64,7 @@ static int parse(AVCodecParserContext *ctx, return size; } -const FFCodecParser ff_vp9_parser = { - PARSER_CODEC_LIST(AV_CODEC_ID_VP9), - .parse = parse, +const AVCodecParser ff_vp9_parser = { + .codec_ids = { AV_CODEC_ID_VP9 }, + .parser_parse = parse, }; diff --git a/icecat/media/ffvpx/libavcodec/vp9dec.h b/icecat/media/ffvpx/libavcodec/vp9dec.h index c3ad2bbcdb..851ee9f6dd 100644 --- a/icecat/media/ffvpx/libavcodec/vp9dec.h +++ b/icecat/media/ffvpx/libavcodec/vp9dec.h @@ -38,7 +38,6 @@ #include "vp9dsp.h" #include "vp9shared.h" #include "vpx_rac.h" -#include "cbs_vp9.h" #define REF_INVALID_SCALE 0xFFFF @@ -98,11 +97,6 @@ typedef struct VP9Context { VP9SharedContext s; VP9TileData *td; - CodedBitstreamContext *cbc; - CodedBitstreamFragment current_frag; - VP9RawFrame *header_ref; ///< RefStruct reference backing frame_header - VP9RawFrameHeader *frame_header; - VP9DSPContext dsp; VideoDSPContext vdsp; GetBitContext gb; @@ -226,8 +220,8 @@ struct VP9TileData { DECLARE_ALIGNED(8, uint8_t, left_ref_ctx)[8]; DECLARE_ALIGNED(8, uint8_t, left_filter_ctx)[8]; // block reconstruction intermediates - DECLARE_ALIGNED(64, uint8_t, tmp_y)[64 * 64 * 2]; - DECLARE_ALIGNED(64, uint8_t, tmp_uv)[2][64 * 64 * 2]; + DECLARE_ALIGNED(32, uint8_t, tmp_y)[64 * 64 * 2]; + DECLARE_ALIGNED(32, uint8_t, tmp_uv)[2][64 * 64 * 2]; struct { int x, y; } min_mv, max_mv; int16_t *block_base, *block, *uvblock_base[2], *uvblock[2]; uint8_t *eob_base, *uveob_base[2], *eob, *uveob[2]; diff --git a/icecat/media/ffvpx/libavcodec/vp9dsp.c b/icecat/media/ffvpx/libavcodec/vp9dsp.c index 147486e10b..967e6e1e1a 100644 --- a/icecat/media/ffvpx/libavcodec/vp9dsp.c +++ b/icecat/media/ffvpx/libavcodec/vp9dsp.c @@ -102,7 +102,7 @@ av_cold void ff_vp9dsp_init(VP9DSPContext *dsp, int bpp, int bitexact) ff_vp9dsp_init_arm(dsp, bpp); #elif ARCH_RISCV ff_vp9dsp_init_riscv(dsp, bpp, bitexact); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_vp9dsp_init_x86(dsp, bpp, bitexact); #elif ARCH_MIPS ff_vp9dsp_init_mips(dsp, bpp); diff --git a/icecat/media/ffvpx/libavcodec/vp9dsp.h b/icecat/media/ffvpx/libavcodec/vp9dsp.h index 0e93224e17..772848e349 100644 --- a/icecat/media/ffvpx/libavcodec/vp9dsp.h +++ b/icecat/media/ffvpx/libavcodec/vp9dsp.h @@ -121,7 +121,7 @@ typedef struct VP9DSPContext { vp9_scaled_mc_func smc[5][N_FILTERS][2]; } VP9DSPContext; -EXTERN const int16_t ff_vp9_subpel_filters[3][16][8]; +extern const int16_t attribute_visibility_hidden ff_vp9_subpel_filters[3][16][8]; void ff_vp9dsp_init(VP9DSPContext *dsp, int bpp, int bitexact); diff --git a/icecat/media/ffvpx/libavcodec/vp9shared.h b/icecat/media/ffvpx/libavcodec/vp9shared.h index 098372f8a4..8a450c26a6 100644 --- a/icecat/media/ffvpx/libavcodec/vp9shared.h +++ b/icecat/media/ffvpx/libavcodec/vp9shared.h @@ -30,7 +30,6 @@ #include "libavutil/mem_internal.h" #include "progressframe.h" -#include "cbs_vp9.h" #include "vp9.h" enum BlockPartition { @@ -64,9 +63,6 @@ typedef struct VP9mvrefPair { } VP9mvrefPair; typedef struct VP9Frame { - VP9RawFrame *header_ref; ///< RefStruct reference backing frame_header - VP9RawFrameHeader *frame_header; - ProgressFrame tf; void *extradata; ///< RefStruct reference uint8_t *segmentation_map; @@ -174,7 +170,6 @@ typedef struct VP9SharedContext { #define REF_FRAME_SEGMAP 2 #define BLANK_FRAME 3 VP9Frame frames[4]; - VP9Frame ref_frames[8]; } VP9SharedContext; #endif /* AVCODEC_VP9SHARED_H */ diff --git a/icecat/media/ffvpx/libavcodec/x86/constants.c b/icecat/media/ffvpx/libavcodec/x86/constants.c index eb01221c8d..bc7f2b17b8 100644 --- a/icecat/media/ffvpx/libavcodec/x86/constants.c +++ b/icecat/media/ffvpx/libavcodec/x86/constants.c @@ -30,7 +30,6 @@ DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_3) = { 0x0003000300030003ULL, 0 DECLARE_ASM_ALIGNED(32, const ymm_reg, ff_pw_4) = { 0x0004000400040004ULL, 0x0004000400040004ULL, 0x0004000400040004ULL, 0x0004000400040004ULL }; DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_5) = { 0x0005000500050005ULL, 0x0005000500050005ULL }; -DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_7) = { 0x0007000700070007ULL, 0x0007000700070007ULL }; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_8) = { 0x0008000800080008ULL, 0x0008000800080008ULL }; DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_9) = { 0x0009000900090009ULL, 0x0009000900090009ULL }; DECLARE_ALIGNED(8, const uint64_t, ff_pw_15) = 0x000F000F000F000FULL; @@ -38,8 +37,10 @@ DECLARE_ALIGNED(16, const xmm_reg, ff_pw_16) = { 0x0010001000100010ULL, 0x001 DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_18) = { 0x0012001200120012ULL, 0x0012001200120012ULL }; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_20) = { 0x0014001400140014ULL, 0x0014001400140014ULL }; DECLARE_ALIGNED(16, const xmm_reg, ff_pw_32) = { 0x0020002000200020ULL, 0x0020002000200020ULL }; +DECLARE_ASM_ALIGNED(8, const uint64_t, ff_pw_42) = 0x002A002A002A002AULL; DECLARE_ASM_ALIGNED(8, const uint64_t, ff_pw_53) = 0x0035003500350035ULL; DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_64) = { 0x0040004000400040ULL, 0x0040004000400040ULL }; +DECLARE_ASM_ALIGNED(8, const uint64_t, ff_pw_96) = 0x0060006000600060ULL; DECLARE_ASM_ALIGNED(8, const uint64_t, ff_pw_128) = 0x0080008000800080ULL; DECLARE_ALIGNED(32, const ymm_reg, ff_pw_255) = { 0x00ff00ff00ff00ffULL, 0x00ff00ff00ff00ffULL, 0x00ff00ff00ff00ffULL, 0x00ff00ff00ff00ffULL }; @@ -76,7 +77,7 @@ DECLARE_ALIGNED(32, const ymm_reg, ff_pb_80) = { 0x8080808080808080ULL, 0x808 0x8080808080808080ULL, 0x8080808080808080ULL }; DECLARE_ALIGNED(32, const ymm_reg, ff_pb_FE) = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL }; -DECLARE_ALIGNED(16, const xmm_reg, ff_pb_FC) = { 0xFCFCFCFCFCFCFCFCULL, 0xFCFCFCFCFCFCFCFCULL }; +DECLARE_ALIGNED(8, const uint64_t, ff_pb_FC) = 0xFCFCFCFCFCFCFCFCULL; DECLARE_ALIGNED(16, const xmm_reg, ff_ps_neg) = { 0x8000000080000000ULL, 0x8000000080000000ULL }; @@ -86,8 +87,6 @@ DECLARE_ALIGNED(32, const ymm_reg, ff_pd_16) = { 0x0000001000000010ULL, 0x000 0x0000001000000010ULL, 0x0000001000000010ULL }; DECLARE_ALIGNED(32, const ymm_reg, ff_pd_32) = { 0x0000002000000020ULL, 0x0000002000000020ULL, 0x0000002000000020ULL, 0x0000002000000020ULL }; -DECLARE_ALIGNED(32, const ymm_reg, ff_pd_64) = { 0x0000004000000040ULL, 0x0000004000000040ULL, - 0x0000004000000040ULL, 0x0000004000000040ULL }; DECLARE_ALIGNED(32, const ymm_reg, ff_pd_8192) = { 0x0000200000002000ULL, 0x0000200000002000ULL, 0x0000200000002000ULL, 0x0000200000002000ULL }; DECLARE_ALIGNED(32, const ymm_reg, ff_pd_65535)= { 0x0000ffff0000ffffULL, 0x0000ffff0000ffffULL, diff --git a/icecat/media/ffvpx/libavcodec/x86/constants.h b/icecat/media/ffvpx/libavcodec/x86/constants.h index 4c4d32ac8d..85da38b7b9 100644 --- a/icecat/media/ffvpx/libavcodec/x86/constants.h +++ b/icecat/media/ffvpx/libavcodec/x86/constants.h @@ -30,7 +30,6 @@ extern const ymm_reg ff_pw_2; extern const xmm_reg ff_pw_3; extern const ymm_reg ff_pw_4; extern const xmm_reg ff_pw_5; -extern const xmm_reg ff_pw_7; extern const xmm_reg ff_pw_8; extern const xmm_reg ff_pw_9; extern const uint64_t ff_pw_15; @@ -38,8 +37,10 @@ extern const xmm_reg ff_pw_16; extern const xmm_reg ff_pw_18; extern const xmm_reg ff_pw_20; extern const xmm_reg ff_pw_32; +extern const uint64_t ff_pw_42; extern const uint64_t ff_pw_53; extern const xmm_reg ff_pw_64; +extern const uint64_t ff_pw_96; extern const uint64_t ff_pw_128; extern const ymm_reg ff_pw_255; extern const ymm_reg ff_pw_256; @@ -57,15 +58,14 @@ extern const ymm_reg ff_pb_1; extern const ymm_reg ff_pb_2; extern const ymm_reg ff_pb_3; extern const ymm_reg ff_pb_80; -extern const xmm_reg ff_pb_FC; extern const ymm_reg ff_pb_FE; +extern const uint64_t ff_pb_FC; extern const xmm_reg ff_ps_neg; extern const ymm_reg ff_pd_1; extern const ymm_reg ff_pd_16; extern const ymm_reg ff_pd_32; -extern const ymm_reg ff_pd_64; extern const ymm_reg ff_pd_8192; extern const ymm_reg ff_pd_65535; diff --git a/icecat/media/ffvpx/libavcodec/x86/fdct.c b/icecat/media/ffvpx/libavcodec/x86/fdct.c index 065af56a4a..f4677ff4be 100644 --- a/icecat/media/ffvpx/libavcodec/x86/fdct.c +++ b/icecat/media/ffvpx/libavcodec/x86/fdct.c @@ -44,6 +44,10 @@ // constants for the forward DCT // ----------------------------- // +// Be sure to check that your compiler is aligning all constants to QWORD +// (8-byte) memory boundaries! Otherwise the unaligned memory access will +// severely stall MMX execution. +// ////////////////////////////////////////////////////////////////////// #define BITS_FRW_ACC 3 //; 2 or 3 for accuracy diff --git a/icecat/media/ffvpx/libavcodec/x86/fdctdsp_init.c b/icecat/media/ffvpx/libavcodec/x86/fdctdsp_init.c index 107912afc8..92a842433d 100644 --- a/icecat/media/ffvpx/libavcodec/x86/fdctdsp_init.c +++ b/icecat/media/ffvpx/libavcodec/x86/fdctdsp_init.c @@ -26,7 +26,6 @@ av_cold void ff_fdctdsp_init_x86(FDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth) { -#if HAVE_SSE2_INLINE int cpu_flags = av_get_cpu_flags(); const int dct_algo = avctx->dct_algo; @@ -36,5 +35,4 @@ av_cold void ff_fdctdsp_init_x86(FDCTDSPContext *c, AVCodecContext *avctx, c->fdct = ff_fdct_sse2; } } -#endif } diff --git a/icecat/media/ffvpx/libavcodec/x86/flacdsp_init.c b/icecat/media/ffvpx/libavcodec/x86/flacdsp_init.c index a2c3829d66..fa993d3466 100644 --- a/icecat/media/ffvpx/libavcodec/x86/flacdsp_init.c +++ b/icecat/media/ffvpx/libavcodec/x86/flacdsp_init.c @@ -62,6 +62,7 @@ DECORRELATE_IFUNCS(32, avx); av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int channels) { +#if HAVE_X86ASM int cpu_flags = av_get_cpu_flags(); if (EXTERNAL_SSE2(cpu_flags)) { @@ -84,10 +85,8 @@ av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int c->decorrelate[0] = ff_flac_decorrelate_indep4_16_ssse3; else if (channels == 6) c->decorrelate[0] = ff_flac_decorrelate_indep6_16_ssse3; -#if ARCH_X86_64 - else if (channels == 8) + else if (ARCH_X86_64 && channels == 8) c->decorrelate[0] = ff_flac_decorrelate_indep8_16_ssse3; -#endif } else if (fmt == AV_SAMPLE_FMT_S32) { if (channels == 2) c->decorrelate[0] = ff_flac_decorrelate_indep2_32_ssse3; @@ -95,10 +94,8 @@ av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int c->decorrelate[0] = ff_flac_decorrelate_indep4_32_ssse3; else if (channels == 6) c->decorrelate[0] = ff_flac_decorrelate_indep6_32_ssse3; -#if ARCH_X86_64 - else if (channels == 8) + else if (ARCH_X86_64 && channels == 8) c->decorrelate[0] = ff_flac_decorrelate_indep8_32_ssse3; -#endif } } if (EXTERNAL_SSE4(cpu_flags)) { @@ -108,22 +105,19 @@ av_cold void ff_flacdsp_init_x86(FLACDSPContext *c, enum AVSampleFormat fmt, int } if (EXTERNAL_AVX(cpu_flags)) { if (fmt == AV_SAMPLE_FMT_S16) { -#if ARCH_X86_64 - if (channels == 8) + if (ARCH_X86_64 && channels == 8) c->decorrelate[0] = ff_flac_decorrelate_indep8_16_avx; -#endif } else if (fmt == AV_SAMPLE_FMT_S32) { if (channels == 4) c->decorrelate[0] = ff_flac_decorrelate_indep4_32_avx; else if (channels == 6) c->decorrelate[0] = ff_flac_decorrelate_indep6_32_avx; -#if ARCH_X86_64 - else if (channels == 8) + else if (ARCH_X86_64 && channels == 8) c->decorrelate[0] = ff_flac_decorrelate_indep8_32_avx; -#endif } } if (EXTERNAL_XOP(cpu_flags)) { c->lpc32 = ff_flac_lpc_32_xop; } +#endif /* HAVE_X86ASM */ } diff --git a/icecat/media/ffvpx/libavcodec/x86/h264_intrapred.asm b/icecat/media/ffvpx/libavcodec/x86/h264_intrapred.asm index 2e4a46ae76..a8a630dbe6 100644 --- a/icecat/media/ffvpx/libavcodec/x86/h264_intrapred.asm +++ b/icecat/media/ffvpx/libavcodec/x86/h264_intrapred.asm @@ -606,31 +606,37 @@ INIT_MMX ssse3 PRED8x8_H ;----------------------------------------------------------------------------- -; void ff_pred8x8_top_dc_8_sse2(uint8_t *src, ptrdiff_t stride) +; void ff_pred8x8_top_dc_8_mmxext(uint8_t *src, ptrdiff_t stride) ;----------------------------------------------------------------------------- -INIT_XMM sse2 +INIT_MMX mmxext cglobal pred8x8_top_dc_8, 2,5 sub r0, r1 - movq xmm0, [r0] - pxor xmm1, xmm1 + movq mm0, [r0] + pxor mm1, mm1 + pxor mm2, mm2 lea r2, [r0+r1*2] - punpcklbw xmm0, xmm1 - psadbw xmm0, xmm1 ; s0,0,0,0,s1,0,0,0 (w) + punpckhbw mm1, mm0 + punpcklbw mm0, mm2 + psadbw mm1, mm2 ; s1 lea r3, [r2+r1*2] - psrlw xmm0, 1 - pavgw xmm0, xmm1 - pshuflw xmm0, xmm0, 0 ; dc0,dc0,dc0,dc0,dc1,0,0,0 - pshufhw xmm0, xmm0, 0 ; dc0,dc1 (w) - packuswb xmm0, xmm1 ; dc0,dc1 (b) - movq [r0+r1*1], xmm0 - movq [r0+r1*2], xmm0 + psadbw mm0, mm2 ; s0 + psrlw mm1, 1 + psrlw mm0, 1 + pavgw mm1, mm2 + lea r4, [r3+r1*2] + pavgw mm0, mm2 + pshufw mm1, mm1, 0 + pshufw mm0, mm0, 0 ; dc0 (w) + packuswb mm0, mm1 ; dc0,dc1 (b) + movq [r0+r1*1], mm0 + movq [r0+r1*2], mm0 lea r0, [r3+r1*2] - movq [r2+r1*1], xmm0 - movq [r2+r1*2], xmm0 - movq [r3+r1*1], xmm0 - movq [r3+r1*2], xmm0 - movq [r0+r1*1], xmm0 - movq [r0+r1*2], xmm0 + movq [r2+r1*1], mm0 + movq [r2+r1*2], mm0 + movq [r3+r1*1], mm0 + movq [r3+r1*2], mm0 + movq [r0+r1*1], mm0 + movq [r0+r1*2], mm0 RET ;----------------------------------------------------------------------------- diff --git a/icecat/media/ffvpx/libavcodec/x86/h264_intrapred_init.c b/icecat/media/ffvpx/libavcodec/x86/h264_intrapred_init.c index 0476980a57..aa9bc721f0 100644 --- a/icecat/media/ffvpx/libavcodec/x86/h264_intrapred_init.c +++ b/icecat/media/ffvpx/libavcodec/x86/h264_intrapred_init.c @@ -113,7 +113,7 @@ PRED16x16(plane_svq3, 8, ssse3) PRED16x16(tm_vp8, 8, sse2) PRED16x16(tm_vp8, 8, avx2) -PRED8x8(top_dc, 8, sse2) +PRED8x8(top_dc, 8, mmxext) PRED8x8(dc_rv40, 8, mmxext) PRED8x8(dc, 8, mmxext) PRED8x8(vertical, 8, sse2) @@ -187,6 +187,7 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, } if (codec_id == AV_CODEC_ID_SVQ3 || codec_id == AV_CODEC_ID_H264) { if (chroma_format_idc <= 1) { + h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_8_mmxext; h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_8_mmxext; } } @@ -209,12 +210,8 @@ av_cold void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, h->pred8x8l [VERT_RIGHT_PRED ] = ff_pred8x8l_vertical_right_8_sse2; h->pred8x8l [VERT_LEFT_PRED ] = ff_pred8x8l_vertical_left_8_sse2; h->pred8x8l [HOR_DOWN_PRED ] = ff_pred8x8l_horizontal_down_8_sse2; - if (chroma_format_idc <= 1) { + if (chroma_format_idc <= 1) h->pred8x8 [VERT_PRED8x8 ] = ff_pred8x8_vertical_8_sse2; - if (codec_id == AV_CODEC_ID_SVQ3 || codec_id == AV_CODEC_ID_H264) { - h->pred8x8 [TOP_DC_PRED8x8] = ff_pred8x8_top_dc_8_sse2; - } - } if (codec_id == AV_CODEC_ID_VP7 || codec_id == AV_CODEC_ID_VP8) { h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_tm_vp8_8_sse2; h->pred8x8 [PLANE_PRED8x8 ] = ff_pred8x8_tm_vp8_8_sse2; diff --git a/icecat/media/ffvpx/libavcodec/x86/idctdsp.h b/icecat/media/ffvpx/libavcodec/x86/idctdsp.h index 9e8474cacd..738e4e36e4 100644 --- a/icecat/media/ffvpx/libavcodec/x86/idctdsp.h +++ b/icecat/media/ffvpx/libavcodec/x86/idctdsp.h @@ -22,11 +22,11 @@ #include #include -void ff_add_pixels_clamped_sse2(const int16_t *block, uint8_t *restrict pixels, +void ff_add_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size); -void ff_put_pixels_clamped_sse2(const int16_t *block, uint8_t *restrict pixels, +void ff_put_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size); -void ff_put_signed_pixels_clamped_sse2(const int16_t *block, uint8_t *restrict pixels, +void ff_put_signed_pixels_clamped_sse2(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size); diff --git a/icecat/media/ffvpx/libavcodec/x86/idctdsp_init.c b/icecat/media/ffvpx/libavcodec/x86/idctdsp_init.c index fce62e5590..2d165b975b 100644 --- a/icecat/media/ffvpx/libavcodec/x86/idctdsp_init.c +++ b/icecat/media/ffvpx/libavcodec/x86/idctdsp_init.c @@ -65,6 +65,18 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, { int cpu_flags = av_get_cpu_flags(); +#if ARCH_X86_32 + if (EXTERNAL_MMX(cpu_flags)) { + if (!high_bit_depth && + avctx->lowres == 0 && + (avctx->idct_algo == FF_IDCT_AUTO || + avctx->idct_algo == FF_IDCT_SIMPLEAUTO || + avctx->idct_algo == FF_IDCT_SIMPLEMMX)) { + c->idct = ff_simple_idct_mmx; + } + } +#endif + if (EXTERNAL_SSE2(cpu_flags)) { c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_sse2; c->put_pixels_clamped = ff_put_pixels_clamped_sse2; @@ -76,15 +88,14 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, (avctx->idct_algo == FF_IDCT_AUTO || avctx->idct_algo == FF_IDCT_SIMPLEAUTO || avctx->idct_algo == FF_IDCT_SIMPLEMMX)) { - c->idct = ff_simple_idct_sse2; c->idct_put = ff_simple_idct_put_sse2; c->idct_add = ff_simple_idct_add_sse2; c->perm_type = FF_IDCT_PERM_SIMPLE; } #endif -#if ARCH_X86_64 - if (!high_bit_depth && + if (ARCH_X86_64 && + !high_bit_depth && avctx->lowres == 0 && (avctx->idct_algo == FF_IDCT_AUTO || avctx->idct_algo == FF_IDCT_SIMPLEAUTO || @@ -95,11 +106,9 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, c->idct_add = ff_simple_idct8_add_sse2; c->perm_type = FF_IDCT_PERM_TRANSPOSE; } -#endif } -#if ARCH_X86_64 - if (avctx->lowres == 0) { + if (ARCH_X86_64 && avctx->lowres == 0) { if (EXTERNAL_AVX(cpu_flags) && !high_bit_depth && (avctx->idct_algo == FF_IDCT_AUTO || @@ -149,5 +158,4 @@ av_cold void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, } } } -#endif } diff --git a/icecat/media/ffvpx/libavcodec/x86/simple_idct.asm b/icecat/media/ffvpx/libavcodec/x86/simple_idct.asm index 0dc03738e4..c79519372a 100644 --- a/icecat/media/ffvpx/libavcodec/x86/simple_idct.asm +++ b/icecat/media/ffvpx/libavcodec/x86/simple_idct.asm @@ -1,5 +1,5 @@ ; -; Simple IDCT SSE2 +; Simple IDCT MMX ; ; Copyright (c) 2001, 2002 Michael Niedermayer ; @@ -30,8 +30,8 @@ SECTION_RODATA %if ARCH_X86_32 cextern pb_80 -d40000: dd 4 << 16, 0 ; must be 16-byte aligned wm1010: dw 0, 0xffff, 0, 0xffff +d40000: dd 4 << 16, 0 ; 23170.475006 ; 22725.260826 @@ -57,675 +57,650 @@ wm1010: dw 0, 0xffff, 0, 0xffff coeffs: dw 1 << (ROW_SHIFT - 1), 0 dw 1 << (ROW_SHIFT - 1), 0 - dw 1 << (ROW_SHIFT - 1), 0 - dw 1 << (ROW_SHIFT - 1), 0 - dw 1 << (ROW_SHIFT - 1), 1 - dw 1 << (ROW_SHIFT - 1), 0 dw 1 << (ROW_SHIFT - 1), 1 dw 1 << (ROW_SHIFT - 1), 0 - dw C4, C4, C4, C4, C4, C4, C4, C4 - dw C4, -C4, C4, -C4, C4, -C4, C4, -C4 + dw C4, C4, C4, C4 + dw C4, -C4, C4, -C4 - dw C2, C6, C2, C6, C2, C6, C2, C6 - dw C6, -C2, C6, -C2, C6, -C2, C6, -C2 + dw C2, C6, C2, C6 + dw C6, -C2, C6, -C2 - dw C1, C3, C1, C3, C1, C3, C1, C3 - dw C5, C7, C5, C7, C5, C7, C5, C7 + dw C1, C3, C1, C3 + dw C5, C7, C5, C7 - dw C3, -C7, C3, -C7, C3, -C7, C3, -C7 - dw -C1, -C5, -C1, -C5, -C1, -C5, -C1, -C5 + dw C3, -C7, C3, -C7 + dw -C1, -C5, -C1, -C5 - dw C5, -C1, C5, -C1, C5, -C1, C5, -C1 - dw C7, C3, C7, C3, C7, C3, C7, C3 + dw C5, -C1, C5, -C1 + dw C7, C3, C7, C3 - dw C7, -C5, C7, -C5, C7, -C5, C7, -C5 - dw C3, -C1, C3, -C1, C3, -C1, C3, -C1 + dw C7, -C5, C7, -C5 + dw C3, -C1, C3, -C1 SECTION .text %macro DC_COND_IDCT 7 - movq m0, [blockq + %1] ; R4 R0 r4 r0 - movq m1, [blockq + %2] ; R6 R2 r6 r2 - movq m2, [blockq + %3] ; R3 R1 r3 r1 - movq m3, [blockq + %4] ; R7 R5 r7 r5 - movq m4, [wm1010] - pand m4, m0 - por m4, m1 - por m4, m2 - por m4, m3 - packssdw m4, m4 - movd t0d, m4 + movq mm0, [blockq + %1] ; R4 R0 r4 r0 + movq mm1, [blockq + %2] ; R6 R2 r6 r2 + movq mm2, [blockq + %3] ; R3 R1 r3 r1 + movq mm3, [blockq + %4] ; R7 R5 r7 r5 + movq mm4, [wm1010] + pand mm4, mm0 + por mm4, mm1 + por mm4, mm2 + por mm4, mm3 + packssdw mm4, mm4 + movd t0d, mm4 or t0d, t0d jz %%1 - movq m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - movq m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - movq m5, [coeffs + 64] ; C6 C2 C6 C2 - pmaddwd m5, m1 ; C6R6+C2R2 C6r6+C2r2 - movq m6, [coeffs + 80] ; -C2 C6 -C2 C6 - pmaddwd m1, m6 ; -C2R6+C6R2 -C2r6+C6r2 - movq m7, [coeffs + 96] ; C3 C1 C3 C1 - pmaddwd m7, m2 ; C3R3+C1R1 C3r3+C1r1 - paddd m4, [coeffs + 16] - movq m6, m4 ; C4R4+C4R0 C4r4+C4r0 - paddd m4, m5 ; A0 a0 - psubd m6, m5 ; A3 a3 - movq m5, [coeffs + 112] ; C7 C5 C7 C5 - pmaddwd m5, m3 ; C7R7+C5R5 C7r7+C5r5 - paddd m0, [coeffs + 16] - paddd m1, m0 ; A1 a1 - paddd m0, m0 - psubd m0, m1 ; A2 a2 - pmaddwd m2, [coeffs + 128] ; -C7R3+C3R1 -C7r3+C3r1 - paddd m7, m5 ; B0 b0 - movq m5, [coeffs + 144] ; -C5 -C1 -C5 -C1 - pmaddwd m5, m3 ; -C5R7-C1R5 -C5r7-C1r5 - paddd m7, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m7 ; A0-B0 a0-b0 - paddd m5, m2 ; B1 b1 - psrad m7, %7 - psrad m4, %7 - movq m2, m1 ; A1 a1 - paddd m1, m5 ; A1+B1 a1+b1 - psubd m2, m5 ; A1-B1 a1-b1 - psrad m1, %7 - psrad m2, %7 - packssdw m7, m1 ; A1+B1 a1+b1 A0+B0 a0+b0 - pshufd m7, m7, 0xD8 - packssdw m2, m4 ; A0-B0 a0-b0 A1-B1 a1-b1 - pshufd m2, m2, 0xD8 - movq [%5], m7 - movq m1, [blockq + %3] ; R3 R1 r3 r1 - movq m4, [coeffs + 160] ; -C1 C5 -C1 C5 - movq [24 + %5], m2 - pmaddwd m4, m1 ; -C1R3+C5R1 -C1r3+C5r1 - movq m7, [coeffs + 176] ; C3 C7 C3 C7 - pmaddwd m1, [coeffs + 192] ; -C5R3+C7R1 -C5r3+C7r1 - pmaddwd m7, m3 ; C3R7+C7R5 C3r7+C7r5 - movq m2, m0 ; A2 a2 - pmaddwd m3, [coeffs + 208] ; -C1R7+C3R5 -C1r7+C3r5 - paddd m4, m7 ; B2 b2 - paddd m2, m4 ; A2+B2 a2+b2 - psubd m0, m4 ; a2-B2 a2-b2 - psrad m2, %7 - psrad m0, %7 - movq m4, m6 ; A3 a3 - paddd m3, m1 ; B3 b3 - paddd m6, m3 ; A3+B3 a3+b3 - psubd m4, m3 ; a3-B3 a3-b3 - psrad m6, %7 - packssdw m2, m6 ; A3+B3 a3+b3 A2+B2 a2+b2 - pshufd m2, m2, 0xD8 - movq [8 + %5], m2 - psrad m4, %7 - packssdw m4, m0 ; A2-B2 a2-b2 A3-B3 a3-b3 - pshufd m4, m4, 0xD8 - movq [16 + %5], m4 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm5, [coeffs + 32] ; C6 C2 C6 C2 + pmaddwd mm5, mm1 ; C6R6+C2R2 C6r6+C2r2 + movq mm6, [coeffs + 40] ; -C2 C6 -C2 C6 + pmaddwd mm1, mm6 ; -C2R6+C6R2 -C2r6+C6r2 + movq mm7, [coeffs + 48] ; C3 C1 C3 C1 + pmaddwd mm7, mm2 ; C3R3+C1R1 C3r3+C1r1 + paddd mm4, [coeffs + 8] + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + paddd mm4, mm5 ; A0 a0 + psubd mm6, mm5 ; A3 a3 + movq mm5, [coeffs + 56] ; C7 C5 C7 C5 + pmaddwd mm5, mm3 ; C7R7+C5R5 C7r7+C5r5 + paddd mm0, [coeffs + 8] + paddd mm1, mm0 ; A1 a1 + paddd mm0, mm0 + psubd mm0, mm1 ; A2 a2 + pmaddwd mm2, [coeffs + 64] ; -C7R3+C3R1 -C7r3+C3r1 + paddd mm7, mm5 ; B0 b0 + movq mm5, [coeffs + 72] ; -C5 -C1 -C5 -C1 + pmaddwd mm5, mm3 ; -C5R7-C1R5 -C5r7-C1r5 + paddd mm7, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm7 ; A0-B0 a0-b0 + paddd mm5, mm2 ; B1 b1 + psrad mm7, %7 + psrad mm4, %7 + movq mm2, mm1 ; A1 a1 + paddd mm1, mm5 ; A1+B1 a1+b1 + psubd mm2, mm5 ; A1-B1 a1-b1 + psrad mm1, %7 + psrad mm2, %7 + packssdw mm7, mm1 ; A1+B1 a1+b1 A0+B0 a0+b0 + packssdw mm2, mm4 ; A0-B0 a0-b0 A1-B1 a1-b1 + movq [%5], mm7 + movq mm1, [blockq + %3] ; R3 R1 r3 r1 + movq mm4, [coeffs + 80] ; -C1 C5 -C1 C5 + movq [24 + %5], mm2 + pmaddwd mm4, mm1 ; -C1R3+C5R1 -C1r3+C5r1 + movq mm7, [coeffs + 88] ; C3 C7 C3 C7 + pmaddwd mm1, [coeffs + 96] ; -C5R3+C7R1 -C5r3+C7r1 + pmaddwd mm7, mm3 ; C3R7+C7R5 C3r7+C7r5 + movq mm2, mm0 ; A2 a2 + pmaddwd mm3, [coeffs + 104] ; -C1R7+C3R5 -C1r7+C3r5 + paddd mm4, mm7 ; B2 b2 + paddd mm2, mm4 ; A2+B2 a2+b2 + psubd mm0, mm4 ; a2-B2 a2-b2 + psrad mm2, %7 + psrad mm0, %7 + movq mm4, mm6 ; A3 a3 + paddd mm3, mm1 ; B3 b3 + paddd mm6, mm3 ; A3+B3 a3+b3 + psubd mm4, mm3 ; a3-B3 a3-b3 + psrad mm6, %7 + packssdw mm2, mm6 ; A3+B3 a3+b3 A2+B2 a2+b2 + movq [8 + %5], mm2 + psrad mm4, %7 + packssdw mm4, mm0 ; A2-B2 a2-b2 A3-B3 a3-b3 + movq [16 + %5], mm4 jmp %%2 %%1: - pslld m0, 16 - ; d40000 is only eight bytes long, so this will clobber - ; the upper half of m0 with wm1010. It doesn't matter due to pshufd below. - paddd m0, [d40000] - psrad m0, 13 - packssdw m0, m0 - pshufd m0, m0, 0x0 - mova [%5], m0 - mova [16 + %5], m0 + pslld mm0, 16 + paddd mm0, [d40000] + psrad mm0, 13 + packssdw mm0, mm0 + movq [%5], mm0 + movq [8 + %5], mm0 + movq [16 + %5], mm0 + movq [24 + %5], mm0 %%2: %endmacro %macro Z_COND_IDCT 8 - movq m0, [blockq + %1] ; R4 R0 r4 r0 - movq m1, [blockq + %2] ; R6 R2 r6 r2 - movq m2, [blockq + %3] ; R3 R1 r3 r1 - movq m3, [blockq + %4] ; R7 R5 r7 r5 - movq m4, m0 - por m4, m1 - por m4, m2 - por m4, m3 - packssdw m4, m4 - movd t0d, m4 + movq mm0, [blockq + %1] ; R4 R0 r4 r0 + movq mm1, [blockq + %2] ; R6 R2 r6 r2 + movq mm2, [blockq + %3] ; R3 R1 r3 r1 + movq mm3, [blockq + %4] ; R7 R5 r7 r5 + movq mm4, mm0 + por mm4, mm1 + por mm4, mm2 + por mm4, mm3 + packssdw mm4, mm4 + movd t0d, mm4 or t0d, t0d jz %8 - movq m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - movq m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - movq m5, [coeffs + 64] ; C6 C2 C6 C2 - pmaddwd m5, m1 ; C6R6+C2R2 C6r6+C2r2 - movq m6, [coeffs + 80] ; -C2 C6 -C2 C6 - pmaddwd m1, m6 ; -C2R6+C6R2 -C2r6+C6r2 - movq m7, [coeffs + 96] ; C3 C1 C3 C1 - pmaddwd m7, m2 ; C3R3+C1R1 C3r3+C1r1 - paddd m4, [coeffs] - movq m6, m4 ; C4R4+C4R0 C4r4+C4r0 - paddd m4, m5 ; A0 a0 - psubd m6, m5 ; A3 a3 - movq m5, [coeffs + 112] ; C7 C5 C7 C5 - pmaddwd m5, m3 ; C7R7+C5R5 C7r7+C5r5 - paddd m0, [coeffs] - paddd m1, m0 ; A1 a1 - paddd m0, m0 - psubd m0, m1 ; A2 a2 - pmaddwd m2, [coeffs + 128] ; -C7R3+C3R1 -C7r3+C3r1 - paddd m7, m5 ; B0 b0 - movq m5, [coeffs + 144] ; -C5 -C1 -C5 -C1 - pmaddwd m5, m3 ; -C5R7-C1R5 -C5r7-C1r5 - paddd m7, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m7 ; A0-B0 a0-b0 - paddd m5, m2 ; B1 b1 - psrad m7, %7 - psrad m4, %7 - movq m2, m1 ; A1 a1 - paddd m1, m5 ; A1+B1 a1+b1 - psubd m2, m5 ; A1-B1 a1-b1 - psrad m1, %7 - psrad m2, %7 - packssdw m7, m1 ; A1+B1 a1+b1 A0+B0 a0+b0 - pshufd m7, m7, 0xD8 - packssdw m2, m4 ; A0-B0 a0-b0 A1-B1 a1-b1 - pshufd m2, m2, 0xD8 - movq [%5], m7 - movq m1, [blockq + %3] ; R3 R1 r3 r1 - movq m4, [coeffs + 160] ; -C1 C5 -C1 C5 - movq [24 + %5], m2 - pmaddwd m4, m1 ; -C1R3+C5R1 -C1r3+C5r1 - movq m7, [coeffs + 176] ; C3 C7 C3 C7 - pmaddwd m1, [coeffs + 192] ; -C5R3+C7R1 -C5r3+C7r1 - pmaddwd m7, m3 ; C3R7+C7R5 C3r7+C7r5 - movq m2, m0 ; A2 a2 - pmaddwd m3, [coeffs + 208] ; -C1R7+C3R5 -C1r7+C3r5 - paddd m4, m7 ; B2 b2 - paddd m2, m4 ; A2+B2 a2+b2 - psubd m0, m4 ; a2-B2 a2-b2 - psrad m2, %7 - psrad m0, %7 - movq m4, m6 ; A3 a3 - paddd m3, m1 ; B3 b3 - paddd m6, m3 ; A3+B3 a3+b3 - psubd m4, m3 ; a3-B3 a3-b3 - psrad m6, %7 - packssdw m2, m6 ; A3+B3 a3+b3 A2+B2 a2+b2 - pshufd m2, m2, 0xD8 - movq [8 + %5], m2 - psrad m4, %7 - packssdw m4, m0 ; A2-B2 a2-b2 A3-B3 a3-b3 - pshufd m4, m4, 0xD8 - movq [16 + %5], m4 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm5, [coeffs + 32] ; C6 C2 C6 C2 + pmaddwd mm5, mm1 ; C6R6+C2R2 C6r6+C2r2 + movq mm6, [coeffs + 40] ; -C2 C6 -C2 C6 + pmaddwd mm1, mm6 ; -C2R6+C6R2 -C2r6+C6r2 + movq mm7, [coeffs + 48] ; C3 C1 C3 C1 + pmaddwd mm7, mm2 ; C3R3+C1R1 C3r3+C1r1 + paddd mm4, [coeffs] + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + paddd mm4, mm5 ; A0 a0 + psubd mm6, mm5 ; A3 a3 + movq mm5, [coeffs + 56] ; C7 C5 C7 C5 + pmaddwd mm5, mm3 ; C7R7+C5R5 C7r7+C5r5 + paddd mm0, [coeffs] + paddd mm1, mm0 ; A1 a1 + paddd mm0, mm0 + psubd mm0, mm1 ; A2 a2 + pmaddwd mm2, [coeffs + 64] ; -C7R3+C3R1 -C7r3+C3r1 + paddd mm7, mm5 ; B0 b0 + movq mm5, [coeffs + 72] ; -C5 -C1 -C5 -C1 + pmaddwd mm5, mm3 ; -C5R7-C1R5 -C5r7-C1r5 + paddd mm7, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm7 ; A0-B0 a0-b0 + paddd mm5, mm2 ; B1 b1 + psrad mm7, %7 + psrad mm4, %7 + movq mm2, mm1 ; A1 a1 + paddd mm1, mm5 ; A1+B1 a1+b1 + psubd mm2, mm5 ; A1-B1 a1-b1 + psrad mm1, %7 + psrad mm2, %7 + packssdw mm7, mm1 ; A1+B1 a1+b1 A0+B0 a0+b0 + packssdw mm2, mm4 ; A0-B0 a0-b0 A1-B1 a1-b1 + movq [%5], mm7 + movq mm1, [blockq + %3] ; R3 R1 r3 r1 + movq mm4, [coeffs + 80] ; -C1 C5 -C1 C5 + movq [24 + %5], mm2 + pmaddwd mm4, mm1 ; -C1R3+C5R1 -C1r3+C5r1 + movq mm7, [coeffs + 88] ; C3 C7 C3 C7 + pmaddwd mm1, [coeffs + 96] ; -C5R3+C7R1 -C5r3+C7r1 + pmaddwd mm7, mm3 ; C3R7+C7R5 C3r7+C7r5 + movq mm2, mm0 ; A2 a2 + pmaddwd mm3, [coeffs + 104] ; -C1R7+C3R5 -C1r7+C3r5 + paddd mm4, mm7 ; B2 b2 + paddd mm2, mm4 ; A2+B2 a2+b2 + psubd mm0, mm4 ; a2-B2 a2-b2 + psrad mm2, %7 + psrad mm0, %7 + movq mm4, mm6 ; A3 a3 + paddd mm3, mm1 ; B3 b3 + paddd mm6, mm3 ; A3+B3 a3+b3 + psubd mm4, mm3 ; a3-B3 a3-b3 + psrad mm6, %7 + packssdw mm2, mm6 ; A3+B3 a3+b3 A2+B2 a2+b2 + movq [8 + %5], mm2 + psrad mm4, %7 + packssdw mm4, mm0 ; A2-B2 a2-b2 A3-B3 a3-b3 + movq [16 + %5], mm4 %endmacro %macro IDCT1 6 - mova m0, %1 ; R4 R0 r4 r0 - mova m1, %2 ; R6 R2 r6 r2 - mova m2, %3 ; R3 R1 r3 r1 - mova m3, %4 ; R7 R5 r7 r5 - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - mova m5, [coeffs + 64] ; C6 C2 C6 C2 - pmaddwd m5, m1 ; C6R6+C2R2 C6r6+C2r2 - mova m6, [coeffs + 80] ; -C2 C6 -C2 C6 - pmaddwd m1, m6 ; -C2R6+C6R2 -C2r6+C6r2 - mova m6, m4 ; C4R4+C4R0 C4r4+C4r0 - mova m7, [coeffs + 96] ; C3 C1 C3 C1 - pmaddwd m7, m2 ; C3R3+C1R1 C3r3+C1r1 - paddd m4, m5 ; A0 a0 - psubd m6, m5 ; A3 a3 - mova m5, m0 ; -C4R4+C4R0 -C4r4+C4r0 - paddd m0, m1 ; A1 a1 - psubd m5, m1 ; A2 a2 - mova m1, [coeffs + 112] ; C7 C5 C7 C5 - pmaddwd m1, m3 ; C7R7+C5R5 C7r7+C5r5 - pmaddwd m2, [coeffs + 128] ; -C7R3+C3R1 -C7r3+C3r1 - paddd m7, m1 ; B0 b0 - mova m1, [coeffs + 144] ; -C5 -C1 -C5 -C1 - pmaddwd m1, m3 ; -C5R7-C1R5 -C5r7-C1r5 - paddd m7, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m7 ; A0-B0 a0-b0 - paddd m1, m2 ; B1 b1 - psrad m7, %6 - psrad m4, %6 - mova m2, m0 ; A1 a1 - paddd m0, m1 ; A1+B1 a1+b1 - psubd m2, m1 ; A1-B1 a1-b1 - psrad m0, %6 - psrad m2, %6 - packssdw m7, m7 ; A0+B0 a0+b0 - movq [%5], m7 - packssdw m0, m0 ; A1+B1 a1+b1 - movq [16 + %5], m0 - packssdw m2, m2 ; A1-B1 a1-b1 - movq [96 + %5], m2 - packssdw m4, m4 ; A0-B0 a0-b0 - movq [112 + %5], m4 - mova m0, %3 ; R3 R1 r3 r1 - mova m4, [coeffs + 160] ; -C1 C5 -C1 C5 - pmaddwd m4, m0 ; -C1R3+C5R1 -C1r3+C5r1 - mova m7, [coeffs + 176] ; C3 C7 C3 C7 - pmaddwd m0, [coeffs + 192] ; -C5R3+C7R1 -C5r3+C7r1 - pmaddwd m7, m3 ; C3R7+C7R5 C3r7+C7r5 - mova m2, m5 ; A2 a2 - pmaddwd m3, [coeffs + 208] ; -C1R7+C3R5 -C1r7+C3r5 - paddd m4, m7 ; B2 b2 - paddd m2, m4 ; A2+B2 a2+b2 - psubd m5, m4 ; a2-B2 a2-b2 - psrad m2, %6 - psrad m5, %6 - mova m4, m6 ; A3 a3 - paddd m3, m0 ; B3 b3 - paddd m6, m3 ; A3+B3 a3+b3 - psubd m4, m3 ; a3-B3 a3-b3 - psrad m6, %6 - psrad m4, %6 - packssdw m2, m2 ; A2+B2 a2+b2 - packssdw m6, m6 ; A3+B3 a3+b3 - movq [32 + %5], m2 - packssdw m4, m4 ; A3-B3 a3-b3 - packssdw m5, m5 ; A2-B2 a2-b2 - movq [48 + %5], m6 - movq [64 + %5], m4 - movq [80 + %5], m5 + movq mm0, %1 ; R4 R0 r4 r0 + movq mm1, %2 ; R6 R2 r6 r2 + movq mm2, %3 ; R3 R1 r3 r1 + movq mm3, %4 ; R7 R5 r7 r5 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm5, [coeffs + 32] ; C6 C2 C6 C2 + pmaddwd mm5, mm1 ; C6R6+C2R2 C6r6+C2r2 + movq mm6, [coeffs + 40] ; -C2 C6 -C2 C6 + pmaddwd mm1, mm6 ; -C2R6+C6R2 -C2r6+C6r2 + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + movq mm7, [coeffs + 48] ; C3 C1 C3 C1 + pmaddwd mm7, mm2 ; C3R3+C1R1 C3r3+C1r1 + paddd mm4, mm5 ; A0 a0 + psubd mm6, mm5 ; A3 a3 + movq mm5, mm0 ; -C4R4+C4R0 -C4r4+C4r0 + paddd mm0, mm1 ; A1 a1 + psubd mm5, mm1 ; A2 a2 + movq mm1, [coeffs + 56] ; C7 C5 C7 C5 + pmaddwd mm1, mm3 ; C7R7+C5R5 C7r7+C5r5 + pmaddwd mm2, [coeffs + 64] ; -C7R3+C3R1 -C7r3+C3r1 + paddd mm7, mm1 ; B0 b0 + movq mm1, [coeffs + 72] ; -C5 -C1 -C5 -C1 + pmaddwd mm1, mm3 ; -C5R7-C1R5 -C5r7-C1r5 + paddd mm7, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm7 ; A0-B0 a0-b0 + paddd mm1, mm2 ; B1 b1 + psrad mm7, %6 + psrad mm4, %6 + movq mm2, mm0 ; A1 a1 + paddd mm0, mm1 ; A1+B1 a1+b1 + psubd mm2, mm1 ; A1-B1 a1-b1 + psrad mm0, %6 + psrad mm2, %6 + packssdw mm7, mm7 ; A0+B0 a0+b0 + movd [%5], mm7 + packssdw mm0, mm0 ; A1+B1 a1+b1 + movd [16 + %5], mm0 + packssdw mm2, mm2 ; A1-B1 a1-b1 + movd [96 + %5], mm2 + packssdw mm4, mm4 ; A0-B0 a0-b0 + movd [112 + %5], mm4 + movq mm0, %3 ; R3 R1 r3 r1 + movq mm4, [coeffs + 80] ; -C1 C5 -C1 C5 + pmaddwd mm4, mm0 ; -C1R3+C5R1 -C1r3+C5r1 + movq mm7, [coeffs + 88] ; C3 C7 C3 C7 + pmaddwd mm0, [coeffs + 96] ; -C5R3+C7R1 -C5r3+C7r1 + pmaddwd mm7, mm3 ; C3R7+C7R5 C3r7+C7r5 + movq mm2, mm5 ; A2 a2 + pmaddwd mm3, [coeffs + 104] ; -C1R7+C3R5 -C1r7+C3r5 + paddd mm4, mm7 ; B2 b2 + paddd mm2, mm4 ; A2+B2 a2+b2 + psubd mm5, mm4 ; a2-B2 a2-b2 + psrad mm2, %6 + psrad mm5, %6 + movq mm4, mm6 ; A3 a3 + paddd mm3, mm0 ; B3 b3 + paddd mm6, mm3 ; A3+B3 a3+b3 + psubd mm4, mm3 ; a3-B3 a3-b3 + psrad mm6, %6 + psrad mm4, %6 + packssdw mm2, mm2 ; A2+B2 a2+b2 + packssdw mm6, mm6 ; A3+B3 a3+b3 + movd [32 + %5], mm2 + packssdw mm4, mm4 ; A3-B3 a3-b3 + packssdw mm5, mm5 ; A2-B2 a2-b2 + movd [48 + %5], mm6 + movd [64 + %5], mm4 + movd [80 + %5], mm5 %endmacro %macro IDCT2 6 - mova m0, %1 ; R4 R0 r4 r0 - mova m1, %2 ; R6 R2 r6 r2 - mova m3, %4 ; R7 R5 r7 r5 - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - mova m5, [coeffs + 64] ; C6 C2 C6 C2 - pmaddwd m5, m1 ; C6R6+C2R2 C6r6+C2r2 - mova m6, [coeffs + 80] ; -C2 C6 -C2 C6 - pmaddwd m1, m6 ; -C2R6+C6R2 -C2r6+C6r2 - mova m6, m4 ; C4R4+C4R0 C4r4+C4r0 - paddd m4, m5 ; A0 a0 - psubd m6, m5 ; A3 a3 - mova m5, m0 ; -C4R4+C4R0 -C4r4+C4r0 - paddd m0, m1 ; A1 a1 - psubd m5, m1 ; A2 a2 - mova m1, [coeffs + 112] ; C7 C5 C7 C5 - pmaddwd m1, m3 ; C7R7+C5R5 C7r7+C5r5 - mova m7, [coeffs + 144] ; -C5 -C1 -C5 -C1 - pmaddwd m7, m3 ; -C5R7-C1R5 -C5r7-C1r5 - paddd m1, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m1 ; A0-B0 a0-b0 - psrad m1, %6 - psrad m4, %6 - mova m2, m0 ; A1 a1 - paddd m0, m7 ; A1+B1 a1+b1 - psubd m2, m7 ; A1-B1 a1-b1 - psrad m0, %6 - psrad m2, %6 - packssdw m1, m1 ; A0+B0 a0+b0 - movq [%5], m1 - packssdw m0, m0 ; A1+B1 a1+b1 - movq [16 + %5], m0 - packssdw m2, m2 ; A1-B1 a1-b1 - movq [96 + %5], m2 - packssdw m4, m4 ; A0-B0 a0-b0 - movq [112 + %5], m4 - mova m1, [coeffs + 176] ; C3 C7 C3 C7 - pmaddwd m1, m3 ; C3R7+C7R5 C3r7+C7r5 - mova m2, m5 ; A2 a2 - pmaddwd m3, [coeffs + 208] ; -C1R7+C3R5 -C1r7+C3r5 - paddd m2, m1 ; A2+B2 a2+b2 - psubd m5, m1 ; a2-B2 a2-b2 - psrad m2, %6 - psrad m5, %6 - mova m1, m6 ; A3 a3 - paddd m6, m3 ; A3+B3 a3+b3 - psubd m1, m3 ; a3-B3 a3-b3 - psrad m6, %6 - psrad m1, %6 - packssdw m2, m2 ; A2+B2 a2+b2 - packssdw m6, m6 ; A3+B3 a3+b3 - movq [32 + %5], m2 - packssdw m1, m1 ; A3-B3 a3-b3 - packssdw m5, m5 ; A2-B2 a2-b2 - movq [48 + %5], m6 - movq [64 + %5], m1 - movq [80 + %5], m5 + movq mm0, %1 ; R4 R0 r4 r0 + movq mm1, %2 ; R6 R2 r6 r2 + movq mm3, %4 ; R7 R5 r7 r5 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm5, [coeffs + 32] ; C6 C2 C6 C2 + pmaddwd mm5, mm1 ; C6R6+C2R2 C6r6+C2r2 + movq mm6, [coeffs + 40] ; -C2 C6 -C2 C6 + pmaddwd mm1, mm6 ; -C2R6+C6R2 -C2r6+C6r2 + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + paddd mm4, mm5 ; A0 a0 + psubd mm6, mm5 ; A3 a3 + movq mm5, mm0 ; -C4R4+C4R0 -C4r4+C4r0 + paddd mm0, mm1 ; A1 a1 + psubd mm5, mm1 ; A2 a2 + movq mm1, [coeffs + 56] ; C7 C5 C7 C5 + pmaddwd mm1, mm3 ; C7R7+C5R5 C7r7+C5r5 + movq mm7, [coeffs + 72] ; -C5 -C1 -C5 -C1 + pmaddwd mm7, mm3 ; -C5R7-C1R5 -C5r7-C1r5 + paddd mm1, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm1 ; A0-B0 a0-b0 + psrad mm1, %6 + psrad mm4, %6 + movq mm2, mm0 ; A1 a1 + paddd mm0, mm7 ; A1+B1 a1+b1 + psubd mm2, mm7 ; A1-B1 a1-b1 + psrad mm0, %6 + psrad mm2, %6 + packssdw mm1, mm1 ; A0+B0 a0+b0 + movd [%5], mm1 + packssdw mm0, mm0 ; A1+B1 a1+b1 + movd [16 + %5], mm0 + packssdw mm2, mm2 ; A1-B1 a1-b1 + movd [96 + %5], mm2 + packssdw mm4, mm4 ; A0-B0 a0-b0 + movd [112 + %5], mm4 + movq mm1, [coeffs + 88] ; C3 C7 C3 C7 + pmaddwd mm1, mm3 ; C3R7+C7R5 C3r7+C7r5 + movq mm2, mm5 ; A2 a2 + pmaddwd mm3, [coeffs + 104] ; -C1R7+C3R5 -C1r7+C3r5 + paddd mm2, mm1 ; A2+B2 a2+b2 + psubd mm5, mm1 ; a2-B2 a2-b2 + psrad mm2, %6 + psrad mm5, %6 + movq mm1, mm6 ; A3 a3 + paddd mm6, mm3 ; A3+B3 a3+b3 + psubd mm1, mm3 ; a3-B3 a3-b3 + psrad mm6, %6 + psrad mm1, %6 + packssdw mm2, mm2 ; A2+B2 a2+b2 + packssdw mm6, mm6 ; A3+B3 a3+b3 + movd [32 + %5], mm2 + packssdw mm1, mm1 ; A3-B3 a3-b3 + packssdw mm5, mm5 ; A2-B2 a2-b2 + movd [48 + %5], mm6 + movd [64 + %5], mm1 + movd [80 + %5], mm5 %endmacro %macro IDCT3 6 - mova m0, %1 ; R4 R0 r4 r0 - mova m3, %4 ; R7 R5 r7 r5 - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - mova m6, m4 ; C4R4+C4R0 C4r4+C4r0 - mova m5, m0 ; -C4R4+C4R0 -C4r4+C4r0 - mova m1, [coeffs + 112] ; C7 C5 C7 C5 - pmaddwd m1, m3 ; C7R7+C5R5 C7r7+C5r5 - mova m7, [coeffs + 144] ; -C5 -C1 -C5 -C1 - pmaddwd m7, m3 ; -C5R7-C1R5 -C5r7-C1r5 - paddd m1, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m1 ; A0-B0 a0-b0 - psrad m1, %6 - psrad m4, %6 - mova m2, m0 ; A1 a1 - paddd m0, m7 ; A1+B1 a1+b1 - psubd m2, m7 ; A1-B1 a1-b1 - psrad m0, %6 - psrad m2, %6 - packssdw m1, m1 ; A0+B0 a0+b0 - movq [%5], m1 - packssdw m0, m0 ; A1+B1 a1+b1 - movq [16 + %5], m0 - packssdw m2, m2 ; A1-B1 a1-b1 - movq [96 + %5], m2 - packssdw m4, m4 ; A0-B0 a0-b0 - movq [112 + %5], m4 - mova m1, [coeffs + 176] ; C3 C7 C3 C7 - pmaddwd m1, m3 ; C3R7+C7R5 C3r7+C7r5 - mova m2, m5 ; A2 a2 - pmaddwd m3, [coeffs + 208] ; -C1R7+C3R5 -C1r7+C3r5 - paddd m2, m1 ; A2+B2 a2+b2 - psubd m5, m1 ; a2-B2 a2-b2 - psrad m2, %6 - psrad m5, %6 - mova m1, m6 ; A3 a3 - paddd m6, m3 ; A3+B3 a3+b3 - psubd m1, m3 ; a3-B3 a3-b3 - psrad m6, %6 - psrad m1, %6 - packssdw m2, m2 ; A2+B2 a2+b2 - packssdw m6, m6 ; A3+B3 a3+b3 - movq [32 + %5], m2 - packssdw m1, m1 ; A3-B3 a3-b3 - packssdw m5, m5 ; A2-B2 a2-b2 - movq [48 + %5], m6 - movq [64 + %5], m1 - movq [80 + %5], m5 + movq mm0, %1 ; R4 R0 r4 r0 + movq mm3, %4 ; R7 R5 r7 r5 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, mm0 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm1, [coeffs + 56] ; C7 C5 C7 C5 + pmaddwd mm1, mm3 ; C7R7+C5R5 C7r7+C5r5 + movq mm7, [coeffs + 72] ; -C5 -C1 -C5 -C1 + pmaddwd mm7, mm3 ; -C5R7-C1R5 -C5r7-C1r5 + paddd mm1, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm1 ; A0-B0 a0-b0 + psrad mm1, %6 + psrad mm4, %6 + movq mm2, mm0 ; A1 a1 + paddd mm0, mm7 ; A1+B1 a1+b1 + psubd mm2, mm7 ; A1-B1 a1-b1 + psrad mm0, %6 + psrad mm2, %6 + packssdw mm1, mm1 ; A0+B0 a0+b0 + movd [%5], mm1 + packssdw mm0, mm0 ; A1+B1 a1+b1 + movd [16 + %5], mm0 + packssdw mm2, mm2 ; A1-B1 a1-b1 + movd [96 + %5], mm2 + packssdw mm4, mm4 ; A0-B0 a0-b0 + movd [112 + %5], mm4 + movq mm1, [coeffs + 88] ; C3 C7 C3 C7 + pmaddwd mm1, mm3 ; C3R7+C7R5 C3r7+C7r5 + movq mm2, mm5 ; A2 a2 + pmaddwd mm3, [coeffs + 104] ; -C1R7+C3R5 -C1r7+C3r5 + paddd mm2, mm1 ; A2+B2 a2+b2 + psubd mm5, mm1 ; a2-B2 a2-b2 + psrad mm2, %6 + psrad mm5, %6 + movq mm1, mm6 ; A3 a3 + paddd mm6, mm3 ; A3+B3 a3+b3 + psubd mm1, mm3 ; a3-B3 a3-b3 + psrad mm6, %6 + psrad mm1, %6 + packssdw mm2, mm2 ; A2+B2 a2+b2 + packssdw mm6, mm6 ; A3+B3 a3+b3 + movd [32 + %5], mm2 + packssdw mm1, mm1 ; A3-B3 a3-b3 + packssdw mm5, mm5 ; A2-B2 a2-b2 + movd [48 + %5], mm6 + movd [64 + %5], mm1 + movd [80 + %5], mm5 %endmacro %macro IDCT4 6 - mova m0, %1 ; R4 R0 r4 r0 - mova m2, %3 ; R3 R1 r3 r1 - mova m3, %4 ; R7 R5 r7 r5 - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - mova m6, m4 ; C4R4+C4R0 C4r4+C4r0 - mova m7, [coeffs + 96] ; C3 C1 C3 C1 - pmaddwd m7, m2 ; C3R3+C1R1 C3r3+C1r1 - mova m5, m0 ; -C4R4+C4R0 -C4r4+C4r0 - mova m1, [coeffs + 112] ; C7 C5 C7 C5 - pmaddwd m1, m3 ; C7R7+C5R5 C7r7+C5r5 - pmaddwd m2, [coeffs + 128] ; -C7R3+C3R1 -C7r3+C3r1 - paddd m7, m1 ; B0 b0 - mova m1, [coeffs + 144] ; -C5 -C1 -C5 -C1 - pmaddwd m1, m3 ; -C5R7-C1R5 -C5r7-C1r5 - paddd m7, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m7 ; A0-B0 a0-b0 - paddd m1, m2 ; B1 b1 - psrad m7, %6 - psrad m4, %6 - mova m2, m0 ; A1 a1 - paddd m0, m1 ; A1+B1 a1+b1 - psubd m2, m1 ; A1-B1 a1-b1 - psrad m0, %6 - psrad m2, %6 - packssdw m7, m7 ; A0+B0 a0+b0 - movq [%5], m7 - packssdw m0, m0 ; A1+B1 a1+b1 - movq [16 + %5], m0 - packssdw m2, m2 ; A1-B1 a1-b1 - movq [96 + %5], m2 - packssdw m4, m4 ; A0-B0 a0-b0 - movq [112 + %5], m4 - mova m0, %3 ; R3 R1 r3 r1 - mova m4, [coeffs + 160] ; -C1 C5 -C1 C5 - pmaddwd m4, m0 ; -C1R3+C5R1 -C1r3+C5r1 - mova m7, [coeffs + 176] ; C3 C7 C3 C7 - pmaddwd m0, [coeffs + 192] ; -C5R3+C7R1 -C5r3+C7r1 - pmaddwd m7, m3 ; C3R7+C7R5 C3r7+C7r5 - mova m2, m5 ; A2 a2 - pmaddwd m3, [coeffs + 208] ; -C1R7+C3R5 -C1r7+C3r5 - paddd m4, m7 ; B2 b2 - paddd m2, m4 ; A2+B2 a2+b2 - psubd m5, m4 ; a2-B2 a2-b2 - psrad m2, %6 - psrad m5, %6 - mova m4, m6 ; A3 a3 - paddd m3, m0 ; B3 b3 - paddd m6, m3 ; A3+B3 a3+b3 - psubd m4, m3 ; a3-B3 a3-b3 - psrad m6, %6 - psrad m4, %6 - packssdw m2, m2 ; A2+B2 a2+b2 - packssdw m6, m6 ; A3+B3 a3+b3 - movq [32 + %5], m2 - packssdw m4, m4 ; A3-B3 a3-b3 - packssdw m5, m5 ; A2-B2 a2-b2 - movq [48 + %5], m6 - movq [64 + %5], m4 - movq [80 + %5], m5 + movq mm0, %1 ; R4 R0 r4 r0 + movq mm2, %3 ; R3 R1 r3 r1 + movq mm3, %4 ; R7 R5 r7 r5 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + movq mm7, [coeffs + 48] ; C3 C1 C3 C1 + pmaddwd mm7, mm2 ; C3R3+C1R1 C3r3+C1r1 + movq mm5, mm0 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm1, [coeffs + 56] ; C7 C5 C7 C5 + pmaddwd mm1, mm3 ; C7R7+C5R5 C7r7+C5r5 + pmaddwd mm2, [coeffs + 64] ; -C7R3+C3R1 -C7r3+C3r1 + paddd mm7, mm1 ; B0 b0 + movq mm1, [coeffs + 72] ; -C5 -C1 -C5 -C1 + pmaddwd mm1, mm3 ; -C5R7-C1R5 -C5r7-C1r5 + paddd mm7, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm7 ; A0-B0 a0-b0 + paddd mm1, mm2 ; B1 b1 + psrad mm7, %6 + psrad mm4, %6 + movq mm2, mm0 ; A1 a1 + paddd mm0, mm1 ; A1+B1 a1+b1 + psubd mm2, mm1 ; A1-B1 a1-b1 + psrad mm0, %6 + psrad mm2, %6 + packssdw mm7, mm7 ; A0+B0 a0+b0 + movd [%5], mm7 + packssdw mm0, mm0 ; A1+B1 a1+b1 + movd [16 + %5], mm0 + packssdw mm2, mm2 ; A1-B1 a1-b1 + movd [96 + %5], mm2 + packssdw mm4, mm4 ; A0-B0 a0-b0 + movd [112 + %5], mm4 + movq mm0, %3 ; R3 R1 r3 r1 + movq mm4, [coeffs + 80] ; -C1 C5 -C1 C5 + pmaddwd mm4, mm0 ; -C1R3+C5R1 -C1r3+C5r1 + movq mm7, [coeffs + 88] ; C3 C7 C3 C7 + pmaddwd mm0, [coeffs + 96] ; -C5R3+C7R1 -C5r3+C7r1 + pmaddwd mm7, mm3 ; C3R7+C7R5 C3r7+C7r5 + movq mm2, mm5 ; A2 a2 + pmaddwd mm3, [coeffs + 104] ; -C1R7+C3R5 -C1r7+C3r5 + paddd mm4, mm7 ; B2 b2 + paddd mm2, mm4 ; A2+B2 a2+b2 + psubd mm5, mm4 ; a2-B2 a2-b2 + psrad mm2, %6 + psrad mm5, %6 + movq mm4, mm6 ; A3 a3 + paddd mm3, mm0 ; B3 b3 + paddd mm6, mm3 ; A3+B3 a3+b3 + psubd mm4, mm3 ; a3-B3 a3-b3 + psrad mm6, %6 + psrad mm4, %6 + packssdw mm2, mm2 ; A2+B2 a2+b2 + packssdw mm6, mm6 ; A3+B3 a3+b3 + movd [32 + %5], mm2 + packssdw mm4, mm4 ; A3-B3 a3-b3 + packssdw mm5, mm5 ; A2-B2 a2-b2 + movd [48 + %5], mm6 + movd [64 + %5], mm4 + movd [80 + %5], mm5 %endmacro %macro IDCT5 6 - mova m0, %1 ; R4 R0 r4 r0 - mova m2, %3 ; R3 R1 r3 r1 - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - mova m6, m4 ; C4R4+C4R0 C4r4+C4r0 - mova m7, [coeffs + 96] ; C3 C1 C3 C1 - pmaddwd m7, m2 ; C3R3+C1R1 C3r3+C1r1 - mova m5, m0 ; -C4R4+C4R0 -C4r4+C4r0 - mova m3, [coeffs + 128] - pmaddwd m3, m2 ; -C7R3+C3R1 -C7r3+C3r1 - paddd m7, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m7 ; A0-B0 a0-b0 - psrad m7, %6 - psrad m4, %6 - mova m1, m0 ; A1 a1 - paddd m0, m3 ; A1+B1 a1+b1 - psubd m1, m3 ; A1-B1 a1-b1 - psrad m0, %6 - psrad m1, %6 - packssdw m7, m7 ; A0+B0 a0+b0 - movq [%5], m7 - packssdw m0, m0 ; A1+B1 a1+b1 - movq [16 + %5], m0 - packssdw m1, m1 ; A1-B1 a1-b1 - movq [96 + %5], m1 - packssdw m4, m4 ; A0-B0 a0-b0 - movq [112 + %5], m4 - mova m4, [coeffs + 160] ; -C1 C5 -C1 C5 - pmaddwd m4, m2 ; -C1R3+C5R1 -C1r3+C5r1 - pmaddwd m2, [coeffs + 192] ; -C5R3+C7R1 -C5r3+C7r1 - mova m1, m5 ; A2 a2 - paddd m1, m4 ; A2+B2 a2+b2 - psubd m5, m4 ; a2-B2 a2-b2 - psrad m1, %6 - psrad m5, %6 - mova m4, m6 ; A3 a3 - paddd m6, m2 ; A3+B3 a3+b3 - psubd m4, m2 ; a3-B3 a3-b3 - psrad m6, %6 - psrad m4, %6 - packssdw m1, m1 ; A2+B2 a2+b2 - packssdw m6, m6 ; A3+B3 a3+b3 - movq [32 + %5], m1 - packssdw m4, m4 ; A3-B3 a3-b3 - packssdw m5, m5 ; A2-B2 a2-b2 - movq [48 + %5], m6 - movq [64 + %5], m4 - movq [80 + %5], m5 + movq mm0, %1 ; R4 R0 r4 r0 + movq mm2, %3 ; R3 R1 r3 r1 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + movq mm7, [coeffs + 48] ; C3 C1 C3 C1 + pmaddwd mm7, mm2 ; C3R3+C1R1 C3r3+C1r1 + movq mm5, mm0 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm3, [coeffs + 64] + pmaddwd mm3, mm2 ; -C7R3+C3R1 -C7r3+C3r1 + paddd mm7, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm7 ; A0-B0 a0-b0 + psrad mm7, %6 + psrad mm4, %6 + movq mm1, mm0 ; A1 a1 + paddd mm0, mm3 ; A1+B1 a1+b1 + psubd mm1, mm3 ; A1-B1 a1-b1 + psrad mm0, %6 + psrad mm1, %6 + packssdw mm7, mm7 ; A0+B0 a0+b0 + movd [%5], mm7 + packssdw mm0, mm0 ; A1+B1 a1+b1 + movd [16 + %5], mm0 + packssdw mm1, mm1 ; A1-B1 a1-b1 + movd [96 + %5], mm1 + packssdw mm4, mm4 ; A0-B0 a0-b0 + movd [112 + %5], mm4 + movq mm4, [coeffs + 80] ; -C1 C5 -C1 C5 + pmaddwd mm4, mm2 ; -C1R3+C5R1 -C1r3+C5r1 + pmaddwd mm2, [coeffs + 96] ; -C5R3+C7R1 -C5r3+C7r1 + movq mm1, mm5 ; A2 a2 + paddd mm1, mm4 ; A2+B2 a2+b2 + psubd mm5, mm4 ; a2-B2 a2-b2 + psrad mm1, %6 + psrad mm5, %6 + movq mm4, mm6 ; A3 a3 + paddd mm6, mm2 ; A3+B3 a3+b3 + psubd mm4, mm2 ; a3-B3 a3-b3 + psrad mm6, %6 + psrad mm4, %6 + packssdw mm1, mm1 ; A2+B2 a2+b2 + packssdw mm6, mm6 ; A3+B3 a3+b3 + movd [32 + %5], mm1 + packssdw mm4, mm4 ; A3-B3 a3-b3 + packssdw mm5, mm5 ; A2-B2 a2-b2 + movd [48 + %5], mm6 + movd [64 + %5], mm4 + movd [80 + %5], mm5 %endmacro %macro IDCT6 6 - movq m0, [%1] ; R4 R0 r4 r0 - movhps m0, [%1 + 16] - movq m1, [%2] ; R6 R2 r6 r2 - movhps m1, [%2 + 16] - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - mova m5, [coeffs + 64] ; C6 C2 C6 C2 - pmaddwd m5, m1 ; C6R6+C2R2 C6r6+C2r2 - mova m6, [coeffs + 80] ; -C2 C6 -C2 C6 - pmaddwd m1, m6 ; -C2R6+C6R2 -C2r6+C6r2 - mova m6, m4 ; C4R4+C4R0 C4r4+C4r0 - paddd m4, m5 ; A0 a0 - psubd m6, m5 ; A3 a3 - mova m5, m0 ; -C4R4+C4R0 -C4r4+C4r0 - paddd m0, m1 ; A1 a1 - psubd m5, m1 ; A2 a2 - movq m2, [%1 + 8] ; R4 R0 r4 r0 - movhps m2, [%1 + 24] - movq m3, [%2 + 8] ; R6 R2 r6 r2 - movhps m3, [%2 + 24] - mova m1, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m1, m2 ; C4R4+C4R0 C4r4+C4r0 - mova m7, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m2, m7 ; -C4R4+C4R0 -C4r4+C4r0 - mova m7, [coeffs + 64] ; C6 C2 C6 C2 - pmaddwd m7, m3 ; C6R6+C2R2 C6r6+C2r2 - pmaddwd m3, [coeffs + 80] ; -C2R6+C6R2 -C2r6+C6r2 - paddd m7, m1 ; A0 a0 - paddd m1, m1 ; 2C0 2c0 - psubd m1, m7 ; A3 a3 - paddd m3, m2 ; A1 a1 - paddd m2, m2 ; 2C1 2c1 - psubd m2, m3 ; A2 a2 - psrad m4, %6 - psrad m7, %6 - psrad m3, %6 - packssdw m4, m7 ; A0 a0 - pshufd m4, m4, 0xD8 - mova [%5], m4 - psrad m0, %6 - packssdw m0, m3 ; A1 a1 - pshufd m0, m0, 0xD8 - mova [16 + %5], m0 - mova [96 + %5], m0 - mova [112 + %5], m4 - psrad m5, %6 - psrad m6, %6 - psrad m2, %6 - packssdw m5, m2 ; A2-B2 a2-b2 - pshufd m5, m5, 0xD8 - mova [32 + %5], m5 - psrad m1, %6 - packssdw m6, m1 ; A3+B3 a3+b3 - pshufd m6, m6, 0xD8 - mova [48 + %5], m6 - mova [64 + %5], m6 - mova [80 + %5], m5 + movq mm0, [%1] ; R4 R0 r4 r0 + movq mm1, [%2] ; R6 R2 r6 r2 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm5, [coeffs + 32] ; C6 C2 C6 C2 + pmaddwd mm5, mm1 ; C6R6+C2R2 C6r6+C2r2 + movq mm6, [coeffs + 40] ; -C2 C6 -C2 C6 + pmaddwd mm1, mm6 ; -C2R6+C6R2 -C2r6+C6r2 + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + paddd mm4, mm5 ; A0 a0 + psubd mm6, mm5 ; A3 a3 + movq mm5, mm0 ; -C4R4+C4R0 -C4r4+C4r0 + paddd mm0, mm1 ; A1 a1 + psubd mm5, mm1 ; A2 a2 + movq mm2, [8 + %1] ; R4 R0 r4 r0 + movq mm3, [8 + %2] ; R6 R2 r6 r2 + movq mm1, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm1, mm2 ; C4R4+C4R0 C4r4+C4r0 + movq mm7, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm2, mm7 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm7, [coeffs + 32] ; C6 C2 C6 C2 + pmaddwd mm7, mm3 ; C6R6+C2R2 C6r6+C2r2 + pmaddwd mm3, [coeffs + 40] ; -C2R6+C6R2 -C2r6+C6r2 + paddd mm7, mm1 ; A0 a0 + paddd mm1, mm1 ; 2C0 2c0 + psubd mm1, mm7 ; A3 a3 + paddd mm3, mm2 ; A1 a1 + paddd mm2, mm2 ; 2C1 2c1 + psubd mm2, mm3 ; A2 a2 + psrad mm4, %6 + psrad mm7, %6 + psrad mm3, %6 + packssdw mm4, mm7 ; A0 a0 + movq [%5], mm4 + psrad mm0, %6 + packssdw mm0, mm3 ; A1 a1 + movq [16 + %5], mm0 + movq [96 + %5], mm0 + movq [112 + %5], mm4 + psrad mm5, %6 + psrad mm6, %6 + psrad mm2, %6 + packssdw mm5, mm2 ; A2-B2 a2-b2 + movq [32 + %5], mm5 + psrad mm1, %6 + packssdw mm6, mm1 ; A3+B3 a3+b3 + movq [48 + %5], mm6 + movq [64 + %5], mm6 + movq [80 + %5], mm5 %endmacro %macro IDCT7 6 - mova m0, %1 ; R4 R0 r4 r0 - mova m1, %2 ; R6 R2 r6 r2 - mova m2, %3 ; R3 R1 r3 r1 - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - mova m5, [coeffs + 64] ; C6 C2 C6 C2 - pmaddwd m5, m1 ; C6R6+C2R2 C6r6+C2r2 - mova m6, [coeffs + 80] ; -C2 C6 -C2 C6 - pmaddwd m1, m6 ; -C2R6+C6R2 -C2r6+C6r2 - mova m6, m4 ; C4R4+C4R0 C4r4+C4r0 - mova m7, [coeffs + 96] ; C3 C1 C3 C1 - pmaddwd m7, m2 ; C3R3+C1R1 C3r3+C1r1 - paddd m4, m5 ; A0 a0 - psubd m6, m5 ; A3 a3 - mova m5, m0 ; -C4R4+C4R0 -C4r4+C4r0 - paddd m0, m1 ; A1 a1 - psubd m5, m1 ; A2 a2 - mova m1, [coeffs + 128] - pmaddwd m1, m2 ; -C7R3+C3R1 -C7r3+C3r1 - paddd m7, m4 ; A0+B0 a0+b0 - paddd m4, m4 ; 2A0 2a0 - psubd m4, m7 ; A0-B0 a0-b0 - psrad m7, %6 - psrad m4, %6 - mova m3, m0 ; A1 a1 - paddd m0, m1 ; A1+B1 a1+b1 - psubd m3, m1 ; A1-B1 a1-b1 - psrad m0, %6 - psrad m3, %6 - packssdw m7, m7 ; A0+B0 a0+b0 - movq [%5], m7 - packssdw m0, m0 ; A1+B1 a1+b1 - movq [16 + %5], m0 - packssdw m3, m3 ; A1-B1 a1-b1 - movq [96 + %5], m3 - packssdw m4, m4 ; A0-B0 a0-b0 - movq [112 + %5], m4 - mova m4, [coeffs + 160] ; -C1 C5 -C1 C5 - pmaddwd m4, m2 ; -C1R3+C5R1 -C1r3+C5r1 - pmaddwd m2, [coeffs + 192] ; -C5R3+C7R1 -C5r3+C7r1 - mova m3, m5 ; A2 a2 - paddd m3, m4 ; A2+B2 a2+b2 - psubd m5, m4 ; a2-B2 a2-b2 - psrad m3, %6 - psrad m5, %6 - mova m4, m6 ; A3 a3 - paddd m6, m2 ; A3+B3 a3+b3 - psubd m4, m2 ; a3-B3 a3-b3 - psrad m6, %6 - packssdw m3, m3 ; A2+B2 a2+b2 - movq [32 + %5], m3 - psrad m4, %6 - packssdw m6, m6 ; A3+B3 a3+b3 - movq [48 + %5], m6 - packssdw m4, m4 ; A3-B3 a3-b3 - packssdw m5, m5 ; A2-B2 a2-b2 - movq [64 + %5], m4 - movq [80 + %5], m5 + movq mm0, %1 ; R4 R0 r4 r0 + movq mm1, %2 ; R6 R2 r6 r2 + movq mm2, %3 ; R3 R1 r3 r1 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm5, [coeffs + 32] ; C6 C2 C6 C2 + pmaddwd mm5, mm1 ; C6R6+C2R2 C6r6+C2r2 + movq mm6, [coeffs + 40] ; -C2 C6 -C2 C6 + pmaddwd mm1, mm6 ; -C2R6+C6R2 -C2r6+C6r2 + movq mm6, mm4 ; C4R4+C4R0 C4r4+C4r0 + movq mm7, [coeffs + 48] ; C3 C1 C3 C1 + pmaddwd mm7, mm2 ; C3R3+C1R1 C3r3+C1r1 + paddd mm4, mm5 ; A0 a0 + psubd mm6, mm5 ; A3 a3 + movq mm5, mm0 ; -C4R4+C4R0 -C4r4+C4r0 + paddd mm0, mm1 ; A1 a1 + psubd mm5, mm1 ; A2 a2 + movq mm1, [coeffs + 64] + pmaddwd mm1, mm2 ; -C7R3+C3R1 -C7r3+C3r1 + paddd mm7, mm4 ; A0+B0 a0+b0 + paddd mm4, mm4 ; 2A0 2a0 + psubd mm4, mm7 ; A0-B0 a0-b0 + psrad mm7, %6 + psrad mm4, %6 + movq mm3, mm0 ; A1 a1 + paddd mm0, mm1 ; A1+B1 a1+b1 + psubd mm3, mm1 ; A1-B1 a1-b1 + psrad mm0, %6 + psrad mm3, %6 + packssdw mm7, mm7 ; A0+B0 a0+b0 + movd [%5], mm7 + packssdw mm0, mm0 ; A1+B1 a1+b1 + movd [16 + %5], mm0 + packssdw mm3, mm3 ; A1-B1 a1-b1 + movd [96 + %5], mm3 + packssdw mm4, mm4 ; A0-B0 a0-b0 + movd [112 + %5], mm4 + movq mm4, [coeffs + 80] ; -C1 C5 -C1 C5 + pmaddwd mm4, mm2 ; -C1R3+C5R1 -C1r3+C5r1 + pmaddwd mm2, [coeffs + 96] ; -C5R3+C7R1 -C5r3+C7r1 + movq mm3, mm5 ; A2 a2 + paddd mm3, mm4 ; A2+B2 a2+b2 + psubd mm5, mm4 ; a2-B2 a2-b2 + psrad mm3, %6 + psrad mm5, %6 + movq mm4, mm6 ; A3 a3 + paddd mm6, mm2 ; A3+B3 a3+b3 + psubd mm4, mm2 ; a3-B3 a3-b3 + psrad mm6, %6 + packssdw mm3, mm3 ; A2+B2 a2+b2 + movd [32 + %5], mm3 + psrad mm4, %6 + packssdw mm6, mm6 ; A3+B3 a3+b3 + movd [48 + %5], mm6 + packssdw mm4, mm4 ; A3-B3 a3-b3 + packssdw mm5, mm5 ; A2-B2 a2-b2 + movd [64 + %5], mm4 + movd [80 + %5], mm5 %endmacro %macro IDCT8 6 - movq m0, [%1] ; R4 R0 r4 r0 - movhps m0, [%1 + 16] - mova m4, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m4, m0 ; C4R4+C4R0 C4r4+C4r0 - mova m5, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m0, m5 ; -C4R4+C4R0 -C4r4+C4r0 - psrad m4, %6 - psrad m0, %6 - movq m2, [%1 + 8] ; R4 R0 r4 r0 - movhps m2, [%1 + 24] - mova m1, [coeffs + 32] ; C4 C4 C4 C4 - pmaddwd m1, m2 ; C4R4+C4R0 C4r4+C4r0 - mova m7, [coeffs + 48] ; -C4 C4 -C4 C4 - pmaddwd m2, m7 ; -C4R4+C4R0 -C4r4+C4r0 - mova m7, [coeffs + 64] ; C6 C2 C6 C2 - psrad m1, %6 - packssdw m4, m1 ; A0 a0 - pshufd m4, m4, 0xD8 - mova [%5], m4 - psrad m2, %6 - packssdw m0, m2 ; A1 a1 - pshufd m0, m0, 0xD8 - mova [16 + %5], m0 - mova [96 + %5], m0 - mova [112 + %5], m4 - mova [32 + %5], m0 - mova [48 + %5], m4 - mova [64 + %5], m4 - mova [80 + %5], m0 + movq mm0, [%1] ; R4 R0 r4 r0 + movq mm4, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm4, mm0 ; C4R4+C4R0 C4r4+C4r0 + movq mm5, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm0, mm5 ; -C4R4+C4R0 -C4r4+C4r0 + psrad mm4, %6 + psrad mm0, %6 + movq mm2, [8 + %1] ; R4 R0 r4 r0 + movq mm1, [coeffs + 16] ; C4 C4 C4 C4 + pmaddwd mm1, mm2 ; C4R4+C4R0 C4r4+C4r0 + movq mm7, [coeffs + 24] ; -C4 C4 -C4 C4 + pmaddwd mm2, mm7 ; -C4R4+C4R0 -C4r4+C4r0 + movq mm7, [coeffs + 32] ; C6 C2 C6 C2 + psrad mm1, %6 + packssdw mm4, mm1 ; A0 a0 + movq [%5], mm4 + psrad mm2, %6 + packssdw mm0, mm2 ; A1 a1 + movq [16 + %5], mm0 + movq [96 + %5], mm0 + movq [112 + %5], mm4 + movq [32 + %5], mm0 + movq [48 + %5], mm4 + movq [64 + %5], mm4 + movq [80 + %5], mm0 %endmacro %macro IDCT 0 @@ -735,7 +710,9 @@ SECTION .text Z_COND_IDCT 96, 104, 112, 120, rsp + 96, null, 11, %%1 IDCT1 [rsp + 0], [rsp + 64], [rsp + 32], [rsp + 96], blockq + 0, 20 + IDCT1 [rsp + 8], [rsp + 72], [rsp + 40], [rsp + 104], blockq + 4, 20 IDCT1 [rsp + 16], [rsp + 80], [rsp + 48], [rsp + 112], blockq + 8, 20 + IDCT1 [rsp + 24], [rsp + 88], [rsp + 56], [rsp + 120], blockq + 12, 20 jmp %%9 ALIGN 16 @@ -744,7 +721,9 @@ SECTION .text Z_COND_IDCT 96, 104, 112, 120, rsp + 96, null, 11, %%5 IDCT2 [rsp + 0], [rsp + 64], [rsp + 32], [rsp + 96], blockq + 0, 20 + IDCT2 [rsp + 8], [rsp + 72], [rsp + 40], [rsp + 104], blockq + 4, 20 IDCT2 [rsp + 16], [rsp + 80], [rsp + 48], [rsp + 112], blockq + 8, 20 + IDCT2 [rsp + 24], [rsp + 88], [rsp + 56], [rsp + 120], blockq + 12, 20 jmp %%9 ALIGN 16 @@ -752,7 +731,9 @@ SECTION .text Z_COND_IDCT 96, 104, 112, 120, rsp + 96, null, 11, %%7 IDCT3 [rsp + 0], [rsp + 64], [rsp + 32], [rsp + 96], blockq + 0, 20 + IDCT3 [rsp + 8], [rsp + 72], [rsp + 40], [rsp + 104], blockq + 4, 20 IDCT3 [rsp + 16], [rsp + 80], [rsp + 48], [rsp + 112], blockq + 8, 20 + IDCT3 [rsp + 24], [rsp + 88], [rsp + 56], [rsp + 120], blockq + 12, 20 jmp %%9 ALIGN 16 @@ -760,33 +741,41 @@ SECTION .text Z_COND_IDCT 96, 104, 112, 120, rsp + 96, null, 11, %%3 IDCT4 [rsp + 0], [rsp + 64], [rsp + 32], [rsp + 96], blockq + 0, 20 + IDCT4 [rsp + 8], [rsp + 72], [rsp + 40], [rsp + 104], blockq + 4, 20 IDCT4 [rsp + 16], [rsp + 80], [rsp + 48], [rsp + 112], blockq + 8, 20 + IDCT4 [rsp + 24], [rsp + 88], [rsp + 56], [rsp + 120], blockq + 12, 20 jmp %%9 ALIGN 16 %%3: IDCT5 [rsp + 0], [rsp + 64], [rsp + 32], [rsp + 96], blockq + 0, 20 + IDCT5 [rsp + 8], [rsp + 72], [rsp + 40], [rsp + 104], blockq + 4, 20 IDCT5 [rsp + 16], [rsp + 80], [rsp + 48], [rsp + 112], blockq + 8, 20 + IDCT5 [rsp + 24], [rsp + 88], [rsp + 56], [rsp + 120], blockq + 12, 20 jmp %%9 ALIGN 16 %%5: IDCT6 rsp + 0, rsp + 64, rsp + 32, rsp + 96, blockq + 0, 20 + IDCT6 rsp + 16, rsp + 80, rsp + 48, rsp + 112, blockq + 8, 20 jmp %%9 ALIGN 16 %%1: IDCT7 [rsp + 0], [rsp + 64], [rsp + 32], [rsp + 96], blockq + 0, 20 + IDCT7 [rsp + 8], [rsp + 72], [rsp + 40], [rsp + 104], blockq + 4, 20 IDCT7 [rsp + 16], [rsp + 80], [rsp + 48], [rsp + 112], blockq + 8, 20 + IDCT7 [rsp + 24], [rsp + 88], [rsp + 56], [rsp + 120], blockq + 12, 20 jmp %%9 ALIGN 16 %%7: IDCT8 rsp + 0, rsp + 64, rsp + 32, rsp + 96, blockq + 0, 20 + IDCT8 rsp + 16, rsp + 80, rsp + 48, rsp + 112, blockq + 8, 20 %%9: %endmacro @@ -816,12 +805,15 @@ SECTION .text movhps [pixelsq+lsizeq], m0 %endmacro -INIT_XMM sse2 +INIT_MMX mmx cglobal simple_idct, 1, 2, 8, 128, block, t0 IDCT + emms RET +INIT_XMM sse2 + cglobal simple_idct_put, 3, 5, 8, 128, pixels, lsize, block, lsize3, t0 IDCT lea lsize3q, [lsizeq*3] diff --git a/icecat/media/ffvpx/libavcodec/x86/simple_idct.h b/icecat/media/ffvpx/libavcodec/x86/simple_idct.h index c9ba6aedaf..9b64cfe9bc 100644 --- a/icecat/media/ffvpx/libavcodec/x86/simple_idct.h +++ b/icecat/media/ffvpx/libavcodec/x86/simple_idct.h @@ -22,7 +22,10 @@ #include #include -void ff_simple_idct_sse2(int16_t *block); +void ff_simple_idct_mmx(int16_t *block); +void ff_simple_idct_add_mmx(uint8_t *dest, ptrdiff_t line_size, int16_t *block); +void ff_simple_idct_put_mmx(uint8_t *dest, ptrdiff_t line_size, int16_t *block); + void ff_simple_idct_add_sse2(uint8_t *dest, ptrdiff_t line_size, int16_t *block); void ff_simple_idct_put_sse2(uint8_t *dest, ptrdiff_t line_size, int16_t *block); diff --git a/icecat/media/ffvpx/libavcodec/x86/videodsp_init.c b/icecat/media/ffvpx/libavcodec/x86/videodsp_init.c index e40482e1d0..602856de1e 100644 --- a/icecat/media/ffvpx/libavcodec/x86/videodsp_init.c +++ b/icecat/media/ffvpx/libavcodec/x86/videodsp_init.c @@ -27,8 +27,8 @@ #include "libavutil/x86/asm.h" #include "libavutil/x86/cpu.h" #include "libavcodec/videodsp.h" -#include "videodsp.h" +#if HAVE_X86ASM typedef void emu_edge_vfix_func(uint8_t *dst, x86_reg dst_stride, const uint8_t *src, x86_reg src_stride, x86_reg start_y, x86_reg end_y, x86_reg bh); @@ -188,12 +188,12 @@ static av_always_inline void emulated_edge_mc(uint8_t *dst, const uint8_t *src, } } -void ff_emulated_edge_mc_sse2(uint8_t *buf, const uint8_t *src, - ptrdiff_t buf_stride, - ptrdiff_t src_stride, - int block_w, int block_h, - int src_x, int src_y, int w, - int h) +static av_noinline void emulated_edge_mc_sse2(uint8_t *buf, const uint8_t *src, + ptrdiff_t buf_stride, + ptrdiff_t src_stride, + int block_w, int block_h, + int src_x, int src_y, int w, + int h) { emulated_edge_mc(buf, src, buf_stride, src_stride, block_w, block_h, src_x, src_y, w, h, vfixtbl_sse2, &ff_emu_edge_vvar_sse, @@ -213,22 +213,25 @@ static av_noinline void emulated_edge_mc_avx2(uint8_t *buf, const uint8_t *src, hfixtbl_avx2, &ff_emu_edge_hvar_avx2); } #endif /* HAVE_AVX2_EXTERNAL */ +#endif /* HAVE_X86ASM */ void ff_prefetch_mmxext(const uint8_t *buf, ptrdiff_t stride, int h); av_cold void ff_videodsp_init_x86(VideoDSPContext *ctx, int bpc) { +#if HAVE_X86ASM int cpu_flags = av_get_cpu_flags(); if (EXTERNAL_MMXEXT(cpu_flags)) { ctx->prefetch = ff_prefetch_mmxext; } if (EXTERNAL_SSE2(cpu_flags) && bpc <= 8) { - ctx->emulated_edge_mc = ff_emulated_edge_mc_sse2; + ctx->emulated_edge_mc = emulated_edge_mc_sse2; } #if HAVE_AVX2_EXTERNAL if (EXTERNAL_AVX2(cpu_flags) && bpc <= 8) { ctx->emulated_edge_mc = emulated_edge_mc_avx2; } #endif +#endif /* HAVE_X86ASM */ } diff --git a/icecat/media/ffvpx/libavcodec/x86/vp8dsp.asm b/icecat/media/ffvpx/libavcodec/x86/vp8dsp.asm index 4d3d3f583f..231c21ea0d 100644 --- a/icecat/media/ffvpx/libavcodec/x86/vp8dsp.asm +++ b/icecat/media/ffvpx/libavcodec/x86/vp8dsp.asm @@ -1,5 +1,5 @@ ;****************************************************************************** -;* VP8 ASM optimizations +;* VP8 MMXEXT optimizations ;* Copyright (c) 2010 Ronald S. Bultje ;* Copyright (c) 2010 Fiona Glaser ;* @@ -24,43 +24,43 @@ SECTION_RODATA -fourtap_filter4_b_m: times 4 db -6, 123 - times 4 db 12, -1 - times 4 db -9, 93 - times 4 db 50, -6 - times 4 db -6, 50 - times 4 db 93, -9 - times 4 db -1, 12 - times 4 db 123, -6 +fourtap_filter_hw_m: times 4 dw -6, 123 + times 4 dw 12, -1 + times 4 dw -9, 93 + times 4 dw 50, -6 + times 4 dw -6, 50 + times 4 dw 93, -9 + times 4 dw -1, 12 + times 4 dw 123, -6 -sixtap_filter4_hb_m: times 8 db 2, -11 - times 4 db 108, -8 - times 4 db 36, 1 - times 8 db 3, -16 - times 4 db 77, -16 - times 4 db 77, 3 - times 8 db 1, -8 - times 4 db 36, -11 - times 4 db 108, 2 +sixtap_filter_hw_m: times 4 dw 2, -11 + times 4 dw 108, 36 + times 4 dw -8, 1 + times 4 dw 3, -16 + times 4 dw 77, 77 + times 4 dw -16, 3 + times 4 dw 1, -8 + times 4 dw 36, 108 + times 4 dw -11, 2 -fourtap_filter_b_m: times 8 db -6, 12 - times 8 db 123, -1 - times 8 db -9, 50 - times 8 db 93, -6 - times 8 db -6, 93 - times 8 db 50, -9 - times 8 db -1, 123 - times 8 db 12, -6 +fourtap_filter_hb_m: times 8 db -6, 123 + times 8 db 12, -1 + times 8 db -9, 93 + times 8 db 50, -6 + times 8 db -6, 50 + times 8 db 93, -9 + times 8 db -1, 12 + times 8 db 123, -6 -sixtap_filter_b_m: times 8 db 2, 36 - times 8 db -11, -8 - times 8 db 108, 1 - times 8 db 3, 77 - times 8 db -16, -16 - times 8 db 77, 3 - times 8 db 1, 108 - times 8 db -8, -11 - times 8 db 36, 2 +sixtap_filter_hb_m: times 8 db 2, 1 + times 8 db -11, 108 + times 8 db 36, -8 + times 8 db 3, 3 + times 8 db -16, 77 + times 8 db 77, -16 + times 8 db 1, 2 + times 8 db -8, 36 + times 8 db 108, -11 fourtap_filter_v_m: times 8 dw -6 times 8 dw 123 @@ -115,20 +115,20 @@ bilinear_filter_vb_m: times 8 db 7, 1 times 8 db 1, 7 %if PIC -%define fourtap_filter_b picregq -%define fourtap_filter4_b picregq -%define sixtap_filter_b picregq -%define sixtap_filter4_hb picregq +%define fourtap_filter_hw picregq +%define sixtap_filter_hw picregq +%define fourtap_filter_hb picregq +%define sixtap_filter_hb picregq %define fourtap_filter_v picregq %define sixtap_filter_v picregq %define bilinear_filter_vw picregq %define bilinear_filter_vb picregq %define npicregs 1 %else -%define fourtap_filter_b fourtap_filter_b_m -%define fourtap_filter4_b fourtap_filter4_b_m -%define sixtap_filter_b sixtap_filter_b_m -%define sixtap_filter4_hb sixtap_filter4_hb_m +%define fourtap_filter_hw fourtap_filter_hw_m +%define sixtap_filter_hw sixtap_filter_hw_m +%define fourtap_filter_hb fourtap_filter_hb_m +%define sixtap_filter_hb sixtap_filter_hb_m %define fourtap_filter_v fourtap_filter_v_m %define sixtap_filter_v sixtap_filter_v_m %define bilinear_filter_vw bilinear_filter_vw_m @@ -136,17 +136,12 @@ bilinear_filter_vb_m: times 8 db 7, 1 %define npicregs 0 %endif -filter4_h4_shuf: db 0, 1, 1, 2, 2, 3, 3, 4, 2, 3, 3, 4, 4, 5, 5, 6 -filter4_h6_shuf: db 1, 3, 2, 4, 3, 5, 4, 6, 2, 4, 3, 5, 4, 6, 5, 7 +filter_h2_shuf: db 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8 +filter_h4_shuf: db 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10 -filter_h4_shuf1: db 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9 -filter_h4_shuf2: db 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10 - -filter_h6_shuf1: db 0, 3, 1, 4, 2, 5, 3, 6, 4, 7, 5, 8, 6, 9, 7, 10 -filter_h6_shuf2: db 1, 4, 2, 5, 3, 6, 4, 7, 5, 8, 6, 9, 7, 10, 8, 11 -filter_h6_shuf3: db 2, 5, 3, 6, 4, 7, 5, 8, 6, 9, 7, 10, 8, 11, 9, 12 - -filter_h2_shuf: db 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8 +filter_h6_shuf1: db 0, 5, 1, 6, 2, 7, 3, 8, 4, 9, 5, 10, 6, 11, 7, 12 +filter_h6_shuf2: db 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9 +filter_h6_shuf3: db 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11 pw_20091: times 4 dw 20091 pw_17734: times 4 dw 17734 @@ -167,117 +162,72 @@ SECTION .text ;------------------------------------------------------------------------------- %macro FILTER_SSSE3 1 -%if %1 == 4 -%define MOV movd -%else -%define MOV movq -%endif - -%if %1 == 8 cglobal put_vp8_epel%1_h6, 6, 6 + npicregs, 8, dst, dststride, src, srcstride, height, mx, picreg -%else -cglobal put_vp8_epel%1_h6, 6, 6 + npicregs, 6, dst, dststride, src, srcstride, height, mx, picreg -%endif -%if %1 == 4 - mova m3, [filter4_h6_shuf] -%if PIC - lea picregq, [sixtap_filter4_hb_m] -%endif - shl mxd, 4 - mova m4, [sixtap_filter4_hb+mxq-32] - mova m5, [sixtap_filter4_hb+mxq-16] -%else lea mxd, [mxq*3] mova m3, [filter_h6_shuf2] mova m4, [filter_h6_shuf3] %if PIC - lea picregq, [sixtap_filter_b_m] -%endif - mova m5, [sixtap_filter_b+mxq*8-48] ; set up 6tap filter in bytes - mova m6, [sixtap_filter_b+mxq*8-32] - mova m7, [sixtap_filter_b+mxq*8-16] + lea picregq, [sixtap_filter_hb_m] %endif + mova m5, [sixtap_filter_hb+mxq*8-48] ; set up 6tap filter in bytes + mova m6, [sixtap_filter_hb+mxq*8-32] + mova m7, [sixtap_filter_hb+mxq*8-16] .nextrow: -%if %1 == 4 - ; we need nine bytes, so two loads - movq m1, [srcq-1] - movq m0, [srcq-2] - punpcklbw m0, m1 - pshufb m1, m3 - pmaddubsw m1, m5 - pmaddubsw m0, m4 - movhlps m2, m1 -%else movu m0, [srcq-2] mova m1, m0 mova m2, m0 +%if mmsize == 8 +; For epel4, we need 9 bytes, but only 8 get loaded; to compensate, do the +; shuffle with a memory operand + punpcklbw m0, [srcq+3] +%else pshufb m0, [filter_h6_shuf1] +%endif pshufb m1, m3 pshufb m2, m4 pmaddubsw m0, m5 pmaddubsw m1, m6 pmaddubsw m2, m7 -%endif - add srcq, srcstrideq - paddw m0, m1 + paddsw m0, m1 paddsw m0, m2 pmulhrsw m0, [pw_256] packuswb m0, m0 - MOV [dstq], m0 ; store + movh [dstq], m0 ; store ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow RET -%if %1 == 8 cglobal put_vp8_epel%1_h4, 6, 6 + npicregs, 7, dst, dststride, src, srcstride, height, mx, picreg -%else -cglobal put_vp8_epel%1_h4, 6, 6 + npicregs, 6, dst, dststride, src, srcstride, height, mx, picreg -%endif - mova m2, [pw_256] -%if %1 == 8 shl mxd, 4 - mova m3, [filter_h4_shuf1] - mova m4, [filter_h4_shuf2] + mova m2, [pw_256] + mova m3, [filter_h2_shuf] + mova m4, [filter_h4_shuf] %if PIC - lea picregq, [fourtap_filter_b_m] -%endif - mova m5, [fourtap_filter_b+mxq-16] ; set up 4tap filter in bytes - mova m6, [fourtap_filter_b+mxq] -%else - shl mxd, 3 - mova m3, [filter4_h4_shuf] -%if PIC - lea picregq, [fourtap_filter4_b_m] -%endif - mova m5, [fourtap_filter4_b+mxq-8] + lea picregq, [fourtap_filter_hb_m] %endif + mova m5, [fourtap_filter_hb+mxq-16] ; set up 4tap filter in bytes + mova m6, [fourtap_filter_hb+mxq] .nextrow: -%if %1 == 4 - movq m0, [srcq-1] - pshufb m0, m3 - pmaddubsw m0, m5 - movhlps m1, m0 -%else movu m0, [srcq-1] mova m1, m0 pshufb m0, m3 pshufb m1, m4 pmaddubsw m0, m5 pmaddubsw m1, m6 -%endif - add srcq, srcstrideq paddsw m0, m1 pmulhrsw m0, m2 packuswb m0, m0 - MOV [dstq], m0 ; store + movh [dstq], m0 ; store ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow RET @@ -285,124 +235,71 @@ cglobal put_vp8_epel%1_h4, 6, 6 + npicregs, 6, dst, dststride, src, srcstride, h cglobal put_vp8_epel%1_v4, 7, 7, 8, dst, dststride, src, srcstride, height, picreg, my shl myd, 4 %if PIC - lea picregq, [fourtap_filter_b_m] + lea picregq, [fourtap_filter_hb_m] %endif - mova m5, [fourtap_filter_b+myq-16] - mova m6, [fourtap_filter_b+myq] + mova m5, [fourtap_filter_hb+myq-16] + mova m6, [fourtap_filter_hb+myq] mova m7, [pw_256] ; read 3 lines - mov picregq, srcstrideq - neg picregq - MOV m0, [srcq+picregq] - MOV m1, [srcq] - MOV m2, [srcq+srcstrideq] - lea srcq, [srcq+2*srcstrideq] - punpcklbw m0, m2 - -%if %1 == 4 -.next2rows: - movd m3, [srcq] - movd m4, [srcq+srcstrideq] - punpcklbw m1, m3 - punpcklqdq m0, m1 - punpcklbw m2, m4 - pmaddubsw m0, m5 - punpcklqdq m1, m2 - pmaddubsw m1, m6 - lea srcq, [srcq+2*srcstrideq] - paddsw m1, m0 - pmulhrsw m1, m7 - mova m0, m2 - packuswb m1, m1 - movd [dstq], m1 - mova m2, m4 - psrldq m1, 4 - movd [dstq+dststrideq], m1 - mova m1, m3 - lea dstq, [dstq+2*dststrideq] - sub heightd, 2 - jg .next2rows -%else -.nextrow: - movh m3, [srcq] ; read new row - pmaddubsw m0, m5 - punpcklbw m1, m3 - pmaddubsw m4, m1, m6 + sub srcq, srcstrideq + movh m0, [srcq] + movh m1, [srcq+ srcstrideq] + movh m2, [srcq+2*srcstrideq] add srcq, srcstrideq - paddsw m4, m0 + +.nextrow: + movh m3, [srcq+2*srcstrideq] ; read new row + mova m4, m0 mova m0, m1 - pmulhrsw m4, m7 + punpcklbw m4, m1 mova m1, m2 - packuswb m4, m4 + punpcklbw m2, m3 + pmaddubsw m4, m5 + pmaddubsw m2, m6 + paddsw m4, m2 mova m2, m3 + pmulhrsw m4, m7 + packuswb m4, m4 movh [dstq], m4 ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow -%endif RET cglobal put_vp8_epel%1_v6, 7, 7, 8, dst, dststride, src, srcstride, height, picreg, my lea myd, [myq*3] %if PIC - lea picregq, [sixtap_filter_b_m] + lea picregq, [sixtap_filter_hb_m] %endif - lea myq, [sixtap_filter_b+myq*8] + lea myq, [sixtap_filter_hb+myq*8] ; read 5 lines - mov picregq, srcstrideq - neg picregq - MOV m0, [srcq+2*picregq] - MOV m1, [srcq+picregq] - MOV m2, [srcq] - MOV m3, [srcq+srcstrideq] - MOV m4, [srcq+2*srcstrideq] + sub srcq, srcstrideq + sub srcq, srcstrideq + movh m0, [srcq] + movh m1, [srcq+srcstrideq] + movh m2, [srcq+srcstrideq*2] lea srcq, [srcq+srcstrideq*2] - punpcklbw m0, m3 - punpcklbw m1, m4 -%if %1 == 4 - punpcklqdq m0, m1 - -.next2rows: - movd m5, [srcq+srcstrideq] - movd m6, [srcq+2*srcstrideq] - pmaddubsw m0, [myq-48] - punpcklbw m2, m5 - punpcklqdq m1, m2 - pmaddubsw m1, [myq-32] - punpcklbw m3, m6 - punpcklqdq m2, m3 - paddw m0, m1 - pmaddubsw m1, m2, [myq-16] - lea srcq, [srcq+2*srcstrideq] - paddsw m1, m0 - mova m0, m2 - pmulhrsw m1, [pw_256] - mova m2, m4 - packuswb m1, m1 - movd [dstq], m1 - mova m4, m6 - psrldq m1, 4 - movd [dstq+dststrideq], m1 - lea dstq, [dstq+2*dststrideq] - mova m1, m3 - mova m3, m5 - sub heightd, 2 - jg .next2rows -%else + add srcq, srcstrideq + movh m3, [srcq] + movh m4, [srcq+srcstrideq] .nextrow: - movh m5, [srcq+srcstrideq] ; read new row - pmaddubsw m0, [myq-48] - punpcklbw m2, m5 - pmaddubsw m6, m1, [myq-32] - pmaddubsw m7, m2, [myq-16] - add srcq, srcstrideq - paddw m6, m0 + movh m5, [srcq+2*srcstrideq] ; read new row + mova m6, m0 + punpcklbw m6, m5 mova m0, m1 + punpcklbw m1, m2 + mova m7, m3 + punpcklbw m7, m4 + pmaddubsw m6, [myq-48] + pmaddubsw m1, [myq-32] + pmaddubsw m7, [myq-16] + paddsw m6, m1 paddsw m6, m7 mova m1, m2 mova m2, m3 @@ -414,16 +311,123 @@ cglobal put_vp8_epel%1_v6, 7, 7, 8, dst, dststride, src, srcstride, height, picr ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow -%endif RET %endmacro -INIT_XMM ssse3 +INIT_MMX ssse3 FILTER_SSSE3 4 +INIT_XMM ssse3 FILTER_SSSE3 8 +; 4x4 block, H-only 4-tap filter +INIT_MMX mmxext +cglobal put_vp8_epel4_h4, 6, 6 + npicregs, 0, dst, dststride, src, srcstride, height, mx, picreg + shl mxd, 4 +%if PIC + lea picregq, [fourtap_filter_hw_m] +%endif + movq mm4, [fourtap_filter_hw+mxq-16] ; set up 4tap filter in words + movq mm5, [fourtap_filter_hw+mxq] + movq mm7, [pw_64] + pxor mm6, mm6 + +.nextrow: + movq mm1, [srcq-1] ; (ABCDEFGH) load 8 horizontal pixels + + ; first set of 2 pixels + movq mm2, mm1 ; byte ABCD.. + punpcklbw mm1, mm6 ; byte->word ABCD + pshufw mm0, mm2, 9 ; byte CDEF.. + punpcklbw mm0, mm6 ; byte->word CDEF + pshufw mm3, mm1, 0x94 ; word ABBC + pshufw mm1, mm0, 0x94 ; word CDDE + pmaddwd mm3, mm4 ; multiply 2px with F0/F1 + movq mm0, mm1 ; backup for second set of pixels + pmaddwd mm1, mm5 ; multiply 2px with F2/F3 + paddd mm3, mm1 ; finish 1st 2px + + ; second set of 2 pixels, use backup of above + punpckhbw mm2, mm6 ; byte->word EFGH + pmaddwd mm0, mm4 ; multiply backed up 2px with F0/F1 + pshufw mm1, mm2, 0x94 ; word EFFG + pmaddwd mm1, mm5 ; multiply 2px with F2/F3 + paddd mm0, mm1 ; finish 2nd 2px + + ; merge two sets of 2 pixels into one set of 4, round/clip/store + packssdw mm3, mm0 ; merge dword->word (4px) + paddsw mm3, mm7 ; rounding + psraw mm3, 7 + packuswb mm3, mm6 ; clip and word->bytes + movd [dstq], mm3 ; store + + ; go to next line + add dstq, dststrideq + add srcq, srcstrideq + dec heightd ; next row + jg .nextrow + RET + +; 4x4 block, H-only 6-tap filter +INIT_MMX mmxext +cglobal put_vp8_epel4_h6, 6, 6 + npicregs, 0, dst, dststride, src, srcstride, height, mx, picreg + lea mxd, [mxq*3] +%if PIC + lea picregq, [sixtap_filter_hw_m] +%endif + movq mm4, [sixtap_filter_hw+mxq*8-48] ; set up 4tap filter in words + movq mm5, [sixtap_filter_hw+mxq*8-32] + movq mm6, [sixtap_filter_hw+mxq*8-16] + movq mm7, [pw_64] + pxor mm3, mm3 + +.nextrow: + movq mm1, [srcq-2] ; (ABCDEFGH) load 8 horizontal pixels + + ; first set of 2 pixels + movq mm2, mm1 ; byte ABCD.. + punpcklbw mm1, mm3 ; byte->word ABCD + pshufw mm0, mm2, 0x9 ; byte CDEF.. + punpckhbw mm2, mm3 ; byte->word EFGH + punpcklbw mm0, mm3 ; byte->word CDEF + pshufw mm1, mm1, 0x94 ; word ABBC + pshufw mm2, mm2, 0x94 ; word EFFG + pmaddwd mm1, mm4 ; multiply 2px with F0/F1 + pshufw mm3, mm0, 0x94 ; word CDDE + movq mm0, mm3 ; backup for second set of pixels + pmaddwd mm3, mm5 ; multiply 2px with F2/F3 + paddd mm1, mm3 ; add to 1st 2px cache + movq mm3, mm2 ; backup for second set of pixels + pmaddwd mm2, mm6 ; multiply 2px with F4/F5 + paddd mm1, mm2 ; finish 1st 2px + + ; second set of 2 pixels, use backup of above + movd mm2, [srcq+3] ; byte FGHI (prevent overreads) + pmaddwd mm0, mm4 ; multiply 1st backed up 2px with F0/F1 + pmaddwd mm3, mm5 ; multiply 2nd backed up 2px with F2/F3 + paddd mm0, mm3 ; add to 2nd 2px cache + pxor mm3, mm3 + punpcklbw mm2, mm3 ; byte->word FGHI + pshufw mm2, mm2, 0xE9 ; word GHHI + pmaddwd mm2, mm6 ; multiply 2px with F4/F5 + paddd mm0, mm2 ; finish 2nd 2px + + ; merge two sets of 2 pixels into one set of 4, round/clip/store + packssdw mm1, mm0 ; merge dword->word (4px) + paddsw mm1, mm7 ; rounding + psraw mm1, 7 + packuswb mm1, mm3 ; clip and word->bytes + movd [dstq], mm1 ; store + + ; go to next line + add dstq, dststrideq + add srcq, srcstrideq + dec heightd ; next row + jg .nextrow + RET + INIT_XMM sse2 cglobal put_vp8_epel8_h4, 6, 6 + npicregs, 10, dst, dststride, src, srcstride, height, mx, picreg shl mxd, 5 @@ -457,17 +461,17 @@ cglobal put_vp8_epel8_h4, 6, 6 + npicregs, 10, dst, dststride, src, srcstride, h pmullw m2, [mxq+32] pmullw m3, [mxq+48] %endif - add srcq, srcstrideq - paddw m0, m1 - paddw m2, m3 - paddw m0, m4 + paddsw m0, m1 + paddsw m2, m3 paddsw m0, m2 + paddsw m0, m4 psraw m0, 7 packuswb m0, m7 movh [dstq], m0 ; store ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow RET @@ -518,26 +522,26 @@ cglobal put_vp8_epel8_h6, 6, 6 + npicregs, 14, dst, dststride, src, srcstride, h pmullw m4, [mxq+64] pmullw m5, [mxq+80] %endif - add srcq, srcstrideq - paddw m1, m4 - paddw m0, m5 - paddw m1, m2 - paddw m0, m3 - paddw m1, m6 + paddsw m1, m4 + paddsw m0, m5 + paddsw m1, m2 + paddsw m0, m3 paddsw m0, m1 + paddsw m0, m6 psraw m0, 7 packuswb m0, m7 movh [dstq], m0 ; store ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow RET -INIT_XMM sse2 +%macro FILTER_V 1 ; 4x4 block, V-only 4-tap filter -cglobal put_vp8_epel8_v4, 7, 7, 8, dst, dststride, src, srcstride, height, picreg, my +cglobal put_vp8_epel%1_v4, 7, 7, 8, dst, dststride, src, srcstride, height, picreg, my shl myd, 5 %if PIC lea picregq, [fourtap_filter_v_m] @@ -564,33 +568,33 @@ cglobal put_vp8_epel8_v4, 7, 7, 8, dst, dststride, src, srcstride, height, picre mova m3, m4 pmullw m0, [myq+0] pmullw m4, m5 - paddw m4, m0 + paddsw m4, m0 ; then calculate positive taps mova m0, m1 pmullw m1, [myq+16] - paddw m4, m1 + paddsw m4, m1 mova m1, m2 pmullw m2, [myq+32] - paddw m4, m6 - add srcq, srcstrideq paddsw m4, m2 mova m2, m3 ; round/clip/store + paddsw m4, m6 psraw m4, 7 packuswb m4, m7 movh [dstq], m4 ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow RET ; 4x4 block, V-only 6-tap filter -cglobal put_vp8_epel8_v6, 7, 7, 8, dst, dststride, src, srcstride, height, picreg, my +cglobal put_vp8_epel%1_v6, 7, 7, 8, dst, dststride, src, srcstride, height, picreg, my shl myd, 4 lea myq, [myq*3] %if PIC @@ -600,14 +604,15 @@ cglobal put_vp8_epel8_v6, 7, 7, 8, dst, dststride, src, srcstride, height, picre pxor m7, m7 ; read 5 lines - mov picregq, srcstrideq - neg picregq - movh m0, [srcq+2*picregq] - movh m1, [srcq+picregq] - movh m2, [srcq] - movh m3, [srcq+srcstrideq] - movh m4, [srcq+2*srcstrideq] + sub srcq, srcstrideq + sub srcq, srcstrideq + movh m0, [srcq] + movh m1, [srcq+srcstrideq] + movh m2, [srcq+srcstrideq*2] lea srcq, [srcq+srcstrideq*2] + add srcq, srcstrideq + movh m3, [srcq] + movh m4, [srcq+srcstrideq] punpcklbw m0, m7 punpcklbw m1, m7 punpcklbw m2, m7 @@ -620,21 +625,19 @@ cglobal put_vp8_epel8_v6, 7, 7, 8, dst, dststride, src, srcstride, height, picre pmullw m5, [myq+16] mova m6, m4 pmullw m6, [myq+64] - paddw m6, m5 + paddsw m6, m5 ; then calculate positive taps - movh m5, [srcq+srcstrideq] ; read new row + movh m5, [srcq+2*srcstrideq] ; read new row punpcklbw m5, m7 pmullw m0, [myq+0] - paddw m6, [pw_64] - paddw m6, m0 + paddsw m6, m0 mova m0, m1 mova m1, m2 pmullw m2, [myq+32] - paddw m6, m2 + paddsw m6, m2 mova m2, m3 pmullw m3, [myq+48] - add srcq, srcstrideq paddsw m6, m3 mova m3, m4 mova m4, m5 @@ -642,15 +645,23 @@ cglobal put_vp8_epel8_v6, 7, 7, 8, dst, dststride, src, srcstride, height, picre paddsw m6, m5 ; round/clip/store + paddsw m6, [pw_64] psraw m6, 7 packuswb m6, m7 movh [dstq], m6 ; go to next line add dstq, dststrideq + add srcq, srcstrideq dec heightd ; next row jg .nextrow RET +%endmacro + +INIT_MMX mmxext +FILTER_V 4 +INIT_XMM sse2 +FILTER_V 8 %macro FILTER_BILINEAR 1 %if cpuflag(ssse3) @@ -661,15 +672,14 @@ cglobal put_vp8_bilinear%1_v, 7, 7, 5, dst, dststride, src, srcstride, height, p %endif pxor m4, m4 mova m3, [bilinear_filter_vb+myq-16] - movh m0, [srcq+srcstrideq*0] .nextrow: + movh m0, [srcq+srcstrideq*0] movh m1, [srcq+srcstrideq*1] movh m2, [srcq+srcstrideq*2] punpcklbw m0, m1 punpcklbw m1, m2 pmaddubsw m0, m3 pmaddubsw m1, m3 - lea srcq, [srcq+srcstrideq*2] psraw m0, 2 psraw m1, 2 pavgw m0, m4 @@ -684,7 +694,6 @@ cglobal put_vp8_bilinear%1_v, 7, 7, 5, dst, dststride, src, srcstride, height, p movh [dstq+dststrideq*0], m0 movhps [dstq+dststrideq*1], m0 %endif - mova m0, m2 %else ; cpuflag(ssse3) cglobal put_vp8_bilinear%1_v, 7, 7, 7, dst, dststride, src, srcstride, height, picreg, my shl myd, 4 @@ -707,19 +716,26 @@ cglobal put_vp8_bilinear%1_v, 7, 7, 7, dst, dststride, src, srcstride, height, p pmullw m1, m5 pmullw m2, m4 pmullw m3, m5 - lea srcq, [srcq+srcstrideq*2] - paddw m0, m1 - paddw m2, m3 + paddsw m0, m1 + paddsw m2, m3 psraw m0, 2 psraw m2, 2 pavgw m0, m6 pavgw m2, m6 +%if mmsize == 8 + packuswb m0, m0 + packuswb m2, m2 + movh [dstq+dststrideq*0], m0 + movh [dstq+dststrideq*1], m2 +%else packuswb m0, m2 movh [dstq+dststrideq*0], m0 movhps [dstq+dststrideq*1], m0 +%endif %endif ; cpuflag(ssse3) lea dstq, [dstq+dststrideq*2] + lea srcq, [srcq+srcstrideq*2] sub heightd, 2 jg .nextrow RET @@ -740,7 +756,6 @@ cglobal put_vp8_bilinear%1_h, 6, 6 + npicregs, 5, dst, dststride, src, srcstride pshufb m1, m2 pmaddubsw m0, m3 pmaddubsw m1, m3 - lea srcq, [srcq+srcstrideq*2] psraw m0, 2 psraw m1, 2 pavgw m0, m4 @@ -778,24 +793,33 @@ cglobal put_vp8_bilinear%1_h, 6, 6 + npicregs, 7, dst, dststride, src, srcstride pmullw m1, m5 pmullw m2, m4 pmullw m3, m5 - lea srcq, [srcq+srcstrideq*2] - paddw m0, m1 - paddw m2, m3 + paddsw m0, m1 + paddsw m2, m3 psraw m0, 2 psraw m2, 2 pavgw m0, m6 pavgw m2, m6 +%if mmsize == 8 + packuswb m0, m0 + packuswb m2, m2 + movh [dstq+dststrideq*0], m0 + movh [dstq+dststrideq*1], m2 +%else packuswb m0, m2 movh [dstq+dststrideq*0], m0 movhps [dstq+dststrideq*1], m0 +%endif %endif ; cpuflag(ssse3) lea dstq, [dstq+dststrideq*2] + lea srcq, [srcq+srcstrideq*2] sub heightd, 2 jg .nextrow RET %endmacro +INIT_MMX mmxext +FILTER_BILINEAR 4 INIT_XMM sse2 FILTER_BILINEAR 8 INIT_MMX ssse3 @@ -803,22 +827,14 @@ FILTER_BILINEAR 4 INIT_XMM ssse3 FILTER_BILINEAR 8 -INIT_XMM sse2 -cglobal put_vp8_pixels8, 5, 5+2*ARCH_X86_64, 2, dst, dststride, src, srcstride, height +INIT_MMX mmx +cglobal put_vp8_pixels8, 5, 5, 0, dst, dststride, src, srcstride, height .nextrow: -%if ARCH_X86_64 - mov r5q, [srcq+srcstrideq*0] - mov r6q, [srcq+srcstrideq*1] + movq mm0, [srcq+srcstrideq*0] + movq mm1, [srcq+srcstrideq*1] lea srcq, [srcq+srcstrideq*2] - mov [dstq+dststrideq*0], r5q - mov [dstq+dststrideq*1], r6q -%else - movq m0, [srcq+srcstrideq*0] - movq m1, [srcq+srcstrideq*1] - lea srcq, [srcq+srcstrideq*2] - movq [dstq+dststrideq*0], m0 - movq [dstq+dststrideq*1], m1 -%endif + movq [dstq+dststrideq*0], mm0 + movq [dstq+dststrideq*1], mm1 lea dstq, [dstq+dststrideq*2] sub heightd, 2 jg .nextrow diff --git a/icecat/media/ffvpx/libavcodec/x86/vp8dsp_init.c b/icecat/media/ffvpx/libavcodec/x86/vp8dsp_init.c index 828b038cdf..bd20da1fc9 100644 --- a/icecat/media/ffvpx/libavcodec/x86/vp8dsp_init.c +++ b/icecat/media/ffvpx/libavcodec/x86/vp8dsp_init.c @@ -26,9 +26,24 @@ #include "libavutil/x86/cpu.h" #include "libavcodec/vp8dsp.h" +#if HAVE_X86ASM + /* * MC functions */ +void ff_put_vp8_epel4_h4_mmxext(uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, int mx, int my); +void ff_put_vp8_epel4_h6_mmxext(uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, int mx, int my); +void ff_put_vp8_epel4_v4_mmxext(uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, int mx, int my); +void ff_put_vp8_epel4_v6_mmxext(uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, int mx, int my); + void ff_put_vp8_epel8_h4_sse2 (uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my); @@ -67,6 +82,9 @@ void ff_put_vp8_epel8_v6_ssse3 (uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my); +void ff_put_vp8_bilinear4_h_mmxext(uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, int mx, int my); void ff_put_vp8_bilinear8_h_sse2 (uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my); @@ -77,6 +95,9 @@ void ff_put_vp8_bilinear8_h_ssse3 (uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my); +void ff_put_vp8_bilinear4_v_mmxext(uint8_t *dst, ptrdiff_t dststride, + const uint8_t *src, ptrdiff_t srcstride, + int height, int mx, int my); void ff_put_vp8_bilinear8_v_sse2 (uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my); @@ -88,7 +109,7 @@ void ff_put_vp8_bilinear8_v_ssse3 (uint8_t *dst, ptrdiff_t dststride, int height, int mx, int my); -void ff_put_vp8_pixels8_sse2(uint8_t *dst, ptrdiff_t dststride, +void ff_put_vp8_pixels8_mmx (uint8_t *dst, ptrdiff_t dststride, const uint8_t *src, ptrdiff_t srcstride, int height, int mx, int my); void ff_put_vp8_pixels16_sse(uint8_t *dst, ptrdiff_t dststride, @@ -105,6 +126,16 @@ static void ff_put_vp8_ ## FILTERTYPE ## 16_ ## TAPTYPE ## _ ## OPT( \ ff_put_vp8_ ## FILTERTYPE ## 8_ ## TAPTYPE ## _ ## OPT( \ dst + 8, dststride, src + 8, srcstride, height, mx, my); \ } +#define TAP_W8(OPT, FILTERTYPE, TAPTYPE) \ +static void ff_put_vp8_ ## FILTERTYPE ## 8_ ## TAPTYPE ## _ ## OPT( \ + uint8_t *dst, ptrdiff_t dststride, uint8_t *src, \ + ptrdiff_t srcstride, int height, int mx, int my) \ +{ \ + ff_put_vp8_ ## FILTERTYPE ## 4_ ## TAPTYPE ## _ ## OPT( \ + dst, dststride, src, srcstride, height, mx, my); \ + ff_put_vp8_ ## FILTERTYPE ## 4_ ## TAPTYPE ## _ ## OPT( \ + dst + 4, dststride, src + 4, srcstride, height, mx, my); \ +} TAP_W16(sse2, epel, h6) TAP_W16(sse2, epel, v6) @@ -130,6 +161,14 @@ static void ff_put_vp8_epel ## SIZE ## _h ## TAPNUMX ## v ## TAPNUMY ## _ ## OPT dst, dststride, tmpptr, SIZE, height, mx, my); \ } +#define HVTAPMMX(x, y) \ +HVTAP(mmxext, 8, x, y, 4, 8) + +HVTAPMMX(4, 4) +HVTAPMMX(4, 6) +HVTAPMMX(6, 4) +HVTAPMMX(6, 6) + #define HVTAPSSE2(x, y, w) \ HVTAP(sse2, 16, x, y, w, 16) \ HVTAP(ssse3, 16, x, y, w, 16) @@ -157,6 +196,7 @@ static void ff_put_vp8_bilinear ## SIZE ## _hv_ ## OPT( \ dst, dststride, tmp, SIZE, height, mx, my); \ } +HVBILIN(mmxext, 8, 4, 8) HVBILIN(sse2, 8, 8, 16) HVBILIN(sse2, 8, 16, 16) HVBILIN(ssse3, 8, 4, 8) @@ -214,6 +254,8 @@ DECLARE_LOOP_FILTER(sse2) DECLARE_LOOP_FILTER(ssse3) DECLARE_LOOP_FILTER(sse4) +#endif /* HAVE_X86ASM */ + #define VP8_LUMA_MC_FUNC(IDX, SIZE, OPT) \ c->put_vp8_epel_pixels_tab[IDX][0][2] = ff_put_vp8_epel ## SIZE ## _h6_ ## OPT; \ c->put_vp8_epel_pixels_tab[IDX][2][0] = ff_put_vp8_epel ## SIZE ## _v6_ ## OPT; \ @@ -240,24 +282,33 @@ DECLARE_LOOP_FILTER(sse4) av_cold void ff_vp78dsp_init_x86(VP8DSPContext *c) { +#if HAVE_X86ASM int cpu_flags = av_get_cpu_flags(); + if (EXTERNAL_MMX(cpu_flags)) { + c->put_vp8_epel_pixels_tab[1][0][0] = + c->put_vp8_bilinear_pixels_tab[1][0][0] = ff_put_vp8_pixels8_mmx; + } + + /* note that 4-tap width=16 functions are missing because w=16 + * is only used for luma, and luma is always a copy or sixtap. */ + if (EXTERNAL_MMXEXT(cpu_flags)) { + VP8_MC_FUNC(2, 4, mmxext); + VP8_BILINEAR_MC_FUNC(2, 4, mmxext); + } + if (EXTERNAL_SSE(cpu_flags)) { c->put_vp8_epel_pixels_tab[0][0][0] = c->put_vp8_bilinear_pixels_tab[0][0][0] = ff_put_vp8_pixels16_sse; } if (EXTERNAL_SSE2_SLOW(cpu_flags)) { - c->put_vp8_epel_pixels_tab[1][0][0] = - c->put_vp8_bilinear_pixels_tab[1][0][0] = ff_put_vp8_pixels8_sse2; VP8_LUMA_MC_FUNC(0, 16, sse2); VP8_MC_FUNC(1, 8, sse2); VP8_BILINEAR_MC_FUNC(0, 16, sse2); VP8_BILINEAR_MC_FUNC(1, 8, sse2); } - /* note that 4-tap width=16 functions are missing because w=16 - * is only used for luma, and luma is always a copy or sixtap. */ if (EXTERNAL_SSSE3(cpu_flags)) { VP8_LUMA_MC_FUNC(0, 16, ssse3); VP8_MC_FUNC(1, 8, ssse3); @@ -266,10 +317,12 @@ av_cold void ff_vp78dsp_init_x86(VP8DSPContext *c) VP8_BILINEAR_MC_FUNC(1, 8, ssse3); VP8_BILINEAR_MC_FUNC(2, 4, ssse3); } +#endif /* HAVE_X86ASM */ } av_cold void ff_vp8dsp_init_x86(VP8DSPContext *c) { +#if HAVE_X86ASM int cpu_flags = av_get_cpu_flags(); if (EXTERNAL_MMX(cpu_flags)) { @@ -326,4 +379,5 @@ av_cold void ff_vp8dsp_init_x86(VP8DSPContext *c) c->vp8_h_loop_filter16y = ff_vp8_h_loop_filter16y_mbedge_sse4; c->vp8_h_loop_filter8uv = ff_vp8_h_loop_filter8uv_mbedge_sse4; } +#endif /* HAVE_X86ASM */ } diff --git a/icecat/media/ffvpx/libavcodec/x86/vp8dsp_loopfilter.asm b/icecat/media/ffvpx/libavcodec/x86/vp8dsp_loopfilter.asm index 721f8b07cc..ef397efd3e 100644 --- a/icecat/media/ffvpx/libavcodec/x86/vp8dsp_loopfilter.asm +++ b/icecat/media/ffvpx/libavcodec/x86/vp8dsp_loopfilter.asm @@ -1,5 +1,5 @@ ;****************************************************************************** -;* VP8 ASM optimizations +;* VP8 MMXEXT optimizations ;* Copyright (c) 2010 Ronald S. Bultje ;* Copyright (c) 2010 Fiona Glaser ;* @@ -381,7 +381,7 @@ cglobal vp8_%1_loop_filter16y_inner, 5, 5, 13, stack_size, dst, stride, flimE, f ; read lea dst2q, [dst1q+strideq] %ifidn %1, v -%if %2 == 8 +%if %2 == 8 && mmsize == 16 %define movrow movh %else %define movrow mova @@ -392,7 +392,7 @@ cglobal vp8_%1_loop_filter16y_inner, 5, 5, 13, stack_size, dst, stride, flimE, f movrow m5, [dst2q] ; q1 movrow m6, [dst2q+ strideq*1] ; q2 movrow m7, [dst2q+ strideq*2] ; q3 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 movhps m0, [dst8q+mstrideq*4] movhps m2, [dst8q+mstrideq*2] add dst8q, strideq @@ -498,7 +498,7 @@ cglobal vp8_%1_loop_filter16y_inner, 5, 5, 13, stack_size, dst, stride, flimE, f SWAP 7, 3 ; now m7 is zero %ifidn %1, v movrow m3, [dst1q+mstrideq ] ; p0 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 movhps m3, [dst8q+mstrideq ] %endif %elifdef m12 @@ -520,7 +520,7 @@ cglobal vp8_%1_loop_filter16y_inner, 5, 5, 13, stack_size, dst, stride, flimE, f SWAP 6, 4 ; now m6 is I %ifidn %1, v movrow m4, [dst1q] ; q0 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 movhps m4, [dst8q] %endif %elifdef m8 @@ -574,10 +574,10 @@ cglobal vp8_%1_loop_filter16y_inner, 5, 5, 13, stack_size, dst, stride, flimE, f pand m0, m7 ; normal_limit result ; filter_common; at this point, m2-m5=p1-q1 and m0 is filter_mask -%ifdef m8 ; x86-64 +%ifdef m8 ; x86-64 && sse2 mova m8, [pb_80] %define m_pb_80 m8 -%else ; x86-32 +%else ; x86-32 or mmx/mmxext %define m_pb_80 [pb_80] %endif mova m1, m4 @@ -648,7 +648,7 @@ cglobal vp8_%1_loop_filter16y_inner, 5, 5, 13, stack_size, dst, stride, flimE, f movrow [dst1q+mstrideq ], m3 movrow [dst1q], m4 movrow [dst1q+ strideq ], m5 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 movhps [dst8q+mstrideq*2], m2 movhps [dst8q+mstrideq ], m3 movhps [dst8q], m4 @@ -688,11 +688,14 @@ INNER_LOOPFILTER h, 8 %macro MBEDGE_LOOPFILTER 2 %define stack_size 0 %ifndef m8 ; stack layout: [0]=E, [1]=I, [2]=hev_thr - ; [3]=hev() result +%if mmsize == 16 ; [3]=hev() result ; [4]=filter tmp result ; [5]/[6] = p2/q2 backup ; [7]=lim_res sign result %define stack_size mmsize * -7 +%else ; 8 ; extra storage space for transposes +%define stack_size mmsize * -8 +%endif %endif %if %2 == 8 ; chroma @@ -720,7 +723,11 @@ cglobal vp8_%1_loop_filter16y_mbedge, 5, 5, 15, stack_size, dst1, stride, flimE, %define m_q0backup [rsp+mmsize*4] %define m_p2backup [rsp+mmsize*5] %define m_q2backup [rsp+mmsize*6] +%if mmsize == 16 %define m_limsign [rsp] +%else +%define m_limsign [rsp+mmsize*7] +%endif mova m_flimE, m0 mova m_flimI, m1 @@ -760,7 +767,7 @@ cglobal vp8_%1_loop_filter16y_mbedge, 5, 5, 15, stack_size, dst1, stride, flimE, ; read lea dst2q, [dst1q+ strideq ] %ifidn %1, v -%if %2 == 8 +%if %2 == 8 && mmsize == 16 %define movrow movh %else %define movrow mova @@ -771,7 +778,7 @@ cglobal vp8_%1_loop_filter16y_mbedge, 5, 5, 15, stack_size, dst1, stride, flimE, movrow m5, [dst2q] ; q1 movrow m6, [dst2q+ strideq ] ; q2 movrow m7, [dst2q+ strideq*2] ; q3 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 movhps m0, [dst8q+mstrideq*4] movhps m2, [dst8q+mstrideq*2] add dst8q, strideq @@ -879,7 +886,7 @@ cglobal vp8_%1_loop_filter16y_mbedge, 5, 5, 15, stack_size, dst1, stride, flimE, SWAP 7, 3 ; now m7 is zero %ifidn %1, v movrow m3, [dst1q+mstrideq ] ; p0 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 movhps m3, [dst8q+mstrideq ] %endif %elifdef m12 @@ -901,7 +908,7 @@ cglobal vp8_%1_loop_filter16y_mbedge, 5, 5, 15, stack_size, dst1, stride, flimE, SWAP 6, 4 ; now m6 is I %ifidn %1, v movrow m4, [dst1q] ; q0 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 movhps m4, [dst8q] %endif %elifdef m8 @@ -955,10 +962,10 @@ cglobal vp8_%1_loop_filter16y_mbedge, 5, 5, 15, stack_size, dst1, stride, flimE, pand m0, m7 ; normal_limit result ; filter_common; at this point, m2-m5=p1-q1 and m0 is filter_mask -%ifdef m8 ; x86-64 +%ifdef m8 ; x86-64 && sse2 mova m8, [pb_80] %define m_pb_80 m8 -%else ; x86-32 +%else ; x86-32 or mmx/mmxext %define m_pb_80 [pb_80] %endif mova m1, m4 @@ -1175,7 +1182,7 @@ cglobal vp8_%1_loop_filter16y_mbedge, 5, 5, 15, stack_size, dst1, stride, flimE, movrow [dst1q], m4 movrow [dst2q], m5 movrow [dst2q+ strideq ], m6 -%if %2 == 8 +%if mmsize == 16 && %2 == 8 add dst8q, mstrideq movhps [dst8q+mstrideq*2], m1 movhps [dst8q+mstrideq ], m2 diff --git a/icecat/media/ffvpx/libavcodec/x86/vp9dsp_init_16bpp.c b/icecat/media/ffvpx/libavcodec/x86/vp9dsp_init_16bpp.c index 2d2f01ba5f..e5afea1512 100644 --- a/icecat/media/ffvpx/libavcodec/x86/vp9dsp_init_16bpp.c +++ b/icecat/media/ffvpx/libavcodec/x86/vp9dsp_init_16bpp.c @@ -26,6 +26,8 @@ #include "libavcodec/vp9dsp.h" #include "libavcodec/x86/vp9dsp_init.h" +#if HAVE_X86ASM + decl_fpel_func(put, 8, , mmx); decl_fpel_func(avg, 8, _16, mmxext); decl_fpel_func(put, 16, , sse); @@ -66,9 +68,11 @@ decl_ipred_dir_funcs(vl); decl_ipred_dir_funcs(vr); decl_ipred_dir_funcs(hu); decl_ipred_dir_funcs(hd); +#endif /* HAVE_X86ASM */ av_cold void ff_vp9dsp_init_16bpp_x86(VP9DSPContext *dsp) { +#if HAVE_X86ASM int cpu_flags = av_get_cpu_flags(); if (EXTERNAL_MMX(cpu_flags)) { @@ -143,4 +147,6 @@ av_cold void ff_vp9dsp_init_16bpp_x86(VP9DSPContext *dsp) init_ipred_func(dr, DIAG_DOWN_RIGHT, 32, 16, avx2); #endif } + +#endif /* HAVE_X86ASM */ } diff --git a/icecat/media/ffvpx/libavcodec/xvididct.h b/icecat/media/ffvpx/libavcodec/xvididct.h index 496071a034..e0bc1a2b91 100644 --- a/icecat/media/ffvpx/libavcodec/xvididct.h +++ b/icecat/media/ffvpx/libavcodec/xvididct.h @@ -21,13 +21,16 @@ #include +#include "avcodec.h" #include "idctdsp.h" void ff_xvid_idct(int16_t *const in); -void ff_xvid_idct_init(IDCTDSPContext *c); +void ff_xvid_idct_init(IDCTDSPContext *c, AVCodecContext *avctx); -void ff_xvid_idct_init_x86(IDCTDSPContext *c); -void ff_xvid_idct_init_mips(IDCTDSPContext *c); +void ff_xvid_idct_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth); +void ff_xvid_idct_init_mips(IDCTDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth); #endif /* AVCODEC_XVIDIDCT_H */ diff --git a/icecat/media/ffvpx/libavutil/aarch64/asm.S b/icecat/media/ffvpx/libavutil/aarch64/asm.S index e0cb74a579..50ce7d4dfd 100644 --- a/icecat/media/ffvpx/libavutil/aarch64/asm.S +++ b/icecat/media/ffvpx/libavutil/aarch64/asm.S @@ -40,14 +40,6 @@ .arch AS_ARCH_LEVEL #endif -#if HAVE_AS_ARCHEXT_CRC_DIRECTIVE -#define ENABLE_ARM_CRC .arch_extension crc -#define DISABLE_ARM_CRC .arch_extension nocrc -#else -#define ENABLE_ARM_CRC -#define DISABLE_ARM_CRC -#endif - #if HAVE_AS_ARCHEXT_DOTPROD_DIRECTIVE #define ENABLE_DOTPROD .arch_extension dotprod #define DISABLE_DOTPROD .arch_extension nodotprod @@ -64,22 +56,6 @@ #define DISABLE_I8MM #endif -#if HAVE_AS_ARCHEXT_AES_DIRECTIVE -#define ENABLE_PMULL .arch_extension aes -#define DISABLE_PMULL .arch_extension noaes -#else -#define ENABLE_PMULL -#define DISABLE_PMULL -#endif - -#if HAVE_AS_ARCHEXT_SHA3_DIRECTIVE -#define ENABLE_EOR3 .arch_extension sha3 -#define DISABLE_EOR3 .arch_extension nosha3 -#else -#define ENABLE_EOR3 -#define DISABLE_EOR3 -#endif - #if HAVE_AS_ARCHEXT_SVE_DIRECTIVE #define ENABLE_SVE .arch_extension sve #define DISABLE_SVE .arch_extension nosve @@ -96,40 +72,10 @@ #define DISABLE_SVE2 #endif -#if HAVE_AS_ARCHEXT_SME_DIRECTIVE -#define ENABLE_SME .arch_extension sme -#define DISABLE_SME .arch_extension nosme -#else -#define ENABLE_SME -#define DISABLE_SME -#endif - -#if HAVE_AS_ARCHEXT_SME_I16I64_DIRECTIVE -#define ENABLE_SME_I16I64 .arch_extension sme-i16i64 -#define DISABLE_SME_I16I64 .arch_extension nosme-i16i64 -#else -#define ENABLE_SME_I16I64 -#define DISABLE_SME_I16I64 -#endif - -#if HAVE_AS_ARCHEXT_SME2_DIRECTIVE -#define ENABLE_SME2 .arch_extension sme2 -#define DISABLE_SME2 .arch_extension nosme2 -#else -#define ENABLE_SME2 -#define DISABLE_SME2 -#endif - -DISABLE_ARM_CRC -DISABLE_PMULL -DISABLE_EOR3 DISABLE_DOTPROD DISABLE_I8MM DISABLE_SVE DISABLE_SVE2 -DISABLE_SME -DISABLE_SME_I16I64 -DISABLE_SME2 /* Support macros for @@ -201,18 +147,16 @@ DISABLE_SME2 * * References: * - "ELF for the Arm® 64-bit Architecture" - * https://github.com/ARM-software/abi-aa/blob/master/aaelf64/aaelf64.rst + * https: *github.com/ARM-software/abi-aa/blob/master/aaelf64/aaelf64.rst * - "Providing protection for complex software" * https://developer.arm.com/architectures/learn-the-architecture/providing-protection-for-complex-software */ #if defined(__ARM_FEATURE_BTI_DEFAULT) && (__ARM_FEATURE_BTI_DEFAULT == 1) # define GNU_PROPERTY_AARCH64_BTI (1 << 0) // Has BTI -# define AARCH64_VALID_JUMP_CALL_TARGET hint #38 // BTI 'jc' -# define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c' -# define AARCH64_VALID_JUMP_TARGET hint #38 // BTI 'j' +# define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c' +# define AARCH64_VALID_JUMP_TARGET hint #38 // BTI 'j' #else # define GNU_PROPERTY_AARCH64_BTI 0 // No BTI -# define AARCH64_VALID_JUMP_CALL_TARGET # define AARCH64_VALID_CALL_TARGET # define AARCH64_VALID_JUMP_TARGET #endif @@ -237,14 +181,8 @@ DISABLE_SME2 # define AARCH64_VALIDATE_LINK_REGISTER #endif -#if defined(__ARM_FEATURE_GCS_DEFAULT) && __ARM_FEATURE_GCS_DEFAULT == 1 -#define GNU_PROPERTY_AARCH64_GCS (1 << 2) -#else -#define GNU_PROPERTY_AARCH64_GCS 0 /* No GCS */ -#endif - -#if (GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_PAC != 0 || GNU_PROPERTY_AARCH64_GCS != 0) && defined(__ELF__) +#if (GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_PAC != 0) && defined(__ELF__) .pushsection .note.gnu.property, "a" .balign 8 .long 4 @@ -253,12 +191,12 @@ DISABLE_SME2 .asciz "GNU" .long 0xc0000000 /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ .long 4 - .long (GNU_PROPERTY_AARCH64_BTI | GNU_PROPERTY_AARCH64_PAC | GNU_PROPERTY_AARCH64_GCS) + .long (GNU_PROPERTY_AARCH64_BTI | GNU_PROPERTY_AARCH64_PAC) .long 0 .popsection #endif -.macro function name, export=0, jumpable=0, align=4 +.macro function name, export=0, align=2 .macro endfunc ELF .size \name, . - \name FUNC .endfunc @@ -271,11 +209,7 @@ FUNC .endfunc ELF .type EXTERN_ASM\name, %function FUNC .func EXTERN_ASM\name EXTERN_ASM\name: - .if \jumpable - AARCH64_VALID_JUMP_TARGET - .else AARCH64_VALID_CALL_TARGET - .endif .else ELF .type \name, %function FUNC .func \name @@ -283,7 +217,7 @@ FUNC .func \name .endif .endm -.macro const name, align=4, relocate=0 +.macro const name, align=2, relocate=0 .macro endconst ELF .size \name, . - \name .purgem endconst @@ -342,26 +276,3 @@ ELF .size \name, . - \name #define x18 do_not_use_x18 #define w18 do_not_use_w18 - -#if HAVE_SME -.macro sme_entry - AARCH64_SIGN_LINK_REGISTER - stp x29, x30, [sp, #-80]! - mov x29, sp - stp d8, d9, [sp, #16] - stp d10, d11, [sp, #32] - stp d12, d13, [sp, #48] - stp d14, d15, [sp, #64] - smstart -.endm - -.macro sme_exit - smstop - ldp d8, d9, [sp, #16] - ldp d10, d11, [sp, #32] - ldp d12, d13, [sp, #48] - ldp d14, d15, [sp, #64] - ldp x29, x30, [sp], #80 - AARCH64_VALIDATE_LINK_REGISTER -.endm -#endif diff --git a/icecat/media/ffvpx/libavutil/aarch64/cpu.c b/icecat/media/ffvpx/libavutil/aarch64/cpu.c index b8d2bd3280..e82c0f19ab 100644 --- a/icecat/media/ffvpx/libavutil/aarch64/cpu.c +++ b/icecat/media/ffvpx/libavutil/aarch64/cpu.c @@ -24,16 +24,10 @@ #include #include -#define HWCAP_AARCH64_PMULL (1 << 4) -#define HWCAP_AARCH64_CRC32 (1 << 7) -#define HWCAP_AARCH64_SHA3 (1 << 17) #define HWCAP_AARCH64_ASIMDDP (1 << 20) #define HWCAP_AARCH64_SVE (1 << 22) #define HWCAP2_AARCH64_SVE2 (1 << 1) #define HWCAP2_AARCH64_I8MM (1 << 13) -#define HWCAP2_AARCH64_SME (1 << 23) -#define HWCAP2_AARCH64_SME_I16I64 (1 << 24) -#define HWCAP2_AARCH64_SME2 (1ULL << 37) static int detect_flags(void) { @@ -42,12 +36,6 @@ static int detect_flags(void) unsigned long hwcap = ff_getauxval(AT_HWCAP); unsigned long hwcap2 = ff_getauxval(AT_HWCAP2); - if (hwcap & HWCAP_AARCH64_PMULL) - flags |= AV_CPU_FLAG_PMULL; - if (hwcap & HWCAP_AARCH64_SHA3) - flags |= AV_CPU_FLAG_EOR3; - if (hwcap & HWCAP_AARCH64_CRC32) - flags |= AV_CPU_FLAG_ARM_CRC; if (hwcap & HWCAP_AARCH64_ASIMDDP) flags |= AV_CPU_FLAG_DOTPROD; if (hwcap & HWCAP_AARCH64_SVE) @@ -56,12 +44,6 @@ static int detect_flags(void) flags |= AV_CPU_FLAG_SVE2; if (hwcap2 & HWCAP2_AARCH64_I8MM) flags |= AV_CPU_FLAG_I8MM; - if (hwcap2 & HWCAP2_AARCH64_SME) - flags |= AV_CPU_FLAG_SME; - if (hwcap2 & HWCAP2_AARCH64_SME_I16I64) - flags |= AV_CPU_FLAG_SME_I16I64; - if (hwcap2 & HWCAP2_AARCH64_SME2) - flags |= AV_CPU_FLAG_SME2; return flags; } @@ -85,18 +67,6 @@ static int detect_flags(void) flags |= AV_CPU_FLAG_DOTPROD; if (have_feature("hw.optional.arm.FEAT_I8MM")) flags |= AV_CPU_FLAG_I8MM; - if (have_feature("hw.optional.arm.FEAT_SME")) - flags |= AV_CPU_FLAG_SME; - if (have_feature("hw.optional.arm.FEAT_SME_I16I64")) - flags |= AV_CPU_FLAG_SME_I16I64; - if (have_feature("hw.optional.armv8_crc32")) - flags |= AV_CPU_FLAG_ARM_CRC; - if (have_feature("hw.optional.arm.FEAT_PMULL")) - flags |= AV_CPU_FLAG_PMULL; - if (have_feature("hw.optional.armv8_2_sha3")) - flags |= AV_CPU_FLAG_EOR3; - if (have_feature("hw.optional.arm.FEAT_SME2")) - flags |= AV_CPU_FLAG_SME2; return flags; } @@ -123,12 +93,6 @@ static int detect_flags(void) if (sysctl(mib, 2, &isar0, &len, NULL, 0) != -1) { if (ID_AA64ISAR0_DP(isar0) >= ID_AA64ISAR0_DP_IMPL) flags |= AV_CPU_FLAG_DOTPROD; - if (ID_AA64ISAR0_CRC32(isar0) >= ID_AA64ISAR0_CRC32_BASE) - flags |= AV_CPU_FLAG_ARM_CRC; - if (ID_AA64ISAR0_AES(isar0) >= ID_AA64ISAR0_AES_PMULL) - flags |= AV_CPU_FLAG_PMULL; - if (ID_AA64ISAR0_SHA3(isar0) >= ID_AA64ISAR0_SHA3_IMPL) - flags |= AV_CPU_FLAG_EOR3; } mib[0] = CTL_MACHDEP; @@ -151,24 +115,15 @@ static int detect_flags(void) static int detect_flags(void) { int flags = 0; -#ifdef PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE - if (IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE)) - flags |= AV_CPU_FLAG_ARM_CRC; -#endif -#ifdef PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE - if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE)) - flags |= AV_CPU_FLAG_PMULL; -#endif -#ifdef PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE - if (IsProcessorFeaturePresent(PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE)) - flags |= AV_CPU_FLAG_EOR3; -#endif #ifdef PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE if (IsProcessorFeaturePresent(PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE)) flags |= AV_CPU_FLAG_DOTPROD; #endif -#ifdef PF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE - if (IsProcessorFeaturePresent(PF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE)) +#ifdef PF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE + /* There's no PF_* flag that indicates whether plain I8MM is available + * or not. But if SVE_I8MM is available, that also implies that + * regular I8MM is available. */ + if (IsProcessorFeaturePresent(PF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE)) flags |= AV_CPU_FLAG_I8MM; #endif #ifdef PF_ARM_SVE_INSTRUCTIONS_AVAILABLE @@ -178,18 +133,6 @@ static int detect_flags(void) #ifdef PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE if (IsProcessorFeaturePresent(PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE)) flags |= AV_CPU_FLAG_SVE2; -#endif -#ifdef PF_ARM_SME_INSTRUCTIONS_AVAILABLE - if (IsProcessorFeaturePresent(PF_ARM_SME_INSTRUCTIONS_AVAILABLE)) - flags |= AV_CPU_FLAG_SME; -#endif -#ifdef PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE - if (IsProcessorFeaturePresent(PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE)) - flags |= AV_CPU_FLAG_SME_I16I64; -#endif -#ifdef PF_ARM_SME2_INSTRUCTIONS_AVAILABLE - if (IsProcessorFeaturePresent(PF_ARM_SME2_INSTRUCTIONS_AVAILABLE)) - flags |= AV_CPU_FLAG_SME2; #endif return flags; } @@ -219,24 +162,6 @@ int ff_get_cpu_flags_aarch64(void) #ifdef __ARM_FEATURE_SVE2 flags |= AV_CPU_FLAG_SVE2; #endif -#ifdef __ARM_FEATURE_SME - flags |= AV_CPU_FLAG_SME; -#endif -#ifdef __ARM_FEATURE_CRC32 - flags |= AV_CPU_FLAG_ARM_CRC; -#endif -#ifdef __ARM_FEATURE_AES - flags |= AV_CPU_FLAG_PMULL; -#endif -#ifdef __ARM_FEATURE_SHA3 - flags |= AV_CPU_FLAG_EOR3; -#endif -#ifdef __ARM_FEATURE_SME_I16I64 - flags |= AV_CPU_FLAG_SME_I16I64; -#endif -#ifdef __ARM_FEATURE_SME2 - flags |= AV_CPU_FLAG_SME2; -#endif flags |= detect_flags(); diff --git a/icecat/media/ffvpx/libavutil/aarch64/cpu.h b/icecat/media/ffvpx/libavutil/aarch64/cpu.h index 433ba60bca..a41b729659 100644 --- a/icecat/media/ffvpx/libavutil/aarch64/cpu.h +++ b/icecat/media/ffvpx/libavutil/aarch64/cpu.h @@ -22,26 +22,16 @@ #include "libavutil/cpu.h" #include "libavutil/cpu_internal.h" -#define have_armv8(flags) CPUEXT(flags, ARMV8) -#define have_neon(flags) CPUEXT(flags, NEON) -#define have_vfp(flags) CPUEXT(flags, VFP) -#define have_arm_crc(flags) CPUEXT(flags, ARM_CRC) -#define have_pmull(flags) CPUEXT(flags, PMULL) -#define have_eor3(flags) CPUEXT(flags, EOR3) +#define have_armv8(flags) CPUEXT(flags, ARMV8) +#define have_neon(flags) CPUEXT(flags, NEON) +#define have_vfp(flags) CPUEXT(flags, VFP) #define have_dotprod(flags) CPUEXT(flags, DOTPROD) #define have_i8mm(flags) CPUEXT(flags, I8MM) #define have_sve(flags) CPUEXT(flags, SVE) #define have_sve2(flags) CPUEXT(flags, SVE2) -#define have_sme(flags) CPUEXT(flags, SME) -#define have_sme_i16i64(flags) CPUEXT(flags, SME_I16I64) -#define have_sme2(flags) CPUEXT(flags, SME2) #if HAVE_SVE int ff_aarch64_sve_length(void); #endif -#if HAVE_SME -int ff_aarch64_sme_length(void); -#endif - #endif /* AVUTIL_AARCH64_CPU_H */ diff --git a/icecat/media/ffvpx/libavutil/aarch64/tx_float_neon.S b/icecat/media/ffvpx/libavutil/aarch64/tx_float_neon.S index 12c4e880dc..78e4876d6c 100644 --- a/icecat/media/ffvpx/libavutil/aarch64/tx_float_neon.S +++ b/icecat/media/ffvpx/libavutil/aarch64/tx_float_neon.S @@ -119,6 +119,13 @@ endconst .endif .endm +const shuf_4pt_x2, align=4 + .byte 24, 25, 26, 27 // reg2, 3 + .byte 12, 13, 14, 15 // reg1, 4 + .byte 8, 9, 10, 11 // reg1, 3 + .byte 28, 29, 30, 31 // reg2, 4 +endconst + // Identical to FFT4, but does 2 transforms in parallel, with no deinterleaving .macro FFT4_X2 e0, o0, e1, o1, \ t0=v16, t1=v17, t2=v18, t3=v19, t4=v20, t5=v21, t6=v22 @@ -128,17 +135,18 @@ endconst fsub \e0\().4s, \e0\().4s, \o0\().4s // t1234 fsub \e1\().4s, \e1\().4s, \o1\().4s // t1234 + movrel x5, shuf_4pt_x2 + rev64 \t4\().4s, \e0\().4s rev64 \t5\().4s, \e1\().4s - zip2 \o0\().2d, \t0\().2d, \t4\().2d // t3,4 r3,4 - zip2 \o1\().2d, \t2\().2d, \t5\().2d // t3,4 r3,4 + zip2 \o0\().2d, \t0\().2d, \e0\().2d // t3,4 r3,4 + zip2 \o1\().2d, \t2\().2d, \e1\().2d // t3,4 r3,4 - fneg \t3\().4s, \t4\().4s - fneg \t4\().4s, \t5\().4s + ld1 { \t6\().16b }, [x5] - mov \o0\().s[3], \t3\().s[3] - mov \o1\().s[3], \t4\().s[3] + mov \o0\().d[1], \t4\().d[1] + mov \o1\().d[1], \t5\().d[1] zip1 \t1\().2d, \t0\().2d, \e0\().2d // t1,2 r1,2 zip1 \t3\().2d, \t2\().2d, \e1\().2d // t1,2 r1,2 @@ -148,10 +156,18 @@ endconst fsub \t2\().4s, \t3\().4s, \o1\().4s // a34 b32 fadd \t3\().4s, \t3\().4s, \o1\().4s // a12 b14 + // TODO: experiment with movs instead of tables here + tbl \o0\().16b, { \t4\().16b, \t5\().16b }, \t6\().16b // b1234 + tbl \o1\().16b, { \t2\().16b, \t3\().16b }, \t6\().16b // b1234 + zip1 \e0\().2d, \t5\().2d, \t4\().2d // a1234 - zip2 \o0\().2d, \t5\().2d, \t4\().2d // b1432 +// zip2 \o0\().2d, \t5\().2d, \t4\().2d // b1432 zip1 \e1\().2d, \t3\().2d, \t2\().2d // a1234 - zip2 \o1\().2d, \t3\().2d, \t2\().2d // b1432 +// zip2 \o1\().2d, \t3\().2d, \t2\().2d // b1432 +// rev64 \o0\().4s, \o0\().4s // b4123 +// rev64 \o1\().4s, \o1\().4s // b4123 +// ext \o0\().16b, \o0\().16b, \o0\().16b, #4 // b1234 +// ext \o1\().16b, \o1\().16b, \o1\().16b, #4 // b1234 .endm const tab_8pt, align=4 @@ -917,7 +933,6 @@ FFT32_FN ns_float, 1 .macro SR_TRANSFORM_DEF len, next=0 \len: - AARCH64_SIGN_LINK_REGISTER stp x20, x30, [sp, #-16]! mov w20, #(\len/4) mov x5, #((\len*4) - (\len/1)) @@ -927,7 +942,6 @@ FFT32_FN ns_float, 1 add x1, x1, x5 bl 32b ldp x20, x30, [sp], #16 - AARCH64_VALIDATE_LINK_REGISTER ldr w5, =(\len*6 + \len/2) sub x1, x1, x5 @@ -1063,7 +1077,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 b.gt 128f ret 128: - AARCH64_SIGN_LINK_REGISTER stp x20, x30, [sp, #-16]! mov w20, #32 add x1, x1, #16*32 @@ -1071,7 +1084,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 add x1, x1, #8*32 bl 32b ldp x20, x30, [sp], #16 - AARCH64_VALIDATE_LINK_REGISTER sub x1, x1, #24*32 SETUP_SR_RECOMB 128, x7, x8, x9 @@ -1085,7 +1097,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 b.gt 256f ret 256: - AARCH64_SIGN_LINK_REGISTER stp x20, x30, [sp, #-16]! mov w20, #64 add x1, x1, #32*32 @@ -1093,7 +1104,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 add x1, x1, #16*32 bl 32b ldp x20, x30, [sp], #16 - AARCH64_VALIDATE_LINK_REGISTER sub x1, x1, #48*32 SETUP_SR_RECOMB 256, x7, x8, x9 @@ -1108,7 +1118,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 b.gt 512f ret 512: - AARCH64_SIGN_LINK_REGISTER stp x20, x30, [sp, #-16]! mov w20, #128 add x1, x1, #64*32 @@ -1116,7 +1125,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 add x1, x1, #32*32 bl 32b ldp x20, x30, [sp], #16 - AARCH64_VALIDATE_LINK_REGISTER sub x1, x1, #96*32 SETUP_SR_RECOMB 512, x7, x8, x9 @@ -1136,7 +1144,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 ret 1024: - AARCH64_SIGN_LINK_REGISTER stp x20, x30, [sp, #-16]! mov w20, #256 add x1, x1, #96*32 @@ -1144,7 +1151,6 @@ function ff_tx_fft_sr_\name\()_neon, export=1 add x1, x1, #64*32 bl 32b ldp x20, x30, [sp], #16 - AARCH64_VALIDATE_LINK_REGISTER mov x5, #192*32 sub x1, x1, x5 diff --git a/icecat/media/ffvpx/libavutil/arm/cpu.c b/icecat/media/ffvpx/libavutil/arm/cpu.c index 2e2977efc9..b84882005a 100644 --- a/icecat/media/ffvpx/libavutil/arm/cpu.c +++ b/icecat/media/ffvpx/libavutil/arm/cpu.c @@ -31,32 +31,30 @@ CORE_FLAG(VFPV3) | \ CORE_FLAG(NEON)) -#if defined __linux__ || defined __ANDROID__ || HAVE_ELF_AUX_INFO +#if defined __linux__ || defined __ANDROID__ #include #include #include #include "libavutil/avstring.h" -#if HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO +#if HAVE_GETAUXVAL #include #endif -#ifndef AT_HWCAP #define AT_HWCAP 16 -#endif /* Relevant HWCAP values from kernel headers */ -#define HWCAP_ARM_VFP (1 << 6) -#define HWCAP_ARM_EDSP (1 << 7) -#define HWCAP_ARM_THUMBEE (1 << 11) -#define HWCAP_ARM_NEON (1 << 12) -#define HWCAP_ARM_VFPv3 (1 << 13) -#define HWCAP_ARM_TLS (1 << 15) +#define HWCAP_VFP (1 << 6) +#define HWCAP_EDSP (1 << 7) +#define HWCAP_THUMBEE (1 << 11) +#define HWCAP_NEON (1 << 12) +#define HWCAP_VFPv3 (1 << 13) +#define HWCAP_TLS (1 << 15) static int get_auxval(uint32_t *hwcap) { -#if HAVE_GETAUXVAL || HAVE_ELF_AUX_INFO +#if HAVE_GETAUXVAL unsigned long ret = ff_getauxval(AT_HWCAP); if (ret == 0) return -1; @@ -67,7 +65,6 @@ static int get_auxval(uint32_t *hwcap) #endif } -#if defined __linux__ || defined __ANDROID__ static int get_hwcap(uint32_t *hwcap) { struct { uint32_t a_type; uint32_t a_val; } auxv; @@ -101,26 +98,25 @@ static int get_cpuinfo(uint32_t *hwcap) while (fgets(buf, sizeof(buf), f)) { if (av_strstart(buf, "Features", NULL)) { if (strstr(buf, " edsp ")) - *hwcap |= HWCAP_ARM_EDSP; + *hwcap |= HWCAP_EDSP; if (strstr(buf, " tls ")) - *hwcap |= HWCAP_ARM_TLS; + *hwcap |= HWCAP_TLS; if (strstr(buf, " thumbee ")) - *hwcap |= HWCAP_ARM_THUMBEE; + *hwcap |= HWCAP_THUMBEE; if (strstr(buf, " vfp ")) - *hwcap |= HWCAP_ARM_VFP; + *hwcap |= HWCAP_VFP; if (strstr(buf, " vfpv3 ")) - *hwcap |= HWCAP_ARM_VFPv3; + *hwcap |= HWCAP_VFPv3; if (strstr(buf, " neon ") || strstr(buf, " asimd ")) - *hwcap |= HWCAP_ARM_NEON; + *hwcap |= HWCAP_NEON; if (strstr(buf, " fp ")) // Listed on 64 bit ARMv8 kernels - *hwcap |= HWCAP_ARM_VFP | HWCAP_ARM_VFPv3; + *hwcap |= HWCAP_VFP | HWCAP_VFPv3; break; } } fclose(f); return 0; } -#endif int ff_get_cpu_flags_arm(void) { @@ -128,14 +124,12 @@ int ff_get_cpu_flags_arm(void) uint32_t hwcap; if (get_auxval(&hwcap) < 0) -#if defined __linux__ || defined __ANDROID__ if (get_hwcap(&hwcap) < 0) if (get_cpuinfo(&hwcap) < 0) -#endif return flags; #define check_cap(cap, flag) do { \ - if (hwcap & HWCAP_ARM_ ## cap) \ + if (hwcap & HWCAP_ ## cap) \ flags |= AV_CPU_FLAG_ ## flag; \ } while (0) diff --git a/icecat/media/ffvpx/libavutil/arm/timer.h b/icecat/media/ffvpx/libavutil/arm/timer.h index 08e4095d84..caf23e2a5a 100644 --- a/icecat/media/ffvpx/libavutil/arm/timer.h +++ b/icecat/media/ffvpx/libavutil/arm/timer.h @@ -30,7 +30,7 @@ #define AV_READ_TIME mach_absolute_time -#elif HAVE_INLINE_ASM && defined(__ARM_ARCH_7A__) && !defined(__ANDROID__) +#elif HAVE_INLINE_ASM && defined(__ARM_ARCH_7A__) #define AV_READ_TIME read_time diff --git a/icecat/media/ffvpx/libavutil/attributes.h b/icecat/media/ffvpx/libavutil/attributes.h index c9c74c28b6..04c615c952 100644 --- a/icecat/media/ffvpx/libavutil/attributes.h +++ b/icecat/media/ffvpx/libavutil/attributes.h @@ -40,27 +40,8 @@ # define AV_HAS_BUILTIN(x) 0 #endif -#ifdef __has_attribute -# define AV_HAS_ATTRIBUTE(x) __has_attribute(x) -#else -# define AV_HAS_ATTRIBUTE(x) 0 -#endif - -#if defined(__cplusplus) && \ - defined(__has_cpp_attribute) && \ - __cplusplus >= 201103L -# define AV_HAS_STD_ATTRIBUTE(x) __has_cpp_attribute(x) -#elif !defined(__cplusplus) && \ - defined(__has_c_attribute) && \ - defined(__STDC_VERSION__) && \ - __STDC_VERSION__ >= 202311L -# define AV_HAS_STD_ATTRIBUTE(x) __has_c_attribute(x) -#else -# define AV_HAS_STD_ATTRIBUTE(x) 0 -#endif - #ifndef av_always_inline -#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) +#if AV_GCC_VERSION_AT_LEAST(3,1) # define av_always_inline __attribute__((always_inline)) inline #elif defined(_MSC_VER) # define av_always_inline __forceinline @@ -77,15 +58,13 @@ #endif #endif -#if AV_HAS_STD_ATTRIBUTE(nodiscard) -# define av_warn_unused_result [[nodiscard]] -#elif AV_GCC_VERSION_AT_LEAST(3,4) || defined(__clang__) +#if AV_GCC_VERSION_AT_LEAST(3,4) # define av_warn_unused_result __attribute__((warn_unused_result)) #else # define av_warn_unused_result #endif -#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) +#if AV_GCC_VERSION_AT_LEAST(3,1) # define av_noinline __attribute__((noinline)) #elif defined(_MSC_VER) # define av_noinline __declspec(noinline) @@ -111,15 +90,13 @@ # define av_cold #endif -#if (AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__clang__ )) || AV_HAS_ATTRIBUTE(flatten) +#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__) # define av_flatten __attribute__((flatten)) #else # define av_flatten #endif -#if AV_HAS_STD_ATTRIBUTE(deprecated) -# define attribute_deprecated [[deprecated]] -#elif AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) +#if AV_GCC_VERSION_AT_LEAST(3,1) # define attribute_deprecated __attribute__((deprecated)) #elif defined(_MSC_VER) # define attribute_deprecated __declspec(deprecated) @@ -150,9 +127,7 @@ #endif #endif -#if AV_HAS_STD_ATTRIBUTE(maybe_unused) -# define av_unused [[maybe_unused]] -#elif defined(__GNUC__) || defined(__clang__) +#if defined(__GNUC__) || defined(__clang__) # define av_unused __attribute__((unused)) #else # define av_unused @@ -183,42 +158,13 @@ #if defined(__GNUC__) || defined(__clang__) # define av_builtin_constant_p __builtin_constant_p +# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) #else # define av_builtin_constant_p(x) 0 -#endif - -// for __MINGW_PRINTF_FORMAT and __MINGW_SCANF_FORMAT -#ifdef __MINGW32__ -# include -#endif - -#ifdef __MINGW_PRINTF_FORMAT -# define AV_PRINTF_FMT __MINGW_PRINTF_FORMAT -#elif AV_HAS_ATTRIBUTE(format) -# define AV_PRINTF_FMT __printf__ -#endif - -#ifdef __MINGW_SCANF_FORMAT -# define AV_SCANF_FMT __MINGW_SCANF_FORMAT -#elif AV_HAS_ATTRIBUTE(format) -# define AV_SCANF_FMT __scanf__ -#endif - -#ifdef AV_PRINTF_FMT -# define av_printf_format(fmtpos, attrpos) __attribute__((format(AV_PRINTF_FMT, fmtpos, attrpos))) -#else # define av_printf_format(fmtpos, attrpos) #endif -#ifdef AV_SCANF_FMT -# define av_scanf_format(fmtpos, attrpos) __attribute__((format(AV_SCANF_FMT, fmtpos, attrpos))) -#else -# define av_scanf_format(fmtpos, attrpos) -#endif - -#if AV_HAS_STD_ATTRIBUTE(noreturn) -# define av_noreturn [[noreturn]] -#elif AV_GCC_VERSION_AT_LEAST(2,5) || defined(__clang__) +#if AV_GCC_VERSION_AT_LEAST(2,5) || defined(__clang__) # define av_noreturn __attribute__((noreturn)) #else # define av_noreturn diff --git a/icecat/media/ffvpx/libavutil/attributes_internal.h b/icecat/media/ffvpx/libavutil/attributes_internal.h index 15d89120ad..3df1ee6af3 100644 --- a/icecat/media/ffvpx/libavutil/attributes_internal.h +++ b/icecat/media/ffvpx/libavutil/attributes_internal.h @@ -31,15 +31,4 @@ # define FF_VISIBILITY_POP_HIDDEN #endif -#define EXTERN extern attribute_visibility_hidden - -#if (AV_HAS_ATTRIBUTE(nonstring) && (AV_GCC_VERSION_AT_LEAST(15,1) || defined(__clang__))) -// Attribute to mark a variable initialized via a string literal as not -// containing string data to suppress warnings about unterminated strings -// in situations like char fourcc[4] = "TALB". -#define attribute_nonstring __attribute__((nonstring)) -#else -#define attribute_nonstring -#endif - #endif /* AVUTIL_ATTRIBUTES_INTERNAL_H */ diff --git a/icecat/media/ffvpx/libavutil/avassert.h b/icecat/media/ffvpx/libavutil/avassert.h index e316a3c90d..1895fb7551 100644 --- a/icecat/media/ffvpx/libavutil/avassert.h +++ b/icecat/media/ffvpx/libavutil/avassert.h @@ -31,10 +31,8 @@ #ifdef HAVE_AV_CONFIG_H # include "config.h" #endif -#include "attributes.h" #include "log.h" #include "macros.h" -#include "version.h" /** * assert() equivalent, that is always enabled. @@ -64,62 +62,17 @@ */ #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 #define av_assert2(cond) av_assert0(cond) -#else -#define av_assert2(cond) ((void)0) -#endif - -#if FF_API_ASSERT_FPU -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 #define av_assert2_fpu() av_assert0_fpu() #else +#define av_assert2(cond) ((void)0) #define av_assert2_fpu() ((void)0) #endif + /** * Assert that floating point operations can be executed. * * This will av_assert0() that the cpu is not in MMX state on X86 - * @deprecated without replacement */ -attribute_deprecated void av_assert0_fpu(void); -#endif - -/** - * Asserts that are used as compiler optimization hints depending - * upon ASSERT_LEVEL and NBDEBUG. - * - * Undefined behaviour occurs if execution reaches a point marked - * with av_unreachable() or if a condition used with av_assume() - * is false. - * - * The condition used with av_assume() should not have side-effects - * and should be visible to the compiler. - */ -#if defined(ASSERT_LEVEL) ? ASSERT_LEVEL > 0 : !defined(HAVE_AV_CONFIG_H) && !defined(NDEBUG) -#define av_unreachable(msg) \ -do { \ - av_log(NULL, AV_LOG_PANIC, \ - "Reached supposedly unreachable code at %s:%d: %s\n", \ - __FILE__, __LINE__, msg); \ - abort(); \ -} while (0) -#define av_assume(cond) av_assert0(cond) -#else -#if AV_GCC_VERSION_AT_LEAST(4, 5) || AV_HAS_BUILTIN(__builtin_unreachable) -#define av_unreachable(msg) __builtin_unreachable() -#elif defined(_MSC_VER) -#define av_unreachable(msg) __assume(0) -#elif __STDC_VERSION__ >= 202311L -#include -#define av_unreachable(msg) unreachable() -#else -#define av_unreachable(msg) ((void)0) -#endif - -#define av_assume(cond) do { \ - if (!(cond)) \ - av_unreachable(); \ -} while (0) -#endif #endif /* AVUTIL_AVASSERT_H */ diff --git a/icecat/media/ffvpx/libavutil/avconfig.h b/icecat/media/ffvpx/libavutil/avconfig.h index 8558b35027..c289fbb551 100644 --- a/icecat/media/ffvpx/libavutil/avconfig.h +++ b/icecat/media/ffvpx/libavutil/avconfig.h @@ -2,5 +2,5 @@ #ifndef AVUTIL_AVCONFIG_H #define AVUTIL_AVCONFIG_H #define AV_HAVE_BIGENDIAN 0 -#define AV_HAVE_FAST_UNALIGNED 0 +#define AV_HAVE_FAST_UNALIGNED 1 #endif /* AVUTIL_AVCONFIG_H */ diff --git a/icecat/media/ffvpx/libavutil/avstring.c b/icecat/media/ffvpx/libavutil/avstring.c index 281c5cdc88..2071dd36a5 100644 --- a/icecat/media/ffvpx/libavutil/avstring.c +++ b/icecat/media/ffvpx/libavutil/avstring.c @@ -142,7 +142,7 @@ end: char *av_get_token(const char **buf, const char *term) { - char *out = av_realloc(NULL, strlen(*buf) + 1); + char *out = av_malloc(strlen(*buf) + 1); char *ret = out, *end = out; const char *p = *buf; if (!out) @@ -172,8 +172,7 @@ char *av_get_token(const char **buf, const char *term) *buf = p; - char *small_ret = av_realloc(ret, out - ret + 2); - return small_ret ? small_ret : ret; + return ret; } char *av_strtok(char *s, const char *delim, char **saveptr) @@ -453,12 +452,10 @@ int av_match_list(const char *name, const char *list, char separator) if (k && (!p[k] || p[k] == separator)) return 1; q = strchr(q, separator); - if(q) - q++; + q += !!q; } p = strchr(p, separator); - if (p) - p++; + p += !!p; } return 0; diff --git a/icecat/media/ffvpx/libavutil/avstring.h b/icecat/media/ffvpx/libavutil/avstring.h index 17f7b03db5..fc095349d2 100644 --- a/icecat/media/ffvpx/libavutil/avstring.h +++ b/icecat/media/ffvpx/libavutil/avstring.h @@ -419,7 +419,7 @@ int av_match_list(const char *name, const char *list, char separator); * See libc sscanf manual for more information. * Locale-independent sscanf implementation. */ -int av_sscanf(const char *string, const char *format, ...) av_scanf_format(2, 3); +int av_sscanf(const char *string, const char *format, ...); /** * @} diff --git a/icecat/media/ffvpx/libavutil/avutil.h b/icecat/media/ffvpx/libavutil/avutil.h index c8ae114ab6..ee709fbb2a 100644 --- a/icecat/media/ffvpx/libavutil/avutil.h +++ b/icecat/media/ffvpx/libavutil/avutil.h @@ -41,6 +41,7 @@ * @li @ref lavd "libavdevice" special devices muxing/demuxing library * @li @ref lavu "libavutil" common utility library * @li @ref lswr "libswresample" audio resampling, format conversion and mixing + * @li @ref lpp "libpostproc" post processing library * @li @ref libsws "libswscale" color conversion and scaling library * * @section ffmpeg_versioning Versioning and compatibility diff --git a/icecat/media/ffvpx/libavutil/avutil.symbols b/icecat/media/ffvpx/libavutil/avutil.symbols index eee664690f..c88050db23 100644 --- a/icecat/media/ffvpx/libavutil/avutil.symbols +++ b/icecat/media/ffvpx/libavutil/avutil.symbols @@ -1,6 +1,5 @@ av_add_q av_add_stable -av_alpha_mode_name av_append_path_component av_asprintf av_basename @@ -73,9 +72,8 @@ av_dict_set_int av_dirname av_div_q #ifndef MOZ_FFVPX_AUDIOONLY -av_dynamic_hdr_plus_create_side_data av_dynamic_hdr_plus_from_t35 -av_dynamic_hdr_plus_to_t35 +av_dynamic_hdr_plus_create_side_data #endif av_dynarray2_add av_dynarray_add @@ -111,7 +109,6 @@ av_frame_copy av_frame_copy_props av_frame_side_data_free av_frame_side_data_get_c -av_frame_side_data_new av_frame_free av_frame_get_buffer av_frame_get_plane_buffer @@ -311,6 +308,7 @@ avpriv_alloc_fixed_dsp avpriv_float_dsp_alloc avpriv_report_missing_feature avpriv_request_sample +avpriv_scalarproduct_float_c avpriv_set_systematic_pal2 #if defined(XP_WIN) && !defined(_ARM64_) avpriv_emms_asm diff --git a/icecat/media/ffvpx/libavutil/bprint.c b/icecat/media/ffvpx/libavutil/bprint.c index 11e0f08774..4e9571715c 100644 --- a/icecat/media/ffvpx/libavutil/bprint.c +++ b/icecat/media/ffvpx/libavutil/bprint.c @@ -96,6 +96,29 @@ void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size) *buf->str = 0; } +void av_bprintf(AVBPrint *buf, const char *fmt, ...) +{ + unsigned room; + char *dst; + va_list vl; + int extra_len; + + while (1) { + room = av_bprint_room(buf); + dst = room ? buf->str + buf->len : NULL; + va_start(vl, fmt); + extra_len = vsnprintf(dst, room, fmt, vl); + va_end(vl); + if (extra_len <= 0) + return; + if (extra_len < room) + break; + if (av_bprint_alloc(buf, extra_len)) + break; + } + av_bprint_grow(buf, extra_len); +} + void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg) { unsigned room; @@ -119,14 +142,6 @@ void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg) av_bprint_grow(buf, extra_len); } -void av_bprintf(AVBPrint *buf, const char *fmt, ...) -{ - va_list vl; - va_start(vl, fmt); - av_vbprintf(buf, fmt, vl); - va_end(vl); -} - void av_bprint_chars(AVBPrint *buf, char c, unsigned n) { unsigned room, real_n; @@ -167,7 +182,6 @@ void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm) { unsigned room; size_t l; - size_t fmt_len = strlen(fmt); if (!*fmt) return; @@ -175,18 +189,9 @@ void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm) room = av_bprint_room(buf); if (room && (l = strftime(buf->str + buf->len, room, fmt, tm))) break; - - /* Due to the limitations of strftime() it is not possible to know if - * the output buffer is too small or the output is empty. - * However, a 256x output space requirement compared to the format - * string length is so unlikely we can safely assume empty output. This - * allows supporting possibly empty format strings like "%p". */ - if (room >> 8 > fmt_len) - break; - /* strftime does not tell us how much room it would need: let us retry with twice as much until the buffer is large enough */ - room = !room ? fmt_len + 1 : + room = !room ? strlen(fmt) + 1 : room <= INT_MAX / 2 ? room * 2 : INT_MAX; if (av_bprint_alloc(buf, room)) { /* impossible to grow, try to manage something useful anyway */ diff --git a/icecat/media/ffvpx/libavutil/bswap.h b/icecat/media/ffvpx/libavutil/bswap.h index c1e6591ce0..f53e5768ad 100644 --- a/icecat/media/ffvpx/libavutil/bswap.h +++ b/icecat/media/ffvpx/libavutil/bswap.h @@ -68,7 +68,7 @@ static av_always_inline av_const uint32_t av_bswap32(uint32_t x) #ifndef av_bswap64 static inline uint64_t av_const av_bswap64(uint64_t x) { - return (uint64_t)av_bswap32((uint32_t)x) << 32 | av_bswap32((uint32_t)(x >> 32)); + return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32); } #endif diff --git a/icecat/media/ffvpx/libavutil/channel_layout.c b/icecat/media/ffvpx/libavutil/channel_layout.c index 2d7f70bf94..cfa8e05d56 100644 --- a/icecat/media/ffvpx/libavutil/channel_layout.c +++ b/icecat/media/ffvpx/libavutil/channel_layout.c @@ -271,7 +271,7 @@ static int parse_channel_list(AVChannelLayout *ch_layout, const char *str) while (*str) { char *channel, *chname; - ret = av_opt_get_key_value(&str, "@", "+", AV_OPT_FLAG_IMPLICIT_KEY, &channel, &chname); + int ret = av_opt_get_key_value(&str, "@", "+", AV_OPT_FLAG_IMPLICIT_KEY, &channel, &chname); if (ret < 0) { av_freep(&map); return ret; @@ -345,7 +345,7 @@ int av_channel_layout_from_string(AVChannelLayout *channel_layout, channel_layout->nb_channels = (order + 1) * (order + 1); if (*endptr) { - ret = av_channel_layout_from_string(&extra, endptr + 1); + int ret = av_channel_layout_from_string(&extra, endptr + 1); if (ret < 0) return ret; if (extra.nb_channels >= INT_MAX - channel_layout->nb_channels) { @@ -953,10 +953,10 @@ int av_channel_layout_retype(AVChannelLayout *channel_layout, enum AVChannelOrde if (channel_layout->order == AV_CHANNEL_ORDER_CUSTOM) { int64_t mask; int nb_channels = channel_layout->nb_channels; - int amb_order = av_channel_layout_ambisonic_order(channel_layout); - if (amb_order < 0) + int order = av_channel_layout_ambisonic_order(channel_layout); + if (order < 0) return AVERROR(ENOSYS); - mask = masked_description(channel_layout, (amb_order + 1) * (amb_order + 1)); + mask = masked_description(channel_layout, (order + 1) * (order + 1)); if (mask < 0) return AVERROR(ENOSYS); lossy = has_channel_names(channel_layout); diff --git a/icecat/media/ffvpx/libavutil/channel_layout.h b/icecat/media/ffvpx/libavutil/channel_layout.h index 5ad2d5ed98..793df44c12 100644 --- a/icecat/media/ffvpx/libavutil/channel_layout.h +++ b/icecat/media/ffvpx/libavutil/channel_layout.h @@ -45,7 +45,7 @@ */ enum AVChannel { - /// Invalid channel index + ///< Invalid channel index AV_CHAN_NONE = -1, AV_CHAN_FRONT_LEFT, AV_CHAN_FRONT_RIGHT, @@ -307,7 +307,7 @@ typedef struct AVChannelCustom { * - with a constructor function, such as av_channel_layout_default(), * av_channel_layout_from_mask() or av_channel_layout_from_string(). * - * The channel layout must be uninitialized with av_channel_layout_uninit() + * The channel layout must be unitialized with av_channel_layout_uninit() * * Copying an AVChannelLayout via assigning is forbidden, * av_channel_layout_copy() must be used instead (and its return value should @@ -365,7 +365,7 @@ typedef struct AVChannelLayout { * * map[i].name may be filled with a 0-terminated string, in which case * it will be used for the purpose of identifying the channel with the - * convenience functions below. Otherwise it must be zeroed. + * convenience functions below. Otherise it must be zeroed. */ AVChannelCustom *map; } u; diff --git a/icecat/media/ffvpx/libavutil/common.h b/icecat/media/ffvpx/libavutil/common.h index bf23aa50b0..3b830daf30 100644 --- a/icecat/media/ffvpx/libavutil/common.h +++ b/icecat/media/ffvpx/libavutil/common.h @@ -486,13 +486,13 @@ static av_always_inline av_const int av_parity_c(uint32_t v) * to prevent undefined results. */ #define GET_UTF8(val, GET_BYTE, ERROR)\ - val= (uint8_t)(GET_BYTE);\ + val= (GET_BYTE);\ {\ uint32_t top = (val & 128) >> 1;\ if ((val & 0xc0) == 0x80 || val >= 0xFE)\ {ERROR}\ while (val & top) {\ - unsigned int tmp = (uint8_t)(GET_BYTE) - 128;\ + unsigned int tmp = (GET_BYTE) - 128;\ if(tmp>>6)\ {ERROR}\ val= (val<<6) + tmp;\ @@ -511,11 +511,11 @@ static av_always_inline av_const int av_parity_c(uint32_t v) * typically a goto statement. */ #define GET_UTF16(val, GET_16BIT, ERROR)\ - val = (uint16_t)(GET_16BIT);\ + val = (GET_16BIT);\ {\ unsigned int hi = val - 0xD800;\ if (hi < 0x800) {\ - val = (uint16_t)(GET_16BIT) - 0xDC00;\ + val = (GET_16BIT) - 0xDC00;\ if (val > 0x3FFU || hi > 0x3FFU)\ {ERROR}\ val += (hi<<10) + 0x10000;\ diff --git a/icecat/media/ffvpx/libavutil/cpu.c b/icecat/media/ffvpx/libavutil/cpu.c index 00029f81ca..6a6ec31eff 100644 --- a/icecat/media/ffvpx/libavutil/cpu.c +++ b/icecat/media/ffvpx/libavutil/cpu.c @@ -149,7 +149,6 @@ int av_parse_cpu_caps(unsigned *flags, const char *s) { "3dnowext", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_3DNOWEXT }, .unit = "flags" }, { "cmov", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_CMOV }, .unit = "flags" }, { "aesni", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_AESNI }, .unit = "flags" }, - { "clmul", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_CLMUL }, .unit = "flags" }, { "avx512" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_AVX512 }, .unit = "flags" }, { "avx512icl", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_AVX512ICL }, .unit = "flags" }, { "slowgather", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_SLOW_GATHER }, .unit = "flags" }, @@ -187,12 +186,6 @@ int av_parse_cpu_caps(unsigned *flags, const char *s) { "i8mm", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_I8MM }, .unit = "flags" }, { "sve", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_SVE }, .unit = "flags" }, { "sve2", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_SVE2 }, .unit = "flags" }, - { "sme", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_SME }, .unit = "flags" }, - { "crc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARM_CRC }, .unit = "flags" }, - { "sme_i16i64", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_SME_I16I64 }, .unit = "flags" }, - { "sme2", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_SME2 }, .unit = "flags" }, - { "pmull", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_PMULL }, .unit = "flags" }, - { "eor3", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_EOR3 }, .unit = "flags" }, #elif ARCH_MIPS { "mmi", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MMI }, .unit = "flags" }, { "msa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MSA }, .unit = "flags" }, @@ -305,7 +298,6 @@ size_t av_cpu_max_align(void) return 8; } -#if !ARCH_X86 unsigned long ff_getauxval(unsigned long type) { #if HAVE_GETAUXVAL @@ -322,4 +314,3 @@ unsigned long ff_getauxval(unsigned long type) return 0; #endif } -#endif diff --git a/icecat/media/ffvpx/libavutil/cpu.h b/icecat/media/ffvpx/libavutil/cpu.h index 07076dafb8..5ef5da58eb 100644 --- a/icecat/media/ffvpx/libavutil/cpu.h +++ b/icecat/media/ffvpx/libavutil/cpu.h @@ -24,9 +24,7 @@ #include #include "version.h" -#if FF_API_CPU_FLAG_FORCE -#define AV_CPU_FLAG_FORCE 0x80000000 /* @deprecated, should not be used */ -#endif +#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ /* lower 16 bits - CPU features */ #define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX @@ -47,7 +45,6 @@ #define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions #define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions #define AV_CPU_FLAG_AESNI 0x80000 ///< Advanced Encryption Standard functions -#define AV_CPU_FLAG_CLMUL 0x400000 ///< Carry-less Multiplication instruction #define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used #define AV_CPU_FLAG_AVXSLOW 0x8000000 ///< AVX supported, but slow when using YMM registers (e.g. Bulldozer) #define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions @@ -77,13 +74,7 @@ #define AV_CPU_FLAG_I8MM (1 << 9) #define AV_CPU_FLAG_SVE (1 <<10) #define AV_CPU_FLAG_SVE2 (1 <<11) -#define AV_CPU_FLAG_SME (1 <<12) -#define AV_CPU_FLAG_ARM_CRC (1 <<13) -#define AV_CPU_FLAG_SME2 (1 <<14) -#define AV_CPU_FLAG_SME_I16I64 (1 <<15) #define AV_CPU_FLAG_SETEND (1 <<16) -#define AV_CPU_FLAG_PMULL (1 <<17) -#define AV_CPU_FLAG_EOR3 (1 <<18) #define AV_CPU_FLAG_MMI (1 << 0) #define AV_CPU_FLAG_MSA (1 << 1) diff --git a/icecat/media/ffvpx/libavutil/csp.h b/icecat/media/ffvpx/libavutil/csp.h index 9d75ccbb64..9b74c631d2 100644 --- a/icecat/media/ffvpx/libavutil/csp.h +++ b/icecat/media/ffvpx/libavutil/csp.h @@ -114,7 +114,7 @@ const AVColorPrimariesDesc *av_csp_primaries_desc_from_id(enum AVColorPrimaries * @see enum AVColorPrimaries * @param prm A description of the colorspace gamut * @return The enum constant associated with this gamut, or - * AVCOL_PRI_UNSPECIFIED if no clear match can be identified. + * AVCOL_PRI_UNSPECIFIED if no clear match can be idenitified. */ enum AVColorPrimaries av_csp_primaries_id_from_desc(const AVColorPrimariesDesc *prm); @@ -133,22 +133,6 @@ enum AVColorPrimaries av_csp_primaries_id_from_desc(const AVColorPrimariesDesc * */ double av_csp_approximate_trc_gamma(enum AVColorTransferCharacteristic trc); -/** - * Determine a suitable EOTF 'gamma' value to match the supplied - * AVColorTransferCharacteristic. - * - * This function returns the gamma value (exponent) for a simple pure power - * function approximation of the supplied AVColorTransferCharacteristic, or 0. - * if no reasonable approximation exists. - * - * EOTF(v) = (L_w - L_b) * v^gamma + L_b - * - * @return Will return an approximation to the simple gamma function matching - * the supplied Transfer Characteristic EOTF, Will return 0.0 for any - * we cannot reasonably match against. - */ -double av_csp_approximate_eotf_gamma(enum AVColorTransferCharacteristic trc); - /** * Determine the function needed to apply the given * AVColorTransferCharacteristic to linear input. diff --git a/icecat/media/ffvpx/libavutil/dict.c b/icecat/media/ffvpx/libavutil/dict.c index fafb454fd3..6fb09399ba 100644 --- a/icecat/media/ffvpx/libavutil/dict.c +++ b/icecat/media/ffvpx/libavutil/dict.c @@ -25,8 +25,10 @@ #include "avassert.h" #include "avstring.h" #include "dict.h" +#include "dict_internal.h" #include "error.h" #include "mem.h" +#include "time_internal.h" #include "bprint.h" struct AVDictionary { @@ -99,28 +101,16 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value, err = AVERROR(EINVAL); goto err_out; } + if (!(flags & AV_DICT_MULTIKEY)) { + tag = av_dict_get(m, key, NULL, flags); + } if (flags & AV_DICT_DONT_STRDUP_KEY) copy_key = (void *)key; else copy_key = av_strdup(key); - if (!copy_key || (value && !copy_value)) - goto enomem; - - if (!(flags & AV_DICT_MULTIKEY)) { - tag = av_dict_get(m, key, NULL, flags); - } else if (flags & AV_DICT_DEDUP) { - while ((tag = av_dict_get(m, key, tag, flags))) { - if ((!value && !tag->value) || - (value && tag->value && !strcmp(value, tag->value))) { - av_free(copy_key); - av_free(copy_value); - return 0; - } - } - } if (!m) m = *pm = av_mallocz(sizeof(*m)); - if (!m) + if (!m || !copy_key || (value && !copy_value)) goto enomem; if (tag) { @@ -284,3 +274,19 @@ int av_dict_get_string(const AVDictionary *m, char **buffer, } return av_bprint_finalize(&bprint, buffer); } + +int avpriv_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp) +{ + time_t seconds = timestamp / 1000000; + struct tm *ptm, tmbuf; + ptm = gmtime_r(&seconds, &tmbuf); + if (ptm) { + char buf[32]; + if (!strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", ptm)) + return AVERROR_EXTERNAL; + av_strlcatf(buf, sizeof(buf), ".%06dZ", (int)(timestamp % 1000000)); + return av_dict_set(dict, key, buf, 0); + } else { + return AVERROR_EXTERNAL; + } +} diff --git a/icecat/media/ffvpx/libavutil/dict.h b/icecat/media/ffvpx/libavutil/dict.h index 93c7cbf128..713c9e361a 100644 --- a/icecat/media/ffvpx/libavutil/dict.h +++ b/icecat/media/ffvpx/libavutil/dict.h @@ -82,7 +82,6 @@ #define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no delimiter is added, the strings are simply concatenated. */ #define AV_DICT_MULTIKEY 64 /**< Allow to store several equal keys in the dictionary */ -#define AV_DICT_DEDUP 128 /**< If inserting a value that already exists for a key, do nothing. Only relevant with AV_DICT_MULTIKEY. */ /** * @} */ @@ -225,7 +224,7 @@ void av_dict_free(AVDictionary **m); * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same. * * @param[in] m The dictionary - * @param[out] buffer Pointer to buffer that will be allocated with string containing entries. + * @param[out] buffer Pointer to buffer that will be allocated with string containg entries. * Buffer must be freed by the caller when is no longer needed. * @param[in] key_val_sep Character used to separate key from value * @param[in] pairs_sep Character used to separate two pairs from each other diff --git a/icecat/media/ffvpx/libavutil/emms.h b/icecat/media/ffvpx/libavutil/emms.h index 2b9a456223..4ec0127457 100644 --- a/icecat/media/ffvpx/libavutil/emms.h +++ b/icecat/media/ffvpx/libavutil/emms.h @@ -19,12 +19,8 @@ #ifndef AVUTIL_EMMS_H #define AVUTIL_EMMS_H -#include -#include - #include "config.h" #include "libavutil/attributes.h" -#include "libavutil/log.h" #if ARCH_X86 @@ -54,28 +50,6 @@ static av_always_inline void emms_c(void) #endif __asm__ volatile ("emms" ::: "memory"); } - -static inline void ff_assert0_fpu(const char *file, int line_number) -{ - uint16_t state[14]; - __asm__ volatile ( - "fstenv %0 \n\t" - : "+m" (state) - : - : "memory" - ); - if ((state[4] & 3) != 3) { - emms_c(); - av_log(NULL, AV_LOG_PANIC, - "Invalid floating point state assertion " - "triggered at line %u in file %s\n", - line_number, file); - abort(); - } -} - -#define ff_assert0_fpu() ff_assert0_fpu(__FILE__, __LINE__) - #elif HAVE_MMX && HAVE_MM_EMPTY # include # define emms_c _mm_empty @@ -89,14 +63,4 @@ static inline void ff_assert0_fpu(const char *file, int line_number) # define emms_c() do {} while(0) #endif -#ifndef ff_assert0_fpu -#define ff_assert0_fpu() ((void)0) -#endif - -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 1 -#define ff_assert1_fpu() ff_assert0_fpu() -#else -#define ff_assert1_fpu() ((void)0) -#endif - #endif /* AVUTIL_EMMS_H */ diff --git a/icecat/media/ffvpx/libavutil/error.c b/icecat/media/ffvpx/libavutil/error.c index 2c9f0028bd..90bab7b9d3 100644 --- a/icecat/media/ffvpx/libavutil/error.c +++ b/icecat/media/ffvpx/libavutil/error.c @@ -25,127 +25,109 @@ #include "error.h" #include "macros.h" -#define AVERROR_INPUT_AND_OUTPUT_CHANGED (AVERROR_INPUT_CHANGED | AVERROR_OUTPUT_CHANGED) - -#define AVERROR_LIST(E, E2) \ - E(BSF_NOT_FOUND, "Bitstream filter not found") \ - E(BUG, "Internal bug, should not have happened") \ - E2(BUG2, BUG, "Internal bug, should not have happened") \ - E(BUFFER_TOO_SMALL, "Buffer too small") \ - E(DECODER_NOT_FOUND, "Decoder not found") \ - E(DEMUXER_NOT_FOUND, "Demuxer not found") \ - E(ENCODER_NOT_FOUND, "Encoder not found") \ - E(EOF, "End of file") \ - E(EXIT, "Immediate exit requested") \ - E(EXTERNAL, "Generic error in an external library") \ - E(FILTER_NOT_FOUND, "Filter not found") \ - E(INPUT_CHANGED, "Input changed") \ - E(INVALIDDATA, "Invalid data found when processing input") \ - E(MUXER_NOT_FOUND, "Muxer not found") \ - E(OPTION_NOT_FOUND, "Option not found") \ - E(OUTPUT_CHANGED, "Output changed") \ - E(PATCHWELCOME, "Not yet implemented in FFmpeg, patches welcome") \ - E(PROTOCOL_NOT_FOUND, "Protocol not found") \ - E(STREAM_NOT_FOUND, "Stream not found") \ - E(UNKNOWN, "Unknown error occurred") \ - E(EXPERIMENTAL, "Experimental feature") \ - E(INPUT_AND_OUTPUT_CHANGED, "Input and output changed") \ - E(HTTP_BAD_REQUEST, "Server returned 400 Bad Request") \ - E(HTTP_UNAUTHORIZED, "Server returned 401 Unauthorized (authorization failed)") \ - E(HTTP_FORBIDDEN, "Server returned 403 Forbidden (access denied)") \ - E(HTTP_NOT_FOUND, "Server returned 404 Not Found") \ - E(HTTP_TOO_MANY_REQUESTS, "Server returned 429 Too Many Requests") \ - E(HTTP_OTHER_4XX, "Server returned 4XX Client Error, but not one of 40{0,1,3,4}") \ - E(HTTP_SERVER_ERROR, "Server returned 5XX Server Error reply") \ - -#define STRERROR_LIST(E) \ - E(E2BIG, "Argument list too long") \ - E(EACCES, "Permission denied") \ - E(EAGAIN, "Resource temporarily unavailable") \ - E(EBADF, "Bad file descriptor") \ - E(EBUSY, "Device or resource busy") \ - E(ECHILD, "No child processes") \ - E(EDEADLK, "Resource deadlock avoided") \ - E(EDOM, "Numerical argument out of domain") \ - E(EEXIST, "File exists") \ - E(EFAULT, "Bad address") \ - E(EFBIG, "File too large") \ - E(EILSEQ, "Illegal byte sequence") \ - E(EINTR, "Interrupted system call") \ - E(EINVAL, "Invalid argument") \ - E(EIO, "I/O error") \ - E(EISDIR, "Is a directory") \ - E(EMFILE, "Too many open files") \ - E(EMLINK, "Too many links") \ - E(ENAMETOOLONG, "File name too long") \ - E(ENFILE, "Too many open files in system") \ - E(ENODEV, "No such device") \ - E(ENOENT, "No such file or directory") \ - E(ENOEXEC, "Exec format error") \ - E(ENOLCK, "No locks available") \ - E(ENOMEM, "Cannot allocate memory") \ - E(ENOSPC, "No space left on device") \ - E(ENOSYS, "Function not implemented") \ - E(ENOTDIR, "Not a directory") \ - E(ENOTEMPTY, "Directory not empty") \ - E(ENOTTY, "Inappropriate I/O control operation") \ - E(ENXIO, "No such device or address") \ - E(EPERM, "Operation not permitted") \ - E(EPIPE, "Broken pipe") \ - E(ERANGE, "Result too large") \ - E(EROFS, "Read-only file system") \ - E(ESPIPE, "Illegal seek") \ - E(ESRCH, "No such process") \ - E(EXDEV, "Cross-device link") \ - -enum { -#define OFFSET(CODE, DESC) \ - ERROR_ ## CODE ## _OFFSET, \ - ERROR_ ## CODE ## _END_OFFSET = ERROR_ ## CODE ## _OFFSET + sizeof(DESC) - 1, -#define NOTHING(CODE, CODE2, DESC) - AVERROR_LIST(OFFSET, NOTHING) -#if !HAVE_STRERROR_R - STRERROR_LIST(OFFSET) -#endif +struct error_entry { + int num; + const char *tag; + const char *str; }; -#define STRING(CODE, DESC) DESC "\0" -static const char error_stringtable[] = - AVERROR_LIST(STRING, NOTHING) +#define ERROR_TAG(tag) AVERROR_##tag, #tag +#define EERROR_TAG(tag) AVERROR(tag), #tag +#define AVERROR_INPUT_AND_OUTPUT_CHANGED (AVERROR_INPUT_CHANGED | AVERROR_OUTPUT_CHANGED) +static const struct error_entry error_entries[] = { + { ERROR_TAG(BSF_NOT_FOUND), "Bitstream filter not found" }, + { ERROR_TAG(BUG), "Internal bug, should not have happened" }, + { ERROR_TAG(BUG2), "Internal bug, should not have happened" }, + { ERROR_TAG(BUFFER_TOO_SMALL), "Buffer too small" }, + { ERROR_TAG(DECODER_NOT_FOUND), "Decoder not found" }, + { ERROR_TAG(DEMUXER_NOT_FOUND), "Demuxer not found" }, + { ERROR_TAG(ENCODER_NOT_FOUND), "Encoder not found" }, + { ERROR_TAG(EOF), "End of file" }, + { ERROR_TAG(EXIT), "Immediate exit requested" }, + { ERROR_TAG(EXTERNAL), "Generic error in an external library" }, + { ERROR_TAG(FILTER_NOT_FOUND), "Filter not found" }, + { ERROR_TAG(INPUT_CHANGED), "Input changed" }, + { ERROR_TAG(INVALIDDATA), "Invalid data found when processing input" }, + { ERROR_TAG(MUXER_NOT_FOUND), "Muxer not found" }, + { ERROR_TAG(OPTION_NOT_FOUND), "Option not found" }, + { ERROR_TAG(OUTPUT_CHANGED), "Output changed" }, + { ERROR_TAG(PATCHWELCOME), "Not yet implemented in FFmpeg, patches welcome" }, + { ERROR_TAG(PROTOCOL_NOT_FOUND), "Protocol not found" }, + { ERROR_TAG(STREAM_NOT_FOUND), "Stream not found" }, + { ERROR_TAG(UNKNOWN), "Unknown error occurred" }, + { ERROR_TAG(EXPERIMENTAL), "Experimental feature" }, + { ERROR_TAG(INPUT_AND_OUTPUT_CHANGED), "Input and output changed" }, + { ERROR_TAG(HTTP_BAD_REQUEST), "Server returned 400 Bad Request" }, + { ERROR_TAG(HTTP_UNAUTHORIZED), "Server returned 401 Unauthorized (authorization failed)" }, + { ERROR_TAG(HTTP_FORBIDDEN), "Server returned 403 Forbidden (access denied)" }, + { ERROR_TAG(HTTP_NOT_FOUND), "Server returned 404 Not Found" }, + { ERROR_TAG(HTTP_TOO_MANY_REQUESTS), "Server returned 429 Too Many Requests" }, + { ERROR_TAG(HTTP_OTHER_4XX), "Server returned 4XX Client Error, but not one of 40{0,1,3,4}" }, + { ERROR_TAG(HTTP_SERVER_ERROR), "Server returned 5XX Server Error reply" }, #if !HAVE_STRERROR_R - STRERROR_LIST(STRING) -#endif -; - -static const struct ErrorEntry { - int num; - unsigned offset; -} error_entries[] = { -#define ENTRY(CODE, DESC) { .num = AVERROR_ ## CODE, .offset = ERROR_ ## CODE ## _OFFSET }, -#define ENTRY2(CODE, CODE2, DESC) { .num = AVERROR_ ## CODE, .offset = ERROR_ ## CODE2 ## _OFFSET }, - AVERROR_LIST(ENTRY, ENTRY2) -#if !HAVE_STRERROR_R -#undef ENTRY -#define ENTRY(CODE, DESC) { .num = AVERROR(CODE), .offset = ERROR_ ## CODE ## _OFFSET }, - STRERROR_LIST(ENTRY) + { EERROR_TAG(E2BIG), "Argument list too long" }, + { EERROR_TAG(EACCES), "Permission denied" }, + { EERROR_TAG(EAGAIN), "Resource temporarily unavailable" }, + { EERROR_TAG(EBADF), "Bad file descriptor" }, + { EERROR_TAG(EBUSY), "Device or resource busy" }, + { EERROR_TAG(ECHILD), "No child processes" }, + { EERROR_TAG(EDEADLK), "Resource deadlock avoided" }, + { EERROR_TAG(EDOM), "Numerical argument out of domain" }, + { EERROR_TAG(EEXIST), "File exists" }, + { EERROR_TAG(EFAULT), "Bad address" }, + { EERROR_TAG(EFBIG), "File too large" }, + { EERROR_TAG(EILSEQ), "Illegal byte sequence" }, + { EERROR_TAG(EINTR), "Interrupted system call" }, + { EERROR_TAG(EINVAL), "Invalid argument" }, + { EERROR_TAG(EIO), "I/O error" }, + { EERROR_TAG(EISDIR), "Is a directory" }, + { EERROR_TAG(EMFILE), "Too many open files" }, + { EERROR_TAG(EMLINK), "Too many links" }, + { EERROR_TAG(ENAMETOOLONG), "File name too long" }, + { EERROR_TAG(ENFILE), "Too many open files in system" }, + { EERROR_TAG(ENODEV), "No such device" }, + { EERROR_TAG(ENOENT), "No such file or directory" }, + { EERROR_TAG(ENOEXEC), "Exec format error" }, + { EERROR_TAG(ENOLCK), "No locks available" }, + { EERROR_TAG(ENOMEM), "Cannot allocate memory" }, + { EERROR_TAG(ENOSPC), "No space left on device" }, + { EERROR_TAG(ENOSYS), "Function not implemented" }, + { EERROR_TAG(ENOTDIR), "Not a directory" }, + { EERROR_TAG(ENOTEMPTY), "Directory not empty" }, + { EERROR_TAG(ENOTTY), "Inappropriate I/O control operation" }, + { EERROR_TAG(ENXIO), "No such device or address" }, + { EERROR_TAG(EPERM), "Operation not permitted" }, + { EERROR_TAG(EPIPE), "Broken pipe" }, + { EERROR_TAG(ERANGE), "Result too large" }, + { EERROR_TAG(EROFS), "Read-only file system" }, + { EERROR_TAG(ESPIPE), "Illegal seek" }, + { EERROR_TAG(ESRCH), "No such process" }, + { EERROR_TAG(EXDEV), "Cross-device link" }, #endif }; int av_strerror(int errnum, char *errbuf, size_t errbuf_size) { - for (size_t i = 0; i < FF_ARRAY_ELEMS(error_entries); ++i) { + int ret = 0, i; + const struct error_entry *entry = NULL; + + for (i = 0; i < FF_ARRAY_ELEMS(error_entries); i++) { if (errnum == error_entries[i].num) { - av_strlcpy(errbuf, error_stringtable + error_entries[i].offset, errbuf_size); - return 0; + entry = &error_entries[i]; + break; } } + if (entry) { + av_strlcpy(errbuf, entry->str, errbuf_size); + } else { #if HAVE_STRERROR_R - int ret = AVERROR(strerror_r(AVUNERROR((unsigned)errnum), errbuf, errbuf_size)); + ret = AVERROR(strerror_r(AVUNERROR(errnum), errbuf, errbuf_size)); #else - int ret = -1; + ret = -1; #endif - if (ret < 0) - snprintf(errbuf, errbuf_size, "Error number %d occurred", errnum); + if (ret < 0) + snprintf(errbuf, errbuf_size, "Error number %d occurred", errnum); + } return ret; } diff --git a/icecat/media/ffvpx/libavutil/eval.c b/icecat/media/ffvpx/libavutil/eval.c index 3074205528..84ff929130 100644 --- a/icecat/media/ffvpx/libavutil/eval.c +++ b/icecat/media/ffvpx/libavutil/eval.c @@ -28,7 +28,6 @@ #include #include "attributes.h" -#include "avassert.h" #include "avutil.h" #include "common.h" #include "eval.h" @@ -41,8 +40,6 @@ #include "avstring.h" #include "reverse.h" -#define MAX_DEPTH 100 - typedef struct Parser { const AVClass *class; int stack_index; @@ -158,35 +155,28 @@ static int strmatch(const char *s, const char *prefix) return !IS_IDENTIFIER_CHAR(s[i]); } -enum { - e_value, e_const, e_func0, e_func1, e_func2, - e_squish, e_gauss, e_ld, e_isnan, e_isinf, - e_mod, e_max, e_min, e_eq, e_gt, e_gte, e_lte, e_lt, - e_pow, e_mul, e_div, e_add, - e_last, e_st, e_while, e_taylor, e_root, e_floor, e_ceil, e_trunc, e_round, - e_sqrt, e_not, e_random, e_hypot, e_gcd, - e_if, e_ifnot, e_print, e_bitand, e_bitor, e_between, e_clip, e_atan2, e_lerp, - e_sgn, e_randomi -}; struct AVExpr { - unsigned char type; - unsigned char root; - short depth; - int const_index; + enum { + e_value, e_const, e_func0, e_func1, e_func2, + e_squish, e_gauss, e_ld, e_isnan, e_isinf, + e_mod, e_max, e_min, e_eq, e_gt, e_gte, e_lte, e_lt, + e_pow, e_mul, e_div, e_add, + e_last, e_st, e_while, e_taylor, e_root, e_floor, e_ceil, e_trunc, e_round, + e_sqrt, e_not, e_random, e_hypot, e_gcd, + e_if, e_ifnot, e_print, e_bitand, e_bitor, e_between, e_clip, e_atan2, e_lerp, + e_sgn, e_randomi + } type; double value; // is sign in other types + int const_index; union { double (*func0)(double); double (*func1)(void *, double); double (*func2)(void *, double, double); - } ; + } a; struct AVExpr *param[3]; -}; - -typedef struct { - AVExpr avexpr; double *var; FFSFC64 *prng_state; -} AVExprRoot; +}; static double etime(double v) { @@ -198,9 +188,9 @@ static double eval_expr(Parser *p, AVExpr *e) switch (e->type) { case e_value: return e->value; case e_const: return e->value * p->const_values[e->const_index]; - case e_func0: return e->value * e->func0(eval_expr(p, e->param[0])); - case e_func1: return e->value * e->func1(p->opaque, eval_expr(p, e->param[0])); - case e_func2: return e->value * e->func2(p->opaque, eval_expr(p, e->param[0]), eval_expr(p, e->param[1])); + case e_func0: return e->value * e->a.func0(eval_expr(p, e->param[0])); + case e_func1: return e->value * e->a.func1(p->opaque, eval_expr(p, e->param[0])); + case e_func2: return e->value * e->a.func2(p->opaque, eval_expr(p, e->param[0]), eval_expr(p, e->param[1])); case e_squish: return 1/(1+exp(4*eval_expr(p, e->param[0]))); case e_gauss: { double d = eval_expr(p, e->param[0]); return exp(-d*d/2)/sqrt(2*M_PI); } case e_ld: return e->value * p->var[av_clip(eval_expr(p, e->param[0]), 0, VARS-1)]; @@ -371,11 +361,8 @@ void av_expr_free(AVExpr *e) av_expr_free(e->param[0]); av_expr_free(e->param[1]); av_expr_free(e->param[2]); - if (e->root) { - AVExprRoot *r = (AVExprRoot*)e; - av_freep(&r->var); - av_freep(&r->prng_state); - } + av_freep(&e->var); + av_freep(&e->prng_state); av_freep(&e); } @@ -458,28 +445,20 @@ static int parse_primary(AVExpr **e, Parser *p) } p->s++; // ")" - for (int i = 0; i<3; i++) - if (d->param[i]) - d->depth = FFMAX(d->depth, d->param[i]->depth+1); - if (d->depth > MAX_DEPTH) { - av_expr_free(d); - return AVERROR(EINVAL); - } - d->type = e_func0; - if (strmatch(next, "sinh" )) d->func0 = sinh; - else if (strmatch(next, "cosh" )) d->func0 = cosh; - else if (strmatch(next, "tanh" )) d->func0 = tanh; - else if (strmatch(next, "sin" )) d->func0 = sin; - else if (strmatch(next, "cos" )) d->func0 = cos; - else if (strmatch(next, "tan" )) d->func0 = tan; - else if (strmatch(next, "atan" )) d->func0 = atan; - else if (strmatch(next, "asin" )) d->func0 = asin; - else if (strmatch(next, "acos" )) d->func0 = acos; - else if (strmatch(next, "exp" )) d->func0 = exp; - else if (strmatch(next, "log" )) d->func0 = log; - else if (strmatch(next, "abs" )) d->func0 = fabs; - else if (strmatch(next, "time" )) d->func0 = etime; + if (strmatch(next, "sinh" )) d->a.func0 = sinh; + else if (strmatch(next, "cosh" )) d->a.func0 = cosh; + else if (strmatch(next, "tanh" )) d->a.func0 = tanh; + else if (strmatch(next, "sin" )) d->a.func0 = sin; + else if (strmatch(next, "cos" )) d->a.func0 = cos; + else if (strmatch(next, "tan" )) d->a.func0 = tan; + else if (strmatch(next, "atan" )) d->a.func0 = atan; + else if (strmatch(next, "asin" )) d->a.func0 = asin; + else if (strmatch(next, "acos" )) d->a.func0 = acos; + else if (strmatch(next, "exp" )) d->a.func0 = exp; + else if (strmatch(next, "log" )) d->a.func0 = log; + else if (strmatch(next, "abs" )) d->a.func0 = fabs; + else if (strmatch(next, "time" )) d->a.func0 = etime; else if (strmatch(next, "squish")) d->type = e_squish; else if (strmatch(next, "gauss" )) d->type = e_gauss; else if (strmatch(next, "mod" )) d->type = e_mod; @@ -521,7 +500,7 @@ static int parse_primary(AVExpr **e, Parser *p) else { for (i=0; p->func1_names && p->func1_names[i]; i++) { if (strmatch(next, p->func1_names[i])) { - d->func1 = p->funcs1[i]; + d->a.func1 = p->funcs1[i]; d->type = e_func1; d->const_index = i; *e = d; @@ -531,7 +510,7 @@ static int parse_primary(AVExpr **e, Parser *p) for (i=0; p->func2_names && p->func2_names[i]; i++) { if (strmatch(next, p->func2_names[i])) { - d->func2 = p->funcs2[i]; + d->a.func2 = p->funcs2[i]; d->type = e_func2; d->const_index = i; *e = d; @@ -550,9 +529,6 @@ static int parse_primary(AVExpr **e, Parser *p) static AVExpr *make_eval_expr(int type, int value, AVExpr *p0, AVExpr *p1) { - int depth = FFMAX(p0->depth, p1->depth) + 1; - if (depth > MAX_DEPTH) - return NULL; AVExpr *e = av_mallocz(sizeof(AVExpr)); if (!e) return NULL; @@ -560,7 +536,6 @@ static AVExpr *make_eval_expr(int type, int value, AVExpr *p0, AVExpr *p1) e->value =value ; e->param[0] =p0 ; e->param[1] =p1 ; - e->depth = depth; return e; } @@ -577,7 +552,7 @@ static int parse_dB(AVExpr **e, Parser *p, int *sign) for example, -3dB is not the same as -(3dB) */ if (*p->s == '-') { char *next; - av_unused double ignored = strtod(p->s, &next); + double av_unused ignored = strtod(p->s, &next); if (next != p->s && next[0] == 'd' && next[1] == 'B') { *sign = 0; return parse_primary(e, p); @@ -774,16 +749,9 @@ int av_expr_parse(AVExpr **expr, const char *s, ret = AVERROR(EINVAL); goto end; } - AVExprRoot *r = av_realloc(e, sizeof(*r)); - if (!r) { - ret = AVERROR(ENOMEM); - goto end; - } - e = (AVExpr*)r; - e->root = 1; - r->var= av_mallocz(sizeof(double) *VARS); - r->prng_state = av_mallocz(sizeof(*r->prng_state) *VARS); - if (!r->var || !r->prng_state) { + e->var= av_mallocz(sizeof(double) *VARS); + e->prng_state = av_mallocz(sizeof(*e->prng_state) *VARS); + if (!e->var || !e->prng_state) { ret = AVERROR(ENOMEM); goto end; } @@ -823,16 +791,12 @@ int av_expr_count_func(AVExpr *e, unsigned *counter, int size, int arg) double av_expr_eval(AVExpr *e, const double *const_values, void *opaque) { - av_assert1(e->root); - AVExprRoot *r = (AVExprRoot *)e; - Parser p = { - .class = &eval_class, - .const_values = const_values, - .opaque = opaque, - .var = r->var, - .prng_state = r->prng_state, - }; + Parser p = { 0 }; + p.var= e->var; + p.prng_state= e->prng_state; + p.const_values = const_values; + p.opaque = opaque; return eval_expr(&p, e); } diff --git a/icecat/media/ffvpx/libavutil/film_grain_params.h b/icecat/media/ffvpx/libavutil/film_grain_params.h index 2915611c9c..ccacab88fe 100644 --- a/icecat/media/ffvpx/libavutil/film_grain_params.h +++ b/icecat/media/ffvpx/libavutil/film_grain_params.h @@ -124,7 +124,7 @@ typedef struct AVFilmGrainAOMParams { /** * This structure describes how to handle film grain synthesis for codecs using - * the ITU-T H.274 Versatile supplemental enhancement information message. + * the ITU-T H.274 Versatile suplemental enhancement information message. * * @note The struct must be allocated as part of AVFilmGrainParams using * av_film_grain_params_alloc(). Its size is not a part of the public ABI. @@ -136,6 +136,43 @@ typedef struct AVFilmGrainH274Params { */ int model_id; +#if FF_API_H274_FILM_GRAIN_VCS + /** + * TODO: On this ABI bump, please also re-order the fields in + * AVFilmGrainParams (see below) + */ + + /** + * Specifies the bit depth used for the luma component. + * + * @deprecated use AVFilmGrainParams.bit_depth_luma. + */ + attribute_deprecated + int bit_depth_luma; + + /** + * Specifies the bit depth used for the chroma components. + * + * @deprecated use AVFilmGrainParams.bit_depth_chroma. + */ + attribute_deprecated + int bit_depth_chroma; + + /** + * Specifies the video signal characteristics. + * + * @deprecated use AVFilmGrainParams.color_{range,primaries,trc,space}. + */ + attribute_deprecated + enum AVColorRange color_range; + attribute_deprecated + enum AVColorPrimaries color_primaries; + attribute_deprecated + enum AVColorTransferCharacteristic color_trc; + attribute_deprecated + enum AVColorSpace color_space; +#endif + /** * Specifies the blending mode used to blend the simulated film grain * with the decoded images. @@ -212,6 +249,18 @@ typedef struct AVFilmGrainParams { */ uint64_t seed; + /** + * Additional fields may be added both here and in any structure included. + * If a codec's film grain structure differs slightly over another + * codec's, fields within may change meaning depending on the type. + * + * TODO: Move this to the end of the structure, at the next ABI bump. + */ + union { + AVFilmGrainAOMParams aom; + AVFilmGrainH274Params h274; + } codec; + /** * Intended display resolution. May be 0 if the codec does not specify * any restrictions. @@ -238,15 +287,6 @@ typedef struct AVFilmGrainParams { int bit_depth_luma; int bit_depth_chroma; - /** - * Additional fields may be added both here and in any structure included. - * If a codec's film grain structure differs slightly over another - * codec's, fields within may change meaning depending on the type. - */ - union { - AVFilmGrainAOMParams aom; - AVFilmGrainH274Params h274; - } codec; } AVFilmGrainParams; /** diff --git a/icecat/media/ffvpx/libavutil/fixed_dsp.c b/icecat/media/ffvpx/libavutil/fixed_dsp.c index 74cefdb145..95f0eb2595 100644 --- a/icecat/media/ffvpx/libavutil/fixed_dsp.c +++ b/icecat/media/ffvpx/libavutil/fixed_dsp.c @@ -165,7 +165,7 @@ AVFixedDSPContext * avpriv_alloc_fixed_dsp(int bit_exact) #if ARCH_RISCV ff_fixed_dsp_init_riscv(fdsp); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_fixed_dsp_init_x86(fdsp); #endif diff --git a/icecat/media/ffvpx/libavutil/float_dsp.c b/icecat/media/ffvpx/libavutil/float_dsp.c index 5bfa1008d1..08bbc85e3e 100644 --- a/icecat/media/ffvpx/libavutil/float_dsp.c +++ b/icecat/media/ffvpx/libavutil/float_dsp.c @@ -121,6 +121,17 @@ static void butterflies_float_c(float *restrict v1, float *restrict v2, } } +float avpriv_scalarproduct_float_c(const float *v1, const float *v2, int len) +{ + float p = 0.0; + int i; + + for (i = 0; i < len; i++) + p += v1[i] * v2[i]; + + return p; +} + double ff_scalarproduct_double_c(const double *v1, const double *v2, size_t len) { @@ -148,7 +159,7 @@ av_cold AVFloatDSPContext *avpriv_float_dsp_alloc(int bit_exact) fdsp->vector_fmul_add = vector_fmul_add_c; fdsp->vector_fmul_reverse = vector_fmul_reverse_c; fdsp->butterflies_float = butterflies_float_c; - fdsp->scalarproduct_float = ff_scalarproduct_float_c; + fdsp->scalarproduct_float = avpriv_scalarproduct_float_c; fdsp->scalarproduct_double = ff_scalarproduct_double_c; #if ARCH_AARCH64 @@ -159,7 +170,7 @@ av_cold AVFloatDSPContext *avpriv_float_dsp_alloc(int bit_exact) ff_float_dsp_init_ppc(fdsp, bit_exact); #elif ARCH_RISCV ff_float_dsp_init_riscv(fdsp); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_float_dsp_init_x86(fdsp); #elif ARCH_MIPS ff_float_dsp_init_mips(fdsp); diff --git a/icecat/media/ffvpx/libavutil/float_dsp.h b/icecat/media/ffvpx/libavutil/float_dsp.h index ab34277c20..a99edc39bb 100644 --- a/icecat/media/ffvpx/libavutil/float_dsp.h +++ b/icecat/media/ffvpx/libavutil/float_dsp.h @@ -215,7 +215,7 @@ typedef struct AVFloatDSPContext { * * @return sum of elementwise products */ -float ff_scalarproduct_float_c(const float *v1, const float *v2, int len); +float avpriv_scalarproduct_float_c(const float *v1, const float *v2, int len); /** * Return the scalar product of two vectors of doubles. diff --git a/icecat/media/ffvpx/libavutil/float_scalarproduct.c b/icecat/media/ffvpx/libavutil/float_scalarproduct.c deleted file mode 100644 index e95e67fde1..0000000000 --- a/icecat/media/ffvpx/libavutil/float_scalarproduct.c +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2005 Balatoni Denes - * Copyright 2006 Loren Merritt - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "float_dsp.h" - -float ff_scalarproduct_float_c(const float *v1, const float *v2, int len) -{ - float p = 0.0; - - for (int i = 0; i < len; i++) - p += v1[i] * v2[i]; - - return p; -} diff --git a/icecat/media/ffvpx/libavutil/frame.c b/icecat/media/ffvpx/libavutil/frame.c index be30eb09d2..ab0d8f535f 100644 --- a/icecat/media/ffvpx/libavutil/frame.c +++ b/icecat/media/ffvpx/libavutil/frame.c @@ -19,15 +19,48 @@ #include "channel_layout.h" #include "avassert.h" #include "buffer.h" +#include "common.h" +#include "cpu.h" #include "dict.h" #include "frame.h" #include "imgutils.h" #include "mem.h" -#include "refstruct.h" #include "samplefmt.h" -#include "side_data.h" #include "hwcontext.h" +static const AVSideDataDescriptor sd_props[] = { + [AV_FRAME_DATA_PANSCAN] = { "AVPanScan", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, + [AV_FRAME_DATA_A53_CC] = { "ATSC A53 Part 4 Closed Captions" }, + [AV_FRAME_DATA_MATRIXENCODING] = { "AVMatrixEncoding" }, + [AV_FRAME_DATA_DOWNMIX_INFO] = { "Metadata relevant to a downmix procedure" }, + [AV_FRAME_DATA_AFD] = { "Active format description" }, + [AV_FRAME_DATA_MOTION_VECTORS] = { "Motion vectors", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, + [AV_FRAME_DATA_SKIP_SAMPLES] = { "Skip samples" }, + [AV_FRAME_DATA_GOP_TIMECODE] = { "GOP timecode" }, + [AV_FRAME_DATA_S12M_TIMECODE] = { "SMPTE 12-1 timecode" }, + [AV_FRAME_DATA_DYNAMIC_HDR_PLUS] = { "HDR Dynamic Metadata SMPTE2094-40 (HDR10+)", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, + [AV_FRAME_DATA_DYNAMIC_HDR_VIVID] = { "HDR Dynamic Metadata CUVA 005.1 2021 (Vivid)", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, + [AV_FRAME_DATA_REGIONS_OF_INTEREST] = { "Regions Of Interest", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, + [AV_FRAME_DATA_VIDEO_ENC_PARAMS] = { "Video encoding parameters" }, + [AV_FRAME_DATA_FILM_GRAIN_PARAMS] = { "Film grain parameters" }, + [AV_FRAME_DATA_DETECTION_BBOXES] = { "Bounding boxes for object detection and classification", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, + [AV_FRAME_DATA_DOVI_RPU_BUFFER] = { "Dolby Vision RPU Data", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, + [AV_FRAME_DATA_DOVI_METADATA] = { "Dolby Vision Metadata", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, + [AV_FRAME_DATA_LCEVC] = { "LCEVC NAL data", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, + [AV_FRAME_DATA_VIEW_ID] = { "View ID" }, + [AV_FRAME_DATA_STEREO3D] = { "Stereo 3D", AV_SIDE_DATA_PROP_GLOBAL }, + [AV_FRAME_DATA_REPLAYGAIN] = { "AVReplayGain", AV_SIDE_DATA_PROP_GLOBAL }, + [AV_FRAME_DATA_DISPLAYMATRIX] = { "3x3 displaymatrix", AV_SIDE_DATA_PROP_GLOBAL }, + [AV_FRAME_DATA_AUDIO_SERVICE_TYPE] = { "Audio service type", AV_SIDE_DATA_PROP_GLOBAL }, + [AV_FRAME_DATA_MASTERING_DISPLAY_METADATA] = { "Mastering display metadata", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, + [AV_FRAME_DATA_CONTENT_LIGHT_LEVEL] = { "Content light level metadata", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, + [AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT] = { "Ambient viewing environment", AV_SIDE_DATA_PROP_GLOBAL }, + [AV_FRAME_DATA_SPHERICAL] = { "Spherical Mapping", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, + [AV_FRAME_DATA_ICC_PROFILE] = { "ICC profile", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, + [AV_FRAME_DATA_SEI_UNREGISTERED] = { "H.26[45] User Data Unregistered SEI message", AV_SIDE_DATA_PROP_MULTI }, + [AV_FRAME_DATA_VIDEO_HINT] = { "Encoding video hint", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, +}; + static void get_frame_defaults(AVFrame *frame) { memset(frame, 0, sizeof(*frame)); @@ -36,6 +69,12 @@ static void get_frame_defaults(AVFrame *frame) frame->pkt_dts = AV_NOPTS_VALUE; frame->best_effort_timestamp = AV_NOPTS_VALUE; frame->duration = 0; +#if FF_API_FRAME_PKT +FF_DISABLE_DEPRECATION_WARNINGS + frame->pkt_pos = -1; + frame->pkt_size = -1; +FF_ENABLE_DEPRECATION_WARNINGS +#endif frame->time_base = (AVRational){ 0, 1 }; frame->sample_aspect_ratio = (AVRational){ 0, 1 }; frame->format = -1; /* unknown */ @@ -45,10 +84,70 @@ static void get_frame_defaults(AVFrame *frame) frame->colorspace = AVCOL_SPC_UNSPECIFIED; frame->color_range = AVCOL_RANGE_UNSPECIFIED; frame->chroma_location = AVCHROMA_LOC_UNSPECIFIED; - frame->alpha_mode = AVALPHA_MODE_UNSPECIFIED; frame->flags = 0; } +static void free_side_data(AVFrameSideData **ptr_sd) +{ + AVFrameSideData *sd = *ptr_sd; + + av_buffer_unref(&sd->buf); + av_dict_free(&sd->metadata); + av_freep(ptr_sd); +} + +static void wipe_side_data(AVFrameSideData ***sd, int *nb_side_data) +{ + for (int i = 0; i < *nb_side_data; i++) { + free_side_data(&((*sd)[i])); + } + *nb_side_data = 0; + + av_freep(sd); +} + +static void frame_side_data_wipe(AVFrame *frame) +{ + wipe_side_data(&frame->side_data, &frame->nb_side_data); +} + +void av_frame_side_data_free(AVFrameSideData ***sd, int *nb_sd) +{ + wipe_side_data(sd, nb_sd); +} + +static void remove_side_data(AVFrameSideData ***sd, int *nb_side_data, + const enum AVFrameSideDataType type) +{ + for (int i = *nb_side_data - 1; i >= 0; i--) { + AVFrameSideData *entry = ((*sd)[i]); + if (entry->type != type) + continue; + + free_side_data(&entry); + + ((*sd)[i]) = ((*sd)[*nb_side_data - 1]); + (*nb_side_data)--; + } +} + +static void remove_side_data_by_entry(AVFrameSideData ***sd, int *nb_sd, + const AVFrameSideData *target) +{ + for (int i = *nb_sd - 1; i >= 0; i--) { + AVFrameSideData *entry = ((*sd)[i]); + if (entry != target) + continue; + + free_side_data(&entry); + + ((*sd)[i]) = ((*sd)[*nb_sd - 1]); + (*nb_sd)--; + + return; + } +} + AVFrame *av_frame_alloc(void) { AVFrame *frame = av_malloc(sizeof(*frame)); @@ -219,6 +318,13 @@ int av_frame_get_buffer(AVFrame *frame, int align) static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy) { + int ret; + +#if FF_API_FRAME_KEY +FF_DISABLE_DEPRECATION_WARNINGS + dst->key_frame = src->key_frame; +FF_ENABLE_DEPRECATION_WARNINGS +#endif dst->pict_type = src->pict_type; dst->sample_aspect_ratio = src->sample_aspect_ratio; dst->crop_top = src->crop_top; @@ -228,9 +334,26 @@ static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy) dst->pts = src->pts; dst->duration = src->duration; dst->repeat_pict = src->repeat_pict; +#if FF_API_INTERLACED_FRAME +FF_DISABLE_DEPRECATION_WARNINGS + dst->interlaced_frame = src->interlaced_frame; + dst->top_field_first = src->top_field_first; +FF_ENABLE_DEPRECATION_WARNINGS +#endif +#if FF_API_PALETTE_HAS_CHANGED +FF_DISABLE_DEPRECATION_WARNINGS + dst->palette_has_changed = src->palette_has_changed; +FF_ENABLE_DEPRECATION_WARNINGS +#endif dst->sample_rate = src->sample_rate; dst->opaque = src->opaque; dst->pkt_dts = src->pkt_dts; +#if FF_API_FRAME_PKT +FF_DISABLE_DEPRECATION_WARNINGS + dst->pkt_pos = src->pkt_pos; + dst->pkt_size = src->pkt_size; +FF_ENABLE_DEPRECATION_WARNINGS +#endif dst->time_base = src->time_base; dst->quality = src->quality; dst->best_effort_timestamp = src->best_effort_timestamp; @@ -241,7 +364,6 @@ static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy) dst->colorspace = src->colorspace; dst->color_range = src->color_range; dst->chroma_location = src->chroma_location; - dst->alpha_mode = src->alpha_mode; av_dict_copy(&dst->metadata, src->metadata, 0); @@ -255,7 +377,7 @@ static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy) sd_dst = av_frame_new_side_data(dst, sd_src->type, sd_src->size); if (!sd_dst) { - av_frame_side_data_free(&dst->side_data, &dst->nb_side_data); + frame_side_data_wipe(dst); return AVERROR(ENOMEM); } memcpy(sd_dst->data, sd_src->data, sd_src->size); @@ -264,15 +386,16 @@ static int frame_copy_props(AVFrame *dst, const AVFrame *src, int force_copy) sd_dst = av_frame_new_side_data_from_buf(dst, sd_src->type, ref); if (!sd_dst) { av_buffer_unref(&ref); - av_frame_side_data_free(&dst->side_data, &dst->nb_side_data); + frame_side_data_wipe(dst); return AVERROR(ENOMEM); } } av_dict_copy(&sd_dst->metadata, sd_src->metadata, 0); } - av_refstruct_replace(&dst->private_ref, src->private_ref); - return av_buffer_replace(&dst->opaque_ref, src->opaque_ref); + ret = av_buffer_replace(&dst->opaque_ref, src->opaque_ref); + ret |= av_buffer_replace(&dst->private_ref, src->private_ref); + return ret; } int av_frame_ref(AVFrame *dst, const AVFrame *src) @@ -350,16 +473,17 @@ int av_frame_ref(AVFrame *dst, const AVFrame *src) if (src->extended_data != src->data) { int ch = dst->ch_layout.nb_channels; - if (ch <= 0 || ch > SIZE_MAX / sizeof(*dst->extended_data)) { + if (!ch) { ret = AVERROR(EINVAL); goto fail; } - dst->extended_data = av_memdup(src->extended_data, sizeof(*dst->extended_data) * ch); + dst->extended_data = av_malloc_array(sizeof(*dst->extended_data), ch); if (!dst->extended_data) { ret = AVERROR(ENOMEM); goto fail; } + memcpy(dst->extended_data, src->extended_data, sizeof(*src->extended_data) * ch); } else dst->extended_data = dst->data; @@ -402,7 +526,7 @@ int av_frame_replace(AVFrame *dst, const AVFrame *src) if (ret < 0) goto fail; - av_frame_side_data_free(&dst->side_data, &dst->nb_side_data); + frame_side_data_wipe(dst); av_dict_free(&dst->metadata); ret = frame_copy_props(dst, src, 0); if (ret < 0) @@ -423,8 +547,8 @@ int av_frame_replace(AVFrame *dst, const AVFrame *src) for (int i = nb_extended_buf; i < dst->nb_extended_buf; i++) av_buffer_unref(&dst->extended_buf[i]); - tmp = av_realloc_array(dst->extended_buf, src->nb_extended_buf, - sizeof(*dst->extended_buf)); + tmp = av_realloc_array(dst->extended_buf, sizeof(*dst->extended_buf), + src->nb_extended_buf); if (!tmp) { ret = AVERROR(ENOMEM); goto fail; @@ -457,11 +581,14 @@ int av_frame_replace(AVFrame *dst, const AVFrame *src) if (src->extended_data != src->data) { int ch = dst->ch_layout.nb_channels; - if (ch <= 0 || ch > SIZE_MAX / sizeof(*dst->extended_data)) { + if (!ch) { ret = AVERROR(EINVAL); goto fail; } + if (ch > SIZE_MAX / sizeof(*dst->extended_data)) + goto fail; + dst->extended_data = av_memdup(src->extended_data, sizeof(*dst->extended_data) * ch); if (!dst->extended_data) { ret = AVERROR(ENOMEM); @@ -498,7 +625,7 @@ void av_frame_unref(AVFrame *frame) if (!frame) return; - av_frame_side_data_free(&frame->side_data, &frame->nb_side_data); + frame_side_data_wipe(frame); for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++) av_buffer_unref(&frame->buf[i]); @@ -510,7 +637,7 @@ void av_frame_unref(AVFrame *frame) av_buffer_unref(&frame->hw_frames_ctx); av_buffer_unref(&frame->opaque_ref); - av_refstruct_unref(&frame->private_ref); + av_buffer_unref(&frame->private_ref); if (frame->extended_data != frame->data) av_freep(&frame->extended_data); @@ -603,7 +730,7 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src) AVBufferRef *av_frame_get_plane_buffer(const AVFrame *frame, int plane) { - uintptr_t data; + uint8_t *data; int planes; if (frame->nb_samples) { @@ -616,31 +743,69 @@ AVBufferRef *av_frame_get_plane_buffer(const AVFrame *frame, int plane) if (plane < 0 || plane >= planes || !frame->extended_data[plane]) return NULL; - data = (uintptr_t)frame->extended_data[plane]; + data = frame->extended_data[plane]; for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf) && frame->buf[i]; i++) { AVBufferRef *buf = frame->buf[i]; - uintptr_t buf_begin = (uintptr_t)buf->data; - - if (data >= buf_begin && data < buf_begin + buf->size) + if (data >= buf->data && data < buf->data + buf->size) return buf; } for (int i = 0; i < frame->nb_extended_buf; i++) { AVBufferRef *buf = frame->extended_buf[i]; - uintptr_t buf_begin = (uintptr_t)buf->data; - - if (data >= buf_begin && data < buf_begin + buf->size) + if (data >= buf->data && data < buf->data + buf->size) return buf; } return NULL; } +static AVFrameSideData *add_side_data_from_buf_ext(AVFrameSideData ***sd, + int *nb_sd, + enum AVFrameSideDataType type, + AVBufferRef *buf, uint8_t *data, + size_t size) +{ + AVFrameSideData *ret, **tmp; + + // *nb_sd + 1 needs to fit into an int and a size_t. + if ((unsigned)*nb_sd >= FFMIN(INT_MAX, SIZE_MAX)) + return NULL; + + tmp = av_realloc_array(*sd, sizeof(**sd), *nb_sd + 1); + if (!tmp) + return NULL; + *sd = tmp; + + ret = av_mallocz(sizeof(*ret)); + if (!ret) + return NULL; + + ret->buf = buf; + ret->data = data; + ret->size = size; + ret->type = type; + + (*sd)[(*nb_sd)++] = ret; + + return ret; +} + +static AVFrameSideData *add_side_data_from_buf(AVFrameSideData ***sd, + int *nb_sd, + enum AVFrameSideDataType type, + AVBufferRef *buf) +{ + if (!buf) + return NULL; + + return add_side_data_from_buf_ext(sd, nb_sd, type, buf, buf->data, buf->size); +} + AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, enum AVFrameSideDataType type, AVBufferRef *buf) { return - ff_frame_side_data_add_from_buf( + add_side_data_from_buf( &frame->side_data, &frame->nb_side_data, type, buf); } @@ -656,6 +821,162 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame, return ret; } +static AVFrameSideData *replace_side_data_from_buf(AVFrameSideData *dst, + AVBufferRef *buf, int flags) +{ + if (!(flags & AV_FRAME_SIDE_DATA_FLAG_REPLACE)) + return NULL; + + av_dict_free(&dst->metadata); + av_buffer_unref(&dst->buf); + dst->buf = buf; + dst->data = buf->data; + dst->size = buf->size; + return dst; +} + +AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd, + enum AVFrameSideDataType type, + size_t size, unsigned int flags) +{ + const AVSideDataDescriptor *desc = av_frame_side_data_desc(type); + AVBufferRef *buf = av_buffer_alloc(size); + AVFrameSideData *ret = NULL; + + if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE) + remove_side_data(sd, nb_sd, type); + if ((!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) && + (ret = (AVFrameSideData *)av_frame_side_data_get(*sd, *nb_sd, type))) { + ret = replace_side_data_from_buf(ret, buf, flags); + if (!ret) + av_buffer_unref(&buf); + return ret; + } + + ret = add_side_data_from_buf(sd, nb_sd, type, buf); + if (!ret) + av_buffer_unref(&buf); + + return ret; +} + +AVFrameSideData *av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd, + enum AVFrameSideDataType type, + AVBufferRef **pbuf, unsigned int flags) +{ + const AVSideDataDescriptor *desc = av_frame_side_data_desc(type); + AVFrameSideData *sd_dst = NULL; + AVBufferRef *buf = *pbuf; + + if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE) + remove_side_data(sd, nb_sd, type); + if ((!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) && + (sd_dst = (AVFrameSideData *)av_frame_side_data_get(*sd, *nb_sd, type))) { + sd_dst = replace_side_data_from_buf(sd_dst, buf, flags); + if (sd_dst) + *pbuf = NULL; + return sd_dst; + } + + sd_dst = add_side_data_from_buf(sd, nb_sd, type, buf); + if (!sd_dst) + return NULL; + + *pbuf = NULL; + return sd_dst; +} + +int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, + const AVFrameSideData *src, unsigned int flags) +{ + const AVSideDataDescriptor *desc; + AVBufferRef *buf = NULL; + AVFrameSideData *sd_dst = NULL; + int ret = AVERROR_BUG; + + if (!sd || !src || !nb_sd || (*nb_sd && !*sd)) + return AVERROR(EINVAL); + + desc = av_frame_side_data_desc(src->type); + if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE) + remove_side_data(sd, nb_sd, src->type); + if ((!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) && + (sd_dst = (AVFrameSideData *)av_frame_side_data_get(*sd, *nb_sd, src->type))) { + AVDictionary *dict = NULL; + + if (!(flags & AV_FRAME_SIDE_DATA_FLAG_REPLACE)) + return AVERROR(EEXIST); + + ret = av_dict_copy(&dict, src->metadata, 0); + if (ret < 0) + return ret; + + ret = av_buffer_replace(&sd_dst->buf, src->buf); + if (ret < 0) { + av_dict_free(&dict); + return ret; + } + + av_dict_free(&sd_dst->metadata); + sd_dst->metadata = dict; + sd_dst->data = src->data; + sd_dst->size = src->size; + return 0; + } + + buf = av_buffer_ref(src->buf); + if (!buf) + return AVERROR(ENOMEM); + + sd_dst = add_side_data_from_buf_ext(sd, nb_sd, src->type, buf, + src->data, src->size); + if (!sd_dst) { + av_buffer_unref(&buf); + return AVERROR(ENOMEM); + } + + ret = av_dict_copy(&sd_dst->metadata, src->metadata, 0); + if (ret < 0) { + remove_side_data_by_entry(sd, nb_sd, sd_dst); + return ret; + } + + return 0; +} + +const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *sd, + const int nb_sd, + enum AVFrameSideDataType type) +{ + for (int i = 0; i < nb_sd; i++) { + if (sd[i]->type == type) + return sd[i]; + } + return NULL; +} + +void av_frame_side_data_remove(AVFrameSideData ***sd, int *nb_sd, + enum AVFrameSideDataType type) +{ + remove_side_data(sd, nb_sd, type); +} + +void av_frame_side_data_remove_by_props(AVFrameSideData ***sd, int *nb_sd, + int props) +{ + for (int i = *nb_sd - 1; i >= 0; i--) { + AVFrameSideData *entry = ((*sd)[i]); + const AVSideDataDescriptor *desc = av_frame_side_data_desc(entry->type); + if (!desc || !(desc->props & props)) + continue; + + free_side_data(&entry); + + ((*sd)[i]) = ((*sd)[*nb_sd - 1]); + (*nb_sd)--; + } +} + AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, enum AVFrameSideDataType type) { @@ -724,7 +1045,21 @@ int av_frame_copy(AVFrame *dst, const AVFrame *src) void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type) { - av_frame_side_data_remove(&frame->side_data, &frame->nb_side_data, type); + remove_side_data(&frame->side_data, &frame->nb_side_data, type); +} + +const AVSideDataDescriptor *av_frame_side_data_desc(enum AVFrameSideDataType type) +{ + unsigned t = type; + if (t < FF_ARRAY_ELEMS(sd_props) && sd_props[t].name) + return &sd_props[t]; + return NULL; +} + +const char *av_frame_side_data_name(enum AVFrameSideDataType type) +{ + const AVSideDataDescriptor *desc = av_frame_side_data_desc(type); + return desc ? desc->name : NULL; } static int calc_cropping_offsets(size_t offsets[4], const AVFrame *frame, @@ -761,7 +1096,6 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) { const AVPixFmtDescriptor *desc; size_t offsets[4]; - int ret; if (!(frame->width > 0 && frame->height > 0)) return AVERROR(EINVAL); @@ -789,9 +1123,7 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) } /* calculate the offsets for each plane */ - ret = calc_cropping_offsets(offsets, frame, desc); - if (ret < 0) - return ret; + calc_cropping_offsets(offsets, frame, desc); /* adjust the offsets to avoid breaking alignment */ if (!(flags & AV_FRAME_CROP_UNALIGNED)) { @@ -810,9 +1142,7 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) if (min_log2_align < 5 && log2_crop_align != INT_MAX) { frame->crop_left &= ~((1 << (5 + log2_crop_align - min_log2_align)) - 1); - ret = calc_cropping_offsets(offsets, frame, desc); - if (ret < 0) - return ret; + calc_cropping_offsets(offsets, frame, desc); } } diff --git a/icecat/media/ffvpx/libavutil/frame.h b/icecat/media/ffvpx/libavutil/frame.h index 02a54303bc..993fa6b65a 100644 --- a/icecat/media/ffvpx/libavutil/frame.h +++ b/icecat/media/ffvpx/libavutil/frame.h @@ -96,7 +96,7 @@ enum AVFrameSideDataType { */ AV_FRAME_DATA_MOTION_VECTORS, /** - * Recommends skipping the specified number of samples. This is exported + * Recommmends skipping the specified number of samples. This is exported * only if the "skip_manual" AVOption is set in libavcodec. * This has the same format as AV_PKT_DATA_SKIP_SAMPLES. * @code @@ -243,30 +243,6 @@ enum AVFrameSideDataType { * The data is an int storing the view ID. */ AV_FRAME_DATA_VIEW_ID, - - /** - * This side data contains information about the reference display width(s) - * and reference viewing distance(s) as well as information about the - * corresponding reference stereo pair(s), i.e., the pair(s) of views to be - * displayed for the viewer's left and right eyes on the reference display - * at the reference viewing distance. - * The payload is the AV3DReferenceDisplaysInfo struct defined in - * libavutil/tdrdi.h. - */ - AV_FRAME_DATA_3D_REFERENCE_DISPLAYS, - - /** - * Extensible image file format metadata. The payload is a buffer containing - * EXIF metadata, starting with either 49 49 2a 00, or 4d 4d 00 2a. - */ - AV_FRAME_DATA_EXIF, - - /** - * HDR dynamic metadata associated with a video frame. The payload is - * an AVDynamicHDRSmpte2094App5 type and contains information for color - * volume transform as specified in the SMPTE 2094-50 standard. - */ - AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5, }; enum AVActiveFormatDescription { @@ -321,13 +297,6 @@ enum AVSideDataProps { * adapting to a different set of primaries or transfer characteristics. */ AV_SIDE_DATA_PROP_COLOR_DEPENDENT = (1 << 3), - - /** - * Side data depends on the channel layout. Side data with this property - * loses its meaning when downmixing or upmixing, unless either recomputed - * or adjusted to the new layout. - */ - AV_SIDE_DATA_PROP_CHANNEL_DEPENDENT = (1 << 4), }; /** @@ -520,6 +489,16 @@ typedef struct AVFrame { */ int format; +#if FF_API_FRAME_KEY + /** + * 1 -> keyframe, 0-> not + * + * @deprecated Use AV_FRAME_FLAG_KEY instead + */ + attribute_deprecated + int key_frame; +#endif + /** * Picture type of the frame. */ @@ -591,6 +570,32 @@ typedef struct AVFrame { */ int repeat_pict; +#if FF_API_INTERLACED_FRAME + /** + * The content of the picture is interlaced. + * + * @deprecated Use AV_FRAME_FLAG_INTERLACED instead + */ + attribute_deprecated + int interlaced_frame; + + /** + * If the content is interlaced, is top field displayed first. + * + * @deprecated Use AV_FRAME_FLAG_TOP_FIELD_FIRST instead + */ + attribute_deprecated + int top_field_first; +#endif + +#if FF_API_PALETTE_HAS_CHANGED + /** + * Tell user application that palette has changed from previous frame. + */ + attribute_deprecated + int palette_has_changed; +#endif + /** * Sample rate of the audio data. */ @@ -661,11 +666,7 @@ typedef struct AVFrame { */ #define AV_FRAME_FLAG_TOP_FIELD_FIRST (1 << 4) /** - * A decoder can use this flag to mark frames which were originally encoded losslessly. - * - * For coding bitstream formats which support both lossless and lossy - * encoding, it is sometimes possible for a decoder to determine which method - * was used when the bitstream was encoded. + * A flag to mark frames which were encoded losslessly from the input. */ #define AV_FRAME_FLAG_LOSSLESS (1 << 5) /** @@ -704,6 +705,18 @@ typedef struct AVFrame { */ int64_t best_effort_timestamp; +#if FF_API_FRAME_PKT + /** + * reordered pos from the last AVPacket that has been input into the decoder + * - encoding: unused + * - decoding: Read by user. + * @deprecated use AV_CODEC_FLAG_COPY_OPAQUE to pass through arbitrary user + * data from packets to frames + */ + attribute_deprecated + int64_t pkt_pos; +#endif + /** * metadata. * - encoding: Set by user. @@ -724,6 +737,20 @@ typedef struct AVFrame { #define FF_DECODE_ERROR_CONCEALMENT_ACTIVE 4 #define FF_DECODE_ERROR_DECODE_SLICES 8 +#if FF_API_FRAME_PKT + /** + * size of the corresponding packet containing the compressed + * frame. + * It is set to a negative value if unknown. + * - encoding: unused + * - decoding: set by libavcodec, read by user. + * @deprecated use AV_CODEC_FLAG_COPY_OPAQUE to pass through arbitrary user + * data from packets to frames + */ + attribute_deprecated + int pkt_size; +#endif + /** * For hwaccel-format frames, this should be a reference to the * AVHWFramesContext describing the frame. @@ -749,7 +776,7 @@ typedef struct AVFrame { /** * @anchor cropping * @name Cropping - * Video frames only. The number of pixels to discard from the + * Video frames only. The number of pixels to discard from the the * top/bottom/left/right border of the frame to obtain the sub-rectangle of * the frame intended for presentation. * @{ @@ -763,13 +790,17 @@ typedef struct AVFrame { */ /** - * RefStruct reference for internal use by a single libav* library. + * AVBufferRef for internal use by a single libav* library. * Must not be used to transfer data between libraries. * Has to be NULL when ownership of the frame leaves the respective library. * - * Code outside the FFmpeg libs must never check or change private_ref. + * Code outside the FFmpeg libs should never check or change the contents of the buffer ref. + * + * FFmpeg calls av_buffer_unref() on it when the frame is unreferenced. + * av_frame_copy_props() calls create a new reference with av_buffer_ref() + * for the target frame's private_ref field. */ - void *private_ref; + AVBufferRef *private_ref; /** * Channel layout of the audio data. @@ -780,13 +811,6 @@ typedef struct AVFrame { * Duration of the frame, in the same units as pts. 0 if unknown. */ int64_t duration; - - /** - * Indicates how the alpha channel of the video is to be handled. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVAlphaMode alpha_mode; } AVFrame; @@ -832,7 +856,7 @@ int av_frame_ref(AVFrame *dst, const AVFrame *src); * Ensure the destination frame refers to the same data described by the source * frame, either by creating a new reference for each AVBufferRef from src if * they differ from those in dst, by allocating new buffers and copying data if - * src is not reference counted, or by unreferencing it if src is empty. + * src is not reference counted, or by unrefencing it if src is empty. * * Frame properties on dst will be replaced by those from src. * @@ -1058,11 +1082,6 @@ void av_frame_side_data_free(AVFrameSideData ***sd, int *nb_sd); * Applies only for side data types without the AV_SIDE_DATA_PROP_MULTI prop. */ #define AV_FRAME_SIDE_DATA_FLAG_REPLACE (1 << 1) -/** - * Create a new reference to the passed in buffer instead of taking ownership - * of it. - */ -#define AV_FRAME_SIDE_DATA_FLAG_NEW_REF (1 << 2) /** * Add new side data entry to an array. diff --git a/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.c b/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.c index 5b8f3ea87d..7033f060c0 100644 --- a/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.c +++ b/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.c @@ -395,313 +395,3 @@ int av_dynamic_hdr_plus_to_t35(const AVDynamicHDRPlus *s, uint8_t **data, size_t *size = size_bytes; return 0; } - -AVDynamicHDRSmpte2094App5 *av_dynamic_hdr_smpte2094_app5_alloc(size_t *size) -{ - AVDynamicHDRSmpte2094App5 *smpte2094_app5 = av_mallocz(sizeof(AVDynamicHDRSmpte2094App5)); - if (!smpte2094_app5) - return NULL; - - if (size) - *size = sizeof(*smpte2094_app5); - - return smpte2094_app5; -} - -AVDynamicHDRSmpte2094App5 *av_dynamic_hdr_smpte2094_app5_create_side_data(AVFrame *frame) -{ - AVFrameSideData *side_data = av_frame_new_side_data(frame, - AV_FRAME_DATA_DYNAMIC_HDR_SMPTE_2094_APP5, - sizeof(AVDynamicHDRSmpte2094App5)); - if (!side_data) - return NULL; - - memset(side_data->data, 0, sizeof(AVDynamicHDRSmpte2094App5)); - - return (AVDynamicHDRSmpte2094App5 *)side_data->data; -} - -#define GET_BITS_OR_FAIL(var, n) \ - do { \ - if (get_bits_left(gb) < n) { \ - ret = AVERROR_INVALIDDATA; \ - goto end; \ - } \ - var = get_bits(gb, n); \ - } while (0) - -int av_dynamic_hdr_smpte2094_app5_from_t35(AVDynamicHDRSmpte2094App5 *s, const uint8_t *data, - size_t size) -{ - GetBitContext gbc, *gb = &gbc; - int ret, reserved_zero; - size_t padded_size = size + AV_INPUT_BUFFER_PADDING_SIZE; - - if (!s) - return AVERROR(ENOMEM); - - uint8_t *padded_data = av_mallocz(padded_size); - memcpy(padded_data, data, size); - ret = init_get_bits8(gb, padded_data, size); - if (ret < 0) - goto end; - - // Table C.1 - GET_BITS_OR_FAIL(s->application_version, 3); - GET_BITS_OR_FAIL(s->minimum_application_version, 3); - GET_BITS_OR_FAIL(reserved_zero, 2); - if (reserved_zero) { - ret = AVERROR_INVALIDDATA; - goto end; - } - - // Table C.2 - GET_BITS_OR_FAIL(s->has_custom_hdr_reference_white_flag, 1); - GET_BITS_OR_FAIL(s->has_adaptive_tone_map_flag, 1); - GET_BITS_OR_FAIL(reserved_zero, 6); - if (reserved_zero) { - ret = AVERROR_INVALIDDATA; - goto end; - } - if (s->has_custom_hdr_reference_white_flag) - GET_BITS_OR_FAIL(s->hdr_reference_white, 16); - if (!s->has_adaptive_tone_map_flag) { - ret = 0; - goto end; - } - - // Table C.3 - GET_BITS_OR_FAIL(s->baseline_hdr_headroom, 16); - GET_BITS_OR_FAIL(s->use_reference_white_tone_mapping_flag, 1); - if (s->use_reference_white_tone_mapping_flag) { - GET_BITS_OR_FAIL(reserved_zero, 7); - ret = reserved_zero ? AVERROR_INVALIDDATA : 0; - goto end; - } - GET_BITS_OR_FAIL(s->num_alternate_images, 3); - if (s->num_alternate_images > 4) { - ret = AVERROR_INVALIDDATA; - goto end; - } - GET_BITS_OR_FAIL(s->gain_application_space_chromaticities_flag, 2); - GET_BITS_OR_FAIL(s->has_common_component_mix_params_flag, 1); - GET_BITS_OR_FAIL(s->has_common_curve_params_flag, 1); - if (s->gain_application_space_chromaticities_flag == 3) - for (int r = 0; r < 8; r++) - GET_BITS_OR_FAIL(s->gain_application_space_chromaticities[r], 16); - - for (int a = 0; a < s->num_alternate_images; a++) { - GET_BITS_OR_FAIL(s->alternate_hdr_headrooms[a], 16); - - // Table C.4 - if (!a || !s->has_common_component_mix_params_flag) { - GET_BITS_OR_FAIL(s->component_mixing_type[a], 2); - if (s->component_mixing_type[a] != 3) { - GET_BITS_OR_FAIL(reserved_zero, 6); - if (reserved_zero) { - ret = AVERROR_INVALIDDATA; - goto end; - } - } else { - for (int k = 0; k < 6; k++) - GET_BITS_OR_FAIL(s->has_component_mixing_coefficient_flag[a][k], 1); - for (int k = 0; k < 6; k++) { - if (s->has_component_mixing_coefficient_flag[a][k]) { - GET_BITS_OR_FAIL(s->component_mixing_coefficient[a][k], 16); - } else { - s->component_mixing_coefficient[a][k] = 0; - } - } - } - } else { - s->component_mixing_type[a] = s->component_mixing_type[0]; - if (s->component_mixing_type[a] == 3) { - for (int k = 0; k < 6; k++) { - s->has_component_mixing_coefficient_flag[a][k] = - s->has_component_mixing_coefficient_flag[0][k]; - s->component_mixing_coefficient[a][k] = s->component_mixing_coefficient[0][k]; - } - } - } - - // Table C.5 - if (!a || !s->has_common_curve_params_flag) { - GET_BITS_OR_FAIL(s->gain_curve_num_control_points_minus_1[a], 5); - if (s->gain_curve_num_control_points_minus_1[a] > 31) { - ret = AVERROR_INVALIDDATA; - goto end; - } - GET_BITS_OR_FAIL(s->gain_curve_use_pchip_slope_flag[a], 1); - GET_BITS_OR_FAIL(reserved_zero, 2); - if (reserved_zero) { - ret = AVERROR_INVALIDDATA; - goto end; - } - for (int c = 0; c <= s->gain_curve_num_control_points_minus_1[a]; c++) { - GET_BITS_OR_FAIL(s->gain_curve_control_points_x[a][c], 16); - } - } else { - s->gain_curve_num_control_points_minus_1[a] = - s->gain_curve_num_control_points_minus_1[0]; - s->gain_curve_use_pchip_slope_flag[a] = s->gain_curve_use_pchip_slope_flag[0]; - for (int c = 0; c <= s->gain_curve_num_control_points_minus_1[a]; c++) { - s->gain_curve_control_points_x[a][c] = s->gain_curve_control_points_x[0][c]; - } - } - for (int c = 0; c <= s->gain_curve_num_control_points_minus_1[a]; c++) - GET_BITS_OR_FAIL(s->gain_curve_control_points_y[a][c], 16); - if (!s->gain_curve_use_pchip_slope_flag[a]) { - for (int c = 0; c <= s->gain_curve_num_control_points_minus_1[a]; c++) - GET_BITS_OR_FAIL(s->gain_curve_control_points_theta[a][c], 16); - } - } - ret = 0; -end: - av_free(padded_data); - return ret; -} - -int av_dynamic_hdr_smpte2094_app5_to_t35(const AVDynamicHDRSmpte2094App5 *s, uint8_t **data, - size_t *size) -{ - uint8_t *buf; - size_t size_bytes, size_bits; - PutBitContext pbc, *pb = &pbc; - - if (!s) - return AVERROR(EINVAL); - if ((!data || *data) && !size) - return AVERROR(EINVAL); - - if (s->application_version >= 8 || s->minimum_application_version >= 3) - return AVERROR_INVALIDDATA; - size_bits = 0; - size_bits += 3 + 3 + 2; - size_bits += 1 + 1 + 6; - if (s->has_custom_hdr_reference_white_flag) - size_bits += 16; - if (s->has_adaptive_tone_map_flag) { - size_bits += 16 + 1; - if (s->use_reference_white_tone_mapping_flag) { - size_bits += 7; - } else { - size_bits += 3 + 2 + 1 + 1; - if (s->gain_application_space_chromaticities_flag == 3) - size_bits += 16 * 8; - if (s->num_alternate_images > 4) - return AVERROR_INVALIDDATA; - for (int a = 0; a < s->num_alternate_images; a++) { - size_bits += 16; - if (!a || !s->has_common_component_mix_params_flag) { - size_bits += 2; - if (s->component_mixing_type[a] != 3) { - size_bits += 6; - } else { - size_bits += 6; - for (int k = 0; k < 6; k++) - if (s->has_component_mixing_coefficient_flag[a][k]) - size_bits += 16; - } - } - if (!a || !s->has_common_curve_params_flag) { - size_bits += 5 + 1 + 2; - if (s->gain_curve_num_control_points_minus_1[a] > 31) - return AVERROR_INVALIDDATA; - size_bits += 16 * (s->gain_curve_num_control_points_minus_1[a] + 1); - } - size_bits += 16 * (s->gain_curve_num_control_points_minus_1[a] + 1); - if (!s->gain_curve_use_pchip_slope_flag[a]) - size_bits += 16 * (s->gain_curve_num_control_points_minus_1[a] + 1); - } - } - } - if (size_bits % 8) - return AVERROR_INVALIDDATA; - size_bytes = size_bits >> 3; - - if (!data) { - *size = size_bytes; - return 0; - } else if (*data) { - if (*size < size_bytes) - return AVERROR_BUFFER_TOO_SMALL; - buf = *data; - } else { - buf = av_malloc(size_bytes); - if (!buf) - return AVERROR(ENOMEM); - } - - init_put_bits(pb, buf, size_bytes); - - // Table C.1 - put_bits(pb, 3, s->application_version); - put_bits(pb, 3, s->minimum_application_version); - put_bits(pb, 2, 0); // reserved_zero - - // Table C.2 - put_bits(pb, 1, s->has_custom_hdr_reference_white_flag); - put_bits(pb, 1, s->has_adaptive_tone_map_flag); - put_bits(pb, 6, 0); // reserved_zero - - if (s->has_custom_hdr_reference_white_flag) - put_bits(pb, 16, s->hdr_reference_white); - - if (s->has_adaptive_tone_map_flag) { - // Table C.3 - put_bits(pb, 16, s->baseline_hdr_headroom); - put_bits(pb, 1, s->use_reference_white_tone_mapping_flag); - if (s->use_reference_white_tone_mapping_flag) { - put_bits(pb, 7, 0); // reserved_zero - } else { - put_bits(pb, 3, s->num_alternate_images); - put_bits(pb, 2, s->gain_application_space_chromaticities_flag); - put_bits(pb, 1, s->has_common_component_mix_params_flag); - put_bits(pb, 1, s->has_common_curve_params_flag); - - if (s->gain_application_space_chromaticities_flag == 3) - for (int r = 0; r < 8; r++) - put_bits(pb, 16, s->gain_application_space_chromaticities[r]); - - for (int a = 0; a < s->num_alternate_images; a++) { - put_bits(pb, 16, s->alternate_hdr_headrooms[a]); - - // Table C.4 - if (!a || !s->has_common_component_mix_params_flag) { - put_bits(pb, 2, s->component_mixing_type[a]); - if (s->component_mixing_type[a] != 3) { - put_bits(pb, 6, 0); // reserved_zero - } else { - for (int k = 0; k < 6; k++) - put_bits(pb, 1, s->has_component_mixing_coefficient_flag[a][k]); - for (int k = 0; k < 6; k++) - if (s->has_component_mixing_coefficient_flag[a][k]) - put_bits(pb, 16, s->component_mixing_coefficient[a][k]); - } - } - - // Table C.5 - if (!a || !s->has_common_curve_params_flag) { - put_bits(pb, 5, s->gain_curve_num_control_points_minus_1[a]); - put_bits(pb, 1, s->gain_curve_use_pchip_slope_flag[a]); - put_bits(pb, 2, 0); // reserved_zero - for (int c = 0; c <= s->gain_curve_num_control_points_minus_1[a]; c++) - put_bits(pb, 16, s->gain_curve_control_points_x[a][c]); - } - for (int c = 0; c <= s->gain_curve_num_control_points_minus_1[a]; c++) - put_bits(pb, 16, s->gain_curve_control_points_y[a][c]); - if (!s->gain_curve_use_pchip_slope_flag[a]) { - for (int c = 0; c <= s->gain_curve_num_control_points_minus_1[a]; c++) - put_bits(pb, 16, s->gain_curve_control_points_theta[a][c]); - } - } - } - } - - flush_put_bits(pb); - - *data = buf; - if (size) - *size = size_bytes; - return 0; -} diff --git a/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.h b/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.h index a051ac7471..5100ed6f41 100644 --- a/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.h +++ b/icecat/media/ffvpx/libavutil/hdr_dynamic_metadata.h @@ -373,108 +373,4 @@ int av_dynamic_hdr_plus_from_t35(AVDynamicHDRPlus *s, const uint8_t *data, */ int av_dynamic_hdr_plus_to_t35(const AVDynamicHDRPlus *s, uint8_t **data, size_t *size); -/** - * This struct represents dynamic metadata for color volume transform as - * specified in the SMPTE 2094-50 standard. - * - * To be used as payload of a AVFrameSideData or AVPacketSideData with the - * appropriate type. - * - * @note The struct should be allocated with - * av_dynamic_smpte2094_app5_alloc() and its size is not a part of - * the public ABI. - */ -typedef struct AVDynamicHDRSmpte2094App5 { - /** - * Section C.2.1. smpte_st_2094_50_application_info() - */ - uint8_t application_version; - uint8_t minimum_application_version; - - /** - * Section C.2.2 smpte_st_2094_50_color_volume_transform() - */ - uint8_t has_custom_hdr_reference_white_flag; - uint8_t has_adaptive_tone_map_flag; - uint16_t hdr_reference_white; - - /** - * Section C.2.3 smpte_st_2094_50_adaptive_tone_map() - */ - uint16_t baseline_hdr_headroom; - uint8_t use_reference_white_tone_mapping_flag; - uint8_t num_alternate_images; - uint8_t gain_application_space_chromaticities_flag; - uint8_t has_common_component_mix_params_flag; - uint8_t has_common_curve_params_flag; - uint16_t gain_application_space_chromaticities[8]; - uint16_t alternate_hdr_headrooms[4]; - - /** - * Section C.2.4 smpte_st_2094_50_component_mixing() - */ - uint8_t component_mixing_type[4]; - uint8_t has_component_mixing_coefficient_flag[4][6]; - uint16_t component_mixing_coefficient[4][6]; - - /** - * Section C.2.5 smpte_st_2094_50_gain_curve() - */ - uint8_t gain_curve_num_control_points_minus_1[4]; - uint8_t gain_curve_use_pchip_slope_flag[4]; - uint16_t gain_curve_control_points_x[4][32]; - uint16_t gain_curve_control_points_y[4][32]; - uint16_t gain_curve_control_points_theta[4][32]; -} AVDynamicHDRSmpte2094App5; - -/** - * Allocate an AVDynamicHDRSmpte2094App5 structure and set its fields to - * default values. The resulting struct can be freed using av_freep(). - * - * @return An AVDynamicHDRSmpte2094App5 filled with default values or NULL - * on failure. - */ -AVDynamicHDRSmpte2094App5* av_dynamic_hdr_smpte2094_app5_alloc(size_t* size); - -/** - * Allocate a complete AVDynamicHDRSmpte2094App5 and add it to the frame. - * - * @param frame The frame which side data is added to. - * - * @return The AVDynamicHDRSmpte2094App5 structure to be filled by caller or - * NULL on failure. - */ -AVDynamicHDRSmpte2094App5* av_dynamic_hdr_smpte2094_app5_create_side_data(AVFrame* frame); - -/** - * Parse the user data formatted as ITU-T T.35 message to AVDynamicHDRSmpte2094App5. - * - * @param s A pointer containing the decoded AVDynamicHDRSmpte2094App5 structure. - * @param data The byte array containing the raw ITU-T T.35 data. - * @param size Size of the data array in bytes. - * - * @return >= 0 on success. Otherwise, returns the appropriate AVERROR. - */ -int av_dynamic_hdr_smpte2094_app5_from_t35(AVDynamicHDRSmpte2094App5* s, const uint8_t* data, - size_t size); - -/** - * Serialize dynamic SMPTE-2094-50 metadata to a ITU-T T.35 message. Excluding - * the country_code, provider_code and provider_oriented_code. - * - * @param s A pointer containing the AVDynamicHDRSmpte2094App5 data. - * @param[in,out] data A pointer to pointer to a byte buffer to be filled with - * the serialized metadata. If *data is NULL, a buffer be will be allocated and - * a pointer to it stored in its place. The caller assumes ownership of the - * buffer. May be NULL, in which case the function will only store the required - * buffer size in *size. - * @param[in,out] size A pointer to a size to be set to the returned buffer's - * size. If *data is not NULL, *size must contain the size of the input buffer. - * May be NULL only if *data is NULL. - * - * @return >= 0 on success. Otherwise, returns the appropriate AVERROR. - */ -int av_dynamic_hdr_smpte2094_app5_to_t35(const AVDynamicHDRSmpte2094App5* s, uint8_t** data, - size_t* size); - #endif /* AVUTIL_HDR_DYNAMIC_METADATA_H */ diff --git a/icecat/media/ffvpx/libavutil/hwcontext.c b/icecat/media/ffvpx/libavutil/hwcontext.c index 83bd7457e8..fa99a0d8a4 100644 --- a/icecat/media/ffvpx/libavutil/hwcontext.c +++ b/icecat/media/ffvpx/libavutil/hwcontext.c @@ -65,12 +65,6 @@ static const HWContextType * const hw_table[] = { #endif #if CONFIG_VULKAN &ff_hwcontext_type_vulkan, -#endif -#if CONFIG_AMF - &ff_hwcontext_type_amf, -#endif -#if CONFIG_OHCODEC - &ff_hwcontext_type_oh, #endif NULL, }; @@ -88,8 +82,6 @@ static const char *const hw_type_names[] = { [AV_HWDEVICE_TYPE_VIDEOTOOLBOX] = "videotoolbox", [AV_HWDEVICE_TYPE_MEDIACODEC] = "mediacodec", [AV_HWDEVICE_TYPE_VULKAN] = "vulkan", - [AV_HWDEVICE_TYPE_AMF] = "amf", - [AV_HWDEVICE_TYPE_OHCODEC] = "ohcodec", }; typedef struct FFHWDeviceContext { @@ -141,16 +133,9 @@ enum AVHWDeviceType av_hwdevice_iterate_types(enum AVHWDeviceType prev) return set ? next : AV_HWDEVICE_TYPE_NONE; } -static const char *hwdevice_ctx_get_name(void *ptr) -{ - FFHWDeviceContext *ctx = ptr; - return ctx->hw_type->name; -} - static const AVClass hwdevice_ctx_class = { .class_name = "AVHWDeviceContext", - .item_name = hwdevice_ctx_get_name, - .category = AV_CLASS_CATEGORY_HWDEVICE, + .item_name = av_default_item_name, .version = LIBAVUTIL_VERSION_INT, }; diff --git a/icecat/media/ffvpx/libavutil/hwcontext.h b/icecat/media/ffvpx/libavutil/hwcontext.h index 29374cf0a7..bac30debae 100644 --- a/icecat/media/ffvpx/libavutil/hwcontext.h +++ b/icecat/media/ffvpx/libavutil/hwcontext.h @@ -38,9 +38,6 @@ enum AVHWDeviceType { AV_HWDEVICE_TYPE_MEDIACODEC, AV_HWDEVICE_TYPE_VULKAN, AV_HWDEVICE_TYPE_D3D12VA, - AV_HWDEVICE_TYPE_AMF, - /* OpenHarmony Codec device */ - AV_HWDEVICE_TYPE_OHCODEC, }; /** @@ -563,7 +560,7 @@ enum { * values indicate that it failed somehow. * * On failure, the destination frame will be left blank, except for the - * hw_frames_ctx/format fields they may have been set by the caller - those will + * hw_frames_ctx/format fields thay may have been set by the caller - those will * be preserved as they were. * * @param dst Destination frame, to contain the mapping. diff --git a/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.c b/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.c index 418fe9dfda..1a047ce57b 100644 --- a/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.c +++ b/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.c @@ -42,8 +42,6 @@ #include "thread.h" #include "compat/w32dlfcn.h" -#define MAX_ARRAY_SIZE 64 // Driver specification limits ArraySize to 64 for decoder-bound resources - typedef HRESULT(WINAPI *PFN_CREATE_DXGI_FACTORY)(REFIID riid, void **ppFactory); static AVOnce functions_loaded = AV_ONCE_INIT; @@ -290,11 +288,6 @@ static int d3d11va_frames_init(AVHWFramesContext *ctx) return AVERROR(EINVAL); } - hwctx->BindFlags |= device_hwctx->BindFlags; - hwctx->MiscFlags |= device_hwctx->MiscFlags; - - ctx->initial_pool_size = FFMIN(ctx->initial_pool_size, MAX_ARRAY_SIZE); - texDesc = (D3D11_TEXTURE2D_DESC){ .Width = ctx->width, .Height = ctx->height, @@ -321,7 +314,7 @@ static int d3d11va_frames_init(AVHWFramesContext *ctx) ctx->initial_pool_size = texDesc2.ArraySize; hwctx->BindFlags = texDesc2.BindFlags; hwctx->MiscFlags = texDesc2.MiscFlags; - } else if (texDesc.ArraySize > 0) { + } else if (!(texDesc.BindFlags & D3D11_BIND_RENDER_TARGET) && texDesc.ArraySize > 0) { hr = ID3D11Device_CreateTexture2D(device_hwctx->device, &texDesc, NULL, &hwctx->texture); if (FAILED(hr)) { av_log(ctx, AV_LOG_ERROR, "Could not create the texture (%lx)\n", (long)hr); @@ -713,18 +706,6 @@ static int d3d11va_device_create(AVHWDeviceContext *ctx, const char *device, } #endif - if (av_dict_get(opts, "SHADER", NULL, 0)) - device_hwctx->BindFlags |= D3D11_BIND_SHADER_RESOURCE; - - if (av_dict_get(opts, "UAV", NULL, 0)) - device_hwctx->BindFlags |= D3D11_BIND_UNORDERED_ACCESS; - - if (av_dict_get(opts, "RTV", NULL, 0)) - device_hwctx->BindFlags |= D3D11_BIND_RENDER_TARGET; - - if (av_dict_get(opts, "SHARED", NULL, 0)) - device_hwctx->MiscFlags |= D3D11_RESOURCE_MISC_SHARED; - return 0; } diff --git a/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.h b/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.h index b87b1e8fa2..77d2d72f1b 100644 --- a/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.h +++ b/icecat/media/ffvpx/libavutil/hwcontext_d3d11va.h @@ -94,20 +94,6 @@ typedef struct AVD3D11VADeviceContext { void (*lock)(void *lock_ctx); void (*unlock)(void *lock_ctx); void *lock_ctx; - /** - * D3D11_TEXTURE2D_DESC.BindFlags to be applied to D3D11 resources allocated - * for frames using this device context. - * - * It applies globally to all AVD3D11VAFramesContext allocated from this device context. - */ - UINT BindFlags; - /** - * D3D11_TEXTURE2D_DESC.MiscFlags to be applied to D3D11 resources allocated - * for frames using this device context. - * - * It applies globally to all AVD3D11VAFramesContext allocated from this device context. - */ - UINT MiscFlags; } AVD3D11VADeviceContext; /** diff --git a/icecat/media/ffvpx/libavutil/hwcontext_internal.h b/icecat/media/ffvpx/libavutil/hwcontext_internal.h index dcfdc2016a..e32b786238 100644 --- a/icecat/media/ffvpx/libavutil/hwcontext_internal.h +++ b/icecat/media/ffvpx/libavutil/hwcontext_internal.h @@ -163,7 +163,5 @@ extern const HWContextType ff_hwcontext_type_vdpau; extern const HWContextType ff_hwcontext_type_videotoolbox; extern const HWContextType ff_hwcontext_type_mediacodec; extern const HWContextType ff_hwcontext_type_vulkan; -extern const HWContextType ff_hwcontext_type_amf; -extern const HWContextType ff_hwcontext_type_oh; #endif /* AVUTIL_HWCONTEXT_INTERNAL_H */ diff --git a/icecat/media/ffvpx/libavutil/hwcontext_mediacodec.c b/icecat/media/ffvpx/libavutil/hwcontext_mediacodec.c deleted file mode 100644 index 9ed6a8717a..0000000000 --- a/icecat/media/ffvpx/libavutil/hwcontext_mediacodec.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include -#include -#include - -#include "buffer.h" -#include "common.h" -#include "hwcontext.h" -#include "hwcontext_internal.h" -#include "hwcontext_mediacodec.h" - -typedef struct MediaCodecDeviceContext { - AVMediaCodecDeviceContext ctx; - - void *libmedia; - media_status_t (*create_surface)(ANativeWindow **surface); -} MediaCodecDeviceContext; - - -static int mc_device_create(AVHWDeviceContext *ctx, const char *device, - AVDictionary *opts, int flags) -{ - const AVDictionaryEntry *entry = NULL; - MediaCodecDeviceContext *s = ctx->hwctx; - AVMediaCodecDeviceContext *dev = &s->ctx; - - if (device && device[0]) { - av_log(ctx, AV_LOG_ERROR, "Device selection unsupported.\n"); - return AVERROR_UNKNOWN; - } - - while ((entry = av_dict_iterate(opts, entry))) { - if (!strcmp(entry->key, "create_window")) - dev->create_window = atoi(entry->value); - } - - av_log(ctx, AV_LOG_DEBUG, "%s createPersistentInputSurface\n", - dev->create_window ? "Enable" : "Disable"); - - return 0; -} - -static int mc_device_init(AVHWDeviceContext *ctx) -{ - MediaCodecDeviceContext *s = ctx->hwctx; - AVMediaCodecDeviceContext *dev = (AVMediaCodecDeviceContext *)s; - ANativeWindow *native_window = NULL; - - if (dev->surface) - return 0; - - if (dev->native_window) - return 0; - - // For backward compatibility, don't return error for a dummy - // AVHWDeviceContext without surface or native_window. - if (!dev->create_window) - return 0; - - s->libmedia = dlopen("libmediandk.so", RTLD_NOW); - if (!s->libmedia) - return AVERROR_UNKNOWN; - - s->create_surface = dlsym(s->libmedia, "AMediaCodec_createPersistentInputSurface"); - if (!s->create_surface) - return AVERROR_UNKNOWN; - - s->create_surface(&native_window); - dev->native_window = native_window; - return 0; -} - -static void mc_device_uninit(AVHWDeviceContext *ctx) -{ - MediaCodecDeviceContext *s = ctx->hwctx; - AVMediaCodecDeviceContext *dev = ctx->hwctx; - if (!s->libmedia) - return; - - if (dev->native_window) { - ANativeWindow_release(dev->native_window); - dev->native_window = NULL; - } - dlclose(s->libmedia); - s->libmedia = NULL; -} - -const HWContextType ff_hwcontext_type_mediacodec = { - .type = AV_HWDEVICE_TYPE_MEDIACODEC, - .name = "mediacodec", - - .device_hwctx_size = sizeof(MediaCodecDeviceContext), - - .device_create = mc_device_create, - .device_init = mc_device_init, - .device_uninit = mc_device_uninit, - - .pix_fmts = (const enum AVPixelFormat[]){ - AV_PIX_FMT_MEDIACODEC, - AV_PIX_FMT_NONE - }, -}; diff --git a/icecat/media/ffvpx/libavutil/hwcontext_mediacodec.h b/icecat/media/ffvpx/libavutil/hwcontext_mediacodec.h deleted file mode 100644 index fc0263cabc..0000000000 --- a/icecat/media/ffvpx/libavutil/hwcontext_mediacodec.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HWCONTEXT_MEDIACODEC_H -#define AVUTIL_HWCONTEXT_MEDIACODEC_H - -/** - * MediaCodec details. - * - * Allocated as AVHWDeviceContext.hwctx - */ -typedef struct AVMediaCodecDeviceContext { - /** - * android/view/Surface handle, to be filled by the user. - * - * This is the default surface used by decoders on this device. - */ - void *surface; - - /** - * Pointer to ANativeWindow. - * - * It both surface and native_window is NULL, try to create it - * automatically if create_window is true and OS support - * createPersistentInputSurface. - * - * It can be used as output surface for decoder and input surface for - * encoder. - */ - void *native_window; - - /** - * Enable createPersistentInputSurface automatically. - * - * Disabled by default. - * - * It can be enabled by setting this flag directly, or by setting - * AVDictionary of av_hwdevice_ctx_create(), with "create_window" as key. - * The second method is useful for ffmpeg cmdline, e.g., we can enable it - * via: - * -init_hw_device mediacodec=mediacodec,create_window=1 - */ - int create_window; -} AVMediaCodecDeviceContext; - -#endif /* AVUTIL_HWCONTEXT_MEDIACODEC_H */ diff --git a/icecat/media/ffvpx/libavutil/hwcontext_vaapi.c b/icecat/media/ffvpx/libavutil/hwcontext_vaapi.c index 98130f9fb1..f201be08a6 100644 --- a/icecat/media/ffvpx/libavutil/hwcontext_vaapi.c +++ b/icecat/media/ffvpx/libavutil/hwcontext_vaapi.c @@ -37,7 +37,7 @@ typedef HRESULT (WINAPI *PFN_CREATE_DXGI_FACTORY)(REFIID riid, void **ppFactory) #if CONFIG_LIBDRM # include # include -# include +# include # ifndef DRM_FORMAT_MOD_INVALID # define DRM_FORMAT_MOD_INVALID ((1ULL << 56) - 1) # endif @@ -72,7 +72,6 @@ typedef struct VAAPIDevicePriv { typedef struct VAAPISurfaceFormat { enum AVPixelFormat pix_fmt; VAImageFormat image_format; - unsigned int fourcc; } VAAPISurfaceFormat; typedef struct VAAPIDeviceContext { @@ -195,17 +194,12 @@ static const VAAPIFormatDescriptor * } static const VAAPIFormatDescriptor * - vaapi_format_from_pix_fmt(enum AVPixelFormat pix_fmt, const VAAPIFormatDescriptor *prev) + vaapi_format_from_pix_fmt(enum AVPixelFormat pix_fmt) { - const VAAPIFormatDescriptor *end = &vaapi_format_map[FF_ARRAY_ELEMS(vaapi_format_map)]; - if (!prev) - prev = vaapi_format_map; - else - prev++; - - for (; prev < end; prev++) - if (prev->pix_fmt == pix_fmt) - return prev; + int i; + for (i = 0; i < FF_ARRAY_ELEMS(vaapi_format_map); i++) + if (vaapi_format_map[i].pix_fmt == pix_fmt) + return &vaapi_format_map[i]; return NULL; } @@ -219,37 +213,21 @@ static enum AVPixelFormat vaapi_pix_fmt_from_fourcc(unsigned int fourcc) return AV_PIX_FMT_NONE; } -static int vaapi_get_img_desc_and_format(AVHWDeviceContext *hwdev, - enum AVPixelFormat pix_fmt, - const VAAPIFormatDescriptor **_desc, - VAImageFormat **image_format) -{ - VAAPIDeviceContext *ctx = hwdev->hwctx; - const VAAPIFormatDescriptor *desc = NULL; - int i; - - while ((desc = vaapi_format_from_pix_fmt(pix_fmt, desc))) { - for (i = 0; i < ctx->nb_formats; i++) { - if (ctx->formats[i].fourcc == desc->fourcc) { - if (_desc) - *_desc = desc; - if (image_format) - *image_format = &ctx->formats[i].image_format; - return 0; - } - } - } - - return AVERROR(ENOSYS); -} - static int vaapi_get_image_format(AVHWDeviceContext *hwdev, enum AVPixelFormat pix_fmt, VAImageFormat **image_format) { - if (!image_format) - return AVERROR(EINVAL); - return vaapi_get_img_desc_and_format(hwdev, pix_fmt, NULL, image_format); + VAAPIDeviceContext *ctx = hwdev->hwctx; + int i; + + for (i = 0; i < ctx->nb_formats; i++) { + if (ctx->formats[i].pix_fmt == pix_fmt) { + if (image_format) + *image_format = &ctx->formats[i].image_format; + return 0; + } + } + return AVERROR(ENOSYS); } static int vaapi_frames_get_constraints(AVHWDeviceContext *hwdev, @@ -457,7 +435,6 @@ static int vaapi_device_init(AVHWDeviceContext *hwdev) av_log(hwdev, AV_LOG_DEBUG, "Format %#x -> %s.\n", fourcc, av_get_pix_fmt_name(pix_fmt)); ctx->formats[ctx->nb_formats].pix_fmt = pix_fmt; - ctx->formats[ctx->nb_formats].fourcc = fourcc; ctx->formats[ctx->nb_formats].image_format = image_list[i]; ++ctx->nb_formats; } @@ -577,23 +554,19 @@ static int vaapi_frames_init(AVHWFramesContext *hwfc) VAAPIFramesContext *ctx = hwfc->hwctx; AVVAAPIFramesContext *avfc = &ctx->p; AVVAAPIDeviceContext *hwctx = hwfc->device_ctx->hwctx; - const VAAPIFormatDescriptor *desc = NULL; - VAImageFormat *expected_format = NULL; + const VAAPIFormatDescriptor *desc; + VAImageFormat *expected_format; AVBufferRef *test_surface = NULL; VASurfaceID test_surface_id; VAImage test_image; VAStatus vas; int err, i; - err = vaapi_get_img_desc_and_format(hwfc->device_ctx, hwfc->sw_format, - &desc, &expected_format); - if (err < 0) { - // Use a relaxed check when pool exist. It can be an external pool. - if (!hwfc->pool || !vaapi_format_from_pix_fmt(hwfc->sw_format, NULL)) { - av_log(hwfc, AV_LOG_ERROR, "Unsupported format: %s.\n", - av_get_pix_fmt_name(hwfc->sw_format)); - return AVERROR(EINVAL); - } + desc = vaapi_format_from_pix_fmt(hwfc->sw_format); + if (!desc) { + av_log(hwfc, AV_LOG_ERROR, "Unsupported format: %s.\n", + av_get_pix_fmt_name(hwfc->sw_format)); + return AVERROR(EINVAL); } if (!hwfc->pool) { @@ -692,7 +665,10 @@ static int vaapi_frames_init(AVHWFramesContext *hwfc) test_surface_id = (VASurfaceID)(uintptr_t)test_surface->data; ctx->derive_works = 0; - if (expected_format) { + + err = vaapi_get_image_format(hwfc->device_ctx, + hwfc->sw_format, &expected_format); + if (err == 0) { vas = vaDeriveImage(hwctx->display, test_surface_id, &test_image); if (vas == VA_STATUS_SUCCESS) { if (expected_format->fourcc == test_image.format.fourcc) { @@ -1035,6 +1011,12 @@ static int vaapi_map_to_memory(AVHWFramesContext *hwfc, AVFrame *dst, { int err; + if (dst->format != AV_PIX_FMT_NONE) { + err = vaapi_get_image_format(hwfc->device_ctx, dst->format, NULL); + if (err < 0) + return err; + } + err = vaapi_map_frame(hwfc, dst, src, flags); if (err) return err; @@ -1715,7 +1697,7 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, VAAPIDevicePriv *priv; VADisplay display = NULL; const AVDictionaryEntry *ent; - int try_drm, try_x11, try_win32, try_all av_unused; + int try_drm, try_x11, try_win32, try_all; priv = av_mallocz(sizeof(*priv)); if (!priv) @@ -1831,7 +1813,6 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, "Failed to get DRM device info for device %d.\n", n); close(priv->drm_fd); priv->drm_fd = -1; - drmFreeVersion(info); continue; } @@ -1843,7 +1824,6 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, drmFreeDevice(&device); close(priv->drm_fd); priv->drm_fd = -1; - drmFreeVersion(info); continue; } av_log(ctx, AV_LOG_VERBOSE, "Trying to use " @@ -1851,7 +1831,6 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, const char *device, "with matching vendor id (%s).\n", n, vendor_id->value); drmFreeDevice(&device); - drmFreeVersion(info); break; } drmFreeVersion(info); diff --git a/icecat/media/ffvpx/libavutil/hwcontext_vaapi.h b/icecat/media/ffvpx/libavutil/hwcontext_vaapi.h index 82e4194a92..0b2e071cb3 100644 --- a/icecat/media/ffvpx/libavutil/hwcontext_vaapi.h +++ b/icecat/media/ffvpx/libavutil/hwcontext_vaapi.h @@ -26,7 +26,7 @@ * API-specific header for AV_HWDEVICE_TYPE_VAAPI. * * Dynamic frame pools are supported, but note that any pool used as a render - * target is required to be of fixed size in order to be usable as an + * target is required to be of fixed size in order to be be usable as an * argument to vaCreateContext(). * * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs diff --git a/icecat/media/ffvpx/libavutil/imgutils.c b/icecat/media/ffvpx/libavutil/imgutils.c index 8ff8a6be41..7b88738e2d 100644 --- a/icecat/media/ffvpx/libavutil/imgutils.c +++ b/icecat/media/ffvpx/libavutil/imgutils.c @@ -63,7 +63,7 @@ int image_get_linesize(int width, int plane, if (width < 0) return AVERROR(EINVAL); s = (max_step_comp == 1 || max_step_comp == 2) ? desc->log2_chroma_w : 0; - shifted_w = AV_CEIL_RSHIFT(width, s); + shifted_w = ((width + (1 << s) - 1)) >> s; if (shifted_w && max_step > INT_MAX / shifted_w) return AVERROR(EINVAL); linesize = max_step * shifted_w; @@ -133,7 +133,7 @@ int av_image_fill_plane_sizes(size_t sizes[4], enum AVPixelFormat pix_fmt, for (i = 1; i < 4 && has_plane[i]; i++) { int h, s = (i == 1 || i == 2) ? desc->log2_chroma_h : 0; - h = AV_CEIL_RSHIFT(height, s); + h = (height + (1 << s) - 1) >> s; if (linesizes[i] > SIZE_MAX / h) return AVERROR(EINVAL); sizes[i] = (size_t)h * linesizes[i]; @@ -362,7 +362,7 @@ void av_image_copy_plane_uc_from(uint8_t *dst, ptrdiff_t dst_linesize, { int ret = -1; -#if ARCH_X86 && HAVE_X86ASM +#if ARCH_X86 ret = ff_image_copy_plane_uc_from_x86(dst, dst_linesize, src, src_linesize, bytewidth, height); #endif @@ -523,7 +523,7 @@ int av_image_copy_to_buffer(uint8_t *dst, int dst_size, for (i = 0; i < nb_planes; i++) { int h, shift = (i == 1 || i == 2) ? desc->log2_chroma_h : 0; const uint8_t *src = src_data[i]; - h = AV_CEIL_RSHIFT(height, shift); + h = (height + (1 << shift) - 1) >> shift; for (j = 0; j < h; j++) { memcpy(dst, src, linesize[i]); @@ -646,7 +646,7 @@ int av_image_fill_color(uint8_t * const dst_data[4], const ptrdiff_t dst_linesiz size_t bytewidth = plane_line_bytes[plane]; uint8_t *data = dst_data[plane]; int chroma_div = plane == 1 || plane == 2 ? desc->log2_chroma_h : 0; - int plane_h = AV_CEIL_RSHIFT(height, chroma_div); + int plane_h = ((height + ( 1 << chroma_div) - 1)) >> chroma_div; for (; plane_h > 0; plane_h--) { memset_bytes(data, bytewidth, &clear_block[plane][0], clear_block_size[plane]); diff --git a/icecat/media/ffvpx/libavutil/internal.h b/icecat/media/ffvpx/libavutil/internal.h index 2a85170795..ac1af367e9 100644 --- a/icecat/media/ffvpx/libavutil/internal.h +++ b/icecat/media/ffvpx/libavutil/internal.h @@ -115,6 +115,20 @@ void avpriv_report_missing_feature(void *avc, void avpriv_request_sample(void *avc, const char *msg, ...) av_printf_format(2, 3); +#if HAVE_LIBC_MSVCRT +#include +#if defined(_VC_CRT_MAJOR_VERSION) && _VC_CRT_MAJOR_VERSION < 14 +#pragma comment(linker, "/include:" EXTERN_PREFIX "avpriv_strtod") +#pragma comment(linker, "/include:" EXTERN_PREFIX "avpriv_snprintf") +#endif + +#define PTRDIFF_SPECIFIER "Id" +#define SIZE_SPECIFIER "Iu" +#else +#define PTRDIFF_SPECIFIER "td" +#define SIZE_SPECIFIER "zu" +#endif + #ifdef DEBUG # define ff_dlog(ctx, ...) av_log(ctx, AV_LOG_DEBUG, __VA_ARGS__) #else @@ -127,7 +141,7 @@ void avpriv_request_sample(void *avc, # define ff_tlog(ctx, ...) do { } while(0) #endif -// For debugging we use signed operations so overflows can be detected (by ubsan) +// For debuging we use signed operations so overflows can be detected (by ubsan) // For production we use unsigned so there are no undefined operations #ifdef CHECKED #define SUINT int diff --git a/icecat/media/ffvpx/libavutil/intmath.h b/icecat/media/ffvpx/libavutil/intmath.h index b177a848c6..52e11a8d5f 100644 --- a/icecat/media/ffvpx/libavutil/intmath.h +++ b/icecat/media/ffvpx/libavutil/intmath.h @@ -35,7 +35,7 @@ #endif #if HAVE_FAST_CLZ -#if AV_GCC_VERSION_AT_LEAST(3,4) || AV_HAS_BUILTIN(__builtin_clz) +#if AV_GCC_VERSION_AT_LEAST(3,4) #ifndef ff_log2 # define ff_log2(x) (31 - __builtin_clz((x)|1)) # ifndef ff_log2_16bit @@ -90,16 +90,18 @@ static av_always_inline av_const int ff_log2_16bit_c(unsigned int v) */ #if HAVE_FAST_CLZ -#if !defined(ff_ctz) && (AV_GCC_VERSION_AT_LEAST(3,4) || AV_HAS_BUILTIN(__builtin_ctz)) +#if AV_GCC_VERSION_AT_LEAST(3,4) +#ifndef ff_ctz #define ff_ctz(v) __builtin_ctz(v) #endif -#if !defined(ff_ctzll) && (AV_GCC_VERSION_AT_LEAST(3,4) || AV_HAS_BUILTIN(__builtin_ctzll)) +#ifndef ff_ctzll #define ff_ctzll(v) __builtin_ctzll(v) #endif -#if !defined(ff_clz) && (AV_GCC_VERSION_AT_LEAST(3,4) || AV_HAS_BUILTIN(__builtin_clz)) +#ifndef ff_clz #define ff_clz(v) __builtin_clz(v) #endif #endif +#endif #ifndef ff_ctz #define ff_ctz ff_ctz_c @@ -152,7 +154,7 @@ static av_always_inline av_const unsigned ff_clz_c(unsigned x) } #endif -#if AV_GCC_VERSION_AT_LEAST(3,4) || AV_HAS_BUILTIN(__builtin_parity) +#if AV_GCC_VERSION_AT_LEAST(3,4) #ifndef av_parity #define av_parity __builtin_parity #endif diff --git a/icecat/media/ffvpx/libavutil/libm.h b/icecat/media/ffvpx/libavutil/libm.h index e560885d5d..185e486022 100644 --- a/icecat/media/ffvpx/libavutil/libm.h +++ b/icecat/media/ffvpx/libavutil/libm.h @@ -28,9 +28,7 @@ #include #include "config.h" #include "attributes.h" -#if !(HAVE_COPYSIGN && HAVE_HYPOT && HAVE_ISFINITE && HAVE_ISINF && HAVE_ISNAN) #include "intfloat.h" -#endif #include "mathematics.h" #if HAVE_MIPSFPU && HAVE_INLINE_ASM diff --git a/icecat/media/ffvpx/libavutil/lls.c b/icecat/media/ffvpx/libavutil/lls.c index 27168009c5..fe8f55976d 100644 --- a/icecat/media/ffvpx/libavutil/lls.c +++ b/icecat/media/ffvpx/libavutil/lls.c @@ -114,7 +114,7 @@ av_cold void avpriv_init_lls(LLSModel *m, int indep_count) m->evaluate_lls = evaluate_lls; #if ARCH_RISCV ff_init_lls_riscv(m); -#elif ARCH_X86 && HAVE_X86ASM +#elif ARCH_X86 ff_init_lls_x86(m); #endif } diff --git a/icecat/media/ffvpx/libavutil/log.c b/icecat/media/ffvpx/libavutil/log.c index dd22ccf7e4..46662f3db0 100644 --- a/icecat/media/ffvpx/libavutil/log.c +++ b/icecat/media/ffvpx/libavutil/log.c @@ -34,7 +34,6 @@ #endif #include #include -#include #include #include #include @@ -43,8 +42,6 @@ #include "internal.h" #include "log.h" #include "thread.h" -#include "fftime.h" -#include "time_internal.h" static AVMutex mutex = AV_MUTEX_INITIALIZER; @@ -56,8 +53,8 @@ static AVMutex mutex = AV_MUTEX_INITIALIZER; #define BACKTRACE_LOGLEVEL AV_LOG_ERROR #endif -static atomic_int av_log_level = AV_LOG_INFO; -static atomic_int av_log_flags = 0; +static int av_log_level = AV_LOG_INFO; +static int flags; #define NB_LEVELS 8 #if defined(_WIN32) && HAVE_SETCONSOLETEXTATTRIBUTE && HAVE_GETSTDHANDLE @@ -82,7 +79,6 @@ static const uint8_t color[16 + AV_CLASS_CATEGORY_NB] = { [16+AV_CLASS_CATEGORY_BITSTREAM_FILTER] = 9, [16+AV_CLASS_CATEGORY_SWSCALER ] = 7, [16+AV_CLASS_CATEGORY_SWRESAMPLER ] = 7, - [16+AV_CLASS_CATEGORY_HWDEVICE ] = 6, [16+AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT ] = 13, [16+AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT ] = 5, [16+AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT ] = 13, @@ -115,7 +111,6 @@ static const uint32_t color[16 + AV_CLASS_CATEGORY_NB] = { [16+AV_CLASS_CATEGORY_BITSTREAM_FILTER] = 192 << 8 | 0x14, [16+AV_CLASS_CATEGORY_SWSCALER ] = 153 << 8 | 0x14, [16+AV_CLASS_CATEGORY_SWRESAMPLER ] = 147 << 8 | 0x14, - [16+AV_CLASS_CATEGORY_HWDEVICE ] = 214 << 8 | 0x13, [16+AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT ] = 213 << 8 | 0x15, [16+AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT ] = 207 << 8 | 0x05, [16+AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT ] = 213 << 8 | 0x15, @@ -301,33 +296,14 @@ static const char *item_name(void *obj, const AVClass *cls) return (cls->item_name ? cls->item_name : av_default_item_name)(obj); } -static void format_date_now(AVBPrint* bp_time, int include_date) -{ - struct tm *ptm, tmbuf; - const int64_t time_us = av_gettime(); - const int64_t time_ms = time_us / 1000; - const time_t time_s = time_ms / 1000; - const int millisec = time_ms - (time_s * 1000); - ptm = localtime_r(&time_s, &tmbuf); - if (ptm) { - if (include_date) - av_bprint_strftime(bp_time, "%Y-%m-%d ", ptm); - - av_bprint_strftime(bp_time, "%H:%M:%S", ptm); - av_bprintf(bp_time, ".%03d ", millisec); - } -} - static void format_line(void *avcl, int level, const char *fmt, va_list vl, - AVBPrint part[5], int *print_prefix, int type[2]) + AVBPrint part[4], int *print_prefix, int type[2]) { AVClass* avc = avcl ? *(AVClass **) avcl : NULL; av_bprint_init(part+0, 0, AV_BPRINT_SIZE_AUTOMATIC); av_bprint_init(part+1, 0, AV_BPRINT_SIZE_AUTOMATIC); av_bprint_init(part+2, 0, AV_BPRINT_SIZE_AUTOMATIC); av_bprint_init(part+3, 0, 65536); - av_bprint_init(part+4, 0, AV_BPRINT_SIZE_AUTOMATIC); - int flags = atomic_load_explicit(&av_log_flags, memory_order_relaxed); if(type) type[0] = type[1] = AV_CLASS_CATEGORY_NA + 16; if (*print_prefix && avc) { @@ -345,9 +321,6 @@ static void format_line(void *avcl, int level, const char *fmt, va_list vl, if(type) type[1] = get_category(avcl); } - if (*print_prefix && (level > AV_LOG_QUIET) && (flags & (AV_LOG_PRINT_TIME | AV_LOG_PRINT_DATETIME))) - format_date_now(&part[4], flags & AV_LOG_PRINT_DATETIME); - if (*print_prefix && (level > AV_LOG_QUIET) && (flags & AV_LOG_PRINT_LEVEL)) av_bprintf(part+2, "[%s] ", get_level_str(level)); @@ -368,7 +341,7 @@ void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, char *line, int line_size, int *print_prefix) { - AVBPrint part[5]; + AVBPrint part[4]; int ret; format_line(ptr, level, fmt, vl, part, print_prefix, NULL); @@ -382,7 +355,7 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl) static int print_prefix = 1; static int count; static char prev[LINE_SZ]; - AVBPrint part[5]; + AVBPrint part[4]; char line[LINE_SZ]; static int is_atty; int type[2]; @@ -393,7 +366,7 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl) level &= 0xff; } - if (level > atomic_load_explicit(&av_log_level, memory_order_relaxed)) + if (level > av_log_level) return; ff_mutex_lock(&mutex); @@ -405,7 +378,7 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl) is_atty = isatty(2) ? 1 : -1; #endif - if (print_prefix && (atomic_load_explicit(&av_log_flags, memory_order_relaxed) & AV_LOG_SKIP_REPEATED) && !strcmp(line, prev) && + if (print_prefix && (flags & AV_LOG_SKIP_REPEATED) && !strcmp(line, prev) && *line && line[strlen(line) - 1] != '\r'){ count++; if (is_atty == 1) @@ -417,9 +390,6 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl) count = 0; } strcpy(prev, line); - - sanitize(part[4].str); - colored_fputs(7, 0, part[4].str); sanitize(part[0].str); colored_fputs(type[0], 0, part[0].str); sanitize(part[1].str); @@ -438,7 +408,8 @@ end: ff_mutex_unlock(&mutex); } -static atomic_uintptr_t av_log_callback = (uintptr_t)av_log_default_callback; +static void (*av_log_callback)(void*, int, const char*, va_list) = + av_log_default_callback; void av_log(void* avcl, int level, const char *fmt, ...) { @@ -460,8 +431,7 @@ void av_log_once(void* avcl, int initial_level, int subsequent_level, int *state void av_vlog(void* avcl, int level, const char *fmt, va_list vl) { AVClass* avc = avcl ? *(AVClass **) avcl : NULL; - void (*log_callback)(void*, int, const char*, va_list) = - (void *)atomic_load_explicit(&av_log_callback, memory_order_relaxed); + void (*log_callback)(void*, int, const char*, va_list) = av_log_callback; if (avc && avc->version >= (50 << 16 | 15 << 8 | 2) && avc->log_level_offset_offset && level >= AV_LOG_FATAL) level += *(int *) (((uint8_t *) avcl) + avc->log_level_offset_offset); @@ -471,27 +441,27 @@ void av_vlog(void* avcl, int level, const char *fmt, va_list vl) int av_log_get_level(void) { - return atomic_load_explicit(&av_log_level, memory_order_relaxed); + return av_log_level; } void av_log_set_level(int level) { - atomic_store_explicit(&av_log_level, level, memory_order_relaxed); + av_log_level = level; } void av_log_set_flags(int arg) { - atomic_store_explicit(&av_log_flags, arg, memory_order_relaxed); + flags = arg; } int av_log_get_flags(void) { - return atomic_load_explicit(&av_log_flags, memory_order_relaxed); + return flags; } void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)) { - atomic_store_explicit(&av_log_callback, (uintptr_t)callback, memory_order_relaxed); + av_log_callback = callback; } static void missing_feature_sample(int sample, void *avc, const char *msg, diff --git a/icecat/media/ffvpx/libavutil/log.h b/icecat/media/ffvpx/libavutil/log.h index 4a111ca9a5..4c8c92266f 100644 --- a/icecat/media/ffvpx/libavutil/log.h +++ b/icecat/media/ffvpx/libavutil/log.h @@ -37,7 +37,6 @@ typedef enum { AV_CLASS_CATEGORY_BITSTREAM_FILTER, AV_CLASS_CATEGORY_SWSCALER, AV_CLASS_CATEGORY_SWRESAMPLER, - AV_CLASS_CATEGORY_HWDEVICE, AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40, AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT, AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT, @@ -277,9 +276,9 @@ void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); * @param avcl A pointer to an arbitrary struct of which the first field is a * pointer to an AVClass struct or NULL if general log. * @param initial_level importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant" for the first occurrence. + * lavu_log_constants "Logging Constant" for the first occurance. * @param subsequent_level importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant" after the first occurrence. + * lavu_log_constants "Logging Constant" after the first occurance. * @param fmt The format string (printf-compatible) that specifies how * subsequent arguments are converted to output. * @param state a variable to keep trak of if a message has already been printed @@ -407,16 +406,6 @@ int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, */ #define AV_LOG_PRINT_LEVEL 2 -/** - * Include system time in log output. - */ -#define AV_LOG_PRINT_TIME 4 - -/** - * Include system date and time in log output. - */ -#define AV_LOG_PRINT_DATETIME 8 - void av_log_set_flags(int arg); int av_log_get_flags(void); diff --git a/icecat/media/ffvpx/libavutil/mathematics.h b/icecat/media/ffvpx/libavutil/mathematics.h index 486de530f2..e213bab68c 100644 --- a/icecat/media/ffvpx/libavutil/mathematics.h +++ b/icecat/media/ffvpx/libavutil/mathematics.h @@ -278,7 +278,7 @@ int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int /** * Add a value to a timestamp. * - * This function guarantees that when the same value is repeatedly added that + * This function guarantees that when the same value is repeatly added that * no accumulation of rounding errors occurs. * * @param[in] ts Input timestamp diff --git a/icecat/media/ffvpx/libavutil/mem_internal.h b/icecat/media/ffvpx/libavutil/mem_internal.h index 78adc4f407..c027fa51c3 100644 --- a/icecat/media/ffvpx/libavutil/mem_internal.h +++ b/icecat/media/ffvpx/libavutil/mem_internal.h @@ -82,8 +82,8 @@ #define DECLARE_ASM_CONST(n,t,v) alignas(FFMIN(n, 16)) static const t av_used v #elif defined(_MSC_VER) #define DECLARE_ALIGNED_T(n,t,v) __declspec(align(n)) t v - #define DECLARE_ASM_ALIGNED(n,t,v) __declspec(align(n)) t av_used v - #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t av_used v + #define DECLARE_ASM_ALIGNED(n,t,v) __declspec(align(n)) t v + #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v #else #define DECLARE_ALIGNED_T(n,t,v) alignas(n) t v #define DECLARE_ASM_ALIGNED(n,t,v) alignas(n) t av_used v @@ -131,6 +131,4 @@ #define LOCAL_ALIGNED_32(t, v, ...) E1(LOCAL_ALIGNED_D(32, t, v, __VA_ARGS__,,)) -#define LOCAL_ALIGNED_64(t, v, ...) E1(LOCAL_ALIGNED_D(64, t, v, __VA_ARGS__,,)) - #endif /* AVUTIL_MEM_INTERNAL_H */ diff --git a/icecat/media/ffvpx/libavutil/moz.build b/icecat/media/ffvpx/libavutil/moz.build index 4463ab5552..ddb2c99f66 100644 --- a/icecat/media/ffvpx/libavutil/moz.build +++ b/icecat/media/ffvpx/libavutil/moz.build @@ -31,7 +31,6 @@ SOURCES += [ 'fifo.c', 'fixed_dsp.c', 'float_dsp.c', - 'float_scalarproduct.c', 'frame.c', 'hwcontext.c', 'imgutils.c', @@ -47,10 +46,8 @@ SOURCES += [ 'refstruct.c', 'reverse.c', 'samplefmt.c', - 'side_data.c', 'slicethread.c', 'time.c', - 'timecode_internal.c', 'tx.c', 'tx_double.c', 'tx_float.c', @@ -78,10 +75,6 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: 'hwcontext_vaapi.c', ] USE_LIBS += ['mozva'] - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - SOURCES += [ - 'hwcontext_mediacodec.c', - ] elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows": SOURCES += [ 'hwcontext_d3d11va.c', @@ -91,19 +84,11 @@ EXPORTS.ffvpx += [ "tx.h" ] -if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - EXPORTS.ffvpx += [ - "hwcontext_mediacodec.h" - ] - if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows": EXPORTS.ffvpx += [ "hwcontext_d3d11va.h" ] -if CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - OS_LIBS += ['android'] - SYMBOLS_FILE = 'avutil.symbols' NoVisibilityFlags() diff --git a/icecat/media/ffvpx/libavutil/opt.c b/icecat/media/ffvpx/libavutil/opt.c index fca8772c18..44b507dbd4 100644 --- a/icecat/media/ffvpx/libavutil/opt.c +++ b/icecat/media/ffvpx/libavutil/opt.c @@ -191,12 +191,20 @@ static int opt_set_init(void *obj, const char *name, int search_flags, // try state flags first from the target (child), then from its parent class = *(const AVClass**)tgt; - if (class->state_flags_offset) + if ( +#if LIBAVUTIL_VERSION_MAJOR < 60 + class->version >= AV_VERSION_INT(59, 41, 100) && +#endif + class->state_flags_offset) state_flags = (unsigned*)((uint8_t*)tgt + class->state_flags_offset); if (!state_flags && obj != tgt) { class = *(const AVClass**)obj; - if (class->state_flags_offset) + if ( +#if LIBAVUTIL_VERSION_MAJOR < 60 + class->version >= AV_VERSION_INT(59, 41, 100) && +#endif + class->state_flags_offset) state_flags = (unsigned*)((uint8_t*)obj + class->state_flags_offset); } @@ -204,7 +212,9 @@ static int opt_set_init(void *obj, const char *name, int search_flags, av_log(obj, AV_LOG_ERROR, "Option '%s' is not a runtime option and " "so cannot be set after the object has been initialized\n", o->name); +#if LIBAVUTIL_VERSION_MAJOR >= 60 return AVERROR(EINVAL); +#endif } } @@ -480,7 +490,7 @@ static int set_string_number(void *obj, void *target_obj, const AVOption *o, con res = av_expr_parse_and_eval(&d, i ? buf : val, const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, obj); if (res < 0) { - av_log(obj, AV_LOG_ERROR, "Unable to parse \"%s\" option value \"%s\"\n", o->name, val); + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\"\n", val); return res; } } @@ -512,7 +522,7 @@ static int set_string_image_size(void *obj, const AVOption *o, const char *val, } ret = av_parse_video_size(dst, dst + 1, val); if (ret < 0) - av_log(obj, AV_LOG_ERROR, "Unable to parse \"%s\" option value \"%s\" as image size\n", o->name, val); + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as image size\n", val); return ret; } @@ -520,7 +530,7 @@ static int set_string_video_rate(void *obj, const AVOption *o, const char *val, { int ret = av_parse_video_rate(dst, val); if (ret < 0) - av_log(obj, AV_LOG_ERROR, "Unable to parse \"%s\" option value \"%s\" as video rate\n", o->name, val); + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as video rate\n", val); return ret; } @@ -533,7 +543,7 @@ static int set_string_color(void *obj, const AVOption *o, const char *val, uint8 } else { ret = av_parse_color(dst, val, -1, obj); if (ret < 0) - av_log(obj, AV_LOG_ERROR, "Unable to parse \"%s\" option value \"%s\" as color\n", o->name, val); + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as color\n", val); return ret; } return 0; @@ -573,7 +583,7 @@ static int set_string_bool(void *obj, const AVOption *o, const char *val, int *d return 0; fail: - av_log(obj, AV_LOG_ERROR, "Unable to parse \"%s\" option value \"%s\" as boolean\n", o->name, val); + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as boolean\n", val); return AVERROR(EINVAL); } @@ -591,7 +601,7 @@ static int set_string_fmt(void *obj, const AVOption *o, const char *val, uint8_t fmt = strtol(val, &tail, 0); if (*tail || (unsigned)fmt >= fmt_nb) { av_log(obj, AV_LOG_ERROR, - "Unable to parse \"%s\" option value \"%s\" as %s\n", o->name, val, desc); + "Unable to parse option value \"%s\" as %s\n", val, desc); return AVERROR(EINVAL); } } @@ -714,7 +724,7 @@ static int opt_set_elem(void *obj, void *target_obj, const AVOption *o, int64_t usecs = 0; if (val) { if ((ret = av_parse_time(&usecs, val, 1)) < 0) { - av_log(obj, AV_LOG_ERROR, "Unable to parse \"%s\" option value \"%s\" as duration\n", o->name, val); + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as duration\n", val); return ret; } } @@ -731,7 +741,7 @@ static int opt_set_elem(void *obj, void *target_obj, const AVOption *o, case AV_OPT_TYPE_CHLAYOUT: ret = set_string_channel_layout(obj, o, val, dst); if (ret < 0) { - av_log(obj, AV_LOG_ERROR, "Unable to parse \"%s\" option value \"%s\" as channel layout\n", o->name, val); + av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as channel layout\n", val); ret = AVERROR(EINVAL); } return ret; @@ -1326,7 +1336,7 @@ int av_opt_get_video_rate(void *obj, const char *name, int search_flags, AVRatio return av_opt_get_q(obj, name, search_flags, out_val); } -static int get_format(void *obj, const char *name, int search_flags, void *out_fmt, +static int get_format(void *obj, const char *name, int search_flags, int *out_fmt, enum AVOptionType type, const char *desc) { void *dst, *target_obj; @@ -1340,11 +1350,7 @@ static int get_format(void *obj, const char *name, int search_flags, void *out_f } dst = ((uint8_t*)target_obj) + o->offset; - if (type == AV_OPT_TYPE_PIXEL_FMT) - *(enum AVPixelFormat *)out_fmt = *(enum AVPixelFormat *)dst; - else - *(enum AVSampleFormat*)out_fmt = *(enum AVSampleFormat*)dst; - + *out_fmt = *(int *)dst; return 0; } @@ -1492,7 +1498,7 @@ static void log_type(void *av_log_obj, const AVOption *o, { const enum AVOptionType type = TYPE_BASE(o->type); - if (o->type == AV_OPT_TYPE_CONST && (TYPE_BASE(parent_type) == AV_OPT_TYPE_INT || TYPE_BASE(parent_type) == AV_OPT_TYPE_INT64)) + if (o->type == AV_OPT_TYPE_CONST && TYPE_BASE(parent_type) == AV_OPT_TYPE_INT) av_log(av_log_obj, AV_LOG_INFO, "%-12"PRId64" ", o->default_val.i64); else if (type < FF_ARRAY_ELEMS(opt_type_desc) && opt_type_desc[type].name) { if (o->type & AV_OPT_TYPE_FLAG_ARRAY) @@ -2596,8 +2602,6 @@ int av_opt_is_set_to_default(void *obj, const AVOption *o) ret = 0; else if (val) ret = !strcmp(val, def); - else - ret = 1; av_freep(&val); diff --git a/icecat/media/ffvpx/libavutil/opt.h b/icecat/media/ffvpx/libavutil/opt.h index ab24fae777..d313679263 100644 --- a/icecat/media/ffvpx/libavutil/opt.h +++ b/icecat/media/ffvpx/libavutil/opt.h @@ -542,7 +542,7 @@ typedef struct AVOptionRanges { */ int nb_ranges; /** - * Number of components. + * Number of componentes. */ int nb_components; } AVOptionRanges; @@ -1137,7 +1137,7 @@ int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name) * @param[in] obj AVClass object to serialize * @param[in] opt_flags serialize options with all the specified flags set (AV_OPT_FLAG) * @param[in] flags combination of AV_OPT_SERIALIZE_* flags - * @param[out] buffer Pointer to buffer that will be allocated with string containing serialized options. + * @param[out] buffer Pointer to buffer that will be allocated with string containg serialized options. * Buffer must be freed by the caller when is no longer needed. * @param[in] key_val_sep character used to separate key from value * @param[in] pairs_sep character used to separate two pairs from each other @@ -1167,7 +1167,7 @@ void av_opt_freep_ranges(AVOptionRanges **ranges); * * The result must be freed with av_opt_freep_ranges. * - * @return number of components returned on success, a negative error code otherwise + * @return number of compontents returned on success, a negative errro code otherwise */ int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags); @@ -1183,7 +1183,7 @@ int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags * * The result must be freed with av_opt_free_ranges. * - * @return number of components returned on success, a negative error code otherwise + * @return number of compontents returned on success, a negative errro code otherwise */ int av_opt_query_ranges_default(AVOptionRanges **, void *obj, const char *key, int flags); diff --git a/icecat/media/ffvpx/libavutil/pixdesc.c b/icecat/media/ffvpx/libavutil/pixdesc.c index 90f9596def..e595c76232 100644 --- a/icecat/media/ffvpx/libavutil/pixdesc.c +++ b/icecat/media/ffvpx/libavutil/pixdesc.c @@ -797,27 +797,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .alias = "y16le", }, - [AV_PIX_FMT_GRAY32BE] = { - .name = "gray32be", - .nb_components = 1, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 4, 0, 0, 32 }, /* Y */ - }, - .flags = AV_PIX_FMT_FLAG_BE, - .alias = "y32be", - }, - [AV_PIX_FMT_GRAY32LE] = { - .name = "gray32le", - .nb_components = 1, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 4, 0, 0, 32 }, /* Y */ - }, - .alias = "y32le", - }, [AV_PIX_FMT_YUV440P] = { .name = "yuv440p", .nb_components = 3, @@ -1701,30 +1680,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, }, - [AV_PIX_FMT_YUV444P10MSBLE] = { - .name = "yuv444p10msble", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 2, 0, 6, 10 }, /* Y */ - { 1, 2, 0, 6, 10 }, /* U */ - { 2, 2, 0, 6, 10 }, /* V */ - }, - .flags = AV_PIX_FMT_FLAG_PLANAR, - }, - [AV_PIX_FMT_YUV444P10MSBBE] = { - .name = "yuv444p10msbbe", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 2, 0, 6, 10 }, /* Y */ - { 1, 2, 0, 6, 10 }, /* U */ - { 2, 2, 0, 6, 10 }, /* V */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, - }, [AV_PIX_FMT_YUV444P9LE] = { .name = "yuv444p9le", .nb_components = 3, @@ -1773,30 +1728,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, }, - [AV_PIX_FMT_YUV444P12MSBLE] = { - .name = "yuv444p12msble", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 2, 0, 4, 12 }, /* Y */ - { 1, 2, 0, 4, 12 }, /* U */ - { 2, 2, 0, 4, 12 }, /* V */ - }, - .flags = AV_PIX_FMT_FLAG_PLANAR, - }, - [AV_PIX_FMT_YUV444P12MSBBE] = { - .name = "yuv444p12msbbe", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 2, 0, 4, 12 }, /* Y */ - { 1, 2, 0, 4, 12 }, /* U */ - { 2, 2, 0, 4, 12 }, /* V */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, - }, [AV_PIX_FMT_YUV444P14LE] = { .name = "yuv444p14le", .nb_components = 3, @@ -1925,30 +1856,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, }, - [AV_PIX_FMT_GBRP10MSBLE] = { - .name = "gbrp10msble", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 6, 10 }, /* R */ - { 0, 2, 0, 6, 10 }, /* G */ - { 1, 2, 0, 6, 10 }, /* B */ - }, - .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, - }, - [AV_PIX_FMT_GBRP10MSBBE] = { - .name = "gbrp10msbbe", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 6, 10 }, /* R */ - { 0, 2, 0, 6, 10 }, /* G */ - { 1, 2, 0, 6, 10 }, /* B */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, - }, [AV_PIX_FMT_GBRP12LE] = { .name = "gbrp12le", .nb_components = 3, @@ -1973,30 +1880,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, }, - [AV_PIX_FMT_GBRP12MSBLE] = { - .name = "gbrp12msble", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 4, 12 }, /* R */ - { 0, 2, 0, 4, 12 }, /* G */ - { 1, 2, 0, 4, 12 }, /* B */ - }, - .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, - }, - [AV_PIX_FMT_GBRP12MSBBE] = { - .name = "gbrp12msbbe", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 4, 12 }, /* R */ - { 0, 2, 0, 4, 12 }, /* G */ - { 1, 2, 0, 4, 12 }, /* B */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB, - }, [AV_PIX_FMT_GBRP14LE] = { .name = "gbrp14le", .nb_components = 3, @@ -2087,34 +1970,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, }, - [AV_PIX_FMT_GBRAP32LE] = { - .name = "gbrap32le", - .nb_components = 4, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 4, 0, 0, 32 }, /* R */ - { 0, 4, 0, 0, 32 }, /* G */ - { 1, 4, 0, 0, 32 }, /* B */ - { 3, 4, 0, 0, 32 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | - AV_PIX_FMT_FLAG_ALPHA, - }, - [AV_PIX_FMT_GBRAP32BE] = { - .name = "gbrap32be", - .nb_components = 4, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 4, 0, 0, 32 }, /* R */ - { 0, 4, 0, 0, 32 }, /* G */ - { 1, 4, 0, 0, 32 }, /* B */ - { 3, 4, 0, 0, 32 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | - AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, - }, [AV_PIX_FMT_VDPAU] = { .name = "vdpau", .log2_chroma_w = 1, @@ -2278,10 +2133,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { .name = "cuda", .flags = AV_PIX_FMT_FLAG_HWACCEL, }, - [AV_PIX_FMT_AMF_SURFACE] = { - .name = "amf", - .flags = AV_PIX_FMT_FLAG_HWACCEL, - }, [AV_PIX_FMT_VYU444] = { .name = "vyu444", .nb_components = 3, @@ -2563,60 +2414,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT, }, - [AV_PIX_FMT_GBRPF16BE] = { - .name = "gbrpf16be", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 0, 16 }, /* R */ - { 0, 2, 0, 0, 16 }, /* G */ - { 1, 2, 0, 0, 16 }, /* B */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | - AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT, - }, - [AV_PIX_FMT_GBRPF16LE] = { - .name = "gbrpf16le", - .nb_components = 3, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 0, 16 }, /* R */ - { 0, 2, 0, 0, 16 }, /* G */ - { 1, 2, 0, 0, 16 }, /* B */ - }, - .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_RGB, - }, - [AV_PIX_FMT_GBRAPF16BE] = { - .name = "gbrapf16be", - .nb_components = 4, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 0, 16 }, /* R */ - { 0, 2, 0, 0, 16 }, /* G */ - { 1, 2, 0, 0, 16 }, /* B */ - { 3, 2, 0, 0, 16 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | - AV_PIX_FMT_FLAG_ALPHA | AV_PIX_FMT_FLAG_RGB | - AV_PIX_FMT_FLAG_FLOAT, - }, - [AV_PIX_FMT_GBRAPF16LE] = { - .name = "gbrapf16le", - .nb_components = 4, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 2, 2, 0, 0, 16 }, /* R */ - { 0, 2, 0, 0, 16 }, /* G */ - { 1, 2, 0, 0, 16 }, /* B */ - { 3, 2, 0, 0, 16 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA | - AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_FLOAT, - }, [AV_PIX_FMT_DRM_PRIME] = { .name = "drm_prime", .flags = AV_PIX_FMT_FLAG_HWACCEL, @@ -2647,70 +2444,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { .flags = AV_PIX_FMT_FLAG_FLOAT, .alias = "yf32le", }, - [AV_PIX_FMT_GRAYF16BE] = { - .name = "grayf16be", - .nb_components = 1, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 2, 0, 0, 16 }, /* Y */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_FLOAT, - }, - [AV_PIX_FMT_GRAYF16LE] = { - .name = "grayf16le", - .nb_components = 1, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 2, 0, 0, 16 }, /* Y */ - }, - .flags = AV_PIX_FMT_FLAG_FLOAT, - }, - [AV_PIX_FMT_YAF32BE] = { - .name = "yaf32be", - .nb_components = 2, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 8, 0, 0, 32 }, /* Y */ - { 0, 8, 4, 0, 32 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA, - }, - [AV_PIX_FMT_YAF32LE] = { - .name = "yaf32le", - .nb_components = 2, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 8, 0, 0, 32 }, /* Y */ - { 0, 8, 4, 0, 32 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA, - }, - [AV_PIX_FMT_YAF16BE] = { - .name = "yaf16be", - .nb_components = 2, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 4, 0, 0, 16 }, /* Y */ - { 0, 4, 2, 0, 16 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA, - }, - [AV_PIX_FMT_YAF16LE] = { - .name = "yaf16le", - .nb_components = 2, - .log2_chroma_w = 0, - .log2_chroma_h = 0, - .comp = { - { 0, 4, 0, 0, 16 }, /* Y */ - { 0, 4, 2, 0, 16 }, /* A */ - }, - .flags = AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA, - }, [AV_PIX_FMT_YUVA422P12BE] = { .name = "yuva422p12be", .nb_components = 4, @@ -3263,10 +2996,6 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE, }, - [AV_PIX_FMT_OHCODEC] = { - .name = "ohcodec", - .flags = AV_PIX_FMT_FLAG_HWACCEL, - }, }; static const char * const color_range_names[] = { @@ -3292,11 +3021,6 @@ static const char * const color_primaries_names[AVCOL_PRI_NB] = { [AVCOL_PRI_EBU3213] = "ebu3213", }; -static const char * const color_primaries_names_ext[AVCOL_PRI_EXT_NB - - AVCOL_PRI_EXT_BASE] = { - [AVCOL_PRI_V_GAMUT - AVCOL_PRI_EXT_BASE] = "vgamut", -}; - static const char * const color_transfer_names[] = { [AVCOL_TRC_RESERVED0] = "reserved", [AVCOL_TRC_BT709] = "bt709", @@ -3319,10 +3043,6 @@ static const char * const color_transfer_names[] = { [AVCOL_TRC_ARIB_STD_B67] = "arib-std-b67", }; -static const char * const color_transfer_names_ext[] = { - [AVCOL_TRC_V_LOG - AVCOL_TRC_EXT_BASE] = "vlog", -}; - static const char * const color_space_names[] = { [AVCOL_SPC_RGB] = "gbr", [AVCOL_SPC_BT709] = "bt709", @@ -3354,12 +3074,6 @@ static const char * const chroma_location_names[] = { [AVCHROMA_LOC_BOTTOM] = "bottom", }; -static const char * const alpha_mode_names[] = { - [AVALPHA_MODE_UNSPECIFIED] = "unspecified", - [AVALPHA_MODE_PREMULTIPLIED] = "premultiplied", - [AVALPHA_MODE_STRAIGHT] = "straight", -}; - static enum AVPixelFormat get_pix_fmt_internal(const char *name) { enum AVPixelFormat pix_fmt; @@ -3789,12 +3503,8 @@ int av_color_range_from_name(const char *name) const char *av_color_primaries_name(enum AVColorPrimaries primaries) { - if ((unsigned)primaries < AVCOL_PRI_NB) - return color_primaries_names[primaries]; - else if (((unsigned)primaries >= AVCOL_PRI_EXT_BASE) && - ((unsigned)primaries < AVCOL_PRI_EXT_NB)) - return color_primaries_names_ext[primaries - AVCOL_TRC_EXT_BASE]; - return NULL; + return (unsigned) primaries < AVCOL_PRI_NB ? + color_primaries_names[primaries] : NULL; } int av_color_primaries_from_name(const char *name) @@ -3809,25 +3519,13 @@ int av_color_primaries_from_name(const char *name) return i; } - for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names_ext); i++) { - if (!color_primaries_names_ext[i]) - continue; - - if (av_strstart(name, color_primaries_names_ext[i], NULL)) - return AVCOL_PRI_EXT_BASE + i; - } - return AVERROR(EINVAL); } const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer) { - if ((unsigned)transfer < AVCOL_TRC_NB) - return color_transfer_names[transfer]; - else if (((unsigned)transfer >= AVCOL_TRC_EXT_BASE) && - ((unsigned)transfer < AVCOL_TRC_EXT_NB)) - return color_transfer_names_ext[transfer - AVCOL_TRC_EXT_BASE]; - return NULL; + return (unsigned) transfer < AVCOL_TRC_NB ? + color_transfer_names[transfer] : NULL; } int av_color_transfer_from_name(const char *name) @@ -3842,14 +3540,6 @@ int av_color_transfer_from_name(const char *name) return i; } - for (i = 0; i < FF_ARRAY_ELEMS(color_transfer_names_ext); i++) { - if (!color_transfer_names_ext[i]) - continue; - - if (av_strstart(name, color_transfer_names_ext[i], NULL)) - return AVCOL_TRC_EXT_BASE + i; - } - return AVERROR(EINVAL); } @@ -3917,22 +3607,3 @@ enum AVChromaLocation av_chroma_location_pos_to_enum(int xpos, int ypos) } return AVCHROMA_LOC_UNSPECIFIED; } - -const char *av_alpha_mode_name(enum AVAlphaMode mode) -{ - return (unsigned) mode < AVALPHA_MODE_NB ? - alpha_mode_names[mode] : NULL; -} - -enum AVAlphaMode av_alpha_mode_from_name(const char *name) -{ - for (int i = 0; i < FF_ARRAY_ELEMS(alpha_mode_names); i++) { - if (!alpha_mode_names[i]) - continue; - - if (av_strstart(name, alpha_mode_names[i], NULL)) - return i; - } - - return AVERROR(EINVAL); -} diff --git a/icecat/media/ffvpx/libavutil/pixdesc.h b/icecat/media/ffvpx/libavutil/pixdesc.h index 0cc70eb64c..ba2f632814 100644 --- a/icecat/media/ffvpx/libavutil/pixdesc.h +++ b/icecat/media/ffvpx/libavutil/pixdesc.h @@ -291,16 +291,6 @@ int av_chroma_location_enum_to_pos(int *xpos, int *ypos, enum AVChromaLocation p */ enum AVChromaLocation av_chroma_location_pos_to_enum(int xpos, int ypos); -/** - * @return the name for provided alpha mode or NULL if unknown. - */ -const char *av_alpha_mode_name(enum AVAlphaMode mode); - -/** - * @return the AVAlphaMode value for name or an AVError if not found. - */ -enum AVAlphaMode av_alpha_mode_from_name(const char *name); - /** * Return the pixel format corresponding to name. * diff --git a/icecat/media/ffvpx/libavutil/pixelutils.c b/icecat/media/ffvpx/libavutil/pixelutils.c index 869af809eb..820889a143 100644 --- a/icecat/media/ffvpx/libavutil/pixelutils.c +++ b/icecat/media/ffvpx/libavutil/pixelutils.c @@ -28,17 +28,7 @@ #include "attributes.h" #include "macros.h" -#if ARCH_AARCH64 && HAVE_NEON -#include "aarch64/pixelutils.h" -#elif ARCH_ARM && HAVE_ARMV6 -#include "arm/pixelutils.h" -#elif ARCH_MIPS && HAVE_MSA -#include "mips/pixelutils.h" -#elif ARCH_RISCV -#include "riscv/pixelutils.h" -#elif ARCH_X86 && HAVE_X86ASM #include "x86/pixelutils.h" -#endif static av_always_inline int sad_wxh(const uint8_t *src1, ptrdiff_t stride1, const uint8_t *src2, ptrdiff_t stride2, @@ -96,15 +86,7 @@ av_pixelutils_sad_fn av_pixelutils_get_sad_fn(int w_bits, int h_bits, int aligne if (w_bits != h_bits) // only squared sad for now return NULL; -#if ARCH_AARCH64 && HAVE_NEON - ff_pixelutils_sad_init_aarch64(sad, aligned); -#elif ARCH_ARM - ff_pixelutils_sad_init_arm(sad, aligned); -#elif ARCH_MIPS && HAVE_MSA - ff_pixelutils_sad_init_mips(sad, aligned); -#elif ARCH_RISCV - ff_pixelutils_init_riscv(sad, aligned); -#elif ARCH_X86 && HAVE_X86ASM +#if ARCH_X86 ff_pixelutils_sad_init_x86(sad, aligned); #endif diff --git a/icecat/media/ffvpx/libavutil/pixfmt.h b/icecat/media/ffvpx/libavutil/pixfmt.h index 2e7b6457e0..3215266091 100644 --- a/icecat/media/ffvpx/libavutil/pixfmt.h +++ b/icecat/media/ffvpx/libavutil/pixfmt.h @@ -463,42 +463,6 @@ enum AVPixelFormat { AV_PIX_FMT_XV48BE, ///< packed XVYU 4:4:4, 64bpp, big-endian, variant of Y416 where alpha channel is left undefined AV_PIX_FMT_XV48LE, ///< packed XVYU 4:4:4, 64bpp, little-endian, variant of Y416 where alpha channel is left undefined - AV_PIX_FMT_GBRPF16BE, ///< IEEE-754 half precision planer GBR 4:4:4, 48bpp, big-endian - AV_PIX_FMT_GBRPF16LE, ///< IEEE-754 half precision planer GBR 4:4:4, 48bpp, little-endian - AV_PIX_FMT_GBRAPF16BE, ///< IEEE-754 half precision planar GBRA 4:4:4:4, 64bpp, big-endian - AV_PIX_FMT_GBRAPF16LE, ///< IEEE-754 half precision planar GBRA 4:4:4:4, 64bpp, little-endian - - AV_PIX_FMT_GRAYF16BE, ///< IEEE-754 half precision Y, 16bpp, big-endian - AV_PIX_FMT_GRAYF16LE, ///< IEEE-754 half precision Y, 16bpp, little-endian - - /** - * HW acceleration through AMF. data[0] contain AMFSurface pointer - */ - AV_PIX_FMT_AMF_SURFACE, - - AV_PIX_FMT_GRAY32BE, ///< Y , 32bpp, big-endian - AV_PIX_FMT_GRAY32LE, ///< Y , 32bpp, little-endian - - AV_PIX_FMT_YAF32BE, ///< IEEE-754 single precision packed YA, 32 bits gray, 32 bits alpha, 64bpp, big-endian - AV_PIX_FMT_YAF32LE, ///< IEEE-754 single precision packed YA, 32 bits gray, 32 bits alpha, 64bpp, little-endian - - AV_PIX_FMT_YAF16BE, ///< IEEE-754 half precision packed YA, 16 bits gray, 16 bits alpha, 32bpp, big-endian - AV_PIX_FMT_YAF16LE, ///< IEEE-754 half precision packed YA, 16 bits gray, 16 bits alpha, 32bpp, little-endian - - AV_PIX_FMT_GBRAP32BE, ///< planar GBRA 4:4:4:4 128bpp, big-endian - AV_PIX_FMT_GBRAP32LE, ///< planar GBRA 4:4:4:4 128bpp, little-endian - - AV_PIX_FMT_YUV444P10MSBBE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian - AV_PIX_FMT_YUV444P10MSBLE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian - AV_PIX_FMT_YUV444P12MSBBE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, big-endian - AV_PIX_FMT_YUV444P12MSBLE, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), lowest bits zero, little-endian - AV_PIX_FMT_GBRP10MSBBE, ///< planar GBR 4:4:4 30bpp, lowest bits zero, big-endian - AV_PIX_FMT_GBRP10MSBLE, ///< planar GBR 4:4:4 30bpp, lowest bits zero, little-endian - AV_PIX_FMT_GBRP12MSBBE, ///< planar GBR 4:4:4 36bpp, lowest bits zero, big-endian - AV_PIX_FMT_GBRP12MSBLE, ///< planar GBR 4:4:4 36bpp, lowest bits zero, little-endian - - AV_PIX_FMT_OHCODEC, /// hardware decoding through openharmony - AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions }; @@ -520,7 +484,6 @@ enum AVPixelFormat { #define AV_PIX_FMT_GRAY12 AV_PIX_FMT_NE(GRAY12BE, GRAY12LE) #define AV_PIX_FMT_GRAY14 AV_PIX_FMT_NE(GRAY14BE, GRAY14LE) #define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) -#define AV_PIX_FMT_GRAY32 AV_PIX_FMT_NE(GRAY32BE, GRAY32LE) #define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE) #define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) #define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) @@ -551,9 +514,6 @@ enum AVPixelFormat { #define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) #define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) -#define AV_PIX_FMT_YUV444P10MSB AV_PIX_FMT_NE(YUV444P10MSBBE, YUV444P10MSBLE) -#define AV_PIX_FMT_YUV444P12MSB AV_PIX_FMT_NE(YUV444P12MSBBE, YUV444P12MSBLE) - #define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) #define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) #define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) @@ -563,27 +523,17 @@ enum AVPixelFormat { #define AV_PIX_FMT_GBRAP12 AV_PIX_FMT_NE(GBRAP12BE, GBRAP12LE) #define AV_PIX_FMT_GBRAP14 AV_PIX_FMT_NE(GBRAP14BE, GBRAP14LE) #define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE) -#define AV_PIX_FMT_GBRAP32 AV_PIX_FMT_NE(GBRAP32BE, GBRAP32LE) - -#define AV_PIX_FMT_GBRP10MSB AV_PIX_FMT_NE(GBRP10MSBBE, GBRP10MSBLE) -#define AV_PIX_FMT_GBRP12MSB AV_PIX_FMT_NE(GBRP12MSBBE, GBRP12MSBLE) #define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE) #define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE) #define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) #define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE) -#define AV_PIX_FMT_GBRPF16 AV_PIX_FMT_NE(GBRPF16BE, GBRPF16LE) -#define AV_PIX_FMT_GBRAPF16 AV_PIX_FMT_NE(GBRAPF16BE, GBRAPF16LE) #define AV_PIX_FMT_GBRPF32 AV_PIX_FMT_NE(GBRPF32BE, GBRPF32LE) #define AV_PIX_FMT_GBRAPF32 AV_PIX_FMT_NE(GBRAPF32BE, GBRAPF32LE) -#define AV_PIX_FMT_GRAYF16 AV_PIX_FMT_NE(GRAYF16BE, GRAYF16LE) #define AV_PIX_FMT_GRAYF32 AV_PIX_FMT_NE(GRAYF32BE, GRAYF32LE) -#define AV_PIX_FMT_YAF16 AV_PIX_FMT_NE(YAF16BE, YAF16LE) -#define AV_PIX_FMT_YAF32 AV_PIX_FMT_NE(YAF32BE, YAF32LE) - #define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) #define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) #define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) @@ -651,12 +601,7 @@ enum AVColorPrimaries { AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3 AVCOL_PRI_EBU3213 = 22, ///< EBU Tech. 3213-E (nothing there) / one of JEDEC P22 group phosphors AVCOL_PRI_JEDEC_P22 = AVCOL_PRI_EBU3213, - AVCOL_PRI_NB, ///< Not part of ABI - - /* The following entries are not part of H.273, but custom extensions */ - AVCOL_PRI_EXT_BASE = 256, - AVCOL_PRI_V_GAMUT = AVCOL_PRI_EXT_BASE, - AVCOL_PRI_EXT_NB ///< Not part of ABI + AVCOL_PRI_NB ///< Not part of ABI }; /** @@ -685,12 +630,7 @@ enum AVColorTransferCharacteristic { AVCOL_TRC_SMPTE428 = 17, ///< SMPTE ST 428-1 AVCOL_TRC_SMPTEST428_1 = AVCOL_TRC_SMPTE428, AVCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma" - AVCOL_TRC_NB, ///< Not part of ABI - - /* The following entries are not part of H.273, but custom extensions */ - AVCOL_TRC_EXT_BASE = 256, - AVCOL_TRC_V_LOG = AVCOL_TRC_EXT_BASE, - AVCOL_TRC_EXT_NB ///< Not part of ABI + AVCOL_TRC_NB ///< Not part of ABI }; /** @@ -804,14 +744,4 @@ enum AVChromaLocation { AVCHROMA_LOC_NB ///< Not part of ABI }; -/** - * Correlation between the alpha channel and color values. - */ -enum AVAlphaMode { - AVALPHA_MODE_UNSPECIFIED = 0, ///< Unknown alpha handling, or no alpha channel - AVALPHA_MODE_PREMULTIPLIED = 1, ///< Alpha channel is multiplied into color values - AVALPHA_MODE_STRAIGHT = 2, ///< Alpha channel is independent of color values - AVALPHA_MODE_NB ///< Not part of ABI -}; - #endif /* AVUTIL_PIXFMT_H */ diff --git a/icecat/media/ffvpx/libavutil/random_seed.c b/icecat/media/ffvpx/libavutil/random_seed.c index e08ab7b12e..8a4e4f1fc0 100644 --- a/icecat/media/ffvpx/libavutil/random_seed.c +++ b/icecat/media/ffvpx/libavutil/random_seed.c @@ -83,7 +83,6 @@ static uint32_t get_generic_seed(void) static uint32_t buffer[512] = { 0 }; unsigned char digest[20]; uint64_t last_i = i; - int repeats[3] = { 0 }; av_assert0(sizeof(tmp) >= av_sha_size); @@ -99,45 +98,17 @@ static uint32_t get_generic_seed(void) for (;;) { clock_t t = clock(); - int incremented_i = 0; - int cur_td = t - last_t; - if (last_t + 2*last_td + (CLOCKS_PER_SEC > 1000) < t) { - // If the timer incremented by more than 2*last_td at once, - // we may e.g. have had a context switch. If the timer resolution - // is high (CLOCKS_PER_SEC > 1000), require that the timer - // incremented by more than 1. If the timer resolution is low, - // it is enough that the timer incremented at all. - buffer[++i & 511] += cur_td % 3294638521U; - incremented_i = 1; - } else if (t != last_t && repeats[0] > 0 && repeats[1] > 0 && - repeats[2] > 0 && repeats[0] != repeats[1] && - repeats[0] != repeats[2]) { - // If the timer resolution is high, and we get the same timer - // value multiple times, use variances in the number of repeats - // of each timer value as entropy. If we get a different number of - // repeats than the last two unique cases, count that as entropy - // and proceed to the next index. - buffer[++i & 511] += (repeats[0] + repeats[1] + repeats[2]) % 3294638521U; - incremented_i = 1; + if (last_t + 2*last_td + (CLOCKS_PER_SEC > 1000) >= t) { + last_td = t - last_t; + buffer[i & 511] = 1664525*buffer[i & 511] + 1013904223 + (last_td % 3294638521U); } else { - buffer[i & 511] = 1664525*buffer[i & 511] + 1013904223 + (cur_td % 3294638521U); - } - if (incremented_i && (t - init_t) >= CLOCKS_PER_SEC>>5) { - if (last_i && i - last_i > 4 || i - last_i > 64 || TEST && i - last_i > 8) - break; - } - if (t == last_t) { - repeats[0]++; - } else { - // If we got a new unique number of repeats, update the history. - if (repeats[0] != repeats[1]) { - repeats[2] = repeats[1]; - repeats[1] = repeats[0]; - } - repeats[0] = 0; + last_td = t - last_t; + buffer[++i & 511] += last_td % 3294638521U; + if ((t - init_t) >= CLOCKS_PER_SEC>>5) + if (last_i && i - last_i > 4 || i - last_i > 64 || TEST && i - last_i > 8) + break; } last_t = t; - last_td = cur_td; if (!init_t) init_t = t; } diff --git a/icecat/media/ffvpx/libavutil/rational.h b/icecat/media/ffvpx/libavutil/rational.h index 30ac2aced7..849f47f38d 100644 --- a/icecat/media/ffvpx/libavutil/rational.h +++ b/icecat/media/ffvpx/libavutil/rational.h @@ -22,7 +22,7 @@ /** * @file * @ingroup lavu_math_rational - * Utilities for rational number calculation. + * Utilties for rational number calculation. * @author Michael Niedermayer */ diff --git a/icecat/media/ffvpx/libavutil/refstruct.c b/icecat/media/ffvpx/libavutil/refstruct.c index 7a5eb24826..ce804f781a 100644 --- a/icecat/media/ffvpx/libavutil/refstruct.c +++ b/icecat/media/ffvpx/libavutil/refstruct.c @@ -45,7 +45,7 @@ #define REFSTRUCT_COOKIE AV_NE((uint64_t)MKBETAG('R', 'e', 'f', 'S') << 32 | MKBETAG('t', 'r', 'u', 'c'), \ MKTAG('R', 'e', 'f', 'S') | (uint64_t)MKTAG('t', 'r', 'u', 'c') << 32) -#ifndef _MSC_VER +#if __STDC_VERSION__ >= 201112L && !defined(_MSC_VER) #define REFCOUNT_OFFSET FFALIGN(sizeof(RefCount), FFMAX(ALIGN_64, _Alignof(max_align_t))) #else #define REFCOUNT_OFFSET FFALIGN(sizeof(RefCount), ALIGN_64) diff --git a/icecat/media/ffvpx/libavutil/refstruct.h b/icecat/media/ffvpx/libavutil/refstruct.h index 4e9d78eb0a..644d888284 100644 --- a/icecat/media/ffvpx/libavutil/refstruct.h +++ b/icecat/media/ffvpx/libavutil/refstruct.h @@ -74,7 +74,7 @@ typedef union { * the returned object is initially zeroed. * * @param size Desired usable size of the returned object. - * @param flags A bitwise combination of AV_REFSTRUCT_FLAG_* flags. + * @param flags A bitwise combination of av_refstruct_FLAG_* flags. * @param opaque A pointer that will be passed to the free_cb callback. * @param free_cb A callback for freeing this object's content * when its reference count reaches zero; @@ -161,7 +161,7 @@ int av_refstruct_exclusive(const void *obj); * * Frequently allocating and freeing large or complicated objects may be slow * and wasteful. This API is meant to solve this in cases when the caller - * needs a set of interchangeable objects. + * needs a set of interchangable objects. * * At the beginning, the user must call allocate the pool via * av_refstruct_pool_alloc() or its analogue av_refstruct_pool_alloc_ext(). @@ -205,7 +205,7 @@ typedef struct AVRefStructPool AVRefStructPool; * provided, then free_cb will be called if init_cb fails. * * It will be called after reset_cb in case reset_cb and the - * AV_REFSTRUCT_POOL_FLAG_RESET_ON_INIT_ERROR flag are also set. + * av_refstruct_POOL_FLAG_RESET_ON_INIT_ERROR flag are also set. * * The object passed to free_cb will be in the state left by * the callbacks applied earlier (init_cb potentially followed by reset_cb). @@ -215,7 +215,7 @@ typedef struct AVRefStructPool AVRefStructPool; * If this flag is set, the entries will be zeroed before * being returned to the user (after the init or reset callbacks * have been called (if provided)). Furthermore, to avoid zeroing twice - * it also makes the pool behave as if the AV_REFSTRUCT_POOL_FLAG_NO_ZEROING + * it also makes the pool behave as if the av_refstruct_POOL_FLAG_NO_ZEROING * flag had been provided. */ #define AV_REFSTRUCT_POOL_FLAG_ZERO_EVERY_TIME (1 << 18) @@ -229,11 +229,11 @@ AVRefStructPool *av_refstruct_pool_alloc(size_t size, unsigned flags); * Allocate an AVRefStructPool, potentially using complex callbacks. * * @param size size of the entries of the pool - * @param flags a bitwise combination of AV_REFSTRUCT_POOL_FLAG_* flags + * @param flags a bitwise combination of av_refstruct_POOL_FLAG_* flags * @param opaque A pointer that will be passed to the callbacks below. * @param init A callback that will be called directly after a new entry * has been allocated. obj has already been zeroed unless - * the AV_REFSTRUCT_POOL_FLAG_NO_ZEROING flag is in use. + * the av_refstruct_POOL_FLAG_NO_ZEROING flag is in use. * @param reset A callback that will be called after an entry has been * returned to the pool and before it is reused. * @param free_entry A callback that will be called when an entry is freed diff --git a/icecat/media/ffvpx/libavutil/samplefmt.h b/icecat/media/ffvpx/libavutil/samplefmt.h index 6e55d71140..43a57a422c 100644 --- a/icecat/media/ffvpx/libavutil/samplefmt.h +++ b/icecat/media/ffvpx/libavutil/samplefmt.h @@ -122,7 +122,8 @@ enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt); * @param sample_fmt the number of the sample format to print the * corresponding info string, or a negative value to print the * corresponding header. - * @return the pointer to the filled buffer or NULL in case of other errors + * @return the pointer to the filled buffer or NULL if sample_fmt is + * unknown or in case of other errors */ char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); diff --git a/icecat/media/ffvpx/libavutil/side_data.c b/icecat/media/ffvpx/libavutil/side_data.c deleted file mode 100644 index bbbeb70ecd..0000000000 --- a/icecat/media/ffvpx/libavutil/side_data.c +++ /dev/null @@ -1,315 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "avassert.h" -#include "buffer.h" -#include "common.h" -#include "dict.h" -#include "frame.h" -#include "mem.h" -#include "side_data.h" - -static const AVSideDataDescriptor sd_props[] = { - [AV_FRAME_DATA_PANSCAN] = { "AVPanScan", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, - [AV_FRAME_DATA_A53_CC] = { "ATSC A53 Part 4 Closed Captions" }, - [AV_FRAME_DATA_MATRIXENCODING] = { "AVMatrixEncoding", AV_SIDE_DATA_PROP_CHANNEL_DEPENDENT }, - [AV_FRAME_DATA_DOWNMIX_INFO] = { "Metadata relevant to a downmix procedure", AV_SIDE_DATA_PROP_CHANNEL_DEPENDENT }, - [AV_FRAME_DATA_AFD] = { "Active format description" }, - [AV_FRAME_DATA_MOTION_VECTORS] = { "Motion vectors", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, - [AV_FRAME_DATA_SKIP_SAMPLES] = { "Skip samples" }, - [AV_FRAME_DATA_GOP_TIMECODE] = { "GOP timecode" }, - [AV_FRAME_DATA_S12M_TIMECODE] = { "SMPTE 12-1 timecode" }, - [AV_FRAME_DATA_DYNAMIC_HDR_PLUS] = { "HDR Dynamic Metadata SMPTE2094-40 (HDR10+)", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, - [AV_FRAME_DATA_DYNAMIC_HDR_VIVID] = { "HDR Dynamic Metadata CUVA 005.1 2021 (Vivid)", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, - [AV_FRAME_DATA_REGIONS_OF_INTEREST] = { "Regions Of Interest", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, - [AV_FRAME_DATA_VIDEO_ENC_PARAMS] = { "Video encoding parameters" }, - [AV_FRAME_DATA_FILM_GRAIN_PARAMS] = { "Film grain parameters" }, - [AV_FRAME_DATA_DETECTION_BBOXES] = { "Bounding boxes for object detection and classification", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, - [AV_FRAME_DATA_DOVI_RPU_BUFFER] = { "Dolby Vision RPU Data", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, - [AV_FRAME_DATA_DOVI_METADATA] = { "Dolby Vision Metadata", AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, - [AV_FRAME_DATA_LCEVC] = { "LCEVC NAL data", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, - [AV_FRAME_DATA_VIEW_ID] = { "View ID" }, - [AV_FRAME_DATA_STEREO3D] = { "Stereo 3D", AV_SIDE_DATA_PROP_GLOBAL }, - [AV_FRAME_DATA_REPLAYGAIN] = { "AVReplayGain", AV_SIDE_DATA_PROP_GLOBAL }, - [AV_FRAME_DATA_DISPLAYMATRIX] = { "3x3 displaymatrix", AV_SIDE_DATA_PROP_GLOBAL }, - [AV_FRAME_DATA_AUDIO_SERVICE_TYPE] = { "Audio service type", AV_SIDE_DATA_PROP_GLOBAL }, - [AV_FRAME_DATA_MASTERING_DISPLAY_METADATA] = { "Mastering display metadata", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, - [AV_FRAME_DATA_CONTENT_LIGHT_LEVEL] = { "Content light level metadata", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, - [AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT] = { "Ambient viewing environment", AV_SIDE_DATA_PROP_GLOBAL }, - [AV_FRAME_DATA_SPHERICAL] = { "Spherical Mapping", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, - [AV_FRAME_DATA_ICC_PROFILE] = { "ICC profile", AV_SIDE_DATA_PROP_GLOBAL | AV_SIDE_DATA_PROP_COLOR_DEPENDENT }, - [AV_FRAME_DATA_EXIF] = { "EXIF metadata", AV_SIDE_DATA_PROP_GLOBAL }, - [AV_FRAME_DATA_SEI_UNREGISTERED] = { "H.26[45] User Data Unregistered SEI message", AV_SIDE_DATA_PROP_MULTI }, - [AV_FRAME_DATA_VIDEO_HINT] = { "Encoding video hint", AV_SIDE_DATA_PROP_SIZE_DEPENDENT }, - [AV_FRAME_DATA_3D_REFERENCE_DISPLAYS] = { "3D Reference Displays Information", AV_SIDE_DATA_PROP_GLOBAL }, -}; - -const AVSideDataDescriptor *av_frame_side_data_desc(enum AVFrameSideDataType type) -{ - unsigned t = type; - if (t < FF_ARRAY_ELEMS(sd_props) && sd_props[t].name) - return &sd_props[t]; - return NULL; -} - -const char *av_frame_side_data_name(enum AVFrameSideDataType type) -{ - const AVSideDataDescriptor *desc = av_frame_side_data_desc(type); - return desc ? desc->name : NULL; -} - -static void free_side_data_entry(AVFrameSideData **ptr_sd) -{ - AVFrameSideData *sd = *ptr_sd; - - av_buffer_unref(&sd->buf); - av_dict_free(&sd->metadata); - av_freep(ptr_sd); -} - -static void remove_side_data_by_entry(AVFrameSideData ***sd, int *nb_sd, - const AVFrameSideData *target) -{ - for (int i = *nb_sd - 1; i >= 0; i--) { - AVFrameSideData *entry = ((*sd)[i]); - if (entry != target) - continue; - - free_side_data_entry(&entry); - - ((*sd)[i]) = ((*sd)[*nb_sd - 1]); - (*nb_sd)--; - - return; - } -} - -void av_frame_side_data_remove(AVFrameSideData ***sd, int *nb_sd, - enum AVFrameSideDataType type) -{ - for (int i = *nb_sd - 1; i >= 0; i--) { - AVFrameSideData *entry = ((*sd)[i]); - if (entry->type != type) - continue; - - free_side_data_entry(&entry); - - ((*sd)[i]) = ((*sd)[*nb_sd - 1]); - (*nb_sd)--; - } -} - -void av_frame_side_data_remove_by_props(AVFrameSideData ***sd, int *nb_sd, - int props) -{ - for (int i = *nb_sd - 1; i >= 0; i--) { - AVFrameSideData *entry = ((*sd)[i]); - const AVSideDataDescriptor *desc = av_frame_side_data_desc(entry->type); - if (!desc || !(desc->props & props)) - continue; - - free_side_data_entry(&entry); - - ((*sd)[i]) = ((*sd)[*nb_sd - 1]); - (*nb_sd)--; - } -} - -void av_frame_side_data_free(AVFrameSideData ***sd, int *nb_sd) -{ - for (int i = 0; i < *nb_sd; i++) - free_side_data_entry(&((*sd)[i])); - *nb_sd = 0; - - av_freep(sd); -} - -static AVFrameSideData *add_side_data_from_buf_ext(AVFrameSideData ***sd, - int *nb_sd, - enum AVFrameSideDataType type, - AVBufferRef *buf, uint8_t *data, - size_t size) -{ - AVFrameSideData *ret, **tmp; - - // *nb_sd + 1 needs to fit into an int and a size_t. - if ((unsigned)*nb_sd >= FFMIN(INT_MAX, SIZE_MAX)) - return NULL; - - tmp = av_realloc_array(*sd, *nb_sd + 1, sizeof(**sd)); - if (!tmp) - return NULL; - *sd = tmp; - - ret = av_mallocz(sizeof(*ret)); - if (!ret) - return NULL; - - ret->buf = buf; - ret->data = data; - ret->size = size; - ret->type = type; - - (*sd)[(*nb_sd)++] = ret; - - return ret; -} - -AVFrameSideData *ff_frame_side_data_add_from_buf(AVFrameSideData ***sd, - int *nb_sd, - enum AVFrameSideDataType type, - AVBufferRef *buf) -{ - if (!buf) - return NULL; - - return add_side_data_from_buf_ext(sd, nb_sd, type, buf, buf->data, buf->size); -} - -static AVFrameSideData *replace_side_data_from_buf(AVFrameSideData *dst, - AVBufferRef *buf, int flags) -{ - if (!(flags & AV_FRAME_SIDE_DATA_FLAG_REPLACE)) - return NULL; - - av_dict_free(&dst->metadata); - av_buffer_unref(&dst->buf); - dst->buf = buf; - dst->data = buf->data; - dst->size = buf->size; - return dst; -} - -AVFrameSideData *av_frame_side_data_new(AVFrameSideData ***sd, int *nb_sd, - enum AVFrameSideDataType type, - size_t size, unsigned int flags) -{ - const AVSideDataDescriptor *desc = av_frame_side_data_desc(type); - AVBufferRef *buf = av_buffer_alloc(size); - AVFrameSideData *ret = NULL; - - if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE) - av_frame_side_data_remove(sd, nb_sd, type); - if ((!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) && - (ret = (AVFrameSideData *)av_frame_side_data_get(*sd, *nb_sd, type))) { - ret = replace_side_data_from_buf(ret, buf, flags); - if (!ret) - av_buffer_unref(&buf); - return ret; - } - - ret = ff_frame_side_data_add_from_buf(sd, nb_sd, type, buf); - if (!ret) - av_buffer_unref(&buf); - - return ret; -} - -AVFrameSideData *av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd, - enum AVFrameSideDataType type, - AVBufferRef **pbuf, unsigned int flags) -{ - const AVSideDataDescriptor *desc = av_frame_side_data_desc(type); - AVFrameSideData *sd_dst = NULL; - AVBufferRef *buf = *pbuf; - - if ((flags & AV_FRAME_SIDE_DATA_FLAG_NEW_REF) && !(buf = av_buffer_ref(*pbuf))) - return NULL; - if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE) - av_frame_side_data_remove(sd, nb_sd, type); - if ((!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) && - (sd_dst = (AVFrameSideData *)av_frame_side_data_get(*sd, *nb_sd, type))) { - sd_dst = replace_side_data_from_buf(sd_dst, buf, flags); - } else - sd_dst = ff_frame_side_data_add_from_buf(sd, nb_sd, type, buf); - - if (sd_dst && !(flags & AV_FRAME_SIDE_DATA_FLAG_NEW_REF)) - *pbuf = NULL; - else if (!sd_dst && (flags & AV_FRAME_SIDE_DATA_FLAG_NEW_REF)) - av_buffer_unref(&buf); - return sd_dst; -} - -int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd, - const AVFrameSideData *src, unsigned int flags) -{ - const AVSideDataDescriptor *desc; - AVBufferRef *buf = NULL; - AVFrameSideData *sd_dst = NULL; - int ret = AVERROR_BUG; - - if (!sd || !src || !nb_sd || (*nb_sd && !*sd)) - return AVERROR(EINVAL); - - desc = av_frame_side_data_desc(src->type); - if (flags & AV_FRAME_SIDE_DATA_FLAG_UNIQUE) - av_frame_side_data_remove(sd, nb_sd, src->type); - if ((!desc || !(desc->props & AV_SIDE_DATA_PROP_MULTI)) && - (sd_dst = (AVFrameSideData *)av_frame_side_data_get(*sd, *nb_sd, src->type))) { - AVDictionary *dict = NULL; - - if (!(flags & AV_FRAME_SIDE_DATA_FLAG_REPLACE)) - return AVERROR(EEXIST); - - ret = av_dict_copy(&dict, src->metadata, 0); - if (ret < 0) - return ret; - - ret = av_buffer_replace(&sd_dst->buf, src->buf); - if (ret < 0) { - av_dict_free(&dict); - return ret; - } - - av_dict_free(&sd_dst->metadata); - sd_dst->metadata = dict; - sd_dst->data = src->data; - sd_dst->size = src->size; - return 0; - } - - buf = av_buffer_ref(src->buf); - if (!buf) - return AVERROR(ENOMEM); - - sd_dst = add_side_data_from_buf_ext(sd, nb_sd, src->type, buf, - src->data, src->size); - if (!sd_dst) { - av_buffer_unref(&buf); - return AVERROR(ENOMEM); - } - - ret = av_dict_copy(&sd_dst->metadata, src->metadata, 0); - if (ret < 0) { - remove_side_data_by_entry(sd, nb_sd, sd_dst); - return ret; - } - - return 0; -} - -const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *sd, - const int nb_sd, - enum AVFrameSideDataType type) -{ - for (int i = 0; i < nb_sd; i++) { - if (sd[i]->type == type) - return sd[i]; - } - return NULL; -} diff --git a/icecat/media/ffvpx/libavutil/side_data.h b/icecat/media/ffvpx/libavutil/side_data.h deleted file mode 100644 index 8275aa35a5..0000000000 --- a/icecat/media/ffvpx/libavutil/side_data.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_SIDE_DATA_H -#define AVUTIL_SIDE_DATA_H - -#include "buffer.h" -#include "frame.h" - -AVFrameSideData *ff_frame_side_data_add_from_buf(AVFrameSideData ***sd, - int *nb_sd, - enum AVFrameSideDataType type, - AVBufferRef *buf); - -#endif // AVUTIL_SIDE_DATA_H diff --git a/icecat/media/ffvpx/libavutil/slicethread.c b/icecat/media/ffvpx/libavutil/slicethread.c index 0a2d6662e1..e6b82e31b6 100644 --- a/icecat/media/ffvpx/libavutil/slicethread.c +++ b/icecat/media/ffvpx/libavutil/slicethread.c @@ -95,7 +95,6 @@ static void *attribute_align_arg thread_worker(void *v) } } -av_cold int avpriv_slicethread_create(AVSliceThread **pctx, void *priv, void (*worker_func)(void *priv, int jobnr, int threadnr, int nb_jobs, int nb_threads), void (*main_func)(void *priv), @@ -153,6 +152,7 @@ int avpriv_slicethread_create(AVSliceThread **pctx, void *priv, for (i = 0; i < nb_workers; i++) { WorkerContext *w = &ctx->workers[i]; + int ret; w->ctx = ctx; ret = pthread_mutex_init(&w->mutex, NULL); if (ret) { @@ -222,14 +222,15 @@ void avpriv_slicethread_execute(AVSliceThread *ctx, int nb_jobs, int execute_mai } } -av_cold void avpriv_slicethread_free(AVSliceThread **pctx) +void avpriv_slicethread_free(AVSliceThread **pctx) { - AVSliceThread *ctx = *pctx; + AVSliceThread *ctx; int nb_workers, i; - if (!ctx) + if (!pctx || !*pctx) return; + ctx = *pctx; nb_workers = ctx->nb_threads; if (!ctx->main_func) nb_workers--; diff --git a/icecat/media/ffvpx/libavutil/stereo3d.c b/icecat/media/ffvpx/libavutil/stereo3d.c index bf3d1e1fe5..d6de476532 100644 --- a/icecat/media/ffvpx/libavutil/stereo3d.c +++ b/icecat/media/ffvpx/libavutil/stereo3d.c @@ -20,6 +20,7 @@ #include +#include "avstring.h" #include "frame.h" #include "macros.h" #include "mem.h" @@ -102,7 +103,7 @@ int av_stereo3d_from_name(const char *name) int i; for (i = 0; i < FF_ARRAY_ELEMS(stereo3d_type_names); i++) { - if (!strcmp(name, stereo3d_type_names[i])) + if (av_strstart(name, stereo3d_type_names[i], NULL)) return i; } @@ -122,7 +123,7 @@ int av_stereo3d_view_from_name(const char *name) int i; for (i = 0; i < FF_ARRAY_ELEMS(stereo3d_view_names); i++) { - if (!strcmp(name, stereo3d_view_names[i])) + if (av_strstart(name, stereo3d_view_names[i], NULL)) return i; } @@ -142,7 +143,7 @@ int av_stereo3d_primary_eye_from_name(const char *name) int i; for (i = 0; i < FF_ARRAY_ELEMS(stereo3d_primary_eye_names); i++) { - if (!strcmp(name, stereo3d_primary_eye_names[i])) + if (av_strstart(name, stereo3d_primary_eye_names[i], NULL)) return i; } diff --git a/icecat/media/ffvpx/libavutil/thread.h b/icecat/media/ffvpx/libavutil/thread.h index 184e2d8c5f..2c00c7cc35 100644 --- a/icecat/media/ffvpx/libavutil/thread.h +++ b/icecat/media/ffvpx/libavutil/thread.h @@ -229,8 +229,6 @@ static inline int ff_thread_setname(const char *name) #endif #elif HAVE_PTHREAD_SET_NAME_NP pthread_set_name_np(pthread_self(), name); -#elif HAVE_W32THREADS - ret = win32_thread_setname(name); #else ret = AVERROR(ENOSYS); #endif diff --git a/icecat/media/ffvpx/libavutil/timecode.c b/icecat/media/ffvpx/libavutil/timecode.c index 316100759e..f454466f97 100644 --- a/icecat/media/ffvpx/libavutil/timecode.c +++ b/icecat/media/ffvpx/libavutil/timecode.c @@ -29,7 +29,6 @@ #include #include "common.h" #include "timecode.h" -#include "timecode_internal.h" #include "log.h" #include "error.h" @@ -103,7 +102,7 @@ uint32_t av_timecode_get_smpte(AVRational rate, int drop, int hh, int mm, int ss char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum_arg) { - unsigned fps = tc->fps; + int fps = tc->fps; int drop = tc->flags & AV_TIMECODE_FLAG_DROPFRAME; int hh, mm, ss, ff, ff_len, neg = 0; int64_t framenum = framenum_arg; @@ -128,10 +127,32 @@ char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum_arg) return buf; } +static unsigned bcd2uint(uint8_t bcd) +{ + unsigned low = bcd & 0xf; + unsigned high = bcd >> 4; + if (low > 9 || high > 9) + return 0; + return low + 10*high; +} + char *av_timecode_make_smpte_tc_string2(char *buf, AVRational rate, uint32_t tcsmpte, int prevent_df, int skip_field) { - unsigned hh, mm, ss, ff, drop; - ff_timecode_set_smpte(&drop, &hh, &mm, &ss, &ff, rate, tcsmpte, prevent_df, skip_field); + unsigned hh = bcd2uint(tcsmpte & 0x3f); // 6-bit hours + unsigned mm = bcd2uint(tcsmpte>>8 & 0x7f); // 7-bit minutes + unsigned ss = bcd2uint(tcsmpte>>16 & 0x7f); // 7-bit seconds + unsigned ff = bcd2uint(tcsmpte>>24 & 0x3f); // 6-bit frames + unsigned drop = tcsmpte & 1<<30 && !prevent_df; // 1-bit drop if not arbitrary bit + + if (av_cmp_q(rate, (AVRational) {30, 1}) == 1) { + ff <<= 1; + if (!skip_field) { + if (av_cmp_q(rate, (AVRational) {50, 1}) == 0) + ff += !!(tcsmpte & 1 << 7); + else + ff += !!(tcsmpte & 1 << 23); + } + } snprintf(buf, AV_TIMECODE_STR_SIZE, "%02u:%02u:%02u%c%02u", hh, mm, ss, drop ? ';' : ':', ff); @@ -211,7 +232,6 @@ int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start int av_timecode_init_from_components(AVTimecode *tc, AVRational rate, int flags, int hh, int mm, int ss, int ff, void *log_ctx) { int ret; - int64_t s; memset(tc, 0, sizeof(*tc)); tc->flags = flags; @@ -222,15 +242,7 @@ int av_timecode_init_from_components(AVTimecode *tc, AVRational rate, int flags, if (ret < 0) return ret; - s = hh*3600LL + mm*60LL + ss; - if (s != (int32_t)s) - return AVERROR(EINVAL); - - s = s * tc->fps + ff; - if (s != (int32_t)s) - return AVERROR(EINVAL); - tc->start = s; - + tc->start = (hh*3600 + mm*60 + ss) * tc->fps + ff; if (tc->flags & AV_TIMECODE_FLAG_DROPFRAME) { /* adjust frame number */ int tmins = 60*hh + mm; tc->start -= (tc->fps / 30 * 2) * (tmins - tmins/10); diff --git a/icecat/media/ffvpx/libavutil/timecode_internal.c b/icecat/media/ffvpx/libavutil/timecode_internal.c deleted file mode 100644 index 259ebf1664..0000000000 --- a/icecat/media/ffvpx/libavutil/timecode_internal.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2006 Smartjog S.A.S, Baptiste Coudurier - * Copyright (c) 2011-2012 Smartjog S.A.S, Clément Bœsch - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "timecode_internal.h" - -static unsigned bcd2uint(uint8_t bcd) -{ - unsigned low = bcd & 0xf; - unsigned high = bcd >> 4; - if (low > 9 || high > 9) - return 0; - return low + 10*high; -} - -void ff_timecode_set_smpte(unsigned *drop, unsigned *hh, unsigned *mm, unsigned *ss, unsigned *ff, - AVRational rate, uint32_t tcsmpte, int prevent_df, int skip_field) -{ - *hh = bcd2uint(tcsmpte & 0x3f); // 6-bit hours - *mm = bcd2uint(tcsmpte>>8 & 0x7f); // 7-bit minutes - *ss = bcd2uint(tcsmpte>>16 & 0x7f); // 7-bit seconds - *ff = bcd2uint(tcsmpte>>24 & 0x3f); // 6-bit frames - *drop = tcsmpte & 1<<30 && !prevent_df; // 1-bit drop if not arbitrary bit - - if (av_cmp_q(rate, (AVRational) {30, 1}) == 1) { - *ff <<= 1; - if (!skip_field) { - if (av_cmp_q(rate, (AVRational) {50, 1}) == 0) - *ff += !!(tcsmpte & 1 << 7); - else - *ff += !!(tcsmpte & 1 << 23); - } - } -} diff --git a/icecat/media/ffvpx/libavutil/timecode_internal.h b/icecat/media/ffvpx/libavutil/timecode_internal.h deleted file mode 100644 index 8ef43d1f98..0000000000 --- a/icecat/media/ffvpx/libavutil/timecode_internal.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2006 Smartjog S.A.S, Baptiste Coudurier - * Copyright (c) 2011-2012 Smartjog S.A.S, Clément Bœsch - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Timecode helpers header - */ - -#ifndef AVUTIL_TIMECODE_INTERNAL_H -#define AVUTIL_TIMECODE_INTERNAL_H - -#include -#include "rational.h" - -/** - * Convert SMPTE 12M binary representation to sei info. - * - * @param drop drop flag output - * @param hh hour output - * @param mm minute output - * @param ss second output - * @param ff frame number output - * @param rate frame rate of the timecode - * @param tcsmpte the 32-bit SMPTE timecode - * @param prevent_df prevent the use of a drop flag when it is known the DF bit - * is arbitrary - * @param skip_field prevent the use of a field flag when it is known the field - * bit is arbitrary (e.g. because it is used as PC flag) - */ -void ff_timecode_set_smpte(unsigned *drop, unsigned *hh, unsigned *mm, unsigned *ss, unsigned *ff, - AVRational rate, uint32_t tcsmpte, int prevent_df, int skip_field); - -#endif /* AVUTIL_TIMECODE_INTERNAL_H */ diff --git a/icecat/media/ffvpx/libavutil/tx.c b/icecat/media/ffvpx/libavutil/tx.c index 54660c9079..426303d1f3 100644 --- a/icecat/media/ffvpx/libavutil/tx.c +++ b/icecat/media/ffvpx/libavutil/tx.c @@ -284,7 +284,7 @@ static void reset_ctx(AVTXContext *s, int free_sub) * ff_tx_init_subtx() call is made. */ s->nb_sub = 0; s->opaque = NULL; - memset(s->fn, 0, sizeof(s->fn)); + memset(s->fn, 0, sizeof(*s->fn)); } void ff_tx_clear_ctx(AVTXContext *s) diff --git a/icecat/media/ffvpx/libavutil/tx.h b/icecat/media/ffvpx/libavutil/tx.h index c950095735..4696988cae 100644 --- a/icecat/media/ffvpx/libavutil/tx.h +++ b/icecat/media/ffvpx/libavutil/tx.h @@ -50,7 +50,7 @@ enum AVTXType { /** * Standard MDCT with a sample data type of float, double or int32_t, - * respectively. For the float and int32 variants, the scale type is + * respecively. For the float and int32 variants, the scale type is * 'float', while for the double variant, it's 'double'. * If scale is NULL, 1.0 will be used as a default. * diff --git a/icecat/media/ffvpx/libavutil/tx_template.c b/icecat/media/ffvpx/libavutil/tx_template.c index ecee572e40..701ef0d6de 100644 --- a/icecat/media/ffvpx/libavutil/tx_template.c +++ b/icecat/media/ffvpx/libavutil/tx_template.c @@ -45,6 +45,10 @@ SR_TABLE(32768) \ SR_TABLE(65536) \ SR_TABLE(131072) \ + SR_TABLE(262144) \ + SR_TABLE(524288) \ + SR_TABLE(1048576) \ + SR_TABLE(2097152) \ #define SR_TABLE(len) \ TABLE_DEF(len, len/4 + 1); @@ -720,6 +724,10 @@ DECL_SR_CODELET(16384,8192,4096) DECL_SR_CODELET(32768,16384,8192) DECL_SR_CODELET(65536,32768,16384) DECL_SR_CODELET(131072,65536,32768) +DECL_SR_CODELET(262144,131072,65536) +DECL_SR_CODELET(524288,262144,131072) +DECL_SR_CODELET(1048576,524288,262144) +DECL_SR_CODELET(2097152,1048576,524288) static av_cold int TX_NAME(ff_tx_fft_init)(AVTXContext *s, const FFTXCodelet *cd, @@ -1023,7 +1031,7 @@ retry: break; } - /* If nothing was successful, error out */ + /* If nothing was sucessful, error out */ if (ret < 0) return ret; @@ -2152,6 +2160,10 @@ const FFTXCodelet * const TX_NAME(ff_tx_codelet_list)[] = { &TX_NAME(ff_tx_fft32768_ns_def), &TX_NAME(ff_tx_fft65536_ns_def), &TX_NAME(ff_tx_fft131072_ns_def), + &TX_NAME(ff_tx_fft262144_ns_def), + &TX_NAME(ff_tx_fft524288_ns_def), + &TX_NAME(ff_tx_fft1048576_ns_def), + &TX_NAME(ff_tx_fft2097152_ns_def), /* Prime factor codelets */ &TX_NAME(ff_tx_fft3_ns_def), diff --git a/icecat/media/ffvpx/libavutil/utils.c b/icecat/media/ffvpx/libavutil/utils.c index fc431fdd60..162a4dee26 100644 --- a/icecat/media/ffvpx/libavutil/utils.c +++ b/icecat/media/ffvpx/libavutil/utils.c @@ -99,7 +99,7 @@ AVRational av_get_time_base_q(void) { return (AVRational){1, AV_TIME_BASE}; } -#if FF_API_ASSERT_FPU + void av_assert0_fpu(void) { #if HAVE_MMX_INLINE uint16_t state[14]; @@ -112,4 +112,3 @@ void av_assert0_fpu(void) { av_assert0((state[4] & 3) == 3); #endif } -#endif diff --git a/icecat/media/ffvpx/libavutil/version.h b/icecat/media/ffvpx/libavutil/version.h index 40a7d8e300..f2c609da78 100644 --- a/icecat/media/ffvpx/libavutil/version.h +++ b/icecat/media/ffvpx/libavutil/version.h @@ -35,7 +35,7 @@ * Useful to check and match library version in order to maintain * backward compatibility. * - * The FFmpeg libraries follow a versioning scheme very similar to + * The FFmpeg libraries follow a versioning sheme very similar to * Semantic Versioning (http://semver.org/) * The difference is that the component called PATCH is called MICRO in FFmpeg * and its value is reset to 100 instead of 0 to keep it above or equal to 100. @@ -72,15 +72,15 @@ /** * @defgroup lavu_ver Version and Build diagnostics * - * Macros and function useful to check at compile time and at runtime + * Macros and function useful to check at compiletime and at runtime * which version of libavutil is in use. * * @{ */ -#define LIBAVUTIL_VERSION_MAJOR 60 -#define LIBAVUTIL_VERSION_MINOR 30 -#define LIBAVUTIL_VERSION_MICRO 100 +#define LIBAVUTIL_VERSION_MAJOR 59 +#define LIBAVUTIL_VERSION_MINOR 54 +#define LIBAVUTIL_VERSION_MICRO 101 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \ @@ -105,15 +105,18 @@ * @{ */ -#define FF_API_MOD_UINTP2 (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_RISCV_FD_ZBA (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_VULKAN_FIXED_QUEUES (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_OPT_INT_LIST (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_OPT_PTR (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_CPU_FLAG_FORCE (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_DOVI_L11_INVALID_PROPS (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_ASSERT_FPU (LIBAVUTIL_VERSION_MAJOR < 61) -#define FF_API_VULKAN_SYNC_QUEUES (LIBAVUTIL_VERSION_MAJOR < 62) +#define FF_API_HDR_VIVID_THREE_SPLINE (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_FRAME_PKT (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_INTERLACED_FRAME (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_FRAME_KEY (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_PALETTE_HAS_CHANGED (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_VULKAN_CONTIGUOUS_MEMORY (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_H274_FILM_GRAIN_VCS (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_MOD_UINTP2 (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_RISCV_FD_ZBA (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_VULKAN_FIXED_QUEUES (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_OPT_INT_LIST (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_OPT_PTR (LIBAVUTIL_VERSION_MAJOR < 60) /** * @} diff --git a/icecat/media/ffvpx/libavutil/x86/asm.h b/icecat/media/ffvpx/libavutil/x86/asm.h index f06ea25035..9bff42d628 100644 --- a/icecat/media/ffvpx/libavutil/x86/asm.h +++ b/icecat/media/ffvpx/libavutil/x86/asm.h @@ -38,7 +38,8 @@ typedef struct ymm_reg { uint64_t a, b, c, d; } ymm_reg; # define FF_PTR_SIZE "8" typedef int64_t x86_reg; -# define FF_REG_SP "rsp" +/* FF_REG_SP is defined in Solaris sys headers, so use FF_REG_sp */ +# define FF_REG_sp "rsp" # define FF_REG_BP "rbp" # define FF_REGBP rbp # define FF_REGa rax @@ -59,7 +60,7 @@ typedef int64_t x86_reg; # define FF_PTR_SIZE "4" typedef int32_t x86_reg; -# define FF_REG_SP "esp" +# define FF_REG_sp "esp" # define FF_REG_BP "ebp" # define FF_REGBP ebp # define FF_REGa eax diff --git a/icecat/media/ffvpx/libavutil/x86/cpu.c b/icecat/media/ffvpx/libavutil/x86/cpu.c index 5563f6cc3b..d6cd4fab9c 100644 --- a/icecat/media/ffvpx/libavutil/x86/cpu.c +++ b/icecat/media/ffvpx/libavutil/x86/cpu.c @@ -121,8 +121,6 @@ int ff_get_cpu_flags_x86(void) rval |= AV_CPU_FLAG_SSE2; if (ecx & 1) rval |= AV_CPU_FLAG_SSE3; - if (ecx & 0x2) - rval |= AV_CPU_FLAG_CLMUL; if (ecx & 0x00000200 ) rval |= AV_CPU_FLAG_SSSE3; if (ecx & 0x00080000 ) @@ -246,9 +244,8 @@ int ff_get_cpu_flags_x86(void) family == 6 && model < 23) rval |= AV_CPU_FLAG_SSSE3SLOW; - /* Ice Lake and below have slow gather due to Gather Data Sampling - * mitigation. */ - if ((rval & AV_CPU_FLAG_AVX2) && family == 6 && model < 143) + /* Haswell has slow gather */ + if ((rval & AV_CPU_FLAG_AVX2) && family == 6 && model < 70) rval |= AV_CPU_FLAG_SLOW_GATHER; } diff --git a/icecat/media/ffvpx/libavutil/x86/cpu.h b/icecat/media/ffvpx/libavutil/x86/cpu.h index af081b2ed8..40a1eef0ab 100644 --- a/icecat/media/ffvpx/libavutil/x86/cpu.h +++ b/icecat/media/ffvpx/libavutil/x86/cpu.h @@ -22,6 +22,11 @@ #include "libavutil/cpu.h" #include "libavutil/cpu_internal.h" +#define AV_CPU_FLAG_AMD3DNOW AV_CPU_FLAG_3DNOW +#define AV_CPU_FLAG_AMD3DNOWEXT AV_CPU_FLAG_3DNOWEXT + +#define X86_AMD3DNOW(flags) CPUEXT(flags, AMD3DNOW) +#define X86_AMD3DNOWEXT(flags) CPUEXT(flags, AMD3DNOWEXT) #define X86_MMX(flags) CPUEXT(flags, MMX) #define X86_MMXEXT(flags) CPUEXT(flags, MMXEXT) #define X86_SSE(flags) CPUEXT(flags, SSE) @@ -44,9 +49,10 @@ #define X86_FMA4(flags) CPUEXT(flags, FMA4) #define X86_AVX2(flags) CPUEXT(flags, AVX2) #define X86_AESNI(flags) CPUEXT(flags, AESNI) -#define X86_CLMUL(flags) CPUEXT(flags, CLMUL) #define X86_AVX512(flags) CPUEXT(flags, AVX512) +#define EXTERNAL_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOW) +#define EXTERNAL_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOWEXT) #define EXTERNAL_MMX(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, MMX) #define EXTERNAL_MMXEXT(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, MMXEXT) #define EXTERNAL_SSE(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE) @@ -73,10 +79,11 @@ #define EXTERNAL_AVX2_FAST(flags) CPUEXT_SUFFIX_FAST2(flags, _EXTERNAL, AVX2, AVX) #define EXTERNAL_AVX2_SLOW(flags) CPUEXT_SUFFIX_SLOW2(flags, _EXTERNAL, AVX2, AVX) #define EXTERNAL_AESNI(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AESNI) -#define EXTERNAL_CLMUL(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, CLMUL) #define EXTERNAL_AVX512(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AVX512) #define EXTERNAL_AVX512ICL(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AVX512ICL) +#define INLINE_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOW) +#define INLINE_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOWEXT) #define INLINE_MMX(flags) CPUEXT_SUFFIX(flags, _INLINE, MMX) #define INLINE_MMXEXT(flags) CPUEXT_SUFFIX(flags, _INLINE, MMXEXT) #define INLINE_SSE(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE) diff --git a/icecat/media/ffvpx/libavutil/x86/intmath.h b/icecat/media/ffvpx/libavutil/x86/intmath.h index d8d1f19b24..4893a1f1b4 100644 --- a/icecat/media/ffvpx/libavutil/x86/intmath.h +++ b/icecat/media/ffvpx/libavutil/x86/intmath.h @@ -66,7 +66,7 @@ static av_always_inline av_const int ff_ctzll_x86(long long v) #endif /* HAVE_FAST_CLZ */ -#if defined(__GNUC__) || defined(__clang__) +#if defined(__GNUC__) /* Our generic version of av_popcount is faster than GCC's built-in on * CPUs that don't support the popcnt instruction. @@ -81,7 +81,7 @@ static av_always_inline av_const int ff_ctzll_x86(long long v) #if defined(__BMI2__) -#if AV_GCC_VERSION_AT_LEAST(5,1) || AV_HAS_BUILTIN(__builtin_ia32_bzhi_si) +#if AV_GCC_VERSION_AT_LEAST(5,1) #if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 #define av_zero_extend av_zero_extend_bmi2 static av_always_inline av_const unsigned av_zero_extend_bmi2(unsigned a, unsigned p) @@ -114,6 +114,68 @@ static av_always_inline av_const unsigned av_zero_extend_bmi2(unsigned a, unsign #endif /* __BMI2__ */ +#if defined(__SSE2__) && !defined(__INTEL_COMPILER) + +#define av_clipd av_clipd_sse2 +static av_always_inline av_const double av_clipd_sse2(double a, double amin, double amax) +{ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + __asm__ ("maxsd %1, %0 \n\t" + "minsd %2, %0 \n\t" + : "+&x"(a) : "xm"(amin), "xm"(amax)); + return a; +} + +#endif /* __SSE2__ */ + +#if defined(__SSE__) && !defined(__INTEL_COMPILER) + +#define av_clipf av_clipf_sse +static av_always_inline av_const float av_clipf_sse(float a, float amin, float amax) +{ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + __asm__ ("maxss %1, %0 \n\t" + "minss %2, %0 \n\t" + : "+&x"(a) : "xm"(amin), "xm"(amax)); + return a; +} + +#endif /* __SSE__ */ + +#if defined(__AVX__) && !defined(__INTEL_COMPILER) + +#undef av_clipd +#define av_clipd av_clipd_avx +static av_always_inline av_const double av_clipd_avx(double a, double amin, double amax) +{ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + __asm__ ("vmaxsd %1, %0, %0 \n\t" + "vminsd %2, %0, %0 \n\t" + : "+&x"(a) : "xm"(amin), "xm"(amax)); + return a; +} + +#undef av_clipf +#define av_clipf av_clipf_avx +static av_always_inline av_const float av_clipf_avx(float a, float amin, float amax) +{ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + __asm__ ("vmaxss %1, %0, %0 \n\t" + "vminss %2, %0, %0 \n\t" + : "+&x"(a) : "xm"(amin), "xm"(amax)); + return a; +} + +#endif /* __AVX__ */ + #endif /* __GNUC__ */ #endif /* AVUTIL_X86_INTMATH_H */ diff --git a/icecat/media/ffvpx/libavutil/x86/pixelutils.asm b/icecat/media/ffvpx/libavutil/x86/pixelutils.asm index a80202ef75..0bcccb51f5 100644 --- a/icecat/media/ffvpx/libavutil/x86/pixelutils.asm +++ b/icecat/media/ffvpx/libavutil/x86/pixelutils.asm @@ -241,24 +241,70 @@ SAD_XMM_32x32 u ; const uint8_t *src2, ptrdiff_t stride2); ;------------------------------------------------------------------------------- INIT_YMM avx2 -cglobal pixelutils_sad_32x32, 4,7,3, src1, stride1, src2, stride2 +cglobal pixelutils_sad_32x32, 4,7,5, src1, stride1, src2, stride2 + pxor m0, m0 + mov r4d, 32/4 + lea r5, [stride1q * 3] + lea r6, [stride2q * 3] + +.loop: + movu m1, [src1q] ; row 0 of pix0 + movu m2, [src2q] ; row 0 of pix1 + movu m3, [src1q + stride1q] ; row 1 of pix0 + movu m4, [src2q + stride2q] ; row 1 of pix1 + + psadbw m1, m2 + psadbw m3, m4 + paddd m0, m1 + paddd m0, m3 + + movu m1, [src1q + 2 * stride1q] ; row 2 of pix0 + movu m2, [src2q + 2 * stride2q] ; row 2 of pix1 + movu m3, [src1q + r5] ; row 3 of pix0 + movu m4, [src2q + r6] ; row 3 of pix1 + + psadbw m1, m2 + psadbw m3, m4 + paddd m0, m1 + paddd m0, m3 + + lea src2q, [src2q + 4 * stride2q] + lea src1q, [src1q + 4 * stride1q] + + dec r4d + jnz .loop + + vextracti128 xm1, m0, 1 + paddd xm0, xm1 + pshufd xm1, xm0, 2 + paddd xm0, xm1 + movd eax, xm0 + RET + +;------------------------------------------------------------------------------- +; int ff_pixelutils_sad_[au]_32x32_avx2(const uint8_t *src1, ptrdiff_t stride1, +; const uint8_t *src2, ptrdiff_t stride2); +;------------------------------------------------------------------------------- +%macro SAD_AVX2_32x32 1 +INIT_YMM avx2 +cglobal pixelutils_sad_%1_32x32, 4,7,3, src1, stride1, src2, stride2 pxor m0, m0 mov r4d, 32/4 lea r5, [stride1q * 3] lea r6, [stride2q * 3] .loop: - movu m1, [src2q] ; row 0 of pix1 + mov%1 m1, [src2q] ; row 0 of pix1 psadbw m1, [src1q] - movu m2, [src2q + stride2q] ; row 1 of pix1 + mov%1 m2, [src2q + stride2q] ; row 1 of pix1 psadbw m2, [src1q + stride1q] paddd m0, m1 paddd m0, m2 - movu m1, [src2q + 2 * stride2q] ; row 2 of pix1 + mov%1 m1, [src2q + 2 * stride2q] ; row 2 of pix1 psadbw m1, [src1q + 2 * stride1q] - movu m2, [src2q + r6] ; row 3 of pix1 + mov%1 m2, [src2q + r6] ; row 3 of pix1 psadbw m2, [src1q + r5] paddd m0, m1 @@ -276,4 +322,8 @@ cglobal pixelutils_sad_32x32, 4,7,3, src1, stride1, src2, stride2 paddd xm0, xm1 movd eax, xm0 RET +%endmacro + +SAD_AVX2_32x32 a +SAD_AVX2_32x32 u %endif diff --git a/icecat/media/ffvpx/libavutil/x86/pixelutils_init.c b/icecat/media/ffvpx/libavutil/x86/pixelutils_init.c index 1d369c3359..c3c0662414 100644 --- a/icecat/media/ffvpx/libavutil/x86/pixelutils_init.c +++ b/icecat/media/ffvpx/libavutil/x86/pixelutils_init.c @@ -40,6 +40,10 @@ int ff_pixelutils_sad_u_32x32_sse2(const uint8_t *src1, ptrdiff_t stride1, int ff_pixelutils_sad_32x32_avx2(const uint8_t *src1, ptrdiff_t stride1, const uint8_t *src2, ptrdiff_t stride2); +int ff_pixelutils_sad_a_32x32_avx2(const uint8_t *src1, ptrdiff_t stride1, + const uint8_t *src2, ptrdiff_t stride2); +int ff_pixelutils_sad_u_32x32_avx2(const uint8_t *src1, ptrdiff_t stride1, + const uint8_t *src2, ptrdiff_t stride2); void ff_pixelutils_sad_init_x86(av_pixelutils_sad_fn *sad, int aligned) { @@ -71,9 +75,11 @@ void ff_pixelutils_sad_init_x86(av_pixelutils_sad_fn *sad, int aligned) } } -#if HAVE_AVX2_EXTERNAL if (EXTERNAL_AVX2_FAST(cpu_flags)) { - sad[4] = ff_pixelutils_sad_32x32_avx2; + switch (aligned) { + case 0: sad[4] = ff_pixelutils_sad_32x32_avx2; break; // src1 unaligned, src2 unaligned + case 1: sad[4] = ff_pixelutils_sad_u_32x32_avx2; break; // src1 aligned, src2 unaligned + case 2: sad[4] = ff_pixelutils_sad_a_32x32_avx2; break; // src1 aligned, src2 aligned + } } -#endif } diff --git a/icecat/media/ffvpx/libavutil/x86/tx_float.asm b/icecat/media/ffvpx/libavutil/x86/tx_float.asm index 87be21c2d6..c030147ce8 100644 --- a/icecat/media/ffvpx/libavutil/x86/tx_float.asm +++ b/icecat/media/ffvpx/libavutil/x86/tx_float.asm @@ -46,7 +46,7 @@ %endif %assign i 16 -%rep 14 +%rep 18 cextern tab_ %+ i %+ _float ; ff_tab_i_float... %assign i (i << 1) %endrep @@ -1385,7 +1385,11 @@ FFT_SPLIT_RADIX_DEF 8192, .16384pt FFT_SPLIT_RADIX_DEF 16384, .32768pt FFT_SPLIT_RADIX_DEF 32768, .65536pt FFT_SPLIT_RADIX_DEF 65536, .131072pt -FFT_SPLIT_RADIX_DEF 131072 +FFT_SPLIT_RADIX_DEF 131072, .262144pt +FFT_SPLIT_RADIX_DEF 262144, .524288pt +FFT_SPLIT_RADIX_DEF 524288, .1048576pt +FFT_SPLIT_RADIX_DEF 1048576, .2097152pt +FFT_SPLIT_RADIX_DEF 2097152 ;=============================================================================== ; Final synthesis + deinterleaving code diff --git a/icecat/media/ffvpx/libavutil/x86/tx_float_init.c b/icecat/media/ffvpx/libavutil/x86/tx_float_init.c index f69a5a6d77..3e99c21eac 100644 --- a/icecat/media/ffvpx/libavutil/x86/tx_float_init.c +++ b/icecat/media/ffvpx/libavutil/x86/tx_float_init.c @@ -271,15 +271,15 @@ const FFTXCodelet * const ff_tx_codelet_list_float_x86[] = { AV_TX_INPLACE | FF_TX_PRESHUFFLE | FF_TX_ASM_CALL, AV_CPU_FLAG_AVXSLOW), TX_DEF(fft32_ns, FFT, 32, 32, 2, 0, 352, b8_i2, fma3, FMA3, AV_TX_INPLACE | FF_TX_PRESHUFFLE, AV_CPU_FLAG_AVXSLOW), - TX_DEF(fft_sr, FFT, 64, 131072, 2, 0, 256, b8_i2, avx, AVX, 0, AV_CPU_FLAG_AVXSLOW), - TX_DEF(fft_sr_asm, FFT, 64, 131072, 2, 0, 320, b8_i2, avx, AVX, + TX_DEF(fft_sr, FFT, 64, 2097152, 2, 0, 256, b8_i2, avx, AVX, 0, AV_CPU_FLAG_AVXSLOW), + TX_DEF(fft_sr_asm, FFT, 64, 2097152, 2, 0, 320, b8_i2, avx, AVX, AV_TX_INPLACE | FF_TX_PRESHUFFLE | FF_TX_ASM_CALL, AV_CPU_FLAG_AVXSLOW), - TX_DEF(fft_sr_ns, FFT, 64, 131072, 2, 0, 320, b8_i2, avx, AVX, AV_TX_INPLACE | FF_TX_PRESHUFFLE, + TX_DEF(fft_sr_ns, FFT, 64, 2097152, 2, 0, 320, b8_i2, avx, AVX, AV_TX_INPLACE | FF_TX_PRESHUFFLE, AV_CPU_FLAG_AVXSLOW), - TX_DEF(fft_sr, FFT, 64, 131072, 2, 0, 288, b8_i2, fma3, FMA3, 0, AV_CPU_FLAG_AVXSLOW), - TX_DEF(fft_sr_asm, FFT, 64, 131072, 2, 0, 352, b8_i2, fma3, FMA3, + TX_DEF(fft_sr, FFT, 64, 2097152, 2, 0, 288, b8_i2, fma3, FMA3, 0, AV_CPU_FLAG_AVXSLOW), + TX_DEF(fft_sr_asm, FFT, 64, 2097152, 2, 0, 352, b8_i2, fma3, FMA3, AV_TX_INPLACE | FF_TX_PRESHUFFLE | FF_TX_ASM_CALL, AV_CPU_FLAG_AVXSLOW), - TX_DEF(fft_sr_ns, FFT, 64, 131072, 2, 0, 352, b8_i2, fma3, FMA3, AV_TX_INPLACE | FF_TX_PRESHUFFLE, + TX_DEF(fft_sr_ns, FFT, 64, 2097152, 2, 0, 352, b8_i2, fma3, FMA3, AV_TX_INPLACE | FF_TX_PRESHUFFLE, AV_CPU_FLAG_AVXSLOW), TX_DEF(fft15, FFT, 15, 15, 15, 0, 320, factor_init, avx2, AVX2, @@ -287,11 +287,11 @@ const FFTXCodelet * const ff_tx_codelet_list_float_x86[] = { TX_DEF(fft15_ns, FFT, 15, 15, 15, 0, 384, factor_init, avx2, AVX2, AV_TX_INPLACE | FF_TX_PRESHUFFLE, AV_CPU_FLAG_AVXSLOW), - TX_DEF(fft_sr, FFT, 64, 131072, 2, 0, 320, b8_i2, avx2, AVX2, 0, + TX_DEF(fft_sr, FFT, 64, 2097152, 2, 0, 320, b8_i2, avx2, AVX2, 0, AV_CPU_FLAG_AVXSLOW | AV_CPU_FLAG_SLOW_GATHER), - TX_DEF(fft_sr_asm, FFT, 64, 131072, 2, 0, 384, b8_i2, avx2, AVX2, + TX_DEF(fft_sr_asm, FFT, 64, 2097152, 2, 0, 384, b8_i2, avx2, AVX2, AV_TX_INPLACE | FF_TX_PRESHUFFLE | FF_TX_ASM_CALL, AV_CPU_FLAG_AVXSLOW | AV_CPU_FLAG_SLOW_GATHER), - TX_DEF(fft_sr_ns, FFT, 64, 131072, 2, 0, 384, b8_i2, avx2, AVX2, AV_TX_INPLACE | FF_TX_PRESHUFFLE, + TX_DEF(fft_sr_ns, FFT, 64, 2097152, 2, 0, 384, b8_i2, avx2, AVX2, AV_TX_INPLACE | FF_TX_PRESHUFFLE, AV_CPU_FLAG_AVXSLOW | AV_CPU_FLAG_SLOW_GATHER), TX_DEF(fft_pfa_15xM, FFT, 60, TX_LEN_UNLIMITED, 15, 2, 320, fft_pfa_init, avx2, AVX2, diff --git a/icecat/media/ffvpx/libavutil/x86/x86inc.asm b/icecat/media/ffvpx/libavutil/x86/x86inc.asm index 0e80ebed43..e61d924bc1 100644 --- a/icecat/media/ffvpx/libavutil/x86/x86inc.asm +++ b/icecat/media/ffvpx/libavutil/x86/x86inc.asm @@ -609,7 +609,7 @@ DECLARE_REG 14, R13, 120 RESET_STACK_STATE %endmacro -%define has_epilogue (regs_used > 7 || stack_size > 0 || vzeroupper_required || xmm_regs_used > 6+high_mm_regs) +%define has_epilogue regs_used > 7 || stack_size > 0 || vzeroupper_required || xmm_regs_used > 6+high_mm_regs %macro RET 0 WIN64_RESTORE_XMM_INTERNAL @@ -658,7 +658,7 @@ DECLARE_REG 14, R13, 72 %endif %endmacro -%define has_epilogue (regs_used > 9 || stack_size > 0 || vzeroupper_required) +%define has_epilogue regs_used > 9 || stack_size > 0 || vzeroupper_required %macro RET 0 %if stack_size_padded > 0 @@ -722,7 +722,7 @@ DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14 %endif %endmacro -%define has_epilogue (regs_used > 3 || stack_size > 0 || vzeroupper_required) +%define has_epilogue regs_used > 3 || stack_size > 0 || vzeroupper_required %macro RET 0 %if stack_size_padded > 0 diff --git a/icecat/media/ffvpx/libavutil/x86/x86util.asm b/icecat/media/ffvpx/libavutil/x86/x86util.asm index da41e2e5ef..836f6afcb8 100644 --- a/icecat/media/ffvpx/libavutil/x86/x86util.asm +++ b/icecat/media/ffvpx/libavutil/x86/x86util.asm @@ -1022,15 +1022,3 @@ pxor %1, %2 %endif %endmacro - -; NASM panics when emitting CodeView debug info for an empty translation unit. -; GNU binutils `strip` and some other tools such as older MSVC linker also fail -; on such files. Emit a dummy byte in a section with IMAGE_SCN_LNK_REMOVE flag -; to work around these issues. Sections like that are dropped by the linker. -%ifidn __OUTPUT_FORMAT__,win64 - section .x86util info - db 0 -%elifidn __OUTPUT_FORMAT__,win32 - section .x86util info - db 0 -%endif diff --git a/icecat/media/ffvpx/libavutil_visibility.h b/icecat/media/ffvpx/libavutil_visibility.h index f152bef583..1ed8d267ad 100644 --- a/icecat/media/ffvpx/libavutil_visibility.h +++ b/icecat/media/ffvpx/libavutil_visibility.h @@ -13,7 +13,6 @@ // We need av_log() to be visible so we can enable assertions in libavcodec. #include "libavutil/log.h" -#include "libavutil/internal.h" #include "libavcodec/packet.h" #pragma GCC visibility pop diff --git a/icecat/media/ffvpx/mediacodec_drm.patch b/icecat/media/ffvpx/mediacodec_drm.patch deleted file mode 100644 index 4eb1c57561..0000000000 --- a/icecat/media/ffvpx/mediacodec_drm.patch +++ /dev/null @@ -1,217 +0,0 @@ -diff --git a/media/ffvpx/libavcodec/avcodec.h b/media/ffvpx/libavcodec/avcodec.h ---- a/media/ffvpx/libavcodec/avcodec.h -+++ b/media/ffvpx/libavcodec/avcodec.h -@@ -1942,6 +1942,8 @@ typedef struct AVCodecContext { - * - decoding: Set by libavcodec - */ - enum AVAlphaMode alpha_mode; -+ -+ void* moz_ndk_crypto; - } AVCodecContext; - - /** -diff --git a/media/ffvpx/libavcodec/mediacodec_wrapper.c b/media/ffvpx/libavcodec/mediacodec_wrapper.c ---- a/media/ffvpx/libavcodec/mediacodec_wrapper.c -+++ b/media/ffvpx/libavcodec/mediacodec_wrapper.c -@@ -1537,6 +1537,11 @@ fail: - return ret; - } - -+static int mediacodec_jni_queueSecureInputBuffer(FFAMediaCodec* ctx, size_t idx, off_t offset, void* cryptoInfo, uint64_t time, uint32_t flags) -+{ -+ return AVERROR_PATCHWELCOME; -+} -+ - static ssize_t mediacodec_jni_dequeueOutputBuffer(FFAMediaCodec* ctx, FFAMediaCodecBufferInfo *info, int64_t timeoutUs) - { - int ret = 0; -@@ -1811,6 +1816,7 @@ static const FFAMediaCodec media_codec_jni = { - - .dequeueInputBuffer = mediacodec_jni_dequeueInputBuffer, - .queueInputBuffer = mediacodec_jni_queueInputBuffer, -+ .queueSecureInputBuffer = mediacodec_jni_queueSecureInputBuffer, - - .dequeueOutputBuffer = mediacodec_jni_dequeueOutputBuffer, - .getOutputFormat = mediacodec_jni_getOutputFormat, -@@ -2209,7 +2215,7 @@ static int mediacodec_ndk_configure(FFAMediaCodec* ctx, - return AVERROR_EXTERNAL; - } - } else { -- status = AMediaCodec_configure(codec->impl, format->impl, native_window, NULL, flags); -+ status = AMediaCodec_configure(codec->impl, format->impl, native_window, (AMediaCrypto*)crypto, flags); - if (status != AMEDIA_OK) { - av_log(codec, AV_LOG_ERROR, "Decoder configure failed, %d\n", status); - return AVERROR_EXTERNAL; -@@ -2263,6 +2269,14 @@ static int mediacodec_ndk_queueInputBuffer(FFAMediaCodec *ctx, size_t idx, - return AMediaCodec_queueInputBuffer(codec->impl, idx, offset, size, time, flags); - } - -+static int mediacodec_ndk_queueSecureInputBuffer(FFAMediaCodec *ctx, size_t idx, -+ off_t offset, void* cryptoInfo, -+ uint64_t time, uint32_t flags) -+{ -+ FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; -+ return AMediaCodec_queueSecureInputBuffer(codec->impl, idx, offset, (AMediaCodecCryptoInfo*)cryptoInfo, time, flags); -+} -+ - static ssize_t mediacodec_ndk_dequeueOutputBuffer(FFAMediaCodec* ctx, FFAMediaCodecBufferInfo *info, int64_t timeoutUs) - { - FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; -@@ -2507,6 +2521,7 @@ static const FFAMediaCodec media_codec_ndk = { - - .dequeueInputBuffer = mediacodec_ndk_dequeueInputBuffer, - .queueInputBuffer = mediacodec_ndk_queueInputBuffer, -+ .queueSecureInputBuffer = mediacodec_ndk_queueSecureInputBuffer, - - .dequeueOutputBuffer = mediacodec_ndk_dequeueOutputBuffer, - .getOutputFormat = mediacodec_ndk_getOutputFormat, -diff --git a/media/ffvpx/libavcodec/mediacodec_wrapper.h b/media/ffvpx/libavcodec/mediacodec_wrapper.h ---- a/media/ffvpx/libavcodec/mediacodec_wrapper.h -+++ b/media/ffvpx/libavcodec/mediacodec_wrapper.h -@@ -214,6 +214,7 @@ struct FFAMediaCodec { - - ssize_t (*dequeueInputBuffer)(FFAMediaCodec* codec, int64_t timeoutUs); - int (*queueInputBuffer)(FFAMediaCodec* codec, size_t idx, off_t offset, size_t size, uint64_t time, uint32_t flags); -+ int (*queueSecureInputBuffer)(FFAMediaCodec* codec, size_t idx, off_t offset, void* cryptoInfo, uint64_t time, uint32_t flags); - - ssize_t (*dequeueOutputBuffer)(FFAMediaCodec* codec, FFAMediaCodecBufferInfo *info, int64_t timeoutUs); - FFAMediaFormat* (*getOutputFormat)(FFAMediaCodec* codec); -@@ -299,6 +300,11 @@ static inline int ff_AMediaCodec_queueInputBuffer(FFAMediaCodec *codec, size_t i - return codec->queueInputBuffer(codec, idx, offset, size, time, flags); - } - -+static inline int ff_AMediaCodec_queueSecureInputBuffer(FFAMediaCodec *codec, size_t idx, off_t offset, void* cryptoInfo, uint64_t time, uint32_t flags) -+{ -+ return codec->queueSecureInputBuffer(codec, idx, offset, cryptoInfo, time, flags); -+} -+ - static inline ssize_t ff_AMediaCodec_dequeueOutputBuffer(FFAMediaCodec* codec, FFAMediaCodecBufferInfo *info, int64_t timeoutUs) - { - return codec->dequeueOutputBuffer(codec, info, timeoutUs); -diff --git a/media/ffvpx/libavcodec/mediacodecdec_common.c b/media/ffvpx/libavcodec/mediacodecdec_common.c ---- a/media/ffvpx/libavcodec/mediacodecdec_common.c -+++ b/media/ffvpx/libavcodec/mediacodecdec_common.c -@@ -837,7 +837,7 @@ int ff_mediacodec_dec_init(AVCodecContext *avctx, MediaCodecDecContext *s, - if (ret < 0) - goto fail; - -- status = ff_AMediaCodec_configure(s->codec, format, s->surface, NULL, 0); -+ status = ff_AMediaCodec_configure(s->codec, format, s->surface, avctx->moz_ndk_crypto, 0); - if (status < 0) { - char *desc = ff_AMediaFormat_toString(format); - av_log(avctx, AV_LOG_ERROR, -@@ -943,7 +943,11 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s, - - av_log(avctx, AV_LOG_DEBUG, "Sending End Of Stream signal\n"); - -- status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, 0, pts, flags); -+ if (pkt->moz_ndk_crypto_info) { -+ status = ff_AMediaCodec_queueSecureInputBuffer(codec, index, 0, pkt->moz_ndk_crypto_info, pts, flags); -+ } else { -+ status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, 0, pts, flags); -+ } - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to queue input empty buffer (status = %d)\n", status); - return AVERROR_EXTERNAL; -@@ -960,7 +964,11 @@ int ff_mediacodec_dec_send(AVCodecContext *avctx, MediaCodecDecContext *s, - memcpy(data, pkt->data + offset, size); - offset += size; - -- status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, size, pts, 0); -+ if (pkt->moz_ndk_crypto_info) { -+ status = ff_AMediaCodec_queueSecureInputBuffer(codec, index, 0, pkt->moz_ndk_crypto_info, pts, 0); -+ } else { -+ status = ff_AMediaCodec_queueInputBuffer(codec, index, 0, size, pts, 0); -+ } - if (status < 0) { - av_log(avctx, AV_LOG_ERROR, "Failed to queue input buffer (status = %d)\n", status); - return AVERROR_EXTERNAL; -diff --git a/media/ffvpx/libavcodec/packet.c b/media/ffvpx/libavcodec/packet.c ---- a/media/ffvpx/libavcodec/packet.c -+++ b/media/ffvpx/libavcodec/packet.c -@@ -390,6 +390,32 @@ int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - return AVERROR(ENOENT); - } - -+static void av_packet_free_moz_crypto_info(AVPacket *pkt) { -+ if (pkt->moz_crypto_info_release && pkt->moz_crypto_info) { -+ (*pkt->moz_crypto_info_release)(pkt->moz_crypto_info); -+ } -+ pkt->moz_ndk_crypto_info = NULL; -+ pkt->moz_crypto_info = NULL; -+ pkt->moz_crypto_info_addref = NULL; -+ pkt->moz_crypto_info_release = NULL; -+} -+ -+static int av_packet_copy_moz_crypto_info(AVPacket *dst, const AVPacket *src) { -+ av_packet_free_moz_crypto_info(dst); -+ if (!src->moz_ndk_crypto_info) { -+ return 0; -+ } -+ if (!src->moz_crypto_info || !src->moz_crypto_info_addref || !src->moz_crypto_info_release) { -+ return AVERROR(EINVAL); -+ } -+ dst->moz_ndk_crypto_info = src->moz_ndk_crypto_info; -+ dst->moz_crypto_info = src->moz_crypto_info; -+ dst->moz_crypto_info_addref = src->moz_crypto_info_addref; -+ dst->moz_crypto_info_release = src->moz_crypto_info_release; -+ (*dst->moz_crypto_info_addref)(dst->moz_crypto_info); -+ return 0; -+} -+ - int av_packet_copy_props(AVPacket *dst, const AVPacket *src) - { - int i, ret; -@@ -406,10 +432,16 @@ int av_packet_copy_props(AVPacket *dst, const AVPacket *src) - dst->side_data = NULL; - dst->side_data_elems = 0; - -- ret = av_buffer_replace(&dst->opaque_ref, src->opaque_ref); -+ ret = av_packet_copy_moz_crypto_info(dst, src); - if (ret < 0) - return ret; - -+ ret = av_buffer_replace(&dst->opaque_ref, src->opaque_ref); -+ if (ret < 0) { -+ av_packet_free_moz_crypto_info(dst); -+ return ret; -+ } -+ - for (i = 0; i < src->side_data_elems; i++) { - enum AVPacketSideDataType type = src->side_data[i].type; - size_t size = src->side_data[i].size; -@@ -417,6 +449,7 @@ int av_packet_copy_props(AVPacket *dst, const AVPacket *src) - uint8_t *dst_data = av_packet_new_side_data(dst, type, size); - - if (!dst_data) { -+ av_packet_free_moz_crypto_info(dst); - av_buffer_unref(&dst->opaque_ref); - av_packet_free_side_data(dst); - return AVERROR(ENOMEM); -@@ -429,6 +462,7 @@ int av_packet_copy_props(AVPacket *dst, const AVPacket *src) - - void av_packet_unref(AVPacket *pkt) - { -+ av_packet_free_moz_crypto_info(pkt); - av_packet_free_side_data(pkt); - av_buffer_unref(&pkt->opaque_ref); - av_buffer_unref(&pkt->buf); -diff --git a/media/ffvpx/libavcodec/packet.h b/media/ffvpx/libavcodec/packet.h ---- a/media/ffvpx/libavcodec/packet.h -+++ b/media/ffvpx/libavcodec/packet.h -@@ -581,6 +581,15 @@ typedef struct AVPacket { - * or muxers. - */ - AVRational time_base; -+ -+ /** -+ * GNU extensions to manage AMediaCryptoInfo for encrypted packets on -+ * Android. Must provide all parameters if any are given. -+ */ -+ void* moz_ndk_crypto_info; -+ void* moz_crypto_info; -+ void (*moz_crypto_info_addref)(void*); -+ void (*moz_crypto_info_release)(void*); - } AVPacket; - - #if FF_API_INIT_PACKET diff --git a/icecat/media/ffvpx/mediacodec_eos.patch b/icecat/media/ffvpx/mediacodec_eos.patch deleted file mode 100644 index 4cb80494f6..0000000000 --- a/icecat/media/ffvpx/mediacodec_eos.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/media/ffvpx/libavcodec/mediacodecdec.c b/media/ffvpx/libavcodec/mediacodecdec.c ---- a/media/ffvpx/libavcodec/mediacodecdec.c -+++ b/media/ffvpx/libavcodec/mediacodecdec.c -@@ -727,3 +727,9 @@ DECLARE_MEDIACODEC_ADEC(amrwb, "AMR-WB", AV_CODEC_ID_AMR_WB, NULL) - #if CONFIG_MP3_MEDIACODEC_DECODER - DECLARE_MEDIACODEC_ADEC(mp3, "MP3", AV_CODEC_ID_MP3, NULL) - #endif -+ -+int moz_avcodec_mediacodec_is_eos(AVCodecContext* avctx) { -+ // Note that MediaCodecH264DecContext is used by all codec types. -+ MediaCodecH264DecContext *s = avctx->priv_data; -+ return s->ctx->eos; -+} -diff --git a/media/ffvpx/libavcodec/mediacodecdec_common.c b/media/ffvpx/libavcodec/mediacodecdec_common.c ---- a/media/ffvpx/libavcodec/mediacodecdec_common.c -+++ b/media/ffvpx/libavcodec/mediacodecdec_common.c -@@ -85,7 +85,7 @@ - - #define INPUT_DEQUEUE_TIMEOUT_US 8000 - #define OUTPUT_DEQUEUE_TIMEOUT_US 8000 --#define OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US 1000000 -+#define OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US 8000 - - enum { - ENCODING_PCM_16BIT = 0x00000002, diff --git a/icecat/media/ffvpx/mediacodec_force_key_frames.patch b/icecat/media/ffvpx/mediacodec_force_key_frames.patch deleted file mode 100644 index 7e516dbaf8..0000000000 --- a/icecat/media/ffvpx/mediacodec_force_key_frames.patch +++ /dev/null @@ -1,103 +0,0 @@ -diff --git a/media/ffvpx/libavcodec/mediacodec_wrapper.c b/media/ffvpx/libavcodec/mediacodec_wrapper.c ---- a/media/ffvpx/libavcodec/mediacodec_wrapper.c -+++ b/media/ffvpx/libavcodec/mediacodec_wrapper.c -@@ -1411,6 +1411,12 @@ fail: - return ret; - } - -+static int mediacodec_jni_setParameters(FFAMediaCodec *ctx, -+ const FFAMediaFormat* format_ctx) -+{ -+ return AVERROR_PATCHWELCOME; -+} -+ - static int mediacodec_jni_start(FFAMediaCodec* ctx) - { - int ret = 0; -@@ -1807,6 +1813,7 @@ static const FFAMediaCodec media_codec_jni = { - .delete = mediacodec_jni_delete, - - .configure = mediacodec_jni_configure, -+ .setParameters = mediacodec_jni_setParameters, - .start = mediacodec_jni_start, - .stop = mediacodec_jni_stop, - .flush = mediacodec_jni_flush, -@@ -2225,6 +2232,27 @@ static int mediacodec_ndk_configure(FFAMediaCodec* ctx, - return 0; - } - -+static int mediacodec_ndk_setParameters(FFAMediaCodec *ctx, -+ const FFAMediaFormat* format_ctx) -+{ -+ FFAMediaCodecNdk *codec = (FFAMediaCodecNdk *)ctx; -+ FFAMediaFormatNdk *format = (FFAMediaFormatNdk *)format_ctx; -+ media_status_t status; -+ -+ if (format_ctx->class != &amediaformat_ndk_class) { -+ av_log(ctx, AV_LOG_ERROR, "invalid media format\n"); -+ return AVERROR(EINVAL); -+ } -+ -+ status = AMediaCodec_setParameters(codec->impl, format->impl); -+ if (status != AMEDIA_OK) { -+ av_log(codec, AV_LOG_ERROR, "setParameters failed, %d\n", status); -+ return AVERROR_EXTERNAL; -+ } -+ -+ return 0; -+} -+ - #define MEDIACODEC_NDK_WRAPPER(method) \ - static int mediacodec_ndk_ ## method(FFAMediaCodec* ctx) \ - { \ -@@ -2512,6 +2540,7 @@ static const FFAMediaCodec media_codec_ndk = { - .delete = mediacodec_ndk_delete, - - .configure = mediacodec_ndk_configure, -+ .setParameters = mediacodec_ndk_setParameters, - .start = mediacodec_ndk_start, - .stop = mediacodec_ndk_stop, - .flush = mediacodec_ndk_flush, -diff --git a/media/ffvpx/libavcodec/mediacodec_wrapper.h b/media/ffvpx/libavcodec/mediacodec_wrapper.h ---- a/media/ffvpx/libavcodec/mediacodec_wrapper.h -+++ b/media/ffvpx/libavcodec/mediacodec_wrapper.h -@@ -205,6 +205,7 @@ struct FFAMediaCodec { - int (*delete)(FFAMediaCodec* codec); - - int (*configure)(FFAMediaCodec* codec, const FFAMediaFormat* format, FFANativeWindow* surface, void *crypto, uint32_t flags); -+ int (*setParameters)(FFAMediaCodec* codec, const FFAMediaFormat* format); - int (*start)(FFAMediaCodec* codec); - int (*stop)(FFAMediaCodec* codec); - int (*flush)(FFAMediaCodec* codec); -@@ -260,6 +261,12 @@ static inline int ff_AMediaCodec_configure(FFAMediaCodec *codec, - return codec->configure(codec, format, surface, crypto, flags); - } - -+static inline int ff_AMediaCodec_setParameters(FFAMediaCodec *codec, -+ const FFAMediaFormat *format) -+{ -+ return codec->setParameters(codec, format); -+} -+ - static inline int ff_AMediaCodec_start(FFAMediaCodec* codec) - { - return codec->start(codec); -diff --git a/media/ffvpx/libavcodec/mediacodecenc.c b/media/ffvpx/libavcodec/mediacodecenc.c ---- a/media/ffvpx/libavcodec/mediacodecenc.c -+++ b/media/ffvpx/libavcodec/mediacodecenc.c -@@ -785,6 +785,13 @@ static int mediacodec_send(AVCodecContext *avctx, - copy_frame_to_buffer(avctx, frame, input_buf, input_size); - - pts = av_rescale_q(frame->pts, avctx->time_base, AV_TIME_BASE_Q); -+ -+ if (frame->pict_type == AV_PICTURE_TYPE_I) { -+ FFAMediaFormat *format = ff_AMediaFormat_new(s->use_ndk_codec); -+ if (format) { -+ ff_AMediaFormat_setInt32(format, "request-sync", 0); -+ ff_AMediaCodec_setParameters(codec, format); -+ ff_AMediaFormat_delete(format); -+ } -+ } - } else { - flags |= ff_AMediaCodec_getBufferFlagEndOfStream(codec); - s->eof_sent = 1; diff --git a/icecat/media/ffvpx/mediacodec_h264.patch b/icecat/media/ffvpx/mediacodec_h264.patch deleted file mode 100644 index 61cd145738..0000000000 --- a/icecat/media/ffvpx/mediacodec_h264.patch +++ /dev/null @@ -1,104 +0,0 @@ -diff --git a/media/ffvpx/libavcodec/avcodec.h b/media/ffvpx/libavcodec/avcodec.h ---- a/media/ffvpx/libavcodec/avcodec.h -+++ b/media/ffvpx/libavcodec/avcodec.h -@@ -2106,6 +2106,8 @@ typedef struct AVCodecContext { - AVFrameSideData **decoded_side_data; - int nb_decoded_side_data; - -+ int moz_extradata_offset; -+ - void* moz_ndk_crypto; - } AVCodecContext; - -diff --git a/media/ffvpx/libavcodec/mediacodecdec.c b/media/ffvpx/libavcodec/mediacodecdec.c ---- a/media/ffvpx/libavcodec/mediacodecdec.c -+++ b/media/ffvpx/libavcodec/mediacodecdec.c -@@ -36,9 +36,13 @@ - #include "avcodec.h" - #include "codec_internal.h" - #include "decode.h" -+#if CONFIG_H264_MEDIACODEC_DECODER_EXTRADATA - #include "h264_parse.h" - #include "h264_ps.h" -+#endif -+#if CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA - #include "hevc/parse.h" -+#endif - #include "hwconfig.h" - #include "internal.h" - #include "fffjni.h" -@@ -127,9 +131,9 @@ done: - } - #endif - --#if CONFIG_H264_MEDIACODEC_DECODER - static int h264_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) - { -+#if CONFIG_H264_MEDIACODEC_DECODER_EXTRADATA - int i; - int ret; - -@@ -190,10 +194,25 @@ done: - ff_h264_ps_uninit(&ps); - - return ret; --} -+#else -+ const uint8_t* ed = avctx->extradata; -+ int edsize = avctx->extradata_size; -+ int edoffset = avctx->moz_extradata_offset; -+ -+ if (ed) { -+ if (edoffset > 0 && edoffset < edsize) { -+ ff_AMediaFormat_setBuffer(format, "csd-0", ed, edoffset); -+ ff_AMediaFormat_setBuffer(format, "csd-1", ed + edoffset, edsize - edoffset); -+ } else { -+ ff_AMediaFormat_setBuffer(format, "csd-0", ed, edsize); -+ } -+ } -+ -+ return 0; - #endif -+} - --#if CONFIG_HEVC_MEDIACODEC_DECODER -+#if CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA - static int hevc_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) - { - int i; -@@ -297,7 +316,8 @@ done: - CONFIG_AAC_MEDIACODEC_DECODER || \ - CONFIG_AMRNB_MEDIACODEC_DECODER || \ - CONFIG_AMRWB_MEDIACODEC_DECODER || \ -- CONFIG_MP3_MEDIACODEC_DECODER -+ CONFIG_MP3_MEDIACODEC_DECODER || \ -+ !CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA - static int common_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) - { - int ret = 0; -@@ -353,7 +373,11 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx) - case AV_CODEC_ID_HEVC: - codec_mime = "video/hevc"; - -+#if CONFIG_HEVC_MEDIACODEC_DECODER_EXTRADATA - ret = hevc_set_extradata(avctx, format); -+#else -+ ret = common_set_extradata(avctx, format); -+#endif - if (ret < 0) - goto done; - break; -@@ -637,11 +661,11 @@ const FFCodec ff_ ## short_name ## _mediacodec_decoder = { - }; \ - - #if CONFIG_H264_MEDIACODEC_DECODER --DECLARE_MEDIACODEC_VDEC(h264, "H.264", AV_CODEC_ID_H264, "h264_mp4toannexb") -+DECLARE_MEDIACODEC_VDEC(h264, "H.264", AV_CODEC_ID_H264, NULL) - #endif - - #if CONFIG_HEVC_MEDIACODEC_DECODER --DECLARE_MEDIACODEC_VDEC(hevc, "H.265", AV_CODEC_ID_HEVC, "hevc_mp4toannexb") -+DECLARE_MEDIACODEC_VDEC(hevc, "H.265", AV_CODEC_ID_HEVC, NULL) - #endif - - diff --git a/icecat/media/ffvpx/mediacodec_low_latency.patch b/icecat/media/ffvpx/mediacodec_low_latency.patch deleted file mode 100644 index ab0e25e65e..0000000000 --- a/icecat/media/ffvpx/mediacodec_low_latency.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/media/ffvpx/libavcodec/mediacodecdec.c b/media/ffvpx/libavcodec/mediacodecdec.c ---- a/media/ffvpx/libavcodec/mediacodecdec.c -+++ b/media/ffvpx/libavcodec/mediacodecdec.c -@@ -467,6 +467,9 @@ static av_cold int mediacodec_decode_init(AVCodecContext *avctx) - ff_AMediaFormat_setInt32(format, "channel-count", avctx->ch_layout.nb_channels); - ff_AMediaFormat_setInt32(format, "sample-rate", avctx->sample_rate); - } -+ if (avctx->flags & AV_CODEC_FLAG_LOW_DELAY) { -+ ff_AMediaFormat_setInt32(format, "low-latency", 1); -+ } - if (s->operating_rate > 0) - ff_AMediaFormat_setInt32(format, "operating-rate", s->operating_rate); - diff --git a/icecat/media/ffvpx/vp9-get-format-rollback.patch b/icecat/media/ffvpx/vp9-get-format-rollback.patch deleted file mode 100644 index b0c17fd657..0000000000 --- a/icecat/media/ffvpx/vp9-get-format-rollback.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/media/ffvpx/libavcodec/vp9.c b/media/ffvpx/libavcodec/vp9.c ---- a/media/ffvpx/libavcodec/vp9.c -+++ b/media/ffvpx/libavcodec/vp9.c -@@ -235,8 +235,11 @@ static int update_size(AVCodecContext *avctx, int w, int h) - *fmtp++ = s->pix_fmt; - *fmtp = AV_PIX_FMT_NONE; - - ret = ff_get_format(avctx, pix_fmts); -- if (ret < 0) -+ if (ret < 0) { -+ ff_set_dimensions(avctx, s->w, s->h); - return ret; -+ } - - avctx->pix_fmt = ret; - s->gf_fmt = s->pix_fmt; - diff --git a/icecat/media/gmp-clearkey/0.1/VideoDecoder.cpp b/icecat/media/gmp-clearkey/0.1/VideoDecoder.cpp index 78d64103e2..75dca6b6a1 100644 --- a/icecat/media/gmp-clearkey/0.1/VideoDecoder.cpp +++ b/icecat/media/gmp-clearkey/0.1/VideoDecoder.cpp @@ -131,8 +131,7 @@ cdm::Status VideoDecoder::OutputFrame(cdm::VideoFrame* aVideoFrame) { CK_LOGD("VideoDecoder::OutputFrame Decoder output ret=0x%x", hr); - mOutputQueue.push({output, mDecoder->GetPictureRegion(), - mDecoder->GetStride(), mDecoder->GetFrameHeight()}); + mOutputQueue.push(output); CK_LOGD("VideoDecoder::OutputFrame: Queue size: %u", mOutputQueue.size()); } @@ -149,19 +148,20 @@ cdm::Status VideoDecoder::OutputFrame(cdm::VideoFrame* aVideoFrame) { return cdm::Status::kDecodeError; } - OutputData result = std::move(mOutputQueue.front()); + CComPtr result = mOutputQueue.front(); mOutputQueue.pop(); // The Chromium CDM API doesn't have support for negative strides, though // they are theoretically possible in real world data. - if (result.mStride <= 0) { + if (mDecoder->GetStride() <= 0) { CK_LOGD("VideoDecoder::OutputFrame Failed! (negative stride)"); return cdm::Status::kDecodeError; } - const IntRect& picture = result.mPictureRegion; - hr = SampleToVideoFrame(result.mSample, picture.width, picture.height, - result.mStride, result.mFrameHeight, aVideoFrame); + const IntRect& picture = mDecoder->GetPictureRegion(); + hr = SampleToVideoFrame(result, picture.width, picture.height, + mDecoder->GetStride(), mDecoder->GetFrameHeight(), + aVideoFrame); if (FAILED(hr)) { CK_LOGD("VideoDecoder::OutputFrame Failed!"); return cdm::Status::kDecodeError; diff --git a/icecat/media/gmp-clearkey/0.1/VideoDecoder.h b/icecat/media/gmp-clearkey/0.1/VideoDecoder.h index fa485d6b3f..d9101ed9d0 100644 --- a/icecat/media/gmp-clearkey/0.1/VideoDecoder.h +++ b/icecat/media/gmp-clearkey/0.1/VideoDecoder.h @@ -64,13 +64,7 @@ class VideoDecoder : public RefCounted { cdm::Host_11* mHost; wmf::AutoPtr mDecoder; - struct OutputData { - wmf::CComPtr mSample; - wmf::IntRect mPictureRegion; - int32_t mStride; - int32_t mFrameHeight; - }; - std::queue mOutputQueue; + std::queue> mOutputQueue; bool mHasShutdown; }; diff --git a/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.cpp b/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.cpp index 3dab535a7d..8054b38c64 100644 --- a/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.cpp +++ b/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.cpp @@ -22,6 +22,13 @@ namespace wmf { +WMFH264Decoder::WMFH264Decoder() : mDecoder(nullptr) { + memset(&mInputStreamInfo, 0, sizeof(MFT_INPUT_STREAM_INFO)); + memset(&mOutputStreamInfo, 0, sizeof(MFT_OUTPUT_STREAM_INFO)); +} + +WMFH264Decoder::~WMFH264Decoder() {} + HRESULT WMFH264Decoder::Init(int32_t aCoreCount) { HRESULT hr; @@ -96,6 +103,14 @@ WMFH264Decoder::ConfigureVideoFrameGeometry(IMFMediaType* aMediaType) { return S_OK; } +int32_t WMFH264Decoder::GetFrameHeight() const { return mVideoHeight; } + +const IntRect& WMFH264Decoder::GetPictureRegion() const { + return mPictureRegion; +} + +int32_t WMFH264Decoder::GetStride() const { return mStride; } + HRESULT WMFH264Decoder::SetDecoderInputType() { HRESULT hr; @@ -248,10 +263,7 @@ WMFH264Decoder::GetOutputSample(IMFSample** aOutSample) { hr = SetDecoderOutputType(); ENSURE(SUCCEEDED(hr), hr); - hr = mDecoder->GetOutputStreamInfo(0, &mOutputStreamInfo); - ENSURE(SUCCEEDED(hr), hr); - - return MF_E_TRANSFORM_STREAM_CHANGE; + return GetOutputSample(aOutSample); } else if (hr == MF_E_TRANSFORM_NEED_MORE_INPUT) { return MF_E_TRANSFORM_NEED_MORE_INPUT; } @@ -288,21 +300,15 @@ HRESULT WMFH264Decoder::Output(IMFSample** aOutput) { HRESULT hr; CComPtr outputSample; - do { - hr = GetOutputSample(&outputSample); - } while (hr == MF_E_TRANSFORM_STREAM_CHANGE); - + hr = GetOutputSample(&outputSample); if (hr == MF_E_TRANSFORM_NEED_MORE_INPUT) { return MF_E_TRANSFORM_NEED_MORE_INPUT; } - - ENSURE(SUCCEEDED(hr), hr); - if (!outputSample) { - LOG("GetOutputSample returned success without sample\n"); - return E_UNEXPECTED; - } + // Treat other errors as fatal. + ENSURE(SUCCEEDED(hr) && outputSample, hr); *aOutput = outputSample.Detach(); + return S_OK; } diff --git a/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.h b/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.h index 00f39d5abe..3f74735e23 100644 --- a/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.h +++ b/icecat/media/gmp-clearkey/0.1/WMFH264Decoder.h @@ -23,8 +23,8 @@ namespace wmf { class WMFH264Decoder { public: - WMFH264Decoder() = default; - ~WMFH264Decoder() = default; + WMFH264Decoder(); + ~WMFH264Decoder(); HRESULT Init(int32_t aCoreCount); @@ -35,9 +35,9 @@ class WMFH264Decoder { HRESULT Reset(); - int32_t GetFrameHeight() const { return mVideoHeight; } - const IntRect& GetPictureRegion() const { return mPictureRegion; } - int32_t GetStride() const { return mStride; } + int32_t GetFrameHeight() const; + const IntRect& GetPictureRegion() const; + int32_t GetStride() const; HRESULT Drain(); @@ -54,15 +54,15 @@ class WMFH264Decoder { HRESULT GetOutputSample(IMFSample** aOutSample); HRESULT ConfigureVideoFrameGeometry(IMFMediaType* aMediaType); - MFT_INPUT_STREAM_INFO mInputStreamInfo{}; - MFT_OUTPUT_STREAM_INFO mOutputStreamInfo{}; + MFT_INPUT_STREAM_INFO mInputStreamInfo; + MFT_OUTPUT_STREAM_INFO mOutputStreamInfo; CComPtr mDecoder; - int32_t mVideoWidth = 0; - int32_t mVideoHeight = 0; + int32_t mVideoWidth; + int32_t mVideoHeight; IntRect mPictureRegion; - int32_t mStride = 0; + int32_t mStride; }; } // namespace wmf diff --git a/icecat/media/libcubeb/frame-sample.patch b/icecat/media/libcubeb/frame-sample.patch deleted file mode 100644 index df5109d162..0000000000 --- a/icecat/media/libcubeb/frame-sample.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/src/cubeb_resampler_internal.h b/src/cubeb_resampler_internal.h -index 08e019c610..dfc93f15b4 100644 ---- a/src/cubeb_resampler_internal.h -+++ b/src/cubeb_resampler_internal.h -@@ -211,9 +211,11 @@ - const size_t LATENCY_SAMPLES = 8192; - T input_buffer[LATENCY_SAMPLES] = {}; - T output_buffer[LATENCY_SAMPLES] = {}; -- uint32_t input_frame_count = input_latency; -- uint32_t output_frame_count = LATENCY_SAMPLES; -- assert(input_latency * channels <= LATENCY_SAMPLES); -+ const uint32_t latency_frames = -+ LATENCY_SAMPLES / std::max(channels, 1); -+ uint32_t input_frame_count = std::min(input_latency, latency_frames); -+ uint32_t output_frame_count = latency_frames; -+ assert(output_frame_count * channels <= LATENCY_SAMPLES); - speex_resample(input_buffer, &input_frame_count, output_buffer, - &output_frame_count); - } diff --git a/icecat/media/libcubeb/moz.yaml b/icecat/media/libcubeb/moz.yaml index 6ae95bf9cf..f0598afd55 100644 --- a/icecat/media/libcubeb/moz.yaml +++ b/icecat/media/libcubeb/moz.yaml @@ -22,7 +22,6 @@ vendoring: - 0003-audiounit-ios-compile-fixes.patch - 0004-disable-cubeb_one_duplex_one_input-macos10.15.patch - 0005-increase-aaudio-powersaving-buffering.patch - - frame-sample.patch skip-vendoring-steps: - update-moz-build exclude: diff --git a/icecat/media/libcubeb/src/cubeb_resampler_internal.h b/icecat/media/libcubeb/src/cubeb_resampler_internal.h index 1aa05c70fa..bb50ae0945 100644 --- a/icecat/media/libcubeb/src/cubeb_resampler_internal.h +++ b/icecat/media/libcubeb/src/cubeb_resampler_internal.h @@ -211,11 +211,9 @@ public: const size_t LATENCY_SAMPLES = 8192; T input_buffer[LATENCY_SAMPLES] = {}; T output_buffer[LATENCY_SAMPLES] = {}; - const uint32_t latency_frames = - LATENCY_SAMPLES / std::max(channels, 1); - uint32_t input_frame_count = std::min(input_latency, latency_frames); - uint32_t output_frame_count = latency_frames; - assert(output_frame_count * channels <= LATENCY_SAMPLES); + uint32_t input_frame_count = input_latency; + uint32_t output_frame_count = LATENCY_SAMPLES; + assert(input_latency * channels <= LATENCY_SAMPLES); speex_resample(input_buffer, &input_frame_count, output_buffer, &output_frame_count); } diff --git a/icecat/media/libpng/ANNOUNCE b/icecat/media/libpng/ANNOUNCE index 02969b03e2..603b2df48e 100644 --- a/icecat/media/libpng/ANNOUNCE +++ b/icecat/media/libpng/ANNOUNCE @@ -1,5 +1,5 @@ -libpng 1.6.58 - April 15, 2026 -============================== +libpng 1.6.47 - February 18, 2025 +================================= This is a public release of libpng, intended for use in production code. @@ -7,12 +7,15 @@ This is a public release of libpng, intended for use in production code. Files available for download ---------------------------- -Source files: +Source files with LF line endings (for Unix/Linux): - * libpng-1.6.58.tar.xz (LZMA-compressed, recommended) - * libpng-1.6.58.tar.gz (deflate-compressed) - * lpng1658.7z (LZMA-compressed) - * lpng1658.zip (deflate-compressed) + * libpng-1.6.47.tar.xz (LZMA-compressed, recommended) + * libpng-1.6.47.tar.gz (deflate-compressed) + +Source files with CRLF line endings (for Windows): + + * lpng1647.7z (LZMA-compressed, recommended) + * lpng1647.zip (deflate-compressed) Other information: @@ -22,16 +25,22 @@ Other information: * TRADEMARK.md -Changes from version 1.6.57 to version 1.6.58 +Changes from version 1.6.46 to version 1.6.47 --------------------------------------------- - * Fixed a regression introduced in version 1.6.56 that caused `png_get_PLTE` - to return stale palette data after applying gamma and background transforms - in-place. - (Reported by ralfjunker .) + * Modified the behaviour of colorspace chunks in order to adhere + to the new precedence rules formulated in the latest draft of + the PNG Specification. + (Contributed by John Bowler) + * Fixed a latent bug in `png_write_iCCP`. + This would have been a read-beyond-end-of-malloc vulnerability, + introduced early in the libpng-1.6.0 development, yet (fortunately!) + it was inaccessible before the above-mentioned modification of the + colorspace precedence rules, due to pre-existing colorspace checks. + (Reported by Bob Friesenhahn; fixed by John Bowler) Send comments/corrections/commendations to png-mng-implement at lists.sf.net. Subscription is required; visit - +https://lists.sourceforge.net/lists/listinfo/png-mng-implement to subscribe. diff --git a/icecat/media/libpng/AUTHORS b/icecat/media/libpng/AUTHORS index 6726fc6a7c..f30a4ee192 100644 --- a/icecat/media/libpng/AUTHORS +++ b/icecat/media/libpng/AUTHORS @@ -5,7 +5,6 @@ This is the list of PNG Reference Library ("libpng") Contributing Authors, for copyright and licensing purposes. * Adam Richter - * Alexander Smorkalov * Andreas Dilger * Chris Blume * Cosmin Truta @@ -15,43 +14,34 @@ Authors, for copyright and licensing purposes. * Glenn Randers-Pehrson * Greg Roelofs * Guy Eric Schalnat - * Halil Oktay * James Yu * John Bowler - * Joshua Inscoe * Kevin Bracey * Lucas Chollet * Magnus Holmgren * Mandar Sahastrabuddhe - * Manfred Schlaegl * Mans Rullgard * Matt Sarett * Mike Klein - * Mohammad Seet * Pascal Massimino * Paul Schmidt - * Petr Simecek * Philippe Antoine * Qiang Zhou * Sam Bushell * Samuel Williams * Simon-Pierre Cadieux - * Taegu Ha (하태구) * Tim Wegner - * Tobias Stoeckmann * Tom Lane * Tom Tanner * Vadim Barkov * Willem van Schaik - * Yuelin Wang (王跃林) * Zhijie Liang * Apple Inc. - Zixu Wang (王子旭) * Arm Holdings - Richard Townsend - * Google LLC + * Google Inc. - Dan Field - - Dragoș Tiselice - Leon Scroggins III - Matt Sarett - Mike Klein @@ -61,10 +51,6 @@ Authors, for copyright and licensing purposes. - GuXiWei (顾希伟) - JinBo (金波) - ZhangLixia (张利霞) - * Samsung Group - - Filip Wasil - * SpacemiT Hangzhou Technology, Co. - - Liang Junzhao (梁俊钊) The build projects, the build scripts, the test scripts, and other files in the "projects", "scripts" and "tests" directories, have diff --git a/icecat/media/libpng/CHANGES b/icecat/media/libpng/CHANGES index 208ca6eaf1..834b5e1927 100644 --- a/icecat/media/libpng/CHANGES +++ b/icecat/media/libpng/CHANGES @@ -5988,7 +5988,7 @@ Version 1.6.32rc01 [August 18, 2017] Version 1.6.32rc02 [August 22, 2017] Added contrib/oss-fuzz directory which contains files used by the oss-fuzz - project . + project (https://github.com/google/oss-fuzz/tree/master/projects/libpng). Version 1.6.32 [August 24, 2017] No changes. @@ -6251,142 +6251,7 @@ Version 1.6.47 [February 18, 2025] colorspace precedence rules, due to pre-existing colorspace checks. (Reported by Bob Friesenhahn; fixed by John Bowler) -Version 1.6.48 [April 30, 2025] - Fixed the floating-point version of the mDCv setter `png_set_mDCv`. - (Reported by Mohit Bakshi; fixed by John Bowler) - Added #error directives to discourage the inclusion of private - libpng implementation header files in PNG-supporting applications. - Added the CMake build option `PNG_LIBCONF_HEADER`, to be used as an - alternative to `DFA_XTRA`. - Removed the Travis CI configuration files, with heartfelt thanks for - their generous support of our project over the past five years! - -Version 1.6.49 [June 12, 2025] - Added SIMD-optimized code for the RISC-V Vector Extension (RVV). - (Contributed by Manfred Schlaegl, Dragos Tiselice and Filip Wasil) - Added various fixes and improvements to the build scripts and to - the sample code. - -Version 1.6.50 [July 1, 2025] - Improved the detection of the RVV Extension on the RISC-V platform. - (Contributed by Filip Wasil) - Replaced inline ASM with C intrinsics in the RVV code. - (Contributed by Filip Wasil) - Fixed a decoder defect in which unknown chunks trailing IDAT, set - to go through the unknown chunk handler, incorrectly triggered - out-of-place IEND errors. - (Contributed by John Bowler) - Fixed the CMake file for cross-platform builds that require `libm`. - -Version 1.6.51 [November 21, 2025] - Fixed CVE-2025-64505 (moderate severity): - Heap buffer overflow in `png_do_quantize` via malformed palette index. - (Reported by Samsung; analyzed by Fabio Gritti.) - Fixed CVE-2025-64506 (moderate severity): - Heap buffer over-read in `png_write_image_8bit` with 8-bit input and - `convert_to_8bit` enabled. - (Reported by Samsung and ; - analyzed by Fabio Gritti.) - Fixed CVE-2025-64720 (high severity): - Buffer overflow in `png_image_read_composite` via incorrect palette - premultiplication. - (Reported by Samsung; analyzed by John Bowler.) - Fixed CVE-2025-65018 (high severity): - Heap buffer overflow in `png_combine_row` triggered via - `png_image_finish_read`. - (Reported by .) - Fixed a memory leak in `png_set_quantize`. - (Reported by Samsung; analyzed by Fabio Gritti.) - Removed the experimental and incomplete ERROR_NUMBERS code. - (Contributed by Tobias Stoeckmann.) - Improved the RISC-V vector extension support; required RVV 1.0 or newer. - (Contributed by Filip Wasil.) - Added GitHub Actions workflows for automated testing. - Performed various refactorings and cleanups. - -Version 1.6.52 [December 3, 2025] - Fixed CVE-2025-66293 (high severity): - Out-of-bounds read in `png_image_read_composite`. - (Reported by flyfish101 .) - Fixed the Paeth filter handling in the RISC-V RVV implementation. - (Reported by Filip Wasil; fixed by Liang Junzhao.) - Improved the performance of the RISC-V RVV implementation. - (Contributed by Liang Junzhao.) - Added allocation failure fuzzing to oss-fuzz. - (Contributed by Philippe Antoine.) - -Version 1.6.53 [December 5, 2025] - Fixed a build failure on RISC-V RVV caused by a misspelled intrinsic. - (Contributed by Alexander Smorkalov.) - Fixed a build failure with CMake 4.1 or newer, on Windows, when using - Visual C++ without MASM installed. - -Version 1.6.54 [January 12, 2026] - Fixed CVE-2026-22695 (medium severity): - Heap buffer over-read in `png_image_read_direct_scaled`. - (Reported and fixed by Petr Simecek.) - Fixed CVE-2026-22801 (medium severity): - Integer truncation causing heap buffer over-read in `png_image_write_*`. - Implemented various improvements in oss-fuzz. - (Contributed by Philippe Antoine.) - -Version 1.6.55 [February 9, 2026] - Fixed CVE-2026-25646 (high severity): - Heap buffer overflow in `png_set_quantize`. - (Reported and fixed by Joshua Inscoe.) - Resolved an oss-fuzz build issue involving nalloc. - (Contributed by Philippe Antoine.) - -Version 1.6.56 [March 25, 2026] - Fixed CVE-2026-33416 (high severity): - Use-after-free via pointer aliasing in `png_set_tRNS` and `png_set_PLTE`. - (Reported by Halil Oktay and Ryo Shimada; - fixed by Halil Oktay and Cosmin Truta.) - Fixed CVE-2026-33636 (high severity): - Out-of-bounds read/write in the palette expansion on ARM Neon. - (Reported by Taegu Ha; fixed by Taegu Ha and Cosmin Truta.) - Fixed uninitialized reads beyond `num_trans` in `trans_alpha` buffers. - (Contributed by Halil Oktay.) - Fixed stale `info_ptr->palette` after in-place gamma and background - transforms. - Fixed wrong channel indices in `png_image_read_and_map` RGB_ALPHA path. - (Contributed by Yuelin Wang.) - Fixed wrong background color in colormap read. - (Contributed by Yuelin Wang.) - Fixed dead loop in sPLT write. - (Contributed by Yuelin Wang.) - Added missing null pointer checks in four public API functions. - (Contributed by Yuelin Wang.) - Validated shift bit depths in `png_set_shift` to prevent infinite loop. - (Contributed by Yuelin Wang.) - Avoided undefined behavior in library and tests. - Deprecated the hardly-ever-tested POINTER_INDEXING config option. - Added negative-stride test coverage for the simplified API. - Fixed memory leaks and API misuse in oss-fuzz. - (Contributed by Owen Sanzas.) - Implemented various fixes and improvements in oss-fuzz. - (Contributed by Bob Friesenhahn and Philippe Antoine.) - Performed various refactorings and cleanups. - -Version 1.6.57 [April 8, 2026] - Fixed CVE-2026-34757 (medium severity): - Use-after-free in `png_set_PLTE`, `png_set_tRNS` and `png_set_hIST` - leading to corrupted chunk data and potential heap information disclosure. - Also hardened the append-style setters (`png_set_text`, `png_set_sPLT`, - `png_set_unknown_chunks`) against a theoretical variant of the same - aliasing pattern. - (Reported by Iv4n .) - Fixed integer overflow in rowbytes computation in read transforms. - (Contributed by Mohammad Seet.) - -Version 1.6.58 [April 15, 2026] - Fixed a regression introduced in version 1.6.56 that caused `png_get_PLTE` - to return stale palette data after applying gamma and background transforms - in-place. - (Reported by ralfjunker .) - - Send comments/corrections/commendations to png-mng-implement at lists.sf.net. Subscription is required; visit - +https://lists.sourceforge.net/lists/listinfo/png-mng-implement to subscribe. diff --git a/icecat/media/libpng/LICENSE b/icecat/media/libpng/LICENSE index 1b765ae9f9..ea6df986cb 100644 --- a/icecat/media/libpng/LICENSE +++ b/icecat/media/libpng/LICENSE @@ -4,8 +4,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE PNG Reference Library License version 2 --------------------------------------- - * Copyright (c) 1995-2026 The PNG Reference Library Authors. - * Copyright (c) 2018-2026 Cosmin Truta. + * Copyright (c) 1995-2025 The PNG Reference Library Authors. + * Copyright (c) 2018-2025 Cosmin Truta. * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. * Copyright (c) 1996-1997 Andreas Dilger. * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. diff --git a/icecat/media/libpng/README b/icecat/media/libpng/README index 75a92ab723..57952fb215 100644 --- a/icecat/media/libpng/README +++ b/icecat/media/libpng/README @@ -1,4 +1,4 @@ -README for libpng version 1.6.58 +README for libpng version 1.6.47 ================================ See the note about version numbers near the top of `png.h`. @@ -24,14 +24,14 @@ for more things than just PNG files. You can use zlib as a drop-in replacement for `fread()` and `fwrite()`, if you are so inclined. zlib should be available at the same place that libpng is, or at -. +https://zlib.net . You may also want a copy of the PNG specification. It is available as an RFC, a W3C Recommendation, and an ISO/IEC Standard. You can find -these at . +these at http://www.libpng.org/pub/png/pngdocs.html . -This code is currently being archived at -in the download area, and at . +This code is currently being archived at https://libpng.sourceforge.io +in the download area, and at http://libpng.download/src . This release, based in a large way on Glenn's, Guy's and Andreas' earlier work, was created and will be supported by myself and the PNG @@ -39,12 +39,12 @@ development group. Send comments, corrections and commendations to `png-mng-implement` at `lists.sourceforge.net`. (Subscription is required; visit - +https://lists.sourceforge.net/lists/listinfo/png-mng-implement to subscribe.) Send general questions about the PNG specification to `png-mng-misc` at `lists.sourceforge.net`. (Subscription is required; visit - +https://lists.sourceforge.net/lists/listinfo/png-mng-misc to subscribe.) Historical notes @@ -147,7 +147,6 @@ Files included in this distribution loongarch/ => Optimized code for LoongArch LSX mips/ => Optimized code for MIPS MSA and MIPS MMI powerpc/ => Optimized code for PowerPC VSX - riscv/ => Optimized code for the RISC-V platform ci/ => Scripts for continuous integration contrib/ => External contributions arm-neon/ => Optimized code for the ARM-NEON platform @@ -163,7 +162,6 @@ Files included in this distribution programs demonstrating the use of pngusr.dfa pngminus/ => Simple pnm2png and png2pnm programs pngsuite/ => Test images - riscv-rvv/ => Optimized code for the RISC-V Vector platform testpngs/ => Test images tools/ => Various tools visupng/ => VisualPng, a Windows viewer for PNG images diff --git a/icecat/media/libpng/apng.patch b/icecat/media/libpng/apng.patch index 10fc018485..6c765d8c6e 100644 --- a/icecat/media/libpng/apng.patch +++ b/icecat/media/libpng/apng.patch @@ -30,18 +30,18 @@ diff --git a/png.h b/png.h /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -@@ -801,6 +816,10 @@ typedef PNG_CALLBACK(void, *png_progress - (png_structp, png_infop)); - typedef PNG_CALLBACK(void, *png_progressive_end_ptr, - (png_structp, png_infop)); +@@ -796,6 +811,10 @@ typedef PNG_CALLBACK(void, *png_write_st + #ifdef PNG_PROGRESSIVE_READ_SUPPORTED + typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); + typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); +#ifdef PNG_APNG_SUPPORTED -+typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, -+ (png_structp, png_uint_32)); ++typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, (png_structp, ++ png_uint_32)); +#endif /* The following callback receives png_uint_32 row_number, int pass for the * png_bytep data of the row. When transforming an interlaced image the -@@ -3506,6 +3525,75 @@ PNG_EXPORT(244, int, png_set_option, (pn +@@ -3338,6 +3357,75 @@ PNG_EXPORT(244, int, png_set_option, (pn * END OF HARDWARE AND SOFTWARE OPTIONS ******************************************************************************/ @@ -117,14 +117,14 @@ diff --git a/png.h b/png.h /* Maintainer: Put new public prototypes here ^, in libpng.3, in project * defs, and in scripts/symbols.def. */ -@@ -3514,7 +3602,11 @@ PNG_EXPORT(244, int, png_set_option, (pn +@@ -3346,7 +3434,11 @@ PNG_EXPORT(244, int, png_set_option, (pn * one to use is one more than this.) */ #ifdef PNG_EXPORT_LAST_ORDINAL +#ifdef PNG_APNG_SUPPORTED + PNG_EXPORT_LAST_ORDINAL(279); +#else - PNG_EXPORT_LAST_ORDINAL(259); + PNG_EXPORT_LAST_ORDINAL(259); +#endif /* APNG */ #endif @@ -302,7 +302,7 @@ diff --git a/pngget.c b/pngget.c diff --git a/pnginfo.h b/pnginfo.h --- a/pnginfo.h +++ b/pnginfo.h -@@ -259,5 +259,18 @@ defined(PNG_READ_BACKGROUND_SUPPORTED) +@@ -282,5 +282,18 @@ defined(PNG_READ_BACKGROUND_SUPPORTED) #ifdef PNG_sRGB_SUPPORTED int rendering_intent; #endif diff --git a/icecat/media/libpng/arm/arm_init.c b/icecat/media/libpng/arm/arm_init.c index 4102ec4b76..9088a901c5 100644 --- a/icecat/media/libpng/arm/arm_init.c +++ b/icecat/media/libpng/arm/arm_init.c @@ -35,14 +35,14 @@ #ifndef PNG_ARM_NEON_FILE # if defined(__aarch64__) || defined(_M_ARM64) /* ARM Neon is expected to be unconditionally available on ARM64. */ -# error PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on ARM64 +# error "PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on ARM64" # elif defined(__ARM_NEON__) || defined(__ARM_NEON) /* ARM Neon is expected to be available on the target CPU architecture. */ -# error PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on this CPU arch +# error "PNG_ARM_NEON_CHECK_SUPPORTED must not be defined on this CPU arch" # elif defined(__linux__) # define PNG_ARM_NEON_FILE "linux.c" # else -# error No support for run-time ARM Neon checking; use compile-time options +# error "No support for run-time ARM Neon checking; use compile-time options" # endif #endif @@ -53,7 +53,7 @@ static int png_have_neon(png_structp png_ptr); #endif /* PNG_ARM_NEON_CHECK_SUPPORTED */ #ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error ALIGNED_MEMORY is required; please define PNG_ALIGNED_MEMORY_SUPPORTED +# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" #endif void diff --git a/icecat/media/libpng/arm/filter_neon_intrinsics.c b/icecat/media/libpng/arm/filter_neon_intrinsics.c index 6c3f1184a8..7c3e0da4d8 100644 --- a/icecat/media/libpng/arm/filter_neon_intrinsics.c +++ b/icecat/media/libpng/arm/filter_neon_intrinsics.c @@ -48,7 +48,7 @@ void png_read_filter_row_up_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { png_bytep rp = row; png_bytep rp_stop = row + row_info->rowbytes; @@ -69,7 +69,7 @@ png_read_filter_row_up_neon(png_row_infop row_info, png_bytep row, void png_read_filter_row_sub3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { png_bytep rp = row; png_bytep rp_stop = row + row_info->rowbytes; @@ -116,7 +116,7 @@ png_read_filter_row_sub3_neon(png_row_infop row_info, png_bytep row, void png_read_filter_row_sub4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { png_bytep rp = row; png_bytep rp_stop = row + row_info->rowbytes; @@ -148,7 +148,7 @@ png_read_filter_row_sub4_neon(png_row_infop row_info, png_bytep row, void png_read_filter_row_avg3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { png_bytep rp = row; png_const_bytep pp = prev_row; @@ -216,7 +216,7 @@ png_read_filter_row_avg3_neon(png_row_infop row_info, png_bytep row, void png_read_filter_row_avg4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { png_bytep rp = row; png_bytep rp_stop = row + row_info->rowbytes; @@ -285,7 +285,7 @@ paeth(uint8x8_t a, uint8x8_t b, uint8x8_t c) void png_read_filter_row_paeth3_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { png_bytep rp = row; png_const_bytep pp = prev_row; @@ -353,7 +353,7 @@ png_read_filter_row_paeth3_neon(png_row_infop row_info, png_bytep row, void png_read_filter_row_paeth4_neon(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { png_bytep rp = row; png_bytep rp_stop = row + row_info->rowbytes; diff --git a/icecat/media/libpng/arm/palette_neon_intrinsics.c b/icecat/media/libpng/arm/palette_neon_intrinsics.c index 0967ea1aeb..3068e9b6e6 100644 --- a/icecat/media/libpng/arm/palette_neon_intrinsics.c +++ b/icecat/media/libpng/arm/palette_neon_intrinsics.c @@ -1,6 +1,6 @@ /* palette_neon_intrinsics.c - NEON optimised palette expansion functions * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2019 Cosmin Truta * Copyright (c) 2017-2018 Arm Holdings. All rights reserved. * Written by Richard Townsend , February 2017. * @@ -48,12 +48,12 @@ png_riffle_palette_neon(png_structrp png_ptr) w.val[0] = v.val[0]; w.val[1] = v.val[1]; w.val[2] = v.val[2]; - vst4q_u8(riffled_palette + i * 4, w); + vst4q_u8(riffled_palette + (i << 2), w); } /* Fix up the missing transparency values. */ for (i = 0; i < num_trans; i++) - riffled_palette[i * 4 + 3] = trans_alpha[i]; + riffled_palette[(i << 2) + 3] = trans_alpha[i]; } /* Expands a palettized row into RGBA8. */ @@ -77,26 +77,27 @@ png_do_expand_palette_rgba8_neon(png_structrp png_ptr, png_row_infop row_info, * The NEON part writes forward from a given position, so we have * to seek this back by 4 pixels x 4 bytes. */ - *ddp = *ddp - (pixels_per_chunk * 4 - 1); + *ddp = *ddp - ((pixels_per_chunk * sizeof(png_uint_32)) - 1); - for (i = 0; i + pixels_per_chunk <= row_width; i += pixels_per_chunk) + for (i = 0; i < row_width; i += pixels_per_chunk) { uint32x4_t cur; - png_bytep sp = *ssp - i, dp = *ddp - i * 4; + png_bytep sp = *ssp - i, dp = *ddp - (i << 2); cur = vld1q_dup_u32 (riffled_palette + *(sp - 3)); cur = vld1q_lane_u32(riffled_palette + *(sp - 2), cur, 1); cur = vld1q_lane_u32(riffled_palette + *(sp - 1), cur, 2); cur = vld1q_lane_u32(riffled_palette + *(sp - 0), cur, 3); vst1q_u32((void *)dp, cur); } + if (i != row_width) + { + /* Remove the amount that wasn't processed. */ + i -= pixels_per_chunk; + } - /* Undo the pre-adjustment of *ddp before the pointer handoff, - * so the scalar fallback in pngrtran.c receives a dp that points - * to the correct position. - */ - *ddp = *ddp + (pixels_per_chunk * 4 - 1); + /* Decrement output pointers. */ *ssp = *ssp - i; - *ddp = *ddp - i * 4; + *ddp = *ddp - (i << 2); return i; } @@ -117,30 +118,32 @@ png_do_expand_palette_rgb8_neon(png_structrp png_ptr, png_row_infop row_info, return 0; /* Seeking this back by 8 pixels x 3 bytes. */ - *ddp = *ddp - (pixels_per_chunk * 3 - 1); + *ddp = *ddp - ((pixels_per_chunk * sizeof(png_color)) - 1); - for (i = 0; i + pixels_per_chunk <= row_width; i += pixels_per_chunk) + for (i = 0; i < row_width; i += pixels_per_chunk) { uint8x8x3_t cur; - png_bytep sp = *ssp - i, dp = *ddp - i * 3; - cur = vld3_dup_u8(palette + *(sp - 7) * 3); - cur = vld3_lane_u8(palette + *(sp - 6) * 3, cur, 1); - cur = vld3_lane_u8(palette + *(sp - 5) * 3, cur, 2); - cur = vld3_lane_u8(palette + *(sp - 4) * 3, cur, 3); - cur = vld3_lane_u8(palette + *(sp - 3) * 3, cur, 4); - cur = vld3_lane_u8(palette + *(sp - 2) * 3, cur, 5); - cur = vld3_lane_u8(palette + *(sp - 1) * 3, cur, 6); - cur = vld3_lane_u8(palette + *(sp - 0) * 3, cur, 7); + png_bytep sp = *ssp - i, dp = *ddp - ((i << 1) + i); + cur = vld3_dup_u8(palette + sizeof(png_color) * (*(sp - 7))); + cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 6)), cur, 1); + cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 5)), cur, 2); + cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 4)), cur, 3); + cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 3)), cur, 4); + cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 2)), cur, 5); + cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 1)), cur, 6); + cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 0)), cur, 7); vst3_u8((void *)dp, cur); } - /* Undo the pre-adjustment of *ddp before the pointer handoff, - * so the scalar fallback in pngrtran.c receives a dp that points - * to the correct position. - */ - *ddp = *ddp + (pixels_per_chunk * 3 - 1); + if (i != row_width) + { + /* Remove the amount that wasn't processed. */ + i -= pixels_per_chunk; + } + + /* Decrement output pointers. */ *ssp = *ssp - i; - *ddp = *ddp - i * 3; + *ddp = *ddp - ((i << 1) + i); return i; } diff --git a/icecat/media/libpng/intel/filter_sse2_intrinsics.c b/icecat/media/libpng/intel/filter_sse2_intrinsics.c index 0f3c97a52c..2993f650b7 100644 --- a/icecat/media/libpng/intel/filter_sse2_intrinsics.c +++ b/icecat/media/libpng/intel/filter_sse2_intrinsics.c @@ -26,39 +26,30 @@ * whichever of a, b, or c is closest to p=a+b-c. */ -static __m128i -load4(const void *p) -{ +static __m128i load4(const void* p) { int tmp; memcpy(&tmp, p, sizeof(tmp)); return _mm_cvtsi32_si128(tmp); } -static void -store4(void *p, __m128i v) -{ +static void store4(void* p, __m128i v) { int tmp = _mm_cvtsi128_si32(v); memcpy(p, &tmp, sizeof(int)); } -static __m128i -load3(const void *p) -{ +static __m128i load3(const void* p) { png_uint_32 tmp = 0; memcpy(&tmp, p, 3); return _mm_cvtsi32_si128(tmp); } -static void -store3(void *p, __m128i v) -{ +static void store3(void* p, __m128i v) { int tmp = _mm_cvtsi128_si32(v); memcpy(p, &tmp, 3); } -void -png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) +void png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, + png_const_bytep prev) { /* The Sub filter predicts each pixel as the previous pixel, a. * There is no pixel to the left of the first pixel. It's encoded directly. @@ -90,9 +81,8 @@ png_read_filter_row_sub3_sse2(png_row_infop row_info, png_bytep row, PNG_UNUSED(prev) } -void -png_read_filter_row_sub4_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) +void png_read_filter_row_sub4_sse2(png_row_infop row_info, png_bytep row, + png_const_bytep prev) { /* The Sub filter predicts each pixel as the previous pixel, a. * There is no pixel to the left of the first pixel. It's encoded directly. @@ -116,9 +106,8 @@ png_read_filter_row_sub4_sse2(png_row_infop row_info, png_bytep row, PNG_UNUSED(prev) } -void -png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) +void png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, + png_const_bytep prev) { /* The Avg filter predicts each pixel as the (truncated) average of a and b. * There's no pixel to the left of the first pixel. Luckily, it's @@ -130,7 +119,7 @@ png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, const __m128i zero = _mm_setzero_si128(); - __m128i b; + __m128i b; __m128i a, d = zero; png_debug(1, "in png_read_filter_row_avg3_sse2"); @@ -172,9 +161,8 @@ png_read_filter_row_avg3_sse2(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_avg4_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) +void png_read_filter_row_avg4_sse2(png_row_infop row_info, png_bytep row, + png_const_bytep prev) { /* The Avg filter predicts each pixel as the (truncated) average of a and b. * There's no pixel to the left of the first pixel. Luckily, it's @@ -183,7 +171,7 @@ png_read_filter_row_avg4_sse2(png_row_infop row_info, png_bytep row, */ size_t rb; const __m128i zero = _mm_setzero_si128(); - __m128i b; + __m128i b; __m128i a, d = zero; png_debug(1, "in png_read_filter_row_avg4_sse2"); @@ -210,9 +198,7 @@ png_read_filter_row_avg4_sse2(png_row_infop row_info, png_bytep row, } /* Returns |x| for 16-bit lanes. */ -static __m128i -abs_i16(__m128i x) -{ +static __m128i abs_i16(__m128i x) { #if PNG_INTEL_SSE_IMPLEMENTATION >= 2 return _mm_abs_epi16(x); #else @@ -231,9 +217,7 @@ abs_i16(__m128i x) } /* Bytewise c ? t : e. */ -static __m128i -if_then_else(__m128i c, __m128i t, __m128i e) -{ +static __m128i if_then_else(__m128i c, __m128i t, __m128i e) { #if PNG_INTEL_SSE_IMPLEMENTATION >= 3 return _mm_blendv_epi8(e,t,c); #else @@ -241,9 +225,8 @@ if_then_else(__m128i c, __m128i t, __m128i e) #endif } -void -png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) +void png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row, + png_const_bytep prev) { /* Paeth tries to predict pixel d using the pixel to the left of it, a, * and two pixels from the previous row, b and c: @@ -341,9 +324,8 @@ png_read_filter_row_paeth3_sse2(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_paeth4_sse2(png_row_infop row_info, png_bytep row, - png_const_bytep prev) +void png_read_filter_row_paeth4_sse2(png_row_infop row_info, png_bytep row, + png_const_bytep prev) { /* Paeth tries to predict pixel d using the pixel to the left of it, a, * and two pixels from the previous row, b and c: diff --git a/icecat/media/libpng/libpng-manual.txt b/icecat/media/libpng/libpng-manual.txt index 4413ce9901..862fe2c5d0 100644 --- a/icecat/media/libpng/libpng-manual.txt +++ b/icecat/media/libpng/libpng-manual.txt @@ -1,6 +1,6 @@ libpng-manual.txt - A description on how to use and modify libpng - Copyright (c) 2018-2026 Cosmin Truta + Copyright (c) 2018-2025 Cosmin Truta Copyright (c) 1998-2018 Glenn Randers-Pehrson This document is released under the libpng license. @@ -9,9 +9,9 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng version 1.6.36, December 2018, through 1.6.58 - April 2026 + libpng version 1.6.36, December 2018, through 1.6.47 - February 2025 Updated and distributed by Cosmin Truta - Copyright (c) 2018-2026 Cosmin Truta + Copyright (c) 2018-2025 Cosmin Truta libpng versions 0.97, January 1998, through 1.6.35 - July 2018 Updated and distributed by Glenn Randers-Pehrson @@ -65,22 +65,18 @@ Libpng was written as a companion to the PNG specification, as a way of reducing the amount of time and effort it takes to support the PNG file format in application programs. -The PNG specification (Third Edition), June 2025, is available as -a W3C Recommendation at -. - -The PNG specification (Second Edition), November 2003, is available as +The PNG specification (second edition), November 2003, is available as a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2004 (E)) at . The W3C and ISO documents have identical technical content. The PNG-1.2 specification is available at -. -It is technically equivalent to the PNG specification (Second Edition) -but has some additional material. +. +It is technically equivalent +to the PNG specification (second edition) but has some additional material. The PNG-1.0 specification is available as RFC 2083 at - and as a + and as a W3C Recommendation at . Some additional chunks are described in the special-purpose public chunks @@ -2318,7 +2314,7 @@ libpng provides two macros to help you in 1.5 and later versions: png_uint_32 height = PNG_PASS_ROWS(image_height, pass_number); Respectively these tell you the width and height of the sub-image -corresponding to the numbered pass. 'pass' is in the range 0 to 6 - +corresponding to the numbered pass. 'pass' is in in the range 0 to 6 - this can be confusing because the specification refers to the same passes as 1 to 7! Be careful, you must check both the width and height before calling png_read_rows() and not call it for that pass if either is zero. @@ -2457,7 +2453,7 @@ point to libpng-allocated storage with the following function: This function may be safely called when the relevant storage has already been freed, or has not yet been allocated, or was allocated -by the user and not by libpng, and will in those cases do nothing. +by the user and not by libpng, and will in those cases do nothing. The "seq" parameter is ignored if only one item of the selected data type, such as PLTE, is allowed. If "seq" is not -1, and multiple items are allowed for the data type identified in the mask, such as text or @@ -3292,7 +3288,7 @@ disclaimer until after, so viewers working over modem connections don't have to wait for the disclaimer to go over the modem before they start seeing the image. Finally, keywords should be full words, not abbreviations. Keywords and text are in the ISO 8859-1 -(Latin-1) character set (a superset of regular ASCII) and cannot +(Latin-1) character set (a superset of regular ASCII) and can not contain NUL characters, and should not contain control or other unprintable characters. To make the comments widely readable, stick with basic ASCII, and avoid machine specific character set extensions @@ -3355,6 +3351,19 @@ Here is an example of writing two private chunks, prVt and miNE: /* Needed because miNE is not safe-to-copy */ png_set_keep_unknown_chunks(png, PNG_HANDLE_CHUNK_ALWAYS, (png_bytep) "miNE", 1); + # if PNG_LIBPNG_VER < 10600 + /* Deal with unknown chunk location bug in 1.5.x and earlier */ + png_set_unknown_chunk_location(png, info, 0, PNG_HAVE_IHDR); + png_set_unknown_chunk_location(png, info, 1, PNG_AFTER_IDAT); + # endif + # if PNG_LIBPNG_VER < 10500 + /* PNG_AFTER_IDAT writes two copies of the chunk prior to libpng-1.5.0, + * one before IDAT and another after IDAT, so don't use it; only use + * PNG_HAVE_IHDR location. This call resets the location previously + * set by assignment and png_set_unknown_chunk_location() for chunk 1. + */ + png_set_unknown_chunk_location(png, info, 1, PNG_HAVE_IHDR); + # endif #endif The high-level write interface @@ -3694,7 +3703,7 @@ point to libpng-allocated storage with the following function: This function may be safely called when the relevant storage has already been freed, or has not yet been allocated, or was allocated -by the user and not by libpng, and will in those cases do nothing. +by the user and not by libpng, and will in those cases do nothing. The "seq" parameter is ignored if only one item of the selected data type, such as PLTE, is allowed. If "seq" is not -1, and multiple items are allowed for the data type identified in the mask, such as text or @@ -4080,7 +4089,7 @@ READ APIs is filled in from the PNG header in the file. int png_image_begin_read_from_stdio (png_imagep image, - FILE *file) + FILE* file) The PNG header is read from the stdio FILE object. @@ -4155,7 +4164,7 @@ be written: int convert_to_8_bit, const void *buffer, png_int_32 row_stride, const void *colormap) - Write the image to the given FILE object. + Write the image to the given (FILE*). With all write APIs if image is in one of the linear formats with (png_uint_16) data then setting convert_to_8_bit will cause the output to be diff --git a/icecat/media/libpng/loongarch/filter_lsx_intrinsics.c b/icecat/media/libpng/loongarch/filter_lsx_intrinsics.c index 8dc5319d56..af6cc763a0 100644 --- a/icecat/media/libpng/loongarch/filter_lsx_intrinsics.c +++ b/icecat/media/libpng/loongarch/filter_lsx_intrinsics.c @@ -102,9 +102,8 @@ out0 = __lsx_vadd_b(out0, _in3); \ } -void -png_read_filter_row_up_lsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_up_lsx(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t n = row_info->rowbytes; png_bytep rp = row; @@ -166,9 +165,8 @@ png_read_filter_row_up_lsx(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_sub3_lsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_sub3_lsx(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t n = row_info->rowbytes; png_uint_32 tmp; @@ -201,9 +199,8 @@ png_read_filter_row_sub3_lsx(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_sub4_lsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_sub4_lsx(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t n = row_info->rowbytes; __m128i vec_0, vec_1; @@ -225,9 +222,8 @@ png_read_filter_row_sub4_lsx(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_avg3_lsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_avg3_lsx(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t n = row_info->rowbytes; png_bytep nxt = row; @@ -279,9 +275,8 @@ png_read_filter_row_avg3_lsx(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_avg4_lsx(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_avg4_lsx(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t n = row_info->rowbytes; __m128i vec_0, vec_1, vec_2; @@ -311,9 +306,9 @@ png_read_filter_row_avg4_lsx(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_paeth3_lsx(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row) +void png_read_filter_row_paeth3_lsx(png_row_infop row_info, + png_bytep row, + png_const_bytep prev_row) { size_t n = row_info->rowbytes; png_bytep nxt = row; @@ -376,9 +371,9 @@ png_read_filter_row_paeth3_lsx(png_row_infop row_info, } } -void -png_read_filter_row_paeth4_lsx(png_row_infop row_info, - png_bytep row, png_const_bytep prev_row) +void png_read_filter_row_paeth4_lsx(png_row_infop row_info, + png_bytep row, + png_const_bytep prev_row) { size_t n = row_info->rowbytes; __m128i vec_a, vec_b, vec_c, vec_d; diff --git a/icecat/media/libpng/loongarch/loongarch_lsx_init.c b/icecat/media/libpng/loongarch/loongarch_lsx_init.c index 7dde245519..2c80fe81b6 100644 --- a/icecat/media/libpng/loongarch/loongarch_lsx_init.c +++ b/icecat/media/libpng/loongarch/loongarch_lsx_init.c @@ -17,8 +17,7 @@ #include #define LA_HWCAP_LSX (1<<4) -static int -png_has_lsx(void) +static int png_has_lsx(void) { int flags = 0; int flag = (int)getauxval(AT_HWCAP); diff --git a/icecat/media/libpng/mips/filter_mmi_inline_assembly.c b/icecat/media/libpng/mips/filter_mmi_inline_assembly.c index 48768eec82..b330a46538 100644 --- a/icecat/media/libpng/mips/filter_mmi_inline_assembly.c +++ b/icecat/media/libpng/mips/filter_mmi_inline_assembly.c @@ -23,7 +23,7 @@ */ void png_read_filter_row_up_mmi(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) + png_const_bytep prev_row) { int istop = row_info->rowbytes; double rp,pp; @@ -46,7 +46,7 @@ void png_read_filter_row_up_mmi(png_row_infop row_info, png_bytep row, } void png_read_filter_row_sub3_mmi(png_row_infop row_info, png_bytep row, - png_const_bytep prev) + png_const_bytep prev) { int istop = row_info->rowbytes; double rp, pp, dest; @@ -105,7 +105,7 @@ void png_read_filter_row_sub3_mmi(png_row_infop row_info, png_bytep row, } void png_read_filter_row_sub4_mmi(png_row_infop row_info, png_bytep row, - png_const_bytep prev) + png_const_bytep prev) { /* The Sub filter predicts each pixel as the previous pixel, a. * There is no pixel to the left of the first pixel. It's encoded directly. @@ -133,7 +133,7 @@ void png_read_filter_row_sub4_mmi(png_row_infop row_info, png_bytep row, } void png_read_filter_row_avg3_mmi(png_row_infop row_info, png_bytep row, - png_const_bytep prev) + png_const_bytep prev) { int istop = row_info->rowbytes; double rp, pp, rp1, pp1; @@ -225,7 +225,7 @@ void png_read_filter_row_avg3_mmi(png_row_infop row_info, png_bytep row, } void png_read_filter_row_avg4_mmi(png_row_infop row_info, png_bytep row, - png_const_bytep prev) + png_const_bytep prev) { int istop = row_info->rowbytes; double rp,pp; @@ -261,7 +261,7 @@ void png_read_filter_row_avg4_mmi(png_row_infop row_info, png_bytep row, } void png_read_filter_row_paeth3_mmi(png_row_infop row_info, png_bytep row, - png_const_bytep prev) + png_const_bytep prev) { /* Paeth tries to predict pixel d using the pixel to the left of it, a, * and two pixels from the previous row, b and c: @@ -449,7 +449,7 @@ void png_read_filter_row_paeth3_mmi(png_row_infop row_info, png_bytep row, } void png_read_filter_row_paeth4_mmi(png_row_infop row_info, png_bytep row, - png_const_bytep prev) + png_const_bytep prev) { /* Paeth tries to predict pixel d using the pixel to the left of it, a, * and two pixels from the previous row, b and c: diff --git a/icecat/media/libpng/mips/filter_msa_intrinsics.c b/icecat/media/libpng/mips/filter_msa_intrinsics.c index 074e9899cd..a294f55130 100644 --- a/icecat/media/libpng/mips/filter_msa_intrinsics.c +++ b/icecat/media/libpng/mips/filter_msa_intrinsics.c @@ -363,9 +363,8 @@ out0 += inp4; \ } -void -png_read_filter_row_up_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_up_msa(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t i, cnt, cnt16, cnt32; size_t istop = row_info->rowbytes; @@ -455,9 +454,8 @@ png_read_filter_row_up_msa(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_sub4_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_sub4_msa(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t count; size_t istop = row_info->rowbytes; @@ -495,9 +493,8 @@ png_read_filter_row_sub4_msa(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_sub3_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_sub3_msa(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t count; size_t istop = row_info->rowbytes; @@ -541,9 +538,8 @@ png_read_filter_row_sub3_msa(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_avg4_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_avg4_msa(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t i; png_bytep src = row; @@ -593,9 +589,8 @@ png_read_filter_row_avg4_msa(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_avg3_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_avg3_msa(png_row_infop row_info, png_bytep row, + png_const_bytep prev_row) { size_t i; png_bytep src = row; @@ -655,9 +650,9 @@ png_read_filter_row_avg3_msa(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_paeth4_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_paeth4_msa(png_row_infop row_info, + png_bytep row, + png_const_bytep prev_row) { int32_t count, rp_end; png_bytep nxt; @@ -726,9 +721,9 @@ png_read_filter_row_paeth4_msa(png_row_infop row_info, png_bytep row, } } -void -png_read_filter_row_paeth3_msa(png_row_infop row_info, png_bytep row, - png_const_bytep prev_row) +void png_read_filter_row_paeth3_msa(png_row_infop row_info, + png_bytep row, + png_const_bytep prev_row) { int32_t count, rp_end; png_bytep nxt; diff --git a/icecat/media/libpng/mips/mips_init.c b/icecat/media/libpng/mips/mips_init.c index 5f9346f9e3..143f0a3714 100644 --- a/icecat/media/libpng/mips/mips_init.c +++ b/icecat/media/libpng/mips/mips_init.c @@ -48,7 +48,7 @@ static int png_have_msa(png_structp png_ptr); #include PNG_MIPS_MSA_FILE #else /* PNG_MIPS_MSA_FILE */ -# error PNG_MIPS_MSA_FILE undefined: no support for run-time MIPS MSA checks +# error "PNG_MIPS_MSA_FILE undefined: no support for run-time MIPS MSA checks" #endif /* PNG_MIPS_MSA_FILE */ #endif /* PNG_MIPS_MSA_CHECK_SUPPORTED */ @@ -66,12 +66,12 @@ static int png_have_mmi(); #include PNG_MIPS_MMI_FILE #else /* PNG_MIPS_MMI_FILE */ -# error PNG_MIPS_MMI_FILE undefined: no support for run-time MIPS MMI checks +# error "PNG_MIPS_MMI_FILE undefined: no support for run-time MIPS MMI checks" #endif /* PNG_MIPS_MMI_FILE */ #endif /* PNG_MIPS_MMI_CHECK_SUPPORTED*/ #ifndef PNG_ALIGNED_MEMORY_SUPPORTED -# error ALIGNED_MEMORY is required; please define PNG_ALIGNED_MEMORY_SUPPORTED +# error "ALIGNED_MEMORY is required; set: -DPNG_ALIGNED_MEMORY_SUPPORTED" #endif /* MIPS supports two optimizations: MMI and MSA. The appropriate diff --git a/icecat/media/libpng/moz.build b/icecat/media/libpng/moz.build index 803dc04bef..cdbd821028 100644 --- a/icecat/media/libpng/moz.build +++ b/icecat/media/libpng/moz.build @@ -13,11 +13,7 @@ EXPORTS += [ 'pnglibconf.h' ] -# libpng errors out if pngpriv.h is included more than once in order to prevent -# application that integrate libpng from including that file, unfortunately -# that also errors out when using unified sources so we have to disable it -# here. Similarly for all of the arch-specific sources below. -SOURCES += [ +UNIFIED_SOURCES += [ 'png.c', 'pngerror.c', 'pngget.c', @@ -42,7 +38,7 @@ SOURCES += [ if CONFIG['TARGET_CPU'] == 'arm' or CONFIG['TARGET_CPU'] == 'aarch64': DEFINES['MOZ_PNG_USE_ARM_NEON'] = True - SOURCES += [ + UNIFIED_SOURCES += [ 'arm/arm_init.c', 'arm/filter_neon_intrinsics.c', 'arm/palette_neon_intrinsics.c' @@ -55,14 +51,14 @@ if CONFIG['TARGET_CPU'] == 'arm' or CONFIG['TARGET_CPU'] == 'aarch64': if CONFIG['INTEL_ARCHITECTURE']: DEFINES['MOZ_PNG_USE_INTEL_SSE'] = True - SOURCES += [ + UNIFIED_SOURCES += [ 'intel/filter_sse2_intrinsics.c', 'intel/intel_init.c' ] if CONFIG['TARGET_CPU'] in ('mips32', 'mips64'): DEFINES['MOZ_PNG_USE_MIPS_MSA'] = True - SOURCES += [ + UNIFIED_SOURCES += [ 'mips/filter_mmi_inline_assembly.c', 'mips/filter_msa_intrinsics.c', 'mips/mips_init.c' @@ -70,7 +66,7 @@ if CONFIG['TARGET_CPU'] in ('mips32', 'mips64'): if CONFIG['HAVE_ALTIVEC']: DEFINES['MOZ_PNG_USE_POWERPC'] = True - SOURCES += [ + UNIFIED_SOURCES += [ 'powerpc/filter_vsx_intrinsics.c', 'powerpc/powerpc_init.c' ] @@ -78,7 +74,7 @@ if CONFIG['HAVE_ALTIVEC']: if CONFIG['TARGET_CPU'] == 'loongarch64': DEFINES['MOZ_PNG_USE_LOONGARCH_LSX'] = True CFLAGS += ['-mlsx'] - SOURCES += [ + UNIFIED_SOURCES += [ 'loongarch/filter_lsx_intrinsics.c', 'loongarch/loongarch_lsx_init.c', ] diff --git a/icecat/media/libpng/moz.yaml b/icecat/media/libpng/moz.yaml index 6de5350e3c..541984eb29 100644 --- a/icecat/media/libpng/moz.yaml +++ b/icecat/media/libpng/moz.yaml @@ -11,9 +11,9 @@ origin: url: "http://www.libpng.org/pub/png/libpng.html" license: libpng - release: v1.6.58 (2026-04-15T20:23:26+03:00). + release: v1.6.47 (2025-02-18T11:18:30+02:00). - revision: "v1.6.58" + revision: "v1.6.43" license-file: LICENSE @@ -25,7 +25,7 @@ updatebot: enabled: True vendoring: - url: https://github.com/pnggroup/libpng + url: https://github.com/glennrp/libpng source-hosting: github tracking: tag diff --git a/icecat/media/libpng/png.c b/icecat/media/libpng/png.c index cebe7af1f8..6d533ec40b 100644 --- a/icecat/media/libpng/png.c +++ b/icecat/media/libpng/png.c @@ -1,6 +1,6 @@ /* png.c - location for general purpose libpng functions * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -13,7 +13,7 @@ #include "pngpriv.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_58 Your_png_h_is_not_version_1_6_58; +typedef png_libpng_version_1_6_47 Your_png_h_is_not_version_1_6_47; /* Sanity check the chunks definitions - PNG_KNOWN_CHUNKS from pngpriv.h and the * corresponding macro definitions. This causes a compile time failure if @@ -101,24 +101,17 @@ png_sig_cmp(png_const_bytep sig, size_t start, size_t num_to_check) #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) /* Function to allocate memory for zlib */ PNG_FUNCTION(voidpf /* PRIVATE */, -png_zalloc,(voidpf png_ptr, uInt items, uInt size), - PNG_ALLOCATED) +png_zalloc,(voidpf png_ptr, uInt items, uInt size),PNG_ALLOCATED) { png_alloc_size_t num_bytes = size; if (png_ptr == NULL) return NULL; - /* This check against overflow is vestigial, dating back from - * the old times when png_zalloc used to be an exported function. - * We're still keeping it here for now, as an extra-cautious - * prevention against programming errors inside zlib, although it - * should rather be a debug-time assertion instead. - */ - if (size != 0 && items >= (~(png_alloc_size_t)0) / size) + if (items >= (~(png_alloc_size_t)0)/size) { - png_warning(png_voidcast(png_structrp, png_ptr), - "Potential overflow in png_zalloc()"); + png_warning (png_voidcast(png_structrp, png_ptr), + "Potential overflow in png_zalloc()"); return NULL; } @@ -245,6 +238,10 @@ png_user_version_check(png_structrp png_ptr, png_const_charp user_png_ver) png_warning(png_ptr, m); #endif +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + png_ptr->flags = 0; +#endif + return 0; } @@ -258,8 +255,7 @@ png_user_version_check(png_structrp png_ptr, png_const_charp user_png_ver) PNG_FUNCTION(png_structp /* PRIVATE */, png_create_png_struct,(png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED) + png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) { png_struct create_struct; # ifdef PNG_SETJMP_SUPPORTED @@ -363,8 +359,7 @@ png_create_png_struct,(png_const_charp user_png_ver, png_voidp error_ptr, /* Allocate the memory for an info_struct for the application. */ PNG_FUNCTION(png_infop,PNGAPI -png_create_info_struct,(png_const_structrp png_ptr), - PNG_ALLOCATED) +png_create_info_struct,(png_const_structrp png_ptr),PNG_ALLOCATED) { png_inforp info_ptr; @@ -705,7 +700,7 @@ png_get_io_ptr(png_const_structrp png_ptr) * function of your own because "FILE *" isn't necessarily available. */ void PNGAPI -png_init_io(png_structrp png_ptr, FILE *fp) +png_init_io(png_structrp png_ptr, png_FILE_p fp) { png_debug(1, "in png_init_io"); @@ -820,8 +815,8 @@ png_get_copyright(png_const_structrp png_ptr) return PNG_STRING_COPYRIGHT #else return PNG_STRING_NEWLINE \ - "libpng version 1.6.58" PNG_STRING_NEWLINE \ - "Copyright (c) 2018-2026 Cosmin Truta" PNG_STRING_NEWLINE \ + "libpng version 1.6.47" PNG_STRING_NEWLINE \ + "Copyright (c) 2018-2025 Cosmin Truta" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \ PNG_STRING_NEWLINE \ "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \ @@ -1170,7 +1165,7 @@ png_xy_from_XYZ(png_xy *xy, const png_XYZ *XYZ) return 1; /* The reference white is simply the sum of the end-point (X,Y,Z) vectors so - * the following calculates (X+Y+Z) of the reference white (media white, + * the fillowing calculates (X+Y+Z) of the reference white (media white, * encoding white) itself: */ d = dblue; @@ -1215,9 +1210,9 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) * (-0.0770) because the PNG spec itself requires the xy values to be * unsigned. whitey is also required to be 5 or more to avoid overflow. * - * Instead the upper limits have been relaxed to accommodate ACES AP1 where + * Instead the upper limits have been relaxed to accomodate ACES AP1 where * redz ends up as -600 (-0.006). ProPhotoRGB was already "in range." - * The new limit accommodates the AP0 and AP1 ranges for z but not AP0 redy. + * The new limit accomodates the AP0 and AP1 ranges for z but not AP0 redy. */ const png_fixed_point fpLimit = PNG_FP_1+(PNG_FP_1/10); if (xy->redx < 0 || xy->redx > fpLimit) return 1; @@ -1328,7 +1323,7 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) * red-scale + green-scale + blue-scale = 1/white-y = white-scale * * So now we have a Cramer's rule solution where the determinants are just - * 3x3 - far more tractable. Unfortunately 3x3 determinants still involve + * 3x3 - far more tractible. Unfortunately 3x3 determinants still involve * multiplication of three coefficients so we can't guarantee to avoid * overflow in the libpng fixed point representation. Using Cramer's rule in * floating point is probably a good choice here, but it's not an option for @@ -1496,7 +1491,7 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) } #endif /* COLORSPACE */ -#ifdef PNG_READ_iCCP_SUPPORTED +#ifdef PNG_iCCP_SUPPORTED /* Error message generation */ static char png_icc_tag_char(png_uint_32 byte) @@ -1572,7 +1567,9 @@ png_icc_profile_error(png_const_structrp png_ptr, png_const_charp name, return 0; } +#endif /* iCCP */ +#ifdef PNG_READ_iCCP_SUPPORTED /* Encoded value of D50 as an ICC XYZNumber. From the ICC 2010 spec the value * is XYZ(0.9642,1.0,0.8249), which scales to: * @@ -1697,7 +1694,7 @@ png_icc_check_header(png_const_structrp png_ptr, png_const_charp name, * into R, G and B channels. * * Previously it was suggested that an RGB profile on grayscale data could be - * handled. However it is clear that using an RGB profile in this context + * handled. However it it is clear that using an RGB profile in this context * must be an error - there is no specification of what it means. Thus it is * almost certainly more correct to ignore the profile. */ @@ -2260,8 +2257,8 @@ PNG_FP_End: int png_check_fp_string(png_const_charp string, size_t size) { - int state = 0; - size_t char_index = 0; + int state=0; + size_t char_index=0; if (png_check_fp_number(string, size, &state, &char_index) != 0 && (char_index == size || string[char_index] == 0)) @@ -2915,7 +2912,7 @@ png_gamma_significant(png_fixed_point gamma_val) * * 2.2/(2+51/256) == 1.00035524 * - * I.e. vanishingly small (<4E-4) but still detectable in 16-bit linear (+/- + * I.e. vanishly small (<4E-4) but still detectable in 16-bit linear (+/- * 23). Note that the Adobe choice seems to be something intended to give an * exact number with 8 binary fractional digits - it is the closest to 2.2 * that is possible a base 2 .8p representation. @@ -3972,7 +3969,7 @@ png_image_free_function(png_voidp argument) # ifdef PNG_STDIO_SUPPORTED if (cp->owned_file != 0) { - FILE *fp = png_voidcast(FILE *, cp->png_ptr->io_ptr); + FILE *fp = png_voidcast(FILE*, cp->png_ptr->io_ptr); cp->owned_file = 0; /* Ignore errors here. */ diff --git a/icecat/media/libpng/png.h b/icecat/media/libpng/png.h index 3935ca24cf..5ce5640c6d 100644 --- a/icecat/media/libpng/png.h +++ b/icecat/media/libpng/png.h @@ -1,8 +1,8 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.58 + * libpng version 1.6.47 * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -14,7 +14,7 @@ * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger * libpng versions 0.97, January 1998, through 1.6.35, July 2018: * Glenn Randers-Pehrson - * libpng versions 1.6.36, December 2018, through 1.6.58, April 2026: + * libpng versions 1.6.36, December 2018, through 1.6.47, February 2025: * Cosmin Truta * See also "Contributing Authors", below. */ @@ -26,8 +26,8 @@ * PNG Reference Library License version 2 * --------------------------------------- * - * * Copyright (c) 1995-2026 The PNG Reference Library Authors. - * * Copyright (c) 2018-2026 Cosmin Truta. + * * Copyright (c) 1995-2025 The PNG Reference Library Authors. + * * Copyright (c) 2018-2025 Cosmin Truta. * * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. * * Copyright (c) 1996-1997 Andreas Dilger. * * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -238,7 +238,7 @@ * ... * 1.5.30 15 10530 15.so.15.30[.0] * ... - * 1.6.58 16 10658 16.so.16.58[.0] + * 1.6.47 16 10647 16.so.16.47[.0] * * Henceforth the source version will match the shared-library major and * minor numbers; the shared-library major version number will be used for @@ -274,7 +274,7 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.58" +#define PNG_LIBPNG_VER_STRING "1.6.47" #define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n" /* The versions of shared library builds should stay in sync, going forward */ @@ -285,7 +285,7 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 58 +#define PNG_LIBPNG_VER_RELEASE 47 /* This should be zero for a public release, or non-zero for a * development version. @@ -316,7 +316,7 @@ * From version 1.0.1 it is: * XXYYZZ, where XX=major, YY=minor, ZZ=release */ -#define PNG_LIBPNG_VER 10658 /* 1.6.58 */ +#define PNG_LIBPNG_VER 10647 /* 1.6.47 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -441,7 +441,7 @@ extern "C" { /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef char *png_libpng_version_1_6_58; +typedef char* png_libpng_version_1_6_47; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * @@ -800,25 +800,20 @@ typedef png_row_info * * png_row_infopp; * modify the buffer it is passed. The 'read' function, on the other hand, is * expected to return the read data in the buffer. */ -typedef PNG_CALLBACK(void, *png_error_ptr, - (png_structp, png_const_charp)); -typedef PNG_CALLBACK(void, *png_rw_ptr, - (png_structp, png_bytep, size_t)); -typedef PNG_CALLBACK(void, *png_flush_ptr, - (png_structp)); -typedef PNG_CALLBACK(void, *png_read_status_ptr, - (png_structp, png_uint_32, int)); -typedef PNG_CALLBACK(void, *png_write_status_ptr, - (png_structp, png_uint_32, int)); +typedef PNG_CALLBACK(void, *png_error_ptr, (png_structp, png_const_charp)); +typedef PNG_CALLBACK(void, *png_rw_ptr, (png_structp, png_bytep, size_t)); +typedef PNG_CALLBACK(void, *png_flush_ptr, (png_structp)); +typedef PNG_CALLBACK(void, *png_read_status_ptr, (png_structp, png_uint_32, + int)); +typedef PNG_CALLBACK(void, *png_write_status_ptr, (png_structp, png_uint_32, + int)); #ifdef PNG_PROGRESSIVE_READ_SUPPORTED -typedef PNG_CALLBACK(void, *png_progressive_info_ptr, - (png_structp, png_infop)); -typedef PNG_CALLBACK(void, *png_progressive_end_ptr, - (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); +typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); #ifdef PNG_APNG_SUPPORTED -typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, - (png_structp, png_uint_32)); +typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, (png_structp, + png_uint_32)); #endif /* The following callback receives png_uint_32 row_number, int pass for the @@ -831,19 +826,19 @@ typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, * find the output pixel (x,y) given an interlaced sub-image pixel * (row,col,pass). (See below for these macros.) */ -typedef PNG_CALLBACK(void, *png_progressive_row_ptr, - (png_structp, png_bytep, png_uint_32, int)); +typedef PNG_CALLBACK(void, *png_progressive_row_ptr, (png_structp, png_bytep, + png_uint_32, int)); #endif #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -typedef PNG_CALLBACK(void, *png_user_transform_ptr, - (png_structp, png_row_infop, png_bytep)); +typedef PNG_CALLBACK(void, *png_user_transform_ptr, (png_structp, png_row_infop, + png_bytep)); #endif #ifdef PNG_USER_CHUNKS_SUPPORTED -typedef PNG_CALLBACK(int, *png_user_chunk_ptr, - (png_structp, png_unknown_chunkp)); +typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, + png_unknown_chunkp)); #endif #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED /* not used anywhere */ @@ -901,10 +896,9 @@ PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), (jmp_buf, int), typedef); * ignores the first argument) should be completely compatible with the * following. */ -typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, - (png_structp, png_alloc_size_t)); -typedef PNG_CALLBACK(void, *png_free_ptr, - (png_structp, png_voidp)); +typedef PNG_CALLBACK(png_voidp, *png_malloc_ptr, (png_structp, + png_alloc_size_t)); +typedef PNG_CALLBACK(void, *png_free_ptr, (png_structp, png_voidp)); /* Section 4: exported functions * Here are the function definitions most commonly used. This is not @@ -936,22 +930,20 @@ typedef PNG_CALLBACK(void, *png_free_ptr, */ /* Returns the version number of the library */ -PNG_EXPORT(1, png_uint_32, png_access_version_number, - (void)); +PNG_EXPORT(1, png_uint_32, png_access_version_number, (void)); /* Tell lib we have already handled the first magic bytes. * Handling more than 8 bytes from the beginning of the file is an error. */ -PNG_EXPORT(2, void, png_set_sig_bytes, - (png_structrp png_ptr, int num_bytes)); +PNG_EXPORT(2, void, png_set_sig_bytes, (png_structrp png_ptr, int num_bytes)); /* Check sig[start] through sig[start + num_to_check - 1] to see if it's a * PNG file. Returns zero if the supplied bytes match the 8-byte PNG * signature, and non-zero otherwise. Having num_to_check == 0 or * start > 7 will always fail (i.e. return non-zero). */ -PNG_EXPORT(3, int, png_sig_cmp, - (png_const_bytep sig, size_t start, size_t num_to_check)); +PNG_EXPORT(3, int, png_sig_cmp, (png_const_bytep sig, size_t start, + size_t num_to_check)); /* Simple signature checking function. This is the same as calling * png_check_sig(sig, n) := (png_sig_cmp(sig, 0, n) == 0). @@ -960,21 +952,21 @@ PNG_EXPORT(3, int, png_sig_cmp, /* Allocate and initialize png_ptr struct for reading, and any other memory. */ PNG_EXPORTA(4, png_structp, png_create_read_struct, - (png_const_charp user_png_ver, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn), - PNG_ALLOCATED); + (png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn), + PNG_ALLOCATED); /* Allocate and initialize png_ptr struct for writing, and any other memory */ PNG_EXPORTA(5, png_structp, png_create_write_struct, - (png_const_charp user_png_ver, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn), - PNG_ALLOCATED); + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn), + PNG_ALLOCATED); PNG_EXPORT(6, size_t, png_get_compression_buffer_size, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); -PNG_EXPORT(7, void, png_set_compression_buffer_size, - (png_structrp png_ptr, size_t size)); +PNG_EXPORT(7, void, png_set_compression_buffer_size, (png_structrp png_ptr, + size_t size)); /* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp * match up. @@ -987,8 +979,8 @@ PNG_EXPORT(7, void, png_set_compression_buffer_size, * allocated by the library - the call will return NULL on a mismatch * indicating an ABI mismatch. */ -PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, - (png_structrp png_ptr, png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); +PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr, + png_longjmp_ptr longjmp_fn, size_t jmp_buf_size)); # define png_jmpbuf(png_ptr) \ (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf)))) #else @@ -1000,77 +992,67 @@ PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, * will use it; otherwise it will call PNG_ABORT(). This function was * added in libpng-1.5.0. */ -PNG_EXPORTA(9, void, png_longjmp, - (png_const_structrp png_ptr, int val), - PNG_NORETURN); +PNG_EXPORTA(9, void, png_longjmp, (png_const_structrp png_ptr, int val), + PNG_NORETURN); #ifdef PNG_READ_SUPPORTED /* Reset the compression stream */ -PNG_EXPORTA(10, int, png_reset_zstream, - (png_structrp png_ptr), - PNG_DEPRECATED); +PNG_EXPORTA(10, int, png_reset_zstream, (png_structrp png_ptr), PNG_DEPRECATED); #endif /* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ #ifdef PNG_USER_MEM_SUPPORTED PNG_EXPORTA(11, png_structp, png_create_read_struct_2, - (png_const_charp user_png_ver, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED); + PNG_ALLOCATED); PNG_EXPORTA(12, png_structp, png_create_write_struct_2, - (png_const_charp user_png_ver, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED); + PNG_ALLOCATED); #endif /* Write the PNG file signature. */ -PNG_EXPORT(13, void, png_write_sig, - (png_structrp png_ptr)); +PNG_EXPORT(13, void, png_write_sig, (png_structrp png_ptr)); /* Write a PNG chunk - size, type, (optional) data, CRC. */ -PNG_EXPORT(14, void, png_write_chunk, - (png_structrp png_ptr, - png_const_bytep chunk_name, png_const_bytep data, size_t length)); +PNG_EXPORT(14, void, png_write_chunk, (png_structrp png_ptr, png_const_bytep + chunk_name, png_const_bytep data, size_t length)); /* Write the start of a PNG chunk - length and chunk name. */ -PNG_EXPORT(15, void, png_write_chunk_start, - (png_structrp png_ptr, +PNG_EXPORT(15, void, png_write_chunk_start, (png_structrp png_ptr, png_const_bytep chunk_name, png_uint_32 length)); /* Write the data of a PNG chunk started with png_write_chunk_start(). */ -PNG_EXPORT(16, void, png_write_chunk_data, - (png_structrp png_ptr, +PNG_EXPORT(16, void, png_write_chunk_data, (png_structrp png_ptr, png_const_bytep data, size_t length)); /* Finish a chunk started with png_write_chunk_start() (includes CRC). */ -PNG_EXPORT(17, void, png_write_chunk_end, - (png_structrp png_ptr)); +PNG_EXPORT(17, void, png_write_chunk_end, (png_structrp png_ptr)); /* Allocate and initialize the info structure */ -PNG_EXPORTA(18, png_infop, png_create_info_struct, - (png_const_structrp png_ptr), - PNG_ALLOCATED); +PNG_EXPORTA(18, png_infop, png_create_info_struct, (png_const_structrp png_ptr), + PNG_ALLOCATED); /* DEPRECATED: this function allowed init structures to be created using the * default allocation method (typically malloc). Use is deprecated in 1.6.0 and * the API will be removed in the future. */ -PNG_EXPORTA(19, void, png_info_init_3, - (png_infopp info_ptr, size_t png_info_struct_size), - PNG_DEPRECATED); +PNG_EXPORTA(19, void, png_info_init_3, (png_infopp info_ptr, + size_t png_info_struct_size), PNG_DEPRECATED); /* Writes all the PNG information before the image. */ PNG_EXPORT(20, void, png_write_info_before_PLTE, - (png_structrp png_ptr, png_const_inforp info_ptr)); + (png_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(21, void, png_write_info, - (png_structrp png_ptr, png_const_inforp info_ptr)); + (png_structrp png_ptr, png_const_inforp info_ptr)); #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read the information before the actual image data. */ PNG_EXPORT(22, void, png_read_info, - (png_structrp png_ptr, png_inforp info_ptr)); + (png_structrp png_ptr, png_inforp info_ptr)); #endif #ifdef PNG_TIME_RFC1123_SUPPORTED @@ -1080,54 +1062,45 @@ PNG_EXPORT(22, void, png_read_info, */ #if PNG_LIBPNG_VER < 10700 /* To do: remove this from libpng17 (and from libpng17/png.c and pngstruct.h) */ -PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, - (png_structrp png_ptr, png_const_timep ptime), - PNG_DEPRECATED); +PNG_EXPORTA(23, png_const_charp, png_convert_to_rfc1123, (png_structrp png_ptr, + png_const_timep ptime),PNG_DEPRECATED); #endif -PNG_EXPORT(241, int, png_convert_to_rfc1123_buffer, - (char out[29], png_const_timep ptime)); +PNG_EXPORT(241, int, png_convert_to_rfc1123_buffer, (char out[29], + png_const_timep ptime)); #endif #ifdef PNG_CONVERT_tIME_SUPPORTED /* Convert from a struct tm to png_time */ -PNG_EXPORT(24, void, png_convert_from_struct_tm, - (png_timep ptime, const struct tm * ttime)); +PNG_EXPORT(24, void, png_convert_from_struct_tm, (png_timep ptime, + const struct tm * ttime)); /* Convert from time_t to png_time. Uses gmtime() */ -PNG_EXPORT(25, void, png_convert_from_time_t, - (png_timep ptime, time_t ttime)); +PNG_EXPORT(25, void, png_convert_from_time_t, (png_timep ptime, time_t ttime)); #endif /* CONVERT_tIME */ #ifdef PNG_READ_EXPAND_SUPPORTED /* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ -PNG_EXPORT(26, void, png_set_expand, - (png_structrp png_ptr)); -PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, - (png_structrp png_ptr)); -PNG_EXPORT(28, void, png_set_palette_to_rgb, - (png_structrp png_ptr)); -PNG_EXPORT(29, void, png_set_tRNS_to_alpha, - (png_structrp png_ptr)); +PNG_EXPORT(26, void, png_set_expand, (png_structrp png_ptr)); +PNG_EXPORT(27, void, png_set_expand_gray_1_2_4_to_8, (png_structrp png_ptr)); +PNG_EXPORT(28, void, png_set_palette_to_rgb, (png_structrp png_ptr)); +PNG_EXPORT(29, void, png_set_tRNS_to_alpha, (png_structrp png_ptr)); #endif #ifdef PNG_READ_EXPAND_16_SUPPORTED /* Expand to 16-bit channels, forces conversion of palette to RGB and expansion * of a tRNS chunk if present. */ -PNG_EXPORT(221, void, png_set_expand_16, - (png_structrp png_ptr)); +PNG_EXPORT(221, void, png_set_expand_16, (png_structrp png_ptr)); #endif #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) /* Use blue, green, red order for pixels. */ -PNG_EXPORT(30, void, png_set_bgr, - (png_structrp png_ptr)); +PNG_EXPORT(30, void, png_set_bgr, (png_structrp png_ptr)); #endif #ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED /* Expand the grayscale to 24-bit RGB if necessary. */ -PNG_EXPORT(31, void, png_set_gray_to_rgb, - (png_structrp png_ptr)); +PNG_EXPORT(31, void, png_set_gray_to_rgb, (png_structrp png_ptr)); #endif #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED @@ -1137,20 +1110,18 @@ PNG_EXPORT(31, void, png_set_gray_to_rgb, #define PNG_ERROR_ACTION_ERROR 3 #define PNG_RGB_TO_GRAY_DEFAULT (-1)/*for red/green coefficients*/ -PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, - (png_structrp png_ptr, +PNG_FP_EXPORT(32, void, png_set_rgb_to_gray, (png_structrp png_ptr, int error_action, double red, double green)) -PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, - (png_structrp png_ptr, +PNG_FIXED_EXPORT(33, void, png_set_rgb_to_gray_fixed, (png_structrp png_ptr, int error_action, png_fixed_point red, png_fixed_point green)) -PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, - (png_const_structrp png_ptr)); +PNG_EXPORT(34, png_byte, png_get_rgb_to_gray_status, (png_const_structrp + png_ptr)); #endif #ifdef PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED -PNG_EXPORT(35, void, png_build_grayscale_palette, - (int bit_depth, png_colorp palette)); +PNG_EXPORT(35, void, png_build_grayscale_palette, (int bit_depth, + png_colorp palette)); #endif #ifdef PNG_READ_ALPHA_MODE_SUPPORTED @@ -1195,10 +1166,10 @@ PNG_EXPORT(35, void, png_build_grayscale_palette, #define PNG_ALPHA_OPTIMIZED 2 /* 'PNG' for opaque pixels, else 'STANDARD' */ #define PNG_ALPHA_BROKEN 3 /* the alpha channel is gamma encoded */ -PNG_FP_EXPORT(227, void, png_set_alpha_mode, - (png_structrp png_ptr, int mode, double output_gamma)) -PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, - (png_structrp png_ptr, int mode, png_fixed_point output_gamma)) +PNG_FP_EXPORT(227, void, png_set_alpha_mode, (png_structrp png_ptr, int mode, + double output_gamma)) +PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, (png_structrp png_ptr, + int mode, png_fixed_point output_gamma)) #endif #if defined(PNG_GAMMA_SUPPORTED) || defined(PNG_READ_ALPHA_MODE_SUPPORTED) @@ -1288,57 +1259,51 @@ PNG_FIXED_EXPORT(228, void, png_set_alpha_mode_fixed, */ #ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -PNG_EXPORT(36, void, png_set_strip_alpha, - (png_structrp png_ptr)); +PNG_EXPORT(36, void, png_set_strip_alpha, (png_structrp png_ptr)); #endif #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -PNG_EXPORT(37, void, png_set_swap_alpha, - (png_structrp png_ptr)); +PNG_EXPORT(37, void, png_set_swap_alpha, (png_structrp png_ptr)); #endif #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -PNG_EXPORT(38, void, png_set_invert_alpha, - (png_structrp png_ptr)); +PNG_EXPORT(38, void, png_set_invert_alpha, (png_structrp png_ptr)); #endif #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) /* Add a filler byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ -PNG_EXPORT(39, void, png_set_filler, - (png_structrp png_ptr, png_uint_32 filler, int flags)); +PNG_EXPORT(39, void, png_set_filler, (png_structrp png_ptr, png_uint_32 filler, + int flags)); /* The values of the PNG_FILLER_ defines should NOT be changed */ # define PNG_FILLER_BEFORE 0 # define PNG_FILLER_AFTER 1 /* Add an alpha byte to 8-bit or 16-bit Gray or 24-bit or 48-bit RGB images. */ -PNG_EXPORT(40, void, png_set_add_alpha, - (png_structrp png_ptr, png_uint_32 filler, int flags)); +PNG_EXPORT(40, void, png_set_add_alpha, (png_structrp png_ptr, + png_uint_32 filler, int flags)); #endif /* READ_FILLER || WRITE_FILLER */ #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) /* Swap bytes in 16-bit depth files. */ -PNG_EXPORT(41, void, png_set_swap, - (png_structrp png_ptr)); +PNG_EXPORT(41, void, png_set_swap, (png_structrp png_ptr)); #endif #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) /* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ -PNG_EXPORT(42, void, png_set_packing, - (png_structrp png_ptr)); +PNG_EXPORT(42, void, png_set_packing, (png_structrp png_ptr)); #endif #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ defined(PNG_WRITE_PACKSWAP_SUPPORTED) /* Swap packing order of pixels in bytes. */ -PNG_EXPORT(43, void, png_set_packswap, - (png_structrp png_ptr)); +PNG_EXPORT(43, void, png_set_packswap, (png_structrp png_ptr)); #endif #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) /* Converts files to legal bit depths. */ -PNG_EXPORT(44, void, png_set_shift, - (png_structrp png_ptr, png_const_color_8p true_bits)); +PNG_EXPORT(44, void, png_set_shift, (png_structrp png_ptr, png_const_color_8p + true_bits)); #endif #if defined(PNG_READ_INTERLACING_SUPPORTED) || \ @@ -1349,14 +1314,12 @@ PNG_EXPORT(44, void, png_set_shift, * necessary to call png_read_row or png_read_rows png_get_image_height * times for each pass. */ -PNG_EXPORT(45, int, png_set_interlace_handling, - (png_structrp png_ptr)); +PNG_EXPORT(45, int, png_set_interlace_handling, (png_structrp png_ptr)); #endif #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) /* Invert monochrome files */ -PNG_EXPORT(46, void, png_set_invert_mono, - (png_structrp png_ptr)); +PNG_EXPORT(46, void, png_set_invert_mono, (png_structrp png_ptr)); #endif #ifdef PNG_READ_BACKGROUND_SUPPORTED @@ -1365,12 +1328,10 @@ PNG_EXPORT(46, void, png_set_invert_mono, * read. Doing so will result in unexpected behavior and possible warnings or * errors if the PNG file contains a bKGD chunk. */ -PNG_FP_EXPORT(47, void, png_set_background, - (png_structrp png_ptr, +PNG_FP_EXPORT(47, void, png_set_background, (png_structrp png_ptr, png_const_color_16p background_color, int background_gamma_code, int need_expand, double background_gamma)) -PNG_FIXED_EXPORT(215, void, png_set_background_fixed, - (png_structrp png_ptr, +PNG_FIXED_EXPORT(215, void, png_set_background_fixed, (png_structrp png_ptr, png_const_color_16p background_color, int background_gamma_code, int need_expand, png_fixed_point background_gamma)) #endif @@ -1383,23 +1344,20 @@ PNG_FIXED_EXPORT(215, void, png_set_background_fixed, #ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED /* Scale a 16-bit depth file down to 8-bit, accurately. */ -PNG_EXPORT(229, void, png_set_scale_16, - (png_structrp png_ptr)); +PNG_EXPORT(229, void, png_set_scale_16, (png_structrp png_ptr)); #endif #ifdef PNG_READ_STRIP_16_TO_8_SUPPORTED #define PNG_READ_16_TO_8_SUPPORTED /* Name prior to 1.5.4 */ /* Strip the second byte of information from a 16-bit depth file. */ -PNG_EXPORT(48, void, png_set_strip_16, - (png_structrp png_ptr)); +PNG_EXPORT(48, void, png_set_strip_16, (png_structrp png_ptr)); #endif #ifdef PNG_READ_QUANTIZE_SUPPORTED /* Turn on quantizing, and reduce the palette to the number of colors * available. */ -PNG_EXPORT(49, void, png_set_quantize, - (png_structrp png_ptr, +PNG_EXPORT(49, void, png_set_quantize, (png_structrp png_ptr, png_colorp palette, int num_palette, int maximum_colors, png_const_uint_16p histogram, int full_quantize)); #endif @@ -1421,92 +1379,82 @@ PNG_EXPORT(49, void, png_set_quantize, * API (floating point or fixed.) Notice, however, that the 'file_gamma' value * is the inverse of a 'screen gamma' value. */ -PNG_FP_EXPORT(50, void, png_set_gamma, - (png_structrp png_ptr, +PNG_FP_EXPORT(50, void, png_set_gamma, (png_structrp png_ptr, double screen_gamma, double override_file_gamma)) -PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, - (png_structrp png_ptr, +PNG_FIXED_EXPORT(208, void, png_set_gamma_fixed, (png_structrp png_ptr, png_fixed_point screen_gamma, png_fixed_point override_file_gamma)) #endif #ifdef PNG_WRITE_FLUSH_SUPPORTED /* Set how many lines between output flushes - 0 for no flushing */ -PNG_EXPORT(51, void, png_set_flush, - (png_structrp png_ptr, int nrows)); +PNG_EXPORT(51, void, png_set_flush, (png_structrp png_ptr, int nrows)); /* Flush the current PNG output buffer */ -PNG_EXPORT(52, void, png_write_flush, - (png_structrp png_ptr)); +PNG_EXPORT(52, void, png_write_flush, (png_structrp png_ptr)); #endif /* Optional update palette with requested transformations */ -PNG_EXPORT(53, void, png_start_read_image, - (png_structrp png_ptr)); +PNG_EXPORT(53, void, png_start_read_image, (png_structrp png_ptr)); /* Optional call to update the users info structure */ -PNG_EXPORT(54, void, png_read_update_info, - (png_structrp png_ptr, png_inforp info_ptr)); +PNG_EXPORT(54, void, png_read_update_info, (png_structrp png_ptr, + png_inforp info_ptr)); #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read one or more rows of image data. */ -PNG_EXPORT(55, void, png_read_rows, - (png_structrp png_ptr, png_bytepp row, +PNG_EXPORT(55, void, png_read_rows, (png_structrp png_ptr, png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); #endif #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read a row of data. */ -PNG_EXPORT(56, void, png_read_row, - (png_structrp png_ptr, png_bytep row, png_bytep display_row)); +PNG_EXPORT(56, void, png_read_row, (png_structrp png_ptr, png_bytep row, + png_bytep display_row)); #endif #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read the whole image into memory at once. */ -PNG_EXPORT(57, void, png_read_image, - (png_structrp png_ptr, png_bytepp image)); +PNG_EXPORT(57, void, png_read_image, (png_structrp png_ptr, png_bytepp image)); #endif /* Write a row of image data */ -PNG_EXPORT(58, void, png_write_row, - (png_structrp png_ptr, png_const_bytep row)); +PNG_EXPORT(58, void, png_write_row, (png_structrp png_ptr, + png_const_bytep row)); /* Write a few rows of image data: (*row) is not written; however, the type * is declared as writeable to maintain compatibility with previous versions * of libpng and to allow the 'display_row' array from read_rows to be passed * unchanged to write_rows. */ -PNG_EXPORT(59, void, png_write_rows, - (png_structrp png_ptr, png_bytepp row, png_uint_32 num_rows)); +PNG_EXPORT(59, void, png_write_rows, (png_structrp png_ptr, png_bytepp row, + png_uint_32 num_rows)); /* Write the image data */ -PNG_EXPORT(60, void, png_write_image, - (png_structrp png_ptr, png_bytepp image)); +PNG_EXPORT(60, void, png_write_image, (png_structrp png_ptr, png_bytepp image)); /* Write the end of the PNG file. */ -PNG_EXPORT(61, void, png_write_end, - (png_structrp png_ptr, png_inforp info_ptr)); +PNG_EXPORT(61, void, png_write_end, (png_structrp png_ptr, + png_inforp info_ptr)); #ifdef PNG_SEQUENTIAL_READ_SUPPORTED /* Read the end of the PNG file. */ -PNG_EXPORT(62, void, png_read_end, - (png_structrp png_ptr, png_inforp info_ptr)); +PNG_EXPORT(62, void, png_read_end, (png_structrp png_ptr, png_inforp info_ptr)); #endif /* Free any memory associated with the png_info_struct */ -PNG_EXPORT(63, void, png_destroy_info_struct, - (png_const_structrp png_ptr, png_infopp info_ptr_ptr)); +PNG_EXPORT(63, void, png_destroy_info_struct, (png_const_structrp png_ptr, + png_infopp info_ptr_ptr)); /* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(64, void, png_destroy_read_struct, - (png_structpp png_ptr_ptr, +PNG_EXPORT(64, void, png_destroy_read_struct, (png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); /* Free any memory associated with the png_struct and the png_info_structs */ -PNG_EXPORT(65, void, png_destroy_write_struct, - (png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); +PNG_EXPORT(65, void, png_destroy_write_struct, (png_structpp png_ptr_ptr, + png_infopp info_ptr_ptr)); /* Set the libpng method of handling chunk CRC errors */ -PNG_EXPORT(66, void, png_set_crc_action, - (png_structrp png_ptr, int crit_action, int ancil_action)); +PNG_EXPORT(66, void, png_set_crc_action, (png_structrp png_ptr, int crit_action, + int ancil_action)); /* Values for png_set_crc_action() say how to handle CRC errors in * ancillary and critical chunks, and whether to use the data contained @@ -1536,8 +1484,8 @@ PNG_EXPORT(66, void, png_set_crc_action, /* Set the filtering method(s) used by libpng. Currently, the only valid * value for "method" is 0. */ -PNG_EXPORT(67, void, png_set_filter, - (png_structrp png_ptr, int method, int filters)); +PNG_EXPORT(67, void, png_set_filter, (png_structrp png_ptr, int method, + int filters)); #endif /* WRITE */ /* Flags for png_set_filter() to say which filters to use. The flags @@ -1566,14 +1514,11 @@ PNG_EXPORT(67, void, png_set_filter, #ifdef PNG_WRITE_SUPPORTED #ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* DEPRECATED */ -PNG_FP_EXPORT(68, void, png_set_filter_heuristics, - (png_structrp png_ptr, - int heuristic_method, int num_weights, - png_const_doublep filter_weights, +PNG_FP_EXPORT(68, void, png_set_filter_heuristics, (png_structrp png_ptr, + int heuristic_method, int num_weights, png_const_doublep filter_weights, png_const_doublep filter_costs)) PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, - (png_structrp png_ptr, - int heuristic_method, int num_weights, + (png_structrp png_ptr, int heuristic_method, int num_weights, png_const_fixed_point_p filter_weights, png_const_fixed_point_p filter_costs)) #endif /* WRITE_WEIGHTED_FILTER */ @@ -1592,44 +1537,44 @@ PNG_FIXED_EXPORT(209, void, png_set_filter_heuristics_fixed, * these values may not correspond directly to the zlib compression levels. */ #ifdef PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED -PNG_EXPORT(69, void, png_set_compression_level, - (png_structrp png_ptr, int level)); +PNG_EXPORT(69, void, png_set_compression_level, (png_structrp png_ptr, + int level)); -PNG_EXPORT(70, void, png_set_compression_mem_level, - (png_structrp png_ptr, int mem_level)); +PNG_EXPORT(70, void, png_set_compression_mem_level, (png_structrp png_ptr, + int mem_level)); -PNG_EXPORT(71, void, png_set_compression_strategy, - (png_structrp png_ptr, int strategy)); +PNG_EXPORT(71, void, png_set_compression_strategy, (png_structrp png_ptr, + int strategy)); /* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a * smaller value of window_bits if it can do so safely. */ -PNG_EXPORT(72, void, png_set_compression_window_bits, - (png_structrp png_ptr, int window_bits)); +PNG_EXPORT(72, void, png_set_compression_window_bits, (png_structrp png_ptr, + int window_bits)); -PNG_EXPORT(73, void, png_set_compression_method, - (png_structrp png_ptr, int method)); +PNG_EXPORT(73, void, png_set_compression_method, (png_structrp png_ptr, + int method)); #endif /* WRITE_CUSTOMIZE_COMPRESSION */ #ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED /* Also set zlib parameters for compressing non-IDAT chunks */ -PNG_EXPORT(222, void, png_set_text_compression_level, - (png_structrp png_ptr, int level)); +PNG_EXPORT(222, void, png_set_text_compression_level, (png_structrp png_ptr, + int level)); -PNG_EXPORT(223, void, png_set_text_compression_mem_level, - (png_structrp png_ptr, int mem_level)); +PNG_EXPORT(223, void, png_set_text_compression_mem_level, (png_structrp png_ptr, + int mem_level)); -PNG_EXPORT(224, void, png_set_text_compression_strategy, - (png_structrp png_ptr, int strategy)); +PNG_EXPORT(224, void, png_set_text_compression_strategy, (png_structrp png_ptr, + int strategy)); /* If PNG_WRITE_OPTIMIZE_CMF_SUPPORTED is defined, libpng will use a * smaller value of window_bits if it can do so safely. */ PNG_EXPORT(225, void, png_set_text_compression_window_bits, - (png_structrp png_ptr, int window_bits)); + (png_structrp png_ptr, int window_bits)); -PNG_EXPORT(226, void, png_set_text_compression_method, - (png_structrp png_ptr, int method)); +PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr, + int method)); #endif /* WRITE_CUSTOMIZE_ZTXT_COMPRESSION */ #endif /* WRITE */ @@ -1644,8 +1589,7 @@ PNG_EXPORT(226, void, png_set_text_compression_method, #ifdef PNG_STDIO_SUPPORTED /* Initialize the input/output for the PNG file to the default functions. */ -PNG_EXPORT(74, void, png_init_io, - (png_structrp png_ptr, FILE *fp)); +PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp)); #endif /* Replace the (error and abort), and warning functions with user @@ -1656,13 +1600,11 @@ PNG_EXPORT(74, void, png_init_io, * default function will be used. */ -PNG_EXPORT(75, void, png_set_error_fn, - (png_structrp png_ptr, +PNG_EXPORT(75, void, png_set_error_fn, (png_structrp png_ptr, png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); /* Return the user pointer associated with the error functions */ -PNG_EXPORT(76, png_voidp, png_get_error_ptr, - (png_const_structrp png_ptr)); +PNG_EXPORT(76, png_voidp, png_get_error_ptr, (png_const_structrp png_ptr)); /* Replace the default data output functions with a user supplied one(s). * If buffered output is not used, then output_flush_fn can be set to NULL. @@ -1674,54 +1616,47 @@ PNG_EXPORT(76, png_voidp, png_get_error_ptr, * default flush function, which uses the standard *FILE structure, will * be used. */ -PNG_EXPORT(77, void, png_set_write_fn, - (png_structrp png_ptr, - png_voidp io_ptr, +PNG_EXPORT(77, void, png_set_write_fn, (png_structrp png_ptr, png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); /* Replace the default data input function with a user supplied one. */ -PNG_EXPORT(78, void, png_set_read_fn, - (png_structrp png_ptr, - png_voidp io_ptr, png_rw_ptr read_data_fn)); +PNG_EXPORT(78, void, png_set_read_fn, (png_structrp png_ptr, png_voidp io_ptr, + png_rw_ptr read_data_fn)); /* Return the user pointer associated with the I/O functions */ -PNG_EXPORT(79, png_voidp, png_get_io_ptr, - (png_const_structrp png_ptr)); +PNG_EXPORT(79, png_voidp, png_get_io_ptr, (png_const_structrp png_ptr)); -PNG_EXPORT(80, void, png_set_read_status_fn, - (png_structrp png_ptr, png_read_status_ptr read_row_fn)); +PNG_EXPORT(80, void, png_set_read_status_fn, (png_structrp png_ptr, + png_read_status_ptr read_row_fn)); -PNG_EXPORT(81, void, png_set_write_status_fn, - (png_structrp png_ptr, png_write_status_ptr write_row_fn)); +PNG_EXPORT(81, void, png_set_write_status_fn, (png_structrp png_ptr, + png_write_status_ptr write_row_fn)); #ifdef PNG_USER_MEM_SUPPORTED /* Replace the default memory allocation functions with user supplied one(s). */ -PNG_EXPORT(82, void, png_set_mem_fn, - (png_structrp png_ptr, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +PNG_EXPORT(82, void, png_set_mem_fn, (png_structrp png_ptr, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)); /* Return the user pointer associated with the memory functions */ -PNG_EXPORT(83, png_voidp, png_get_mem_ptr, - (png_const_structrp png_ptr)); +PNG_EXPORT(83, png_voidp, png_get_mem_ptr, (png_const_structrp png_ptr)); #endif #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(84, void, png_set_read_user_transform_fn, - (png_structrp png_ptr, png_user_transform_ptr read_user_transform_fn)); +PNG_EXPORT(84, void, png_set_read_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr read_user_transform_fn)); #endif #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -PNG_EXPORT(85, void, png_set_write_user_transform_fn, - (png_structrp png_ptr, png_user_transform_ptr write_user_transform_fn)); +PNG_EXPORT(85, void, png_set_write_user_transform_fn, (png_structrp png_ptr, + png_user_transform_ptr write_user_transform_fn)); #endif #ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED -PNG_EXPORT(86, void, png_set_user_transform_info, - (png_structrp png_ptr, - png_voidp user_transform_ptr, - int user_transform_depth, int user_transform_channels)); +PNG_EXPORT(86, void, png_set_user_transform_info, (png_structrp png_ptr, + png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); /* Return the user pointer associated with the user transform functions */ PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); #endif #ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED @@ -1736,10 +1671,8 @@ PNG_EXPORT(87, png_voidp, png_get_user_transform_ptr, * find the output pixel (x,y) given an interlaced sub-image pixel * (row,col,pass). (See below for these macros.) */ -PNG_EXPORT(217, png_uint_32, png_get_current_row_number, - (png_const_structrp)); -PNG_EXPORT(218, png_byte, png_get_current_pass_number, - (png_const_structrp)); +PNG_EXPORT(217, png_uint_32, png_get_current_row_number, (png_const_structrp)); +PNG_EXPORT(218, png_byte, png_get_current_pass_number, (png_const_structrp)); #endif #ifdef PNG_READ_USER_CHUNKS_SUPPORTED @@ -1762,32 +1695,28 @@ PNG_EXPORT(218, png_byte, png_get_current_pass_number, * See "INTERACTION WITH USER CHUNK CALLBACKS" below for important notes about * how this behavior will change in libpng 1.7 */ -PNG_EXPORT(88, void, png_set_read_user_chunk_fn, - (png_structrp png_ptr, +PNG_EXPORT(88, void, png_set_read_user_chunk_fn, (png_structrp png_ptr, png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); #endif #ifdef PNG_USER_CHUNKS_SUPPORTED -PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, - (png_const_structrp png_ptr)); +PNG_EXPORT(89, png_voidp, png_get_user_chunk_ptr, (png_const_structrp png_ptr)); #endif #ifdef PNG_PROGRESSIVE_READ_SUPPORTED /* Sets the function callbacks for the push reader, and a pointer to a * user-defined structure available to the callback functions. */ -PNG_EXPORT(90, void, png_set_progressive_read_fn, - (png_structrp png_ptr, +PNG_EXPORT(90, void, png_set_progressive_read_fn, (png_structrp png_ptr, png_voidp progressive_ptr, png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, png_progressive_end_ptr end_fn)); /* Returns the user pointer associated with the push read functions */ PNG_EXPORT(91, png_voidp, png_get_progressive_ptr, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); /* Function to be called when data becomes available */ -PNG_EXPORT(92, void, png_process_data, - (png_structrp png_ptr, +PNG_EXPORT(92, void, png_process_data, (png_structrp png_ptr, png_inforp info_ptr, png_bytep buffer, size_t buffer_size)); /* A function which may be called *only* within png_process_data to stop the @@ -1797,8 +1726,7 @@ PNG_EXPORT(92, void, png_process_data, * 'save' is set to true the routine will first save all the pending data and * will always return 0. */ -PNG_EXPORT(219, size_t, png_process_data_pause, - (png_structrp, int save)); +PNG_EXPORT(219, size_t, png_process_data_pause, (png_structrp, int save)); /* A function which may be called *only* outside (after) a call to * png_process_data. It returns the number of bytes of data to skip in the @@ -1806,53 +1734,45 @@ PNG_EXPORT(219, size_t, png_process_data_pause, * application must skip than number of bytes of input data and pass the * following data to the next call to png_process_data. */ -PNG_EXPORT(220, png_uint_32, png_process_data_skip, - (png_structrp)); +PNG_EXPORT(220, png_uint_32, png_process_data_skip, (png_structrp)); /* Function that combines rows. 'new_row' is a flag that should come from * the callback and be non-NULL if anything needs to be done; the library * stores its own version of the new data internally and ignores the passed * in value. */ -PNG_EXPORT(93, void, png_progressive_combine_row, - (png_const_structrp png_ptr, +PNG_EXPORT(93, void, png_progressive_combine_row, (png_const_structrp png_ptr, png_bytep old_row, png_const_bytep new_row)); #endif /* PROGRESSIVE_READ */ -PNG_EXPORTA(94, png_voidp, png_malloc, - (png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED); +PNG_EXPORTA(94, png_voidp, png_malloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); /* Added at libpng version 1.4.0 */ -PNG_EXPORTA(95, png_voidp, png_calloc, - (png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED); +PNG_EXPORTA(95, png_voidp, png_calloc, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); /* Added at libpng version 1.2.4 */ -PNG_EXPORTA(96, png_voidp, png_malloc_warn, - (png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED); +PNG_EXPORTA(96, png_voidp, png_malloc_warn, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED); /* Frees a pointer allocated by png_malloc() */ -PNG_EXPORT(97, void, png_free, - (png_const_structrp png_ptr, png_voidp ptr)); +PNG_EXPORT(97, void, png_free, (png_const_structrp png_ptr, png_voidp ptr)); /* Free data that was allocated internally */ -PNG_EXPORT(98, void, png_free_data, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 free_me, int num)); +PNG_EXPORT(98, void, png_free_data, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 free_me, int num)); /* Reassign the responsibility for freeing existing data, whether allocated * by libpng or by the application; this works on the png_info structure passed * in, without changing the state for other png_info structures. */ -PNG_EXPORT(99, void, png_data_freer, - (png_const_structrp png_ptr, png_inforp info_ptr, - int freer, png_uint_32 mask)); +PNG_EXPORT(99, void, png_data_freer, (png_const_structrp png_ptr, + png_inforp info_ptr, int freer, png_uint_32 mask)); /* Assignments for png_data_freer */ #define PNG_DESTROY_WILL_FREE_DATA 1 -#define PNG_SET_WILL_FREE_DATA 1 -#define PNG_USER_WILL_FREE_DATA 2 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 /* Flags for png_ptr->free_me and info_ptr->free_me */ #define PNG_FREE_HIST 0x0008U #define PNG_FREE_ICCP 0x0010U @@ -1872,42 +1792,36 @@ PNG_EXPORT(99, void, png_data_freer, #define PNG_FREE_MUL 0x4220U /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ #ifdef PNG_USER_MEM_SUPPORTED -PNG_EXPORTA(100, png_voidp, png_malloc_default, - (png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED PNG_DEPRECATED); -PNG_EXPORTA(101, void, png_free_default, - (png_const_structrp png_ptr, png_voidp ptr), - PNG_DEPRECATED); +PNG_EXPORTA(100, png_voidp, png_malloc_default, (png_const_structrp png_ptr, + png_alloc_size_t size), PNG_ALLOCATED PNG_DEPRECATED); +PNG_EXPORTA(101, void, png_free_default, (png_const_structrp png_ptr, + png_voidp ptr), PNG_DEPRECATED); #endif #ifdef PNG_ERROR_TEXT_SUPPORTED /* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORTA(102, void, png_error, - (png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN); +PNG_EXPORTA(102, void, png_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); /* The same, but the chunk name is prepended to the error string. */ -PNG_EXPORTA(103, void, png_chunk_error, - (png_const_structrp png_ptr, png_const_charp error_message), - PNG_NORETURN); +PNG_EXPORTA(103, void, png_chunk_error, (png_const_structrp png_ptr, + png_const_charp error_message), PNG_NORETURN); #else /* Fatal error in PNG image of libpng - can't continue */ -PNG_EXPORTA(104, void, png_err, - (png_const_structrp png_ptr), - PNG_NORETURN); +PNG_EXPORTA(104, void, png_err, (png_const_structrp png_ptr), PNG_NORETURN); # define png_error(s1,s2) png_err(s1) # define png_chunk_error(s1,s2) png_err(s1) #endif #ifdef PNG_WARNINGS_SUPPORTED /* Non-fatal error in libpng. Can continue, but may have a problem. */ -PNG_EXPORT(105, void, png_warning, - (png_const_structrp png_ptr, png_const_charp warning_message)); +PNG_EXPORT(105, void, png_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); /* Non-fatal error in libpng, chunk name is prepended to message. */ -PNG_EXPORT(106, void, png_chunk_warning, - (png_const_structrp png_ptr, png_const_charp warning_message)); +PNG_EXPORT(106, void, png_chunk_warning, (png_const_structrp png_ptr, + png_const_charp warning_message)); #else # define png_warning(s1,s2) ((void)(s1)) # define png_chunk_warning(s1,s2) ((void)(s1)) @@ -1916,17 +1830,17 @@ PNG_EXPORT(106, void, png_chunk_warning, #ifdef PNG_BENIGN_ERRORS_SUPPORTED /* Benign error in libpng. Can continue, but may have a problem. * User can choose whether to handle as a fatal error or as a warning. */ -PNG_EXPORT(107, void, png_benign_error, - (png_const_structrp png_ptr, png_const_charp warning_message)); +PNG_EXPORT(107, void, png_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); #ifdef PNG_READ_SUPPORTED /* Same, chunk name is prepended to message (only during read) */ -PNG_EXPORT(108, void, png_chunk_benign_error, - (png_const_structrp png_ptr, png_const_charp warning_message)); +PNG_EXPORT(108, void, png_chunk_benign_error, (png_const_structrp png_ptr, + png_const_charp warning_message)); #endif PNG_EXPORT(109, void, png_set_benign_errors, - (png_structrp png_ptr, int allowed)); + (png_structrp png_ptr, int allowed)); #else # ifdef PNG_ALLOW_BENIGN_ERRORS # define png_benign_error png_warning @@ -1950,181 +1864,169 @@ PNG_EXPORT(109, void, png_set_benign_errors, * png_info_struct. */ /* Returns "flag" if chunk data is valid in info_ptr. */ -PNG_EXPORT(110, png_uint_32, png_get_valid, - (png_const_structrp png_ptr, png_const_inforp info_ptr, png_uint_32 flag)); +PNG_EXPORT(110, png_uint_32, png_get_valid, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 flag)); /* Returns number of bytes needed to hold a transformed row. */ -PNG_EXPORT(111, size_t, png_get_rowbytes, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(111, size_t, png_get_rowbytes, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); #ifdef PNG_INFO_IMAGE_SUPPORTED /* Returns row_pointers, which is an array of pointers to scanlines that was * returned from png_read_png(). */ -PNG_EXPORT(112, png_bytepp, png_get_rows, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(112, png_bytepp, png_get_rows, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Set row_pointers, which is an array of pointers to scanlines for use * by png_write_png(). */ -PNG_EXPORT(113, void, png_set_rows, - (png_const_structrp png_ptr, png_inforp info_ptr, png_bytepp row_pointers)); +PNG_EXPORT(113, void, png_set_rows, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytepp row_pointers)); #endif /* Returns number of color channels in image. */ -PNG_EXPORT(114, png_byte, png_get_channels, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(114, png_byte, png_get_channels, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); #ifdef PNG_EASY_ACCESS_SUPPORTED /* Returns image width in pixels. */ -PNG_EXPORT(115, png_uint_32, png_get_image_width, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(115, png_uint_32, png_get_image_width, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Returns image height in pixels. */ -PNG_EXPORT(116, png_uint_32, png_get_image_height, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(116, png_uint_32, png_get_image_height, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Returns image bit_depth. */ -PNG_EXPORT(117, png_byte, png_get_bit_depth, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(117, png_byte, png_get_bit_depth, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Returns image color_type. */ -PNG_EXPORT(118, png_byte, png_get_color_type, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(118, png_byte, png_get_color_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Returns image filter_type. */ -PNG_EXPORT(119, png_byte, png_get_filter_type, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(119, png_byte, png_get_filter_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Returns image interlace_type. */ -PNG_EXPORT(120, png_byte, png_get_interlace_type, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(120, png_byte, png_get_interlace_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Returns image compression_type. */ -PNG_EXPORT(121, png_byte, png_get_compression_type, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(121, png_byte, png_get_compression_type, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); /* Returns image resolution in pixels per meter, from pHYs chunk data. */ PNG_EXPORT(122, png_uint_32, png_get_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(123, png_uint_32, png_get_x_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(124, png_uint_32, png_get_y_pixels_per_meter, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); /* Returns pixel aspect ratio, computed from pHYs chunk data. */ PNG_FP_EXPORT(125, float, png_get_pixel_aspect_ratio, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) + (png_const_structrp png_ptr, png_const_inforp info_ptr)) PNG_FIXED_EXPORT(210, png_fixed_point, png_get_pixel_aspect_ratio_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) + (png_const_structrp png_ptr, png_const_inforp info_ptr)) /* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ PNG_EXPORT(126, png_int_32, png_get_x_offset_pixels, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(127, png_int_32, png_get_y_offset_pixels, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(128, png_int_32, png_get_x_offset_microns, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(129, png_int_32, png_get_y_offset_microns, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); #endif /* EASY_ACCESS */ #ifdef PNG_READ_SUPPORTED /* Returns pointer to signature string read from PNG header */ -PNG_EXPORT(130, png_const_bytep, png_get_signature, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); +PNG_EXPORT(130, png_const_bytep, png_get_signature, (png_const_structrp png_ptr, + png_const_inforp info_ptr)); #endif #ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(131, png_uint_32, png_get_bKGD, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_color_16p *background)); +PNG_EXPORT(131, png_uint_32, png_get_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_16p *background)); #endif #ifdef PNG_bKGD_SUPPORTED -PNG_EXPORT(132, void, png_set_bKGD, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_color_16p background)); +PNG_EXPORT(132, void, png_set_bKGD, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_16p background)); #endif #ifdef PNG_cHRM_SUPPORTED -PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - double *white_x, double *white_y, - double *red_x, double *red_y, - double *green_x, double *green_y, - double *blue_x, double *blue_y)) -PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - double *red_X, double *red_Y, double *red_Z, - double *green_X, double *green_Y, double *green_Z, - double *blue_X, double *blue_Y, double *blue_Z)) +PNG_FP_EXPORT(133, png_uint_32, png_get_cHRM, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)) +PNG_FP_EXPORT(230, png_uint_32, png_get_cHRM_XYZ, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *red_X, double *red_Y, double *red_Z, + double *green_X, double *green_Y, double *green_Z, double *blue_X, + double *blue_Y, double *blue_Z)) PNG_FIXED_EXPORT(134, png_uint_32, png_get_cHRM_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, + (png_const_structrp png_ptr, png_const_inforp info_ptr, png_fixed_point *int_white_x, png_fixed_point *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point *int_blue_x, png_fixed_point *int_blue_y)) PNG_FIXED_EXPORT(231, png_uint_32, png_get_cHRM_XYZ_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, + (png_const_structrp png_ptr, png_const_inforp info_ptr, png_fixed_point *int_red_X, png_fixed_point *int_red_Y, - png_fixed_point *int_red_Z, - png_fixed_point *int_green_X, png_fixed_point *int_green_Y, - png_fixed_point *int_green_Z, + png_fixed_point *int_red_Z, png_fixed_point *int_green_X, + png_fixed_point *int_green_Y, png_fixed_point *int_green_Z, png_fixed_point *int_blue_X, png_fixed_point *int_blue_Y, png_fixed_point *int_blue_Z)) #endif #ifdef PNG_cHRM_SUPPORTED -PNG_FP_EXPORT(135, void, png_set_cHRM, - (png_const_structrp png_ptr, png_inforp info_ptr, - double white_x, double white_y, - double red_x, double red_y, - double green_x, double green_y, - double blue_x, double blue_y)) -PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, - (png_const_structrp png_ptr, png_inforp info_ptr, - double red_X, double red_Y, double red_Z, - double green_X, double green_Y, double green_Z, - double blue_X, double blue_Y, double blue_Z)) -PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point int_white_x, png_fixed_point int_white_y, - png_fixed_point int_red_x, png_fixed_point int_red_y, - png_fixed_point int_green_x, png_fixed_point int_green_y, - png_fixed_point int_blue_x, png_fixed_point int_blue_y)) -PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point int_red_X, png_fixed_point int_red_Y, - png_fixed_point int_red_Z, - png_fixed_point int_green_X, png_fixed_point int_green_Y, - png_fixed_point int_green_Z, +PNG_FP_EXPORT(135, void, png_set_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y)) +PNG_FP_EXPORT(232, void, png_set_cHRM_XYZ, (png_const_structrp png_ptr, + png_inforp info_ptr, double red_X, double red_Y, double red_Z, + double green_X, double green_Y, double green_Z, double blue_X, + double blue_Y, double blue_Z)) +PNG_FIXED_EXPORT(136, void, png_set_cHRM_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_white_x, + png_fixed_point int_white_y, png_fixed_point int_red_x, + png_fixed_point int_red_y, png_fixed_point int_green_x, + png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)) +PNG_FIXED_EXPORT(233, void, png_set_cHRM_XYZ_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_red_X, png_fixed_point int_red_Y, + png_fixed_point int_red_Z, png_fixed_point int_green_X, + png_fixed_point int_green_Y, png_fixed_point int_green_Z, png_fixed_point int_blue_X, png_fixed_point int_blue_Y, png_fixed_point int_blue_Z)) #endif #ifdef PNG_cICP_SUPPORTED -PNG_EXPORT(250, png_uint_32, png_get_cICP, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_bytep colour_primaries, png_bytep transfer_function, - png_bytep matrix_coefficients, png_bytep video_full_range_flag)); +PNG_EXPORT(250, png_uint_32, png_get_cICP, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_bytep colour_primaries, + png_bytep transfer_function, png_bytep matrix_coefficients, + png_bytep video_full_range_flag)); #endif #ifdef PNG_cICP_SUPPORTED -PNG_EXPORT(251, void, png_set_cICP, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_byte colour_primaries, png_byte transfer_function, - png_byte matrix_coefficients, png_byte video_full_range_flag)); +PNG_EXPORT(251, void, png_set_cICP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_byte colour_primaries, + png_byte transfer_function, png_byte matrix_coefficients, + png_byte video_full_range_flag)); #endif #ifdef PNG_cLLI_SUPPORTED -PNG_FP_EXPORT(252, png_uint_32, png_get_cLLI, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - double *maximum_content_light_level, - double *maximum_frame_average_light_level)) +PNG_FP_EXPORT(252, png_uint_32, png_get_cLLI, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *maximum_content_light_level, + double *maximum_frame_average_light_level)) PNG_FIXED_EXPORT(253, png_uint_32, png_get_cLLI_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, + (png_const_structrp png_ptr, png_const_inforp info_ptr, /* The values below are in cd/m2 (nits) and are scaled by 10,000; not * 100,000 as in the case of png_fixed_point. */ @@ -2133,12 +2035,11 @@ PNG_FIXED_EXPORT(253, png_uint_32, png_get_cLLI_fixed, #endif #ifdef PNG_cLLI_SUPPORTED -PNG_FP_EXPORT(254, void, png_set_cLLI, - (png_const_structrp png_ptr, png_inforp info_ptr, - double maximum_content_light_level, - double maximum_frame_average_light_level)) -PNG_FIXED_EXPORT(255, void, png_set_cLLI_fixed, - (png_const_structrp png_ptr, png_inforp info_ptr, +PNG_FP_EXPORT(254, void, png_set_cLLI, (png_const_structrp png_ptr, + png_inforp info_ptr, double maximum_content_light_level, + double maximum_frame_average_light_level)) +PNG_FIXED_EXPORT(255, void, png_set_cLLI_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, /* The values below are in cd/m2 (nits) and are scaled by 10,000; not * 100,000 as in the case of png_fixed_point. */ @@ -2147,73 +2048,64 @@ PNG_FIXED_EXPORT(255, void, png_set_cLLI_fixed, #endif #ifdef PNG_eXIf_SUPPORTED -PNG_EXPORT(246, png_uint_32, png_get_eXIf, - (png_const_structrp png_ptr, png_inforp info_ptr, png_bytep *exif)); -PNG_EXPORT(247, void, png_set_eXIf, - (png_const_structrp png_ptr, png_inforp info_ptr, png_bytep exif)); +PNG_EXPORT(246, png_uint_32, png_get_eXIf, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep *exif)); +PNG_EXPORT(247, void, png_set_eXIf, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep exif)); -PNG_EXPORT(248, png_uint_32, png_get_eXIf_1, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *num_exif, png_bytep *exif)); -PNG_EXPORT(249, void, png_set_eXIf_1, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 num_exif, png_bytep exif)); +PNG_EXPORT(248, png_uint_32, png_get_eXIf_1, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *num_exif, png_bytep *exif)); +PNG_EXPORT(249, void, png_set_eXIf_1, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 num_exif, png_bytep exif)); #endif #ifdef PNG_gAMA_SUPPORTED -PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - double *file_gamma)) +PNG_FP_EXPORT(137, png_uint_32, png_get_gAMA, (png_const_structrp png_ptr, + png_const_inforp info_ptr, double *file_gamma)) PNG_FIXED_EXPORT(138, png_uint_32, png_get_gAMA_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, + (png_const_structrp png_ptr, png_const_inforp info_ptr, png_fixed_point *int_file_gamma)) #endif #ifdef PNG_gAMA_SUPPORTED -PNG_FP_EXPORT(139, void, png_set_gAMA, - (png_const_structrp png_ptr, png_inforp info_ptr, - double file_gamma)) -PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_fixed_point int_file_gamma)) +PNG_FP_EXPORT(139, void, png_set_gAMA, (png_const_structrp png_ptr, + png_inforp info_ptr, double file_gamma)) +PNG_FIXED_EXPORT(140, void, png_set_gAMA_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, png_fixed_point int_file_gamma)) #endif #ifdef PNG_hIST_SUPPORTED -PNG_EXPORT(141, png_uint_32, png_get_hIST, - (png_const_structrp png_ptr, png_inforp info_ptr, png_uint_16p *hist)); -PNG_EXPORT(142, void, png_set_hIST, - (png_const_structrp png_ptr, png_inforp info_ptr, png_const_uint_16p hist)); +PNG_EXPORT(141, png_uint_32, png_get_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_16p *hist)); +PNG_EXPORT(142, void, png_set_hIST, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_uint_16p hist)); #endif -PNG_EXPORT(143, png_uint_32, png_get_IHDR, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *width, png_uint_32 *height, - int *bit_depth, int *color_type, - int *interlace_method, int *compression_method, int *filter_method)); +PNG_EXPORT(143, png_uint_32, png_get_IHDR, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *width, png_uint_32 *height, + int *bit_depth, int *color_type, int *interlace_method, + int *compression_method, int *filter_method)); -PNG_EXPORT(144, void, png_set_IHDR, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 width, png_uint_32 height, - int bit_depth, int color_type, - int interlace_method, int compression_method, int filter_method)); +PNG_EXPORT(144, void, png_set_IHDR, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_method, int compression_method, + int filter_method)); #ifdef PNG_mDCV_SUPPORTED -PNG_FP_EXPORT(256, png_uint_32, png_get_mDCV, - (png_const_structrp png_ptr, png_const_inforp info_ptr, +PNG_FP_EXPORT(256, png_uint_32, png_get_mDCV, (png_const_structrp png_ptr, + png_const_inforp info_ptr, /* The chromaticities of the mastering display. As cHRM, but independent of * the encoding endpoints in cHRM, or cICP, or iCCP. These values will * always be in the range 0 to 1.3107. */ - double *white_x, double *white_y, - double *red_x, double *red_y, - double *green_x, double *green_y, - double *blue_x, double *blue_y, + double *white_x, double *white_y, double *red_x, double *red_y, + double *green_x, double *green_y, double *blue_x, double *blue_y, /* Mastering display luminance in cd/m2 (nits). */ double *mastering_display_maximum_luminance, double *mastering_display_minimum_luminance)) PNG_FIXED_EXPORT(257, png_uint_32, png_get_mDCV_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, + (png_const_structrp png_ptr, png_const_inforp info_ptr, png_fixed_point *int_white_x, png_fixed_point *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, png_fixed_point *int_green_x, png_fixed_point *int_green_y, @@ -2226,21 +2118,19 @@ PNG_FIXED_EXPORT(257, png_uint_32, png_get_mDCV_fixed, #endif #ifdef PNG_mDCV_SUPPORTED -PNG_FP_EXPORT(258, void, png_set_mDCV, - (png_const_structrp png_ptr, png_inforp info_ptr, +PNG_FP_EXPORT(258, void, png_set_mDCV, (png_const_structrp png_ptr, + png_inforp info_ptr, /* The chromaticities of the mastering display. As cHRM, but independent of * the encoding endpoints in cHRM, or cICP, or iCCP. */ - double white_x, double white_y, - double red_x, double red_y, - double green_x, double green_y, - double blue_x, double blue_y, + double white_x, double white_y, double red_x, double red_y, double green_x, + double green_y, double blue_x, double blue_y, /* Mastering display luminance in cd/m2 (nits). */ double mastering_display_maximum_luminance, double mastering_display_minimum_luminance)) -PNG_FIXED_EXPORT(259, void, png_set_mDCV_fixed, - (png_const_structrp png_ptr, png_inforp info_ptr, +PNG_FIXED_EXPORT(259, void, png_set_mDCV_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, /* The admissible range of these values is not the full range of a PNG * fixed point value. Negative values cannot be encoded and the maximum * value is about 1.3 */ @@ -2256,152 +2146,134 @@ PNG_FIXED_EXPORT(259, void, png_set_mDCV_fixed, #endif #ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(145, png_uint_32, png_get_oFFs, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)); +PNG_EXPORT(145, png_uint_32, png_get_oFFs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, + int *unit_type)); #endif #ifdef PNG_oFFs_SUPPORTED -PNG_EXPORT(146, void, png_set_oFFs, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_int_32 offset_x, png_int_32 offset_y, int unit_type)); +PNG_EXPORT(146, void, png_set_oFFs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_int_32 offset_x, png_int_32 offset_y, + int unit_type)); #endif #ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(147, png_uint_32, png_get_pCAL, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_charp *purpose, png_int_32 *X0, png_int_32 *X1, - int *type, int *nparams, png_charp *units, png_charpp *params)); +PNG_EXPORT(147, png_uint_32, png_get_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charp *purpose, png_int_32 *X0, + png_int_32 *X1, int *type, int *nparams, png_charp *units, + png_charpp *params)); #endif #ifdef PNG_pCAL_SUPPORTED -PNG_EXPORT(148, void, png_set_pCAL, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_charp purpose, png_int_32 X0, png_int_32 X1, +PNG_EXPORT(148, void, png_set_pCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, png_const_charp units, png_charpp params)); #endif #ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(149, png_uint_32, png_get_pHYs, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +PNG_EXPORT(149, png_uint_32, png_get_pHYs, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); #endif #ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(150, void, png_set_pHYs, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +PNG_EXPORT(150, void, png_set_pHYs, (png_const_structrp png_ptr, + png_inforp info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); #endif -PNG_EXPORT(151, png_uint_32, png_get_PLTE, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_colorp *palette, int *num_palette)); +PNG_EXPORT(151, png_uint_32, png_get_PLTE, (png_const_structrp png_ptr, + png_inforp info_ptr, png_colorp *palette, int *num_palette)); -PNG_EXPORT(152, void, png_set_PLTE, - (png_structrp png_ptr, png_inforp info_ptr, - png_const_colorp palette, int num_palette)); +PNG_EXPORT(152, void, png_set_PLTE, (png_structrp png_ptr, + png_inforp info_ptr, png_const_colorp palette, int num_palette)); #ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(153, png_uint_32, png_get_sBIT, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_color_8p *sig_bit)); +PNG_EXPORT(153, png_uint_32, png_get_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_color_8p *sig_bit)); #endif #ifdef PNG_sBIT_SUPPORTED -PNG_EXPORT(154, void, png_set_sBIT, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_color_8p sig_bit)); +PNG_EXPORT(154, void, png_set_sBIT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_color_8p sig_bit)); #endif #ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(155, png_uint_32, png_get_sRGB, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - int *file_srgb_intent)); +PNG_EXPORT(155, png_uint_32, png_get_sRGB, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *file_srgb_intent)); #endif #ifdef PNG_sRGB_SUPPORTED -PNG_EXPORT(156, void, png_set_sRGB, - (png_const_structrp png_ptr, png_inforp info_ptr, int srgb_intent)); -PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, - (png_const_structrp png_ptr, png_inforp info_ptr, int srgb_intent)); +PNG_EXPORT(156, void, png_set_sRGB, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); +PNG_EXPORT(157, void, png_set_sRGB_gAMA_and_cHRM, (png_const_structrp png_ptr, + png_inforp info_ptr, int srgb_intent)); #endif #ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(158, png_uint_32, png_get_iCCP, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_charpp name, int *compression_type, +PNG_EXPORT(158, png_uint_32, png_get_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_charpp name, int *compression_type, png_bytepp profile, png_uint_32 *proflen)); #endif #ifdef PNG_iCCP_SUPPORTED -PNG_EXPORT(159, void, png_set_iCCP, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_charp name, int compression_type, +PNG_EXPORT(159, void, png_set_iCCP, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_charp name, int compression_type, png_const_bytep profile, png_uint_32 proflen)); #endif #ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(160, int, png_get_sPLT, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_sPLT_tpp entries)); +PNG_EXPORT(160, int, png_get_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_sPLT_tpp entries)); #endif #ifdef PNG_sPLT_SUPPORTED -PNG_EXPORT(161, void, png_set_sPLT, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_sPLT_tp entries, int nentries)); +PNG_EXPORT(161, void, png_set_sPLT, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_sPLT_tp entries, int nentries)); #endif #ifdef PNG_TEXT_SUPPORTED /* png_get_text also returns the number of text chunks in *num_text */ -PNG_EXPORT(162, int, png_get_text, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_textp *text_ptr, int *num_text)); +PNG_EXPORT(162, int, png_get_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_textp *text_ptr, int *num_text)); #endif /* Note while png_set_text() will accept a structure whose text, - * language, and translated keywords are NULL pointers, the structure + * language, and translated keywords are NULL pointers, the structure * returned by png_get_text will always contain regular * zero-terminated C strings. They might be empty strings but * they will never be NULL pointers. */ #ifdef PNG_TEXT_SUPPORTED -PNG_EXPORT(163, void, png_set_text, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_textp text_ptr, int num_text)); +PNG_EXPORT(163, void, png_set_text, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_textp text_ptr, int num_text)); #endif #ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(164, png_uint_32, png_get_tIME, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_timep *mod_time)); +PNG_EXPORT(164, png_uint_32, png_get_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_timep *mod_time)); #endif #ifdef PNG_tIME_SUPPORTED -PNG_EXPORT(165, void, png_set_tIME, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_timep mod_time)); +PNG_EXPORT(165, void, png_set_tIME, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_timep mod_time)); #endif #ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(166, png_uint_32, png_get_tRNS, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_bytep *trans_alpha, int *num_trans, +PNG_EXPORT(166, png_uint_32, png_get_tRNS, (png_const_structrp png_ptr, + png_inforp info_ptr, png_bytep *trans_alpha, int *num_trans, png_color_16p *trans_color)); #endif #ifdef PNG_tRNS_SUPPORTED -PNG_EXPORT(167, void, png_set_tRNS, - (png_structrp png_ptr, png_inforp info_ptr, - png_const_bytep trans_alpha, int num_trans, +PNG_EXPORT(167, void, png_set_tRNS, (png_structrp png_ptr, + png_inforp info_ptr, png_const_bytep trans_alpha, int num_trans, png_const_color_16p trans_color)); #endif #ifdef PNG_sCAL_SUPPORTED -PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, double *width, double *height)) +PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, (png_const_structrp png_ptr, + png_const_inforp info_ptr, int *unit, double *width, double *height)) #if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || \ defined(PNG_FLOATING_POINT_SUPPORTED) /* NOTE: this API is currently implemented using floating point arithmetic, @@ -2410,22 +2282,21 @@ PNG_FP_EXPORT(168, png_uint_32, png_get_sCAL, * is highly recommended that png_get_sCAL_s be used instead. */ PNG_FIXED_EXPORT(214, png_uint_32, png_get_sCAL_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, png_fixed_point *width, png_fixed_point *height)) + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_fixed_point *width, png_fixed_point *height)) #endif PNG_EXPORT(169, png_uint_32, png_get_sCAL_s, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - int *unit, png_charpp swidth, png_charpp sheight)); + (png_const_structrp png_ptr, png_const_inforp info_ptr, int *unit, + png_charpp swidth, png_charpp sheight)); -PNG_FP_EXPORT(170, void, png_set_sCAL, - (png_const_structrp png_ptr, png_inforp info_ptr, - int unit, double width, double height)) -PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, - (png_const_structrp png_ptr, png_inforp info_ptr, - int unit, png_fixed_point width, png_fixed_point height)) -PNG_EXPORT(171, void, png_set_sCAL_s, - (png_const_structrp png_ptr, png_inforp info_ptr, - int unit, png_const_charp swidth, png_const_charp sheight)); +PNG_FP_EXPORT(170, void, png_set_sCAL, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, double width, double height)) +PNG_FIXED_EXPORT(213, void, png_set_sCAL_fixed, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, png_fixed_point width, + png_fixed_point height)) +PNG_EXPORT(171, void, png_set_sCAL_s, (png_const_structrp png_ptr, + png_inforp info_ptr, int unit, + png_const_charp swidth, png_const_charp sheight)); #endif /* sCAL */ #ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED @@ -2528,8 +2399,7 @@ PNG_EXPORT(171, void, png_set_sCAL_s, * be processed by libpng. */ #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -PNG_EXPORT(172, void, png_set_keep_unknown_chunks, - (png_structrp png_ptr, +PNG_EXPORT(172, void, png_set_keep_unknown_chunks, (png_structrp png_ptr, int keep, png_const_bytep chunk_list, int num_chunks)); #endif /* HANDLE_AS_UNKNOWN */ @@ -2537,14 +2407,14 @@ PNG_EXPORT(172, void, png_set_keep_unknown_chunks, * the result is therefore true (non-zero) if special handling is required, * false for the default handling. */ -PNG_EXPORT(173, int, png_handle_as_unknown, - (png_const_structrp png_ptr, png_const_bytep chunk_name)); +PNG_EXPORT(173, int, png_handle_as_unknown, (png_const_structrp png_ptr, + png_const_bytep chunk_name)); #endif /* SET_UNKNOWN_CHUNKS */ #ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED -PNG_EXPORT(174, void, png_set_unknown_chunks, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_const_unknown_chunkp unknowns, int num_unknowns)); +PNG_EXPORT(174, void, png_set_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_const_unknown_chunkp unknowns, + int num_unknowns)); /* NOTE: prior to 1.6.0 this routine set the 'location' field of the added * unknowns to the location currently stored in the png_struct. This is * invariably the wrong value on write. To fix this call the following API @@ -2555,47 +2425,43 @@ PNG_EXPORT(174, void, png_set_unknown_chunks, */ PNG_EXPORT(175, void, png_set_unknown_chunk_location, - (png_const_structrp png_ptr, png_inforp info_ptr, - int chunk, int location)); + (png_const_structrp png_ptr, png_inforp info_ptr, int chunk, int location)); -PNG_EXPORT(176, int, png_get_unknown_chunks, - (png_const_structrp png_ptr, png_inforp info_ptr, - png_unknown_chunkpp entries)); +PNG_EXPORT(176, int, png_get_unknown_chunks, (png_const_structrp png_ptr, + png_inforp info_ptr, png_unknown_chunkpp entries)); #endif /* Png_free_data() will turn off the "valid" flag for anything it frees. * If you need to turn it off for a chunk that your application has freed, * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); */ -PNG_EXPORT(177, void, png_set_invalid, - (png_const_structrp png_ptr, png_inforp info_ptr, int mask)); +PNG_EXPORT(177, void, png_set_invalid, (png_const_structrp png_ptr, + png_inforp info_ptr, int mask)); #ifdef PNG_INFO_IMAGE_SUPPORTED /* The "params" pointer is currently not used and is for future expansion. */ #ifdef PNG_SEQUENTIAL_READ_SUPPORTED -PNG_EXPORT(178, void, png_read_png, - (png_structrp png_ptr, png_inforp info_ptr, +PNG_EXPORT(178, void, png_read_png, (png_structrp png_ptr, png_inforp info_ptr, int transforms, png_voidp params)); #endif #ifdef PNG_WRITE_SUPPORTED -PNG_EXPORT(179, void, png_write_png, - (png_structrp png_ptr, png_inforp info_ptr, +PNG_EXPORT(179, void, png_write_png, (png_structrp png_ptr, png_inforp info_ptr, int transforms, png_voidp params)); #endif #endif PNG_EXPORT(180, png_const_charp, png_get_copyright, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); PNG_EXPORT(181, png_const_charp, png_get_header_ver, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); PNG_EXPORT(182, png_const_charp, png_get_header_version, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); PNG_EXPORT(183, png_const_charp, png_get_libpng_ver, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); #ifdef PNG_MNG_FEATURES_SUPPORTED -PNG_EXPORT(184, png_uint_32, png_permit_mng_features, - (png_structrp png_ptr, png_uint_32 mng_features_permitted)); +PNG_EXPORT(184, png_uint_32, png_permit_mng_features, (png_structrp png_ptr, + png_uint_32 mng_features_permitted)); #endif /* For use in png_set_keep_unknown, added to version 1.2.6 */ @@ -2609,74 +2475,71 @@ PNG_EXPORT(184, png_uint_32, png_permit_mng_features, * messages before passing them to the error or warning handler. */ #ifdef PNG_ERROR_NUMBERS_SUPPORTED -PNG_EXPORT(185, void, png_set_strip_error_numbers, - (png_structrp png_ptr, png_uint_32 strip_mode)); +PNG_EXPORT(185, void, png_set_strip_error_numbers, (png_structrp png_ptr, + png_uint_32 strip_mode)); #endif /* Added in libpng-1.2.6 */ #ifdef PNG_SET_USER_LIMITS_SUPPORTED -PNG_EXPORT(186, void, png_set_user_limits, - (png_structrp png_ptr, +PNG_EXPORT(186, void, png_set_user_limits, (png_structrp png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max)); PNG_EXPORT(187, png_uint_32, png_get_user_width_max, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); PNG_EXPORT(188, png_uint_32, png_get_user_height_max, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); /* Added in libpng-1.4.0 */ -PNG_EXPORT(189, void, png_set_chunk_cache_max, - (png_structrp png_ptr, png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(189, void, png_set_chunk_cache_max, (png_structrp png_ptr, + png_uint_32 user_chunk_cache_max)); PNG_EXPORT(190, png_uint_32, png_get_chunk_cache_max, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); /* Added in libpng-1.4.1 */ -PNG_EXPORT(191, void, png_set_chunk_malloc_max, - (png_structrp png_ptr, png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(191, void, png_set_chunk_malloc_max, (png_structrp png_ptr, + png_alloc_size_t user_chunk_cache_max)); PNG_EXPORT(192, png_alloc_size_t, png_get_chunk_malloc_max, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); #endif #if defined(PNG_INCH_CONVERSIONS_SUPPORTED) PNG_EXPORT(193, png_uint_32, png_get_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(194, png_uint_32, png_get_x_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_EXPORT(195, png_uint_32, png_get_y_pixels_per_inch, - (png_const_structrp png_ptr, png_const_inforp info_ptr)); + (png_const_structrp png_ptr, png_const_inforp info_ptr)); PNG_FP_EXPORT(196, float, png_get_x_offset_inches, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) + (png_const_structrp png_ptr, png_const_inforp info_ptr)) #ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ PNG_FIXED_EXPORT(211, png_fixed_point, png_get_x_offset_inches_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) + (png_const_structrp png_ptr, png_const_inforp info_ptr)) #endif -PNG_FP_EXPORT(197, float, png_get_y_offset_inches, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) +PNG_FP_EXPORT(197, float, png_get_y_offset_inches, (png_const_structrp png_ptr, + png_const_inforp info_ptr)) #ifdef PNG_FIXED_POINT_SUPPORTED /* otherwise not implemented. */ PNG_FIXED_EXPORT(212, png_fixed_point, png_get_y_offset_inches_fixed, - (png_const_structrp png_ptr, png_const_inforp info_ptr)) + (png_const_structrp png_ptr, png_const_inforp info_ptr)) #endif # ifdef PNG_pHYs_SUPPORTED -PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, - (png_const_structrp png_ptr, png_const_inforp info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +PNG_EXPORT(198, png_uint_32, png_get_pHYs_dpi, (png_const_structrp png_ptr, + png_const_inforp info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, + int *unit_type)); # endif /* pHYs */ #endif /* INCH_CONVERSIONS */ /* Added in libpng-1.4.0 */ #ifdef PNG_IO_STATE_SUPPORTED -PNG_EXPORT(199, png_uint_32, png_get_io_state, - (png_const_structrp png_ptr)); +PNG_EXPORT(199, png_uint_32, png_get_io_state, (png_const_structrp png_ptr)); /* Removed from libpng 1.6; use png_get_io_chunk_type. */ -PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, - (png_structrp png_ptr), - PNG_DEPRECATED) +PNG_REMOVED(200, png_const_bytep, png_get_io_chunk_name, (png_structrp png_ptr), + PNG_DEPRECATED) PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, - (png_const_structrp png_ptr)); + (png_const_structrp png_ptr)); /* The flags returned by png_get_io_state() are the following: */ # define PNG_IO_NONE 0x0000 /* no I/O at this moment */ @@ -2801,26 +2664,21 @@ PNG_EXPORT(216, png_uint_32, png_get_io_chunk_type, #endif /* READ_COMPOSITE_NODIV */ #ifdef PNG_READ_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(201, png_uint_32, png_get_uint_32, - (png_const_bytep buf)); -PNG_EXPORT(202, png_uint_16, png_get_uint_16, - (png_const_bytep buf)); -PNG_EXPORT(203, png_int_32, png_get_int_32, - (png_const_bytep buf)); +PNG_EXPORT(201, png_uint_32, png_get_uint_32, (png_const_bytep buf)); +PNG_EXPORT(202, png_uint_16, png_get_uint_16, (png_const_bytep buf)); +PNG_EXPORT(203, png_int_32, png_get_int_32, (png_const_bytep buf)); #endif -PNG_EXPORT(204, png_uint_32, png_get_uint_31, - (png_const_structrp png_ptr, png_const_bytep buf)); +PNG_EXPORT(204, png_uint_32, png_get_uint_31, (png_const_structrp png_ptr, + png_const_bytep buf)); /* No png_get_int_16 -- may be added if there's a real need for it. */ /* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ #ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(205, void, png_save_uint_32, - (png_bytep buf, png_uint_32 i)); +PNG_EXPORT(205, void, png_save_uint_32, (png_bytep buf, png_uint_32 i)); #endif #ifdef PNG_SAVE_INT_32_SUPPORTED -PNG_EXPORT(206, void, png_save_int_32, - (png_bytep buf, png_int_32 i)); +PNG_EXPORT(206, void, png_save_int_32, (png_bytep buf, png_int_32 i)); #endif /* Place a 16-bit number into a buffer in PNG byte order. @@ -2828,8 +2686,7 @@ PNG_EXPORT(206, void, png_save_int_32, * just to avoid potential problems on pre-ANSI C compilers. */ #ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED -PNG_EXPORT(207, void, png_save_uint_16, - (png_bytep buf, unsigned int i)); +PNG_EXPORT(207, void, png_save_uint_16, (png_bytep buf, unsigned int i)); /* No png_save_int_16 -- may be added if there's a real need for it. */ #endif @@ -2876,10 +2733,10 @@ PNG_EXPORT(207, void, png_save_uint_16, #ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED PNG_EXPORT(242, void, png_set_check_for_invalid_index, - (png_structrp png_ptr, int allowed)); + (png_structrp png_ptr, int allowed)); # ifdef PNG_GET_PALETTE_MAX_SUPPORTED -PNG_EXPORT(243, int, png_get_palette_max, - (png_const_structp png_ptr, png_const_infop info_ptr)); +PNG_EXPORT(243, int, png_get_palette_max, (png_const_structp png_ptr, + png_const_infop info_ptr)); # endif #endif /* CHECK_FOR_INVALID_INDEX */ @@ -3243,25 +3100,24 @@ typedef struct * the png_controlp field 'opaque' to NULL (or, safer, memset the whole thing.) */ #ifdef PNG_STDIO_SUPPORTED -PNG_EXPORT(234, int, png_image_begin_read_from_file, - (png_imagep image, const char *file_name)); +PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image, + const char *file_name)); /* The named file is opened for read and the image header is filled in * from the PNG header in the file. */ -PNG_EXPORT(235, int, png_image_begin_read_from_stdio, - (png_imagep image, FILE *file)); +PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image, + FILE* file)); /* The PNG header is read from the stdio FILE object. */ #endif /* STDIO */ -PNG_EXPORT(236, int, png_image_begin_read_from_memory, - (png_imagep image, png_const_voidp memory, size_t size)); +PNG_EXPORT(236, int, png_image_begin_read_from_memory, (png_imagep image, + png_const_voidp memory, size_t size)); /* The PNG header is read from the given memory buffer. */ -PNG_EXPORT(237, int, png_image_finish_read, - (png_imagep image, - png_const_colorp background, void *buffer, png_int_32 row_stride, - void *colormap)); +PNG_EXPORT(237, int, png_image_finish_read, (png_imagep image, + png_const_colorp background, void *buffer, png_int_32 row_stride, + void *colormap)); /* Finish reading the image into the supplied buffer and clean up the * png_image structure. * @@ -3294,8 +3150,7 @@ PNG_EXPORT(237, int, png_image_finish_read, * written to the colormap; this may be less than the original value. */ -PNG_EXPORT(238, void, png_image_free, - (png_imagep image)); +PNG_EXPORT(238, void, png_image_free, (png_imagep image)); /* Free any data allocated by libpng in image->opaque, setting the pointer to * NULL. May be called at any time after the structure is initialized. */ @@ -3319,17 +3174,15 @@ PNG_EXPORT(238, void, png_image_free, * colormap_entries: set to the number of entries in the color-map (0 to 256) */ #ifdef PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED -PNG_EXPORT(239, int, png_image_write_to_file, - (png_imagep image, - const char *file, int convert_to_8bit, const void *buffer, - png_int_32 row_stride, const void *colormap)); +PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image, + const char *file, int convert_to_8bit, const void *buffer, + png_int_32 row_stride, const void *colormap)); /* Write the image to the named file. */ -PNG_EXPORT(240, int, png_image_write_to_stdio, - (png_imagep image, - FILE *file, int convert_to_8_bit, const void *buffer, - png_int_32 row_stride, const void *colormap)); - /* Write the image to the given FILE object. */ +PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file, + int convert_to_8_bit, const void *buffer, png_int_32 row_stride, + const void *colormap)); + /* Write the image to the given (FILE*). */ #endif /* SIMPLIFIED_WRITE_STDIO */ /* With all write APIs if image is in one of the linear formats with 16-bit @@ -3353,11 +3206,9 @@ PNG_EXPORT(240, int, png_image_write_to_stdio, * notices) you need to use one of the other APIs. */ -PNG_EXPORT(245, int, png_image_write_to_memory, - (png_imagep image, - void *memory, png_alloc_size_t * PNG_RESTRICT memory_bytes, - int convert_to_8_bit, - const void *buffer, png_int_32 row_stride, const void *colormap)); +PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory, + png_alloc_size_t * PNG_RESTRICT memory_bytes, int convert_to_8_bit, + const void *buffer, png_int_32 row_stride, const void *colormap)); /* Write the image to the given memory buffer. The function both writes the * whole PNG data stream to *memory and updates *memory_bytes with the count * of bytes written. @@ -3471,45 +3322,26 @@ PNG_EXPORT(245, int, png_image_write_to_memory, * selected at run time. */ #ifdef PNG_SET_OPTION_SUPPORTED - -/* HARDWARE: ARM Neon SIMD instructions supported */ #ifdef PNG_ARM_NEON_API_SUPPORTED -# define PNG_ARM_NEON 0 +# define PNG_ARM_NEON 0 /* HARDWARE: ARM Neon SIMD instructions supported */ #endif - -/* SOFTWARE: Force maximum window */ -#define PNG_MAXIMUM_INFLATE_WINDOW 2 - -/* SOFTWARE: Check ICC profile for sRGB */ -#define PNG_SKIP_sRGB_CHECK_PROFILE 4 - -/* HARDWARE: MIPS MSA SIMD instructions supported */ +#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */ +#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */ #ifdef PNG_MIPS_MSA_API_SUPPORTED -# define PNG_MIPS_MSA 6 +# define PNG_MIPS_MSA 6 /* HARDWARE: MIPS Msa SIMD instructions supported */ #endif - -/* SOFTWARE: Disable Adler32 check on IDAT */ #ifdef PNG_DISABLE_ADLER32_CHECK_SUPPORTED -# define PNG_IGNORE_ADLER32 8 +# define PNG_IGNORE_ADLER32 8 /* SOFTWARE: disable Adler32 check on IDAT */ #endif - -/* HARDWARE: PowerPC VSX SIMD instructions supported */ #ifdef PNG_POWERPC_VSX_API_SUPPORTED -# define PNG_POWERPC_VSX 10 +# define PNG_POWERPC_VSX 10 /* HARDWARE: PowerPC VSX SIMD instructions + * supported */ #endif - -/* HARDWARE: MIPS MMI SIMD instructions supported */ #ifdef PNG_MIPS_MMI_API_SUPPORTED -# define PNG_MIPS_MMI 12 +# define PNG_MIPS_MMI 12 /* HARDWARE: MIPS MMI SIMD instructions supported */ #endif -/* HARDWARE: RISC-V RVV SIMD instructions supported */ -#ifdef PNG_RISCV_RVV_API_SUPPORTED -# define PNG_RISCV_RVV 14 -#endif - -/* Next option - numbers must be even */ -#define PNG_OPTION_NEXT 16 +#define PNG_OPTION_NEXT 14 /* Next option - numbers must be even */ /* Return values: NOTE: there are four values and 'off' is *not* zero */ #define PNG_OPTION_UNSET 0 /* Unset - defaults to off */ @@ -3605,7 +3437,7 @@ PNG_EXPORT(279, void, png_write_frame_tail, (png_structp png_ptr, #ifdef PNG_APNG_SUPPORTED PNG_EXPORT_LAST_ORDINAL(279); #else - PNG_EXPORT_LAST_ORDINAL(259); + PNG_EXPORT_LAST_ORDINAL(259); #endif /* APNG */ #endif diff --git a/icecat/media/libpng/pngconf.h b/icecat/media/libpng/pngconf.h index 3eda9d047b..42fa973c20 100644 --- a/icecat/media/libpng/pngconf.h +++ b/icecat/media/libpng/pngconf.h @@ -1,8 +1,8 @@ /* pngconf.h - machine-configurable file for libpng * - * libpng version 1.6.58 + * libpng version 1.6.47 * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -219,13 +219,25 @@ /* NOTE: PNGCBAPI always defaults to PNGCAPI. */ # if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD) -# error PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed +# error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed" # endif -# define PNG_DLL_EXPORT __declspec(dllexport) -# ifndef PNG_DLL_IMPORT -# define PNG_DLL_IMPORT __declspec(dllimport) -# endif +# if (defined(_MSC_VER) && _MSC_VER < 800) ||\ + (defined(__BORLANDC__) && __BORLANDC__ < 0x500) + /* older Borland and MSC + * compilers used '__export' and required this to be after + * the type. + */ +# ifndef PNG_EXPORT_TYPE +# define PNG_EXPORT_TYPE(type) type PNG_IMPEXP +# endif +# define PNG_DLL_EXPORT __export +# else /* newer compiler */ +# define PNG_DLL_EXPORT __declspec(dllexport) +# ifndef PNG_DLL_IMPORT +# define PNG_DLL_IMPORT __declspec(dllimport) +# endif +# endif /* compiler */ #else /* !Windows */ # if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) @@ -467,7 +479,7 @@ #if CHAR_BIT == 8 && UCHAR_MAX == 255 typedef unsigned char png_byte; #else -# error libpng requires 8-bit bytes +# error "libpng requires 8-bit bytes" #endif #if INT_MIN == -32768 && INT_MAX == 32767 @@ -475,7 +487,7 @@ #elif SHRT_MIN == -32768 && SHRT_MAX == 32767 typedef short png_int_16; #else -# error libpng requires a signed 16-bit integer type +# error "libpng requires a signed 16-bit type" #endif #if UINT_MAX == 65535 @@ -483,7 +495,7 @@ #elif USHRT_MAX == 65535 typedef unsigned short png_uint_16; #else -# error libpng requires an unsigned 16-bit integer type +# error "libpng requires an unsigned 16-bit type" #endif #if INT_MIN < -2147483646 && INT_MAX > 2147483646 @@ -491,7 +503,7 @@ #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646 typedef long int png_int_32; #else -# error libpng requires a signed 32-bit (or longer) integer type +# error "libpng requires a signed 32-bit (or more) type" #endif #if UINT_MAX > 4294967294U @@ -499,7 +511,7 @@ #elif ULONG_MAX > 4294967294U typedef unsigned long int png_uint_32; #else -# error libpng requires an unsigned 32-bit (or longer) integer type +# error "libpng requires an unsigned 32-bit (or more) type" #endif /* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t. @@ -580,6 +592,10 @@ typedef const png_fixed_point * png_const_fixed_point_p; typedef size_t * png_size_tp; typedef const size_t * png_const_size_tp; +#ifdef PNG_STDIO_SUPPORTED +typedef FILE * png_FILE_p; +#endif + #ifdef PNG_FLOATING_POINT_SUPPORTED typedef double * png_doublep; typedef const double * png_const_doublep; @@ -601,15 +617,6 @@ typedef double * * png_doublepp; /* Pointers to pointers to pointers; i.e., pointer to array */ typedef char * * * png_charppp; -#ifdef PNG_STDIO_SUPPORTED -/* With PNG_STDIO_SUPPORTED it was possible to use I/O streams that were - * not necessarily stdio FILE streams, to allow building Windows applications - * before Win32 and Windows CE applications before WinCE 3.0, but that kind - * of support has long been discontinued. - */ -typedef FILE * png_FILE_p; /* [Deprecated] */ -#endif - #endif /* PNG_BUILDING_SYMBOL_TABLE */ #endif /* PNGCONF_H */ diff --git a/icecat/media/libpng/pngdebug.h b/icecat/media/libpng/pngdebug.h index 0337918aec..ab9ea632d9 100644 --- a/icecat/media/libpng/pngdebug.h +++ b/icecat/media/libpng/pngdebug.h @@ -1,6 +1,6 @@ -/* pngdebug.h - internal debugging macros for libpng +/* pngdebug.h - Debugging macros for libpng, also used in pngtest.c * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -10,10 +10,6 @@ * and license in png.h */ -#ifndef PNGPRIV_H -# error This file must not be included by applications; please include -#endif - /* Define PNG_DEBUG at compile time for debugging information. Higher * numbers for PNG_DEBUG mean more debugging information. This has * only been added since version 0.95 so it is not implemented throughout @@ -38,6 +34,9 @@ #define PNGDEBUG_H /* These settings control the formatting of messages in png.c and pngerror.c */ /* Moved to pngdebug.h at 1.5.0 */ +# ifndef PNG_LITERAL_SHARP +# define PNG_LITERAL_SHARP 0x23 +# endif # ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET # define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b # endif diff --git a/icecat/media/libpng/pngerror.c b/icecat/media/libpng/pngerror.c index 72dc20ea87..275b188d04 100644 --- a/icecat/media/libpng/pngerror.c +++ b/icecat/media/libpng/pngerror.c @@ -1,6 +1,6 @@ /* pngerror.c - stub functions for i/o and memory allocation * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -39,6 +39,46 @@ PNG_FUNCTION(void,PNGAPI png_error,(png_const_structrp png_ptr, png_const_charp error_message), PNG_NORETURN) { +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + char msg[16]; + if (png_ptr != NULL) + { + if ((png_ptr->flags & + (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) != 0) + { + if (*error_message == PNG_LITERAL_SHARP) + { + /* Strip "#nnnn " from beginning of error message. */ + int offset; + for (offset = 1; offset<15; offset++) + if (error_message[offset] == ' ') + break; + + if ((png_ptr->flags & PNG_FLAG_STRIP_ERROR_TEXT) != 0) + { + int i; + for (i = 0; i < offset - 1; i++) + msg[i] = error_message[i + 1]; + msg[i - 1] = '\0'; + error_message = msg; + } + + else + error_message += offset; + } + + else + { + if ((png_ptr->flags & PNG_FLAG_STRIP_ERROR_TEXT) != 0) + { + msg[0] = '0'; + msg[1] = '\0'; + error_message = msg; + } + } + } + } +#endif if (png_ptr != NULL && png_ptr->error_fn != NULL) (*(png_ptr->error_fn))(png_constcast(png_structrp,png_ptr), error_message); @@ -49,8 +89,7 @@ png_error,(png_const_structrp png_ptr, png_const_charp error_message), } #else PNG_FUNCTION(void,PNGAPI -png_err,(png_const_structrp png_ptr), - PNG_NORETURN) +png_err,(png_const_structrp png_ptr),PNG_NORETURN) { /* Prior to 1.5.2 the error_fn received a NULL pointer, expressed * erroneously as '\0', instead of the empty string "". This was @@ -177,6 +216,21 @@ void PNGAPI png_warning(png_const_structrp png_ptr, png_const_charp warning_message) { int offset = 0; + if (png_ptr != NULL) + { +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + if ((png_ptr->flags & + (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) != 0) +#endif + { + if (*warning_message == PNG_LITERAL_SHARP) + { + for (offset = 1; offset < 15; offset++) + if (warning_message[offset] == ' ') + break; + } + } + } if (png_ptr != NULL && png_ptr->warning_fn != NULL) (*(png_ptr->warning_fn))(png_constcast(png_structrp,png_ptr), warning_message + offset); @@ -377,8 +431,8 @@ static const char png_digit[16] = { }; static void /* PRIVATE */ -png_format_buffer(png_const_structrp png_ptr, png_charp buffer, - png_const_charp error_message) +png_format_buffer(png_const_structrp png_ptr, png_charp buffer, png_const_charp + error_message) { png_uint_32 chunk_name = png_ptr->chunk_name; int iout = 0, ishift = 24; @@ -457,8 +511,8 @@ png_chunk_warning(png_const_structrp png_ptr, png_const_charp warning_message) #ifdef PNG_READ_SUPPORTED #ifdef PNG_BENIGN_ERRORS_SUPPORTED void PNGAPI -png_chunk_benign_error(png_const_structrp png_ptr, - png_const_charp error_message) +png_chunk_benign_error(png_const_structrp png_ptr, png_const_charp + error_message) { if ((png_ptr->flags & PNG_FLAG_BENIGN_ERRORS_WARN) != 0) png_chunk_warning(png_ptr, error_message); @@ -515,8 +569,7 @@ png_chunk_report(png_const_structrp png_ptr, png_const_charp message, int error) #ifdef PNG_ERROR_TEXT_SUPPORTED #ifdef PNG_FLOATING_POINT_SUPPORTED PNG_FUNCTION(void, -png_fixed_error,(png_const_structrp png_ptr, png_const_charp name), - PNG_NORETURN) +png_fixed_error,(png_const_structrp png_ptr, png_const_charp name),PNG_NORETURN) { # define fixed_message "fixed point overflow in " # define fixed_message_ln ((sizeof fixed_message)-1) @@ -659,9 +712,42 @@ png_default_error,(png_const_structrp png_ptr, png_const_charp error_message), PNG_NORETURN) { #ifdef PNG_CONSOLE_IO_SUPPORTED - fprintf(stderr, "libpng error: %s", error_message ? error_message : - "undefined"); - fprintf(stderr, PNG_STRING_NEWLINE); +#ifdef PNG_ERROR_NUMBERS_SUPPORTED + /* Check on NULL only added in 1.5.4 */ + if (error_message != NULL && *error_message == PNG_LITERAL_SHARP) + { + /* Strip "#nnnn " from beginning of error message. */ + int offset; + char error_number[16]; + for (offset = 0; offset<15; offset++) + { + error_number[offset] = error_message[offset + 1]; + if (error_message[offset] == ' ') + break; + } + + if ((offset > 1) && (offset < 15)) + { + error_number[offset - 1] = '\0'; + fprintf(stderr, "libpng error no. %s: %s", + error_number, error_message + offset + 1); + fprintf(stderr, PNG_STRING_NEWLINE); + } + + else + { + fprintf(stderr, "libpng error: %s, offset=%d", + error_message, offset); + fprintf(stderr, PNG_STRING_NEWLINE); + } + } + else +#endif + { + fprintf(stderr, "libpng error: %s", error_message ? error_message : + "undefined"); + fprintf(stderr, PNG_STRING_NEWLINE); + } #else PNG_UNUSED(error_message) /* Make compiler happy */ #endif @@ -669,8 +755,7 @@ png_default_error,(png_const_structrp png_ptr, png_const_charp error_message), } PNG_FUNCTION(void,PNGAPI -png_longjmp,(png_const_structrp png_ptr, int val), - PNG_NORETURN) +png_longjmp,(png_const_structrp png_ptr, int val),PNG_NORETURN) { #ifdef PNG_SETJMP_SUPPORTED if (png_ptr != NULL && png_ptr->longjmp_fn != NULL && @@ -700,8 +785,40 @@ static void /* PRIVATE */ png_default_warning(png_const_structrp png_ptr, png_const_charp warning_message) { #ifdef PNG_CONSOLE_IO_SUPPORTED - fprintf(stderr, "libpng warning: %s", warning_message); - fprintf(stderr, PNG_STRING_NEWLINE); +# ifdef PNG_ERROR_NUMBERS_SUPPORTED + if (*warning_message == PNG_LITERAL_SHARP) + { + int offset; + char warning_number[16]; + for (offset = 0; offset < 15; offset++) + { + warning_number[offset] = warning_message[offset + 1]; + if (warning_message[offset] == ' ') + break; + } + + if ((offset > 1) && (offset < 15)) + { + warning_number[offset + 1] = '\0'; + fprintf(stderr, "libpng warning no. %s: %s", + warning_number, warning_message + offset); + fprintf(stderr, PNG_STRING_NEWLINE); + } + + else + { + fprintf(stderr, "libpng warning: %s", + warning_message); + fprintf(stderr, PNG_STRING_NEWLINE); + } + } + else +# endif + + { + fprintf(stderr, "libpng warning: %s", warning_message); + fprintf(stderr, PNG_STRING_NEWLINE); + } #else PNG_UNUSED(warning_message) /* Make compiler happy */ #endif @@ -749,8 +866,12 @@ png_get_error_ptr(png_const_structrp png_ptr) void PNGAPI png_set_strip_error_numbers(png_structrp png_ptr, png_uint_32 strip_mode) { - PNG_UNUSED(png_ptr) - PNG_UNUSED(strip_mode) + if (png_ptr != NULL) + { + png_ptr->flags &= + ((~(PNG_FLAG_STRIP_ERROR_NUMBERS | + PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode); + } } #endif diff --git a/icecat/media/libpng/pngget.c b/icecat/media/libpng/pngget.c index 9288f94b05..fcdb6c8632 100644 --- a/icecat/media/libpng/pngget.c +++ b/icecat/media/libpng/pngget.c @@ -1,6 +1,6 @@ /* pngget.c - retrieval of values from info struct * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -122,8 +122,8 @@ png_get_compression_type(png_const_structrp png_ptr, png_const_inforp info_ptr) } png_uint_32 PNGAPI -png_get_x_pixels_per_meter(png_const_structrp png_ptr, - png_const_inforp info_ptr) +png_get_x_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp + info_ptr) { #ifdef PNG_pHYs_SUPPORTED png_debug(1, "in png_get_x_pixels_per_meter"); @@ -143,8 +143,8 @@ png_get_x_pixels_per_meter(png_const_structrp png_ptr, } png_uint_32 PNGAPI -png_get_y_pixels_per_meter(png_const_structrp png_ptr, - png_const_inforp info_ptr) +png_get_y_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp + info_ptr) { #ifdef PNG_pHYs_SUPPORTED png_debug(1, "in png_get_y_pixels_per_meter"); @@ -186,8 +186,8 @@ png_get_pixels_per_meter(png_const_structrp png_ptr, png_const_inforp info_ptr) #ifdef PNG_FLOATING_POINT_SUPPORTED float PNGAPI -png_get_pixel_aspect_ratio(png_const_structrp png_ptr, - png_const_inforp info_ptr) +png_get_pixel_aspect_ratio(png_const_structrp png_ptr, png_const_inforp + info_ptr) { #ifdef PNG_READ_pHYs_SUPPORTED png_debug(1, "in png_get_pixel_aspect_ratio"); @@ -737,6 +737,7 @@ png_get_iCCP(png_const_structrp png_ptr, png_inforp info_ptr, } return 0; + } #endif diff --git a/icecat/media/libpng/pnginfo.h b/icecat/media/libpng/pnginfo.h index f2e705417b..07c68b8b0b 100644 --- a/icecat/media/libpng/pnginfo.h +++ b/icecat/media/libpng/pnginfo.h @@ -1,6 +1,6 @@ -/* pnginfo.h - internal structures for libpng +/* pnginfo.h - header file for PNG reference library * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2013,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -10,20 +10,43 @@ * and license in png.h */ -#ifndef PNGPRIV_H -# error This file must not be included by applications; please include -#endif - -/* INTERNAL, PRIVATE definition of a PNG. + /* png_info is a structure that holds the information in a PNG file so + * that the application can find out the characteristics of the image. + * If you are reading the file, this structure will tell you what is + * in the PNG file. If you are writing the file, fill in the information + * you want to put into the PNG file, using png_set_*() functions, then + * call png_write_info(). * - * png_info is a modifiable description of a PNG datastream. The fields inside - * this structure are accessed through png_get_() functions and modified - * using png_set_() functions. + * The names chosen should be very close to the PNG specification, so + * consult that document for information about the meaning of each field. * - * Some functions in libpng do directly access members of png_info. However, - * this should be avoided. png_struct objects contain members which hold - * caches, sometimes optimised, of the values from png_info objects, and - * png_info is not passed to the functions which read and write image data. + * With libpng < 0.95, it was only possible to directly set and read the + * the values in the png_info_struct, which meant that the contents and + * order of the values had to remain fixed. With libpng 0.95 and later, + * however, there are now functions that abstract the contents of + * png_info_struct from the application, so this makes it easier to use + * libpng with dynamic libraries, and even makes it possible to use + * libraries that don't have all of the libpng ancillary chunk-handing + * functionality. In libpng-1.5.0 this was moved into a separate private + * file that is not visible to applications. + * + * The following members may have allocated storage attached that should be + * cleaned up before the structure is discarded: palette, trans, text, + * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, + * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these + * are automatically freed when the info structure is deallocated, if they were + * allocated internally by libpng. This behavior can be changed by means + * of the png_data_freer() function. + * + * More allocation details: all the chunk-reading functions that + * change these members go through the corresponding png_set_* + * functions. A function to clear these members is available: see + * png_free_data(). The png_set_* functions do not depend on being + * able to point info structure members to any of the storage they are + * passed (they make their own copies), EXCEPT that the png_set_text + * functions use the same storage passed to them in the text_ptr or + * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns + * functions do not make their own copies. */ #ifndef PNGINFO_H #define PNGINFO_H diff --git a/icecat/media/libpng/pngmem.c b/icecat/media/libpng/pngmem.c index b7adff82f5..90c13b1068 100644 --- a/icecat/media/libpng/pngmem.c +++ b/icecat/media/libpng/pngmem.c @@ -1,6 +1,6 @@ /* pngmem.c - stub functions for memory allocation * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -46,8 +46,7 @@ png_destroy_png_struct(png_structrp png_ptr) * have the ability to do that. */ PNG_FUNCTION(png_voidp,PNGAPI -png_calloc,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED) +png_calloc,(png_const_structrp png_ptr, png_alloc_size_t size),PNG_ALLOCATED) { png_voidp ret; @@ -119,8 +118,7 @@ png_malloc_array_checked(png_const_structrp png_ptr, int nelements, PNG_FUNCTION(png_voidp /* PRIVATE */, png_malloc_array,(png_const_structrp png_ptr, int nelements, - size_t element_size), - PNG_ALLOCATED) + size_t element_size),PNG_ALLOCATED) { if (nelements <= 0 || element_size == 0) png_error(png_ptr, "internal error: array alloc"); @@ -130,8 +128,7 @@ png_malloc_array,(png_const_structrp png_ptr, int nelements, PNG_FUNCTION(png_voidp /* PRIVATE */, png_realloc_array,(png_const_structrp png_ptr, png_const_voidp old_array, - int old_elements, int add_elements, size_t element_size), - PNG_ALLOCATED) + int old_elements, int add_elements, size_t element_size),PNG_ALLOCATED) { /* These are internal errors: */ if (add_elements <= 0 || element_size == 0 || old_elements < 0 || @@ -170,8 +167,7 @@ png_realloc_array,(png_const_structrp png_ptr, png_const_voidp old_array, * function png_malloc_default is also provided. */ PNG_FUNCTION(png_voidp,PNGAPI -png_malloc,(png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED) +png_malloc,(png_const_structrp png_ptr, png_alloc_size_t size),PNG_ALLOCATED) { png_voidp ret; @@ -245,8 +241,7 @@ png_free(png_const_structrp png_ptr, png_voidp ptr) } PNG_FUNCTION(void,PNGAPI -png_free_default,(png_const_structrp png_ptr, png_voidp ptr), - PNG_DEPRECATED) +png_free_default,(png_const_structrp png_ptr, png_voidp ptr),PNG_DEPRECATED) { if (png_ptr == NULL || ptr == NULL) return; @@ -260,8 +255,8 @@ png_free_default,(png_const_structrp png_ptr, png_voidp ptr), * of allocating and freeing memory. */ void PNGAPI -png_set_mem_fn(png_structrp png_ptr, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn) +png_set_mem_fn(png_structrp png_ptr, png_voidp mem_ptr, png_malloc_ptr + malloc_fn, png_free_ptr free_fn) { if (png_ptr != NULL) { diff --git a/icecat/media/libpng/pngpread.c b/icecat/media/libpng/pngpread.c index e0fb81d047..fd3ac1de72 100644 --- a/icecat/media/libpng/pngpread.c +++ b/icecat/media/libpng/pngpread.c @@ -1,6 +1,6 @@ /* pngpread.c - read a png file in push mode * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -312,14 +312,6 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) png_benign_error(png_ptr, "Too many IDATs found"); } - else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) - { - /* These flags must be set consistently for all non-IDAT chunks, - * including the unknown chunks. - */ - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT | PNG_AFTER_IDAT; - } - if (chunk_name == png_IHDR) { if (png_ptr->push_length != 13) diff --git a/icecat/media/libpng/pngpriv.h b/icecat/media/libpng/pngpriv.h index 0c3ece1e9e..eec7d6b83e 100644 --- a/icecat/media/libpng/pngpriv.h +++ b/icecat/media/libpng/pngpriv.h @@ -1,6 +1,6 @@ /* pngpriv.h - private declarations for use inside libpng * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -19,20 +19,8 @@ * they should be well aware of the issues that may arise from doing so. */ - -/* pngpriv.h must be included first in each translation unit inside libpng. - * On the other hand, it must not be included at all, directly or indirectly, - * by any application code that uses the libpng API. - */ #ifndef PNGPRIV_H -# define PNGPRIV_H -#else -# error Duplicate inclusion of pngpriv.h; please check the libpng source files -#endif - -#if defined(PNG_H) || defined(PNGCONF_H) || defined(PNGLCONF_H) -# error This file must not be included by applications; please include -#endif +#define PNGPRIV_H /* Feature Test Macros. The following are defined here to ensure that correctly * implemented libraries reveal the APIs libpng needs to build and hide those @@ -69,6 +57,7 @@ */ #if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H) # include + /* Pick up the definition of 'restrict' from config.h if it was read: */ # define PNG_RESTRICT restrict #endif @@ -78,7 +67,9 @@ * are not internal definitions may be required. This is handled below just * before png.h is included, but load the configuration now if it is available. */ -#include "pnglibconf.h" +#ifndef PNGLCONF_H +# include "pnglibconf.h" +#endif /* Local renames may change non-exported API functions from png.h */ #if defined(PNG_PREFIX) && !defined(PNGPREFIX_H) @@ -143,20 +134,6 @@ # endif #endif -#ifndef PNG_RISCV_RVV_OPT - /* RISCV_RVV optimizations are being controlled by the compiler settings, - * typically the target compiler will define __riscv but the rvv extension - * availability has to be explicitly stated. This is why if no - * PNG_RISCV_RVV_OPT was defined then a runtime check will be executed. - * - * To enable RISCV_RVV optimizations unconditionally, and compile the - * associated code, pass --enable-riscv-rvv=yes or --enable-riscv-rvv=on - * to configure or put -DPNG_RISCV_RVV_OPT=2 in CPPFLAGS. - */ - -# define PNG_RISCV_RVV_OPT 0 -#endif - #if PNG_ARM_NEON_OPT > 0 /* NEON optimizations are to be at least considered by libpng, so enable the * callbacks to do this. @@ -302,16 +279,6 @@ # define PNG_LOONGARCH_LSX_IMPLEMENTATION 0 #endif -#if PNG_RISCV_RVV_OPT > 0 && __riscv_v >= 1000000 -# define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_rvv -# ifndef PNG_RISCV_RVV_IMPLEMENTATION - /* Use the intrinsics code by default. */ -# define PNG_RISCV_RVV_IMPLEMENTATION 1 -# endif -#else -# define PNG_RISCV_RVV_IMPLEMENTATION 0 -#endif /* PNG_RISCV_RVV_OPT > 0 && __riscv_v >= 1000000 */ - /* Is this a build of a DLL where compilation of the object modules requires * different preprocessor settings to those required for a simple library? If * so PNG_BUILD_DLL must be set. @@ -714,7 +681,7 @@ /* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS 0x8000U */ /* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS 0x10000U */ #define PNG_FLAG_LIBRARY_MISMATCH 0x20000U - /* 0x40000U unused */ +#define PNG_FLAG_STRIP_ERROR_NUMBERS 0x40000U #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000U #define PNG_FLAG_BENIGN_ERRORS_WARN 0x100000U /* Added to libpng-1.4.0 */ #define PNG_FLAG_APP_WARNINGS_WARN 0x200000U /* Added to libpng-1.6.0 */ @@ -971,7 +938,7 @@ * * At present these index values are not exported (not part of the public API) * so can be changed at will. For convenience the names are in lexical sort - * order but with the critical chunks at the start in the order of occurrence in + * order but with the critical chunks at the start in the order of occurence in * a PNG. * * PNG_INFO_ values do not exist for every one of these chunk handles; for @@ -1038,15 +1005,17 @@ * must match that used in the build, or we must be using pnglibconf.h.prebuilt: */ #if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM -# error The include path of is incorrect - /* When pnglibconf.h was built, the copy of zlib.h that it used was not the - * same as the one being used here. Considering how libpng makes decisions - * to use the zlib API based on the zlib version number, the -I options must - * match. +# error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ + "-I (include path) error: see the notes in pngpriv.h" + /* This means that when pnglibconf.h was built the copy of zlib.h that it + * used is not the same as the one being used here. Because the build of + * libpng makes decisions to use inflateInit2 and inflateReset2 based on the + * zlib version number and because this affects handling of certain broken + * PNG files the -I directives must match. * - * A possible cause of this mismatch is that you passed an -I option in - * CFLAGS, which is unlikely to work. All the preprocessor options, and all - * the -I options in particular, should be in CPPFLAGS. + * The most likely explanation is that you passed a -I in CFLAGS. This will + * not work; all the preprocessor directives and in particular all the -I + * directives must be in CPPFLAGS. */ #endif @@ -1089,17 +1058,15 @@ extern "C" { */ /* Zlib support */ #define PNG_UNEXPECTED_ZLIB_RETURN (-7) -PNG_INTERNAL_FUNCTION(void, png_zstream_error, - (png_structrp png_ptr, int ret), +PNG_INTERNAL_FUNCTION(void, png_zstream_error,(png_structrp png_ptr, int ret), PNG_EMPTY); /* Used by the zlib handling functions to ensure that z_stream::msg is always * set before they return. */ #ifdef PNG_WRITE_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_free_buffer_list, - (png_structrp png_ptr, png_compression_bufferp *list), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_free_buffer_list,(png_structrp png_ptr, + png_compression_bufferp *list),PNG_EMPTY); /* Free the buffer list used by the compressed write code. */ #endif @@ -1111,25 +1078,22 @@ PNG_INTERNAL_FUNCTION(void, png_free_buffer_list, defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)) || \ (defined(PNG_sCAL_SUPPORTED) && \ defined(PNG_FLOATING_ARITHMETIC_SUPPORTED)) -PNG_INTERNAL_FUNCTION(png_fixed_point, png_fixed, - (png_const_structrp png_ptr, double fp, png_const_charp text), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_fixed_point,png_fixed,(png_const_structrp png_ptr, + double fp, png_const_charp text),PNG_EMPTY); #endif #if defined(PNG_FLOATING_POINT_SUPPORTED) && \ !defined(PNG_FIXED_POINT_MACRO_SUPPORTED) && \ (defined(PNG_cLLI_SUPPORTED) || defined(PNG_mDCV_SUPPORTED)) -PNG_INTERNAL_FUNCTION(png_uint_32, png_fixed_ITU, - (png_const_structrp png_ptr, double fp, png_const_charp text), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_uint_32,png_fixed_ITU,(png_const_structrp png_ptr, + double fp, png_const_charp text),PNG_EMPTY); #endif /* Check the user version string for compatibility, returns false if the version * numbers aren't compatible. */ -PNG_INTERNAL_FUNCTION(int, png_user_version_check, - (png_structrp png_ptr, png_const_charp user_png_ver), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_user_version_check,(png_structrp png_ptr, + png_const_charp user_png_ver),PNG_EMPTY); #ifdef PNG_READ_SUPPORTED /* should only be used on read */ /* Security: read limits on the largest allocations while reading a PNG. This @@ -1154,28 +1118,24 @@ PNG_INTERNAL_FUNCTION(int, png_user_version_check, * does, however, call the application provided allocator and that could call * png_error (although that would be a bug in the application implementation.) */ -PNG_INTERNAL_FUNCTION(png_voidp, png_malloc_base, - (png_const_structrp png_ptr, png_alloc_size_t size), - PNG_ALLOCATED); +PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_base,(png_const_structrp png_ptr, + png_alloc_size_t size),PNG_ALLOCATED); #if defined(PNG_TEXT_SUPPORTED) || defined(PNG_sPLT_SUPPORTED) ||\ defined(PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED) /* Internal array allocator, outputs no error or warning messages on failure, * just returns NULL. */ -PNG_INTERNAL_FUNCTION(png_voidp, png_malloc_array, - (png_const_structrp png_ptr, int nelements, size_t element_size), - PNG_ALLOCATED); +PNG_INTERNAL_FUNCTION(png_voidp,png_malloc_array,(png_const_structrp png_ptr, + int nelements, size_t element_size),PNG_ALLOCATED); /* The same but an existing array is extended by add_elements. This function * also memsets the new elements to 0 and copies the old elements. The old * array is not freed or altered. */ -PNG_INTERNAL_FUNCTION(png_voidp, png_realloc_array, - (png_const_structrp png_ptr, - png_const_voidp array, int old_elements, int add_elements, - size_t element_size), - PNG_ALLOCATED); +PNG_INTERNAL_FUNCTION(png_voidp,png_realloc_array,(png_const_structrp png_ptr, + png_const_voidp array, int old_elements, int add_elements, + size_t element_size),PNG_ALLOCATED); #endif /* text, sPLT or unknown chunks */ /* Magic to create a struct when there is no struct to call the user supplied @@ -1184,106 +1144,84 @@ PNG_INTERNAL_FUNCTION(png_voidp, png_realloc_array, * restriction so libpng has to assume that the 'free' handler, at least, might * call png_error. */ -PNG_INTERNAL_FUNCTION(png_structp, png_create_png_struct, - (png_const_charp user_png_ver, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, - png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED); +PNG_INTERNAL_FUNCTION(png_structp,png_create_png_struct, + (png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, + png_error_ptr warn_fn, png_voidp mem_ptr, png_malloc_ptr malloc_fn, + png_free_ptr free_fn),PNG_ALLOCATED); /* Free memory from internal libpng struct */ -PNG_INTERNAL_FUNCTION(void, png_destroy_png_struct, - (png_structrp png_ptr), +PNG_INTERNAL_FUNCTION(void,png_destroy_png_struct,(png_structrp png_ptr), PNG_EMPTY); /* Free an allocated jmp_buf (always succeeds) */ -PNG_INTERNAL_FUNCTION(void, png_free_jmpbuf, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_free_jmpbuf,(png_structrp png_ptr),PNG_EMPTY); /* Function to allocate memory for zlib. PNGAPI is disallowed. */ -PNG_INTERNAL_FUNCTION(voidpf, png_zalloc, - (voidpf png_ptr, uInt items, uInt size), +PNG_INTERNAL_FUNCTION(voidpf,png_zalloc,(voidpf png_ptr, uInt items, uInt size), PNG_ALLOCATED); /* Function to free memory for zlib. PNGAPI is disallowed. */ -PNG_INTERNAL_FUNCTION(void, png_zfree, - (voidpf png_ptr, voidpf ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_zfree,(voidpf png_ptr, voidpf ptr),PNG_EMPTY); /* Next four functions are used internally as callbacks. PNGCBAPI is required * but not PNG_EXPORT. PNGAPI added at libpng version 1.2.3, changed to * PNGCBAPI at 1.5.0 */ -PNG_INTERNAL_FUNCTION(void PNGCBAPI, png_default_read_data, - (png_structp png_ptr, png_bytep data, size_t length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_read_data,(png_structp png_ptr, + png_bytep data, size_t length),PNG_EMPTY); #ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void PNGCBAPI, png_push_fill_buffer, - (png_structp png_ptr, png_bytep buffer, size_t length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_push_fill_buffer,(png_structp png_ptr, + png_bytep buffer, size_t length),PNG_EMPTY); #endif -PNG_INTERNAL_FUNCTION(void PNGCBAPI, png_default_write_data, - (png_structp png_ptr, png_bytep data, size_t length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_write_data,(png_structp png_ptr, + png_bytep data, size_t length),PNG_EMPTY); #ifdef PNG_WRITE_FLUSH_SUPPORTED # ifdef PNG_STDIO_SUPPORTED -PNG_INTERNAL_FUNCTION(void PNGCBAPI, png_default_flush, - (png_structp png_ptr), +PNG_INTERNAL_FUNCTION(void PNGCBAPI,png_default_flush,(png_structp png_ptr), PNG_EMPTY); # endif #endif /* Reset the CRC variable */ -PNG_INTERNAL_FUNCTION(void, png_reset_crc, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_reset_crc,(png_structrp png_ptr),PNG_EMPTY); /* Write the "data" buffer to whatever output you are using */ -PNG_INTERNAL_FUNCTION(void, png_write_data, - (png_structrp png_ptr, png_const_bytep data, size_t length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_data,(png_structrp png_ptr, + png_const_bytep data, size_t length),PNG_EMPTY); /* Read and check the PNG file signature */ -PNG_INTERNAL_FUNCTION(void, png_read_sig, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_sig,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); /* Read the chunk header (length + type name) */ -PNG_INTERNAL_FUNCTION(png_uint_32, png_read_chunk_header, - (png_structrp png_ptr), +PNG_INTERNAL_FUNCTION(png_uint_32,png_read_chunk_header,(png_structrp png_ptr), PNG_EMPTY); /* Read data from whatever input you are using into the "data" buffer */ -PNG_INTERNAL_FUNCTION(void, png_read_data, - (png_structrp png_ptr, png_bytep data, size_t length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_data,(png_structrp png_ptr, png_bytep data, + size_t length),PNG_EMPTY); /* Read bytes into buf, and update png_ptr->crc */ -PNG_INTERNAL_FUNCTION(void, png_crc_read, - (png_structrp png_ptr, png_bytep buf, png_uint_32 length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_crc_read,(png_structrp png_ptr, png_bytep buf, + png_uint_32 length),PNG_EMPTY); /* Read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ -PNG_INTERNAL_FUNCTION(int, png_crc_finish, - (png_structrp png_ptr, png_uint_32 skip), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_crc_finish,(png_structrp png_ptr, + png_uint_32 skip),PNG_EMPTY); /* Calculate the CRC over a section of data. Note that we are only * passing a maximum of 64K on systems that have this as a memory limit, * since this is the maximum buffer size we can specify. */ -PNG_INTERNAL_FUNCTION(void, png_calculate_crc, - (png_structrp png_ptr, png_const_bytep ptr, size_t length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_calculate_crc,(png_structrp png_ptr, + png_const_bytep ptr, size_t length),PNG_EMPTY); #ifdef PNG_WRITE_FLUSH_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_flush, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_flush,(png_structrp png_ptr),PNG_EMPTY); #endif /* Write various chunks */ @@ -1291,86 +1229,68 @@ PNG_INTERNAL_FUNCTION(void, png_flush, /* Write the IHDR chunk, and update the png_struct with the necessary * information. */ -PNG_INTERNAL_FUNCTION(void, png_write_IHDR, - (png_structrp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, - int compression_method, int filter_method, int interlace_method), +PNG_INTERNAL_FUNCTION(void,png_write_IHDR,(png_structrp png_ptr, + png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, + int compression_method, int filter_method, int interlace_method),PNG_EMPTY); + +PNG_INTERNAL_FUNCTION(void,png_write_PLTE,(png_structrp png_ptr, + png_const_colorp palette, png_uint_32 num_pal),PNG_EMPTY); + +PNG_INTERNAL_FUNCTION(void,png_compress_IDAT,(png_structrp png_ptr, + png_const_bytep row_data, png_alloc_size_t row_data_length, int flush), PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_write_PLTE, - (png_structrp png_ptr, - png_const_colorp palette, png_uint_32 num_pal), - PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void, png_compress_IDAT, - (png_structrp png_ptr, - png_const_bytep row_data, png_alloc_size_t row_data_length, int flush), - PNG_EMPTY); - -PNG_INTERNAL_FUNCTION(void, png_write_IEND, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_IEND,(png_structrp png_ptr),PNG_EMPTY); #ifdef PNG_WRITE_gAMA_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_gAMA_fixed, - (png_structrp png_ptr, png_fixed_point file_gamma), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_gAMA_fixed,(png_structrp png_ptr, + png_fixed_point file_gamma),PNG_EMPTY); #endif #ifdef PNG_WRITE_sBIT_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_sBIT, - (png_structrp png_ptr, png_const_color_8p sbit, int color_type), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_sBIT,(png_structrp png_ptr, + png_const_color_8p sbit, int color_type),PNG_EMPTY); #endif #ifdef PNG_WRITE_cHRM_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_cHRM_fixed, - (png_structrp png_ptr, const png_xy *xy), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_cHRM_fixed,(png_structrp png_ptr, + const png_xy *xy), PNG_EMPTY); /* The xy value must have been previously validated */ #endif #ifdef PNG_WRITE_cICP_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_cICP, - (png_structrp png_ptr, +PNG_INTERNAL_FUNCTION(void,png_write_cICP,(png_structrp png_ptr, png_byte colour_primaries, png_byte transfer_function, - png_byte matrix_coefficients, png_byte video_full_range_flag), - PNG_EMPTY); + png_byte matrix_coefficients, png_byte video_full_range_flag), PNG_EMPTY); #endif #ifdef PNG_WRITE_cLLI_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_cLLI_fixed, - (png_structrp png_ptr, png_uint_32 maxCLL, png_uint_32 maxFALL), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_cLLI_fixed,(png_structrp png_ptr, + png_uint_32 maxCLL, png_uint_32 maxFALL), PNG_EMPTY); #endif #ifdef PNG_WRITE_mDCV_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_mDCV_fixed, - (png_structrp png_ptr, - png_uint_16 red_x, png_uint_16 red_y, - png_uint_16 green_x, png_uint_16 green_y, - png_uint_16 blue_x, png_uint_16 blue_y, - png_uint_16 white_x, png_uint_16 white_y, - png_uint_32 maxDL, png_uint_32 minDL), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_mDCV_fixed,(png_structrp png_ptr, + png_uint_16 red_x, png_uint_16 red_y, + png_uint_16 green_x, png_uint_16 green_y, + png_uint_16 blue_x, png_uint_16 blue_y, + png_uint_16 white_x, png_uint_16 white_y, + png_uint_32 maxDL, png_uint_32 minDL), PNG_EMPTY); #endif #ifdef PNG_WRITE_sRGB_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_sRGB, - (png_structrp png_ptr, int intent), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_sRGB,(png_structrp png_ptr, + int intent),PNG_EMPTY); #endif #ifdef PNG_WRITE_eXIf_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_eXIf, - (png_structrp png_ptr, png_bytep exif, int num_exif), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_eXIf,(png_structrp png_ptr, + png_bytep exif, int num_exif),PNG_EMPTY); #endif #ifdef PNG_WRITE_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_iCCP, - (png_structrp png_ptr, - png_const_charp name, png_const_bytep profile, png_uint_32 proflen), +PNG_INTERNAL_FUNCTION(void,png_write_iCCP,(png_structrp png_ptr, + png_const_charp name, png_const_bytep profile, png_uint_32 proflen), PNG_EMPTY); /* Writes a previously 'set' profile. The profile argument is **not** * compressed. @@ -1378,106 +1298,82 @@ PNG_INTERNAL_FUNCTION(void, png_write_iCCP, #endif #ifdef PNG_WRITE_sPLT_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_sPLT, - (png_structrp png_ptr, png_const_sPLT_tp palette), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_sPLT,(png_structrp png_ptr, + png_const_sPLT_tp palette),PNG_EMPTY); #endif #ifdef PNG_WRITE_tRNS_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_tRNS, - (png_structrp png_ptr, +PNG_INTERNAL_FUNCTION(void,png_write_tRNS,(png_structrp png_ptr, png_const_bytep trans, png_const_color_16p values, int number, - int color_type), - PNG_EMPTY); + int color_type),PNG_EMPTY); #endif #ifdef PNG_WRITE_bKGD_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_bKGD, - (png_structrp png_ptr, png_const_color_16p values, int color_type), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_bKGD,(png_structrp png_ptr, + png_const_color_16p values, int color_type),PNG_EMPTY); #endif #ifdef PNG_WRITE_hIST_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_hIST, - (png_structrp png_ptr, png_const_uint_16p hist, int num_hist), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_hIST,(png_structrp png_ptr, + png_const_uint_16p hist, int num_hist),PNG_EMPTY); #endif /* Chunks that have keywords */ #ifdef PNG_WRITE_tEXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_tEXt, - (png_structrp png_ptr, - png_const_charp key, png_const_charp text, size_t text_len), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_tEXt,(png_structrp png_ptr, + png_const_charp key, png_const_charp text, size_t text_len),PNG_EMPTY); #endif #ifdef PNG_WRITE_zTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_zTXt, - (png_structrp png_ptr, - png_const_charp key, png_const_charp text, int compression), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_zTXt,(png_structrp png_ptr, png_const_charp + key, png_const_charp text, int compression),PNG_EMPTY); #endif #ifdef PNG_WRITE_iTXt_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_iTXt, - (png_structrp png_ptr, +PNG_INTERNAL_FUNCTION(void,png_write_iTXt,(png_structrp png_ptr, int compression, png_const_charp key, png_const_charp lang, - png_const_charp lang_key, png_const_charp text), - PNG_EMPTY); + png_const_charp lang_key, png_const_charp text),PNG_EMPTY); #endif #ifdef PNG_TEXT_SUPPORTED /* Added at version 1.0.14 and 1.2.4 */ -PNG_INTERNAL_FUNCTION(int, png_set_text_2, - (png_const_structrp png_ptr, - png_inforp info_ptr, png_const_textp text_ptr, int num_text), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_set_text_2,(png_const_structrp png_ptr, + png_inforp info_ptr, png_const_textp text_ptr, int num_text),PNG_EMPTY); #endif #ifdef PNG_WRITE_oFFs_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_oFFs, - (png_structrp png_ptr, - png_int_32 x_offset, png_int_32 y_offset, int unit_type), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_oFFs,(png_structrp png_ptr, + png_int_32 x_offset, png_int_32 y_offset, int unit_type),PNG_EMPTY); #endif #ifdef PNG_WRITE_pCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_pCAL, - (png_structrp png_ptr, - png_charp purpose, png_int_32 X0, png_int_32 X1, - int type, int nparams, png_const_charp units, png_charpp params), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_pCAL,(png_structrp png_ptr, + png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, + png_const_charp units, png_charpp params),PNG_EMPTY); #endif #ifdef PNG_WRITE_pHYs_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_pHYs, - (png_structrp png_ptr, +PNG_INTERNAL_FUNCTION(void,png_write_pHYs,(png_structrp png_ptr, png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, - int unit_type), - PNG_EMPTY); + int unit_type),PNG_EMPTY); #endif #ifdef PNG_WRITE_tIME_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_tIME, - (png_structrp png_ptr, png_const_timep mod_time), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_tIME,(png_structrp png_ptr, + png_const_timep mod_time),PNG_EMPTY); #endif #ifdef PNG_WRITE_sCAL_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_write_sCAL_s, - (png_structrp png_ptr, - int unit, png_const_charp width, png_const_charp height), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_sCAL_s,(png_structrp png_ptr, + int unit, png_const_charp width, png_const_charp height),PNG_EMPTY); #endif /* Called when finished processing a row of data */ -PNG_INTERNAL_FUNCTION(void, png_write_finish_row, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_finish_row,(png_structrp png_ptr), + PNG_EMPTY); /* Internal use only. Called before first row of data */ -PNG_INTERNAL_FUNCTION(void, png_write_start_row, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_start_row,(png_structrp png_ptr), + PNG_EMPTY); /* Combine a row of data, dealing with alpha, etc. if requested. 'row' is an * array of png_ptr->width pixels. If the image is not interlaced or this @@ -1505,9 +1401,8 @@ PNG_INTERNAL_FUNCTION(void, png_write_start_row, #ifndef PNG_USE_COMPILE_TIME_MASKS # define PNG_USE_COMPILE_TIME_MASKS 1 #endif -PNG_INTERNAL_FUNCTION(void, png_combine_row, - (png_const_structrp png_ptr, png_bytep row, int display), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_combine_row,(png_const_structrp png_ptr, + png_bytep row, int display),PNG_EMPTY); #ifdef PNG_READ_INTERLACING_SUPPORTED /* Expand an interlaced row: the 'row_info' describes the pass data that has @@ -1516,230 +1411,153 @@ PNG_INTERNAL_FUNCTION(void, png_combine_row, * the pixels are *replicated* to the intervening space. This is essential for * the correct operation of png_combine_row, above. */ -PNG_INTERNAL_FUNCTION(void, png_do_read_interlace, - (png_row_infop row_info, - png_bytep row, int pass, png_uint_32 transformations), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_read_interlace,(png_row_infop row_info, + png_bytep row, int pass, png_uint_32 transformations),PNG_EMPTY); #endif /* GRR TO DO (2.0 or whenever): simplify other internal calling interfaces */ #ifdef PNG_WRITE_INTERLACING_SUPPORTED /* Grab pixels out of a row for an interlaced pass */ -PNG_INTERNAL_FUNCTION(void, png_do_write_interlace, - (png_row_infop row_info, png_bytep row, int pass), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_write_interlace,(png_row_infop row_info, + png_bytep row, int pass),PNG_EMPTY); #endif /* Unfilter a row: check the filter value before calling this, there is no point * calling it for PNG_FILTER_VALUE_NONE. */ -PNG_INTERNAL_FUNCTION(void, png_read_filter_row, - (png_structrp pp, png_row_infop row_info, - png_bytep row, png_const_bytep prev_row, int filter), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row,(png_structrp pp, png_row_infop + row_info, png_bytep row, png_const_bytep prev_row, int filter),PNG_EMPTY); #if PNG_ARM_NEON_OPT > 0 -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_up_neon, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub3_neon, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub4_neon, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg3_neon, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg4_neon, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth3_neon, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth4_neon, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_neon,(png_row_infop row_info, + png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_neon,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_neon,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_neon,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_neon,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_neon,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_neon,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); #endif #if PNG_MIPS_MSA_IMPLEMENTATION == 1 -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_up_msa, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub3_msa, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub4_msa, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg3_msa, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg4_msa, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth3_msa, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth4_msa, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_msa,(png_row_infop row_info, + png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_msa,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); #endif #if PNG_MIPS_MMI_IMPLEMENTATION > 0 -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_up_mmi, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub3_mmi, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub4_mmi, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg3_mmi, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg4_mmi, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth3_mmi, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth4_mmi, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_mmi,(png_row_infop row_info, + png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_mmi,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_mmi,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_mmi,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_mmi,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_mmi,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_mmi,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); #endif #if PNG_POWERPC_VSX_OPT > 0 -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_up_vsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub3_vsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub4_vsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg3_vsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg4_vsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth3_vsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth4_vsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_vsx,(png_row_infop row_info, + png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_vsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_vsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_vsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_vsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_vsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_vsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); #endif #if PNG_INTEL_SSE_IMPLEMENTATION > 0 -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub3_sse2, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub4_sse2, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg3_sse2, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg4_sse2, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth3_sse2, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth4_sse2, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_sse2,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); #endif #if PNG_LOONGARCH_LSX_IMPLEMENTATION == 1 -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_up_lsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub3_lsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub4_lsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg3_lsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg4_lsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth3_lsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth4_lsx, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -#endif - -#if PNG_RISCV_RVV_IMPLEMENTATION == 1 -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_up_rvv, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub3_rvv, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_sub4_rvv, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg3_rvv, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_avg4_rvv, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth3_rvv, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_filter_row_paeth4_rvv, - (png_row_infop row_info, png_bytep row, png_const_bytep prev_row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_lsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_lsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_lsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_lsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_lsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_lsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_lsx,(png_row_infop + row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY); #endif /* Choose the best filter to use and filter the row data */ -PNG_INTERNAL_FUNCTION(void, png_write_find_filter, - (png_structrp png_ptr, png_row_infop row_info), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr, + png_row_infop row_info),PNG_EMPTY); #ifdef PNG_SEQUENTIAL_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_read_IDAT_data, - (png_structrp png_ptr, png_bytep output, png_alloc_size_t avail_out), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_IDAT_data,(png_structrp png_ptr, + png_bytep output, png_alloc_size_t avail_out),PNG_EMPTY); /* Read 'avail_out' bytes of data from the IDAT stream. If the output buffer * is NULL the function checks, instead, for the end of the stream. In this * case a benign error will be issued if the stream end is not found or if * extra data has to be consumed. */ -PNG_INTERNAL_FUNCTION(void, png_read_finish_IDAT, - (png_structrp png_ptr), +PNG_INTERNAL_FUNCTION(void,png_read_finish_IDAT,(png_structrp png_ptr), PNG_EMPTY); /* This cleans up when the IDAT LZ stream does not end when the last image * byte is read; there is still some pending input. */ -PNG_INTERNAL_FUNCTION(void, png_read_finish_row, - (png_structrp png_ptr), +PNG_INTERNAL_FUNCTION(void,png_read_finish_row,(png_structrp png_ptr), PNG_EMPTY); /* Finish a row while reading, dealing with interlacing passes, etc. */ #endif /* SEQUENTIAL_READ */ /* Initialize the row buffers, etc. */ -PNG_INTERNAL_FUNCTION(void, png_read_start_row, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_start_row,(png_structrp png_ptr),PNG_EMPTY); #if ZLIB_VERNUM >= 0x1240 -PNG_INTERNAL_FUNCTION(int, png_zlib_inflate, - (png_structrp png_ptr, int flush), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_zlib_inflate,(png_structrp png_ptr, int flush), + PNG_EMPTY); # define PNG_INFLATE(pp, flush) png_zlib_inflate(pp, flush) #else /* Zlib < 1.2.4 */ # define PNG_INFLATE(pp, flush) inflate(&(pp)->zstream, flush) @@ -1747,44 +1565,38 @@ PNG_INTERNAL_FUNCTION(int, png_zlib_inflate, #ifdef PNG_READ_TRANSFORMS_SUPPORTED /* Optional call to update the users info structure */ -PNG_INTERNAL_FUNCTION(void, png_read_transform_info, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_transform_info,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); #endif /* Shared transform functions, defined in pngtran.c */ #if defined(PNG_WRITE_FILLER_SUPPORTED) || \ defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -PNG_INTERNAL_FUNCTION(void, png_do_strip_channel, - (png_row_infop row_info, png_bytep row, int at_start), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_strip_channel,(png_row_infop row_info, + png_bytep row, int at_start),PNG_EMPTY); #endif #ifdef PNG_16BIT_SUPPORTED #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -PNG_INTERNAL_FUNCTION(void, png_do_swap, - (png_row_infop row_info, png_bytep row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_swap,(png_row_infop row_info, + png_bytep row),PNG_EMPTY); #endif #endif #if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ defined(PNG_WRITE_PACKSWAP_SUPPORTED) -PNG_INTERNAL_FUNCTION(void, png_do_packswap, - (png_row_infop row_info, png_bytep row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_packswap,(png_row_infop row_info, + png_bytep row),PNG_EMPTY); #endif #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -PNG_INTERNAL_FUNCTION(void, png_do_invert, - (png_row_infop row_info, png_bytep row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_invert,(png_row_infop row_info, + png_bytep row),PNG_EMPTY); #endif #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -PNG_INTERNAL_FUNCTION(void, png_do_bgr, - (png_row_infop row_info, png_bytep row), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_bgr,(png_row_infop row_info, + png_bytep row),PNG_EMPTY); #endif /* The following decodes the appropriate chunks, and does error correction, @@ -1805,27 +1617,25 @@ typedef enum handled_ok /* known, supported and handled without error */ } png_handle_result_code; -PNG_INTERNAL_FUNCTION(png_handle_result_code, png_handle_unknown, - (png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length, int keep), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_handle_result_code,png_handle_unknown, + (png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length, int keep), + PNG_EMPTY); /* This is the function that gets called for unknown chunks. The 'keep' * argument is either non-zero for a known chunk that has been set to be * handled as unknown or zero for an unknown chunk. By default the function * just skips the chunk or errors out if it is critical. */ -PNG_INTERNAL_FUNCTION(png_handle_result_code, png_handle_chunk, - (png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_handle_result_code,png_handle_chunk, + (png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length),PNG_EMPTY); /* This handles the current chunk png_ptr->chunk_name with unread * data[length] and returns one of the above result codes. */ #if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) ||\ defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) -PNG_INTERNAL_FUNCTION(int, png_chunk_unknown_handling, - (png_const_structrp png_ptr, png_uint_32 chunk_name), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_chunk_unknown_handling, + (png_const_structrp png_ptr, png_uint_32 chunk_name),PNG_EMPTY); /* Exactly as the API png_handle_as_unknown() except that the argument is a * 32-bit chunk name, not a string. */ @@ -1833,65 +1643,46 @@ PNG_INTERNAL_FUNCTION(int, png_chunk_unknown_handling, /* Handle the transformations for reading and writing */ #ifdef PNG_READ_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_do_read_transformations, - (png_structrp png_ptr, png_row_infop row_info), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_read_transformations,(png_structrp png_ptr, + png_row_infop row_info),PNG_EMPTY); #endif #ifdef PNG_WRITE_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_do_write_transformations, - (png_structrp png_ptr, png_row_infop row_info), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_write_transformations,(png_structrp png_ptr, + png_row_infop row_info),PNG_EMPTY); #endif #ifdef PNG_READ_TRANSFORMS_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_init_read_transformations, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_init_read_transformations,(png_structrp png_ptr), + PNG_EMPTY); #endif #ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_push_read_chunk, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_read_sig, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_check_crc, - (png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_save_buffer, - (png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_restore_buffer, - (png_structrp png_ptr, png_bytep buffer, size_t buffer_length), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_read_IDAT, - (png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_process_IDAT_data, - (png_structrp png_ptr, png_bytep buffer, size_t buffer_length), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_process_row, - (png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_have_info, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_have_end, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_have_row, - (png_structrp png_ptr, png_bytep row), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_push_read_end, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_process_some_data, - (png_structrp png_ptr, png_inforp info_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_read_push_finish_row, - (png_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_read_chunk,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_read_sig,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_check_crc,(png_structrp png_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_save_buffer,(png_structrp png_ptr), + PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_restore_buffer,(png_structrp png_ptr, + png_bytep buffer, size_t buffer_length),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_read_IDAT,(png_structrp png_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_process_IDAT_data,(png_structrp png_ptr, + png_bytep buffer, size_t buffer_length),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_process_row,(png_structrp png_ptr), + PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_have_info,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_have_end,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_have_row,(png_structrp png_ptr, + png_bytep row),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_push_read_end,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_process_some_data,(png_structrp png_ptr, + png_inforp info_ptr),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_read_push_finish_row,(png_structrp png_ptr), + PNG_EMPTY); #endif /* PROGRESSIVE_READ */ #ifdef PNG_APNG_SUPPORTED @@ -1940,58 +1731,48 @@ PNG_INTERNAL_FUNCTION(void,png_write_reinit,(png_structp png_ptr, #ifdef PNG_iCCP_SUPPORTED /* Routines for checking parts of an ICC profile. */ #ifdef PNG_READ_iCCP_SUPPORTED -PNG_INTERNAL_FUNCTION(int, png_icc_check_length, - (png_const_structrp png_ptr, - png_const_charp name, png_uint_32 profile_length), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_icc_check_length,(png_const_structrp png_ptr, + png_const_charp name, png_uint_32 profile_length), PNG_EMPTY); #endif /* READ_iCCP */ -PNG_INTERNAL_FUNCTION(int, png_icc_check_header, - (png_const_structrp png_ptr, - png_const_charp name, png_uint_32 profile_length, - png_const_bytep profile /* first 132 bytes only */, int color_type), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(int, png_icc_check_tag_table, - (png_const_structrp png_ptr, - png_const_charp name, png_uint_32 profile_length, - png_const_bytep profile /* header plus whole tag table */), +PNG_INTERNAL_FUNCTION(int,png_icc_check_header,(png_const_structrp png_ptr, + png_const_charp name, png_uint_32 profile_length, + png_const_bytep profile /* first 132 bytes only */, int color_type), PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_icc_check_tag_table,(png_const_structrp png_ptr, + png_const_charp name, png_uint_32 profile_length, + png_const_bytep profile /* header plus whole tag table */), PNG_EMPTY); #endif /* iCCP */ #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_set_rgb_coefficients, - (png_structrp png_ptr), +PNG_INTERNAL_FUNCTION(void,png_set_rgb_coefficients, (png_structrp png_ptr), PNG_EMPTY); /* Set the rgb_to_gray coefficients from the cHRM Y values (if unset) */ #endif /* READ_RGB_TO_GRAY */ /* Added at libpng version 1.4.0 */ -PNG_INTERNAL_FUNCTION(void, png_check_IHDR, - (png_const_structrp png_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, int color_type, - int interlace_type, int compression_type, int filter_type), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_check_IHDR,(png_const_structrp png_ptr, + png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_type, int compression_type, + int filter_type),PNG_EMPTY); /* Added at libpng version 1.5.10 */ #if defined(PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED) || \ defined(PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED) -PNG_INTERNAL_FUNCTION(void, png_do_check_palette_indexes, - (png_structrp png_ptr, png_row_infop row_info), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_do_check_palette_indexes, + (png_structrp png_ptr, png_row_infop row_info),PNG_EMPTY); #endif #if defined(PNG_FLOATING_POINT_SUPPORTED) && defined(PNG_ERROR_TEXT_SUPPORTED) -PNG_INTERNAL_FUNCTION(void, png_fixed_error, - (png_const_structrp png_ptr, png_const_charp name), - PNG_NORETURN); +PNG_INTERNAL_FUNCTION(void,png_fixed_error,(png_const_structrp png_ptr, + png_const_charp name),PNG_NORETURN); #endif /* Puts 'string' into 'buffer' at buffer[pos], taking care never to overwrite * the end. Always leaves the buffer nul terminated. Never errors out (and * there is no error code.) */ -PNG_INTERNAL_FUNCTION(size_t, png_safecat, - (png_charp buffer, size_t bufsize, size_t pos, png_const_charp string), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(size_t,png_safecat,(png_charp buffer, size_t bufsize, + size_t pos, png_const_charp string),PNG_EMPTY); /* Various internal functions to handle formatted warning messages, currently * only implemented for warnings. @@ -2002,9 +1783,8 @@ PNG_INTERNAL_FUNCTION(size_t, png_safecat, * Returns the pointer to the start of the formatted string. This utility only * does unsigned values. */ -PNG_INTERNAL_FUNCTION(png_charp, png_format_number, - (png_const_charp start, png_charp end, int format, png_alloc_size_t number), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_charp,png_format_number,(png_const_charp start, + png_charp end, int format, png_alloc_size_t number),PNG_EMPTY); /* Convenience macro that takes an array: */ #define PNG_FORMAT_NUMBER(buffer,format,number) \ @@ -2036,26 +1816,23 @@ PNG_INTERNAL_FUNCTION(png_charp, png_format_number, typedef char png_warning_parameters[PNG_WARNING_PARAMETER_COUNT][ PNG_WARNING_PARAMETER_SIZE]; -PNG_INTERNAL_FUNCTION(void, png_warning_parameter, - (png_warning_parameters p, int number, png_const_charp string), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_warning_parameter,(png_warning_parameters p, + int number, png_const_charp string),PNG_EMPTY); /* Parameters are limited in size to PNG_WARNING_PARAMETER_SIZE characters, * including the trailing '\0'. */ -PNG_INTERNAL_FUNCTION(void, png_warning_parameter_unsigned, +PNG_INTERNAL_FUNCTION(void,png_warning_parameter_unsigned, (png_warning_parameters p, int number, int format, png_alloc_size_t value), PNG_EMPTY); /* Use png_alloc_size_t because it is an unsigned type as big as any we * need to output. Use the following for a signed value. */ -PNG_INTERNAL_FUNCTION(void, png_warning_parameter_signed, +PNG_INTERNAL_FUNCTION(void,png_warning_parameter_signed, (png_warning_parameters p, int number, int format, png_int_32 value), PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_formatted_warning, - (png_const_structrp png_ptr, - png_warning_parameters p, png_const_charp message), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_formatted_warning,(png_const_structrp png_ptr, + png_warning_parameters p, png_const_charp message),PNG_EMPTY); /* 'message' follows the X/Open approach of using @1, @2 to insert * parameters previously supplied using the above functions. Errors in * specifying the parameters will simply result in garbage substitutions. @@ -2077,16 +1854,14 @@ PNG_INTERNAL_FUNCTION(void, png_formatted_warning, * If benign errors aren't supported they end up as the corresponding base call * (png_warning or png_error.) */ -PNG_INTERNAL_FUNCTION(void, png_app_warning, - (png_const_structrp png_ptr, png_const_charp message), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_app_warning,(png_const_structrp png_ptr, + png_const_charp message),PNG_EMPTY); /* The application provided invalid parameters to an API function or called * an API function at the wrong time, libpng can completely recover. */ -PNG_INTERNAL_FUNCTION(void, png_app_error, - (png_const_structrp png_ptr, png_const_charp message), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_app_error,(png_const_structrp png_ptr, + png_const_charp message),PNG_EMPTY); /* As above but libpng will ignore the call, or attempt some other partial * recovery from the error. */ @@ -2095,9 +1870,8 @@ PNG_INTERNAL_FUNCTION(void, png_app_error, # define png_app_error(pp,s) png_error(pp,s) #endif -PNG_INTERNAL_FUNCTION(void, png_chunk_report, - (png_const_structrp png_ptr, png_const_charp message, int error), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_chunk_report,(png_const_structrp png_ptr, + png_const_charp message, int error),PNG_EMPTY); /* Report a recoverable issue in chunk data. On read this is used to report * a problem found while reading a particular chunk and the * png_chunk_benign_error or png_chunk_warning function is used as @@ -2123,17 +1897,14 @@ PNG_INTERNAL_FUNCTION(void, png_chunk_report, #define PNG_sCAL_MAX_DIGITS (PNG_sCAL_PRECISION+1/*.*/+1/*E*/+10/*exponent*/) #ifdef PNG_FLOATING_POINT_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_ascii_from_fp, - (png_const_structrp png_ptr, - png_charp ascii, size_t size, double fp, unsigned int precision), +PNG_INTERNAL_FUNCTION(void,png_ascii_from_fp,(png_const_structrp png_ptr, + png_charp ascii, size_t size, double fp, unsigned int precision), PNG_EMPTY); #endif /* FLOATING_POINT */ #ifdef PNG_FIXED_POINT_SUPPORTED -PNG_INTERNAL_FUNCTION(void, png_ascii_from_fixed, - (png_const_structrp png_ptr, - png_charp ascii, size_t size, png_fixed_point fp), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_ascii_from_fixed,(png_const_structrp png_ptr, + png_charp ascii, size_t size, png_fixed_point fp),PNG_EMPTY); #endif /* FIXED_POINT */ #endif /* sCAL */ @@ -2143,7 +1914,7 @@ PNG_INTERNAL_FUNCTION(void, png_ascii_from_fixed, * not valid it will be the index of a character in the supposed number. * * The format of a number is defined in the PNG extensions specification - * and this API is strictly conformant to that spec, not anyone else's! + * and this API is strictly conformant to that spec, not anyone elses! * * The format as a regular expression is: * @@ -2225,9 +1996,8 @@ PNG_INTERNAL_FUNCTION(void, png_ascii_from_fixed, * that omits the last character (i.e. set the size to the index of * the problem character.) This has not been tested within libpng. */ -PNG_INTERNAL_FUNCTION(int, png_check_fp_number, - (png_const_charp string, size_t size, int *statep, size_t *whereami), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_check_fp_number,(png_const_charp string, + size_t size, int *statep, size_t *whereami),PNG_EMPTY); /* This is the same but it checks a complete string and returns true * only if it just contains a floating point number. As of 1.5.4 this @@ -2235,9 +2005,8 @@ PNG_INTERNAL_FUNCTION(int, png_check_fp_number, * it was valid (otherwise it returns 0.) This can be used for testing * for negative or zero values using the sticky flag. */ -PNG_INTERNAL_FUNCTION(int, png_check_fp_string, - (png_const_charp string, size_t size), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_check_fp_string,(png_const_charp string, + size_t size),PNG_EMPTY); #endif /* pCAL || sCAL */ #if defined(PNG_READ_GAMMA_SUPPORTED) ||\ @@ -2250,17 +2019,14 @@ PNG_INTERNAL_FUNCTION(int, png_check_fp_string, * for overflow, true (1) if no overflow, in which case *res * holds the result. */ -PNG_INTERNAL_FUNCTION(int, png_muldiv, - (png_fixed_point_p res, png_fixed_point a, - png_int_32 multiplied_by, png_int_32 divided_by), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_muldiv,(png_fixed_point_p res, png_fixed_point a, + png_int_32 multiplied_by, png_int_32 divided_by),PNG_EMPTY); /* Calculate a reciprocal - used for gamma values. This returns * 0 if the argument is 0 in order to maintain an undefined value; * there are no warnings. */ -PNG_INTERNAL_FUNCTION(png_fixed_point, png_reciprocal, - (png_fixed_point a), +PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal,(png_fixed_point a), PNG_EMPTY); #endif @@ -2269,13 +2035,11 @@ PNG_INTERNAL_FUNCTION(png_fixed_point, png_reciprocal, * values. Accuracy is suitable for gamma calculations but this is * not exact - use png_muldiv for that. Only required at present on read. */ -PNG_INTERNAL_FUNCTION(png_fixed_point, png_reciprocal2, - (png_fixed_point a, png_fixed_point b), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_fixed_point,png_reciprocal2,(png_fixed_point a, + png_fixed_point b),PNG_EMPTY); /* Return true if the gamma value is significantly different from 1.0 */ -PNG_INTERNAL_FUNCTION(int, png_gamma_significant, - (png_fixed_point gamma_value), +PNG_INTERNAL_FUNCTION(int,png_gamma_significant,(png_fixed_point gamma_value), PNG_EMPTY); /* PNGv3: 'resolve' the file gamma according to the new PNGv3 rules for colour @@ -2286,9 +2050,8 @@ PNG_INTERNAL_FUNCTION(int, png_gamma_significant, * transforms. For this reason a gamma specified by png_set_gamma always takes * precedence. */ -PNG_INTERNAL_FUNCTION(png_fixed_point, png_resolve_file_gamma, - (png_const_structrp png_ptr), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_fixed_point,png_resolve_file_gamma, + (png_const_structrp png_ptr),PNG_EMPTY); /* Internal fixed point gamma correction. These APIs are called as * required to convert single values - they don't need to be fast, @@ -2297,45 +2060,37 @@ PNG_INTERNAL_FUNCTION(png_fixed_point, png_resolve_file_gamma, * While the input is an 'unsigned' value it must actually be the * correct bit value - 0..255 or 0..65535 as required. */ -PNG_INTERNAL_FUNCTION(png_uint_16, png_gamma_correct, - (png_structrp png_ptr, unsigned int value, png_fixed_point gamma_value), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(png_uint_16, png_gamma_16bit_correct, - (unsigned int value, png_fixed_point gamma_value), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(png_byte, png_gamma_8bit_correct, - (unsigned int value, png_fixed_point gamma_value), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_destroy_gamma_table, - (png_structrp png_ptr), - PNG_EMPTY); -PNG_INTERNAL_FUNCTION(void, png_build_gamma_table, - (png_structrp png_ptr, int bit_depth), +PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_correct,(png_structrp png_ptr, + unsigned int value, png_fixed_point gamma_value),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_uint_16,png_gamma_16bit_correct,(unsigned int value, + png_fixed_point gamma_value),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_byte,png_gamma_8bit_correct,(unsigned int value, + png_fixed_point gamma_value),PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_destroy_gamma_table,(png_structrp png_ptr), PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void,png_build_gamma_table,(png_structrp png_ptr, + int bit_depth),PNG_EMPTY); #endif /* READ_GAMMA */ #ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED /* Set the RGB coefficients if not already set by png_set_rgb_to_gray */ -PNG_INTERNAL_FUNCTION(void, png_set_rgb_coefficients, - (png_structrp png_ptr), +PNG_INTERNAL_FUNCTION(void,png_set_rgb_coefficients,(png_structrp png_ptr), PNG_EMPTY); #endif #if defined(PNG_cHRM_SUPPORTED) || defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) -PNG_INTERNAL_FUNCTION(int, png_XYZ_from_xy, - (png_XYZ *XYZ, const png_xy *xy), +PNG_INTERNAL_FUNCTION(int,png_XYZ_from_xy,(png_XYZ *XYZ, const png_xy *xy), PNG_EMPTY); #endif /* cHRM || READ_RGB_TO_GRAY */ #ifdef PNG_COLORSPACE_SUPPORTED -PNG_INTERNAL_FUNCTION(int, png_xy_from_XYZ, - (png_xy *xy, const png_XYZ *XYZ), +PNG_INTERNAL_FUNCTION(int,png_xy_from_XYZ,(png_xy *xy, const png_XYZ *XYZ), PNG_EMPTY); #endif /* SIMPLIFIED READ/WRITE SUPPORT */ #if defined(PNG_SIMPLIFIED_READ_SUPPORTED) ||\ - defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) + defined(PNG_SIMPLIFIED_WRITE_SUPPORTED) /* The internal structure that png_image::opaque points to. */ typedef struct png_control { @@ -2363,34 +2118,28 @@ typedef struct png_control * errors that might occur. Returns true on success, false on failure (either * of the function or as a result of a png_error.) */ -PNG_INTERNAL_CALLBACK(void, png_safe_error, - (png_structp png_ptr, png_const_charp error_message), - PNG_NORETURN); +PNG_INTERNAL_CALLBACK(void,png_safe_error,(png_structp png_ptr, + png_const_charp error_message),PNG_NORETURN); #ifdef PNG_WARNINGS_SUPPORTED -PNG_INTERNAL_CALLBACK(void, png_safe_warning, - (png_structp png_ptr, png_const_charp warning_message), - PNG_EMPTY); +PNG_INTERNAL_CALLBACK(void,png_safe_warning,(png_structp png_ptr, + png_const_charp warning_message),PNG_EMPTY); #else # define png_safe_warning 0/*dummy argument*/ #endif -PNG_INTERNAL_FUNCTION(int, png_safe_execute, - (png_imagep image, int (*function)(png_voidp), png_voidp arg), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_safe_execute,(png_imagep image, + int (*function)(png_voidp), png_voidp arg),PNG_EMPTY); /* Utility to log an error; this also cleans up the png_image; the function * always returns 0 (false). */ -PNG_INTERNAL_FUNCTION(int, png_image_error, - (png_imagep image, png_const_charp error_message), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(int,png_image_error,(png_imagep image, + png_const_charp error_message),PNG_EMPTY); #ifndef PNG_SIMPLIFIED_READ_SUPPORTED /* png_image_free is used by the write code but not exported */ -PNG_INTERNAL_FUNCTION(void, png_image_free, - (png_imagep image), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void, png_image_free, (png_imagep image), PNG_EMPTY); #endif /* !SIMPLIFIED_READ */ #endif /* SIMPLIFIED READ/WRITE */ @@ -2401,9 +2150,8 @@ PNG_INTERNAL_FUNCTION(void, png_image_free, * the generic code is used. */ #ifdef PNG_FILTER_OPTIMIZATIONS -PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, - (png_structp png_ptr, unsigned int bpp), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, (png_structp png_ptr, + unsigned int bpp), PNG_EMPTY); /* Just declare the optimization that will be used */ #else /* List *all* the possible optimizations here - this branch is required if @@ -2412,44 +2160,32 @@ PNG_INTERNAL_FUNCTION(void, PNG_FILTER_OPTIMIZATIONS, */ # if PNG_ARM_NEON_OPT > 0 PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_neon, - (png_structp png_ptr, unsigned int bpp), - PNG_EMPTY); + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); #endif #if PNG_MIPS_MSA_IMPLEMENTATION == 1 PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_mips, - (png_structp png_ptr, unsigned int bpp), - PNG_EMPTY); + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); #endif # if PNG_MIPS_MMI_IMPLEMENTATION > 0 PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_mips, - (png_structp png_ptr, unsigned int bpp), - PNG_EMPTY); + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); # endif # if PNG_INTEL_SSE_IMPLEMENTATION > 0 PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_sse2, - (png_structp png_ptr, unsigned int bpp), - PNG_EMPTY); + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); # endif #endif #if PNG_LOONGARCH_LSX_OPT > 0 PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_lsx, - (png_structp png_ptr, unsigned int bpp), - PNG_EMPTY); + (png_structp png_ptr, unsigned int bpp), PNG_EMPTY); #endif -# if PNG_RISCV_RVV_IMPLEMENTATION == 1 -PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_rvv, - (png_structp png_ptr, unsigned int bpp), - PNG_EMPTY); -#endif - -PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, - (png_structrp png_ptr, png_const_charp key, png_bytep new_key), - PNG_EMPTY); +PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr, + png_const_charp key, png_bytep new_key), PNG_EMPTY); #if PNG_ARM_NEON_IMPLEMENTATION == 1 PNG_INTERNAL_FUNCTION(void, @@ -2483,3 +2219,4 @@ PNG_INTERNAL_FUNCTION(int, #endif #endif /* PNG_VERSION_INFO_ONLY */ +#endif /* PNGPRIV_H */ diff --git a/icecat/media/libpng/pngread.c b/icecat/media/libpng/pngread.c index 190c000587..a9d11ef498 100644 --- a/icecat/media/libpng/pngread.c +++ b/icecat/media/libpng/pngread.c @@ -1,6 +1,6 @@ /* pngread.c - read a PNG file * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -23,8 +23,7 @@ /* Create a PNG structure for reading, and allocate any memory needed. */ PNG_FUNCTION(png_structp,PNGAPI png_create_read_struct,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn), - PNG_ALLOCATED) + png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED) { #ifndef PNG_USER_MEM_SUPPORTED png_structp png_ptr = png_create_png_struct(user_png_ver, error_ptr, @@ -40,8 +39,7 @@ png_create_read_struct,(png_const_charp user_png_ver, png_voidp error_ptr, PNG_FUNCTION(png_structp,PNGAPI png_create_read_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED) + png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) { png_structp png_ptr = png_create_png_struct(user_png_ver, error_ptr, error_fn, warn_fn, mem_ptr, malloc_fn, free_fn); @@ -601,6 +599,7 @@ png_read_row(png_structrp png_ptr, png_bytep row, png_bytep dsp_row) if (png_ptr->read_row_fn != NULL) (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); + } #endif /* SEQUENTIAL_READ */ @@ -771,7 +770,7 @@ png_read_end(png_structrp png_ptr, png_inforp info_ptr) png_read_finish_IDAT(png_ptr); #ifdef PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Report invalid palette index; added at libpng-1.5.10 */ + /* Report invalid palette index; added at libng-1.5.10 */ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && png_ptr->num_palette_max >= png_ptr->num_palette) png_benign_error(png_ptr, "Read palette index exceeding num_palette"); @@ -783,12 +782,7 @@ png_read_end(png_structrp png_ptr, png_inforp info_ptr) png_uint_32 chunk_name = png_ptr->chunk_name; if (chunk_name != png_IDAT) - { - /* These flags must be set consistently for all non-IDAT chunks, - * including the unknown chunks. - */ - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT | PNG_AFTER_IDAT; - } + png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; if (chunk_name == png_IEND) png_handle_chunk(png_ptr, info_ptr, length); @@ -859,19 +853,21 @@ png_read_destroy(png_structrp png_ptr) png_ptr->quantize_index = NULL; #endif - /* png_ptr->palette is always independently allocated (not aliased - * with info_ptr->palette), so free it unconditionally. - */ - png_free(png_ptr, png_ptr->palette); - png_ptr->palette = NULL; + if ((png_ptr->free_me & PNG_FREE_PLTE) != 0) + { + png_zfree(png_ptr, png_ptr->palette); + png_ptr->palette = NULL; + } + png_ptr->free_me &= ~PNG_FREE_PLTE; #if defined(PNG_tRNS_SUPPORTED) || \ defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - /* png_ptr->trans_alpha is always independently allocated (not aliased - * with info_ptr->trans_alpha), so free it unconditionally. - */ - png_free(png_ptr, png_ptr->trans_alpha); - png_ptr->trans_alpha = NULL; + if ((png_ptr->free_me & PNG_FREE_TRNS) != 0) + { + png_free(png_ptr, png_ptr->trans_alpha); + png_ptr->trans_alpha = NULL; + } + png_ptr->free_me &= ~PNG_FREE_TRNS; #endif inflateEnd(&png_ptr->zstream); @@ -893,8 +889,7 @@ png_read_destroy(png_structrp png_ptr) #endif #if defined(PNG_READ_EXPAND_SUPPORTED) && \ - (defined(PNG_ARM_NEON_IMPLEMENTATION) || \ - defined(PNG_RISCV_RVV_IMPLEMENTATION)) + defined(PNG_ARM_NEON_IMPLEMENTATION) png_free(png_ptr, png_ptr->riffled_palette); png_ptr->riffled_palette = NULL; #endif @@ -946,7 +941,7 @@ png_set_read_status_fn(png_structrp png_ptr, png_read_status_ptr read_row_fn) #ifdef PNG_INFO_IMAGE_SUPPORTED void PNGAPI png_read_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, png_voidp params) + int transforms, voidp params) { png_debug(1, "in png_read_png"); @@ -1183,20 +1178,19 @@ png_read_png(png_structrp png_ptr, png_inforp info_ptr, typedef struct { - /* Arguments */ + /* Arguments: */ png_imagep image; - png_voidp buffer; + png_voidp buffer; png_int_32 row_stride; - png_voidp colormap; + png_voidp colormap; png_const_colorp background; - - /* Instance variables */ - png_voidp local_row; - png_voidp first_row; - ptrdiff_t row_step; /* step between rows */ - int file_encoding; /* E_ values above */ - png_fixed_point gamma_to_linear; /* For P_FILE, reciprocal of gamma */ - int colormap_processing; /* PNG_CMAP_ values above */ + /* Local variables: */ + png_voidp local_row; + png_voidp first_row; + ptrdiff_t row_bytes; /* step between rows */ + int file_encoding; /* E_ values above */ + png_fixed_point gamma_to_linear; /* For P_FILE, reciprocal of gamma */ + int colormap_processing; /* PNG_CMAP_ values above */ } png_image_read_control; /* Do all the *safe* initialization - 'safe' means that png_error won't be @@ -1334,7 +1328,7 @@ png_image_is_not_sRGB(png_const_structrp png_ptr) * png_struct::chromaticities always exists since the simplified API * requires rgb-to-gray. The mDCV, cICP and cHRM chunks may all set it to * a non-sRGB value, so it needs to be checked but **only** if one of - * those chunks occurred in the file. + * those chunks occured in the file. */ /* Highest priority: check to be safe. */ if (png_has_chunk(png_ptr, cICP) || png_has_chunk(png_ptr, mDCV)) @@ -1414,7 +1408,7 @@ png_image_read_header(png_voidp argument) #ifdef PNG_STDIO_SUPPORTED int PNGAPI -png_image_begin_read_from_stdio(png_imagep image, FILE *file) +png_image_begin_read_from_stdio(png_imagep image, FILE* file) { if (image != NULL && image->version == PNG_IMAGE_VERSION) { @@ -2674,7 +2668,7 @@ png_image_read_colormap(png_voidp argument) { r = back_r; g = back_g; - b = back_b; + b = back_g; } /* Compare the newly-created color-map entry with the one the @@ -2917,17 +2911,17 @@ png_image_read_and_map(png_voidp argument) } { - png_uint_32 height = image->height; - png_uint_32 width = image->width; - int proc = display->colormap_processing; - png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t row_step = display->row_step; + png_uint_32 height = image->height; + png_uint_32 width = image->width; + int proc = display->colormap_processing; + png_bytep first_row = png_voidcast(png_bytep, display->first_row); + ptrdiff_t step_row = display->row_bytes; int pass; for (pass = 0; pass < passes; ++pass) { - unsigned int startx, stepx, stepy; - png_uint_32 y; + unsigned int startx, stepx, stepy; + png_uint_32 y; if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) { @@ -2951,10 +2945,10 @@ png_image_read_and_map(png_voidp argument) for (; ylocal_row); - png_bytep outrow = first_row + y * row_step; - png_const_bytep row_end = outrow + width; + png_bytep outrow = first_row + y * step_row; + png_const_bytep end_row = outrow + width; - /* Read the libpng data into the temporary buffer. */ + /* Read read the libpng data into the temporary buffer. */ png_read_row(png_ptr, inrow, NULL); /* Now process the row according to the processing option, note @@ -2965,7 +2959,7 @@ png_image_read_and_map(png_voidp argument) switch (proc) { case PNG_CMAP_GA: - for (; outrow < row_end; outrow += stepx) + for (; outrow < end_row; outrow += stepx) { /* The data is always in the PNG order */ unsigned int gray = *inrow++; @@ -2994,7 +2988,7 @@ png_image_read_and_map(png_voidp argument) break; case PNG_CMAP_TRANS: - for (; outrow < row_end; outrow += stepx) + for (; outrow < end_row; outrow += stepx) { png_byte gray = *inrow++; png_byte alpha = *inrow++; @@ -3011,7 +3005,7 @@ png_image_read_and_map(png_voidp argument) break; case PNG_CMAP_RGB: - for (; outrow < row_end; outrow += stepx) + for (; outrow < end_row; outrow += stepx) { *outrow = PNG_RGB_INDEX(inrow[0], inrow[1], inrow[2]); inrow += 3; @@ -3019,7 +3013,7 @@ png_image_read_and_map(png_voidp argument) break; case PNG_CMAP_RGB_ALPHA: - for (; outrow < row_end; outrow += stepx) + for (; outrow < end_row; outrow += stepx) { unsigned int alpha = inrow[3]; @@ -3056,10 +3050,10 @@ png_image_read_and_map(png_voidp argument) */ if (inrow[0] & 0x80) back_i += 9; /* red */ if (inrow[0] & 0x40) back_i += 9; - if (inrow[1] & 0x80) back_i += 3; /* green */ - if (inrow[1] & 0x40) back_i += 3; - if (inrow[2] & 0x80) back_i += 1; /* blue */ - if (inrow[2] & 0x40) back_i += 1; + if (inrow[0] & 0x80) back_i += 3; /* green */ + if (inrow[0] & 0x40) back_i += 3; + if (inrow[0] & 0x80) back_i += 1; /* blue */ + if (inrow[0] & 0x40) back_i += 1; *outrow = (png_byte)back_i; } @@ -3160,20 +3154,20 @@ png_image_read_colormapped(png_voidp argument) */ { png_voidp first_row = display->buffer; - ptrdiff_t row_step = display->row_stride; + ptrdiff_t row_bytes = display->row_stride; - /* The following adjustment is to ensure that calculations are correct, - * regardless whether row_step is positive or negative. + /* The following expression is designed to work correctly whether it gives + * a signed or an unsigned result. */ - if (row_step < 0) + if (row_bytes < 0) { char *ptr = png_voidcast(char*, first_row); - ptr += (image->height-1) * (-row_step); + ptr += (image->height-1) * (-row_bytes); first_row = png_voidcast(png_voidp, ptr); } display->first_row = first_row; - display->row_step = row_step; + display->row_bytes = row_bytes; } if (passes == 0) @@ -3191,17 +3185,17 @@ png_image_read_colormapped(png_voidp argument) else { - ptrdiff_t row_step = display->row_step; + png_alloc_size_t row_bytes = (png_alloc_size_t)display->row_bytes; while (--passes >= 0) { - png_uint_32 y = image->height; - png_bytep row = png_voidcast(png_bytep, display->first_row); + png_uint_32 y = image->height; + png_bytep row = png_voidcast(png_bytep, display->first_row); for (; y > 0; --y) { png_read_row(png_ptr, row, NULL); - row += row_step; + row += row_bytes; } } @@ -3209,61 +3203,6 @@ png_image_read_colormapped(png_voidp argument) } } -/* Row reading for interlaced 16-to-8 bit depth conversion with local buffer. */ -static int -png_image_read_direct_scaled(png_voidp argument) -{ - png_image_read_control *display = png_voidcast(png_image_read_control*, - argument); - png_imagep image = display->image; - png_structrp png_ptr = image->opaque->png_ptr; - png_inforp info_ptr = image->opaque->info_ptr; - png_bytep local_row = png_voidcast(png_bytep, display->local_row); - png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t row_step = display->row_step; - size_t row_bytes = png_get_rowbytes(png_ptr, info_ptr); - int passes; - - /* Handle interlacing. */ - switch (png_ptr->interlaced) - { - case PNG_INTERLACE_NONE: - passes = 1; - break; - - case PNG_INTERLACE_ADAM7: - passes = PNG_INTERLACE_ADAM7_PASSES; - break; - - default: - png_error(png_ptr, "unknown interlace type"); - } - - /* Read each pass using local_row as intermediate buffer. */ - while (--passes >= 0) - { - png_uint_32 y = image->height; - png_bytep output_row = first_row; - - for (; y > 0; --y) - { - /* Read into local_row (gets transformed 8-bit data). */ - png_read_row(png_ptr, local_row, NULL); - - /* Copy from local_row to user buffer. - * Use row_bytes (i.e. the actual size in bytes of the row data) for - * copying into output_row. Use row_step for advancing output_row, - * to respect the caller's stride for padding or negative (bottom-up) - * layouts. - */ - memcpy(output_row, local_row, row_bytes); - output_row += row_step; - } - } - - return 1; -} - /* Just the row reading part of png_image_read. */ static int png_image_read_composite(png_voidp argument) @@ -3289,18 +3228,17 @@ png_image_read_composite(png_voidp argument) } { - png_uint_32 height = image->height; - png_uint_32 width = image->width; - ptrdiff_t row_step = display->row_step; + png_uint_32 height = image->height; + png_uint_32 width = image->width; + ptrdiff_t step_row = display->row_bytes; unsigned int channels = (image->format & PNG_FORMAT_FLAG_COLOR) != 0 ? 3 : 1; - int optimize_alpha = (png_ptr->flags & PNG_FLAG_OPTIMIZE_ALPHA) != 0; int pass; for (pass = 0; pass < passes; ++pass) { - unsigned int startx, stepx, stepy; - png_uint_32 y; + unsigned int startx, stepx, stepy; + png_uint_32 y; if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) { @@ -3326,18 +3264,18 @@ png_image_read_composite(png_voidp argument) { png_bytep inrow = png_voidcast(png_bytep, display->local_row); png_bytep outrow; - png_const_bytep row_end; + png_const_bytep end_row; /* Read the row, which is packed: */ png_read_row(png_ptr, inrow, NULL); outrow = png_voidcast(png_bytep, display->first_row); - outrow += y * row_step; - row_end = outrow + width * channels; + outrow += y * step_row; + end_row = outrow + width * channels; /* Now do the composition on each pixel in this row. */ outrow += startx; - for (; outrow < row_end; outrow += stepx) + for (; outrow < end_row; outrow += stepx) { png_byte alpha = inrow[channels]; @@ -3351,44 +3289,20 @@ png_image_read_composite(png_voidp argument) if (alpha < 255) /* else just use component */ { - if (optimize_alpha != 0) - { - /* This is PNG_OPTIMIZED_ALPHA, the component value - * is a linear 8-bit value. Combine this with the - * current outrow[c] value which is sRGB encoded. - * Arithmetic here is 16-bits to preserve the output - * values correctly. - */ - component *= 257*255; /* =65535 */ - component += (255-alpha)*png_sRGB_table[outrow[c]]; + /* This is PNG_OPTIMIZED_ALPHA, the component value + * is a linear 8-bit value. Combine this with the + * current outrow[c] value which is sRGB encoded. + * Arithmetic here is 16-bits to preserve the output + * values correctly. + */ + component *= 257*255; /* =65535 */ + component += (255-alpha)*png_sRGB_table[outrow[c]]; - /* Clamp to the valid range to defend against - * unforeseen cases where the data might be sRGB - * instead of linear premultiplied. - * (Belt-and-suspenders for CVE-2025-66293.) - */ - if (component > 255*65535) - component = 255*65535; - - /* So 'component' is scaled by 255*65535 and is - * therefore appropriate for the sRGB-to-linear - * conversion table. - */ - component = PNG_sRGB_FROM_LINEAR(component); - } - else - { - /* Compositing was already done on the palette - * entries. The data is sRGB premultiplied on black. - * Composite with the background in sRGB space. - * This is not gamma-correct, but matches what was - * done to the palette. - */ - png_uint_32 background = outrow[c]; - component += ((255-alpha) * background + 127) / 255; - if (component > 255) - component = 255; - } + /* So 'component' is scaled by 255*65535 and is + * therefore appropriate for the sRGB to linear + * conversion table. + */ + component = PNG_sRGB_FROM_LINEAR(component); } outrow[c] = (png_byte)component; @@ -3477,12 +3391,12 @@ png_image_read_background(png_voidp argument) */ { png_bytep first_row = png_voidcast(png_bytep, display->first_row); - ptrdiff_t row_step = display->row_step; + ptrdiff_t step_row = display->row_bytes; for (pass = 0; pass < passes; ++pass) { - unsigned int startx, stepx, stepy; - png_uint_32 y; + unsigned int startx, stepx, stepy; + png_uint_32 y; if (png_ptr->interlaced == PNG_INTERLACE_ADAM7) { @@ -3509,15 +3423,15 @@ png_image_read_background(png_voidp argument) { png_bytep inrow = png_voidcast(png_bytep, display->local_row); - png_bytep outrow = first_row + y * row_step; - png_const_bytep row_end = outrow + width; + png_bytep outrow = first_row + y * step_row; + png_const_bytep end_row = outrow + width; /* Read the row, which is packed: */ png_read_row(png_ptr, inrow, NULL); /* Now do the composition on each pixel in this row. */ outrow += startx; - for (; outrow < row_end; outrow += stepx) + for (; outrow < end_row; outrow += stepx) { png_byte alpha = inrow[1]; @@ -3554,15 +3468,15 @@ png_image_read_background(png_voidp argument) { png_bytep inrow = png_voidcast(png_bytep, display->local_row); - png_bytep outrow = first_row + y * row_step; - png_const_bytep row_end = outrow + width; + png_bytep outrow = first_row + y * step_row; + png_const_bytep end_row = outrow + width; /* Read the row, which is packed: */ png_read_row(png_ptr, inrow, NULL); /* Now do the composition on each pixel in this row. */ outrow += startx; - for (; outrow < row_end; outrow += stepx) + for (; outrow < end_row; outrow += stepx) { png_byte alpha = inrow[1]; @@ -3600,9 +3514,9 @@ png_image_read_background(png_voidp argument) png_uint_16p first_row = png_voidcast(png_uint_16p, display->first_row); /* The division by two is safe because the caller passed in a - * stride which was multiplied by 2 (below) to get row_step. + * stride which was multiplied by 2 (below) to get row_bytes. */ - ptrdiff_t row_step = display->row_step / 2; + ptrdiff_t step_row = display->row_bytes / 2; unsigned int preserve_alpha = (image->format & PNG_FORMAT_FLAG_ALPHA) != 0; unsigned int outchannels = 1U+preserve_alpha; @@ -3616,8 +3530,8 @@ png_image_read_background(png_voidp argument) for (pass = 0; pass < passes; ++pass) { - unsigned int startx, stepx, stepy; - png_uint_32 y; + unsigned int startx, stepx, stepy; + png_uint_32 y; /* The 'x' start and step are adjusted to output components here. */ @@ -3644,8 +3558,8 @@ png_image_read_background(png_voidp argument) for (; yinterlaced != 0) - do_local_scale = 1; - } - change &= ~PNG_FORMAT_FLAG_LINEAR; } @@ -4081,23 +3986,23 @@ png_image_read_direct(png_voidp argument) */ { png_voidp first_row = display->buffer; - ptrdiff_t row_step = display->row_stride; + ptrdiff_t row_bytes = display->row_stride; if (linear != 0) - row_step *= 2; + row_bytes *= 2; - /* The following adjustment is to ensure that calculations are correct, - * regardless whether row_step is positive or negative. + /* The following expression is designed to work correctly whether it gives + * a signed or an unsigned result. */ - if (row_step < 0) + if (row_bytes < 0) { char *ptr = png_voidcast(char*, first_row); - ptr += (image->height - 1) * (-row_step); + ptr += (image->height-1) * (-row_bytes); first_row = png_voidcast(png_voidp, ptr); } display->first_row = first_row; - display->row_step = row_step; + display->row_bytes = row_bytes; } if (do_local_compose != 0) @@ -4126,37 +4031,19 @@ png_image_read_direct(png_voidp argument) return result; } - else if (do_local_scale != 0) - { - /* For interlaced 16-to-8 conversion, use an intermediate row buffer - * to avoid buffer overflows in png_combine_row. The local_row is sized - * for the transformed (8-bit) output, preventing the overflow that would - * occur if png_combine_row wrote 16-bit data directly to the user buffer. - */ - int result; - png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr)); - - display->local_row = row; - result = png_safe_execute(image, png_image_read_direct_scaled, display); - display->local_row = NULL; - png_free(png_ptr, row); - - return result; - } - else { - ptrdiff_t row_step = display->row_step; + png_alloc_size_t row_bytes = (png_alloc_size_t)display->row_bytes; while (--passes >= 0) { - png_uint_32 y = image->height; - png_bytep row = png_voidcast(png_bytep, display->first_row); + png_uint_32 y = image->height; + png_bytep row = png_voidcast(png_bytep, display->first_row); for (; y > 0; --y) { png_read_row(png_ptr, row, NULL); - row += row_step; + row += row_bytes; } } @@ -4191,7 +4078,7 @@ png_image_finish_read(png_imagep image, png_const_colorp background, row_stride = (png_int_32)/*SAFE*/png_row_stride; if (row_stride < 0) - check = -(png_uint_32)row_stride; + check = (png_uint_32)(-row_stride); else check = (png_uint_32)row_stride; diff --git a/icecat/media/libpng/pngrio.c b/icecat/media/libpng/pngrio.c index b4a216161b..3b137f275f 100644 --- a/icecat/media/libpng/pngrio.c +++ b/icecat/media/libpng/pngrio.c @@ -1,6 +1,6 @@ /* pngrio.c - functions for data input * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -56,7 +56,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, size_t length) /* fread() returns 0 on error, so it is OK to store this in a size_t * instead of an int, which is what fread() actually returns. */ - check = fread(data, 1, length, png_voidcast(FILE *, png_ptr->io_ptr)); + check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr)); if (check != length) png_error(png_ptr, "Read Error"); diff --git a/icecat/media/libpng/pngrtran.c b/icecat/media/libpng/pngrtran.c index 0ac8df749e..a6ce30a523 100644 --- a/icecat/media/libpng/pngrtran.c +++ b/icecat/media/libpng/pngrtran.c @@ -1,6 +1,6 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -28,12 +28,6 @@ # endif #endif -#ifdef PNG_RISCV_RVV_IMPLEMENTATION -# if PNG_RISCV_RVV_IMPLEMENTATION == 1 -# define PNG_RISCV_RVV_INTRINSICS_AVAILABLE -# endif -#endif - #ifdef PNG_READ_SUPPORTED /* Set the action on getting a CRC error for an ancillary or critical chunk. */ @@ -230,7 +224,7 @@ png_set_strip_alpha(png_structrp png_ptr) * * Terminology (assuming power law, "gamma", encodings): * "screen" gamma: a power law imposed by the output device when digital - * samples are converted to visible light output. The EOTF - voltage to + * samples are converted to visible light output. The EOTF - volage to * luminance on output. * * "file" gamma: a power law used to encode luminance levels from the input @@ -495,28 +489,15 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, if (png_rtran_ok(png_ptr, 0) == 0) return; - if (palette == NULL) - return; - png_ptr->transformations |= PNG_QUANTIZE; if (full_quantize == 0) { int i; - /* Initialize the array to index colors. - * - * Ensure quantize_index can fit 256 elements (PNG_MAX_PALETTE_LENGTH) - * rather than num_palette elements. This is to prevent buffer overflows - * caused by malformed PNG files with out-of-range palette indices. - * - * Be careful to avoid leaking memory. Applications are allowed to call - * this function more than once per png_struct. - */ - png_free(png_ptr, png_ptr->quantize_index); png_ptr->quantize_index = (png_bytep)png_malloc(png_ptr, - PNG_MAX_PALETTE_LENGTH); - for (i = 0; i < PNG_MAX_PALETTE_LENGTH; i++) + (png_alloc_size_t)num_palette); + for (i = 0; i < num_palette; i++) png_ptr->quantize_index[i] = (png_byte)i; } @@ -528,14 +509,15 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, * Perhaps not the best solution, but good enough. */ - png_bytep quantize_sort; - int i, j; + int i; - /* Initialize the local array to sort colors. */ - quantize_sort = (png_bytep)png_malloc(png_ptr, + /* Initialize an array to sort colors */ + png_ptr->quantize_sort = (png_bytep)png_malloc(png_ptr, (png_alloc_size_t)num_palette); + + /* Initialize the quantize_sort array */ for (i = 0; i < num_palette; i++) - quantize_sort[i] = (png_byte)i; + png_ptr->quantize_sort[i] = (png_byte)i; /* Find the least used palette entries by starting a * bubble sort, and running it until we have sorted @@ -547,18 +529,19 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, for (i = num_palette - 1; i >= maximum_colors; i--) { int done; /* To stop early if the list is pre-sorted */ + int j; done = 1; for (j = 0; j < i; j++) { - if (histogram[quantize_sort[j]] - < histogram[quantize_sort[j + 1]]) + if (histogram[png_ptr->quantize_sort[j]] + < histogram[png_ptr->quantize_sort[j + 1]]) { png_byte t; - t = quantize_sort[j]; - quantize_sort[j] = quantize_sort[j + 1]; - quantize_sort[j + 1] = t; + t = png_ptr->quantize_sort[j]; + png_ptr->quantize_sort[j] = png_ptr->quantize_sort[j + 1]; + png_ptr->quantize_sort[j + 1] = t; done = 0; } } @@ -570,18 +553,18 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, /* Swap the palette around, and set up a table, if necessary */ if (full_quantize != 0) { - j = num_palette; + int j = num_palette; /* Put all the useful colors within the max, but don't * move the others. */ for (i = 0; i < maximum_colors; i++) { - if ((int)quantize_sort[i] >= maximum_colors) + if ((int)png_ptr->quantize_sort[i] >= maximum_colors) { do j--; - while ((int)quantize_sort[j] >= maximum_colors); + while ((int)png_ptr->quantize_sort[j] >= maximum_colors); palette[i] = palette[j]; } @@ -589,7 +572,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, } else { - j = num_palette; + int j = num_palette; /* Move all the used colors inside the max limit, and * develop a translation table. @@ -597,13 +580,13 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, for (i = 0; i < maximum_colors; i++) { /* Only move the colors we need to */ - if ((int)quantize_sort[i] >= maximum_colors) + if ((int)png_ptr->quantize_sort[i] >= maximum_colors) { png_color tmp_color; do j--; - while ((int)quantize_sort[j] >= maximum_colors); + while ((int)png_ptr->quantize_sort[j] >= maximum_colors); tmp_color = palette[j]; palette[j] = palette[i]; @@ -641,7 +624,8 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, } } } - png_free(png_ptr, quantize_sort); + png_free(png_ptr, png_ptr->quantize_sort); + png_ptr->quantize_sort = NULL; } else { @@ -711,8 +695,8 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, break; t->next = hash[d]; - t->left = png_ptr->palette_to_index[i]; - t->right = png_ptr->palette_to_index[j]; + t->left = (png_byte)i; + t->right = (png_byte)j; hash[d] = t; } } @@ -814,13 +798,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette, } if (png_ptr->palette == NULL) { - /* Allocate an owned copy rather than aliasing the caller's pointer, - * so that png_read_destroy can free png_ptr->palette unconditionally. - */ - png_ptr->palette = png_voidcast(png_colorp, png_calloc(png_ptr, - PNG_MAX_PALETTE_LENGTH * (sizeof (png_color)))); - memcpy(png_ptr->palette, palette, (unsigned int)num_palette * - (sizeof (png_color))); + png_ptr->palette = palette; } png_ptr->num_palette = (png_uint_16)num_palette; @@ -1129,8 +1107,8 @@ png_set_rgb_to_gray(png_structrp png_ptr, int error_action, double red, #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) void PNGAPI -png_set_read_user_transform_fn(png_structrp png_ptr, - png_user_transform_ptr read_user_transform_fn) +png_set_read_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr + read_user_transform_fn) { png_debug(1, "in png_set_read_user_transform_fn"); @@ -1373,7 +1351,7 @@ png_resolve_file_gamma(png_const_structrp png_ptr) if (file_gamma != 0) return file_gamma; - /* If png_reciprocal overflows, it returns 0, indicating to the caller that + /* If png_reciprocal oveflows it returns 0 which indicates to the caller that * there is no usable file gamma. (The checks added to png_set_gamma and * png_set_alpha_mode should prevent a screen_gamma which would overflow.) */ @@ -1790,51 +1768,19 @@ png_init_read_transformations(png_structrp png_ptr) } else /* if (png_ptr->trans_alpha[i] != 0xff) */ { - if ((png_ptr->flags & PNG_FLAG_OPTIMIZE_ALPHA) != 0) - { - /* Premultiply only: - * component = round((component * alpha) / 255) - */ - png_uint_32 component; + png_byte v, w; - component = png_ptr->gamma_to_1[palette[i].red]; - component = - (component * png_ptr->trans_alpha[i] + 128) / 255; - palette[i].red = png_ptr->gamma_from_1[component]; + v = png_ptr->gamma_to_1[palette[i].red]; + png_composite(w, v, png_ptr->trans_alpha[i], back_1.red); + palette[i].red = png_ptr->gamma_from_1[w]; - component = png_ptr->gamma_to_1[palette[i].green]; - component = - (component * png_ptr->trans_alpha[i] + 128) / 255; - palette[i].green = png_ptr->gamma_from_1[component]; + v = png_ptr->gamma_to_1[palette[i].green]; + png_composite(w, v, png_ptr->trans_alpha[i], back_1.green); + palette[i].green = png_ptr->gamma_from_1[w]; - component = png_ptr->gamma_to_1[palette[i].blue]; - component = - (component * png_ptr->trans_alpha[i] + 128) / 255; - palette[i].blue = png_ptr->gamma_from_1[component]; - } - else - { - /* Composite with background color: - * component = - * alpha * component + (1 - alpha) * background - */ - png_byte v, w; - - v = png_ptr->gamma_to_1[palette[i].red]; - png_composite(w, v, - png_ptr->trans_alpha[i], back_1.red); - palette[i].red = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].green]; - png_composite(w, v, - png_ptr->trans_alpha[i], back_1.green); - palette[i].green = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].blue]; - png_composite(w, v, - png_ptr->trans_alpha[i], back_1.blue); - palette[i].blue = png_ptr->gamma_from_1[w]; - } + v = png_ptr->gamma_to_1[palette[i].blue]; + png_composite(w, v, png_ptr->trans_alpha[i], back_1.blue); + palette[i].blue = png_ptr->gamma_from_1[w]; } } else @@ -1852,7 +1798,6 @@ png_init_read_transformations(png_structrp png_ptr) * transformations elsewhere. */ png_ptr->transformations &= ~(PNG_COMPOSE | PNG_GAMMA); - png_ptr->flags &= ~PNG_FLAG_OPTIMIZE_ALPHA; } /* color_type == PNG_COLOR_TYPE_PALETTE */ /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN) */ @@ -2070,17 +2015,6 @@ png_read_transform_info(png_structrp png_ptr, png_inforp info_ptr) { png_debug(1, "in png_read_transform_info"); - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - info_ptr->palette != NULL && png_ptr->palette != NULL) - { - /* Sync info_ptr->palette with png_ptr->palette, which may - * have been modified by png_init_read_transformations - * (e.g. for gamma correction or background compositing). - */ - memcpy(info_ptr->palette, png_ptr->palette, - PNG_MAX_PALETTE_LENGTH * (sizeof (png_color))); - } - #ifdef PNG_READ_EXPAND_SUPPORTED if ((png_ptr->transformations & PNG_EXPAND) != 0) { @@ -2375,7 +2309,7 @@ png_do_unpack(png_row_infop row_info, png_bytep row) } row_info->bit_depth = 8; row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = (size_t)row_width * row_info->channels; + row_info->rowbytes = row_width * row_info->channels; } } #endif @@ -2577,7 +2511,7 @@ png_do_scale_16_to_8(png_row_infop row_info, png_bytep row) row_info->bit_depth = 8; row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = (size_t)row_info->width * row_info->channels; + row_info->rowbytes = row_info->width * row_info->channels; } } #endif @@ -2605,7 +2539,7 @@ png_do_chop(png_row_infop row_info, png_bytep row) row_info->bit_depth = 8; row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = (size_t)row_info->width * row_info->channels; + row_info->rowbytes = row_info->width * row_info->channels; } } #endif @@ -2841,7 +2775,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, *(--dp) = lo_filler; row_info->channels = 2; row_info->pixel_depth = 16; - row_info->rowbytes = (size_t)row_width * 2; + row_info->rowbytes = row_width * 2; } else @@ -2856,7 +2790,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, } row_info->channels = 2; row_info->pixel_depth = 16; - row_info->rowbytes = (size_t)row_width * 2; + row_info->rowbytes = row_width * 2; } } @@ -2879,7 +2813,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, *(--dp) = hi_filler; row_info->channels = 2; row_info->pixel_depth = 32; - row_info->rowbytes = (size_t)row_width * 4; + row_info->rowbytes = row_width * 4; } else @@ -2896,7 +2830,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, } row_info->channels = 2; row_info->pixel_depth = 32; - row_info->rowbytes = (size_t)row_width * 4; + row_info->rowbytes = row_width * 4; } } #endif @@ -2920,7 +2854,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, *(--dp) = lo_filler; row_info->channels = 4; row_info->pixel_depth = 32; - row_info->rowbytes = (size_t)row_width * 4; + row_info->rowbytes = row_width * 4; } else @@ -2937,7 +2871,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, } row_info->channels = 4; row_info->pixel_depth = 32; - row_info->rowbytes = (size_t)row_width * 4; + row_info->rowbytes = row_width * 4; } } @@ -2964,7 +2898,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, *(--dp) = hi_filler; row_info->channels = 4; row_info->pixel_depth = 64; - row_info->rowbytes = (size_t)row_width * 8; + row_info->rowbytes = row_width * 8; } else @@ -2986,7 +2920,7 @@ png_do_read_filler(png_row_infop row_info, png_bytep row, row_info->channels = 4; row_info->pixel_depth = 64; - row_info->rowbytes = (size_t)row_width * 8; + row_info->rowbytes = row_width * 8; } } #endif @@ -4480,7 +4414,7 @@ png_do_expand_palette(png_structrp png_ptr, png_row_infop row_info, } row_info->bit_depth = 8; row_info->pixel_depth = 32; - row_info->rowbytes = (size_t)row_width * 4; + row_info->rowbytes = row_width * 4; row_info->color_type = 6; row_info->channels = 4; } @@ -4488,7 +4422,7 @@ png_do_expand_palette(png_structrp png_ptr, png_row_infop row_info, else { sp = row + (size_t)row_width - 1; - dp = row + (size_t)row_width * 3 - 1; + dp = row + (size_t)(row_width * 3) - 1; i = 0; #ifdef PNG_ARM_NEON_INTRINSICS_AVAILABLE i = png_do_expand_palette_rgb8_neon(png_ptr, row_info, row, @@ -4507,7 +4441,7 @@ png_do_expand_palette(png_structrp png_ptr, png_row_infop row_info, row_info->bit_depth = 8; row_info->pixel_depth = 24; - row_info->rowbytes = (size_t)row_width * 3; + row_info->rowbytes = row_width * 3; row_info->color_type = 2; row_info->channels = 3; } @@ -5069,8 +5003,13 @@ png_do_read_transformations(png_structrp png_ptr, png_row_infop row_info) #ifdef PNG_READ_QUANTIZE_SUPPORTED if ((png_ptr->transformations & PNG_QUANTIZE) != 0) + { png_do_quantize(row_info, png_ptr->row_buf + 1, png_ptr->palette_lookup, png_ptr->quantize_index); + + if (row_info->rowbytes == 0) + png_error(png_ptr, "png_do_quantize returned rowbytes=0"); + } #endif /* READ_QUANTIZE */ #ifdef PNG_READ_EXPAND_16_SUPPORTED diff --git a/icecat/media/libpng/pngrutil.c b/icecat/media/libpng/pngrutil.c index b65e09b27f..29cb7a348e 100644 --- a/icecat/media/libpng/pngrutil.c +++ b/icecat/media/libpng/pngrutil.c @@ -1,6 +1,6 @@ /* pngrutil.c - utilities to read a PNG file * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -436,7 +436,7 @@ png_inflate_claim(png_structrp png_ptr, png_uint_32 owner) * be gained by using this when it is known *if* the zlib stream itself does * not record the number; however, this is an illusion: the original writer * of the PNG may have selected a lower window size, and we really must - * follow that because, for systems with limited capabilities, we + * follow that because, for systems with with limited capabilities, we * would otherwise reject the application's attempts to use a smaller window * size (zlib doesn't have an interface to say "this or lower"!). * @@ -1011,7 +1011,7 @@ png_handle_PLTE(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) * in the case of an 8-bit display with a decoder which controls the palette. * * The alternative here is to ignore the error and store the palette anyway; - * destroying the tRNS will definitely cause problems. + * destroying the tRNS will definately cause problems. * * NOTE: the case of PNG_COLOR_TYPE_PALETTE need not be considered because * the png_handle_ routines for the three 'after PLTE' chunks tRNS, bKGD and @@ -1058,6 +1058,19 @@ png_handle_PLTE(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) /* A valid PLTE chunk has been read */ png_ptr->mode |= PNG_HAVE_PLTE; + /* TODO: png_set_PLTE has the side effect of setting png_ptr->palette to + * its own copy of the palette. This has the side effect that when + * png_start_row is called (this happens after any call to + * png_read_update_info) the info_ptr palette gets changed. This is + * extremely unexpected and confusing. + * + * REVIEW: there have been consistent bugs in the past about gamma and + * similar transforms to colour mapped images being useless because the + * modified palette cannot be accessed because of the above. + * + * CONSIDER: Fix this by not sharing the palette in this way. But does + * this completely fix the problem? + */ png_set_PLTE(png_ptr, info_ptr, palette, num); return handled_ok; } @@ -1259,7 +1272,7 @@ png_handle_cHRM(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) /* png_set_cHRM may complain about some of the values but this doesn't matter * because it was a cHRM and it did have vaguely (if, perhaps, ridiculous) - * values. Ridiculosity will be checked if the values are used later. + * values. Ridiculousity will be checked if the values are used later. */ png_set_cHRM_fixed(png_ptr, info_ptr, xy.whitex, xy.whitey, xy.redx, xy.redy, xy.greenx, xy.greeny, xy.bluex, xy.bluey); @@ -1556,8 +1569,7 @@ static png_handle_result_code /* PRIVATE */ png_handle_sPLT(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) /* Note: this does not properly handle chunks that are > 64K under DOS */ { - png_bytep buffer; - png_bytep entry_start; + png_bytep entry_start, buffer; png_sPLT_t new_palette; png_sPLT_entryp pp; png_uint_32 data_length; @@ -1764,6 +1776,10 @@ png_handle_tRNS(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) return handled_error; } + /* TODO: this is a horrible side effect in the palette case because the + * png_struct ends up with a pointer to the tRNS buffer owned by the + * png_info. Fix this. + */ png_set_tRNS(png_ptr, info_ptr, readbuf, png_ptr->num_trans, &(png_ptr->trans_color)); return handled_ok; @@ -2022,7 +2038,7 @@ png_handle_eXIf(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) return handled_error; /* PNGv3: the code used to check the byte order mark at the start for MM or - * II, however PNGv3 states that the first 4 bytes should be checked. + * II, however PNGv3 states that the the first 4 bytes should be checked. * The caller ensures that there are four bytes available. */ { @@ -2144,13 +2160,9 @@ png_handle_oFFs(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) static png_handle_result_code /* PRIVATE */ png_handle_pCAL(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) { - png_bytep buffer; - png_bytep buf; - png_bytep endptr; png_int_32 X0, X1; - png_byte type; - png_byte nparams; - png_byte *units; + png_byte type, nparams; + png_bytep buffer, buf, units, endptr; png_charpp params; int i; @@ -2379,7 +2391,7 @@ png_handle_tIME(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) static png_handle_result_code /* PRIVATE */ png_handle_tEXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) { - png_text text_info; + png_text text_info; png_bytep buffer; png_charp key; png_charp text; @@ -2405,6 +2417,10 @@ png_handle_tEXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif + /* TODO: this doesn't work and shouldn't be necessary. */ + if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) + png_ptr->mode |= PNG_AFTER_IDAT; + buffer = png_read_buffer(png_ptr, length+1); if (buffer == NULL) @@ -2452,8 +2468,8 @@ static png_handle_result_code /* PRIVATE */ png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) { png_const_charp errmsg = NULL; - png_bytep buffer; - png_uint_32 keyword_length; + png_bytep buffer; + png_uint_32 keyword_length; png_debug(1, "in png_handle_zTXt"); @@ -2475,6 +2491,10 @@ png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif + /* TODO: should not be necessary. */ + if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) + png_ptr->mode |= PNG_AFTER_IDAT; + /* Note, "length" is sufficient here; we won't be adding * a null terminator later. The limit check in png_handle_chunk should be * sufficient. @@ -2591,6 +2611,10 @@ png_handle_iTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length) } #endif + /* TODO: should not be necessary. */ + if ((png_ptr->mode & PNG_HAVE_IDAT) != 0) + png_ptr->mode |= PNG_AFTER_IDAT; + buffer = png_read_buffer(png_ptr, length+1); if (buffer == NULL) @@ -3178,7 +3202,7 @@ static const struct png_uint_32 max_length :12; /* Length min, max in bytes */ png_uint_32 min_length :8; /* Length errors on critical chunks have special handling to preserve the - * existing behaviour in libpng 1.6. Ancillary chunks are checked below + * existing behaviour in libpng 1.6. Anciallary chunks are checked below * and produce a 'benign' error. */ png_uint_32 pos_before :4; /* PNG_HAVE_ values chunk must precede */ @@ -3186,7 +3210,7 @@ static const struct /* NOTE: PLTE, tRNS and bKGD require special handling which depends on * the colour type of the base image. */ - png_uint_32 multiple :1; /* Multiple occurrences permitted */ + png_uint_32 multiple :1; /* Multiple occurences permitted */ /* This is enabled for PLTE because PLTE may, in practice, be optional */ } read_chunks[PNG_INDEX_unknown] = @@ -3220,7 +3244,7 @@ read_chunks[PNG_INDEX_unknown] = # define CDIHDR 13U, 13U, hIHDR, 0, 0 # define CDPLTE NoCheck, 0U, 0, hIHDR, 1 /* PLTE errors are only critical for colour-map images, consequently the - * handler does all the checks. + * hander does all the checks. */ # define CDIDAT NoCheck, 0U, aIDAT, hIHDR, 1 # define CDIEND NoCheck, 0U, 0, aIDAT, 0 diff --git a/icecat/media/libpng/pngset.c b/icecat/media/libpng/pngset.c index 79b00d2f33..93e01c3a4b 100644 --- a/icecat/media/libpng/pngset.c +++ b/icecat/media/libpng/pngset.c @@ -1,6 +1,6 @@ /* pngset.c - storage of image information into info struct * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -300,14 +300,17 @@ png_set_mDCV(png_const_structrp png_ptr, png_inforp info_ptr, double maxDL, double minDL) { png_set_mDCV_fixed(png_ptr, info_ptr, - png_fixed(png_ptr, white_x, "png_set_mDCV(white(x))"), - png_fixed(png_ptr, white_y, "png_set_mDCV(white(y))"), - png_fixed(png_ptr, red_x, "png_set_mDCV(red(x))"), - png_fixed(png_ptr, red_y, "png_set_mDCV(red(y))"), - png_fixed(png_ptr, green_x, "png_set_mDCV(green(x))"), - png_fixed(png_ptr, green_y, "png_set_mDCV(green(y))"), - png_fixed(png_ptr, blue_x, "png_set_mDCV(blue(x))"), - png_fixed(png_ptr, blue_y, "png_set_mDCV(blue(y))"), + /* The ITU approach is to scale by 50,000, not 100,000 so just divide + * the input values by 2 and use png_fixed: + */ + png_fixed(png_ptr, white_x / 2, "png_set_mDCV(white(x))"), + png_fixed(png_ptr, white_y / 2, "png_set_mDCV(white(y))"), + png_fixed(png_ptr, red_x / 2, "png_set_mDCV(red(x))"), + png_fixed(png_ptr, red_y / 2, "png_set_mDCV(red(y))"), + png_fixed(png_ptr, green_x / 2, "png_set_mDCV(green(x))"), + png_fixed(png_ptr, green_y / 2, "png_set_mDCV(green(y))"), + png_fixed(png_ptr, blue_x / 2, "png_set_mDCV(blue(x))"), + png_fixed(png_ptr, blue_y / 2, "png_set_mDCV(blue(y))"), png_fixed_ITU(png_ptr, maxDL, "png_set_mDCV(maxDL)"), png_fixed_ITU(png_ptr, minDL, "png_set_mDCV(minDL)")); } @@ -333,8 +336,7 @@ png_set_eXIf_1(png_const_structrp png_ptr, png_inforp info_ptr, png_debug1(1, "in %s storage function", "eXIf"); if (png_ptr == NULL || info_ptr == NULL || - (png_ptr->mode & PNG_WROTE_eXIf) != 0 || - exif == NULL) + (png_ptr->mode & PNG_WROTE_eXIf) != 0) return; new_exif = png_voidcast(png_bytep, png_malloc_warn(png_ptr, num_exif)); @@ -385,12 +387,11 @@ void PNGAPI png_set_hIST(png_const_structrp png_ptr, png_inforp info_ptr, png_const_uint_16p hist) { - png_uint_16 safe_hist[PNG_MAX_PALETTE_LENGTH]; int i; png_debug1(1, "in %s storage function", "hIST"); - if (png_ptr == NULL || info_ptr == NULL || hist == NULL) + if (png_ptr == NULL || info_ptr == NULL) return; if (info_ptr->num_palette == 0 || info_ptr->num_palette @@ -402,13 +403,6 @@ png_set_hIST(png_const_structrp png_ptr, png_inforp info_ptr, return; } - /* Snapshot the caller's hist before freeing, in case it points to - * info_ptr->hist (getter-to-setter aliasing). - */ - memcpy(safe_hist, hist, (unsigned int)info_ptr->num_palette * - (sizeof (png_uint_16))); - hist = safe_hist; - png_free_data(png_ptr, info_ptr, PNG_FREE_HIST, 0); /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in @@ -755,7 +749,7 @@ void PNGAPI png_set_PLTE(png_structrp png_ptr, png_inforp info_ptr, png_const_colorp palette, int num_palette) { - png_color safe_palette[PNG_MAX_PALETTE_LENGTH]; + png_uint_32 max_palette_length; png_debug1(1, "in %s storage function", "PLTE"); @@ -789,47 +783,28 @@ png_set_PLTE(png_structrp png_ptr, png_inforp info_ptr, png_error(png_ptr, "Invalid palette"); } - /* Snapshot the caller's palette before freeing, in case it points to - * info_ptr->palette (getter-to-setter aliasing). + /* It may not actually be necessary to set png_ptr->palette here; + * we do it for backward compatibility with the way the png_handle_tRNS + * function used to do the allocation. + * + * 1.6.0: the above statement appears to be incorrect; something has to set + * the palette inside png_struct on read. */ - if (num_palette > 0) - memcpy(safe_palette, palette, (unsigned int)num_palette * - (sizeof (png_color))); - - palette = safe_palette; - png_free_data(png_ptr, info_ptr, PNG_FREE_PLTE, 0); /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead * of num_palette entries, in case of an invalid PNG file or incorrect * call to png_set_PLTE() with too-large sample values. - * - * Allocate independent buffers for info_ptr and png_ptr so that the - * lifetime of png_ptr->palette is decoupled from the lifetime of - * info_ptr->palette. Previously, these two pointers were aliased, - * which caused a use-after-free vulnerability if png_free_data freed - * info_ptr->palette while png_ptr->palette was still in use by the - * row transform functions (e.g. png_do_expand_palette). - * - * Both buffers are allocated with png_calloc to zero-fill, because - * the ARM NEON palette riffle reads all 256 entries unconditionally, - * regardless of num_palette. */ - png_free(png_ptr, png_ptr->palette); png_ptr->palette = png_voidcast(png_colorp, png_calloc(png_ptr, PNG_MAX_PALETTE_LENGTH * (sizeof (png_color)))); - info_ptr->palette = png_voidcast(png_colorp, png_calloc(png_ptr, - PNG_MAX_PALETTE_LENGTH * (sizeof (png_color)))); - png_ptr->num_palette = info_ptr->num_palette = (png_uint_16)num_palette; if (num_palette > 0) - { - memcpy(info_ptr->palette, palette, (unsigned int)num_palette * - (sizeof (png_color))); memcpy(png_ptr->palette, palette, (unsigned int)num_palette * (sizeof (png_color))); - } + info_ptr->palette = png_ptr->palette; + info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette; info_ptr->free_me |= PNG_FREE_PLTE; info_ptr->valid |= PNG_INFO_PLTE; } @@ -959,7 +934,6 @@ png_set_text_2(png_const_structrp png_ptr, png_inforp info_ptr, png_const_textp text_ptr, int num_text) { int i; - png_textp old_text = NULL; png_debug1(1, "in text storage function, chunk typeid = 0x%lx", png_ptr == NULL ? 0xabadca11UL : (unsigned long)png_ptr->chunk_name); @@ -1007,10 +981,7 @@ png_set_text_2(png_const_structrp png_ptr, png_inforp info_ptr, return 1; } - /* Defer freeing the old array until after the copy loop below, - * in case text_ptr aliases info_ptr->text (getter-to-setter). - */ - old_text = info_ptr->text; + png_free(png_ptr, info_ptr->text); info_ptr->text = new_text; info_ptr->free_me |= PNG_FREE_TEXT; @@ -1095,7 +1066,6 @@ png_set_text_2(png_const_structrp png_ptr, png_inforp info_ptr, { png_chunk_report(png_ptr, "text chunk: out of memory", PNG_CHUNK_WRITE_ERROR); - png_free(png_ptr, old_text); return 1; } @@ -1149,8 +1119,6 @@ png_set_text_2(png_const_structrp png_ptr, png_inforp info_ptr, png_debug1(3, "transferred text chunk %d", info_ptr->num_text); } - png_free(png_ptr, old_text); - return 0; } #endif @@ -1194,50 +1162,28 @@ png_set_tRNS(png_structrp png_ptr, png_inforp info_ptr, if (trans_alpha != NULL) { - /* Snapshot the caller's trans_alpha before freeing, in case it - * points to info_ptr->trans_alpha (getter-to-setter aliasing). + /* It may not actually be necessary to set png_ptr->trans_alpha here; + * we do it for backward compatibility with the way the png_handle_tRNS + * function used to do the allocation. + * + * 1.6.0: The above statement is incorrect; png_handle_tRNS effectively + * relies on png_set_tRNS storing the information in png_struct + * (otherwise it won't be there for the code in pngrtran.c). */ - png_byte safe_trans[PNG_MAX_PALETTE_LENGTH]; - - if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH) - memcpy(safe_trans, trans_alpha, (size_t)num_trans); - - trans_alpha = safe_trans; png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0); if (num_trans > 0 && num_trans <= PNG_MAX_PALETTE_LENGTH) { - /* Allocate info_ptr's copy of the transparency data. - * Initialize all entries to fully opaque (0xff), then overwrite - * the first num_trans entries with the actual values. - */ + /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */ info_ptr->trans_alpha = png_voidcast(png_bytep, png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH)); - memset(info_ptr->trans_alpha, 0xff, PNG_MAX_PALETTE_LENGTH); memcpy(info_ptr->trans_alpha, trans_alpha, (size_t)num_trans); + info_ptr->free_me |= PNG_FREE_TRNS; info_ptr->valid |= PNG_INFO_tRNS; - - /* Allocate an independent copy for png_struct, so that the - * lifetime of png_ptr->trans_alpha is decoupled from the - * lifetime of info_ptr->trans_alpha. Previously these two - * pointers were aliased, which caused a use-after-free if - * png_free_data freed info_ptr->trans_alpha while - * png_ptr->trans_alpha was still in use by the row transform - * functions (e.g. png_do_expand_palette). - */ - png_free(png_ptr, png_ptr->trans_alpha); - png_ptr->trans_alpha = png_voidcast(png_bytep, - png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH)); - memset(png_ptr->trans_alpha, 0xff, PNG_MAX_PALETTE_LENGTH); - memcpy(png_ptr->trans_alpha, trans_alpha, (size_t)num_trans); - } - else - { - png_free(png_ptr, png_ptr->trans_alpha); - png_ptr->trans_alpha = NULL; } + png_ptr->trans_alpha = info_ptr->trans_alpha; } if (trans_color != NULL) @@ -1288,7 +1234,6 @@ png_set_sPLT(png_const_structrp png_ptr, */ { png_sPLT_tp np; - png_sPLT_tp old_spalettes; png_debug1(1, "in %s storage function", "sPLT"); @@ -1309,10 +1254,7 @@ png_set_sPLT(png_const_structrp png_ptr, return; } - /* Defer freeing the old array until after the copy loop below, - * in case entries aliases info_ptr->splt_palettes (getter-to-setter). - */ - old_spalettes = info_ptr->splt_palettes; + png_free(png_ptr, info_ptr->splt_palettes); info_ptr->splt_palettes = np; info_ptr->free_me |= PNG_FREE_SPLT; @@ -1376,8 +1318,6 @@ png_set_sPLT(png_const_structrp png_ptr, } while (--nentries); - png_free(png_ptr, old_spalettes); - if (nentries > 0) png_chunk_report(png_ptr, "sPLT out of memory", PNG_CHUNK_WRITE_ERROR); } @@ -1566,7 +1506,6 @@ png_set_unknown_chunks(png_const_structrp png_ptr, png_inforp info_ptr, png_const_unknown_chunkp unknowns, int num_unknowns) { png_unknown_chunkp np; - png_unknown_chunkp old_unknowns; if (png_ptr == NULL || info_ptr == NULL || num_unknowns <= 0 || unknowns == NULL) @@ -1613,10 +1552,7 @@ png_set_unknown_chunks(png_const_structrp png_ptr, return; } - /* Defer freeing the old array until after the copy loop below, - * in case unknowns aliases info_ptr->unknown_chunks (getter-to-setter). - */ - old_unknowns = info_ptr->unknown_chunks; + png_free(png_ptr, info_ptr->unknown_chunks); info_ptr->unknown_chunks = np; /* safe because it is initialized */ info_ptr->free_me |= PNG_FREE_UNKN; @@ -1662,8 +1598,6 @@ png_set_unknown_chunks(png_const_structrp png_ptr, ++np; ++(info_ptr->unknown_chunks_num); } - - png_free(png_ptr, old_unknowns); } void PNGAPI @@ -2087,7 +2021,7 @@ png_set_benign_errors(png_structrp png_ptr, int allowed) #endif /* BENIGN_ERRORS */ #ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Whether to report invalid palette index; added at libpng-1.5.10. + /* Whether to report invalid palette index; added at libng-1.5.10. * It is possible for an indexed (color-type==3) PNG file to contain * pixels with invalid (out-of-range) indexes if the PLTE chunk has * fewer entries than the image's bit-depth would allow. We recover diff --git a/icecat/media/libpng/pngstruct.h b/icecat/media/libpng/pngstruct.h index c4b1419d54..f3ed832f81 100644 --- a/icecat/media/libpng/pngstruct.h +++ b/icecat/media/libpng/pngstruct.h @@ -1,6 +1,6 @@ -/* pngstruct.h - internal structures for libpng +/* pngstruct.h - header file for PNG reference library * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2022 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -10,9 +10,11 @@ * and license in png.h */ -#ifndef PNGPRIV_H -# error This file must not be included by applications; please include -#endif +/* The structure that holds the information to read and write PNG files. + * The only people who need to care about what is inside of this are the + * people who will be modifying the library for their own special needs. + * It should NOT be accessed directly by an application. + */ #ifndef PNGSTRUCT_H #define PNGSTRUCT_H @@ -106,7 +108,7 @@ typedef enum * TODO: C23: convert these macros to C23 inlines (which are static). */ #define png_chunk_flag_from_index(i) (0x80000000U >> (31 - (i))) - /* The flag corresponding to the given png_index enum value. This is defined + /* The flag coresponding to the given png_index enum value. This is defined * for png_unknown as well (until it reaches the value 32) but this should * not be relied on. */ @@ -115,7 +117,7 @@ typedef enum (((png_ptr)->chunks & png_chunk_flag_from_index(i)) != 0) /* The chunk has been recorded in png_struct */ -#define png_file_add_chunk(png_ptr, i)\ +#define png_file_add_chunk(pnt_ptr, i)\ ((void)((png_ptr)->chunks |= png_chunk_flag_from_index(i))) /* Record the chunk in the png_struct */ @@ -375,8 +377,7 @@ struct png_struct_def /* New member added in libpng-1.6.36 */ #if defined(PNG_READ_EXPAND_SUPPORTED) && \ - (defined(PNG_ARM_NEON_IMPLEMENTATION) || \ - defined(PNG_RISCV_RVV_IMPLEMENTATION)) + defined(PNG_ARM_NEON_IMPLEMENTATION) png_bytep riffled_palette; /* buffer for accelerated palette expansion */ #endif @@ -426,6 +427,7 @@ struct png_struct_def #ifdef PNG_READ_QUANTIZE_SUPPORTED /* The following three members were added at version 1.0.14 and 1.2.4 */ + png_bytep quantize_sort; /* working sort array */ png_bytep index_to_palette; /* where the original index currently is in the palette */ png_bytep palette_to_index; /* which original index points to this diff --git a/icecat/media/libpng/pngtrans.c b/icecat/media/libpng/pngtrans.c index 32a5fd3c0f..222b4987f9 100644 --- a/icecat/media/libpng/pngtrans.c +++ b/icecat/media/libpng/pngtrans.c @@ -1,6 +1,6 @@ /* pngtrans.c - transforms the data in a row (used by both readers and writers) * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -84,38 +84,9 @@ png_set_shift(png_structrp png_ptr, png_const_color_8p true_bits) { png_debug(1, "in png_set_shift"); - if (png_ptr == NULL || true_bits == NULL) + if (png_ptr == NULL) return; - /* Check the shift values before passing them on to png_do_shift. */ - { - png_byte bit_depth = png_ptr->bit_depth; - int invalid = 0; - - if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) != 0) - { - if (true_bits->red == 0 || true_bits->red > bit_depth || - true_bits->green == 0 || true_bits->green > bit_depth || - true_bits->blue == 0 || true_bits->blue > bit_depth) - invalid = 1; - } - else - { - if (true_bits->gray == 0 || true_bits->gray > bit_depth) - invalid = 1; - } - - if ((png_ptr->color_type & PNG_COLOR_MASK_ALPHA) != 0 && - (true_bits->alpha == 0 || true_bits->alpha > bit_depth)) - invalid = 1; - - if (invalid) - { - png_app_error(png_ptr, "png_set_shift: invalid shift values"); - return; - } - } - png_ptr->transformations |= PNG_SHIFT; png_ptr->shift = *true_bits; } @@ -486,9 +457,10 @@ png_do_packswap(png_row_infop row_info, png_bytep row) if (row_info->bit_depth < 8) { - png_const_bytep table; png_bytep rp; - png_bytep row_end = row + row_info->rowbytes; + png_const_bytep end, table; + + end = row + row_info->rowbytes; if (row_info->bit_depth == 1) table = onebppswaptable; @@ -502,7 +474,7 @@ png_do_packswap(png_row_infop row_info, png_bytep row) else return; - for (rp = row; rp < row_end; rp++) + for (rp = row; rp < end; rp++) *rp = table[*rp]; } } @@ -830,8 +802,8 @@ png_do_check_palette_indexes(png_structrp png_ptr, png_row_infop row_info) defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) #ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED void PNGAPI -png_set_user_transform_info(png_structrp png_ptr, png_voidp user_transform_ptr, - int user_transform_depth, int user_transform_channels) +png_set_user_transform_info(png_structrp png_ptr, png_voidp + user_transform_ptr, int user_transform_depth, int user_transform_channels) { png_debug(1, "in png_set_user_transform_info"); diff --git a/icecat/media/libpng/pngwio.c b/icecat/media/libpng/pngwio.c index 96a3187ff0..38c9c006cb 100644 --- a/icecat/media/libpng/pngwio.c +++ b/icecat/media/libpng/pngwio.c @@ -1,6 +1,6 @@ /* pngwio.c - functions for data output * - * Copyright (c) 2018-2025 Cosmin Truta + * Copyright (c) 2018 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2014,2016,2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -54,7 +54,7 @@ png_default_write_data(png_structp png_ptr, png_bytep data, size_t length) if (png_ptr == NULL) return; - check = fwrite(data, 1, length, (FILE *)png_ptr->io_ptr); + check = fwrite(data, 1, length, (png_FILE_p)(png_ptr->io_ptr)); if (check != length) png_error(png_ptr, "Write Error"); @@ -77,12 +77,12 @@ png_flush(png_structrp png_ptr) void PNGCBAPI png_default_flush(png_structp png_ptr) { - FILE *io_ptr; + png_FILE_p io_ptr; if (png_ptr == NULL) return; - io_ptr = png_voidcast(FILE *, png_ptr->io_ptr); + io_ptr = png_voidcast(png_FILE_p, (png_ptr->io_ptr)); fflush(io_ptr); } # endif diff --git a/icecat/media/libpng/pngwrite.c b/icecat/media/libpng/pngwrite.c index 47367aa298..663c03559e 100644 --- a/icecat/media/libpng/pngwrite.c +++ b/icecat/media/libpng/pngwrite.c @@ -1,6 +1,6 @@ /* pngwrite.c - general routines to write a PNG file * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2025 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -163,7 +163,7 @@ png_write_info_before_PLTE(png_structrp png_ptr, png_const_inforp info_ptr) * them. * * PNG v3: Chunks mDCV and cLLI provide ancillary information for the - * interpretation of the colourspace chunks but do not require support for + * interpretation of the colourspace chunkgs but do not require support for * those chunks so are outside the "COLORSPACE" check but before the write of * the colourspace chunks themselves. */ @@ -551,8 +551,7 @@ png_convert_from_time_t(png_timep ptime, time_t ttime) /* Initialize png_ptr structure, and allocate any memory needed */ PNG_FUNCTION(png_structp,PNGAPI png_create_write_struct,(png_const_charp user_png_ver, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn), - PNG_ALLOCATED) + png_error_ptr error_fn, png_error_ptr warn_fn),PNG_ALLOCATED) { #ifndef PNG_USER_MEM_SUPPORTED png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr, @@ -566,8 +565,7 @@ png_create_write_struct,(png_const_charp user_png_ver, png_voidp error_ptr, PNG_FUNCTION(png_structp,PNGAPI png_create_write_struct_2,(png_const_charp user_png_ver, png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, - png_malloc_ptr malloc_fn, png_free_ptr free_fn), - PNG_ALLOCATED) + png_malloc_ptr malloc_fn, png_free_ptr free_fn),PNG_ALLOCATED) { png_structrp png_ptr = png_create_png_struct(user_png_ver, error_ptr, error_fn, warn_fn, mem_ptr, malloc_fn, free_fn); @@ -1019,16 +1017,6 @@ png_write_destroy(png_structrp png_ptr) png_ptr->chunk_list = NULL; #endif -#if defined(PNG_tRNS_SUPPORTED) - /* Free the independent copy of trans_alpha owned by png_struct. */ - png_free(png_ptr, png_ptr->trans_alpha); - png_ptr->trans_alpha = NULL; -#endif - - /* Free the independent copy of the palette owned by png_struct. */ - png_free(png_ptr, png_ptr->palette); - png_ptr->palette = NULL; - /* The error handling and memory handling information is left intact at this * point: the jmp_buf may still have to be freed. See png_destroy_png_struct * for how this happens. @@ -1397,8 +1385,8 @@ png_set_write_status_fn(png_structrp png_ptr, png_write_status_ptr write_row_fn) #ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED void PNGAPI -png_set_write_user_transform_fn(png_structrp png_ptr, - png_user_transform_ptr write_user_transform_fn) +png_set_write_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr + write_user_transform_fn) { png_debug(1, "in png_set_write_user_transform_fn"); @@ -1414,7 +1402,7 @@ png_set_write_user_transform_fn(png_structrp png_ptr, #ifdef PNG_INFO_IMAGE_SUPPORTED void PNGAPI png_write_png(png_structrp png_ptr, png_inforp info_ptr, - int transforms, png_voidp params) + int transforms, voidp params) { png_debug(1, "in png_write_png"); @@ -1579,20 +1567,18 @@ png_image_write_init(png_imagep image) /* Arguments to png_image_write_main: */ typedef struct { - /* Arguments */ - png_imagep image; + /* Arguments: */ + png_imagep image; png_const_voidp buffer; - png_int_32 row_stride; + png_int_32 row_stride; png_const_voidp colormap; - int convert_to_8bit; - - /* Instance variables */ + int convert_to_8bit; + /* Local variables: */ png_const_voidp first_row; - png_voidp local_row; - ptrdiff_t row_step; - + ptrdiff_t row_bytes; + png_voidp local_row; /* Byte count for memory writing */ - png_bytep memory; + png_bytep memory; png_alloc_size_t memory_bytes; /* not used for STDIO */ png_alloc_size_t output_bytes; /* running total */ } png_image_write_control; @@ -1699,7 +1685,7 @@ png_write_image_16bit(png_voidp argument) } png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row)); - input_row += display->row_step / 2; + input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); } return 1; @@ -1825,7 +1811,7 @@ png_write_image_8bit(png_voidp argument) png_write_row(png_ptr, png_voidcast(png_const_bytep, display->local_row)); - input_row += display->row_step / 2; + input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); } /* while y */ } @@ -1850,7 +1836,7 @@ png_write_image_8bit(png_voidp argument) } png_write_row(png_ptr, output_row); - input_row += display->row_step / 2; + input_row += (png_uint_16)display->row_bytes/(sizeof (png_uint_16)); } } @@ -2039,7 +2025,7 @@ png_image_write_main(png_voidp argument) display->row_stride = (png_int_32)/*SAFE*/png_row_stride; if (display->row_stride < 0) - check = -(png_uint_32)display->row_stride; + check = (png_uint_32)(-display->row_stride); else check = (png_uint_32)display->row_stride; @@ -2166,16 +2152,16 @@ png_image_write_main(png_voidp argument) { png_const_bytep row = png_voidcast(png_const_bytep, display->buffer); - ptrdiff_t row_step = display->row_stride; + ptrdiff_t row_bytes = display->row_stride; if (linear != 0) - row_step *= 2; + row_bytes *= (sizeof (png_uint_16)); - if (row_step < 0) - row += (image->height-1) * (-row_step); + if (row_bytes < 0) + row += (image->height-1) * (-row_bytes); display->first_row = row; - display->row_step = row_step; + display->row_bytes = row_bytes; } /* Apply 'fast' options if the flag is set. */ @@ -2196,7 +2182,8 @@ png_image_write_main(png_voidp argument) * before it is written. This only applies when the input is 16-bit and * either there is an alpha channel or it is converted to 8-bit. */ - if (linear != 0 && (alpha != 0 || display->convert_to_8bit != 0)) + if ((linear != 0 && alpha != 0 ) || + (colormap == 0 && display->convert_to_8bit != 0)) { png_bytep row = png_voidcast(png_bytep, png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr))); @@ -2222,13 +2209,13 @@ png_image_write_main(png_voidp argument) else { png_const_bytep row = png_voidcast(png_const_bytep, display->first_row); - ptrdiff_t row_step = display->row_step; + ptrdiff_t row_bytes = display->row_bytes; png_uint_32 y = image->height; for (; y > 0; --y) { png_write_row(png_ptr, row); - row += row_step; + row += row_bytes; } } @@ -2238,7 +2225,7 @@ png_image_write_main(png_voidp argument) static void (PNGCBAPI -image_memory_write)(png_structp png_ptr, png_bytep data, size_t size) +image_memory_write)(png_structp png_ptr, png_bytep/*const*/ data, size_t size) { png_image_write_control *display = png_voidcast(png_image_write_control*, png_ptr->io_ptr/*backdoor: png_get_io_ptr(png_ptr)*/); @@ -2355,7 +2342,7 @@ int PNGAPI png_image_write_to_stdio(png_imagep image, FILE *file, int convert_to_8bit, const void *buffer, png_int_32 row_stride, const void *colormap) { - /* Write the image to the given FILE object. */ + /* Write the image to the given (FILE*). */ if (image != NULL && image->version == PNG_IMAGE_VERSION) { if (file != NULL && buffer != NULL) diff --git a/icecat/media/libpng/pngwutil.c b/icecat/media/libpng/pngwutil.c index 7a8df89b56..39fd906303 100644 --- a/icecat/media/libpng/pngwutil.c +++ b/icecat/media/libpng/pngwutil.c @@ -1,6 +1,6 @@ /* pngwutil.c - utilities to write a PNG file * - * Copyright (c) 2018-2026 Cosmin Truta + * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson * Copyright (c) 1996-1997 Andreas Dilger * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. @@ -487,10 +487,10 @@ png_free_buffer_list(png_structrp png_ptr, png_compression_bufferp *listp) */ typedef struct { - png_const_bytep input; /* The uncompressed input data */ - png_alloc_size_t input_len; /* Its length */ - png_uint_32 output_len; /* Final compressed length */ - png_byte output[1024]; /* First block of output */ + png_const_bytep input; /* The uncompressed input data */ + png_alloc_size_t input_len; /* Its length */ + png_uint_32 output_len; /* Final compressed length */ + png_byte output[1024]; /* First block of output */ } compression_state; static void @@ -909,6 +909,7 @@ png_write_PLTE(png_structrp png_ptr, png_const_colorp palette, png_debug1(3, "num_palette = %d", png_ptr->num_palette); png_write_chunk_header(png_ptr, png_PLTE, (png_uint_32)(num_pal * 3)); +#ifdef PNG_POINTER_INDEXING_SUPPORTED for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++) { @@ -918,6 +919,21 @@ png_write_PLTE(png_structrp png_ptr, png_const_colorp palette, png_write_chunk_data(png_ptr, buf, 3); } +#else + /* This is a little slower but some buggy compilers need to do this + * instead + */ + pal_ptr=palette; + + for (i = 0; i < num_pal; i++) + { + buf[0] = pal_ptr[i].red; + buf[1] = pal_ptr[i].green; + buf[2] = pal_ptr[i].blue; + png_write_chunk_data(png_ptr, buf, 3); + } + +#endif png_write_chunk_end(png_ptr); png_ptr->mode |= PNG_HAVE_PLTE; } @@ -1216,6 +1232,9 @@ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette) size_t entry_size = (spalette->depth == 8 ? 6 : 10); size_t palette_size = entry_size * (size_t)spalette->nentries; png_sPLT_entryp ep; +#ifndef PNG_POINTER_INDEXING_SUPPORTED + int i; +#endif png_debug(1, "in png_write_sPLT"); @@ -1233,6 +1252,7 @@ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette) png_write_chunk_data(png_ptr, &spalette->depth, 1); /* Loop through each palette entry, writing appropriately */ +#ifdef PNG_POINTER_INDEXING_SUPPORTED for (ep = spalette->entries; epentries + spalette->nentries; ep++) { if (spalette->depth == 8) @@ -1255,6 +1275,31 @@ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette) png_write_chunk_data(png_ptr, entrybuf, entry_size); } +#else + ep=spalette->entries; + for (i = 0; i>spalette->nentries; i++) + { + if (spalette->depth == 8) + { + entrybuf[0] = (png_byte)ep[i].red; + entrybuf[1] = (png_byte)ep[i].green; + entrybuf[2] = (png_byte)ep[i].blue; + entrybuf[3] = (png_byte)ep[i].alpha; + png_save_uint_16(entrybuf + 4, ep[i].frequency); + } + + else + { + png_save_uint_16(entrybuf + 0, ep[i].red); + png_save_uint_16(entrybuf + 2, ep[i].green); + png_save_uint_16(entrybuf + 4, ep[i].blue); + png_save_uint_16(entrybuf + 6, ep[i].alpha); + png_save_uint_16(entrybuf + 8, ep[i].frequency); + } + + png_write_chunk_data(png_ptr, entrybuf, entry_size); + } +#endif png_write_chunk_end(png_ptr); } @@ -1724,7 +1769,7 @@ png_write_iTXt(png_structrp png_ptr, int compression, png_const_charp key, } new_key[++key_len] = PNG_COMPRESSION_TYPE_BASE; - ++key_len; /* for the keyword separator */ + ++key_len; /* for the keywod separator */ /* We leave it to the application to meet PNG-1.0 requirements on the * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of diff --git a/icecat/media/libpng/powerpc/filter_vsx_intrinsics.c b/icecat/media/libpng/powerpc/filter_vsx_intrinsics.c index 5acc17c949..01cf8800dc 100644 --- a/icecat/media/libpng/powerpc/filter_vsx_intrinsics.c +++ b/icecat/media/libpng/powerpc/filter_vsx_intrinsics.c @@ -23,7 +23,7 @@ #if PNG_POWERPC_VSX_OPT > 0 #ifndef __VSX__ -# error This code requires VSX support (POWER7 and later); please compile with -mvsx +# error "This code requires VSX support (POWER7 and later). Please provide -mvsx compiler flag." #endif #define vec_ld_unaligned(vec,data) vec = vec_vsx_ld(0,data) diff --git a/icecat/media/libpng/powerpc/powerpc_init.c b/icecat/media/libpng/powerpc/powerpc_init.c index 70782eda1b..9027480098 100644 --- a/icecat/media/libpng/powerpc/powerpc_init.c +++ b/icecat/media/libpng/powerpc/powerpc_init.c @@ -46,7 +46,7 @@ static int png_have_vsx(png_structp png_ptr); #include PNG_POWERPC_VSX_FILE #else /* PNG_POWERPC_VSX_FILE */ -# error PNG_POWERPC_VSX_FILE undefined: no support for run-time POWERPC VSX checks +# error "PNG_POWERPC_VSX_FILE undefined: no support for run-time POWERPC VSX checks" #endif /* PNG_POWERPC_VSX_FILE */ #endif /* PNG_POWERPC_VSX_CHECK_SUPPORTED */ diff --git a/icecat/media/libvpx/libvpx/vp8/common/alloccommon.c b/icecat/media/libvpx/libvpx/vp8/common/alloccommon.c index c93647fb7f..722b158c3a 100644 --- a/icecat/media/libvpx/libvpx/vp8/common/alloccommon.c +++ b/icecat/media/libvpx/libvpx/vp8/common/alloccommon.c @@ -34,7 +34,7 @@ void vp8_de_alloc_frame_buffers(VP8_COMMON *oci) { oci->pp_limits_buffer = NULL; vpx_free(oci->postproc_state.generated_noise); - memset(&oci->postproc_state, 0, sizeof(oci->postproc_state)); + oci->postproc_state.generated_noise = NULL; #endif vpx_free(oci->above_context); @@ -42,14 +42,10 @@ void vp8_de_alloc_frame_buffers(VP8_COMMON *oci) { #if CONFIG_ERROR_CONCEALMENT vpx_free(oci->prev_mip); oci->prev_mip = NULL; - oci->prev_mi = NULL; #endif oci->above_context = NULL; oci->mip = NULL; - oci->mi = NULL; - oci->show_frame_mi = NULL; - oci->frame_to_show = NULL; } int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height) { diff --git a/icecat/media/libvpx/libvpx/vp9/vp9_cx_iface.c b/icecat/media/libvpx/libvpx/vp9/vp9_cx_iface.c index d09271ed90..76491a9edc 100644 --- a/icecat/media/libvpx/libvpx/vp9/vp9_cx_iface.c +++ b/icecat/media/libvpx/libvpx/vp9/vp9_cx_iface.c @@ -8,9 +8,7 @@ * be found in the AUTHORS file in the root of the source tree. */ -#include #include -#include #include #include #include @@ -123,7 +121,6 @@ struct vpx_codec_alg_priv { VP9_COMP *cpi; unsigned char *cx_data; size_t cx_data_sz; - // pending_cx_data either is a null pointer or points into the cx_data buffer. unsigned char *pending_cx_data; size_t pending_cx_data_sz; int pending_frame_count; @@ -1255,12 +1252,8 @@ static int write_superframe_index(vpx_codec_alg_priv_t *ctx) { // Write the index index_sz = 2 + (mag + 1) * ctx->pending_frame_count; - unsigned char *cx_data_end = ctx->cx_data + ctx->cx_data_sz; - unsigned char *pending_cx_data_end = - ctx->pending_cx_data + ctx->pending_cx_data_sz; - ptrdiff_t space_remaining = cx_data_end - pending_cx_data_end; - if (index_sz <= space_remaining) { - uint8_t *x = pending_cx_data_end; + if (ctx->pending_cx_data_sz + index_sz < ctx->cx_data_sz) { + uint8_t *x = ctx->pending_cx_data + ctx->pending_cx_data_sz; int i, j; #ifdef TEST_SUPPLEMENTAL_SUPERFRAME_DATA uint8_t marker_test = 0xc0; @@ -1291,8 +1284,6 @@ static int write_superframe_index(vpx_codec_alg_priv_t *ctx) { #ifdef TEST_SUPPLEMENTAL_SUPERFRAME_DATA index_sz += index_sz_test; #endif - } else { - index_sz = 0; } return index_sz; } @@ -1621,12 +1612,9 @@ static vpx_codec_err_t encoder_encode(vpx_codec_alg_priv_t *ctx, ctx->pending_frame_sizes[ctx->pending_frame_count++] = size; ctx->pending_frame_magnitude |= size; ctx->pending_cx_data_sz += size; - // write the superframe only for the case when the callback function - // for getting per-layer packets is not registered. - if (!ctx->output_cx_pkt_cb.output_cx_pkt) { + // write the superframe only for the case when + if (!ctx->output_cx_pkt_cb.output_cx_pkt) size += write_superframe_index(ctx); - assert(size <= cx_data_sz); - } pkt.data.frame.buf = ctx->pending_cx_data; pkt.data.frame.sz = ctx->pending_cx_data_sz; ctx->pending_cx_data = NULL; diff --git a/icecat/media/libvpx/moz.yaml b/icecat/media/libvpx/moz.yaml index c686a979f2..7a6926e9f2 100644 --- a/icecat/media/libvpx/moz.yaml +++ b/icecat/media/libvpx/moz.yaml @@ -56,7 +56,6 @@ vendoring: - arm_cpu_runtime_detection_code_on_openbsd.patch - input_frame_validation.patch - input_frame_validation_vp9.patch - - reset_post_proc_state.patch update-actions: - action: move-file diff --git a/icecat/media/libvpx/reset_post_proc_state.patch b/icecat/media/libvpx/reset_post_proc_state.patch deleted file mode 100644 index 4249bda9d7..0000000000 --- a/icecat/media/libvpx/reset_post_proc_state.patch +++ /dev/null @@ -1,32 +0,0 @@ -# HG changeset patch -# User Jan-Ivar Bruaroey - -Bug 2029423 - Reset post_proc state. - -diff --git a/vp8/common/alloccommon.c b/vp8/common/alloccommon.c ---- a/vp8/common/alloccommon.c -+++ b/vp8/common/alloccommon.c -@@ -34,7 +34,7 @@ void vp8_de_alloc_frame_buffers(VP8_COMM - oci->pp_limits_buffer = NULL; - - vpx_free(oci->postproc_state.generated_noise); -- oci->postproc_state.generated_noise = NULL; -+ memset(&oci->postproc_state, 0, sizeof(oci->postproc_state)); - #endif - - vpx_free(oci->above_context); -@@ -42,10 +42,14 @@ void vp8_de_alloc_frame_buffers(VP8_COMM - #if CONFIG_ERROR_CONCEALMENT - vpx_free(oci->prev_mip); - oci->prev_mip = NULL; -+ oci->prev_mi = NULL; - #endif - - oci->above_context = NULL; - oci->mip = NULL; -+ oci->mi = NULL; -+ oci->show_frame_mi = NULL; -+ oci->frame_to_show = NULL; - } - - int vp8_alloc_frame_buffers(VP8_COMMON *oci, int width, int height) { diff --git a/icecat/media/webrtc/signaling/gtest/videoconduit_unittests.cpp b/icecat/media/webrtc/signaling/gtest/videoconduit_unittests.cpp index a37b32d1aa..84da228d8e 100644 --- a/icecat/media/webrtc/signaling/gtest/videoconduit_unittests.cpp +++ b/icecat/media/webrtc/signaling/gtest/videoconduit_unittests.cpp @@ -438,9 +438,6 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodec) { ASSERT_EQ(Call()->mVideoSendEncoderConfig->min_transmit_bitrate_bps, 0); ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, KBPS(10000)); ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - ASSERT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - KBPS(10000)); // empty codec name mControl.Update([&](auto& aControl) { @@ -555,13 +552,9 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodecTias) { aControl.mVideoSendRtpRtcpConfig = Some(RtpRtcpConfig(webrtc::RtcpMode::kCompound, true)); }); + ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000); { ASSERT_TRUE(Call()->mVideoSendEncoderConfig); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - ASSERT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - 2000000); SendVideoFrame(1280, 720, 1); const std::vector videoStreams = Call()->CreateEncoderStreams(1280, 720); @@ -578,13 +571,9 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodecTias) { codecConfigTiasLow.mTias = 1000; aControl.mVideoSendCodec = Some(codecConfigTiasLow); }); + ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 1000); { ASSERT_TRUE(Call()->mVideoSendEncoderConfig); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 1000); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - ASSERT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - 1000); SendVideoFrame(1280, 720, 2); const std::vector videoStreams = Call()->CreateEncoderStreams(1280, 720); @@ -606,11 +595,6 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodecMaxBr) { Some(RtpRtcpConfig(webrtc::RtcpMode::kCompound, true)); }); ASSERT_TRUE(Call()->mVideoSendEncoderConfig); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 50000); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - ASSERT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - 50000); SendVideoFrame(1280, 720, 1); const std::vector videoStreams = Call()->CreateEncoderStreams(1280, 720); @@ -1277,10 +1261,6 @@ TEST_P(VideoConduitCodecModeTest, TestReconfigureSendMediaCodec) { }); ASSERT_TRUE(Call()->mVideoSendEncoderConfig); EXPECT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - EXPECT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - 2000000); SendVideoFrame(1280, 720, 1); { @@ -1305,11 +1285,6 @@ TEST_P(VideoConduitCodecModeTest, TestReconfigureSendMediaCodec) { aControl.mVideoSendCodec = Some(codecConfig); }); ASSERT_TRUE(Call()->mVideoSendEncoderConfig); - EXPECT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 50000); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - EXPECT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - 50000); SendVideoFrame(1280, 720, 2); { const std::vector videoStreams = @@ -1407,10 +1382,6 @@ TEST_P(VideoConduitCodecModeTest, }); ASSERT_TRUE(Call()->mVideoSendEncoderConfig); ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - EXPECT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - 2000000); SendVideoFrame(1280, 720, 1); { @@ -1432,10 +1403,6 @@ TEST_P(VideoConduitCodecModeTest, aControl.mVideoSendCodec = Some(codecConfig); }); ASSERT_TRUE(Call()->mVideoSendEncoderConfig); - ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U); - EXPECT_EQ( - Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps, - 50000); SendVideoFrame(1280, 720, 2); { const std::vector videoStreams = diff --git a/icecat/mfbt/CheckedInt.h b/icecat/mfbt/CheckedInt.h index 4fa69ae2ba..d784376d8c 100644 --- a/icecat/mfbt/CheckedInt.h +++ b/icecat/mfbt/CheckedInt.h @@ -557,7 +557,7 @@ class CheckedInt { /** @returns the actual value */ constexpr T value() const { - MOZ_RELEASE_ASSERT( + MOZ_DIAGNOSTIC_ASSERT( mIsValid, "Invalid checked integer (division by zero or integer overflow)"); return mValue; diff --git a/icecat/mfbt/HashTable.h b/icecat/mfbt/HashTable.h index 17767419d5..6ef9104517 100644 --- a/icecat/mfbt/HashTable.h +++ b/icecat/mfbt/HashTable.h @@ -1095,7 +1095,7 @@ class HashTableEntry { void destroy() { destroyStoredT(); } - void swap(HashTableEntry* aOther, bool aOtherIsLive) { + void swap(HashTableEntry* aOther, bool aIsLive) { // This allows types to use Argument-Dependent-Lookup, and thus use a custom // std::swap, which is needed by types like JS::Heap and such. using std::swap; @@ -1103,10 +1103,10 @@ class HashTableEntry { if (this == aOther) { return; } - if (aOtherIsLive) { + if (aIsLive) { swap(*valuePtr(), *aOther->valuePtr()); } else { - new (KnownNotNull, aOther->valuePtr()) NonConstT(std::move(*valuePtr())); + *aOther->valuePtr() = std::move(*valuePtr()); destroy(); } } diff --git a/icecat/mfbt/Span.h b/icecat/mfbt/Span.h index e1e92db993..1f4effb1f5 100644 --- a/icecat/mfbt/Span.h +++ b/icecat/mfbt/Span.h @@ -658,7 +658,7 @@ class MOZ_GSL_POINTER Span { constexpr Span Subspan() const { const size_t len = size(); MOZ_RELEASE_ASSERT(Offset <= len && - (Count == dynamic_extent || (Count <= len - Offset))); + (Count == dynamic_extent || (Offset + Count <= len))); return {data() + Offset, Count == dynamic_extent ? len - Offset : Count}; } @@ -686,7 +686,7 @@ class MOZ_GSL_POINTER Span { index_type aStart, index_type aLength = dynamic_extent) const { const size_t len = size(); MOZ_RELEASE_ASSERT(aStart <= len && (aLength == dynamic_extent || - (aLength <= len - aStart))); + (aStart + aLength <= len))); return {data() + aStart, aLength == dynamic_extent ? len - aStart : aLength}; } diff --git a/icecat/mobile/android/focus-android/tools/gradle/versionCode.gradle b/icecat/mobile/android/focus-android/tools/gradle/versionCode.gradle index ce465ae7eb..73a4de1189 100644 --- a/icecat/mobile/android/focus-android/tools/gradle/versionCode.gradle +++ b/icecat/mobile/android/focus-android/tools/gradle/versionCode.gradle @@ -1,98 +1,45 @@ -/* 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/. */ +// 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 java.text.SimpleDateFormat -/** - * Generates a "unique" versionCode for release builds. - * - * The resulting versionCode depends on the local timezone of the machine running this script. - * This is OK because we only use this for release builds on CI, where the timezone is fixed. - * - * Format: byDDDHHmm - * - b = base / epoch digit - * Historically hardcoded to "3". This digit is incremented when the year-derived - * component overflows its single digit (e.g., in 2026). - * - y = 1 digit derived from (two-digit year - 16), modulo 10 - * - DDD = day of year (001–366), zero-padded to 3 digits - * - HHmm = 24h time (00–23)(00–59) - * - * Example: - * Sept 6, 2017 @ 09:41 - * year = 17 - 16 = 1 - * base = 3 - * -> 3-1-249-09-41 -> 312490941 - * - * Historical note: - * Focus first shipped in 2017. The original scheme unconditionally used (yy - 16) which - * only fit in a single digit from 2017–2025. - * - * 2026 rollover: - * In 2026, (yy - 16) became 10. Allowing this to grow to two digits breaks the intended - * byDDDHHmm layout and can exceed Play / int limits. - * - * To preserve: - * - a single-digit `y` - * - monotonic versionCodes across year boundaries - * - * we keep `y` as (yearOffset % 10) and carry overflow into the base digit: - * 2025 -> base=3, y=9 -> 39DDDHHmm - * 2026 -> base=4, y=0 -> 40DDDHHmm - */ -ext { - // "Epoch" digit(s). Historically this was "3". - // We bump it by +1 each time (yy - 16) crosses another multiple of 10 (i.e., 2026, 2036, ...). - def epochDigit = 3 +// This gradle scripts generates a "unique" version code for our release versions. +// +// The result of the version code depends on the timezone. We assume that this script will only be used +// for release versions and running on our build servers with a fixed timezone. +// +// The version code is composed like: yDDDHHmm +// * y = Double digit year, with 16 substracted: 2017 -> 17 -> 1 +// * DDD = Day of the year, pad with zeros if needed: September 6th -> 249 +// * HH = Hour in day (00-23) +// * mm = Minute in hour +// +// For September 6th, 2017, 9:41 am this will generate the versionCode: 12490941 (1-249-09-41). +// +// Note that we only use this generated version code for builds we want to distribute. For local +// debug builds we use a fixed versionCode to not mess with the caching mechanism of the build +// system. +ext { + def base = "3" def today = new Date() - def yy = (new SimpleDateFormat("yy").format(today) as int) - def yearOffset = yy - 16 // 2017 -> 1, 2025 -> 9, 2026 -> 10, etc. - if (yearOffset < 0) { - throw new GradleException( - "versionCode yearOffset underflow: yearOffset=$yearOffset (yy=$yy)." - ) - } - - // Keep the "y" component as one digit, and carry overflow into the epoch digit. - def carry = (int) (yearOffset / 10) - def yearDigit = (int) (yearOffset % 10) - - def epoch = epochDigit + carry - if (epoch >= 10) { - throw new GradleException( - "versionCode epoch overflow: epoch=$epoch (yy=$yy). Update versionCode scheme." - ) - } + // We use the current year (double digit) and substract 16. We first released Focus in + // 2017 so this value will start counting at 1 and increment by one every year. + def year = String.valueOf((new SimpleDateFormat("yy").format(today) as int) - 16) // We use the day in the Year (e.g. 248) as opposed to month + day (0510) because it's one digit shorter. // If needed we pad with zeros (e.g. 25 -> 025) def day = String.format("%03d", (new SimpleDateFormat("D").format(today) as int)) - + // We append the hour in day (24h) and minute in hour (7:26 pm -> 1926). We do not append // seconds. This assumes that we do not need to build multiple release(!) builds the same // minute. def time = new SimpleDateFormat("HHmm").format(today) - // Build the final versionCode using the previously-calculated inputs. - def versionCode = ("${epoch}${yearDigit}${day}${time}" as long) + generatedVersionCode = (base + year + day + time) as int - // The Play Console has historically enforced a 2,100,000,000 cap. Keep a defensive ceiling here. - // Even without this, Android requires versionCode to fit in a signed 32-bit int. - def MAX_VERSION_CODE = 2_100_000_000 - if (versionCode > MAX_VERSION_CODE) { - throw new GradleException( - "Generated versionCode exceeds MAX_VERSION_CODE ($MAX_VERSION_CODE): $versionCode (from $versionCodeStr)" - ) - } - if (versionCode > Integer.MAX_VALUE) { - throw new GradleException( - "Generated versionCode exceeds Integer.MAX_VALUE: $versionCode (from $versionCodeStr)" - ) - } - - generatedVersionCode = (versionCode as int) println("Generated versionCode: $generatedVersionCode") println() } diff --git a/icecat/modules/brotli/common/constants.c b/icecat/modules/brotli/common/constants.c index ef5a2e2e04..89866b1505 100644 --- a/icecat/modules/brotli/common/constants.c +++ b/icecat/modules/brotli/common/constants.c @@ -6,10 +6,10 @@ #include "constants.h" -const BROTLI_MODEL("small") -BrotliPrefixCodeRange _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS] = { - {1, 2}, {5, 2}, {9, 2}, {13, 2}, {17, 3}, {25, 3}, - {33, 3}, {41, 3}, {49, 4}, {65, 4}, {81, 4}, {97, 4}, - {113, 5}, {145, 5}, {177, 5}, {209, 5}, {241, 6}, {305, 6}, - {369, 7}, {497, 8}, {753, 9}, {1265, 10}, {2289, 11}, {4337, 12}, - {8433, 13}, {16625, 24}}; +const BrotliPrefixCodeRange + _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS] = { + {1, 2}, {5, 2}, {9, 2}, {13, 2}, {17, 3}, {25, 3}, + {33, 3}, {41, 3}, {49, 4}, {65, 4}, {81, 4}, {97, 4}, + {113, 5}, {145, 5}, {177, 5}, {209, 5}, {241, 6}, {305, 6}, + {369, 7}, {497, 8}, {753, 9}, {1265, 10}, {2289, 11}, {4337, 12}, + {8433, 13}, {16625, 24}}; diff --git a/icecat/modules/brotli/common/constants.h b/icecat/modules/brotli/common/constants.h index 85e9802c0c..31e5bd376e 100644 --- a/icecat/modules/brotli/common/constants.h +++ b/icecat/modules/brotli/common/constants.h @@ -12,6 +12,9 @@ #ifndef BROTLI_COMMON_CONSTANTS_H_ #define BROTLI_COMMON_CONSTANTS_H_ +#include +#include + #include "platform.h" /* Specification: 7.3. Encoding of the context map */ @@ -192,7 +195,7 @@ typedef struct { } BrotliPrefixCodeRange; /* "Soft-private", it is exported, but not "advertised" as API. */ -BROTLI_COMMON_API extern const BROTLI_MODEL("small") -BrotliPrefixCodeRange _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS]; +BROTLI_COMMON_API extern const BrotliPrefixCodeRange + _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS]; #endif /* BROTLI_COMMON_CONSTANTS_H_ */ diff --git a/icecat/modules/brotli/common/context.c b/icecat/modules/brotli/common/context.c index d3c910cb1b..7f9c958699 100644 --- a/icecat/modules/brotli/common/context.c +++ b/icecat/modules/brotli/common/context.c @@ -1,9 +1,9 @@ #include "context.h" -#include "platform.h" +#include /* Common context lookup table for all context modes. */ -const BROTLI_MODEL("small") uint8_t _kBrotliContextLookupTable[2048] = { +const uint8_t _kBrotliContextLookupTable[2048] = { /* CONTEXT_LSB6, last byte. */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, diff --git a/icecat/modules/brotli/common/context.h b/icecat/modules/brotli/common/context.h index 45b57d8c3e..685a279dc0 100644 --- a/icecat/modules/brotli/common/context.h +++ b/icecat/modules/brotli/common/context.h @@ -88,7 +88,8 @@ #ifndef BROTLI_COMMON_CONTEXT_H_ #define BROTLI_COMMON_CONTEXT_H_ -#include "platform.h" +#include +#include typedef enum ContextType { CONTEXT_LSB6 = 0, diff --git a/icecat/modules/brotli/common/dictionary.c b/icecat/modules/brotli/common/dictionary.c index ef43af9bfb..7c015ab0ba 100644 --- a/icecat/modules/brotli/common/dictionary.c +++ b/icecat/modules/brotli/common/dictionary.c @@ -12,11 +12,5863 @@ extern "C" { #endif #if !defined(BROTLI_EXTERNAL_DICTIONARY_DATA) -/* Embed kBrotliDictionaryData */ -#include "dictionary_inc.h" -static const BROTLI_MODEL("small") BrotliDictionary kBrotliDictionary = { +static const uint8_t kBrotliDictionaryData[] = +/* GENERATED CODE START */ +{ +116,105,109,101,100,111,119,110,108,105,102,101,108,101,102,116,98,97,99,107,99, +111,100,101,100,97,116,97,115,104,111,119,111,110,108,121,115,105,116,101,99,105 +,116,121,111,112,101,110,106,117,115,116,108,105,107,101,102,114,101,101,119,111 +,114,107,116,101,120,116,121,101,97,114,111,118,101,114,98,111,100,121,108,111, +118,101,102,111,114,109,98,111,111,107,112,108,97,121,108,105,118,101,108,105, +110,101,104,101,108,112,104,111,109,101,115,105,100,101,109,111,114,101,119,111, +114,100,108,111,110,103,116,104,101,109,118,105,101,119,102,105,110,100,112,97, +103,101,100,97,121,115,102,117,108,108,104,101,97,100,116,101,114,109,101,97,99, +104,97,114,101,97,102,114,111,109,116,114,117,101,109,97,114,107,97,98,108,101, +117,112,111,110,104,105,103,104,100,97,116,101,108,97,110,100,110,101,119,115, +101,118,101,110,110,101,120,116,99,97,115,101,98,111,116,104,112,111,115,116,117 +,115,101,100,109,97,100,101,104,97,110,100,104,101,114,101,119,104,97,116,110,97 +,109,101,76,105,110,107,98,108,111,103,115,105,122,101,98,97,115,101,104,101,108 +,100,109,97,107,101,109,97,105,110,117,115,101,114,39,41,32,43,104,111,108,100, +101,110,100,115,119,105,116,104,78,101,119,115,114,101,97,100,119,101,114,101, +115,105,103,110,116,97,107,101,104,97,118,101,103,97,109,101,115,101,101,110,99, +97,108,108,112,97,116,104,119,101,108,108,112,108,117,115,109,101,110,117,102, +105,108,109,112,97,114,116,106,111,105,110,116,104,105,115,108,105,115,116,103, +111,111,100,110,101,101,100,119,97,121,115,119,101,115,116,106,111,98,115,109, +105,110,100,97,108,115,111,108,111,103,111,114,105,99,104,117,115,101,115,108,97 +,115,116,116,101,97,109,97,114,109,121,102,111,111,100,107,105,110,103,119,105, +108,108,101,97,115,116,119,97,114,100,98,101,115,116,102,105,114,101,80,97,103, +101,107,110,111,119,97,119,97,121,46,112,110,103,109,111,118,101,116,104,97,110, +108,111,97,100,103,105,118,101,115,101,108,102,110,111,116,101,109,117,99,104, +102,101,101,100,109,97,110,121,114,111,99,107,105,99,111,110,111,110,99,101,108, +111,111,107,104,105,100,101,100,105,101,100,72,111,109,101,114,117,108,101,104, +111,115,116,97,106,97,120,105,110,102,111,99,108,117,98,108,97,119,115,108,101, +115,115,104,97,108,102,115,111,109,101,115,117,99,104,122,111,110,101,49,48,48, +37,111,110,101,115,99,97,114,101,84,105,109,101,114,97,99,101,98,108,117,101,102 +,111,117,114,119,101,101,107,102,97,99,101,104,111,112,101,103,97,118,101,104,97 +,114,100,108,111,115,116,119,104,101,110,112,97,114,107,107,101,112,116,112,97, +115,115,115,104,105,112,114,111,111,109,72,84,77,76,112,108,97,110,84,121,112, +101,100,111,110,101,115,97,118,101,107,101,101,112,102,108,97,103,108,105,110, +107,115,111,108,100,102,105,118,101,116,111,111,107,114,97,116,101,116,111,119, +110,106,117,109,112,116,104,117,115,100,97,114,107,99,97,114,100,102,105,108,101 +,102,101,97,114,115,116,97,121,107,105,108,108,116,104,97,116,102,97,108,108,97, +117,116,111,101,118,101,114,46,99,111,109,116,97,108,107,115,104,111,112,118,111 +,116,101,100,101,101,112,109,111,100,101,114,101,115,116,116,117,114,110,98,111, +114,110,98,97,110,100,102,101,108,108,114,111,115,101,117,114,108,40,115,107,105 +,110,114,111,108,101,99,111,109,101,97,99,116,115,97,103,101,115,109,101,101,116 +,103,111,108,100,46,106,112,103,105,116,101,109,118,97,114,121,102,101,108,116, +116,104,101,110,115,101,110,100,100,114,111,112,86,105,101,119,99,111,112,121,49 +,46,48,34,60,47,97,62,115,116,111,112,101,108,115,101,108,105,101,115,116,111, +117,114,112,97,99,107,46,103,105,102,112,97,115,116,99,115,115,63,103,114,97,121 +,109,101,97,110,38,103,116,59,114,105,100,101,115,104,111,116,108,97,116,101,115 +,97,105,100,114,111,97,100,118,97,114,32,102,101,101,108,106,111,104,110,114,105 +,99,107,112,111,114,116,102,97,115,116,39,85,65,45,100,101,97,100,60,47,98,62, +112,111,111,114,98,105,108,108,116,121,112,101,85,46,83,46,119,111,111,100,109, +117,115,116,50,112,120,59,73,110,102,111,114,97,110,107,119,105,100,101,119,97, +110,116,119,97,108,108,108,101,97,100,91,48,93,59,112,97,117,108,119,97,118,101, +115,117,114,101,36,40,39,35,119,97,105,116,109,97,115,115,97,114,109,115,103,111 +,101,115,103,97,105,110,108,97,110,103,112,97,105,100,33,45,45,32,108,111,99,107 +,117,110,105,116,114,111,111,116,119,97,108,107,102,105,114,109,119,105,102,101, +120,109,108,34,115,111,110,103,116,101,115,116,50,48,112,120,107,105,110,100,114 +,111,119,115,116,111,111,108,102,111,110,116,109,97,105,108,115,97,102,101,115, +116,97,114,109,97,112,115,99,111,114,101,114,97,105,110,102,108,111,119,98,97,98 +,121,115,112,97,110,115,97,121,115,52,112,120,59,54,112,120,59,97,114,116,115, +102,111,111,116,114,101,97,108,119,105,107,105,104,101,97,116,115,116,101,112, +116,114,105,112,111,114,103,47,108,97,107,101,119,101,97,107,116,111,108,100,70, +111,114,109,99,97,115,116,102,97,110,115,98,97,110,107,118,101,114,121,114,117, +110,115,106,117,108,121,116,97,115,107,49,112,120,59,103,111,97,108,103,114,101, +119,115,108,111,119,101,100,103,101,105,100,61,34,115,101,116,115,53,112,120,59, +46,106,115,63,52,48,112,120,105,102,32,40,115,111,111,110,115,101,97,116,110,111 +,110,101,116,117,98,101,122,101,114,111,115,101,110,116,114,101,101,100,102,97, +99,116,105,110,116,111,103,105,102,116,104,97,114,109,49,56,112,120,99,97,109, +101,104,105,108,108,98,111,108,100,122,111,111,109,118,111,105,100,101,97,115, +121,114,105,110,103,102,105,108,108,112,101,97,107,105,110,105,116,99,111,115, +116,51,112,120,59,106,97,99,107,116,97,103,115,98,105,116,115,114,111,108,108, +101,100,105,116,107,110,101,119,110,101,97,114,60,33,45,45,103,114,111,119,74,83 +,79,78,100,117,116,121,78,97,109,101,115,97,108,101,121,111,117,32,108,111,116, +115,112,97,105,110,106,97,122,122,99,111,108,100,101,121,101,115,102,105,115,104 +,119,119,119,46,114,105,115,107,116,97,98,115,112,114,101,118,49,48,112,120,114, +105,115,101,50,53,112,120,66,108,117,101,100,105,110,103,51,48,48,44,98,97,108, +108,102,111,114,100,101,97,114,110,119,105,108,100,98,111,120,46,102,97,105,114, +108,97,99,107,118,101,114,115,112,97,105,114,106,117,110,101,116,101,99,104,105, +102,40,33,112,105,99,107,101,118,105,108,36,40,34,35,119,97,114,109,108,111,114, +100,100,111,101,115,112,117,108,108,44,48,48,48,105,100,101,97,100,114,97,119, +104,117,103,101,115,112,111,116,102,117,110,100,98,117,114,110,104,114,101,102, +99,101,108,108,107,101,121,115,116,105,99,107,104,111,117,114,108,111,115,115, +102,117,101,108,49,50,112,120,115,117,105,116,100,101,97,108,82,83,83,34,97,103, +101,100,103,114,101,121,71,69,84,34,101,97,115,101,97,105,109,115,103,105,114, +108,97,105,100,115,56,112,120,59,110,97,118,121,103,114,105,100,116,105,112,115, +35,57,57,57,119,97,114,115,108,97,100,121,99,97,114,115,41,59,32,125,112,104,112 +,63,104,101,108,108,116,97,108,108,119,104,111,109,122,104,58,229,42,47,13,10,32 +,49,48,48,104,97,108,108,46,10,10,65,55,112,120,59,112,117,115,104,99,104,97,116 +,48,112,120,59,99,114,101,119,42,47,60,47,104,97,115,104,55,53,112,120,102,108, +97,116,114,97,114,101,32,38,38,32,116,101,108,108,99,97,109,112,111,110,116,111, +108,97,105,100,109,105,115,115,115,107,105,112,116,101,110,116,102,105,110,101, +109,97,108,101,103,101,116,115,112,108,111,116,52,48,48,44,13,10,13,10,99,111, +111,108,102,101,101,116,46,112,104,112,60,98,114,62,101,114,105,99,109,111,115, +116,103,117,105,100,98,101,108,108,100,101,115,99,104,97,105,114,109,97,116,104, +97,116,111,109,47,105,109,103,38,35,56,50,108,117,99,107,99,101,110,116,48,48,48 +,59,116,105,110,121,103,111,110,101,104,116,109,108,115,101,108,108,100,114,117, +103,70,82,69,69,110,111,100,101,110,105,99,107,63,105,100,61,108,111,115,101,110 +,117,108,108,118,97,115,116,119,105,110,100,82,83,83,32,119,101,97,114,114,101, +108,121,98,101,101,110,115,97,109,101,100,117,107,101,110,97,115,97,99,97,112, +101,119,105,115,104,103,117,108,102,84,50,51,58,104,105,116,115,115,108,111,116, +103,97,116,101,107,105,99,107,98,108,117,114,116,104,101,121,49,53,112,120,39,39 +,41,59,41,59,34,62,109,115,105,101,119,105,110,115,98,105,114,100,115,111,114, +116,98,101,116,97,115,101,101,107,84,49,56,58,111,114,100,115,116,114,101,101, +109,97,108,108,54,48,112,120,102,97,114,109,226,128,153,115,98,111,121,115,91,48 +,93,46,39,41,59,34,80,79,83,84,98,101,97,114,107,105,100,115,41,59,125,125,109, +97,114,121,116,101,110,100,40,85,75,41,113,117,97,100,122,104,58,230,45,115,105, +122,45,45,45,45,112,114,111,112,39,41,59,13,108,105,102,116,84,49,57,58,118,105, +99,101,97,110,100,121,100,101,98,116,62,82,83,83,112,111,111,108,110,101,99,107, +98,108,111,119,84,49,54,58,100,111,111,114,101,118,97,108,84,49,55,58,108,101, +116,115,102,97,105,108,111,114,97,108,112,111,108,108,110,111,118,97,99,111,108, +115,103,101,110,101,32,226,128,148,115,111,102,116,114,111,109,101,116,105,108, +108,114,111,115,115,60,104,51,62,112,111,117,114,102,97,100,101,112,105,110,107, +60,116,114,62,109,105,110,105,41,124,33,40,109,105,110,101,122,104,58,232,98,97, +114,115,104,101,97,114,48,48,41,59,109,105,108,107,32,45,45,62,105,114,111,110, +102,114,101,100,100,105,115,107,119,101,110,116,115,111,105,108,112,117,116,115, +47,106,115,47,104,111,108,121,84,50,50,58,73,83,66,78,84,50,48,58,97,100,97,109, +115,101,101,115,60,104,50,62,106,115,111,110,39,44,32,39,99,111,110,116,84,50,49 +,58,32,82,83,83,108,111,111,112,97,115,105,97,109,111,111,110,60,47,112,62,115, +111,117,108,76,73,78,69,102,111,114,116,99,97,114,116,84,49,52,58,60,104,49,62, +56,48,112,120,33,45,45,60,57,112,120,59,84,48,52,58,109,105,107,101,58,52,54,90, +110,105,99,101,105,110,99,104,89,111,114,107,114,105,99,101,122,104,58,228,39,41 +,41,59,112,117,114,101,109,97,103,101,112,97,114,97,116,111,110,101,98,111,110, +100,58,51,55,90,95,111,102,95,39,93,41,59,48,48,48,44,122,104,58,231,116,97,110, +107,121,97,114,100,98,111,119,108,98,117,115,104,58,53,54,90,74,97,118,97,51,48, +112,120,10,124,125,10,37,67,51,37,58,51,52,90,106,101,102,102,69,88,80,73,99,97, +115,104,118,105,115,97,103,111,108,102,115,110,111,119,122,104,58,233,113,117, +101,114,46,99,115,115,115,105,99,107,109,101,97,116,109,105,110,46,98,105,110, +100,100,101,108,108,104,105,114,101,112,105,99,115,114,101,110,116,58,51,54,90, +72,84,84,80,45,50,48,49,102,111,116,111,119,111,108,102,69,78,68,32,120,98,111, +120,58,53,52,90,66,79,68,89,100,105,99,107,59,10,125,10,101,120,105,116,58,51,53 +,90,118,97,114,115,98,101,97,116,39,125,41,59,100,105,101,116,57,57,57,59,97,110 +,110,101,125,125,60,47,91,105,93,46,76,97,110,103,107,109,194,178,119,105,114, +101,116,111,121,115,97,100,100,115,115,101,97,108,97,108,101,120,59,10,9,125,101 +,99,104,111,110,105,110,101,46,111,114,103,48,48,53,41,116,111,110,121,106,101, +119,115,115,97,110,100,108,101,103,115,114,111,111,102,48,48,48,41,32,50,48,48, +119,105,110,101,103,101,97,114,100,111,103,115,98,111,111,116,103,97,114,121,99, +117,116,115,116,121,108,101,116,101,109,112,116,105,111,110,46,120,109,108,99, +111,99,107,103,97,110,103,36,40,39,46,53,48,112,120,80,104,46,68,109,105,115,99, +97,108,97,110,108,111,97,110,100,101,115,107,109,105,108,101,114,121,97,110,117, +110,105,120,100,105,115,99,41,59,125,10,100,117,115,116,99,108,105,112,41,46,10, +10,55,48,112,120,45,50,48,48,68,86,68,115,55,93,62,60,116,97,112,101,100,101,109 +,111,105,43,43,41,119,97,103,101,101,117,114,111,112,104,105,108,111,112,116,115 +,104,111,108,101,70,65,81,115,97,115,105,110,45,50,54,84,108,97,98,115,112,101, +116,115,85,82,76,32,98,117,108,107,99,111,111,107,59,125,13,10,72,69,65,68,91,48 +,93,41,97,98,98,114,106,117,97,110,40,49,57,56,108,101,115,104,116,119,105,110, +60,47,105,62,115,111,110,121,103,117,121,115,102,117,99,107,112,105,112,101,124, +45,10,33,48,48,50,41,110,100,111,119,91,49,93,59,91,93,59,10,76,111,103,32,115, +97,108,116,13,10,9,9,98,97,110,103,116,114,105,109,98,97,116,104,41,123,13,10,48 +,48,112,120,10,125,41,59,107,111,58,236,102,101,101,115,97,100,62,13,115,58,47, +47,32,91,93,59,116,111,108,108,112,108,117,103,40,41,123,10,123,13,10,32,46,106, +115,39,50,48,48,112,100,117,97,108,98,111,97,116,46,74,80,71,41,59,10,125,113, +117,111,116,41,59,10,10,39,41,59,10,13,10,125,13,50,48,49,52,50,48,49,53,50,48, +49,54,50,48,49,55,50,48,49,56,50,48,49,57,50,48,50,48,50,48,50,49,50,48,50,50,50 +,48,50,51,50,48,50,52,50,48,50,53,50,48,50,54,50,48,50,55,50,48,50,56,50,48,50, +57,50,48,51,48,50,48,51,49,50,48,51,50,50,48,51,51,50,48,51,52,50,48,51,53,50,48 +,51,54,50,48,51,55,50,48,49,51,50,48,49,50,50,48,49,49,50,48,49,48,50,48,48,57, +50,48,48,56,50,48,48,55,50,48,48,54,50,48,48,53,50,48,48,52,50,48,48,51,50,48,48 +,50,50,48,48,49,50,48,48,48,49,57,57,57,49,57,57,56,49,57,57,55,49,57,57,54,49, +57,57,53,49,57,57,52,49,57,57,51,49,57,57,50,49,57,57,49,49,57,57,48,49,57,56,57 +,49,57,56,56,49,57,56,55,49,57,56,54,49,57,56,53,49,57,56,52,49,57,56,51,49,57, +56,50,49,57,56,49,49,57,56,48,49,57,55,57,49,57,55,56,49,57,55,55,49,57,55,54,49 +,57,55,53,49,57,55,52,49,57,55,51,49,57,55,50,49,57,55,49,49,57,55,48,49,57,54, +57,49,57,54,56,49,57,54,55,49,57,54,54,49,57,54,53,49,57,54,52,49,57,54,51,49,57 +,54,50,49,57,54,49,49,57,54,48,49,57,53,57,49,57,53,56,49,57,53,55,49,57,53,54, +49,57,53,53,49,57,53,52,49,57,53,51,49,57,53,50,49,57,53,49,49,57,53,48,49,48,48 +,48,49,48,50,52,49,51,57,52,48,48,48,48,57,57,57,57,99,111,109,111,109,195,161, +115,101,115,116,101,101,115,116,97,112,101,114,111,116,111,100,111,104,97,99,101 +,99,97,100,97,97,195,177,111,98,105,101,110,100,195,173,97,97,115,195,173,118, +105,100,97,99,97,115,111,111,116,114,111,102,111,114,111,115,111,108,111,111,116 +,114,97,99,117,97,108,100,105,106,111,115,105,100,111,103,114,97,110,116,105,112 +,111,116,101,109,97,100,101,98,101,97,108,103,111,113,117,195,169,101,115,116, +111,110,97,100,97,116,114,101,115,112,111,99,111,99,97,115,97,98,97,106,111,116, +111,100,97,115,105,110,111,97,103,117,97,112,117,101,115,117,110,111,115,97,110, +116,101,100,105,99,101,108,117,105,115,101,108,108,97,109,97,121,111,122,111,110 +,97,97,109,111,114,112,105,115,111,111,98,114,97,99,108,105,99,101,108,108,111, +100,105,111,115,104,111,114,97,99,97,115,105,208,183,208,176,208,189,208,176,208 +,190,208,188,209,128,208,176,209,128,209,131,209,130,208,176,208,189,208,181,208 +,191,208,190,208,190,209,130,208,184,208,183,208,189,208,190,208,180,208,190,209 +,130,208,190,208,182,208,181,208,190,208,189,208,184,209,133,208,157,208,176,208 +,181,208,181,208,177,209,139,208,188,209,139,208,146,209,139,209,129,208,190,208 +,178,209,139,208,178,208,190,208,157,208,190,208,190,208,177,208,159,208,190,208 +,187,208,184,208,189,208,184,208,160,208,164,208,157,208,181,208,156,209,139,209 +,130,209,139,208,158,208,189,208,184,208,188,208,180,208,176,208,151,208,176,208 +,148,208,176,208,157,209,131,208,158,208,177,209,130,208,181,208,152,208,183,208 +,181,208,185,208,189,209,131,208,188,208,188,208,162,209,139,209,131,208,182,217 +,129,217,138,216,163,217,134,217,133,216,167,217,133,216,185,217,131,217,132,216 +,163,217,136,216,177,216,175,217,138,216,167,217,129,217,137,217,135,217,136,217 +,132,217,133,217,132,217,131,216,167,217,136,217,132,217,135,216,168,216,179,216 +,167,217,132,216,165,217,134,217,135,217,138,216,163,217,138,217,130,216,175,217 +,135,217,132,216,171,217,133,216,168,217,135,217,132,217,136,217,132,217,138,216 +,168,217,132,216,167,217,138,216,168,217,131,216,180,217,138,216,167,217,133,216 +,163,217,133,217,134,216,170,216,168,217,138,217,132,217,134,216,173,216,168,217 +,135,217,133,217,133,216,180,217,136,216,180,102,105,114,115,116,118,105,100,101 +,111,108,105,103,104,116,119,111,114,108,100,109,101,100,105,97,119,104,105,116, +101,99,108,111,115,101,98,108,97,99,107,114,105,103,104,116,115,109,97,108,108, +98,111,111,107,115,112,108,97,99,101,109,117,115,105,99,102,105,101,108,100,111, +114,100,101,114,112,111,105,110,116,118,97,108,117,101,108,101,118,101,108,116, +97,98,108,101,98,111,97,114,100,104,111,117,115,101,103,114,111,117,112,119,111, +114,107,115,121,101,97,114,115,115,116,97,116,101,116,111,100,97,121,119,97,116, +101,114,115,116,97,114,116,115,116,121,108,101,100,101,97,116,104,112,111,119, +101,114,112,104,111,110,101,110,105,103,104,116,101,114,114,111,114,105,110,112, +117,116,97,98,111,117,116,116,101,114,109,115,116,105,116,108,101,116,111,111, +108,115,101,118,101,110,116,108,111,99,97,108,116,105,109,101,115,108,97,114,103 +,101,119,111,114,100,115,103,97,109,101,115,115,104,111,114,116,115,112,97,99, +101,102,111,99,117,115,99,108,101,97,114,109,111,100,101,108,98,108,111,99,107, +103,117,105,100,101,114,97,100,105,111,115,104,97,114,101,119,111,109,101,110,97 +,103,97,105,110,109,111,110,101,121,105,109,97,103,101,110,97,109,101,115,121, +111,117,110,103,108,105,110,101,115,108,97,116,101,114,99,111,108,111,114,103, +114,101,101,110,102,114,111,110,116,38,97,109,112,59,119,97,116,99,104,102,111, +114,99,101,112,114,105,99,101,114,117,108,101,115,98,101,103,105,110,97,102,116, +101,114,118,105,115,105,116,105,115,115,117,101,97,114,101,97,115,98,101,108,111 +,119,105,110,100,101,120,116,111,116,97,108,104,111,117,114,115,108,97,98,101, +108,112,114,105,110,116,112,114,101,115,115,98,117,105,108,116,108,105,110,107, +115,115,112,101,101,100,115,116,117,100,121,116,114,97,100,101,102,111,117,110, +100,115,101,110,115,101,117,110,100,101,114,115,104,111,119,110,102,111,114,109, +115,114,97,110,103,101,97,100,100,101,100,115,116,105,108,108,109,111,118,101, +100,116,97,107,101,110,97,98,111,118,101,102,108,97,115,104,102,105,120,101,100, +111,102,116,101,110,111,116,104,101,114,118,105,101,119,115,99,104,101,99,107, +108,101,103,97,108,114,105,118,101,114,105,116,101,109,115,113,117,105,99,107, +115,104,97,112,101,104,117,109,97,110,101,120,105,115,116,103,111,105,110,103, +109,111,118,105,101,116,104,105,114,100,98,97,115,105,99,112,101,97,99,101,115, +116,97,103,101,119,105,100,116,104,108,111,103,105,110,105,100,101,97,115,119, +114,111,116,101,112,97,103,101,115,117,115,101,114,115,100,114,105,118,101,115, +116,111,114,101,98,114,101,97,107,115,111,117,116,104,118,111,105,99,101,115,105 +,116,101,115,109,111,110,116,104,119,104,101,114,101,98,117,105,108,100,119,104, +105,99,104,101,97,114,116,104,102,111,114,117,109,116,104,114,101,101,115,112, +111,114,116,112,97,114,116,121,67,108,105,99,107,108,111,119,101,114,108,105,118 +,101,115,99,108,97,115,115,108,97,121,101,114,101,110,116,114,121,115,116,111, +114,121,117,115,97,103,101,115,111,117,110,100,99,111,117,114,116,121,111,117, +114,32,98,105,114,116,104,112,111,112,117,112,116,121,112,101,115,97,112,112,108 +,121,73,109,97,103,101,98,101,105,110,103,117,112,112,101,114,110,111,116,101, +115,101,118,101,114,121,115,104,111,119,115,109,101,97,110,115,101,120,116,114, +97,109,97,116,99,104,116,114,97,99,107,107,110,111,119,110,101,97,114,108,121,98 +,101,103,97,110,115,117,112,101,114,112,97,112,101,114,110,111,114,116,104,108, +101,97,114,110,103,105,118,101,110,110,97,109,101,100,101,110,100,101,100,84,101 +,114,109,115,112,97,114,116,115,71,114,111,117,112,98,114,97,110,100,117,115,105 +,110,103,119,111,109,97,110,102,97,108,115,101,114,101,97,100,121,97,117,100,105 +,111,116,97,107,101,115,119,104,105,108,101,46,99,111,109,47,108,105,118,101,100 +,99,97,115,101,115,100,97,105,108,121,99,104,105,108,100,103,114,101,97,116,106, +117,100,103,101,116,104,111,115,101,117,110,105,116,115,110,101,118,101,114,98, +114,111,97,100,99,111,97,115,116,99,111,118,101,114,97,112,112,108,101,102,105, +108,101,115,99,121,99,108,101,115,99,101,110,101,112,108,97,110,115,99,108,105, +99,107,119,114,105,116,101,113,117,101,101,110,112,105,101,99,101,101,109,97,105 +,108,102,114,97,109,101,111,108,100,101,114,112,104,111,116,111,108,105,109,105, +116,99,97,99,104,101,99,105,118,105,108,115,99,97,108,101,101,110,116,101,114, +116,104,101,109,101,116,104,101,114,101,116,111,117,99,104,98,111,117,110,100, +114,111,121,97,108,97,115,107,101,100,119,104,111,108,101,115,105,110,99,101,115 +,116,111,99,107,32,110,97,109,101,102,97,105,116,104,104,101,97,114,116,101,109, +112,116,121,111,102,102,101,114,115,99,111,112,101,111,119,110,101,100,109,105, +103,104,116,97,108,98,117,109,116,104,105,110,107,98,108,111,111,100,97,114,114, +97,121,109,97,106,111,114,116,114,117,115,116,99,97,110,111,110,117,110,105,111, +110,99,111,117,110,116,118,97,108,105,100,115,116,111,110,101,83,116,121,108,101 +,76,111,103,105,110,104,97,112,112,121,111,99,99,117,114,108,101,102,116,58,102, +114,101,115,104,113,117,105,116,101,102,105,108,109,115,103,114,97,100,101,110, +101,101,100,115,117,114,98,97,110,102,105,103,104,116,98,97,115,105,115,104,111, +118,101,114,97,117,116,111,59,114,111,117,116,101,46,104,116,109,108,109,105,120 +,101,100,102,105,110,97,108,89,111,117,114,32,115,108,105,100,101,116,111,112, +105,99,98,114,111,119,110,97,108,111,110,101,100,114,97,119,110,115,112,108,105, +116,114,101,97,99,104,82,105,103,104,116,100,97,116,101,115,109,97,114,99,104, +113,117,111,116,101,103,111,111,100,115,76,105,110,107,115,100,111,117,98,116,97 +,115,121,110,99,116,104,117,109,98,97,108,108,111,119,99,104,105,101,102,121,111 +,117,116,104,110,111,118,101,108,49,48,112,120,59,115,101,114,118,101,117,110, +116,105,108,104,97,110,100,115,67,104,101,99,107,83,112,97,99,101,113,117,101, +114,121,106,97,109,101,115,101,113,117,97,108,116,119,105,99,101,48,44,48,48,48, +83,116,97,114,116,112,97,110,101,108,115,111,110,103,115,114,111,117,110,100,101 +,105,103,104,116,115,104,105,102,116,119,111,114,116,104,112,111,115,116,115,108 +,101,97,100,115,119,101,101,107,115,97,118,111,105,100,116,104,101,115,101,109, +105,108,101,115,112,108,97,110,101,115,109,97,114,116,97,108,112,104,97,112,108, +97,110,116,109,97,114,107,115,114,97,116,101,115,112,108,97,121,115,99,108,97, +105,109,115,97,108,101,115,116,101,120,116,115,115,116,97,114,115,119,114,111, +110,103,60,47,104,51,62,116,104,105,110,103,46,111,114,103,47,109,117,108,116, +105,104,101,97,114,100,80,111,119,101,114,115,116,97,110,100,116,111,107,101,110 +,115,111,108,105,100,40,116,104,105,115,98,114,105,110,103,115,104,105,112,115, +115,116,97,102,102,116,114,105,101,100,99,97,108,108,115,102,117,108,108,121,102 +,97,99,116,115,97,103,101,110,116,84,104,105,115,32,47,47,45,45,62,97,100,109, +105,110,101,103,121,112,116,69,118,101,110,116,49,53,112,120,59,69,109,97,105, +108,116,114,117,101,34,99,114,111,115,115,115,112,101,110,116,98,108,111,103,115 +,98,111,120,34,62,110,111,116,101,100,108,101,97,118,101,99,104,105,110,97,115, +105,122,101,115,103,117,101,115,116,60,47,104,52,62,114,111,98,111,116,104,101, +97,118,121,116,114,117,101,44,115,101,118,101,110,103,114,97,110,100,99,114,105, +109,101,115,105,103,110,115,97,119,97,114,101,100,97,110,99,101,112,104,97,115, +101,62,60,33,45,45,101,110,95,85,83,38,35,51,57,59,50,48,48,112,120,95,110,97, +109,101,108,97,116,105,110,101,110,106,111,121,97,106,97,120,46,97,116,105,111, +110,115,109,105,116,104,85,46,83,46,32,104,111,108,100,115,112,101,116,101,114, +105,110,100,105,97,110,97,118,34,62,99,104,97,105,110,115,99,111,114,101,99,111, +109,101,115,100,111,105,110,103,112,114,105,111,114,83,104,97,114,101,49,57,57, +48,115,114,111,109,97,110,108,105,115,116,115,106,97,112,97,110,102,97,108,108, +115,116,114,105,97,108,111,119,110,101,114,97,103,114,101,101,60,47,104,50,62,97 +,98,117,115,101,97,108,101,114,116,111,112,101,114,97,34,45,47,47,87,99,97,114, +100,115,104,105,108,108,115,116,101,97,109,115,80,104,111,116,111,116,114,117, +116,104,99,108,101,97,110,46,112,104,112,63,115,97,105,110,116,109,101,116,97, +108,108,111,117,105,115,109,101,97,110,116,112,114,111,111,102,98,114,105,101, +102,114,111,119,34,62,103,101,110,114,101,116,114,117,99,107,108,111,111,107,115 +,86,97,108,117,101,70,114,97,109,101,46,110,101,116,47,45,45,62,10,60,116,114, +121,32,123,10,118,97,114,32,109,97,107,101,115,99,111,115,116,115,112,108,97,105 +,110,97,100,117,108,116,113,117,101,115,116,116,114,97,105,110,108,97,98,111,114 +,104,101,108,112,115,99,97,117,115,101,109,97,103,105,99,109,111,116,111,114,116 +,104,101,105,114,50,53,48,112,120,108,101,97,115,116,115,116,101,112,115,67,111, +117,110,116,99,111,117,108,100,103,108,97,115,115,115,105,100,101,115,102,117, +110,100,115,104,111,116,101,108,97,119,97,114,100,109,111,117,116,104,109,111, +118,101,115,112,97,114,105,115,103,105,118,101,115,100,117,116,99,104,116,101, +120,97,115,102,114,117,105,116,110,117,108,108,44,124,124,91,93,59,116,111,112, +34,62,10,60,33,45,45,80,79,83,84,34,111,99,101,97,110,60,98,114,47,62,102,108, +111,111,114,115,112,101,97,107,100,101,112,116,104,32,115,105,122,101,98,97,110, +107,115,99,97,116,99,104,99,104,97,114,116,50,48,112,120,59,97,108,105,103,110, +100,101,97,108,115,119,111,117,108,100,53,48,112,120,59,117,114,108,61,34,112,97 +,114,107,115,109,111,117,115,101,77,111,115,116,32,46,46,46,60,47,97,109,111,110 +,103,98,114,97,105,110,98,111,100,121,32,110,111,110,101,59,98,97,115,101,100,99 +,97,114,114,121,100,114,97,102,116,114,101,102,101,114,112,97,103,101,95,104,111 +,109,101,46,109,101,116,101,114,100,101,108,97,121,100,114,101,97,109,112,114, +111,118,101,106,111,105,110,116,60,47,116,114,62,100,114,117,103,115,60,33,45,45 +,32,97,112,114,105,108,105,100,101,97,108,97,108,108,101,110,101,120,97,99,116, +102,111,114,116,104,99,111,100,101,115,108,111,103,105,99,86,105,101,119,32,115, +101,101,109,115,98,108,97,110,107,112,111,114,116,115,32,40,50,48,48,115,97,118, +101,100,95,108,105,110,107,103,111,97,108,115,103,114,97,110,116,103,114,101,101 +,107,104,111,109,101,115,114,105,110,103,115,114,97,116,101,100,51,48,112,120,59 +,119,104,111,115,101,112,97,114,115,101,40,41,59,34,32,66,108,111,99,107,108,105 +,110,117,120,106,111,110,101,115,112,105,120,101,108,39,41,59,34,62,41,59,105, +102,40,45,108,101,102,116,100,97,118,105,100,104,111,114,115,101,70,111,99,117, +115,114,97,105,115,101,98,111,120,101,115,84,114,97,99,107,101,109,101,110,116, +60,47,101,109,62,98,97,114,34,62,46,115,114,99,61,116,111,119,101,114,97,108,116 +,61,34,99,97,98,108,101,104,101,110,114,121,50,52,112,120,59,115,101,116,117,112 +,105,116,97,108,121,115,104,97,114,112,109,105,110,111,114,116,97,115,116,101, +119,97,110,116,115,116,104,105,115,46,114,101,115,101,116,119,104,101,101,108, +103,105,114,108,115,47,99,115,115,47,49,48,48,37,59,99,108,117,98,115,115,116, +117,102,102,98,105,98,108,101,118,111,116,101,115,32,49,48,48,48,107,111,114,101 +,97,125,41,59,13,10,98,97,110,100,115,113,117,101,117,101,61,32,123,125,59,56,48 +,112,120,59,99,107,105,110,103,123,13,10,9,9,97,104,101,97,100,99,108,111,99,107 +,105,114,105,115,104,108,105,107,101,32,114,97,116,105,111,115,116,97,116,115,70 +,111,114,109,34,121,97,104,111,111,41,91,48,93,59,65,98,111,117,116,102,105,110, +100,115,60,47,104,49,62,100,101,98,117,103,116,97,115,107,115,85,82,76,32,61,99, +101,108,108,115,125,41,40,41,59,49,50,112,120,59,112,114,105,109,101,116,101,108 +,108,115,116,117,114,110,115,48,120,54,48,48,46,106,112,103,34,115,112,97,105, +110,98,101,97,99,104,116,97,120,101,115,109,105,99,114,111,97,110,103,101,108,45 +,45,62,60,47,103,105,102,116,115,115,116,101,118,101,45,108,105,110,107,98,111, +100,121,46,125,41,59,10,9,109,111,117,110,116,32,40,49,57,57,70,65,81,60,47,114, +111,103,101,114,102,114,97,110,107,67,108,97,115,115,50,56,112,120,59,102,101, +101,100,115,60,104,49,62,60,115,99,111,116,116,116,101,115,116,115,50,50,112,120 +,59,100,114,105,110,107,41,32,124,124,32,108,101,119,105,115,115,104,97,108,108, +35,48,51,57,59,32,102,111,114,32,108,111,118,101,100,119,97,115,116,101,48,48, +112,120,59,106,97,58,227,130,115,105,109,111,110,60,102,111,110,116,114,101,112, +108,121,109,101,101,116,115,117,110,116,101,114,99,104,101,97,112,116,105,103, +104,116,66,114,97,110,100,41,32,33,61,32,100,114,101,115,115,99,108,105,112,115, +114,111,111,109,115,111,110,107,101,121,109,111,98,105,108,109,97,105,110,46,78, +97,109,101,32,112,108,97,116,101,102,117,110,110,121,116,114,101,101,115,99,111, +109,47,34,49,46,106,112,103,119,109,111,100,101,112,97,114,97,109,83,84,65,82,84 +,108,101,102,116,32,105,100,100,101,110,44,32,50,48,49,41,59,10,125,10,102,111, +114,109,46,118,105,114,117,115,99,104,97,105,114,116,114,97,110,115,119,111,114, +115,116,80,97,103,101,115,105,116,105,111,110,112,97,116,99,104,60,33,45,45,10, +111,45,99,97,99,102,105,114,109,115,116,111,117,114,115,44,48,48,48,32,97,115, +105,97,110,105,43,43,41,123,97,100,111,98,101,39,41,91,48,93,105,100,61,49,48,98 +,111,116,104,59,109,101,110,117,32,46,50,46,109,105,46,112,110,103,34,107,101, +118,105,110,99,111,97,99,104,67,104,105,108,100,98,114,117,99,101,50,46,106,112, +103,85,82,76,41,43,46,106,112,103,124,115,117,105,116,101,115,108,105,99,101,104 +,97,114,114,121,49,50,48,34,32,115,119,101,101,116,116,114,62,13,10,110,97,109, +101,61,100,105,101,103,111,112,97,103,101,32,115,119,105,115,115,45,45,62,10,10, +35,102,102,102,59,34,62,76,111,103,46,99,111,109,34,116,114,101,97,116,115,104, +101,101,116,41,32,38,38,32,49,52,112,120,59,115,108,101,101,112,110,116,101,110, +116,102,105,108,101,100,106,97,58,227,131,105,100,61,34,99,78,97,109,101,34,119, +111,114,115,101,115,104,111,116,115,45,98,111,120,45,100,101,108,116,97,10,38, +108,116,59,98,101,97,114,115,58,52,56,90,60,100,97,116,97,45,114,117,114,97,108, +60,47,97,62,32,115,112,101,110,100,98,97,107,101,114,115,104,111,112,115,61,32, +34,34,59,112,104,112,34,62,99,116,105,111,110,49,51,112,120,59,98,114,105,97,110 +,104,101,108,108,111,115,105,122,101,61,111,61,37,50,70,32,106,111,105,110,109, +97,121,98,101,60,105,109,103,32,105,109,103,34,62,44,32,102,106,115,105,109,103, +34,32,34,41,91,48,93,77,84,111,112,66,84,121,112,101,34,110,101,119,108,121,68, +97,110,115,107,99,122,101,99,104,116,114,97,105,108,107,110,111,119,115,60,47, +104,53,62,102,97,113,34,62,122,104,45,99,110,49,48,41,59,10,45,49,34,41,59,116, +121,112,101,61,98,108,117,101,115,116,114,117,108,121,100,97,118,105,115,46,106, +115,39,59,62,13,10,60,33,115,116,101,101,108,32,121,111,117,32,104,50,62,13,10, +102,111,114,109,32,106,101,115,117,115,49,48,48,37,32,109,101,110,117,46,13,10,9 +,13,10,119,97,108,101,115,114,105,115,107,115,117,109,101,110,116,100,100,105, +110,103,98,45,108,105,107,116,101,97,99,104,103,105,102,34,32,118,101,103,97,115 +,100,97,110,115,107,101,101,115,116,105,115,104,113,105,112,115,117,111,109,105, +115,111,98,114,101,100,101,115,100,101,101,110,116,114,101,116,111,100,111,115, +112,117,101,100,101,97,195,177,111,115,101,115,116,195,161,116,105,101,110,101, +104,97,115,116,97,111,116,114,111,115,112,97,114,116,101,100,111,110,100,101,110 +,117,101,118,111,104,97,99,101,114,102,111,114,109,97,109,105,115,109,111,109, +101,106,111,114,109,117,110,100,111,97,113,117,195,173,100,195,173,97,115,115, +195,179,108,111,97,121,117,100,97,102,101,99,104,97,116,111,100,97,115,116,97, +110,116,111,109,101,110,111,115,100,97,116,111,115,111,116,114,97,115,115,105, +116,105,111,109,117,99,104,111,97,104,111,114,97,108,117,103,97,114,109,97,121, +111,114,101,115,116,111,115,104,111,114,97,115,116,101,110,101,114,97,110,116, +101,115,102,111,116,111,115,101,115,116,97,115,112,97,195,173,115,110,117,101, +118,97,115,97,108,117,100,102,111,114,111,115,109,101,100,105,111,113,117,105, +101,110,109,101,115,101,115,112,111,100,101,114,99,104,105,108,101,115,101,114, +195,161,118,101,99,101,115,100,101,99,105,114,106,111,115,195,169,101,115,116,97 +,114,118,101,110,116,97,103,114,117,112,111,104,101,99,104,111,101,108,108,111, +115,116,101,110,103,111,97,109,105,103,111,99,111,115,97,115,110,105,118,101,108 +,103,101,110,116,101,109,105,115,109,97,97,105,114,101,115,106,117,108,105,111, +116,101,109,97,115,104,97,99,105,97,102,97,118,111,114,106,117,110,105,111,108, +105,98,114,101,112,117,110,116,111,98,117,101,110,111,97,117,116,111,114,97,98, +114,105,108,98,117,101,110,97,116,101,120,116,111,109,97,114,122,111,115,97,98, +101,114,108,105,115,116,97,108,117,101,103,111,99,195,179,109,111,101,110,101, +114,111,106,117,101,103,111,112,101,114,195,186,104,97,98,101,114,101,115,116, +111,121,110,117,110,99,97,109,117,106,101,114,118,97,108,111,114,102,117,101,114 +,97,108,105,98,114,111,103,117,115,116,97,105,103,117,97,108,118,111,116,111,115 +,99,97,115,111,115,103,117,195,173,97,112,117,101,100,111,115,111,109,111,115,97 +,118,105,115,111,117,115,116,101,100,100,101,98,101,110,110,111,99,104,101,98, +117,115,99,97,102,97,108,116,97,101,117,114,111,115,115,101,114,105,101,100,105, +99,104,111,99,117,114,115,111,99,108,97,118,101,99,97,115,97,115,108,101,195,179 +,110,112,108,97,122,111,108,97,114,103,111,111,98,114,97,115,118,105,115,116,97, +97,112,111,121,111,106,117,110,116,111,116,114,97,116,97,118,105,115,116,111,99, +114,101,97,114,99,97,109,112,111,104,101,109,111,115,99,105,110,99,111,99,97,114 +,103,111,112,105,115,111,115,111,114,100,101,110,104,97,99,101,110,195,161,114, +101,97,100,105,115,99,111,112,101,100,114,111,99,101,114,99,97,112,117,101,100, +97,112,97,112,101,108,109,101,110,111,114,195,186,116,105,108,99,108,97,114,111, +106,111,114,103,101,99,97,108,108,101,112,111,110,101,114,116,97,114,100,101,110 +,97,100,105,101,109,97,114,99,97,115,105,103,117,101,101,108,108,97,115,115,105, +103,108,111,99,111,99,104,101,109,111,116,111,115,109,97,100,114,101,99,108,97, +115,101,114,101,115,116,111,110,105,195,177,111,113,117,101,100,97,112,97,115,97 +,114,98,97,110,99,111,104,105,106,111,115,118,105,97,106,101,112,97,98,108,111, +195,169,115,116,101,118,105,101,110,101,114,101,105,110,111,100,101,106,97,114, +102,111,110,100,111,99,97,110,97,108,110,111,114,116,101,108,101,116,114,97,99, +97,117,115,97,116,111,109,97,114,109,97,110,111,115,108,117,110,101,115,97,117, +116,111,115,118,105,108,108,97,118,101,110,100,111,112,101,115,97,114,116,105, +112,111,115,116,101,110,103,97,109,97,114,99,111,108,108,101,118,97,112,97,100, +114,101,117,110,105,100,111,118,97,109,111,115,122,111,110,97,115,97,109,98,111, +115,98,97,110,100,97,109,97,114,105,97,97,98,117,115,111,109,117,99,104,97,115, +117,98,105,114,114,105,111,106,97,118,105,118,105,114,103,114,97,100,111,99,104, +105,99,97,97,108,108,195,173,106,111,118,101,110,100,105,99,104,97,101,115,116, +97,110,116,97,108,101,115,115,97,108,105,114,115,117,101,108,111,112,101,115,111 +,115,102,105,110,101,115,108,108,97,109,97,98,117,115,99,111,195,169,115,116,97, +108,108,101,103,97,110,101,103,114,111,112,108,97,122,97,104,117,109,111,114,112 +,97,103,97,114,106,117,110,116,97,100,111,98,108,101,105,115,108,97,115,98,111, +108,115,97,98,97,195,177,111,104,97,98,108,97,108,117,99,104,97,195,129,114,101, +97,100,105,99,101,110,106,117,103,97,114,110,111,116,97,115,118,97,108,108,101, +97,108,108,195,161,99,97,114,103,97,100,111,108,111,114,97,98,97,106,111,101,115 +,116,195,169,103,117,115,116,111,109,101,110,116,101,109,97,114,105,111,102,105, +114,109,97,99,111,115,116,111,102,105,99,104,97,112,108,97,116,97,104,111,103,97 +,114,97,114,116,101,115,108,101,121,101,115,97,113,117,101,108,109,117,115,101, +111,98,97,115,101,115,112,111,99,111,115,109,105,116,97,100,99,105,101,108,111, +99,104,105,99,111,109,105,101,100,111,103,97,110,97,114,115,97,110,116,111,101, +116,97,112,97,100,101,98,101,115,112,108,97,121,97,114,101,100,101,115,115,105, +101,116,101,99,111,114,116,101,99,111,114,101,97,100,117,100,97,115,100,101,115, +101,111,118,105,101,106,111,100,101,115,101,97,97,103,117,97,115,38,113,117,111, +116,59,100,111,109,97,105,110,99,111,109,109,111,110,115,116,97,116,117,115,101, +118,101,110,116,115,109,97,115,116,101,114,115,121,115,116,101,109,97,99,116,105 +,111,110,98,97,110,110,101,114,114,101,109,111,118,101,115,99,114,111,108,108, +117,112,100,97,116,101,103,108,111,98,97,108,109,101,100,105,117,109,102,105,108 +,116,101,114,110,117,109,98,101,114,99,104,97,110,103,101,114,101,115,117,108, +116,112,117,98,108,105,99,115,99,114,101,101,110,99,104,111,111,115,101,110,111, +114,109,97,108,116,114,97,118,101,108,105,115,115,117,101,115,115,111,117,114,99 +,101,116,97,114,103,101,116,115,112,114,105,110,103,109,111,100,117,108,101,109, +111,98,105,108,101,115,119,105,116,99,104,112,104,111,116,111,115,98,111,114,100 +,101,114,114,101,103,105,111,110,105,116,115,101,108,102,115,111,99,105,97,108, +97,99,116,105,118,101,99,111,108,117,109,110,114,101,99,111,114,100,102,111,108, +108,111,119,116,105,116,108,101,62,101,105,116,104,101,114,108,101,110,103,116, +104,102,97,109,105,108,121,102,114,105,101,110,100,108,97,121,111,117,116,97,117 +,116,104,111,114,99,114,101,97,116,101,114,101,118,105,101,119,115,117,109,109, +101,114,115,101,114,118,101,114,112,108,97,121,101,100,112,108,97,121,101,114, +101,120,112,97,110,100,112,111,108,105,99,121,102,111,114,109,97,116,100,111,117 +,98,108,101,112,111,105,110,116,115,115,101,114,105,101,115,112,101,114,115,111, +110,108,105,118,105,110,103,100,101,115,105,103,110,109,111,110,116,104,115,102, +111,114,99,101,115,117,110,105,113,117,101,119,101,105,103,104,116,112,101,111, +112,108,101,101,110,101,114,103,121,110,97,116,117,114,101,115,101,97,114,99,104 +,102,105,103,117,114,101,104,97,118,105,110,103,99,117,115,116,111,109,111,102, +102,115,101,116,108,101,116,116,101,114,119,105,110,100,111,119,115,117,98,109, +105,116,114,101,110,100,101,114,103,114,111,117,112,115,117,112,108,111,97,100, +104,101,97,108,116,104,109,101,116,104,111,100,118,105,100,101,111,115,115,99, +104,111,111,108,102,117,116,117,114,101,115,104,97,100,111,119,100,101,98,97,116 +,101,118,97,108,117,101,115,79,98,106,101,99,116,111,116,104,101,114,115,114,105 +,103,104,116,115,108,101,97,103,117,101,99,104,114,111,109,101,115,105,109,112, +108,101,110,111,116,105,99,101,115,104,97,114,101,100,101,110,100,105,110,103, +115,101,97,115,111,110,114,101,112,111,114,116,111,110,108,105,110,101,115,113, +117,97,114,101,98,117,116,116,111,110,105,109,97,103,101,115,101,110,97,98,108, +101,109,111,118,105,110,103,108,97,116,101,115,116,119,105,110,116,101,114,70, +114,97,110,99,101,112,101,114,105,111,100,115,116,114,111,110,103,114,101,112, +101,97,116,76,111,110,100,111,110,100,101,116,97,105,108,102,111,114,109,101,100 +,100,101,109,97,110,100,115,101,99,117,114,101,112,97,115,115,101,100,116,111, +103,103,108,101,112,108,97,99,101,115,100,101,118,105,99,101,115,116,97,116,105, +99,99,105,116,105,101,115,115,116,114,101,97,109,121,101,108,108,111,119,97,116, +116,97,99,107,115,116,114,101,101,116,102,108,105,103,104,116,104,105,100,100, +101,110,105,110,102,111,34,62,111,112,101,110,101,100,117,115,101,102,117,108, +118,97,108,108,101,121,99,97,117,115,101,115,108,101,97,100,101,114,115,101,99, +114,101,116,115,101,99,111,110,100,100,97,109,97,103,101,115,112,111,114,116,115 +,101,120,99,101,112,116,114,97,116,105,110,103,115,105,103,110,101,100,116,104, +105,110,103,115,101,102,102,101,99,116,102,105,101,108,100,115,115,116,97,116, +101,115,111,102,102,105,99,101,118,105,115,117,97,108,101,100,105,116,111,114, +118,111,108,117,109,101,82,101,112,111,114,116,109,117,115,101,117,109,109,111, +118,105,101,115,112,97,114,101,110,116,97,99,99,101,115,115,109,111,115,116,108, +121,109,111,116,104,101,114,34,32,105,100,61,34,109,97,114,107,101,116,103,114, +111,117,110,100,99,104,97,110,99,101,115,117,114,118,101,121,98,101,102,111,114, +101,115,121,109,98,111,108,109,111,109,101,110,116,115,112,101,101,99,104,109, +111,116,105,111,110,105,110,115,105,100,101,109,97,116,116,101,114,67,101,110, +116,101,114,111,98,106,101,99,116,101,120,105,115,116,115,109,105,100,100,108, +101,69,117,114,111,112,101,103,114,111,119,116,104,108,101,103,97,99,121,109,97, +110,110,101,114,101,110,111,117,103,104,99,97,114,101,101,114,97,110,115,119,101 +,114,111,114,105,103,105,110,112,111,114,116,97,108,99,108,105,101,110,116,115, +101,108,101,99,116,114,97,110,100,111,109,99,108,111,115,101,100,116,111,112,105 +,99,115,99,111,109,105,110,103,102,97,116,104,101,114,111,112,116,105,111,110, +115,105,109,112,108,121,114,97,105,115,101,100,101,115,99,97,112,101,99,104,111, +115,101,110,99,104,117,114,99,104,100,101,102,105,110,101,114,101,97,115,111,110 +,99,111,114,110,101,114,111,117,116,112,117,116,109,101,109,111,114,121,105,102, +114,97,109,101,112,111,108,105,99,101,109,111,100,101,108,115,78,117,109,98,101, +114,100,117,114,105,110,103,111,102,102,101,114,115,115,116,121,108,101,115,107, +105,108,108,101,100,108,105,115,116,101,100,99,97,108,108,101,100,115,105,108, +118,101,114,109,97,114,103,105,110,100,101,108,101,116,101,98,101,116,116,101, +114,98,114,111,119,115,101,108,105,109,105,116,115,71,108,111,98,97,108,115,105, +110,103,108,101,119,105,100,103,101,116,99,101,110,116,101,114,98,117,100,103, +101,116,110,111,119,114,97,112,99,114,101,100,105,116,99,108,97,105,109,115,101, +110,103,105,110,101,115,97,102,101,116,121,99,104,111,105,99,101,115,112,105,114 +,105,116,45,115,116,121,108,101,115,112,114,101,97,100,109,97,107,105,110,103, +110,101,101,100,101,100,114,117,115,115,105,97,112,108,101,97,115,101,101,120, +116,101,110,116,83,99,114,105,112,116,98,114,111,107,101,110,97,108,108,111,119, +115,99,104,97,114,103,101,100,105,118,105,100,101,102,97,99,116,111,114,109,101, +109,98,101,114,45,98,97,115,101,100,116,104,101,111,114,121,99,111,110,102,105, +103,97,114,111,117,110,100,119,111,114,107,101,100,104,101,108,112,101,100,67, +104,117,114,99,104,105,109,112,97,99,116,115,104,111,117,108,100,97,108,119,97, +121,115,108,111,103,111,34,32,98,111,116,116,111,109,108,105,115,116,34,62,41, +123,118,97,114,32,112,114,101,102,105,120,111,114,97,110,103,101,72,101,97,100, +101,114,46,112,117,115,104,40,99,111,117,112,108,101,103,97,114,100,101,110,98, +114,105,100,103,101,108,97,117,110,99,104,82,101,118,105,101,119,116,97,107,105, +110,103,118,105,115,105,111,110,108,105,116,116,108,101,100,97,116,105,110,103, +66,117,116,116,111,110,98,101,97,117,116,121,116,104,101,109,101,115,102,111,114 +,103,111,116,83,101,97,114,99,104,97,110,99,104,111,114,97,108,109,111,115,116, +108,111,97,100,101,100,67,104,97,110,103,101,114,101,116,117,114,110,115,116,114 +,105,110,103,114,101,108,111,97,100,77,111,98,105,108,101,105,110,99,111,109,101 +,115,117,112,112,108,121,83,111,117,114,99,101,111,114,100,101,114,115,118,105, +101,119,101,100,38,110,98,115,112,59,99,111,117,114,115,101,65,98,111,117,116,32 +,105,115,108,97,110,100,60,104,116,109,108,32,99,111,111,107,105,101,110,97,109, +101,61,34,97,109,97,122,111,110,109,111,100,101,114,110,97,100,118,105,99,101, +105,110,60,47,97,62,58,32,84,104,101,32,100,105,97,108,111,103,104,111,117,115, +101,115,66,69,71,73,78,32,77,101,120,105,99,111,115,116,97,114,116,115,99,101, +110,116,114,101,104,101,105,103,104,116,97,100,100,105,110,103,73,115,108,97,110 +,100,97,115,115,101,116,115,69,109,112,105,114,101,83,99,104,111,111,108,101,102 +,102,111,114,116,100,105,114,101,99,116,110,101,97,114,108,121,109,97,110,117,97 +,108,83,101,108,101,99,116,46,10,10,79,110,101,106,111,105,110,101,100,109,101, +110,117,34,62,80,104,105,108,105,112,97,119,97,114,100,115,104,97,110,100,108, +101,105,109,112,111,114,116,79,102,102,105,99,101,114,101,103,97,114,100,115,107 +,105,108,108,115,110,97,116,105,111,110,83,112,111,114,116,115,100,101,103,114, +101,101,119,101,101,107,108,121,32,40,101,46,103,46,98,101,104,105,110,100,100, +111,99,116,111,114,108,111,103,103,101,100,117,110,105,116,101,100,60,47,98,62, +60,47,98,101,103,105,110,115,112,108,97,110,116,115,97,115,115,105,115,116,97, +114,116,105,115,116,105,115,115,117,101,100,51,48,48,112,120,124,99,97,110,97, +100,97,97,103,101,110,99,121,115,99,104,101,109,101,114,101,109,97,105,110,66, +114,97,122,105,108,115,97,109,112,108,101,108,111,103,111,34,62,98,101,121,111, +110,100,45,115,99,97,108,101,97,99,99,101,112,116,115,101,114,118,101,100,109,97 +,114,105,110,101,70,111,111,116,101,114,99,97,109,101,114,97,60,47,104,49,62,10, +95,102,111,114,109,34,108,101,97,118,101,115,115,116,114,101,115,115,34,32,47,62 +,13,10,46,103,105,102,34,32,111,110,108,111,97,100,108,111,97,100,101,114,79,120 +,102,111,114,100,115,105,115,116,101,114,115,117,114,118,105,118,108,105,115,116 +,101,110,102,101,109,97,108,101,68,101,115,105,103,110,115,105,122,101,61,34,97, +112,112,101,97,108,116,101,120,116,34,62,108,101,118,101,108,115,116,104,97,110, +107,115,104,105,103,104,101,114,102,111,114,99,101,100,97,110,105,109,97,108,97, +110,121,111,110,101,65,102,114,105,99,97,97,103,114,101,101,100,114,101,99,101, +110,116,80,101,111,112,108,101,60,98,114,32,47,62,119,111,110,100,101,114,112, +114,105,99,101,115,116,117,114,110,101,100,124,124,32,123,125,59,109,97,105,110, +34,62,105,110,108,105,110,101,115,117,110,100,97,121,119,114,97,112,34,62,102,97 +,105,108,101,100,99,101,110,115,117,115,109,105,110,117,116,101,98,101,97,99,111 +,110,113,117,111,116,101,115,49,53,48,112,120,124,101,115,116,97,116,101,114,101 +,109,111,116,101,101,109,97,105,108,34,108,105,110,107,101,100,114,105,103,104, +116,59,115,105,103,110,97,108,102,111,114,109,97,108,49,46,104,116,109,108,115, +105,103,110,117,112,112,114,105,110,99,101,102,108,111,97,116,58,46,112,110,103, +34,32,102,111,114,117,109,46,65,99,99,101,115,115,112,97,112,101,114,115,115,111 +,117,110,100,115,101,120,116,101,110,100,72,101,105,103,104,116,115,108,105,100, +101,114,85,84,70,45,56,34,38,97,109,112,59,32,66,101,102,111,114,101,46,32,87, +105,116,104,115,116,117,100,105,111,111,119,110,101,114,115,109,97,110,97,103, +101,112,114,111,102,105,116,106,81,117,101,114,121,97,110,110,117,97,108,112,97, +114,97,109,115,98,111,117,103,104,116,102,97,109,111,117,115,103,111,111,103,108 +,101,108,111,110,103,101,114,105,43,43,41,32,123,105,115,114,97,101,108,115,97, +121,105,110,103,100,101,99,105,100,101,104,111,109,101,34,62,104,101,97,100,101, +114,101,110,115,117,114,101,98,114,97,110,99,104,112,105,101,99,101,115,98,108, +111,99,107,59,115,116,97,116,101,100,116,111,112,34,62,60,114,97,99,105,110,103, +114,101,115,105,122,101,45,45,38,103,116,59,112,97,99,105,116,121,115,101,120, +117,97,108,98,117,114,101,97,117,46,106,112,103,34,32,49,48,44,48,48,48,111,98, +116,97,105,110,116,105,116,108,101,115,97,109,111,117,110,116,44,32,73,110,99,46 +,99,111,109,101,100,121,109,101,110,117,34,32,108,121,114,105,99,115,116,111,100 +,97,121,46,105,110,100,101,101,100,99,111,117,110,116,121,95,108,111,103,111,46, +70,97,109,105,108,121,108,111,111,107,101,100,77,97,114,107,101,116,108,115,101, +32,105,102,80,108,97,121,101,114,116,117,114,107,101,121,41,59,118,97,114,32,102 +,111,114,101,115,116,103,105,118,105,110,103,101,114,114,111,114,115,68,111,109, +97,105,110,125,101,108,115,101,123,105,110,115,101,114,116,66,108,111,103,60,47, +102,111,111,116,101,114,108,111,103,105,110,46,102,97,115,116,101,114,97,103,101 +,110,116,115,60,98,111,100,121,32,49,48,112,120,32,48,112,114,97,103,109,97,102, +114,105,100,97,121,106,117,110,105,111,114,100,111,108,108,97,114,112,108,97,99, +101,100,99,111,118,101,114,115,112,108,117,103,105,110,53,44,48,48,48,32,112,97, +103,101,34,62,98,111,115,116,111,110,46,116,101,115,116,40,97,118,97,116,97,114, +116,101,115,116,101,100,95,99,111,117,110,116,102,111,114,117,109,115,115,99,104 +,101,109,97,105,110,100,101,120,44,102,105,108,108,101,100,115,104,97,114,101, +115,114,101,97,100,101,114,97,108,101,114,116,40,97,112,112,101,97,114,83,117,98 +,109,105,116,108,105,110,101,34,62,98,111,100,121,34,62,10,42,32,84,104,101,84, +104,111,117,103,104,115,101,101,105,110,103,106,101,114,115,101,121,78,101,119, +115,60,47,118,101,114,105,102,121,101,120,112,101,114,116,105,110,106,117,114, +121,119,105,100,116,104,61,67,111,111,107,105,101,83,84,65,82,84,32,97,99,114, +111,115,115,95,105,109,97,103,101,116,104,114,101,97,100,110,97,116,105,118,101, +112,111,99,107,101,116,98,111,120,34,62,10,83,121,115,116,101,109,32,68,97,118, +105,100,99,97,110,99,101,114,116,97,98,108,101,115,112,114,111,118,101,100,65, +112,114,105,108,32,114,101,97,108,108,121,100,114,105,118,101,114,105,116,101, +109,34,62,109,111,114,101,34,62,98,111,97,114,100,115,99,111,108,111,114,115,99, +97,109,112,117,115,102,105,114,115,116,32,124,124,32,91,93,59,109,101,100,105,97 +,46,103,117,105,116,97,114,102,105,110,105,115,104,119,105,100,116,104,58,115, +104,111,119,101,100,79,116,104,101,114,32,46,112,104,112,34,32,97,115,115,117, +109,101,108,97,121,101,114,115,119,105,108,115,111,110,115,116,111,114,101,115, +114,101,108,105,101,102,115,119,101,100,101,110,67,117,115,116,111,109,101,97, +115,105,108,121,32,121,111,117,114,32,83,116,114,105,110,103,10,10,87,104,105, +108,116,97,121,108,111,114,99,108,101,97,114,58,114,101,115,111,114,116,102,114, +101,110,99,104,116,104,111,117,103,104,34,41,32,43,32,34,60,98,111,100,121,62,98 +,117,121,105,110,103,98,114,97,110,100,115,77,101,109,98,101,114,110,97,109,101, +34,62,111,112,112,105,110,103,115,101,99,116,111,114,53,112,120,59,34,62,118,115 +,112,97,99,101,112,111,115,116,101,114,109,97,106,111,114,32,99,111,102,102,101, +101,109,97,114,116,105,110,109,97,116,117,114,101,104,97,112,112,101,110,60,47, +110,97,118,62,107,97,110,115,97,115,108,105,110,107,34,62,73,109,97,103,101,115, +61,102,97,108,115,101,119,104,105,108,101,32,104,115,112,97,99,101,48,38,97,109, +112,59,32,10,10,73,110,32,32,112,111,119,101,114,80,111,108,115,107,105,45,99, +111,108,111,114,106,111,114,100,97,110,66,111,116,116,111,109,83,116,97,114,116, +32,45,99,111,117,110,116,50,46,104,116,109,108,110,101,119,115,34,62,48,49,46, +106,112,103,79,110,108,105,110,101,45,114,105,103,104,116,109,105,108,108,101, +114,115,101,110,105,111,114,73,83,66,78,32,48,48,44,48,48,48,32,103,117,105,100, +101,115,118,97,108,117,101,41,101,99,116,105,111,110,114,101,112,97,105,114,46, +120,109,108,34,32,32,114,105,103,104,116,115,46,104,116,109,108,45,98,108,111,99 +,107,114,101,103,69,120,112,58,104,111,118,101,114,119,105,116,104,105,110,118, +105,114,103,105,110,112,104,111,110,101,115,60,47,116,114,62,13,117,115,105,110, +103,32,10,9,118,97,114,32,62,39,41,59,10,9,60,47,116,100,62,10,60,47,116,114,62, +10,98,97,104,97,115,97,98,114,97,115,105,108,103,97,108,101,103,111,109,97,103, +121,97,114,112,111,108,115,107,105,115,114,112,115,107,105,216,177,216,175,217, +136,228,184,173,230,150,135,231,174,128,228,189,147,231,185,129,233,171,148,228, +191,161,230,129,175,228,184,173,229,155,189,230,136,145,228,187,172,228,184,128, +228,184,170,229,133,172,229,143,184,231,174,161,231,144,134,232,174,186,229,157, +155,229,143,175,228,187,165,230,156,141,229,138,161,230,151,182,233,151,180,228, +184,170,228,186,186,228,186,167,229,147,129,232,135,170,229,183,177,228,188,129, +228,184,154,230,159,165,231,156,139,229,183,165,228,189,156,232,129,148,231,179, +187,230,178,161,230,156,137,231,189,145,231,171,153,230,137,128,230,156,137,232, +175,132,232,174,186,228,184,173,229,191,131,230,150,135,231,171,160,231,148,168, +230,136,183,233,166,150,233,161,181,228,189,156,232,128,133,230,138,128,230,156, +175,233,151,174,233,162,152,231,155,184,229,133,179,228,184,139,232,189,189,230, +144,156,231,180,162,228,189,191,231,148,168,232,189,175,228,187,182,229,156,168, +231,186,191,228,184,187,233,162,152,232,181,132,230,150,153,232,167,134,233,162, +145,229,155,158,229,164,141,230,179,168,229,134,140,231,189,145,231,187,156,230, +148,182,232,151,143,229,134,133,229,174,185,230,142,168,232,141,144,229,184,130, +229,156,186,230,182,136,230,129,175,231,169,186,233,151,180,229,143,145,229,184, +131,228,187,128,228,185,136,229,165,189,229,143,139,231,148,159,230,180,187,229, +155,190,231,137,135,229,143,145,229,177,149,229,166,130,230,158,156,230,137,139, +230,156,186,230,150,176,233,151,187,230,156,128,230,150,176,230,150,185,229,188, +143,229,140,151,228,186,172,230,143,144,228,190,155,229,133,179,228,186,142,230, +155,180,229,164,154,232,191,153,228,184,170,231,179,187,231,187,159,231,159,165, +233,129,147,230,184,184,230,136,143,229,185,191,229,145,138,229,133,182,228,187, +150,229,143,145,232,161,168,229,174,137,229,133,168,231,172,172,228,184,128,228, +188,154,229,145,152,232,191,155,232,161,140,231,130,185,229,135,187,231,137,136, +230,157,131,231,148,181,229,173,144,228,184,150,231,149,140,232,174,190,232,174, +161,229,133,141,232,180,185,230,149,153,232,130,178,229,138,160,229,133,165,230, +180,187,229,138,168,228,187,150,228,187,172,229,149,134,229,147,129,229,141,154, +229,174,162,231,142,176,229,156,168,228,184,138,230,181,183,229,166,130,228,189, +149,229,183,178,231,187,143,231,149,153,232,168,128,232,175,166,231,187,134,231, +164,190,229,140,186,231,153,187,229,189,149,230,156,172,231,171,153,233,156,128, +232,166,129,228,187,183,230,160,188,230,148,175,230,140,129,229,155,189,233,153, +133,233,147,190,230,142,165,229,155,189,229,174,182,229,187,186,232,174,190,230, +156,139,229,143,139,233,152,133,232,175,187,230,179,149,229,190,139,228,189,141, +231,189,174,231,187,143,230,181,142,233,128,137,230,139,169,232,191,153,230,160, +183,229,189,147,229,137,141,229,136,134,231,177,187,230,142,146,232,161,140,229, +155,160,228,184,186,228,186,164,230,152,147,230,156,128,229,144,142,233,159,179, +228,185,144,228,184,141,232,131,189,233,128,154,232,191,135,232,161,140,228,184, +154,231,167,145,230,138,128,229,143,175,232,131,189,232,174,190,229,164,135,229, +144,136,228,189,156,229,164,167,229,174,182,231,164,190,228,188,154,231,160,148, +231,169,182,228,184,147,228,184,154,229,133,168,233,131,168,233,161,185,231,155, +174,232,191,153,233,135,140,232,191,152,230,152,175,229,188,128,229,167,139,230, +131,133,229,134,181,231,148,181,232,132,145,230,150,135,228,187,182,229,147,129, +231,137,140,229,184,174,229,138,169,230,150,135,229,140,150,232,181,132,230,186, +144,229,164,167,229,173,166,229,173,166,228,185,160,229,156,176,229,157,128,230, +181,143,232,167,136,230,138,149,232,181,132,229,183,165,231,168,139,232,166,129, +230,177,130,230,128,142,228,185,136,230,151,182,229,128,153,229,138,159,232,131, +189,228,184,187,232,166,129,231,155,174,229,137,141,232,181,132,232,174,175,229, +159,142,229,184,130,230,150,185,230,179,149,231,148,181,229,189,177,230,139,155, +232,129,152,229,163,176,230,152,142,228,187,187,228,189,149,229,129,165,229,186, +183,230,149,176,230,141,174,231,190,142,229,155,189,230,177,189,232,189,166,228, +187,139,231,187,141,228,189,134,230,152,175,228,186,164,230,181,129,231,148,159, +228,186,167,230,137,128,228,187,165,231,148,181,232,175,157,230,152,190,231,164, +186,228,184,128,228,186,155,229,141,149,228,189,141,228,186,186,229,145,152,229, +136,134,230,158,144,229,156,176,229,155,190,230,151,133,230,184,184,229,183,165, +229,133,183,229,173,166,231,148,159,231,179,187,229,136,151,231,189,145,229,143, +139,229,184,150,229,173,144,229,175,134,231,160,129,233,162,145,233,129,147,230, +142,167,229,136,182,229,156,176,229,140,186,229,159,186,230,156,172,229,133,168, +229,155,189,231,189,145,228,184,138,233,135,141,232,166,129,231,172,172,228,186, +140,229,150,156,230,172,162,232,191,155,229,133,165,229,143,139,230,131,133,232, +191,153,228,186,155,232,128,131,232,175,149,229,143,145,231,142,176,229,159,185, +232,174,173,228,187,165,228,184,138,230,148,191,229,186,156,230,136,144,228,184, +186,231,142,175,229,162,131,233,166,153,230,184,175,229,144,140,230,151,182,229, +168,177,228,185,144,229,143,145,233,128,129,228,184,128,229,174,154,229,188,128, +229,143,145,228,189,156,229,147,129,230,160,135,229,135,134,230,172,162,232,191, +142,232,167,163,229,134,179,229,156,176,230,150,185,228,184,128,228,184,139,228, +187,165,229,143,138,232,180,163,228,187,187,230,136,150,232,128,133,229,174,162, +230,136,183,228,187,163,232,161,168,231,167,175,229,136,134,229,165,179,228,186, +186,230,149,176,231,160,129,233,148,128,229,148,174,229,135,186,231,142,176,231, +166,187,231,186,191,229,186,148,231,148,168,229,136,151,232,161,168,228,184,141, +229,144,140,231,188,150,232,190,145,231,187,159,232,174,161,230,159,165,232,175, +162,228,184,141,232,166,129,230,156,137,229,133,179,230,156,186,230,158,132,229, +190,136,229,164,154,230,146,173,230,148,190,231,187,132,231,187,135,230,148,191, +231,173,150,231,155,180,230,142,165,232,131,189,229,138,155,230,157,165,230,186, +144,230,153,130,233,150,147,231,156,139,229,136,176,231,131,173,233,151,168,229, +133,179,233,148,174,228,184,147,229,140,186,233,157,158,229,184,184,232,139,177, +232,175,173,231,153,190,229,186,166,229,184,140,230,156,155,231,190,142,229,165, +179,230,175,148,232,190,131,231,159,165,232,175,134,232,167,132,229,174,154,229, +187,186,232,174,174,233,131,168,233,151,168,230,132,143,232,167,129,231,178,190, +229,189,169,230,151,165,230,156,172,230,143,144,233,171,152,229,143,145,232,168, +128,230,150,185,233,157,162,229,159,186,233,135,145,229,164,132,231,144,134,230, +157,131,233,153,144,229,189,177,231,137,135,233,147,182,232,161,140,232,191,152, +230,156,137,229,136,134,228,186,171,231,137,169,229,147,129,231,187,143,232,144, +165,230,183,187,229,138,160,228,184,147,229,174,182,232,191,153,231,167,141,232, +175,157,233,162,152,232,181,183,230,157,165,228,184,154,229,138,161,229,133,172, +229,145,138,232,174,176,229,189,149,231,174,128,228,187,139,232,180,168,233,135, +143,231,148,183,228,186,186,229,189,177,229,147,141,229,188,149,231,148,168,230, +138,165,229,145,138,233,131,168,229,136,134,229,191,171,233,128,159,229,146,168, +232,175,162,230,151,182,229,176,154,230,179,168,230,132,143,231,148,179,232,175, +183,229,173,166,230,160,161,229,186,148,232,175,165,229,142,134,229,143,178,229, +143,170,230,152,175,232,191,148,229,155,158,232,180,173,228,185,176,229,144,141, +231,167,176,228,184,186,228,186,134,230,136,144,229,138,159,232,175,180,230,152, +142,228,190,155,229,186,148,229,173,169,229,173,144,228,184,147,233,162,152,231, +168,139,229,186,143,228,184,128,232,136,172,230,156,131,229,147,161,229,143,170, +230,156,137,229,133,182,229,174,131,228,191,157,230,138,164,232,128,140,228,184, +148,228,187,138,229,164,169,231,170,151,229,143,163,229,138,168,230,128,129,231, +138,182,230,128,129,231,137,185,229,136,171,232,174,164,228,184,186,229,191,133, +233,161,187,230,155,180,230,150,176,229,176,143,232,175,180,230,136,145,229,128, +145,228,189,156,228,184,186,229,170,146,228,189,147,229,140,133,230,139,172,233, +130,163,228,185,136,228,184,128,230,160,183,229,155,189,229,134,133,230,152,175, +229,144,166,230,160,185,230,141,174,231,148,181,232,167,134,229,173,166,233,153, +162,229,133,183,230,156,137,232,191,135,231,168,139,231,148,177,228,186,142,228, +186,186,230,137,141,229,135,186,230,157,165,228,184,141,232,191,135,230,173,163, +229,156,168,230,152,142,230,152,159,230,149,133,228,186,139,229,133,179,231,179, +187,230,160,135,233,162,152,229,149,134,229,138,161,232,190,147,229,133,165,228, +184,128,231,155,180,229,159,186,231,161,128,230,149,153,229,173,166,228,186,134, +232,167,163,229,187,186,231,173,145,231,187,147,230,158,156,229,133,168,231,144, +131,233,128,154,231,159,165,232,174,161,229,136,146,229,175,185,228,186,142,232, +137,186,230,156,175,231,155,184,229,134,140,229,143,145,231,148,159,231,156,159, +231,154,132,229,187,186,231,171,139,231,173,137,231,186,167,231,177,187,229,158, +139,231,187,143,233,170,140,229,174,158,231,142,176,229,136,182,228,189,156,230, +157,165,232,135,170,230,160,135,231,173,190,228,187,165,228,184,139,229,142,159, +229,136,155,230,151,160,230,179,149,229,133,182,228,184,173,229,128,139,228,186, +186,228,184,128,229,136,135,230,140,135,229,141,151,229,133,179,233,151,173,233, +155,134,229,155,162,231,172,172,228,184,137,229,133,179,230,179,168,229,155,160, +230,173,164,231,133,167,231,137,135,230,183,177,229,156,179,229,149,134,228,184, +154,229,185,191,229,183,158,230,151,165,230,156,159,233,171,152,231,186,167,230, +156,128,232,191,145,231,187,188,229,144,136,232,161,168,231,164,186,228,184,147, +232,190,145,232,161,140,228,184,186,228,186,164,233,128,154,232,175,132,228,187, +183,232,167,137,229,190,151,231,178,190,229,141,142,229,174,182,229,186,173,229, +174,140,230,136,144,230,132,159,232,167,137,229,174,137,232,163,133,229,190,151, +229,136,176,233,130,174,228,187,182,229,136,182,229,186,166,233,163,159,229,147, +129,232,153,189,231,132,182,232,189,172,232,189,189,230,138,165,228,187,183,232, +174,176,232,128,133,230,150,185,230,161,136,232,161,140,230,148,191,228,186,186, +230,176,145,231,148,168,229,147,129,228,184,156,232,165,191,230,143,144,229,135, +186,233,133,146,229,186,151,231,132,182,229,144,142,228,187,152,230,172,190,231, +131,173,231,130,185,228,187,165,229,137,141,229,174,140,229,133,168,229,143,145, +229,184,150,232,174,190,231,189,174,233,162,134,229,175,188,229,183,165,228,184, +154,229,140,187,233,153,162,231,156,139,231,156,139,231,187,143,229,133,184,229, +142,159,229,155,160,229,185,179,229,143,176,229,144,132,231,167,141,229,162,158, +229,138,160,230,157,144,230,150,153,230,150,176,229,162,158,228,185,139,229,144, +142,232,129,140,228,184,154,230,149,136,230,158,156,228,187,138,229,185,180,232, +174,186,230,150,135,230,136,145,229,155,189,229,145,138,232,175,137,231,137,136, +228,184,187,228,191,174,230,148,185,229,143,130,228,184,142,230,137,147,229,141, +176,229,191,171,228,185,144,230,156,186,230,162,176,232,167,130,231,130,185,229, +173,152,229,156,168,231,178,190,231,165,158,232,142,183,229,190,151,229,136,169, +231,148,168,231,187,167,231,187,173,228,189,160,228,187,172,232,191,153,228,185, +136,230,168,161,229,188,143,232,175,173,232,168,128,232,131,189,229,164,159,233, +155,133,232,153,142,230,147,141,228,189,156,233,163,142,230,160,188,228,184,128, +232,181,183,231,167,145,229,173,166,228,189,147,232,130,178,231,159,173,228,191, +161,230,157,161,228,187,182,230,178,187,231,150,151,232,191,144,229,138,168,228, +186,167,228,184,154,228,188,154,232,174,174,229,175,188,232,136,170,229,133,136, +231,148,159,232,129,148,231,155,159,229,143,175,230,152,175,229,149,143,233,161, +140,231,187,147,230,158,132,228,189,156,231,148,168,232,176,131,230,159,165,232, +179,135,230,150,153,232,135,170,229,138,168,232,180,159,232,180,163,229,134,156, +228,184,154,232,174,191,233,151,174,229,174,158,230,150,189,230,142,165,229,143, +151,232,174,168,232,174,186,233,130,163,228,184,170,229,143,141,233,166,136,229, +138,160,229,188,186,229,165,179,230,128,167,232,140,131,229,155,180,230,156,141, +229,139,153,228,188,145,233,151,178,228,187,138,230,151,165,229,174,162,230,156, +141,232,167,128,231,156,139,229,143,130,229,138,160,231,154,132,232,175,157,228, +184,128,231,130,185,228,191,157,232,175,129,229,155,190,228,185,166,230,156,137, +230,149,136,230,181,139,232,175,149,231,167,187,229,138,168,230,137,141,232,131, +189,229,134,179,229,174,154,232,130,161,231,165,168,228,184,141,230,150,173,233, +156,128,230,177,130,228,184,141,229,190,151,229,138,158,230,179,149,228,185,139, +233,151,180,233,135,135,231,148,168,232,144,165,233,148,128,230,138,149,232,175, +137,231,155,174,230,160,135,231,136,177,230,131,133,230,145,132,229,189,177,230, +156,137,228,186,155,232,164,135,232,163,189,230,150,135,229,173,166,230,156,186, +228,188,154,230,149,176,229,173,151,232,163,133,228,191,174,232,180,173,231,137, +169,229,134,156,230,157,145,229,133,168,233,157,162,231,178,190,229,147,129,229, +133,182,229,174,158,228,186,139,230,131,133,230,176,180,229,185,179,230,143,144, +231,164,186,228,184,138,229,184,130,232,176,162,232,176,162,230,153,174,233,128, +154,230,149,153,229,184,136,228,184,138,228,188,160,231,177,187,229,136,171,230, +173,140,230,155,178,230,139,165,230,156,137,229,136,155,230,150,176,233,133,141, +228,187,182,229,143,170,232,166,129,230,151,182,228,187,163,232,179,135,232,168, +138,232,190,190,229,136,176,228,186,186,231,148,159,232,174,162,233,152,133,232, +128,129,229,184,136,229,177,149,231,164,186,229,191,131,231,144,134,232,180,180, +229,173,144,231,182,178,231,171,153,228,184,187,233,161,140,232,135,170,231,132, +182,231,186,167,229,136,171,231,174,128,229,141,149,230,148,185,233,157,169,233, +130,163,228,186,155,230,157,165,232,175,180,230,137,147,229,188,128,228,187,163, +231,160,129,229,136,160,233,153,164,232,175,129,229,136,184,232,138,130,231,155, +174,233,135,141,231,130,185,230,172,161,230,149,184,229,164,154,229,176,145,232, +167,132,229,136,146,232,181,132,233,135,145,230,137,190,229,136,176,228,187,165, +229,144,142,229,164,167,229,133,168,228,184,187,233,161,181,230,156,128,228,189, +179,229,155,158,231,173,148,229,164,169,228,184,139,228,191,157,233,154,156,231, +142,176,228,187,163,230,163,128,230,159,165,230,138,149,231,165,168,229,176,143, +230,151,182,230,178,146,230,156,137,230,173,163,229,184,184,231,148,154,232,135, +179,228,187,163,231,144,134,231,155,174,229,189,149,229,133,172,229,188,128,229, +164,141,229,136,182,233,135,145,232,158,141,229,185,184,231,166,143,231,137,136, +230,156,172,229,189,162,230,136,144,229,135,134,229,164,135,232,161,140,230,131, +133,229,155,158,229,136,176,230,128,157,230,131,179,230,128,142,230,160,183,229, +141,143,232,174,174,232,174,164,232,175,129,230,156,128,229,165,189,228,186,167, +231,148,159,230,140,137,231,133,167,230,156,141,232,163,133,229,185,191,228,184, +156,229,138,168,230,188,171,233,135,135,232,180,173,230,150,176,230,137,139,231, +187,132,229,155,190,233,157,162,230,157,191,229,143,130,232,128,131,230,148,191, +230,178,187,229,174,185,230,152,147,229,164,169,229,156,176,229,138,170,229,138, +155,228,186,186,228,187,172,229,141,135,231,186,167,233,128,159,229,186,166,228, +186,186,231,137,169,232,176,131,230,149,180,230,181,129,232,161,140,233,128,160, +230,136,144,230,150,135,229,173,151,233,159,169,229,155,189,232,180,184,230,152, +147,229,188,128,229,177,149,231,155,184,233,151,156,232,161,168,231,142,176,229, +189,177,232,167,134,229,166,130,230,173,164,231,190,142,229,174,185,229,164,167, +229,176,143,230,138,165,233,129,147,230,157,161,230,172,190,229,191,131,230,131, +133,232,174,184,229,164,154,230,179,149,232,167,132,229,174,182,229,177,133,228, +185,166,229,186,151,232,191,158,230,142,165,231,171,139,229,141,179,228,184,190, +230,138,165,230,138,128,229,183,167,229,165,165,232,191,144,231,153,187,229,133, +165,228,187,165,230,157,165,231,144,134,232,174,186,228,186,139,228,187,182,232, +135,170,231,148,177,228,184,173,229,141,142,229,138,158,229,133,172,229,166,136, +229,166,136,231,156,159,230,173,163,228,184,141,233,148,153,229,133,168,230,150, +135,229,144,136,229,144,140,228,187,183,229,128,188,229,136,171,228,186,186,231, +155,145,231,157,163,229,133,183,228,189,147,228,184,150,231,186,170,229,155,162, +233,152,159,229,136,155,228,184,154,230,137,191,230,139,133,229,162,158,233,149, +191,230,156,137,228,186,186,228,191,157,230,140,129,229,149,134,229,174,182,231, +187,180,228,191,174,229,143,176,230,185,190,229,183,166,229,143,179,232,130,161, +228,187,189,231,173,148,230,161,136,229,174,158,233,153,133,231,148,181,228,191, +161,231,187,143,231,144,134,231,148,159,229,145,189,229,174,163,228,188,160,228, +187,187,229,138,161,230,173,163,229,188,143,231,137,185,232,137,178,228,184,139, +230,157,165,229,141,143,228,188,154,229,143,170,232,131,189,229,189,147,231,132, +182,233,135,141,230,150,176,229,133,167,229,174,185,230,140,135,229,175,188,232, +191,144,232,161,140,230,151,165,229,191,151,232,179,163,229,174,182,232,182,133, +232,191,135,229,156,159,229,156,176,230,181,153,230,177,159,230,148,175,228,187, +152,230,142,168,229,135,186,231,171,153,233,149,191,230,157,173,229,183,158,230, +137,167,232,161,140,229,136,182,233,128,160,228,185,139,228,184,128,230,142,168, +229,185,191,231,142,176,229,156,186,230,143,143,232,191,176,229,143,152,229,140, +150,228,188,160,231,187,159,230,173,140,230,137,139,228,191,157,233,153,169,232, +175,190,231,168,139,229,140,187,231,150,151,231,187,143,232,191,135,232,191,135, +229,142,187,228,185,139,229,137,141,230,148,182,229,133,165,229,185,180,229,186, +166,230,157,130,229,191,151,231,190,142,228,184,189,230,156,128,233,171,152,231, +153,187,233,153,134,230,156,170,230,157,165,229,138,160,229,183,165,229,133,141, +232,180,163,230,149,153,231,168,139,231,137,136,229,157,151,232,186,171,228,189, +147,233,135,141,229,186,134,229,135,186,229,148,174,230,136,144,230,156,172,229, +189,162,229,188,143,229,156,159,232,177,134,229,135,186,229,131,185,228,184,156, +230,150,185,233,130,174,231,174,177,229,141,151,228,186,172,230,177,130,232,129, +140,229,143,150,229,190,151,232,129,140,228,189,141,231,155,184,228,191,161,233, +161,181,233,157,162,229,136,134,233,146,159,231,189,145,233,161,181,231,161,174, +229,174,154,229,155,190,228,190,139,231,189,145,229,157,128,231,167,175,230,158, +129,233,148,153,232,175,175,231,155,174,231,154,132,229,174,157,232,180,157,230, +156,186,229,133,179,233,163,142,233,153,169,230,142,136,230,157,131,231,151,133, +230,175,146,229,174,160,231,137,169,233,153,164,228,186,134,232,169,149,232,171, +150,231,150,190,231,151,133,229,143,138,230,151,182,230,177,130,232,180,173,231, +171,153,231,130,185,229,132,191,231,171,165,230,175,143,229,164,169,228,184,173, +229,164,174,232,174,164,232,175,134,230,175,143,228,184,170,229,164,169,230,180, +165,229,173,151,228,189,147,229,143,176,231,129,163,231,187,180,230,138,164,230, +156,172,233,161,181,228,184,170,230,128,167,229,174,152,230,150,185,229,184,184, +232,167,129,231,155,184,230,156,186,230,136,152,231,149,165,229,186,148,229,189, +147,229,190,139,229,184,136,230,150,185,228,190,191,230,160,161,229,155,173,232, +130,161,229,184,130,230,136,191,229,177,139,230,160,143,231,155,174,229,145,152, +229,183,165,229,175,188,232,135,180,231,170,129,231,132,182,233,129,147,229,133, +183,230,156,172,231,189,145,231,187,147,229,144,136,230,161,163,230,161,136,229, +138,179,229,138,168,229,143,166,229,164,150,231,190,142,229,133,131,229,188,149, +232,181,183,230,148,185,229,143,152,231,172,172,229,155,155,228,188,154,232,174, +161,232,170,170,230,152,142,233,154,144,231,167,129,229,174,157,229,174,157,232, +167,132,232,140,131,230,182,136,232,180,185,229,133,177,229,144,140,229,191,152, +232,174,176,228,189,147,231,179,187,229,184,166,230,157,165,229,144,141,229,173, +151,231,153,188,232,161,168,229,188,128,230,148,190,229,138,160,231,155,159,229, +143,151,229,136,176,228,186,140,230,137,139,229,164,167,233,135,143,230,136,144, +228,186,186,230,149,176,233,135,143,229,133,177,228,186,171,229,140,186,229,159, +159,229,165,179,229,173,169,229,142,159,229,136,153,230,137,128,229,156,168,231, +187,147,230,157,159,233,128,154,228,191,161,232,182,133,231,186,167,233,133,141, +231,189,174,229,189,147,230,151,182,228,188,152,231,167,128,230,128,167,230,132, +159,230,136,191,228,186,167,233,129,138,230,136,178,229,135,186,229,143,163,230, +143,144,228,186,164,229,176,177,228,184,154,228,191,157,229,129,165,231,168,139, +229,186,166,229,143,130,230,149,176,228,186,139,228,184,154,230,149,180,228,184, +170,229,177,177,228,184,156,230,131,133,230,132,159,231,137,185,230,174,138,229, +136,134,233,161,158,230,144,156,229,176,139,229,177,158,228,186,142,233,151,168, +230,136,183,232,180,162,229,138,161,229,163,176,233,159,179,229,143,138,229,133, +182,232,180,162,231,187,143,229,157,154,230,140,129,229,185,178,233,131,168,230, +136,144,231,171,139,229,136,169,231,155,138,232,128,131,232,153,145,230,136,144, +233,131,189,229,140,133,232,163,133,231,148,168,230,136,182,230,175,148,232,181, +155,230,150,135,230,152,142,230,139,155,229,149,134,229,174,140,230,149,180,231, +156,159,230,152,175,231,156,188,231,157,155,228,188,153,228,188,180,229,168,129, +230,156,155,233,162,134,229,159,159,229,141,171,231,148,159,228,188,152,230,131, +160,232,171,150,229,163,135,229,133,172,229,133,177,232,137,175,229,165,189,229, +133,133,229,136,134,231,172,166,229,144,136,233,153,132,228,187,182,231,137,185, +231,130,185,228,184,141,229,143,175,232,139,177,230,150,135,232,181,132,228,186, +167,230,160,185,230,156,172,230,152,142,230,152,190,229,175,134,231,162,188,229, +133,172,228,188,151,230,176,145,230,151,143,230,155,180,229,138,160,228,186,171, +229,143,151,229,144,140,229,173,166,229,144,175,229,138,168,233,128,130,229,144, +136,229,142,159,230,157,165,233,151,174,231,173,148,230,156,172,230,150,135,231, +190,142,233,163,159,231,187,191,232,137,178,231,168,179,229,174,154,231,187,136, +228,186,142,231,148,159,231,137,169,228,190,155,230,177,130,230,144,156,231,139, +144,229,138,155,233,135,143,228,184,165,233,135,141,230,176,184,232,191,156,229, +134,153,231,156,159,230,156,137,233,153,144,231,171,158,228,186,137,229,175,185, +232,177,161,232,180,185,231,148,168,228,184,141,229,165,189,231,187,157,229,175, +185,229,141,129,229,136,134,228,191,131,232,191,155,231,130,185,232,175,132,229, +189,177,233,159,179,228,188,152,229,138,191,228,184,141,229,176,145,230,172,163, +232,181,143,229,185,182,228,184,148,230,156,137,231,130,185,230,150,185,229,144, +145,229,133,168,230,150,176,228,191,161,231,148,168,232,174,190,230,150,189,229, +189,162,232,177,161,232,181,132,230,160,188,231,170,129,231,160,180,233,154,143, +231,157,128,233,135,141,229,164,167,228,186,142,230,152,175,230,175,149,228,184, +154,230,153,186,232,131,189,229,140,150,229,183,165,229,174,140,231,190,142,229, +149,134,229,159,142,231,187,159,228,184,128,229,135,186,231,137,136,230,137,147, +233,128,160,231,148,162,229,147,129,230,166,130,229,134,181,231,148,168,228,186, +142,228,191,157,231,149,153,229,155,160,231,180,160,228,184,173,229,156,139,229, +173,152,229,130,168,232,180,180,229,155,190,230,156,128,230,132,155,233,149,191, +230,156,159,229,143,163,228,187,183,231,144,134,232,180,162,229,159,186,229,156, +176,229,174,137,230,142,146,230,173,166,230,177,137,233,135,140,233,157,162,229, +136,155,229,187,186,229,164,169,231,169,186,233,166,150,229,133,136,229,174,140, +229,150,132,233,169,177,229,138,168,228,184,139,233,157,162,228,184,141,229,134, +141,232,175,154,228,191,161,230,132,143,228,185,137,233,152,179,229,133,137,232, +139,177,229,155,189,230,188,130,228,186,174,229,134,155,228,186,139,231,142,169, +229,174,182,231,190,164,228,188,151,229,134,156,230,176,145,229,141,179,229,143, +175,229,144,141,231,168,177,229,174,182,229,133,183,229,138,168,231,148,187,230, +131,179,229,136,176,230,179,168,230,152,142,229,176,143,229,173,166,230,128,167, +232,131,189,232,128,131,231,160,148,231,161,172,228,187,182,232,167,130,231,156, +139,230,184,133,230,165,154,230,144,158,231,172,145,233,166,150,233,160,129,233, +187,132,233,135,145,233,128,130,231,148,168,230,177,159,232,139,143,231,156,159, +229,174,158,228,184,187,231,174,161,233,152,182,230,174,181,232,168,187,229,134, +138,231,191,187,232,175,145,230,157,131,229,136,169,229,129,154,229,165,189,228, +188,188,228,185,142,233,128,154,232,174,175,230,150,189,229,183,165,231,139,128, +230,133,139,228,185,159,232,174,184,231,142,175,228,191,157,229,159,185,229,133, +187,230,166,130,229,191,181,229,164,167,229,158,139,230,156,186,231,165,168,231, +144,134,232,167,163,229,140,191,229,144,141,99,117,97,110,100,111,101,110,118, +105,97,114,109,97,100,114,105,100,98,117,115,99,97,114,105,110,105,99,105,111, +116,105,101,109,112,111,112,111,114,113,117,101,99,117,101,110,116,97,101,115, +116,97,100,111,112,117,101,100,101,110,106,117,101,103,111,115,99,111,110,116, +114,97,101,115,116,195,161,110,110,111,109,98,114,101,116,105,101,110,101,110, +112,101,114,102,105,108,109,97,110,101,114,97,97,109,105,103,111,115,99,105,117, +100,97,100,99,101,110,116,114,111,97,117,110,113,117,101,112,117,101,100,101,115 +,100,101,110,116,114,111,112,114,105,109,101,114,112,114,101,99,105,111,115,101, +103,195,186,110,98,117,101,110,111,115,118,111,108,118,101,114,112,117,110,116, +111,115,115,101,109,97,110,97,104,97,98,195,173,97,97,103,111,115,116,111,110, +117,101,118,111,115,117,110,105,100,111,115,99,97,114,108,111,115,101,113,117, +105,112,111,110,105,195,177,111,115,109,117,99,104,111,115,97,108,103,117,110,97 +,99,111,114,114,101,111,105,109,97,103,101,110,112,97,114,116,105,114,97,114,114 +,105,98,97,109,97,114,195,173,97,104,111,109,98,114,101,101,109,112,108,101,111, +118,101,114,100,97,100,99,97,109,98,105,111,109,117,99,104,97,115,102,117,101, +114,111,110,112,97,115,97,100,111,108,195,173,110,101,97,112,97,114,101,99,101, +110,117,101,118,97,115,99,117,114,115,111,115,101,115,116,97,98,97,113,117,105, +101,114,111,108,105,98,114,111,115,99,117,97,110,116,111,97,99,99,101,115,111, +109,105,103,117,101,108,118,97,114,105,111,115,99,117,97,116,114,111,116,105,101 +,110,101,115,103,114,117,112,111,115,115,101,114,195,161,110,101,117,114,111,112 +,97,109,101,100,105,111,115,102,114,101,110,116,101,97,99,101,114,99,97,100,101, +109,195,161,115,111,102,101,114,116,97,99,111,99,104,101,115,109,111,100,101,108 +,111,105,116,97,108,105,97,108,101,116,114,97,115,97,108,103,195,186,110,99,111, +109,112,114,97,99,117,97,108,101,115,101,120,105,115,116,101,99,117,101,114,112, +111,115,105,101,110,100,111,112,114,101,110,115,97,108,108,101,103,97,114,118, +105,97,106,101,115,100,105,110,101,114,111,109,117,114,99,105,97,112,111,100,114 +,195,161,112,117,101,115,116,111,100,105,97,114,105,111,112,117,101,98,108,111, +113,117,105,101,114,101,109,97,110,117,101,108,112,114,111,112,105,111,99,114, +105,115,105,115,99,105,101,114,116,111,115,101,103,117,114,111,109,117,101,114, +116,101,102,117,101,110,116,101,99,101,114,114,97,114,103,114,97,110,100,101,101 +,102,101,99,116,111,112,97,114,116,101,115,109,101,100,105,100,97,112,114,111, +112,105,97,111,102,114,101,99,101,116,105,101,114,114,97,101,45,109,97,105,108, +118,97,114,105,97,115,102,111,114,109,97,115,102,117,116,117,114,111,111,98,106, +101,116,111,115,101,103,117,105,114,114,105,101,115,103,111,110,111,114,109,97, +115,109,105,115,109,111,115,195,186,110,105,99,111,99,97,109,105,110,111,115,105 +,116,105,111,115,114,97,122,195,179,110,100,101,98,105,100,111,112,114,117,101, +98,97,116,111,108,101,100,111,116,101,110,195,173,97,106,101,115,195,186,115,101 +,115,112,101,114,111,99,111,99,105,110,97,111,114,105,103,101,110,116,105,101, +110,100,97,99,105,101,110,116,111,99,195,161,100,105,122,104,97,98,108,97,114, +115,101,114,195,173,97,108,97,116,105,110,97,102,117,101,114,122,97,101,115,116, +105,108,111,103,117,101,114,114,97,101,110,116,114,97,114,195,169,120,105,116, +111,108,195,179,112,101,122,97,103,101,110,100,97,118,195,173,100,101,111,101, +118,105,116,97,114,112,97,103,105,110,97,109,101,116,114,111,115,106,97,118,105, +101,114,112,97,100,114,101,115,102,195,161,99,105,108,99,97,98,101,122,97,195, +161,114,101,97,115,115,97,108,105,100,97,101,110,118,195,173,111,106,97,112,195, +179,110,97,98,117,115,111,115,98,105,101,110,101,115,116,101,120,116,111,115,108 +,108,101,118,97,114,112,117,101,100,97,110,102,117,101,114,116,101,99,111,109, +195,186,110,99,108,97,115,101,115,104,117,109,97,110,111,116,101,110,105,100,111 +,98,105,108,98,97,111,117,110,105,100,97,100,101,115,116,195,161,115,101,100,105 +,116,97,114,99,114,101,97,100,111,208,180,208,187,209,143,209,135,209,130,208, +190,208,186,208,176,208,186,208,184,208,187,208,184,209,141,209,130,208,190,208, +178,209,129,208,181,208,181,208,179,208,190,208,191,209,128,208,184,209,130,208, +176,208,186,208,181,209,137,208,181,209,131,208,182,208,181,208,154,208,176,208, +186,208,177,208,181,208,183,208,177,209,139,208,187,208,190,208,189,208,184,208, +146,209,129,208,181,208,191,208,190,208,180,208,173,209,130,208,190,209,130,208, +190,208,188,209,135,208,181,208,188,208,189,208,181,209,130,208,187,208,181,209, +130,209,128,208,176,208,183,208,190,208,189,208,176,208,179,208,180,208,181,208, +188,208,189,208,181,208,148,208,187,209,143,208,159,209,128,208,184,208,189,208, +176,209,129,208,189,208,184,209,133,209,130,208,181,208,188,208,186,209,130,208, +190,208,179,208,190,208,180,208,178,208,190,209,130,209,130,208,176,208,188,208, +161,208,168,208,144,208,188,208,176,209,143,208,167,209,130,208,190,208,178,208, +176,209,129,208,178,208,176,208,188,208,181,208,188,209,131,208,162,208,176,208, +186,208,180,208,178,208,176,208,189,208,176,208,188,209,141,209,130,208,184,209, +141,209,130,209,131,208,146,208,176,208,188,209,130,208,181,209,133,208,191,209, +128,208,190,209,130,209,131,209,130,208,189,208,176,208,180,208,180,208,189,209, +143,208,146,208,190,209,130,209,130,209,128,208,184,208,189,208,181,208,185,208, +146,208,176,209,129,208,189,208,184,208,188,209,129,208,176,208,188,209,130,208, +190,209,130,209,128,209,131,208,177,208,158,208,189,208,184,208,188,208,184,209, +128,208,189,208,181,208,181,208,158,208,158,208,158,208,187,208,184,209,134,209, +141,209,130,208,176,208,158,208,189,208,176,208,189,208,181,208,188,208,180,208, +190,208,188,208,188,208,190,208,185,208,180,208,178,208,181,208,190,208,189,208, +190,209,129,209,131,208,180,224,164,149,224,165,135,224,164,185,224,165,136,224, +164,149,224,165,128,224,164,184,224,165,135,224,164,149,224,164,190,224,164,149, +224,165,139,224,164,148,224,164,176,224,164,170,224,164,176,224,164,168,224,165, +135,224,164,143,224,164,149,224,164,149,224,164,191,224,164,173,224,165,128,224, +164,135,224,164,184,224,164,149,224,164,176,224,164,164,224,165,139,224,164,185, +224,165,139,224,164,134,224,164,170,224,164,185,224,165,128,224,164,175,224,164, +185,224,164,175,224,164,190,224,164,164,224,164,149,224,164,165,224,164,190,106, +97,103,114,97,110,224,164,134,224,164,156,224,164,156,224,165,139,224,164,133, +224,164,172,224,164,166,224,165,139,224,164,151,224,164,136,224,164,156,224,164, +190,224,164,151,224,164,143,224,164,185,224,164,174,224,164,135,224,164,168,224, +164,181,224,164,185,224,164,175,224,165,135,224,164,165,224,165,135,224,164,165, +224,165,128,224,164,152,224,164,176,224,164,156,224,164,172,224,164,166,224,165, +128,224,164,149,224,164,136,224,164,156,224,165,128,224,164,181,224,165,135,224, +164,168,224,164,136,224,164,168,224,164,143,224,164,185,224,164,176,224,164,137, +224,164,184,224,164,174,224,165,135,224,164,149,224,164,174,224,164,181,224,165, +139,224,164,178,224,165,135,224,164,184,224,164,172,224,164,174,224,164,136,224, +164,166,224,165,135,224,164,147,224,164,176,224,164,134,224,164,174,224,164,172, +224,164,184,224,164,173,224,164,176,224,164,172,224,164,168,224,164,154,224,164, +178,224,164,174,224,164,168,224,164,134,224,164,151,224,164,184,224,165,128,224, +164,178,224,165,128,216,185,217,132,217,137,216,165,217,132,217,137,217,135,216, +176,216,167,216,162,216,174,216,177,216,185,216,175,216,175,216,167,217,132,217, +137,217,135,216,176,217,135,216,181,217,136,216,177,216,186,217,138,216,177,217, +131,216,167,217,134,217,136,217,132,216,167,216,168,217,138,217,134,216,185,216, +177,216,182,216,176,217,132,217,131,217,135,217,134,216,167,217,138,217,136,217, +133,217,130,216,167,217,132,216,185,217,132,217,138,216,167,217,134,216,167,217, +132,217,131,217,134,216,173,216,170,217,137,217,130,216,168,217,132,217,136,216, +173,216,169,216,167,216,174,216,177,217,129,217,130,216,183,216,185,216,168,216, +175,216,177,217,131,217,134,216,165,216,176,216,167,217,131,217,133,216,167,216, +167,216,173,216,175,216,165,217,132,216,167,217,129,217,138,217,135,216,168,216, +185,216,182,217,131,217,138,217,129,216,168,216,173,216,171,217,136,217,133,217, +134,217,136,217,135,217,136,216,163,217,134,216,167,216,172,216,175,216,167,217, +132,217,135,216,167,216,179,217,132,217,133,216,185,217,134,216,175,217,132,217, +138,216,179,216,185,216,168,216,177,216,181,217,132,217,137,217,133,217,134,216, +176,216,168,217,135,216,167,216,163,217,134,217,135,217,133,216,171,217,132,217, +131,217,134,216,170,216,167,217,132,216,167,216,173,217,138,216,171,217,133,216, +181,216,177,216,180,216,177,216,173,216,173,217,136,217,132,217,136,217,129,217, +138,216,167,216,176,216,167,217,132,217,131,217,132,217,133,216,177,216,169,216, +167,217,134,216,170,216,167,217,132,217,129,216,163,216,168,217,136,216,174,216, +167,216,181,216,163,217,134,216,170,216,167,217,134,217,135,216,167,217,132,217, +138,216,185,216,182,217,136,217,136,217,130,216,175,216,167,216,168,217,134,216, +174,217,138,216,177,216,168,217,134,216,170,217,132,217,131,217,133,216,180,216, +167,216,161,217,136,217,135,217,138,216,167,216,168,217,136,217,130,216,181,216, +181,217,136,217,133,216,167,216,177,217,130,217,133,216,163,216,173,216,175,217, +134,216,173,217,134,216,185,216,175,217,133,216,177,216,163,217,138,216,167,216, +173,216,169,217,131,216,170,216,168,216,175,217,136,217,134,217,138,216,172,216, +168,217,133,217,134,217,135,216,170,216,173,216,170,216,172,217,135,216,169,216, +179,217,134,216,169,217,138,216,170,217,133,217,131,216,177,216,169,216,186,216, +178,216,169,217,134,217,129,216,179,216,168,217,138,216,170,217,132,217,132,217, +135,217,132,217,134,216,167,216,170,217,132,217,131,217,130,217,132,216,168,217, +132,217,133,216,167,216,185,217,134,217,135,216,163,217,136,217,132,216,180,217, +138,216,161,217,134,217,136,216,177,216,163,217,133,216,167,217,129,217,138,217, +131,216,168,217,131,217,132,216,176,216,167,216,170,216,177,216,170,216,168,216, +168,216,163,217,134,217,135,217,133,216,179,216,167,217,134,217,131,216,168,217, +138,216,185,217,129,217,130,216,175,216,173,216,179,217,134,217,132,217,135,217, +133,216,180,216,185,216,177,216,163,217,135,217,132,216,180,217,135,216,177,217, +130,216,183,216,177,216,183,217,132,216,168,112,114,111,102,105,108,101,115,101, +114,118,105,99,101,100,101,102,97,117,108,116,104,105,109,115,101,108,102,100, +101,116,97,105,108,115,99,111,110,116,101,110,116,115,117,112,112,111,114,116, +115,116,97,114,116,101,100,109,101,115,115,97,103,101,115,117,99,99,101,115,115, +102,97,115,104,105,111,110,60,116,105,116,108,101,62,99,111,117,110,116,114,121, +97,99,99,111,117,110,116,99,114,101,97,116,101,100,115,116,111,114,105,101,115, +114,101,115,117,108,116,115,114,117,110,110,105,110,103,112,114,111,99,101,115, +115,119,114,105,116,105,110,103,111,98,106,101,99,116,115,118,105,115,105,98,108 +,101,119,101,108,99,111,109,101,97,114,116,105,99,108,101,117,110,107,110,111, +119,110,110,101,116,119,111,114,107,99,111,109,112,97,110,121,100,121,110,97,109 +,105,99,98,114,111,119,115,101,114,112,114,105,118,97,99,121,112,114,111,98,108, +101,109,83,101,114,118,105,99,101,114,101,115,112,101,99,116,100,105,115,112,108 +,97,121,114,101,113,117,101,115,116,114,101,115,101,114,118,101,119,101,98,115, +105,116,101,104,105,115,116,111,114,121,102,114,105,101,110,100,115,111,112,116, +105,111,110,115,119,111,114,107,105,110,103,118,101,114,115,105,111,110,109,105, +108,108,105,111,110,99,104,97,110,110,101,108,119,105,110,100,111,119,46,97,100, +100,114,101,115,115,118,105,115,105,116,101,100,119,101,97,116,104,101,114,99, +111,114,114,101,99,116,112,114,111,100,117,99,116,101,100,105,114,101,99,116,102 +,111,114,119,97,114,100,121,111,117,32,99,97,110,114,101,109,111,118,101,100,115 +,117,98,106,101,99,116,99,111,110,116,114,111,108,97,114,99,104,105,118,101,99, +117,114,114,101,110,116,114,101,97,100,105,110,103,108,105,98,114,97,114,121,108 +,105,109,105,116,101,100,109,97,110,97,103,101,114,102,117,114,116,104,101,114, +115,117,109,109,97,114,121,109,97,99,104,105,110,101,109,105,110,117,116,101,115 +,112,114,105,118,97,116,101,99,111,110,116,101,120,116,112,114,111,103,114,97, +109,115,111,99,105,101,116,121,110,117,109,98,101,114,115,119,114,105,116,116, +101,110,101,110,97,98,108,101,100,116,114,105,103,103,101,114,115,111,117,114,99 +,101,115,108,111,97,100,105,110,103,101,108,101,109,101,110,116,112,97,114,116, +110,101,114,102,105,110,97,108,108,121,112,101,114,102,101,99,116,109,101,97,110 +,105,110,103,115,121,115,116,101,109,115,107,101,101,112,105,110,103,99,117,108, +116,117,114,101,38,113,117,111,116,59,44,106,111,117,114,110,97,108,112,114,111, +106,101,99,116,115,117,114,102,97,99,101,115,38,113,117,111,116,59,101,120,112, +105,114,101,115,114,101,118,105,101,119,115,98,97,108,97,110,99,101,69,110,103, +108,105,115,104,67,111,110,116,101,110,116,116,104,114,111,117,103,104,80,108, +101,97,115,101,32,111,112,105,110,105,111,110,99,111,110,116,97,99,116,97,118, +101,114,97,103,101,112,114,105,109,97,114,121,118,105,108,108,97,103,101,83,112, +97,110,105,115,104,103,97,108,108,101,114,121,100,101,99,108,105,110,101,109,101 +,101,116,105,110,103,109,105,115,115,105,111,110,112,111,112,117,108,97,114,113, +117,97,108,105,116,121,109,101,97,115,117,114,101,103,101,110,101,114,97,108,115 +,112,101,99,105,101,115,115,101,115,115,105,111,110,115,101,99,116,105,111,110, +119,114,105,116,101,114,115,99,111,117,110,116,101,114,105,110,105,116,105,97, +108,114,101,112,111,114,116,115,102,105,103,117,114,101,115,109,101,109,98,101, +114,115,104,111,108,100,105,110,103,100,105,115,112,117,116,101,101,97,114,108, +105,101,114,101,120,112,114,101,115,115,100,105,103,105,116,97,108,112,105,99, +116,117,114,101,65,110,111,116,104,101,114,109,97,114,114,105,101,100,116,114,97 +,102,102,105,99,108,101,97,100,105,110,103,99,104,97,110,103,101,100,99,101,110, +116,114,97,108,118,105,99,116,111,114,121,105,109,97,103,101,115,47,114,101,97, +115,111,110,115,115,116,117,100,105,101,115,102,101,97,116,117,114,101,108,105, +115,116,105,110,103,109,117,115,116,32,98,101,115,99,104,111,111,108,115,86,101, +114,115,105,111,110,117,115,117,97,108,108,121,101,112,105,115,111,100,101,112, +108,97,121,105,110,103,103,114,111,119,105,110,103,111,98,118,105,111,117,115, +111,118,101,114,108,97,121,112,114,101,115,101,110,116,97,99,116,105,111,110,115 +,60,47,117,108,62,13,10,119,114,97,112,112,101,114,97,108,114,101,97,100,121,99, +101,114,116,97,105,110,114,101,97,108,105,116,121,115,116,111,114,97,103,101,97, +110,111,116,104,101,114,100,101,115,107,116,111,112,111,102,102,101,114,101,100, +112,97,116,116,101,114,110,117,110,117,115,117,97,108,68,105,103,105,116,97,108, +99,97,112,105,116,97,108,87,101,98,115,105,116,101,102,97,105,108,117,114,101,99 +,111,110,110,101,99,116,114,101,100,117,99,101,100,65,110,100,114,111,105,100, +100,101,99,97,100,101,115,114,101,103,117,108,97,114,32,38,97,109,112,59,32,97, +110,105,109,97,108,115,114,101,108,101,97,115,101,65,117,116,111,109,97,116,103, +101,116,116,105,110,103,109,101,116,104,111,100,115,110,111,116,104,105,110,103, +80,111,112,117,108,97,114,99,97,112,116,105,111,110,108,101,116,116,101,114,115, +99,97,112,116,117,114,101,115,99,105,101,110,99,101,108,105,99,101,110,115,101, +99,104,97,110,103,101,115,69,110,103,108,97,110,100,61,49,38,97,109,112,59,72, +105,115,116,111,114,121,32,61,32,110,101,119,32,67,101,110,116,114,97,108,117, +112,100,97,116,101,100,83,112,101,99,105,97,108,78,101,116,119,111,114,107,114, +101,113,117,105,114,101,99,111,109,109,101,110,116,119,97,114,110,105,110,103,67 +,111,108,108,101,103,101,116,111,111,108,98,97,114,114,101,109,97,105,110,115,98 +,101,99,97,117,115,101,101,108,101,99,116,101,100,68,101,117,116,115,99,104,102, +105,110,97,110,99,101,119,111,114,107,101,114,115,113,117,105,99,107,108,121,98, +101,116,119,101,101,110,101,120,97,99,116,108,121,115,101,116,116,105,110,103, +100,105,115,101,97,115,101,83,111,99,105,101,116,121,119,101,97,112,111,110,115, +101,120,104,105,98,105,116,38,108,116,59,33,45,45,67,111,110,116,114,111,108,99, +108,97,115,115,101,115,99,111,118,101,114,101,100,111,117,116,108,105,110,101,97 +,116,116,97,99,107,115,100,101,118,105,99,101,115,40,119,105,110,100,111,119,112 +,117,114,112,111,115,101,116,105,116,108,101,61,34,77,111,98,105,108,101,32,107, +105,108,108,105,110,103,115,104,111,119,105,110,103,73,116,97,108,105,97,110,100 +,114,111,112,112,101,100,104,101,97,118,105,108,121,101,102,102,101,99,116,115, +45,49,39,93,41,59,10,99,111,110,102,105,114,109,67,117,114,114,101,110,116,97, +100,118,97,110,99,101,115,104,97,114,105,110,103,111,112,101,110,105,110,103,100 +,114,97,119,105,110,103,98,105,108,108,105,111,110,111,114,100,101,114,101,100, +71,101,114,109,97,110,121,114,101,108,97,116,101,100,60,47,102,111,114,109,62, +105,110,99,108,117,100,101,119,104,101,116,104,101,114,100,101,102,105,110,101, +100,83,99,105,101,110,99,101,99,97,116,97,108,111,103,65,114,116,105,99,108,101, +98,117,116,116,111,110,115,108,97,114,103,101,115,116,117,110,105,102,111,114, +109,106,111,117,114,110,101,121,115,105,100,101,98,97,114,67,104,105,99,97,103, +111,104,111,108,105,100,97,121,71,101,110,101,114,97,108,112,97,115,115,97,103, +101,44,38,113,117,111,116,59,97,110,105,109,97,116,101,102,101,101,108,105,110, +103,97,114,114,105,118,101,100,112,97,115,115,105,110,103,110,97,116,117,114,97, +108,114,111,117,103,104,108,121,46,10,10,84,104,101,32,98,117,116,32,110,111,116 +,100,101,110,115,105,116,121,66,114,105,116,97,105,110,67,104,105,110,101,115, +101,108,97,99,107,32,111,102,116,114,105,98,117,116,101,73,114,101,108,97,110, +100,34,32,100,97,116,97,45,102,97,99,116,111,114,115,114,101,99,101,105,118,101, +116,104,97,116,32,105,115,76,105,98,114,97,114,121,104,117,115,98,97,110,100,105 +,110,32,102,97,99,116,97,102,102,97,105,114,115,67,104,97,114,108,101,115,114,97 +,100,105,99,97,108,98,114,111,117,103,104,116,102,105,110,100,105,110,103,108,97 +,110,100,105,110,103,58,108,97,110,103,61,34,114,101,116,117,114,110,32,108,101, +97,100,101,114,115,112,108,97,110,110,101,100,112,114,101,109,105,117,109,112,97 +,99,107,97,103,101,65,109,101,114,105,99,97,69,100,105,116,105,111,110,93,38,113 +,117,111,116,59,77,101,115,115,97,103,101,110,101,101,100,32,116,111,118,97,108, +117,101,61,34,99,111,109,112,108,101,120,108,111,111,107,105,110,103,115,116,97, +116,105,111,110,98,101,108,105,101,118,101,115,109,97,108,108,101,114,45,109,111 +,98,105,108,101,114,101,99,111,114,100,115,119,97,110,116,32,116,111,107,105,110 +,100,32,111,102,70,105,114,101,102,111,120,121,111,117,32,97,114,101,115,105,109 +,105,108,97,114,115,116,117,100,105,101,100,109,97,120,105,109,117,109,104,101, +97,100,105,110,103,114,97,112,105,100,108,121,99,108,105,109,97,116,101,107,105, +110,103,100,111,109,101,109,101,114,103,101,100,97,109,111,117,110,116,115,102, +111,117,110,100,101,100,112,105,111,110,101,101,114,102,111,114,109,117,108,97, +100,121,110,97,115,116,121,104,111,119,32,116,111,32,83,117,112,112,111,114,116, +114,101,118,101,110,117,101,101,99,111,110,111,109,121,82,101,115,117,108,116, +115,98,114,111,116,104,101,114,115,111,108,100,105,101,114,108,97,114,103,101, +108,121,99,97,108,108,105,110,103,46,38,113,117,111,116,59,65,99,99,111,117,110, +116,69,100,119,97,114,100,32,115,101,103,109,101,110,116,82,111,98,101,114,116, +32,101,102,102,111,114,116,115,80,97,99,105,102,105,99,108,101,97,114,110,101, +100,117,112,32,119,105,116,104,104,101,105,103,104,116,58,119,101,32,104,97,118, +101,65,110,103,101,108,101,115,110,97,116,105,111,110,115,95,115,101,97,114,99, +104,97,112,112,108,105,101,100,97,99,113,117,105,114,101,109,97,115,115,105,118, +101,103,114,97,110,116,101,100,58,32,102,97,108,115,101,116,114,101,97,116,101, +100,98,105,103,103,101,115,116,98,101,110,101,102,105,116,100,114,105,118,105, +110,103,83,116,117,100,105,101,115,109,105,110,105,109,117,109,112,101,114,104, +97,112,115,109,111,114,110,105,110,103,115,101,108,108,105,110,103,105,115,32, +117,115,101,100,114,101,118,101,114,115,101,118,97,114,105,97,110,116,32,114,111 +,108,101,61,34,109,105,115,115,105,110,103,97,99,104,105,101,118,101,112,114,111 +,109,111,116,101,115,116,117,100,101,110,116,115,111,109,101,111,110,101,101,120 +,116,114,101,109,101,114,101,115,116,111,114,101,98,111,116,116,111,109,58,101, +118,111,108,118,101,100,97,108,108,32,116,104,101,115,105,116,101,109,97,112,101 +,110,103,108,105,115,104,119,97,121,32,116,111,32,32,65,117,103,117,115,116,115, +121,109,98,111,108,115,67,111,109,112,97,110,121,109,97,116,116,101,114,115,109, +117,115,105,99,97,108,97,103,97,105,110,115,116,115,101,114,118,105,110,103,125, +41,40,41,59,13,10,112,97,121,109,101,110,116,116,114,111,117,98,108,101,99,111, +110,99,101,112,116,99,111,109,112,97,114,101,112,97,114,101,110,116,115,112,108, +97,121,101,114,115,114,101,103,105,111,110,115,109,111,110,105,116,111,114,32,39 +,39,84,104,101,32,119,105,110,110,105,110,103,101,120,112,108,111,114,101,97,100 +,97,112,116,101,100,71,97,108,108,101,114,121,112,114,111,100,117,99,101,97,98, +105,108,105,116,121,101,110,104,97,110,99,101,99,97,114,101,101,114,115,41,46,32 +,84,104,101,32,99,111,108,108,101,99,116,83,101,97,114,99,104,32,97,110,99,105, +101,110,116,101,120,105,115,116,101,100,102,111,111,116,101,114,32,104,97,110, +100,108,101,114,112,114,105,110,116,101,100,99,111,110,115,111,108,101,69,97,115 +,116,101,114,110,101,120,112,111,114,116,115,119,105,110,100,111,119,115,67,104, +97,110,110,101,108,105,108,108,101,103,97,108,110,101,117,116,114,97,108,115,117 +,103,103,101,115,116,95,104,101,97,100,101,114,115,105,103,110,105,110,103,46, +104,116,109,108,34,62,115,101,116,116,108,101,100,119,101,115,116,101,114,110,99 +,97,117,115,105,110,103,45,119,101,98,107,105,116,99,108,97,105,109,101,100,74, +117,115,116,105,99,101,99,104,97,112,116,101,114,118,105,99,116,105,109,115,84, +104,111,109,97,115,32,109,111,122,105,108,108,97,112,114,111,109,105,115,101,112 +,97,114,116,105,101,115,101,100,105,116,105,111,110,111,117,116,115,105,100,101, +58,102,97,108,115,101,44,104,117,110,100,114,101,100,79,108,121,109,112,105,99, +95,98,117,116,116,111,110,97,117,116,104,111,114,115,114,101,97,99,104,101,100, +99,104,114,111,110,105,99,100,101,109,97,110,100,115,115,101,99,111,110,100,115, +112,114,111,116,101,99,116,97,100,111,112,116,101,100,112,114,101,112,97,114,101 +,110,101,105,116,104,101,114,103,114,101,97,116,108,121,103,114,101,97,116,101, +114,111,118,101,114,97,108,108,105,109,112,114,111,118,101,99,111,109,109,97,110 +,100,115,112,101,99,105,97,108,115,101,97,114,99,104,46,119,111,114,115,104,105, +112,102,117,110,100,105,110,103,116,104,111,117,103,104,116,104,105,103,104,101, +115,116,105,110,115,116,101,97,100,117,116,105,108,105,116,121,113,117,97,114, +116,101,114,67,117,108,116,117,114,101,116,101,115,116,105,110,103,99,108,101,97 +,114,108,121,101,120,112,111,115,101,100,66,114,111,119,115,101,114,108,105,98, +101,114,97,108,125,32,99,97,116,99,104,80,114,111,106,101,99,116,101,120,97,109, +112,108,101,104,105,100,101,40,41,59,70,108,111,114,105,100,97,97,110,115,119, +101,114,115,97,108,108,111,119,101,100,69,109,112,101,114,111,114,100,101,102, +101,110,115,101,115,101,114,105,111,117,115,102,114,101,101,100,111,109,83,101, +118,101,114,97,108,45,98,117,116,116,111,110,70,117,114,116,104,101,114,111,117, +116,32,111,102,32,33,61,32,110,117,108,108,116,114,97,105,110,101,100,68,101,110 +,109,97,114,107,118,111,105,100,40,48,41,47,97,108,108,46,106,115,112,114,101, +118,101,110,116,82,101,113,117,101,115,116,83,116,101,112,104,101,110,10,10,87, +104,101,110,32,111,98,115,101,114,118,101,60,47,104,50,62,13,10,77,111,100,101, +114,110,32,112,114,111,118,105,100,101,34,32,97,108,116,61,34,98,111,114,100,101 +,114,115,46,10,10,70,111,114,32,10,10,77,97,110,121,32,97,114,116,105,115,116, +115,112,111,119,101,114,101,100,112,101,114,102,111,114,109,102,105,99,116,105, +111,110,116,121,112,101,32,111,102,109,101,100,105,99,97,108,116,105,99,107,101, +116,115,111,112,112,111,115,101,100,67,111,117,110,99,105,108,119,105,116,110, +101,115,115,106,117,115,116,105,99,101,71,101,111,114,103,101,32,66,101,108,103, +105,117,109,46,46,46,60,47,97,62,116,119,105,116,116,101,114,110,111,116,97,98, +108,121,119,97,105,116,105,110,103,119,97,114,102,97,114,101,32,79,116,104,101, +114,32,114,97,110,107,105,110,103,112,104,114,97,115,101,115,109,101,110,116,105 +,111,110,115,117,114,118,105,118,101,115,99,104,111,108,97,114,60,47,112,62,13, +10,32,67,111,117,110,116,114,121,105,103,110,111,114,101,100,108,111,115,115,32, +111,102,106,117,115,116,32,97,115,71,101,111,114,103,105,97,115,116,114,97,110, +103,101,60,104,101,97,100,62,60,115,116,111,112,112,101,100,49,39,93,41,59,13,10 +,105,115,108,97,110,100,115,110,111,116,97,98,108,101,98,111,114,100,101,114,58, +108,105,115,116,32,111,102,99,97,114,114,105,101,100,49,48,48,44,48,48,48,60,47, +104,51,62,10,32,115,101,118,101,114,97,108,98,101,99,111,109,101,115,115,101,108 +,101,99,116,32,119,101,100,100,105,110,103,48,48,46,104,116,109,108,109,111,110, +97,114,99,104,111,102,102,32,116,104,101,116,101,97,99,104,101,114,104,105,103, +104,108,121,32,98,105,111,108,111,103,121,108,105,102,101,32,111,102,111,114,32, +101,118,101,110,114,105,115,101,32,111,102,38,114,97,113,117,111,59,112,108,117, +115,111,110,101,104,117,110,116,105,110,103,40,116,104,111,117,103,104,68,111, +117,103,108,97,115,106,111,105,110,105,110,103,99,105,114,99,108,101,115,70,111, +114,32,116,104,101,65,110,99,105,101,110,116,86,105,101,116,110,97,109,118,101, +104,105,99,108,101,115,117,99,104,32,97,115,99,114,121,115,116,97,108,118,97,108 +,117,101,32,61,87,105,110,100,111,119,115,101,110,106,111,121,101,100,97,32,115, +109,97,108,108,97,115,115,117,109,101,100,60,97,32,105,100,61,34,102,111,114,101 +,105,103,110,32,65,108,108,32,114,105,104,111,119,32,116,104,101,68,105,115,112, +108,97,121,114,101,116,105,114,101,100,104,111,119,101,118,101,114,104,105,100, +100,101,110,59,98,97,116,116,108,101,115,115,101,101,107,105,110,103,99,97,98, +105,110,101,116,119,97,115,32,110,111,116,108,111,111,107,32,97,116,99,111,110, +100,117,99,116,103,101,116,32,116,104,101,74,97,110,117,97,114,121,104,97,112, +112,101,110,115,116,117,114,110,105,110,103,97,58,104,111,118,101,114,79,110,108 +,105,110,101,32,70,114,101,110,99,104,32,108,97,99,107,105,110,103,116,121,112, +105,99,97,108,101,120,116,114,97,99,116,101,110,101,109,105,101,115,101,118,101, +110,32,105,102,103,101,110,101,114,97,116,100,101,99,105,100,101,100,97,114,101, +32,110,111,116,47,115,101,97,114,99,104,98,101,108,105,101,102,115,45,105,109,97 +,103,101,58,108,111,99,97,116,101,100,115,116,97,116,105,99,46,108,111,103,105, +110,34,62,99,111,110,118,101,114,116,118,105,111,108,101,110,116,101,110,116,101 +,114,101,100,102,105,114,115,116,34,62,99,105,114,99,117,105,116,70,105,110,108, +97,110,100,99,104,101,109,105,115,116,115,104,101,32,119,97,115,49,48,112,120,59 +,34,62,97,115,32,115,117,99,104,100,105,118,105,100,101,100,60,47,115,112,97,110 +,62,119,105,108,108,32,98,101,108,105,110,101,32,111,102,97,32,103,114,101,97, +116,109,121,115,116,101,114,121,47,105,110,100,101,120,46,102,97,108,108,105,110 +,103,100,117,101,32,116,111,32,114,97,105,108,119,97,121,99,111,108,108,101,103, +101,109,111,110,115,116,101,114,100,101,115,99,101,110,116,105,116,32,119,105, +116,104,110,117,99,108,101,97,114,74,101,119,105,115,104,32,112,114,111,116,101, +115,116,66,114,105,116,105,115,104,102,108,111,119,101,114,115,112,114,101,100, +105,99,116,114,101,102,111,114,109,115,98,117,116,116,111,110,32,119,104,111,32, +119,97,115,108,101,99,116,117,114,101,105,110,115,116,97,110,116,115,117,105,99, +105,100,101,103,101,110,101,114,105,99,112,101,114,105,111,100,115,109,97,114, +107,101,116,115,83,111,99,105,97,108,32,102,105,115,104,105,110,103,99,111,109, +98,105,110,101,103,114,97,112,104,105,99,119,105,110,110,101,114,115,60,98,114, +32,47,62,60,98,121,32,116,104,101,32,78,97,116,117,114,97,108,80,114,105,118,97, +99,121,99,111,111,107,105,101,115,111,117,116,99,111,109,101,114,101,115,111,108 +,118,101,83,119,101,100,105,115,104,98,114,105,101,102,108,121,80,101,114,115, +105,97,110,115,111,32,109,117,99,104,67,101,110,116,117,114,121,100,101,112,105, +99,116,115,99,111,108,117,109,110,115,104,111,117,115,105,110,103,115,99,114,105 +,112,116,115,110,101,120,116,32,116,111,98,101,97,114,105,110,103,109,97,112,112 +,105,110,103,114,101,118,105,115,101,100,106,81,117,101,114,121,40,45,119,105, +100,116,104,58,116,105,116,108,101,34,62,116,111,111,108,116,105,112,83,101,99, +116,105,111,110,100,101,115,105,103,110,115,84,117,114,107,105,115,104,121,111, +117,110,103,101,114,46,109,97,116,99,104,40,125,41,40,41,59,10,10,98,117,114,110 +,105,110,103,111,112,101,114,97,116,101,100,101,103,114,101,101,115,115,111,117, +114,99,101,61,82,105,99,104,97,114,100,99,108,111,115,101,108,121,112,108,97,115 +,116,105,99,101,110,116,114,105,101,115,60,47,116,114,62,13,10,99,111,108,111, +114,58,35,117,108,32,105,100,61,34,112,111,115,115,101,115,115,114,111,108,108, +105,110,103,112,104,121,115,105,99,115,102,97,105,108,105,110,103,101,120,101,99 +,117,116,101,99,111,110,116,101,115,116,108,105,110,107,32,116,111,68,101,102,97 +,117,108,116,60,98,114,32,47,62,10,58,32,116,114,117,101,44,99,104,97,114,116, +101,114,116,111,117,114,105,115,109,99,108,97,115,115,105,99,112,114,111,99,101, +101,100,101,120,112,108,97,105,110,60,47,104,49,62,13,10,111,110,108,105,110,101 +,46,63,120,109,108,32,118,101,104,101,108,112,105,110,103,100,105,97,109,111,110 +,100,117,115,101,32,116,104,101,97,105,114,108,105,110,101,101,110,100,32,45,45, +62,41,46,97,116,116,114,40,114,101,97,100,101,114,115,104,111,115,116,105,110, +103,35,102,102,102,102,102,102,114,101,97,108,105,122,101,86,105,110,99,101,110, +116,115,105,103,110,97,108,115,32,115,114,99,61,34,47,80,114,111,100,117,99,116, +100,101,115,112,105,116,101,100,105,118,101,114,115,101,116,101,108,108,105,110, +103,80,117,98,108,105,99,32,104,101,108,100,32,105,110,74,111,115,101,112,104,32 +,116,104,101,97,116,114,101,97,102,102,101,99,116,115,60,115,116,121,108,101,62, +97,32,108,97,114,103,101,100,111,101,115,110,39,116,108,97,116,101,114,44,32,69, +108,101,109,101,110,116,102,97,118,105,99,111,110,99,114,101,97,116,111,114,72, +117,110,103,97,114,121,65,105,114,112,111,114,116,115,101,101,32,116,104,101,115 +,111,32,116,104,97,116,77,105,99,104,97,101,108,83,121,115,116,101,109,115,80, +114,111,103,114,97,109,115,44,32,97,110,100,32,32,119,105,100,116,104,61,101,38, +113,117,111,116,59,116,114,97,100,105,110,103,108,101,102,116,34,62,10,112,101, +114,115,111,110,115,71,111,108,100,101,110,32,65,102,102,97,105,114,115,103,114, +97,109,109,97,114,102,111,114,109,105,110,103,100,101,115,116,114,111,121,105, +100,101,97,32,111,102,99,97,115,101,32,111,102,111,108,100,101,115,116,32,116, +104,105,115,32,105,115,46,115,114,99,32,61,32,99,97,114,116,111,111,110,114,101, +103,105,115,116,114,67,111,109,109,111,110,115,77,117,115,108,105,109,115,87,104 +,97,116,32,105,115,105,110,32,109,97,110,121,109,97,114,107,105,110,103,114,101, +118,101,97,108,115,73,110,100,101,101,100,44,101,113,117,97,108,108,121,47,115, +104,111,119,95,97,111,117,116,100,111,111,114,101,115,99,97,112,101,40,65,117, +115,116,114,105,97,103,101,110,101,116,105,99,115,121,115,116,101,109,44,73,110, +32,116,104,101,32,115,105,116,116,105,110,103,72,101,32,97,108,115,111,73,115, +108,97,110,100,115,65,99,97,100,101,109,121,10,9,9,60,33,45,45,68,97,110,105,101 +,108,32,98,105,110,100,105,110,103,98,108,111,99,107,34,62,105,109,112,111,115, +101,100,117,116,105,108,105,122,101,65,98,114,97,104,97,109,40,101,120,99,101, +112,116,123,119,105,100,116,104,58,112,117,116,116,105,110,103,41,46,104,116,109 +,108,40,124,124,32,91,93,59,10,68,65,84,65,91,32,42,107,105,116,99,104,101,110, +109,111,117,110,116,101,100,97,99,116,117,97,108,32,100,105,97,108,101,99,116, +109,97,105,110,108,121,32,95,98,108,97,110,107,39,105,110,115,116,97,108,108,101 +,120,112,101,114,116,115,105,102,40,116,121,112,101,73,116,32,97,108,115,111,38, +99,111,112,121,59,32,34,62,84,101,114,109,115,98,111,114,110,32,105,110,79,112, +116,105,111,110,115,101,97,115,116,101,114,110,116,97,108,107,105,110,103,99,111 +,110,99,101,114,110,103,97,105,110,101,100,32,111,110,103,111,105,110,103,106, +117,115,116,105,102,121,99,114,105,116,105,99,115,102,97,99,116,111,114,121,105, +116,115,32,111,119,110,97,115,115,97,117,108,116,105,110,118,105,116,101,100,108 +,97,115,116,105,110,103,104,105,115,32,111,119,110,104,114,101,102,61,34,47,34, +32,114,101,108,61,34,100,101,118,101,108,111,112,99,111,110,99,101,114,116,100, +105,97,103,114,97,109,100,111,108,108,97,114,115,99,108,117,115,116,101,114,112, +104,112,63,105,100,61,97,108,99,111,104,111,108,41,59,125,41,40,41,59,117,115, +105,110,103,32,97,62,60,115,112,97,110,62,118,101,115,115,101,108,115,114,101, +118,105,118,97,108,65,100,100,114,101,115,115,97,109,97,116,101,117,114,97,110, +100,114,111,105,100,97,108,108,101,103,101,100,105,108,108,110,101,115,115,119, +97,108,107,105,110,103,99,101,110,116,101,114,115,113,117,97,108,105,102,121,109 +,97,116,99,104,101,115,117,110,105,102,105,101,100,101,120,116,105,110,99,116,68 +,101,102,101,110,115,101,100,105,101,100,32,105,110,10,9,60,33,45,45,32,99,117, +115,116,111,109,115,108,105,110,107,105,110,103,76,105,116,116,108,101,32,66,111 +,111,107,32,111,102,101,118,101,110,105,110,103,109,105,110,46,106,115,63,97,114 +,101,32,116,104,101,107,111,110,116,97,107,116,116,111,100,97,121,39,115,46,104, +116,109,108,34,32,116,97,114,103,101,116,61,119,101,97,114,105,110,103,65,108, +108,32,82,105,103,59,10,125,41,40,41,59,114,97,105,115,105,110,103,32,65,108,115 +,111,44,32,99,114,117,99,105,97,108,97,98,111,117,116,34,62,100,101,99,108,97, +114,101,45,45,62,10,60,115,99,102,105,114,101,102,111,120,97,115,32,109,117,99, +104,97,112,112,108,105,101,115,105,110,100,101,120,44,32,115,44,32,98,117,116,32 +,116,121,112,101,32,61,32,10,13,10,60,33,45,45,116,111,119,97,114,100,115,82,101 +,99,111,114,100,115,80,114,105,118,97,116,101,70,111,114,101,105,103,110,80,114, +101,109,105,101,114,99,104,111,105,99,101,115,86,105,114,116,117,97,108,114,101, +116,117,114,110,115,67,111,109,109,101,110,116,80,111,119,101,114,101,100,105, +110,108,105,110,101,59,112,111,118,101,114,116,121,99,104,97,109,98,101,114,76, +105,118,105,110,103,32,118,111,108,117,109,101,115,65,110,116,104,111,110,121, +108,111,103,105,110,34,32,82,101,108,97,116,101,100,69,99,111,110,111,109,121, +114,101,97,99,104,101,115,99,117,116,116,105,110,103,103,114,97,118,105,116,121, +108,105,102,101,32,105,110,67,104,97,112,116,101,114,45,115,104,97,100,111,119, +78,111,116,97,98,108,101,60,47,116,100,62,13,10,32,114,101,116,117,114,110,115, +116,97,100,105,117,109,119,105,100,103,101,116,115,118,97,114,121,105,110,103, +116,114,97,118,101,108,115,104,101,108,100,32,98,121,119,104,111,32,97,114,101, +119,111,114,107,32,105,110,102,97,99,117,108,116,121,97,110,103,117,108,97,114, +119,104,111,32,104,97,100,97,105,114,112,111,114,116,116,111,119,110,32,111,102, +10,10,83,111,109,101,32,39,99,108,105,99,107,39,99,104,97,114,103,101,115,107, +101,121,119,111,114,100,105,116,32,119,105,108,108,99,105,116,121,32,111,102,40, +116,104,105,115,41,59,65,110,100,114,101,119,32,117,110,105,113,117,101,32,99, +104,101,99,107,101,100,111,114,32,109,111,114,101,51,48,48,112,120,59,32,114,101 +,116,117,114,110,59,114,115,105,111,110,61,34,112,108,117,103,105,110,115,119, +105,116,104,105,110,32,104,101,114,115,101,108,102,83,116,97,116,105,111,110,70, +101,100,101,114,97,108,118,101,110,116,117,114,101,112,117,98,108,105,115,104, +115,101,110,116,32,116,111,116,101,110,115,105,111,110,97,99,116,114,101,115,115 +,99,111,109,101,32,116,111,102,105,110,103,101,114,115,68,117,107,101,32,111,102 +,112,101,111,112,108,101,44,101,120,112,108,111,105,116,119,104,97,116,32,105, +115,104,97,114,109,111,110,121,97,32,109,97,106,111,114,34,58,34,104,116,116,112 +,105,110,32,104,105,115,32,109,101,110,117,34,62,10,109,111,110,116,104,108,121, +111,102,102,105,99,101,114,99,111,117,110,99,105,108,103,97,105,110,105,110,103, +101,118,101,110,32,105,110,83,117,109,109,97,114,121,100,97,116,101,32,111,102, +108,111,121,97,108,116,121,102,105,116,110,101,115,115,97,110,100,32,119,97,115, +101,109,112,101,114,111,114,115,117,112,114,101,109,101,83,101,99,111,110,100,32 +,104,101,97,114,105,110,103,82,117,115,115,105,97,110,108,111,110,103,101,115, +116,65,108,98,101,114,116,97,108,97,116,101,114,97,108,115,101,116,32,111,102,32 +,115,109,97,108,108,34,62,46,97,112,112,101,110,100,100,111,32,119,105,116,104, +102,101,100,101,114,97,108,98,97,110,107,32,111,102,98,101,110,101,97,116,104,68 +,101,115,112,105,116,101,67,97,112,105,116,97,108,103,114,111,117,110,100,115,41 +,44,32,97,110,100,32,112,101,114,99,101,110,116,105,116,32,102,114,111,109,99, +108,111,115,105,110,103,99,111,110,116,97,105,110,73,110,115,116,101,97,100,102, +105,102,116,101,101,110,97,115,32,119,101,108,108,46,121,97,104,111,111,46,114, +101,115,112,111,110,100,102,105,103,104,116,101,114,111,98,115,99,117,114,101, +114,101,102,108,101,99,116,111,114,103,97,110,105,99,61,32,77,97,116,104,46,101, +100,105,116,105,110,103,111,110,108,105,110,101,32,112,97,100,100,105,110,103,97 +,32,119,104,111,108,101,111,110,101,114,114,111,114,121,101,97,114,32,111,102, +101,110,100,32,111,102,32,98,97,114,114,105,101,114,119,104,101,110,32,105,116, +104,101,97,100,101,114,32,104,111,109,101,32,111,102,114,101,115,117,109,101,100 +,114,101,110,97,109,101,100,115,116,114,111,110,103,62,104,101,97,116,105,110, +103,114,101,116,97,105,110,115,99,108,111,117,100,102,114,119,97,121,32,111,102, +32,77,97,114,99,104,32,49,107,110,111,119,105,110,103,105,110,32,112,97,114,116, +66,101,116,119,101,101,110,108,101,115,115,111,110,115,99,108,111,115,101,115, +116,118,105,114,116,117,97,108,108,105,110,107,115,34,62,99,114,111,115,115,101, +100,69,78,68,32,45,45,62,102,97,109,111,117,115,32,97,119,97,114,100,101,100,76, +105,99,101,110,115,101,72,101,97,108,116,104,32,102,97,105,114,108,121,32,119, +101,97,108,116,104,121,109,105,110,105,109,97,108,65,102,114,105,99,97,110,99, +111,109,112,101,116,101,108,97,98,101,108,34,62,115,105,110,103,105,110,103,102, +97,114,109,101,114,115,66,114,97,115,105,108,41,100,105,115,99,117,115,115,114, +101,112,108,97,99,101,71,114,101,103,111,114,121,102,111,110,116,32,99,111,112, +117,114,115,117,101,100,97,112,112,101,97,114,115,109,97,107,101,32,117,112,114, +111,117,110,100,101,100,98,111,116,104,32,111,102,98,108,111,99,107,101,100,115, +97,119,32,116,104,101,111,102,102,105,99,101,115,99,111,108,111,117,114,115,105, +102,40,100,111,99,117,119,104,101,110,32,104,101,101,110,102,111,114,99,101,112, +117,115,104,40,102,117,65,117,103,117,115,116,32,85,84,70,45,56,34,62,70,97,110, +116,97,115,121,105,110,32,109,111,115,116,105,110,106,117,114,101,100,85,115,117 +,97,108,108,121,102,97,114,109,105,110,103,99,108,111,115,117,114,101,111,98,106 +,101,99,116,32,100,101,102,101,110,99,101,117,115,101,32,111,102,32,77,101,100, +105,99,97,108,60,98,111,100,121,62,10,101,118,105,100,101,110,116,98,101,32,117, +115,101,100,107,101,121,67,111,100,101,115,105,120,116,101,101,110,73,115,108,97 +,109,105,99,35,48,48,48,48,48,48,101,110,116,105,114,101,32,119,105,100,101,108, +121,32,97,99,116,105,118,101,32,40,116,121,112,101,111,102,111,110,101,32,99,97, +110,99,111,108,111,114,32,61,115,112,101,97,107,101,114,101,120,116,101,110,100, +115,80,104,121,115,105,99,115,116,101,114,114,97,105,110,60,116,98,111,100,121, +62,102,117,110,101,114,97,108,118,105,101,119,105,110,103,109,105,100,100,108, +101,32,99,114,105,99,107,101,116,112,114,111,112,104,101,116,115,104,105,102,116 +,101,100,100,111,99,116,111,114,115,82,117,115,115,101,108,108,32,116,97,114,103 +,101,116,99,111,109,112,97,99,116,97,108,103,101,98,114,97,115,111,99,105,97,108 +,45,98,117,108,107,32,111,102,109,97,110,32,97,110,100,60,47,116,100,62,10,32, +104,101,32,108,101,102,116,41,46,118,97,108,40,41,102,97,108,115,101,41,59,108, +111,103,105,99,97,108,98,97,110,107,105,110,103,104,111,109,101,32,116,111,110, +97,109,105,110,103,32,65,114,105,122,111,110,97,99,114,101,100,105,116,115,41,59 +,10,125,41,59,10,102,111,117,110,100,101,114,105,110,32,116,117,114,110,67,111, +108,108,105,110,115,98,101,102,111,114,101,32,66,117,116,32,116,104,101,99,104, +97,114,103,101,100,84,105,116,108,101,34,62,67,97,112,116,97,105,110,115,112,101 +,108,108,101,100,103,111,100,100,101,115,115,84,97,103,32,45,45,62,65,100,100, +105,110,103,58,98,117,116,32,119,97,115,82,101,99,101,110,116,32,112,97,116,105, +101,110,116,98,97,99,107,32,105,110,61,102,97,108,115,101,38,76,105,110,99,111, +108,110,119,101,32,107,110,111,119,67,111,117,110,116,101,114,74,117,100,97,105, +115,109,115,99,114,105,112,116,32,97,108,116,101,114,101,100,39,93,41,59,10,32, +32,104,97,115,32,116,104,101,117,110,99,108,101,97,114,69,118,101,110,116,39,44, +98,111,116,104,32,105,110,110,111,116,32,97,108,108,10,10,60,33,45,45,32,112,108 +,97,99,105,110,103,104,97,114,100,32,116,111,32,99,101,110,116,101,114,115,111, +114,116,32,111,102,99,108,105,101,110,116,115,115,116,114,101,101,116,115,66,101 +,114,110,97,114,100,97,115,115,101,114,116,115,116,101,110,100,32,116,111,102,97 +,110,116,97,115,121,100,111,119,110,32,105,110,104,97,114,98,111,117,114,70,114, +101,101,100,111,109,106,101,119,101,108,114,121,47,97,98,111,117,116,46,46,115, +101,97,114,99,104,108,101,103,101,110,100,115,105,115,32,109,97,100,101,109,111, +100,101,114,110,32,111,110,108,121,32,111,110,111,110,108,121,32,116,111,105,109 +,97,103,101,34,32,108,105,110,101,97,114,32,112,97,105,110,116,101,114,97,110, +100,32,110,111,116,114,97,114,101,108,121,32,97,99,114,111,110,121,109,100,101, +108,105,118,101,114,115,104,111,114,116,101,114,48,48,38,97,109,112,59,97,115,32 +,109,97,110,121,119,105,100,116,104,61,34,47,42,32,60,33,91,67,116,105,116,108, +101,32,61,111,102,32,116,104,101,32,108,111,119,101,115,116,32,112,105,99,107, +101,100,32,101,115,99,97,112,101,100,117,115,101,115,32,111,102,112,101,111,112, +108,101,115,32,80,117,98,108,105,99,77,97,116,116,104,101,119,116,97,99,116,105, +99,115,100,97,109,97,103,101,100,119,97,121,32,102,111,114,108,97,119,115,32,111 +,102,101,97,115,121,32,116,111,32,119,105,110,100,111,119,115,116,114,111,110, +103,32,32,115,105,109,112,108,101,125,99,97,116,99,104,40,115,101,118,101,110, +116,104,105,110,102,111,98,111,120,119,101,110,116,32,116,111,112,97,105,110,116 +,101,100,99,105,116,105,122,101,110,73,32,100,111,110,39,116,114,101,116,114,101 +,97,116,46,32,83,111,109,101,32,119,119,46,34,41,59,10,98,111,109,98,105,110,103 +,109,97,105,108,116,111,58,109,97,100,101,32,105,110,46,32,77,97,110,121,32,99, +97,114,114,105,101,115,124,124,123,125,59,119,105,119,111,114,107,32,111,102,115 +,121,110,111,110,121,109,100,101,102,101,97,116,115,102,97,118,111,114,101,100, +111,112,116,105,99,97,108,112,97,103,101,84,114,97,117,110,108,101,115,115,32, +115,101,110,100,105,110,103,108,101,102,116,34,62,60,99,111,109,83,99,111,114,65 +,108,108,32,116,104,101,106,81,117,101,114,121,46,116,111,117,114,105,115,116,67 +,108,97,115,115,105,99,102,97,108,115,101,34,32,87,105,108,104,101,108,109,115, +117,98,117,114,98,115,103,101,110,117,105,110,101,98,105,115,104,111,112,115,46, +115,112,108,105,116,40,103,108,111,98,97,108,32,102,111,108,108,111,119,115,98, +111,100,121,32,111,102,110,111,109,105,110,97,108,67,111,110,116,97,99,116,115, +101,99,117,108,97,114,108,101,102,116,32,116,111,99,104,105,101,102,108,121,45, +104,105,100,100,101,110,45,98,97,110,110,101,114,60,47,108,105,62,10,10,46,32,87 +,104,101,110,32,105,110,32,98,111,116,104,100,105,115,109,105,115,115,69,120,112 +,108,111,114,101,97,108,119,97,121,115,32,118,105,97,32,116,104,101,115,112,97, +195,177,111,108,119,101,108,102,97,114,101,114,117,108,105,110,103,32,97,114,114 +,97,110,103,101,99,97,112,116,97,105,110,104,105,115,32,115,111,110,114,117,108, +101,32,111,102,104,101,32,116,111,111,107,105,116,115,101,108,102,44,61,48,38,97 +,109,112,59,40,99,97,108,108,101,100,115,97,109,112,108,101,115,116,111,32,109, +97,107,101,99,111,109,47,112,97,103,77,97,114,116,105,110,32,75,101,110,110,101, +100,121,97,99,99,101,112,116,115,102,117,108,108,32,111,102,104,97,110,100,108, +101,100,66,101,115,105,100,101,115,47,47,45,45,62,60,47,97,98,108,101,32,116,111 +,116,97,114,103,101,116,115,101,115,115,101,110,99,101,104,105,109,32,116,111,32 +,105,116,115,32,98,121,32,99,111,109,109,111,110,46,109,105,110,101,114,97,108, +116,111,32,116,97,107,101,119,97,121,115,32,116,111,115,46,111,114,103,47,108,97 +,100,118,105,115,101,100,112,101,110,97,108,116,121,115,105,109,112,108,101,58, +105,102,32,116,104,101,121,76,101,116,116,101,114,115,97,32,115,104,111,114,116, +72,101,114,98,101,114,116,115,116,114,105,107,101,115,32,103,114,111,117,112,115 +,46,108,101,110,103,116,104,102,108,105,103,104,116,115,111,118,101,114,108,97, +112,115,108,111,119,108,121,32,108,101,115,115,101,114,32,115,111,99,105,97,108, +32,60,47,112,62,10,9,9,105,116,32,105,110,116,111,114,97,110,107,101,100,32,114, +97,116,101,32,111,102,117,108,62,13,10,32,32,97,116,116,101,109,112,116,112,97, +105,114,32,111,102,109,97,107,101,32,105,116,75,111,110,116,97,107,116,65,110, +116,111,110,105,111,104,97,118,105,110,103,32,114,97,116,105,110,103,115,32,97, +99,116,105,118,101,115,116,114,101,97,109,115,116,114,97,112,112,101,100,34,41, +46,99,115,115,40,104,111,115,116,105,108,101,108,101,97,100,32,116,111,108,105, +116,116,108,101,32,103,114,111,117,112,115,44,80,105,99,116,117,114,101,45,45,62 +,13,10,13,10,32,114,111,119,115,61,34,32,111,98,106,101,99,116,105,110,118,101, +114,115,101,60,102,111,111,116,101,114,67,117,115,116,111,109,86,62,60,92,47,115 +,99,114,115,111,108,118,105,110,103,67,104,97,109,98,101,114,115,108,97,118,101, +114,121,119,111,117,110,100,101,100,119,104,101,114,101,97,115,33,61,32,39,117, +110,100,102,111,114,32,97,108,108,112,97,114,116,108,121,32,45,114,105,103,104, +116,58,65,114,97,98,105,97,110,98,97,99,107,101,100,32,99,101,110,116,117,114, +121,117,110,105,116,32,111,102,109,111,98,105,108,101,45,69,117,114,111,112,101, +44,105,115,32,104,111,109,101,114,105,115,107,32,111,102,100,101,115,105,114,101 +,100,67,108,105,110,116,111,110,99,111,115,116,32,111,102,97,103,101,32,111,102, +32,98,101,99,111,109,101,32,110,111,110,101,32,111,102,112,38,113,117,111,116,59 +,77,105,100,100,108,101,32,101,97,100,39,41,91,48,67,114,105,116,105,99,115,115, +116,117,100,105,111,115,62,38,99,111,112,121,59,103,114,111,117,112,34,62,97,115 +,115,101,109,98,108,109,97,107,105,110,103,32,112,114,101,115,115,101,100,119, +105,100,103,101,116,46,112,115,58,34,32,63,32,114,101,98,117,105,108,116,98,121, +32,115,111,109,101,70,111,114,109,101,114,32,101,100,105,116,111,114,115,100,101 +,108,97,121,101,100,67,97,110,111,110,105,99,104,97,100,32,116,104,101,112,117, +115,104,105,110,103,99,108,97,115,115,61,34,98,117,116,32,97,114,101,112,97,114, +116,105,97,108,66,97,98,121,108,111,110,98,111,116,116,111,109,32,99,97,114,114, +105,101,114,67,111,109,109,97,110,100,105,116,115,32,117,115,101,65,115,32,119, +105,116,104,99,111,117,114,115,101,115,97,32,116,104,105,114,100,100,101,110,111 +,116,101,115,97,108,115,111,32,105,110,72,111,117,115,116,111,110,50,48,112,120, +59,34,62,97,99,99,117,115,101,100,100,111,117,98,108,101,32,103,111,97,108,32, +111,102,70,97,109,111,117,115,32,41,46,98,105,110,100,40,112,114,105,101,115,116 +,115,32,79,110,108,105,110,101,105,110,32,74,117,108,121,115,116,32,43,32,34,103 +,99,111,110,115,117,108,116,100,101,99,105,109,97,108,104,101,108,112,102,117, +108,114,101,118,105,118,101,100,105,115,32,118,101,114,121,114,39,43,39,105,112, +116,108,111,115,105,110,103,32,102,101,109,97,108,101,115,105,115,32,97,108,115, +111,115,116,114,105,110,103,115,100,97,121,115,32,111,102,97,114,114,105,118,97, +108,102,117,116,117,114,101,32,60,111,98,106,101,99,116,102,111,114,99,105,110, +103,83,116,114,105,110,103,40,34,32,47,62,10,9,9,104,101,114,101,32,105,115,101, +110,99,111,100,101,100,46,32,32,84,104,101,32,98,97,108,108,111,111,110,100,111, +110,101,32,98,121,47,99,111,109,109,111,110,98,103,99,111,108,111,114,108,97,119 +,32,111,102,32,73,110,100,105,97,110,97,97,118,111,105,100,101,100,98,117,116,32 +,116,104,101,50,112,120,32,51,112,120,106,113,117,101,114,121,46,97,102,116,101, +114,32,97,112,111,108,105,99,121,46,109,101,110,32,97,110,100,102,111,111,116, +101,114,45,61,32,116,114,117,101,59,102,111,114,32,117,115,101,115,99,114,101, +101,110,46,73,110,100,105,97,110,32,105,109,97,103,101,32,61,102,97,109,105,108, +121,44,104,116,116,112,58,47,47,32,38,110,98,115,112,59,100,114,105,118,101,114, +115,101,116,101,114,110,97,108,115,97,109,101,32,97,115,110,111,116,105,99,101, +100,118,105,101,119,101,114,115,125,41,40,41,59,10,32,105,115,32,109,111,114,101 +,115,101,97,115,111,110,115,102,111,114,109,101,114,32,116,104,101,32,110,101, +119,105,115,32,106,117,115,116,99,111,110,115,101,110,116,32,83,101,97,114,99, +104,119,97,115,32,116,104,101,119,104,121,32,116,104,101,115,104,105,112,112,101 +,100,98,114,62,60,98,114,62,119,105,100,116,104,58,32,104,101,105,103,104,116,61 +,109,97,100,101,32,111,102,99,117,105,115,105,110,101,105,115,32,116,104,97,116, +97,32,118,101,114,121,32,65,100,109,105,114,97,108,32,102,105,120,101,100,59,110 +,111,114,109,97,108,32,77,105,115,115,105,111,110,80,114,101,115,115,44,32,111, +110,116,97,114,105,111,99,104,97,114,115,101,116,116,114,121,32,116,111,32,105, +110,118,97,100,101,100,61,34,116,114,117,101,34,115,112,97,99,105,110,103,105, +115,32,109,111,115,116,97,32,109,111,114,101,32,116,111,116,97,108,108,121,102, +97,108,108,32,111,102,125,41,59,13,10,32,32,105,109,109,101,110,115,101,116,105, +109,101,32,105,110,115,101,116,32,111,117,116,115,97,116,105,115,102,121,116,111 +,32,102,105,110,100,100,111,119,110,32,116,111,108,111,116,32,111,102,32,80,108, +97,121,101,114,115,105,110,32,74,117,110,101,113,117,97,110,116,117,109,110,111, +116,32,116,104,101,116,105,109,101,32,116,111,100,105,115,116,97,110,116,70,105, +110,110,105,115,104,115,114,99,32,61,32,40,115,105,110,103,108,101,32,104,101, +108,112,32,111,102,71,101,114,109,97,110,32,108,97,119,32,97,110,100,108,97,98, +101,108,101,100,102,111,114,101,115,116,115,99,111,111,107,105,110,103,115,112, +97,99,101,34,62,104,101,97,100,101,114,45,119,101,108,108,32,97,115,83,116,97, +110,108,101,121,98,114,105,100,103,101,115,47,103,108,111,98,97,108,67,114,111, +97,116,105,97,32,65,98,111,117,116,32,91,48,93,59,10,32,32,105,116,44,32,97,110, +100,103,114,111,117,112,101,100,98,101,105,110,103,32,97,41,123,116,104,114,111, +119,104,101,32,109,97,100,101,108,105,103,104,116,101,114,101,116,104,105,99,97, +108,70,70,70,70,70,70,34,98,111,116,116,111,109,34,108,105,107,101,32,97,32,101, +109,112,108,111,121,115,108,105,118,101,32,105,110,97,115,32,115,101,101,110,112 +,114,105,110,116,101,114,109,111,115,116,32,111,102,117,98,45,108,105,110,107, +114,101,106,101,99,116,115,97,110,100,32,117,115,101,105,109,97,103,101,34,62, +115,117,99,99,101,101,100,102,101,101,100,105,110,103,78,117,99,108,101,97,114, +105,110,102,111,114,109,97,116,111,32,104,101,108,112,87,111,109,101,110,39,115, +78,101,105,116,104,101,114,77,101,120,105,99,97,110,112,114,111,116,101,105,110, +60,116,97,98,108,101,32,98,121,32,109,97,110,121,104,101,97,108,116,104,121,108, +97,119,115,117,105,116,100,101,118,105,115,101,100,46,112,117,115,104,40,123,115 +,101,108,108,101,114,115,115,105,109,112,108,121,32,84,104,114,111,117,103,104, +46,99,111,111,107,105,101,32,73,109,97,103,101,40,111,108,100,101,114,34,62,117, +115,46,106,115,34,62,32,83,105,110,99,101,32,117,110,105,118,101,114,115,108,97, +114,103,101,114,32,111,112,101,110,32,116,111,33,45,45,32,101,110,100,108,105, +101,115,32,105,110,39,93,41,59,13,10,32,32,109,97,114,107,101,116,119,104,111,32 +,105,115,32,40,34,68,79,77,67,111,109,97,110,97,103,101,100,111,110,101,32,102, +111,114,116,121,112,101,111,102,32,75,105,110,103,100,111,109,112,114,111,102, +105,116,115,112,114,111,112,111,115,101,116,111,32,115,104,111,119,99,101,110, +116,101,114,59,109,97,100,101,32,105,116,100,114,101,115,115,101,100,119,101,114 +,101,32,105,110,109,105,120,116,117,114,101,112,114,101,99,105,115,101,97,114, +105,115,105,110,103,115,114,99,32,61,32,39,109,97,107,101,32,97,32,115,101,99, +117,114,101,100,66,97,112,116,105,115,116,118,111,116,105,110,103,32,10,9,9,118, +97,114,32,77,97,114,99,104,32,50,103,114,101,119,32,117,112,67,108,105,109,97, +116,101,46,114,101,109,111,118,101,115,107,105,108,108,101,100,119,97,121,32,116 +,104,101,60,47,104,101,97,100,62,102,97,99,101,32,111,102,97,99,116,105,110,103, +32,114,105,103,104,116,34,62,116,111,32,119,111,114,107,114,101,100,117,99,101, +115,104,97,115,32,104,97,100,101,114,101,99,116,101,100,115,104,111,119,40,41,59 +,97,99,116,105,111,110,61,98,111,111,107,32,111,102,97,110,32,97,114,101,97,61, +61,32,34,104,116,116,60,104,101,97,100,101,114,10,60,104,116,109,108,62,99,111, +110,102,111,114,109,102,97,99,105,110,103,32,99,111,111,107,105,101,46,114,101, +108,121,32,111,110,104,111,115,116,101,100,32,46,99,117,115,116,111,109,104,101, +32,119,101,110,116,98,117,116,32,102,111,114,115,112,114,101,97,100,32,70,97,109 +,105,108,121,32,97,32,109,101,97,110,115,111,117,116,32,116,104,101,102,111,114, +117,109,115,46,102,111,111,116,97,103,101,34,62,77,111,98,105,108,67,108,101,109 +,101,110,116,115,34,32,105,100,61,34,97,115,32,104,105,103,104,105,110,116,101, +110,115,101,45,45,62,60,33,45,45,102,101,109,97,108,101,32,105,115,32,115,101, +101,110,105,109,112,108,105,101,100,115,101,116,32,116,104,101,97,32,115,116,97, +116,101,97,110,100,32,104,105,115,102,97,115,116,101,115,116,98,101,115,105,100, +101,115,98,117,116,116,111,110,95,98,111,117,110,100,101,100,34,62,60,105,109, +103,32,73,110,102,111,98,111,120,101,118,101,110,116,115,44,97,32,121,111,117, +110,103,97,110,100,32,97,114,101,78,97,116,105,118,101,32,99,104,101,97,112,101, +114,84,105,109,101,111,117,116,97,110,100,32,104,97,115,101,110,103,105,110,101, +115,119,111,110,32,116,104,101,40,109,111,115,116,108,121,114,105,103,104,116,58 +,32,102,105,110,100,32,97,32,45,98,111,116,116,111,109,80,114,105,110,99,101,32, +97,114,101,97,32,111,102,109,111,114,101,32,111,102,115,101,97,114,99,104,95,110 +,97,116,117,114,101,44,108,101,103,97,108,108,121,112,101,114,105,111,100,44,108 +,97,110,100,32,111,102,111,114,32,119,105,116,104,105,110,100,117,99,101,100,112 +,114,111,118,105,110,103,109,105,115,115,105,108,101,108,111,99,97,108,108,121, +65,103,97,105,110,115,116,116,104,101,32,119,97,121,107,38,113,117,111,116,59, +112,120,59,34,62,13,10,112,117,115,104,101,100,32,97,98,97,110,100,111,110,110, +117,109,101,114,97,108,67,101,114,116,97,105,110,73,110,32,116,104,105,115,109, +111,114,101,32,105,110,111,114,32,115,111,109,101,110,97,109,101,32,105,115,97, +110,100,44,32,105,110,99,114,111,119,110,101,100,73,83,66,78,32,48,45,99,114,101 +,97,116,101,115,79,99,116,111,98,101,114,109,97,121,32,110,111,116,99,101,110, +116,101,114,32,108,97,116,101,32,105,110,68,101,102,101,110,99,101,101,110,97,99 +,116,101,100,119,105,115,104,32,116,111,98,114,111,97,100,108,121,99,111,111,108 +,105,110,103,111,110,108,111,97,100,61,105,116,46,32,84,104,101,114,101,99,111, +118,101,114,77,101,109,98,101,114,115,104,101,105,103,104,116,32,97,115,115,117, +109,101,115,60,104,116,109,108,62,10,112,101,111,112,108,101,46,105,110,32,111, +110,101,32,61,119,105,110,100,111,119,102,111,111,116,101,114,95,97,32,103,111, +111,100,32,114,101,107,108,97,109,97,111,116,104,101,114,115,44,116,111,32,116, +104,105,115,95,99,111,111,107,105,101,112,97,110,101,108,34,62,76,111,110,100, +111,110,44,100,101,102,105,110,101,115,99,114,117,115,104,101,100,98,97,112,116, +105,115,109,99,111,97,115,116,97,108,115,116,97,116,117,115,32,116,105,116,108, +101,34,32,109,111,118,101,32,116,111,108,111,115,116,32,105,110,98,101,116,116, +101,114,32,105,109,112,108,105,101,115,114,105,118,97,108,114,121,115,101,114, +118,101,114,115,32,83,121,115,116,101,109,80,101,114,104,97,112,115,101,115,32, +97,110,100,32,99,111,110,116,101,110,100,102,108,111,119,105,110,103,108,97,115, +116,101,100,32,114,105,115,101,32,105,110,71,101,110,101,115,105,115,118,105,101 +,119,32,111,102,114,105,115,105,110,103,32,115,101,101,109,32,116,111,98,117,116 +,32,105,110,32,98,97,99,107,105,110,103,104,101,32,119,105,108,108,103,105,118, +101,110,32,97,103,105,118,105,110,103,32,99,105,116,105,101,115,46,102,108,111, +119,32,111,102,32,76,97,116,101,114,32,97,108,108,32,98,117,116,72,105,103,104, +119,97,121,111,110,108,121,32,98,121,115,105,103,110,32,111,102,104,101,32,100, +111,101,115,100,105,102,102,101,114,115,98,97,116,116,101,114,121,38,97,109,112, +59,108,97,115,105,110,103,108,101,115,116,104,114,101,97,116,115,105,110,116,101 +,103,101,114,116,97,107,101,32,111,110,114,101,102,117,115,101,100,99,97,108,108 +,101,100,32,61,85,83,38,97,109,112,83,101,101,32,116,104,101,110,97,116,105,118, +101,115,98,121,32,116,104,105,115,115,121,115,116,101,109,46,104,101,97,100,32, +111,102,58,104,111,118,101,114,44,108,101,115,98,105,97,110,115,117,114,110,97, +109,101,97,110,100,32,97,108,108,99,111,109,109,111,110,47,104,101,97,100,101, +114,95,95,112,97,114,97,109,115,72,97,114,118,97,114,100,47,112,105,120,101,108, +46,114,101,109,111,118,97,108,115,111,32,108,111,110,103,114,111,108,101,32,111, +102,106,111,105,110,116,108,121,115,107,121,115,99,114,97,85,110,105,99,111,100, +101,98,114,32,47,62,13,10,65,116,108,97,110,116,97,110,117,99,108,101,117,115,67 +,111,117,110,116,121,44,112,117,114,101,108,121,32,99,111,117,110,116,34,62,101, +97,115,105,108,121,32,98,117,105,108,100,32,97,111,110,99,108,105,99,107,97,32, +103,105,118,101,110,112,111,105,110,116,101,114,104,38,113,117,111,116,59,101, +118,101,110,116,115,32,101,108,115,101,32,123,10,100,105,116,105,111,110,115,110 +,111,119,32,116,104,101,44,32,119,105,116,104,32,109,97,110,32,119,104,111,111, +114,103,47,87,101,98,111,110,101,32,97,110,100,99,97,118,97,108,114,121,72,101, +32,100,105,101,100,115,101,97,116,116,108,101,48,48,44,48,48,48,32,123,119,105, +110,100,111,119,104,97,118,101,32,116,111,105,102,40,119,105,110,100,97,110,100, +32,105,116,115,115,111,108,101,108,121,32,109,38,113,117,111,116,59,114,101,110, +101,119,101,100,68,101,116,114,111,105,116,97,109,111,110,103,115,116,101,105, +116,104,101,114,32,116,104,101,109,32,105,110,83,101,110,97,116,111,114,85,115, +60,47,97,62,60,75,105,110,103,32,111,102,70,114,97,110,99,105,115,45,112,114,111 +,100,117,99,104,101,32,117,115,101,100,97,114,116,32,97,110,100,104,105,109,32, +97,110,100,117,115,101,100,32,98,121,115,99,111,114,105,110,103,97,116,32,104, +111,109,101,116,111,32,104,97,118,101,114,101,108,97,116,101,115,105,98,105,108, +105,116,121,102,97,99,116,105,111,110,66,117,102,102,97,108,111,108,105,110,107, +34,62,60,119,104,97,116,32,104,101,102,114,101,101,32,116,111,67,105,116,121,32, +111,102,99,111,109,101,32,105,110,115,101,99,116,111,114,115,99,111,117,110,116, +101,100,111,110,101,32,100,97,121,110,101,114,118,111,117,115,115,113,117,97,114 +,101,32,125,59,105,102,40,103,111,105,110,32,119,104,97,116,105,109,103,34,32,97 +,108,105,115,32,111,110,108,121,115,101,97,114,99,104,47,116,117,101,115,100,97, +121,108,111,111,115,101,108,121,83,111,108,111,109,111,110,115,101,120,117,97, +108,32,45,32,60,97,32,104,114,109,101,100,105,117,109,34,68,79,32,78,79,84,32,70 +,114,97,110,99,101,44,119,105,116,104,32,97,32,119,97,114,32,97,110,100,115,101, +99,111,110,100,32,116,97,107,101,32,97,32,62,13,10,13,10,13,10,109,97,114,107, +101,116,46,104,105,103,104,119,97,121,100,111,110,101,32,105,110,99,116,105,118, +105,116,121,34,108,97,115,116,34,62,111,98,108,105,103,101,100,114,105,115,101, +32,116,111,34,117,110,100,101,102,105,109,97,100,101,32,116,111,32,69,97,114,108 +,121,32,112,114,97,105,115,101,100,105,110,32,105,116,115,32,102,111,114,32,104, +105,115,97,116,104,108,101,116,101,74,117,112,105,116,101,114,89,97,104,111,111, +33,32,116,101,114,109,101,100,32,115,111,32,109,97,110,121,114,101,97,108,108, +121,32,115,46,32,84,104,101,32,97,32,119,111,109,97,110,63,118,97,108,117,101,61 +,100,105,114,101,99,116,32,114,105,103,104,116,34,32,98,105,99,121,99,108,101,97 +,99,105,110,103,61,34,100,97,121,32,97,110,100,115,116,97,116,105,110,103,82,97, +116,104,101,114,44,104,105,103,104,101,114,32,79,102,102,105,99,101,32,97,114, +101,32,110,111,119,116,105,109,101,115,44,32,119,104,101,110,32,97,32,112,97,121 +,32,102,111,114,111,110,32,116,104,105,115,45,108,105,110,107,34,62,59,98,111, +114,100,101,114,97,114,111,117,110,100,32,97,110,110,117,97,108,32,116,104,101, +32,78,101,119,112,117,116,32,116,104,101,46,99,111,109,34,32,116,97,107,105,110, +32,116,111,97,32,98,114,105,101,102,40,105,110,32,116,104,101,103,114,111,117, +112,115,46,59,32,119,105,100,116,104,101,110,122,121,109,101,115,115,105,109,112 +,108,101,32,105,110,32,108,97,116,101,123,114,101,116,117,114,110,116,104,101, +114,97,112,121,97,32,112,111,105,110,116,98,97,110,110,105,110,103,105,110,107, +115,34,62,10,40,41,59,34,32,114,101,97,32,112,108,97,99,101,92,117,48,48,51,67, +97,97,98,111,117,116,32,97,116,114,62,13,10,9,9,99,99,111,117,110,116,32,103,105 +,118,101,115,32,97,60,83,67,82,73,80,84,82,97,105,108,119,97,121,116,104,101,109 +,101,115,47,116,111,111,108,98,111,120,66,121,73,100,40,34,120,104,117,109,97, +110,115,44,119,97,116,99,104,101,115,105,110,32,115,111,109,101,32,105,102,32,40 +,119,105,99,111,109,105,110,103,32,102,111,114,109,97,116,115,32,85,110,100,101, +114,32,98,117,116,32,104,97,115,104,97,110,100,101,100,32,109,97,100,101,32,98, +121,116,104,97,110,32,105,110,102,101,97,114,32,111,102,100,101,110,111,116,101, +100,47,105,102,114,97,109,101,108,101,102,116,32,105,110,118,111,108,116,97,103, +101,105,110,32,101,97,99,104,97,38,113,117,111,116,59,98,97,115,101,32,111,102, +73,110,32,109,97,110,121,117,110,100,101,114,103,111,114,101,103,105,109,101,115 +,97,99,116,105,111,110,32,60,47,112,62,13,10,60,117,115,116,111,109,86,97,59,38, +103,116,59,60,47,105,109,112,111,114,116,115,111,114,32,116,104,97,116,109,111, +115,116,108,121,32,38,97,109,112,59,114,101,32,115,105,122,101,61,34,60,47,97,62 +,60,47,104,97,32,99,108,97,115,115,112,97,115,115,105,118,101,72,111,115,116,32, +61,32,87,104,101,116,104,101,114,102,101,114,116,105,108,101,86,97,114,105,111, +117,115,61,91,93,59,40,102,117,99,97,109,101,114,97,115,47,62,60,47,116,100,62, +97,99,116,115,32,97,115,73,110,32,115,111,109,101,62,13,10,13,10,60,33,111,114, +103,97,110,105,115,32,60,98,114,32,47,62,66,101,105,106,105,110,103,99,97,116,97 +,108,195,160,100,101,117,116,115,99,104,101,117,114,111,112,101,117,101,117,115, +107,97,114,97,103,97,101,105,108,103,101,115,118,101,110,115,107,97,101,115,112, +97,195,177,97,109,101,110,115,97,106,101,117,115,117,97,114,105,111,116,114,97, +98,97,106,111,109,195,169,120,105,99,111,112,195,161,103,105,110,97,115,105,101, +109,112,114,101,115,105,115,116,101,109,97,111,99,116,117,98,114,101,100,117,114 +,97,110,116,101,97,195,177,97,100,105,114,101,109,112,114,101,115,97,109,111,109 +,101,110,116,111,110,117,101,115,116,114,111,112,114,105,109,101,114,97,116,114, +97,118,195,169,115,103,114,97,99,105,97,115,110,117,101,115,116,114,97,112,114, +111,99,101,115,111,101,115,116,97,100,111,115,99,97,108,105,100,97,100,112,101, +114,115,111,110,97,110,195,186,109,101,114,111,97,99,117,101,114,100,111,109,195 +,186,115,105,99,97,109,105,101,109,98,114,111,111,102,101,114,116,97,115,97,108, +103,117,110,111,115,112,97,195,173,115,101,115,101,106,101,109,112,108,111,100, +101,114,101,99,104,111,97,100,101,109,195,161,115,112,114,105,118,97,100,111,97, +103,114,101,103,97,114,101,110,108,97,99,101,115,112,111,115,105,98,108,101,104, +111,116,101,108,101,115,115,101,118,105,108,108,97,112,114,105,109,101,114,111, +195,186,108,116,105,109,111,101,118,101,110,116,111,115,97,114,99,104,105,118, +111,99,117,108,116,117,114,97,109,117,106,101,114,101,115,101,110,116,114,97,100 +,97,97,110,117,110,99,105,111,101,109,98,97,114,103,111,109,101,114,99,97,100, +111,103,114,97,110,100,101,115,101,115,116,117,100,105,111,109,101,106,111,114, +101,115,102,101,98,114,101,114,111,100,105,115,101,195,177,111,116,117,114,105, +115,109,111,99,195,179,100,105,103,111,112,111,114,116,97,100,97,101,115,112,97, +99,105,111,102,97,109,105,108,105,97,97,110,116,111,110,105,111,112,101,114,109, +105,116,101,103,117,97,114,100,97,114,97,108,103,117,110,97,115,112,114,101,99, +105,111,115,97,108,103,117,105,101,110,115,101,110,116,105,100,111,118,105,115, +105,116,97,115,116,195,173,116,117,108,111,99,111,110,111,99,101,114,115,101,103 +,117,110,100,111,99,111,110,115,101,106,111,102,114,97,110,99,105,97,109,105,110 +,117,116,111,115,115,101,103,117,110,100,97,116,101,110,101,109,111,115,101,102, +101,99,116,111,115,109,195,161,108,97,103,97,115,101,115,105,195,179,110,114,101 +,118,105,115,116,97,103,114,97,110,97,100,97,99,111,109,112,114,97,114,105,110, +103,114,101,115,111,103,97,114,99,195,173,97,97,99,99,105,195,179,110,101,99,117 +,97,100,111,114,113,117,105,101,110,101,115,105,110,99,108,117,115,111,100,101, +98,101,114,195,161,109,97,116,101,114,105,97,104,111,109,98,114,101,115,109,117, +101,115,116,114,97,112,111,100,114,195,173,97,109,97,195,177,97,110,97,195,186, +108,116,105,109,97,101,115,116,97,109,111,115,111,102,105,99,105,97,108,116,97, +109,98,105,101,110,110,105,110,103,195,186,110,115,97,108,117,100,111,115,112, +111,100,101,109,111,115,109,101,106,111,114,97,114,112,111,115,105,116,105,111, +110,98,117,115,105,110,101,115,115,104,111,109,101,112,97,103,101,115,101,99,117 +,114,105,116,121,108,97,110,103,117,97,103,101,115,116,97,110,100,97,114,100,99, +97,109,112,97,105,103,110,102,101,97,116,117,114,101,115,99,97,116,101,103,111, +114,121,101,120,116,101,114,110,97,108,99,104,105,108,100,114,101,110,114,101, +115,101,114,118,101,100,114,101,115,101,97,114,99,104,101,120,99,104,97,110,103, +101,102,97,118,111,114,105,116,101,116,101,109,112,108,97,116,101,109,105,108, +105,116,97,114,121,105,110,100,117,115,116,114,121,115,101,114,118,105,99,101, +115,109,97,116,101,114,105,97,108,112,114,111,100,117,99,116,115,122,45,105,110, +100,101,120,58,99,111,109,109,101,110,116,115,115,111,102,116,119,97,114,101,99, +111,109,112,108,101,116,101,99,97,108,101,110,100,97,114,112,108,97,116,102,111, +114,109,97,114,116,105,99,108,101,115,114,101,113,117,105,114,101,100,109,111, +118,101,109,101,110,116,113,117,101,115,116,105,111,110,98,117,105,108,100,105, +110,103,112,111,108,105,116,105,99,115,112,111,115,115,105,98,108,101,114,101, +108,105,103,105,111,110,112,104,121,115,105,99,97,108,102,101,101,100,98,97,99, +107,114,101,103,105,115,116,101,114,112,105,99,116,117,114,101,115,100,105,115, +97,98,108,101,100,112,114,111,116,111,99,111,108,97,117,100,105,101,110,99,101, +115,101,116,116,105,110,103,115,97,99,116,105,118,105,116,121,101,108,101,109, +101,110,116,115,108,101,97,114,110,105,110,103,97,110,121,116,104,105,110,103,97 +,98,115,116,114,97,99,116,112,114,111,103,114,101,115,115,111,118,101,114,118, +105,101,119,109,97,103,97,122,105,110,101,101,99,111,110,111,109,105,99,116,114, +97,105,110,105,110,103,112,114,101,115,115,117,114,101,118,97,114,105,111,117, +115,32,60,115,116,114,111,110,103,62,112,114,111,112,101,114,116,121,115,104,111 +,112,112,105,110,103,116,111,103,101,116,104,101,114,97,100,118,97,110,99,101, +100,98,101,104,97,118,105,111,114,100,111,119,110,108,111,97,100,102,101,97,116, +117,114,101,100,102,111,111,116,98,97,108,108,115,101,108,101,99,116,101,100,76, +97,110,103,117,97,103,101,100,105,115,116,97,110,99,101,114,101,109,101,109,98, +101,114,116,114,97,99,107,105,110,103,112,97,115,115,119,111,114,100,109,111,100 +,105,102,105,101,100,115,116,117,100,101,110,116,115,100,105,114,101,99,116,108, +121,102,105,103,104,116,105,110,103,110,111,114,116,104,101,114,110,100,97,116, +97,98,97,115,101,102,101,115,116,105,118,97,108,98,114,101,97,107,105,110,103, +108,111,99,97,116,105,111,110,105,110,116,101,114,110,101,116,100,114,111,112, +100,111,119,110,112,114,97,99,116,105,99,101,101,118,105,100,101,110,99,101,102, +117,110,99,116,105,111,110,109,97,114,114,105,97,103,101,114,101,115,112,111,110 +,115,101,112,114,111,98,108,101,109,115,110,101,103,97,116,105,118,101,112,114, +111,103,114,97,109,115,97,110,97,108,121,115,105,115,114,101,108,101,97,115,101, +100,98,97,110,110,101,114,34,62,112,117,114,99,104,97,115,101,112,111,108,105,99 +,105,101,115,114,101,103,105,111,110,97,108,99,114,101,97,116,105,118,101,97,114 +,103,117,109,101,110,116,98,111,111,107,109,97,114,107,114,101,102,101,114,114, +101,114,99,104,101,109,105,99,97,108,100,105,118,105,115,105,111,110,99,97,108, +108,98,97,99,107,115,101,112,97,114,97,116,101,112,114,111,106,101,99,116,115,99 +,111,110,102,108,105,99,116,104,97,114,100,119,97,114,101,105,110,116,101,114, +101,115,116,100,101,108,105,118,101,114,121,109,111,117,110,116,97,105,110,111, +98,116,97,105,110,101,100,61,32,102,97,108,115,101,59,102,111,114,40,118,97,114, +32,97,99,99,101,112,116,101,100,99,97,112,97,99,105,116,121,99,111,109,112,117, +116,101,114,105,100,101,110,116,105,116,121,97,105,114,99,114,97,102,116,101,109 +,112,108,111,121,101,100,112,114,111,112,111,115,101,100,100,111,109,101,115,116 +,105,99,105,110,99,108,117,100,101,115,112,114,111,118,105,100,101,100,104,111, +115,112,105,116,97,108,118,101,114,116,105,99,97,108,99,111,108,108,97,112,115, +101,97,112,112,114,111,97,99,104,112,97,114,116,110,101,114,115,108,111,103,111, +34,62,60,97,100,97,117,103,104,116,101,114,97,117,116,104,111,114,34,32,99,117, +108,116,117,114,97,108,102,97,109,105,108,105,101,115,47,105,109,97,103,101,115, +47,97,115,115,101,109,98,108,121,112,111,119,101,114,102,117,108,116,101,97,99, +104,105,110,103,102,105,110,105,115,104,101,100,100,105,115,116,114,105,99,116, +99,114,105,116,105,99,97,108,99,103,105,45,98,105,110,47,112,117,114,112,111,115 +,101,115,114,101,113,117,105,114,101,115,101,108,101,99,116,105,111,110,98,101, +99,111,109,105,110,103,112,114,111,118,105,100,101,115,97,99,97,100,101,109,105, +99,101,120,101,114,99,105,115,101,97,99,116,117,97,108,108,121,109,101,100,105, +99,105,110,101,99,111,110,115,116,97,110,116,97,99,99,105,100,101,110,116,77,97, +103,97,122,105,110,101,100,111,99,117,109,101,110,116,115,116,97,114,116,105,110 +,103,98,111,116,116,111,109,34,62,111,98,115,101,114,118,101,100,58,32,38,113, +117,111,116,59,101,120,116,101,110,100,101,100,112,114,101,118,105,111,117,115, +83,111,102,116,119,97,114,101,99,117,115,116,111,109,101,114,100,101,99,105,115, +105,111,110,115,116,114,101,110,103,116,104,100,101,116,97,105,108,101,100,115, +108,105,103,104,116,108,121,112,108,97,110,110,105,110,103,116,101,120,116,97, +114,101,97,99,117,114,114,101,110,99,121,101,118,101,114,121,111,110,101,115,116 +,114,97,105,103,104,116,116,114,97,110,115,102,101,114,112,111,115,105,116,105, +118,101,112,114,111,100,117,99,101,100,104,101,114,105,116,97,103,101,115,104, +105,112,112,105,110,103,97,98,115,111,108,117,116,101,114,101,99,101,105,118,101 +,100,114,101,108,101,118,97,110,116,98,117,116,116,111,110,34,32,118,105,111,108 +,101,110,99,101,97,110,121,119,104,101,114,101,98,101,110,101,102,105,116,115, +108,97,117,110,99,104,101,100,114,101,99,101,110,116,108,121,97,108,108,105,97, +110,99,101,102,111,108,108,111,119,101,100,109,117,108,116,105,112,108,101,98, +117,108,108,101,116,105,110,105,110,99,108,117,100,101,100,111,99,99,117,114,114 +,101,100,105,110,116,101,114,110,97,108,36,40,116,104,105,115,41,46,114,101,112, +117,98,108,105,99,62,60,116,114,62,60,116,100,99,111,110,103,114,101,115,115,114 +,101,99,111,114,100,101,100,117,108,116,105,109,97,116,101,115,111,108,117,116, +105,111,110,60,117,108,32,105,100,61,34,100,105,115,99,111,118,101,114,72,111, +109,101,60,47,97,62,119,101,98,115,105,116,101,115,110,101,116,119,111,114,107, +115,97,108,116,104,111,117,103,104,101,110,116,105,114,101,108,121,109,101,109, +111,114,105,97,108,109,101,115,115,97,103,101,115,99,111,110,116,105,110,117,101 +,97,99,116,105,118,101,34,62,115,111,109,101,119,104,97,116,118,105,99,116,111, +114,105,97,87,101,115,116,101,114,110,32,32,116,105,116,108,101,61,34,76,111,99, +97,116,105,111,110,99,111,110,116,114,97,99,116,118,105,115,105,116,111,114,115, +68,111,119,110,108,111,97,100,119,105,116,104,111,117,116,32,114,105,103,104,116 +,34,62,10,109,101,97,115,117,114,101,115,119,105,100,116,104,32,61,32,118,97,114 +,105,97,98,108,101,105,110,118,111,108,118,101,100,118,105,114,103,105,110,105, +97,110,111,114,109,97,108,108,121,104,97,112,112,101,110,101,100,97,99,99,111, +117,110,116,115,115,116,97,110,100,105,110,103,110,97,116,105,111,110,97,108,82, +101,103,105,115,116,101,114,112,114,101,112,97,114,101,100,99,111,110,116,114, +111,108,115,97,99,99,117,114,97,116,101,98,105,114,116,104,100,97,121,115,116, +114,97,116,101,103,121,111,102,102,105,99,105,97,108,103,114,97,112,104,105,99, +115,99,114,105,109,105,110,97,108,112,111,115,115,105,98,108,121,99,111,110,115, +117,109,101,114,80,101,114,115,111,110,97,108,115,112,101,97,107,105,110,103,118 +,97,108,105,100,97,116,101,97,99,104,105,101,118,101,100,46,106,112,103,34,32,47 +,62,109,97,99,104,105,110,101,115,60,47,104,50,62,10,32,32,107,101,121,119,111, +114,100,115,102,114,105,101,110,100,108,121,98,114,111,116,104,101,114,115,99, +111,109,98,105,110,101,100,111,114,105,103,105,110,97,108,99,111,109,112,111,115 +,101,100,101,120,112,101,99,116,101,100,97,100,101,113,117,97,116,101,112,97,107 +,105,115,116,97,110,102,111,108,108,111,119,34,32,118,97,108,117,97,98,108,101, +60,47,108,97,98,101,108,62,114,101,108,97,116,105,118,101,98,114,105,110,103,105 +,110,103,105,110,99,114,101,97,115,101,103,111,118,101,114,110,111,114,112,108, +117,103,105,110,115,47,76,105,115,116,32,111,102,32,72,101,97,100,101,114,34,62, +34,32,110,97,109,101,61,34,32,40,38,113,117,111,116,59,103,114,97,100,117,97,116 +,101,60,47,104,101,97,100,62,10,99,111,109,109,101,114,99,101,109,97,108,97,121, +115,105,97,100,105,114,101,99,116,111,114,109,97,105,110,116,97,105,110,59,104, +101,105,103,104,116,58,115,99,104,101,100,117,108,101,99,104,97,110,103,105,110, +103,98,97,99,107,32,116,111,32,99,97,116,104,111,108,105,99,112,97,116,116,101, +114,110,115,99,111,108,111,114,58,32,35,103,114,101,97,116,101,115,116,115,117, +112,112,108,105,101,115,114,101,108,105,97,98,108,101,60,47,117,108,62,10,9,9,60 +,115,101,108,101,99,116,32,99,105,116,105,122,101,110,115,99,108,111,116,104,105 +,110,103,119,97,116,99,104,105,110,103,60,108,105,32,105,100,61,34,115,112,101, +99,105,102,105,99,99,97,114,114,121,105,110,103,115,101,110,116,101,110,99,101, +60,99,101,110,116,101,114,62,99,111,110,116,114,97,115,116,116,104,105,110,107, +105,110,103,99,97,116,99,104,40,101,41,115,111,117,116,104,101,114,110,77,105,99 +,104,97,101,108,32,109,101,114,99,104,97,110,116,99,97,114,111,117,115,101,108, +112,97,100,100,105,110,103,58,105,110,116,101,114,105,111,114,46,115,112,108,105 +,116,40,34,108,105,122,97,116,105,111,110,79,99,116,111,98,101,114,32,41,123,114 +,101,116,117,114,110,105,109,112,114,111,118,101,100,45,45,38,103,116,59,10,10, +99,111,118,101,114,97,103,101,99,104,97,105,114,109,97,110,46,112,110,103,34,32, +47,62,115,117,98,106,101,99,116,115,82,105,99,104,97,114,100,32,119,104,97,116, +101,118,101,114,112,114,111,98,97,98,108,121,114,101,99,111,118,101,114,121,98, +97,115,101,98,97,108,108,106,117,100,103,109,101,110,116,99,111,110,110,101,99, +116,46,46,99,115,115,34,32,47,62,32,119,101,98,115,105,116,101,114,101,112,111, +114,116,101,100,100,101,102,97,117,108,116,34,47,62,60,47,97,62,13,10,101,108, +101,99,116,114,105,99,115,99,111,116,108,97,110,100,99,114,101,97,116,105,111, +110,113,117,97,110,116,105,116,121,46,32,73,83,66,78,32,48,100,105,100,32,110, +111,116,32,105,110,115,116,97,110,99,101,45,115,101,97,114,99,104,45,34,32,108, +97,110,103,61,34,115,112,101,97,107,101,114,115,67,111,109,112,117,116,101,114, +99,111,110,116,97,105,110,115,97,114,99,104,105,118,101,115,109,105,110,105,115, +116,101,114,114,101,97,99,116,105,111,110,100,105,115,99,111,117,110,116,73,116, +97,108,105,97,110,111,99,114,105,116,101,114,105,97,115,116,114,111,110,103,108, +121,58,32,39,104,116,116,112,58,39,115,99,114,105,112,116,39,99,111,118,101,114, +105,110,103,111,102,102,101,114,105,110,103,97,112,112,101,97,114,101,100,66,114 +,105,116,105,115,104,32,105,100,101,110,116,105,102,121,70,97,99,101,98,111,111, +107,110,117,109,101,114,111,117,115,118,101,104,105,99,108,101,115,99,111,110,99 +,101,114,110,115,65,109,101,114,105,99,97,110,104,97,110,100,108,105,110,103,100 +,105,118,32,105,100,61,34,87,105,108,108,105,97,109,32,112,114,111,118,105,100, +101,114,95,99,111,110,116,101,110,116,97,99,99,117,114,97,99,121,115,101,99,116, +105,111,110,32,97,110,100,101,114,115,111,110,102,108,101,120,105,98,108,101,67, +97,116,101,103,111,114,121,108,97,119,114,101,110,99,101,60,115,99,114,105,112, +116,62,108,97,121,111,117,116,61,34,97,112,112,114,111,118,101,100,32,109,97,120 +,105,109,117,109,104,101,97,100,101,114,34,62,60,47,116,97,98,108,101,62,83,101, +114,118,105,99,101,115,104,97,109,105,108,116,111,110,99,117,114,114,101,110,116 +,32,99,97,110,97,100,105,97,110,99,104,97,110,110,101,108,115,47,116,104,101,109 +,101,115,47,47,97,114,116,105,99,108,101,111,112,116,105,111,110,97,108,112,111, +114,116,117,103,97,108,118,97,108,117,101,61,34,34,105,110,116,101,114,118,97, +108,119,105,114,101,108,101,115,115,101,110,116,105,116,108,101,100,97,103,101, +110,99,105,101,115,83,101,97,114,99,104,34,32,109,101,97,115,117,114,101,100,116 +,104,111,117,115,97,110,100,115,112,101,110,100,105,110,103,38,104,101,108,108, +105,112,59,110,101,119,32,68,97,116,101,34,32,115,105,122,101,61,34,112,97,103, +101,78,97,109,101,109,105,100,100,108,101,34,32,34,32,47,62,60,47,97,62,104,105, +100,100,101,110,34,62,115,101,113,117,101,110,99,101,112,101,114,115,111,110,97, +108,111,118,101,114,102,108,111,119,111,112,105,110,105,111,110,115,105,108,108, +105,110,111,105,115,108,105,110,107,115,34,62,10,9,60,116,105,116,108,101,62,118 +,101,114,115,105,111,110,115,115,97,116,117,114,100,97,121,116,101,114,109,105, +110,97,108,105,116,101,109,112,114,111,112,101,110,103,105,110,101,101,114,115, +101,99,116,105,111,110,115,100,101,115,105,103,110,101,114,112,114,111,112,111, +115,97,108,61,34,102,97,108,115,101,34,69,115,112,97,195,177,111,108,114,101,108 +,101,97,115,101,115,115,117,98,109,105,116,34,32,101,114,38,113,117,111,116,59, +97,100,100,105,116,105,111,110,115,121,109,112,116,111,109,115,111,114,105,101, +110,116,101,100,114,101,115,111,117,114,99,101,114,105,103,104,116,34,62,60,112, +108,101,97,115,117,114,101,115,116,97,116,105,111,110,115,104,105,115,116,111, +114,121,46,108,101,97,118,105,110,103,32,32,98,111,114,100,101,114,61,99,111,110 +,116,101,110,116,115,99,101,110,116,101,114,34,62,46,10,10,83,111,109,101,32,100 +,105,114,101,99,116,101,100,115,117,105,116,97,98,108,101,98,117,108,103,97,114, +105,97,46,115,104,111,119,40,41,59,100,101,115,105,103,110,101,100,71,101,110, +101,114,97,108,32,99,111,110,99,101,112,116,115,69,120,97,109,112,108,101,115, +119,105,108,108,105,97,109,115,79,114,105,103,105,110,97,108,34,62,60,115,112,97 +,110,62,115,101,97,114,99,104,34,62,111,112,101,114,97,116,111,114,114,101,113, +117,101,115,116,115,97,32,38,113,117,111,116,59,97,108,108,111,119,105,110,103, +68,111,99,117,109,101,110,116,114,101,118,105,115,105,111,110,46,32,10,10,84,104 +,101,32,121,111,117,114,115,101,108,102,67,111,110,116,97,99,116,32,109,105,99, +104,105,103,97,110,69,110,103,108,105,115,104,32,99,111,108,117,109,98,105,97, +112,114,105,111,114,105,116,121,112,114,105,110,116,105,110,103,100,114,105,110, +107,105,110,103,102,97,99,105,108,105,116,121,114,101,116,117,114,110,101,100,67 +,111,110,116,101,110,116,32,111,102,102,105,99,101,114,115,82,117,115,115,105,97 +,110,32,103,101,110,101,114,97,116,101,45,56,56,53,57,45,49,34,105,110,100,105, +99,97,116,101,102,97,109,105,108,105,97,114,32,113,117,97,108,105,116,121,109,97 +,114,103,105,110,58,48,32,99,111,110,116,101,110,116,118,105,101,119,112,111,114 +,116,99,111,110,116,97,99,116,115,45,116,105,116,108,101,34,62,112,111,114,116, +97,98,108,101,46,108,101,110,103,116,104,32,101,108,105,103,105,98,108,101,105, +110,118,111,108,118,101,115,97,116,108,97,110,116,105,99,111,110,108,111,97,100, +61,34,100,101,102,97,117,108,116,46,115,117,112,112,108,105,101,100,112,97,121, +109,101,110,116,115,103,108,111,115,115,97,114,121,10,10,65,102,116,101,114,32, +103,117,105,100,97,110,99,101,60,47,116,100,62,60,116,100,101,110,99,111,100,105 +,110,103,109,105,100,100,108,101,34,62,99,97,109,101,32,116,111,32,100,105,115, +112,108,97,121,115,115,99,111,116,116,105,115,104,106,111,110,97,116,104,97,110, +109,97,106,111,114,105,116,121,119,105,100,103,101,116,115,46,99,108,105,110,105 +,99,97,108,116,104,97,105,108,97,110,100,116,101,97,99,104,101,114,115,60,104, +101,97,100,62,10,9,97,102,102,101,99,116,101,100,115,117,112,112,111,114,116,115 +,112,111,105,110,116,101,114,59,116,111,83,116,114,105,110,103,60,47,115,109,97, +108,108,62,111,107,108,97,104,111,109,97,119,105,108,108,32,98,101,32,105,110, +118,101,115,116,111,114,48,34,32,97,108,116,61,34,104,111,108,105,100,97,121,115 +,82,101,115,111,117,114,99,101,108,105,99,101,110,115,101,100,32,40,119,104,105, +99,104,32,46,32,65,102,116,101,114,32,99,111,110,115,105,100,101,114,118,105,115 +,105,116,105,110,103,101,120,112,108,111,114,101,114,112,114,105,109,97,114,121, +32,115,101,97,114,99,104,34,32,97,110,100,114,111,105,100,34,113,117,105,99,107, +108,121,32,109,101,101,116,105,110,103,115,101,115,116,105,109,97,116,101,59,114 +,101,116,117,114,110,32,59,99,111,108,111,114,58,35,32,104,101,105,103,104,116, +61,97,112,112,114,111,118,97,108,44,32,38,113,117,111,116,59,32,99,104,101,99, +107,101,100,46,109,105,110,46,106,115,34,109,97,103,110,101,116,105,99,62,60,47, +97,62,60,47,104,102,111,114,101,99,97,115,116,46,32,87,104,105,108,101,32,116, +104,117,114,115,100,97,121,100,118,101,114,116,105,115,101,38,101,97,99,117,116, +101,59,104,97,115,67,108,97,115,115,101,118,97,108,117,97,116,101,111,114,100, +101,114,105,110,103,101,120,105,115,116,105,110,103,112,97,116,105,101,110,116, +115,32,79,110,108,105,110,101,32,99,111,108,111,114,97,100,111,79,112,116,105, +111,110,115,34,99,97,109,112,98,101,108,108,60,33,45,45,32,101,110,100,60,47,115 +,112,97,110,62,60,60,98,114,32,47,62,13,10,95,112,111,112,117,112,115,124,115,99 +,105,101,110,99,101,115,44,38,113,117,111,116,59,32,113,117,97,108,105,116,121, +32,87,105,110,100,111,119,115,32,97,115,115,105,103,110,101,100,104,101,105,103, +104,116,58,32,60,98,32,99,108,97,115,115,108,101,38,113,117,111,116,59,32,118,97 +,108,117,101,61,34,32,67,111,109,112,97,110,121,101,120,97,109,112,108,101,115, +60,105,102,114,97,109,101,32,98,101,108,105,101,118,101,115,112,114,101,115,101, +110,116,115,109,97,114,115,104,97,108,108,112,97,114,116,32,111,102,32,112,114, +111,112,101,114,108,121,41,46,10,10,84,104,101,32,116,97,120,111,110,111,109,121 +,109,117,99,104,32,111,102,32,60,47,115,112,97,110,62,10,34,32,100,97,116,97,45, +115,114,116,117,103,117,195,170,115,115,99,114,111,108,108,84,111,32,112,114,111 +,106,101,99,116,60,104,101,97,100,62,13,10,97,116,116,111,114,110,101,121,101, +109,112,104,97,115,105,115,115,112,111,110,115,111,114,115,102,97,110,99,121,98, +111,120,119,111,114,108,100,39,115,32,119,105,108,100,108,105,102,101,99,104,101 +,99,107,101,100,61,115,101,115,115,105,111,110,115,112,114,111,103,114,97,109, +109,112,120,59,102,111,110,116,45,32,80,114,111,106,101,99,116,106,111,117,114, +110,97,108,115,98,101,108,105,101,118,101,100,118,97,99,97,116,105,111,110,116, +104,111,109,112,115,111,110,108,105,103,104,116,105,110,103,97,110,100,32,116, +104,101,32,115,112,101,99,105,97,108,32,98,111,114,100,101,114,61,48,99,104,101, +99,107,105,110,103,60,47,116,98,111,100,121,62,60,98,117,116,116,111,110,32,67, +111,109,112,108,101,116,101,99,108,101,97,114,102,105,120,10,60,104,101,97,100, +62,10,97,114,116,105,99,108,101,32,60,115,101,99,116,105,111,110,102,105,110,100 +,105,110,103,115,114,111,108,101,32,105,110,32,112,111,112,117,108,97,114,32,32, +79,99,116,111,98,101,114,119,101,98,115,105,116,101,32,101,120,112,111,115,117, +114,101,117,115,101,100,32,116,111,32,32,99,104,97,110,103,101,115,111,112,101, +114,97,116,101,100,99,108,105,99,107,105,110,103,101,110,116,101,114,105,110,103 +,99,111,109,109,97,110,100,115,105,110,102,111,114,109,101,100,32,110,117,109,98 +,101,114,115,32,32,60,47,100,105,118,62,99,114,101,97,116,105,110,103,111,110,83 +,117,98,109,105,116,109,97,114,121,108,97,110,100,99,111,108,108,101,103,101,115 +,97,110,97,108,121,116,105,99,108,105,115,116,105,110,103,115,99,111,110,116,97, +99,116,46,108,111,103,103,101,100,73,110,97,100,118,105,115,111,114,121,115,105, +98,108,105,110,103,115,99,111,110,116,101,110,116,34,115,38,113,117,111,116,59, +41,115,46,32,84,104,105,115,32,112,97,99,107,97,103,101,115,99,104,101,99,107,98 +,111,120,115,117,103,103,101,115,116,115,112,114,101,103,110,97,110,116,116,111, +109,111,114,114,111,119,115,112,97,99,105,110,103,61,105,99,111,110,46,112,110, +103,106,97,112,97,110,101,115,101,99,111,100,101,98,97,115,101,98,117,116,116, +111,110,34,62,103,97,109,98,108,105,110,103,115,117,99,104,32,97,115,32,44,32, +119,104,105,108,101,32,60,47,115,112,97,110,62,32,109,105,115,115,111,117,114, +105,115,112,111,114,116,105,110,103,116,111,112,58,49,112,120,32,46,60,47,115, +112,97,110,62,116,101,110,115,105,111,110,115,119,105,100,116,104,61,34,50,108, +97,122,121,108,111,97,100,110,111,118,101,109,98,101,114,117,115,101,100,32,105, +110,32,104,101,105,103,104,116,61,34,99,114,105,112,116,34,62,10,38,110,98,115, +112,59,60,47,60,116,114,62,60,116,100,32,104,101,105,103,104,116,58,50,47,112, +114,111,100,117,99,116,99,111,117,110,116,114,121,32,105,110,99,108,117,100,101, +32,102,111,111,116,101,114,34,32,38,108,116,59,33,45,45,32,116,105,116,108,101, +34,62,60,47,106,113,117,101,114,121,46,60,47,102,111,114,109,62,10,40,231,174, +128,228,189,147,41,40,231,185,129,233,171,148,41,104,114,118,97,116,115,107,105, +105,116,97,108,105,97,110,111,114,111,109,195,162,110,196,131,116,195,188,114, +107,195,167,101,216,167,216,177,216,175,217,136,116,97,109,98,105,195,169,110, +110,111,116,105,99,105,97,115,109,101,110,115,97,106,101,115,112,101,114,115,111 +,110,97,115,100,101,114,101,99,104,111,115,110,97,99,105,111,110,97,108,115,101, +114,118,105,99,105,111,99,111,110,116,97,99,116,111,117,115,117,97,114,105,111, +115,112,114,111,103,114,97,109,97,103,111,98,105,101,114,110,111,101,109,112,114 +,101,115,97,115,97,110,117,110,99,105,111,115,118,97,108,101,110,99,105,97,99, +111,108,111,109,98,105,97,100,101,115,112,117,195,169,115,100,101,112,111,114, +116,101,115,112,114,111,121,101,99,116,111,112,114,111,100,117,99,116,111,112, +195,186,98,108,105,99,111,110,111,115,111,116,114,111,115,104,105,115,116,111, +114,105,97,112,114,101,115,101,110,116,101,109,105,108,108,111,110,101,115,109, +101,100,105,97,110,116,101,112,114,101,103,117,110,116,97,97,110,116,101,114,105 +,111,114,114,101,99,117,114,115,111,115,112,114,111,98,108,101,109,97,115,97,110 +,116,105,97,103,111,110,117,101,115,116,114,111,115,111,112,105,110,105,195,179, +110,105,109,112,114,105,109,105,114,109,105,101,110,116,114,97,115,97,109,195, +169,114,105,99,97,118,101,110,100,101,100,111,114,115,111,99,105,101,100,97,100, +114,101,115,112,101,99,116,111,114,101,97,108,105,122,97,114,114,101,103,105,115 +,116,114,111,112,97,108,97,98,114,97,115,105,110,116,101,114,195,169,115,101,110 +,116,111,110,99,101,115,101,115,112,101,99,105,97,108,109,105,101,109,98,114,111 +,115,114,101,97,108,105,100,97,100,99,195,179,114,100,111,98,97,122,97,114,97, +103,111,122,97,112,195,161,103,105,110,97,115,115,111,99,105,97,108,101,115,98, +108,111,113,117,101,97,114,103,101,115,116,105,195,179,110,97,108,113,117,105, +108,101,114,115,105,115,116,101,109,97,115,99,105,101,110,99,105,97,115,99,111, +109,112,108,101,116,111,118,101,114,115,105,195,179,110,99,111,109,112,108,101, +116,97,101,115,116,117,100,105,111,115,112,195,186,98,108,105,99,97,111,98,106, +101,116,105,118,111,97,108,105,99,97,110,116,101,98,117,115,99,97,100,111,114,99 +,97,110,116,105,100,97,100,101,110,116,114,97,100,97,115,97,99,99,105,111,110, +101,115,97,114,99,104,105,118,111,115,115,117,112,101,114,105,111,114,109,97,121 +,111,114,195,173,97,97,108,101,109,97,110,105,97,102,117,110,99,105,195,179,110, +195,186,108,116,105,109,111,115,104,97,99,105,101,110,100,111,97,113,117,101,108 +,108,111,115,101,100,105,99,105,195,179,110,102,101,114,110,97,110,100,111,97, +109,98,105,101,110,116,101,102,97,99,101,98,111,111,107,110,117,101,115,116,114, +97,115,99,108,105,101,110,116,101,115,112,114,111,99,101,115,111,115,98,97,115, +116,97,110,116,101,112,114,101,115,101,110,116,97,114,101,112,111,114,116,97,114 +,99,111,110,103,114,101,115,111,112,117,98,108,105,99,97,114,99,111,109,101,114, +99,105,111,99,111,110,116,114,97,116,111,106,195,179,118,101,110,101,115,100,105 +,115,116,114,105,116,111,116,195,169,99,110,105,99,97,99,111,110,106,117,110,116 +,111,101,110,101,114,103,195,173,97,116,114,97,98,97,106,97,114,97,115,116,117, +114,105,97,115,114,101,99,105,101,110,116,101,117,116,105,108,105,122,97,114,98, +111,108,101,116,195,173,110,115,97,108,118,97,100,111,114,99,111,114,114,101,99, +116,97,116,114,97,98,97,106,111,115,112,114,105,109,101,114,111,115,110,101,103, +111,99,105,111,115,108,105,98,101,114,116,97,100,100,101,116,97,108,108,101,115, +112,97,110,116,97,108,108,97,112,114,195,179,120,105,109,111,97,108,109,101,114, +195,173,97,97,110,105,109,97,108,101,115,113,117,105,195,169,110,101,115,99,111, +114,97,122,195,179,110,115,101,99,99,105,195,179,110,98,117,115,99,97,110,100, +111,111,112,99,105,111,110,101,115,101,120,116,101,114,105,111,114,99,111,110,99 +,101,112,116,111,116,111,100,97,118,195,173,97,103,97,108,101,114,195,173,97,101 +,115,99,114,105,98,105,114,109,101,100,105,99,105,110,97,108,105,99,101,110,99, +105,97,99,111,110,115,117,108,116,97,97,115,112,101,99,116,111,115,99,114,195, +173,116,105,99,97,100,195,179,108,97,114,101,115,106,117,115,116,105,99,105,97, +100,101,98,101,114,195,161,110,112,101,114,195,173,111,100,111,110,101,99,101, +115,105,116,97,109,97,110,116,101,110,101,114,112,101,113,117,101,195,177,111, +114,101,99,105,98,105,100,97,116,114,105,98,117,110,97,108,116,101,110,101,114, +105,102,101,99,97,110,99,105,195,179,110,99,97,110,97,114,105,97,115,100,101,115 +,99,97,114,103,97,100,105,118,101,114,115,111,115,109,97,108,108,111,114,99,97, +114,101,113,117,105,101,114,101,116,195,169,99,110,105,99,111,100,101,98,101,114 +,195,173,97,118,105,118,105,101,110,100,97,102,105,110,97,110,122,97,115,97,100, +101,108,97,110,116,101,102,117,110,99,105,111,110,97,99,111,110,115,101,106,111, +115,100,105,102,195,173,99,105,108,99,105,117,100,97,100,101,115,97,110,116,105, +103,117,97,115,97,118,97,110,122,97,100,97,116,195,169,114,109,105,110,111,117, +110,105,100,97,100,101,115,115,195,161,110,99,104,101,122,99,97,109,112,97,195, +177,97,115,111,102,116,111,110,105,99,114,101,118,105,115,116,97,115,99,111,110, +116,105,101,110,101,115,101,99,116,111,114,101,115,109,111,109,101,110,116,111, +115,102,97,99,117,108,116,97,100,99,114,195,169,100,105,116,111,100,105,118,101, +114,115,97,115,115,117,112,117,101,115,116,111,102,97,99,116,111,114,101,115,115 +,101,103,117,110,100,111,115,112,101,113,117,101,195,177,97,208,179,208,190,208, +180,208,176,208,181,209,129,208,187,208,184,208,181,209,129,209,130,209,140,208, +177,209,139,208,187,208,190,208,177,209,139,209,130,209,140,209,141,209,130,208, +190,208,188,208,149,209,129,208,187,208,184,209,130,208,190,208,179,208,190,208, +188,208,181,208,189,209,143,208,178,209,129,208,181,209,133,209,141,209,130,208, +190,208,185,208,180,208,176,208,182,208,181,208,177,209,139,208,187,208,184,208, +179,208,190,208,180,209,131,208,180,208,181,208,189,209,140,209,141,209,130,208, +190,209,130,208,177,209,139,208,187,208,176,209,129,208,181,208,177,209,143,208, +190,208,180,208,184,208,189,209,129,208,181,208,177,208,181,208,189,208,176,208, +180,208,190,209,129,208,176,208,185,209,130,209,132,208,190,209,130,208,190,208, +189,208,181,208,179,208,190,209,129,208,178,208,190,208,184,209,129,208,178,208, +190,208,185,208,184,208,179,209,128,209,139,209,130,208,190,208,182,208,181,208, +178,209,129,208,181,208,188,209,129,208,178,208,190,209,142,208,187,208,184,209, +136,209,140,209,141,209,130,208,184,209,133,208,191,208,190,208,186,208,176,208, +180,208,189,208,181,208,185,208,180,208,190,208,188,208,176,208,188,208,184,209, +128,208,176,208,187,208,184,208,177,208,190,209,130,208,181,208,188,209,131,209, +133,208,190,209,130,209,143,208,180,208,178,209,131,209,133,209,129,208,181,209, +130,208,184,208,187,209,142,208,180,208,184,208,180,208,181,208,187,208,190,208, +188,208,184,209,128,208,181,209,130,208,181,208,177,209,143,209,129,208,178,208, +190,208,181,208,178,208,184,208,180,208,181,209,135,208,181,208,179,208,190,209, +141,209,130,208,184,208,188,209,129,209,135,208,181,209,130,209,130,208,181,208, +188,209,139,209,134,208,181,208,189,209,139,209,129,209,130,208,176,208,187,208, +178,208,181,208,180,209,140,209,130,208,181,208,188,208,181,208,178,208,190,208, +180,209,139,209,130,208,181,208,177,208,181,208,178,209,139,209,136,208,181,208, +189,208,176,208,188,208,184,209,130,208,184,208,191,208,176,209,130,208,190,208, +188,209,131,208,191,209,128,208,176,208,178,208,187,208,184,209,134,208,176,208, +190,208,180,208,189,208,176,208,179,208,190,208,180,209,139,208,183,208,189,208, +176,209,142,208,188,208,190,208,179,209,131,208,180,209,128,209,131,208,179,208, +178,209,129,208,181,208,185,208,184,208,180,208,181,209,130,208,186,208,184,208, +189,208,190,208,190,208,180,208,189,208,190,208,180,208,181,208,187,208,176,208, +180,208,181,208,187,208,181,209,129,209,128,208,190,208,186,208,184,209,142,208, +189,209,143,208,178,208,181,209,129,209,140,208,149,209,129,209,130,209,140,209, +128,208,176,208,183,208,176,208,189,208,176,209,136,208,184,216,167,217,132,217, +132,217,135,216,167,217,132,216,170,217,138,216,172,217,133,217,138,216,185,216, +174,216,167,216,181,216,169,216,167,217,132,216,176,217,138,216,185,217,132,217, +138,217,135,216,172,216,175,217,138,216,175,216,167,217,132,216,162,217,134,216, +167,217,132,216,177,216,175,216,170,216,173,217,131,217,133,216,181,217,129,216, +173,216,169,217,131,216,167,217,134,216,170,216,167,217,132,217,132,217,138,217, +138,217,131,217,136,217,134,216,180,216,168,217,131,216,169,217,129,217,138,217, +135,216,167,216,168,217,134,216,167,216,170,216,173,217,136,216,167,216,161,216, +163,217,131,216,171,216,177,216,174,217,132,216,167,217,132,216,167,217,132,216, +173,216,168,216,175,217,132,217,138,217,132,216,175,216,177,217,136,216,179,216, +167,216,182,216,186,216,183,216,170,217,131,217,136,217,134,217,135,217,134,216, +167,217,131,216,179,216,167,216,173,216,169,217,134,216,167,216,175,217,138,216, +167,217,132,216,183,216,168,216,185,217,132,217,138,217,131,216,180,217,131,216, +177,216,167,217,138,217,133,217,131,217,134,217,133,217,134,217,135,216,167,216, +180,216,177,217,131,216,169,216,177,216,166,217,138,216,179,217,134,216,180,217, +138,216,183,217,133,216,167,216,176,216,167,216,167,217,132,217,129,217,134,216, +180,216,168,216,167,216,168,216,170,216,185,216,168,216,177,216,177,216,173,217, +133,216,169,217,131,216,167,217,129,216,169,217,138,217,130,217,136,217,132,217, +133,216,177,217,131,216,178,217,131,217,132,217,133,216,169,216,163,216,173,217, +133,216,175,217,130,217,132,216,168,217,138,217,138,216,185,217,134,217,138,216, +181,217,136,216,177,216,169,216,183,216,177,217,138,217,130,216,180,216,167,216, +177,217,131,216,172,217,136,216,167,217,132,216,163,216,174,216,177,217,137,217, +133,216,185,217,134,216,167,216,167,216,168,216,173,216,171,216,185,216,177,217, +136,216,182,216,168,216,180,217,131,217,132,217,133,216,179,216,172,217,132,216, +168,217,134,216,167,217,134,216,174,216,167,217,132,216,175,217,131,216,170,216, +167,216,168,217,131,217,132,217,138,216,169,216,168,216,175,217,136,217,134,216, +163,217,138,216,182,216,167,217,138,217,136,216,172,216,175,217,129,216,177,217, +138,217,130,217,131,216,170,216,168,216,170,216,163,217,129,216,182,217,132,217, +133,216,183,216,168,216,174,216,167,217,131,216,171,216,177,216,168,216,167,216, +177,217,131,216,167,217,129,216,182,217,132,216,167,216,173,217,132,217,137,217, +134,217,129,216,179,217,135,216,163,217,138,216,167,217,133,216,177,216,175,217, +136,216,175,216,163,217,134,217,135,216,167,216,175,217,138,217,134,216,167,216, +167,217,132,216,167,217,134,217,133,216,185,216,177,216,182,216,170,216,185,217, +132,217,133,216,175,216,167,216,174,217,132,217,133,217,133,217,131,217,134,0,0, +0,0,0,0,0,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,0,1,2,3,4,5,6,7,7,6, +5,4,3,2,1,0,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,16,17,18,19,20,21,22,23, +23,22,21,20,19,18,17,16,24,25,26,27,28,29,30,31,31,30,29,28,27,26,25,24,255,255, +255,255,0,0,0,0,0,0,0,0,255,255,255,255,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0, +3,0,0,0,255,255,0,1,0,0,0,1,0,0,255,255,0,1,0,0,0,8,0,8,0,8,0,8,0,0,0,1,0,2,0,3, +0,4,0,5,0,6,0,7,114,101,115,111,117,114,99,101,115,99,111,117,110,116,114,105, +101,115,113,117,101,115,116,105,111,110,115,101,113,117,105,112,109,101,110,116, +99,111,109,109,117,110,105,116,121,97,118,97,105,108,97,98,108,101,104,105,103, +104,108,105,103,104,116,68,84,68,47,120,104,116,109,108,109,97,114,107,101,116, +105,110,103,107,110,111,119,108,101,100,103,101,115,111,109,101,116,104,105,110, +103,99,111,110,116,97,105,110,101,114,100,105,114,101,99,116,105,111,110,115,117 +,98,115,99,114,105,98,101,97,100,118,101,114,116,105,115,101,99,104,97,114,97,99 +,116,101,114,34,32,118,97,108,117,101,61,34,60,47,115,101,108,101,99,116,62,65, +117,115,116,114,97,108,105,97,34,32,99,108,97,115,115,61,34,115,105,116,117,97, +116,105,111,110,97,117,116,104,111,114,105,116,121,102,111,108,108,111,119,105, +110,103,112,114,105,109,97,114,105,108,121,111,112,101,114,97,116,105,111,110,99 +,104,97,108,108,101,110,103,101,100,101,118,101,108,111,112,101,100,97,110,111, +110,121,109,111,117,115,102,117,110,99,116,105,111,110,32,102,117,110,99,116,105 +,111,110,115,99,111,109,112,97,110,105,101,115,115,116,114,117,99,116,117,114, +101,97,103,114,101,101,109,101,110,116,34,32,116,105,116,108,101,61,34,112,111, +116,101,110,116,105,97,108,101,100,117,99,97,116,105,111,110,97,114,103,117,109, +101,110,116,115,115,101,99,111,110,100,97,114,121,99,111,112,121,114,105,103,104 +,116,108,97,110,103,117,97,103,101,115,101,120,99,108,117,115,105,118,101,99,111 +,110,100,105,116,105,111,110,60,47,102,111,114,109,62,13,10,115,116,97,116,101, +109,101,110,116,97,116,116,101,110,116,105,111,110,66,105,111,103,114,97,112,104 +,121,125,32,101,108,115,101,32,123,10,115,111,108,117,116,105,111,110,115,119, +104,101,110,32,116,104,101,32,65,110,97,108,121,116,105,99,115,116,101,109,112, +108,97,116,101,115,100,97,110,103,101,114,111,117,115,115,97,116,101,108,108,105 +,116,101,100,111,99,117,109,101,110,116,115,112,117,98,108,105,115,104,101,114, +105,109,112,111,114,116,97,110,116,112,114,111,116,111,116,121,112,101,105,110, +102,108,117,101,110,99,101,38,114,97,113,117,111,59,60,47,101,102,102,101,99,116 +,105,118,101,103,101,110,101,114,97,108,108,121,116,114,97,110,115,102,111,114, +109,98,101,97,117,116,105,102,117,108,116,114,97,110,115,112,111,114,116,111,114 +,103,97,110,105,122,101,100,112,117,98,108,105,115,104,101,100,112,114,111,109, +105,110,101,110,116,117,110,116,105,108,32,116,104,101,116,104,117,109,98,110,97 +,105,108,78,97,116,105,111,110,97,108,32,46,102,111,99,117,115,40,41,59,111,118, +101,114,32,116,104,101,32,109,105,103,114,97,116,105,111,110,97,110,110,111,117, +110,99,101,100,102,111,111,116,101,114,34,62,10,101,120,99,101,112,116,105,111, +110,108,101,115,115,32,116,104,97,110,101,120,112,101,110,115,105,118,101,102, +111,114,109,97,116,105,111,110,102,114,97,109,101,119,111,114,107,116,101,114, +114,105,116,111,114,121,110,100,105,99,97,116,105,111,110,99,117,114,114,101,110 +,116,108,121,99,108,97,115,115,78,97,109,101,99,114,105,116,105,99,105,115,109, +116,114,97,100,105,116,105,111,110,101,108,115,101,119,104,101,114,101,65,108, +101,120,97,110,100,101,114,97,112,112,111,105,110,116,101,100,109,97,116,101,114 +,105,97,108,115,98,114,111,97,100,99,97,115,116,109,101,110,116,105,111,110,101, +100,97,102,102,105,108,105,97,116,101,60,47,111,112,116,105,111,110,62,116,114, +101,97,116,109,101,110,116,100,105,102,102,101,114,101,110,116,47,100,101,102,97 +,117,108,116,46,80,114,101,115,105,100,101,110,116,111,110,99,108,105,99,107,61, +34,98,105,111,103,114,97,112,104,121,111,116,104,101,114,119,105,115,101,112,101 +,114,109,97,110,101,110,116,70,114,97,110,195,167,97,105,115,72,111,108,108,121, +119,111,111,100,101,120,112,97,110,115,105,111,110,115,116,97,110,100,97,114,100 +,115,60,47,115,116,121,108,101,62,10,114,101,100,117,99,116,105,111,110,68,101, +99,101,109,98,101,114,32,112,114,101,102,101,114,114,101,100,67,97,109,98,114, +105,100,103,101,111,112,112,111,110,101,110,116,115,66,117,115,105,110,101,115, +115,32,99,111,110,102,117,115,105,111,110,62,10,60,116,105,116,108,101,62,112, +114,101,115,101,110,116,101,100,101,120,112,108,97,105,110,101,100,100,111,101, +115,32,110,111,116,32,119,111,114,108,100,119,105,100,101,105,110,116,101,114, +102,97,99,101,112,111,115,105,116,105,111,110,115,110,101,119,115,112,97,112,101 +,114,60,47,116,97,98,108,101,62,10,109,111,117,110,116,97,105,110,115,108,105, +107,101,32,116,104,101,32,101,115,115,101,110,116,105,97,108,102,105,110,97,110, +99,105,97,108,115,101,108,101,99,116,105,111,110,97,99,116,105,111,110,61,34,47, +97,98,97,110,100,111,110,101,100,69,100,117,99,97,116,105,111,110,112,97,114,115 +,101,73,110,116,40,115,116,97,98,105,108,105,116,121,117,110,97,98,108,101,32, +116,111,60,47,116,105,116,108,101,62,10,114,101,108,97,116,105,111,110,115,78, +111,116,101,32,116,104,97,116,101,102,102,105,99,105,101,110,116,112,101,114,102 +,111,114,109,101,100,116,119,111,32,121,101,97,114,115,83,105,110,99,101,32,116, +104,101,116,104,101,114,101,102,111,114,101,119,114,97,112,112,101,114,34,62,97, +108,116,101,114,110,97,116,101,105,110,99,114,101,97,115,101,100,66,97,116,116, +108,101,32,111,102,112,101,114,99,101,105,118,101,100,116,114,121,105,110,103,32 +,116,111,110,101,99,101,115,115,97,114,121,112,111,114,116,114,97,121,101,100, +101,108,101,99,116,105,111,110,115,69,108,105,122,97,98,101,116,104,60,47,105, +102,114,97,109,101,62,100,105,115,99,111,118,101,114,121,105,110,115,117,114,97, +110,99,101,115,46,108,101,110,103,116,104,59,108,101,103,101,110,100,97,114,121, +71,101,111,103,114,97,112,104,121,99,97,110,100,105,100,97,116,101,99,111,114, +112,111,114,97,116,101,115,111,109,101,116,105,109,101,115,115,101,114,118,105, +99,101,115,46,105,110,104,101,114,105,116,101,100,60,47,115,116,114,111,110,103, +62,67,111,109,109,117,110,105,116,121,114,101,108,105,103,105,111,117,115,108, +111,99,97,116,105,111,110,115,67,111,109,109,105,116,116,101,101,98,117,105,108, +100,105,110,103,115,116,104,101,32,119,111,114,108,100,110,111,32,108,111,110, +103,101,114,98,101,103,105,110,110,105,110,103,114,101,102,101,114,101,110,99, +101,99,97,110,110,111,116,32,98,101,102,114,101,113,117,101,110,99,121,116,121, +112,105,99,97,108,108,121,105,110,116,111,32,116,104,101,32,114,101,108,97,116, +105,118,101,59,114,101,99,111,114,100,105,110,103,112,114,101,115,105,100,101, +110,116,105,110,105,116,105,97,108,108,121,116,101,99,104,110,105,113,117,101, +116,104,101,32,111,116,104,101,114,105,116,32,99,97,110,32,98,101,101,120,105, +115,116,101,110,99,101,117,110,100,101,114,108,105,110,101,116,104,105,115,32, +116,105,109,101,116,101,108,101,112,104,111,110,101,105,116,101,109,115,99,111, +112,101,112,114,97,99,116,105,99,101,115,97,100,118,97,110,116,97,103,101,41,59, +114,101,116,117,114,110,32,70,111,114,32,111,116,104,101,114,112,114,111,118,105 +,100,105,110,103,100,101,109,111,99,114,97,99,121,98,111,116,104,32,116,104,101, +32,101,120,116,101,110,115,105,118,101,115,117,102,102,101,114,105,110,103,115, +117,112,112,111,114,116,101,100,99,111,109,112,117,116,101,114,115,32,102,117, +110,99,116,105,111,110,112,114,97,99,116,105,99,97,108,115,97,105,100,32,116,104 +,97,116,105,116,32,109,97,121,32,98,101,69,110,103,108,105,115,104,60,47,102,114 +,111,109,32,116,104,101,32,115,99,104,101,100,117,108,101,100,100,111,119,110, +108,111,97,100,115,60,47,108,97,98,101,108,62,10,115,117,115,112,101,99,116,101, +100,109,97,114,103,105,110,58,32,48,115,112,105,114,105,116,117,97,108,60,47,104 +,101,97,100,62,10,10,109,105,99,114,111,115,111,102,116,103,114,97,100,117,97, +108,108,121,100,105,115,99,117,115,115,101,100,104,101,32,98,101,99,97,109,101, +101,120,101,99,117,116,105,118,101,106,113,117,101,114,121,46,106,115,104,111, +117,115,101,104,111,108,100,99,111,110,102,105,114,109,101,100,112,117,114,99, +104,97,115,101,100,108,105,116,101,114,97,108,108,121,100,101,115,116,114,111, +121,101,100,117,112,32,116,111,32,116,104,101,118,97,114,105,97,116,105,111,110, +114,101,109,97,105,110,105,110,103,105,116,32,105,115,32,110,111,116,99,101,110, +116,117,114,105,101,115,74,97,112,97,110,101,115,101,32,97,109,111,110,103,32, +116,104,101,99,111,109,112,108,101,116,101,100,97,108,103,111,114,105,116,104, +109,105,110,116,101,114,101,115,116,115,114,101,98,101,108,108,105,111,110,117, +110,100,101,102,105,110,101,100,101,110,99,111,117,114,97,103,101,114,101,115, +105,122,97,98,108,101,105,110,118,111,108,118,105,110,103,115,101,110,115,105, +116,105,118,101,117,110,105,118,101,114,115,97,108,112,114,111,118,105,115,105, +111,110,40,97,108,116,104,111,117,103,104,102,101,97,116,117,114,105,110,103,99, +111,110,100,117,99,116,101,100,41,44,32,119,104,105,99,104,32,99,111,110,116,105 +,110,117,101,100,45,104,101,97,100,101,114,34,62,70,101,98,114,117,97,114,121,32 +,110,117,109,101,114,111,117,115,32,111,118,101,114,102,108,111,119,58,99,111, +109,112,111,110,101,110,116,102,114,97,103,109,101,110,116,115,101,120,99,101, +108,108,101,110,116,99,111,108,115,112,97,110,61,34,116,101,99,104,110,105,99,97 +,108,110,101,97,114,32,116,104,101,32,65,100,118,97,110,99,101,100,32,115,111, +117,114,99,101,32,111,102,101,120,112,114,101,115,115,101,100,72,111,110,103,32, +75,111,110,103,32,70,97,99,101,98,111,111,107,109,117,108,116,105,112,108,101,32 +,109,101,99,104,97,110,105,115,109,101,108,101,118,97,116,105,111,110,111,102, +102,101,110,115,105,118,101,60,47,102,111,114,109,62,10,9,115,112,111,110,115, +111,114,101,100,100,111,99,117,109,101,110,116,46,111,114,32,38,113,117,111,116, +59,116,104,101,114,101,32,97,114,101,116,104,111,115,101,32,119,104,111,109,111, +118,101,109,101,110,116,115,112,114,111,99,101,115,115,101,115,100,105,102,102, +105,99,117,108,116,115,117,98,109,105,116,116,101,100,114,101,99,111,109,109,101 +,110,100,99,111,110,118,105,110,99,101,100,112,114,111,109,111,116,105,110,103, +34,32,119,105,100,116,104,61,34,46,114,101,112,108,97,99,101,40,99,108,97,115, +115,105,99,97,108,99,111,97,108,105,116,105,111,110,104,105,115,32,102,105,114, +115,116,100,101,99,105,115,105,111,110,115,97,115,115,105,115,116,97,110,116,105 +,110,100,105,99,97,116,101,100,101,118,111,108,117,116,105,111,110,45,119,114,97 +,112,112,101,114,34,101,110,111,117,103,104,32,116,111,97,108,111,110,103,32,116 +,104,101,100,101,108,105,118,101,114,101,100,45,45,62,13,10,60,33,45,45,65,109, +101,114,105,99,97,110,32,112,114,111,116,101,99,116,101,100,78,111,118,101,109, +98,101,114,32,60,47,115,116,121,108,101,62,60,102,117,114,110,105,116,117,114, +101,73,110,116,101,114,110,101,116,32,32,111,110,98,108,117,114,61,34,115,117, +115,112,101,110,100,101,100,114,101,99,105,112,105,101,110,116,98,97,115,101,100 +,32,111,110,32,77,111,114,101,111,118,101,114,44,97,98,111,108,105,115,104,101, +100,99,111,108,108,101,99,116,101,100,119,101,114,101,32,109,97,100,101,101,109, +111,116,105,111,110,97,108,101,109,101,114,103,101,110,99,121,110,97,114,114,97, +116,105,118,101,97,100,118,111,99,97,116,101,115,112,120,59,98,111,114,100,101, +114,99,111,109,109,105,116,116,101,100,100,105,114,61,34,108,116,114,34,101,109, +112,108,111,121,101,101,115,114,101,115,101,97,114,99,104,46,32,115,101,108,101, +99,116,101,100,115,117,99,99,101,115,115,111,114,99,117,115,116,111,109,101,114, +115,100,105,115,112,108,97,121,101,100,83,101,112,116,101,109,98,101,114,97,100, +100,67,108,97,115,115,40,70,97,99,101,98,111,111,107,32,115,117,103,103,101,115, +116,101,100,97,110,100,32,108,97,116,101,114,111,112,101,114,97,116,105,110,103, +101,108,97,98,111,114,97,116,101,83,111,109,101,116,105,109,101,115,73,110,115, +116,105,116,117,116,101,99,101,114,116,97,105,110,108,121,105,110,115,116,97,108 +,108,101,100,102,111,108,108,111,119,101,114,115,74,101,114,117,115,97,108,101, +109,116,104,101,121,32,104,97,118,101,99,111,109,112,117,116,105,110,103,103,101 +,110,101,114,97,116,101,100,112,114,111,118,105,110,99,101,115,103,117,97,114,97 +,110,116,101,101,97,114,98,105,116,114,97,114,121,114,101,99,111,103,110,105,122 +,101,119,97,110,116,101,100,32,116,111,112,120,59,119,105,100,116,104,58,116,104 +,101,111,114,121,32,111,102,98,101,104,97,118,105,111,117,114,87,104,105,108,101 +,32,116,104,101,101,115,116,105,109,97,116,101,100,98,101,103,97,110,32,116,111, +32,105,116,32,98,101,99,97,109,101,109,97,103,110,105,116,117,100,101,109,117, +115,116,32,104,97,118,101,109,111,114,101,32,116,104,97,110,68,105,114,101,99, +116,111,114,121,101,120,116,101,110,115,105,111,110,115,101,99,114,101,116,97, +114,121,110,97,116,117,114,97,108,108,121,111,99,99,117,114,114,105,110,103,118, +97,114,105,97,98,108,101,115,103,105,118,101,110,32,116,104,101,112,108,97,116, +102,111,114,109,46,60,47,108,97,98,101,108,62,60,102,97,105,108,101,100,32,116, +111,99,111,109,112,111,117,110,100,115,107,105,110,100,115,32,111,102,32,115,111 +,99,105,101,116,105,101,115,97,108,111,110,103,115,105,100,101,32,45,45,38,103, +116,59,10,10,115,111,117,116,104,119,101,115,116,116,104,101,32,114,105,103,104, +116,114,97,100,105,97,116,105,111,110,109,97,121,32,104,97,118,101,32,117,110, +101,115,99,97,112,101,40,115,112,111,107,101,110,32,105,110,34,32,104,114,101, +102,61,34,47,112,114,111,103,114,97,109,109,101,111,110,108,121,32,116,104,101, +32,99,111,109,101,32,102,114,111,109,100,105,114,101,99,116,111,114,121,98,117, +114,105,101,100,32,105,110,97,32,115,105,109,105,108,97,114,116,104,101,121,32, +119,101,114,101,60,47,102,111,110,116,62,60,47,78,111,114,119,101,103,105,97,110 +,115,112,101,99,105,102,105,101,100,112,114,111,100,117,99,105,110,103,112,97, +115,115,101,110,103,101,114,40,110,101,119,32,68,97,116,101,116,101,109,112,111, +114,97,114,121,102,105,99,116,105,111,110,97,108,65,102,116,101,114,32,116,104, +101,101,113,117,97,116,105,111,110,115,100,111,119,110,108,111,97,100,46,114,101 +,103,117,108,97,114,108,121,100,101,118,101,108,111,112,101,114,97,98,111,118, +101,32,116,104,101,108,105,110,107,101,100,32,116,111,112,104,101,110,111,109, +101,110,97,112,101,114,105,111,100,32,111,102,116,111,111,108,116,105,112,34,62, +115,117,98,115,116,97,110,99,101,97,117,116,111,109,97,116,105,99,97,115,112,101 +,99,116,32,111,102,65,109,111,110,103,32,116,104,101,99,111,110,110,101,99,116, +101,100,101,115,116,105,109,97,116,101,115,65,105,114,32,70,111,114,99,101,115, +121,115,116,101,109,32,111,102,111,98,106,101,99,116,105,118,101,105,109,109,101 +,100,105,97,116,101,109,97,107,105,110,103,32,105,116,112,97,105,110,116,105,110 +,103,115,99,111,110,113,117,101,114,101,100,97,114,101,32,115,116,105,108,108, +112,114,111,99,101,100,117,114,101,103,114,111,119,116,104,32,111,102,104,101,97 +,100,101,100,32,98,121,69,117,114,111,112,101,97,110,32,100,105,118,105,115,105, +111,110,115,109,111,108,101,99,117,108,101,115,102,114,97,110,99,104,105,115,101 +,105,110,116,101,110,116,105,111,110,97,116,116,114,97,99,116,101,100,99,104,105 +,108,100,104,111,111,100,97,108,115,111,32,117,115,101,100,100,101,100,105,99,97 +,116,101,100,115,105,110,103,97,112,111,114,101,100,101,103,114,101,101,32,111, +102,102,97,116,104,101,114,32,111,102,99,111,110,102,108,105,99,116,115,60,47,97 +,62,60,47,112,62,10,99,97,109,101,32,102,114,111,109,119,101,114,101,32,117,115, +101,100,110,111,116,101,32,116,104,97,116,114,101,99,101,105,118,105,110,103,69, +120,101,99,117,116,105,118,101,101,118,101,110,32,109,111,114,101,97,99,99,101, +115,115,32,116,111,99,111,109,109,97,110,100,101,114,80,111,108,105,116,105,99, +97,108,109,117,115,105,99,105,97,110,115,100,101,108,105,99,105,111,117,115,112, +114,105,115,111,110,101,114,115,97,100,118,101,110,116,32,111,102,85,84,70,45,56 +,34,32,47,62,60,33,91,67,68,65,84,65,91,34,62,67,111,110,116,97,99,116,83,111, +117,116,104,101,114,110,32,98,103,99,111,108,111,114,61,34,115,101,114,105,101, +115,32,111,102,46,32,73,116,32,119,97,115,32,105,110,32,69,117,114,111,112,101, +112,101,114,109,105,116,116,101,100,118,97,108,105,100,97,116,101,46,97,112,112, +101,97,114,105,110,103,111,102,102,105,99,105,97,108,115,115,101,114,105,111,117 +,115,108,121,45,108,97,110,103,117,97,103,101,105,110,105,116,105,97,116,101,100 +,101,120,116,101,110,100,105,110,103,108,111,110,103,45,116,101,114,109,105,110, +102,108,97,116,105,111,110,115,117,99,104,32,116,104,97,116,103,101,116,67,111, +111,107,105,101,109,97,114,107,101,100,32,98,121,60,47,98,117,116,116,111,110,62 +,105,109,112,108,101,109,101,110,116,98,117,116,32,105,116,32,105,115,105,110,99 +,114,101,97,115,101,115,100,111,119,110,32,116,104,101,32,114,101,113,117,105, +114,105,110,103,100,101,112,101,110,100,101,110,116,45,45,62,10,60,33,45,45,32, +105,110,116,101,114,118,105,101,119,87,105,116,104,32,116,104,101,32,99,111,112, +105,101,115,32,111,102,99,111,110,115,101,110,115,117,115,119,97,115,32,98,117, +105,108,116,86,101,110,101,122,117,101,108,97,40,102,111,114,109,101,114,108,121 +,116,104,101,32,115,116,97,116,101,112,101,114,115,111,110,110,101,108,115,116, +114,97,116,101,103,105,99,102,97,118,111,117,114,32,111,102,105,110,118,101,110, +116,105,111,110,87,105,107,105,112,101,100,105,97,99,111,110,116,105,110,101,110 +,116,118,105,114,116,117,97,108,108,121,119,104,105,99,104,32,119,97,115,112,114 +,105,110,99,105,112,108,101,67,111,109,112,108,101,116,101,32,105,100,101,110, +116,105,99,97,108,115,104,111,119,32,116,104,97,116,112,114,105,109,105,116,105, +118,101,97,119,97,121,32,102,114,111,109,109,111,108,101,99,117,108,97,114,112, +114,101,99,105,115,101,108,121,100,105,115,115,111,108,118,101,100,85,110,100, +101,114,32,116,104,101,118,101,114,115,105,111,110,61,34,62,38,110,98,115,112,59 +,60,47,73,116,32,105,115,32,116,104,101,32,84,104,105,115,32,105,115,32,119,105, +108,108,32,104,97,118,101,111,114,103,97,110,105,115,109,115,115,111,109,101,32, +116,105,109,101,70,114,105,101,100,114,105,99,104,119,97,115,32,102,105,114,115, +116,116,104,101,32,111,110,108,121,32,102,97,99,116,32,116,104,97,116,102,111, +114,109,32,105,100,61,34,112,114,101,99,101,100,105,110,103,84,101,99,104,110, +105,99,97,108,112,104,121,115,105,99,105,115,116,111,99,99,117,114,115,32,105, +110,110,97,118,105,103,97,116,111,114,115,101,99,116,105,111,110,34,62,115,112, +97,110,32,105,100,61,34,115,111,117,103,104,116,32,116,111,98,101,108,111,119,32 +,116,104,101,115,117,114,118,105,118,105,110,103,125,60,47,115,116,121,108,101, +62,104,105,115,32,100,101,97,116,104,97,115,32,105,110,32,116,104,101,99,97,117, +115,101,100,32,98,121,112,97,114,116,105,97,108,108,121,101,120,105,115,116,105, +110,103,32,117,115,105,110,103,32,116,104,101,119,97,115,32,103,105,118,101,110, +97,32,108,105,115,116,32,111,102,108,101,118,101,108,115,32,111,102,110,111,116, +105,111,110,32,111,102,79,102,102,105,99,105,97,108,32,100,105,115,109,105,115, +115,101,100,115,99,105,101,110,116,105,115,116,114,101,115,101,109,98,108,101, +115,100,117,112,108,105,99,97,116,101,101,120,112,108,111,115,105,118,101,114, +101,99,111,118,101,114,101,100,97,108,108,32,111,116,104,101,114,103,97,108,108, +101,114,105,101,115,123,112,97,100,100,105,110,103,58,112,101,111,112,108,101,32 +,111,102,114,101,103,105,111,110,32,111,102,97,100,100,114,101,115,115,101,115, +97,115,115,111,99,105,97,116,101,105,109,103,32,97,108,116,61,34,105,110,32,109, +111,100,101,114,110,115,104,111,117,108,100,32,98,101,109,101,116,104,111,100,32 +,111,102,114,101,112,111,114,116,105,110,103,116,105,109,101,115,116,97,109,112, +110,101,101,100,101,100,32,116,111,116,104,101,32,71,114,101,97,116,114,101,103, +97,114,100,105,110,103,115,101,101,109,101,100,32,116,111,118,105,101,119,101, +100,32,97,115,105,109,112,97,99,116,32,111,110,105,100,101,97,32,116,104,97,116, +116,104,101,32,87,111,114,108,100,104,101,105,103,104,116,32,111,102,101,120,112 +,97,110,100,105,110,103,84,104,101,115,101,32,97,114,101,99,117,114,114,101,110, +116,34,62,99,97,114,101,102,117,108,108,121,109,97,105,110,116,97,105,110,115,99 +,104,97,114,103,101,32,111,102,67,108,97,115,115,105,99,97,108,97,100,100,114, +101,115,115,101,100,112,114,101,100,105,99,116,101,100,111,119,110,101,114,115, +104,105,112,60,100,105,118,32,105,100,61,34,114,105,103,104,116,34,62,13,10,114, +101,115,105,100,101,110,99,101,108,101,97,118,101,32,116,104,101,99,111,110,116, +101,110,116,34,62,97,114,101,32,111,102,116,101,110,32,32,125,41,40,41,59,13,10, +112,114,111,98,97,98,108,121,32,80,114,111,102,101,115,115,111,114,45,98,117,116 +,116,111,110,34,32,114,101,115,112,111,110,100,101,100,115,97,121,115,32,116,104 +,97,116,104,97,100,32,116,111,32,98,101,112,108,97,99,101,100,32,105,110,72,117, +110,103,97,114,105,97,110,115,116,97,116,117,115,32,111,102,115,101,114,118,101, +115,32,97,115,85,110,105,118,101,114,115,97,108,101,120,101,99,117,116,105,111, +110,97,103,103,114,101,103,97,116,101,102,111,114,32,119,104,105,99,104,105,110, +102,101,99,116,105,111,110,97,103,114,101,101,100,32,116,111,104,111,119,101,118 +,101,114,44,32,112,111,112,117,108,97,114,34,62,112,108,97,99,101,100,32,111,110 +,99,111,110,115,116,114,117,99,116,101,108,101,99,116,111,114,97,108,115,121,109 +,98,111,108,32,111,102,105,110,99,108,117,100,105,110,103,114,101,116,117,114, +110,32,116,111,97,114,99,104,105,116,101,99,116,67,104,114,105,115,116,105,97, +110,112,114,101,118,105,111,117,115,32,108,105,118,105,110,103,32,105,110,101,97 +,115,105,101,114,32,116,111,112,114,111,102,101,115,115,111,114,10,38,108,116,59 +,33,45,45,32,101,102,102,101,99,116,32,111,102,97,110,97,108,121,116,105,99,115, +119,97,115,32,116,97,107,101,110,119,104,101,114,101,32,116,104,101,116,111,111, +107,32,111,118,101,114,98,101,108,105,101,102,32,105,110,65,102,114,105,107,97, +97,110,115,97,115,32,102,97,114,32,97,115,112,114,101,118,101,110,116,101,100, +119,111,114,107,32,119,105,116,104,97,32,115,112,101,99,105,97,108,60,102,105, +101,108,100,115,101,116,67,104,114,105,115,116,109,97,115,82,101,116,114,105,101 +,118,101,100,10,10,73,110,32,116,104,101,32,98,97,99,107,32,105,110,116,111,110, +111,114,116,104,101,97,115,116,109,97,103,97,122,105,110,101,115,62,60,115,116, +114,111,110,103,62,99,111,109,109,105,116,116,101,101,103,111,118,101,114,110, +105,110,103,103,114,111,117,112,115,32,111,102,115,116,111,114,101,100,32,105, +110,101,115,116,97,98,108,105,115,104,97,32,103,101,110,101,114,97,108,105,116, +115,32,102,105,114,115,116,116,104,101,105,114,32,111,119,110,112,111,112,117, +108,97,116,101,100,97,110,32,111,98,106,101,99,116,67,97,114,105,98,98,101,97, +110,97,108,108,111,119,32,116,104,101,100,105,115,116,114,105,99,116,115,119,105 +,115,99,111,110,115,105,110,108,111,99,97,116,105,111,110,46,59,32,119,105,100, +116,104,58,32,105,110,104,97,98,105,116,101,100,83,111,99,105,97,108,105,115,116 +,74,97,110,117,97,114,121,32,49,60,47,102,111,111,116,101,114,62,115,105,109,105 +,108,97,114,108,121,99,104,111,105,99,101,32,111,102,116,104,101,32,115,97,109, +101,32,115,112,101,99,105,102,105,99,32,98,117,115,105,110,101,115,115,32,84,104 +,101,32,102,105,114,115,116,46,108,101,110,103,116,104,59,32,100,101,115,105,114 +,101,32,116,111,100,101,97,108,32,119,105,116,104,115,105,110,99,101,32,116,104, +101,117,115,101,114,65,103,101,110,116,99,111,110,99,101,105,118,101,100,105,110 +,100,101,120,46,112,104,112,97,115,32,38,113,117,111,116,59,101,110,103,97,103, +101,32,105,110,114,101,99,101,110,116,108,121,44,102,101,119,32,121,101,97,114, +115,119,101,114,101,32,97,108,115,111,10,60,104,101,97,100,62,10,60,101,100,105, +116,101,100,32,98,121,97,114,101,32,107,110,111,119,110,99,105,116,105,101,115, +32,105,110,97,99,99,101,115,115,107,101,121,99,111,110,100,101,109,110,101,100, +97,108,115,111,32,104,97,118,101,115,101,114,118,105,99,101,115,44,102,97,109, +105,108,121,32,111,102,83,99,104,111,111,108,32,111,102,99,111,110,118,101,114, +116,101,100,110,97,116,117,114,101,32,111,102,32,108,97,110,103,117,97,103,101, +109,105,110,105,115,116,101,114,115,60,47,111,98,106,101,99,116,62,116,104,101, +114,101,32,105,115,32,97,32,112,111,112,117,108,97,114,115,101,113,117,101,110, +99,101,115,97,100,118,111,99,97,116,101,100,84,104,101,121,32,119,101,114,101,97 +,110,121,32,111,116,104,101,114,108,111,99,97,116,105,111,110,61,101,110,116,101 +,114,32,116,104,101,109,117,99,104,32,109,111,114,101,114,101,102,108,101,99,116 +,101,100,119,97,115,32,110,97,109,101,100,111,114,105,103,105,110,97,108,32,97, +32,116,121,112,105,99,97,108,119,104,101,110,32,116,104,101,121,101,110,103,105, +110,101,101,114,115,99,111,117,108,100,32,110,111,116,114,101,115,105,100,101, +110,116,115,119,101,100,110,101,115,100,97,121,116,104,101,32,116,104,105,114, +100,32,112,114,111,100,117,99,116,115,74,97,110,117,97,114,121,32,50,119,104,97, +116,32,116,104,101,121,97,32,99,101,114,116,97,105,110,114,101,97,99,116,105,111 +,110,115,112,114,111,99,101,115,115,111,114,97,102,116,101,114,32,104,105,115, +116,104,101,32,108,97,115,116,32,99,111,110,116,97,105,110,101,100,34,62,60,47, +100,105,118,62,10,60,47,97,62,60,47,116,100,62,100,101,112,101,110,100,32,111, +110,115,101,97,114,99,104,34,62,10,112,105,101,99,101,115,32,111,102,99,111,109, +112,101,116,105,110,103,82,101,102,101,114,101,110,99,101,116,101,110,110,101, +115,115,101,101,119,104,105,99,104,32,104,97,115,32,118,101,114,115,105,111,110, +61,60,47,115,112,97,110,62,32,60,60,47,104,101,97,100,101,114,62,103,105,118,101 +,115,32,116,104,101,104,105,115,116,111,114,105,97,110,118,97,108,117,101,61,34, +34,62,112,97,100,100,105,110,103,58,48,118,105,101,119,32,116,104,97,116,116,111 +,103,101,116,104,101,114,44,116,104,101,32,109,111,115,116,32,119,97,115,32,102, +111,117,110,100,115,117,98,115,101,116,32,111,102,97,116,116,97,99,107,32,111, +110,99,104,105,108,100,114,101,110,44,112,111,105,110,116,115,32,111,102,112,101 +,114,115,111,110,97,108,32,112,111,115,105,116,105,111,110,58,97,108,108,101,103 +,101,100,108,121,67,108,101,118,101,108,97,110,100,119,97,115,32,108,97,116,101, +114,97,110,100,32,97,102,116,101,114,97,114,101,32,103,105,118,101,110,119,97, +115,32,115,116,105,108,108,115,99,114,111,108,108,105,110,103,100,101,115,105, +103,110,32,111,102,109,97,107,101,115,32,116,104,101,109,117,99,104,32,108,101, +115,115,65,109,101,114,105,99,97,110,115,46,10,10,65,102,116,101,114,32,44,32,98 +,117,116,32,116,104,101,77,117,115,101,117,109,32,111,102,108,111,117,105,115, +105,97,110,97,40,102,114,111,109,32,116,104,101,109,105,110,110,101,115,111,116, +97,112,97,114,116,105,99,108,101,115,97,32,112,114,111,99,101,115,115,68,111,109 +,105,110,105,99,97,110,118,111,108,117,109,101,32,111,102,114,101,116,117,114, +110,105,110,103,100,101,102,101,110,115,105,118,101,48,48,112,120,124,114,105, +103,104,109,97,100,101,32,102,114,111,109,109,111,117,115,101,111,118,101,114,34 +,32,115,116,121,108,101,61,34,115,116,97,116,101,115,32,111,102,40,119,104,105, +99,104,32,105,115,99,111,110,116,105,110,117,101,115,70,114,97,110,99,105,115,99 +,111,98,117,105,108,100,105,110,103,32,119,105,116,104,111,117,116,32,97,119,105 +,116,104,32,115,111,109,101,119,104,111,32,119,111,117,108,100,97,32,102,111,114 +,109,32,111,102,97,32,112,97,114,116,32,111,102,98,101,102,111,114,101,32,105, +116,107,110,111,119,110,32,97,115,32,32,83,101,114,118,105,99,101,115,108,111,99 +,97,116,105,111,110,32,97,110,100,32,111,102,116,101,110,109,101,97,115,117,114, +105,110,103,97,110,100,32,105,116,32,105,115,112,97,112,101,114,98,97,99,107,118 +,97,108,117,101,115,32,111,102,13,10,60,116,105,116,108,101,62,61,32,119,105,110 +,100,111,119,46,100,101,116,101,114,109,105,110,101,101,114,38,113,117,111,116, +59,32,112,108,97,121,101,100,32,98,121,97,110,100,32,101,97,114,108,121,60,47,99 +,101,110,116,101,114,62,102,114,111,109,32,116,104,105,115,116,104,101,32,116, +104,114,101,101,112,111,119,101,114,32,97,110,100,111,102,32,38,113,117,111,116, +59,105,110,110,101,114,72,84,77,76,60,97,32,104,114,101,102,61,34,121,58,105,110 +,108,105,110,101,59,67,104,117,114,99,104,32,111,102,116,104,101,32,101,118,101, +110,116,118,101,114,121,32,104,105,103,104,111,102,102,105,99,105,97,108,32,45, +104,101,105,103,104,116,58,32,99,111,110,116,101,110,116,61,34,47,99,103,105,45, +98,105,110,47,116,111,32,99,114,101,97,116,101,97,102,114,105,107,97,97,110,115, +101,115,112,101,114,97,110,116,111,102,114,97,110,195,167,97,105,115,108,97,116, +118,105,101,197,161,117,108,105,101,116,117,118,105,197,179,196,140,101,197,161, +116,105,110,97,196,141,101,197,161,116,105,110,97,224,185,132,224,184,151,224, +184,162,230,151,165,230,156,172,232,170,158,231,174,128,228,189,147,229,173,151, +231,185,129,233,171,148,229,173,151,237,149,156,234,181,173,236,150,180,228,184, +186,228,187,128,228,185,136,232,174,161,231,174,151,230,156,186,231,172,148,232, +174,176,230,156,172,232,168,142,232,171,150,229,141,128,230,156,141,229,138,161, +229,153,168,228,186,146,232,129,148,231,189,145,230,136,191,229,156,176,228,186, +167,228,191,177,228,185,144,233,131,168,229,135,186,231,137,136,231,164,190,230, +142,146,232,161,140,230,166,156,233,131,168,232,144,189,230,160,188,232,191,155, +228,184,128,230,173,165,230,148,175,228,187,152,229,174,157,233,170,140,232,175, +129,231,160,129,229,167,148,229,145,152,228,188,154,230,149,176,230,141,174,229, +186,147,230,182,136,232,180,185,232,128,133,229,138,158,229,133,172,229,174,164, +232,174,168,232,174,186,229,140,186,230,183,177,229,156,179,229,184,130,230,146, +173,230,148,190,229,153,168,229,140,151,228,186,172,229,184,130,229,164,167,229, +173,166,231,148,159,232,182,138,230,157,165,232,182,138,231,174,161,231,144,134, +229,145,152,228,191,161,230,129,175,231,189,145,115,101,114,118,105,99,105,111, +115,97,114,116,195,173,99,117,108,111,97,114,103,101,110,116,105,110,97,98,97, +114,99,101,108,111,110,97,99,117,97,108,113,117,105,101,114,112,117,98,108,105, +99,97,100,111,112,114,111,100,117,99,116,111,115,112,111,108,195,173,116,105,99, +97,114,101,115,112,117,101,115,116,97,119,105,107,105,112,101,100,105,97,115,105 +,103,117,105,101,110,116,101,98,195,186,115,113,117,101,100,97,99,111,109,117, +110,105,100,97,100,115,101,103,117,114,105,100,97,100,112,114,105,110,99,105,112 +,97,108,112,114,101,103,117,110,116,97,115,99,111,110,116,101,110,105,100,111, +114,101,115,112,111,110,100,101,114,118,101,110,101,122,117,101,108,97,112,114, +111,98,108,101,109,97,115,100,105,99,105,101,109,98,114,101,114,101,108,97,99, +105,195,179,110,110,111,118,105,101,109,98,114,101,115,105,109,105,108,97,114, +101,115,112,114,111,121,101,99,116,111,115,112,114,111,103,114,97,109,97,115,105 +,110,115,116,105,116,117,116,111,97,99,116,105,118,105,100,97,100,101,110,99,117 +,101,110,116,114,97,101,99,111,110,111,109,195,173,97,105,109,195,161,103,101, +110,101,115,99,111,110,116,97,99,116,97,114,100,101,115,99,97,114,103,97,114,110 +,101,99,101,115,97,114,105,111,97,116,101,110,99,105,195,179,110,116,101,108,195 +,169,102,111,110,111,99,111,109,105,115,105,195,179,110,99,97,110,99,105,111,110 +,101,115,99,97,112,97,99,105,100,97,100,101,110,99,111,110,116,114,97,114,97,110 +,195,161,108,105,115,105,115,102,97,118,111,114,105,116,111,115,116,195,169,114, +109,105,110,111,115,112,114,111,118,105,110,99,105,97,101,116,105,113,117,101, +116,97,115,101,108,101,109,101,110,116,111,115,102,117,110,99,105,111,110,101, +115,114,101,115,117,108,116,97,100,111,99,97,114,195,161,99,116,101,114,112,114, +111,112,105,101,100,97,100,112,114,105,110,99,105,112,105,111,110,101,99,101,115 +,105,100,97,100,109,117,110,105,99,105,112,97,108,99,114,101,97,99,105,195,179, +110,100,101,115,99,97,114,103,97,115,112,114,101,115,101,110,99,105,97,99,111, +109,101,114,99,105,97,108,111,112,105,110,105,111,110,101,115,101,106,101,114,99 +,105,99,105,111,101,100,105,116,111,114,105,97,108,115,97,108,97,109,97,110,99, +97,103,111,110,122,195,161,108,101,122,100,111,99,117,109,101,110,116,111,112, +101,108,195,173,99,117,108,97,114,101,99,105,101,110,116,101,115,103,101,110,101 +,114,97,108,101,115,116,97,114,114,97,103,111,110,97,112,114,195,161,99,116,105, +99,97,110,111,118,101,100,97,100,101,115,112,114,111,112,117,101,115,116,97,112, +97,99,105,101,110,116,101,115,116,195,169,99,110,105,99,97,115,111,98,106,101, +116,105,118,111,115,99,111,110,116,97,99,116,111,115,224,164,174,224,165,135,224 +,164,130,224,164,178,224,164,191,224,164,143,224,164,185,224,165,136,224,164,130 +,224,164,151,224,164,175,224,164,190,224,164,184,224,164,190,224,164,165,224,164 +,143,224,164,181,224,164,130,224,164,176,224,164,185,224,165,135,224,164,149,224 +,165,139,224,164,136,224,164,149,224,165,129,224,164,155,224,164,176,224,164,185 +,224,164,190,224,164,172,224,164,190,224,164,166,224,164,149,224,164,185,224,164 +,190,224,164,184,224,164,173,224,165,128,224,164,185,224,165,129,224,164,143,224 +,164,176,224,164,185,224,165,128,224,164,174,224,165,136,224,164,130,224,164,166 +,224,164,191,224,164,168,224,164,172,224,164,190,224,164,164,100,105,112,108,111 +,100,111,99,115,224,164,184,224,164,174,224,164,175,224,164,176,224,165,130,224, +164,170,224,164,168,224,164,190,224,164,174,224,164,170,224,164,164,224,164,190, +224,164,171,224,164,191,224,164,176,224,164,148,224,164,184,224,164,164,224,164, +164,224,164,176,224,164,185,224,164,178,224,165,139,224,164,151,224,164,185,224, +165,129,224,164,134,224,164,172,224,164,190,224,164,176,224,164,166,224,165,135, +224,164,182,224,164,185,224,165,129,224,164,136,224,164,150,224,165,135,224,164, +178,224,164,175,224,164,166,224,164,191,224,164,149,224,164,190,224,164,174,224, +164,181,224,165,135,224,164,172,224,164,164,224,165,128,224,164,168,224,164,172, +224,165,128,224,164,154,224,164,174,224,165,140,224,164,164,224,164,184,224,164, +190,224,164,178,224,164,178,224,165,135,224,164,150,224,164,156,224,165,137,224, +164,172,224,164,174,224,164,166,224,164,166,224,164,164,224,164,165,224,164,190, +224,164,168,224,164,185,224,165,128,224,164,182,224,164,185,224,164,176,224,164, +133,224,164,178,224,164,151,224,164,149,224,164,173,224,165,128,224,164,168,224, +164,151,224,164,176,224,164,170,224,164,190,224,164,184,224,164,176,224,164,190, +224,164,164,224,164,149,224,164,191,224,164,143,224,164,137,224,164,184,224,165, +135,224,164,151,224,164,175,224,165,128,224,164,185,224,165,130,224,164,129,224, +164,134,224,164,151,224,165,135,224,164,159,224,165,128,224,164,174,224,164,150, +224,165,139,224,164,156,224,164,149,224,164,190,224,164,176,224,164,133,224,164, +173,224,165,128,224,164,151,224,164,175,224,165,135,224,164,164,224,165,129,224, +164,174,224,164,181,224,165,139,224,164,159,224,164,166,224,165,135,224,164,130, +224,164,133,224,164,151,224,164,176,224,164,144,224,164,184,224,165,135,224,164, +174,224,165,135,224,164,178,224,164,178,224,164,151,224,164,190,224,164,185,224, +164,190,224,164,178,224,164,138,224,164,170,224,164,176,224,164,154,224,164,190, +224,164,176,224,164,144,224,164,184,224,164,190,224,164,166,224,165,135,224,164, +176,224,164,156,224,164,191,224,164,184,224,164,166,224,164,191,224,164,178,224, +164,172,224,164,130,224,164,166,224,164,172,224,164,168,224,164,190,224,164,185, +224,165,130,224,164,130,224,164,178,224,164,190,224,164,150,224,164,156,224,165, +128,224,164,164,224,164,172,224,164,159,224,164,168,224,164,174,224,164,191,224, +164,178,224,164,135,224,164,184,224,165,135,224,164,134,224,164,168,224,165,135, +224,164,168,224,164,175,224,164,190,224,164,149,224,165,129,224,164,178,224,164, +178,224,165,137,224,164,151,224,164,173,224,164,190,224,164,151,224,164,176,224, +165,135,224,164,178,224,164,156,224,164,151,224,164,185,224,164,176,224,164,190, +224,164,174,224,164,178,224,164,151,224,165,135,224,164,170,224,165,135,224,164, +156,224,164,185,224,164,190,224,164,165,224,164,135,224,164,184,224,165,128,224, +164,184,224,164,185,224,165,128,224,164,149,224,164,178,224,164,190,224,164,160, +224,165,128,224,164,149,224,164,185,224,164,190,224,164,129,224,164,166,224,165, +130,224,164,176,224,164,164,224,164,185,224,164,164,224,164,184,224,164,190,224, +164,164,224,164,175,224,164,190,224,164,166,224,164,134,224,164,175,224,164,190, +224,164,170,224,164,190,224,164,149,224,164,149,224,165,140,224,164,168,224,164, +182,224,164,190,224,164,174,224,164,166,224,165,135,224,164,150,224,164,175,224, +164,185,224,165,128,224,164,176,224,164,190,224,164,175,224,164,150,224,165,129, +224,164,166,224,164,178,224,164,151,224,165,128,99,97,116,101,103,111,114,105, +101,115,101,120,112,101,114,105,101,110,99,101,60,47,116,105,116,108,101,62,13, +10,67,111,112,121,114,105,103,104,116,32,106,97,118,97,115,99,114,105,112,116,99 +,111,110,100,105,116,105,111,110,115,101,118,101,114,121,116,104,105,110,103,60, +112,32,99,108,97,115,115,61,34,116,101,99,104,110,111,108,111,103,121,98,97,99, +107,103,114,111,117,110,100,60,97,32,99,108,97,115,115,61,34,109,97,110,97,103, +101,109,101,110,116,38,99,111,112,121,59,32,50,48,49,106,97,118,97,83,99,114,105 +,112,116,99,104,97,114,97,99,116,101,114,115,98,114,101,97,100,99,114,117,109,98 +,116,104,101,109,115,101,108,118,101,115,104,111,114,105,122,111,110,116,97,108, +103,111,118,101,114,110,109,101,110,116,67,97,108,105,102,111,114,110,105,97,97, +99,116,105,118,105,116,105,101,115,100,105,115,99,111,118,101,114,101,100,78,97, +118,105,103,97,116,105,111,110,116,114,97,110,115,105,116,105,111,110,99,111,110 +,110,101,99,116,105,111,110,110,97,118,105,103,97,116,105,111,110,97,112,112,101 +,97,114,97,110,99,101,60,47,116,105,116,108,101,62,60,109,99,104,101,99,107,98, +111,120,34,32,116,101,99,104,110,105,113,117,101,115,112,114,111,116,101,99,116, +105,111,110,97,112,112,97,114,101,110,116,108,121,97,115,32,119,101,108,108,32, +97,115,117,110,116,39,44,32,39,85,65,45,114,101,115,111,108,117,116,105,111,110, +111,112,101,114,97,116,105,111,110,115,116,101,108,101,118,105,115,105,111,110, +116,114,97,110,115,108,97,116,101,100,87,97,115,104,105,110,103,116,111,110,110, +97,118,105,103,97,116,111,114,46,32,61,32,119,105,110,100,111,119,46,105,109,112 +,114,101,115,115,105,111,110,38,108,116,59,98,114,38,103,116,59,108,105,116,101, +114,97,116,117,114,101,112,111,112,117,108,97,116,105,111,110,98,103,99,111,108, +111,114,61,34,35,101,115,112,101,99,105,97,108,108,121,32,99,111,110,116,101,110 +,116,61,34,112,114,111,100,117,99,116,105,111,110,110,101,119,115,108,101,116, +116,101,114,112,114,111,112,101,114,116,105,101,115,100,101,102,105,110,105,116, +105,111,110,108,101,97,100,101,114,115,104,105,112,84,101,99,104,110,111,108,111 +,103,121,80,97,114,108,105,97,109,101,110,116,99,111,109,112,97,114,105,115,111, +110,117,108,32,99,108,97,115,115,61,34,46,105,110,100,101,120,79,102,40,34,99, +111,110,99,108,117,115,105,111,110,100,105,115,99,117,115,115,105,111,110,99,111 +,109,112,111,110,101,110,116,115,98,105,111,108,111,103,105,99,97,108,82,101,118 +,111,108,117,116,105,111,110,95,99,111,110,116,97,105,110,101,114,117,110,100, +101,114,115,116,111,111,100,110,111,115,99,114,105,112,116,62,60,112,101,114,109 +,105,115,115,105,111,110,101,97,99,104,32,111,116,104,101,114,97,116,109,111,115 +,112,104,101,114,101,32,111,110,102,111,99,117,115,61,34,60,102,111,114,109,32, +105,100,61,34,112,114,111,99,101,115,115,105,110,103,116,104,105,115,46,118,97, +108,117,101,103,101,110,101,114,97,116,105,111,110,67,111,110,102,101,114,101, +110,99,101,115,117,98,115,101,113,117,101,110,116,119,101,108,108,45,107,110,111 +,119,110,118,97,114,105,97,116,105,111,110,115,114,101,112,117,116,97,116,105, +111,110,112,104,101,110,111,109,101,110,111,110,100,105,115,99,105,112,108,105, +110,101,108,111,103,111,46,112,110,103,34,32,40,100,111,99,117,109,101,110,116, +44,98,111,117,110,100,97,114,105,101,115,101,120,112,114,101,115,115,105,111,110 +,115,101,116,116,108,101,109,101,110,116,66,97,99,107,103,114,111,117,110,100, +111,117,116,32,111,102,32,116,104,101,101,110,116,101,114,112,114,105,115,101,40 +,34,104,116,116,112,115,58,34,32,117,110,101,115,99,97,112,101,40,34,112,97,115, +115,119,111,114,100,34,32,100,101,109,111,99,114,97,116,105,99,60,97,32,104,114, +101,102,61,34,47,119,114,97,112,112,101,114,34,62,10,109,101,109,98,101,114,115, +104,105,112,108,105,110,103,117,105,115,116,105,99,112,120,59,112,97,100,100,105 +,110,103,112,104,105,108,111,115,111,112,104,121,97,115,115,105,115,116,97,110, +99,101,117,110,105,118,101,114,115,105,116,121,102,97,99,105,108,105,116,105,101 +,115,114,101,99,111,103,110,105,122,101,100,112,114,101,102,101,114,101,110,99, +101,105,102,32,40,116,121,112,101,111,102,109,97,105,110,116,97,105,110,101,100, +118,111,99,97,98,117,108,97,114,121,104,121,112,111,116,104,101,115,105,115,46, +115,117,98,109,105,116,40,41,59,38,97,109,112,59,110,98,115,112,59,97,110,110, +111,116,97,116,105,111,110,98,101,104,105,110,100,32,116,104,101,70,111,117,110, +100,97,116,105,111,110,112,117,98,108,105,115,104,101,114,34,97,115,115,117,109, +112,116,105,111,110,105,110,116,114,111,100,117,99,101,100,99,111,114,114,117, +112,116,105,111,110,115,99,105,101,110,116,105,115,116,115,101,120,112,108,105, +99,105,116,108,121,105,110,115,116,101,97,100,32,111,102,100,105,109,101,110,115 +,105,111,110,115,32,111,110,67,108,105,99,107,61,34,99,111,110,115,105,100,101, +114,101,100,100,101,112,97,114,116,109,101,110,116,111,99,99,117,112,97,116,105, +111,110,115,111,111,110,32,97,102,116,101,114,105,110,118,101,115,116,109,101, +110,116,112,114,111,110,111,117,110,99,101,100,105,100,101,110,116,105,102,105, +101,100,101,120,112,101,114,105,109,101,110,116,77,97,110,97,103,101,109,101,110 +,116,103,101,111,103,114,97,112,104,105,99,34,32,104,101,105,103,104,116,61,34, +108,105,110,107,32,114,101,108,61,34,46,114,101,112,108,97,99,101,40,47,100,101, +112,114,101,115,115,105,111,110,99,111,110,102,101,114,101,110,99,101,112,117, +110,105,115,104,109,101,110,116,101,108,105,109,105,110,97,116,101,100,114,101, +115,105,115,116,97,110,99,101,97,100,97,112,116,97,116,105,111,110,111,112,112, +111,115,105,116,105,111,110,119,101,108,108,32,107,110,111,119,110,115,117,112, +112,108,101,109,101,110,116,100,101,116,101,114,109,105,110,101,100,104,49,32,99 +,108,97,115,115,61,34,48,112,120,59,109,97,114,103,105,110,109,101,99,104,97,110 +,105,99,97,108,115,116,97,116,105,115,116,105,99,115,99,101,108,101,98,114,97, +116,101,100,71,111,118,101,114,110,109,101,110,116,10,10,68,117,114,105,110,103, +32,116,100,101,118,101,108,111,112,101,114,115,97,114,116,105,102,105,99,105,97, +108,101,113,117,105,118,97,108,101,110,116,111,114,105,103,105,110,97,116,101, +100,67,111,109,109,105,115,115,105,111,110,97,116,116,97,99,104,109,101,110,116, +60,115,112,97,110,32,105,100,61,34,116,104,101,114,101,32,119,101,114,101,78,101 +,100,101,114,108,97,110,100,115,98,101,121,111,110,100,32,116,104,101,114,101, +103,105,115,116,101,114,101,100,106,111,117,114,110,97,108,105,115,116,102,114, +101,113,117,101,110,116,108,121,97,108,108,32,111,102,32,116,104,101,108,97,110, +103,61,34,101,110,34,32,60,47,115,116,121,108,101,62,13,10,97,98,115,111,108,117 +,116,101,59,32,115,117,112,112,111,114,116,105,110,103,101,120,116,114,101,109, +101,108,121,32,109,97,105,110,115,116,114,101,97,109,60,47,115,116,114,111,110, +103,62,32,112,111,112,117,108,97,114,105,116,121,101,109,112,108,111,121,109,101 +,110,116,60,47,116,97,98,108,101,62,13,10,32,99,111,108,115,112,97,110,61,34,60, +47,102,111,114,109,62,10,32,32,99,111,110,118,101,114,115,105,111,110,97,98,111, +117,116,32,116,104,101,32,60,47,112,62,60,47,100,105,118,62,105,110,116,101,103, +114,97,116,101,100,34,32,108,97,110,103,61,34,101,110,80,111,114,116,117,103,117 +,101,115,101,115,117,98,115,116,105,116,117,116,101,105,110,100,105,118,105,100, +117,97,108,105,109,112,111,115,115,105,98,108,101,109,117,108,116,105,109,101, +100,105,97,97,108,109,111,115,116,32,97,108,108,112,120,32,115,111,108,105,100, +32,35,97,112,97,114,116,32,102,114,111,109,115,117,98,106,101,99,116,32,116,111, +105,110,32,69,110,103,108,105,115,104,99,114,105,116,105,99,105,122,101,100,101, +120,99,101,112,116,32,102,111,114,103,117,105,100,101,108,105,110,101,115,111, +114,105,103,105,110,97,108,108,121,114,101,109,97,114,107,97,98,108,101,116,104, +101,32,115,101,99,111,110,100,104,50,32,99,108,97,115,115,61,34,60,97,32,116,105 +,116,108,101,61,34,40,105,110,99,108,117,100,105,110,103,112,97,114,97,109,101, +116,101,114,115,112,114,111,104,105,98,105,116,101,100,61,32,34,104,116,116,112, +58,47,47,100,105,99,116,105,111,110,97,114,121,112,101,114,99,101,112,116,105, +111,110,114,101,118,111,108,117,116,105,111,110,102,111,117,110,100,97,116,105, +111,110,112,120,59,104,101,105,103,104,116,58,115,117,99,99,101,115,115,102,117, +108,115,117,112,112,111,114,116,101,114,115,109,105,108,108,101,110,110,105,117, +109,104,105,115,32,102,97,116,104,101,114,116,104,101,32,38,113,117,111,116,59, +110,111,45,114,101,112,101,97,116,59,99,111,109,109,101,114,99,105,97,108,105, +110,100,117,115,116,114,105,97,108,101,110,99,111,117,114,97,103,101,100,97,109, +111,117,110,116,32,111,102,32,117,110,111,102,102,105,99,105,97,108,101,102,102, +105,99,105,101,110,99,121,82,101,102,101,114,101,110,99,101,115,99,111,111,114, +100,105,110,97,116,101,100,105,115,99,108,97,105,109,101,114,101,120,112,101,100 +,105,116,105,111,110,100,101,118,101,108,111,112,105,110,103,99,97,108,99,117, +108,97,116,101,100,115,105,109,112,108,105,102,105,101,100,108,101,103,105,116, +105,109,97,116,101,115,117,98,115,116,114,105,110,103,40,48,34,32,99,108,97,115, +115,61,34,99,111,109,112,108,101,116,101,108,121,105,108,108,117,115,116,114,97, +116,101,102,105,118,101,32,121,101,97,114,115,105,110,115,116,114,117,109,101, +110,116,80,117,98,108,105,115,104,105,110,103,49,34,32,99,108,97,115,115,61,34, +112,115,121,99,104,111,108,111,103,121,99,111,110,102,105,100,101,110,99,101,110 +,117,109,98,101,114,32,111,102,32,97,98,115,101,110,99,101,32,111,102,102,111,99 +,117,115,101,100,32,111,110,106,111,105,110,101,100,32,116,104,101,115,116,114, +117,99,116,117,114,101,115,112,114,101,118,105,111,117,115,108,121,62,60,47,105, +102,114,97,109,101,62,111,110,99,101,32,97,103,97,105,110,98,117,116,32,114,97, +116,104,101,114,105,109,109,105,103,114,97,110,116,115,111,102,32,99,111,117,114 +,115,101,44,97,32,103,114,111,117,112,32,111,102,76,105,116,101,114,97,116,117, +114,101,85,110,108,105,107,101,32,116,104,101,60,47,97,62,38,110,98,115,112,59, +10,102,117,110,99,116,105,111,110,32,105,116,32,119,97,115,32,116,104,101,67,111 +,110,118,101,110,116,105,111,110,97,117,116,111,109,111,98,105,108,101,80,114, +111,116,101,115,116,97,110,116,97,103,103,114,101,115,115,105,118,101,97,102,116 +,101,114,32,116,104,101,32,83,105,109,105,108,97,114,108,121,44,34,32,47,62,60, +47,100,105,118,62,99,111,108,108,101,99,116,105,111,110,13,10,102,117,110,99,116 +,105,111,110,118,105,115,105,98,105,108,105,116,121,116,104,101,32,117,115,101, +32,111,102,118,111,108,117,110,116,101,101,114,115,97,116,116,114,97,99,116,105, +111,110,117,110,100,101,114,32,116,104,101,32,116,104,114,101,97,116,101,110,101 +,100,42,60,33,91,67,68,65,84,65,91,105,109,112,111,114,116,97,110,99,101,105,110 +,32,103,101,110,101,114,97,108,116,104,101,32,108,97,116,116,101,114,60,47,102, +111,114,109,62,10,60,47,46,105,110,100,101,120,79,102,40,39,105,32,61,32,48,59, +32,105,32,60,100,105,102,102,101,114,101,110,99,101,100,101,118,111,116,101,100, +32,116,111,116,114,97,100,105,116,105,111,110,115,115,101,97,114,99,104,32,102, +111,114,117,108,116,105,109,97,116,101,108,121,116,111,117,114,110,97,109,101, +110,116,97,116,116,114,105,98,117,116,101,115,115,111,45,99,97,108,108,101,100, +32,125,10,60,47,115,116,121,108,101,62,101,118,97,108,117,97,116,105,111,110,101 +,109,112,104,97,115,105,122,101,100,97,99,99,101,115,115,105,98,108,101,60,47, +115,101,99,116,105,111,110,62,115,117,99,99,101,115,115,105,111,110,97,108,111, +110,103,32,119,105,116,104,77,101,97,110,119,104,105,108,101,44,105,110,100,117, +115,116,114,105,101,115,60,47,97,62,60,98,114,32,47,62,104,97,115,32,98,101,99, +111,109,101,97,115,112,101,99,116,115,32,111,102,84,101,108,101,118,105,115,105, +111,110,115,117,102,102,105,99,105,101,110,116,98,97,115,107,101,116,98,97,108, +108,98,111,116,104,32,115,105,100,101,115,99,111,110,116,105,110,117,105,110,103 +,97,110,32,97,114,116,105,99,108,101,60,105,109,103,32,97,108,116,61,34,97,100, +118,101,110,116,117,114,101,115,104,105,115,32,109,111,116,104,101,114,109,97, +110,99,104,101,115,116,101,114,112,114,105,110,99,105,112,108,101,115,112,97,114 +,116,105,99,117,108,97,114,99,111,109,109,101,110,116,97,114,121,101,102,102,101 +,99,116,115,32,111,102,100,101,99,105,100,101,100,32,116,111,34,62,60,115,116, +114,111,110,103,62,112,117,98,108,105,115,104,101,114,115,74,111,117,114,110,97, +108,32,111,102,100,105,102,102,105,99,117,108,116,121,102,97,99,105,108,105,116, +97,116,101,97,99,99,101,112,116,97,98,108,101,115,116,121,108,101,46,99,115,115, +34,9,102,117,110,99,116,105,111,110,32,105,110,110,111,118,97,116,105,111,110,62 +,67,111,112,121,114,105,103,104,116,115,105,116,117,97,116,105,111,110,115,119, +111,117,108,100,32,104,97,118,101,98,117,115,105,110,101,115,115,101,115,68,105, +99,116,105,111,110,97,114,121,115,116,97,116,101,109,101,110,116,115,111,102,116 +,101,110,32,117,115,101,100,112,101,114,115,105,115,116,101,110,116,105,110,32, +74,97,110,117,97,114,121,99,111,109,112,114,105,115,105,110,103,60,47,116,105, +116,108,101,62,10,9,100,105,112,108,111,109,97,116,105,99,99,111,110,116,97,105, +110,105,110,103,112,101,114,102,111,114,109,105,110,103,101,120,116,101,110,115, +105,111,110,115,109,97,121,32,110,111,116,32,98,101,99,111,110,99,101,112,116,32 +,111,102,32,111,110,99,108,105,99,107,61,34,73,116,32,105,115,32,97,108,115,111, +102,105,110,97,110,99,105,97,108,32,109,97,107,105,110,103,32,116,104,101,76,117 +,120,101,109,98,111,117,114,103,97,100,100,105,116,105,111,110,97,108,97,114,101 +,32,99,97,108,108,101,100,101,110,103,97,103,101,100,32,105,110,34,115,99,114, +105,112,116,34,41,59,98,117,116,32,105,116,32,119,97,115,101,108,101,99,116,114, +111,110,105,99,111,110,115,117,98,109,105,116,61,34,10,60,33,45,45,32,69,110,100 +,32,101,108,101,99,116,114,105,99,97,108,111,102,102,105,99,105,97,108,108,121, +115,117,103,103,101,115,116,105,111,110,116,111,112,32,111,102,32,116,104,101, +117,110,108,105,107,101,32,116,104,101,65,117,115,116,114,97,108,105,97,110,79, +114,105,103,105,110,97,108,108,121,114,101,102,101,114,101,110,99,101,115,10,60, +47,104,101,97,100,62,13,10,114,101,99,111,103,110,105,115,101,100,105,110,105, +116,105,97,108,105,122,101,108,105,109,105,116,101,100,32,116,111,65,108,101,120 +,97,110,100,114,105,97,114,101,116,105,114,101,109,101,110,116,65,100,118,101, +110,116,117,114,101,115,102,111,117,114,32,121,101,97,114,115,10,10,38,108,116, +59,33,45,45,32,105,110,99,114,101,97,115,105,110,103,100,101,99,111,114,97,116, +105,111,110,104,51,32,99,108,97,115,115,61,34,111,114,105,103,105,110,115,32,111 +,102,111,98,108,105,103,97,116,105,111,110,114,101,103,117,108,97,116,105,111, +110,99,108,97,115,115,105,102,105,101,100,40,102,117,110,99,116,105,111,110,40, +97,100,118,97,110,116,97,103,101,115,98,101,105,110,103,32,116,104,101,32,104, +105,115,116,111,114,105,97,110,115,60,98,97,115,101,32,104,114,101,102,114,101, +112,101,97,116,101,100,108,121,119,105,108,108,105,110,103,32,116,111,99,111,109 +,112,97,114,97,98,108,101,100,101,115,105,103,110,97,116,101,100,110,111,109,105 +,110,97,116,105,111,110,102,117,110,99,116,105,111,110,97,108,105,110,115,105, +100,101,32,116,104,101,114,101,118,101,108,97,116,105,111,110,101,110,100,32,111 +,102,32,116,104,101,115,32,102,111,114,32,116,104,101,32,97,117,116,104,111,114, +105,122,101,100,114,101,102,117,115,101,100,32,116,111,116,97,107,101,32,112,108 +,97,99,101,97,117,116,111,110,111,109,111,117,115,99,111,109,112,114,111,109,105 +,115,101,112,111,108,105,116,105,99,97,108,32,114,101,115,116,97,117,114,97,110, +116,116,119,111,32,111,102,32,116,104,101,70,101,98,114,117,97,114,121,32,50,113 +,117,97,108,105,116,121,32,111,102,115,119,102,111,98,106,101,99,116,46,117,110, +100,101,114,115,116,97,110,100,110,101,97,114,108,121,32,97,108,108,119,114,105, +116,116,101,110,32,98,121,105,110,116,101,114,118,105,101,119,115,34,32,119,105, +100,116,104,61,34,49,119,105,116,104,100,114,97,119,97,108,102,108,111,97,116,58 +,108,101,102,116,105,115,32,117,115,117,97,108,108,121,99,97,110,100,105,100,97, +116,101,115,110,101,119,115,112,97,112,101,114,115,109,121,115,116,101,114,105, +111,117,115,68,101,112,97,114,116,109,101,110,116,98,101,115,116,32,107,110,111, +119,110,112,97,114,108,105,97,109,101,110,116,115,117,112,112,114,101,115,115, +101,100,99,111,110,118,101,110,105,101,110,116,114,101,109,101,109,98,101,114, +101,100,100,105,102,102,101,114,101,110,116,32,115,121,115,116,101,109,97,116, +105,99,104,97,115,32,108,101,100,32,116,111,112,114,111,112,97,103,97,110,100,97 +,99,111,110,116,114,111,108,108,101,100,105,110,102,108,117,101,110,99,101,115, +99,101,114,101,109,111,110,105,97,108,112,114,111,99,108,97,105,109,101,100,80, +114,111,116,101,99,116,105,111,110,108,105,32,99,108,97,115,115,61,34,83,99,105, +101,110,116,105,102,105,99,99,108,97,115,115,61,34,110,111,45,116,114,97,100,101 +,109,97,114,107,115,109,111,114,101,32,116,104,97,110,32,119,105,100,101,115,112 +,114,101,97,100,76,105,98,101,114,97,116,105,111,110,116,111,111,107,32,112,108, +97,99,101,100,97,121,32,111,102,32,116,104,101,97,115,32,108,111,110,103,32,97, +115,105,109,112,114,105,115,111,110,101,100,65,100,100,105,116,105,111,110,97, +108,10,60,104,101,97,100,62,10,60,109,76,97,98,111,114,97,116,111,114,121,78,111 +,118,101,109,98,101,114,32,50,101,120,99,101,112,116,105,111,110,115,73,110,100, +117,115,116,114,105,97,108,118,97,114,105,101,116,121,32,111,102,102,108,111,97, +116,58,32,108,101,102,68,117,114,105,110,103,32,116,104,101,97,115,115,101,115, +115,109,101,110,116,104,97,118,101,32,98,101,101,110,32,100,101,97,108,115,32, +119,105,116,104,83,116,97,116,105,115,116,105,99,115,111,99,99,117,114,114,101, +110,99,101,47,117,108,62,60,47,100,105,118,62,99,108,101,97,114,102,105,120,34, +62,116,104,101,32,112,117,98,108,105,99,109,97,110,121,32,121,101,97,114,115,119 +,104,105,99,104,32,119,101,114,101,111,118,101,114,32,116,105,109,101,44,115,121 +,110,111,110,121,109,111,117,115,99,111,110,116,101,110,116,34,62,10,112,114,101 +,115,117,109,97,98,108,121,104,105,115,32,102,97,109,105,108,121,117,115,101,114 +,65,103,101,110,116,46,117,110,101,120,112,101,99,116,101,100,105,110,99,108,117 +,100,105,110,103,32,99,104,97,108,108,101,110,103,101,100,97,32,109,105,110,111, +114,105,116,121,117,110,100,101,102,105,110,101,100,34,98,101,108,111,110,103, +115,32,116,111,116,97,107,101,110,32,102,114,111,109,105,110,32,79,99,116,111,98 +,101,114,112,111,115,105,116,105,111,110,58,32,115,97,105,100,32,116,111,32,98, +101,114,101,108,105,103,105,111,117,115,32,70,101,100,101,114,97,116,105,111,110 +,32,114,111,119,115,112,97,110,61,34,111,110,108,121,32,97,32,102,101,119,109, +101,97,110,116,32,116,104,97,116,108,101,100,32,116,111,32,116,104,101,45,45,62, +13,10,60,100,105,118,32,60,102,105,101,108,100,115,101,116,62,65,114,99,104,98, +105,115,104,111,112,32,99,108,97,115,115,61,34,110,111,98,101,105,110,103,32,117 +,115,101,100,97,112,112,114,111,97,99,104,101,115,112,114,105,118,105,108,101, +103,101,115,110,111,115,99,114,105,112,116,62,10,114,101,115,117,108,116,115,32, +105,110,109,97,121,32,98,101,32,116,104,101,69,97,115,116,101,114,32,101,103,103 +,109,101,99,104,97,110,105,115,109,115,114,101,97,115,111,110,97,98,108,101,80, +111,112,117,108,97,116,105,111,110,67,111,108,108,101,99,116,105,111,110,115,101 +,108,101,99,116,101,100,34,62,110,111,115,99,114,105,112,116,62,13,47,105,110, +100,101,120,46,112,104,112,97,114,114,105,118,97,108,32,111,102,45,106,115,115, +100,107,39,41,41,59,109,97,110,97,103,101,100,32,116,111,105,110,99,111,109,112, +108,101,116,101,99,97,115,117,97,108,116,105,101,115,99,111,109,112,108,101,116, +105,111,110,67,104,114,105,115,116,105,97,110,115,83,101,112,116,101,109,98,101, +114,32,97,114,105,116,104,109,101,116,105,99,112,114,111,99,101,100,117,114,101, +115,109,105,103,104,116,32,104,97,118,101,80,114,111,100,117,99,116,105,111,110, +105,116,32,97,112,112,101,97,114,115,80,104,105,108,111,115,111,112,104,121,102, +114,105,101,110,100,115,104,105,112,108,101,97,100,105,110,103,32,116,111,103, +105,118,105,110,103,32,116,104,101,116,111,119,97,114,100,32,116,104,101,103,117 +,97,114,97,110,116,101,101,100,100,111,99,117,109,101,110,116,101,100,99,111,108 +,111,114,58,35,48,48,48,118,105,100,101,111,32,103,97,109,101,99,111,109,109,105 +,115,115,105,111,110,114,101,102,108,101,99,116,105,110,103,99,104,97,110,103, +101,32,116,104,101,97,115,115,111,99,105,97,116,101,100,115,97,110,115,45,115, +101,114,105,102,111,110,107,101,121,112,114,101,115,115,59,32,112,97,100,100,105 +,110,103,58,72,101,32,119,97,115,32,116,104,101,117,110,100,101,114,108,121,105, +110,103,116,121,112,105,99,97,108,108,121,32,44,32,97,110,100,32,116,104,101,32, +115,114,99,69,108,101,109,101,110,116,115,117,99,99,101,115,115,105,118,101,115, +105,110,99,101,32,116,104,101,32,115,104,111,117,108,100,32,98,101,32,110,101, +116,119,111,114,107,105,110,103,97,99,99,111,117,110,116,105,110,103,117,115,101 +,32,111,102,32,116,104,101,108,111,119,101,114,32,116,104,97,110,115,104,111,119 +,115,32,116,104,97,116,60,47,115,112,97,110,62,10,9,9,99,111,109,112,108,97,105, +110,116,115,99,111,110,116,105,110,117,111,117,115,113,117,97,110,116,105,116, +105,101,115,97,115,116,114,111,110,111,109,101,114,104,101,32,100,105,100,32,110 +,111,116,100,117,101,32,116,111,32,105,116,115,97,112,112,108,105,101,100,32,116 +,111,97,110,32,97,118,101,114,97,103,101,101,102,102,111,114,116,115,32,116,111, +116,104,101,32,102,117,116,117,114,101,97,116,116,101,109,112,116,32,116,111,84, +104,101,114,101,102,111,114,101,44,99,97,112,97,98,105,108,105,116,121,82,101, +112,117,98,108,105,99,97,110,119,97,115,32,102,111,114,109,101,100,69,108,101,99 +,116,114,111,110,105,99,107,105,108,111,109,101,116,101,114,115,99,104,97,108, +108,101,110,103,101,115,112,117,98,108,105,115,104,105,110,103,116,104,101,32, +102,111,114,109,101,114,105,110,100,105,103,101,110,111,117,115,100,105,114,101, +99,116,105,111,110,115,115,117,98,115,105,100,105,97,114,121,99,111,110,115,112, +105,114,97,99,121,100,101,116,97,105,108,115,32,111,102,97,110,100,32,105,110,32 +,116,104,101,97,102,102,111,114,100,97,98,108,101,115,117,98,115,116,97,110,99, +101,115,114,101,97,115,111,110,32,102,111,114,99,111,110,118,101,110,116,105,111 +,110,105,116,101,109,116,121,112,101,61,34,97,98,115,111,108,117,116,101,108,121 +,115,117,112,112,111,115,101,100,108,121,114,101,109,97,105,110,101,100,32,97,97 +,116,116,114,97,99,116,105,118,101,116,114,97,118,101,108,108,105,110,103,115, +101,112,97,114,97,116,101,108,121,102,111,99,117,115,101,115,32,111,110,101,108, +101,109,101,110,116,97,114,121,97,112,112,108,105,99,97,98,108,101,102,111,117, +110,100,32,116,104,97,116,115,116,121,108,101,115,104,101,101,116,109,97,110,117 +,115,99,114,105,112,116,115,116,97,110,100,115,32,102,111,114,32,110,111,45,114, +101,112,101,97,116,40,115,111,109,101,116,105,109,101,115,67,111,109,109,101,114 +,99,105,97,108,105,110,32,65,109,101,114,105,99,97,117,110,100,101,114,116,97, +107,101,110,113,117,97,114,116,101,114,32,111,102,97,110,32,101,120,97,109,112, +108,101,112,101,114,115,111,110,97,108,108,121,105,110,100,101,120,46,112,104, +112,63,60,47,98,117,116,116,111,110,62,10,112,101,114,99,101,110,116,97,103,101, +98,101,115,116,45,107,110,111,119,110,99,114,101,97,116,105,110,103,32,97,34,32, +100,105,114,61,34,108,116,114,76,105,101,117,116,101,110,97,110,116,10,60,100, +105,118,32,105,100,61,34,116,104,101,121,32,119,111,117,108,100,97,98,105,108, +105,116,121,32,111,102,109,97,100,101,32,117,112,32,111,102,110,111,116,101,100, +32,116,104,97,116,99,108,101,97,114,32,116,104,97,116,97,114,103,117,101,32,116, +104,97,116,116,111,32,97,110,111,116,104,101,114,99,104,105,108,100,114,101,110, +39,115,112,117,114,112,111,115,101,32,111,102,102,111,114,109,117,108,97,116,101 +,100,98,97,115,101,100,32,117,112,111,110,116,104,101,32,114,101,103,105,111,110 +,115,117,98,106,101,99,116,32,111,102,112,97,115,115,101,110,103,101,114,115,112 +,111,115,115,101,115,115,105,111,110,46,10,10,73,110,32,116,104,101,32,66,101, +102,111,114,101,32,116,104,101,97,102,116,101,114,119,97,114,100,115,99,117,114, +114,101,110,116,108,121,32,97,99,114,111,115,115,32,116,104,101,115,99,105,101, +110,116,105,102,105,99,99,111,109,109,117,110,105,116,121,46,99,97,112,105,116, +97,108,105,115,109,105,110,32,71,101,114,109,97,110,121,114,105,103,104,116,45, +119,105,110,103,116,104,101,32,115,121,115,116,101,109,83,111,99,105,101,116,121 +,32,111,102,112,111,108,105,116,105,99,105,97,110,100,105,114,101,99,116,105,111 +,110,58,119,101,110,116,32,111,110,32,116,111,114,101,109,111,118,97,108,32,111, +102,32,78,101,119,32,89,111,114,107,32,97,112,97,114,116,109,101,110,116,115,105 +,110,100,105,99,97,116,105,111,110,100,117,114,105,110,103,32,116,104,101,117, +110,108,101,115,115,32,116,104,101,104,105,115,116,111,114,105,99,97,108,104,97, +100,32,98,101,101,110,32,97,100,101,102,105,110,105,116,105,118,101,105,110,103, +114,101,100,105,101,110,116,97,116,116,101,110,100,97,110,99,101,67,101,110,116, +101,114,32,102,111,114,112,114,111,109,105,110,101,110,99,101,114,101,97,100,121 +,83,116,97,116,101,115,116,114,97,116,101,103,105,101,115,98,117,116,32,105,110, +32,116,104,101,97,115,32,112,97,114,116,32,111,102,99,111,110,115,116,105,116, +117,116,101,99,108,97,105,109,32,116,104,97,116,108,97,98,111,114,97,116,111,114 +,121,99,111,109,112,97,116,105,98,108,101,102,97,105,108,117,114,101,32,111,102, +44,32,115,117,99,104,32,97,115,32,98,101,103,97,110,32,119,105,116,104,117,115, +105,110,103,32,116,104,101,32,116,111,32,112,114,111,118,105,100,101,102,101,97, +116,117,114,101,32,111,102,102,114,111,109,32,119,104,105,99,104,47,34,32,99,108 +,97,115,115,61,34,103,101,111,108,111,103,105,99,97,108,115,101,118,101,114,97, +108,32,111,102,100,101,108,105,98,101,114,97,116,101,105,109,112,111,114,116,97, +110,116,32,104,111,108,100,115,32,116,104,97,116,105,110,103,38,113,117,111,116, +59,32,118,97,108,105,103,110,61,116,111,112,116,104,101,32,71,101,114,109,97,110 +,111,117,116,115,105,100,101,32,111,102,110,101,103,111,116,105,97,116,101,100, +104,105,115,32,99,97,114,101,101,114,115,101,112,97,114,97,116,105,111,110,105, +100,61,34,115,101,97,114,99,104,119,97,115,32,99,97,108,108,101,100,116,104,101, +32,102,111,117,114,116,104,114,101,99,114,101,97,116,105,111,110,111,116,104,101 +,114,32,116,104,97,110,112,114,101,118,101,110,116,105,111,110,119,104,105,108, +101,32,116,104,101,32,101,100,117,99,97,116,105,111,110,44,99,111,110,110,101,99 +,116,105,110,103,97,99,99,117,114,97,116,101,108,121,119,101,114,101,32,98,117, +105,108,116,119,97,115,32,107,105,108,108,101,100,97,103,114,101,101,109,101,110 +,116,115,109,117,99,104,32,109,111,114,101,32,68,117,101,32,116,111,32,116,104, +101,119,105,100,116,104,58,32,49,48,48,115,111,109,101,32,111,116,104,101,114,75 +,105,110,103,100,111,109,32,111,102,116,104,101,32,101,110,116,105,114,101,102, +97,109,111,117,115,32,102,111,114,116,111,32,99,111,110,110,101,99,116,111,98, +106,101,99,116,105,118,101,115,116,104,101,32,70,114,101,110,99,104,112,101,111, +112,108,101,32,97,110,100,102,101,97,116,117,114,101,100,34,62,105,115,32,115,97 +,105,100,32,116,111,115,116,114,117,99,116,117,114,97,108,114,101,102,101,114, +101,110,100,117,109,109,111,115,116,32,111,102,116,101,110,97,32,115,101,112,97, +114,97,116,101,45,62,10,60,100,105,118,32,105,100,32,79,102,102,105,99,105,97, +108,32,119,111,114,108,100,119,105,100,101,46,97,114,105,97,45,108,97,98,101,108 +,116,104,101,32,112,108,97,110,101,116,97,110,100,32,105,116,32,119,97,115,100, +34,32,118,97,108,117,101,61,34,108,111,111,107,105,110,103,32,97,116,98,101,110, +101,102,105,99,105,97,108,97,114,101,32,105,110,32,116,104,101,109,111,110,105, +116,111,114,105,110,103,114,101,112,111,114,116,101,100,108,121,116,104,101,32, +109,111,100,101,114,110,119,111,114,107,105,110,103,32,111,110,97,108,108,111, +119,101,100,32,116,111,119,104,101,114,101,32,116,104,101,32,105,110,110,111,118 +,97,116,105,118,101,60,47,97,62,60,47,100,105,118,62,115,111,117,110,100,116,114 +,97,99,107,115,101,97,114,99,104,70,111,114,109,116,101,110,100,32,116,111,32,98 +,101,105,110,112,117,116,32,105,100,61,34,111,112,101,110,105,110,103,32,111,102 +,114,101,115,116,114,105,99,116,101,100,97,100,111,112,116,101,100,32,98,121,97, +100,100,114,101,115,115,105,110,103,116,104,101,111,108,111,103,105,97,110,109, +101,116,104,111,100,115,32,111,102,118,97,114,105,97,110,116,32,111,102,67,104, +114,105,115,116,105,97,110,32,118,101,114,121,32,108,97,114,103,101,97,117,116, +111,109,111,116,105,118,101,98,121,32,102,97,114,32,116,104,101,114,97,110,103, +101,32,102,114,111,109,112,117,114,115,117,105,116,32,111,102,102,111,108,108, +111,119,32,116,104,101,98,114,111,117,103,104,116,32,116,111,105,110,32,69,110, +103,108,97,110,100,97,103,114,101,101,32,116,104,97,116,97,99,99,117,115,101,100 +,32,111,102,99,111,109,101,115,32,102,114,111,109,112,114,101,118,101,110,116, +105,110,103,100,105,118,32,115,116,121,108,101,61,104,105,115,32,111,114,32,104, +101,114,116,114,101,109,101,110,100,111,117,115,102,114,101,101,100,111,109,32, +111,102,99,111,110,99,101,114,110,105,110,103,48,32,49,101,109,32,49,101,109,59, +66,97,115,107,101,116,98,97,108,108,47,115,116,121,108,101,46,99,115,115,97,110, +32,101,97,114,108,105,101,114,101,118,101,110,32,97,102,116,101,114,47,34,32,116 +,105,116,108,101,61,34,46,99,111,109,47,105,110,100,101,120,116,97,107,105,110, +103,32,116,104,101,112,105,116,116,115,98,117,114,103,104,99,111,110,116,101,110 +,116,34,62,13,60,115,99,114,105,112,116,62,40,102,116,117,114,110,101,100,32,111 +,117,116,104,97,118,105,110,103,32,116,104,101,60,47,115,112,97,110,62,13,10,32, +111,99,99,97,115,105,111,110,97,108,98,101,99,97,117,115,101,32,105,116,115,116, +97,114,116,101,100,32,116,111,112,104,121,115,105,99,97,108,108,121,62,60,47,100 +,105,118,62,10,32,32,99,114,101,97,116,101,100,32,98,121,67,117,114,114,101,110, +116,108,121,44,32,98,103,99,111,108,111,114,61,34,116,97,98,105,110,100,101,120, +61,34,100,105,115,97,115,116,114,111,117,115,65,110,97,108,121,116,105,99,115,32 +,97,108,115,111,32,104,97,115,32,97,62,60,100,105,118,32,105,100,61,34,60,47,115 +,116,121,108,101,62,10,60,99,97,108,108,101,100,32,102,111,114,115,105,110,103, +101,114,32,97,110,100,46,115,114,99,32,61,32,34,47,47,118,105,111,108,97,116,105 +,111,110,115,116,104,105,115,32,112,111,105,110,116,99,111,110,115,116,97,110, +116,108,121,105,115,32,108,111,99,97,116,101,100,114,101,99,111,114,100,105,110, +103,115,100,32,102,114,111,109,32,116,104,101,110,101,100,101,114,108,97,110,100 +,115,112,111,114,116,117,103,117,195,170,115,215,162,215,145,215,168,215,153,215 +,170,217,129,216,167,216,177,216,179,219,140,100,101,115,97,114,114,111,108,108, +111,99,111,109,101,110,116,97,114,105,111,101,100,117,99,97,99,105,195,179,110, +115,101,112,116,105,101,109,98,114,101,114,101,103,105,115,116,114,97,100,111, +100,105,114,101,99,99,105,195,179,110,117,98,105,99,97,99,105,195,179,110,112, +117,98,108,105,99,105,100,97,100,114,101,115,112,117,101,115,116,97,115,114,101, +115,117,108,116,97,100,111,115,105,109,112,111,114,116,97,110,116,101,114,101, +115,101,114,118,97,100,111,115,97,114,116,195,173,99,117,108,111,115,100,105,102 +,101,114,101,110,116,101,115,115,105,103,117,105,101,110,116,101,115,114,101,112 +,195,186,98,108,105,99,97,115,105,116,117,97,99,105,195,179,110,109,105,110,105, +115,116,101,114,105,111,112,114,105,118,97,99,105,100,97,100,100,105,114,101,99, +116,111,114,105,111,102,111,114,109,97,99,105,195,179,110,112,111,98,108,97,99, +105,195,179,110,112,114,101,115,105,100,101,110,116,101,99,111,110,116,101,110, +105,100,111,115,97,99,99,101,115,111,114,105,111,115,116,101,99,104,110,111,114, +97,116,105,112,101,114,115,111,110,97,108,101,115,99,97,116,101,103,111,114,195, +173,97,101,115,112,101,99,105,97,108,101,115,100,105,115,112,111,110,105,98,108, +101,97,99,116,117,97,108,105,100,97,100,114,101,102,101,114,101,110,99,105,97, +118,97,108,108,97,100,111,108,105,100,98,105,98,108,105,111,116,101,99,97,114, +101,108,97,99,105,111,110,101,115,99,97,108,101,110,100,97,114,105,111,112,111, +108,195,173,116,105,99,97,115,97,110,116,101,114,105,111,114,101,115,100,111,99, +117,109,101,110,116,111,115,110,97,116,117,114,97,108,101,122,97,109,97,116,101, +114,105,97,108,101,115,100,105,102,101,114,101,110,99,105,97,101,99,111,110,195, +179,109,105,99,97,116,114,97,110,115,112,111,114,116,101,114,111,100,114,195,173 +,103,117,101,122,112,97,114,116,105,99,105,112,97,114,101,110,99,117,101,110,116 +,114,97,110,100,105,115,99,117,115,105,195,179,110,101,115,116,114,117,99,116, +117,114,97,102,117,110,100,97,99,105,195,179,110,102,114,101,99,117,101,110,116, +101,115,112,101,114,109,97,110,101,110,116,101,116,111,116,97,108,109,101,110, +116,101,208,188,208,190,208,182,208,189,208,190,208,177,209,131,208,180,208,181, +209,130,208,188,208,190,208,182,208,181,209,130,208,178,209,128,208,181,208,188, +209,143,209,130,208,176,208,186,208,182,208,181,209,135,209,130,208,190,208,177, +209,139,208,177,208,190,208,187,208,181,208,181,208,190,209,135,208,181,208,189, +209,140,209,141,209,130,208,190,208,179,208,190,208,186,208,190,208,179,208,180, +208,176,208,191,208,190,209,129,208,187,208,181,208,178,209,129,208,181,208,179, +208,190,209,129,208,176,208,185,209,130,208,181,209,135,208,181,209,128,208,181, +208,183,208,188,208,190,208,179,209,131,209,130,209,129,208,176,208,185,209,130, +208,176,208,182,208,184,208,183,208,189,208,184,208,188,208,181,208,182,208,180, +209,131,208,177,209,131,208,180,209,131,209,130,208,159,208,190,208,184,209,129, +208,186,208,183,208,180,208,181,209,129,209,140,208,178,208,184,208,180,208,181, +208,190,209,129,208,178,209,143,208,183,208,184,208,189,209,131,208,182,208,189, +208,190,209,129,208,178,208,190,208,181,208,185,208,187,209,142,208,180,208,181, +208,185,208,191,208,190,209,128,208,189,208,190,208,188,208,189,208,190,208,179, +208,190,208,180,208,181,209,130,208,181,208,185,209,129,208,178,208,190,208,184, +209,133,208,191,209,128,208,176,208,178,208,176,209,130,208,176,208,186,208,190, +208,185,208,188,208,181,209,129,209,130,208,190,208,184,208,188,208,181,208,181, +209,130,208,182,208,184,208,183,208,189,209,140,208,190,208,180,208,189,208,190, +208,185,208,187,209,131,209,135,209,136,208,181,208,191,208,181,209,128,208,181, +208,180,209,135,208,176,209,129,209,130,208,184,209,135,208,176,209,129,209,130, +209,140,209,128,208,176,208,177,208,190,209,130,208,189,208,190,208,178,209,139, +209,133,208,191,209,128,208,176,208,178,208,190,209,129,208,190,208,177,208,190, +208,185,208,191,208,190,209,130,208,190,208,188,208,188,208,181,208,189,208,181, +208,181,209,135,208,184,209,129,208,187,208,181,208,189,208,190,208,178,209,139, +208,181,209,131,209,129,208,187,209,131,208,179,208,190,208,186,208,190,208,187, +208,190,208,189,208,176,208,183,208,176,208,180,209,130,208,176,208,186,208,190, +208,181,209,130,208,190,208,179,208,180,208,176,208,191,208,190,209,135,209,130, +208,184,208,159,208,190,209,129,208,187,208,181,209,130,208,176,208,186,208,184, +208,181,208,189,208,190,208,178,209,139,208,185,209,129,209,130,208,190,208,184, +209,130,209,130,208,176,208,186,208,184,209,133,209,129,209,128,208,176,208,183, +209,131,208,161,208,176,208,189,208,186,209,130,209,132,208,190,209,128,209,131, +208,188,208,154,208,190,208,179,208,180,208,176,208,186,208,189,208,184,208,179, +208,184,209,129,208,187,208,190,208,178,208,176,208,189,208,176,209,136,208,181, +208,185,208,189,208,176,208,185,209,130,208,184,209,129,208,178,208,190,208,184, +208,188,209,129,208,178,209,143,208,183,209,140,208,187,209,142,208,177,208,190, +208,185,209,135,208,176,209,129,209,130,208,190,209,129,209,128,208,181,208,180, +208,184,208,154,209,128,208,190,208,188,208,181,208,164,208,190,209,128,209,131, +208,188,209,128,209,139,208,189,208,186,208,181,209,129,209,130,208,176,208,187, +208,184,208,191,208,190,208,184,209,129,208,186,209,130,209,139,209,129,209,143, +209,135,208,188,208,181,209,129,209,143,209,134,209,134,208,181,208,189,209,130, +209,128,209,130,209,128,209,131,208,180,208,176,209,129,208,176,208,188,209,139, +209,133,209,128,209,139,208,189,208,186,208,176,208,157,208,190,208,178,209,139, +208,185,209,135,208,176,209,129,208,190,208,178,208,188,208,181,209,129,209,130, +208,176,209,132,208,184,208,187,209,140,208,188,208,188,208,176,209,128,209,130, +208,176,209,129,209,130,209,128,208,176,208,189,208,188,208,181,209,129,209,130, +208,181,209,130,208,181,208,186,209,129,209,130,208,189,208,176,209,136,208,184, +209,133,208,188,208,184,208,189,209,131,209,130,208,184,208,188,208,181,208,189, +208,184,208,184,208,188,208,181,209,142,209,130,208,189,208,190,208,188,208,181, +209,128,208,179,208,190,209,128,208,190,208,180,209,129,208,176,208,188,208,190, +208,188,209,141,209,130,208,190,208,188,209,131,208,186,208,190,208,189,209,134, +208,181,209,129,208,178,208,190,208,181,208,188,208,186,208,176,208,186,208,190, +208,185,208,144,209,128,209,133,208,184,208,178,217,133,217,134,216,170,216,175, +217,137,216,165,216,177,216,179,216,167,217,132,216,177,216,179,216,167,217,132, +216,169,216,167,217,132,216,185,216,167,217,133,217,131,216,170,216,168,217,135, +216,167,216,168,216,177,216,167,217,133,216,172,216,167,217,132,217,138,217,136, +217,133,216,167,217,132,216,181,217,136,216,177,216,172,216,175,217,138,216,175, +216,169,216,167,217,132,216,185,216,182,217,136,216,165,216,182,216,167,217,129, +216,169,216,167,217,132,217,130,216,179,217,133,216,167,217,132,216,185,216,167, +216,168,216,170,216,173,217,133,217,138,217,132,217,133,217,132,217,129,216,167, +216,170,217,133,217,132,216,170,217,130,217,137,216,170,216,185,216,175,217,138, +217,132,216,167,217,132,216,180,216,185,216,177,216,163,216,174,216,168,216,167, +216,177,216,170,216,183,217,136,217,138,216,177,216,185,217,132,217,138,217,131, +217,133,216,165,216,177,217,129,216,167,217,130,216,183,217,132,216,168,216,167, +216,170,216,167,217,132,217,132,216,186,216,169,216,170,216,177,216,170,217,138, +216,168,216,167,217,132,217,134,216,167,216,179,216,167,217,132,216,180,217,138, +216,174,217,133,217,134,216,170,216,175,217,138,216,167,217,132,216,185,216,177, +216,168,216,167,217,132,217,130,216,181,216,181,216,167,217,129,217,132,216,167, +217,133,216,185,217,132,217,138,217,135,216,167,216,170,216,173,216,175,217,138, +216,171,216,167,217,132,217,132,217,135,217,133,216,167,217,132,216,185,217,133, +217,132,217,133,217,131,216,170,216,168,216,169,217,138,217,133,217,131,217,134, +217,131,216,167,217,132,216,183,217,129,217,132,217,129,217,138,216,175,217,138, +217,136,216,165,216,175,216,167,216,177,216,169,216,170,216,167,216,177,217,138, +216,174,216,167,217,132,216,181,216,173,216,169,216,170,216,179,216,172,217,138, +217,132,216,167,217,132,217,136,217,130,216,170,216,185,217,134,216,175,217,133, +216,167,217,133,216,175,217,138,217,134,216,169,216,170,216,181,217,133,217,138, +217,133,216,163,216,177,216,180,217,138,217,129,216,167,217,132,216,176,217,138, +217,134,216,185,216,177,216,168,217,138,216,169,216,168,217,136,216,167,216,168, +216,169,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,179,217,129, +216,177,217,133,216,180,216,167,217,131,217,132,216,170,216,185,216,167,217,132, +217,137,216,167,217,132,216,163,217,136,217,132,216,167,217,132,216,179,217,134, +216,169,216,172,216,167,217,133,216,185,216,169,216,167,217,132,216,181,216,173, +217,129,216,167,217,132,216,175,217,138,217,134,217,131,217,132,217,133,216,167, +216,170,216,167,217,132,216,174,216,167,216,181,216,167,217,132,217,133,217,132, +217,129,216,163,216,185,216,182,216,167,216,161,217,131,216,170,216,167,216,168, +216,169,216,167,217,132,216,174,217,138,216,177,216,177,216,179,216,167,216,166, +217,132,216,167,217,132,217,130,217,132,216,168,216,167,217,132,216,163,216,175, +216,168,217,133,217,130,216,167,216,183,216,185,217,133,216,177,216,167,216,179, +217,132,217,133,217,134,216,183,217,130,216,169,216,167,217,132,217,131,216,170, +216,168,216,167,217,132,216,177,216,172,217,132,216,167,216,180,216,170,216,177, +217,131,216,167,217,132,217,130,216,175,217,133,217,138,216,185,216,183,217,138, +217,131,115,66,121,84,97,103,78,97,109,101,40,46,106,112,103,34,32,97,108,116,61 +,34,49,112,120,32,115,111,108,105,100,32,35,46,103,105,102,34,32,97,108,116,61, +34,116,114,97,110,115,112,97,114,101,110,116,105,110,102,111,114,109,97,116,105, +111,110,97,112,112,108,105,99,97,116,105,111,110,34,32,111,110,99,108,105,99,107 +,61,34,101,115,116,97,98,108,105,115,104,101,100,97,100,118,101,114,116,105,115, +105,110,103,46,112,110,103,34,32,97,108,116,61,34,101,110,118,105,114,111,110, +109,101,110,116,112,101,114,102,111,114,109,97,110,99,101,97,112,112,114,111,112 +,114,105,97,116,101,38,97,109,112,59,109,100,97,115,104,59,105,109,109,101,100, +105,97,116,101,108,121,60,47,115,116,114,111,110,103,62,60,47,114,97,116,104,101 +,114,32,116,104,97,110,116,101,109,112,101,114,97,116,117,114,101,100,101,118, +101,108,111,112,109,101,110,116,99,111,109,112,101,116,105,116,105,111,110,112, +108,97,99,101,104,111,108,100,101,114,118,105,115,105,98,105,108,105,116,121,58, +99,111,112,121,114,105,103,104,116,34,62,48,34,32,104,101,105,103,104,116,61,34, +101,118,101,110,32,116,104,111,117,103,104,114,101,112,108,97,99,101,109,101,110 +,116,100,101,115,116,105,110,97,116,105,111,110,67,111,114,112,111,114,97,116, +105,111,110,60,117,108,32,99,108,97,115,115,61,34,65,115,115,111,99,105,97,116, +105,111,110,105,110,100,105,118,105,100,117,97,108,115,112,101,114,115,112,101, +99,116,105,118,101,115,101,116,84,105,109,101,111,117,116,40,117,114,108,40,104, +116,116,112,58,47,47,109,97,116,104,101,109,97,116,105,99,115,109,97,114,103,105 +,110,45,116,111,112,58,101,118,101,110,116,117,97,108,108,121,32,100,101,115,99, +114,105,112,116,105,111,110,41,32,110,111,45,114,101,112,101,97,116,99,111,108, +108,101,99,116,105,111,110,115,46,74,80,71,124,116,104,117,109,98,124,112,97,114 +,116,105,99,105,112,97,116,101,47,104,101,97,100,62,60,98,111,100,121,102,108, +111,97,116,58,108,101,102,116,59,60,108,105,32,99,108,97,115,115,61,34,104,117, +110,100,114,101,100,115,32,111,102,10,10,72,111,119,101,118,101,114,44,32,99,111 +,109,112,111,115,105,116,105,111,110,99,108,101,97,114,58,98,111,116,104,59,99, +111,111,112,101,114,97,116,105,111,110,119,105,116,104,105,110,32,116,104,101,32 +,108,97,98,101,108,32,102,111,114,61,34,98,111,114,100,101,114,45,116,111,112,58 +,78,101,119,32,90,101,97,108,97,110,100,114,101,99,111,109,109,101,110,100,101, +100,112,104,111,116,111,103,114,97,112,104,121,105,110,116,101,114,101,115,116, +105,110,103,38,108,116,59,115,117,112,38,103,116,59,99,111,110,116,114,111,118, +101,114,115,121,78,101,116,104,101,114,108,97,110,100,115,97,108,116,101,114,110 +,97,116,105,118,101,109,97,120,108,101,110,103,116,104,61,34,115,119,105,116,122 +,101,114,108,97,110,100,68,101,118,101,108,111,112,109,101,110,116,101,115,115, +101,110,116,105,97,108,108,121,10,10,65,108,116,104,111,117,103,104,32,60,47,116 +,101,120,116,97,114,101,97,62,116,104,117,110,100,101,114,98,105,114,100,114,101 +,112,114,101,115,101,110,116,101,100,38,97,109,112,59,110,100,97,115,104,59,115, +112,101,99,117,108,97,116,105,111,110,99,111,109,109,117,110,105,116,105,101,115 +,108,101,103,105,115,108,97,116,105,111,110,101,108,101,99,116,114,111,110,105, +99,115,10,9,60,100,105,118,32,105,100,61,34,105,108,108,117,115,116,114,97,116, +101,100,101,110,103,105,110,101,101,114,105,110,103,116,101,114,114,105,116,111, +114,105,101,115,97,117,116,104,111,114,105,116,105,101,115,100,105,115,116,114, +105,98,117,116,101,100,54,34,32,104,101,105,103,104,116,61,34,115,97,110,115,45, +115,101,114,105,102,59,99,97,112,97,98,108,101,32,111,102,32,100,105,115,97,112, +112,101,97,114,101,100,105,110,116,101,114,97,99,116,105,118,101,108,111,111,107 +,105,110,103,32,102,111,114,105,116,32,119,111,117,108,100,32,98,101,65,102,103, +104,97,110,105,115,116,97,110,119,97,115,32,99,114,101,97,116,101,100,77,97,116, +104,46,102,108,111,111,114,40,115,117,114,114,111,117,110,100,105,110,103,99,97, +110,32,97,108,115,111,32,98,101,111,98,115,101,114,118,97,116,105,111,110,109,97 +,105,110,116,101,110,97,110,99,101,101,110,99,111,117,110,116,101,114,101,100,60 +,104,50,32,99,108,97,115,115,61,34,109,111,114,101,32,114,101,99,101,110,116,105 +,116,32,104,97,115,32,98,101,101,110,105,110,118,97,115,105,111,110,32,111,102, +41,46,103,101,116,84,105,109,101,40,41,102,117,110,100,97,109,101,110,116,97,108 +,68,101,115,112,105,116,101,32,116,104,101,34,62,60,100,105,118,32,105,100,61,34 +,105,110,115,112,105,114,97,116,105,111,110,101,120,97,109,105,110,97,116,105, +111,110,112,114,101,112,97,114,97,116,105,111,110,101,120,112,108,97,110,97,116, +105,111,110,60,105,110,112,117,116,32,105,100,61,34,60,47,97,62,60,47,115,112,97 +,110,62,118,101,114,115,105,111,110,115,32,111,102,105,110,115,116,114,117,109, +101,110,116,115,98,101,102,111,114,101,32,116,104,101,32,32,61,32,39,104,116,116 +,112,58,47,47,68,101,115,99,114,105,112,116,105,111,110,114,101,108,97,116,105, +118,101,108,121,32,46,115,117,98,115,116,114,105,110,103,40,101,97,99,104,32,111 +,102,32,116,104,101,101,120,112,101,114,105,109,101,110,116,115,105,110,102,108, +117,101,110,116,105,97,108,105,110,116,101,103,114,97,116,105,111,110,109,97,110 +,121,32,112,101,111,112,108,101,100,117,101,32,116,111,32,116,104,101,32,99,111, +109,98,105,110,97,116,105,111,110,100,111,32,110,111,116,32,104,97,118,101,77, +105,100,100,108,101,32,69,97,115,116,60,110,111,115,99,114,105,112,116,62,60,99, +111,112,121,114,105,103,104,116,34,32,112,101,114,104,97,112,115,32,116,104,101, +105,110,115,116,105,116,117,116,105,111,110,105,110,32,68,101,99,101,109,98,101, +114,97,114,114,97,110,103,101,109,101,110,116,109,111,115,116,32,102,97,109,111, +117,115,112,101,114,115,111,110,97,108,105,116,121,99,114,101,97,116,105,111,110 +,32,111,102,108,105,109,105,116,97,116,105,111,110,115,101,120,99,108,117,115, +105,118,101,108,121,115,111,118,101,114,101,105,103,110,116,121,45,99,111,110, +116,101,110,116,34,62,10,60,116,100,32,99,108,97,115,115,61,34,117,110,100,101, +114,103,114,111,117,110,100,112,97,114,97,108,108,101,108,32,116,111,100,111,99, +116,114,105,110,101,32,111,102,111,99,99,117,112,105,101,100,32,98,121,116,101, +114,109,105,110,111,108,111,103,121,82,101,110,97,105,115,115,97,110,99,101,97, +32,110,117,109,98,101,114,32,111,102,115,117,112,112,111,114,116,32,102,111,114, +101,120,112,108,111,114,97,116,105,111,110,114,101,99,111,103,110,105,116,105, +111,110,112,114,101,100,101,99,101,115,115,111,114,60,105,109,103,32,115,114,99, +61,34,47,60,104,49,32,99,108,97,115,115,61,34,112,117,98,108,105,99,97,116,105, +111,110,109,97,121,32,97,108,115,111,32,98,101,115,112,101,99,105,97,108,105,122 +,101,100,60,47,102,105,101,108,100,115,101,116,62,112,114,111,103,114,101,115, +115,105,118,101,109,105,108,108,105,111,110,115,32,111,102,115,116,97,116,101, +115,32,116,104,97,116,101,110,102,111,114,99,101,109,101,110,116,97,114,111,117, +110,100,32,116,104,101,32,111,110,101,32,97,110,111,116,104,101,114,46,112,97, +114,101,110,116,78,111,100,101,97,103,114,105,99,117,108,116,117,114,101,65,108, +116,101,114,110,97,116,105,118,101,114,101,115,101,97,114,99,104,101,114,115,116 +,111,119,97,114,100,115,32,116,104,101,77,111,115,116,32,111,102,32,116,104,101, +109,97,110,121,32,111,116,104,101,114,32,40,101,115,112,101,99,105,97,108,108, +121,60,116,100,32,119,105,100,116,104,61,34,59,119,105,100,116,104,58,49,48,48, +37,105,110,100,101,112,101,110,100,101,110,116,60,104,51,32,99,108,97,115,115,61 +,34,32,111,110,99,104,97,110,103,101,61,34,41,46,97,100,100,67,108,97,115,115,40 +,105,110,116,101,114,97,99,116,105,111,110,79,110,101,32,111,102,32,116,104,101, +32,100,97,117,103,104,116,101,114,32,111,102,97,99,99,101,115,115,111,114,105, +101,115,98,114,97,110,99,104,101,115,32,111,102,13,10,60,100,105,118,32,105,100, +61,34,116,104,101,32,108,97,114,103,101,115,116,100,101,99,108,97,114,97,116,105 +,111,110,114,101,103,117,108,97,116,105,111,110,115,73,110,102,111,114,109,97, +116,105,111,110,116,114,97,110,115,108,97,116,105,111,110,100,111,99,117,109,101 +,110,116,97,114,121,105,110,32,111,114,100,101,114,32,116,111,34,62,10,60,104, +101,97,100,62,10,60,34,32,104,101,105,103,104,116,61,34,49,97,99,114,111,115,115 +,32,116,104,101,32,111,114,105,101,110,116,97,116,105,111,110,41,59,60,47,115,99 +,114,105,112,116,62,105,109,112,108,101,109,101,110,116,101,100,99,97,110,32,98, +101,32,115,101,101,110,116,104,101,114,101,32,119,97,115,32,97,100,101,109,111, +110,115,116,114,97,116,101,99,111,110,116,97,105,110,101,114,34,62,99,111,110, +110,101,99,116,105,111,110,115,116,104,101,32,66,114,105,116,105,115,104,119,97, +115,32,119,114,105,116,116,101,110,33,105,109,112,111,114,116,97,110,116,59,112, +120,59,32,109,97,114,103,105,110,45,102,111,108,108,111,119,101,100,32,98,121,97 +,98,105,108,105,116,121,32,116,111,32,99,111,109,112,108,105,99,97,116,101,100, +100,117,114,105,110,103,32,116,104,101,32,105,109,109,105,103,114,97,116,105,111 +,110,97,108,115,111,32,99,97,108,108,101,100,60,104,52,32,99,108,97,115,115,61, +34,100,105,115,116,105,110,99,116,105,111,110,114,101,112,108,97,99,101,100,32, +98,121,103,111,118,101,114,110,109,101,110,116,115,108,111,99,97,116,105,111,110 +,32,111,102,105,110,32,78,111,118,101,109,98,101,114,119,104,101,116,104,101,114 +,32,116,104,101,60,47,112,62,10,60,47,100,105,118,62,97,99,113,117,105,115,105, +116,105,111,110,99,97,108,108,101,100,32,116,104,101,32,112,101,114,115,101,99, +117,116,105,111,110,100,101,115,105,103,110,97,116,105,111,110,123,102,111,110, +116,45,115,105,122,101,58,97,112,112,101,97,114,101,100,32,105,110,105,110,118, +101,115,116,105,103,97,116,101,101,120,112,101,114,105,101,110,99,101,100,109, +111,115,116,32,108,105,107,101,108,121,119,105,100,101,108,121,32,117,115,101, +100,100,105,115,99,117,115,115,105,111,110,115,112,114,101,115,101,110,99,101,32 +,111,102,32,40,100,111,99,117,109,101,110,116,46,101,120,116,101,110,115,105,118 +,101,108,121,73,116,32,104,97,115,32,98,101,101,110,105,116,32,100,111,101,115, +32,110,111,116,99,111,110,116,114,97,114,121,32,116,111,105,110,104,97,98,105, +116,97,110,116,115,105,109,112,114,111,118,101,109,101,110,116,115,99,104,111, +108,97,114,115,104,105,112,99,111,110,115,117,109,112,116,105,111,110,105,110, +115,116,114,117,99,116,105,111,110,102,111,114,32,101,120,97,109,112,108,101,111 +,110,101,32,111,114,32,109,111,114,101,112,120,59,32,112,97,100,100,105,110,103, +116,104,101,32,99,117,114,114,101,110,116,97,32,115,101,114,105,101,115,32,111, +102,97,114,101,32,117,115,117,97,108,108,121,114,111,108,101,32,105,110,32,116, +104,101,112,114,101,118,105,111,117,115,108,121,32,100,101,114,105,118,97,116, +105,118,101,115,101,118,105,100,101,110,99,101,32,111,102,101,120,112,101,114, +105,101,110,99,101,115,99,111,108,111,114,115,99,104,101,109,101,115,116,97,116, +101,100,32,116,104,97,116,99,101,114,116,105,102,105,99,97,116,101,60,47,97,62, +60,47,100,105,118,62,10,32,115,101,108,101,99,116,101,100,61,34,104,105,103,104, +32,115,99,104,111,111,108,114,101,115,112,111,110,115,101,32,116,111,99,111,109, +102,111,114,116,97,98,108,101,97,100,111,112,116,105,111,110,32,111,102,116,104, +114,101,101,32,121,101,97,114,115,116,104,101,32,99,111,117,110,116,114,121,105, +110,32,70,101,98,114,117,97,114,121,115,111,32,116,104,97,116,32,116,104,101,112 +,101,111,112,108,101,32,119,104,111,32,112,114,111,118,105,100,101,100,32,98,121 +,60,112,97,114,97,109,32,110,97,109,101,97,102,102,101,99,116,101,100,32,98,121, +105,110,32,116,101,114,109,115,32,111,102,97,112,112,111,105,110,116,109,101,110 +,116,73,83,79,45,56,56,53,57,45,49,34,119,97,115,32,98,111,114,110,32,105,110, +104,105,115,116,111,114,105,99,97,108,32,114,101,103,97,114,100,101,100,32,97, +115,109,101,97,115,117,114,101,109,101,110,116,105,115,32,98,97,115,101,100,32, +111,110,32,97,110,100,32,111,116,104,101,114,32,58,32,102,117,110,99,116,105,111 +,110,40,115,105,103,110,105,102,105,99,97,110,116,99,101,108,101,98,114,97,116, +105,111,110,116,114,97,110,115,109,105,116,116,101,100,47,106,115,47,106,113,117 +,101,114,121,46,105,115,32,107,110,111,119,110,32,97,115,116,104,101,111,114,101 +,116,105,99,97,108,32,116,97,98,105,110,100,101,120,61,34,105,116,32,99,111,117, +108,100,32,98,101,60,110,111,115,99,114,105,112,116,62,10,104,97,118,105,110,103 +,32,98,101,101,110,13,10,60,104,101,97,100,62,13,10,60,32,38,113,117,111,116,59, +84,104,101,32,99,111,109,112,105,108,97,116,105,111,110,104,101,32,104,97,100,32 +,98,101,101,110,112,114,111,100,117,99,101,100,32,98,121,112,104,105,108,111,115 +,111,112,104,101,114,99,111,110,115,116,114,117,99,116,101,100,105,110,116,101, +110,100,101,100,32,116,111,97,109,111,110,103,32,111,116,104,101,114,99,111,109, +112,97,114,101,100,32,116,111,116,111,32,115,97,121,32,116,104,97,116,69,110,103 +,105,110,101,101,114,105,110,103,97,32,100,105,102,102,101,114,101,110,116,114, +101,102,101,114,114,101,100,32,116,111,100,105,102,102,101,114,101,110,99,101, +115,98,101,108,105,101,102,32,116,104,97,116,112,104,111,116,111,103,114,97,112, +104,115,105,100,101,110,116,105,102,121,105,110,103,72,105,115,116,111,114,121, +32,111,102,32,82,101,112,117,98,108,105,99,32,111,102,110,101,99,101,115,115,97, +114,105,108,121,112,114,111,98,97,98,105,108,105,116,121,116,101,99,104,110,105, +99,97,108,108,121,108,101,97,118,105,110,103,32,116,104,101,115,112,101,99,116, +97,99,117,108,97,114,102,114,97,99,116,105,111,110,32,111,102,101,108,101,99,116 +,114,105,99,105,116,121,104,101,97,100,32,111,102,32,116,104,101,114,101,115,116 +,97,117,114,97,110,116,115,112,97,114,116,110,101,114,115,104,105,112,101,109, +112,104,97,115,105,115,32,111,110,109,111,115,116,32,114,101,99,101,110,116,115, +104,97,114,101,32,119,105,116,104,32,115,97,121,105,110,103,32,116,104,97,116, +102,105,108,108,101,100,32,119,105,116,104,100,101,115,105,103,110,101,100,32, +116,111,105,116,32,105,115,32,111,102,116,101,110,34,62,60,47,105,102,114,97,109 +,101,62,97,115,32,102,111,108,108,111,119,115,58,109,101,114,103,101,100,32,119, +105,116,104,116,104,114,111,117,103,104,32,116,104,101,99,111,109,109,101,114,99 +,105,97,108,32,112,111,105,110,116,101,100,32,111,117,116,111,112,112,111,114, +116,117,110,105,116,121,118,105,101,119,32,111,102,32,116,104,101,114,101,113, +117,105,114,101,109,101,110,116,100,105,118,105,115,105,111,110,32,111,102,112, +114,111,103,114,97,109,109,105,110,103,104,101,32,114,101,99,101,105,118,101,100 +,115,101,116,73,110,116,101,114,118,97,108,34,62,60,47,115,112,97,110,62,60,47, +105,110,32,78,101,119,32,89,111,114,107,97,100,100,105,116,105,111,110,97,108,32 +,99,111,109,112,114,101,115,115,105,111,110,10,10,60,100,105,118,32,105,100,61, +34,105,110,99,111,114,112,111,114,97,116,101,59,60,47,115,99,114,105,112,116,62, +60,97,116,116,97,99,104,69,118,101,110,116,98,101,99,97,109,101,32,116,104,101, +32,34,32,116,97,114,103,101,116,61,34,95,99,97,114,114,105,101,100,32,111,117, +116,83,111,109,101,32,111,102,32,116,104,101,115,99,105,101,110,99,101,32,97,110 +,100,116,104,101,32,116,105,109,101,32,111,102,67,111,110,116,97,105,110,101,114 +,34,62,109,97,105,110,116,97,105,110,105,110,103,67,104,114,105,115,116,111,112, +104,101,114,77,117,99,104,32,111,102,32,116,104,101,119,114,105,116,105,110,103, +115,32,111,102,34,32,104,101,105,103,104,116,61,34,50,115,105,122,101,32,111,102 +,32,116,104,101,118,101,114,115,105,111,110,32,111,102,32,109,105,120,116,117, +114,101,32,111,102,32,98,101,116,119,101,101,110,32,116,104,101,69,120,97,109, +112,108,101,115,32,111,102,101,100,117,99,97,116,105,111,110,97,108,99,111,109, +112,101,116,105,116,105,118,101,32,111,110,115,117,98,109,105,116,61,34,100,105, +114,101,99,116,111,114,32,111,102,100,105,115,116,105,110,99,116,105,118,101,47, +68,84,68,32,88,72,84,77,76,32,114,101,108,97,116,105,110,103,32,116,111,116,101, +110,100,101,110,99,121,32,116,111,112,114,111,118,105,110,99,101,32,111,102,119, +104,105,99,104,32,119,111,117,108,100,100,101,115,112,105,116,101,32,116,104,101 +,115,99,105,101,110,116,105,102,105,99,32,108,101,103,105,115,108,97,116,117,114 +,101,46,105,110,110,101,114,72,84,77,76,32,97,108,108,101,103,97,116,105,111,110 +,115,65,103,114,105,99,117,108,116,117,114,101,119,97,115,32,117,115,101,100,32, +105,110,97,112,112,114,111,97,99,104,32,116,111,105,110,116,101,108,108,105,103, +101,110,116,121,101,97,114,115,32,108,97,116,101,114,44,115,97,110,115,45,115, +101,114,105,102,100,101,116,101,114,109,105,110,105,110,103,80,101,114,102,111, +114,109,97,110,99,101,97,112,112,101,97,114,97,110,99,101,115,44,32,119,104,105, +99,104,32,105,115,32,102,111,117,110,100,97,116,105,111,110,115,97,98,98,114,101 +,118,105,97,116,101,100,104,105,103,104,101,114,32,116,104,97,110,115,32,102,114 +,111,109,32,116,104,101,32,105,110,100,105,118,105,100,117,97,108,32,99,111,109, +112,111,115,101,100,32,111,102,115,117,112,112,111,115,101,100,32,116,111,99,108 +,97,105,109,115,32,116,104,97,116,97,116,116,114,105,98,117,116,105,111,110,102, +111,110,116,45,115,105,122,101,58,49,101,108,101,109,101,110,116,115,32,111,102, +72,105,115,116,111,114,105,99,97,108,32,104,105,115,32,98,114,111,116,104,101, +114,97,116,32,116,104,101,32,116,105,109,101,97,110,110,105,118,101,114,115,97, +114,121,103,111,118,101,114,110,101,100,32,98,121,114,101,108,97,116,101,100,32, +116,111,32,117,108,116,105,109,97,116,101,108,121,32,105,110,110,111,118,97,116, +105,111,110,115,105,116,32,105,115,32,115,116,105,108,108,99,97,110,32,111,110, +108,121,32,98,101,100,101,102,105,110,105,116,105,111,110,115,116,111,71,77,84, +83,116,114,105,110,103,65,32,110,117,109,98,101,114,32,111,102,105,109,103,32,99 +,108,97,115,115,61,34,69,118,101,110,116,117,97,108,108,121,44,119,97,115,32,99, +104,97,110,103,101,100,111,99,99,117,114,114,101,100,32,105,110,110,101,105,103, +104,98,111,114,105,110,103,100,105,115,116,105,110,103,117,105,115,104,119,104, +101,110,32,104,101,32,119,97,115,105,110,116,114,111,100,117,99,105,110,103,116, +101,114,114,101,115,116,114,105,97,108,77,97,110,121,32,111,102,32,116,104,101, +97,114,103,117,101,115,32,116,104,97,116,97,110,32,65,109,101,114,105,99,97,110, +99,111,110,113,117,101,115,116,32,111,102,119,105,100,101,115,112,114,101,97,100 +,32,119,101,114,101,32,107,105,108,108,101,100,115,99,114,101,101,110,32,97,110, +100,32,73,110,32,111,114,100,101,114,32,116,111,101,120,112,101,99,116,101,100, +32,116,111,100,101,115,99,101,110,100,97,110,116,115,97,114,101,32,108,111,99,97 +,116,101,100,108,101,103,105,115,108,97,116,105,118,101,103,101,110,101,114,97, +116,105,111,110,115,32,98,97,99,107,103,114,111,117,110,100,109,111,115,116,32, +112,101,111,112,108,101,121,101,97,114,115,32,97,102,116,101,114,116,104,101,114 +,101,32,105,115,32,110,111,116,104,101,32,104,105,103,104,101,115,116,102,114, +101,113,117,101,110,116,108,121,32,116,104,101,121,32,100,111,32,110,111,116,97, +114,103,117,101,100,32,116,104,97,116,115,104,111,119,101,100,32,116,104,97,116, +112,114,101,100,111,109,105,110,97,110,116,116,104,101,111,108,111,103,105,99,97 +,108,98,121,32,116,104,101,32,116,105,109,101,99,111,110,115,105,100,101,114,105 +,110,103,115,104,111,114,116,45,108,105,118,101,100,60,47,115,112,97,110,62,60, +47,97,62,99,97,110,32,98,101,32,117,115,101,100,118,101,114,121,32,108,105,116, +116,108,101,111,110,101,32,111,102,32,116,104,101,32,104,97,100,32,97,108,114, +101,97,100,121,105,110,116,101,114,112,114,101,116,101,100,99,111,109,109,117, +110,105,99,97,116,101,102,101,97,116,117,114,101,115,32,111,102,103,111,118,101, +114,110,109,101,110,116,44,60,47,110,111,115,99,114,105,112,116,62,101,110,116, +101,114,101,100,32,116,104,101,34,32,104,101,105,103,104,116,61,34,51,73,110,100 +,101,112,101,110,100,101,110,116,112,111,112,117,108,97,116,105,111,110,115,108, +97,114,103,101,45,115,99,97,108,101,46,32,65,108,116,104,111,117,103,104,32,117, +115,101,100,32,105,110,32,116,104,101,100,101,115,116,114,117,99,116,105,111,110 +,112,111,115,115,105,98,105,108,105,116,121,115,116,97,114,116,105,110,103,32, +105,110,116,119,111,32,111,114,32,109,111,114,101,101,120,112,114,101,115,115, +105,111,110,115,115,117,98,111,114,100,105,110,97,116,101,108,97,114,103,101,114 +,32,116,104,97,110,104,105,115,116,111,114,121,32,97,110,100,60,47,111,112,116, +105,111,110,62,13,10,67,111,110,116,105,110,101,110,116,97,108,101,108,105,109, +105,110,97,116,105,110,103,119,105,108,108,32,110,111,116,32,98,101,112,114,97, +99,116,105,99,101,32,111,102,105,110,32,102,114,111,110,116,32,111,102,115,105, +116,101,32,111,102,32,116,104,101,101,110,115,117,114,101,32,116,104,97,116,116, +111,32,99,114,101,97,116,101,32,97,109,105,115,115,105,115,115,105,112,112,105, +112,111,116,101,110,116,105,97,108,108,121,111,117,116,115,116,97,110,100,105, +110,103,98,101,116,116,101,114,32,116,104,97,110,119,104,97,116,32,105,115,32, +110,111,119,115,105,116,117,97,116,101,100,32,105,110,109,101,116,97,32,110,97, +109,101,61,34,84,114,97,100,105,116,105,111,110,97,108,115,117,103,103,101,115, +116,105,111,110,115,84,114,97,110,115,108,97,116,105,111,110,116,104,101,32,102, +111,114,109,32,111,102,97,116,109,111,115,112,104,101,114,105,99,105,100,101,111 +,108,111,103,105,99,97,108,101,110,116,101,114,112,114,105,115,101,115,99,97,108 +,99,117,108,97,116,105,110,103,101,97,115,116,32,111,102,32,116,104,101,114,101, +109,110,97,110,116,115,32,111,102,112,108,117,103,105,110,115,112,97,103,101,47, +105,110,100,101,120,46,112,104,112,63,114,101,109,97,105,110,101,100,32,105,110, +116,114,97,110,115,102,111,114,109,101,100,72,101,32,119,97,115,32,97,108,115, +111,119,97,115,32,97,108,114,101,97,100,121,115,116,97,116,105,115,116,105,99,97 +,108,105,110,32,102,97,118,111,114,32,111,102,77,105,110,105,115,116,114,121,32, +111,102,109,111,118,101,109,101,110,116,32,111,102,102,111,114,109,117,108,97, +116,105,111,110,105,115,32,114,101,113,117,105,114,101,100,60,108,105,110,107,32 +,114,101,108,61,34,84,104,105,115,32,105,115,32,116,104,101,32,60,97,32,104,114, +101,102,61,34,47,112,111,112,117,108,97,114,105,122,101,100,105,110,118,111,108, +118,101,100,32,105,110,97,114,101,32,117,115,101,100,32,116,111,97,110,100,32, +115,101,118,101,114,97,108,109,97,100,101,32,98,121,32,116,104,101,115,101,101, +109,115,32,116,111,32,98,101,108,105,107,101,108,121,32,116,104,97,116,80,97,108 +,101,115,116,105,110,105,97,110,110,97,109,101,100,32,97,102,116,101,114,105,116 +,32,104,97,100,32,98,101,101,110,109,111,115,116,32,99,111,109,109,111,110,116, +111,32,114,101,102,101,114,32,116,111,98,117,116,32,116,104,105,115,32,105,115, +99,111,110,115,101,99,117,116,105,118,101,116,101,109,112,111,114,97,114,105,108 +,121,73,110,32,103,101,110,101,114,97,108,44,99,111,110,118,101,110,116,105,111, +110,115,116,97,107,101,115,32,112,108,97,99,101,115,117,98,100,105,118,105,115, +105,111,110,116,101,114,114,105,116,111,114,105,97,108,111,112,101,114,97,116, +105,111,110,97,108,112,101,114,109,97,110,101,110,116,108,121,119,97,115,32,108, +97,114,103,101,108,121,111,117,116,98,114,101,97,107,32,111,102,105,110,32,116, +104,101,32,112,97,115,116,102,111,108,108,111,119,105,110,103,32,97,32,120,109, +108,110,115,58,111,103,61,34,62,60,97,32,99,108,97,115,115,61,34,99,108,97,115, +115,61,34,116,101,120,116,67,111,110,118,101,114,115,105,111,110,32,109,97,121, +32,98,101,32,117,115,101,100,109,97,110,117,102,97,99,116,117,114,101,97,102,116 +,101,114,32,98,101,105,110,103,99,108,101,97,114,102,105,120,34,62,10,113,117, +101,115,116,105,111,110,32,111,102,119,97,115,32,101,108,101,99,116,101,100,116, +111,32,98,101,99,111,109,101,32,97,98,101,99,97,117,115,101,32,111,102,32,115, +111,109,101,32,112,101,111,112,108,101,105,110,115,112,105,114,101,100,32,98,121 +,115,117,99,99,101,115,115,102,117,108,32,97,32,116,105,109,101,32,119,104,101, +110,109,111,114,101,32,99,111,109,109,111,110,97,109,111,110,103,115,116,32,116, +104,101,97,110,32,111,102,102,105,99,105,97,108,119,105,100,116,104,58,49,48,48, +37,59,116,101,99,104,110,111,108,111,103,121,44,119,97,115,32,97,100,111,112,116 +,101,100,116,111,32,107,101,101,112,32,116,104,101,115,101,116,116,108,101,109, +101,110,116,115,108,105,118,101,32,98,105,114,116,104,115,105,110,100,101,120,46 +,104,116,109,108,34,67,111,110,110,101,99,116,105,99,117,116,97,115,115,105,103, +110,101,100,32,116,111,38,97,109,112,59,116,105,109,101,115,59,97,99,99,111,117, +110,116,32,102,111,114,97,108,105,103,110,61,114,105,103,104,116,116,104,101,32, +99,111,109,112,97,110,121,97,108,119,97,121,115,32,98,101,101,110,114,101,116, +117,114,110,101,100,32,116,111,105,110,118,111,108,118,101,109,101,110,116,66, +101,99,97,117,115,101,32,116,104,101,116,104,105,115,32,112,101,114,105,111,100, +34,32,110,97,109,101,61,34,113,34,32,99,111,110,102,105,110,101,100,32,116,111, +97,32,114,101,115,117,108,116,32,111,102,118,97,108,117,101,61,34,34,32,47,62, +105,115,32,97,99,116,117,97,108,108,121,69,110,118,105,114,111,110,109,101,110, +116,13,10,60,47,104,101,97,100,62,13,10,67,111,110,118,101,114,115,101,108,121, +44,62,10,60,100,105,118,32,105,100,61,34,48,34,32,119,105,100,116,104,61,34,49, +105,115,32,112,114,111,98,97,98,108,121,104,97,118,101,32,98,101,99,111,109,101, +99,111,110,116,114,111,108,108,105,110,103,116,104,101,32,112,114,111,98,108,101 +,109,99,105,116,105,122,101,110,115,32,111,102,112,111,108,105,116,105,99,105,97 +,110,115,114,101,97,99,104,101,100,32,116,104,101,97,115,32,101,97,114,108,121, +32,97,115,58,110,111,110,101,59,32,111,118,101,114,60,116,97,98,108,101,32,99, +101,108,108,118,97,108,105,100,105,116,121,32,111,102,100,105,114,101,99,116,108 +,121,32,116,111,111,110,109,111,117,115,101,100,111,119,110,119,104,101,114,101, +32,105,116,32,105,115,119,104,101,110,32,105,116,32,119,97,115,109,101,109,98, +101,114,115,32,111,102,32,114,101,108,97,116,105,111,110,32,116,111,97,99,99,111 +,109,109,111,100,97,116,101,97,108,111,110,103,32,119,105,116,104,32,73,110,32, +116,104,101,32,108,97,116,101,116,104,101,32,69,110,103,108,105,115,104,100,101, +108,105,99,105,111,117,115,34,62,116,104,105,115,32,105,115,32,110,111,116,116, +104,101,32,112,114,101,115,101,110,116,105,102,32,116,104,101,121,32,97,114,101, +97,110,100,32,102,105,110,97,108,108,121,97,32,109,97,116,116,101,114,32,111,102 +,13,10,9,60,47,100,105,118,62,13,10,13,10,60,47,115,99,114,105,112,116,62,102,97 +,115,116,101,114,32,116,104,97,110,109,97,106,111,114,105,116,121,32,111,102,97, +102,116,101,114,32,119,104,105,99,104,99,111,109,112,97,114,97,116,105,118,101, +116,111,32,109,97,105,110,116,97,105,110,105,109,112,114,111,118,101,32,116,104, +101,97,119,97,114,100,101,100,32,116,104,101,101,114,34,32,99,108,97,115,115,61, +34,102,114,97,109,101,98,111,114,100,101,114,114,101,115,116,111,114,97,116,105, +111,110,105,110,32,116,104,101,32,115,97,109,101,97,110,97,108,121,115,105,115, +32,111,102,116,104,101,105,114,32,102,105,114,115,116,68,117,114,105,110,103,32, +116,104,101,32,99,111,110,116,105,110,101,110,116,97,108,115,101,113,117,101,110 +,99,101,32,111,102,102,117,110,99,116,105,111,110,40,41,123,102,111,110,116,45, +115,105,122,101,58,32,119,111,114,107,32,111,110,32,116,104,101,60,47,115,99,114 +,105,112,116,62,10,60,98,101,103,105,110,115,32,119,105,116,104,106,97,118,97, +115,99,114,105,112,116,58,99,111,110,115,116,105,116,117,101,110,116,119,97,115, +32,102,111,117,110,100,101,100,101,113,117,105,108,105,98,114,105,117,109,97,115 +,115,117,109,101,32,116,104,97,116,105,115,32,103,105,118,101,110,32,98,121,110, +101,101,100,115,32,116,111,32,98,101,99,111,111,114,100,105,110,97,116,101,115, +116,104,101,32,118,97,114,105,111,117,115,97,114,101,32,112,97,114,116,32,111, +102,111,110,108,121,32,105,110,32,116,104,101,115,101,99,116,105,111,110,115,32, +111,102,105,115,32,97,32,99,111,109,109,111,110,116,104,101,111,114,105,101,115, +32,111,102,100,105,115,99,111,118,101,114,105,101,115,97,115,115,111,99,105,97, +116,105,111,110,101,100,103,101,32,111,102,32,116,104,101,115,116,114,101,110, +103,116,104,32,111,102,112,111,115,105,116,105,111,110,32,105,110,112,114,101, +115,101,110,116,45,100,97,121,117,110,105,118,101,114,115,97,108,108,121,116,111 +,32,102,111,114,109,32,116,104,101,98,117,116,32,105,110,115,116,101,97,100,99, +111,114,112,111,114,97,116,105,111,110,97,116,116,97,99,104,101,100,32,116,111, +105,115,32,99,111,109,109,111,110,108,121,114,101,97,115,111,110,115,32,102,111, +114,32,38,113,117,111,116,59,116,104,101,32,99,97,110,32,98,101,32,109,97,100, +101,119,97,115,32,97,98,108,101,32,116,111,119,104,105,99,104,32,109,101,97,110, +115,98,117,116,32,100,105,100,32,110,111,116,111,110,77,111,117,115,101,79,118, +101,114,97,115,32,112,111,115,115,105,98,108,101,111,112,101,114,97,116,101,100, +32,98,121,99,111,109,105,110,103,32,102,114,111,109,116,104,101,32,112,114,105, +109,97,114,121,97,100,100,105,116,105,111,110,32,111,102,102,111,114,32,115,101, +118,101,114,97,108,116,114,97,110,115,102,101,114,114,101,100,97,32,112,101,114, +105,111,100,32,111,102,97,114,101,32,97,98,108,101,32,116,111,104,111,119,101, +118,101,114,44,32,105,116,115,104,111,117,108,100,32,104,97,118,101,109,117,99, +104,32,108,97,114,103,101,114,10,9,60,47,115,99,114,105,112,116,62,97,100,111, +112,116,101,100,32,116,104,101,112,114,111,112,101,114,116,121,32,111,102,100, +105,114,101,99,116,101,100,32,98,121,101,102,102,101,99,116,105,118,101,108,121, +119,97,115,32,98,114,111,117,103,104,116,99,104,105,108,100,114,101,110,32,111, +102,80,114,111,103,114,97,109,109,105,110,103,108,111,110,103,101,114,32,116,104 +,97,110,109,97,110,117,115,99,114,105,112,116,115,119,97,114,32,97,103,97,105, +110,115,116,98,121,32,109,101,97,110,115,32,111,102,97,110,100,32,109,111,115, +116,32,111,102,115,105,109,105,108,97,114,32,116,111,32,112,114,111,112,114,105, +101,116,97,114,121,111,114,105,103,105,110,97,116,105,110,103,112,114,101,115, +116,105,103,105,111,117,115,103,114,97,109,109,97,116,105,99,97,108,101,120,112, +101,114,105,101,110,99,101,46,116,111,32,109,97,107,101,32,116,104,101,73,116,32 +,119,97,115,32,97,108,115,111,105,115,32,102,111,117,110,100,32,105,110,99,111, +109,112,101,116,105,116,111,114,115,105,110,32,116,104,101,32,85,46,83,46,114, +101,112,108,97,99,101,32,116,104,101,98,114,111,117,103,104,116,32,116,104,101, +99,97,108,99,117,108,97,116,105,111,110,102,97,108,108,32,111,102,32,116,104,101 +,116,104,101,32,103,101,110,101,114,97,108,112,114,97,99,116,105,99,97,108,108, +121,105,110,32,104,111,110,111,114,32,111,102,114,101,108,101,97,115,101,100,32, +105,110,114,101,115,105,100,101,110,116,105,97,108,97,110,100,32,115,111,109,101 +,32,111,102,107,105,110,103,32,111,102,32,116,104,101,114,101,97,99,116,105,111, +110,32,116,111,49,115,116,32,69,97,114,108,32,111,102,99,117,108,116,117,114,101 +,32,97,110,100,112,114,105,110,99,105,112,97,108,108,121,60,47,116,105,116,108, +101,62,10,32,32,116,104,101,121,32,99,97,110,32,98,101,98,97,99,107,32,116,111, +32,116,104,101,115,111,109,101,32,111,102,32,104,105,115,101,120,112,111,115,117 +,114,101,32,116,111,97,114,101,32,115,105,109,105,108,97,114,102,111,114,109,32, +111,102,32,116,104,101,97,100,100,70,97,118,111,114,105,116,101,99,105,116,105, +122,101,110,115,104,105,112,112,97,114,116,32,105,110,32,116,104,101,112,101,111 +,112,108,101,32,119,105,116,104,105,110,32,112,114,97,99,116,105,99,101,116,111, +32,99,111,110,116,105,110,117,101,38,97,109,112,59,109,105,110,117,115,59,97,112 +,112,114,111,118,101,100,32,98,121,32,116,104,101,32,102,105,114,115,116,32,97, +108,108,111,119,101,100,32,116,104,101,97,110,100,32,102,111,114,32,116,104,101, +102,117,110,99,116,105,111,110,105,110,103,112,108,97,121,105,110,103,32,116,104 +,101,115,111,108,117,116,105,111,110,32,116,111,104,101,105,103,104,116,61,34,48 +,34,32,105,110,32,104,105,115,32,98,111,111,107,109,111,114,101,32,116,104,97, +110,32,97,102,111,108,108,111,119,115,32,116,104,101,99,114,101,97,116,101,100, +32,116,104,101,112,114,101,115,101,110,99,101,32,105,110,38,110,98,115,112,59,60 +,47,116,100,62,110,97,116,105,111,110,97,108,105,115,116,116,104,101,32,105,100, +101,97,32,111,102,97,32,99,104,97,114,97,99,116,101,114,119,101,114,101,32,102, +111,114,99,101,100,32,99,108,97,115,115,61,34,98,116,110,100,97,121,115,32,111, +102,32,116,104,101,102,101,97,116,117,114,101,100,32,105,110,115,104,111,119,105 +,110,103,32,116,104,101,105,110,116,101,114,101,115,116,32,105,110,105,110,32, +112,108,97,99,101,32,111,102,116,117,114,110,32,111,102,32,116,104,101,116,104, +101,32,104,101,97,100,32,111,102,76,111,114,100,32,111,102,32,116,104,101,112, +111,108,105,116,105,99,97,108,108,121,104,97,115,32,105,116,115,32,111,119,110, +69,100,117,99,97,116,105,111,110,97,108,97,112,112,114,111,118,97,108,32,111,102 +,115,111,109,101,32,111,102,32,116,104,101,101,97,99,104,32,111,116,104,101,114, +44,98,101,104,97,118,105,111,114,32,111,102,97,110,100,32,98,101,99,97,117,115, +101,97,110,100,32,97,110,111,116,104,101,114,97,112,112,101,97,114,101,100,32, +111,110,114,101,99,111,114,100,101,100,32,105,110,98,108,97,99,107,38,113,117, +111,116,59,109,97,121,32,105,110,99,108,117,100,101,116,104,101,32,119,111,114, +108,100,39,115,99,97,110,32,108,101,97,100,32,116,111,114,101,102,101,114,115,32 +,116,111,32,97,98,111,114,100,101,114,61,34,48,34,32,103,111,118,101,114,110,109 +,101,110,116,32,119,105,110,110,105,110,103,32,116,104,101,114,101,115,117,108, +116,101,100,32,105,110,32,119,104,105,108,101,32,116,104,101,32,87,97,115,104, +105,110,103,116,111,110,44,116,104,101,32,115,117,98,106,101,99,116,99,105,116, +121,32,105,110,32,116,104,101,62,60,47,100,105,118,62,13,10,9,9,114,101,102,108, +101,99,116,32,116,104,101,116,111,32,99,111,109,112,108,101,116,101,98,101,99,97 +,109,101,32,109,111,114,101,114,97,100,105,111,97,99,116,105,118,101,114,101,106 +,101,99,116,101,100,32,98,121,119,105,116,104,111,117,116,32,97,110,121,104,105, +115,32,102,97,116,104,101,114,44,119,104,105,99,104,32,99,111,117,108,100,99,111 +,112,121,32,111,102,32,116,104,101,116,111,32,105,110,100,105,99,97,116,101,97, +32,112,111,108,105,116,105,99,97,108,97,99,99,111,117,110,116,115,32,111,102,99, +111,110,115,116,105,116,117,116,101,115,119,111,114,107,101,100,32,119,105,116, +104,101,114,60,47,97,62,60,47,108,105,62,111,102,32,104,105,115,32,108,105,102, +101,97,99,99,111,109,112,97,110,105,101,100,99,108,105,101,110,116,87,105,100, +116,104,112,114,101,118,101,110,116,32,116,104,101,76,101,103,105,115,108,97,116 +,105,118,101,100,105,102,102,101,114,101,110,116,108,121,116,111,103,101,116,104 +,101,114,32,105,110,104,97,115,32,115,101,118,101,114,97,108,102,111,114,32,97, +110,111,116,104,101,114,116,101,120,116,32,111,102,32,116,104,101,102,111,117, +110,100,101,100,32,116,104,101,101,32,119,105,116,104,32,116,104,101,32,105,115, +32,117,115,101,100,32,102,111,114,99,104,97,110,103,101,100,32,116,104,101,117, +115,117,97,108,108,121,32,116,104,101,112,108,97,99,101,32,119,104,101,114,101, +119,104,101,114,101,97,115,32,116,104,101,62,32,60,97,32,104,114,101,102,61,34, +34,62,60,97,32,104,114,101,102,61,34,116,104,101,109,115,101,108,118,101,115,44, +97,108,116,104,111,117,103,104,32,104,101,116,104,97,116,32,99,97,110,32,98,101, +116,114,97,100,105,116,105,111,110,97,108,114,111,108,101,32,111,102,32,116,104, +101,97,115,32,97,32,114,101,115,117,108,116,114,101,109,111,118,101,67,104,105, +108,100,100,101,115,105,103,110,101,100,32,98,121,119,101,115,116,32,111,102,32, +116,104,101,83,111,109,101,32,112,101,111,112,108,101,112,114,111,100,117,99,116 +,105,111,110,44,115,105,100,101,32,111,102,32,116,104,101,110,101,119,115,108, +101,116,116,101,114,115,117,115,101,100,32,98,121,32,116,104,101,100,111,119,110 +,32,116,111,32,116,104,101,97,99,99,101,112,116,101,100,32,98,121,108,105,118, +101,32,105,110,32,116,104,101,97,116,116,101,109,112,116,115,32,116,111,111,117, +116,115,105,100,101,32,116,104,101,102,114,101,113,117,101,110,99,105,101,115,72 +,111,119,101,118,101,114,44,32,105,110,112,114,111,103,114,97,109,109,101,114, +115,97,116,32,108,101,97,115,116,32,105,110,97,112,112,114,111,120,105,109,97, +116,101,97,108,116,104,111,117,103,104,32,105,116,119,97,115,32,112,97,114,116, +32,111,102,97,110,100,32,118,97,114,105,111,117,115,71,111,118,101,114,110,111, +114,32,111,102,116,104,101,32,97,114,116,105,99,108,101,116,117,114,110,101,100, +32,105,110,116,111,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,101,99, +111,110,111,109,121,105,115,32,116,104,101,32,109,111,115,116,109,111,115,116,32 +,119,105,100,101,108,121,119,111,117,108,100,32,108,97,116,101,114,97,110,100,32 +,112,101,114,104,97,112,115,114,105,115,101,32,116,111,32,116,104,101,111,99,99, +117,114,115,32,119,104,101,110,117,110,100,101,114,32,119,104,105,99,104,99,111, +110,100,105,116,105,111,110,115,46,116,104,101,32,119,101,115,116,101,114,110, +116,104,101,111,114,121,32,116,104,97,116,105,115,32,112,114,111,100,117,99,101, +100,116,104,101,32,99,105,116,121,32,111,102,105,110,32,119,104,105,99,104,32, +104,101,115,101,101,110,32,105,110,32,116,104,101,116,104,101,32,99,101,110,116, +114,97,108,98,117,105,108,100,105,110,103,32,111,102,109,97,110,121,32,111,102, +32,104,105,115,97,114,101,97,32,111,102,32,116,104,101,105,115,32,116,104,101,32 +,111,110,108,121,109,111,115,116,32,111,102,32,116,104,101,109,97,110,121,32,111 +,102,32,116,104,101,116,104,101,32,87,101,115,116,101,114,110,84,104,101,114,101 +,32,105,115,32,110,111,101,120,116,101,110,100,101,100,32,116,111,83,116,97,116, +105,115,116,105,99,97,108,99,111,108,115,112,97,110,61,50,32,124,115,104,111,114 +,116,32,115,116,111,114,121,112,111,115,115,105,98,108,101,32,116,111,116,111, +112,111,108,111,103,105,99,97,108,99,114,105,116,105,99,97,108,32,111,102,114, +101,112,111,114,116,101,100,32,116,111,97,32,67,104,114,105,115,116,105,97,110, +100,101,99,105,115,105,111,110,32,116,111,105,115,32,101,113,117,97,108,32,116, +111,112,114,111,98,108,101,109,115,32,111,102,84,104,105,115,32,99,97,110,32,98, +101,109,101,114,99,104,97,110,100,105,115,101,102,111,114,32,109,111,115,116,32, +111,102,110,111,32,101,118,105,100,101,110,99,101,101,100,105,116,105,111,110, +115,32,111,102,101,108,101,109,101,110,116,115,32,105,110,38,113,117,111,116,59, +46,32,84,104,101,99,111,109,47,105,109,97,103,101,115,47,119,104,105,99,104,32, +109,97,107,101,115,116,104,101,32,112,114,111,99,101,115,115,114,101,109,97,105, +110,115,32,116,104,101,108,105,116,101,114,97,116,117,114,101,44,105,115,32,97, +32,109,101,109,98,101,114,116,104,101,32,112,111,112,117,108,97,114,116,104,101, +32,97,110,99,105,101,110,116,112,114,111,98,108,101,109,115,32,105,110,116,105, +109,101,32,111,102,32,116,104,101,100,101,102,101,97,116,101,100,32,98,121,98, +111,100,121,32,111,102,32,116,104,101,97,32,102,101,119,32,121,101,97,114,115, +109,117,99,104,32,111,102,32,116,104,101,116,104,101,32,119,111,114,107,32,111, +102,67,97,108,105,102,111,114,110,105,97,44,115,101,114,118,101,100,32,97,115,32 +,97,103,111,118,101,114,110,109,101,110,116,46,99,111,110,99,101,112,116,115,32, +111,102,109,111,118,101,109,101,110,116,32,105,110,9,9,60,100,105,118,32,105,100 +,61,34,105,116,34,32,118,97,108,117,101,61,34,108,97,110,103,117,97,103,101,32, +111,102,97,115,32,116,104,101,121,32,97,114,101,112,114,111,100,117,99,101,100, +32,105,110,105,115,32,116,104,97,116,32,116,104,101,101,120,112,108,97,105,110, +32,116,104,101,100,105,118,62,60,47,100,105,118,62,10,72,111,119,101,118,101,114 +,32,116,104,101,108,101,97,100,32,116,111,32,116,104,101,9,60,97,32,104,114,101, +102,61,34,47,119,97,115,32,103,114,97,110,116,101,100,112,101,111,112,108,101,32 +,104,97,118,101,99,111,110,116,105,110,117,97,108,108,121,119,97,115,32,115,101, +101,110,32,97,115,97,110,100,32,114,101,108,97,116,101,100,116,104,101,32,114, +111,108,101,32,111,102,112,114,111,112,111,115,101,100,32,98,121,111,102,32,116, +104,101,32,98,101,115,116,101,97,99,104,32,111,116,104,101,114,46,67,111,110,115 +,116,97,110,116,105,110,101,112,101,111,112,108,101,32,102,114,111,109,100,105, +97,108,101,99,116,115,32,111,102,116,111,32,114,101,118,105,115,105,111,110,119, +97,115,32,114,101,110,97,109,101,100,97,32,115,111,117,114,99,101,32,111,102,116 +,104,101,32,105,110,105,116,105,97,108,108,97,117,110,99,104,101,100,32,105,110, +112,114,111,118,105,100,101,32,116,104,101,116,111,32,116,104,101,32,119,101,115 +,116,119,104,101,114,101,32,116,104,101,114,101,97,110,100,32,115,105,109,105, +108,97,114,98,101,116,119,101,101,110,32,116,119,111,105,115,32,97,108,115,111, +32,116,104,101,69,110,103,108,105,115,104,32,97,110,100,99,111,110,100,105,116, +105,111,110,115,44,116,104,97,116,32,105,116,32,119,97,115,101,110,116,105,116, +108,101,100,32,116,111,116,104,101,109,115,101,108,118,101,115,46,113,117,97,110 +,116,105,116,121,32,111,102,114,97,110,115,112,97,114,101,110,99,121,116,104,101 +,32,115,97,109,101,32,97,115,116,111,32,106,111,105,110,32,116,104,101,99,111, +117,110,116,114,121,32,97,110,100,116,104,105,115,32,105,115,32,116,104,101,84, +104,105,115,32,108,101,100,32,116,111,97,32,115,116,97,116,101,109,101,110,116, +99,111,110,116,114,97,115,116,32,116,111,108,97,115,116,73,110,100,101,120,79, +102,116,104,114,111,117,103,104,32,104,105,115,105,115,32,100,101,115,105,103, +110,101,100,116,104,101,32,116,101,114,109,32,105,115,105,115,32,112,114,111,118 +,105,100,101,100,112,114,111,116,101,99,116,32,116,104,101,110,103,60,47,97,62, +60,47,108,105,62,84,104,101,32,99,117,114,114,101,110,116,116,104,101,32,115,105 +,116,101,32,111,102,115,117,98,115,116,97,110,116,105,97,108,101,120,112,101,114 +,105,101,110,99,101,44,105,110,32,116,104,101,32,87,101,115,116,116,104,101,121, +32,115,104,111,117,108,100,115,108,111,118,101,110,196,141,105,110,97,99,111,109 +,101,110,116,97,114,105,111,115,117,110,105,118,101,114,115,105,100,97,100,99, +111,110,100,105,99,105,111,110,101,115,97,99,116,105,118,105,100,97,100,101,115, +101,120,112,101,114,105,101,110,99,105,97,116,101,99,110,111,108,111,103,195,173 +,97,112,114,111,100,117,99,99,105,195,179,110,112,117,110,116,117,97,99,105,195, +179,110,97,112,108,105,99,97,99,105,195,179,110,99,111,110,116,114,97,115,101, +195,177,97,99,97,116,101,103,111,114,195,173,97,115,114,101,103,105,115,116,114, +97,114,115,101,112,114,111,102,101,115,105,111,110,97,108,116,114,97,116,97,109, +105,101,110,116,111,114,101,103,195,173,115,116,114,97,116,101,115,101,99,114, +101,116,97,114,195,173,97,112,114,105,110,99,105,112,97,108,101,115,112,114,111, +116,101,99,99,105,195,179,110,105,109,112,111,114,116,97,110,116,101,115,105,109 +,112,111,114,116,97,110,99,105,97,112,111,115,105,98,105,108,105,100,97,100,105, +110,116,101,114,101,115,97,110,116,101,99,114,101,99,105,109,105,101,110,116,111 +,110,101,99,101,115,105,100,97,100,101,115,115,117,115,99,114,105,98,105,114,115 +,101,97,115,111,99,105,97,99,105,195,179,110,100,105,115,112,111,110,105,98,108, +101,115,101,118,97,108,117,97,99,105,195,179,110,101,115,116,117,100,105,97,110, +116,101,115,114,101,115,112,111,110,115,97,98,108,101,114,101,115,111,108,117,99 +,105,195,179,110,103,117,97,100,97,108,97,106,97,114,97,114,101,103,105,115,116, +114,97,100,111,115,111,112,111,114,116,117,110,105,100,97,100,99,111,109,101,114 +,99,105,97,108,101,115,102,111,116,111,103,114,97,102,195,173,97,97,117,116,111, +114,105,100,97,100,101,115,105,110,103,101,110,105,101,114,195,173,97,116,101, +108,101,118,105,115,105,195,179,110,99,111,109,112,101,116,101,110,99,105,97,111 +,112,101,114,97,99,105,111,110,101,115,101,115,116,97,98,108,101,99,105,100,111, +115,105,109,112,108,101,109,101,110,116,101,97,99,116,117,97,108,109,101,110,116 +,101,110,97,118,101,103,97,99,105,195,179,110,99,111,110,102,111,114,109,105,100 +,97,100,108,105,110,101,45,104,101,105,103,104,116,58,102,111,110,116,45,102,97, +109,105,108,121,58,34,32,58,32,34,104,116,116,112,58,47,47,97,112,112,108,105,99 +,97,116,105,111,110,115,108,105,110,107,34,32,104,114,101,102,61,34,115,112,101, +99,105,102,105,99,97,108,108,121,47,47,60,33,91,67,68,65,84,65,91,10,79,114,103, +97,110,105,122,97,116,105,111,110,100,105,115,116,114,105,98,117,116,105,111,110 +,48,112,120,59,32,104,101,105,103,104,116,58,114,101,108,97,116,105,111,110,115, +104,105,112,100,101,118,105,99,101,45,119,105,100,116,104,60,100,105,118,32,99, +108,97,115,115,61,34,60,108,97,98,101,108,32,102,111,114,61,34,114,101,103,105, +115,116,114,97,116,105,111,110,60,47,110,111,115,99,114,105,112,116,62,10,47,105 +,110,100,101,120,46,104,116,109,108,34,119,105,110,100,111,119,46,111,112,101, +110,40,32,33,105,109,112,111,114,116,97,110,116,59,97,112,112,108,105,99,97,116, +105,111,110,47,105,110,100,101,112,101,110,100,101,110,99,101,47,47,119,119,119, +46,103,111,111,103,108,101,111,114,103,97,110,105,122,97,116,105,111,110,97,117, +116,111,99,111,109,112,108,101,116,101,114,101,113,117,105,114,101,109,101,110, +116,115,99,111,110,115,101,114,118,97,116,105,118,101,60,102,111,114,109,32,110, +97,109,101,61,34,105,110,116,101,108,108,101,99,116,117,97,108,109,97,114,103, +105,110,45,108,101,102,116,58,49,56,116,104,32,99,101,110,116,117,114,121,97,110 +,32,105,109,112,111,114,116,97,110,116,105,110,115,116,105,116,117,116,105,111, +110,115,97,98,98,114,101,118,105,97,116,105,111,110,60,105,109,103,32,99,108,97, +115,115,61,34,111,114,103,97,110,105,115,97,116,105,111,110,99,105,118,105,108, +105,122,97,116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,97,114,99 +,104,105,116,101,99,116,117,114,101,105,110,99,111,114,112,111,114,97,116,101, +100,50,48,116,104,32,99,101,110,116,117,114,121,45,99,111,110,116,97,105,110,101 +,114,34,62,109,111,115,116,32,110,111,116,97,98,108,121,47,62,60,47,97,62,60,47, +100,105,118,62,110,111,116,105,102,105,99,97,116,105,111,110,39,117,110,100,101, +102,105,110,101,100,39,41,70,117,114,116,104,101,114,109,111,114,101,44,98,101, +108,105,101,118,101,32,116,104,97,116,105,110,110,101,114,72,84,77,76,32,61,32, +112,114,105,111,114,32,116,111,32,116,104,101,100,114,97,109,97,116,105,99,97, +108,108,121,114,101,102,101,114,114,105,110,103,32,116,111,110,101,103,111,116, +105,97,116,105,111,110,115,104,101,97,100,113,117,97,114,116,101,114,115,83,111, +117,116,104,32,65,102,114,105,99,97,117,110,115,117,99,99,101,115,115,102,117, +108,80,101,110,110,115,121,108,118,97,110,105,97,65,115,32,97,32,114,101,115,117 +,108,116,44,60,104,116,109,108,32,108,97,110,103,61,34,38,108,116,59,47,115,117, +112,38,103,116,59,100,101,97,108,105,110,103,32,119,105,116,104,112,104,105,108, +97,100,101,108,112,104,105,97,104,105,115,116,111,114,105,99,97,108,108,121,41, +59,60,47,115,99,114,105,112,116,62,10,112,97,100,100,105,110,103,45,116,111,112, +58,101,120,112,101,114,105,109,101,110,116,97,108,103,101,116,65,116,116,114,105 +,98,117,116,101,105,110,115,116,114,117,99,116,105,111,110,115,116,101,99,104, +110,111,108,111,103,105,101,115,112,97,114,116,32,111,102,32,116,104,101,32,61, +102,117,110,99,116,105,111,110,40,41,123,115,117,98,115,99,114,105,112,116,105, +111,110,108,46,100,116,100,34,62,13,10,60,104,116,103,101,111,103,114,97,112,104 +,105,99,97,108,67,111,110,115,116,105,116,117,116,105,111,110,39,44,32,102,117, +110,99,116,105,111,110,40,115,117,112,112,111,114,116,101,100,32,98,121,97,103, +114,105,99,117,108,116,117,114,97,108,99,111,110,115,116,114,117,99,116,105,111, +110,112,117,98,108,105,99,97,116,105,111,110,115,102,111,110,116,45,115,105,122, +101,58,32,49,97,32,118,97,114,105,101,116,121,32,111,102,60,100,105,118,32,115, +116,121,108,101,61,34,69,110,99,121,99,108,111,112,101,100,105,97,105,102,114,97 +,109,101,32,115,114,99,61,34,100,101,109,111,110,115,116,114,97,116,101,100,97, +99,99,111,109,112,108,105,115,104,101,100,117,110,105,118,101,114,115,105,116, +105,101,115,68,101,109,111,103,114,97,112,104,105,99,115,41,59,60,47,115,99,114, +105,112,116,62,60,100,101,100,105,99,97,116,101,100,32,116,111,107,110,111,119, +108,101,100,103,101,32,111,102,115,97,116,105,115,102,97,99,116,105,111,110,112, +97,114,116,105,99,117,108,97,114,108,121,60,47,100,105,118,62,60,47,100,105,118, +62,69,110,103,108,105,115,104,32,40,85,83,41,97,112,112,101,110,100,67,104,105, +108,100,40,116,114,97,110,115,109,105,115,115,105,111,110,115,46,32,72,111,119, +101,118,101,114,44,32,105,110,116,101,108,108,105,103,101,110,99,101,34,32,116, +97,98,105,110,100,101,120,61,34,102,108,111,97,116,58,114,105,103,104,116,59,67, +111,109,109,111,110,119,101,97,108,116,104,114,97,110,103,105,110,103,32,102,114 +,111,109,105,110,32,119,104,105,99,104,32,116,104,101,97,116,32,108,101,97,115, +116,32,111,110,101,114,101,112,114,111,100,117,99,116,105,111,110,101,110,99,121 +,99,108,111,112,101,100,105,97,59,102,111,110,116,45,115,105,122,101,58,49,106, +117,114,105,115,100,105,99,116,105,111,110,97,116,32,116,104,97,116,32,116,105, +109,101,34,62,60,97,32,99,108,97,115,115,61,34,73,110,32,97,100,100,105,116,105, +111,110,44,100,101,115,99,114,105,112,116,105,111,110,43,99,111,110,118,101,114, +115,97,116,105,111,110,99,111,110,116,97,99,116,32,119,105,116,104,105,115,32, +103,101,110,101,114,97,108,108,121,114,34,32,99,111,110,116,101,110,116,61,34, +114,101,112,114,101,115,101,110,116,105,110,103,38,108,116,59,109,97,116,104,38, +103,116,59,112,114,101,115,101,110,116,97,116,105,111,110,111,99,99,97,115,105, +111,110,97,108,108,121,60,105,109,103,32,119,105,100,116,104,61,34,110,97,118, +105,103,97,116,105,111,110,34,62,99,111,109,112,101,110,115,97,116,105,111,110, +99,104,97,109,112,105,111,110,115,104,105,112,109,101,100,105,97,61,34,97,108, +108,34,32,118,105,111,108,97,116,105,111,110,32,111,102,114,101,102,101,114,101, +110,99,101,32,116,111,114,101,116,117,114,110,32,116,114,117,101,59,83,116,114, +105,99,116,47,47,69,78,34,32,116,114,97,110,115,97,99,116,105,111,110,115,105, +110,116,101,114,118,101,110,116,105,111,110,118,101,114,105,102,105,99,97,116, +105,111,110,73,110,102,111,114,109,97,116,105,111,110,32,100,105,102,102,105,99, +117,108,116,105,101,115,67,104,97,109,112,105,111,110,115,104,105,112,99,97,112, +97,98,105,108,105,116,105,101,115,60,33,91,101,110,100,105,102,93,45,45,62,125, +10,60,47,115,99,114,105,112,116,62,10,67,104,114,105,115,116,105,97,110,105,116, +121,102,111,114,32,101,120,97,109,112,108,101,44,80,114,111,102,101,115,115,105, +111,110,97,108,114,101,115,116,114,105,99,116,105,111,110,115,115,117,103,103, +101,115,116,32,116,104,97,116,119,97,115,32,114,101,108,101,97,115,101,100,40, +115,117,99,104,32,97,115,32,116,104,101,114,101,109,111,118,101,67,108,97,115, +115,40,117,110,101,109,112,108,111,121,109,101,110,116,116,104,101,32,65,109,101 +,114,105,99,97,110,115,116,114,117,99,116,117,114,101,32,111,102,47,105,110,100, +101,120,46,104,116,109,108,32,112,117,98,108,105,115,104,101,100,32,105,110,115, +112,97,110,32,99,108,97,115,115,61,34,34,62,60,97,32,104,114,101,102,61,34,47, +105,110,116,114,111,100,117,99,116,105,111,110,98,101,108,111,110,103,105,110, +103,32,116,111,99,108,97,105,109,101,100,32,116,104,97,116,99,111,110,115,101, +113,117,101,110,99,101,115,60,109,101,116,97,32,110,97,109,101,61,34,71,117,105, +100,101,32,116,111,32,116,104,101,111,118,101,114,119,104,101,108,109,105,110, +103,97,103,97,105,110,115,116,32,116,104,101,32,99,111,110,99,101,110,116,114,97 +,116,101,100,44,10,46,110,111,110,116,111,117,99,104,32,111,98,115,101,114,118, +97,116,105,111,110,115,60,47,97,62,10,60,47,100,105,118,62,10,102,32,40,100,111, +99,117,109,101,110,116,46,98,111,114,100,101,114,58,32,49,112,120,32,123,102,111 +,110,116,45,115,105,122,101,58,49,116,114,101,97,116,109,101,110,116,32,111,102, +48,34,32,104,101,105,103,104,116,61,34,49,109,111,100,105,102,105,99,97,116,105, +111,110,73,110,100,101,112,101,110,100,101,110,99,101,100,105,118,105,100,101, +100,32,105,110,116,111,103,114,101,97,116,101,114,32,116,104,97,110,97,99,104, +105,101,118,101,109,101,110,116,115,101,115,116,97,98,108,105,115,104,105,110, +103,74,97,118,97,83,99,114,105,112,116,34,32,110,101,118,101,114,116,104,101,108 +,101,115,115,115,105,103,110,105,102,105,99,97,110,99,101,66,114,111,97,100,99, +97,115,116,105,110,103,62,38,110,98,115,112,59,60,47,116,100,62,99,111,110,116, +97,105,110,101,114,34,62,10,115,117,99,104,32,97,115,32,116,104,101,32,105,110, +102,108,117,101,110,99,101,32,111,102,97,32,112,97,114,116,105,99,117,108,97,114 +,115,114,99,61,39,104,116,116,112,58,47,47,110,97,118,105,103,97,116,105,111,110 +,34,32,104,97,108,102,32,111,102,32,116,104,101,32,115,117,98,115,116,97,110,116 +,105,97,108,32,38,110,98,115,112,59,60,47,100,105,118,62,97,100,118,97,110,116, +97,103,101,32,111,102,100,105,115,99,111,118,101,114,121,32,111,102,102,117,110, +100,97,109,101,110,116,97,108,32,109,101,116,114,111,112,111,108,105,116,97,110, +116,104,101,32,111,112,112,111,115,105,116,101,34,32,120,109,108,58,108,97,110, +103,61,34,100,101,108,105,98,101,114,97,116,101,108,121,97,108,105,103,110,61,99 +,101,110,116,101,114,101,118,111,108,117,116,105,111,110,32,111,102,112,114,101, +115,101,114,118,97,116,105,111,110,105,109,112,114,111,118,101,109,101,110,116, +115,98,101,103,105,110,110,105,110,103,32,105,110,74,101,115,117,115,32,67,104, +114,105,115,116,80,117,98,108,105,99,97,116,105,111,110,115,100,105,115,97,103, +114,101,101,109,101,110,116,116,101,120,116,45,97,108,105,103,110,58,114,44,32, +102,117,110,99,116,105,111,110,40,41,115,105,109,105,108,97,114,105,116,105,101, +115,98,111,100,121,62,60,47,104,116,109,108,62,105,115,32,99,117,114,114,101,110 +,116,108,121,97,108,112,104,97,98,101,116,105,99,97,108,105,115,32,115,111,109, +101,116,105,109,101,115,116,121,112,101,61,34,105,109,97,103,101,47,109,97,110, +121,32,111,102,32,116,104,101,32,102,108,111,119,58,104,105,100,100,101,110,59, +97,118,97,105,108,97,98,108,101,32,105,110,100,101,115,99,114,105,98,101,32,116, +104,101,101,120,105,115,116,101,110,99,101,32,111,102,97,108,108,32,111,118,101, +114,32,116,104,101,116,104,101,32,73,110,116,101,114,110,101,116,9,60,117,108,32 +,99,108,97,115,115,61,34,105,110,115,116,97,108,108,97,116,105,111,110,110,101, +105,103,104,98,111,114,104,111,111,100,97,114,109,101,100,32,102,111,114,99,101, +115,114,101,100,117,99,105,110,103,32,116,104,101,99,111,110,116,105,110,117,101 +,115,32,116,111,78,111,110,101,116,104,101,108,101,115,115,44,116,101,109,112, +101,114,97,116,117,114,101,115,10,9,9,60,97,32,104,114,101,102,61,34,99,108,111, +115,101,32,116,111,32,116,104,101,101,120,97,109,112,108,101,115,32,111,102,32, +105,115,32,97,98,111,117,116,32,116,104,101,40,115,101,101,32,98,101,108,111,119 +,41,46,34,32,105,100,61,34,115,101,97,114,99,104,112,114,111,102,101,115,115,105 +,111,110,97,108,105,115,32,97,118,97,105,108,97,98,108,101,116,104,101,32,111, +102,102,105,99,105,97,108,9,9,60,47,115,99,114,105,112,116,62,10,10,9,9,60,100, +105,118,32,105,100,61,34,97,99,99,101,108,101,114,97,116,105,111,110,116,104,114 +,111,117,103,104,32,116,104,101,32,72,97,108,108,32,111,102,32,70,97,109,101,100 +,101,115,99,114,105,112,116,105,111,110,115,116,114,97,110,115,108,97,116,105, +111,110,115,105,110,116,101,114,102,101,114,101,110,99,101,32,116,121,112,101,61 +,39,116,101,120,116,47,114,101,99,101,110,116,32,121,101,97,114,115,105,110,32, +116,104,101,32,119,111,114,108,100,118,101,114,121,32,112,111,112,117,108,97,114 +,123,98,97,99,107,103,114,111,117,110,100,58,116,114,97,100,105,116,105,111,110, +97,108,32,115,111,109,101,32,111,102,32,116,104,101,32,99,111,110,110,101,99,116 +,101,100,32,116,111,101,120,112,108,111,105,116,97,116,105,111,110,101,109,101, +114,103,101,110,99,101,32,111,102,99,111,110,115,116,105,116,117,116,105,111,110 +,65,32,72,105,115,116,111,114,121,32,111,102,115,105,103,110,105,102,105,99,97, +110,116,32,109,97,110,117,102,97,99,116,117,114,101,100,101,120,112,101,99,116, +97,116,105,111,110,115,62,60,110,111,115,99,114,105,112,116,62,60,99,97,110,32, +98,101,32,102,111,117,110,100,98,101,99,97,117,115,101,32,116,104,101,32,104,97, +115,32,110,111,116,32,98,101,101,110,110,101,105,103,104,98,111,117,114,105,110, +103,119,105,116,104,111,117,116,32,116,104,101,32,97,100,100,101,100,32,116,111, +32,116,104,101,9,60,108,105,32,99,108,97,115,115,61,34,105,110,115,116,114,117, +109,101,110,116,97,108,83,111,118,105,101,116,32,85,110,105,111,110,97,99,107, +110,111,119,108,101,100,103,101,100,119,104,105,99,104,32,99,97,110,32,98,101, +110,97,109,101,32,102,111,114,32,116,104,101,97,116,116,101,110,116,105,111,110, +32,116,111,97,116,116,101,109,112,116,115,32,116,111,32,100,101,118,101,108,111, +112,109,101,110,116,115,73,110,32,102,97,99,116,44,32,116,104,101,60,108,105,32, +99,108,97,115,115,61,34,97,105,109,112,108,105,99,97,116,105,111,110,115,115,117 +,105,116,97,98,108,101,32,102,111,114,109,117,99,104,32,111,102,32,116,104,101, +32,99,111,108,111,110,105,122,97,116,105,111,110,112,114,101,115,105,100,101,110 +,116,105,97,108,99,97,110,99,101,108,66,117,98,98,108,101,32,73,110,102,111,114, +109,97,116,105,111,110,109,111,115,116,32,111,102,32,116,104,101,32,105,115,32, +100,101,115,99,114,105,98,101,100,114,101,115,116,32,111,102,32,116,104,101,32, +109,111,114,101,32,111,114,32,108,101,115,115,105,110,32,83,101,112,116,101,109, +98,101,114,73,110,116,101,108,108,105,103,101,110,99,101,115,114,99,61,34,104, +116,116,112,58,47,47,112,120,59,32,104,101,105,103,104,116,58,32,97,118,97,105, +108,97,98,108,101,32,116,111,109,97,110,117,102,97,99,116,117,114,101,114,104, +117,109,97,110,32,114,105,103,104,116,115,108,105,110,107,32,104,114,101,102,61, +34,47,97,118,97,105,108,97,98,105,108,105,116,121,112,114,111,112,111,114,116, +105,111,110,97,108,111,117,116,115,105,100,101,32,116,104,101,32,97,115,116,114, +111,110,111,109,105,99,97,108,104,117,109,97,110,32,98,101,105,110,103,115,110, +97,109,101,32,111,102,32,116,104,101,32,97,114,101,32,102,111,117,110,100,32,105 +,110,97,114,101,32,98,97,115,101,100,32,111,110,115,109,97,108,108,101,114,32, +116,104,97,110,97,32,112,101,114,115,111,110,32,119,104,111,101,120,112,97,110, +115,105,111,110,32,111,102,97,114,103,117,105,110,103,32,116,104,97,116,110,111, +119,32,107,110,111,119,110,32,97,115,73,110,32,116,104,101,32,101,97,114,108,121 +,105,110,116,101,114,109,101,100,105,97,116,101,100,101,114,105,118,101,100,32, +102,114,111,109,83,99,97,110,100,105,110,97,118,105,97,110,60,47,97,62,60,47,100 +,105,118,62,13,10,99,111,110,115,105,100,101,114,32,116,104,101,97,110,32,101, +115,116,105,109,97,116,101,100,116,104,101,32,78,97,116,105,111,110,97,108,60, +100,105,118,32,105,100,61,34,112,97,103,114,101,115,117,108,116,105,110,103,32, +105,110,99,111,109,109,105,115,115,105,111,110,101,100,97,110,97,108,111,103,111 +,117,115,32,116,111,97,114,101,32,114,101,113,117,105,114,101,100,47,117,108,62, +10,60,47,100,105,118,62,10,119,97,115,32,98,97,115,101,100,32,111,110,97,110,100 +,32,98,101,99,97,109,101,32,97,38,110,98,115,112,59,38,110,98,115,112,59,116,34, +32,118,97,108,117,101,61,34,34,32,119,97,115,32,99,97,112,116,117,114,101,100, +110,111,32,109,111,114,101,32,116,104,97,110,114,101,115,112,101,99,116,105,118, +101,108,121,99,111,110,116,105,110,117,101,32,116,111,32,62,13,10,60,104,101,97, +100,62,13,10,60,119,101,114,101,32,99,114,101,97,116,101,100,109,111,114,101,32, +103,101,110,101,114,97,108,105,110,102,111,114,109,97,116,105,111,110,32,117,115 +,101,100,32,102,111,114,32,116,104,101,105,110,100,101,112,101,110,100,101,110, +116,32,116,104,101,32,73,109,112,101,114,105,97,108,99,111,109,112,111,110,101, +110,116,32,111,102,116,111,32,116,104,101,32,110,111,114,116,104,105,110,99,108, +117,100,101,32,116,104,101,32,67,111,110,115,116,114,117,99,116,105,111,110,115, +105,100,101,32,111,102,32,116,104,101,32,119,111,117,108,100,32,110,111,116,32, +98,101,102,111,114,32,105,110,115,116,97,110,99,101,105,110,118,101,110,116,105, +111,110,32,111,102,109,111,114,101,32,99,111,109,112,108,101,120,99,111,108,108, +101,99,116,105,118,101,108,121,98,97,99,107,103,114,111,117,110,100,58,32,116, +101,120,116,45,97,108,105,103,110,58,32,105,116,115,32,111,114,105,103,105,110, +97,108,105,110,116,111,32,97,99,99,111,117,110,116,116,104,105,115,32,112,114, +111,99,101,115,115,97,110,32,101,120,116,101,110,115,105,118,101,104,111,119,101 +,118,101,114,44,32,116,104,101,116,104,101,121,32,97,114,101,32,110,111,116,114, +101,106,101,99,116,101,100,32,116,104,101,99,114,105,116,105,99,105,115,109,32, +111,102,100,117,114,105,110,103,32,119,104,105,99,104,112,114,111,98,97,98,108, +121,32,116,104,101,116,104,105,115,32,97,114,116,105,99,108,101,40,102,117,110, +99,116,105,111,110,40,41,123,73,116,32,115,104,111,117,108,100,32,98,101,97,110, +32,97,103,114,101,101,109,101,110,116,97,99,99,105,100,101,110,116,97,108,108, +121,100,105,102,102,101,114,115,32,102,114,111,109,65,114,99,104,105,116,101,99, +116,117,114,101,98,101,116,116,101,114,32,107,110,111,119,110,97,114,114,97,110, +103,101,109,101,110,116,115,105,110,102,108,117,101,110,99,101,32,111,110,97,116 +,116,101,110,100,101,100,32,116,104,101,105,100,101,110,116,105,99,97,108,32,116 +,111,115,111,117,116,104,32,111,102,32,116,104,101,112,97,115,115,32,116,104,114 +,111,117,103,104,120,109,108,34,32,116,105,116,108,101,61,34,119,101,105,103,104 +,116,58,98,111,108,100,59,99,114,101,97,116,105,110,103,32,116,104,101,100,105, +115,112,108,97,121,58,110,111,110,101,114,101,112,108,97,99,101,100,32,116,104, +101,60,105,109,103,32,115,114,99,61,34,47,105,104,116,116,112,115,58,47,47,119, +119,119,46,87,111,114,108,100,32,87,97,114,32,73,73,116,101,115,116,105,109,111, +110,105,97,108,115,102,111,117,110,100,32,105,110,32,116,104,101,114,101,113,117 +,105,114,101,100,32,116,111,32,97,110,100,32,116,104,97,116,32,116,104,101,98, +101,116,119,101,101,110,32,116,104,101,32,119,97,115,32,100,101,115,105,103,110, +101,100,99,111,110,115,105,115,116,115,32,111,102,32,99,111,110,115,105,100,101, +114,97,98,108,121,112,117,98,108,105,115,104,101,100,32,98,121,116,104,101,32, +108,97,110,103,117,97,103,101,67,111,110,115,101,114,118,97,116,105,111,110,99, +111,110,115,105,115,116,101,100,32,111,102,114,101,102,101,114,32,116,111,32,116 +,104,101,98,97,99,107,32,116,111,32,116,104,101,32,99,115,115,34,32,109,101,100, +105,97,61,34,80,101,111,112,108,101,32,102,114,111,109,32,97,118,97,105,108,97, +98,108,101,32,111,110,112,114,111,118,101,100,32,116,111,32,98,101,115,117,103, +103,101,115,116,105,111,110,115,34,119,97,115,32,107,110,111,119,110,32,97,115, +118,97,114,105,101,116,105,101,115,32,111,102,108,105,107,101,108,121,32,116,111 +,32,98,101,99,111,109,112,114,105,115,101,100,32,111,102,115,117,112,112,111,114 +,116,32,116,104,101,32,104,97,110,100,115,32,111,102,32,116,104,101,99,111,117, +112,108,101,100,32,119,105,116,104,99,111,110,110,101,99,116,32,97,110,100,32,98 +,111,114,100,101,114,58,110,111,110,101,59,112,101,114,102,111,114,109,97,110,99 +,101,115,98,101,102,111,114,101,32,98,101,105,110,103,108,97,116,101,114,32,98, +101,99,97,109,101,99,97,108,99,117,108,97,116,105,111,110,115,111,102,116,101, +110,32,99,97,108,108,101,100,114,101,115,105,100,101,110,116,115,32,111,102,109, +101,97,110,105,110,103,32,116,104,97,116,62,60,108,105,32,99,108,97,115,115,61, +34,101,118,105,100,101,110,99,101,32,102,111,114,101,120,112,108,97,110,97,116, +105,111,110,115,101,110,118,105,114,111,110,109,101,110,116,115,34,62,60,47,97, +62,60,47,100,105,118,62,119,104,105,99,104,32,97,108,108,111,119,115,73,110,116, +114,111,100,117,99,116,105,111,110,100,101,118,101,108,111,112,101,100,32,98,121 +,97,32,119,105,100,101,32,114,97,110,103,101,111,110,32,98,101,104,97,108,102,32 +,111,102,118,97,108,105,103,110,61,34,116,111,112,34,112,114,105,110,99,105,112, +108,101,32,111,102,97,116,32,116,104,101,32,116,105,109,101,44,60,47,110,111,115 +,99,114,105,112,116,62,13,115,97,105,100,32,116,111,32,104,97,118,101,105,110,32 +,116,104,101,32,102,105,114,115,116,119,104,105,108,101,32,111,116,104,101,114, +115,104,121,112,111,116,104,101,116,105,99,97,108,112,104,105,108,111,115,111, +112,104,101,114,115,112,111,119,101,114,32,111,102,32,116,104,101,99,111,110,116 +,97,105,110,101,100,32,105,110,112,101,114,102,111,114,109,101,100,32,98,121,105 +,110,97,98,105,108,105,116,121,32,116,111,119,101,114,101,32,119,114,105,116,116 +,101,110,115,112,97,110,32,115,116,121,108,101,61,34,105,110,112,117,116,32,110, +97,109,101,61,34,116,104,101,32,113,117,101,115,116,105,111,110,105,110,116,101, +110,100,101,100,32,102,111,114,114,101,106,101,99,116,105,111,110,32,111,102,105 +,109,112,108,105,101,115,32,116,104,97,116,105,110,118,101,110,116,101,100,32, +116,104,101,116,104,101,32,115,116,97,110,100,97,114,100,119,97,115,32,112,114, +111,98,97,98,108,121,108,105,110,107,32,98,101,116,119,101,101,110,112,114,111, +102,101,115,115,111,114,32,111,102,105,110,116,101,114,97,99,116,105,111,110,115 +,99,104,97,110,103,105,110,103,32,116,104,101,73,110,100,105,97,110,32,79,99,101 +,97,110,32,99,108,97,115,115,61,34,108,97,115,116,119,111,114,107,105,110,103,32 +,119,105,116,104,39,104,116,116,112,58,47,47,119,119,119,46,121,101,97,114,115, +32,98,101,102,111,114,101,84,104,105,115,32,119,97,115,32,116,104,101,114,101,99 +,114,101,97,116,105,111,110,97,108,101,110,116,101,114,105,110,103,32,116,104, +101,109,101,97,115,117,114,101,109,101,110,116,115,97,110,32,101,120,116,114,101 +,109,101,108,121,118,97,108,117,101,32,111,102,32,116,104,101,115,116,97,114,116 +,32,111,102,32,116,104,101,10,60,47,115,99,114,105,112,116,62,10,10,97,110,32, +101,102,102,111,114,116,32,116,111,105,110,99,114,101,97,115,101,32,116,104,101, +116,111,32,116,104,101,32,115,111,117,116,104,115,112,97,99,105,110,103,61,34,48 +,34,62,115,117,102,102,105,99,105,101,110,116,108,121,116,104,101,32,69,117,114, +111,112,101,97,110,99,111,110,118,101,114,116,101,100,32,116,111,99,108,101,97, +114,84,105,109,101,111,117,116,100,105,100,32,110,111,116,32,104,97,118,101,99, +111,110,115,101,113,117,101,110,116,108,121,102,111,114,32,116,104,101,32,110, +101,120,116,101,120,116,101,110,115,105,111,110,32,111,102,101,99,111,110,111, +109,105,99,32,97,110,100,97,108,116,104,111,117,103,104,32,116,104,101,97,114, +101,32,112,114,111,100,117,99,101,100,97,110,100,32,119,105,116,104,32,116,104, +101,105,110,115,117,102,102,105,99,105,101,110,116,103,105,118,101,110,32,98,121 +,32,116,104,101,115,116,97,116,105,110,103,32,116,104,97,116,101,120,112,101,110 +,100,105,116,117,114,101,115,60,47,115,112,97,110,62,60,47,97,62,10,116,104,111, +117,103,104,116,32,116,104,97,116,111,110,32,116,104,101,32,98,97,115,105,115,99 +,101,108,108,112,97,100,100,105,110,103,61,105,109,97,103,101,32,111,102,32,116, +104,101,114,101,116,117,114,110,105,110,103,32,116,111,105,110,102,111,114,109, +97,116,105,111,110,44,115,101,112,97,114,97,116,101,100,32,98,121,97,115,115,97, +115,115,105,110,97,116,101,100,115,34,32,99,111,110,116,101,110,116,61,34,97,117 +,116,104,111,114,105,116,121,32,111,102,110,111,114,116,104,119,101,115,116,101, +114,110,60,47,100,105,118,62,10,60,100,105,118,32,34,62,60,47,100,105,118,62,13, +10,32,32,99,111,110,115,117,108,116,97,116,105,111,110,99,111,109,109,117,110, +105,116,121,32,111,102,116,104,101,32,110,97,116,105,111,110,97,108,105,116,32, +115,104,111,117,108,100,32,98,101,112,97,114,116,105,99,105,112,97,110,116,115, +32,97,108,105,103,110,61,34,108,101,102,116,116,104,101,32,103,114,101,97,116, +101,115,116,115,101,108,101,99,116,105,111,110,32,111,102,115,117,112,101,114, +110,97,116,117,114,97,108,100,101,112,101,110,100,101,110,116,32,111,110,105,115 +,32,109,101,110,116,105,111,110,101,100,97,108,108,111,119,105,110,103,32,116, +104,101,119,97,115,32,105,110,118,101,110,116,101,100,97,99,99,111,109,112,97, +110,121,105,110,103,104,105,115,32,112,101,114,115,111,110,97,108,97,118,97,105, +108,97,98,108,101,32,97,116,115,116,117,100,121,32,111,102,32,116,104,101,111, +110,32,116,104,101,32,111,116,104,101,114,101,120,101,99,117,116,105,111,110,32, +111,102,72,117,109,97,110,32,82,105,103,104,116,115,116,101,114,109,115,32,111, +102,32,116,104,101,97,115,115,111,99,105,97,116,105,111,110,115,114,101,115,101, +97,114,99,104,32,97,110,100,115,117,99,99,101,101,100,101,100,32,98,121,100,101, +102,101,97,116,101,100,32,116,104,101,97,110,100,32,102,114,111,109,32,116,104, +101,98,117,116,32,116,104,101,121,32,97,114,101,99,111,109,109,97,110,100,101, +114,32,111,102,115,116,97,116,101,32,111,102,32,116,104,101,121,101,97,114,115, +32,111,102,32,97,103,101,116,104,101,32,115,116,117,100,121,32,111,102,60,117, +108,32,99,108,97,115,115,61,34,115,112,108,97,99,101,32,105,110,32,116,104,101, +119,104,101,114,101,32,104,101,32,119,97,115,60,108,105,32,99,108,97,115,115,61, +34,102,116,104,101,114,101,32,97,114,101,32,110,111,119,104,105,99,104,32,98,101 +,99,97,109,101,104,101,32,112,117,98,108,105,115,104,101,100,101,120,112,114,101 +,115,115,101,100,32,105,110,116,111,32,119,104,105,99,104,32,116,104,101,99,111, +109,109,105,115,115,105,111,110,101,114,102,111,110,116,45,119,101,105,103,104, +116,58,116,101,114,114,105,116,111,114,121,32,111,102,101,120,116,101,110,115, +105,111,110,115,34,62,82,111,109,97,110,32,69,109,112,105,114,101,101,113,117,97 +,108,32,116,111,32,116,104,101,73,110,32,99,111,110,116,114,97,115,116,44,104, +111,119,101,118,101,114,44,32,97,110,100,105,115,32,116,121,112,105,99,97,108, +108,121,97,110,100,32,104,105,115,32,119,105,102,101,40,97,108,115,111,32,99,97, +108,108,101,100,62,60,117,108,32,99,108,97,115,115,61,34,101,102,102,101,99,116, +105,118,101,108,121,32,101,118,111,108,118,101,100,32,105,110,116,111,115,101, +101,109,32,116,111,32,104,97,118,101,119,104,105,99,104,32,105,115,32,116,104, +101,116,104,101,114,101,32,119,97,115,32,110,111,97,110,32,101,120,99,101,108, +108,101,110,116,97,108,108,32,111,102,32,116,104,101,115,101,100,101,115,99,114, +105,98,101,100,32,98,121,73,110,32,112,114,97,99,116,105,99,101,44,98,114,111,97 +,100,99,97,115,116,105,110,103,99,104,97,114,103,101,100,32,119,105,116,104,114, +101,102,108,101,99,116,101,100,32,105,110,115,117,98,106,101,99,116,101,100,32, +116,111,109,105,108,105,116,97,114,121,32,97,110,100,116,111,32,116,104,101,32, +112,111,105,110,116,101,99,111,110,111,109,105,99,97,108,108,121,115,101,116,84, +97,114,103,101,116,105,110,103,97,114,101,32,97,99,116,117,97,108,108,121,118, +105,99,116,111,114,121,32,111,118,101,114,40,41,59,60,47,115,99,114,105,112,116, +62,99,111,110,116,105,110,117,111,117,115,108,121,114,101,113,117,105,114,101, +100,32,102,111,114,101,118,111,108,117,116,105,111,110,97,114,121,97,110,32,101, +102,102,101,99,116,105,118,101,110,111,114,116,104,32,111,102,32,116,104,101,44, +32,119,104,105,99,104,32,119,97,115,32,102,114,111,110,116,32,111,102,32,116,104 +,101,111,114,32,111,116,104,101,114,119,105,115,101,115,111,109,101,32,102,111, +114,109,32,111,102,104,97,100,32,110,111,116,32,98,101,101,110,103,101,110,101, +114,97,116,101,100,32,98,121,105,110,102,111,114,109,97,116,105,111,110,46,112, +101,114,109,105,116,116,101,100,32,116,111,105,110,99,108,117,100,101,115,32,116 +,104,101,100,101,118,101,108,111,112,109,101,110,116,44,101,110,116,101,114,101, +100,32,105,110,116,111,116,104,101,32,112,114,101,118,105,111,117,115,99,111,110 +,115,105,115,116,101,110,116,108,121,97,114,101,32,107,110,111,119,110,32,97,115 +,116,104,101,32,102,105,101,108,100,32,111,102,116,104,105,115,32,116,121,112, +101,32,111,102,103,105,118,101,110,32,116,111,32,116,104,101,116,104,101,32,116, +105,116,108,101,32,111,102,99,111,110,116,97,105,110,115,32,116,104,101,105,110, +115,116,97,110,99,101,115,32,111,102,105,110,32,116,104,101,32,110,111,114,116, +104,100,117,101,32,116,111,32,116,104,101,105,114,97,114,101,32,100,101,115,105, +103,110,101,100,99,111,114,112,111,114,97,116,105,111,110,115,119,97,115,32,116, +104,97,116,32,116,104,101,111,110,101,32,111,102,32,116,104,101,115,101,109,111, +114,101,32,112,111,112,117,108,97,114,115,117,99,99,101,101,100,101,100,32,105, +110,115,117,112,112,111,114,116,32,102,114,111,109,105,110,32,100,105,102,102, +101,114,101,110,116,100,111,109,105,110,97,116,101,100,32,98,121,100,101,115,105 +,103,110,101,100,32,102,111,114,111,119,110,101,114,115,104,105,112,32,111,102, +97,110,100,32,112,111,115,115,105,98,108,121,115,116,97,110,100,97,114,100,105, +122,101,100,114,101,115,112,111,110,115,101,84,101,120,116,119,97,115,32,105,110 +,116,101,110,100,101,100,114,101,99,101,105,118,101,100,32,116,104,101,97,115, +115,117,109,101,100,32,116,104,97,116,97,114,101,97,115,32,111,102,32,116,104, +101,112,114,105,109,97,114,105,108,121,32,105,110,116,104,101,32,98,97,115,105, +115,32,111,102,105,110,32,116,104,101,32,115,101,110,115,101,97,99,99,111,117, +110,116,115,32,102,111,114,100,101,115,116,114,111,121,101,100,32,98,121,97,116, +32,108,101,97,115,116,32,116,119,111,119,97,115,32,100,101,99,108,97,114,101,100 +,99,111,117,108,100,32,110,111,116,32,98,101,83,101,99,114,101,116,97,114,121,32 +,111,102,97,112,112,101,97,114,32,116,111,32,98,101,109,97,114,103,105,110,45, +116,111,112,58,49,47,94,92,115,43,124,92,115,43,36,47,103,101,41,123,116,104,114 +,111,119,32,101,125,59,116,104,101,32,115,116,97,114,116,32,111,102,116,119,111, +32,115,101,112,97,114,97,116,101,108,97,110,103,117,97,103,101,32,97,110,100,119 +,104,111,32,104,97,100,32,98,101,101,110,111,112,101,114,97,116,105,111,110,32, +111,102,100,101,97,116,104,32,111,102,32,116,104,101,114,101,97,108,32,110,117, +109,98,101,114,115,9,60,108,105,110,107,32,114,101,108,61,34,112,114,111,118,105 +,100,101,100,32,116,104,101,116,104,101,32,115,116,111,114,121,32,111,102,99,111 +,109,112,101,116,105,116,105,111,110,115,101,110,103,108,105,115,104,32,40,85,75 +,41,101,110,103,108,105,115,104,32,40,85,83,41,208,156,208,190,208,189,208,179, +208,190,208,187,208,161,209,128,208,191,209,129,208,186,208,184,209,129,209,128, +208,191,209,129,208,186,208,184,209,129,209,128,208,191,209,129,208,186,208,190, +217,132,216,185,216,177,216,168,217,138,216,169,230,173,163,233,171,148,228,184, +173,230,150,135,231,174,128,228,189,147,228,184,173,230,150,135,231,185,129,228, +189,147,228,184,173,230,150,135,230,156,137,233,153,144,229,133,172,229,143,184, +228,186,186,230,176,145,230,148,191,229,186,156,233,152,191,233,135,140,229,183, +180,229,183,180,231,164,190,228,188,154,228,184,187,228,185,137,230,147,141,228, +189,156,231,179,187,231,187,159,230,148,191,231,173,150,230,179,149,232,167,132, +105,110,102,111,114,109,97,99,105,195,179,110,104,101,114,114,97,109,105,101,110 +,116,97,115,101,108,101,99,116,114,195,179,110,105,99,111,100,101,115,99,114,105 +,112,99,105,195,179,110,99,108,97,115,105,102,105,99,97,100,111,115,99,111,110, +111,99,105,109,105,101,110,116,111,112,117,98,108,105,99,97,99,105,195,179,110, +114,101,108,97,99,105,111,110,97,100,97,115,105,110,102,111,114,109,195,161,116, +105,99,97,114,101,108,97,99,105,111,110,97,100,111,115,100,101,112,97,114,116,97 +,109,101,110,116,111,116,114,97,98,97,106,97,100,111,114,101,115,100,105,114,101 +,99,116,97,109,101,110,116,101,97,121,117,110,116,97,109,105,101,110,116,111,109 +,101,114,99,97,100,111,76,105,98,114,101,99,111,110,116,195,161,99,116,101,110, +111,115,104,97,98,105,116,97,99,105,111,110,101,115,99,117,109,112,108,105,109, +105,101,110,116,111,114,101,115,116,97,117,114,97,110,116,101,115,100,105,115, +112,111,115,105,99,105,195,179,110,99,111,110,115,101,99,117,101,110,99,105,97, +101,108,101,99,116,114,195,179,110,105,99,97,97,112,108,105,99,97,99,105,111,110 +,101,115,100,101,115,99,111,110,101,99,116,97,100,111,105,110,115,116,97,108,97, +99,105,195,179,110,114,101,97,108,105,122,97,99,105,195,179,110,117,116,105,108, +105,122,97,99,105,195,179,110,101,110,99,105,99,108,111,112,101,100,105,97,101, +110,102,101,114,109,101,100,97,100,101,115,105,110,115,116,114,117,109,101,110, +116,111,115,101,120,112,101,114,105,101,110,99,105,97,115,105,110,115,116,105, +116,117,99,105,195,179,110,112,97,114,116,105,99,117,108,97,114,101,115,115,117, +98,99,97,116,101,103,111,114,105,97,209,130,208,190,208,187,209,140,208,186,208, +190,208,160,208,190,209,129,209,129,208,184,208,184,209,128,208,176,208,177,208, +190,209,130,209,139,208,177,208,190,208,187,209,140,209,136,208,181,208,191,209, +128,208,190,209,129,209,130,208,190,208,188,208,190,208,182,208,181,209,130,208, +181,208,180,209,128,209,131,208,179,208,184,209,133,209,129,208,187,209,131,209, +135,208,176,208,181,209,129,208,181,208,185,209,135,208,176,209,129,208,178,209, +129,208,181,208,179,208,180,208,176,208,160,208,190,209,129,209,129,208,184,209, +143,208,156,208,190,209,129,208,186,208,178,208,181,208,180,209,128,209,131,208, +179,208,184,208,181,208,179,208,190,209,128,208,190,208,180,208,176,208,178,208, +190,208,191,209,128,208,190,209,129,208,180,208,176,208,189,208,189,209,139,209, +133,208,180,208,190,208,187,208,182,208,189,209,139,208,184,208,188,208,181,208, +189,208,189,208,190,208,156,208,190,209,129,208,186,208,178,209,139,209,128,209, +131,208,177,208,187,208,181,208,185,208,156,208,190,209,129,208,186,208,178,208, +176,209,129,209,130,209,128,208,176,208,189,209,139,208,189,208,184,209,135,208, +181,208,179,208,190,209,128,208,176,208,177,208,190,209,130,208,181,208,180,208, +190,208,187,208,182,208,181,208,189,209,131,209,129,208,187,209,131,208,179,208, +184,209,130,208,181,208,191,208,181,209,128,209,140,208,158,208,180,208,189,208, +176,208,186,208,190,208,191,208,190,209,130,208,190,208,188,209,131,209,128,208, +176,208,177,208,190,209,130,209,131,208,176,208,191,209,128,208,181,208,187,209, +143,208,178,208,190,208,190,208,177,209,137,208,181,208,190,208,180,208,189,208, +190,208,179,208,190,209,129,208,178,208,190,208,181,208,179,208,190,209,129,209, +130,208,176,209,130,209,140,208,184,208,180,209,128,209,131,208,179,208,190,208, +185,209,132,208,190,209,128,209,131,208,188,208,181,209,133,208,190,209,128,208, +190,209,136,208,190,208,191,209,128,208,190,209,130,208,184,208,178,209,129,209, +129,209,139,208,187,208,186,208,176,208,186,208,176,208,182,208,180,209,139,208, +185,208,178,208,187,208,176,209,129,209,130,208,184,208,179,209,128,209,131,208, +191,208,191,209,139,208,178,208,188,208,181,209,129,209,130,208,181,209,128,208, +176,208,177,208,190,209,130,208,176,209,129,208,186,208,176,208,183,208,176,208, +187,208,191,208,181,209,128,208,178,209,139,208,185,208,180,208,181,208,187,208, +176,209,130,209,140,208,180,208,181,208,189,209,140,208,179,208,184,208,191,208, +181,209,128,208,184,208,190,208,180,208,177,208,184,208,183,208,189,208,181,209, +129,208,190,209,129,208,189,208,190,208,178,208,181,208,188,208,190,208,188,208, +181,208,189,209,130,208,186,209,131,208,191,208,184,209,130,209,140,208,180,208, +190,208,187,208,182,208,189,208,176,209,128,208,176,208,188,208,186,208,176,209, +133,208,189,208,176,209,135,208,176,208,187,208,190,208,160,208,176,208,177,208, +190,209,130,208,176,208,162,208,190,208,187,209,140,208,186,208,190,209,129,208, +190,208,178,209,129,208,181,208,188,208,178,209,130,208,190,209,128,208,190,208, +185,208,189,208,176,209,135,208,176,208,187,208,176,209,129,208,191,208,184,209, +129,208,190,208,186,209,129,208,187,209,131,208,182,208,177,209,139,209,129,208, +184,209,129,209,130,208,181,208,188,208,191,208,181,209,135,208,176,209,130,208, +184,208,189,208,190,208,178,208,190,208,179,208,190,208,191,208,190,208,188,208, +190,209,137,208,184,209,129,208,176,208,185,209,130,208,190,208,178,208,191,208, +190,209,135,208,181,208,188,209,131,208,191,208,190,208,188,208,190,209,137,209, +140,208,180,208,190,208,187,208,182,208,189,208,190,209,129,209,129,209,139,208, +187,208,186,208,184,208,177,209,139,209,129,209,130,209,128,208,190,208,180,208, +176,208,189,208,189,209,139,208,181,208,188,208,189,208,190,208,179,208,184,208, +181,208,191,209,128,208,190,208,181,208,186,209,130,208,161,208,181,208,185,209, +135,208,176,209,129,208,188,208,190,208,180,208,181,208,187,208,184,209,130,208, +176,208,186,208,190,208,179,208,190,208,190,208,189,208,187,208,176,208,185,208, +189,208,179,208,190,209,128,208,190,208,180,208,181,208,178,208,181,209,128,209, +129,208,184,209,143,209,129,209,130,209,128,208,176,208,189,208,181,209,132,208, +184,208,187,209,140,208,188,209,139,209,131,209,128,208,190,208,178,208,189,209, +143,209,128,208,176,208,183,208,189,209,139,209,133,208,184,209,129,208,186,208, +176,209,130,209,140,208,189,208,181,208,180,208,181,208,187,209,142,209,143,208, +189,208,178,208,176,209,128,209,143,208,188,208,181,208,189,209,140,209,136,208, +181,208,188,208,189,208,190,208,179,208,184,209,133,208,180,208,176,208,189,208, +189,208,190,208,185,208,183,208,189,208,176,209,135,208,184,209,130,208,189,208, +181,208,187,209,140,208,183,209,143,209,132,208,190,209,128,209,131,208,188,208, +176,208,162,208,181,208,191,208,181,209,128,209,140,208,188,208,181,209,129,209, +143,209,134,208,176,208,183,208,176,209,137,208,184,209,130,209,139,208,155,209, +131,209,135,209,136,208,184,208,181,224,164,168,224,164,185,224,165,128,224,164, +130,224,164,149,224,164,176,224,164,168,224,165,135,224,164,133,224,164,170,224, +164,168,224,165,135,224,164,149,224,164,191,224,164,175,224,164,190,224,164,149, +224,164,176,224,165,135,224,164,130,224,164,133,224,164,168,224,165,141,224,164, +175,224,164,149,224,165,141,224,164,175,224,164,190,224,164,151,224,164,190,224, +164,135,224,164,161,224,164,172,224,164,190,224,164,176,224,165,135,224,164,149, +224,164,191,224,164,184,224,165,128,224,164,166,224,164,191,224,164,175,224,164, +190,224,164,170,224,164,185,224,164,178,224,165,135,224,164,184,224,164,191,224, +164,130,224,164,185,224,164,173,224,164,190,224,164,176,224,164,164,224,164,133, +224,164,170,224,164,168,224,165,128,224,164,181,224,164,190,224,164,178,224,165, +135,224,164,184,224,165,135,224,164,181,224,164,190,224,164,149,224,164,176,224, +164,164,224,165,135,224,164,174,224,165,135,224,164,176,224,165,135,224,164,185, +224,165,139,224,164,168,224,165,135,224,164,184,224,164,149,224,164,164,224,165, +135,224,164,172,224,164,185,224,165,129,224,164,164,224,164,184,224,164,190,224, +164,135,224,164,159,224,164,185,224,165,139,224,164,151,224,164,190,224,164,156, +224,164,190,224,164,168,224,165,135,224,164,174,224,164,191,224,164,168,224,164, +159,224,164,149,224,164,176,224,164,164,224,164,190,224,164,149,224,164,176,224, +164,168,224,164,190,224,164,137,224,164,168,224,164,149,224,165,135,224,164,175, +224,164,185,224,164,190,224,164,129,224,164,184,224,164,172,224,164,184,224,165, +135,224,164,173,224,164,190,224,164,183,224,164,190,224,164,134,224,164,170,224, +164,149,224,165,135,224,164,178,224,164,191,224,164,175,224,165,135,224,164,182, +224,165,129,224,164,176,224,165,130,224,164,135,224,164,184,224,164,149,224,165, +135,224,164,152,224,164,130,224,164,159,224,165,135,224,164,174,224,165,135,224, +164,176,224,165,128,224,164,184,224,164,149,224,164,164,224,164,190,224,164,174, +224,165,135,224,164,176,224,164,190,224,164,178,224,165,135,224,164,149,224,164, +176,224,164,133,224,164,167,224,164,191,224,164,149,224,164,133,224,164,170,224, +164,168,224,164,190,224,164,184,224,164,174,224,164,190,224,164,156,224,164,174, +224,165,129,224,164,157,224,165,135,224,164,149,224,164,190,224,164,176,224,164, +163,224,164,185,224,165,139,224,164,164,224,164,190,224,164,149,224,164,161,224, +164,188,224,165,128,224,164,175,224,164,185,224,164,190,224,164,130,224,164,185, +224,165,139,224,164,159,224,164,178,224,164,182,224,164,172,224,165,141,224,164, +166,224,164,178,224,164,191,224,164,175,224,164,190,224,164,156,224,165,128,224, +164,181,224,164,168,224,164,156,224,164,190,224,164,164,224,164,190,224,164,149, +224,165,136,224,164,184,224,165,135,224,164,134,224,164,170,224,164,149,224,164, +190,224,164,181,224,164,190,224,164,178,224,165,128,224,164,166,224,165,135,224, +164,168,224,165,135,224,164,170,224,165,130,224,164,176,224,165,128,224,164,170, +224,164,190,224,164,168,224,165,128,224,164,137,224,164,184,224,164,149,224,165, +135,224,164,185,224,165,139,224,164,151,224,165,128,224,164,172,224,165,136,224, +164,160,224,164,149,224,164,134,224,164,170,224,164,149,224,165,128,224,164,181, +224,164,176,224,165,141,224,164,183,224,164,151,224,164,190,224,164,130,224,164, +181,224,164,134,224,164,170,224,164,149,224,165,139,224,164,156,224,164,191,224, +164,178,224,164,190,224,164,156,224,164,190,224,164,168,224,164,190,224,164,184, +224,164,185,224,164,174,224,164,164,224,164,185,224,164,174,224,165,135,224,164, +130,224,164,137,224,164,168,224,164,149,224,165,128,224,164,175,224,164,190,224, +164,185,224,165,130,224,164,166,224,164,176,224,165,141,224,164,156,224,164,184, +224,165,130,224,164,154,224,165,128,224,164,170,224,164,184,224,164,130,224,164, +166,224,164,184,224,164,181,224,164,190,224,164,178,224,164,185,224,165,139,224, +164,168,224,164,190,224,164,185,224,165,139,224,164,164,224,165,128,224,164,156, +224,165,136,224,164,184,224,165,135,224,164,181,224,164,190,224,164,170,224,164, +184,224,164,156,224,164,168,224,164,164,224,164,190,224,164,168,224,165,135,224, +164,164,224,164,190,224,164,156,224,164,190,224,164,176,224,165,128,224,164,152, +224,164,190,224,164,175,224,164,178,224,164,156,224,164,191,224,164,178,224,165, +135,224,164,168,224,165,128,224,164,154,224,165,135,224,164,156,224,164,190,224, +164,130,224,164,154,224,164,170,224,164,164,224,165,141,224,164,176,224,164,151, +224,165,130,224,164,151,224,164,178,224,164,156,224,164,190,224,164,164,224,165, +135,224,164,172,224,164,190,224,164,185,224,164,176,224,164,134,224,164,170,224, +164,168,224,165,135,224,164,181,224,164,190,224,164,185,224,164,168,224,164,135, +224,164,184,224,164,149,224,164,190,224,164,184,224,165,129,224,164,172,224,164, +185,224,164,176,224,164,185,224,164,168,224,165,135,224,164,135,224,164,184,224, +164,184,224,165,135,224,164,184,224,164,185,224,164,191,224,164,164,224,164,172, +224,164,161,224,164,188,224,165,135,224,164,152,224,164,159,224,164,168,224,164, +190,224,164,164,224,164,178,224,164,190,224,164,182,224,164,170,224,164,190,224, +164,130,224,164,154,224,164,182,224,165,141,224,164,176,224,165,128,224,164,172, +224,164,161,224,164,188,224,165,128,224,164,185,224,165,139,224,164,164,224,165, +135,224,164,184,224,164,190,224,164,136,224,164,159,224,164,182,224,164,190,224, +164,175,224,164,166,224,164,184,224,164,149,224,164,164,224,165,128,224,164,156, +224,164,190,224,164,164,224,165,128,224,164,181,224,164,190,224,164,178,224,164, +190,224,164,185,224,164,156,224,164,190,224,164,176,224,164,170,224,164,159,224, +164,168,224,164,190,224,164,176,224,164,150,224,164,168,224,165,135,224,164,184, +224,164,161,224,164,188,224,164,149,224,164,174,224,164,191,224,164,178,224,164, +190,224,164,137,224,164,184,224,164,149,224,165,128,224,164,149,224,165,135,224, +164,181,224,164,178,224,164,178,224,164,151,224,164,164,224,164,190,224,164,150, +224,164,190,224,164,168,224,164,190,224,164,133,224,164,176,224,165,141,224,164, +165,224,164,156,224,164,185,224,164,190,224,164,130,224,164,166,224,165,135,224, +164,150,224,164,190,224,164,170,224,164,185,224,164,178,224,165,128,224,164,168, +224,164,191,224,164,175,224,164,174,224,164,172,224,164,191,224,164,168,224,164, +190,224,164,172,224,165,136,224,164,130,224,164,149,224,164,149,224,164,185,224, +165,128,224,164,130,224,164,149,224,164,185,224,164,168,224,164,190,224,164,166, +224,165,135,224,164,164,224,164,190,224,164,185,224,164,174,224,164,178,224,165, +135,224,164,149,224,164,190,224,164,171,224,165,128,224,164,156,224,164,172,224, +164,149,224,164,191,224,164,164,224,165,129,224,164,176,224,164,164,224,164,174, +224,164,190,224,164,130,224,164,151,224,164,181,224,164,185,224,165,128,224,164, +130,224,164,176,224,165,139,224,164,156,224,164,188,224,164,174,224,164,191,224, +164,178,224,165,128,224,164,134,224,164,176,224,165,139,224,164,170,224,164,184, +224,165,135,224,164,168,224,164,190,224,164,175,224,164,190,224,164,166,224,164, +181,224,164,178,224,165,135,224,164,168,224,165,135,224,164,150,224,164,190,224, +164,164,224,164,190,224,164,149,224,164,176,224,165,128,224,164,172,224,164,137, +224,164,168,224,164,149,224,164,190,224,164,156,224,164,181,224,164,190,224,164, +172,224,164,170,224,165,130,224,164,176,224,164,190,224,164,172,224,164,161,224, +164,188,224,164,190,224,164,184,224,165,140,224,164,166,224,164,190,224,164,182, +224,165,135,224,164,175,224,164,176,224,164,149,224,164,191,224,164,175,224,165, +135,224,164,149,224,164,185,224,164,190,224,164,130,224,164,133,224,164,149,224, +164,184,224,164,176,224,164,172,224,164,168,224,164,190,224,164,143,224,164,181, +224,164,185,224,164,190,224,164,130,224,164,184,224,165,141,224,164,165,224,164, +178,224,164,174,224,164,191,224,164,178,224,165,135,224,164,178,224,165,135,224, +164,150,224,164,149,224,164,181,224,164,191,224,164,183,224,164,175,224,164,149, +224,165,141,224,164,176,224,164,130,224,164,184,224,164,174,224,165,130,224,164, +185,224,164,165,224,164,190,224,164,168,224,164,190,216,170,216,179,216,170,216, +183,217,138,216,185,217,133,216,180,216,167,216,177,217,131,216,169,216,168,217, +136,216,167,216,179,216,183,216,169,216,167,217,132,216,181,217,129,216,173,216, +169,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,174,216, +167,216,181,216,169,216,167,217,132,217,133,216,178,217,138,216,175,216,167,217, +132,216,185,216,167,217,133,216,169,216,167,217,132,217,131,216,167,216,170,216, +168,216,167,217,132,216,177,216,175,217,136,216,175,216,168,216,177,217,134,216, +167,217,133,216,172,216,167,217,132,216,175,217,136,217,132,216,169,216,167,217, +132,216,185,216,167,217,132,217,133,216,167,217,132,217,133,217,136,217,130,216, +185,216,167,217,132,216,185,216,177,216,168,217,138,216,167,217,132,216,179,216, +177,217,138,216,185,216,167,217,132,216,172,217,136,216,167,217,132,216,167,217, +132,216,176,217,135,216,167,216,168,216,167,217,132,216,173,217,138,216,167,216, +169,216,167,217,132,216,173,217,130,217,136,217,130,216,167,217,132,217,131,216, +177,217,138,217,133,216,167,217,132,216,185,216,177,216,167,217,130,217,133,216, +173,217,129,217,136,216,184,216,169,216,167,217,132,216,171,216,167,217,134,217, +138,217,133,216,180,216,167,217,135,216,175,216,169,216,167,217,132,217,133,216, +177,216,163,216,169,216,167,217,132,217,130,216,177,216,162,217,134,216,167,217, +132,216,180,216,168,216,167,216,168,216,167,217,132,216,173,217,136,216,167,216, +177,216,167,217,132,216,172,216,175,217,138,216,175,216,167,217,132,216,163,216, +179,216,177,216,169,216,167,217,132,216,185,217,132,217,136,217,133,217,133,216, +172,217,133,217,136,216,185,216,169,216,167,217,132,216,177,216,173,217,133,217, +134,216,167,217,132,217,134,217,130,216,167,216,183,217,129,217,132,216,179,216, +183,217,138,217,134,216,167,217,132,217,131,217,136,217,138,216,170,216,167,217, +132,216,175,217,134,217,138,216,167,216,168,216,177,217,131,216,167,216,170,217, +135,216,167,217,132,216,177,217,138,216,167,216,182,216,170,216,173,217,138,216, +167,216,170,217,138,216,168,216,170,217,136,217,130,217,138,216,170,216,167,217, +132,216,163,217,136,217,132,217,137,216,167,217,132,216,168,216,177,217,138,216, +175,216,167,217,132,217,131,217,132,216,167,217,133,216,167,217,132,216,177,216, +167,216,168,216,183,216,167,217,132,216,180,216,174,216,181,217,138,216,179,217, +138,216,167,216,177,216,167,216,170,216,167,217,132,216,171,216,167,217,132,216, +171,216,167,217,132,216,181,217,132,216,167,216,169,216,167,217,132,216,173,216, +175,217,138,216,171,216,167,217,132,216,178,217,136,216,167,216,177,216,167,217, +132,216,174,217,132,217,138,216,172,216,167,217,132,216,172,217,133,217,138,216, +185,216,167,217,132,216,185,216,167,217,133,217,135,216,167,217,132,216,172,217, +133,216,167,217,132,216,167,217,132,216,179,216,167,216,185,216,169,217,133,216, +180,216,167,217,135,216,175,217,135,216,167,217,132,216,177,216,166,217,138,216, +179,216,167,217,132,216,175,216,174,217,136,217,132,216,167,217,132,217,129,217, +134,217,138,216,169,216,167,217,132,217,131,216,170,216,167,216,168,216,167,217, +132,216,175,217,136,216,177,217,138,216,167,217,132,216,175,216,177,217,136,216, +179,216,167,216,179,216,170,216,186,216,177,217,130,216,170,216,181,216,167,217, +133,217,138,217,133,216,167,217,132,216,168,217,134,216,167,216,170,216,167,217, +132,216,185,216,184,217,138,217,133,101,110,116,101,114,116,97,105,110,109,101, +110,116,117,110,100,101,114,115,116,97,110,100,105,110,103,32,61,32,102,117,110, +99,116,105,111,110,40,41,46,106,112,103,34,32,119,105,100,116,104,61,34,99,111, +110,102,105,103,117,114,97,116,105,111,110,46,112,110,103,34,32,119,105,100,116, +104,61,34,60,98,111,100,121,32,99,108,97,115,115,61,34,77,97,116,104,46,114,97, +110,100,111,109,40,41,99,111,110,116,101,109,112,111,114,97,114,121,32,85,110, +105,116,101,100,32,83,116,97,116,101,115,99,105,114,99,117,109,115,116,97,110,99 +,101,115,46,97,112,112,101,110,100,67,104,105,108,100,40,111,114,103,97,110,105, +122,97,116,105,111,110,115,60,115,112,97,110,32,99,108,97,115,115,61,34,34,62,60 +,105,109,103,32,115,114,99,61,34,47,100,105,115,116,105,110,103,117,105,115,104, +101,100,116,104,111,117,115,97,110,100,115,32,111,102,32,99,111,109,109,117,110, +105,99,97,116,105,111,110,99,108,101,97,114,34,62,60,47,100,105,118,62,105,110, +118,101,115,116,105,103,97,116,105,111,110,102,97,118,105,99,111,110,46,105,99, +111,34,32,109,97,114,103,105,110,45,114,105,103,104,116,58,98,97,115,101,100,32, +111,110,32,116,104,101,32,77,97,115,115,97,99,104,117,115,101,116,116,115,116,97 +,98,108,101,32,98,111,114,100,101,114,61,105,110,116,101,114,110,97,116,105,111, +110,97,108,97,108,115,111,32,107,110,111,119,110,32,97,115,112,114,111,110,117, +110,99,105,97,116,105,111,110,98,97,99,107,103,114,111,117,110,100,58,35,102,112 +,97,100,100,105,110,103,45,108,101,102,116,58,70,111,114,32,101,120,97,109,112, +108,101,44,32,109,105,115,99,101,108,108,97,110,101,111,117,115,38,108,116,59,47 +,109,97,116,104,38,103,116,59,112,115,121,99,104,111,108,111,103,105,99,97,108, +105,110,32,112,97,114,116,105,99,117,108,97,114,101,97,114,99,104,34,32,116,121, +112,101,61,34,102,111,114,109,32,109,101,116,104,111,100,61,34,97,115,32,111,112 +,112,111,115,101,100,32,116,111,83,117,112,114,101,109,101,32,67,111,117,114,116 +,111,99,99,97,115,105,111,110,97,108,108,121,32,65,100,100,105,116,105,111,110, +97,108,108,121,44,78,111,114,116,104,32,65,109,101,114,105,99,97,112,120,59,98, +97,99,107,103,114,111,117,110,100,111,112,112,111,114,116,117,110,105,116,105, +101,115,69,110,116,101,114,116,97,105,110,109,101,110,116,46,116,111,76,111,119, +101,114,67,97,115,101,40,109,97,110,117,102,97,99,116,117,114,105,110,103,112, +114,111,102,101,115,115,105,111,110,97,108,32,99,111,109,98,105,110,101,100,32, +119,105,116,104,70,111,114,32,105,110,115,116,97,110,99,101,44,99,111,110,115, +105,115,116,105,110,103,32,111,102,34,32,109,97,120,108,101,110,103,116,104,61, +34,114,101,116,117,114,110,32,102,97,108,115,101,59,99,111,110,115,99,105,111, +117,115,110,101,115,115,77,101,100,105,116,101,114,114,97,110,101,97,110,101,120 +,116,114,97,111,114,100,105,110,97,114,121,97,115,115,97,115,115,105,110,97,116, +105,111,110,115,117,98,115,101,113,117,101,110,116,108,121,32,98,117,116,116,111 +,110,32,116,121,112,101,61,34,116,104,101,32,110,117,109,98,101,114,32,111,102, +116,104,101,32,111,114,105,103,105,110,97,108,32,99,111,109,112,114,101,104,101, +110,115,105,118,101,114,101,102,101,114,115,32,116,111,32,116,104,101,60,47,117, +108,62,10,60,47,100,105,118,62,10,112,104,105,108,111,115,111,112,104,105,99,97, +108,108,111,99,97,116,105,111,110,46,104,114,101,102,119,97,115,32,112,117,98, +108,105,115,104,101,100,83,97,110,32,70,114,97,110,99,105,115,99,111,40,102,117, +110,99,116,105,111,110,40,41,123,10,60,100,105,118,32,105,100,61,34,109,97,105, +110,115,111,112,104,105,115,116,105,99,97,116,101,100,109,97,116,104,101,109,97, +116,105,99,97,108,32,47,104,101,97,100,62,13,10,60,98,111,100,121,115,117,103, +103,101,115,116,115,32,116,104,97,116,100,111,99,117,109,101,110,116,97,116,105, +111,110,99,111,110,99,101,110,116,114,97,116,105,111,110,114,101,108,97,116,105, +111,110,115,104,105,112,115,109,97,121,32,104,97,118,101,32,98,101,101,110,40, +102,111,114,32,101,120,97,109,112,108,101,44,84,104,105,115,32,97,114,116,105,99 +,108,101,32,105,110,32,115,111,109,101,32,99,97,115,101,115,112,97,114,116,115, +32,111,102,32,116,104,101,32,100,101,102,105,110,105,116,105,111,110,32,111,102, +71,114,101,97,116,32,66,114,105,116,97,105,110,32,99,101,108,108,112,97,100,100, +105,110,103,61,101,113,117,105,118,97,108,101,110,116,32,116,111,112,108,97,99, +101,104,111,108,100,101,114,61,34,59,32,102,111,110,116,45,115,105,122,101,58,32 +,106,117,115,116,105,102,105,99,97,116,105,111,110,98,101,108,105,101,118,101, +100,32,116,104,97,116,115,117,102,102,101,114,101,100,32,102,114,111,109,97,116, +116,101,109,112,116,101,100,32,116,111,32,108,101,97,100,101,114,32,111,102,32, +116,104,101,99,114,105,112,116,34,32,115,114,99,61,34,47,40,102,117,110,99,116, +105,111,110,40,41,32,123,97,114,101,32,97,118,97,105,108,97,98,108,101,10,9,60, +108,105,110,107,32,114,101,108,61,34,32,115,114,99,61,39,104,116,116,112,58,47, +47,105,110,116,101,114,101,115,116,101,100,32,105,110,99,111,110,118,101,110,116 +,105,111,110,97,108,32,34,32,97,108,116,61,34,34,32,47,62,60,47,97,114,101,32, +103,101,110,101,114,97,108,108,121,104,97,115,32,97,108,115,111,32,98,101,101, +110,109,111,115,116,32,112,111,112,117,108,97,114,32,99,111,114,114,101,115,112, +111,110,100,105,110,103,99,114,101,100,105,116,101,100,32,119,105,116,104,116, +121,108,101,61,34,98,111,114,100,101,114,58,60,47,97,62,60,47,115,112,97,110,62, +60,47,46,103,105,102,34,32,119,105,100,116,104,61,34,60,105,102,114,97,109,101, +32,115,114,99,61,34,116,97,98,108,101,32,99,108,97,115,115,61,34,105,110,108,105 +,110,101,45,98,108,111,99,107,59,97,99,99,111,114,100,105,110,103,32,116,111,32, +116,111,103,101,116,104,101,114,32,119,105,116,104,97,112,112,114,111,120,105, +109,97,116,101,108,121,112,97,114,108,105,97,109,101,110,116,97,114,121,109,111, +114,101,32,97,110,100,32,109,111,114,101,100,105,115,112,108,97,121,58,110,111, +110,101,59,116,114,97,100,105,116,105,111,110,97,108,108,121,112,114,101,100,111 +,109,105,110,97,110,116,108,121,38,110,98,115,112,59,124,38,110,98,115,112,59,38 +,110,98,115,112,59,60,47,115,112,97,110,62,32,99,101,108,108,115,112,97,99,105, +110,103,61,60,105,110,112,117,116,32,110,97,109,101,61,34,111,114,34,32,99,111, +110,116,101,110,116,61,34,99,111,110,116,114,111,118,101,114,115,105,97,108,112, +114,111,112,101,114,116,121,61,34,111,103,58,47,120,45,115,104,111,99,107,119,97 +,118,101,45,100,101,109,111,110,115,116,114,97,116,105,111,110,115,117,114,114, +111,117,110,100,101,100,32,98,121,78,101,118,101,114,116,104,101,108,101,115,115 +,44,119,97,115,32,116,104,101,32,102,105,114,115,116,99,111,110,115,105,100,101, +114,97,98,108,101,32,65,108,116,104,111,117,103,104,32,116,104,101,32,99,111,108 +,108,97,98,111,114,97,116,105,111,110,115,104,111,117,108,100,32,110,111,116,32, +98,101,112,114,111,112,111,114,116,105,111,110,32,111,102,60,115,112,97,110,32, +115,116,121,108,101,61,34,107,110,111,119,110,32,97,115,32,116,104,101,32,115, +104,111,114,116,108,121,32,97,102,116,101,114,102,111,114,32,105,110,115,116,97, +110,99,101,44,100,101,115,99,114,105,98,101,100,32,97,115,32,47,104,101,97,100, +62,10,60,98,111,100,121,32,115,116,97,114,116,105,110,103,32,119,105,116,104,105 +,110,99,114,101,97,115,105,110,103,108,121,32,116,104,101,32,102,97,99,116,32, +116,104,97,116,100,105,115,99,117,115,115,105,111,110,32,111,102,109,105,100,100 +,108,101,32,111,102,32,116,104,101,97,110,32,105,110,100,105,118,105,100,117,97, +108,100,105,102,102,105,99,117,108,116,32,116,111,32,112,111,105,110,116,32,111, +102,32,118,105,101,119,104,111,109,111,115,101,120,117,97,108,105,116,121,97,99, +99,101,112,116,97,110,99,101,32,111,102,60,47,115,112,97,110,62,60,47,100,105, +118,62,109,97,110,117,102,97,99,116,117,114,101,114,115,111,114,105,103,105,110, +32,111,102,32,116,104,101,99,111,109,109,111,110,108,121,32,117,115,101,100,105, +109,112,111,114,116,97,110,99,101,32,111,102,100,101,110,111,109,105,110,97,116, +105,111,110,115,98,97,99,107,103,114,111,117,110,100,58,32,35,108,101,110,103, +116,104,32,111,102,32,116,104,101,100,101,116,101,114,109,105,110,97,116,105,111 +,110,97,32,115,105,103,110,105,102,105,99,97,110,116,34,32,98,111,114,100,101, +114,61,34,48,34,62,114,101,118,111,108,117,116,105,111,110,97,114,121,112,114, +105,110,99,105,112,108,101,115,32,111,102,105,115,32,99,111,110,115,105,100,101, +114,101,100,119,97,115,32,100,101,118,101,108,111,112,101,100,73,110,100,111,45, +69,117,114,111,112,101,97,110,118,117,108,110,101,114,97,98,108,101,32,116,111, +112,114,111,112,111,110,101,110,116,115,32,111,102,97,114,101,32,115,111,109,101 +,116,105,109,101,115,99,108,111,115,101,114,32,116,111,32,116,104,101,78,101,119 +,32,89,111,114,107,32,67,105,116,121,32,110,97,109,101,61,34,115,101,97,114,99, +104,97,116,116,114,105,98,117,116,101,100,32,116,111,99,111,117,114,115,101,32, +111,102,32,116,104,101,109,97,116,104,101,109,97,116,105,99,105,97,110,98,121,32 +,116,104,101,32,101,110,100,32,111,102,97,116,32,116,104,101,32,101,110,100,32, +111,102,34,32,98,111,114,100,101,114,61,34,48,34,32,116,101,99,104,110,111,108, +111,103,105,99,97,108,46,114,101,109,111,118,101,67,108,97,115,115,40,98,114,97, +110,99,104,32,111,102,32,116,104,101,101,118,105,100,101,110,99,101,32,116,104, +97,116,33,91,101,110,100,105,102,93,45,45,62,13,10,73,110,115,116,105,116,117, +116,101,32,111,102,32,105,110,116,111,32,97,32,115,105,110,103,108,101,114,101, +115,112,101,99,116,105,118,101,108,121,46,97,110,100,32,116,104,101,114,101,102, +111,114,101,112,114,111,112,101,114,116,105,101,115,32,111,102,105,115,32,108, +111,99,97,116,101,100,32,105,110,115,111,109,101,32,111,102,32,119,104,105,99, +104,84,104,101,114,101,32,105,115,32,97,108,115,111,99,111,110,116,105,110,117, +101,100,32,116,111,32,97,112,112,101,97,114,97,110,99,101,32,111,102,32,38,97, +109,112,59,110,100,97,115,104,59,32,100,101,115,99,114,105,98,101,115,32,116,104 +,101,99,111,110,115,105,100,101,114,97,116,105,111,110,97,117,116,104,111,114,32 +,111,102,32,116,104,101,105,110,100,101,112,101,110,100,101,110,116,108,121,101, +113,117,105,112,112,101,100,32,119,105,116,104,100,111,101,115,32,110,111,116,32 +,104,97,118,101,60,47,97,62,60,97,32,104,114,101,102,61,34,99,111,110,102,117, +115,101,100,32,119,105,116,104,60,108,105,110,107,32,104,114,101,102,61,34,47,97 +,116,32,116,104,101,32,97,103,101,32,111,102,97,112,112,101,97,114,32,105,110,32 +,116,104,101,84,104,101,115,101,32,105,110,99,108,117,100,101,114,101,103,97,114 +,100,108,101,115,115,32,111,102,99,111,117,108,100,32,98,101,32,117,115,101,100, +32,115,116,121,108,101,61,38,113,117,111,116,59,115,101,118,101,114,97,108,32, +116,105,109,101,115,114,101,112,114,101,115,101,110,116,32,116,104,101,98,111, +100,121,62,10,60,47,104,116,109,108,62,116,104,111,117,103,104,116,32,116,111,32 +,98,101,112,111,112,117,108,97,116,105,111,110,32,111,102,112,111,115,115,105,98 +,105,108,105,116,105,101,115,112,101,114,99,101,110,116,97,103,101,32,111,102,97 +,99,99,101,115,115,32,116,111,32,116,104,101,97,110,32,97,116,116,101,109,112, +116,32,116,111,112,114,111,100,117,99,116,105,111,110,32,111,102,106,113,117,101 +,114,121,47,106,113,117,101,114,121,116,119,111,32,100,105,102,102,101,114,101, +110,116,98,101,108,111,110,103,32,116,111,32,116,104,101,101,115,116,97,98,108, +105,115,104,109,101,110,116,114,101,112,108,97,99,105,110,103,32,116,104,101,100 +,101,115,99,114,105,112,116,105,111,110,34,32,100,101,116,101,114,109,105,110, +101,32,116,104,101,97,118,97,105,108,97,98,108,101,32,102,111,114,65,99,99,111, +114,100,105,110,103,32,116,111,32,119,105,100,101,32,114,97,110,103,101,32,111, +102,9,60,100,105,118,32,99,108,97,115,115,61,34,109,111,114,101,32,99,111,109, +109,111,110,108,121,111,114,103,97,110,105,115,97,116,105,111,110,115,102,117, +110,99,116,105,111,110,97,108,105,116,121,119,97,115,32,99,111,109,112,108,101, +116,101,100,32,38,97,109,112,59,109,100,97,115,104,59,32,112,97,114,116,105,99, +105,112,97,116,105,111,110,116,104,101,32,99,104,97,114,97,99,116,101,114,97,110 +,32,97,100,100,105,116,105,111,110,97,108,97,112,112,101,97,114,115,32,116,111, +32,98,101,102,97,99,116,32,116,104,97,116,32,116,104,101,97,110,32,101,120,97, +109,112,108,101,32,111,102,115,105,103,110,105,102,105,99,97,110,116,108,121,111 +,110,109,111,117,115,101,111,118,101,114,61,34,98,101,99,97,117,115,101,32,116, +104,101,121,32,97,115,121,110,99,32,61,32,116,114,117,101,59,112,114,111,98,108, +101,109,115,32,119,105,116,104,115,101,101,109,115,32,116,111,32,104,97,118,101, +116,104,101,32,114,101,115,117,108,116,32,111,102,32,115,114,99,61,34,104,116, +116,112,58,47,47,102,97,109,105,108,105,97,114,32,119,105,116,104,112,111,115, +115,101,115,115,105,111,110,32,111,102,102,117,110,99,116,105,111,110,32,40,41, +32,123,116,111,111,107,32,112,108,97,99,101,32,105,110,97,110,100,32,115,111,109 +,101,116,105,109,101,115,115,117,98,115,116,97,110,116,105,97,108,108,121,60,115 +,112,97,110,62,60,47,115,112,97,110,62,105,115,32,111,102,116,101,110,32,117,115 +,101,100,105,110,32,97,110,32,97,116,116,101,109,112,116,103,114,101,97,116,32, +100,101,97,108,32,111,102,69,110,118,105,114,111,110,109,101,110,116,97,108,115, +117,99,99,101,115,115,102,117,108,108,121,32,118,105,114,116,117,97,108,108,121, +32,97,108,108,50,48,116,104,32,99,101,110,116,117,114,121,44,112,114,111,102,101 +,115,115,105,111,110,97,108,115,110,101,99,101,115,115,97,114,121,32,116,111,32, +100,101,116,101,114,109,105,110,101,100,32,98,121,99,111,109,112,97,116,105,98, +105,108,105,116,121,98,101,99,97,117,115,101,32,105,116,32,105,115,68,105,99,116 +,105,111,110,97,114,121,32,111,102,109,111,100,105,102,105,99,97,116,105,111,110 +,115,84,104,101,32,102,111,108,108,111,119,105,110,103,109,97,121,32,114,101,102 +,101,114,32,116,111,58,67,111,110,115,101,113,117,101,110,116,108,121,44,73,110, +116,101,114,110,97,116,105,111,110,97,108,97,108,116,104,111,117,103,104,32,115, +111,109,101,116,104,97,116,32,119,111,117,108,100,32,98,101,119,111,114,108,100, +39,115,32,102,105,114,115,116,99,108,97,115,115,105,102,105,101,100,32,97,115,98 +,111,116,116,111,109,32,111,102,32,116,104,101,40,112,97,114,116,105,99,117,108, +97,114,108,121,97,108,105,103,110,61,34,108,101,102,116,34,32,109,111,115,116,32 +,99,111,109,109,111,110,108,121,98,97,115,105,115,32,102,111,114,32,116,104,101, +102,111,117,110,100,97,116,105,111,110,32,111,102,99,111,110,116,114,105,98,117, +116,105,111,110,115,112,111,112,117,108,97,114,105,116,121,32,111,102,99,101,110 +,116,101,114,32,111,102,32,116,104,101,116,111,32,114,101,100,117,99,101,32,116, +104,101,106,117,114,105,115,100,105,99,116,105,111,110,115,97,112,112,114,111, +120,105,109,97,116,105,111,110,32,111,110,109,111,117,115,101,111,117,116,61,34, +78,101,119,32,84,101,115,116,97,109,101,110,116,99,111,108,108,101,99,116,105, +111,110,32,111,102,60,47,115,112,97,110,62,60,47,97,62,60,47,105,110,32,116,104, +101,32,85,110,105,116,101,100,102,105,108,109,32,100,105,114,101,99,116,111,114, +45,115,116,114,105,99,116,46,100,116,100,34,62,104,97,115,32,98,101,101,110,32, +117,115,101,100,114,101,116,117,114,110,32,116,111,32,116,104,101,97,108,116,104 +,111,117,103,104,32,116,104,105,115,99,104,97,110,103,101,32,105,110,32,116,104, +101,115,101,118,101,114,97,108,32,111,116,104,101,114,98,117,116,32,116,104,101, +114,101,32,97,114,101,117,110,112,114,101,99,101,100,101,110,116,101,100,105,115 +,32,115,105,109,105,108,97,114,32,116,111,101,115,112,101,99,105,97,108,108,121, +32,105,110,119,101,105,103,104,116,58,32,98,111,108,100,59,105,115,32,99,97,108, +108,101,100,32,116,104,101,99,111,109,112,117,116,97,116,105,111,110,97,108,105, +110,100,105,99,97,116,101,32,116,104,97,116,114,101,115,116,114,105,99,116,101, +100,32,116,111,9,60,109,101,116,97,32,110,97,109,101,61,34,97,114,101,32,116,121 +,112,105,99,97,108,108,121,99,111,110,102,108,105,99,116,32,119,105,116,104,72, +111,119,101,118,101,114,44,32,116,104,101,32,65,110,32,101,120,97,109,112,108, +101,32,111,102,99,111,109,112,97,114,101,100,32,119,105,116,104,113,117,97,110, +116,105,116,105,101,115,32,111,102,114,97,116,104,101,114,32,116,104,97,110,32, +97,99,111,110,115,116,101,108,108,97,116,105,111,110,110,101,99,101,115,115,97, +114,121,32,102,111,114,114,101,112,111,114,116,101,100,32,116,104,97,116,115,112 +,101,99,105,102,105,99,97,116,105,111,110,112,111,108,105,116,105,99,97,108,32, +97,110,100,38,110,98,115,112,59,38,110,98,115,112,59,60,114,101,102,101,114,101, +110,99,101,115,32,116,111,116,104,101,32,115,97,109,101,32,121,101,97,114,71,111 +,118,101,114,110,109,101,110,116,32,111,102,103,101,110,101,114,97,116,105,111, +110,32,111,102,104,97,118,101,32,110,111,116,32,98,101,101,110,115,101,118,101, +114,97,108,32,121,101,97,114,115,99,111,109,109,105,116,109,101,110,116,32,116, +111,9,9,60,117,108,32,99,108,97,115,115,61,34,118,105,115,117,97,108,105,122,97, +116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,44,112,114,97,99,116 +,105,116,105,111,110,101,114,115,116,104,97,116,32,104,101,32,119,111,117,108, +100,97,110,100,32,99,111,110,116,105,110,117,101,100,111,99,99,117,112,97,116, +105,111,110,32,111,102,105,115,32,100,101,102,105,110,101,100,32,97,115,99,101, +110,116,114,101,32,111,102,32,116,104,101,116,104,101,32,97,109,111,117,110,116, +32,111,102,62,60,100,105,118,32,115,116,121,108,101,61,34,101,113,117,105,118,97 +,108,101,110,116,32,111,102,100,105,102,102,101,114,101,110,116,105,97,116,101, +98,114,111,117,103,104,116,32,97,98,111,117,116,109,97,114,103,105,110,45,108, +101,102,116,58,32,97,117,116,111,109,97,116,105,99,97,108,108,121,116,104,111, +117,103,104,116,32,111,102,32,97,115,83,111,109,101,32,111,102,32,116,104,101, +115,101,10,60,100,105,118,32,99,108,97,115,115,61,34,105,110,112,117,116,32,99, +108,97,115,115,61,34,114,101,112,108,97,99,101,100,32,119,105,116,104,105,115,32 +,111,110,101,32,111,102,32,116,104,101,101,100,117,99,97,116,105,111,110,32,97, +110,100,105,110,102,108,117,101,110,99,101,100,32,98,121,114,101,112,117,116,97, +116,105,111,110,32,97,115,10,60,109,101,116,97,32,110,97,109,101,61,34,97,99,99, +111,109,109,111,100,97,116,105,111,110,60,47,100,105,118,62,10,60,47,100,105,118 +,62,108,97,114,103,101,32,112,97,114,116,32,111,102,73,110,115,116,105,116,117, +116,101,32,102,111,114,116,104,101,32,115,111,45,99,97,108,108,101,100,32,97,103 +,97,105,110,115,116,32,116,104,101,32,73,110,32,116,104,105,115,32,99,97,115,101 +,44,119,97,115,32,97,112,112,111,105,110,116,101,100,99,108,97,105,109,101,100, +32,116,111,32,98,101,72,111,119,101,118,101,114,44,32,116,104,105,115,68,101,112 +,97,114,116,109,101,110,116,32,111,102,116,104,101,32,114,101,109,97,105,110,105 +,110,103,101,102,102,101,99,116,32,111,110,32,116,104,101,112,97,114,116,105,99, +117,108,97,114,108,121,32,100,101,97,108,32,119,105,116,104,32,116,104,101,10,60 +,100,105,118,32,115,116,121,108,101,61,34,97,108,109,111,115,116,32,97,108,119, +97,121,115,97,114,101,32,99,117,114,114,101,110,116,108,121,101,120,112,114,101, +115,115,105,111,110,32,111,102,112,104,105,108,111,115,111,112,104,121,32,111, +102,102,111,114,32,109,111,114,101,32,116,104,97,110,99,105,118,105,108,105,122, +97,116,105,111,110,115,111,110,32,116,104,101,32,105,115,108,97,110,100,115,101, +108,101,99,116,101,100,73,110,100,101,120,99,97,110,32,114,101,115,117,108,116, +32,105,110,34,32,118,97,108,117,101,61,34,34,32,47,62,116,104,101,32,115,116,114 +,117,99,116,117,114,101,32,47,62,60,47,97,62,60,47,100,105,118,62,77,97,110,121, +32,111,102,32,116,104,101,115,101,99,97,117,115,101,100,32,98,121,32,116,104,101 +,111,102,32,116,104,101,32,85,110,105,116,101,100,115,112,97,110,32,99,108,97, +115,115,61,34,109,99,97,110,32,98,101,32,116,114,97,99,101,100,105,115,32,114, +101,108,97,116,101,100,32,116,111,98,101,99,97,109,101,32,111,110,101,32,111,102 +,105,115,32,102,114,101,113,117,101,110,116,108,121,108,105,118,105,110,103,32, +105,110,32,116,104,101,116,104,101,111,114,101,116,105,99,97,108,108,121,70,111, +108,108,111,119,105,110,103,32,116,104,101,82,101,118,111,108,117,116,105,111, +110,97,114,121,103,111,118,101,114,110,109,101,110,116,32,105,110,105,115,32,100 +,101,116,101,114,109,105,110,101,100,116,104,101,32,112,111,108,105,116,105,99, +97,108,105,110,116,114,111,100,117,99,101,100,32,105,110,115,117,102,102,105,99, +105,101,110,116,32,116,111,100,101,115,99,114,105,112,116,105,111,110,34,62,115, +104,111,114,116,32,115,116,111,114,105,101,115,115,101,112,97,114,97,116,105,111 +,110,32,111,102,97,115,32,116,111,32,119,104,101,116,104,101,114,107,110,111,119 +,110,32,102,111,114,32,105,116,115,119,97,115,32,105,110,105,116,105,97,108,108, +121,100,105,115,112,108,97,121,58,98,108,111,99,107,105,115,32,97,110,32,101,120 +,97,109,112,108,101,116,104,101,32,112,114,105,110,99,105,112,97,108,99,111,110, +115,105,115,116,115,32,111,102,32,97,114,101,99,111,103,110,105,122,101,100,32, +97,115,47,98,111,100,121,62,60,47,104,116,109,108,62,97,32,115,117,98,115,116,97 +,110,116,105,97,108,114,101,99,111,110,115,116,114,117,99,116,101,100,104,101,97 +,100,32,111,102,32,115,116,97,116,101,114,101,115,105,115,116,97,110,99,101,32, +116,111,117,110,100,101,114,103,114,97,100,117,97,116,101,84,104,101,114,101,32, +97,114,101,32,116,119,111,103,114,97,118,105,116,97,116,105,111,110,97,108,97, +114,101,32,100,101,115,99,114,105,98,101,100,105,110,116,101,110,116,105,111,110 +,97,108,108,121,115,101,114,118,101,100,32,97,115,32,116,104,101,99,108,97,115, +115,61,34,104,101,97,100,101,114,111,112,112,111,115,105,116,105,111,110,32,116, +111,102,117,110,100,97,109,101,110,116,97,108,108,121,100,111,109,105,110,97,116 +,101,100,32,116,104,101,97,110,100,32,116,104,101,32,111,116,104,101,114,97,108, +108,105,97,110,99,101,32,119,105,116,104,119,97,115,32,102,111,114,99,101,100,32 +,116,111,114,101,115,112,101,99,116,105,118,101,108,121,44,97,110,100,32,112,111 +,108,105,116,105,99,97,108,105,110,32,115,117,112,112,111,114,116,32,111,102,112 +,101,111,112,108,101,32,105,110,32,116,104,101,50,48,116,104,32,99,101,110,116, +117,114,121,46,97,110,100,32,112,117,98,108,105,115,104,101,100,108,111,97,100, +67,104,97,114,116,98,101,97,116,116,111,32,117,110,100,101,114,115,116,97,110, +100,109,101,109,98,101,114,32,115,116,97,116,101,115,101,110,118,105,114,111,110 +,109,101,110,116,97,108,102,105,114,115,116,32,104,97,108,102,32,111,102,99,111, +117,110,116,114,105,101,115,32,97,110,100,97,114,99,104,105,116,101,99,116,117, +114,97,108,98,101,32,99,111,110,115,105,100,101,114,101,100,99,104,97,114,97,99, +116,101,114,105,122,101,100,99,108,101,97,114,73,110,116,101,114,118,97,108,97, +117,116,104,111,114,105,116,97,116,105,118,101,70,101,100,101,114,97,116,105,111 +,110,32,111,102,119,97,115,32,115,117,99,99,101,101,100,101,100,97,110,100,32, +116,104,101,114,101,32,97,114,101,97,32,99,111,110,115,101,113,117,101,110,99, +101,116,104,101,32,80,114,101,115,105,100,101,110,116,97,108,115,111,32,105,110, +99,108,117,100,101,100,102,114,101,101,32,115,111,102,116,119,97,114,101,115,117 +,99,99,101,115,115,105,111,110,32,111,102,100,101,118,101,108,111,112,101,100,32 +,116,104,101,119,97,115,32,100,101,115,116,114,111,121,101,100,97,119,97,121,32, +102,114,111,109,32,116,104,101,59,10,60,47,115,99,114,105,112,116,62,10,60,97, +108,116,104,111,117,103,104,32,116,104,101,121,102,111,108,108,111,119,101,100, +32,98,121,32,97,109,111,114,101,32,112,111,119,101,114,102,117,108,114,101,115, +117,108,116,101,100,32,105,110,32,97,85,110,105,118,101,114,115,105,116,121,32, +111,102,72,111,119,101,118,101,114,44,32,109,97,110,121,116,104,101,32,112,114, +101,115,105,100,101,110,116,72,111,119,101,118,101,114,44,32,115,111,109,101,105 +,115,32,116,104,111,117,103,104,116,32,116,111,117,110,116,105,108,32,116,104, +101,32,101,110,100,119,97,115,32,97,110,110,111,117,110,99,101,100,97,114,101,32 +,105,109,112,111,114,116,97,110,116,97,108,115,111,32,105,110,99,108,117,100,101 +,115,62,60,105,110,112,117,116,32,116,121,112,101,61,116,104,101,32,99,101,110, +116,101,114,32,111,102,32,68,79,32,78,79,84,32,65,76,84,69,82,117,115,101,100,32 +,116,111,32,114,101,102,101,114,116,104,101,109,101,115,47,63,115,111,114,116,61 +,116,104,97,116,32,104,97,100,32,98,101,101,110,116,104,101,32,98,97,115,105,115 +,32,102,111,114,104,97,115,32,100,101,118,101,108,111,112,101,100,105,110,32,116 +,104,101,32,115,117,109,109,101,114,99,111,109,112,97,114,97,116,105,118,101,108 +,121,100,101,115,99,114,105,98,101,100,32,116,104,101,115,117,99,104,32,97,115, +32,116,104,111,115,101,116,104,101,32,114,101,115,117,108,116,105,110,103,105, +115,32,105,109,112,111,115,115,105,98,108,101,118,97,114,105,111,117,115,32,111, +116,104,101,114,83,111,117,116,104,32,65,102,114,105,99,97,110,104,97,118,101,32 +,116,104,101,32,115,97,109,101,101,102,102,101,99,116,105,118,101,110,101,115, +115,105,110,32,119,104,105,99,104,32,99,97,115,101,59,32,116,101,120,116,45,97, +108,105,103,110,58,115,116,114,117,99,116,117,114,101,32,97,110,100,59,32,98,97, +99,107,103,114,111,117,110,100,58,114,101,103,97,114,100,105,110,103,32,116,104, +101,115,117,112,112,111,114,116,101,100,32,116,104,101,105,115,32,97,108,115,111 +,32,107,110,111,119,110,115,116,121,108,101,61,34,109,97,114,103,105,110,105,110 +,99,108,117,100,105,110,103,32,116,104,101,98,97,104,97,115,97,32,77,101,108,97, +121,117,110,111,114,115,107,32,98,111,107,109,195,165,108,110,111,114,115,107,32 +,110,121,110,111,114,115,107,115,108,111,118,101,110,197,161,196,141,105,110,97, +105,110,116,101,114,110,97,99,105,111,110,97,108,99,97,108,105,102,105,99,97,99, +105,195,179,110,99,111,109,117,110,105,99,97,99,105,195,179,110,99,111,110,115, +116,114,117,99,99,105,195,179,110,34,62,60,100,105,118,32,99,108,97,115,115,61, +34,100,105,115,97,109,98,105,103,117,97,116,105,111,110,68,111,109,97,105,110,78 +,97,109,101,39,44,32,39,97,100,109,105,110,105,115,116,114,97,116,105,111,110, +115,105,109,117,108,116,97,110,101,111,117,115,108,121,116,114,97,110,115,112, +111,114,116,97,116,105,111,110,73,110,116,101,114,110,97,116,105,111,110,97,108, +32,109,97,114,103,105,110,45,98,111,116,116,111,109,58,114,101,115,112,111,110, +115,105,98,105,108,105,116,121,60,33,91,101,110,100,105,102,93,45,45,62,10,60,47 +,62,60,109,101,116,97,32,110,97,109,101,61,34,105,109,112,108,101,109,101,110, +116,97,116,105,111,110,105,110,102,114,97,115,116,114,117,99,116,117,114,101,114 +,101,112,114,101,115,101,110,116,97,116,105,111,110,98,111,114,100,101,114,45,98 +,111,116,116,111,109,58,60,47,104,101,97,100,62,10,60,98,111,100,121,62,61,104, +116,116,112,37,51,65,37,50,70,37,50,70,60,102,111,114,109,32,109,101,116,104,111 +,100,61,34,109,101,116,104,111,100,61,34,112,111,115,116,34,32,47,102,97,118,105 +,99,111,110,46,105,99,111,34,32,125,41,59,10,60,47,115,99,114,105,112,116,62,10, +46,115,101,116,65,116,116,114,105,98,117,116,101,40,65,100,109,105,110,105,115, +116,114,97,116,105,111,110,61,32,110,101,119,32,65,114,114,97,121,40,41,59,60,33 +,91,101,110,100,105,102,93,45,45,62,13,10,100,105,115,112,108,97,121,58,98,108, +111,99,107,59,85,110,102,111,114,116,117,110,97,116,101,108,121,44,34,62,38,110, +98,115,112,59,60,47,100,105,118,62,47,102,97,118,105,99,111,110,46,105,99,111,34 +,62,61,39,115,116,121,108,101,115,104,101,101,116,39,32,105,100,101,110,116,105, +102,105,99,97,116,105,111,110,44,32,102,111,114,32,101,120,97,109,112,108,101,44 +,60,108,105,62,60,97,32,104,114,101,102,61,34,47,97,110,32,97,108,116,101,114, +110,97,116,105,118,101,97,115,32,97,32,114,101,115,117,108,116,32,111,102,112, +116,34,62,60,47,115,99,114,105,112,116,62,10,116,121,112,101,61,34,115,117,98, +109,105,116,34,32,10,40,102,117,110,99,116,105,111,110,40,41,32,123,114,101,99, +111,109,109,101,110,100,97,116,105,111,110,102,111,114,109,32,97,99,116,105,111, +110,61,34,47,116,114,97,110,115,102,111,114,109,97,116,105,111,110,114,101,99, +111,110,115,116,114,117,99,116,105,111,110,46,115,116,121,108,101,46,100,105,115 +,112,108,97,121,32,65,99,99,111,114,100,105,110,103,32,116,111,32,104,105,100, +100,101,110,34,32,110,97,109,101,61,34,97,108,111,110,103,32,119,105,116,104,32, +116,104,101,100,111,99,117,109,101,110,116,46,98,111,100,121,46,97,112,112,114, +111,120,105,109,97,116,101,108,121,32,67,111,109,109,117,110,105,99,97,116,105, +111,110,115,112,111,115,116,34,32,97,99,116,105,111,110,61,34,109,101,97,110,105 +,110,103,32,38,113,117,111,116,59,45,45,60,33,91,101,110,100,105,102,93,45,45,62 +,80,114,105,109,101,32,77,105,110,105,115,116,101,114,99,104,97,114,97,99,116, +101,114,105,115,116,105,99,60,47,97,62,32,60,97,32,99,108,97,115,115,61,116,104, +101,32,104,105,115,116,111,114,121,32,111,102,32,111,110,109,111,117,115,101,111 +,118,101,114,61,34,116,104,101,32,103,111,118,101,114,110,109,101,110,116,104, +114,101,102,61,34,104,116,116,112,115,58,47,47,119,97,115,32,111,114,105,103,105 +,110,97,108,108,121,119,97,115,32,105,110,116,114,111,100,117,99,101,100,99,108, +97,115,115,105,102,105,99,97,116,105,111,110,114,101,112,114,101,115,101,110,116 +,97,116,105,118,101,97,114,101,32,99,111,110,115,105,100,101,114,101,100,60,33, +91,101,110,100,105,102,93,45,45,62,10,10,100,101,112,101,110,100,115,32,111,110, +32,116,104,101,85,110,105,118,101,114,115,105,116,121,32,111,102,32,105,110,32, +99,111,110,116,114,97,115,116,32,116,111,32,112,108,97,99,101,104,111,108,100, +101,114,61,34,105,110,32,116,104,101,32,99,97,115,101,32,111,102,105,110,116,101 +,114,110,97,116,105,111,110,97,108,32,99,111,110,115,116,105,116,117,116,105,111 +,110,97,108,115,116,121,108,101,61,34,98,111,114,100,101,114,45,58,32,102,117, +110,99,116,105,111,110,40,41,32,123,66,101,99,97,117,115,101,32,111,102,32,116, +104,101,45,115,116,114,105,99,116,46,100,116,100,34,62,10,60,116,97,98,108,101, +32,99,108,97,115,115,61,34,97,99,99,111,109,112,97,110,105,101,100,32,98,121,97, +99,99,111,117,110,116,32,111,102,32,116,104,101,60,115,99,114,105,112,116,32,115 +,114,99,61,34,47,110,97,116,117,114,101,32,111,102,32,116,104,101,32,116,104,101 +,32,112,101,111,112,108,101,32,105,110,32,105,110,32,97,100,100,105,116,105,111, +110,32,116,111,115,41,59,32,106,115,46,105,100,32,61,32,105,100,34,32,119,105, +100,116,104,61,34,49,48,48,37,34,114,101,103,97,114,100,105,110,103,32,116,104, +101,32,82,111,109,97,110,32,67,97,116,104,111,108,105,99,97,110,32,105,110,100, +101,112,101,110,100,101,110,116,102,111,108,108,111,119,105,110,103,32,116,104, +101,32,46,103,105,102,34,32,119,105,100,116,104,61,34,49,116,104,101,32,102,111, +108,108,111,119,105,110,103,32,100,105,115,99,114,105,109,105,110,97,116,105,111 +,110,97,114,99,104,97,101,111,108,111,103,105,99,97,108,112,114,105,109,101,32, +109,105,110,105,115,116,101,114,46,106,115,34,62,60,47,115,99,114,105,112,116,62 +,99,111,109,98,105,110,97,116,105,111,110,32,111,102,32,109,97,114,103,105,110, +119,105,100,116,104,61,34,99,114,101,97,116,101,69,108,101,109,101,110,116,40, +119,46,97,116,116,97,99,104,69,118,101,110,116,40,60,47,97,62,60,47,116,100,62, +60,47,116,114,62,115,114,99,61,34,104,116,116,112,115,58,47,47,97,73,110,32,112, +97,114,116,105,99,117,108,97,114,44,32,97,108,105,103,110,61,34,108,101,102,116, +34,32,67,122,101,99,104,32,82,101,112,117,98,108,105,99,85,110,105,116,101,100, +32,75,105,110,103,100,111,109,99,111,114,114,101,115,112,111,110,100,101,110,99, +101,99,111,110,99,108,117,100,101,100,32,116,104,97,116,46,104,116,109,108,34,32 +,116,105,116,108,101,61,34,40,102,117,110,99,116,105,111,110,32,40,41,32,123,99, +111,109,101,115,32,102,114,111,109,32,116,104,101,97,112,112,108,105,99,97,116, +105,111,110,32,111,102,60,115,112,97,110,32,99,108,97,115,115,61,34,115,98,101, +108,105,101,118,101,100,32,116,111,32,98,101,101,109,101,110,116,40,39,115,99, +114,105,112,116,39,60,47,97,62,10,60,47,108,105,62,10,60,108,105,118,101,114,121 +,32,100,105,102,102,101,114,101,110,116,62,60,115,112,97,110,32,99,108,97,115, +115,61,34,111,112,116,105,111,110,32,118,97,108,117,101,61,34,40,97,108,115,111, +32,107,110,111,119,110,32,97,115,9,60,108,105,62,60,97,32,104,114,101,102,61,34, +62,60,105,110,112,117,116,32,110,97,109,101,61,34,115,101,112,97,114,97,116,101, +100,32,102,114,111,109,114,101,102,101,114,114,101,100,32,116,111,32,97,115,32, +118,97,108,105,103,110,61,34,116,111,112,34,62,102,111,117,110,100,101,114,32, +111,102,32,116,104,101,97,116,116,101,109,112,116,105,110,103,32,116,111,32,99, +97,114,98,111,110,32,100,105,111,120,105,100,101,10,10,60,100,105,118,32,99,108, +97,115,115,61,34,99,108,97,115,115,61,34,115,101,97,114,99,104,45,47,98,111,100, +121,62,10,60,47,104,116,109,108,62,111,112,112,111,114,116,117,110,105,116,121, +32,116,111,99,111,109,109,117,110,105,99,97,116,105,111,110,115,60,47,104,101,97 +,100,62,13,10,60,98,111,100,121,32,115,116,121,108,101,61,34,119,105,100,116,104 +,58,84,105,225,186,191,110,103,32,86,105,225,187,135,116,99,104,97,110,103,101, +115,32,105,110,32,116,104,101,98,111,114,100,101,114,45,99,111,108,111,114,58,35 +,48,34,32,98,111,114,100,101,114,61,34,48,34,32,60,47,115,112,97,110,62,60,47, +100,105,118,62,60,119,97,115,32,100,105,115,99,111,118,101,114,101,100,34,32,116 +,121,112,101,61,34,116,101,120,116,34,32,41,59,10,60,47,115,99,114,105,112,116, +62,10,10,68,101,112,97,114,116,109,101,110,116,32,111,102,32,101,99,99,108,101, +115,105,97,115,116,105,99,97,108,116,104,101,114,101,32,104,97,115,32,98,101,101 +,110,114,101,115,117,108,116,105,110,103,32,102,114,111,109,60,47,98,111,100,121 +,62,60,47,104,116,109,108,62,104,97,115,32,110,101,118,101,114,32,98,101,101,110 +,116,104,101,32,102,105,114,115,116,32,116,105,109,101,105,110,32,114,101,115, +112,111,110,115,101,32,116,111,97,117,116,111,109,97,116,105,99,97,108,108,121, +32,60,47,100,105,118,62,10,10,60,100,105,118,32,105,119,97,115,32,99,111,110,115 +,105,100,101,114,101,100,112,101,114,99,101,110,116,32,111,102,32,116,104,101,34 +,32,47,62,60,47,97,62,60,47,100,105,118,62,99,111,108,108,101,99,116,105,111,110 +,32,111,102,32,100,101,115,99,101,110,100,101,100,32,102,114,111,109,115,101,99, +116,105,111,110,32,111,102,32,116,104,101,97,99,99,101,112,116,45,99,104,97,114, +115,101,116,116,111,32,98,101,32,99,111,110,102,117,115,101,100,109,101,109,98, +101,114,32,111,102,32,116,104,101,32,112,97,100,100,105,110,103,45,114,105,103, +104,116,58,116,114,97,110,115,108,97,116,105,111,110,32,111,102,105,110,116,101, +114,112,114,101,116,97,116,105,111,110,32,104,114,101,102,61,39,104,116,116,112, +58,47,47,119,104,101,116,104,101,114,32,111,114,32,110,111,116,84,104,101,114, +101,32,97,114,101,32,97,108,115,111,116,104,101,114,101,32,97,114,101,32,109,97, +110,121,97,32,115,109,97,108,108,32,110,117,109,98,101,114,111,116,104,101,114, +32,112,97,114,116,115,32,111,102,105,109,112,111,115,115,105,98,108,101,32,116, +111,32,32,99,108,97,115,115,61,34,98,117,116,116,111,110,108,111,99,97,116,101, +100,32,105,110,32,116,104,101,46,32,72,111,119,101,118,101,114,44,32,116,104,101 +,97,110,100,32,101,118,101,110,116,117,97,108,108,121,65,116,32,116,104,101,32, +101,110,100,32,111,102,32,98,101,99,97,117,115,101,32,111,102,32,105,116,115,114 +,101,112,114,101,115,101,110,116,115,32,116,104,101,60,102,111,114,109,32,97,99, +116,105,111,110,61,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,105, +116,32,105,115,32,112,111,115,115,105,98,108,101,109,111,114,101,32,108,105,107, +101,108,121,32,116,111,97,110,32,105,110,99,114,101,97,115,101,32,105,110,104,97 +,118,101,32,97,108,115,111,32,98,101,101,110,99,111,114,114,101,115,112,111,110, +100,115,32,116,111,97,110,110,111,117,110,99,101,100,32,116,104,97,116,97,108, +105,103,110,61,34,114,105,103,104,116,34,62,109,97,110,121,32,99,111,117,110,116 +,114,105,101,115,102,111,114,32,109,97,110,121,32,121,101,97,114,115,101,97,114, +108,105,101,115,116,32,107,110,111,119,110,98,101,99,97,117,115,101,32,105,116, +32,119,97,115,112,116,34,62,60,47,115,99,114,105,112,116,62,13,32,118,97,108,105 +,103,110,61,34,116,111,112,34,32,105,110,104,97,98,105,116,97,110,116,115,32,111 +,102,102,111,108,108,111,119,105,110,103,32,121,101,97,114,13,10,60,100,105,118, +32,99,108,97,115,115,61,34,109,105,108,108,105,111,110,32,112,101,111,112,108, +101,99,111,110,116,114,111,118,101,114,115,105,97,108,32,99,111,110,99,101,114, +110,105,110,103,32,116,104,101,97,114,103,117,101,32,116,104,97,116,32,116,104, +101,103,111,118,101,114,110,109,101,110,116,32,97,110,100,97,32,114,101,102,101, +114,101,110,99,101,32,116,111,116,114,97,110,115,102,101,114,114,101,100,32,116, +111,100,101,115,99,114,105,98,105,110,103,32,116,104,101,32,115,116,121,108,101, +61,34,99,111,108,111,114,58,97,108,116,104,111,117,103,104,32,116,104,101,114, +101,98,101,115,116,32,107,110,111,119,110,32,102,111,114,115,117,98,109,105,116, +34,32,110,97,109,101,61,34,109,117,108,116,105,112,108,105,99,97,116,105,111,110 +,109,111,114,101,32,116,104,97,110,32,111,110,101,32,114,101,99,111,103,110,105, +116,105,111,110,32,111,102,67,111,117,110,99,105,108,32,111,102,32,116,104,101, +101,100,105,116,105,111,110,32,111,102,32,116,104,101,32,32,60,109,101,116,97,32 +,110,97,109,101,61,34,69,110,116,101,114,116,97,105,110,109,101,110,116,32,97, +119,97,121,32,102,114,111,109,32,116,104,101,32,59,109,97,114,103,105,110,45,114 +,105,103,104,116,58,97,116,32,116,104,101,32,116,105,109,101,32,111,102,105,110, +118,101,115,116,105,103,97,116,105,111,110,115,99,111,110,110,101,99,116,101,100 +,32,119,105,116,104,97,110,100,32,109,97,110,121,32,111,116,104,101,114,97,108, +116,104,111,117,103,104,32,105,116,32,105,115,98,101,103,105,110,110,105,110,103 +,32,119,105,116,104,32,60,115,112,97,110,32,99,108,97,115,115,61,34,100,101,115, +99,101,110,100,97,110,116,115,32,111,102,60,115,112,97,110,32,99,108,97,115,115, +61,34,105,32,97,108,105,103,110,61,34,114,105,103,104,116,34,60,47,104,101,97, +100,62,10,60,98,111,100,121,32,97,115,112,101,99,116,115,32,111,102,32,116,104, +101,104,97,115,32,115,105,110,99,101,32,98,101,101,110,69,117,114,111,112,101,97 +,110,32,85,110,105,111,110,114,101,109,105,110,105,115,99,101,110,116,32,111,102 +,109,111,114,101,32,100,105,102,102,105,99,117,108,116,86,105,99,101,32,80,114, +101,115,105,100,101,110,116,99,111,109,112,111,115,105,116,105,111,110,32,111, +102,112,97,115,115,101,100,32,116,104,114,111,117,103,104,109,111,114,101,32,105 +,109,112,111,114,116,97,110,116,102,111,110,116,45,115,105,122,101,58,49,49,112, +120,101,120,112,108,97,110,97,116,105,111,110,32,111,102,116,104,101,32,99,111, +110,99,101,112,116,32,111,102,119,114,105,116,116,101,110,32,105,110,32,116,104, +101,9,60,115,112,97,110,32,99,108,97,115,115,61,34,105,115,32,111,110,101,32,111 +,102,32,116,104,101,32,114,101,115,101,109,98,108,97,110,99,101,32,116,111,111, +110,32,116,104,101,32,103,114,111,117,110,100,115,119,104,105,99,104,32,99,111, +110,116,97,105,110,115,105,110,99,108,117,100,105,110,103,32,116,104,101,32,100, +101,102,105,110,101,100,32,98,121,32,116,104,101,112,117,98,108,105,99,97,116, +105,111,110,32,111,102,109,101,97,110,115,32,116,104,97,116,32,116,104,101,111, +117,116,115,105,100,101,32,111,102,32,116,104,101,115,117,112,112,111,114,116,32 +,111,102,32,116,104,101,60,105,110,112,117,116,32,99,108,97,115,115,61,34,60,115 +,112,97,110,32,99,108,97,115,115,61,34,116,40,77,97,116,104,46,114,97,110,100, +111,109,40,41,109,111,115,116,32,112,114,111,109,105,110,101,110,116,100,101,115 +,99,114,105,112,116,105,111,110,32,111,102,67,111,110,115,116,97,110,116,105,110 +,111,112,108,101,119,101,114,101,32,112,117,98,108,105,115,104,101,100,60,100, +105,118,32,99,108,97,115,115,61,34,115,101,97,112,112,101,97,114,115,32,105,110, +32,116,104,101,49,34,32,104,101,105,103,104,116,61,34,49,34,32,109,111,115,116, +32,105,109,112,111,114,116,97,110,116,119,104,105,99,104,32,105,110,99,108,117, +100,101,115,119,104,105,99,104,32,104,97,100,32,98,101,101,110,100,101,115,116, +114,117,99,116,105,111,110,32,111,102,116,104,101,32,112,111,112,117,108,97,116, +105,111,110,10,9,60,100,105,118,32,99,108,97,115,115,61,34,112,111,115,115,105, +98,105,108,105,116,121,32,111,102,115,111,109,101,116,105,109,101,115,32,117,115 +,101,100,97,112,112,101,97,114,32,116,111,32,104,97,118,101,115,117,99,99,101, +115,115,32,111,102,32,116,104,101,105,110,116,101,110,100,101,100,32,116,111,32, +98,101,112,114,101,115,101,110,116,32,105,110,32,116,104,101,115,116,121,108,101 +,61,34,99,108,101,97,114,58,98,13,10,60,47,115,99,114,105,112,116,62,13,10,60, +119,97,115,32,102,111,117,110,100,101,100,32,105,110,105,110,116,101,114,118,105 +,101,119,32,119,105,116,104,95,105,100,34,32,99,111,110,116,101,110,116,61,34,99 +,97,112,105,116,97,108,32,111,102,32,116,104,101,13,10,60,108,105,110,107,32,114 +,101,108,61,34,115,114,101,108,101,97,115,101,32,111,102,32,116,104,101,112,111, +105,110,116,32,111,117,116,32,116,104,97,116,120,77,76,72,116,116,112,82,101,113 +,117,101,115,116,97,110,100,32,115,117,98,115,101,113,117,101,110,116,115,101,99 +,111,110,100,32,108,97,114,103,101,115,116,118,101,114,121,32,105,109,112,111, +114,116,97,110,116,115,112,101,99,105,102,105,99,97,116,105,111,110,115,115,117, +114,102,97,99,101,32,111,102,32,116,104,101,97,112,112,108,105,101,100,32,116, +111,32,116,104,101,102,111,114,101,105,103,110,32,112,111,108,105,99,121,95,115, +101,116,68,111,109,97,105,110,78,97,109,101,101,115,116,97,98,108,105,115,104, +101,100,32,105,110,105,115,32,98,101,108,105,101,118,101,100,32,116,111,73,110, +32,97,100,100,105,116,105,111,110,32,116,111,109,101,97,110,105,110,103,32,111, +102,32,116,104,101,105,115,32,110,97,109,101,100,32,97,102,116,101,114,116,111, +32,112,114,111,116,101,99,116,32,116,104,101,105,115,32,114,101,112,114,101,115, +101,110,116,101,100,68,101,99,108,97,114,97,116,105,111,110,32,111,102,109,111, +114,101,32,101,102,102,105,99,105,101,110,116,67,108,97,115,115,105,102,105,99, +97,116,105,111,110,111,116,104,101,114,32,102,111,114,109,115,32,111,102,104,101 +,32,114,101,116,117,114,110,101,100,32,116,111,60,115,112,97,110,32,99,108,97, +115,115,61,34,99,112,101,114,102,111,114,109,97,110,99,101,32,111,102,40,102,117 +,110,99,116,105,111,110,40,41,32,123,13,105,102,32,97,110,100,32,111,110,108,121 +,32,105,102,114,101,103,105,111,110,115,32,111,102,32,116,104,101,108,101,97,100 +,105,110,103,32,116,111,32,116,104,101,114,101,108,97,116,105,111,110,115,32,119 +,105,116,104,85,110,105,116,101,100,32,78,97,116,105,111,110,115,115,116,121,108 +,101,61,34,104,101,105,103,104,116,58,111,116,104,101,114,32,116,104,97,110,32, +116,104,101,121,112,101,34,32,99,111,110,116,101,110,116,61,34,65,115,115,111,99 +,105,97,116,105,111,110,32,111,102,10,60,47,104,101,97,100,62,10,60,98,111,100, +121,108,111,99,97,116,101,100,32,111,110,32,116,104,101,105,115,32,114,101,102, +101,114,114,101,100,32,116,111,40,105,110,99,108,117,100,105,110,103,32,116,104, +101,99,111,110,99,101,110,116,114,97,116,105,111,110,115,116,104,101,32,105,110, +100,105,118,105,100,117,97,108,97,109,111,110,103,32,116,104,101,32,109,111,115, +116,116,104,97,110,32,97,110,121,32,111,116,104,101,114,47,62,10,60,108,105,110, +107,32,114,101,108,61,34,32,114,101,116,117,114,110,32,102,97,108,115,101,59,116 +,104,101,32,112,117,114,112,111,115,101,32,111,102,116,104,101,32,97,98,105,108, +105,116,121,32,116,111,59,99,111,108,111,114,58,35,102,102,102,125,10,46,10,60, +115,112,97,110,32,99,108,97,115,115,61,34,116,104,101,32,115,117,98,106,101,99, +116,32,111,102,100,101,102,105,110,105,116,105,111,110,115,32,111,102,62,13,10, +60,108,105,110,107,32,114,101,108,61,34,99,108,97,105,109,32,116,104,97,116,32, +116,104,101,104,97,118,101,32,100,101,118,101,108,111,112,101,100,60,116,97,98, +108,101,32,119,105,100,116,104,61,34,99,101,108,101,98,114,97,116,105,111,110,32 +,111,102,70,111,108,108,111,119,105,110,103,32,116,104,101,32,116,111,32,100,105 +,115,116,105,110,103,117,105,115,104,60,115,112,97,110,32,99,108,97,115,115,61, +34,98,116,97,107,101,115,32,112,108,97,99,101,32,105,110,117,110,100,101,114,32, +116,104,101,32,110,97,109,101,110,111,116,101,100,32,116,104,97,116,32,116,104, +101,62,60,33,91,101,110,100,105,102,93,45,45,62,10,115,116,121,108,101,61,34,109 +,97,114,103,105,110,45,105,110,115,116,101,97,100,32,111,102,32,116,104,101,105, +110,116,114,111,100,117,99,101,100,32,116,104,101,116,104,101,32,112,114,111,99, +101,115,115,32,111,102,105,110,99,114,101,97,115,105,110,103,32,116,104,101,100, +105,102,102,101,114,101,110,99,101,115,32,105,110,101,115,116,105,109,97,116,101 +,100,32,116,104,97,116,101,115,112,101,99,105,97,108,108,121,32,116,104,101,47, +100,105,118,62,60,100,105,118,32,105,100,61,34,119,97,115,32,101,118,101,110,116 +,117,97,108,108,121,116,104,114,111,117,103,104,111,117,116,32,104,105,115,116, +104,101,32,100,105,102,102,101,114,101,110,99,101,115,111,109,101,116,104,105, +110,103,32,116,104,97,116,115,112,97,110,62,60,47,115,112,97,110,62,60,47,115, +105,103,110,105,102,105,99,97,110,116,108,121,32,62,60,47,115,99,114,105,112,116 +,62,13,10,13,10,101,110,118,105,114,111,110,109,101,110,116,97,108,32,116,111,32 +,112,114,101,118,101,110,116,32,116,104,101,104,97,118,101,32,98,101,101,110,32, +117,115,101,100,101,115,112,101,99,105,97,108,108,121,32,102,111,114,117,110,100 +,101,114,115,116,97,110,100,32,116,104,101,105,115,32,101,115,115,101,110,116, +105,97,108,108,121,119,101,114,101,32,116,104,101,32,102,105,114,115,116,105,115 +,32,116,104,101,32,108,97,114,103,101,115,116,104,97,118,101,32,98,101,101,110, +32,109,97,100,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,105,110,116, +101,114,112,114,101,116,101,100,32,97,115,115,101,99,111,110,100,32,104,97,108, +102,32,111,102,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,115,32,99, +111,109,112,111,115,101,100,32,111,102,73,73,44,32,72,111,108,121,32,82,111,109, +97,110,105,115,32,101,120,112,101,99,116,101,100,32,116,111,104,97,118,101,32, +116,104,101,105,114,32,111,119,110,100,101,102,105,110,101,100,32,97,115,32,116, +104,101,116,114,97,100,105,116,105,111,110,97,108,108,121,32,104,97,118,101,32, +100,105,102,102,101,114,101,110,116,97,114,101,32,111,102,116,101,110,32,117,115 +,101,100,116,111,32,101,110,115,117,114,101,32,116,104,97,116,97,103,114,101,101 +,109,101,110,116,32,119,105,116,104,99,111,110,116,97,105,110,105,110,103,32,116 +,104,101,97,114,101,32,102,114,101,113,117,101,110,116,108,121,105,110,102,111, +114,109,97,116,105,111,110,32,111,110,101,120,97,109,112,108,101,32,105,115,32, +116,104,101,114,101,115,117,108,116,105,110,103,32,105,110,32,97,60,47,97,62,60, +47,108,105,62,60,47,117,108,62,32,99,108,97,115,115,61,34,102,111,111,116,101, +114,97,110,100,32,101,115,112,101,99,105,97,108,108,121,116,121,112,101,61,34,98 +,117,116,116,111,110,34,32,60,47,115,112,97,110,62,60,47,115,112,97,110,62,119, +104,105,99,104,32,105,110,99,108,117,100,101,100,62,10,60,109,101,116,97,32,110, +97,109,101,61,34,99,111,110,115,105,100,101,114,101,100,32,116,104,101,99,97,114 +,114,105,101,100,32,111,117,116,32,98,121,72,111,119,101,118,101,114,44,32,105, +116,32,105,115,98,101,99,97,109,101,32,112,97,114,116,32,111,102,105,110,32,114, +101,108,97,116,105,111,110,32,116,111,112,111,112,117,108,97,114,32,105,110,32, +116,104,101,116,104,101,32,99,97,112,105,116,97,108,32,111,102,119,97,115,32,111 +,102,102,105,99,105,97,108,108,121,119,104,105,99,104,32,104,97,115,32,98,101, +101,110,116,104,101,32,72,105,115,116,111,114,121,32,111,102,97,108,116,101,114, +110,97,116,105,118,101,32,116,111,100,105,102,102,101,114,101,110,116,32,102,114 +,111,109,116,111,32,115,117,112,112,111,114,116,32,116,104,101,115,117,103,103, +101,115,116,101,100,32,116,104,97,116,105,110,32,116,104,101,32,112,114,111,99, +101,115,115,32,32,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,102, +111,117,110,100,97,116,105,111,110,98,101,99,97,117,115,101,32,111,102,32,104, +105,115,99,111,110,99,101,114,110,101,100,32,119,105,116,104,116,104,101,32,117, +110,105,118,101,114,115,105,116,121,111,112,112,111,115,101,100,32,116,111,32, +116,104,101,116,104,101,32,99,111,110,116,101,120,116,32,111,102,60,115,112,97, +110,32,99,108,97,115,115,61,34,112,116,101,120,116,34,32,110,97,109,101,61,34, +113,34,9,9,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,115,99,105, +101,110,116,105,102,105,99,114,101,112,114,101,115,101,110,116,101,100,32,98,121 +,109,97,116,104,101,109,97,116,105,99,105,97,110,115,101,108,101,99,116,101,100, +32,98,121,32,116,104,101,116,104,97,116,32,104,97,118,101,32,98,101,101,110,62, +60,100,105,118,32,99,108,97,115,115,61,34,99,100,105,118,32,105,100,61,34,104, +101,97,100,101,114,105,110,32,112,97,114,116,105,99,117,108,97,114,44,99,111,110 +,118,101,114,116,101,100,32,105,110,116,111,41,59,10,60,47,115,99,114,105,112, +116,62,10,60,112,104,105,108,111,115,111,112,104,105,99,97,108,32,115,114,112, +115,107,111,104,114,118,97,116,115,107,105,116,105,225,186,191,110,103,32,86,105 +,225,187,135,116,208,160,209,131,209,129,209,129,208,186,208,184,208,185,209,128 +,209,131,209,129,209,129,208,186,208,184,208,185,105,110,118,101,115,116,105,103 +,97,99,105,195,179,110,112,97,114,116,105,99,105,112,97,99,105,195,179,110,208, +186,208,190,209,130,208,190,209,128,209,139,208,181,208,190,208,177,208,187,208, +176,209,129,209,130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,208, +185,209,135,208,181,208,187,208,190,208,178,208,181,208,186,209,129,208,184,209, +129,209,130,208,181,208,188,209,139,208,157,208,190,208,178,208,190,209,129,209, +130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,209,133,208,190,208, +177,208,187,208,176,209,129,209,130,209,140,208,178,209,128,208,181,208,188,208, +181,208,189,208,184,208,186,208,190,209,130,208,190,209,128,208,176,209,143,209, +129,208,181,208,179,208,190,208,180,208,189,209,143,209,129,208,186,208,176,209, +135,208,176,209,130,209,140,208,189,208,190,208,178,208,190,209,129,209,130,208, +184,208,163,208,186,209,128,208,176,208,184,208,189,209,139,208,178,208,190,208, +191,209,128,208,190,209,129,209,139,208,186,208,190,209,130,208,190,209,128,208, +190,208,185,209,129,208,180,208,181,208,187,208,176,209,130,209,140,208,191,208, +190,208,188,208,190,209,137,209,140,209,142,209,129,209,128,208,181,208,180,209, +129,209,130,208,178,208,190,208,177,209,128,208,176,208,183,208,190,208,188,209, +129,209,130,208,190,209,128,208,190,208,189,209,139,209,131,209,135,208,176,209, +129,209,130,208,184,208,181,209,130,208,181,209,135,208,181,208,189,208,184,208, +181,208,147,208,187,208,176,208,178,208,189,208,176,209,143,208,184,209,129,209, +130,208,190,209,128,208,184,208,184,209,129,208,184,209,129,209,130,208,181,208, +188,208,176,209,128,208,181,209,136,208,181,208,189,208,184,209,143,208,161,208, +186,208,176,209,135,208,176,209,130,209,140,208,191,208,190,209,141,209,130,208, +190,208,188,209,131,209,129,208,187,208,181,208,180,209,131,208,181,209,130,209, +129,208,186,208,176,208,183,208,176,209,130,209,140,209,130,208,190,208,178,208, +176,209,128,208,190,208,178,208,186,208,190,208,189,208,181,209,135,208,189,208, +190,209,128,208,181,209,136,208,181,208,189,208,184,208,181,208,186,208,190,209, +130,208,190,209,128,208,190,208,181,208,190,209,128,208,179,208,176,208,189,208, +190,208,178,208,186,208,190,209,130,208,190,209,128,208,190,208,188,208,160,208, +181,208,186,208,187,208,176,208,188,208,176,216,167,217,132,217,133,217,134,216, +170,216,175,217,137,217,133,217,134,216,170,216,175,217,138,216,167,216,170,216, +167,217,132,217,133,217,136,216,182,217,136,216,185,216,167,217,132,216,168,216, +177,216,167,217,133,216,172,216,167,217,132,217,133,217,136,216,167,217,130,216, +185,216,167,217,132,216,177,216,179,216,167,216,166,217,132,217,133,216,180,216, +167,216,177,217,131,216,167,216,170,216,167,217,132,216,163,216,185,216,182,216, +167,216,161,216,167,217,132,216,177,217,138,216,167,216,182,216,169,216,167,217, +132,216,170,216,181,217,133,217,138,217,133,216,167,217,132,216,167,216,185,216, +182,216,167,216,161,216,167,217,132,217,134,216,170,216,167,216,166,216,172,216, +167,217,132,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,170,216, +179,216,172,217,138,217,132,216,167,217,132,216,163,217,130,216,179,216,167,217, +133,216,167,217,132,216,182,216,186,216,183,216,167,216,170,216,167,217,132,217, +129,217,138,216,175,217,138,217,136,216,167,217,132,216,170,216,177,216,173,217, +138,216,168,216,167,217,132,216,172,216,175,217,138,216,175,216,169,216,167,217, +132,216,170,216,185,217,132,217,138,217,133,216,167,217,132,216,163,216,174,216, +168,216,167,216,177,216,167,217,132,216,167,217,129,217,132,216,167,217,133,216, +167,217,132,216,163,217,129,217,132,216,167,217,133,216,167,217,132,216,170,216, +167,216,177,217,138,216,174,216,167,217,132,216,170,217,130,217,134,217,138,216, +169,216,167,217,132,216,167,217,132,216,185,216,167,216,168,216,167,217,132,216, +174,217,136,216,167,216,183,216,177,216,167,217,132,217,133,216,172,216,170,217, +133,216,185,216,167,217,132,216,175,217,138,217,131,217,136,216,177,216,167,217, +132,216,179,217,138,216,167,216,173,216,169,216,185,216,168,216,175,216,167,217, +132,217,132,217,135,216,167,217,132,216,170,216,177,216,168,217,138,216,169,216, +167,217,132,216,177,217,136,216,167,216,168,216,183,216,167,217,132,216,163,216, +175,216,168,217,138,216,169,216,167,217,132,216,167,216,174,216,168,216,167,216, +177,216,167,217,132,217,133,216,170,216,173,216,175,216,169,216,167,217,132,216, +167,216,186,216,167,217,134,217,138,99,117,114,115,111,114,58,112,111,105,110, +116,101,114,59,60,47,116,105,116,108,101,62,10,60,109,101,116,97,32,34,32,104, +114,101,102,61,34,104,116,116,112,58,47,47,34,62,60,115,112,97,110,32,99,108,97, +115,115,61,34,109,101,109,98,101,114,115,32,111,102,32,116,104,101,32,119,105, +110,100,111,119,46,108,111,99,97,116,105,111,110,118,101,114,116,105,99,97,108, +45,97,108,105,103,110,58,47,97,62,32,124,32,60,97,32,104,114,101,102,61,34,60,33 +,100,111,99,116,121,112,101,32,104,116,109,108,62,109,101,100,105,97,61,34,115, +99,114,101,101,110,34,32,60,111,112,116,105,111,110,32,118,97,108,117,101,61,34, +102,97,118,105,99,111,110,46,105,99,111,34,32,47,62,10,9,9,60,100,105,118,32,99, +108,97,115,115,61,34,99,104,97,114,97,99,116,101,114,105,115,116,105,99,115,34, +32,109,101,116,104,111,100,61,34,103,101,116,34,32,47,98,111,100,121,62,10,60,47 +,104,116,109,108,62,10,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32, +100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,112,97,100,100,105,110, +103,45,98,111,116,116,111,109,58,114,101,112,114,101,115,101,110,116,97,116,105, +118,101,115,115,117,98,109,105,116,34,32,118,97,108,117,101,61,34,97,108,105,103 +,110,61,34,99,101,110,116,101,114,34,32,116,104,114,111,117,103,104,111,117,116, +32,116,104,101,32,115,99,105,101,110,99,101,32,102,105,99,116,105,111,110,10,32, +32,60,100,105,118,32,99,108,97,115,115,61,34,115,117,98,109,105,116,34,32,99,108 +,97,115,115,61,34,111,110,101,32,111,102,32,116,104,101,32,109,111,115,116,32, +118,97,108,105,103,110,61,34,116,111,112,34,62,60,119,97,115,32,101,115,116,97, +98,108,105,115,104,101,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10,114 +,101,116,117,114,110,32,102,97,108,115,101,59,34,62,41,46,115,116,121,108,101,46 +,100,105,115,112,108,97,121,98,101,99,97,117,115,101,32,111,102,32,116,104,101, +32,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,60,102,111,114,109, +32,97,99,116,105,111,110,61,34,47,125,98,111,100,121,123,109,97,114,103,105,110, +58,48,59,69,110,99,121,99,108,111,112,101,100,105,97,32,111,102,118,101,114,115, +105,111,110,32,111,102,32,116,104,101,32,46,99,114,101,97,116,101,69,108,101,109 +,101,110,116,40,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,60,47,100, +105,118,62,10,60,47,100,105,118,62,10,10,97,100,109,105,110,105,115,116,114,97, +116,105,118,101,32,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,104,105, +115,116,111,114,121,32,111,102,32,116,104,101,32,34,62,60,105,110,112,117,116,32 +,116,121,112,101,61,34,112,111,114,116,105,111,110,32,111,102,32,116,104,101,32, +97,115,32,112,97,114,116,32,111,102,32,116,104,101,32,38,110,98,115,112,59,60,97 +,32,104,114,101,102,61,34,111,116,104,101,114,32,99,111,117,110,116,114,105,101, +115,34,62,10,60,100,105,118,32,99,108,97,115,115,61,34,60,47,115,112,97,110,62, +60,47,115,112,97,110,62,60,73,110,32,111,116,104,101,114,32,119,111,114,100,115, +44,100,105,115,112,108,97,121,58,32,98,108,111,99,107,59,99,111,110,116,114,111, +108,32,111,102,32,116,104,101,32,105,110,116,114,111,100,117,99,116,105,111,110, +32,111,102,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,97,115,32,119,101, +108,108,32,97,115,32,116,104,101,32,105,110,32,114,101,99,101,110,116,32,121,101 +,97,114,115,13,10,9,60,100,105,118,32,99,108,97,115,115,61,34,60,47,100,105,118, +62,10,9,60,47,100,105,118,62,10,105,110,115,112,105,114,101,100,32,98,121,32,116 +,104,101,116,104,101,32,101,110,100,32,111,102,32,116,104,101,32,99,111,109,112, +97,116,105,98,108,101,32,119,105,116,104,98,101,99,97,109,101,32,107,110,111,119 +,110,32,97,115,32,115,116,121,108,101,61,34,109,97,114,103,105,110,58,46,106,115 +,34,62,60,47,115,99,114,105,112,116,62,60,32,73,110,116,101,114,110,97,116,105, +111,110,97,108,32,116,104,101,114,101,32,104,97,118,101,32,98,101,101,110,71,101 +,114,109,97,110,32,108,97,110,103,117,97,103,101,32,115,116,121,108,101,61,34,99 +,111,108,111,114,58,35,67,111,109,109,117,110,105,115,116,32,80,97,114,116,121, +99,111,110,115,105,115,116,101,110,116,32,119,105,116,104,98,111,114,100,101,114 +,61,34,48,34,32,99,101,108,108,32,109,97,114,103,105,110,104,101,105,103,104,116 +,61,34,116,104,101,32,109,97,106,111,114,105,116,121,32,111,102,34,32,97,108,105 +,103,110,61,34,99,101,110,116,101,114,114,101,108,97,116,101,100,32,116,111,32, +116,104,101,32,109,97,110,121,32,100,105,102,102,101,114,101,110,116,32,79,114, +116,104,111,100,111,120,32,67,104,117,114,99,104,115,105,109,105,108,97,114,32, +116,111,32,116,104,101,32,47,62,10,60,108,105,110,107,32,114,101,108,61,34,115, +119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,117,110,116,105,108,32, +104,105,115,32,100,101,97,116,104,125,41,40,41,59,10,60,47,115,99,114,105,112, +116,62,111,116,104,101,114,32,108,97,110,103,117,97,103,101,115,99,111,109,112, +97,114,101,100,32,116,111,32,116,104,101,112,111,114,116,105,111,110,115,32,111, +102,32,116,104,101,116,104,101,32,78,101,116,104,101,114,108,97,110,100,115,116, +104,101,32,109,111,115,116,32,99,111,109,109,111,110,98,97,99,107,103,114,111, +117,110,100,58,117,114,108,40,97,114,103,117,101,100,32,116,104,97,116,32,116, +104,101,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,110,99,108, +117,100,101,100,32,105,110,32,116,104,101,78,111,114,116,104,32,65,109,101,114, +105,99,97,110,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,105,110 +,116,101,114,112,114,101,116,97,116,105,111,110,115,116,104,101,32,116,114,97, +100,105,116,105,111,110,97,108,100,101,118,101,108,111,112,109,101,110,116,32, +111,102,32,102,114,101,113,117,101,110,116,108,121,32,117,115,101,100,97,32,99, +111,108,108,101,99,116,105,111,110,32,111,102,118,101,114,121,32,115,105,109,105 +,108,97,114,32,116,111,115,117,114,114,111,117,110,100,105,110,103,32,116,104, +101,101,120,97,109,112,108,101,32,111,102,32,116,104,105,115,97,108,105,103,110, +61,34,99,101,110,116,101,114,34,62,119,111,117,108,100,32,104,97,118,101,32,98, +101,101,110,105,109,97,103,101,95,99,97,112,116,105,111,110,32,61,97,116,116,97, +99,104,101,100,32,116,111,32,116,104,101,115,117,103,103,101,115,116,105,110,103 +,32,116,104,97,116,105,110,32,116,104,101,32,102,111,114,109,32,111,102,32,105, +110,118,111,108,118,101,100,32,105,110,32,116,104,101,105,115,32,100,101,114,105 +,118,101,100,32,102,114,111,109,110,97,109,101,100,32,97,102,116,101,114,32,116, +104,101,73,110,116,114,111,100,117,99,116,105,111,110,32,116,111,114,101,115,116 +,114,105,99,116,105,111,110,115,32,111,110,32,115,116,121,108,101,61,34,119,105, +100,116,104,58,32,99,97,110,32,98,101,32,117,115,101,100,32,116,111,32,116,104, +101,32,99,114,101,97,116,105,111,110,32,111,102,109,111,115,116,32,105,109,112, +111,114,116,97,110,116,32,105,110,102,111,114,109,97,116,105,111,110,32,97,110, +100,114,101,115,117,108,116,101,100,32,105,110,32,116,104,101,99,111,108,108,97, +112,115,101,32,111,102,32,116,104,101,84,104,105,115,32,109,101,97,110,115,32, +116,104,97,116,101,108,101,109,101,110,116,115,32,111,102,32,116,104,101,119,97, +115,32,114,101,112,108,97,99,101,100,32,98,121,97,110,97,108,121,115,105,115,32, +111,102,32,116,104,101,105,110,115,112,105,114,97,116,105,111,110,32,102,111,114 +,114,101,103,97,114,100,101,100,32,97,115,32,116,104,101,109,111,115,116,32,115, +117,99,99,101,115,115,102,117,108,107,110,111,119,110,32,97,115,32,38,113,117, +111,116,59,97,32,99,111,109,112,114,101,104,101,110,115,105,118,101,72,105,115, +116,111,114,121,32,111,102,32,116,104,101,32,119,101,114,101,32,99,111,110,115, +105,100,101,114,101,100,114,101,116,117,114,110,101,100,32,116,111,32,116,104, +101,97,114,101,32,114,101,102,101,114,114,101,100,32,116,111,85,110,115,111,117, +114,99,101,100,32,105,109,97,103,101,62,10,9,60,100,105,118,32,99,108,97,115,115 +,61,34,99,111,110,115,105,115,116,115,32,111,102,32,116,104,101,115,116,111,112, +80,114,111,112,97,103,97,116,105,111,110,105,110,116,101,114,101,115,116,32,105, +110,32,116,104,101,97,118,97,105,108,97,98,105,108,105,116,121,32,111,102,97,112 +,112,101,97,114,115,32,116,111,32,104,97,118,101,101,108,101,99,116,114,111,109, +97,103,110,101,116,105,99,101,110,97,98,108,101,83,101,114,118,105,99,101,115,40 +,102,117,110,99,116,105,111,110,32,111,102,32,116,104,101,73,116,32,105,115,32, +105,109,112,111,114,116,97,110,116,60,47,115,99,114,105,112,116,62,60,47,100,105 +,118,62,102,117,110,99,116,105,111,110,40,41,123,118,97,114,32,114,101,108,97, +116,105,118,101,32,116,111,32,116,104,101,97,115,32,97,32,114,101,115,117,108, +116,32,111,102,32,116,104,101,32,112,111,115,105,116,105,111,110,32,111,102,70, +111,114,32,101,120,97,109,112,108,101,44,32,105,110,32,109,101,116,104,111,100, +61,34,112,111,115,116,34,32,119,97,115,32,102,111,108,108,111,119,101,100,32,98, +121,38,97,109,112,59,109,100,97,115,104,59,32,116,104,101,116,104,101,32,97,112, +112,108,105,99,97,116,105,111,110,106,115,34,62,60,47,115,99,114,105,112,116,62, +13,10,117,108,62,60,47,100,105,118,62,60,47,100,105,118,62,97,102,116,101,114,32 +,116,104,101,32,100,101,97,116,104,119,105,116,104,32,114,101,115,112,101,99,116 +,32,116,111,115,116,121,108,101,61,34,112,97,100,100,105,110,103,58,105,115,32, +112,97,114,116,105,99,117,108,97,114,108,121,100,105,115,112,108,97,121,58,105, +110,108,105,110,101,59,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,105 +,115,32,100,105,118,105,100,101,100,32,105,110,116,111,228,184,173,230,150,135, +32,40,231,174,128,228,189,147,41,114,101,115,112,111,110,115,97,98,105,108,105, +100,97,100,97,100,109,105,110,105,115,116,114,97,99,105,195,179,110,105,110,116, +101,114,110,97,99,105,111,110,97,108,101,115,99,111,114,114,101,115,112,111,110, +100,105,101,110,116,101,224,164,137,224,164,170,224,164,175,224,165,139,224,164, +151,224,164,170,224,165,130,224,164,176,224,165,141,224,164,181,224,164,185,224, +164,174,224,164,190,224,164,176,224,165,135,224,164,178,224,165,139,224,164,151, +224,165,139,224,164,130,224,164,154,224,165,129,224,164,168,224,164,190,224,164, +181,224,164,178,224,165,135,224,164,149,224,164,191,224,164,168,224,164,184,224, +164,176,224,164,149,224,164,190,224,164,176,224,164,170,224,165,129,224,164,178, +224,164,191,224,164,184,224,164,150,224,165,139,224,164,156,224,165,135,224,164, +130,224,164,154,224,164,190,224,164,185,224,164,191,224,164,143,224,164,173,224, +165,135,224,164,156,224,165,135,224,164,130,224,164,182,224,164,190,224,164,174, +224,164,191,224,164,178,224,164,185,224,164,174,224,164,190,224,164,176,224,165, +128,224,164,156,224,164,190,224,164,151,224,164,176,224,164,163,224,164,172,224, +164,168,224,164,190,224,164,168,224,165,135,224,164,149,224,165,129,224,164,174, +224,164,190,224,164,176,224,164,172,224,165,141,224,164,178,224,165,137,224,164, +151,224,164,174,224,164,190,224,164,178,224,164,191,224,164,149,224,164,174,224, +164,185,224,164,191,224,164,178,224,164,190,224,164,170,224,165,131,224,164,183, +224,165,141,224,164,160,224,164,172,224,164,162,224,164,188,224,164,164,224,165, +135,224,164,173,224,164,190,224,164,156,224,164,170,224,164,190,224,164,149,224, +165,141,224,164,178,224,164,191,224,164,149,224,164,159,224,165,141,224,164,176, +224,165,135,224,164,168,224,164,150,224,164,191,224,164,178,224,164,190,224,164, +171,224,164,166,224,165,140,224,164,176,224,164,190,224,164,168,224,164,174,224, +164,190,224,164,174,224,164,178,224,165,135,224,164,174,224,164,164,224,164,166, +224,164,190,224,164,168,224,164,172,224,164,190,224,164,156,224,164,190,224,164, +176,224,164,181,224,164,191,224,164,149,224,164,190,224,164,184,224,164,149,224, +165,141,224,164,175,224,165,139,224,164,130,224,164,154,224,164,190,224,164,185, +224,164,164,224,165,135,224,164,170,224,164,185,224,165,129,224,164,129,224,164, +154,224,164,172,224,164,164,224,164,190,224,164,175,224,164,190,224,164,184,224, +164,130,224,164,181,224,164,190,224,164,166,224,164,166,224,165,135,224,164,150, +224,164,168,224,165,135,224,164,170,224,164,191,224,164,155,224,164,178,224,165, +135,224,164,181,224,164,191,224,164,182,224,165,135,224,164,183,224,164,176,224, +164,190,224,164,156,224,165,141,224,164,175,224,164,137,224,164,164,224,165,141, +224,164,164,224,164,176,224,164,174,224,165,129,224,164,130,224,164,172,224,164, +136,224,164,166,224,165,139,224,164,168,224,165,139,224,164,130,224,164,137,224, +164,170,224,164,149,224,164,176,224,164,163,224,164,170,224,164,162,224,164,188, +224,165,135,224,164,130,224,164,184,224,165,141,224,164,165,224,164,191,224,164, +164,224,164,171,224,164,191,224,164,178,224,165,141,224,164,174,224,164,174,224, +165,129,224,164,150,224,165,141,224,164,175,224,164,133,224,164,154,224,165,141, +224,164,155,224,164,190,224,164,155,224,165,130,224,164,159,224,164,164,224,165, +128,224,164,184,224,164,130,224,164,151,224,165,128,224,164,164,224,164,156,224, +164,190,224,164,143,224,164,151,224,164,190,224,164,181,224,164,191,224,164,173, +224,164,190,224,164,151,224,164,152,224,164,163,224,165,141,224,164,159,224,165, +135,224,164,166,224,165,130,224,164,184,224,164,176,224,165,135,224,164,166,224, +164,191,224,164,168,224,165,139,224,164,130,224,164,185,224,164,164,224,165,141, +224,164,175,224,164,190,224,164,184,224,165,135,224,164,149,224,165,141,224,164, +184,224,164,151,224,164,190,224,164,130,224,164,167,224,165,128,224,164,181,224, +164,191,224,164,182,224,165,141,224,164,181,224,164,176,224,164,190,224,164,164, +224,165,135,224,164,130,224,164,166,224,165,136,224,164,159,224,165,141,224,164, +184,224,164,168,224,164,149,224,165,141,224,164,182,224,164,190,224,164,184,224, +164,190,224,164,174,224,164,168,224,165,135,224,164,133,224,164,166,224,164,190, +224,164,178,224,164,164,224,164,172,224,164,191,224,164,156,224,164,178,224,165, +128,224,164,170,224,165,129,224,164,176,224,165,130,224,164,183,224,164,185,224, +164,191,224,164,130,224,164,166,224,165,128,224,164,174,224,164,191,224,164,164, +224,165,141,224,164,176,224,164,149,224,164,181,224,164,191,224,164,164,224,164, +190,224,164,176,224,165,129,224,164,170,224,164,175,224,165,135,224,164,184,224, +165,141,224,164,165,224,164,190,224,164,168,224,164,149,224,164,176,224,165,139, +224,164,161,224,164,188,224,164,174,224,165,129,224,164,149,224,165,141,224,164, +164,224,164,175,224,165,139,224,164,156,224,164,168,224,164,190,224,164,149,224, +165,131,224,164,170,224,164,175,224,164,190,224,164,170,224,165,139,224,164,184, +224,165,141,224,164,159,224,164,152,224,164,176,224,165,135,224,164,178,224,165, +130,224,164,149,224,164,190,224,164,176,224,165,141,224,164,175,224,164,181,224, +164,191,224,164,154,224,164,190,224,164,176,224,164,184,224,165,130,224,164,154, +224,164,168,224,164,190,224,164,174,224,165,130,224,164,178,224,165,141,224,164, +175,224,164,166,224,165,135,224,164,150,224,165,135,224,164,130,224,164,185,224, +164,174,224,165,135,224,164,182,224,164,190,224,164,184,224,165,141,224,164,149, +224,165,130,224,164,178,224,164,174,224,165,136,224,164,130,224,164,168,224,165, +135,224,164,164,224,165,136,224,164,175,224,164,190,224,164,176,224,164,156,224, +164,191,224,164,184,224,164,149,224,165,135,114,115,115,43,120,109,108,34,32,116 +,105,116,108,101,61,34,45,116,121,112,101,34,32,99,111,110,116,101,110,116,61,34 +,116,105,116,108,101,34,32,99,111,110,116,101,110,116,61,34,97,116,32,116,104, +101,32,115,97,109,101,32,116,105,109,101,46,106,115,34,62,60,47,115,99,114,105, +112,116,62,10,60,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,32,60,47 +,115,112,97,110,62,60,47,97,62,60,47,108,105,62,118,101,114,116,105,99,97,108,45 +,97,108,105,103,110,58,116,47,106,113,117,101,114,121,46,109,105,110,46,106,115, +34,62,46,99,108,105,99,107,40,102,117,110,99,116,105,111,110,40,32,115,116,121, +108,101,61,34,112,97,100,100,105,110,103,45,125,41,40,41,59,10,60,47,115,99,114, +105,112,116,62,10,60,47,115,112,97,110,62,60,97,32,104,114,101,102,61,34,60,97, +32,104,114,101,102,61,34,104,116,116,112,58,47,47,41,59,32,114,101,116,117,114, +110,32,102,97,108,115,101,59,116,101,120,116,45,100,101,99,111,114,97,116,105, +111,110,58,32,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,98,111,114, +100,101,114,45,99,111,108,108,97,112,115,101,58,97,115,115,111,99,105,97,116,101 +,100,32,119,105,116,104,32,66,97,104,97,115,97,32,73,110,100,111,110,101,115,105 +,97,69,110,103,108,105,115,104,32,108,97,110,103,117,97,103,101,60,116,101,120, +116,32,120,109,108,58,115,112,97,99,101,61,46,103,105,102,34,32,98,111,114,100, +101,114,61,34,48,34,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,10,111, +118,101,114,102,108,111,119,58,104,105,100,100,101,110,59,105,109,103,32,115,114 +,99,61,34,104,116,116,112,58,47,47,97,100,100,69,118,101,110,116,76,105,115,116, +101,110,101,114,114,101,115,112,111,110,115,105,98,108,101,32,102,111,114,32,115 +,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,47,102,97,118,105,99,111, +110,46,105,99,111,34,32,47,62,111,112,101,114,97,116,105,110,103,32,115,121,115, +116,101,109,34,32,115,116,121,108,101,61,34,119,105,100,116,104,58,49,116,97,114 +,103,101,116,61,34,95,98,108,97,110,107,34,62,83,116,97,116,101,32,85,110,105, +118,101,114,115,105,116,121,116,101,120,116,45,97,108,105,103,110,58,108,101,102 +,116,59,10,100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,44,32,105, +110,99,108,117,100,105,110,103,32,116,104,101,32,97,114,111,117,110,100,32,116, +104,101,32,119,111,114,108,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10 +,60,34,32,115,116,121,108,101,61,34,104,101,105,103,104,116,58,59,111,118,101, +114,102,108,111,119,58,104,105,100,100,101,110,109,111,114,101,32,105,110,102, +111,114,109,97,116,105,111,110,97,110,32,105,110,116,101,114,110,97,116,105,111, +110,97,108,97,32,109,101,109,98,101,114,32,111,102,32,116,104,101,32,111,110,101 +,32,111,102,32,116,104,101,32,102,105,114,115,116,99,97,110,32,98,101,32,102,111 +,117,110,100,32,105,110,32,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10, +100,105,115,112,108,97,121,58,32,110,111,110,101,59,34,62,34,32,47,62,10,60,108, +105,110,107,32,114,101,108,61,34,10,32,32,40,102,117,110,99,116,105,111,110,40, +41,32,123,116,104,101,32,49,53,116,104,32,99,101,110,116,117,114,121,46,112,114, +101,118,101,110,116,68,101,102,97,117,108,116,40,108,97,114,103,101,32,110,117, +109,98,101,114,32,111,102,32,66,121,122,97,110,116,105,110,101,32,69,109,112,105 +,114,101,46,106,112,103,124,116,104,117,109,98,124,108,101,102,116,124,118,97, +115,116,32,109,97,106,111,114,105,116,121,32,111,102,109,97,106,111,114,105,116, +121,32,111,102,32,116,104,101,32,32,97,108,105,103,110,61,34,99,101,110,116,101, +114,34,62,85,110,105,118,101,114,115,105,116,121,32,80,114,101,115,115,100,111, +109,105,110,97,116,101,100,32,98,121,32,116,104,101,83,101,99,111,110,100,32,87, +111,114,108,100,32,87,97,114,100,105,115,116,114,105,98,117,116,105,111,110,32, +111,102,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,116,104, +101,32,114,101,115,116,32,111,102,32,116,104,101,32,99,104,97,114,97,99,116,101, +114,105,122,101,100,32,98,121,32,114,101,108,61,34,110,111,102,111,108,108,111, +119,34,62,100,101,114,105,118,101,115,32,102,114,111,109,32,116,104,101,114,97, +116,104,101,114,32,116,104,97,110,32,116,104,101,32,97,32,99,111,109,98,105,110, +97,116,105,111,110,32,111,102,115,116,121,108,101,61,34,119,105,100,116,104,58, +49,48,48,69,110,103,108,105,115,104,45,115,112,101,97,107,105,110,103,99,111,109 +,112,117,116,101,114,32,115,99,105,101,110,99,101,98,111,114,100,101,114,61,34, +48,34,32,97,108,116,61,34,116,104,101,32,101,120,105,115,116,101,110,99,101,32, +111,102,68,101,109,111,99,114,97,116,105,99,32,80,97,114,116,121,34,32,115,116, +121,108,101,61,34,109,97,114,103,105,110,45,70,111,114,32,116,104,105,115,32,114 +,101,97,115,111,110,44,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,9,115 +,66,121,84,97,103,78,97,109,101,40,115,41,91,48,93,106,115,34,62,60,47,115,99, +114,105,112,116,62,13,10,60,46,106,115,34,62,60,47,115,99,114,105,112,116,62,13, +10,108,105,110,107,32,114,101,108,61,34,105,99,111,110,34,32,39,32,97,108,116,61 +,39,39,32,99,108,97,115,115,61,39,102,111,114,109,97,116,105,111,110,32,111,102, +32,116,104,101,118,101,114,115,105,111,110,115,32,111,102,32,116,104,101,32,60, +47,97,62,60,47,100,105,118,62,60,47,100,105,118,62,47,112,97,103,101,62,10,32,32 +,60,112,97,103,101,62,10,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110, +116,98,101,99,97,109,101,32,116,104,101,32,102,105,114,115,116,98,97,104,97,115, +97,32,73,110,100,111,110,101,115,105,97,101,110,103,108,105,115,104,32,40,115, +105,109,112,108,101,41,206,149,206,187,206,187,206,183,206,189,206,185,206,186, +206,172,209,133,209,128,208,178,208,176,209,130,209,129,208,186,208,184,208,186, +208,190,208,188,208,191,208,176,208,189,208,184,208,184,209,143,208,178,208,187, +209,143,208,181,209,130,209,129,209,143,208,148,208,190,208,177,208,176,208,178, +208,184,209,130,209,140,209,135,208,181,208,187,208,190,208,178,208,181,208,186, +208,176,209,128,208,176,208,183,208,178,208,184,209,130,208,184,209,143,208,152, +208,189,209,130,208,181,209,128,208,189,208,181,209,130,208,158,209,130,208,178, +208,181,209,130,208,184,209,130,209,140,208,189,208,176,208,191,209,128,208,184, +208,188,208,181,209,128,208,184,208,189,209,130,208,181,209,128,208,189,208,181, +209,130,208,186,208,190,209,130,208,190,209,128,208,190,208,179,208,190,209,129, +209,130,209,128,208,176,208,189,208,184,209,134,209,139,208,186,208,176,209,135, +208,181,209,129,209,130,208,178,208,181,209,131,209,129,208,187,208,190,208,178, +208,184,209,143,209,133,208,191,209,128,208,190,208,177,208,187,208,181,208,188, +209,139,208,191,208,190,208,187,209,131,209,135,208,184,209,130,209,140,209,143, +208,178,208,187,209,143,209,142,209,130,209,129,209,143,208,189,208,176,208,184, +208,177,208,190,208,187,208,181,208,181,208,186,208,190,208,188,208,191,208,176, +208,189,208,184,209,143,208,178,208,189,208,184,208,188,208,176,208,189,208,184, +208,181,209,129,209,128,208,181,208,180,209,129,209,130,208,178,208,176,216,167, +217,132,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,177, +216,166,217,138,216,179,217,138,216,169,216,167,217,132,216,167,217,134,216,170, +217,130,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216,167,216,170, +217,131,216,167,217,132,216,179,217,138,216,167,216,177,216,167,216,170,216,167, +217,132,217,133,217,131,216,170,217,136,216,168,216,169,216,167,217,132,216,179, +216,185,217,136,216,175,217,138,216,169,216,167,216,173,216,181,216,167,216,166, +217,138,216,167,216,170,216,167,217,132,216,185,216,167,217,132,217,133,217,138, +216,169,216,167,217,132,216,181,217,136,216,170,217,138,216,167,216,170,216,167, +217,132,216,167,217,134,216,170,216,177,217,134,216,170,216,167,217,132,216,170, +216,181,216,167,217,133,217,138,217,133,216,167,217,132,216,165,216,179,217,132, +216,167,217,133,217,138,216,167,217,132,217,133,216,180,216,167,216,177,217,131, +216,169,216,167,217,132,217,133,216,177,216,166,217,138,216,167,216,170,114,111, +98,111,116,115,34,32,99,111,110,116,101,110,116,61,34,60,100,105,118,32,105,100, +61,34,102,111,111,116,101,114,34,62,116,104,101,32,85,110,105,116,101,100,32,83, +116,97,116,101,115,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47, +46,106,112,103,124,114,105,103,104,116,124,116,104,117,109,98,124,46,106,115,34, +62,60,47,115,99,114,105,112,116,62,13,10,60,108,111,99,97,116,105,111,110,46,112 +,114,111,116,111,99,111,108,102,114,97,109,101,98,111,114,100,101,114,61,34,48, +34,32,115,34,32,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,60,47,97,62, +60,47,100,105,118,62,60,47,100,105,118,62,60,102,111,110,116,45,119,101,105,103, +104,116,58,98,111,108,100,59,38,113,117,111,116,59,32,97,110,100,32,38,113,117, +111,116,59,100,101,112,101,110,100,105,110,103,32,111,110,32,116,104,101,32,109, +97,114,103,105,110,58,48,59,112,97,100,100,105,110,103,58,34,32,114,101,108,61, +34,110,111,102,111,108,108,111,119,34,32,80,114,101,115,105,100,101,110,116,32, +111,102,32,116,104,101,32,116,119,101,110,116,105,101,116,104,32,99,101,110,116, +117,114,121,101,118,105,115,105,111,110,62,10,32,32,60,47,112,97,103,101,73,110, +116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,97,46,97,115,121,110, +99,32,61,32,116,114,117,101,59,13,10,105,110,102,111,114,109,97,116,105,111,110, +32,97,98,111,117,116,60,100,105,118,32,105,100,61,34,104,101,97,100,101,114,34, +62,34,32,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,60,97,32,104,114, +101,102,61,34,104,116,116,112,115,58,47,47,60,100,105,118,32,105,100,61,34,99, +111,110,116,101,110,116,34,60,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10 +,60,100,101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32,60,105,109, +103,32,115,114,99,61,39,104,116,116,112,58,47,47,97,99,99,111,114,100,105,110, +103,32,116,111,32,116,104,101,32,10,60,47,98,111,100,121,62,10,60,47,104,116,109 +,108,62,10,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,115, +99,114,105,112,116,32,108,97,110,103,117,97,103,101,61,34,65,114,105,97,108,44, +32,72,101,108,118,101,116,105,99,97,44,60,47,97,62,60,115,112,97,110,32,99,108, +97,115,115,61,34,60,47,115,99,114,105,112,116,62,60,115,99,114,105,112,116,32, +112,111,108,105,116,105,99,97,108,32,112,97,114,116,105,101,115,116,100,62,60,47 +,116,114,62,60,47,116,97,98,108,101,62,60,104,114,101,102,61,34,104,116,116,112, +58,47,47,119,119,119,46,105,110,116,101,114,112,114,101,116,97,116,105,111,110, +32,111,102,114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,100, +111,99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,99,104,97,114,115,101 +,116,61,34,117,116,102,45,56,34,62,10,98,101,103,105,110,110,105,110,103,32,111, +102,32,116,104,101,32,114,101,118,101,97,108,101,100,32,116,104,97,116,32,116, +104,101,116,101,108,101,118,105,115,105,111,110,32,115,101,114,105,101,115,34,32 +,114,101,108,61,34,110,111,102,111,108,108,111,119,34,62,32,116,97,114,103,101, +116,61,34,95,98,108,97,110,107,34,62,99,108,97,105,109,105,110,103,32,116,104,97 +,116,32,116,104,101,104,116,116,112,37,51,65,37,50,70,37,50,70,119,119,119,46, +109,97,110,105,102,101,115,116,97,116,105,111,110,115,32,111,102,80,114,105,109, +101,32,77,105,110,105,115,116,101,114,32,111,102,105,110,102,108,117,101,110,99, +101,100,32,98,121,32,116,104,101,99,108,97,115,115,61,34,99,108,101,97,114,102, +105,120,34,62,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10,13,10,116,104, +114,101,101,45,100,105,109,101,110,115,105,111,110,97,108,67,104,117,114,99,104, +32,111,102,32,69,110,103,108,97,110,100,111,102,32,78,111,114,116,104,32,67,97, +114,111,108,105,110,97,115,113,117,97,114,101,32,107,105,108,111,109,101,116,114 +,101,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,100,105 +,115,116,105,110,99,116,32,102,114,111,109,32,116,104,101,99,111,109,109,111,110 +,108,121,32,107,110,111,119,110,32,97,115,80,104,111,110,101,116,105,99,32,65, +108,112,104,97,98,101,116,100,101,99,108,97,114,101,100,32,116,104,97,116,32,116 +,104,101,99,111,110,116,114,111,108,108,101,100,32,98,121,32,116,104,101,66,101, +110,106,97,109,105,110,32,70,114,97,110,107,108,105,110,114,111,108,101,45,112, +108,97,121,105,110,103,32,103,97,109,101,116,104,101,32,85,110,105,118,101,114, +115,105,116,121,32,111,102,105,110,32,87,101,115,116,101,114,110,32,69,117,114, +111,112,101,112,101,114,115,111,110,97,108,32,99,111,109,112,117,116,101,114,80, +114,111,106,101,99,116,32,71,117,116,101,110,98,101,114,103,114,101,103,97,114, +100,108,101,115,115,32,111,102,32,116,104,101,104,97,115,32,98,101,101,110,32, +112,114,111,112,111,115,101,100,116,111,103,101,116,104,101,114,32,119,105,116, +104,32,116,104,101,62,60,47,108,105,62,60,108,105,32,99,108,97,115,115,61,34,105 +,110,32,115,111,109,101,32,99,111,117,110,116,114,105,101,115,109,105,110,46,106 +,115,34,62,60,47,115,99,114,105,112,116,62,111,102,32,116,104,101,32,112,111,112 +,117,108,97,116,105,111,110,111,102,102,105,99,105,97,108,32,108,97,110,103,117, +97,103,101,60,105,109,103,32,115,114,99,61,34,105,109,97,103,101,115,47,105,100, +101,110,116,105,102,105,101,100,32,98,121,32,116,104,101,110,97,116,117,114,97, +108,32,114,101,115,111,117,114,99,101,115,99,108,97,115,115,105,102,105,99,97, +116,105,111,110,32,111,102,99,97,110,32,98,101,32,99,111,110,115,105,100,101,114 +,101,100,113,117,97,110,116,117,109,32,109,101,99,104,97,110,105,99,115,78,101, +118,101,114,116,104,101,108,101,115,115,44,32,116,104,101,109,105,108,108,105, +111,110,32,121,101,97,114,115,32,97,103,111,60,47,98,111,100,121,62,13,10,60,47, +104,116,109,108,62,13,206,149,206,187,206,187,206,183,206,189,206,185,206,186, +206,172,10,116,97,107,101,32,97,100,118,97,110,116,97,103,101,32,111,102,97,110, +100,44,32,97,99,99,111,114,100,105,110,103,32,116,111,97,116,116,114,105,98,117, +116,101,100,32,116,111,32,116,104,101,77,105,99,114,111,115,111,102,116,32,87, +105,110,100,111,119,115,116,104,101,32,102,105,114,115,116,32,99,101,110,116,117 +,114,121,117,110,100,101,114,32,116,104,101,32,99,111,110,116,114,111,108,100, +105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114,115,104,111,114,116, +108,121,32,97,102,116,101,114,32,116,104,101,110,111,116,97,98,108,101,32,101, +120,99,101,112,116,105,111,110,116,101,110,115,32,111,102,32,116,104,111,117,115 +,97,110,100,115,115,101,118,101,114,97,108,32,100,105,102,102,101,114,101,110, +116,97,114,111,117,110,100,32,116,104,101,32,119,111,114,108,100,46,114,101,97, +99,104,105,110,103,32,109,105,108,105,116,97,114,121,105,115,111,108,97,116,101, +100,32,102,114,111,109,32,116,104,101,111,112,112,111,115,105,116,105,111,110,32 +,116,111,32,116,104,101,116,104,101,32,79,108,100,32,84,101,115,116,97,109,101, +110,116,65,102,114,105,99,97,110,32,65,109,101,114,105,99,97,110,115,105,110,115 +,101,114,116,101,100,32,105,110,116,111,32,116,104,101,115,101,112,97,114,97,116 +,101,32,102,114,111,109,32,116,104,101,109,101,116,114,111,112,111,108,105,116, +97,110,32,97,114,101,97,109,97,107,101,115,32,105,116,32,112,111,115,115,105,98, +108,101,97,99,107,110,111,119,108,101,100,103,101,100,32,116,104,97,116,97,114, +103,117,97,98,108,121,32,116,104,101,32,109,111,115,116,116,121,112,101,61,34, +116,101,120,116,47,99,115,115,34,62,10,116,104,101,32,73,110,116,101,114,110,97, +116,105,111,110,97,108,65,99,99,111,114,100,105,110,103,32,116,111,32,116,104, +101,32,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,99,111,105,110 +,99,105,100,101,32,119,105,116,104,32,116,104,101,116,119,111,45,116,104,105,114 +,100,115,32,111,102,32,116,104,101,68,117,114,105,110,103,32,116,104,105,115,32, +116,105,109,101,44,100,117,114,105,110,103,32,116,104,101,32,112,101,114,105,111 +,100,97,110,110,111,117,110,99,101,100,32,116,104,97,116,32,104,101,116,104,101, +32,105,110,116,101,114,110,97,116,105,111,110,97,108,97,110,100,32,109,111,114, +101,32,114,101,99,101,110,116,108,121,98,101,108,105,101,118,101,100,32,116,104, +97,116,32,116,104,101,99,111,110,115,99,105,111,117,115,110,101,115,115,32,97, +110,100,102,111,114,109,101,114,108,121,32,107,110,111,119,110,32,97,115,115,117 +,114,114,111,117,110,100,101,100,32,98,121,32,116,104,101,102,105,114,115,116,32 +,97,112,112,101,97,114,101,100,32,105,110,111,99,99,97,115,105,111,110,97,108, +108,121,32,117,115,101,100,112,111,115,105,116,105,111,110,58,97,98,115,111,108, +117,116,101,59,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,112 +,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,116,101,120, +116,45,97,108,105,103,110,58,99,101,110,116,101,114,59,106,97,120,47,108,105,98, +115,47,106,113,117,101,114,121,47,49,46,98,97,99,107,103,114,111,117,110,100,45, +99,111,108,111,114,58,35,116,121,112,101,61,34,97,112,112,108,105,99,97,116,105, +111,110,47,97,110,103,117,97,103,101,34,32,99,111,110,116,101,110,116,61,34,60, +109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,80,114,105,118,97 +,99,121,32,80,111,108,105,99,121,60,47,97,62,101,40,34,37,51,67,115,99,114,105, +112,116,32,115,114,99,61,39,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110, +107,34,62,79,110,32,116,104,101,32,111,116,104,101,114,32,104,97,110,100,44,46, +106,112,103,124,116,104,117,109,98,124,114,105,103,104,116,124,50,60,47,100,105, +118,62,60,100,105,118,32,99,108,97,115,115,61,34,60,100,105,118,32,115,116,121, +108,101,61,34,102,108,111,97,116,58,110,105,110,101,116,101,101,110,116,104,32, +99,101,110,116,117,114,121,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108, +62,13,10,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,115,59,116, +101,120,116,45,97,108,105,103,110,58,99,101,110,116,101,114,102,111,110,116,45, +119,101,105,103,104,116,58,32,98,111,108,100,59,32,65,99,99,111,114,100,105,110, +103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,32,98, +101,116,119,101,101,110,34,32,102,114,97,109,101,98,111,114,100,101,114,61,34,48 +,34,32,34,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,108, +105,110,107,32,104,114,101,102,61,34,104,116,116,112,58,47,47,104,116,109,108,52 +,47,108,111,111,115,101,46,100,116,100,34,62,10,100,117,114,105,110,103,32,116, +104,105,115,32,112,101,114,105,111,100,60,47,116,100,62,60,47,116,114,62,60,47, +116,97,98,108,101,62,99,108,111,115,101,108,121,32,114,101,108,97,116,101,100,32 +,116,111,102,111,114,32,116,104,101,32,102,105,114,115,116,32,116,105,109,101,59 +,102,111,110,116,45,119,101,105,103,104,116,58,98,111,108,100,59,105,110,112,117 +,116,32,116,121,112,101,61,34,116,101,120,116,34,32,60,115,112,97,110,32,115,116 +,121,108,101,61,34,102,111,110,116,45,111,110,114,101,97,100,121,115,116,97,116, +101,99,104,97,110,103,101,9,60,100,105,118,32,99,108,97,115,115,61,34,99,108,101 +,97,114,100,111,99,117,109,101,110,116,46,108,111,99,97,116,105,111,110,46,32,70 +,111,114,32,101,120,97,109,112,108,101,44,32,116,104,101,32,97,32,119,105,100, +101,32,118,97,114,105,101,116,121,32,111,102,32,60,33,68,79,67,84,89,80,69,32, +104,116,109,108,62,13,10,60,38,110,98,115,112,59,38,110,98,115,112,59,38,110,98, +115,112,59,34,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,115,116 +,121,108,101,61,34,102,108,111,97,116,58,108,101,102,116,59,99,111,110,99,101, +114,110,101,100,32,119,105,116,104,32,116,104,101,61,104,116,116,112,37,51,65,37 +,50,70,37,50,70,119,119,119,46,105,110,32,112,111,112,117,108,97,114,32,99,117, +108,116,117,114,101,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47 +,62,105,116,32,105,115,32,112,111,115,115,105,98,108,101,32,116,111,32,72,97,114 +,118,97,114,100,32,85,110,105,118,101,114,115,105,116,121,116,121,108,101,115, +104,101,101,116,34,32,104,114,101,102,61,34,47,116,104,101,32,109,97,105,110,32, +99,104,97,114,97,99,116,101,114,79,120,102,111,114,100,32,85,110,105,118,101,114 +,115,105,116,121,32,32,110,97,109,101,61,34,107,101,121,119,111,114,100,115,34, +32,99,115,116,121,108,101,61,34,116,101,120,116,45,97,108,105,103,110,58,116,104 +,101,32,85,110,105,116,101,100,32,75,105,110,103,100,111,109,102,101,100,101,114 +,97,108,32,103,111,118,101,114,110,109,101,110,116,60,100,105,118,32,115,116,121 +,108,101,61,34,109,97,114,103,105,110,32,100,101,112,101,110,100,105,110,103,32, +111,110,32,116,104,101,32,100,101,115,99,114,105,112,116,105,111,110,32,111,102, +32,116,104,101,60,100,105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114, +46,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,100,101,115,116, +114,117,99,116,105,111,110,32,111,102,32,116,104,101,115,108,105,103,104,116,108 +,121,32,100,105,102,102,101,114,101,110,116,105,110,32,97,99,99,111,114,100,97, +110,99,101,32,119,105,116,104,116,101,108,101,99,111,109,109,117,110,105,99,97, +116,105,111,110,115,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32,116, +104,101,115,104,111,114,116,108,121,32,116,104,101,114,101,97,102,116,101,114, +101,115,112,101,99,105,97,108,108,121,32,105,110,32,116,104,101,32,69,117,114, +111,112,101,97,110,32,99,111,117,110,116,114,105,101,115,72,111,119,101,118,101, +114,44,32,116,104,101,114,101,32,97,114,101,115,114,99,61,34,104,116,116,112,58, +47,47,115,116,97,116,105,99,115,117,103,103,101,115,116,101,100,32,116,104,97, +116,32,116,104,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119, +46,97,32,108,97,114,103,101,32,110,117,109,98,101,114,32,111,102,32,84,101,108, +101,99,111,109,109,117,110,105,99,97,116,105,111,110,115,34,32,114,101,108,61,34 +,110,111,102,111,108,108,111,119,34,32,116,72,111,108,121,32,82,111,109,97,110, +32,69,109,112,101,114,111,114,97,108,109,111,115,116,32,101,120,99,108,117,115, +105,118,101,108,121,34,32,98,111,114,100,101,114,61,34,48,34,32,97,108,116,61,34 +,83,101,99,114,101,116,97,114,121,32,111,102,32,83,116,97,116,101,99,117,108,109 +,105,110,97,116,105,110,103,32,105,110,32,116,104,101,67,73,65,32,87,111,114,108 +,100,32,70,97,99,116,98,111,111,107,116,104,101,32,109,111,115,116,32,105,109, +112,111,114,116,97,110,116,97,110,110,105,118,101,114,115,97,114,121,32,111,102, +32,116,104,101,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45 +,60,108,105,62,60,101,109,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,65 +,116,108,97,110,116,105,99,32,79,99,101,97,110,115,116,114,105,99,116,108,121,32 +,115,112,101,97,107,105,110,103,44,115,104,111,114,116,108,121,32,98,101,102,111 +,114,101,32,116,104,101,100,105,102,102,101,114,101,110,116,32,116,121,112,101, +115,32,111,102,116,104,101,32,79,116,116,111,109,97,110,32,69,109,112,105,114, +101,62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,65,110,32,73, +110,116,114,111,100,117,99,116,105,111,110,32,116,111,99,111,110,115,101,113,117 +,101,110,99,101,32,111,102,32,116,104,101,100,101,112,97,114,116,117,114,101,32, +102,114,111,109,32,116,104,101,67,111,110,102,101,100,101,114,97,116,101,32,83, +116,97,116,101,115,105,110,100,105,103,101,110,111,117,115,32,112,101,111,112, +108,101,115,80,114,111,99,101,101,100,105,110,103,115,32,111,102,32,116,104,101, +105,110,102,111,114,109,97,116,105,111,110,32,111,110,32,116,104,101,116,104,101 +,111,114,105,101,115,32,104,97,118,101,32,98,101,101,110,105,110,118,111,108,118 +,101,109,101,110,116,32,105,110,32,116,104,101,100,105,118,105,100,101,100,32, +105,110,116,111,32,116,104,114,101,101,97,100,106,97,99,101,110,116,32,99,111, +117,110,116,114,105,101,115,105,115,32,114,101,115,112,111,110,115,105,98,108, +101,32,102,111,114,100,105,115,115,111,108,117,116,105,111,110,32,111,102,32,116 +,104,101,99,111,108,108,97,98,111,114,97,116,105,111,110,32,119,105,116,104,119, +105,100,101,108,121,32,114,101,103,97,114,100,101,100,32,97,115,104,105,115,32, +99,111,110,116,101,109,112,111,114,97,114,105,101,115,102,111,117,110,100,105, +110,103,32,109,101,109,98,101,114,32,111,102,68,111,109,105,110,105,99,97,110,32 +,82,101,112,117,98,108,105,99,103,101,110,101,114,97,108,108,121,32,97,99,99,101 +,112,116,101,100,116,104,101,32,112,111,115,115,105,98,105,108,105,116,121,32, +111,102,97,114,101,32,97,108,115,111,32,97,118,97,105,108,97,98,108,101,117,110, +100,101,114,32,99,111,110,115,116,114,117,99,116,105,111,110,114,101,115,116,111 +,114,97,116,105,111,110,32,111,102,32,116,104,101,116,104,101,32,103,101,110,101 +,114,97,108,32,112,117,98,108,105,99,105,115,32,97,108,109,111,115,116,32,101, +110,116,105,114,101,108,121,112,97,115,115,101,115,32,116,104,114,111,117,103, +104,32,116,104,101,104,97,115,32,98,101,101,110,32,115,117,103,103,101,115,116, +101,100,99,111,109,112,117,116,101,114,32,97,110,100,32,118,105,100,101,111,71, +101,114,109,97,110,105,99,32,108,97,110,103,117,97,103,101,115,32,97,99,99,111, +114,100,105,110,103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110 +,116,32,102,114,111,109,32,116,104,101,115,104,111,114,116,108,121,32,97,102,116 +,101,114,119,97,114,100,115,104,114,101,102,61,34,104,116,116,112,115,58,47,47, +119,119,119,46,114,101,99,101,110,116,32,100,101,118,101,108,111,112,109,101,110 +,116,66,111,97,114,100,32,111,102,32,68,105,114,101,99,116,111,114,115,60,100, +105,118,32,99,108,97,115,115,61,34,115,101,97,114,99,104,124,32,60,97,32,104,114 +,101,102,61,34,104,116,116,112,58,47,47,73,110,32,112,97,114,116,105,99,117,108, +97,114,44,32,116,104,101,77,117,108,116,105,112,108,101,32,102,111,111,116,110, +111,116,101,115,111,114,32,111,116,104,101,114,32,115,117,98,115,116,97,110,99, +101,116,104,111,117,115,97,110,100,115,32,111,102,32,121,101,97,114,115,116,114, +97,110,115,108,97,116,105,111,110,32,111,102,32,116,104,101,60,47,100,105,118,62 +,13,10,60,47,100,105,118,62,13,10,13,10,60,97,32,104,114,101,102,61,34,105,110, +100,101,120,46,112,104,112,119,97,115,32,101,115,116,97,98,108,105,115,104,101, +100,32,105,110,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10, +112,97,114,116,105,99,105,112,97,116,101,32,105,110,32,116,104,101,97,32,115,116 +,114,111,110,103,32,105,110,102,108,117,101,110,99,101,115,116,121,108,101,61,34 +,109,97,114,103,105,110,45,116,111,112,58,114,101,112,114,101,115,101,110,116, +101,100,32,98,121,32,116,104,101,103,114,97,100,117,97,116,101,100,32,102,114, +111,109,32,116,104,101,84,114,97,100,105,116,105,111,110,97,108,108,121,44,32, +116,104,101,69,108,101,109,101,110,116,40,34,115,99,114,105,112,116,34,41,59,72, +111,119,101,118,101,114,44,32,115,105,110,99,101,32,116,104,101,47,100,105,118, +62,10,60,47,100,105,118,62,10,60,100,105,118,32,108,101,102,116,59,32,109,97,114 +,103,105,110,45,108,101,102,116,58,112,114,111,116,101,99,116,105,111,110,32,97, +103,97,105,110,115,116,48,59,32,118,101,114,116,105,99,97,108,45,97,108,105,103, +110,58,85,110,102,111,114,116,117,110,97,116,101,108,121,44,32,116,104,101,116, +121,112,101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,47,100,105,118,62, +10,60,100,105,118,32,99,108,97,115,115,61,34,32,99,108,97,115,115,61,34,99,108, +101,97,114,102,105,120,34,62,60,100,105,118,32,99,108,97,115,115,61,34,102,111, +111,116,101,114,9,9,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10,116,104, +101,32,109,111,116,105,111,110,32,112,105,99,116,117,114,101,208,145,209,138,208 +,187,208,179,208,176,209,128,209,129,208,186,208,184,208,177,209,138,208,187,208 +,179,208,176,209,128,209,129,208,186,208,184,208,164,208,181,208,180,208,181,209 +,128,208,176,209,134,208,184,208,184,208,189,208,181,209,129,208,186,208,190,208 +,187,209,140,208,186,208,190,209,129,208,190,208,190,208,177,209,137,208,181,208 +,189,208,184,208,181,209,129,208,190,208,190,208,177,209,137,208,181,208,189,208 +,184,209,143,208,191,209,128,208,190,208,179,209,128,208,176,208,188,208,188,209 +,139,208,158,209,130,208,191,209,128,208,176,208,178,208,184,209,130,209,140,208 +,177,208,181,209,129,208,191,208,187,208,176,209,130,208,189,208,190,208,188,208 +,176,209,130,208,181,209,128,208,184,208,176,208,187,209,139,208,191,208,190,208 +,183,208,178,208,190,208,187,209,143,208,181,209,130,208,191,208,190,209,129,208 +,187,208,181,208,180,208,189,208,184,208,181,209,128,208,176,208,183,208,187,208 +,184,209,135,208,189,209,139,209,133,208,191,209,128,208,190,208,180,209,131,208 +,186,209,134,208,184,208,184,208,191,209,128,208,190,208,179,209,128,208,176,208 +,188,208,188,208,176,208,191,208,190,208,187,208,189,208,190,209,129,209,130,209 +,140,209,142,208,189,208,176,209,133,208,190,208,180,208,184,209,130,209,129,209 +,143,208,184,208,183,208,177,209,128,208,176,208,189,208,189,208,190,208,181,208 +,189,208,176,209,129,208,181,208,187,208,181,208,189,208,184,209,143,208,184,208 +,183,208,188,208,181,208,189,208,181,208,189,208,184,209,143,208,186,208,176,209 +,130,208,181,208,179,208,190,209,128,208,184,208,184,208,144,208,187,208,181,208 +,186,209,129,208,176,208,189,208,180,209,128,224,164,166,224,165,141,224,164,181 +,224,164,190,224,164,176,224,164,190,224,164,174,224,165,136,224,164,168,224,165 +,129,224,164,133,224,164,178,224,164,170,224,165,141,224,164,176,224,164,166,224 +,164,190,224,164,168,224,164,173,224,164,190,224,164,176,224,164,164,224,165,128 +,224,164,175,224,164,133,224,164,168,224,165,129,224,164,166,224,165,135,224,164 +,182,224,164,185,224,164,191,224,164,168,224,165,141,224,164,166,224,165,128,224 +,164,135,224,164,130,224,164,161,224,164,191,224,164,175,224,164,190,224,164,166 +,224,164,191,224,164,178,224,165,141,224,164,178,224,165,128,224,164,133,224,164 +,167,224,164,191,224,164,149,224,164,190,224,164,176,224,164,181,224,165,128,224 +,164,161,224,164,191,224,164,175,224,165,139,224,164,154,224,164,191,224,164,159 +,224,165,141,224,164,160,224,165,135,224,164,184,224,164,174,224,164,190,224,164 +,154,224,164,190,224,164,176,224,164,156,224,164,130,224,164,149,224,165,141,224 +,164,182,224,164,168,224,164,166,224,165,129,224,164,168,224,164,191,224,164,175 +,224,164,190,224,164,170,224,165,141,224,164,176,224,164,175,224,165,139,224,164 +,151,224,164,133,224,164,168,224,165,129,224,164,184,224,164,190,224,164,176,224 +,164,145,224,164,168,224,164,178,224,164,190,224,164,135,224,164,168,224,164,170 +,224,164,190,224,164,176,224,165,141,224,164,159,224,165,128,224,164,182,224,164 +,176,224,165,141,224,164,164,224,165,139,224,164,130,224,164,178,224,165,139,224 +,164,149,224,164,184,224,164,173,224,164,190,224,164,171,224,164,188,224,165,141 +,224,164,178,224,165,136,224,164,182,224,164,182,224,164,176,224,165,141,224,164 +,164,224,165,135,224,164,130,224,164,170,224,165,141,224,164,176,224,164,166,224 +,165,135,224,164,182,224,164,170,224,165,141,224,164,178,224,165,135,224,164,175 +,224,164,176,224,164,149,224,165,135,224,164,130,224,164,166,224,165,141,224,164 +,176,224,164,184,224,165,141,224,164,165,224,164,191,224,164,164,224,164,191,224 +,164,137,224,164,164,224,165,141,224,164,170,224,164,190,224,164,166,224,164,137 +,224,164,168,224,165,141,224,164,185,224,165,135,224,164,130,224,164,154,224,164 +,191,224,164,159,224,165,141,224,164,160,224,164,190,224,164,175,224,164,190,224 +,164,164,224,165,141,224,164,176,224,164,190,224,164,156,224,165,141,224,164,175 +,224,164,190,224,164,166,224,164,190,224,164,170,224,165,129,224,164,176,224,164 +,190,224,164,168,224,165,135,224,164,156,224,165,139,224,164,161,224,164,188,224 +,165,135,224,164,130,224,164,133,224,164,168,224,165,129,224,164,181,224,164,190 +,224,164,166,224,164,182,224,165,141,224,164,176,224,165,135,224,164,163,224,165 +,128,224,164,182,224,164,191,224,164,149,224,165,141,224,164,183,224,164,190,224 +,164,184,224,164,176,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184 +,224,164,130,224,164,151,224,165,141,224,164,176,224,164,185,224,164,170,224,164 +,176,224,164,191,224,164,163,224,164,190,224,164,174,224,164,172,224,165,141,224 +,164,176,224,164,190,224,164,130,224,164,161,224,164,172,224,164,154,224,165,141 +,224,164,154,224,165,139,224,164,130,224,164,137,224,164,170,224,164,178,224,164 +,172,224,165,141,224,164,167,224,164,174,224,164,130,224,164,164,224,165,141,224 +,164,176,224,165,128,224,164,184,224,164,130,224,164,170,224,164,176,224,165,141 +,224,164,149,224,164,137,224,164,174,224,165,141,224,164,174,224,165,128,224,164 +,166,224,164,174,224,164,190,224,164,167,224,165,141,224,164,175,224,164,174,224 +,164,184,224,164,185,224,164,190,224,164,175,224,164,164,224,164,190,224,164,182 +,224,164,172,224,165,141,224,164,166,224,165,139,224,164,130,224,164,174,224,165 +,128,224,164,161,224,164,191,224,164,175,224,164,190,224,164,134,224,164,136,224 +,164,170,224,165,128,224,164,143,224,164,178,224,164,174,224,165,139,224,164,172 +,224,164,190,224,164,135,224,164,178,224,164,184,224,164,130,224,164,150,224,165 +,141,224,164,175,224,164,190,224,164,134,224,164,170,224,164,176,224,165,135,224 +,164,182,224,164,168,224,164,133,224,164,168,224,165,129,224,164,172,224,164,130 +,224,164,167,224,164,172,224,164,190,224,164,156,224,164,188,224,164,190,224,164 +,176,224,164,168,224,164,181,224,165,128,224,164,168,224,164,164,224,164,174,224 +,164,170,224,165,141,224,164,176,224,164,174,224,165,129,224,164,150,224,164,170 +,224,165,141,224,164,176,224,164,182,224,165,141,224,164,168,224,164,170,224,164 +,176,224,164,191,224,164,181,224,164,190,224,164,176,224,164,168,224,165,129,224 +,164,149,224,164,184,224,164,190,224,164,168,224,164,184,224,164,174,224,164,176 +,224,165,141,224,164,165,224,164,168,224,164,134,224,164,175,224,165,139,224,164 +,156,224,164,191,224,164,164,224,164,184,224,165,139,224,164,174,224,164,181,224 +,164,190,224,164,176,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216 +,167,216,170,216,167,217,132,217,133,217,134,216,170,216,175,217,138,216,167,216 +,170,216,167,217,132,217,131,217,133,216,168,217,138,217,136,216,170,216,177,216 +,167,217,132,217,133,216,180,216,167,217,135,216,175,216,167,216,170,216,185,216 +,175,216,175,216,167,217,132,216,178,217,136,216,167,216,177,216,185,216,175,216 +,175,216,167,217,132,216,177,216,175,217,136,216,175,216,167,217,132,216,165,216 +,179,217,132,216,167,217,133,217,138,216,169,216,167,217,132,217,129,217,136,216 +,170,217,136,216,180,217,136,216,168,216,167,217,132,217,133,216,179,216,167,216 +,168,217,130,216,167,216,170,216,167,217,132,217,133,216,185,217,132,217,136,217 +,133,216,167,216,170,216,167,217,132,217,133,216,179,217,132,216,179,217,132,216 +,167,216,170,216,167,217,132,216,172,216,177,216,167,217,129,217,138,217,131,216 +,179,216,167,217,132,216,167,216,179,217,132,216,167,217,133,217,138,216,169,216 +,167,217,132,216,167,216,170,216,181,216,167,217,132,216,167,216,170,107,101,121 +,119,111,114,100,115,34,32,99,111,110,116,101,110,116,61,34,119,51,46,111,114, +103,47,49,57,57,57,47,120,104,116,109,108,34,62,60,97,32,116,97,114,103,101,116, +61,34,95,98,108,97,110,107,34,32,116,101,120,116,47,104,116,109,108,59,32,99,104 +,97,114,115,101,116,61,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107, +34,62,60,116,97,98,108,101,32,99,101,108,108,112,97,100,100,105,110,103,61,34,97 +,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,116,101,120, +116,45,97,108,105,103,110,58,32,99,101,110,116,101,114,59,116,111,32,108,97,115, +116,32,118,101,114,115,105,111,110,32,98,121,32,98,97,99,107,103,114,111,117,110 +,100,45,99,111,108,111,114,58,32,35,34,32,104,114,101,102,61,34,104,116,116,112, +58,47,47,119,119,119,46,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118,32 +,105,100,61,60,97,32,104,114,101,102,61,34,35,34,32,99,108,97,115,115,61,34,34, +62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,99,114,105,112, +116,34,32,115,114,99,61,34,104,116,116,112,58,47,47,10,60,115,99,114,105,112,116 +,32,108,97,110,103,117,97,103,101,61,34,47,47,69,78,34,32,34,104,116,116,112,58, +47,47,119,119,119,46,119,101,110,99,111,100,101,85,82,73,67,111,109,112,111,110, +101,110,116,40,34,32,104,114,101,102,61,34,106,97,118,97,115,99,114,105,112,116, +58,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110,116,101,110,116,100,111, +99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,115,99,112,111,115,105, +116,105,111,110,58,32,97,98,115,111,108,117,116,101,59,115,99,114,105,112,116,32 +,115,114,99,61,34,104,116,116,112,58,47,47,32,115,116,121,108,101,61,34,109,97, +114,103,105,110,45,116,111,112,58,46,109,105,110,46,106,115,34,62,60,47,115,99, +114,105,112,116,62,10,60,47,100,105,118,62,10,60,100,105,118,32,99,108,97,115, +115,61,34,119,51,46,111,114,103,47,49,57,57,57,47,120,104,116,109,108,34,32,10, +13,10,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108,62,100,105,115,116,105 +,110,99,116,105,111,110,32,98,101,116,119,101,101,110,47,34,32,116,97,114,103, +101,116,61,34,95,98,108,97,110,107,34,62,60,108,105,110,107,32,104,114,101,102, +61,34,104,116,116,112,58,47,47,101,110,99,111,100,105,110,103,61,34,117,116,102, +45,56,34,63,62,10,119,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110, +101,114,63,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,119,119,119,46, +105,99,111,110,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,32,115,116, +121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,58,116,121,112,101,61,34, +116,101,120,116,47,99,115,115,34,32,47,62,10,109,101,116,97,32,112,114,111,112, +101,114,116,121,61,34,111,103,58,116,60,105,110,112,117,116,32,116,121,112,101, +61,34,116,101,120,116,34,32,32,115,116,121,108,101,61,34,116,101,120,116,45,97, +108,105,103,110,58,116,104,101,32,100,101,118,101,108,111,112,109,101,110,116,32 +,111,102,32,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116, +101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56,105,115 +,32,99,111,110,115,105,100,101,114,101,100,32,116,111,32,98,101,116,97,98,108, +101,32,119,105,100,116,104,61,34,49,48,48,37,34,32,73,110,32,97,100,100,105,116, +105,111,110,32,116,111,32,116,104,101,32,99,111,110,116,114,105,98,117,116,101, +100,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,115,32, +98,101,116,119,101,101,110,100,101,118,101,108,111,112,109,101,110,116,32,111, +102,32,116,104,101,32,73,116,32,105,115,32,105,109,112,111,114,116,97,110,116,32 +,116,111,32,60,47,115,99,114,105,112,116,62,10,10,60,115,99,114,105,112,116,32, +32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,62,60,47, +115,112,97,110,62,60,115,112,97,110,32,105,100,61,103,98,76,105,98,114,97,114, +121,32,111,102,32,67,111,110,103,114,101,115,115,60,105,109,103,32,115,114,99,61 +,34,104,116,116,112,58,47,47,105,109,69,110,103,108,105,115,104,32,116,114,97, +110,115,108,97,116,105,111,110,65,99,97,100,101,109,121,32,111,102,32,83,99,105, +101,110,99,101,115,100,105,118,32,115,116,121,108,101,61,34,100,105,115,112,108, +97,121,58,99,111,110,115,116,114,117,99,116,105,111,110,32,111,102,32,116,104, +101,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,105,100,41,105, +110,32,99,111,110,106,117,110,99,116,105,111,110,32,119,105,116,104,69,108,101, +109,101,110,116,40,39,115,99,114,105,112,116,39,41,59,32,60,109,101,116,97,32, +112,114,111,112,101,114,116,121,61,34,111,103,58,208,145,209,138,208,187,208,179 +,208,176,209,128,209,129,208,186,208,184,10,32,116,121,112,101,61,34,116,101,120 +,116,34,32,110,97,109,101,61,34,62,80,114,105,118,97,99,121,32,80,111,108,105,99 +,121,60,47,97,62,97,100,109,105,110,105,115,116,101,114,101,100,32,98,121,32,116 +,104,101,101,110,97,98,108,101,83,105,110,103,108,101,82,101,113,117,101,115,116 +,115,116,121,108,101,61,38,113,117,111,116,59,109,97,114,103,105,110,58,60,47, +100,105,118,62,60,47,100,105,118,62,60,47,100,105,118,62,60,62,60,105,109,103,32 +,115,114,99,61,34,104,116,116,112,58,47,47,105,32,115,116,121,108,101,61,38,113, +117,111,116,59,102,108,111,97,116,58,114,101,102,101,114,114,101,100,32,116,111, +32,97,115,32,116,104,101,32,116,111,116,97,108,32,112,111,112,117,108,97,116,105 +,111,110,32,111,102,105,110,32,87,97,115,104,105,110,103,116,111,110,44,32,68,46 +,67,46,32,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45,97, +109,111,110,103,32,111,116,104,101,114,32,116,104,105,110,103,115,44,111,114,103 +,97,110,105,122,97,116,105,111,110,32,111,102,32,116,104,101,112,97,114,116,105, +99,105,112,97,116,101,100,32,105,110,32,116,104,101,116,104,101,32,105,110,116, +114,111,100,117,99,116,105,111,110,32,111,102,105,100,101,110,116,105,102,105, +101,100,32,119,105,116,104,32,116,104,101,102,105,99,116,105,111,110,97,108,32, +99,104,97,114,97,99,116,101,114,32,79,120,102,111,114,100,32,85,110,105,118,101, +114,115,105,116,121,32,109,105,115,117,110,100,101,114,115,116,97,110,100,105, +110,103,32,111,102,84,104,101,114,101,32,97,114,101,44,32,104,111,119,101,118, +101,114,44,115,116,121,108,101,115,104,101,101,116,34,32,104,114,101,102,61,34, +47,67,111,108,117,109,98,105,97,32,85,110,105,118,101,114,115,105,116,121,101, +120,112,97,110,100,101,100,32,116,111,32,105,110,99,108,117,100,101,117,115,117, +97,108,108,121,32,114,101,102,101,114,114,101,100,32,116,111,105,110,100,105,99, +97,116,105,110,103,32,116,104,97,116,32,116,104,101,104,97,118,101,32,115,117, +103,103,101,115,116,101,100,32,116,104,97,116,97,102,102,105,108,105,97,116,101, +100,32,119,105,116,104,32,116,104,101,99,111,114,114,101,108,97,116,105,111,110, +32,98,101,116,119,101,101,110,110,117,109,98,101,114,32,111,102,32,100,105,102, +102,101,114,101,110,116,62,60,47,116,100,62,60,47,116,114,62,60,47,116,97,98,108 +,101,62,82,101,112,117,98,108,105,99,32,111,102,32,73,114,101,108,97,110,100,10, +60,47,115,99,114,105,112,116,62,10,60,115,99,114,105,112,116,32,117,110,100,101, +114,32,116,104,101,32,105,110,102,108,117,101,110,99,101,99,111,110,116,114,105, +98,117,116,105,111,110,32,116,111,32,116,104,101,79,102,102,105,99,105,97,108,32 +,119,101,98,115,105,116,101,32,111,102,104,101,97,100,113,117,97,114,116,101,114 +,115,32,111,102,32,116,104,101,99,101,110,116,101,114,101,100,32,97,114,111,117, +110,100,32,116,104,101,105,109,112,108,105,99,97,116,105,111,110,115,32,111,102, +32,116,104,101,104,97,118,101,32,98,101,101,110,32,100,101,118,101,108,111,112, +101,100,70,101,100,101,114,97,108,32,82,101,112,117,98,108,105,99,32,111,102,98, +101,99,97,109,101,32,105,110,99,114,101,97,115,105,110,103,108,121,99,111,110, +116,105,110,117,97,116,105,111,110,32,111,102,32,116,104,101,78,111,116,101,44, +32,104,111,119,101,118,101,114,44,32,116,104,97,116,115,105,109,105,108,97,114, +32,116,111,32,116,104,97,116,32,111,102,32,99,97,112,97,98,105,108,105,116,105, +101,115,32,111,102,32,116,104,101,97,99,99,111,114,100,97,110,99,101,32,119,105, +116,104,32,116,104,101,112,97,114,116,105,99,105,112,97,110,116,115,32,105,110, +32,116,104,101,102,117,114,116,104,101,114,32,100,101,118,101,108,111,112,109, +101,110,116,117,110,100,101,114,32,116,104,101,32,100,105,114,101,99,116,105,111 +,110,105,115,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114,101,100, +104,105,115,32,121,111,117,110,103,101,114,32,98,114,111,116,104,101,114,60,47, +116,100,62,60,47,116,114,62,60,47,116,97,98,108,101,62,60,97,32,104,116,116,112, +45,101,113,117,105,118,61,34,88,45,85,65,45,112,104,121,115,105,99,97,108,32,112 +,114,111,112,101,114,116,105,101,115,111,102,32,66,114,105,116,105,115,104,32,67 +,111,108,117,109,98,105,97,104,97,115,32,98,101,101,110,32,99,114,105,116,105,99 +,105,122,101,100,40,119,105,116,104,32,116,104,101,32,101,120,99,101,112,116,105 +,111,110,113,117,101,115,116,105,111,110,115,32,97,98,111,117,116,32,116,104,101 +,112,97,115,115,105,110,103,32,116,104,114,111,117,103,104,32,116,104,101,48,34, +32,99,101,108,108,112,97,100,100,105,110,103,61,34,48,34,32,116,104,111,117,115, +97,110,100,115,32,111,102,32,112,101,111,112,108,101,114,101,100,105,114,101,99, +116,115,32,104,101,114,101,46,32,70,111,114,104,97,118,101,32,99,104,105,108,100 +,114,101,110,32,117,110,100,101,114,37,51,69,37,51,67,47,115,99,114,105,112,116, +37,51,69,34,41,41,59,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119 +,119,119,46,60,108,105,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47, +47,115,105,116,101,95,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,116, +101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,110,111,110,101,115,116, +121,108,101,61,34,100,105,115,112,108,97,121,58,32,110,111,110,101,60,109,101, +116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,88,45,110,101,119,32,68, +97,116,101,40,41,46,103,101,116,84,105,109,101,40,41,32,116,121,112,101,61,34, +105,109,97,103,101,47,120,45,105,99,111,110,34,60,47,115,112,97,110,62,60,115, +112,97,110,32,99,108,97,115,115,61,34,108,97,110,103,117,97,103,101,61,34,106,97 +,118,97,115,99,114,105,112,116,119,105,110,100,111,119,46,108,111,99,97,116,105, +111,110,46,104,114,101,102,60,97,32,104,114,101,102,61,34,106,97,118,97,115,99, +114,105,112,116,58,45,45,62,13,10,60,115,99,114,105,112,116,32,116,121,112,101, +61,34,116,60,97,32,104,114,101,102,61,39,104,116,116,112,58,47,47,119,119,119,46 +,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,114,101,102,61,34,60,47, +100,105,118,62,13,10,60,100,105,118,32,99,108,97,115,115,61,34,60,115,99,114,105 +,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,34,32,114,101,108,61,34, +115,116,121,108,101,115,104,101,101,116,34,32,116,60,47,100,105,118,62,10,60,115 +,99,114,105,112,116,32,116,121,112,101,61,47,97,62,32,60,97,32,104,114,101,102, +61,34,104,116,116,112,58,47,47,32,97,108,108,111,119,84,114,97,110,115,112,97, +114,101,110,99,121,61,34,88,45,85,65,45,67,111,109,112,97,116,105,98,108,101,34, +32,99,111,110,114,101,108,97,116,105,111,110,115,104,105,112,32,98,101,116,119, +101,101,110,10,60,47,115,99,114,105,112,116,62,13,10,60,115,99,114,105,112,116, +32,60,47,97,62,60,47,108,105,62,60,47,117,108,62,60,47,100,105,118,62,97,115,115 +,111,99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32,112,114,111,103, +114,97,109,109,105,110,103,32,108,97,110,103,117,97,103,101,60,47,97,62,60,97,32 +,104,114,101,102,61,34,104,116,116,112,58,47,47,60,47,97,62,60,47,108,105,62,60, +108,105,32,99,108,97,115,115,61,34,102,111,114,109,32,97,99,116,105,111,110,61, +34,104,116,116,112,58,47,47,60,100,105,118,32,115,116,121,108,101,61,34,100,105, +115,112,108,97,121,58,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101 +,61,34,113,34,60,116,97,98,108,101,32,119,105,100,116,104,61,34,49,48,48,37,34, +32,98,97,99,107,103,114,111,117,110,100,45,112,111,115,105,116,105,111,110,58,34 +,32,98,111,114,100,101,114,61,34,48,34,32,119,105,100,116,104,61,34,114,101,108, +61,34,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,54,62,60,117, +108,62,60,108,105,62,60,97,32,104,114,101,102,61,34,32,32,60,109,101,116,97,32, +104,116,116,112,45,101,113,117,105,118,61,34,99,115,115,34,32,109,101,100,105,97 +,61,34,115,99,114,101,101,110,34,32,114,101,115,112,111,110,115,105,98,108,101, +32,102,111,114,32,116,104,101,32,34,32,116,121,112,101,61,34,97,112,112,108,105, +99,97,116,105,111,110,47,34,32,115,116,121,108,101,61,34,98,97,99,107,103,114, +111,117,110,100,45,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116, +102,45,56,34,32,97,108,108,111,119,116,114,97,110,115,112,97,114,101,110,99,121, +61,34,115,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116, +101,13,10,60,109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,62, +60,47,115,112,97,110,62,60,115,112,97,110,32,99,108,97,115,115,61,34,48,34,32,99 +,101,108,108,115,112,97,99,105,110,103,61,34,48,34,62,59,10,60,47,115,99,114,105 +,112,116,62,10,60,115,99,114,105,112,116,32,115,111,109,101,116,105,109,101,115, +32,99,97,108,108,101,100,32,116,104,101,100,111,101,115,32,110,111,116,32,110, +101,99,101,115,115,97,114,105,108,121,70,111,114,32,109,111,114,101,32,105,110, +102,111,114,109,97,116,105,111,110,97,116,32,116,104,101,32,98,101,103,105,110, +110,105,110,103,32,111,102,32,60,33,68,79,67,84,89,80,69,32,104,116,109,108,62, +60,104,116,109,108,112,97,114,116,105,99,117,108,97,114,108,121,32,105,110,32, +116,104,101,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110,97,109, +101,61,34,106,97,118,97,115,99,114,105,112,116,58,118,111,105,100,40,48,41,59,34 +,101,102,102,101,99,116,105,118,101,110,101,115,115,32,111,102,32,116,104,101,32 +,97,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,103,101, +110,101,114,97,108,108,121,32,99,111,110,115,105,100,101,114,101,100,62,60,105, +110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,34,62,60,47,115, +99,114,105,112,116,62,13,10,60,115,99,114,105,112,116,116,104,114,111,117,103, +104,111,117,116,32,116,104,101,32,119,111,114,108,100,99,111,109,109,111,110,32, +109,105,115,99,111,110,99,101,112,116,105,111,110,97,115,115,111,99,105,97,116, +105,111,110,32,119,105,116,104,32,116,104,101,60,47,100,105,118,62,10,60,47,100, +105,118,62,10,60,100,105,118,32,99,100,117,114,105,110,103,32,104,105,115,32,108 +,105,102,101,116,105,109,101,44,99,111,114,114,101,115,112,111,110,100,105,110, +103,32,116,111,32,116,104,101,116,121,112,101,61,34,105,109,97,103,101,47,120,45 +,105,99,111,110,34,32,97,110,32,105,110,99,114,101,97,115,105,110,103,32,110,117 +,109,98,101,114,100,105,112,108,111,109,97,116,105,99,32,114,101,108,97,116,105, +111,110,115,97,114,101,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114, +101,100,109,101,116,97,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34, +32,60,105,110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,101,120 +,97,109,112,108,101,115,32,105,110,99,108,117,100,101,32,116,104,101,34,62,60, +105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,105,112,97,114,116,105, +99,105,112,97,116,105,111,110,32,105,110,32,116,104,101,116,104,101,32,101,115, +116,97,98,108,105,115,104,109,101,110,116,32,111,102,10,60,47,100,105,118,62,10, +60,100,105,118,32,99,108,97,115,115,61,34,38,97,109,112,59,110,98,115,112,59,38, +97,109,112,59,110,98,115,112,59,116,111,32,100,101,116,101,114,109,105,110,101, +32,119,104,101,116,104,101,114,113,117,105,116,101,32,100,105,102,102,101,114, +101,110,116,32,102,114,111,109,109,97,114,107,101,100,32,116,104,101,32,98,101, +103,105,110,110,105,110,103,100,105,115,116,97,110,99,101,32,98,101,116,119,101, +101,110,32,116,104,101,99,111,110,116,114,105,98,117,116,105,111,110,115,32,116, +111,32,116,104,101,99,111,110,102,108,105,99,116,32,98,101,116,119,101,101,110, +32,116,104,101,119,105,100,101,108,121,32,99,111,110,115,105,100,101,114,101,100 +,32,116,111,119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,102,105,114, +115,116,119,105,116,104,32,118,97,114,121,105,110,103,32,100,101,103,114,101,101 +,115,104,97,118,101,32,115,112,101,99,117,108,97,116,101,100,32,116,104,97,116, +40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,112, +97,114,116,105,99,105,112,97,116,105,110,103,32,105,110,32,116,104,101,111,114, +105,103,105,110,97,108,108,121,32,100,101,118,101,108,111,112,101,100,101,116,97 +,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,32,116,121,112,101, +61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,105,110,116,101,114,99,104,97 +,110,103,101,97,98,108,121,32,119,105,116,104,109,111,114,101,32,99,108,111,115, +101,108,121,32,114,101,108,97,116,101,100,115,111,99,105,97,108,32,97,110,100,32 +,112,111,108,105,116,105,99,97,108,116,104,97,116,32,119,111,117,108,100,32,111, +116,104,101,114,119,105,115,101,112,101,114,112,101,110,100,105,99,117,108,97, +114,32,116,111,32,116,104,101,115,116,121,108,101,32,116,121,112,101,61,34,116, +101,120,116,47,99,115,115,116,121,112,101,61,34,115,117,98,109,105,116,34,32,110 +,97,109,101,61,34,102,97,109,105,108,105,101,115,32,114,101,115,105,100,105,110, +103,32,105,110,100,101,118,101,108,111,112,105,110,103,32,99,111,117,110,116,114 +,105,101,115,99,111,109,112,117,116,101,114,32,112,114,111,103,114,97,109,109, +105,110,103,101,99,111,110,111,109,105,99,32,100,101,118,101,108,111,112,109,101 +,110,116,100,101,116,101,114,109,105,110,97,116,105,111,110,32,111,102,32,116, +104,101,102,111,114,32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111 +,110,111,110,32,115,101,118,101,114,97,108,32,111,99,99,97,115,105,111,110,115, +112,111,114,116,117,103,117,195,170,115,32,40,69,117,114,111,112,101,117,41,208, +163,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,209, +131,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,208, +160,208,190,209,129,209,129,208,184,208,185,209,129,208,186,208,190,208,185,208, +188,208,176,209,130,208,181,209,128,208,184,208,176,208,187,208,190,208,178,208, +184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,208,184,209, +131,208,191,209,128,208,176,208,178,208,187,208,181,208,189,208,184,209,143,208, +189,208,181,208,190,208,177,209,133,208,190,208,180,208,184,208,188,208,190,208, +184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208, +152,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208, +160,208,181,209,129,208,191,209,131,208,177,208,187,208,184,208,186,208,184,208, +186,208,190,208,187,208,184,209,135,208,181,209,129,209,130,208,178,208,190,208, +184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,142,209, +130,208,181,209,128,209,128,208,184,209,130,208,190,209,128,208,184,208,184,208, +180,208,190,209,129,209,130,208,176,209,130,208,190,209,135,208,189,208,190,216, +167,217,132,217,133,216,170,217,136,216,167,216,172,216,175,217,136,217,134,216, +167,217,132,216,167,216,180,216,170,216,177,216,167,217,131,216,167,216,170,216, +167,217,132,216,167,217,130,216,170,216,177,216,167,216,173,216,167,216,170,104, +116,109,108,59,32,99,104,97,114,115,101,116,61,85,84,70,45,56,34,32,115,101,116, +84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,100,105,115, +112,108,97,121,58,105,110,108,105,110,101,45,98,108,111,99,107,59,60,105,110,112 +,117,116,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,116,121,112,101, +32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,60,105,109,103,32, +115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,34,32,34,104,116,116, +112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,115,104,111,114,116,99,117, +116,32,105,99,111,110,34,32,104,114,101,102,61,34,34,32,97,117,116,111,99,111, +109,112,108,101,116,101,61,34,111,102,102,34,32,60,47,97,62,60,47,100,105,118,62 +,60,100,105,118,32,99,108,97,115,115,61,60,47,97,62,60,47,108,105,62,10,60,108, +105,32,99,108,97,115,115,61,34,99,115,115,34,32,116,121,112,101,61,34,116,101, +120,116,47,99,115,115,34,32,60,102,111,114,109,32,97,99,116,105,111,110,61,34, +104,116,116,112,58,47,47,120,116,47,99,115,115,34,32,104,114,101,102,61,34,104, +116,116,112,58,47,47,108,105,110,107,32,114,101,108,61,34,97,108,116,101,114,110 +,97,116,101,34,32,13,10,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116, +101,120,116,47,32,111,110,99,108,105,99,107,61,34,106,97,118,97,115,99,114,105, +112,116,58,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40, +41,125,104,101,105,103,104,116,61,34,49,34,32,119,105,100,116,104,61,34,49,34,32 +,80,101,111,112,108,101,39,115,32,82,101,112,117,98,108,105,99,32,111,102,32,32, +60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,116,101, +120,116,45,100,101,99,111,114,97,116,105,111,110,58,117,110,100,101,114,116,104, +101,32,98,101,103,105,110,110,105,110,103,32,111,102,32,116,104,101,32,60,47,100 +,105,118,62,10,60,47,100,105,118,62,10,60,47,100,105,118,62,10,101,115,116,97,98 +,108,105,115,104,109,101,110,116,32,111,102,32,116,104,101,32,60,47,100,105,118, +62,60,47,100,105,118,62,60,47,100,105,118,62,60,47,100,35,118,105,101,119,112, +111,114,116,123,109,105,110,45,104,101,105,103,104,116,58,10,60,115,99,114,105, +112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,111,112,116,105,111,110,62, +60,111,112,116,105,111,110,32,118,97,108,117,101,61,111,102,116,101,110,32,114, +101,102,101,114,114,101,100,32,116,111,32,97,115,32,47,111,112,116,105,111,110, +62,10,60,111,112,116,105,111,110,32,118,97,108,117,60,33,68,79,67,84,89,80,69,32 +,104,116,109,108,62,10,60,33,45,45,91,73,110,116,101,114,110,97,116,105,111,110, +97,108,32,65,105,114,112,111,114,116,62,10,60,97,32,104,114,101,102,61,34,104, +116,116,112,58,47,47,119,119,119,60,47,97,62,60,97,32,104,114,101,102,61,34,104, +116,116,112,58,47,47,119,224,184,160,224,184,178,224,184,169,224,184,178,224,185 +,132,224,184,151,224,184,162,225,131,165,225,131,144,225,131,160,225,131,151,225 +,131,163,225,131,154,225,131,152,230,173,163,233,171,148,228,184,173,230,150,135 +,32,40,231,185,129,233,171,148,41,224,164,168,224,164,191,224,164,176,224,165, +141,224,164,166,224,165,135,224,164,182,224,164,161,224,164,190,224,164,137,224, +164,168,224,164,178,224,165,139,224,164,161,224,164,149,224,165,141,224,164,183, +224,165,135,224,164,164,224,165,141,224,164,176,224,164,156,224,164,190,224,164, +168,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184,224,164,130,224, +164,172,224,164,130,224,164,167,224,164,191,224,164,164,224,164,184,224,165,141, +224,164,165,224,164,190,224,164,170,224,164,168,224,164,190,224,164,184,224,165, +141,224,164,181,224,165,128,224,164,149,224,164,190,224,164,176,224,164,184,224, +164,130,224,164,184,224,165,141,224,164,149,224,164,176,224,164,163,224,164,184, +224,164,190,224,164,174,224,164,151,224,165,141,224,164,176,224,165,128,224,164, +154,224,164,191,224,164,159,224,165,141,224,164,160,224,165,139,224,164,130,224, +164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164,168, +224,164,133,224,164,174,224,165,135,224,164,176,224,164,191,224,164,149,224,164, +190,224,164,181,224,164,191,224,164,173,224,164,191,224,164,168,224,165,141,224, +164,168,224,164,151,224,164,190,224,164,161,224,164,191,224,164,175,224,164,190, +224,164,129,224,164,149,224,165,141,224,164,175,224,165,139,224,164,130,224,164, +149,224,164,191,224,164,184,224,165,129,224,164,176,224,164,149,224,165,141,224, +164,183,224,164,190,224,164,170,224,164,185,224,165,129,224,164,129,224,164,154, +224,164,164,224,165,128,224,164,170,224,165,141,224,164,176,224,164,172,224,164, +130,224,164,167,224,164,168,224,164,159,224,164,191,224,164,170,224,165,141,224, +164,170,224,164,163,224,165,128,224,164,149,224,165,141,224,164,176,224,164,191, +224,164,149,224,165,135,224,164,159,224,164,170,224,165,141,224,164,176,224,164, +190,224,164,176,224,164,130,224,164,173,224,164,170,224,165,141,224,164,176,224, +164,190,224,164,170,224,165,141,224,164,164,224,164,174,224,164,190,224,164,178, +224,164,191,224,164,149,224,165,139,224,164,130,224,164,176,224,164,171,224,164, +188,224,165,141,224,164,164,224,164,190,224,164,176,224,164,168,224,164,191,224, +164,176,224,165,141,224,164,174,224,164,190,224,164,163,224,164,178,224,164,191, +224,164,174,224,164,191,224,164,159,224,165,135,224,164,161,100,101,115,99,114, +105,112,116,105,111,110,34,32,99,111,110,116,101,110,116,61,34,100,111,99,117, +109,101,110,116,46,108,111,99,97,116,105,111,110,46,112,114,111,116,46,103,101, +116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,60,33,68,79 +,67,84,89,80,69,32,104,116,109,108,62,10,60,104,116,109,108,32,60,109,101,116,97 +,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,58,117,114,108,34,32 +,99,111,110,116,101,110,116,61,34,104,116,116,112,58,47,47,46,99,115,115,34,32, +114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,115,116,121,108,101 +,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,62,116,121,112,101,61 +,34,116,101,120,116,47,99,115,115,34,32,104,114,101,102,61,34,119,51,46,111,114, +103,47,49,57,57,57,47,120,104,116,109,108,34,32,120,109,108,116,121,112,101,61, +34,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,34,32,109,101,116,104 +,111,100,61,34,103,101,116,34,32,97,99,116,105,111,110,61,34,108,105,110,107,32, +114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,32,61,32,100,111 +,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,116,121,112, +101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,34,32,47,62,99,101,108,108 +,112,97,100,100,105,110,103,61,34,48,34,32,99,101,108,108,115,112,46,99,115,115, +34,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,60,47,97,62,60, +47,108,105,62,60,108,105,62,60,97,32,104,114,101,102,61,34,34,32,119,105,100,116 +,104,61,34,49,34,32,104,101,105,103,104,116,61,34,49,34,34,62,60,97,32,104,114, +101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,115,116,121,108,101,61,34, +100,105,115,112,108,97,121,58,110,111,110,101,59,34,62,97,108,116,101,114,110,97 +,116,101,34,32,116,121,112,101,61,34,97,112,112,108,105,45,47,47,87,51,67,47,47, +68,84,68,32,88,72,84,77,76,32,49,46,48,32,101,108,108,115,112,97,99,105,110,103, +61,34,48,34,32,99,101,108,108,112,97,100,32,116,121,112,101,61,34,104,105,100, +100,101,110,34,32,118,97,108,117,101,61,34,47,97,62,38,110,98,115,112,59,60,115, +112,97,110,32,114,111,108,101,61,34,115,10,60,105,110,112,117,116,32,116,121,112 +,101,61,34,104,105,100,100,101,110,34,32,108,97,110,103,117,97,103,101,61,34,74, +97,118,97,83,99,114,105,112,116,34,32,32,100,111,99,117,109,101,110,116,46,103, +101,116,69,108,101,109,101,110,116,115,66,103,61,34,48,34,32,99,101,108,108,115, +112,97,99,105,110,103,61,34,48,34,32,121,112,101,61,34,116,101,120,116,47,99,115 +,115,34,32,109,101,100,105,97,61,34,116,121,112,101,61,39,116,101,120,116,47,106 +,97,118,97,115,99,114,105,112,116,39,119,105,116,104,32,116,104,101,32,101,120, +99,101,112,116,105,111,110,32,111,102,32,121,112,101,61,34,116,101,120,116,47,99 +,115,115,34,32,114,101,108,61,34,115,116,32,104,101,105,103,104,116,61,34,49,34, +32,119,105,100,116,104,61,34,49,34,32,61,39,43,101,110,99,111,100,101,85,82,73, +67,111,109,112,111,110,101,110,116,40,60,108,105,110,107,32,114,101,108,61,34,97 +,108,116,101,114,110,97,116,101,34,32,10,98,111,100,121,44,32,116,114,44,32,105, +110,112,117,116,44,32,116,101,120,116,109,101,116,97,32,110,97,109,101,61,34,114 +,111,98,111,116,115,34,32,99,111,110,109,101,116,104,111,100,61,34,112,111,115, +116,34,32,97,99,116,105,111,110,61,34,62,10,60,97,32,104,114,101,102,61,34,104, +116,116,112,58,47,47,119,119,119,46,99,115,115,34,32,114,101,108,61,34,115,116, +121,108,101,115,104,101,101,116,34,32,60,47,100,105,118,62,60,47,100,105,118,62, +60,100,105,118,32,99,108,97,115,115,108,97,110,103,117,97,103,101,61,34,106,97, +118,97,115,99,114,105,112,116,34,62,97,114,105,97,45,104,105,100,100,101,110,61, +34,116,114,117,101,34,62,194,183,60,114,105,112,116,34,32,116,121,112,101,61,34, +116,101,120,116,47,106,97,118,97,115,108,61,48,59,125,41,40,41,59,10,40,102,117, +110,99,116,105,111,110,40,41,123,98,97,99,107,103,114,111,117,110,100,45,105,109 +,97,103,101,58,32,117,114,108,40,47,97,62,60,47,108,105,62,60,108,105,62,60,97, +32,104,114,101,102,61,34,104,9,9,60,108,105,62,60,97,32,104,114,101,102,61,34, +104,116,116,112,58,47,47,97,116,111,114,34,32,97,114,105,97,45,104,105,100,100, +101,110,61,34,116,114,117,62,32,60,97,32,104,114,101,102,61,34,104,116,116,112, +58,47,47,119,119,119,46,108,97,110,103,117,97,103,101,61,34,106,97,118,97,115,99 +,114,105,112,116,34,32,47,111,112,116,105,111,110,62,10,60,111,112,116,105,111, +110,32,118,97,108,117,101,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118, +32,99,108,97,115,115,61,114,97,116,111,114,34,32,97,114,105,97,45,104,105,100, +100,101,110,61,34,116,114,101,61,40,110,101,119,32,68,97,116,101,41,46,103,101, +116,84,105,109,101,40,41,112,111,114,116,117,103,117,195,170,115,32,40,100,111, +32,66,114,97,115,105,108,41,208,190,209,128,208,179,208,176,208,189,208,184,208, +183,208,176,209,134,208,184,208,184,208,178,208,190,208,183,208,188,208,190,208, +182,208,189,208,190,209,129,209,130,209,140,208,190,208,177,209,128,208,176,208, +183,208,190,208,178,208,176,208,189,208,184,209,143,209,128,208,181,208,179,208, +184,209,129,209,130,209,128,208,176,209,134,208,184,208,184,208,178,208,190,208, +183,208,188,208,190,208,182,208,189,208,190,209,129,209,130,208,184,208,190,208, +177,209,143,208,183,208,176,209,130,208,181,208,187,209,140,208,189,208,176,60, +33,68,79,67,84,89,80,69,32,104,116,109,108,32,80,85,66,76,73,67,32,34,110,116,45 +,84,121,112,101,34,32,99,111,110,116,101,110,116,61,34,116,101,120,116,47,60,109 +,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,116,101, +114,97,110,115,105,116,105,111,110,97,108,47,47,69,78,34,32,34,104,116,116,112, +58,60,104,116,109,108,32,120,109,108,110,115,61,34,104,116,116,112,58,47,47,119, +119,119,45,47,47,87,51,67,47,47,68,84,68,32,88,72,84,77,76,32,49,46,48,32,84,68, +84,68,47,120,104,116,109,108,49,45,116,114,97,110,115,105,116,105,111,110,97,108 +,47,47,119,119,119,46,119,51,46,111,114,103,47,84,82,47,120,104,116,109,108,49, +47,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116, +39,59,60,109,101,116,97,32,110,97,109,101,61,34,100,101,115,99,114,105,112,116, +105,111,110,112,97,114,101,110,116,78,111,100,101,46,105,110,115,101,114,116,66, +101,102,111,114,101,60,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100, +100,101,110,34,32,110,97,106,115,34,32,116,121,112,101,61,34,116,101,120,116,47, +106,97,118,97,115,99,114,105,40,100,111,99,117,109,101,110,116,41,46,114,101,97, +100,121,40,102,117,110,99,116,105,115,99,114,105,112,116,32,116,121,112,101,61, +34,116,101,120,116,47,106,97,118,97,115,105,109,97,103,101,34,32,99,111,110,116, +101,110,116,61,34,104,116,116,112,58,47,47,85,65,45,67,111,109,112,97,116,105,98 +,108,101,34,32,99,111,110,116,101,110,116,61,116,109,108,59,32,99,104,97,114,115 +,101,116,61,117,116,102,45,56,34,32,47,62,10,108,105,110,107,32,114,101,108,61, +34,115,104,111,114,116,99,117,116,32,105,99,111,110,60,108,105,110,107,32,114, +101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,60,47,115,99,114,105 +,112,116,62,10,60,115,99,114,105,112,116,32,116,121,112,101,61,61,32,100,111,99, +117,109,101,110,116,46,99,114,101,97,116,101,69,108,101,109,101,110,60,97,32,116 +,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,104,114,101,102,61,32,100, +111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,115,66,105, +110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61 +,97,46,116,121,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114, +105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110, +97,109,101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56, +34,32,47,62,100,116,100,34,62,10,60,104,116,109,108,32,120,109,108,110,115,61,34 +,104,116,116,112,45,47,47,87,51,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49, +32,84,101,110,116,115,66,121,84,97,103,78,97,109,101,40,39,115,99,114,105,112, +116,39,41,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110, +34,32,110,97,109,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,101,120, +116,47,106,97,118,97,115,34,32,115,116,121,108,101,61,34,100,105,115,112,108,97, +121,58,110,111,110,101,59,34,62,100,111,99,117,109,101,110,116,46,103,101,116,69 +,108,101,109,101,110,116,66,121,73,100,40,61,100,111,99,117,109,101,110,116,46, +99,114,101,97,116,101,69,108,101,109,101,110,116,40,39,32,116,121,112,101,61,39, +116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,105,110,112,117,116, +32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61,34,100,46,103, +101,116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,115,110 +,105,99,97,108,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119, +46,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49,32,84,114,97,110,115,105,116, +60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34 +,62,10,10,60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99, +115,115,34,62,105,111,110,97,108,46,100,116,100,34,62,10,60,104,116,109,108,32, +120,109,108,110,115,61,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110, +116,101,110,116,45,84,121,112,101,100,105,110,103,61,34,48,34,32,99,101,108,108, +115,112,97,99,105,110,103,61,34,48,34,104,116,109,108,59,32,99,104,97,114,115, +101,116,61,117,116,102,45,56,34,32,47,62,10,32,115,116,121,108,101,61,34,100,105 +,115,112,108,97,121,58,110,111,110,101,59,34,62,60,60,108,105,62,60,97,32,104, +114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,32,116,121,112,101,61, +39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,62,208,180,208,181 +,209,143,209,130,208,181,208,187,209,140,208,189,208,190,209,129,209,130,208,184 +,209,129,208,190,208,190,209,130,208,178,208,181,209,130,209,129,209,130,208,178 +,208,184,208,184,208,191,209,128,208,190,208,184,208,183,208,178,208,190,208,180 +,209,129,209,130,208,178,208,176,208,177,208,181,208,183,208,190,208,191,208,176 +,209,129,208,189,208,190,209,129,209,130,208,184,224,164,170,224,165,129,224,164 +,184,224,165,141,224,164,164,224,164,191,224,164,149,224,164,190,224,164,149,224 +,164,190,224,164,130,224,164,151,224,165,141,224,164,176,224,165,135,224,164,184 +,224,164,137,224,164,168,224,165,141,224,164,185,224,165,139,224,164,130,224,164 +,168,224,165,135,224,164,181,224,164,191,224,164,167,224,164,190,224,164,168,224 +,164,184,224,164,173,224,164,190,224,164,171,224,164,191,224,164,149,224,165,141 +,224,164,184,224,164,191,224,164,130,224,164,151,224,164,184,224,165,129,224,164 +,176,224,164,149,224,165,141,224,164,183,224,164,191,224,164,164,224,164,149,224 +,165,137,224,164,170,224,165,128,224,164,176,224,164,190,224,164,135,224,164,159 +,224,164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164 +,170,224,164,168,224,164,149,224,164,190,224,164,176,224,165,141,224,164,176,224 +,164,181,224,164,190,224,164,136,224,164,184,224,164,149,224,165,141,224,164,176 +,224,164,191,224,164,175,224,164,164,224,164,190 +} +/* GENERATED CODE END */ +; +#endif /* !BROTLI_EXTERNAL_DICTIONARY_DATA */ + +#if !defined(BROTLI_EXTERNAL_DICTIONARY_DATA) +static const BrotliDictionary kBrotliDictionary = { #else -static BROTLI_MODEL("small") BrotliDictionary kBrotliDictionary = { +static BrotliDictionary kBrotliDictionary = { #endif /* size_bits_by_length */ { diff --git a/icecat/modules/brotli/common/dictionary.h b/icecat/modules/brotli/common/dictionary.h index ed683b0aec..b1c6f7f580 100644 --- a/icecat/modules/brotli/common/dictionary.h +++ b/icecat/modules/brotli/common/dictionary.h @@ -9,7 +9,8 @@ #ifndef BROTLI_COMMON_DICTIONARY_H_ #define BROTLI_COMMON_DICTIONARY_H_ -#include "platform.h" +#include +#include #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/icecat/modules/brotli/common/dictionary_inc.h b/icecat/modules/brotli/common/dictionary_inc.h deleted file mode 100644 index f40a93eccf..0000000000 --- a/icecat/modules/brotli/common/dictionary_inc.h +++ /dev/null @@ -1,5847 +0,0 @@ -static const BROTLI_MODEL("small") uint8_t kBrotliDictionaryData[] = { -116,105,109,101,100,111,119,110,108,105,102,101,108,101,102,116,98,97,99,107,99, -111,100,101,100,97,116,97,115,104,111,119,111,110,108,121,115,105,116,101,99,105 -,116,121,111,112,101,110,106,117,115,116,108,105,107,101,102,114,101,101,119,111 -,114,107,116,101,120,116,121,101,97,114,111,118,101,114,98,111,100,121,108,111, -118,101,102,111,114,109,98,111,111,107,112,108,97,121,108,105,118,101,108,105, -110,101,104,101,108,112,104,111,109,101,115,105,100,101,109,111,114,101,119,111, -114,100,108,111,110,103,116,104,101,109,118,105,101,119,102,105,110,100,112,97, -103,101,100,97,121,115,102,117,108,108,104,101,97,100,116,101,114,109,101,97,99, -104,97,114,101,97,102,114,111,109,116,114,117,101,109,97,114,107,97,98,108,101, -117,112,111,110,104,105,103,104,100,97,116,101,108,97,110,100,110,101,119,115, -101,118,101,110,110,101,120,116,99,97,115,101,98,111,116,104,112,111,115,116,117 -,115,101,100,109,97,100,101,104,97,110,100,104,101,114,101,119,104,97,116,110,97 -,109,101,76,105,110,107,98,108,111,103,115,105,122,101,98,97,115,101,104,101,108 -,100,109,97,107,101,109,97,105,110,117,115,101,114,39,41,32,43,104,111,108,100, -101,110,100,115,119,105,116,104,78,101,119,115,114,101,97,100,119,101,114,101, -115,105,103,110,116,97,107,101,104,97,118,101,103,97,109,101,115,101,101,110,99, -97,108,108,112,97,116,104,119,101,108,108,112,108,117,115,109,101,110,117,102, -105,108,109,112,97,114,116,106,111,105,110,116,104,105,115,108,105,115,116,103, -111,111,100,110,101,101,100,119,97,121,115,119,101,115,116,106,111,98,115,109, -105,110,100,97,108,115,111,108,111,103,111,114,105,99,104,117,115,101,115,108,97 -,115,116,116,101,97,109,97,114,109,121,102,111,111,100,107,105,110,103,119,105, -108,108,101,97,115,116,119,97,114,100,98,101,115,116,102,105,114,101,80,97,103, -101,107,110,111,119,97,119,97,121,46,112,110,103,109,111,118,101,116,104,97,110, -108,111,97,100,103,105,118,101,115,101,108,102,110,111,116,101,109,117,99,104, -102,101,101,100,109,97,110,121,114,111,99,107,105,99,111,110,111,110,99,101,108, -111,111,107,104,105,100,101,100,105,101,100,72,111,109,101,114,117,108,101,104, -111,115,116,97,106,97,120,105,110,102,111,99,108,117,98,108,97,119,115,108,101, -115,115,104,97,108,102,115,111,109,101,115,117,99,104,122,111,110,101,49,48,48, -37,111,110,101,115,99,97,114,101,84,105,109,101,114,97,99,101,98,108,117,101,102 -,111,117,114,119,101,101,107,102,97,99,101,104,111,112,101,103,97,118,101,104,97 -,114,100,108,111,115,116,119,104,101,110,112,97,114,107,107,101,112,116,112,97, -115,115,115,104,105,112,114,111,111,109,72,84,77,76,112,108,97,110,84,121,112, -101,100,111,110,101,115,97,118,101,107,101,101,112,102,108,97,103,108,105,110, -107,115,111,108,100,102,105,118,101,116,111,111,107,114,97,116,101,116,111,119, -110,106,117,109,112,116,104,117,115,100,97,114,107,99,97,114,100,102,105,108,101 -,102,101,97,114,115,116,97,121,107,105,108,108,116,104,97,116,102,97,108,108,97, -117,116,111,101,118,101,114,46,99,111,109,116,97,108,107,115,104,111,112,118,111 -,116,101,100,101,101,112,109,111,100,101,114,101,115,116,116,117,114,110,98,111, -114,110,98,97,110,100,102,101,108,108,114,111,115,101,117,114,108,40,115,107,105 -,110,114,111,108,101,99,111,109,101,97,99,116,115,97,103,101,115,109,101,101,116 -,103,111,108,100,46,106,112,103,105,116,101,109,118,97,114,121,102,101,108,116, -116,104,101,110,115,101,110,100,100,114,111,112,86,105,101,119,99,111,112,121,49 -,46,48,34,60,47,97,62,115,116,111,112,101,108,115,101,108,105,101,115,116,111, -117,114,112,97,99,107,46,103,105,102,112,97,115,116,99,115,115,63,103,114,97,121 -,109,101,97,110,38,103,116,59,114,105,100,101,115,104,111,116,108,97,116,101,115 -,97,105,100,114,111,97,100,118,97,114,32,102,101,101,108,106,111,104,110,114,105 -,99,107,112,111,114,116,102,97,115,116,39,85,65,45,100,101,97,100,60,47,98,62, -112,111,111,114,98,105,108,108,116,121,112,101,85,46,83,46,119,111,111,100,109, -117,115,116,50,112,120,59,73,110,102,111,114,97,110,107,119,105,100,101,119,97, -110,116,119,97,108,108,108,101,97,100,91,48,93,59,112,97,117,108,119,97,118,101, -115,117,114,101,36,40,39,35,119,97,105,116,109,97,115,115,97,114,109,115,103,111 -,101,115,103,97,105,110,108,97,110,103,112,97,105,100,33,45,45,32,108,111,99,107 -,117,110,105,116,114,111,111,116,119,97,108,107,102,105,114,109,119,105,102,101, -120,109,108,34,115,111,110,103,116,101,115,116,50,48,112,120,107,105,110,100,114 -,111,119,115,116,111,111,108,102,111,110,116,109,97,105,108,115,97,102,101,115, -116,97,114,109,97,112,115,99,111,114,101,114,97,105,110,102,108,111,119,98,97,98 -,121,115,112,97,110,115,97,121,115,52,112,120,59,54,112,120,59,97,114,116,115, -102,111,111,116,114,101,97,108,119,105,107,105,104,101,97,116,115,116,101,112, -116,114,105,112,111,114,103,47,108,97,107,101,119,101,97,107,116,111,108,100,70, -111,114,109,99,97,115,116,102,97,110,115,98,97,110,107,118,101,114,121,114,117, -110,115,106,117,108,121,116,97,115,107,49,112,120,59,103,111,97,108,103,114,101, -119,115,108,111,119,101,100,103,101,105,100,61,34,115,101,116,115,53,112,120,59, -46,106,115,63,52,48,112,120,105,102,32,40,115,111,111,110,115,101,97,116,110,111 -,110,101,116,117,98,101,122,101,114,111,115,101,110,116,114,101,101,100,102,97, -99,116,105,110,116,111,103,105,102,116,104,97,114,109,49,56,112,120,99,97,109, -101,104,105,108,108,98,111,108,100,122,111,111,109,118,111,105,100,101,97,115, -121,114,105,110,103,102,105,108,108,112,101,97,107,105,110,105,116,99,111,115, -116,51,112,120,59,106,97,99,107,116,97,103,115,98,105,116,115,114,111,108,108, -101,100,105,116,107,110,101,119,110,101,97,114,60,33,45,45,103,114,111,119,74,83 -,79,78,100,117,116,121,78,97,109,101,115,97,108,101,121,111,117,32,108,111,116, -115,112,97,105,110,106,97,122,122,99,111,108,100,101,121,101,115,102,105,115,104 -,119,119,119,46,114,105,115,107,116,97,98,115,112,114,101,118,49,48,112,120,114, -105,115,101,50,53,112,120,66,108,117,101,100,105,110,103,51,48,48,44,98,97,108, -108,102,111,114,100,101,97,114,110,119,105,108,100,98,111,120,46,102,97,105,114, -108,97,99,107,118,101,114,115,112,97,105,114,106,117,110,101,116,101,99,104,105, -102,40,33,112,105,99,107,101,118,105,108,36,40,34,35,119,97,114,109,108,111,114, -100,100,111,101,115,112,117,108,108,44,48,48,48,105,100,101,97,100,114,97,119, -104,117,103,101,115,112,111,116,102,117,110,100,98,117,114,110,104,114,101,102, -99,101,108,108,107,101,121,115,116,105,99,107,104,111,117,114,108,111,115,115, -102,117,101,108,49,50,112,120,115,117,105,116,100,101,97,108,82,83,83,34,97,103, -101,100,103,114,101,121,71,69,84,34,101,97,115,101,97,105,109,115,103,105,114, -108,97,105,100,115,56,112,120,59,110,97,118,121,103,114,105,100,116,105,112,115, -35,57,57,57,119,97,114,115,108,97,100,121,99,97,114,115,41,59,32,125,112,104,112 -,63,104,101,108,108,116,97,108,108,119,104,111,109,122,104,58,229,42,47,13,10,32 -,49,48,48,104,97,108,108,46,10,10,65,55,112,120,59,112,117,115,104,99,104,97,116 -,48,112,120,59,99,114,101,119,42,47,60,47,104,97,115,104,55,53,112,120,102,108, -97,116,114,97,114,101,32,38,38,32,116,101,108,108,99,97,109,112,111,110,116,111, -108,97,105,100,109,105,115,115,115,107,105,112,116,101,110,116,102,105,110,101, -109,97,108,101,103,101,116,115,112,108,111,116,52,48,48,44,13,10,13,10,99,111, -111,108,102,101,101,116,46,112,104,112,60,98,114,62,101,114,105,99,109,111,115, -116,103,117,105,100,98,101,108,108,100,101,115,99,104,97,105,114,109,97,116,104, -97,116,111,109,47,105,109,103,38,35,56,50,108,117,99,107,99,101,110,116,48,48,48 -,59,116,105,110,121,103,111,110,101,104,116,109,108,115,101,108,108,100,114,117, -103,70,82,69,69,110,111,100,101,110,105,99,107,63,105,100,61,108,111,115,101,110 -,117,108,108,118,97,115,116,119,105,110,100,82,83,83,32,119,101,97,114,114,101, -108,121,98,101,101,110,115,97,109,101,100,117,107,101,110,97,115,97,99,97,112, -101,119,105,115,104,103,117,108,102,84,50,51,58,104,105,116,115,115,108,111,116, -103,97,116,101,107,105,99,107,98,108,117,114,116,104,101,121,49,53,112,120,39,39 -,41,59,41,59,34,62,109,115,105,101,119,105,110,115,98,105,114,100,115,111,114, -116,98,101,116,97,115,101,101,107,84,49,56,58,111,114,100,115,116,114,101,101, -109,97,108,108,54,48,112,120,102,97,114,109,226,128,153,115,98,111,121,115,91,48 -,93,46,39,41,59,34,80,79,83,84,98,101,97,114,107,105,100,115,41,59,125,125,109, -97,114,121,116,101,110,100,40,85,75,41,113,117,97,100,122,104,58,230,45,115,105, -122,45,45,45,45,112,114,111,112,39,41,59,13,108,105,102,116,84,49,57,58,118,105, -99,101,97,110,100,121,100,101,98,116,62,82,83,83,112,111,111,108,110,101,99,107, -98,108,111,119,84,49,54,58,100,111,111,114,101,118,97,108,84,49,55,58,108,101, -116,115,102,97,105,108,111,114,97,108,112,111,108,108,110,111,118,97,99,111,108, -115,103,101,110,101,32,226,128,148,115,111,102,116,114,111,109,101,116,105,108, -108,114,111,115,115,60,104,51,62,112,111,117,114,102,97,100,101,112,105,110,107, -60,116,114,62,109,105,110,105,41,124,33,40,109,105,110,101,122,104,58,232,98,97, -114,115,104,101,97,114,48,48,41,59,109,105,108,107,32,45,45,62,105,114,111,110, -102,114,101,100,100,105,115,107,119,101,110,116,115,111,105,108,112,117,116,115, -47,106,115,47,104,111,108,121,84,50,50,58,73,83,66,78,84,50,48,58,97,100,97,109, -115,101,101,115,60,104,50,62,106,115,111,110,39,44,32,39,99,111,110,116,84,50,49 -,58,32,82,83,83,108,111,111,112,97,115,105,97,109,111,111,110,60,47,112,62,115, -111,117,108,76,73,78,69,102,111,114,116,99,97,114,116,84,49,52,58,60,104,49,62, -56,48,112,120,33,45,45,60,57,112,120,59,84,48,52,58,109,105,107,101,58,52,54,90, -110,105,99,101,105,110,99,104,89,111,114,107,114,105,99,101,122,104,58,228,39,41 -,41,59,112,117,114,101,109,97,103,101,112,97,114,97,116,111,110,101,98,111,110, -100,58,51,55,90,95,111,102,95,39,93,41,59,48,48,48,44,122,104,58,231,116,97,110, -107,121,97,114,100,98,111,119,108,98,117,115,104,58,53,54,90,74,97,118,97,51,48, -112,120,10,124,125,10,37,67,51,37,58,51,52,90,106,101,102,102,69,88,80,73,99,97, -115,104,118,105,115,97,103,111,108,102,115,110,111,119,122,104,58,233,113,117, -101,114,46,99,115,115,115,105,99,107,109,101,97,116,109,105,110,46,98,105,110, -100,100,101,108,108,104,105,114,101,112,105,99,115,114,101,110,116,58,51,54,90, -72,84,84,80,45,50,48,49,102,111,116,111,119,111,108,102,69,78,68,32,120,98,111, -120,58,53,52,90,66,79,68,89,100,105,99,107,59,10,125,10,101,120,105,116,58,51,53 -,90,118,97,114,115,98,101,97,116,39,125,41,59,100,105,101,116,57,57,57,59,97,110 -,110,101,125,125,60,47,91,105,93,46,76,97,110,103,107,109,194,178,119,105,114, -101,116,111,121,115,97,100,100,115,115,101,97,108,97,108,101,120,59,10,9,125,101 -,99,104,111,110,105,110,101,46,111,114,103,48,48,53,41,116,111,110,121,106,101, -119,115,115,97,110,100,108,101,103,115,114,111,111,102,48,48,48,41,32,50,48,48, -119,105,110,101,103,101,97,114,100,111,103,115,98,111,111,116,103,97,114,121,99, -117,116,115,116,121,108,101,116,101,109,112,116,105,111,110,46,120,109,108,99, -111,99,107,103,97,110,103,36,40,39,46,53,48,112,120,80,104,46,68,109,105,115,99, -97,108,97,110,108,111,97,110,100,101,115,107,109,105,108,101,114,121,97,110,117, -110,105,120,100,105,115,99,41,59,125,10,100,117,115,116,99,108,105,112,41,46,10, -10,55,48,112,120,45,50,48,48,68,86,68,115,55,93,62,60,116,97,112,101,100,101,109 -,111,105,43,43,41,119,97,103,101,101,117,114,111,112,104,105,108,111,112,116,115 -,104,111,108,101,70,65,81,115,97,115,105,110,45,50,54,84,108,97,98,115,112,101, -116,115,85,82,76,32,98,117,108,107,99,111,111,107,59,125,13,10,72,69,65,68,91,48 -,93,41,97,98,98,114,106,117,97,110,40,49,57,56,108,101,115,104,116,119,105,110, -60,47,105,62,115,111,110,121,103,117,121,115,102,117,99,107,112,105,112,101,124, -45,10,33,48,48,50,41,110,100,111,119,91,49,93,59,91,93,59,10,76,111,103,32,115, -97,108,116,13,10,9,9,98,97,110,103,116,114,105,109,98,97,116,104,41,123,13,10,48 -,48,112,120,10,125,41,59,107,111,58,236,102,101,101,115,97,100,62,13,115,58,47, -47,32,91,93,59,116,111,108,108,112,108,117,103,40,41,123,10,123,13,10,32,46,106, -115,39,50,48,48,112,100,117,97,108,98,111,97,116,46,74,80,71,41,59,10,125,113, -117,111,116,41,59,10,10,39,41,59,10,13,10,125,13,50,48,49,52,50,48,49,53,50,48, -49,54,50,48,49,55,50,48,49,56,50,48,49,57,50,48,50,48,50,48,50,49,50,48,50,50,50 -,48,50,51,50,48,50,52,50,48,50,53,50,48,50,54,50,48,50,55,50,48,50,56,50,48,50, -57,50,48,51,48,50,48,51,49,50,48,51,50,50,48,51,51,50,48,51,52,50,48,51,53,50,48 -,51,54,50,48,51,55,50,48,49,51,50,48,49,50,50,48,49,49,50,48,49,48,50,48,48,57, -50,48,48,56,50,48,48,55,50,48,48,54,50,48,48,53,50,48,48,52,50,48,48,51,50,48,48 -,50,50,48,48,49,50,48,48,48,49,57,57,57,49,57,57,56,49,57,57,55,49,57,57,54,49, -57,57,53,49,57,57,52,49,57,57,51,49,57,57,50,49,57,57,49,49,57,57,48,49,57,56,57 -,49,57,56,56,49,57,56,55,49,57,56,54,49,57,56,53,49,57,56,52,49,57,56,51,49,57, -56,50,49,57,56,49,49,57,56,48,49,57,55,57,49,57,55,56,49,57,55,55,49,57,55,54,49 -,57,55,53,49,57,55,52,49,57,55,51,49,57,55,50,49,57,55,49,49,57,55,48,49,57,54, -57,49,57,54,56,49,57,54,55,49,57,54,54,49,57,54,53,49,57,54,52,49,57,54,51,49,57 -,54,50,49,57,54,49,49,57,54,48,49,57,53,57,49,57,53,56,49,57,53,55,49,57,53,54, -49,57,53,53,49,57,53,52,49,57,53,51,49,57,53,50,49,57,53,49,49,57,53,48,49,48,48 -,48,49,48,50,52,49,51,57,52,48,48,48,48,57,57,57,57,99,111,109,111,109,195,161, -115,101,115,116,101,101,115,116,97,112,101,114,111,116,111,100,111,104,97,99,101 -,99,97,100,97,97,195,177,111,98,105,101,110,100,195,173,97,97,115,195,173,118, -105,100,97,99,97,115,111,111,116,114,111,102,111,114,111,115,111,108,111,111,116 -,114,97,99,117,97,108,100,105,106,111,115,105,100,111,103,114,97,110,116,105,112 -,111,116,101,109,97,100,101,98,101,97,108,103,111,113,117,195,169,101,115,116, -111,110,97,100,97,116,114,101,115,112,111,99,111,99,97,115,97,98,97,106,111,116, -111,100,97,115,105,110,111,97,103,117,97,112,117,101,115,117,110,111,115,97,110, -116,101,100,105,99,101,108,117,105,115,101,108,108,97,109,97,121,111,122,111,110 -,97,97,109,111,114,112,105,115,111,111,98,114,97,99,108,105,99,101,108,108,111, -100,105,111,115,104,111,114,97,99,97,115,105,208,183,208,176,208,189,208,176,208 -,190,208,188,209,128,208,176,209,128,209,131,209,130,208,176,208,189,208,181,208 -,191,208,190,208,190,209,130,208,184,208,183,208,189,208,190,208,180,208,190,209 -,130,208,190,208,182,208,181,208,190,208,189,208,184,209,133,208,157,208,176,208 -,181,208,181,208,177,209,139,208,188,209,139,208,146,209,139,209,129,208,190,208 -,178,209,139,208,178,208,190,208,157,208,190,208,190,208,177,208,159,208,190,208 -,187,208,184,208,189,208,184,208,160,208,164,208,157,208,181,208,156,209,139,209 -,130,209,139,208,158,208,189,208,184,208,188,208,180,208,176,208,151,208,176,208 -,148,208,176,208,157,209,131,208,158,208,177,209,130,208,181,208,152,208,183,208 -,181,208,185,208,189,209,131,208,188,208,188,208,162,209,139,209,131,208,182,217 -,129,217,138,216,163,217,134,217,133,216,167,217,133,216,185,217,131,217,132,216 -,163,217,136,216,177,216,175,217,138,216,167,217,129,217,137,217,135,217,136,217 -,132,217,133,217,132,217,131,216,167,217,136,217,132,217,135,216,168,216,179,216 -,167,217,132,216,165,217,134,217,135,217,138,216,163,217,138,217,130,216,175,217 -,135,217,132,216,171,217,133,216,168,217,135,217,132,217,136,217,132,217,138,216 -,168,217,132,216,167,217,138,216,168,217,131,216,180,217,138,216,167,217,133,216 -,163,217,133,217,134,216,170,216,168,217,138,217,132,217,134,216,173,216,168,217 -,135,217,133,217,133,216,180,217,136,216,180,102,105,114,115,116,118,105,100,101 -,111,108,105,103,104,116,119,111,114,108,100,109,101,100,105,97,119,104,105,116, -101,99,108,111,115,101,98,108,97,99,107,114,105,103,104,116,115,109,97,108,108, -98,111,111,107,115,112,108,97,99,101,109,117,115,105,99,102,105,101,108,100,111, -114,100,101,114,112,111,105,110,116,118,97,108,117,101,108,101,118,101,108,116, -97,98,108,101,98,111,97,114,100,104,111,117,115,101,103,114,111,117,112,119,111, -114,107,115,121,101,97,114,115,115,116,97,116,101,116,111,100,97,121,119,97,116, -101,114,115,116,97,114,116,115,116,121,108,101,100,101,97,116,104,112,111,119, -101,114,112,104,111,110,101,110,105,103,104,116,101,114,114,111,114,105,110,112, -117,116,97,98,111,117,116,116,101,114,109,115,116,105,116,108,101,116,111,111, -108,115,101,118,101,110,116,108,111,99,97,108,116,105,109,101,115,108,97,114,103 -,101,119,111,114,100,115,103,97,109,101,115,115,104,111,114,116,115,112,97,99, -101,102,111,99,117,115,99,108,101,97,114,109,111,100,101,108,98,108,111,99,107, -103,117,105,100,101,114,97,100,105,111,115,104,97,114,101,119,111,109,101,110,97 -,103,97,105,110,109,111,110,101,121,105,109,97,103,101,110,97,109,101,115,121, -111,117,110,103,108,105,110,101,115,108,97,116,101,114,99,111,108,111,114,103, -114,101,101,110,102,114,111,110,116,38,97,109,112,59,119,97,116,99,104,102,111, -114,99,101,112,114,105,99,101,114,117,108,101,115,98,101,103,105,110,97,102,116, -101,114,118,105,115,105,116,105,115,115,117,101,97,114,101,97,115,98,101,108,111 -,119,105,110,100,101,120,116,111,116,97,108,104,111,117,114,115,108,97,98,101, -108,112,114,105,110,116,112,114,101,115,115,98,117,105,108,116,108,105,110,107, -115,115,112,101,101,100,115,116,117,100,121,116,114,97,100,101,102,111,117,110, -100,115,101,110,115,101,117,110,100,101,114,115,104,111,119,110,102,111,114,109, -115,114,97,110,103,101,97,100,100,101,100,115,116,105,108,108,109,111,118,101, -100,116,97,107,101,110,97,98,111,118,101,102,108,97,115,104,102,105,120,101,100, -111,102,116,101,110,111,116,104,101,114,118,105,101,119,115,99,104,101,99,107, -108,101,103,97,108,114,105,118,101,114,105,116,101,109,115,113,117,105,99,107, -115,104,97,112,101,104,117,109,97,110,101,120,105,115,116,103,111,105,110,103, -109,111,118,105,101,116,104,105,114,100,98,97,115,105,99,112,101,97,99,101,115, -116,97,103,101,119,105,100,116,104,108,111,103,105,110,105,100,101,97,115,119, -114,111,116,101,112,97,103,101,115,117,115,101,114,115,100,114,105,118,101,115, -116,111,114,101,98,114,101,97,107,115,111,117,116,104,118,111,105,99,101,115,105 -,116,101,115,109,111,110,116,104,119,104,101,114,101,98,117,105,108,100,119,104, -105,99,104,101,97,114,116,104,102,111,114,117,109,116,104,114,101,101,115,112, -111,114,116,112,97,114,116,121,67,108,105,99,107,108,111,119,101,114,108,105,118 -,101,115,99,108,97,115,115,108,97,121,101,114,101,110,116,114,121,115,116,111, -114,121,117,115,97,103,101,115,111,117,110,100,99,111,117,114,116,121,111,117, -114,32,98,105,114,116,104,112,111,112,117,112,116,121,112,101,115,97,112,112,108 -,121,73,109,97,103,101,98,101,105,110,103,117,112,112,101,114,110,111,116,101, -115,101,118,101,114,121,115,104,111,119,115,109,101,97,110,115,101,120,116,114, -97,109,97,116,99,104,116,114,97,99,107,107,110,111,119,110,101,97,114,108,121,98 -,101,103,97,110,115,117,112,101,114,112,97,112,101,114,110,111,114,116,104,108, -101,97,114,110,103,105,118,101,110,110,97,109,101,100,101,110,100,101,100,84,101 -,114,109,115,112,97,114,116,115,71,114,111,117,112,98,114,97,110,100,117,115,105 -,110,103,119,111,109,97,110,102,97,108,115,101,114,101,97,100,121,97,117,100,105 -,111,116,97,107,101,115,119,104,105,108,101,46,99,111,109,47,108,105,118,101,100 -,99,97,115,101,115,100,97,105,108,121,99,104,105,108,100,103,114,101,97,116,106, -117,100,103,101,116,104,111,115,101,117,110,105,116,115,110,101,118,101,114,98, -114,111,97,100,99,111,97,115,116,99,111,118,101,114,97,112,112,108,101,102,105, -108,101,115,99,121,99,108,101,115,99,101,110,101,112,108,97,110,115,99,108,105, -99,107,119,114,105,116,101,113,117,101,101,110,112,105,101,99,101,101,109,97,105 -,108,102,114,97,109,101,111,108,100,101,114,112,104,111,116,111,108,105,109,105, -116,99,97,99,104,101,99,105,118,105,108,115,99,97,108,101,101,110,116,101,114, -116,104,101,109,101,116,104,101,114,101,116,111,117,99,104,98,111,117,110,100, -114,111,121,97,108,97,115,107,101,100,119,104,111,108,101,115,105,110,99,101,115 -,116,111,99,107,32,110,97,109,101,102,97,105,116,104,104,101,97,114,116,101,109, -112,116,121,111,102,102,101,114,115,99,111,112,101,111,119,110,101,100,109,105, -103,104,116,97,108,98,117,109,116,104,105,110,107,98,108,111,111,100,97,114,114, -97,121,109,97,106,111,114,116,114,117,115,116,99,97,110,111,110,117,110,105,111, -110,99,111,117,110,116,118,97,108,105,100,115,116,111,110,101,83,116,121,108,101 -,76,111,103,105,110,104,97,112,112,121,111,99,99,117,114,108,101,102,116,58,102, -114,101,115,104,113,117,105,116,101,102,105,108,109,115,103,114,97,100,101,110, -101,101,100,115,117,114,98,97,110,102,105,103,104,116,98,97,115,105,115,104,111, -118,101,114,97,117,116,111,59,114,111,117,116,101,46,104,116,109,108,109,105,120 -,101,100,102,105,110,97,108,89,111,117,114,32,115,108,105,100,101,116,111,112, -105,99,98,114,111,119,110,97,108,111,110,101,100,114,97,119,110,115,112,108,105, -116,114,101,97,99,104,82,105,103,104,116,100,97,116,101,115,109,97,114,99,104, -113,117,111,116,101,103,111,111,100,115,76,105,110,107,115,100,111,117,98,116,97 -,115,121,110,99,116,104,117,109,98,97,108,108,111,119,99,104,105,101,102,121,111 -,117,116,104,110,111,118,101,108,49,48,112,120,59,115,101,114,118,101,117,110, -116,105,108,104,97,110,100,115,67,104,101,99,107,83,112,97,99,101,113,117,101, -114,121,106,97,109,101,115,101,113,117,97,108,116,119,105,99,101,48,44,48,48,48, -83,116,97,114,116,112,97,110,101,108,115,111,110,103,115,114,111,117,110,100,101 -,105,103,104,116,115,104,105,102,116,119,111,114,116,104,112,111,115,116,115,108 -,101,97,100,115,119,101,101,107,115,97,118,111,105,100,116,104,101,115,101,109, -105,108,101,115,112,108,97,110,101,115,109,97,114,116,97,108,112,104,97,112,108, -97,110,116,109,97,114,107,115,114,97,116,101,115,112,108,97,121,115,99,108,97, -105,109,115,97,108,101,115,116,101,120,116,115,115,116,97,114,115,119,114,111, -110,103,60,47,104,51,62,116,104,105,110,103,46,111,114,103,47,109,117,108,116, -105,104,101,97,114,100,80,111,119,101,114,115,116,97,110,100,116,111,107,101,110 -,115,111,108,105,100,40,116,104,105,115,98,114,105,110,103,115,104,105,112,115, -115,116,97,102,102,116,114,105,101,100,99,97,108,108,115,102,117,108,108,121,102 -,97,99,116,115,97,103,101,110,116,84,104,105,115,32,47,47,45,45,62,97,100,109, -105,110,101,103,121,112,116,69,118,101,110,116,49,53,112,120,59,69,109,97,105, -108,116,114,117,101,34,99,114,111,115,115,115,112,101,110,116,98,108,111,103,115 -,98,111,120,34,62,110,111,116,101,100,108,101,97,118,101,99,104,105,110,97,115, -105,122,101,115,103,117,101,115,116,60,47,104,52,62,114,111,98,111,116,104,101, -97,118,121,116,114,117,101,44,115,101,118,101,110,103,114,97,110,100,99,114,105, -109,101,115,105,103,110,115,97,119,97,114,101,100,97,110,99,101,112,104,97,115, -101,62,60,33,45,45,101,110,95,85,83,38,35,51,57,59,50,48,48,112,120,95,110,97, -109,101,108,97,116,105,110,101,110,106,111,121,97,106,97,120,46,97,116,105,111, -110,115,109,105,116,104,85,46,83,46,32,104,111,108,100,115,112,101,116,101,114, -105,110,100,105,97,110,97,118,34,62,99,104,97,105,110,115,99,111,114,101,99,111, -109,101,115,100,111,105,110,103,112,114,105,111,114,83,104,97,114,101,49,57,57, -48,115,114,111,109,97,110,108,105,115,116,115,106,97,112,97,110,102,97,108,108, -115,116,114,105,97,108,111,119,110,101,114,97,103,114,101,101,60,47,104,50,62,97 -,98,117,115,101,97,108,101,114,116,111,112,101,114,97,34,45,47,47,87,99,97,114, -100,115,104,105,108,108,115,116,101,97,109,115,80,104,111,116,111,116,114,117, -116,104,99,108,101,97,110,46,112,104,112,63,115,97,105,110,116,109,101,116,97, -108,108,111,117,105,115,109,101,97,110,116,112,114,111,111,102,98,114,105,101, -102,114,111,119,34,62,103,101,110,114,101,116,114,117,99,107,108,111,111,107,115 -,86,97,108,117,101,70,114,97,109,101,46,110,101,116,47,45,45,62,10,60,116,114, -121,32,123,10,118,97,114,32,109,97,107,101,115,99,111,115,116,115,112,108,97,105 -,110,97,100,117,108,116,113,117,101,115,116,116,114,97,105,110,108,97,98,111,114 -,104,101,108,112,115,99,97,117,115,101,109,97,103,105,99,109,111,116,111,114,116 -,104,101,105,114,50,53,48,112,120,108,101,97,115,116,115,116,101,112,115,67,111, -117,110,116,99,111,117,108,100,103,108,97,115,115,115,105,100,101,115,102,117, -110,100,115,104,111,116,101,108,97,119,97,114,100,109,111,117,116,104,109,111, -118,101,115,112,97,114,105,115,103,105,118,101,115,100,117,116,99,104,116,101, -120,97,115,102,114,117,105,116,110,117,108,108,44,124,124,91,93,59,116,111,112, -34,62,10,60,33,45,45,80,79,83,84,34,111,99,101,97,110,60,98,114,47,62,102,108, -111,111,114,115,112,101,97,107,100,101,112,116,104,32,115,105,122,101,98,97,110, -107,115,99,97,116,99,104,99,104,97,114,116,50,48,112,120,59,97,108,105,103,110, -100,101,97,108,115,119,111,117,108,100,53,48,112,120,59,117,114,108,61,34,112,97 -,114,107,115,109,111,117,115,101,77,111,115,116,32,46,46,46,60,47,97,109,111,110 -,103,98,114,97,105,110,98,111,100,121,32,110,111,110,101,59,98,97,115,101,100,99 -,97,114,114,121,100,114,97,102,116,114,101,102,101,114,112,97,103,101,95,104,111 -,109,101,46,109,101,116,101,114,100,101,108,97,121,100,114,101,97,109,112,114, -111,118,101,106,111,105,110,116,60,47,116,114,62,100,114,117,103,115,60,33,45,45 -,32,97,112,114,105,108,105,100,101,97,108,97,108,108,101,110,101,120,97,99,116, -102,111,114,116,104,99,111,100,101,115,108,111,103,105,99,86,105,101,119,32,115, -101,101,109,115,98,108,97,110,107,112,111,114,116,115,32,40,50,48,48,115,97,118, -101,100,95,108,105,110,107,103,111,97,108,115,103,114,97,110,116,103,114,101,101 -,107,104,111,109,101,115,114,105,110,103,115,114,97,116,101,100,51,48,112,120,59 -,119,104,111,115,101,112,97,114,115,101,40,41,59,34,32,66,108,111,99,107,108,105 -,110,117,120,106,111,110,101,115,112,105,120,101,108,39,41,59,34,62,41,59,105, -102,40,45,108,101,102,116,100,97,118,105,100,104,111,114,115,101,70,111,99,117, -115,114,97,105,115,101,98,111,120,101,115,84,114,97,99,107,101,109,101,110,116, -60,47,101,109,62,98,97,114,34,62,46,115,114,99,61,116,111,119,101,114,97,108,116 -,61,34,99,97,98,108,101,104,101,110,114,121,50,52,112,120,59,115,101,116,117,112 -,105,116,97,108,121,115,104,97,114,112,109,105,110,111,114,116,97,115,116,101, -119,97,110,116,115,116,104,105,115,46,114,101,115,101,116,119,104,101,101,108, -103,105,114,108,115,47,99,115,115,47,49,48,48,37,59,99,108,117,98,115,115,116, -117,102,102,98,105,98,108,101,118,111,116,101,115,32,49,48,48,48,107,111,114,101 -,97,125,41,59,13,10,98,97,110,100,115,113,117,101,117,101,61,32,123,125,59,56,48 -,112,120,59,99,107,105,110,103,123,13,10,9,9,97,104,101,97,100,99,108,111,99,107 -,105,114,105,115,104,108,105,107,101,32,114,97,116,105,111,115,116,97,116,115,70 -,111,114,109,34,121,97,104,111,111,41,91,48,93,59,65,98,111,117,116,102,105,110, -100,115,60,47,104,49,62,100,101,98,117,103,116,97,115,107,115,85,82,76,32,61,99, -101,108,108,115,125,41,40,41,59,49,50,112,120,59,112,114,105,109,101,116,101,108 -,108,115,116,117,114,110,115,48,120,54,48,48,46,106,112,103,34,115,112,97,105, -110,98,101,97,99,104,116,97,120,101,115,109,105,99,114,111,97,110,103,101,108,45 -,45,62,60,47,103,105,102,116,115,115,116,101,118,101,45,108,105,110,107,98,111, -100,121,46,125,41,59,10,9,109,111,117,110,116,32,40,49,57,57,70,65,81,60,47,114, -111,103,101,114,102,114,97,110,107,67,108,97,115,115,50,56,112,120,59,102,101, -101,100,115,60,104,49,62,60,115,99,111,116,116,116,101,115,116,115,50,50,112,120 -,59,100,114,105,110,107,41,32,124,124,32,108,101,119,105,115,115,104,97,108,108, -35,48,51,57,59,32,102,111,114,32,108,111,118,101,100,119,97,115,116,101,48,48, -112,120,59,106,97,58,227,130,115,105,109,111,110,60,102,111,110,116,114,101,112, -108,121,109,101,101,116,115,117,110,116,101,114,99,104,101,97,112,116,105,103, -104,116,66,114,97,110,100,41,32,33,61,32,100,114,101,115,115,99,108,105,112,115, -114,111,111,109,115,111,110,107,101,121,109,111,98,105,108,109,97,105,110,46,78, -97,109,101,32,112,108,97,116,101,102,117,110,110,121,116,114,101,101,115,99,111, -109,47,34,49,46,106,112,103,119,109,111,100,101,112,97,114,97,109,83,84,65,82,84 -,108,101,102,116,32,105,100,100,101,110,44,32,50,48,49,41,59,10,125,10,102,111, -114,109,46,118,105,114,117,115,99,104,97,105,114,116,114,97,110,115,119,111,114, -115,116,80,97,103,101,115,105,116,105,111,110,112,97,116,99,104,60,33,45,45,10, -111,45,99,97,99,102,105,114,109,115,116,111,117,114,115,44,48,48,48,32,97,115, -105,97,110,105,43,43,41,123,97,100,111,98,101,39,41,91,48,93,105,100,61,49,48,98 -,111,116,104,59,109,101,110,117,32,46,50,46,109,105,46,112,110,103,34,107,101, -118,105,110,99,111,97,99,104,67,104,105,108,100,98,114,117,99,101,50,46,106,112, -103,85,82,76,41,43,46,106,112,103,124,115,117,105,116,101,115,108,105,99,101,104 -,97,114,114,121,49,50,48,34,32,115,119,101,101,116,116,114,62,13,10,110,97,109, -101,61,100,105,101,103,111,112,97,103,101,32,115,119,105,115,115,45,45,62,10,10, -35,102,102,102,59,34,62,76,111,103,46,99,111,109,34,116,114,101,97,116,115,104, -101,101,116,41,32,38,38,32,49,52,112,120,59,115,108,101,101,112,110,116,101,110, -116,102,105,108,101,100,106,97,58,227,131,105,100,61,34,99,78,97,109,101,34,119, -111,114,115,101,115,104,111,116,115,45,98,111,120,45,100,101,108,116,97,10,38, -108,116,59,98,101,97,114,115,58,52,56,90,60,100,97,116,97,45,114,117,114,97,108, -60,47,97,62,32,115,112,101,110,100,98,97,107,101,114,115,104,111,112,115,61,32, -34,34,59,112,104,112,34,62,99,116,105,111,110,49,51,112,120,59,98,114,105,97,110 -,104,101,108,108,111,115,105,122,101,61,111,61,37,50,70,32,106,111,105,110,109, -97,121,98,101,60,105,109,103,32,105,109,103,34,62,44,32,102,106,115,105,109,103, -34,32,34,41,91,48,93,77,84,111,112,66,84,121,112,101,34,110,101,119,108,121,68, -97,110,115,107,99,122,101,99,104,116,114,97,105,108,107,110,111,119,115,60,47, -104,53,62,102,97,113,34,62,122,104,45,99,110,49,48,41,59,10,45,49,34,41,59,116, -121,112,101,61,98,108,117,101,115,116,114,117,108,121,100,97,118,105,115,46,106, -115,39,59,62,13,10,60,33,115,116,101,101,108,32,121,111,117,32,104,50,62,13,10, -102,111,114,109,32,106,101,115,117,115,49,48,48,37,32,109,101,110,117,46,13,10,9 -,13,10,119,97,108,101,115,114,105,115,107,115,117,109,101,110,116,100,100,105, -110,103,98,45,108,105,107,116,101,97,99,104,103,105,102,34,32,118,101,103,97,115 -,100,97,110,115,107,101,101,115,116,105,115,104,113,105,112,115,117,111,109,105, -115,111,98,114,101,100,101,115,100,101,101,110,116,114,101,116,111,100,111,115, -112,117,101,100,101,97,195,177,111,115,101,115,116,195,161,116,105,101,110,101, -104,97,115,116,97,111,116,114,111,115,112,97,114,116,101,100,111,110,100,101,110 -,117,101,118,111,104,97,99,101,114,102,111,114,109,97,109,105,115,109,111,109, -101,106,111,114,109,117,110,100,111,97,113,117,195,173,100,195,173,97,115,115, -195,179,108,111,97,121,117,100,97,102,101,99,104,97,116,111,100,97,115,116,97, -110,116,111,109,101,110,111,115,100,97,116,111,115,111,116,114,97,115,115,105, -116,105,111,109,117,99,104,111,97,104,111,114,97,108,117,103,97,114,109,97,121, -111,114,101,115,116,111,115,104,111,114,97,115,116,101,110,101,114,97,110,116, -101,115,102,111,116,111,115,101,115,116,97,115,112,97,195,173,115,110,117,101, -118,97,115,97,108,117,100,102,111,114,111,115,109,101,100,105,111,113,117,105, -101,110,109,101,115,101,115,112,111,100,101,114,99,104,105,108,101,115,101,114, -195,161,118,101,99,101,115,100,101,99,105,114,106,111,115,195,169,101,115,116,97 -,114,118,101,110,116,97,103,114,117,112,111,104,101,99,104,111,101,108,108,111, -115,116,101,110,103,111,97,109,105,103,111,99,111,115,97,115,110,105,118,101,108 -,103,101,110,116,101,109,105,115,109,97,97,105,114,101,115,106,117,108,105,111, -116,101,109,97,115,104,97,99,105,97,102,97,118,111,114,106,117,110,105,111,108, -105,98,114,101,112,117,110,116,111,98,117,101,110,111,97,117,116,111,114,97,98, -114,105,108,98,117,101,110,97,116,101,120,116,111,109,97,114,122,111,115,97,98, -101,114,108,105,115,116,97,108,117,101,103,111,99,195,179,109,111,101,110,101, -114,111,106,117,101,103,111,112,101,114,195,186,104,97,98,101,114,101,115,116, -111,121,110,117,110,99,97,109,117,106,101,114,118,97,108,111,114,102,117,101,114 -,97,108,105,98,114,111,103,117,115,116,97,105,103,117,97,108,118,111,116,111,115 -,99,97,115,111,115,103,117,195,173,97,112,117,101,100,111,115,111,109,111,115,97 -,118,105,115,111,117,115,116,101,100,100,101,98,101,110,110,111,99,104,101,98, -117,115,99,97,102,97,108,116,97,101,117,114,111,115,115,101,114,105,101,100,105, -99,104,111,99,117,114,115,111,99,108,97,118,101,99,97,115,97,115,108,101,195,179 -,110,112,108,97,122,111,108,97,114,103,111,111,98,114,97,115,118,105,115,116,97, -97,112,111,121,111,106,117,110,116,111,116,114,97,116,97,118,105,115,116,111,99, -114,101,97,114,99,97,109,112,111,104,101,109,111,115,99,105,110,99,111,99,97,114 -,103,111,112,105,115,111,115,111,114,100,101,110,104,97,99,101,110,195,161,114, -101,97,100,105,115,99,111,112,101,100,114,111,99,101,114,99,97,112,117,101,100, -97,112,97,112,101,108,109,101,110,111,114,195,186,116,105,108,99,108,97,114,111, -106,111,114,103,101,99,97,108,108,101,112,111,110,101,114,116,97,114,100,101,110 -,97,100,105,101,109,97,114,99,97,115,105,103,117,101,101,108,108,97,115,115,105, -103,108,111,99,111,99,104,101,109,111,116,111,115,109,97,100,114,101,99,108,97, -115,101,114,101,115,116,111,110,105,195,177,111,113,117,101,100,97,112,97,115,97 -,114,98,97,110,99,111,104,105,106,111,115,118,105,97,106,101,112,97,98,108,111, -195,169,115,116,101,118,105,101,110,101,114,101,105,110,111,100,101,106,97,114, -102,111,110,100,111,99,97,110,97,108,110,111,114,116,101,108,101,116,114,97,99, -97,117,115,97,116,111,109,97,114,109,97,110,111,115,108,117,110,101,115,97,117, -116,111,115,118,105,108,108,97,118,101,110,100,111,112,101,115,97,114,116,105, -112,111,115,116,101,110,103,97,109,97,114,99,111,108,108,101,118,97,112,97,100, -114,101,117,110,105,100,111,118,97,109,111,115,122,111,110,97,115,97,109,98,111, -115,98,97,110,100,97,109,97,114,105,97,97,98,117,115,111,109,117,99,104,97,115, -117,98,105,114,114,105,111,106,97,118,105,118,105,114,103,114,97,100,111,99,104, -105,99,97,97,108,108,195,173,106,111,118,101,110,100,105,99,104,97,101,115,116, -97,110,116,97,108,101,115,115,97,108,105,114,115,117,101,108,111,112,101,115,111 -,115,102,105,110,101,115,108,108,97,109,97,98,117,115,99,111,195,169,115,116,97, -108,108,101,103,97,110,101,103,114,111,112,108,97,122,97,104,117,109,111,114,112 -,97,103,97,114,106,117,110,116,97,100,111,98,108,101,105,115,108,97,115,98,111, -108,115,97,98,97,195,177,111,104,97,98,108,97,108,117,99,104,97,195,129,114,101, -97,100,105,99,101,110,106,117,103,97,114,110,111,116,97,115,118,97,108,108,101, -97,108,108,195,161,99,97,114,103,97,100,111,108,111,114,97,98,97,106,111,101,115 -,116,195,169,103,117,115,116,111,109,101,110,116,101,109,97,114,105,111,102,105, -114,109,97,99,111,115,116,111,102,105,99,104,97,112,108,97,116,97,104,111,103,97 -,114,97,114,116,101,115,108,101,121,101,115,97,113,117,101,108,109,117,115,101, -111,98,97,115,101,115,112,111,99,111,115,109,105,116,97,100,99,105,101,108,111, -99,104,105,99,111,109,105,101,100,111,103,97,110,97,114,115,97,110,116,111,101, -116,97,112,97,100,101,98,101,115,112,108,97,121,97,114,101,100,101,115,115,105, -101,116,101,99,111,114,116,101,99,111,114,101,97,100,117,100,97,115,100,101,115, -101,111,118,105,101,106,111,100,101,115,101,97,97,103,117,97,115,38,113,117,111, -116,59,100,111,109,97,105,110,99,111,109,109,111,110,115,116,97,116,117,115,101, -118,101,110,116,115,109,97,115,116,101,114,115,121,115,116,101,109,97,99,116,105 -,111,110,98,97,110,110,101,114,114,101,109,111,118,101,115,99,114,111,108,108, -117,112,100,97,116,101,103,108,111,98,97,108,109,101,100,105,117,109,102,105,108 -,116,101,114,110,117,109,98,101,114,99,104,97,110,103,101,114,101,115,117,108, -116,112,117,98,108,105,99,115,99,114,101,101,110,99,104,111,111,115,101,110,111, -114,109,97,108,116,114,97,118,101,108,105,115,115,117,101,115,115,111,117,114,99 -,101,116,97,114,103,101,116,115,112,114,105,110,103,109,111,100,117,108,101,109, -111,98,105,108,101,115,119,105,116,99,104,112,104,111,116,111,115,98,111,114,100 -,101,114,114,101,103,105,111,110,105,116,115,101,108,102,115,111,99,105,97,108, -97,99,116,105,118,101,99,111,108,117,109,110,114,101,99,111,114,100,102,111,108, -108,111,119,116,105,116,108,101,62,101,105,116,104,101,114,108,101,110,103,116, -104,102,97,109,105,108,121,102,114,105,101,110,100,108,97,121,111,117,116,97,117 -,116,104,111,114,99,114,101,97,116,101,114,101,118,105,101,119,115,117,109,109, -101,114,115,101,114,118,101,114,112,108,97,121,101,100,112,108,97,121,101,114, -101,120,112,97,110,100,112,111,108,105,99,121,102,111,114,109,97,116,100,111,117 -,98,108,101,112,111,105,110,116,115,115,101,114,105,101,115,112,101,114,115,111, -110,108,105,118,105,110,103,100,101,115,105,103,110,109,111,110,116,104,115,102, -111,114,99,101,115,117,110,105,113,117,101,119,101,105,103,104,116,112,101,111, -112,108,101,101,110,101,114,103,121,110,97,116,117,114,101,115,101,97,114,99,104 -,102,105,103,117,114,101,104,97,118,105,110,103,99,117,115,116,111,109,111,102, -102,115,101,116,108,101,116,116,101,114,119,105,110,100,111,119,115,117,98,109, -105,116,114,101,110,100,101,114,103,114,111,117,112,115,117,112,108,111,97,100, -104,101,97,108,116,104,109,101,116,104,111,100,118,105,100,101,111,115,115,99, -104,111,111,108,102,117,116,117,114,101,115,104,97,100,111,119,100,101,98,97,116 -,101,118,97,108,117,101,115,79,98,106,101,99,116,111,116,104,101,114,115,114,105 -,103,104,116,115,108,101,97,103,117,101,99,104,114,111,109,101,115,105,109,112, -108,101,110,111,116,105,99,101,115,104,97,114,101,100,101,110,100,105,110,103, -115,101,97,115,111,110,114,101,112,111,114,116,111,110,108,105,110,101,115,113, -117,97,114,101,98,117,116,116,111,110,105,109,97,103,101,115,101,110,97,98,108, -101,109,111,118,105,110,103,108,97,116,101,115,116,119,105,110,116,101,114,70, -114,97,110,99,101,112,101,114,105,111,100,115,116,114,111,110,103,114,101,112, -101,97,116,76,111,110,100,111,110,100,101,116,97,105,108,102,111,114,109,101,100 -,100,101,109,97,110,100,115,101,99,117,114,101,112,97,115,115,101,100,116,111, -103,103,108,101,112,108,97,99,101,115,100,101,118,105,99,101,115,116,97,116,105, -99,99,105,116,105,101,115,115,116,114,101,97,109,121,101,108,108,111,119,97,116, -116,97,99,107,115,116,114,101,101,116,102,108,105,103,104,116,104,105,100,100, -101,110,105,110,102,111,34,62,111,112,101,110,101,100,117,115,101,102,117,108, -118,97,108,108,101,121,99,97,117,115,101,115,108,101,97,100,101,114,115,101,99, -114,101,116,115,101,99,111,110,100,100,97,109,97,103,101,115,112,111,114,116,115 -,101,120,99,101,112,116,114,97,116,105,110,103,115,105,103,110,101,100,116,104, -105,110,103,115,101,102,102,101,99,116,102,105,101,108,100,115,115,116,97,116, -101,115,111,102,102,105,99,101,118,105,115,117,97,108,101,100,105,116,111,114, -118,111,108,117,109,101,82,101,112,111,114,116,109,117,115,101,117,109,109,111, -118,105,101,115,112,97,114,101,110,116,97,99,99,101,115,115,109,111,115,116,108, -121,109,111,116,104,101,114,34,32,105,100,61,34,109,97,114,107,101,116,103,114, -111,117,110,100,99,104,97,110,99,101,115,117,114,118,101,121,98,101,102,111,114, -101,115,121,109,98,111,108,109,111,109,101,110,116,115,112,101,101,99,104,109, -111,116,105,111,110,105,110,115,105,100,101,109,97,116,116,101,114,67,101,110, -116,101,114,111,98,106,101,99,116,101,120,105,115,116,115,109,105,100,100,108, -101,69,117,114,111,112,101,103,114,111,119,116,104,108,101,103,97,99,121,109,97, -110,110,101,114,101,110,111,117,103,104,99,97,114,101,101,114,97,110,115,119,101 -,114,111,114,105,103,105,110,112,111,114,116,97,108,99,108,105,101,110,116,115, -101,108,101,99,116,114,97,110,100,111,109,99,108,111,115,101,100,116,111,112,105 -,99,115,99,111,109,105,110,103,102,97,116,104,101,114,111,112,116,105,111,110, -115,105,109,112,108,121,114,97,105,115,101,100,101,115,99,97,112,101,99,104,111, -115,101,110,99,104,117,114,99,104,100,101,102,105,110,101,114,101,97,115,111,110 -,99,111,114,110,101,114,111,117,116,112,117,116,109,101,109,111,114,121,105,102, -114,97,109,101,112,111,108,105,99,101,109,111,100,101,108,115,78,117,109,98,101, -114,100,117,114,105,110,103,111,102,102,101,114,115,115,116,121,108,101,115,107, -105,108,108,101,100,108,105,115,116,101,100,99,97,108,108,101,100,115,105,108, -118,101,114,109,97,114,103,105,110,100,101,108,101,116,101,98,101,116,116,101, -114,98,114,111,119,115,101,108,105,109,105,116,115,71,108,111,98,97,108,115,105, -110,103,108,101,119,105,100,103,101,116,99,101,110,116,101,114,98,117,100,103, -101,116,110,111,119,114,97,112,99,114,101,100,105,116,99,108,97,105,109,115,101, -110,103,105,110,101,115,97,102,101,116,121,99,104,111,105,99,101,115,112,105,114 -,105,116,45,115,116,121,108,101,115,112,114,101,97,100,109,97,107,105,110,103, -110,101,101,100,101,100,114,117,115,115,105,97,112,108,101,97,115,101,101,120, -116,101,110,116,83,99,114,105,112,116,98,114,111,107,101,110,97,108,108,111,119, -115,99,104,97,114,103,101,100,105,118,105,100,101,102,97,99,116,111,114,109,101, -109,98,101,114,45,98,97,115,101,100,116,104,101,111,114,121,99,111,110,102,105, -103,97,114,111,117,110,100,119,111,114,107,101,100,104,101,108,112,101,100,67, -104,117,114,99,104,105,109,112,97,99,116,115,104,111,117,108,100,97,108,119,97, -121,115,108,111,103,111,34,32,98,111,116,116,111,109,108,105,115,116,34,62,41, -123,118,97,114,32,112,114,101,102,105,120,111,114,97,110,103,101,72,101,97,100, -101,114,46,112,117,115,104,40,99,111,117,112,108,101,103,97,114,100,101,110,98, -114,105,100,103,101,108,97,117,110,99,104,82,101,118,105,101,119,116,97,107,105, -110,103,118,105,115,105,111,110,108,105,116,116,108,101,100,97,116,105,110,103, -66,117,116,116,111,110,98,101,97,117,116,121,116,104,101,109,101,115,102,111,114 -,103,111,116,83,101,97,114,99,104,97,110,99,104,111,114,97,108,109,111,115,116, -108,111,97,100,101,100,67,104,97,110,103,101,114,101,116,117,114,110,115,116,114 -,105,110,103,114,101,108,111,97,100,77,111,98,105,108,101,105,110,99,111,109,101 -,115,117,112,112,108,121,83,111,117,114,99,101,111,114,100,101,114,115,118,105, -101,119,101,100,38,110,98,115,112,59,99,111,117,114,115,101,65,98,111,117,116,32 -,105,115,108,97,110,100,60,104,116,109,108,32,99,111,111,107,105,101,110,97,109, -101,61,34,97,109,97,122,111,110,109,111,100,101,114,110,97,100,118,105,99,101, -105,110,60,47,97,62,58,32,84,104,101,32,100,105,97,108,111,103,104,111,117,115, -101,115,66,69,71,73,78,32,77,101,120,105,99,111,115,116,97,114,116,115,99,101, -110,116,114,101,104,101,105,103,104,116,97,100,100,105,110,103,73,115,108,97,110 -,100,97,115,115,101,116,115,69,109,112,105,114,101,83,99,104,111,111,108,101,102 -,102,111,114,116,100,105,114,101,99,116,110,101,97,114,108,121,109,97,110,117,97 -,108,83,101,108,101,99,116,46,10,10,79,110,101,106,111,105,110,101,100,109,101, -110,117,34,62,80,104,105,108,105,112,97,119,97,114,100,115,104,97,110,100,108, -101,105,109,112,111,114,116,79,102,102,105,99,101,114,101,103,97,114,100,115,107 -,105,108,108,115,110,97,116,105,111,110,83,112,111,114,116,115,100,101,103,114, -101,101,119,101,101,107,108,121,32,40,101,46,103,46,98,101,104,105,110,100,100, -111,99,116,111,114,108,111,103,103,101,100,117,110,105,116,101,100,60,47,98,62, -60,47,98,101,103,105,110,115,112,108,97,110,116,115,97,115,115,105,115,116,97, -114,116,105,115,116,105,115,115,117,101,100,51,48,48,112,120,124,99,97,110,97, -100,97,97,103,101,110,99,121,115,99,104,101,109,101,114,101,109,97,105,110,66, -114,97,122,105,108,115,97,109,112,108,101,108,111,103,111,34,62,98,101,121,111, -110,100,45,115,99,97,108,101,97,99,99,101,112,116,115,101,114,118,101,100,109,97 -,114,105,110,101,70,111,111,116,101,114,99,97,109,101,114,97,60,47,104,49,62,10, -95,102,111,114,109,34,108,101,97,118,101,115,115,116,114,101,115,115,34,32,47,62 -,13,10,46,103,105,102,34,32,111,110,108,111,97,100,108,111,97,100,101,114,79,120 -,102,111,114,100,115,105,115,116,101,114,115,117,114,118,105,118,108,105,115,116 -,101,110,102,101,109,97,108,101,68,101,115,105,103,110,115,105,122,101,61,34,97, -112,112,101,97,108,116,101,120,116,34,62,108,101,118,101,108,115,116,104,97,110, -107,115,104,105,103,104,101,114,102,111,114,99,101,100,97,110,105,109,97,108,97, -110,121,111,110,101,65,102,114,105,99,97,97,103,114,101,101,100,114,101,99,101, -110,116,80,101,111,112,108,101,60,98,114,32,47,62,119,111,110,100,101,114,112, -114,105,99,101,115,116,117,114,110,101,100,124,124,32,123,125,59,109,97,105,110, -34,62,105,110,108,105,110,101,115,117,110,100,97,121,119,114,97,112,34,62,102,97 -,105,108,101,100,99,101,110,115,117,115,109,105,110,117,116,101,98,101,97,99,111 -,110,113,117,111,116,101,115,49,53,48,112,120,124,101,115,116,97,116,101,114,101 -,109,111,116,101,101,109,97,105,108,34,108,105,110,107,101,100,114,105,103,104, -116,59,115,105,103,110,97,108,102,111,114,109,97,108,49,46,104,116,109,108,115, -105,103,110,117,112,112,114,105,110,99,101,102,108,111,97,116,58,46,112,110,103, -34,32,102,111,114,117,109,46,65,99,99,101,115,115,112,97,112,101,114,115,115,111 -,117,110,100,115,101,120,116,101,110,100,72,101,105,103,104,116,115,108,105,100, -101,114,85,84,70,45,56,34,38,97,109,112,59,32,66,101,102,111,114,101,46,32,87, -105,116,104,115,116,117,100,105,111,111,119,110,101,114,115,109,97,110,97,103, -101,112,114,111,102,105,116,106,81,117,101,114,121,97,110,110,117,97,108,112,97, -114,97,109,115,98,111,117,103,104,116,102,97,109,111,117,115,103,111,111,103,108 -,101,108,111,110,103,101,114,105,43,43,41,32,123,105,115,114,97,101,108,115,97, -121,105,110,103,100,101,99,105,100,101,104,111,109,101,34,62,104,101,97,100,101, -114,101,110,115,117,114,101,98,114,97,110,99,104,112,105,101,99,101,115,98,108, -111,99,107,59,115,116,97,116,101,100,116,111,112,34,62,60,114,97,99,105,110,103, -114,101,115,105,122,101,45,45,38,103,116,59,112,97,99,105,116,121,115,101,120, -117,97,108,98,117,114,101,97,117,46,106,112,103,34,32,49,48,44,48,48,48,111,98, -116,97,105,110,116,105,116,108,101,115,97,109,111,117,110,116,44,32,73,110,99,46 -,99,111,109,101,100,121,109,101,110,117,34,32,108,121,114,105,99,115,116,111,100 -,97,121,46,105,110,100,101,101,100,99,111,117,110,116,121,95,108,111,103,111,46, -70,97,109,105,108,121,108,111,111,107,101,100,77,97,114,107,101,116,108,115,101, -32,105,102,80,108,97,121,101,114,116,117,114,107,101,121,41,59,118,97,114,32,102 -,111,114,101,115,116,103,105,118,105,110,103,101,114,114,111,114,115,68,111,109, -97,105,110,125,101,108,115,101,123,105,110,115,101,114,116,66,108,111,103,60,47, -102,111,111,116,101,114,108,111,103,105,110,46,102,97,115,116,101,114,97,103,101 -,110,116,115,60,98,111,100,121,32,49,48,112,120,32,48,112,114,97,103,109,97,102, -114,105,100,97,121,106,117,110,105,111,114,100,111,108,108,97,114,112,108,97,99, -101,100,99,111,118,101,114,115,112,108,117,103,105,110,53,44,48,48,48,32,112,97, -103,101,34,62,98,111,115,116,111,110,46,116,101,115,116,40,97,118,97,116,97,114, -116,101,115,116,101,100,95,99,111,117,110,116,102,111,114,117,109,115,115,99,104 -,101,109,97,105,110,100,101,120,44,102,105,108,108,101,100,115,104,97,114,101, -115,114,101,97,100,101,114,97,108,101,114,116,40,97,112,112,101,97,114,83,117,98 -,109,105,116,108,105,110,101,34,62,98,111,100,121,34,62,10,42,32,84,104,101,84, -104,111,117,103,104,115,101,101,105,110,103,106,101,114,115,101,121,78,101,119, -115,60,47,118,101,114,105,102,121,101,120,112,101,114,116,105,110,106,117,114, -121,119,105,100,116,104,61,67,111,111,107,105,101,83,84,65,82,84,32,97,99,114, -111,115,115,95,105,109,97,103,101,116,104,114,101,97,100,110,97,116,105,118,101, -112,111,99,107,101,116,98,111,120,34,62,10,83,121,115,116,101,109,32,68,97,118, -105,100,99,97,110,99,101,114,116,97,98,108,101,115,112,114,111,118,101,100,65, -112,114,105,108,32,114,101,97,108,108,121,100,114,105,118,101,114,105,116,101, -109,34,62,109,111,114,101,34,62,98,111,97,114,100,115,99,111,108,111,114,115,99, -97,109,112,117,115,102,105,114,115,116,32,124,124,32,91,93,59,109,101,100,105,97 -,46,103,117,105,116,97,114,102,105,110,105,115,104,119,105,100,116,104,58,115, -104,111,119,101,100,79,116,104,101,114,32,46,112,104,112,34,32,97,115,115,117, -109,101,108,97,121,101,114,115,119,105,108,115,111,110,115,116,111,114,101,115, -114,101,108,105,101,102,115,119,101,100,101,110,67,117,115,116,111,109,101,97, -115,105,108,121,32,121,111,117,114,32,83,116,114,105,110,103,10,10,87,104,105, -108,116,97,121,108,111,114,99,108,101,97,114,58,114,101,115,111,114,116,102,114, -101,110,99,104,116,104,111,117,103,104,34,41,32,43,32,34,60,98,111,100,121,62,98 -,117,121,105,110,103,98,114,97,110,100,115,77,101,109,98,101,114,110,97,109,101, -34,62,111,112,112,105,110,103,115,101,99,116,111,114,53,112,120,59,34,62,118,115 -,112,97,99,101,112,111,115,116,101,114,109,97,106,111,114,32,99,111,102,102,101, -101,109,97,114,116,105,110,109,97,116,117,114,101,104,97,112,112,101,110,60,47, -110,97,118,62,107,97,110,115,97,115,108,105,110,107,34,62,73,109,97,103,101,115, -61,102,97,108,115,101,119,104,105,108,101,32,104,115,112,97,99,101,48,38,97,109, -112,59,32,10,10,73,110,32,32,112,111,119,101,114,80,111,108,115,107,105,45,99, -111,108,111,114,106,111,114,100,97,110,66,111,116,116,111,109,83,116,97,114,116, -32,45,99,111,117,110,116,50,46,104,116,109,108,110,101,119,115,34,62,48,49,46, -106,112,103,79,110,108,105,110,101,45,114,105,103,104,116,109,105,108,108,101, -114,115,101,110,105,111,114,73,83,66,78,32,48,48,44,48,48,48,32,103,117,105,100, -101,115,118,97,108,117,101,41,101,99,116,105,111,110,114,101,112,97,105,114,46, -120,109,108,34,32,32,114,105,103,104,116,115,46,104,116,109,108,45,98,108,111,99 -,107,114,101,103,69,120,112,58,104,111,118,101,114,119,105,116,104,105,110,118, -105,114,103,105,110,112,104,111,110,101,115,60,47,116,114,62,13,117,115,105,110, -103,32,10,9,118,97,114,32,62,39,41,59,10,9,60,47,116,100,62,10,60,47,116,114,62, -10,98,97,104,97,115,97,98,114,97,115,105,108,103,97,108,101,103,111,109,97,103, -121,97,114,112,111,108,115,107,105,115,114,112,115,107,105,216,177,216,175,217, -136,228,184,173,230,150,135,231,174,128,228,189,147,231,185,129,233,171,148,228, -191,161,230,129,175,228,184,173,229,155,189,230,136,145,228,187,172,228,184,128, -228,184,170,229,133,172,229,143,184,231,174,161,231,144,134,232,174,186,229,157, -155,229,143,175,228,187,165,230,156,141,229,138,161,230,151,182,233,151,180,228, -184,170,228,186,186,228,186,167,229,147,129,232,135,170,229,183,177,228,188,129, -228,184,154,230,159,165,231,156,139,229,183,165,228,189,156,232,129,148,231,179, -187,230,178,161,230,156,137,231,189,145,231,171,153,230,137,128,230,156,137,232, -175,132,232,174,186,228,184,173,229,191,131,230,150,135,231,171,160,231,148,168, -230,136,183,233,166,150,233,161,181,228,189,156,232,128,133,230,138,128,230,156, -175,233,151,174,233,162,152,231,155,184,229,133,179,228,184,139,232,189,189,230, -144,156,231,180,162,228,189,191,231,148,168,232,189,175,228,187,182,229,156,168, -231,186,191,228,184,187,233,162,152,232,181,132,230,150,153,232,167,134,233,162, -145,229,155,158,229,164,141,230,179,168,229,134,140,231,189,145,231,187,156,230, -148,182,232,151,143,229,134,133,229,174,185,230,142,168,232,141,144,229,184,130, -229,156,186,230,182,136,230,129,175,231,169,186,233,151,180,229,143,145,229,184, -131,228,187,128,228,185,136,229,165,189,229,143,139,231,148,159,230,180,187,229, -155,190,231,137,135,229,143,145,229,177,149,229,166,130,230,158,156,230,137,139, -230,156,186,230,150,176,233,151,187,230,156,128,230,150,176,230,150,185,229,188, -143,229,140,151,228,186,172,230,143,144,228,190,155,229,133,179,228,186,142,230, -155,180,229,164,154,232,191,153,228,184,170,231,179,187,231,187,159,231,159,165, -233,129,147,230,184,184,230,136,143,229,185,191,229,145,138,229,133,182,228,187, -150,229,143,145,232,161,168,229,174,137,229,133,168,231,172,172,228,184,128,228, -188,154,229,145,152,232,191,155,232,161,140,231,130,185,229,135,187,231,137,136, -230,157,131,231,148,181,229,173,144,228,184,150,231,149,140,232,174,190,232,174, -161,229,133,141,232,180,185,230,149,153,232,130,178,229,138,160,229,133,165,230, -180,187,229,138,168,228,187,150,228,187,172,229,149,134,229,147,129,229,141,154, -229,174,162,231,142,176,229,156,168,228,184,138,230,181,183,229,166,130,228,189, -149,229,183,178,231,187,143,231,149,153,232,168,128,232,175,166,231,187,134,231, -164,190,229,140,186,231,153,187,229,189,149,230,156,172,231,171,153,233,156,128, -232,166,129,228,187,183,230,160,188,230,148,175,230,140,129,229,155,189,233,153, -133,233,147,190,230,142,165,229,155,189,229,174,182,229,187,186,232,174,190,230, -156,139,229,143,139,233,152,133,232,175,187,230,179,149,229,190,139,228,189,141, -231,189,174,231,187,143,230,181,142,233,128,137,230,139,169,232,191,153,230,160, -183,229,189,147,229,137,141,229,136,134,231,177,187,230,142,146,232,161,140,229, -155,160,228,184,186,228,186,164,230,152,147,230,156,128,229,144,142,233,159,179, -228,185,144,228,184,141,232,131,189,233,128,154,232,191,135,232,161,140,228,184, -154,231,167,145,230,138,128,229,143,175,232,131,189,232,174,190,229,164,135,229, -144,136,228,189,156,229,164,167,229,174,182,231,164,190,228,188,154,231,160,148, -231,169,182,228,184,147,228,184,154,229,133,168,233,131,168,233,161,185,231,155, -174,232,191,153,233,135,140,232,191,152,230,152,175,229,188,128,229,167,139,230, -131,133,229,134,181,231,148,181,232,132,145,230,150,135,228,187,182,229,147,129, -231,137,140,229,184,174,229,138,169,230,150,135,229,140,150,232,181,132,230,186, -144,229,164,167,229,173,166,229,173,166,228,185,160,229,156,176,229,157,128,230, -181,143,232,167,136,230,138,149,232,181,132,229,183,165,231,168,139,232,166,129, -230,177,130,230,128,142,228,185,136,230,151,182,229,128,153,229,138,159,232,131, -189,228,184,187,232,166,129,231,155,174,229,137,141,232,181,132,232,174,175,229, -159,142,229,184,130,230,150,185,230,179,149,231,148,181,229,189,177,230,139,155, -232,129,152,229,163,176,230,152,142,228,187,187,228,189,149,229,129,165,229,186, -183,230,149,176,230,141,174,231,190,142,229,155,189,230,177,189,232,189,166,228, -187,139,231,187,141,228,189,134,230,152,175,228,186,164,230,181,129,231,148,159, -228,186,167,230,137,128,228,187,165,231,148,181,232,175,157,230,152,190,231,164, -186,228,184,128,228,186,155,229,141,149,228,189,141,228,186,186,229,145,152,229, -136,134,230,158,144,229,156,176,229,155,190,230,151,133,230,184,184,229,183,165, -229,133,183,229,173,166,231,148,159,231,179,187,229,136,151,231,189,145,229,143, -139,229,184,150,229,173,144,229,175,134,231,160,129,233,162,145,233,129,147,230, -142,167,229,136,182,229,156,176,229,140,186,229,159,186,230,156,172,229,133,168, -229,155,189,231,189,145,228,184,138,233,135,141,232,166,129,231,172,172,228,186, -140,229,150,156,230,172,162,232,191,155,229,133,165,229,143,139,230,131,133,232, -191,153,228,186,155,232,128,131,232,175,149,229,143,145,231,142,176,229,159,185, -232,174,173,228,187,165,228,184,138,230,148,191,229,186,156,230,136,144,228,184, -186,231,142,175,229,162,131,233,166,153,230,184,175,229,144,140,230,151,182,229, -168,177,228,185,144,229,143,145,233,128,129,228,184,128,229,174,154,229,188,128, -229,143,145,228,189,156,229,147,129,230,160,135,229,135,134,230,172,162,232,191, -142,232,167,163,229,134,179,229,156,176,230,150,185,228,184,128,228,184,139,228, -187,165,229,143,138,232,180,163,228,187,187,230,136,150,232,128,133,229,174,162, -230,136,183,228,187,163,232,161,168,231,167,175,229,136,134,229,165,179,228,186, -186,230,149,176,231,160,129,233,148,128,229,148,174,229,135,186,231,142,176,231, -166,187,231,186,191,229,186,148,231,148,168,229,136,151,232,161,168,228,184,141, -229,144,140,231,188,150,232,190,145,231,187,159,232,174,161,230,159,165,232,175, -162,228,184,141,232,166,129,230,156,137,229,133,179,230,156,186,230,158,132,229, -190,136,229,164,154,230,146,173,230,148,190,231,187,132,231,187,135,230,148,191, -231,173,150,231,155,180,230,142,165,232,131,189,229,138,155,230,157,165,230,186, -144,230,153,130,233,150,147,231,156,139,229,136,176,231,131,173,233,151,168,229, -133,179,233,148,174,228,184,147,229,140,186,233,157,158,229,184,184,232,139,177, -232,175,173,231,153,190,229,186,166,229,184,140,230,156,155,231,190,142,229,165, -179,230,175,148,232,190,131,231,159,165,232,175,134,232,167,132,229,174,154,229, -187,186,232,174,174,233,131,168,233,151,168,230,132,143,232,167,129,231,178,190, -229,189,169,230,151,165,230,156,172,230,143,144,233,171,152,229,143,145,232,168, -128,230,150,185,233,157,162,229,159,186,233,135,145,229,164,132,231,144,134,230, -157,131,233,153,144,229,189,177,231,137,135,233,147,182,232,161,140,232,191,152, -230,156,137,229,136,134,228,186,171,231,137,169,229,147,129,231,187,143,232,144, -165,230,183,187,229,138,160,228,184,147,229,174,182,232,191,153,231,167,141,232, -175,157,233,162,152,232,181,183,230,157,165,228,184,154,229,138,161,229,133,172, -229,145,138,232,174,176,229,189,149,231,174,128,228,187,139,232,180,168,233,135, -143,231,148,183,228,186,186,229,189,177,229,147,141,229,188,149,231,148,168,230, -138,165,229,145,138,233,131,168,229,136,134,229,191,171,233,128,159,229,146,168, -232,175,162,230,151,182,229,176,154,230,179,168,230,132,143,231,148,179,232,175, -183,229,173,166,230,160,161,229,186,148,232,175,165,229,142,134,229,143,178,229, -143,170,230,152,175,232,191,148,229,155,158,232,180,173,228,185,176,229,144,141, -231,167,176,228,184,186,228,186,134,230,136,144,229,138,159,232,175,180,230,152, -142,228,190,155,229,186,148,229,173,169,229,173,144,228,184,147,233,162,152,231, -168,139,229,186,143,228,184,128,232,136,172,230,156,131,229,147,161,229,143,170, -230,156,137,229,133,182,229,174,131,228,191,157,230,138,164,232,128,140,228,184, -148,228,187,138,229,164,169,231,170,151,229,143,163,229,138,168,230,128,129,231, -138,182,230,128,129,231,137,185,229,136,171,232,174,164,228,184,186,229,191,133, -233,161,187,230,155,180,230,150,176,229,176,143,232,175,180,230,136,145,229,128, -145,228,189,156,228,184,186,229,170,146,228,189,147,229,140,133,230,139,172,233, -130,163,228,185,136,228,184,128,230,160,183,229,155,189,229,134,133,230,152,175, -229,144,166,230,160,185,230,141,174,231,148,181,232,167,134,229,173,166,233,153, -162,229,133,183,230,156,137,232,191,135,231,168,139,231,148,177,228,186,142,228, -186,186,230,137,141,229,135,186,230,157,165,228,184,141,232,191,135,230,173,163, -229,156,168,230,152,142,230,152,159,230,149,133,228,186,139,229,133,179,231,179, -187,230,160,135,233,162,152,229,149,134,229,138,161,232,190,147,229,133,165,228, -184,128,231,155,180,229,159,186,231,161,128,230,149,153,229,173,166,228,186,134, -232,167,163,229,187,186,231,173,145,231,187,147,230,158,156,229,133,168,231,144, -131,233,128,154,231,159,165,232,174,161,229,136,146,229,175,185,228,186,142,232, -137,186,230,156,175,231,155,184,229,134,140,229,143,145,231,148,159,231,156,159, -231,154,132,229,187,186,231,171,139,231,173,137,231,186,167,231,177,187,229,158, -139,231,187,143,233,170,140,229,174,158,231,142,176,229,136,182,228,189,156,230, -157,165,232,135,170,230,160,135,231,173,190,228,187,165,228,184,139,229,142,159, -229,136,155,230,151,160,230,179,149,229,133,182,228,184,173,229,128,139,228,186, -186,228,184,128,229,136,135,230,140,135,229,141,151,229,133,179,233,151,173,233, -155,134,229,155,162,231,172,172,228,184,137,229,133,179,230,179,168,229,155,160, -230,173,164,231,133,167,231,137,135,230,183,177,229,156,179,229,149,134,228,184, -154,229,185,191,229,183,158,230,151,165,230,156,159,233,171,152,231,186,167,230, -156,128,232,191,145,231,187,188,229,144,136,232,161,168,231,164,186,228,184,147, -232,190,145,232,161,140,228,184,186,228,186,164,233,128,154,232,175,132,228,187, -183,232,167,137,229,190,151,231,178,190,229,141,142,229,174,182,229,186,173,229, -174,140,230,136,144,230,132,159,232,167,137,229,174,137,232,163,133,229,190,151, -229,136,176,233,130,174,228,187,182,229,136,182,229,186,166,233,163,159,229,147, -129,232,153,189,231,132,182,232,189,172,232,189,189,230,138,165,228,187,183,232, -174,176,232,128,133,230,150,185,230,161,136,232,161,140,230,148,191,228,186,186, -230,176,145,231,148,168,229,147,129,228,184,156,232,165,191,230,143,144,229,135, -186,233,133,146,229,186,151,231,132,182,229,144,142,228,187,152,230,172,190,231, -131,173,231,130,185,228,187,165,229,137,141,229,174,140,229,133,168,229,143,145, -229,184,150,232,174,190,231,189,174,233,162,134,229,175,188,229,183,165,228,184, -154,229,140,187,233,153,162,231,156,139,231,156,139,231,187,143,229,133,184,229, -142,159,229,155,160,229,185,179,229,143,176,229,144,132,231,167,141,229,162,158, -229,138,160,230,157,144,230,150,153,230,150,176,229,162,158,228,185,139,229,144, -142,232,129,140,228,184,154,230,149,136,230,158,156,228,187,138,229,185,180,232, -174,186,230,150,135,230,136,145,229,155,189,229,145,138,232,175,137,231,137,136, -228,184,187,228,191,174,230,148,185,229,143,130,228,184,142,230,137,147,229,141, -176,229,191,171,228,185,144,230,156,186,230,162,176,232,167,130,231,130,185,229, -173,152,229,156,168,231,178,190,231,165,158,232,142,183,229,190,151,229,136,169, -231,148,168,231,187,167,231,187,173,228,189,160,228,187,172,232,191,153,228,185, -136,230,168,161,229,188,143,232,175,173,232,168,128,232,131,189,229,164,159,233, -155,133,232,153,142,230,147,141,228,189,156,233,163,142,230,160,188,228,184,128, -232,181,183,231,167,145,229,173,166,228,189,147,232,130,178,231,159,173,228,191, -161,230,157,161,228,187,182,230,178,187,231,150,151,232,191,144,229,138,168,228, -186,167,228,184,154,228,188,154,232,174,174,229,175,188,232,136,170,229,133,136, -231,148,159,232,129,148,231,155,159,229,143,175,230,152,175,229,149,143,233,161, -140,231,187,147,230,158,132,228,189,156,231,148,168,232,176,131,230,159,165,232, -179,135,230,150,153,232,135,170,229,138,168,232,180,159,232,180,163,229,134,156, -228,184,154,232,174,191,233,151,174,229,174,158,230,150,189,230,142,165,229,143, -151,232,174,168,232,174,186,233,130,163,228,184,170,229,143,141,233,166,136,229, -138,160,229,188,186,229,165,179,230,128,167,232,140,131,229,155,180,230,156,141, -229,139,153,228,188,145,233,151,178,228,187,138,230,151,165,229,174,162,230,156, -141,232,167,128,231,156,139,229,143,130,229,138,160,231,154,132,232,175,157,228, -184,128,231,130,185,228,191,157,232,175,129,229,155,190,228,185,166,230,156,137, -230,149,136,230,181,139,232,175,149,231,167,187,229,138,168,230,137,141,232,131, -189,229,134,179,229,174,154,232,130,161,231,165,168,228,184,141,230,150,173,233, -156,128,230,177,130,228,184,141,229,190,151,229,138,158,230,179,149,228,185,139, -233,151,180,233,135,135,231,148,168,232,144,165,233,148,128,230,138,149,232,175, -137,231,155,174,230,160,135,231,136,177,230,131,133,230,145,132,229,189,177,230, -156,137,228,186,155,232,164,135,232,163,189,230,150,135,229,173,166,230,156,186, -228,188,154,230,149,176,229,173,151,232,163,133,228,191,174,232,180,173,231,137, -169,229,134,156,230,157,145,229,133,168,233,157,162,231,178,190,229,147,129,229, -133,182,229,174,158,228,186,139,230,131,133,230,176,180,229,185,179,230,143,144, -231,164,186,228,184,138,229,184,130,232,176,162,232,176,162,230,153,174,233,128, -154,230,149,153,229,184,136,228,184,138,228,188,160,231,177,187,229,136,171,230, -173,140,230,155,178,230,139,165,230,156,137,229,136,155,230,150,176,233,133,141, -228,187,182,229,143,170,232,166,129,230,151,182,228,187,163,232,179,135,232,168, -138,232,190,190,229,136,176,228,186,186,231,148,159,232,174,162,233,152,133,232, -128,129,229,184,136,229,177,149,231,164,186,229,191,131,231,144,134,232,180,180, -229,173,144,231,182,178,231,171,153,228,184,187,233,161,140,232,135,170,231,132, -182,231,186,167,229,136,171,231,174,128,229,141,149,230,148,185,233,157,169,233, -130,163,228,186,155,230,157,165,232,175,180,230,137,147,229,188,128,228,187,163, -231,160,129,229,136,160,233,153,164,232,175,129,229,136,184,232,138,130,231,155, -174,233,135,141,231,130,185,230,172,161,230,149,184,229,164,154,229,176,145,232, -167,132,229,136,146,232,181,132,233,135,145,230,137,190,229,136,176,228,187,165, -229,144,142,229,164,167,229,133,168,228,184,187,233,161,181,230,156,128,228,189, -179,229,155,158,231,173,148,229,164,169,228,184,139,228,191,157,233,154,156,231, -142,176,228,187,163,230,163,128,230,159,165,230,138,149,231,165,168,229,176,143, -230,151,182,230,178,146,230,156,137,230,173,163,229,184,184,231,148,154,232,135, -179,228,187,163,231,144,134,231,155,174,229,189,149,229,133,172,229,188,128,229, -164,141,229,136,182,233,135,145,232,158,141,229,185,184,231,166,143,231,137,136, -230,156,172,229,189,162,230,136,144,229,135,134,229,164,135,232,161,140,230,131, -133,229,155,158,229,136,176,230,128,157,230,131,179,230,128,142,230,160,183,229, -141,143,232,174,174,232,174,164,232,175,129,230,156,128,229,165,189,228,186,167, -231,148,159,230,140,137,231,133,167,230,156,141,232,163,133,229,185,191,228,184, -156,229,138,168,230,188,171,233,135,135,232,180,173,230,150,176,230,137,139,231, -187,132,229,155,190,233,157,162,230,157,191,229,143,130,232,128,131,230,148,191, -230,178,187,229,174,185,230,152,147,229,164,169,229,156,176,229,138,170,229,138, -155,228,186,186,228,187,172,229,141,135,231,186,167,233,128,159,229,186,166,228, -186,186,231,137,169,232,176,131,230,149,180,230,181,129,232,161,140,233,128,160, -230,136,144,230,150,135,229,173,151,233,159,169,229,155,189,232,180,184,230,152, -147,229,188,128,229,177,149,231,155,184,233,151,156,232,161,168,231,142,176,229, -189,177,232,167,134,229,166,130,230,173,164,231,190,142,229,174,185,229,164,167, -229,176,143,230,138,165,233,129,147,230,157,161,230,172,190,229,191,131,230,131, -133,232,174,184,229,164,154,230,179,149,232,167,132,229,174,182,229,177,133,228, -185,166,229,186,151,232,191,158,230,142,165,231,171,139,229,141,179,228,184,190, -230,138,165,230,138,128,229,183,167,229,165,165,232,191,144,231,153,187,229,133, -165,228,187,165,230,157,165,231,144,134,232,174,186,228,186,139,228,187,182,232, -135,170,231,148,177,228,184,173,229,141,142,229,138,158,229,133,172,229,166,136, -229,166,136,231,156,159,230,173,163,228,184,141,233,148,153,229,133,168,230,150, -135,229,144,136,229,144,140,228,187,183,229,128,188,229,136,171,228,186,186,231, -155,145,231,157,163,229,133,183,228,189,147,228,184,150,231,186,170,229,155,162, -233,152,159,229,136,155,228,184,154,230,137,191,230,139,133,229,162,158,233,149, -191,230,156,137,228,186,186,228,191,157,230,140,129,229,149,134,229,174,182,231, -187,180,228,191,174,229,143,176,230,185,190,229,183,166,229,143,179,232,130,161, -228,187,189,231,173,148,230,161,136,229,174,158,233,153,133,231,148,181,228,191, -161,231,187,143,231,144,134,231,148,159,229,145,189,229,174,163,228,188,160,228, -187,187,229,138,161,230,173,163,229,188,143,231,137,185,232,137,178,228,184,139, -230,157,165,229,141,143,228,188,154,229,143,170,232,131,189,229,189,147,231,132, -182,233,135,141,230,150,176,229,133,167,229,174,185,230,140,135,229,175,188,232, -191,144,232,161,140,230,151,165,229,191,151,232,179,163,229,174,182,232,182,133, -232,191,135,229,156,159,229,156,176,230,181,153,230,177,159,230,148,175,228,187, -152,230,142,168,229,135,186,231,171,153,233,149,191,230,157,173,229,183,158,230, -137,167,232,161,140,229,136,182,233,128,160,228,185,139,228,184,128,230,142,168, -229,185,191,231,142,176,229,156,186,230,143,143,232,191,176,229,143,152,229,140, -150,228,188,160,231,187,159,230,173,140,230,137,139,228,191,157,233,153,169,232, -175,190,231,168,139,229,140,187,231,150,151,231,187,143,232,191,135,232,191,135, -229,142,187,228,185,139,229,137,141,230,148,182,229,133,165,229,185,180,229,186, -166,230,157,130,229,191,151,231,190,142,228,184,189,230,156,128,233,171,152,231, -153,187,233,153,134,230,156,170,230,157,165,229,138,160,229,183,165,229,133,141, -232,180,163,230,149,153,231,168,139,231,137,136,229,157,151,232,186,171,228,189, -147,233,135,141,229,186,134,229,135,186,229,148,174,230,136,144,230,156,172,229, -189,162,229,188,143,229,156,159,232,177,134,229,135,186,229,131,185,228,184,156, -230,150,185,233,130,174,231,174,177,229,141,151,228,186,172,230,177,130,232,129, -140,229,143,150,229,190,151,232,129,140,228,189,141,231,155,184,228,191,161,233, -161,181,233,157,162,229,136,134,233,146,159,231,189,145,233,161,181,231,161,174, -229,174,154,229,155,190,228,190,139,231,189,145,229,157,128,231,167,175,230,158, -129,233,148,153,232,175,175,231,155,174,231,154,132,229,174,157,232,180,157,230, -156,186,229,133,179,233,163,142,233,153,169,230,142,136,230,157,131,231,151,133, -230,175,146,229,174,160,231,137,169,233,153,164,228,186,134,232,169,149,232,171, -150,231,150,190,231,151,133,229,143,138,230,151,182,230,177,130,232,180,173,231, -171,153,231,130,185,229,132,191,231,171,165,230,175,143,229,164,169,228,184,173, -229,164,174,232,174,164,232,175,134,230,175,143,228,184,170,229,164,169,230,180, -165,229,173,151,228,189,147,229,143,176,231,129,163,231,187,180,230,138,164,230, -156,172,233,161,181,228,184,170,230,128,167,229,174,152,230,150,185,229,184,184, -232,167,129,231,155,184,230,156,186,230,136,152,231,149,165,229,186,148,229,189, -147,229,190,139,229,184,136,230,150,185,228,190,191,230,160,161,229,155,173,232, -130,161,229,184,130,230,136,191,229,177,139,230,160,143,231,155,174,229,145,152, -229,183,165,229,175,188,232,135,180,231,170,129,231,132,182,233,129,147,229,133, -183,230,156,172,231,189,145,231,187,147,229,144,136,230,161,163,230,161,136,229, -138,179,229,138,168,229,143,166,229,164,150,231,190,142,229,133,131,229,188,149, -232,181,183,230,148,185,229,143,152,231,172,172,229,155,155,228,188,154,232,174, -161,232,170,170,230,152,142,233,154,144,231,167,129,229,174,157,229,174,157,232, -167,132,232,140,131,230,182,136,232,180,185,229,133,177,229,144,140,229,191,152, -232,174,176,228,189,147,231,179,187,229,184,166,230,157,165,229,144,141,229,173, -151,231,153,188,232,161,168,229,188,128,230,148,190,229,138,160,231,155,159,229, -143,151,229,136,176,228,186,140,230,137,139,229,164,167,233,135,143,230,136,144, -228,186,186,230,149,176,233,135,143,229,133,177,228,186,171,229,140,186,229,159, -159,229,165,179,229,173,169,229,142,159,229,136,153,230,137,128,229,156,168,231, -187,147,230,157,159,233,128,154,228,191,161,232,182,133,231,186,167,233,133,141, -231,189,174,229,189,147,230,151,182,228,188,152,231,167,128,230,128,167,230,132, -159,230,136,191,228,186,167,233,129,138,230,136,178,229,135,186,229,143,163,230, -143,144,228,186,164,229,176,177,228,184,154,228,191,157,229,129,165,231,168,139, -229,186,166,229,143,130,230,149,176,228,186,139,228,184,154,230,149,180,228,184, -170,229,177,177,228,184,156,230,131,133,230,132,159,231,137,185,230,174,138,229, -136,134,233,161,158,230,144,156,229,176,139,229,177,158,228,186,142,233,151,168, -230,136,183,232,180,162,229,138,161,229,163,176,233,159,179,229,143,138,229,133, -182,232,180,162,231,187,143,229,157,154,230,140,129,229,185,178,233,131,168,230, -136,144,231,171,139,229,136,169,231,155,138,232,128,131,232,153,145,230,136,144, -233,131,189,229,140,133,232,163,133,231,148,168,230,136,182,230,175,148,232,181, -155,230,150,135,230,152,142,230,139,155,229,149,134,229,174,140,230,149,180,231, -156,159,230,152,175,231,156,188,231,157,155,228,188,153,228,188,180,229,168,129, -230,156,155,233,162,134,229,159,159,229,141,171,231,148,159,228,188,152,230,131, -160,232,171,150,229,163,135,229,133,172,229,133,177,232,137,175,229,165,189,229, -133,133,229,136,134,231,172,166,229,144,136,233,153,132,228,187,182,231,137,185, -231,130,185,228,184,141,229,143,175,232,139,177,230,150,135,232,181,132,228,186, -167,230,160,185,230,156,172,230,152,142,230,152,190,229,175,134,231,162,188,229, -133,172,228,188,151,230,176,145,230,151,143,230,155,180,229,138,160,228,186,171, -229,143,151,229,144,140,229,173,166,229,144,175,229,138,168,233,128,130,229,144, -136,229,142,159,230,157,165,233,151,174,231,173,148,230,156,172,230,150,135,231, -190,142,233,163,159,231,187,191,232,137,178,231,168,179,229,174,154,231,187,136, -228,186,142,231,148,159,231,137,169,228,190,155,230,177,130,230,144,156,231,139, -144,229,138,155,233,135,143,228,184,165,233,135,141,230,176,184,232,191,156,229, -134,153,231,156,159,230,156,137,233,153,144,231,171,158,228,186,137,229,175,185, -232,177,161,232,180,185,231,148,168,228,184,141,229,165,189,231,187,157,229,175, -185,229,141,129,229,136,134,228,191,131,232,191,155,231,130,185,232,175,132,229, -189,177,233,159,179,228,188,152,229,138,191,228,184,141,229,176,145,230,172,163, -232,181,143,229,185,182,228,184,148,230,156,137,231,130,185,230,150,185,229,144, -145,229,133,168,230,150,176,228,191,161,231,148,168,232,174,190,230,150,189,229, -189,162,232,177,161,232,181,132,230,160,188,231,170,129,231,160,180,233,154,143, -231,157,128,233,135,141,229,164,167,228,186,142,230,152,175,230,175,149,228,184, -154,230,153,186,232,131,189,229,140,150,229,183,165,229,174,140,231,190,142,229, -149,134,229,159,142,231,187,159,228,184,128,229,135,186,231,137,136,230,137,147, -233,128,160,231,148,162,229,147,129,230,166,130,229,134,181,231,148,168,228,186, -142,228,191,157,231,149,153,229,155,160,231,180,160,228,184,173,229,156,139,229, -173,152,229,130,168,232,180,180,229,155,190,230,156,128,230,132,155,233,149,191, -230,156,159,229,143,163,228,187,183,231,144,134,232,180,162,229,159,186,229,156, -176,229,174,137,230,142,146,230,173,166,230,177,137,233,135,140,233,157,162,229, -136,155,229,187,186,229,164,169,231,169,186,233,166,150,229,133,136,229,174,140, -229,150,132,233,169,177,229,138,168,228,184,139,233,157,162,228,184,141,229,134, -141,232,175,154,228,191,161,230,132,143,228,185,137,233,152,179,229,133,137,232, -139,177,229,155,189,230,188,130,228,186,174,229,134,155,228,186,139,231,142,169, -229,174,182,231,190,164,228,188,151,229,134,156,230,176,145,229,141,179,229,143, -175,229,144,141,231,168,177,229,174,182,229,133,183,229,138,168,231,148,187,230, -131,179,229,136,176,230,179,168,230,152,142,229,176,143,229,173,166,230,128,167, -232,131,189,232,128,131,231,160,148,231,161,172,228,187,182,232,167,130,231,156, -139,230,184,133,230,165,154,230,144,158,231,172,145,233,166,150,233,160,129,233, -187,132,233,135,145,233,128,130,231,148,168,230,177,159,232,139,143,231,156,159, -229,174,158,228,184,187,231,174,161,233,152,182,230,174,181,232,168,187,229,134, -138,231,191,187,232,175,145,230,157,131,229,136,169,229,129,154,229,165,189,228, -188,188,228,185,142,233,128,154,232,174,175,230,150,189,229,183,165,231,139,128, -230,133,139,228,185,159,232,174,184,231,142,175,228,191,157,229,159,185,229,133, -187,230,166,130,229,191,181,229,164,167,229,158,139,230,156,186,231,165,168,231, -144,134,232,167,163,229,140,191,229,144,141,99,117,97,110,100,111,101,110,118, -105,97,114,109,97,100,114,105,100,98,117,115,99,97,114,105,110,105,99,105,111, -116,105,101,109,112,111,112,111,114,113,117,101,99,117,101,110,116,97,101,115, -116,97,100,111,112,117,101,100,101,110,106,117,101,103,111,115,99,111,110,116, -114,97,101,115,116,195,161,110,110,111,109,98,114,101,116,105,101,110,101,110, -112,101,114,102,105,108,109,97,110,101,114,97,97,109,105,103,111,115,99,105,117, -100,97,100,99,101,110,116,114,111,97,117,110,113,117,101,112,117,101,100,101,115 -,100,101,110,116,114,111,112,114,105,109,101,114,112,114,101,99,105,111,115,101, -103,195,186,110,98,117,101,110,111,115,118,111,108,118,101,114,112,117,110,116, -111,115,115,101,109,97,110,97,104,97,98,195,173,97,97,103,111,115,116,111,110, -117,101,118,111,115,117,110,105,100,111,115,99,97,114,108,111,115,101,113,117, -105,112,111,110,105,195,177,111,115,109,117,99,104,111,115,97,108,103,117,110,97 -,99,111,114,114,101,111,105,109,97,103,101,110,112,97,114,116,105,114,97,114,114 -,105,98,97,109,97,114,195,173,97,104,111,109,98,114,101,101,109,112,108,101,111, -118,101,114,100,97,100,99,97,109,98,105,111,109,117,99,104,97,115,102,117,101, -114,111,110,112,97,115,97,100,111,108,195,173,110,101,97,112,97,114,101,99,101, -110,117,101,118,97,115,99,117,114,115,111,115,101,115,116,97,98,97,113,117,105, -101,114,111,108,105,98,114,111,115,99,117,97,110,116,111,97,99,99,101,115,111, -109,105,103,117,101,108,118,97,114,105,111,115,99,117,97,116,114,111,116,105,101 -,110,101,115,103,114,117,112,111,115,115,101,114,195,161,110,101,117,114,111,112 -,97,109,101,100,105,111,115,102,114,101,110,116,101,97,99,101,114,99,97,100,101, -109,195,161,115,111,102,101,114,116,97,99,111,99,104,101,115,109,111,100,101,108 -,111,105,116,97,108,105,97,108,101,116,114,97,115,97,108,103,195,186,110,99,111, -109,112,114,97,99,117,97,108,101,115,101,120,105,115,116,101,99,117,101,114,112, -111,115,105,101,110,100,111,112,114,101,110,115,97,108,108,101,103,97,114,118, -105,97,106,101,115,100,105,110,101,114,111,109,117,114,99,105,97,112,111,100,114 -,195,161,112,117,101,115,116,111,100,105,97,114,105,111,112,117,101,98,108,111, -113,117,105,101,114,101,109,97,110,117,101,108,112,114,111,112,105,111,99,114, -105,115,105,115,99,105,101,114,116,111,115,101,103,117,114,111,109,117,101,114, -116,101,102,117,101,110,116,101,99,101,114,114,97,114,103,114,97,110,100,101,101 -,102,101,99,116,111,112,97,114,116,101,115,109,101,100,105,100,97,112,114,111, -112,105,97,111,102,114,101,99,101,116,105,101,114,114,97,101,45,109,97,105,108, -118,97,114,105,97,115,102,111,114,109,97,115,102,117,116,117,114,111,111,98,106, -101,116,111,115,101,103,117,105,114,114,105,101,115,103,111,110,111,114,109,97, -115,109,105,115,109,111,115,195,186,110,105,99,111,99,97,109,105,110,111,115,105 -,116,105,111,115,114,97,122,195,179,110,100,101,98,105,100,111,112,114,117,101, -98,97,116,111,108,101,100,111,116,101,110,195,173,97,106,101,115,195,186,115,101 -,115,112,101,114,111,99,111,99,105,110,97,111,114,105,103,101,110,116,105,101, -110,100,97,99,105,101,110,116,111,99,195,161,100,105,122,104,97,98,108,97,114, -115,101,114,195,173,97,108,97,116,105,110,97,102,117,101,114,122,97,101,115,116, -105,108,111,103,117,101,114,114,97,101,110,116,114,97,114,195,169,120,105,116, -111,108,195,179,112,101,122,97,103,101,110,100,97,118,195,173,100,101,111,101, -118,105,116,97,114,112,97,103,105,110,97,109,101,116,114,111,115,106,97,118,105, -101,114,112,97,100,114,101,115,102,195,161,99,105,108,99,97,98,101,122,97,195, -161,114,101,97,115,115,97,108,105,100,97,101,110,118,195,173,111,106,97,112,195, -179,110,97,98,117,115,111,115,98,105,101,110,101,115,116,101,120,116,111,115,108 -,108,101,118,97,114,112,117,101,100,97,110,102,117,101,114,116,101,99,111,109, -195,186,110,99,108,97,115,101,115,104,117,109,97,110,111,116,101,110,105,100,111 -,98,105,108,98,97,111,117,110,105,100,97,100,101,115,116,195,161,115,101,100,105 -,116,97,114,99,114,101,97,100,111,208,180,208,187,209,143,209,135,209,130,208, -190,208,186,208,176,208,186,208,184,208,187,208,184,209,141,209,130,208,190,208, -178,209,129,208,181,208,181,208,179,208,190,208,191,209,128,208,184,209,130,208, -176,208,186,208,181,209,137,208,181,209,131,208,182,208,181,208,154,208,176,208, -186,208,177,208,181,208,183,208,177,209,139,208,187,208,190,208,189,208,184,208, -146,209,129,208,181,208,191,208,190,208,180,208,173,209,130,208,190,209,130,208, -190,208,188,209,135,208,181,208,188,208,189,208,181,209,130,208,187,208,181,209, -130,209,128,208,176,208,183,208,190,208,189,208,176,208,179,208,180,208,181,208, -188,208,189,208,181,208,148,208,187,209,143,208,159,209,128,208,184,208,189,208, -176,209,129,208,189,208,184,209,133,209,130,208,181,208,188,208,186,209,130,208, -190,208,179,208,190,208,180,208,178,208,190,209,130,209,130,208,176,208,188,208, -161,208,168,208,144,208,188,208,176,209,143,208,167,209,130,208,190,208,178,208, -176,209,129,208,178,208,176,208,188,208,181,208,188,209,131,208,162,208,176,208, -186,208,180,208,178,208,176,208,189,208,176,208,188,209,141,209,130,208,184,209, -141,209,130,209,131,208,146,208,176,208,188,209,130,208,181,209,133,208,191,209, -128,208,190,209,130,209,131,209,130,208,189,208,176,208,180,208,180,208,189,209, -143,208,146,208,190,209,130,209,130,209,128,208,184,208,189,208,181,208,185,208, -146,208,176,209,129,208,189,208,184,208,188,209,129,208,176,208,188,209,130,208, -190,209,130,209,128,209,131,208,177,208,158,208,189,208,184,208,188,208,184,209, -128,208,189,208,181,208,181,208,158,208,158,208,158,208,187,208,184,209,134,209, -141,209,130,208,176,208,158,208,189,208,176,208,189,208,181,208,188,208,180,208, -190,208,188,208,188,208,190,208,185,208,180,208,178,208,181,208,190,208,189,208, -190,209,129,209,131,208,180,224,164,149,224,165,135,224,164,185,224,165,136,224, -164,149,224,165,128,224,164,184,224,165,135,224,164,149,224,164,190,224,164,149, -224,165,139,224,164,148,224,164,176,224,164,170,224,164,176,224,164,168,224,165, -135,224,164,143,224,164,149,224,164,149,224,164,191,224,164,173,224,165,128,224, -164,135,224,164,184,224,164,149,224,164,176,224,164,164,224,165,139,224,164,185, -224,165,139,224,164,134,224,164,170,224,164,185,224,165,128,224,164,175,224,164, -185,224,164,175,224,164,190,224,164,164,224,164,149,224,164,165,224,164,190,106, -97,103,114,97,110,224,164,134,224,164,156,224,164,156,224,165,139,224,164,133, -224,164,172,224,164,166,224,165,139,224,164,151,224,164,136,224,164,156,224,164, -190,224,164,151,224,164,143,224,164,185,224,164,174,224,164,135,224,164,168,224, -164,181,224,164,185,224,164,175,224,165,135,224,164,165,224,165,135,224,164,165, -224,165,128,224,164,152,224,164,176,224,164,156,224,164,172,224,164,166,224,165, -128,224,164,149,224,164,136,224,164,156,224,165,128,224,164,181,224,165,135,224, -164,168,224,164,136,224,164,168,224,164,143,224,164,185,224,164,176,224,164,137, -224,164,184,224,164,174,224,165,135,224,164,149,224,164,174,224,164,181,224,165, -139,224,164,178,224,165,135,224,164,184,224,164,172,224,164,174,224,164,136,224, -164,166,224,165,135,224,164,147,224,164,176,224,164,134,224,164,174,224,164,172, -224,164,184,224,164,173,224,164,176,224,164,172,224,164,168,224,164,154,224,164, -178,224,164,174,224,164,168,224,164,134,224,164,151,224,164,184,224,165,128,224, -164,178,224,165,128,216,185,217,132,217,137,216,165,217,132,217,137,217,135,216, -176,216,167,216,162,216,174,216,177,216,185,216,175,216,175,216,167,217,132,217, -137,217,135,216,176,217,135,216,181,217,136,216,177,216,186,217,138,216,177,217, -131,216,167,217,134,217,136,217,132,216,167,216,168,217,138,217,134,216,185,216, -177,216,182,216,176,217,132,217,131,217,135,217,134,216,167,217,138,217,136,217, -133,217,130,216,167,217,132,216,185,217,132,217,138,216,167,217,134,216,167,217, -132,217,131,217,134,216,173,216,170,217,137,217,130,216,168,217,132,217,136,216, -173,216,169,216,167,216,174,216,177,217,129,217,130,216,183,216,185,216,168,216, -175,216,177,217,131,217,134,216,165,216,176,216,167,217,131,217,133,216,167,216, -167,216,173,216,175,216,165,217,132,216,167,217,129,217,138,217,135,216,168,216, -185,216,182,217,131,217,138,217,129,216,168,216,173,216,171,217,136,217,133,217, -134,217,136,217,135,217,136,216,163,217,134,216,167,216,172,216,175,216,167,217, -132,217,135,216,167,216,179,217,132,217,133,216,185,217,134,216,175,217,132,217, -138,216,179,216,185,216,168,216,177,216,181,217,132,217,137,217,133,217,134,216, -176,216,168,217,135,216,167,216,163,217,134,217,135,217,133,216,171,217,132,217, -131,217,134,216,170,216,167,217,132,216,167,216,173,217,138,216,171,217,133,216, -181,216,177,216,180,216,177,216,173,216,173,217,136,217,132,217,136,217,129,217, -138,216,167,216,176,216,167,217,132,217,131,217,132,217,133,216,177,216,169,216, -167,217,134,216,170,216,167,217,132,217,129,216,163,216,168,217,136,216,174,216, -167,216,181,216,163,217,134,216,170,216,167,217,134,217,135,216,167,217,132,217, -138,216,185,216,182,217,136,217,136,217,130,216,175,216,167,216,168,217,134,216, -174,217,138,216,177,216,168,217,134,216,170,217,132,217,131,217,133,216,180,216, -167,216,161,217,136,217,135,217,138,216,167,216,168,217,136,217,130,216,181,216, -181,217,136,217,133,216,167,216,177,217,130,217,133,216,163,216,173,216,175,217, -134,216,173,217,134,216,185,216,175,217,133,216,177,216,163,217,138,216,167,216, -173,216,169,217,131,216,170,216,168,216,175,217,136,217,134,217,138,216,172,216, -168,217,133,217,134,217,135,216,170,216,173,216,170,216,172,217,135,216,169,216, -179,217,134,216,169,217,138,216,170,217,133,217,131,216,177,216,169,216,186,216, -178,216,169,217,134,217,129,216,179,216,168,217,138,216,170,217,132,217,132,217, -135,217,132,217,134,216,167,216,170,217,132,217,131,217,130,217,132,216,168,217, -132,217,133,216,167,216,185,217,134,217,135,216,163,217,136,217,132,216,180,217, -138,216,161,217,134,217,136,216,177,216,163,217,133,216,167,217,129,217,138,217, -131,216,168,217,131,217,132,216,176,216,167,216,170,216,177,216,170,216,168,216, -168,216,163,217,134,217,135,217,133,216,179,216,167,217,134,217,131,216,168,217, -138,216,185,217,129,217,130,216,175,216,173,216,179,217,134,217,132,217,135,217, -133,216,180,216,185,216,177,216,163,217,135,217,132,216,180,217,135,216,177,217, -130,216,183,216,177,216,183,217,132,216,168,112,114,111,102,105,108,101,115,101, -114,118,105,99,101,100,101,102,97,117,108,116,104,105,109,115,101,108,102,100, -101,116,97,105,108,115,99,111,110,116,101,110,116,115,117,112,112,111,114,116, -115,116,97,114,116,101,100,109,101,115,115,97,103,101,115,117,99,99,101,115,115, -102,97,115,104,105,111,110,60,116,105,116,108,101,62,99,111,117,110,116,114,121, -97,99,99,111,117,110,116,99,114,101,97,116,101,100,115,116,111,114,105,101,115, -114,101,115,117,108,116,115,114,117,110,110,105,110,103,112,114,111,99,101,115, -115,119,114,105,116,105,110,103,111,98,106,101,99,116,115,118,105,115,105,98,108 -,101,119,101,108,99,111,109,101,97,114,116,105,99,108,101,117,110,107,110,111, -119,110,110,101,116,119,111,114,107,99,111,109,112,97,110,121,100,121,110,97,109 -,105,99,98,114,111,119,115,101,114,112,114,105,118,97,99,121,112,114,111,98,108, -101,109,83,101,114,118,105,99,101,114,101,115,112,101,99,116,100,105,115,112,108 -,97,121,114,101,113,117,101,115,116,114,101,115,101,114,118,101,119,101,98,115, -105,116,101,104,105,115,116,111,114,121,102,114,105,101,110,100,115,111,112,116, -105,111,110,115,119,111,114,107,105,110,103,118,101,114,115,105,111,110,109,105, -108,108,105,111,110,99,104,97,110,110,101,108,119,105,110,100,111,119,46,97,100, -100,114,101,115,115,118,105,115,105,116,101,100,119,101,97,116,104,101,114,99, -111,114,114,101,99,116,112,114,111,100,117,99,116,101,100,105,114,101,99,116,102 -,111,114,119,97,114,100,121,111,117,32,99,97,110,114,101,109,111,118,101,100,115 -,117,98,106,101,99,116,99,111,110,116,114,111,108,97,114,99,104,105,118,101,99, -117,114,114,101,110,116,114,101,97,100,105,110,103,108,105,98,114,97,114,121,108 -,105,109,105,116,101,100,109,97,110,97,103,101,114,102,117,114,116,104,101,114, -115,117,109,109,97,114,121,109,97,99,104,105,110,101,109,105,110,117,116,101,115 -,112,114,105,118,97,116,101,99,111,110,116,101,120,116,112,114,111,103,114,97, -109,115,111,99,105,101,116,121,110,117,109,98,101,114,115,119,114,105,116,116, -101,110,101,110,97,98,108,101,100,116,114,105,103,103,101,114,115,111,117,114,99 -,101,115,108,111,97,100,105,110,103,101,108,101,109,101,110,116,112,97,114,116, -110,101,114,102,105,110,97,108,108,121,112,101,114,102,101,99,116,109,101,97,110 -,105,110,103,115,121,115,116,101,109,115,107,101,101,112,105,110,103,99,117,108, -116,117,114,101,38,113,117,111,116,59,44,106,111,117,114,110,97,108,112,114,111, -106,101,99,116,115,117,114,102,97,99,101,115,38,113,117,111,116,59,101,120,112, -105,114,101,115,114,101,118,105,101,119,115,98,97,108,97,110,99,101,69,110,103, -108,105,115,104,67,111,110,116,101,110,116,116,104,114,111,117,103,104,80,108, -101,97,115,101,32,111,112,105,110,105,111,110,99,111,110,116,97,99,116,97,118, -101,114,97,103,101,112,114,105,109,97,114,121,118,105,108,108,97,103,101,83,112, -97,110,105,115,104,103,97,108,108,101,114,121,100,101,99,108,105,110,101,109,101 -,101,116,105,110,103,109,105,115,115,105,111,110,112,111,112,117,108,97,114,113, -117,97,108,105,116,121,109,101,97,115,117,114,101,103,101,110,101,114,97,108,115 -,112,101,99,105,101,115,115,101,115,115,105,111,110,115,101,99,116,105,111,110, -119,114,105,116,101,114,115,99,111,117,110,116,101,114,105,110,105,116,105,97, -108,114,101,112,111,114,116,115,102,105,103,117,114,101,115,109,101,109,98,101, -114,115,104,111,108,100,105,110,103,100,105,115,112,117,116,101,101,97,114,108, -105,101,114,101,120,112,114,101,115,115,100,105,103,105,116,97,108,112,105,99, -116,117,114,101,65,110,111,116,104,101,114,109,97,114,114,105,101,100,116,114,97 -,102,102,105,99,108,101,97,100,105,110,103,99,104,97,110,103,101,100,99,101,110, -116,114,97,108,118,105,99,116,111,114,121,105,109,97,103,101,115,47,114,101,97, -115,111,110,115,115,116,117,100,105,101,115,102,101,97,116,117,114,101,108,105, -115,116,105,110,103,109,117,115,116,32,98,101,115,99,104,111,111,108,115,86,101, -114,115,105,111,110,117,115,117,97,108,108,121,101,112,105,115,111,100,101,112, -108,97,121,105,110,103,103,114,111,119,105,110,103,111,98,118,105,111,117,115, -111,118,101,114,108,97,121,112,114,101,115,101,110,116,97,99,116,105,111,110,115 -,60,47,117,108,62,13,10,119,114,97,112,112,101,114,97,108,114,101,97,100,121,99, -101,114,116,97,105,110,114,101,97,108,105,116,121,115,116,111,114,97,103,101,97, -110,111,116,104,101,114,100,101,115,107,116,111,112,111,102,102,101,114,101,100, -112,97,116,116,101,114,110,117,110,117,115,117,97,108,68,105,103,105,116,97,108, -99,97,112,105,116,97,108,87,101,98,115,105,116,101,102,97,105,108,117,114,101,99 -,111,110,110,101,99,116,114,101,100,117,99,101,100,65,110,100,114,111,105,100, -100,101,99,97,100,101,115,114,101,103,117,108,97,114,32,38,97,109,112,59,32,97, -110,105,109,97,108,115,114,101,108,101,97,115,101,65,117,116,111,109,97,116,103, -101,116,116,105,110,103,109,101,116,104,111,100,115,110,111,116,104,105,110,103, -80,111,112,117,108,97,114,99,97,112,116,105,111,110,108,101,116,116,101,114,115, -99,97,112,116,117,114,101,115,99,105,101,110,99,101,108,105,99,101,110,115,101, -99,104,97,110,103,101,115,69,110,103,108,97,110,100,61,49,38,97,109,112,59,72, -105,115,116,111,114,121,32,61,32,110,101,119,32,67,101,110,116,114,97,108,117, -112,100,97,116,101,100,83,112,101,99,105,97,108,78,101,116,119,111,114,107,114, -101,113,117,105,114,101,99,111,109,109,101,110,116,119,97,114,110,105,110,103,67 -,111,108,108,101,103,101,116,111,111,108,98,97,114,114,101,109,97,105,110,115,98 -,101,99,97,117,115,101,101,108,101,99,116,101,100,68,101,117,116,115,99,104,102, -105,110,97,110,99,101,119,111,114,107,101,114,115,113,117,105,99,107,108,121,98, -101,116,119,101,101,110,101,120,97,99,116,108,121,115,101,116,116,105,110,103, -100,105,115,101,97,115,101,83,111,99,105,101,116,121,119,101,97,112,111,110,115, -101,120,104,105,98,105,116,38,108,116,59,33,45,45,67,111,110,116,114,111,108,99, -108,97,115,115,101,115,99,111,118,101,114,101,100,111,117,116,108,105,110,101,97 -,116,116,97,99,107,115,100,101,118,105,99,101,115,40,119,105,110,100,111,119,112 -,117,114,112,111,115,101,116,105,116,108,101,61,34,77,111,98,105,108,101,32,107, -105,108,108,105,110,103,115,104,111,119,105,110,103,73,116,97,108,105,97,110,100 -,114,111,112,112,101,100,104,101,97,118,105,108,121,101,102,102,101,99,116,115, -45,49,39,93,41,59,10,99,111,110,102,105,114,109,67,117,114,114,101,110,116,97, -100,118,97,110,99,101,115,104,97,114,105,110,103,111,112,101,110,105,110,103,100 -,114,97,119,105,110,103,98,105,108,108,105,111,110,111,114,100,101,114,101,100, -71,101,114,109,97,110,121,114,101,108,97,116,101,100,60,47,102,111,114,109,62, -105,110,99,108,117,100,101,119,104,101,116,104,101,114,100,101,102,105,110,101, -100,83,99,105,101,110,99,101,99,97,116,97,108,111,103,65,114,116,105,99,108,101, -98,117,116,116,111,110,115,108,97,114,103,101,115,116,117,110,105,102,111,114, -109,106,111,117,114,110,101,121,115,105,100,101,98,97,114,67,104,105,99,97,103, -111,104,111,108,105,100,97,121,71,101,110,101,114,97,108,112,97,115,115,97,103, -101,44,38,113,117,111,116,59,97,110,105,109,97,116,101,102,101,101,108,105,110, -103,97,114,114,105,118,101,100,112,97,115,115,105,110,103,110,97,116,117,114,97, -108,114,111,117,103,104,108,121,46,10,10,84,104,101,32,98,117,116,32,110,111,116 -,100,101,110,115,105,116,121,66,114,105,116,97,105,110,67,104,105,110,101,115, -101,108,97,99,107,32,111,102,116,114,105,98,117,116,101,73,114,101,108,97,110, -100,34,32,100,97,116,97,45,102,97,99,116,111,114,115,114,101,99,101,105,118,101, -116,104,97,116,32,105,115,76,105,98,114,97,114,121,104,117,115,98,97,110,100,105 -,110,32,102,97,99,116,97,102,102,97,105,114,115,67,104,97,114,108,101,115,114,97 -,100,105,99,97,108,98,114,111,117,103,104,116,102,105,110,100,105,110,103,108,97 -,110,100,105,110,103,58,108,97,110,103,61,34,114,101,116,117,114,110,32,108,101, -97,100,101,114,115,112,108,97,110,110,101,100,112,114,101,109,105,117,109,112,97 -,99,107,97,103,101,65,109,101,114,105,99,97,69,100,105,116,105,111,110,93,38,113 -,117,111,116,59,77,101,115,115,97,103,101,110,101,101,100,32,116,111,118,97,108, -117,101,61,34,99,111,109,112,108,101,120,108,111,111,107,105,110,103,115,116,97, -116,105,111,110,98,101,108,105,101,118,101,115,109,97,108,108,101,114,45,109,111 -,98,105,108,101,114,101,99,111,114,100,115,119,97,110,116,32,116,111,107,105,110 -,100,32,111,102,70,105,114,101,102,111,120,121,111,117,32,97,114,101,115,105,109 -,105,108,97,114,115,116,117,100,105,101,100,109,97,120,105,109,117,109,104,101, -97,100,105,110,103,114,97,112,105,100,108,121,99,108,105,109,97,116,101,107,105, -110,103,100,111,109,101,109,101,114,103,101,100,97,109,111,117,110,116,115,102, -111,117,110,100,101,100,112,105,111,110,101,101,114,102,111,114,109,117,108,97, -100,121,110,97,115,116,121,104,111,119,32,116,111,32,83,117,112,112,111,114,116, -114,101,118,101,110,117,101,101,99,111,110,111,109,121,82,101,115,117,108,116, -115,98,114,111,116,104,101,114,115,111,108,100,105,101,114,108,97,114,103,101, -108,121,99,97,108,108,105,110,103,46,38,113,117,111,116,59,65,99,99,111,117,110, -116,69,100,119,97,114,100,32,115,101,103,109,101,110,116,82,111,98,101,114,116, -32,101,102,102,111,114,116,115,80,97,99,105,102,105,99,108,101,97,114,110,101, -100,117,112,32,119,105,116,104,104,101,105,103,104,116,58,119,101,32,104,97,118, -101,65,110,103,101,108,101,115,110,97,116,105,111,110,115,95,115,101,97,114,99, -104,97,112,112,108,105,101,100,97,99,113,117,105,114,101,109,97,115,115,105,118, -101,103,114,97,110,116,101,100,58,32,102,97,108,115,101,116,114,101,97,116,101, -100,98,105,103,103,101,115,116,98,101,110,101,102,105,116,100,114,105,118,105, -110,103,83,116,117,100,105,101,115,109,105,110,105,109,117,109,112,101,114,104, -97,112,115,109,111,114,110,105,110,103,115,101,108,108,105,110,103,105,115,32, -117,115,101,100,114,101,118,101,114,115,101,118,97,114,105,97,110,116,32,114,111 -,108,101,61,34,109,105,115,115,105,110,103,97,99,104,105,101,118,101,112,114,111 -,109,111,116,101,115,116,117,100,101,110,116,115,111,109,101,111,110,101,101,120 -,116,114,101,109,101,114,101,115,116,111,114,101,98,111,116,116,111,109,58,101, -118,111,108,118,101,100,97,108,108,32,116,104,101,115,105,116,101,109,97,112,101 -,110,103,108,105,115,104,119,97,121,32,116,111,32,32,65,117,103,117,115,116,115, -121,109,98,111,108,115,67,111,109,112,97,110,121,109,97,116,116,101,114,115,109, -117,115,105,99,97,108,97,103,97,105,110,115,116,115,101,114,118,105,110,103,125, -41,40,41,59,13,10,112,97,121,109,101,110,116,116,114,111,117,98,108,101,99,111, -110,99,101,112,116,99,111,109,112,97,114,101,112,97,114,101,110,116,115,112,108, -97,121,101,114,115,114,101,103,105,111,110,115,109,111,110,105,116,111,114,32,39 -,39,84,104,101,32,119,105,110,110,105,110,103,101,120,112,108,111,114,101,97,100 -,97,112,116,101,100,71,97,108,108,101,114,121,112,114,111,100,117,99,101,97,98, -105,108,105,116,121,101,110,104,97,110,99,101,99,97,114,101,101,114,115,41,46,32 -,84,104,101,32,99,111,108,108,101,99,116,83,101,97,114,99,104,32,97,110,99,105, -101,110,116,101,120,105,115,116,101,100,102,111,111,116,101,114,32,104,97,110, -100,108,101,114,112,114,105,110,116,101,100,99,111,110,115,111,108,101,69,97,115 -,116,101,114,110,101,120,112,111,114,116,115,119,105,110,100,111,119,115,67,104, -97,110,110,101,108,105,108,108,101,103,97,108,110,101,117,116,114,97,108,115,117 -,103,103,101,115,116,95,104,101,97,100,101,114,115,105,103,110,105,110,103,46, -104,116,109,108,34,62,115,101,116,116,108,101,100,119,101,115,116,101,114,110,99 -,97,117,115,105,110,103,45,119,101,98,107,105,116,99,108,97,105,109,101,100,74, -117,115,116,105,99,101,99,104,97,112,116,101,114,118,105,99,116,105,109,115,84, -104,111,109,97,115,32,109,111,122,105,108,108,97,112,114,111,109,105,115,101,112 -,97,114,116,105,101,115,101,100,105,116,105,111,110,111,117,116,115,105,100,101, -58,102,97,108,115,101,44,104,117,110,100,114,101,100,79,108,121,109,112,105,99, -95,98,117,116,116,111,110,97,117,116,104,111,114,115,114,101,97,99,104,101,100, -99,104,114,111,110,105,99,100,101,109,97,110,100,115,115,101,99,111,110,100,115, -112,114,111,116,101,99,116,97,100,111,112,116,101,100,112,114,101,112,97,114,101 -,110,101,105,116,104,101,114,103,114,101,97,116,108,121,103,114,101,97,116,101, -114,111,118,101,114,97,108,108,105,109,112,114,111,118,101,99,111,109,109,97,110 -,100,115,112,101,99,105,97,108,115,101,97,114,99,104,46,119,111,114,115,104,105, -112,102,117,110,100,105,110,103,116,104,111,117,103,104,116,104,105,103,104,101, -115,116,105,110,115,116,101,97,100,117,116,105,108,105,116,121,113,117,97,114, -116,101,114,67,117,108,116,117,114,101,116,101,115,116,105,110,103,99,108,101,97 -,114,108,121,101,120,112,111,115,101,100,66,114,111,119,115,101,114,108,105,98, -101,114,97,108,125,32,99,97,116,99,104,80,114,111,106,101,99,116,101,120,97,109, -112,108,101,104,105,100,101,40,41,59,70,108,111,114,105,100,97,97,110,115,119, -101,114,115,97,108,108,111,119,101,100,69,109,112,101,114,111,114,100,101,102, -101,110,115,101,115,101,114,105,111,117,115,102,114,101,101,100,111,109,83,101, -118,101,114,97,108,45,98,117,116,116,111,110,70,117,114,116,104,101,114,111,117, -116,32,111,102,32,33,61,32,110,117,108,108,116,114,97,105,110,101,100,68,101,110 -,109,97,114,107,118,111,105,100,40,48,41,47,97,108,108,46,106,115,112,114,101, -118,101,110,116,82,101,113,117,101,115,116,83,116,101,112,104,101,110,10,10,87, -104,101,110,32,111,98,115,101,114,118,101,60,47,104,50,62,13,10,77,111,100,101, -114,110,32,112,114,111,118,105,100,101,34,32,97,108,116,61,34,98,111,114,100,101 -,114,115,46,10,10,70,111,114,32,10,10,77,97,110,121,32,97,114,116,105,115,116, -115,112,111,119,101,114,101,100,112,101,114,102,111,114,109,102,105,99,116,105, -111,110,116,121,112,101,32,111,102,109,101,100,105,99,97,108,116,105,99,107,101, -116,115,111,112,112,111,115,101,100,67,111,117,110,99,105,108,119,105,116,110, -101,115,115,106,117,115,116,105,99,101,71,101,111,114,103,101,32,66,101,108,103, -105,117,109,46,46,46,60,47,97,62,116,119,105,116,116,101,114,110,111,116,97,98, -108,121,119,97,105,116,105,110,103,119,97,114,102,97,114,101,32,79,116,104,101, -114,32,114,97,110,107,105,110,103,112,104,114,97,115,101,115,109,101,110,116,105 -,111,110,115,117,114,118,105,118,101,115,99,104,111,108,97,114,60,47,112,62,13, -10,32,67,111,117,110,116,114,121,105,103,110,111,114,101,100,108,111,115,115,32, -111,102,106,117,115,116,32,97,115,71,101,111,114,103,105,97,115,116,114,97,110, -103,101,60,104,101,97,100,62,60,115,116,111,112,112,101,100,49,39,93,41,59,13,10 -,105,115,108,97,110,100,115,110,111,116,97,98,108,101,98,111,114,100,101,114,58, -108,105,115,116,32,111,102,99,97,114,114,105,101,100,49,48,48,44,48,48,48,60,47, -104,51,62,10,32,115,101,118,101,114,97,108,98,101,99,111,109,101,115,115,101,108 -,101,99,116,32,119,101,100,100,105,110,103,48,48,46,104,116,109,108,109,111,110, -97,114,99,104,111,102,102,32,116,104,101,116,101,97,99,104,101,114,104,105,103, -104,108,121,32,98,105,111,108,111,103,121,108,105,102,101,32,111,102,111,114,32, -101,118,101,110,114,105,115,101,32,111,102,38,114,97,113,117,111,59,112,108,117, -115,111,110,101,104,117,110,116,105,110,103,40,116,104,111,117,103,104,68,111, -117,103,108,97,115,106,111,105,110,105,110,103,99,105,114,99,108,101,115,70,111, -114,32,116,104,101,65,110,99,105,101,110,116,86,105,101,116,110,97,109,118,101, -104,105,99,108,101,115,117,99,104,32,97,115,99,114,121,115,116,97,108,118,97,108 -,117,101,32,61,87,105,110,100,111,119,115,101,110,106,111,121,101,100,97,32,115, -109,97,108,108,97,115,115,117,109,101,100,60,97,32,105,100,61,34,102,111,114,101 -,105,103,110,32,65,108,108,32,114,105,104,111,119,32,116,104,101,68,105,115,112, -108,97,121,114,101,116,105,114,101,100,104,111,119,101,118,101,114,104,105,100, -100,101,110,59,98,97,116,116,108,101,115,115,101,101,107,105,110,103,99,97,98, -105,110,101,116,119,97,115,32,110,111,116,108,111,111,107,32,97,116,99,111,110, -100,117,99,116,103,101,116,32,116,104,101,74,97,110,117,97,114,121,104,97,112, -112,101,110,115,116,117,114,110,105,110,103,97,58,104,111,118,101,114,79,110,108 -,105,110,101,32,70,114,101,110,99,104,32,108,97,99,107,105,110,103,116,121,112, -105,99,97,108,101,120,116,114,97,99,116,101,110,101,109,105,101,115,101,118,101, -110,32,105,102,103,101,110,101,114,97,116,100,101,99,105,100,101,100,97,114,101, -32,110,111,116,47,115,101,97,114,99,104,98,101,108,105,101,102,115,45,105,109,97 -,103,101,58,108,111,99,97,116,101,100,115,116,97,116,105,99,46,108,111,103,105, -110,34,62,99,111,110,118,101,114,116,118,105,111,108,101,110,116,101,110,116,101 -,114,101,100,102,105,114,115,116,34,62,99,105,114,99,117,105,116,70,105,110,108, -97,110,100,99,104,101,109,105,115,116,115,104,101,32,119,97,115,49,48,112,120,59 -,34,62,97,115,32,115,117,99,104,100,105,118,105,100,101,100,60,47,115,112,97,110 -,62,119,105,108,108,32,98,101,108,105,110,101,32,111,102,97,32,103,114,101,97, -116,109,121,115,116,101,114,121,47,105,110,100,101,120,46,102,97,108,108,105,110 -,103,100,117,101,32,116,111,32,114,97,105,108,119,97,121,99,111,108,108,101,103, -101,109,111,110,115,116,101,114,100,101,115,99,101,110,116,105,116,32,119,105, -116,104,110,117,99,108,101,97,114,74,101,119,105,115,104,32,112,114,111,116,101, -115,116,66,114,105,116,105,115,104,102,108,111,119,101,114,115,112,114,101,100, -105,99,116,114,101,102,111,114,109,115,98,117,116,116,111,110,32,119,104,111,32, -119,97,115,108,101,99,116,117,114,101,105,110,115,116,97,110,116,115,117,105,99, -105,100,101,103,101,110,101,114,105,99,112,101,114,105,111,100,115,109,97,114, -107,101,116,115,83,111,99,105,97,108,32,102,105,115,104,105,110,103,99,111,109, -98,105,110,101,103,114,97,112,104,105,99,119,105,110,110,101,114,115,60,98,114, -32,47,62,60,98,121,32,116,104,101,32,78,97,116,117,114,97,108,80,114,105,118,97, -99,121,99,111,111,107,105,101,115,111,117,116,99,111,109,101,114,101,115,111,108 -,118,101,83,119,101,100,105,115,104,98,114,105,101,102,108,121,80,101,114,115, -105,97,110,115,111,32,109,117,99,104,67,101,110,116,117,114,121,100,101,112,105, -99,116,115,99,111,108,117,109,110,115,104,111,117,115,105,110,103,115,99,114,105 -,112,116,115,110,101,120,116,32,116,111,98,101,97,114,105,110,103,109,97,112,112 -,105,110,103,114,101,118,105,115,101,100,106,81,117,101,114,121,40,45,119,105, -100,116,104,58,116,105,116,108,101,34,62,116,111,111,108,116,105,112,83,101,99, -116,105,111,110,100,101,115,105,103,110,115,84,117,114,107,105,115,104,121,111, -117,110,103,101,114,46,109,97,116,99,104,40,125,41,40,41,59,10,10,98,117,114,110 -,105,110,103,111,112,101,114,97,116,101,100,101,103,114,101,101,115,115,111,117, -114,99,101,61,82,105,99,104,97,114,100,99,108,111,115,101,108,121,112,108,97,115 -,116,105,99,101,110,116,114,105,101,115,60,47,116,114,62,13,10,99,111,108,111, -114,58,35,117,108,32,105,100,61,34,112,111,115,115,101,115,115,114,111,108,108, -105,110,103,112,104,121,115,105,99,115,102,97,105,108,105,110,103,101,120,101,99 -,117,116,101,99,111,110,116,101,115,116,108,105,110,107,32,116,111,68,101,102,97 -,117,108,116,60,98,114,32,47,62,10,58,32,116,114,117,101,44,99,104,97,114,116, -101,114,116,111,117,114,105,115,109,99,108,97,115,115,105,99,112,114,111,99,101, -101,100,101,120,112,108,97,105,110,60,47,104,49,62,13,10,111,110,108,105,110,101 -,46,63,120,109,108,32,118,101,104,101,108,112,105,110,103,100,105,97,109,111,110 -,100,117,115,101,32,116,104,101,97,105,114,108,105,110,101,101,110,100,32,45,45, -62,41,46,97,116,116,114,40,114,101,97,100,101,114,115,104,111,115,116,105,110, -103,35,102,102,102,102,102,102,114,101,97,108,105,122,101,86,105,110,99,101,110, -116,115,105,103,110,97,108,115,32,115,114,99,61,34,47,80,114,111,100,117,99,116, -100,101,115,112,105,116,101,100,105,118,101,114,115,101,116,101,108,108,105,110, -103,80,117,98,108,105,99,32,104,101,108,100,32,105,110,74,111,115,101,112,104,32 -,116,104,101,97,116,114,101,97,102,102,101,99,116,115,60,115,116,121,108,101,62, -97,32,108,97,114,103,101,100,111,101,115,110,39,116,108,97,116,101,114,44,32,69, -108,101,109,101,110,116,102,97,118,105,99,111,110,99,114,101,97,116,111,114,72, -117,110,103,97,114,121,65,105,114,112,111,114,116,115,101,101,32,116,104,101,115 -,111,32,116,104,97,116,77,105,99,104,97,101,108,83,121,115,116,101,109,115,80, -114,111,103,114,97,109,115,44,32,97,110,100,32,32,119,105,100,116,104,61,101,38, -113,117,111,116,59,116,114,97,100,105,110,103,108,101,102,116,34,62,10,112,101, -114,115,111,110,115,71,111,108,100,101,110,32,65,102,102,97,105,114,115,103,114, -97,109,109,97,114,102,111,114,109,105,110,103,100,101,115,116,114,111,121,105, -100,101,97,32,111,102,99,97,115,101,32,111,102,111,108,100,101,115,116,32,116, -104,105,115,32,105,115,46,115,114,99,32,61,32,99,97,114,116,111,111,110,114,101, -103,105,115,116,114,67,111,109,109,111,110,115,77,117,115,108,105,109,115,87,104 -,97,116,32,105,115,105,110,32,109,97,110,121,109,97,114,107,105,110,103,114,101, -118,101,97,108,115,73,110,100,101,101,100,44,101,113,117,97,108,108,121,47,115, -104,111,119,95,97,111,117,116,100,111,111,114,101,115,99,97,112,101,40,65,117, -115,116,114,105,97,103,101,110,101,116,105,99,115,121,115,116,101,109,44,73,110, -32,116,104,101,32,115,105,116,116,105,110,103,72,101,32,97,108,115,111,73,115, -108,97,110,100,115,65,99,97,100,101,109,121,10,9,9,60,33,45,45,68,97,110,105,101 -,108,32,98,105,110,100,105,110,103,98,108,111,99,107,34,62,105,109,112,111,115, -101,100,117,116,105,108,105,122,101,65,98,114,97,104,97,109,40,101,120,99,101, -112,116,123,119,105,100,116,104,58,112,117,116,116,105,110,103,41,46,104,116,109 -,108,40,124,124,32,91,93,59,10,68,65,84,65,91,32,42,107,105,116,99,104,101,110, -109,111,117,110,116,101,100,97,99,116,117,97,108,32,100,105,97,108,101,99,116, -109,97,105,110,108,121,32,95,98,108,97,110,107,39,105,110,115,116,97,108,108,101 -,120,112,101,114,116,115,105,102,40,116,121,112,101,73,116,32,97,108,115,111,38, -99,111,112,121,59,32,34,62,84,101,114,109,115,98,111,114,110,32,105,110,79,112, -116,105,111,110,115,101,97,115,116,101,114,110,116,97,108,107,105,110,103,99,111 -,110,99,101,114,110,103,97,105,110,101,100,32,111,110,103,111,105,110,103,106, -117,115,116,105,102,121,99,114,105,116,105,99,115,102,97,99,116,111,114,121,105, -116,115,32,111,119,110,97,115,115,97,117,108,116,105,110,118,105,116,101,100,108 -,97,115,116,105,110,103,104,105,115,32,111,119,110,104,114,101,102,61,34,47,34, -32,114,101,108,61,34,100,101,118,101,108,111,112,99,111,110,99,101,114,116,100, -105,97,103,114,97,109,100,111,108,108,97,114,115,99,108,117,115,116,101,114,112, -104,112,63,105,100,61,97,108,99,111,104,111,108,41,59,125,41,40,41,59,117,115, -105,110,103,32,97,62,60,115,112,97,110,62,118,101,115,115,101,108,115,114,101, -118,105,118,97,108,65,100,100,114,101,115,115,97,109,97,116,101,117,114,97,110, -100,114,111,105,100,97,108,108,101,103,101,100,105,108,108,110,101,115,115,119, -97,108,107,105,110,103,99,101,110,116,101,114,115,113,117,97,108,105,102,121,109 -,97,116,99,104,101,115,117,110,105,102,105,101,100,101,120,116,105,110,99,116,68 -,101,102,101,110,115,101,100,105,101,100,32,105,110,10,9,60,33,45,45,32,99,117, -115,116,111,109,115,108,105,110,107,105,110,103,76,105,116,116,108,101,32,66,111 -,111,107,32,111,102,101,118,101,110,105,110,103,109,105,110,46,106,115,63,97,114 -,101,32,116,104,101,107,111,110,116,97,107,116,116,111,100,97,121,39,115,46,104, -116,109,108,34,32,116,97,114,103,101,116,61,119,101,97,114,105,110,103,65,108, -108,32,82,105,103,59,10,125,41,40,41,59,114,97,105,115,105,110,103,32,65,108,115 -,111,44,32,99,114,117,99,105,97,108,97,98,111,117,116,34,62,100,101,99,108,97, -114,101,45,45,62,10,60,115,99,102,105,114,101,102,111,120,97,115,32,109,117,99, -104,97,112,112,108,105,101,115,105,110,100,101,120,44,32,115,44,32,98,117,116,32 -,116,121,112,101,32,61,32,10,13,10,60,33,45,45,116,111,119,97,114,100,115,82,101 -,99,111,114,100,115,80,114,105,118,97,116,101,70,111,114,101,105,103,110,80,114, -101,109,105,101,114,99,104,111,105,99,101,115,86,105,114,116,117,97,108,114,101, -116,117,114,110,115,67,111,109,109,101,110,116,80,111,119,101,114,101,100,105, -110,108,105,110,101,59,112,111,118,101,114,116,121,99,104,97,109,98,101,114,76, -105,118,105,110,103,32,118,111,108,117,109,101,115,65,110,116,104,111,110,121, -108,111,103,105,110,34,32,82,101,108,97,116,101,100,69,99,111,110,111,109,121, -114,101,97,99,104,101,115,99,117,116,116,105,110,103,103,114,97,118,105,116,121, -108,105,102,101,32,105,110,67,104,97,112,116,101,114,45,115,104,97,100,111,119, -78,111,116,97,98,108,101,60,47,116,100,62,13,10,32,114,101,116,117,114,110,115, -116,97,100,105,117,109,119,105,100,103,101,116,115,118,97,114,121,105,110,103, -116,114,97,118,101,108,115,104,101,108,100,32,98,121,119,104,111,32,97,114,101, -119,111,114,107,32,105,110,102,97,99,117,108,116,121,97,110,103,117,108,97,114, -119,104,111,32,104,97,100,97,105,114,112,111,114,116,116,111,119,110,32,111,102, -10,10,83,111,109,101,32,39,99,108,105,99,107,39,99,104,97,114,103,101,115,107, -101,121,119,111,114,100,105,116,32,119,105,108,108,99,105,116,121,32,111,102,40, -116,104,105,115,41,59,65,110,100,114,101,119,32,117,110,105,113,117,101,32,99, -104,101,99,107,101,100,111,114,32,109,111,114,101,51,48,48,112,120,59,32,114,101 -,116,117,114,110,59,114,115,105,111,110,61,34,112,108,117,103,105,110,115,119, -105,116,104,105,110,32,104,101,114,115,101,108,102,83,116,97,116,105,111,110,70, -101,100,101,114,97,108,118,101,110,116,117,114,101,112,117,98,108,105,115,104, -115,101,110,116,32,116,111,116,101,110,115,105,111,110,97,99,116,114,101,115,115 -,99,111,109,101,32,116,111,102,105,110,103,101,114,115,68,117,107,101,32,111,102 -,112,101,111,112,108,101,44,101,120,112,108,111,105,116,119,104,97,116,32,105, -115,104,97,114,109,111,110,121,97,32,109,97,106,111,114,34,58,34,104,116,116,112 -,105,110,32,104,105,115,32,109,101,110,117,34,62,10,109,111,110,116,104,108,121, -111,102,102,105,99,101,114,99,111,117,110,99,105,108,103,97,105,110,105,110,103, -101,118,101,110,32,105,110,83,117,109,109,97,114,121,100,97,116,101,32,111,102, -108,111,121,97,108,116,121,102,105,116,110,101,115,115,97,110,100,32,119,97,115, -101,109,112,101,114,111,114,115,117,112,114,101,109,101,83,101,99,111,110,100,32 -,104,101,97,114,105,110,103,82,117,115,115,105,97,110,108,111,110,103,101,115, -116,65,108,98,101,114,116,97,108,97,116,101,114,97,108,115,101,116,32,111,102,32 -,115,109,97,108,108,34,62,46,97,112,112,101,110,100,100,111,32,119,105,116,104, -102,101,100,101,114,97,108,98,97,110,107,32,111,102,98,101,110,101,97,116,104,68 -,101,115,112,105,116,101,67,97,112,105,116,97,108,103,114,111,117,110,100,115,41 -,44,32,97,110,100,32,112,101,114,99,101,110,116,105,116,32,102,114,111,109,99, -108,111,115,105,110,103,99,111,110,116,97,105,110,73,110,115,116,101,97,100,102, -105,102,116,101,101,110,97,115,32,119,101,108,108,46,121,97,104,111,111,46,114, -101,115,112,111,110,100,102,105,103,104,116,101,114,111,98,115,99,117,114,101, -114,101,102,108,101,99,116,111,114,103,97,110,105,99,61,32,77,97,116,104,46,101, -100,105,116,105,110,103,111,110,108,105,110,101,32,112,97,100,100,105,110,103,97 -,32,119,104,111,108,101,111,110,101,114,114,111,114,121,101,97,114,32,111,102, -101,110,100,32,111,102,32,98,97,114,114,105,101,114,119,104,101,110,32,105,116, -104,101,97,100,101,114,32,104,111,109,101,32,111,102,114,101,115,117,109,101,100 -,114,101,110,97,109,101,100,115,116,114,111,110,103,62,104,101,97,116,105,110, -103,114,101,116,97,105,110,115,99,108,111,117,100,102,114,119,97,121,32,111,102, -32,77,97,114,99,104,32,49,107,110,111,119,105,110,103,105,110,32,112,97,114,116, -66,101,116,119,101,101,110,108,101,115,115,111,110,115,99,108,111,115,101,115, -116,118,105,114,116,117,97,108,108,105,110,107,115,34,62,99,114,111,115,115,101, -100,69,78,68,32,45,45,62,102,97,109,111,117,115,32,97,119,97,114,100,101,100,76, -105,99,101,110,115,101,72,101,97,108,116,104,32,102,97,105,114,108,121,32,119, -101,97,108,116,104,121,109,105,110,105,109,97,108,65,102,114,105,99,97,110,99, -111,109,112,101,116,101,108,97,98,101,108,34,62,115,105,110,103,105,110,103,102, -97,114,109,101,114,115,66,114,97,115,105,108,41,100,105,115,99,117,115,115,114, -101,112,108,97,99,101,71,114,101,103,111,114,121,102,111,110,116,32,99,111,112, -117,114,115,117,101,100,97,112,112,101,97,114,115,109,97,107,101,32,117,112,114, -111,117,110,100,101,100,98,111,116,104,32,111,102,98,108,111,99,107,101,100,115, -97,119,32,116,104,101,111,102,102,105,99,101,115,99,111,108,111,117,114,115,105, -102,40,100,111,99,117,119,104,101,110,32,104,101,101,110,102,111,114,99,101,112, -117,115,104,40,102,117,65,117,103,117,115,116,32,85,84,70,45,56,34,62,70,97,110, -116,97,115,121,105,110,32,109,111,115,116,105,110,106,117,114,101,100,85,115,117 -,97,108,108,121,102,97,114,109,105,110,103,99,108,111,115,117,114,101,111,98,106 -,101,99,116,32,100,101,102,101,110,99,101,117,115,101,32,111,102,32,77,101,100, -105,99,97,108,60,98,111,100,121,62,10,101,118,105,100,101,110,116,98,101,32,117, -115,101,100,107,101,121,67,111,100,101,115,105,120,116,101,101,110,73,115,108,97 -,109,105,99,35,48,48,48,48,48,48,101,110,116,105,114,101,32,119,105,100,101,108, -121,32,97,99,116,105,118,101,32,40,116,121,112,101,111,102,111,110,101,32,99,97, -110,99,111,108,111,114,32,61,115,112,101,97,107,101,114,101,120,116,101,110,100, -115,80,104,121,115,105,99,115,116,101,114,114,97,105,110,60,116,98,111,100,121, -62,102,117,110,101,114,97,108,118,105,101,119,105,110,103,109,105,100,100,108, -101,32,99,114,105,99,107,101,116,112,114,111,112,104,101,116,115,104,105,102,116 -,101,100,100,111,99,116,111,114,115,82,117,115,115,101,108,108,32,116,97,114,103 -,101,116,99,111,109,112,97,99,116,97,108,103,101,98,114,97,115,111,99,105,97,108 -,45,98,117,108,107,32,111,102,109,97,110,32,97,110,100,60,47,116,100,62,10,32, -104,101,32,108,101,102,116,41,46,118,97,108,40,41,102,97,108,115,101,41,59,108, -111,103,105,99,97,108,98,97,110,107,105,110,103,104,111,109,101,32,116,111,110, -97,109,105,110,103,32,65,114,105,122,111,110,97,99,114,101,100,105,116,115,41,59 -,10,125,41,59,10,102,111,117,110,100,101,114,105,110,32,116,117,114,110,67,111, -108,108,105,110,115,98,101,102,111,114,101,32,66,117,116,32,116,104,101,99,104, -97,114,103,101,100,84,105,116,108,101,34,62,67,97,112,116,97,105,110,115,112,101 -,108,108,101,100,103,111,100,100,101,115,115,84,97,103,32,45,45,62,65,100,100, -105,110,103,58,98,117,116,32,119,97,115,82,101,99,101,110,116,32,112,97,116,105, -101,110,116,98,97,99,107,32,105,110,61,102,97,108,115,101,38,76,105,110,99,111, -108,110,119,101,32,107,110,111,119,67,111,117,110,116,101,114,74,117,100,97,105, -115,109,115,99,114,105,112,116,32,97,108,116,101,114,101,100,39,93,41,59,10,32, -32,104,97,115,32,116,104,101,117,110,99,108,101,97,114,69,118,101,110,116,39,44, -98,111,116,104,32,105,110,110,111,116,32,97,108,108,10,10,60,33,45,45,32,112,108 -,97,99,105,110,103,104,97,114,100,32,116,111,32,99,101,110,116,101,114,115,111, -114,116,32,111,102,99,108,105,101,110,116,115,115,116,114,101,101,116,115,66,101 -,114,110,97,114,100,97,115,115,101,114,116,115,116,101,110,100,32,116,111,102,97 -,110,116,97,115,121,100,111,119,110,32,105,110,104,97,114,98,111,117,114,70,114, -101,101,100,111,109,106,101,119,101,108,114,121,47,97,98,111,117,116,46,46,115, -101,97,114,99,104,108,101,103,101,110,100,115,105,115,32,109,97,100,101,109,111, -100,101,114,110,32,111,110,108,121,32,111,110,111,110,108,121,32,116,111,105,109 -,97,103,101,34,32,108,105,110,101,97,114,32,112,97,105,110,116,101,114,97,110, -100,32,110,111,116,114,97,114,101,108,121,32,97,99,114,111,110,121,109,100,101, -108,105,118,101,114,115,104,111,114,116,101,114,48,48,38,97,109,112,59,97,115,32 -,109,97,110,121,119,105,100,116,104,61,34,47,42,32,60,33,91,67,116,105,116,108, -101,32,61,111,102,32,116,104,101,32,108,111,119,101,115,116,32,112,105,99,107, -101,100,32,101,115,99,97,112,101,100,117,115,101,115,32,111,102,112,101,111,112, -108,101,115,32,80,117,98,108,105,99,77,97,116,116,104,101,119,116,97,99,116,105, -99,115,100,97,109,97,103,101,100,119,97,121,32,102,111,114,108,97,119,115,32,111 -,102,101,97,115,121,32,116,111,32,119,105,110,100,111,119,115,116,114,111,110, -103,32,32,115,105,109,112,108,101,125,99,97,116,99,104,40,115,101,118,101,110, -116,104,105,110,102,111,98,111,120,119,101,110,116,32,116,111,112,97,105,110,116 -,101,100,99,105,116,105,122,101,110,73,32,100,111,110,39,116,114,101,116,114,101 -,97,116,46,32,83,111,109,101,32,119,119,46,34,41,59,10,98,111,109,98,105,110,103 -,109,97,105,108,116,111,58,109,97,100,101,32,105,110,46,32,77,97,110,121,32,99, -97,114,114,105,101,115,124,124,123,125,59,119,105,119,111,114,107,32,111,102,115 -,121,110,111,110,121,109,100,101,102,101,97,116,115,102,97,118,111,114,101,100, -111,112,116,105,99,97,108,112,97,103,101,84,114,97,117,110,108,101,115,115,32, -115,101,110,100,105,110,103,108,101,102,116,34,62,60,99,111,109,83,99,111,114,65 -,108,108,32,116,104,101,106,81,117,101,114,121,46,116,111,117,114,105,115,116,67 -,108,97,115,115,105,99,102,97,108,115,101,34,32,87,105,108,104,101,108,109,115, -117,98,117,114,98,115,103,101,110,117,105,110,101,98,105,115,104,111,112,115,46, -115,112,108,105,116,40,103,108,111,98,97,108,32,102,111,108,108,111,119,115,98, -111,100,121,32,111,102,110,111,109,105,110,97,108,67,111,110,116,97,99,116,115, -101,99,117,108,97,114,108,101,102,116,32,116,111,99,104,105,101,102,108,121,45, -104,105,100,100,101,110,45,98,97,110,110,101,114,60,47,108,105,62,10,10,46,32,87 -,104,101,110,32,105,110,32,98,111,116,104,100,105,115,109,105,115,115,69,120,112 -,108,111,114,101,97,108,119,97,121,115,32,118,105,97,32,116,104,101,115,112,97, -195,177,111,108,119,101,108,102,97,114,101,114,117,108,105,110,103,32,97,114,114 -,97,110,103,101,99,97,112,116,97,105,110,104,105,115,32,115,111,110,114,117,108, -101,32,111,102,104,101,32,116,111,111,107,105,116,115,101,108,102,44,61,48,38,97 -,109,112,59,40,99,97,108,108,101,100,115,97,109,112,108,101,115,116,111,32,109, -97,107,101,99,111,109,47,112,97,103,77,97,114,116,105,110,32,75,101,110,110,101, -100,121,97,99,99,101,112,116,115,102,117,108,108,32,111,102,104,97,110,100,108, -101,100,66,101,115,105,100,101,115,47,47,45,45,62,60,47,97,98,108,101,32,116,111 -,116,97,114,103,101,116,115,101,115,115,101,110,99,101,104,105,109,32,116,111,32 -,105,116,115,32,98,121,32,99,111,109,109,111,110,46,109,105,110,101,114,97,108, -116,111,32,116,97,107,101,119,97,121,115,32,116,111,115,46,111,114,103,47,108,97 -,100,118,105,115,101,100,112,101,110,97,108,116,121,115,105,109,112,108,101,58, -105,102,32,116,104,101,121,76,101,116,116,101,114,115,97,32,115,104,111,114,116, -72,101,114,98,101,114,116,115,116,114,105,107,101,115,32,103,114,111,117,112,115 -,46,108,101,110,103,116,104,102,108,105,103,104,116,115,111,118,101,114,108,97, -112,115,108,111,119,108,121,32,108,101,115,115,101,114,32,115,111,99,105,97,108, -32,60,47,112,62,10,9,9,105,116,32,105,110,116,111,114,97,110,107,101,100,32,114, -97,116,101,32,111,102,117,108,62,13,10,32,32,97,116,116,101,109,112,116,112,97, -105,114,32,111,102,109,97,107,101,32,105,116,75,111,110,116,97,107,116,65,110, -116,111,110,105,111,104,97,118,105,110,103,32,114,97,116,105,110,103,115,32,97, -99,116,105,118,101,115,116,114,101,97,109,115,116,114,97,112,112,101,100,34,41, -46,99,115,115,40,104,111,115,116,105,108,101,108,101,97,100,32,116,111,108,105, -116,116,108,101,32,103,114,111,117,112,115,44,80,105,99,116,117,114,101,45,45,62 -,13,10,13,10,32,114,111,119,115,61,34,32,111,98,106,101,99,116,105,110,118,101, -114,115,101,60,102,111,111,116,101,114,67,117,115,116,111,109,86,62,60,92,47,115 -,99,114,115,111,108,118,105,110,103,67,104,97,109,98,101,114,115,108,97,118,101, -114,121,119,111,117,110,100,101,100,119,104,101,114,101,97,115,33,61,32,39,117, -110,100,102,111,114,32,97,108,108,112,97,114,116,108,121,32,45,114,105,103,104, -116,58,65,114,97,98,105,97,110,98,97,99,107,101,100,32,99,101,110,116,117,114, -121,117,110,105,116,32,111,102,109,111,98,105,108,101,45,69,117,114,111,112,101, -44,105,115,32,104,111,109,101,114,105,115,107,32,111,102,100,101,115,105,114,101 -,100,67,108,105,110,116,111,110,99,111,115,116,32,111,102,97,103,101,32,111,102, -32,98,101,99,111,109,101,32,110,111,110,101,32,111,102,112,38,113,117,111,116,59 -,77,105,100,100,108,101,32,101,97,100,39,41,91,48,67,114,105,116,105,99,115,115, -116,117,100,105,111,115,62,38,99,111,112,121,59,103,114,111,117,112,34,62,97,115 -,115,101,109,98,108,109,97,107,105,110,103,32,112,114,101,115,115,101,100,119, -105,100,103,101,116,46,112,115,58,34,32,63,32,114,101,98,117,105,108,116,98,121, -32,115,111,109,101,70,111,114,109,101,114,32,101,100,105,116,111,114,115,100,101 -,108,97,121,101,100,67,97,110,111,110,105,99,104,97,100,32,116,104,101,112,117, -115,104,105,110,103,99,108,97,115,115,61,34,98,117,116,32,97,114,101,112,97,114, -116,105,97,108,66,97,98,121,108,111,110,98,111,116,116,111,109,32,99,97,114,114, -105,101,114,67,111,109,109,97,110,100,105,116,115,32,117,115,101,65,115,32,119, -105,116,104,99,111,117,114,115,101,115,97,32,116,104,105,114,100,100,101,110,111 -,116,101,115,97,108,115,111,32,105,110,72,111,117,115,116,111,110,50,48,112,120, -59,34,62,97,99,99,117,115,101,100,100,111,117,98,108,101,32,103,111,97,108,32, -111,102,70,97,109,111,117,115,32,41,46,98,105,110,100,40,112,114,105,101,115,116 -,115,32,79,110,108,105,110,101,105,110,32,74,117,108,121,115,116,32,43,32,34,103 -,99,111,110,115,117,108,116,100,101,99,105,109,97,108,104,101,108,112,102,117, -108,114,101,118,105,118,101,100,105,115,32,118,101,114,121,114,39,43,39,105,112, -116,108,111,115,105,110,103,32,102,101,109,97,108,101,115,105,115,32,97,108,115, -111,115,116,114,105,110,103,115,100,97,121,115,32,111,102,97,114,114,105,118,97, -108,102,117,116,117,114,101,32,60,111,98,106,101,99,116,102,111,114,99,105,110, -103,83,116,114,105,110,103,40,34,32,47,62,10,9,9,104,101,114,101,32,105,115,101, -110,99,111,100,101,100,46,32,32,84,104,101,32,98,97,108,108,111,111,110,100,111, -110,101,32,98,121,47,99,111,109,109,111,110,98,103,99,111,108,111,114,108,97,119 -,32,111,102,32,73,110,100,105,97,110,97,97,118,111,105,100,101,100,98,117,116,32 -,116,104,101,50,112,120,32,51,112,120,106,113,117,101,114,121,46,97,102,116,101, -114,32,97,112,111,108,105,99,121,46,109,101,110,32,97,110,100,102,111,111,116, -101,114,45,61,32,116,114,117,101,59,102,111,114,32,117,115,101,115,99,114,101, -101,110,46,73,110,100,105,97,110,32,105,109,97,103,101,32,61,102,97,109,105,108, -121,44,104,116,116,112,58,47,47,32,38,110,98,115,112,59,100,114,105,118,101,114, -115,101,116,101,114,110,97,108,115,97,109,101,32,97,115,110,111,116,105,99,101, -100,118,105,101,119,101,114,115,125,41,40,41,59,10,32,105,115,32,109,111,114,101 -,115,101,97,115,111,110,115,102,111,114,109,101,114,32,116,104,101,32,110,101, -119,105,115,32,106,117,115,116,99,111,110,115,101,110,116,32,83,101,97,114,99, -104,119,97,115,32,116,104,101,119,104,121,32,116,104,101,115,104,105,112,112,101 -,100,98,114,62,60,98,114,62,119,105,100,116,104,58,32,104,101,105,103,104,116,61 -,109,97,100,101,32,111,102,99,117,105,115,105,110,101,105,115,32,116,104,97,116, -97,32,118,101,114,121,32,65,100,109,105,114,97,108,32,102,105,120,101,100,59,110 -,111,114,109,97,108,32,77,105,115,115,105,111,110,80,114,101,115,115,44,32,111, -110,116,97,114,105,111,99,104,97,114,115,101,116,116,114,121,32,116,111,32,105, -110,118,97,100,101,100,61,34,116,114,117,101,34,115,112,97,99,105,110,103,105, -115,32,109,111,115,116,97,32,109,111,114,101,32,116,111,116,97,108,108,121,102, -97,108,108,32,111,102,125,41,59,13,10,32,32,105,109,109,101,110,115,101,116,105, -109,101,32,105,110,115,101,116,32,111,117,116,115,97,116,105,115,102,121,116,111 -,32,102,105,110,100,100,111,119,110,32,116,111,108,111,116,32,111,102,32,80,108, -97,121,101,114,115,105,110,32,74,117,110,101,113,117,97,110,116,117,109,110,111, -116,32,116,104,101,116,105,109,101,32,116,111,100,105,115,116,97,110,116,70,105, -110,110,105,115,104,115,114,99,32,61,32,40,115,105,110,103,108,101,32,104,101, -108,112,32,111,102,71,101,114,109,97,110,32,108,97,119,32,97,110,100,108,97,98, -101,108,101,100,102,111,114,101,115,116,115,99,111,111,107,105,110,103,115,112, -97,99,101,34,62,104,101,97,100,101,114,45,119,101,108,108,32,97,115,83,116,97, -110,108,101,121,98,114,105,100,103,101,115,47,103,108,111,98,97,108,67,114,111, -97,116,105,97,32,65,98,111,117,116,32,91,48,93,59,10,32,32,105,116,44,32,97,110, -100,103,114,111,117,112,101,100,98,101,105,110,103,32,97,41,123,116,104,114,111, -119,104,101,32,109,97,100,101,108,105,103,104,116,101,114,101,116,104,105,99,97, -108,70,70,70,70,70,70,34,98,111,116,116,111,109,34,108,105,107,101,32,97,32,101, -109,112,108,111,121,115,108,105,118,101,32,105,110,97,115,32,115,101,101,110,112 -,114,105,110,116,101,114,109,111,115,116,32,111,102,117,98,45,108,105,110,107, -114,101,106,101,99,116,115,97,110,100,32,117,115,101,105,109,97,103,101,34,62, -115,117,99,99,101,101,100,102,101,101,100,105,110,103,78,117,99,108,101,97,114, -105,110,102,111,114,109,97,116,111,32,104,101,108,112,87,111,109,101,110,39,115, -78,101,105,116,104,101,114,77,101,120,105,99,97,110,112,114,111,116,101,105,110, -60,116,97,98,108,101,32,98,121,32,109,97,110,121,104,101,97,108,116,104,121,108, -97,119,115,117,105,116,100,101,118,105,115,101,100,46,112,117,115,104,40,123,115 -,101,108,108,101,114,115,115,105,109,112,108,121,32,84,104,114,111,117,103,104, -46,99,111,111,107,105,101,32,73,109,97,103,101,40,111,108,100,101,114,34,62,117, -115,46,106,115,34,62,32,83,105,110,99,101,32,117,110,105,118,101,114,115,108,97, -114,103,101,114,32,111,112,101,110,32,116,111,33,45,45,32,101,110,100,108,105, -101,115,32,105,110,39,93,41,59,13,10,32,32,109,97,114,107,101,116,119,104,111,32 -,105,115,32,40,34,68,79,77,67,111,109,97,110,97,103,101,100,111,110,101,32,102, -111,114,116,121,112,101,111,102,32,75,105,110,103,100,111,109,112,114,111,102, -105,116,115,112,114,111,112,111,115,101,116,111,32,115,104,111,119,99,101,110, -116,101,114,59,109,97,100,101,32,105,116,100,114,101,115,115,101,100,119,101,114 -,101,32,105,110,109,105,120,116,117,114,101,112,114,101,99,105,115,101,97,114, -105,115,105,110,103,115,114,99,32,61,32,39,109,97,107,101,32,97,32,115,101,99, -117,114,101,100,66,97,112,116,105,115,116,118,111,116,105,110,103,32,10,9,9,118, -97,114,32,77,97,114,99,104,32,50,103,114,101,119,32,117,112,67,108,105,109,97, -116,101,46,114,101,109,111,118,101,115,107,105,108,108,101,100,119,97,121,32,116 -,104,101,60,47,104,101,97,100,62,102,97,99,101,32,111,102,97,99,116,105,110,103, -32,114,105,103,104,116,34,62,116,111,32,119,111,114,107,114,101,100,117,99,101, -115,104,97,115,32,104,97,100,101,114,101,99,116,101,100,115,104,111,119,40,41,59 -,97,99,116,105,111,110,61,98,111,111,107,32,111,102,97,110,32,97,114,101,97,61, -61,32,34,104,116,116,60,104,101,97,100,101,114,10,60,104,116,109,108,62,99,111, -110,102,111,114,109,102,97,99,105,110,103,32,99,111,111,107,105,101,46,114,101, -108,121,32,111,110,104,111,115,116,101,100,32,46,99,117,115,116,111,109,104,101, -32,119,101,110,116,98,117,116,32,102,111,114,115,112,114,101,97,100,32,70,97,109 -,105,108,121,32,97,32,109,101,97,110,115,111,117,116,32,116,104,101,102,111,114, -117,109,115,46,102,111,111,116,97,103,101,34,62,77,111,98,105,108,67,108,101,109 -,101,110,116,115,34,32,105,100,61,34,97,115,32,104,105,103,104,105,110,116,101, -110,115,101,45,45,62,60,33,45,45,102,101,109,97,108,101,32,105,115,32,115,101, -101,110,105,109,112,108,105,101,100,115,101,116,32,116,104,101,97,32,115,116,97, -116,101,97,110,100,32,104,105,115,102,97,115,116,101,115,116,98,101,115,105,100, -101,115,98,117,116,116,111,110,95,98,111,117,110,100,101,100,34,62,60,105,109, -103,32,73,110,102,111,98,111,120,101,118,101,110,116,115,44,97,32,121,111,117, -110,103,97,110,100,32,97,114,101,78,97,116,105,118,101,32,99,104,101,97,112,101, -114,84,105,109,101,111,117,116,97,110,100,32,104,97,115,101,110,103,105,110,101, -115,119,111,110,32,116,104,101,40,109,111,115,116,108,121,114,105,103,104,116,58 -,32,102,105,110,100,32,97,32,45,98,111,116,116,111,109,80,114,105,110,99,101,32, -97,114,101,97,32,111,102,109,111,114,101,32,111,102,115,101,97,114,99,104,95,110 -,97,116,117,114,101,44,108,101,103,97,108,108,121,112,101,114,105,111,100,44,108 -,97,110,100,32,111,102,111,114,32,119,105,116,104,105,110,100,117,99,101,100,112 -,114,111,118,105,110,103,109,105,115,115,105,108,101,108,111,99,97,108,108,121, -65,103,97,105,110,115,116,116,104,101,32,119,97,121,107,38,113,117,111,116,59, -112,120,59,34,62,13,10,112,117,115,104,101,100,32,97,98,97,110,100,111,110,110, -117,109,101,114,97,108,67,101,114,116,97,105,110,73,110,32,116,104,105,115,109, -111,114,101,32,105,110,111,114,32,115,111,109,101,110,97,109,101,32,105,115,97, -110,100,44,32,105,110,99,114,111,119,110,101,100,73,83,66,78,32,48,45,99,114,101 -,97,116,101,115,79,99,116,111,98,101,114,109,97,121,32,110,111,116,99,101,110, -116,101,114,32,108,97,116,101,32,105,110,68,101,102,101,110,99,101,101,110,97,99 -,116,101,100,119,105,115,104,32,116,111,98,114,111,97,100,108,121,99,111,111,108 -,105,110,103,111,110,108,111,97,100,61,105,116,46,32,84,104,101,114,101,99,111, -118,101,114,77,101,109,98,101,114,115,104,101,105,103,104,116,32,97,115,115,117, -109,101,115,60,104,116,109,108,62,10,112,101,111,112,108,101,46,105,110,32,111, -110,101,32,61,119,105,110,100,111,119,102,111,111,116,101,114,95,97,32,103,111, -111,100,32,114,101,107,108,97,109,97,111,116,104,101,114,115,44,116,111,32,116, -104,105,115,95,99,111,111,107,105,101,112,97,110,101,108,34,62,76,111,110,100, -111,110,44,100,101,102,105,110,101,115,99,114,117,115,104,101,100,98,97,112,116, -105,115,109,99,111,97,115,116,97,108,115,116,97,116,117,115,32,116,105,116,108, -101,34,32,109,111,118,101,32,116,111,108,111,115,116,32,105,110,98,101,116,116, -101,114,32,105,109,112,108,105,101,115,114,105,118,97,108,114,121,115,101,114, -118,101,114,115,32,83,121,115,116,101,109,80,101,114,104,97,112,115,101,115,32, -97,110,100,32,99,111,110,116,101,110,100,102,108,111,119,105,110,103,108,97,115, -116,101,100,32,114,105,115,101,32,105,110,71,101,110,101,115,105,115,118,105,101 -,119,32,111,102,114,105,115,105,110,103,32,115,101,101,109,32,116,111,98,117,116 -,32,105,110,32,98,97,99,107,105,110,103,104,101,32,119,105,108,108,103,105,118, -101,110,32,97,103,105,118,105,110,103,32,99,105,116,105,101,115,46,102,108,111, -119,32,111,102,32,76,97,116,101,114,32,97,108,108,32,98,117,116,72,105,103,104, -119,97,121,111,110,108,121,32,98,121,115,105,103,110,32,111,102,104,101,32,100, -111,101,115,100,105,102,102,101,114,115,98,97,116,116,101,114,121,38,97,109,112, -59,108,97,115,105,110,103,108,101,115,116,104,114,101,97,116,115,105,110,116,101 -,103,101,114,116,97,107,101,32,111,110,114,101,102,117,115,101,100,99,97,108,108 -,101,100,32,61,85,83,38,97,109,112,83,101,101,32,116,104,101,110,97,116,105,118, -101,115,98,121,32,116,104,105,115,115,121,115,116,101,109,46,104,101,97,100,32, -111,102,58,104,111,118,101,114,44,108,101,115,98,105,97,110,115,117,114,110,97, -109,101,97,110,100,32,97,108,108,99,111,109,109,111,110,47,104,101,97,100,101, -114,95,95,112,97,114,97,109,115,72,97,114,118,97,114,100,47,112,105,120,101,108, -46,114,101,109,111,118,97,108,115,111,32,108,111,110,103,114,111,108,101,32,111, -102,106,111,105,110,116,108,121,115,107,121,115,99,114,97,85,110,105,99,111,100, -101,98,114,32,47,62,13,10,65,116,108,97,110,116,97,110,117,99,108,101,117,115,67 -,111,117,110,116,121,44,112,117,114,101,108,121,32,99,111,117,110,116,34,62,101, -97,115,105,108,121,32,98,117,105,108,100,32,97,111,110,99,108,105,99,107,97,32, -103,105,118,101,110,112,111,105,110,116,101,114,104,38,113,117,111,116,59,101, -118,101,110,116,115,32,101,108,115,101,32,123,10,100,105,116,105,111,110,115,110 -,111,119,32,116,104,101,44,32,119,105,116,104,32,109,97,110,32,119,104,111,111, -114,103,47,87,101,98,111,110,101,32,97,110,100,99,97,118,97,108,114,121,72,101, -32,100,105,101,100,115,101,97,116,116,108,101,48,48,44,48,48,48,32,123,119,105, -110,100,111,119,104,97,118,101,32,116,111,105,102,40,119,105,110,100,97,110,100, -32,105,116,115,115,111,108,101,108,121,32,109,38,113,117,111,116,59,114,101,110, -101,119,101,100,68,101,116,114,111,105,116,97,109,111,110,103,115,116,101,105, -116,104,101,114,32,116,104,101,109,32,105,110,83,101,110,97,116,111,114,85,115, -60,47,97,62,60,75,105,110,103,32,111,102,70,114,97,110,99,105,115,45,112,114,111 -,100,117,99,104,101,32,117,115,101,100,97,114,116,32,97,110,100,104,105,109,32, -97,110,100,117,115,101,100,32,98,121,115,99,111,114,105,110,103,97,116,32,104, -111,109,101,116,111,32,104,97,118,101,114,101,108,97,116,101,115,105,98,105,108, -105,116,121,102,97,99,116,105,111,110,66,117,102,102,97,108,111,108,105,110,107, -34,62,60,119,104,97,116,32,104,101,102,114,101,101,32,116,111,67,105,116,121,32, -111,102,99,111,109,101,32,105,110,115,101,99,116,111,114,115,99,111,117,110,116, -101,100,111,110,101,32,100,97,121,110,101,114,118,111,117,115,115,113,117,97,114 -,101,32,125,59,105,102,40,103,111,105,110,32,119,104,97,116,105,109,103,34,32,97 -,108,105,115,32,111,110,108,121,115,101,97,114,99,104,47,116,117,101,115,100,97, -121,108,111,111,115,101,108,121,83,111,108,111,109,111,110,115,101,120,117,97, -108,32,45,32,60,97,32,104,114,109,101,100,105,117,109,34,68,79,32,78,79,84,32,70 -,114,97,110,99,101,44,119,105,116,104,32,97,32,119,97,114,32,97,110,100,115,101, -99,111,110,100,32,116,97,107,101,32,97,32,62,13,10,13,10,13,10,109,97,114,107, -101,116,46,104,105,103,104,119,97,121,100,111,110,101,32,105,110,99,116,105,118, -105,116,121,34,108,97,115,116,34,62,111,98,108,105,103,101,100,114,105,115,101, -32,116,111,34,117,110,100,101,102,105,109,97,100,101,32,116,111,32,69,97,114,108 -,121,32,112,114,97,105,115,101,100,105,110,32,105,116,115,32,102,111,114,32,104, -105,115,97,116,104,108,101,116,101,74,117,112,105,116,101,114,89,97,104,111,111, -33,32,116,101,114,109,101,100,32,115,111,32,109,97,110,121,114,101,97,108,108, -121,32,115,46,32,84,104,101,32,97,32,119,111,109,97,110,63,118,97,108,117,101,61 -,100,105,114,101,99,116,32,114,105,103,104,116,34,32,98,105,99,121,99,108,101,97 -,99,105,110,103,61,34,100,97,121,32,97,110,100,115,116,97,116,105,110,103,82,97, -116,104,101,114,44,104,105,103,104,101,114,32,79,102,102,105,99,101,32,97,114, -101,32,110,111,119,116,105,109,101,115,44,32,119,104,101,110,32,97,32,112,97,121 -,32,102,111,114,111,110,32,116,104,105,115,45,108,105,110,107,34,62,59,98,111, -114,100,101,114,97,114,111,117,110,100,32,97,110,110,117,97,108,32,116,104,101, -32,78,101,119,112,117,116,32,116,104,101,46,99,111,109,34,32,116,97,107,105,110, -32,116,111,97,32,98,114,105,101,102,40,105,110,32,116,104,101,103,114,111,117, -112,115,46,59,32,119,105,100,116,104,101,110,122,121,109,101,115,115,105,109,112 -,108,101,32,105,110,32,108,97,116,101,123,114,101,116,117,114,110,116,104,101, -114,97,112,121,97,32,112,111,105,110,116,98,97,110,110,105,110,103,105,110,107, -115,34,62,10,40,41,59,34,32,114,101,97,32,112,108,97,99,101,92,117,48,48,51,67, -97,97,98,111,117,116,32,97,116,114,62,13,10,9,9,99,99,111,117,110,116,32,103,105 -,118,101,115,32,97,60,83,67,82,73,80,84,82,97,105,108,119,97,121,116,104,101,109 -,101,115,47,116,111,111,108,98,111,120,66,121,73,100,40,34,120,104,117,109,97, -110,115,44,119,97,116,99,104,101,115,105,110,32,115,111,109,101,32,105,102,32,40 -,119,105,99,111,109,105,110,103,32,102,111,114,109,97,116,115,32,85,110,100,101, -114,32,98,117,116,32,104,97,115,104,97,110,100,101,100,32,109,97,100,101,32,98, -121,116,104,97,110,32,105,110,102,101,97,114,32,111,102,100,101,110,111,116,101, -100,47,105,102,114,97,109,101,108,101,102,116,32,105,110,118,111,108,116,97,103, -101,105,110,32,101,97,99,104,97,38,113,117,111,116,59,98,97,115,101,32,111,102, -73,110,32,109,97,110,121,117,110,100,101,114,103,111,114,101,103,105,109,101,115 -,97,99,116,105,111,110,32,60,47,112,62,13,10,60,117,115,116,111,109,86,97,59,38, -103,116,59,60,47,105,109,112,111,114,116,115,111,114,32,116,104,97,116,109,111, -115,116,108,121,32,38,97,109,112,59,114,101,32,115,105,122,101,61,34,60,47,97,62 -,60,47,104,97,32,99,108,97,115,115,112,97,115,115,105,118,101,72,111,115,116,32, -61,32,87,104,101,116,104,101,114,102,101,114,116,105,108,101,86,97,114,105,111, -117,115,61,91,93,59,40,102,117,99,97,109,101,114,97,115,47,62,60,47,116,100,62, -97,99,116,115,32,97,115,73,110,32,115,111,109,101,62,13,10,13,10,60,33,111,114, -103,97,110,105,115,32,60,98,114,32,47,62,66,101,105,106,105,110,103,99,97,116,97 -,108,195,160,100,101,117,116,115,99,104,101,117,114,111,112,101,117,101,117,115, -107,97,114,97,103,97,101,105,108,103,101,115,118,101,110,115,107,97,101,115,112, -97,195,177,97,109,101,110,115,97,106,101,117,115,117,97,114,105,111,116,114,97, -98,97,106,111,109,195,169,120,105,99,111,112,195,161,103,105,110,97,115,105,101, -109,112,114,101,115,105,115,116,101,109,97,111,99,116,117,98,114,101,100,117,114 -,97,110,116,101,97,195,177,97,100,105,114,101,109,112,114,101,115,97,109,111,109 -,101,110,116,111,110,117,101,115,116,114,111,112,114,105,109,101,114,97,116,114, -97,118,195,169,115,103,114,97,99,105,97,115,110,117,101,115,116,114,97,112,114, -111,99,101,115,111,101,115,116,97,100,111,115,99,97,108,105,100,97,100,112,101, -114,115,111,110,97,110,195,186,109,101,114,111,97,99,117,101,114,100,111,109,195 -,186,115,105,99,97,109,105,101,109,98,114,111,111,102,101,114,116,97,115,97,108, -103,117,110,111,115,112,97,195,173,115,101,115,101,106,101,109,112,108,111,100, -101,114,101,99,104,111,97,100,101,109,195,161,115,112,114,105,118,97,100,111,97, -103,114,101,103,97,114,101,110,108,97,99,101,115,112,111,115,105,98,108,101,104, -111,116,101,108,101,115,115,101,118,105,108,108,97,112,114,105,109,101,114,111, -195,186,108,116,105,109,111,101,118,101,110,116,111,115,97,114,99,104,105,118, -111,99,117,108,116,117,114,97,109,117,106,101,114,101,115,101,110,116,114,97,100 -,97,97,110,117,110,99,105,111,101,109,98,97,114,103,111,109,101,114,99,97,100, -111,103,114,97,110,100,101,115,101,115,116,117,100,105,111,109,101,106,111,114, -101,115,102,101,98,114,101,114,111,100,105,115,101,195,177,111,116,117,114,105, -115,109,111,99,195,179,100,105,103,111,112,111,114,116,97,100,97,101,115,112,97, -99,105,111,102,97,109,105,108,105,97,97,110,116,111,110,105,111,112,101,114,109, -105,116,101,103,117,97,114,100,97,114,97,108,103,117,110,97,115,112,114,101,99, -105,111,115,97,108,103,117,105,101,110,115,101,110,116,105,100,111,118,105,115, -105,116,97,115,116,195,173,116,117,108,111,99,111,110,111,99,101,114,115,101,103 -,117,110,100,111,99,111,110,115,101,106,111,102,114,97,110,99,105,97,109,105,110 -,117,116,111,115,115,101,103,117,110,100,97,116,101,110,101,109,111,115,101,102, -101,99,116,111,115,109,195,161,108,97,103,97,115,101,115,105,195,179,110,114,101 -,118,105,115,116,97,103,114,97,110,97,100,97,99,111,109,112,114,97,114,105,110, -103,114,101,115,111,103,97,114,99,195,173,97,97,99,99,105,195,179,110,101,99,117 -,97,100,111,114,113,117,105,101,110,101,115,105,110,99,108,117,115,111,100,101, -98,101,114,195,161,109,97,116,101,114,105,97,104,111,109,98,114,101,115,109,117, -101,115,116,114,97,112,111,100,114,195,173,97,109,97,195,177,97,110,97,195,186, -108,116,105,109,97,101,115,116,97,109,111,115,111,102,105,99,105,97,108,116,97, -109,98,105,101,110,110,105,110,103,195,186,110,115,97,108,117,100,111,115,112, -111,100,101,109,111,115,109,101,106,111,114,97,114,112,111,115,105,116,105,111, -110,98,117,115,105,110,101,115,115,104,111,109,101,112,97,103,101,115,101,99,117 -,114,105,116,121,108,97,110,103,117,97,103,101,115,116,97,110,100,97,114,100,99, -97,109,112,97,105,103,110,102,101,97,116,117,114,101,115,99,97,116,101,103,111, -114,121,101,120,116,101,114,110,97,108,99,104,105,108,100,114,101,110,114,101, -115,101,114,118,101,100,114,101,115,101,97,114,99,104,101,120,99,104,97,110,103, -101,102,97,118,111,114,105,116,101,116,101,109,112,108,97,116,101,109,105,108, -105,116,97,114,121,105,110,100,117,115,116,114,121,115,101,114,118,105,99,101, -115,109,97,116,101,114,105,97,108,112,114,111,100,117,99,116,115,122,45,105,110, -100,101,120,58,99,111,109,109,101,110,116,115,115,111,102,116,119,97,114,101,99, -111,109,112,108,101,116,101,99,97,108,101,110,100,97,114,112,108,97,116,102,111, -114,109,97,114,116,105,99,108,101,115,114,101,113,117,105,114,101,100,109,111, -118,101,109,101,110,116,113,117,101,115,116,105,111,110,98,117,105,108,100,105, -110,103,112,111,108,105,116,105,99,115,112,111,115,115,105,98,108,101,114,101, -108,105,103,105,111,110,112,104,121,115,105,99,97,108,102,101,101,100,98,97,99, -107,114,101,103,105,115,116,101,114,112,105,99,116,117,114,101,115,100,105,115, -97,98,108,101,100,112,114,111,116,111,99,111,108,97,117,100,105,101,110,99,101, -115,101,116,116,105,110,103,115,97,99,116,105,118,105,116,121,101,108,101,109, -101,110,116,115,108,101,97,114,110,105,110,103,97,110,121,116,104,105,110,103,97 -,98,115,116,114,97,99,116,112,114,111,103,114,101,115,115,111,118,101,114,118, -105,101,119,109,97,103,97,122,105,110,101,101,99,111,110,111,109,105,99,116,114, -97,105,110,105,110,103,112,114,101,115,115,117,114,101,118,97,114,105,111,117, -115,32,60,115,116,114,111,110,103,62,112,114,111,112,101,114,116,121,115,104,111 -,112,112,105,110,103,116,111,103,101,116,104,101,114,97,100,118,97,110,99,101, -100,98,101,104,97,118,105,111,114,100,111,119,110,108,111,97,100,102,101,97,116, -117,114,101,100,102,111,111,116,98,97,108,108,115,101,108,101,99,116,101,100,76, -97,110,103,117,97,103,101,100,105,115,116,97,110,99,101,114,101,109,101,109,98, -101,114,116,114,97,99,107,105,110,103,112,97,115,115,119,111,114,100,109,111,100 -,105,102,105,101,100,115,116,117,100,101,110,116,115,100,105,114,101,99,116,108, -121,102,105,103,104,116,105,110,103,110,111,114,116,104,101,114,110,100,97,116, -97,98,97,115,101,102,101,115,116,105,118,97,108,98,114,101,97,107,105,110,103, -108,111,99,97,116,105,111,110,105,110,116,101,114,110,101,116,100,114,111,112, -100,111,119,110,112,114,97,99,116,105,99,101,101,118,105,100,101,110,99,101,102, -117,110,99,116,105,111,110,109,97,114,114,105,97,103,101,114,101,115,112,111,110 -,115,101,112,114,111,98,108,101,109,115,110,101,103,97,116,105,118,101,112,114, -111,103,114,97,109,115,97,110,97,108,121,115,105,115,114,101,108,101,97,115,101, -100,98,97,110,110,101,114,34,62,112,117,114,99,104,97,115,101,112,111,108,105,99 -,105,101,115,114,101,103,105,111,110,97,108,99,114,101,97,116,105,118,101,97,114 -,103,117,109,101,110,116,98,111,111,107,109,97,114,107,114,101,102,101,114,114, -101,114,99,104,101,109,105,99,97,108,100,105,118,105,115,105,111,110,99,97,108, -108,98,97,99,107,115,101,112,97,114,97,116,101,112,114,111,106,101,99,116,115,99 -,111,110,102,108,105,99,116,104,97,114,100,119,97,114,101,105,110,116,101,114, -101,115,116,100,101,108,105,118,101,114,121,109,111,117,110,116,97,105,110,111, -98,116,97,105,110,101,100,61,32,102,97,108,115,101,59,102,111,114,40,118,97,114, -32,97,99,99,101,112,116,101,100,99,97,112,97,99,105,116,121,99,111,109,112,117, -116,101,114,105,100,101,110,116,105,116,121,97,105,114,99,114,97,102,116,101,109 -,112,108,111,121,101,100,112,114,111,112,111,115,101,100,100,111,109,101,115,116 -,105,99,105,110,99,108,117,100,101,115,112,114,111,118,105,100,101,100,104,111, -115,112,105,116,97,108,118,101,114,116,105,99,97,108,99,111,108,108,97,112,115, -101,97,112,112,114,111,97,99,104,112,97,114,116,110,101,114,115,108,111,103,111, -34,62,60,97,100,97,117,103,104,116,101,114,97,117,116,104,111,114,34,32,99,117, -108,116,117,114,97,108,102,97,109,105,108,105,101,115,47,105,109,97,103,101,115, -47,97,115,115,101,109,98,108,121,112,111,119,101,114,102,117,108,116,101,97,99, -104,105,110,103,102,105,110,105,115,104,101,100,100,105,115,116,114,105,99,116, -99,114,105,116,105,99,97,108,99,103,105,45,98,105,110,47,112,117,114,112,111,115 -,101,115,114,101,113,117,105,114,101,115,101,108,101,99,116,105,111,110,98,101, -99,111,109,105,110,103,112,114,111,118,105,100,101,115,97,99,97,100,101,109,105, -99,101,120,101,114,99,105,115,101,97,99,116,117,97,108,108,121,109,101,100,105, -99,105,110,101,99,111,110,115,116,97,110,116,97,99,99,105,100,101,110,116,77,97, -103,97,122,105,110,101,100,111,99,117,109,101,110,116,115,116,97,114,116,105,110 -,103,98,111,116,116,111,109,34,62,111,98,115,101,114,118,101,100,58,32,38,113, -117,111,116,59,101,120,116,101,110,100,101,100,112,114,101,118,105,111,117,115, -83,111,102,116,119,97,114,101,99,117,115,116,111,109,101,114,100,101,99,105,115, -105,111,110,115,116,114,101,110,103,116,104,100,101,116,97,105,108,101,100,115, -108,105,103,104,116,108,121,112,108,97,110,110,105,110,103,116,101,120,116,97, -114,101,97,99,117,114,114,101,110,99,121,101,118,101,114,121,111,110,101,115,116 -,114,97,105,103,104,116,116,114,97,110,115,102,101,114,112,111,115,105,116,105, -118,101,112,114,111,100,117,99,101,100,104,101,114,105,116,97,103,101,115,104, -105,112,112,105,110,103,97,98,115,111,108,117,116,101,114,101,99,101,105,118,101 -,100,114,101,108,101,118,97,110,116,98,117,116,116,111,110,34,32,118,105,111,108 -,101,110,99,101,97,110,121,119,104,101,114,101,98,101,110,101,102,105,116,115, -108,97,117,110,99,104,101,100,114,101,99,101,110,116,108,121,97,108,108,105,97, -110,99,101,102,111,108,108,111,119,101,100,109,117,108,116,105,112,108,101,98, -117,108,108,101,116,105,110,105,110,99,108,117,100,101,100,111,99,99,117,114,114 -,101,100,105,110,116,101,114,110,97,108,36,40,116,104,105,115,41,46,114,101,112, -117,98,108,105,99,62,60,116,114,62,60,116,100,99,111,110,103,114,101,115,115,114 -,101,99,111,114,100,101,100,117,108,116,105,109,97,116,101,115,111,108,117,116, -105,111,110,60,117,108,32,105,100,61,34,100,105,115,99,111,118,101,114,72,111, -109,101,60,47,97,62,119,101,98,115,105,116,101,115,110,101,116,119,111,114,107, -115,97,108,116,104,111,117,103,104,101,110,116,105,114,101,108,121,109,101,109, -111,114,105,97,108,109,101,115,115,97,103,101,115,99,111,110,116,105,110,117,101 -,97,99,116,105,118,101,34,62,115,111,109,101,119,104,97,116,118,105,99,116,111, -114,105,97,87,101,115,116,101,114,110,32,32,116,105,116,108,101,61,34,76,111,99, -97,116,105,111,110,99,111,110,116,114,97,99,116,118,105,115,105,116,111,114,115, -68,111,119,110,108,111,97,100,119,105,116,104,111,117,116,32,114,105,103,104,116 -,34,62,10,109,101,97,115,117,114,101,115,119,105,100,116,104,32,61,32,118,97,114 -,105,97,98,108,101,105,110,118,111,108,118,101,100,118,105,114,103,105,110,105, -97,110,111,114,109,97,108,108,121,104,97,112,112,101,110,101,100,97,99,99,111, -117,110,116,115,115,116,97,110,100,105,110,103,110,97,116,105,111,110,97,108,82, -101,103,105,115,116,101,114,112,114,101,112,97,114,101,100,99,111,110,116,114, -111,108,115,97,99,99,117,114,97,116,101,98,105,114,116,104,100,97,121,115,116, -114,97,116,101,103,121,111,102,102,105,99,105,97,108,103,114,97,112,104,105,99, -115,99,114,105,109,105,110,97,108,112,111,115,115,105,98,108,121,99,111,110,115, -117,109,101,114,80,101,114,115,111,110,97,108,115,112,101,97,107,105,110,103,118 -,97,108,105,100,97,116,101,97,99,104,105,101,118,101,100,46,106,112,103,34,32,47 -,62,109,97,99,104,105,110,101,115,60,47,104,50,62,10,32,32,107,101,121,119,111, -114,100,115,102,114,105,101,110,100,108,121,98,114,111,116,104,101,114,115,99, -111,109,98,105,110,101,100,111,114,105,103,105,110,97,108,99,111,109,112,111,115 -,101,100,101,120,112,101,99,116,101,100,97,100,101,113,117,97,116,101,112,97,107 -,105,115,116,97,110,102,111,108,108,111,119,34,32,118,97,108,117,97,98,108,101, -60,47,108,97,98,101,108,62,114,101,108,97,116,105,118,101,98,114,105,110,103,105 -,110,103,105,110,99,114,101,97,115,101,103,111,118,101,114,110,111,114,112,108, -117,103,105,110,115,47,76,105,115,116,32,111,102,32,72,101,97,100,101,114,34,62, -34,32,110,97,109,101,61,34,32,40,38,113,117,111,116,59,103,114,97,100,117,97,116 -,101,60,47,104,101,97,100,62,10,99,111,109,109,101,114,99,101,109,97,108,97,121, -115,105,97,100,105,114,101,99,116,111,114,109,97,105,110,116,97,105,110,59,104, -101,105,103,104,116,58,115,99,104,101,100,117,108,101,99,104,97,110,103,105,110, -103,98,97,99,107,32,116,111,32,99,97,116,104,111,108,105,99,112,97,116,116,101, -114,110,115,99,111,108,111,114,58,32,35,103,114,101,97,116,101,115,116,115,117, -112,112,108,105,101,115,114,101,108,105,97,98,108,101,60,47,117,108,62,10,9,9,60 -,115,101,108,101,99,116,32,99,105,116,105,122,101,110,115,99,108,111,116,104,105 -,110,103,119,97,116,99,104,105,110,103,60,108,105,32,105,100,61,34,115,112,101, -99,105,102,105,99,99,97,114,114,121,105,110,103,115,101,110,116,101,110,99,101, -60,99,101,110,116,101,114,62,99,111,110,116,114,97,115,116,116,104,105,110,107, -105,110,103,99,97,116,99,104,40,101,41,115,111,117,116,104,101,114,110,77,105,99 -,104,97,101,108,32,109,101,114,99,104,97,110,116,99,97,114,111,117,115,101,108, -112,97,100,100,105,110,103,58,105,110,116,101,114,105,111,114,46,115,112,108,105 -,116,40,34,108,105,122,97,116,105,111,110,79,99,116,111,98,101,114,32,41,123,114 -,101,116,117,114,110,105,109,112,114,111,118,101,100,45,45,38,103,116,59,10,10, -99,111,118,101,114,97,103,101,99,104,97,105,114,109,97,110,46,112,110,103,34,32, -47,62,115,117,98,106,101,99,116,115,82,105,99,104,97,114,100,32,119,104,97,116, -101,118,101,114,112,114,111,98,97,98,108,121,114,101,99,111,118,101,114,121,98, -97,115,101,98,97,108,108,106,117,100,103,109,101,110,116,99,111,110,110,101,99, -116,46,46,99,115,115,34,32,47,62,32,119,101,98,115,105,116,101,114,101,112,111, -114,116,101,100,100,101,102,97,117,108,116,34,47,62,60,47,97,62,13,10,101,108, -101,99,116,114,105,99,115,99,111,116,108,97,110,100,99,114,101,97,116,105,111, -110,113,117,97,110,116,105,116,121,46,32,73,83,66,78,32,48,100,105,100,32,110, -111,116,32,105,110,115,116,97,110,99,101,45,115,101,97,114,99,104,45,34,32,108, -97,110,103,61,34,115,112,101,97,107,101,114,115,67,111,109,112,117,116,101,114, -99,111,110,116,97,105,110,115,97,114,99,104,105,118,101,115,109,105,110,105,115, -116,101,114,114,101,97,99,116,105,111,110,100,105,115,99,111,117,110,116,73,116, -97,108,105,97,110,111,99,114,105,116,101,114,105,97,115,116,114,111,110,103,108, -121,58,32,39,104,116,116,112,58,39,115,99,114,105,112,116,39,99,111,118,101,114, -105,110,103,111,102,102,101,114,105,110,103,97,112,112,101,97,114,101,100,66,114 -,105,116,105,115,104,32,105,100,101,110,116,105,102,121,70,97,99,101,98,111,111, -107,110,117,109,101,114,111,117,115,118,101,104,105,99,108,101,115,99,111,110,99 -,101,114,110,115,65,109,101,114,105,99,97,110,104,97,110,100,108,105,110,103,100 -,105,118,32,105,100,61,34,87,105,108,108,105,97,109,32,112,114,111,118,105,100, -101,114,95,99,111,110,116,101,110,116,97,99,99,117,114,97,99,121,115,101,99,116, -105,111,110,32,97,110,100,101,114,115,111,110,102,108,101,120,105,98,108,101,67, -97,116,101,103,111,114,121,108,97,119,114,101,110,99,101,60,115,99,114,105,112, -116,62,108,97,121,111,117,116,61,34,97,112,112,114,111,118,101,100,32,109,97,120 -,105,109,117,109,104,101,97,100,101,114,34,62,60,47,116,97,98,108,101,62,83,101, -114,118,105,99,101,115,104,97,109,105,108,116,111,110,99,117,114,114,101,110,116 -,32,99,97,110,97,100,105,97,110,99,104,97,110,110,101,108,115,47,116,104,101,109 -,101,115,47,47,97,114,116,105,99,108,101,111,112,116,105,111,110,97,108,112,111, -114,116,117,103,97,108,118,97,108,117,101,61,34,34,105,110,116,101,114,118,97, -108,119,105,114,101,108,101,115,115,101,110,116,105,116,108,101,100,97,103,101, -110,99,105,101,115,83,101,97,114,99,104,34,32,109,101,97,115,117,114,101,100,116 -,104,111,117,115,97,110,100,115,112,101,110,100,105,110,103,38,104,101,108,108, -105,112,59,110,101,119,32,68,97,116,101,34,32,115,105,122,101,61,34,112,97,103, -101,78,97,109,101,109,105,100,100,108,101,34,32,34,32,47,62,60,47,97,62,104,105, -100,100,101,110,34,62,115,101,113,117,101,110,99,101,112,101,114,115,111,110,97, -108,111,118,101,114,102,108,111,119,111,112,105,110,105,111,110,115,105,108,108, -105,110,111,105,115,108,105,110,107,115,34,62,10,9,60,116,105,116,108,101,62,118 -,101,114,115,105,111,110,115,115,97,116,117,114,100,97,121,116,101,114,109,105, -110,97,108,105,116,101,109,112,114,111,112,101,110,103,105,110,101,101,114,115, -101,99,116,105,111,110,115,100,101,115,105,103,110,101,114,112,114,111,112,111, -115,97,108,61,34,102,97,108,115,101,34,69,115,112,97,195,177,111,108,114,101,108 -,101,97,115,101,115,115,117,98,109,105,116,34,32,101,114,38,113,117,111,116,59, -97,100,100,105,116,105,111,110,115,121,109,112,116,111,109,115,111,114,105,101, -110,116,101,100,114,101,115,111,117,114,99,101,114,105,103,104,116,34,62,60,112, -108,101,97,115,117,114,101,115,116,97,116,105,111,110,115,104,105,115,116,111, -114,121,46,108,101,97,118,105,110,103,32,32,98,111,114,100,101,114,61,99,111,110 -,116,101,110,116,115,99,101,110,116,101,114,34,62,46,10,10,83,111,109,101,32,100 -,105,114,101,99,116,101,100,115,117,105,116,97,98,108,101,98,117,108,103,97,114, -105,97,46,115,104,111,119,40,41,59,100,101,115,105,103,110,101,100,71,101,110, -101,114,97,108,32,99,111,110,99,101,112,116,115,69,120,97,109,112,108,101,115, -119,105,108,108,105,97,109,115,79,114,105,103,105,110,97,108,34,62,60,115,112,97 -,110,62,115,101,97,114,99,104,34,62,111,112,101,114,97,116,111,114,114,101,113, -117,101,115,116,115,97,32,38,113,117,111,116,59,97,108,108,111,119,105,110,103, -68,111,99,117,109,101,110,116,114,101,118,105,115,105,111,110,46,32,10,10,84,104 -,101,32,121,111,117,114,115,101,108,102,67,111,110,116,97,99,116,32,109,105,99, -104,105,103,97,110,69,110,103,108,105,115,104,32,99,111,108,117,109,98,105,97, -112,114,105,111,114,105,116,121,112,114,105,110,116,105,110,103,100,114,105,110, -107,105,110,103,102,97,99,105,108,105,116,121,114,101,116,117,114,110,101,100,67 -,111,110,116,101,110,116,32,111,102,102,105,99,101,114,115,82,117,115,115,105,97 -,110,32,103,101,110,101,114,97,116,101,45,56,56,53,57,45,49,34,105,110,100,105, -99,97,116,101,102,97,109,105,108,105,97,114,32,113,117,97,108,105,116,121,109,97 -,114,103,105,110,58,48,32,99,111,110,116,101,110,116,118,105,101,119,112,111,114 -,116,99,111,110,116,97,99,116,115,45,116,105,116,108,101,34,62,112,111,114,116, -97,98,108,101,46,108,101,110,103,116,104,32,101,108,105,103,105,98,108,101,105, -110,118,111,108,118,101,115,97,116,108,97,110,116,105,99,111,110,108,111,97,100, -61,34,100,101,102,97,117,108,116,46,115,117,112,112,108,105,101,100,112,97,121, -109,101,110,116,115,103,108,111,115,115,97,114,121,10,10,65,102,116,101,114,32, -103,117,105,100,97,110,99,101,60,47,116,100,62,60,116,100,101,110,99,111,100,105 -,110,103,109,105,100,100,108,101,34,62,99,97,109,101,32,116,111,32,100,105,115, -112,108,97,121,115,115,99,111,116,116,105,115,104,106,111,110,97,116,104,97,110, -109,97,106,111,114,105,116,121,119,105,100,103,101,116,115,46,99,108,105,110,105 -,99,97,108,116,104,97,105,108,97,110,100,116,101,97,99,104,101,114,115,60,104, -101,97,100,62,10,9,97,102,102,101,99,116,101,100,115,117,112,112,111,114,116,115 -,112,111,105,110,116,101,114,59,116,111,83,116,114,105,110,103,60,47,115,109,97, -108,108,62,111,107,108,97,104,111,109,97,119,105,108,108,32,98,101,32,105,110, -118,101,115,116,111,114,48,34,32,97,108,116,61,34,104,111,108,105,100,97,121,115 -,82,101,115,111,117,114,99,101,108,105,99,101,110,115,101,100,32,40,119,104,105, -99,104,32,46,32,65,102,116,101,114,32,99,111,110,115,105,100,101,114,118,105,115 -,105,116,105,110,103,101,120,112,108,111,114,101,114,112,114,105,109,97,114,121, -32,115,101,97,114,99,104,34,32,97,110,100,114,111,105,100,34,113,117,105,99,107, -108,121,32,109,101,101,116,105,110,103,115,101,115,116,105,109,97,116,101,59,114 -,101,116,117,114,110,32,59,99,111,108,111,114,58,35,32,104,101,105,103,104,116, -61,97,112,112,114,111,118,97,108,44,32,38,113,117,111,116,59,32,99,104,101,99, -107,101,100,46,109,105,110,46,106,115,34,109,97,103,110,101,116,105,99,62,60,47, -97,62,60,47,104,102,111,114,101,99,97,115,116,46,32,87,104,105,108,101,32,116, -104,117,114,115,100,97,121,100,118,101,114,116,105,115,101,38,101,97,99,117,116, -101,59,104,97,115,67,108,97,115,115,101,118,97,108,117,97,116,101,111,114,100, -101,114,105,110,103,101,120,105,115,116,105,110,103,112,97,116,105,101,110,116, -115,32,79,110,108,105,110,101,32,99,111,108,111,114,97,100,111,79,112,116,105, -111,110,115,34,99,97,109,112,98,101,108,108,60,33,45,45,32,101,110,100,60,47,115 -,112,97,110,62,60,60,98,114,32,47,62,13,10,95,112,111,112,117,112,115,124,115,99 -,105,101,110,99,101,115,44,38,113,117,111,116,59,32,113,117,97,108,105,116,121, -32,87,105,110,100,111,119,115,32,97,115,115,105,103,110,101,100,104,101,105,103, -104,116,58,32,60,98,32,99,108,97,115,115,108,101,38,113,117,111,116,59,32,118,97 -,108,117,101,61,34,32,67,111,109,112,97,110,121,101,120,97,109,112,108,101,115, -60,105,102,114,97,109,101,32,98,101,108,105,101,118,101,115,112,114,101,115,101, -110,116,115,109,97,114,115,104,97,108,108,112,97,114,116,32,111,102,32,112,114, -111,112,101,114,108,121,41,46,10,10,84,104,101,32,116,97,120,111,110,111,109,121 -,109,117,99,104,32,111,102,32,60,47,115,112,97,110,62,10,34,32,100,97,116,97,45, -115,114,116,117,103,117,195,170,115,115,99,114,111,108,108,84,111,32,112,114,111 -,106,101,99,116,60,104,101,97,100,62,13,10,97,116,116,111,114,110,101,121,101, -109,112,104,97,115,105,115,115,112,111,110,115,111,114,115,102,97,110,99,121,98, -111,120,119,111,114,108,100,39,115,32,119,105,108,100,108,105,102,101,99,104,101 -,99,107,101,100,61,115,101,115,115,105,111,110,115,112,114,111,103,114,97,109, -109,112,120,59,102,111,110,116,45,32,80,114,111,106,101,99,116,106,111,117,114, -110,97,108,115,98,101,108,105,101,118,101,100,118,97,99,97,116,105,111,110,116, -104,111,109,112,115,111,110,108,105,103,104,116,105,110,103,97,110,100,32,116, -104,101,32,115,112,101,99,105,97,108,32,98,111,114,100,101,114,61,48,99,104,101, -99,107,105,110,103,60,47,116,98,111,100,121,62,60,98,117,116,116,111,110,32,67, -111,109,112,108,101,116,101,99,108,101,97,114,102,105,120,10,60,104,101,97,100, -62,10,97,114,116,105,99,108,101,32,60,115,101,99,116,105,111,110,102,105,110,100 -,105,110,103,115,114,111,108,101,32,105,110,32,112,111,112,117,108,97,114,32,32, -79,99,116,111,98,101,114,119,101,98,115,105,116,101,32,101,120,112,111,115,117, -114,101,117,115,101,100,32,116,111,32,32,99,104,97,110,103,101,115,111,112,101, -114,97,116,101,100,99,108,105,99,107,105,110,103,101,110,116,101,114,105,110,103 -,99,111,109,109,97,110,100,115,105,110,102,111,114,109,101,100,32,110,117,109,98 -,101,114,115,32,32,60,47,100,105,118,62,99,114,101,97,116,105,110,103,111,110,83 -,117,98,109,105,116,109,97,114,121,108,97,110,100,99,111,108,108,101,103,101,115 -,97,110,97,108,121,116,105,99,108,105,115,116,105,110,103,115,99,111,110,116,97, -99,116,46,108,111,103,103,101,100,73,110,97,100,118,105,115,111,114,121,115,105, -98,108,105,110,103,115,99,111,110,116,101,110,116,34,115,38,113,117,111,116,59, -41,115,46,32,84,104,105,115,32,112,97,99,107,97,103,101,115,99,104,101,99,107,98 -,111,120,115,117,103,103,101,115,116,115,112,114,101,103,110,97,110,116,116,111, -109,111,114,114,111,119,115,112,97,99,105,110,103,61,105,99,111,110,46,112,110, -103,106,97,112,97,110,101,115,101,99,111,100,101,98,97,115,101,98,117,116,116, -111,110,34,62,103,97,109,98,108,105,110,103,115,117,99,104,32,97,115,32,44,32, -119,104,105,108,101,32,60,47,115,112,97,110,62,32,109,105,115,115,111,117,114, -105,115,112,111,114,116,105,110,103,116,111,112,58,49,112,120,32,46,60,47,115, -112,97,110,62,116,101,110,115,105,111,110,115,119,105,100,116,104,61,34,50,108, -97,122,121,108,111,97,100,110,111,118,101,109,98,101,114,117,115,101,100,32,105, -110,32,104,101,105,103,104,116,61,34,99,114,105,112,116,34,62,10,38,110,98,115, -112,59,60,47,60,116,114,62,60,116,100,32,104,101,105,103,104,116,58,50,47,112, -114,111,100,117,99,116,99,111,117,110,116,114,121,32,105,110,99,108,117,100,101, -32,102,111,111,116,101,114,34,32,38,108,116,59,33,45,45,32,116,105,116,108,101, -34,62,60,47,106,113,117,101,114,121,46,60,47,102,111,114,109,62,10,40,231,174, -128,228,189,147,41,40,231,185,129,233,171,148,41,104,114,118,97,116,115,107,105, -105,116,97,108,105,97,110,111,114,111,109,195,162,110,196,131,116,195,188,114, -107,195,167,101,216,167,216,177,216,175,217,136,116,97,109,98,105,195,169,110, -110,111,116,105,99,105,97,115,109,101,110,115,97,106,101,115,112,101,114,115,111 -,110,97,115,100,101,114,101,99,104,111,115,110,97,99,105,111,110,97,108,115,101, -114,118,105,99,105,111,99,111,110,116,97,99,116,111,117,115,117,97,114,105,111, -115,112,114,111,103,114,97,109,97,103,111,98,105,101,114,110,111,101,109,112,114 -,101,115,97,115,97,110,117,110,99,105,111,115,118,97,108,101,110,99,105,97,99, -111,108,111,109,98,105,97,100,101,115,112,117,195,169,115,100,101,112,111,114, -116,101,115,112,114,111,121,101,99,116,111,112,114,111,100,117,99,116,111,112, -195,186,98,108,105,99,111,110,111,115,111,116,114,111,115,104,105,115,116,111, -114,105,97,112,114,101,115,101,110,116,101,109,105,108,108,111,110,101,115,109, -101,100,105,97,110,116,101,112,114,101,103,117,110,116,97,97,110,116,101,114,105 -,111,114,114,101,99,117,114,115,111,115,112,114,111,98,108,101,109,97,115,97,110 -,116,105,97,103,111,110,117,101,115,116,114,111,115,111,112,105,110,105,195,179, -110,105,109,112,114,105,109,105,114,109,105,101,110,116,114,97,115,97,109,195, -169,114,105,99,97,118,101,110,100,101,100,111,114,115,111,99,105,101,100,97,100, -114,101,115,112,101,99,116,111,114,101,97,108,105,122,97,114,114,101,103,105,115 -,116,114,111,112,97,108,97,98,114,97,115,105,110,116,101,114,195,169,115,101,110 -,116,111,110,99,101,115,101,115,112,101,99,105,97,108,109,105,101,109,98,114,111 -,115,114,101,97,108,105,100,97,100,99,195,179,114,100,111,98,97,122,97,114,97, -103,111,122,97,112,195,161,103,105,110,97,115,115,111,99,105,97,108,101,115,98, -108,111,113,117,101,97,114,103,101,115,116,105,195,179,110,97,108,113,117,105, -108,101,114,115,105,115,116,101,109,97,115,99,105,101,110,99,105,97,115,99,111, -109,112,108,101,116,111,118,101,114,115,105,195,179,110,99,111,109,112,108,101, -116,97,101,115,116,117,100,105,111,115,112,195,186,98,108,105,99,97,111,98,106, -101,116,105,118,111,97,108,105,99,97,110,116,101,98,117,115,99,97,100,111,114,99 -,97,110,116,105,100,97,100,101,110,116,114,97,100,97,115,97,99,99,105,111,110, -101,115,97,114,99,104,105,118,111,115,115,117,112,101,114,105,111,114,109,97,121 -,111,114,195,173,97,97,108,101,109,97,110,105,97,102,117,110,99,105,195,179,110, -195,186,108,116,105,109,111,115,104,97,99,105,101,110,100,111,97,113,117,101,108 -,108,111,115,101,100,105,99,105,195,179,110,102,101,114,110,97,110,100,111,97, -109,98,105,101,110,116,101,102,97,99,101,98,111,111,107,110,117,101,115,116,114, -97,115,99,108,105,101,110,116,101,115,112,114,111,99,101,115,111,115,98,97,115, -116,97,110,116,101,112,114,101,115,101,110,116,97,114,101,112,111,114,116,97,114 -,99,111,110,103,114,101,115,111,112,117,98,108,105,99,97,114,99,111,109,101,114, -99,105,111,99,111,110,116,114,97,116,111,106,195,179,118,101,110,101,115,100,105 -,115,116,114,105,116,111,116,195,169,99,110,105,99,97,99,111,110,106,117,110,116 -,111,101,110,101,114,103,195,173,97,116,114,97,98,97,106,97,114,97,115,116,117, -114,105,97,115,114,101,99,105,101,110,116,101,117,116,105,108,105,122,97,114,98, -111,108,101,116,195,173,110,115,97,108,118,97,100,111,114,99,111,114,114,101,99, -116,97,116,114,97,98,97,106,111,115,112,114,105,109,101,114,111,115,110,101,103, -111,99,105,111,115,108,105,98,101,114,116,97,100,100,101,116,97,108,108,101,115, -112,97,110,116,97,108,108,97,112,114,195,179,120,105,109,111,97,108,109,101,114, -195,173,97,97,110,105,109,97,108,101,115,113,117,105,195,169,110,101,115,99,111, -114,97,122,195,179,110,115,101,99,99,105,195,179,110,98,117,115,99,97,110,100, -111,111,112,99,105,111,110,101,115,101,120,116,101,114,105,111,114,99,111,110,99 -,101,112,116,111,116,111,100,97,118,195,173,97,103,97,108,101,114,195,173,97,101 -,115,99,114,105,98,105,114,109,101,100,105,99,105,110,97,108,105,99,101,110,99, -105,97,99,111,110,115,117,108,116,97,97,115,112,101,99,116,111,115,99,114,195, -173,116,105,99,97,100,195,179,108,97,114,101,115,106,117,115,116,105,99,105,97, -100,101,98,101,114,195,161,110,112,101,114,195,173,111,100,111,110,101,99,101, -115,105,116,97,109,97,110,116,101,110,101,114,112,101,113,117,101,195,177,111, -114,101,99,105,98,105,100,97,116,114,105,98,117,110,97,108,116,101,110,101,114, -105,102,101,99,97,110,99,105,195,179,110,99,97,110,97,114,105,97,115,100,101,115 -,99,97,114,103,97,100,105,118,101,114,115,111,115,109,97,108,108,111,114,99,97, -114,101,113,117,105,101,114,101,116,195,169,99,110,105,99,111,100,101,98,101,114 -,195,173,97,118,105,118,105,101,110,100,97,102,105,110,97,110,122,97,115,97,100, -101,108,97,110,116,101,102,117,110,99,105,111,110,97,99,111,110,115,101,106,111, -115,100,105,102,195,173,99,105,108,99,105,117,100,97,100,101,115,97,110,116,105, -103,117,97,115,97,118,97,110,122,97,100,97,116,195,169,114,109,105,110,111,117, -110,105,100,97,100,101,115,115,195,161,110,99,104,101,122,99,97,109,112,97,195, -177,97,115,111,102,116,111,110,105,99,114,101,118,105,115,116,97,115,99,111,110, -116,105,101,110,101,115,101,99,116,111,114,101,115,109,111,109,101,110,116,111, -115,102,97,99,117,108,116,97,100,99,114,195,169,100,105,116,111,100,105,118,101, -114,115,97,115,115,117,112,117,101,115,116,111,102,97,99,116,111,114,101,115,115 -,101,103,117,110,100,111,115,112,101,113,117,101,195,177,97,208,179,208,190,208, -180,208,176,208,181,209,129,208,187,208,184,208,181,209,129,209,130,209,140,208, -177,209,139,208,187,208,190,208,177,209,139,209,130,209,140,209,141,209,130,208, -190,208,188,208,149,209,129,208,187,208,184,209,130,208,190,208,179,208,190,208, -188,208,181,208,189,209,143,208,178,209,129,208,181,209,133,209,141,209,130,208, -190,208,185,208,180,208,176,208,182,208,181,208,177,209,139,208,187,208,184,208, -179,208,190,208,180,209,131,208,180,208,181,208,189,209,140,209,141,209,130,208, -190,209,130,208,177,209,139,208,187,208,176,209,129,208,181,208,177,209,143,208, -190,208,180,208,184,208,189,209,129,208,181,208,177,208,181,208,189,208,176,208, -180,208,190,209,129,208,176,208,185,209,130,209,132,208,190,209,130,208,190,208, -189,208,181,208,179,208,190,209,129,208,178,208,190,208,184,209,129,208,178,208, -190,208,185,208,184,208,179,209,128,209,139,209,130,208,190,208,182,208,181,208, -178,209,129,208,181,208,188,209,129,208,178,208,190,209,142,208,187,208,184,209, -136,209,140,209,141,209,130,208,184,209,133,208,191,208,190,208,186,208,176,208, -180,208,189,208,181,208,185,208,180,208,190,208,188,208,176,208,188,208,184,209, -128,208,176,208,187,208,184,208,177,208,190,209,130,208,181,208,188,209,131,209, -133,208,190,209,130,209,143,208,180,208,178,209,131,209,133,209,129,208,181,209, -130,208,184,208,187,209,142,208,180,208,184,208,180,208,181,208,187,208,190,208, -188,208,184,209,128,208,181,209,130,208,181,208,177,209,143,209,129,208,178,208, -190,208,181,208,178,208,184,208,180,208,181,209,135,208,181,208,179,208,190,209, -141,209,130,208,184,208,188,209,129,209,135,208,181,209,130,209,130,208,181,208, -188,209,139,209,134,208,181,208,189,209,139,209,129,209,130,208,176,208,187,208, -178,208,181,208,180,209,140,209,130,208,181,208,188,208,181,208,178,208,190,208, -180,209,139,209,130,208,181,208,177,208,181,208,178,209,139,209,136,208,181,208, -189,208,176,208,188,208,184,209,130,208,184,208,191,208,176,209,130,208,190,208, -188,209,131,208,191,209,128,208,176,208,178,208,187,208,184,209,134,208,176,208, -190,208,180,208,189,208,176,208,179,208,190,208,180,209,139,208,183,208,189,208, -176,209,142,208,188,208,190,208,179,209,131,208,180,209,128,209,131,208,179,208, -178,209,129,208,181,208,185,208,184,208,180,208,181,209,130,208,186,208,184,208, -189,208,190,208,190,208,180,208,189,208,190,208,180,208,181,208,187,208,176,208, -180,208,181,208,187,208,181,209,129,209,128,208,190,208,186,208,184,209,142,208, -189,209,143,208,178,208,181,209,129,209,140,208,149,209,129,209,130,209,140,209, -128,208,176,208,183,208,176,208,189,208,176,209,136,208,184,216,167,217,132,217, -132,217,135,216,167,217,132,216,170,217,138,216,172,217,133,217,138,216,185,216, -174,216,167,216,181,216,169,216,167,217,132,216,176,217,138,216,185,217,132,217, -138,217,135,216,172,216,175,217,138,216,175,216,167,217,132,216,162,217,134,216, -167,217,132,216,177,216,175,216,170,216,173,217,131,217,133,216,181,217,129,216, -173,216,169,217,131,216,167,217,134,216,170,216,167,217,132,217,132,217,138,217, -138,217,131,217,136,217,134,216,180,216,168,217,131,216,169,217,129,217,138,217, -135,216,167,216,168,217,134,216,167,216,170,216,173,217,136,216,167,216,161,216, -163,217,131,216,171,216,177,216,174,217,132,216,167,217,132,216,167,217,132,216, -173,216,168,216,175,217,132,217,138,217,132,216,175,216,177,217,136,216,179,216, -167,216,182,216,186,216,183,216,170,217,131,217,136,217,134,217,135,217,134,216, -167,217,131,216,179,216,167,216,173,216,169,217,134,216,167,216,175,217,138,216, -167,217,132,216,183,216,168,216,185,217,132,217,138,217,131,216,180,217,131,216, -177,216,167,217,138,217,133,217,131,217,134,217,133,217,134,217,135,216,167,216, -180,216,177,217,131,216,169,216,177,216,166,217,138,216,179,217,134,216,180,217, -138,216,183,217,133,216,167,216,176,216,167,216,167,217,132,217,129,217,134,216, -180,216,168,216,167,216,168,216,170,216,185,216,168,216,177,216,177,216,173,217, -133,216,169,217,131,216,167,217,129,216,169,217,138,217,130,217,136,217,132,217, -133,216,177,217,131,216,178,217,131,217,132,217,133,216,169,216,163,216,173,217, -133,216,175,217,130,217,132,216,168,217,138,217,138,216,185,217,134,217,138,216, -181,217,136,216,177,216,169,216,183,216,177,217,138,217,130,216,180,216,167,216, -177,217,131,216,172,217,136,216,167,217,132,216,163,216,174,216,177,217,137,217, -133,216,185,217,134,216,167,216,167,216,168,216,173,216,171,216,185,216,177,217, -136,216,182,216,168,216,180,217,131,217,132,217,133,216,179,216,172,217,132,216, -168,217,134,216,167,217,134,216,174,216,167,217,132,216,175,217,131,216,170,216, -167,216,168,217,131,217,132,217,138,216,169,216,168,216,175,217,136,217,134,216, -163,217,138,216,182,216,167,217,138,217,136,216,172,216,175,217,129,216,177,217, -138,217,130,217,131,216,170,216,168,216,170,216,163,217,129,216,182,217,132,217, -133,216,183,216,168,216,174,216,167,217,131,216,171,216,177,216,168,216,167,216, -177,217,131,216,167,217,129,216,182,217,132,216,167,216,173,217,132,217,137,217, -134,217,129,216,179,217,135,216,163,217,138,216,167,217,133,216,177,216,175,217, -136,216,175,216,163,217,134,217,135,216,167,216,175,217,138,217,134,216,167,216, -167,217,132,216,167,217,134,217,133,216,185,216,177,216,182,216,170,216,185,217, -132,217,133,216,175,216,167,216,174,217,132,217,133,217,133,217,131,217,134,0,0, -0,0,0,0,0,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,0,1,2,3,4,5,6,7,7,6, -5,4,3,2,1,0,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,16,17,18,19,20,21,22,23, -23,22,21,20,19,18,17,16,24,25,26,27,28,29,30,31,31,30,29,28,27,26,25,24,255,255, -255,255,0,0,0,0,0,0,0,0,255,255,255,255,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0, -3,0,0,0,255,255,0,1,0,0,0,1,0,0,255,255,0,1,0,0,0,8,0,8,0,8,0,8,0,0,0,1,0,2,0,3, -0,4,0,5,0,6,0,7,114,101,115,111,117,114,99,101,115,99,111,117,110,116,114,105, -101,115,113,117,101,115,116,105,111,110,115,101,113,117,105,112,109,101,110,116, -99,111,109,109,117,110,105,116,121,97,118,97,105,108,97,98,108,101,104,105,103, -104,108,105,103,104,116,68,84,68,47,120,104,116,109,108,109,97,114,107,101,116, -105,110,103,107,110,111,119,108,101,100,103,101,115,111,109,101,116,104,105,110, -103,99,111,110,116,97,105,110,101,114,100,105,114,101,99,116,105,111,110,115,117 -,98,115,99,114,105,98,101,97,100,118,101,114,116,105,115,101,99,104,97,114,97,99 -,116,101,114,34,32,118,97,108,117,101,61,34,60,47,115,101,108,101,99,116,62,65, -117,115,116,114,97,108,105,97,34,32,99,108,97,115,115,61,34,115,105,116,117,97, -116,105,111,110,97,117,116,104,111,114,105,116,121,102,111,108,108,111,119,105, -110,103,112,114,105,109,97,114,105,108,121,111,112,101,114,97,116,105,111,110,99 -,104,97,108,108,101,110,103,101,100,101,118,101,108,111,112,101,100,97,110,111, -110,121,109,111,117,115,102,117,110,99,116,105,111,110,32,102,117,110,99,116,105 -,111,110,115,99,111,109,112,97,110,105,101,115,115,116,114,117,99,116,117,114, -101,97,103,114,101,101,109,101,110,116,34,32,116,105,116,108,101,61,34,112,111, -116,101,110,116,105,97,108,101,100,117,99,97,116,105,111,110,97,114,103,117,109, -101,110,116,115,115,101,99,111,110,100,97,114,121,99,111,112,121,114,105,103,104 -,116,108,97,110,103,117,97,103,101,115,101,120,99,108,117,115,105,118,101,99,111 -,110,100,105,116,105,111,110,60,47,102,111,114,109,62,13,10,115,116,97,116,101, -109,101,110,116,97,116,116,101,110,116,105,111,110,66,105,111,103,114,97,112,104 -,121,125,32,101,108,115,101,32,123,10,115,111,108,117,116,105,111,110,115,119, -104,101,110,32,116,104,101,32,65,110,97,108,121,116,105,99,115,116,101,109,112, -108,97,116,101,115,100,97,110,103,101,114,111,117,115,115,97,116,101,108,108,105 -,116,101,100,111,99,117,109,101,110,116,115,112,117,98,108,105,115,104,101,114, -105,109,112,111,114,116,97,110,116,112,114,111,116,111,116,121,112,101,105,110, -102,108,117,101,110,99,101,38,114,97,113,117,111,59,60,47,101,102,102,101,99,116 -,105,118,101,103,101,110,101,114,97,108,108,121,116,114,97,110,115,102,111,114, -109,98,101,97,117,116,105,102,117,108,116,114,97,110,115,112,111,114,116,111,114 -,103,97,110,105,122,101,100,112,117,98,108,105,115,104,101,100,112,114,111,109, -105,110,101,110,116,117,110,116,105,108,32,116,104,101,116,104,117,109,98,110,97 -,105,108,78,97,116,105,111,110,97,108,32,46,102,111,99,117,115,40,41,59,111,118, -101,114,32,116,104,101,32,109,105,103,114,97,116,105,111,110,97,110,110,111,117, -110,99,101,100,102,111,111,116,101,114,34,62,10,101,120,99,101,112,116,105,111, -110,108,101,115,115,32,116,104,97,110,101,120,112,101,110,115,105,118,101,102, -111,114,109,97,116,105,111,110,102,114,97,109,101,119,111,114,107,116,101,114, -114,105,116,111,114,121,110,100,105,99,97,116,105,111,110,99,117,114,114,101,110 -,116,108,121,99,108,97,115,115,78,97,109,101,99,114,105,116,105,99,105,115,109, -116,114,97,100,105,116,105,111,110,101,108,115,101,119,104,101,114,101,65,108, -101,120,97,110,100,101,114,97,112,112,111,105,110,116,101,100,109,97,116,101,114 -,105,97,108,115,98,114,111,97,100,99,97,115,116,109,101,110,116,105,111,110,101, -100,97,102,102,105,108,105,97,116,101,60,47,111,112,116,105,111,110,62,116,114, -101,97,116,109,101,110,116,100,105,102,102,101,114,101,110,116,47,100,101,102,97 -,117,108,116,46,80,114,101,115,105,100,101,110,116,111,110,99,108,105,99,107,61, -34,98,105,111,103,114,97,112,104,121,111,116,104,101,114,119,105,115,101,112,101 -,114,109,97,110,101,110,116,70,114,97,110,195,167,97,105,115,72,111,108,108,121, -119,111,111,100,101,120,112,97,110,115,105,111,110,115,116,97,110,100,97,114,100 -,115,60,47,115,116,121,108,101,62,10,114,101,100,117,99,116,105,111,110,68,101, -99,101,109,98,101,114,32,112,114,101,102,101,114,114,101,100,67,97,109,98,114, -105,100,103,101,111,112,112,111,110,101,110,116,115,66,117,115,105,110,101,115, -115,32,99,111,110,102,117,115,105,111,110,62,10,60,116,105,116,108,101,62,112, -114,101,115,101,110,116,101,100,101,120,112,108,97,105,110,101,100,100,111,101, -115,32,110,111,116,32,119,111,114,108,100,119,105,100,101,105,110,116,101,114, -102,97,99,101,112,111,115,105,116,105,111,110,115,110,101,119,115,112,97,112,101 -,114,60,47,116,97,98,108,101,62,10,109,111,117,110,116,97,105,110,115,108,105, -107,101,32,116,104,101,32,101,115,115,101,110,116,105,97,108,102,105,110,97,110, -99,105,97,108,115,101,108,101,99,116,105,111,110,97,99,116,105,111,110,61,34,47, -97,98,97,110,100,111,110,101,100,69,100,117,99,97,116,105,111,110,112,97,114,115 -,101,73,110,116,40,115,116,97,98,105,108,105,116,121,117,110,97,98,108,101,32, -116,111,60,47,116,105,116,108,101,62,10,114,101,108,97,116,105,111,110,115,78, -111,116,101,32,116,104,97,116,101,102,102,105,99,105,101,110,116,112,101,114,102 -,111,114,109,101,100,116,119,111,32,121,101,97,114,115,83,105,110,99,101,32,116, -104,101,116,104,101,114,101,102,111,114,101,119,114,97,112,112,101,114,34,62,97, -108,116,101,114,110,97,116,101,105,110,99,114,101,97,115,101,100,66,97,116,116, -108,101,32,111,102,112,101,114,99,101,105,118,101,100,116,114,121,105,110,103,32 -,116,111,110,101,99,101,115,115,97,114,121,112,111,114,116,114,97,121,101,100, -101,108,101,99,116,105,111,110,115,69,108,105,122,97,98,101,116,104,60,47,105, -102,114,97,109,101,62,100,105,115,99,111,118,101,114,121,105,110,115,117,114,97, -110,99,101,115,46,108,101,110,103,116,104,59,108,101,103,101,110,100,97,114,121, -71,101,111,103,114,97,112,104,121,99,97,110,100,105,100,97,116,101,99,111,114, -112,111,114,97,116,101,115,111,109,101,116,105,109,101,115,115,101,114,118,105, -99,101,115,46,105,110,104,101,114,105,116,101,100,60,47,115,116,114,111,110,103, -62,67,111,109,109,117,110,105,116,121,114,101,108,105,103,105,111,117,115,108, -111,99,97,116,105,111,110,115,67,111,109,109,105,116,116,101,101,98,117,105,108, -100,105,110,103,115,116,104,101,32,119,111,114,108,100,110,111,32,108,111,110, -103,101,114,98,101,103,105,110,110,105,110,103,114,101,102,101,114,101,110,99, -101,99,97,110,110,111,116,32,98,101,102,114,101,113,117,101,110,99,121,116,121, -112,105,99,97,108,108,121,105,110,116,111,32,116,104,101,32,114,101,108,97,116, -105,118,101,59,114,101,99,111,114,100,105,110,103,112,114,101,115,105,100,101, -110,116,105,110,105,116,105,97,108,108,121,116,101,99,104,110,105,113,117,101, -116,104,101,32,111,116,104,101,114,105,116,32,99,97,110,32,98,101,101,120,105, -115,116,101,110,99,101,117,110,100,101,114,108,105,110,101,116,104,105,115,32, -116,105,109,101,116,101,108,101,112,104,111,110,101,105,116,101,109,115,99,111, -112,101,112,114,97,99,116,105,99,101,115,97,100,118,97,110,116,97,103,101,41,59, -114,101,116,117,114,110,32,70,111,114,32,111,116,104,101,114,112,114,111,118,105 -,100,105,110,103,100,101,109,111,99,114,97,99,121,98,111,116,104,32,116,104,101, -32,101,120,116,101,110,115,105,118,101,115,117,102,102,101,114,105,110,103,115, -117,112,112,111,114,116,101,100,99,111,109,112,117,116,101,114,115,32,102,117, -110,99,116,105,111,110,112,114,97,99,116,105,99,97,108,115,97,105,100,32,116,104 -,97,116,105,116,32,109,97,121,32,98,101,69,110,103,108,105,115,104,60,47,102,114 -,111,109,32,116,104,101,32,115,99,104,101,100,117,108,101,100,100,111,119,110, -108,111,97,100,115,60,47,108,97,98,101,108,62,10,115,117,115,112,101,99,116,101, -100,109,97,114,103,105,110,58,32,48,115,112,105,114,105,116,117,97,108,60,47,104 -,101,97,100,62,10,10,109,105,99,114,111,115,111,102,116,103,114,97,100,117,97, -108,108,121,100,105,115,99,117,115,115,101,100,104,101,32,98,101,99,97,109,101, -101,120,101,99,117,116,105,118,101,106,113,117,101,114,121,46,106,115,104,111, -117,115,101,104,111,108,100,99,111,110,102,105,114,109,101,100,112,117,114,99, -104,97,115,101,100,108,105,116,101,114,97,108,108,121,100,101,115,116,114,111, -121,101,100,117,112,32,116,111,32,116,104,101,118,97,114,105,97,116,105,111,110, -114,101,109,97,105,110,105,110,103,105,116,32,105,115,32,110,111,116,99,101,110, -116,117,114,105,101,115,74,97,112,97,110,101,115,101,32,97,109,111,110,103,32, -116,104,101,99,111,109,112,108,101,116,101,100,97,108,103,111,114,105,116,104, -109,105,110,116,101,114,101,115,116,115,114,101,98,101,108,108,105,111,110,117, -110,100,101,102,105,110,101,100,101,110,99,111,117,114,97,103,101,114,101,115, -105,122,97,98,108,101,105,110,118,111,108,118,105,110,103,115,101,110,115,105, -116,105,118,101,117,110,105,118,101,114,115,97,108,112,114,111,118,105,115,105, -111,110,40,97,108,116,104,111,117,103,104,102,101,97,116,117,114,105,110,103,99, -111,110,100,117,99,116,101,100,41,44,32,119,104,105,99,104,32,99,111,110,116,105 -,110,117,101,100,45,104,101,97,100,101,114,34,62,70,101,98,114,117,97,114,121,32 -,110,117,109,101,114,111,117,115,32,111,118,101,114,102,108,111,119,58,99,111, -109,112,111,110,101,110,116,102,114,97,103,109,101,110,116,115,101,120,99,101, -108,108,101,110,116,99,111,108,115,112,97,110,61,34,116,101,99,104,110,105,99,97 -,108,110,101,97,114,32,116,104,101,32,65,100,118,97,110,99,101,100,32,115,111, -117,114,99,101,32,111,102,101,120,112,114,101,115,115,101,100,72,111,110,103,32, -75,111,110,103,32,70,97,99,101,98,111,111,107,109,117,108,116,105,112,108,101,32 -,109,101,99,104,97,110,105,115,109,101,108,101,118,97,116,105,111,110,111,102, -102,101,110,115,105,118,101,60,47,102,111,114,109,62,10,9,115,112,111,110,115, -111,114,101,100,100,111,99,117,109,101,110,116,46,111,114,32,38,113,117,111,116, -59,116,104,101,114,101,32,97,114,101,116,104,111,115,101,32,119,104,111,109,111, -118,101,109,101,110,116,115,112,114,111,99,101,115,115,101,115,100,105,102,102, -105,99,117,108,116,115,117,98,109,105,116,116,101,100,114,101,99,111,109,109,101 -,110,100,99,111,110,118,105,110,99,101,100,112,114,111,109,111,116,105,110,103, -34,32,119,105,100,116,104,61,34,46,114,101,112,108,97,99,101,40,99,108,97,115, -115,105,99,97,108,99,111,97,108,105,116,105,111,110,104,105,115,32,102,105,114, -115,116,100,101,99,105,115,105,111,110,115,97,115,115,105,115,116,97,110,116,105 -,110,100,105,99,97,116,101,100,101,118,111,108,117,116,105,111,110,45,119,114,97 -,112,112,101,114,34,101,110,111,117,103,104,32,116,111,97,108,111,110,103,32,116 -,104,101,100,101,108,105,118,101,114,101,100,45,45,62,13,10,60,33,45,45,65,109, -101,114,105,99,97,110,32,112,114,111,116,101,99,116,101,100,78,111,118,101,109, -98,101,114,32,60,47,115,116,121,108,101,62,60,102,117,114,110,105,116,117,114, -101,73,110,116,101,114,110,101,116,32,32,111,110,98,108,117,114,61,34,115,117, -115,112,101,110,100,101,100,114,101,99,105,112,105,101,110,116,98,97,115,101,100 -,32,111,110,32,77,111,114,101,111,118,101,114,44,97,98,111,108,105,115,104,101, -100,99,111,108,108,101,99,116,101,100,119,101,114,101,32,109,97,100,101,101,109, -111,116,105,111,110,97,108,101,109,101,114,103,101,110,99,121,110,97,114,114,97, -116,105,118,101,97,100,118,111,99,97,116,101,115,112,120,59,98,111,114,100,101, -114,99,111,109,109,105,116,116,101,100,100,105,114,61,34,108,116,114,34,101,109, -112,108,111,121,101,101,115,114,101,115,101,97,114,99,104,46,32,115,101,108,101, -99,116,101,100,115,117,99,99,101,115,115,111,114,99,117,115,116,111,109,101,114, -115,100,105,115,112,108,97,121,101,100,83,101,112,116,101,109,98,101,114,97,100, -100,67,108,97,115,115,40,70,97,99,101,98,111,111,107,32,115,117,103,103,101,115, -116,101,100,97,110,100,32,108,97,116,101,114,111,112,101,114,97,116,105,110,103, -101,108,97,98,111,114,97,116,101,83,111,109,101,116,105,109,101,115,73,110,115, -116,105,116,117,116,101,99,101,114,116,97,105,110,108,121,105,110,115,116,97,108 -,108,101,100,102,111,108,108,111,119,101,114,115,74,101,114,117,115,97,108,101, -109,116,104,101,121,32,104,97,118,101,99,111,109,112,117,116,105,110,103,103,101 -,110,101,114,97,116,101,100,112,114,111,118,105,110,99,101,115,103,117,97,114,97 -,110,116,101,101,97,114,98,105,116,114,97,114,121,114,101,99,111,103,110,105,122 -,101,119,97,110,116,101,100,32,116,111,112,120,59,119,105,100,116,104,58,116,104 -,101,111,114,121,32,111,102,98,101,104,97,118,105,111,117,114,87,104,105,108,101 -,32,116,104,101,101,115,116,105,109,97,116,101,100,98,101,103,97,110,32,116,111, -32,105,116,32,98,101,99,97,109,101,109,97,103,110,105,116,117,100,101,109,117, -115,116,32,104,97,118,101,109,111,114,101,32,116,104,97,110,68,105,114,101,99, -116,111,114,121,101,120,116,101,110,115,105,111,110,115,101,99,114,101,116,97, -114,121,110,97,116,117,114,97,108,108,121,111,99,99,117,114,114,105,110,103,118, -97,114,105,97,98,108,101,115,103,105,118,101,110,32,116,104,101,112,108,97,116, -102,111,114,109,46,60,47,108,97,98,101,108,62,60,102,97,105,108,101,100,32,116, -111,99,111,109,112,111,117,110,100,115,107,105,110,100,115,32,111,102,32,115,111 -,99,105,101,116,105,101,115,97,108,111,110,103,115,105,100,101,32,45,45,38,103, -116,59,10,10,115,111,117,116,104,119,101,115,116,116,104,101,32,114,105,103,104, -116,114,97,100,105,97,116,105,111,110,109,97,121,32,104,97,118,101,32,117,110, -101,115,99,97,112,101,40,115,112,111,107,101,110,32,105,110,34,32,104,114,101, -102,61,34,47,112,114,111,103,114,97,109,109,101,111,110,108,121,32,116,104,101, -32,99,111,109,101,32,102,114,111,109,100,105,114,101,99,116,111,114,121,98,117, -114,105,101,100,32,105,110,97,32,115,105,109,105,108,97,114,116,104,101,121,32, -119,101,114,101,60,47,102,111,110,116,62,60,47,78,111,114,119,101,103,105,97,110 -,115,112,101,99,105,102,105,101,100,112,114,111,100,117,99,105,110,103,112,97, -115,115,101,110,103,101,114,40,110,101,119,32,68,97,116,101,116,101,109,112,111, -114,97,114,121,102,105,99,116,105,111,110,97,108,65,102,116,101,114,32,116,104, -101,101,113,117,97,116,105,111,110,115,100,111,119,110,108,111,97,100,46,114,101 -,103,117,108,97,114,108,121,100,101,118,101,108,111,112,101,114,97,98,111,118, -101,32,116,104,101,108,105,110,107,101,100,32,116,111,112,104,101,110,111,109, -101,110,97,112,101,114,105,111,100,32,111,102,116,111,111,108,116,105,112,34,62, -115,117,98,115,116,97,110,99,101,97,117,116,111,109,97,116,105,99,97,115,112,101 -,99,116,32,111,102,65,109,111,110,103,32,116,104,101,99,111,110,110,101,99,116, -101,100,101,115,116,105,109,97,116,101,115,65,105,114,32,70,111,114,99,101,115, -121,115,116,101,109,32,111,102,111,98,106,101,99,116,105,118,101,105,109,109,101 -,100,105,97,116,101,109,97,107,105,110,103,32,105,116,112,97,105,110,116,105,110 -,103,115,99,111,110,113,117,101,114,101,100,97,114,101,32,115,116,105,108,108, -112,114,111,99,101,100,117,114,101,103,114,111,119,116,104,32,111,102,104,101,97 -,100,101,100,32,98,121,69,117,114,111,112,101,97,110,32,100,105,118,105,115,105, -111,110,115,109,111,108,101,99,117,108,101,115,102,114,97,110,99,104,105,115,101 -,105,110,116,101,110,116,105,111,110,97,116,116,114,97,99,116,101,100,99,104,105 -,108,100,104,111,111,100,97,108,115,111,32,117,115,101,100,100,101,100,105,99,97 -,116,101,100,115,105,110,103,97,112,111,114,101,100,101,103,114,101,101,32,111, -102,102,97,116,104,101,114,32,111,102,99,111,110,102,108,105,99,116,115,60,47,97 -,62,60,47,112,62,10,99,97,109,101,32,102,114,111,109,119,101,114,101,32,117,115, -101,100,110,111,116,101,32,116,104,97,116,114,101,99,101,105,118,105,110,103,69, -120,101,99,117,116,105,118,101,101,118,101,110,32,109,111,114,101,97,99,99,101, -115,115,32,116,111,99,111,109,109,97,110,100,101,114,80,111,108,105,116,105,99, -97,108,109,117,115,105,99,105,97,110,115,100,101,108,105,99,105,111,117,115,112, -114,105,115,111,110,101,114,115,97,100,118,101,110,116,32,111,102,85,84,70,45,56 -,34,32,47,62,60,33,91,67,68,65,84,65,91,34,62,67,111,110,116,97,99,116,83,111, -117,116,104,101,114,110,32,98,103,99,111,108,111,114,61,34,115,101,114,105,101, -115,32,111,102,46,32,73,116,32,119,97,115,32,105,110,32,69,117,114,111,112,101, -112,101,114,109,105,116,116,101,100,118,97,108,105,100,97,116,101,46,97,112,112, -101,97,114,105,110,103,111,102,102,105,99,105,97,108,115,115,101,114,105,111,117 -,115,108,121,45,108,97,110,103,117,97,103,101,105,110,105,116,105,97,116,101,100 -,101,120,116,101,110,100,105,110,103,108,111,110,103,45,116,101,114,109,105,110, -102,108,97,116,105,111,110,115,117,99,104,32,116,104,97,116,103,101,116,67,111, -111,107,105,101,109,97,114,107,101,100,32,98,121,60,47,98,117,116,116,111,110,62 -,105,109,112,108,101,109,101,110,116,98,117,116,32,105,116,32,105,115,105,110,99 -,114,101,97,115,101,115,100,111,119,110,32,116,104,101,32,114,101,113,117,105, -114,105,110,103,100,101,112,101,110,100,101,110,116,45,45,62,10,60,33,45,45,32, -105,110,116,101,114,118,105,101,119,87,105,116,104,32,116,104,101,32,99,111,112, -105,101,115,32,111,102,99,111,110,115,101,110,115,117,115,119,97,115,32,98,117, -105,108,116,86,101,110,101,122,117,101,108,97,40,102,111,114,109,101,114,108,121 -,116,104,101,32,115,116,97,116,101,112,101,114,115,111,110,110,101,108,115,116, -114,97,116,101,103,105,99,102,97,118,111,117,114,32,111,102,105,110,118,101,110, -116,105,111,110,87,105,107,105,112,101,100,105,97,99,111,110,116,105,110,101,110 -,116,118,105,114,116,117,97,108,108,121,119,104,105,99,104,32,119,97,115,112,114 -,105,110,99,105,112,108,101,67,111,109,112,108,101,116,101,32,105,100,101,110, -116,105,99,97,108,115,104,111,119,32,116,104,97,116,112,114,105,109,105,116,105, -118,101,97,119,97,121,32,102,114,111,109,109,111,108,101,99,117,108,97,114,112, -114,101,99,105,115,101,108,121,100,105,115,115,111,108,118,101,100,85,110,100, -101,114,32,116,104,101,118,101,114,115,105,111,110,61,34,62,38,110,98,115,112,59 -,60,47,73,116,32,105,115,32,116,104,101,32,84,104,105,115,32,105,115,32,119,105, -108,108,32,104,97,118,101,111,114,103,97,110,105,115,109,115,115,111,109,101,32, -116,105,109,101,70,114,105,101,100,114,105,99,104,119,97,115,32,102,105,114,115, -116,116,104,101,32,111,110,108,121,32,102,97,99,116,32,116,104,97,116,102,111, -114,109,32,105,100,61,34,112,114,101,99,101,100,105,110,103,84,101,99,104,110, -105,99,97,108,112,104,121,115,105,99,105,115,116,111,99,99,117,114,115,32,105, -110,110,97,118,105,103,97,116,111,114,115,101,99,116,105,111,110,34,62,115,112, -97,110,32,105,100,61,34,115,111,117,103,104,116,32,116,111,98,101,108,111,119,32 -,116,104,101,115,117,114,118,105,118,105,110,103,125,60,47,115,116,121,108,101, -62,104,105,115,32,100,101,97,116,104,97,115,32,105,110,32,116,104,101,99,97,117, -115,101,100,32,98,121,112,97,114,116,105,97,108,108,121,101,120,105,115,116,105, -110,103,32,117,115,105,110,103,32,116,104,101,119,97,115,32,103,105,118,101,110, -97,32,108,105,115,116,32,111,102,108,101,118,101,108,115,32,111,102,110,111,116, -105,111,110,32,111,102,79,102,102,105,99,105,97,108,32,100,105,115,109,105,115, -115,101,100,115,99,105,101,110,116,105,115,116,114,101,115,101,109,98,108,101, -115,100,117,112,108,105,99,97,116,101,101,120,112,108,111,115,105,118,101,114, -101,99,111,118,101,114,101,100,97,108,108,32,111,116,104,101,114,103,97,108,108, -101,114,105,101,115,123,112,97,100,100,105,110,103,58,112,101,111,112,108,101,32 -,111,102,114,101,103,105,111,110,32,111,102,97,100,100,114,101,115,115,101,115, -97,115,115,111,99,105,97,116,101,105,109,103,32,97,108,116,61,34,105,110,32,109, -111,100,101,114,110,115,104,111,117,108,100,32,98,101,109,101,116,104,111,100,32 -,111,102,114,101,112,111,114,116,105,110,103,116,105,109,101,115,116,97,109,112, -110,101,101,100,101,100,32,116,111,116,104,101,32,71,114,101,97,116,114,101,103, -97,114,100,105,110,103,115,101,101,109,101,100,32,116,111,118,105,101,119,101, -100,32,97,115,105,109,112,97,99,116,32,111,110,105,100,101,97,32,116,104,97,116, -116,104,101,32,87,111,114,108,100,104,101,105,103,104,116,32,111,102,101,120,112 -,97,110,100,105,110,103,84,104,101,115,101,32,97,114,101,99,117,114,114,101,110, -116,34,62,99,97,114,101,102,117,108,108,121,109,97,105,110,116,97,105,110,115,99 -,104,97,114,103,101,32,111,102,67,108,97,115,115,105,99,97,108,97,100,100,114, -101,115,115,101,100,112,114,101,100,105,99,116,101,100,111,119,110,101,114,115, -104,105,112,60,100,105,118,32,105,100,61,34,114,105,103,104,116,34,62,13,10,114, -101,115,105,100,101,110,99,101,108,101,97,118,101,32,116,104,101,99,111,110,116, -101,110,116,34,62,97,114,101,32,111,102,116,101,110,32,32,125,41,40,41,59,13,10, -112,114,111,98,97,98,108,121,32,80,114,111,102,101,115,115,111,114,45,98,117,116 -,116,111,110,34,32,114,101,115,112,111,110,100,101,100,115,97,121,115,32,116,104 -,97,116,104,97,100,32,116,111,32,98,101,112,108,97,99,101,100,32,105,110,72,117, -110,103,97,114,105,97,110,115,116,97,116,117,115,32,111,102,115,101,114,118,101, -115,32,97,115,85,110,105,118,101,114,115,97,108,101,120,101,99,117,116,105,111, -110,97,103,103,114,101,103,97,116,101,102,111,114,32,119,104,105,99,104,105,110, -102,101,99,116,105,111,110,97,103,114,101,101,100,32,116,111,104,111,119,101,118 -,101,114,44,32,112,111,112,117,108,97,114,34,62,112,108,97,99,101,100,32,111,110 -,99,111,110,115,116,114,117,99,116,101,108,101,99,116,111,114,97,108,115,121,109 -,98,111,108,32,111,102,105,110,99,108,117,100,105,110,103,114,101,116,117,114, -110,32,116,111,97,114,99,104,105,116,101,99,116,67,104,114,105,115,116,105,97, -110,112,114,101,118,105,111,117,115,32,108,105,118,105,110,103,32,105,110,101,97 -,115,105,101,114,32,116,111,112,114,111,102,101,115,115,111,114,10,38,108,116,59 -,33,45,45,32,101,102,102,101,99,116,32,111,102,97,110,97,108,121,116,105,99,115, -119,97,115,32,116,97,107,101,110,119,104,101,114,101,32,116,104,101,116,111,111, -107,32,111,118,101,114,98,101,108,105,101,102,32,105,110,65,102,114,105,107,97, -97,110,115,97,115,32,102,97,114,32,97,115,112,114,101,118,101,110,116,101,100, -119,111,114,107,32,119,105,116,104,97,32,115,112,101,99,105,97,108,60,102,105, -101,108,100,115,101,116,67,104,114,105,115,116,109,97,115,82,101,116,114,105,101 -,118,101,100,10,10,73,110,32,116,104,101,32,98,97,99,107,32,105,110,116,111,110, -111,114,116,104,101,97,115,116,109,97,103,97,122,105,110,101,115,62,60,115,116, -114,111,110,103,62,99,111,109,109,105,116,116,101,101,103,111,118,101,114,110, -105,110,103,103,114,111,117,112,115,32,111,102,115,116,111,114,101,100,32,105, -110,101,115,116,97,98,108,105,115,104,97,32,103,101,110,101,114,97,108,105,116, -115,32,102,105,114,115,116,116,104,101,105,114,32,111,119,110,112,111,112,117, -108,97,116,101,100,97,110,32,111,98,106,101,99,116,67,97,114,105,98,98,101,97, -110,97,108,108,111,119,32,116,104,101,100,105,115,116,114,105,99,116,115,119,105 -,115,99,111,110,115,105,110,108,111,99,97,116,105,111,110,46,59,32,119,105,100, -116,104,58,32,105,110,104,97,98,105,116,101,100,83,111,99,105,97,108,105,115,116 -,74,97,110,117,97,114,121,32,49,60,47,102,111,111,116,101,114,62,115,105,109,105 -,108,97,114,108,121,99,104,111,105,99,101,32,111,102,116,104,101,32,115,97,109, -101,32,115,112,101,99,105,102,105,99,32,98,117,115,105,110,101,115,115,32,84,104 -,101,32,102,105,114,115,116,46,108,101,110,103,116,104,59,32,100,101,115,105,114 -,101,32,116,111,100,101,97,108,32,119,105,116,104,115,105,110,99,101,32,116,104, -101,117,115,101,114,65,103,101,110,116,99,111,110,99,101,105,118,101,100,105,110 -,100,101,120,46,112,104,112,97,115,32,38,113,117,111,116,59,101,110,103,97,103, -101,32,105,110,114,101,99,101,110,116,108,121,44,102,101,119,32,121,101,97,114, -115,119,101,114,101,32,97,108,115,111,10,60,104,101,97,100,62,10,60,101,100,105, -116,101,100,32,98,121,97,114,101,32,107,110,111,119,110,99,105,116,105,101,115, -32,105,110,97,99,99,101,115,115,107,101,121,99,111,110,100,101,109,110,101,100, -97,108,115,111,32,104,97,118,101,115,101,114,118,105,99,101,115,44,102,97,109, -105,108,121,32,111,102,83,99,104,111,111,108,32,111,102,99,111,110,118,101,114, -116,101,100,110,97,116,117,114,101,32,111,102,32,108,97,110,103,117,97,103,101, -109,105,110,105,115,116,101,114,115,60,47,111,98,106,101,99,116,62,116,104,101, -114,101,32,105,115,32,97,32,112,111,112,117,108,97,114,115,101,113,117,101,110, -99,101,115,97,100,118,111,99,97,116,101,100,84,104,101,121,32,119,101,114,101,97 -,110,121,32,111,116,104,101,114,108,111,99,97,116,105,111,110,61,101,110,116,101 -,114,32,116,104,101,109,117,99,104,32,109,111,114,101,114,101,102,108,101,99,116 -,101,100,119,97,115,32,110,97,109,101,100,111,114,105,103,105,110,97,108,32,97, -32,116,121,112,105,99,97,108,119,104,101,110,32,116,104,101,121,101,110,103,105, -110,101,101,114,115,99,111,117,108,100,32,110,111,116,114,101,115,105,100,101, -110,116,115,119,101,100,110,101,115,100,97,121,116,104,101,32,116,104,105,114, -100,32,112,114,111,100,117,99,116,115,74,97,110,117,97,114,121,32,50,119,104,97, -116,32,116,104,101,121,97,32,99,101,114,116,97,105,110,114,101,97,99,116,105,111 -,110,115,112,114,111,99,101,115,115,111,114,97,102,116,101,114,32,104,105,115, -116,104,101,32,108,97,115,116,32,99,111,110,116,97,105,110,101,100,34,62,60,47, -100,105,118,62,10,60,47,97,62,60,47,116,100,62,100,101,112,101,110,100,32,111, -110,115,101,97,114,99,104,34,62,10,112,105,101,99,101,115,32,111,102,99,111,109, -112,101,116,105,110,103,82,101,102,101,114,101,110,99,101,116,101,110,110,101, -115,115,101,101,119,104,105,99,104,32,104,97,115,32,118,101,114,115,105,111,110, -61,60,47,115,112,97,110,62,32,60,60,47,104,101,97,100,101,114,62,103,105,118,101 -,115,32,116,104,101,104,105,115,116,111,114,105,97,110,118,97,108,117,101,61,34, -34,62,112,97,100,100,105,110,103,58,48,118,105,101,119,32,116,104,97,116,116,111 -,103,101,116,104,101,114,44,116,104,101,32,109,111,115,116,32,119,97,115,32,102, -111,117,110,100,115,117,98,115,101,116,32,111,102,97,116,116,97,99,107,32,111, -110,99,104,105,108,100,114,101,110,44,112,111,105,110,116,115,32,111,102,112,101 -,114,115,111,110,97,108,32,112,111,115,105,116,105,111,110,58,97,108,108,101,103 -,101,100,108,121,67,108,101,118,101,108,97,110,100,119,97,115,32,108,97,116,101, -114,97,110,100,32,97,102,116,101,114,97,114,101,32,103,105,118,101,110,119,97, -115,32,115,116,105,108,108,115,99,114,111,108,108,105,110,103,100,101,115,105, -103,110,32,111,102,109,97,107,101,115,32,116,104,101,109,117,99,104,32,108,101, -115,115,65,109,101,114,105,99,97,110,115,46,10,10,65,102,116,101,114,32,44,32,98 -,117,116,32,116,104,101,77,117,115,101,117,109,32,111,102,108,111,117,105,115, -105,97,110,97,40,102,114,111,109,32,116,104,101,109,105,110,110,101,115,111,116, -97,112,97,114,116,105,99,108,101,115,97,32,112,114,111,99,101,115,115,68,111,109 -,105,110,105,99,97,110,118,111,108,117,109,101,32,111,102,114,101,116,117,114, -110,105,110,103,100,101,102,101,110,115,105,118,101,48,48,112,120,124,114,105, -103,104,109,97,100,101,32,102,114,111,109,109,111,117,115,101,111,118,101,114,34 -,32,115,116,121,108,101,61,34,115,116,97,116,101,115,32,111,102,40,119,104,105, -99,104,32,105,115,99,111,110,116,105,110,117,101,115,70,114,97,110,99,105,115,99 -,111,98,117,105,108,100,105,110,103,32,119,105,116,104,111,117,116,32,97,119,105 -,116,104,32,115,111,109,101,119,104,111,32,119,111,117,108,100,97,32,102,111,114 -,109,32,111,102,97,32,112,97,114,116,32,111,102,98,101,102,111,114,101,32,105, -116,107,110,111,119,110,32,97,115,32,32,83,101,114,118,105,99,101,115,108,111,99 -,97,116,105,111,110,32,97,110,100,32,111,102,116,101,110,109,101,97,115,117,114, -105,110,103,97,110,100,32,105,116,32,105,115,112,97,112,101,114,98,97,99,107,118 -,97,108,117,101,115,32,111,102,13,10,60,116,105,116,108,101,62,61,32,119,105,110 -,100,111,119,46,100,101,116,101,114,109,105,110,101,101,114,38,113,117,111,116, -59,32,112,108,97,121,101,100,32,98,121,97,110,100,32,101,97,114,108,121,60,47,99 -,101,110,116,101,114,62,102,114,111,109,32,116,104,105,115,116,104,101,32,116, -104,114,101,101,112,111,119,101,114,32,97,110,100,111,102,32,38,113,117,111,116, -59,105,110,110,101,114,72,84,77,76,60,97,32,104,114,101,102,61,34,121,58,105,110 -,108,105,110,101,59,67,104,117,114,99,104,32,111,102,116,104,101,32,101,118,101, -110,116,118,101,114,121,32,104,105,103,104,111,102,102,105,99,105,97,108,32,45, -104,101,105,103,104,116,58,32,99,111,110,116,101,110,116,61,34,47,99,103,105,45, -98,105,110,47,116,111,32,99,114,101,97,116,101,97,102,114,105,107,97,97,110,115, -101,115,112,101,114,97,110,116,111,102,114,97,110,195,167,97,105,115,108,97,116, -118,105,101,197,161,117,108,105,101,116,117,118,105,197,179,196,140,101,197,161, -116,105,110,97,196,141,101,197,161,116,105,110,97,224,185,132,224,184,151,224, -184,162,230,151,165,230,156,172,232,170,158,231,174,128,228,189,147,229,173,151, -231,185,129,233,171,148,229,173,151,237,149,156,234,181,173,236,150,180,228,184, -186,228,187,128,228,185,136,232,174,161,231,174,151,230,156,186,231,172,148,232, -174,176,230,156,172,232,168,142,232,171,150,229,141,128,230,156,141,229,138,161, -229,153,168,228,186,146,232,129,148,231,189,145,230,136,191,229,156,176,228,186, -167,228,191,177,228,185,144,233,131,168,229,135,186,231,137,136,231,164,190,230, -142,146,232,161,140,230,166,156,233,131,168,232,144,189,230,160,188,232,191,155, -228,184,128,230,173,165,230,148,175,228,187,152,229,174,157,233,170,140,232,175, -129,231,160,129,229,167,148,229,145,152,228,188,154,230,149,176,230,141,174,229, -186,147,230,182,136,232,180,185,232,128,133,229,138,158,229,133,172,229,174,164, -232,174,168,232,174,186,229,140,186,230,183,177,229,156,179,229,184,130,230,146, -173,230,148,190,229,153,168,229,140,151,228,186,172,229,184,130,229,164,167,229, -173,166,231,148,159,232,182,138,230,157,165,232,182,138,231,174,161,231,144,134, -229,145,152,228,191,161,230,129,175,231,189,145,115,101,114,118,105,99,105,111, -115,97,114,116,195,173,99,117,108,111,97,114,103,101,110,116,105,110,97,98,97, -114,99,101,108,111,110,97,99,117,97,108,113,117,105,101,114,112,117,98,108,105, -99,97,100,111,112,114,111,100,117,99,116,111,115,112,111,108,195,173,116,105,99, -97,114,101,115,112,117,101,115,116,97,119,105,107,105,112,101,100,105,97,115,105 -,103,117,105,101,110,116,101,98,195,186,115,113,117,101,100,97,99,111,109,117, -110,105,100,97,100,115,101,103,117,114,105,100,97,100,112,114,105,110,99,105,112 -,97,108,112,114,101,103,117,110,116,97,115,99,111,110,116,101,110,105,100,111, -114,101,115,112,111,110,100,101,114,118,101,110,101,122,117,101,108,97,112,114, -111,98,108,101,109,97,115,100,105,99,105,101,109,98,114,101,114,101,108,97,99, -105,195,179,110,110,111,118,105,101,109,98,114,101,115,105,109,105,108,97,114, -101,115,112,114,111,121,101,99,116,111,115,112,114,111,103,114,97,109,97,115,105 -,110,115,116,105,116,117,116,111,97,99,116,105,118,105,100,97,100,101,110,99,117 -,101,110,116,114,97,101,99,111,110,111,109,195,173,97,105,109,195,161,103,101, -110,101,115,99,111,110,116,97,99,116,97,114,100,101,115,99,97,114,103,97,114,110 -,101,99,101,115,97,114,105,111,97,116,101,110,99,105,195,179,110,116,101,108,195 -,169,102,111,110,111,99,111,109,105,115,105,195,179,110,99,97,110,99,105,111,110 -,101,115,99,97,112,97,99,105,100,97,100,101,110,99,111,110,116,114,97,114,97,110 -,195,161,108,105,115,105,115,102,97,118,111,114,105,116,111,115,116,195,169,114, -109,105,110,111,115,112,114,111,118,105,110,99,105,97,101,116,105,113,117,101, -116,97,115,101,108,101,109,101,110,116,111,115,102,117,110,99,105,111,110,101, -115,114,101,115,117,108,116,97,100,111,99,97,114,195,161,99,116,101,114,112,114, -111,112,105,101,100,97,100,112,114,105,110,99,105,112,105,111,110,101,99,101,115 -,105,100,97,100,109,117,110,105,99,105,112,97,108,99,114,101,97,99,105,195,179, -110,100,101,115,99,97,114,103,97,115,112,114,101,115,101,110,99,105,97,99,111, -109,101,114,99,105,97,108,111,112,105,110,105,111,110,101,115,101,106,101,114,99 -,105,99,105,111,101,100,105,116,111,114,105,97,108,115,97,108,97,109,97,110,99, -97,103,111,110,122,195,161,108,101,122,100,111,99,117,109,101,110,116,111,112, -101,108,195,173,99,117,108,97,114,101,99,105,101,110,116,101,115,103,101,110,101 -,114,97,108,101,115,116,97,114,114,97,103,111,110,97,112,114,195,161,99,116,105, -99,97,110,111,118,101,100,97,100,101,115,112,114,111,112,117,101,115,116,97,112, -97,99,105,101,110,116,101,115,116,195,169,99,110,105,99,97,115,111,98,106,101, -116,105,118,111,115,99,111,110,116,97,99,116,111,115,224,164,174,224,165,135,224 -,164,130,224,164,178,224,164,191,224,164,143,224,164,185,224,165,136,224,164,130 -,224,164,151,224,164,175,224,164,190,224,164,184,224,164,190,224,164,165,224,164 -,143,224,164,181,224,164,130,224,164,176,224,164,185,224,165,135,224,164,149,224 -,165,139,224,164,136,224,164,149,224,165,129,224,164,155,224,164,176,224,164,185 -,224,164,190,224,164,172,224,164,190,224,164,166,224,164,149,224,164,185,224,164 -,190,224,164,184,224,164,173,224,165,128,224,164,185,224,165,129,224,164,143,224 -,164,176,224,164,185,224,165,128,224,164,174,224,165,136,224,164,130,224,164,166 -,224,164,191,224,164,168,224,164,172,224,164,190,224,164,164,100,105,112,108,111 -,100,111,99,115,224,164,184,224,164,174,224,164,175,224,164,176,224,165,130,224, -164,170,224,164,168,224,164,190,224,164,174,224,164,170,224,164,164,224,164,190, -224,164,171,224,164,191,224,164,176,224,164,148,224,164,184,224,164,164,224,164, -164,224,164,176,224,164,185,224,164,178,224,165,139,224,164,151,224,164,185,224, -165,129,224,164,134,224,164,172,224,164,190,224,164,176,224,164,166,224,165,135, -224,164,182,224,164,185,224,165,129,224,164,136,224,164,150,224,165,135,224,164, -178,224,164,175,224,164,166,224,164,191,224,164,149,224,164,190,224,164,174,224, -164,181,224,165,135,224,164,172,224,164,164,224,165,128,224,164,168,224,164,172, -224,165,128,224,164,154,224,164,174,224,165,140,224,164,164,224,164,184,224,164, -190,224,164,178,224,164,178,224,165,135,224,164,150,224,164,156,224,165,137,224, -164,172,224,164,174,224,164,166,224,164,166,224,164,164,224,164,165,224,164,190, -224,164,168,224,164,185,224,165,128,224,164,182,224,164,185,224,164,176,224,164, -133,224,164,178,224,164,151,224,164,149,224,164,173,224,165,128,224,164,168,224, -164,151,224,164,176,224,164,170,224,164,190,224,164,184,224,164,176,224,164,190, -224,164,164,224,164,149,224,164,191,224,164,143,224,164,137,224,164,184,224,165, -135,224,164,151,224,164,175,224,165,128,224,164,185,224,165,130,224,164,129,224, -164,134,224,164,151,224,165,135,224,164,159,224,165,128,224,164,174,224,164,150, -224,165,139,224,164,156,224,164,149,224,164,190,224,164,176,224,164,133,224,164, -173,224,165,128,224,164,151,224,164,175,224,165,135,224,164,164,224,165,129,224, -164,174,224,164,181,224,165,139,224,164,159,224,164,166,224,165,135,224,164,130, -224,164,133,224,164,151,224,164,176,224,164,144,224,164,184,224,165,135,224,164, -174,224,165,135,224,164,178,224,164,178,224,164,151,224,164,190,224,164,185,224, -164,190,224,164,178,224,164,138,224,164,170,224,164,176,224,164,154,224,164,190, -224,164,176,224,164,144,224,164,184,224,164,190,224,164,166,224,165,135,224,164, -176,224,164,156,224,164,191,224,164,184,224,164,166,224,164,191,224,164,178,224, -164,172,224,164,130,224,164,166,224,164,172,224,164,168,224,164,190,224,164,185, -224,165,130,224,164,130,224,164,178,224,164,190,224,164,150,224,164,156,224,165, -128,224,164,164,224,164,172,224,164,159,224,164,168,224,164,174,224,164,191,224, -164,178,224,164,135,224,164,184,224,165,135,224,164,134,224,164,168,224,165,135, -224,164,168,224,164,175,224,164,190,224,164,149,224,165,129,224,164,178,224,164, -178,224,165,137,224,164,151,224,164,173,224,164,190,224,164,151,224,164,176,224, -165,135,224,164,178,224,164,156,224,164,151,224,164,185,224,164,176,224,164,190, -224,164,174,224,164,178,224,164,151,224,165,135,224,164,170,224,165,135,224,164, -156,224,164,185,224,164,190,224,164,165,224,164,135,224,164,184,224,165,128,224, -164,184,224,164,185,224,165,128,224,164,149,224,164,178,224,164,190,224,164,160, -224,165,128,224,164,149,224,164,185,224,164,190,224,164,129,224,164,166,224,165, -130,224,164,176,224,164,164,224,164,185,224,164,164,224,164,184,224,164,190,224, -164,164,224,164,175,224,164,190,224,164,166,224,164,134,224,164,175,224,164,190, -224,164,170,224,164,190,224,164,149,224,164,149,224,165,140,224,164,168,224,164, -182,224,164,190,224,164,174,224,164,166,224,165,135,224,164,150,224,164,175,224, -164,185,224,165,128,224,164,176,224,164,190,224,164,175,224,164,150,224,165,129, -224,164,166,224,164,178,224,164,151,224,165,128,99,97,116,101,103,111,114,105, -101,115,101,120,112,101,114,105,101,110,99,101,60,47,116,105,116,108,101,62,13, -10,67,111,112,121,114,105,103,104,116,32,106,97,118,97,115,99,114,105,112,116,99 -,111,110,100,105,116,105,111,110,115,101,118,101,114,121,116,104,105,110,103,60, -112,32,99,108,97,115,115,61,34,116,101,99,104,110,111,108,111,103,121,98,97,99, -107,103,114,111,117,110,100,60,97,32,99,108,97,115,115,61,34,109,97,110,97,103, -101,109,101,110,116,38,99,111,112,121,59,32,50,48,49,106,97,118,97,83,99,114,105 -,112,116,99,104,97,114,97,99,116,101,114,115,98,114,101,97,100,99,114,117,109,98 -,116,104,101,109,115,101,108,118,101,115,104,111,114,105,122,111,110,116,97,108, -103,111,118,101,114,110,109,101,110,116,67,97,108,105,102,111,114,110,105,97,97, -99,116,105,118,105,116,105,101,115,100,105,115,99,111,118,101,114,101,100,78,97, -118,105,103,97,116,105,111,110,116,114,97,110,115,105,116,105,111,110,99,111,110 -,110,101,99,116,105,111,110,110,97,118,105,103,97,116,105,111,110,97,112,112,101 -,97,114,97,110,99,101,60,47,116,105,116,108,101,62,60,109,99,104,101,99,107,98, -111,120,34,32,116,101,99,104,110,105,113,117,101,115,112,114,111,116,101,99,116, -105,111,110,97,112,112,97,114,101,110,116,108,121,97,115,32,119,101,108,108,32, -97,115,117,110,116,39,44,32,39,85,65,45,114,101,115,111,108,117,116,105,111,110, -111,112,101,114,97,116,105,111,110,115,116,101,108,101,118,105,115,105,111,110, -116,114,97,110,115,108,97,116,101,100,87,97,115,104,105,110,103,116,111,110,110, -97,118,105,103,97,116,111,114,46,32,61,32,119,105,110,100,111,119,46,105,109,112 -,114,101,115,115,105,111,110,38,108,116,59,98,114,38,103,116,59,108,105,116,101, -114,97,116,117,114,101,112,111,112,117,108,97,116,105,111,110,98,103,99,111,108, -111,114,61,34,35,101,115,112,101,99,105,97,108,108,121,32,99,111,110,116,101,110 -,116,61,34,112,114,111,100,117,99,116,105,111,110,110,101,119,115,108,101,116, -116,101,114,112,114,111,112,101,114,116,105,101,115,100,101,102,105,110,105,116, -105,111,110,108,101,97,100,101,114,115,104,105,112,84,101,99,104,110,111,108,111 -,103,121,80,97,114,108,105,97,109,101,110,116,99,111,109,112,97,114,105,115,111, -110,117,108,32,99,108,97,115,115,61,34,46,105,110,100,101,120,79,102,40,34,99, -111,110,99,108,117,115,105,111,110,100,105,115,99,117,115,115,105,111,110,99,111 -,109,112,111,110,101,110,116,115,98,105,111,108,111,103,105,99,97,108,82,101,118 -,111,108,117,116,105,111,110,95,99,111,110,116,97,105,110,101,114,117,110,100, -101,114,115,116,111,111,100,110,111,115,99,114,105,112,116,62,60,112,101,114,109 -,105,115,115,105,111,110,101,97,99,104,32,111,116,104,101,114,97,116,109,111,115 -,112,104,101,114,101,32,111,110,102,111,99,117,115,61,34,60,102,111,114,109,32, -105,100,61,34,112,114,111,99,101,115,115,105,110,103,116,104,105,115,46,118,97, -108,117,101,103,101,110,101,114,97,116,105,111,110,67,111,110,102,101,114,101, -110,99,101,115,117,98,115,101,113,117,101,110,116,119,101,108,108,45,107,110,111 -,119,110,118,97,114,105,97,116,105,111,110,115,114,101,112,117,116,97,116,105, -111,110,112,104,101,110,111,109,101,110,111,110,100,105,115,99,105,112,108,105, -110,101,108,111,103,111,46,112,110,103,34,32,40,100,111,99,117,109,101,110,116, -44,98,111,117,110,100,97,114,105,101,115,101,120,112,114,101,115,115,105,111,110 -,115,101,116,116,108,101,109,101,110,116,66,97,99,107,103,114,111,117,110,100, -111,117,116,32,111,102,32,116,104,101,101,110,116,101,114,112,114,105,115,101,40 -,34,104,116,116,112,115,58,34,32,117,110,101,115,99,97,112,101,40,34,112,97,115, -115,119,111,114,100,34,32,100,101,109,111,99,114,97,116,105,99,60,97,32,104,114, -101,102,61,34,47,119,114,97,112,112,101,114,34,62,10,109,101,109,98,101,114,115, -104,105,112,108,105,110,103,117,105,115,116,105,99,112,120,59,112,97,100,100,105 -,110,103,112,104,105,108,111,115,111,112,104,121,97,115,115,105,115,116,97,110, -99,101,117,110,105,118,101,114,115,105,116,121,102,97,99,105,108,105,116,105,101 -,115,114,101,99,111,103,110,105,122,101,100,112,114,101,102,101,114,101,110,99, -101,105,102,32,40,116,121,112,101,111,102,109,97,105,110,116,97,105,110,101,100, -118,111,99,97,98,117,108,97,114,121,104,121,112,111,116,104,101,115,105,115,46, -115,117,98,109,105,116,40,41,59,38,97,109,112,59,110,98,115,112,59,97,110,110, -111,116,97,116,105,111,110,98,101,104,105,110,100,32,116,104,101,70,111,117,110, -100,97,116,105,111,110,112,117,98,108,105,115,104,101,114,34,97,115,115,117,109, -112,116,105,111,110,105,110,116,114,111,100,117,99,101,100,99,111,114,114,117, -112,116,105,111,110,115,99,105,101,110,116,105,115,116,115,101,120,112,108,105, -99,105,116,108,121,105,110,115,116,101,97,100,32,111,102,100,105,109,101,110,115 -,105,111,110,115,32,111,110,67,108,105,99,107,61,34,99,111,110,115,105,100,101, -114,101,100,100,101,112,97,114,116,109,101,110,116,111,99,99,117,112,97,116,105, -111,110,115,111,111,110,32,97,102,116,101,114,105,110,118,101,115,116,109,101, -110,116,112,114,111,110,111,117,110,99,101,100,105,100,101,110,116,105,102,105, -101,100,101,120,112,101,114,105,109,101,110,116,77,97,110,97,103,101,109,101,110 -,116,103,101,111,103,114,97,112,104,105,99,34,32,104,101,105,103,104,116,61,34, -108,105,110,107,32,114,101,108,61,34,46,114,101,112,108,97,99,101,40,47,100,101, -112,114,101,115,115,105,111,110,99,111,110,102,101,114,101,110,99,101,112,117, -110,105,115,104,109,101,110,116,101,108,105,109,105,110,97,116,101,100,114,101, -115,105,115,116,97,110,99,101,97,100,97,112,116,97,116,105,111,110,111,112,112, -111,115,105,116,105,111,110,119,101,108,108,32,107,110,111,119,110,115,117,112, -112,108,101,109,101,110,116,100,101,116,101,114,109,105,110,101,100,104,49,32,99 -,108,97,115,115,61,34,48,112,120,59,109,97,114,103,105,110,109,101,99,104,97,110 -,105,99,97,108,115,116,97,116,105,115,116,105,99,115,99,101,108,101,98,114,97, -116,101,100,71,111,118,101,114,110,109,101,110,116,10,10,68,117,114,105,110,103, -32,116,100,101,118,101,108,111,112,101,114,115,97,114,116,105,102,105,99,105,97, -108,101,113,117,105,118,97,108,101,110,116,111,114,105,103,105,110,97,116,101, -100,67,111,109,109,105,115,115,105,111,110,97,116,116,97,99,104,109,101,110,116, -60,115,112,97,110,32,105,100,61,34,116,104,101,114,101,32,119,101,114,101,78,101 -,100,101,114,108,97,110,100,115,98,101,121,111,110,100,32,116,104,101,114,101, -103,105,115,116,101,114,101,100,106,111,117,114,110,97,108,105,115,116,102,114, -101,113,117,101,110,116,108,121,97,108,108,32,111,102,32,116,104,101,108,97,110, -103,61,34,101,110,34,32,60,47,115,116,121,108,101,62,13,10,97,98,115,111,108,117 -,116,101,59,32,115,117,112,112,111,114,116,105,110,103,101,120,116,114,101,109, -101,108,121,32,109,97,105,110,115,116,114,101,97,109,60,47,115,116,114,111,110, -103,62,32,112,111,112,117,108,97,114,105,116,121,101,109,112,108,111,121,109,101 -,110,116,60,47,116,97,98,108,101,62,13,10,32,99,111,108,115,112,97,110,61,34,60, -47,102,111,114,109,62,10,32,32,99,111,110,118,101,114,115,105,111,110,97,98,111, -117,116,32,116,104,101,32,60,47,112,62,60,47,100,105,118,62,105,110,116,101,103, -114,97,116,101,100,34,32,108,97,110,103,61,34,101,110,80,111,114,116,117,103,117 -,101,115,101,115,117,98,115,116,105,116,117,116,101,105,110,100,105,118,105,100, -117,97,108,105,109,112,111,115,115,105,98,108,101,109,117,108,116,105,109,101, -100,105,97,97,108,109,111,115,116,32,97,108,108,112,120,32,115,111,108,105,100, -32,35,97,112,97,114,116,32,102,114,111,109,115,117,98,106,101,99,116,32,116,111, -105,110,32,69,110,103,108,105,115,104,99,114,105,116,105,99,105,122,101,100,101, -120,99,101,112,116,32,102,111,114,103,117,105,100,101,108,105,110,101,115,111, -114,105,103,105,110,97,108,108,121,114,101,109,97,114,107,97,98,108,101,116,104, -101,32,115,101,99,111,110,100,104,50,32,99,108,97,115,115,61,34,60,97,32,116,105 -,116,108,101,61,34,40,105,110,99,108,117,100,105,110,103,112,97,114,97,109,101, -116,101,114,115,112,114,111,104,105,98,105,116,101,100,61,32,34,104,116,116,112, -58,47,47,100,105,99,116,105,111,110,97,114,121,112,101,114,99,101,112,116,105, -111,110,114,101,118,111,108,117,116,105,111,110,102,111,117,110,100,97,116,105, -111,110,112,120,59,104,101,105,103,104,116,58,115,117,99,99,101,115,115,102,117, -108,115,117,112,112,111,114,116,101,114,115,109,105,108,108,101,110,110,105,117, -109,104,105,115,32,102,97,116,104,101,114,116,104,101,32,38,113,117,111,116,59, -110,111,45,114,101,112,101,97,116,59,99,111,109,109,101,114,99,105,97,108,105, -110,100,117,115,116,114,105,97,108,101,110,99,111,117,114,97,103,101,100,97,109, -111,117,110,116,32,111,102,32,117,110,111,102,102,105,99,105,97,108,101,102,102, -105,99,105,101,110,99,121,82,101,102,101,114,101,110,99,101,115,99,111,111,114, -100,105,110,97,116,101,100,105,115,99,108,97,105,109,101,114,101,120,112,101,100 -,105,116,105,111,110,100,101,118,101,108,111,112,105,110,103,99,97,108,99,117, -108,97,116,101,100,115,105,109,112,108,105,102,105,101,100,108,101,103,105,116, -105,109,97,116,101,115,117,98,115,116,114,105,110,103,40,48,34,32,99,108,97,115, -115,61,34,99,111,109,112,108,101,116,101,108,121,105,108,108,117,115,116,114,97, -116,101,102,105,118,101,32,121,101,97,114,115,105,110,115,116,114,117,109,101, -110,116,80,117,98,108,105,115,104,105,110,103,49,34,32,99,108,97,115,115,61,34, -112,115,121,99,104,111,108,111,103,121,99,111,110,102,105,100,101,110,99,101,110 -,117,109,98,101,114,32,111,102,32,97,98,115,101,110,99,101,32,111,102,102,111,99 -,117,115,101,100,32,111,110,106,111,105,110,101,100,32,116,104,101,115,116,114, -117,99,116,117,114,101,115,112,114,101,118,105,111,117,115,108,121,62,60,47,105, -102,114,97,109,101,62,111,110,99,101,32,97,103,97,105,110,98,117,116,32,114,97, -116,104,101,114,105,109,109,105,103,114,97,110,116,115,111,102,32,99,111,117,114 -,115,101,44,97,32,103,114,111,117,112,32,111,102,76,105,116,101,114,97,116,117, -114,101,85,110,108,105,107,101,32,116,104,101,60,47,97,62,38,110,98,115,112,59, -10,102,117,110,99,116,105,111,110,32,105,116,32,119,97,115,32,116,104,101,67,111 -,110,118,101,110,116,105,111,110,97,117,116,111,109,111,98,105,108,101,80,114, -111,116,101,115,116,97,110,116,97,103,103,114,101,115,115,105,118,101,97,102,116 -,101,114,32,116,104,101,32,83,105,109,105,108,97,114,108,121,44,34,32,47,62,60, -47,100,105,118,62,99,111,108,108,101,99,116,105,111,110,13,10,102,117,110,99,116 -,105,111,110,118,105,115,105,98,105,108,105,116,121,116,104,101,32,117,115,101, -32,111,102,118,111,108,117,110,116,101,101,114,115,97,116,116,114,97,99,116,105, -111,110,117,110,100,101,114,32,116,104,101,32,116,104,114,101,97,116,101,110,101 -,100,42,60,33,91,67,68,65,84,65,91,105,109,112,111,114,116,97,110,99,101,105,110 -,32,103,101,110,101,114,97,108,116,104,101,32,108,97,116,116,101,114,60,47,102, -111,114,109,62,10,60,47,46,105,110,100,101,120,79,102,40,39,105,32,61,32,48,59, -32,105,32,60,100,105,102,102,101,114,101,110,99,101,100,101,118,111,116,101,100, -32,116,111,116,114,97,100,105,116,105,111,110,115,115,101,97,114,99,104,32,102, -111,114,117,108,116,105,109,97,116,101,108,121,116,111,117,114,110,97,109,101, -110,116,97,116,116,114,105,98,117,116,101,115,115,111,45,99,97,108,108,101,100, -32,125,10,60,47,115,116,121,108,101,62,101,118,97,108,117,97,116,105,111,110,101 -,109,112,104,97,115,105,122,101,100,97,99,99,101,115,115,105,98,108,101,60,47, -115,101,99,116,105,111,110,62,115,117,99,99,101,115,115,105,111,110,97,108,111, -110,103,32,119,105,116,104,77,101,97,110,119,104,105,108,101,44,105,110,100,117, -115,116,114,105,101,115,60,47,97,62,60,98,114,32,47,62,104,97,115,32,98,101,99, -111,109,101,97,115,112,101,99,116,115,32,111,102,84,101,108,101,118,105,115,105, -111,110,115,117,102,102,105,99,105,101,110,116,98,97,115,107,101,116,98,97,108, -108,98,111,116,104,32,115,105,100,101,115,99,111,110,116,105,110,117,105,110,103 -,97,110,32,97,114,116,105,99,108,101,60,105,109,103,32,97,108,116,61,34,97,100, -118,101,110,116,117,114,101,115,104,105,115,32,109,111,116,104,101,114,109,97, -110,99,104,101,115,116,101,114,112,114,105,110,99,105,112,108,101,115,112,97,114 -,116,105,99,117,108,97,114,99,111,109,109,101,110,116,97,114,121,101,102,102,101 -,99,116,115,32,111,102,100,101,99,105,100,101,100,32,116,111,34,62,60,115,116, -114,111,110,103,62,112,117,98,108,105,115,104,101,114,115,74,111,117,114,110,97, -108,32,111,102,100,105,102,102,105,99,117,108,116,121,102,97,99,105,108,105,116, -97,116,101,97,99,99,101,112,116,97,98,108,101,115,116,121,108,101,46,99,115,115, -34,9,102,117,110,99,116,105,111,110,32,105,110,110,111,118,97,116,105,111,110,62 -,67,111,112,121,114,105,103,104,116,115,105,116,117,97,116,105,111,110,115,119, -111,117,108,100,32,104,97,118,101,98,117,115,105,110,101,115,115,101,115,68,105, -99,116,105,111,110,97,114,121,115,116,97,116,101,109,101,110,116,115,111,102,116 -,101,110,32,117,115,101,100,112,101,114,115,105,115,116,101,110,116,105,110,32, -74,97,110,117,97,114,121,99,111,109,112,114,105,115,105,110,103,60,47,116,105, -116,108,101,62,10,9,100,105,112,108,111,109,97,116,105,99,99,111,110,116,97,105, -110,105,110,103,112,101,114,102,111,114,109,105,110,103,101,120,116,101,110,115, -105,111,110,115,109,97,121,32,110,111,116,32,98,101,99,111,110,99,101,112,116,32 -,111,102,32,111,110,99,108,105,99,107,61,34,73,116,32,105,115,32,97,108,115,111, -102,105,110,97,110,99,105,97,108,32,109,97,107,105,110,103,32,116,104,101,76,117 -,120,101,109,98,111,117,114,103,97,100,100,105,116,105,111,110,97,108,97,114,101 -,32,99,97,108,108,101,100,101,110,103,97,103,101,100,32,105,110,34,115,99,114, -105,112,116,34,41,59,98,117,116,32,105,116,32,119,97,115,101,108,101,99,116,114, -111,110,105,99,111,110,115,117,98,109,105,116,61,34,10,60,33,45,45,32,69,110,100 -,32,101,108,101,99,116,114,105,99,97,108,111,102,102,105,99,105,97,108,108,121, -115,117,103,103,101,115,116,105,111,110,116,111,112,32,111,102,32,116,104,101, -117,110,108,105,107,101,32,116,104,101,65,117,115,116,114,97,108,105,97,110,79, -114,105,103,105,110,97,108,108,121,114,101,102,101,114,101,110,99,101,115,10,60, -47,104,101,97,100,62,13,10,114,101,99,111,103,110,105,115,101,100,105,110,105, -116,105,97,108,105,122,101,108,105,109,105,116,101,100,32,116,111,65,108,101,120 -,97,110,100,114,105,97,114,101,116,105,114,101,109,101,110,116,65,100,118,101, -110,116,117,114,101,115,102,111,117,114,32,121,101,97,114,115,10,10,38,108,116, -59,33,45,45,32,105,110,99,114,101,97,115,105,110,103,100,101,99,111,114,97,116, -105,111,110,104,51,32,99,108,97,115,115,61,34,111,114,105,103,105,110,115,32,111 -,102,111,98,108,105,103,97,116,105,111,110,114,101,103,117,108,97,116,105,111, -110,99,108,97,115,115,105,102,105,101,100,40,102,117,110,99,116,105,111,110,40, -97,100,118,97,110,116,97,103,101,115,98,101,105,110,103,32,116,104,101,32,104, -105,115,116,111,114,105,97,110,115,60,98,97,115,101,32,104,114,101,102,114,101, -112,101,97,116,101,100,108,121,119,105,108,108,105,110,103,32,116,111,99,111,109 -,112,97,114,97,98,108,101,100,101,115,105,103,110,97,116,101,100,110,111,109,105 -,110,97,116,105,111,110,102,117,110,99,116,105,111,110,97,108,105,110,115,105, -100,101,32,116,104,101,114,101,118,101,108,97,116,105,111,110,101,110,100,32,111 -,102,32,116,104,101,115,32,102,111,114,32,116,104,101,32,97,117,116,104,111,114, -105,122,101,100,114,101,102,117,115,101,100,32,116,111,116,97,107,101,32,112,108 -,97,99,101,97,117,116,111,110,111,109,111,117,115,99,111,109,112,114,111,109,105 -,115,101,112,111,108,105,116,105,99,97,108,32,114,101,115,116,97,117,114,97,110, -116,116,119,111,32,111,102,32,116,104,101,70,101,98,114,117,97,114,121,32,50,113 -,117,97,108,105,116,121,32,111,102,115,119,102,111,98,106,101,99,116,46,117,110, -100,101,114,115,116,97,110,100,110,101,97,114,108,121,32,97,108,108,119,114,105, -116,116,101,110,32,98,121,105,110,116,101,114,118,105,101,119,115,34,32,119,105, -100,116,104,61,34,49,119,105,116,104,100,114,97,119,97,108,102,108,111,97,116,58 -,108,101,102,116,105,115,32,117,115,117,97,108,108,121,99,97,110,100,105,100,97, -116,101,115,110,101,119,115,112,97,112,101,114,115,109,121,115,116,101,114,105, -111,117,115,68,101,112,97,114,116,109,101,110,116,98,101,115,116,32,107,110,111, -119,110,112,97,114,108,105,97,109,101,110,116,115,117,112,112,114,101,115,115, -101,100,99,111,110,118,101,110,105,101,110,116,114,101,109,101,109,98,101,114, -101,100,100,105,102,102,101,114,101,110,116,32,115,121,115,116,101,109,97,116, -105,99,104,97,115,32,108,101,100,32,116,111,112,114,111,112,97,103,97,110,100,97 -,99,111,110,116,114,111,108,108,101,100,105,110,102,108,117,101,110,99,101,115, -99,101,114,101,109,111,110,105,97,108,112,114,111,99,108,97,105,109,101,100,80, -114,111,116,101,99,116,105,111,110,108,105,32,99,108,97,115,115,61,34,83,99,105, -101,110,116,105,102,105,99,99,108,97,115,115,61,34,110,111,45,116,114,97,100,101 -,109,97,114,107,115,109,111,114,101,32,116,104,97,110,32,119,105,100,101,115,112 -,114,101,97,100,76,105,98,101,114,97,116,105,111,110,116,111,111,107,32,112,108, -97,99,101,100,97,121,32,111,102,32,116,104,101,97,115,32,108,111,110,103,32,97, -115,105,109,112,114,105,115,111,110,101,100,65,100,100,105,116,105,111,110,97, -108,10,60,104,101,97,100,62,10,60,109,76,97,98,111,114,97,116,111,114,121,78,111 -,118,101,109,98,101,114,32,50,101,120,99,101,112,116,105,111,110,115,73,110,100, -117,115,116,114,105,97,108,118,97,114,105,101,116,121,32,111,102,102,108,111,97, -116,58,32,108,101,102,68,117,114,105,110,103,32,116,104,101,97,115,115,101,115, -115,109,101,110,116,104,97,118,101,32,98,101,101,110,32,100,101,97,108,115,32, -119,105,116,104,83,116,97,116,105,115,116,105,99,115,111,99,99,117,114,114,101, -110,99,101,47,117,108,62,60,47,100,105,118,62,99,108,101,97,114,102,105,120,34, -62,116,104,101,32,112,117,98,108,105,99,109,97,110,121,32,121,101,97,114,115,119 -,104,105,99,104,32,119,101,114,101,111,118,101,114,32,116,105,109,101,44,115,121 -,110,111,110,121,109,111,117,115,99,111,110,116,101,110,116,34,62,10,112,114,101 -,115,117,109,97,98,108,121,104,105,115,32,102,97,109,105,108,121,117,115,101,114 -,65,103,101,110,116,46,117,110,101,120,112,101,99,116,101,100,105,110,99,108,117 -,100,105,110,103,32,99,104,97,108,108,101,110,103,101,100,97,32,109,105,110,111, -114,105,116,121,117,110,100,101,102,105,110,101,100,34,98,101,108,111,110,103, -115,32,116,111,116,97,107,101,110,32,102,114,111,109,105,110,32,79,99,116,111,98 -,101,114,112,111,115,105,116,105,111,110,58,32,115,97,105,100,32,116,111,32,98, -101,114,101,108,105,103,105,111,117,115,32,70,101,100,101,114,97,116,105,111,110 -,32,114,111,119,115,112,97,110,61,34,111,110,108,121,32,97,32,102,101,119,109, -101,97,110,116,32,116,104,97,116,108,101,100,32,116,111,32,116,104,101,45,45,62, -13,10,60,100,105,118,32,60,102,105,101,108,100,115,101,116,62,65,114,99,104,98, -105,115,104,111,112,32,99,108,97,115,115,61,34,110,111,98,101,105,110,103,32,117 -,115,101,100,97,112,112,114,111,97,99,104,101,115,112,114,105,118,105,108,101, -103,101,115,110,111,115,99,114,105,112,116,62,10,114,101,115,117,108,116,115,32, -105,110,109,97,121,32,98,101,32,116,104,101,69,97,115,116,101,114,32,101,103,103 -,109,101,99,104,97,110,105,115,109,115,114,101,97,115,111,110,97,98,108,101,80, -111,112,117,108,97,116,105,111,110,67,111,108,108,101,99,116,105,111,110,115,101 -,108,101,99,116,101,100,34,62,110,111,115,99,114,105,112,116,62,13,47,105,110, -100,101,120,46,112,104,112,97,114,114,105,118,97,108,32,111,102,45,106,115,115, -100,107,39,41,41,59,109,97,110,97,103,101,100,32,116,111,105,110,99,111,109,112, -108,101,116,101,99,97,115,117,97,108,116,105,101,115,99,111,109,112,108,101,116, -105,111,110,67,104,114,105,115,116,105,97,110,115,83,101,112,116,101,109,98,101, -114,32,97,114,105,116,104,109,101,116,105,99,112,114,111,99,101,100,117,114,101, -115,109,105,103,104,116,32,104,97,118,101,80,114,111,100,117,99,116,105,111,110, -105,116,32,97,112,112,101,97,114,115,80,104,105,108,111,115,111,112,104,121,102, -114,105,101,110,100,115,104,105,112,108,101,97,100,105,110,103,32,116,111,103, -105,118,105,110,103,32,116,104,101,116,111,119,97,114,100,32,116,104,101,103,117 -,97,114,97,110,116,101,101,100,100,111,99,117,109,101,110,116,101,100,99,111,108 -,111,114,58,35,48,48,48,118,105,100,101,111,32,103,97,109,101,99,111,109,109,105 -,115,115,105,111,110,114,101,102,108,101,99,116,105,110,103,99,104,97,110,103, -101,32,116,104,101,97,115,115,111,99,105,97,116,101,100,115,97,110,115,45,115, -101,114,105,102,111,110,107,101,121,112,114,101,115,115,59,32,112,97,100,100,105 -,110,103,58,72,101,32,119,97,115,32,116,104,101,117,110,100,101,114,108,121,105, -110,103,116,121,112,105,99,97,108,108,121,32,44,32,97,110,100,32,116,104,101,32, -115,114,99,69,108,101,109,101,110,116,115,117,99,99,101,115,115,105,118,101,115, -105,110,99,101,32,116,104,101,32,115,104,111,117,108,100,32,98,101,32,110,101, -116,119,111,114,107,105,110,103,97,99,99,111,117,110,116,105,110,103,117,115,101 -,32,111,102,32,116,104,101,108,111,119,101,114,32,116,104,97,110,115,104,111,119 -,115,32,116,104,97,116,60,47,115,112,97,110,62,10,9,9,99,111,109,112,108,97,105, -110,116,115,99,111,110,116,105,110,117,111,117,115,113,117,97,110,116,105,116, -105,101,115,97,115,116,114,111,110,111,109,101,114,104,101,32,100,105,100,32,110 -,111,116,100,117,101,32,116,111,32,105,116,115,97,112,112,108,105,101,100,32,116 -,111,97,110,32,97,118,101,114,97,103,101,101,102,102,111,114,116,115,32,116,111, -116,104,101,32,102,117,116,117,114,101,97,116,116,101,109,112,116,32,116,111,84, -104,101,114,101,102,111,114,101,44,99,97,112,97,98,105,108,105,116,121,82,101, -112,117,98,108,105,99,97,110,119,97,115,32,102,111,114,109,101,100,69,108,101,99 -,116,114,111,110,105,99,107,105,108,111,109,101,116,101,114,115,99,104,97,108, -108,101,110,103,101,115,112,117,98,108,105,115,104,105,110,103,116,104,101,32, -102,111,114,109,101,114,105,110,100,105,103,101,110,111,117,115,100,105,114,101, -99,116,105,111,110,115,115,117,98,115,105,100,105,97,114,121,99,111,110,115,112, -105,114,97,99,121,100,101,116,97,105,108,115,32,111,102,97,110,100,32,105,110,32 -,116,104,101,97,102,102,111,114,100,97,98,108,101,115,117,98,115,116,97,110,99, -101,115,114,101,97,115,111,110,32,102,111,114,99,111,110,118,101,110,116,105,111 -,110,105,116,101,109,116,121,112,101,61,34,97,98,115,111,108,117,116,101,108,121 -,115,117,112,112,111,115,101,100,108,121,114,101,109,97,105,110,101,100,32,97,97 -,116,116,114,97,99,116,105,118,101,116,114,97,118,101,108,108,105,110,103,115, -101,112,97,114,97,116,101,108,121,102,111,99,117,115,101,115,32,111,110,101,108, -101,109,101,110,116,97,114,121,97,112,112,108,105,99,97,98,108,101,102,111,117, -110,100,32,116,104,97,116,115,116,121,108,101,115,104,101,101,116,109,97,110,117 -,115,99,114,105,112,116,115,116,97,110,100,115,32,102,111,114,32,110,111,45,114, -101,112,101,97,116,40,115,111,109,101,116,105,109,101,115,67,111,109,109,101,114 -,99,105,97,108,105,110,32,65,109,101,114,105,99,97,117,110,100,101,114,116,97, -107,101,110,113,117,97,114,116,101,114,32,111,102,97,110,32,101,120,97,109,112, -108,101,112,101,114,115,111,110,97,108,108,121,105,110,100,101,120,46,112,104, -112,63,60,47,98,117,116,116,111,110,62,10,112,101,114,99,101,110,116,97,103,101, -98,101,115,116,45,107,110,111,119,110,99,114,101,97,116,105,110,103,32,97,34,32, -100,105,114,61,34,108,116,114,76,105,101,117,116,101,110,97,110,116,10,60,100, -105,118,32,105,100,61,34,116,104,101,121,32,119,111,117,108,100,97,98,105,108, -105,116,121,32,111,102,109,97,100,101,32,117,112,32,111,102,110,111,116,101,100, -32,116,104,97,116,99,108,101,97,114,32,116,104,97,116,97,114,103,117,101,32,116, -104,97,116,116,111,32,97,110,111,116,104,101,114,99,104,105,108,100,114,101,110, -39,115,112,117,114,112,111,115,101,32,111,102,102,111,114,109,117,108,97,116,101 -,100,98,97,115,101,100,32,117,112,111,110,116,104,101,32,114,101,103,105,111,110 -,115,117,98,106,101,99,116,32,111,102,112,97,115,115,101,110,103,101,114,115,112 -,111,115,115,101,115,115,105,111,110,46,10,10,73,110,32,116,104,101,32,66,101, -102,111,114,101,32,116,104,101,97,102,116,101,114,119,97,114,100,115,99,117,114, -114,101,110,116,108,121,32,97,99,114,111,115,115,32,116,104,101,115,99,105,101, -110,116,105,102,105,99,99,111,109,109,117,110,105,116,121,46,99,97,112,105,116, -97,108,105,115,109,105,110,32,71,101,114,109,97,110,121,114,105,103,104,116,45, -119,105,110,103,116,104,101,32,115,121,115,116,101,109,83,111,99,105,101,116,121 -,32,111,102,112,111,108,105,116,105,99,105,97,110,100,105,114,101,99,116,105,111 -,110,58,119,101,110,116,32,111,110,32,116,111,114,101,109,111,118,97,108,32,111, -102,32,78,101,119,32,89,111,114,107,32,97,112,97,114,116,109,101,110,116,115,105 -,110,100,105,99,97,116,105,111,110,100,117,114,105,110,103,32,116,104,101,117, -110,108,101,115,115,32,116,104,101,104,105,115,116,111,114,105,99,97,108,104,97, -100,32,98,101,101,110,32,97,100,101,102,105,110,105,116,105,118,101,105,110,103, -114,101,100,105,101,110,116,97,116,116,101,110,100,97,110,99,101,67,101,110,116, -101,114,32,102,111,114,112,114,111,109,105,110,101,110,99,101,114,101,97,100,121 -,83,116,97,116,101,115,116,114,97,116,101,103,105,101,115,98,117,116,32,105,110, -32,116,104,101,97,115,32,112,97,114,116,32,111,102,99,111,110,115,116,105,116, -117,116,101,99,108,97,105,109,32,116,104,97,116,108,97,98,111,114,97,116,111,114 -,121,99,111,109,112,97,116,105,98,108,101,102,97,105,108,117,114,101,32,111,102, -44,32,115,117,99,104,32,97,115,32,98,101,103,97,110,32,119,105,116,104,117,115, -105,110,103,32,116,104,101,32,116,111,32,112,114,111,118,105,100,101,102,101,97, -116,117,114,101,32,111,102,102,114,111,109,32,119,104,105,99,104,47,34,32,99,108 -,97,115,115,61,34,103,101,111,108,111,103,105,99,97,108,115,101,118,101,114,97, -108,32,111,102,100,101,108,105,98,101,114,97,116,101,105,109,112,111,114,116,97, -110,116,32,104,111,108,100,115,32,116,104,97,116,105,110,103,38,113,117,111,116, -59,32,118,97,108,105,103,110,61,116,111,112,116,104,101,32,71,101,114,109,97,110 -,111,117,116,115,105,100,101,32,111,102,110,101,103,111,116,105,97,116,101,100, -104,105,115,32,99,97,114,101,101,114,115,101,112,97,114,97,116,105,111,110,105, -100,61,34,115,101,97,114,99,104,119,97,115,32,99,97,108,108,101,100,116,104,101, -32,102,111,117,114,116,104,114,101,99,114,101,97,116,105,111,110,111,116,104,101 -,114,32,116,104,97,110,112,114,101,118,101,110,116,105,111,110,119,104,105,108, -101,32,116,104,101,32,101,100,117,99,97,116,105,111,110,44,99,111,110,110,101,99 -,116,105,110,103,97,99,99,117,114,97,116,101,108,121,119,101,114,101,32,98,117, -105,108,116,119,97,115,32,107,105,108,108,101,100,97,103,114,101,101,109,101,110 -,116,115,109,117,99,104,32,109,111,114,101,32,68,117,101,32,116,111,32,116,104, -101,119,105,100,116,104,58,32,49,48,48,115,111,109,101,32,111,116,104,101,114,75 -,105,110,103,100,111,109,32,111,102,116,104,101,32,101,110,116,105,114,101,102, -97,109,111,117,115,32,102,111,114,116,111,32,99,111,110,110,101,99,116,111,98, -106,101,99,116,105,118,101,115,116,104,101,32,70,114,101,110,99,104,112,101,111, -112,108,101,32,97,110,100,102,101,97,116,117,114,101,100,34,62,105,115,32,115,97 -,105,100,32,116,111,115,116,114,117,99,116,117,114,97,108,114,101,102,101,114, -101,110,100,117,109,109,111,115,116,32,111,102,116,101,110,97,32,115,101,112,97, -114,97,116,101,45,62,10,60,100,105,118,32,105,100,32,79,102,102,105,99,105,97, -108,32,119,111,114,108,100,119,105,100,101,46,97,114,105,97,45,108,97,98,101,108 -,116,104,101,32,112,108,97,110,101,116,97,110,100,32,105,116,32,119,97,115,100, -34,32,118,97,108,117,101,61,34,108,111,111,107,105,110,103,32,97,116,98,101,110, -101,102,105,99,105,97,108,97,114,101,32,105,110,32,116,104,101,109,111,110,105, -116,111,114,105,110,103,114,101,112,111,114,116,101,100,108,121,116,104,101,32, -109,111,100,101,114,110,119,111,114,107,105,110,103,32,111,110,97,108,108,111, -119,101,100,32,116,111,119,104,101,114,101,32,116,104,101,32,105,110,110,111,118 -,97,116,105,118,101,60,47,97,62,60,47,100,105,118,62,115,111,117,110,100,116,114 -,97,99,107,115,101,97,114,99,104,70,111,114,109,116,101,110,100,32,116,111,32,98 -,101,105,110,112,117,116,32,105,100,61,34,111,112,101,110,105,110,103,32,111,102 -,114,101,115,116,114,105,99,116,101,100,97,100,111,112,116,101,100,32,98,121,97, -100,100,114,101,115,115,105,110,103,116,104,101,111,108,111,103,105,97,110,109, -101,116,104,111,100,115,32,111,102,118,97,114,105,97,110,116,32,111,102,67,104, -114,105,115,116,105,97,110,32,118,101,114,121,32,108,97,114,103,101,97,117,116, -111,109,111,116,105,118,101,98,121,32,102,97,114,32,116,104,101,114,97,110,103, -101,32,102,114,111,109,112,117,114,115,117,105,116,32,111,102,102,111,108,108, -111,119,32,116,104,101,98,114,111,117,103,104,116,32,116,111,105,110,32,69,110, -103,108,97,110,100,97,103,114,101,101,32,116,104,97,116,97,99,99,117,115,101,100 -,32,111,102,99,111,109,101,115,32,102,114,111,109,112,114,101,118,101,110,116, -105,110,103,100,105,118,32,115,116,121,108,101,61,104,105,115,32,111,114,32,104, -101,114,116,114,101,109,101,110,100,111,117,115,102,114,101,101,100,111,109,32, -111,102,99,111,110,99,101,114,110,105,110,103,48,32,49,101,109,32,49,101,109,59, -66,97,115,107,101,116,98,97,108,108,47,115,116,121,108,101,46,99,115,115,97,110, -32,101,97,114,108,105,101,114,101,118,101,110,32,97,102,116,101,114,47,34,32,116 -,105,116,108,101,61,34,46,99,111,109,47,105,110,100,101,120,116,97,107,105,110, -103,32,116,104,101,112,105,116,116,115,98,117,114,103,104,99,111,110,116,101,110 -,116,34,62,13,60,115,99,114,105,112,116,62,40,102,116,117,114,110,101,100,32,111 -,117,116,104,97,118,105,110,103,32,116,104,101,60,47,115,112,97,110,62,13,10,32, -111,99,99,97,115,105,111,110,97,108,98,101,99,97,117,115,101,32,105,116,115,116, -97,114,116,101,100,32,116,111,112,104,121,115,105,99,97,108,108,121,62,60,47,100 -,105,118,62,10,32,32,99,114,101,97,116,101,100,32,98,121,67,117,114,114,101,110, -116,108,121,44,32,98,103,99,111,108,111,114,61,34,116,97,98,105,110,100,101,120, -61,34,100,105,115,97,115,116,114,111,117,115,65,110,97,108,121,116,105,99,115,32 -,97,108,115,111,32,104,97,115,32,97,62,60,100,105,118,32,105,100,61,34,60,47,115 -,116,121,108,101,62,10,60,99,97,108,108,101,100,32,102,111,114,115,105,110,103, -101,114,32,97,110,100,46,115,114,99,32,61,32,34,47,47,118,105,111,108,97,116,105 -,111,110,115,116,104,105,115,32,112,111,105,110,116,99,111,110,115,116,97,110, -116,108,121,105,115,32,108,111,99,97,116,101,100,114,101,99,111,114,100,105,110, -103,115,100,32,102,114,111,109,32,116,104,101,110,101,100,101,114,108,97,110,100 -,115,112,111,114,116,117,103,117,195,170,115,215,162,215,145,215,168,215,153,215 -,170,217,129,216,167,216,177,216,179,219,140,100,101,115,97,114,114,111,108,108, -111,99,111,109,101,110,116,97,114,105,111,101,100,117,99,97,99,105,195,179,110, -115,101,112,116,105,101,109,98,114,101,114,101,103,105,115,116,114,97,100,111, -100,105,114,101,99,99,105,195,179,110,117,98,105,99,97,99,105,195,179,110,112, -117,98,108,105,99,105,100,97,100,114,101,115,112,117,101,115,116,97,115,114,101, -115,117,108,116,97,100,111,115,105,109,112,111,114,116,97,110,116,101,114,101, -115,101,114,118,97,100,111,115,97,114,116,195,173,99,117,108,111,115,100,105,102 -,101,114,101,110,116,101,115,115,105,103,117,105,101,110,116,101,115,114,101,112 -,195,186,98,108,105,99,97,115,105,116,117,97,99,105,195,179,110,109,105,110,105, -115,116,101,114,105,111,112,114,105,118,97,99,105,100,97,100,100,105,114,101,99, -116,111,114,105,111,102,111,114,109,97,99,105,195,179,110,112,111,98,108,97,99, -105,195,179,110,112,114,101,115,105,100,101,110,116,101,99,111,110,116,101,110, -105,100,111,115,97,99,99,101,115,111,114,105,111,115,116,101,99,104,110,111,114, -97,116,105,112,101,114,115,111,110,97,108,101,115,99,97,116,101,103,111,114,195, -173,97,101,115,112,101,99,105,97,108,101,115,100,105,115,112,111,110,105,98,108, -101,97,99,116,117,97,108,105,100,97,100,114,101,102,101,114,101,110,99,105,97, -118,97,108,108,97,100,111,108,105,100,98,105,98,108,105,111,116,101,99,97,114, -101,108,97,99,105,111,110,101,115,99,97,108,101,110,100,97,114,105,111,112,111, -108,195,173,116,105,99,97,115,97,110,116,101,114,105,111,114,101,115,100,111,99, -117,109,101,110,116,111,115,110,97,116,117,114,97,108,101,122,97,109,97,116,101, -114,105,97,108,101,115,100,105,102,101,114,101,110,99,105,97,101,99,111,110,195, -179,109,105,99,97,116,114,97,110,115,112,111,114,116,101,114,111,100,114,195,173 -,103,117,101,122,112,97,114,116,105,99,105,112,97,114,101,110,99,117,101,110,116 -,114,97,110,100,105,115,99,117,115,105,195,179,110,101,115,116,114,117,99,116, -117,114,97,102,117,110,100,97,99,105,195,179,110,102,114,101,99,117,101,110,116, -101,115,112,101,114,109,97,110,101,110,116,101,116,111,116,97,108,109,101,110, -116,101,208,188,208,190,208,182,208,189,208,190,208,177,209,131,208,180,208,181, -209,130,208,188,208,190,208,182,208,181,209,130,208,178,209,128,208,181,208,188, -209,143,209,130,208,176,208,186,208,182,208,181,209,135,209,130,208,190,208,177, -209,139,208,177,208,190,208,187,208,181,208,181,208,190,209,135,208,181,208,189, -209,140,209,141,209,130,208,190,208,179,208,190,208,186,208,190,208,179,208,180, -208,176,208,191,208,190,209,129,208,187,208,181,208,178,209,129,208,181,208,179, -208,190,209,129,208,176,208,185,209,130,208,181,209,135,208,181,209,128,208,181, -208,183,208,188,208,190,208,179,209,131,209,130,209,129,208,176,208,185,209,130, -208,176,208,182,208,184,208,183,208,189,208,184,208,188,208,181,208,182,208,180, -209,131,208,177,209,131,208,180,209,131,209,130,208,159,208,190,208,184,209,129, -208,186,208,183,208,180,208,181,209,129,209,140,208,178,208,184,208,180,208,181, -208,190,209,129,208,178,209,143,208,183,208,184,208,189,209,131,208,182,208,189, -208,190,209,129,208,178,208,190,208,181,208,185,208,187,209,142,208,180,208,181, -208,185,208,191,208,190,209,128,208,189,208,190,208,188,208,189,208,190,208,179, -208,190,208,180,208,181,209,130,208,181,208,185,209,129,208,178,208,190,208,184, -209,133,208,191,209,128,208,176,208,178,208,176,209,130,208,176,208,186,208,190, -208,185,208,188,208,181,209,129,209,130,208,190,208,184,208,188,208,181,208,181, -209,130,208,182,208,184,208,183,208,189,209,140,208,190,208,180,208,189,208,190, -208,185,208,187,209,131,209,135,209,136,208,181,208,191,208,181,209,128,208,181, -208,180,209,135,208,176,209,129,209,130,208,184,209,135,208,176,209,129,209,130, -209,140,209,128,208,176,208,177,208,190,209,130,208,189,208,190,208,178,209,139, -209,133,208,191,209,128,208,176,208,178,208,190,209,129,208,190,208,177,208,190, -208,185,208,191,208,190,209,130,208,190,208,188,208,188,208,181,208,189,208,181, -208,181,209,135,208,184,209,129,208,187,208,181,208,189,208,190,208,178,209,139, -208,181,209,131,209,129,208,187,209,131,208,179,208,190,208,186,208,190,208,187, -208,190,208,189,208,176,208,183,208,176,208,180,209,130,208,176,208,186,208,190, -208,181,209,130,208,190,208,179,208,180,208,176,208,191,208,190,209,135,209,130, -208,184,208,159,208,190,209,129,208,187,208,181,209,130,208,176,208,186,208,184, -208,181,208,189,208,190,208,178,209,139,208,185,209,129,209,130,208,190,208,184, -209,130,209,130,208,176,208,186,208,184,209,133,209,129,209,128,208,176,208,183, -209,131,208,161,208,176,208,189,208,186,209,130,209,132,208,190,209,128,209,131, -208,188,208,154,208,190,208,179,208,180,208,176,208,186,208,189,208,184,208,179, -208,184,209,129,208,187,208,190,208,178,208,176,208,189,208,176,209,136,208,181, -208,185,208,189,208,176,208,185,209,130,208,184,209,129,208,178,208,190,208,184, -208,188,209,129,208,178,209,143,208,183,209,140,208,187,209,142,208,177,208,190, -208,185,209,135,208,176,209,129,209,130,208,190,209,129,209,128,208,181,208,180, -208,184,208,154,209,128,208,190,208,188,208,181,208,164,208,190,209,128,209,131, -208,188,209,128,209,139,208,189,208,186,208,181,209,129,209,130,208,176,208,187, -208,184,208,191,208,190,208,184,209,129,208,186,209,130,209,139,209,129,209,143, -209,135,208,188,208,181,209,129,209,143,209,134,209,134,208,181,208,189,209,130, -209,128,209,130,209,128,209,131,208,180,208,176,209,129,208,176,208,188,209,139, -209,133,209,128,209,139,208,189,208,186,208,176,208,157,208,190,208,178,209,139, -208,185,209,135,208,176,209,129,208,190,208,178,208,188,208,181,209,129,209,130, -208,176,209,132,208,184,208,187,209,140,208,188,208,188,208,176,209,128,209,130, -208,176,209,129,209,130,209,128,208,176,208,189,208,188,208,181,209,129,209,130, -208,181,209,130,208,181,208,186,209,129,209,130,208,189,208,176,209,136,208,184, -209,133,208,188,208,184,208,189,209,131,209,130,208,184,208,188,208,181,208,189, -208,184,208,184,208,188,208,181,209,142,209,130,208,189,208,190,208,188,208,181, -209,128,208,179,208,190,209,128,208,190,208,180,209,129,208,176,208,188,208,190, -208,188,209,141,209,130,208,190,208,188,209,131,208,186,208,190,208,189,209,134, -208,181,209,129,208,178,208,190,208,181,208,188,208,186,208,176,208,186,208,190, -208,185,208,144,209,128,209,133,208,184,208,178,217,133,217,134,216,170,216,175, -217,137,216,165,216,177,216,179,216,167,217,132,216,177,216,179,216,167,217,132, -216,169,216,167,217,132,216,185,216,167,217,133,217,131,216,170,216,168,217,135, -216,167,216,168,216,177,216,167,217,133,216,172,216,167,217,132,217,138,217,136, -217,133,216,167,217,132,216,181,217,136,216,177,216,172,216,175,217,138,216,175, -216,169,216,167,217,132,216,185,216,182,217,136,216,165,216,182,216,167,217,129, -216,169,216,167,217,132,217,130,216,179,217,133,216,167,217,132,216,185,216,167, -216,168,216,170,216,173,217,133,217,138,217,132,217,133,217,132,217,129,216,167, -216,170,217,133,217,132,216,170,217,130,217,137,216,170,216,185,216,175,217,138, -217,132,216,167,217,132,216,180,216,185,216,177,216,163,216,174,216,168,216,167, -216,177,216,170,216,183,217,136,217,138,216,177,216,185,217,132,217,138,217,131, -217,133,216,165,216,177,217,129,216,167,217,130,216,183,217,132,216,168,216,167, -216,170,216,167,217,132,217,132,216,186,216,169,216,170,216,177,216,170,217,138, -216,168,216,167,217,132,217,134,216,167,216,179,216,167,217,132,216,180,217,138, -216,174,217,133,217,134,216,170,216,175,217,138,216,167,217,132,216,185,216,177, -216,168,216,167,217,132,217,130,216,181,216,181,216,167,217,129,217,132,216,167, -217,133,216,185,217,132,217,138,217,135,216,167,216,170,216,173,216,175,217,138, -216,171,216,167,217,132,217,132,217,135,217,133,216,167,217,132,216,185,217,133, -217,132,217,133,217,131,216,170,216,168,216,169,217,138,217,133,217,131,217,134, -217,131,216,167,217,132,216,183,217,129,217,132,217,129,217,138,216,175,217,138, -217,136,216,165,216,175,216,167,216,177,216,169,216,170,216,167,216,177,217,138, -216,174,216,167,217,132,216,181,216,173,216,169,216,170,216,179,216,172,217,138, -217,132,216,167,217,132,217,136,217,130,216,170,216,185,217,134,216,175,217,133, -216,167,217,133,216,175,217,138,217,134,216,169,216,170,216,181,217,133,217,138, -217,133,216,163,216,177,216,180,217,138,217,129,216,167,217,132,216,176,217,138, -217,134,216,185,216,177,216,168,217,138,216,169,216,168,217,136,216,167,216,168, -216,169,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,179,217,129, -216,177,217,133,216,180,216,167,217,131,217,132,216,170,216,185,216,167,217,132, -217,137,216,167,217,132,216,163,217,136,217,132,216,167,217,132,216,179,217,134, -216,169,216,172,216,167,217,133,216,185,216,169,216,167,217,132,216,181,216,173, -217,129,216,167,217,132,216,175,217,138,217,134,217,131,217,132,217,133,216,167, -216,170,216,167,217,132,216,174,216,167,216,181,216,167,217,132,217,133,217,132, -217,129,216,163,216,185,216,182,216,167,216,161,217,131,216,170,216,167,216,168, -216,169,216,167,217,132,216,174,217,138,216,177,216,177,216,179,216,167,216,166, -217,132,216,167,217,132,217,130,217,132,216,168,216,167,217,132,216,163,216,175, -216,168,217,133,217,130,216,167,216,183,216,185,217,133,216,177,216,167,216,179, -217,132,217,133,217,134,216,183,217,130,216,169,216,167,217,132,217,131,216,170, -216,168,216,167,217,132,216,177,216,172,217,132,216,167,216,180,216,170,216,177, -217,131,216,167,217,132,217,130,216,175,217,133,217,138,216,185,216,183,217,138, -217,131,115,66,121,84,97,103,78,97,109,101,40,46,106,112,103,34,32,97,108,116,61 -,34,49,112,120,32,115,111,108,105,100,32,35,46,103,105,102,34,32,97,108,116,61, -34,116,114,97,110,115,112,97,114,101,110,116,105,110,102,111,114,109,97,116,105, -111,110,97,112,112,108,105,99,97,116,105,111,110,34,32,111,110,99,108,105,99,107 -,61,34,101,115,116,97,98,108,105,115,104,101,100,97,100,118,101,114,116,105,115, -105,110,103,46,112,110,103,34,32,97,108,116,61,34,101,110,118,105,114,111,110, -109,101,110,116,112,101,114,102,111,114,109,97,110,99,101,97,112,112,114,111,112 -,114,105,97,116,101,38,97,109,112,59,109,100,97,115,104,59,105,109,109,101,100, -105,97,116,101,108,121,60,47,115,116,114,111,110,103,62,60,47,114,97,116,104,101 -,114,32,116,104,97,110,116,101,109,112,101,114,97,116,117,114,101,100,101,118, -101,108,111,112,109,101,110,116,99,111,109,112,101,116,105,116,105,111,110,112, -108,97,99,101,104,111,108,100,101,114,118,105,115,105,98,105,108,105,116,121,58, -99,111,112,121,114,105,103,104,116,34,62,48,34,32,104,101,105,103,104,116,61,34, -101,118,101,110,32,116,104,111,117,103,104,114,101,112,108,97,99,101,109,101,110 -,116,100,101,115,116,105,110,97,116,105,111,110,67,111,114,112,111,114,97,116, -105,111,110,60,117,108,32,99,108,97,115,115,61,34,65,115,115,111,99,105,97,116, -105,111,110,105,110,100,105,118,105,100,117,97,108,115,112,101,114,115,112,101, -99,116,105,118,101,115,101,116,84,105,109,101,111,117,116,40,117,114,108,40,104, -116,116,112,58,47,47,109,97,116,104,101,109,97,116,105,99,115,109,97,114,103,105 -,110,45,116,111,112,58,101,118,101,110,116,117,97,108,108,121,32,100,101,115,99, -114,105,112,116,105,111,110,41,32,110,111,45,114,101,112,101,97,116,99,111,108, -108,101,99,116,105,111,110,115,46,74,80,71,124,116,104,117,109,98,124,112,97,114 -,116,105,99,105,112,97,116,101,47,104,101,97,100,62,60,98,111,100,121,102,108, -111,97,116,58,108,101,102,116,59,60,108,105,32,99,108,97,115,115,61,34,104,117, -110,100,114,101,100,115,32,111,102,10,10,72,111,119,101,118,101,114,44,32,99,111 -,109,112,111,115,105,116,105,111,110,99,108,101,97,114,58,98,111,116,104,59,99, -111,111,112,101,114,97,116,105,111,110,119,105,116,104,105,110,32,116,104,101,32 -,108,97,98,101,108,32,102,111,114,61,34,98,111,114,100,101,114,45,116,111,112,58 -,78,101,119,32,90,101,97,108,97,110,100,114,101,99,111,109,109,101,110,100,101, -100,112,104,111,116,111,103,114,97,112,104,121,105,110,116,101,114,101,115,116, -105,110,103,38,108,116,59,115,117,112,38,103,116,59,99,111,110,116,114,111,118, -101,114,115,121,78,101,116,104,101,114,108,97,110,100,115,97,108,116,101,114,110 -,97,116,105,118,101,109,97,120,108,101,110,103,116,104,61,34,115,119,105,116,122 -,101,114,108,97,110,100,68,101,118,101,108,111,112,109,101,110,116,101,115,115, -101,110,116,105,97,108,108,121,10,10,65,108,116,104,111,117,103,104,32,60,47,116 -,101,120,116,97,114,101,97,62,116,104,117,110,100,101,114,98,105,114,100,114,101 -,112,114,101,115,101,110,116,101,100,38,97,109,112,59,110,100,97,115,104,59,115, -112,101,99,117,108,97,116,105,111,110,99,111,109,109,117,110,105,116,105,101,115 -,108,101,103,105,115,108,97,116,105,111,110,101,108,101,99,116,114,111,110,105, -99,115,10,9,60,100,105,118,32,105,100,61,34,105,108,108,117,115,116,114,97,116, -101,100,101,110,103,105,110,101,101,114,105,110,103,116,101,114,114,105,116,111, -114,105,101,115,97,117,116,104,111,114,105,116,105,101,115,100,105,115,116,114, -105,98,117,116,101,100,54,34,32,104,101,105,103,104,116,61,34,115,97,110,115,45, -115,101,114,105,102,59,99,97,112,97,98,108,101,32,111,102,32,100,105,115,97,112, -112,101,97,114,101,100,105,110,116,101,114,97,99,116,105,118,101,108,111,111,107 -,105,110,103,32,102,111,114,105,116,32,119,111,117,108,100,32,98,101,65,102,103, -104,97,110,105,115,116,97,110,119,97,115,32,99,114,101,97,116,101,100,77,97,116, -104,46,102,108,111,111,114,40,115,117,114,114,111,117,110,100,105,110,103,99,97, -110,32,97,108,115,111,32,98,101,111,98,115,101,114,118,97,116,105,111,110,109,97 -,105,110,116,101,110,97,110,99,101,101,110,99,111,117,110,116,101,114,101,100,60 -,104,50,32,99,108,97,115,115,61,34,109,111,114,101,32,114,101,99,101,110,116,105 -,116,32,104,97,115,32,98,101,101,110,105,110,118,97,115,105,111,110,32,111,102, -41,46,103,101,116,84,105,109,101,40,41,102,117,110,100,97,109,101,110,116,97,108 -,68,101,115,112,105,116,101,32,116,104,101,34,62,60,100,105,118,32,105,100,61,34 -,105,110,115,112,105,114,97,116,105,111,110,101,120,97,109,105,110,97,116,105, -111,110,112,114,101,112,97,114,97,116,105,111,110,101,120,112,108,97,110,97,116, -105,111,110,60,105,110,112,117,116,32,105,100,61,34,60,47,97,62,60,47,115,112,97 -,110,62,118,101,114,115,105,111,110,115,32,111,102,105,110,115,116,114,117,109, -101,110,116,115,98,101,102,111,114,101,32,116,104,101,32,32,61,32,39,104,116,116 -,112,58,47,47,68,101,115,99,114,105,112,116,105,111,110,114,101,108,97,116,105, -118,101,108,121,32,46,115,117,98,115,116,114,105,110,103,40,101,97,99,104,32,111 -,102,32,116,104,101,101,120,112,101,114,105,109,101,110,116,115,105,110,102,108, -117,101,110,116,105,97,108,105,110,116,101,103,114,97,116,105,111,110,109,97,110 -,121,32,112,101,111,112,108,101,100,117,101,32,116,111,32,116,104,101,32,99,111, -109,98,105,110,97,116,105,111,110,100,111,32,110,111,116,32,104,97,118,101,77, -105,100,100,108,101,32,69,97,115,116,60,110,111,115,99,114,105,112,116,62,60,99, -111,112,121,114,105,103,104,116,34,32,112,101,114,104,97,112,115,32,116,104,101, -105,110,115,116,105,116,117,116,105,111,110,105,110,32,68,101,99,101,109,98,101, -114,97,114,114,97,110,103,101,109,101,110,116,109,111,115,116,32,102,97,109,111, -117,115,112,101,114,115,111,110,97,108,105,116,121,99,114,101,97,116,105,111,110 -,32,111,102,108,105,109,105,116,97,116,105,111,110,115,101,120,99,108,117,115, -105,118,101,108,121,115,111,118,101,114,101,105,103,110,116,121,45,99,111,110, -116,101,110,116,34,62,10,60,116,100,32,99,108,97,115,115,61,34,117,110,100,101, -114,103,114,111,117,110,100,112,97,114,97,108,108,101,108,32,116,111,100,111,99, -116,114,105,110,101,32,111,102,111,99,99,117,112,105,101,100,32,98,121,116,101, -114,109,105,110,111,108,111,103,121,82,101,110,97,105,115,115,97,110,99,101,97, -32,110,117,109,98,101,114,32,111,102,115,117,112,112,111,114,116,32,102,111,114, -101,120,112,108,111,114,97,116,105,111,110,114,101,99,111,103,110,105,116,105, -111,110,112,114,101,100,101,99,101,115,115,111,114,60,105,109,103,32,115,114,99, -61,34,47,60,104,49,32,99,108,97,115,115,61,34,112,117,98,108,105,99,97,116,105, -111,110,109,97,121,32,97,108,115,111,32,98,101,115,112,101,99,105,97,108,105,122 -,101,100,60,47,102,105,101,108,100,115,101,116,62,112,114,111,103,114,101,115, -115,105,118,101,109,105,108,108,105,111,110,115,32,111,102,115,116,97,116,101, -115,32,116,104,97,116,101,110,102,111,114,99,101,109,101,110,116,97,114,111,117, -110,100,32,116,104,101,32,111,110,101,32,97,110,111,116,104,101,114,46,112,97, -114,101,110,116,78,111,100,101,97,103,114,105,99,117,108,116,117,114,101,65,108, -116,101,114,110,97,116,105,118,101,114,101,115,101,97,114,99,104,101,114,115,116 -,111,119,97,114,100,115,32,116,104,101,77,111,115,116,32,111,102,32,116,104,101, -109,97,110,121,32,111,116,104,101,114,32,40,101,115,112,101,99,105,97,108,108, -121,60,116,100,32,119,105,100,116,104,61,34,59,119,105,100,116,104,58,49,48,48, -37,105,110,100,101,112,101,110,100,101,110,116,60,104,51,32,99,108,97,115,115,61 -,34,32,111,110,99,104,97,110,103,101,61,34,41,46,97,100,100,67,108,97,115,115,40 -,105,110,116,101,114,97,99,116,105,111,110,79,110,101,32,111,102,32,116,104,101, -32,100,97,117,103,104,116,101,114,32,111,102,97,99,99,101,115,115,111,114,105, -101,115,98,114,97,110,99,104,101,115,32,111,102,13,10,60,100,105,118,32,105,100, -61,34,116,104,101,32,108,97,114,103,101,115,116,100,101,99,108,97,114,97,116,105 -,111,110,114,101,103,117,108,97,116,105,111,110,115,73,110,102,111,114,109,97, -116,105,111,110,116,114,97,110,115,108,97,116,105,111,110,100,111,99,117,109,101 -,110,116,97,114,121,105,110,32,111,114,100,101,114,32,116,111,34,62,10,60,104, -101,97,100,62,10,60,34,32,104,101,105,103,104,116,61,34,49,97,99,114,111,115,115 -,32,116,104,101,32,111,114,105,101,110,116,97,116,105,111,110,41,59,60,47,115,99 -,114,105,112,116,62,105,109,112,108,101,109,101,110,116,101,100,99,97,110,32,98, -101,32,115,101,101,110,116,104,101,114,101,32,119,97,115,32,97,100,101,109,111, -110,115,116,114,97,116,101,99,111,110,116,97,105,110,101,114,34,62,99,111,110, -110,101,99,116,105,111,110,115,116,104,101,32,66,114,105,116,105,115,104,119,97, -115,32,119,114,105,116,116,101,110,33,105,109,112,111,114,116,97,110,116,59,112, -120,59,32,109,97,114,103,105,110,45,102,111,108,108,111,119,101,100,32,98,121,97 -,98,105,108,105,116,121,32,116,111,32,99,111,109,112,108,105,99,97,116,101,100, -100,117,114,105,110,103,32,116,104,101,32,105,109,109,105,103,114,97,116,105,111 -,110,97,108,115,111,32,99,97,108,108,101,100,60,104,52,32,99,108,97,115,115,61, -34,100,105,115,116,105,110,99,116,105,111,110,114,101,112,108,97,99,101,100,32, -98,121,103,111,118,101,114,110,109,101,110,116,115,108,111,99,97,116,105,111,110 -,32,111,102,105,110,32,78,111,118,101,109,98,101,114,119,104,101,116,104,101,114 -,32,116,104,101,60,47,112,62,10,60,47,100,105,118,62,97,99,113,117,105,115,105, -116,105,111,110,99,97,108,108,101,100,32,116,104,101,32,112,101,114,115,101,99, -117,116,105,111,110,100,101,115,105,103,110,97,116,105,111,110,123,102,111,110, -116,45,115,105,122,101,58,97,112,112,101,97,114,101,100,32,105,110,105,110,118, -101,115,116,105,103,97,116,101,101,120,112,101,114,105,101,110,99,101,100,109, -111,115,116,32,108,105,107,101,108,121,119,105,100,101,108,121,32,117,115,101, -100,100,105,115,99,117,115,115,105,111,110,115,112,114,101,115,101,110,99,101,32 -,111,102,32,40,100,111,99,117,109,101,110,116,46,101,120,116,101,110,115,105,118 -,101,108,121,73,116,32,104,97,115,32,98,101,101,110,105,116,32,100,111,101,115, -32,110,111,116,99,111,110,116,114,97,114,121,32,116,111,105,110,104,97,98,105, -116,97,110,116,115,105,109,112,114,111,118,101,109,101,110,116,115,99,104,111, -108,97,114,115,104,105,112,99,111,110,115,117,109,112,116,105,111,110,105,110, -115,116,114,117,99,116,105,111,110,102,111,114,32,101,120,97,109,112,108,101,111 -,110,101,32,111,114,32,109,111,114,101,112,120,59,32,112,97,100,100,105,110,103, -116,104,101,32,99,117,114,114,101,110,116,97,32,115,101,114,105,101,115,32,111, -102,97,114,101,32,117,115,117,97,108,108,121,114,111,108,101,32,105,110,32,116, -104,101,112,114,101,118,105,111,117,115,108,121,32,100,101,114,105,118,97,116, -105,118,101,115,101,118,105,100,101,110,99,101,32,111,102,101,120,112,101,114, -105,101,110,99,101,115,99,111,108,111,114,115,99,104,101,109,101,115,116,97,116, -101,100,32,116,104,97,116,99,101,114,116,105,102,105,99,97,116,101,60,47,97,62, -60,47,100,105,118,62,10,32,115,101,108,101,99,116,101,100,61,34,104,105,103,104, -32,115,99,104,111,111,108,114,101,115,112,111,110,115,101,32,116,111,99,111,109, -102,111,114,116,97,98,108,101,97,100,111,112,116,105,111,110,32,111,102,116,104, -114,101,101,32,121,101,97,114,115,116,104,101,32,99,111,117,110,116,114,121,105, -110,32,70,101,98,114,117,97,114,121,115,111,32,116,104,97,116,32,116,104,101,112 -,101,111,112,108,101,32,119,104,111,32,112,114,111,118,105,100,101,100,32,98,121 -,60,112,97,114,97,109,32,110,97,109,101,97,102,102,101,99,116,101,100,32,98,121, -105,110,32,116,101,114,109,115,32,111,102,97,112,112,111,105,110,116,109,101,110 -,116,73,83,79,45,56,56,53,57,45,49,34,119,97,115,32,98,111,114,110,32,105,110, -104,105,115,116,111,114,105,99,97,108,32,114,101,103,97,114,100,101,100,32,97, -115,109,101,97,115,117,114,101,109,101,110,116,105,115,32,98,97,115,101,100,32, -111,110,32,97,110,100,32,111,116,104,101,114,32,58,32,102,117,110,99,116,105,111 -,110,40,115,105,103,110,105,102,105,99,97,110,116,99,101,108,101,98,114,97,116, -105,111,110,116,114,97,110,115,109,105,116,116,101,100,47,106,115,47,106,113,117 -,101,114,121,46,105,115,32,107,110,111,119,110,32,97,115,116,104,101,111,114,101 -,116,105,99,97,108,32,116,97,98,105,110,100,101,120,61,34,105,116,32,99,111,117, -108,100,32,98,101,60,110,111,115,99,114,105,112,116,62,10,104,97,118,105,110,103 -,32,98,101,101,110,13,10,60,104,101,97,100,62,13,10,60,32,38,113,117,111,116,59, -84,104,101,32,99,111,109,112,105,108,97,116,105,111,110,104,101,32,104,97,100,32 -,98,101,101,110,112,114,111,100,117,99,101,100,32,98,121,112,104,105,108,111,115 -,111,112,104,101,114,99,111,110,115,116,114,117,99,116,101,100,105,110,116,101, -110,100,101,100,32,116,111,97,109,111,110,103,32,111,116,104,101,114,99,111,109, -112,97,114,101,100,32,116,111,116,111,32,115,97,121,32,116,104,97,116,69,110,103 -,105,110,101,101,114,105,110,103,97,32,100,105,102,102,101,114,101,110,116,114, -101,102,101,114,114,101,100,32,116,111,100,105,102,102,101,114,101,110,99,101, -115,98,101,108,105,101,102,32,116,104,97,116,112,104,111,116,111,103,114,97,112, -104,115,105,100,101,110,116,105,102,121,105,110,103,72,105,115,116,111,114,121, -32,111,102,32,82,101,112,117,98,108,105,99,32,111,102,110,101,99,101,115,115,97, -114,105,108,121,112,114,111,98,97,98,105,108,105,116,121,116,101,99,104,110,105, -99,97,108,108,121,108,101,97,118,105,110,103,32,116,104,101,115,112,101,99,116, -97,99,117,108,97,114,102,114,97,99,116,105,111,110,32,111,102,101,108,101,99,116 -,114,105,99,105,116,121,104,101,97,100,32,111,102,32,116,104,101,114,101,115,116 -,97,117,114,97,110,116,115,112,97,114,116,110,101,114,115,104,105,112,101,109, -112,104,97,115,105,115,32,111,110,109,111,115,116,32,114,101,99,101,110,116,115, -104,97,114,101,32,119,105,116,104,32,115,97,121,105,110,103,32,116,104,97,116, -102,105,108,108,101,100,32,119,105,116,104,100,101,115,105,103,110,101,100,32, -116,111,105,116,32,105,115,32,111,102,116,101,110,34,62,60,47,105,102,114,97,109 -,101,62,97,115,32,102,111,108,108,111,119,115,58,109,101,114,103,101,100,32,119, -105,116,104,116,104,114,111,117,103,104,32,116,104,101,99,111,109,109,101,114,99 -,105,97,108,32,112,111,105,110,116,101,100,32,111,117,116,111,112,112,111,114, -116,117,110,105,116,121,118,105,101,119,32,111,102,32,116,104,101,114,101,113, -117,105,114,101,109,101,110,116,100,105,118,105,115,105,111,110,32,111,102,112, -114,111,103,114,97,109,109,105,110,103,104,101,32,114,101,99,101,105,118,101,100 -,115,101,116,73,110,116,101,114,118,97,108,34,62,60,47,115,112,97,110,62,60,47, -105,110,32,78,101,119,32,89,111,114,107,97,100,100,105,116,105,111,110,97,108,32 -,99,111,109,112,114,101,115,115,105,111,110,10,10,60,100,105,118,32,105,100,61, -34,105,110,99,111,114,112,111,114,97,116,101,59,60,47,115,99,114,105,112,116,62, -60,97,116,116,97,99,104,69,118,101,110,116,98,101,99,97,109,101,32,116,104,101, -32,34,32,116,97,114,103,101,116,61,34,95,99,97,114,114,105,101,100,32,111,117, -116,83,111,109,101,32,111,102,32,116,104,101,115,99,105,101,110,99,101,32,97,110 -,100,116,104,101,32,116,105,109,101,32,111,102,67,111,110,116,97,105,110,101,114 -,34,62,109,97,105,110,116,97,105,110,105,110,103,67,104,114,105,115,116,111,112, -104,101,114,77,117,99,104,32,111,102,32,116,104,101,119,114,105,116,105,110,103, -115,32,111,102,34,32,104,101,105,103,104,116,61,34,50,115,105,122,101,32,111,102 -,32,116,104,101,118,101,114,115,105,111,110,32,111,102,32,109,105,120,116,117, -114,101,32,111,102,32,98,101,116,119,101,101,110,32,116,104,101,69,120,97,109, -112,108,101,115,32,111,102,101,100,117,99,97,116,105,111,110,97,108,99,111,109, -112,101,116,105,116,105,118,101,32,111,110,115,117,98,109,105,116,61,34,100,105, -114,101,99,116,111,114,32,111,102,100,105,115,116,105,110,99,116,105,118,101,47, -68,84,68,32,88,72,84,77,76,32,114,101,108,97,116,105,110,103,32,116,111,116,101, -110,100,101,110,99,121,32,116,111,112,114,111,118,105,110,99,101,32,111,102,119, -104,105,99,104,32,119,111,117,108,100,100,101,115,112,105,116,101,32,116,104,101 -,115,99,105,101,110,116,105,102,105,99,32,108,101,103,105,115,108,97,116,117,114 -,101,46,105,110,110,101,114,72,84,77,76,32,97,108,108,101,103,97,116,105,111,110 -,115,65,103,114,105,99,117,108,116,117,114,101,119,97,115,32,117,115,101,100,32, -105,110,97,112,112,114,111,97,99,104,32,116,111,105,110,116,101,108,108,105,103, -101,110,116,121,101,97,114,115,32,108,97,116,101,114,44,115,97,110,115,45,115, -101,114,105,102,100,101,116,101,114,109,105,110,105,110,103,80,101,114,102,111, -114,109,97,110,99,101,97,112,112,101,97,114,97,110,99,101,115,44,32,119,104,105, -99,104,32,105,115,32,102,111,117,110,100,97,116,105,111,110,115,97,98,98,114,101 -,118,105,97,116,101,100,104,105,103,104,101,114,32,116,104,97,110,115,32,102,114 -,111,109,32,116,104,101,32,105,110,100,105,118,105,100,117,97,108,32,99,111,109, -112,111,115,101,100,32,111,102,115,117,112,112,111,115,101,100,32,116,111,99,108 -,97,105,109,115,32,116,104,97,116,97,116,116,114,105,98,117,116,105,111,110,102, -111,110,116,45,115,105,122,101,58,49,101,108,101,109,101,110,116,115,32,111,102, -72,105,115,116,111,114,105,99,97,108,32,104,105,115,32,98,114,111,116,104,101, -114,97,116,32,116,104,101,32,116,105,109,101,97,110,110,105,118,101,114,115,97, -114,121,103,111,118,101,114,110,101,100,32,98,121,114,101,108,97,116,101,100,32, -116,111,32,117,108,116,105,109,97,116,101,108,121,32,105,110,110,111,118,97,116, -105,111,110,115,105,116,32,105,115,32,115,116,105,108,108,99,97,110,32,111,110, -108,121,32,98,101,100,101,102,105,110,105,116,105,111,110,115,116,111,71,77,84, -83,116,114,105,110,103,65,32,110,117,109,98,101,114,32,111,102,105,109,103,32,99 -,108,97,115,115,61,34,69,118,101,110,116,117,97,108,108,121,44,119,97,115,32,99, -104,97,110,103,101,100,111,99,99,117,114,114,101,100,32,105,110,110,101,105,103, -104,98,111,114,105,110,103,100,105,115,116,105,110,103,117,105,115,104,119,104, -101,110,32,104,101,32,119,97,115,105,110,116,114,111,100,117,99,105,110,103,116, -101,114,114,101,115,116,114,105,97,108,77,97,110,121,32,111,102,32,116,104,101, -97,114,103,117,101,115,32,116,104,97,116,97,110,32,65,109,101,114,105,99,97,110, -99,111,110,113,117,101,115,116,32,111,102,119,105,100,101,115,112,114,101,97,100 -,32,119,101,114,101,32,107,105,108,108,101,100,115,99,114,101,101,110,32,97,110, -100,32,73,110,32,111,114,100,101,114,32,116,111,101,120,112,101,99,116,101,100, -32,116,111,100,101,115,99,101,110,100,97,110,116,115,97,114,101,32,108,111,99,97 -,116,101,100,108,101,103,105,115,108,97,116,105,118,101,103,101,110,101,114,97, -116,105,111,110,115,32,98,97,99,107,103,114,111,117,110,100,109,111,115,116,32, -112,101,111,112,108,101,121,101,97,114,115,32,97,102,116,101,114,116,104,101,114 -,101,32,105,115,32,110,111,116,104,101,32,104,105,103,104,101,115,116,102,114, -101,113,117,101,110,116,108,121,32,116,104,101,121,32,100,111,32,110,111,116,97, -114,103,117,101,100,32,116,104,97,116,115,104,111,119,101,100,32,116,104,97,116, -112,114,101,100,111,109,105,110,97,110,116,116,104,101,111,108,111,103,105,99,97 -,108,98,121,32,116,104,101,32,116,105,109,101,99,111,110,115,105,100,101,114,105 -,110,103,115,104,111,114,116,45,108,105,118,101,100,60,47,115,112,97,110,62,60, -47,97,62,99,97,110,32,98,101,32,117,115,101,100,118,101,114,121,32,108,105,116, -116,108,101,111,110,101,32,111,102,32,116,104,101,32,104,97,100,32,97,108,114, -101,97,100,121,105,110,116,101,114,112,114,101,116,101,100,99,111,109,109,117, -110,105,99,97,116,101,102,101,97,116,117,114,101,115,32,111,102,103,111,118,101, -114,110,109,101,110,116,44,60,47,110,111,115,99,114,105,112,116,62,101,110,116, -101,114,101,100,32,116,104,101,34,32,104,101,105,103,104,116,61,34,51,73,110,100 -,101,112,101,110,100,101,110,116,112,111,112,117,108,97,116,105,111,110,115,108, -97,114,103,101,45,115,99,97,108,101,46,32,65,108,116,104,111,117,103,104,32,117, -115,101,100,32,105,110,32,116,104,101,100,101,115,116,114,117,99,116,105,111,110 -,112,111,115,115,105,98,105,108,105,116,121,115,116,97,114,116,105,110,103,32, -105,110,116,119,111,32,111,114,32,109,111,114,101,101,120,112,114,101,115,115, -105,111,110,115,115,117,98,111,114,100,105,110,97,116,101,108,97,114,103,101,114 -,32,116,104,97,110,104,105,115,116,111,114,121,32,97,110,100,60,47,111,112,116, -105,111,110,62,13,10,67,111,110,116,105,110,101,110,116,97,108,101,108,105,109, -105,110,97,116,105,110,103,119,105,108,108,32,110,111,116,32,98,101,112,114,97, -99,116,105,99,101,32,111,102,105,110,32,102,114,111,110,116,32,111,102,115,105, -116,101,32,111,102,32,116,104,101,101,110,115,117,114,101,32,116,104,97,116,116, -111,32,99,114,101,97,116,101,32,97,109,105,115,115,105,115,115,105,112,112,105, -112,111,116,101,110,116,105,97,108,108,121,111,117,116,115,116,97,110,100,105, -110,103,98,101,116,116,101,114,32,116,104,97,110,119,104,97,116,32,105,115,32, -110,111,119,115,105,116,117,97,116,101,100,32,105,110,109,101,116,97,32,110,97, -109,101,61,34,84,114,97,100,105,116,105,111,110,97,108,115,117,103,103,101,115, -116,105,111,110,115,84,114,97,110,115,108,97,116,105,111,110,116,104,101,32,102, -111,114,109,32,111,102,97,116,109,111,115,112,104,101,114,105,99,105,100,101,111 -,108,111,103,105,99,97,108,101,110,116,101,114,112,114,105,115,101,115,99,97,108 -,99,117,108,97,116,105,110,103,101,97,115,116,32,111,102,32,116,104,101,114,101, -109,110,97,110,116,115,32,111,102,112,108,117,103,105,110,115,112,97,103,101,47, -105,110,100,101,120,46,112,104,112,63,114,101,109,97,105,110,101,100,32,105,110, -116,114,97,110,115,102,111,114,109,101,100,72,101,32,119,97,115,32,97,108,115, -111,119,97,115,32,97,108,114,101,97,100,121,115,116,97,116,105,115,116,105,99,97 -,108,105,110,32,102,97,118,111,114,32,111,102,77,105,110,105,115,116,114,121,32, -111,102,109,111,118,101,109,101,110,116,32,111,102,102,111,114,109,117,108,97, -116,105,111,110,105,115,32,114,101,113,117,105,114,101,100,60,108,105,110,107,32 -,114,101,108,61,34,84,104,105,115,32,105,115,32,116,104,101,32,60,97,32,104,114, -101,102,61,34,47,112,111,112,117,108,97,114,105,122,101,100,105,110,118,111,108, -118,101,100,32,105,110,97,114,101,32,117,115,101,100,32,116,111,97,110,100,32, -115,101,118,101,114,97,108,109,97,100,101,32,98,121,32,116,104,101,115,101,101, -109,115,32,116,111,32,98,101,108,105,107,101,108,121,32,116,104,97,116,80,97,108 -,101,115,116,105,110,105,97,110,110,97,109,101,100,32,97,102,116,101,114,105,116 -,32,104,97,100,32,98,101,101,110,109,111,115,116,32,99,111,109,109,111,110,116, -111,32,114,101,102,101,114,32,116,111,98,117,116,32,116,104,105,115,32,105,115, -99,111,110,115,101,99,117,116,105,118,101,116,101,109,112,111,114,97,114,105,108 -,121,73,110,32,103,101,110,101,114,97,108,44,99,111,110,118,101,110,116,105,111, -110,115,116,97,107,101,115,32,112,108,97,99,101,115,117,98,100,105,118,105,115, -105,111,110,116,101,114,114,105,116,111,114,105,97,108,111,112,101,114,97,116, -105,111,110,97,108,112,101,114,109,97,110,101,110,116,108,121,119,97,115,32,108, -97,114,103,101,108,121,111,117,116,98,114,101,97,107,32,111,102,105,110,32,116, -104,101,32,112,97,115,116,102,111,108,108,111,119,105,110,103,32,97,32,120,109, -108,110,115,58,111,103,61,34,62,60,97,32,99,108,97,115,115,61,34,99,108,97,115, -115,61,34,116,101,120,116,67,111,110,118,101,114,115,105,111,110,32,109,97,121, -32,98,101,32,117,115,101,100,109,97,110,117,102,97,99,116,117,114,101,97,102,116 -,101,114,32,98,101,105,110,103,99,108,101,97,114,102,105,120,34,62,10,113,117, -101,115,116,105,111,110,32,111,102,119,97,115,32,101,108,101,99,116,101,100,116, -111,32,98,101,99,111,109,101,32,97,98,101,99,97,117,115,101,32,111,102,32,115, -111,109,101,32,112,101,111,112,108,101,105,110,115,112,105,114,101,100,32,98,121 -,115,117,99,99,101,115,115,102,117,108,32,97,32,116,105,109,101,32,119,104,101, -110,109,111,114,101,32,99,111,109,109,111,110,97,109,111,110,103,115,116,32,116, -104,101,97,110,32,111,102,102,105,99,105,97,108,119,105,100,116,104,58,49,48,48, -37,59,116,101,99,104,110,111,108,111,103,121,44,119,97,115,32,97,100,111,112,116 -,101,100,116,111,32,107,101,101,112,32,116,104,101,115,101,116,116,108,101,109, -101,110,116,115,108,105,118,101,32,98,105,114,116,104,115,105,110,100,101,120,46 -,104,116,109,108,34,67,111,110,110,101,99,116,105,99,117,116,97,115,115,105,103, -110,101,100,32,116,111,38,97,109,112,59,116,105,109,101,115,59,97,99,99,111,117, -110,116,32,102,111,114,97,108,105,103,110,61,114,105,103,104,116,116,104,101,32, -99,111,109,112,97,110,121,97,108,119,97,121,115,32,98,101,101,110,114,101,116, -117,114,110,101,100,32,116,111,105,110,118,111,108,118,101,109,101,110,116,66, -101,99,97,117,115,101,32,116,104,101,116,104,105,115,32,112,101,114,105,111,100, -34,32,110,97,109,101,61,34,113,34,32,99,111,110,102,105,110,101,100,32,116,111, -97,32,114,101,115,117,108,116,32,111,102,118,97,108,117,101,61,34,34,32,47,62, -105,115,32,97,99,116,117,97,108,108,121,69,110,118,105,114,111,110,109,101,110, -116,13,10,60,47,104,101,97,100,62,13,10,67,111,110,118,101,114,115,101,108,121, -44,62,10,60,100,105,118,32,105,100,61,34,48,34,32,119,105,100,116,104,61,34,49, -105,115,32,112,114,111,98,97,98,108,121,104,97,118,101,32,98,101,99,111,109,101, -99,111,110,116,114,111,108,108,105,110,103,116,104,101,32,112,114,111,98,108,101 -,109,99,105,116,105,122,101,110,115,32,111,102,112,111,108,105,116,105,99,105,97 -,110,115,114,101,97,99,104,101,100,32,116,104,101,97,115,32,101,97,114,108,121, -32,97,115,58,110,111,110,101,59,32,111,118,101,114,60,116,97,98,108,101,32,99, -101,108,108,118,97,108,105,100,105,116,121,32,111,102,100,105,114,101,99,116,108 -,121,32,116,111,111,110,109,111,117,115,101,100,111,119,110,119,104,101,114,101, -32,105,116,32,105,115,119,104,101,110,32,105,116,32,119,97,115,109,101,109,98, -101,114,115,32,111,102,32,114,101,108,97,116,105,111,110,32,116,111,97,99,99,111 -,109,109,111,100,97,116,101,97,108,111,110,103,32,119,105,116,104,32,73,110,32, -116,104,101,32,108,97,116,101,116,104,101,32,69,110,103,108,105,115,104,100,101, -108,105,99,105,111,117,115,34,62,116,104,105,115,32,105,115,32,110,111,116,116, -104,101,32,112,114,101,115,101,110,116,105,102,32,116,104,101,121,32,97,114,101, -97,110,100,32,102,105,110,97,108,108,121,97,32,109,97,116,116,101,114,32,111,102 -,13,10,9,60,47,100,105,118,62,13,10,13,10,60,47,115,99,114,105,112,116,62,102,97 -,115,116,101,114,32,116,104,97,110,109,97,106,111,114,105,116,121,32,111,102,97, -102,116,101,114,32,119,104,105,99,104,99,111,109,112,97,114,97,116,105,118,101, -116,111,32,109,97,105,110,116,97,105,110,105,109,112,114,111,118,101,32,116,104, -101,97,119,97,114,100,101,100,32,116,104,101,101,114,34,32,99,108,97,115,115,61, -34,102,114,97,109,101,98,111,114,100,101,114,114,101,115,116,111,114,97,116,105, -111,110,105,110,32,116,104,101,32,115,97,109,101,97,110,97,108,121,115,105,115, -32,111,102,116,104,101,105,114,32,102,105,114,115,116,68,117,114,105,110,103,32, -116,104,101,32,99,111,110,116,105,110,101,110,116,97,108,115,101,113,117,101,110 -,99,101,32,111,102,102,117,110,99,116,105,111,110,40,41,123,102,111,110,116,45, -115,105,122,101,58,32,119,111,114,107,32,111,110,32,116,104,101,60,47,115,99,114 -,105,112,116,62,10,60,98,101,103,105,110,115,32,119,105,116,104,106,97,118,97, -115,99,114,105,112,116,58,99,111,110,115,116,105,116,117,101,110,116,119,97,115, -32,102,111,117,110,100,101,100,101,113,117,105,108,105,98,114,105,117,109,97,115 -,115,117,109,101,32,116,104,97,116,105,115,32,103,105,118,101,110,32,98,121,110, -101,101,100,115,32,116,111,32,98,101,99,111,111,114,100,105,110,97,116,101,115, -116,104,101,32,118,97,114,105,111,117,115,97,114,101,32,112,97,114,116,32,111, -102,111,110,108,121,32,105,110,32,116,104,101,115,101,99,116,105,111,110,115,32, -111,102,105,115,32,97,32,99,111,109,109,111,110,116,104,101,111,114,105,101,115, -32,111,102,100,105,115,99,111,118,101,114,105,101,115,97,115,115,111,99,105,97, -116,105,111,110,101,100,103,101,32,111,102,32,116,104,101,115,116,114,101,110, -103,116,104,32,111,102,112,111,115,105,116,105,111,110,32,105,110,112,114,101, -115,101,110,116,45,100,97,121,117,110,105,118,101,114,115,97,108,108,121,116,111 -,32,102,111,114,109,32,116,104,101,98,117,116,32,105,110,115,116,101,97,100,99, -111,114,112,111,114,97,116,105,111,110,97,116,116,97,99,104,101,100,32,116,111, -105,115,32,99,111,109,109,111,110,108,121,114,101,97,115,111,110,115,32,102,111, -114,32,38,113,117,111,116,59,116,104,101,32,99,97,110,32,98,101,32,109,97,100, -101,119,97,115,32,97,98,108,101,32,116,111,119,104,105,99,104,32,109,101,97,110, -115,98,117,116,32,100,105,100,32,110,111,116,111,110,77,111,117,115,101,79,118, -101,114,97,115,32,112,111,115,115,105,98,108,101,111,112,101,114,97,116,101,100, -32,98,121,99,111,109,105,110,103,32,102,114,111,109,116,104,101,32,112,114,105, -109,97,114,121,97,100,100,105,116,105,111,110,32,111,102,102,111,114,32,115,101, -118,101,114,97,108,116,114,97,110,115,102,101,114,114,101,100,97,32,112,101,114, -105,111,100,32,111,102,97,114,101,32,97,98,108,101,32,116,111,104,111,119,101, -118,101,114,44,32,105,116,115,104,111,117,108,100,32,104,97,118,101,109,117,99, -104,32,108,97,114,103,101,114,10,9,60,47,115,99,114,105,112,116,62,97,100,111, -112,116,101,100,32,116,104,101,112,114,111,112,101,114,116,121,32,111,102,100, -105,114,101,99,116,101,100,32,98,121,101,102,102,101,99,116,105,118,101,108,121, -119,97,115,32,98,114,111,117,103,104,116,99,104,105,108,100,114,101,110,32,111, -102,80,114,111,103,114,97,109,109,105,110,103,108,111,110,103,101,114,32,116,104 -,97,110,109,97,110,117,115,99,114,105,112,116,115,119,97,114,32,97,103,97,105, -110,115,116,98,121,32,109,101,97,110,115,32,111,102,97,110,100,32,109,111,115, -116,32,111,102,115,105,109,105,108,97,114,32,116,111,32,112,114,111,112,114,105, -101,116,97,114,121,111,114,105,103,105,110,97,116,105,110,103,112,114,101,115, -116,105,103,105,111,117,115,103,114,97,109,109,97,116,105,99,97,108,101,120,112, -101,114,105,101,110,99,101,46,116,111,32,109,97,107,101,32,116,104,101,73,116,32 -,119,97,115,32,97,108,115,111,105,115,32,102,111,117,110,100,32,105,110,99,111, -109,112,101,116,105,116,111,114,115,105,110,32,116,104,101,32,85,46,83,46,114, -101,112,108,97,99,101,32,116,104,101,98,114,111,117,103,104,116,32,116,104,101, -99,97,108,99,117,108,97,116,105,111,110,102,97,108,108,32,111,102,32,116,104,101 -,116,104,101,32,103,101,110,101,114,97,108,112,114,97,99,116,105,99,97,108,108, -121,105,110,32,104,111,110,111,114,32,111,102,114,101,108,101,97,115,101,100,32, -105,110,114,101,115,105,100,101,110,116,105,97,108,97,110,100,32,115,111,109,101 -,32,111,102,107,105,110,103,32,111,102,32,116,104,101,114,101,97,99,116,105,111, -110,32,116,111,49,115,116,32,69,97,114,108,32,111,102,99,117,108,116,117,114,101 -,32,97,110,100,112,114,105,110,99,105,112,97,108,108,121,60,47,116,105,116,108, -101,62,10,32,32,116,104,101,121,32,99,97,110,32,98,101,98,97,99,107,32,116,111, -32,116,104,101,115,111,109,101,32,111,102,32,104,105,115,101,120,112,111,115,117 -,114,101,32,116,111,97,114,101,32,115,105,109,105,108,97,114,102,111,114,109,32, -111,102,32,116,104,101,97,100,100,70,97,118,111,114,105,116,101,99,105,116,105, -122,101,110,115,104,105,112,112,97,114,116,32,105,110,32,116,104,101,112,101,111 -,112,108,101,32,119,105,116,104,105,110,32,112,114,97,99,116,105,99,101,116,111, -32,99,111,110,116,105,110,117,101,38,97,109,112,59,109,105,110,117,115,59,97,112 -,112,114,111,118,101,100,32,98,121,32,116,104,101,32,102,105,114,115,116,32,97, -108,108,111,119,101,100,32,116,104,101,97,110,100,32,102,111,114,32,116,104,101, -102,117,110,99,116,105,111,110,105,110,103,112,108,97,121,105,110,103,32,116,104 -,101,115,111,108,117,116,105,111,110,32,116,111,104,101,105,103,104,116,61,34,48 -,34,32,105,110,32,104,105,115,32,98,111,111,107,109,111,114,101,32,116,104,97, -110,32,97,102,111,108,108,111,119,115,32,116,104,101,99,114,101,97,116,101,100, -32,116,104,101,112,114,101,115,101,110,99,101,32,105,110,38,110,98,115,112,59,60 -,47,116,100,62,110,97,116,105,111,110,97,108,105,115,116,116,104,101,32,105,100, -101,97,32,111,102,97,32,99,104,97,114,97,99,116,101,114,119,101,114,101,32,102, -111,114,99,101,100,32,99,108,97,115,115,61,34,98,116,110,100,97,121,115,32,111, -102,32,116,104,101,102,101,97,116,117,114,101,100,32,105,110,115,104,111,119,105 -,110,103,32,116,104,101,105,110,116,101,114,101,115,116,32,105,110,105,110,32, -112,108,97,99,101,32,111,102,116,117,114,110,32,111,102,32,116,104,101,116,104, -101,32,104,101,97,100,32,111,102,76,111,114,100,32,111,102,32,116,104,101,112, -111,108,105,116,105,99,97,108,108,121,104,97,115,32,105,116,115,32,111,119,110, -69,100,117,99,97,116,105,111,110,97,108,97,112,112,114,111,118,97,108,32,111,102 -,115,111,109,101,32,111,102,32,116,104,101,101,97,99,104,32,111,116,104,101,114, -44,98,101,104,97,118,105,111,114,32,111,102,97,110,100,32,98,101,99,97,117,115, -101,97,110,100,32,97,110,111,116,104,101,114,97,112,112,101,97,114,101,100,32, -111,110,114,101,99,111,114,100,101,100,32,105,110,98,108,97,99,107,38,113,117, -111,116,59,109,97,121,32,105,110,99,108,117,100,101,116,104,101,32,119,111,114, -108,100,39,115,99,97,110,32,108,101,97,100,32,116,111,114,101,102,101,114,115,32 -,116,111,32,97,98,111,114,100,101,114,61,34,48,34,32,103,111,118,101,114,110,109 -,101,110,116,32,119,105,110,110,105,110,103,32,116,104,101,114,101,115,117,108, -116,101,100,32,105,110,32,119,104,105,108,101,32,116,104,101,32,87,97,115,104, -105,110,103,116,111,110,44,116,104,101,32,115,117,98,106,101,99,116,99,105,116, -121,32,105,110,32,116,104,101,62,60,47,100,105,118,62,13,10,9,9,114,101,102,108, -101,99,116,32,116,104,101,116,111,32,99,111,109,112,108,101,116,101,98,101,99,97 -,109,101,32,109,111,114,101,114,97,100,105,111,97,99,116,105,118,101,114,101,106 -,101,99,116,101,100,32,98,121,119,105,116,104,111,117,116,32,97,110,121,104,105, -115,32,102,97,116,104,101,114,44,119,104,105,99,104,32,99,111,117,108,100,99,111 -,112,121,32,111,102,32,116,104,101,116,111,32,105,110,100,105,99,97,116,101,97, -32,112,111,108,105,116,105,99,97,108,97,99,99,111,117,110,116,115,32,111,102,99, -111,110,115,116,105,116,117,116,101,115,119,111,114,107,101,100,32,119,105,116, -104,101,114,60,47,97,62,60,47,108,105,62,111,102,32,104,105,115,32,108,105,102, -101,97,99,99,111,109,112,97,110,105,101,100,99,108,105,101,110,116,87,105,100, -116,104,112,114,101,118,101,110,116,32,116,104,101,76,101,103,105,115,108,97,116 -,105,118,101,100,105,102,102,101,114,101,110,116,108,121,116,111,103,101,116,104 -,101,114,32,105,110,104,97,115,32,115,101,118,101,114,97,108,102,111,114,32,97, -110,111,116,104,101,114,116,101,120,116,32,111,102,32,116,104,101,102,111,117, -110,100,101,100,32,116,104,101,101,32,119,105,116,104,32,116,104,101,32,105,115, -32,117,115,101,100,32,102,111,114,99,104,97,110,103,101,100,32,116,104,101,117, -115,117,97,108,108,121,32,116,104,101,112,108,97,99,101,32,119,104,101,114,101, -119,104,101,114,101,97,115,32,116,104,101,62,32,60,97,32,104,114,101,102,61,34, -34,62,60,97,32,104,114,101,102,61,34,116,104,101,109,115,101,108,118,101,115,44, -97,108,116,104,111,117,103,104,32,104,101,116,104,97,116,32,99,97,110,32,98,101, -116,114,97,100,105,116,105,111,110,97,108,114,111,108,101,32,111,102,32,116,104, -101,97,115,32,97,32,114,101,115,117,108,116,114,101,109,111,118,101,67,104,105, -108,100,100,101,115,105,103,110,101,100,32,98,121,119,101,115,116,32,111,102,32, -116,104,101,83,111,109,101,32,112,101,111,112,108,101,112,114,111,100,117,99,116 -,105,111,110,44,115,105,100,101,32,111,102,32,116,104,101,110,101,119,115,108, -101,116,116,101,114,115,117,115,101,100,32,98,121,32,116,104,101,100,111,119,110 -,32,116,111,32,116,104,101,97,99,99,101,112,116,101,100,32,98,121,108,105,118, -101,32,105,110,32,116,104,101,97,116,116,101,109,112,116,115,32,116,111,111,117, -116,115,105,100,101,32,116,104,101,102,114,101,113,117,101,110,99,105,101,115,72 -,111,119,101,118,101,114,44,32,105,110,112,114,111,103,114,97,109,109,101,114, -115,97,116,32,108,101,97,115,116,32,105,110,97,112,112,114,111,120,105,109,97, -116,101,97,108,116,104,111,117,103,104,32,105,116,119,97,115,32,112,97,114,116, -32,111,102,97,110,100,32,118,97,114,105,111,117,115,71,111,118,101,114,110,111, -114,32,111,102,116,104,101,32,97,114,116,105,99,108,101,116,117,114,110,101,100, -32,105,110,116,111,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,101,99, -111,110,111,109,121,105,115,32,116,104,101,32,109,111,115,116,109,111,115,116,32 -,119,105,100,101,108,121,119,111,117,108,100,32,108,97,116,101,114,97,110,100,32 -,112,101,114,104,97,112,115,114,105,115,101,32,116,111,32,116,104,101,111,99,99, -117,114,115,32,119,104,101,110,117,110,100,101,114,32,119,104,105,99,104,99,111, -110,100,105,116,105,111,110,115,46,116,104,101,32,119,101,115,116,101,114,110, -116,104,101,111,114,121,32,116,104,97,116,105,115,32,112,114,111,100,117,99,101, -100,116,104,101,32,99,105,116,121,32,111,102,105,110,32,119,104,105,99,104,32, -104,101,115,101,101,110,32,105,110,32,116,104,101,116,104,101,32,99,101,110,116, -114,97,108,98,117,105,108,100,105,110,103,32,111,102,109,97,110,121,32,111,102, -32,104,105,115,97,114,101,97,32,111,102,32,116,104,101,105,115,32,116,104,101,32 -,111,110,108,121,109,111,115,116,32,111,102,32,116,104,101,109,97,110,121,32,111 -,102,32,116,104,101,116,104,101,32,87,101,115,116,101,114,110,84,104,101,114,101 -,32,105,115,32,110,111,101,120,116,101,110,100,101,100,32,116,111,83,116,97,116, -105,115,116,105,99,97,108,99,111,108,115,112,97,110,61,50,32,124,115,104,111,114 -,116,32,115,116,111,114,121,112,111,115,115,105,98,108,101,32,116,111,116,111, -112,111,108,111,103,105,99,97,108,99,114,105,116,105,99,97,108,32,111,102,114, -101,112,111,114,116,101,100,32,116,111,97,32,67,104,114,105,115,116,105,97,110, -100,101,99,105,115,105,111,110,32,116,111,105,115,32,101,113,117,97,108,32,116, -111,112,114,111,98,108,101,109,115,32,111,102,84,104,105,115,32,99,97,110,32,98, -101,109,101,114,99,104,97,110,100,105,115,101,102,111,114,32,109,111,115,116,32, -111,102,110,111,32,101,118,105,100,101,110,99,101,101,100,105,116,105,111,110, -115,32,111,102,101,108,101,109,101,110,116,115,32,105,110,38,113,117,111,116,59, -46,32,84,104,101,99,111,109,47,105,109,97,103,101,115,47,119,104,105,99,104,32, -109,97,107,101,115,116,104,101,32,112,114,111,99,101,115,115,114,101,109,97,105, -110,115,32,116,104,101,108,105,116,101,114,97,116,117,114,101,44,105,115,32,97, -32,109,101,109,98,101,114,116,104,101,32,112,111,112,117,108,97,114,116,104,101, -32,97,110,99,105,101,110,116,112,114,111,98,108,101,109,115,32,105,110,116,105, -109,101,32,111,102,32,116,104,101,100,101,102,101,97,116,101,100,32,98,121,98, -111,100,121,32,111,102,32,116,104,101,97,32,102,101,119,32,121,101,97,114,115, -109,117,99,104,32,111,102,32,116,104,101,116,104,101,32,119,111,114,107,32,111, -102,67,97,108,105,102,111,114,110,105,97,44,115,101,114,118,101,100,32,97,115,32 -,97,103,111,118,101,114,110,109,101,110,116,46,99,111,110,99,101,112,116,115,32, -111,102,109,111,118,101,109,101,110,116,32,105,110,9,9,60,100,105,118,32,105,100 -,61,34,105,116,34,32,118,97,108,117,101,61,34,108,97,110,103,117,97,103,101,32, -111,102,97,115,32,116,104,101,121,32,97,114,101,112,114,111,100,117,99,101,100, -32,105,110,105,115,32,116,104,97,116,32,116,104,101,101,120,112,108,97,105,110, -32,116,104,101,100,105,118,62,60,47,100,105,118,62,10,72,111,119,101,118,101,114 -,32,116,104,101,108,101,97,100,32,116,111,32,116,104,101,9,60,97,32,104,114,101, -102,61,34,47,119,97,115,32,103,114,97,110,116,101,100,112,101,111,112,108,101,32 -,104,97,118,101,99,111,110,116,105,110,117,97,108,108,121,119,97,115,32,115,101, -101,110,32,97,115,97,110,100,32,114,101,108,97,116,101,100,116,104,101,32,114, -111,108,101,32,111,102,112,114,111,112,111,115,101,100,32,98,121,111,102,32,116, -104,101,32,98,101,115,116,101,97,99,104,32,111,116,104,101,114,46,67,111,110,115 -,116,97,110,116,105,110,101,112,101,111,112,108,101,32,102,114,111,109,100,105, -97,108,101,99,116,115,32,111,102,116,111,32,114,101,118,105,115,105,111,110,119, -97,115,32,114,101,110,97,109,101,100,97,32,115,111,117,114,99,101,32,111,102,116 -,104,101,32,105,110,105,116,105,97,108,108,97,117,110,99,104,101,100,32,105,110, -112,114,111,118,105,100,101,32,116,104,101,116,111,32,116,104,101,32,119,101,115 -,116,119,104,101,114,101,32,116,104,101,114,101,97,110,100,32,115,105,109,105, -108,97,114,98,101,116,119,101,101,110,32,116,119,111,105,115,32,97,108,115,111, -32,116,104,101,69,110,103,108,105,115,104,32,97,110,100,99,111,110,100,105,116, -105,111,110,115,44,116,104,97,116,32,105,116,32,119,97,115,101,110,116,105,116, -108,101,100,32,116,111,116,104,101,109,115,101,108,118,101,115,46,113,117,97,110 -,116,105,116,121,32,111,102,114,97,110,115,112,97,114,101,110,99,121,116,104,101 -,32,115,97,109,101,32,97,115,116,111,32,106,111,105,110,32,116,104,101,99,111, -117,110,116,114,121,32,97,110,100,116,104,105,115,32,105,115,32,116,104,101,84, -104,105,115,32,108,101,100,32,116,111,97,32,115,116,97,116,101,109,101,110,116, -99,111,110,116,114,97,115,116,32,116,111,108,97,115,116,73,110,100,101,120,79, -102,116,104,114,111,117,103,104,32,104,105,115,105,115,32,100,101,115,105,103, -110,101,100,116,104,101,32,116,101,114,109,32,105,115,105,115,32,112,114,111,118 -,105,100,101,100,112,114,111,116,101,99,116,32,116,104,101,110,103,60,47,97,62, -60,47,108,105,62,84,104,101,32,99,117,114,114,101,110,116,116,104,101,32,115,105 -,116,101,32,111,102,115,117,98,115,116,97,110,116,105,97,108,101,120,112,101,114 -,105,101,110,99,101,44,105,110,32,116,104,101,32,87,101,115,116,116,104,101,121, -32,115,104,111,117,108,100,115,108,111,118,101,110,196,141,105,110,97,99,111,109 -,101,110,116,97,114,105,111,115,117,110,105,118,101,114,115,105,100,97,100,99, -111,110,100,105,99,105,111,110,101,115,97,99,116,105,118,105,100,97,100,101,115, -101,120,112,101,114,105,101,110,99,105,97,116,101,99,110,111,108,111,103,195,173 -,97,112,114,111,100,117,99,99,105,195,179,110,112,117,110,116,117,97,99,105,195, -179,110,97,112,108,105,99,97,99,105,195,179,110,99,111,110,116,114,97,115,101, -195,177,97,99,97,116,101,103,111,114,195,173,97,115,114,101,103,105,115,116,114, -97,114,115,101,112,114,111,102,101,115,105,111,110,97,108,116,114,97,116,97,109, -105,101,110,116,111,114,101,103,195,173,115,116,114,97,116,101,115,101,99,114, -101,116,97,114,195,173,97,112,114,105,110,99,105,112,97,108,101,115,112,114,111, -116,101,99,99,105,195,179,110,105,109,112,111,114,116,97,110,116,101,115,105,109 -,112,111,114,116,97,110,99,105,97,112,111,115,105,98,105,108,105,100,97,100,105, -110,116,101,114,101,115,97,110,116,101,99,114,101,99,105,109,105,101,110,116,111 -,110,101,99,101,115,105,100,97,100,101,115,115,117,115,99,114,105,98,105,114,115 -,101,97,115,111,99,105,97,99,105,195,179,110,100,105,115,112,111,110,105,98,108, -101,115,101,118,97,108,117,97,99,105,195,179,110,101,115,116,117,100,105,97,110, -116,101,115,114,101,115,112,111,110,115,97,98,108,101,114,101,115,111,108,117,99 -,105,195,179,110,103,117,97,100,97,108,97,106,97,114,97,114,101,103,105,115,116, -114,97,100,111,115,111,112,111,114,116,117,110,105,100,97,100,99,111,109,101,114 -,99,105,97,108,101,115,102,111,116,111,103,114,97,102,195,173,97,97,117,116,111, -114,105,100,97,100,101,115,105,110,103,101,110,105,101,114,195,173,97,116,101, -108,101,118,105,115,105,195,179,110,99,111,109,112,101,116,101,110,99,105,97,111 -,112,101,114,97,99,105,111,110,101,115,101,115,116,97,98,108,101,99,105,100,111, -115,105,109,112,108,101,109,101,110,116,101,97,99,116,117,97,108,109,101,110,116 -,101,110,97,118,101,103,97,99,105,195,179,110,99,111,110,102,111,114,109,105,100 -,97,100,108,105,110,101,45,104,101,105,103,104,116,58,102,111,110,116,45,102,97, -109,105,108,121,58,34,32,58,32,34,104,116,116,112,58,47,47,97,112,112,108,105,99 -,97,116,105,111,110,115,108,105,110,107,34,32,104,114,101,102,61,34,115,112,101, -99,105,102,105,99,97,108,108,121,47,47,60,33,91,67,68,65,84,65,91,10,79,114,103, -97,110,105,122,97,116,105,111,110,100,105,115,116,114,105,98,117,116,105,111,110 -,48,112,120,59,32,104,101,105,103,104,116,58,114,101,108,97,116,105,111,110,115, -104,105,112,100,101,118,105,99,101,45,119,105,100,116,104,60,100,105,118,32,99, -108,97,115,115,61,34,60,108,97,98,101,108,32,102,111,114,61,34,114,101,103,105, -115,116,114,97,116,105,111,110,60,47,110,111,115,99,114,105,112,116,62,10,47,105 -,110,100,101,120,46,104,116,109,108,34,119,105,110,100,111,119,46,111,112,101, -110,40,32,33,105,109,112,111,114,116,97,110,116,59,97,112,112,108,105,99,97,116, -105,111,110,47,105,110,100,101,112,101,110,100,101,110,99,101,47,47,119,119,119, -46,103,111,111,103,108,101,111,114,103,97,110,105,122,97,116,105,111,110,97,117, -116,111,99,111,109,112,108,101,116,101,114,101,113,117,105,114,101,109,101,110, -116,115,99,111,110,115,101,114,118,97,116,105,118,101,60,102,111,114,109,32,110, -97,109,101,61,34,105,110,116,101,108,108,101,99,116,117,97,108,109,97,114,103, -105,110,45,108,101,102,116,58,49,56,116,104,32,99,101,110,116,117,114,121,97,110 -,32,105,109,112,111,114,116,97,110,116,105,110,115,116,105,116,117,116,105,111, -110,115,97,98,98,114,101,118,105,97,116,105,111,110,60,105,109,103,32,99,108,97, -115,115,61,34,111,114,103,97,110,105,115,97,116,105,111,110,99,105,118,105,108, -105,122,97,116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,97,114,99 -,104,105,116,101,99,116,117,114,101,105,110,99,111,114,112,111,114,97,116,101, -100,50,48,116,104,32,99,101,110,116,117,114,121,45,99,111,110,116,97,105,110,101 -,114,34,62,109,111,115,116,32,110,111,116,97,98,108,121,47,62,60,47,97,62,60,47, -100,105,118,62,110,111,116,105,102,105,99,97,116,105,111,110,39,117,110,100,101, -102,105,110,101,100,39,41,70,117,114,116,104,101,114,109,111,114,101,44,98,101, -108,105,101,118,101,32,116,104,97,116,105,110,110,101,114,72,84,77,76,32,61,32, -112,114,105,111,114,32,116,111,32,116,104,101,100,114,97,109,97,116,105,99,97, -108,108,121,114,101,102,101,114,114,105,110,103,32,116,111,110,101,103,111,116, -105,97,116,105,111,110,115,104,101,97,100,113,117,97,114,116,101,114,115,83,111, -117,116,104,32,65,102,114,105,99,97,117,110,115,117,99,99,101,115,115,102,117, -108,80,101,110,110,115,121,108,118,97,110,105,97,65,115,32,97,32,114,101,115,117 -,108,116,44,60,104,116,109,108,32,108,97,110,103,61,34,38,108,116,59,47,115,117, -112,38,103,116,59,100,101,97,108,105,110,103,32,119,105,116,104,112,104,105,108, -97,100,101,108,112,104,105,97,104,105,115,116,111,114,105,99,97,108,108,121,41, -59,60,47,115,99,114,105,112,116,62,10,112,97,100,100,105,110,103,45,116,111,112, -58,101,120,112,101,114,105,109,101,110,116,97,108,103,101,116,65,116,116,114,105 -,98,117,116,101,105,110,115,116,114,117,99,116,105,111,110,115,116,101,99,104, -110,111,108,111,103,105,101,115,112,97,114,116,32,111,102,32,116,104,101,32,61, -102,117,110,99,116,105,111,110,40,41,123,115,117,98,115,99,114,105,112,116,105, -111,110,108,46,100,116,100,34,62,13,10,60,104,116,103,101,111,103,114,97,112,104 -,105,99,97,108,67,111,110,115,116,105,116,117,116,105,111,110,39,44,32,102,117, -110,99,116,105,111,110,40,115,117,112,112,111,114,116,101,100,32,98,121,97,103, -114,105,99,117,108,116,117,114,97,108,99,111,110,115,116,114,117,99,116,105,111, -110,112,117,98,108,105,99,97,116,105,111,110,115,102,111,110,116,45,115,105,122, -101,58,32,49,97,32,118,97,114,105,101,116,121,32,111,102,60,100,105,118,32,115, -116,121,108,101,61,34,69,110,99,121,99,108,111,112,101,100,105,97,105,102,114,97 -,109,101,32,115,114,99,61,34,100,101,109,111,110,115,116,114,97,116,101,100,97, -99,99,111,109,112,108,105,115,104,101,100,117,110,105,118,101,114,115,105,116, -105,101,115,68,101,109,111,103,114,97,112,104,105,99,115,41,59,60,47,115,99,114, -105,112,116,62,60,100,101,100,105,99,97,116,101,100,32,116,111,107,110,111,119, -108,101,100,103,101,32,111,102,115,97,116,105,115,102,97,99,116,105,111,110,112, -97,114,116,105,99,117,108,97,114,108,121,60,47,100,105,118,62,60,47,100,105,118, -62,69,110,103,108,105,115,104,32,40,85,83,41,97,112,112,101,110,100,67,104,105, -108,100,40,116,114,97,110,115,109,105,115,115,105,111,110,115,46,32,72,111,119, -101,118,101,114,44,32,105,110,116,101,108,108,105,103,101,110,99,101,34,32,116, -97,98,105,110,100,101,120,61,34,102,108,111,97,116,58,114,105,103,104,116,59,67, -111,109,109,111,110,119,101,97,108,116,104,114,97,110,103,105,110,103,32,102,114 -,111,109,105,110,32,119,104,105,99,104,32,116,104,101,97,116,32,108,101,97,115, -116,32,111,110,101,114,101,112,114,111,100,117,99,116,105,111,110,101,110,99,121 -,99,108,111,112,101,100,105,97,59,102,111,110,116,45,115,105,122,101,58,49,106, -117,114,105,115,100,105,99,116,105,111,110,97,116,32,116,104,97,116,32,116,105, -109,101,34,62,60,97,32,99,108,97,115,115,61,34,73,110,32,97,100,100,105,116,105, -111,110,44,100,101,115,99,114,105,112,116,105,111,110,43,99,111,110,118,101,114, -115,97,116,105,111,110,99,111,110,116,97,99,116,32,119,105,116,104,105,115,32, -103,101,110,101,114,97,108,108,121,114,34,32,99,111,110,116,101,110,116,61,34, -114,101,112,114,101,115,101,110,116,105,110,103,38,108,116,59,109,97,116,104,38, -103,116,59,112,114,101,115,101,110,116,97,116,105,111,110,111,99,99,97,115,105, -111,110,97,108,108,121,60,105,109,103,32,119,105,100,116,104,61,34,110,97,118, -105,103,97,116,105,111,110,34,62,99,111,109,112,101,110,115,97,116,105,111,110, -99,104,97,109,112,105,111,110,115,104,105,112,109,101,100,105,97,61,34,97,108, -108,34,32,118,105,111,108,97,116,105,111,110,32,111,102,114,101,102,101,114,101, -110,99,101,32,116,111,114,101,116,117,114,110,32,116,114,117,101,59,83,116,114, -105,99,116,47,47,69,78,34,32,116,114,97,110,115,97,99,116,105,111,110,115,105, -110,116,101,114,118,101,110,116,105,111,110,118,101,114,105,102,105,99,97,116, -105,111,110,73,110,102,111,114,109,97,116,105,111,110,32,100,105,102,102,105,99, -117,108,116,105,101,115,67,104,97,109,112,105,111,110,115,104,105,112,99,97,112, -97,98,105,108,105,116,105,101,115,60,33,91,101,110,100,105,102,93,45,45,62,125, -10,60,47,115,99,114,105,112,116,62,10,67,104,114,105,115,116,105,97,110,105,116, -121,102,111,114,32,101,120,97,109,112,108,101,44,80,114,111,102,101,115,115,105, -111,110,97,108,114,101,115,116,114,105,99,116,105,111,110,115,115,117,103,103, -101,115,116,32,116,104,97,116,119,97,115,32,114,101,108,101,97,115,101,100,40, -115,117,99,104,32,97,115,32,116,104,101,114,101,109,111,118,101,67,108,97,115, -115,40,117,110,101,109,112,108,111,121,109,101,110,116,116,104,101,32,65,109,101 -,114,105,99,97,110,115,116,114,117,99,116,117,114,101,32,111,102,47,105,110,100, -101,120,46,104,116,109,108,32,112,117,98,108,105,115,104,101,100,32,105,110,115, -112,97,110,32,99,108,97,115,115,61,34,34,62,60,97,32,104,114,101,102,61,34,47, -105,110,116,114,111,100,117,99,116,105,111,110,98,101,108,111,110,103,105,110, -103,32,116,111,99,108,97,105,109,101,100,32,116,104,97,116,99,111,110,115,101, -113,117,101,110,99,101,115,60,109,101,116,97,32,110,97,109,101,61,34,71,117,105, -100,101,32,116,111,32,116,104,101,111,118,101,114,119,104,101,108,109,105,110, -103,97,103,97,105,110,115,116,32,116,104,101,32,99,111,110,99,101,110,116,114,97 -,116,101,100,44,10,46,110,111,110,116,111,117,99,104,32,111,98,115,101,114,118, -97,116,105,111,110,115,60,47,97,62,10,60,47,100,105,118,62,10,102,32,40,100,111, -99,117,109,101,110,116,46,98,111,114,100,101,114,58,32,49,112,120,32,123,102,111 -,110,116,45,115,105,122,101,58,49,116,114,101,97,116,109,101,110,116,32,111,102, -48,34,32,104,101,105,103,104,116,61,34,49,109,111,100,105,102,105,99,97,116,105, -111,110,73,110,100,101,112,101,110,100,101,110,99,101,100,105,118,105,100,101, -100,32,105,110,116,111,103,114,101,97,116,101,114,32,116,104,97,110,97,99,104, -105,101,118,101,109,101,110,116,115,101,115,116,97,98,108,105,115,104,105,110, -103,74,97,118,97,83,99,114,105,112,116,34,32,110,101,118,101,114,116,104,101,108 -,101,115,115,115,105,103,110,105,102,105,99,97,110,99,101,66,114,111,97,100,99, -97,115,116,105,110,103,62,38,110,98,115,112,59,60,47,116,100,62,99,111,110,116, -97,105,110,101,114,34,62,10,115,117,99,104,32,97,115,32,116,104,101,32,105,110, -102,108,117,101,110,99,101,32,111,102,97,32,112,97,114,116,105,99,117,108,97,114 -,115,114,99,61,39,104,116,116,112,58,47,47,110,97,118,105,103,97,116,105,111,110 -,34,32,104,97,108,102,32,111,102,32,116,104,101,32,115,117,98,115,116,97,110,116 -,105,97,108,32,38,110,98,115,112,59,60,47,100,105,118,62,97,100,118,97,110,116, -97,103,101,32,111,102,100,105,115,99,111,118,101,114,121,32,111,102,102,117,110, -100,97,109,101,110,116,97,108,32,109,101,116,114,111,112,111,108,105,116,97,110, -116,104,101,32,111,112,112,111,115,105,116,101,34,32,120,109,108,58,108,97,110, -103,61,34,100,101,108,105,98,101,114,97,116,101,108,121,97,108,105,103,110,61,99 -,101,110,116,101,114,101,118,111,108,117,116,105,111,110,32,111,102,112,114,101, -115,101,114,118,97,116,105,111,110,105,109,112,114,111,118,101,109,101,110,116, -115,98,101,103,105,110,110,105,110,103,32,105,110,74,101,115,117,115,32,67,104, -114,105,115,116,80,117,98,108,105,99,97,116,105,111,110,115,100,105,115,97,103, -114,101,101,109,101,110,116,116,101,120,116,45,97,108,105,103,110,58,114,44,32, -102,117,110,99,116,105,111,110,40,41,115,105,109,105,108,97,114,105,116,105,101, -115,98,111,100,121,62,60,47,104,116,109,108,62,105,115,32,99,117,114,114,101,110 -,116,108,121,97,108,112,104,97,98,101,116,105,99,97,108,105,115,32,115,111,109, -101,116,105,109,101,115,116,121,112,101,61,34,105,109,97,103,101,47,109,97,110, -121,32,111,102,32,116,104,101,32,102,108,111,119,58,104,105,100,100,101,110,59, -97,118,97,105,108,97,98,108,101,32,105,110,100,101,115,99,114,105,98,101,32,116, -104,101,101,120,105,115,116,101,110,99,101,32,111,102,97,108,108,32,111,118,101, -114,32,116,104,101,116,104,101,32,73,110,116,101,114,110,101,116,9,60,117,108,32 -,99,108,97,115,115,61,34,105,110,115,116,97,108,108,97,116,105,111,110,110,101, -105,103,104,98,111,114,104,111,111,100,97,114,109,101,100,32,102,111,114,99,101, -115,114,101,100,117,99,105,110,103,32,116,104,101,99,111,110,116,105,110,117,101 -,115,32,116,111,78,111,110,101,116,104,101,108,101,115,115,44,116,101,109,112, -101,114,97,116,117,114,101,115,10,9,9,60,97,32,104,114,101,102,61,34,99,108,111, -115,101,32,116,111,32,116,104,101,101,120,97,109,112,108,101,115,32,111,102,32, -105,115,32,97,98,111,117,116,32,116,104,101,40,115,101,101,32,98,101,108,111,119 -,41,46,34,32,105,100,61,34,115,101,97,114,99,104,112,114,111,102,101,115,115,105 -,111,110,97,108,105,115,32,97,118,97,105,108,97,98,108,101,116,104,101,32,111, -102,102,105,99,105,97,108,9,9,60,47,115,99,114,105,112,116,62,10,10,9,9,60,100, -105,118,32,105,100,61,34,97,99,99,101,108,101,114,97,116,105,111,110,116,104,114 -,111,117,103,104,32,116,104,101,32,72,97,108,108,32,111,102,32,70,97,109,101,100 -,101,115,99,114,105,112,116,105,111,110,115,116,114,97,110,115,108,97,116,105, -111,110,115,105,110,116,101,114,102,101,114,101,110,99,101,32,116,121,112,101,61 -,39,116,101,120,116,47,114,101,99,101,110,116,32,121,101,97,114,115,105,110,32, -116,104,101,32,119,111,114,108,100,118,101,114,121,32,112,111,112,117,108,97,114 -,123,98,97,99,107,103,114,111,117,110,100,58,116,114,97,100,105,116,105,111,110, -97,108,32,115,111,109,101,32,111,102,32,116,104,101,32,99,111,110,110,101,99,116 -,101,100,32,116,111,101,120,112,108,111,105,116,97,116,105,111,110,101,109,101, -114,103,101,110,99,101,32,111,102,99,111,110,115,116,105,116,117,116,105,111,110 -,65,32,72,105,115,116,111,114,121,32,111,102,115,105,103,110,105,102,105,99,97, -110,116,32,109,97,110,117,102,97,99,116,117,114,101,100,101,120,112,101,99,116, -97,116,105,111,110,115,62,60,110,111,115,99,114,105,112,116,62,60,99,97,110,32, -98,101,32,102,111,117,110,100,98,101,99,97,117,115,101,32,116,104,101,32,104,97, -115,32,110,111,116,32,98,101,101,110,110,101,105,103,104,98,111,117,114,105,110, -103,119,105,116,104,111,117,116,32,116,104,101,32,97,100,100,101,100,32,116,111, -32,116,104,101,9,60,108,105,32,99,108,97,115,115,61,34,105,110,115,116,114,117, -109,101,110,116,97,108,83,111,118,105,101,116,32,85,110,105,111,110,97,99,107, -110,111,119,108,101,100,103,101,100,119,104,105,99,104,32,99,97,110,32,98,101, -110,97,109,101,32,102,111,114,32,116,104,101,97,116,116,101,110,116,105,111,110, -32,116,111,97,116,116,101,109,112,116,115,32,116,111,32,100,101,118,101,108,111, -112,109,101,110,116,115,73,110,32,102,97,99,116,44,32,116,104,101,60,108,105,32, -99,108,97,115,115,61,34,97,105,109,112,108,105,99,97,116,105,111,110,115,115,117 -,105,116,97,98,108,101,32,102,111,114,109,117,99,104,32,111,102,32,116,104,101, -32,99,111,108,111,110,105,122,97,116,105,111,110,112,114,101,115,105,100,101,110 -,116,105,97,108,99,97,110,99,101,108,66,117,98,98,108,101,32,73,110,102,111,114, -109,97,116,105,111,110,109,111,115,116,32,111,102,32,116,104,101,32,105,115,32, -100,101,115,99,114,105,98,101,100,114,101,115,116,32,111,102,32,116,104,101,32, -109,111,114,101,32,111,114,32,108,101,115,115,105,110,32,83,101,112,116,101,109, -98,101,114,73,110,116,101,108,108,105,103,101,110,99,101,115,114,99,61,34,104, -116,116,112,58,47,47,112,120,59,32,104,101,105,103,104,116,58,32,97,118,97,105, -108,97,98,108,101,32,116,111,109,97,110,117,102,97,99,116,117,114,101,114,104, -117,109,97,110,32,114,105,103,104,116,115,108,105,110,107,32,104,114,101,102,61, -34,47,97,118,97,105,108,97,98,105,108,105,116,121,112,114,111,112,111,114,116, -105,111,110,97,108,111,117,116,115,105,100,101,32,116,104,101,32,97,115,116,114, -111,110,111,109,105,99,97,108,104,117,109,97,110,32,98,101,105,110,103,115,110, -97,109,101,32,111,102,32,116,104,101,32,97,114,101,32,102,111,117,110,100,32,105 -,110,97,114,101,32,98,97,115,101,100,32,111,110,115,109,97,108,108,101,114,32, -116,104,97,110,97,32,112,101,114,115,111,110,32,119,104,111,101,120,112,97,110, -115,105,111,110,32,111,102,97,114,103,117,105,110,103,32,116,104,97,116,110,111, -119,32,107,110,111,119,110,32,97,115,73,110,32,116,104,101,32,101,97,114,108,121 -,105,110,116,101,114,109,101,100,105,97,116,101,100,101,114,105,118,101,100,32, -102,114,111,109,83,99,97,110,100,105,110,97,118,105,97,110,60,47,97,62,60,47,100 -,105,118,62,13,10,99,111,110,115,105,100,101,114,32,116,104,101,97,110,32,101, -115,116,105,109,97,116,101,100,116,104,101,32,78,97,116,105,111,110,97,108,60, -100,105,118,32,105,100,61,34,112,97,103,114,101,115,117,108,116,105,110,103,32, -105,110,99,111,109,109,105,115,115,105,111,110,101,100,97,110,97,108,111,103,111 -,117,115,32,116,111,97,114,101,32,114,101,113,117,105,114,101,100,47,117,108,62, -10,60,47,100,105,118,62,10,119,97,115,32,98,97,115,101,100,32,111,110,97,110,100 -,32,98,101,99,97,109,101,32,97,38,110,98,115,112,59,38,110,98,115,112,59,116,34, -32,118,97,108,117,101,61,34,34,32,119,97,115,32,99,97,112,116,117,114,101,100, -110,111,32,109,111,114,101,32,116,104,97,110,114,101,115,112,101,99,116,105,118, -101,108,121,99,111,110,116,105,110,117,101,32,116,111,32,62,13,10,60,104,101,97, -100,62,13,10,60,119,101,114,101,32,99,114,101,97,116,101,100,109,111,114,101,32, -103,101,110,101,114,97,108,105,110,102,111,114,109,97,116,105,111,110,32,117,115 -,101,100,32,102,111,114,32,116,104,101,105,110,100,101,112,101,110,100,101,110, -116,32,116,104,101,32,73,109,112,101,114,105,97,108,99,111,109,112,111,110,101, -110,116,32,111,102,116,111,32,116,104,101,32,110,111,114,116,104,105,110,99,108, -117,100,101,32,116,104,101,32,67,111,110,115,116,114,117,99,116,105,111,110,115, -105,100,101,32,111,102,32,116,104,101,32,119,111,117,108,100,32,110,111,116,32, -98,101,102,111,114,32,105,110,115,116,97,110,99,101,105,110,118,101,110,116,105, -111,110,32,111,102,109,111,114,101,32,99,111,109,112,108,101,120,99,111,108,108, -101,99,116,105,118,101,108,121,98,97,99,107,103,114,111,117,110,100,58,32,116, -101,120,116,45,97,108,105,103,110,58,32,105,116,115,32,111,114,105,103,105,110, -97,108,105,110,116,111,32,97,99,99,111,117,110,116,116,104,105,115,32,112,114, -111,99,101,115,115,97,110,32,101,120,116,101,110,115,105,118,101,104,111,119,101 -,118,101,114,44,32,116,104,101,116,104,101,121,32,97,114,101,32,110,111,116,114, -101,106,101,99,116,101,100,32,116,104,101,99,114,105,116,105,99,105,115,109,32, -111,102,100,117,114,105,110,103,32,119,104,105,99,104,112,114,111,98,97,98,108, -121,32,116,104,101,116,104,105,115,32,97,114,116,105,99,108,101,40,102,117,110, -99,116,105,111,110,40,41,123,73,116,32,115,104,111,117,108,100,32,98,101,97,110, -32,97,103,114,101,101,109,101,110,116,97,99,99,105,100,101,110,116,97,108,108, -121,100,105,102,102,101,114,115,32,102,114,111,109,65,114,99,104,105,116,101,99, -116,117,114,101,98,101,116,116,101,114,32,107,110,111,119,110,97,114,114,97,110, -103,101,109,101,110,116,115,105,110,102,108,117,101,110,99,101,32,111,110,97,116 -,116,101,110,100,101,100,32,116,104,101,105,100,101,110,116,105,99,97,108,32,116 -,111,115,111,117,116,104,32,111,102,32,116,104,101,112,97,115,115,32,116,104,114 -,111,117,103,104,120,109,108,34,32,116,105,116,108,101,61,34,119,101,105,103,104 -,116,58,98,111,108,100,59,99,114,101,97,116,105,110,103,32,116,104,101,100,105, -115,112,108,97,121,58,110,111,110,101,114,101,112,108,97,99,101,100,32,116,104, -101,60,105,109,103,32,115,114,99,61,34,47,105,104,116,116,112,115,58,47,47,119, -119,119,46,87,111,114,108,100,32,87,97,114,32,73,73,116,101,115,116,105,109,111, -110,105,97,108,115,102,111,117,110,100,32,105,110,32,116,104,101,114,101,113,117 -,105,114,101,100,32,116,111,32,97,110,100,32,116,104,97,116,32,116,104,101,98, -101,116,119,101,101,110,32,116,104,101,32,119,97,115,32,100,101,115,105,103,110, -101,100,99,111,110,115,105,115,116,115,32,111,102,32,99,111,110,115,105,100,101, -114,97,98,108,121,112,117,98,108,105,115,104,101,100,32,98,121,116,104,101,32, -108,97,110,103,117,97,103,101,67,111,110,115,101,114,118,97,116,105,111,110,99, -111,110,115,105,115,116,101,100,32,111,102,114,101,102,101,114,32,116,111,32,116 -,104,101,98,97,99,107,32,116,111,32,116,104,101,32,99,115,115,34,32,109,101,100, -105,97,61,34,80,101,111,112,108,101,32,102,114,111,109,32,97,118,97,105,108,97, -98,108,101,32,111,110,112,114,111,118,101,100,32,116,111,32,98,101,115,117,103, -103,101,115,116,105,111,110,115,34,119,97,115,32,107,110,111,119,110,32,97,115, -118,97,114,105,101,116,105,101,115,32,111,102,108,105,107,101,108,121,32,116,111 -,32,98,101,99,111,109,112,114,105,115,101,100,32,111,102,115,117,112,112,111,114 -,116,32,116,104,101,32,104,97,110,100,115,32,111,102,32,116,104,101,99,111,117, -112,108,101,100,32,119,105,116,104,99,111,110,110,101,99,116,32,97,110,100,32,98 -,111,114,100,101,114,58,110,111,110,101,59,112,101,114,102,111,114,109,97,110,99 -,101,115,98,101,102,111,114,101,32,98,101,105,110,103,108,97,116,101,114,32,98, -101,99,97,109,101,99,97,108,99,117,108,97,116,105,111,110,115,111,102,116,101, -110,32,99,97,108,108,101,100,114,101,115,105,100,101,110,116,115,32,111,102,109, -101,97,110,105,110,103,32,116,104,97,116,62,60,108,105,32,99,108,97,115,115,61, -34,101,118,105,100,101,110,99,101,32,102,111,114,101,120,112,108,97,110,97,116, -105,111,110,115,101,110,118,105,114,111,110,109,101,110,116,115,34,62,60,47,97, -62,60,47,100,105,118,62,119,104,105,99,104,32,97,108,108,111,119,115,73,110,116, -114,111,100,117,99,116,105,111,110,100,101,118,101,108,111,112,101,100,32,98,121 -,97,32,119,105,100,101,32,114,97,110,103,101,111,110,32,98,101,104,97,108,102,32 -,111,102,118,97,108,105,103,110,61,34,116,111,112,34,112,114,105,110,99,105,112, -108,101,32,111,102,97,116,32,116,104,101,32,116,105,109,101,44,60,47,110,111,115 -,99,114,105,112,116,62,13,115,97,105,100,32,116,111,32,104,97,118,101,105,110,32 -,116,104,101,32,102,105,114,115,116,119,104,105,108,101,32,111,116,104,101,114, -115,104,121,112,111,116,104,101,116,105,99,97,108,112,104,105,108,111,115,111, -112,104,101,114,115,112,111,119,101,114,32,111,102,32,116,104,101,99,111,110,116 -,97,105,110,101,100,32,105,110,112,101,114,102,111,114,109,101,100,32,98,121,105 -,110,97,98,105,108,105,116,121,32,116,111,119,101,114,101,32,119,114,105,116,116 -,101,110,115,112,97,110,32,115,116,121,108,101,61,34,105,110,112,117,116,32,110, -97,109,101,61,34,116,104,101,32,113,117,101,115,116,105,111,110,105,110,116,101, -110,100,101,100,32,102,111,114,114,101,106,101,99,116,105,111,110,32,111,102,105 -,109,112,108,105,101,115,32,116,104,97,116,105,110,118,101,110,116,101,100,32, -116,104,101,116,104,101,32,115,116,97,110,100,97,114,100,119,97,115,32,112,114, -111,98,97,98,108,121,108,105,110,107,32,98,101,116,119,101,101,110,112,114,111, -102,101,115,115,111,114,32,111,102,105,110,116,101,114,97,99,116,105,111,110,115 -,99,104,97,110,103,105,110,103,32,116,104,101,73,110,100,105,97,110,32,79,99,101 -,97,110,32,99,108,97,115,115,61,34,108,97,115,116,119,111,114,107,105,110,103,32 -,119,105,116,104,39,104,116,116,112,58,47,47,119,119,119,46,121,101,97,114,115, -32,98,101,102,111,114,101,84,104,105,115,32,119,97,115,32,116,104,101,114,101,99 -,114,101,97,116,105,111,110,97,108,101,110,116,101,114,105,110,103,32,116,104, -101,109,101,97,115,117,114,101,109,101,110,116,115,97,110,32,101,120,116,114,101 -,109,101,108,121,118,97,108,117,101,32,111,102,32,116,104,101,115,116,97,114,116 -,32,111,102,32,116,104,101,10,60,47,115,99,114,105,112,116,62,10,10,97,110,32, -101,102,102,111,114,116,32,116,111,105,110,99,114,101,97,115,101,32,116,104,101, -116,111,32,116,104,101,32,115,111,117,116,104,115,112,97,99,105,110,103,61,34,48 -,34,62,115,117,102,102,105,99,105,101,110,116,108,121,116,104,101,32,69,117,114, -111,112,101,97,110,99,111,110,118,101,114,116,101,100,32,116,111,99,108,101,97, -114,84,105,109,101,111,117,116,100,105,100,32,110,111,116,32,104,97,118,101,99, -111,110,115,101,113,117,101,110,116,108,121,102,111,114,32,116,104,101,32,110, -101,120,116,101,120,116,101,110,115,105,111,110,32,111,102,101,99,111,110,111, -109,105,99,32,97,110,100,97,108,116,104,111,117,103,104,32,116,104,101,97,114, -101,32,112,114,111,100,117,99,101,100,97,110,100,32,119,105,116,104,32,116,104, -101,105,110,115,117,102,102,105,99,105,101,110,116,103,105,118,101,110,32,98,121 -,32,116,104,101,115,116,97,116,105,110,103,32,116,104,97,116,101,120,112,101,110 -,100,105,116,117,114,101,115,60,47,115,112,97,110,62,60,47,97,62,10,116,104,111, -117,103,104,116,32,116,104,97,116,111,110,32,116,104,101,32,98,97,115,105,115,99 -,101,108,108,112,97,100,100,105,110,103,61,105,109,97,103,101,32,111,102,32,116, -104,101,114,101,116,117,114,110,105,110,103,32,116,111,105,110,102,111,114,109, -97,116,105,111,110,44,115,101,112,97,114,97,116,101,100,32,98,121,97,115,115,97, -115,115,105,110,97,116,101,100,115,34,32,99,111,110,116,101,110,116,61,34,97,117 -,116,104,111,114,105,116,121,32,111,102,110,111,114,116,104,119,101,115,116,101, -114,110,60,47,100,105,118,62,10,60,100,105,118,32,34,62,60,47,100,105,118,62,13, -10,32,32,99,111,110,115,117,108,116,97,116,105,111,110,99,111,109,109,117,110, -105,116,121,32,111,102,116,104,101,32,110,97,116,105,111,110,97,108,105,116,32, -115,104,111,117,108,100,32,98,101,112,97,114,116,105,99,105,112,97,110,116,115, -32,97,108,105,103,110,61,34,108,101,102,116,116,104,101,32,103,114,101,97,116, -101,115,116,115,101,108,101,99,116,105,111,110,32,111,102,115,117,112,101,114, -110,97,116,117,114,97,108,100,101,112,101,110,100,101,110,116,32,111,110,105,115 -,32,109,101,110,116,105,111,110,101,100,97,108,108,111,119,105,110,103,32,116, -104,101,119,97,115,32,105,110,118,101,110,116,101,100,97,99,99,111,109,112,97, -110,121,105,110,103,104,105,115,32,112,101,114,115,111,110,97,108,97,118,97,105, -108,97,98,108,101,32,97,116,115,116,117,100,121,32,111,102,32,116,104,101,111, -110,32,116,104,101,32,111,116,104,101,114,101,120,101,99,117,116,105,111,110,32, -111,102,72,117,109,97,110,32,82,105,103,104,116,115,116,101,114,109,115,32,111, -102,32,116,104,101,97,115,115,111,99,105,97,116,105,111,110,115,114,101,115,101, -97,114,99,104,32,97,110,100,115,117,99,99,101,101,100,101,100,32,98,121,100,101, -102,101,97,116,101,100,32,116,104,101,97,110,100,32,102,114,111,109,32,116,104, -101,98,117,116,32,116,104,101,121,32,97,114,101,99,111,109,109,97,110,100,101, -114,32,111,102,115,116,97,116,101,32,111,102,32,116,104,101,121,101,97,114,115, -32,111,102,32,97,103,101,116,104,101,32,115,116,117,100,121,32,111,102,60,117, -108,32,99,108,97,115,115,61,34,115,112,108,97,99,101,32,105,110,32,116,104,101, -119,104,101,114,101,32,104,101,32,119,97,115,60,108,105,32,99,108,97,115,115,61, -34,102,116,104,101,114,101,32,97,114,101,32,110,111,119,104,105,99,104,32,98,101 -,99,97,109,101,104,101,32,112,117,98,108,105,115,104,101,100,101,120,112,114,101 -,115,115,101,100,32,105,110,116,111,32,119,104,105,99,104,32,116,104,101,99,111, -109,109,105,115,115,105,111,110,101,114,102,111,110,116,45,119,101,105,103,104, -116,58,116,101,114,114,105,116,111,114,121,32,111,102,101,120,116,101,110,115, -105,111,110,115,34,62,82,111,109,97,110,32,69,109,112,105,114,101,101,113,117,97 -,108,32,116,111,32,116,104,101,73,110,32,99,111,110,116,114,97,115,116,44,104, -111,119,101,118,101,114,44,32,97,110,100,105,115,32,116,121,112,105,99,97,108, -108,121,97,110,100,32,104,105,115,32,119,105,102,101,40,97,108,115,111,32,99,97, -108,108,101,100,62,60,117,108,32,99,108,97,115,115,61,34,101,102,102,101,99,116, -105,118,101,108,121,32,101,118,111,108,118,101,100,32,105,110,116,111,115,101, -101,109,32,116,111,32,104,97,118,101,119,104,105,99,104,32,105,115,32,116,104, -101,116,104,101,114,101,32,119,97,115,32,110,111,97,110,32,101,120,99,101,108, -108,101,110,116,97,108,108,32,111,102,32,116,104,101,115,101,100,101,115,99,114, -105,98,101,100,32,98,121,73,110,32,112,114,97,99,116,105,99,101,44,98,114,111,97 -,100,99,97,115,116,105,110,103,99,104,97,114,103,101,100,32,119,105,116,104,114, -101,102,108,101,99,116,101,100,32,105,110,115,117,98,106,101,99,116,101,100,32, -116,111,109,105,108,105,116,97,114,121,32,97,110,100,116,111,32,116,104,101,32, -112,111,105,110,116,101,99,111,110,111,109,105,99,97,108,108,121,115,101,116,84, -97,114,103,101,116,105,110,103,97,114,101,32,97,99,116,117,97,108,108,121,118, -105,99,116,111,114,121,32,111,118,101,114,40,41,59,60,47,115,99,114,105,112,116, -62,99,111,110,116,105,110,117,111,117,115,108,121,114,101,113,117,105,114,101, -100,32,102,111,114,101,118,111,108,117,116,105,111,110,97,114,121,97,110,32,101, -102,102,101,99,116,105,118,101,110,111,114,116,104,32,111,102,32,116,104,101,44, -32,119,104,105,99,104,32,119,97,115,32,102,114,111,110,116,32,111,102,32,116,104 -,101,111,114,32,111,116,104,101,114,119,105,115,101,115,111,109,101,32,102,111, -114,109,32,111,102,104,97,100,32,110,111,116,32,98,101,101,110,103,101,110,101, -114,97,116,101,100,32,98,121,105,110,102,111,114,109,97,116,105,111,110,46,112, -101,114,109,105,116,116,101,100,32,116,111,105,110,99,108,117,100,101,115,32,116 -,104,101,100,101,118,101,108,111,112,109,101,110,116,44,101,110,116,101,114,101, -100,32,105,110,116,111,116,104,101,32,112,114,101,118,105,111,117,115,99,111,110 -,115,105,115,116,101,110,116,108,121,97,114,101,32,107,110,111,119,110,32,97,115 -,116,104,101,32,102,105,101,108,100,32,111,102,116,104,105,115,32,116,121,112, -101,32,111,102,103,105,118,101,110,32,116,111,32,116,104,101,116,104,101,32,116, -105,116,108,101,32,111,102,99,111,110,116,97,105,110,115,32,116,104,101,105,110, -115,116,97,110,99,101,115,32,111,102,105,110,32,116,104,101,32,110,111,114,116, -104,100,117,101,32,116,111,32,116,104,101,105,114,97,114,101,32,100,101,115,105, -103,110,101,100,99,111,114,112,111,114,97,116,105,111,110,115,119,97,115,32,116, -104,97,116,32,116,104,101,111,110,101,32,111,102,32,116,104,101,115,101,109,111, -114,101,32,112,111,112,117,108,97,114,115,117,99,99,101,101,100,101,100,32,105, -110,115,117,112,112,111,114,116,32,102,114,111,109,105,110,32,100,105,102,102, -101,114,101,110,116,100,111,109,105,110,97,116,101,100,32,98,121,100,101,115,105 -,103,110,101,100,32,102,111,114,111,119,110,101,114,115,104,105,112,32,111,102, -97,110,100,32,112,111,115,115,105,98,108,121,115,116,97,110,100,97,114,100,105, -122,101,100,114,101,115,112,111,110,115,101,84,101,120,116,119,97,115,32,105,110 -,116,101,110,100,101,100,114,101,99,101,105,118,101,100,32,116,104,101,97,115, -115,117,109,101,100,32,116,104,97,116,97,114,101,97,115,32,111,102,32,116,104, -101,112,114,105,109,97,114,105,108,121,32,105,110,116,104,101,32,98,97,115,105, -115,32,111,102,105,110,32,116,104,101,32,115,101,110,115,101,97,99,99,111,117, -110,116,115,32,102,111,114,100,101,115,116,114,111,121,101,100,32,98,121,97,116, -32,108,101,97,115,116,32,116,119,111,119,97,115,32,100,101,99,108,97,114,101,100 -,99,111,117,108,100,32,110,111,116,32,98,101,83,101,99,114,101,116,97,114,121,32 -,111,102,97,112,112,101,97,114,32,116,111,32,98,101,109,97,114,103,105,110,45, -116,111,112,58,49,47,94,92,115,43,124,92,115,43,36,47,103,101,41,123,116,104,114 -,111,119,32,101,125,59,116,104,101,32,115,116,97,114,116,32,111,102,116,119,111, -32,115,101,112,97,114,97,116,101,108,97,110,103,117,97,103,101,32,97,110,100,119 -,104,111,32,104,97,100,32,98,101,101,110,111,112,101,114,97,116,105,111,110,32, -111,102,100,101,97,116,104,32,111,102,32,116,104,101,114,101,97,108,32,110,117, -109,98,101,114,115,9,60,108,105,110,107,32,114,101,108,61,34,112,114,111,118,105 -,100,101,100,32,116,104,101,116,104,101,32,115,116,111,114,121,32,111,102,99,111 -,109,112,101,116,105,116,105,111,110,115,101,110,103,108,105,115,104,32,40,85,75 -,41,101,110,103,108,105,115,104,32,40,85,83,41,208,156,208,190,208,189,208,179, -208,190,208,187,208,161,209,128,208,191,209,129,208,186,208,184,209,129,209,128, -208,191,209,129,208,186,208,184,209,129,209,128,208,191,209,129,208,186,208,190, -217,132,216,185,216,177,216,168,217,138,216,169,230,173,163,233,171,148,228,184, -173,230,150,135,231,174,128,228,189,147,228,184,173,230,150,135,231,185,129,228, -189,147,228,184,173,230,150,135,230,156,137,233,153,144,229,133,172,229,143,184, -228,186,186,230,176,145,230,148,191,229,186,156,233,152,191,233,135,140,229,183, -180,229,183,180,231,164,190,228,188,154,228,184,187,228,185,137,230,147,141,228, -189,156,231,179,187,231,187,159,230,148,191,231,173,150,230,179,149,232,167,132, -105,110,102,111,114,109,97,99,105,195,179,110,104,101,114,114,97,109,105,101,110 -,116,97,115,101,108,101,99,116,114,195,179,110,105,99,111,100,101,115,99,114,105 -,112,99,105,195,179,110,99,108,97,115,105,102,105,99,97,100,111,115,99,111,110, -111,99,105,109,105,101,110,116,111,112,117,98,108,105,99,97,99,105,195,179,110, -114,101,108,97,99,105,111,110,97,100,97,115,105,110,102,111,114,109,195,161,116, -105,99,97,114,101,108,97,99,105,111,110,97,100,111,115,100,101,112,97,114,116,97 -,109,101,110,116,111,116,114,97,98,97,106,97,100,111,114,101,115,100,105,114,101 -,99,116,97,109,101,110,116,101,97,121,117,110,116,97,109,105,101,110,116,111,109 -,101,114,99,97,100,111,76,105,98,114,101,99,111,110,116,195,161,99,116,101,110, -111,115,104,97,98,105,116,97,99,105,111,110,101,115,99,117,109,112,108,105,109, -105,101,110,116,111,114,101,115,116,97,117,114,97,110,116,101,115,100,105,115, -112,111,115,105,99,105,195,179,110,99,111,110,115,101,99,117,101,110,99,105,97, -101,108,101,99,116,114,195,179,110,105,99,97,97,112,108,105,99,97,99,105,111,110 -,101,115,100,101,115,99,111,110,101,99,116,97,100,111,105,110,115,116,97,108,97, -99,105,195,179,110,114,101,97,108,105,122,97,99,105,195,179,110,117,116,105,108, -105,122,97,99,105,195,179,110,101,110,99,105,99,108,111,112,101,100,105,97,101, -110,102,101,114,109,101,100,97,100,101,115,105,110,115,116,114,117,109,101,110, -116,111,115,101,120,112,101,114,105,101,110,99,105,97,115,105,110,115,116,105, -116,117,99,105,195,179,110,112,97,114,116,105,99,117,108,97,114,101,115,115,117, -98,99,97,116,101,103,111,114,105,97,209,130,208,190,208,187,209,140,208,186,208, -190,208,160,208,190,209,129,209,129,208,184,208,184,209,128,208,176,208,177,208, -190,209,130,209,139,208,177,208,190,208,187,209,140,209,136,208,181,208,191,209, -128,208,190,209,129,209,130,208,190,208,188,208,190,208,182,208,181,209,130,208, -181,208,180,209,128,209,131,208,179,208,184,209,133,209,129,208,187,209,131,209, -135,208,176,208,181,209,129,208,181,208,185,209,135,208,176,209,129,208,178,209, -129,208,181,208,179,208,180,208,176,208,160,208,190,209,129,209,129,208,184,209, -143,208,156,208,190,209,129,208,186,208,178,208,181,208,180,209,128,209,131,208, -179,208,184,208,181,208,179,208,190,209,128,208,190,208,180,208,176,208,178,208, -190,208,191,209,128,208,190,209,129,208,180,208,176,208,189,208,189,209,139,209, -133,208,180,208,190,208,187,208,182,208,189,209,139,208,184,208,188,208,181,208, -189,208,189,208,190,208,156,208,190,209,129,208,186,208,178,209,139,209,128,209, -131,208,177,208,187,208,181,208,185,208,156,208,190,209,129,208,186,208,178,208, -176,209,129,209,130,209,128,208,176,208,189,209,139,208,189,208,184,209,135,208, -181,208,179,208,190,209,128,208,176,208,177,208,190,209,130,208,181,208,180,208, -190,208,187,208,182,208,181,208,189,209,131,209,129,208,187,209,131,208,179,208, -184,209,130,208,181,208,191,208,181,209,128,209,140,208,158,208,180,208,189,208, -176,208,186,208,190,208,191,208,190,209,130,208,190,208,188,209,131,209,128,208, -176,208,177,208,190,209,130,209,131,208,176,208,191,209,128,208,181,208,187,209, -143,208,178,208,190,208,190,208,177,209,137,208,181,208,190,208,180,208,189,208, -190,208,179,208,190,209,129,208,178,208,190,208,181,208,179,208,190,209,129,209, -130,208,176,209,130,209,140,208,184,208,180,209,128,209,131,208,179,208,190,208, -185,209,132,208,190,209,128,209,131,208,188,208,181,209,133,208,190,209,128,208, -190,209,136,208,190,208,191,209,128,208,190,209,130,208,184,208,178,209,129,209, -129,209,139,208,187,208,186,208,176,208,186,208,176,208,182,208,180,209,139,208, -185,208,178,208,187,208,176,209,129,209,130,208,184,208,179,209,128,209,131,208, -191,208,191,209,139,208,178,208,188,208,181,209,129,209,130,208,181,209,128,208, -176,208,177,208,190,209,130,208,176,209,129,208,186,208,176,208,183,208,176,208, -187,208,191,208,181,209,128,208,178,209,139,208,185,208,180,208,181,208,187,208, -176,209,130,209,140,208,180,208,181,208,189,209,140,208,179,208,184,208,191,208, -181,209,128,208,184,208,190,208,180,208,177,208,184,208,183,208,189,208,181,209, -129,208,190,209,129,208,189,208,190,208,178,208,181,208,188,208,190,208,188,208, -181,208,189,209,130,208,186,209,131,208,191,208,184,209,130,209,140,208,180,208, -190,208,187,208,182,208,189,208,176,209,128,208,176,208,188,208,186,208,176,209, -133,208,189,208,176,209,135,208,176,208,187,208,190,208,160,208,176,208,177,208, -190,209,130,208,176,208,162,208,190,208,187,209,140,208,186,208,190,209,129,208, -190,208,178,209,129,208,181,208,188,208,178,209,130,208,190,209,128,208,190,208, -185,208,189,208,176,209,135,208,176,208,187,208,176,209,129,208,191,208,184,209, -129,208,190,208,186,209,129,208,187,209,131,208,182,208,177,209,139,209,129,208, -184,209,129,209,130,208,181,208,188,208,191,208,181,209,135,208,176,209,130,208, -184,208,189,208,190,208,178,208,190,208,179,208,190,208,191,208,190,208,188,208, -190,209,137,208,184,209,129,208,176,208,185,209,130,208,190,208,178,208,191,208, -190,209,135,208,181,208,188,209,131,208,191,208,190,208,188,208,190,209,137,209, -140,208,180,208,190,208,187,208,182,208,189,208,190,209,129,209,129,209,139,208, -187,208,186,208,184,208,177,209,139,209,129,209,130,209,128,208,190,208,180,208, -176,208,189,208,189,209,139,208,181,208,188,208,189,208,190,208,179,208,184,208, -181,208,191,209,128,208,190,208,181,208,186,209,130,208,161,208,181,208,185,209, -135,208,176,209,129,208,188,208,190,208,180,208,181,208,187,208,184,209,130,208, -176,208,186,208,190,208,179,208,190,208,190,208,189,208,187,208,176,208,185,208, -189,208,179,208,190,209,128,208,190,208,180,208,181,208,178,208,181,209,128,209, -129,208,184,209,143,209,129,209,130,209,128,208,176,208,189,208,181,209,132,208, -184,208,187,209,140,208,188,209,139,209,131,209,128,208,190,208,178,208,189,209, -143,209,128,208,176,208,183,208,189,209,139,209,133,208,184,209,129,208,186,208, -176,209,130,209,140,208,189,208,181,208,180,208,181,208,187,209,142,209,143,208, -189,208,178,208,176,209,128,209,143,208,188,208,181,208,189,209,140,209,136,208, -181,208,188,208,189,208,190,208,179,208,184,209,133,208,180,208,176,208,189,208, -189,208,190,208,185,208,183,208,189,208,176,209,135,208,184,209,130,208,189,208, -181,208,187,209,140,208,183,209,143,209,132,208,190,209,128,209,131,208,188,208, -176,208,162,208,181,208,191,208,181,209,128,209,140,208,188,208,181,209,129,209, -143,209,134,208,176,208,183,208,176,209,137,208,184,209,130,209,139,208,155,209, -131,209,135,209,136,208,184,208,181,224,164,168,224,164,185,224,165,128,224,164, -130,224,164,149,224,164,176,224,164,168,224,165,135,224,164,133,224,164,170,224, -164,168,224,165,135,224,164,149,224,164,191,224,164,175,224,164,190,224,164,149, -224,164,176,224,165,135,224,164,130,224,164,133,224,164,168,224,165,141,224,164, -175,224,164,149,224,165,141,224,164,175,224,164,190,224,164,151,224,164,190,224, -164,135,224,164,161,224,164,172,224,164,190,224,164,176,224,165,135,224,164,149, -224,164,191,224,164,184,224,165,128,224,164,166,224,164,191,224,164,175,224,164, -190,224,164,170,224,164,185,224,164,178,224,165,135,224,164,184,224,164,191,224, -164,130,224,164,185,224,164,173,224,164,190,224,164,176,224,164,164,224,164,133, -224,164,170,224,164,168,224,165,128,224,164,181,224,164,190,224,164,178,224,165, -135,224,164,184,224,165,135,224,164,181,224,164,190,224,164,149,224,164,176,224, -164,164,224,165,135,224,164,174,224,165,135,224,164,176,224,165,135,224,164,185, -224,165,139,224,164,168,224,165,135,224,164,184,224,164,149,224,164,164,224,165, -135,224,164,172,224,164,185,224,165,129,224,164,164,224,164,184,224,164,190,224, -164,135,224,164,159,224,164,185,224,165,139,224,164,151,224,164,190,224,164,156, -224,164,190,224,164,168,224,165,135,224,164,174,224,164,191,224,164,168,224,164, -159,224,164,149,224,164,176,224,164,164,224,164,190,224,164,149,224,164,176,224, -164,168,224,164,190,224,164,137,224,164,168,224,164,149,224,165,135,224,164,175, -224,164,185,224,164,190,224,164,129,224,164,184,224,164,172,224,164,184,224,165, -135,224,164,173,224,164,190,224,164,183,224,164,190,224,164,134,224,164,170,224, -164,149,224,165,135,224,164,178,224,164,191,224,164,175,224,165,135,224,164,182, -224,165,129,224,164,176,224,165,130,224,164,135,224,164,184,224,164,149,224,165, -135,224,164,152,224,164,130,224,164,159,224,165,135,224,164,174,224,165,135,224, -164,176,224,165,128,224,164,184,224,164,149,224,164,164,224,164,190,224,164,174, -224,165,135,224,164,176,224,164,190,224,164,178,224,165,135,224,164,149,224,164, -176,224,164,133,224,164,167,224,164,191,224,164,149,224,164,133,224,164,170,224, -164,168,224,164,190,224,164,184,224,164,174,224,164,190,224,164,156,224,164,174, -224,165,129,224,164,157,224,165,135,224,164,149,224,164,190,224,164,176,224,164, -163,224,164,185,224,165,139,224,164,164,224,164,190,224,164,149,224,164,161,224, -164,188,224,165,128,224,164,175,224,164,185,224,164,190,224,164,130,224,164,185, -224,165,139,224,164,159,224,164,178,224,164,182,224,164,172,224,165,141,224,164, -166,224,164,178,224,164,191,224,164,175,224,164,190,224,164,156,224,165,128,224, -164,181,224,164,168,224,164,156,224,164,190,224,164,164,224,164,190,224,164,149, -224,165,136,224,164,184,224,165,135,224,164,134,224,164,170,224,164,149,224,164, -190,224,164,181,224,164,190,224,164,178,224,165,128,224,164,166,224,165,135,224, -164,168,224,165,135,224,164,170,224,165,130,224,164,176,224,165,128,224,164,170, -224,164,190,224,164,168,224,165,128,224,164,137,224,164,184,224,164,149,224,165, -135,224,164,185,224,165,139,224,164,151,224,165,128,224,164,172,224,165,136,224, -164,160,224,164,149,224,164,134,224,164,170,224,164,149,224,165,128,224,164,181, -224,164,176,224,165,141,224,164,183,224,164,151,224,164,190,224,164,130,224,164, -181,224,164,134,224,164,170,224,164,149,224,165,139,224,164,156,224,164,191,224, -164,178,224,164,190,224,164,156,224,164,190,224,164,168,224,164,190,224,164,184, -224,164,185,224,164,174,224,164,164,224,164,185,224,164,174,224,165,135,224,164, -130,224,164,137,224,164,168,224,164,149,224,165,128,224,164,175,224,164,190,224, -164,185,224,165,130,224,164,166,224,164,176,224,165,141,224,164,156,224,164,184, -224,165,130,224,164,154,224,165,128,224,164,170,224,164,184,224,164,130,224,164, -166,224,164,184,224,164,181,224,164,190,224,164,178,224,164,185,224,165,139,224, -164,168,224,164,190,224,164,185,224,165,139,224,164,164,224,165,128,224,164,156, -224,165,136,224,164,184,224,165,135,224,164,181,224,164,190,224,164,170,224,164, -184,224,164,156,224,164,168,224,164,164,224,164,190,224,164,168,224,165,135,224, -164,164,224,164,190,224,164,156,224,164,190,224,164,176,224,165,128,224,164,152, -224,164,190,224,164,175,224,164,178,224,164,156,224,164,191,224,164,178,224,165, -135,224,164,168,224,165,128,224,164,154,224,165,135,224,164,156,224,164,190,224, -164,130,224,164,154,224,164,170,224,164,164,224,165,141,224,164,176,224,164,151, -224,165,130,224,164,151,224,164,178,224,164,156,224,164,190,224,164,164,224,165, -135,224,164,172,224,164,190,224,164,185,224,164,176,224,164,134,224,164,170,224, -164,168,224,165,135,224,164,181,224,164,190,224,164,185,224,164,168,224,164,135, -224,164,184,224,164,149,224,164,190,224,164,184,224,165,129,224,164,172,224,164, -185,224,164,176,224,164,185,224,164,168,224,165,135,224,164,135,224,164,184,224, -164,184,224,165,135,224,164,184,224,164,185,224,164,191,224,164,164,224,164,172, -224,164,161,224,164,188,224,165,135,224,164,152,224,164,159,224,164,168,224,164, -190,224,164,164,224,164,178,224,164,190,224,164,182,224,164,170,224,164,190,224, -164,130,224,164,154,224,164,182,224,165,141,224,164,176,224,165,128,224,164,172, -224,164,161,224,164,188,224,165,128,224,164,185,224,165,139,224,164,164,224,165, -135,224,164,184,224,164,190,224,164,136,224,164,159,224,164,182,224,164,190,224, -164,175,224,164,166,224,164,184,224,164,149,224,164,164,224,165,128,224,164,156, -224,164,190,224,164,164,224,165,128,224,164,181,224,164,190,224,164,178,224,164, -190,224,164,185,224,164,156,224,164,190,224,164,176,224,164,170,224,164,159,224, -164,168,224,164,190,224,164,176,224,164,150,224,164,168,224,165,135,224,164,184, -224,164,161,224,164,188,224,164,149,224,164,174,224,164,191,224,164,178,224,164, -190,224,164,137,224,164,184,224,164,149,224,165,128,224,164,149,224,165,135,224, -164,181,224,164,178,224,164,178,224,164,151,224,164,164,224,164,190,224,164,150, -224,164,190,224,164,168,224,164,190,224,164,133,224,164,176,224,165,141,224,164, -165,224,164,156,224,164,185,224,164,190,224,164,130,224,164,166,224,165,135,224, -164,150,224,164,190,224,164,170,224,164,185,224,164,178,224,165,128,224,164,168, -224,164,191,224,164,175,224,164,174,224,164,172,224,164,191,224,164,168,224,164, -190,224,164,172,224,165,136,224,164,130,224,164,149,224,164,149,224,164,185,224, -165,128,224,164,130,224,164,149,224,164,185,224,164,168,224,164,190,224,164,166, -224,165,135,224,164,164,224,164,190,224,164,185,224,164,174,224,164,178,224,165, -135,224,164,149,224,164,190,224,164,171,224,165,128,224,164,156,224,164,172,224, -164,149,224,164,191,224,164,164,224,165,129,224,164,176,224,164,164,224,164,174, -224,164,190,224,164,130,224,164,151,224,164,181,224,164,185,224,165,128,224,164, -130,224,164,176,224,165,139,224,164,156,224,164,188,224,164,174,224,164,191,224, -164,178,224,165,128,224,164,134,224,164,176,224,165,139,224,164,170,224,164,184, -224,165,135,224,164,168,224,164,190,224,164,175,224,164,190,224,164,166,224,164, -181,224,164,178,224,165,135,224,164,168,224,165,135,224,164,150,224,164,190,224, -164,164,224,164,190,224,164,149,224,164,176,224,165,128,224,164,172,224,164,137, -224,164,168,224,164,149,224,164,190,224,164,156,224,164,181,224,164,190,224,164, -172,224,164,170,224,165,130,224,164,176,224,164,190,224,164,172,224,164,161,224, -164,188,224,164,190,224,164,184,224,165,140,224,164,166,224,164,190,224,164,182, -224,165,135,224,164,175,224,164,176,224,164,149,224,164,191,224,164,175,224,165, -135,224,164,149,224,164,185,224,164,190,224,164,130,224,164,133,224,164,149,224, -164,184,224,164,176,224,164,172,224,164,168,224,164,190,224,164,143,224,164,181, -224,164,185,224,164,190,224,164,130,224,164,184,224,165,141,224,164,165,224,164, -178,224,164,174,224,164,191,224,164,178,224,165,135,224,164,178,224,165,135,224, -164,150,224,164,149,224,164,181,224,164,191,224,164,183,224,164,175,224,164,149, -224,165,141,224,164,176,224,164,130,224,164,184,224,164,174,224,165,130,224,164, -185,224,164,165,224,164,190,224,164,168,224,164,190,216,170,216,179,216,170,216, -183,217,138,216,185,217,133,216,180,216,167,216,177,217,131,216,169,216,168,217, -136,216,167,216,179,216,183,216,169,216,167,217,132,216,181,217,129,216,173,216, -169,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,174,216, -167,216,181,216,169,216,167,217,132,217,133,216,178,217,138,216,175,216,167,217, -132,216,185,216,167,217,133,216,169,216,167,217,132,217,131,216,167,216,170,216, -168,216,167,217,132,216,177,216,175,217,136,216,175,216,168,216,177,217,134,216, -167,217,133,216,172,216,167,217,132,216,175,217,136,217,132,216,169,216,167,217, -132,216,185,216,167,217,132,217,133,216,167,217,132,217,133,217,136,217,130,216, -185,216,167,217,132,216,185,216,177,216,168,217,138,216,167,217,132,216,179,216, -177,217,138,216,185,216,167,217,132,216,172,217,136,216,167,217,132,216,167,217, -132,216,176,217,135,216,167,216,168,216,167,217,132,216,173,217,138,216,167,216, -169,216,167,217,132,216,173,217,130,217,136,217,130,216,167,217,132,217,131,216, -177,217,138,217,133,216,167,217,132,216,185,216,177,216,167,217,130,217,133,216, -173,217,129,217,136,216,184,216,169,216,167,217,132,216,171,216,167,217,134,217, -138,217,133,216,180,216,167,217,135,216,175,216,169,216,167,217,132,217,133,216, -177,216,163,216,169,216,167,217,132,217,130,216,177,216,162,217,134,216,167,217, -132,216,180,216,168,216,167,216,168,216,167,217,132,216,173,217,136,216,167,216, -177,216,167,217,132,216,172,216,175,217,138,216,175,216,167,217,132,216,163,216, -179,216,177,216,169,216,167,217,132,216,185,217,132,217,136,217,133,217,133,216, -172,217,133,217,136,216,185,216,169,216,167,217,132,216,177,216,173,217,133,217, -134,216,167,217,132,217,134,217,130,216,167,216,183,217,129,217,132,216,179,216, -183,217,138,217,134,216,167,217,132,217,131,217,136,217,138,216,170,216,167,217, -132,216,175,217,134,217,138,216,167,216,168,216,177,217,131,216,167,216,170,217, -135,216,167,217,132,216,177,217,138,216,167,216,182,216,170,216,173,217,138,216, -167,216,170,217,138,216,168,216,170,217,136,217,130,217,138,216,170,216,167,217, -132,216,163,217,136,217,132,217,137,216,167,217,132,216,168,216,177,217,138,216, -175,216,167,217,132,217,131,217,132,216,167,217,133,216,167,217,132,216,177,216, -167,216,168,216,183,216,167,217,132,216,180,216,174,216,181,217,138,216,179,217, -138,216,167,216,177,216,167,216,170,216,167,217,132,216,171,216,167,217,132,216, -171,216,167,217,132,216,181,217,132,216,167,216,169,216,167,217,132,216,173,216, -175,217,138,216,171,216,167,217,132,216,178,217,136,216,167,216,177,216,167,217, -132,216,174,217,132,217,138,216,172,216,167,217,132,216,172,217,133,217,138,216, -185,216,167,217,132,216,185,216,167,217,133,217,135,216,167,217,132,216,172,217, -133,216,167,217,132,216,167,217,132,216,179,216,167,216,185,216,169,217,133,216, -180,216,167,217,135,216,175,217,135,216,167,217,132,216,177,216,166,217,138,216, -179,216,167,217,132,216,175,216,174,217,136,217,132,216,167,217,132,217,129,217, -134,217,138,216,169,216,167,217,132,217,131,216,170,216,167,216,168,216,167,217, -132,216,175,217,136,216,177,217,138,216,167,217,132,216,175,216,177,217,136,216, -179,216,167,216,179,216,170,216,186,216,177,217,130,216,170,216,181,216,167,217, -133,217,138,217,133,216,167,217,132,216,168,217,134,216,167,216,170,216,167,217, -132,216,185,216,184,217,138,217,133,101,110,116,101,114,116,97,105,110,109,101, -110,116,117,110,100,101,114,115,116,97,110,100,105,110,103,32,61,32,102,117,110, -99,116,105,111,110,40,41,46,106,112,103,34,32,119,105,100,116,104,61,34,99,111, -110,102,105,103,117,114,97,116,105,111,110,46,112,110,103,34,32,119,105,100,116, -104,61,34,60,98,111,100,121,32,99,108,97,115,115,61,34,77,97,116,104,46,114,97, -110,100,111,109,40,41,99,111,110,116,101,109,112,111,114,97,114,121,32,85,110, -105,116,101,100,32,83,116,97,116,101,115,99,105,114,99,117,109,115,116,97,110,99 -,101,115,46,97,112,112,101,110,100,67,104,105,108,100,40,111,114,103,97,110,105, -122,97,116,105,111,110,115,60,115,112,97,110,32,99,108,97,115,115,61,34,34,62,60 -,105,109,103,32,115,114,99,61,34,47,100,105,115,116,105,110,103,117,105,115,104, -101,100,116,104,111,117,115,97,110,100,115,32,111,102,32,99,111,109,109,117,110, -105,99,97,116,105,111,110,99,108,101,97,114,34,62,60,47,100,105,118,62,105,110, -118,101,115,116,105,103,97,116,105,111,110,102,97,118,105,99,111,110,46,105,99, -111,34,32,109,97,114,103,105,110,45,114,105,103,104,116,58,98,97,115,101,100,32, -111,110,32,116,104,101,32,77,97,115,115,97,99,104,117,115,101,116,116,115,116,97 -,98,108,101,32,98,111,114,100,101,114,61,105,110,116,101,114,110,97,116,105,111, -110,97,108,97,108,115,111,32,107,110,111,119,110,32,97,115,112,114,111,110,117, -110,99,105,97,116,105,111,110,98,97,99,107,103,114,111,117,110,100,58,35,102,112 -,97,100,100,105,110,103,45,108,101,102,116,58,70,111,114,32,101,120,97,109,112, -108,101,44,32,109,105,115,99,101,108,108,97,110,101,111,117,115,38,108,116,59,47 -,109,97,116,104,38,103,116,59,112,115,121,99,104,111,108,111,103,105,99,97,108, -105,110,32,112,97,114,116,105,99,117,108,97,114,101,97,114,99,104,34,32,116,121, -112,101,61,34,102,111,114,109,32,109,101,116,104,111,100,61,34,97,115,32,111,112 -,112,111,115,101,100,32,116,111,83,117,112,114,101,109,101,32,67,111,117,114,116 -,111,99,99,97,115,105,111,110,97,108,108,121,32,65,100,100,105,116,105,111,110, -97,108,108,121,44,78,111,114,116,104,32,65,109,101,114,105,99,97,112,120,59,98, -97,99,107,103,114,111,117,110,100,111,112,112,111,114,116,117,110,105,116,105, -101,115,69,110,116,101,114,116,97,105,110,109,101,110,116,46,116,111,76,111,119, -101,114,67,97,115,101,40,109,97,110,117,102,97,99,116,117,114,105,110,103,112, -114,111,102,101,115,115,105,111,110,97,108,32,99,111,109,98,105,110,101,100,32, -119,105,116,104,70,111,114,32,105,110,115,116,97,110,99,101,44,99,111,110,115, -105,115,116,105,110,103,32,111,102,34,32,109,97,120,108,101,110,103,116,104,61, -34,114,101,116,117,114,110,32,102,97,108,115,101,59,99,111,110,115,99,105,111, -117,115,110,101,115,115,77,101,100,105,116,101,114,114,97,110,101,97,110,101,120 -,116,114,97,111,114,100,105,110,97,114,121,97,115,115,97,115,115,105,110,97,116, -105,111,110,115,117,98,115,101,113,117,101,110,116,108,121,32,98,117,116,116,111 -,110,32,116,121,112,101,61,34,116,104,101,32,110,117,109,98,101,114,32,111,102, -116,104,101,32,111,114,105,103,105,110,97,108,32,99,111,109,112,114,101,104,101, -110,115,105,118,101,114,101,102,101,114,115,32,116,111,32,116,104,101,60,47,117, -108,62,10,60,47,100,105,118,62,10,112,104,105,108,111,115,111,112,104,105,99,97, -108,108,111,99,97,116,105,111,110,46,104,114,101,102,119,97,115,32,112,117,98, -108,105,115,104,101,100,83,97,110,32,70,114,97,110,99,105,115,99,111,40,102,117, -110,99,116,105,111,110,40,41,123,10,60,100,105,118,32,105,100,61,34,109,97,105, -110,115,111,112,104,105,115,116,105,99,97,116,101,100,109,97,116,104,101,109,97, -116,105,99,97,108,32,47,104,101,97,100,62,13,10,60,98,111,100,121,115,117,103, -103,101,115,116,115,32,116,104,97,116,100,111,99,117,109,101,110,116,97,116,105, -111,110,99,111,110,99,101,110,116,114,97,116,105,111,110,114,101,108,97,116,105, -111,110,115,104,105,112,115,109,97,121,32,104,97,118,101,32,98,101,101,110,40, -102,111,114,32,101,120,97,109,112,108,101,44,84,104,105,115,32,97,114,116,105,99 -,108,101,32,105,110,32,115,111,109,101,32,99,97,115,101,115,112,97,114,116,115, -32,111,102,32,116,104,101,32,100,101,102,105,110,105,116,105,111,110,32,111,102, -71,114,101,97,116,32,66,114,105,116,97,105,110,32,99,101,108,108,112,97,100,100, -105,110,103,61,101,113,117,105,118,97,108,101,110,116,32,116,111,112,108,97,99, -101,104,111,108,100,101,114,61,34,59,32,102,111,110,116,45,115,105,122,101,58,32 -,106,117,115,116,105,102,105,99,97,116,105,111,110,98,101,108,105,101,118,101, -100,32,116,104,97,116,115,117,102,102,101,114,101,100,32,102,114,111,109,97,116, -116,101,109,112,116,101,100,32,116,111,32,108,101,97,100,101,114,32,111,102,32, -116,104,101,99,114,105,112,116,34,32,115,114,99,61,34,47,40,102,117,110,99,116, -105,111,110,40,41,32,123,97,114,101,32,97,118,97,105,108,97,98,108,101,10,9,60, -108,105,110,107,32,114,101,108,61,34,32,115,114,99,61,39,104,116,116,112,58,47, -47,105,110,116,101,114,101,115,116,101,100,32,105,110,99,111,110,118,101,110,116 -,105,111,110,97,108,32,34,32,97,108,116,61,34,34,32,47,62,60,47,97,114,101,32, -103,101,110,101,114,97,108,108,121,104,97,115,32,97,108,115,111,32,98,101,101, -110,109,111,115,116,32,112,111,112,117,108,97,114,32,99,111,114,114,101,115,112, -111,110,100,105,110,103,99,114,101,100,105,116,101,100,32,119,105,116,104,116, -121,108,101,61,34,98,111,114,100,101,114,58,60,47,97,62,60,47,115,112,97,110,62, -60,47,46,103,105,102,34,32,119,105,100,116,104,61,34,60,105,102,114,97,109,101, -32,115,114,99,61,34,116,97,98,108,101,32,99,108,97,115,115,61,34,105,110,108,105 -,110,101,45,98,108,111,99,107,59,97,99,99,111,114,100,105,110,103,32,116,111,32, -116,111,103,101,116,104,101,114,32,119,105,116,104,97,112,112,114,111,120,105, -109,97,116,101,108,121,112,97,114,108,105,97,109,101,110,116,97,114,121,109,111, -114,101,32,97,110,100,32,109,111,114,101,100,105,115,112,108,97,121,58,110,111, -110,101,59,116,114,97,100,105,116,105,111,110,97,108,108,121,112,114,101,100,111 -,109,105,110,97,110,116,108,121,38,110,98,115,112,59,124,38,110,98,115,112,59,38 -,110,98,115,112,59,60,47,115,112,97,110,62,32,99,101,108,108,115,112,97,99,105, -110,103,61,60,105,110,112,117,116,32,110,97,109,101,61,34,111,114,34,32,99,111, -110,116,101,110,116,61,34,99,111,110,116,114,111,118,101,114,115,105,97,108,112, -114,111,112,101,114,116,121,61,34,111,103,58,47,120,45,115,104,111,99,107,119,97 -,118,101,45,100,101,109,111,110,115,116,114,97,116,105,111,110,115,117,114,114, -111,117,110,100,101,100,32,98,121,78,101,118,101,114,116,104,101,108,101,115,115 -,44,119,97,115,32,116,104,101,32,102,105,114,115,116,99,111,110,115,105,100,101, -114,97,98,108,101,32,65,108,116,104,111,117,103,104,32,116,104,101,32,99,111,108 -,108,97,98,111,114,97,116,105,111,110,115,104,111,117,108,100,32,110,111,116,32, -98,101,112,114,111,112,111,114,116,105,111,110,32,111,102,60,115,112,97,110,32, -115,116,121,108,101,61,34,107,110,111,119,110,32,97,115,32,116,104,101,32,115, -104,111,114,116,108,121,32,97,102,116,101,114,102,111,114,32,105,110,115,116,97, -110,99,101,44,100,101,115,99,114,105,98,101,100,32,97,115,32,47,104,101,97,100, -62,10,60,98,111,100,121,32,115,116,97,114,116,105,110,103,32,119,105,116,104,105 -,110,99,114,101,97,115,105,110,103,108,121,32,116,104,101,32,102,97,99,116,32, -116,104,97,116,100,105,115,99,117,115,115,105,111,110,32,111,102,109,105,100,100 -,108,101,32,111,102,32,116,104,101,97,110,32,105,110,100,105,118,105,100,117,97, -108,100,105,102,102,105,99,117,108,116,32,116,111,32,112,111,105,110,116,32,111, -102,32,118,105,101,119,104,111,109,111,115,101,120,117,97,108,105,116,121,97,99, -99,101,112,116,97,110,99,101,32,111,102,60,47,115,112,97,110,62,60,47,100,105, -118,62,109,97,110,117,102,97,99,116,117,114,101,114,115,111,114,105,103,105,110, -32,111,102,32,116,104,101,99,111,109,109,111,110,108,121,32,117,115,101,100,105, -109,112,111,114,116,97,110,99,101,32,111,102,100,101,110,111,109,105,110,97,116, -105,111,110,115,98,97,99,107,103,114,111,117,110,100,58,32,35,108,101,110,103, -116,104,32,111,102,32,116,104,101,100,101,116,101,114,109,105,110,97,116,105,111 -,110,97,32,115,105,103,110,105,102,105,99,97,110,116,34,32,98,111,114,100,101, -114,61,34,48,34,62,114,101,118,111,108,117,116,105,111,110,97,114,121,112,114, -105,110,99,105,112,108,101,115,32,111,102,105,115,32,99,111,110,115,105,100,101, -114,101,100,119,97,115,32,100,101,118,101,108,111,112,101,100,73,110,100,111,45, -69,117,114,111,112,101,97,110,118,117,108,110,101,114,97,98,108,101,32,116,111, -112,114,111,112,111,110,101,110,116,115,32,111,102,97,114,101,32,115,111,109,101 -,116,105,109,101,115,99,108,111,115,101,114,32,116,111,32,116,104,101,78,101,119 -,32,89,111,114,107,32,67,105,116,121,32,110,97,109,101,61,34,115,101,97,114,99, -104,97,116,116,114,105,98,117,116,101,100,32,116,111,99,111,117,114,115,101,32, -111,102,32,116,104,101,109,97,116,104,101,109,97,116,105,99,105,97,110,98,121,32 -,116,104,101,32,101,110,100,32,111,102,97,116,32,116,104,101,32,101,110,100,32, -111,102,34,32,98,111,114,100,101,114,61,34,48,34,32,116,101,99,104,110,111,108, -111,103,105,99,97,108,46,114,101,109,111,118,101,67,108,97,115,115,40,98,114,97, -110,99,104,32,111,102,32,116,104,101,101,118,105,100,101,110,99,101,32,116,104, -97,116,33,91,101,110,100,105,102,93,45,45,62,13,10,73,110,115,116,105,116,117, -116,101,32,111,102,32,105,110,116,111,32,97,32,115,105,110,103,108,101,114,101, -115,112,101,99,116,105,118,101,108,121,46,97,110,100,32,116,104,101,114,101,102, -111,114,101,112,114,111,112,101,114,116,105,101,115,32,111,102,105,115,32,108, -111,99,97,116,101,100,32,105,110,115,111,109,101,32,111,102,32,119,104,105,99, -104,84,104,101,114,101,32,105,115,32,97,108,115,111,99,111,110,116,105,110,117, -101,100,32,116,111,32,97,112,112,101,97,114,97,110,99,101,32,111,102,32,38,97, -109,112,59,110,100,97,115,104,59,32,100,101,115,99,114,105,98,101,115,32,116,104 -,101,99,111,110,115,105,100,101,114,97,116,105,111,110,97,117,116,104,111,114,32 -,111,102,32,116,104,101,105,110,100,101,112,101,110,100,101,110,116,108,121,101, -113,117,105,112,112,101,100,32,119,105,116,104,100,111,101,115,32,110,111,116,32 -,104,97,118,101,60,47,97,62,60,97,32,104,114,101,102,61,34,99,111,110,102,117, -115,101,100,32,119,105,116,104,60,108,105,110,107,32,104,114,101,102,61,34,47,97 -,116,32,116,104,101,32,97,103,101,32,111,102,97,112,112,101,97,114,32,105,110,32 -,116,104,101,84,104,101,115,101,32,105,110,99,108,117,100,101,114,101,103,97,114 -,100,108,101,115,115,32,111,102,99,111,117,108,100,32,98,101,32,117,115,101,100, -32,115,116,121,108,101,61,38,113,117,111,116,59,115,101,118,101,114,97,108,32, -116,105,109,101,115,114,101,112,114,101,115,101,110,116,32,116,104,101,98,111, -100,121,62,10,60,47,104,116,109,108,62,116,104,111,117,103,104,116,32,116,111,32 -,98,101,112,111,112,117,108,97,116,105,111,110,32,111,102,112,111,115,115,105,98 -,105,108,105,116,105,101,115,112,101,114,99,101,110,116,97,103,101,32,111,102,97 -,99,99,101,115,115,32,116,111,32,116,104,101,97,110,32,97,116,116,101,109,112, -116,32,116,111,112,114,111,100,117,99,116,105,111,110,32,111,102,106,113,117,101 -,114,121,47,106,113,117,101,114,121,116,119,111,32,100,105,102,102,101,114,101, -110,116,98,101,108,111,110,103,32,116,111,32,116,104,101,101,115,116,97,98,108, -105,115,104,109,101,110,116,114,101,112,108,97,99,105,110,103,32,116,104,101,100 -,101,115,99,114,105,112,116,105,111,110,34,32,100,101,116,101,114,109,105,110, -101,32,116,104,101,97,118,97,105,108,97,98,108,101,32,102,111,114,65,99,99,111, -114,100,105,110,103,32,116,111,32,119,105,100,101,32,114,97,110,103,101,32,111, -102,9,60,100,105,118,32,99,108,97,115,115,61,34,109,111,114,101,32,99,111,109, -109,111,110,108,121,111,114,103,97,110,105,115,97,116,105,111,110,115,102,117, -110,99,116,105,111,110,97,108,105,116,121,119,97,115,32,99,111,109,112,108,101, -116,101,100,32,38,97,109,112,59,109,100,97,115,104,59,32,112,97,114,116,105,99, -105,112,97,116,105,111,110,116,104,101,32,99,104,97,114,97,99,116,101,114,97,110 -,32,97,100,100,105,116,105,111,110,97,108,97,112,112,101,97,114,115,32,116,111, -32,98,101,102,97,99,116,32,116,104,97,116,32,116,104,101,97,110,32,101,120,97, -109,112,108,101,32,111,102,115,105,103,110,105,102,105,99,97,110,116,108,121,111 -,110,109,111,117,115,101,111,118,101,114,61,34,98,101,99,97,117,115,101,32,116, -104,101,121,32,97,115,121,110,99,32,61,32,116,114,117,101,59,112,114,111,98,108, -101,109,115,32,119,105,116,104,115,101,101,109,115,32,116,111,32,104,97,118,101, -116,104,101,32,114,101,115,117,108,116,32,111,102,32,115,114,99,61,34,104,116, -116,112,58,47,47,102,97,109,105,108,105,97,114,32,119,105,116,104,112,111,115, -115,101,115,115,105,111,110,32,111,102,102,117,110,99,116,105,111,110,32,40,41, -32,123,116,111,111,107,32,112,108,97,99,101,32,105,110,97,110,100,32,115,111,109 -,101,116,105,109,101,115,115,117,98,115,116,97,110,116,105,97,108,108,121,60,115 -,112,97,110,62,60,47,115,112,97,110,62,105,115,32,111,102,116,101,110,32,117,115 -,101,100,105,110,32,97,110,32,97,116,116,101,109,112,116,103,114,101,97,116,32, -100,101,97,108,32,111,102,69,110,118,105,114,111,110,109,101,110,116,97,108,115, -117,99,99,101,115,115,102,117,108,108,121,32,118,105,114,116,117,97,108,108,121, -32,97,108,108,50,48,116,104,32,99,101,110,116,117,114,121,44,112,114,111,102,101 -,115,115,105,111,110,97,108,115,110,101,99,101,115,115,97,114,121,32,116,111,32, -100,101,116,101,114,109,105,110,101,100,32,98,121,99,111,109,112,97,116,105,98, -105,108,105,116,121,98,101,99,97,117,115,101,32,105,116,32,105,115,68,105,99,116 -,105,111,110,97,114,121,32,111,102,109,111,100,105,102,105,99,97,116,105,111,110 -,115,84,104,101,32,102,111,108,108,111,119,105,110,103,109,97,121,32,114,101,102 -,101,114,32,116,111,58,67,111,110,115,101,113,117,101,110,116,108,121,44,73,110, -116,101,114,110,97,116,105,111,110,97,108,97,108,116,104,111,117,103,104,32,115, -111,109,101,116,104,97,116,32,119,111,117,108,100,32,98,101,119,111,114,108,100, -39,115,32,102,105,114,115,116,99,108,97,115,115,105,102,105,101,100,32,97,115,98 -,111,116,116,111,109,32,111,102,32,116,104,101,40,112,97,114,116,105,99,117,108, -97,114,108,121,97,108,105,103,110,61,34,108,101,102,116,34,32,109,111,115,116,32 -,99,111,109,109,111,110,108,121,98,97,115,105,115,32,102,111,114,32,116,104,101, -102,111,117,110,100,97,116,105,111,110,32,111,102,99,111,110,116,114,105,98,117, -116,105,111,110,115,112,111,112,117,108,97,114,105,116,121,32,111,102,99,101,110 -,116,101,114,32,111,102,32,116,104,101,116,111,32,114,101,100,117,99,101,32,116, -104,101,106,117,114,105,115,100,105,99,116,105,111,110,115,97,112,112,114,111, -120,105,109,97,116,105,111,110,32,111,110,109,111,117,115,101,111,117,116,61,34, -78,101,119,32,84,101,115,116,97,109,101,110,116,99,111,108,108,101,99,116,105, -111,110,32,111,102,60,47,115,112,97,110,62,60,47,97,62,60,47,105,110,32,116,104, -101,32,85,110,105,116,101,100,102,105,108,109,32,100,105,114,101,99,116,111,114, -45,115,116,114,105,99,116,46,100,116,100,34,62,104,97,115,32,98,101,101,110,32, -117,115,101,100,114,101,116,117,114,110,32,116,111,32,116,104,101,97,108,116,104 -,111,117,103,104,32,116,104,105,115,99,104,97,110,103,101,32,105,110,32,116,104, -101,115,101,118,101,114,97,108,32,111,116,104,101,114,98,117,116,32,116,104,101, -114,101,32,97,114,101,117,110,112,114,101,99,101,100,101,110,116,101,100,105,115 -,32,115,105,109,105,108,97,114,32,116,111,101,115,112,101,99,105,97,108,108,121, -32,105,110,119,101,105,103,104,116,58,32,98,111,108,100,59,105,115,32,99,97,108, -108,101,100,32,116,104,101,99,111,109,112,117,116,97,116,105,111,110,97,108,105, -110,100,105,99,97,116,101,32,116,104,97,116,114,101,115,116,114,105,99,116,101, -100,32,116,111,9,60,109,101,116,97,32,110,97,109,101,61,34,97,114,101,32,116,121 -,112,105,99,97,108,108,121,99,111,110,102,108,105,99,116,32,119,105,116,104,72, -111,119,101,118,101,114,44,32,116,104,101,32,65,110,32,101,120,97,109,112,108, -101,32,111,102,99,111,109,112,97,114,101,100,32,119,105,116,104,113,117,97,110, -116,105,116,105,101,115,32,111,102,114,97,116,104,101,114,32,116,104,97,110,32, -97,99,111,110,115,116,101,108,108,97,116,105,111,110,110,101,99,101,115,115,97, -114,121,32,102,111,114,114,101,112,111,114,116,101,100,32,116,104,97,116,115,112 -,101,99,105,102,105,99,97,116,105,111,110,112,111,108,105,116,105,99,97,108,32, -97,110,100,38,110,98,115,112,59,38,110,98,115,112,59,60,114,101,102,101,114,101, -110,99,101,115,32,116,111,116,104,101,32,115,97,109,101,32,121,101,97,114,71,111 -,118,101,114,110,109,101,110,116,32,111,102,103,101,110,101,114,97,116,105,111, -110,32,111,102,104,97,118,101,32,110,111,116,32,98,101,101,110,115,101,118,101, -114,97,108,32,121,101,97,114,115,99,111,109,109,105,116,109,101,110,116,32,116, -111,9,9,60,117,108,32,99,108,97,115,115,61,34,118,105,115,117,97,108,105,122,97, -116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,44,112,114,97,99,116 -,105,116,105,111,110,101,114,115,116,104,97,116,32,104,101,32,119,111,117,108, -100,97,110,100,32,99,111,110,116,105,110,117,101,100,111,99,99,117,112,97,116, -105,111,110,32,111,102,105,115,32,100,101,102,105,110,101,100,32,97,115,99,101, -110,116,114,101,32,111,102,32,116,104,101,116,104,101,32,97,109,111,117,110,116, -32,111,102,62,60,100,105,118,32,115,116,121,108,101,61,34,101,113,117,105,118,97 -,108,101,110,116,32,111,102,100,105,102,102,101,114,101,110,116,105,97,116,101, -98,114,111,117,103,104,116,32,97,98,111,117,116,109,97,114,103,105,110,45,108, -101,102,116,58,32,97,117,116,111,109,97,116,105,99,97,108,108,121,116,104,111, -117,103,104,116,32,111,102,32,97,115,83,111,109,101,32,111,102,32,116,104,101, -115,101,10,60,100,105,118,32,99,108,97,115,115,61,34,105,110,112,117,116,32,99, -108,97,115,115,61,34,114,101,112,108,97,99,101,100,32,119,105,116,104,105,115,32 -,111,110,101,32,111,102,32,116,104,101,101,100,117,99,97,116,105,111,110,32,97, -110,100,105,110,102,108,117,101,110,99,101,100,32,98,121,114,101,112,117,116,97, -116,105,111,110,32,97,115,10,60,109,101,116,97,32,110,97,109,101,61,34,97,99,99, -111,109,109,111,100,97,116,105,111,110,60,47,100,105,118,62,10,60,47,100,105,118 -,62,108,97,114,103,101,32,112,97,114,116,32,111,102,73,110,115,116,105,116,117, -116,101,32,102,111,114,116,104,101,32,115,111,45,99,97,108,108,101,100,32,97,103 -,97,105,110,115,116,32,116,104,101,32,73,110,32,116,104,105,115,32,99,97,115,101 -,44,119,97,115,32,97,112,112,111,105,110,116,101,100,99,108,97,105,109,101,100, -32,116,111,32,98,101,72,111,119,101,118,101,114,44,32,116,104,105,115,68,101,112 -,97,114,116,109,101,110,116,32,111,102,116,104,101,32,114,101,109,97,105,110,105 -,110,103,101,102,102,101,99,116,32,111,110,32,116,104,101,112,97,114,116,105,99, -117,108,97,114,108,121,32,100,101,97,108,32,119,105,116,104,32,116,104,101,10,60 -,100,105,118,32,115,116,121,108,101,61,34,97,108,109,111,115,116,32,97,108,119, -97,121,115,97,114,101,32,99,117,114,114,101,110,116,108,121,101,120,112,114,101, -115,115,105,111,110,32,111,102,112,104,105,108,111,115,111,112,104,121,32,111, -102,102,111,114,32,109,111,114,101,32,116,104,97,110,99,105,118,105,108,105,122, -97,116,105,111,110,115,111,110,32,116,104,101,32,105,115,108,97,110,100,115,101, -108,101,99,116,101,100,73,110,100,101,120,99,97,110,32,114,101,115,117,108,116, -32,105,110,34,32,118,97,108,117,101,61,34,34,32,47,62,116,104,101,32,115,116,114 -,117,99,116,117,114,101,32,47,62,60,47,97,62,60,47,100,105,118,62,77,97,110,121, -32,111,102,32,116,104,101,115,101,99,97,117,115,101,100,32,98,121,32,116,104,101 -,111,102,32,116,104,101,32,85,110,105,116,101,100,115,112,97,110,32,99,108,97, -115,115,61,34,109,99,97,110,32,98,101,32,116,114,97,99,101,100,105,115,32,114, -101,108,97,116,101,100,32,116,111,98,101,99,97,109,101,32,111,110,101,32,111,102 -,105,115,32,102,114,101,113,117,101,110,116,108,121,108,105,118,105,110,103,32, -105,110,32,116,104,101,116,104,101,111,114,101,116,105,99,97,108,108,121,70,111, -108,108,111,119,105,110,103,32,116,104,101,82,101,118,111,108,117,116,105,111, -110,97,114,121,103,111,118,101,114,110,109,101,110,116,32,105,110,105,115,32,100 -,101,116,101,114,109,105,110,101,100,116,104,101,32,112,111,108,105,116,105,99, -97,108,105,110,116,114,111,100,117,99,101,100,32,105,110,115,117,102,102,105,99, -105,101,110,116,32,116,111,100,101,115,99,114,105,112,116,105,111,110,34,62,115, -104,111,114,116,32,115,116,111,114,105,101,115,115,101,112,97,114,97,116,105,111 -,110,32,111,102,97,115,32,116,111,32,119,104,101,116,104,101,114,107,110,111,119 -,110,32,102,111,114,32,105,116,115,119,97,115,32,105,110,105,116,105,97,108,108, -121,100,105,115,112,108,97,121,58,98,108,111,99,107,105,115,32,97,110,32,101,120 -,97,109,112,108,101,116,104,101,32,112,114,105,110,99,105,112,97,108,99,111,110, -115,105,115,116,115,32,111,102,32,97,114,101,99,111,103,110,105,122,101,100,32, -97,115,47,98,111,100,121,62,60,47,104,116,109,108,62,97,32,115,117,98,115,116,97 -,110,116,105,97,108,114,101,99,111,110,115,116,114,117,99,116,101,100,104,101,97 -,100,32,111,102,32,115,116,97,116,101,114,101,115,105,115,116,97,110,99,101,32, -116,111,117,110,100,101,114,103,114,97,100,117,97,116,101,84,104,101,114,101,32, -97,114,101,32,116,119,111,103,114,97,118,105,116,97,116,105,111,110,97,108,97, -114,101,32,100,101,115,99,114,105,98,101,100,105,110,116,101,110,116,105,111,110 -,97,108,108,121,115,101,114,118,101,100,32,97,115,32,116,104,101,99,108,97,115, -115,61,34,104,101,97,100,101,114,111,112,112,111,115,105,116,105,111,110,32,116, -111,102,117,110,100,97,109,101,110,116,97,108,108,121,100,111,109,105,110,97,116 -,101,100,32,116,104,101,97,110,100,32,116,104,101,32,111,116,104,101,114,97,108, -108,105,97,110,99,101,32,119,105,116,104,119,97,115,32,102,111,114,99,101,100,32 -,116,111,114,101,115,112,101,99,116,105,118,101,108,121,44,97,110,100,32,112,111 -,108,105,116,105,99,97,108,105,110,32,115,117,112,112,111,114,116,32,111,102,112 -,101,111,112,108,101,32,105,110,32,116,104,101,50,48,116,104,32,99,101,110,116, -117,114,121,46,97,110,100,32,112,117,98,108,105,115,104,101,100,108,111,97,100, -67,104,97,114,116,98,101,97,116,116,111,32,117,110,100,101,114,115,116,97,110, -100,109,101,109,98,101,114,32,115,116,97,116,101,115,101,110,118,105,114,111,110 -,109,101,110,116,97,108,102,105,114,115,116,32,104,97,108,102,32,111,102,99,111, -117,110,116,114,105,101,115,32,97,110,100,97,114,99,104,105,116,101,99,116,117, -114,97,108,98,101,32,99,111,110,115,105,100,101,114,101,100,99,104,97,114,97,99, -116,101,114,105,122,101,100,99,108,101,97,114,73,110,116,101,114,118,97,108,97, -117,116,104,111,114,105,116,97,116,105,118,101,70,101,100,101,114,97,116,105,111 -,110,32,111,102,119,97,115,32,115,117,99,99,101,101,100,101,100,97,110,100,32, -116,104,101,114,101,32,97,114,101,97,32,99,111,110,115,101,113,117,101,110,99, -101,116,104,101,32,80,114,101,115,105,100,101,110,116,97,108,115,111,32,105,110, -99,108,117,100,101,100,102,114,101,101,32,115,111,102,116,119,97,114,101,115,117 -,99,99,101,115,115,105,111,110,32,111,102,100,101,118,101,108,111,112,101,100,32 -,116,104,101,119,97,115,32,100,101,115,116,114,111,121,101,100,97,119,97,121,32, -102,114,111,109,32,116,104,101,59,10,60,47,115,99,114,105,112,116,62,10,60,97, -108,116,104,111,117,103,104,32,116,104,101,121,102,111,108,108,111,119,101,100, -32,98,121,32,97,109,111,114,101,32,112,111,119,101,114,102,117,108,114,101,115, -117,108,116,101,100,32,105,110,32,97,85,110,105,118,101,114,115,105,116,121,32, -111,102,72,111,119,101,118,101,114,44,32,109,97,110,121,116,104,101,32,112,114, -101,115,105,100,101,110,116,72,111,119,101,118,101,114,44,32,115,111,109,101,105 -,115,32,116,104,111,117,103,104,116,32,116,111,117,110,116,105,108,32,116,104, -101,32,101,110,100,119,97,115,32,97,110,110,111,117,110,99,101,100,97,114,101,32 -,105,109,112,111,114,116,97,110,116,97,108,115,111,32,105,110,99,108,117,100,101 -,115,62,60,105,110,112,117,116,32,116,121,112,101,61,116,104,101,32,99,101,110, -116,101,114,32,111,102,32,68,79,32,78,79,84,32,65,76,84,69,82,117,115,101,100,32 -,116,111,32,114,101,102,101,114,116,104,101,109,101,115,47,63,115,111,114,116,61 -,116,104,97,116,32,104,97,100,32,98,101,101,110,116,104,101,32,98,97,115,105,115 -,32,102,111,114,104,97,115,32,100,101,118,101,108,111,112,101,100,105,110,32,116 -,104,101,32,115,117,109,109,101,114,99,111,109,112,97,114,97,116,105,118,101,108 -,121,100,101,115,99,114,105,98,101,100,32,116,104,101,115,117,99,104,32,97,115, -32,116,104,111,115,101,116,104,101,32,114,101,115,117,108,116,105,110,103,105, -115,32,105,109,112,111,115,115,105,98,108,101,118,97,114,105,111,117,115,32,111, -116,104,101,114,83,111,117,116,104,32,65,102,114,105,99,97,110,104,97,118,101,32 -,116,104,101,32,115,97,109,101,101,102,102,101,99,116,105,118,101,110,101,115, -115,105,110,32,119,104,105,99,104,32,99,97,115,101,59,32,116,101,120,116,45,97, -108,105,103,110,58,115,116,114,117,99,116,117,114,101,32,97,110,100,59,32,98,97, -99,107,103,114,111,117,110,100,58,114,101,103,97,114,100,105,110,103,32,116,104, -101,115,117,112,112,111,114,116,101,100,32,116,104,101,105,115,32,97,108,115,111 -,32,107,110,111,119,110,115,116,121,108,101,61,34,109,97,114,103,105,110,105,110 -,99,108,117,100,105,110,103,32,116,104,101,98,97,104,97,115,97,32,77,101,108,97, -121,117,110,111,114,115,107,32,98,111,107,109,195,165,108,110,111,114,115,107,32 -,110,121,110,111,114,115,107,115,108,111,118,101,110,197,161,196,141,105,110,97, -105,110,116,101,114,110,97,99,105,111,110,97,108,99,97,108,105,102,105,99,97,99, -105,195,179,110,99,111,109,117,110,105,99,97,99,105,195,179,110,99,111,110,115, -116,114,117,99,99,105,195,179,110,34,62,60,100,105,118,32,99,108,97,115,115,61, -34,100,105,115,97,109,98,105,103,117,97,116,105,111,110,68,111,109,97,105,110,78 -,97,109,101,39,44,32,39,97,100,109,105,110,105,115,116,114,97,116,105,111,110, -115,105,109,117,108,116,97,110,101,111,117,115,108,121,116,114,97,110,115,112, -111,114,116,97,116,105,111,110,73,110,116,101,114,110,97,116,105,111,110,97,108, -32,109,97,114,103,105,110,45,98,111,116,116,111,109,58,114,101,115,112,111,110, -115,105,98,105,108,105,116,121,60,33,91,101,110,100,105,102,93,45,45,62,10,60,47 -,62,60,109,101,116,97,32,110,97,109,101,61,34,105,109,112,108,101,109,101,110, -116,97,116,105,111,110,105,110,102,114,97,115,116,114,117,99,116,117,114,101,114 -,101,112,114,101,115,101,110,116,97,116,105,111,110,98,111,114,100,101,114,45,98 -,111,116,116,111,109,58,60,47,104,101,97,100,62,10,60,98,111,100,121,62,61,104, -116,116,112,37,51,65,37,50,70,37,50,70,60,102,111,114,109,32,109,101,116,104,111 -,100,61,34,109,101,116,104,111,100,61,34,112,111,115,116,34,32,47,102,97,118,105 -,99,111,110,46,105,99,111,34,32,125,41,59,10,60,47,115,99,114,105,112,116,62,10, -46,115,101,116,65,116,116,114,105,98,117,116,101,40,65,100,109,105,110,105,115, -116,114,97,116,105,111,110,61,32,110,101,119,32,65,114,114,97,121,40,41,59,60,33 -,91,101,110,100,105,102,93,45,45,62,13,10,100,105,115,112,108,97,121,58,98,108, -111,99,107,59,85,110,102,111,114,116,117,110,97,116,101,108,121,44,34,62,38,110, -98,115,112,59,60,47,100,105,118,62,47,102,97,118,105,99,111,110,46,105,99,111,34 -,62,61,39,115,116,121,108,101,115,104,101,101,116,39,32,105,100,101,110,116,105, -102,105,99,97,116,105,111,110,44,32,102,111,114,32,101,120,97,109,112,108,101,44 -,60,108,105,62,60,97,32,104,114,101,102,61,34,47,97,110,32,97,108,116,101,114, -110,97,116,105,118,101,97,115,32,97,32,114,101,115,117,108,116,32,111,102,112, -116,34,62,60,47,115,99,114,105,112,116,62,10,116,121,112,101,61,34,115,117,98, -109,105,116,34,32,10,40,102,117,110,99,116,105,111,110,40,41,32,123,114,101,99, -111,109,109,101,110,100,97,116,105,111,110,102,111,114,109,32,97,99,116,105,111, -110,61,34,47,116,114,97,110,115,102,111,114,109,97,116,105,111,110,114,101,99, -111,110,115,116,114,117,99,116,105,111,110,46,115,116,121,108,101,46,100,105,115 -,112,108,97,121,32,65,99,99,111,114,100,105,110,103,32,116,111,32,104,105,100, -100,101,110,34,32,110,97,109,101,61,34,97,108,111,110,103,32,119,105,116,104,32, -116,104,101,100,111,99,117,109,101,110,116,46,98,111,100,121,46,97,112,112,114, -111,120,105,109,97,116,101,108,121,32,67,111,109,109,117,110,105,99,97,116,105, -111,110,115,112,111,115,116,34,32,97,99,116,105,111,110,61,34,109,101,97,110,105 -,110,103,32,38,113,117,111,116,59,45,45,60,33,91,101,110,100,105,102,93,45,45,62 -,80,114,105,109,101,32,77,105,110,105,115,116,101,114,99,104,97,114,97,99,116, -101,114,105,115,116,105,99,60,47,97,62,32,60,97,32,99,108,97,115,115,61,116,104, -101,32,104,105,115,116,111,114,121,32,111,102,32,111,110,109,111,117,115,101,111 -,118,101,114,61,34,116,104,101,32,103,111,118,101,114,110,109,101,110,116,104, -114,101,102,61,34,104,116,116,112,115,58,47,47,119,97,115,32,111,114,105,103,105 -,110,97,108,108,121,119,97,115,32,105,110,116,114,111,100,117,99,101,100,99,108, -97,115,115,105,102,105,99,97,116,105,111,110,114,101,112,114,101,115,101,110,116 -,97,116,105,118,101,97,114,101,32,99,111,110,115,105,100,101,114,101,100,60,33, -91,101,110,100,105,102,93,45,45,62,10,10,100,101,112,101,110,100,115,32,111,110, -32,116,104,101,85,110,105,118,101,114,115,105,116,121,32,111,102,32,105,110,32, -99,111,110,116,114,97,115,116,32,116,111,32,112,108,97,99,101,104,111,108,100, -101,114,61,34,105,110,32,116,104,101,32,99,97,115,101,32,111,102,105,110,116,101 -,114,110,97,116,105,111,110,97,108,32,99,111,110,115,116,105,116,117,116,105,111 -,110,97,108,115,116,121,108,101,61,34,98,111,114,100,101,114,45,58,32,102,117, -110,99,116,105,111,110,40,41,32,123,66,101,99,97,117,115,101,32,111,102,32,116, -104,101,45,115,116,114,105,99,116,46,100,116,100,34,62,10,60,116,97,98,108,101, -32,99,108,97,115,115,61,34,97,99,99,111,109,112,97,110,105,101,100,32,98,121,97, -99,99,111,117,110,116,32,111,102,32,116,104,101,60,115,99,114,105,112,116,32,115 -,114,99,61,34,47,110,97,116,117,114,101,32,111,102,32,116,104,101,32,116,104,101 -,32,112,101,111,112,108,101,32,105,110,32,105,110,32,97,100,100,105,116,105,111, -110,32,116,111,115,41,59,32,106,115,46,105,100,32,61,32,105,100,34,32,119,105, -100,116,104,61,34,49,48,48,37,34,114,101,103,97,114,100,105,110,103,32,116,104, -101,32,82,111,109,97,110,32,67,97,116,104,111,108,105,99,97,110,32,105,110,100, -101,112,101,110,100,101,110,116,102,111,108,108,111,119,105,110,103,32,116,104, -101,32,46,103,105,102,34,32,119,105,100,116,104,61,34,49,116,104,101,32,102,111, -108,108,111,119,105,110,103,32,100,105,115,99,114,105,109,105,110,97,116,105,111 -,110,97,114,99,104,97,101,111,108,111,103,105,99,97,108,112,114,105,109,101,32, -109,105,110,105,115,116,101,114,46,106,115,34,62,60,47,115,99,114,105,112,116,62 -,99,111,109,98,105,110,97,116,105,111,110,32,111,102,32,109,97,114,103,105,110, -119,105,100,116,104,61,34,99,114,101,97,116,101,69,108,101,109,101,110,116,40, -119,46,97,116,116,97,99,104,69,118,101,110,116,40,60,47,97,62,60,47,116,100,62, -60,47,116,114,62,115,114,99,61,34,104,116,116,112,115,58,47,47,97,73,110,32,112, -97,114,116,105,99,117,108,97,114,44,32,97,108,105,103,110,61,34,108,101,102,116, -34,32,67,122,101,99,104,32,82,101,112,117,98,108,105,99,85,110,105,116,101,100, -32,75,105,110,103,100,111,109,99,111,114,114,101,115,112,111,110,100,101,110,99, -101,99,111,110,99,108,117,100,101,100,32,116,104,97,116,46,104,116,109,108,34,32 -,116,105,116,108,101,61,34,40,102,117,110,99,116,105,111,110,32,40,41,32,123,99, -111,109,101,115,32,102,114,111,109,32,116,104,101,97,112,112,108,105,99,97,116, -105,111,110,32,111,102,60,115,112,97,110,32,99,108,97,115,115,61,34,115,98,101, -108,105,101,118,101,100,32,116,111,32,98,101,101,109,101,110,116,40,39,115,99, -114,105,112,116,39,60,47,97,62,10,60,47,108,105,62,10,60,108,105,118,101,114,121 -,32,100,105,102,102,101,114,101,110,116,62,60,115,112,97,110,32,99,108,97,115, -115,61,34,111,112,116,105,111,110,32,118,97,108,117,101,61,34,40,97,108,115,111, -32,107,110,111,119,110,32,97,115,9,60,108,105,62,60,97,32,104,114,101,102,61,34, -62,60,105,110,112,117,116,32,110,97,109,101,61,34,115,101,112,97,114,97,116,101, -100,32,102,114,111,109,114,101,102,101,114,114,101,100,32,116,111,32,97,115,32, -118,97,108,105,103,110,61,34,116,111,112,34,62,102,111,117,110,100,101,114,32, -111,102,32,116,104,101,97,116,116,101,109,112,116,105,110,103,32,116,111,32,99, -97,114,98,111,110,32,100,105,111,120,105,100,101,10,10,60,100,105,118,32,99,108, -97,115,115,61,34,99,108,97,115,115,61,34,115,101,97,114,99,104,45,47,98,111,100, -121,62,10,60,47,104,116,109,108,62,111,112,112,111,114,116,117,110,105,116,121, -32,116,111,99,111,109,109,117,110,105,99,97,116,105,111,110,115,60,47,104,101,97 -,100,62,13,10,60,98,111,100,121,32,115,116,121,108,101,61,34,119,105,100,116,104 -,58,84,105,225,186,191,110,103,32,86,105,225,187,135,116,99,104,97,110,103,101, -115,32,105,110,32,116,104,101,98,111,114,100,101,114,45,99,111,108,111,114,58,35 -,48,34,32,98,111,114,100,101,114,61,34,48,34,32,60,47,115,112,97,110,62,60,47, -100,105,118,62,60,119,97,115,32,100,105,115,99,111,118,101,114,101,100,34,32,116 -,121,112,101,61,34,116,101,120,116,34,32,41,59,10,60,47,115,99,114,105,112,116, -62,10,10,68,101,112,97,114,116,109,101,110,116,32,111,102,32,101,99,99,108,101, -115,105,97,115,116,105,99,97,108,116,104,101,114,101,32,104,97,115,32,98,101,101 -,110,114,101,115,117,108,116,105,110,103,32,102,114,111,109,60,47,98,111,100,121 -,62,60,47,104,116,109,108,62,104,97,115,32,110,101,118,101,114,32,98,101,101,110 -,116,104,101,32,102,105,114,115,116,32,116,105,109,101,105,110,32,114,101,115, -112,111,110,115,101,32,116,111,97,117,116,111,109,97,116,105,99,97,108,108,121, -32,60,47,100,105,118,62,10,10,60,100,105,118,32,105,119,97,115,32,99,111,110,115 -,105,100,101,114,101,100,112,101,114,99,101,110,116,32,111,102,32,116,104,101,34 -,32,47,62,60,47,97,62,60,47,100,105,118,62,99,111,108,108,101,99,116,105,111,110 -,32,111,102,32,100,101,115,99,101,110,100,101,100,32,102,114,111,109,115,101,99, -116,105,111,110,32,111,102,32,116,104,101,97,99,99,101,112,116,45,99,104,97,114, -115,101,116,116,111,32,98,101,32,99,111,110,102,117,115,101,100,109,101,109,98, -101,114,32,111,102,32,116,104,101,32,112,97,100,100,105,110,103,45,114,105,103, -104,116,58,116,114,97,110,115,108,97,116,105,111,110,32,111,102,105,110,116,101, -114,112,114,101,116,97,116,105,111,110,32,104,114,101,102,61,39,104,116,116,112, -58,47,47,119,104,101,116,104,101,114,32,111,114,32,110,111,116,84,104,101,114, -101,32,97,114,101,32,97,108,115,111,116,104,101,114,101,32,97,114,101,32,109,97, -110,121,97,32,115,109,97,108,108,32,110,117,109,98,101,114,111,116,104,101,114, -32,112,97,114,116,115,32,111,102,105,109,112,111,115,115,105,98,108,101,32,116, -111,32,32,99,108,97,115,115,61,34,98,117,116,116,111,110,108,111,99,97,116,101, -100,32,105,110,32,116,104,101,46,32,72,111,119,101,118,101,114,44,32,116,104,101 -,97,110,100,32,101,118,101,110,116,117,97,108,108,121,65,116,32,116,104,101,32, -101,110,100,32,111,102,32,98,101,99,97,117,115,101,32,111,102,32,105,116,115,114 -,101,112,114,101,115,101,110,116,115,32,116,104,101,60,102,111,114,109,32,97,99, -116,105,111,110,61,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,105, -116,32,105,115,32,112,111,115,115,105,98,108,101,109,111,114,101,32,108,105,107, -101,108,121,32,116,111,97,110,32,105,110,99,114,101,97,115,101,32,105,110,104,97 -,118,101,32,97,108,115,111,32,98,101,101,110,99,111,114,114,101,115,112,111,110, -100,115,32,116,111,97,110,110,111,117,110,99,101,100,32,116,104,97,116,97,108, -105,103,110,61,34,114,105,103,104,116,34,62,109,97,110,121,32,99,111,117,110,116 -,114,105,101,115,102,111,114,32,109,97,110,121,32,121,101,97,114,115,101,97,114, -108,105,101,115,116,32,107,110,111,119,110,98,101,99,97,117,115,101,32,105,116, -32,119,97,115,112,116,34,62,60,47,115,99,114,105,112,116,62,13,32,118,97,108,105 -,103,110,61,34,116,111,112,34,32,105,110,104,97,98,105,116,97,110,116,115,32,111 -,102,102,111,108,108,111,119,105,110,103,32,121,101,97,114,13,10,60,100,105,118, -32,99,108,97,115,115,61,34,109,105,108,108,105,111,110,32,112,101,111,112,108, -101,99,111,110,116,114,111,118,101,114,115,105,97,108,32,99,111,110,99,101,114, -110,105,110,103,32,116,104,101,97,114,103,117,101,32,116,104,97,116,32,116,104, -101,103,111,118,101,114,110,109,101,110,116,32,97,110,100,97,32,114,101,102,101, -114,101,110,99,101,32,116,111,116,114,97,110,115,102,101,114,114,101,100,32,116, -111,100,101,115,99,114,105,98,105,110,103,32,116,104,101,32,115,116,121,108,101, -61,34,99,111,108,111,114,58,97,108,116,104,111,117,103,104,32,116,104,101,114, -101,98,101,115,116,32,107,110,111,119,110,32,102,111,114,115,117,98,109,105,116, -34,32,110,97,109,101,61,34,109,117,108,116,105,112,108,105,99,97,116,105,111,110 -,109,111,114,101,32,116,104,97,110,32,111,110,101,32,114,101,99,111,103,110,105, -116,105,111,110,32,111,102,67,111,117,110,99,105,108,32,111,102,32,116,104,101, -101,100,105,116,105,111,110,32,111,102,32,116,104,101,32,32,60,109,101,116,97,32 -,110,97,109,101,61,34,69,110,116,101,114,116,97,105,110,109,101,110,116,32,97, -119,97,121,32,102,114,111,109,32,116,104,101,32,59,109,97,114,103,105,110,45,114 -,105,103,104,116,58,97,116,32,116,104,101,32,116,105,109,101,32,111,102,105,110, -118,101,115,116,105,103,97,116,105,111,110,115,99,111,110,110,101,99,116,101,100 -,32,119,105,116,104,97,110,100,32,109,97,110,121,32,111,116,104,101,114,97,108, -116,104,111,117,103,104,32,105,116,32,105,115,98,101,103,105,110,110,105,110,103 -,32,119,105,116,104,32,60,115,112,97,110,32,99,108,97,115,115,61,34,100,101,115, -99,101,110,100,97,110,116,115,32,111,102,60,115,112,97,110,32,99,108,97,115,115, -61,34,105,32,97,108,105,103,110,61,34,114,105,103,104,116,34,60,47,104,101,97, -100,62,10,60,98,111,100,121,32,97,115,112,101,99,116,115,32,111,102,32,116,104, -101,104,97,115,32,115,105,110,99,101,32,98,101,101,110,69,117,114,111,112,101,97 -,110,32,85,110,105,111,110,114,101,109,105,110,105,115,99,101,110,116,32,111,102 -,109,111,114,101,32,100,105,102,102,105,99,117,108,116,86,105,99,101,32,80,114, -101,115,105,100,101,110,116,99,111,109,112,111,115,105,116,105,111,110,32,111, -102,112,97,115,115,101,100,32,116,104,114,111,117,103,104,109,111,114,101,32,105 -,109,112,111,114,116,97,110,116,102,111,110,116,45,115,105,122,101,58,49,49,112, -120,101,120,112,108,97,110,97,116,105,111,110,32,111,102,116,104,101,32,99,111, -110,99,101,112,116,32,111,102,119,114,105,116,116,101,110,32,105,110,32,116,104, -101,9,60,115,112,97,110,32,99,108,97,115,115,61,34,105,115,32,111,110,101,32,111 -,102,32,116,104,101,32,114,101,115,101,109,98,108,97,110,99,101,32,116,111,111, -110,32,116,104,101,32,103,114,111,117,110,100,115,119,104,105,99,104,32,99,111, -110,116,97,105,110,115,105,110,99,108,117,100,105,110,103,32,116,104,101,32,100, -101,102,105,110,101,100,32,98,121,32,116,104,101,112,117,98,108,105,99,97,116, -105,111,110,32,111,102,109,101,97,110,115,32,116,104,97,116,32,116,104,101,111, -117,116,115,105,100,101,32,111,102,32,116,104,101,115,117,112,112,111,114,116,32 -,111,102,32,116,104,101,60,105,110,112,117,116,32,99,108,97,115,115,61,34,60,115 -,112,97,110,32,99,108,97,115,115,61,34,116,40,77,97,116,104,46,114,97,110,100, -111,109,40,41,109,111,115,116,32,112,114,111,109,105,110,101,110,116,100,101,115 -,99,114,105,112,116,105,111,110,32,111,102,67,111,110,115,116,97,110,116,105,110 -,111,112,108,101,119,101,114,101,32,112,117,98,108,105,115,104,101,100,60,100, -105,118,32,99,108,97,115,115,61,34,115,101,97,112,112,101,97,114,115,32,105,110, -32,116,104,101,49,34,32,104,101,105,103,104,116,61,34,49,34,32,109,111,115,116, -32,105,109,112,111,114,116,97,110,116,119,104,105,99,104,32,105,110,99,108,117, -100,101,115,119,104,105,99,104,32,104,97,100,32,98,101,101,110,100,101,115,116, -114,117,99,116,105,111,110,32,111,102,116,104,101,32,112,111,112,117,108,97,116, -105,111,110,10,9,60,100,105,118,32,99,108,97,115,115,61,34,112,111,115,115,105, -98,105,108,105,116,121,32,111,102,115,111,109,101,116,105,109,101,115,32,117,115 -,101,100,97,112,112,101,97,114,32,116,111,32,104,97,118,101,115,117,99,99,101, -115,115,32,111,102,32,116,104,101,105,110,116,101,110,100,101,100,32,116,111,32, -98,101,112,114,101,115,101,110,116,32,105,110,32,116,104,101,115,116,121,108,101 -,61,34,99,108,101,97,114,58,98,13,10,60,47,115,99,114,105,112,116,62,13,10,60, -119,97,115,32,102,111,117,110,100,101,100,32,105,110,105,110,116,101,114,118,105 -,101,119,32,119,105,116,104,95,105,100,34,32,99,111,110,116,101,110,116,61,34,99 -,97,112,105,116,97,108,32,111,102,32,116,104,101,13,10,60,108,105,110,107,32,114 -,101,108,61,34,115,114,101,108,101,97,115,101,32,111,102,32,116,104,101,112,111, -105,110,116,32,111,117,116,32,116,104,97,116,120,77,76,72,116,116,112,82,101,113 -,117,101,115,116,97,110,100,32,115,117,98,115,101,113,117,101,110,116,115,101,99 -,111,110,100,32,108,97,114,103,101,115,116,118,101,114,121,32,105,109,112,111, -114,116,97,110,116,115,112,101,99,105,102,105,99,97,116,105,111,110,115,115,117, -114,102,97,99,101,32,111,102,32,116,104,101,97,112,112,108,105,101,100,32,116, -111,32,116,104,101,102,111,114,101,105,103,110,32,112,111,108,105,99,121,95,115, -101,116,68,111,109,97,105,110,78,97,109,101,101,115,116,97,98,108,105,115,104, -101,100,32,105,110,105,115,32,98,101,108,105,101,118,101,100,32,116,111,73,110, -32,97,100,100,105,116,105,111,110,32,116,111,109,101,97,110,105,110,103,32,111, -102,32,116,104,101,105,115,32,110,97,109,101,100,32,97,102,116,101,114,116,111, -32,112,114,111,116,101,99,116,32,116,104,101,105,115,32,114,101,112,114,101,115, -101,110,116,101,100,68,101,99,108,97,114,97,116,105,111,110,32,111,102,109,111, -114,101,32,101,102,102,105,99,105,101,110,116,67,108,97,115,115,105,102,105,99, -97,116,105,111,110,111,116,104,101,114,32,102,111,114,109,115,32,111,102,104,101 -,32,114,101,116,117,114,110,101,100,32,116,111,60,115,112,97,110,32,99,108,97, -115,115,61,34,99,112,101,114,102,111,114,109,97,110,99,101,32,111,102,40,102,117 -,110,99,116,105,111,110,40,41,32,123,13,105,102,32,97,110,100,32,111,110,108,121 -,32,105,102,114,101,103,105,111,110,115,32,111,102,32,116,104,101,108,101,97,100 -,105,110,103,32,116,111,32,116,104,101,114,101,108,97,116,105,111,110,115,32,119 -,105,116,104,85,110,105,116,101,100,32,78,97,116,105,111,110,115,115,116,121,108 -,101,61,34,104,101,105,103,104,116,58,111,116,104,101,114,32,116,104,97,110,32, -116,104,101,121,112,101,34,32,99,111,110,116,101,110,116,61,34,65,115,115,111,99 -,105,97,116,105,111,110,32,111,102,10,60,47,104,101,97,100,62,10,60,98,111,100, -121,108,111,99,97,116,101,100,32,111,110,32,116,104,101,105,115,32,114,101,102, -101,114,114,101,100,32,116,111,40,105,110,99,108,117,100,105,110,103,32,116,104, -101,99,111,110,99,101,110,116,114,97,116,105,111,110,115,116,104,101,32,105,110, -100,105,118,105,100,117,97,108,97,109,111,110,103,32,116,104,101,32,109,111,115, -116,116,104,97,110,32,97,110,121,32,111,116,104,101,114,47,62,10,60,108,105,110, -107,32,114,101,108,61,34,32,114,101,116,117,114,110,32,102,97,108,115,101,59,116 -,104,101,32,112,117,114,112,111,115,101,32,111,102,116,104,101,32,97,98,105,108, -105,116,121,32,116,111,59,99,111,108,111,114,58,35,102,102,102,125,10,46,10,60, -115,112,97,110,32,99,108,97,115,115,61,34,116,104,101,32,115,117,98,106,101,99, -116,32,111,102,100,101,102,105,110,105,116,105,111,110,115,32,111,102,62,13,10, -60,108,105,110,107,32,114,101,108,61,34,99,108,97,105,109,32,116,104,97,116,32, -116,104,101,104,97,118,101,32,100,101,118,101,108,111,112,101,100,60,116,97,98, -108,101,32,119,105,100,116,104,61,34,99,101,108,101,98,114,97,116,105,111,110,32 -,111,102,70,111,108,108,111,119,105,110,103,32,116,104,101,32,116,111,32,100,105 -,115,116,105,110,103,117,105,115,104,60,115,112,97,110,32,99,108,97,115,115,61, -34,98,116,97,107,101,115,32,112,108,97,99,101,32,105,110,117,110,100,101,114,32, -116,104,101,32,110,97,109,101,110,111,116,101,100,32,116,104,97,116,32,116,104, -101,62,60,33,91,101,110,100,105,102,93,45,45,62,10,115,116,121,108,101,61,34,109 -,97,114,103,105,110,45,105,110,115,116,101,97,100,32,111,102,32,116,104,101,105, -110,116,114,111,100,117,99,101,100,32,116,104,101,116,104,101,32,112,114,111,99, -101,115,115,32,111,102,105,110,99,114,101,97,115,105,110,103,32,116,104,101,100, -105,102,102,101,114,101,110,99,101,115,32,105,110,101,115,116,105,109,97,116,101 -,100,32,116,104,97,116,101,115,112,101,99,105,97,108,108,121,32,116,104,101,47, -100,105,118,62,60,100,105,118,32,105,100,61,34,119,97,115,32,101,118,101,110,116 -,117,97,108,108,121,116,104,114,111,117,103,104,111,117,116,32,104,105,115,116, -104,101,32,100,105,102,102,101,114,101,110,99,101,115,111,109,101,116,104,105, -110,103,32,116,104,97,116,115,112,97,110,62,60,47,115,112,97,110,62,60,47,115, -105,103,110,105,102,105,99,97,110,116,108,121,32,62,60,47,115,99,114,105,112,116 -,62,13,10,13,10,101,110,118,105,114,111,110,109,101,110,116,97,108,32,116,111,32 -,112,114,101,118,101,110,116,32,116,104,101,104,97,118,101,32,98,101,101,110,32, -117,115,101,100,101,115,112,101,99,105,97,108,108,121,32,102,111,114,117,110,100 -,101,114,115,116,97,110,100,32,116,104,101,105,115,32,101,115,115,101,110,116, -105,97,108,108,121,119,101,114,101,32,116,104,101,32,102,105,114,115,116,105,115 -,32,116,104,101,32,108,97,114,103,101,115,116,104,97,118,101,32,98,101,101,110, -32,109,97,100,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,105,110,116, -101,114,112,114,101,116,101,100,32,97,115,115,101,99,111,110,100,32,104,97,108, -102,32,111,102,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,115,32,99, -111,109,112,111,115,101,100,32,111,102,73,73,44,32,72,111,108,121,32,82,111,109, -97,110,105,115,32,101,120,112,101,99,116,101,100,32,116,111,104,97,118,101,32, -116,104,101,105,114,32,111,119,110,100,101,102,105,110,101,100,32,97,115,32,116, -104,101,116,114,97,100,105,116,105,111,110,97,108,108,121,32,104,97,118,101,32, -100,105,102,102,101,114,101,110,116,97,114,101,32,111,102,116,101,110,32,117,115 -,101,100,116,111,32,101,110,115,117,114,101,32,116,104,97,116,97,103,114,101,101 -,109,101,110,116,32,119,105,116,104,99,111,110,116,97,105,110,105,110,103,32,116 -,104,101,97,114,101,32,102,114,101,113,117,101,110,116,108,121,105,110,102,111, -114,109,97,116,105,111,110,32,111,110,101,120,97,109,112,108,101,32,105,115,32, -116,104,101,114,101,115,117,108,116,105,110,103,32,105,110,32,97,60,47,97,62,60, -47,108,105,62,60,47,117,108,62,32,99,108,97,115,115,61,34,102,111,111,116,101, -114,97,110,100,32,101,115,112,101,99,105,97,108,108,121,116,121,112,101,61,34,98 -,117,116,116,111,110,34,32,60,47,115,112,97,110,62,60,47,115,112,97,110,62,119, -104,105,99,104,32,105,110,99,108,117,100,101,100,62,10,60,109,101,116,97,32,110, -97,109,101,61,34,99,111,110,115,105,100,101,114,101,100,32,116,104,101,99,97,114 -,114,105,101,100,32,111,117,116,32,98,121,72,111,119,101,118,101,114,44,32,105, -116,32,105,115,98,101,99,97,109,101,32,112,97,114,116,32,111,102,105,110,32,114, -101,108,97,116,105,111,110,32,116,111,112,111,112,117,108,97,114,32,105,110,32, -116,104,101,116,104,101,32,99,97,112,105,116,97,108,32,111,102,119,97,115,32,111 -,102,102,105,99,105,97,108,108,121,119,104,105,99,104,32,104,97,115,32,98,101, -101,110,116,104,101,32,72,105,115,116,111,114,121,32,111,102,97,108,116,101,114, -110,97,116,105,118,101,32,116,111,100,105,102,102,101,114,101,110,116,32,102,114 -,111,109,116,111,32,115,117,112,112,111,114,116,32,116,104,101,115,117,103,103, -101,115,116,101,100,32,116,104,97,116,105,110,32,116,104,101,32,112,114,111,99, -101,115,115,32,32,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,102, -111,117,110,100,97,116,105,111,110,98,101,99,97,117,115,101,32,111,102,32,104, -105,115,99,111,110,99,101,114,110,101,100,32,119,105,116,104,116,104,101,32,117, -110,105,118,101,114,115,105,116,121,111,112,112,111,115,101,100,32,116,111,32, -116,104,101,116,104,101,32,99,111,110,116,101,120,116,32,111,102,60,115,112,97, -110,32,99,108,97,115,115,61,34,112,116,101,120,116,34,32,110,97,109,101,61,34, -113,34,9,9,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,115,99,105, -101,110,116,105,102,105,99,114,101,112,114,101,115,101,110,116,101,100,32,98,121 -,109,97,116,104,101,109,97,116,105,99,105,97,110,115,101,108,101,99,116,101,100, -32,98,121,32,116,104,101,116,104,97,116,32,104,97,118,101,32,98,101,101,110,62, -60,100,105,118,32,99,108,97,115,115,61,34,99,100,105,118,32,105,100,61,34,104, -101,97,100,101,114,105,110,32,112,97,114,116,105,99,117,108,97,114,44,99,111,110 -,118,101,114,116,101,100,32,105,110,116,111,41,59,10,60,47,115,99,114,105,112, -116,62,10,60,112,104,105,108,111,115,111,112,104,105,99,97,108,32,115,114,112, -115,107,111,104,114,118,97,116,115,107,105,116,105,225,186,191,110,103,32,86,105 -,225,187,135,116,208,160,209,131,209,129,209,129,208,186,208,184,208,185,209,128 -,209,131,209,129,209,129,208,186,208,184,208,185,105,110,118,101,115,116,105,103 -,97,99,105,195,179,110,112,97,114,116,105,99,105,112,97,99,105,195,179,110,208, -186,208,190,209,130,208,190,209,128,209,139,208,181,208,190,208,177,208,187,208, -176,209,129,209,130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,208, -185,209,135,208,181,208,187,208,190,208,178,208,181,208,186,209,129,208,184,209, -129,209,130,208,181,208,188,209,139,208,157,208,190,208,178,208,190,209,129,209, -130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,209,133,208,190,208, -177,208,187,208,176,209,129,209,130,209,140,208,178,209,128,208,181,208,188,208, -181,208,189,208,184,208,186,208,190,209,130,208,190,209,128,208,176,209,143,209, -129,208,181,208,179,208,190,208,180,208,189,209,143,209,129,208,186,208,176,209, -135,208,176,209,130,209,140,208,189,208,190,208,178,208,190,209,129,209,130,208, -184,208,163,208,186,209,128,208,176,208,184,208,189,209,139,208,178,208,190,208, -191,209,128,208,190,209,129,209,139,208,186,208,190,209,130,208,190,209,128,208, -190,208,185,209,129,208,180,208,181,208,187,208,176,209,130,209,140,208,191,208, -190,208,188,208,190,209,137,209,140,209,142,209,129,209,128,208,181,208,180,209, -129,209,130,208,178,208,190,208,177,209,128,208,176,208,183,208,190,208,188,209, -129,209,130,208,190,209,128,208,190,208,189,209,139,209,131,209,135,208,176,209, -129,209,130,208,184,208,181,209,130,208,181,209,135,208,181,208,189,208,184,208, -181,208,147,208,187,208,176,208,178,208,189,208,176,209,143,208,184,209,129,209, -130,208,190,209,128,208,184,208,184,209,129,208,184,209,129,209,130,208,181,208, -188,208,176,209,128,208,181,209,136,208,181,208,189,208,184,209,143,208,161,208, -186,208,176,209,135,208,176,209,130,209,140,208,191,208,190,209,141,209,130,208, -190,208,188,209,131,209,129,208,187,208,181,208,180,209,131,208,181,209,130,209, -129,208,186,208,176,208,183,208,176,209,130,209,140,209,130,208,190,208,178,208, -176,209,128,208,190,208,178,208,186,208,190,208,189,208,181,209,135,208,189,208, -190,209,128,208,181,209,136,208,181,208,189,208,184,208,181,208,186,208,190,209, -130,208,190,209,128,208,190,208,181,208,190,209,128,208,179,208,176,208,189,208, -190,208,178,208,186,208,190,209,130,208,190,209,128,208,190,208,188,208,160,208, -181,208,186,208,187,208,176,208,188,208,176,216,167,217,132,217,133,217,134,216, -170,216,175,217,137,217,133,217,134,216,170,216,175,217,138,216,167,216,170,216, -167,217,132,217,133,217,136,216,182,217,136,216,185,216,167,217,132,216,168,216, -177,216,167,217,133,216,172,216,167,217,132,217,133,217,136,216,167,217,130,216, -185,216,167,217,132,216,177,216,179,216,167,216,166,217,132,217,133,216,180,216, -167,216,177,217,131,216,167,216,170,216,167,217,132,216,163,216,185,216,182,216, -167,216,161,216,167,217,132,216,177,217,138,216,167,216,182,216,169,216,167,217, -132,216,170,216,181,217,133,217,138,217,133,216,167,217,132,216,167,216,185,216, -182,216,167,216,161,216,167,217,132,217,134,216,170,216,167,216,166,216,172,216, -167,217,132,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,170,216, -179,216,172,217,138,217,132,216,167,217,132,216,163,217,130,216,179,216,167,217, -133,216,167,217,132,216,182,216,186,216,183,216,167,216,170,216,167,217,132,217, -129,217,138,216,175,217,138,217,136,216,167,217,132,216,170,216,177,216,173,217, -138,216,168,216,167,217,132,216,172,216,175,217,138,216,175,216,169,216,167,217, -132,216,170,216,185,217,132,217,138,217,133,216,167,217,132,216,163,216,174,216, -168,216,167,216,177,216,167,217,132,216,167,217,129,217,132,216,167,217,133,216, -167,217,132,216,163,217,129,217,132,216,167,217,133,216,167,217,132,216,170,216, -167,216,177,217,138,216,174,216,167,217,132,216,170,217,130,217,134,217,138,216, -169,216,167,217,132,216,167,217,132,216,185,216,167,216,168,216,167,217,132,216, -174,217,136,216,167,216,183,216,177,216,167,217,132,217,133,216,172,216,170,217, -133,216,185,216,167,217,132,216,175,217,138,217,131,217,136,216,177,216,167,217, -132,216,179,217,138,216,167,216,173,216,169,216,185,216,168,216,175,216,167,217, -132,217,132,217,135,216,167,217,132,216,170,216,177,216,168,217,138,216,169,216, -167,217,132,216,177,217,136,216,167,216,168,216,183,216,167,217,132,216,163,216, -175,216,168,217,138,216,169,216,167,217,132,216,167,216,174,216,168,216,167,216, -177,216,167,217,132,217,133,216,170,216,173,216,175,216,169,216,167,217,132,216, -167,216,186,216,167,217,134,217,138,99,117,114,115,111,114,58,112,111,105,110, -116,101,114,59,60,47,116,105,116,108,101,62,10,60,109,101,116,97,32,34,32,104, -114,101,102,61,34,104,116,116,112,58,47,47,34,62,60,115,112,97,110,32,99,108,97, -115,115,61,34,109,101,109,98,101,114,115,32,111,102,32,116,104,101,32,119,105, -110,100,111,119,46,108,111,99,97,116,105,111,110,118,101,114,116,105,99,97,108, -45,97,108,105,103,110,58,47,97,62,32,124,32,60,97,32,104,114,101,102,61,34,60,33 -,100,111,99,116,121,112,101,32,104,116,109,108,62,109,101,100,105,97,61,34,115, -99,114,101,101,110,34,32,60,111,112,116,105,111,110,32,118,97,108,117,101,61,34, -102,97,118,105,99,111,110,46,105,99,111,34,32,47,62,10,9,9,60,100,105,118,32,99, -108,97,115,115,61,34,99,104,97,114,97,99,116,101,114,105,115,116,105,99,115,34, -32,109,101,116,104,111,100,61,34,103,101,116,34,32,47,98,111,100,121,62,10,60,47 -,104,116,109,108,62,10,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32, -100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,112,97,100,100,105,110, -103,45,98,111,116,116,111,109,58,114,101,112,114,101,115,101,110,116,97,116,105, -118,101,115,115,117,98,109,105,116,34,32,118,97,108,117,101,61,34,97,108,105,103 -,110,61,34,99,101,110,116,101,114,34,32,116,104,114,111,117,103,104,111,117,116, -32,116,104,101,32,115,99,105,101,110,99,101,32,102,105,99,116,105,111,110,10,32, -32,60,100,105,118,32,99,108,97,115,115,61,34,115,117,98,109,105,116,34,32,99,108 -,97,115,115,61,34,111,110,101,32,111,102,32,116,104,101,32,109,111,115,116,32, -118,97,108,105,103,110,61,34,116,111,112,34,62,60,119,97,115,32,101,115,116,97, -98,108,105,115,104,101,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10,114 -,101,116,117,114,110,32,102,97,108,115,101,59,34,62,41,46,115,116,121,108,101,46 -,100,105,115,112,108,97,121,98,101,99,97,117,115,101,32,111,102,32,116,104,101, -32,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,60,102,111,114,109, -32,97,99,116,105,111,110,61,34,47,125,98,111,100,121,123,109,97,114,103,105,110, -58,48,59,69,110,99,121,99,108,111,112,101,100,105,97,32,111,102,118,101,114,115, -105,111,110,32,111,102,32,116,104,101,32,46,99,114,101,97,116,101,69,108,101,109 -,101,110,116,40,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,60,47,100, -105,118,62,10,60,47,100,105,118,62,10,10,97,100,109,105,110,105,115,116,114,97, -116,105,118,101,32,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,104,105, -115,116,111,114,121,32,111,102,32,116,104,101,32,34,62,60,105,110,112,117,116,32 -,116,121,112,101,61,34,112,111,114,116,105,111,110,32,111,102,32,116,104,101,32, -97,115,32,112,97,114,116,32,111,102,32,116,104,101,32,38,110,98,115,112,59,60,97 -,32,104,114,101,102,61,34,111,116,104,101,114,32,99,111,117,110,116,114,105,101, -115,34,62,10,60,100,105,118,32,99,108,97,115,115,61,34,60,47,115,112,97,110,62, -60,47,115,112,97,110,62,60,73,110,32,111,116,104,101,114,32,119,111,114,100,115, -44,100,105,115,112,108,97,121,58,32,98,108,111,99,107,59,99,111,110,116,114,111, -108,32,111,102,32,116,104,101,32,105,110,116,114,111,100,117,99,116,105,111,110, -32,111,102,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,97,115,32,119,101, -108,108,32,97,115,32,116,104,101,32,105,110,32,114,101,99,101,110,116,32,121,101 -,97,114,115,13,10,9,60,100,105,118,32,99,108,97,115,115,61,34,60,47,100,105,118, -62,10,9,60,47,100,105,118,62,10,105,110,115,112,105,114,101,100,32,98,121,32,116 -,104,101,116,104,101,32,101,110,100,32,111,102,32,116,104,101,32,99,111,109,112, -97,116,105,98,108,101,32,119,105,116,104,98,101,99,97,109,101,32,107,110,111,119 -,110,32,97,115,32,115,116,121,108,101,61,34,109,97,114,103,105,110,58,46,106,115 -,34,62,60,47,115,99,114,105,112,116,62,60,32,73,110,116,101,114,110,97,116,105, -111,110,97,108,32,116,104,101,114,101,32,104,97,118,101,32,98,101,101,110,71,101 -,114,109,97,110,32,108,97,110,103,117,97,103,101,32,115,116,121,108,101,61,34,99 -,111,108,111,114,58,35,67,111,109,109,117,110,105,115,116,32,80,97,114,116,121, -99,111,110,115,105,115,116,101,110,116,32,119,105,116,104,98,111,114,100,101,114 -,61,34,48,34,32,99,101,108,108,32,109,97,114,103,105,110,104,101,105,103,104,116 -,61,34,116,104,101,32,109,97,106,111,114,105,116,121,32,111,102,34,32,97,108,105 -,103,110,61,34,99,101,110,116,101,114,114,101,108,97,116,101,100,32,116,111,32, -116,104,101,32,109,97,110,121,32,100,105,102,102,101,114,101,110,116,32,79,114, -116,104,111,100,111,120,32,67,104,117,114,99,104,115,105,109,105,108,97,114,32, -116,111,32,116,104,101,32,47,62,10,60,108,105,110,107,32,114,101,108,61,34,115, -119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,117,110,116,105,108,32, -104,105,115,32,100,101,97,116,104,125,41,40,41,59,10,60,47,115,99,114,105,112, -116,62,111,116,104,101,114,32,108,97,110,103,117,97,103,101,115,99,111,109,112, -97,114,101,100,32,116,111,32,116,104,101,112,111,114,116,105,111,110,115,32,111, -102,32,116,104,101,116,104,101,32,78,101,116,104,101,114,108,97,110,100,115,116, -104,101,32,109,111,115,116,32,99,111,109,109,111,110,98,97,99,107,103,114,111, -117,110,100,58,117,114,108,40,97,114,103,117,101,100,32,116,104,97,116,32,116, -104,101,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,110,99,108, -117,100,101,100,32,105,110,32,116,104,101,78,111,114,116,104,32,65,109,101,114, -105,99,97,110,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,105,110 -,116,101,114,112,114,101,116,97,116,105,111,110,115,116,104,101,32,116,114,97, -100,105,116,105,111,110,97,108,100,101,118,101,108,111,112,109,101,110,116,32, -111,102,32,102,114,101,113,117,101,110,116,108,121,32,117,115,101,100,97,32,99, -111,108,108,101,99,116,105,111,110,32,111,102,118,101,114,121,32,115,105,109,105 -,108,97,114,32,116,111,115,117,114,114,111,117,110,100,105,110,103,32,116,104, -101,101,120,97,109,112,108,101,32,111,102,32,116,104,105,115,97,108,105,103,110, -61,34,99,101,110,116,101,114,34,62,119,111,117,108,100,32,104,97,118,101,32,98, -101,101,110,105,109,97,103,101,95,99,97,112,116,105,111,110,32,61,97,116,116,97, -99,104,101,100,32,116,111,32,116,104,101,115,117,103,103,101,115,116,105,110,103 -,32,116,104,97,116,105,110,32,116,104,101,32,102,111,114,109,32,111,102,32,105, -110,118,111,108,118,101,100,32,105,110,32,116,104,101,105,115,32,100,101,114,105 -,118,101,100,32,102,114,111,109,110,97,109,101,100,32,97,102,116,101,114,32,116, -104,101,73,110,116,114,111,100,117,99,116,105,111,110,32,116,111,114,101,115,116 -,114,105,99,116,105,111,110,115,32,111,110,32,115,116,121,108,101,61,34,119,105, -100,116,104,58,32,99,97,110,32,98,101,32,117,115,101,100,32,116,111,32,116,104, -101,32,99,114,101,97,116,105,111,110,32,111,102,109,111,115,116,32,105,109,112, -111,114,116,97,110,116,32,105,110,102,111,114,109,97,116,105,111,110,32,97,110, -100,114,101,115,117,108,116,101,100,32,105,110,32,116,104,101,99,111,108,108,97, -112,115,101,32,111,102,32,116,104,101,84,104,105,115,32,109,101,97,110,115,32, -116,104,97,116,101,108,101,109,101,110,116,115,32,111,102,32,116,104,101,119,97, -115,32,114,101,112,108,97,99,101,100,32,98,121,97,110,97,108,121,115,105,115,32, -111,102,32,116,104,101,105,110,115,112,105,114,97,116,105,111,110,32,102,111,114 -,114,101,103,97,114,100,101,100,32,97,115,32,116,104,101,109,111,115,116,32,115, -117,99,99,101,115,115,102,117,108,107,110,111,119,110,32,97,115,32,38,113,117, -111,116,59,97,32,99,111,109,112,114,101,104,101,110,115,105,118,101,72,105,115, -116,111,114,121,32,111,102,32,116,104,101,32,119,101,114,101,32,99,111,110,115, -105,100,101,114,101,100,114,101,116,117,114,110,101,100,32,116,111,32,116,104, -101,97,114,101,32,114,101,102,101,114,114,101,100,32,116,111,85,110,115,111,117, -114,99,101,100,32,105,109,97,103,101,62,10,9,60,100,105,118,32,99,108,97,115,115 -,61,34,99,111,110,115,105,115,116,115,32,111,102,32,116,104,101,115,116,111,112, -80,114,111,112,97,103,97,116,105,111,110,105,110,116,101,114,101,115,116,32,105, -110,32,116,104,101,97,118,97,105,108,97,98,105,108,105,116,121,32,111,102,97,112 -,112,101,97,114,115,32,116,111,32,104,97,118,101,101,108,101,99,116,114,111,109, -97,103,110,101,116,105,99,101,110,97,98,108,101,83,101,114,118,105,99,101,115,40 -,102,117,110,99,116,105,111,110,32,111,102,32,116,104,101,73,116,32,105,115,32, -105,109,112,111,114,116,97,110,116,60,47,115,99,114,105,112,116,62,60,47,100,105 -,118,62,102,117,110,99,116,105,111,110,40,41,123,118,97,114,32,114,101,108,97, -116,105,118,101,32,116,111,32,116,104,101,97,115,32,97,32,114,101,115,117,108, -116,32,111,102,32,116,104,101,32,112,111,115,105,116,105,111,110,32,111,102,70, -111,114,32,101,120,97,109,112,108,101,44,32,105,110,32,109,101,116,104,111,100, -61,34,112,111,115,116,34,32,119,97,115,32,102,111,108,108,111,119,101,100,32,98, -121,38,97,109,112,59,109,100,97,115,104,59,32,116,104,101,116,104,101,32,97,112, -112,108,105,99,97,116,105,111,110,106,115,34,62,60,47,115,99,114,105,112,116,62, -13,10,117,108,62,60,47,100,105,118,62,60,47,100,105,118,62,97,102,116,101,114,32 -,116,104,101,32,100,101,97,116,104,119,105,116,104,32,114,101,115,112,101,99,116 -,32,116,111,115,116,121,108,101,61,34,112,97,100,100,105,110,103,58,105,115,32, -112,97,114,116,105,99,117,108,97,114,108,121,100,105,115,112,108,97,121,58,105, -110,108,105,110,101,59,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,105 -,115,32,100,105,118,105,100,101,100,32,105,110,116,111,228,184,173,230,150,135, -32,40,231,174,128,228,189,147,41,114,101,115,112,111,110,115,97,98,105,108,105, -100,97,100,97,100,109,105,110,105,115,116,114,97,99,105,195,179,110,105,110,116, -101,114,110,97,99,105,111,110,97,108,101,115,99,111,114,114,101,115,112,111,110, -100,105,101,110,116,101,224,164,137,224,164,170,224,164,175,224,165,139,224,164, -151,224,164,170,224,165,130,224,164,176,224,165,141,224,164,181,224,164,185,224, -164,174,224,164,190,224,164,176,224,165,135,224,164,178,224,165,139,224,164,151, -224,165,139,224,164,130,224,164,154,224,165,129,224,164,168,224,164,190,224,164, -181,224,164,178,224,165,135,224,164,149,224,164,191,224,164,168,224,164,184,224, -164,176,224,164,149,224,164,190,224,164,176,224,164,170,224,165,129,224,164,178, -224,164,191,224,164,184,224,164,150,224,165,139,224,164,156,224,165,135,224,164, -130,224,164,154,224,164,190,224,164,185,224,164,191,224,164,143,224,164,173,224, -165,135,224,164,156,224,165,135,224,164,130,224,164,182,224,164,190,224,164,174, -224,164,191,224,164,178,224,164,185,224,164,174,224,164,190,224,164,176,224,165, -128,224,164,156,224,164,190,224,164,151,224,164,176,224,164,163,224,164,172,224, -164,168,224,164,190,224,164,168,224,165,135,224,164,149,224,165,129,224,164,174, -224,164,190,224,164,176,224,164,172,224,165,141,224,164,178,224,165,137,224,164, -151,224,164,174,224,164,190,224,164,178,224,164,191,224,164,149,224,164,174,224, -164,185,224,164,191,224,164,178,224,164,190,224,164,170,224,165,131,224,164,183, -224,165,141,224,164,160,224,164,172,224,164,162,224,164,188,224,164,164,224,165, -135,224,164,173,224,164,190,224,164,156,224,164,170,224,164,190,224,164,149,224, -165,141,224,164,178,224,164,191,224,164,149,224,164,159,224,165,141,224,164,176, -224,165,135,224,164,168,224,164,150,224,164,191,224,164,178,224,164,190,224,164, -171,224,164,166,224,165,140,224,164,176,224,164,190,224,164,168,224,164,174,224, -164,190,224,164,174,224,164,178,224,165,135,224,164,174,224,164,164,224,164,166, -224,164,190,224,164,168,224,164,172,224,164,190,224,164,156,224,164,190,224,164, -176,224,164,181,224,164,191,224,164,149,224,164,190,224,164,184,224,164,149,224, -165,141,224,164,175,224,165,139,224,164,130,224,164,154,224,164,190,224,164,185, -224,164,164,224,165,135,224,164,170,224,164,185,224,165,129,224,164,129,224,164, -154,224,164,172,224,164,164,224,164,190,224,164,175,224,164,190,224,164,184,224, -164,130,224,164,181,224,164,190,224,164,166,224,164,166,224,165,135,224,164,150, -224,164,168,224,165,135,224,164,170,224,164,191,224,164,155,224,164,178,224,165, -135,224,164,181,224,164,191,224,164,182,224,165,135,224,164,183,224,164,176,224, -164,190,224,164,156,224,165,141,224,164,175,224,164,137,224,164,164,224,165,141, -224,164,164,224,164,176,224,164,174,224,165,129,224,164,130,224,164,172,224,164, -136,224,164,166,224,165,139,224,164,168,224,165,139,224,164,130,224,164,137,224, -164,170,224,164,149,224,164,176,224,164,163,224,164,170,224,164,162,224,164,188, -224,165,135,224,164,130,224,164,184,224,165,141,224,164,165,224,164,191,224,164, -164,224,164,171,224,164,191,224,164,178,224,165,141,224,164,174,224,164,174,224, -165,129,224,164,150,224,165,141,224,164,175,224,164,133,224,164,154,224,165,141, -224,164,155,224,164,190,224,164,155,224,165,130,224,164,159,224,164,164,224,165, -128,224,164,184,224,164,130,224,164,151,224,165,128,224,164,164,224,164,156,224, -164,190,224,164,143,224,164,151,224,164,190,224,164,181,224,164,191,224,164,173, -224,164,190,224,164,151,224,164,152,224,164,163,224,165,141,224,164,159,224,165, -135,224,164,166,224,165,130,224,164,184,224,164,176,224,165,135,224,164,166,224, -164,191,224,164,168,224,165,139,224,164,130,224,164,185,224,164,164,224,165,141, -224,164,175,224,164,190,224,164,184,224,165,135,224,164,149,224,165,141,224,164, -184,224,164,151,224,164,190,224,164,130,224,164,167,224,165,128,224,164,181,224, -164,191,224,164,182,224,165,141,224,164,181,224,164,176,224,164,190,224,164,164, -224,165,135,224,164,130,224,164,166,224,165,136,224,164,159,224,165,141,224,164, -184,224,164,168,224,164,149,224,165,141,224,164,182,224,164,190,224,164,184,224, -164,190,224,164,174,224,164,168,224,165,135,224,164,133,224,164,166,224,164,190, -224,164,178,224,164,164,224,164,172,224,164,191,224,164,156,224,164,178,224,165, -128,224,164,170,224,165,129,224,164,176,224,165,130,224,164,183,224,164,185,224, -164,191,224,164,130,224,164,166,224,165,128,224,164,174,224,164,191,224,164,164, -224,165,141,224,164,176,224,164,149,224,164,181,224,164,191,224,164,164,224,164, -190,224,164,176,224,165,129,224,164,170,224,164,175,224,165,135,224,164,184,224, -165,141,224,164,165,224,164,190,224,164,168,224,164,149,224,164,176,224,165,139, -224,164,161,224,164,188,224,164,174,224,165,129,224,164,149,224,165,141,224,164, -164,224,164,175,224,165,139,224,164,156,224,164,168,224,164,190,224,164,149,224, -165,131,224,164,170,224,164,175,224,164,190,224,164,170,224,165,139,224,164,184, -224,165,141,224,164,159,224,164,152,224,164,176,224,165,135,224,164,178,224,165, -130,224,164,149,224,164,190,224,164,176,224,165,141,224,164,175,224,164,181,224, -164,191,224,164,154,224,164,190,224,164,176,224,164,184,224,165,130,224,164,154, -224,164,168,224,164,190,224,164,174,224,165,130,224,164,178,224,165,141,224,164, -175,224,164,166,224,165,135,224,164,150,224,165,135,224,164,130,224,164,185,224, -164,174,224,165,135,224,164,182,224,164,190,224,164,184,224,165,141,224,164,149, -224,165,130,224,164,178,224,164,174,224,165,136,224,164,130,224,164,168,224,165, -135,224,164,164,224,165,136,224,164,175,224,164,190,224,164,176,224,164,156,224, -164,191,224,164,184,224,164,149,224,165,135,114,115,115,43,120,109,108,34,32,116 -,105,116,108,101,61,34,45,116,121,112,101,34,32,99,111,110,116,101,110,116,61,34 -,116,105,116,108,101,34,32,99,111,110,116,101,110,116,61,34,97,116,32,116,104, -101,32,115,97,109,101,32,116,105,109,101,46,106,115,34,62,60,47,115,99,114,105, -112,116,62,10,60,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,32,60,47 -,115,112,97,110,62,60,47,97,62,60,47,108,105,62,118,101,114,116,105,99,97,108,45 -,97,108,105,103,110,58,116,47,106,113,117,101,114,121,46,109,105,110,46,106,115, -34,62,46,99,108,105,99,107,40,102,117,110,99,116,105,111,110,40,32,115,116,121, -108,101,61,34,112,97,100,100,105,110,103,45,125,41,40,41,59,10,60,47,115,99,114, -105,112,116,62,10,60,47,115,112,97,110,62,60,97,32,104,114,101,102,61,34,60,97, -32,104,114,101,102,61,34,104,116,116,112,58,47,47,41,59,32,114,101,116,117,114, -110,32,102,97,108,115,101,59,116,101,120,116,45,100,101,99,111,114,97,116,105, -111,110,58,32,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,98,111,114, -100,101,114,45,99,111,108,108,97,112,115,101,58,97,115,115,111,99,105,97,116,101 -,100,32,119,105,116,104,32,66,97,104,97,115,97,32,73,110,100,111,110,101,115,105 -,97,69,110,103,108,105,115,104,32,108,97,110,103,117,97,103,101,60,116,101,120, -116,32,120,109,108,58,115,112,97,99,101,61,46,103,105,102,34,32,98,111,114,100, -101,114,61,34,48,34,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,10,111, -118,101,114,102,108,111,119,58,104,105,100,100,101,110,59,105,109,103,32,115,114 -,99,61,34,104,116,116,112,58,47,47,97,100,100,69,118,101,110,116,76,105,115,116, -101,110,101,114,114,101,115,112,111,110,115,105,98,108,101,32,102,111,114,32,115 -,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,47,102,97,118,105,99,111, -110,46,105,99,111,34,32,47,62,111,112,101,114,97,116,105,110,103,32,115,121,115, -116,101,109,34,32,115,116,121,108,101,61,34,119,105,100,116,104,58,49,116,97,114 -,103,101,116,61,34,95,98,108,97,110,107,34,62,83,116,97,116,101,32,85,110,105, -118,101,114,115,105,116,121,116,101,120,116,45,97,108,105,103,110,58,108,101,102 -,116,59,10,100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,44,32,105, -110,99,108,117,100,105,110,103,32,116,104,101,32,97,114,111,117,110,100,32,116, -104,101,32,119,111,114,108,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10 -,60,34,32,115,116,121,108,101,61,34,104,101,105,103,104,116,58,59,111,118,101, -114,102,108,111,119,58,104,105,100,100,101,110,109,111,114,101,32,105,110,102, -111,114,109,97,116,105,111,110,97,110,32,105,110,116,101,114,110,97,116,105,111, -110,97,108,97,32,109,101,109,98,101,114,32,111,102,32,116,104,101,32,111,110,101 -,32,111,102,32,116,104,101,32,102,105,114,115,116,99,97,110,32,98,101,32,102,111 -,117,110,100,32,105,110,32,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10, -100,105,115,112,108,97,121,58,32,110,111,110,101,59,34,62,34,32,47,62,10,60,108, -105,110,107,32,114,101,108,61,34,10,32,32,40,102,117,110,99,116,105,111,110,40, -41,32,123,116,104,101,32,49,53,116,104,32,99,101,110,116,117,114,121,46,112,114, -101,118,101,110,116,68,101,102,97,117,108,116,40,108,97,114,103,101,32,110,117, -109,98,101,114,32,111,102,32,66,121,122,97,110,116,105,110,101,32,69,109,112,105 -,114,101,46,106,112,103,124,116,104,117,109,98,124,108,101,102,116,124,118,97, -115,116,32,109,97,106,111,114,105,116,121,32,111,102,109,97,106,111,114,105,116, -121,32,111,102,32,116,104,101,32,32,97,108,105,103,110,61,34,99,101,110,116,101, -114,34,62,85,110,105,118,101,114,115,105,116,121,32,80,114,101,115,115,100,111, -109,105,110,97,116,101,100,32,98,121,32,116,104,101,83,101,99,111,110,100,32,87, -111,114,108,100,32,87,97,114,100,105,115,116,114,105,98,117,116,105,111,110,32, -111,102,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,116,104, -101,32,114,101,115,116,32,111,102,32,116,104,101,32,99,104,97,114,97,99,116,101, -114,105,122,101,100,32,98,121,32,114,101,108,61,34,110,111,102,111,108,108,111, -119,34,62,100,101,114,105,118,101,115,32,102,114,111,109,32,116,104,101,114,97, -116,104,101,114,32,116,104,97,110,32,116,104,101,32,97,32,99,111,109,98,105,110, -97,116,105,111,110,32,111,102,115,116,121,108,101,61,34,119,105,100,116,104,58, -49,48,48,69,110,103,108,105,115,104,45,115,112,101,97,107,105,110,103,99,111,109 -,112,117,116,101,114,32,115,99,105,101,110,99,101,98,111,114,100,101,114,61,34, -48,34,32,97,108,116,61,34,116,104,101,32,101,120,105,115,116,101,110,99,101,32, -111,102,68,101,109,111,99,114,97,116,105,99,32,80,97,114,116,121,34,32,115,116, -121,108,101,61,34,109,97,114,103,105,110,45,70,111,114,32,116,104,105,115,32,114 -,101,97,115,111,110,44,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,9,115 -,66,121,84,97,103,78,97,109,101,40,115,41,91,48,93,106,115,34,62,60,47,115,99, -114,105,112,116,62,13,10,60,46,106,115,34,62,60,47,115,99,114,105,112,116,62,13, -10,108,105,110,107,32,114,101,108,61,34,105,99,111,110,34,32,39,32,97,108,116,61 -,39,39,32,99,108,97,115,115,61,39,102,111,114,109,97,116,105,111,110,32,111,102, -32,116,104,101,118,101,114,115,105,111,110,115,32,111,102,32,116,104,101,32,60, -47,97,62,60,47,100,105,118,62,60,47,100,105,118,62,47,112,97,103,101,62,10,32,32 -,60,112,97,103,101,62,10,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110, -116,98,101,99,97,109,101,32,116,104,101,32,102,105,114,115,116,98,97,104,97,115, -97,32,73,110,100,111,110,101,115,105,97,101,110,103,108,105,115,104,32,40,115, -105,109,112,108,101,41,206,149,206,187,206,187,206,183,206,189,206,185,206,186, -206,172,209,133,209,128,208,178,208,176,209,130,209,129,208,186,208,184,208,186, -208,190,208,188,208,191,208,176,208,189,208,184,208,184,209,143,208,178,208,187, -209,143,208,181,209,130,209,129,209,143,208,148,208,190,208,177,208,176,208,178, -208,184,209,130,209,140,209,135,208,181,208,187,208,190,208,178,208,181,208,186, -208,176,209,128,208,176,208,183,208,178,208,184,209,130,208,184,209,143,208,152, -208,189,209,130,208,181,209,128,208,189,208,181,209,130,208,158,209,130,208,178, -208,181,209,130,208,184,209,130,209,140,208,189,208,176,208,191,209,128,208,184, -208,188,208,181,209,128,208,184,208,189,209,130,208,181,209,128,208,189,208,181, -209,130,208,186,208,190,209,130,208,190,209,128,208,190,208,179,208,190,209,129, -209,130,209,128,208,176,208,189,208,184,209,134,209,139,208,186,208,176,209,135, -208,181,209,129,209,130,208,178,208,181,209,131,209,129,208,187,208,190,208,178, -208,184,209,143,209,133,208,191,209,128,208,190,208,177,208,187,208,181,208,188, -209,139,208,191,208,190,208,187,209,131,209,135,208,184,209,130,209,140,209,143, -208,178,208,187,209,143,209,142,209,130,209,129,209,143,208,189,208,176,208,184, -208,177,208,190,208,187,208,181,208,181,208,186,208,190,208,188,208,191,208,176, -208,189,208,184,209,143,208,178,208,189,208,184,208,188,208,176,208,189,208,184, -208,181,209,129,209,128,208,181,208,180,209,129,209,130,208,178,208,176,216,167, -217,132,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,177, -216,166,217,138,216,179,217,138,216,169,216,167,217,132,216,167,217,134,216,170, -217,130,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216,167,216,170, -217,131,216,167,217,132,216,179,217,138,216,167,216,177,216,167,216,170,216,167, -217,132,217,133,217,131,216,170,217,136,216,168,216,169,216,167,217,132,216,179, -216,185,217,136,216,175,217,138,216,169,216,167,216,173,216,181,216,167,216,166, -217,138,216,167,216,170,216,167,217,132,216,185,216,167,217,132,217,133,217,138, -216,169,216,167,217,132,216,181,217,136,216,170,217,138,216,167,216,170,216,167, -217,132,216,167,217,134,216,170,216,177,217,134,216,170,216,167,217,132,216,170, -216,181,216,167,217,133,217,138,217,133,216,167,217,132,216,165,216,179,217,132, -216,167,217,133,217,138,216,167,217,132,217,133,216,180,216,167,216,177,217,131, -216,169,216,167,217,132,217,133,216,177,216,166,217,138,216,167,216,170,114,111, -98,111,116,115,34,32,99,111,110,116,101,110,116,61,34,60,100,105,118,32,105,100, -61,34,102,111,111,116,101,114,34,62,116,104,101,32,85,110,105,116,101,100,32,83, -116,97,116,101,115,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47, -46,106,112,103,124,114,105,103,104,116,124,116,104,117,109,98,124,46,106,115,34, -62,60,47,115,99,114,105,112,116,62,13,10,60,108,111,99,97,116,105,111,110,46,112 -,114,111,116,111,99,111,108,102,114,97,109,101,98,111,114,100,101,114,61,34,48, -34,32,115,34,32,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,60,47,97,62, -60,47,100,105,118,62,60,47,100,105,118,62,60,102,111,110,116,45,119,101,105,103, -104,116,58,98,111,108,100,59,38,113,117,111,116,59,32,97,110,100,32,38,113,117, -111,116,59,100,101,112,101,110,100,105,110,103,32,111,110,32,116,104,101,32,109, -97,114,103,105,110,58,48,59,112,97,100,100,105,110,103,58,34,32,114,101,108,61, -34,110,111,102,111,108,108,111,119,34,32,80,114,101,115,105,100,101,110,116,32, -111,102,32,116,104,101,32,116,119,101,110,116,105,101,116,104,32,99,101,110,116, -117,114,121,101,118,105,115,105,111,110,62,10,32,32,60,47,112,97,103,101,73,110, -116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,97,46,97,115,121,110, -99,32,61,32,116,114,117,101,59,13,10,105,110,102,111,114,109,97,116,105,111,110, -32,97,98,111,117,116,60,100,105,118,32,105,100,61,34,104,101,97,100,101,114,34, -62,34,32,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,60,97,32,104,114, -101,102,61,34,104,116,116,112,115,58,47,47,60,100,105,118,32,105,100,61,34,99, -111,110,116,101,110,116,34,60,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10 -,60,100,101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32,60,105,109, -103,32,115,114,99,61,39,104,116,116,112,58,47,47,97,99,99,111,114,100,105,110, -103,32,116,111,32,116,104,101,32,10,60,47,98,111,100,121,62,10,60,47,104,116,109 -,108,62,10,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,115, -99,114,105,112,116,32,108,97,110,103,117,97,103,101,61,34,65,114,105,97,108,44, -32,72,101,108,118,101,116,105,99,97,44,60,47,97,62,60,115,112,97,110,32,99,108, -97,115,115,61,34,60,47,115,99,114,105,112,116,62,60,115,99,114,105,112,116,32, -112,111,108,105,116,105,99,97,108,32,112,97,114,116,105,101,115,116,100,62,60,47 -,116,114,62,60,47,116,97,98,108,101,62,60,104,114,101,102,61,34,104,116,116,112, -58,47,47,119,119,119,46,105,110,116,101,114,112,114,101,116,97,116,105,111,110, -32,111,102,114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,100, -111,99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,99,104,97,114,115,101 -,116,61,34,117,116,102,45,56,34,62,10,98,101,103,105,110,110,105,110,103,32,111, -102,32,116,104,101,32,114,101,118,101,97,108,101,100,32,116,104,97,116,32,116, -104,101,116,101,108,101,118,105,115,105,111,110,32,115,101,114,105,101,115,34,32 -,114,101,108,61,34,110,111,102,111,108,108,111,119,34,62,32,116,97,114,103,101, -116,61,34,95,98,108,97,110,107,34,62,99,108,97,105,109,105,110,103,32,116,104,97 -,116,32,116,104,101,104,116,116,112,37,51,65,37,50,70,37,50,70,119,119,119,46, -109,97,110,105,102,101,115,116,97,116,105,111,110,115,32,111,102,80,114,105,109, -101,32,77,105,110,105,115,116,101,114,32,111,102,105,110,102,108,117,101,110,99, -101,100,32,98,121,32,116,104,101,99,108,97,115,115,61,34,99,108,101,97,114,102, -105,120,34,62,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10,13,10,116,104, -114,101,101,45,100,105,109,101,110,115,105,111,110,97,108,67,104,117,114,99,104, -32,111,102,32,69,110,103,108,97,110,100,111,102,32,78,111,114,116,104,32,67,97, -114,111,108,105,110,97,115,113,117,97,114,101,32,107,105,108,111,109,101,116,114 -,101,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,100,105 -,115,116,105,110,99,116,32,102,114,111,109,32,116,104,101,99,111,109,109,111,110 -,108,121,32,107,110,111,119,110,32,97,115,80,104,111,110,101,116,105,99,32,65, -108,112,104,97,98,101,116,100,101,99,108,97,114,101,100,32,116,104,97,116,32,116 -,104,101,99,111,110,116,114,111,108,108,101,100,32,98,121,32,116,104,101,66,101, -110,106,97,109,105,110,32,70,114,97,110,107,108,105,110,114,111,108,101,45,112, -108,97,121,105,110,103,32,103,97,109,101,116,104,101,32,85,110,105,118,101,114, -115,105,116,121,32,111,102,105,110,32,87,101,115,116,101,114,110,32,69,117,114, -111,112,101,112,101,114,115,111,110,97,108,32,99,111,109,112,117,116,101,114,80, -114,111,106,101,99,116,32,71,117,116,101,110,98,101,114,103,114,101,103,97,114, -100,108,101,115,115,32,111,102,32,116,104,101,104,97,115,32,98,101,101,110,32, -112,114,111,112,111,115,101,100,116,111,103,101,116,104,101,114,32,119,105,116, -104,32,116,104,101,62,60,47,108,105,62,60,108,105,32,99,108,97,115,115,61,34,105 -,110,32,115,111,109,101,32,99,111,117,110,116,114,105,101,115,109,105,110,46,106 -,115,34,62,60,47,115,99,114,105,112,116,62,111,102,32,116,104,101,32,112,111,112 -,117,108,97,116,105,111,110,111,102,102,105,99,105,97,108,32,108,97,110,103,117, -97,103,101,60,105,109,103,32,115,114,99,61,34,105,109,97,103,101,115,47,105,100, -101,110,116,105,102,105,101,100,32,98,121,32,116,104,101,110,97,116,117,114,97, -108,32,114,101,115,111,117,114,99,101,115,99,108,97,115,115,105,102,105,99,97, -116,105,111,110,32,111,102,99,97,110,32,98,101,32,99,111,110,115,105,100,101,114 -,101,100,113,117,97,110,116,117,109,32,109,101,99,104,97,110,105,99,115,78,101, -118,101,114,116,104,101,108,101,115,115,44,32,116,104,101,109,105,108,108,105, -111,110,32,121,101,97,114,115,32,97,103,111,60,47,98,111,100,121,62,13,10,60,47, -104,116,109,108,62,13,206,149,206,187,206,187,206,183,206,189,206,185,206,186, -206,172,10,116,97,107,101,32,97,100,118,97,110,116,97,103,101,32,111,102,97,110, -100,44,32,97,99,99,111,114,100,105,110,103,32,116,111,97,116,116,114,105,98,117, -116,101,100,32,116,111,32,116,104,101,77,105,99,114,111,115,111,102,116,32,87, -105,110,100,111,119,115,116,104,101,32,102,105,114,115,116,32,99,101,110,116,117 -,114,121,117,110,100,101,114,32,116,104,101,32,99,111,110,116,114,111,108,100, -105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114,115,104,111,114,116, -108,121,32,97,102,116,101,114,32,116,104,101,110,111,116,97,98,108,101,32,101, -120,99,101,112,116,105,111,110,116,101,110,115,32,111,102,32,116,104,111,117,115 -,97,110,100,115,115,101,118,101,114,97,108,32,100,105,102,102,101,114,101,110, -116,97,114,111,117,110,100,32,116,104,101,32,119,111,114,108,100,46,114,101,97, -99,104,105,110,103,32,109,105,108,105,116,97,114,121,105,115,111,108,97,116,101, -100,32,102,114,111,109,32,116,104,101,111,112,112,111,115,105,116,105,111,110,32 -,116,111,32,116,104,101,116,104,101,32,79,108,100,32,84,101,115,116,97,109,101, -110,116,65,102,114,105,99,97,110,32,65,109,101,114,105,99,97,110,115,105,110,115 -,101,114,116,101,100,32,105,110,116,111,32,116,104,101,115,101,112,97,114,97,116 -,101,32,102,114,111,109,32,116,104,101,109,101,116,114,111,112,111,108,105,116, -97,110,32,97,114,101,97,109,97,107,101,115,32,105,116,32,112,111,115,115,105,98, -108,101,97,99,107,110,111,119,108,101,100,103,101,100,32,116,104,97,116,97,114, -103,117,97,98,108,121,32,116,104,101,32,109,111,115,116,116,121,112,101,61,34, -116,101,120,116,47,99,115,115,34,62,10,116,104,101,32,73,110,116,101,114,110,97, -116,105,111,110,97,108,65,99,99,111,114,100,105,110,103,32,116,111,32,116,104, -101,32,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,99,111,105,110 -,99,105,100,101,32,119,105,116,104,32,116,104,101,116,119,111,45,116,104,105,114 -,100,115,32,111,102,32,116,104,101,68,117,114,105,110,103,32,116,104,105,115,32, -116,105,109,101,44,100,117,114,105,110,103,32,116,104,101,32,112,101,114,105,111 -,100,97,110,110,111,117,110,99,101,100,32,116,104,97,116,32,104,101,116,104,101, -32,105,110,116,101,114,110,97,116,105,111,110,97,108,97,110,100,32,109,111,114, -101,32,114,101,99,101,110,116,108,121,98,101,108,105,101,118,101,100,32,116,104, -97,116,32,116,104,101,99,111,110,115,99,105,111,117,115,110,101,115,115,32,97, -110,100,102,111,114,109,101,114,108,121,32,107,110,111,119,110,32,97,115,115,117 -,114,114,111,117,110,100,101,100,32,98,121,32,116,104,101,102,105,114,115,116,32 -,97,112,112,101,97,114,101,100,32,105,110,111,99,99,97,115,105,111,110,97,108, -108,121,32,117,115,101,100,112,111,115,105,116,105,111,110,58,97,98,115,111,108, -117,116,101,59,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,112 -,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,116,101,120, -116,45,97,108,105,103,110,58,99,101,110,116,101,114,59,106,97,120,47,108,105,98, -115,47,106,113,117,101,114,121,47,49,46,98,97,99,107,103,114,111,117,110,100,45, -99,111,108,111,114,58,35,116,121,112,101,61,34,97,112,112,108,105,99,97,116,105, -111,110,47,97,110,103,117,97,103,101,34,32,99,111,110,116,101,110,116,61,34,60, -109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,80,114,105,118,97 -,99,121,32,80,111,108,105,99,121,60,47,97,62,101,40,34,37,51,67,115,99,114,105, -112,116,32,115,114,99,61,39,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110, -107,34,62,79,110,32,116,104,101,32,111,116,104,101,114,32,104,97,110,100,44,46, -106,112,103,124,116,104,117,109,98,124,114,105,103,104,116,124,50,60,47,100,105, -118,62,60,100,105,118,32,99,108,97,115,115,61,34,60,100,105,118,32,115,116,121, -108,101,61,34,102,108,111,97,116,58,110,105,110,101,116,101,101,110,116,104,32, -99,101,110,116,117,114,121,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108, -62,13,10,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,115,59,116, -101,120,116,45,97,108,105,103,110,58,99,101,110,116,101,114,102,111,110,116,45, -119,101,105,103,104,116,58,32,98,111,108,100,59,32,65,99,99,111,114,100,105,110, -103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,32,98, -101,116,119,101,101,110,34,32,102,114,97,109,101,98,111,114,100,101,114,61,34,48 -,34,32,34,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,108, -105,110,107,32,104,114,101,102,61,34,104,116,116,112,58,47,47,104,116,109,108,52 -,47,108,111,111,115,101,46,100,116,100,34,62,10,100,117,114,105,110,103,32,116, -104,105,115,32,112,101,114,105,111,100,60,47,116,100,62,60,47,116,114,62,60,47, -116,97,98,108,101,62,99,108,111,115,101,108,121,32,114,101,108,97,116,101,100,32 -,116,111,102,111,114,32,116,104,101,32,102,105,114,115,116,32,116,105,109,101,59 -,102,111,110,116,45,119,101,105,103,104,116,58,98,111,108,100,59,105,110,112,117 -,116,32,116,121,112,101,61,34,116,101,120,116,34,32,60,115,112,97,110,32,115,116 -,121,108,101,61,34,102,111,110,116,45,111,110,114,101,97,100,121,115,116,97,116, -101,99,104,97,110,103,101,9,60,100,105,118,32,99,108,97,115,115,61,34,99,108,101 -,97,114,100,111,99,117,109,101,110,116,46,108,111,99,97,116,105,111,110,46,32,70 -,111,114,32,101,120,97,109,112,108,101,44,32,116,104,101,32,97,32,119,105,100, -101,32,118,97,114,105,101,116,121,32,111,102,32,60,33,68,79,67,84,89,80,69,32, -104,116,109,108,62,13,10,60,38,110,98,115,112,59,38,110,98,115,112,59,38,110,98, -115,112,59,34,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,115,116 -,121,108,101,61,34,102,108,111,97,116,58,108,101,102,116,59,99,111,110,99,101, -114,110,101,100,32,119,105,116,104,32,116,104,101,61,104,116,116,112,37,51,65,37 -,50,70,37,50,70,119,119,119,46,105,110,32,112,111,112,117,108,97,114,32,99,117, -108,116,117,114,101,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47 -,62,105,116,32,105,115,32,112,111,115,115,105,98,108,101,32,116,111,32,72,97,114 -,118,97,114,100,32,85,110,105,118,101,114,115,105,116,121,116,121,108,101,115, -104,101,101,116,34,32,104,114,101,102,61,34,47,116,104,101,32,109,97,105,110,32, -99,104,97,114,97,99,116,101,114,79,120,102,111,114,100,32,85,110,105,118,101,114 -,115,105,116,121,32,32,110,97,109,101,61,34,107,101,121,119,111,114,100,115,34, -32,99,115,116,121,108,101,61,34,116,101,120,116,45,97,108,105,103,110,58,116,104 -,101,32,85,110,105,116,101,100,32,75,105,110,103,100,111,109,102,101,100,101,114 -,97,108,32,103,111,118,101,114,110,109,101,110,116,60,100,105,118,32,115,116,121 -,108,101,61,34,109,97,114,103,105,110,32,100,101,112,101,110,100,105,110,103,32, -111,110,32,116,104,101,32,100,101,115,99,114,105,112,116,105,111,110,32,111,102, -32,116,104,101,60,100,105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114, -46,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,100,101,115,116, -114,117,99,116,105,111,110,32,111,102,32,116,104,101,115,108,105,103,104,116,108 -,121,32,100,105,102,102,101,114,101,110,116,105,110,32,97,99,99,111,114,100,97, -110,99,101,32,119,105,116,104,116,101,108,101,99,111,109,109,117,110,105,99,97, -116,105,111,110,115,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32,116, -104,101,115,104,111,114,116,108,121,32,116,104,101,114,101,97,102,116,101,114, -101,115,112,101,99,105,97,108,108,121,32,105,110,32,116,104,101,32,69,117,114, -111,112,101,97,110,32,99,111,117,110,116,114,105,101,115,72,111,119,101,118,101, -114,44,32,116,104,101,114,101,32,97,114,101,115,114,99,61,34,104,116,116,112,58, -47,47,115,116,97,116,105,99,115,117,103,103,101,115,116,101,100,32,116,104,97, -116,32,116,104,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119, -46,97,32,108,97,114,103,101,32,110,117,109,98,101,114,32,111,102,32,84,101,108, -101,99,111,109,109,117,110,105,99,97,116,105,111,110,115,34,32,114,101,108,61,34 -,110,111,102,111,108,108,111,119,34,32,116,72,111,108,121,32,82,111,109,97,110, -32,69,109,112,101,114,111,114,97,108,109,111,115,116,32,101,120,99,108,117,115, -105,118,101,108,121,34,32,98,111,114,100,101,114,61,34,48,34,32,97,108,116,61,34 -,83,101,99,114,101,116,97,114,121,32,111,102,32,83,116,97,116,101,99,117,108,109 -,105,110,97,116,105,110,103,32,105,110,32,116,104,101,67,73,65,32,87,111,114,108 -,100,32,70,97,99,116,98,111,111,107,116,104,101,32,109,111,115,116,32,105,109, -112,111,114,116,97,110,116,97,110,110,105,118,101,114,115,97,114,121,32,111,102, -32,116,104,101,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45 -,60,108,105,62,60,101,109,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,65 -,116,108,97,110,116,105,99,32,79,99,101,97,110,115,116,114,105,99,116,108,121,32 -,115,112,101,97,107,105,110,103,44,115,104,111,114,116,108,121,32,98,101,102,111 -,114,101,32,116,104,101,100,105,102,102,101,114,101,110,116,32,116,121,112,101, -115,32,111,102,116,104,101,32,79,116,116,111,109,97,110,32,69,109,112,105,114, -101,62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,65,110,32,73, -110,116,114,111,100,117,99,116,105,111,110,32,116,111,99,111,110,115,101,113,117 -,101,110,99,101,32,111,102,32,116,104,101,100,101,112,97,114,116,117,114,101,32, -102,114,111,109,32,116,104,101,67,111,110,102,101,100,101,114,97,116,101,32,83, -116,97,116,101,115,105,110,100,105,103,101,110,111,117,115,32,112,101,111,112, -108,101,115,80,114,111,99,101,101,100,105,110,103,115,32,111,102,32,116,104,101, -105,110,102,111,114,109,97,116,105,111,110,32,111,110,32,116,104,101,116,104,101 -,111,114,105,101,115,32,104,97,118,101,32,98,101,101,110,105,110,118,111,108,118 -,101,109,101,110,116,32,105,110,32,116,104,101,100,105,118,105,100,101,100,32, -105,110,116,111,32,116,104,114,101,101,97,100,106,97,99,101,110,116,32,99,111, -117,110,116,114,105,101,115,105,115,32,114,101,115,112,111,110,115,105,98,108, -101,32,102,111,114,100,105,115,115,111,108,117,116,105,111,110,32,111,102,32,116 -,104,101,99,111,108,108,97,98,111,114,97,116,105,111,110,32,119,105,116,104,119, -105,100,101,108,121,32,114,101,103,97,114,100,101,100,32,97,115,104,105,115,32, -99,111,110,116,101,109,112,111,114,97,114,105,101,115,102,111,117,110,100,105, -110,103,32,109,101,109,98,101,114,32,111,102,68,111,109,105,110,105,99,97,110,32 -,82,101,112,117,98,108,105,99,103,101,110,101,114,97,108,108,121,32,97,99,99,101 -,112,116,101,100,116,104,101,32,112,111,115,115,105,98,105,108,105,116,121,32, -111,102,97,114,101,32,97,108,115,111,32,97,118,97,105,108,97,98,108,101,117,110, -100,101,114,32,99,111,110,115,116,114,117,99,116,105,111,110,114,101,115,116,111 -,114,97,116,105,111,110,32,111,102,32,116,104,101,116,104,101,32,103,101,110,101 -,114,97,108,32,112,117,98,108,105,99,105,115,32,97,108,109,111,115,116,32,101, -110,116,105,114,101,108,121,112,97,115,115,101,115,32,116,104,114,111,117,103, -104,32,116,104,101,104,97,115,32,98,101,101,110,32,115,117,103,103,101,115,116, -101,100,99,111,109,112,117,116,101,114,32,97,110,100,32,118,105,100,101,111,71, -101,114,109,97,110,105,99,32,108,97,110,103,117,97,103,101,115,32,97,99,99,111, -114,100,105,110,103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110 -,116,32,102,114,111,109,32,116,104,101,115,104,111,114,116,108,121,32,97,102,116 -,101,114,119,97,114,100,115,104,114,101,102,61,34,104,116,116,112,115,58,47,47, -119,119,119,46,114,101,99,101,110,116,32,100,101,118,101,108,111,112,109,101,110 -,116,66,111,97,114,100,32,111,102,32,68,105,114,101,99,116,111,114,115,60,100, -105,118,32,99,108,97,115,115,61,34,115,101,97,114,99,104,124,32,60,97,32,104,114 -,101,102,61,34,104,116,116,112,58,47,47,73,110,32,112,97,114,116,105,99,117,108, -97,114,44,32,116,104,101,77,117,108,116,105,112,108,101,32,102,111,111,116,110, -111,116,101,115,111,114,32,111,116,104,101,114,32,115,117,98,115,116,97,110,99, -101,116,104,111,117,115,97,110,100,115,32,111,102,32,121,101,97,114,115,116,114, -97,110,115,108,97,116,105,111,110,32,111,102,32,116,104,101,60,47,100,105,118,62 -,13,10,60,47,100,105,118,62,13,10,13,10,60,97,32,104,114,101,102,61,34,105,110, -100,101,120,46,112,104,112,119,97,115,32,101,115,116,97,98,108,105,115,104,101, -100,32,105,110,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10, -112,97,114,116,105,99,105,112,97,116,101,32,105,110,32,116,104,101,97,32,115,116 -,114,111,110,103,32,105,110,102,108,117,101,110,99,101,115,116,121,108,101,61,34 -,109,97,114,103,105,110,45,116,111,112,58,114,101,112,114,101,115,101,110,116, -101,100,32,98,121,32,116,104,101,103,114,97,100,117,97,116,101,100,32,102,114, -111,109,32,116,104,101,84,114,97,100,105,116,105,111,110,97,108,108,121,44,32, -116,104,101,69,108,101,109,101,110,116,40,34,115,99,114,105,112,116,34,41,59,72, -111,119,101,118,101,114,44,32,115,105,110,99,101,32,116,104,101,47,100,105,118, -62,10,60,47,100,105,118,62,10,60,100,105,118,32,108,101,102,116,59,32,109,97,114 -,103,105,110,45,108,101,102,116,58,112,114,111,116,101,99,116,105,111,110,32,97, -103,97,105,110,115,116,48,59,32,118,101,114,116,105,99,97,108,45,97,108,105,103, -110,58,85,110,102,111,114,116,117,110,97,116,101,108,121,44,32,116,104,101,116, -121,112,101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,47,100,105,118,62, -10,60,100,105,118,32,99,108,97,115,115,61,34,32,99,108,97,115,115,61,34,99,108, -101,97,114,102,105,120,34,62,60,100,105,118,32,99,108,97,115,115,61,34,102,111, -111,116,101,114,9,9,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10,116,104, -101,32,109,111,116,105,111,110,32,112,105,99,116,117,114,101,208,145,209,138,208 -,187,208,179,208,176,209,128,209,129,208,186,208,184,208,177,209,138,208,187,208 -,179,208,176,209,128,209,129,208,186,208,184,208,164,208,181,208,180,208,181,209 -,128,208,176,209,134,208,184,208,184,208,189,208,181,209,129,208,186,208,190,208 -,187,209,140,208,186,208,190,209,129,208,190,208,190,208,177,209,137,208,181,208 -,189,208,184,208,181,209,129,208,190,208,190,208,177,209,137,208,181,208,189,208 -,184,209,143,208,191,209,128,208,190,208,179,209,128,208,176,208,188,208,188,209 -,139,208,158,209,130,208,191,209,128,208,176,208,178,208,184,209,130,209,140,208 -,177,208,181,209,129,208,191,208,187,208,176,209,130,208,189,208,190,208,188,208 -,176,209,130,208,181,209,128,208,184,208,176,208,187,209,139,208,191,208,190,208 -,183,208,178,208,190,208,187,209,143,208,181,209,130,208,191,208,190,209,129,208 -,187,208,181,208,180,208,189,208,184,208,181,209,128,208,176,208,183,208,187,208 -,184,209,135,208,189,209,139,209,133,208,191,209,128,208,190,208,180,209,131,208 -,186,209,134,208,184,208,184,208,191,209,128,208,190,208,179,209,128,208,176,208 -,188,208,188,208,176,208,191,208,190,208,187,208,189,208,190,209,129,209,130,209 -,140,209,142,208,189,208,176,209,133,208,190,208,180,208,184,209,130,209,129,209 -,143,208,184,208,183,208,177,209,128,208,176,208,189,208,189,208,190,208,181,208 -,189,208,176,209,129,208,181,208,187,208,181,208,189,208,184,209,143,208,184,208 -,183,208,188,208,181,208,189,208,181,208,189,208,184,209,143,208,186,208,176,209 -,130,208,181,208,179,208,190,209,128,208,184,208,184,208,144,208,187,208,181,208 -,186,209,129,208,176,208,189,208,180,209,128,224,164,166,224,165,141,224,164,181 -,224,164,190,224,164,176,224,164,190,224,164,174,224,165,136,224,164,168,224,165 -,129,224,164,133,224,164,178,224,164,170,224,165,141,224,164,176,224,164,166,224 -,164,190,224,164,168,224,164,173,224,164,190,224,164,176,224,164,164,224,165,128 -,224,164,175,224,164,133,224,164,168,224,165,129,224,164,166,224,165,135,224,164 -,182,224,164,185,224,164,191,224,164,168,224,165,141,224,164,166,224,165,128,224 -,164,135,224,164,130,224,164,161,224,164,191,224,164,175,224,164,190,224,164,166 -,224,164,191,224,164,178,224,165,141,224,164,178,224,165,128,224,164,133,224,164 -,167,224,164,191,224,164,149,224,164,190,224,164,176,224,164,181,224,165,128,224 -,164,161,224,164,191,224,164,175,224,165,139,224,164,154,224,164,191,224,164,159 -,224,165,141,224,164,160,224,165,135,224,164,184,224,164,174,224,164,190,224,164 -,154,224,164,190,224,164,176,224,164,156,224,164,130,224,164,149,224,165,141,224 -,164,182,224,164,168,224,164,166,224,165,129,224,164,168,224,164,191,224,164,175 -,224,164,190,224,164,170,224,165,141,224,164,176,224,164,175,224,165,139,224,164 -,151,224,164,133,224,164,168,224,165,129,224,164,184,224,164,190,224,164,176,224 -,164,145,224,164,168,224,164,178,224,164,190,224,164,135,224,164,168,224,164,170 -,224,164,190,224,164,176,224,165,141,224,164,159,224,165,128,224,164,182,224,164 -,176,224,165,141,224,164,164,224,165,139,224,164,130,224,164,178,224,165,139,224 -,164,149,224,164,184,224,164,173,224,164,190,224,164,171,224,164,188,224,165,141 -,224,164,178,224,165,136,224,164,182,224,164,182,224,164,176,224,165,141,224,164 -,164,224,165,135,224,164,130,224,164,170,224,165,141,224,164,176,224,164,166,224 -,165,135,224,164,182,224,164,170,224,165,141,224,164,178,224,165,135,224,164,175 -,224,164,176,224,164,149,224,165,135,224,164,130,224,164,166,224,165,141,224,164 -,176,224,164,184,224,165,141,224,164,165,224,164,191,224,164,164,224,164,191,224 -,164,137,224,164,164,224,165,141,224,164,170,224,164,190,224,164,166,224,164,137 -,224,164,168,224,165,141,224,164,185,224,165,135,224,164,130,224,164,154,224,164 -,191,224,164,159,224,165,141,224,164,160,224,164,190,224,164,175,224,164,190,224 -,164,164,224,165,141,224,164,176,224,164,190,224,164,156,224,165,141,224,164,175 -,224,164,190,224,164,166,224,164,190,224,164,170,224,165,129,224,164,176,224,164 -,190,224,164,168,224,165,135,224,164,156,224,165,139,224,164,161,224,164,188,224 -,165,135,224,164,130,224,164,133,224,164,168,224,165,129,224,164,181,224,164,190 -,224,164,166,224,164,182,224,165,141,224,164,176,224,165,135,224,164,163,224,165 -,128,224,164,182,224,164,191,224,164,149,224,165,141,224,164,183,224,164,190,224 -,164,184,224,164,176,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184 -,224,164,130,224,164,151,224,165,141,224,164,176,224,164,185,224,164,170,224,164 -,176,224,164,191,224,164,163,224,164,190,224,164,174,224,164,172,224,165,141,224 -,164,176,224,164,190,224,164,130,224,164,161,224,164,172,224,164,154,224,165,141 -,224,164,154,224,165,139,224,164,130,224,164,137,224,164,170,224,164,178,224,164 -,172,224,165,141,224,164,167,224,164,174,224,164,130,224,164,164,224,165,141,224 -,164,176,224,165,128,224,164,184,224,164,130,224,164,170,224,164,176,224,165,141 -,224,164,149,224,164,137,224,164,174,224,165,141,224,164,174,224,165,128,224,164 -,166,224,164,174,224,164,190,224,164,167,224,165,141,224,164,175,224,164,174,224 -,164,184,224,164,185,224,164,190,224,164,175,224,164,164,224,164,190,224,164,182 -,224,164,172,224,165,141,224,164,166,224,165,139,224,164,130,224,164,174,224,165 -,128,224,164,161,224,164,191,224,164,175,224,164,190,224,164,134,224,164,136,224 -,164,170,224,165,128,224,164,143,224,164,178,224,164,174,224,165,139,224,164,172 -,224,164,190,224,164,135,224,164,178,224,164,184,224,164,130,224,164,150,224,165 -,141,224,164,175,224,164,190,224,164,134,224,164,170,224,164,176,224,165,135,224 -,164,182,224,164,168,224,164,133,224,164,168,224,165,129,224,164,172,224,164,130 -,224,164,167,224,164,172,224,164,190,224,164,156,224,164,188,224,164,190,224,164 -,176,224,164,168,224,164,181,224,165,128,224,164,168,224,164,164,224,164,174,224 -,164,170,224,165,141,224,164,176,224,164,174,224,165,129,224,164,150,224,164,170 -,224,165,141,224,164,176,224,164,182,224,165,141,224,164,168,224,164,170,224,164 -,176,224,164,191,224,164,181,224,164,190,224,164,176,224,164,168,224,165,129,224 -,164,149,224,164,184,224,164,190,224,164,168,224,164,184,224,164,174,224,164,176 -,224,165,141,224,164,165,224,164,168,224,164,134,224,164,175,224,165,139,224,164 -,156,224,164,191,224,164,164,224,164,184,224,165,139,224,164,174,224,164,181,224 -,164,190,224,164,176,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216 -,167,216,170,216,167,217,132,217,133,217,134,216,170,216,175,217,138,216,167,216 -,170,216,167,217,132,217,131,217,133,216,168,217,138,217,136,216,170,216,177,216 -,167,217,132,217,133,216,180,216,167,217,135,216,175,216,167,216,170,216,185,216 -,175,216,175,216,167,217,132,216,178,217,136,216,167,216,177,216,185,216,175,216 -,175,216,167,217,132,216,177,216,175,217,136,216,175,216,167,217,132,216,165,216 -,179,217,132,216,167,217,133,217,138,216,169,216,167,217,132,217,129,217,136,216 -,170,217,136,216,180,217,136,216,168,216,167,217,132,217,133,216,179,216,167,216 -,168,217,130,216,167,216,170,216,167,217,132,217,133,216,185,217,132,217,136,217 -,133,216,167,216,170,216,167,217,132,217,133,216,179,217,132,216,179,217,132,216 -,167,216,170,216,167,217,132,216,172,216,177,216,167,217,129,217,138,217,131,216 -,179,216,167,217,132,216,167,216,179,217,132,216,167,217,133,217,138,216,169,216 -,167,217,132,216,167,216,170,216,181,216,167,217,132,216,167,216,170,107,101,121 -,119,111,114,100,115,34,32,99,111,110,116,101,110,116,61,34,119,51,46,111,114, -103,47,49,57,57,57,47,120,104,116,109,108,34,62,60,97,32,116,97,114,103,101,116, -61,34,95,98,108,97,110,107,34,32,116,101,120,116,47,104,116,109,108,59,32,99,104 -,97,114,115,101,116,61,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107, -34,62,60,116,97,98,108,101,32,99,101,108,108,112,97,100,100,105,110,103,61,34,97 -,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,116,101,120, -116,45,97,108,105,103,110,58,32,99,101,110,116,101,114,59,116,111,32,108,97,115, -116,32,118,101,114,115,105,111,110,32,98,121,32,98,97,99,107,103,114,111,117,110 -,100,45,99,111,108,111,114,58,32,35,34,32,104,114,101,102,61,34,104,116,116,112, -58,47,47,119,119,119,46,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118,32 -,105,100,61,60,97,32,104,114,101,102,61,34,35,34,32,99,108,97,115,115,61,34,34, -62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,99,114,105,112, -116,34,32,115,114,99,61,34,104,116,116,112,58,47,47,10,60,115,99,114,105,112,116 -,32,108,97,110,103,117,97,103,101,61,34,47,47,69,78,34,32,34,104,116,116,112,58, -47,47,119,119,119,46,119,101,110,99,111,100,101,85,82,73,67,111,109,112,111,110, -101,110,116,40,34,32,104,114,101,102,61,34,106,97,118,97,115,99,114,105,112,116, -58,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110,116,101,110,116,100,111, -99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,115,99,112,111,115,105, -116,105,111,110,58,32,97,98,115,111,108,117,116,101,59,115,99,114,105,112,116,32 -,115,114,99,61,34,104,116,116,112,58,47,47,32,115,116,121,108,101,61,34,109,97, -114,103,105,110,45,116,111,112,58,46,109,105,110,46,106,115,34,62,60,47,115,99, -114,105,112,116,62,10,60,47,100,105,118,62,10,60,100,105,118,32,99,108,97,115, -115,61,34,119,51,46,111,114,103,47,49,57,57,57,47,120,104,116,109,108,34,32,10, -13,10,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108,62,100,105,115,116,105 -,110,99,116,105,111,110,32,98,101,116,119,101,101,110,47,34,32,116,97,114,103, -101,116,61,34,95,98,108,97,110,107,34,62,60,108,105,110,107,32,104,114,101,102, -61,34,104,116,116,112,58,47,47,101,110,99,111,100,105,110,103,61,34,117,116,102, -45,56,34,63,62,10,119,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110, -101,114,63,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,119,119,119,46, -105,99,111,110,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,32,115,116, -121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,58,116,121,112,101,61,34, -116,101,120,116,47,99,115,115,34,32,47,62,10,109,101,116,97,32,112,114,111,112, -101,114,116,121,61,34,111,103,58,116,60,105,110,112,117,116,32,116,121,112,101, -61,34,116,101,120,116,34,32,32,115,116,121,108,101,61,34,116,101,120,116,45,97, -108,105,103,110,58,116,104,101,32,100,101,118,101,108,111,112,109,101,110,116,32 -,111,102,32,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116, -101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56,105,115 -,32,99,111,110,115,105,100,101,114,101,100,32,116,111,32,98,101,116,97,98,108, -101,32,119,105,100,116,104,61,34,49,48,48,37,34,32,73,110,32,97,100,100,105,116, -105,111,110,32,116,111,32,116,104,101,32,99,111,110,116,114,105,98,117,116,101, -100,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,115,32, -98,101,116,119,101,101,110,100,101,118,101,108,111,112,109,101,110,116,32,111, -102,32,116,104,101,32,73,116,32,105,115,32,105,109,112,111,114,116,97,110,116,32 -,116,111,32,60,47,115,99,114,105,112,116,62,10,10,60,115,99,114,105,112,116,32, -32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,62,60,47, -115,112,97,110,62,60,115,112,97,110,32,105,100,61,103,98,76,105,98,114,97,114, -121,32,111,102,32,67,111,110,103,114,101,115,115,60,105,109,103,32,115,114,99,61 -,34,104,116,116,112,58,47,47,105,109,69,110,103,108,105,115,104,32,116,114,97, -110,115,108,97,116,105,111,110,65,99,97,100,101,109,121,32,111,102,32,83,99,105, -101,110,99,101,115,100,105,118,32,115,116,121,108,101,61,34,100,105,115,112,108, -97,121,58,99,111,110,115,116,114,117,99,116,105,111,110,32,111,102,32,116,104, -101,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,105,100,41,105, -110,32,99,111,110,106,117,110,99,116,105,111,110,32,119,105,116,104,69,108,101, -109,101,110,116,40,39,115,99,114,105,112,116,39,41,59,32,60,109,101,116,97,32, -112,114,111,112,101,114,116,121,61,34,111,103,58,208,145,209,138,208,187,208,179 -,208,176,209,128,209,129,208,186,208,184,10,32,116,121,112,101,61,34,116,101,120 -,116,34,32,110,97,109,101,61,34,62,80,114,105,118,97,99,121,32,80,111,108,105,99 -,121,60,47,97,62,97,100,109,105,110,105,115,116,101,114,101,100,32,98,121,32,116 -,104,101,101,110,97,98,108,101,83,105,110,103,108,101,82,101,113,117,101,115,116 -,115,116,121,108,101,61,38,113,117,111,116,59,109,97,114,103,105,110,58,60,47, -100,105,118,62,60,47,100,105,118,62,60,47,100,105,118,62,60,62,60,105,109,103,32 -,115,114,99,61,34,104,116,116,112,58,47,47,105,32,115,116,121,108,101,61,38,113, -117,111,116,59,102,108,111,97,116,58,114,101,102,101,114,114,101,100,32,116,111, -32,97,115,32,116,104,101,32,116,111,116,97,108,32,112,111,112,117,108,97,116,105 -,111,110,32,111,102,105,110,32,87,97,115,104,105,110,103,116,111,110,44,32,68,46 -,67,46,32,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45,97, -109,111,110,103,32,111,116,104,101,114,32,116,104,105,110,103,115,44,111,114,103 -,97,110,105,122,97,116,105,111,110,32,111,102,32,116,104,101,112,97,114,116,105, -99,105,112,97,116,101,100,32,105,110,32,116,104,101,116,104,101,32,105,110,116, -114,111,100,117,99,116,105,111,110,32,111,102,105,100,101,110,116,105,102,105, -101,100,32,119,105,116,104,32,116,104,101,102,105,99,116,105,111,110,97,108,32, -99,104,97,114,97,99,116,101,114,32,79,120,102,111,114,100,32,85,110,105,118,101, -114,115,105,116,121,32,109,105,115,117,110,100,101,114,115,116,97,110,100,105, -110,103,32,111,102,84,104,101,114,101,32,97,114,101,44,32,104,111,119,101,118, -101,114,44,115,116,121,108,101,115,104,101,101,116,34,32,104,114,101,102,61,34, -47,67,111,108,117,109,98,105,97,32,85,110,105,118,101,114,115,105,116,121,101, -120,112,97,110,100,101,100,32,116,111,32,105,110,99,108,117,100,101,117,115,117, -97,108,108,121,32,114,101,102,101,114,114,101,100,32,116,111,105,110,100,105,99, -97,116,105,110,103,32,116,104,97,116,32,116,104,101,104,97,118,101,32,115,117, -103,103,101,115,116,101,100,32,116,104,97,116,97,102,102,105,108,105,97,116,101, -100,32,119,105,116,104,32,116,104,101,99,111,114,114,101,108,97,116,105,111,110, -32,98,101,116,119,101,101,110,110,117,109,98,101,114,32,111,102,32,100,105,102, -102,101,114,101,110,116,62,60,47,116,100,62,60,47,116,114,62,60,47,116,97,98,108 -,101,62,82,101,112,117,98,108,105,99,32,111,102,32,73,114,101,108,97,110,100,10, -60,47,115,99,114,105,112,116,62,10,60,115,99,114,105,112,116,32,117,110,100,101, -114,32,116,104,101,32,105,110,102,108,117,101,110,99,101,99,111,110,116,114,105, -98,117,116,105,111,110,32,116,111,32,116,104,101,79,102,102,105,99,105,97,108,32 -,119,101,98,115,105,116,101,32,111,102,104,101,97,100,113,117,97,114,116,101,114 -,115,32,111,102,32,116,104,101,99,101,110,116,101,114,101,100,32,97,114,111,117, -110,100,32,116,104,101,105,109,112,108,105,99,97,116,105,111,110,115,32,111,102, -32,116,104,101,104,97,118,101,32,98,101,101,110,32,100,101,118,101,108,111,112, -101,100,70,101,100,101,114,97,108,32,82,101,112,117,98,108,105,99,32,111,102,98, -101,99,97,109,101,32,105,110,99,114,101,97,115,105,110,103,108,121,99,111,110, -116,105,110,117,97,116,105,111,110,32,111,102,32,116,104,101,78,111,116,101,44, -32,104,111,119,101,118,101,114,44,32,116,104,97,116,115,105,109,105,108,97,114, -32,116,111,32,116,104,97,116,32,111,102,32,99,97,112,97,98,105,108,105,116,105, -101,115,32,111,102,32,116,104,101,97,99,99,111,114,100,97,110,99,101,32,119,105, -116,104,32,116,104,101,112,97,114,116,105,99,105,112,97,110,116,115,32,105,110, -32,116,104,101,102,117,114,116,104,101,114,32,100,101,118,101,108,111,112,109, -101,110,116,117,110,100,101,114,32,116,104,101,32,100,105,114,101,99,116,105,111 -,110,105,115,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114,101,100, -104,105,115,32,121,111,117,110,103,101,114,32,98,114,111,116,104,101,114,60,47, -116,100,62,60,47,116,114,62,60,47,116,97,98,108,101,62,60,97,32,104,116,116,112, -45,101,113,117,105,118,61,34,88,45,85,65,45,112,104,121,115,105,99,97,108,32,112 -,114,111,112,101,114,116,105,101,115,111,102,32,66,114,105,116,105,115,104,32,67 -,111,108,117,109,98,105,97,104,97,115,32,98,101,101,110,32,99,114,105,116,105,99 -,105,122,101,100,40,119,105,116,104,32,116,104,101,32,101,120,99,101,112,116,105 -,111,110,113,117,101,115,116,105,111,110,115,32,97,98,111,117,116,32,116,104,101 -,112,97,115,115,105,110,103,32,116,104,114,111,117,103,104,32,116,104,101,48,34, -32,99,101,108,108,112,97,100,100,105,110,103,61,34,48,34,32,116,104,111,117,115, -97,110,100,115,32,111,102,32,112,101,111,112,108,101,114,101,100,105,114,101,99, -116,115,32,104,101,114,101,46,32,70,111,114,104,97,118,101,32,99,104,105,108,100 -,114,101,110,32,117,110,100,101,114,37,51,69,37,51,67,47,115,99,114,105,112,116, -37,51,69,34,41,41,59,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119 -,119,119,46,60,108,105,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47, -47,115,105,116,101,95,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,116, -101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,110,111,110,101,115,116, -121,108,101,61,34,100,105,115,112,108,97,121,58,32,110,111,110,101,60,109,101, -116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,88,45,110,101,119,32,68, -97,116,101,40,41,46,103,101,116,84,105,109,101,40,41,32,116,121,112,101,61,34, -105,109,97,103,101,47,120,45,105,99,111,110,34,60,47,115,112,97,110,62,60,115, -112,97,110,32,99,108,97,115,115,61,34,108,97,110,103,117,97,103,101,61,34,106,97 -,118,97,115,99,114,105,112,116,119,105,110,100,111,119,46,108,111,99,97,116,105, -111,110,46,104,114,101,102,60,97,32,104,114,101,102,61,34,106,97,118,97,115,99, -114,105,112,116,58,45,45,62,13,10,60,115,99,114,105,112,116,32,116,121,112,101, -61,34,116,60,97,32,104,114,101,102,61,39,104,116,116,112,58,47,47,119,119,119,46 -,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,114,101,102,61,34,60,47, -100,105,118,62,13,10,60,100,105,118,32,99,108,97,115,115,61,34,60,115,99,114,105 -,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,34,32,114,101,108,61,34, -115,116,121,108,101,115,104,101,101,116,34,32,116,60,47,100,105,118,62,10,60,115 -,99,114,105,112,116,32,116,121,112,101,61,47,97,62,32,60,97,32,104,114,101,102, -61,34,104,116,116,112,58,47,47,32,97,108,108,111,119,84,114,97,110,115,112,97, -114,101,110,99,121,61,34,88,45,85,65,45,67,111,109,112,97,116,105,98,108,101,34, -32,99,111,110,114,101,108,97,116,105,111,110,115,104,105,112,32,98,101,116,119, -101,101,110,10,60,47,115,99,114,105,112,116,62,13,10,60,115,99,114,105,112,116, -32,60,47,97,62,60,47,108,105,62,60,47,117,108,62,60,47,100,105,118,62,97,115,115 -,111,99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32,112,114,111,103, -114,97,109,109,105,110,103,32,108,97,110,103,117,97,103,101,60,47,97,62,60,97,32 -,104,114,101,102,61,34,104,116,116,112,58,47,47,60,47,97,62,60,47,108,105,62,60, -108,105,32,99,108,97,115,115,61,34,102,111,114,109,32,97,99,116,105,111,110,61, -34,104,116,116,112,58,47,47,60,100,105,118,32,115,116,121,108,101,61,34,100,105, -115,112,108,97,121,58,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101 -,61,34,113,34,60,116,97,98,108,101,32,119,105,100,116,104,61,34,49,48,48,37,34, -32,98,97,99,107,103,114,111,117,110,100,45,112,111,115,105,116,105,111,110,58,34 -,32,98,111,114,100,101,114,61,34,48,34,32,119,105,100,116,104,61,34,114,101,108, -61,34,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,54,62,60,117, -108,62,60,108,105,62,60,97,32,104,114,101,102,61,34,32,32,60,109,101,116,97,32, -104,116,116,112,45,101,113,117,105,118,61,34,99,115,115,34,32,109,101,100,105,97 -,61,34,115,99,114,101,101,110,34,32,114,101,115,112,111,110,115,105,98,108,101, -32,102,111,114,32,116,104,101,32,34,32,116,121,112,101,61,34,97,112,112,108,105, -99,97,116,105,111,110,47,34,32,115,116,121,108,101,61,34,98,97,99,107,103,114, -111,117,110,100,45,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116, -102,45,56,34,32,97,108,108,111,119,116,114,97,110,115,112,97,114,101,110,99,121, -61,34,115,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116, -101,13,10,60,109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,62, -60,47,115,112,97,110,62,60,115,112,97,110,32,99,108,97,115,115,61,34,48,34,32,99 -,101,108,108,115,112,97,99,105,110,103,61,34,48,34,62,59,10,60,47,115,99,114,105 -,112,116,62,10,60,115,99,114,105,112,116,32,115,111,109,101,116,105,109,101,115, -32,99,97,108,108,101,100,32,116,104,101,100,111,101,115,32,110,111,116,32,110, -101,99,101,115,115,97,114,105,108,121,70,111,114,32,109,111,114,101,32,105,110, -102,111,114,109,97,116,105,111,110,97,116,32,116,104,101,32,98,101,103,105,110, -110,105,110,103,32,111,102,32,60,33,68,79,67,84,89,80,69,32,104,116,109,108,62, -60,104,116,109,108,112,97,114,116,105,99,117,108,97,114,108,121,32,105,110,32, -116,104,101,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110,97,109, -101,61,34,106,97,118,97,115,99,114,105,112,116,58,118,111,105,100,40,48,41,59,34 -,101,102,102,101,99,116,105,118,101,110,101,115,115,32,111,102,32,116,104,101,32 -,97,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,103,101, -110,101,114,97,108,108,121,32,99,111,110,115,105,100,101,114,101,100,62,60,105, -110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,34,62,60,47,115, -99,114,105,112,116,62,13,10,60,115,99,114,105,112,116,116,104,114,111,117,103, -104,111,117,116,32,116,104,101,32,119,111,114,108,100,99,111,109,109,111,110,32, -109,105,115,99,111,110,99,101,112,116,105,111,110,97,115,115,111,99,105,97,116, -105,111,110,32,119,105,116,104,32,116,104,101,60,47,100,105,118,62,10,60,47,100, -105,118,62,10,60,100,105,118,32,99,100,117,114,105,110,103,32,104,105,115,32,108 -,105,102,101,116,105,109,101,44,99,111,114,114,101,115,112,111,110,100,105,110, -103,32,116,111,32,116,104,101,116,121,112,101,61,34,105,109,97,103,101,47,120,45 -,105,99,111,110,34,32,97,110,32,105,110,99,114,101,97,115,105,110,103,32,110,117 -,109,98,101,114,100,105,112,108,111,109,97,116,105,99,32,114,101,108,97,116,105, -111,110,115,97,114,101,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114, -101,100,109,101,116,97,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34, -32,60,105,110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,101,120 -,97,109,112,108,101,115,32,105,110,99,108,117,100,101,32,116,104,101,34,62,60, -105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,105,112,97,114,116,105, -99,105,112,97,116,105,111,110,32,105,110,32,116,104,101,116,104,101,32,101,115, -116,97,98,108,105,115,104,109,101,110,116,32,111,102,10,60,47,100,105,118,62,10, -60,100,105,118,32,99,108,97,115,115,61,34,38,97,109,112,59,110,98,115,112,59,38, -97,109,112,59,110,98,115,112,59,116,111,32,100,101,116,101,114,109,105,110,101, -32,119,104,101,116,104,101,114,113,117,105,116,101,32,100,105,102,102,101,114, -101,110,116,32,102,114,111,109,109,97,114,107,101,100,32,116,104,101,32,98,101, -103,105,110,110,105,110,103,100,105,115,116,97,110,99,101,32,98,101,116,119,101, -101,110,32,116,104,101,99,111,110,116,114,105,98,117,116,105,111,110,115,32,116, -111,32,116,104,101,99,111,110,102,108,105,99,116,32,98,101,116,119,101,101,110, -32,116,104,101,119,105,100,101,108,121,32,99,111,110,115,105,100,101,114,101,100 -,32,116,111,119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,102,105,114, -115,116,119,105,116,104,32,118,97,114,121,105,110,103,32,100,101,103,114,101,101 -,115,104,97,118,101,32,115,112,101,99,117,108,97,116,101,100,32,116,104,97,116, -40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,112, -97,114,116,105,99,105,112,97,116,105,110,103,32,105,110,32,116,104,101,111,114, -105,103,105,110,97,108,108,121,32,100,101,118,101,108,111,112,101,100,101,116,97 -,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,32,116,121,112,101, -61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,105,110,116,101,114,99,104,97 -,110,103,101,97,98,108,121,32,119,105,116,104,109,111,114,101,32,99,108,111,115, -101,108,121,32,114,101,108,97,116,101,100,115,111,99,105,97,108,32,97,110,100,32 -,112,111,108,105,116,105,99,97,108,116,104,97,116,32,119,111,117,108,100,32,111, -116,104,101,114,119,105,115,101,112,101,114,112,101,110,100,105,99,117,108,97, -114,32,116,111,32,116,104,101,115,116,121,108,101,32,116,121,112,101,61,34,116, -101,120,116,47,99,115,115,116,121,112,101,61,34,115,117,98,109,105,116,34,32,110 -,97,109,101,61,34,102,97,109,105,108,105,101,115,32,114,101,115,105,100,105,110, -103,32,105,110,100,101,118,101,108,111,112,105,110,103,32,99,111,117,110,116,114 -,105,101,115,99,111,109,112,117,116,101,114,32,112,114,111,103,114,97,109,109, -105,110,103,101,99,111,110,111,109,105,99,32,100,101,118,101,108,111,112,109,101 -,110,116,100,101,116,101,114,109,105,110,97,116,105,111,110,32,111,102,32,116, -104,101,102,111,114,32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111 -,110,111,110,32,115,101,118,101,114,97,108,32,111,99,99,97,115,105,111,110,115, -112,111,114,116,117,103,117,195,170,115,32,40,69,117,114,111,112,101,117,41,208, -163,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,209, -131,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,208, -160,208,190,209,129,209,129,208,184,208,185,209,129,208,186,208,190,208,185,208, -188,208,176,209,130,208,181,209,128,208,184,208,176,208,187,208,190,208,178,208, -184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,208,184,209, -131,208,191,209,128,208,176,208,178,208,187,208,181,208,189,208,184,209,143,208, -189,208,181,208,190,208,177,209,133,208,190,208,180,208,184,208,188,208,190,208, -184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208, -152,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208, -160,208,181,209,129,208,191,209,131,208,177,208,187,208,184,208,186,208,184,208, -186,208,190,208,187,208,184,209,135,208,181,209,129,209,130,208,178,208,190,208, -184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,142,209, -130,208,181,209,128,209,128,208,184,209,130,208,190,209,128,208,184,208,184,208, -180,208,190,209,129,209,130,208,176,209,130,208,190,209,135,208,189,208,190,216, -167,217,132,217,133,216,170,217,136,216,167,216,172,216,175,217,136,217,134,216, -167,217,132,216,167,216,180,216,170,216,177,216,167,217,131,216,167,216,170,216, -167,217,132,216,167,217,130,216,170,216,177,216,167,216,173,216,167,216,170,104, -116,109,108,59,32,99,104,97,114,115,101,116,61,85,84,70,45,56,34,32,115,101,116, -84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,100,105,115, -112,108,97,121,58,105,110,108,105,110,101,45,98,108,111,99,107,59,60,105,110,112 -,117,116,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,116,121,112,101, -32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,60,105,109,103,32, -115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,34,32,34,104,116,116, -112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,115,104,111,114,116,99,117, -116,32,105,99,111,110,34,32,104,114,101,102,61,34,34,32,97,117,116,111,99,111, -109,112,108,101,116,101,61,34,111,102,102,34,32,60,47,97,62,60,47,100,105,118,62 -,60,100,105,118,32,99,108,97,115,115,61,60,47,97,62,60,47,108,105,62,10,60,108, -105,32,99,108,97,115,115,61,34,99,115,115,34,32,116,121,112,101,61,34,116,101, -120,116,47,99,115,115,34,32,60,102,111,114,109,32,97,99,116,105,111,110,61,34, -104,116,116,112,58,47,47,120,116,47,99,115,115,34,32,104,114,101,102,61,34,104, -116,116,112,58,47,47,108,105,110,107,32,114,101,108,61,34,97,108,116,101,114,110 -,97,116,101,34,32,13,10,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116, -101,120,116,47,32,111,110,99,108,105,99,107,61,34,106,97,118,97,115,99,114,105, -112,116,58,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40, -41,125,104,101,105,103,104,116,61,34,49,34,32,119,105,100,116,104,61,34,49,34,32 -,80,101,111,112,108,101,39,115,32,82,101,112,117,98,108,105,99,32,111,102,32,32, -60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,116,101, -120,116,45,100,101,99,111,114,97,116,105,111,110,58,117,110,100,101,114,116,104, -101,32,98,101,103,105,110,110,105,110,103,32,111,102,32,116,104,101,32,60,47,100 -,105,118,62,10,60,47,100,105,118,62,10,60,47,100,105,118,62,10,101,115,116,97,98 -,108,105,115,104,109,101,110,116,32,111,102,32,116,104,101,32,60,47,100,105,118, -62,60,47,100,105,118,62,60,47,100,105,118,62,60,47,100,35,118,105,101,119,112, -111,114,116,123,109,105,110,45,104,101,105,103,104,116,58,10,60,115,99,114,105, -112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,111,112,116,105,111,110,62, -60,111,112,116,105,111,110,32,118,97,108,117,101,61,111,102,116,101,110,32,114, -101,102,101,114,114,101,100,32,116,111,32,97,115,32,47,111,112,116,105,111,110, -62,10,60,111,112,116,105,111,110,32,118,97,108,117,60,33,68,79,67,84,89,80,69,32 -,104,116,109,108,62,10,60,33,45,45,91,73,110,116,101,114,110,97,116,105,111,110, -97,108,32,65,105,114,112,111,114,116,62,10,60,97,32,104,114,101,102,61,34,104, -116,116,112,58,47,47,119,119,119,60,47,97,62,60,97,32,104,114,101,102,61,34,104, -116,116,112,58,47,47,119,224,184,160,224,184,178,224,184,169,224,184,178,224,185 -,132,224,184,151,224,184,162,225,131,165,225,131,144,225,131,160,225,131,151,225 -,131,163,225,131,154,225,131,152,230,173,163,233,171,148,228,184,173,230,150,135 -,32,40,231,185,129,233,171,148,41,224,164,168,224,164,191,224,164,176,224,165, -141,224,164,166,224,165,135,224,164,182,224,164,161,224,164,190,224,164,137,224, -164,168,224,164,178,224,165,139,224,164,161,224,164,149,224,165,141,224,164,183, -224,165,135,224,164,164,224,165,141,224,164,176,224,164,156,224,164,190,224,164, -168,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184,224,164,130,224, -164,172,224,164,130,224,164,167,224,164,191,224,164,164,224,164,184,224,165,141, -224,164,165,224,164,190,224,164,170,224,164,168,224,164,190,224,164,184,224,165, -141,224,164,181,224,165,128,224,164,149,224,164,190,224,164,176,224,164,184,224, -164,130,224,164,184,224,165,141,224,164,149,224,164,176,224,164,163,224,164,184, -224,164,190,224,164,174,224,164,151,224,165,141,224,164,176,224,165,128,224,164, -154,224,164,191,224,164,159,224,165,141,224,164,160,224,165,139,224,164,130,224, -164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164,168, -224,164,133,224,164,174,224,165,135,224,164,176,224,164,191,224,164,149,224,164, -190,224,164,181,224,164,191,224,164,173,224,164,191,224,164,168,224,165,141,224, -164,168,224,164,151,224,164,190,224,164,161,224,164,191,224,164,175,224,164,190, -224,164,129,224,164,149,224,165,141,224,164,175,224,165,139,224,164,130,224,164, -149,224,164,191,224,164,184,224,165,129,224,164,176,224,164,149,224,165,141,224, -164,183,224,164,190,224,164,170,224,164,185,224,165,129,224,164,129,224,164,154, -224,164,164,224,165,128,224,164,170,224,165,141,224,164,176,224,164,172,224,164, -130,224,164,167,224,164,168,224,164,159,224,164,191,224,164,170,224,165,141,224, -164,170,224,164,163,224,165,128,224,164,149,224,165,141,224,164,176,224,164,191, -224,164,149,224,165,135,224,164,159,224,164,170,224,165,141,224,164,176,224,164, -190,224,164,176,224,164,130,224,164,173,224,164,170,224,165,141,224,164,176,224, -164,190,224,164,170,224,165,141,224,164,164,224,164,174,224,164,190,224,164,178, -224,164,191,224,164,149,224,165,139,224,164,130,224,164,176,224,164,171,224,164, -188,224,165,141,224,164,164,224,164,190,224,164,176,224,164,168,224,164,191,224, -164,176,224,165,141,224,164,174,224,164,190,224,164,163,224,164,178,224,164,191, -224,164,174,224,164,191,224,164,159,224,165,135,224,164,161,100,101,115,99,114, -105,112,116,105,111,110,34,32,99,111,110,116,101,110,116,61,34,100,111,99,117, -109,101,110,116,46,108,111,99,97,116,105,111,110,46,112,114,111,116,46,103,101, -116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,60,33,68,79 -,67,84,89,80,69,32,104,116,109,108,62,10,60,104,116,109,108,32,60,109,101,116,97 -,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,58,117,114,108,34,32 -,99,111,110,116,101,110,116,61,34,104,116,116,112,58,47,47,46,99,115,115,34,32, -114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,115,116,121,108,101 -,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,62,116,121,112,101,61 -,34,116,101,120,116,47,99,115,115,34,32,104,114,101,102,61,34,119,51,46,111,114, -103,47,49,57,57,57,47,120,104,116,109,108,34,32,120,109,108,116,121,112,101,61, -34,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,34,32,109,101,116,104 -,111,100,61,34,103,101,116,34,32,97,99,116,105,111,110,61,34,108,105,110,107,32, -114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,32,61,32,100,111 -,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,116,121,112, -101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,34,32,47,62,99,101,108,108 -,112,97,100,100,105,110,103,61,34,48,34,32,99,101,108,108,115,112,46,99,115,115, -34,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,60,47,97,62,60, -47,108,105,62,60,108,105,62,60,97,32,104,114,101,102,61,34,34,32,119,105,100,116 -,104,61,34,49,34,32,104,101,105,103,104,116,61,34,49,34,34,62,60,97,32,104,114, -101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,115,116,121,108,101,61,34, -100,105,115,112,108,97,121,58,110,111,110,101,59,34,62,97,108,116,101,114,110,97 -,116,101,34,32,116,121,112,101,61,34,97,112,112,108,105,45,47,47,87,51,67,47,47, -68,84,68,32,88,72,84,77,76,32,49,46,48,32,101,108,108,115,112,97,99,105,110,103, -61,34,48,34,32,99,101,108,108,112,97,100,32,116,121,112,101,61,34,104,105,100, -100,101,110,34,32,118,97,108,117,101,61,34,47,97,62,38,110,98,115,112,59,60,115, -112,97,110,32,114,111,108,101,61,34,115,10,60,105,110,112,117,116,32,116,121,112 -,101,61,34,104,105,100,100,101,110,34,32,108,97,110,103,117,97,103,101,61,34,74, -97,118,97,83,99,114,105,112,116,34,32,32,100,111,99,117,109,101,110,116,46,103, -101,116,69,108,101,109,101,110,116,115,66,103,61,34,48,34,32,99,101,108,108,115, -112,97,99,105,110,103,61,34,48,34,32,121,112,101,61,34,116,101,120,116,47,99,115 -,115,34,32,109,101,100,105,97,61,34,116,121,112,101,61,39,116,101,120,116,47,106 -,97,118,97,115,99,114,105,112,116,39,119,105,116,104,32,116,104,101,32,101,120, -99,101,112,116,105,111,110,32,111,102,32,121,112,101,61,34,116,101,120,116,47,99 -,115,115,34,32,114,101,108,61,34,115,116,32,104,101,105,103,104,116,61,34,49,34, -32,119,105,100,116,104,61,34,49,34,32,61,39,43,101,110,99,111,100,101,85,82,73, -67,111,109,112,111,110,101,110,116,40,60,108,105,110,107,32,114,101,108,61,34,97 -,108,116,101,114,110,97,116,101,34,32,10,98,111,100,121,44,32,116,114,44,32,105, -110,112,117,116,44,32,116,101,120,116,109,101,116,97,32,110,97,109,101,61,34,114 -,111,98,111,116,115,34,32,99,111,110,109,101,116,104,111,100,61,34,112,111,115, -116,34,32,97,99,116,105,111,110,61,34,62,10,60,97,32,104,114,101,102,61,34,104, -116,116,112,58,47,47,119,119,119,46,99,115,115,34,32,114,101,108,61,34,115,116, -121,108,101,115,104,101,101,116,34,32,60,47,100,105,118,62,60,47,100,105,118,62, -60,100,105,118,32,99,108,97,115,115,108,97,110,103,117,97,103,101,61,34,106,97, -118,97,115,99,114,105,112,116,34,62,97,114,105,97,45,104,105,100,100,101,110,61, -34,116,114,117,101,34,62,194,183,60,114,105,112,116,34,32,116,121,112,101,61,34, -116,101,120,116,47,106,97,118,97,115,108,61,48,59,125,41,40,41,59,10,40,102,117, -110,99,116,105,111,110,40,41,123,98,97,99,107,103,114,111,117,110,100,45,105,109 -,97,103,101,58,32,117,114,108,40,47,97,62,60,47,108,105,62,60,108,105,62,60,97, -32,104,114,101,102,61,34,104,9,9,60,108,105,62,60,97,32,104,114,101,102,61,34, -104,116,116,112,58,47,47,97,116,111,114,34,32,97,114,105,97,45,104,105,100,100, -101,110,61,34,116,114,117,62,32,60,97,32,104,114,101,102,61,34,104,116,116,112, -58,47,47,119,119,119,46,108,97,110,103,117,97,103,101,61,34,106,97,118,97,115,99 -,114,105,112,116,34,32,47,111,112,116,105,111,110,62,10,60,111,112,116,105,111, -110,32,118,97,108,117,101,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118, -32,99,108,97,115,115,61,114,97,116,111,114,34,32,97,114,105,97,45,104,105,100, -100,101,110,61,34,116,114,101,61,40,110,101,119,32,68,97,116,101,41,46,103,101, -116,84,105,109,101,40,41,112,111,114,116,117,103,117,195,170,115,32,40,100,111, -32,66,114,97,115,105,108,41,208,190,209,128,208,179,208,176,208,189,208,184,208, -183,208,176,209,134,208,184,208,184,208,178,208,190,208,183,208,188,208,190,208, -182,208,189,208,190,209,129,209,130,209,140,208,190,208,177,209,128,208,176,208, -183,208,190,208,178,208,176,208,189,208,184,209,143,209,128,208,181,208,179,208, -184,209,129,209,130,209,128,208,176,209,134,208,184,208,184,208,178,208,190,208, -183,208,188,208,190,208,182,208,189,208,190,209,129,209,130,208,184,208,190,208, -177,209,143,208,183,208,176,209,130,208,181,208,187,209,140,208,189,208,176,60, -33,68,79,67,84,89,80,69,32,104,116,109,108,32,80,85,66,76,73,67,32,34,110,116,45 -,84,121,112,101,34,32,99,111,110,116,101,110,116,61,34,116,101,120,116,47,60,109 -,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,116,101, -114,97,110,115,105,116,105,111,110,97,108,47,47,69,78,34,32,34,104,116,116,112, -58,60,104,116,109,108,32,120,109,108,110,115,61,34,104,116,116,112,58,47,47,119, -119,119,45,47,47,87,51,67,47,47,68,84,68,32,88,72,84,77,76,32,49,46,48,32,84,68, -84,68,47,120,104,116,109,108,49,45,116,114,97,110,115,105,116,105,111,110,97,108 -,47,47,119,119,119,46,119,51,46,111,114,103,47,84,82,47,120,104,116,109,108,49, -47,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116, -39,59,60,109,101,116,97,32,110,97,109,101,61,34,100,101,115,99,114,105,112,116, -105,111,110,112,97,114,101,110,116,78,111,100,101,46,105,110,115,101,114,116,66, -101,102,111,114,101,60,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100, -100,101,110,34,32,110,97,106,115,34,32,116,121,112,101,61,34,116,101,120,116,47, -106,97,118,97,115,99,114,105,40,100,111,99,117,109,101,110,116,41,46,114,101,97, -100,121,40,102,117,110,99,116,105,115,99,114,105,112,116,32,116,121,112,101,61, -34,116,101,120,116,47,106,97,118,97,115,105,109,97,103,101,34,32,99,111,110,116, -101,110,116,61,34,104,116,116,112,58,47,47,85,65,45,67,111,109,112,97,116,105,98 -,108,101,34,32,99,111,110,116,101,110,116,61,116,109,108,59,32,99,104,97,114,115 -,101,116,61,117,116,102,45,56,34,32,47,62,10,108,105,110,107,32,114,101,108,61, -34,115,104,111,114,116,99,117,116,32,105,99,111,110,60,108,105,110,107,32,114, -101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,60,47,115,99,114,105 -,112,116,62,10,60,115,99,114,105,112,116,32,116,121,112,101,61,61,32,100,111,99, -117,109,101,110,116,46,99,114,101,97,116,101,69,108,101,109,101,110,60,97,32,116 -,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,104,114,101,102,61,32,100, -111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,115,66,105, -110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61 -,97,46,116,121,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114, -105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110, -97,109,101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56, -34,32,47,62,100,116,100,34,62,10,60,104,116,109,108,32,120,109,108,110,115,61,34 -,104,116,116,112,45,47,47,87,51,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49, -32,84,101,110,116,115,66,121,84,97,103,78,97,109,101,40,39,115,99,114,105,112, -116,39,41,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110, -34,32,110,97,109,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,101,120, -116,47,106,97,118,97,115,34,32,115,116,121,108,101,61,34,100,105,115,112,108,97, -121,58,110,111,110,101,59,34,62,100,111,99,117,109,101,110,116,46,103,101,116,69 -,108,101,109,101,110,116,66,121,73,100,40,61,100,111,99,117,109,101,110,116,46, -99,114,101,97,116,101,69,108,101,109,101,110,116,40,39,32,116,121,112,101,61,39, -116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,105,110,112,117,116, -32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61,34,100,46,103, -101,116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,115,110 -,105,99,97,108,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119, -46,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49,32,84,114,97,110,115,105,116, -60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34 -,62,10,10,60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99, -115,115,34,62,105,111,110,97,108,46,100,116,100,34,62,10,60,104,116,109,108,32, -120,109,108,110,115,61,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110, -116,101,110,116,45,84,121,112,101,100,105,110,103,61,34,48,34,32,99,101,108,108, -115,112,97,99,105,110,103,61,34,48,34,104,116,109,108,59,32,99,104,97,114,115, -101,116,61,117,116,102,45,56,34,32,47,62,10,32,115,116,121,108,101,61,34,100,105 -,115,112,108,97,121,58,110,111,110,101,59,34,62,60,60,108,105,62,60,97,32,104, -114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,32,116,121,112,101,61, -39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,62,208,180,208,181 -,209,143,209,130,208,181,208,187,209,140,208,189,208,190,209,129,209,130,208,184 -,209,129,208,190,208,190,209,130,208,178,208,181,209,130,209,129,209,130,208,178 -,208,184,208,184,208,191,209,128,208,190,208,184,208,183,208,178,208,190,208,180 -,209,129,209,130,208,178,208,176,208,177,208,181,208,183,208,190,208,191,208,176 -,209,129,208,189,208,190,209,129,209,130,208,184,224,164,170,224,165,129,224,164 -,184,224,165,141,224,164,164,224,164,191,224,164,149,224,164,190,224,164,149,224 -,164,190,224,164,130,224,164,151,224,165,141,224,164,176,224,165,135,224,164,184 -,224,164,137,224,164,168,224,165,141,224,164,185,224,165,139,224,164,130,224,164 -,168,224,165,135,224,164,181,224,164,191,224,164,167,224,164,190,224,164,168,224 -,164,184,224,164,173,224,164,190,224,164,171,224,164,191,224,164,149,224,165,141 -,224,164,184,224,164,191,224,164,130,224,164,151,224,164,184,224,165,129,224,164 -,176,224,164,149,224,165,141,224,164,183,224,164,191,224,164,164,224,164,149,224 -,165,137,224,164,170,224,165,128,224,164,176,224,164,190,224,164,135,224,164,159 -,224,164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164 -,170,224,164,168,224,164,149,224,164,190,224,164,176,224,165,141,224,164,176,224 -,164,181,224,164,190,224,164,136,224,164,184,224,164,149,224,165,141,224,164,176 -,224,164,191,224,164,175,224,164,164,224,164,190 -}; diff --git a/icecat/modules/brotli/common/platform.c b/icecat/modules/brotli/common/platform.c index 1e047ced79..25d84a9467 100644 --- a/icecat/modules/brotli/common/platform.c +++ b/icecat/modules/brotli/common/platform.c @@ -4,6 +4,10 @@ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ +#include + +#include + #include "platform.h" /* Default brotli_alloc_func */ diff --git a/icecat/modules/brotli/common/platform.h b/icecat/modules/brotli/common/platform.h index 8080cbb466..7406f3fe69 100644 --- a/icecat/modules/brotli/common/platform.h +++ b/icecat/modules/brotli/common/platform.h @@ -24,13 +24,22 @@ #ifndef BROTLI_COMMON_PLATFORM_H_ #define BROTLI_COMMON_PLATFORM_H_ -#include -#include /* IWYU pragma: export memcmp, memcpy, memset */ -#include /* IWYU pragma: export exit, free, malloc */ -#include /* should include endian.h for us */ +#include /* memcpy */ -#include /* IWYU pragma: export */ -#include /* IWYU pragma: export */ +#include +#include + +#if defined(OS_LINUX) || defined(OS_CYGWIN) || defined(__EMSCRIPTEN__) +#include +#elif defined(OS_FREEBSD) +#include +#elif defined(OS_MACOSX) +#include +/* Let's try and follow the Linux convention */ +#define BROTLI_X_BYTE_ORDER BYTE_ORDER +#define BROTLI_X_LITTLE_ENDIAN LITTLE_ENDIAN +#define BROTLI_X_BIG_ENDIAN BIG_ENDIAN +#endif #if BROTLI_MSVC_VERSION_CHECK(18, 0, 0) #include @@ -204,23 +213,9 @@ OR: #define BROTLI_TARGET_LOONGARCH64 #endif -/* This does not seem to be an indicator of z/Architecture (64-bit); neither - that allows to use unaligned loads. */ -#if defined(__s390x__) -#define BROTLI_TARGET_S390X -#endif - -#if defined(__mips64) -#define BROTLI_TARGET_MIPS64 -#endif - -#if defined(__ia64__) || defined(_M_IA64) -#define BROTLI_TARGET_IA64 -#endif - #if defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8_64) || \ defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64) || \ - defined(BROTLI_TARGET_LOONGARCH64) || defined(BROTLI_TARGET_MIPS64) + defined(BROTLI_TARGET_LOONGARCH64) #define BROTLI_TARGET_64_BITS 1 #else #define BROTLI_TARGET_64_BITS 0 @@ -253,12 +248,13 @@ OR: #define BROTLI_LITTLE_ENDIAN 1 #elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) #define BROTLI_BIG_ENDIAN 1 -/* Likely target platform is iOS / OSX. */ -#elif defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN) +#elif defined(BROTLI_X_BYTE_ORDER) +#if BROTLI_X_BYTE_ORDER == BROTLI_X_LITTLE_ENDIAN #define BROTLI_LITTLE_ENDIAN 1 -#elif defined(BYTE_ORDER) && (BYTE_ORDER == BIG_ENDIAN) +#elif BROTLI_X_BYTE_ORDER == BROTLI_X_BIG_ENDIAN #define BROTLI_BIG_ENDIAN 1 #endif +#endif /* BROTLI_X_BYTE_ORDER */ #if !defined(BROTLI_LITTLE_ENDIAN) #define BROTLI_LITTLE_ENDIAN 0 @@ -268,6 +264,12 @@ OR: #define BROTLI_BIG_ENDIAN 0 #endif +#if defined(BROTLI_X_BYTE_ORDER) +#undef BROTLI_X_BYTE_ORDER +#undef BROTLI_X_LITTLE_ENDIAN +#undef BROTLI_X_BIG_ENDIAN +#endif + #if defined(BROTLI_BUILD_NO_UNALIGNED_READ_FAST) #define BROTLI_UNALIGNED_READ_FAST (!!0) #elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \ @@ -282,46 +284,6 @@ OR: #endif /* Portable unaligned memory access: read / write values via memcpy. */ -#if !defined(BROTLI_USE_PACKED_FOR_UNALIGNED) -#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) -#define BROTLI_USE_PACKED_FOR_UNALIGNED 1 -#else -#define BROTLI_USE_PACKED_FOR_UNALIGNED 0 -#endif -#endif /* defined(BROTLI_USE_PACKED_FOR_UNALIGNED) */ - -#if BROTLI_USE_PACKED_FOR_UNALIGNED - -typedef union BrotliPackedValue { - uint16_t u16; - uint32_t u32; - uint64_t u64; - size_t szt; -} __attribute__ ((packed)) BrotliPackedValue; - -static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) { - const BrotliPackedValue* address = (const BrotliPackedValue*)p; - return address->u16; -} -static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) { - const BrotliPackedValue* address = (const BrotliPackedValue*)p; - return address->u32; -} -static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) { - const BrotliPackedValue* address = (const BrotliPackedValue*)p; - return address->u64; -} -static BROTLI_INLINE size_t BrotliUnalignedReadSizeT(const void* p) { - const BrotliPackedValue* address = (const BrotliPackedValue*)p; - return address->szt; -} -static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { - BrotliPackedValue* address = (BrotliPackedValue*)p; - address->u64 = v; -} - -#else /* not BROTLI_USE_PACKED_FOR_UNALIGNED */ - static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) { uint16_t t; memcpy(&t, p, sizeof t); @@ -337,43 +299,10 @@ static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) { memcpy(&t, p, sizeof t); return t; } -static BROTLI_INLINE size_t BrotliUnalignedReadSizeT(const void* p) { - size_t t; - memcpy(&t, p, sizeof t); - return t; -} static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { memcpy(p, &v, sizeof v); } -#endif /* BROTLI_USE_PACKED_FOR_UNALIGNED */ - -#if BROTLI_GNUC_HAS_BUILTIN(__builtin_bswap16, 4, 3, 0) -#define BROTLI_BSWAP16(V) ((uint16_t)__builtin_bswap16(V)) -#else -#define BROTLI_BSWAP16(V) ((uint16_t)( \ - (((V) & 0xFFU) << 8) | \ - (((V) >> 8) & 0xFFU))) -#endif - -#if BROTLI_GNUC_HAS_BUILTIN(__builtin_bswap32, 4, 3, 0) -#define BROTLI_BSWAP32(V) ((uint32_t)__builtin_bswap32(V)) -#else -#define BROTLI_BSWAP32(V) ((uint32_t)( \ - (((V) & 0xFFU) << 24) | (((V) & 0xFF00U) << 8) | \ - (((V) >> 8) & 0xFF00U) | (((V) >> 24) & 0xFFU))) -#endif - -#if BROTLI_GNUC_HAS_BUILTIN(__builtin_bswap64, 4, 3, 0) -#define BROTLI_BSWAP64(V) ((uint64_t)__builtin_bswap64(V)) -#else -#define BROTLI_BSWAP64(V) ((uint64_t)( \ - (((V) & 0xFFU) << 56) | (((V) & 0xFF00U) << 40) | \ - (((V) & 0xFF0000U) << 24) | (((V) & 0xFF000000U) << 8) | \ - (((V) >> 8) & 0xFF000000U) | (((V) >> 24) & 0xFF0000U) | \ - (((V) >> 40) & 0xFF00U) | (((V) >> 56) & 0xFFU))) -#endif - #if BROTLI_LITTLE_ENDIAN /* Straight endianness. Just read / write values. */ #define BROTLI_UNALIGNED_LOAD16LE BrotliUnalignedRead16 @@ -381,20 +310,32 @@ static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { #define BROTLI_UNALIGNED_LOAD64LE BrotliUnalignedRead64 #define BROTLI_UNALIGNED_STORE64LE BrotliUnalignedWrite64 #elif BROTLI_BIG_ENDIAN /* BROTLI_LITTLE_ENDIAN */ +/* Explain compiler to byte-swap values. */ +#define BROTLI_BSWAP16_(V) ((uint16_t)( \ + (((V) & 0xFFU) << 8) | \ + (((V) >> 8) & 0xFFU))) static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) { uint16_t value = BrotliUnalignedRead16(p); - return BROTLI_BSWAP16(value); + return BROTLI_BSWAP16_(value); } +#define BROTLI_BSWAP32_(V) ( \ + (((V) & 0xFFU) << 24) | (((V) & 0xFF00U) << 8) | \ + (((V) >> 8) & 0xFF00U) | (((V) >> 24) & 0xFFU)) static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) { uint32_t value = BrotliUnalignedRead32(p); - return BROTLI_BSWAP32(value); + return BROTLI_BSWAP32_(value); } +#define BROTLI_BSWAP64_(V) ( \ + (((V) & 0xFFU) << 56) | (((V) & 0xFF00U) << 40) | \ + (((V) & 0xFF0000U) << 24) | (((V) & 0xFF000000U) << 8) | \ + (((V) >> 8) & 0xFF000000U) | (((V) >> 24) & 0xFF0000U) | \ + (((V) >> 40) & 0xFF00U) | (((V) >> 56) & 0xFFU)) static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) { uint64_t value = BrotliUnalignedRead64(p); - return BROTLI_BSWAP64(value); + return BROTLI_BSWAP64_(value); } static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) { - uint64_t value = BROTLI_BSWAP64(v); + uint64_t value = BROTLI_BSWAP64_(v); BrotliUnalignedWrite64(p, value); } #else /* BROTLI_LITTLE_ENDIAN */ @@ -523,14 +464,6 @@ BROTLI_MIN_MAX(size_t) BROTLI_MIN_MAX(uint32_t) BROTLI_MIN_MAX(uint8_t) #define BROTLI_MIN(T, A, B) (brotli_min_ ## T((A), (B))) #define BROTLI_MAX(T, A, B) (brotli_max_ ## T((A), (B))) -static BROTLI_INLINE int brotli_safe_add_int(int a, int b, int* result) { - if (b > 0 && a > INT_MAX - b) return 0; - if (b < 0 && a < INT_MIN - b) return 0; - *result = a + b; - return 1; -} -#define BROTLI_SAFE_ADD(T, A, B, R) (brotli_safe_add_ ## T((A), (B), (R))) - #define BROTLI_SWAP(T, A, I, J) { \ T __brotli_swap_tmp = (A)[(I)]; \ (A)[(I)] = (A)[(J)]; \ @@ -542,7 +475,7 @@ static BROTLI_INLINE int brotli_safe_add_int(int a, int b, int* result) { BROTLI_INTEL_VERSION_CHECK(16, 0, 0) #define BROTLI_TZCNT64 __builtin_ctzll #elif BROTLI_MSVC_VERSION_CHECK(18, 0, 0) -#if defined(BROTLI_TARGET_X64) && !defined(_M_ARM64EC) +#if defined(BROTLI_TARGET_X64) #define BROTLI_TZCNT64 _tzcnt_u64 #else /* BROTLI_TARGET_X64 */ static BROTLI_INLINE uint32_t BrotliBsf64Msvc(uint64_t x) { @@ -573,29 +506,11 @@ BROTLI_COMMON_API void* BrotliDefaultAllocFunc(void* opaque, size_t size); /* Default brotli_free_func */ BROTLI_COMMON_API void BrotliDefaultFreeFunc(void* opaque, void* address); -/* Circular logical rotates. */ -static BROTLI_INLINE uint16_t BrotliRotateRight16(uint16_t const value, - size_t count) { - count &= 0x0F; /* for fickle pattern recognition */ - return (value >> count) | (uint16_t)(value << ((0U - count) & 0x0F)); -} -static BROTLI_INLINE uint32_t BrotliRotateRight32(uint32_t const value, - size_t count) { - count &= 0x1F; /* for fickle pattern recognition */ - return (value >> count) | (uint32_t)(value << ((0U - count) & 0x1F)); -} -static BROTLI_INLINE uint64_t BrotliRotateRight64(uint64_t const value, - size_t count) { - count &= 0x3F; /* for fickle pattern recognition */ - return (value >> count) | (uint64_t)(value << ((0U - count) & 0x3F)); -} - BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) { BROTLI_UNUSED(&BrotliSuppressUnusedFunctions); BROTLI_UNUSED(&BrotliUnalignedRead16); BROTLI_UNUSED(&BrotliUnalignedRead32); BROTLI_UNUSED(&BrotliUnalignedRead64); - BROTLI_UNUSED(&BrotliUnalignedReadSizeT); BROTLI_UNUSED(&BrotliUnalignedWrite64); BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD16LE); BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD32LE); @@ -616,80 +531,11 @@ BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) { BROTLI_UNUSED(&brotli_max_uint32_t); BROTLI_UNUSED(&brotli_min_uint8_t); BROTLI_UNUSED(&brotli_max_uint8_t); - BROTLI_UNUSED(&brotli_safe_add_int); BROTLI_UNUSED(&BrotliDefaultAllocFunc); BROTLI_UNUSED(&BrotliDefaultFreeFunc); - BROTLI_UNUSED(&BrotliRotateRight16); - BROTLI_UNUSED(&BrotliRotateRight32); - BROTLI_UNUSED(&BrotliRotateRight64); #if BROTLI_ENABLE_DUMP BROTLI_UNUSED(&BrotliDump); #endif } -#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86)) && \ - !defined(_M_ARM64EC) -/* _mm_prefetch() is not defined outside of x86/x64 */ -/* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */ -#include -#define PREFETCH_L1(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T0) -#define PREFETCH_L2(ptr) _mm_prefetch((const char*)(ptr), _MM_HINT_T1) -#elif BROTLI_GNUC_HAS_BUILTIN(__builtin_prefetch, 3, 1, 0) -#define PREFETCH_L1(ptr) \ - __builtin_prefetch((ptr), 0 /* rw==read */, 3 /* locality */) -#define PREFETCH_L2(ptr) \ - __builtin_prefetch((ptr), 0 /* rw==read */, 2 /* locality */) -#elif defined(__aarch64__) -#define PREFETCH_L1(ptr) \ - do { \ - __asm__ __volatile__("prfm pldl1keep, %0" ::"Q"(*(ptr))); \ - } while (0) -#define PREFETCH_L2(ptr) \ - do { \ - __asm__ __volatile__("prfm pldl2keep, %0" ::"Q"(*(ptr))); \ - } while (0) -#else -#define PREFETCH_L1(ptr) \ - do { \ - (void)(ptr); \ - } while (0) /* disabled */ -#define PREFETCH_L2(ptr) \ - do { \ - (void)(ptr); \ - } while (0) /* disabled */ -#endif - -/* The SIMD matchers are only faster at certain quality levels. */ -#if defined(_M_X64) && defined(BROTLI_TZCNT64) -#define BROTLI_MAX_SIMD_QUALITY 7 -#elif defined(BROTLI_TZCNT64) -#define BROTLI_MAX_SIMD_QUALITY 6 -#endif - -#if defined(_MSC_VER) -#define BROTLI_CRASH() __debugbreak(), (void)abort() -#elif BROTLI_GNUC_HAS_BUILTIN(__builtin_trap, 3, 0, 0) -#define BROTLI_CRASH() (void)__builtin_trap() -#else -#define BROTLI_CRASH() (void)abort() -#endif - -/* Make BROTLI_TEST=0 act same as undefined. */ -#if defined(BROTLI_TEST) && ((1-BROTLI_TEST-1) == 0) -#undef BROTLI_TEST -#endif - -#if !defined(BROTLI_MODEL) && BROTLI_GNUC_HAS_ATTRIBUTE(model, 3, 0, 3) && \ - !defined(BROTLI_TARGET_IA64) && !defined(BROTLI_TARGET_LOONGARCH64) -#define BROTLI_MODEL(M) __attribute__((model(M))) -#else -#define BROTLI_MODEL(M) /* M */ -#endif - -#if !defined(BROTLI_COLD) && BROTLI_GNUC_HAS_ATTRIBUTE(cold, 4, 3, 0) -#define BROTLI_COLD __attribute__((cold)) -#else -#define BROTLI_COLD /* cold */ -#endif - #endif /* BROTLI_COMMON_PLATFORM_H_ */ diff --git a/icecat/modules/brotli/common/shared_dictionary.c b/icecat/modules/brotli/common/shared_dictionary.c index cef4e20fcd..49f1c9b075 100644 --- a/icecat/modules/brotli/common/shared_dictionary.c +++ b/icecat/modules/brotli/common/shared_dictionary.c @@ -8,6 +8,10 @@ #include +#include +#include /* malloc, free */ +#include + #include "dictionary.h" #include "platform.h" #include "shared_dictionary_internal.h" @@ -275,7 +279,7 @@ static BROTLI_BOOL ParseDictionary(const uint8_t* encoded, size_t size, size_t pos = 0; uint32_t chunk_size = 0; size_t total_prefix_suffix_count = 0; - size_t transform_list_start[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS]; + size_t trasform_list_start[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS]; uint16_t temporary_prefix_suffix_table[256]; /* Skip magic header bytes. */ @@ -329,7 +333,7 @@ static BROTLI_BOOL ParseDictionary(const uint8_t* encoded, size_t size, for (i = 0; i < dict->num_transform_lists; i++) { BROTLI_BOOL ok = BROTLI_FALSE; size_t prefix_suffix_count = 0; - transform_list_start[i] = pos; + trasform_list_start[i] = pos; dict->transforms_instances[i].prefix_suffix_map = temporary_prefix_suffix_table; ok = ParseTransformsList( @@ -347,7 +351,7 @@ static BROTLI_BOOL ParseDictionary(const uint8_t* encoded, size_t size, total_prefix_suffix_count = 0; for (i = 0; i < dict->num_transform_lists; i++) { size_t prefix_suffix_count = 0; - size_t position = transform_list_start[i]; + size_t position = trasform_list_start[i]; uint16_t* prefix_suffix_map = &dict->prefix_suffix_maps[total_prefix_suffix_count]; BROTLI_BOOL ok = ParsePrefixSuffixTable( diff --git a/icecat/modules/brotli/common/shared_dictionary_internal.h b/icecat/modules/brotli/common/shared_dictionary_internal.h index c6a90fa741..963762e432 100644 --- a/icecat/modules/brotli/common/shared_dictionary_internal.h +++ b/icecat/modules/brotli/common/shared_dictionary_internal.h @@ -10,9 +10,9 @@ #define BROTLI_COMMON_SHARED_DICTIONARY_INTERNAL_H_ #include +#include #include "dictionary.h" -#include "platform.h" #include "transform.h" #if defined(__cplusplus) || defined(c_plusplus) diff --git a/icecat/modules/brotli/common/static_init.h b/icecat/modules/brotli/common/static_init.h deleted file mode 100644 index 12744de8f9..0000000000 --- a/icecat/modules/brotli/common/static_init.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2025 Google Inc. All Rights Reserved. - - Distributed under MIT license. - See file LICENSE for detail or copy at https://opensource.org/licenses/MIT -*/ - -/* - Central point for static initialization. - - In case of "lazy" mode `BrotliXxxLazyStaticInit` is not provided by the - library. Embedder is responsible for providing it. This function should call - `BrotliXxxLazyStaticInitInner` on the first invocation. This function should - not return until execution of `BrotliXxxLazyStaticInitInner` is finished. - In C or before C++11 it is possible to call `BrotliXxxLazyStaticInitInner` - on start-up path and then `BrotliEncoderLazyStaticInit` is could be no-op; - another option is to use available thread execution controls to meet the - requirements. For possible C++11 implementation see static_init_lazy.cc. -*/ - -#ifndef THIRD_PARTY_BROTLI_COMMON_STATIC_INIT_H_ -#define THIRD_PARTY_BROTLI_COMMON_STATIC_INIT_H_ - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -/* Static data is "initialized" in compile time. */ -#define BROTLI_STATIC_INIT_NONE 0 -/* Static data is initialized before "main". */ -#define BROTLI_STATIC_INIT_EARLY 1 -/* Static data is initialized when first encoder is created. */ -#define BROTLI_STATIC_INIT_LAZY 2 - -#define BROTLI_STATIC_INIT_DEFAULT BROTLI_STATIC_INIT_NONE - -#if !defined(BROTLI_STATIC_INIT) -#define BROTLI_STATIC_INIT BROTLI_STATIC_INIT_DEFAULT -#endif - -#if (BROTLI_STATIC_INIT != BROTLI_STATIC_INIT_NONE) && \ - (BROTLI_STATIC_INIT != BROTLI_STATIC_INIT_EARLY) && \ - (BROTLI_STATIC_INIT != BROTLI_STATIC_INIT_LAZY) -#error Invalid value for BROTLI_STATIC_INIT -#endif - -#if (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_EARLY) -#if defined(BROTLI_EXTERNAL_DICTIONARY_DATA) -#error BROTLI_STATIC_INIT_EARLY will fail with BROTLI_EXTERNAL_DICTIONARY_DATA -#endif -#endif /* BROTLI_STATIC_INIT */ - -#if defined(__cplusplus) || defined(c_plusplus) -} /* extern "C" */ -#endif - -#endif // THIRD_PARTY_BROTLI_COMMON_STATIC_INIT_H_ diff --git a/icecat/modules/brotli/common/transform.c b/icecat/modules/brotli/common/transform.c index 968b912387..49455fc496 100644 --- a/icecat/modules/brotli/common/transform.c +++ b/icecat/modules/brotli/common/transform.c @@ -4,7 +4,6 @@ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ -#include "platform.h" #include "transform.h" #if defined(__cplusplus) || defined(c_plusplus) @@ -12,7 +11,7 @@ extern "C" { #endif /* RFC 7932 transforms string data */ -static const BROTLI_MODEL("small") char kPrefixSuffix[217] = +static const char kPrefixSuffix[217] = "\1 \2, \10 of the \4 of \2s \1.\5 and \4 " /* 0x _0 _2 __5 _E _3 _6 _8 _E */ "in \1\"\4 to \2\">\1\n\2. \1]\5 for \3 a \6 " @@ -28,7 +27,7 @@ static const BROTLI_MODEL("small") char kPrefixSuffix[217] = "t \4ize \2\xc2\xa0\4ous \5 the \2e "; /* \0 - implicit trailing zero. */ /* Cx _2 _7___ ___ _A _F _5 _8 */ -static const BROTLI_MODEL("small") uint16_t kPrefixSuffixMap[50] = { +static const uint16_t kPrefixSuffixMap[50] = { 0x00, 0x02, 0x05, 0x0E, 0x13, 0x16, 0x18, 0x1E, 0x23, 0x25, 0x2A, 0x2D, 0x2F, 0x32, 0x34, 0x3A, 0x3E, 0x45, 0x47, 0x4E, 0x55, 0x5A, 0x5C, 0x63, 0x68, 0x6D, 0x72, 0x77, 0x7A, 0x7C, @@ -37,7 +36,7 @@ static const BROTLI_MODEL("small") uint16_t kPrefixSuffixMap[50] = { }; /* RFC 7932 transforms */ -static const BROTLI_MODEL("small") uint8_t kTransformsData[] = { +static const uint8_t kTransformsData[] = { 49, BROTLI_TRANSFORM_IDENTITY, 49, 49, BROTLI_TRANSFORM_IDENTITY, 0, 0, BROTLI_TRANSFORM_IDENTITY, 0, @@ -161,8 +160,7 @@ static const BROTLI_MODEL("small") uint8_t kTransformsData[] = { 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 34, }; -static const BROTLI_MODEL("small") -BrotliTransforms kBrotliTransforms = { +static const BrotliTransforms kBrotliTransforms = { sizeof(kPrefixSuffix), (const uint8_t*)kPrefixSuffix, kPrefixSuffixMap, diff --git a/icecat/modules/brotli/common/transform.h b/icecat/modules/brotli/common/transform.h index c6176d8340..b6f86cc7d5 100644 --- a/icecat/modules/brotli/common/transform.h +++ b/icecat/modules/brotli/common/transform.h @@ -8,7 +8,8 @@ #ifndef BROTLI_COMMON_TRANSFORM_H_ #define BROTLI_COMMON_TRANSFORM_H_ -#include "platform.h" +#include +#include #if defined(__cplusplus) || defined(c_plusplus) extern "C" { diff --git a/icecat/modules/brotli/common/version.h b/icecat/modules/brotli/common/version.h index 0d6fcc50a0..8098040f64 100644 --- a/icecat/modules/brotli/common/version.h +++ b/icecat/modules/brotli/common/version.h @@ -18,7 +18,7 @@ BrotliEncoderVersion methods. */ #define BROTLI_VERSION_MAJOR 1 -#define BROTLI_VERSION_MINOR 2 +#define BROTLI_VERSION_MINOR 1 #define BROTLI_VERSION_PATCH 0 #define BROTLI_VERSION BROTLI_MAKE_HEX_VERSION( \ @@ -32,9 +32,9 @@ - interfaces not changed -> current:revision+1:age */ -#define BROTLI_ABI_CURRENT 3 +#define BROTLI_ABI_CURRENT 2 #define BROTLI_ABI_REVISION 0 -#define BROTLI_ABI_AGE 2 +#define BROTLI_ABI_AGE 1 #if BROTLI_VERSION_MAJOR != (BROTLI_ABI_CURRENT - BROTLI_ABI_AGE) #error ABI/API version inconsistency diff --git a/icecat/modules/brotli/dec/bit_reader.c b/icecat/modules/brotli/dec/bit_reader.c index a01047cc10..35101ddc1a 100644 --- a/icecat/modules/brotli/dec/bit_reader.c +++ b/icecat/modules/brotli/dec/bit_reader.c @@ -8,14 +8,15 @@ #include "bit_reader.h" +#include + #include "../common/platform.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif -const BROTLI_MODEL("small") -brotli_reg_t kBrotliBitMask[33] = { 0x00000000, +const brotli_reg_t kBrotliBitMask[33] = { 0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, @@ -26,12 +27,12 @@ brotli_reg_t kBrotliBitMask[33] = { 0x00000000, 0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF }; -void BrotliInitBitReader(BrotliBitReader* br) { +void BrotliInitBitReader(BrotliBitReader* const br) { br->val_ = 0; br->bit_pos_ = 0; } -BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* br) { +BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br) { size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1; /* Fixing alignment after unaligned BrotliFillWindow would result accumulator overflow. If unalignment is caused by BrotliSafeReadBits, then there is @@ -55,7 +56,7 @@ BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* br) { return BROTLI_TRUE; } -BROTLI_BOOL BrotliSafeReadBits32Slow(BrotliBitReader* br, +BROTLI_BOOL BrotliSafeReadBits32Slow(BrotliBitReader* const br, brotli_reg_t n_bits, brotli_reg_t* val) { brotli_reg_t low_val; brotli_reg_t high_val; diff --git a/icecat/modules/brotli/dec/bit_reader.h b/icecat/modules/brotli/dec/bit_reader.h index ef6b047ae6..930dc60f1d 100644 --- a/icecat/modules/brotli/dec/bit_reader.h +++ b/icecat/modules/brotli/dec/bit_reader.h @@ -9,6 +9,10 @@ #ifndef BROTLI_DEC_BIT_READER_H_ #define BROTLI_DEC_BIT_READER_H_ +#include /* memcpy */ + +#include + #include "../common/constants.h" #include "../common/platform.h" diff --git a/icecat/modules/brotli/dec/decode.c b/icecat/modules/brotli/dec/decode.c index c4972a5d84..220c7e85c6 100644 --- a/icecat/modules/brotli/dec/decode.c +++ b/icecat/modules/brotli/dec/decode.c @@ -6,6 +6,9 @@ #include +#include /* free, malloc */ +#include /* memcpy, memset */ + #include "../common/constants.h" #include "../common/context.h" #include "../common/dictionary.h" @@ -17,7 +20,6 @@ #include "huffman.h" #include "prefix.h" #include "state.h" -#include "static_init.h" #if defined(BROTLI_TARGET_NEON) #include @@ -44,19 +46,16 @@ extern "C" { 255 prefix + 32 base + 255 suffix */ static const brotli_reg_t kRingBufferWriteAheadSlack = 542; -static const BROTLI_MODEL("small") -uint8_t kCodeLengthCodeOrder[BROTLI_CODE_LENGTH_CODES] = { +static const uint8_t kCodeLengthCodeOrder[BROTLI_CODE_LENGTH_CODES] = { 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15, }; /* Static prefix code for the complex code length code lengths. */ -static const BROTLI_MODEL("small") -uint8_t kCodeLengthPrefixLength[16] = { +static const uint8_t kCodeLengthPrefixLength[16] = { 2, 2, 2, 3, 2, 2, 2, 4, 2, 2, 2, 3, 2, 2, 2, 4, }; -static const BROTLI_MODEL("small") -uint8_t kCodeLengthPrefixValue[16] = { +static const uint8_t kCodeLengthPrefixValue[16] = { 0, 4, 3, 2, 0, 4, 3, 1, 0, 4, 3, 2, 0, 4, 3, 5, }; @@ -79,10 +78,6 @@ BROTLI_BOOL BrotliDecoderSetParameter( BrotliDecoderState* BrotliDecoderCreateInstance( brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) { BrotliDecoderState* state = 0; - if (!BrotliDecoderEnsureStaticInit()) { - BROTLI_DUMP(); - return 0; - } if (!alloc_func && !free_func) { state = (BrotliDecoderState*)malloc(sizeof(BrotliDecoderState)); } else if (alloc_func && free_func) { @@ -222,7 +217,7 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode DecodeVarLenUint8( s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_LONG; return BROTLI_DECODER_NEEDS_MORE_INPUT; } - *value = ((brotli_reg_t)1U << *value) + bits; + *value = (1U << *value) + bits; s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE; return BROTLI_DECODER_SUCCESS; @@ -471,53 +466,6 @@ static BROTLI_INLINE brotli_reg_t ReadPreloadedSymbol(const HuffmanCode* table, return result; } -/* Reads up to limit symbols from br and copies them into ringbuffer, - starting from pos. Caller must ensure that there is enough space - for the write. Returns the amount of symbols actually copied. */ -static BROTLI_INLINE int BrotliCopyPreloadedSymbolsToU8(const HuffmanCode* table, - BrotliBitReader* br, - brotli_reg_t* bits, - brotli_reg_t* value, - uint8_t* ringbuffer, - int pos, - const int limit) { - /* Calculate range where CheckInputAmount is always true. - Start with the number of bytes we can read. */ - int64_t new_lim = br->guard_in - br->next_in; - /* Convert to bits, since symbols use variable number of bits. */ - new_lim *= 8; - /* At most 15 bits per symbol, so this is safe. */ - new_lim /= 15; - const int kMaximalOverread = 4; - int pos_limit = limit; - int copies = 0; - if ((new_lim - kMaximalOverread) <= limit) { - // Safe cast, since new_lim is already < num_steps - pos_limit = (int)(new_lim - kMaximalOverread); - } - if (pos_limit < 0) { - pos_limit = 0; - } - copies = pos_limit; - pos_limit += pos; - /* Fast path, caller made sure it is safe to write, - we verified that is is safe to read. */ - for (; pos < pos_limit; pos++) { - BROTLI_DCHECK(BrotliCheckInputAmount(br)); - ringbuffer[pos] = (uint8_t)ReadPreloadedSymbol(table, br, bits, value); - BROTLI_LOG_ARRAY_INDEX(ringbuffer, pos); - } - /* Do the remainder, caller made sure it is safe to write, - we need to bverify that it is safe to read. */ - while (BrotliCheckInputAmount(br) && copies < limit) { - ringbuffer[pos] = (uint8_t)ReadPreloadedSymbol(table, br, bits, value); - BROTLI_LOG_ARRAY_INDEX(ringbuffer, pos); - pos++; - copies++; - } - return copies; -} - static BROTLI_INLINE brotli_reg_t Log2Floor(brotli_reg_t x) { brotli_reg_t result = 0; while (x) { @@ -1141,7 +1089,7 @@ static BrotliDecoderErrorCode DecodeContextMap(brotli_reg_t context_map_size, h->context_index = context_index; return BROTLI_DECODER_NEEDS_MORE_INPUT; } - reps += (brotli_reg_t)1U << code; + reps += 1U << code; BROTLI_LOG_UINT(reps); if (context_index + reps > context_map_size) { return @@ -1176,7 +1124,7 @@ static BrotliDecoderErrorCode DecodeContextMap(brotli_reg_t context_map_size, /* Decodes a command or literal and updates block type ring-buffer. Reads 3..54 bits. */ -static BROTLI_INLINE BrotliDecoderErrorCode DecodeBlockTypeAndLength( +static BROTLI_INLINE BROTLI_BOOL DecodeBlockTypeAndLength( int safe, BrotliDecoderState* s, int tree_type) { brotli_reg_t max_block_type = s->num_block_types[tree_type]; const HuffmanCode* type_tree = &s->block_type_trees[ @@ -1187,7 +1135,7 @@ static BROTLI_INLINE BrotliDecoderErrorCode DecodeBlockTypeAndLength( brotli_reg_t* ringbuffer = &s->block_type_rb[tree_type * 2]; brotli_reg_t block_type; if (max_block_type <= 1) { - return BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH; + return BROTLI_FALSE; } /* Read 0..15 + 3..39 bits. */ @@ -1197,13 +1145,11 @@ static BROTLI_INLINE BrotliDecoderErrorCode DecodeBlockTypeAndLength( } else { BrotliBitReaderState memento; BrotliBitReaderSaveState(br, &memento); - if (!SafeReadSymbol(type_tree, br, &block_type)) { - return BROTLI_DECODER_NEEDS_MORE_INPUT; - } + if (!SafeReadSymbol(type_tree, br, &block_type)) return BROTLI_FALSE; if (!SafeReadBlockLength(s, &s->block_length[tree_type], len_tree, br)) { s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE; BrotliBitReaderRestoreState(br, &memento); - return BROTLI_DECODER_NEEDS_MORE_INPUT; + return BROTLI_FALSE; } } @@ -1219,7 +1165,7 @@ static BROTLI_INLINE BrotliDecoderErrorCode DecodeBlockTypeAndLength( } ringbuffer[0] = ringbuffer[1]; ringbuffer[1] = block_type; - return BROTLI_DECODER_SUCCESS; + return BROTLI_TRUE; } static BROTLI_INLINE void DetectTrivialLiteralBlockTypes( @@ -1256,65 +1202,59 @@ static BROTLI_INLINE void PrepareLiteralDecoding(BrotliDecoderState* s) { /* Decodes the block type and updates the state for literal context. Reads 3..54 bits. */ -static BROTLI_INLINE BrotliDecoderErrorCode DecodeLiteralBlockSwitchInternal( +static BROTLI_INLINE BROTLI_BOOL DecodeLiteralBlockSwitchInternal( int safe, BrotliDecoderState* s) { - BrotliDecoderErrorCode result = DecodeBlockTypeAndLength(safe, s, 0); - if (result != BROTLI_DECODER_SUCCESS) { - return result; + if (!DecodeBlockTypeAndLength(safe, s, 0)) { + return BROTLI_FALSE; } PrepareLiteralDecoding(s); - return BROTLI_DECODER_SUCCESS; + return BROTLI_TRUE; } -static BROTLI_NOINLINE BrotliDecoderErrorCode -DecodeLiteralBlockSwitch(BrotliDecoderState* s) { - return DecodeLiteralBlockSwitchInternal(0, s); +static void BROTLI_NOINLINE DecodeLiteralBlockSwitch(BrotliDecoderState* s) { + DecodeLiteralBlockSwitchInternal(0, s); } -static BROTLI_NOINLINE BrotliDecoderErrorCode SafeDecodeLiteralBlockSwitch( +static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeLiteralBlockSwitch( BrotliDecoderState* s) { return DecodeLiteralBlockSwitchInternal(1, s); } /* Block switch for insert/copy length. Reads 3..54 bits. */ -static BROTLI_INLINE BrotliDecoderErrorCode DecodeCommandBlockSwitchInternal( +static BROTLI_INLINE BROTLI_BOOL DecodeCommandBlockSwitchInternal( int safe, BrotliDecoderState* s) { - BrotliDecoderErrorCode result = DecodeBlockTypeAndLength(safe, s, 1); - if (result != BROTLI_DECODER_SUCCESS) { - return result; + if (!DecodeBlockTypeAndLength(safe, s, 1)) { + return BROTLI_FALSE; } s->htree_command = s->insert_copy_hgroup.htrees[s->block_type_rb[3]]; - return BROTLI_DECODER_SUCCESS; + return BROTLI_TRUE; } -static BROTLI_NOINLINE BrotliDecoderErrorCode -DecodeCommandBlockSwitch(BrotliDecoderState* s) { - return DecodeCommandBlockSwitchInternal(0, s); +static void BROTLI_NOINLINE DecodeCommandBlockSwitch(BrotliDecoderState* s) { + DecodeCommandBlockSwitchInternal(0, s); } -static BROTLI_NOINLINE BrotliDecoderErrorCode -SafeDecodeCommandBlockSwitch(BrotliDecoderState* s) { +static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeCommandBlockSwitch( + BrotliDecoderState* s) { return DecodeCommandBlockSwitchInternal(1, s); } /* Block switch for distance codes. Reads 3..54 bits. */ -static BROTLI_INLINE BrotliDecoderErrorCode DecodeDistanceBlockSwitchInternal( +static BROTLI_INLINE BROTLI_BOOL DecodeDistanceBlockSwitchInternal( int safe, BrotliDecoderState* s) { - BrotliDecoderErrorCode result = DecodeBlockTypeAndLength(safe, s, 2); - if (result != BROTLI_DECODER_SUCCESS) { - return result; + if (!DecodeBlockTypeAndLength(safe, s, 2)) { + return BROTLI_FALSE; } s->dist_context_map_slice = s->dist_context_map + (s->block_type_rb[5] << BROTLI_DISTANCE_CONTEXT_BITS); s->dist_htree_index = s->dist_context_map_slice[s->distance_context]; - return BROTLI_DECODER_SUCCESS; + return BROTLI_TRUE; } -static BROTLI_NOINLINE BrotliDecoderErrorCode -DecodeDistanceBlockSwitch(BrotliDecoderState* s) { - return DecodeDistanceBlockSwitchInternal(0, s); +static void BROTLI_NOINLINE DecodeDistanceBlockSwitch(BrotliDecoderState* s) { + DecodeDistanceBlockSwitchInternal(0, s); } static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeDistanceBlockSwitch( @@ -1423,7 +1363,6 @@ static BROTLI_BOOL BROTLI_NOINLINE BrotliEnsureRingBuffer( static BrotliDecoderErrorCode BROTLI_NOINLINE SkipMetadataBlock(BrotliDecoderState* s) { BrotliBitReader* br = &s->br; - int nbytes; if (s->meta_block_remaining_len == 0) { return BROTLI_DECODER_SUCCESS; @@ -1434,7 +1373,7 @@ SkipMetadataBlock(BrotliDecoderState* s) { /* Drain accumulator. */ if (BrotliGetAvailableBits(br) >= 8) { uint8_t buffer[8]; - nbytes = (int)(BrotliGetAvailableBits(br)) >> 3; + int nbytes = (int)(BrotliGetAvailableBits(br)) >> 3; BROTLI_DCHECK(nbytes <= 8); if (nbytes > s->meta_block_remaining_len) { nbytes = s->meta_block_remaining_len; @@ -1451,7 +1390,7 @@ SkipMetadataBlock(BrotliDecoderState* s) { } /* Direct access to metadata is possible. */ - nbytes = (int)BrotliGetRemainingBytes(br); + int nbytes = (int)BrotliGetRemainingBytes(br); if (nbytes > s->meta_block_remaining_len) { nbytes = s->meta_block_remaining_len; } @@ -1526,8 +1465,6 @@ static BrotliDecoderErrorCode BROTLI_NOINLINE CopyUncompressedBlockToOutput( static BROTLI_BOOL AttachCompoundDictionary( BrotliDecoderState* state, const uint8_t* data, size_t size) { BrotliDecoderCompoundDictionary* addon = state->compound_dictionary; - int new_size = (int)size; - if (new_size < 0 || (size_t)new_size != size) return BROTLI_FALSE; if (state->state != BROTLI_STATE_UNINITED) return BROTLI_FALSE; if (!addon) { addon = (BrotliDecoderCompoundDictionary*)BROTLI_DECODER_ALLOC( @@ -1542,17 +1479,14 @@ static BROTLI_BOOL AttachCompoundDictionary( state->compound_dictionary = addon; } if (addon->num_chunks == 15) return BROTLI_FALSE; - if (!BROTLI_SAFE_ADD(int, addon->total_size, new_size, &new_size)) { - return BROTLI_FALSE; - } addon->chunks[addon->num_chunks] = data; addon->num_chunks++; - addon->total_size = new_size; - addon->chunk_offsets[addon->num_chunks] = new_size; + addon->total_size += (int)size; + addon->chunk_offsets[addon->num_chunks] = addon->total_size; return BROTLI_TRUE; } -static void EnsureCompoundDictionaryInitialized(BrotliDecoderState* state) { +static void EnsureCoumpoundDictionaryInitialized(BrotliDecoderState* state) { BrotliDecoderCompoundDictionary* addon = state->compound_dictionary; /* 256 = (1 << 8) slots in block map. */ int block_bits = 8; @@ -1573,7 +1507,7 @@ static BROTLI_BOOL InitializeCompoundDictionaryCopy(BrotliDecoderState* s, int address, int length) { BrotliDecoderCompoundDictionary* addon = s->compound_dictionary; int index; - EnsureCompoundDictionaryInitialized(s); + EnsureCoumpoundDictionaryInitialized(s); index = addon->block_map[address >> addon->block_bits]; while (address >= addon->chunk_offsets[index + 1]) index++; if (addon->total_size < address + length) return BROTLI_FALSE; @@ -1819,7 +1753,7 @@ static void CalculateDistanceLut(BrotliDecoderState* s) { brotli_reg_t npostfix = s->distance_postfix_bits; brotli_reg_t ndirect = s->num_direct_distance_codes; brotli_reg_t alphabet_size_limit = s->distance_hgroup.alphabet_size_limit; - brotli_reg_t postfix = (brotli_reg_t)1u << npostfix; + brotli_reg_t postfix = 1u << npostfix; brotli_reg_t j; brotli_reg_t bits = 1; brotli_reg_t half = 0; @@ -1953,9 +1887,6 @@ static BROTLI_INLINE BROTLI_BOOL CheckInputAmount( return BrotliCheckInputAmount(br); } -/* NB: METHOD should return BROTLI_FALSE only in case there is not enough input; - in case of "unsafe" execution, when input is guaranteed to be sufficient, - result is ignored. */ #define BROTLI_SAFE(METHOD) \ { \ if (safe) { \ @@ -1968,22 +1899,6 @@ static BROTLI_INLINE BROTLI_BOOL CheckInputAmount( } \ } -/* NB: METHOD should return BROTLI_DECODER_SUCCESS, BROTLI_DECODER_ERROR_*, or - BROTLI_DECODER_NEEDS_MORE_INPUT; the later two break the processing. */ -#define BROTLI_SAFE_WITH_STATUS(METHOD) \ - { \ - BrotliDecoderErrorCode status; \ - if (safe) { \ - status = Safe##METHOD; \ - } else { \ - status = METHOD; \ - } \ - if (status != BROTLI_DECODER_SUCCESS) { \ - result = status; \ - goto saveStateAndReturn; \ - } \ - } - static BROTLI_INLINE BrotliDecoderErrorCode ProcessCommandsInternal( int safe, BrotliDecoderState* s) { int pos = s->pos; @@ -2023,7 +1938,7 @@ CommandBegin: goto saveStateAndReturn; } if (BROTLI_PREDICT_FALSE(s->block_length[1] == 0)) { - BROTLI_SAFE_WITH_STATUS(DecodeCommandBlockSwitch(s)); + BROTLI_SAFE(DecodeCommandBlockSwitch(s)); goto CommandBegin; } /* Read the insert/copy length in the command. */ @@ -2044,72 +1959,35 @@ CommandInner: brotli_reg_t bits; brotli_reg_t value; PreloadSymbol(safe, s->literal_htree, br, &bits, &value); - if (!safe) { - // This is a hottest part of the decode, so we copy the loop below - // and optimize it by calculating the number of steps where all checks - // evaluate to false (ringbuffer size/block size/input size). - // Since all checks are loop invariant, we just need to find - // minimal number of iterations for a simple loop, and run - // the full version for the remainder. - int num_steps = i - 1; - if (num_steps > 0 && ((brotli_reg_t)(num_steps) > s->block_length[0])) { - // Safe cast, since block_length < steps - num_steps = (int)s->block_length[0]; + do { + if (!CheckInputAmount(safe, br)) { + s->state = BROTLI_STATE_COMMAND_INNER; + result = BROTLI_DECODER_NEEDS_MORE_INPUT; + goto saveStateAndReturn; } - if (s->ringbuffer_size >= pos && - (s->ringbuffer_size - pos) <= num_steps) { - num_steps = s->ringbuffer_size - pos - 1; + if (BROTLI_PREDICT_FALSE(s->block_length[0] == 0)) { + goto NextLiteralBlock; } - if (num_steps < 0) { - num_steps = 0; - } - num_steps = BrotliCopyPreloadedSymbolsToU8(s->literal_htree, br, &bits, - &value, s->ringbuffer, pos, - num_steps); - pos += num_steps; - s->block_length[0] -= (brotli_reg_t)num_steps; - i -= num_steps; - do { - if (!CheckInputAmount(safe, br)) { - s->state = BROTLI_STATE_COMMAND_INNER; - result = BROTLI_DECODER_NEEDS_MORE_INPUT; - goto saveStateAndReturn; - } - if (BROTLI_PREDICT_FALSE(s->block_length[0] == 0)) { - goto NextLiteralBlock; - } - BrotliCopyPreloadedSymbolsToU8(s->literal_htree, br, &bits, &value, - s->ringbuffer, pos, 1); - --s->block_length[0]; - BROTLI_LOG_ARRAY_INDEX(s->ringbuffer, pos); - ++pos; - if (BROTLI_PREDICT_FALSE(pos == s->ringbuffer_size)) { - s->state = BROTLI_STATE_COMMAND_INNER_WRITE; - --i; - goto saveStateAndReturn; - } - } while (--i != 0); - } else { /* safe */ - do { - if (BROTLI_PREDICT_FALSE(s->block_length[0] == 0)) { - goto NextLiteralBlock; - } + if (!safe) { + s->ringbuffer[pos] = + (uint8_t)ReadPreloadedSymbol(s->literal_htree, br, &bits, &value); + } else { brotli_reg_t literal; if (!SafeReadSymbol(s->literal_htree, br, &literal)) { result = BROTLI_DECODER_NEEDS_MORE_INPUT; goto saveStateAndReturn; } s->ringbuffer[pos] = (uint8_t)literal; - --s->block_length[0]; - BROTLI_LOG_ARRAY_INDEX(s->ringbuffer, pos); - ++pos; - if (BROTLI_PREDICT_FALSE(pos == s->ringbuffer_size)) { - s->state = BROTLI_STATE_COMMAND_INNER_WRITE; - --i; - goto saveStateAndReturn; - } - } while (--i != 0); - } + } + --s->block_length[0]; + BROTLI_LOG_ARRAY_INDEX(s->ringbuffer, pos); + ++pos; + if (BROTLI_PREDICT_FALSE(pos == s->ringbuffer_size)) { + s->state = BROTLI_STATE_COMMAND_INNER_WRITE; + --i; + goto saveStateAndReturn; + } + } while (--i != 0); } else { uint8_t p1 = s->ringbuffer[(pos - 1) & s->ringbuffer_mask]; uint8_t p2 = s->ringbuffer[(pos - 2) & s->ringbuffer_mask]; @@ -2168,7 +2046,7 @@ CommandPostDecodeLiterals: } else { /* Read distance code in the command, unless it was implicitly zero. */ if (BROTLI_PREDICT_FALSE(s->block_length[2] == 0)) { - BROTLI_SAFE_WITH_STATUS(DecodeDistanceBlockSwitch(s)); + BROTLI_SAFE(DecodeDistanceBlockSwitch(s)); } BROTLI_SAFE(ReadDistance(s, br)); } @@ -2362,7 +2240,7 @@ CommandPostWrapCopy: } NextLiteralBlock: - BROTLI_SAFE_WITH_STATUS(DecodeLiteralBlockSwitch(s)); + BROTLI_SAFE(DecodeLiteralBlockSwitch(s)); goto CommandInner; saveStateAndReturn: @@ -2584,8 +2462,6 @@ BrotliDecoderResult BrotliDecoderDecompressStream( if (result != BROTLI_DECODER_SUCCESS) { break; } - BROTLI_DCHECK(s->meta_block_remaining_len <= - (int)BROTLI_BLOCK_SIZE_CAP); BROTLI_LOG_UINT(s->is_last_metablock); BROTLI_LOG_UINT(s->meta_block_remaining_len); BROTLI_LOG_UINT(s->is_metadata); @@ -2979,15 +2855,16 @@ void BrotliDecoderSetMetadataCallbacks( /* Escalate internal functions visibility; for testing purposes only. */ #if defined(BROTLI_TEST) -BROTLI_BOOL BrotliSafeReadSymbolForTest( +BROTLI_BOOL SafeReadSymbolForTest( const HuffmanCode*, BrotliBitReader*, brotli_reg_t*); -BROTLI_BOOL BrotliSafeReadSymbolForTest( +BROTLI_BOOL SafeReadSymbolForTest( const HuffmanCode* table, BrotliBitReader* br, brotli_reg_t* result) { return SafeReadSymbol(table, br, result); } -void BrotliInverseMoveToFrontTransformForTest( + +void InverseMoveToFrontTransformForTest( uint8_t*, brotli_reg_t, BrotliDecoderState*); -void BrotliInverseMoveToFrontTransformForTest( +void InverseMoveToFrontTransformForTest( uint8_t* v, brotli_reg_t l, BrotliDecoderState* s) { InverseMoveToFrontTransform(v, l, s); } diff --git a/icecat/modules/brotli/dec/huffman.c b/icecat/modules/brotli/dec/huffman.c index 06486cf810..3806454864 100644 --- a/icecat/modules/brotli/dec/huffman.c +++ b/icecat/modules/brotli/dec/huffman.c @@ -8,6 +8,10 @@ #include "huffman.h" +#include /* memcpy, memset */ + +#include + #include "../common/constants.h" #include "../common/platform.h" @@ -22,8 +26,7 @@ extern "C" { ((sizeof(brotli_reg_t) << 3) - BROTLI_REVERSE_BITS_MAX) #else #define BROTLI_REVERSE_BITS_BASE 0 -static BROTLI_MODEL("small") -uint8_t kReverseBits[1 << BROTLI_REVERSE_BITS_MAX] = { +static uint8_t kReverseBits[1 << BROTLI_REVERSE_BITS_MAX] = { 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, diff --git a/icecat/modules/brotli/dec/huffman.h b/icecat/modules/brotli/dec/huffman.h index 53daf600ef..50360962c7 100644 --- a/icecat/modules/brotli/dec/huffman.h +++ b/icecat/modules/brotli/dec/huffman.h @@ -9,6 +9,8 @@ #ifndef BROTLI_DEC_HUFFMAN_H_ #define BROTLI_DEC_HUFFMAN_H_ +#include + #include "../common/platform.h" #if defined(__cplusplus) || defined(c_plusplus) diff --git a/icecat/modules/brotli/dec/prefix.c b/icecat/modules/brotli/dec/prefix.c deleted file mode 100644 index ce3998f241..0000000000 --- a/icecat/modules/brotli/dec/prefix.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright 2025 Google Inc. All Rights Reserved. - - Distributed under MIT license. - See file LICENSE for detail or copy at https://opensource.org/licenses/MIT -*/ - -#include "prefix.h" - -#include "../common/platform.h" /* IWYU pragma: keep */ -#include "../common/static_init.h" - -#if (BROTLI_STATIC_INIT != BROTLI_STATIC_INIT_NONE) -#include "../common/constants.h" -#endif - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -#if (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_NONE) -/* Embed kCmdLut. */ -#include "prefix_inc.h" -#else -BROTLI_COLD BROTLI_BOOL BrotliDecoderInitCmdLut(CmdLutElement* items) { - static const uint8_t kInsertLengthExtraBits[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, - 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x0E, 0x18}; - static const uint8_t kCopyLengthExtraBits[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, - 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x18}; - static const uint8_t kCellPos[11] = {0, 1, 0, 1, 8, 9, 2, 16, 10, 17, 18}; - - uint16_t insert_length_offsets[24]; - uint16_t copy_length_offsets[24]; - insert_length_offsets[0] = 0; - copy_length_offsets[0] = 2; - for (size_t i = 0; i < 23; ++i) { - insert_length_offsets[i + 1] = - insert_length_offsets[i] + (uint16_t)(1u << kInsertLengthExtraBits[i]); - copy_length_offsets[i + 1] = - copy_length_offsets[i] + (uint16_t)(1u << kCopyLengthExtraBits[i]); - } - - for (size_t symbol = 0; symbol < BROTLI_NUM_COMMAND_SYMBOLS; ++symbol) { - CmdLutElement* item = items + symbol; - const size_t cell_idx = symbol >> 6; - const size_t cell_pos = kCellPos[cell_idx]; - const size_t copy_code = ((cell_pos << 3) & 0x18) + (symbol & 0x7); - const uint16_t copy_len_offset = copy_length_offsets[copy_code]; - const size_t insert_code = (cell_pos & 0x18) + ((symbol >> 3) & 0x7); - item->copy_len_extra_bits = kCopyLengthExtraBits[copy_code]; - item->context = (copy_len_offset > 4) ? 3 : ((uint8_t)copy_len_offset - 2); - item->copy_len_offset = copy_len_offset; - item->distance_code = (cell_idx >= 2) ? -1 : 0; - item->insert_len_extra_bits = kInsertLengthExtraBits[insert_code]; - item->insert_len_offset = insert_length_offsets[insert_code]; - } - return BROTLI_TRUE; -} - -BROTLI_MODEL("small") -CmdLutElement kCmdLut[BROTLI_NUM_COMMAND_SYMBOLS]; -#endif /* BROTLI_STATIC_INIT */ - -#if defined(__cplusplus) || defined(c_plusplus) -} /* extern "C" */ -#endif diff --git a/icecat/modules/brotli/dec/prefix.h b/icecat/modules/brotli/dec/prefix.h index f45b8be404..e8acf07740 100644 --- a/icecat/modules/brotli/dec/prefix.h +++ b/icecat/modules/brotli/dec/prefix.h @@ -10,13 +10,9 @@ #ifndef BROTLI_DEC_PREFIX_H_ #define BROTLI_DEC_PREFIX_H_ -#include "../common/constants.h" -#include "../common/platform.h" /* IWYU pragma: keep */ -#include "../common/static_init.h" +#include -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif +#include "../common/constants.h" typedef struct CmdLutElement { uint8_t insert_len_extra_bits; @@ -27,17 +23,711 @@ typedef struct CmdLutElement { uint16_t copy_len_offset; } CmdLutElement; -#if (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_NONE) -BROTLI_INTERNAL extern const BROTLI_MODEL("small") - CmdLutElement kCmdLut[BROTLI_NUM_COMMAND_SYMBOLS]; -#else -BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderInitCmdLut(CmdLutElement* items); -BROTLI_INTERNAL extern BROTLI_MODEL("small") - CmdLutElement kCmdLut[BROTLI_NUM_COMMAND_SYMBOLS]; -#endif - -#if defined(__cplusplus) || defined(c_plusplus) -} /* extern "C" */ -#endif +static const CmdLutElement kCmdLut[BROTLI_NUM_COMMAND_SYMBOLS] = { + { 0x00, 0x00, 0, 0x00, 0x0000, 0x0002 }, + { 0x00, 0x00, 0, 0x01, 0x0000, 0x0003 }, + { 0x00, 0x00, 0, 0x02, 0x0000, 0x0004 }, + { 0x00, 0x00, 0, 0x03, 0x0000, 0x0005 }, + { 0x00, 0x00, 0, 0x03, 0x0000, 0x0006 }, + { 0x00, 0x00, 0, 0x03, 0x0000, 0x0007 }, + { 0x00, 0x00, 0, 0x03, 0x0000, 0x0008 }, + { 0x00, 0x00, 0, 0x03, 0x0000, 0x0009 }, + { 0x00, 0x00, 0, 0x00, 0x0001, 0x0002 }, + { 0x00, 0x00, 0, 0x01, 0x0001, 0x0003 }, + { 0x00, 0x00, 0, 0x02, 0x0001, 0x0004 }, + { 0x00, 0x00, 0, 0x03, 0x0001, 0x0005 }, + { 0x00, 0x00, 0, 0x03, 0x0001, 0x0006 }, + { 0x00, 0x00, 0, 0x03, 0x0001, 0x0007 }, + { 0x00, 0x00, 0, 0x03, 0x0001, 0x0008 }, + { 0x00, 0x00, 0, 0x03, 0x0001, 0x0009 }, + { 0x00, 0x00, 0, 0x00, 0x0002, 0x0002 }, + { 0x00, 0x00, 0, 0x01, 0x0002, 0x0003 }, + { 0x00, 0x00, 0, 0x02, 0x0002, 0x0004 }, + { 0x00, 0x00, 0, 0x03, 0x0002, 0x0005 }, + { 0x00, 0x00, 0, 0x03, 0x0002, 0x0006 }, + { 0x00, 0x00, 0, 0x03, 0x0002, 0x0007 }, + { 0x00, 0x00, 0, 0x03, 0x0002, 0x0008 }, + { 0x00, 0x00, 0, 0x03, 0x0002, 0x0009 }, + { 0x00, 0x00, 0, 0x00, 0x0003, 0x0002 }, + { 0x00, 0x00, 0, 0x01, 0x0003, 0x0003 }, + { 0x00, 0x00, 0, 0x02, 0x0003, 0x0004 }, + { 0x00, 0x00, 0, 0x03, 0x0003, 0x0005 }, + { 0x00, 0x00, 0, 0x03, 0x0003, 0x0006 }, + { 0x00, 0x00, 0, 0x03, 0x0003, 0x0007 }, + { 0x00, 0x00, 0, 0x03, 0x0003, 0x0008 }, + { 0x00, 0x00, 0, 0x03, 0x0003, 0x0009 }, + { 0x00, 0x00, 0, 0x00, 0x0004, 0x0002 }, + { 0x00, 0x00, 0, 0x01, 0x0004, 0x0003 }, + { 0x00, 0x00, 0, 0x02, 0x0004, 0x0004 }, + { 0x00, 0x00, 0, 0x03, 0x0004, 0x0005 }, + { 0x00, 0x00, 0, 0x03, 0x0004, 0x0006 }, + { 0x00, 0x00, 0, 0x03, 0x0004, 0x0007 }, + { 0x00, 0x00, 0, 0x03, 0x0004, 0x0008 }, + { 0x00, 0x00, 0, 0x03, 0x0004, 0x0009 }, + { 0x00, 0x00, 0, 0x00, 0x0005, 0x0002 }, + { 0x00, 0x00, 0, 0x01, 0x0005, 0x0003 }, + { 0x00, 0x00, 0, 0x02, 0x0005, 0x0004 }, + { 0x00, 0x00, 0, 0x03, 0x0005, 0x0005 }, + { 0x00, 0x00, 0, 0x03, 0x0005, 0x0006 }, + { 0x00, 0x00, 0, 0x03, 0x0005, 0x0007 }, + { 0x00, 0x00, 0, 0x03, 0x0005, 0x0008 }, + { 0x00, 0x00, 0, 0x03, 0x0005, 0x0009 }, + { 0x01, 0x00, 0, 0x00, 0x0006, 0x0002 }, + { 0x01, 0x00, 0, 0x01, 0x0006, 0x0003 }, + { 0x01, 0x00, 0, 0x02, 0x0006, 0x0004 }, + { 0x01, 0x00, 0, 0x03, 0x0006, 0x0005 }, + { 0x01, 0x00, 0, 0x03, 0x0006, 0x0006 }, + { 0x01, 0x00, 0, 0x03, 0x0006, 0x0007 }, + { 0x01, 0x00, 0, 0x03, 0x0006, 0x0008 }, + { 0x01, 0x00, 0, 0x03, 0x0006, 0x0009 }, + { 0x01, 0x00, 0, 0x00, 0x0008, 0x0002 }, + { 0x01, 0x00, 0, 0x01, 0x0008, 0x0003 }, + { 0x01, 0x00, 0, 0x02, 0x0008, 0x0004 }, + { 0x01, 0x00, 0, 0x03, 0x0008, 0x0005 }, + { 0x01, 0x00, 0, 0x03, 0x0008, 0x0006 }, + { 0x01, 0x00, 0, 0x03, 0x0008, 0x0007 }, + { 0x01, 0x00, 0, 0x03, 0x0008, 0x0008 }, + { 0x01, 0x00, 0, 0x03, 0x0008, 0x0009 }, + { 0x00, 0x01, 0, 0x03, 0x0000, 0x000a }, + { 0x00, 0x01, 0, 0x03, 0x0000, 0x000c }, + { 0x00, 0x02, 0, 0x03, 0x0000, 0x000e }, + { 0x00, 0x02, 0, 0x03, 0x0000, 0x0012 }, + { 0x00, 0x03, 0, 0x03, 0x0000, 0x0016 }, + { 0x00, 0x03, 0, 0x03, 0x0000, 0x001e }, + { 0x00, 0x04, 0, 0x03, 0x0000, 0x0026 }, + { 0x00, 0x04, 0, 0x03, 0x0000, 0x0036 }, + { 0x00, 0x01, 0, 0x03, 0x0001, 0x000a }, + { 0x00, 0x01, 0, 0x03, 0x0001, 0x000c }, + { 0x00, 0x02, 0, 0x03, 0x0001, 0x000e }, + { 0x00, 0x02, 0, 0x03, 0x0001, 0x0012 }, + { 0x00, 0x03, 0, 0x03, 0x0001, 0x0016 }, + { 0x00, 0x03, 0, 0x03, 0x0001, 0x001e }, + { 0x00, 0x04, 0, 0x03, 0x0001, 0x0026 }, + { 0x00, 0x04, 0, 0x03, 0x0001, 0x0036 }, + { 0x00, 0x01, 0, 0x03, 0x0002, 0x000a }, + { 0x00, 0x01, 0, 0x03, 0x0002, 0x000c }, + { 0x00, 0x02, 0, 0x03, 0x0002, 0x000e }, + { 0x00, 0x02, 0, 0x03, 0x0002, 0x0012 }, + { 0x00, 0x03, 0, 0x03, 0x0002, 0x0016 }, + { 0x00, 0x03, 0, 0x03, 0x0002, 0x001e }, + { 0x00, 0x04, 0, 0x03, 0x0002, 0x0026 }, + { 0x00, 0x04, 0, 0x03, 0x0002, 0x0036 }, + { 0x00, 0x01, 0, 0x03, 0x0003, 0x000a }, + { 0x00, 0x01, 0, 0x03, 0x0003, 0x000c }, + { 0x00, 0x02, 0, 0x03, 0x0003, 0x000e }, + { 0x00, 0x02, 0, 0x03, 0x0003, 0x0012 }, + { 0x00, 0x03, 0, 0x03, 0x0003, 0x0016 }, + { 0x00, 0x03, 0, 0x03, 0x0003, 0x001e }, + { 0x00, 0x04, 0, 0x03, 0x0003, 0x0026 }, + { 0x00, 0x04, 0, 0x03, 0x0003, 0x0036 }, + { 0x00, 0x01, 0, 0x03, 0x0004, 0x000a }, + { 0x00, 0x01, 0, 0x03, 0x0004, 0x000c }, + { 0x00, 0x02, 0, 0x03, 0x0004, 0x000e }, + { 0x00, 0x02, 0, 0x03, 0x0004, 0x0012 }, + { 0x00, 0x03, 0, 0x03, 0x0004, 0x0016 }, + { 0x00, 0x03, 0, 0x03, 0x0004, 0x001e }, + { 0x00, 0x04, 0, 0x03, 0x0004, 0x0026 }, + { 0x00, 0x04, 0, 0x03, 0x0004, 0x0036 }, + { 0x00, 0x01, 0, 0x03, 0x0005, 0x000a }, + { 0x00, 0x01, 0, 0x03, 0x0005, 0x000c }, + { 0x00, 0x02, 0, 0x03, 0x0005, 0x000e }, + { 0x00, 0x02, 0, 0x03, 0x0005, 0x0012 }, + { 0x00, 0x03, 0, 0x03, 0x0005, 0x0016 }, + { 0x00, 0x03, 0, 0x03, 0x0005, 0x001e }, + { 0x00, 0x04, 0, 0x03, 0x0005, 0x0026 }, + { 0x00, 0x04, 0, 0x03, 0x0005, 0x0036 }, + { 0x01, 0x01, 0, 0x03, 0x0006, 0x000a }, + { 0x01, 0x01, 0, 0x03, 0x0006, 0x000c }, + { 0x01, 0x02, 0, 0x03, 0x0006, 0x000e }, + { 0x01, 0x02, 0, 0x03, 0x0006, 0x0012 }, + { 0x01, 0x03, 0, 0x03, 0x0006, 0x0016 }, + { 0x01, 0x03, 0, 0x03, 0x0006, 0x001e }, + { 0x01, 0x04, 0, 0x03, 0x0006, 0x0026 }, + { 0x01, 0x04, 0, 0x03, 0x0006, 0x0036 }, + { 0x01, 0x01, 0, 0x03, 0x0008, 0x000a }, + { 0x01, 0x01, 0, 0x03, 0x0008, 0x000c }, + { 0x01, 0x02, 0, 0x03, 0x0008, 0x000e }, + { 0x01, 0x02, 0, 0x03, 0x0008, 0x0012 }, + { 0x01, 0x03, 0, 0x03, 0x0008, 0x0016 }, + { 0x01, 0x03, 0, 0x03, 0x0008, 0x001e }, + { 0x01, 0x04, 0, 0x03, 0x0008, 0x0026 }, + { 0x01, 0x04, 0, 0x03, 0x0008, 0x0036 }, + { 0x00, 0x00, -1, 0x00, 0x0000, 0x0002 }, + { 0x00, 0x00, -1, 0x01, 0x0000, 0x0003 }, + { 0x00, 0x00, -1, 0x02, 0x0000, 0x0004 }, + { 0x00, 0x00, -1, 0x03, 0x0000, 0x0005 }, + { 0x00, 0x00, -1, 0x03, 0x0000, 0x0006 }, + { 0x00, 0x00, -1, 0x03, 0x0000, 0x0007 }, + { 0x00, 0x00, -1, 0x03, 0x0000, 0x0008 }, + { 0x00, 0x00, -1, 0x03, 0x0000, 0x0009 }, + { 0x00, 0x00, -1, 0x00, 0x0001, 0x0002 }, + { 0x00, 0x00, -1, 0x01, 0x0001, 0x0003 }, + { 0x00, 0x00, -1, 0x02, 0x0001, 0x0004 }, + { 0x00, 0x00, -1, 0x03, 0x0001, 0x0005 }, + { 0x00, 0x00, -1, 0x03, 0x0001, 0x0006 }, + { 0x00, 0x00, -1, 0x03, 0x0001, 0x0007 }, + { 0x00, 0x00, -1, 0x03, 0x0001, 0x0008 }, + { 0x00, 0x00, -1, 0x03, 0x0001, 0x0009 }, + { 0x00, 0x00, -1, 0x00, 0x0002, 0x0002 }, + { 0x00, 0x00, -1, 0x01, 0x0002, 0x0003 }, + { 0x00, 0x00, -1, 0x02, 0x0002, 0x0004 }, + { 0x00, 0x00, -1, 0x03, 0x0002, 0x0005 }, + { 0x00, 0x00, -1, 0x03, 0x0002, 0x0006 }, + { 0x00, 0x00, -1, 0x03, 0x0002, 0x0007 }, + { 0x00, 0x00, -1, 0x03, 0x0002, 0x0008 }, + { 0x00, 0x00, -1, 0x03, 0x0002, 0x0009 }, + { 0x00, 0x00, -1, 0x00, 0x0003, 0x0002 }, + { 0x00, 0x00, -1, 0x01, 0x0003, 0x0003 }, + { 0x00, 0x00, -1, 0x02, 0x0003, 0x0004 }, + { 0x00, 0x00, -1, 0x03, 0x0003, 0x0005 }, + { 0x00, 0x00, -1, 0x03, 0x0003, 0x0006 }, + { 0x00, 0x00, -1, 0x03, 0x0003, 0x0007 }, + { 0x00, 0x00, -1, 0x03, 0x0003, 0x0008 }, + { 0x00, 0x00, -1, 0x03, 0x0003, 0x0009 }, + { 0x00, 0x00, -1, 0x00, 0x0004, 0x0002 }, + { 0x00, 0x00, -1, 0x01, 0x0004, 0x0003 }, + { 0x00, 0x00, -1, 0x02, 0x0004, 0x0004 }, + { 0x00, 0x00, -1, 0x03, 0x0004, 0x0005 }, + { 0x00, 0x00, -1, 0x03, 0x0004, 0x0006 }, + { 0x00, 0x00, -1, 0x03, 0x0004, 0x0007 }, + { 0x00, 0x00, -1, 0x03, 0x0004, 0x0008 }, + { 0x00, 0x00, -1, 0x03, 0x0004, 0x0009 }, + { 0x00, 0x00, -1, 0x00, 0x0005, 0x0002 }, + { 0x00, 0x00, -1, 0x01, 0x0005, 0x0003 }, + { 0x00, 0x00, -1, 0x02, 0x0005, 0x0004 }, + { 0x00, 0x00, -1, 0x03, 0x0005, 0x0005 }, + { 0x00, 0x00, -1, 0x03, 0x0005, 0x0006 }, + { 0x00, 0x00, -1, 0x03, 0x0005, 0x0007 }, + { 0x00, 0x00, -1, 0x03, 0x0005, 0x0008 }, + { 0x00, 0x00, -1, 0x03, 0x0005, 0x0009 }, + { 0x01, 0x00, -1, 0x00, 0x0006, 0x0002 }, + { 0x01, 0x00, -1, 0x01, 0x0006, 0x0003 }, + { 0x01, 0x00, -1, 0x02, 0x0006, 0x0004 }, + { 0x01, 0x00, -1, 0x03, 0x0006, 0x0005 }, + { 0x01, 0x00, -1, 0x03, 0x0006, 0x0006 }, + { 0x01, 0x00, -1, 0x03, 0x0006, 0x0007 }, + { 0x01, 0x00, -1, 0x03, 0x0006, 0x0008 }, + { 0x01, 0x00, -1, 0x03, 0x0006, 0x0009 }, + { 0x01, 0x00, -1, 0x00, 0x0008, 0x0002 }, + { 0x01, 0x00, -1, 0x01, 0x0008, 0x0003 }, + { 0x01, 0x00, -1, 0x02, 0x0008, 0x0004 }, + { 0x01, 0x00, -1, 0x03, 0x0008, 0x0005 }, + { 0x01, 0x00, -1, 0x03, 0x0008, 0x0006 }, + { 0x01, 0x00, -1, 0x03, 0x0008, 0x0007 }, + { 0x01, 0x00, -1, 0x03, 0x0008, 0x0008 }, + { 0x01, 0x00, -1, 0x03, 0x0008, 0x0009 }, + { 0x00, 0x01, -1, 0x03, 0x0000, 0x000a }, + { 0x00, 0x01, -1, 0x03, 0x0000, 0x000c }, + { 0x00, 0x02, -1, 0x03, 0x0000, 0x000e }, + { 0x00, 0x02, -1, 0x03, 0x0000, 0x0012 }, + { 0x00, 0x03, -1, 0x03, 0x0000, 0x0016 }, + { 0x00, 0x03, -1, 0x03, 0x0000, 0x001e }, + { 0x00, 0x04, -1, 0x03, 0x0000, 0x0026 }, + { 0x00, 0x04, -1, 0x03, 0x0000, 0x0036 }, + { 0x00, 0x01, -1, 0x03, 0x0001, 0x000a }, + { 0x00, 0x01, -1, 0x03, 0x0001, 0x000c }, + { 0x00, 0x02, -1, 0x03, 0x0001, 0x000e }, + { 0x00, 0x02, -1, 0x03, 0x0001, 0x0012 }, + { 0x00, 0x03, -1, 0x03, 0x0001, 0x0016 }, + { 0x00, 0x03, -1, 0x03, 0x0001, 0x001e }, + { 0x00, 0x04, -1, 0x03, 0x0001, 0x0026 }, + { 0x00, 0x04, -1, 0x03, 0x0001, 0x0036 }, + { 0x00, 0x01, -1, 0x03, 0x0002, 0x000a }, + { 0x00, 0x01, -1, 0x03, 0x0002, 0x000c }, + { 0x00, 0x02, -1, 0x03, 0x0002, 0x000e }, + { 0x00, 0x02, -1, 0x03, 0x0002, 0x0012 }, + { 0x00, 0x03, -1, 0x03, 0x0002, 0x0016 }, + { 0x00, 0x03, -1, 0x03, 0x0002, 0x001e }, + { 0x00, 0x04, -1, 0x03, 0x0002, 0x0026 }, + { 0x00, 0x04, -1, 0x03, 0x0002, 0x0036 }, + { 0x00, 0x01, -1, 0x03, 0x0003, 0x000a }, + { 0x00, 0x01, -1, 0x03, 0x0003, 0x000c }, + { 0x00, 0x02, -1, 0x03, 0x0003, 0x000e }, + { 0x00, 0x02, -1, 0x03, 0x0003, 0x0012 }, + { 0x00, 0x03, -1, 0x03, 0x0003, 0x0016 }, + { 0x00, 0x03, -1, 0x03, 0x0003, 0x001e }, + { 0x00, 0x04, -1, 0x03, 0x0003, 0x0026 }, + { 0x00, 0x04, -1, 0x03, 0x0003, 0x0036 }, + { 0x00, 0x01, -1, 0x03, 0x0004, 0x000a }, + { 0x00, 0x01, -1, 0x03, 0x0004, 0x000c }, + { 0x00, 0x02, -1, 0x03, 0x0004, 0x000e }, + { 0x00, 0x02, -1, 0x03, 0x0004, 0x0012 }, + { 0x00, 0x03, -1, 0x03, 0x0004, 0x0016 }, + { 0x00, 0x03, -1, 0x03, 0x0004, 0x001e }, + { 0x00, 0x04, -1, 0x03, 0x0004, 0x0026 }, + { 0x00, 0x04, -1, 0x03, 0x0004, 0x0036 }, + { 0x00, 0x01, -1, 0x03, 0x0005, 0x000a }, + { 0x00, 0x01, -1, 0x03, 0x0005, 0x000c }, + { 0x00, 0x02, -1, 0x03, 0x0005, 0x000e }, + { 0x00, 0x02, -1, 0x03, 0x0005, 0x0012 }, + { 0x00, 0x03, -1, 0x03, 0x0005, 0x0016 }, + { 0x00, 0x03, -1, 0x03, 0x0005, 0x001e }, + { 0x00, 0x04, -1, 0x03, 0x0005, 0x0026 }, + { 0x00, 0x04, -1, 0x03, 0x0005, 0x0036 }, + { 0x01, 0x01, -1, 0x03, 0x0006, 0x000a }, + { 0x01, 0x01, -1, 0x03, 0x0006, 0x000c }, + { 0x01, 0x02, -1, 0x03, 0x0006, 0x000e }, + { 0x01, 0x02, -1, 0x03, 0x0006, 0x0012 }, + { 0x01, 0x03, -1, 0x03, 0x0006, 0x0016 }, + { 0x01, 0x03, -1, 0x03, 0x0006, 0x001e }, + { 0x01, 0x04, -1, 0x03, 0x0006, 0x0026 }, + { 0x01, 0x04, -1, 0x03, 0x0006, 0x0036 }, + { 0x01, 0x01, -1, 0x03, 0x0008, 0x000a }, + { 0x01, 0x01, -1, 0x03, 0x0008, 0x000c }, + { 0x01, 0x02, -1, 0x03, 0x0008, 0x000e }, + { 0x01, 0x02, -1, 0x03, 0x0008, 0x0012 }, + { 0x01, 0x03, -1, 0x03, 0x0008, 0x0016 }, + { 0x01, 0x03, -1, 0x03, 0x0008, 0x001e }, + { 0x01, 0x04, -1, 0x03, 0x0008, 0x0026 }, + { 0x01, 0x04, -1, 0x03, 0x0008, 0x0036 }, + { 0x02, 0x00, -1, 0x00, 0x000a, 0x0002 }, + { 0x02, 0x00, -1, 0x01, 0x000a, 0x0003 }, + { 0x02, 0x00, -1, 0x02, 0x000a, 0x0004 }, + { 0x02, 0x00, -1, 0x03, 0x000a, 0x0005 }, + { 0x02, 0x00, -1, 0x03, 0x000a, 0x0006 }, + { 0x02, 0x00, -1, 0x03, 0x000a, 0x0007 }, + { 0x02, 0x00, -1, 0x03, 0x000a, 0x0008 }, + { 0x02, 0x00, -1, 0x03, 0x000a, 0x0009 }, + { 0x02, 0x00, -1, 0x00, 0x000e, 0x0002 }, + { 0x02, 0x00, -1, 0x01, 0x000e, 0x0003 }, + { 0x02, 0x00, -1, 0x02, 0x000e, 0x0004 }, + { 0x02, 0x00, -1, 0x03, 0x000e, 0x0005 }, + { 0x02, 0x00, -1, 0x03, 0x000e, 0x0006 }, + { 0x02, 0x00, -1, 0x03, 0x000e, 0x0007 }, + { 0x02, 0x00, -1, 0x03, 0x000e, 0x0008 }, + { 0x02, 0x00, -1, 0x03, 0x000e, 0x0009 }, + { 0x03, 0x00, -1, 0x00, 0x0012, 0x0002 }, + { 0x03, 0x00, -1, 0x01, 0x0012, 0x0003 }, + { 0x03, 0x00, -1, 0x02, 0x0012, 0x0004 }, + { 0x03, 0x00, -1, 0x03, 0x0012, 0x0005 }, + { 0x03, 0x00, -1, 0x03, 0x0012, 0x0006 }, + { 0x03, 0x00, -1, 0x03, 0x0012, 0x0007 }, + { 0x03, 0x00, -1, 0x03, 0x0012, 0x0008 }, + { 0x03, 0x00, -1, 0x03, 0x0012, 0x0009 }, + { 0x03, 0x00, -1, 0x00, 0x001a, 0x0002 }, + { 0x03, 0x00, -1, 0x01, 0x001a, 0x0003 }, + { 0x03, 0x00, -1, 0x02, 0x001a, 0x0004 }, + { 0x03, 0x00, -1, 0x03, 0x001a, 0x0005 }, + { 0x03, 0x00, -1, 0x03, 0x001a, 0x0006 }, + { 0x03, 0x00, -1, 0x03, 0x001a, 0x0007 }, + { 0x03, 0x00, -1, 0x03, 0x001a, 0x0008 }, + { 0x03, 0x00, -1, 0x03, 0x001a, 0x0009 }, + { 0x04, 0x00, -1, 0x00, 0x0022, 0x0002 }, + { 0x04, 0x00, -1, 0x01, 0x0022, 0x0003 }, + { 0x04, 0x00, -1, 0x02, 0x0022, 0x0004 }, + { 0x04, 0x00, -1, 0x03, 0x0022, 0x0005 }, + { 0x04, 0x00, -1, 0x03, 0x0022, 0x0006 }, + { 0x04, 0x00, -1, 0x03, 0x0022, 0x0007 }, + { 0x04, 0x00, -1, 0x03, 0x0022, 0x0008 }, + { 0x04, 0x00, -1, 0x03, 0x0022, 0x0009 }, + { 0x04, 0x00, -1, 0x00, 0x0032, 0x0002 }, + { 0x04, 0x00, -1, 0x01, 0x0032, 0x0003 }, + { 0x04, 0x00, -1, 0x02, 0x0032, 0x0004 }, + { 0x04, 0x00, -1, 0x03, 0x0032, 0x0005 }, + { 0x04, 0x00, -1, 0x03, 0x0032, 0x0006 }, + { 0x04, 0x00, -1, 0x03, 0x0032, 0x0007 }, + { 0x04, 0x00, -1, 0x03, 0x0032, 0x0008 }, + { 0x04, 0x00, -1, 0x03, 0x0032, 0x0009 }, + { 0x05, 0x00, -1, 0x00, 0x0042, 0x0002 }, + { 0x05, 0x00, -1, 0x01, 0x0042, 0x0003 }, + { 0x05, 0x00, -1, 0x02, 0x0042, 0x0004 }, + { 0x05, 0x00, -1, 0x03, 0x0042, 0x0005 }, + { 0x05, 0x00, -1, 0x03, 0x0042, 0x0006 }, + { 0x05, 0x00, -1, 0x03, 0x0042, 0x0007 }, + { 0x05, 0x00, -1, 0x03, 0x0042, 0x0008 }, + { 0x05, 0x00, -1, 0x03, 0x0042, 0x0009 }, + { 0x05, 0x00, -1, 0x00, 0x0062, 0x0002 }, + { 0x05, 0x00, -1, 0x01, 0x0062, 0x0003 }, + { 0x05, 0x00, -1, 0x02, 0x0062, 0x0004 }, + { 0x05, 0x00, -1, 0x03, 0x0062, 0x0005 }, + { 0x05, 0x00, -1, 0x03, 0x0062, 0x0006 }, + { 0x05, 0x00, -1, 0x03, 0x0062, 0x0007 }, + { 0x05, 0x00, -1, 0x03, 0x0062, 0x0008 }, + { 0x05, 0x00, -1, 0x03, 0x0062, 0x0009 }, + { 0x02, 0x01, -1, 0x03, 0x000a, 0x000a }, + { 0x02, 0x01, -1, 0x03, 0x000a, 0x000c }, + { 0x02, 0x02, -1, 0x03, 0x000a, 0x000e }, + { 0x02, 0x02, -1, 0x03, 0x000a, 0x0012 }, + { 0x02, 0x03, -1, 0x03, 0x000a, 0x0016 }, + { 0x02, 0x03, -1, 0x03, 0x000a, 0x001e }, + { 0x02, 0x04, -1, 0x03, 0x000a, 0x0026 }, + { 0x02, 0x04, -1, 0x03, 0x000a, 0x0036 }, + { 0x02, 0x01, -1, 0x03, 0x000e, 0x000a }, + { 0x02, 0x01, -1, 0x03, 0x000e, 0x000c }, + { 0x02, 0x02, -1, 0x03, 0x000e, 0x000e }, + { 0x02, 0x02, -1, 0x03, 0x000e, 0x0012 }, + { 0x02, 0x03, -1, 0x03, 0x000e, 0x0016 }, + { 0x02, 0x03, -1, 0x03, 0x000e, 0x001e }, + { 0x02, 0x04, -1, 0x03, 0x000e, 0x0026 }, + { 0x02, 0x04, -1, 0x03, 0x000e, 0x0036 }, + { 0x03, 0x01, -1, 0x03, 0x0012, 0x000a }, + { 0x03, 0x01, -1, 0x03, 0x0012, 0x000c }, + { 0x03, 0x02, -1, 0x03, 0x0012, 0x000e }, + { 0x03, 0x02, -1, 0x03, 0x0012, 0x0012 }, + { 0x03, 0x03, -1, 0x03, 0x0012, 0x0016 }, + { 0x03, 0x03, -1, 0x03, 0x0012, 0x001e }, + { 0x03, 0x04, -1, 0x03, 0x0012, 0x0026 }, + { 0x03, 0x04, -1, 0x03, 0x0012, 0x0036 }, + { 0x03, 0x01, -1, 0x03, 0x001a, 0x000a }, + { 0x03, 0x01, -1, 0x03, 0x001a, 0x000c }, + { 0x03, 0x02, -1, 0x03, 0x001a, 0x000e }, + { 0x03, 0x02, -1, 0x03, 0x001a, 0x0012 }, + { 0x03, 0x03, -1, 0x03, 0x001a, 0x0016 }, + { 0x03, 0x03, -1, 0x03, 0x001a, 0x001e }, + { 0x03, 0x04, -1, 0x03, 0x001a, 0x0026 }, + { 0x03, 0x04, -1, 0x03, 0x001a, 0x0036 }, + { 0x04, 0x01, -1, 0x03, 0x0022, 0x000a }, + { 0x04, 0x01, -1, 0x03, 0x0022, 0x000c }, + { 0x04, 0x02, -1, 0x03, 0x0022, 0x000e }, + { 0x04, 0x02, -1, 0x03, 0x0022, 0x0012 }, + { 0x04, 0x03, -1, 0x03, 0x0022, 0x0016 }, + { 0x04, 0x03, -1, 0x03, 0x0022, 0x001e }, + { 0x04, 0x04, -1, 0x03, 0x0022, 0x0026 }, + { 0x04, 0x04, -1, 0x03, 0x0022, 0x0036 }, + { 0x04, 0x01, -1, 0x03, 0x0032, 0x000a }, + { 0x04, 0x01, -1, 0x03, 0x0032, 0x000c }, + { 0x04, 0x02, -1, 0x03, 0x0032, 0x000e }, + { 0x04, 0x02, -1, 0x03, 0x0032, 0x0012 }, + { 0x04, 0x03, -1, 0x03, 0x0032, 0x0016 }, + { 0x04, 0x03, -1, 0x03, 0x0032, 0x001e }, + { 0x04, 0x04, -1, 0x03, 0x0032, 0x0026 }, + { 0x04, 0x04, -1, 0x03, 0x0032, 0x0036 }, + { 0x05, 0x01, -1, 0x03, 0x0042, 0x000a }, + { 0x05, 0x01, -1, 0x03, 0x0042, 0x000c }, + { 0x05, 0x02, -1, 0x03, 0x0042, 0x000e }, + { 0x05, 0x02, -1, 0x03, 0x0042, 0x0012 }, + { 0x05, 0x03, -1, 0x03, 0x0042, 0x0016 }, + { 0x05, 0x03, -1, 0x03, 0x0042, 0x001e }, + { 0x05, 0x04, -1, 0x03, 0x0042, 0x0026 }, + { 0x05, 0x04, -1, 0x03, 0x0042, 0x0036 }, + { 0x05, 0x01, -1, 0x03, 0x0062, 0x000a }, + { 0x05, 0x01, -1, 0x03, 0x0062, 0x000c }, + { 0x05, 0x02, -1, 0x03, 0x0062, 0x000e }, + { 0x05, 0x02, -1, 0x03, 0x0062, 0x0012 }, + { 0x05, 0x03, -1, 0x03, 0x0062, 0x0016 }, + { 0x05, 0x03, -1, 0x03, 0x0062, 0x001e }, + { 0x05, 0x04, -1, 0x03, 0x0062, 0x0026 }, + { 0x05, 0x04, -1, 0x03, 0x0062, 0x0036 }, + { 0x00, 0x05, -1, 0x03, 0x0000, 0x0046 }, + { 0x00, 0x05, -1, 0x03, 0x0000, 0x0066 }, + { 0x00, 0x06, -1, 0x03, 0x0000, 0x0086 }, + { 0x00, 0x07, -1, 0x03, 0x0000, 0x00c6 }, + { 0x00, 0x08, -1, 0x03, 0x0000, 0x0146 }, + { 0x00, 0x09, -1, 0x03, 0x0000, 0x0246 }, + { 0x00, 0x0a, -1, 0x03, 0x0000, 0x0446 }, + { 0x00, 0x18, -1, 0x03, 0x0000, 0x0846 }, + { 0x00, 0x05, -1, 0x03, 0x0001, 0x0046 }, + { 0x00, 0x05, -1, 0x03, 0x0001, 0x0066 }, + { 0x00, 0x06, -1, 0x03, 0x0001, 0x0086 }, + { 0x00, 0x07, -1, 0x03, 0x0001, 0x00c6 }, + { 0x00, 0x08, -1, 0x03, 0x0001, 0x0146 }, + { 0x00, 0x09, -1, 0x03, 0x0001, 0x0246 }, + { 0x00, 0x0a, -1, 0x03, 0x0001, 0x0446 }, + { 0x00, 0x18, -1, 0x03, 0x0001, 0x0846 }, + { 0x00, 0x05, -1, 0x03, 0x0002, 0x0046 }, + { 0x00, 0x05, -1, 0x03, 0x0002, 0x0066 }, + { 0x00, 0x06, -1, 0x03, 0x0002, 0x0086 }, + { 0x00, 0x07, -1, 0x03, 0x0002, 0x00c6 }, + { 0x00, 0x08, -1, 0x03, 0x0002, 0x0146 }, + { 0x00, 0x09, -1, 0x03, 0x0002, 0x0246 }, + { 0x00, 0x0a, -1, 0x03, 0x0002, 0x0446 }, + { 0x00, 0x18, -1, 0x03, 0x0002, 0x0846 }, + { 0x00, 0x05, -1, 0x03, 0x0003, 0x0046 }, + { 0x00, 0x05, -1, 0x03, 0x0003, 0x0066 }, + { 0x00, 0x06, -1, 0x03, 0x0003, 0x0086 }, + { 0x00, 0x07, -1, 0x03, 0x0003, 0x00c6 }, + { 0x00, 0x08, -1, 0x03, 0x0003, 0x0146 }, + { 0x00, 0x09, -1, 0x03, 0x0003, 0x0246 }, + { 0x00, 0x0a, -1, 0x03, 0x0003, 0x0446 }, + { 0x00, 0x18, -1, 0x03, 0x0003, 0x0846 }, + { 0x00, 0x05, -1, 0x03, 0x0004, 0x0046 }, + { 0x00, 0x05, -1, 0x03, 0x0004, 0x0066 }, + { 0x00, 0x06, -1, 0x03, 0x0004, 0x0086 }, + { 0x00, 0x07, -1, 0x03, 0x0004, 0x00c6 }, + { 0x00, 0x08, -1, 0x03, 0x0004, 0x0146 }, + { 0x00, 0x09, -1, 0x03, 0x0004, 0x0246 }, + { 0x00, 0x0a, -1, 0x03, 0x0004, 0x0446 }, + { 0x00, 0x18, -1, 0x03, 0x0004, 0x0846 }, + { 0x00, 0x05, -1, 0x03, 0x0005, 0x0046 }, + { 0x00, 0x05, -1, 0x03, 0x0005, 0x0066 }, + { 0x00, 0x06, -1, 0x03, 0x0005, 0x0086 }, + { 0x00, 0x07, -1, 0x03, 0x0005, 0x00c6 }, + { 0x00, 0x08, -1, 0x03, 0x0005, 0x0146 }, + { 0x00, 0x09, -1, 0x03, 0x0005, 0x0246 }, + { 0x00, 0x0a, -1, 0x03, 0x0005, 0x0446 }, + { 0x00, 0x18, -1, 0x03, 0x0005, 0x0846 }, + { 0x01, 0x05, -1, 0x03, 0x0006, 0x0046 }, + { 0x01, 0x05, -1, 0x03, 0x0006, 0x0066 }, + { 0x01, 0x06, -1, 0x03, 0x0006, 0x0086 }, + { 0x01, 0x07, -1, 0x03, 0x0006, 0x00c6 }, + { 0x01, 0x08, -1, 0x03, 0x0006, 0x0146 }, + { 0x01, 0x09, -1, 0x03, 0x0006, 0x0246 }, + { 0x01, 0x0a, -1, 0x03, 0x0006, 0x0446 }, + { 0x01, 0x18, -1, 0x03, 0x0006, 0x0846 }, + { 0x01, 0x05, -1, 0x03, 0x0008, 0x0046 }, + { 0x01, 0x05, -1, 0x03, 0x0008, 0x0066 }, + { 0x01, 0x06, -1, 0x03, 0x0008, 0x0086 }, + { 0x01, 0x07, -1, 0x03, 0x0008, 0x00c6 }, + { 0x01, 0x08, -1, 0x03, 0x0008, 0x0146 }, + { 0x01, 0x09, -1, 0x03, 0x0008, 0x0246 }, + { 0x01, 0x0a, -1, 0x03, 0x0008, 0x0446 }, + { 0x01, 0x18, -1, 0x03, 0x0008, 0x0846 }, + { 0x06, 0x00, -1, 0x00, 0x0082, 0x0002 }, + { 0x06, 0x00, -1, 0x01, 0x0082, 0x0003 }, + { 0x06, 0x00, -1, 0x02, 0x0082, 0x0004 }, + { 0x06, 0x00, -1, 0x03, 0x0082, 0x0005 }, + { 0x06, 0x00, -1, 0x03, 0x0082, 0x0006 }, + { 0x06, 0x00, -1, 0x03, 0x0082, 0x0007 }, + { 0x06, 0x00, -1, 0x03, 0x0082, 0x0008 }, + { 0x06, 0x00, -1, 0x03, 0x0082, 0x0009 }, + { 0x07, 0x00, -1, 0x00, 0x00c2, 0x0002 }, + { 0x07, 0x00, -1, 0x01, 0x00c2, 0x0003 }, + { 0x07, 0x00, -1, 0x02, 0x00c2, 0x0004 }, + { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0005 }, + { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0006 }, + { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0007 }, + { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0008 }, + { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0009 }, + { 0x08, 0x00, -1, 0x00, 0x0142, 0x0002 }, + { 0x08, 0x00, -1, 0x01, 0x0142, 0x0003 }, + { 0x08, 0x00, -1, 0x02, 0x0142, 0x0004 }, + { 0x08, 0x00, -1, 0x03, 0x0142, 0x0005 }, + { 0x08, 0x00, -1, 0x03, 0x0142, 0x0006 }, + { 0x08, 0x00, -1, 0x03, 0x0142, 0x0007 }, + { 0x08, 0x00, -1, 0x03, 0x0142, 0x0008 }, + { 0x08, 0x00, -1, 0x03, 0x0142, 0x0009 }, + { 0x09, 0x00, -1, 0x00, 0x0242, 0x0002 }, + { 0x09, 0x00, -1, 0x01, 0x0242, 0x0003 }, + { 0x09, 0x00, -1, 0x02, 0x0242, 0x0004 }, + { 0x09, 0x00, -1, 0x03, 0x0242, 0x0005 }, + { 0x09, 0x00, -1, 0x03, 0x0242, 0x0006 }, + { 0x09, 0x00, -1, 0x03, 0x0242, 0x0007 }, + { 0x09, 0x00, -1, 0x03, 0x0242, 0x0008 }, + { 0x09, 0x00, -1, 0x03, 0x0242, 0x0009 }, + { 0x0a, 0x00, -1, 0x00, 0x0442, 0x0002 }, + { 0x0a, 0x00, -1, 0x01, 0x0442, 0x0003 }, + { 0x0a, 0x00, -1, 0x02, 0x0442, 0x0004 }, + { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0005 }, + { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0006 }, + { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0007 }, + { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0008 }, + { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0009 }, + { 0x0c, 0x00, -1, 0x00, 0x0842, 0x0002 }, + { 0x0c, 0x00, -1, 0x01, 0x0842, 0x0003 }, + { 0x0c, 0x00, -1, 0x02, 0x0842, 0x0004 }, + { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0005 }, + { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0006 }, + { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0007 }, + { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0008 }, + { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0009 }, + { 0x0e, 0x00, -1, 0x00, 0x1842, 0x0002 }, + { 0x0e, 0x00, -1, 0x01, 0x1842, 0x0003 }, + { 0x0e, 0x00, -1, 0x02, 0x1842, 0x0004 }, + { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0005 }, + { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0006 }, + { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0007 }, + { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0008 }, + { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0009 }, + { 0x18, 0x00, -1, 0x00, 0x5842, 0x0002 }, + { 0x18, 0x00, -1, 0x01, 0x5842, 0x0003 }, + { 0x18, 0x00, -1, 0x02, 0x5842, 0x0004 }, + { 0x18, 0x00, -1, 0x03, 0x5842, 0x0005 }, + { 0x18, 0x00, -1, 0x03, 0x5842, 0x0006 }, + { 0x18, 0x00, -1, 0x03, 0x5842, 0x0007 }, + { 0x18, 0x00, -1, 0x03, 0x5842, 0x0008 }, + { 0x18, 0x00, -1, 0x03, 0x5842, 0x0009 }, + { 0x02, 0x05, -1, 0x03, 0x000a, 0x0046 }, + { 0x02, 0x05, -1, 0x03, 0x000a, 0x0066 }, + { 0x02, 0x06, -1, 0x03, 0x000a, 0x0086 }, + { 0x02, 0x07, -1, 0x03, 0x000a, 0x00c6 }, + { 0x02, 0x08, -1, 0x03, 0x000a, 0x0146 }, + { 0x02, 0x09, -1, 0x03, 0x000a, 0x0246 }, + { 0x02, 0x0a, -1, 0x03, 0x000a, 0x0446 }, + { 0x02, 0x18, -1, 0x03, 0x000a, 0x0846 }, + { 0x02, 0x05, -1, 0x03, 0x000e, 0x0046 }, + { 0x02, 0x05, -1, 0x03, 0x000e, 0x0066 }, + { 0x02, 0x06, -1, 0x03, 0x000e, 0x0086 }, + { 0x02, 0x07, -1, 0x03, 0x000e, 0x00c6 }, + { 0x02, 0x08, -1, 0x03, 0x000e, 0x0146 }, + { 0x02, 0x09, -1, 0x03, 0x000e, 0x0246 }, + { 0x02, 0x0a, -1, 0x03, 0x000e, 0x0446 }, + { 0x02, 0x18, -1, 0x03, 0x000e, 0x0846 }, + { 0x03, 0x05, -1, 0x03, 0x0012, 0x0046 }, + { 0x03, 0x05, -1, 0x03, 0x0012, 0x0066 }, + { 0x03, 0x06, -1, 0x03, 0x0012, 0x0086 }, + { 0x03, 0x07, -1, 0x03, 0x0012, 0x00c6 }, + { 0x03, 0x08, -1, 0x03, 0x0012, 0x0146 }, + { 0x03, 0x09, -1, 0x03, 0x0012, 0x0246 }, + { 0x03, 0x0a, -1, 0x03, 0x0012, 0x0446 }, + { 0x03, 0x18, -1, 0x03, 0x0012, 0x0846 }, + { 0x03, 0x05, -1, 0x03, 0x001a, 0x0046 }, + { 0x03, 0x05, -1, 0x03, 0x001a, 0x0066 }, + { 0x03, 0x06, -1, 0x03, 0x001a, 0x0086 }, + { 0x03, 0x07, -1, 0x03, 0x001a, 0x00c6 }, + { 0x03, 0x08, -1, 0x03, 0x001a, 0x0146 }, + { 0x03, 0x09, -1, 0x03, 0x001a, 0x0246 }, + { 0x03, 0x0a, -1, 0x03, 0x001a, 0x0446 }, + { 0x03, 0x18, -1, 0x03, 0x001a, 0x0846 }, + { 0x04, 0x05, -1, 0x03, 0x0022, 0x0046 }, + { 0x04, 0x05, -1, 0x03, 0x0022, 0x0066 }, + { 0x04, 0x06, -1, 0x03, 0x0022, 0x0086 }, + { 0x04, 0x07, -1, 0x03, 0x0022, 0x00c6 }, + { 0x04, 0x08, -1, 0x03, 0x0022, 0x0146 }, + { 0x04, 0x09, -1, 0x03, 0x0022, 0x0246 }, + { 0x04, 0x0a, -1, 0x03, 0x0022, 0x0446 }, + { 0x04, 0x18, -1, 0x03, 0x0022, 0x0846 }, + { 0x04, 0x05, -1, 0x03, 0x0032, 0x0046 }, + { 0x04, 0x05, -1, 0x03, 0x0032, 0x0066 }, + { 0x04, 0x06, -1, 0x03, 0x0032, 0x0086 }, + { 0x04, 0x07, -1, 0x03, 0x0032, 0x00c6 }, + { 0x04, 0x08, -1, 0x03, 0x0032, 0x0146 }, + { 0x04, 0x09, -1, 0x03, 0x0032, 0x0246 }, + { 0x04, 0x0a, -1, 0x03, 0x0032, 0x0446 }, + { 0x04, 0x18, -1, 0x03, 0x0032, 0x0846 }, + { 0x05, 0x05, -1, 0x03, 0x0042, 0x0046 }, + { 0x05, 0x05, -1, 0x03, 0x0042, 0x0066 }, + { 0x05, 0x06, -1, 0x03, 0x0042, 0x0086 }, + { 0x05, 0x07, -1, 0x03, 0x0042, 0x00c6 }, + { 0x05, 0x08, -1, 0x03, 0x0042, 0x0146 }, + { 0x05, 0x09, -1, 0x03, 0x0042, 0x0246 }, + { 0x05, 0x0a, -1, 0x03, 0x0042, 0x0446 }, + { 0x05, 0x18, -1, 0x03, 0x0042, 0x0846 }, + { 0x05, 0x05, -1, 0x03, 0x0062, 0x0046 }, + { 0x05, 0x05, -1, 0x03, 0x0062, 0x0066 }, + { 0x05, 0x06, -1, 0x03, 0x0062, 0x0086 }, + { 0x05, 0x07, -1, 0x03, 0x0062, 0x00c6 }, + { 0x05, 0x08, -1, 0x03, 0x0062, 0x0146 }, + { 0x05, 0x09, -1, 0x03, 0x0062, 0x0246 }, + { 0x05, 0x0a, -1, 0x03, 0x0062, 0x0446 }, + { 0x05, 0x18, -1, 0x03, 0x0062, 0x0846 }, + { 0x06, 0x01, -1, 0x03, 0x0082, 0x000a }, + { 0x06, 0x01, -1, 0x03, 0x0082, 0x000c }, + { 0x06, 0x02, -1, 0x03, 0x0082, 0x000e }, + { 0x06, 0x02, -1, 0x03, 0x0082, 0x0012 }, + { 0x06, 0x03, -1, 0x03, 0x0082, 0x0016 }, + { 0x06, 0x03, -1, 0x03, 0x0082, 0x001e }, + { 0x06, 0x04, -1, 0x03, 0x0082, 0x0026 }, + { 0x06, 0x04, -1, 0x03, 0x0082, 0x0036 }, + { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000a }, + { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000c }, + { 0x07, 0x02, -1, 0x03, 0x00c2, 0x000e }, + { 0x07, 0x02, -1, 0x03, 0x00c2, 0x0012 }, + { 0x07, 0x03, -1, 0x03, 0x00c2, 0x0016 }, + { 0x07, 0x03, -1, 0x03, 0x00c2, 0x001e }, + { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0026 }, + { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0036 }, + { 0x08, 0x01, -1, 0x03, 0x0142, 0x000a }, + { 0x08, 0x01, -1, 0x03, 0x0142, 0x000c }, + { 0x08, 0x02, -1, 0x03, 0x0142, 0x000e }, + { 0x08, 0x02, -1, 0x03, 0x0142, 0x0012 }, + { 0x08, 0x03, -1, 0x03, 0x0142, 0x0016 }, + { 0x08, 0x03, -1, 0x03, 0x0142, 0x001e }, + { 0x08, 0x04, -1, 0x03, 0x0142, 0x0026 }, + { 0x08, 0x04, -1, 0x03, 0x0142, 0x0036 }, + { 0x09, 0x01, -1, 0x03, 0x0242, 0x000a }, + { 0x09, 0x01, -1, 0x03, 0x0242, 0x000c }, + { 0x09, 0x02, -1, 0x03, 0x0242, 0x000e }, + { 0x09, 0x02, -1, 0x03, 0x0242, 0x0012 }, + { 0x09, 0x03, -1, 0x03, 0x0242, 0x0016 }, + { 0x09, 0x03, -1, 0x03, 0x0242, 0x001e }, + { 0x09, 0x04, -1, 0x03, 0x0242, 0x0026 }, + { 0x09, 0x04, -1, 0x03, 0x0242, 0x0036 }, + { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000a }, + { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000c }, + { 0x0a, 0x02, -1, 0x03, 0x0442, 0x000e }, + { 0x0a, 0x02, -1, 0x03, 0x0442, 0x0012 }, + { 0x0a, 0x03, -1, 0x03, 0x0442, 0x0016 }, + { 0x0a, 0x03, -1, 0x03, 0x0442, 0x001e }, + { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0026 }, + { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0036 }, + { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000a }, + { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000c }, + { 0x0c, 0x02, -1, 0x03, 0x0842, 0x000e }, + { 0x0c, 0x02, -1, 0x03, 0x0842, 0x0012 }, + { 0x0c, 0x03, -1, 0x03, 0x0842, 0x0016 }, + { 0x0c, 0x03, -1, 0x03, 0x0842, 0x001e }, + { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0026 }, + { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0036 }, + { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000a }, + { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000c }, + { 0x0e, 0x02, -1, 0x03, 0x1842, 0x000e }, + { 0x0e, 0x02, -1, 0x03, 0x1842, 0x0012 }, + { 0x0e, 0x03, -1, 0x03, 0x1842, 0x0016 }, + { 0x0e, 0x03, -1, 0x03, 0x1842, 0x001e }, + { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0026 }, + { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0036 }, + { 0x18, 0x01, -1, 0x03, 0x5842, 0x000a }, + { 0x18, 0x01, -1, 0x03, 0x5842, 0x000c }, + { 0x18, 0x02, -1, 0x03, 0x5842, 0x000e }, + { 0x18, 0x02, -1, 0x03, 0x5842, 0x0012 }, + { 0x18, 0x03, -1, 0x03, 0x5842, 0x0016 }, + { 0x18, 0x03, -1, 0x03, 0x5842, 0x001e }, + { 0x18, 0x04, -1, 0x03, 0x5842, 0x0026 }, + { 0x18, 0x04, -1, 0x03, 0x5842, 0x0036 }, + { 0x06, 0x05, -1, 0x03, 0x0082, 0x0046 }, + { 0x06, 0x05, -1, 0x03, 0x0082, 0x0066 }, + { 0x06, 0x06, -1, 0x03, 0x0082, 0x0086 }, + { 0x06, 0x07, -1, 0x03, 0x0082, 0x00c6 }, + { 0x06, 0x08, -1, 0x03, 0x0082, 0x0146 }, + { 0x06, 0x09, -1, 0x03, 0x0082, 0x0246 }, + { 0x06, 0x0a, -1, 0x03, 0x0082, 0x0446 }, + { 0x06, 0x18, -1, 0x03, 0x0082, 0x0846 }, + { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0046 }, + { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0066 }, + { 0x07, 0x06, -1, 0x03, 0x00c2, 0x0086 }, + { 0x07, 0x07, -1, 0x03, 0x00c2, 0x00c6 }, + { 0x07, 0x08, -1, 0x03, 0x00c2, 0x0146 }, + { 0x07, 0x09, -1, 0x03, 0x00c2, 0x0246 }, + { 0x07, 0x0a, -1, 0x03, 0x00c2, 0x0446 }, + { 0x07, 0x18, -1, 0x03, 0x00c2, 0x0846 }, + { 0x08, 0x05, -1, 0x03, 0x0142, 0x0046 }, + { 0x08, 0x05, -1, 0x03, 0x0142, 0x0066 }, + { 0x08, 0x06, -1, 0x03, 0x0142, 0x0086 }, + { 0x08, 0x07, -1, 0x03, 0x0142, 0x00c6 }, + { 0x08, 0x08, -1, 0x03, 0x0142, 0x0146 }, + { 0x08, 0x09, -1, 0x03, 0x0142, 0x0246 }, + { 0x08, 0x0a, -1, 0x03, 0x0142, 0x0446 }, + { 0x08, 0x18, -1, 0x03, 0x0142, 0x0846 }, + { 0x09, 0x05, -1, 0x03, 0x0242, 0x0046 }, + { 0x09, 0x05, -1, 0x03, 0x0242, 0x0066 }, + { 0x09, 0x06, -1, 0x03, 0x0242, 0x0086 }, + { 0x09, 0x07, -1, 0x03, 0x0242, 0x00c6 }, + { 0x09, 0x08, -1, 0x03, 0x0242, 0x0146 }, + { 0x09, 0x09, -1, 0x03, 0x0242, 0x0246 }, + { 0x09, 0x0a, -1, 0x03, 0x0242, 0x0446 }, + { 0x09, 0x18, -1, 0x03, 0x0242, 0x0846 }, + { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0046 }, + { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0066 }, + { 0x0a, 0x06, -1, 0x03, 0x0442, 0x0086 }, + { 0x0a, 0x07, -1, 0x03, 0x0442, 0x00c6 }, + { 0x0a, 0x08, -1, 0x03, 0x0442, 0x0146 }, + { 0x0a, 0x09, -1, 0x03, 0x0442, 0x0246 }, + { 0x0a, 0x0a, -1, 0x03, 0x0442, 0x0446 }, + { 0x0a, 0x18, -1, 0x03, 0x0442, 0x0846 }, + { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0046 }, + { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0066 }, + { 0x0c, 0x06, -1, 0x03, 0x0842, 0x0086 }, + { 0x0c, 0x07, -1, 0x03, 0x0842, 0x00c6 }, + { 0x0c, 0x08, -1, 0x03, 0x0842, 0x0146 }, + { 0x0c, 0x09, -1, 0x03, 0x0842, 0x0246 }, + { 0x0c, 0x0a, -1, 0x03, 0x0842, 0x0446 }, + { 0x0c, 0x18, -1, 0x03, 0x0842, 0x0846 }, + { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0046 }, + { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0066 }, + { 0x0e, 0x06, -1, 0x03, 0x1842, 0x0086 }, + { 0x0e, 0x07, -1, 0x03, 0x1842, 0x00c6 }, + { 0x0e, 0x08, -1, 0x03, 0x1842, 0x0146 }, + { 0x0e, 0x09, -1, 0x03, 0x1842, 0x0246 }, + { 0x0e, 0x0a, -1, 0x03, 0x1842, 0x0446 }, + { 0x0e, 0x18, -1, 0x03, 0x1842, 0x0846 }, + { 0x18, 0x05, -1, 0x03, 0x5842, 0x0046 }, + { 0x18, 0x05, -1, 0x03, 0x5842, 0x0066 }, + { 0x18, 0x06, -1, 0x03, 0x5842, 0x0086 }, + { 0x18, 0x07, -1, 0x03, 0x5842, 0x00c6 }, + { 0x18, 0x08, -1, 0x03, 0x5842, 0x0146 }, + { 0x18, 0x09, -1, 0x03, 0x5842, 0x0246 }, + { 0x18, 0x0a, -1, 0x03, 0x5842, 0x0446 }, + { 0x18, 0x18, -1, 0x03, 0x5842, 0x0846 }, +}; #endif /* BROTLI_DEC_PREFIX_H_ */ diff --git a/icecat/modules/brotli/dec/prefix_inc.h b/icecat/modules/brotli/dec/prefix_inc.h deleted file mode 100644 index 91d81b846b..0000000000 --- a/icecat/modules/brotli/dec/prefix_inc.h +++ /dev/null @@ -1,707 +0,0 @@ -const BROTLI_MODEL("small") -CmdLutElement kCmdLut[BROTLI_NUM_COMMAND_SYMBOLS] = { - { 0x00, 0x00, 0, 0x00, 0x0000, 0x0002 }, - { 0x00, 0x00, 0, 0x01, 0x0000, 0x0003 }, - { 0x00, 0x00, 0, 0x02, 0x0000, 0x0004 }, - { 0x00, 0x00, 0, 0x03, 0x0000, 0x0005 }, - { 0x00, 0x00, 0, 0x03, 0x0000, 0x0006 }, - { 0x00, 0x00, 0, 0x03, 0x0000, 0x0007 }, - { 0x00, 0x00, 0, 0x03, 0x0000, 0x0008 }, - { 0x00, 0x00, 0, 0x03, 0x0000, 0x0009 }, - { 0x00, 0x00, 0, 0x00, 0x0001, 0x0002 }, - { 0x00, 0x00, 0, 0x01, 0x0001, 0x0003 }, - { 0x00, 0x00, 0, 0x02, 0x0001, 0x0004 }, - { 0x00, 0x00, 0, 0x03, 0x0001, 0x0005 }, - { 0x00, 0x00, 0, 0x03, 0x0001, 0x0006 }, - { 0x00, 0x00, 0, 0x03, 0x0001, 0x0007 }, - { 0x00, 0x00, 0, 0x03, 0x0001, 0x0008 }, - { 0x00, 0x00, 0, 0x03, 0x0001, 0x0009 }, - { 0x00, 0x00, 0, 0x00, 0x0002, 0x0002 }, - { 0x00, 0x00, 0, 0x01, 0x0002, 0x0003 }, - { 0x00, 0x00, 0, 0x02, 0x0002, 0x0004 }, - { 0x00, 0x00, 0, 0x03, 0x0002, 0x0005 }, - { 0x00, 0x00, 0, 0x03, 0x0002, 0x0006 }, - { 0x00, 0x00, 0, 0x03, 0x0002, 0x0007 }, - { 0x00, 0x00, 0, 0x03, 0x0002, 0x0008 }, - { 0x00, 0x00, 0, 0x03, 0x0002, 0x0009 }, - { 0x00, 0x00, 0, 0x00, 0x0003, 0x0002 }, - { 0x00, 0x00, 0, 0x01, 0x0003, 0x0003 }, - { 0x00, 0x00, 0, 0x02, 0x0003, 0x0004 }, - { 0x00, 0x00, 0, 0x03, 0x0003, 0x0005 }, - { 0x00, 0x00, 0, 0x03, 0x0003, 0x0006 }, - { 0x00, 0x00, 0, 0x03, 0x0003, 0x0007 }, - { 0x00, 0x00, 0, 0x03, 0x0003, 0x0008 }, - { 0x00, 0x00, 0, 0x03, 0x0003, 0x0009 }, - { 0x00, 0x00, 0, 0x00, 0x0004, 0x0002 }, - { 0x00, 0x00, 0, 0x01, 0x0004, 0x0003 }, - { 0x00, 0x00, 0, 0x02, 0x0004, 0x0004 }, - { 0x00, 0x00, 0, 0x03, 0x0004, 0x0005 }, - { 0x00, 0x00, 0, 0x03, 0x0004, 0x0006 }, - { 0x00, 0x00, 0, 0x03, 0x0004, 0x0007 }, - { 0x00, 0x00, 0, 0x03, 0x0004, 0x0008 }, - { 0x00, 0x00, 0, 0x03, 0x0004, 0x0009 }, - { 0x00, 0x00, 0, 0x00, 0x0005, 0x0002 }, - { 0x00, 0x00, 0, 0x01, 0x0005, 0x0003 }, - { 0x00, 0x00, 0, 0x02, 0x0005, 0x0004 }, - { 0x00, 0x00, 0, 0x03, 0x0005, 0x0005 }, - { 0x00, 0x00, 0, 0x03, 0x0005, 0x0006 }, - { 0x00, 0x00, 0, 0x03, 0x0005, 0x0007 }, - { 0x00, 0x00, 0, 0x03, 0x0005, 0x0008 }, - { 0x00, 0x00, 0, 0x03, 0x0005, 0x0009 }, - { 0x01, 0x00, 0, 0x00, 0x0006, 0x0002 }, - { 0x01, 0x00, 0, 0x01, 0x0006, 0x0003 }, - { 0x01, 0x00, 0, 0x02, 0x0006, 0x0004 }, - { 0x01, 0x00, 0, 0x03, 0x0006, 0x0005 }, - { 0x01, 0x00, 0, 0x03, 0x0006, 0x0006 }, - { 0x01, 0x00, 0, 0x03, 0x0006, 0x0007 }, - { 0x01, 0x00, 0, 0x03, 0x0006, 0x0008 }, - { 0x01, 0x00, 0, 0x03, 0x0006, 0x0009 }, - { 0x01, 0x00, 0, 0x00, 0x0008, 0x0002 }, - { 0x01, 0x00, 0, 0x01, 0x0008, 0x0003 }, - { 0x01, 0x00, 0, 0x02, 0x0008, 0x0004 }, - { 0x01, 0x00, 0, 0x03, 0x0008, 0x0005 }, - { 0x01, 0x00, 0, 0x03, 0x0008, 0x0006 }, - { 0x01, 0x00, 0, 0x03, 0x0008, 0x0007 }, - { 0x01, 0x00, 0, 0x03, 0x0008, 0x0008 }, - { 0x01, 0x00, 0, 0x03, 0x0008, 0x0009 }, - { 0x00, 0x01, 0, 0x03, 0x0000, 0x000a }, - { 0x00, 0x01, 0, 0x03, 0x0000, 0x000c }, - { 0x00, 0x02, 0, 0x03, 0x0000, 0x000e }, - { 0x00, 0x02, 0, 0x03, 0x0000, 0x0012 }, - { 0x00, 0x03, 0, 0x03, 0x0000, 0x0016 }, - { 0x00, 0x03, 0, 0x03, 0x0000, 0x001e }, - { 0x00, 0x04, 0, 0x03, 0x0000, 0x0026 }, - { 0x00, 0x04, 0, 0x03, 0x0000, 0x0036 }, - { 0x00, 0x01, 0, 0x03, 0x0001, 0x000a }, - { 0x00, 0x01, 0, 0x03, 0x0001, 0x000c }, - { 0x00, 0x02, 0, 0x03, 0x0001, 0x000e }, - { 0x00, 0x02, 0, 0x03, 0x0001, 0x0012 }, - { 0x00, 0x03, 0, 0x03, 0x0001, 0x0016 }, - { 0x00, 0x03, 0, 0x03, 0x0001, 0x001e }, - { 0x00, 0x04, 0, 0x03, 0x0001, 0x0026 }, - { 0x00, 0x04, 0, 0x03, 0x0001, 0x0036 }, - { 0x00, 0x01, 0, 0x03, 0x0002, 0x000a }, - { 0x00, 0x01, 0, 0x03, 0x0002, 0x000c }, - { 0x00, 0x02, 0, 0x03, 0x0002, 0x000e }, - { 0x00, 0x02, 0, 0x03, 0x0002, 0x0012 }, - { 0x00, 0x03, 0, 0x03, 0x0002, 0x0016 }, - { 0x00, 0x03, 0, 0x03, 0x0002, 0x001e }, - { 0x00, 0x04, 0, 0x03, 0x0002, 0x0026 }, - { 0x00, 0x04, 0, 0x03, 0x0002, 0x0036 }, - { 0x00, 0x01, 0, 0x03, 0x0003, 0x000a }, - { 0x00, 0x01, 0, 0x03, 0x0003, 0x000c }, - { 0x00, 0x02, 0, 0x03, 0x0003, 0x000e }, - { 0x00, 0x02, 0, 0x03, 0x0003, 0x0012 }, - { 0x00, 0x03, 0, 0x03, 0x0003, 0x0016 }, - { 0x00, 0x03, 0, 0x03, 0x0003, 0x001e }, - { 0x00, 0x04, 0, 0x03, 0x0003, 0x0026 }, - { 0x00, 0x04, 0, 0x03, 0x0003, 0x0036 }, - { 0x00, 0x01, 0, 0x03, 0x0004, 0x000a }, - { 0x00, 0x01, 0, 0x03, 0x0004, 0x000c }, - { 0x00, 0x02, 0, 0x03, 0x0004, 0x000e }, - { 0x00, 0x02, 0, 0x03, 0x0004, 0x0012 }, - { 0x00, 0x03, 0, 0x03, 0x0004, 0x0016 }, - { 0x00, 0x03, 0, 0x03, 0x0004, 0x001e }, - { 0x00, 0x04, 0, 0x03, 0x0004, 0x0026 }, - { 0x00, 0x04, 0, 0x03, 0x0004, 0x0036 }, - { 0x00, 0x01, 0, 0x03, 0x0005, 0x000a }, - { 0x00, 0x01, 0, 0x03, 0x0005, 0x000c }, - { 0x00, 0x02, 0, 0x03, 0x0005, 0x000e }, - { 0x00, 0x02, 0, 0x03, 0x0005, 0x0012 }, - { 0x00, 0x03, 0, 0x03, 0x0005, 0x0016 }, - { 0x00, 0x03, 0, 0x03, 0x0005, 0x001e }, - { 0x00, 0x04, 0, 0x03, 0x0005, 0x0026 }, - { 0x00, 0x04, 0, 0x03, 0x0005, 0x0036 }, - { 0x01, 0x01, 0, 0x03, 0x0006, 0x000a }, - { 0x01, 0x01, 0, 0x03, 0x0006, 0x000c }, - { 0x01, 0x02, 0, 0x03, 0x0006, 0x000e }, - { 0x01, 0x02, 0, 0x03, 0x0006, 0x0012 }, - { 0x01, 0x03, 0, 0x03, 0x0006, 0x0016 }, - { 0x01, 0x03, 0, 0x03, 0x0006, 0x001e }, - { 0x01, 0x04, 0, 0x03, 0x0006, 0x0026 }, - { 0x01, 0x04, 0, 0x03, 0x0006, 0x0036 }, - { 0x01, 0x01, 0, 0x03, 0x0008, 0x000a }, - { 0x01, 0x01, 0, 0x03, 0x0008, 0x000c }, - { 0x01, 0x02, 0, 0x03, 0x0008, 0x000e }, - { 0x01, 0x02, 0, 0x03, 0x0008, 0x0012 }, - { 0x01, 0x03, 0, 0x03, 0x0008, 0x0016 }, - { 0x01, 0x03, 0, 0x03, 0x0008, 0x001e }, - { 0x01, 0x04, 0, 0x03, 0x0008, 0x0026 }, - { 0x01, 0x04, 0, 0x03, 0x0008, 0x0036 }, - { 0x00, 0x00, -1, 0x00, 0x0000, 0x0002 }, - { 0x00, 0x00, -1, 0x01, 0x0000, 0x0003 }, - { 0x00, 0x00, -1, 0x02, 0x0000, 0x0004 }, - { 0x00, 0x00, -1, 0x03, 0x0000, 0x0005 }, - { 0x00, 0x00, -1, 0x03, 0x0000, 0x0006 }, - { 0x00, 0x00, -1, 0x03, 0x0000, 0x0007 }, - { 0x00, 0x00, -1, 0x03, 0x0000, 0x0008 }, - { 0x00, 0x00, -1, 0x03, 0x0000, 0x0009 }, - { 0x00, 0x00, -1, 0x00, 0x0001, 0x0002 }, - { 0x00, 0x00, -1, 0x01, 0x0001, 0x0003 }, - { 0x00, 0x00, -1, 0x02, 0x0001, 0x0004 }, - { 0x00, 0x00, -1, 0x03, 0x0001, 0x0005 }, - { 0x00, 0x00, -1, 0x03, 0x0001, 0x0006 }, - { 0x00, 0x00, -1, 0x03, 0x0001, 0x0007 }, - { 0x00, 0x00, -1, 0x03, 0x0001, 0x0008 }, - { 0x00, 0x00, -1, 0x03, 0x0001, 0x0009 }, - { 0x00, 0x00, -1, 0x00, 0x0002, 0x0002 }, - { 0x00, 0x00, -1, 0x01, 0x0002, 0x0003 }, - { 0x00, 0x00, -1, 0x02, 0x0002, 0x0004 }, - { 0x00, 0x00, -1, 0x03, 0x0002, 0x0005 }, - { 0x00, 0x00, -1, 0x03, 0x0002, 0x0006 }, - { 0x00, 0x00, -1, 0x03, 0x0002, 0x0007 }, - { 0x00, 0x00, -1, 0x03, 0x0002, 0x0008 }, - { 0x00, 0x00, -1, 0x03, 0x0002, 0x0009 }, - { 0x00, 0x00, -1, 0x00, 0x0003, 0x0002 }, - { 0x00, 0x00, -1, 0x01, 0x0003, 0x0003 }, - { 0x00, 0x00, -1, 0x02, 0x0003, 0x0004 }, - { 0x00, 0x00, -1, 0x03, 0x0003, 0x0005 }, - { 0x00, 0x00, -1, 0x03, 0x0003, 0x0006 }, - { 0x00, 0x00, -1, 0x03, 0x0003, 0x0007 }, - { 0x00, 0x00, -1, 0x03, 0x0003, 0x0008 }, - { 0x00, 0x00, -1, 0x03, 0x0003, 0x0009 }, - { 0x00, 0x00, -1, 0x00, 0x0004, 0x0002 }, - { 0x00, 0x00, -1, 0x01, 0x0004, 0x0003 }, - { 0x00, 0x00, -1, 0x02, 0x0004, 0x0004 }, - { 0x00, 0x00, -1, 0x03, 0x0004, 0x0005 }, - { 0x00, 0x00, -1, 0x03, 0x0004, 0x0006 }, - { 0x00, 0x00, -1, 0x03, 0x0004, 0x0007 }, - { 0x00, 0x00, -1, 0x03, 0x0004, 0x0008 }, - { 0x00, 0x00, -1, 0x03, 0x0004, 0x0009 }, - { 0x00, 0x00, -1, 0x00, 0x0005, 0x0002 }, - { 0x00, 0x00, -1, 0x01, 0x0005, 0x0003 }, - { 0x00, 0x00, -1, 0x02, 0x0005, 0x0004 }, - { 0x00, 0x00, -1, 0x03, 0x0005, 0x0005 }, - { 0x00, 0x00, -1, 0x03, 0x0005, 0x0006 }, - { 0x00, 0x00, -1, 0x03, 0x0005, 0x0007 }, - { 0x00, 0x00, -1, 0x03, 0x0005, 0x0008 }, - { 0x00, 0x00, -1, 0x03, 0x0005, 0x0009 }, - { 0x01, 0x00, -1, 0x00, 0x0006, 0x0002 }, - { 0x01, 0x00, -1, 0x01, 0x0006, 0x0003 }, - { 0x01, 0x00, -1, 0x02, 0x0006, 0x0004 }, - { 0x01, 0x00, -1, 0x03, 0x0006, 0x0005 }, - { 0x01, 0x00, -1, 0x03, 0x0006, 0x0006 }, - { 0x01, 0x00, -1, 0x03, 0x0006, 0x0007 }, - { 0x01, 0x00, -1, 0x03, 0x0006, 0x0008 }, - { 0x01, 0x00, -1, 0x03, 0x0006, 0x0009 }, - { 0x01, 0x00, -1, 0x00, 0x0008, 0x0002 }, - { 0x01, 0x00, -1, 0x01, 0x0008, 0x0003 }, - { 0x01, 0x00, -1, 0x02, 0x0008, 0x0004 }, - { 0x01, 0x00, -1, 0x03, 0x0008, 0x0005 }, - { 0x01, 0x00, -1, 0x03, 0x0008, 0x0006 }, - { 0x01, 0x00, -1, 0x03, 0x0008, 0x0007 }, - { 0x01, 0x00, -1, 0x03, 0x0008, 0x0008 }, - { 0x01, 0x00, -1, 0x03, 0x0008, 0x0009 }, - { 0x00, 0x01, -1, 0x03, 0x0000, 0x000a }, - { 0x00, 0x01, -1, 0x03, 0x0000, 0x000c }, - { 0x00, 0x02, -1, 0x03, 0x0000, 0x000e }, - { 0x00, 0x02, -1, 0x03, 0x0000, 0x0012 }, - { 0x00, 0x03, -1, 0x03, 0x0000, 0x0016 }, - { 0x00, 0x03, -1, 0x03, 0x0000, 0x001e }, - { 0x00, 0x04, -1, 0x03, 0x0000, 0x0026 }, - { 0x00, 0x04, -1, 0x03, 0x0000, 0x0036 }, - { 0x00, 0x01, -1, 0x03, 0x0001, 0x000a }, - { 0x00, 0x01, -1, 0x03, 0x0001, 0x000c }, - { 0x00, 0x02, -1, 0x03, 0x0001, 0x000e }, - { 0x00, 0x02, -1, 0x03, 0x0001, 0x0012 }, - { 0x00, 0x03, -1, 0x03, 0x0001, 0x0016 }, - { 0x00, 0x03, -1, 0x03, 0x0001, 0x001e }, - { 0x00, 0x04, -1, 0x03, 0x0001, 0x0026 }, - { 0x00, 0x04, -1, 0x03, 0x0001, 0x0036 }, - { 0x00, 0x01, -1, 0x03, 0x0002, 0x000a }, - { 0x00, 0x01, -1, 0x03, 0x0002, 0x000c }, - { 0x00, 0x02, -1, 0x03, 0x0002, 0x000e }, - { 0x00, 0x02, -1, 0x03, 0x0002, 0x0012 }, - { 0x00, 0x03, -1, 0x03, 0x0002, 0x0016 }, - { 0x00, 0x03, -1, 0x03, 0x0002, 0x001e }, - { 0x00, 0x04, -1, 0x03, 0x0002, 0x0026 }, - { 0x00, 0x04, -1, 0x03, 0x0002, 0x0036 }, - { 0x00, 0x01, -1, 0x03, 0x0003, 0x000a }, - { 0x00, 0x01, -1, 0x03, 0x0003, 0x000c }, - { 0x00, 0x02, -1, 0x03, 0x0003, 0x000e }, - { 0x00, 0x02, -1, 0x03, 0x0003, 0x0012 }, - { 0x00, 0x03, -1, 0x03, 0x0003, 0x0016 }, - { 0x00, 0x03, -1, 0x03, 0x0003, 0x001e }, - { 0x00, 0x04, -1, 0x03, 0x0003, 0x0026 }, - { 0x00, 0x04, -1, 0x03, 0x0003, 0x0036 }, - { 0x00, 0x01, -1, 0x03, 0x0004, 0x000a }, - { 0x00, 0x01, -1, 0x03, 0x0004, 0x000c }, - { 0x00, 0x02, -1, 0x03, 0x0004, 0x000e }, - { 0x00, 0x02, -1, 0x03, 0x0004, 0x0012 }, - { 0x00, 0x03, -1, 0x03, 0x0004, 0x0016 }, - { 0x00, 0x03, -1, 0x03, 0x0004, 0x001e }, - { 0x00, 0x04, -1, 0x03, 0x0004, 0x0026 }, - { 0x00, 0x04, -1, 0x03, 0x0004, 0x0036 }, - { 0x00, 0x01, -1, 0x03, 0x0005, 0x000a }, - { 0x00, 0x01, -1, 0x03, 0x0005, 0x000c }, - { 0x00, 0x02, -1, 0x03, 0x0005, 0x000e }, - { 0x00, 0x02, -1, 0x03, 0x0005, 0x0012 }, - { 0x00, 0x03, -1, 0x03, 0x0005, 0x0016 }, - { 0x00, 0x03, -1, 0x03, 0x0005, 0x001e }, - { 0x00, 0x04, -1, 0x03, 0x0005, 0x0026 }, - { 0x00, 0x04, -1, 0x03, 0x0005, 0x0036 }, - { 0x01, 0x01, -1, 0x03, 0x0006, 0x000a }, - { 0x01, 0x01, -1, 0x03, 0x0006, 0x000c }, - { 0x01, 0x02, -1, 0x03, 0x0006, 0x000e }, - { 0x01, 0x02, -1, 0x03, 0x0006, 0x0012 }, - { 0x01, 0x03, -1, 0x03, 0x0006, 0x0016 }, - { 0x01, 0x03, -1, 0x03, 0x0006, 0x001e }, - { 0x01, 0x04, -1, 0x03, 0x0006, 0x0026 }, - { 0x01, 0x04, -1, 0x03, 0x0006, 0x0036 }, - { 0x01, 0x01, -1, 0x03, 0x0008, 0x000a }, - { 0x01, 0x01, -1, 0x03, 0x0008, 0x000c }, - { 0x01, 0x02, -1, 0x03, 0x0008, 0x000e }, - { 0x01, 0x02, -1, 0x03, 0x0008, 0x0012 }, - { 0x01, 0x03, -1, 0x03, 0x0008, 0x0016 }, - { 0x01, 0x03, -1, 0x03, 0x0008, 0x001e }, - { 0x01, 0x04, -1, 0x03, 0x0008, 0x0026 }, - { 0x01, 0x04, -1, 0x03, 0x0008, 0x0036 }, - { 0x02, 0x00, -1, 0x00, 0x000a, 0x0002 }, - { 0x02, 0x00, -1, 0x01, 0x000a, 0x0003 }, - { 0x02, 0x00, -1, 0x02, 0x000a, 0x0004 }, - { 0x02, 0x00, -1, 0x03, 0x000a, 0x0005 }, - { 0x02, 0x00, -1, 0x03, 0x000a, 0x0006 }, - { 0x02, 0x00, -1, 0x03, 0x000a, 0x0007 }, - { 0x02, 0x00, -1, 0x03, 0x000a, 0x0008 }, - { 0x02, 0x00, -1, 0x03, 0x000a, 0x0009 }, - { 0x02, 0x00, -1, 0x00, 0x000e, 0x0002 }, - { 0x02, 0x00, -1, 0x01, 0x000e, 0x0003 }, - { 0x02, 0x00, -1, 0x02, 0x000e, 0x0004 }, - { 0x02, 0x00, -1, 0x03, 0x000e, 0x0005 }, - { 0x02, 0x00, -1, 0x03, 0x000e, 0x0006 }, - { 0x02, 0x00, -1, 0x03, 0x000e, 0x0007 }, - { 0x02, 0x00, -1, 0x03, 0x000e, 0x0008 }, - { 0x02, 0x00, -1, 0x03, 0x000e, 0x0009 }, - { 0x03, 0x00, -1, 0x00, 0x0012, 0x0002 }, - { 0x03, 0x00, -1, 0x01, 0x0012, 0x0003 }, - { 0x03, 0x00, -1, 0x02, 0x0012, 0x0004 }, - { 0x03, 0x00, -1, 0x03, 0x0012, 0x0005 }, - { 0x03, 0x00, -1, 0x03, 0x0012, 0x0006 }, - { 0x03, 0x00, -1, 0x03, 0x0012, 0x0007 }, - { 0x03, 0x00, -1, 0x03, 0x0012, 0x0008 }, - { 0x03, 0x00, -1, 0x03, 0x0012, 0x0009 }, - { 0x03, 0x00, -1, 0x00, 0x001a, 0x0002 }, - { 0x03, 0x00, -1, 0x01, 0x001a, 0x0003 }, - { 0x03, 0x00, -1, 0x02, 0x001a, 0x0004 }, - { 0x03, 0x00, -1, 0x03, 0x001a, 0x0005 }, - { 0x03, 0x00, -1, 0x03, 0x001a, 0x0006 }, - { 0x03, 0x00, -1, 0x03, 0x001a, 0x0007 }, - { 0x03, 0x00, -1, 0x03, 0x001a, 0x0008 }, - { 0x03, 0x00, -1, 0x03, 0x001a, 0x0009 }, - { 0x04, 0x00, -1, 0x00, 0x0022, 0x0002 }, - { 0x04, 0x00, -1, 0x01, 0x0022, 0x0003 }, - { 0x04, 0x00, -1, 0x02, 0x0022, 0x0004 }, - { 0x04, 0x00, -1, 0x03, 0x0022, 0x0005 }, - { 0x04, 0x00, -1, 0x03, 0x0022, 0x0006 }, - { 0x04, 0x00, -1, 0x03, 0x0022, 0x0007 }, - { 0x04, 0x00, -1, 0x03, 0x0022, 0x0008 }, - { 0x04, 0x00, -1, 0x03, 0x0022, 0x0009 }, - { 0x04, 0x00, -1, 0x00, 0x0032, 0x0002 }, - { 0x04, 0x00, -1, 0x01, 0x0032, 0x0003 }, - { 0x04, 0x00, -1, 0x02, 0x0032, 0x0004 }, - { 0x04, 0x00, -1, 0x03, 0x0032, 0x0005 }, - { 0x04, 0x00, -1, 0x03, 0x0032, 0x0006 }, - { 0x04, 0x00, -1, 0x03, 0x0032, 0x0007 }, - { 0x04, 0x00, -1, 0x03, 0x0032, 0x0008 }, - { 0x04, 0x00, -1, 0x03, 0x0032, 0x0009 }, - { 0x05, 0x00, -1, 0x00, 0x0042, 0x0002 }, - { 0x05, 0x00, -1, 0x01, 0x0042, 0x0003 }, - { 0x05, 0x00, -1, 0x02, 0x0042, 0x0004 }, - { 0x05, 0x00, -1, 0x03, 0x0042, 0x0005 }, - { 0x05, 0x00, -1, 0x03, 0x0042, 0x0006 }, - { 0x05, 0x00, -1, 0x03, 0x0042, 0x0007 }, - { 0x05, 0x00, -1, 0x03, 0x0042, 0x0008 }, - { 0x05, 0x00, -1, 0x03, 0x0042, 0x0009 }, - { 0x05, 0x00, -1, 0x00, 0x0062, 0x0002 }, - { 0x05, 0x00, -1, 0x01, 0x0062, 0x0003 }, - { 0x05, 0x00, -1, 0x02, 0x0062, 0x0004 }, - { 0x05, 0x00, -1, 0x03, 0x0062, 0x0005 }, - { 0x05, 0x00, -1, 0x03, 0x0062, 0x0006 }, - { 0x05, 0x00, -1, 0x03, 0x0062, 0x0007 }, - { 0x05, 0x00, -1, 0x03, 0x0062, 0x0008 }, - { 0x05, 0x00, -1, 0x03, 0x0062, 0x0009 }, - { 0x02, 0x01, -1, 0x03, 0x000a, 0x000a }, - { 0x02, 0x01, -1, 0x03, 0x000a, 0x000c }, - { 0x02, 0x02, -1, 0x03, 0x000a, 0x000e }, - { 0x02, 0x02, -1, 0x03, 0x000a, 0x0012 }, - { 0x02, 0x03, -1, 0x03, 0x000a, 0x0016 }, - { 0x02, 0x03, -1, 0x03, 0x000a, 0x001e }, - { 0x02, 0x04, -1, 0x03, 0x000a, 0x0026 }, - { 0x02, 0x04, -1, 0x03, 0x000a, 0x0036 }, - { 0x02, 0x01, -1, 0x03, 0x000e, 0x000a }, - { 0x02, 0x01, -1, 0x03, 0x000e, 0x000c }, - { 0x02, 0x02, -1, 0x03, 0x000e, 0x000e }, - { 0x02, 0x02, -1, 0x03, 0x000e, 0x0012 }, - { 0x02, 0x03, -1, 0x03, 0x000e, 0x0016 }, - { 0x02, 0x03, -1, 0x03, 0x000e, 0x001e }, - { 0x02, 0x04, -1, 0x03, 0x000e, 0x0026 }, - { 0x02, 0x04, -1, 0x03, 0x000e, 0x0036 }, - { 0x03, 0x01, -1, 0x03, 0x0012, 0x000a }, - { 0x03, 0x01, -1, 0x03, 0x0012, 0x000c }, - { 0x03, 0x02, -1, 0x03, 0x0012, 0x000e }, - { 0x03, 0x02, -1, 0x03, 0x0012, 0x0012 }, - { 0x03, 0x03, -1, 0x03, 0x0012, 0x0016 }, - { 0x03, 0x03, -1, 0x03, 0x0012, 0x001e }, - { 0x03, 0x04, -1, 0x03, 0x0012, 0x0026 }, - { 0x03, 0x04, -1, 0x03, 0x0012, 0x0036 }, - { 0x03, 0x01, -1, 0x03, 0x001a, 0x000a }, - { 0x03, 0x01, -1, 0x03, 0x001a, 0x000c }, - { 0x03, 0x02, -1, 0x03, 0x001a, 0x000e }, - { 0x03, 0x02, -1, 0x03, 0x001a, 0x0012 }, - { 0x03, 0x03, -1, 0x03, 0x001a, 0x0016 }, - { 0x03, 0x03, -1, 0x03, 0x001a, 0x001e }, - { 0x03, 0x04, -1, 0x03, 0x001a, 0x0026 }, - { 0x03, 0x04, -1, 0x03, 0x001a, 0x0036 }, - { 0x04, 0x01, -1, 0x03, 0x0022, 0x000a }, - { 0x04, 0x01, -1, 0x03, 0x0022, 0x000c }, - { 0x04, 0x02, -1, 0x03, 0x0022, 0x000e }, - { 0x04, 0x02, -1, 0x03, 0x0022, 0x0012 }, - { 0x04, 0x03, -1, 0x03, 0x0022, 0x0016 }, - { 0x04, 0x03, -1, 0x03, 0x0022, 0x001e }, - { 0x04, 0x04, -1, 0x03, 0x0022, 0x0026 }, - { 0x04, 0x04, -1, 0x03, 0x0022, 0x0036 }, - { 0x04, 0x01, -1, 0x03, 0x0032, 0x000a }, - { 0x04, 0x01, -1, 0x03, 0x0032, 0x000c }, - { 0x04, 0x02, -1, 0x03, 0x0032, 0x000e }, - { 0x04, 0x02, -1, 0x03, 0x0032, 0x0012 }, - { 0x04, 0x03, -1, 0x03, 0x0032, 0x0016 }, - { 0x04, 0x03, -1, 0x03, 0x0032, 0x001e }, - { 0x04, 0x04, -1, 0x03, 0x0032, 0x0026 }, - { 0x04, 0x04, -1, 0x03, 0x0032, 0x0036 }, - { 0x05, 0x01, -1, 0x03, 0x0042, 0x000a }, - { 0x05, 0x01, -1, 0x03, 0x0042, 0x000c }, - { 0x05, 0x02, -1, 0x03, 0x0042, 0x000e }, - { 0x05, 0x02, -1, 0x03, 0x0042, 0x0012 }, - { 0x05, 0x03, -1, 0x03, 0x0042, 0x0016 }, - { 0x05, 0x03, -1, 0x03, 0x0042, 0x001e }, - { 0x05, 0x04, -1, 0x03, 0x0042, 0x0026 }, - { 0x05, 0x04, -1, 0x03, 0x0042, 0x0036 }, - { 0x05, 0x01, -1, 0x03, 0x0062, 0x000a }, - { 0x05, 0x01, -1, 0x03, 0x0062, 0x000c }, - { 0x05, 0x02, -1, 0x03, 0x0062, 0x000e }, - { 0x05, 0x02, -1, 0x03, 0x0062, 0x0012 }, - { 0x05, 0x03, -1, 0x03, 0x0062, 0x0016 }, - { 0x05, 0x03, -1, 0x03, 0x0062, 0x001e }, - { 0x05, 0x04, -1, 0x03, 0x0062, 0x0026 }, - { 0x05, 0x04, -1, 0x03, 0x0062, 0x0036 }, - { 0x00, 0x05, -1, 0x03, 0x0000, 0x0046 }, - { 0x00, 0x05, -1, 0x03, 0x0000, 0x0066 }, - { 0x00, 0x06, -1, 0x03, 0x0000, 0x0086 }, - { 0x00, 0x07, -1, 0x03, 0x0000, 0x00c6 }, - { 0x00, 0x08, -1, 0x03, 0x0000, 0x0146 }, - { 0x00, 0x09, -1, 0x03, 0x0000, 0x0246 }, - { 0x00, 0x0a, -1, 0x03, 0x0000, 0x0446 }, - { 0x00, 0x18, -1, 0x03, 0x0000, 0x0846 }, - { 0x00, 0x05, -1, 0x03, 0x0001, 0x0046 }, - { 0x00, 0x05, -1, 0x03, 0x0001, 0x0066 }, - { 0x00, 0x06, -1, 0x03, 0x0001, 0x0086 }, - { 0x00, 0x07, -1, 0x03, 0x0001, 0x00c6 }, - { 0x00, 0x08, -1, 0x03, 0x0001, 0x0146 }, - { 0x00, 0x09, -1, 0x03, 0x0001, 0x0246 }, - { 0x00, 0x0a, -1, 0x03, 0x0001, 0x0446 }, - { 0x00, 0x18, -1, 0x03, 0x0001, 0x0846 }, - { 0x00, 0x05, -1, 0x03, 0x0002, 0x0046 }, - { 0x00, 0x05, -1, 0x03, 0x0002, 0x0066 }, - { 0x00, 0x06, -1, 0x03, 0x0002, 0x0086 }, - { 0x00, 0x07, -1, 0x03, 0x0002, 0x00c6 }, - { 0x00, 0x08, -1, 0x03, 0x0002, 0x0146 }, - { 0x00, 0x09, -1, 0x03, 0x0002, 0x0246 }, - { 0x00, 0x0a, -1, 0x03, 0x0002, 0x0446 }, - { 0x00, 0x18, -1, 0x03, 0x0002, 0x0846 }, - { 0x00, 0x05, -1, 0x03, 0x0003, 0x0046 }, - { 0x00, 0x05, -1, 0x03, 0x0003, 0x0066 }, - { 0x00, 0x06, -1, 0x03, 0x0003, 0x0086 }, - { 0x00, 0x07, -1, 0x03, 0x0003, 0x00c6 }, - { 0x00, 0x08, -1, 0x03, 0x0003, 0x0146 }, - { 0x00, 0x09, -1, 0x03, 0x0003, 0x0246 }, - { 0x00, 0x0a, -1, 0x03, 0x0003, 0x0446 }, - { 0x00, 0x18, -1, 0x03, 0x0003, 0x0846 }, - { 0x00, 0x05, -1, 0x03, 0x0004, 0x0046 }, - { 0x00, 0x05, -1, 0x03, 0x0004, 0x0066 }, - { 0x00, 0x06, -1, 0x03, 0x0004, 0x0086 }, - { 0x00, 0x07, -1, 0x03, 0x0004, 0x00c6 }, - { 0x00, 0x08, -1, 0x03, 0x0004, 0x0146 }, - { 0x00, 0x09, -1, 0x03, 0x0004, 0x0246 }, - { 0x00, 0x0a, -1, 0x03, 0x0004, 0x0446 }, - { 0x00, 0x18, -1, 0x03, 0x0004, 0x0846 }, - { 0x00, 0x05, -1, 0x03, 0x0005, 0x0046 }, - { 0x00, 0x05, -1, 0x03, 0x0005, 0x0066 }, - { 0x00, 0x06, -1, 0x03, 0x0005, 0x0086 }, - { 0x00, 0x07, -1, 0x03, 0x0005, 0x00c6 }, - { 0x00, 0x08, -1, 0x03, 0x0005, 0x0146 }, - { 0x00, 0x09, -1, 0x03, 0x0005, 0x0246 }, - { 0x00, 0x0a, -1, 0x03, 0x0005, 0x0446 }, - { 0x00, 0x18, -1, 0x03, 0x0005, 0x0846 }, - { 0x01, 0x05, -1, 0x03, 0x0006, 0x0046 }, - { 0x01, 0x05, -1, 0x03, 0x0006, 0x0066 }, - { 0x01, 0x06, -1, 0x03, 0x0006, 0x0086 }, - { 0x01, 0x07, -1, 0x03, 0x0006, 0x00c6 }, - { 0x01, 0x08, -1, 0x03, 0x0006, 0x0146 }, - { 0x01, 0x09, -1, 0x03, 0x0006, 0x0246 }, - { 0x01, 0x0a, -1, 0x03, 0x0006, 0x0446 }, - { 0x01, 0x18, -1, 0x03, 0x0006, 0x0846 }, - { 0x01, 0x05, -1, 0x03, 0x0008, 0x0046 }, - { 0x01, 0x05, -1, 0x03, 0x0008, 0x0066 }, - { 0x01, 0x06, -1, 0x03, 0x0008, 0x0086 }, - { 0x01, 0x07, -1, 0x03, 0x0008, 0x00c6 }, - { 0x01, 0x08, -1, 0x03, 0x0008, 0x0146 }, - { 0x01, 0x09, -1, 0x03, 0x0008, 0x0246 }, - { 0x01, 0x0a, -1, 0x03, 0x0008, 0x0446 }, - { 0x01, 0x18, -1, 0x03, 0x0008, 0x0846 }, - { 0x06, 0x00, -1, 0x00, 0x0082, 0x0002 }, - { 0x06, 0x00, -1, 0x01, 0x0082, 0x0003 }, - { 0x06, 0x00, -1, 0x02, 0x0082, 0x0004 }, - { 0x06, 0x00, -1, 0x03, 0x0082, 0x0005 }, - { 0x06, 0x00, -1, 0x03, 0x0082, 0x0006 }, - { 0x06, 0x00, -1, 0x03, 0x0082, 0x0007 }, - { 0x06, 0x00, -1, 0x03, 0x0082, 0x0008 }, - { 0x06, 0x00, -1, 0x03, 0x0082, 0x0009 }, - { 0x07, 0x00, -1, 0x00, 0x00c2, 0x0002 }, - { 0x07, 0x00, -1, 0x01, 0x00c2, 0x0003 }, - { 0x07, 0x00, -1, 0x02, 0x00c2, 0x0004 }, - { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0005 }, - { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0006 }, - { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0007 }, - { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0008 }, - { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0009 }, - { 0x08, 0x00, -1, 0x00, 0x0142, 0x0002 }, - { 0x08, 0x00, -1, 0x01, 0x0142, 0x0003 }, - { 0x08, 0x00, -1, 0x02, 0x0142, 0x0004 }, - { 0x08, 0x00, -1, 0x03, 0x0142, 0x0005 }, - { 0x08, 0x00, -1, 0x03, 0x0142, 0x0006 }, - { 0x08, 0x00, -1, 0x03, 0x0142, 0x0007 }, - { 0x08, 0x00, -1, 0x03, 0x0142, 0x0008 }, - { 0x08, 0x00, -1, 0x03, 0x0142, 0x0009 }, - { 0x09, 0x00, -1, 0x00, 0x0242, 0x0002 }, - { 0x09, 0x00, -1, 0x01, 0x0242, 0x0003 }, - { 0x09, 0x00, -1, 0x02, 0x0242, 0x0004 }, - { 0x09, 0x00, -1, 0x03, 0x0242, 0x0005 }, - { 0x09, 0x00, -1, 0x03, 0x0242, 0x0006 }, - { 0x09, 0x00, -1, 0x03, 0x0242, 0x0007 }, - { 0x09, 0x00, -1, 0x03, 0x0242, 0x0008 }, - { 0x09, 0x00, -1, 0x03, 0x0242, 0x0009 }, - { 0x0a, 0x00, -1, 0x00, 0x0442, 0x0002 }, - { 0x0a, 0x00, -1, 0x01, 0x0442, 0x0003 }, - { 0x0a, 0x00, -1, 0x02, 0x0442, 0x0004 }, - { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0005 }, - { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0006 }, - { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0007 }, - { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0008 }, - { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0009 }, - { 0x0c, 0x00, -1, 0x00, 0x0842, 0x0002 }, - { 0x0c, 0x00, -1, 0x01, 0x0842, 0x0003 }, - { 0x0c, 0x00, -1, 0x02, 0x0842, 0x0004 }, - { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0005 }, - { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0006 }, - { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0007 }, - { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0008 }, - { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0009 }, - { 0x0e, 0x00, -1, 0x00, 0x1842, 0x0002 }, - { 0x0e, 0x00, -1, 0x01, 0x1842, 0x0003 }, - { 0x0e, 0x00, -1, 0x02, 0x1842, 0x0004 }, - { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0005 }, - { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0006 }, - { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0007 }, - { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0008 }, - { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0009 }, - { 0x18, 0x00, -1, 0x00, 0x5842, 0x0002 }, - { 0x18, 0x00, -1, 0x01, 0x5842, 0x0003 }, - { 0x18, 0x00, -1, 0x02, 0x5842, 0x0004 }, - { 0x18, 0x00, -1, 0x03, 0x5842, 0x0005 }, - { 0x18, 0x00, -1, 0x03, 0x5842, 0x0006 }, - { 0x18, 0x00, -1, 0x03, 0x5842, 0x0007 }, - { 0x18, 0x00, -1, 0x03, 0x5842, 0x0008 }, - { 0x18, 0x00, -1, 0x03, 0x5842, 0x0009 }, - { 0x02, 0x05, -1, 0x03, 0x000a, 0x0046 }, - { 0x02, 0x05, -1, 0x03, 0x000a, 0x0066 }, - { 0x02, 0x06, -1, 0x03, 0x000a, 0x0086 }, - { 0x02, 0x07, -1, 0x03, 0x000a, 0x00c6 }, - { 0x02, 0x08, -1, 0x03, 0x000a, 0x0146 }, - { 0x02, 0x09, -1, 0x03, 0x000a, 0x0246 }, - { 0x02, 0x0a, -1, 0x03, 0x000a, 0x0446 }, - { 0x02, 0x18, -1, 0x03, 0x000a, 0x0846 }, - { 0x02, 0x05, -1, 0x03, 0x000e, 0x0046 }, - { 0x02, 0x05, -1, 0x03, 0x000e, 0x0066 }, - { 0x02, 0x06, -1, 0x03, 0x000e, 0x0086 }, - { 0x02, 0x07, -1, 0x03, 0x000e, 0x00c6 }, - { 0x02, 0x08, -1, 0x03, 0x000e, 0x0146 }, - { 0x02, 0x09, -1, 0x03, 0x000e, 0x0246 }, - { 0x02, 0x0a, -1, 0x03, 0x000e, 0x0446 }, - { 0x02, 0x18, -1, 0x03, 0x000e, 0x0846 }, - { 0x03, 0x05, -1, 0x03, 0x0012, 0x0046 }, - { 0x03, 0x05, -1, 0x03, 0x0012, 0x0066 }, - { 0x03, 0x06, -1, 0x03, 0x0012, 0x0086 }, - { 0x03, 0x07, -1, 0x03, 0x0012, 0x00c6 }, - { 0x03, 0x08, -1, 0x03, 0x0012, 0x0146 }, - { 0x03, 0x09, -1, 0x03, 0x0012, 0x0246 }, - { 0x03, 0x0a, -1, 0x03, 0x0012, 0x0446 }, - { 0x03, 0x18, -1, 0x03, 0x0012, 0x0846 }, - { 0x03, 0x05, -1, 0x03, 0x001a, 0x0046 }, - { 0x03, 0x05, -1, 0x03, 0x001a, 0x0066 }, - { 0x03, 0x06, -1, 0x03, 0x001a, 0x0086 }, - { 0x03, 0x07, -1, 0x03, 0x001a, 0x00c6 }, - { 0x03, 0x08, -1, 0x03, 0x001a, 0x0146 }, - { 0x03, 0x09, -1, 0x03, 0x001a, 0x0246 }, - { 0x03, 0x0a, -1, 0x03, 0x001a, 0x0446 }, - { 0x03, 0x18, -1, 0x03, 0x001a, 0x0846 }, - { 0x04, 0x05, -1, 0x03, 0x0022, 0x0046 }, - { 0x04, 0x05, -1, 0x03, 0x0022, 0x0066 }, - { 0x04, 0x06, -1, 0x03, 0x0022, 0x0086 }, - { 0x04, 0x07, -1, 0x03, 0x0022, 0x00c6 }, - { 0x04, 0x08, -1, 0x03, 0x0022, 0x0146 }, - { 0x04, 0x09, -1, 0x03, 0x0022, 0x0246 }, - { 0x04, 0x0a, -1, 0x03, 0x0022, 0x0446 }, - { 0x04, 0x18, -1, 0x03, 0x0022, 0x0846 }, - { 0x04, 0x05, -1, 0x03, 0x0032, 0x0046 }, - { 0x04, 0x05, -1, 0x03, 0x0032, 0x0066 }, - { 0x04, 0x06, -1, 0x03, 0x0032, 0x0086 }, - { 0x04, 0x07, -1, 0x03, 0x0032, 0x00c6 }, - { 0x04, 0x08, -1, 0x03, 0x0032, 0x0146 }, - { 0x04, 0x09, -1, 0x03, 0x0032, 0x0246 }, - { 0x04, 0x0a, -1, 0x03, 0x0032, 0x0446 }, - { 0x04, 0x18, -1, 0x03, 0x0032, 0x0846 }, - { 0x05, 0x05, -1, 0x03, 0x0042, 0x0046 }, - { 0x05, 0x05, -1, 0x03, 0x0042, 0x0066 }, - { 0x05, 0x06, -1, 0x03, 0x0042, 0x0086 }, - { 0x05, 0x07, -1, 0x03, 0x0042, 0x00c6 }, - { 0x05, 0x08, -1, 0x03, 0x0042, 0x0146 }, - { 0x05, 0x09, -1, 0x03, 0x0042, 0x0246 }, - { 0x05, 0x0a, -1, 0x03, 0x0042, 0x0446 }, - { 0x05, 0x18, -1, 0x03, 0x0042, 0x0846 }, - { 0x05, 0x05, -1, 0x03, 0x0062, 0x0046 }, - { 0x05, 0x05, -1, 0x03, 0x0062, 0x0066 }, - { 0x05, 0x06, -1, 0x03, 0x0062, 0x0086 }, - { 0x05, 0x07, -1, 0x03, 0x0062, 0x00c6 }, - { 0x05, 0x08, -1, 0x03, 0x0062, 0x0146 }, - { 0x05, 0x09, -1, 0x03, 0x0062, 0x0246 }, - { 0x05, 0x0a, -1, 0x03, 0x0062, 0x0446 }, - { 0x05, 0x18, -1, 0x03, 0x0062, 0x0846 }, - { 0x06, 0x01, -1, 0x03, 0x0082, 0x000a }, - { 0x06, 0x01, -1, 0x03, 0x0082, 0x000c }, - { 0x06, 0x02, -1, 0x03, 0x0082, 0x000e }, - { 0x06, 0x02, -1, 0x03, 0x0082, 0x0012 }, - { 0x06, 0x03, -1, 0x03, 0x0082, 0x0016 }, - { 0x06, 0x03, -1, 0x03, 0x0082, 0x001e }, - { 0x06, 0x04, -1, 0x03, 0x0082, 0x0026 }, - { 0x06, 0x04, -1, 0x03, 0x0082, 0x0036 }, - { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000a }, - { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000c }, - { 0x07, 0x02, -1, 0x03, 0x00c2, 0x000e }, - { 0x07, 0x02, -1, 0x03, 0x00c2, 0x0012 }, - { 0x07, 0x03, -1, 0x03, 0x00c2, 0x0016 }, - { 0x07, 0x03, -1, 0x03, 0x00c2, 0x001e }, - { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0026 }, - { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0036 }, - { 0x08, 0x01, -1, 0x03, 0x0142, 0x000a }, - { 0x08, 0x01, -1, 0x03, 0x0142, 0x000c }, - { 0x08, 0x02, -1, 0x03, 0x0142, 0x000e }, - { 0x08, 0x02, -1, 0x03, 0x0142, 0x0012 }, - { 0x08, 0x03, -1, 0x03, 0x0142, 0x0016 }, - { 0x08, 0x03, -1, 0x03, 0x0142, 0x001e }, - { 0x08, 0x04, -1, 0x03, 0x0142, 0x0026 }, - { 0x08, 0x04, -1, 0x03, 0x0142, 0x0036 }, - { 0x09, 0x01, -1, 0x03, 0x0242, 0x000a }, - { 0x09, 0x01, -1, 0x03, 0x0242, 0x000c }, - { 0x09, 0x02, -1, 0x03, 0x0242, 0x000e }, - { 0x09, 0x02, -1, 0x03, 0x0242, 0x0012 }, - { 0x09, 0x03, -1, 0x03, 0x0242, 0x0016 }, - { 0x09, 0x03, -1, 0x03, 0x0242, 0x001e }, - { 0x09, 0x04, -1, 0x03, 0x0242, 0x0026 }, - { 0x09, 0x04, -1, 0x03, 0x0242, 0x0036 }, - { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000a }, - { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000c }, - { 0x0a, 0x02, -1, 0x03, 0x0442, 0x000e }, - { 0x0a, 0x02, -1, 0x03, 0x0442, 0x0012 }, - { 0x0a, 0x03, -1, 0x03, 0x0442, 0x0016 }, - { 0x0a, 0x03, -1, 0x03, 0x0442, 0x001e }, - { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0026 }, - { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0036 }, - { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000a }, - { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000c }, - { 0x0c, 0x02, -1, 0x03, 0x0842, 0x000e }, - { 0x0c, 0x02, -1, 0x03, 0x0842, 0x0012 }, - { 0x0c, 0x03, -1, 0x03, 0x0842, 0x0016 }, - { 0x0c, 0x03, -1, 0x03, 0x0842, 0x001e }, - { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0026 }, - { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0036 }, - { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000a }, - { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000c }, - { 0x0e, 0x02, -1, 0x03, 0x1842, 0x000e }, - { 0x0e, 0x02, -1, 0x03, 0x1842, 0x0012 }, - { 0x0e, 0x03, -1, 0x03, 0x1842, 0x0016 }, - { 0x0e, 0x03, -1, 0x03, 0x1842, 0x001e }, - { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0026 }, - { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0036 }, - { 0x18, 0x01, -1, 0x03, 0x5842, 0x000a }, - { 0x18, 0x01, -1, 0x03, 0x5842, 0x000c }, - { 0x18, 0x02, -1, 0x03, 0x5842, 0x000e }, - { 0x18, 0x02, -1, 0x03, 0x5842, 0x0012 }, - { 0x18, 0x03, -1, 0x03, 0x5842, 0x0016 }, - { 0x18, 0x03, -1, 0x03, 0x5842, 0x001e }, - { 0x18, 0x04, -1, 0x03, 0x5842, 0x0026 }, - { 0x18, 0x04, -1, 0x03, 0x5842, 0x0036 }, - { 0x06, 0x05, -1, 0x03, 0x0082, 0x0046 }, - { 0x06, 0x05, -1, 0x03, 0x0082, 0x0066 }, - { 0x06, 0x06, -1, 0x03, 0x0082, 0x0086 }, - { 0x06, 0x07, -1, 0x03, 0x0082, 0x00c6 }, - { 0x06, 0x08, -1, 0x03, 0x0082, 0x0146 }, - { 0x06, 0x09, -1, 0x03, 0x0082, 0x0246 }, - { 0x06, 0x0a, -1, 0x03, 0x0082, 0x0446 }, - { 0x06, 0x18, -1, 0x03, 0x0082, 0x0846 }, - { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0046 }, - { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0066 }, - { 0x07, 0x06, -1, 0x03, 0x00c2, 0x0086 }, - { 0x07, 0x07, -1, 0x03, 0x00c2, 0x00c6 }, - { 0x07, 0x08, -1, 0x03, 0x00c2, 0x0146 }, - { 0x07, 0x09, -1, 0x03, 0x00c2, 0x0246 }, - { 0x07, 0x0a, -1, 0x03, 0x00c2, 0x0446 }, - { 0x07, 0x18, -1, 0x03, 0x00c2, 0x0846 }, - { 0x08, 0x05, -1, 0x03, 0x0142, 0x0046 }, - { 0x08, 0x05, -1, 0x03, 0x0142, 0x0066 }, - { 0x08, 0x06, -1, 0x03, 0x0142, 0x0086 }, - { 0x08, 0x07, -1, 0x03, 0x0142, 0x00c6 }, - { 0x08, 0x08, -1, 0x03, 0x0142, 0x0146 }, - { 0x08, 0x09, -1, 0x03, 0x0142, 0x0246 }, - { 0x08, 0x0a, -1, 0x03, 0x0142, 0x0446 }, - { 0x08, 0x18, -1, 0x03, 0x0142, 0x0846 }, - { 0x09, 0x05, -1, 0x03, 0x0242, 0x0046 }, - { 0x09, 0x05, -1, 0x03, 0x0242, 0x0066 }, - { 0x09, 0x06, -1, 0x03, 0x0242, 0x0086 }, - { 0x09, 0x07, -1, 0x03, 0x0242, 0x00c6 }, - { 0x09, 0x08, -1, 0x03, 0x0242, 0x0146 }, - { 0x09, 0x09, -1, 0x03, 0x0242, 0x0246 }, - { 0x09, 0x0a, -1, 0x03, 0x0242, 0x0446 }, - { 0x09, 0x18, -1, 0x03, 0x0242, 0x0846 }, - { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0046 }, - { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0066 }, - { 0x0a, 0x06, -1, 0x03, 0x0442, 0x0086 }, - { 0x0a, 0x07, -1, 0x03, 0x0442, 0x00c6 }, - { 0x0a, 0x08, -1, 0x03, 0x0442, 0x0146 }, - { 0x0a, 0x09, -1, 0x03, 0x0442, 0x0246 }, - { 0x0a, 0x0a, -1, 0x03, 0x0442, 0x0446 }, - { 0x0a, 0x18, -1, 0x03, 0x0442, 0x0846 }, - { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0046 }, - { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0066 }, - { 0x0c, 0x06, -1, 0x03, 0x0842, 0x0086 }, - { 0x0c, 0x07, -1, 0x03, 0x0842, 0x00c6 }, - { 0x0c, 0x08, -1, 0x03, 0x0842, 0x0146 }, - { 0x0c, 0x09, -1, 0x03, 0x0842, 0x0246 }, - { 0x0c, 0x0a, -1, 0x03, 0x0842, 0x0446 }, - { 0x0c, 0x18, -1, 0x03, 0x0842, 0x0846 }, - { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0046 }, - { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0066 }, - { 0x0e, 0x06, -1, 0x03, 0x1842, 0x0086 }, - { 0x0e, 0x07, -1, 0x03, 0x1842, 0x00c6 }, - { 0x0e, 0x08, -1, 0x03, 0x1842, 0x0146 }, - { 0x0e, 0x09, -1, 0x03, 0x1842, 0x0246 }, - { 0x0e, 0x0a, -1, 0x03, 0x1842, 0x0446 }, - { 0x0e, 0x18, -1, 0x03, 0x1842, 0x0846 }, - { 0x18, 0x05, -1, 0x03, 0x5842, 0x0046 }, - { 0x18, 0x05, -1, 0x03, 0x5842, 0x0066 }, - { 0x18, 0x06, -1, 0x03, 0x5842, 0x0086 }, - { 0x18, 0x07, -1, 0x03, 0x5842, 0x00c6 }, - { 0x18, 0x08, -1, 0x03, 0x5842, 0x0146 }, - { 0x18, 0x09, -1, 0x03, 0x5842, 0x0246 }, - { 0x18, 0x0a, -1, 0x03, 0x5842, 0x0446 }, - { 0x18, 0x18, -1, 0x03, 0x5842, 0x0846 }, -}; diff --git a/icecat/modules/brotli/dec/state.c b/icecat/modules/brotli/dec/state.c index dcf61b9eb3..be6a26680b 100644 --- a/icecat/modules/brotli/dec/state.c +++ b/icecat/modules/brotli/dec/state.c @@ -6,32 +6,19 @@ #include "state.h" +#include /* free, malloc */ + +#include + #include "../common/dictionary.h" -#include "../common/platform.h" #include "huffman.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif -#ifdef BROTLI_REPORTING -/* When BROTLI_REPORTING is defined extra reporting module have to be linked. */ -void BrotliDecoderOnStart(const BrotliDecoderState* s); -void BrotliDecoderOnFinish(const BrotliDecoderState* s); -#define BROTLI_DECODER_ON_START(s) BrotliDecoderOnStart(s); -#define BROTLI_DECODER_ON_FINISH(s) BrotliDecoderOnFinish(s); -#else -#if !defined(BROTLI_DECODER_ON_START) -#define BROTLI_DECODER_ON_START(s) (void)(s); -#endif -#if !defined(BROTLI_DECODER_ON_FINISH) -#define BROTLI_DECODER_ON_FINISH(s) (void)(s); -#endif -#endif - BROTLI_BOOL BrotliDecoderStateInit(BrotliDecoderState* s, brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) { - BROTLI_DECODER_ON_START(s); if (!alloc_func) { s->alloc_func = BrotliDefaultAllocFunc; s->free_func = BrotliDefaultFreeFunc; @@ -148,6 +135,16 @@ void BrotliDecoderStateCleanupAfterMetablock(BrotliDecoderState* s) { BROTLI_DECODER_FREE(s, s->distance_hgroup.htrees); } +#ifdef BROTLI_REPORTING +/* When BROTLI_REPORTING is defined extra reporting module have to be linked. */ +void BrotliDecoderOnFinish(const BrotliDecoderState* s); +#define BROTLI_DECODER_ON_FINISH(s) BrotliDecoderOnFinish(s); +#else +#if !defined(BROTLI_DECODER_ON_FINISH) +#define BROTLI_DECODER_ON_FINISH(s) (void)(s); +#endif +#endif + void BrotliDecoderStateCleanup(BrotliDecoderState* s) { BrotliDecoderStateCleanupAfterMetablock(s); @@ -177,7 +174,7 @@ BROTLI_BOOL BrotliDecoderHuffmanTreeGroupInit(BrotliDecoderState* s, group->alphabet_size_limit = (uint16_t)alphabet_size_limit; group->num_htrees = (uint16_t)ntrees; group->htrees = p; - group->codes = p ? (HuffmanCode*)(&p[ntrees]) : NULL; + group->codes = (HuffmanCode*)(&p[ntrees]); return !!p; } diff --git a/icecat/modules/brotli/dec/state.h b/icecat/modules/brotli/dec/state.h index aa371fba2d..fd250b6842 100644 --- a/icecat/modules/brotli/dec/state.h +++ b/icecat/modules/brotli/dec/state.h @@ -9,10 +9,14 @@ #ifndef BROTLI_DEC_STATE_H_ #define BROTLI_DEC_STATE_H_ -#include "../common/constants.h" -#include "../common/platform.h" -#include #include +#include +#include + +#include "../common/constants.h" +#include "../common/dictionary.h" +#include "../common/platform.h" +#include "../common/transform.h" #include "bit_reader.h" #include "huffman.h" diff --git a/icecat/modules/brotli/dec/static_init.c b/icecat/modules/brotli/dec/static_init.c deleted file mode 100644 index 1345052c54..0000000000 --- a/icecat/modules/brotli/dec/static_init.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright 2025 Google Inc. All Rights Reserved. - - Distributed under MIT license. - See file LICENSE for detail or copy at https://opensource.org/licenses/MIT -*/ - -#include "static_init.h" - -#include "../common/platform.h" -#include "../common/static_init.h" - -#if (BROTLI_STATIC_INIT != BROTLI_STATIC_INIT_NONE) -#include "../common/dictionary.h" -#include "prefix.h" -#endif - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -#if (BROTLI_STATIC_INIT != BROTLI_STATIC_INIT_NONE) -static BROTLI_BOOL DoBrotliDecoderStaticInit(void) { - BROTLI_BOOL ok = BrotliDecoderInitCmdLut(kCmdLut); - if (!ok) return BROTLI_FALSE; - return BROTLI_TRUE; -} -#endif /* BROTLI_STATIC_INIT_NONE */ - -#if (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_EARLY) -static BROTLI_BOOL kEarlyInitOk; -static __attribute__((constructor)) void BrotliDecoderStaticInitEarly(void) { - kEarlyInitOk = DoBrotliDecoderStaticInit(); -} -#elif (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_LAZY) -static BROTLI_BOOL kLazyInitOk; -void BrotliDecoderLazyStaticInitInner(void) { - kLazyInitOk = DoBrotliDecoderStaticInit(); -} -#endif /* BROTLI_STATIC_INIT_EARLY */ - -BROTLI_BOOL BrotliDecoderEnsureStaticInit(void) { -#if (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_NONE) - return BROTLI_TRUE; -#elif (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_EARLY) - return kEarlyInitOk; -#else - return kLazyInitOk; -#endif -} - -#if defined(__cplusplus) || defined(c_plusplus) -} /* extern "C" */ -#endif diff --git a/icecat/modules/brotli/dec/static_init.h b/icecat/modules/brotli/dec/static_init.h deleted file mode 100644 index 4ae063ef5e..0000000000 --- a/icecat/modules/brotli/dec/static_init.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright 2025 Google Inc. All Rights Reserved. - - Distributed under MIT license. - See file LICENSE for detail or copy at https://opensource.org/licenses/MIT -*/ - -/* Central point for static initialization. */ - -#ifndef THIRD_PARTY_BROTLI_DEC_STATIC_INIT_H_ -#define THIRD_PARTY_BROTLI_DEC_STATIC_INIT_H_ - -#include "../common/platform.h" -#include "../common/static_init.h" - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -#if (BROTLI_STATIC_INIT == BROTLI_STATIC_INIT_LAZY) -BROTLI_INTERNAL void BrotliDecoderLazyStaticInitInner(void); -BROTLI_INTERNAL void BrotliDecoderLazyStaticInit(void); -#endif /* BROTLI_STATIC_INIT */ - -BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderEnsureStaticInit(void); - -#if defined(__cplusplus) || defined(c_plusplus) -} /* extern "C" */ -#endif - -#endif // THIRD_PARTY_BROTLI_DEC_STATIC_INIT_H_ diff --git a/icecat/modules/brotli/include/brotli/decode.h b/icecat/modules/brotli/include/brotli/decode.h index 10d01e3658..af1aa23f60 100644 --- a/icecat/modules/brotli/include/brotli/decode.h +++ b/icecat/modules/brotli/include/brotli/decode.h @@ -14,7 +14,7 @@ #include #include -#include /* IWYU pragma: export */ +#include #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -85,7 +85,9 @@ typedef enum { BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_1, -14) SEPARATOR \ BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_2, -15) SEPARATOR \ BROTLI_ERROR_CODE(_ERROR_FORMAT_, DISTANCE, -16) SEPARATOR \ - BROTLI_ERROR_CODE(_ERROR_FORMAT_, BLOCK_SWITCH, -17) SEPARATOR \ + \ + /* -17 code is reserved */ \ + \ BROTLI_ERROR_CODE(_ERROR_, COMPOUND_DICTIONARY, -18) SEPARATOR \ BROTLI_ERROR_CODE(_ERROR_, DICTIONARY_NOT_SET, -19) SEPARATOR \ BROTLI_ERROR_CODE(_ERROR_, INVALID_ARGUMENTS, -20) SEPARATOR \ diff --git a/icecat/modules/brotli/include/brotli/encode.h b/icecat/modules/brotli/include/brotli/encode.h index ac26ea8e62..dea9931ebb 100644 --- a/icecat/modules/brotli/include/brotli/encode.h +++ b/icecat/modules/brotli/include/brotli/encode.h @@ -14,7 +14,7 @@ #include #include -#include /* IWYU pragma: export */ +#include #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -283,10 +283,6 @@ typedef struct BrotliEncoderPreparedDictionaryStruct * passed to @p alloc_func and @p free_func when they are called. @p free_func * has to return without doing anything when asked to free a NULL pointer. * - * @warning Created instance is "lean"; it does not contain copy of @p data, - * rather it contains only pointer to it; therefore, - * @p data @b MUST outlive the created instance. - * * @param type type of dictionary stored in data * @param data_size size of @p data buffer * @param data pointer to the dictionary data diff --git a/icecat/modules/brotli/include/brotli/port.h b/icecat/modules/brotli/include/brotli/port.h index 11cefd791e..0d50019042 100644 --- a/icecat/modules/brotli/include/brotli/port.h +++ b/icecat/modules/brotli/include/brotli/port.h @@ -239,6 +239,8 @@ #define BROTLI_PUBLIC #endif +/* BROTLI_INTERNAL could be defined to override visibility, e.g. for tests. */ +#if !defined(BROTLI_INTERNAL) #if defined(_WIN32) || defined(__CYGWIN__) #define BROTLI_INTERNAL #elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) || \ @@ -253,6 +255,7 @@ #else #define BROTLI_INTERNAL #endif +#endif #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ !defined(__STDC_NO_VLA__) && !defined(__cplusplus) && \ @@ -269,20 +272,20 @@ #if defined(_WIN32) #if defined(BROTLICOMMON_SHARED_COMPILATION) #define BROTLI_COMMON_API __declspec(dllexport) -#else /* !BROTLICOMMON_SHARED_COMPILATION */ +#else #define BROTLI_COMMON_API __declspec(dllimport) #endif /* BROTLICOMMON_SHARED_COMPILATION */ #if defined(BROTLIDEC_SHARED_COMPILATION) #define BROTLI_DEC_API __declspec(dllexport) -#else /* !BROTLIDEC_SHARED_COMPILATION */ +#else #define BROTLI_DEC_API __declspec(dllimport) #endif /* BROTLIDEC_SHARED_COMPILATION */ #if defined(BROTLIENC_SHARED_COMPILATION) #define BROTLI_ENC_API __declspec(dllexport) -#else /* !BROTLIENC_SHARED_COMPILATION */ +#else #define BROTLI_ENC_API __declspec(dllimport) #endif /* BROTLIENC_SHARED_COMPILATION */ -#else /* !_WIN32 */ +#else /* _WIN32 */ #define BROTLI_COMMON_API BROTLI_PUBLIC #define BROTLI_DEC_API BROTLI_PUBLIC #define BROTLI_ENC_API BROTLI_PUBLIC diff --git a/icecat/modules/brotli/include/brotli/types.h b/icecat/modules/brotli/include/brotli/types.h index 2dc61ff407..eff1a3cd07 100644 --- a/icecat/modules/brotli/include/brotli/types.h +++ b/icecat/modules/brotli/include/brotli/types.h @@ -12,7 +12,7 @@ #ifndef BROTLI_COMMON_TYPES_H_ #define BROTLI_COMMON_TYPES_H_ -#include /* IWYU pragma: export */ +#include /* for size_t */ #if defined(_MSC_VER) && (_MSC_VER < 1600) typedef __int8 int8_t; @@ -24,7 +24,7 @@ typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; typedef __int64 int64_t; #else -#include /* IWYU pragma: export */ +#include #endif /* defined(_MSC_VER) && (_MSC_VER < 1600) */ /** diff --git a/icecat/modules/brotli/moz.build b/icecat/modules/brotli/moz.build index 17e7502a50..60db05ec90 100644 --- a/icecat/modules/brotli/moz.build +++ b/icecat/modules/brotli/moz.build @@ -25,9 +25,7 @@ UNIFIED_SOURCES += [ 'dec/bit_reader.c', 'dec/decode.c', 'dec/huffman.c', - 'dec/prefix.c', 'dec/state.c', - 'dec/static_init.c', ] # We allow warnings for third-party code that can be updated from upstream. diff --git a/icecat/modules/brotli/moz.yaml b/icecat/modules/brotli/moz.yaml index a1b5ada754..2b57032e1c 100644 --- a/icecat/modules/brotli/moz.yaml +++ b/icecat/modules/brotli/moz.yaml @@ -10,8 +10,8 @@ origin: url: https://github.com/google/brotli - release: 4792c8e4c4235f6b501f13dbd07a8b4b253eee21 (2026-04-08T19:24:31Z). - revision: 4792c8e4c4235f6b501f13dbd07a8b4b253eee21 + release: ed738e842d2fbdf2d6459e39267a633c4a9b2f5d (2023-08-29T11:00:29Z). + revision: ed738e842d2fbdf2d6459e39267a633c4a9b2f5d license: MIT @@ -24,10 +24,8 @@ vendoring: - ".*" - "*" - docs - - go - python - scripts - - java - tests - c/enc - c/tools @@ -50,5 +48,3 @@ vendoring: - action: move-dir from: '{vendor_dir}/c/dec' to: '{vendor_dir}/dec' - - action: delete-path - path: '{vendor_dir}/c' diff --git a/icecat/modules/libpref/Preferences.cpp b/icecat/modules/libpref/Preferences.cpp index 3e61673455..3886980be5 100644 --- a/icecat/modules/libpref/Preferences.cpp +++ b/icecat/modules/libpref/Preferences.cpp @@ -6209,6 +6209,7 @@ static const PrefListEntry sDynamicPrefOverrideList[]{ PREF_LIST_ENTRY("media.peerconnection.nat_simulator.network_delay_ms"), PREF_LIST_ENTRY("media.video_loopback_dev"), PREF_LIST_ENTRY("media.webspeech.service.endpoint"), + PREF_LIST_ENTRY("network.gio.supported-protocols"), PREF_LIST_ENTRY("network.protocol-handler.external."), PREF_LIST_ENTRY("network.security.ports.banned"), PREF_LIST_ENTRY("nimbus.syncdatastore."), diff --git a/icecat/modules/libpref/init/StaticPrefList.yaml b/icecat/modules/libpref/init/StaticPrefList.yaml index 90e485bc4b..bda247713f 100644 --- a/icecat/modules/libpref/init/StaticPrefList.yaml +++ b/icecat/modules/libpref/init/StaticPrefList.yaml @@ -1050,7 +1050,7 @@ # nsXPLookAndFeel::GenericDarkColor for Linktext. - name: browser.anchor_color.dark type: String - value: "#00CADB" + value: "#8C8CFF" mirror: never # See http://dev.w3.org/html5/spec/forms.html#attr-fe-autofocus @@ -3606,7 +3606,7 @@ # BrowsingContext. This includes calls to History and Location APIs. - name: dom.navigation.navigationRateLimit.count type: uint32_t - value: 1000 + value: 200 mirror: always # Time span in seconds for location change rate limit. @@ -4999,15 +4999,9 @@ value: 30000 mirror: always -# TCPSocket API -- name: dom.tcpsocket_in_child.enabled - type: RelaxedAtomicBool - value: false - mirror: always - # UDPSocket API - name: dom.udpsocket.enabled - type: RelaxedAtomicBool + type: bool value: false mirror: always @@ -11263,6 +11257,12 @@ value: @IS_NOT_XP_MACOSX@ mirror: always +# How long in milliseconds before timing out to destroy en/decoders gracefully +- name: media.gmp.coder-shutdown-timeout-ms + type: RelaxedAtomicUint32 + value: 1000 + mirror: always + #if defined(XP_LINUX) && defined(MOZ_SANDBOX) # Whether to allow, on a Linux system that doesn't support the necessary # sandboxing features, loading Gecko Media Plugins unsandboxed. However, EME @@ -13475,12 +13475,6 @@ login-us.microsoftonline.com mirror: never -# Whether to fallback to old mime-type parser when CMimeType::Parse fails -- name: network.http.fallback_to_net_parse_ct - type: RelaxedAtomicBool - value: true - mirror: always - # The factor by which to increase the keepalive timeout when the # NS_HTTP_LARGE_KEEPALIVE flag is used for a connection - name: network.http.largeKeepaliveFactor @@ -15403,7 +15397,7 @@ # Set to * to allow all schemes. - name: network.http_index_format.allowed_schemes type: String - value: "file" + value: "file,moz-gio" mirror: never # Enable off-main-thread decompression of network streams @@ -18224,11 +18218,6 @@ value: false mirror: always -- name: webgl.max-bytes-per-row - type: RelaxedAtomicUint32 - value: 2147483647 # 0 => no limit, >0 => max valid bytes per row - mirror: always - - name: webgl.max-contexts type: RelaxedAtomicUint32 value: 1000 diff --git a/icecat/modules/libpref/init/all.js b/icecat/modules/libpref/init/all.js index 4c33653f7a..246e967659 100644 --- a/icecat/modules/libpref/init/all.js +++ b/icecat/modules/libpref/init/all.js @@ -154,22 +154,6 @@ pref("dom.keyboardevent.keypress.hack.use_legacy_keycode_and_charcode.addl", "") // enabled here, the feature may not be visible in all browsers. pref("dom.text-recognition.enabled", true); -// Blocklist of domains of web apps which we should not dispatch `input` event -// immediately before `compositionend`. -pref("editor.texteditor.inputevent.hack.no_dispatch_before_compositionend", ""); -pref("editor.htmleditor.inputevent.hack.no_dispatch_before_compositionend", ""); -// Pref for end-users and policy to add additional values. -pref("editor.texteditor.inputevent.hack.no_dispatch_before_compositionend.addl", ""); -pref("editor.htmleditor.inputevent.hack.no_dispatch_before_compositionend.addl", ""); - -// Blocklist of domains of web apps which we should not dispatch `input` event -// immediately after `compositionend`. -pref("editor.texteditor.inputevent.hack.no_dispatch_after_compositionend", ""); -pref("editor.htmleditor.inputevent.hack.no_dispatch_after_compositionend", ""); -// Pref for end-users and policy to add additional values. -pref("editor.texteditor.inputevent.hack.no_dispatch_after_compositionend.addl", ""); -pref("editor.htmleditor.inputevent.hack.no_dispatch_after_compositionend.addl", ""); - // Fastback caching - if this pref is negative, then we calculate the number // of content viewers to cache based on the amount of available memory. pref("browser.sessionhistory.max_total_viewers", -1); @@ -407,9 +391,7 @@ pref("gfx.downloadable_fonts.fallback_delay", 3000); pref("gfx.downloadable_fonts.fallback_delay_short", 100); #ifdef XP_WIN - // Bug 2011408 will remove this pref and the code that uses it completely if - // we don't see any performance issues. - pref("gfx.font_rendering.directwrite.use_gdi_table_loading", false); + pref("gfx.font_rendering.directwrite.use_gdi_table_loading", true); #endif #if defined(XP_WIN) diff --git a/icecat/modules/libpref/parser/src/lib.rs b/icecat/modules/libpref/parser/src/lib.rs index 7192a22c32..3a0ad2c777 100644 --- a/icecat/modules/libpref/parser/src/lib.rs +++ b/icecat/modules/libpref/parser/src/lib.rs @@ -352,8 +352,7 @@ impl<'t> Parser<'t> { Parser { path: path, kind: kind, - // Skip a UTF-8 BOM if present at the start of the input. - buf: buf.strip_prefix(&[0xef, 0xbb, 0xbf]).unwrap_or(buf), + buf: buf, i: 0, line_num: 1, pref_fn: pref_fn, diff --git a/icecat/modules/libpref/test/gtest/Parser.cpp b/icecat/modules/libpref/test/gtest/Parser.cpp index f4ecbe896f..972d32cfca 100644 --- a/icecat/modules/libpref/test/gtest/Parser.cpp +++ b/icecat/modules/libpref/test/gtest/Parser.cpp @@ -492,17 +492,5 @@ pref("int.ok", 0); "test:4: prefs parse error: unknown keyword\n" ); - // UTF-8 BOM should be skipped at the start of the input. - USER("\xEF\xBB\xBF" R"( -user_pref("int.ok", 1); - )", - "" - ); - - // UTF-8 BOM followed by no content. - USER("\xEF\xBB\xBF", - "" - ); - // clang-format on } diff --git a/icecat/modules/zlib/moz.yaml b/icecat/modules/zlib/moz.yaml deleted file mode 100644 index 3bd35eaf11..0000000000 --- a/icecat/modules/zlib/moz.yaml +++ /dev/null @@ -1,154 +0,0 @@ -schema: 1 - -bugzilla: - product: Core - component: General - -origin: - name: zlib - description: A massively spiffy yet delicately unobtrusive compression library - - url: https://github.com/madler/zlib - - release: v1.3.2 (2026-02-17T05:01:19-08:00). - revision: v1.3.2 - - license: Zlib - -vendoring: - url: https://github.com/madler/zlib - source-hosting: github - tracking: tag - - exclude: - - ".**" - - "*.cmakein" - - "*.in" - - "*.map" - - "*.xml" - - "**/CMakeLists.txt" - - "BUILD.bazel" - - "CMakeLists.txt" - - "FAQ" - - "INDEX" - - "Makefile" - - "Makefile.in" - - "MODULE.bazel" - - "README-cmake.md" - - "amiga" - - "configure" - - "contrib" - - "doc" - - "examples" - - "make_vms.com" - - "msdos" - - "nintendods" - - "old" - - "os400" - - "qnx" - - "test" - - "watcom" - - "win32" - - "zlib.3" - - "zlib.3.pdf" - - include: - - "*.c" - - "*.h" - - ChangeLog - - LICENSE - - README - - keep: - - LICENSE - - src/mozzconf.h - - src/moz.build - - patches: - - mozzconf.patch - - update-actions: - - action: move-file - from: '{vendor_dir}/adler32.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/compress.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/crc32.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/deflate.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/gzclose.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/gzlib.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/gzread.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/gzwrite.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/infback.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/inffast.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/inflate.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/inftrees.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/trees.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/uncompr.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/zutil.c' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/crc32.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/deflate.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/gzguts.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/inffast.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/inffixed.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/inflate.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/inftrees.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/trees.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/zconf.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/zlib.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/zutil.h' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/ChangeLog' - to: '{vendor_dir}/src/' - - action: move-file - from: '{vendor_dir}/README' - to: '{vendor_dir}/src/' diff --git a/icecat/modules/zlib/mozzconf.patch b/icecat/modules/zlib/mozzconf.patch deleted file mode 100644 index fe2387876f..0000000000 --- a/icecat/modules/zlib/mozzconf.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/zconf.h b/src/zconf.h ---- a/src/zconf.h -+++ b/src/zconf.h -@@ -8,6 +8,9 @@ - #ifndef ZCONF_H - #define ZCONF_H - -+/* This header does prefixing as below, but with an updated set of names. */ -+#include "mozzconf.h" -+ - /* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. diff --git a/icecat/modules/zlib/src/ChangeLog b/icecat/modules/zlib/src/ChangeLog index 312753edad..b801a1031e 100644 --- a/icecat/modules/zlib/src/ChangeLog +++ b/icecat/modules/zlib/src/ChangeLog @@ -1,57 +1,6 @@ ChangeLog file for zlib -Changes in 1.3.2 (17 Feb 2026) -- Continued rewrite of CMake build [Vollstrecker] -- Various portability improvements -- Various github workflow additions and improvements -- Check for negative lengths in crc32_combine functions -- Copy only the initialized window contents in inflateCopy -- Prevent the use of insecure functions without an explicit request -- Add compressBound_z and deflateBound_z functions for large values -- Use atomics to build inflate fixed tables once -- Add definition of ZLIB_INSECURE to build tests with c89 and c94 -- Add --undefined option to ./configure for UBSan checker -- Copy only the initialized deflate state in deflateCopy -- Zero inflate state on allocation -- Remove untgz from contrib -- Add _z versions of the compress and uncompress functions -- Vectorize the CRC-32 calculation on the s390x -- Set bit 11 of the zip header flags in minizip if UTF-8 -- Update OS/400 support -- Add a test to configure to check for a working compiler -- Check for invalid NULL pointer inputs to zlib operations -- Add --mandir to ./configure to specify manual directory -- Add LICENSE.Info-Zip to contrib/minizip -- Remove vstudio projects in lieu of cmake-generated projects -- Replace strcpy() with memcpy() in contrib/minizip - -Changes in 1.3.1.2 (8 Dec 2025) -- Improve portability to RISC OS -- Permit compiling contrib/minizip/unzip.c with decryption -- Enable build of shared library on AIX -- Make deflateBound() more conservative and handle Z_STREAM_END -- Add zipAlreadyThere() to minizip zip.c to help avoid duplicates -- Make z_off_t 64 bits by default -- Add deflateUsed() function to get the used bits in the last byte -- Avoid out-of-bounds pointer arithmetic in inflateCopy() -- Add Haiku to configure for proper LDSHARED settings -- Add Bazel targets -- Complete rewrite of CMake build [Vollstrecker] -- Clarify the use of errnum in gzerror() -- Note that gzseek() requests are deferred until the next operation -- Note the use of gzungetc() to run a deferred seek while reading -- Fix bug in inflatePrime() for 16-bit ints -- Add a "G" option to force gzip, disabling transparency in gzread() -- Improve the discrimination between trailing garbage and bad gzip -- Allow gzflush() to write empty gzip members -- Remove redundant frees of point list on error in examples/zran.c -- Clarify the use of inflateGetHeader() -- Update links to the RFCs -- Return all available uncompressed data on error in gzread.c -- Support non-blocking devices in the gz* routines -- Various other small improvements - Changes in 1.3.1 (22 Jan 2024) - Reject overflows of zip header fields in minizip - Fix bug in inflateSync() for data held in bit buffer diff --git a/icecat/modules/zlib/src/ChangeLog.moz b/icecat/modules/zlib/src/ChangeLog.moz new file mode 100644 index 0000000000..ca9e3cd870 --- /dev/null +++ b/icecat/modules/zlib/src/ChangeLog.moz @@ -0,0 +1,97 @@ + + Mozilla ChangeLog file for zlib + +Mozilla.org changes: +- 17 June 2004 + Sync'd with 1.2.1 release + see bug #226733 + +- 17 June 2004 + Add mozzconf.h + +- 17 June 2004 + Turn off ZLIB_DLL to fix static build bustage + +- 24 June 2004 + do not prototype strerror for VMS in zutil.h + +- 25 June 2004 + define NO_vsnprintf for VMS in zutil.h + +- 21 September 2004 + applied patch for DoS vulnerabililty in inflate.c + see bug #258009 + +- 02 November 2004 + Sync'ed with 1.2.2 release + (keeping '#include "mozzconf.h"' in zconf.h) + Our patches of 24, 25 June and 21 Sept are now in the zlib + distribution. + See bug #248644 + +- 24 July 2005 + Sync'ed with 1.2.3 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bugs #299445 and #300349 + +- 24 July 2005 + Added treatment of HAVE_VISIBILITY_PRAGMA in mozzconf.h + +- 24 July 2005 + Updated zlib.def with new symbols in zlib version 1.2.3 + +- 13 September 2009 + Don't enable zlib's debug output when the Mozilla build is in debug mode (bug 431950) + +- 18 September 2010 + Sync'ed with 1.2.5 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #573137 + +- 8 February 2012 + Sync'ed with 1.2.6 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #722391 + +- 4 May 2012 + Sync'ed with 1.2.7 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #751697 + +- 9 May 2013 + Sync'ed with 1.2.8 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #866964 + +- 16 January 2017 + Sync'ed with 1.2.11 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #1328099 + +- 28 May 2021 + Add because of the error: implicit declaration of function {lseek, read, write} is invalid in C99. + See bug #1701197 + +- 28 March 2022 + Backport upstream fix for CVE-2018-25032 + See bug #1761799 + +- 29 March 2022 + Sync'ed with 1.2.12 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #1761764 + +- 21 October 2022 + Sync'ed with 1.2.13 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #1796811 + +- 18 August 2023 + Sync'ed with 1.3 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #1849470 + +- 23 January 2024 + Sync'ed with 1.3.1 release + (keeping '#include "mozzconf.h"' in zconf.h) + See bug #1875968 diff --git a/icecat/modules/zlib/src/FAQ b/icecat/modules/zlib/src/FAQ new file mode 100644 index 0000000000..92f5d3e29f --- /dev/null +++ b/icecat/modules/zlib/src/FAQ @@ -0,0 +1,367 @@ + + Frequently Asked Questions about zlib + + +If your question is not there, please check the zlib home page +http://zlib.net/ which may have more recent information. +The latest zlib FAQ is at http://zlib.net/zlib_faq.html + + + 1. Is zlib Y2K-compliant? + + Yes. zlib doesn't handle dates. + + 2. Where can I get a Windows DLL version? + + The zlib sources can be compiled without change to produce a DLL. See the + file win32/DLL_FAQ.txt in the zlib distribution. + + 3. Where can I get a Visual Basic interface to zlib? + + See + * http://marknelson.us/1997/01/01/zlib-engine/ + * win32/DLL_FAQ.txt in the zlib distribution + + 4. compress() returns Z_BUF_ERROR. + + Make sure that before the call of compress(), the length of the compressed + buffer is equal to the available size of the compressed buffer and not + zero. For Visual Basic, check that this parameter is passed by reference + ("as any"), not by value ("as long"). + + 5. deflate() or inflate() returns Z_BUF_ERROR. + + Before making the call, make sure that avail_in and avail_out are not zero. + When setting the parameter flush equal to Z_FINISH, also make sure that + avail_out is big enough to allow processing all pending input. Note that a + Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be + made with more input or output space. A Z_BUF_ERROR may in fact be + unavoidable depending on how the functions are used, since it is not + possible to tell whether or not there is more output pending when + strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a + heavily annotated example. + + 6. Where's the zlib documentation (man pages, etc.)? + + It's in zlib.h . Examples of zlib usage are in the files test/example.c + and test/minigzip.c, with more in examples/ . + + 7. Why don't you use GNU autoconf or libtool or ...? + + Because we would like to keep zlib as a very small and simple package. + zlib is rather portable and doesn't need much configuration. + + 8. I found a bug in zlib. + + Most of the time, such problems are due to an incorrect usage of zlib. + Please try to reproduce the problem with a small program and send the + corresponding source to us at zlib@gzip.org . Do not send multi-megabyte + data files without prior agreement. + + 9. Why do I get "undefined reference to gzputc"? + + If "make test" produces something like + + example.o(.text+0x154): undefined reference to `gzputc' + + check that you don't have old files libz.* in /usr/lib, /usr/local/lib or + /usr/X11R6/lib. Remove any old versions, then do "make install". + +10. I need a Delphi interface to zlib. + + See the contrib/delphi directory in the zlib distribution. + +11. Can zlib handle .zip archives? + + Not by itself, no. See the directory contrib/minizip in the zlib + distribution. + +12. Can zlib handle .Z files? + + No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt + the code of uncompress on your own. + +13. How can I make a Unix shared library? + + By default a shared (and a static) library is built for Unix. So: + + make distclean + ./configure + make + +14. How do I install a shared zlib library on Unix? + + After the above, then: + + make install + + However, many flavors of Unix come with a shared zlib already installed. + Before going to the trouble of compiling a shared version of zlib and + trying to install it, you may want to check if it's already there! If you + can #include , it's there. The -lz option will probably link to + it. You can check the version at the top of zlib.h or with the + ZLIB_VERSION symbol defined in zlib.h . + +15. I have a question about OttoPDF. + + We are not the authors of OttoPDF. The real author is on the OttoPDF web + site: Joel Hainley, jhainley@myndkryme.com. + +16. Can zlib decode Flate data in an Adobe PDF file? + + Yes. See http://www.pdflib.com/ . To modify PDF forms, see + http://sourceforge.net/projects/acroformtool/ . + +17. Why am I getting this "register_frame_info not found" error on Solaris? + + After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib + generates an error such as: + + ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so: + symbol __register_frame_info: referenced symbol not found + + The symbol __register_frame_info is not part of zlib, it is generated by + the C compiler (cc or gcc). You must recompile applications using zlib + which have this problem. This problem is specific to Solaris. See + http://www.sunfreeware.com for Solaris versions of zlib and applications + using zlib. + +18. Why does gzip give an error on a file I make with compress/deflate? + + The compress and deflate functions produce data in the zlib format, which + is different and incompatible with the gzip format. The gz* functions in + zlib on the other hand use the gzip format. Both the zlib and gzip formats + use the same compressed data format internally, but have different headers + and trailers around the compressed data. + +19. Ok, so why are there two different formats? + + The gzip format was designed to retain the directory information about a + single file, such as the name and last modification date. The zlib format + on the other hand was designed for in-memory and communication channel + applications, and has a much more compact header and trailer and uses a + faster integrity check than gzip. + +20. Well that's nice, but how do I make a gzip file in memory? + + You can request that deflate write the gzip format instead of the zlib + format using deflateInit2(). You can also request that inflate decode the + gzip format using inflateInit2(). Read zlib.h for more details. + +21. Is zlib thread-safe? + + Yes. However any library routines that zlib uses and any application- + provided memory allocation routines must also be thread-safe. zlib's gz* + functions use stdio library routines, and most of zlib's functions use the + library memory allocation routines by default. zlib's *Init* functions + allow for the application to provide custom memory allocation routines. + + Of course, you should only operate on any given zlib or gzip stream from a + single thread at a time. + +22. Can I use zlib in my commercial application? + + Yes. Please read the license in zlib.h. + +23. Is zlib under the GNU license? + + No. Please read the license in zlib.h. + +24. The license says that altered source versions must be "plainly marked". So + what exactly do I need to do to meet that requirement? + + You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In + particular, the final version number needs to be changed to "f", and an + identification string should be appended to ZLIB_VERSION. Version numbers + x.x.x.f are reserved for modifications to zlib by others than the zlib + maintainers. For example, if the version of the base zlib you are altering + is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and + ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also + update the version strings in deflate.c and inftrees.c. + + For altered source distributions, you should also note the origin and + nature of the changes in zlib.h, as well as in ChangeLog and README, along + with the dates of the alterations. The origin should include at least your + name (or your company's name), and an email address to contact for help or + issues with the library. + + Note that distributing a compiled zlib library along with zlib.h and + zconf.h is also a source distribution, and so you should change + ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes + in zlib.h as you would for a full source distribution. + +25. Will zlib work on a big-endian or little-endian architecture, and can I + exchange compressed data between them? + + Yes and yes. + +26. Will zlib work on a 64-bit machine? + + Yes. It has been tested on 64-bit machines, and has no dependence on any + data types being limited to 32-bits in length. If you have any + difficulties, please provide a complete problem report to zlib@gzip.org + +27. Will zlib decompress data from the PKWare Data Compression Library? + + No. The PKWare DCL uses a completely different compressed data format than + does PKZIP and zlib. However, you can look in zlib's contrib/blast + directory for a possible solution to your problem. + +28. Can I access data randomly in a compressed stream? + + No, not without some preparation. If when compressing you periodically use + Z_FULL_FLUSH, carefully write all the pending data at those points, and + keep an index of those locations, then you can start decompression at those + points. You have to be careful to not use Z_FULL_FLUSH too often, since it + can significantly degrade compression. Alternatively, you can scan a + deflate stream once to generate an index, and then use that index for + random access. See examples/zran.c . + +29. Does zlib work on MVS, OS/390, CICS, etc.? + + It has in the past, but we have not heard of any recent evidence. There + were working ports of zlib 1.1.4 to MVS, but those links no longer work. + If you know of recent, successful applications of zlib on these operating + systems, please let us know. Thanks. + +30. Is there some simpler, easier to read version of inflate I can look at to + understand the deflate format? + + First off, you should read RFC 1951. Second, yes. Look in zlib's + contrib/puff directory. + +31. Does zlib infringe on any patents? + + As far as we know, no. In fact, that was originally the whole point behind + zlib. Look here for some more information: + + http://www.gzip.org/#faq11 + +32. Can zlib work with greater than 4 GB of data? + + Yes. inflate() and deflate() will process any amount of data correctly. + Each call of inflate() or deflate() is limited to input and output chunks + of the maximum value that can be stored in the compiler's "unsigned int" + type, but there is no limit to the number of chunks. Note however that the + strm.total_in and strm_total_out counters may be limited to 4 GB. These + counters are provided as a convenience and are not used internally by + inflate() or deflate(). The application can easily set up its own counters + updated after each call of inflate() or deflate() to count beyond 4 GB. + compress() and uncompress() may be limited to 4 GB, since they operate in a + single call. gzseek() and gztell() may be limited to 4 GB depending on how + zlib is compiled. See the zlibCompileFlags() function in zlib.h. + + The word "may" appears several times above since there is a 4 GB limit only + if the compiler's "long" type is 32 bits. If the compiler's "long" type is + 64 bits, then the limit is 16 exabytes. + +33. Does zlib have any security vulnerabilities? + + The only one that we are aware of is potentially in gzprintf(). If zlib is + compiled to use sprintf() or vsprintf(), then there is no protection + against a buffer overflow of an 8K string space (or other value as set by + gzbuffer()), other than the caller of gzprintf() assuring that the output + will not exceed 8K. On the other hand, if zlib is compiled to use + snprintf() or vsnprintf(), which should normally be the case, then there is + no vulnerability. The ./configure script will display warnings if an + insecure variation of sprintf() will be used by gzprintf(). Also the + zlibCompileFlags() function will return information on what variant of + sprintf() is used by gzprintf(). + + If you don't have snprintf() or vsnprintf() and would like one, you can + find a portable implementation here: + + http://www.ijs.si/software/snprintf/ + + Note that you should be using the most recent version of zlib. Versions + 1.1.3 and before were subject to a double-free vulnerability, and versions + 1.2.1 and 1.2.2 were subject to an access exception when decompressing + invalid compressed data. + +34. Is there a Java version of zlib? + + Probably what you want is to use zlib in Java. zlib is already included + as part of the Java SDK in the java.util.zip package. If you really want + a version of zlib written in the Java language, look on the zlib home + page for links: http://zlib.net/ . + +35. I get this or that compiler or source-code scanner warning when I crank it + up to maximally-pedantic. Can't you guys write proper code? + + Many years ago, we gave up attempting to avoid warnings on every compiler + in the universe. It just got to be a waste of time, and some compilers + were downright silly as well as contradicted each other. So now, we simply + make sure that the code always works. + +36. Valgrind (or some similar memory access checker) says that deflate is + performing a conditional jump that depends on an uninitialized value. + Isn't that a bug? + + No. That is intentional for performance reasons, and the output of deflate + is not affected. This only started showing up recently since zlib 1.2.x + uses malloc() by default for allocations, whereas earlier versions used + calloc(), which zeros out the allocated memory. Even though the code was + correct, versions 1.2.4 and later was changed to not stimulate these + checkers. + +37. Will zlib read the (insert any ancient or arcane format here) compressed + data format? + + Probably not. Look in the comp.compression FAQ for pointers to various + formats and associated software. + +38. How can I encrypt/decrypt zip files with zlib? + + zlib doesn't support encryption. The original PKZIP encryption is very + weak and can be broken with freely available programs. To get strong + encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib + compression. For PKZIP compatible "encryption", look at + http://www.info-zip.org/ + +39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings? + + "gzip" is the gzip format, and "deflate" is the zlib format. They should + probably have called the second one "zlib" instead to avoid confusion with + the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 + correctly points to the zlib specification in RFC 1950 for the "deflate" + transfer encoding, there have been reports of servers and browsers that + incorrectly produce or expect raw deflate data per the deflate + specification in RFC 1951, most notably Microsoft. So even though the + "deflate" transfer encoding using the zlib format would be the more + efficient approach (and in fact exactly what the zlib format was designed + for), using the "gzip" transfer encoding is probably more reliable due to + an unfortunate choice of name on the part of the HTTP 1.1 authors. + + Bottom line: use the gzip format for HTTP 1.1 encoding. + +40. Does zlib support the new "Deflate64" format introduced by PKWare? + + No. PKWare has apparently decided to keep that format proprietary, since + they have not documented it as they have previous compression formats. In + any case, the compression improvements are so modest compared to other more + modern approaches, that it's not worth the effort to implement. + +41. I'm having a problem with the zip functions in zlib, can you help? + + There are no zip functions in zlib. You are probably using minizip by + Giles Vollant, which is found in the contrib directory of zlib. It is not + part of zlib. In fact none of the stuff in contrib is part of zlib. The + files in there are not supported by the zlib authors. You need to contact + the authors of the respective contribution for help. + +42. The match.asm code in contrib is under the GNU General Public License. + Since it's part of zlib, doesn't that mean that all of zlib falls under the + GNU GPL? + + No. The files in contrib are not part of zlib. They were contributed by + other authors and are provided as a convenience to the user within the zlib + distribution. Each item in contrib has its own license. + +43. Is zlib subject to export controls? What is its ECCN? + + zlib is not subject to export controls, and so is classified as EAR99. + +44. Can you please sign these lengthy legal documents and fax them back to us + so that we can use your software in our product? + + No. Go away. Shoo. diff --git a/icecat/modules/zlib/src/INDEX b/icecat/modules/zlib/src/INDEX new file mode 100644 index 0000000000..2ba0641204 --- /dev/null +++ b/icecat/modules/zlib/src/INDEX @@ -0,0 +1,68 @@ +CMakeLists.txt cmake build file +ChangeLog history of changes +FAQ Frequently Asked Questions about zlib +INDEX this file +Makefile dummy Makefile that tells you to ./configure +Makefile.in template for Unix Makefile +README guess what +configure configure script for Unix +make_vms.com makefile for VMS +test/example.c zlib usages examples for build testing +test/minigzip.c minimal gzip-like functionality for build testing +test/infcover.c inf*.c code coverage for build coverage testing +treebuild.xml XML description of source file dependencies +zconf.h.cmakein zconf.h template for cmake +zconf.h.in zconf.h template for configure +zlib.3 Man page for zlib +zlib.3.pdf Man page in PDF format +zlib.map Linux symbol information +zlib.pc.in Template for pkg-config descriptor +zlib.pc.cmakein zlib.pc template for cmake +zlib2ansi perl script to convert source files for C++ compilation + +amiga/ makefiles for Amiga SAS C +as400/ makefiles for AS/400 +doc/ documentation for formats and algorithms +msdos/ makefiles for MSDOS +nintendods/ makefile for Nintendo DS +old/ makefiles for various architectures and zlib documentation + files that have not yet been updated for zlib 1.2.x +qnx/ makefiles for QNX +watcom/ makefiles for OpenWatcom +win32/ makefiles for Windows + + zlib public header files (required for library use): +zconf.h +zlib.h + + private source files used to build the zlib library: +adler32.c +compress.c +crc32.c +crc32.h +deflate.c +deflate.h +gzclose.c +gzguts.h +gzlib.c +gzread.c +gzwrite.c +infback.c +inffast.c +inffast.h +inffixed.h +inflate.c +inflate.h +inftrees.c +inftrees.h +trees.c +trees.h +uncompr.c +zutil.c +zutil.h + + source files for sample programs +See examples/README.examples + + unsupported contributions by third parties +See contrib/README.contrib diff --git a/icecat/modules/zlib/LICENSE b/icecat/modules/zlib/src/LICENSE similarity index 95% rename from icecat/modules/zlib/LICENSE rename to icecat/modules/zlib/src/LICENSE index b7a69d058e..ab8ee6f714 100644 --- a/icecat/modules/zlib/LICENSE +++ b/icecat/modules/zlib/src/LICENSE @@ -1,6 +1,6 @@ Copyright notice: - (C) 1995-2026 Jean-loup Gailly and Mark Adler + (C) 1995-2022 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/icecat/modules/zlib/src/README b/icecat/modules/zlib/src/README index 2b1e6f36fe..c5f917540b 100644 --- a/icecat/modules/zlib/src/README +++ b/icecat/modules/zlib/src/README @@ -1,10 +1,10 @@ ZLIB DATA COMPRESSION LIBRARY -zlib 1.3.2 is a general purpose data compression library. All the code is -thread safe (though see the FAQ for caveats). The data format used by the zlib -library is described by RFCs (Request for Comments) 1950 to 1952 at -https://datatracker.ietf.org/doc/html/rfc1950 (zlib format), rfc1951 (deflate -format) and rfc1952 (gzip format). +zlib 1.3.1 is a general purpose data compression library. All the code is +thread safe. The data format used by the zlib library is described by RFCs +(Request for Comments) 1950 to 1952 in the files +http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and +rfc1952 (gzip format). All functions of the compression library are documented in the file zlib.h (volunteer to write man pages welcome, contact zlib@gzip.org). A usage example @@ -21,17 +21,17 @@ make_vms.com. Questions about zlib should be sent to , or to Gilles Vollant for the Windows DLL version. The zlib home page is -https://zlib.net/ . Before reporting a problem, please check this site to +http://zlib.net/ . Before reporting a problem, please check this site to verify that you have the latest version of zlib; otherwise get the latest version and check whether the problem still exists or not. -PLEASE read the zlib FAQ https://zlib.net/zlib_faq.html before asking for help. +PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. Mark Nelson wrote an article about zlib for the Jan. 1997 issue of Dr. Dobb's Journal; a copy of the article is available at -https://zlib.net/nelson/ . +https://marknelson.us/posts/1997/01/01/zlib-engine.html . -The changes made in version 1.3.2 are documented in the file ChangeLog. +The changes made in version 1.3.1 are documented in the file ChangeLog. Unsupported third party contributions are provided in directory contrib/ . @@ -43,9 +43,9 @@ can be found at https://github.com/pmqs/IO-Compress . A Python interface to zlib written by A.M. Kuchling is available in Python 1.5 and later versions, see -https://docs.python.org/3/library/zlib.html . +http://docs.python.org/library/zlib.html . -zlib is built into tcl: https://wiki.tcl-lang.org/page/zlib . +zlib is built into tcl: http://wiki.tcl.tk/4610 . An experimental package to read and write files in .zip format, written on top of zlib by Gilles Vollant , is available in the @@ -69,7 +69,9 @@ Notes for some targets: - zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with other compilers. Use "make test" to check your compiler. -- For PalmOs, see https://palmzlib.sourceforge.net/ +- gzdopen is not supported on RISCOS or BEOS. + +- For PalmOs, see http://palmzlib.sourceforge.net/ Acknowledgments: @@ -81,7 +83,7 @@ Acknowledgments: Copyright notice: - (C) 1995-2026 Jean-loup Gailly and Mark Adler + (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/icecat/modules/zlib/src/compress.c b/icecat/modules/zlib/src/compress.c index bd74b9488e..f43bacf7ab 100644 --- a/icecat/modules/zlib/src/compress.c +++ b/icecat/modules/zlib/src/compress.c @@ -1,5 +1,5 @@ /* compress.c -- compress a memory buffer - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -18,19 +18,13 @@ compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. - - The _z versions of the functions take size_t length arguments. */ -int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t sourceLen, int level) { +int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen, int level) { z_stream stream; int err; const uInt max = (uInt)-1; - z_size_t left; - - if ((sourceLen > 0 && source == NULL) || - destLen == NULL || (*destLen > 0 && dest == NULL)) - return Z_STREAM_ERROR; + uLong left; left = *destLen; *destLen = 0; @@ -49,36 +43,23 @@ int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (z_size_t)max ? max : (uInt)left; + stream.avail_out = left > (uLong)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = sourceLen > (z_size_t)max ? max : - (uInt)sourceLen; + stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen; sourceLen -= stream.avail_in; } err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH); } while (err == Z_OK); - *destLen = (z_size_t)(stream.next_out - dest); + *destLen = stream.total_out; deflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err; } -int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong sourceLen, int level) { - int ret; - z_size_t got = *destLen; - ret = compress2_z(dest, &got, source, sourceLen, level); - *destLen = (uLong)got; - return ret; -} + /* =========================================================================== */ -int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t sourceLen) { - return compress2_z(dest, destLen, source, sourceLen, - Z_DEFAULT_COMPRESSION); -} int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); @@ -88,12 +69,7 @@ int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, If the default memLevel or windowBits for deflateInit() is changed, then this function needs to be updated. */ -z_size_t ZEXPORT compressBound_z(z_size_t sourceLen) { - z_size_t bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13; - return bound < sourceLen ? (z_size_t)-1 : bound; -} uLong ZEXPORT compressBound(uLong sourceLen) { - z_size_t bound = compressBound_z(sourceLen); - return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13; } diff --git a/icecat/modules/zlib/src/crc32.c b/icecat/modules/zlib/src/crc32.c index d9ade51502..6c38f5c04c 100644 --- a/icecat/modules/zlib/src/crc32.c +++ b/icecat/modules/zlib/src/crc32.c @@ -1,5 +1,5 @@ /* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h * * This interleaved implementation of a CRC makes use of pipelined multiple @@ -24,18 +24,11 @@ # include # ifndef DYNAMIC_CRC_TABLE # define DYNAMIC_CRC_TABLE -# endif -#endif -#ifdef DYNAMIC_CRC_TABLE -# define Z_ONCE -#endif +# endif /* !DYNAMIC_CRC_TABLE */ +#endif /* MAKECRCH */ #include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */ -#ifdef HAVE_S390X_VX -# include "contrib/crc32vx/crc32_vx_hooks.h" -#endif - /* A CRC of a message is computed on N braids of words in the message, where each word consists of W bytes (4 or 8). If N is 3, for example, then three @@ -106,8 +99,7 @@ #endif /* If available, use the ARM processor CRC32 instruction. */ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && \ - defined(W) && W == 8 +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 # define ARMCRC32 #endif @@ -160,10 +152,10 @@ local z_word_t byte_swap(z_word_t word) { Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, reflected. For speed, this requires that a not be zero. */ -local uLong multmodp(uLong a, uLong b) { - uLong m, p; +local z_crc_t multmodp(z_crc_t a, z_crc_t b) { + z_crc_t m, p; - m = (uLong)1 << 31; + m = (z_crc_t)1 << 31; p = 0; for (;;) { if (a & m) { @@ -179,12 +171,12 @@ local uLong multmodp(uLong a, uLong b) { /* Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been - initialized. n must not be negative. + initialized. */ -local uLong x2nmodp(z_off64_t n, unsigned k) { - uLong p; +local z_crc_t x2nmodp(z_off64_t n, unsigned k) { + z_crc_t p; - p = (uLong)1 << 31; /* x^0 == 1 */ + p = (z_crc_t)1 << 31; /* x^0 == 1 */ while (n) { if (n & 1) p = multmodp(x2n_table[k & 31], p); @@ -212,8 +204,83 @@ local z_crc_t FAR crc_table[256]; local void write_table64(FILE *, const z_word_t FAR *, int); #endif /* MAKECRCH */ +/* + Define a once() function depending on the availability of atomics. If this is + compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in + multiple threads, and if atomics are not available, then get_crc_table() must + be called to initialize the tables and must return before any threads are + allowed to compute or combine CRCs. + */ + +/* Definition of once functionality. */ +typedef struct once_s once_t; + +/* Check for the availability of atomics. */ +#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ + !defined(__STDC_NO_ATOMICS__) + +#include + +/* Structure for once(), which must be initialized with ONCE_INIT. */ +struct once_s { + atomic_flag begun; + atomic_int done; +}; +#define ONCE_INIT {ATOMIC_FLAG_INIT, 0} + +/* + Run the provided init() function exactly once, even if multiple threads + invoke once() at the same time. The state must be a once_t initialized with + ONCE_INIT. + */ +local void once(once_t *state, void (*init)(void)) { + if (!atomic_load(&state->done)) { + if (atomic_flag_test_and_set(&state->begun)) + while (!atomic_load(&state->done)) + ; + else { + init(); + atomic_store(&state->done, 1); + } + } +} + +#else /* no atomics */ + +/* Structure for once(), which must be initialized with ONCE_INIT. */ +struct once_s { + volatile int begun; + volatile int done; +}; +#define ONCE_INIT {0, 0} + +/* Test and set. Alas, not atomic, but tries to minimize the period of + vulnerability. */ +local int test_and_set(int volatile *flag) { + int was; + + was = *flag; + *flag = 1; + return was; +} + +/* Run the provided init() function once. This is not thread-safe. */ +local void once(once_t *state, void (*init)(void)) { + if (!state->done) { + if (test_and_set(&state->begun)) + while (!state->done) + ; + else { + init(); + state->done = 1; + } + } +} + +#endif + /* State for once(). */ -local z_once_t made = Z_ONCE_INIT; +local once_t made = ONCE_INIT; /* Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: @@ -259,7 +326,7 @@ local void make_crc_table(void) { p = (z_crc_t)1 << 30; /* x^1 */ x2n_table[0] = p; for (n = 1; n < 32; n++) - x2n_table[n] = p = (z_crc_t)multmodp(p, p); + x2n_table[n] = p = multmodp(p, p); #ifdef W /* initialize the braiding tables -- needs x2n_table[] */ @@ -462,11 +529,11 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { int k; z_crc_t i, p, q; for (k = 0; k < w; k++) { - p = (z_crc_t)x2nmodp((n * w + 3 - k) << 3, 0); + p = x2nmodp((n * w + 3 - k) << 3, 0); ltl[k][0] = 0; big[w - 1 - k][0] = 0; for (i = 1; i < 256; i++) { - ltl[k][i] = q = (z_crc_t)multmodp(i << 24, p); + ltl[k][i] = q = multmodp(i << 24, p); big[w - 1 - k][i] = byte_swap(q); } } @@ -481,7 +548,7 @@ local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { */ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return (const z_crc_t FAR *)crc_table; } @@ -505,8 +572,9 @@ const z_crc_t FAR * ZEXPORT get_crc_table(void) { #define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ #define Z_BATCH_MIN 800 /* fewest words in a final batch */ -uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { - uLong val; +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { + z_crc_t val; z_word_t crc1, crc2; const z_word_t *word; z_word_t val0, val1, val2; @@ -517,7 +585,7 @@ uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ @@ -572,7 +640,7 @@ uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { } word += 3 * last; num -= 3 * last; - val = x2nmodp((int)last, 6); + val = x2nmodp(last, 6); crc = multmodp(val, crc) ^ crc1; crc = multmodp(val, crc) ^ crc2; } @@ -623,12 +691,13 @@ local z_word_t crc_word_big(z_word_t data) { #endif /* ========================================================================= */ -uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { /* Return initial CRC, if requested. */ if (buf == Z_NULL) return 0; #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ @@ -943,19 +1012,28 @@ uLong ZEXPORT crc32_z(uLong crc, const unsigned char FAR *buf, z_size_t len) { #endif /* ========================================================================= */ -uLong ZEXPORT crc32(uLong crc, const unsigned char FAR *buf, uInt len) { - #ifdef HAVE_S390X_VX - return crc32_z_hook(crc, buf, len); - #endif +unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, + uInt len) { return crc32_z(crc, buf, len); } /* ========================================================================= */ -uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { - if (len2 < 0) - return 0; +uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { #ifdef DYNAMIC_CRC_TABLE - z_once(&made, make_crc_table); + once(&made, make_crc_table); +#endif /* DYNAMIC_CRC_TABLE */ + return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { + return crc32_combine64(crc1, crc2, (z_off64_t)len2); +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { +#ifdef DYNAMIC_CRC_TABLE + once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ return x2nmodp(len2, 3); } @@ -967,17 +1045,5 @@ uLong ZEXPORT crc32_combine_gen(z_off_t len2) { /* ========================================================================= */ uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) { - if (op == 0) - return 0; - return multmodp(op, crc1 & 0xffffffff) ^ (crc2 & 0xffffffff); -} - -/* ========================================================================= */ -uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { - return crc32_combine_op(crc1, crc2, crc32_combine_gen64(len2)); -} - -/* ========================================================================= */ -uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { - return crc32_combine64(crc1, crc2, (z_off64_t)len2); + return multmodp(op, crc1) ^ (crc2 & 0xffffffff); } diff --git a/icecat/modules/zlib/src/deflate.c b/icecat/modules/zlib/src/deflate.c index d7d2c7c1ee..012ea8148e 100644 --- a/icecat/modules/zlib/src/deflate.c +++ b/icecat/modules/zlib/src/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -37,7 +37,7 @@ * REFERENCES * * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available at https://datatracker.ietf.org/doc/html/rfc1951 + * Available in http://tools.ietf.org/html/rfc1951 * * A description of the Rabin and Karp algorithm is given in the book * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. @@ -52,7 +52,7 @@ #include "deflate.h" const char deflate_copyright[] = - " deflate 1.3.2 Copyright 1995-2026 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -170,8 +170,8 @@ local const config configuration_table[10] = { #define CLEAR_HASH(s) \ do { \ s->head[s->hash_size - 1] = NIL; \ - zmemzero(s->head, (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ - s->slid = 0; \ + zmemzero((Bytef *)s->head, \ + (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ } while (0) /* =========================================================================== @@ -195,8 +195,8 @@ local void slide_hash(deflate_state *s) { m = *--p; *p = (Pos)(m >= wsize ? m - wsize : NIL); } while (--n); -#ifndef FASTEST n = wsize; +#ifndef FASTEST p = &s->prev[n]; do { m = *--p; @@ -206,7 +206,6 @@ local void slide_hash(deflate_state *s) { */ } while (--n); #endif - s->slid = 1; } /* =========================================================================== @@ -260,14 +259,7 @@ local void fill_window(deflate_state *s) { more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); /* Deal with !@#$% 64K limit: */ -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4127) -#endif if (sizeof(int) <= 2) { -#ifdef _MSC_VER -#pragma warning(pop) -#endif if (more == 0 && s->strstart == 0 && s->lookahead == 0) { more = wsize; @@ -439,7 +431,6 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); if (s == Z_NULL) return Z_MEM_ERROR; - zmemzero(s, sizeof(deflate_state)); strm->state = (struct internal_state FAR *)s; s->strm = strm; s->status = INIT_STATE; /* to pass state test in deflateReset() */ @@ -721,23 +712,10 @@ int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) { /* ========================================================================= */ int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) { if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + if (pending != Z_NULL) + *pending = strm->state->pending; if (bits != Z_NULL) *bits = strm->state->bi_valid; - if (pending != Z_NULL) { - *pending = (unsigned)strm->state->pending; - if (*pending != strm->state->pending) { - *pending = (unsigned)-1; - return Z_BUF_ERROR; - } - } - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateUsed(z_streamp strm, int *bits) { - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - if (bits != Z_NULL) - *bits = strm->state->bi_used; return Z_OK; } @@ -853,34 +831,28 @@ int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy, * * Shifts are used to approximate divisions, for speed. */ -z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen) { +uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { deflate_state *s; - z_size_t fixedlen, storelen, wraplen, bound; + uLong fixedlen, storelen, wraplen; /* upper bound for fixed blocks with 9-bit literals and length 255 (memLevel == 2, which is the lowest that may not use stored blocks) -- ~13% overhead plus a small constant */ fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) + (sourceLen >> 9) + 4; - if (fixedlen < sourceLen) - fixedlen = (z_size_t)-1; /* upper bound for stored blocks with length 127 (memLevel == 1) -- ~4% overhead plus a small constant */ storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + (sourceLen >> 11) + 7; - if (storelen < sourceLen) - storelen = (z_size_t)-1; - /* if can't get parameters, return larger bound plus a wrapper */ - if (deflateStateCheck(strm)) { - bound = fixedlen > storelen ? fixedlen : storelen; - return bound + 18 < bound ? (z_size_t)-1 : bound + 18; - } + /* if can't get parameters, return larger bound plus a zlib wrapper */ + if (deflateStateCheck(strm)) + return (fixedlen > storelen ? fixedlen : storelen) + 6; /* compute wrapper length */ s = strm->state; - switch (s->wrap < 0 ? -s->wrap : s->wrap) { + switch (s->wrap) { case 0: /* raw deflate */ wraplen = 0; break; @@ -910,25 +882,18 @@ z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen) { break; #endif default: /* for compiler happiness */ - wraplen = 18; + wraplen = 6; } /* if not default parameters, return one of the conservative bounds */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) { - bound = s->w_bits <= s->hash_bits && s->level ? fixedlen : - storelen; - return bound + wraplen < bound ? (z_size_t)-1 : bound + wraplen; - } + if (s->w_bits != 15 || s->hash_bits != 8 + 7) + return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) + + wraplen; /* default settings: return tight bound for that case -- ~0.03% overhead plus a small constant */ - bound = sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; - return bound < sourceLen ? (z_size_t)-1 : bound; -} -uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { - z_size_t bound = deflateBound_z(strm, sourceLen); - return (uLong)bound != bound ? (uLong)-1 : (uLong)bound; + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13 - 6 + wraplen; } /* ========================================================================= @@ -952,8 +917,8 @@ local void flush_pending(z_streamp strm) { deflate_state *s = strm->state; _tr_flush_bits(s); - len = s->pending > strm->avail_out ? strm->avail_out : - (unsigned)s->pending; + len = s->pending; + if (len > strm->avail_out) len = strm->avail_out; if (len == 0) return; zmemcpy(strm->next_out, s->pending_out, len); @@ -973,8 +938,8 @@ local void flush_pending(z_streamp strm) { #define HCRC_UPDATE(beg) \ do { \ if (s->gzhead->hcrc && s->pending > (beg)) \ - strm->adler = crc32_z(strm->adler, s->pending_buf + (beg), \ - s->pending - (beg)); \ + strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ + s->pending - (beg)); \ } while (0) /* ========================================================================= */ @@ -1108,8 +1073,8 @@ int ZEXPORT deflate(z_streamp strm, int flush) { put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); } if (s->gzhead->hcrc) - strm->adler = crc32_z(strm->adler, s->pending_buf, - s->pending); + strm->adler = crc32(strm->adler, s->pending_buf, + s->pending); s->gzindex = 0; s->status = EXTRA_STATE; } @@ -1117,9 +1082,9 @@ int ZEXPORT deflate(z_streamp strm, int flush) { if (s->status == EXTRA_STATE) { if (s->gzhead->extra != Z_NULL) { ulg beg = s->pending; /* start of bytes to update crc */ - ulg left = (s->gzhead->extra_len & 0xffff) - s->gzindex; + uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; while (s->pending + left > s->pending_buf_size) { - ulg copy = s->pending_buf_size - s->pending; + uInt copy = s->pending_buf_size - s->pending; zmemcpy(s->pending_buf + s->pending, s->gzhead->extra + s->gzindex, copy); s->pending = s->pending_buf_size; @@ -1330,13 +1295,12 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { ss = source->state; - zmemcpy(dest, source, sizeof(z_stream)); + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); if (ds == Z_NULL) return Z_MEM_ERROR; - zmemzero(ds, sizeof(deflate_state)); dest->state = (struct internal_state FAR *) ds; - zmemcpy(ds, ss, sizeof(deflate_state)); + zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); ds->strm = dest; ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); @@ -1349,23 +1313,18 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { deflateEnd (dest); return Z_MEM_ERROR; } - /* following zmemcpy's do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ss->high_water); - zmemcpy(ds->prev, ss->prev, - (ss->slid || ss->strstart - ss->insert > ds->w_size ? ds->w_size : - ss->strstart - ss->insert) * sizeof(Pos)); - zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos)); + /* following zmemcpy do not work for 16-bit MSDOS */ + zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); + zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); + zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); + zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS); ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); - zmemcpy(ds->pending_out, ss->pending_out, ss->pending); #ifdef LIT_MEM ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1)); ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2); - zmemcpy(ds->d_buf, ss->d_buf, ss->sym_next * sizeof(ush)); - zmemcpy(ds->l_buf, ss->l_buf, ss->sym_next); #else ds->sym_buf = ds->pending_buf + ds->lit_bufsize; - zmemcpy(ds->sym_buf, ss->sym_buf, ss->sym_next); #endif ds->l_desc.dyn_tree = ds->dyn_ltree; @@ -1388,9 +1347,9 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { */ local uInt longest_match(deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ - Bytef *scan = s->window + s->strstart; /* current string */ - Bytef *match; /* matched string */ - int len; /* length of current match */ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ int best_len = (int)s->prev_length; /* best match length so far */ int nice_match = s->nice_match; /* stop if match long enough */ IPos limit = s->strstart > (IPos)MAX_DIST(s) ? @@ -1405,13 +1364,13 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { /* Compare two bytes at a time. Note: this is not always beneficial. * Try with and without -DUNALIGNED_OK to check. */ - Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - ush scan_start = *(ushf*)scan; - ush scan_end = *(ushf*)(scan + best_len - 1); + register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + register ush scan_start = *(ushf*)scan; + register ush scan_end = *(ushf*)(scan + best_len - 1); #else - Bytef *strend = s->window + s->strstart + MAX_MATCH; - Byte scan_end1 = scan[best_len - 1]; - Byte scan_end = scan[best_len]; + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + register Byte scan_end1 = scan[best_len - 1]; + register Byte scan_end = scan[best_len]; #endif /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. @@ -1535,10 +1494,10 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { * Optimized version for FASTEST only */ local uInt longest_match(deflate_state *s, IPos cur_match) { - Bytef *scan = s->window + s->strstart; /* current string */ - Bytef *match; /* matched string */ - int len; /* length of current match */ - Bytef *strend = s->window + s->strstart + MAX_MATCH; + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH; /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. * It is easy to get rid of this optimization if necessary. @@ -1598,7 +1557,7 @@ local uInt longest_match(deflate_state *s, IPos cur_match) { local void check_match(deflate_state *s, IPos start, IPos match, int length) { /* check that the match is indeed a match */ Bytef *back = s->window + (int)match, *here = s->window + start; - IPos len = (IPos)length; + IPos len = length; if (match == (IPos)-1) { /* match starts one byte before the current window -- just compare the subsequent length-1 bytes */ @@ -1670,14 +1629,13 @@ local block_state deflate_stored(deflate_state *s, int flush) { * this is 32K. This can be as small as 507 bytes for memLevel == 1. For * large input and output buffers, the stored block size will be larger. */ - unsigned min_block = (unsigned)(MIN(s->pending_buf_size - 5, s->w_size)); + unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size); /* Copy as many min_block or larger stored blocks directly to next_out as * possible. If flushing, copy the remaining available input to next_out as * stored blocks, if there is enough space. */ - int last = 0; - unsigned len, left, have; + unsigned len, left, have, last = 0; unsigned used = s->strm->avail_in; do { /* Set len to the maximum size block that we can copy directly with the @@ -1685,12 +1643,12 @@ local block_state deflate_stored(deflate_state *s, int flush) { * would be copied from what's left in the window. */ len = MAX_STORED; /* maximum deflate stored block length */ - have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ if (s->strm->avail_out < have) /* need room for header */ break; /* maximum stored block length that will fit in avail_out: */ have = s->strm->avail_out - have; - left = (unsigned)(s->strstart - s->block_start); /* window bytes */ + left = s->strstart - s->block_start; /* bytes left in window */ if (len > (ulg)left + s->strm->avail_in) len = left + s->strm->avail_in; /* limit len to the input */ if (len > have) @@ -1713,10 +1671,10 @@ local block_state deflate_stored(deflate_state *s, int flush) { _tr_stored_block(s, (char *)0, 0L, last); /* Replace the lengths in the dummy stored block with len. */ - s->pending_buf[s->pending - 4] = (Bytef)len; - s->pending_buf[s->pending - 3] = (Bytef)(len >> 8); - s->pending_buf[s->pending - 2] = (Bytef)~len; - s->pending_buf[s->pending - 1] = (Bytef)(~len >> 8); + s->pending_buf[s->pending - 4] = len; + s->pending_buf[s->pending - 3] = len >> 8; + s->pending_buf[s->pending - 2] = ~len; + s->pending_buf[s->pending - 1] = ~len >> 8; /* Write the stored block header bytes. */ flush_pending(s->strm); @@ -1787,10 +1745,8 @@ local block_state deflate_stored(deflate_state *s, int flush) { s->high_water = s->strstart; /* If the last block was written to next_out, then done. */ - if (last) { - s->bi_used = 8; + if (last) return finish_done; - } /* If flushing and all input has been consumed, then done. */ if (flush != Z_NO_FLUSH && flush != Z_FINISH && @@ -1798,7 +1754,7 @@ local block_state deflate_stored(deflate_state *s, int flush) { return block_done; /* Fill the window with any remaining input. */ - have = (unsigned)(s->window_size - s->strstart); + have = s->window_size - s->strstart; if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { /* Slide the window down. */ s->block_start -= s->w_size; @@ -1825,11 +1781,11 @@ local block_state deflate_stored(deflate_state *s, int flush) { * have enough input for a worthy block, or if flushing and there is enough * room for the remaining input as a stored block in the pending buffer. */ - have = ((unsigned)s->bi_valid + 42) >> 3; /* bytes in header */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ /* maximum stored block length that will fit in pending: */ - have = (unsigned)MIN(s->pending_buf_size - have, MAX_STORED); + have = MIN(s->pending_buf_size - have, MAX_STORED); min_block = MIN(have, s->w_size); - left = (unsigned)(s->strstart - s->block_start); + left = s->strstart - s->block_start; if (left >= min_block || ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && s->strm->avail_in == 0 && left <= have)) { @@ -1842,8 +1798,6 @@ local block_state deflate_stored(deflate_state *s, int flush) { } /* We've done all we can with the available input and output. */ - if (last) - s->bi_used = 8; return last ? finish_started : need_more; } @@ -1892,7 +1846,7 @@ local block_state deflate_fast(deflate_state *s, int flush) { /* longest_match() sets match_start */ } if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, (int)s->match_length); + check_match(s, s->strstart, s->match_start, s->match_length); _tr_tally_dist(s, s->strstart - s->match_start, s->match_length - MIN_MATCH, bflush); @@ -2014,7 +1968,7 @@ local block_state deflate_slow(deflate_state *s, int flush) { uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ - check_match(s, s->strstart - 1, s->prev_match, (int)s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, s->prev_length); _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); @@ -2122,7 +2076,7 @@ local block_state deflate_rle(deflate_state *s, int flush) { /* Emit match if have run of MIN_MATCH or longer, else emit literal */ if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->strstart - 1, (int)s->match_length); + check_match(s, s->strstart, s->strstart - 1, s->match_length); _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); diff --git a/icecat/modules/zlib/src/deflate.h b/icecat/modules/zlib/src/deflate.h index 0732ba83ad..300c6ada62 100644 --- a/icecat/modules/zlib/src/deflate.h +++ b/icecat/modules/zlib/src/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2026 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -271,9 +271,6 @@ typedef struct internal_state { /* Number of valid bits in bi_buf. All bits above the last valid bit * are always zero. */ - int bi_used; - /* Last number of used bits when going to a byte boundary. - */ ulg high_water; /* High water mark offset in window for initialized bytes -- bytes above @@ -282,9 +279,6 @@ typedef struct internal_state { * updated to the new high water mark. */ - int slid; - /* True if the hash table has been slid since it was cleared. */ - } FAR deflate_state; /* Output a byte on the stream. diff --git a/icecat/modules/zlib/src/gzguts.h b/icecat/modules/zlib/src/gzguts.h index 266305debc..eba72085bb 100644 --- a/icecat/modules/zlib/src/gzguts.h +++ b/icecat/modules/zlib/src/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -17,18 +17,6 @@ # define ZLIB_INTERNAL #endif -#if defined(_WIN32) -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# ifndef _CRT_SECURE_NO_WARNINGS -# define _CRT_SECURE_NO_WARNINGS -# endif -# ifndef _CRT_NONSTDC_NO_DEPRECATE -# define _CRT_NONSTDC_NO_DEPRECATE -# endif -#endif - #include #include "zlib.h" #ifdef STDC @@ -37,8 +25,8 @@ # include #endif -#ifndef _POSIX_C_SOURCE -# define _POSIX_C_SOURCE 200112L +#ifndef _POSIX_SOURCE +# define _POSIX_SOURCE #endif #include @@ -48,13 +36,19 @@ #if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) # include -# include #endif -#if defined(_WIN32) && !defined(WIDECHAR) +#if defined(_WIN32) # define WIDECHAR #endif +#ifdef WINAPI_FAMILY +# define open _open +# define read _read +# define write _write +# define close _close +#endif + #ifdef NO_DEFLATE /* for compatibility with old definition */ # define NO_GZCOMPRESS #endif @@ -78,28 +72,33 @@ #endif #ifndef HAVE_VSNPRINTF -# if !defined(NO_vsnprintf) && \ - (defined(MSDOS) || defined(__TURBOC__) || defined(__SASC) || \ - defined(VMS) || defined(__OS400) || defined(__MVS__)) +# ifdef MSDOS /* vsnprintf may exist on some MS-DOS compilers (DJGPP?), but for now we just assume it doesn't. */ # define NO_vsnprintf # endif +# ifdef __TURBOC__ +# define NO_vsnprintf +# endif # ifdef WIN32 /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ -# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) -# ifndef vsnprintf -# define vsnprintf _vsnprintf +# if !defined(vsnprintf) && !defined(NO_vsnprintf) +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# define vsnprintf _vsnprintf # endif # endif -# elif !defined(__STDC_VERSION__) || __STDC_VERSION__-0 < 199901L -/* Otherwise if C89/90, assume no C99 snprintf() or vsnprintf() */ -# ifndef NO_snprintf -# define NO_snprintf -# endif -# ifndef NO_vsnprintf -# define NO_vsnprintf -# endif +# endif +# ifdef __SASC +# define NO_vsnprintf +# endif +# ifdef VMS +# define NO_vsnprintf +# endif +# ifdef __OS400__ +# define NO_vsnprintf +# endif +# ifdef __MVS__ +# define NO_vsnprintf # endif #endif @@ -183,9 +182,7 @@ typedef struct { unsigned char *out; /* output buffer (double-sized when reading) */ int direct; /* 0 if processing gzip, 1 if transparent */ /* just for reading */ - int junk; /* -1 = start, 1 = junk candidate, 0 = in gzip */ int how; /* 0: get header, 1: copy, 2: decompress */ - int again; /* true if EAGAIN or EWOULDBLOCK on last i/o */ z_off64_t start; /* where the gzip data started, for rewinding */ int eof; /* true if end of input file reached */ int past; /* true if read requested past end */ @@ -195,6 +192,7 @@ typedef struct { int reset; /* true if a reset is pending after a Z_FINISH */ /* seek request */ z_off64_t skip; /* amount to skip (already rewound if backwards) */ + int seek; /* true if seek request pending */ /* error information */ int err; /* error code */ char *msg; /* error message */ diff --git a/icecat/modules/zlib/src/gzlib.c b/icecat/modules/zlib/src/gzlib.c index 7a37a96cf0..983153cc8e 100644 --- a/icecat/modules/zlib/src/gzlib.c +++ b/icecat/modules/zlib/src/gzlib.c @@ -1,19 +1,19 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ #include "gzguts.h" -#if defined(__DJGPP__) -# define LSEEK llseek -#elif defined(_WIN32) && !defined(__BORLANDC__) && !defined(UNDER_CE) +#if defined(_WIN32) && !defined(__BORLANDC__) # define LSEEK _lseeki64 -#elif defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +#else +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 # define LSEEK lseek64 #else # define LSEEK lseek #endif +#endif #if defined UNDER_CE @@ -52,7 +52,7 @@ char ZLIB_INTERNAL *gz_strwinerror(DWORD error) { msgbuf[chars] = 0; } - wcstombs(buf, msgbuf, chars + 1); /* assumes buf is big enough */ + wcstombs(buf, msgbuf, chars + 1); LocalFree(msgbuf); } else { @@ -72,12 +72,10 @@ local void gz_reset(gz_statep state) { state->eof = 0; /* not at end of file */ state->past = 0; /* have not read past end yet */ state->how = LOOK; /* look for gzip header */ - state->junk = -1; /* mark first member */ } else /* for writing ... */ state->reset = 0; /* no deflateReset pending */ - state->again = 0; /* no stalled i/o yet */ - state->skip = 0; /* no seek request pending */ + state->seek = 0; /* no seek request pending */ gz_error(state, Z_OK, NULL); /* clear error */ state->x.pos = 0; /* no uncompressed data yet */ state->strm.avail_in = 0; /* no input data yet */ @@ -87,13 +85,16 @@ local void gz_reset(gz_statep state) { local gzFile gz_open(const void *path, int fd, const char *mode) { gz_statep state; z_size_t len; - int oflag = 0; + int oflag; +#ifdef O_CLOEXEC + int cloexec = 0; +#endif #ifdef O_EXCL int exclusive = 0; #endif /* check input */ - if (path == NULL || mode == NULL) + if (path == NULL) return NULL; /* allocate gzFile structure to return */ @@ -102,7 +103,6 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; state->size = 0; /* no buffers allocated yet */ state->want = GZBUFSIZE; /* requested buffer size */ - state->err = Z_OK; /* no error yet */ state->msg = NULL; /* no error message yet */ /* interpret mode */ @@ -133,7 +133,7 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { break; #ifdef O_CLOEXEC case 'e': - oflag |= O_CLOEXEC; + cloexec = 1; break; #endif #ifdef O_EXCL @@ -153,14 +153,6 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { case 'F': state->strategy = Z_FIXED; break; - case 'G': - state->direct = -1; - break; -#ifdef O_NONBLOCK - case 'N': - oflag |= O_NONBLOCK; - break; -#endif case 'T': state->direct = 1; break; @@ -176,30 +168,22 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } - /* direct is 0, 1 if "T", or -1 if "G" (last "G" or "T" wins) */ + /* can't force transparent read */ if (state->mode == GZ_READ) { - if (state->direct == 1) { - /* can't force a transparent read */ + if (state->direct) { free(state); return NULL; } - if (state->direct == 0) - /* default when reading is auto-detect of gzip vs. transparent -- - start with a transparent assumption in case of an empty file */ - state->direct = 1; + state->direct = 1; /* for empty file */ } - else if (state->direct == -1) { - /* "G" has no meaning when writing -- disallow it */ - free(state); - return NULL; - } - /* if reading, direct == 1 for auto-detect, -1 for gzip only; if writing or - appending, direct == 0 for gzip, 1 for transparent (copy in to out) */ /* save the path name for error messages */ #ifdef WIDECHAR - if (fd == -2) + if (fd == -2) { len = wcstombs(NULL, path, 0); + if (len == (z_size_t)-1) + len = 0; + } else #endif len = strlen((const char *)path); @@ -209,29 +193,29 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { return NULL; } #ifdef WIDECHAR - if (fd == -2) { + if (fd == -2) if (len) wcstombs(state->path, path, len + 1); else *(state->path) = 0; - } else #endif - { #if !defined(NO_snprintf) && !defined(NO_vsnprintf) (void)snprintf(state->path, len + 1, "%s", (const char *)path); #else strcpy(state->path, path); #endif - } /* compute the flags for open() */ - oflag |= + oflag = #ifdef O_LARGEFILE O_LARGEFILE | #endif #ifdef O_BINARY O_BINARY | +#endif +#ifdef O_CLOEXEC + (cloexec ? O_CLOEXEC : 0) | #endif (state->mode == GZ_READ ? O_RDONLY : @@ -244,23 +228,11 @@ local gzFile gz_open(const void *path, int fd, const char *mode) { O_APPEND))); /* open the file with the appropriate flags (or just use fd) */ - if (fd == -1) - state->fd = open((const char *)path, oflag, 0666); + state->fd = fd > -1 ? fd : ( #ifdef WIDECHAR - else if (fd == -2) - state->fd = _wopen(path, oflag, _S_IREAD | _S_IWRITE); + fd == -2 ? _wopen(path, oflag, 0666) : #endif - else { -#ifdef O_NONBLOCK - if (oflag & O_NONBLOCK) - fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK); -#endif -#ifdef O_CLOEXEC - if (oflag & O_CLOEXEC) - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | O_CLOEXEC); -#endif - state->fd = fd; - } + open((const char *)path, oflag, 0666)); if (state->fd == -1) { free(state->path); free(state); @@ -387,10 +359,9 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { /* normalize offset to a SEEK_CUR specification */ if (whence == SEEK_SET) offset -= state->x.pos; - else { - offset += state->past ? 0 : state->skip; - state->skip = 0; - } + else if (state->seek) + offset += state->skip; + state->seek = 0; /* if within raw area while reading, just go there */ if (state->mode == GZ_READ && state->how == COPY && @@ -401,7 +372,7 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { state->x.have = 0; state->eof = 0; state->past = 0; - state->skip = 0; + state->seek = 0; gz_error(state, Z_OK, NULL); state->strm.avail_in = 0; state->x.pos += offset; @@ -430,7 +401,10 @@ z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { } /* request skip (if not zero) */ - state->skip = offset; + if (offset) { + state->seek = 1; + state->skip = offset; + } return state->x.pos + offset; } @@ -454,7 +428,7 @@ z_off64_t ZEXPORT gztell64(gzFile file) { return -1; /* return position */ - return state->x.pos + (state->past ? 0 : state->skip); + return state->x.pos + (state->seek ? state->skip : 0); } /* -- see zlib.h -- */ @@ -561,7 +535,7 @@ void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) { } /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ - if (err != Z_OK && err != Z_BUF_ERROR && !state->again) + if (err != Z_OK && err != Z_BUF_ERROR) state->x.have = 0; /* set error code, and if no message, then done */ @@ -598,7 +572,6 @@ unsigned ZLIB_INTERNAL gz_intmax(void) { return INT_MAX; #else unsigned p = 1, q; - do { q = p; p <<= 1; diff --git a/icecat/modules/zlib/src/gzread.c b/icecat/modules/zlib/src/gzread.c index 8b3e369dac..4168cbc887 100644 --- a/icecat/modules/zlib/src/gzread.c +++ b/icecat/modules/zlib/src/gzread.c @@ -1,5 +1,5 @@ /* gzread.c -- zlib functions for reading gzip files - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2017 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -8,36 +8,23 @@ /* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from state->fd, and update state->eof, state->err, and state->msg as appropriate. This function needs to loop on read(), since read() is not guaranteed to - read the number of bytes requested, depending on the type of descriptor. It - also needs to loop to manage the fact that read() returns an int. If the - descriptor is non-blocking and read() returns with no data in order to avoid - blocking, then gz_load() will return 0 if some data has been read, or -1 if - no data has been read. Either way, state->again is set true to indicate a - non-blocking event. If errno is non-zero on return, then there was an error - signaled from read(). *have is set to the number of bytes read. */ + read the number of bytes requested, depending on the type of descriptor. */ local int gz_load(gz_statep state, unsigned char *buf, unsigned len, unsigned *have) { int ret; unsigned get, max = ((unsigned)-1 >> 2) + 1; - state->again = 0; - errno = 0; *have = 0; do { get = len - *have; if (get > max) get = max; - ret = (int)read(state->fd, buf + *have, get); + ret = read(state->fd, buf + *have, get); if (ret <= 0) break; *have += (unsigned)ret; } while (*have < len); if (ret < 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK) { - state->again = 1; - if (*have != 0) - return 0; - } gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -63,14 +50,10 @@ local int gz_avail(gz_statep state) { if (strm->avail_in) { /* copy what's there to the start */ unsigned char *p = state->in; unsigned const char *q = strm->next_in; - - if (q != p) { - unsigned n = strm->avail_in; - - do { - *p++ = *q++; - } while (--n); - } + unsigned n = strm->avail_in; + do { + *p++ = *q++; + } while (--n); } if (gz_load(state, state->in + strm->avail_in, state->size - strm->avail_in, &got) == -1) @@ -121,44 +104,39 @@ local int gz_look(gz_statep state) { } } - /* if transparent reading is disabled, which would only be at the start, or - if we're looking for a gzip member after the first one, which is not at - the start, then proceed directly to look for a gzip member next */ - if (state->direct == -1 || state->junk == 0) { + /* get at least the magic bytes in the input buffer */ + if (strm->avail_in < 2) { + if (gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0) + return 0; + } + + /* look for gzip magic bytes -- if there, do gzip decoding (note: there is + a logical dilemma here when considering the case of a partially written + gzip file, to wit, if a single 31 byte is written, then we cannot tell + whether this is a single-byte file, or just a partially written gzip + file -- for here we assume that if a gzip file is being written, then + the header will be written in a single operation, so that reading a + single byte is sufficient indication that it is not a gzip file) */ + if (strm->avail_in > 1 && + strm->next_in[0] == 31 && strm->next_in[1] == 139) { inflateReset(strm); state->how = GZIP; - state->junk = state->junk != -1; state->direct = 0; return 0; } - /* otherwise we're at the start with auto-detect -- we check to see if the - first four bytes could be gzip header in order to decide whether or not - this will be a transparent read */ - - /* load any header bytes into the input buffer -- if the input is empty, - then it's not an error as this is a transparent read of zero bytes */ - if (gz_avail(state) == -1) - return -1; - if (strm->avail_in == 0 || (state->again && strm->avail_in < 4)) - /* if non-blocking input stalled before getting four bytes, then - return and wait until a later call has accumulated enough */ - return 0; - - /* see if this is (likely) gzip input -- if the first four bytes are - consistent with a gzip header, then go look for the first gzip member, - otherwise proceed to copy the input transparently */ - if (strm->avail_in > 3 && - strm->next_in[0] == 31 && strm->next_in[1] == 139 && - strm->next_in[2] == 8 && strm->next_in[3] < 32) { - inflateReset(strm); - state->how = GZIP; - state->junk = 1; - state->direct = 0; + /* no gzip header -- if we were decoding gzip before, then this is trailing + garbage. Ignore the trailing garbage and finish. */ + if (state->direct == 0) { + strm->avail_in = 0; + state->eof = 1; + state->x.have = 0; return 0; } - /* doing raw i/o: copy any leftover input to output -- this assumes that + /* doing raw i/o, copy any leftover input to output -- this assumes that the output buffer is larger than the input buffer, which also assures space for gzungetc() */ state->x.next = state->out; @@ -166,17 +144,15 @@ local int gz_look(gz_statep state) { state->x.have = strm->avail_in; strm->avail_in = 0; state->how = COPY; + state->direct = 1; return 0; } /* Decompress from input to the provided next_out and avail_out in the state. On return, state->x.have and state->x.next point to the just decompressed - data. If the gzip stream completes, state->how is reset to LOOK to look for - the next gzip stream or raw data, once state->x.have is depleted. Returns 0 - on success, -1 on failure. If EOF is reached when looking for more input to - complete the gzip member, then an unexpected end of file error is raised. - If there is no more input, but state->again is true, then EOF has not been - reached, and no error is raised. */ + data. If the gzip stream completes, state->how is reset to LOOK to look for + the next gzip stream or raw data, once state->x.have is depleted. Returns 0 + on success, -1 on failure. */ local int gz_decomp(gz_statep state) { int ret = Z_OK; unsigned had; @@ -186,41 +162,28 @@ local int gz_decomp(gz_statep state) { had = strm->avail_out; do { /* get more input for inflate() */ - if (strm->avail_in == 0 && gz_avail(state) == -1) { - ret = state->err; - break; - } + if (strm->avail_in == 0 && gz_avail(state) == -1) + return -1; if (strm->avail_in == 0) { - if (!state->again) - gz_error(state, Z_BUF_ERROR, "unexpected end of file"); + gz_error(state, Z_BUF_ERROR, "unexpected end of file"); break; } /* decompress and handle errors */ ret = inflate(strm, Z_NO_FLUSH); - if (strm->avail_out < had) - /* any decompressed data marks this as a real gzip stream */ - state->junk = 0; if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { gz_error(state, Z_STREAM_ERROR, "internal error: inflate stream corrupt"); - break; + return -1; } if (ret == Z_MEM_ERROR) { gz_error(state, Z_MEM_ERROR, "out of memory"); - break; + return -1; } if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ - if (state->junk == 1) { /* trailing garbage is ok */ - strm->avail_in = 0; - state->eof = 1; - state->how = LOOK; - ret = Z_OK; - break; - } gz_error(state, Z_DATA_ERROR, strm->msg == NULL ? "compressed data error" : strm->msg); - break; + return -1; } } while (strm->avail_out && ret != Z_STREAM_END); @@ -229,14 +192,11 @@ local int gz_decomp(gz_statep state) { state->x.next = strm->next_out - state->x.have; /* if the gzip stream completed successfully, look for another */ - if (ret == Z_STREAM_END) { - state->junk = 0; + if (ret == Z_STREAM_END) state->how = LOOK; - return 0; - } - /* return decompression status */ - return ret != Z_OK ? -1 : 0; + /* good decompression */ + return 0; } /* Fetch data and put it in the output buffer. Assumes state->x.have is 0. @@ -267,31 +227,25 @@ local int gz_fetch(gz_statep state) { strm->next_out = state->out; if (gz_decomp(state) == -1) return -1; - break; - default: - gz_error(state, Z_STREAM_ERROR, "state corrupt"); - return -1; } } while (state->x.have == 0 && (!state->eof || strm->avail_in)); return 0; } -/* Skip state->skip (> 0) uncompressed bytes of output. Return -1 on error, 0 - on success. */ -local int gz_skip(gz_statep state) { +/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ +local int gz_skip(gz_statep state, z_off64_t len) { unsigned n; /* skip over len bytes or reach end-of-file, whichever comes first */ - do { + while (len) /* skip over whatever is in output buffer */ if (state->x.have) { - n = GT_OFF(state->x.have) || - (z_off64_t)state->x.have > state->skip ? - (unsigned)state->skip : state->x.have; + n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? + (unsigned)len : state->x.have; state->x.have -= n; state->x.next += n; state->x.pos += n; - state->skip -= n; + len -= n; } /* output buffer empty -- return if we're at the end of the input */ @@ -304,32 +258,30 @@ local int gz_skip(gz_statep state) { if (gz_fetch(state) == -1) return -1; } - } while (state->skip); return 0; } /* Read len bytes into buf from file, or less than len up to the end of the - input. Return the number of bytes read. If zero is returned, either the end - of file was reached, or there was an error. state->err must be consulted in - that case to determine which. If there was an error, but some uncompressed - bytes were read before the error, then that count is returned. The error is - still recorded, and so is deferred until the next call. */ + input. Return the number of bytes read. If zero is returned, either the + end of file was reached, or there was an error. state->err must be + consulted in that case to determine which. */ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { z_size_t got; unsigned n; - int err; /* if len is zero, avoid unnecessary operations */ if (len == 0) return 0; /* process a skip request */ - if (state->skip && gz_skip(state) == -1) - return 0; + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return 0; + } /* get len bytes to buf, or less than len if at the end */ got = 0; - err = 0; do { /* set n to the maximum amount of len that fits in an unsigned int */ n = (unsigned)-1; @@ -343,36 +295,37 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { memcpy(buf, state->x.next, n); state->x.next += n; state->x.have -= n; - if (state->err != Z_OK) - /* caught deferred error from gz_fetch() */ - err = -1; } /* output buffer empty -- return if we're at the end of the input */ - else if (state->eof && state->strm.avail_in == 0) + else if (state->eof && state->strm.avail_in == 0) { + state->past = 1; /* tried to read past end */ break; + } /* need output data -- for small len or new stream load up our output - buffer, so that gzgetc() can be fast */ + buffer */ else if (state->how == LOOK || n < (state->size << 1)) { /* get more output, looking for header if required */ - if (gz_fetch(state) == -1 && state->x.have == 0) - /* if state->x.have != 0, error will be caught after copy */ - err = -1; + if (gz_fetch(state) == -1) + return 0; continue; /* no progress yet -- go back to copy above */ /* the copy above assures that we will leave with space in the output buffer, allowing at least one gzungetc() to succeed */ } /* large len -- read directly into user buffer */ - else if (state->how == COPY) /* read directly */ - err = gz_load(state, (unsigned char *)buf, n, &n); + else if (state->how == COPY) { /* read directly */ + if (gz_load(state, (unsigned char *)buf, n, &n) == -1) + return 0; + } /* large len -- decompress directly into user buffer */ else { /* state->how == GZIP */ state->strm.avail_out = n; state->strm.next_out = (unsigned char *)buf; - err = gz_decomp(state); + if (gz_decomp(state) == -1) + return 0; n = state->x.have; state->x.have = 0; } @@ -382,11 +335,7 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { buf = (char *)buf + n; got += n; state->x.pos += n; - } while (len && !err); - - /* note read past eof */ - if (len && state->eof) - state->past = 1; + } while (len); /* return number of bytes read into user buffer */ return got; @@ -396,17 +345,15 @@ local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return -1; state = (gz_statep)file; - if (state->mode != GZ_READ) - return -1; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return -1; - gz_error(state, Z_OK, NULL); /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ @@ -419,39 +366,27 @@ int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { len = (unsigned)gz_read(state, buf, len); /* check for an error */ - if (len == 0) { - if (state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; - if (state->again) { - /* non-blocking input stalled after some input was read, but no - uncompressed bytes were produced -- let the application know - this isn't EOF */ - gz_error(state, Z_ERRNO, zstrerror()); - return -1; - } - } + if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) + return -1; - /* return the number of bytes read */ + /* return the number of bytes read (this is assured to fit in an int) */ return (int)len; } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, - gzFile file) { +z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) { z_size_t len; gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return 0; state = (gz_statep)file; - if (state->mode != GZ_READ) - return 0; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return 0; - gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -474,17 +409,15 @@ int ZEXPORT gzgetc(gzFile file) { unsigned char buf[1]; gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return -1; state = (gz_statep)file; - if (state->mode != GZ_READ) - return -1; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return -1; - gz_error(state, Z_OK, NULL); /* try output buffer (no need to check for skip request) */ if (state->x.have) { @@ -505,25 +438,26 @@ int ZEXPORT gzgetc_(gzFile file) { int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return -1; state = (gz_statep)file; - if (state->mode != GZ_READ) - return -1; /* in case this was just opened, set up the input buffer */ - if (state->how == LOOK && state->x.have == 0) + if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) (void)gz_look(state); - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return -1; - gz_error(state, Z_OK, NULL); /* process a skip request */ - if (state->skip && gz_skip(state) == -1) - return -1; + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return -1; + } /* can't push EOF */ if (c < 0) @@ -549,7 +483,6 @@ int ZEXPORT gzungetc(int c, gzFile file) { if (state->x.next == state->out) { unsigned char *src = state->out + state->x.have; unsigned char *dest = state->out + (state->size << 1); - while (src > state->out) *--dest = *--src; state->x.next = dest; @@ -569,31 +502,32 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { unsigned char *eol; gz_statep state; - /* check parameters, get internal structure, and check that it's for - reading */ + /* check parameters and get internal structure */ if (file == NULL || buf == NULL || len < 1) return NULL; state = (gz_statep)file; - if (state->mode != GZ_READ) - return NULL; - /* check that there was no (serious) error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR && !state->again) + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) return NULL; - gz_error(state, Z_OK, NULL); /* process a skip request */ - if (state->skip && gz_skip(state) == -1) - return NULL; + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return NULL; + } - /* copy output up to a new line, len-1 bytes, or there is no more output, - whichever comes first */ + /* copy output bytes up to new line or len - 1, whichever comes first -- + append a terminating zero to the string (we don't check for a zero in + the contents, let the user worry about that) */ str = buf; left = (unsigned)len - 1; if (left) do { /* assure that something is in the output buffer */ if (state->x.have == 0 && gz_fetch(state) == -1) - break; /* error */ + return NULL; /* error */ if (state->x.have == 0) { /* end of file */ state->past = 1; /* read past end */ break; /* return what we have */ @@ -614,9 +548,7 @@ char * ZEXPORT gzgets(gzFile file, char *buf, int len) { buf += n; } while (left && eol == NULL); - /* append a terminating zero to the string (we don't check for a zero in - the contents, let the user worry about that) -- return the terminated - string, or if nothing was read, NULL */ + /* return terminated string, or if nothing, end of file */ if (buf == str) return NULL; buf[0] = 0; @@ -638,7 +570,7 @@ int ZEXPORT gzdirect(gzFile file) { (void)gz_look(state); /* return 1 if transparent, 0 if processing a gzip stream */ - return state->direct == 1; + return state->direct; } /* -- see zlib.h -- */ @@ -646,10 +578,12 @@ int ZEXPORT gzclose_r(gzFile file) { int ret, err; gz_statep state; - /* get internal structure and check that it's for reading */ + /* get internal structure */ if (file == NULL) return Z_STREAM_ERROR; state = (gz_statep)file; + + /* check that we're reading */ if (state->mode != GZ_READ) return Z_STREAM_ERROR; diff --git a/icecat/modules/zlib/src/gzwrite.c b/icecat/modules/zlib/src/gzwrite.c index 13a3700a83..435b4621b5 100644 --- a/icecat/modules/zlib/src/gzwrite.c +++ b/icecat/modules/zlib/src/gzwrite.c @@ -1,5 +1,5 @@ /* gzwrite.c -- zlib functions for writing gzip files - * Copyright (C) 2004-2026 Mark Adler + * Copyright (C) 2004-2019 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -74,13 +74,9 @@ local int gz_comp(gz_statep state, int flush) { /* write directly if requested */ if (state->direct) { while (strm->avail_in) { - errno = 0; - state->again = 0; put = strm->avail_in > max ? max : strm->avail_in; - writ = (int)write(state->fd, strm->next_in, put); + writ = write(state->fd, strm->next_in, put); if (writ < 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK) - state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -92,9 +88,8 @@ local int gz_comp(gz_statep state, int flush) { /* check for a pending reset */ if (state->reset) { - /* don't start a new gzip member unless there is data to write and - we're not flushing */ - if (strm->avail_in == 0 && flush == Z_NO_FLUSH) + /* don't start a new gzip member unless there is data to write */ + if (strm->avail_in == 0) return 0; deflateReset(strm); state->reset = 0; @@ -108,14 +103,10 @@ local int gz_comp(gz_statep state, int flush) { if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && (flush != Z_FINISH || ret == Z_STREAM_END))) { while (strm->next_out > state->x.next) { - errno = 0; - state->again = 0; put = strm->next_out - state->x.next > (int)max ? max : (unsigned)(strm->next_out - state->x.next); - writ = (int)write(state->fd, state->x.next, put); + writ = write(state->fd, state->x.next, put); if (writ < 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK) - state->again = 1; gz_error(state, Z_ERRNO, zstrerror()); return -1; } @@ -147,12 +138,10 @@ local int gz_comp(gz_statep state, int flush) { return 0; } -/* Compress state->skip (> 0) zeros to output. Return -1 on a write error or - memory allocation failure by gz_comp(), or 0 on success. state->skip is - updated with the number of successfully written zeros, in case there is a - stall on a non-blocking write destination. */ -local int gz_zero(gz_statep state) { - int first, ret; +/* Compress len zeros to output. Return -1 on a write error or memory + allocation failure by gz_comp(), or 0 on success. */ +local int gz_zero(gz_statep state, z_off64_t len) { + int first; unsigned n; z_streamp strm = &(state->strm); @@ -160,34 +149,29 @@ local int gz_zero(gz_statep state) { if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) return -1; - /* compress state->skip zeros */ + /* compress len zeros (len guaranteed > 0) */ first = 1; - do { - n = GT_OFF(state->size) || (z_off64_t)state->size > state->skip ? - (unsigned)state->skip : state->size; + while (len) { + n = GT_OFF(state->size) || (z_off64_t)state->size > len ? + (unsigned)len : state->size; if (first) { memset(state->in, 0, n); first = 0; } strm->avail_in = n; strm->next_in = state->in; - ret = gz_comp(state, Z_NO_FLUSH); - n -= strm->avail_in; state->x.pos += n; - state->skip -= n; - if (ret == -1) + if (gz_comp(state, Z_NO_FLUSH) == -1) return -1; - } while (state->skip); + len -= n; + } return 0; } /* Write len bytes from buf to file. Return the number of bytes written. If - the returned value is less than len, then there was an error. If the error - was a non-blocking stall, then the number of bytes consumed is returned. - For any other error, 0 is returned. */ + the returned value is less than len, then there was an error. */ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { z_size_t put = len; - int ret; /* if len is zero, avoid unnecessary operations */ if (len == 0) @@ -198,13 +182,16 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { return 0; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return 0; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return 0; + } /* for small len, copy to input buffer, otherwise compress directly */ if (len < state->size) { /* copy to input buffer, compress when full */ - for (;;) { + do { unsigned have, copy; if (state->strm.avail_in == 0) @@ -219,11 +206,9 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->x.pos += copy; buf = (const char *)buf + copy; len -= copy; - if (len == 0) - break; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->again ? put - len : 0; - } + if (len && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + } while (len); } else { /* consume whatever's left in the input buffer */ @@ -234,16 +219,13 @@ local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { state->strm.next_in = (z_const Bytef *)buf; do { unsigned n = (unsigned)-1; - if (n > len) n = (unsigned)len; state->strm.avail_in = n; - ret = gz_comp(state, Z_NO_FLUSH); - n -= state->strm.avail_in; state->x.pos += n; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return 0; len -= n; - if (ret == -1) - return state->again ? put - len : 0; } while (len); } @@ -260,10 +242,9 @@ int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) { return 0; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return 0; - gz_error(state, Z_OK, NULL); /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids a flaw in the interface) */ @@ -287,10 +268,9 @@ z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems, return 0; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return 0; - gz_error(state, Z_OK, NULL); /* compute bytes to read -- error on overflow */ len = nitems * size; @@ -316,14 +296,16 @@ int ZEXPORT gzputc(gzFile file, int c) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return -1; - gz_error(state, Z_OK, NULL); /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return -1; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return -1; + } /* try writing to input buffer for speed (state->size == 0 if buffer not initialized) */ @@ -356,10 +338,9 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return -1; - gz_error(state, Z_OK, NULL); /* write string */ len = strlen(s); @@ -368,47 +349,16 @@ int ZEXPORT gzputs(gzFile file, const char *s) { return -1; } put = gz_write(state, s, len); - return len && put == 0 ? -1 : (int)put; + return put < len ? -1 : (int)len; } -#if (((!defined(STDC) && !defined(Z_HAVE_STDARG_H)) || !defined(NO_vsnprintf)) && \ - (defined(STDC) || defined(Z_HAVE_STDARG_H) || !defined(NO_snprintf))) || \ - defined(ZLIB_INSECURE) -/* If the second half of the input buffer is occupied, write out the contents. - If there is any input remaining due to a non-blocking stall on write, move - it to the start of the buffer. Return true if this did not open up the - second half of the buffer. state->err should be checked after this to - handle a gz_comp() error. */ -local int gz_vacate(gz_statep state) { - z_streamp strm; - - strm = &(state->strm); - if (strm->next_in + strm->avail_in <= state->in + state->size) - return 0; - (void)gz_comp(state, Z_NO_FLUSH); - if (strm->avail_in == 0) { - strm->next_in = state->in; - return 0; - } - memmove(state->in, strm->next_in, strm->avail_in); - strm->next_in = state->in; - return strm->avail_in > state->size; -} -#endif - #if defined(STDC) || defined(Z_HAVE_STDARG_H) #include /* -- see zlib.h -- */ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { -#if defined(NO_vsnprintf) && !defined(ZLIB_INSECURE) -#warning "vsnprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" -#warning "you can recompile with ZLIB_INSECURE defined to use vsprintf()" - /* prevent use of insecure vsprintf(), unless purposefully requested */ - (void)file, (void)format, (void)va; - return Z_STREAM_ERROR; -#else - int len, ret; + int len; + unsigned left; char *next; gz_statep state; z_streamp strm; @@ -419,34 +369,24 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) return state->err; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; - - /* do the printf() into the input buffer, put length in len -- the input - buffer is double-sized just for this function, so there should be - state->size bytes available after the current contents */ - ret = gz_vacate(state); - if (state->err) { - if (ret && state->again) { - /* There was a non-blocking stall on write, resulting in the part - of the second half of the output buffer being occupied. Return - a Z_BUF_ERROR to let the application know that this gzprintf() - needs to be retried. */ - gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); - } - if (!state->again) + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) return state->err; } + + /* do the printf() into the input buffer, put length in len -- the input + buffer is double-sized just for this function, so there is guaranteed to + be state->size bytes available after the current contents */ if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(state->in + (strm->next_in - state->in) + strm->avail_in); @@ -472,16 +412,19 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { if (len == 0 || (unsigned)len >= state->size || next[state->size - 1] != 0) return 0; - /* update buffer and position */ + /* update buffer and position, compress first half if past that */ strm->avail_in += (unsigned)len; state->x.pos += len; - - /* write out buffer if more than half is occupied */ - ret = gz_vacate(state); - if (state->err && !state->again) - return state->err; + if (strm->avail_in >= state->size) { + left = strm->avail_in - state->size; + strm->avail_in = state->size; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->err; + memmove(state->in, state->in + state->size, left); + strm->next_in = state->in; + strm->avail_in = left; + } return len; -#endif } int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) { @@ -501,17 +444,6 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20) { -#if defined(NO_snprintf) && !defined(ZLIB_INSECURE) -#warning "snprintf() not available -- gzprintf() stub returns Z_STREAM_ERROR" -#warning "you can recompile with ZLIB_INSECURE defined to use sprintf()" - /* prevent use of insecure sprintf(), unless purposefully requested */ - (void)file, (void)format, (void)a1, (void)a2, (void)a3, (void)a4, (void)a5, - (void)a6, (void)a7, (void)a8, (void)a9, (void)a10, (void)a11, (void)a12, - (void)a13, (void)a14, (void)a15, (void)a16, (void)a17, (void)a18, - (void)a19, (void)a20; - return Z_STREAM_ERROR; -#else - int ret; unsigned len, left; char *next; gz_statep state; @@ -527,34 +459,24 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, if (sizeof(int) != sizeof(void *)) return Z_STREAM_ERROR; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* make sure we have some buffer space */ if (state->size == 0 && gz_init(state) == -1) - return state->err; + return state->error; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->error; + } /* do the printf() into the input buffer, put length in len -- the input buffer is double-sized just for this function, so there is guaranteed to be state->size bytes available after the current contents */ - ret = gz_vacate(state); - if (state->err) { - if (ret && state->again) { - /* There was a non-blocking stall on write, resulting in the part - of the second half of the output buffer being occupied. Return - a Z_BUF_ERROR to let the application know that this gzprintf() - needs to be retried. */ - gz_error(state, Z_BUF_ERROR, "stalled write on gzprintf"); - } - if (!state->again) - return state->err; - } if (strm->avail_in == 0) strm->next_in = state->in; next = (char *)(strm->next_in + strm->avail_in); @@ -588,13 +510,16 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, /* update buffer and position, compress first half if past that */ strm->avail_in += len; state->x.pos += len; - - /* write out buffer if more than half is occupied */ - ret = gz_vacate(state); - if (state->err && !state->again) - return state->err; + if (strm->avail_in >= state->size) { + left = strm->avail_in - state->size; + strm->avail_in = state->size; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->err; + memmove(state->in, state->in + state->size, left); + strm->next_in = state->in; + strm->avail_in = left; + } return (int)len; -#endif } #endif @@ -608,18 +533,20 @@ int ZEXPORT gzflush(gzFile file, int flush) { return Z_STREAM_ERROR; state = (gz_statep)file; - /* check that we're writing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again)) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* check flush parameter */ if (flush < 0 || flush > Z_FINISH) return Z_STREAM_ERROR; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->err; + } /* compress remaining data with requested flush */ (void)gz_comp(state, flush); @@ -637,19 +564,20 @@ int ZEXPORT gzsetparams(gzFile file, int level, int strategy) { state = (gz_statep)file; strm = &(state->strm); - /* check that we're compressing and that there's no (serious) error */ - if (state->mode != GZ_WRITE || (state->err != Z_OK && !state->again) || - state->direct) + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct) return Z_STREAM_ERROR; - gz_error(state, Z_OK, NULL); /* if no change is requested, then do nothing */ if (level == state->level && strategy == state->strategy) return Z_OK; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - return state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->err; + } /* change compression parameters for subsequent input */ if (state->size) { @@ -678,8 +606,11 @@ int ZEXPORT gzclose_w(gzFile file) { return Z_STREAM_ERROR; /* check for seek request */ - if (state->skip && gz_zero(state) == -1) - ret = state->err; + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + ret = state->err; + } /* flush, free memory, and close file */ if (gz_comp(state, Z_FINISH) == -1) diff --git a/icecat/modules/zlib/src/infback.c b/icecat/modules/zlib/src/infback.c index e6443feb45..e7b25b307a 100644 --- a/icecat/modules/zlib/src/infback.c +++ b/icecat/modules/zlib/src/infback.c @@ -1,5 +1,5 @@ /* infback.c -- inflate using a call-back interface - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -46,7 +46,7 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, #ifdef Z_SOLO return Z_STREAM_ERROR; #else - strm->zfree = zcfree; + strm->zfree = zcfree; #endif state = (struct inflate_state FAR *)ZALLOC(strm, 1, sizeof(struct inflate_state)); @@ -63,6 +63,57 @@ int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, return Z_OK; } +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + /* Macros for inflateBack(): */ /* Load returned state from inflate_fast() */ @@ -242,7 +293,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->mode = STORED; break; case 1: /* fixed block */ - inflate_fixed(state); + fixedtables(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN; /* decode codes */ @@ -252,8 +303,8 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, state->last ? " (last)" : "")); state->mode = TABLE; break; - default: - strm->msg = (z_const char *)"invalid block type"; + case 3: + strm->msg = (char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -264,7 +315,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (z_const char *)"invalid stored block lengths"; + strm->msg = (char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -302,8 +353,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (z_const char *) - "too many length or distance symbols"; + strm->msg = (char *)"too many length or distance symbols"; state->mode = BAD; break; } @@ -325,7 +375,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid code lengths set"; + strm->msg = (char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -348,8 +398,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -372,8 +421,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -387,8 +435,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (z_const char *) - "invalid code -- missing end-of-block"; + strm->msg = (char *)"invalid code -- missing end-of-block"; state->mode = BAD; break; } @@ -402,7 +449,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid literal/lengths set"; + strm->msg = (char *)"invalid literal/lengths set"; state->mode = BAD; break; } @@ -411,7 +458,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid distances set"; + strm->msg = (char *)"invalid distances set"; state->mode = BAD; break; } @@ -470,7 +517,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, /* invalid code */ if (here.op & 64) { - strm->msg = (z_const char *)"invalid literal/length code"; + strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -502,7 +549,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } DROPBITS(here.bits); if (here.op & 64) { - strm->msg = (z_const char *)"invalid distance code"; + strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } @@ -517,7 +564,7 @@ int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, } if (state->offset > state->wsize - (state->whave < state->wsize ? left : 0)) { - strm->msg = (z_const char *)"invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } diff --git a/icecat/modules/zlib/src/inffast.c b/icecat/modules/zlib/src/inffast.c index d1657f3f30..9354676e78 100644 --- a/icecat/modules/zlib/src/inffast.c +++ b/icecat/modules/zlib/src/inffast.c @@ -1,5 +1,5 @@ /* inffast.c -- fast decoding - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2017 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -155,8 +155,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { dist += (unsigned)hold & ((1U << op) - 1); #ifdef INFLATE_STRICT if (dist > dmax) { - strm->msg = (z_const char *) - "invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -169,8 +168,8 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { op = dist - op; /* distance back in window */ if (op > whave) { if (state->sane) { - strm->msg = (z_const char *) - "invalid distance too far back"; + strm->msg = + (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -266,7 +265,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { goto dodist; } else { - strm->msg = (z_const char *)"invalid distance code"; + strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } @@ -281,7 +280,7 @@ void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { break; } else { - strm->msg = (z_const char *)"invalid literal/length code"; + strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } diff --git a/icecat/modules/zlib/src/inffixed.h b/icecat/modules/zlib/src/inffixed.h index 05ce88e4ff..d628327769 100644 --- a/icecat/modules/zlib/src/inffixed.h +++ b/icecat/modules/zlib/src/inffixed.h @@ -1,94 +1,94 @@ -/* inffixed.h -- table for decoding fixed codes - * Generated automatically by makefixed(). - */ + /* inffixed.h -- table for decoding fixed codes + * Generated automatically by makefixed(). + */ -/* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ + /* WARNING: this file should *not* be used by applications. + It is part of the implementation of this library and is + subject to change. Applications should only use zlib.h. + */ -static const code lenfix[512] = { - {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, - {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, - {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, - {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, - {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, - {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, - {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, - {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, - {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, - {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, - {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, - {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, - {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, - {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, - {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, - {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, - {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, - {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, - {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, - {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, - {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, - {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, - {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, - {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, - {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, - {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, - {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, - {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, - {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, - {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, - {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, - {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, - {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, - {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, - {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, - {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, - {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, - {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, - {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, - {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, - {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, - {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, - {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, - {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, - {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, - {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, - {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, - {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, - {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, - {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, - {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, - {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, - {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, - {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, - {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, - {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, - {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, - {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, - {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, - {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, - {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, - {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, - {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, - {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, - {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, - {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, - {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, - {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, - {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, - {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, - {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, - {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, - {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, - {0,9,255} -}; + static const code lenfix[512] = { + {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, + {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, + {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, + {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, + {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, + {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, + {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, + {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, + {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, + {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, + {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, + {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, + {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, + {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, + {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, + {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, + {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, + {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, + {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, + {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, + {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, + {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, + {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, + {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, + {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, + {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, + {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, + {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, + {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, + {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, + {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, + {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, + {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, + {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, + {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, + {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, + {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, + {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, + {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, + {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, + {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, + {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, + {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, + {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, + {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, + {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, + {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, + {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, + {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, + {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, + {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, + {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, + {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, + {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, + {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, + {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, + {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, + {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, + {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, + {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, + {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, + {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, + {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, + {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, + {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, + {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, + {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, + {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, + {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, + {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, + {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, + {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, + {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, + {0,9,255} + }; -static const code distfix[32] = { - {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, - {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, - {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, - {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, - {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, - {22,5,193},{64,5,0} -}; + static const code distfix[32] = { + {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, + {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, + {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, + {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, + {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, + {22,5,193},{64,5,0} + }; diff --git a/icecat/modules/zlib/src/inflate.c b/icecat/modules/zlib/src/inflate.c index 5f5d4922b7..94ecff015a 100644 --- a/icecat/modules/zlib/src/inflate.c +++ b/icecat/modules/zlib/src/inflate.c @@ -1,5 +1,5 @@ /* inflate.c -- zlib decompression - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2022 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -85,6 +85,12 @@ #include "inflate.h" #include "inffast.h" +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif + local int inflateStateCheck(z_streamp strm) { struct inflate_state FAR *state; if (strm == Z_NULL || @@ -104,7 +110,6 @@ int ZEXPORT inflateResetKeep(z_streamp strm) { state = (struct inflate_state FAR *)strm->state; strm->total_in = strm->total_out = state->total = 0; strm->msg = Z_NULL; - strm->data_type = 0; if (state->wrap) /* to support ill-conceived Java test suite */ strm->adler = state->wrap & 1; state->mode = HEAD; @@ -197,7 +202,6 @@ int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, state = (struct inflate_state FAR *) ZALLOC(strm, 1, sizeof(struct inflate_state)); if (state == Z_NULL) return Z_MEM_ERROR; - zmemzero(state, sizeof(struct inflate_state)); Tracev((stderr, "inflate: allocated\n")); strm->state = (struct internal_state FAR *)state; state->strm = strm; @@ -230,11 +234,123 @@ int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { } if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; value &= (1L << bits) - 1; - state->hold += (unsigned long)value << state->bits; + state->hold += (unsigned)value << state->bits; state->bits += (uInt)bits; return Z_OK; } +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(struct inflate_state FAR *state) { +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also + defines BUILDFIXED, so the tables are built on the fly. makefixed() writes + those tables to stdout, which would be piped to inffixed.h. A small program + can simply call makefixed to do this: + + void makefixed(void); + + int main(void) + { + makefixed(); + return 0; + } + + Then that can be linked with zlib built with MAKEFIXED defined and run: + + a.out > inffixed.h + */ +void makefixed(void) +{ + unsigned low, size; + struct inflate_state state; + + fixedtables(&state); + puts(" /* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts(" /* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf(" static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, + state.lencode[low].bits, state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); + size = 1U << 5; + printf("\n static const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); +} +#endif /* MAKEFIXED */ + /* Update the window with the last wsize (normally 32K) bytes written before returning. If window does not exist yet, create it. This is only called @@ -526,12 +642,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if ( #endif ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (z_const char *)"incorrect header check"; + strm->msg = (char *)"incorrect header check"; state->mode = BAD; break; } if (BITS(4) != Z_DEFLATED) { - strm->msg = (z_const char *)"unknown compression method"; + strm->msg = (char *)"unknown compression method"; state->mode = BAD; break; } @@ -540,7 +656,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wbits == 0) state->wbits = len; if (len > 15 || len > state->wbits) { - strm->msg = (z_const char *)"invalid window size"; + strm->msg = (char *)"invalid window size"; state->mode = BAD; break; } @@ -556,12 +672,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(16); state->flags = (int)(hold); if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (z_const char *)"unknown compression method"; + strm->msg = (char *)"unknown compression method"; state->mode = BAD; break; } if (state->flags & 0xe000) { - strm->msg = (z_const char *)"unknown header flags set"; + strm->msg = (char *)"unknown header flags set"; state->mode = BAD; break; } @@ -677,7 +793,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->flags & 0x0200) { NEEDBITS(16); if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (z_const char *)"header crc mismatch"; + strm->msg = (char *)"header crc mismatch"; state->mode = BAD; break; } @@ -724,7 +840,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->mode = STORED; break; case 1: /* fixed block */ - inflate_fixed(state); + fixedtables(state); Tracev((stderr, "inflate: fixed codes block%s\n", state->last ? " (last)" : "")); state->mode = LEN_; /* decode codes */ @@ -738,8 +854,8 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->last ? " (last)" : "")); state->mode = TABLE; break; - default: - strm->msg = (z_const char *)"invalid block type"; + case 3: + strm->msg = (char *)"invalid block type"; state->mode = BAD; } DROPBITS(2); @@ -748,7 +864,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { BYTEBITS(); /* go to byte boundary */ NEEDBITS(32); if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (z_const char *)"invalid stored block lengths"; + strm->msg = (char *)"invalid stored block lengths"; state->mode = BAD; break; } @@ -789,8 +905,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(4); #ifndef PKZIP_BUG_WORKAROUND if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (z_const char *) - "too many length or distance symbols"; + strm->msg = (char *)"too many length or distance symbols"; state->mode = BAD; break; } @@ -808,12 +923,12 @@ int ZEXPORT inflate(z_streamp strm, int flush) { while (state->have < 19) state->lens[order[state->have++]] = 0; state->next = state->codes; - state->lencode = state->distcode = (const code FAR *)(state->next); + state->lencode = (const code FAR *)(state->next); state->lenbits = 7; ret = inflate_table(CODES, state->lens, 19, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid code lengths set"; + strm->msg = (char *)"invalid code lengths set"; state->mode = BAD; break; } @@ -837,8 +952,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { NEEDBITS(here.bits + 2); DROPBITS(here.bits); if (state->have == 0) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -861,8 +975,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(7); } if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (z_const char *) - "invalid bit length repeat"; + strm->msg = (char *)"invalid bit length repeat"; state->mode = BAD; break; } @@ -876,8 +989,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { /* check for end-of-block code (better have one) */ if (state->lens[256] == 0) { - strm->msg = (z_const char *) - "invalid code -- missing end-of-block"; + strm->msg = (char *)"invalid code -- missing end-of-block"; state->mode = BAD; break; } @@ -891,7 +1003,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), &(state->lenbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid literal/lengths set"; + strm->msg = (char *)"invalid literal/lengths set"; state->mode = BAD; break; } @@ -900,7 +1012,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, &(state->next), &(state->distbits), state->work); if (ret) { - strm->msg = (z_const char *)"invalid distances set"; + strm->msg = (char *)"invalid distances set"; state->mode = BAD; break; } @@ -954,7 +1066,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { break; } if (here.op & 64) { - strm->msg = (z_const char *)"invalid literal/length code"; + strm->msg = (char *)"invalid literal/length code"; state->mode = BAD; break; } @@ -992,7 +1104,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { DROPBITS(here.bits); state->back += here.bits; if (here.op & 64) { - strm->msg = (z_const char *)"invalid distance code"; + strm->msg = (char *)"invalid distance code"; state->mode = BAD; break; } @@ -1009,7 +1121,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { } #ifdef INFLATE_STRICT if (state->offset > state->dmax) { - strm->msg = (z_const char *)"invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1024,8 +1136,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { copy = state->offset - copy; if (copy > state->whave) { if (state->sane) { - strm->msg = (z_const char *) - "invalid distance too far back"; + strm->msg = (char *)"invalid distance too far back"; state->mode = BAD; break; } @@ -1084,7 +1195,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { state->flags ? hold : #endif ZSWAP32(hold)) != state->check) { - strm->msg = (z_const char *)"incorrect data check"; + strm->msg = (char *)"incorrect data check"; state->mode = BAD; break; } @@ -1098,7 +1209,7 @@ int ZEXPORT inflate(z_streamp strm, int flush) { if (state->wrap && state->flags) { NEEDBITS(32); if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { - strm->msg = (z_const char *)"incorrect length check"; + strm->msg = (char *)"incorrect length check"; state->mode = BAD; break; } @@ -1329,6 +1440,7 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { struct inflate_state FAR *state; struct inflate_state FAR *copy; unsigned char FAR *window; + unsigned wsize; /* check input */ if (inflateStateCheck(source) || dest == Z_NULL) @@ -1339,7 +1451,6 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy = (struct inflate_state FAR *) ZALLOC(source, 1, sizeof(struct inflate_state)); if (copy == Z_NULL) return Z_MEM_ERROR; - zmemzero(copy, sizeof(struct inflate_state)); window = Z_NULL; if (state->window != Z_NULL) { window = (unsigned char FAR *) @@ -1351,8 +1462,8 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { } /* copy state */ - zmemcpy(dest, source, sizeof(z_stream)); - zmemcpy(copy, state, sizeof(struct inflate_state)); + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); copy->strm = dest; if (state->lencode >= state->codes && state->lencode <= state->codes + ENOUGH - 1) { @@ -1360,8 +1471,10 @@ int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { copy->distcode = copy->codes + (state->distcode - state->codes); } copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) - zmemcpy(window, state->window, state->whave); + if (window != Z_NULL) { + wsize = 1U << state->wbits; + zmemcpy(window, state->window, wsize); + } copy->window = window; dest->state = (struct internal_state FAR *)copy; return Z_OK; diff --git a/icecat/modules/zlib/src/inflate.h b/icecat/modules/zlib/src/inflate.h index f758e0dcc1..f127b6b1fa 100644 --- a/icecat/modules/zlib/src/inflate.h +++ b/icecat/modules/zlib/src/inflate.h @@ -100,7 +100,7 @@ struct inflate_state { unsigned char FAR *window; /* allocated sliding window, if needed */ /* bit accumulator */ unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in hold */ + unsigned bits; /* number of bits in "in" */ /* for string and stored block copying */ unsigned length; /* literal or length of data to copy */ unsigned offset; /* distance back to copy string from */ diff --git a/icecat/modules/zlib/src/inftrees.c b/icecat/modules/zlib/src/inftrees.c index dcbc64e05b..98cfe16445 100644 --- a/icecat/modules/zlib/src/inftrees.c +++ b/icecat/modules/zlib/src/inftrees.c @@ -1,29 +1,15 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif -#ifdef BUILDFIXED -# define Z_ONCE -#endif - #include "zutil.h" #include "inftrees.h" -#include "inflate.h" - -#ifndef NULL -# define NULL 0 -#endif #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.3.2 Copyright 1995-2026 Mark Adler "; + " inflate 1.3.1 Copyright 1995-2024 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -61,9 +47,9 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned mask; /* mask for low root bits */ code here; /* table entry for duplication */ code FAR *next; /* next available space in table */ - const unsigned short FAR *base = NULL; /* base value table to use */ - const unsigned short FAR *extra = NULL; /* extra bits table to use */ - unsigned match = 0; /* use base and extra for symbol >= match */ + const unsigned short FAR *base; /* base value table to use */ + const unsigned short FAR *extra; /* extra bits table to use */ + unsigned match; /* use base and extra for symbol >= match */ unsigned short count[MAXBITS+1]; /* number of codes of each length */ unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ static const unsigned short lbase[31] = { /* Length codes 257..285 base */ @@ -71,7 +57,7 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 75}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, @@ -189,6 +175,7 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, /* set up for code type */ switch (type) { case CODES: + base = extra = work; /* dummy value--not used */ match = 20; break; case LENS: @@ -196,9 +183,10 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, extra = lext; match = 257; break; - case DISTS: + default: /* DISTS */ base = dbase; extra = dext; + match = 0; } /* initialize state for loop */ @@ -309,116 +297,3 @@ int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, *bits = root; return 0; } - -#ifdef BUILDFIXED -/* - If this is compiled with BUILDFIXED defined, and if inflate will be used in - multiple threads, and if atomics are not available, then inflate() must be - called with a fixed block (e.g. 0x03 0x00) to initialize the tables and must - return before any other threads are allowed to call inflate. - */ - -static code *lenfix, *distfix; -static code fixed[544]; - -/* State for z_once(). */ -local z_once_t built = Z_ONCE_INIT; - -local void buildtables(void) { - unsigned sym, bits; - static code *next; - unsigned short lens[288], work[288]; - - /* literal/length table */ - sym = 0; - while (sym < 144) lens[sym++] = 8; - while (sym < 256) lens[sym++] = 9; - while (sym < 280) lens[sym++] = 7; - while (sym < 288) lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, lens, 288, &(next), &(bits), work); - - /* distance table */ - sym = 0; - while (sym < 32) lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, lens, 32, &(next), &(bits), work); -} -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications if atomics are not available, as it will - not be thread-safe. - */ -void inflate_fixed(struct inflate_state FAR *state) { -#ifdef BUILDFIXED - z_once(&built, buildtables); -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include - -/* - Write out the inffixed.h that will be #include'd above. Defining MAKEFIXED - also defines BUILDFIXED, so the tables are built on the fly. main() writes - those tables to stdout, which would directed to inffixed.h. Compile this - along with zutil.c: - - cc -DMAKEFIXED -o fix inftrees.c zutil.c - ./fix > inffixed.h - */ -int main(void) { - unsigned low, size; - struct inflate_state state; - - inflate_fixed(&state); - puts("/* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts("/* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf("static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n};"); - size = 1U << 5; - printf("\nstatic const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n};"); - return 0; -} -#endif /* MAKEFIXED */ diff --git a/icecat/modules/zlib/src/inftrees.h b/icecat/modules/zlib/src/inftrees.h index 84d053697c..396f74b5da 100644 --- a/icecat/modules/zlib/src/inftrees.h +++ b/icecat/modules/zlib/src/inftrees.h @@ -1,5 +1,5 @@ /* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2026 Mark Adler + * Copyright (C) 1995-2005, 2010 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -60,5 +60,3 @@ typedef enum { int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, unsigned codes, code FAR * FAR *table, unsigned FAR *bits, unsigned short FAR *work); -struct inflate_state; -void ZLIB_INTERNAL inflate_fixed(struct inflate_state FAR *state); diff --git a/icecat/modules/zlib/src/mozzconf.h b/icecat/modules/zlib/src/mozzconf.h index 6e74f881f3..ec947f07a3 100644 --- a/icecat/modules/zlib/src/mozzconf.h +++ b/icecat/modules/zlib/src/mozzconf.h @@ -160,30 +160,9 @@ #define slide_hash MOZ_Z_slide_hash #define uncompress2 MOZ_Z_uncompress2 -/* New as of zlib-1.2.9 */ -#define adler32_z MOZ_Z_adler32_z -#define crc32_z MOZ_Z_crc32_z -#define deflateGetDictionary MOZ_Z_deflateGetDictionary -#define gzfread MOZ_Z_gzfread -#define gzfwrite MOZ_Z_gzfwrite -#define inflateCodesUsed MOZ_Z_inflateCodesUsed -#define inflateValidate MOZ_Z_inflateValidate - /* New as of zlib-1.2.13 */ #define crc32_combine_gen MOZ_Z_crc32_combine_gen #define crc32_combine_gen64 MOZ_Z_crc32_combine_gen64 #define crc32_combine_op MOZ_Z_crc32_combine_op -/* New as of zlib-1.3.1.2 */ -#define deflateUsed MOZ_Z_deflateUsed - -/* New as of zlib-1.3.2 */ -#define compress_z MOZ_Z_compress_z -#define compress2_z MOZ_Z_compress2_z -#define compressBound_z MOZ_Z_compressBound_z -#define deflateBound_z MOZ_Z_deflateBound_z -#define inflate_fixed MOZ_Z_inflate_fixed -#define uncompress_z MOZ_Z_uncompress_z -#define uncompress2_z MOZ_Z_uncompress2_z - #endif diff --git a/icecat/modules/zlib/src/trees.c b/icecat/modules/zlib/src/trees.c index 8e4da01e9f..6a523ef34e 100644 --- a/icecat/modules/zlib/src/trees.c +++ b/icecat/modules/zlib/src/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2026 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -112,7 +112,7 @@ local int base_dist[D_CODES]; #else # include "trees.h" -#endif /* defined(GEN_TREES_H) || !defined(STDC) */ +#endif /* GEN_TREES_H */ struct static_tree_desc_s { const ct_data *static_tree; /* static tree or NULL */ @@ -152,7 +152,7 @@ local TCONST static_tree_desc static_bl_desc = * IN assertion: 1 <= len <= 15 */ local unsigned bi_reverse(unsigned code, int len) { - unsigned res = 0; + register unsigned res = 0; do { res |= code & 1; code >>= 1, res <<= 1; @@ -184,11 +184,10 @@ local void bi_windup(deflate_state *s) { } else if (s->bi_valid > 0) { put_byte(s, (Byte)s->bi_buf); } - s->bi_used = ((s->bi_valid - 1) & 7) + 1; s->bi_buf = 0; s->bi_valid = 0; #ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent + 7) & ~(ulg)7; + s->bits_sent = (s->bits_sent + 7) & ~7; #endif } @@ -467,7 +466,6 @@ void ZLIB_INTERNAL _tr_init(deflate_state *s) { s->bi_buf = 0; s->bi_valid = 0; - s->bi_used = 0; #ifdef ZLIB_DEBUG s->compressed_len = 0L; s->bits_sent = 0L; @@ -726,7 +724,7 @@ local void scan_tree(deflate_state *s, ct_data *tree, int max_code) { if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { - s->bl_tree[curlen].Freq += (ush)count; + s->bl_tree[curlen].Freq += count; } else if (curlen != 0) { if (curlen != prevlen) s->bl_tree[curlen].Freq++; s->bl_tree[REP_3_6].Freq++; @@ -819,7 +817,7 @@ local int build_bl_tree(deflate_state *s) { } /* Update opt_len to include the bit length tree and counts */ s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4; - Tracev((stderr, "\ndyn trees: dyn %lu, stat %lu", + Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); return max_blindex; @@ -845,13 +843,13 @@ local void send_all_trees(deflate_state *s, int lcodes, int dcodes, Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } - Tracev((stderr, "\nbl tree: sent %lu", s->bits_sent)); + Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %lu", s->bits_sent)); + Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %lu", s->bits_sent)); + Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); } /* =========================================================================== @@ -934,7 +932,7 @@ local void compress_block(deflate_state *s, const ct_data *ltree, extra = extra_dbits[code]; if (extra != 0) { dist -= (unsigned)base_dist[code]; - send_bits(s, (int)dist, extra); /* send the extra bits */ + send_bits(s, dist, extra); /* send the extra distance bits */ } } /* literal or match pair ? */ @@ -1008,11 +1006,11 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, /* Construct the literal and distance trees */ build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %lu, stat %lu", s->opt_len, + Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, s->static_len)); build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %lu, stat %lu", s->opt_len, + Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, s->static_len)); /* At this point, opt_len and static_len are the total bit lengths of * the compressed block data, excluding the tree representations. @@ -1085,7 +1083,7 @@ void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, #endif } Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, - s->compressed_len - 7*(ulg)last)); + s->compressed_len - 7*last)); } /* =========================================================================== diff --git a/icecat/modules/zlib/src/uncompr.c b/icecat/modules/zlib/src/uncompr.c index 2195e78550..5e256663b4 100644 --- a/icecat/modules/zlib/src/uncompr.c +++ b/icecat/modules/zlib/src/uncompr.c @@ -1,5 +1,5 @@ /* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -23,24 +23,24 @@ memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted, including if the input data is an incomplete zlib stream. - - The _z versions of the functions take size_t length arguments. */ -int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t *sourceLen) { +int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong *sourceLen) { z_stream stream; int err; const uInt max = (uInt)-1; - z_size_t len, left; - - if (sourceLen == NULL || (*sourceLen > 0 && source == NULL) || - destLen == NULL || (*destLen > 0 && dest == NULL)) - return Z_STREAM_ERROR; + uLong len, left; + Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */ len = *sourceLen; - left = *destLen; - if (left == 0 && dest == Z_NULL) - dest = (Bytef *)&stream.reserved; /* next_out cannot be NULL */ + if (*destLen) { + left = *destLen; + *destLen = 0; + } + else { + left = 1; + dest = buf; + } stream.next_in = (z_const Bytef *)source; stream.avail_in = 0; @@ -56,46 +56,30 @@ int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, const Bytef *source, do { if (stream.avail_out == 0) { - stream.avail_out = left > (z_size_t)max ? max : (uInt)left; + stream.avail_out = left > (uLong)max ? max : (uInt)left; left -= stream.avail_out; } if (stream.avail_in == 0) { - stream.avail_in = len > (z_size_t)max ? max : (uInt)len; + stream.avail_in = len > (uLong)max ? max : (uInt)len; len -= stream.avail_in; } err = inflate(&stream, Z_NO_FLUSH); } while (err == Z_OK); - /* Set len and left to the unused input data and unused output space. Set - *sourceLen to the amount of input consumed. Set *destLen to the amount - of data produced. */ - len += stream.avail_in; - left += stream.avail_out; - *sourceLen -= len; - *destLen -= left; + *sourceLen -= len + stream.avail_in; + if (dest != buf) + *destLen = stream.total_out; + else if (stream.total_out && err == Z_BUF_ERROR) + left = 1; inflateEnd(&stream); return err == Z_STREAM_END ? Z_OK : err == Z_NEED_DICT ? Z_DATA_ERROR : - err == Z_BUF_ERROR && len == 0 ? Z_DATA_ERROR : + err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR : err; } -int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, - uLong *sourceLen) { - int ret; - z_size_t got = *destLen, used = *sourceLen; - ret = uncompress2_z(dest, &got, source, &used); - *sourceLen = (uLong)used; - *destLen = (uLong)got; - return ret; -} -int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, const Bytef *source, - z_size_t sourceLen) { - z_size_t used = sourceLen; - return uncompress2_z(dest, destLen, source, &used); -} + int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen) { - uLong used = sourceLen; - return uncompress2(dest, destLen, source, &used); + return uncompress2(dest, destLen, source, &sourceLen); } diff --git a/icecat/modules/zlib/src/zconf.h b/icecat/modules/zlib/src/zconf.h index 3842decc17..c6305ec3de 100644 --- a/icecat/modules/zlib/src/zconf.h +++ b/icecat/modules/zlib/src/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,10 +36,7 @@ # ifndef Z_SOLO # define compress z_compress # define compress2 z_compress2 -# define compress_z z_compress_z -# define compress2_z z_compress2_z # define compressBound z_compressBound -# define compressBound_z z_compressBound_z # endif # define crc32 z_crc32 # define crc32_combine z_crc32_combine @@ -50,7 +47,6 @@ # define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound -# define deflateBound_z z_deflateBound_z # define deflateCopy z_deflateCopy # define deflateEnd z_deflateEnd # define deflateGetDictionary z_deflateGetDictionary @@ -66,7 +62,6 @@ # define deflateSetDictionary z_deflateSetDictionary # define deflateSetHeader z_deflateSetHeader # define deflateTune z_deflateTune -# define deflateUsed z_deflateUsed # define deflate_copyright z_deflate_copyright # define get_crc_table z_get_crc_table # ifndef Z_SOLO @@ -136,12 +131,9 @@ # define inflate_copyright z_inflate_copyright # define inflate_fast z_inflate_fast # define inflate_table z_inflate_table -# define inflate_fixed z_inflate_fixed # ifndef Z_SOLO # define uncompress z_uncompress # define uncompress2 z_uncompress2 -# define uncompress_z z_uncompress_z -# define uncompress2_z z_uncompress2_z # endif # define zError z_zError # ifndef Z_SOLO @@ -245,12 +237,10 @@ # endif #endif -#ifndef z_const -# ifdef ZLIB_CONST -# define z_const const -# else -# define z_const -# endif +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const #endif #ifdef Z_SOLO @@ -446,11 +436,11 @@ typedef uLong FAR uLongf; typedef unsigned long z_crc_t; #endif -#if HAVE_UNISTD_H-0 /* may be set to #if 1 by ./configure */ +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ # define Z_HAVE_UNISTD_H #endif -#if HAVE_STDARG_H-0 /* may be set to #if 1 by ./configure */ +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ # define Z_HAVE_STDARG_H #endif @@ -483,8 +473,12 @@ typedef uLong FAR uLongf; #endif #ifndef Z_HAVE_UNISTD_H -# if defined(__WATCOMC__) || defined(__GO32__) || \ - (defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)) +# ifdef __WATCOMC__ +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_HAVE_UNISTD_H +# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) # define Z_HAVE_UNISTD_H # endif #endif @@ -519,19 +513,17 @@ typedef uLong FAR uLongf; #endif #ifndef z_off_t -# define z_off_t long long +# define z_off_t long #endif #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t -#elif defined(__MINGW32__) -# define z_off64_t long long -#elif defined(_WIN32) && !defined(__GNUC__) -# define z_off64_t __int64 -#elif defined(__GO32__) -# define z_off64_t offset_t #else -# define z_off64_t z_off_t +# if defined(_WIN32) && !defined(__GNUC__) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif #endif /* MVS linker does not support external names larger than 8 bytes */ diff --git a/icecat/modules/zlib/src/zlib.h b/icecat/modules/zlib/src/zlib.h index a57d336134..8d4b932eaf 100644 --- a/icecat/modules/zlib/src/zlib.h +++ b/icecat/modules/zlib/src/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.3.2, February 17th, 2026 + version 1.3.1, January 22nd, 2024 - Copyright (C) 1995-2026 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -24,28 +24,24 @@ The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 at https://datatracker.ietf.org/doc/html/rfc1950 + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). */ #ifndef ZLIB_H #define ZLIB_H -#ifdef ZLIB_BUILD -# include -#else -# include "zconf.h" -#endif +#include "zconf.h" #ifdef __cplusplus extern "C" { #endif -#define ZLIB_VERSION "1.3.2" -#define ZLIB_VERNUM 0x1320 +#define ZLIB_VERSION "1.3.1" +#define ZLIB_VERNUM 0x1310 #define ZLIB_VER_MAJOR 1 #define ZLIB_VER_MINOR 3 -#define ZLIB_VER_REVISION 2 +#define ZLIB_VER_REVISION 1 #define ZLIB_VER_SUBREVISION 0 /* @@ -445,7 +441,7 @@ ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); The Z_BLOCK option assists in appending to or combining deflate streams. To assist in this, on return inflate() always sets strm->data_type to the - number of unused bits in the input taken from strm->next_in, plus 64 if + number of unused bits in the last byte taken from strm->next_in, plus 64 if inflate() is currently decoding the last block in the deflate stream, plus 128 if inflate() returned immediately after decoding an end-of-block code or decoding the complete header up to just before the first byte of the deflate @@ -591,21 +587,18 @@ ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, The strategy parameter is used to tune the compression algorithm. Use the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_RLE to limit match distances to one (run-length - encoding), or Z_HUFFMAN_ONLY to force Huffman encoding only (no string - matching). Filtered data consists mostly of small values with a somewhat - random distribution, as produced by the PNG filters. In this case, the - compression algorithm is tuned to compress them better. The effect of - Z_FILTERED is to force more Huffman coding and less string matching than the - default; it is intermediate between Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. - Z_RLE is almost as fast as Z_HUFFMAN_ONLY, but should give better - compression for PNG image data than Huffman only. The degree of string - matching from most to none is: Z_DEFAULT_STRATEGY, Z_FILTERED, Z_RLE, then - Z_HUFFMAN_ONLY. The strategy parameter affects the compression ratio but - never the correctness of the compressed output, even if it is not set - optimally for the given data. Z_FIXED uses the default string matching, but - prevents the use of dynamic Huffman codes, allowing for a simpler decoder - for special applications. + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid @@ -765,8 +758,8 @@ ZEXTERN int ZEXPORT deflateTune(z_streamp strm, returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ -ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen); -ZEXTERN z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen); +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, + uLong sourceLen); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or @@ -778,9 +771,6 @@ ZEXTERN z_size_t ZEXPORT deflateBound_z(z_streamp strm, z_size_t sourceLen); to return Z_STREAM_END. Note that it is possible for the compressed size to be larger than the value returned by deflateBound() if flush options other than Z_FINISH or Z_NO_FLUSH are used. - - delfateBound_z() is the same, but takes and returns a size_t length. Note - that a long is 32 bits on Windows. */ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, @@ -795,21 +785,6 @@ ZEXTERN int ZEXPORT deflatePending(z_streamp strm, or bits are Z_NULL, then those values are not set. deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. If an int is 16 bits and memLevel is 9, then - it is possible for the number of pending bytes to not fit in an unsigned. In - that case Z_BUF_ERROR is returned and *pending is set to the maximum value - of an unsigned. - */ - -ZEXTERN int ZEXPORT deflateUsed(z_streamp strm, - int *bits); -/* - deflateUsed() returns in *bits the most recent number of deflate bits used - in the last byte when flushing to a byte boundary. The result is in 1..8, or - 0 if there has not yet been a flush. This helps determine the location of - the last bit of a deflate stream. - - deflateUsed returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ @@ -1012,15 +987,13 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, int bits, int value); /* - This function inserts bits in the inflate input stream. The intent is to - use inflatePrime() to start inflating at a bit position in the middle of a - byte. The provided bits will be used before any bytes are used from - next_in. This function should be used with raw inflate, before the first - inflate() call, after inflateInit2() or inflateReset(). It can also be used - after an inflate() return indicates the end of a deflate block or header - when using Z_BLOCK. bits must be less than or equal to 16, and that many of - the least significant bits of value will be inserted in the input. The - other bits in value can be non-zero, and will be ignored. + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. If bits is negative, then the input stream bit buffer is emptied. Then inflatePrime() can be called again to put bits in the buffer. This is used @@ -1028,15 +1001,7 @@ ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, to feeding inflate codes. inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent, or if bits is out of range. If inflate was - in the middle of processing a header, trailer, or stored block lengths, then - it is possible for there to be only eight bits available in the bit buffer. - In that case, bits > 8 is considered out of range. However, when used as - outlined above, there will always be 16 bits available in the buffer for - insertion. As noted in its documentation above, inflate records the number - of bits in the bit buffer on return in data_type. 32 minus that is the - number of bits available for insertion. inflatePrime does not update - data_type with the new number of bits in buffer. + stream state was inconsistent. */ ZEXTERN long ZEXPORT inflateMark(z_streamp strm); @@ -1082,22 +1047,20 @@ ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, The text, time, xflags, and os fields are filled in with the gzip header contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) The extra, name, and comment pointers - much each be either Z_NULL or point to space to store that information from - the header. If extra is not Z_NULL, then extra_max contains the maximum - number of bytes that can be written to extra. Once done is true, extra_len - contains the actual extra field length, and extra contains the extra field, - or that field truncated if extra_max is less than extra_len. If name is not - Z_NULL, then up to name_max characters, including the terminating zero, are - written there. If comment is not Z_NULL, then up to comm_max characters, - including the terminating zero, are written there. The application can tell - that the name or comment did not fit in the provided space by the absence of - a terminating zero. If any of extra, name, or comment are not present in - the header, then that field's pointer is set to Z_NULL. This allows the use - of deflateSetHeader() with the returned structure to duplicate the header. - Note that if those fields initially pointed to allocated memory, then the - application will need to save them elsewhere so that they can be eventually - freed. + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. If inflateGetHeader is not used, then the header information is simply discarded. The header is always checked for validity, including the header @@ -1245,14 +1208,13 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); 21: FASTEST -- deflate algorithm with only one, lowest compression level 22,23: 0 (reserved) - The sprintf variant used by gzprintf (all zeros is best): + The sprintf variant used by gzprintf (zero is best): 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() is not secure! + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - 27: 0 = gzprintf() present, 1 = not -- 1 means gzprintf() returns an error Remainder: - 28-31: 0 (reserved) + 27-31: 0 (reserved) */ #ifndef Z_SOLO @@ -1264,14 +1226,11 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags(void); stream-oriented functions. To simplify the interface, some default options are assumed (compression level and memory usage, standard memory allocation functions). The source code of these utility functions can be modified if - you need special options. The _z versions of the functions use the size_t - type for lengths. Note that a long is 32 bits on Windows. + you need special options. */ -ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); -ZEXTERN int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t sourceLen); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1285,12 +1244,9 @@ ZEXTERN int ZEXPORT compress_z(Bytef *dest, z_size_t *destLen, buffer. */ -ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen, int level); -ZEXTERN int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t sourceLen, - int level); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte @@ -1305,24 +1261,21 @@ ZEXTERN int ZEXPORT compress2_z(Bytef *dest, z_size_t *destLen, */ ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); -ZEXTERN z_size_t ZEXPORT compressBound_z(z_size_t sourceLen); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ -ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); -ZEXTERN int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t sourceLen); /* Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. On entry, *destLen is the total size + the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) On exit, *destLen + mechanism outside the scope of this compression library.) Upon exit, destLen is the actual size of the uncompressed data. uncompress returns Z_OK if success, Z_MEM_ERROR if there was not @@ -1332,10 +1285,8 @@ ZEXTERN int ZEXPORT uncompress_z(Bytef *dest, z_size_t *destLen, buffer with the uncompressed data up to that point. */ -ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, +ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong *sourceLen); -ZEXTERN int ZEXPORT uncompress2_z(Bytef *dest, z_size_t *destLen, - const Bytef *source, z_size_t *sourceLen); /* Same as uncompress, except that sourceLen is a pointer, where the length of the source is *sourceLen. On return, *sourceLen is the number of @@ -1363,17 +1314,13 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression as in "wb9F". (See the description of deflateInit2 for more information about the strategy parameter.) 'T' will request transparent writing or - appending with no compression and not using the gzip format. 'T' cannot be - used to force transparent reading. Transparent reading is automatically - performed if there is no gzip header at the start. Transparent reading can - be disabled with the 'G' option, which will instead return an error if there - is no gzip header. 'N' will open the file in non-blocking mode. + appending with no compression and not using the gzip format. - 'a' can be used instead of 'w' to request that the gzip stream that will - be written be appended to the file. '+' will result in an error, since + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since reading and writing to the same gzip file is not supported. The addition of - 'x' when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of 'e' when + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when reading or writing will set the flag to close the file on an execve() call. These functions, as well as gzip, will read and decode a sequence of gzip @@ -1392,22 +1339,14 @@ ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); insufficient memory to allocate the gzFile state, or if an invalid mode was specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. Note that if 'N' is in mode for non-blocking, the - open() itself can fail in order to not block. In that case gzopen() will - return NULL and errno will be EAGAIN or ENONBLOCK. The call to gzopen() can - then be re-tried. If the application would like to block on opening the - file, then it can use open() without O_NONBLOCK, and then gzdopen() with the - resulting file descriptor and 'N' in the mode, which will set it to non- - blocking. + file could not be opened. */ ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); /* Associate a gzFile with the file descriptor fd. File descriptors are obtained from calls like open, dup, creat, pipe or fileno (if the file has - been previously opened with fopen). The mode parameter is as in gzopen. An - 'e' in mode will set fd's flag to close the file on an execve() call. An 'N' - in mode will set fd's non-blocking flag. + been previously opened with fopen). The mode parameter is as in gzopen. The next call of gzclose on the returned gzFile will also close the file descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor @@ -1477,16 +1416,10 @@ ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); stream. Alternatively, gzerror can be used before gzclose to detect this case. - gzread can be used to read a gzip file on a non-blocking device. If the - input stalls and there is no uncompressed data to return, then gzread() will - return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be - called again. - gzread returns the number of uncompressed bytes actually read, less than len for end of file, or -1 for error. If len is too large to fit in an int, then nothing is read, -1 is returned, and the error state is set to - Z_STREAM_ERROR. If some data was read before an error, then that data is - returned until exhausted, after which the next call will signal the error. + Z_STREAM_ERROR. */ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, @@ -1510,20 +1443,15 @@ ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, multiple of size, then the final partial item is nevertheless read into buf and the end-of-file flag is set. The length of the partial item read is not provided, but could be inferred from the result of gztell(). This behavior - is the same as that of fread() implementations in common libraries. This - could result in data loss if used with size != 1 when reading a concurrently - written file or a non-blocking file. In that case, use size == 1 or gzread() - instead. + is the same as the behavior of fread() implementations in common libraries, + but it prevents the direct use of gzfread() to read a concurrently written + file, resetting and retrying on end-of-file, when size is not 1. */ ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); /* Compress and write the len uncompressed bytes at buf to file. gzwrite - returns the number of uncompressed bytes written, or 0 in case of error or - if len is 0. If the write destination is non-blocking, then gzwrite() may - return a number of bytes written that is not 0 and less than len. - - If len does not fit in an int, then 0 is returned and nothing is written. + returns the number of uncompressed bytes written or 0 in case of error. */ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, @@ -1538,18 +1466,9 @@ ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, if there was an error. If the multiplication of size and nitems overflows, i.e. the product does not fit in a z_size_t, then nothing is written, zero is returned, and the error state is set to Z_STREAM_ERROR. - - If writing a concurrently read file or a non-blocking file with size != 1, - a partial item could be written, with no way of knowing how much of it was - not written, resulting in data loss. In that case, use size == 1 or - gzwrite() instead. */ -#if defined(STDC) || defined(Z_HAVE_STDARG_H) ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); -#else -ZEXTERN int ZEXPORTVA gzprintf(); -#endif /* Convert, format, compress, and write the arguments (...) to file under control of the string format, as in fprintf. gzprintf returns the number of @@ -1557,19 +1476,11 @@ ZEXTERN int ZEXPORTVA gzprintf(); of error. The number of uncompressed bytes written is limited to 8191, or one less than the buffer size given to gzbuffer(). The caller should assure that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. - - In that last case, there may also be a buffer overflow with unpredictable - consequences, which is possible only if zlib was compiled with the insecure - functions sprintf() or vsprintf(), because the secure snprintf() and - vsnprintf() functions were not available. That would only be the case for - a non-ANSI C compiler. zlib may have been built without gzprintf() because - secure functions were not available and having gzprintf() be insecure was - not an option, in which case, gzprintf() returns Z_STREAM_ERROR. All of - these possibilities can be determined using zlibCompileFlags(). - - If a Z_BUF_ERROR is returned, then nothing was written due to a stall on - the non-blocking write destination. + return an error (0) with nothing written. In this case, there may also be a + buffer overflow with unpredictable consequences, which is possible only if + zlib was compiled with the insecure functions sprintf() or vsprintf(), + because the secure snprintf() or vsnprintf() functions were not available. + This can be determined using zlibCompileFlags(). */ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); @@ -1578,11 +1489,6 @@ ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); the terminating null character. gzputs returns the number of characters written, or -1 in case of error. - The number of characters written may be less than the length of the string - if the write destination is non-blocking. - - If the length of the string does not fit in an int, then -1 is returned - and nothing is written. */ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); @@ -1595,13 +1501,8 @@ ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); left untouched. gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If some data was read before an error, - then that data is returned until exhausted, after which the next call will - return NULL to signal the error. - - gzgets can be used on a file being concurrently written, and on a non- - blocking device, both as for gzread(). However lines may be broken in the - middle, leaving it up to the application to reassemble them as needed. + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. */ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); @@ -1612,19 +1513,11 @@ ZEXTERN int ZEXPORT gzputc(gzFile file, int c); ZEXTERN int ZEXPORT gzgetc(gzFile file); /* - Read and decompress one byte from file. gzgetc returns this byte or -1 in - case of end of file or error. If some data was read before an error, then - that data is returned until exhausted, after which the next call will return - -1 to signal the error. - - This is implemented as a macro for speed. As such, it does not do all of - the checking the other functions do. I.e. it does not check to see if file - is NULL, nor whether the structure file points to has been clobbered or not. - - gzgetc can be used to read a gzip file on a non-blocking device. If the - input stalls and there is no uncompressed data to return, then gzgetc() will - return -1, and errno will be EAGAIN or EWOULDBLOCK. gzread() can then be - called again. + Read and decompress one byte from file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. */ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); @@ -1637,11 +1530,6 @@ ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); output buffer size of pushed characters is allowed. (See gzbuffer above.) The pushed character will be discarded if the stream is repositioned with gzseek() or gzrewind(). - - gzungetc(-1, file) will force any pending seek to execute. Then gztell() - will report the position, even if the requested seek reached end of file. - This can be used to determine the number of uncompressed bytes in a gzip - file without having to read it into a buffer. */ ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); @@ -1671,8 +1559,7 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek then compresses a sequence of zeroes up to the new - starting position. For reading or writing, any actual seeking is deferred - until the next read or write operation, or close operation when writing. + starting position. gzseek returns the resulting offset location as measured in bytes from the beginning of the uncompressed stream, or -1 in case of error, in @@ -1680,7 +1567,7 @@ ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, would be before the current position. */ -ZEXTERN int ZEXPORT gzrewind(gzFile file); +ZEXTERN int ZEXPORT gzrewind(gzFile file); /* Rewind file. This function is supported only for reading. @@ -1688,7 +1575,7 @@ ZEXTERN int ZEXPORT gzrewind(gzFile file); */ /* -ZEXTERN z_off_t ZEXPORT gztell(gzFile file); +ZEXTERN z_off_t ZEXPORT gztell(gzFile file); Return the starting position for the next gzread or gzwrite on file. This position represents a number of bytes in the uncompressed data stream, @@ -1733,11 +1620,8 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); If gzdirect() is used immediately after gzopen() or gzdopen() it will cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). If the input is being written concurrently or the device is non- - blocking, then gzdirect() may give a different answer once four bytes of - input have been accumulated, which is what is needed to confirm or deny a - gzip header. Before this, gzdirect() will return true (1). + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). When writing, gzdirect() returns true (1) if transparent writing was requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: @@ -1747,7 +1631,7 @@ ZEXTERN int ZEXPORT gzdirect(gzFile file); gzip file reading and decompression, which may not be desired.) */ -ZEXTERN int ZEXPORT gzclose(gzFile file); +ZEXTERN int ZEXPORT gzclose(gzFile file); /* Flush all pending output for file, if necessary, close file and deallocate the (de)compression state. Note that once file is closed, you @@ -1775,10 +1659,9 @@ ZEXTERN int ZEXPORT gzclose_w(gzFile file); ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); /* Return the error message for the last error which occurred on file. - If errnum is not NULL, *errnum is set to zlib error number. If an error - occurred in the file system and not in the compression library, *errnum is - set to Z_ERRNO and the application may consult errno to get the exact error - code. + errnum is set to zlib error number. If an error occurred in the file system + and not in the compression library, errnum is set to Z_ERRNO and the + application may consult errno to get the exact error code. The application must not modify the returned string. Future calls to this function may invalidate the previously returned string. If file is @@ -1829,8 +1712,7 @@ ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len); /* - Same as adler32(), but with a size_t length. Note that a long is 32 bits - on Windows. + Same as adler32(), but with a size_t length. */ /* @@ -1866,8 +1748,7 @@ ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, z_size_t len); /* - Same as crc32(), but with a size_t length. Note that a long is 32 bits on - Windows. + Same as crc32(), but with a size_t length. */ /* @@ -1877,14 +1758,14 @@ ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. len2 must be non-negative, otherwise zero is returned. + len2. len2 must be non-negative. */ /* ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); Return the operator corresponding to length len2, to be used with - crc32_combine_op(). len2 must be non-negative, otherwise zero is returned. + crc32_combine_op(). len2 must be non-negative. */ ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); @@ -2007,9 +1888,9 @@ ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); ZEXTERN z_off_t ZEXPORT gztell64(gzFile); ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); # endif #else ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); diff --git a/icecat/modules/zlib/src/zutil.c b/icecat/modules/zlib/src/zutil.c index 4ea02a9c36..b1c5d2d3c6 100644 --- a/icecat/modules/zlib/src/zutil.c +++ b/icecat/modules/zlib/src/zutil.c @@ -1,5 +1,5 @@ /* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2026 Jean-loup Gailly + * Copyright (C) 1995-2017 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -86,36 +86,28 @@ uLong ZEXPORT zlibCompileFlags(void) { flags += 1L << 21; #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf -# ifdef ZLIB_INSECURE - flags += 1L << 25; -# else - flags += 1L << 27; -# endif -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_vsnprintf + flags += 1L << 25; +# ifdef HAS_vsprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_vsnprintf_void + flags += 1L << 26; +# endif +# endif #else flags += 1L << 24; -# ifdef NO_snprintf -# ifdef ZLIB_INSECURE - flags += 1L << 25; -# else - flags += 1L << 27; -# endif -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif +# ifdef NO_snprintf + flags += 1L << 25; +# ifdef HAS_sprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_snprintf_void + flags += 1L << 26; +# endif +# endif #endif return flags; } @@ -150,34 +142,28 @@ const char * ZEXPORT zError(int err) { #ifndef HAVE_MEMCPY -void ZLIB_INTERNAL zmemcpy(void FAR *dst, const void FAR *src, z_size_t n) { - uchf *p = dst; - const uchf *q = src; - while (n) { - *p++ = *q++; - n--; - } +void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) { + if (len == 0) return; + do { + *dest++ = *source++; /* ??? to be unrolled */ + } while (--len != 0); } -int ZLIB_INTERNAL zmemcmp(const void FAR *s1, const void FAR *s2, z_size_t n) { - const uchf *p = s1, *q = s2; - while (n) { - if (*p++ != *q++) - return (int)p[-1] - (int)q[-1]; - n--; +int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) { + uInt j; + + for (j = 0; j < len; j++) { + if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; } return 0; } -void ZLIB_INTERNAL zmemzero(void FAR *b, z_size_t len) { - uchf *p = b; +void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) { if (len == 0) return; - while (len) { - *p++ = 0; - len--; - } + do { + *dest++ = 0; /* ??? to be unrolled */ + } while (--len != 0); } - #endif #ifndef Z_SOLO diff --git a/icecat/modules/zlib/src/zutil.h b/icecat/modules/zlib/src/zutil.h index a9bc23ca62..48dd7febae 100644 --- a/icecat/modules/zlib/src/zutil.h +++ b/icecat/modules/zlib/src/zutil.h @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2026 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -36,10 +36,6 @@ define "local" for the non-static meaning of "static", for readability (compile with -Dlocal if your debugger can't find static symbols) */ -extern const char deflate_copyright[]; -extern const char inflate_copyright[]; -extern const char inflate9_copyright[]; - typedef unsigned char uch; typedef uch FAR uchf; typedef unsigned short ush; @@ -52,8 +48,6 @@ typedef unsigned long ulg; # define Z_U8 unsigned long # elif (ULLONG_MAX == 0xffffffffffffffff) # define Z_U8 unsigned long long -# elif (ULONG_LONG_MAX == 0xffffffffffffffff) -# define Z_U8 unsigned long long # elif (UINT_MAX == 0xffffffffffffffff) # define Z_U8 unsigned # endif @@ -69,9 +63,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* To be used only when the state is known to be valid */ /* common constants */ -#if MAX_WBITS < 9 || MAX_WBITS > 15 -# error MAX_WBITS must be in 9..15 -#endif + #ifndef DEF_WBITS # define DEF_WBITS MAX_WBITS #endif @@ -149,7 +141,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 7 #endif -#if defined(__acorn) || defined(__riscos) +#ifdef __acorn # define OS_CODE 13 #endif @@ -176,10 +168,11 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif /* provide prototypes for these when building zlib without LFS */ -#ifndef Z_LARGE64 - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); +#if !defined(_WIN32) && \ + (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); #endif /* common defaults */ @@ -218,9 +211,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define zmemzero(dest, len) memset(dest, 0, len) # endif #else - void ZLIB_INTERNAL zmemcpy(void FAR *, const void FAR *, z_size_t); - int ZLIB_INTERNAL zmemcmp(const void FAR *, const void FAR *, z_size_t); - void ZLIB_INTERNAL zmemzero(void FAR *, z_size_t); + void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len); + int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len); + void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len); #endif /* Diagnostic functions */ @@ -258,74 +251,4 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) -#ifdef Z_ONCE -/* - Create a local z_once() function depending on the availability of atomics. - */ - -/* Check for the availability of atomics. */ -#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ - !defined(__STDC_NO_ATOMICS__) - -#include -typedef struct { - atomic_flag begun; - atomic_int done; -} z_once_t; -#define Z_ONCE_INIT {ATOMIC_FLAG_INIT, 0} - -/* - Run the provided init() function exactly once, even if multiple threads - invoke once() at the same time. The state must be a once_t initialized with - Z_ONCE_INIT. - */ -local void z_once(z_once_t *state, void (*init)(void)) { - if (!atomic_load(&state->done)) { - if (atomic_flag_test_and_set(&state->begun)) - while (!atomic_load(&state->done)) - ; - else { - init(); - atomic_store(&state->done, 1); - } - } -} - -#else /* no atomics */ - -#warning zlib not thread-safe - -typedef struct z_once_s { - volatile int begun; - volatile int done; -} z_once_t; -#define Z_ONCE_INIT {0, 0} - -/* Test and set. Alas, not atomic, but tries to limit the period of - vulnerability. */ -local int test_and_set(int volatile *flag) { - int was; - - was = *flag; - *flag = 1; - return was; -} - -/* Run the provided init() function once. This is not thread-safe. */ -local void z_once(z_once_t *state, void (*init)(void)) { - if (!state->done) { - if (test_and_set(&state->begun)) - while (!state->done) - ; - else { - init(); - state->done = 1; - } - } -} - -#endif /* ?atomics */ - -#endif /* Z_ONCE */ - #endif /* ZUTIL_H */ diff --git a/icecat/mozglue/interposers/env_interposer.cpp b/icecat/mozglue/interposers/env_interposer.cpp index 2b1838a96f..d8c11b5d35 100644 --- a/icecat/mozglue/interposers/env_interposer.cpp +++ b/icecat/mozglue/interposers/env_interposer.cpp @@ -40,24 +40,6 @@ MFBT_API char* getenv(const char* name) { return result; } -MFBT_API char* secure_getenv(const char* name) { - static const auto real_secure_getenv = GET_REAL_SYMBOL(secure_getenv); - - pthread_mutex_lock(&gEnvLock); - char* result = real_secure_getenv(name); - pthread_mutex_unlock(&gEnvLock); - return result; -} - -MFBT_API char* __secure_getenv(const char* name) { - static const auto real___secure_getenv = GET_REAL_SYMBOL(__secure_getenv); - - pthread_mutex_lock(&gEnvLock); - char* result = real___secure_getenv(name); - pthread_mutex_unlock(&gEnvLock); - return result; -} - MFBT_API int putenv(char* string) { static const auto real_putenv = GET_REAL_SYMBOL(putenv); diff --git a/icecat/mozglue/misc/MmapFaultHandler.cpp b/icecat/mozglue/misc/MmapFaultHandler.cpp index 747491bc88..a73b9bd24b 100644 --- a/icecat/mozglue/misc/MmapFaultHandler.cpp +++ b/icecat/mozglue/misc/MmapFaultHandler.cpp @@ -24,6 +24,10 @@ static void MmapSIGBUSHandler(int signum, siginfo_t* info, void* context) { MmapAccessScope* mas = sMmapAccessScope.get(); if (mas && mas->IsInsideBuffer(info->si_addr)) { + // Temporarily instead of handling the signal, we crash intentionally and + // send some diagnostic information to find out why the signal is received. + mas->CrashWithInfo(info->si_addr); + // The address is inside the buffer, handle the failure. siglongjmp(mas->mJmpBuf, signum); } diff --git a/icecat/mozglue/misc/MmapFaultHandler.h b/icecat/mozglue/misc/MmapFaultHandler.h index 485b74385a..fca356921c 100644 --- a/icecat/mozglue/misc/MmapFaultHandler.h +++ b/icecat/mozglue/misc/MmapFaultHandler.h @@ -78,23 +78,23 @@ inline bool ValidFD(T fd) { return !!fd; } -# define MMAP_FAULT_HANDLER_BEGIN_HANDLE(fd) \ - { \ - void* mmapScopeBuf = nullptr; \ - nsCString mmapScopeFilename; \ - uint32_t mmapScopeBufLen = 0; \ - if (ValidFD(fd) && fd->mFileStart && fd->mTotalLen > 0) { \ - mmapScopeBuf = (void*)fd->mFileStart; \ - mmapScopeBufLen = fd->mTotalLen; \ - } \ - if (ValidFD(fd) && fd->mFile) { \ - nsCOMPtr file = fd->mFile.GetBaseFile(); \ - if (file) { \ - file->GetNativeLeafName(mmapScopeFilename); \ - } \ - } \ - MmapAccessScope mmapScope(mmapScopeBuf, mmapScopeBufLen, \ - mmapScopeFilename.get()); \ +# define MMAP_FAULT_HANDLER_BEGIN_HANDLE(fd) \ + { \ + void* mmapScopeBuf = nullptr; \ + nsCString mmapScopeFilename; \ + uint32_t mmapScopeBufLen = 0; \ + if (ValidFD(fd) && fd->mMap) { \ + mmapScopeBuf = (void*)fd->mFileStart; \ + mmapScopeBufLen = fd->mTotalLen; \ + } \ + if (ValidFD(fd) && fd->mFile) { \ + nsCOMPtr file = fd->mFile.GetBaseFile(); \ + if (file) { \ + file->GetNativeLeafName(mmapScopeFilename); \ + } \ + } \ + MmapAccessScope mmapScope(mmapScopeBuf, mmapScopeBufLen, \ + mmapScopeFilename.get()); \ if (sigsetjmp(mmapScope.mJmpBuf, 0) == 0) { # define MMAP_FAULT_HANDLER_BEGIN_BUFFER(buf, bufLen) \ { \ diff --git a/icecat/mozglue/misc/WindowsProcessMitigations.cpp b/icecat/mozglue/misc/WindowsProcessMitigations.cpp index 4f8f5d408b..c439253533 100644 --- a/icecat/mozglue/misc/WindowsProcessMitigations.cpp +++ b/icecat/mozglue/misc/WindowsProcessMitigations.cpp @@ -10,7 +10,6 @@ #include "mozilla/Assertions.h" #include "mozilla/DynamicallyLinkedFunctionPtr.h" -#include "mozilla/WindowsVersion.h" static_assert(sizeof(PROCESS_MITIGATION_DYNAMIC_CODE_POLICY) == 4); @@ -99,54 +98,4 @@ MFBT_API bool IsUserShadowStackEnabled() { return polInfo.EnableUserShadowStack; } -MFBT_API bool IsPreferLoadFromSystem32Available() { - return mozilla::IsWin10AnniversaryUpdateOrLater(); -} - -MFBT_API bool IsPreferLoadFromSystem32Enabled() { - auto pGetProcessMitigationPolicy = FetchGetProcessMitigationPolicyFunc(); - if (!pGetProcessMitigationPolicy) { - return false; - } - - PROCESS_MITIGATION_IMAGE_LOAD_POLICY imgLoadPol{}; - if (!pGetProcessMitigationPolicy(::GetCurrentProcess(), - ProcessImageLoadPolicy, &imgLoadPol, - sizeof(imgLoadPol))) { - return false; - } - - return imgLoadPol.PreferSystem32Images; -} - -MFBT_API bool EnablePreferLoadFromSystem32() { - auto pGetProcessMitigationPolicy = FetchGetProcessMitigationPolicyFunc(); - if (!pGetProcessMitigationPolicy) { - return false; - } - - static const mozilla::StaticDynamicallyLinkedFunctionPtr< - decltype(&::SetProcessMitigationPolicy)> - pSetProcessMitigationPolicy(L"kernel32.dll", - "SetProcessMitigationPolicy"); - if (!pSetProcessMitigationPolicy) { - return false; - } - - PROCESS_MITIGATION_IMAGE_LOAD_POLICY imgLoadPol{}; - if (!pGetProcessMitigationPolicy(::GetCurrentProcess(), - ProcessImageLoadPolicy, &imgLoadPol, - sizeof(imgLoadPol))) { - return false; - } - - if (imgLoadPol.PreferSystem32Images) { - return true; - } - - imgLoadPol.PreferSystem32Images = 1; - return pSetProcessMitigationPolicy(ProcessImageLoadPolicy, &imgLoadPol, - sizeof(imgLoadPol)); -} - } // namespace mozilla diff --git a/icecat/mozglue/misc/WindowsProcessMitigations.h b/icecat/mozglue/misc/WindowsProcessMitigations.h index 2573a729ed..95d27d2c3f 100644 --- a/icecat/mozglue/misc/WindowsProcessMitigations.h +++ b/icecat/mozglue/misc/WindowsProcessMitigations.h @@ -16,9 +16,6 @@ MFBT_API void SetWin32kLockedDownInPolicy(); MFBT_API bool IsDynamicCodeDisabled(); MFBT_API bool IsEafPlusEnabled(); MFBT_API bool IsUserShadowStackEnabled(); -MFBT_API bool IsPreferLoadFromSystem32Available(); -MFBT_API bool IsPreferLoadFromSystem32Enabled(); -MFBT_API bool EnablePreferLoadFromSystem32(); } // namespace mozilla diff --git a/icecat/netwerk/base/LoadInfo.cpp b/icecat/netwerk/base/LoadInfo.cpp index b595b3c18c..21b63a96c5 100644 --- a/icecat/netwerk/base/LoadInfo.cpp +++ b/icecat/netwerk/base/LoadInfo.cpp @@ -800,7 +800,6 @@ LoadInfo::LoadInfo( nsIPrincipal* aPrincipalToInherit, nsIPrincipal* aTopLevelPrincipal, nsIURI* aResultPrincipalURI, nsICookieJarSettings* aCookieJarSettings, nsIContentSecurityPolicy* aCspToInherit, - const Maybe& aContainerFeaturePolicyInfo, const nsACString& aTriggeringRemoteType, const nsID& aSandboxedNullPrincipalID, const Maybe& aClientInfo, const Maybe& aReservedClientInfo, @@ -856,7 +855,6 @@ LoadInfo::LoadInfo( mResultPrincipalURI(aResultPrincipalURI), mCookieJarSettings(aCookieJarSettings), mCspToInherit(aCspToInherit), - mContainerFeaturePolicyInfo(aContainerFeaturePolicyInfo), mTriggeringRemoteType(aTriggeringRemoteType), mSandboxedNullPrincipalID(aSandboxedNullPrincipalID), mClientInfo(aClientInfo), diff --git a/icecat/netwerk/base/LoadInfo.h b/icecat/netwerk/base/LoadInfo.h index 0d1fbfb43a..7946dacf86 100644 --- a/icecat/netwerk/base/LoadInfo.h +++ b/icecat/netwerk/base/LoadInfo.h @@ -229,7 +229,6 @@ class LoadInfo final : public nsILoadInfo { nsIPrincipal* aPrincipalToInherit, nsIPrincipal* aTopLevelPrincipal, nsIURI* aResultPrincipalURI, nsICookieJarSettings* aCookieJarSettings, nsIContentSecurityPolicy* aCspToInherit, - const Maybe& aContainerFeaturePolicyInfo, const nsACString& aTriggeringRemoteType, const nsID& aSandboxedNullPrincipalID, const Maybe& aClientInfo, diff --git a/icecat/netwerk/base/Tickler.cpp b/icecat/netwerk/base/Tickler.cpp index 1a035e6aac..3030b24653 100644 --- a/icecat/netwerk/base/Tickler.cpp +++ b/icecat/netwerk/base/Tickler.cpp @@ -18,6 +18,8 @@ namespace mozilla { namespace net { +NS_IMPL_ISUPPORTS(Tickler, nsISupportsWeakReference, Tickler) + Tickler::Tickler() : mLock("Tickler::mLock"), mActive(false), @@ -175,7 +177,9 @@ class TicklerTimer final : public nsITimerCallback, public nsINamed { NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_NSITIMERCALLBACK - explicit TicklerTimer(Tickler* t) : mTickler(t) {} + explicit TicklerTimer(Tickler* aTickler) { + mTickler = do_GetWeakReference(aTickler); + } // nsINamed NS_IMETHOD GetName(nsACString& aName) override { @@ -186,7 +190,7 @@ class TicklerTimer final : public nsITimerCallback, public nsINamed { private: ~TicklerTimer() {} - ThreadSafeWeakPtr mTickler; + nsWeakPtr mTickler; }; void Tickler::StartTickler() { @@ -210,7 +214,7 @@ void Tickler::SetIPV4Port(uint16_t port) { mAddr.inet.port = port; } NS_IMPL_ISUPPORTS(TicklerTimer, nsITimerCallback, nsINamed) NS_IMETHODIMP TicklerTimer::Notify(nsITimer* timer) { - RefPtr tickler(mTickler); + RefPtr tickler = do_QueryReferent(mTickler); if (!tickler) return NS_ERROR_FAILURE; MutexAutoLock lock(tickler->mLock); diff --git a/icecat/netwerk/base/Tickler.h b/icecat/netwerk/base/Tickler.h index e83e1854ae..a1dbca5ee9 100644 --- a/icecat/netwerk/base/Tickler.h +++ b/icecat/netwerk/base/Tickler.h @@ -41,7 +41,7 @@ # include "nsISupports.h" # include "nsIThread.h" # include "nsITimer.h" -# include "mozilla/ThreadSafeWeakPtr.h" +# include "nsWeakReference.h" # include "prio.h" class nsIPrefBranch; @@ -59,9 +59,9 @@ namespace net { 0x4af9, \ {0x9f, 0x7e, 0x9e, 0x83, 0x2d, 0xa3, 0x75, 0x4e}} -class Tickler final : public SupportsThreadSafeWeakPtr { +class Tickler final : public nsSupportsWeakReference { public: - MOZ_DECLARE_REFCOUNTED_TYPENAME(Tickler) + NS_DECL_THREADSAFE_ISUPPORTS NS_INLINE_DECL_STATIC_IID(NS_TICKLER_IID) // These methods are main thread only @@ -78,7 +78,6 @@ class Tickler final : public SupportsThreadSafeWeakPtr { private: ~Tickler(); - friend class SupportsThreadSafeWeakPtr; friend class TicklerTimer; Mutex mLock MOZ_UNANNOTATED; nsCOMPtr mThread; diff --git a/icecat/netwerk/base/nsBaseChannel.cpp b/icecat/netwerk/base/nsBaseChannel.cpp index fda9883361..8e1ef5e1c1 100644 --- a/icecat/netwerk/base/nsBaseChannel.cpp +++ b/icecat/netwerk/base/nsBaseChannel.cpp @@ -41,7 +41,7 @@ class ScopedRequestSuspender { } private: - nsCOMPtr mRequest; + nsIRequest* mRequest; }; // Used to suspend data events from mRequest within a function scope. This is diff --git a/icecat/netwerk/base/nsDownloader.cpp b/icecat/netwerk/base/nsDownloader.cpp index 3797e859a2..b6d3240226 100644 --- a/icecat/netwerk/base/nsDownloader.cpp +++ b/icecat/netwerk/base/nsDownloader.cpp @@ -93,7 +93,6 @@ nsresult nsDownloader::ConsumeData(nsIInputStream* in, void* closure, NS_IMETHODIMP nsDownloader::OnDataAvailable(nsIRequest* request, nsIInputStream* inStr, uint64_t sourceOffset, uint32_t count) { - RefPtr self(this); uint32_t n; return inStr->ReadSegments(ConsumeData, this, count, &n); } diff --git a/icecat/netwerk/base/nsStandardURL.cpp b/icecat/netwerk/base/nsStandardURL.cpp index 05f13b04a1..b2778adf36 100644 --- a/icecat/netwerk/base/nsStandardURL.cpp +++ b/icecat/netwerk/base/nsStandardURL.cpp @@ -272,16 +272,6 @@ bool nsStandardURL::IsValid() { return false; } - // mSpec must not contain embedded NULs - if (NS_WARN_IF(mSpec.FindChar('\0') != -1)) { - return false; - } - - // The character immediately after the scheme must be ':', e.g. "http:". - if (mScheme.mLen > 0 && NS_WARN_IF(mSpec.CharAt(mScheme.mLen) != ':')) { - return false; - } - return true; } @@ -807,14 +797,15 @@ bool nsStandardURL::SegmentIs(const URLSegment& seg, const char* val, if (seg.mLen < 0) { return false; } - size_t vlen = strlen(val); - if (static_cast(seg.mLen) != vlen) { - return false; - } + // if the first |seg.mLen| chars of |val| match, then |val| must + // also be null terminated at |seg.mLen|. if (ignoreCase) { - return !nsCRT::strncasecmp(mSpec.get() + seg.mPos, val, vlen); + return !nsCRT::strncasecmp(mSpec.get() + seg.mPos, val, seg.mLen) && + (val[seg.mLen] == '\0'); } - return !strncmp(mSpec.get() + seg.mPos, val, vlen); + + return !strncmp(mSpec.get() + seg.mPos, val, seg.mLen) && + (val[seg.mLen] == '\0'); } bool nsStandardURL::SegmentIs(const char* spec, const URLSegment& seg, @@ -826,14 +817,14 @@ bool nsStandardURL::SegmentIs(const char* spec, const URLSegment& seg, if (seg.mLen < 0) { return false; } - size_t vlen = strlen(val); - if (static_cast(seg.mLen) != vlen) { - return false; - } + // if the first |seg.mLen| chars of |val| match, then |val| must + // also be null terminated at |seg.mLen|. if (ignoreCase) { - return !nsCRT::strncasecmp(spec + seg.mPos, val, vlen); + return !nsCRT::strncasecmp(spec + seg.mPos, val, seg.mLen) && + (val[seg.mLen] == '\0'); } - return !strncmp(spec + seg.mPos, val, vlen); + + return !strncmp(spec + seg.mPos, val, seg.mLen) && (val[seg.mLen] == '\0'); } bool nsStandardURL::SegmentIs(const URLSegment& seg1, const char* val, @@ -3409,20 +3400,8 @@ nsresult nsStandardURL::ReadPrivate(nsIObjectInputStream* stream) { } mSupportsFileURL = supportsFileURL; - if (!IsValid()) { - return NS_ERROR_MALFORMED_URI; - } - // wait until object is set up, then modify path to include the param if (old_param.mLen >= 0) { // note that mLen=0 is ";" - // old_param is a local; IsValid() doesn't check it. Bounds-check - // explicitly. - CheckedInt end = CheckedInt(uint32_t(old_param.mPos)) + - uint32_t(old_param.mLen); - if (!end.isValid() || end.value() > mSpec.Length()) { - return NS_ERROR_MALFORMED_URI; - } - // If this wasn't empty, it marks characters between the end of the // file and start of the query - mPath should include the param, // query and ref already. Bump the mFilePath and @@ -3438,6 +3417,10 @@ nsresult nsStandardURL::ReadPrivate(nsIObjectInputStream* stream) { return rv; } + if (!IsValid()) { + return NS_ERROR_MALFORMED_URI; + } + clearOnExit.release(); return NS_OK; @@ -3673,6 +3656,11 @@ bool nsStandardURL::Deserialize(const URIParams& aParams) { mSupportsFileURL = params.supportsFileURL(); + nsresult rv = CheckIfHostIsAscii(); + if (NS_FAILED(rv)) { + return false; + } + // Some sanity checks NS_ENSURE_TRUE(mScheme.mPos == 0, false); NS_ENSURE_TRUE(mScheme.mLen > 0, false); @@ -3691,30 +3679,10 @@ bool nsStandardURL::Deserialize(const URIParams& aParams) { mRef.mLen == -1 || (mRef.mPos > 0 && mSpec.CharAt(mRef.mPos - 1) == '#'), false); - // mDirectory, mBasename, mExtension must be sub-ranges of mFilepath, - // which must be a sub-range of mPath. - auto isSubSegment = [](const URLSegment& inner, const URLSegment& outer) { - if (inner.mLen == -1) return true; - return inner.mPos >= outer.mPos && - inner.mPos + inner.mLen <= outer.mPos + outer.mLen; - }; - NS_ENSURE_TRUE(isSubSegment(mFilepath, mPath), false); - NS_ENSURE_TRUE(isSubSegment(mDirectory, mFilepath), false); - NS_ENSURE_TRUE(isSubSegment(mBasename, mFilepath), false); - NS_ENSURE_TRUE(isSubSegment(mExtension, mFilepath), false); - NS_ENSURE_TRUE(isSubSegment(mHost, mAuthority), false); - NS_ENSURE_TRUE(isSubSegment(mUsername, mAuthority), false); - NS_ENSURE_TRUE(isSubSegment(mPassword, mAuthority), false); - if (!IsValid()) { return false; } - nsresult rv = CheckIfHostIsAscii(); - if (NS_FAILED(rv)) { - return false; - } - clearOnExit.release(); return true; diff --git a/icecat/netwerk/base/nsStandardURL.h b/icecat/netwerk/base/nsStandardURL.h index e0602f1d02..a0f55b05ac 100644 --- a/icecat/netwerk/base/nsStandardURL.h +++ b/icecat/netwerk/base/nsStandardURL.h @@ -603,11 +603,6 @@ inline nsDependentCSubstring nsStandardURL::Host() { if (mHost.mLen > 0) { pos = mHost.mPos; len = mHost.mLen; - MOZ_RELEASE_ASSERT(pos < mSpec.Length()); - // `pos + len - 1 < mSpec.Length()` is `len <= mSpec.Length() - pos` - // but also avoids overflow. Underflow can't happen because of previous - // assert. - MOZ_RELEASE_ASSERT(len <= mSpec.Length() - pos); if (mSpec.CharAt(pos) == '[' && mSpec.CharAt(pos + len - 1) == ']') { pos++; len -= 2; diff --git a/icecat/netwerk/base/nsSyncStreamListener.cpp b/icecat/netwerk/base/nsSyncStreamListener.cpp index 12665561f4..7e5ec94231 100644 --- a/icecat/netwerk/base/nsSyncStreamListener.cpp +++ b/icecat/netwerk/base/nsSyncStreamListener.cpp @@ -105,9 +105,6 @@ nsSyncStreamListener::Close() { NS_IMETHODIMP nsSyncStreamListener::Available(uint64_t* result) { - // Nested event loop can run code that drops the last external reference. - RefPtr self(this); - if (NS_FAILED(mStatus)) return mStatus; mStatus = mPipeIn->Available(result); diff --git a/icecat/netwerk/base/nsUDPSocket.cpp b/icecat/netwerk/base/nsUDPSocket.cpp index 64aac97c87..5a6dda72ea 100644 --- a/icecat/netwerk/base/nsUDPSocket.cpp +++ b/icecat/netwerk/base/nsUDPSocket.cpp @@ -114,17 +114,17 @@ class SetSocketOptionRunnable : public Runnable { //----------------------------------------------------------------------------- NS_IMPL_ISUPPORTS(nsUDPOutputStream, nsIOutputStream) -nsUDPOutputStream::nsUDPOutputStream(nsUDPSocket* aSocket, +nsUDPOutputStream::nsUDPOutputStream(nsUDPSocket* aSocket, PRFileDesc* aFD, PRNetAddr& aPrClientAddr) - : mSocket(aSocket), mPrClientAddr(aPrClientAddr), mIsClosed(false) {} + : mSocket(aSocket), + mFD(aFD), + mPrClientAddr(aPrClientAddr), + mIsClosed(false) {} NS_IMETHODIMP nsUDPOutputStream::Close() { if (mIsClosed) return NS_BASE_STREAM_CLOSED; mIsClosed = true; - if (mSocket->IsSocketClosed()) { - return NS_BASE_STREAM_CLOSED; - } return NS_OK; } @@ -138,18 +138,9 @@ NS_IMETHODIMP nsUDPOutputStream::Write(const char* aBuf, uint32_t aCount, uint32_t* _retval) { if (mIsClosed) return NS_BASE_STREAM_CLOSED; - if (mSocket->IsSocketClosed()) { - mIsClosed = true; - return NS_BASE_STREAM_CLOSED; - } - *_retval = 0; - PRFileDesc* fd = mSocket->GetFD(); - if (!fd) { - return NS_BASE_STREAM_CLOSED; - } int32_t count = - PR_SendTo(fd, aBuf, aCount, 0, &mPrClientAddr, PR_INTERVAL_NO_WAIT); + PR_SendTo(mFD, aBuf, aCount, 0, &mPrClientAddr, PR_INTERVAL_NO_WAIT); if (count < 0) { PRErrorCode code = PR_GetError(); return ErrorAccordingToNSPR(code); @@ -467,7 +458,7 @@ void nsUDPSocket::OnSocketReady(PRFileDesc* fd, int16_t outFlags) { NS_NewPipe2(getter_AddRefs(pipeIn), getter_AddRefs(pipeOut), true, true, segsize, segcount); - RefPtr os = new nsUDPOutputStream(this, prClientAddr); + RefPtr os = new nsUDPOutputStream(this, mFD, prClientAddr); nsresult rv = NS_AsyncCopy(pipeIn, os, mSts, NS_ASYNCCOPY_VIA_READSEGMENTS, UDP_PACKET_CHUNK_SIZE); @@ -1233,6 +1224,8 @@ void nsUDPSocket::EnableWritePoll() { mPollFlags = (PR_POLL_WRITE | PR_POLL_READ | PR_POLL_EXCEPT); } +bool nsUDPSocket::IsSocketClosed() { return mFD == nullptr; } + NS_IMETHODIMP nsUDPSocket::SendBinaryStream(const nsACString& aHost, uint16_t aPort, nsIInputStream* aStream) { @@ -1254,10 +1247,7 @@ nsUDPSocket::SendBinaryStreamWithAddress(const NetAddr* aAddr, PR_InitializeNetAddr(PR_IpAddrAny, 0, &prAddr); NetAddrToPRNetAddr(aAddr, &prAddr); - if (!mFD) { - return NS_BASE_STREAM_CLOSED; - } - RefPtr os = new nsUDPOutputStream(this, prAddr); + RefPtr os = new nsUDPOutputStream(this, mFD, prAddr); return NS_AsyncCopy(aStream, os, mSts, NS_ASYNCCOPY_VIA_READSEGMENTS, UDP_PACKET_CHUNK_SIZE); } diff --git a/icecat/netwerk/base/nsUDPSocket.h b/icecat/netwerk/base/nsUDPSocket.h index 9733cafdea..d58d1750a7 100644 --- a/icecat/netwerk/base/nsUDPSocket.h +++ b/icecat/netwerk/base/nsUDPSocket.h @@ -36,11 +36,6 @@ class nsUDPSocket final : public nsASocketHandler, public nsIUDPSocket { nsUDPSocket(); - PRFileDesc* GetFD() { - MOZ_ASSERT(OnSocketThread(), "not on socket thread"); - return mFD; - } - private: virtual ~nsUDPSocket(); @@ -76,15 +71,6 @@ class nsUDPSocket final : public nsASocketHandler, public nsIUDPSocket { uint64_t mByteWriteCount{0}; }; -inline bool nsUDPSocket::IsSocketClosed() { -#ifdef DEBUG - bool onSTSThread = false; - mSts->IsOnCurrentThread(&onSTSThread); - MOZ_ASSERT(onSTSThread); -#endif - return !mFD; -} - //----------------------------------------------------------------------------- class nsUDPMessage : public nsIUDPMessage { @@ -112,12 +98,14 @@ class nsUDPOutputStream : public nsIOutputStream { NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_NSIOUTPUTSTREAM - nsUDPOutputStream(nsUDPSocket* aSocket, PRNetAddr& aPrClientAddr); + nsUDPOutputStream(nsUDPSocket* aSocket, PRFileDesc* aFD, + PRNetAddr& aPrClientAddr); private: virtual ~nsUDPOutputStream() = default; RefPtr mSocket; + PRFileDesc* mFD; PRNetAddr mPrClientAddr; bool mIsClosed; }; diff --git a/icecat/netwerk/build/components.conf b/icecat/netwerk/build/components.conf index 4c7072869a..c2fdcc763e 100644 --- a/icecat/netwerk/build/components.conf +++ b/icecat/netwerk/build/components.conf @@ -52,7 +52,6 @@ Classes = [ ], 'interfaces': ['nsICacheStorageService'], 'singleton': True, - 'processes': ProcessSelector.MAIN_PROCESS_ONLY, 'type': 'mozilla::net::CacheStorageService', 'headers': ['CacheStorageService.h'], }, @@ -177,7 +176,6 @@ Classes = [ 'cid': '{15629ada-a41c-4a09-961f-6553cd60b1a2}', 'contract_ids': ['@mozilla.org/network/http-activity-distributor;1'], 'type': 'mozilla::net::nsHttpActivityDistributor', - 'singleton': True, 'headers': ['/netwerk/protocol/http/nsHttpActivityDistributor.h'], 'processes': ProcessSelector.ALLOW_IN_SOCKET_PROCESS, }, @@ -289,14 +287,12 @@ Classes = [ 'contract_ids': ['@mozilla.org/network/protocol/about;1?what=cache'], 'legacy_constructor': 'nsAboutCache::Create', 'headers': ['/netwerk/protocol/about/nsAboutCache.h'], - 'processes': ProcessSelector.MAIN_PROCESS_ONLY, }, { 'cid': '{7fa5237d-b0eb-438f-9e50-ca0166e63788}', 'contract_ids': ['@mozilla.org/network/protocol/about;1?what=cache-entry'], 'type': 'nsAboutCacheEntry', 'headers': ['/netwerk/protocol/about/nsAboutCacheEntry.h'], - 'processes': ProcessSelector.MAIN_PROCESS_ONLY, }, { 'name': 'CORSPreflightCache', diff --git a/icecat/netwerk/build/moz.build b/icecat/netwerk/build/moz.build index 4a12bd7b0e..a3c3fbdd66 100644 --- a/icecat/netwerk/build/moz.build +++ b/icecat/netwerk/build/moz.build @@ -41,6 +41,12 @@ if CONFIG["MOZ_AUTH_EXTENSION"]: "/extensions/auth", ] +if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": + LOCAL_INCLUDES += [ + "/netwerk/protocol/gio", + ] + + LOCAL_INCLUDES += [ "!/netwerk/dns", "/modules/brotli/dec", diff --git a/icecat/netwerk/cookie/CookieStorage.cpp b/icecat/netwerk/cookie/CookieStorage.cpp index a243f7727d..1646042492 100644 --- a/icecat/netwerk/cookie/CookieStorage.cpp +++ b/icecat/netwerk/cookie/CookieStorage.cpp @@ -551,8 +551,6 @@ void CookieStorage::RemoveOlderCookiesUntilUnderLimit( CookieEntry* aEntry, Cookie* aCookie, const nsACString& aBaseDomain, nsCOMPtr& aPurgedList) { MOZ_ASSERT(aEntry); - CookieKey key(aEntry->mBaseDomain, aEntry->mOriginAttributes); - // remove insecure older cookies until we are within the byte limit // so CHIPS-partitioned cookies will not be detected here since they must be // secure @@ -572,17 +570,11 @@ void CookieStorage::RemoveOlderCookiesUntilUnderLimit( // remove secure older cookies until we are within the byte limit if (!underLimit) { - // Re-lookup: aEntry may have been freed if pass 1 emptied it. - CookieEntry* entry = mHostTable.GetEntry(key); - if (!entry) { - return; - } MOZ_LOG(gCookieLog, LogLevel::Debug, ("Still too many cookies for partition, purging secure\n")); - const CookieEntry::ArrayType& secureCookies = entry->GetCookies(); - MaybePurgeList maybePurgeList(secureCookies.Length()); - for (CookieEntry::IndexType i = 0; i < secureCookies.Length(); ++i) { - CookieListIter iter(entry, i); + MaybePurgeList maybePurgeList(aEntry->GetCookies().Length()); + for (CookieEntry::IndexType i = 0; i < cookies.Length(); ++i) { + CookieListIter iter(aEntry, i); maybePurgeList.AppendElement(iter); } maybePurgeList.Sort(CompareCookiesByAge()); diff --git a/icecat/netwerk/dns/DNS.cpp b/icecat/netwerk/dns/DNS.cpp index 597415eedc..2aff4f0983 100644 --- a/icecat/netwerk/dns/DNS.cpp +++ b/icecat/netwerk/dns/DNS.cpp @@ -113,12 +113,7 @@ bool NetAddr::ToStringBuffer(char* buf, uint32_t bufSize) const { } #if defined(XP_UNIX) if (addr->raw.family == AF_LOCAL) { - // local.path is NOT guaranteed to be NUL-terminated: PR_Accept casts - // PRNetAddr* to struct sockaddr* and Linux sun_path is 108 bytes vs - // our 104, so a peer bound to a >=104-char path fills the whole field - // with non-NUL data. We must write our own terminator, so require - // strictly more than sizeof(path) bytes. - if (bufSize <= sizeof(addr->local.path)) { + if (bufSize < sizeof(addr->local.path)) { // Many callers don't bother checking our return value, so // null-terminate just in case. if (bufSize > 0) { @@ -133,54 +128,26 @@ bool NetAddr::ToStringBuffer(char* buf, uint32_t bufSize) const { // using the destination's size may cause us to read off the end of the // source. memcpy(buf, addr->local.path, sizeof(addr->local.path)); - buf[sizeof(addr->local.path)] = '\0'; return true; } #endif return false; } -bool NetAddr::ToString(nsACString& aOutput) const { - size_t bufferSize = 0; - if (raw.family == AF_INET) { - bufferSize = INET_ADDRSTRLEN; - } else if (raw.family == AF_INET6) { - bufferSize = INET6_ADDRSTRLEN; - } -#if defined(XP_UNIX) - else if (raw.family == AF_LOCAL) { - // +1 for the NUL terminator that ToStringBuffer writes. - bufferSize = sizeof(local.path) + 1; - } -#endif - - auto handleOrErr = aOutput.BulkWrite(bufferSize, /* aPrefixToPreserve */ 0, - /* aAllowShrinking */ false); - if (handleOrErr.isErr()) { - NS_ABORT_OOM(bufferSize); - return false; - } - auto handle = handleOrErr.unwrap(); - - if (!ToStringBuffer(handle.Elements(), bufferSize)) { - handle.Finish(0, /* aAllowShrinking */ false); - return false; - } - handle.Finish(strlen(handle.Elements()), /* aAllowShrinking */ false); - return true; -} - nsCString NetAddr::ToString() const { nsCString out; - ToString(out); - return out; + out.SetLength(kNetAddrMaxCStrBufSize); + if (ToStringBuffer(out.BeginWriting(), kNetAddrMaxCStrBufSize)) { + out.SetLength(strlen(out.BeginWriting())); + return out; + } + return ""_ns; } void NetAddr::ToAddrPortString(nsACString& aOutput) const { - ToString(aOutput); uint16_t port = 0; GetPort(&port); - aOutput.AppendPrintf(":%d", port); + aOutput.Assign(nsPrintfCString("%s:%d", ToString().get(), port)); } bool NetAddr::IsLoopbackAddr() const { diff --git a/icecat/netwerk/dns/DNS.h b/icecat/netwerk/dns/DNS.h index 5ff1257f4f..e5a301218e 100644 --- a/icecat/netwerk/dns/DNS.h +++ b/icecat/netwerk/dns/DNS.h @@ -155,7 +155,6 @@ union NetAddr { bool IsIPAddrShared() const; nsresult GetPort(uint16_t* aResult) const; bool ToStringBuffer(char* buf, uint32_t bufSize) const; - bool ToString(nsACString& aOutput) const; nsCString ToString() const; void ToAddrPortString(nsACString& aOutput) const; nsILoadInfo::IPAddressSpace GetIpAddressSpace() const; diff --git a/icecat/netwerk/dns/DNSPacket.cpp b/icecat/netwerk/dns/DNSPacket.cpp index 02ebfba4fe..0803349ae4 100644 --- a/icecat/netwerk/dns/DNSPacket.cpp +++ b/icecat/netwerk/dns/DNSPacket.cpp @@ -52,13 +52,6 @@ nsresult DNSPacket::FillBuffer( return mStatus; } - if (static_cast(response_length) > MAX_SIZE) { - LOG(("FillBuffer response len %d > MAX_SIZE %u", response_length, MAX_SIZE)); - mBodySize = 0; - mStatus = NS_ERROR_UNEXPECTED; - return mStatus; - } - mBodySize = response_length; return NS_OK; } diff --git a/icecat/netwerk/dns/TRRServiceChild.cpp b/icecat/netwerk/dns/TRRServiceChild.cpp index abcc6664f4..8e04116120 100644 --- a/icecat/netwerk/dns/TRRServiceChild.cpp +++ b/icecat/netwerk/dns/TRRServiceChild.cpp @@ -66,8 +66,6 @@ void TRRServiceChild::Init(const bool& aCaptiveIsPassed, NS_IMETHODIMP TRRServiceChild::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData) { - // Must match - // TRRServiceParent::RecvNotifyNetworkConnectivityServiceObservers() if (!strcmp(aTopic, "network:connectivity-service:ip-checks-complete") || !strcmp(aTopic, "network:connectivity-service:dns-checks-complete")) { Unused << SendNotifyNetworkConnectivityServiceObservers( diff --git a/icecat/netwerk/dns/TRRServiceParent.cpp b/icecat/netwerk/dns/TRRServiceParent.cpp index ea3c75f95a..a111aec4d4 100644 --- a/icecat/netwerk/dns/TRRServiceParent.cpp +++ b/icecat/netwerk/dns/TRRServiceParent.cpp @@ -103,22 +103,9 @@ TRRServiceParent::Observe(nsISupports* aSubject, const char* aTopic, mozilla::ipc::IPCResult TRRServiceParent::RecvNotifyNetworkConnectivityServiceObservers( const nsCString& aTopic) { - // Must match TRRServiceChild::Observe() - const char* topic = nullptr; - if (!strcmp(aTopic.get(), - "network:connectivity-service:ip-checks-complete-from-socket-" - "process")) { - topic = "network:connectivity-service:ip-checks-complete"; - } else if (!strcmp(aTopic.get(), - "network:connectivity-service:dns-checks-complete-from-" - "socket-process")) { - topic = "network:connectivity-service:dns-checks-complete"; - } else { - return IPC_FAIL(this, "Unexpected notification"); - } nsCOMPtr obs = mozilla::services::GetObserverService(); if (obs) { - obs->NotifyObservers(nullptr, topic, nullptr); + obs->NotifyObservers(nullptr, aTopic.get(), nullptr); } return IPC_OK(); } diff --git a/icecat/netwerk/dns/effective_tld_names.dat b/icecat/netwerk/dns/effective_tld_names.dat index 29e6f4e01e..b4f2719f2a 100644 --- a/icecat/netwerk/dns/effective_tld_names.dat +++ b/icecat/netwerk/dns/effective_tld_names.dat @@ -5,8 +5,8 @@ // Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, // rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. -// VERSION: 2026-04-10_20-27-44_UTC -// COMMIT: 8f9e04f2be9098ada07aa3cf13592dfe78870985 +// VERSION: 2025-11-27_13-27-58_UTC +// COMMIT: d3567de748c61e2de5a3156cc52ef0e0fdc1dc0c // Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. @@ -3824,14 +3824,8 @@ mil.kg net.kg org.kg -// kh : https://trc.gov.kh -// Submitted by khnic@trc.gov.kh -kh -com.kh -edu.kh -gov.kh -net.kh -org.kh +// kh : http://www.mptc.gov.kh/dns_registration.htm +*.kh // ki : https://www.iana.org/domains/root/db/ki.html ki @@ -5673,9 +5667,7 @@ si sj // sk : https://www.iana.org/domains/root/db/sk.html -// https://sk-nic.sk/ sk -org.sk // sl : http://www.nic.sl // Submitted by registry @@ -5696,6 +5688,7 @@ com.sn edu.sn gouv.sn org.sn +perso.sn univ.sn // so : http://sonic.so/policies/ @@ -6427,7 +6420,6 @@ hanoi.vn hatinh.vn haugiang.vn hoabinh.vn -hue.vn hungyen.vn khanhhoa.vn kiengiang.vn @@ -6824,7 +6816,7 @@ org.zw // newGTLDs -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2026-04-10T15:53:10Z +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2025-11-08T15:16:38Z // This list is auto-generated, don't edit it manually. // aaa : American Automobile Association, Inc. // https://www.iana.org/domains/root/db/aaa.html @@ -7566,7 +7558,7 @@ church // https://www.iana.org/domains/root/db/cipriani.html cipriani -// circle : Jolly Host, LLC +// circle : Amazon Registry Services, Inc. // https://www.iana.org/domains/root/db/circle.html circle @@ -8402,6 +8394,10 @@ goldpoint // https://www.iana.org/domains/root/db/golf.html golf +// goo : NTT DOCOMO, INC. +// https://www.iana.org/domains/root/db/goo.html +goo + // goodyear : The Goodyear Tire & Rubber Company // https://www.iana.org/domains/root/db/goodyear.html goodyear @@ -8418,7 +8414,7 @@ google // https://www.iana.org/domains/root/db/gop.html gop -// got : Jolly Host, LLC +// got : Amazon Registry Services, Inc. // https://www.iana.org/domains/root/db/got.html got @@ -8790,7 +8786,7 @@ jnj // https://www.iana.org/domains/root/db/joburg.html joburg -// jot : Jolly Host, LLC +// jot : Amazon Registry Services, Inc. // https://www.iana.org/domains/root/db/jot.html jot @@ -9482,7 +9478,7 @@ one // https://www.iana.org/domains/root/db/ong.html ong -// onl : Jolly Host, LLC +// onl : iRegistry GmbH // https://www.iana.org/domains/root/db/onl.html onl @@ -9758,7 +9754,7 @@ quest // https://www.iana.org/domains/root/db/racing.html racing -// radio : Digity, LLC +// radio : European Broadcasting Union (EBU) // https://www.iana.org/domains/root/db/radio.html radio @@ -10198,7 +10194,7 @@ solutions // https://www.iana.org/domains/root/db/song.html song -// sony : Sony Group Corporation +// sony : Sony Corporation // https://www.iana.org/domains/root/db/sony.html sony @@ -10462,7 +10458,7 @@ tokyo // https://www.iana.org/domains/root/db/tools.html tools -// top : Hong Kong Zhongze International Limited +// top : .TOP Registry // https://www.iana.org/domains/root/db/top.html top @@ -10710,7 +10706,7 @@ watch // https://www.iana.org/domains/root/db/watches.html watches -// weather : The Weather Company, LLC +// weather : International Business Machines Corporation // https://www.iana.org/domains/root/db/weather.html weather @@ -10750,7 +10746,7 @@ weir // https://www.iana.org/domains/root/db/whoswho.html whoswho -// wien : domainworx Service & Management GmbH +// wien : punkt.wien GmbH // https://www.iana.org/domains/root/db/wien.html wien @@ -10782,6 +10778,10 @@ winners // https://www.iana.org/domains/root/db/wme.html wme +// wolterskluwer : Wolters Kluwer N.V. +// https://www.iana.org/domains/root/db/wolterskluwer.html +wolterskluwer + // woodside : Woodside Petroleum Limited // https://www.iana.org/domains/root/db/woodside.html woodside @@ -11272,6 +11272,12 @@ poznan.pl wroc.pl zakopane.pl +// 12CHARS : https://12chars.com +// Submitted by Kenny Niehage +12chars.dev +12chars.it +12chars.pro + // 1GB LLC : https://www.1gb.ua/ // Submitted by 1GB LLC cc.ua @@ -11369,8 +11375,6 @@ barsy.ca // Alibaba Cloud API Gateway // Submitted by Alibaba Cloud Security alibabacloudcs.com -ms.fun -ms.show // all-inkl.com : https://all-inkl.com // Submitted by Werner Kaltofen @@ -11437,7 +11441,7 @@ cloudfront.net // Amazon Cognito // Submitted by AWS Security -// Reference: d7d4a954-976e-403e-a010-de9ed0cfbbd1 +// Reference: e7c02dc1-02f4-4a23-bde3-a8527c830127 auth.af-south-1.amazoncognito.com auth.ap-east-1.amazoncognito.com auth.ap-northeast-1.amazoncognito.com @@ -11476,7 +11480,6 @@ auth.us-west-1.amazoncognito.com auth-fips.us-west-1.amazoncognito.com auth.us-west-2.amazoncognito.com auth-fips.us-west-2.amazoncognito.com -auth.cognito-idp.eusc-de-east-1.on.amazonwebservices.eu // Amazon EC2 // Submitted by Luke Wells @@ -11700,7 +11703,7 @@ emrstudio-prod.us-west-2.amazonaws.com // Amazon S3 // Submitted by AWS Security -// Reference: 6f374c1c-1cc9-47de-8b2a-69ca56a3a3b6 +// Reference: ada5c9df-55e1-4195-a1ce-732d6c81e357 s3.dualstack.cn-north-1.amazonaws.com.cn s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn s3-website.dualstack.cn-north-1.amazonaws.com.cn @@ -11966,7 +11969,6 @@ s3.dualstack.us-gov-east-1.amazonaws.com s3-accesspoint.dualstack.us-gov-east-1.amazonaws.com s3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com s3-fips.dualstack.us-gov-east-1.amazonaws.com -s3-website.dualstack.us-gov-east-1.amazonaws.com s3.us-gov-east-1.amazonaws.com s3-accesspoint.us-gov-east-1.amazonaws.com s3-accesspoint-fips.us-gov-east-1.amazonaws.com @@ -11977,7 +11979,6 @@ s3.dualstack.us-gov-west-1.amazonaws.com s3-accesspoint.dualstack.us-gov-west-1.amazonaws.com s3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com s3-fips.dualstack.us-gov-west-1.amazonaws.com -s3-website.dualstack.us-gov-west-1.amazonaws.com s3.us-gov-west-1.amazonaws.com s3-accesspoint.us-gov-west-1.amazonaws.com s3-accesspoint-fips.us-gov-west-1.amazonaws.com @@ -12288,7 +12289,7 @@ lambda-url.us-west-2.on.aws // AWS Transfer Family web apps // Submitted by AWS Security -// Reference: 9265cdd3-f017-42ab-98bb-08bf427d3fc9 +// Reference: 57a658c4-8899-410c-aa24-5b01e4a178d2 transfer-webapp.af-south-1.on.aws transfer-webapp.ap-east-1.on.aws transfer-webapp.ap-northeast-1.on.aws @@ -12301,7 +12302,6 @@ transfer-webapp.ap-southeast-2.on.aws transfer-webapp.ap-southeast-3.on.aws transfer-webapp.ap-southeast-4.on.aws transfer-webapp.ap-southeast-5.on.aws -transfer-webapp.ap-southeast-7.on.aws transfer-webapp.ca-central-1.on.aws transfer-webapp.ca-west-1.on.aws transfer-webapp.eu-central-1.on.aws @@ -12315,7 +12315,6 @@ transfer-webapp.eu-west-3.on.aws transfer-webapp.il-central-1.on.aws transfer-webapp.me-central-1.on.aws transfer-webapp.me-south-1.on.aws -transfer-webapp.mx-central-1.on.aws transfer-webapp.sa-east-1.on.aws transfer-webapp.us-east-1.on.aws transfer-webapp.us-east-2.on.aws @@ -12336,14 +12335,6 @@ eero-stage.online // concludes Amazon -// Anomaly : https://opencode.ai -// Submitted by Dax Raad -opentunnel.xyz - -// Antagonist B.V. : https://www.antagonist.nl/ -// Submitted by Sander Hoentjen -antagonist.cloud - // Apigee : https://apigee.com/ // Submitted by Apigee Security Team apigee.io @@ -12356,24 +12347,6 @@ panel.dev // Submitted by Alexander Selivanov siiites.com -// Apple : https://www.apple.com -// Submitted by Apple DNS -int.apple -*.cloud.int.apple -*.r.cloud.int.apple -*.ap-north-1.r.cloud.int.apple -*.ap-south-1.r.cloud.int.apple -*.ap-south-2.r.cloud.int.apple -*.eu-central-1.r.cloud.int.apple -*.eu-north-1.r.cloud.int.apple -*.us-central-1.r.cloud.int.apple -*.us-central-2.r.cloud.int.apple -*.us-east-1.r.cloud.int.apple -*.us-east-2.r.cloud.int.apple -*.us-west-1.r.cloud.int.apple -*.us-west-2.r.cloud.int.apple -*.us-west-3.r.cloud.int.apple - // Appspace : https://www.appspace.com // Submitted by Appspace Security Team appspacehosted.com @@ -12386,7 +12359,6 @@ appudo.net // Appwrite : https://appwrite.io // Submitted by Steven Nguyen appwrite.global -appwrite.network *.appwrite.run // Aptible : https://www.aptible.com/ @@ -12426,11 +12398,19 @@ myasustor.com // Submitted by Sam Smyth cdn.prod.atlassian-dev.net +// Authentick UG (haftungsbeschränkt) : https://authentick.net +// Submitted by Lukas Reschke +translated.page + // AVM : https://avm.de // Submitted by Andreas Weise myfritz.link myfritz.net +// AVStack Pte. Ltd. : https://avstack.io +// Submitted by Jasper Hugo +onavstack.net + // AW AdvisorWebsites.com Software Inc : https://advisorwebsites.com // Submitted by James Kennedy *.awdev.ca @@ -12469,10 +12449,9 @@ beagleboard.io // Submitted by Herman Martinus bearblog.dev -// Beget LLC : https://beget.com -// Submitted by Lev Nekrasov & Nikita Radchenko +// Beget Ltd +// Submitted by Lev Nekrasov *.beget.app -*.begetcdn.cloud // Besties : https://besties.house // Submitted by Hazel Cora @@ -12552,10 +12531,6 @@ radio.fm cdn.bubble.io bubbleapps.io -// bwCloud-OS : https://bwcloud-os.de/ -// Submitted by Klara Mall -*.bwcloud-os-instance.de - // Bytemark Hosting : https://www.bytemark.co.uk // Submitted by Paul Cammish uk0.bigv.io @@ -12627,8 +12602,7 @@ com.se cx.ua // Civilized Discourse Construction Kit, Inc. : https://www.discourse.org/ -// Submitted by Rishabh Nambiar, Michael Brown, Rafael dos Santos Silva -discourse.diy +// Submitted by Rishabh Nambiar & Michael Brown discourse.group discourse.team @@ -12775,11 +12749,7 @@ ctfcloud.net // Submitted by James Cowling convex.app convex.cloud -eu-west-1.convex.cloud -us-east-1.convex.cloud convex.site -eu-west-1.convex.site -us-east-1.convex.site // Coordination Center for TLD RU and XN--P1AI : https://cctld.ru/en/domains/domens_ru/reserved/ // Submitted by George Georgievsky @@ -12789,10 +12759,6 @@ gov.ru int.ru mil.ru -// CoreSpeed, Inc. : https://corespeed.io -// Submitted by CoreSpeed Team -corespeed.app - // COSIMO GmbH : http://www.cosimo.de // Submitted by Rene Marticke dyn.cosidns.de @@ -12891,11 +12857,6 @@ definima.net deno.dev deno-staging.dev deno.net -sandbox.deno.net - -// DeployAgent : https://deployagent.com -// Submitted by Danny -deployagent.com // deSEC : https://desec.io/ // Submitted by Peter Thomassen @@ -12906,11 +12867,6 @@ dedyn.io deta.app deta.dev -// Deuxfleurs : https://deuxfleurs.fr -// Submitted by Aeddis Desauw -deuxfleurs.eu -deuxfleurs.page - // Developed Methods LLC : https://methods.dev // Submitted by Patrick Lorio *.at.ply.gg @@ -12931,11 +12887,7 @@ caffeine.site caffeine.xyz // dhosting.pl Sp. z o.o. : https://dhosting.pl/ -// Submitted by Szczepan Redzioch -mybox.company -intouch.email -mybox.me -mybox.page +// Submitted by Michal Kokoszkiewicz dfirma.pl dkonto.pl you2.pl @@ -12964,11 +12916,8 @@ discordsez.com // Submitted by Calvin Browne jozi.biz -// DNSHE : https://www.dnshe.com +// DNSHE : https://de5.net // Submitted by DNSHE Team -ccwu.cc -cc.cd -us.ci de5.net // DNShome : https://www.dnshome.de/ @@ -12980,12 +12929,6 @@ dnshome.de online.th shop.th -// dotScot Domains : https://domains.scot/ -// Submitted by DNS Team -co.scot -me.scot -org.scot - // DrayTek Corp. : https://www.draytek.com/ // Submitted by Paul Fang drayddns.com @@ -13293,33 +13236,21 @@ dyndns.ws mypets.ws // Dynu.com : https://www.dynu.com/ -// Submitted by Sue Ye -1cooldns.com -bumbleshrimp.com +// Submitted by Sue Ye ddnsfree.com ddnsgeek.com -ddnsguru.com -dynuddns.com -dynuhosting.com giize.com gleeze.com kozow.com loseyourip.com ooguy.com -pivohosting.com theworkpc.com -wiredbladehosting.com casacam.net dynu.net -dynuddns.net -mysynology.net -opik.net -spryt.net accesscam.org camdvr.org freeddns.org mywire.org -roxa.org webredirect.org myddns.rocks @@ -13364,9 +13295,12 @@ elementor.cool // Emergent : https://emergent.sh // Submitted by Emergent Security Team emergent.cloud -preview.emergentagent.com emergent.host +// En root‽ : https://en-root.org +// Submitted by Emmanuel Raviart +en-root.fr + // Enalean SAS : https://www.enalean.com // Submitted by Enalean Security Team mytuleap.com @@ -13461,16 +13395,10 @@ us-4.evennode.com relay.evervault.app relay.evervault.dev -// Exe : https://exe.dev -// Submitted by Josh Bleecher Snyder -exe.xyz - // Expo : https://expo.dev/ -// Submitted by Phil Pluckthun +// Submitted by James Ide expo.app -on.expo.app staging.expo.app -on.staging.expo.app // Fabrica Technologies, Inc. : https://www.fabrica.dev/ // Submitted by Eric Jiang @@ -13608,7 +13536,6 @@ fh-muenster.io // Figma : https://www.figma.com // Submitted by Nick Frost -payload.dev figma.site figma-gov.site preview.site @@ -13634,9 +13561,15 @@ on-fleek.app flutterflow.app // fly.io : https://fly.io -// Submitted by Kurt Mackey -sprites.app +// Submitted by Kurt Mackey fly.dev +shw.io +edgeapp.net + +// Forgerock : https://www.forgerock.com +// Submitted by Roderick Parr +forgeblocks.com +id.forgerock.io // FoundryLabs, Inc : https://e2b.dev/ // Submitted by Jiri Sveceny @@ -13949,10 +13882,6 @@ grebedoc.dev günstigbestellen.de günstigliefern.de -// GV.UY : https://nic.gv.uy -// Submitted by cheng -gv.uy - // Hackclub Nest : https://hackclub.app // Submitted by Cyteon hackclub.app @@ -13996,12 +13925,6 @@ heliohost.us // Submitted by David Grellscheid hepforge.org -// Hercules : https://hercules.app -// Submitted by Brendan Falk -onhercules.app -hercules-app.com -hercules-dev.com - // Heroku : https://www.heroku.com/ // Submitted by Shumon Huque herokuapp.com @@ -14033,10 +13956,6 @@ homesklep.pl *.id.pub *.kin.pub -// HOOC AG : https://www.hooc.ch -// Submitted by Fabrizio Steiner -seprox.hooc.me - // Hoplix : https://www.hoplix.com // Submitted by Danilo De Franco hoplix.shop @@ -14095,11 +14014,6 @@ iki.fi ibxos.it iliadboxos.it -// Imagine : https://imagine.dev -// Submitted by Steven Nguyen -imagine.diy -imagine-proxy.work - // Incsub, LLC : https://incsub.com/ // Submitted by Aaron Edwards smushcdn.com @@ -14321,22 +14235,15 @@ us1-plenit.com webadorsite.com jouwweb.site +// Joyent : https://www.joyent.com/ +// Submitted by Brian Bennett +*.cns.joyent.com +*.triton.zone + // JS.ORG : http://dns.js.org // Submitted by Stefan Keim js.org -// K2 Cloud : https://k2.cloud/ -// Submitted by K2 Cloud -elastic.k2.cloud -lb.ru-msk.k2.cloud -s3.ru-msk.k2.cloud -website.ru-msk.k2.cloud -lb.ru-spb.k2.cloud -s3.ru-spb.k2.cloud -website.ru-spb.k2.cloud -s3.k2.cloud -website.k2.cloud - // KaasHosting : http://www.kaashosting.nl/ // Submitted by Wouter Bakker kaas.gg @@ -14346,35 +14253,15 @@ khplay.nl // Submitted by Tomi Juntunen kapsi.fi -// KataBump : https://katabump.com -// Submitted by Thibault Lapeyre -kdns.fr - // Katholieke Universiteit Leuven : https://www.kuleuven.be // Submitted by Abuse KU Leuven ezproxy.kuleuven.be kuleuven.cloud -// Keenetic : https://keenetic.com -// Submitted by Alexey Nikitin -keenetic.io -keenetic.link -keenetic.name -keenetic.pro - -// Kevin Service : https://kevsrv.me -// Submitted by Kevin Service Team -ae.kg - // Keyweb AG : https://www.keyweb.de // Submitted by Martin Dannehl keymachine.de -// Kilo Code, Inc. : https://kilo.ai -// Submitted by Remon Oldenbeuving -kiloapps.ai -kiloapps.io - // KingHost : https://king.host // Submitted by Felipe Keller Braz kinghost.net @@ -14404,8 +14291,6 @@ co.de // Laravel Holdings, Inc. : https://laravel.com // Submitted by André Valentin & James Brooks -shiptoday.app -shiptoday.build laravel.cloud on-forge.com on-vapor.com @@ -14570,11 +14455,6 @@ luyani.net // Submitted by Damien Tournoud *.magentosite.cloud -// Magic Patterns : https://www.magicpatterns.com -// Submitted by Teddy Ni -magicpatterns.app -magicpatternsapp.com - // Mail.Ru Group : https://hb.cldmail.ru // Submitted by Ilya Zaretskiy hb.cldmail.ru @@ -14591,6 +14471,10 @@ polyspace.com mayfirst.info mayfirst.org +// Maze Play : https://www.mazeplay.com +// Submitted by Adam Humpherys +mazeplay.com + // McHost : https://mchost.ru // Submitted by Evgeniy Subbotin mcdir.me @@ -14665,15 +14549,9 @@ westus2.azurestaticapps.net azurewebsites.net cloudapp.net trafficmanager.net -blob.core.usgovcloudapi.net -file.core.usgovcloudapi.net -web.core.usgovcloudapi.net servicebus.usgovcloudapi.net usgovcloudapp.net -usgovtrafficmanager.net blob.core.windows.net -file.core.windows.net -web.core.windows.net servicebus.windows.net azure-api.us azurewebsites.us @@ -14694,11 +14572,6 @@ same-preview.com // Submitted by Robert Böttinger csx.cc -// Miren, Inc. : https://miren.dev -// Submitted by Miren Product Team -miren.app -miren.systems - // Mittwald CM Service GmbH & Co. KG : https://mittwald.de // Submitted by Marco Rieger mydbserver.com @@ -14728,10 +14601,6 @@ net.ru org.ru pp.ru -// MyOwn srl : https://www.myown.eu/ -// Submitted by Stephane Bouvard -my.be - // Mythic Beasts : https://www.mythic-beasts.com // Submitted by Paul Cammish hostedpi.com @@ -14919,35 +14788,6 @@ noop.app *.database.run *.migration.run -// Northwest Nexus dba NuOz : https://nuoz.net/ -// An RFC 1480 locality domain delegate host -// Submitted by Peter Briggs on behalf of NuOz -aberdeen.wa.us -bainbridge-isl.wa.us -bellevue.wa.us -bremerton.wa.us -centralia.wa.us -chehalis.wa.us -forks.wa.us -gig-harbor.wa.us -hoquiam.wa.us -keyport.wa.us -kingston.wa.us -olympia.wa.us -port-angeles.wa.us -port-ludlow.wa.us -port-orchard.wa.us -port-townsend.wa.us -poulsbo.wa.us -redmond.wa.us -renton.wa.us -sea.wa.us -seattle.wa.us -sequim.wa.us -shelton.wa.us -silverdale.wa.us -yarrow-point.wa.us - // Noticeable : https://noticeable.io // Submitted by Laurent Pellegrino noticeable.news @@ -14980,6 +14820,10 @@ freeddns.us nsupdate.info nerdpol.ovh +// NYC.mn : https://dot.nyc.mn/ +// Submitted by NYC.mn Subdomain Service +nyc.mn + // O3O.Foundation : https://o3o.foundation/ // Submitted by the prvcy.page Registry Team prvcy.page @@ -15086,6 +14930,7 @@ can.re // Submitted by Authgear Team & Skygear Developer authgear-staging.com authgearapps.com +skygearapp.com // OutSystems // Submitted by Duarte Santos @@ -15117,6 +14962,10 @@ oy.lc // Submitted by Derek Myers pgfog.com +// PageXL : https://pagexl.com +// Submitted by Yann Guichard +pagexl.com + // Pantheon Systems, Inc. : https://pantheon.io/ // Submitted by Gary Dylina gotpantheon.com @@ -15135,23 +14984,18 @@ srv.us gh.srv.us gl.srv.us +// PE Ulyanov Kirill Sergeevich : https://airy.host +// Submitted by Kirill Ulyanov +lk3.ru + // Peplink | Pepwave : http://peplink.com/ // Submitted by Steve Leung mypep.link -// Perplexity AI : https://www.perplexity.ai/ -// Submitted by Alec Xiang -pplx.app - // Perspecta : https://perspecta.com/ // Submitted by Kenneth Van Alstyne perspecta.cloud -// Ping Identity : https://www.pingidentity.com -// Submitted by Ping Identity -forgeblocks.com -id.forgerock.io - // Plain : https://www.plain.com/ // Submitted by Jesús Hernández support.site @@ -15170,6 +15014,11 @@ us.platform.sh *.platformsh.site *.tst.site +// Platter : https://platter.dev +// Submitted by Patrick Flor +platter-app.dev +platterp.us + // Pley AB : https://www.pley.com/ // Submitted by Henning Pohl pley.games @@ -15202,9 +15051,8 @@ xen.prgmr.com priv.at // PROJECT ELIV : https://eliv.kr/ -// Submitted by PROJECT ELIV DomainName Team +// Submitted by PROJECT ELIV Domain Team c01.kr -eliv-api.kr eliv-cdn.kr eliv-dns.kr mmv.kr @@ -15218,10 +15066,6 @@ dev.project-study.com // Submitted by Martin Meier protonet.io -// PSL Sandbox : https://github.com/groundcat/PSL-Sandbox -// Submitted by groundcat -platter-app.dev - // PT Ekossistim Indo Digital : https://e.id // Submitted by Eid Team e.id @@ -15231,11 +15075,6 @@ e.id chirurgiens-dentistes-en-france.fr byen.site -// PublicZone : https://publiczone.org/ -// Submitted by PublicZone NOC Team -nyc.mn -*.cn.st - // pubtls.org : https://www.pubtls.org // Submitted by Kor Nielsen pubtls.org @@ -15341,11 +15180,6 @@ rhcloud.com // Submitted by Andrew Farries instances.spawn.cc -// Redpanda Data : https://redpanda.com -// Submitted by Infrastructure Team -*.clusters.rdpa.co -*.srvrless.rdpa.co - // Render : https://render.com // Submitted by Anurag Goel onrender.com @@ -15506,20 +15340,7 @@ sakura.tv *.dev-builder.code.com *.stg-builder.code.com *.001.test.code-builder-stg.platform.salesforce.com -*.aa.crm.dev -*.ab.crm.dev -*.ac.crm.dev -*.ad.crm.dev -*.ae.crm.dev -*.af.crm.dev -*.ci.crm.dev *.d.crm.dev -*.pa.crm.dev -*.pb.crm.dev -*.pc.crm.dev -*.pd.crm.dev -*.pe.crm.dev -*.pf.crm.dev *.w.crm.dev *.wa.crm.dev *.wb.crm.dev @@ -15532,10 +15353,6 @@ sakura.tv // Submitted by Asheesh Laroia sandcats.io -// Sav.com, LLC : https://marketing.sav.com/ -// Submitted by Mukul Kudegave -sav.case - // SBE network solutions GmbH : https://www.sbe.de/ // Submitted by Norman Meilick logoip.com @@ -15727,10 +15544,6 @@ try-snowplow.com // Submitted by Michal Zalewski mafelo.net -// Solana Name Service : https://sns.id -// Submitted by Solana Name Service -sol.site - // Sony Interactive Entertainment LLC : https://sie.com/ // Submitted by David Coles playstation-cloud.com @@ -15752,10 +15565,6 @@ my.de *.nxa.eu nx.gw -// Spawnbase : https://spawnbase.ai -// Submitted by Alexander Zuev -spawnbase.app - // SpeedPartner GmbH : https://www.speedpartner.de/ // Submitted by Stefan Neufeind customer.speedpartner.de @@ -15801,11 +15610,6 @@ stackit.rocks stackit.run stackit.zone -// Stackryze : https://stackryze.com -// Submitted by Sudheer Bhuvana -sryze.cc -indevs.in - // Staclar : https://staclar.com // Submitted by Q Misell // Submitted by Matthias Merkel @@ -15842,6 +15646,10 @@ ipfs.w3s.link // Submitted by Tony Schirmer storebase.store +// Storipress : https://storipress.com +// Submitted by Benno Liu +storipress.app + // Storj Labs Inc. : https://storj.io/ // Submitted by Philip Hutchins storj.farm @@ -15953,14 +15761,6 @@ tche.br site.tb-hosting.com directwp.eu -// TechEdge Limited: https://www.nic.uk.cc/ -// Submitted by TechEdge Developer -ec.cc -eu.cc -gu.cc -uk.cc -us.cc - // Teckids e.V. : https://www.teckids.org // Submitted by Dominik George edugit.io @@ -16038,10 +15838,6 @@ lima.zone site.transip.me *.transurl.nl -// Triton Data Center project : https://tritondatacenter.com -// Submitted by Triton Data Center staff -*.triton.zone - // Tunnelmole: https://tunnelmole.com // Submitted by Robbie Cahill tunnelmole.net @@ -16050,6 +15846,22 @@ tunnelmole.net // Submitted by TuxFamily administrators tuxfamily.org +// TwoDNS : https://www.twodns.de/ +// Submitted by TwoDNS-Support +dd-dns.de +dray-dns.de +draydns.de +dyn-vpn.de +dynvpn.de +mein-vigor.de +my-vigor.de +my-wan.de +syno-ds.de +synology-diskstation.de +synology-ds.de +diskstation.eu +diskstation.org + // Typedream : https://typedream.com // Submitted by Putri Karunia typedream.app @@ -16151,11 +15963,6 @@ vistablog.ir // Submitted by Deus Team deus-canvas.com -// vivenu GmbH : https://vivenu.com/ -// Submitted by Marvin Frick -vivenushop.com -vivenushop.dev - // Voorloper.com : https://voorloper.com // Submitted by Nathan van Bakel voorloper.cloud @@ -16237,11 +16044,6 @@ localcert.net windsurf.app windsurf.build -// WirelessCar : https://wirelesscar.com -// Submitted by Martin Lindberg -drive-platform.com -drive-platform.io - // WISP : https://wisp.gg // Submitted by Stepan Fedotov panel.gg @@ -16249,8 +16051,6 @@ daemon.panel.gg // Wix.com, Inc. : https://www.wix.com // Submitted by Shahar Talmi / Alon Kochba -base44.app -base44-sandbox.com wixsite.com wixstudio.com editorx.io @@ -16354,7 +16154,6 @@ enterprisecloud.nu // Zone.ID: https://zone.id // Submitted by Gx1.org zone.id -nett.to // ZoneABC : https://zoneabc.net // Submitted by ZoneABC Team diff --git a/icecat/netwerk/dns/nsDNSService2.cpp b/icecat/netwerk/dns/nsDNSService2.cpp index b70d49b035..1b3dd64951 100644 --- a/icecat/netwerk/dns/nsDNSService2.cpp +++ b/icecat/netwerk/dns/nsDNSService2.cpp @@ -312,14 +312,12 @@ nsDNSRecord::HasMore(bool* result) { nsTArray::const_iterator iterCopy = mIter; int iterGenCntCopy = mIterGenCnt; - RefPtr addrInfoCopy = mAddrInfo; NetAddr addr; *result = NS_SUCCEEDED(GetNextAddr(0, &addr)); mIter = iterCopy; mIterGenCnt = iterGenCntCopy; - mAddrInfo = std::move(addrInfoCopy); mDone = false; return NS_OK; diff --git a/icecat/netwerk/dns/nsHostResolver.cpp b/icecat/netwerk/dns/nsHostResolver.cpp index b3c0fbdd59..301579cf9e 100644 --- a/icecat/netwerk/dns/nsHostResolver.cpp +++ b/icecat/netwerk/dns/nsHostResolver.cpp @@ -1601,7 +1601,6 @@ nsHostResolver::LookupStatus nsHostResolver::CompleteLookupLocked( newRRSet->GetTrrFetchDurationNetworkOnly()); addrRec->addr_info = builder.Finish(); - addrRec->addr_info_gencnt++; } old_addr_info = std::move(newRRSet); } @@ -1614,7 +1613,6 @@ nsHostResolver::LookupStatus nsHostResolver::CompleteLookupLocked( auto builder = addrRec->addr_info->Build(); builder.SortAddresses(NetAddrIPv6FirstComparator()); addrRec->addr_info = builder.Finish(); - addrRec->addr_info_gencnt++; } PrepareRecordExpirationAddrRecord(addrRec); diff --git a/icecat/netwerk/ipc/DocumentLoadListener.cpp b/icecat/netwerk/ipc/DocumentLoadListener.cpp index 10514916ae..c486793f79 100644 --- a/icecat/netwerk/ipc/DocumentLoadListener.cpp +++ b/icecat/netwerk/ipc/DocumentLoadListener.cpp @@ -3196,7 +3196,6 @@ NS_IMETHODIMP DocumentLoadListener::EarlyHint(const nsACString& aLinkHeader, const nsACString& aReferrerPolicy, const nsACString& aCSPHeader) { LOG(("DocumentLoadListener::EarlyHint.\n")); - RefPtr kungFuDeathGrip(this); mEarlyHintsService.EarlyHint(aLinkHeader, GetChannelCreationURI(), mChannel, aReferrerPolicy, aCSPHeader, GetLoadingBrowsingContext()); diff --git a/icecat/netwerk/ipc/NeckoChannelParams.ipdlh b/icecat/netwerk/ipc/NeckoChannelParams.ipdlh index c24cb50fb1..018dfa028e 100644 --- a/icecat/netwerk/ipc/NeckoChannelParams.ipdlh +++ b/icecat/netwerk/ipc/NeckoChannelParams.ipdlh @@ -207,7 +207,6 @@ struct LoadInfoArgs InterceptionInfoArg? interceptionInfo; bool isNewWindowTarget; UserNavigationInvolvement userNavigationInvolvement; - FeaturePolicyInfo? containerFeaturePolicyInfo; }; /** @@ -631,6 +630,31 @@ struct SpeculativeConnectionOverriderArgs { bool allow1918; }; +//----------------------------------------------------------------------------- +// GIO IPDL structs +//----------------------------------------------------------------------------- + +struct GIOChannelOpenArgs +{ + URIParams uri; + uint64_t startPos; + nsCString entityID; + IPCStream? uploadStream; + LoadInfoArgs loadInfo; + uint32_t loadFlags; +}; + +struct GIOChannelConnectArgs +{ + uint32_t channelId; +}; + +union GIOChannelCreationArgs +{ + GIOChannelOpenArgs; // For AsyncOpen: the common case. + GIOChannelConnectArgs; // Used for redirected-to channels +}; + //----------------------------------------------------------------------------- // File IPDL structs //----------------------------------------------------------------------------- diff --git a/icecat/netwerk/ipc/NeckoChild.cpp b/icecat/netwerk/ipc/NeckoChild.cpp index 3701ad709a..ee94a94fb6 100644 --- a/icecat/netwerk/ipc/NeckoChild.cpp +++ b/icecat/netwerk/ipc/NeckoChild.cpp @@ -13,6 +13,9 @@ #include "mozilla/net/ChildDNSService.h" #include "mozilla/net/CookieServiceChild.h" #include "mozilla/net/DataChannelChild.h" +#ifdef MOZ_WIDGET_GTK +# include "mozilla/net/GIOChannelChild.h" +#endif #include "mozilla/net/FileChannelChild.h" #include "mozilla/net/WebSocketChannelChild.h" #include "mozilla/net/WebSocketEventListenerChild.h" @@ -126,6 +129,24 @@ bool NeckoChild::DeallocPAltDataOutputStreamChild( return true; } +#ifdef MOZ_WIDGET_GTK +PGIOChannelChild* NeckoChild::AllocPGIOChannelChild( + PBrowserChild* aBrowser, const SerializedLoadContext& aSerialized, + const GIOChannelCreationArgs& aOpenArgs) { + // We don't allocate here: see GIOChannelChild::AsyncOpen() + MOZ_CRASH("AllocPGIOChannelChild should not be called"); + return nullptr; +} + +bool NeckoChild::DeallocPGIOChannelChild(PGIOChannelChild* channel) { + MOZ_ASSERT(IsNeckoChild(), "DeallocPGIOChannelChild called by non-child!"); + + GIOChannelChild* child = static_cast(channel); + child->ReleaseIPDLReference(); + return true; +} +#endif + PCookieServiceChild* NeckoChild::AllocPCookieServiceChild() { // We don't allocate here: see CookieService::GetSingleton() MOZ_ASSERT_UNREACHABLE("AllocPCookieServiceChild should not be called"); diff --git a/icecat/netwerk/ipc/NeckoChild.h b/icecat/netwerk/ipc/NeckoChild.h index c160b6e77f..2434c02126 100644 --- a/icecat/netwerk/ipc/NeckoChild.h +++ b/icecat/netwerk/ipc/NeckoChild.h @@ -41,6 +41,12 @@ class NeckoChild : public PNeckoChild { PCookieServiceChild* AllocPCookieServiceChild(); bool DeallocPCookieServiceChild(PCookieServiceChild*); +#ifdef MOZ_WIDGET_GTK + PGIOChannelChild* AllocPGIOChannelChild( + PBrowserChild* aBrowser, const SerializedLoadContext& aSerialized, + const GIOChannelCreationArgs& aOpenArgs); + bool DeallocPGIOChannelChild(PGIOChannelChild*); +#endif PWebSocketChild* AllocPWebSocketChild(PBrowserChild*, const SerializedLoadContext&, const uint32_t&); diff --git a/icecat/netwerk/ipc/NeckoMessageUtils.h b/icecat/netwerk/ipc/NeckoMessageUtils.h index 39d269fbaf..c616f45a68 100644 --- a/icecat/netwerk/ipc/NeckoMessageUtils.h +++ b/icecat/netwerk/ipc/NeckoMessageUtils.h @@ -117,9 +117,14 @@ struct ParamTraits { ReadParam(aReader, &aResult->inet6.ip.u64[0]) && ReadParam(aReader, &aResult->inet6.ip.u64[1]) && ReadParam(aReader, &aResult->inet6.scope_id); +#if defined(XP_UNIX) + } else if (aResult->raw.family == AF_LOCAL) { + return aReader->ReadBytesInto(&aResult->local.path, + sizeof(aResult->local.path)); +#endif } - // We've been tricked by some socket family we don't know about. + /* We've been tricked by some socket family we don't know about! */ return false; } }; diff --git a/icecat/netwerk/ipc/NeckoParent.cpp b/icecat/netwerk/ipc/NeckoParent.cpp index 72193ac767..a99c2054ae 100644 --- a/icecat/netwerk/ipc/NeckoParent.cpp +++ b/icecat/netwerk/ipc/NeckoParent.cpp @@ -18,6 +18,9 @@ #include "mozilla/net/WebSocketChannelParent.h" #include "mozilla/net/WebSocketEventListenerParent.h" #include "mozilla/net/DataChannelParent.h" +#ifdef MOZ_WIDGET_GTK +# include "mozilla/net/GIOChannelParent.h" +#endif #include "mozilla/net/DocumentChannelParent.h" #include "mozilla/net/SimpleChannelParent.h" #include "mozilla/net/AltDataOutputStreamParent.h" @@ -327,6 +330,51 @@ mozilla::ipc::IPCResult NeckoParent::RecvPDataChannelConstructor( return IPC_OK(); } +#ifdef MOZ_WIDGET_GTK +static already_AddRefed GetRequestingPrincipal( + const GIOChannelCreationArgs& aArgs) { + if (aArgs.type() != GIOChannelCreationArgs::TGIOChannelOpenArgs) { + return nullptr; + } + + const GIOChannelOpenArgs& args = aArgs.get_GIOChannelOpenArgs(); + return GetRequestingPrincipal(args.loadInfo()); +} + +PGIOChannelParent* NeckoParent::AllocPGIOChannelParent( + PBrowserParent* aBrowser, const SerializedLoadContext& aSerialized, + const GIOChannelCreationArgs& aOpenArgs) { + nsCOMPtr requestingPrincipal = + GetRequestingPrincipal(aOpenArgs); + + nsCOMPtr loadContext; + CreateChannelLoadContext(aBrowser, Manager(), aSerialized, + requestingPrincipal, loadContext); + PBOverrideStatus overrideStatus = + PBOverrideStatusFromLoadContext(aSerialized); + GIOChannelParent* p = new GIOChannelParent(BrowserParent::GetFrom(aBrowser), + loadContext, overrideStatus); + p->AddRef(); + return p; +} + +bool NeckoParent::DeallocPGIOChannelParent(PGIOChannelParent* channel) { + GIOChannelParent* p = static_cast(channel); + p->Release(); + return true; +} + +mozilla::ipc::IPCResult NeckoParent::RecvPGIOChannelConstructor( + PGIOChannelParent* actor, PBrowserParent* aBrowser, + const SerializedLoadContext& aSerialized, + const GIOChannelCreationArgs& aOpenArgs) { + GIOChannelParent* p = static_cast(actor); + DebugOnly rv = p->Init(aOpenArgs); + MOZ_ASSERT(rv); + return IPC_OK(); +} +#endif + PSimpleChannelParent* NeckoParent::AllocPSimpleChannelParent( const uint32_t& channelId) { RefPtr p = new SimpleChannelParent(); @@ -384,9 +432,6 @@ PTCPServerSocketParent* NeckoParent::AllocPTCPServerSocketParent( mozilla::ipc::IPCResult NeckoParent::RecvPTCPServerSocketConstructor( PTCPServerSocketParent* aActor, const uint16_t& aLocalPort, const uint16_t& aBacklog, const bool& aUseArrayBuffers) { - if (!StaticPrefs::dom_tcpsocket_in_child_enabled()) { - return IPC_FAIL(this, "tcp socket not enabled"); - } static_cast(aActor)->Init(); return IPC_OK(); } @@ -407,9 +452,6 @@ PUDPSocketParent* NeckoParent::AllocPUDPSocketParent( mozilla::ipc::IPCResult NeckoParent::RecvPUDPSocketConstructor( PUDPSocketParent* aActor, nsIPrincipal* aPrincipal, const nsACString& aFilter) { - if (!StaticPrefs::dom_udpsocket_enabled() && aFilter.IsEmpty()) { - return IPC_FAIL(this, "udp socket not enabled"); - } if (!static_cast(aActor)->Init(aPrincipal, aFilter)) { return IPC_FAIL_NO_REASON(this); } diff --git a/icecat/netwerk/ipc/NeckoParent.h b/icecat/netwerk/ipc/NeckoParent.h index fff89bfb3d..34f3224dba 100644 --- a/icecat/netwerk/ipc/NeckoParent.h +++ b/icecat/netwerk/ipc/NeckoParent.h @@ -142,6 +142,17 @@ class NeckoParent : public PNeckoParent { virtual mozilla::ipc::IPCResult RecvPDataChannelConstructor( PDataChannelParent* aActor, const uint32_t& channelId) override; +# ifdef MOZ_WIDGET_GTK + PGIOChannelParent* AllocPGIOChannelParent( + PBrowserParent* aBrowser, const SerializedLoadContext& aSerialized, + const GIOChannelCreationArgs& aOpenArgs); + bool DeallocPGIOChannelParent(PGIOChannelParent* channel); + + virtual mozilla::ipc::IPCResult RecvPGIOChannelConstructor( + PGIOChannelParent* aActor, PBrowserParent* aBrowser, + const SerializedLoadContext& aSerialized, + const GIOChannelCreationArgs& aOpenArgs) override; +# endif PSimpleChannelParent* AllocPSimpleChannelParent(const uint32_t& channelId); bool DeallocPSimpleChannelParent(PSimpleChannelParent* actor); diff --git a/icecat/netwerk/ipc/PNecko.ipdl b/icecat/netwerk/ipc/PNecko.ipdl index ec00f07365..d787d82af1 100644 --- a/icecat/netwerk/ipc/PNecko.ipdl +++ b/icecat/netwerk/ipc/PNecko.ipdl @@ -9,6 +9,9 @@ include protocol PContent; include protocol PHttpChannel; include protocol PCookieService; include protocol PBrowser; +#ifdef MOZ_WIDGET_GTK +include protocol PGIOChannel; +#endif include protocol PWebSocket; include protocol PWebSocketEventListener; include protocol PTCPSocket; @@ -55,6 +58,9 @@ namespace net { manages PUDPSocket; manages PDNSRequest; manages PDataChannel; +#ifdef MOZ_WIDGET_GTK + manages PGIOChannel; +#endif manages PSimpleChannel; manages PFileChannel; manages PTransportProvider; @@ -108,6 +114,9 @@ parent: * the parent and the child when we're redirecting to a data: URI. */ async PDataChannel(uint32_t channelId); +#ifdef MOZ_WIDGET_GTK + async PGIOChannel(nullable PBrowser browser, SerializedLoadContext loadContext, GIOChannelCreationArgs args); +#endif async PSimpleChannel(uint32_t channelId); async PFileChannel(); diff --git a/icecat/netwerk/ipc/SocketProcessBridgeParent.cpp b/icecat/netwerk/ipc/SocketProcessBridgeParent.cpp index 94e222d4ed..b16be05b4d 100644 --- a/icecat/netwerk/ipc/SocketProcessBridgeParent.cpp +++ b/icecat/netwerk/ipc/SocketProcessBridgeParent.cpp @@ -47,8 +47,8 @@ mozilla::ipc::IPCResult SocketProcessBridgeParent::RecvInitBackgroundDataBridge( transportQueue->Dispatch(NS_NewRunnableFunction( "BackgroundDataBridgeParent::Bind", [endpoint = std::move(aEndpoint), aChannelID]() mutable { - RefPtr actor = - BackgroundDataBridgeParent::Create(aChannelID); + RefPtr actor = + new net::BackgroundDataBridgeParent(aChannelID); endpoint.Bind(actor); })); return IPC_OK(); diff --git a/icecat/netwerk/ipc/SocketProcessParent.cpp b/icecat/netwerk/ipc/SocketProcessParent.cpp index 51ecf3572b..384d13b39e 100644 --- a/icecat/netwerk/ipc/SocketProcessParent.cpp +++ b/icecat/netwerk/ipc/SocketProcessParent.cpp @@ -99,37 +99,33 @@ bool SocketProcessParent::SendRequestMemoryReport( const Maybe& aDMDFile) { mMemoryReportRequest = MakeUnique(aGeneration); - PSocketProcessParent::SendRequestMemoryReport(aGeneration, aAnonymize, - aMinimizeMemoryUsage, aDMDFile) - ->Then( - GetCurrentSerialEventTarget(), __func__, - [](uint32_t aGeneration2) { - MOZ_ASSERT(gIOService); - if (!gIOService->SocketProcess()) { - return; - } - SocketProcessParent* actor = - gIOService->SocketProcess()->GetActor(); - if (!actor) { - return; - } - if (actor->mMemoryReportRequest) { - actor->mMemoryReportRequest->Finish(aGeneration2); - actor->mMemoryReportRequest = nullptr; - } - }, - [](mozilla::ipc::ResponseRejectReason) { - MOZ_ASSERT(gIOService); - if (!gIOService->SocketProcess()) { - return; - } - SocketProcessParent* actor = - gIOService->SocketProcess()->GetActor(); - if (!actor) { - return; - } - actor->mMemoryReportRequest = nullptr; - }); + PSocketProcessParent::SendRequestMemoryReport( + aGeneration, aAnonymize, aMinimizeMemoryUsage, aDMDFile, + [&](const uint32_t& aGeneration2) { + MOZ_ASSERT(gIOService); + if (!gIOService->SocketProcess()) { + return; + } + SocketProcessParent* actor = gIOService->SocketProcess()->GetActor(); + if (!actor) { + return; + } + if (actor->mMemoryReportRequest) { + actor->mMemoryReportRequest->Finish(aGeneration2); + actor->mMemoryReportRequest = nullptr; + } + }, + [&](mozilla::ipc::ResponseRejectReason) { + MOZ_ASSERT(gIOService); + if (!gIOService->SocketProcess()) { + return; + } + SocketProcessParent* actor = gIOService->SocketProcess()->GetActor(); + if (!actor) { + return; + } + actor->mMemoryReportRequest = nullptr; + }); return true; } diff --git a/icecat/netwerk/ipc/moz.build b/icecat/netwerk/ipc/moz.build index 2f577e7ff8..ee87862785 100644 --- a/icecat/netwerk/ipc/moz.build +++ b/icecat/netwerk/ipc/moz.build @@ -68,6 +68,7 @@ SOURCES += [ PREPROCESSED_IPDL_SOURCES += [ + "PNecko.ipdl", "PSocketProcess.ipdl", "PSocketProcessBridge.ipdl", ] @@ -78,7 +79,6 @@ IPDL_SOURCES = [ "PDocumentChannel.ipdl", "PFileChannel.ipdl", "PInputChannelThrottleQueue.ipdl", - "PNecko.ipdl", "PProxyAutoConfig.ipdl", "PProxyConfigLookup.ipdl", "PSimpleChannel.ipdl", diff --git a/icecat/netwerk/protocol/gio/GIOChannelChild.cpp b/icecat/netwerk/protocol/gio/GIOChannelChild.cpp new file mode 100644 index 0000000000..b5ee8c04bc --- /dev/null +++ b/icecat/netwerk/protocol/gio/GIOChannelChild.cpp @@ -0,0 +1,457 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=4 sw=2 sts=2 et tw=80: */ +/* 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 "mozilla/net/NeckoChild.h" +#include "GIOChannelChild.h" +#include "nsGIOProtocolHandler.h" +#include "mozilla/dom/ContentChild.h" +#include "mozilla/dom/BrowserChild.h" +#include "nsContentUtils.h" +#include "nsIBrowserChild.h" +#include "nsStringStream.h" +#include "nsNetUtil.h" +#include "mozilla/ipc/IPCStreamUtils.h" +#include "mozilla/ipc/URIUtils.h" +#include "SerializedLoadContext.h" +#include "mozilla/ipc/BackgroundUtils.h" +#include "nsIURIMutator.h" +#include "nsContentSecurityManager.h" +#include "SerializedLoadContext.h" +#include "mozilla/Logging.h" + +using mozilla::dom::ContentChild; + +namespace mozilla { +#undef LOG +#define LOG(args) MOZ_LOG(gGIOLog, mozilla::LogLevel::Debug, args) +namespace net { + +GIOChannelChild::GIOChannelChild(nsIURI* aUri) + : mEventQ(new ChannelEventQueue(static_cast(this))) { + SetURI(aUri); + // We could support thread retargeting, but as long as we're being driven by + // IPDL on the main thread it doesn't buy us anything. + DisallowThreadRetargeting(); +} + +void GIOChannelChild::AddIPDLReference() { + MOZ_ASSERT(!mIPCOpen, "Attempt to retain more than one IPDL reference"); + mIPCOpen = true; + AddRef(); +} + +void GIOChannelChild::ReleaseIPDLReference() { + MOZ_ASSERT(mIPCOpen, "Attempt to release nonexistent IPDL reference"); + mIPCOpen = false; + Release(); +} + +//----------------------------------------------------------------------------- +// GIOChannelChild::nsISupports +//----------------------------------------------------------------------------- + +NS_IMPL_ISUPPORTS_INHERITED(GIOChannelChild, nsBaseChannel, nsIChildChannel) + +//----------------------------------------------------------------------------- + +NS_IMETHODIMP +GIOChannelChild::AsyncOpen(nsIStreamListener* aListener) { + nsCOMPtr listener = aListener; + nsresult rv = + nsContentSecurityManager::doContentSecurityCheck(this, listener); + NS_ENSURE_SUCCESS(rv, rv); + + LOG(("GIOChannelChild::AsyncOpen [this=%p]\n", this)); + + NS_ENSURE_TRUE((gNeckoChild), NS_ERROR_FAILURE); + NS_ENSURE_TRUE( + !static_cast(gNeckoChild->Manager())->IsShuttingDown(), + NS_ERROR_FAILURE); + NS_ENSURE_ARG_POINTER(listener); + NS_ENSURE_TRUE(!mIsPending, NS_ERROR_IN_PROGRESS); + NS_ENSURE_TRUE(!mWasOpened, NS_ERROR_ALREADY_OPENED); + + // Port checked in parent, but duplicate here so we can return with error + // immediately, as we've done since before e10s. + rv = NS_CheckPortSafety(nsBaseChannel::URI()); // Need to disambiguate, + // because in the child ipdl, + // a typedef URI is defined... + if (NS_FAILED(rv)) { + return rv; + } + + mozilla::dom::BrowserChild* browserChild = nullptr; + nsCOMPtr iBrowserChild; + NS_QueryNotificationCallbacks(mCallbacks, mLoadGroup, + NS_GET_IID(nsIBrowserChild), + getter_AddRefs(iBrowserChild)); + GetCallback(iBrowserChild); + if (iBrowserChild) { + browserChild = + static_cast(iBrowserChild.get()); + } + + mListener = listener; + + // add ourselves to the load group. + if (mLoadGroup) { + mLoadGroup->AddRequest(this, nullptr); + } + + Maybe ipcStream; + mozilla::ipc::SerializeIPCStream(do_AddRef(mUploadStream), ipcStream, + /* aAllowLazy */ false); + + uint32_t loadFlags = 0; + GetLoadFlags(&loadFlags); + + GIOChannelOpenArgs openArgs; + SerializeURI(nsBaseChannel::URI(), openArgs.uri()); + openArgs.startPos() = mStartPos; + openArgs.entityID() = mEntityID; + openArgs.uploadStream() = ipcStream; + openArgs.loadFlags() = loadFlags; + + nsCOMPtr loadInfo = LoadInfo(); + rv = mozilla::ipc::LoadInfoToLoadInfoArgs(loadInfo, &openArgs.loadInfo()); + NS_ENSURE_SUCCESS(rv, rv); + + // This must happen before the constructor message is sent. + SetupNeckoTarget(); + + // The socket transport layer in the chrome process now has a logical ref to + // us until OnStopRequest is called. + AddIPDLReference(); + + if (!gNeckoChild->SendPGIOChannelConstructor( + this, browserChild, IPC::SerializedLoadContext(this), openArgs)) { + return NS_ERROR_FAILURE; + } + + mIsPending = true; + mWasOpened = true; + + return rv; +} + +NS_IMETHODIMP +GIOChannelChild::IsPending(bool* aResult) { + *aResult = mIsPending; + return NS_OK; +} + +nsresult GIOChannelChild::OpenContentStream(bool aAsync, + nsIInputStream** aStream, + nsIChannel** aChannel) { + MOZ_CRASH("GIOChannel*Child* should never have OpenContentStream called!"); + return NS_OK; +} + +mozilla::ipc::IPCResult GIOChannelChild::RecvOnStartRequest( + const nsresult& aChannelStatus, const int64_t& aContentLength, + const nsACString& aContentType, const nsACString& aEntityID, + const URIParams& aURI) { + LOG(("GIOChannelChild::RecvOnStartRequest [this=%p]\n", this)); + mEventQ->RunOrEnqueue(new NeckoTargetChannelFunctionEvent( + this, [self = UnsafePtr(this), aChannelStatus, + aContentLength, aContentType = nsCString(aContentType), + aEntityID = nsCString(aEntityID), aURI]() { + self->DoOnStartRequest(aChannelStatus, aContentLength, aContentType, + aEntityID, aURI); + })); + return IPC_OK(); +} + +void GIOChannelChild::DoOnStartRequest(const nsresult& aChannelStatus, + const int64_t& aContentLength, + const nsACString& aContentType, + const nsACString& aEntityID, + const URIParams& aURI) { + LOG(("GIOChannelChild::DoOnStartRequest [this=%p]\n", this)); + if (!mCanceled && NS_SUCCEEDED(mStatus)) { + mStatus = aChannelStatus; + } + + mContentLength = aContentLength; + SetContentType(aContentType); + mEntityID = aEntityID; + + nsCString spec; + nsCOMPtr uri = DeserializeURI(aURI); + nsresult rv = uri->GetSpec(spec); + if (NS_SUCCEEDED(rv)) { + // Changes nsBaseChannel::URI() + rv = NS_MutateURI(mURI).SetSpec(spec).Finalize(mURI); + } + + if (NS_FAILED(rv)) { + Cancel(rv); + } + + AutoEventEnqueuer ensureSerialDispatch(mEventQ); + rv = mListener->OnStartRequest(this); + if (NS_FAILED(rv)) { + Cancel(rv); + } +} + +mozilla::ipc::IPCResult GIOChannelChild::RecvOnDataAvailable( + const nsresult& aChannelStatus, const nsACString& aData, + const uint64_t& aOffset, const uint32_t& aCount) { + LOG(("GIOChannelChild::RecvOnDataAvailable [this=%p]\n", this)); + mEventQ->RunOrEnqueue(new NeckoTargetChannelFunctionEvent( + this, [self = UnsafePtr(this), aChannelStatus, + aData = nsCString(aData), aOffset, aCount]() { + self->DoOnDataAvailable(aChannelStatus, aData, aOffset, aCount); + })); + + return IPC_OK(); +} + +void GIOChannelChild::DoOnDataAvailable(const nsresult& aChannelStatus, + const nsACString& aData, + const uint64_t& aOffset, + const uint32_t& aCount) { + LOG(("GIOChannelChild::DoOnDataAvailable [this=%p]\n", this)); + + if (!mCanceled && NS_SUCCEEDED(mStatus)) { + mStatus = aChannelStatus; + } + + if (mCanceled) { + return; + } + + // NOTE: the OnDataAvailable contract requires the client to read all the data + // in the inputstream. This code relies on that ('data' will go away after + // this function). Apparently the previous, non-e10s behavior was to actually + // support only reading part of the data, allowing later calls to read the + // rest. + nsCOMPtr stringStream; + nsresult rv = + NS_NewByteInputStream(getter_AddRefs(stringStream), + Span(aData).To(aCount), NS_ASSIGNMENT_DEPEND); + if (NS_FAILED(rv)) { + Cancel(rv); + return; + } + + AutoEventEnqueuer ensureSerialDispatch(mEventQ); + rv = mListener->OnDataAvailable(this, stringStream, aOffset, aCount); + if (NS_FAILED(rv)) { + Cancel(rv); + } + stringStream->Close(); +} + +mozilla::ipc::IPCResult GIOChannelChild::RecvOnStopRequest( + const nsresult& aChannelStatus) { + LOG(("GIOChannelChild::RecvOnStopRequest [this=%p status=%" PRIx32 "]\n", + this, static_cast(aChannelStatus))); + + mEventQ->RunOrEnqueue(new NeckoTargetChannelFunctionEvent( + this, [self = UnsafePtr(this), aChannelStatus]() { + self->DoOnStopRequest(aChannelStatus); + })); + return IPC_OK(); +} + +void GIOChannelChild::DoOnStopRequest(const nsresult& aChannelStatus) { + LOG(("GIOChannelChild::DoOnStopRequest [this=%p status=%" PRIx32 "]\n", this, + static_cast(aChannelStatus))); + + if (!mCanceled) { + mStatus = aChannelStatus; + } + + { // Ensure that all queued ipdl events are dispatched before + // we initiate protocol deletion below. + mIsPending = false; + AutoEventEnqueuer ensureSerialDispatch(mEventQ); + (void)mListener->OnStopRequest(this, aChannelStatus); + + mListener = nullptr; + + if (mLoadGroup) { + mLoadGroup->RemoveRequest(this, nullptr, aChannelStatus); + } + } + + // This calls NeckoChild::DeallocPGIOChannelChild(), which deletes |this| if + // IPDL holds the last reference. Don't rely on |this| existing after here! + Send__delete__(this); +} + +mozilla::ipc::IPCResult GIOChannelChild::RecvFailedAsyncOpen( + const nsresult& aStatusCode) { + LOG(("GIOChannelChild::RecvFailedAsyncOpen [this=%p status=%" PRIx32 "]\n", + this, static_cast(aStatusCode))); + mEventQ->RunOrEnqueue(new NeckoTargetChannelFunctionEvent( + this, [self = UnsafePtr(this), aStatusCode]() { + self->DoFailedAsyncOpen(aStatusCode); + })); + return IPC_OK(); +} + +void GIOChannelChild::DoFailedAsyncOpen(const nsresult& aStatusCode) { + LOG(("GIOChannelChild::DoFailedAsyncOpen [this=%p status=%" PRIx32 "]\n", + this, static_cast(aStatusCode))); + mStatus = aStatusCode; + + if (mLoadGroup) { + mLoadGroup->RemoveRequest(this, nullptr, aStatusCode); + } + + if (mListener) { + mListener->OnStartRequest(this); + mIsPending = false; + mListener->OnStopRequest(this, aStatusCode); + } else { + mIsPending = false; + } + + mListener = nullptr; + + if (mIPCOpen) { + Send__delete__(this); + } +} + +mozilla::ipc::IPCResult GIOChannelChild::RecvDeleteSelf() { + mEventQ->RunOrEnqueue(new NeckoTargetChannelFunctionEvent( + this, + [self = UnsafePtr(this)]() { self->DoDeleteSelf(); })); + return IPC_OK(); +} + +void GIOChannelChild::DoDeleteSelf() { + if (mIPCOpen) { + Send__delete__(this); + } +} + +//----------------------------------------------------------------------------- +// GIOChannelChild::nsIResumableChannel +//----------------------------------------------------------------------------- + +NS_IMETHODIMP +GIOChannelChild::Cancel(nsresult aStatus) { + LOG(("GIOChannelChild::Cancel [this=%p]\n", this)); + + if (mCanceled) { + return NS_OK; + } + + mCanceled = true; + mStatus = aStatus; + if (mIPCOpen) { + SendCancel(aStatus); + } + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelChild::Suspend() { + NS_ENSURE_TRUE(mIPCOpen, NS_ERROR_NOT_AVAILABLE); + + LOG(("GIOChannelChild::Suspend [this=%p]\n", this)); + + // SendSuspend only once, when suspend goes from 0 to 1. + if (!mSuspendCount++) { + SendSuspend(); + mSuspendSent = true; + } + mEventQ->Suspend(); + + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelChild::Resume() { + NS_ENSURE_TRUE(mIPCOpen, NS_ERROR_NOT_AVAILABLE); + + LOG(("GIOChannelChild::Resume [this=%p]\n", this)); + + // SendResume only once, when suspend count drops to 0. + if (!--mSuspendCount && mSuspendSent) { + SendResume(); + } + mEventQ->Resume(); + + return NS_OK; +} + +//----------------------------------------------------------------------------- +// GIOChannelChild::nsIChildChannel +//----------------------------------------------------------------------------- + +NS_IMETHODIMP +GIOChannelChild::ConnectParent(uint32_t aId) { + NS_ENSURE_TRUE((gNeckoChild), NS_ERROR_FAILURE); + NS_ENSURE_TRUE( + !static_cast(gNeckoChild->Manager())->IsShuttingDown(), + NS_ERROR_FAILURE); + + LOG(("GIOChannelChild::ConnectParent [this=%p]\n", this)); + + mozilla::dom::BrowserChild* browserChild = nullptr; + nsCOMPtr iBrowserChild; + NS_QueryNotificationCallbacks(mCallbacks, mLoadGroup, + NS_GET_IID(nsIBrowserChild), + getter_AddRefs(iBrowserChild)); + GetCallback(iBrowserChild); + if (iBrowserChild) { + browserChild = + static_cast(iBrowserChild.get()); + } + + // This must happen before the constructor message is sent. + SetupNeckoTarget(); + + // The socket transport in the chrome process now holds a logical ref to us + // until OnStopRequest, or we do a redirect, or we hit an IPDL error. + AddIPDLReference(); + + GIOChannelConnectArgs connectArgs(aId); + + if (!gNeckoChild->SendPGIOChannelConstructor( + this, browserChild, IPC::SerializedLoadContext(this), connectArgs)) { + return NS_ERROR_FAILURE; + } + + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelChild::CompleteRedirectSetup(nsIStreamListener* aListener) { + LOG(("GIOChannelChild::CompleteRedirectSetup [this=%p]\n", this)); + NS_ENSURE_TRUE(!mIsPending, NS_ERROR_IN_PROGRESS); + NS_ENSURE_TRUE(!mWasOpened, NS_ERROR_ALREADY_OPENED); + + mIsPending = true; + mWasOpened = true; + mListener = aListener; + + // add ourselves to the load group. + if (mLoadGroup) { + mLoadGroup->AddRequest(this, nullptr); + } + + // We already have an open IPDL connection to the parent. If on-modify-request + // listeners or load group observers canceled us, let the parent handle it + // and send it back to us naturally. + return NS_OK; +} + +void GIOChannelChild::SetupNeckoTarget() { + if (mNeckoTarget) { + return; + } + mNeckoTarget = GetMainThreadSerialEventTarget(); +} + +} // namespace net +} // namespace mozilla diff --git a/icecat/netwerk/protocol/gio/GIOChannelChild.h b/icecat/netwerk/protocol/gio/GIOChannelChild.h new file mode 100644 index 0000000000..158ab6804f --- /dev/null +++ b/icecat/netwerk/protocol/gio/GIOChannelChild.h @@ -0,0 +1,111 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=4 sw=2 sts=2 et tw=80: */ +/* 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_GIOCHANNELCHILD_H +#define NS_GIOCHANNELCHILD_H + +#include "mozilla/net/PGIOChannelChild.h" +#include "mozilla/net/ChannelEventQueue.h" +#include "nsBaseChannel.h" +#include "nsIUploadChannel.h" +#include "nsIProxiedChannel.h" +#include "nsIResumableChannel.h" +#include "nsIChildChannel.h" +#include "nsIEventTarget.h" +#include "nsIStreamListener.h" + +class nsIEventTarget; + +namespace mozilla { +namespace net { + +class GIOChannelChild final : public PGIOChannelChild, + public nsBaseChannel, + public nsIChildChannel { + public: + using nsIStreamListener = ::nsIStreamListener; + + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_NSICHILDCHANNEL + + NS_IMETHOD Cancel(nsresult aStatus) override; + NS_IMETHOD Suspend() override; + NS_IMETHOD Resume() override; + + explicit GIOChannelChild(nsIURI* uri); + + void AddIPDLReference(); + void ReleaseIPDLReference(); + + NS_IMETHOD AsyncOpen(nsIStreamListener* aListener) override; + + // Note that we handle this ourselves, overriding the nsBaseChannel + // default behavior, in order to be e10s-friendly. + NS_IMETHOD IsPending(bool* aResult) override; + + nsresult OpenContentStream(bool aAsync, nsIInputStream** aStream, + nsIChannel** aChannel) override; + + bool IsSuspended() const; + + protected: + virtual ~GIOChannelChild() = default; + + mozilla::ipc::IPCResult RecvOnStartRequest(const nsresult& aChannelStatus, + const int64_t& aContentLength, + const nsACString& aContentType, + const nsACString& aEntityID, + const URIParams& aURI) override; + mozilla::ipc::IPCResult RecvOnDataAvailable(const nsresult& aChannelStatus, + const nsACString& aData, + const uint64_t& aOffset, + const uint32_t& aCount) override; + mozilla::ipc::IPCResult RecvOnStopRequest( + const nsresult& aChannelStatus) override; + mozilla::ipc::IPCResult RecvFailedAsyncOpen( + const nsresult& aStatusCode) override; + mozilla::ipc::IPCResult RecvDeleteSelf() override; + + void DoOnStartRequest(const nsresult& aChannelStatus, + const int64_t& aContentLength, + const nsACString& aContentType, + const nsACString& aEntityID, const URIParams& aURI); + void DoOnDataAvailable(const nsresult& aChannelStatus, + const nsACString& aData, const uint64_t& aOffset, + const uint32_t& aCount); + void DoOnStopRequest(const nsresult& aChannelStatus); + void DoFailedAsyncOpen(const nsresult& aStatusCode); + void DoDeleteSelf(); + + void SetupNeckoTarget() override; + + friend class NeckoTargetChannelFunctionEvent; + + private: + nsCOMPtr mUploadStream; + + bool mIPCOpen = false; + const RefPtr mEventQ; + + bool mCanceled = false; + uint32_t mSuspendCount = 0; + ; + bool mIsPending = false; + + uint64_t mStartPos = 0; + nsCString mEntityID; + + // Set if SendSuspend is called. Determines if SendResume is needed when + // diverting callbacks to parent. + bool mSuspendSent = false; +}; + +inline bool GIOChannelChild::IsSuspended() const { return mSuspendCount != 0; } + +} // namespace net +} // namespace mozilla + +#endif /* NS_GIOCHANNELCHILD_H */ diff --git a/icecat/netwerk/protocol/gio/GIOChannelParent.cpp b/icecat/netwerk/protocol/gio/GIOChannelParent.cpp new file mode 100644 index 0000000000..a19829a81d --- /dev/null +++ b/icecat/netwerk/protocol/gio/GIOChannelParent.cpp @@ -0,0 +1,324 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=4 sw=2 sts=2 et tw=80: */ +/* 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 "GIOChannelParent.h" +#include "nsGIOProtocolHandler.h" +#include "mozilla/Assertions.h" +#include "mozilla/dom/ContentParent.h" +#include "mozilla/dom/BrowserParent.h" +#include "mozilla/net/NeckoParent.h" +#include "nsNetUtil.h" +#include "nsIChannel.h" +#include "mozilla/net/NeckoChannelParams.h" +#include "nsIAuthPrompt.h" +#include "nsIAuthPromptProvider.h" +#include "nsISecureBrowserUI.h" +#include "nsQueryObject.h" +#include "mozilla/Logging.h" +#include "mozilla/net/ChannelEventQueue.h" +#include "mozilla/ipc/URIUtils.h" + +using namespace mozilla::dom; +using namespace mozilla::ipc; + +namespace mozilla { +#undef LOG +#define LOG(args) MOZ_LOG(gGIOLog, mozilla::LogLevel::Debug, args) +namespace net { + +GIOChannelParent::GIOChannelParent(dom::BrowserParent* aIframeEmbedding, + nsILoadContext* aLoadContext, + PBOverrideStatus aOverrideStatus) + : mLoadContext(aLoadContext), + mPBOverride(aOverrideStatus), + mBrowserParent(aIframeEmbedding) { + mEventQ = new ChannelEventQueue(static_cast(this)); +} + +void GIOChannelParent::ActorDestroy(ActorDestroyReason why) { + // We may still have refcount>0 if the channel hasn't called OnStopRequest + // yet, but we must not send any more msgs to child. + mIPCClosed = true; +} + +//----------------------------------------------------------------------------- +// GIOChannelParent::nsISupports +//----------------------------------------------------------------------------- +NS_IMPL_ISUPPORTS(GIOChannelParent, nsIStreamListener, nsIParentChannel, + nsIInterfaceRequestor, nsIRequestObserver) + +//----------------------------------------------------------------------------- +// GIOChannelParent methods +//----------------------------------------------------------------------------- + +bool GIOChannelParent::Init(const GIOChannelCreationArgs& aOpenArgs) { + switch (aOpenArgs.type()) { + case GIOChannelCreationArgs::TGIOChannelOpenArgs: { + const GIOChannelOpenArgs& a = aOpenArgs.get_GIOChannelOpenArgs(); + return DoAsyncOpen(a.uri(), a.startPos(), a.entityID(), a.uploadStream(), + a.loadInfo(), a.loadFlags()); + } + case GIOChannelCreationArgs::TGIOChannelConnectArgs: { + const GIOChannelConnectArgs& cArgs = + aOpenArgs.get_GIOChannelConnectArgs(); + return ConnectChannel(cArgs.channelId()); + } + default: + MOZ_ASSERT_UNREACHABLE("unknown open type"); + return false; + } +} + +bool GIOChannelParent::DoAsyncOpen(const URIParams& aURI, + const uint64_t& aStartPos, + const nsCString& aEntityID, + const Maybe& aUploadStream, + const LoadInfoArgs& aLoadInfoArgs, + const uint32_t& aLoadFlags) { + nsresult rv; + + nsCOMPtr uri = DeserializeURI(aURI); + if (!uri) { + return false; + } + +#ifdef DEBUG + LOG(("GIOChannelParent DoAsyncOpen [this=%p uri=%s]\n", this, + uri->GetSpecOrDefault().get())); +#endif + + nsCOMPtr ios(do_GetIOService(&rv)); + if (NS_FAILED(rv)) { + return SendFailedAsyncOpen(rv); + } + + nsAutoCString remoteType; + rv = GetRemoteType(remoteType); + if (NS_FAILED(rv)) { + return SendFailedAsyncOpen(rv); + } + + nsCOMPtr loadInfo; + rv = mozilla::ipc::LoadInfoArgsToLoadInfo(aLoadInfoArgs, remoteType, + getter_AddRefs(loadInfo)); + if (NS_FAILED(rv)) { + return SendFailedAsyncOpen(rv); + } + + OriginAttributes attrs; + rv = loadInfo->GetOriginAttributes(&attrs); + if (NS_FAILED(rv)) { + return SendFailedAsyncOpen(rv); + } + + nsCOMPtr chan; + rv = NS_NewChannelInternal(getter_AddRefs(chan), uri, loadInfo, nullptr, + nullptr, nullptr, aLoadFlags, ios); + + if (NS_FAILED(rv)) { + return SendFailedAsyncOpen(rv); + } + + mChannel = chan; + + nsIChannel* gioChan = static_cast(mChannel.get()); + + rv = gioChan->AsyncOpen(this); + if (NS_FAILED(rv)) { + return SendFailedAsyncOpen(rv); + } + + return true; +} + +bool GIOChannelParent::ConnectChannel(const uint64_t& channelId) { + nsresult rv; + + LOG(("Looking for a registered channel [this=%p, id=%" PRIx64 "]", this, + channelId)); + + nsCOMPtr channel; + rv = NS_LinkRedirectChannels(channelId, this, getter_AddRefs(channel)); + if (NS_SUCCEEDED(rv)) { + mChannel = channel; + } + + LOG((" found channel %p, rv=%08" PRIx32, mChannel.get(), + static_cast(rv))); + + return true; +} + +mozilla::ipc::IPCResult GIOChannelParent::RecvCancel(const nsresult& status) { + if (mChannel) { + mChannel->Cancel(status); + } + + return IPC_OK(); +} + +mozilla::ipc::IPCResult GIOChannelParent::RecvSuspend() { + if (mChannel) { + mChannel->Suspend(); + } + return IPC_OK(); +} + +mozilla::ipc::IPCResult GIOChannelParent::RecvResume() { + if (mChannel) { + mChannel->Resume(); + } + return IPC_OK(); +} + +//----------------------------------------------------------------------------- +// GIOChannelParent::nsIRequestObserver +//----------------------------------------------------------------------------- + +NS_IMETHODIMP +GIOChannelParent::OnStartRequest(nsIRequest* aRequest) { + LOG(("GIOChannelParent::OnStartRequest [this=%p]\n", this)); + nsCOMPtr chan = do_QueryInterface(aRequest); + MOZ_ASSERT(chan); + NS_ENSURE_TRUE(chan, NS_ERROR_UNEXPECTED); + + int64_t contentLength; + chan->GetContentLength(&contentLength); + nsCString contentType; + chan->GetContentType(contentType); + nsresult channelStatus = NS_OK; + chan->GetStatus(&channelStatus); + + nsCString entityID; + URIParams uriparam; + nsCOMPtr uri; + chan->GetURI(getter_AddRefs(uri)); + SerializeURI(uri, uriparam); + + if (mIPCClosed || !SendOnStartRequest(channelStatus, contentLength, + contentType, entityID, uriparam)) { + return NS_ERROR_UNEXPECTED; + } + + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelParent::OnStopRequest(nsIRequest* aRequest, nsresult aStatusCode) { + LOG(("GIOChannelParent::OnStopRequest: [this=%p status=%" PRIu32 "]\n", this, + static_cast(aStatusCode))); + + if (mIPCClosed || !SendOnStopRequest(aStatusCode)) { + return NS_ERROR_UNEXPECTED; + } + + return NS_OK; +} + +//----------------------------------------------------------------------------- +// GIOChannelParent::nsIStreamListener +//----------------------------------------------------------------------------- + +NS_IMETHODIMP +GIOChannelParent::OnDataAvailable(nsIRequest* aRequest, + nsIInputStream* aInputStream, + uint64_t aOffset, uint32_t aCount) { + LOG(("GIOChannelParent::OnDataAvailable [this=%p]\n", this)); + + nsCString data; + nsresult rv = NS_ReadInputStreamToString(aInputStream, data, aCount); + if (NS_FAILED(rv)) { + return rv; + } + + nsresult channelStatus = NS_OK; + mChannel->GetStatus(&channelStatus); + + if (mIPCClosed || + !SendOnDataAvailable(channelStatus, data, aOffset, aCount)) { + return NS_ERROR_UNEXPECTED; + } + return NS_OK; +} + +//----------------------------------------------------------------------------- +// GIOChannelParent::nsIParentChannel +//----------------------------------------------------------------------------- + +NS_IMETHODIMP +GIOChannelParent::SetParentListener(ParentChannelListener* aListener) { + // Do not need ptr to ParentChannelListener. + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelParent::NotifyClassificationFlags(uint32_t aClassificationFlags, + bool aIsThirdParty) { + // Nothing to do. + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelParent::SetClassifierMatchedInfo(const nsACString& aList, + const nsACString& aProvider, + const nsACString& aFullHash) { + // nothing to do + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelParent::SetClassifierMatchedTrackingInfo( + const nsACString& aLists, const nsACString& aFullHashes) { + // nothing to do + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelParent::Delete() { + if (mIPCClosed || !SendDeleteSelf()) { + return NS_ERROR_UNEXPECTED; + } + + return NS_OK; +} + +NS_IMETHODIMP +GIOChannelParent::GetRemoteType(nsACString& aRemoteType) { + if (!CanSend()) { + return NS_ERROR_UNEXPECTED; + } + + dom::PContentParent* pcp = Manager()->Manager(); + aRemoteType = static_cast(pcp)->GetRemoteType(); + return NS_OK; +} + +//----------------------------------------------------------------------------- +// GIOChannelParent::nsIInterfaceRequestor +//----------------------------------------------------------------------------- + +NS_IMETHODIMP +GIOChannelParent::GetInterface(const nsIID& uuid, void** result) { + if (uuid.Equals(NS_GET_IID(nsIAuthPromptProvider)) || + uuid.Equals(NS_GET_IID(nsISecureBrowserUI))) { + if (mBrowserParent) { + return mBrowserParent->QueryInterface(uuid, result); + } + } + + // Only support nsILoadContext if child channel's callbacks did too + if (uuid.Equals(NS_GET_IID(nsILoadContext)) && mLoadContext) { + nsCOMPtr copy = mLoadContext; + copy.forget(result); + return NS_OK; + } + + return QueryInterface(uuid, result); +} + +//--------------------- +} // namespace net +} // namespace mozilla diff --git a/icecat/netwerk/protocol/gio/GIOChannelParent.h b/icecat/netwerk/protocol/gio/GIOChannelParent.h new file mode 100644 index 0000000000..32d3bd0555 --- /dev/null +++ b/icecat/netwerk/protocol/gio/GIOChannelParent.h @@ -0,0 +1,80 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=4 sw=2 sts=2 et tw=80: */ +/* 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_GIOCHANNELPARENT_H +#define NS_GIOCHANNELPARENT_H + +#include "mozilla/net/PGIOChannelParent.h" +#include "mozilla/net/NeckoParent.h" +#include "nsIParentChannel.h" +#include "nsIInterfaceRequestor.h" + +class nsILoadContext; + +namespace mozilla { + +namespace dom { +class BrowserParent; +} // namespace dom + +namespace net { +class ChannelEventQueue; + +class GIOChannelParent final : public PGIOChannelParent, + public nsIParentChannel, + public nsIInterfaceRequestor { + public: + NS_DECL_ISUPPORTS + NS_DECL_NSIREQUESTOBSERVER + NS_DECL_NSISTREAMLISTENER + NS_DECL_NSIPARENTCHANNEL + NS_DECL_NSIINTERFACEREQUESTOR + + GIOChannelParent(dom::BrowserParent* aIframeEmbedding, + nsILoadContext* aLoadContext, + PBOverrideStatus aOverrideStatus); + + bool Init(const GIOChannelCreationArgs& aOpenArgs); + + protected: + virtual ~GIOChannelParent() = default; + + bool DoAsyncOpen(const URIParams& aURI, const uint64_t& aStartPos, + const nsCString& aEntityID, + const Maybe& aUploadStream, + const LoadInfoArgs& aLoadInfoArgs, + const uint32_t& aLoadFlags); + + // used to connect redirected-to channel in parent with just created + // ChildChannel. Used during HTTP->FTP redirects. + bool ConnectChannel(const uint64_t& channelId); + + virtual mozilla::ipc::IPCResult RecvCancel(const nsresult& status) override; + virtual mozilla::ipc::IPCResult RecvSuspend() override; + virtual mozilla::ipc::IPCResult RecvResume() override; + + virtual void ActorDestroy(ActorDestroyReason why) override; + + nsCOMPtr mChannel; + + bool mIPCClosed = false; + + nsCOMPtr mLoadContext; + + PBOverrideStatus mPBOverride; + + // Set to the canceled status value if the main channel was canceled. + nsresult mStatus = NS_OK; + + RefPtr mBrowserParent; + + RefPtr mEventQ; +}; + +} // namespace net +} // namespace mozilla + +#endif /* NS_GIOCHANNELPARENT_H */ diff --git a/icecat/netwerk/protocol/gio/PGIOChannel.ipdl b/icecat/netwerk/protocol/gio/PGIOChannel.ipdl new file mode 100644 index 0000000000..e4f1f6380b --- /dev/null +++ b/icecat/netwerk/protocol/gio/PGIOChannel.ipdl @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set sw=2 ts=8 et tw=80 ft=cpp : */ + +/* 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 protocol PNecko; +include URIParams; + +//FIXME: bug #792908 (NeckoChannelParams already included by PNecko) +include NeckoChannelParams; + +using PRTime from "prtime.h"; + +namespace mozilla { +namespace net { + +[ManualDealloc, ChildImpl=virtual, ParentImpl=virtual] +async protocol PGIOChannel +{ + manager PNecko; + +parent: + // Note: channels are opened during construction, so no open method here: + // see PNecko.ipdl + + async __delete__(); + + async Cancel(nsresult status); + async Suspend(); + async Resume(); + +child: + async OnStartRequest(nsresult aChannelStatus, + int64_t aContentLength, + nsCString aContentType, + nsCString aEntityID, + URIParams aURI); + async OnDataAvailable(nsresult channelStatus, + nsCString data, + uint64_t offset, + uint32_t count); + async OnStopRequest(nsresult channelStatus); + async FailedAsyncOpen(nsresult statusCode); + + async DeleteSelf(); +}; + +} // namespace net +} // namespace mozilla diff --git a/icecat/netwerk/protocol/gio/components.conf b/icecat/netwerk/protocol/gio/components.conf new file mode 100644 index 0000000000..a2bbfd8f19 --- /dev/null +++ b/icecat/netwerk/protocol/gio/components.conf @@ -0,0 +1,24 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=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/. + +Classes = [ + { + 'cid': '{ee706783-3af8-4d19-9e84-e2ebfe213480}', + 'contract_ids': ['@mozilla.org/network/protocol;1?name=moz-gio'], + 'singleton': True, + 'type': 'nsGIOProtocolHandler', + 'headers': ['nsGIOProtocolHandler.h'], + 'constructor': 'nsGIOProtocolHandler::GetSingleton', + 'categories': { 'xpcom-startup': 'nsGIOProtocolHandler' }, + 'protocol_config': { + 'scheme': 'moz-gio', + 'flags': [ + 'URI_STD', + 'URI_DANGEROUS_TO_LOAD', + ], + }, + }, +] diff --git a/icecat/netwerk/protocol/gio/moz.build b/icecat/netwerk/protocol/gio/moz.build new file mode 100644 index 0000000000..4078e5605c --- /dev/null +++ b/icecat/netwerk/protocol/gio/moz.build @@ -0,0 +1,42 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=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/. + +XPCOM_MANIFESTS += [ + "components.conf", +] + +EXPORTS += [ + "nsGIOProtocolHandler.h", +] + +EXPORTS.mozilla.net += [ + "GIOChannelChild.h", + "GIOChannelParent.h", +] + +UNIFIED_SOURCES += [ + "GIOChannelChild.cpp", + "GIOChannelParent.cpp", + "nsGIOProtocolHandler.cpp", +] + +IPDL_SOURCES = [ + "PGIOChannel.ipdl", +] + +include("/ipc/chromium/chromium-config.mozbuild") + +LOCAL_INCLUDES += [ + "/netwerk/base", +] + +FINAL_LIBRARY = "xul" + +if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": + CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"] + +with Files("**"): + BUG_COMPONENT = ("Core", "Widget: Gtk") diff --git a/icecat/netwerk/protocol/gio/nsGIOProtocolHandler.cpp b/icecat/netwerk/protocol/gio/nsGIOProtocolHandler.cpp new file mode 100644 index 0000000000..25764bdbe0 --- /dev/null +++ b/icecat/netwerk/protocol/gio/nsGIOProtocolHandler.cpp @@ -0,0 +1,1027 @@ +/* vim:set ts=2 sw=2 et cindent: */ +/* 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/. */ + +/* + * This code is based on original GNU gnome-vfs extension. It implements + * input stream provided by GVFS/GIO. + */ +#include "nsGIOProtocolHandler.h" +#include "GIOChannelChild.h" +#include "mozilla/Components.h" +#include "mozilla/ClearOnShutdown.h" +#include "mozilla/Logging.h" +#include "mozilla/net/NeckoChild.h" +#include "mozilla/NullPrincipal.h" +#include "nsIPrefBranch.h" +#include "nsIPrefService.h" +#include "nsIObserver.h" +#include "nsCRT.h" +#include "nsThreadUtils.h" +#include "nsProxyRelease.h" +#include "nsIStringBundle.h" +#include "nsMimeTypes.h" +#include "nsNetCID.h" +#include "nsNetUtil.h" +#include "nsServiceManagerUtils.h" +#include "nsIURI.h" +#include "nsIAuthPrompt.h" +#include "nsIChannel.h" +#include "nsIInputStream.h" +#include "nsIProtocolHandler.h" +#include "mozilla/Monitor.h" +#include "prtime.h" +#include +#include + +using namespace mozilla; + +#define MOZ_GIO_SCHEME "moz-gio" +#define MOZ_GIO_SUPPORTED_PROTOCOLS "network.gio.supported-protocols" + +//----------------------------------------------------------------------------- + +// NSPR_LOG_MODULES=gio:5 +LazyLogModule gGIOLog("gio"); +#undef LOG +#define LOG(args) MOZ_LOG(gGIOLog, mozilla::LogLevel::Debug, args) + +//----------------------------------------------------------------------------- +static nsresult MapGIOResult(gint code) { + switch (code) { + case G_IO_ERROR_NOT_FOUND: + return NS_ERROR_FILE_NOT_FOUND; // shows error + case G_IO_ERROR_INVALID_ARGUMENT: + return NS_ERROR_INVALID_ARG; + case G_IO_ERROR_NOT_SUPPORTED: + return NS_ERROR_NOT_AVAILABLE; + case G_IO_ERROR_NO_SPACE: + return NS_ERROR_FILE_NO_DEVICE_SPACE; + case G_IO_ERROR_READ_ONLY: + return NS_ERROR_FILE_READ_ONLY; + case G_IO_ERROR_PERMISSION_DENIED: + return NS_ERROR_FILE_ACCESS_DENIED; // wrong password/login + case G_IO_ERROR_CLOSED: + return NS_BASE_STREAM_CLOSED; // was EOF + case G_IO_ERROR_NOT_DIRECTORY: + return NS_ERROR_FILE_NOT_DIRECTORY; + case G_IO_ERROR_PENDING: + return NS_ERROR_IN_PROGRESS; + case G_IO_ERROR_EXISTS: + return NS_ERROR_FILE_ALREADY_EXISTS; + case G_IO_ERROR_IS_DIRECTORY: + return NS_ERROR_FILE_IS_DIRECTORY; + case G_IO_ERROR_NOT_MOUNTED: + return NS_ERROR_NOT_CONNECTED; // shows error + case G_IO_ERROR_HOST_NOT_FOUND: + return NS_ERROR_UNKNOWN_HOST; // shows error + case G_IO_ERROR_CANCELLED: + return NS_ERROR_ABORT; + case G_IO_ERROR_NOT_EMPTY: + return NS_ERROR_FILE_DIR_NOT_EMPTY; + case G_IO_ERROR_FILENAME_TOO_LONG: + return NS_ERROR_FILE_NAME_TOO_LONG; + case G_IO_ERROR_INVALID_FILENAME: + return NS_ERROR_FILE_INVALID_PATH; + case G_IO_ERROR_TIMED_OUT: + return NS_ERROR_NET_TIMEOUT; // shows error + case G_IO_ERROR_WOULD_BLOCK: + return NS_BASE_STREAM_WOULD_BLOCK; + case G_IO_ERROR_FAILED_HANDLED: + return NS_ERROR_ABORT; // Cancel on login dialog + + /* unhandled: + G_IO_ERROR_NOT_REGULAR_FILE, + G_IO_ERROR_NOT_SYMBOLIC_LINK, + G_IO_ERROR_NOT_MOUNTABLE_FILE, + G_IO_ERROR_TOO_MANY_LINKS, + G_IO_ERROR_ALREADY_MOUNTED, + G_IO_ERROR_CANT_CREATE_BACKUP, + G_IO_ERROR_WRONG_ETAG, + G_IO_ERROR_WOULD_RECURSE, + G_IO_ERROR_BUSY, + G_IO_ERROR_WOULD_MERGE, + G_IO_ERROR_TOO_MANY_OPEN_FILES + */ + // Make GCC happy + default: + return NS_ERROR_FAILURE; + } +} + +static nsresult MapGIOResult(GError* result) { + if (!result) { + return NS_OK; + } + return MapGIOResult(result->code); +} + +/** Return values for mount operation. + * These enums are used as mount operation return values. + */ +enum class MountOperationResult { + MOUNT_OPERATION_IN_PROGRESS, /** \enum operation in progress */ + MOUNT_OPERATION_SUCCESS, /** \enum operation successful */ + MOUNT_OPERATION_FAILED /** \enum operation not successful */ +}; + +//----------------------------------------------------------------------------- +/** + * Sort function compares according to file type (directory/file) + * and alphabethical order + * @param a pointer to GFileInfo object to compare + * @param b pointer to GFileInfo object to compare + * @return -1 when first object should be before the second, 0 when equal, + * +1 when second object should be before the first + */ +static gint FileInfoComparator(gconstpointer a, gconstpointer b) { + GFileInfo* ia = (GFileInfo*)a; + GFileInfo* ib = (GFileInfo*)b; + if (g_file_info_get_file_type(ia) == G_FILE_TYPE_DIRECTORY && + g_file_info_get_file_type(ib) != G_FILE_TYPE_DIRECTORY) { + return -1; + } + if (g_file_info_get_file_type(ib) == G_FILE_TYPE_DIRECTORY && + g_file_info_get_file_type(ia) != G_FILE_TYPE_DIRECTORY) { + return 1; + } + + return nsCRT::strcasecmp(g_file_info_get_name(ia), g_file_info_get_name(ib)); +} + +/* Declaration of mount callback functions */ +static void mount_enclosing_volume_finished(GObject* source_object, + GAsyncResult* res, + gpointer user_data); +static void mount_operation_ask_password( + GMountOperation* mount_op, const char* message, const char* default_user, + const char* default_domain, GAskPasswordFlags flags, gpointer user_data); +//----------------------------------------------------------------------------- +class nsGIOInputStream final : public nsIInputStream { + public: + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIINPUTSTREAM + + explicit nsGIOInputStream(const nsCString& uriSpec) : mSpec(uriSpec) {} + + void SetChannel(nsIChannel* channel) { + // We need to hold an owning reference to our channel. This is done + // so we can access the channel's notification callbacks to acquire + // a reference to a nsIAuthPrompt if we need to handle an interactive + // mount operation. + // + // However, the channel can only be accessed on the main thread, so + // we have to be very careful with ownership. Moreover, it doesn't + // support threadsafe addref/release, so proxying is the answer. + // + // Also, it's important to note that this likely creates a reference + // cycle since the channel likely owns this stream. This reference + // cycle is broken in our Close method. + + mChannel = do_AddRef(channel).take(); + } + void SetMountResult(MountOperationResult result, gint error_code); + + private: + ~nsGIOInputStream() { Close(); } + nsresult DoOpen(); + nsresult DoRead(char* aBuf, uint32_t aCount, uint32_t* aCountRead); + nsresult SetContentTypeOfChannel(const char* contentType); + nsresult MountVolume(); + nsresult DoOpenDirectory(); + nsresult DoOpenFile(GFileInfo* info); + nsCString mSpec; + nsIChannel* mChannel{nullptr}; // manually refcounted + GFile* mHandle{nullptr}; + GFileInputStream* mStream{nullptr}; + uint64_t mBytesRemaining{UINT64_MAX}; + nsresult mStatus{NS_OK}; + GList* mDirList{nullptr}; + GList* mDirListPtr{nullptr}; + nsCString mDirBuf; + uint32_t mDirBufCursor{0}; + bool mDirOpen{false}; + MountOperationResult mMountRes = + MountOperationResult::MOUNT_OPERATION_SUCCESS; + mozilla::Monitor mMonitorMountInProgress MOZ_UNANNOTATED{ + "GIOInputStream::MountFinished"}; + gint mMountErrorCode{}; +}; + +/** + * Set result of mount operation and notify monitor waiting for results. + * This method is called in main thread as long as it is used only + * in mount_enclosing_volume_finished function. + * @param result Result of mount operation + */ +void nsGIOInputStream::SetMountResult(MountOperationResult result, + gint error_code) { + mozilla::MonitorAutoLock mon(mMonitorMountInProgress); + mMountRes = result; + mMountErrorCode = error_code; + mon.Notify(); +} + +/** + * Start mount operation and wait in loop until it is finished. This method is + * called from thread which is trying to read from location. + */ +nsresult nsGIOInputStream::MountVolume() { + GMountOperation* mount_op = g_mount_operation_new(); + g_signal_connect(mount_op, "ask-password", + G_CALLBACK(mount_operation_ask_password), mChannel); + mMountRes = MountOperationResult::MOUNT_OPERATION_IN_PROGRESS; + /* g_file_mount_enclosing_volume uses a dbus request to mount the volume. + Callback mount_enclosing_volume_finished is called in main thread + (not this thread on which this method is called). */ + g_file_mount_enclosing_volume(mHandle, G_MOUNT_MOUNT_NONE, mount_op, nullptr, + mount_enclosing_volume_finished, this); + mozilla::MonitorAutoLock mon(mMonitorMountInProgress); + /* Waiting for finish of mount operation thread */ + while (mMountRes == MountOperationResult::MOUNT_OPERATION_IN_PROGRESS) { + mon.Wait(); + } + + g_object_unref(mount_op); + + if (mMountRes == MountOperationResult::MOUNT_OPERATION_FAILED) { + return MapGIOResult(mMountErrorCode); + } + return NS_OK; +} + +/** + * Create list of infos about objects in opened directory + * Return: NS_OK when list obtained, otherwise error code according + * to failed operation. + */ +nsresult nsGIOInputStream::DoOpenDirectory() { + GError* error = nullptr; + + GFileEnumerator* f_enum = g_file_enumerate_children( + mHandle, "standard::*,time::*", G_FILE_QUERY_INFO_NONE, nullptr, &error); + if (!f_enum) { + nsresult rv = MapGIOResult(error); + g_warning("Cannot read from directory: %s", error->message); + g_error_free(error); + return rv; + } + // fill list of file infos + GFileInfo* info = g_file_enumerator_next_file(f_enum, nullptr, &error); + while (info) { + mDirList = g_list_append(mDirList, info); + info = g_file_enumerator_next_file(f_enum, nullptr, &error); + } + g_object_unref(f_enum); + if (error) { + g_warning("Error reading directory content: %s", error->message); + nsresult rv = MapGIOResult(error); + g_error_free(error); + return rv; + } + mDirOpen = true; + + // Sort list of file infos by using FileInfoComparator function + mDirList = g_list_sort(mDirList, FileInfoComparator); + mDirListPtr = mDirList; + + // Write column names + mDirBuf.AppendLiteral( + "200: filename content-length last-modified file-type\n"); + + SetContentTypeOfChannel(APPLICATION_HTTP_INDEX_FORMAT); + return NS_OK; +} + +/** + * Create file stream and set mime type for channel + * @param info file info used to determine mime type + * @return NS_OK when file stream created successfuly, error code otherwise + */ +nsresult nsGIOInputStream::DoOpenFile(GFileInfo* info) { + GError* error = nullptr; + + mStream = g_file_read(mHandle, nullptr, &error); + if (!mStream) { + nsresult rv = MapGIOResult(error); + g_warning("Cannot read from file: %s", error->message); + g_error_free(error); + return rv; + } + + const char* content_type = g_file_info_get_content_type(info); + if (content_type) { + char* mime_type = g_content_type_get_mime_type(content_type); + if (mime_type) { + if (strcmp(mime_type, APPLICATION_OCTET_STREAM) != 0) { + SetContentTypeOfChannel(mime_type); + } + g_free(mime_type); + } + } else { + g_warning("Missing content type."); + } + + mBytesRemaining = g_file_info_get_size(info); + // Update the content length attribute on the channel. We do this + // synchronously without proxying. This hack is not as bad as it looks! + mChannel->SetContentLength(mBytesRemaining); + + return NS_OK; +} + +/** + * Start file open operation, mount volume when needed and according to file + * type create file output stream or read directory content. + * @return NS_OK when file or directory opened successfully, error code + * otherwise + */ +nsresult nsGIOInputStream::DoOpen() { + nsresult rv; + GError* error = nullptr; + + NS_ASSERTION(mHandle == nullptr, "already open"); + + mHandle = g_file_new_for_uri(mSpec.get()); + + GFileInfo* info = g_file_query_info(mHandle, "standard::*", + G_FILE_QUERY_INFO_NONE, nullptr, &error); + + if (error) { + if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_NOT_MOUNTED) { + // location is not yet mounted, try to mount + g_error_free(error); + if (NS_IsMainThread()) { + return NS_ERROR_NOT_CONNECTED; + } + error = nullptr; + rv = MountVolume(); + if (rv != NS_OK) { + return rv; + } + // get info again + info = g_file_query_info(mHandle, "standard::*", G_FILE_QUERY_INFO_NONE, + nullptr, &error); + // second try to get file info from remote files after media mount + if (!info) { + g_warning("Unable to get file info: %s", error->message); + rv = MapGIOResult(error); + g_error_free(error); + return rv; + } + } else { + g_warning("Unable to get file info: %s", error->message); + rv = MapGIOResult(error); + g_error_free(error); + return rv; + } + } + // Get file type to handle directories and file differently + GFileType f_type = g_file_info_get_file_type(info); + if (f_type == G_FILE_TYPE_DIRECTORY) { + // directory + rv = DoOpenDirectory(); + } else if (f_type != G_FILE_TYPE_UNKNOWN) { + // file + rv = DoOpenFile(info); + } else { + g_warning("Unable to get file type."); + rv = NS_ERROR_FILE_NOT_FOUND; + } + if (info) { + g_object_unref(info); + } + return rv; +} + +/** + * Read content of file or create file list from directory + * @param aBuf read destination buffer + * @param aCount length of destination buffer + * @param aCountRead number of read characters + * @return NS_OK when read successfully, NS_BASE_STREAM_CLOSED when end of file, + * error code otherwise + */ +nsresult nsGIOInputStream::DoRead(char* aBuf, uint32_t aCount, + uint32_t* aCountRead) { + nsresult rv = NS_ERROR_NOT_AVAILABLE; + if (mStream) { + // file read + GError* error = nullptr; + uint32_t bytes_read = g_input_stream_read(G_INPUT_STREAM(mStream), aBuf, + aCount, nullptr, &error); + if (error) { + rv = MapGIOResult(error); + *aCountRead = 0; + g_warning("Cannot read from file: %s", error->message); + g_error_free(error); + return rv; + } + *aCountRead = bytes_read; + mBytesRemaining -= *aCountRead; + return NS_OK; + } + if (mDirOpen) { + // directory read + while (aCount && rv != NS_BASE_STREAM_CLOSED) { + // Copy data out of our buffer + uint32_t bufLen = mDirBuf.Length() - mDirBufCursor; + if (bufLen) { + uint32_t n = std::min(bufLen, aCount); + memcpy(aBuf, mDirBuf.get() + mDirBufCursor, n); + *aCountRead += n; + aBuf += n; + aCount -= n; + mDirBufCursor += n; + } + + if (!mDirListPtr) // Are we at the end of the directory list? + { + rv = NS_BASE_STREAM_CLOSED; + } else if (aCount) // Do we need more data? + { + GFileInfo* info = (GFileInfo*)mDirListPtr->data; + + // Prune '.' and '..' from directory listing. + const char* fname = g_file_info_get_name(info); + if (fname && fname[0] == '.' && + (fname[1] == '\0' || (fname[1] == '.' && fname[2] == '\0'))) { + mDirListPtr = mDirListPtr->next; + continue; + } + + mDirBuf.AssignLiteral("201: "); + + // The "filename" field + nsCString escName; + nsCOMPtr nu = do_GetService(NS_NETUTIL_CONTRACTID); + if (nu && fname) { + nu->EscapeString(nsDependentCString(fname), + nsINetUtil::ESCAPE_URL_PATH, escName); + + mDirBuf.Append(escName); + mDirBuf.Append(' '); + } + + // The "content-length" field + // XXX truncates size from 64-bit to 32-bit + mDirBuf.AppendInt(int32_t(g_file_info_get_size(info))); + mDirBuf.Append(' '); + + // The "last-modified" field + // + // NSPR promises: PRTime is compatible with time_t + // we just need to convert from seconds to microseconds + GTimeVal gtime; + g_file_info_get_modification_time(info, >ime); + + PRExplodedTime tm; + PRTime pt = ((PRTime)gtime.tv_sec) * 1000000; + PR_ExplodeTime(pt, PR_GMTParameters, &tm); + { + char buf[64]; + PR_FormatTimeUSEnglish(buf, sizeof(buf), + "%a,%%20%d%%20%b%%20%Y%%20%H:%M:%S%%20GMT ", + &tm); + mDirBuf.Append(buf); + } + + // The "file-type" field + switch (g_file_info_get_file_type(info)) { + case G_FILE_TYPE_REGULAR: + mDirBuf.AppendLiteral("FILE "); + break; + case G_FILE_TYPE_DIRECTORY: + mDirBuf.AppendLiteral("DIRECTORY "); + break; + case G_FILE_TYPE_SYMBOLIC_LINK: + mDirBuf.AppendLiteral("SYMBOLIC-LINK "); + break; + default: + break; + } + mDirBuf.Append('\n'); + + mDirBufCursor = 0; + mDirListPtr = mDirListPtr->next; + } + } + } + return rv; +} + +/** + * This class is used to implement SetContentTypeOfChannel. + */ +class nsGIOSetContentTypeEvent : public mozilla::Runnable { + public: + nsGIOSetContentTypeEvent(nsIChannel* channel, const char* contentType) + : mozilla::Runnable("nsGIOSetContentTypeEvent"), + mChannel(channel), + mContentType(contentType) { + // stash channel reference in mChannel. no AddRef here! see note + // in SetContentTypeOfchannel. + } + + NS_IMETHOD Run() override { + mChannel->SetContentType(mContentType); + return NS_OK; + } + + private: + nsIChannel* mChannel; + nsCString mContentType; +}; + +nsresult nsGIOInputStream::SetContentTypeOfChannel(const char* contentType) { + // We need to proxy this call over to the main thread. We post an + // asynchronous event in this case so that we don't delay reading data, and + // we know that this is safe to do since the channel's reference will be + // released asynchronously as well. We trust the ordering of the main + // thread's event queue to protect us against memory corruption. + + nsresult rv; + nsCOMPtr ev = + new nsGIOSetContentTypeEvent(mChannel, contentType); + if (!ev) { + rv = NS_ERROR_OUT_OF_MEMORY; + } else { + rv = NS_DispatchToMainThread(ev); + } + return rv; +} + +NS_IMPL_ISUPPORTS(nsGIOInputStream, nsIInputStream) + +/** + * Free all used memory and close stream. + */ +NS_IMETHODIMP +nsGIOInputStream::Close() { + if (mStream) { + g_object_unref(mStream); + mStream = nullptr; + } + + if (mHandle) { + g_object_unref(mHandle); + mHandle = nullptr; + } + + if (mDirList) { + // Destroy the list of GIOFileInfo objects... + g_list_foreach(mDirList, (GFunc)g_object_unref, nullptr); + g_list_free(mDirList); + mDirList = nullptr; + mDirListPtr = nullptr; + } + + if (mChannel) { + NS_ReleaseOnMainThread("nsGIOInputStream::mChannel", dont_AddRef(mChannel)); + + mChannel = nullptr; + } + + mSpec.Truncate(); // free memory + + // Prevent future reads from re-opening the handle. + if (NS_SUCCEEDED(mStatus)) { + mStatus = NS_BASE_STREAM_CLOSED; + } + + return NS_OK; +} + +/** + * Return number of remaining bytes available on input + * @param aResult remaining bytes + */ +NS_IMETHODIMP +nsGIOInputStream::Available(uint64_t* aResult) { + if (NS_FAILED(mStatus)) { + return mStatus; + } + + *aResult = mBytesRemaining; + + return NS_OK; +} + +/** + * Return the status of the input stream + */ +NS_IMETHODIMP +nsGIOInputStream::StreamStatus() { return mStatus; } + +/** + * Trying to read from stream. When location is not available it tries to mount + * it. + * @param aBuf buffer to put read data + * @param aCount length of aBuf + * @param aCountRead number of bytes actually read + */ +NS_IMETHODIMP +nsGIOInputStream::Read(char* aBuf, uint32_t aCount, uint32_t* aCountRead) { + *aCountRead = 0; + // Check if file is already opened, otherwise open it + if (!mStream && !mDirOpen && mStatus == NS_OK) { + mStatus = DoOpen(); + if (NS_FAILED(mStatus)) { + return mStatus; + } + } + + mStatus = DoRead(aBuf, aCount, aCountRead); + // Check if all data has been read + if (mStatus == NS_BASE_STREAM_CLOSED) { + return NS_OK; + } + + // Check whenever any error appears while reading + return mStatus; +} + +NS_IMETHODIMP +nsGIOInputStream::ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, + uint32_t aCount, uint32_t* aResult) { + // There is no way to implement this using GnomeVFS, but fortunately + // that doesn't matter. Because we are a blocking input stream, Necko + // isn't going to call our ReadSegments method. + MOZ_ASSERT_UNREACHABLE("nsGIOInputStream::ReadSegments"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +NS_IMETHODIMP +nsGIOInputStream::IsNonBlocking(bool* aResult) { + *aResult = false; + return NS_OK; +} + +//----------------------------------------------------------------------------- + +/** + * Called when finishing mount operation. Result of operation is set in + * nsGIOInputStream. This function is called in main thread as an async request + * typically from dbus. + * @param source_object GFile object which requested the mount + * @param res result object + * @param user_data pointer to nsGIOInputStream + */ +static void mount_enclosing_volume_finished(GObject* source_object, + GAsyncResult* res, + gpointer user_data) { + GError* error = nullptr; + + nsGIOInputStream* istream = static_cast(user_data); + + g_file_mount_enclosing_volume_finish(G_FILE(source_object), res, &error); + + if (error) { + g_warning("Mount failed: %s %d", error->message, error->code); + istream->SetMountResult(MountOperationResult::MOUNT_OPERATION_FAILED, + error->code); + g_error_free(error); + } else { + istream->SetMountResult(MountOperationResult::MOUNT_OPERATION_SUCCESS, 0); + } +} + +/** + * This function is called when username or password are requested from user. + * This function is called in main thread as async request from dbus. + * @param mount_op mount operation + * @param message message to show to user + * @param default_user preffered user + * @param default_domain domain name + * @param flags what type of information is required + * @param user_data nsIChannel + */ +static void mount_operation_ask_password( + GMountOperation* mount_op, const char* message, const char* default_user, + const char* default_domain, GAskPasswordFlags flags, gpointer user_data) { + nsIChannel* channel = (nsIChannel*)user_data; + if (!channel) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + // We can't handle request for domain + if (flags & G_ASK_PASSWORD_NEED_DOMAIN) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + + nsCOMPtr prompt; + NS_QueryNotificationCallbacks(channel, prompt); + + // If no auth prompt, then give up. We could failover to using the + // WindowWatcher service, but that might defeat a consumer's purposeful + // attempt to disable authentication (for whatever reason). + if (!prompt) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + // Parse out the host and port... + nsCOMPtr uri; + channel->GetURI(getter_AddRefs(uri)); + if (!uri) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + + nsAutoCString scheme, hostPort; + uri->GetScheme(scheme); + uri->GetHostPort(hostPort); + + // It doesn't make sense for either of these strings to be empty. What kind + // of funky URI is this? + if (scheme.IsEmpty() || hostPort.IsEmpty()) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + // Construct the single signon key. Altering the value of this key will + // cause people's remembered passwords to be forgotten. Think carefully + // before changing the way this key is constructed. + nsAutoString key, realm; + + NS_ConvertUTF8toUTF16 dispHost(scheme); + dispHost.AppendLiteral("://"); + dispHost.Append(NS_ConvertUTF8toUTF16(hostPort)); + + key = dispHost; + if (*default_domain != '\0') { + // We assume the realm string is ASCII. That might be a bogus assumption, + // but we have no idea what encoding GnomeVFS is using, so for now we'll + // limit ourselves to ISO-Latin-1. XXX What is a better solution? + realm.Append('"'); + realm.Append(NS_ConvertASCIItoUTF16(default_domain)); + realm.Append('"'); + key.Append(' '); + key.Append(realm); + } + // Construct the message string... + // + // We use Necko's string bundle here. This code really should be encapsulated + // behind some Necko API, after all this code is based closely on the code in + // nsHttpChannel.cpp. + nsCOMPtr bundleSvc = + do_GetService(NS_STRINGBUNDLE_CONTRACTID); + if (!bundleSvc) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + nsCOMPtr bundle; + bundleSvc->CreateBundle("chrome://global/locale/commonDialogs.properties", + getter_AddRefs(bundle)); + if (!bundle) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + nsAutoString nsmessage; + + if (flags & G_ASK_PASSWORD_NEED_PASSWORD) { + if (flags & G_ASK_PASSWORD_NEED_USERNAME) { + if (!realm.IsEmpty()) { + AutoTArray strings = {realm, dispHost}; + bundle->FormatStringFromName("EnterLoginForRealm3", strings, nsmessage); + } else { + AutoTArray strings = {dispHost}; + bundle->FormatStringFromName("EnterUserPasswordFor2", strings, + nsmessage); + } + } else { + NS_ConvertUTF8toUTF16 userName(default_user); + AutoTArray strings = {userName, dispHost}; + bundle->FormatStringFromName("EnterPasswordFor", strings, nsmessage); + } + } else { + g_warning("Unknown mount operation request (flags: %x)", flags); + } + + if (nsmessage.IsEmpty()) { + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + return; + } + // Prompt the user... + nsresult rv; + bool retval = false; + char16_t *user = nullptr, *pass = nullptr; + if (default_user) { + // user will be freed by PromptUsernameAndPassword + user = ToNewUnicode(NS_ConvertUTF8toUTF16(default_user)); + } + if (flags & G_ASK_PASSWORD_NEED_USERNAME) { + rv = prompt->PromptUsernameAndPassword( + nullptr, nsmessage.get(), key.get(), + nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY, &user, &pass, &retval); + } else { + rv = prompt->PromptPassword(nullptr, nsmessage.get(), key.get(), + nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY, &pass, + &retval); + } + if (NS_FAILED(rv) || !retval) { // was || user == '\0' || pass == '\0' + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED); + free(user); + free(pass); + return; + } + /* GIO should accept UTF8 */ + g_mount_operation_set_username(mount_op, NS_ConvertUTF16toUTF8(user).get()); + g_mount_operation_set_password(mount_op, NS_ConvertUTF16toUTF8(pass).get()); + free(user); + free(pass); + g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_HANDLED); +} + +//----------------------------------------------------------------------------- + +mozilla::StaticRefPtr nsGIOProtocolHandler::sSingleton; + +already_AddRefed nsGIOProtocolHandler::GetSingleton() { + if (!sSingleton) { + sSingleton = new nsGIOProtocolHandler(); + sSingleton->Init(); + ClearOnShutdown(&sSingleton); + } + return do_AddRef(sSingleton); +} + +NS_IMPL_ISUPPORTS(nsGIOProtocolHandler, nsIProtocolHandler, nsIObserver) + +nsresult nsGIOProtocolHandler::Init() { + if (net::IsNeckoChild()) { + net::NeckoChild::InitNeckoChild(); + } + nsCOMPtr prefs = do_GetService(NS_PREFSERVICE_CONTRACTID); + if (prefs) { + InitSupportedProtocolsPref(prefs); + prefs->AddObserver(MOZ_GIO_SUPPORTED_PROTOCOLS, this, false); + } + + return NS_OK; +} + +void nsGIOProtocolHandler::InitSupportedProtocolsPref(nsIPrefBranch* prefs) { + nsCOMPtr ioService = components::IO::Service(); + if (NS_WARN_IF(!ioService)) { + LOG(("gio: ioservice not available\n")); + return; + } + + // Get user preferences to determine which protocol is supported. + // Gvfs/GIO has a set of supported protocols like obex, network, archive, + // computer, dav, cdda, gphoto2, trash, etc. Some of these seems to be + // irrelevant to process by browser. By default accept only sftp protocol so + // far. + nsAutoCString prefValue; + nsresult rv = prefs->GetCharPref(MOZ_GIO_SUPPORTED_PROTOCOLS, prefValue); + if (NS_SUCCEEDED(rv)) { + prefValue.StripWhitespace(); + ToLowerCase(prefValue); + } else { + prefValue.AssignLiteral("" // use none by default + ); + } + LOG(("gio: supported protocols \"%s\"\n", prefValue.get())); + + // Unregister any previously registered dynamic protocols. + for (const nsCString& scheme : mSupportedProtocols) { + LOG(("gio: unregistering handler for \"%s\"", scheme.get())); + ioService->UnregisterProtocolHandler(scheme); + } + mSupportedProtocols.Clear(); + + // Register each protocol from the pref branch to reference + // nsGIOProtocolHandler. + for (const nsDependentCSubstring& protocol : prefValue.Split(',')) { + if (NS_WARN_IF(!StringEndsWith(protocol, ":"_ns))) { + continue; // each protocol must end with a `:` character to be recognized + } + + nsCString scheme(Substring(protocol, 0, protocol.Length() - 1)); + if (NS_SUCCEEDED(ioService->RegisterProtocolHandler( + scheme, this, + nsIProtocolHandler::URI_STD | + nsIProtocolHandler::URI_DANGEROUS_TO_LOAD, + /* aDefaultPort */ -1))) { + LOG(("gio: successfully registered handler for \"%s\"", scheme.get())); + mSupportedProtocols.AppendElement(scheme); + } else { + LOG(("gio: failed to register handler for \"%s\"", scheme.get())); + } + } +} + +bool nsGIOProtocolHandler::IsSupportedProtocol(const nsCString& aScheme) { + for (const auto& protocol : mSupportedProtocols) { + if (aScheme.EqualsIgnoreCase(protocol)) { + return true; + } + } + return false; +} + +NS_IMETHODIMP +nsGIOProtocolHandler::GetScheme(nsACString& aScheme) { + aScheme.AssignLiteral(MOZ_GIO_SCHEME); + return NS_OK; +} + +static bool IsValidGIOScheme(const nsACString& aScheme) { + // Verify that GIO supports this URI scheme. + GVfs* gvfs = g_vfs_get_default(); + + if (!gvfs) { + g_warning("Cannot get GVfs object."); + return false; + } + + const gchar* const* uri_schemes = g_vfs_get_supported_uri_schemes(gvfs); + + while (*uri_schemes != nullptr) { + // While flatSpec ends with ':' the uri_scheme does not. Therefore do not + // compare last character. + if (aScheme.Equals(*uri_schemes)) { + return true; + } + uri_schemes++; + } + + return false; +} + +NS_IMETHODIMP +nsGIOProtocolHandler::NewChannel(nsIURI* aURI, nsILoadInfo* aLoadInfo, + nsIChannel** aResult) { + NS_ENSURE_ARG_POINTER(aURI); + nsresult rv; + + nsAutoCString spec; + rv = aURI->GetSpec(spec); + if (NS_FAILED(rv)) { + return rv; + } + + nsAutoCString scheme; + rv = aURI->GetScheme(scheme); + if (NS_FAILED(rv)) { + return rv; + } + + if (!IsSupportedProtocol(scheme)) { + return NS_ERROR_UNKNOWN_PROTOCOL; + } + + // g_vfs_get_supported_uri_schemes() returns a very limited list in the + // child due to the sandbox, so we only check if its valid for the parent. + if (XRE_IsParentProcess() && !IsValidGIOScheme(scheme)) { + return NS_ERROR_UNKNOWN_PROTOCOL; + } + + RefPtr channel; + if (net::IsNeckoChild()) { + channel = new mozilla::net::GIOChannelChild(aURI); + // set the loadInfo on the new channel + channel->SetLoadInfo(aLoadInfo); + + rv = channel->SetContentType(nsLiteralCString(UNKNOWN_CONTENT_TYPE)); + NS_ENSURE_SUCCESS(rv, rv); + + channel.forget(aResult); + return NS_OK; + } + + RefPtr stream = new nsGIOInputStream(spec); + if (!stream) { + return NS_ERROR_OUT_OF_MEMORY; + } + + RefPtr tmpStream = stream; + rv = NS_NewInputStreamChannelInternal(aResult, aURI, tmpStream.forget(), + nsLiteralCString(UNKNOWN_CONTENT_TYPE), + ""_ns, // aContentCharset + aLoadInfo); + if (NS_SUCCEEDED(rv)) { + stream->SetChannel(*aResult); + } + + return rv; +} + +NS_IMETHODIMP +nsGIOProtocolHandler::AllowPort(int32_t aPort, const char* aScheme, + bool* aResult) { + // Don't override anything. + *aResult = false; + return NS_OK; +} + +NS_IMETHODIMP +nsGIOProtocolHandler::Observe(nsISupports* aSubject, const char* aTopic, + const char16_t* aData) { + if (strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID) == 0) { + nsCOMPtr prefs = do_QueryInterface(aSubject); + InitSupportedProtocolsPref(prefs); + } + return NS_OK; +} diff --git a/icecat/netwerk/protocol/gio/nsGIOProtocolHandler.h b/icecat/netwerk/protocol/gio/nsGIOProtocolHandler.h new file mode 100644 index 0000000000..08e7c01bed --- /dev/null +++ b/icecat/netwerk/protocol/gio/nsGIOProtocolHandler.h @@ -0,0 +1,38 @@ +/* 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 nsGIOProtocolHandler_h___ +#define nsGIOProtocolHandler_h___ + +#include "nsIProtocolHandler.h" +#include "nsIObserver.h" +#include "nsIPrefBranch.h" +#include "nsStringFwd.h" + +#include "mozilla/Logging.h" +extern mozilla::LazyLogModule gGIOLog; + +class nsGIOProtocolHandler final : public nsIProtocolHandler, + public nsIObserver { + public: + NS_DECL_ISUPPORTS + NS_DECL_NSIPROTOCOLHANDLER + NS_DECL_NSIOBSERVER + + static already_AddRefed GetSingleton(); + bool IsSupportedProtocol(const nsCString& aScheme); + + protected: + ~nsGIOProtocolHandler() = default; + + private: + nsresult Init(); + + void InitSupportedProtocolsPref(nsIPrefBranch* prefs); + + static mozilla::StaticRefPtr sSingleton; + nsTArray mSupportedProtocols; +}; + +#endif // nsGIOProtocolHandler_h___ diff --git a/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.cpp b/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.cpp index 36aa92db5c..13f1ca88f0 100644 --- a/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.cpp +++ b/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.cpp @@ -34,7 +34,7 @@ BackgroundChannelRegistrar::~BackgroundChannelRegistrar() { } // static -already_AddRefed +already_AddRefed BackgroundChannelRegistrar::GetOrCreate() { if (!gSingleton) { gSingleton = new BackgroundChannelRegistrar(); @@ -57,22 +57,8 @@ void BackgroundChannelRegistrar::NotifyChannelLinked( void BackgroundChannelRegistrar::DeleteChannel(uint64_t aKey) { MOZ_ASSERT(NS_IsMainThread()); - RefPtr channel; - mChannels.Remove(aKey, getter_AddRefs(channel)); - RefPtr bgChannel; - mBgChannels.Remove(aKey, getter_AddRefs(bgChannel)); -} - -void BackgroundChannelRegistrar::DeleteChannelIfMatches( - uint64_t aKey, HttpChannelParent* aExpected) { - MOZ_ASSERT(NS_IsMainThread()); - - RefPtr channel; - if (mChannels.GetWeak(aKey) == aExpected) { - mChannels.Remove(aKey, getter_AddRefs(channel)); - } - RefPtr bgChannel; - mBgChannels.Remove(aKey, getter_AddRefs(bgChannel)); + mChannels.Remove(aKey); + mBgChannels.Remove(aKey); } void BackgroundChannelRegistrar::LinkHttpChannel(uint64_t aKey, diff --git a/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.h b/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.h index dbabf94250..8f926103a2 100644 --- a/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.h +++ b/icecat/netwerk/protocol/http/BackgroundChannelRegistrar.h @@ -29,19 +29,12 @@ class BackgroundChannelRegistrar final : public nsIBackgroundChannelRegistrar { explicit BackgroundChannelRegistrar(); - // Singleton accessors - static already_AddRefed GetOrCreate(); + // Singleton accessor + static already_AddRefed GetOrCreate(); private: virtual ~BackgroundChannelRegistrar(); - // Like DeleteChannel, but only removes the mChannels entry if it matches - // aExpected. Use this in preference to DeleteChannel when the caller knows - // which HttpChannelParent it registered, to avoid accidentally removing an - // entry belonging to a different object that shares the same channel Id. - void DeleteChannelIfMatches(uint64_t aKey, HttpChannelParent* aExpected); - friend class HttpChannelParent; - // A helper function for BackgroundChannelRegistrar itself to callback // HttpChannelParent and HttpBackgroundChannelParent when both objects are // ready. aChannelParent and aBgParent is the pair of HttpChannelParent and diff --git a/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.cpp b/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.cpp index c1ff6c4606..843c64023e 100644 --- a/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.cpp +++ b/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.cpp @@ -10,7 +10,11 @@ namespace mozilla { namespace net { BackgroundDataBridgeParent::BackgroundDataBridgeParent(uint64_t aChannelID) - : mChannelID(aChannelID), mBackgroundThread(GetCurrentSerialEventTarget()) {} + : mChannelID(aChannelID), mBackgroundThread(GetCurrentSerialEventTarget()) { + if (SocketProcessChild* child = SocketProcessChild::GetSingleton()) { + child->AddDataBridgeToMap(aChannelID, this); + } +} void BackgroundDataBridgeParent::ActorDestroy(ActorDestroyReason aWhy) { if (SocketProcessChild* child = SocketProcessChild::GetSingleton()) { @@ -18,16 +22,6 @@ void BackgroundDataBridgeParent::ActorDestroy(ActorDestroyReason aWhy) { } } -already_AddRefed -BackgroundDataBridgeParent::Create(uint64_t aChannelID) { - RefPtr actor = - new BackgroundDataBridgeParent(aChannelID); - if (SocketProcessChild* child = SocketProcessChild::GetSingleton()) { - child->AddDataBridgeToMap(aChannelID, actor); - } - return actor.forget(); -} - already_AddRefed BackgroundDataBridgeParent::GetBackgroundThread() { return do_AddRef(mBackgroundThread); diff --git a/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.h b/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.h index 9a0c36abf7..9bda9f3aa9 100644 --- a/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.h +++ b/icecat/netwerk/protocol/http/BackgroundDataBridgeParent.h @@ -14,7 +14,7 @@ class BackgroundDataBridgeParent final : public PBackgroundDataBridgeParent { public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(BackgroundDataBridgeParent, override) - static already_AddRefed Create(uint64_t aChannelID); + explicit BackgroundDataBridgeParent(uint64_t aChannelID); void ActorDestroy(ActorDestroyReason aWhy) override; already_AddRefed GetBackgroundThread(); void Destroy(); @@ -24,7 +24,6 @@ class BackgroundDataBridgeParent final : public PBackgroundDataBridgeParent { const TimeStamp& aOnStopRequestStart); private: - explicit BackgroundDataBridgeParent(uint64_t aChannelID); virtual ~BackgroundDataBridgeParent() = default; uint64_t mChannelID; diff --git a/icecat/netwerk/protocol/http/HttpChannelParent.cpp b/icecat/netwerk/protocol/http/HttpChannelParent.cpp index 0e864d61a5..03ec882a2d 100644 --- a/icecat/netwerk/protocol/http/HttpChannelParent.cpp +++ b/icecat/netwerk/protocol/http/HttpChannelParent.cpp @@ -271,15 +271,12 @@ void HttpChannelParent::CleanupBackgroundChannel() { } // This HttpChannelParent might still have a reference from - // BackgroundChannelRegistrar. Only remove our own entry; another - // HttpChannelParent may have been registered under the same channel Id - // (e.g. after a redirect), and we must not remove that entry. - RefPtr registrar = + // BackgroundChannelRegistrar. + nsCOMPtr registrar = BackgroundChannelRegistrar::GetOrCreate(); MOZ_ASSERT(registrar); - if (registrar) { - registrar->DeleteChannelIfMatches(mChannel->ChannelId(), this); - } + + registrar->DeleteChannel(mChannel->ChannelId()); // If mAsyncOpenBarrier is greater than zero, it means AsyncOpen procedure // is still on going. we need to abort AsyncOpen with failure to destroy @@ -983,11 +980,6 @@ HttpChannelParent::ContinueVerification( MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aCallback); - if (mIPCClosed) { - aCallback->ReadyToVerify(NS_ERROR_FAILURE); - return NS_OK; - } - // Continue the verification procedure if background channel is ready. if (mBgParent) { aCallback->ReadyToVerify(NS_OK); @@ -1728,7 +1720,8 @@ HttpChannelParent::SetClassifierMatchedInfo(const nsACString& aList, const nsACString& aProvider, const nsACString& aFullHash) { LOG(("HttpChannelParent::SetClassifierMatchedInfo [this=%p]\n", this)); - if (!mIPCClosed && mBgParent) { + if (!mIPCClosed) { + MOZ_ASSERT(mBgParent); Unused << mBgParent->OnSetClassifierMatchedInfo(aList, aProvider, aFullHash); } @@ -1740,7 +1733,8 @@ HttpChannelParent::SetClassifierMatchedTrackingInfo( const nsACString& aLists, const nsACString& aFullHashes) { LOG(("HttpChannelParent::SetClassifierMatchedTrackingInfo [this=%p]\n", this)); - if (!mIPCClosed && mBgParent) { + if (!mIPCClosed) { + MOZ_ASSERT(mBgParent); Unused << mBgParent->OnSetClassifierMatchedTrackingInfo(aLists, aFullHashes); } @@ -1754,7 +1748,8 @@ HttpChannelParent::NotifyClassificationFlags(uint32_t aClassificationFlags, ("HttpChannelParent::NotifyClassificationFlags " "classificationFlags=%" PRIu32 ", thirdparty=%d [this=%p]\n", aClassificationFlags, static_cast(aIsThirdParty), this)); - if (!mIPCClosed && mBgParent) { + if (!mIPCClosed) { + MOZ_ASSERT(mBgParent); Unused << mBgParent->OnNotifyClassificationFlags(aClassificationFlags, aIsThirdParty); } diff --git a/icecat/netwerk/protocol/http/HttpTransactionParent.cpp b/icecat/netwerk/protocol/http/HttpTransactionParent.cpp index 6526bfb950..84e3c69392 100644 --- a/icecat/netwerk/protocol/http/HttpTransactionParent.cpp +++ b/icecat/netwerk/protocol/http/HttpTransactionParent.cpp @@ -18,7 +18,6 @@ #include "nsIThreadRetargetableStreamListener.h" #include "nsITransportSecurityInfo.h" #include "nsNetUtil.h" -#include "nsProxyRelease.h" #include "nsQueryObject.h" #include "nsSerializationHelper.h" #include "nsStreamUtils.h" @@ -37,31 +36,11 @@ NS_INTERFACE_MAP_END NS_IMETHODIMP_(MozExternalRefCountType) HttpTransactionParent::Release(void) { MOZ_ASSERT(int32_t(mRefCnt) > 0, "dup release"); - - if (!NS_IsMainThread()) { - // Use DecrementWithLimit to atomically decrement only while count > 2. - // This ensures a background thread never drops the count to 1 or 0, - // avoiding the race where the main thread frees the object (via - // ActorDisconnected) between our decrement and the count==1 handling. - auto [success, count] = mRefCnt.DecrementWithLimit<2>(); - if (success) { - NS_LOG_RELEASE(this, count, "HttpTransactionParent"); - return count; - } - // mRefCnt <= 2: the next decrement could trigger Send__delete__ or - // deletion, both of which must happen on the main thread. Transfer - // our reference there without decrementing. - NS_ProxyRelease("HttpTransactionParent::Release", - GetMainThreadSerialEventTarget(), - dont_AddRef(static_cast(this))); - return 1; - } - nsrefcnt count = --mRefCnt; NS_LOG_RELEASE(this, count, "HttpTransactionParent"); if (count == 0) { mRefCnt = 1; /* stabilize */ - delete this; + delete (this); return 0; } @@ -69,7 +48,17 @@ NS_IMETHODIMP_(MozExternalRefCountType) HttpTransactionParent::Release(void) { // we are done with this transaction. We should send a delete message // to delete the transaction child in socket process. if (count == 1 && CanSend()) { - mozilla::Unused << Send__delete__(this); + if (!NS_IsMainThread()) { + RefPtr self = this; + MOZ_ALWAYS_SUCCEEDS(NS_DispatchToMainThread( + NS_NewRunnableFunction("HttpTransactionParent::Release", [self]() { + mozilla::Unused << self->Send__delete__(self); + // Make sure we can not send IPC after Send__delete__(). + MOZ_ASSERT(!self->CanSend()); + }))); + } else { + mozilla::Unused << Send__delete__(this); + } return 1; } return count; diff --git a/icecat/netwerk/protocol/http/ObliviousHttpChannel.cpp b/icecat/netwerk/protocol/http/ObliviousHttpChannel.cpp index b6c0b6ec40..8b7059426c 100644 --- a/icecat/netwerk/protocol/http/ObliviousHttpChannel.cpp +++ b/icecat/netwerk/protocol/http/ObliviousHttpChannel.cpp @@ -525,9 +525,6 @@ NS_IMETHODIMP ObliviousHttpChannel::AsyncOpen(nsIStreamListener* aListener) { LOG(("ObliviousHttpChannel::AsyncOpen [this=%p, listener=%p]", this, aListener)); - if (mStreamListener) { - return NS_ERROR_ALREADY_OPENED; - } mStreamListener = aListener; nsresult rv = mInnerChannel->SetRequestMethod("POST"_ns); if (NS_FAILED(rv)) { @@ -731,8 +728,7 @@ nsresult ObliviousHttpChannel::ProcessOnStopRequest() { getter_AddRefs(mBinaryHttpResponse)); } -void ObliviousHttpChannel::EmitOnDataAvailable( - nsIStreamListener* aStreamListener) { +void ObliviousHttpChannel::EmitOnDataAvailable() { if (!mBinaryHttpResponse) { return; } @@ -753,7 +749,7 @@ void ObliviousHttpChannel::EmitOnDataAvailable( if (NS_FAILED(rv)) { return; } - rv = aStreamListener->OnDataAvailable(this, contentStream, 0, contentLength); + rv = mStreamListener->OnDataAvailable(this, contentStream, 0, contentLength); Unused << rv; } @@ -763,7 +759,8 @@ ObliviousHttpChannel::OnStopRequest(nsIRequest* aRequest, LOG(("ObliviousHttpChannel::OnStopRequest [this=%p, request=%p, status=%u]", this, aRequest, (uint32_t)aStatusCode)); - nsCOMPtr listener = std::move(mStreamListener); + auto releaseStreamListener = MakeScopeExit( + [self = RefPtr{this}]() mutable { self->mStreamListener = nullptr; }); if (NS_SUCCEEDED(aStatusCode)) { bool requestSucceeded; @@ -772,11 +769,11 @@ ObliviousHttpChannel::OnStopRequest(nsIRequest* aRequest, aStatusCode = ProcessOnStopRequest(); } } - Unused << listener->OnStartRequest(this); + Unused << mStreamListener->OnStartRequest(this); if (NS_SUCCEEDED(aStatusCode)) { - EmitOnDataAvailable(listener); + EmitOnDataAvailable(); } - Unused << listener->OnStopRequest(this, aStatusCode); + Unused << mStreamListener->OnStopRequest(this, aStatusCode); return NS_OK; } diff --git a/icecat/netwerk/protocol/http/ObliviousHttpChannel.h b/icecat/netwerk/protocol/http/ObliviousHttpChannel.h index 4c32124fc8..9dc9c9f689 100644 --- a/icecat/netwerk/protocol/http/ObliviousHttpChannel.h +++ b/icecat/netwerk/protocol/http/ObliviousHttpChannel.h @@ -47,7 +47,7 @@ class ObliviousHttpChannel final : public nsIObliviousHttpChannel, ~ObliviousHttpChannel(); nsresult ProcessOnStopRequest(); - void EmitOnDataAvailable(nsIStreamListener*); + void EmitOnDataAvailable(); nsCOMPtr mTargetURI; nsTArray mEncodedConfig; diff --git a/icecat/netwerk/protocol/http/PHttpChannelParams.h b/icecat/netwerk/protocol/http/PHttpChannelParams.h index ff531ef44f..8e2840db68 100644 --- a/icecat/netwerk/protocol/http/PHttpChannelParams.h +++ b/icecat/netwerk/protocol/http/PHttpChannelParams.h @@ -10,7 +10,6 @@ #define ALLOW_LATE_NSHTTP_H_INCLUDE 1 #include "base/basictypes.h" -#include "ipc/EnumSerializer.h" #include "ipc/IPCMessageUtils.h" #include "ipc/IPCMessageUtilsSpecializations.h" #include "nsHttp.h" @@ -35,19 +34,6 @@ struct RequestHeaderTuple { typedef CopyableTArray RequestHeaderTuples; -struct HttpVersionValidator { - using IntegralType = std::underlying_type_t; - - static bool IsLegalValue(const IntegralType e) { - return e == static_cast(HttpVersion::UNKNOWN) || - e == static_cast(HttpVersion::v0_9) || - e == static_cast(HttpVersion::v1_0) || - e == static_cast(HttpVersion::v1_1) || - e == static_cast(HttpVersion::v2_0) || - e == static_cast(HttpVersion::v3_0); - } -}; - } // namespace net } // namespace mozilla @@ -75,18 +61,6 @@ struct ParamTraits { } }; -template <> -struct ParamTraits - : public EnumSerializer {}; - -template <> -struct ParamTraits - : public ContiguousEnumSerializerInclusive< - mozilla::net::nsHttpRequestHead::ParsedMethodType, - mozilla::net::nsHttpRequestHead::kMethod_Custom, - mozilla::net::nsHttpRequestHead::kMethod_Trace> {}; - template <> struct ParamTraits { typedef mozilla::net::nsHttpAtom paramType; @@ -218,29 +192,33 @@ struct ParamTraits { aParam.Enter(); WriteParam(aWriter, aParam.mHeaders); WriteParam(aWriter, aParam.mMethod); - WriteParam(aWriter, aParam.mVersion); + WriteParam(aWriter, static_cast(aParam.mVersion)); WriteParam(aWriter, aParam.mRequestURI); WriteParam(aWriter, aParam.mPath); WriteParam(aWriter, aParam.mOrigin); - WriteParam(aWriter, aParam.mParsedMethod); + WriteParam(aWriter, static_cast(aParam.mParsedMethod)); WriteParam(aWriter, aParam.mHTTPS); aParam.Exit(); } static bool Read(MessageReader* aReader, paramType* aResult) { + uint32_t version; + uint8_t method; aResult->Enter(); if (!ReadParam(aReader, &aResult->mHeaders) || !ReadParam(aReader, &aResult->mMethod) || - !ReadParam(aReader, &aResult->mVersion) || + !ReadParam(aReader, &version) || !ReadParam(aReader, &aResult->mRequestURI) || !ReadParam(aReader, &aResult->mPath) || !ReadParam(aReader, &aResult->mOrigin) || - !ReadParam(aReader, &aResult->mParsedMethod) || - !ReadParam(aReader, &aResult->mHTTPS)) { + !ReadParam(aReader, &method) || !ReadParam(aReader, &aResult->mHTTPS)) { aResult->Exit(); return false; } + aResult->mVersion = static_cast(version); + aResult->mParsedMethod = + static_cast(method); aResult->Exit(); return true; } @@ -256,7 +234,7 @@ struct ParamTraits { const paramType& aParam) MOZ_NO_THREAD_SAFETY_ANALYSIS { aParam.Enter(); WriteParam(aWriter, aParam.mHeaders); - WriteParam(aWriter, aParam.mVersion); + WriteParam(aWriter, static_cast(aParam.mVersion)); WriteParam(aWriter, aParam.mStatus); WriteParam(aWriter, aParam.mStatusText); WriteParam(aWriter, aParam.mContentLength); @@ -277,9 +255,10 @@ struct ParamTraits { } static bool Read(MessageReader* aReader, paramType* aResult) { + uint32_t version; aResult->Enter(); if (!ReadParam(aReader, &aResult->mHeaders) || - !ReadParam(aReader, &aResult->mVersion) || + !ReadParam(aReader, &version) || !ReadParam(aReader, &aResult->mStatus) || !ReadParam(aReader, &aResult->mStatusText) || !ReadParam(aReader, &aResult->mContentLength) || @@ -300,6 +279,7 @@ struct ParamTraits { return false; } + aResult->mVersion = static_cast(version); aResult->Exit(); return true; } diff --git a/icecat/netwerk/protocol/http/ReplacedHttpResponse.cpp b/icecat/netwerk/protocol/http/ReplacedHttpResponse.cpp index 0c35e4ef6d..e62834e6ec 100644 --- a/icecat/netwerk/protocol/http/ReplacedHttpResponse.cpp +++ b/icecat/netwerk/protocol/http/ReplacedHttpResponse.cpp @@ -53,18 +53,12 @@ ReplacedHttpResponse::SetResponseBody(const nsACString& aResponseBody) { NS_IMETHODIMP ReplacedHttpResponse::SetResponseHeader(const nsACString& header, const nsACString& value, bool merge) { - if (mInVisitHeaders) { - return NS_ERROR_FAILURE; - } return mResponseHeaders.SetHeader(header, value, merge, nsHttpHeaderArray::eVarietyResponse); } NS_IMETHODIMP ReplacedHttpResponse::VisitResponseHeaders(nsIHttpHeaderVisitor* visitor) { - mInVisitHeaders = true; - nsresult rv = mResponseHeaders.VisitHeaders(visitor); - mInVisitHeaders = false; - return rv; + return mResponseHeaders.VisitHeaders(visitor); } } // namespace mozilla::net diff --git a/icecat/netwerk/protocol/http/ReplacedHttpResponse.h b/icecat/netwerk/protocol/http/ReplacedHttpResponse.h index 97977f917e..a1666aa681 100644 --- a/icecat/netwerk/protocol/http/ReplacedHttpResponse.h +++ b/icecat/netwerk/protocol/http/ReplacedHttpResponse.h @@ -7,7 +7,6 @@ #include "nsString.h" #include "nsHttpHeaderArray.h" #include "nsIReplacedHttpResponse.h" -#include "mozilla/Atomics.h" namespace mozilla::net { @@ -25,7 +24,6 @@ class ReplacedHttpResponse : nsIReplacedHttpResponse { nsCString mResponseStatusText; nsCString mResponseBody; nsHttpHeaderArray mResponseHeaders; - Atomic mInVisitHeaders{false}; }; } // namespace mozilla::net diff --git a/icecat/netwerk/protocol/http/TLSTransportLayer.cpp b/icecat/netwerk/protocol/http/TLSTransportLayer.cpp index b73da57864..d2e9c4c078 100644 --- a/icecat/netwerk/protocol/http/TLSTransportLayer.cpp +++ b/icecat/netwerk/protocol/http/TLSTransportLayer.cpp @@ -508,16 +508,8 @@ TLSTransportLayer::OpenOutputStream(uint32_t aFlags, uint32_t aSegmentSize, NS_IMETHODIMP TLSTransportLayer::Close(nsresult aReason) { - bool onSocketThread = OnSocketThread(); - LOG(("TLSTransportLayer::Close [this=%p reason=%" PRIx32 "] sts=%d", this, - static_cast(aReason), onSocketThread)); - - if (!onSocketThread) { - gSocketTransportService->Dispatch(NS_NewRunnableFunction( - "TLSTransportLayer::Close", - [self = RefPtr{this}, aReason] { self->Close(aReason); })); - return NS_OK; - } + LOG(("TLSTransportLayer::Close [this=%p reason=%" PRIx32 "]\n", this, + static_cast(aReason))); mInputCallback = nullptr; mOutputCallback = nullptr; diff --git a/icecat/netwerk/protocol/http/nsHttpActivityDistributor.cpp b/icecat/netwerk/protocol/http/nsHttpActivityDistributor.cpp index ef2a89814d..cf1d7a2590 100644 --- a/icecat/netwerk/protocol/http/nsHttpActivityDistributor.cpp +++ b/icecat/netwerk/protocol/http/nsHttpActivityDistributor.cpp @@ -33,7 +33,6 @@ nsHttpActivityDistributor::ObserveActivity(nsISupports* aHttpChannel, uint64_t aExtraSizeData, const nsACString& aExtraStringData) { MOZ_ASSERT(XRE_IsParentProcess() && NS_IsMainThread()); - RefPtr self(this); for (size_t i = 0; i < mObservers.Length(); i++) { Unused << mObservers[i]->ObserveActivity(aHttpChannel, aActivityType, @@ -49,7 +48,6 @@ nsHttpActivityDistributor::ObserveConnectionActivity( bool aIsHttp3, uint32_t aActivityType, uint32_t aActivitySubtype, PRTime aTimestamp, const nsACString& aExtraStringData) { MOZ_ASSERT(XRE_IsParentProcess() && NS_IsMainThread()); - RefPtr self(this); for (size_t i = 0; i < mObservers.Length(); i++) { Unused << mObservers[i]->ObserveConnectionActivity( diff --git a/icecat/netwerk/protocol/http/nsHttpChannel.cpp b/icecat/netwerk/protocol/http/nsHttpChannel.cpp index 2a4f11ec35..c0ef1548f6 100644 --- a/icecat/netwerk/protocol/http/nsHttpChannel.cpp +++ b/icecat/netwerk/protocol/http/nsHttpChannel.cpp @@ -354,7 +354,6 @@ nsHttpChannel::nsHttpChannel() : HttpAsyncAborter(this) { } nsHttpChannel::~nsHttpChannel() { - MOZ_ASSERT(NS_IsMainThread(), "Must be released on main thread"); PROFILER_MARKER("~nsHttpChannel", NETWORK, {}, TerminatingFlowMarker, Flow::FromPointer(this)); LOG(("Destroying nsHttpChannel [this=%p, nsIChannel=%p]\n", this, @@ -374,11 +373,42 @@ nsHttpChannel::~nsHttpChannel() { MOZ_ASSERT(NS_SUCCEEDED(rv)); } + ReleaseMainThreadOnlyReferences(); if (gHttpHandler) { gHttpHandler->RemoveHttpChannel(mChannelId); } } +void nsHttpChannel::ReleaseMainThreadOnlyReferences() { + if (NS_IsMainThread()) { + // Already on main thread, let dtor to + // take care of releasing references + return; + } + + nsTArray> arrayToRelease; + arrayToRelease.AppendElement(mAuthProvider.forget()); + arrayToRelease.AppendElement(mRedirectChannel.forget()); + arrayToRelease.AppendElement(mPreflightChannel.forget()); + arrayToRelease.AppendElement(mDNSPrefetch.forget()); + + MOZ_DIAGNOSTIC_ASSERT( + !mEarlyHintObserver, + "Early hint observer should have been released in ReleaseListeners()"); + arrayToRelease.AppendElement(mEarlyHintObserver.forget()); + MOZ_DIAGNOSTIC_ASSERT( + !mChannelClassifier, + "Channel classifier should have been released in ReleaseListeners()"); + arrayToRelease.AppendElement( + mChannelClassifier.forget().downcast()); + MOZ_DIAGNOSTIC_ASSERT( + !mWarningReporter, + "Warning reporter should have been released in ReleaseListeners()"); + arrayToRelease.AppendElement(mWarningReporter.forget()); + + NS_DispatchToMainThread(new ProxyReleaseRunnable(std::move(arrayToRelease))); +} + nsresult nsHttpChannel::Init(nsIURI* uri, uint32_t caps, nsProxyInfo* proxyInfo, uint32_t proxyResolveFlags, nsIURI* proxyURI, uint64_t channelId, @@ -6199,29 +6229,7 @@ NS_IMETHODIMP nsHttpChannel::ConnectionRestartable(bool aRestartable) { //----------------------------------------------------------------------------- NS_IMPL_ADDREF_INHERITED(nsHttpChannel, HttpBaseChannel) -bool nsHttpChannel::DispatchRelease() { - if (NS_IsMainThread()) { - return false; - } - - NS_DispatchToMainThread( - NewNonOwningRunnableMethod("net::nsHttpChannel::Release", this, - &nsHttpChannel::Release), - NS_DISPATCH_NORMAL); - - return true; -} - -NS_IMETHODIMP_(MozExternalRefCountType) -nsHttpChannel::Release() { - nsrefcnt count = mRefCnt - 1; - if (DispatchRelease()) { - // Redispatched to the main thread. - return count; - } - - NS_IMPL_RELEASE_INHERITED_GUTS(nsHttpChannel, HttpBaseChannel); -} +NS_IMPL_RELEASE_INHERITED(nsHttpChannel, HttpBaseChannel) NS_INTERFACE_MAP_BEGIN(nsHttpChannel) NS_INTERFACE_MAP_ENTRY(nsIRequest) @@ -6653,10 +6661,6 @@ nsHttpChannel::GetSecurityInfo(nsITransportSecurityInfo** securityInfo) { // any error. NS_IMETHODIMP nsHttpChannel::AsyncOpen(nsIStreamListener* aListener) { - // doContentSecurityCheck and OnOpeningRequest fire observers that may - // spin nested event loops; hold a strong ref to this. - RefPtr self(this); - AUTO_PROFILER_FLOW_MARKER("nsHttpChannel::AsyncOpen", NETWORK, Flow::FromPointer(this)); nsCOMPtr listener = aListener; @@ -11318,11 +11322,9 @@ nsHttpChannel::EarlyHint(const nsACString& aLinkHeader, const nsACString& aCspHeader) { LOG(("nsHttpChannel::EarlyHint.\n")); - if (nsCOMPtr obs = mEarlyHintObserver) { - if (nsContentUtils::ComputeIsSecureContext(this)) { - LOG(("nsHttpChannel::EarlyHint propagated.\n")); - obs->EarlyHint(aLinkHeader, aReferrerPolicy, aCspHeader); - } + if (mEarlyHintObserver && nsContentUtils::ComputeIsSecureContext(this)) { + LOG(("nsHttpChannel::EarlyHint propagated.\n")); + mEarlyHintObserver->EarlyHint(aLinkHeader, aReferrerPolicy, aCspHeader); } return NS_OK; } diff --git a/icecat/netwerk/protocol/http/nsHttpChannel.h b/icecat/netwerk/protocol/http/nsHttpChannel.h index 47f355e0b9..fb16e050ef 100644 --- a/icecat/netwerk/protocol/http/nsHttpChannel.h +++ b/icecat/netwerk/protocol/http/nsHttpChannel.h @@ -306,7 +306,6 @@ class nsHttpChannel final : public HttpBaseChannel, // Based on the proxy configuration determine the strategy for resolving the // end server host name. ProxyDNSStrategy GetProxyDNSStrategy(); - bool DispatchRelease(); // We might synchronously or asynchronously call BeginConnect, // which includes DNS prefetch and speculative connection, according to @@ -522,9 +521,8 @@ class nsHttpChannel final : public HttpBaseChannel, void SetCachedContentType(); private: - // --- MAIN THREAD ONLY OBJECTS --- - // this section is for main-thread-only objects - // all the references need to be released on main thread. + // this section is for main-thread-only object + // all the references need to be proxy released on main thread. // auth specific data nsCOMPtr mAuthProvider; nsCOMPtr mRedirectURI; @@ -539,7 +537,8 @@ class nsHttpChannel final : public HttpBaseChannel, // state of whether tracking protection is enabled or not. RefPtr mChannelClassifier; - // --- END OF MAIN THREAD ONLY OBJECTS SECTION --- + // Proxy release all members above on main thread. + void ReleaseMainThreadOnlyReferences(); // Called after the channel is made aware of its tracking status in order // to readjust the referrer if needed according to the referrer default @@ -852,7 +851,7 @@ class nsHttpChannel final : public HttpBaseChannel, private: // cache telemetry bool mDidReval{false}; - nsCOMPtr mEarlyHintObserver; + RefPtr mEarlyHintObserver; Maybe mOpenerCallingScriptLocation; RefPtr mWebTransportSessionEventListener; nsMainThreadPtrHandle mOverrideResponse; diff --git a/icecat/netwerk/protocol/http/nsHttpConnection.cpp b/icecat/netwerk/protocol/http/nsHttpConnection.cpp index 8b41caea58..10cea76ea9 100644 --- a/icecat/netwerk/protocol/http/nsHttpConnection.cpp +++ b/icecat/netwerk/protocol/http/nsHttpConnection.cpp @@ -616,8 +616,7 @@ nsresult nsHttpConnection::Activate(nsAHttpTransaction* trans, uint32_t caps, rv = OnOutputStreamReady(mSocketOut); if (NS_SUCCEEDED(rv) && mContinueHandshakeDone) { - auto continuation = std::move(mContinueHandshakeDone); - continuation(); + mContinueHandshakeDone(); } mContinueHandshakeDone = nullptr; diff --git a/icecat/netwerk/protocol/http/nsHttpHandler.cpp b/icecat/netwerk/protocol/http/nsHttpHandler.cpp index e073141f6b..1556923941 100644 --- a/icecat/netwerk/protocol/http/nsHttpHandler.cpp +++ b/icecat/netwerk/protocol/http/nsHttpHandler.cpp @@ -2688,13 +2688,13 @@ void nsHttpHandler::ExcludeHttp2OrHttp3Internal( MOZ_ASSERT_IF(!nsIOService::UseSocketProcess(), OnSocketThread()); if (ci->IsHttp3()) { - { + if (!mExcludedHttp3Origins.Contains(ci->GetRoutedHost())) { MutexAutoLock lock(mHttpExclusionLock); mExcludedHttp3Origins.Insert(ci->GetRoutedHost()); } mConnMgr->ExcludeHttp3(ci); } else { - { + if (!mExcludedHttp2Origins.Contains(ci->GetOrigin())) { MutexAutoLock lock(mHttpExclusionLock); mExcludedHttp2Origins.Insert(ci->GetOrigin()); } diff --git a/icecat/netwerk/protocol/http/nsHttpHandler.h b/icecat/netwerk/protocol/http/nsHttpHandler.h index a880c5b8f7..b329ec8dad 100644 --- a/icecat/netwerk/protocol/http/nsHttpHandler.h +++ b/icecat/netwerk/protocol/http/nsHttpHandler.h @@ -803,7 +803,7 @@ class nsHttpHandler final : public nsIHttpProtocolHandler, "nsHttpConnectionMgr::LastActiveTabLoadOptimization"}; TimeStamp mLastActiveTabLoadOptimizationHit; - Mutex mHttpExclusionLock{"nsHttpHandler::HttpExclusion"}; + Mutex mHttpExclusionLock MOZ_UNANNOTATED{"nsHttpHandler::HttpExclusion"}; public: [[nodiscard]] nsresult NewChannelId(uint64_t& channelId); @@ -826,10 +826,8 @@ class nsHttpHandler final : public nsIHttpProtocolHandler, #endif private: - nsTHashSet mExcludedHttp2Origins - MOZ_GUARDED_BY(mHttpExclusionLock); - nsTHashSet mExcludedHttp3Origins - MOZ_GUARDED_BY(mHttpExclusionLock); + nsTHashSet mExcludedHttp2Origins; + nsTHashSet mExcludedHttp3Origins; nsTHashSet mExcluded0RttTcpOrigins; // A set of hosts that we should not upgrade to HTTPS with HTTPS RR. nsTHashSet mExcludedHostsForHTTPSRRUpgrade; diff --git a/icecat/netwerk/protocol/http/nsHttpResponseHead.cpp b/icecat/netwerk/protocol/http/nsHttpResponseHead.cpp index 23d31432d8..f457ac7e23 100644 --- a/icecat/netwerk/protocol/http/nsHttpResponseHead.cpp +++ b/icecat/netwerk/protocol/http/nsHttpResponseHead.cpp @@ -293,25 +293,6 @@ void nsHttpResponseHead::FlattenNetworkOriginalHeaders(nsACString& buf) { mHeaders.FlattenOriginalHeader(buf); } -class ResponseHeaderVisitor : public nsIHttpHeaderVisitor { - using callbackType = - std::function; - NS_DECL_ISUPPORTS - explicit ResponseHeaderVisitor(callbackType&& aCallback) - : mCallback(std::move(aCallback)) {} - - NS_IMETHOD VisitHeader(const nsACString& aName, - const nsACString& aValue) override { - mCallback(aName, aValue); - return NS_OK; - } - - private: - virtual ~ResponseHeaderVisitor() = default; - callbackType mCallback; -}; -NS_IMPL_ISUPPORTS(ResponseHeaderVisitor, nsIHttpHeaderVisitor) - nsresult nsHttpResponseHead::ParseCachedHead(const char* block) { RecursiveMutexAutoLock monitor(mRecursiveMutex); LOG(("nsHttpResponseHead::ParseCachedHead [this=%p]\n", this)); @@ -337,15 +318,6 @@ nsresult nsHttpResponseHead::ParseCachedHead(const char* block) { } while (true); - // fixup content-type header. - mContentTypeBuffer.Truncate(); - RefPtr visitor = new ResponseHeaderVisitor( - [&](const nsACString& aName, const nsACString& aValue) - MOZ_REQUIRES(mRecursiveMutex) { - MOZ_ASSERT(nsHttp::Content_Type.val().EqualsIgnoreCase(aName)); - ParseContentTypeValue(nsHttp::ResolveAtom(aName), aValue); - }); - (void)mHeaders.GetOriginalHeader(nsHttp::Content_Type, visitor); return NS_OK; } @@ -472,33 +444,6 @@ nsresult nsHttpResponseHead::ParseHeaderLine(const nsACString& line) { return ParseHeaderLine_locked(line, true); } -void nsHttpResponseHead::ParseContentTypeValue(const nsHttpAtom& aAtom, - const nsACString& aValue) { - if (!mContentTypeBuffer.IsEmpty()) { - mContentTypeBuffer.AppendLiteral(","); - } - mContentTypeBuffer.Append(aValue); - mContentType.Truncate(); - mContentCharset.Truncate(); - if (CMimeType::Parse(mContentTypeBuffer, mContentType, mContentCharset)) { - } else if (StaticPrefs::network_http_fallback_to_net_parse_ct()) { - bool dummy; - net_ParseContentType(aValue, mContentType, mContentCharset, &dummy); - } - LOG(("ParseContentType [input=%s, type=%s, charset=%s]\n", - nsPromiseFlatCString(aValue).get(), mContentType.get(), - mContentCharset.get())); - - nsAutoCString existingHeader; - if (NS_SUCCEEDED(mHeaders.GetHeader(aAtom, existingHeader)) && - existingHeader != mContentTypeBuffer) { - // Always set the header to the merged buffer, as per Fetch spec. - DebugOnly rv = mHeaders.SetHeader( - aAtom, mContentTypeBuffer, false, nsHttpHeaderArray::eVarietyResponse); - MOZ_ASSERT(NS_SUCCEEDED(rv)); - } -} - nsresult nsHttpResponseHead::ParseHeaderLine_locked( const nsACString& line, bool originalFromNetHeaders) { nsHttpAtom hdr; @@ -542,7 +487,14 @@ nsresult nsHttpResponseHead::ParseHeaderLine_locked( } } else if (hdr == nsHttp::Content_Type) { - ParseContentTypeValue(hdr, val); + if (StaticPrefs::network_standard_content_type_parsing_response_headers() && + CMimeType::Parse(val, mContentType, mContentCharset)) { + } else { + bool dummy; + net_ParseContentType(val, mContentType, mContentCharset, &dummy); + } + LOG(("ParseContentType [input=%s, type=%s, charset=%s]\n", val.get(), + mContentType.get(), mContentCharset.get())); } else if (hdr == nsHttp::Cache_Control) { ParseCacheControl(mHeaders.PeekHeader(hdr)); } else if (hdr == nsHttp::Pragma) { diff --git a/icecat/netwerk/protocol/http/nsHttpResponseHead.h b/icecat/netwerk/protocol/http/nsHttpResponseHead.h index 6a4eb21cd1..9c320ffc71 100644 --- a/icecat/netwerk/protocol/http/nsHttpResponseHead.h +++ b/icecat/netwerk/protocol/http/nsHttpResponseHead.h @@ -160,9 +160,6 @@ class nsHttpResponseHead { // https://fetch.spec.whatwg.org/#content-length-header nsresult ParseResponseContentLength(const nsACString& aHeaderStr) MOZ_REQUIRES(mRecursiveMutex); - void ParseContentTypeValue(const nsHttpAtom& aAtom, - const nsACString& aContentTypeValue) - MOZ_REQUIRES(mRecursiveMutex); nsresult ParseStatusLine_locked(const nsACString& line) MOZ_REQUIRES(mRecursiveMutex); @@ -213,7 +210,6 @@ class nsHttpResponseHead { uint16_t mStatus MOZ_GUARDED_BY(mRecursiveMutex){200}; nsCString mStatusText MOZ_GUARDED_BY(mRecursiveMutex); int64_t mContentLength MOZ_GUARDED_BY(mRecursiveMutex){-1}; - nsCString mContentTypeBuffer MOZ_GUARDED_BY(mRecursiveMutex); nsCString mContentType MOZ_GUARDED_BY(mRecursiveMutex); nsCString mContentCharset MOZ_GUARDED_BY(mRecursiveMutex); bool mHasCacheControl MOZ_GUARDED_BY(mRecursiveMutex){false}; diff --git a/icecat/netwerk/protocol/http/nsHttpTransaction.cpp b/icecat/netwerk/protocol/http/nsHttpTransaction.cpp index 0548cf9df9..5fd92b6000 100644 --- a/icecat/netwerk/protocol/http/nsHttpTransaction.cpp +++ b/icecat/netwerk/protocol/http/nsHttpTransaction.cpp @@ -208,8 +208,8 @@ nsresult nsHttpTransaction::Init( if (NS_FAILED(rv)) return rv; - mConnInfo = cinfo->Clone(); - mFinalizedConnInfo = mConnInfo; + mConnInfo = cinfo; + mFinalizedConnInfo = cinfo; mCallbacks = callbacks; mConsumerTarget = target; mCaps = caps; diff --git a/icecat/netwerk/protocol/moz.build b/icecat/netwerk/protocol/moz.build index 303e7bc136..aa3200c856 100644 --- a/icecat/netwerk/protocol/moz.build +++ b/icecat/netwerk/protocol/moz.build @@ -4,13 +4,7 @@ # 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/. -DIRS += [ - "about", - "data", - "file", - "http", - "res", - "viewsource", - "websocket", - "webtransport", -] +DIRS += ["about", "data", "file"] +if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": + DIRS += ["gio"] +DIRS += ["http", "res", "viewsource", "websocket", "webtransport"] diff --git a/icecat/netwerk/protocol/res/ExtensionProtocolHandler.cpp b/icecat/netwerk/protocol/res/ExtensionProtocolHandler.cpp index 63ca93504e..5d5a6ea697 100644 --- a/icecat/netwerk/protocol/res/ExtensionProtocolHandler.cpp +++ b/icecat/netwerk/protocol/res/ExtensionProtocolHandler.cpp @@ -9,8 +9,6 @@ #include "mozilla/BinarySearch.h" #include "mozilla/Components.h" #include "mozilla/ClearOnShutdown.h" -#include "mozilla/StaticMutex.h" -#include "nsThreadUtils.h" #include "mozilla/dom/Promise.h" #include "mozilla/dom/Promise-inl.h" #include "mozilla/ExtensionPolicyService.h" @@ -22,7 +20,6 @@ #include "mozilla/Omnijar.h" #include "mozilla/RefPtr.h" #include "mozilla/ResultExtensions.h" -#include "mozilla/SyncRunnable.h" #include "mozilla/Try.h" #include "FileDescriptorFile.h" @@ -388,24 +385,9 @@ NS_IMPL_RELEASE_INHERITED(ExtensionProtocolHandler, SubstitutingProtocolHandler) already_AddRefed ExtensionProtocolHandler::GetSingleton() { - static StaticMutex sMutex; - StaticMutexAutoLock lock(sMutex); if (!sSingleton) { - if (NS_IsMainThread()) { - sSingleton = new ExtensionProtocolHandler(); - ClearOnShutdown(&sSingleton); - } else { - StaticMutexAutoUnlock unlock(sMutex); - RefPtr r = NS_NewRunnableFunction( - "ExtensionProtocolHandler::GetSingleton", []() { - StaticMutexAutoLock lock(sMutex); - if (!sSingleton) { - sSingleton = new ExtensionProtocolHandler(); - ClearOnShutdown(&sSingleton); - } - }); - SyncRunnable::DispatchToThread(GetMainThreadSerialEventTarget(), r); - } + sSingleton = new ExtensionProtocolHandler(); + ClearOnShutdown(&sSingleton); } return do_AddRef(sSingleton); } diff --git a/icecat/netwerk/protocol/res/MozSrcProtocolHandler.cpp b/icecat/netwerk/protocol/res/MozSrcProtocolHandler.cpp index 000694cef1..2ace95741c 100644 --- a/icecat/netwerk/protocol/res/MozSrcProtocolHandler.cpp +++ b/icecat/netwerk/protocol/res/MozSrcProtocolHandler.cpp @@ -6,7 +6,6 @@ #include "mozilla/ModuleUtils.h" #include "mozilla/ClearOnShutdown.h" #include "mozilla/Omnijar.h" -#include "nsThreadUtils.h" #include "MozSrcProtocolHandler.h" @@ -20,31 +19,16 @@ NS_IMPL_QUERY_INTERFACE(MozSrcProtocolHandler, nsISubstitutingProtocolHandler, NS_IMPL_ADDREF_INHERITED(MozSrcProtocolHandler, SubstitutingProtocolHandler) NS_IMPL_RELEASE_INHERITED(MozSrcProtocolHandler, SubstitutingProtocolHandler) -mozilla::StaticMutex MozSrcProtocolHandler::sMutex; mozilla::StaticRefPtr MozSrcProtocolHandler::sSingleton; already_AddRefed MozSrcProtocolHandler::GetSingleton() { - StaticMutexAutoLock lock(sMutex); if (!sSingleton) { RefPtr handler = new MozSrcProtocolHandler(); if (NS_WARN_IF(NS_FAILED(handler->Init()))) { return nullptr; } sSingleton = handler; - auto prevent_shutdown_race = [] { - StaticMutexAutoLock lock(sMutex); - sSingleton = nullptr; - }; - if (NS_IsMainThread()) { - RunOnShutdown(std::move(prevent_shutdown_race)); - } else { - NS_DispatchToMainThread(NS_NewRunnableFunction( - "MozSrcProtocolHandler::RunOnShutdown", - [prevent_shutdown_race = - std::move(prevent_shutdown_race)]() mutable { - RunOnShutdown(std::move(prevent_shutdown_race)); - })); - } + ClearOnShutdown(&sSingleton); } return do_AddRef(sSingleton); } diff --git a/icecat/netwerk/protocol/res/MozSrcProtocolHandler.h b/icecat/netwerk/protocol/res/MozSrcProtocolHandler.h index 8037b8fe36..14845c7ef3 100644 --- a/icecat/netwerk/protocol/res/MozSrcProtocolHandler.h +++ b/icecat/netwerk/protocol/res/MozSrcProtocolHandler.h @@ -8,7 +8,6 @@ #include "nsIProtocolHandler.h" #include "nsISubstitutingProtocolHandler.h" -#include "mozilla/StaticMutex.h" #include "SubstitutingProtocolHandler.h" namespace mozilla { @@ -38,9 +37,7 @@ class MozSrcProtocolHandler final : public nsISubstitutingProtocolHandler, nsIURI** aResult) override; private: - static mozilla::StaticMutex sMutex; - static mozilla::StaticRefPtr sSingleton - MOZ_GUARDED_BY(sMutex); + static mozilla::StaticRefPtr sSingleton; nsresult Init(); nsCString mGREURI; diff --git a/icecat/netwerk/protocol/res/nsResProtocolHandler.cpp b/icecat/netwerk/protocol/res/nsResProtocolHandler.cpp index 8e1b3c0bb1..568f929f35 100644 --- a/icecat/netwerk/protocol/res/nsResProtocolHandler.cpp +++ b/icecat/netwerk/protocol/res/nsResProtocolHandler.cpp @@ -27,7 +27,6 @@ using mozilla::dom::ContentParent; mozilla::StaticRefPtr nsResProtocolHandler::sSingleton; already_AddRefed nsResProtocolHandler::GetSingleton() { - MOZ_ASSERT(NS_IsMainThread() || sSingleton); if (!sSingleton) { RefPtr handler = new nsResProtocolHandler(); if (NS_WARN_IF(NS_FAILED(handler->Init()))) { diff --git a/icecat/netwerk/protocol/websocket/WebSocketChannelChild.cpp b/icecat/netwerk/protocol/websocket/WebSocketChannelChild.cpp index b57f817288..8ded3296bf 100644 --- a/icecat/netwerk/protocol/websocket/WebSocketChannelChild.cpp +++ b/icecat/netwerk/protocol/websocket/WebSocketChannelChild.cpp @@ -29,20 +29,20 @@ NS_IMPL_ADDREF(WebSocketChannelChild) NS_IMETHODIMP_(MozExternalRefCountType) WebSocketChannelChild::Release() { MOZ_ASSERT(0 != mRefCnt, "dup release"); - nsrefcnt count = --mRefCnt; + --mRefCnt; NS_LOG_RELEASE(this, mRefCnt, "WebSocketChannelChild"); - if (count == 1) { + if (mRefCnt == 1) { MaybeReleaseIPCObject(); return mRefCnt; } - if (count == 0) { + if (mRefCnt == 0) { mRefCnt = 1; /* stabilize */ delete this; return 0; } - return count; + return mRefCnt; } NS_INTERFACE_MAP_BEGIN(WebSocketChannelChild) @@ -95,15 +95,6 @@ void WebSocketChannelChild::ReleaseIPDLReference() { } void WebSocketChannelChild::MaybeReleaseIPCObject() { - if (!NS_IsMainThread()) { - nsCOMPtr target = GetNeckoTarget(); - MOZ_ALWAYS_SUCCEEDS(target->Dispatch( - NewRunnableMethod("WebSocketChannelChild::MaybeReleaseIPCObject", this, - &WebSocketChannelChild::MaybeReleaseIPCObject), - NS_DISPATCH_NORMAL)); - return; - } - { MutexAutoLock lock(mMutex); if (mIPCState != Opened) { @@ -113,6 +104,15 @@ void WebSocketChannelChild::MaybeReleaseIPCObject() { mIPCState = Closing; } + if (!NS_IsMainThread()) { + nsCOMPtr target = GetNeckoTarget(); + MOZ_ALWAYS_SUCCEEDS(target->Dispatch( + NewRunnableMethod("WebSocketChannelChild::MaybeReleaseIPCObject", this, + &WebSocketChannelChild::MaybeReleaseIPCObject), + NS_DISPATCH_NORMAL)); + return; + } + SendDeleteSelf(); } diff --git a/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp b/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp index 9f14e76574..ef6bf1c4d2 100644 --- a/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp +++ b/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.cpp @@ -135,12 +135,13 @@ nsresult WebTransportSessionProxy::AsyncConnectWithClient( mDedicatedConnection = aDedicated; + if (!aServerCertHashes.IsEmpty()) { + mServerCertHashes.Clear(); + mServerCertHashes.AppendElements(aServerCertHashes); + } + { MutexAutoLock lock(mMutex); - if (!aServerCertHashes.IsEmpty()) { - mServerCertHashes.Clear(); - mServerCertHashes.AppendElements(aServerCertHashes); - } ChangeState(WebTransportSessionProxyState::NEGOTIATING); } @@ -220,29 +221,17 @@ WebTransportSessionProxy::CloseSession(uint32_t status, case WebTransportSessionProxyState::INIT: case WebTransportSessionProxyState::DONE: return NS_ERROR_NOT_INITIALIZED; - case WebTransportSessionProxyState::NEGOTIATING: { - nsCOMPtr channel = mChannel; + case WebTransportSessionProxyState::NEGOTIATING: + mChannel->Cancel(NS_ERROR_ABORT); mChannel = nullptr; ChangeState(WebTransportSessionProxyState::DONE); - NS_DispatchToMainThread(NS_NewRunnableFunction( - "WebTransportSessionProxy::CancelChannel", - [channel = std::move(channel)]() { - channel->Cancel(NS_ERROR_ABORT); - })); break; - } - case WebTransportSessionProxyState::NEGOTIATING_SUCCEEDED: { - nsCOMPtr channel = mChannel; + case WebTransportSessionProxyState::NEGOTIATING_SUCCEEDED: + mChannel->Cancel(NS_ERROR_ABORT); mChannel = nullptr; ChangeState(WebTransportSessionProxyState::SESSION_CLOSE_PENDING); - NS_DispatchToMainThread(NS_NewRunnableFunction( - "WebTransportSessionProxy::CancelChannel", - [channel = std::move(channel)]() { - channel->Cancel(NS_ERROR_ABORT); - })); CloseSessionInternal(); break; - } case WebTransportSessionProxyState::ACTIVE: ChangeState(WebTransportSessionProxyState::SESSION_CLOSE_PENDING); CloseSessionInternal(); @@ -263,7 +252,6 @@ NS_IMETHODIMP WebTransportSessionProxy::GetDedicated(bool* dedicated) { NS_IMETHODIMP WebTransportSessionProxy::GetServerCertificateHashes( nsTArray>& aServerCertHashes) { - MutexAutoLock lock(mMutex); aServerCertHashes.Clear(); aServerCertHashes.AppendElements(mServerCertHashes); return NS_OK; diff --git a/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.h b/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.h index ca8f5cdaea..205e479f3d 100644 --- a/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.h +++ b/icecat/netwerk/protocol/webtransport/WebTransportSessionProxy.h @@ -191,8 +191,7 @@ class WebTransportSessionProxy final nsTArray> mPendingCreateStreamEvents MOZ_GUARDED_BY(mMutex); nsCOMPtr mTarget MOZ_GUARDED_BY(mMutex); - nsTArray> mServerCertHashes - MOZ_GUARDED_BY(mMutex); + nsTArray> mServerCertHashes; bool mDedicatedConnection; // for WebTranport nsIWebTransport::HTTPVersion mHTTPVersion = nsIWebTransport::HTTPVersion::h3; }; diff --git a/icecat/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp b/icecat/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp index 3fed8c3d8a..e6a87ccf73 100644 --- a/icecat/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp +++ b/icecat/netwerk/streamconv/converters/mozTXTToHTMLConv.cpp @@ -567,13 +567,10 @@ bool mozTXTToHTMLConv::ItMatchesDelimited(const char16_t* aInString, } int32_t afterIndex = aRepLen + ignoreLen; - uint32_t textAfterPos = 0; - if (afterIndex < aInLength) { - textAfterPos = aInString[afterIndex]; - if (aInLength > afterIndex + 1 && - NS_IS_SURROGATE_PAIR(textAfterPos, aInString[afterIndex + 1])) { - textAfterPos = SURROGATE_TO_UCS4(textAfterPos, aInString[afterIndex + 1]); - } + uint32_t textAfterPos = aInString[afterIndex]; + if (aInLength > afterIndex + 1 && + NS_IS_SURROGATE_PAIR(textAfterPos, aInString[afterIndex + 1])) { + textAfterPos = SURROGATE_TO_UCS4(textAfterPos, aInString[afterIndex + 1]); } return !((before == LT_ALPHA && !IsAlpha(text0)) || diff --git a/icecat/netwerk/system/mac/nsNetworkLinkService.mm b/icecat/netwerk/system/mac/nsNetworkLinkService.mm index 76d61a3d55..09fb894026 100644 --- a/icecat/netwerk/system/mac/nsNetworkLinkService.mm +++ b/icecat/netwerk/system/mac/nsNetworkLinkService.mm @@ -711,26 +711,9 @@ void nsNetworkLinkService::NetworkConfigChanged(SCDynamicStoreRef aStoreREf, bool ipConfigChanged = false; bool dnsConfigChanged = false; - bool skipOnIPConfigChanged = false; for (CFIndex i = 0; i < CFArrayGetCount(aChangedKeys); ++i) { CFStringRef key = static_cast(CFArrayGetValueAtIndex(aChangedKeys, i)); - // Don't call OnIPConfigChanged() if aChangedKeys contains any EAPOL - // notifications. This works around a crash bug deep in macOS system - // code. Our observers should still get reachability notifications, so - // this shouldn't interfere with network functionality. - if (CFStringHasSuffix(key, CFSTR("EAPOL"))) { - CFIndex keyMaxLength = - CFStringGetMaximumSizeForEncoding(CFStringGetLength(key), - kCFStringEncodingUTF8) + - 1; - char* keyBuffer = static_cast(moz_xmalloc(keyMaxLength)); - keyBuffer[0] = 0; - CFStringGetCString(key, keyBuffer, keyMaxLength, kCFStringEncodingUTF8); - LOG(("Skipping OnIPConfigChanged() on changed key %s", keyBuffer)); - free(keyBuffer); - skipOnIPConfigChanged = true; - } if (CFStringHasSuffix(key, kSCEntNetIPv4) || CFStringHasSuffix(key, kSCEntNetIPv6)) { ipConfigChanged = true; @@ -741,7 +724,7 @@ void nsNetworkLinkService::NetworkConfigChanged(SCDynamicStoreRef aStoreREf, } nsNetworkLinkService* service = static_cast(aInfo); - if (ipConfigChanged && !skipOnIPConfigChanged) { + if (ipConfigChanged) { service->OnIPConfigChanged(); } @@ -820,8 +803,7 @@ nsresult nsNetworkLinkService::Init(void) { ::SCDynamicStoreCreate(nullptr, CFSTR("IPAndDNSChangeCallbackSCF"), NetworkConfigChanged, &storeContext); - CFStringRef patterns[6] = {nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr}; + CFStringRef patterns[4] = {nullptr, nullptr, nullptr, nullptr}; OSStatus err = getErrorCodePtr(mStoreRef); if (err == noErr) { // This pattern is "State:/Network/Service/[^/]+/IPv4". @@ -836,16 +818,7 @@ nsresult nsNetworkLinkService::Init(void) { // This pattern is "Setup:/Network/Service/[^/]+/DNS". patterns[3] = ::SCDynamicStoreKeyCreateNetworkServiceEntity( nullptr, kSCDynamicStoreDomainSetup, kSCCompAnyRegex, kSCEntNetDNS); - // We want to be able to ignore some groups of notifications that contain - // "EAPOL" keys. This works around a crash bug deep in macOS system code. - // This pattern is "State:/Network/Service/[^/]+/EAPOL". - patterns[4] = ::SCDynamicStoreKeyCreateNetworkServiceEntity( - nullptr, kSCDynamicStoreDomainState, kSCCompAnyRegex, CFSTR("EAPOL")); - // This pattern is "State:/Network/Interface/[^/]+/EAPOL". - patterns[5] = ::SCDynamicStoreKeyCreateNetworkInterfaceEntity( - nullptr, kSCDynamicStoreDomainState, kSCCompAnyRegex, CFSTR("EAPOL")); - if (!patterns[0] || !patterns[1] || !patterns[2] || !patterns[3] || - !patterns[4] || !patterns[5]) { + if (!patterns[0] || !patterns[1] || !patterns[2] || !patterns[3]) { err = -1; } } @@ -856,7 +829,7 @@ nsresult nsNetworkLinkService::Init(void) { // that match that pattern list, then create our run loop // source. if (err == noErr) { - patternList = ::CFArrayCreate(nullptr, (const void**)patterns, 6, + patternList = ::CFArrayCreate(nullptr, (const void**)patterns, 4, &kCFTypeArrayCallBacks); if (!patternList) { err = -1; @@ -876,8 +849,6 @@ nsresult nsNetworkLinkService::Init(void) { CFReleaseSafe(patterns[1]); CFReleaseSafe(patterns[2]); CFReleaseSafe(patterns[3]); - CFReleaseSafe(patterns[4]); - CFReleaseSafe(patterns[5]); CFReleaseSafe(patternList); if (err != noErr) { diff --git a/icecat/netwerk/test/unit/client-cert.p12 b/icecat/netwerk/test/unit/client-cert.p12 index 24329d33f3..a5310bb74f 100644 Binary files a/icecat/netwerk/test/unit/client-cert.p12 and b/icecat/netwerk/test/unit/client-cert.p12 differ diff --git a/icecat/netwerk/test/unit/test_gio_protocol.js b/icecat/netwerk/test/unit/test_gio_protocol.js new file mode 100644 index 0000000000..2d3250c203 --- /dev/null +++ b/icecat/netwerk/test/unit/test_gio_protocol.js @@ -0,0 +1,201 @@ +/* run some tests on the gvfs/gio protocol handler */ + +"use strict"; + +function inChildProcess() { + return Services.appinfo.processType != Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT; +} + +const PR_RDONLY = 0x1; // see prio.h + +[ + do_test_read_data_dir, + do_test_read_recent, + test_read_file, + do_test_finished, +].forEach(f => add_test(f)); + +function setup() { + // Allowing some protocols to get a channel + if (!inChildProcess()) { + Services.prefs.setCharPref( + "network.gio.supported-protocols", + "localtest:,recent:" + ); + } else { + do_send_remote_message("gio-allow-test-protocols"); + do_await_remote_message("gio-allow-test-protocols-done"); + } +} + +setup(); + +registerCleanupFunction(() => { + // Resetting the protocols to None + if (!inChildProcess()) { + Services.prefs.clearUserPref("network.gio.supported-protocols"); + } +}); + +function new_file_input_stream(file, buffered) { + var stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance( + Ci.nsIFileInputStream + ); + stream.init(file, PR_RDONLY, 0, 0); + if (!buffered) { + return stream; + } + + var buffer = Cc[ + "@mozilla.org/network/buffered-input-stream;1" + ].createInstance(Ci.nsIBufferedInputStream); + buffer.init(stream, 4096); + return buffer; +} + +function new_file_channel(file) { + var chan = NetUtil.newChannel({ + uri: file, + loadUsingSystemPrincipal: true, + }); + + return chan; +} + +/* + * stream listener + * this listener has some additional file-specific tests, so we can't just use + * ChannelListener here. + */ +function FileStreamListener(closure) { + this._closure = closure; +} +FileStreamListener.prototype = { + _closure: null, + _buffer: "", + _got_onstartrequest: false, + _got_onstoprequest: false, + _contentLen: -1, + + QueryInterface: ChromeUtils.generateQI([ + "nsIStreamListener", + "nsIRequestObserver", + ]), + + onStartRequest() { + if (this._got_onstartrequest) { + do_throw("Got second onStartRequest event!"); + } + this._got_onstartrequest = true; + }, + + onDataAvailable(request, stream, offset, count) { + if (!this._got_onstartrequest) { + do_throw("onDataAvailable without onStartRequest event!"); + } + if (this._got_onstoprequest) { + do_throw("onDataAvailable after onStopRequest event!"); + } + if (!request.isPending()) { + do_throw("request reports itself as not pending from onStartRequest!"); + } + + this._buffer = this._buffer.concat(read_stream(stream, count)); + }, + + onStopRequest(request, status) { + if (!this._got_onstartrequest) { + do_throw("onStopRequest without onStartRequest event!"); + } + if (this._got_onstoprequest) { + do_throw("Got second onStopRequest event!"); + } + this._got_onstoprequest = true; + if (!Components.isSuccessCode(status)) { + do_throw("Failed to load file: " + status.toString(16)); + } + if (status != request.status) { + do_throw("request.status does not match status arg to onStopRequest!"); + } + if (request.isPending()) { + do_throw("request reports itself as pending from onStopRequest!"); + } + if (this._contentLen != -1 && this._buffer.length != this._contentLen) { + do_throw("did not read nsIChannel.contentLength number of bytes!"); + } + + this._closure(this._buffer); + }, +}; + +function test_read_file() { + dump("*** test_read_file\n"); + // Going via parent path, because this is opended from test/unit/ and test/unit_ipc/ + var file = do_get_file("../unit/data/test_readline4.txt"); + var chan = new_file_channel("localtest://" + file.path); + + function on_read_complete(data) { + dump("*** test_read_file.on_read_complete()\n"); + /* read completed successfully. now read data directly from file, + and compare the result. */ + var stream = new_file_input_stream(file, false); + var result = read_stream(stream, stream.available()); + if (result != data) { + do_throw("Stream contents do not match with direct read!"); + } + run_next_test(); + } + + chan.asyncOpen(new FileStreamListener(on_read_complete)); +} + +function do_test_read_data_dir() { + dump('*** test_read_data_dir("../data/")\n'); + + var dir = do_get_file("../unit/data/"); + var chan = new_file_channel("localtest://" + dir.path); + + function on_read_complete(data) { + dump("*** test_read_data_dir.on_read_complete()\n"); + + // The data-directory should be listed, containing a header-line and the files therein + if ( + !( + data.includes("200: filename content-length last-modified file-type") && + data.includes("201: test_readline1.txt") && + data.includes("201: test_readline2.txt") + ) + ) { + do_throw( + "test_read_data_dir() - Bad data! Does not contain needles! Is <" + + data + + ">" + ); + } + run_next_test(); + } + chan.asyncOpen(new FileStreamListener(on_read_complete)); +} + +function do_test_read_recent() { + dump('*** test_read_recent("recent://")\n'); + + var chan = new_file_channel("recent:///"); + + function on_read_complete(data) { + dump("*** test_read_recent.on_read_complete()\n"); + + // The data-directory should be listed, containing a header-line and the files therein + if ( + !data.includes("200: filename content-length last-modified file-type") + ) { + do_throw( + "do_test_read_recent() - Bad data! Does not contain header! Is <" + + data + + ">" + ); + } + run_next_test(); + } + chan.asyncOpen(new FileStreamListener(on_read_complete)); +} diff --git a/icecat/netwerk/test/unit/xpcshell.toml b/icecat/netwerk/test/unit/xpcshell.toml index a68e9db436..8ce5983e93 100644 --- a/icecat/netwerk/test/unit/xpcshell.toml +++ b/icecat/netwerk/test/unit/xpcshell.toml @@ -623,6 +623,9 @@ run-if = ["!socketprocess_networking"] # cancel connections doesn't work in sock ["test_getHost.js"] +["test_gio_protocol.js"] +run-if = ["os == 'linux'"] + ["test_gre_resources.js"] ["test_h2proxy_connection_limit.js"] diff --git a/icecat/netwerk/test/unit_ipc/test_gio_protocol_wrap.js b/icecat/netwerk/test/unit_ipc/test_gio_protocol_wrap.js new file mode 100644 index 0000000000..e6e2c42bc2 --- /dev/null +++ b/icecat/netwerk/test/unit_ipc/test_gio_protocol_wrap.js @@ -0,0 +1,21 @@ +// +// Run test script in content process instead of chrome (xpcshell's default) +// +// + +function run_test() { + Services.prefs.setCharPref( + "network.gio.supported-protocols", + "localtest:,recent:" + ); + + do_await_remote_message("gio-allow-test-protocols").then(() => { + do_send_remote_message("gio-allow-test-protocols-done"); + }); + + run_test_in_child("../unit/test_gio_protocol.js"); +} + +registerCleanupFunction(() => { + Services.prefs.clearUserPref("network.gio.supported-protocols"); +}); diff --git a/icecat/netwerk/test/unit_ipc/xpcshell.toml b/icecat/netwerk/test/unit_ipc/xpcshell.toml index 875cb5a8c3..a27fb4af64 100644 --- a/icecat/netwerk/test/unit_ipc/xpcshell.toml +++ b/icecat/netwerk/test/unit_ipc/xpcshell.toml @@ -17,6 +17,7 @@ support-files = [ "!/netwerk/test/unit/test_duplicate_headers.js", "!/netwerk/test/unit/test_event_sink.js", "!/netwerk/test/unit/test_getHost.js", + "!/netwerk/test/unit/test_gio_protocol.js", "!/netwerk/test/unit/test_head.js", "!/netwerk/test/unit/test_headers.js", "!/netwerk/test/unit/test_httpsuspend.js", @@ -135,6 +136,9 @@ prefs = ["network.allow_raw_sockets_in_content_processes=true"] ["test_getHost_wrap.js"] prefs = ["network.allow_raw_sockets_in_content_processes=true"] +["test_gio_protocol_wrap.js"] +run-if = ["os == 'linux'"] + ["test_head_wrap.js"] prefs = ["network.allow_raw_sockets_in_content_processes=true"] diff --git a/icecat/parser/expat/00_xmlchar.patch b/icecat/parser/expat/00_xmlchar.patch index a2927f8c06..49e0f9a99a 100644 --- a/icecat/parser/expat/00_xmlchar.patch +++ b/icecat/parser/expat/00_xmlchar.patch @@ -1,31 +1,30 @@ diff --git a/expat/lib/expat_external.h b/expat/lib/expat_external.h --- a/expat/lib/expat_external.h +++ b/expat/lib/expat_external.h -@@ -138,6 +138,9 @@ extern "C" { - # endif +@@ -137,6 +137,9 @@ extern "C" { # endif + #endif +/* BEGIN MOZILLA CHANGE (typedef XML_Char to char16_t) */ +#if 0 + - # ifdef XML_UNICODE /* Information is UTF-16 encoded. */ - # ifdef XML_UNICODE_WCHAR_T + #ifdef XML_UNICODE /* Information is UTF-16 encoded. */ + # ifdef XML_UNICODE_WCHAR_T typedef wchar_t XML_Char; -@@ -151,6 +154,9 @@ typedef char XML_Char; +@@ -150,6 +153,9 @@ typedef char XML_Char; typedef char XML_LChar; - # endif /* XML_UNICODE */ + #endif /* XML_UNICODE */ +#endif +/* END MOZILLA CHANGE */ + - # ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ + #ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ typedef long long XML_Index; typedef unsigned long long XML_Size; diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c -index a187a3a18f19..3a3bb9aa45e2 100644 --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -195,6 +195,9 @@ typedef char ICHAR; +@@ -194,6 +194,9 @@ typedef char ICHAR; #endif @@ -35,7 +34,7 @@ index a187a3a18f19..3a3bb9aa45e2 100644 #ifdef XML_UNICODE # ifdef XML_UNICODE_WCHAR_T -@@ -212,6 +215,9 @@ typedef char ICHAR; +@@ -211,6 +214,9 @@ typedef char ICHAR; #endif diff --git a/icecat/parser/expat/01_noslop.patch b/icecat/parser/expat/01_noslop.patch index 7bf66177a8..22b24f2a44 100644 --- a/icecat/parser/expat/01_noslop.patch +++ b/icecat/parser/expat/01_noslop.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -270,7 +270,9 @@ typedef struct { +@@ -269,7 +269,9 @@ typedef struct { #define INIT_DATA_BUF_SIZE 1024 #define INIT_ATTS_SIZE 16 #define INIT_ATTS_VERSION 0xFFFFFFFF diff --git a/icecat/parser/expat/02_report_mismatched_tag.patch b/icecat/parser/expat/02_report_mismatched_tag.patch index 6f499d7c55..aa4bd5c838 100644 --- a/icecat/parser/expat/02_report_mismatched_tag.patch +++ b/icecat/parser/expat/02_report_mismatched_tag.patch @@ -1,17 +1,17 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -791,6 +791,9 @@ struct XML_ParserStruct { +@@ -764,6 +764,9 @@ struct XML_ParserStruct { + ACCOUNTING m_accounting; ENTITY_STATS m_entity_stats; #endif - XML_Bool m_reenter; +/* BEGIN MOZILLA CHANGE (Report opening tag of mismatched closing tag) */ + const XML_Char* m_mismatch; +/* END MOZILLA CHANGE */ }; - #if XML_GE == 1 -@@ -1538,6 +1541,10 @@ parserCreate(const XML_Char *encodingName, + #define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) +@@ -1189,6 +1192,10 @@ parserCreate(const XML_Char *encodingNam parser->m_internalEncoding = XmlGetInternalEncoding(); } @@ -22,7 +22,22 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c return parser; } -@@ -3593,6 +3600,33 @@ doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, +@@ -2645,6 +2652,14 @@ XML_SetBillionLaughsAttackProtectionActi + } + #endif /* XML_GE == 1 */ + ++/* BEGIN MOZILLA CHANGE (Report opening tag of mismatched closing tag) */ ++const XML_Char * XMLCALL ++MOZ_XML_GetMismatchedTag(XML_Parser parser) ++{ ++ return parser->m_mismatch; ++} ++/* END MOZILLA CHANGE */ ++ + XML_Bool XMLCALL + XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled) { + if (parser != NULL && (enabled == XML_TRUE || enabled == XML_FALSE)) { +@@ -3117,6 +3132,33 @@ doContent(XML_Parser parser, int startTa len = XmlNameLength(enc, rawName); if (len != tag->rawNameLength || memcmp(tag->rawName, rawName, len) != 0) { diff --git a/icecat/parser/expat/03_dont_generate_salt.patch b/icecat/parser/expat/03_dont_generate_salt.patch index 7a3ee364ea..91cb70eb24 100644 --- a/icecat/parser/expat/03_dont_generate_salt.patch +++ b/icecat/parser/expat/03_dont_generate_salt.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -1046,6 +1046,8 @@ static const XML_Char implicitContext[] +@@ -796,6 +796,8 @@ static const XML_Char implicitContext[] ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0'}; @@ -10,7 +10,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c /* To avoid warnings about unused functions: */ #if ! defined(HAVE_ARC4RANDOM_BUF) && ! defined(HAVE_ARC4RANDOM) -@@ -1210,9 +1212,13 @@ ENTROPY_DEBUG(const char *label, unsigned long entropy) { +@@ -957,9 +959,13 @@ ENTROPY_DEBUG(const char *label, unsigne } return entropy; } @@ -24,7 +24,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c unsigned long entropy; (void)parser; -@@ -1252,6 +1258,10 @@ generate_hash_secret_salt(XML_Parser parser) { +@@ -999,6 +1005,10 @@ generate_hash_secret_salt(XML_Parser par entropy * (unsigned long)2305843009213693951ULL); } #endif diff --git a/icecat/parser/expat/04_always_set_eventptrs.patch b/icecat/parser/expat/04_always_set_eventptrs.patch index 07174b6577..c097c3856f 100644 --- a/icecat/parser/expat/04_always_set_eventptrs.patch +++ b/icecat/parser/expat/04_always_set_eventptrs.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -2536,6 +2536,10 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal) { +@@ -2328,6 +2328,10 @@ XML_ResumeParser(XML_Parser parser) { XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, parser->m_bufferPtr, &parser->m_position); parser->m_positionPtr = parser->m_bufferPtr; diff --git a/icecat/parser/expat/05_getcurrentbyteindex.patch b/icecat/parser/expat/05_getcurrentbyteindex.patch index 69b6c11942..5ae0d38172 100644 --- a/icecat/parser/expat/05_getcurrentbyteindex.patch +++ b/icecat/parser/expat/05_getcurrentbyteindex.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -2780,7 +2780,13 @@ XML_GetCurrentByteIndex(XML_Parser parser) { +@@ -2357,7 +2357,13 @@ XML_GetCurrentByteIndex(XML_Parser parse if (parser->m_eventPtr) return (XML_Index)(parser->m_parseEndByteIndex - (parser->m_parseEndPtr - parser->m_eventPtr)); diff --git a/icecat/parser/expat/06_report_processing_entity.patch b/icecat/parser/expat/06_report_processing_entity.patch new file mode 100644 index 0000000000..41bc684b57 --- /dev/null +++ b/icecat/parser/expat/06_report_processing_entity.patch @@ -0,0 +1,17 @@ +diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c +--- a/expat/lib/xmlparse.c ++++ b/expat/lib/xmlparse.c +@@ -2680,6 +2680,13 @@ MOZ_XML_GetMismatchedTag(XML_Parser pars + } + /* END MOZILLA CHANGE */ + ++/* BEGIN MOZILLA CHANGE (Report whether the parser is currently expanding an entity) */ ++XML_Bool XMLCALL ++MOZ_XML_ProcessingEntityValue(XML_Parser parser) { ++ return parser->m_openInternalEntities != NULL; ++} ++/* END MOZILLA CHANGE */ ++ + XML_Bool XMLCALL + XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled) { + if (parser != NULL && (enabled == XML_TRUE || enabled == XML_FALSE)) { diff --git a/icecat/parser/expat/06_always_store_rawnames.patch b/icecat/parser/expat/07_always_store_rawnames.patch similarity index 60% rename from icecat/parser/expat/06_always_store_rawnames.patch rename to icecat/parser/expat/07_always_store_rawnames.patch index adfc7ab5de..3b71b368ec 100644 --- a/icecat/parser/expat/06_always_store_rawnames.patch +++ b/icecat/parser/expat/07_always_store_rawnames.patch @@ -1,10 +1,10 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -511,6 +511,13 @@ static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc, +@@ -491,6 +491,13 @@ static enum XML_Error doProlog(XML_Parse enum XML_Account account); - static enum XML_Error processEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl, enum EntityType type); + static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl); +/* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ +static enum XML_Error doContentInternal(XML_Parser parser, int startTagLevel, + const ENCODING *enc, const char *start, @@ -15,10 +15,10 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static enum XML_Error doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, const char *start, const char *end, const char **endPtr, -@@ -3210,10 +3217,14 @@ contentProcessor(XML_Parser parser, const char *start, const char *end, - parser, parser->m_parentParser ? 1 : 0, parser->m_encoding, start, end, - endPtr, (XML_Bool)! parser->m_parsingStatus.finalBuffer, - XML_ACCOUNT_DIRECT); +@@ -2756,10 +2763,14 @@ contentProcessor(XML_Parser parser, cons + enum XML_Error result = doContent( + parser, 0, parser->m_encoding, start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); +/* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ +#if 0 if (result == XML_ERROR_NONE) { @@ -30,36 +30,38 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c return result; } -@@ -3331,10 +3342,14 @@ externalEntityContentProcessor(XML_Parser parser, const char *start, +@@ -2872,6 +2883,24 @@ externalEntityContentProcessor(XML_Parse = doContent(parser, 1, parser->m_encoding, start, end, endPtr, (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_ENTITY_EXPANSION); +/* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ +#if 0 - if (result == XML_ERROR_NONE) { - if (! storeRawNames(parser)) - return XML_ERROR_NO_MEMORY; - } -+#endif -+/* END MOZILLA CHANGE */ - return result; - } - -@@ -3342,6 +3357,21 @@ static enum XML_Error - doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, - const char *s, const char *end, const char **nextPtr, - XML_Bool haveMore, enum XML_Account account) { -+/* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ -+ enum XML_Error result = doContentInternal(parser, startTagLevel, enc, s, end, -+ nextPtr, haveMore, account); + if (result == XML_ERROR_NONE) { + if (! storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } ++#endif ++/* END MOZILLA CHANGE */ + return result; +} + +static enum XML_Error ++doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, ++ const char *s, const char *end, const char **nextPtr, ++ XML_Bool haveMore, enum XML_Account account) { ++/* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ ++ enum XML_Error result = doContentInternal(parser, startTagLevel, enc, s, end, ++ nextPtr, haveMore, account); + if (result == XML_ERROR_NONE) { + if (! storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; +@@ -2880,9 +2909,10 @@ externalEntityContentProcessor(XML_Parse + } + + static enum XML_Error +-doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, +- const char *s, const char *end, const char **nextPtr, +- XML_Bool haveMore, enum XML_Account account) { +doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, + const char *s, const char *end, const char **nextPtr, + XML_Bool haveMore, enum XML_Account account) { @@ -67,3 +69,18 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c /* save one level of indirection */ DTD *const dtd = parser->m_dtd; +@@ -6038,10 +6068,14 @@ internalEntityProcessor(XML_Parser parse + parser->m_encoding, s, end, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, + XML_ACCOUNT_DIRECT); ++/* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ ++#if 0 + if (result == XML_ERROR_NONE) { + if (! storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } ++#endif ++/* END MOZILLA CHANGE */ + return result; + } + } diff --git a/icecat/parser/expat/07_dont_ignore_undeclared_entity.patch b/icecat/parser/expat/08_dont_ignore_undeclared_entity.patch similarity index 84% rename from icecat/parser/expat/07_dont_ignore_undeclared_entity.patch rename to icecat/parser/expat/08_dont_ignore_undeclared_entity.patch index 5c069c5be7..8d07e2ae03 100644 --- a/icecat/parser/expat/07_dont_ignore_undeclared_entity.patch +++ b/icecat/parser/expat/08_dont_ignore_undeclared_entity.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -3487,9 +3487,15 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, +@@ -3028,9 +3028,15 @@ doContentInternal(XML_Parser parser, int } else if (! entity) { if (parser->m_skippedEntityHandler) parser->m_skippedEntityHandler(parser->m_handlerArg, name, 0); @@ -17,7 +17,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c } if (entity->open) return XML_ERROR_RECURSIVE_ENTITY_REF; -@@ -6785,7 +6791,13 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, +@@ -6229,7 +6235,13 @@ appendAttributeValue(XML_Parser parser, if ((pool == &parser->m_tempPool) && parser->m_defaultHandler) reportDefault(parser, enc, ptr, next); */ diff --git a/icecat/parser/expat/08_include_xmlns.patch b/icecat/parser/expat/09_include_xmlns.patch similarity index 87% rename from icecat/parser/expat/08_include_xmlns.patch rename to icecat/parser/expat/09_include_xmlns.patch index d4dbb23411..fa5a1e2329 100644 --- a/icecat/parser/expat/08_include_xmlns.patch +++ b/icecat/parser/expat/09_include_xmlns.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -3929,6 +3929,9 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, +@@ -3458,6 +3458,9 @@ storeAtts(XML_Parser parser, const ENCOD int n; XML_Char *uri; int nPrefixes = 0; @@ -11,7 +11,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c BINDING *binding; const XML_Char *localPart; -@@ -4086,7 +4089,15 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, +@@ -3615,7 +3618,15 @@ storeAtts(XML_Parser parser, const ENCOD appAtts[attIndex], bindingsPtr); if (result) return result; @@ -27,7 +27,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c } else { /* deal with other prefixed names later */ attIndex++; -@@ -4118,6 +4129,12 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, +@@ -3647,6 +3658,12 @@ storeAtts(XML_Parser parser, const ENCOD da->value, bindingsPtr); if (result) return result; @@ -40,7 +40,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c } else { (da->id->name)[-1] = 2; nPrefixes++; -@@ -4136,7 +4153,13 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, +@@ -3665,7 +3682,13 @@ storeAtts(XML_Parser parser, const ENCOD /* expand prefixed attribute names, check for duplicates, and clear flags that say whether attributes were specified */ i = 0; @@ -51,10 +51,10 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c + if (nPrefixes || nXMLNSDeclarations) { +#endif +/* END MOZILLA CHANGE */ - unsigned int j; /* hash table index */ + int j; /* hash table index */ unsigned long version = parser->m_nsAttsVersion; -@@ -4146,6 +4169,9 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, +@@ -3675,6 +3698,9 @@ storeAtts(XML_Parser parser, const ENCOD } unsigned int nsAttsSize = 1u << parser->m_nsAttsPower; @@ -64,7 +64,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c unsigned char oldNsAttsPower = parser->m_nsAttsPower; /* size of hash table must be at least 2 * (# of prefixed attributes) */ if ((nPrefixes << 1) -@@ -4194,6 +4220,9 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, +@@ -3724,6 +3750,9 @@ storeAtts(XML_Parser parser, const ENCOD parser->m_nsAtts[--j].version = version; } parser->m_nsAttsVersion = --version; @@ -74,7 +74,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c /* expand prefixed names and check for duplicates */ for (; i < attIndex; i += 2) { -@@ -4293,10 +4322,63 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, +@@ -3823,10 +3852,63 @@ storeAtts(XML_Parser parser, const ENCOD parser->m_nsAtts[j].hash = uriHash; parser->m_nsAtts[j].uriName = s; diff --git a/icecat/parser/expat/09_internalsubset.patch b/icecat/parser/expat/10_internalsubset.patch similarity index 87% rename from icecat/parser/expat/09_internalsubset.patch rename to icecat/parser/expat/10_internalsubset.patch index 3cc3249058..27a9fb8025 100644 --- a/icecat/parser/expat/09_internalsubset.patch +++ b/icecat/parser/expat/10_internalsubset.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -6227,7 +6227,13 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, +@@ -5752,7 +5752,13 @@ doProlog(XML_Parser parser, const ENCODI entity->open = XML_TRUE; entityTrackingOnOpen(parser, entity, __LINE__); if (! parser->m_externalEntityRefHandler( diff --git a/icecat/parser/expat/11_nested_entities.patch b/icecat/parser/expat/11_nested_entities.patch new file mode 100644 index 0000000000..290d187f4c --- /dev/null +++ b/icecat/parser/expat/11_nested_entities.patch @@ -0,0 +1,33 @@ +diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c +--- a/expat/lib/xmlparse.c ++++ b/expat/lib/xmlparse.c +@@ -6085,7 +6085,29 @@ processInternalEntity(XML_Parser parser, + entityTrackingOnClose(parser, entity, __LINE__); + #endif /* XML_GE == 1 */ + entity->open = XML_FALSE; ++/* BEGIN MOZILLA CHANGE (Bug 569229 - Deal with parser interruption from nested entities) */ ++#if 0 + parser->m_openInternalEntities = openEntity->next; ++#else ++ if (parser->m_openInternalEntities == openEntity) { ++ parser->m_openInternalEntities = openEntity->next; ++ } ++ else { ++ /* openEntity should be closed, but it contains an inner entity that is ++ still open. Remove openEntity from the m_openInternalEntities linked ++ list by looking for the inner entity in the list that links to ++ openEntity and fixing up its 'next' member ++ */ ++ OPEN_INTERNAL_ENTITY *innerOpenEntity = parser->m_openInternalEntities; ++ do { ++ if (innerOpenEntity->next == openEntity) { ++ innerOpenEntity->next = openEntity->next; ++ break; ++ } ++ } while ((innerOpenEntity = innerOpenEntity->next)); ++ } ++#endif ++/* END MOZILLA CHANGE */ + /* put openEntity back in list of free instances */ + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; diff --git a/icecat/parser/expat/10_version_limit.patch b/icecat/parser/expat/12_version_limit.patch similarity index 85% rename from icecat/parser/expat/10_version_limit.patch rename to icecat/parser/expat/12_version_limit.patch index 99f6bfb6e7..a505f726e5 100644 --- a/icecat/parser/expat/10_version_limit.patch +++ b/icecat/parser/expat/12_version_limit.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmltok.c b/expat/lib/xmltok.c --- a/expat/lib/xmltok.c +++ b/expat/lib/xmltok.c -@@ -1148,6 +1148,10 @@ static const char KW_yes[] = {ASCII_y, ASCII_e, ASCII_s, '\0'}; +@@ -1148,6 +1148,10 @@ static const char KW_yes[] = {ASCII_y, A static const char KW_no[] = {ASCII_n, ASCII_o, '\0'}; @@ -12,7 +12,7 @@ diff --git a/expat/lib/xmltok.c b/expat/lib/xmltok.c static int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, const char *), -@@ -1175,6 +1179,13 @@ doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, const char *, +@@ -1175,6 +1179,13 @@ doParseXmlDecl(const ENCODING *(*encodin *versionPtr = val; if (versionEndPtr) *versionEndPtr = ptr; diff --git a/icecat/parser/expat/11_no_debug_report.patch b/icecat/parser/expat/13_no_debug_report.patch similarity index 51% rename from icecat/parser/expat/11_no_debug_report.patch rename to icecat/parser/expat/13_no_debug_report.patch index cd5dbf384d..3d1f7d94a5 100644 --- a/icecat/parser/expat/11_no_debug_report.patch +++ b/icecat/parser/expat/13_no_debug_report.patch @@ -1,7 +1,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -456,24 +456,36 @@ typedef unsigned long long XmlBigCount; +@@ -444,16 +444,24 @@ typedef unsigned long long XmlBigCount; typedef struct accounting { XmlBigCount countBytesDirect; XmlBigCount countBytesIndirect; @@ -14,18 +14,6 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c unsigned long long activationThresholdBytes; } ACCOUNTING; - typedef struct MALLOC_TRACKER { - XmlBigCount bytesAllocated; -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+# if 0 - XmlBigCount peakBytesAllocated; // updated live only for debug level >=2 - unsigned long debugLevel; -+#endif -+/* END MOZILLA CHANGE */ - float maximumAmplificationFactor; // >=1.0 - XmlBigCount activationThresholdBytes; - } MALLOC_TRACKER; - typedef struct entity_stats { +/* BEGIN MOZILLA CHANGE (don't report debug information) */ +#if 0 @@ -38,7 +26,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c } ENTITY_STATS; #endif /* XML_GE == 1 */ -@@ -632,18 +644,26 @@ static void parserInit(XML_Parser parser, const XML_Char *encodingName); +@@ -611,18 +619,26 @@ static void parserInit(XML_Parser parser static float accountingGetCurrentAmplification(XML_Parser rootParser); static void accountingReportStats(XML_Parser originParser, const char *epilog); static void accountingOnAbort(XML_Parser originParser); @@ -65,9 +53,9 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static void entityTrackingOnOpen(XML_Parser parser, ENTITY *entity, int sourceLine); static void entityTrackingOnClose(XML_Parser parser, ENTITY *entity, -@@ -653,8 +673,12 @@ static void entityTrackingOnClose(XML_Parser parser, ENTITY *entity, - static XML_Parser getRootParserOf(XML_Parser parser, +@@ -632,8 +648,12 @@ static XML_Parser getRootParserOf(XML_Pa unsigned int *outLevelDiff); + #endif /* XML_GE == 1 */ +/* BEGIN MOZILLA CHANGE (don't report debug information) */ +#if 0 @@ -78,123 +66,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c #define poolStart(pool) ((pool)->start) #define poolLength(pool) ((pool)->ptr - (pool)->start) -@@ -814,6 +838,8 @@ struct XML_ParserStruct { - #endif - - #if XML_GE == 1 -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - static void - expat_heap_stat(XML_Parser rootParser, char operator, XmlBigCount absDiff, - XmlBigCount newTotal, XmlBigCount peakTotal, int sourceLine) { -@@ -827,6 +853,8 @@ expat_heap_stat(XML_Parser rootParser, char operator, XmlBigCount absDiff, - (void *)rootParser, rootParser->m_accounting.countBytesDirect, operator, - absDiff, newTotal, peakTotal, (double)amplification, sourceLine); - } -+#endif -+/* END MOZILLA CHANGE */ - - static bool - expat_heap_increase_tolerable(XML_Parser rootParser, XmlBigCount increase, -@@ -855,9 +883,13 @@ expat_heap_increase_tolerable(XML_Parser rootParser, XmlBigCount increase, - } - } - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - if (! tolerable && (rootParser->m_alloc_tracker.debugLevel >= 1)) { - expat_heap_stat(rootParser, '+', increase, newTotal, newTotal, sourceLine); - } -+#endif -+/* END MOZILLA CHANGE */ - - return tolerable; - } -@@ -901,6 +933,8 @@ expat_malloc(XML_Parser parser, size_t size, int sourceLine) { - // Update accounting - rootParser->m_alloc_tracker.bytesAllocated += bytesToAllocate; - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - // Report as needed - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - if (rootParser->m_alloc_tracker.bytesAllocated -@@ -912,6 +946,8 @@ expat_malloc(XML_Parser parser, size_t size, int sourceLine) { - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, sourceLine); - } -+#endif -+/* END MOZILLA CHANGE */ - - return (char *)mallocedPtr + sizeof(size_t) + EXPAT_MALLOC_PADDING; - } -@@ -941,12 +977,16 @@ expat_free(XML_Parser parser, void *ptr, int sourceLine) { - assert(rootParser->m_alloc_tracker.bytesAllocated >= bytesAllocated); - rootParser->m_alloc_tracker.bytesAllocated -= bytesAllocated; - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - // Report as needed - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - expat_heap_stat(rootParser, '-', bytesAllocated, - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, sourceLine); - } -+#endif -+/* END MOZILLA CHANGE */ - - // NOTE: This may be freeing rootParser, so freeing has to come last - parser->m_mem.free_fcn(mallocedPtr); -@@ -1011,6 +1051,8 @@ expat_realloc(XML_Parser parser, void *ptr, size_t size, int sourceLine) { - rootParser->m_alloc_tracker.bytesAllocated -= absDiff; - } - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - // Report as needed - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - if (rootParser->m_alloc_tracker.bytesAllocated -@@ -1022,6 +1064,8 @@ expat_realloc(XML_Parser parser, void *ptr, size_t size, int sourceLine) { - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, sourceLine); - } -+#endif -+/* END MOZILLA CHANGE */ - - // Update in-block recorded size - *(size_t *)mallocedPtr = size; -@@ -1431,8 +1475,12 @@ parserCreate(const XML_Char *encodingName, - // Initialize .m_alloc_tracker - memset(&parser->m_alloc_tracker, 0, sizeof(MALLOC_TRACKER)); - if (parentParser == NULL) { -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - parser->m_alloc_tracker.debugLevel - = getDebugLevel("EXPAT_MALLOC_DEBUG", 0u); -+#endif -+/* END MOZILLA CHANGE */ - parser->m_alloc_tracker.maximumAmplificationFactor - = EXPAT_ALLOC_TRACKER_MAXIMUM_AMPLIFICATION_DEFAULT; - parser->m_alloc_tracker.activationThresholdBytes -@@ -1452,6 +1500,8 @@ parserCreate(const XML_Char *encodingName, - assert(SIZE_MAX - rootParser->m_alloc_tracker.bytesAllocated >= increase); - rootParser->m_alloc_tracker.bytesAllocated += increase; - -+/* BEGIN MOZILLA CHANGE (don't report debug information) */ -+#if 0 - // Report on allocation - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - if (rootParser->m_alloc_tracker.bytesAllocated -@@ -1464,6 +1514,8 @@ parserCreate(const XML_Char *encodingName, - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, __LINE__); - } -+#endif -+/* END MOZILLA CHANGE */ - #else - parser->m_parentParser = NULL; - #endif // XML_GE == 1 -@@ -1644,15 +1696,23 @@ parserInit(XML_Parser parser, const XML_Char *encodingName) { +@@ -1292,15 +1312,23 @@ parserInit(XML_Parser parser, const XML_ #if XML_GE == 1 memset(&parser->m_accounting, 0, sizeof(ACCOUNTING)); @@ -218,7 +90,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c } /* moves list of bindings to m_freeBindingList */ -@@ -8667,6 +8727,8 @@ accountingGetCurrentAmplification(XML_Parser rootParser) { +@@ -8069,6 +8097,8 @@ accountingGetCurrentAmplification(XML_Pa static void accountingReportStats(XML_Parser originParser, const char *epilog) { @@ -227,7 +99,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c const XML_Parser rootParser = getRootParserOf(originParser, NULL); assert(! rootParser->m_parentParser); -@@ -8682,6 +8744,8 @@ accountingReportStats(XML_Parser originParser, const char *epilog) { +@@ -8084,6 +8114,8 @@ accountingReportStats(XML_Parser originP (void *)rootParser, rootParser->m_accounting.countBytesDirect, rootParser->m_accounting.countBytesIndirect, (double)amplificationFactor, epilog); @@ -236,7 +108,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c } static void -@@ -8689,6 +8753,8 @@ accountingOnAbort(XML_Parser originParser) { +@@ -8091,6 +8123,8 @@ accountingOnAbort(XML_Parser originParse accountingReportStats(originParser, " ABORTING\n"); } @@ -245,7 +117,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static void accountingReportDiff(XML_Parser rootParser, unsigned int levelsAwayFromRootParser, const char *before, -@@ -8725,6 +8791,8 @@ accountingReportDiff(XML_Parser rootParser, +@@ -8127,6 +8161,8 @@ accountingReportDiff(XML_Parser rootPars } fprintf(stderr, "\"\n"); } @@ -254,7 +126,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static XML_Bool accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, -@@ -8772,11 +8840,15 @@ accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, +@@ -8174,11 +8210,15 @@ accountingDiffTolerated(XML_Parser origi || (amplificationFactor <= rootParser->m_accounting.maximumAmplificationFactor); @@ -270,7 +142,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c return tolerated; } -@@ -8795,6 +8867,8 @@ testingAccountingGetCountBytesIndirect(XML_Parser parser) { +@@ -8197,6 +8237,8 @@ testingAccountingGetCountBytesIndirect(X return parser->m_accounting.countBytesIndirect; } @@ -279,7 +151,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static void entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, const char *action, int sourceLine) { -@@ -8818,9 +8892,13 @@ entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, +@@ -8220,9 +8262,13 @@ entityTrackingReportStats(XML_Parser roo entity->is_param ? "%" : "&", entityName, action, entity->textLen, sourceLine); } @@ -293,7 +165,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c const XML_Parser rootParser = getRootParserOf(originParser, NULL); assert(! rootParser->m_parentParser); -@@ -8832,15 +8910,21 @@ entityTrackingOnOpen(XML_Parser originParser, ENTITY *entity, int sourceLine) { +@@ -8234,15 +8280,21 @@ entityTrackingOnOpen(XML_Parser originPa } entityTrackingReportStats(rootParser, entity, "OPEN ", sourceLine); @@ -314,19 +186,19 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c +/* END MOZILLA CHANGE */ } - #endif /* XML_GE == 1 */ -@@ -8862,6 +8946,8 @@ getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { - - #if XML_GE == 1 + static XML_Parser +@@ -8260,6 +8312,8 @@ getRootParserOf(XML_Parser parser, unsig + return rootParser; + } +/* BEGIN MOZILLA CHANGE (don't report debug information) */ +#if 0 const char * unsignedCharToPrintable(unsigned char c) { switch (c) { -@@ -9385,9 +9471,13 @@ unsignedCharToPrintable(unsigned char c) { +@@ -8781,9 +8835,13 @@ unsignedCharToPrintable(unsigned char c) + } assert(0); /* never gets here */ - // LCOV_EXCL_STOP } +#endif +/* END MOZILLA CHANGE */ @@ -338,7 +210,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static unsigned long getDebugLevel(const char *variableName, unsigned long defaultDebugLevel) { const char *const valueOrNull = getenv(variableName); -@@ -9406,3 +9496,5 @@ getDebugLevel(const char *variableName, unsigned long defaultDebugLevel) { +@@ -8802,3 +8860,5 @@ getDebugLevel(const char *variableName, return debugLevel; } diff --git a/icecat/parser/expat/12_unused.patch b/icecat/parser/expat/14_unused.patch similarity index 62% rename from icecat/parser/expat/12_unused.patch rename to icecat/parser/expat/14_unused.patch index f9ade9df8d..57a5f02351 100644 --- a/icecat/parser/expat/12_unused.patch +++ b/icecat/parser/expat/14_unused.patch @@ -1,23 +1,23 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c --- a/expat/lib/xmlparse.c +++ b/expat/lib/xmlparse.c -@@ -592,8 +592,12 @@ static XML_Bool setContext(XML_Parser parser, const XML_Char *context); +@@ -564,8 +564,12 @@ static XML_Bool setContext(XML_Parser pa static void FASTCALL normalizePublicId(XML_Char *s); - static DTD *dtdCreate(XML_Parser parser); + static DTD *dtdCreate(const XML_Memory_Handling_Suite *ms); +/* BEGIN MOZILLA CHANGE (unused API) */ +#if 0 /* do not call if m_parentParser != NULL */ - static void dtdReset(DTD *p, XML_Parser parser); + static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); +#endif +/* END MOZILLA CHANGE */ - static void dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser); + static void dtdDestroy(DTD *p, XML_Bool isDocEntity, + const XML_Memory_Handling_Suite *ms); static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, - XML_Parser parser); -@@ -602,7 +606,11 @@ static int copyEntityTable(XML_Parser oldParser, HASH_TABLE *newTable, - static NAMED *lookup(XML_Parser parser, HASH_TABLE *table, KEY name, +@@ -576,7 +580,11 @@ static NAMED *lookup(XML_Parser parser, size_t createSize); - static void FASTCALL hashTableInit(HASH_TABLE *table, XML_Parser parser); + static void FASTCALL hashTableInit(HASH_TABLE *table, + const XML_Memory_Handling_Suite *ms); +/* BEGIN MOZILLA CHANGE (unused API) */ +#if 0 static void FASTCALL hashTableClear(HASH_TABLE *table); @@ -26,16 +26,16 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static void FASTCALL hashTableDestroy(HASH_TABLE *table); static void FASTCALL hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table); -@@ -1074,6 +1082,8 @@ expat_realloc(XML_Parser parser, void *ptr, size_t size, int sourceLine) { - } - #endif // XML_GE == 1 +@@ -800,6 +808,8 @@ struct XML_ParserStruct { + #define REALLOC(parser, p, s) (parser->m_mem.realloc_fcn((p), (s))) + #define FREE(parser, p) (parser->m_mem.free_fcn((p))) +/* BEGIN MOZILLA CHANGE (unused API) */ +#if 0 XML_Parser XMLCALL XML_ParserCreate(const XML_Char *encodingName) { return XML_ParserCreate_MM(encodingName, NULL, NULL); -@@ -1084,6 +1094,8 @@ XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) { +@@ -810,6 +820,8 @@ XML_ParserCreateNS(const XML_Char *encod XML_Char tmp[2] = {nsSep, 0}; return XML_ParserCreate_MM(encodingName, NULL, tmp); } @@ -44,7 +44,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c // "xml=http://www.w3.org/XML/1998/namespace" static const XML_Char implicitContext[] -@@ -1715,6 +1727,8 @@ parserInit(XML_Parser parser, const XML_Char *encodingName) { +@@ -1331,6 +1343,8 @@ parserInit(XML_Parser parser, const XML_ #endif } @@ -53,25 +53,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c /* moves list of bindings to m_freeBindingList */ static void FASTCALL moveToFreeBindingList(XML_Parser parser, BINDING *bindings) { -@@ -1784,6 +1798,8 @@ XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { - dtdReset(parser->m_dtd, parser); - return XML_TRUE; - } -+#endif -+/* END MOZILLA CHANGE */ - - static XML_Bool - parserBusy(XML_Parser parser) { -@@ -1798,6 +1814,8 @@ parserBusy(XML_Parser parser) { - } - } - -+/* BEGIN MOZILLA CHANGE (unused API) */ -+#if 0 - enum XML_Status XMLCALL - XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { - if (parser == NULL) -@@ -1823,6 +1841,8 @@ XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { +@@ -1409,6 +1423,8 @@ XML_SetEncoding(XML_Parser parser, const } return XML_STATUS_OK; } @@ -80,7 +62,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c XML_Parser XMLCALL XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, -@@ -2109,6 +2129,8 @@ XML_UseParserAsHandlerArg(XML_Parser parser) { +@@ -1665,6 +1681,8 @@ XML_UseParserAsHandlerArg(XML_Parser par parser->m_handlerArg = parser; } @@ -89,7 +71,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c enum XML_Error XMLCALL XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { if (parser == NULL) -@@ -2124,6 +2146,8 @@ XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { +@@ -1681,6 +1699,8 @@ XML_UseForeignDTD(XML_Parser parser, XML return XML_ERROR_FEATURE_REQUIRES_XML_DTD; #endif } @@ -98,7 +80,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { -@@ -2198,6 +2222,8 @@ XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, +@@ -1756,6 +1776,8 @@ XML_SetElementHandler(XML_Parser parser, parser->m_endElementHandler = end; } @@ -107,7 +89,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler start) { if (parser != NULL) -@@ -2209,6 +2235,8 @@ XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler end) { +@@ -1767,6 +1789,8 @@ XML_SetEndElementHandler(XML_Parser pars if (parser != NULL) parser->m_endElementHandler = end; } @@ -116,7 +98,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetCharacterDataHandler(XML_Parser parser, -@@ -2240,6 +2268,8 @@ XML_SetCdataSectionHandler(XML_Parser parser, +@@ -1798,6 +1822,8 @@ XML_SetCdataSectionHandler(XML_Parser pa parser->m_endCdataSectionHandler = end; } @@ -125,7 +107,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetStartCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start) { -@@ -2261,6 +2291,8 @@ XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler) { +@@ -1819,6 +1845,8 @@ XML_SetDefaultHandler(XML_Parser parser, parser->m_defaultHandler = handler; parser->m_defaultExpandInternalEntities = XML_FALSE; } @@ -134,7 +116,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler) { -@@ -2279,6 +2311,8 @@ XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, +@@ -1837,6 +1865,8 @@ XML_SetDoctypeDeclHandler(XML_Parser par parser->m_endDoctypeDeclHandler = end; } @@ -143,7 +125,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetStartDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start) { -@@ -2291,6 +2325,8 @@ XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end) { +@@ -1849,6 +1879,8 @@ XML_SetEndDoctypeDeclHandler(XML_Parser if (parser != NULL) parser->m_endDoctypeDeclHandler = end; } @@ -152,7 +134,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetUnparsedEntityDeclHandler(XML_Parser parser, -@@ -2315,6 +2351,8 @@ XML_SetNamespaceDeclHandler(XML_Parser parser, +@@ -1873,6 +1905,8 @@ XML_SetNamespaceDeclHandler(XML_Parser p parser->m_endNamespaceDeclHandler = end; } @@ -161,7 +143,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetStartNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start) { -@@ -2335,6 +2373,8 @@ XML_SetNotStandaloneHandler(XML_Parser parser, +@@ -1893,6 +1927,8 @@ XML_SetNotStandaloneHandler(XML_Parser p if (parser != NULL) parser->m_notStandaloneHandler = handler; } @@ -170,7 +152,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetExternalEntityRefHandler(XML_Parser parser, -@@ -2353,6 +2393,8 @@ XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) { +@@ -1911,6 +1947,8 @@ XML_SetExternalEntityRefHandlerArg(XML_P parser->m_externalEntityRefHandlerArg = parser; } @@ -179,7 +161,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetSkippedEntityHandler(XML_Parser parser, XML_SkippedEntityHandler handler) { -@@ -2386,6 +2428,8 @@ XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler) { +@@ -1944,6 +1982,8 @@ XML_SetEntityDeclHandler(XML_Parser pars if (parser != NULL) parser->m_entityDeclHandler = handler; } @@ -188,7 +170,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c void XMLCALL XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler handler) { -@@ -2856,6 +2900,8 @@ XML_GetCurrentByteIndex(XML_Parser parser) { +@@ -2401,6 +2441,8 @@ XML_GetCurrentByteIndex(XML_Parser parse /* END MOZILLA CHANGE */ } @@ -197,7 +179,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c int XMLCALL XML_GetCurrentByteCount(XML_Parser parser) { if (parser == NULL) -@@ -2884,6 +2930,8 @@ XML_GetInputContext(XML_Parser parser, int *offset, int *size) { +@@ -2429,6 +2471,8 @@ XML_GetInputContext(XML_Parser parser, i #endif /* XML_CONTEXT_BYTES > 0 */ return (const char *)0; } @@ -206,7 +188,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c XML_Size XMLCALL XML_GetCurrentLineNumber(XML_Parser parser) { -@@ -2909,6 +2957,8 @@ XML_GetCurrentColumnNumber(XML_Parser parser) { +@@ -2454,6 +2498,8 @@ XML_GetCurrentColumnNumber(XML_Parser pa return parser->m_position.columnNumber; } @@ -214,8 +196,8 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c +#if 0 void XMLCALL XML_FreeContentModel(XML_Parser parser, XML_Content *model) { - if (parser == NULL) -@@ -3159,6 +3209,8 @@ XML_GetFeatureList(void) { + if (parser != NULL) +@@ -2682,6 +2728,8 @@ XML_GetFeatureList(void) { return features; } @@ -224,16 +206,16 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c #if XML_GE == 1 XML_Bool XMLCALL -@@ -7770,6 +7822,8 @@ dtdCreate(XML_Parser parser) { +@@ -7146,6 +7194,8 @@ dtdCreate(const XML_Memory_Handling_Suit return p; } +/* BEGIN MOZILLA CHANGE (unused API) */ +#if 0 static void - dtdReset(DTD *p, XML_Parser parser) { + dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; -@@ -7810,6 +7864,8 @@ dtdReset(DTD *p, XML_Parser parser) { +@@ -7186,6 +7236,8 @@ dtdReset(DTD *p, const XML_Memory_Handli p->hasParamEntityRefs = XML_FALSE; p->standalone = XML_FALSE; } @@ -241,8 +223,8 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c +/* END MOZILLA CHANGE */ static void - dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser) { -@@ -8164,6 +8220,8 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { + dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) { +@@ -7540,6 +7592,8 @@ lookup(XML_Parser parser, HASH_TABLE *ta return table->v[i]; } @@ -251,7 +233,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static void FASTCALL hashTableClear(HASH_TABLE *table) { size_t i; -@@ -8173,6 +8231,8 @@ hashTableClear(HASH_TABLE *table) { +@@ -7549,6 +7603,8 @@ hashTableClear(HASH_TABLE *table) { } table->used = 0; } @@ -260,7 +242,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c static void FASTCALL hashTableDestroy(HASH_TABLE *table) { -@@ -8853,6 +8913,8 @@ accountingDiffTolerated(XML_Parser originParser, int tok, const char *before, +@@ -8223,6 +8279,8 @@ accountingDiffTolerated(XML_Parser origi return tolerated; } @@ -269,7 +251,7 @@ diff --git a/expat/lib/xmlparse.c b/expat/lib/xmlparse.c unsigned long long testingAccountingGetCountBytesDirect(XML_Parser parser) { if (! parser) -@@ -8866,6 +8928,8 @@ testingAccountingGetCountBytesIndirect(XML_Parser parser) { +@@ -8236,6 +8294,8 @@ testingAccountingGetCountBytesIndirect(X return 0; return parser->m_accounting.countBytesIndirect; } diff --git a/icecat/parser/expat/COPYING b/icecat/parser/expat/COPYING index c6d184a8aa..ce9e593929 100644 --- a/icecat/parser/expat/COPYING +++ b/icecat/parser/expat/COPYING @@ -1,5 +1,5 @@ Copyright (c) 1998-2000 Thai Open Source Software Center Ltd and Clark Cooper -Copyright (c) 2001-2025 Expat maintainers +Copyright (c) 2001-2022 Expat maintainers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/icecat/parser/expat/README_MOZILLA b/icecat/parser/expat/README_MOZILLA index 466a0cbc95..724ca660ee 100644 --- a/icecat/parser/expat/README_MOZILLA +++ b/icecat/parser/expat/README_MOZILLA @@ -4,6 +4,6 @@ See moz.yaml for the current in-tree version. To update run $ ./mach vendor parser/expat/moz.yaml --patch-mode=none -$ git commit -a -m "Bug X - Update to Expat x.x.x." +$ hg commit -m "Bug X - Update to Expat x.x.x." $ ./mach vendor parser/expat/moz.yaml --patch-mode=only -$ git commit -a -m "Bug X - Apply local patches to Expat x.x.x." +$ hg commit -m "Bug X - Apply local patches to Expat x.x.x." diff --git a/icecat/parser/expat/expat/lib/expat.h b/icecat/parser/expat/expat/lib/expat.h index 6c7c418692..523b37d8d5 100644 --- a/icecat/parser/expat/expat/lib/expat.h +++ b/icecat/parser/expat/expat/lib/expat.h @@ -11,7 +11,7 @@ Copyright (c) 2000-2005 Fred L. Drake, Jr. Copyright (c) 2001-2002 Greg Stein Copyright (c) 2002-2016 Karl Waclawek - Copyright (c) 2016-2026 Sebastian Pipping + Copyright (c) 2016-2024 Sebastian Pipping Copyright (c) 2016 Cristian Rodríguez Copyright (c) 2016 Thomas Beutlich Copyright (c) 2017 Rhodri James @@ -19,7 +19,6 @@ Copyright (c) 2023 Hanno Böck Copyright (c) 2023 Sony Corporation / Snild Dolkow Copyright (c) 2024 Taichi Haradaguchi <20001722@ymail.ne.jp> - Copyright (c) 2025 Matthew Fernandez Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -43,21 +42,21 @@ */ #ifndef Expat_INCLUDED -# define Expat_INCLUDED 1 +#define Expat_INCLUDED 1 -# include -# include "expat_external.h" +#include +#include "expat_external.h" -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif struct XML_ParserStruct; typedef struct XML_ParserStruct *XML_Parser; typedef unsigned char XML_Bool; -# define XML_TRUE ((XML_Bool)1) -# define XML_FALSE ((XML_Bool)0) +#define XML_TRUE ((XML_Bool)1) +#define XML_FALSE ((XML_Bool)0) /* The XML_Status enum gives the possible return values for several API functions. The preprocessor #defines are included so this @@ -74,11 +73,11 @@ typedef unsigned char XML_Bool; */ enum XML_Status { XML_STATUS_ERROR = 0, -# define XML_STATUS_ERROR XML_STATUS_ERROR +#define XML_STATUS_ERROR XML_STATUS_ERROR XML_STATUS_OK = 1, -# define XML_STATUS_OK XML_STATUS_OK +#define XML_STATUS_OK XML_STATUS_OK XML_STATUS_SUSPENDED = 2 -# define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED +#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED }; enum XML_Error { @@ -277,7 +276,7 @@ XML_ParserCreate_MM(const XML_Char *encoding, /* Prepare a parser object to be reused. This is particularly valuable when memory allocation overhead is disproportionately high, - such as when a large number of small documents need to be parsed. + such as when a large number of small documnents need to be parsed. All handlers are cleared from the parser, except for the unknownEncodingHandler. The parser's external state is re-initialized except for the values of ns and ns_triplets. @@ -681,7 +680,7 @@ XMLPARSEAPI(void) XML_SetUserData(XML_Parser parser, void *userData); /* Returns the last value set by XML_SetUserData or NULL. */ -# define XML_GetUserData(parser) (*(void **)(parser)) +#define XML_GetUserData(parser) (*(void **)(parser)) /* This is equivalent to supplying an encoding argument to XML_ParserCreate. On success XML_SetEncoding returns non-zero, @@ -753,7 +752,7 @@ XML_GetSpecifiedAttributeCount(XML_Parser parser); XMLPARSEAPI(int) XML_GetIdAttributeIndex(XML_Parser parser); -# ifdef XML_ATTR_INFO +#ifdef XML_ATTR_INFO /* Source file byte offsets for the start and end of attribute names and values. The value indices are exclusive of surrounding quotes; thus in a UTF-8 source file an attribute value of "blah" will yield: @@ -774,7 +773,7 @@ typedef struct { */ XMLPARSEAPI(const XML_AttrInfo *) XML_GetAttributeInfo(XML_Parser parser); -# endif +#endif /* Parses some input. Returns XML_STATUS_ERROR if a fatal error is detected. The last call to XML_Parse must have isFinal true; len @@ -971,9 +970,9 @@ XMLPARSEAPI(const char *) XML_GetInputContext(XML_Parser parser, int *offset, int *size); /* For backwards compatibility with previous versions. */ -# define XML_GetErrorLineNumber XML_GetCurrentLineNumber -# define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber -# define XML_GetErrorByteIndex XML_GetCurrentByteIndex +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex /* Frees the content model passed to the element declaration handler */ XMLPARSEAPI(void) @@ -1033,10 +1032,7 @@ enum XML_FeatureEnum { XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_MAXIMUM_AMPLIFICATION_DEFAULT, XML_FEATURE_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT, /* Added in Expat 2.6.0. */ - XML_FEATURE_GE, - /* Added in Expat 2.7.2. */ - XML_FEATURE_ALLOC_TRACKER_MAXIMUM_AMPLIFICATION_DEFAULT, - XML_FEATURE_ALLOC_TRACKER_ACTIVATION_THRESHOLD_DEFAULT, + XML_FEATURE_GE /* Additional features must be added to the end of this enum. */ }; @@ -1049,7 +1045,7 @@ typedef struct { XMLPARSEAPI(const XML_Feature *) XML_GetFeatureList(void); -# if defined(XML_DTD) || (defined(XML_GE) && XML_GE == 1) +#if defined(XML_DTD) || (defined(XML_GE) && XML_GE == 1) /* Added in Expat 2.4.0 for XML_DTD defined and * added in Expat 2.6.0 for XML_GE == 1. */ XMLPARSEAPI(XML_Bool) @@ -1061,17 +1057,7 @@ XML_SetBillionLaughsAttackProtectionMaximumAmplification( XMLPARSEAPI(XML_Bool) XML_SetBillionLaughsAttackProtectionActivationThreshold( XML_Parser parser, unsigned long long activationThresholdBytes); - -/* Added in Expat 2.7.2. */ -XMLPARSEAPI(XML_Bool) -XML_SetAllocTrackerMaximumAmplification(XML_Parser parser, - float maximumAmplificationFactor); - -/* Added in Expat 2.7.2. */ -XMLPARSEAPI(XML_Bool) -XML_SetAllocTrackerActivationThreshold( - XML_Parser parser, unsigned long long activationThresholdBytes); -# endif +#endif /* Added in Expat 2.6.0. */ XMLPARSEAPI(XML_Bool) @@ -1080,12 +1066,12 @@ XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled); /* Expat follows the semantic versioning convention. See https://semver.org */ -# define XML_MAJOR_VERSION 2 -# define XML_MINOR_VERSION 7 -# define XML_MICRO_VERSION 4 +#define XML_MAJOR_VERSION 2 +#define XML_MINOR_VERSION 6 +#define XML_MICRO_VERSION 4 -# ifdef __cplusplus +#ifdef __cplusplus } -# endif +#endif #endif /* not Expat_INCLUDED */ diff --git a/icecat/parser/expat/expat/lib/expat_external.h b/icecat/parser/expat/expat/lib/expat_external.h index a4f3b66ff9..449eae7b02 100644 --- a/icecat/parser/expat/expat/lib/expat_external.h +++ b/icecat/parser/expat/expat/lib/expat_external.h @@ -12,7 +12,7 @@ Copyright (c) 2001-2002 Greg Stein Copyright (c) 2002-2006 Karl Waclawek Copyright (c) 2016 Cristian Rodríguez - Copyright (c) 2016-2025 Sebastian Pipping + Copyright (c) 2016-2019 Sebastian Pipping Copyright (c) 2017 Rhodri James Copyright (c) 2018 Yury Gribov Licensed under the MIT license: @@ -38,7 +38,7 @@ */ #ifndef Expat_External_INCLUDED -# define Expat_External_INCLUDED 1 +#define Expat_External_INCLUDED 1 /* External API definitions */ @@ -64,12 +64,12 @@ compiled with the cdecl calling convention as the default since system headers may assume the cdecl convention. */ -# ifndef XMLCALL -# if defined(_MSC_VER) -# define XMLCALL __cdecl -# elif defined(__GNUC__) && defined(__i386) && ! defined(__INTEL_COMPILER) -# define XMLCALL __attribute__((cdecl)) -# else +#ifndef XMLCALL +# if defined(_MSC_VER) +# define XMLCALL __cdecl +# elif defined(__GNUC__) && defined(__i386) && ! defined(__INTEL_COMPILER) +# define XMLCALL __attribute__((cdecl)) +# else /* For any platform which uses this definition and supports more than one calling convention, we need to extend this definition to declare the convention used on that platform, if it's possible to @@ -80,92 +80,92 @@ pre-processor and how to specify the same calling convention as the platform's malloc() implementation. */ -# define XMLCALL -# endif -# endif /* not defined XMLCALL */ +# define XMLCALL +# endif +#endif /* not defined XMLCALL */ -# if ! defined(XML_STATIC) && ! defined(XMLIMPORT) -# ifndef XML_BUILDING_EXPAT +#if ! defined(XML_STATIC) && ! defined(XMLIMPORT) +# ifndef XML_BUILDING_EXPAT /* using Expat from an application */ -# if defined(_MSC_VER) && ! defined(__BEOS__) && ! defined(__CYGWIN__) -# define XMLIMPORT __declspec(dllimport) -# endif - +# if defined(_MSC_EXTENSIONS) && ! defined(__BEOS__) && ! defined(__CYGWIN__) +# define XMLIMPORT __declspec(dllimport) # endif -# endif /* not defined XML_STATIC */ -# ifndef XML_ENABLE_VISIBILITY -# define XML_ENABLE_VISIBILITY 0 # endif +#endif /* not defined XML_STATIC */ -# if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY -# define XMLIMPORT __attribute__((visibility("default"))) -# endif +#ifndef XML_ENABLE_VISIBILITY +# define XML_ENABLE_VISIBILITY 0 +#endif + +#if ! defined(XMLIMPORT) && XML_ENABLE_VISIBILITY +# define XMLIMPORT __attribute__((visibility("default"))) +#endif /* If we didn't define it above, define it away: */ -# ifndef XMLIMPORT -# define XMLIMPORT -# endif +#ifndef XMLIMPORT +# define XMLIMPORT +#endif -# if defined(__GNUC__) \ - && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) -# define XML_ATTR_MALLOC __attribute__((__malloc__)) -# else -# define XML_ATTR_MALLOC -# endif +#if defined(__GNUC__) \ + && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) +# define XML_ATTR_MALLOC __attribute__((__malloc__)) +#else +# define XML_ATTR_MALLOC +#endif -# if defined(__GNUC__) \ - && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) -# define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) -# else -# define XML_ATTR_ALLOC_SIZE(x) -# endif +#if defined(__GNUC__) \ + && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) +#else +# define XML_ATTR_ALLOC_SIZE(x) +#endif -# define XMLPARSEAPI(type) XMLIMPORT type XMLCALL +#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif -# ifdef XML_UNICODE_WCHAR_T -# ifndef XML_UNICODE -# define XML_UNICODE -# endif -# if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2) -# error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc" -# endif +#ifdef XML_UNICODE_WCHAR_T +# ifndef XML_UNICODE +# define XML_UNICODE # endif +# if defined(__SIZEOF_WCHAR_T__) && (__SIZEOF_WCHAR_T__ != 2) +# error "sizeof(wchar_t) != 2; Need -fshort-wchar for both Expat and libc" +# endif +#endif /* BEGIN MOZILLA CHANGE (typedef XML_Char to char16_t) */ #if 0 -# ifdef XML_UNICODE /* Information is UTF-16 encoded. */ -# ifdef XML_UNICODE_WCHAR_T +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +# ifdef XML_UNICODE_WCHAR_T typedef wchar_t XML_Char; typedef wchar_t XML_LChar; -# else +# else typedef unsigned short XML_Char; typedef char XML_LChar; -# endif /* XML_UNICODE_WCHAR_T */ -# else /* Information is UTF-8 encoded. */ +# endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ typedef char XML_Char; typedef char XML_LChar; -# endif /* XML_UNICODE */ +#endif /* XML_UNICODE */ #endif /* END MOZILLA CHANGE */ -# ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ +#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ typedef long long XML_Index; typedef unsigned long long XML_Size; -# else +#else typedef long XML_Index; typedef unsigned long XML_Size; -# endif /* XML_LARGE_SIZE */ +#endif /* XML_LARGE_SIZE */ -# ifdef __cplusplus +#ifdef __cplusplus } -# endif +#endif #endif /* not Expat_External_INCLUDED */ diff --git a/icecat/parser/expat/expat/lib/internal.h b/icecat/parser/expat/expat/lib/internal.h index 61266ebb77..167ec36804 100644 --- a/icecat/parser/expat/expat/lib/internal.h +++ b/icecat/parser/expat/expat/lib/internal.h @@ -28,7 +28,7 @@ Copyright (c) 2002-2003 Fred L. Drake, Jr. Copyright (c) 2002-2006 Karl Waclawek Copyright (c) 2003 Greg Stein - Copyright (c) 2016-2025 Sebastian Pipping + Copyright (c) 2016-2024 Sebastian Pipping Copyright (c) 2018 Yury Gribov Copyright (c) 2019 David Loffredo Copyright (c) 2023-2024 Sony Corporation / Snild Dolkow @@ -108,7 +108,6 @@ #endif #include // ULONG_MAX -#include // size_t #if defined(_WIN32) \ && (! defined(__USE_MINGW_ANSI_STDIO) \ @@ -128,9 +127,6 @@ # elif ULONG_MAX == 18446744073709551615u // 2^64-1 # define EXPAT_FMT_PTRDIFF_T(midpart) "%" midpart "ld" # define EXPAT_FMT_SIZE_T(midpart) "%" midpart "lu" -# elif defined(__wasm32__) // 32bit mode Emscripten or WASI SDK -# define EXPAT_FMT_PTRDIFF_T(midpart) "%" midpart "ld" -# define EXPAT_FMT_SIZE_T(midpart) "%" midpart "zu" # else # define EXPAT_FMT_PTRDIFF_T(midpart) "%" midpart "d" # define EXPAT_FMT_SIZE_T(midpart) "%" midpart "u" @@ -149,16 +145,6 @@ 100.0f #define EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT \ 8388608 // 8 MiB, 2^23 - -#define EXPAT_ALLOC_TRACKER_MAXIMUM_AMPLIFICATION_DEFAULT 100.0f -#define EXPAT_ALLOC_TRACKER_ACTIVATION_THRESHOLD_DEFAULT \ - 67108864 // 64 MiB, 2^26 - -// NOTE: If function expat_alloc was user facing, EXPAT_MALLOC_ALIGNMENT would -// have to take sizeof(long double) into account -#define EXPAT_MALLOC_ALIGNMENT sizeof(long long) // largest parser (sub)member -#define EXPAT_MALLOC_PADDING ((EXPAT_MALLOC_ALIGNMENT) - sizeof(size_t)) - /* NOTE END */ #include "expat.h" // so we can use type XML_Parser below @@ -182,9 +168,6 @@ extern #endif XML_Bool g_reparseDeferralEnabledDefault; // written ONLY in runtests.c #if defined(XML_TESTING) -void *expat_malloc(XML_Parser parser, size_t size, int sourceLine); -void expat_free(XML_Parser parser, void *ptr, int sourceLine); -void *expat_realloc(XML_Parser parser, void *ptr, size_t size, int sourceLine); extern unsigned int g_bytesScanned; // used for testing only #endif diff --git a/icecat/parser/expat/expat/lib/moz_expat.h b/icecat/parser/expat/expat/lib/moz_expat.h index ea819162bc..d526229156 100644 --- a/icecat/parser/expat/expat/lib/moz_expat.h +++ b/icecat/parser/expat/expat/lib/moz_expat.h @@ -59,7 +59,7 @@ MOZ_XML_SetExternalEntityRefHandler(XML_Parser parser, void MOZ_XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); -void +enum XML_Status MOZ_XML_SetBase(XML_Parser parser, const XML_Char *base); const XML_Char * @@ -68,15 +68,13 @@ MOZ_XML_GetBase(XML_Parser parser); int MOZ_XML_GetSpecifiedAttributeCount(XML_Parser parser); -// The return value is an XML_Status. -int +enum XML_Status MOZ_XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); -void +enum XML_Status MOZ_XML_StopParser(XML_Parser parser, int resumable); -// The return value is an XML_Status. -int +enum XML_Status MOZ_XML_ResumeParser(XML_Parser parser); XML_Parser @@ -91,8 +89,7 @@ MOZ_XML_SetParamEntityParsing(XML_Parser parser, int MOZ_XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt); -// The return value is an XML_Error. -int +enum XML_Error MOZ_XML_GetErrorCode(XML_Parser parser); XML_Size MOZ_XML_GetCurrentLineNumber(XML_Parser parser); diff --git a/icecat/parser/expat/expat/lib/moz_xmlparse.c b/icecat/parser/expat/expat/lib/moz_xmlparse.c index caeb4ad2e1..ac5a236014 100644 --- a/icecat/parser/expat/expat/lib/moz_xmlparse.c +++ b/icecat/parser/expat/expat/lib/moz_xmlparse.c @@ -75,9 +75,9 @@ MOZ_XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { XML_SetReturnNSTriplet(parser, do_nst); } -void +enum XML_Status MOZ_XML_SetBase(XML_Parser parser, const XML_Char *base) { - XML_SetBase(parser, base); + return XML_SetBase(parser, base); } const XML_Char * @@ -90,17 +90,17 @@ MOZ_XML_GetSpecifiedAttributeCount(XML_Parser parser) { return XML_GetSpecifiedAttributeCount(parser); } -int +enum XML_Status MOZ_XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) { return XML_Parse(parser, s, len, isFinal); } -void +enum XML_Status MOZ_XML_StopParser(XML_Parser parser, int resumable) { - XML_StopParser(parser, resumable); + return XML_StopParser(parser, resumable); } -int +enum XML_Status MOZ_XML_ResumeParser(XML_Parser parser) { return XML_ResumeParser(parser); } @@ -123,7 +123,7 @@ MOZ_XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { return XML_SetHashSalt(parser, hash_salt); } -int +enum XML_Error MOZ_XML_GetErrorCode(XML_Parser parser) { return XML_GetErrorCode(parser); @@ -149,14 +149,3 @@ MOZ_XML_ParserFree(XML_Parser parser) { XML_Bool MOZ_XML_SetReparseDeferralEnabled(XML_Parser parser, int enabled) { return XML_SetReparseDeferralEnabled(parser, enabled); } - -const XML_Char * XMLCALL -MOZ_XML_GetMismatchedTag(XML_Parser parser) -{ - return parser->m_mismatch; -} - -XML_Bool XMLCALL -MOZ_XML_ProcessingEntityValue(XML_Parser parser) { - return parser->m_openInternalEntities != NULL; -} diff --git a/icecat/parser/expat/expat/lib/xmlparse.c b/icecat/parser/expat/expat/lib/xmlparse.c index e4ca4e62e6..5e0aff89c6 100644 --- a/icecat/parser/expat/expat/lib/xmlparse.c +++ b/icecat/parser/expat/expat/lib/xmlparse.c @@ -1,4 +1,4 @@ -/* fab937ab8b186d7d296013669c332e6dfce2f99567882cff1f8eb24223c524a7 (2.7.4+) +/* c5625880f4bf417c1463deee4eb92d86ff413f802048621c57e25fe483eb59e4 (2.6.4+) __ __ _ ___\ \/ /_ __ __ _| |_ / _ \\ /| '_ \ / _` | __| @@ -13,7 +13,7 @@ Copyright (c) 2002-2016 Karl Waclawek Copyright (c) 2005-2009 Steven Solie Copyright (c) 2016 Eric Rahm - Copyright (c) 2016-2026 Sebastian Pipping + Copyright (c) 2016-2024 Sebastian Pipping Copyright (c) 2016 Gaurav Copyright (c) 2016 Thomas Beutlich Copyright (c) 2016 Gustavo Grieco @@ -39,12 +39,8 @@ Copyright (c) 2022 Sean McBride Copyright (c) 2023 Owain Davies Copyright (c) 2023-2024 Sony Corporation / Snild Dolkow - Copyright (c) 2024-2025 Berkay Eren Ürün + Copyright (c) 2024 Berkay Eren Ürün Copyright (c) 2024 Hanno Böck - Copyright (c) 2025 Matthew Fernandez - Copyright (c) 2025 Atrem Borovik - Copyright (c) 2025 Alfonso Gregory - Copyright (c) 2026 Rosen Penev Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -101,10 +97,10 @@ #include #include /* memset(), memcpy() */ #include -#include /* INT_MAX, UINT_MAX */ +#include /* UINT_MAX */ #include /* fprintf */ #include /* getenv, rand_s */ -#include /* SIZE_MAX, uintptr_t */ +#include /* uintptr_t */ #include /* isnan */ #ifdef _WIN32 @@ -137,6 +133,11 @@ # endif /* defined(GRND_NONBLOCK) */ #endif /* defined(HAVE_GETRANDOM) || defined(HAVE_SYSCALL_GETRANDOM) */ +#if defined(HAVE_LIBBSD) \ + && (defined(HAVE_ARC4RANDOM_BUF) || defined(HAVE_ARC4RANDOM)) +# include +#endif + #if defined(_WIN32) && ! defined(LOAD_LIBRARY_SEARCH_SYSTEM32) # define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800 #endif @@ -153,6 +154,8 @@ * Linux >=3.17 + glibc (including <2.25) (syscall SYS_getrandom): HAVE_SYSCALL_GETRANDOM, \ * BSD / macOS >=10.7 / glibc >=2.36 (arc4random_buf): HAVE_ARC4RANDOM_BUF, \ * BSD / macOS (including <10.7) / glibc >=2.36 (arc4random): HAVE_ARC4RANDOM, \ + * libbsd (arc4random_buf): HAVE_ARC4RANDOM_BUF + HAVE_LIBBSD, \ + * libbsd (arc4random): HAVE_ARC4RANDOM + HAVE_LIBBSD, \ * Linux (including <3.17) / BSD / macOS (including <10.7) / Solaris >=8 (/dev/urandom): XML_DEV_URANDOM, \ * Windows >=Vista (rand_s): _WIN32. \ \ @@ -237,7 +240,7 @@ typedef struct { unsigned char power; size_t size; size_t used; - XML_Parser parser; + const XML_Memory_Handling_Suite *mem; } HASH_TABLE; static size_t keylen(KEY s); @@ -315,11 +318,8 @@ typedef struct tag { const char *rawName; /* tagName in the original encoding */ int rawNameLength; TAG_NAME name; /* tagName in the API encoding */ - union { - char *raw; /* for byte-level access (rawName storage) */ - XML_Char *str; /* for character-level access (converted name) */ - } buf; /* buffer for name components */ - char *bufEnd; /* end of the buffer */ + char *buf; /* buffer for name components */ + char *bufEnd; /* end of the buffer */ BINDING *bindings; } TAG; @@ -333,10 +333,6 @@ typedef struct { const XML_Char *publicId; const XML_Char *notation; XML_Bool open; - XML_Bool hasMore; /* true if entity has not been completely processed */ - /* An entity can be open while being already completely processed (hasMore == - XML_FALSE). The reason is the delayed closing of entities until their inner - entities are processed and closed */ XML_Bool is_param; XML_Bool is_internal; /* true if declared in internal subset outside PE */ } ENTITY; @@ -356,7 +352,7 @@ typedef struct { typedef struct block { struct block *next; int size; - XML_Char s[]; + XML_Char s[1]; } BLOCK; typedef struct { @@ -365,7 +361,7 @@ typedef struct { const XML_Char *end; XML_Char *ptr; XML_Char *start; - XML_Parser parser; + const XML_Memory_Handling_Suite *mem; } STRING_POOL; /* The XML_Char before the name is used to determine whether @@ -427,12 +423,6 @@ typedef struct { int *scaffIndex; } DTD; -enum EntityType { - ENTITY_INTERNAL, - ENTITY_ATTRIBUTE, - ENTITY_VALUE, -}; - typedef struct open_internal_entity { const char *internalEventPtr; const char *internalEventEndPtr; @@ -440,7 +430,6 @@ typedef struct open_internal_entity { ENTITY *entity; int startTagLevel; XML_Bool betweenDecl; /* WFC: PE Between Declarations */ - enum EntityType type; } OPEN_INTERNAL_ENTITY; enum XML_Account { @@ -464,18 +453,6 @@ typedef struct accounting { unsigned long long activationThresholdBytes; } ACCOUNTING; -typedef struct MALLOC_TRACKER { - XmlBigCount bytesAllocated; -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -# if 0 - XmlBigCount peakBytesAllocated; // updated live only for debug level >=2 - unsigned long debugLevel; -#endif -/* END MOZILLA CHANGE */ - float maximumAmplificationFactor; // >=1.0 - XmlBigCount activationThresholdBytes; -} MALLOC_TRACKER; - typedef struct entity_stats { /* BEGIN MOZILLA CHANGE (don't report debug information) */ #if 0 @@ -520,8 +497,8 @@ static enum XML_Error doProlog(XML_Parser parser, const ENCODING *enc, const char *next, const char **nextPtr, XML_Bool haveMore, XML_Bool allowClosingDoctype, enum XML_Account account); -static enum XML_Error processEntity(XML_Parser parser, ENTITY *entity, - XML_Bool betweenDecl, enum EntityType type); +static enum XML_Error processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl); /* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ static enum XML_Error doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, const char *start, @@ -559,22 +536,18 @@ static enum XML_Error storeAttributeValue(XML_Parser parser, const char *ptr, const char *end, STRING_POOL *pool, enum XML_Account account); -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, - const char *ptr, const char *end, STRING_POOL *pool, - enum XML_Account account, const char **nextPtr); +static enum XML_Error appendAttributeValue(XML_Parser parser, + const ENCODING *enc, + XML_Bool isCdata, const char *ptr, + const char *end, STRING_POOL *pool, + enum XML_Account account); static ATTRIBUTE_ID *getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType); #if XML_GE == 1 static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, const char *end, - enum XML_Account account, - const char **nextPtr); -static enum XML_Error callStoreEntityValue(XML_Parser parser, - const ENCODING *enc, - const char *start, const char *end, - enum XML_Account account); + enum XML_Account account); #else static enum XML_Error storeSelfEntityValue(XML_Parser parser, ENTITY *entity); #endif @@ -590,21 +563,23 @@ static XML_Bool setContext(XML_Parser parser, const XML_Char *context); static void FASTCALL normalizePublicId(XML_Char *s); -static DTD *dtdCreate(XML_Parser parser); +static DTD *dtdCreate(const XML_Memory_Handling_Suite *ms); /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 /* do not call if m_parentParser != NULL */ -static void dtdReset(DTD *p, XML_Parser parser); +static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); #endif /* END MOZILLA CHANGE */ -static void dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser); +static void dtdDestroy(DTD *p, XML_Bool isDocEntity, + const XML_Memory_Handling_Suite *ms); static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, - XML_Parser parser); + const XML_Memory_Handling_Suite *ms); static int copyEntityTable(XML_Parser oldParser, HASH_TABLE *newTable, STRING_POOL *newPool, const HASH_TABLE *oldTable); static NAMED *lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize); -static void FASTCALL hashTableInit(HASH_TABLE *table, XML_Parser parser); +static void FASTCALL hashTableInit(HASH_TABLE *table, + const XML_Memory_Handling_Suite *ms); /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 static void FASTCALL hashTableClear(HASH_TABLE *table); @@ -615,7 +590,8 @@ static void FASTCALL hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table); static NAMED *FASTCALL hashTableIterNext(HASH_TABLE_ITER *iter); -static void FASTCALL poolInit(STRING_POOL *pool, XML_Parser parser); +static void FASTCALL poolInit(STRING_POOL *pool, + const XML_Memory_Handling_Suite *ms); static void FASTCALL poolClear(STRING_POOL *pool); static void FASTCALL poolDestroy(STRING_POOL *pool); static XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, @@ -635,15 +611,15 @@ static XML_Content *build_model(XML_Parser parser); static ELEMENT_TYPE *getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, const char *end); -static XML_Char *copyString(const XML_Char *s, XML_Parser parser); +static XML_Char *copyString(const XML_Char *s, + const XML_Memory_Handling_Suite *memsuite); static unsigned long generate_hash_secret_salt(XML_Parser parser); static XML_Bool startParsing(XML_Parser parser); static XML_Parser parserCreate(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep, DTD *dtd, - XML_Parser parentParser); + const XML_Char *nameSep, DTD *dtd); static void parserInit(XML_Parser parser, const XML_Char *encodingName); @@ -675,10 +651,10 @@ static void entityTrackingOnOpen(XML_Parser parser, ENTITY *entity, int sourceLine); static void entityTrackingOnClose(XML_Parser parser, ENTITY *entity, int sourceLine); -#endif /* XML_GE == 1 */ static XML_Parser getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff); +#endif /* XML_GE == 1 */ /* BEGIN MOZILLA CHANGE (don't report debug information) */ #if 0 @@ -776,10 +752,6 @@ struct XML_ParserStruct { const char *m_positionPtr; OPEN_INTERNAL_ENTITY *m_openInternalEntities; OPEN_INTERNAL_ENTITY *m_freeInternalEntities; - OPEN_INTERNAL_ENTITY *m_openAttributeEntities; - OPEN_INTERNAL_ENTITY *m_freeAttributeEntities; - OPEN_INTERNAL_ENTITY *m_openValueEntities; - OPEN_INTERNAL_ENTITY *m_freeValueEntities; XML_Bool m_defaultExpandInternalEntities; int m_tagLevel; ENTITY *m_declEntity; @@ -825,261 +797,16 @@ struct XML_ParserStruct { unsigned long m_hash_secret_salt; #if XML_GE == 1 ACCOUNTING m_accounting; - MALLOC_TRACKER m_alloc_tracker; ENTITY_STATS m_entity_stats; #endif - XML_Bool m_reenter; /* BEGIN MOZILLA CHANGE (Report opening tag of mismatched closing tag) */ const XML_Char* m_mismatch; /* END MOZILLA CHANGE */ }; -#if XML_GE == 1 -# define MALLOC(parser, s) (expat_malloc((parser), (s), __LINE__)) -# define REALLOC(parser, p, s) (expat_realloc((parser), (p), (s), __LINE__)) -# define FREE(parser, p) (expat_free((parser), (p), __LINE__)) -#else -# define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) -# define REALLOC(parser, p, s) (parser->m_mem.realloc_fcn((p), (s))) -# define FREE(parser, p) (parser->m_mem.free_fcn((p))) -#endif - -#if XML_GE == 1 -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -#if 0 -static void -expat_heap_stat(XML_Parser rootParser, char operator, XmlBigCount absDiff, - XmlBigCount newTotal, XmlBigCount peakTotal, int sourceLine) { - // NOTE: This can be +infinity or -nan - const float amplification - = (float)newTotal / (float)rootParser->m_accounting.countBytesDirect; - fprintf( - stderr, - "expat: Allocations(%p): Direct " EXPAT_FMT_ULL("10") ", allocated %c" EXPAT_FMT_ULL( - "10") " to " EXPAT_FMT_ULL("10") " (" EXPAT_FMT_ULL("10") " peak), amplification %8.2f (xmlparse.c:%d)\n", - (void *)rootParser, rootParser->m_accounting.countBytesDirect, operator, - absDiff, newTotal, peakTotal, (double)amplification, sourceLine); -} -#endif -/* END MOZILLA CHANGE */ - -static bool -expat_heap_increase_tolerable(XML_Parser rootParser, XmlBigCount increase, - int sourceLine) { - assert(rootParser != NULL); - assert(increase > 0); - - XmlBigCount newTotal = 0; - bool tolerable = true; - - // Detect integer overflow - if ((XmlBigCount)-1 - rootParser->m_alloc_tracker.bytesAllocated < increase) { - tolerable = false; - } else { - newTotal = rootParser->m_alloc_tracker.bytesAllocated + increase; - - if (newTotal >= rootParser->m_alloc_tracker.activationThresholdBytes) { - assert(newTotal > 0); - // NOTE: This can be +infinity when dividing by zero but not -nan - const float amplification - = (float)newTotal / (float)rootParser->m_accounting.countBytesDirect; - if (amplification - > rootParser->m_alloc_tracker.maximumAmplificationFactor) { - tolerable = false; - } - } - } - -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -#if 0 - if (! tolerable && (rootParser->m_alloc_tracker.debugLevel >= 1)) { - expat_heap_stat(rootParser, '+', increase, newTotal, newTotal, sourceLine); - } -#endif -/* END MOZILLA CHANGE */ - - return tolerable; -} - -# if defined(XML_TESTING) -void * -# else -static void * -# endif -expat_malloc(XML_Parser parser, size_t size, int sourceLine) { - // Detect integer overflow - if (SIZE_MAX - size < sizeof(size_t) + EXPAT_MALLOC_PADDING) { - return NULL; - } - - const XML_Parser rootParser = getRootParserOf(parser, NULL); - assert(rootParser->m_parentParser == NULL); - - const size_t bytesToAllocate = sizeof(size_t) + EXPAT_MALLOC_PADDING + size; - - if ((XmlBigCount)-1 - rootParser->m_alloc_tracker.bytesAllocated - < bytesToAllocate) { - return NULL; // i.e. signal integer overflow as out-of-memory - } - - if (! expat_heap_increase_tolerable(rootParser, bytesToAllocate, - sourceLine)) { - return NULL; // i.e. signal violation as out-of-memory - } - - // Actually allocate - void *const mallocedPtr = parser->m_mem.malloc_fcn(bytesToAllocate); - - if (mallocedPtr == NULL) { - return NULL; - } - - // Update in-block recorded size - *(size_t *)mallocedPtr = size; - - // Update accounting - rootParser->m_alloc_tracker.bytesAllocated += bytesToAllocate; - -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -#if 0 - // Report as needed - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - if (rootParser->m_alloc_tracker.bytesAllocated - > rootParser->m_alloc_tracker.peakBytesAllocated) { - rootParser->m_alloc_tracker.peakBytesAllocated - = rootParser->m_alloc_tracker.bytesAllocated; - } - expat_heap_stat(rootParser, '+', bytesToAllocate, - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, sourceLine); - } -#endif -/* END MOZILLA CHANGE */ - - return (char *)mallocedPtr + sizeof(size_t) + EXPAT_MALLOC_PADDING; -} - -# if defined(XML_TESTING) -void -# else -static void -# endif -expat_free(XML_Parser parser, void *ptr, int sourceLine) { - assert(parser != NULL); - - if (ptr == NULL) { - return; - } - - const XML_Parser rootParser = getRootParserOf(parser, NULL); - assert(rootParser->m_parentParser == NULL); - - // Extract size (to the eyes of malloc_fcn/realloc_fcn) and - // the original pointer returned by malloc/realloc - void *const mallocedPtr = (char *)ptr - EXPAT_MALLOC_PADDING - sizeof(size_t); - const size_t bytesAllocated - = sizeof(size_t) + EXPAT_MALLOC_PADDING + *(size_t *)mallocedPtr; - - // Update accounting - assert(rootParser->m_alloc_tracker.bytesAllocated >= bytesAllocated); - rootParser->m_alloc_tracker.bytesAllocated -= bytesAllocated; - -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -#if 0 - // Report as needed - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - expat_heap_stat(rootParser, '-', bytesAllocated, - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, sourceLine); - } -#endif -/* END MOZILLA CHANGE */ - - // NOTE: This may be freeing rootParser, so freeing has to come last - parser->m_mem.free_fcn(mallocedPtr); -} - -# if defined(XML_TESTING) -void * -# else -static void * -# endif -expat_realloc(XML_Parser parser, void *ptr, size_t size, int sourceLine) { - assert(parser != NULL); - - if (ptr == NULL) { - return expat_malloc(parser, size, sourceLine); - } - - if (size == 0) { - expat_free(parser, ptr, sourceLine); - return NULL; - } - - const XML_Parser rootParser = getRootParserOf(parser, NULL); - assert(rootParser->m_parentParser == NULL); - - // Extract original size (to the eyes of the caller) and the original - // pointer returned by malloc/realloc - void *mallocedPtr = (char *)ptr - EXPAT_MALLOC_PADDING - sizeof(size_t); - const size_t prevSize = *(size_t *)mallocedPtr; - - // Classify upcoming change - const bool isIncrease = (size > prevSize); - const size_t absDiff - = (size > prevSize) ? (size - prevSize) : (prevSize - size); - - // Ask for permission from accounting - if (isIncrease) { - if (! expat_heap_increase_tolerable(rootParser, absDiff, sourceLine)) { - return NULL; // i.e. signal violation as out-of-memory - } - } - - // NOTE: Integer overflow detection has already been done for us - // by expat_heap_increase_tolerable(..) above - assert(SIZE_MAX - sizeof(size_t) - EXPAT_MALLOC_PADDING >= size); - - // Actually allocate - mallocedPtr = parser->m_mem.realloc_fcn( - mallocedPtr, sizeof(size_t) + EXPAT_MALLOC_PADDING + size); - - if (mallocedPtr == NULL) { - return NULL; - } - - // Update accounting - if (isIncrease) { - assert((XmlBigCount)-1 - rootParser->m_alloc_tracker.bytesAllocated - >= absDiff); - rootParser->m_alloc_tracker.bytesAllocated += absDiff; - } else { // i.e. decrease - assert(rootParser->m_alloc_tracker.bytesAllocated >= absDiff); - rootParser->m_alloc_tracker.bytesAllocated -= absDiff; - } - -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -#if 0 - // Report as needed - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - if (rootParser->m_alloc_tracker.bytesAllocated - > rootParser->m_alloc_tracker.peakBytesAllocated) { - rootParser->m_alloc_tracker.peakBytesAllocated - = rootParser->m_alloc_tracker.bytesAllocated; - } - expat_heap_stat(rootParser, isIncrease ? '+' : '-', absDiff, - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, sourceLine); - } -#endif -/* END MOZILLA CHANGE */ - - // Update in-block recorded size - *(size_t *)mallocedPtr = size; - - return (char *)mallocedPtr + sizeof(size_t) + EXPAT_MALLOC_PADDING; -} -#endif // XML_GE == 1 +#define MALLOC(parser, s) (parser->m_mem.malloc_fcn((s))) +#define REALLOC(parser, p, s) (parser->m_mem.realloc_fcn((p), (s))) +#define FREE(parser, p) (parser->m_mem.free_fcn((p))) /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 @@ -1126,14 +853,11 @@ writeRandomBytes_getrandom_nonblock(void *target, size_t count) { void *const currentTarget = (void *)((char *)target + bytesWrittenTotal); const size_t bytesToWrite = count - bytesWrittenTotal; - assert(bytesToWrite <= INT_MAX); - const int bytesWrittenMore = # if defined(HAVE_GETRANDOM) - (int)getrandom(currentTarget, bytesToWrite, getrandomFlags); + getrandom(currentTarget, bytesToWrite, getrandomFlags); # else - (int)syscall(SYS_getrandom, currentTarget, bytesToWrite, - getrandomFlags); + syscall(SYS_getrandom, currentTarget, bytesToWrite, getrandomFlags); # endif if (bytesWrittenMore > 0) { @@ -1309,11 +1033,8 @@ generate_hash_secret_salt(XML_Parser parser) { # endif /* ! defined(_WIN32) && defined(XML_DEV_URANDOM) */ /* .. and self-made low quality for backup: */ - entropy = gather_time_entropy(); -# if ! defined(__wasi__) /* Process ID is 0 bits entropy if attacker has local access */ - entropy ^= getpid(); -# endif + entropy = gather_time_entropy() ^ getpid(); /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */ if (sizeof(unsigned long) == 4) { @@ -1331,10 +1052,9 @@ generate_hash_secret_salt(XML_Parser parser) { static unsigned long get_hash_secret_salt(XML_Parser parser) { - const XML_Parser rootParser = getRootParserOf(parser, NULL); - assert(! rootParser->m_parentParser); - - return rootParser->m_hash_secret_salt; + if (parser->m_parentParser != NULL) + return get_hash_secret_salt(parser->m_parentParser); + return parser->m_hash_secret_salt; } static enum XML_Error @@ -1368,29 +1088,7 @@ callProcessor(XML_Parser parser, const char *start, const char *end, #if defined(XML_TESTING) g_bytesScanned += (unsigned)have_now; #endif - // Run in a loop to eliminate dangerous recursion depths - enum XML_Error ret; - *endPtr = start; - while (1) { - // Use endPtr as the new start in each iteration, since it will - // be set to the next start point by m_processor. - ret = parser->m_processor(parser, *endPtr, end, endPtr); - - // Make parsing status (and in particular XML_SUSPENDED) take - // precedence over re-enter flag when they disagree - if (parser->m_parsingStatus.parsing != XML_PARSING) { - parser->m_reenter = XML_FALSE; - } - - if (! parser->m_reenter) { - break; - } - - parser->m_reenter = XML_FALSE; - if (ret != XML_ERROR_NONE) - return ret; - } - + const enum XML_Error ret = parser->m_processor(parser, start, end, endPtr); if (ret == XML_ERROR_NONE) { // if we consumed nothing, remember what we had on this parse attempt. if (*endPtr == start) { @@ -1420,43 +1118,19 @@ XML_Parser XMLCALL XML_ParserCreate_MM(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep) { - return parserCreate(encodingName, memsuite, nameSep, NULL, NULL); + return parserCreate(encodingName, memsuite, nameSep, NULL); } static XML_Parser parserCreate(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep, - DTD *dtd, XML_Parser parentParser) { - XML_Parser parser = NULL; - -#if XML_GE == 1 - const size_t increase - = sizeof(size_t) + EXPAT_MALLOC_PADDING + sizeof(struct XML_ParserStruct); - - if (parentParser != NULL) { - const XML_Parser rootParser = getRootParserOf(parentParser, NULL); - if (! expat_heap_increase_tolerable(rootParser, increase, __LINE__)) { - return NULL; - } - } -#else - UNUSED_P(parentParser); -#endif + DTD *dtd) { + XML_Parser parser; if (memsuite) { XML_Memory_Handling_Suite *mtemp; -#if XML_GE == 1 - void *const sizeAndParser - = memsuite->malloc_fcn(sizeof(size_t) + EXPAT_MALLOC_PADDING - + sizeof(struct XML_ParserStruct)); - if (sizeAndParser != NULL) { - *(size_t *)sizeAndParser = sizeof(struct XML_ParserStruct); - parser = (XML_Parser)((char *)sizeAndParser + sizeof(size_t) - + EXPAT_MALLOC_PADDING); -#else parser = memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); if (parser != NULL) { -#endif mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); mtemp->malloc_fcn = memsuite->malloc_fcn; mtemp->realloc_fcn = memsuite->realloc_fcn; @@ -1464,94 +1138,39 @@ parserCreate(const XML_Char *encodingName, } } else { XML_Memory_Handling_Suite *mtemp; -#if XML_GE == 1 - void *const sizeAndParser = malloc(sizeof(size_t) + EXPAT_MALLOC_PADDING - + sizeof(struct XML_ParserStruct)); - if (sizeAndParser != NULL) { - *(size_t *)sizeAndParser = sizeof(struct XML_ParserStruct); - parser = (XML_Parser)((char *)sizeAndParser + sizeof(size_t) - + EXPAT_MALLOC_PADDING); -#else - parser = malloc(sizeof(struct XML_ParserStruct)); + parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); if (parser != NULL) { -#endif mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); mtemp->malloc_fcn = malloc; mtemp->realloc_fcn = realloc; mtemp->free_fcn = free; } - } // cppcheck-suppress[memleak symbolName=sizeAndParser] // Cppcheck >=2.18.0 + } if (! parser) return parser; -#if XML_GE == 1 - // Initialize .m_alloc_tracker - memset(&parser->m_alloc_tracker, 0, sizeof(MALLOC_TRACKER)); - if (parentParser == NULL) { -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -#if 0 - parser->m_alloc_tracker.debugLevel - = getDebugLevel("EXPAT_MALLOC_DEBUG", 0u); -#endif -/* END MOZILLA CHANGE */ - parser->m_alloc_tracker.maximumAmplificationFactor - = EXPAT_ALLOC_TRACKER_MAXIMUM_AMPLIFICATION_DEFAULT; - parser->m_alloc_tracker.activationThresholdBytes - = EXPAT_ALLOC_TRACKER_ACTIVATION_THRESHOLD_DEFAULT; - - // NOTE: This initialization needs to come this early because these fields - // are read by allocation tracking code - parser->m_parentParser = NULL; - parser->m_accounting.countBytesDirect = 0; - } else { - parser->m_parentParser = parentParser; - } - - // Record XML_ParserStruct allocation we did a few lines up before - const XML_Parser rootParser = getRootParserOf(parser, NULL); - assert(rootParser->m_parentParser == NULL); - assert(SIZE_MAX - rootParser->m_alloc_tracker.bytesAllocated >= increase); - rootParser->m_alloc_tracker.bytesAllocated += increase; - -/* BEGIN MOZILLA CHANGE (don't report debug information) */ -#if 0 - // Report on allocation - if (rootParser->m_alloc_tracker.debugLevel >= 2) { - if (rootParser->m_alloc_tracker.bytesAllocated - > rootParser->m_alloc_tracker.peakBytesAllocated) { - rootParser->m_alloc_tracker.peakBytesAllocated - = rootParser->m_alloc_tracker.bytesAllocated; - } - - expat_heap_stat(rootParser, '+', increase, - rootParser->m_alloc_tracker.bytesAllocated, - rootParser->m_alloc_tracker.peakBytesAllocated, __LINE__); - } -#endif -/* END MOZILLA CHANGE */ -#else - parser->m_parentParser = NULL; -#endif // XML_GE == 1 - parser->m_buffer = NULL; parser->m_bufferLim = NULL; parser->m_attsSize = INIT_ATTS_SIZE; - parser->m_atts = MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); + parser->m_atts + = (ATTRIBUTE *)MALLOC(parser, parser->m_attsSize * sizeof(ATTRIBUTE)); if (parser->m_atts == NULL) { FREE(parser, parser); return NULL; } #ifdef XML_ATTR_INFO - parser->m_attInfo = MALLOC(parser, parser->m_attsSize * sizeof(XML_AttrInfo)); + parser->m_attInfo = (XML_AttrInfo *)MALLOC( + parser, parser->m_attsSize * sizeof(XML_AttrInfo)); if (parser->m_attInfo == NULL) { FREE(parser, parser->m_atts); FREE(parser, parser); return NULL; } #endif - parser->m_dataBuf = MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); + parser->m_dataBuf + = (XML_Char *)MALLOC(parser, INIT_DATA_BUF_SIZE * sizeof(XML_Char)); if (parser->m_dataBuf == NULL) { FREE(parser, parser->m_atts); #ifdef XML_ATTR_INFO @@ -1565,7 +1184,7 @@ parserCreate(const XML_Char *encodingName, if (dtd) parser->m_dtd = dtd; else { - parser->m_dtd = dtdCreate(parser); + parser->m_dtd = dtdCreate(&parser->m_mem); if (parser->m_dtd == NULL) { FREE(parser, parser->m_dataBuf); FREE(parser, parser->m_atts); @@ -1580,8 +1199,6 @@ parserCreate(const XML_Char *encodingName, parser->m_freeBindingList = NULL; parser->m_freeTagList = NULL; parser->m_freeInternalEntities = NULL; - parser->m_freeAttributeEntities = NULL; - parser->m_freeValueEntities = NULL; parser->m_groupSize = 0; parser->m_groupConnector = NULL; @@ -1599,8 +1216,8 @@ parserCreate(const XML_Char *encodingName, parser->m_protocolEncodingName = NULL; - poolInit(&parser->m_tempPool, parser); - poolInit(&parser->m_temp2Pool, parser); + poolInit(&parser->m_tempPool, &(parser->m_mem)); + poolInit(&parser->m_temp2Pool, &(parser->m_mem)); parserInit(parser, encodingName); if (encodingName && ! parser->m_protocolEncodingName) { @@ -1636,7 +1253,7 @@ parserInit(XML_Parser parser, const XML_Char *encodingName) { parser->m_processor = prologInitProcessor; XmlPrologStateInit(&parser->m_prologState); if (encodingName != NULL) { - parser->m_protocolEncodingName = copyString(encodingName, parser); + parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); } parser->m_curBase = NULL; XmlInitEncoding(&parser->m_initEncoding, &parser->m_encoding, 0); @@ -1688,8 +1305,6 @@ parserInit(XML_Parser parser, const XML_Char *encodingName) { parser->m_eventEndPtr = NULL; parser->m_positionPtr = NULL; parser->m_openInternalEntities = NULL; - parser->m_openAttributeEntities = NULL; - parser->m_openValueEntities = NULL; parser->m_defaultExpandInternalEntities = XML_TRUE; parser->m_tagLevel = 0; parser->m_tagStack = NULL; @@ -1698,9 +1313,8 @@ parserInit(XML_Parser parser, const XML_Char *encodingName) { parser->m_unknownEncodingMem = NULL; parser->m_unknownEncodingRelease = NULL; parser->m_unknownEncodingData = NULL; + parser->m_parentParser = NULL; parser->m_parsingStatus.parsing = XML_INITIALIZED; - // Reentry can only be triggered inside m_processor calls - parser->m_reenter = XML_FALSE; #ifdef XML_DTD parser->m_isParamEntity = XML_FALSE; parser->m_useForeignDTD = XML_FALSE; @@ -1770,24 +1384,6 @@ XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { openEntity->next = parser->m_freeInternalEntities; parser->m_freeInternalEntities = openEntity; } - /* move m_openAttributeEntities to m_freeAttributeEntities (i.e. same task but - * for attributes) */ - openEntityList = parser->m_openAttributeEntities; - while (openEntityList) { - OPEN_INTERNAL_ENTITY *openEntity = openEntityList; - openEntityList = openEntity->next; - openEntity->next = parser->m_freeAttributeEntities; - parser->m_freeAttributeEntities = openEntity; - } - /* move m_openValueEntities to m_freeValueEntities (i.e. same task but - * for value entities) */ - openEntityList = parser->m_openValueEntities; - while (openEntityList) { - OPEN_INTERNAL_ENTITY *openEntity = openEntityList; - openEntityList = openEntity->next; - openEntity->next = parser->m_freeValueEntities; - parser->m_freeValueEntities = openEntity; - } moveToFreeBindingList(parser, parser->m_inheritedBindings); FREE(parser, parser->m_unknownEncodingMem); if (parser->m_unknownEncodingRelease) @@ -1797,27 +1393,10 @@ XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) { FREE(parser, (void *)parser->m_protocolEncodingName); parser->m_protocolEncodingName = NULL; parserInit(parser, encodingName); - dtdReset(parser->m_dtd, parser); + dtdReset(parser->m_dtd, &parser->m_mem); return XML_TRUE; } -#endif -/* END MOZILLA CHANGE */ -static XML_Bool -parserBusy(XML_Parser parser) { - switch (parser->m_parsingStatus.parsing) { - case XML_PARSING: - case XML_SUSPENDED: - return XML_TRUE; - case XML_INITIALIZED: - case XML_FINISHED: - default: - return XML_FALSE; - } -} - -/* BEGIN MOZILLA CHANGE (unused API) */ -#if 0 enum XML_Status XMLCALL XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { if (parser == NULL) @@ -1826,7 +1405,8 @@ XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { XXX There's no way for the caller to determine which of the XXX possible error cases caused the XML_STATUS_ERROR return. */ - if (parserBusy(parser)) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return XML_STATUS_ERROR; /* Get rid of any previous encoding name */ @@ -1837,7 +1417,7 @@ XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) { parser->m_protocolEncodingName = NULL; else { /* Copy the new encoding name into allocated memory */ - parser->m_protocolEncodingName = copyString(encodingName, parser); + parser->m_protocolEncodingName = copyString(encodingName, &(parser->m_mem)); if (! parser->m_protocolEncodingName) return XML_STATUS_ERROR; } @@ -1868,7 +1448,6 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, XML_ExternalEntityRefHandler oldExternalEntityRefHandler; XML_SkippedEntityHandler oldSkippedEntityHandler; XML_UnknownEncodingHandler oldUnknownEncodingHandler; - void *oldUnknownEncodingHandlerData; XML_ElementDeclHandler oldElementDeclHandler; XML_AttlistDeclHandler oldAttlistDeclHandler; XML_EntityDeclHandler oldEntityDeclHandler; @@ -1914,7 +1493,6 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, oldExternalEntityRefHandler = parser->m_externalEntityRefHandler; oldSkippedEntityHandler = parser->m_skippedEntityHandler; oldUnknownEncodingHandler = parser->m_unknownEncodingHandler; - oldUnknownEncodingHandlerData = parser->m_unknownEncodingHandlerData; oldElementDeclHandler = parser->m_elementDeclHandler; oldAttlistDeclHandler = parser->m_attlistDeclHandler; oldEntityDeclHandler = parser->m_entityDeclHandler; @@ -1950,10 +1528,9 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, */ if (parser->m_ns) { XML_Char tmp[2] = {parser->m_namespaceSeparator, 0}; - parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd, oldParser); + parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); } else { - parser - = parserCreate(encodingName, &parser->m_mem, NULL, newDtd, oldParser); + parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); } if (! parser) @@ -1975,7 +1552,6 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, parser->m_externalEntityRefHandler = oldExternalEntityRefHandler; parser->m_skippedEntityHandler = oldSkippedEntityHandler; parser->m_unknownEncodingHandler = oldUnknownEncodingHandler; - parser->m_unknownEncodingHandlerData = oldUnknownEncodingHandlerData; parser->m_elementDeclHandler = oldElementDeclHandler; parser->m_attlistDeclHandler = oldAttlistDeclHandler; parser->m_entityDeclHandler = oldEntityDeclHandler; @@ -1998,7 +1574,7 @@ XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, parser->m_prologState.inEntityValue = oldInEntityValue; if (context) { #endif /* XML_DTD */ - if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, parser) + if (! dtdCopy(oldParser, parser->m_dtd, oldDtd, &parser->m_mem) || ! setContext(parser, context)) { XML_ParserFree(parser); return NULL; @@ -2051,7 +1627,7 @@ XML_ParserFree(XML_Parser parser) { } p = tagList; tagList = tagList->parent; - FREE(parser, p->buf.raw); + FREE(parser, p->buf); destroyBindings(p->bindings, parser); FREE(parser, p); } @@ -2069,34 +1645,7 @@ XML_ParserFree(XML_Parser parser) { entityList = entityList->next; FREE(parser, openEntity); } - /* free m_openAttributeEntities and m_freeAttributeEntities */ - entityList = parser->m_openAttributeEntities; - for (;;) { - OPEN_INTERNAL_ENTITY *openEntity; - if (entityList == NULL) { - if (parser->m_freeAttributeEntities == NULL) - break; - entityList = parser->m_freeAttributeEntities; - parser->m_freeAttributeEntities = NULL; - } - openEntity = entityList; - entityList = entityList->next; - FREE(parser, openEntity); - } - /* free m_openValueEntities and m_freeValueEntities */ - entityList = parser->m_openValueEntities; - for (;;) { - OPEN_INTERNAL_ENTITY *openEntity; - if (entityList == NULL) { - if (parser->m_freeValueEntities == NULL) - break; - entityList = parser->m_freeValueEntities; - parser->m_freeValueEntities = NULL; - } - openEntity = entityList; - entityList = entityList->next; - FREE(parser, openEntity); - } + destroyBindings(parser->m_freeBindingList, parser); destroyBindings(parser->m_inheritedBindings, parser); poolDestroy(&parser->m_tempPool); @@ -2110,16 +1659,14 @@ XML_ParserFree(XML_Parser parser) { #else if (parser->m_dtd) #endif /* XML_DTD */ - dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, parser); - FREE(parser, parser->m_atts); + dtdDestroy(parser->m_dtd, (XML_Bool)! parser->m_parentParser, + &parser->m_mem); + FREE(parser, (void *)parser->m_atts); #ifdef XML_ATTR_INFO - FREE(parser, parser->m_attInfo); + FREE(parser, (void *)parser->m_attInfo); #endif FREE(parser, parser->m_groupConnector); - // NOTE: We are avoiding FREE(..) here because parser->m_buffer - // is not being allocated with MALLOC(..) but with plain - // .malloc_fcn(..). - parser->m_mem.free_fcn(parser->m_buffer); + FREE(parser, parser->m_buffer); FREE(parser, parser->m_dataBuf); FREE(parser, parser->m_nsAtts); FREE(parser, parser->m_unknownEncodingMem); @@ -2142,7 +1689,8 @@ XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) { return XML_ERROR_INVALID_ARGUMENT; #ifdef XML_DTD /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parserBusy(parser)) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; parser->m_useForeignDTD = useDTD; return XML_ERROR_NONE; @@ -2159,7 +1707,8 @@ XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { if (parser == NULL) return; /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parserBusy(parser)) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return; parser->m_ns_triplets = do_nst ? XML_TRUE : XML_FALSE; } @@ -2448,7 +1997,8 @@ XML_SetParamEntityParsing(XML_Parser parser, if (parser == NULL) return 0; /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parserBusy(parser)) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return 0; #ifdef XML_DTD parser->m_paramEntityParsing = peParsing; @@ -2462,14 +2012,13 @@ int XMLCALL XML_SetHashSalt(XML_Parser parser, unsigned long hash_salt) { if (parser == NULL) return 0; - - const XML_Parser rootParser = getRootParserOf(parser, NULL); - assert(! rootParser->m_parentParser); - + if (parser->m_parentParser) + return XML_SetHashSalt(parser->m_parentParser, hash_salt); /* block after XML_Parse()/XML_ParseBuffer() has been called */ - if (parserBusy(rootParser)) + if (parser->m_parsingStatus.parsing == XML_PARSING + || parser->m_parsingStatus.parsing == XML_SUSPENDED) return 0; - rootParser->m_hash_secret_salt = hash_salt; + parser->m_hash_secret_salt = hash_salt; return 1; } @@ -2652,10 +2201,6 @@ XML_ParseBuffer(XML_Parser parser, int len, int isFinal) { XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, parser->m_bufferPtr, &parser->m_position); parser->m_positionPtr = parser->m_bufferPtr; -/* BEGIN MOZILLA CHANGE (always set m_eventPtr/m_eventEndPtr) */ - parser->m_eventPtr = parser->m_bufferPtr; - parser->m_eventEndPtr = parser->m_bufferPtr; -/* END MOZILLA CHANGE */ return result; } @@ -2741,10 +2286,8 @@ XML_GetBuffer(XML_Parser parser, int len) { parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } - // NOTE: We are avoiding MALLOC(..) here to leave limiting - // the input size to the application using Expat. - newBuf = parser->m_mem.malloc_fcn(bufferSize); - if (newBuf == NULL) { + newBuf = (char *)MALLOC(parser, bufferSize); + if (newBuf == 0) { parser->m_errorCode = XML_ERROR_NO_MEMORY; return NULL; } @@ -2754,10 +2297,7 @@ XML_GetBuffer(XML_Parser parser, int len) { memcpy(newBuf, &parser->m_bufferPtr[-keep], EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr) + keep); - // NOTE: We are avoiding FREE(..) here because parser->m_buffer - // is not being allocated with MALLOC(..) but with plain - // .malloc_fcn(..). - parser->m_mem.free_fcn(parser->m_buffer); + FREE(parser, parser->m_buffer); parser->m_buffer = newBuf; parser->m_bufferEnd = parser->m_buffer @@ -2773,10 +2313,7 @@ XML_GetBuffer(XML_Parser parser, int len) { if (parser->m_bufferPtr) { memcpy(newBuf, parser->m_bufferPtr, EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr)); - // NOTE: We are avoiding FREE(..) here because parser->m_buffer - // is not being allocated with MALLOC(..) but with plain - // .malloc_fcn(..). - parser->m_mem.free_fcn(parser->m_buffer); + FREE(parser, parser->m_buffer); parser->m_bufferEnd = newBuf + EXPAT_SAFE_PTR_DIFF(parser->m_bufferEnd, parser->m_bufferPtr); @@ -2793,11 +2330,6 @@ XML_GetBuffer(XML_Parser parser, int len) { return parser->m_bufferEnd; } -static void -triggerReenter(XML_Parser parser) { - parser->m_reenter = XML_TRUE; -} - enum XML_Status XMLCALL XML_StopParser(XML_Parser parser, XML_Bool resumable) { if (parser == NULL) @@ -2871,6 +2403,10 @@ XML_ResumeParser(XML_Parser parser) { XmlUpdatePosition(parser->m_encoding, parser->m_positionPtr, parser->m_bufferPtr, &parser->m_position); parser->m_positionPtr = parser->m_bufferPtr; +/* BEGIN MOZILLA CHANGE (always set m_eventPtr/m_eventEndPtr) */ + parser->m_eventPtr = parser->m_bufferPtr; + parser->m_eventEndPtr = parser->m_bufferPtr; +/* END MOZILLA CHANGE */ return result; } @@ -2966,43 +2502,28 @@ XML_GetCurrentColumnNumber(XML_Parser parser) { #if 0 void XMLCALL XML_FreeContentModel(XML_Parser parser, XML_Content *model) { - if (parser == NULL) - return; - - // NOTE: We are avoiding FREE(..) here because the content model - // has been created using plain .malloc_fcn(..) rather than MALLOC(..). - parser->m_mem.free_fcn(model); + if (parser != NULL) + FREE(parser, model); } void *XMLCALL XML_MemMalloc(XML_Parser parser, size_t size) { if (parser == NULL) return NULL; - - // NOTE: We are avoiding MALLOC(..) here to not include - // user allocations with allocation tracking and limiting. - return parser->m_mem.malloc_fcn(size); + return MALLOC(parser, size); } void *XMLCALL XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) { if (parser == NULL) return NULL; - - // NOTE: We are avoiding REALLOC(..) here to not include - // user allocations with allocation tracking and limiting. - return parser->m_mem.realloc_fcn(ptr, size); + return REALLOC(parser, ptr, size); } void XMLCALL XML_MemFree(XML_Parser parser, void *ptr) { - if (parser == NULL) - return; - - // NOTE: We are avoiding FREE(..) here because XML_MemMalloc and - // XML_MemRealloc are not using MALLOC(..) and REALLOC(..) - // but plain .malloc_fcn(..) and .realloc_fcn(..), internally. - parser->m_mem.free_fcn(ptr); + if (parser != NULL) + FREE(parser, ptr); } void XMLCALL @@ -3202,13 +2723,6 @@ XML_GetFeatureList(void) { EXPAT_BILLION_LAUGHS_ATTACK_PROTECTION_ACTIVATION_THRESHOLD_DEFAULT}, /* Added in Expat 2.6.0. */ {XML_FEATURE_GE, XML_L("XML_GE"), 0}, - /* Added in Expat 2.7.2. */ - {XML_FEATURE_ALLOC_TRACKER_MAXIMUM_AMPLIFICATION_DEFAULT, - XML_L("XML_AT_MAX_AMP"), - (long int)EXPAT_ALLOC_TRACKER_MAXIMUM_AMPLIFICATION_DEFAULT}, - {XML_FEATURE_ALLOC_TRACKER_ACTIVATION_THRESHOLD_DEFAULT, - XML_L("XML_AT_ACT_THRES"), - (long int)EXPAT_ALLOC_TRACKER_ACTIVATION_THRESHOLD_DEFAULT}, #endif {XML_FEATURE_END, NULL, 0}}; @@ -3239,31 +2753,23 @@ XML_SetBillionLaughsAttackProtectionActivationThreshold( parser->m_accounting.activationThresholdBytes = activationThresholdBytes; return XML_TRUE; } - -XML_Bool XMLCALL -XML_SetAllocTrackerMaximumAmplification(XML_Parser parser, - float maximumAmplificationFactor) { - if ((parser == NULL) || (parser->m_parentParser != NULL) - || isnan(maximumAmplificationFactor) - || (maximumAmplificationFactor < 1.0f)) { - return XML_FALSE; - } - parser->m_alloc_tracker.maximumAmplificationFactor - = maximumAmplificationFactor; - return XML_TRUE; -} - -XML_Bool XMLCALL -XML_SetAllocTrackerActivationThreshold( - XML_Parser parser, unsigned long long activationThresholdBytes) { - if ((parser == NULL) || (parser->m_parentParser != NULL)) { - return XML_FALSE; - } - parser->m_alloc_tracker.activationThresholdBytes = activationThresholdBytes; - return XML_TRUE; -} #endif /* XML_GE == 1 */ +/* BEGIN MOZILLA CHANGE (Report opening tag of mismatched closing tag) */ +const XML_Char * XMLCALL +MOZ_XML_GetMismatchedTag(XML_Parser parser) +{ + return parser->m_mismatch; +} +/* END MOZILLA CHANGE */ + +/* BEGIN MOZILLA CHANGE (Report whether the parser is currently expanding an entity) */ +XML_Bool XMLCALL +MOZ_XML_ProcessingEntityValue(XML_Parser parser) { + return parser->m_openInternalEntities != NULL; +} +/* END MOZILLA CHANGE */ + XML_Bool XMLCALL XML_SetReparseDeferralEnabled(XML_Parser parser, XML_Bool enabled) { if (parser != NULL && (enabled == XML_TRUE || enabled == XML_FALSE)) { @@ -3282,10 +2788,10 @@ static XML_Bool storeRawNames(XML_Parser parser) { TAG *tag = parser->m_tagStack; while (tag) { - size_t bufSize; - size_t nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); + int bufSize; + int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); size_t rawNameLen; - char *rawNameBuf = tag->buf.raw + nameLen; + char *rawNameBuf = tag->buf + nameLen; /* Stop if already stored. Since m_tagStack is a stack, we can stop at the first entry that has already been copied; everything below it in the stack is already been accounted for in a @@ -3300,23 +2806,23 @@ storeRawNames(XML_Parser parser) { /* Detect and prevent integer overflow. */ if (rawNameLen > (size_t)INT_MAX - nameLen) return XML_FALSE; - bufSize = nameLen + rawNameLen; - if (bufSize > (size_t)(tag->bufEnd - tag->buf.raw)) { - char *temp = REALLOC(parser, tag->buf.raw, bufSize); + bufSize = nameLen + (int)rawNameLen; + if (bufSize > tag->bufEnd - tag->buf) { + char *temp = (char *)REALLOC(parser, tag->buf, bufSize); if (temp == NULL) return XML_FALSE; - /* if tag->name.str points to tag->buf.str (only when namespace + /* if tag->name.str points to tag->buf (only when namespace processing is off) then we have to update it */ - if (tag->name.str == tag->buf.str) + if (tag->name.str == (XML_Char *)tag->buf) tag->name.str = (XML_Char *)temp; /* if tag->name.localPart is set (when namespace processing is on) then update it as well, since it will always point into tag->buf */ if (tag->name.localPart) tag->name.localPart - = (XML_Char *)temp + (tag->name.localPart - tag->buf.str); - tag->buf.raw = temp; + = (XML_Char *)temp + (tag->name.localPart - (XML_Char *)tag->buf); + tag->buf = temp; tag->bufEnd = temp + bufSize; rawNameBuf = temp + nameLen; } @@ -3331,9 +2837,8 @@ static enum XML_Error PTRCALL contentProcessor(XML_Parser parser, const char *start, const char *end, const char **endPtr) { enum XML_Error result = doContent( - parser, parser->m_parentParser ? 1 : 0, parser->m_encoding, start, end, - endPtr, (XML_Bool)! parser->m_parsingStatus.finalBuffer, - XML_ACCOUNT_DIRECT); + parser, 0, parser->m_encoding, start, end, endPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_ACCOUNT_DIRECT); /* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ #if 0 if (result == XML_ERROR_NONE) { @@ -3425,11 +2930,6 @@ externalEntityInitProcessor3(XML_Parser parser, const char *start, return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; - case XML_PARSING: - if (parser->m_reenter) { - return XML_ERROR_UNEXPECTED_STATE; // LCOV_EXCL_LINE - } - /* Fall through */ default: start = next; } @@ -3628,7 +3128,7 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, reportDefault(parser, enc, s, next); break; } - result = processEntity(parser, entity, XML_FALSE, ENTITY_INTERNAL); + result = processInternalEntity(parser, entity, XML_FALSE); if (result != XML_ERROR_NONE) return result; } else if (parser->m_externalEntityRefHandler) { @@ -3657,15 +3157,15 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, tag = parser->m_freeTagList; parser->m_freeTagList = parser->m_freeTagList->parent; } else { - tag = MALLOC(parser, sizeof(TAG)); + tag = (TAG *)MALLOC(parser, sizeof(TAG)); if (! tag) return XML_ERROR_NO_MEMORY; - tag->buf.raw = MALLOC(parser, INIT_TAG_BUF_SIZE); - if (! tag->buf.raw) { + tag->buf = (char *)MALLOC(parser, INIT_TAG_BUF_SIZE); + if (! tag->buf) { FREE(parser, tag); return XML_ERROR_NO_MEMORY; } - tag->bufEnd = tag->buf.raw + INIT_TAG_BUF_SIZE; + tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; } tag->bindings = NULL; tag->parent = parser->m_tagStack; @@ -3678,32 +3178,31 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, { const char *rawNameEnd = tag->rawName + tag->rawNameLength; const char *fromPtr = tag->rawName; - toPtr = tag->buf.str; + toPtr = (XML_Char *)tag->buf; for (;;) { + int bufSize; int convLen; const enum XML_Convert_Result convert_res = XmlConvert(enc, &fromPtr, rawNameEnd, (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); - convLen = (int)(toPtr - tag->buf.str); + convLen = (int)(toPtr - (XML_Char *)tag->buf); if ((fromPtr >= rawNameEnd) || (convert_res == XML_CONVERT_INPUT_INCOMPLETE)) { tag->name.strLen = convLen; break; } - if (SIZE_MAX / 2 < (size_t)(tag->bufEnd - tag->buf.raw)) - return XML_ERROR_NO_MEMORY; - const size_t bufSize = (size_t)(tag->bufEnd - tag->buf.raw) * 2; + bufSize = (int)(tag->bufEnd - tag->buf) << 1; { - char *temp = REALLOC(parser, tag->buf.raw, bufSize); + char *temp = (char *)REALLOC(parser, tag->buf, bufSize); if (temp == NULL) return XML_ERROR_NO_MEMORY; - tag->buf.raw = temp; + tag->buf = temp; tag->bufEnd = temp + bufSize; toPtr = (XML_Char *)temp + convLen; } } } - tag->name.str = tag->buf.str; + tag->name.str = (XML_Char *)tag->buf; *toPtr = XML_T('\0'); result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings), account); @@ -3755,9 +3254,7 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, } if ((parser->m_tagLevel == 0) && (parser->m_parsingStatus.parsing != XML_FINISHED)) { - if (parser->m_parsingStatus.parsing == XML_SUSPENDED - || (parser->m_parsingStatus.parsing == XML_PARSING - && parser->m_reenter)) + if (parser->m_parsingStatus.parsing == XML_SUSPENDED) parser->m_processor = epilogProcessor; else return epilogProcessor(parser, next, end, nextPtr); @@ -3845,9 +3342,7 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, } if ((parser->m_tagLevel == 0) && (parser->m_parsingStatus.parsing != XML_FINISHED)) { - if (parser->m_parsingStatus.parsing == XML_SUSPENDED - || (parser->m_parsingStatus.parsing == XML_PARSING - && parser->m_reenter)) + if (parser->m_parsingStatus.parsing == XML_SUSPENDED) parser->m_processor = epilogProcessor; else return epilogProcessor(parser, next, end, nextPtr); @@ -3980,22 +3475,14 @@ doContentInternal(XML_Parser parser, int startTagLevel, const ENCODING *enc, break; /* LCOV_EXCL_STOP */ } + *eventPP = s = next; switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: - *eventPP = next; *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: - *eventPP = next; return XML_ERROR_ABORTED; - case XML_PARSING: - if (parser->m_reenter) { - *nextPtr = next; - return XML_ERROR_NONE; - } - /* Fall through */ default:; - *eventPP = s = next; } } /* not reached */ @@ -4097,14 +3584,14 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if ((unsigned)parser->m_attsSize > SIZE_MAX / sizeof(ATTRIBUTE)) { + if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(ATTRIBUTE)) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; } #endif - temp = REALLOC(parser, parser->m_atts, - parser->m_attsSize * sizeof(ATTRIBUTE)); + temp = (ATTRIBUTE *)REALLOC(parser, (void *)parser->m_atts, + parser->m_attsSize * sizeof(ATTRIBUTE)); if (temp == NULL) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; @@ -4116,14 +3603,14 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ # if UINT_MAX >= SIZE_MAX - if ((unsigned)parser->m_attsSize > SIZE_MAX / sizeof(XML_AttrInfo)) { + if ((unsigned)parser->m_attsSize > (size_t)(-1) / sizeof(XML_AttrInfo)) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; } # endif - temp2 = REALLOC(parser, parser->m_attInfo, - parser->m_attsSize * sizeof(XML_AttrInfo)); + temp2 = (XML_AttrInfo *)REALLOC(parser, (void *)parser->m_attInfo, + parser->m_attsSize * sizeof(XML_AttrInfo)); if (temp2 == NULL) { parser->m_attsSize = oldAttsSize; return XML_ERROR_NO_MEMORY; @@ -4278,7 +3765,7 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, if (nPrefixes || nXMLNSDeclarations) { #endif /* END MOZILLA CHANGE */ - unsigned int j; /* hash table index */ + int j; /* hash table index */ unsigned long version = parser->m_nsAttsVersion; /* Detect and prevent invalid shift */ @@ -4315,14 +3802,15 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if (nsAttsSize > SIZE_MAX / sizeof(NS_ATT)) { + if (nsAttsSize > (size_t)(-1) / sizeof(NS_ATT)) { /* Restore actual size of memory in m_nsAtts */ parser->m_nsAttsPower = oldNsAttsPower; return XML_ERROR_NO_MEMORY; } #endif - temp = REALLOC(parser, parser->m_nsAtts, nsAttsSize * sizeof(NS_ATT)); + temp = (NS_ATT *)REALLOC(parser, parser->m_nsAtts, + nsAttsSize * sizeof(NS_ATT)); if (! temp) { /* Restore actual size of memory in m_nsAtts */ parser->m_nsAttsPower = oldNsAttsPower; @@ -4378,7 +3866,7 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, if (! b) return XML_ERROR_UNBOUND_PREFIX; - for (j = 0; j < (unsigned int)b->uriLen; j++) { + for (j = 0; j < b->uriLen; j++) { const XML_Char c = b->uri[j]; if (! poolAppendChar(&parser->m_tempPool, c)) return XML_ERROR_NO_MEMORY; @@ -4525,7 +4013,7 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, return XML_ERROR_NONE; prefixLen = 0; if (parser->m_ns_triplets && binding->prefix->name) { - while (binding->prefix->name[prefixLen++]) + for (; binding->prefix->name[prefixLen++];) ; /* prefixLen includes null terminator */ } tagNamePtr->localPart = localPart; @@ -4554,12 +4042,12 @@ storeAtts(XML_Parser parser, const ENCODING *enc, const char *attStr, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if ((unsigned)(n + EXPAND_SPARE) > SIZE_MAX / sizeof(XML_Char)) { + if ((unsigned)(n + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) { return XML_ERROR_NO_MEMORY; } #endif - uri = MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); + uri = (XML_Char *)MALLOC(parser, (n + EXPAND_SPARE) * sizeof(XML_Char)); if (! uri) return XML_ERROR_NO_MEMORY; binding->uriAlloc = n + EXPAND_SPARE; @@ -4800,13 +4288,13 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if ((unsigned)(len + EXPAND_SPARE) > SIZE_MAX / sizeof(XML_Char)) { + if ((unsigned)(len + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) { return XML_ERROR_NO_MEMORY; } #endif - XML_Char *temp - = REALLOC(parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); + XML_Char *temp = (XML_Char *)REALLOC( + parser, b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); if (temp == NULL) return XML_ERROR_NO_MEMORY; b->uri = temp; @@ -4814,7 +4302,7 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, } parser->m_freeBindingList = b->nextTagBinding; } else { - b = MALLOC(parser, sizeof(BINDING)); + b = (BINDING *)MALLOC(parser, sizeof(BINDING)); if (! b) return XML_ERROR_NO_MEMORY; @@ -4827,12 +4315,13 @@ addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if ((unsigned)(len + EXPAND_SPARE) > SIZE_MAX / sizeof(XML_Char)) { + if ((unsigned)(len + EXPAND_SPARE) > (size_t)(-1) / sizeof(XML_Char)) { return XML_ERROR_NO_MEMORY; } #endif - b->uri = MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); + b->uri + = (XML_Char *)MALLOC(parser, sizeof(XML_Char) * (len + EXPAND_SPARE)); if (! b->uri) { FREE(parser, b); return XML_ERROR_NO_MEMORY; @@ -4992,21 +4481,14 @@ doCdataSection(XML_Parser parser, const ENCODING *enc, const char **startPtr, /* LCOV_EXCL_STOP */ } + *eventPP = s = next; switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: - *eventPP = next; *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: - *eventPP = next; return XML_ERROR_ABORTED; - case XML_PARSING: - if (parser->m_reenter) { - return XML_ERROR_UNEXPECTED_STATE; // LCOV_EXCL_LINE - } - /* Fall through */ default:; - *eventPP = s = next; } } /* not reached */ @@ -5338,7 +4820,7 @@ entityValueInitProcessor(XML_Parser parser, const char *s, const char *end, } /* found end of entity value - can store it now */ return storeEntityValue(parser, parser->m_encoding, s, end, - XML_ACCOUNT_DIRECT, NULL); + XML_ACCOUNT_DIRECT); } else if (tok == XML_TOK_XML_DECL) { enum XML_Error result; result = processXmlDecl(parser, 0, start, next); @@ -5465,7 +4947,7 @@ entityValueProcessor(XML_Parser parser, const char *s, const char *end, break; } /* found end of entity value - can store it now */ - return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT, NULL); + return storeEntityValue(parser, enc, s, end, XML_ACCOUNT_DIRECT); } start = next; } @@ -5908,9 +5390,9 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, #if XML_GE == 1 // This will store the given replacement text in // parser->m_declEntity->textPtr. - enum XML_Error result = callStoreEntityValue( - parser, enc, s + enc->minBytesPerChar, next - enc->minBytesPerChar, - XML_ACCOUNT_NONE); + enum XML_Error result + = storeEntityValue(parser, enc, s + enc->minBytesPerChar, + next - enc->minBytesPerChar, XML_ACCOUNT_NONE); if (parser->m_declEntity) { parser->m_declEntity->textPtr = poolStart(&dtd->entityValuePool); parser->m_declEntity->textLen @@ -6203,7 +5685,7 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, return XML_ERROR_NO_MEMORY; } - char *const new_connector = REALLOC( + char *const new_connector = (char *)REALLOC( parser, parser->m_groupConnector, parser->m_groupSize *= 2); if (new_connector == NULL) { parser->m_groupSize /= 2; @@ -6218,22 +5700,20 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if (parser->m_groupSize > SIZE_MAX / sizeof(int)) { - parser->m_groupSize /= 2; + if (parser->m_groupSize > (size_t)(-1) / sizeof(int)) { return XML_ERROR_NO_MEMORY; } #endif - int *const new_scaff_index = REALLOC( + int *const new_scaff_index = (int *)REALLOC( parser, dtd->scaffIndex, parser->m_groupSize * sizeof(int)); - if (new_scaff_index == NULL) { - parser->m_groupSize /= 2; + if (new_scaff_index == NULL) return XML_ERROR_NO_MEMORY; - } dtd->scaffIndex = new_scaff_index; } } else { - parser->m_groupConnector = MALLOC(parser, parser->m_groupSize = 32); + parser->m_groupConnector + = (char *)MALLOC(parser, parser->m_groupSize = 32); if (! parser->m_groupConnector) { parser->m_groupSize = 0; return XML_ERROR_NO_MEMORY; @@ -6337,7 +5817,7 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, enum XML_Error result; XML_Bool betweenDecl = (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); - result = processEntity(parser, entity, betweenDecl, ENTITY_INTERNAL); + result = processInternalEntity(parser, entity, betweenDecl); if (result != XML_ERROR_NONE) return result; handleDefault = XML_FALSE; @@ -6396,11 +5876,8 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, case XML_ROLE_CONTENT_EMPTY: if (dtd->in_eldecl) { if (parser->m_elementDeclHandler) { - // NOTE: We are avoiding MALLOC(..) here to so that - // applications that are not using XML_FreeContentModel but - // plain free(..) or .free_fcn() to free the content model's - // memory are safe. - XML_Content *content = parser->m_mem.malloc_fcn(sizeof(XML_Content)); + XML_Content *content + = (XML_Content *)MALLOC(parser, sizeof(XML_Content)); if (! content) return XML_ERROR_NO_MEMORY; content->quant = XML_CQUANT_NONE; @@ -6456,7 +5933,7 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, name = el->name; dtd->scaffold[myindex].name = name; nameLen = 0; - while (name[nameLen++]) + for (; name[nameLen++];) ; /* Detect and prevent integer overflow */ @@ -6551,12 +6028,6 @@ doProlog(XML_Parser parser, const ENCODING *enc, const char *s, const char *end, return XML_ERROR_NONE; case XML_FINISHED: return XML_ERROR_ABORTED; - case XML_PARSING: - if (parser->m_reenter) { - *nextPtr = next; - return XML_ERROR_NONE; - } - /* Fall through */ default: s = next; tok = XmlPrologTok(enc, s, end, &next); @@ -6624,92 +6095,106 @@ epilogProcessor(XML_Parser parser, const char *s, const char *end, default: return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; } + parser->m_eventPtr = s = next; switch (parser->m_parsingStatus.parsing) { case XML_SUSPENDED: - parser->m_eventPtr = next; *nextPtr = next; return XML_ERROR_NONE; case XML_FINISHED: - parser->m_eventPtr = next; return XML_ERROR_ABORTED; - case XML_PARSING: - if (parser->m_reenter) { - return XML_ERROR_UNEXPECTED_STATE; // LCOV_EXCL_LINE - } - /* Fall through */ default:; - parser->m_eventPtr = s = next; } } } static enum XML_Error -processEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl, - enum EntityType type) { - OPEN_INTERNAL_ENTITY *openEntity, **openEntityList, **freeEntityList; - switch (type) { - case ENTITY_INTERNAL: - parser->m_processor = internalEntityProcessor; - openEntityList = &parser->m_openInternalEntities; - freeEntityList = &parser->m_freeInternalEntities; - break; - case ENTITY_ATTRIBUTE: - openEntityList = &parser->m_openAttributeEntities; - freeEntityList = &parser->m_freeAttributeEntities; - break; - case ENTITY_VALUE: - openEntityList = &parser->m_openValueEntities; - freeEntityList = &parser->m_freeValueEntities; - break; - /* default case serves merely as a safety net in case of a - * wrong entityType. Therefore we exclude the following lines - * from the test coverage. - * - * LCOV_EXCL_START - */ - default: - // Should not reach here - assert(0); - /* LCOV_EXCL_STOP */ - } +processInternalEntity(XML_Parser parser, ENTITY *entity, XML_Bool betweenDecl) { + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity; - if (*freeEntityList) { - openEntity = *freeEntityList; - *freeEntityList = openEntity->next; + if (parser->m_freeInternalEntities) { + openEntity = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity->next; } else { - openEntity = MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY)); + openEntity + = (OPEN_INTERNAL_ENTITY *)MALLOC(parser, sizeof(OPEN_INTERNAL_ENTITY)); if (! openEntity) return XML_ERROR_NO_MEMORY; } entity->open = XML_TRUE; - entity->hasMore = XML_TRUE; #if XML_GE == 1 entityTrackingOnOpen(parser, entity, __LINE__); #endif entity->processed = 0; - openEntity->next = *openEntityList; - *openEntityList = openEntity; + openEntity->next = parser->m_openInternalEntities; + parser->m_openInternalEntities = openEntity; openEntity->entity = entity; - openEntity->type = type; openEntity->startTagLevel = parser->m_tagLevel; openEntity->betweenDecl = betweenDecl; openEntity->internalEventPtr = NULL; openEntity->internalEventEndPtr = NULL; + textStart = (const char *)entity->textPtr; + textEnd = (const char *)(entity->textPtr + entity->textLen); + /* Set a safe default value in case 'next' does not get set */ + next = textStart; - // Only internal entities make use of the reenter flag - // therefore no need to set it for other entity types - if (type == ENTITY_INTERNAL) { - triggerReenter(parser); + if (entity->is_param) { + int tok + = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, + tok, next, &next, XML_FALSE, XML_FALSE, + XML_ACCOUNT_ENTITY_EXPANSION); + } else { + result = doContent(parser, parser->m_tagLevel, parser->m_internalEncoding, + textStart, textEnd, &next, XML_FALSE, + XML_ACCOUNT_ENTITY_EXPANSION); } - return XML_ERROR_NONE; + + if (result == XML_ERROR_NONE) { + if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { + entity->processed = (int)(next - textStart); + parser->m_processor = internalEntityProcessor; + } else if (parser->m_openInternalEntities->entity == entity) { +#if XML_GE == 1 + entityTrackingOnClose(parser, entity, __LINE__); +#endif /* XML_GE == 1 */ + entity->open = XML_FALSE; +/* BEGIN MOZILLA CHANGE (Bug 569229 - Deal with parser interruption from nested entities) */ +#if 0 + parser->m_openInternalEntities = openEntity->next; +#else + if (parser->m_openInternalEntities == openEntity) { + parser->m_openInternalEntities = openEntity->next; + } + else { + /* openEntity should be closed, but it contains an inner entity that is + still open. Remove openEntity from the m_openInternalEntities linked + list by looking for the inner entity in the list that links to + openEntity and fixing up its 'next' member + */ + OPEN_INTERNAL_ENTITY *innerOpenEntity = parser->m_openInternalEntities; + do { + if (innerOpenEntity->next == openEntity) { + innerOpenEntity->next = openEntity->next; + break; + } + } while ((innerOpenEntity = innerOpenEntity->next)); + } +#endif +/* END MOZILLA CHANGE */ + /* put openEntity back in list of free instances */ + openEntity->next = parser->m_freeInternalEntities; + parser->m_freeInternalEntities = openEntity; + } + } + return result; } static enum XML_Error PTRCALL internalEntityProcessor(XML_Parser parser, const char *s, const char *end, const char **nextPtr) { - UNUSED_P(s); - UNUSED_P(end); - UNUSED_P(nextPtr); ENTITY *entity; const char *textStart, *textEnd; const char *next; @@ -6719,71 +6204,72 @@ internalEntityProcessor(XML_Parser parser, const char *s, const char *end, return XML_ERROR_UNEXPECTED_STATE; entity = openEntity->entity; + textStart = ((const char *)entity->textPtr) + entity->processed; + textEnd = (const char *)(entity->textPtr + entity->textLen); + /* Set a safe default value in case 'next' does not get set */ + next = textStart; - // This will return early - if (entity->hasMore) { - textStart = ((const char *)entity->textPtr) + entity->processed; - textEnd = (const char *)(entity->textPtr + entity->textLen); - /* Set a safe default value in case 'next' does not get set */ - next = textStart; + if (entity->is_param) { + int tok + = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, + tok, next, &next, XML_FALSE, XML_TRUE, + XML_ACCOUNT_ENTITY_EXPANSION); + } else { + result = doContent(parser, openEntity->startTagLevel, + parser->m_internalEncoding, textStart, textEnd, &next, + XML_FALSE, XML_ACCOUNT_ENTITY_EXPANSION); + } - if (entity->is_param) { - int tok - = XmlPrologTok(parser->m_internalEncoding, textStart, textEnd, &next); - result = doProlog(parser, parser->m_internalEncoding, textStart, textEnd, - tok, next, &next, XML_FALSE, XML_FALSE, - XML_ACCOUNT_ENTITY_EXPANSION); - } else { - result = doContent(parser, openEntity->startTagLevel, - parser->m_internalEncoding, textStart, textEnd, &next, - XML_FALSE, XML_ACCOUNT_ENTITY_EXPANSION); - } - - if (result != XML_ERROR_NONE) - return result; - // Check if entity is complete, if not, mark down how much of it is - // processed - if (textEnd != next - && (parser->m_parsingStatus.parsing == XML_SUSPENDED - || (parser->m_parsingStatus.parsing == XML_PARSING - && parser->m_reenter))) { - entity->processed = (int)(next - (const char *)entity->textPtr); - return result; - } - - // Entity is complete. We cannot close it here since we need to first - // process its possible inner entities (which are added to the - // m_openInternalEntities during doProlog or doContent calls above) - entity->hasMore = XML_FALSE; - if (! entity->is_param - && (openEntity->startTagLevel != parser->m_tagLevel)) { - return XML_ERROR_ASYNC_ENTITY; - } - triggerReenter(parser); + if (result != XML_ERROR_NONE) return result; - } // End of entity processing, "if" block will return here - // Remove fully processed openEntity from open entity list. + if (textEnd != next && parser->m_parsingStatus.parsing == XML_SUSPENDED) { + entity->processed = (int)(next - (const char *)entity->textPtr); + return result; + } + #if XML_GE == 1 entityTrackingOnClose(parser, entity, __LINE__); #endif - // openEntity is m_openInternalEntities' head, as we set it at the start of - // this function and we skipped doProlog and doContent calls with hasMore set - // to false. This means we can directly remove the head of - // m_openInternalEntities - assert(parser->m_openInternalEntities == openEntity); entity->open = XML_FALSE; - parser->m_openInternalEntities = parser->m_openInternalEntities->next; - + parser->m_openInternalEntities = openEntity->next; /* put openEntity back in list of free instances */ openEntity->next = parser->m_freeInternalEntities; parser->m_freeInternalEntities = openEntity; - if (parser->m_openInternalEntities == NULL) { - parser->m_processor = entity->is_param ? prologProcessor : contentProcessor; + // If there are more open entities we want to stop right here and have the + // upcoming call to XML_ResumeParser continue with entity content, or it would + // be ignored altogether. + if (parser->m_openInternalEntities != NULL + && parser->m_parsingStatus.parsing == XML_SUSPENDED) { + return XML_ERROR_NONE; + } + + if (entity->is_param) { + int tok; + parser->m_processor = prologProcessor; + tok = XmlPrologTok(parser->m_encoding, s, end, &next); + return doProlog(parser, parser->m_encoding, s, end, tok, next, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, XML_TRUE, + XML_ACCOUNT_DIRECT); + } else { + parser->m_processor = contentProcessor; + /* see externalEntityContentProcessor vs contentProcessor */ + result = doContent(parser, parser->m_parentParser ? 1 : 0, + parser->m_encoding, s, end, nextPtr, + (XML_Bool)! parser->m_parsingStatus.finalBuffer, + XML_ACCOUNT_DIRECT); +/* BEGIN MOZILLA CHANGE (Bug 1746996 - Ensure that storeRawNames is always called) */ +#if 0 + if (result == XML_ERROR_NONE) { + if (! storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } +#endif +/* END MOZILLA CHANGE */ + return result; } - triggerReenter(parser); - return XML_ERROR_NONE; } static enum XML_Error PTRCALL @@ -6799,70 +6285,8 @@ static enum XML_Error storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, const char *ptr, const char *end, STRING_POOL *pool, enum XML_Account account) { - const char *next = ptr; - enum XML_Error result = XML_ERROR_NONE; - - while (1) { - if (! parser->m_openAttributeEntities) { - result = appendAttributeValue(parser, enc, isCdata, next, end, pool, - account, &next); - } else { - OPEN_INTERNAL_ENTITY *const openEntity = parser->m_openAttributeEntities; - if (! openEntity) - return XML_ERROR_UNEXPECTED_STATE; - - ENTITY *const entity = openEntity->entity; - const char *const textStart - = ((const char *)entity->textPtr) + entity->processed; - const char *const textEnd - = (const char *)(entity->textPtr + entity->textLen); - /* Set a safe default value in case 'next' does not get set */ - const char *nextInEntity = textStart; - if (entity->hasMore) { - result = appendAttributeValue( - parser, parser->m_internalEncoding, isCdata, textStart, textEnd, - pool, XML_ACCOUNT_ENTITY_EXPANSION, &nextInEntity); - if (result != XML_ERROR_NONE) - break; - // Check if entity is complete, if not, mark down how much of it is - // processed. A XML_SUSPENDED check here is not required as - // appendAttributeValue will never suspend the parser. - if (textEnd != nextInEntity) { - entity->processed - = (int)(nextInEntity - (const char *)entity->textPtr); - continue; - } - - // Entity is complete. We cannot close it here since we need to first - // process its possible inner entities (which are added to the - // m_openAttributeEntities during appendAttributeValue) - entity->hasMore = XML_FALSE; - continue; - } // End of entity processing, "if" block skips the rest - - // Remove fully processed openEntity from open entity list. -#if XML_GE == 1 - entityTrackingOnClose(parser, entity, __LINE__); -#endif - // openEntity is m_openAttributeEntities' head, since we set it at the - // start of this function and because we skipped appendAttributeValue call - // with hasMore set to false. This means we can directly remove the head - // of m_openAttributeEntities - assert(parser->m_openAttributeEntities == openEntity); - entity->open = XML_FALSE; - parser->m_openAttributeEntities = parser->m_openAttributeEntities->next; - - /* put openEntity back in list of free instances */ - openEntity->next = parser->m_freeAttributeEntities; - parser->m_freeAttributeEntities = openEntity; - } - - // Break if an error occurred or there is nothing left to process - if (result || (parser->m_openAttributeEntities == NULL && end == next)) { - break; - } - } - + enum XML_Error result + = appendAttributeValue(parser, enc, isCdata, ptr, end, pool, account); if (result) return result; if (! isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) @@ -6875,7 +6299,7 @@ storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, static enum XML_Error appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, const char *ptr, const char *end, STRING_POOL *pool, - enum XML_Account account, const char **nextPtr) { + enum XML_Account account) { DTD *const dtd = parser->m_dtd; /* save one level of indirection */ #ifndef XML_DTD UNUSED_P(account); @@ -6893,9 +6317,6 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, #endif switch (tok) { case XML_TOK_NONE: - if (nextPtr) { - *nextPtr = next; - } return XML_ERROR_NONE; case XML_TOK_INVALID: if (enc == parser->m_encoding) @@ -6949,7 +6370,7 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, case XML_TOK_ENTITY_REF: { const XML_Char *name; ENTITY *entity; - bool checkEntityDecl; + char checkEntityDecl; XML_Char ch = (XML_Char)XmlPredefinedEntityName( enc, ptr + enc->minBytesPerChar, next - enc->minBytesPerChar); if (ch) { @@ -7042,11 +6463,21 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; } else { enum XML_Error result; - result = processEntity(parser, entity, XML_FALSE, ENTITY_ATTRIBUTE); - if ((result == XML_ERROR_NONE) && (nextPtr != NULL)) { - *nextPtr = next; - } - return result; + const XML_Char *textEnd = entity->textPtr + entity->textLen; + entity->open = XML_TRUE; +#if XML_GE == 1 + entityTrackingOnOpen(parser, entity, __LINE__); +#endif + result = appendAttributeValue(parser, parser->m_internalEncoding, + isCdata, (const char *)entity->textPtr, + (const char *)textEnd, pool, + XML_ACCOUNT_ENTITY_EXPANSION); +#if XML_GE == 1 + entityTrackingOnClose(parser, entity, __LINE__); +#endif + entity->open = XML_FALSE; + if (result) + return result; } } break; default: @@ -7075,7 +6506,7 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, static enum XML_Error storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *entityTextPtr, const char *entityTextEnd, - enum XML_Account account, const char **nextPtr) { + enum XML_Account account) { DTD *const dtd = parser->m_dtd; /* save one level of indirection */ STRING_POOL *pool = &(dtd->entityValuePool); enum XML_Error result = XML_ERROR_NONE; @@ -7093,9 +6524,8 @@ storeEntityValue(XML_Parser parser, const ENCODING *enc, return XML_ERROR_NO_MEMORY; } - const char *next; for (;;) { - next + const char *next = entityTextPtr; /* XmlEntityValueTok doesn't always set the last arg */ int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); @@ -7157,8 +6587,16 @@ storeEntityValue(XML_Parser parser, const ENCODING *enc, } else dtd->keepProcessing = dtd->standalone; } else { - result = processEntity(parser, entity, XML_FALSE, ENTITY_VALUE); - goto endEntityValue; + entity->open = XML_TRUE; + entityTrackingOnOpen(parser, entity, __LINE__); + result = storeEntityValue( + parser, parser->m_internalEncoding, (const char *)entity->textPtr, + (const char *)(entity->textPtr + entity->textLen), + XML_ACCOUNT_ENTITY_EXPANSION); + entityTrackingOnClose(parser, entity, __LINE__); + entity->open = XML_FALSE; + if (result) + goto endEntityValue; } break; } @@ -7246,81 +6684,6 @@ endEntityValue: # ifdef XML_DTD parser->m_prologState.inEntityValue = oldInEntityValue; # endif /* XML_DTD */ - // If 'nextPtr' is given, it should be updated during the processing - if (nextPtr != NULL) { - *nextPtr = next; - } - return result; -} - -static enum XML_Error -callStoreEntityValue(XML_Parser parser, const ENCODING *enc, - const char *entityTextPtr, const char *entityTextEnd, - enum XML_Account account) { - const char *next = entityTextPtr; - enum XML_Error result = XML_ERROR_NONE; - while (1) { - if (! parser->m_openValueEntities) { - result - = storeEntityValue(parser, enc, next, entityTextEnd, account, &next); - } else { - OPEN_INTERNAL_ENTITY *const openEntity = parser->m_openValueEntities; - if (! openEntity) - return XML_ERROR_UNEXPECTED_STATE; - - ENTITY *const entity = openEntity->entity; - const char *const textStart - = ((const char *)entity->textPtr) + entity->processed; - const char *const textEnd - = (const char *)(entity->textPtr + entity->textLen); - /* Set a safe default value in case 'next' does not get set */ - const char *nextInEntity = textStart; - if (entity->hasMore) { - result = storeEntityValue(parser, parser->m_internalEncoding, textStart, - textEnd, XML_ACCOUNT_ENTITY_EXPANSION, - &nextInEntity); - if (result != XML_ERROR_NONE) - break; - // Check if entity is complete, if not, mark down how much of it is - // processed. A XML_SUSPENDED check here is not required as - // appendAttributeValue will never suspend the parser. - if (textEnd != nextInEntity) { - entity->processed - = (int)(nextInEntity - (const char *)entity->textPtr); - continue; - } - - // Entity is complete. We cannot close it here since we need to first - // process its possible inner entities (which are added to the - // m_openValueEntities during storeEntityValue) - entity->hasMore = XML_FALSE; - continue; - } // End of entity processing, "if" block skips the rest - - // Remove fully processed openEntity from open entity list. -# if XML_GE == 1 - entityTrackingOnClose(parser, entity, __LINE__); -# endif - // openEntity is m_openValueEntities' head, since we set it at the - // start of this function and because we skipped storeEntityValue call - // with hasMore set to false. This means we can directly remove the head - // of m_openValueEntities - assert(parser->m_openValueEntities == openEntity); - entity->open = XML_FALSE; - parser->m_openValueEntities = parser->m_openValueEntities->next; - - /* put openEntity back in list of free instances */ - openEntity->next = parser->m_freeValueEntities; - parser->m_freeValueEntities = openEntity; - } - - // Break if an error occurred or there is nothing left to process - if (result - || (parser->m_openValueEntities == NULL && entityTextEnd == next)) { - break; - } - } - return result; } @@ -7482,8 +6845,8 @@ defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, if (type->nDefaultAtts == type->allocDefaultAtts) { if (type->allocDefaultAtts == 0) { type->allocDefaultAtts = 8; - type->defaultAtts - = MALLOC(parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC( + parser, type->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); if (! type->defaultAtts) { type->allocDefaultAtts = 0; return 0; @@ -7503,13 +6866,13 @@ defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if ((unsigned)count > SIZE_MAX / sizeof(DEFAULT_ATTRIBUTE)) { + if ((unsigned)count > (size_t)(-1) / sizeof(DEFAULT_ATTRIBUTE)) { return 0; } #endif - temp = REALLOC(parser, type->defaultAtts, - (count * sizeof(DEFAULT_ATTRIBUTE))); + temp = (DEFAULT_ATTRIBUTE *)REALLOC(parser, type->defaultAtts, + (count * sizeof(DEFAULT_ATTRIBUTE))); if (temp == NULL) return 0; type->allocDefaultAtts = count; @@ -7800,19 +7163,19 @@ normalizePublicId(XML_Char *publicId) { } static DTD * -dtdCreate(XML_Parser parser) { - DTD *p = MALLOC(parser, sizeof(DTD)); +dtdCreate(const XML_Memory_Handling_Suite *ms) { + DTD *p = ms->malloc_fcn(sizeof(DTD)); if (p == NULL) return p; - poolInit(&(p->pool), parser); - poolInit(&(p->entityValuePool), parser); - hashTableInit(&(p->generalEntities), parser); - hashTableInit(&(p->elementTypes), parser); - hashTableInit(&(p->attributeIds), parser); - hashTableInit(&(p->prefixes), parser); + poolInit(&(p->pool), ms); + poolInit(&(p->entityValuePool), ms); + hashTableInit(&(p->generalEntities), ms); + hashTableInit(&(p->elementTypes), ms); + hashTableInit(&(p->attributeIds), ms); + hashTableInit(&(p->prefixes), ms); #ifdef XML_DTD p->paramEntityRead = XML_FALSE; - hashTableInit(&(p->paramEntities), parser); + hashTableInit(&(p->paramEntities), ms); #endif /* XML_DTD */ p->defaultPrefix.name = NULL; p->defaultPrefix.binding = NULL; @@ -7834,7 +7197,7 @@ dtdCreate(XML_Parser parser) { /* BEGIN MOZILLA CHANGE (unused API) */ #if 0 static void -dtdReset(DTD *p, XML_Parser parser) { +dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { @@ -7842,7 +7205,7 @@ dtdReset(DTD *p, XML_Parser parser) { if (! e) break; if (e->allocDefaultAtts != 0) - FREE(parser, e->defaultAtts); + ms->free_fcn(e->defaultAtts); } hashTableClear(&(p->generalEntities)); #ifdef XML_DTD @@ -7859,9 +7222,9 @@ dtdReset(DTD *p, XML_Parser parser) { p->in_eldecl = XML_FALSE; - FREE(parser, p->scaffIndex); + ms->free_fcn(p->scaffIndex); p->scaffIndex = NULL; - FREE(parser, p->scaffold); + ms->free_fcn(p->scaffold); p->scaffold = NULL; p->scaffLevel = 0; @@ -7877,7 +7240,7 @@ dtdReset(DTD *p, XML_Parser parser) { /* END MOZILLA CHANGE */ static void -dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser) { +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; hashTableIterInit(&iter, &(p->elementTypes)); for (;;) { @@ -7885,7 +7248,7 @@ dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser) { if (! e) break; if (e->allocDefaultAtts != 0) - FREE(parser, e->defaultAtts); + ms->free_fcn(e->defaultAtts); } hashTableDestroy(&(p->generalEntities)); #ifdef XML_DTD @@ -7897,10 +7260,10 @@ dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser) { poolDestroy(&(p->pool)); poolDestroy(&(p->entityValuePool)); if (isDocEntity) { - FREE(parser, p->scaffIndex); - FREE(parser, p->scaffold); + ms->free_fcn(p->scaffIndex); + ms->free_fcn(p->scaffold); } - FREE(parser, p); + ms->free_fcn(p); } /* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. @@ -7908,7 +7271,7 @@ dtdDestroy(DTD *p, XML_Bool isDocEntity, XML_Parser parser) { */ static int dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, - XML_Parser parser) { + const XML_Memory_Handling_Suite *ms) { HASH_TABLE_ITER iter; /* Copy the prefix table. */ @@ -7983,12 +7346,13 @@ dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, * from -Wtype-limits on platforms where * sizeof(int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if ((size_t)oldE->nDefaultAtts > SIZE_MAX / sizeof(DEFAULT_ATTRIBUTE)) { + if ((size_t)oldE->nDefaultAtts + > ((size_t)(-1) / sizeof(DEFAULT_ATTRIBUTE))) { return 0; } #endif newE->defaultAtts - = MALLOC(parser, oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + = ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); if (! newE->defaultAtts) { return 0; } @@ -8150,7 +7514,7 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { /* table->size is a power of 2 */ table->size = (size_t)1 << INIT_POWER; tsize = table->size * sizeof(NAMED *); - table->v = MALLOC(table->parser, tsize); + table->v = table->mem->malloc_fcn(tsize); if (! table->v) { table->size = 0; return NULL; @@ -8185,12 +7549,12 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { unsigned long newMask = (unsigned long)newSize - 1; /* Detect and prevent integer overflow */ - if (newSize > SIZE_MAX / sizeof(NAMED *)) { + if (newSize > (size_t)(-1) / sizeof(NAMED *)) { return NULL; } size_t tsize = newSize * sizeof(NAMED *); - NAMED **newV = MALLOC(table->parser, tsize); + NAMED **newV = table->mem->malloc_fcn(tsize); if (! newV) return NULL; memset(newV, 0, tsize); @@ -8206,7 +7570,7 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { } newV[j] = table->v[i]; } - FREE(table->parser, table->v); + table->mem->free_fcn(table->v); table->v = newV; table->power = newPower; table->size = newSize; @@ -8219,7 +7583,7 @@ lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) { } } } - table->v[i] = MALLOC(table->parser, createSize); + table->v[i] = table->mem->malloc_fcn(createSize); if (! table->v[i]) return NULL; memset(table->v[i], 0, createSize); @@ -8234,7 +7598,7 @@ static void FASTCALL hashTableClear(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) { - FREE(table->parser, table->v[i]); + table->mem->free_fcn(table->v[i]); table->v[i] = NULL; } table->used = 0; @@ -8246,17 +7610,17 @@ static void FASTCALL hashTableDestroy(HASH_TABLE *table) { size_t i; for (i = 0; i < table->size; i++) - FREE(table->parser, table->v[i]); - FREE(table->parser, table->v); + table->mem->free_fcn(table->v[i]); + table->mem->free_fcn(table->v); } static void FASTCALL -hashTableInit(HASH_TABLE *p, XML_Parser parser) { +hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) { p->power = 0; p->size = 0; p->used = 0; p->v = NULL; - p->parser = parser; + p->mem = ms; } static void FASTCALL @@ -8276,13 +7640,13 @@ hashTableIterNext(HASH_TABLE_ITER *iter) { } static void FASTCALL -poolInit(STRING_POOL *pool, XML_Parser parser) { +poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) { pool->blocks = NULL; pool->freeBlocks = NULL; pool->start = NULL; pool->ptr = NULL; pool->end = NULL; - pool->parser = parser; + pool->mem = ms; } static void FASTCALL @@ -8309,13 +7673,13 @@ poolDestroy(STRING_POOL *pool) { BLOCK *p = pool->blocks; while (p) { BLOCK *tem = p->next; - FREE(pool->parser, p); + pool->mem->free_fcn(p); p = tem; } p = pool->freeBlocks; while (p) { BLOCK *tem = p->next; - FREE(pool->parser, p); + pool->mem->free_fcn(p); p = tem; } } @@ -8425,7 +7789,7 @@ poolBytesToAllocateFor(int blockSize) { static XML_Bool FASTCALL poolGrow(STRING_POOL *pool) { if (pool->freeBlocks) { - if (pool->start == NULL) { + if (pool->start == 0) { pool->blocks = pool->freeBlocks; pool->freeBlocks = pool->freeBlocks->next; pool->blocks->next = NULL; @@ -8470,7 +7834,8 @@ poolGrow(STRING_POOL *pool) { if (bytesToAllocate == 0) return XML_FALSE; - temp = REALLOC(pool->parser, pool->blocks, bytesToAllocate); + temp = (BLOCK *)pool->mem->realloc_fcn(pool->blocks, + (unsigned)bytesToAllocate); if (temp == NULL) return XML_FALSE; pool->blocks = temp; @@ -8510,7 +7875,7 @@ poolGrow(STRING_POOL *pool) { if (bytesToAllocate == 0) return XML_FALSE; - tem = MALLOC(pool->parser, bytesToAllocate); + tem = pool->mem->malloc_fcn(bytesToAllocate); if (! tem) return XML_FALSE; tem->size = blockSize; @@ -8537,21 +7902,16 @@ nextScaffoldPart(XML_Parser parser) { * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if (parser->m_groupSize > SIZE_MAX / sizeof(int)) { + if (parser->m_groupSize > ((size_t)(-1) / sizeof(int))) { return -1; } #endif - dtd->scaffIndex = MALLOC(parser, parser->m_groupSize * sizeof(int)); + dtd->scaffIndex = (int *)MALLOC(parser, parser->m_groupSize * sizeof(int)); if (! dtd->scaffIndex) return -1; dtd->scaffIndex[0] = 0; } - // Will casting to int be safe further down? - if (dtd->scaffCount > INT_MAX) { - return -1; - } - if (dtd->scaffCount >= dtd->scaffSize) { CONTENT_SCAFFOLD *temp; if (dtd->scaffold) { @@ -8564,25 +7924,26 @@ nextScaffoldPart(XML_Parser parser) { * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if (dtd->scaffSize > SIZE_MAX / 2u / sizeof(CONTENT_SCAFFOLD)) { + if (dtd->scaffSize > (size_t)(-1) / 2u / sizeof(CONTENT_SCAFFOLD)) { return -1; } #endif - temp = REALLOC(parser, dtd->scaffold, - dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); + temp = (CONTENT_SCAFFOLD *)REALLOC( + parser, dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize *= 2; } else { - temp = MALLOC(parser, INIT_SCAFFOLD_ELEMENTS * sizeof(CONTENT_SCAFFOLD)); + temp = (CONTENT_SCAFFOLD *)MALLOC(parser, INIT_SCAFFOLD_ELEMENTS + * sizeof(CONTENT_SCAFFOLD)); if (temp == NULL) return -1; dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; } dtd->scaffold = temp; } - next = (int)dtd->scaffCount++; + next = dtd->scaffCount++; me = &dtd->scaffold[next]; if (dtd->scaffLevel) { CONTENT_SCAFFOLD *parent @@ -8614,25 +7975,22 @@ build_model(XML_Parser parser) { * from -Wtype-limits on platforms where * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ #if UINT_MAX >= SIZE_MAX - if (dtd->scaffCount > SIZE_MAX / sizeof(XML_Content)) { + if (dtd->scaffCount > (size_t)(-1) / sizeof(XML_Content)) { return NULL; } - if (dtd->contentStringLen > SIZE_MAX / sizeof(XML_Char)) { + if (dtd->contentStringLen > (size_t)(-1) / sizeof(XML_Char)) { return NULL; } #endif if (dtd->scaffCount * sizeof(XML_Content) - > SIZE_MAX - dtd->contentStringLen * sizeof(XML_Char)) { + > (size_t)(-1) - dtd->contentStringLen * sizeof(XML_Char)) { return NULL; } const size_t allocsize = (dtd->scaffCount * sizeof(XML_Content) + (dtd->contentStringLen * sizeof(XML_Char))); - // NOTE: We are avoiding MALLOC(..) here to so that - // applications that are not using XML_FreeContentModel but plain - // free(..) or .free_fcn() to free the content model's memory are safe. - ret = parser->m_mem.malloc_fcn(allocsize); + ret = (XML_Content *)MALLOC(parser, allocsize); if (! ret) return NULL; @@ -8753,7 +8111,7 @@ getElementType(XML_Parser parser, const ENCODING *enc, const char *ptr, } static XML_Char * -copyString(const XML_Char *s, XML_Parser parser) { +copyString(const XML_Char *s, const XML_Memory_Handling_Suite *memsuite) { size_t charsRequired = 0; XML_Char *result; @@ -8765,7 +8123,7 @@ copyString(const XML_Char *s, XML_Parser parser) { charsRequired++; /* Now allocate space for the copy */ - result = MALLOC(parser, charsRequired * sizeof(XML_Char)); + result = memsuite->malloc_fcn(charsRequired * sizeof(XML_Char)); if (result == NULL) return NULL; /* Copy the original into place */ @@ -8784,10 +8142,10 @@ accountingGetCurrentAmplification(XML_Parser rootParser) { + rootParser->m_accounting.countBytesIndirect; const float amplificationFactor = rootParser->m_accounting.countBytesDirect - ? ((float)countBytesOutput + ? (countBytesOutput / (float)(rootParser->m_accounting.countBytesDirect)) - : ((float)(lenOfShortestInclude - + rootParser->m_accounting.countBytesIndirect) + : ((lenOfShortestInclude + + rootParser->m_accounting.countBytesIndirect) / (float)lenOfShortestInclude); assert(! rootParser->m_parentParser); return amplificationFactor; @@ -8960,7 +8318,7 @@ entityTrackingReportStats(XML_Parser rootParser, ENTITY *entity, (void *)rootParser, rootParser->m_entity_stats.countEverOpened, rootParser->m_entity_stats.currentDepth, rootParser->m_entity_stats.maximumDepthSeen, - ((int)rootParser->m_entity_stats.currentDepth - 1) * 2, "", + (rootParser->m_entity_stats.currentDepth - 1) * 2, "", entity->is_param ? "%" : "&", entityName, action, entity->textLen, sourceLine); } @@ -8999,8 +8357,6 @@ entityTrackingOnClose(XML_Parser originParser, ENTITY *entity, int sourceLine) { /* END MOZILLA CHANGE */ } -#endif /* XML_GE == 1 */ - static XML_Parser getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { XML_Parser rootParser = parser; @@ -9016,8 +8372,6 @@ getRootParserOf(XML_Parser parser, unsigned int *outLevelDiff) { return rootParser; } -#if XML_GE == 1 - /* BEGIN MOZILLA CHANGE (don't report debug information) */ #if 0 const char * @@ -9535,13 +8889,11 @@ unsignedCharToPrintable(unsigned char c) { return "\\xFE"; case 255: return "\\xFF"; - // LCOV_EXCL_START default: assert(0); /* never gets here */ return "dead code"; } assert(0); /* never gets here */ - // LCOV_EXCL_STOP } #endif /* END MOZILLA CHANGE */ diff --git a/icecat/parser/expat/expat/lib/xmlrole.c b/icecat/parser/expat/expat/lib/xmlrole.c index d56bee82dd..2c48bf4086 100644 --- a/icecat/parser/expat/expat/lib/xmlrole.c +++ b/icecat/parser/expat/expat/lib/xmlrole.c @@ -16,7 +16,6 @@ Copyright (c) 2017 Rhodri James Copyright (c) 2019 David Loffredo Copyright (c) 2021 Donghee Na - Copyright (c) 2025 Alfonso Gregory Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -47,6 +46,7 @@ # include "winconfig.h" #endif +#include "expat_external.h" #include "internal.h" #include "xmlrole.h" #include "ascii.h" diff --git a/icecat/parser/expat/expat/lib/xmlrole.h b/icecat/parser/expat/expat/lib/xmlrole.h index 9d0d4ff11b..a7904274c9 100644 --- a/icecat/parser/expat/expat/lib/xmlrole.h +++ b/icecat/parser/expat/expat/lib/xmlrole.h @@ -10,7 +10,7 @@ Copyright (c) 2000 Clark Cooper Copyright (c) 2002 Karl Waclawek Copyright (c) 2002 Fred L. Drake, Jr. - Copyright (c) 2017-2025 Sebastian Pipping + Copyright (c) 2017-2024 Sebastian Pipping Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -34,13 +34,19 @@ */ #ifndef XmlRole_INCLUDED -# define XmlRole_INCLUDED 1 +#define XmlRole_INCLUDED 1 -# include "xmltok.h" +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +# define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt +#endif -# ifdef __cplusplus +#include "xmltok.h" + +#ifdef __cplusplus extern "C" { -# endif +#endif enum { XML_ROLE_ERROR = -1, @@ -101,11 +107,11 @@ enum { XML_ROLE_CONTENT_ELEMENT_PLUS, XML_ROLE_PI, XML_ROLE_COMMENT, -# ifdef XML_DTD +#ifdef XML_DTD XML_ROLE_TEXT_DECL, XML_ROLE_IGNORE_SECT, XML_ROLE_INNER_PARAM_ENTITY_REF, -# endif /* XML_DTD */ +#endif /* XML_DTD */ XML_ROLE_PARAM_ENTITY_REF }; @@ -114,23 +120,23 @@ typedef struct prolog_state { const char *end, const ENCODING *enc); unsigned level; int role_none; -# ifdef XML_DTD +#ifdef XML_DTD unsigned includeLevel; int documentEntity; int inEntityValue; -# endif /* XML_DTD */ +#endif /* XML_DTD */ } PROLOG_STATE; void XmlPrologStateInit(PROLOG_STATE *state); -# ifdef XML_DTD +#ifdef XML_DTD void XmlPrologStateInitExternalEntity(PROLOG_STATE *state); -# endif /* XML_DTD */ +#endif /* XML_DTD */ -# define XmlTokenRole(state, tok, ptr, end, enc) \ - (((state)->handler)(state, tok, ptr, end, enc)) +#define XmlTokenRole(state, tok, ptr, end, enc) \ + (((state)->handler)(state, tok, ptr, end, enc)) -# ifdef __cplusplus +#ifdef __cplusplus } -# endif +#endif #endif /* not XmlRole_INCLUDED */ diff --git a/icecat/parser/expat/expat/lib/xmltok.c b/icecat/parser/expat/expat/lib/xmltok.c index 3f2858b970..a240eb1c93 100644 --- a/icecat/parser/expat/expat/lib/xmltok.c +++ b/icecat/parser/expat/expat/lib/xmltok.c @@ -24,7 +24,6 @@ Copyright (c) 2022 Martin Ettl Copyright (c) 2022 Sean McBride Copyright (c) 2023 Hanno Böck - Copyright (c) 2025 Alfonso Gregory Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -57,6 +56,7 @@ # include "winconfig.h" #endif +#include "expat_external.h" #include "internal.h" #include "xmltok.h" #include "nametab.h" @@ -1409,7 +1409,7 @@ unknown_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, } ENCODING * -XmlInitUnknownEncoding(void *mem, const int *table, CONVERTER convert, +XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, void *userData) { int i; struct unknown_encoding *e = (struct unknown_encoding *)mem; @@ -1672,7 +1672,7 @@ initScan(const ENCODING *const *encodingTable, const INIT_ENCODING *enc, # undef ns ENCODING * -XmlInitUnknownEncodingNS(void *mem, const int *table, CONVERTER convert, +XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, void *userData) { ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); if (enc) diff --git a/icecat/parser/expat/expat/lib/xmltok.h b/icecat/parser/expat/expat/lib/xmltok.h index 79a9fb7687..c51fce1ec1 100644 --- a/icecat/parser/expat/expat/lib/xmltok.h +++ b/icecat/parser/expat/expat/lib/xmltok.h @@ -35,113 +35,113 @@ */ #ifndef XmlTok_INCLUDED -# define XmlTok_INCLUDED 1 +#define XmlTok_INCLUDED 1 -# ifdef __cplusplus +#ifdef __cplusplus extern "C" { -# endif +#endif /* The following token may be returned by XmlContentTok */ -# define XML_TOK_TRAILING_RSQB \ - -5 /* ] or ]] at the end of the scan; might be \ - start of illegal ]]> sequence */ +#define XML_TOK_TRAILING_RSQB \ + -5 /* ] or ]] at the end of the scan; might be \ + start of illegal ]]> sequence */ /* The following tokens may be returned by both XmlPrologTok and XmlContentTok. */ -# define XML_TOK_NONE -4 /* The string to be scanned is empty */ -# define XML_TOK_TRAILING_CR \ - -3 /* A CR at the end of the scan; \ - might be part of CRLF sequence */ -# define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ -# define XML_TOK_PARTIAL -1 /* only part of a token */ -# define XML_TOK_INVALID 0 +#define XML_TOK_NONE -4 /* The string to be scanned is empty */ +#define XML_TOK_TRAILING_CR \ + -3 /* A CR at the end of the scan; \ + might be part of CRLF sequence */ +#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ +#define XML_TOK_PARTIAL -1 /* only part of a token */ +#define XML_TOK_INVALID 0 /* The following tokens are returned by XmlContentTok; some are also returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. */ -# define XML_TOK_START_TAG_WITH_ATTS 1 -# define XML_TOK_START_TAG_NO_ATTS 2 -# define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ -# define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 -# define XML_TOK_END_TAG 5 -# define XML_TOK_DATA_CHARS 6 -# define XML_TOK_DATA_NEWLINE 7 -# define XML_TOK_CDATA_SECT_OPEN 8 -# define XML_TOK_ENTITY_REF 9 -# define XML_TOK_CHAR_REF 10 /* numeric character reference */ +#define XML_TOK_START_TAG_WITH_ATTS 1 +#define XML_TOK_START_TAG_NO_ATTS 2 +#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ +#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 +#define XML_TOK_END_TAG 5 +#define XML_TOK_DATA_CHARS 6 +#define XML_TOK_DATA_NEWLINE 7 +#define XML_TOK_CDATA_SECT_OPEN 8 +#define XML_TOK_ENTITY_REF 9 +#define XML_TOK_CHAR_REF 10 /* numeric character reference */ /* The following tokens may be returned by both XmlPrologTok and XmlContentTok. */ -# define XML_TOK_PI 11 /* processing instruction */ -# define XML_TOK_XML_DECL 12 /* XML decl or text decl */ -# define XML_TOK_COMMENT 13 -# define XML_TOK_BOM 14 /* Byte order mark */ +#define XML_TOK_PI 11 /* processing instruction */ +#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ +#define XML_TOK_COMMENT 13 +#define XML_TOK_BOM 14 /* Byte order mark */ /* The following tokens are returned only by XmlPrologTok */ -# define XML_TOK_PROLOG_S 15 -# define XML_TOK_DECL_OPEN 16 /* */ -# define XML_TOK_NAME 18 -# define XML_TOK_NMTOKEN 19 -# define XML_TOK_POUND_NAME 20 /* #name */ -# define XML_TOK_OR 21 /* | */ -# define XML_TOK_PERCENT 22 -# define XML_TOK_OPEN_PAREN 23 -# define XML_TOK_CLOSE_PAREN 24 -# define XML_TOK_OPEN_BRACKET 25 -# define XML_TOK_CLOSE_BRACKET 26 -# define XML_TOK_LITERAL 27 -# define XML_TOK_PARAM_ENTITY_REF 28 -# define XML_TOK_INSTANCE_START 29 +#define XML_TOK_PROLOG_S 15 +#define XML_TOK_DECL_OPEN 16 /* */ +#define XML_TOK_NAME 18 +#define XML_TOK_NMTOKEN 19 +#define XML_TOK_POUND_NAME 20 /* #name */ +#define XML_TOK_OR 21 /* | */ +#define XML_TOK_PERCENT 22 +#define XML_TOK_OPEN_PAREN 23 +#define XML_TOK_CLOSE_PAREN 24 +#define XML_TOK_OPEN_BRACKET 25 +#define XML_TOK_CLOSE_BRACKET 26 +#define XML_TOK_LITERAL 27 +#define XML_TOK_PARAM_ENTITY_REF 28 +#define XML_TOK_INSTANCE_START 29 /* The following occur only in element type declarations */ -# define XML_TOK_NAME_QUESTION 30 /* name? */ -# define XML_TOK_NAME_ASTERISK 31 /* name* */ -# define XML_TOK_NAME_PLUS 32 /* name+ */ -# define XML_TOK_COND_SECT_OPEN 33 /* */ -# define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ -# define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ -# define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ -# define XML_TOK_COMMA 38 +#define XML_TOK_NAME_QUESTION 30 /* name? */ +#define XML_TOK_NAME_ASTERISK 31 /* name* */ +#define XML_TOK_NAME_PLUS 32 /* name+ */ +#define XML_TOK_COND_SECT_OPEN 33 /* */ +#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ +#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ +#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ +#define XML_TOK_COMMA 38 /* The following token is returned only by XmlAttributeValueTok */ -# define XML_TOK_ATTRIBUTE_VALUE_S 39 +#define XML_TOK_ATTRIBUTE_VALUE_S 39 /* The following token is returned only by XmlCdataSectionTok */ -# define XML_TOK_CDATA_SECT_CLOSE 40 +#define XML_TOK_CDATA_SECT_CLOSE 40 /* With namespace processing this is returned by XmlPrologTok for a name with a colon. */ -# define XML_TOK_PREFIXED_NAME 41 +#define XML_TOK_PREFIXED_NAME 41 -# ifdef XML_DTD -# define XML_TOK_IGNORE_SECT 42 -# endif /* XML_DTD */ +#ifdef XML_DTD +# define XML_TOK_IGNORE_SECT 42 +#endif /* XML_DTD */ -# ifdef XML_DTD -# define XML_N_STATES 4 -# else /* not XML_DTD */ -# define XML_N_STATES 3 -# endif /* not XML_DTD */ +#ifdef XML_DTD +# define XML_N_STATES 4 +#else /* not XML_DTD */ +# define XML_N_STATES 3 +#endif /* not XML_DTD */ -# define XML_PROLOG_STATE 0 -# define XML_CONTENT_STATE 1 -# define XML_CDATA_SECTION_STATE 2 -# ifdef XML_DTD -# define XML_IGNORE_SECTION_STATE 3 -# endif /* XML_DTD */ +#define XML_PROLOG_STATE 0 +#define XML_CONTENT_STATE 1 +#define XML_CDATA_SECTION_STATE 2 +#ifdef XML_DTD +# define XML_IGNORE_SECTION_STATE 3 +#endif /* XML_DTD */ -# define XML_N_LITERAL_TYPES 2 -# define XML_ATTRIBUTE_VALUE_LITERAL 0 -# define XML_ENTITY_VALUE_LITERAL 1 +#define XML_N_LITERAL_TYPES 2 +#define XML_ATTRIBUTE_VALUE_LITERAL 0 +#define XML_ENTITY_VALUE_LITERAL 1 /* The size of the buffer passed to XmlUtf8Encode must be at least this. */ -# define XML_UTF8_ENCODE_MAX 4 +#define XML_UTF8_ENCODE_MAX 4 /* The size of the buffer passed to XmlUtf16Encode must be at least this. */ -# define XML_UTF16_ENCODE_MAX 2 +#define XML_UTF16_ENCODE_MAX 2 typedef struct position { /* first line and first column are 0 not 1 */ @@ -220,63 +220,63 @@ struct encoding { the prolog outside literals, comments and processing instructions. */ -# define XmlTok(enc, state, ptr, end, nextTokPtr) \ - (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) +#define XmlTok(enc, state, ptr, end, nextTokPtr) \ + (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) -# define XmlPrologTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) +#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) -# define XmlContentTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) +#define XmlContentTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) -# define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) +#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) -# ifdef XML_DTD +#ifdef XML_DTD -# define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) +# define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) -# endif /* XML_DTD */ +#endif /* XML_DTD */ /* This is used for performing a 2nd-level tokenization on the content of a literal that has already been returned by XmlTok. */ -# define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ - (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) +#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ + (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) -# define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) +#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) -# define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) +#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) -# define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ - (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) +#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ + (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) -# define XmlNameLength(enc, ptr) (((enc)->nameLength)(enc, ptr)) +#define XmlNameLength(enc, ptr) (((enc)->nameLength)(enc, ptr)) -# define XmlSkipS(enc, ptr) (((enc)->skipS)(enc, ptr)) +#define XmlSkipS(enc, ptr) (((enc)->skipS)(enc, ptr)) -# define XmlGetAttributes(enc, ptr, attsMax, atts) \ - (((enc)->getAtts)(enc, ptr, attsMax, atts)) +#define XmlGetAttributes(enc, ptr, attsMax, atts) \ + (((enc)->getAtts)(enc, ptr, attsMax, atts)) -# define XmlCharRefNumber(enc, ptr) (((enc)->charRefNumber)(enc, ptr)) +#define XmlCharRefNumber(enc, ptr) (((enc)->charRefNumber)(enc, ptr)) -# define XmlPredefinedEntityName(enc, ptr, end) \ - (((enc)->predefinedEntityName)(enc, ptr, end)) +#define XmlPredefinedEntityName(enc, ptr, end) \ + (((enc)->predefinedEntityName)(enc, ptr, end)) -# define XmlUpdatePosition(enc, ptr, end, pos) \ - (((enc)->updatePosition)(enc, ptr, end, pos)) +#define XmlUpdatePosition(enc, ptr, end, pos) \ + (((enc)->updatePosition)(enc, ptr, end, pos)) -# define XmlIsPublicId(enc, ptr, end, badPtr) \ - (((enc)->isPublicId)(enc, ptr, end, badPtr)) +#define XmlIsPublicId(enc, ptr, end, badPtr) \ + (((enc)->isPublicId)(enc, ptr, end, badPtr)) -# define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) +#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) -# define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) +#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) typedef struct { ENCODING initEnc; @@ -299,7 +299,7 @@ int XmlSizeOfUnknownEncoding(void); typedef int(XMLCALL *CONVERTER)(void *userData, const char *p); -ENCODING *XmlInitUnknownEncoding(void *mem, const int *table, CONVERTER convert, +ENCODING *XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, void *userData); int XmlParseXmlDeclNS(int isGeneralTextEntity, const ENCODING *enc, @@ -312,10 +312,10 @@ int XmlInitEncodingNS(INIT_ENCODING *p, const ENCODING **encPtr, const char *name); const ENCODING *XmlGetUtf8InternalEncodingNS(void); const ENCODING *XmlGetUtf16InternalEncodingNS(void); -ENCODING *XmlInitUnknownEncodingNS(void *mem, const int *table, - CONVERTER convert, void *userData); -# ifdef __cplusplus +ENCODING *XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, + void *userData); +#ifdef __cplusplus } -# endif +#endif #endif /* not XmlTok_INCLUDED */ diff --git a/icecat/parser/expat/expat/lib/xmltok_ns.c b/icecat/parser/expat/expat/lib/xmltok_ns.c index 810ca2c6d0..fbdd3e3c7b 100644 --- a/icecat/parser/expat/expat/lib/xmltok_ns.c +++ b/icecat/parser/expat/expat/lib/xmltok_ns.c @@ -12,7 +12,6 @@ Copyright (c) 2002 Fred L. Drake, Jr. Copyright (c) 2002-2006 Karl Waclawek Copyright (c) 2017-2021 Sebastian Pipping - Copyright (c) 2025 Alfonso Gregory Licensed under the MIT license: Permission is hereby granted, free of charge, to any person obtaining @@ -99,13 +98,13 @@ NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) { int i; XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); if (ptr != end) - return NULL; + return 0; *p = 0; if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) return enc; i = getEncodingIndex(buf); if (i == UNKNOWN_ENC) - return NULL; + return 0; return NS(encodings)[i]; } diff --git a/icecat/parser/expat/moz.yaml b/icecat/parser/expat/moz.yaml index 9ec11452b9..9d0d701f99 100644 --- a/icecat/parser/expat/moz.yaml +++ b/icecat/parser/expat/moz.yaml @@ -9,8 +9,8 @@ origin: name: libexpat description: Expat is an XML parser. url: https://github.com/libexpat/libexpat - release: R_2_7_4 (2026-01-31T12:16:55+01:00). - revision: R_2_7_4 + release: R_2_6_4 (2024-11-07T02:31:34+01:00). + revision: R_2_6_4 license: MIT license-file: COPYING @@ -27,7 +27,6 @@ vendoring: - "**" - expat/lib/Makefile.am - expat/lib/libexpat.def.cmake - - expat/lib/libexpat.map.in include: - AUTHORS @@ -40,7 +39,6 @@ vendoring: - expat_config.h - expat_config_moz.h - expat_config_rlbox.h - - README_MOZILLA - rlbox_expat.h - rlbox_expat_types.h - sources.mozbuild @@ -55,10 +53,12 @@ vendoring: - 03_dont_generate_salt.patch - 04_always_set_eventptrs.patch - 05_getcurrentbyteindex.patch - - 06_always_store_rawnames.patch - - 07_dont_ignore_undeclared_entity.patch - - 08_include_xmlns.patch - - 09_internalsubset.patch - - 10_version_limit.patch - - 11_no_debug_report.patch - - 12_unused.patch + - 06_report_processing_entity.patch + - 07_always_store_rawnames.patch + - 08_dont_ignore_undeclared_entity.patch + - 09_include_xmlns.patch + - 10_internalsubset.patch + - 11_nested_entities.patch + - 12_version_limit.patch + - 13_no_debug_report.patch + - 14_unused.patch diff --git a/icecat/parser/html/nsHtml5TreeOperation.cpp b/icecat/parser/html/nsHtml5TreeOperation.cpp index c771313cd6..b59a3396cf 100644 --- a/icecat/parser/html/nsHtml5TreeOperation.cpp +++ b/icecat/parser/html/nsHtml5TreeOperation.cpp @@ -258,7 +258,6 @@ nsresult nsHtml5TreeOperation::Append(nsIContent* aNode, nsIContent* aParent, nsHtml5DocumentBuilder* aBuilder) { MOZ_ASSERT(aBuilder); MOZ_ASSERT(aBuilder->IsInDocUpdate()); - MOZ_ASSERT(!aNode->GetParentNode()); ErrorResult rv; Document* ownerDoc = aParent->OwnerDoc(); nsHtml5OtherDocUpdate update(ownerDoc, aBuilder->GetDocument()); @@ -273,13 +272,6 @@ nsresult nsHtml5TreeOperation::Append(nsIContent* aNode, nsIContent* aParent, nsresult nsHtml5TreeOperation::Append(nsIContent* aNode, nsIContent* aParent, FromParser aFromParser, nsHtml5DocumentBuilder* aBuilder) { - if (MOZ_UNLIKELY(aNode->GetParentNode())) { - Detach(aNode, aBuilder); - if (MOZ_UNLIKELY(aNode->GetParentNode())) { - // Can this happen? If it can, give up. - return NS_OK; - } - } Maybe autoPause; Maybe autoCEReaction; DocGroup* docGroup = aParent->OwnerDoc()->GetDocGroup(); @@ -302,13 +294,6 @@ nsresult nsHtml5TreeOperation::AppendToDocument( MOZ_ASSERT(aBuilder); MOZ_ASSERT(aBuilder->GetDocument() == aNode->OwnerDoc()); MOZ_ASSERT(aBuilder->IsInDocUpdate()); - if (MOZ_UNLIKELY(aNode->GetParentNode())) { - Detach(aNode, aBuilder); - if (MOZ_UNLIKELY(aNode->GetParentNode())) { - // Can this happen? If it can, give up. - return NS_OK; - } - } ErrorResult rv; Document* doc = aBuilder->GetDocument(); @@ -392,14 +377,6 @@ nsresult nsHtml5TreeOperation::FosterParent(nsIContent* aNode, nsHtml5DocumentBuilder* aBuilder) { MOZ_ASSERT(aBuilder); MOZ_ASSERT(aBuilder->IsInDocUpdate()); - if (MOZ_UNLIKELY(aNode->GetParentNode())) { - Detach(aNode, aBuilder); - if (MOZ_UNLIKELY(aNode->GetParentNode())) { - // Can this happen? If it can, give up. - return NS_OK; - } - } - nsIContent* foster = aTable->GetParent(); if (IsElementOrTemplateContent(foster)) { @@ -970,22 +947,13 @@ nsresult nsHtml5TreeOperation::Perform(nsHtml5TreeOpExecutor* aBuilder, return NS_OK; } - nsIContent* node = *aOperation.mTemplateNode; - nsIContent* host = *aOperation.mHost; - - if (MOZ_UNLIKELY(node->GetParentNode())) { - Detach(node, mBuilder); - if (MOZ_UNLIKELY(node->GetParentNode())) { - // Can this happen? If it can, give up. - return NS_OK; - } - } - // We failed to attach a new shadow root, so instead attach a template // element and return its content. - nsHtml5TreeOperation::Append(node, host, mBuilder); + nsHtml5TreeOperation::Append(*aOperation.mTemplateNode, *aOperation.mHost, + mBuilder); *aOperation.mFragHandle = - static_cast(node)->Content(); + static_cast(*aOperation.mTemplateNode) + ->Content(); nsContentUtils::LogSimpleConsoleError( u"Failed to attach Declarative Shadow DOM."_ns, "DOM"_ns, mBuilder->GetDocument()->IsInPrivateBrowsing(), @@ -997,9 +965,6 @@ nsresult nsHtml5TreeOperation::Perform(nsHtml5TreeOpExecutor* aBuilder, nsIContent* table = *(aOperation.mTable); nsIContent* stackParent = *(aOperation.mStackParent); nsIContent* fosterParent = GetFosterParent(table, stackParent); - if (fosterParent) { - mBuilder->HoldElement(do_AddRef(fosterParent)); - } *aOperation.mParentHandle = fosterParent; return NS_OK; } diff --git a/icecat/parser/htmlparser/nsExpatDriver.cpp b/icecat/parser/htmlparser/nsExpatDriver.cpp index 4b113658cf..de78a72e26 100644 --- a/icecat/parser/htmlparser/nsExpatDriver.cpp +++ b/icecat/parser/htmlparser/nsExpatDriver.cpp @@ -102,23 +102,19 @@ static T safe_unverified(T val) { return val; } -template -inline E enum_verifier(std::underlying_type_t e) { - using U = std::underlying_type_t; - MOZ_RELEASE_ASSERT( - e >= static_cast(MinLegal) && e <= static_cast(MaxLegal), - "unexpected enum value"); - return static_cast(e); -}; - /* status_verifier is a type validator for XML_Status */ -inline XML_Status status_verifier(std::underlying_type_t s) { - return enum_verifier(s); +inline enum XML_Status status_verifier(enum XML_Status s) { + MOZ_RELEASE_ASSERT(s >= XML_STATUS_ERROR && s <= XML_STATUS_SUSPENDED, + "unexpected status code"); + return s; } /* error_verifier is a type validator for XML_Error */ -inline XML_Error error_verifier(std::underlying_type_t code) { - return enum_verifier(code); +inline enum XML_Error error_verifier(enum XML_Error code) { + MOZ_RELEASE_ASSERT( + code >= XML_ERROR_NONE && code <= XML_ERROR_INVALID_ARGUMENT, + "unexpected XML error code"); + return code; } /* We use unverified_xml_string to just expose sandbox expat strings to IceCat diff --git a/icecat/python/sites/update.txt b/icecat/python/sites/update.txt index 691cb84af8..827b25c93f 100644 --- a/icecat/python/sites/update.txt +++ b/icecat/python/sites/update.txt @@ -1,5 +1,4 @@ -requires-python:>=3.9 -pth:taskcluster/gecko_taskgraph +requires-python:>=3.8 pypi:psutil==5.9.4 vendored:testing/web-platform/tests/tools/third_party/h2/src vendored:testing/web-platform/tests/tools/third_party/hpack/src @@ -9,15 +8,4 @@ vendored:testing/web-platform/tests/tools/third_party/pywebsocket3 vendored:testing/web-platform/tests/tools/third_party/webencodings vendored:testing/web-platform/tests/tools/wptrunner vendored:testing/web-platform/tests/tools/wptserve -vendored:third_party/python/aiohttp -vendored:third_party/python/async_timeout -vendored:third_party/python/giturlparse -vendored:third_party/python/mohawk -vendored:third_party/python/mozilla_repo_urls -vendored:third_party/python/python_dateutil vendored:third_party/python/redo -vendored:third_party/python/slugid -vendored:third_party/python/taskcluster -vendored:third_party/python/taskcluster_taskgraph -vendored:third_party/python/taskcluster_urls -vendored:third_party/python/voluptuous diff --git a/icecat/security/ct/CTKnownLogs.h b/icecat/security/ct/CTKnownLogs.h index 811b6d7eba..4f0995c921 100644 --- a/icecat/security/ct/CTKnownLogs.h +++ b/icecat/security/ct/CTKnownLogs.h @@ -14,7 +14,7 @@ #include -static const PRTime kCTExpirationTime = INT64_C(1782114585000000); +static const PRTime kCTExpirationTime = INT64_C(1770634470000000); namespace mozilla::ct { @@ -47,6 +47,16 @@ struct CTLogOperatorInfo { }; const CTLogInfo kCTLogList[] = { + {"Google 'Argon2025h2' log", CTLogState::Admissible, CTLogFormat::RFC6962, + 1701000000000, // 2023-11-26T12:00:00Z + 0, // operated by Google + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xaf\xe4\xf3\x94\x2c\xdf\xa6\x27\xb5" + "\xfe\xb2\x61\x83\x19\xc8\x21\x3a\x23\xa8\xa9\x3d\x54\xaf\xbc\x31\x9a\x1c" + "\xd3\xc1\xe3\xb6\xc2\xf3\x0f\xc7\xb9\xca\x3b\x1d\x79\x65\x61\x22\x25\x82" + "\x56\x4e\x98\xe8\xaa\x26\x29\x36\x1e\x28\x60\x6f\xeb\x15\x6e\xf7\x7c\xd0" + "\xba", + 91}, {"Google 'Argon2026h1' log", CTLogState::Admissible, CTLogFormat::RFC6962, 1727734767000, // 2024-09-30T22:19:27Z 0, // operated by Google @@ -68,7 +78,7 @@ const CTLogInfo kCTLogList[] = { "\x22", 91}, {"Google 'Argon2027h1'", CTLogState::Admissible, CTLogFormat::RFC6962, - 1766881800000, // 2025-12-28T00:30:00Z + 1760747400000, // 2025-10-18T00:30:00Z 0, // operated by Google "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x28\x74\x66\xd0\x7f\xf3\x51\xa1\x40" @@ -77,6 +87,16 @@ const CTLogInfo kCTLogList[] = { "\x62\x3d\x18\x37\xbe\x29\xf9\xe1\x95\x02\x91\x4c\xb0\xce\x21\xfe\x3c\xc2" "\xb0", 91}, + {"Google 'Xenon2025h2' log", CTLogState::Admissible, CTLogFormat::RFC6962, + 1701000000000, // 2023-11-26T12:00:00Z + 0, // operated by Google + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x6b\xe0\xaf\xed\x06\x7c\x3d\xef\xd9" + "\x0e\xe4\x58\x4b\x04\xd8\x2a\x47\x99\x90\x89\x7a\xb9\x36\xa5\x75\xc8\x04" + "\xb8\xcb\xe2\xaa\x2b\xb5\x68\x9d\x88\x29\xa2\xa5\xcf\xce\x2b\x9a\x15\x9b" + "\xa0\x3e\x9d\x94\x1c\xb2\xb7\x4a\xf2\x51\xec\x40\xed\x62\x47\xa4\x03\x49" + "\x86", + 91}, {"Google 'Xenon2026h1' log", CTLogState::Admissible, CTLogFormat::RFC6962, 1727734767000, // 2024-09-30T22:19:27Z 0, // operated by Google @@ -98,7 +118,7 @@ const CTLogInfo kCTLogList[] = { "\xbf", 91}, {"Google 'Xenon2027h1'", CTLogState::Admissible, CTLogFormat::RFC6962, - 1766881800000, // 2025-12-28T00:30:00Z + 1760747400000, // 2025-10-18T00:30:00Z 0, // operated by Google "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xff\xa5\x9c\x03\x85\x51\x4a\x58\xc8" @@ -107,6 +127,16 @@ const CTLogInfo kCTLogList[] = { "\x86\x96\xd1\x44\xb8\xb9\x07\x7a\xcf\x94\x16\x97\x57\x2c\x2e\x47\x92\x05" "\x0e", 91}, + {"Cloudflare 'Nimbus2025'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1702969200000, // 2023-12-19T07:00:00Z + 1, // operated by Cloudflare + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x1a\x80\x1a\x15\x19\x19\x23\x79\xb4" + "\xfa\xa0\x79\x8e\x8d\xd5\xc1\xdc\xc2\xb5\x96\x92\x7e\x94\xe0\xc3\x7e\x14" + "\x7c\x0a\x0d\x2d\x46\xa8\x9d\x1b\xb1\x41\x65\x0c\x5f\x98\xc4\x5a\x17\x79" + "\x81\x5b\x4a\x14\x41\xec\xaf\xa9\x5d\x0e\xab\x12\x19\x71\xcd\x43\xef\xbb" + "\x97", + 91}, {"Cloudflare 'Nimbus2026'", CTLogState::Admissible, CTLogFormat::RFC6962, 1731088800000, // 2024-11-08T18:00:00Z 1, // operated by Cloudflare @@ -127,6 +157,36 @@ const CTLogInfo kCTLogList[] = { "\xf9\xcc\xe8\x44\x43\x75\xbb\x48\xfd\x71\x69\x7c\x77\xa3\xa8\x3c\xc3\xe8" "\x81", 91}, + {"DigiCert Yeti2025 Log", CTLogState::Retired, CTLogFormat::RFC6962, + 1753315200000, // 2025-07-24T00:00:00Z + 2, // operated by DigiCert + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xdf\x95\x00\x5e\x10\xc1\x01\xf7\x37" + "\xe3\x10\x74\xd1\xff\xb2\xca\x90\xed\x32\x99\x5f\x0c\x39\xfe\xa1\xd1\x13" + "\x11\xac\xd1\xb3\x73\x93\x20\xc2\x13\x3c\x4c\xb5\x7a\x52\x86\x86\x3d\xe3" + "\x95\x24\x7c\xd8\x91\x98\x48\x3b\xf0\xf0\xdf\x21\xf1\xb0\x81\x5a\x59\x25" + "\x43", + 91}, + {"DigiCert Nessie2025 Log", CTLogState::Retired, CTLogFormat::RFC6962, + 1744758000000, // 2025-04-15T23:00:00Z + 2, // operated by DigiCert + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xf2\xf0\xf0\xa7\x8b\x81\x2e\x09\x39" + "\x3b\x9f\x42\xda\x38\x44\x5f\xb4\xcc\xed\x36\xbb\xd8\x43\x7f\x16\x49\x57" + "\x87\x04\x7f\xa5\x01\x34\xf7\xe8\x68\x3f\xb7\x78\x1f\x60\x66\x2d\x67\x9a" + "\x75\x80\xb7\x53\xa7\x85\xd5\xbc\xab\x47\x06\x55\xdb\xb5\xdf\x88\xa1\x6f" + "\x38", + 91}, + {"DigiCert 'Wyvern2025h2' Log", CTLogState::Admissible, CTLogFormat::RFC6962, + 1724900983000, // 2024-08-29T03:09:43Z + 2, // operated by DigiCert + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xe0\xdb\x41\xef\xe4\x04\xbd\xcb\x6b" + "\x2e\x4c\xcc\xf1\x6c\xde\x41\x58\x7f\xfe\x94\xf6\x7a\xf6\x60\xed\x8b\x76" + "\x72\xa3\xa2\x1c\x31\x13\x32\x35\xa1\xf2\x08\xd2\x68\xc5\x34\xa7\x56\x08" + "\x1c\x63\xde\x95\xe2\x81\x69\x97\x8d\x1e\xa8\xb7\x66\x51\x25\x75\x4d\x78" + "\x2e", + 91}, {"DigiCert 'Wyvern2026h1'", CTLogState::Admissible, CTLogFormat::RFC6962, 1731024000000, // 2024-11-08T00:00:00Z 2, // operated by DigiCert @@ -148,7 +208,7 @@ const CTLogInfo kCTLogList[] = { "\x99", 91}, {"DigiCert 'Wyvern2027h1'", CTLogState::Admissible, CTLogFormat::RFC6962, - 1766253600000, // 2025-12-20T18:00:00Z + 1760119200000, // 2025-10-10T18:00:00Z 2, // operated by DigiCert "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x6a\xcb\x71\x62\x3d\x66\x9e\xd1\xae" @@ -158,7 +218,7 @@ const CTLogInfo kCTLogList[] = { "\xee", 91}, {"DigiCert 'Wyvern2027h2'", CTLogState::Admissible, CTLogFormat::RFC6962, - 1766253600000, // 2025-12-20T18:00:00Z + 1760119200000, // 2025-10-10T18:00:00Z 2, // operated by DigiCert "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xb8\xe8\x3c\x85\xc8\x1a\x61\x3f\xcc" @@ -167,6 +227,16 @@ const CTLogInfo kCTLogList[] = { "\xbb\xcf\x3f\x1a\xbc\x67\xe3\xa9\x26\x7a\x17\x4e\x29\x50\xc5\x7b\x16\xdd" "\x4a", 91}, + {"DigiCert 'Sphinx2025h2' Log", CTLogState::Admissible, CTLogFormat::RFC6962, + 1724900983000, // 2024-08-29T03:09:43Z + 2, // operated by DigiCert + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x41\x8c\x50\x13\x54\xb1\x19\x05\xb7" + "\x7f\x4a\x20\x6e\xa3\x75\x63\xca\x34\xf4\xcc\x74\xea\x32\x3b\xb6\x8b\x03" + "\x14\xa8\x52\x7f\x32\x87\x5e\x59\x9e\x0f\xab\x18\x9e\x29\x6c\xb5\x72\x77" + "\x1a\x27\x54\x85\x5d\xc1\x7b\x24\xa8\x34\xe3\xcd\x88\xce\xd4\x50\x1b\xbe" + "\x69", + 91}, {"DigiCert 'Sphinx2026h1'", CTLogState::Admissible, CTLogFormat::RFC6962, 1731024000000, // 2024-11-08T00:00:00Z 2, // operated by DigiCert @@ -188,7 +258,7 @@ const CTLogInfo kCTLogList[] = { "\xcd", 91}, {"DigiCert 'sphinx2027h1'", CTLogState::Admissible, CTLogFormat::RFC6962, - 1766253600000, // 2025-12-20T18:00:00Z + 1760119200000, // 2025-10-10T18:00:00Z 2, // operated by DigiCert "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xbe\x2a\xc8\xab\x55\xcf\xc2\x0c\x06" @@ -198,7 +268,7 @@ const CTLogInfo kCTLogList[] = { "\x21", 91}, {"DigiCert 'sphinx2027h2'", CTLogState::Admissible, CTLogFormat::RFC6962, - 1766253600000, // 2025-12-20T18:00:00Z + 1760119200000, // 2025-10-10T18:00:00Z 2, // operated by DigiCert "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x50\x27\xb6\xdc\xcf\x3c\xf6\x60\x2c" @@ -207,6 +277,26 @@ const CTLogInfo kCTLogList[] = { "\x3e\x1d\xc7\xc0\xb0\xc3\x2f\x10\xe3\xbd\x10\x5e\x8a\xf5\x12\x6e\x96\x52" "\xc0", 91}, + {"Sectigo 'Sabre2025h2'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1758216000000, // 2025-09-18T17:20:00Z + 3, // operated by Sectigo + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x85\x13\x11\x2d\x7b\xf3\x93\x81\xe4" + "\xb9\x7c\xd9\x64\x3b\xe7\xb5\x83\x99\x66\x79\x59\x47\x6a\x42\x5e\xd6\xbd" + "\x63\x2e\xb7\x91\x4b\xae\xbc\x56\xc4\xc5\x6e\x09\xa0\xd7\x64\x1a\xc8\xc1" + "\xaf\x89\x8b\xf5\x58\xd8\xba\xeb\x7b\x83\x52\xe9\xf4\xe0\xa5\xcd\xcd\x92" + "\xcc", + 91}, + {"Sectigo 'Mammoth2025h2'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1756500000000, // 2025-08-29T20:40:00Z + 3, // operated by Sectigo + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x88\xe2\xc7\xb3\xd7\x37\xa3\x91\xd7" + "\xb3\xc5\xda\x07\x51\x04\x2b\x81\xed\xc2\x44\x3b\x75\xa0\xe6\x65\xe1\x4a" + "\xba\x1b\xb1\x9c\xa9\x2a\x84\x31\x29\xae\x1d\x8b\xf1\x33\x9f\x12\x2e\x90" + "\xb1\x15\x67\x66\xa0\x7c\x0b\x5b\x62\x7f\x6c\x9a\x6a\x30\x9b\x68\x02\x16" + "\x6f", + 91}, {"Sectigo 'Mammoth2026h1'", CTLogState::Admissible, CTLogFormat::RFC6962, 1758216000000, // 2025-09-18T17:20:00Z 3, // operated by Sectigo @@ -247,6 +337,16 @@ const CTLogInfo kCTLogList[] = { "\x65\x35\x63\xf0\x49\xbe\x72\xd1\xaa\x9d\xaf\x7d\x08\xc4\xb4\x8d\x59\x3d" "\x73", 91}, + {"Sectigo 'Elephant2025h2'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1753148000000, // 2025-07-22T01:33:20Z + 3, // operated by Sectigo + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xd0\xe9\x4b\x78\x65\xb6\xa9\x46\x46" + "\x52\x84\x04\x47\x27\x70\xdc\x69\x5a\xc8\x43\xb7\x64\xad\xf8\xd7\xcc\xd3" + "\x85\x8d\x6d\x0d\x8a\xfc\xe4\x04\xa6\x7b\xa6\x4e\x2f\xfd\x83\x5f\x23\x97" + "\xc3\xc4\x42\xc1\x5b\x0a\x85\x16\xce\xa8\xc1\x0e\xc5\x6e\x10\xda\x9e\x0a" + "\x42", + 91}, {"Sectigo 'Elephant2026h1'", CTLogState::Admissible, CTLogFormat::RFC6962, 1753148000000, // 2025-07-22T01:33:20Z 3, // operated by Sectigo @@ -287,6 +387,16 @@ const CTLogInfo kCTLogList[] = { "\x1e\xdc\x8a\xec\x20\x61\x7e\x52\x25\x32\x4e\xd3\xd9\x0a\xe7\xe3\x0f\xed" "\xf2", 91}, + {"Sectigo 'Tiger2025h2'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1758236400000, // 2025-09-18T23:00:00Z + 3, // operated by Sectigo + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x15\x49\x79\x91\xe0\x5b\x59\x57\x24" + "\x5c\xcb\xfa\x59\x25\x93\xa1\x37\x86\xc2\x2f\x43\x48\xd0\x88\xd9\x66\x65" + "\x20\x43\x41\x90\x0f\xf3\x00\x39\xa6\x4b\x9f\x30\xdf\x7f\xdf\xd0\x98\x42" + "\xd8\xa1\x24\x59\x2f\xb8\x4f\xbf\xdb\x60\xe5\xef\xe1\xd0\xcd\xcf\x3a\xc4" + "\xc6", + 91}, {"Sectigo 'Tiger2026h1'", CTLogState::Admissible, CTLogFormat::RFC6962, 1758236400000, // 2025-09-18T23:00:00Z 3, // operated by Sectigo @@ -327,8 +437,18 @@ const CTLogInfo kCTLogList[] = { "\xa3\x4f\x6b\xa3\x37\xdd\xaa\x18\xde\x8a\x12\x25\xdb\x9c\xbd\x03\x72\x61" "\xc9", 91}, - {"Let's Encrypt 'Oak2026h1'", CTLogState::Retired, CTLogFormat::RFC6962, - 1772236800000, // 2026-02-28T00:00:00Z + {"Let's Encrypt 'Oak2025h2'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1701000000000, // 2023-11-26T12:00:00Z + 4, // operated by Let's Encrypt + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xb5\x76\x30\x07\xad\xc6\xc8\xd2\xe4" + "\x4b\xd2\xf5\xbe\xa2\x8d\x9c\xfd\x74\xfa\x3a\xd6\xfa\x59\x5d\xb6\x1c\x60" + "\xd3\xdd\x1f\x63\x87\x86\xe3\x45\xe0\xd5\x1b\xc0\x35\x6a\xab\x27\x91\x95" + "\xc9\xd7\x3d\xbb\xc1\xf7\x71\x86\x69\xf4\xb3\x5f\x90\x09\xaa\xae\xbd\x8d" + "\xa9", + 91}, + {"Let's Encrypt 'Oak2026h1'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1730678400000, // 2024-11-04T00:00:00Z 4, // operated by Let's Encrypt "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x99\xd4\x61\x70\x22\xfa\x77\x93\x0d" @@ -337,8 +457,8 @@ const CTLogInfo kCTLogList[] = { "\x48\x90\x23\x40\xde\x7a\x4d\x89\x32\xfb\xd7\x0a\xeb\x5e\x8c\xa2\xf1\xf6" "\x49", 91}, - {"Let's Encrypt 'Oak2026h2'", CTLogState::Retired, CTLogFormat::RFC6962, - 1772236800000, // 2026-02-28T00:00:00Z + {"Let's Encrypt 'Oak2026h2'", CTLogState::Admissible, CTLogFormat::RFC6962, + 1730678400000, // 2024-11-04T00:00:00Z 4, // operated by Let's Encrypt "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x6a\x70\x9d\xb3\x96\xe3\xec\x85\x36" @@ -347,6 +467,16 @@ const CTLogInfo kCTLogList[] = { "\xf4\xfc\x5c\xa9\x8c\x5f\xfb\x0d\x60\xe4\x2c\x0f\x16\xec\x2a\xb2\x6d\xeb" "\x15", 91}, + {"Let's Encrypt 'Sycamore2025h2d'", CTLogState::Admissible, CTLogFormat::Tiled, + 1764212400000, // 2025-11-27T03:00:00Z + 4, // operated by Let's Encrypt + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x44\x8f\x20\xad\xdd\xeb\xb2\xe1\x3d" + "\xe7\xfd\xd1\x93\xf2\x67\xf6\xb1\x81\xae\x97\x2f\x0e\xa0\xfa\x63\x93\xa8" + "\xcf\x51\x3e\xc4\x00\x46\x97\x7c\x3a\x24\xb7\x45\x1d\xfc\xd2\x15\x9b\xc4" + "\x15\x7f\xc6\xa1\xaa\xfa\x9d\xbc\xd0\x1e\xd5\x7b\xe6\xe7\x78\x47\x42\x1a" + "\x7e", + 91}, {"Let's Encrypt 'Sycamore2026h1'", CTLogState::Admissible, CTLogFormat::Tiled, 1764212400000, // 2025-11-27T03:00:00Z 4, // operated by Let's Encrypt @@ -387,6 +517,16 @@ const CTLogInfo kCTLogList[] = { "\x5b\xe0\x07\xf7\x00\x16\x3c\xb4\x4b\xe6\xf9\xad\xcf\xb6\x64\x87\x67\xf6" "\x9c", 91}, + {"Let's Encrypt 'Willow2025h2d'", CTLogState::Admissible, CTLogFormat::Tiled, + 1764212400000, // 2025-11-27T03:00:00Z + 4, // operated by Let's Encrypt + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x95\x7e\xfc\x58\xe6\x6c\xac\x3a\x7b" + "\xfc\xb0\xc5\xbe\xc1\xb2\xb5\xc9\x5a\x9d\x68\x49\xda\x81\x30\x76\x0c\xad" + "\x2a\x8d\xb5\x66\xb0\xb3\x6c\x9e\xab\x68\x50\x26\x67\x56\xcc\x16\x1e\x01" + "\xff\x4f\x9e\xd5\xa5\xad\x7e\x11\xb6\xc2\x00\x8c\xd9\xec\x7f\x68\x38\x19" + "\xb8", + 91}, {"Let's Encrypt 'Willow2026h1'", CTLogState::Admissible, CTLogFormat::Tiled, 1764212400000, // 2025-11-27T03:00:00Z 4, // operated by Let's Encrypt @@ -427,6 +567,26 @@ const CTLogInfo kCTLogList[] = { "\x8e\xd1\x3f\xe5\x5a\xa8\xf5\x88\xd0\x6e\x76\x8e\x78\x7e\x16\x9b\x83\xe1" "\x75", 91}, + {"TrustAsia Log2025a", CTLogState::Admissible, CTLogFormat::RFC6962, + 1701000000000, // 2023-11-26T12:00:00Z + 5, // operated by TrustAsia + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x70\xe5\xb1\xa4\x09\x79\x2b\x9d\xf8" + "\xa3\xa0\xdf\x18\xef\x95\x5d\x03\x6c\x7b\xa1\x91\xa9\xb8\x80\x7d\xec\x5c" + "\x02\x08\xe2\x6e\x2f\x7c\x32\x70\xbd\x96\x84\x5f\xa6\x62\xe9\x65\xb5\x7c" + "\x90\x58\xba\x22\xd5\xf9\xf5\x69\x54\xb7\xa8\x94\x4e\x32\x09\xae\x26\x11" + "\x4d", + 91}, + {"TrustAsia Log2025b", CTLogState::Admissible, CTLogFormat::RFC6962, + 1701000000000, // 2023-11-26T12:00:00Z + 5, // operated by TrustAsia + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xaa\xa0\x8b\xdb\x67\x14\x5d\x97\x89" + "\x1d\x08\x8d\x06\xd7\xc1\x94\x8e\xb0\xfa\x4c\x46\xd5\x53\x08\x78\x2b\x04" + "\x53\x6c\xf3\xde\xb1\xd1\x53\x40\xda\x90\x57\xe6\x1a\x9e\x3c\xc7\x03\xb8" + "\xbd\x2f\xa9\xcf\xe8\x7b\x5e\xe1\x4b\x60\xe5\x38\x43\x60\x97\xc1\x5b\x2f" + "\x65", + 91}, {"TrustAsia 'log2026a'", CTLogState::Admissible, CTLogFormat::RFC6962, 1726790400000, // 2024-09-20T00:00:00Z 5, // operated by TrustAsia @@ -448,7 +608,7 @@ const CTLogInfo kCTLogList[] = { "\x85", 91}, {"TrustAsia 'HETU2027'", CTLogState::Admissible, CTLogFormat::RFC6962, - 1766881800000, // 2025-12-28T00:30:00Z + 1760747400000, // 2025-10-18T00:30:00Z 5, // operated by TrustAsia "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xd7\x88\xc6\xf0\x3f\x6c\xba\xa2\x15" @@ -457,16 +617,6 @@ const CTLogInfo kCTLogList[] = { "\x01\xbb\x4f\xd8\xd3\x8f\xe3\x08\xc8\xb9\xf0\x24\xe9\xfe\xb8\xb1\x8e\x03" "\x5a", 91}, - {"TrustAsia Luoshu2027", CTLogState::Admissible, CTLogFormat::Tiled, - 1770834600000, // 2026-02-11T18:30:00Z - 5, // operated by TrustAsia - "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" - "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xba\x64\x98\xcf\x2e\x9d\x51\x09\x70" - "\x4d\xc9\x0f\xcc\xa3\x0a\x02\x93\x11\x8a\x7a\xb1\x1c\x80\x65\x2d\xf9\xab" - "\xbf\x1d\x52\x74\xc1\xf5\x45\x30\x02\x8b\x5c\x1b\xd5\x5d\x7c\xb2\xcf\x18" - "\x8e\x56\x82\xec\xf7\x21\xd8\xe4\x1a\xf0\xe7\xd1\x7a\xfb\x9b\xe1\x8f\x41" - "\x0d", - 91}, {"Bogus placeholder log to unbreak misbehaving CT libraries", CTLogState::Retired, CTLogFormat::RFC6962, 1750489200000, // 2025-06-21T07:00:00Z 6, // operated by Geomys @@ -477,6 +627,16 @@ const CTLogInfo kCTLogList[] = { "\x75\xe3\x66\x75\xa9\x59\x70\x2d\xe2\x5a\x8b\xc0\x7c\x0a\x6f\x5d\x2d\xf7" "\x37", 91}, + {"Geomys 'Tuscolo2025h2'", CTLogState::Admissible, CTLogFormat::Tiled, + 1756623600000, // 2025-08-31T07:00:00Z + 6, // operated by Geomys + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x2b\xd7\x78\x18\x6b\x73\x6e\x4c\x30" + "\xb1\x8a\x44\xb6\xf9\xd4\xf4\xa2\xa0\x66\xbe\xbb\x32\xc1\xa5\x07\xb9\xa7" + "\x17\xc0\xd6\xf5\xb1\xe7\x9e\x01\xf3\x3f\x35\xcf\x6d\xda\x3b\x9f\xe1\x72" + "\x0b\x04\x83\x62\xa1\x07\x6d\xa9\x75\x67\x40\x82\x57\x26\x43\xeb\x04\x3f" + "\xa3", + 91}, {"Geomys 'Tuscolo2026h1'", CTLogState::Admissible, CTLogFormat::Tiled, 1756623600000, // 2025-08-31T07:00:00Z 6, // operated by Geomys @@ -527,8 +687,18 @@ const CTLogInfo kCTLogList[] = { "\x65\x5e\x3d\xd5\x06\xeb\x35\x18\x34\xea\x63\x3a\x2b\x01\x33\x0d\x75\xed" "\xaa", 91}, + {"IPng Networks 'Halloumi2025h2'", CTLogState::Admissible, CTLogFormat::Tiled, + 1759861800000, // 2025-10-07T18:30:00Z + 7, // operated by IPng Networks + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xa8\x9c\x52\x9c\x27\x0c\x85\x68\xa4" + "\x08\x57\x96\xa3\x54\x62\xa6\x51\x9a\x54\x46\x4b\xe5\x59\xf8\x28\x42\x58" + "\x64\xcf\x7b\x46\x8e\x57\xb9\x38\x38\x87\xaf\xa7\xf3\x4e\xee\xb5\xf3\xd2" + "\xee\xaa\xa9\x2e\xfe\x66\x7b\xf7\x5d\x96\x92\x85\x1a\x81\x5f\x90\xc0\x6b" + "\x01", + 91}, {"IPng Networks 'Halloumi2026h1'", CTLogState::Admissible, CTLogFormat::Tiled, - 1765996200000, // 2025-12-17T18:30:00Z + 1759861800000, // 2025-10-07T18:30:00Z 7, // operated by IPng Networks "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xcd\xd7\x27\x1b\x04\x63\x9b\x66\x68" @@ -538,7 +708,7 @@ const CTLogInfo kCTLogList[] = { "\x8e", 91}, {"IPng Networks 'Halloumi2026h2a'", CTLogState::Admissible, CTLogFormat::Tiled, - 1767252600000, // 2026-01-01T07:30:00Z + 1761118200000, // 2025-10-22T07:30:00Z 7, // operated by IPng Networks "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x88\x68\x78\xcc\xcb\x1d\xba\x44\xe0" @@ -548,7 +718,7 @@ const CTLogInfo kCTLogList[] = { "\xad", 91}, {"IPng Networks 'Halloumi2027h1'", CTLogState::Admissible, CTLogFormat::Tiled, - 1765996200000, // 2025-12-17T18:30:00Z + 1759861800000, // 2025-10-07T18:30:00Z 7, // operated by IPng Networks "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xc3\x94\x94\x97\x6c\x9f\x77\x94\xc5" @@ -558,7 +728,7 @@ const CTLogInfo kCTLogList[] = { "\x67", 91}, {"IPng Networks 'Halloumi2027h2'", CTLogState::Admissible, CTLogFormat::Tiled, - 1765996200000, // 2025-12-17T18:30:00Z + 1759861800000, // 2025-10-07T18:30:00Z 7, // operated by IPng Networks "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xae\x62\x9b\x16\x43\xc6\xed\x07\xd0" @@ -567,6 +737,16 @@ const CTLogInfo kCTLogList[] = { "\x28\xe4\x17\x99\x91\x1d\xe0\x1f\xb7\x96\x3a\x2f\x22\x94\x33\xd8\x79\xb2" "\x1c", 91}, + {"IPng Networks 'Gouda2025h2'", CTLogState::Admissible, CTLogFormat::Tiled, + 1764212400000, // 2025-11-27T03:00:00Z + 7, // operated by IPng Networks + "\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48" + "\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xa4\x78\x8f\xdb\x83\x0d\xa3\xca\x60" + "\xb7\x94\x4d\xa1\xac\x2c\xbc\x62\x30\x49\xa5\x44\x28\xda\x9d\xcd\x80\x94" + "\x5e\xd3\x2e\xd0\xc3\x35\xe6\xde\xb7\x77\x6e\x9e\x0d\x40\xf3\xfa\x79\x10" + "\x8c\x00\xae\x46\x8e\x0b\x44\x97\x32\x89\xae\xc8\xd1\xa9\xc4\x74\xd1\xfd" + "\xc0", + 91}, {"IPng Networks 'Gouda2026h1'", CTLogState::Admissible, CTLogFormat::Tiled, 1764212400000, // 2025-11-27T03:00:00Z 7, // operated by IPng Networks diff --git a/icecat/security/manager/ssl/PSMRunnable.cpp b/icecat/security/manager/ssl/PSMRunnable.cpp new file mode 100644 index 0000000000..b962f52af3 --- /dev/null +++ b/icecat/security/manager/ssl/PSMRunnable.cpp @@ -0,0 +1,42 @@ +/* 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 "PSMRunnable.h" + +namespace mozilla { +namespace psm { + +SyncRunnableBase::SyncRunnableBase() + : Runnable("psm::SyncRunnableBase"), monitor("SyncRunnableBase::monitor") {} + +nsresult SyncRunnableBase::DispatchToMainThreadAndWait() { + nsresult rv; + if (NS_IsMainThread()) { + RunOnTargetThread(); + rv = NS_OK; + } else { + mozilla::MonitorAutoLock lock(monitor); + rv = NS_DispatchToMainThread(this); + if (NS_SUCCEEDED(rv)) { + lock.Wait(); + } + } + + return rv; +} + +NS_IMETHODIMP +SyncRunnableBase::Run() { + RunOnTargetThread(); + mozilla::MonitorAutoLock(monitor).Notify(); + return NS_OK; +} + +nsresult NotifyObserverRunnable::Run() { + mObserver->Observe(nullptr, mTopic, nullptr); + return NS_OK; +} + +} // namespace psm +} // namespace mozilla diff --git a/icecat/security/manager/ssl/PSMRunnable.h b/icecat/security/manager/ssl/PSMRunnable.h new file mode 100644 index 0000000000..faafb14c60 --- /dev/null +++ b/icecat/security/manager/ssl/PSMRunnable.h @@ -0,0 +1,49 @@ +/* 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 PSMRunnable_h +#define PSMRunnable_h + +#include "mozilla/Monitor.h" +#include "nsThreadUtils.h" +#include "nsIObserver.h" +#include "nsProxyRelease.h" + +namespace mozilla { +namespace psm { + +// Wait for the event to run on the target thread without spinning the event +// loop on the calling thread. (Dispatching events to a thread using +// NS_DispatchAndSpinEventLoopUntilComplete would cause the event loop on the +// calling thread to spin.) +class SyncRunnableBase : public Runnable { + public: + NS_DECL_NSIRUNNABLE + nsresult DispatchToMainThreadAndWait(); + + protected: + SyncRunnableBase(); + virtual void RunOnTargetThread() = 0; + + private: + mozilla::Monitor monitor MOZ_UNANNOTATED; +}; + +class NotifyObserverRunnable : public Runnable { + public: + NotifyObserverRunnable(nsIObserver* observer, const char* topicStringLiteral) + : Runnable("psm::NotifyObserverRunnable"), + mObserver(new nsMainThreadPtrHolder( + "psm::NotifyObserverRunnable::mObserver", observer)), + mTopic(topicStringLiteral) {} + NS_DECL_NSIRUNNABLE + private: + nsMainThreadPtrHandle mObserver; + const char* const mTopic; +}; + +} // namespace psm +} // namespace mozilla + +#endif diff --git a/icecat/security/manager/ssl/SSLServerCertVerification.cpp b/icecat/security/manager/ssl/SSLServerCertVerification.cpp index f7432a1d44..26fcab148f 100644 --- a/icecat/security/manager/ssl/SSLServerCertVerification.cpp +++ b/icecat/security/manager/ssl/SSLServerCertVerification.cpp @@ -99,6 +99,7 @@ #include "ExtendedValidation.h" #include "NSSCertDBTrustDomain.h" #include "NSSSocketControl.h" +#include "PSMRunnable.h" #include "RootCertificateTelemetryUtils.h" #include "ScopedNSSTypes.h" #include "SharedCertVerifier.h" diff --git a/icecat/security/manager/ssl/StaticHPKPins.h b/icecat/security/manager/ssl/StaticHPKPins.h index 94bc14c6f4..e649de5676 100644 --- a/icecat/security/manager/ssl/StaticHPKPins.h +++ b/icecat/security/manager/ssl/StaticHPKPins.h @@ -726,4 +726,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { static const int32_t kUnknownId = -1; -static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1784533762555000); +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1773053640200000); diff --git a/icecat/security/manager/ssl/moz.build b/icecat/security/manager/ssl/moz.build index 952a58dd0f..da339a68a0 100644 --- a/icecat/security/manager/ssl/moz.build +++ b/icecat/security/manager/ssl/moz.build @@ -127,6 +127,7 @@ UNIFIED_SOURCES += [ "nsTLSSocketProvider.cpp", "OSKeyStore.cpp", "PKCS11ModuleDB.cpp", + "PSMRunnable.cpp", "PublicKeyPinningService.cpp", "RootCertificateTelemetryUtils.cpp", "SecretDecoderRing.cpp", @@ -191,11 +192,7 @@ if CONFIG["OS_ARCH"] == "WINNT": "ntdll", ] - # CredentialManagerSecret.cpp includes without WIN32_LEAN_AND_MEAN, - # which pulls in and conflicts with included by other - # files in the same unified translation unit. Compile independently to prevent - # that interference. - SOURCES += [ + UNIFIED_SOURCES += [ "CredentialManagerSecret.cpp", ] # Version string comparison is generally wrong, but by the time it would diff --git a/icecat/security/manager/ssl/nsNSSCallbacks.cpp b/icecat/security/manager/ssl/nsNSSCallbacks.cpp index aecd429a5f..6c166c18a1 100644 --- a/icecat/security/manager/ssl/nsNSSCallbacks.cpp +++ b/icecat/security/manager/ssl/nsNSSCallbacks.cpp @@ -7,6 +7,7 @@ #include "nsNSSCallbacks.h" #include "NSSSocketControl.h" +#include "PSMRunnable.h" #include "ScopedNSSTypes.h" #include "SharedCertVerifier.h" #include "mozilla/ArrayUtils.h" @@ -19,7 +20,6 @@ #include "mozilla/SpinEventLoopUntil.h" #include "mozilla/StaticPrefs_security.h" #include "mozilla/Unused.h" -#include "mozilla/SyncRunnable.h" #include "mozilla/glean/SecurityManagerSslMetrics.h" #include "mozilla/intl/Localization.h" #include "nsContentUtils.h" @@ -40,7 +40,6 @@ #include "nsNetUtil.h" #include "nsProxyRelease.h" #include "nsStringStream.h" -#include "nsThreadUtils.h" #include "mozpkix/pkixtypes.h" #include "ssl.h" #include "sslproto.h" @@ -547,36 +546,28 @@ static char* ShowProtectedAuthPrompt(PK11SlotInfo* slot, nsIPrompt* prompt) { } } -class PK11PasswordPromptRunnable final : public nsIRunnable { +class PK11PasswordPromptRunnable : public SyncRunnableBase { public: PK11PasswordPromptRunnable(PK11SlotInfo* slot, nsIInterfaceRequestor* ir) : mResult(nullptr), mSlot(slot), mIR(ir) {} - - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIRUNNABLE + virtual ~PK11PasswordPromptRunnable() = default; char* mResult; // out + virtual void RunOnTargetThread() override; private: - ~PK11PasswordPromptRunnable() = default; - - // Accessed only on the main thread. True if any instance of - // PK11PasswordPromptRunnable is already running. static bool mRunning; PK11SlotInfo* mSlot; nsIInterfaceRequestor* mIR; }; -NS_IMPL_ISUPPORTS(PK11PasswordPromptRunnable, nsIRunnable) - bool PK11PasswordPromptRunnable::mRunning = false; -NS_IMETHODIMP -PK11PasswordPromptRunnable::Run() { +void PK11PasswordPromptRunnable::RunOnTargetThread() { MOZ_ASSERT(NS_IsMainThread()); if (!NS_IsMainThread()) { - return NS_ERROR_NOT_SAME_THREAD; + return; } // If we've reentered due to the nested event loop implicit in using @@ -586,7 +577,7 @@ PK11PasswordPromptRunnable::Run() { // to fail, but this is better than littering the screen with a bunch of // password prompts that the user will probably just cancel anyway. if (mRunning) { - return NS_OK; + return; } mRunning = true; auto setRunningToFalseOnExit = MakeScopeExit([&]() { mRunning = false; }); @@ -596,7 +587,7 @@ PK11PasswordPromptRunnable::Run() { if (!mIR) { rv = nsNSSComponent::GetNewPrompter(getter_AddRefs(prompt)); if (NS_FAILED(rv)) { - return rv; + return; } } else { prompt = do_GetInterface(mIR); @@ -604,12 +595,12 @@ PK11PasswordPromptRunnable::Run() { } if (!prompt) { - return NS_ERROR_FAILURE; + return; } if (PK11_ProtectedAuthenticationPath(mSlot)) { mResult = ShowProtectedAuthPrompt(mSlot, prompt); - return NS_OK; + return; } nsAutoString promptString; @@ -622,7 +613,7 @@ PK11PasswordPromptRunnable::Run() { promptString); } if (NS_FAILED(rv)) { - return rv; + return; } nsString password; @@ -630,11 +621,10 @@ PK11PasswordPromptRunnable::Run() { rv = prompt->PromptPassword(nullptr, promptString.get(), getter_Copies(password), &userClickedOK); if (NS_FAILED(rv) || !userClickedOK) { - return rv; + return; } mResult = ToNewUTF8String(password); - return NS_OK; } char* PK11PasswordPrompt(PK11SlotInfo* slot, PRBool /*retry*/, void* arg) { @@ -643,8 +633,7 @@ char* PK11PasswordPrompt(PK11SlotInfo* slot, PRBool /*retry*/, void* arg) { } RefPtr runnable(new PK11PasswordPromptRunnable( slot, static_cast(arg))); - MOZ_ALWAYS_SUCCEEDS(SyncRunnable::DispatchToThread( - GetMainThreadSerialEventTarget(), runnable)); + runnable->DispatchToMainThreadAndWait(); return runnable->mResult; } diff --git a/icecat/security/manager/ssl/nsNSSIOLayer.cpp b/icecat/security/manager/ssl/nsNSSIOLayer.cpp index a07963b9c9..b1a5f5c2df 100644 --- a/icecat/security/manager/ssl/nsNSSIOLayer.cpp +++ b/icecat/security/manager/ssl/nsNSSIOLayer.cpp @@ -13,6 +13,7 @@ #include "NSSCertDBTrustDomain.h" #include "NSSErrorsService.h" #include "NSSSocketControl.h" +#include "PSMRunnable.h" #include "SSLServerCertVerification.h" #include "ScopedNSSTypes.h" #include "TLSClientAuthCertSelection.h" diff --git a/icecat/security/manager/ssl/nsSTSPreloadList.inc b/icecat/security/manager/ssl/nsSTSPreloadList.inc index d8737fc76e..95f1e5a76a 100644 --- a/icecat/security/manager/ssl/nsSTSPreloadList.inc +++ b/icecat/security/manager/ssl/nsSTSPreloadList.inc @@ -8,7 +8,7 @@ /*****************************************************************************/ #include -const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); +const PRTime gPreloadListExpirationTime = INT64_C(1775472836741000); %% 0--1.de, 1 0-0.io, 1 @@ -16,11 +16,12 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 0-1.party, 1 0-24.com, 1 0-24.net, 1 +0-9.com, 1 0-nuisibles.fr, 1 0.com.ms, 1 0.sb, 1 -0.tl, 1 00.eco, 1 +00000000-0000-0000-0000-000000000000.xyz, 1 000000039.xyz, 1 0000031.xyz, 1 00010110.nl, 1 @@ -53,6 +54,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 00321365.com, 1 00365t.com, 1 0037552.com, 1 +003d88.com, 1 003dyw.com, 1 0047552.com, 1 00484.com, 1 @@ -60,6 +62,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 0057552.com, 1 0066.in, 1 0067552.com, 1 +007d88.com, 1 007kf.com, 0 007sascha.de, 1 008007.xyz, 1 @@ -73,6 +76,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 00bet86.com, 1 00dani.me, 1 00f.net, 1 +00ffbbb.com, 0 00wbf.com, 1 01.org, 1 01011970.xyz, 1 @@ -107,6 +111,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 02327.net, 1 02349898.xyz, 1 02365t.com, 1 +02375.net, 1 +023sec.com, 1 025500.xyz, 1 02638.net, 1 02n.cn, 1 @@ -121,6 +127,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 036566733.com.tw, 1 0376z6.com, 1 0377z6.com, 0 +038663.com, 1 0391315.com, 1 03region.ga, 1 040552.com, 0 @@ -160,8 +167,9 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 056697.com, 0 0570168.com, 1 0571z6.com, 1 -0595.com, 1 0597z6.com, 1 +059958.com, 1 +06006.vip, 0 060579.com, 1 060798.com, 1 06091994.xyz, 1 @@ -176,6 +184,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 071552.com, 0 071615.com, 1 0737399.com, 1 +076.ne.jp, 1 078663.com, 1 078895.com, 1 0788yh.com, 1 @@ -237,7 +246,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 0iq.moe, 1 0iz.net, 1 0knowledge.de, 1 -0l.de, 1 0lt.de, 1 0milemarathon.com, 1 0mniteck.ca, 1 @@ -267,10 +275,10 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 0x.cx, 1 0x.sk, 1 0x0.li, 1 +0x0.network, 1 0x00ff00ff.com, 1 0x0a.team, 1 0x1.ink, 1 -0x1.st, 1 0x12.de, 1 0x15.ca, 1 0x17.de, 1 @@ -292,7 +300,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 0x76.de, 1 0x7d7b.net, 1 0x7fffffff.net, 0 -0x90.dk, 1 0x90.io, 1 0x90.space, 1 0xaa55.me, 1 @@ -306,7 +313,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 0xfc.de, 1 0xfn.eu, 1 0xheuts.nl, 1 -0xinsider.com, 1 0xn.de, 1 0xnotes.me, 1 0xnull.de, 1 @@ -315,9 +321,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 0yen.org, 1 1-2-3bounce.co.uk, 1 1-800-mattress.com, 1 -1-800-payment.com, 1 1-inv.com, 1 -1-news.net, 0 +1-news.net, 1 1-pujcky-uvery.tk, 1 1-x-bet.com, 1 1-x-bet.ke, 1 @@ -327,13 +332,13 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1-xbet13.com, 1 1-xbet20.com, 1 100-downloads.com, 1 -100000037.xyz, 1 10000hits.tk, 1 10000lab.net, 1 10000rub.gq, 1 10000spoons.tk, 1 10001000.xyz, 1 100048.com, 1 +1000ftad.ch, 1 1000inf.ru, 1 1000ps.at, 1 1000ps.de, 1 @@ -359,8 +364,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 100ballov.tk, 1 100beauty.com, 1 100bib.ru, 1 -100car.pl, 1 -100cgi.com, 1 100kraz.ga, 1 100nome.com, 1 100pay.com, 1 @@ -383,7 +386,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 100visits.tk, 1 100voprosov.tk, 1 100zakladok.tk, 1 -10101.io, 1 +10101.io, 0 101010.hopto.org, 1 101010.pl, 1 10161997.xyz, 1 @@ -425,7 +428,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1068511.com, 1 106906.xyz, 1 10705.ml, 1 -1071kongremerkezi.com, 1 107996.com, 1 1079fm.ga, 1 107fm.kz, 1 @@ -459,12 +461,16 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 10ve.live, 1 10web.io, 1 10wtac.tk, 1 -10xerp.com, 1 +10x.to, 1 +10xnation.com, 1 11-11.sale, 1 1100.so, 1 +110111011.xyz, 1 11018vip.com, 1 11018xpj.com, 1 110838.com, 1 +110cl.com, 1 +110na.com, 1 1110a24.com, 1 1111365t.com, 1 1111systems.com, 1 @@ -522,6 +528,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1123.ca, 1 1126.blog, 1 112app.nl, 1 +112hz.com, 1 112it.ro, 0 112krimpen.tk, 1 112madgamer.tk, 1 @@ -532,7 +539,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 113z6.com, 1 11400.com, 1 11443837.com, 0 -114514911.xyz, 1 114514ss.com, 1 114online.com, 1 115.one, 1 @@ -541,8 +547,9 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 117766.xyz, 1 1177z6.com, 1 11792.com, 1 +1182asaka-shika.com, 1 1190america.tk, 1 -1199bet.vip, 0 +1199bet.vip, 1 119sh.com, 1 11aaee.com, 1 11aagg.com, 1 @@ -609,6 +616,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 11rrcc.com, 1 11rree.com, 1 11rrff.com, 1 +11rrjj.com, 1 11rrkk.com, 1 11rrss.com, 1 11rrzz.com, 1 @@ -637,7 +645,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 11yyqq.com, 1 11zzkk.com, 1 11zztt.com, 1 -12-12.sale, 1 12.ag, 1 12.digital, 1 1200.cf, 1 @@ -688,6 +695,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 12345678365.com, 1 123456789365.com, 1 12345porn.com, 1 +12356.xyz, 1 12365t.com, 1 123apps.com, 1 123birthdaygreetings.com, 1 @@ -723,7 +731,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 125c.cn, 1 125colours.tk, 1 125m125.de, 1 -126northmarketing.com, 1 127011.ch, 1 127661.com, 1 1288366.com, 1 @@ -749,7 +756,9 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1300.jp, 1 131365a.com, 0 131365qq.com, 1 +13214.cc, 1 132kv.ch, 1 +133.casino, 1 13318522.com, 1 1333.cf, 1 133335.xyz, 1 @@ -778,7 +787,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 141145.com, 0 14159.gb.net, 1 142710.com, 1 -1432bet.com, 1 144chan.ml, 1 1453914078.rsc.cdn77.org, 1 145ks.net, 1 @@ -793,12 +801,13 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 14fbr.com, 1 14flags.de, 1 14it.de, 1 +14nn.com, 0 14u15.com, 1 14x3.de, 1 15-montorgueil.com, 1 150mpg.com, 1 1511774230.rsc.cdn77.org, 1 -1517.ch, 0 +1517.ch, 1 1517598.com, 1 1517668.com, 1 1517669.com, 1 @@ -914,6 +923,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1620350.com, 1 162263.com, 0 162361.com, 0 +162cr.com, 1 +162ea.com, 1 162jonesrd.ca, 1 163.gd, 1 16321.tk, 1 @@ -1028,7 +1039,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 173yg.com, 1 174.net.nz, 1 174343.com, 1 -175.pt, 1 175dt.com, 1 177milkstreet.com, 1 17dbz.org, 1 @@ -1039,12 +1049,12 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 17u15.com, 1 17xile.com, 1 1800-mattress.net, 1 -1800.co, 1 1800baskets.com, 1 1800flowers.com, 1 1800matress.net, 1 1800mattress.co, 1 1800mattress.net, 1 +1800petmeds.com, 1 182wh.com, 1 1831365.com, 1 1832365.com, 1 @@ -1075,7 +1085,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1911-movie.jp, 1 1911trust.com, 1 1912x.com, 1 -191512.xyz, 1 192.com, 1 1920.tk, 1 1920301.com, 1 @@ -1091,7 +1100,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1941-45.ru, 1 1965.ml, 1 196flavors.com, 1 -1975chs.com, 1 19770620.xyz, 1 1981365.com, 1 1981612088.rsc.cdn77.org, 1 @@ -1105,6 +1113,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1999.rs, 1 19990bb.com, 1 19990c.com, 1 +19990cc.com, 1 19990d.com, 0 19990dd.com, 1 19990e.com, 1 @@ -1168,7 +1177,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1bps.eu.org, 1 1bps.io, 1 1brd.com, 1 -1breadcrumb.com, 0 +1breadcrumb.com, 1 1breadcrumb.com.au, 1 1c-power.ru, 1 1casino-online-games.com, 1 @@ -1180,9 +1189,9 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1codex.online, 1 1cover.co.nz, 1 1cover.com.au, 1 +1cp.org, 1 1cprosto.tk, 1 1cswd.com, 1 -1d-lsd.shop, 1 1datatec.com, 1 1day1ac.red, 1 1ddl.org, 1 @@ -1191,6 +1200,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1dollarwebsite.gq, 1 1dot1dot1dot1.cf, 1 1dp.com, 1 +1dt.ltd, 1 1dv.link, 1 1e9.nl, 1 1eanda.com, 1 @@ -1230,7 +1240,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1me.cz, 1 1mgt.ru, 1 1montre.fr, 1 -1my.me, 0 +1my.me, 1 1nf.me, 1 1nian.vip, 1 1node.site, 1 @@ -1246,7 +1256,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1password.com, 1 1password.eu, 1 1picture.hu, 1 -1placedessaisons.com, 1 1plus.red, 1 1plus1tv.zone, 1 1pluss.ee, 1 @@ -1256,6 +1265,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1q365a.com, 1 1r.is, 1 1rail.com.au, 1 +1roadsquadtransport.com, 1 1rs.nl, 1 1rust.net, 1 1salland.nl, 1 @@ -1275,17 +1285,20 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1stclassbouncycastles.co.uk, 1 1stforfun.co.uk, 1 1stpeninsulabouncers.co.uk, 1 +1stream.co.za, 1 1strecipes.com, 1 1ststop.co.uk, 1 +1sttix.org, 1 1ticks.com, 1 -1time.io, 1 1tomplumber.com, 1 +1tpt.com, 1 1up.it, 1 1v9.im, 1 1v9.io, 1 1viemeilleure.eu, 1 1voz.org, 1 1vpns.com, 1 +1vs2.by, 1 1w6.net, 1 1way.faith, 1 1web.be, 1 @@ -1312,6 +1325,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1x1.re, 1 1x2020.xyz, 1 1x2betwinner.com, 1 +1x2magazine.eu, 1 1x4.com.au, 1 1x88.net, 1 1xaja.com, 1 @@ -1459,6 +1473,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 1xsport.mobi, 1 1xspport.mobi, 1 1xstavka.ru, 1 +1xtranslate.com, 1 1zagon.tk, 1 1zavse.si, 1 1zwartewaterland.nl, 1 @@ -1492,7 +1507,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 2018-frisuren.tk, 1 2018.wales, 1 2018fifaworldcup.tk, 1 -201923.xyz, 1 202020.health, 1 2020cadillac.com, 1 2020insight.co.za, 1 @@ -1510,7 +1524,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 2024-7.com, 0 2024-8.com, 0 2024-9.com, 0 -2026.com.ar, 1 2030404.com, 1 2030411.com, 1 2030calculator.com, 1 @@ -1525,6 +1538,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 2033010.com, 1 2033011.com, 1 2033a.com, 1 +2033c.com, 1 2033z.com, 1 203700.com, 1 204504byse.info, 1 @@ -1533,25 +1547,17 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 2083236893.com, 1 208garfield.com, 1 208medical.org, 1 -20deg.com, 1 20denier.com, 1 20gg.de, 1 20mcc.in, 1 20plus.com, 1 20sights.tk, 1 21.co.uk, 1 -210093.xyz, 1 2103kobo.net, 1 2113.ch, 1 214701.xyz, 1 21566365.com, 0 216digital.com, 1 -21bit.com, 1 -21bit1.com, 1 -21bit22.com, 1 -21bit24.com, 1 -21bit5.com, 1 -21bit9.com, 1 21gou.com, 1 21kampus.com, 1 21lab.co, 1 @@ -1570,8 +1576,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 220control.ru, 1 2211.cf, 1 22168365.com, 1 +221b.store, 1 222001.com, 1 -222382.xyz, 1 2226321.com, 1 2227552.com, 1 222aghoststory.com, 1 @@ -1605,19 +1611,33 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 22delta.com, 1 22emesiecle.com, 0 22lc8.com, 0 +22momo.com, 1 22nd.com, 0 22ndcircuitil.gov, 1 22pagespdx.com, 1 22ssbb.com, 1 -22times.com, 0 +22ssjj.com, 1 +22sskk.com, 1 +22sstt.com, 1 +22tete.com, 1 +22times.com, 1 +22ttgg.com, 1 22vetter.st, 1 +22xxjj.com, 1 +22xxyy.com, 1 +22yybb.com, 1 22yydd.com, 1 22yyii.com, 1 22yyjj.com, 1 +22yykk.com, 1 +22yypp.com, 1 +22yyqq.com, 1 +22yyrr.com, 1 22yyss.com, 1 22zt.com, 1 230100.xyz, 1 230beats.com, 1 +232192.com, 1 233.be, 1 233.land, 1 233.services, 1 @@ -1662,7 +1682,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 240525.com, 1 241552.com, 1 242552.com, 1 -244.life, 1 2444.cf, 1 245990.xyz, 1 245meadowvistaway.com, 1 @@ -1677,6 +1696,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 247csr.com, 1 247cumshots.com, 1 247dns.net, 1 +247healthshop.com, 1 247maturesex.com, 1 247megamart.com.au, 1 247vision.com, 1 @@ -1703,10 +1723,12 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 249722.com, 1 249cq.com, 1 24ball.com, 1 +24bel.ru, 0 24bit.dk, 1 24buffalo.com, 0 24chance.tk, 1 24gazette.ga, 1 +24go.me, 1 24hour-locksmithsanantonio.com, 1 24hourcyclist.co.uk, 1 24hourlocksmithdallastx.com, 1 @@ -1716,19 +1738,21 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 24images.com, 1 24k.co.jp, 1 24onlain.tk, 1 -24shares.cc, 1 +24see.com, 1 +24share.com, 1 24slides.com, 1 -24toolkit.com, 1 +24webservice.nl, 1 24x7aircargoservices.co.in, 1 24x7serversupport.io, 1 -24zegarki.pl, 1 2500.cf, 1 2502.net, 1 250250.best, 1 2525admin.nl, 1 253007.com, 1 2531111.ru, 1 +253325.com, 1 254vc.ml, 1 +256br.com, 1 256k.me, 1 258027.xyz, 1 258management.cf, 1 @@ -1739,6 +1763,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 25friday.com, 1 25genomes.org.uk, 1 25genomes.uk, 1 +25lotto.co.ke, 1 25lotto.com, 1 25may.tk, 1 25percent.me, 1 @@ -1747,31 +1772,38 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 26-30railcard.co.uk, 1 2600edinburgh.org, 1 2600hq.com, 1 -2600qatar.com, 1 2601.de, 1 262569.com, 1 263mail.com, 1 +267326.com, 1 269196.com, 1 2698pacificave.com, 1 +26uuu.mobi, 1 +26uuu.us, 1 27.gay, 1 27000.best, 1 2718282.net, 1 272live.com, 1 27726.eu, 1 27728522.com, 1 +277g.cc, 0 27lx.me, 1 28-industries.com, 1 280.social, 1 281180.de, 1 +283228.com, 1 28359.eu, 1 28365cn-365.com, 1 +283928.com, 1 28428.com, 0 284365.com, 1 +287628.com, 1 2881dh.com, 1 28865.de, 1 28865.eu, 1 288cn-563.com, 1 288game.net, 1 +289728.com, 1 28spots.net, 1 291167.xyz, 1 293685.com, 1 @@ -1806,12 +1838,15 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 2c2p.com, 1 2cat.cc, 1 2cb.rocks, 1 +2chan.eu, 1 2chan.jp, 1 2chi1.com, 1 2class.eu.org, 1 2cv-co.be, 1 2cvclubdepicardie.tk, 1 +2daysmood.asia, 1 2daysmood.eu, 1 +2daysmood.nl, 1 2daysmood.us, 1 2dk.info, 1 2dns.com, 1 @@ -1833,6 +1868,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 2i2.link, 1 2img.net, 1 2impact.com, 1 +2insights.com, 1 2jhb.com, 1 2k7.link, 1 2kgwf.fi, 1 @@ -1857,24 +1893,22 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 2or3.tk, 1 2pi.finance, 1 2rad-prumbaum.de, 1 -2re.direct, 1 2rodeo.com, 1 2rsc.net, 1 2sendai.net, 1 2serious.com, 1 +2silosbrewing.com, 1 2target.com, 1 2tausend19.de, 1 2th.me, 1 2think.org, 1 2to.co, 1 2travel8.world, 1 +2ugaming.com, 1 2url.link, 1 2ustyle.com, 1 2vnews.com, 1 2vp-an.online, 1 -2wikipedia.com, 1 -2wikipedia.info, 1 -2wikipedia.net, 1 2wth.com, 1 2x.nu, 1 2xgraphik.com, 1 @@ -1901,6 +1935,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 30deagosto.tk, 1 30for30podcasts.com, 1 30hb.cn, 1 +30minut.com, 1 30nama1.tk, 1 30parkplace.co.uk, 1 30region.tk, 1 @@ -1909,7 +1944,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3100.cf, 1 313xpj.com, 0 314553.com, 1 -315101.xyz, 1 315422.com, 1 315xpj.com, 0 317811111.com, 0 @@ -1938,6 +1972,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 31fss.marketing, 1 31fss.net, 1 31fss.support, 1 +320281.net, 0 321666365.com, 1 321live.nl, 1 321livestream.nl, 1 @@ -1968,7 +2003,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3389p.com, 1 338da.com, 1 338sa.com, 1 -339999.top, 0 +339999.top, 1 33acac.com, 1 33b58.com, 1 33devici.ml, 1 @@ -1981,7 +2016,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 34365t.com, 1 3444.cf, 1 3456666365.com, 0 -345667.xyz, 1 345678365.com, 1 3456789365.com, 1 3473-wiki.de, 1 @@ -1993,7 +2027,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 350pdx.org, 1 3527trail.com, 1 3539783.com, 1 -353digital.ie, 1 3555500.com, 1 3559365.com, 1 356338.com, 1 @@ -2023,7 +2056,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 360china.com, 1 360cycling.com.br, 1 360degreecloud.com, 1 -360dental.com, 1 360e-commerce.net, 1 360ecogroup.com, 0 360ecommerce.net, 1 @@ -2031,7 +2063,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 360hosting.com.au, 1 360islam.com, 1 360kuvia.fi, 1 -360mediaworks.com, 1 +360mediaworks.com, 0 360organic.com, 1 360primeview.ie, 1 360prokuvat.fi, 1 @@ -2048,6 +2080,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 365.systems, 1 36506088.com, 1 36506099.com, 1 +3651145.com, 1 3651147.com, 1 3651149.com, 1 3651201.com, 1 @@ -2134,18 +2167,29 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 365ypw.com, 1 365zg.org, 1 369369.xyz, 1 -3699.cc, 1 369bin.com, 1 +369dp.com, 1 +369eq.com, 1 +369ex.com, 1 +369ra.com, 1 +369rr.com, 1 36thdistrictcourtmi.gov, 1 372bbb.com, 1 +375337.com, 1 +375575.xyz, 1 375realty.com, 1 376064.com, 0 377625.com, 1 +377837.com, 1 377854.com, 1 377ks.com, 1 377zzz.com, 1 37889658.com, 0 +379237.com, 1 +379437.com, 1 +379637.com, 1 379700.com, 1 +379737.com, 1 3798.com, 0 37987.com, 1 37987d.com, 1 @@ -2156,6 +2200,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 380222444.com, 0 38138938.com, 1 38317.tk, 1 +3837k.com, 0 +3837x.com, 0 3838onndo.tk, 1 3839.ca, 1 383aaa.com, 1 @@ -2164,6 +2210,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3880p.com, 1 38888msc.com, 1 38irkutsk.tk, 1 +390539.com, 1 390trains.com, 1 392365.com, 0 393335.ml, 0 @@ -2171,13 +2218,17 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3957b.com, 1 3957d.com, 1 3957g.com, 1 +396228.com, 0 3963bb.com, 1 3963cc.com, 0 +396539.com, 1 +397039.com, 1 3970a.com, 1 3970aa.com, 1 3970abc.com, 1 3970b.com, 1 3970bb.com, 1 +3970cc.com, 1 3970ccc.com, 1 3970d.com, 1 3970dd.com, 1 @@ -2191,6 +2242,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3970hh.com, 1 3970ii.com, 1 3970j.com, 1 +3970jj.com, 1 3970ku.com, 1 3970l.com, 1 3970ll.com, 1 @@ -2215,14 +2267,17 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3970xx.com, 1 3970y.com, 1 3970yes.com, 1 +3970ylc.com, 1 3970yy.com, 1 3970z.com, 1 3970zz.com, 1 397542.com, 1 +398039.com, 1 39news.tk, 1 39sihu.com, 0 39w66.com, 1 3aa365.com, 1 +3abnstore.com, 1 3accounts.ml, 1 3adao.org, 1 3aexpert.com.ua, 1 @@ -2250,6 +2305,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3d-fotoshpalery.com.ua, 1 3d-glow.de, 1 3d-station.fr, 1 +3d47.com, 1 3dadvance.fr, 1 3dall.ro, 1 3danimation.tk, 1 @@ -2294,13 +2350,14 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3dsupplies.be, 1 3dthink.tech, 1 3dvisual.studio, 1 -3dwallpanels.com.au, 1 +3dzip.org, 1 3ecpa.com.hk, 1 3ecpa.com.my, 1 3ecpa.com.sg, 1 3ee365.com, 1 3einfrastructure.com, 1 3em1.pt, 1 +3enota.by, 1 3eyonetim.com, 1 3ff365.com, 1 3fragezeichen.de, 1 @@ -2310,10 +2367,10 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3gg365.com, 1 3gokushi.com, 1 3haeuserprojekt.org, 1 +3hh365.com, 1 3i-infotech.com, 1 3ieimpact.org, 1 3ii365.com, 1 -3ikipedia.org, 1 3james.com, 1 3jj365.com, 1 3kings-3hills.com, 1 @@ -2326,6 +2383,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3mediaweb.com, 1 3mind-solutions.com, 1 3ml.org.uk, 0 +3moorcrescent.online, 1 3ne.fun, 1 3newsnow.com, 1 3nickels.com, 1 @@ -2350,6 +2408,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3pillarglobal.com, 1 3plusdesign.gr, 1 3pm.tw, 1 +3prn.com, 1 3pro.ca, 1 3proxy.org, 1 3proxy.ru, 1 @@ -2392,10 +2451,9 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 3we.org, 1 3wid.com.br, 1 3wideclub.com, 1 -3wikipedia.com, 1 -3wikipedia.org, 1 3wincorp.com, 1 3xceler.com.br, 1 +3xx.click, 1 3xx.link, 1 3z4m.stream, 1 3zm-cheats.de, 1 @@ -2409,6 +2467,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 4000milestare.com, 1 40010monogatari.com, 1 4005365.com, 1 +4008810.com, 0 400yaahc.gov, 1 401ksecure.com, 1 401ksite.com, 1 @@ -2424,6 +2483,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 4025369.com, 1 403.ch, 1 403page.com, 1 +404.blue, 0 404.city, 1 404.guide, 1 4048kkk.com, 1 @@ -2468,6 +2528,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 4245pay.com, 1 425degree.com, 1 428northampton.com, 1 +42ch.com, 1 42day.info, 1 42entrepreneurs.fr, 0 42film.de, 1 @@ -2488,7 +2549,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 43klive.com, 1 43rddems.org, 1 44-k.com, 1 -44.in.ua, 1 44168365.com, 1 443.one, 0 443.org, 1 @@ -2519,7 +2579,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 45b.org, 1 45l.cc, 0 45min.ga, 1 -45ops.org, 1 45shiki.net, 1 463855.com, 1 463lpallet.com, 1 @@ -2529,12 +2588,14 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 476470.com, 1 47essays.com, 1 47yr.com, 1 +483329.com, 1 483610.com, 1 48365365cn.com, 1 48365cn-365.com, 1 486662.xyz, 1 486773.com, 0 487511.com, 1 +487552.com, 1 48coin.cf, 1 48d88.com, 0 48lipetsk.tk, 1 @@ -2589,7 +2650,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 4garage.com.br, 1 4gnews.pt, 1 4grad.in.ua, 1 -4heat.cz, 1 4host.ch, 1 4hourcourse.com, 1 4hourmini.com, 1 @@ -2614,20 +2674,18 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 4mm.org, 1 4n3.net, 1 4n6.io, 1 -4netguides.org, 0 +4netguides.org, 1 4nikola.de, 1 4nk.network, 1 -4o.pw, 0 +4o.pw, 1 4ourbest.tk, 1 4paws.co.uk, 1 -4pay.online, 1 4peace.gent, 1 4played.de, 1 4played.vip, 1 4project.co.il, 1 4q-quartet.tk, 1 4racers.jp, 1 -4recon.se, 1 4ree.tk, 1 4screens.net, 1 4season-flowers.com, 1 @@ -2661,9 +2719,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 4y4a-arts.space, 1 4yowipes10yo.gq, 1 4yuz.net, 1 -5.st, 1 50-ottenkov.tk, 1 -500.gov.tw, 1 5000.cx, 1 5000164.com, 1 5000164.jp, 1 @@ -2709,6 +2765,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 50thingstodo.org, 1 511.org, 1 511in.org, 1 +51365aa.com, 1 51365bb.com, 1 51365cc.com, 1 51365ee.com, 0 @@ -2716,6 +2773,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 514-media.co.uk, 1 514-media.com, 1 514-media.de, 1 +514-media.fr, 1 514622.com, 1 515188.xyz, 1 517vpn.cn, 1 @@ -2774,6 +2832,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 51fss.marketing, 1 51lavanderiaindustrial.com.br, 1 51life.com, 1 +51logo.com, 1 51nullacht.de, 1 51pic.com, 1 51pig.com, 1 @@ -2781,6 +2840,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 51senluo.com, 1 51space.com, 1 51talk.ph, 1 +51tiaojiu.com, 1 51xiongmao.cn, 1 52002a.com, 1 52002b.com, 1 @@ -2825,9 +2885,10 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 52chatai.com, 1 52danji.cc, 1 52dashboard.com, 1 +52evar.com, 1 52evar1.com, 1 +52fish.com, 1 52hentai.ml, 1 -52iv.one, 1 52kb1.com, 1 52kb365.com, 0 52ncp.net, 1 @@ -2839,6 +2900,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 531k8.com, 1 533sss.com, 1 534365.com, 1 +5364b.com, 1 5364d.com, 1 5364jc.com, 1 539124.xyz, 1 @@ -2848,20 +2910,29 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 541651.com, 1 543yazilim.com, 1 54below.com, 0 -54cuatro.com, 0 +54cuatro.com, 1 5518k3.com, 1 5533445.com, 1 55365t.com, 1 5557552.com, 1 +555bet86.com, 1 +555btt.com, 1 +555kb.com, 1 +555w.org, 1 +555xl.com, 1 555zlong.com, 1 556185.com, 1 557.pm, 1 557bbb.com, 1 55bet86.com, 1 +55k66.vip, 1 55opt.org, 1 56011s.com, 0 5611.cf, 1 5611bet.com, 1 +562656.com, 1 +562956.com, 1 +563398.com, 1 5633bet.com, 1 56365t.com, 1 5663.cc, 1 @@ -2871,6 +2942,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 5676321.com, 1 567666365.com, 1 5677.cf, 1 +568756.com, 1 572223.com, 0 572kb.com, 1 573sss.com, 1 @@ -2884,6 +2956,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 589174.com, 1 589team.com, 1 592227.com, 0 +593380.com, 1 +593398.com, 1 594795.com, 1 595380.com, 1 5981168.com, 1 @@ -2975,20 +3049,19 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 5peciali5t.tk, 1 5penazi.sk, 1 5percentperweek.com, 1 -5play.life, 1 5sjsa.com, 1 5snb.club, 1 5sporn.com, 1 5stardesigner.tk, 1 5starexterior.com, 0 5stars.tv, 1 -5startrucksales.us, 1 5stones-consulting.cn, 1 5stones-consulting.com, 1 5stones-consulting.ru, 1 5tart.tk, 1 5thchichesterscouts.org.uk, 1 5theasthall.com, 0 +5thfloormedia.com, 1 5thgenrams.com, 1 5tiptop.com, 1 5top.nl, 1 @@ -3020,6 +3093,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 61ag8.com, 1 621162.com, 0 628462.com, 0 +632026.com, 0 6321000.com, 0 6321007.com, 0 6321008.com, 0 @@ -3035,6 +3109,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 635-888.com, 1 635-988.com, 1 636051.com, 1 +638566.com, 1 6396000.com, 1 63960000.com, 1 639611111.com, 0 @@ -3062,10 +3137,11 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 6396sss.com, 0 6396ttt.com, 1 6396vvv.com, 0 +6396xxx.com, 0 6396yyy.com, 1 6396zzz.com, 0 +63fg.com, 1 63gaming.com, 1 -64.place, 1 644.ro, 1 645ds.com, 0 64970.com, 1 @@ -3102,6 +3178,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 6548877.com, 1 654pk.cn, 0 655ks.com, 1 +658565.com, 1 +659265.com, 1 6601.cf, 1 6602.cf, 1 6602p.com, 1 @@ -3237,11 +3315,13 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 6729z.co, 1 6729zz.co, 1 672bbb.com, 1 +673395.com, 1 673422.com, 0 673569.com, 1 673bbb.com, 1 676812.com, 0 677314.com, 0 +677340.com, 0 677346.com, 1 677354.com, 1 677364.com, 0 @@ -3250,10 +3330,12 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 67836565.com, 1 678365t.com, 1 678678365.com, 1 +682368.com, 1 68522c.com, 1 68522k.com, 1 68522m.com, 1 68522s.com, 1 +68622.com, 1 68622a.com, 1 68622b.com, 1 68reg.tk, 1 @@ -3330,8 +3412,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 69wasted.net, 1 6a.nz, 1 6b.com.au, 1 -6b.nz, 1 -6b6t.org, 1 6bwcp.com, 1 6conecta.com, 1 6dec.gc.ca, 1 @@ -3349,13 +3429,14 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 7-zip.de, 1 7.ls, 1 700.az, 1 -700creditsolution.com, 1 700dealer.com, 1 700wns.com, 1 +7014twinlakes.com, 1 701squad.tk, 1 702341.win, 1 704533.com, 0 705994.com, 1 +708090.ru, 1 70mpg.org, 1 7100.cf, 1 712kb.com, 1 @@ -3375,16 +3456,23 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 7261696e626f77.net, 1 727sss.com, 1 730.no, 1 +732273.com, 1 +736373.com, 1 +736573.com, 1 737478.xyz, 1 -73k.us, 1 +739373.com, 1 +739673.com, 1 740424.ml, 1 740660.com, 1 740cashbuyers.com, 1 74365365.com, 1 7444.cf, 1 +7478vip1.cc, 0 7478vip2.cc, 1 74dy.org, 1 74th.jp, 1 +750375.com, 1 +750475.com, 1 751930.com, 1 7552001.com, 1 7552002.com, 1 @@ -3402,8 +3490,12 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 755249.com, 1 755274.com, 1 755294.com, 0 +756975.com, 1 757409.com, 1 +758375.com, 1 +759375.com, 1 759419.com, 1 +759675.com, 1 75refer.tk, 1 76.to, 1 761.com, 1 @@ -3416,6 +3508,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 76669.com, 1 766788.xyz, 1 767333.xyz, 1 +769sc.com, 0 76networks.tk, 1 76o.cn, 1 77018dd.com, 0 @@ -3443,6 +3536,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 77online.com, 1 78.to, 1 780aa.com, 1 +783346.com, 1 78365b.com, 0 783lab.com, 1 787637.com, 1 @@ -3459,14 +3553,16 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 798sss.com, 1 7992.org, 1 799713.com, 1 +79ch.com, 1 7across.com, 1 7aga7.mk, 1 7akawyna.tk, 1 -7bridgeswalk.com.au, 1 +7b.gg, 1 7colli.it, 1 7comm.com.br, 1 7datarecovery.com, 1 7daystodie.top, 1 +7delights.in, 1 7dies.net, 1 7dots.com, 1 7eastgenetics.com, 1 @@ -3474,7 +3570,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 7eo.mk, 1 7extranews.tk, 1 7f.is, 1 -7gi.no, 1 7gr.uk, 1 7graus.pt, 1 7h12.com, 1 @@ -3482,11 +3577,11 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 7hills-consulting.de, 1 7hills.us, 1 7hq.ru, 1 -7inci.com, 1 7ki.photography, 1 7kovrikov.ru, 1 7kvadratov.by, 1 7l00p.com, 1 +7magicinc.com, 1 7matic.net, 1 7money.co, 1 7net.uk, 1 @@ -3510,7 +3605,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 7x7.press, 1 7x7cajalosandes.cl, 1 7zet.ml, 1 -8.nf, 1 8000.cx, 1 8001d88.com, 0 8003pay.com, 1 @@ -3547,7 +3641,6 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 8097d.com, 1 80993.net, 1 80bin.com, 1 -80dental.com.my, 1 80motorsclub.tk, 1 80smaniacs.nl, 1 81.cz, 1 @@ -3574,6 +3667,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 817615.com, 1 8176d.com, 1 8178d.com, 1 +81818d.com, 1 81818z.com, 1 8181d88.com, 1 8182d.com, 1 @@ -3591,6 +3685,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 81alarm.cz, 1 81klima.cz, 1 81klima.sk, 1 +81uc.com, 1 +8203d88.com, 1 8207d88.com, 1 8208d88.com, 1 8210d88.com, 1 @@ -3606,6 +3702,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 8226d.com, 1 8228d.com, 1 8229d88.com, 1 +823582.com, 1 82365f.com, 1 82365g.com, 1 82365h.com, 1 @@ -3628,6 +3725,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 82365y.com, 1 82365z.com, 1 825148.com, 1 +825382.com, 1 +826282.com, 1 82781111.com, 0 82783333.com, 0 82784444.com, 0 @@ -3646,8 +3745,10 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 83365365.com, 1 834365.com, 1 8349822.com, 1 +838888.net, 1 83ir2k8b.duckdns.org, 1 83kb88.com, 1 +84000.com, 1 84036.ml, 1 842844.com, 1 8444.cf, 1 @@ -3664,6 +3765,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 84cl.com, 1 84cx.com, 1 84dp.com, 1 +84dt.com, 1 84ek.com, 1 84et.com, 1 84ew.com, 1 @@ -3730,9 +3832,11 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 872291.com, 0 8722ph.com, 1 8722usa.com, 1 +873394.com, 1 877027.com, 0 877791.com, 0 878365cn.com, 1 +878431.com, 1 8796.jp, 1 87kb88.com, 1 8809d88.com, 1 @@ -3811,6 +3915,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 88cakescorner.com, 1 88djl.cc, 1 88home9.com, 1 +88laohu.cc, 1 88thpolarisscouts.ca, 1 88yule11.com, 1 88yule112.com, 1 @@ -3822,6 +3927,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 88yule7.com, 1 88yule9.com, 1 8900.cf, 1 +8906d.com, 1 8921d.com, 1 8925d.com, 0 8925d88.com, 1 @@ -3839,6 +3945,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 894324.com, 1 8989k3.com, 1 899ks.com, 1 +8a.pw, 1 8ack.de, 1 8ag8.org, 1 8ballbombom.uk, 1 @@ -3871,14 +3978,12 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 8time.com, 1 8tuffbeers.com, 1 8ung.online, 1 -8weekchallenge.com.au, 1 8xxxxxxx.com, 1 +8y.network, 0 8yun.cf, 1 8yun.ga, 0 9-11commission.gov, 1 -9.kz, 1 9.lviv.ua, 1 -9.ms, 1 90.cx, 1 9002.cf, 1 9003.cf, 1 @@ -3954,6 +4059,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9076.cf, 1 9077.cf, 1 9078.cf, 1 +907856.com, 1 9079.cf, 1 9080.cf, 1 9081.cf, 1 @@ -3995,6 +4101,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9108.cf, 1 9109.cf, 1 911.gov, 1 +9111s.ru, 0 911216.xyz, 1 9113.cf, 1 9114.cf, 1 @@ -4013,10 +4120,12 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9125.cf, 1 9126.cf, 1 9127.cf, 1 +912891.com, 1 9129.cf, 1 9130.cf, 1 9131.cf, 1 9132.cf, 1 +913291.com, 1 9133.cf, 1 913391.com, 1 9134.cf, 1 @@ -4062,6 +4171,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9176.cf, 1 9177.cf, 1 9179.cf, 1 +917991.com, 1 9180.cf, 1 9181.cf, 1 9181181.com, 1 @@ -4088,7 +4198,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 918bbm.co, 1 918bcf.co, 1 918bcw.co, 1 -918bio.co, 0 +918bio.co, 1 918bip.co, 1 918bis.co, 1 918dc04.com, 1 @@ -4096,6 +4206,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 918kissinw.com, 1 9190.cf, 1 9193.cf, 1 +919391.com, 1 9194.cf, 1 9195.cf, 1 9197.cf, 1 @@ -4124,6 +4235,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9201.cf, 1 9202.cf, 1 9203.cf, 1 +920392.com, 1 9204.cf, 1 9205.cf, 1 9206.cf, 1 @@ -4136,6 +4248,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9215.cf, 1 9216.cf, 1 9217.cf, 1 +921792.com, 1 9218.cf, 1 9219.cf, 1 9220.cf, 1 @@ -4160,9 +4273,16 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9242.cf, 1 9243.cf, 1 9245.cf, 1 +924592.com, 1 9246.cf, 1 9247.cf, 1 +924892.com, 1 +924992.com, 1 +925892.com, 1 925silverjewelry.com, 1 +926792.com, 1 +927092.com, 1 +929592.com, 1 9297.co, 1 9297a.co, 1 9297aa.co, 1 @@ -4301,6 +4421,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9378.cf, 1 9379.cf, 1 9381.cf, 1 +938193.com, 1 9382.cf, 1 9383.cf, 1 9384.cf, 1 @@ -4327,6 +4448,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9397r.com, 1 9398.cf, 1 939wns.com, 1 +93ag8.com, 1 93cq.com, 1 9401.cf, 1 9402.cf, 1 @@ -4433,6 +4555,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9578.cf, 1 9579.cf, 1 9580.cf, 1 +95808.com, 1 9581.cf, 1 9582.cf, 1 9584.cf, 1 @@ -4476,6 +4599,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 96200.com, 1 9621.cf, 1 9622.cf, 1 +96220.com, 1 96229.com, 1 9623.cf, 1 9624.cf, 1 @@ -4485,9 +4609,11 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9629.cf, 1 9630.cf, 1 9631.cf, 1 +96316.com, 1 9632.cf, 1 9633.cf, 1 96448.com, 1 +96577.com, 1 96605.com, 1 9666ks.com, 1 96685.com, 1 @@ -4638,6 +4764,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 987987.com, 1 987kisscountry.com, 1 988.gov, 1 +9882258.com, 1 +9884458.com, 1 98877.com, 1 98944448.com, 1 98944449.com, 1 @@ -4708,7 +4836,8 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9957.cf, 1 9958.cf, 1 9959.cf, 1 -99599.fi, 1 +99599.fi, 0 +99599.net, 0 995ccc.com, 1 9961.cf, 1 9962.cf, 1 @@ -4739,20 +4868,26 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 998sa.com, 1 998wei.com, 1 998wns.com, 1 +9990058.com, 1 9991.cf, 1 +9991158.com, 1 +9992258.com, 1 999321365.com, 1 +9993358.com, 1 999365t.com, 1 9994.cf, 1 9994553.com, 1 +9995558.com, 1 9998722.com, 1 +9998k8.com, 1 99998522.com, 1 99999822.com, 1 999998722.com, 1 -999999999.pl, 1 999btt.net, 1 999family.com, 0 999salon.co, 1 999zlong.com, 1 +99bt.com, 1 99buffets.com, 1 99dog.com, 1 99furnitureideasandtips.gq, 1 @@ -4776,6 +4911,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9fvip.net, 1 9gag.com, 1 9hosts.net, 1 +9i0.com, 1 9iwan.net, 1 9jajuice.com, 1 9k262.com, 1 @@ -4858,12 +4994,11 @@ const PRTime gPreloadListExpirationTime = INT64_C(1786952959163000); 9mp.ro, 1 9ostech.com, 1 9pkfz.com, 1 -9point6.com, 0 +9point6.com, 1 9ranks.com, 1 -9rx.cz, 1 9tailedkitsune.com, 1 -9tnine.net, 1 9to5linux.com, 1 +9to5notes.in, 1 9uelle.jp, 0 9ungnir.xyz, 1 9vx.org, 1 @@ -4877,9 +5012,10 @@ a-air.com.ua, 1 a-allard.be, 0 a-bio.com, 1 a-busty.com, 1 +a-care.net, 1 a-frique.com, 1 a-gokan.com, 1 -a-h-p.de, 1 +a-h-p.de, 0 a-hitoduma.com, 1 a-lexx.de, 1 a-little-linux-box.at, 1 @@ -4891,10 +5027,8 @@ a-qr.link, 0 a-raven.corsica, 1 a-rwx.org, 1 a-s-motors.ru, 1 -a-scientificpestcontrol.com, 1 a-shirouto.com, 1 a-starbouncycastles.co.uk, 1 -a-stocker.com, 1 a-systems.ru.com, 1 a.ac, 1 a.tt, 1 @@ -4902,7 +5036,6 @@ a.wtf, 1 a01sa01to.com, 1 a04gameapp.com, 1 a04webapp.com, 1 -a05777.uk, 1 a05webapp.com, 1 a06.ch, 1 a06.me, 0 @@ -4913,9 +5046,9 @@ a0print.nl, 1 a1.ro, 0 a11ybadges.com, 1 a11ywatch.com, 1 +a122.cc, 0 a13x.uk, 1 a16z.com, 1 -a1billgibsonseptictankservice.com, 1 a1bouncycastlehire.com, 1 a1cashforcar.com.au, 1 a1cdrinks.com, 1 @@ -4929,6 +5062,7 @@ a1qualityspareparts.com.au, 1 a1scrapmetalrecyclers.com.au, 1 a1scuba.com, 1 a1seowebdirectory.com, 0 +a1speedyrooter.com, 1 a210.online, 1 a24dmng.de, 1 a24help.ru, 1 @@ -4942,9 +5076,8 @@ a2kiwanisfoundation.org, 1 a2m-fintech.com, 1 a2n-expertise.com, 1 a2ssrl.duckdns.org, 1 -a2z-restoration.com, 1 a2zbabyname.com, 1 -a2zplumbing.com.au, 0 +a2zplumbing.com.au, 1 a340.com, 1 a356.top, 1 a36533.com, 1 @@ -4971,7 +5104,7 @@ a899365.com, 0 a9-9.top, 0 a9297.co, 1 a9728.co, 1 -aa-charging.nl, 1 +a9l.im, 1 aa-security.be, 1 aa.cx, 1 aa43d.cn, 1 @@ -4994,7 +5127,6 @@ aaaplumbers.com, 1 aaapo.com.br, 1 aaappfeel.de, 1 aaar.com.hk, 0 -aabb.com, 1 aabeltech.com, 1 aabenjaminjewelry.com, 0 aabigbirminghamconvention.com, 1 @@ -5002,21 +5134,20 @@ aacc.ac, 1 aachc.org, 1 aachen-quiz.de, 1 aachen-umzugsunternehmen.de, 1 -aachen-west.de, 1 aacs-design.com, 1 +aact.org, 1 aad-gp.com, 1 aadl.ga, 1 aadskeuken.nl, 1 aadv.com.br, 1 aaenhunze.nl, 1 -aafip.org, 1 aaflalo.me, 1 aagetransport.no, 1 aahhbali.com, 1 aaic.ca, 1 aajkakavi.in, 0 -aalalbayt.com, 0 -aalalbayt.net, 0 +aalalbayt.com, 1 +aalalbayt.net, 1 aalaslearninglibrary.org, 1 aalderstotaaltechniek.nl, 1 aalen.tk, 1 @@ -5033,8 +5164,6 @@ aan-shop.co.il, 1 aandachtsmeditatie.nl, 1 aandeautobody.com, 1 aandkevents.co.uk, 1 -aandrpestsolutions.com, 1 -aanhpiheritage.gov, 1 aanhuisgebakken.tk, 1 aanlynskool.co.za, 1 aanyasri.com, 1 @@ -5042,6 +5171,7 @@ aao.fyi, 1 aaogaragedoorrepairaustin.com, 1 aaomidi.com, 1 aaoth.xyz, 1 +aap.org, 1 aapa.info, 0 aapant.org.au, 0 aapifund.org, 1 @@ -5101,9 +5231,9 @@ aavgo.com, 1 aavienna.com, 1 aayamresorts.com, 1 aayan.com, 1 -aaz-taxi.com, 1 ab-design.tk, 1 ab-pflege.de, 1 +ab-solutepilates.com, 1 ab-uk.com, 1 ab-west.tk, 1 ab288.com, 1 @@ -5139,6 +5269,7 @@ abandoned.tk, 1 abandonedmines.gov, 1 abanico.tk, 1 abanilla.tk, 1 +abantoclub.com, 1 abantos.tk, 1 abaranov.cf, 1 abaranov.gq, 1 @@ -5153,6 +5284,7 @@ abasteo.mx, 1 abastor.tk, 1 abaton.es, 1 abay-today.tk, 1 +abbadabbabouncycastles.co.uk, 1 abbas.ch, 1 abbaye-chaise-dieu.com, 1 abbayedumoncel.fr, 1 @@ -5215,15 +5347,15 @@ abdelalidev.ml, 1 abdelaliezzyn.tk, 1 abdelsater.net, 1 abdened.tk, 1 -abdenterprises.com, 1 abdesign.tk, 1 abdijmale.tk, 1 abditransportinc.com, 1 +abdl.link, 1 +abdsirketim.com, 0 abdul.win, 1 abdulawal.tk, 1 abdulazizgolca.com, 1 abdulkarimm.tk, 1 -abdulkerimsesli.de, 1 abdullaeff.net, 1 abdullahavci.com, 1 abdullahavci.com.tr, 1 @@ -5232,6 +5364,7 @@ abdullahavci.net.tr, 1 abdullahavci.org, 1 abdullahavci.org.tr, 1 abdullahavci.tr, 1 +abdullahki.com, 1 abdullahkoyuncu.de, 1 abdullahzubayerofficial.ml, 1 abdulraheem.org, 1 @@ -5257,6 +5390,7 @@ abelles.gq, 1 abelles.ml, 1 abelles.tk, 1 abelsflooringandtile.com, 1 +abemarx.hu, 1 abenteuerschule4u.eu, 1 abenteuerteam.de, 1 abeontech.com, 1 @@ -5267,6 +5401,7 @@ aberdeencriticalmass.tk, 1 aberon.pl, 1 aberrantvascular.tk, 1 aberte.com, 1 +abetrans.com, 1 abettercreditunion.com, 1 abetterdeath.com, 1 abetterwichita.org, 1 @@ -5274,8 +5409,8 @@ abeus.com, 1 abfluss.com, 1 abg.com.sa, 1 abg.ninja, 1 -abgal.com.au, 1 abgeo.ga, 1 +abhaken.com, 1 abhaldus.ee, 1 abhandshake.com, 1 abhayaranya.com, 1 @@ -5314,7 +5449,6 @@ abinferis.com, 1 abinmetall.ru, 1 abinyah.com, 1 abion-bg.com, 1 -abioticscience.fr, 1 abipolitseinik.ee, 1 abirmas.com, 1 abitaspringsla.gov, 1 @@ -5341,7 +5475,7 @@ ablehorsetransport.net.au, 1 ableitungsrechner.net, 1 ableprop.net, 1 abler.io, 1 -ablespace.io, 0 +ablespace.io, 1 abli.at, 1 abli.eu, 1 abli.info, 1 @@ -5356,14 +5490,13 @@ abminv.com, 1 abmledger.ca, 1 abn-consultants.ie, 1 abnamropensioenen.nl, 0 +abnarnro.com, 0 abnbfcu.org, 1 abnehmen-sport-fitness.de, 1 abnobapetstore.co.uk, 1 -abnobdoss.com, 1 abnradiofm.tk, 1 aboat.cc, 1 aboces.org, 1 -abodepestsolutions.com, 1 abogadoperu.com, 1 abogadophd.com, 1 abogadoscav.com, 1 @@ -5395,6 +5528,7 @@ abort-report.eu, 1 abortionfaq.org, 1 abortionpill.sg, 1 aborto.tk, 1 +abos.eu, 0 abouncycastleman.co.uk, 1 aboundworlds.com, 1 about-bangladesh.tk, 1 @@ -5442,7 +5576,6 @@ abouttoblow.com, 1 abouttravel.gq, 1 aboutvpn.com, 1 aboutwealthcreation.tk, 1 -aboutwikipedia.org, 1 aboutyou.at, 1 aboutyou.be, 1 aboutyou.bg, 1 @@ -5469,7 +5602,8 @@ aboutyou.ro, 1 aboutyou.se, 1 aboutyou.si, 1 aboutyou.sk, 1 -abovethefirehouse.com, 0 +abovecore.com, 1 +abovethefirehouse.com, 1 abox-kb.com, 1 abpages.com, 1 abpis.hr, 1 @@ -5517,6 +5651,7 @@ absinsurance.com, 1 absolab.xyz, 1 absolem.cc, 1 absoluav.com, 1 +absolugroupe.com, 1 absolute.digital, 1 absoluteblack.cc, 1 absolutebritney.com, 1 @@ -5524,12 +5659,12 @@ absolutechristmas.com, 1 absolutedouble.co.uk, 1 absolutegames.ga, 1 absoluteloveadoptions.com, 1 +absolutepackaging.net, 1 absolutepondcare.com, 1 absoluterush.net, 1 absoluteup.com.au, 1 absolutezero.tk, 1 absolution.ga, 1 -absolutmedia.ro, 1 absolutperm.tk, 1 absolutweb.tk, 1 absorbent-pad.com, 1 @@ -5542,8 +5677,8 @@ abstract27.com, 1 abstractbarista.com, 1 abstractbarista.net, 0 abstractive.ai, 1 +abstudio.de, 1 absurdia.tk, 1 -absurdityindex.org, 1 absurdopedia.wiki, 1 absyscyborg.com, 1 abteam.tk, 1 @@ -5557,6 +5692,7 @@ abu-auftrag.ch, 1 abu-nour.tk, 1 abuahmed.ga, 1 abulanov.com, 1 +abulhuda.com, 1 abun-motorsport.tk, 1 abundent.com, 1 abusamraphotography.tk, 1 @@ -5567,7 +5703,6 @@ abuse.fi, 1 abuse.io, 1 abusive-host.tk, 1 abvlbasketviganello.ch, 0 -abvplumbing.com, 1 aby-action.com, 1 abys.se, 1 abysra.com, 1 @@ -5594,7 +5729,6 @@ acachau.synology.me, 1 acacia-gardens.co.uk, 1 academiacivilbalonmano.tk, 1 academiacomercialalpina.com, 1 -academiadasaude.net.br, 1 academiadelmolino.com.uy, 1 academiaeureka.tk, 1 academiaofimage.com, 1 @@ -5609,7 +5743,6 @@ academieairespace.com, 1 academika.tk, 1 academkin.com, 1 academy-awards.ml, 1 -academyb1.ru, 1 academyonlinetoyou.tk, 1 acadeven.com, 1 acadiate.com, 1 @@ -5639,7 +5772,6 @@ acb.com.vn, 1 acbandt.com, 1 acbcoop.com, 1 acbrussels-used.be, 1 -acc-sdbidentity.nl, 1 acc.gov, 1 accademia24.it, 1 accademiacimarosa.tk, 1 @@ -5655,11 +5787,10 @@ accedia-distribution.com, 1 accedia.net, 1 accelaway.com, 1 accelerate-ed.org, 1 -accelerateautorepair.com, 1 acceleratedreading.cf, 1 acceleratethesale.com, 1 accelerateyourworld.org, 1 -accelerationsummit.com, 1 +accelerationsummit.com, 0 accelerator.nyc, 1 accelerator.tk, 1 accelergent.com, 1 @@ -5667,6 +5798,7 @@ accelsnow.com, 1 accentchair.net, 1 accentharmonizer.ai, 1 accentsduterroir.fr, 1 +accentwebs.ie, 0 accesdirectmarketing.ca, 1 accesdirectmarketing.com, 1 accesloges.com, 1 @@ -5675,8 +5807,10 @@ accesoriiutilaje.ro, 1 access-board.gov, 1 access-nl.org, 1 access-not-allowed.gq, 1 +access-odata.com, 1 access-techniques.com, 1 access-token.tk, 1 +access.beer, 1 access2employment.com, 1 access2mobility.com, 1 accessacab.co.uk, 1 @@ -5687,7 +5821,6 @@ accesshelps.org, 1 accessibility.gov, 1 accessibilityguidelines.com, 1 accessibledigitallearning.org, 1 -accessibleimpact.org, 1 accessibletravelclub.com, 1 accessibleweb.com, 1 accessingram.com, 1 @@ -5705,11 +5838,11 @@ accessoripersmartphone.it, 1 accesspress.org, 1 accesstive.com, 1 accesstosystem.cf, 1 +accey.cz, 1 acchan-fun.com, 1 accio.be, 1 accionesyreacciones.com, 1 accioninmobiliaria.tk, 1 -acclaimllc.com, 1 acclivity.pro, 1 accme.co, 1 accolade.com.br, 0 @@ -5733,9 +5866,9 @@ accpacific.com, 1 accpl.co, 1 accreditamento.net, 1 accreditedbuildingservices.com, 1 -accrue401k.com, 1 +accretech.vn, 1 +accsaber.com, 1 accslot.com, 1 -accstrading.com, 1 acct-affiliate.com, 1 accubitsdemo.ml, 1 accudemia.net, 1 @@ -5772,6 +5905,7 @@ acebeam.com, 1 acebovirtual.tk, 1 acecardiologyclinic.com, 1 acectamentit.tk, 1 +acedstudy.com, 0 aceenergy.com.tw, 1 acefishing.tk, 1 acefront.co.uk, 1 @@ -5781,6 +5915,7 @@ acegroup.org.tw, 1 aceinflatables.com, 1 aceinstituteonline.com, 1 aceitesencantados.com, 1 +acejunkpros.com, 1 acekit-create.com, 1 aceleracaodigital.com, 1 aceleraguria.com.br, 1 @@ -5790,7 +5925,7 @@ acem.org.au, 1 acemadeira.pt, 1 acemsa.ga, 1 acemypaper.com, 1 -acendas.com, 0 +acendas.com, 1 acendealuz.com.br, 1 aceofdiamondspainting.com, 1 aceofheartsgiftbaskets.com, 1 @@ -5801,14 +5936,13 @@ acer.org, 1 acercapartners.com, 1 acereporting.ca, 1 acesaware.org, 1 -acesdenver.com, 0 +acesdenver.com, 1 aceshop702.com, 1 acetaiavaleri.it, 1 acetudy.com, 1 acevalar.ru, 1 aceweb.ga, 1 aceycity.ml, 1 -acf.gov, 1 acftienda.tk, 1 acg.ac, 1 acg.mn, 1 @@ -5841,6 +5975,7 @@ achill.org, 1 achimrosenhagen.de, 1 achinsk.tk, 1 achintyaesbee.tk, 1 +achireland.com, 1 achkandiro.ml, 1 achkandiro.tk, 1 achl.fr, 1 @@ -5859,6 +5994,7 @@ achterhoekseveiligheidsbeurs.nl, 1 achtpfade.de, 1 achtzehn.de, 1 achtzehn.eu, 1 +achtzig20.de, 0 aci-asiapac.aero, 1 acic-cbit.in, 1 aciclovir.ga, 1 @@ -5868,8 +6004,6 @@ acidoascorbico.com, 1 acidstudios.ro, 1 acidtool.com, 1 acierto.com, 1 -aciku.com, 1 -acilasevic.com.au, 1 acilicraft.cn, 1 acina.fr, 1 acingov.pt, 1 @@ -5883,6 +6017,7 @@ ackermannevents.de, 1 acklandstainless.com.au, 1 acl.gov, 1 aclandia.fr, 1 +aclassgrass.co.uk, 1 aclinjury.sg, 1 aclipt.com, 0 acloud.one, 1 @@ -5917,12 +6052,12 @@ aconseg.com, 1 acopatableware.com, 1 acordes.online, 1 acorespro.com, 1 +acorn.works, 1 acorncastles.co.uk, 1 acornli.com, 1 acornmetal.com.au, 1 acosta.group, 1 acotadecalle.tk, 1 -acotec.com.my, 1 acourse.io, 0 acourtreporter.com, 1 acourtreporter.net, 1 @@ -5931,7 +6066,6 @@ acousticandfire.co.uk, 1 acousticbuy.com.ua, 1 acoustics.network, 0 acoustics.tech, 1 -acousticshield.tech, 1 acousticsoundrecords.com, 1 acoustictabs.tk, 1 acoustique-tardy.com, 0 @@ -5948,10 +6082,11 @@ acquario.genova.it, 1 acquasuisse.tk, 1 acquire.co.nz, 1 acquirebpo.com, 1 +acquireit.com.au, 1 acquireoil.com, 1 acquisition.gov, 1 acquisitiongateway.gov, 1 -acquisitionstars.com, 1 +acrackstreams.city, 1 acraftedpassion.com, 1 acrealamendolara.tk, 1 acreinfoco.com, 1 @@ -5980,19 +6115,20 @@ acrylicstyle.xyz, 1 acrylicwifi.com, 1 acs-armoured-cars.com, 1 acs-nettoyage-entretien-immeuble.com, 1 +acs2devapi.azurewebsites.net, 1 acsb.ro, 0 acsbbs.org, 1 acsc.gov.au, 1 acsd-az.gov, 1 acse.net, 1 acsemb.org, 1 -acsense.com, 1 acsiresearch.com, 0 acslogco.com, 1 acsmuhendislik.com.tr, 1 acsports.ca, 1 acss.com, 1 acstallningsmontage.se, 1 +acsvalves.com, 1 act-news.com, 1 act-on.com, 1 act-web-sa.com, 1 @@ -6001,6 +6137,7 @@ actaflytt.se, 1 actamedindones.org, 1 actc.org.uk, 1 acte2immo.com, 1 +actelsershop.com, 1 actexpo.com, 1 actfastplumbing.com.au, 1 actfleetforum.com, 1 @@ -6035,14 +6172,15 @@ actionphototours.com, 1 actionraingutters.com, 1 actionsack.com, 1 actionsandreactions.com, 1 +actionsecuritycameras.com, 1 actionverb.com, 1 actisgolf.com, 1 actiumhealth.com, 0 +activandoideas.com, 1 activat3rs.com, 1 activate.ch, 1 activate.swiss, 1 activated.win, 1 -activatenow.com, 1 activators.ml, 1 active-electrical.com, 1 active-english.tk, 1 @@ -6052,11 +6190,13 @@ activeaerogels.com, 1 activecare-monitor.com, 0 activeclearweb.com, 1 activeexcavator.com, 0 +activefence.com, 1 activegateball.tk, 1 -activehealth.com, 0 +activehealth.com, 1 activehire.co.uk, 1 activeleisure.ie, 1 activelife.travel, 1 +activemoneymanage.com, 0 activenl.co.uk, 1 activeplatesystem.ga, 1 activeprospect.com, 1 @@ -6065,11 +6205,13 @@ activespacetech.com, 1 activetk.cf, 1 activetk.jp, 1 activewindow.dk, 1 +activework.nl, 1 activexperts.com, 1 activeyogi.tk, 1 activflex.com.au, 1 activism.cf, 1 activiteithardenberg.nl, 1 +activitesagadir.com, 1 activitesaintnicaise.org, 1 activiteschiens.be, 1 activiti.alfresco.com, 1 @@ -6098,6 +6240,7 @@ actris.ac.cy, 1 actro.ga, 1 actro.gq, 1 actronx.tk, 1 +actserv.co.ke, 1 actsofkindness.org, 1 actsofsilence.com, 1 actu-itech.cf, 1 @@ -6112,22 +6255,19 @@ actualno.com, 1 actualprogressivevotersguide.com, 1 actualseomedia.com, 1 actualsizemusic.tk, 1 -actualtechnoshamanism.net, 1 actumeridien.com, 1 acturaad.nl, 1 actus-banque.fr, 1 actuse.tk, 1 -actwisetherapy.com, 1 acuarios.tk, 1 acuarismo-iquique.tk, 1 acuarius.tk, 1 acuica.co.uk, 1 -acuityhcm.com, 1 +acuityfinishing.com, 1 acuitykp.com, 1 acul.me, 1 aculocity.com, 1 acumenpa.com, 1 -acupforacause.org, 1 acupofsalt.tv, 1 acupuncture.ml, 1 acupuncturecornwall.co.uk, 1 @@ -6141,7 +6281,6 @@ acupunturameler.cat, 1 acupunturameler.com, 1 acupunturameler.es, 1 acupunturavalencia.xyz, 1 -acura.com.br, 1 acurapartswarehouse.com, 1 acus.gov, 1 acuscribe.com, 1 @@ -6161,15 +6300,19 @@ acwi.gov, 1 acworth-ga.gov, 1 acyclovir-cream.cf, 1 acyclovir400mg.ml, 1 -acylia.com, 1 acytec.cl, 1 ad-bp.top, 1 ad-disruptio.fr, 0 ad-education.com, 1 ad-notam.asia, 1 +ad-notam.co.uk, 1 +ad-notam.com, 1 +ad-notam.de, 1 +ad-notam.it, 1 ad-notam.pt, 1 +ad-notam.uk, 1 +ad-notam.us, 1 ad-s.cn, 1 -ad-visions.pl, 1 ad-web.tk, 1 ad.nl, 1 ad13.in, 1 @@ -6178,20 +6321,20 @@ ada.eco, 1 ada.gov, 1 adab-mans.tk, 1 adac-musikreisen.de, 1 +adachansa.de, 1 adachi.work, 1 adacomputerscience.org, 1 adacprod.fr, 1 -adad95.de, 0 +adad95.de, 1 adadimall.com, 1 adaera.com, 1 adaeze-wolf.com, 1 adagia.eu, 1 adaircomo.gov, 1 adaircosomo.gov, 1 -adalabtech.com, 1 -adalie.me, 1 adalis.org, 1 adalite-staging-testnet.herokuapp.com, 1 +adalite.io, 1 adalpha.tech, 1 adam-ant.co.uk, 1 adam-kostecki.de, 1 @@ -6199,6 +6342,7 @@ adam-leung.com, 1 adam.com, 1 adam.id.au, 1 adam.pt, 1 +adamabernathy.com, 1 adamandeva.shop, 1 adamant.ua, 1 adamas-magicus.ru, 1 @@ -6213,7 +6357,6 @@ adamevevod.com, 1 adamfontenot.com, 1 adamgibbins.com, 1 adamh.us, 1 -adamiskandar.com, 1 adamj.eu, 1 adamjoycegames.co.uk, 1 adamkissee.com, 1 @@ -6225,8 +6368,6 @@ adamov.tk, 1 adamradocz.com, 1 adamraoof.tk, 1 adams-gonczi.fun, 1 -adamsandle.co.uk, 1 -adamsandle.com, 1 adamsandle.uk, 1 adamschmuck.de, 1 adamsconstructions.com.au, 1 @@ -6245,12 +6386,12 @@ adamyi.com, 1 adanaelektrikcim.com.tr, 1 adanyeva.la, 1 adaoconde.art, 1 -adappt.ai, 0 -adappt.co.uk, 0 +adappt.ai, 1 +adappt.co.uk, 1 adapt-elektronik.com, 1 +adapt-iq.co.nz, 1 adaptationclearinghouse.org, 1 adaptations.uk.com, 1 -adaptationtools.com, 1 adaptex-shop.eu, 1 adaptex.pl, 1 adapti.de, 1 @@ -6265,7 +6406,6 @@ adaptivesite.cf, 1 adaptivesite.gq, 1 adaptiveu.io, 1 adaptyourlifeacademy.com, 1 -adaresort.com, 1 adarixconsultores.com, 1 adarshcloud.in, 1 adarsvidler.me, 1 @@ -6274,18 +6414,19 @@ adaselin.com, 0 adasiacorp.com, 1 adassist.nl, 1 adasworks.com, 1 -adasystems.uk, 1 +adata-c.kz, 1 adatitleiii.com, 1 adativos.com.br, 1 adats.com, 1 adawolfa.cz, 1 -adbenchmarklab.com, 1 adbexcavation.ca, 1 adbglobal.com, 1 adblockextreme.com, 1 adblockextreme.net, 1 adblockextreme.org, 1 +adboos.com, 1 adbw.xyz, 1 +adc-dentalcare.com, 0 adc64.com, 1 adceuta.tk, 1 adcoglazing.co.uk, 1 @@ -6298,6 +6439,7 @@ add.pics, 1 addad.ch, 1 addall.com, 1 addbonus.ml, 1 +addcrazy.com, 1 addeditore.it, 1 adder.ml, 1 adderall.ml, 1 @@ -6310,12 +6452,11 @@ addictedtotravel.pl, 1 addictioncounsellors.co.nz, 1 addictionsolutionsllc.com, 1 addictiveblogs.com, 1 +addictlaw.com, 1 addictstore.it, 1 addiko.com, 1 addiko.net, 1 -addis-dittebrandt.de, 1 addisoncrump.info, 1 -addisondubovi.ch, 1 addisonvt.gov, 1 addisonwi.gov, 1 addition.ml, 0 @@ -6364,7 +6505,6 @@ adelapereira.com, 1 adeldz-foot.cf, 1 adelebeals.com, 1 adelgace.top, 1 -adelhomeservices.com, 1 adeliae.jp, 1 adelicious.co, 1 adelie.org.uk, 1 @@ -6387,14 +6527,14 @@ adescb.ga, 1 adese.es, 1 adesignguy.co.uk, 1 adespresso.com, 1 +adevel.eu, 1 adevo.be, 1 adex.network, 1 adextremadurafs.tk, 1 adf-safetytools.com, 1 +adf.africa, 1 adf.gov, 1 adfc-nrw.de, 1 -adfconsumer.gov.au, 1 -adfirehealth.com, 1 adfisicateca.org, 1 adflegal.org, 0 adfs.pro, 1 @@ -6408,6 +6548,7 @@ adgreetz.com, 1 adh.org.au, 1 adhadse.com, 1 adhap.fr, 1 +adhd-explained.com, 1 adhd-inattentive.com, 1 adhdgroup.org, 1 adhdyoga.ca, 1 @@ -6443,7 +6584,6 @@ adiprospero.it, 1 adiraku.co.id, 1 adit.com, 1 aditumconsulting.com, 1 -aditushealth.com.br, 1 adityadees.com, 1 adityaes.eu.org, 1 adityainfotechindia.com, 1 @@ -6456,7 +6596,9 @@ adjustablebedfactory.com, 1 adjustablebeds.ca, 1 adjustablebeds.com.au, 1 adjustablebeds.org, 1 +adjusterpro.com, 1 adjutor.xyz, 1 +adk-wohnungsaufloesung.berlin, 1 adkinvest.co.il, 1 adld.center, 1 adlerneves.com, 1 @@ -6465,7 +6607,6 @@ adlerosn.com, 1 adlerosn.com.br, 1 adlershop.ch, 1 adlignum.se, 1 -adlims.com, 1 adliomar.tk, 1 adm-sarov.ru, 1 admac.co.uk, 1 @@ -6473,7 +6614,6 @@ admanmedia.fr, 1 admantium.com, 1 admdr.com, 1 admeco.com, 1 -admeusa.org, 1 admeweb.com, 1 admglass.co.uk, 1 admicos.cf, 1 @@ -6482,7 +6622,6 @@ admin-gator.net, 1 admin-rbb-ugc-prod.azurewebsites.net, 1 admin-rbb-ugc.azurewebsites.net, 1 admin-serv.net, 1 -admin-sochi.ru, 1 admin-wp.com, 1 admin-wp.pl, 1 admin.academy, 1 @@ -6529,10 +6668,10 @@ adndigital.com.br, 1 adnexa.it, 1 adney.land, 1 adnolesh.com, 1 +adnotam.ch, 1 adnscript.tk, 1 adnseguros.es, 1 adolesce.com, 1 -adolfocanto.xyz, 1 adoll.ml, 1 adomani-italia.com, 1 adomicilio.gt, 1 @@ -6570,10 +6709,10 @@ adorned.ga, 1 adoropets.com.br, 1 adotta.me, 1 adoucishop.fr, 1 -adownloader.org, 1 adp.fr, 1 adphotography.pl, 1 adpot.xyz, 0 +adquest.ro, 1 adr-stock.com, 1 adr.gov, 1 adrafinil.wiki, 1 @@ -6582,7 +6721,6 @@ adreaminsteel.tk, 1 adreana.com, 1 adregain.com, 1 adregain.ru, 1 -adremtek.com, 1 adrenajump.com.br, 1 adrenalin.is, 1 adrenalin.od.ua, 0 @@ -6598,6 +6736,7 @@ adrian2023.de, 1 adrianadelrossi.com, 1 adrianagonzalez.tk, 1 adrianajewelry.my, 1 +adrianasantos.me, 0 adrianbechtold.de, 1 adrianbrad.com, 1 adriancitu.com, 1 @@ -6618,14 +6757,13 @@ adriantwpmi.gov, 1 adrianwalls.tk, 1 adrianweb.ml, 1 adriarae.xyz, 1 +adriatic42.com, 1 adriatika.tk, 1 adriatrans.ga, 1 -adridri.fr, 1 adrienfelsmann.fr, 1 adrieng.fr, 1 adrienkohlbecker.com, 1 adriennesmiles.com, 1 -adrienpierre.ovh, 1 adrina.gr, 1 adrinet.tk, 1 adrino.cf, 1 @@ -6639,13 +6777,12 @@ adscss.eu, 1 adsense-arbitrage.com, 1 adseye.tk, 1 adsforcash.ga, 1 -adshooter.com, 1 +adsib.gob.bo, 1 adsintl.net, 1 adsl2meg.fr, 1 -adslink.org, 1 adsmarketing.tk, 1 adsmobilefor.win, 1 -adsmodels.com, 0 +adsmodels.com, 1 adson.at, 0 adson.cz, 0 adson.de, 0 @@ -6667,10 +6804,8 @@ adspottest.tk, 1 adspu.org, 1 adst.dk, 1 adstasin.com, 1 -adstesting.online, 1 adstop.ga, 1 adstop.ml, 1 -adstriq.com, 1 adstune.com, 1 adsviews.gq, 1 adswoo.com, 1 @@ -6705,11 +6840,13 @@ advaith.link, 1 advaithbot.xyz, 1 advaithnikhi.ml, 1 advaithnikhi.tk, 1 +advaluetrophies.com, 1 advance.hr, 1 advancealabama.gov, 1 advancecessnock.com.au, 1 advanced-ict.info, 1 advanced-online.eu, 1 +advancedacupuncture.net, 1 advancedaquaticservice.com, 1 advancedbotoxclinic.com, 1 advancedbuildings.com.au, 1 @@ -6720,8 +6857,10 @@ advanceddisposables.co.uk, 0 advancedelectricalservicesqld.com.au, 1 advancedfueladditives.com, 1 advancedhealthmedical.com.au, 0 -advancedinteg.com, 1 +advancedinteg.com, 0 advancedkiosks.com, 1 +advancedmanagement.net, 1 +advancedmedicalcertification.com, 1 advancednetflowtraining.com, 1 advancedoneroofing.com, 1 advancedseniorcare.com, 1 @@ -6741,6 +6880,7 @@ advantage.com.sa, 1 advantage.sa, 1 advantageaustria.org, 1 advantagemechanicalinc.com, 1 +advantagetowing.com.au, 1 advantaseeds.com, 1 advantis.ai, 1 advantis.cf, 1 @@ -6753,7 +6893,7 @@ advara.com, 1 advarra.com, 1 advasa.jp, 0 advasa.net, 1 -advayan.com, 1 +advatechgroup.com, 1 advbizintel.com, 1 advena.com.au, 1 advenacs.com, 1 @@ -6804,7 +6944,7 @@ advertisment.ga, 1 advertizer.com, 1 adverts.ie, 1 advery.tk, 1 -advi.no, 1 +advgrow.com, 1 advice24.tk, 1 advicepay.com, 0 advicepharma.com, 1 @@ -6827,6 +6967,7 @@ advocat.te.ua, 1 advocatae.com, 1 advocatburo.tk, 1 advocateanakha.com, 1 +advocatize.com, 1 advocator.ca, 1 advoervice.ga, 1 advogadavaleria.com.br, 1 @@ -6863,16 +7004,14 @@ advtran.com, 0 advu.no, 1 adware.pl, 0 adwokat-kielce.com.pl, 1 -adwokat.bydgoszcz.pl, 1 adwokatkosterka.pl, 1 adwokatzdunek.pl, 1 adwork.net, 1 adworldglobal.com, 1 adxperience.com, 1 -adyatanalangit.com, 1 adygeya.cf, 1 adygheya-news.net, 1 -adyton.com, 1 +adygio.com, 1 adytonpbc.com, 1 adzie.xyz, 1 adzuna.at, 1 @@ -6904,7 +7043,6 @@ ae86c.com, 1 ae86k.com, 1 ae86x.com, 0 ae86zy.com, 1 -aeasyweb.com, 1 aeb.io, 1 aebba.org, 1 aebian.org, 1 @@ -6925,12 +7063,13 @@ aegee-academy.org, 1 aegee-utrecht.nl, 1 aegee.eu, 1 aegee.org, 1 -aeginity.de, 1 aegis-bot.eu, 1 aegisaccounting.co.uk, 1 aegisalarm.co.uk, 1 aegisalarm.com, 1 -aegiscbc.com, 1 +aegisbds.com, 1 +aegissec.ca, 1 +aegisys.com, 1 aegon.hu, 0 aegrel.ee, 1 aegrel.eu, 1 @@ -6940,14 +7079,11 @@ aehe.us, 1 aeht.eu, 1 aei.ie, 1 aeicommercial.ie, 1 -aeipms.com.au, 1 aeis-api-stg.azurewebsites.net, 1 aeis-api.azurewebsites.net, 1 aejaca.com, 1 -aekb.de, 1 aeksantcugat.tk, 1 aeksistem.com, 1 -aekwien.at, 1 aelgame.com, 1 aelia.cc, 1 aelia.im, 1 @@ -6956,39 +7092,38 @@ aelintx.com, 1 aelisya.net, 0 aelyapi.com, 1 aenes.com, 1 +aenima.tech, 1 aeolservice.es, 1 -aeonbig.com.my, 1 +aeon.co, 0 aeonc.com, 1 aeonct.org, 1 aeonfoundation.my, 1 aeonian.live, 0 aeonmall.global, 0 +aeonsapi.uk, 1 aeperocovilha.pt, 1 aeperodacovilha.pt, 1 aeptic.org, 1 aequometer.de, 1 aeradoresgaivota.com.br, 1 aerandir.fr, 1 -aeraulika.it, 1 aere.com, 1 aerelon.de, 1 +aergia.eu, 1 aerialawesome.com, 1 -aerialreports.com, 1 aerialworks.ddns.net, 1 -aerisenergy.com.br, 1 aerislabs.org, 1 aerisnetwork.com, 1 aerlux.md, 1 aern.org, 1 aeroalbrook.com, 1 +aerobasegroup.com, 1 aerobiconline.tk, 1 aerobiomasa.com, 1 aerobotz.com, 0 aeroclub-tolhuin.tk, 1 -aeroct.com.br, 1 aerodoc.com, 1 -aeroeggtech.com, 1 -aeroelectronics.net, 0 +aeroelectronics.net, 1 aeroequity.com, 1 aeroexpress.tk, 1 aerofarms.com, 1 @@ -7001,8 +7136,8 @@ aerogrill.tk, 1 aerojet.com, 1 aeroklub.tk, 1 aerolog.co, 0 -aerometrix.co, 1 aeronautix.com, 1 +aeronote.net, 1 aeropetz.com.br, 1 aeroplan.tk, 1 aeropole.de, 1 @@ -7025,14 +7160,12 @@ aerotrophy.fr, 1 aerowillys.tk, 1 aerozone.tk, 1 aertel.ie, 1 -aerztekammer-berlin.de, 1 aerztezentrum.io, 1 aes.org.pt, 1 -aesencryption.org, 1 +aesculapliterature.com, 1 aesi.bg, 1 aesm.limited, 1 aesm.ltd, 1 -aesmelbourne.org.au, 1 aesmoris.es, 1 aesre.com, 1 aesre.de, 1 @@ -7040,7 +7173,6 @@ aesre.net, 1 aessencia.com.br, 1 aessonline.org, 1 aesthetica.com.au, 1 -aestheticdermatologyclinic.com, 1 aestheticlounge.com.au, 1 aestheticsplus.xyz, 1 aesthetikpiercing.de, 0 @@ -7080,7 +7212,6 @@ afadansedeparis.com, 1 afadvantage.gov, 1 afaenxanetaviladecans.org, 1 afaf.or.jp, 1 -afam-ks.com, 1 afanasev.tk, 1 afanias.org, 0 afantou.com, 1 @@ -7088,7 +7219,6 @@ afapaucasals.cat, 1 afas-apps.nl, 1 afasim.tk, 1 afasstatus.nl, 1 -afbouw-gevelsupport.nl, 1 afbrunswick.com, 1 afcea.de, 1 afcmrstest.org, 0 @@ -7122,9 +7252,11 @@ aff.af, 1 aff.gov, 1 aff1xstavka.com, 1 affaire.com, 1 +affairemateriaux.fr, 1 affairs.com, 1 affarsnatverk.nu, 0 affclick.io, 1 +affcreations.com, 1 affect3d.com, 1 affect3dstore.com, 1 affectionate.tk, 1 @@ -7144,8 +7276,10 @@ affiliateprograms.gq, 1 affiliates-psychicsource.com, 1 affiliates.trade, 1 affiliatexpo.it, 0 +affine.ai, 1 affine.space, 1 affinipay.com, 0 +affinitihive.com, 1 affinity.co, 1 affinity.vc, 1 affinitycu.ca, 1 @@ -7171,7 +7305,7 @@ affordablecameras.tk, 1 affordableconnectivity.gov, 1 affordableelectronics.tk, 1 affordablehealthquotesforyou.com, 1 -affordablemedicalusa.com, 1 +affordablemedicalusa.com, 0 affordablepapers.com, 1 affordablevaccinesest.ga, 1 affordacode.com, 1 @@ -7203,12 +7337,13 @@ aficionados.com.br, 1 afilia3.com, 1 afilio.de, 1 afilmedia.llc, 1 +afinaudio.com, 1 afinterio.com, 1 afishablogs.tk, 1 +afive.us, 1 afiyetolsun.jp, 1 -afk.surf, 1 afkmind.com, 1 -afkzone.org, 0 +afkzone.org, 1 aflalogasperini.com.br, 1 aflam-online.tk, 1 aflasafe.com, 1 @@ -7221,7 +7356,6 @@ afoikrali.gr, 1 aforadearrastu.tk, 1 aforism.tk, 1 afp548.com, 1 -afrahalurdun.online, 1 afreelancersworld.com, 1 afreserve.com, 1 afreshperspective.com, 1 @@ -7242,6 +7376,7 @@ africanleapsafaris.com, 1 africanmangoforum.ga, 1 africanmangoforum.gq, 1 africansafaris.co.nz, 1 +africantourer.com, 1 africaone-publishing.com, 1 afrijet.ga, 1 afrimarket.ci, 1 @@ -7256,28 +7391,30 @@ afrodisiac.tk, 1 afrodita.tk, 1 afroditafirm.tk, 1 afroditehotel.tk, 1 +afroenergy.org, 1 afrogospel.tk, 1 afroludi.tk, 1 +afropages.fr, 1 afroto.com, 0 -afrotv.org.pe, 1 afs-ag.com, 1 afse.fr, 1 afslankstudiovelserbroek.nl, 0 +afsys.com.br, 1 aftamurae.com, 1 after-whoru.tk, 1 afterblokrock.tk, 1 afterdarklabs.net, 0 +afterdwi.info, 1 afterfostercare.tk, 1 -afterglows.xyz, 1 afterhate.fr, 1 afterhoursglass.com.au, 1 afterinc.com, 1 afterlifeos.com, 1 aftermagic.com, 1 aftermarketinternational.com, 1 +aftermix.com, 1 afternoonhereyes.tk, 1 afteroblivion.tk, 1 -afterpartyme.com, 1 afterpay.com, 1 afterschool.tk, 1 afterskool.eu, 1 @@ -7313,6 +7450,7 @@ ag6215.com, 1 ag6225.com, 1 ag66321.com, 1 ag69000.com, 1 +ag72.vip, 1 ag8.im, 0 ag8.vip, 1 ag80808.com, 1 @@ -7329,6 +7467,7 @@ ag8876.com, 1 ag888818.com, 1 ag889.com, 1 ag8891.com, 1 +ag8vip.com, 1 ag918.cc, 0 ag918.co, 1 ag918.top, 1 @@ -7347,6 +7486,7 @@ agafayoasissky.com, 1 against.tk, 1 againstgynexams.tk, 1 againsttheneighbour.tk, 1 +againsttheodds.es, 1 agalloch.tk, 1 agambition.eu, 1 agamogcloud.com, 1 @@ -7354,7 +7494,6 @@ agamsecurity.ch, 0 agapelove.tk, 1 agar-tw.com, 1 agar.kr, 1 -agara-sofvix.com, 1 agarcat.com, 1 agargiulo.com, 1 agari-mj.com, 1 @@ -7446,23 +7585,22 @@ agender.me, 1 agendominoq.tk, 1 agent-007.tk, 1 agent-grow.com, 1 +agent.sk, 1 agent47.tk, 1 +agent4fl.com, 1 agentabuseest.ga, 1 agenter.cf, 1 agenter.tk, 1 agentesevillanocooper.tk, 1 agentfire.com, 1 agentfirewall.com, 1 -agenticdelivery.se, 1 -agenticsoftwarefactory.com, 1 agentpak.com, 1 agentpatrolest.ga, 1 agentpoint.website, 1 -agentpress.org, 1 agentprovocateur.com, 1 +agentrisk.com, 0 agentsmith.tk, 1 agentum.ga, 1 -agentur-etcetera.de, 1 agentur-haas.com, 1 agentur-pottkinder.de, 1 agentur-publik.de, 1 @@ -7474,7 +7612,6 @@ ageofreason.tk, 1 ages-its.de, 1 ages-service.de, 1 agesofarda.net, 1 -agesupply.com, 1 ageverif.com, 1 agews.com, 0 agfmedia.com, 0 @@ -7488,9 +7625,10 @@ aggn.info, 1 aggression.tk, 1 aggressivecarwraps.com, 1 aggtechconcrete.com, 1 +aghasahadkhan.com, 1 aghayeva-edler.de, 1 -aghdirfood.com, 1 agiairini.cz, 1 +agic-geneve.ch, 1 agiftinside.com, 1 agilan.nl, 1 agile.coach, 1 @@ -7500,12 +7638,10 @@ agilebits.net, 0 agilecraft.com, 1 agilee.io, 1 agilepeopleopsframework.com, 1 -agileviz.com, 1 agilewalls.com, 1 agilextra.com.au, 1 agilicus.ca, 1 agilicus.com, 1 -agilisium.com, 1 agility-westvlaanderen.tk, 1 agilityconsulting.be, 1 agill.me, 1 @@ -7518,12 +7654,10 @@ agingstats.gov, 1 agingstop.net, 1 aginion.com, 1 aginion.net, 1 -aginternational.org, 1 agioanmark.tk, 1 agiosthomas.tk, 1 agirc-arrco.fr, 1 agirlknows.com, 1 -agk88.com, 1 agks02.com, 0 agks1.com, 1 agks116.com, 1 @@ -7541,6 +7675,7 @@ agks63.com, 1 agks70.com, 1 agks71.com, 1 agks79.com, 0 +agks8.com, 1 agks83.com, 1 agks87.com, 1 agks888.com, 0 @@ -7560,7 +7695,6 @@ agnesk.blog, 1 agnesmatilda.tk, 1 agnestakeaway.be, 1 agneta.tk, 1 -agnify.io, 1 agnosia.tk, 1 agnosticism.tk, 1 agnusbostel.tk, 1 @@ -7589,10 +7723,12 @@ agossearch.tk, 1 agostiniguyana.com, 1 agostinilimited.com, 1 agostonegro.tk, 1 +agourahillselectric.com, 1 agowa338.de, 1 agpandit.in, 1 agph.org, 1 agpideas.com, 1 +agpsn.com, 1 agr.asia, 1 agralines.tk, 1 agrarking.com, 1 @@ -7600,9 +7736,8 @@ agrarking.de, 1 agrarkredit.de, 1 agravery.com, 1 agraw.tk, 1 -agrcars.com, 1 agregator.tk, 1 -agremo.com, 1 +agremo.com, 0 agreor.com, 1 agri-meet.com, 1 agri.ee, 0 @@ -7612,7 +7747,6 @@ agricultura.gov.br, 1 agricultural-technology.tk, 1 agriculture-schools.com, 1 agriculturejournals.cz, 1 -agridata-ia.com, 1 agrifoodtoday.it, 1 agrifutures.com.au, 1 agrigentonotizie.it, 1 @@ -7625,6 +7759,7 @@ agripartner.fr, 0 agripick.com, 1 agriportal.online, 1 agrippa.tk, 1 +agriradar.news, 1 agriresearch.tk, 1 agrish.tk, 1 agro-54.ru, 1 @@ -7636,7 +7771,6 @@ agro-parts.bg, 1 agro.gov.br, 1 agrobank.uz, 0 agrobaza.com.ua, 1 -agrobi.com.ar, 1 agrocabildo.org, 1 agrocare.tk, 1 agroclan.tk, 1 @@ -7687,7 +7821,6 @@ aguasdefafe.pt, 1 aguaviva.tk, 1 aguiascarecas.org, 1 aguidetolovelossanddesperation.com, 1 -aguilonius.com, 1 agujetas.tk, 1 agul.tk, 1 agullo.tk, 1 @@ -7699,7 +7832,6 @@ agustian.tk, 1 agusticarmona.tk, 1 agustin.cf, 1 agustin.ml, 1 -agustinusnathaniel.com, 1 agustipardo.es, 1 agusto.tk, 1 aguz.tk, 1 @@ -7719,23 +7851,20 @@ agy.cl, 1 agzy.tw, 1 agzy.vip, 1 aha.io, 1 -ahaber.com.tr, 1 ahanet.tk, 1 ahansen.is, 0 -aharoj.io, 1 ahbap.org, 1 ahccmadison.com, 0 ahccorleone.tk, 1 -ahcfacilities.com, 1 ahcpr.gov, 1 +ahd-cyber.org, 1 ahd.com, 0 -ahdcyber.in, 1 +ahd.de, 1 ahealthyjourney.ca, 1 ahegaoroulette.com, 1 ahelos.tk, 1 ahembeauty.com, 1 ahezu.com, 1 -ahf.me, 1 ahg-offices.fr, 1 ahg67.fr, 1 ahhcomfortshoes.com, 1 @@ -7746,6 +7875,7 @@ ahima.org, 1 ahityayinlari.com, 1 ahityayinlari.org, 1 ahj.no, 1 +ahjindigital.com, 1 ahl-net.com, 1 ahl.gov.au, 0 ahl.im, 1 @@ -7769,11 +7899,13 @@ ahmadramadan.tk, 1 ahmed-alasadi.tk, 1 ahmed.ovh, 1 ahmed.tk, 1 +ahmedalneaimy.com, 1 ahmedcorp.tk, 1 ahmedelgamalanimations.tk, 1 ahmedkagan.com, 1 ahmedszaidi.com, 1 ahmerjamilkhan.org, 1 +ahmetazgin.net, 1 ahmetcadirci.com.tr, 0 ahmetshina.tk, 1 ahmettoraman.com.tr, 1 @@ -7783,13 +7915,14 @@ ahnastro.net, 1 ahoeheng.com, 1 ahoghill.com, 1 ahoj.email, 1 +ahoj.hu, 1 ahomeconcept.com, 1 ahornblatt.org, 1 ahorrocoop.cl, 1 ahorroenergeticoenhogares.es, 1 ahosamuel.com, 1 -ahosting.net, 1 ahouansou.cz, 1 +ahqf.com, 1 ahrefs.com, 1 ahroproject.org, 1 ahrq.gov, 1 @@ -7802,16 +7935,11 @@ ahsts.ca, 1 ahswarranty.com, 1 ahsyg.com, 1 aht.ca, 1 -ahtcf.org, 1 ahtuxpk.ru, 1 ahuhvac.com, 1 ahv-gmbh.net, 1 ahwah.net, 1 -ai-analytics-hub.com, 1 -ai-articlehumanizer.cloud, 1 -ai-crafters.io, 1 ai-cs.top, 1 -ai-defensesolutions.com, 1 ai-genit.com, 1 ai-kyousei.com, 1 ai-pacs.com, 1 @@ -7821,12 +7949,12 @@ ai.co.nl, 1 ai.futbol, 1 ai.gov, 1 ai.gov.ae, 1 +ai.market, 1 ai.moda, 1 ai.mr, 0 ai00.vip, 1 ai1989.com, 1 ai2-jp.com, 1 -aiabs.co, 1 aiaccinu.eu.org, 1 aiag.org, 1 aiainiu.com, 1 @@ -7835,7 +7963,7 @@ aianipid.ee, 1 aiasesoriainmobiliaria.com, 1 aiasnet.it, 1 aiat.net, 1 -aiavt-stg-01.com, 1 +aiatsis.gov.au, 1 aib.gov.uk, 1 aibes.org, 1 aibili.pt, 1 @@ -7843,11 +7971,13 @@ aibios.cloud, 1 aibiying.com, 1 aibolit-apteka.tk, 1 aibolit.ga, 1 +aibolit.md, 1 aibolit.ml, 1 aibolitik.tk, 1 aibot.tk, 1 aibottrafficanalyzer.com, 1 aibsoftware.mx, 1 +aica.org, 1 aiccc.com.au, 1 aiccorp.com, 1 aiceopenlab.org, 1 @@ -7856,14 +7986,15 @@ aichat.io, 1 aichi-tokko-shien.com, 1 aicial.co.uk, 1 aickelin.eu, 1 +aicontent.vn, 1 aicpastore.com, 1 -aicreatorvibes.com, 1 aicredit.ro, 1 aicta.ro, 1 aida.org.au, 1 aidablanco.tk, 1 aidaccess.org, 1 aidanamavi.com, 1 +aidanmitchell.uk, 0 aidanmontare.net, 1 aidanpr.com, 1 aidansonlinebooks.com, 1 @@ -7878,7 +8009,6 @@ aidenoliver.au, 1 aidez-moi.eu, 1 aidhan.net, 1 aidi-ahmi.com, 1 -aidiscore.com, 1 aidliveers.ga, 1 aido.gq, 1 aidoc.com, 1 @@ -7887,7 +8017,6 @@ aidoru.net, 1 aidoru.top, 1 aids-dissidents.tk, 1 aids.gov, 1 -aids.org.hk, 1 aie.de, 1 aiesecarad.ro, 1 aievaluare.ro, 1 @@ -7915,14 +8044,15 @@ aihelp.net, 1 aiho.stream, 1 aihschgo.org, 1 aihub.bid, 1 +aiiku-dental.jp, 1 aiinsurance.xyz, 1 aijobs.net, 1 +aikenpromotions.com, 1 aikenwelch.com, 1 aiki.de, 1 aiki.do, 1 aiki.tk, 0 aikido-kiel.de, 1 -aikido-viersen.de, 1 aikido.zone, 1 aikidoaalst.tk, 1 aikidoboskovice.cz, 1 @@ -7932,8 +8062,10 @@ aikidozentrum.com, 1 aikijutsu.tk, 1 aikiva.com, 1 aikoly.com, 1 +ailagpt.com, 1 aileenwatt.co.uk, 1 ailitonia.com, 1 +ailitonia.xyz, 1 ailladearousa.com, 1 aim.org.pt, 1 aimara.com, 1 @@ -7961,7 +8093,6 @@ aimoda.stream, 1 aimoda.trade, 1 aimotive.com, 1 aimplas.es, 1 -aimport.de, 1 aimreply.com, 1 aimrom.org, 1 aimsouq.com, 1 @@ -7970,7 +8101,6 @@ aimwa.com, 1 aina.moi, 1 ainameals.com, 1 ainamoroms.com, 1 -ainativedata.io, 1 aine.com.br, 1 ainewsto.com, 0 ainfographie.com, 1 @@ -7979,6 +8109,7 @@ ainsa.tk, 1 aintfeelingit.com, 1 ainutrition.co.uk, 1 ainzu.net, 1 +aioboot.com, 0 aiois.com, 1 aioj.ac, 1 aiom.tk, 1 @@ -7987,9 +8118,11 @@ aion.eu, 1 aion.fi, 1 aiosetups.com, 1 aiot.pw, 1 +aipbarcelona.com, 1 aipcardio.hu, 1 aipderm.eu, 1 aipderm.ro, 1 +aipdev.kz, 1 aipee.org, 1 aipentest.wpenginepowered.com, 1 aiphyron.com, 1 @@ -8000,8 +8133,8 @@ aipi.tel, 1 aipi.uk, 1 aipodcast.education, 1 aiprime.solutions, 1 -aiproductivelab.com, 1 aipulse.org, 1 +aiqinggu.com, 1 aiqingli.com, 1 air-business.tk, 1 air-clan.tk, 1 @@ -8015,7 +8148,6 @@ air-soft.ga, 1 air-swift.com, 1 air-techniques.fr, 1 air-ticket.ga, 1 -air.co, 1 airacle.in, 1 airaplus.ca, 1 airappliances.in, 1 @@ -8028,7 +8160,6 @@ airbnb.ca, 1 airbnb.cat, 1 airbnb.ch, 1 airbnb.cl, 1 -airbnb.cn, 1 airbnb.co.cr, 1 airbnb.co.id, 1 airbnb.co.il, 1 @@ -8091,6 +8222,8 @@ airborne-commando.tk, 1 airburners.com, 1 airburners.net, 1 aircareair.tk, 1 +aircheapfare.com, 1 +aircheapfares.com, 1 aircomet.tk, 1 airconditioning.tk, 1 airconditioningcondensers.tk, 1 @@ -8101,20 +8234,19 @@ airconsfourways.co.za, 1 aircraftnoisemodel.org, 1 aircraftspruce.ca, 1 aircraftspruce.com, 1 -aircrew24.com, 1 -aircrewdepot.com, 1 aircrewportpages.com, 1 -aircrewtrac.com, 1 airday.tk, 1 airdeer.com, 1 airdropkings.com, 1 airductcleaninggrandprairie.com, 1 +airductcleaningpa.com, 1 airdur.eu, 1 aireaseleaks.org, 1 airedaleterrier.com.br, 1 airensmuseum.com, 1 aires-autoroute-areas.com, 1 airethilien.tk, 1 +aireuropeflights.com, 1 airez.tk, 1 airfan.cf, 1 airfarecheapdeal.com, 1 @@ -8122,8 +8254,10 @@ airfarecheapeurope.com, 1 airfarecompareprices.com, 1 airfaredealstoindia.com, 1 airfarefrom.com, 1 +airfarehonolulu.com, 1 airfarehoteldeals.com, 1 airfaremexicocity.com, 1 +airfareorlando.com, 1 airfaresdomestic.com, 1 airfareseconomy.com, 1 airfaresfrom.com, 1 @@ -8135,8 +8269,6 @@ airfaretousa.com, 1 airfield.gq, 1 airfix.com, 1 airflightsdeals.com, 1 -airflowterravista.com, 1 -airflux.fr, 1 airforce-technology.com, 1 airforce.com, 1 airfoto.tk, 1 @@ -8156,24 +8288,40 @@ airkiss.ga, 1 airknowledge.gov, 1 airlapse.net, 0 airline-rabota.tk, 1 +airlineairlines.com, 1 +airlineairplane.com, 1 +airlineairports.com, 1 +airlineairways.com, 1 +airlineandhotels.com, 1 +airlineandtickets.com, 1 +airlinebe.com, 1 +airlineblue.com, 1 airlinebookingtickets.com, 1 airlinebuyticket.com, 1 +airlineby.com, 1 airlinec.com, 1 airlinecheapflightinternationalticket.com, 1 airlinecheapflightticket.com, 1 airlinecheapprices.com, 1 airlinecheaptravel.com, 1 +airlinechicago.com, 1 +airlinedallas.com, 1 airlinedenmark.com, 1 +airlinedomestic.com, 1 airlinefarecheap.com, 1 airlinefarediscount.com, 1 airlinefarelow.com, 1 airlinefareprices.com, 1 airlinefaresdiscount.com, 1 +airlinefee.com, 1 +airlinefirstclass.com, 1 +airlineflight.biz, 1 airlineflightcheap.com, 1 airlineflights.biz, 1 airlineflightsdeals.com, 1 airlineflightsdiscount.com, 1 airlineflightsfares.com, 1 +airlineflightsinternational.com, 1 airlineflightsprices.com, 1 airlineflightsreservations.com, 1 airlineflyingclub.tk, 1 @@ -8182,53 +8330,100 @@ airlinefr.com, 1 airlinegermany.com, 1 airlinehawaii.com, 1 airlinekorea.com, 1 +airlinelondon.com, 1 airlinenationwide.com, 1 airlinenews.tk, 1 airlinenewzealand.com, 1 airlineoil.com, 1 airlinep.com, 1 airlineplanetickets.com, 1 +airlinesair.com, 1 airlinesamsterdam.com, 1 +airlinesandhotel.com, 1 +airlinesandtickets.com, 1 +airlinesandtravel.com, 1 airlinesau.com, 1 airlinesaustralia.com, 1 +airlinesboston.com, 1 airlinesbritish.com, 1 +airlinesbrussels.com, 1 +airlinesby.com, 1 +airlinesca.com, 1 airlinescheapfare.com, 1 +airlinescheapflights.com, 1 airlinescheapticket.com, 1 +airlineschicago.com, 1 +airlinesdallas.com, 1 +airlinesdc.com, 1 +airlinesdetroit.com, 1 +airlinesdomestic.com, 1 +airlineseast.com, 1 +airlineseconomy.com, 1 +airlinesfirstclass.com, 1 airlinesfleet.com, 1 airlinesfrom.com, 1 +airlineshouston.com, 1 airlinesingapore.com, 1 +airlinesit.com, 1 airlinesjordan.com, 1 airlineslasvegas.com, 1 +airlineslosangeles.com, 1 airlineslowfare.com, 1 airlinesmiddleeast.com, 1 airlinesname.com, 1 +airlinesnashville.com, 1 +airlinesnewyork.com, 1 airlinesnorthamerica.com, 1 airlinesnyc.com, 1 airlinesofdubai.com, 1 airlinesofmexico.com, 1 +airlinespackages.com, 1 +airlinesparis.com, 1 airlinesphonenumber.com, 1 airlinespolicyhub.com, 1 +airlinessanfrancisco.com, 1 airlinesseating.com, 1 +airlinessingapore.com, 1 airlinestexas.com, 1 airlinesto.com, 1 +airlinestoalaska.com, 1 +airlinestoamerica.com, 1 airlinestoatlanta.com, 1 +airlinestocanada.com, 1 airlinestochicago.com, 1 +airlinestoeurope.com, 1 +airlinestoflorida.com, 1 +airlinestofrance.com, 1 airlinestogermany.com, 1 airlinestoitaly.com, 1 +airlinestojapan.com, 1 airlinestolasvegas.com, 1 +airlinestolosangeles.com, 1 airlinestomiami.com, 1 airlinestoorlando.com, 1 +airlinestophoenix.com, 1 +airlinestosingapore.com, 1 airlinestoturkey.com, 1 +airlinestousa.com, 1 +airlinestovegas.com, 1 airlinesturkey.com, 1 +airlinesunitedstates.com, 1 +airlinesvegas.com, 1 +airlinesvietnam.com, 1 airlineti.com, 1 airlinetic.com, 1 airlineticketscheapflights.com, 1 airlineticketsfrom.com, 1 +airlineticketspurchase.com, 1 +airlineticketswith.com, 1 airlineto.com, 1 airlinetocanada.com, 1 airlinetohawaii.com, 1 +airlinetolasvegas.com, 1 airlinetomiami.com, 1 +airlinetovegas.com, 1 airlinetravelinternational.com, 1 +airlinevegas.com, 1 airlitegroup.com.au, 1 airlok.com.au, 1 airm.aero, 1 @@ -8271,20 +8466,27 @@ airportcoc.ml, 1 airportcyprus.com, 1 airportdc.com, 1 airportfrankfurtgermany.com, 1 +airportgatwick.com, 1 airportgrandhotel.com, 1 airportguam.com, 1 airportholiday.com, 1 airporthotelsgatwick.com, 1 +airportinrome.com, 1 airportknoxville.com, 1 +airportlas.com, 1 airportnz.com, 1 airportofdubai.com, 1 airportpadova.com, 1 airportperth.com, 1 airportsbarcelona.com, 1 +airportsflights.com, 1 +airportsflorida.com, 1 +airportsfo.com, 1 airportstickets.com, 1 airporttaxibudapest.com, 1 airporttransferbudapest.co.uk, 1 airporttransferbudapest.com, 1 +airportturkey.com, 1 airportzo.net.in, 1 airpurifierproductsonline.com, 1 airquestion.org, 1 @@ -8299,25 +8501,24 @@ airsculptureballoons.com, 1 airship.com, 1 airship.eu, 1 airsidemobile.com, 1 +airslate.com, 1 airsoft.fr, 1 -airsoftgrandeabc.com.br, 1 airsofthub.fr, 1 airsoftpark.cz, 1 airsoftpinoso.tk, 1 airstrike.tk, 1 airswap.io, 0 -airsync.net, 1 airtable.com, 1 airtame.cloud, 1 airteam.com.au, 1 airtec-france.fr, 1 airterms.cf, 1 +airticketstravel.com, 1 airtimerewards.co.uk, 0 airtrain.gq, 1 airtrolinc.com, 1 airtron.com, 1 airventuri.com, 1 -airvet.com, 1 airvida.sg, 1 airvpn.org, 1 airwater-hprogram.jp, 1 @@ -8338,9 +8539,8 @@ aisera.com, 1 aish.ml, 1 aishima.com, 1 aisi316l.net, 1 +aisidehustler.com, 1 aising.jp, 1 -aisolutions-hammer.at, 1 -aisongchecker.pro, 1 aisp.sg, 1 aispirit.tk, 1 aisrvs.net, 1 @@ -8349,6 +8549,7 @@ aisthesthai.tk, 1 aistockcharts.com, 1 aistsist.ga, 1 aistsist.tk, 1 +ait.com.ar, 1 aita.global, 1 aitanaedu.org, 1 aitf-rousai.org, 1 @@ -8357,8 +8558,6 @@ aitidings.com, 1 aitindo.com, 1 aitkincountymn.gov, 1 aitnews.com, 1 -aitomate.pl, 1 -aitoolsinformer.com, 1 aitopics.org, 1 aitoreda.io, 1 aitosoftware.com, 1 @@ -8366,15 +8565,14 @@ aitsl.edu.au, 1 aiud.ro, 1 aiui10.cn, 1 aiuk-major-projects.co.uk, 1 +aiuni.ai, 1 aiup.date, 1 aiut.com, 1 aiutodomestico.ch, 0 aiva.ai, 1 aiva.es, 1 -aivaclaims.com, 1 aivaras.net, 1 aivd.lol, 1 -aivene.com, 1 aivsasociacion.org, 1 aiwaac.org.au, 1 aiwo.ai, 1 @@ -8412,14 +8610,12 @@ ajaxtime.tk, 1 ajaxtraining.tk, 1 ajaxworld.tk, 1 ajbelltouch.co.uk, 1 -ajdaranik.com, 1 ajedrezbolivia.tk, 1 ajetaci.cz, 1 ajeventhire.co.uk, 1 ajfite.com, 0 ajforum.tk, 1 ajhstamps.co.uk, 1 -ajial212.com, 1 ajiboye.com, 1 ajinabraham.com, 1 ajito.pw, 1 @@ -8455,6 +8651,7 @@ ajvco.net, 1 ajvocab.com, 1 ajwee.de, 1 ak-design.tk, 1 +ak-events.eu, 1 ak-online.tk, 1 ak-varazdin.hr, 1 ak-wohnen.de, 1 @@ -8479,19 +8676,18 @@ akademicka.pl, 1 akademie-frankfurt.de, 1 akadseguros.com.br, 0 akaike.co.jp, 1 -akamai.com, 1 akamon.ac.jp, 1 akamsg.com, 1 akamsg.me, 1 akamslinkphoneqr.co, 1 -akamsnetworksetup.com, 0 -akamspairyourphone.com, 0 +akamsnetworksetup.com, 1 +akamspairyourphone.com, 1 akamsphonelink.com, 1 akamu.de, 0 -akaphonelink.com, 0 +akaphonelink.com, 1 akaratasker.com, 1 akari.net, 1 -akariforge.com, 0 +akariforge.com, 1 akarisoftware.com, 1 akarisoftware.eu, 1 akaritakai.net, 1 @@ -8506,17 +8702,18 @@ akashstephen.com, 1 akasi.cf, 1 akasmedikal.com, 1 akasmedikal.net, 1 -akatdo.com, 1 akatsukainuneko.co.jp, 1 akaxaka.tk, 1 akaziya.cf, 1 akbam.co.uk, 1 akbarsempoi.tk, 1 akbas.tk, 1 +akblasch.com.au, 1 akbtv.ru, 1 akcenty.com.ua, 1 akcevybuch.cz, 1 akconciergerie.fr, 1 +akcpetinsurance.com, 1 akcs.one, 1 akdenizecza.com, 1 akdenizecza.com.tr, 1 @@ -8530,8 +8727,8 @@ akelius.com, 1 akemineko.tk, 1 akemisp.com.br, 1 akerberri.tk, 1 -akerboom.family, 0 -akerboom.me, 0 +akerboom.family, 1 +akerboom.me, 1 akerboom.org, 1 akerl.com, 1 akerl.org, 1 @@ -8540,6 +8737,7 @@ akeroh.nl, 1 akesinti.tk, 1 aketzasantacoloma.tk, 1 akf.de, 1 +akfoundationindia.com, 0 akhabar.tk, 1 akhbaralam.cf, 1 akhbareldesh.tk, 1 @@ -8553,14 +8751,14 @@ akiakira-nsn.gov, 1 akiba-server.info, 1 akiekintveld.com, 1 akiganka.com, 1 +akihabara-tour.com, 1 akijo.de, 1 akikat.tk, 1 akilli-devre.com, 1 akimbocore.com, 1 akimeder.tk, 1 akimitsu.co.jp, 1 -akinachan.com, 1 -aking.com.my, 0 +aking.com.my, 1 akinoiro.ru, 1 akinokae.de, 1 akiranet.tk, 1 @@ -8568,10 +8766,12 @@ akisazame.tk, 1 akita-boutique.com, 1 akita-stream.com, 1 akitacyber.com, 1 +akitra.net, 1 akiym.com, 1 -akj.io, 1 +akj.io, 0 akkerwinde.tk, 1 akko.wtf, 1 +akkoniq.com, 1 akkordeon-livemusik.de, 1 akkordy-skachat.ga, 1 akkumulator-kereso.hu, 1 @@ -8588,6 +8788,7 @@ akonlineworks.tk, 1 akordeoiak.tk, 1 akormatik.com, 1 akostecki.de, 1 +akosuasankofa.com, 1 akouryy.net, 1 akoya.fi, 1 akoyabio.com, 1 @@ -8603,18 +8804,18 @@ akrasa.xyz, 1 akrep.com, 1 akrilikhavuz.com, 1 akritikos.info, 1 -akro.cz, 1 akrobat.cf, 1 akrochem.com, 1 akronhousing.gov, 1 akronohiorescue.gov, 1 akropolis-ravensburg.de, 1 -akroslive.com, 1 +akrvall.se, 1 akrzon.com, 1 aksehir.bel.tr, 1 akselinurmio.fi, 1 aksenov.tk, 1 aksenovalexey.tk, 1 +aksesuarai.com, 1 akshavitrends.com, 1 akshay.in.eu.org, 1 akshit.me, 1 @@ -8633,8 +8834,10 @@ aktiv-naturheilmittel.ch, 1 aktiv-naturheilmittel.de, 1 aktiv.pl, 1 aktivace.eu, 1 +aktive-arbeitslose.at, 1 aktivierungscenter.de, 1 aktivitetatil.com, 1 +aktivpark-lumdatal.de, 1 aktmedurna.com, 1 aktmedurna.se, 1 aktransmission.com, 1 @@ -8649,6 +8852,8 @@ akumat.com.pl, 1 akumat.eu, 1 akumat.pl, 1 akumbittiyolyardim.com, 1 +akuntansilengkap.com, 1 +akupunktur-akupunktoer.dk, 0 akupunktura.tk, 1 akura.cf, 1 akura.tk, 1 @@ -8683,7 +8888,7 @@ al2schaos.tk, 1 al3ilm.com, 1 al3xpro.com, 1 al911.net, 1 -alaan.com, 0 +alaan.com, 1 alaattinkaraca.tk, 1 alab.space, 1 alabalaporto.tk, 1 @@ -8713,7 +8918,8 @@ aladdinschools.appspot.com, 1 aladintechnologies.tk, 1 alaiabelize.com, 1 alain-webcreator.cf, 1 -alainfrancois.eu, 0 +alaincouture.com, 1 +alainfrancois.eu, 1 alainmargot.ch, 0 alainodea.com, 1 alainwolf.ch, 1 @@ -8734,6 +8940,8 @@ alamedacountyca.gov, 1 alamitosbaytraders.com, 1 alamoranchhandyman.com, 1 alamotownshipmi.gov, 1 +alan-turnbull.co.uk, 1 +alana.com.ua, 1 alanalarana.com, 1 alanberger.me.uk, 1 alanbleiweiss.com, 1 @@ -8742,13 +8950,12 @@ alancabrera.com, 0 alancat.ml, 1 alancolephotography.com, 1 aland.co.uk, 1 -alandeffenderfer.com, 1 alandoyle.com, 1 alandoyle.link, 1 -alanforutah.com, 1 alanhua.ng, 1 alanhuang.name, 1 alaninkenya.org, 1 +alaniz-law.com, 0 alankardresswalla.tk, 1 alankatona.com, 1 alanokling.nl, 1 @@ -8771,6 +8978,7 @@ alarmmessageest.ga, 1 alarmnewengland.com, 1 alarmport-security.net, 1 alarmport.cz, 1 +alarmreceiver.com, 1 alarmreceiver.net, 1 alarna.de, 1 alaroche.be, 1 @@ -8782,6 +8990,7 @@ alaserrurerierapide.fr, 1 alaska.com.tr, 1 alaskabuylocal.org, 1 alaskacapitol.gov, 1 +alaskacruises.com, 1 alaskadentalcare.com, 1 alaskafishinglodges.net, 1 alaskafolkarts.tk, 1 @@ -8799,7 +9008,6 @@ alavieestbelle.be, 1 alb-flirt.de, 1 alb-media.tk, 1 alba.ovh, 1 -alba24.ro, 1 albaadani.com, 1 albadon.tk, 1 albaform.com, 1 @@ -8837,6 +9045,7 @@ albatrosboat.it, 1 albatrostercume.com, 1 albauroman.com, 1 albayan.ae, 1 +albeelaw.com, 1 albemarlehistory.org, 1 albendazole.ga, 1 albendazole.ml, 1 @@ -8856,6 +9065,7 @@ albertocarvalhosa.pt, 1 albertofarina.tk, 1 albertolopezaroca.tk, 1 albertonparish.org.au, 1 +albertonplumber24-7.co.za, 1 albertonsolarsystems.co.za, 1 albertooc.com, 1 albertosobrino.tk, 1 @@ -8871,8 +9081,9 @@ alberttwpmi.gov, 1 albertvillemn.gov, 1 albeso.ml, 1 albi-tourisme.fr, 1 -albiaiowa.org, 1 albilaga.id, 1 +albinliljestrand.se, 1 +albinonderdelen.nl, 1 albinsoft.es, 1 albinvega.tk, 1 albion-swords.com, 1 @@ -8891,7 +9102,9 @@ alburquerquerock.tk, 1 albuterol.ga, 1 albuterolonline.ga, 1 albuterolwithoutprescription.gq, 1 +albuthi.com, 1 albylane.com.au, 1 +alc-manage-bns.azurewebsites.net, 1 alca31.com, 0 alcalainos.tk, 1 alcanaan.com, 1 @@ -8905,19 +9118,16 @@ alcaralifusi.tk, 1 alcarpentry.co, 1 alcatraz-webdesign.tk, 1 alcatrazeast.com, 1 +alcatraztourtickets.com, 1 +alcazaar.com, 1 alchakov.tk, 1 alchemist-heaven.tk, 1 alchemisten.tk, 1 alchemiya.ru, 1 +alchemy.gr, 1 alchemy.net, 1 -alchemyfarmsbds.com, 1 alchemyinfusionco.com.au, 1 -alchemyresource.com, 1 alchemytechconnect.com, 1 -alchemytechevents.com, 1 -alchemytechonline.com, 1 -alchemytechresource.com, 1 -alchemytechsource.com, 1 alchemywellness.health, 1 alchevsk-news.ru, 1 alchevsknews.ru, 1 @@ -8949,9 +9159,9 @@ aldebaranbm.com, 1 aldenstate.com, 1 alderautomation.ca, 1 alderimages.com, 1 +aldersgatemontgomery.org, 1 aldervets.co.uk, 1 aldevadigital.com, 1 -aldiacademy.com.au, 1 aldien.com.br, 1 aldino-redagno.com, 1 aldipresscentre.co.uk, 1 @@ -8969,17 +9179,18 @@ ale5000.altervista.org, 1 alea-prevention.com, 1 alea.xyz, 1 alecel.de, 1 +alecpap.com, 1 alecpapierniak.com, 1 alector.com, 1 aledoil.gov, 1 aledotx.gov, 1 -aleefgreen.com, 1 aleftinka.tk, 1 alegriafm.tk, 1 alegromania.tk, 1 alehinta.fi, 1 -alejandrocruz.es, 0 +alejandrocruz.es, 1 alejandromateoconde.tk, 1 +alejandromillalen.com, 1 alejandromunoz.es, 1 alejandropernett.tk, 1 alejandrophones.com.mx, 1 @@ -9014,7 +9225,7 @@ alendronate.gq, 1 alendronato.com, 1 alentaja.com, 1 alentaja.fi, 1 -alenvlahovljak.com, 0 +alenvlahovljak.com, 1 alenwich.com, 1 aleph.land, 1 alephsecurity.com, 1 @@ -9025,6 +9236,7 @@ alerque.com, 1 alerrt.org, 1 alert-software.com, 1 alertaenlinea.gov, 1 +alertaspopup.com, 1 alertlogic.com, 1 alertmedia.com, 1 alertoc.gov, 1 @@ -9035,25 +9247,23 @@ alesagglo-expo.com, 1 alesagglo.net, 1 alescan.it, 1 alesha.tk, 1 +alesizu.net, 1 alesraa-academy.com, 1 alesryjacek.cz, 1 aless.io, 1 -alessalopez.exposed, 1 alessandraoliva.tk, 1 alessandrobasi.it, 1 -alessandrokuz.com, 1 alessandrolapiana.com, 1 -alessandrorumi.it, 1 alessandrotravel.com, 1 alessandroz.ddns.net, 1 alessiacornici.com, 1 -alessioligabue.it, 1 alessiomesiano.com, 1 +alestarestaurant.com, 1 alesto-mail.eu, 1 alesto.at, 1 aleszejdl.cz, 1 aletm.it, 0 -alevel.tech, 1 +alevel.tech, 0 alevi-forum.tk, 1 alevi.tk, 1 alex-klaus.com, 1 @@ -9095,13 +9305,13 @@ alexandertutoring.com, 1 alexanderwagner.tk, 1 alexandra-schulze.de, 1 alexandra-siegel.com, 1 -alexandragrabbe.com, 1 alexandraschick.at, 1 alexandraschmidt.coach, 1 alexandrastrauss.fr, 1 alexandre-acaries.fr, 1 alexandre-barret.fr, 1 alexandrebassi.com, 1 +alexandreguarita.com.br, 1 alexandremottier.tk, 1 alexandreshimura.com.br, 1 alexandrevicente.net, 1 @@ -9121,20 +9331,16 @@ alexbresnahan.com, 1 alexcoman.com, 1 alexcpp.tk, 1 alexdesigner.tk, 1 -alexdiamante.it, 1 alexdowns.tk, 1 alexdutton.co.uk, 1 alexdutton.com, 1 alexeydrach.ru, 1 -alexeyfv.xyz, 1 alexeykamalov.tk, 1 alexeykopytko.com, 1 alexgaynor.net, 1 alexgonzalez-online.tk, 1 alexhaack.de, 1 alexhaidar.com, 1 -alexhaydock.co.uk, 1 -alexhaydock.com, 1 alexhd.de, 1 alexhodgkinson.tk, 1 alexia.fr, 1 @@ -9145,6 +9351,7 @@ alexischaussy.xyz, 1 alexismeza.com.mx, 1 alexismeza.dk, 1 alexismeza.es, 1 +alexisparcellsmd.com, 0 alexispoficial.tk, 1 alexisquero.tk, 1 alexisshaw.com, 1 @@ -9207,9 +9414,9 @@ alfa-pack.com.ua, 1 alfa-reserve.tk, 1 alfa-tech.su, 1 alfaair.aero, 1 +alfabetagamma.com, 0 alfabetajuega.com, 1 alfabuster.com, 1 -alfacapital.com.cy, 1 alfacharlie.co, 0 alfadecor.ml, 1 alfadefiant.tk, 1 @@ -9231,6 +9438,7 @@ alfatar-milk.com, 1 alfavit.cf, 1 alfawedding.com, 1 alfithrah.ac.id, 1 +alfm.fr, 1 alfonso-baya.tk, 1 alfonsostriano.it, 1 alfordbenefits.com, 0 @@ -9239,6 +9447,7 @@ alformationcouture.fr, 1 alforto.nl, 0 alfred-figge.de, 1 alfred-g-fischer.de, 1 +alfred.co.in, 1 alfredapp.com, 1 alfredlin015.com, 1 alfredo-misael.tk, 1 @@ -9252,6 +9461,8 @@ alg-fotografie.de, 1 algarmatic-automatismos.pt, 1 algarve-1.com, 1 algarve-carhire.net, 1 +algarve-transfers.co.uk, 1 +algbee.com, 1 algbra.com, 1 alge.xyz, 1 algebra-quiz.com, 1 @@ -9262,11 +9473,11 @@ algerie-music.tk, 1 algerie360.com, 1 alghanimcatering.com, 1 algibranstore.id, 1 -algo2world.com, 1 algoarmada.com, 1 algoentremanos.com, 1 algoesolutions.com, 1 algoexplorer.io, 1 +algofactory.de, 1 algolia.com, 1 algomadistrictlawassociation.com, 1 algomotion.me, 1 @@ -9285,24 +9496,23 @@ algorix.com, 1 algorytm.tk, 1 algosec.com, 1 algosensei.in, 1 -algotech.org, 1 algotest.in, 1 algrape.com, 1 alhamedeia.tk, 1 -alhidayahkg.com, 1 +alhayes.com, 1 alhomaidani.com, 1 alhost.ml, 1 alhs-archives.com, 1 +alhsfb.com, 0 alhuqul-kh.com, 1 ali-shariati.tk, 1 alia-helianthi.tk, 1 -aliakpoyraz.com, 0 +aliakpoyraz.com, 1 alialkurdy.tk, 1 aliamakeup.com, 1 alianet.org, 1 aliansinews.id, 1 aliantsoft.pl, 1 -alianzalabs.com, 1 aliasbox.org, 1 aliasbox.ovh, 1 aliasinfoforums.tk, 1 @@ -9310,6 +9520,7 @@ aliaslaw.com, 1 aliaswp.com, 1 alibabau.tk, 1 alibamu.com, 1 +alibamu.org, 1 alibi-ua.com.ua, 1 alibip.de, 1 alicante-spain.tk, 1 @@ -9332,6 +9543,7 @@ alicjawkrainiecanavan.pl, 1 alida.com, 1 aliel.fr, 1 alien-life.tk, 1 +alien.com.co, 1 alien.net.au, 1 alienantfarm.tk, 1 alienclicker.ml, 1 @@ -9371,20 +9583,21 @@ alimahmood.com, 1 alimanaka-rabesata.tk, 1 aliment-covid19.com, 1 alimentosmcf.com, 1 +alimentsduquebecaumenu.com, 1 alimenty.tk, 1 +alimeta.it, 1 alimtyaz.estate, 1 alimwilliams.tk, 1 alinalamour.com, 1 alinandrei.com, 1 alinatinen.cf, 1 alinatinen.gq, 1 -alineas.fr, 1 alinecordeiro.adv.br, 1 alinemello.com.br, 1 alineonline.tk, 1 alingroove.com, 1 -alinkbetweennets.de, 1 alinneata.com, 1 +alinode.com, 1 alio.lt, 1 aliorange.com, 1 aliosmanyuksel.com.tr, 1 @@ -9401,6 +9614,7 @@ alishapiro.com, 1 alisoft.gq, 1 alisondavenport.ga, 1 alisonmatter.tk, 1 +alisonswindles.com, 0 alissa-group.com, 1 alissanoir.net, 1 alisstyle.tk, 1 @@ -9408,16 +9622,16 @@ alistairshepherd.uk, 1 alistaku.tk, 1 alistar.ltd, 1 alistelab.com, 1 -alistshop.com, 0 +alistshop.com, 1 alisufyan.cloud, 1 alisufyan.net, 1 alisufyan.pk, 1 alisufyan.uk, 1 alisy.cz, 1 alisy.de, 1 +alisync.com, 1 alitabergert.tk, 1 alitajran.com, 1 -alitec.it, 1 alitpedia.ga, 1 alittlecoldgel.com, 1 alittledelightful.com, 1 @@ -9458,11 +9672,11 @@ alko-stop.ml, 1 alkoferma.gq, 1 alkogol.ga, 1 alkoholiker-forum.de, 1 -alkomedfrank.com, 1 alkon.gg, 1 alkopedia.tk, 1 alkor.tk, 1 alkoutlet.lv, 1 +all-bikes.fr, 1 all-blogs.tk, 1 all-bronza.ru, 1 all-connect.net, 0 @@ -9473,11 +9687,10 @@ all-eu-recruitment.com, 1 all-fashion-schools.com, 1 all-for-u.tk, 1 all-gsm-solutions.tk, 1 +all-inhealth.com, 1 all-mountains.fr, 1 all-music.ml, 1 all-music.tk, 1 -all-payroll-solutions.com, 1 -all-payroll-solutions.de, 1 all-pics.tk, 1 all-rating.tk, 1 all-seo.tk, 1 @@ -9505,24 +9718,21 @@ allaboutnothing.cf, 1 allaboutnothing.ga, 1 allaboutnothing.gq, 1 allaboutreligions.tk, 1 +allaboutswing.co.uk, 1 +allaboutswing.com, 1 allabouttechh.tk, 1 allaboutthekink.org, 1 allaboutyouspa.co.uk, 1 allaccessglobal.tech, 1 allactionsecurity.com, 1 allahabadhighcourt.in, 1 -allai.su, 1 allamakee.k12.ia.us, 1 allamericangutterprotection.com, 0 -allamericanprotection.net, 1 -allamericanroofpros.com, 1 allamericatrans.com, 0 allandrich.ml, 1 allandrichonline.tk, 1 allangirvan.net, 1 -allanik.art, 1 allanlopez.tk, 1 -allanspiers.com, 1 allanta.be, 1 allapresenter.com, 1 allarmi.roma.it, 1 @@ -9530,6 +9740,7 @@ allarticles.tk, 1 allas.se, 1 allas.tk, 1 allasianpics.com, 1 +allatoonadiesel.com, 0 allattaremoda.com.br, 1 allauthor.com, 1 allballband.com, 1 @@ -9549,33 +9760,11 @@ allbrestorg.tk, 1 allbridges.tk, 1 allbs.pt, 1 allbut.ai, 1 -allbutai.0am.jp, 1 -allbutai.0g0.jp, 1 -allbutai.0j0.jp, 1 -allbutai.0t0.jp, 1 -allbutai.club, 1 -allbutai.daemon.asia, 1 -allbutai.duckdns.org, 1 -allbutai.f5.si, 1 -allbutai.info, 1 -allbutai.keyword-on.net, 1 -allbutai.mydns.bz, 1 -allbutai.mydns.jp, 1 -allbutai.mydns.vc, 1 -allbutai.net, 1 -allbutai.online, 1 -allbutai.org, 1 -allbutai.pgw.jp, 1 -allbutai.server-on.net, 1 -allbutai.shop, 1 -allbutai.wjg.jp, 1 -allbutai.xyz, 1 allbuttpics.com, 1 allcarepharmacy.com, 1 allcelebs.tk, 1 allchan.io, 1 allcinema.net, 1 -allcleanportapottyrental.com, 1 allcloud.com, 1 allcooking.tk, 1 allcookingclub.com, 1 @@ -9590,7 +9779,7 @@ alldigitocracy.org, 1 alldm.ru, 1 alldogs.tk, 1 alldrives.tk, 1 -alle-immobilien.ch, 1 +alldrugs.com, 1 alle-zonvakanties.nl, 1 alle.bg, 1 alle.com, 1 @@ -9617,7 +9806,6 @@ allegrettowines.com, 0 allemanniamarburg.at, 1 allemoz.com, 1 allemoz.fr, 1 -allen-health.co.uk, 1 allenacampbell.tk, 1 allenarchive.com, 1 allencountyinvoters.gov, 1 @@ -9625,6 +9813,7 @@ allencountykentucky.gov, 1 allencrouch.com, 1 allencrouchcfo.com, 1 allendalecounty.gov, 1 +allenhouse.ac.in, 1 allenivory.com, 1 allenkreger.com, 1 allenpcservices.co.uk, 1 @@ -9634,18 +9823,22 @@ allensun.org, 1 allentertainment.de, 1 allenturley.com, 1 allenwillis.ga, 1 +allerbestefreunde.de, 1 allergento.shop, 1 allergento.store, 0 allergictoidiots.tk, 1 +allergy.university, 1 allergyweb.cf, 1 allergyweb.ga, 1 allerhand.design, 1 allerlei-havelte.nl, 1 +allerstorfer.at, 1 allerzeiten.com, 1 allerzieleninhetvondelpark.nl, 1 alles-nur-ge.cloud, 1 allesisgezondheid.nl, 1 allesisonline.nl, 1 +alleskomtgoed.org, 1 allesmartphonehoesjes.nl, 1 allesovercrypto.nl, 0 allesoverdieren.tk, 1 @@ -9671,7 +9864,6 @@ allforlocal.com, 1 allform.se, 1 allfortips.com, 1 allfundsconnect.com, 1 -allfur.love, 1 allgadgetsfree.tk, 1 allgaragedoorandgates.com, 1 allgaragefloors.com, 1 @@ -9689,105 +9881,23 @@ alli-diet-pill.cf, 1 alli-pills.cf, 1 alliance-immobilier-service-neuf.fr, 1 alliance-psychiatry.com, 0 +allianceairlinesflights.com, 1 allianceautomation.com.au, 1 alliancebank.com, 1 allianceblock.io, 1 allianceborderservices.com, 1 -allianceenergy.co, 1 -alliancefireandsafety.com, 1 allianceforafreesociety.com, 1 allianceforafreesociety.net, 1 -alliancemannin.com, 1 alliances-globalsolutions.com, 0 alliancesolutionsgrp.com, 1 allianskyrkan.se, 1 allianz-pro-schiene.de, 1 -allianz-trade-collections.de, 1 -allianz-trade.ae, 1 -allianz-trade.be, 1 -allianz-trade.ch, 1 -allianz-trade.co.nz, 1 -allianz-trade.co.uk, 1 -allianz-trade.co.za, 1 -allianz-trade.com, 1 -allianz-trade.com.br, 1 -allianz-trade.com.tw, 1 -allianz-trade.cz, 1 -allianz-trade.de, 1 -allianz-trade.dk, 1 -allianz-trade.ee, 1 -allianz-trade.fi, 1 -allianz-trade.fr, 1 -allianz-trade.gr, 1 -allianz-trade.hk, 1 -allianz-trade.hu, 1 -allianz-trade.id, 1 -allianz-trade.in, 1 -allianz-trade.it, 1 -allianz-trade.jp, 1 -allianz-trade.kr, 1 -allianz-trade.lt, 1 -allianz-trade.lv, 1 -allianz-trade.ma, 1 -allianz-trade.my, 1 -allianz-trade.nl, 1 -allianz-trade.no, 1 -allianz-trade.nz, 1 -allianz-trade.pl, 1 -allianz-trade.qa, 1 -allianz-trade.ro, 1 -allianz-trade.se, 1 -allianz-trade.sg, 1 -allianz-trade.sk, 1 -allianz-trade.tw, 1 -allianz-trade.uk, 1 -allianz-trade.us, 1 -allianz-trade.vn, 1 allianzdirect.com, 1 allianzdirect.de, 1 allianzdirect.it, 1 allianzdirect.nl, 1 -allianztrade.ae, 1 -allianztrade.be, 1 -allianztrade.ch, 1 -allianztrade.co.nz, 1 -allianztrade.co.uk, 1 -allianztrade.co.za, 1 -allianztrade.com.br, 1 -allianztrade.com.tw, 1 -allianztrade.cz, 1 -allianztrade.de, 1 -allianztrade.dk, 1 -allianztrade.ee, 1 -allianztrade.fi, 1 -allianztrade.fr, 1 -allianztrade.gr, 1 -allianztrade.hk, 1 -allianztrade.hu, 1 -allianztrade.id, 1 -allianztrade.in, 1 -allianztrade.it, 1 -allianztrade.jp, 1 -allianztrade.kr, 1 -allianztrade.lt, 1 -allianztrade.lv, 1 -allianztrade.ma, 1 -allianztrade.nl, 1 -allianztrade.no, 1 -allianztrade.nz, 1 -allianztrade.pl, 1 -allianztrade.qa, 1 -allianztrade.ro, 1 -allianztrade.se, 1 -allianztrade.sg, 1 -allianztrade.sk, 1 -allianztrade.tw, 1 -allianztrade.uk, 1 -allianztrade.us, 1 -allianztrade.vn, 1 alliedartistswv.org, 1 allieddigital.net, 1 -alliedinterpreting.com, 1 alliedmedia.org, 1 allier-vichy-moulins-expert-comptable.fr, 1 alliiertenmuseum.de, 1 @@ -9797,7 +9907,6 @@ allindiatanzeem.ml, 1 allinform.ga, 1 allinformaura.com, 1 allinoutfits.com, 1 -allinparts.ro, 1 allinpdf.com, 1 allinsuranceinformation.com, 1 allintovote.org, 1 @@ -9829,12 +9938,12 @@ allmessedup.tk, 1 allmobilenews.tk, 1 allmousepads.com, 0 allmoviesonline.tk, 1 -allmystery.de, 1 allnaijagists.com.ng, 1 allnations4christ.org, 1 allnodes.com, 1 allnovosibirsk.tk, 1 allns.fr, 1 +allnumis.com, 1 allo-credit.ch, 0 allo-luxembourg.tk, 1 allofghana.com, 1 @@ -9859,7 +9968,6 @@ allporn.pics, 1 allporncomic.com, 1 allpornvids.com, 1 allpost.co, 1 -allprimenumbers.com, 1 allprints.tk, 1 allproptonline.com, 1 allrad-buck.de, 1 @@ -9884,7 +9992,6 @@ allset.ml, 1 allshapes.co.nz, 1 allshiftmed.com, 1 allshousedesigns.com, 0 -allslots777.com.pk, 1 allsmart.gr, 1 allsouls.co.za, 1 allspinecare.com, 1 @@ -9895,21 +10002,24 @@ allstarbyreportex.com, 1 allstarcashforcars.com, 0 allstarcustompools.com, 1 allstarreporting.ca, 1 -allstarreporting.com, 1 allstatedealerservices.com, 1 allsun.online, 0 allsurpl.us, 1 allsurplus.com, 1 -alltagsbegleiter-hegau.de, 1 allterrainfence.com, 0 +alltest.net.au, 1 +alltestantigentest.com.au, 1 alltestbiotech.com, 1 +alltestbiotech.com.au, 1 +alltestselftest.com.au, 1 allthatblings.online, 1 allthebots.com, 1 allthefallen.moe, 1 +alltheplaces2go.com, 1 alltherapies.tk, 1 allthethings.co.nz, 1 allthewaynorth.xyz, 1 -allthings.me, 1 +allthings.me, 0 allthingshealthy.org, 1 allthingsroyal.nl, 1 allthingzit.com, 1 @@ -9927,9 +10037,8 @@ allur-club.cf, 1 allurebikerental.com, 1 allureclinic.pt, 1 alluremedicalaesthetic.com, 1 -allurescarves.com, 0 +allurescarves.com, 1 alluringdesigns.tk, 1 -alluriva.ch, 1 alluvion.studio, 1 allvideofoot.tk, 1 allvips.ru, 1 @@ -9945,13 +10054,13 @@ allxon.com, 1 allyachts.cf, 1 allyachts.gq, 1 allyfile.com, 1 -allywebsite.com, 1 +allyspot.com, 1 allyweds.com, 1 almaarkansas.gov, 1 +almaascosmetics.com, 1 almaatlantica.com, 0 almablanca.tk, 1 almabruk.com.ng, 1 -almacena.com.br, 1 almacenterwi.gov, 1 almacivica.org, 1 almadaria.com, 1 @@ -9959,26 +10068,24 @@ almadenglobal.com, 1 almagalla.com, 1 almaher-est.com, 1 almajaniyate.ga, 1 -almaleaders.net, 1 almalinux.org, 1 almanea.email, 1 almanea.family, 1 almanea.net, 1 almanea.org, 1 -almanilan.com, 1 +almanilan.com, 0 almanshood.com, 1 +almanyacv.com, 0 almanyada-denklik.de, 1 almanyada-denklik.info.tr, 1 almarail.tk, 1 almargen.ga, 1 almargen.tk, 1 -almaridgo.com, 1 almarin.es, 1 almark-baupartner.eu, 1 almasoft.ga, 1 almastabriz.com, 0 almatinki.com, 1 -almatirecompanies.com, 1 almatytips.com, 1 almawsoa.com, 1 almayadeen.education, 1 @@ -9987,6 +10094,7 @@ almaz-host.ml, 1 almaz-host.tk, 1 almaz-sait-rp.ml, 1 almazroueigroup.ae, 1 +almeera.online, 1 almeerajtour.com, 1 almeeraloyalty.com, 1 almeidaesilvaseguros.com.br, 1 @@ -9998,11 +10106,11 @@ almette.pl, 1 almeva.swiss, 1 almirahomes.com, 1 almirall.com, 1 +almiriatechstore.co.ke, 1 almirvuk.com, 1 almlab.tk, 1 almlc.gov, 1 almokhlifoud.com, 1 -almondville.com, 0 almorafestival.com, 1 almorinda.com, 1 almosis.tk, 1 @@ -10011,10 +10119,10 @@ almost.fit, 1 almost.gq, 1 almostobjective.com, 1 almouyasser.com, 1 -almufawd.ma, 1 -almusbahperfume.com, 0 +almusbahperfume.com, 1 almut-zielonka.de, 1 -almworks.com, 0 +almutawapharmacies.com.kw, 1 +almworks.com, 1 almx.net, 1 alnaharnews.net, 1 alng.me, 0 @@ -10026,6 +10134,7 @@ alodokita.com, 1 aloe-care.tk, 1 aloe-vera-info.tk, 1 aloemeda.de, 1 +aloesbienetre.be, 1 aloesoluciones.com.ar, 1 aloeveralisboa.pt, 1 alofone.vn, 1 @@ -10036,10 +10145,8 @@ alohotels.com, 1 alojadalu.com.br, 1 alola.co.uk, 1 alolabor.org, 1 -aloma.io, 1 alomch.gq, 1 alomendia.tk, 1 -alomobittersgh.com, 1 alonaku.com, 1 alonas.lv, 0 aloneg.ovh, 1 @@ -10051,10 +10158,11 @@ alonsoluzgas.es, 1 alonuocsuoi.com, 1 aloo.ga, 1 aloomic.com.au, 1 +alopezlawfirm.com, 1 +aloplay.io, 1 alorimusic.es, 1 aloris-controle.fr, 1 aloro.io, 1 -alotennis.ir, 1 alotso.com, 1 alottajava.com, 1 alov.blog, 1 @@ -10095,17 +10203,21 @@ alpes-revetements.com, 1 alpesc.com, 1 alpetrov.cf, 1 alpha-ag.ru, 1 +alpha-assistant.com, 1 +alpha-associates.ch, 1 alpha-bet.com.ua, 1 alpha-centauri.tk, 1 alpha-force.net, 0 alpha-ink.de, 1 alpha-kamera.de, 1 +alpha-shop.gr, 1 alpha.ch, 1 +alphaagency360.com, 1 alphaassurances.com, 1 alphabet-z.xyz, 1 alphabetsigns.com, 1 alphabit.gr, 1 -alphablueocean.com, 0 +alphablueocean.com, 1 alphabouncycastles.co.uk, 1 alphabrasloja.com.br, 1 alphabytes.uk, 0 @@ -10118,7 +10230,6 @@ alphadance.tk, 1 alphadefense.co.za, 1 alphadetroit.com.au, 1 alphadronten.tk, 1 -alphaeducation.edu.vn, 1 alphaetomega3d.fr, 1 alphagames.tk, 1 alphagrowth.io, 1 @@ -10154,7 +10265,7 @@ alphazure.co.uk, 1 alphazure.com, 1 alphimedia.com, 1 alphipneux.fr, 1 -alphline.com.sg, 0 +alphline.com.sg, 1 alphonso.tv, 1 alphotelmilano.it, 1 alpina-farben.de, 1 @@ -10168,7 +10279,6 @@ alpineplanet.com, 1 alpinepubliclibrary.org, 1 alpinestarmassage.com, 1 alpinewy.gov, 1 -alplink.eu, 1 alplogopedia.it, 1 alpparts.com, 1 alpstar.kiev.ua, 1 @@ -10183,11 +10293,11 @@ alrahman.de, 1 alrdc.com, 1 alre-outillage.fr, 1 alredaldaem.com, 1 +alredho.com, 1 alrehmantech.tk, 1 alrioart.com, 1 alroniks.com, 0 alrowadexchange.com, 1 -alrud.ru, 1 alsaagency.tk, 1 alsabil.tk, 1 alsace-informatique.shop, 1 @@ -10201,6 +10311,7 @@ alsonkaw.com, 1 alsops.cf, 1 alsteadnh.gov, 1 alstertouch.de, 1 +alt-met.ru, 1 alt-pannekow.de, 1 alt-three.com, 0 alt-til-windows.dk, 1 @@ -10216,7 +10327,6 @@ altabg.com, 1 altabib.me, 1 altabooks.ga, 1 altacomunicazione.tk, 1 -altadenadairy.com, 1 altaef-group.com, 1 altahrim.net, 1 altai-info.ga, 1 @@ -10229,7 +10339,6 @@ altai22.tk, 1 altaica.ru, 1 altair.com, 0 altairfp.es, 1 -altaius.com, 1 altaizemlya.cf, 1 altaizemlya.ga, 1 altaizemlya.ml, 1 @@ -10238,7 +10347,6 @@ altaleo.com, 1 altametrics.com, 1 altana.com, 1 altana.de, 1 -altansilver.de, 1 altaplana.be, 1 altarriba.fr, 1 altasierra.co.uk, 1 @@ -10304,7 +10412,9 @@ altes-sportamt.de, 1 altesses.eu, 1 alteva.services, 1 althacare.com, 0 +altharis.net, 1 althaus24.de, 1 +altheaarg.com.ar, 1 althi.nl, 1 althistory.ga, 1 alti-global.com, 1 @@ -10312,6 +10422,7 @@ altidrabat.dk, 1 altieresgomes.com.br, 1 altijdleroy.nl, 1 altijdleroy.online, 1 +altimetrik.com, 1 altimetrique.ca, 1 altimetry.com, 1 altinaypipes.com, 1 @@ -10348,8 +10459,6 @@ altos.tk, 1 altospam.net, 1 altovoltaggio.tk, 1 altoweb.tk, 1 -altphotos.com, 1 -altrabio.com, 1 altralamezia.tk, 1 altramarsala.tk, 1 altransport.ca, 1 @@ -10414,12 +10523,10 @@ alves-avocat.com, 1 alviano.com, 0 alvicom.hu, 1 alviere.com, 0 -alvies-laufbus.de, 1 alvimedika.com.ua, 1 alvinalvelino.com, 1 alvinaonline.com, 1 alvirzy.tk, 1 -alvixinsurance.com, 1 alvn.ga, 1 alvorada-rs.com.br, 1 alvordschools.org, 1 @@ -10431,8 +10538,8 @@ alwaysdata.com, 1 alwayshowher.tk, 1 alwayslookingyourbest.com, 1 alwaysmine.fi, 1 -alwaysonchat.com, 1 alwayspoweryoga.com, 1 +alwaysyouapp.com, 1 alwin.io, 1 alwistra.eu, 1 alwuz.com, 1 @@ -10442,8 +10549,9 @@ alxu.ca, 1 aly.pet, 1 alyafood.com, 1 alykkelife.com, 1 +alyoung.com, 1 alyssamilano.tk, 1 -alyusr.com.sa, 1 +alyusr.com.sa, 0 alyx.sh, 1 alza.at, 1 alza.co.uk, 1 @@ -10481,21 +10589,24 @@ amabiligranilhas.com, 1 amac.tv, 1 amacuk.co.uk, 1 amad-bargh.com, 1 +amadera.com, 1 amaderforum.tk, 1 amadeusproject.cf, 1 amadin.tk, 1 amadoraslindas.com, 1 amadorcoe.org, 1 amadorcounty.gov, 1 +amaeruinc.com, 1 amaforro.com, 1 amagdic.com, 1 amagical.net, 0 +amagiswap.com, 1 amagraduates.tk, 1 -amaiharajuku.com, 1 +amagroup.io, 1 +amagzine.com, 1 amaisd.org, 1 amaiz.com, 0 amalbansode.com, 1 -amaleki.com, 1 amalelmohtar.com, 0 amalfi5stars.com, 1 amalfipositanoboatrental.com, 1 @@ -10518,7 +10629,6 @@ amanet.ro, 1 amani-kinderdorf.de, 1 amanit.ch, 1 amanitae.eu, 1 -amansaw.com, 1 amansinghbhogal.com, 0 amanwithoutaname.com, 1 amanydesignstudio.com, 1 @@ -10566,11 +10676,13 @@ amayagrowth.fund, 1 amazarashi.com, 1 amazetimberfurniture.com.au, 1 amazfoods.com.ng, 1 +amazhot.com, 1 amazinations.com, 1 amazing-cars98.tk, 1 amazing-castles.co.uk, 1 amazing-maids.com, 1 amazingbusinessresults.com, 1 +amazingraymond.com, 1 amazingribs.com, 1 amazingsmilesfl.com, 1 amazingstore.gq, 1 @@ -10606,6 +10718,7 @@ amberalert.gov, 1 amberba.tk, 1 ambercaravalho.com, 1 amberddesign.com, 1 +amberesdetective.be, 1 amberhouse.cf, 1 amberhouse.ga, 1 amberhouse.gq, 1 @@ -10615,7 +10728,6 @@ amberonline.tk, 1 ambersafety.info, 1 ambersaur.com, 1 ambersoftware.co.uk, 1 -amberspace.cl, 1 amberstudent.com, 1 ambertears.tk, 1 ambiance.work, 1 @@ -10630,7 +10742,6 @@ ambisonia.com, 1 ambitionbox.com, 1 ambivalence.tk, 1 amblin.com, 1 -amboisenagy.freeboxos.fr, 1 ambor.com, 1 ambor.org, 1 ambouncyhire.com, 1 @@ -10648,6 +10759,7 @@ ambulanza.roma.it, 1 ambulanzapediatrica.it, 1 ambulanzaprivata.lombardia.it, 1 ambulanzaprivata.roma.it, 1 +ambulanzeprivate.milano.it, 1 ambulari.cz, 1 ambulatori.it, 1 amcanalense.tk, 1 @@ -10659,14 +10771,17 @@ amcham.mk, 0 amcharts.com, 1 amchronicle.com, 1 amcs.website, 0 +amd-agro.ru, 1 amdelisi.tk, 1 amdental.lv, 1 +amdiagnostic.com, 1 +amdiagnostics.co.nz, 1 amdiagnostics.com.au, 1 +amdiagnostics.net.au, 1 amdm.ru, 1 -amdmachines.com, 1 +amdmedical.com.au, 1 amdrumors.com, 1 amdukis-bordercollies.tk, 1 -amebaiot.com, 1 amebavirtual.tk, 1 amebolounge.tk, 1 amechancez.work, 1 @@ -10678,19 +10793,20 @@ ameego.net, 1 ameego.nl, 1 ameego.org, 1 ameen.tech, 1 +ameenaccounting.co.za, 1 ameeradubai.com, 1 amees.me, 0 +amefrec.co.jp, 1 ameho.me, 0 ameisenbaer.tk, 1 amelanchiers.tk, 1 amelia-wedding.pl, 1 -ameliagb.com, 1 -ameliastudio.co.uk, 1 ameliatillbryssel.se, 1 amelielei.net, 1 amello.de, 1 amemei9f-lists.top, 1 amempire.tk, 1 +amend.co, 1 amendine.fr, 1 amendonne.fr, 1 amenfis.com, 1 @@ -10714,12 +10830,15 @@ americamilitar.com, 1 american-automotive.tk, 1 american-school-search.com, 1 americanaatbrand.com, 1 +americanac.net, 1 +americanacrylicaward.com, 1 +americanartwarehouse.com, 1 americanbooks.cf, 1 americanbuzz.tk, 1 americancanyon.gov, 1 americancasinoguide.shop, 1 americanclimatecorps.gov, 1 -americancraftsman.net, 1 +americancrane.com, 1 americandisinfectingassociation.com, 1 americandisinfectingassociation.org, 1 americandrugrehabs.com, 1 @@ -10730,7 +10849,6 @@ americanfootball.ml, 1 americanfootball.tk, 1 americanfreight.com, 1 americangods.tk, 1 -americanhomelandtitle.com, 1 americanimageawards.com, 1 americaninsuranceplus.ml, 1 americankickoff.ga, 1 @@ -10738,6 +10856,7 @@ americanlegaltranscription.com, 1 americanmessaging.net, 1 americanmusical.com, 0 americanoncology.com, 1 +americanpointer.co, 1 americanpop.be, 1 americanpridefund.com, 1 americanreels.com, 1 @@ -10762,6 +10881,7 @@ americorpsoig.gov, 1 ameridial.com, 1 ameriglasscontractors.com, 1 amerigroup.com, 1 +amerigrouphealthyliving.com, 1 ameriikanpoijat.org, 1 amerikanloto.tk, 1 amerikasepetim.com, 1 @@ -10784,7 +10904,7 @@ amethystbodyart.co.za, 1 amethystcards.co.uk, 1 amethystdevelopment.co.uk, 1 amethystwebsitedesign.com, 1 -ametinsurance.com, 0 +ametinsurance.com, 1 ametrin.biz, 1 amexemp.com, 1 amf.rocks, 1 @@ -10836,6 +10956,7 @@ amigosdelvalenciadeastorga.tk, 1 amigosencanada.com, 1 amigosgranada4050.tk, 1 amihousebuyers.com, 1 +amikekszunkjatek.hu, 1 amilaresort.com, 0 amilcalcados.com.br, 1 amilesportes.com.br, 1 @@ -10843,12 +10964,11 @@ amilum.org, 1 amimi.tk, 1 amimore.ru, 1 aminafrance.com, 1 -aminatakondeh.me, 1 +amindigital.uk, 1 amineptine.com, 1 aminfarhoodi.tk, 1 aminformatica.ml, 1 aminformatica.tk, 1 -aminhasecretaria.com.br, 1 aminko.ga, 1 aminoro.de, 1 aminos.tk, 1 @@ -10864,7 +10984,9 @@ amirarsalan.tk, 1 amirasyraf.com, 0 amirautos.com, 0 amirhanova-a.ru, 1 +amirhosseinabutalebi.com, 1 amirkaraj.tk, 1 +amirmarketanzali.ir, 1 amis-du-cinema.com, 1 amis-sh.fr, 1 amisdelemm.fr, 1 @@ -10881,6 +11003,7 @@ amitt.ga, 1 amityhealthcaregroup.com, 1 amityvillepdny.gov, 1 amitywebsitedesign.com, 0 +amiv.ch, 1 amjaadabdullah.com, 1 amjesusdespojado.tk, 1 amlakzibakenar.com, 1 @@ -10888,6 +11011,7 @@ amleather.pl, 1 amliorefemme.tk, 1 amlisten.com, 1 amlops.com.au, 1 +amm-ceramics.com, 1 ammanagingdirectors.com, 1 amministratore.biz, 1 amministratore.roma.it, 1 @@ -10913,7 +11037,7 @@ amoatuaexistencia.com.br, 1 amobileway.co.uk, 1 amoc.org, 1 amodeocarlo.com, 1 -amoebababy.eu, 1 +amoderm.com, 1 amoeboids.com, 1 amogus.cloud, 1 amokinio.com, 1 @@ -10923,22 +11047,26 @@ amolare.com.br, 1 amoliogames.com, 1 amollare.com.br, 1 amon.tech, 1 -amonat-architektur.de, 1 among-us.me, 0 amongus-guru.ru, 1 +amongusmerch.co, 1 amoozesh98.ir, 1 amoralizm.tk, 1 amoramorena.blog.br, 1 amoraquatropatas.org, 1 amordoce.com, 1 amorecivilizedage.net, 1 +amorekids.es, 1 amoremportugal.pt, 1 amoresexo.pt, 1 amorfestival.com, 1 +amorgos-aegialis.com, 1 amorgosrentandgo.gr, 1 amorim.ca, 1 amoroso-vivace.ch, 1 +amorph.aero, 1 amorphis.tk, 1 +amorphsys.com, 1 amorszexshop.hu, 1 amortyzator.tk, 1 amorxyoga.com, 1 @@ -10946,7 +11074,7 @@ amorymerced.tk, 1 amoryurgentcare.com, 1 amos.ovh, 1 amosca.tk, 1 -amotarget.com, 1 +amotarget.com, 0 amotive.shop, 1 amoursucre.com, 1 amoxicillin-500mg.ga, 1 @@ -10983,7 +11111,6 @@ ampicillin.ga, 1 ampicillin.ml, 1 ampicilliniv.tk, 1 ampicillinonline.gq, 1 -amplasa.com, 1 amplead.com, 1 ampledesigners.com, 1 ampleinfographics.com, 1 @@ -11004,7 +11131,6 @@ amputatedgenitals.tk, 1 amr.de, 1 amrctraining.co.uk, 1 amrealtypr.com, 1 -amres.pl, 1 amri.nl, 1 amrita.club, 1 amritps.com, 1 @@ -11025,7 +11151,6 @@ amstelveentje.nl, 1 amsterdam.nl, 1 amsterdam4u.tk, 1 amsterdam5.nl, 1 -amsterdambudgethotel.nl, 1 amsterdamian.com, 1 amsterdamnightlifeticket.com, 1 amsterdamsebos.nl, 1 @@ -11033,6 +11158,7 @@ amsterdamtype.nl, 1 amsterdamtypography.nl, 1 amstudiorecording.com, 1 amsuisse.com, 0 +amt-nj.com, 1 amt-taxfrance.com, 1 amtdb.org, 1 amtek.au, 1 @@ -11052,6 +11178,7 @@ amuq.net, 1 amur-news.net, 1 amur-photo.ml, 1 amur.tk, 1 +amusa.cl, 1 amush.vip, 1 amvip9.com, 1 amvisor.com, 1 @@ -11069,6 +11196,8 @@ amymartiraphotography.com, 1 amyred.net, 1 amyria.jp, 1 amyrussellhair.com, 1 +amyshao.cn, 1 +amysnotdrunk.com, 1 amytuarez.ga, 1 amytuarez.gq, 1 amytuarez.ml, 1 @@ -11152,6 +11281,7 @@ analystexamers.ga, 1 analysts.com, 1 analytics-media.com, 1 analyticscanvas.com, 1 +analyticsinmotion.com, 1 analyticum.at, 1 analyticum.com, 1 analyticum.de, 1 @@ -11170,8 +11300,8 @@ anandmaratha.com, 1 anangeix.tk, 1 anantshri.info, 1 ananyagupta.tk, 1 +anaprieto.com, 1 anapsi.tk, 1 -anaquadrada.com, 1 anar.biz, 0 anarajaoui.ma, 1 anarcasmetalicos.tk, 1 @@ -11218,6 +11348,7 @@ anayahuasca.com.br, 1 anayarealm.com, 1 anb.com, 1 anbaicreative.com, 1 +anbank.pl, 1 anbesabank.com, 1 anbigift.nl, 1 anblife.com, 1 @@ -11253,16 +11384,13 @@ anchr.io, 1 anciennes-automobiles.fr, 1 anciens.org, 1 ancient-gates.de, 1 -ancient-pain-tattoo.de, 1 ancientlorevillage.com, 1 ancientnorth.com, 1 ancientnorth.nl, 1 -ancitus.com, 1 anclarma.fr, 1 anco.ly, 1 ancolies-andre.com, 0 anconatoday.it, 1 -ancourage.academy, 1 ancuong.com, 1 and-stuff.nl, 1 and-tax.jp, 1 @@ -11282,6 +11410,7 @@ anderskp.dk, 0 andersoncountytn.gov, 1 andersonenergy.com.au, 1 andersonkelly.com, 1 +andersonlegal.co, 1 andersonmanufacturing.com, 1 andersonpowerservices.com, 0 andersonshatch.com, 1 @@ -11296,12 +11425,11 @@ andesnevadotours.com, 1 andesnewyork.gov, 1 andeticaret.com, 1 andfaraway.tk, 1 +andfrankly.com, 1 andge.site, 1 -andhania.one, 1 andhrawishesh.com, 1 andiamoluggage.com, 1 andibo.net, 1 -andin.art, 1 andiplusben.com, 1 andis.com, 1 andisadhdspot.com, 1 @@ -11310,6 +11438,7 @@ andnet.tk, 1 andoaingo-gaztetxea.tk, 1 andobil.com, 1 andoms.fi, 1 +andonivr.com, 1 andonix.com, 1 andorraimperial.tk, 1 andorrainsiders.com, 1 @@ -11318,6 +11447,7 @@ andos.tk, 1 andouillette-thierry.fr, 1 andoyasuyuki.com, 1 andr-mobile.tk, 1 +andradealbuquerque.pt, 1 andragon.tk, 1 andrasnagy.com, 1 andrasnagy.eu, 1 @@ -11333,12 +11463,12 @@ andrea-m.me, 1 andrea-wirthensohn.at, 0 andreaalloway.com, 1 andreaboero.it, 0 +andreacarreno.com, 1 andreae.nl, 1 andreafruggi.it, 1 andreagiusti.tk, 1 andreagobetti.com, 1 andreagourmet.it, 1 -andrealagro.nl, 1 andrealand.sk, 1 andreamcnett.com, 0 andreapalermo.tk, 1 @@ -11356,6 +11486,7 @@ andreaskluge.eu, 1 andreaskrasa.com, 1 andreaslicht.nl, 1 andreasolsson.se, 1 +andreatedeschi.it, 1 andrecanuto.com.br, 1 andrecarvalho.net.br, 1 andredaus.com, 1 @@ -11369,17 +11500,15 @@ andreihodorog.com, 1 andreiluca.com, 1 andrejbenz.com, 1 andremaciel.pt, 1 -andremalraux.com, 0 +andremalraux.com, 1 andrematosband.tk, 1 -andrenguyenvanchau.com, 1 andreoliveira.io, 1 -andreotti-furniture.com, 1 andrepicard.de, 1 andresbandb.tk, 1 andrescuartas.tk, 1 andresgarciapersonal.com, 1 andresgarciapersonal.es, 1 -andresgarzon.net, 0 +andresgarzon.net, 1 andresguiarealtor.com, 1 andresparra.com.ar, 1 andrespaz.com, 1 @@ -11388,8 +11517,6 @@ andressaflores.com.br, 1 andresvillanueva.mx, 1 andresxmd.eu, 1 andreundnina.de, 0 -andrew-lazarev.com, 1 -andrew-lazarev.top, 1 andrew.eu.org, 1 andrew.fi, 1 andrewazzopardi.org, 1 @@ -11406,7 +11533,7 @@ andrewglucas.net, 1 andrewhillphotography.com, 1 andrewimeson.com, 1 andrewin.ru, 1 -andrewlazarev.kh.ua, 1 +andrewledwith.com, 1 andrewlloydwebberfoundation.com, 1 andrewmcfarlane.tk, 1 andrewmichaelsmith.com, 1 @@ -11438,6 +11565,7 @@ andrianova.ml, 1 andriekus.tk, 1 andrienko.tk, 1 andrija-gradecak.from.hr, 1 +andro4all.com, 1 android, 1 android-10-inch-tablets.tk, 1 android-center.tk, 1 @@ -11447,14 +11575,13 @@ android-gamers.tk, 1 android-hit.ml, 1 android-it.cf, 1 android-mt.com, 1 -android-profis.de, 1 android-soft.gq, 1 android-tv.3utilities.com, 1 android-tv.ml, 1 android.com.pl, 1 android.re, 1 -androidapkdata.org, 1 androidcrunch.com, 1 +androidfactory.io, 1 androidfinal.com, 1 androidgaming.tk, 1 androidhack.tk, 1 @@ -11481,7 +11608,6 @@ androidwale.ga, 1 androidwedakarayo.com, 1 androidweekly.net, 1 androidworld.nl, 1 -androidworld.pt, 1 androidzone.me, 1 androlab.tk, 1 andromeda.se, 1 @@ -11489,8 +11615,7 @@ andropia-online.fr, 1 androscoggincountyema.gov, 1 androskylugo.com, 0 androtix.com, 1 -andrzej-na-rowerze.pl, 1 -andrzejnarowerze.pl, 1 +andrush.eu, 1 andscape.com, 1 andsecure.ch, 0 andthisismyodyssey.tk, 1 @@ -11516,7 +11641,6 @@ andyseducation.com, 1 andysmith.tk, 1 andysroom.dynu.net, 1 andyt.eu, 1 -andytech.ru, 1 andythomasonline.tk, 1 andythomsonbooks.ca, 0 andytsoi.nyc, 1 @@ -11524,6 +11648,7 @@ andyvandermeyde.tk, 1 andywalkeronline.tk, 1 andywilliamsonline.tk, 1 andzia.art.pl, 1 +aneclab.cz, 1 anecuni-club.com, 1 anecuni-rec.com, 1 anedot-sandbox.com, 1 @@ -11554,9 +11679,9 @@ anewlife.it, 1 anewperspectiveconstruction.com, 1 anex.us, 1 anexperimentedblog.tk, 1 -anextraordinaryday.net, 1 anfadern.com, 1 anfieldbc.co.uk, 1 +anfilada.info, 1 anfr.fr, 1 anfra.fi, 1 angablade.com, 1 @@ -11564,10 +11689,10 @@ angarstroy.com, 1 ange-de-bonheur444.com, 1 angel-body.com, 1 angel-jrk.com, 1 -angel-serv.com, 1 angel-wing.jp, 1 angela.baby, 1 angelaheck.com, 1 +angelal.cc, 1 angelalombardo.it, 1 angelarellano.tk, 1 angelbridge.jp, 1 @@ -11598,7 +11723,6 @@ angellswesternwear.com, 1 angelo4ek.tk, 1 angeloangioi.tk, 1 angeloroelen.tk, 1 -angelpage.co.uk, 1 angelremigene.com, 0 angelsanctum.tk, 1 angelsandairwaves.tk, 1 @@ -11609,6 +11733,7 @@ angelsdecay.tk, 1 angelsgirl.eu.org, 1 angelshha.com, 1 angelsmile.tk, 1 +angelsmithphotography.com, 1 angelspetfuneralhome.com, 1 angelswar.ga, 1 angeltorri.tk, 1 @@ -11619,7 +11744,7 @@ angepsychedelices.tk, 1 angeredmoon.tk, 1 angermanalvorna.tk, 1 angestoepselt.de, 1 -angie-webdesign.ch, 1 +angie-webdesign.ch, 0 angiejones.com, 1 angielynx.net, 1 angiesite.tk, 1 @@ -11628,17 +11753,20 @@ angiolinikids.it, 1 angione.ca, 1 angione.se, 1 angisonline.cz, 1 -angiszi.hu, 1 angkapaito.net, 1 angkasa.net.id, 1 anglarsports.com, 1 +angleformation.com, 1 angleline.cn, 1 anglersconservation.net, 1 anglertanke.de, 1 anglesey-holiday-lettings.com, 1 +anglesya.win, 1 anglicimo.fr, 1 anglictina-sojcak.cz, 1 anglictinasojcak.cz, 1 +anglingactive.co.uk, 0 +anglingnewfoundlandlabrador.com, 0 anglirl.eu.org, 1 angloeastern.com, 1 anglogoldashanti.com, 1 @@ -11662,14 +11790,11 @@ angular-js.ga, 1 angusandperthpgl.tk, 1 angusbarn.com, 1 anh-dv.com, 1 -anhaffen.lu, 1 +anhaffen.lu, 0 anhangabau.com, 1 anhdvboot.com, 1 anhdvshop.com, 1 anhembi.br, 1 -anhoa.edu.vn, 1 -anhtus.com, 1 -anhtus.vn, 1 ani-man.de, 1 aniababan.com, 1 aniabuduje.pl, 1 @@ -11683,13 +11808,14 @@ anievo.id, 0 aniforprez.net, 1 anightmareonelmstreet.tk, 1 anihilated.tk, 1 +anihime.com, 1 anihonetwallpaper.com, 1 anikajulie.com, 1 anikaras.ga, 1 -anikenji.live, 1 anikschwall.com, 1 anilom.tk, 1 anim.ee, 1 +anima.digital, 1 anima.nz, 1 animaalternative.it, 1 animac.fr, 1 @@ -11733,6 +11859,9 @@ animan.ca, 1 animanganetwork.tk, 1 animaproduksiyon.com.tr, 1 animari.at, 1 +animari.ch, 1 +animari.de, 1 +animari.eu, 1 animasencia.tk, 1 animashka.tk, 1 animataz.ga, 1 @@ -11817,7 +11946,6 @@ aniplus.cf, 1 aniplus.gq, 1 anishathalye.com, 1 anishnayak.com, 1 -anishostore.com, 1 anisimov.ml, 1 anisotomatikkapi.com, 1 anitaalbersen.nl, 1 @@ -11839,7 +11967,6 @@ anjajoerger.life, 1 anjansundaram.com, 1 anjara.eu, 1 anjocerdena.com, 1 -anjtransportsolutions.com.au, 1 anjunexpress.com.br, 1 ankane.org, 1 ankaraarabakiralama.com.tr, 1 @@ -11863,9 +11990,7 @@ ankaraotomobilcikmaparca.com.tr, 1 ankaraotomobilyedekparca.com, 1 ankaraotomobilyedekparca.com.tr, 1 ankaraotoparca.com.tr, 1 -ankaraparts.com.tr, 1 ankararentacar.name.tr, 1 -ankarasaglikkabini.com, 1 ankaraseo.name.tr, 1 ankarasoket.com.tr, 1 ankarasondajkuyusutemizleme.com, 1 @@ -11875,7 +12000,6 @@ ankarawebtasarim.name.tr, 1 ankarawebtasarim.tk, 1 ankarayedek.com.tr, 1 anker-wladyslawowo.pl, 1 -anker.pk, 1 anketlekazan.net, 1 ankicozmorobot.com, 1 ankitpati.in, 1 @@ -11883,7 +12007,7 @@ ankitverma.me, 1 ankiuser.net, 1 ankiweb.net, 1 anklepainclinic.sg, 1 -ankorltd.ru, 1 +anklesdown.com, 0 ankos.cf, 1 ankosofttech.com, 1 ankosofttech.de, 1 @@ -11912,7 +12036,10 @@ annadebrux.cf, 1 annadebrux.ga, 1 annadebrux.gq, 1 annadebrux.ml, 1 +annaenemma.nl, 1 annafiore.com.br, 1 +annainstitute.org, 1 +annalaudel.gallery, 1 annaleon.tk, 1 annalisefashion.ga, 1 annalouise.tk, 1 @@ -11953,7 +12080,6 @@ annetta.com, 1 annettewindlin.ch, 1 annevankesteren.nl, 1 annevankesteren.org, 1 -annexvault.com, 1 anney-life.com, 1 anniangel-porn.com, 1 annicascakes.nl, 1 @@ -11982,6 +12108,7 @@ anns.eu, 1 annu.tk, 1 annuaire-auto-ecole.com, 1 annuaire-express.tk, 1 +annuaire404.com, 1 annual.ga, 1 annualreportowl.com, 1 annuire.org, 1 @@ -12009,6 +12136,7 @@ anonaddy.me, 1 anonase.com, 1 anoncrypto.org, 1 anoneko.com, 1 +anonhq.com, 1 anonicloud.ch, 1 anoniem-domein.nl, 1 anonimizers.tk, 1 @@ -12016,6 +12144,7 @@ anonmega.tk, 1 anonofficial.tk, 1 anonrea.ch, 1 anons.fr, 0 +anonsegazeta.pl, 1 anonser.tk, 1 anonwonders.tk, 1 anonybus.com, 1 @@ -12032,8 +12161,6 @@ anorak.tech, 1 anorbank.uz, 1 anordinaryhousewife.com, 1 anorexia-nervosa.tk, 1 -anoria.com, 0 -anosh.se, 1 another.ch, 1 anotherchatsworthfarm.org.uk, 1 anotherfatgeek.net, 1 @@ -12048,15 +12175,17 @@ anoual-lycee.tk, 1 anouncer.ga, 1 anova.com, 1 anoxinon.media, 1 +anp.it, 1 anpaju.gq, 1 -anqr.link, 1 +anpigabon.ga, 1 anquankongjian.com, 1 anquanssl.com, 1 +anrworldwide.com, 1 ans-ge.ch, 0 ans-solutions.com, 1 -ansacaribbeanawards.com, 0 +ansacaribbeanawards.com, 1 ansacoatings.com, 1 -ansamcalfoundation.org, 0 +ansamcalfoundation.org, 1 ansas.net, 0 ansdell.net, 1 anseldam.com, 1 @@ -12068,14 +12197,13 @@ ansgarsonntag.de, 1 anshar.eu, 1 anshdigiinfoways.com, 1 anshlag.co.il, 1 +anshulg.com, 1 ansibeast.net, 1 ansichtssache.at, 1 ansoffmatrix.com, 1 ansogning-sg.dk, 1 -anson.ng, 1 anson.ru, 0 ansoncountync.gov, 1 -ansonng.com, 1 ansperformance.eu, 1 ansrivarr.net, 1 anssl.cn, 1 @@ -12104,12 +12232,13 @@ antalyaescortyaren.tk, 1 antalyaetkinlikleri.com, 1 antalyahomes.com, 1 antalyamasajsalonu.gq, 1 +antama.eu, 1 +antama.nl, 1 antanavagefarbiarz.com, 1 antani.cloud, 1 antarcti.co, 1 antarctida.tk, 1 antaresmedia.com.py, 1 -antaressystems.net, 1 antarktida.ru, 1 antarktida.tk, 1 antarlina.com, 1 @@ -12163,13 +12292,12 @@ anthonytimbers.com, 1 anthonytoday.com, 1 anthonytutorials.tk, 1 anthonyvadala.me, 1 -anthos.space, 1 anthrene-traitement.fr, 1 anthro.asia, 1 anthrocon.com, 1 anthrocon.net, 1 anthrocon.org, 1 -anthroper.com, 0 +anthroper.com, 1 anthropoid.ca, 1 anti-akw-ac.de, 1 anti-civilisation.tk, 1 @@ -12219,10 +12347,10 @@ antifaschistische-linke.tk, 1 antifaschistischeaktioncelle.tk, 1 antifilter.network, 1 antiformiche.it, 1 -antifragilepower.com, 1 antifraud.cf, 1 antifraudcentre-centreantifraude.ca, 1 antifurti.roma.it, 1 +antigenselftest.com.au, 1 antigravity.cf, 1 antihelp-tomsk.tk, 1 antihistory.cf, 1 @@ -12231,9 +12359,11 @@ antihistory.gq, 1 antihistory.ml, 1 antihype.space, 1 antijob.tk, 1 +antik-trodelmarkt.de, 1 antikfloors.ga, 1 antikfloors.gq, 1 antikfloors.ml, 1 +antikskupka.ru, 1 antikvar-i-ya.tk, 1 antikvar-net.tk, 1 antikvariat22.cz, 1 @@ -12289,7 +12419,6 @@ antoinat.fr, 1 antoine-data.tk, 1 antoined.fr, 0 antoinedeschenes.com, 1 -antoineleboyer.com, 1 antoinelounis.com, 1 antoinelounis.xyz, 1 antoineschaller.ch, 0 @@ -12309,6 +12438,7 @@ antonioffernandez.com, 1 antoniojr.adv.br, 1 antoniolatimore.com, 1 antoniomarques.eu, 1 +antoniorodriguesadv.com.br, 1 antonios.ch, 1 antonioso.ng, 1 antonioucabinets.com.au, 1 @@ -12332,13 +12462,14 @@ antrimcountymi.gov, 1 antrimnh.gov, 1 antrodiulisse.eu, 0 antroposofica.com.br, 1 -antropoteosofija.lt, 1 ants-and-me.ml, 1 ants-carte-grise.fr, 1 antsa.cc, 1 antsa.duckdns.org, 1 antstoolbox.com, 1 antti.codes, 1 +antts.uk, 1 +antts.xyz, 1 antunes.com, 1 anturis.com, 1 antwerpist.com, 1 @@ -12358,7 +12489,6 @@ anvilmetal.tk, 1 anvilo.com, 1 anvilsales.tk, 1 anvilsecure.com, 1 -anvimall.vn, 1 anvish.in, 0 anvp.org, 1 anwalt-website.de, 1 @@ -12382,7 +12512,6 @@ any-id.online, 1 any-id.store, 1 any-link-page.de, 1 anya-carter.com, 1 -anya.beauty, 1 anyad.at, 1 anyboat.com.au, 1 anybodylistening.net, 1 @@ -12403,6 +12532,7 @@ anyilin.cn, 1 anyma.it, 1 anymatch.ai, 1 anyone.cf, 1 +anyortvet.ru, 1 anypeer.net, 1 anyplant.ga, 1 anyprime.net, 1 @@ -12416,6 +12546,8 @@ anyshapemusic.com, 1 anyshow.ga, 1 anystack.xyz, 1 anythingforsports.com, 1 +anytimefitness.co.in, 1 +anytimefitness.nl, 1 anytimefundingers.ga, 1 anytimefundingest.ga, 1 anytimeoffices.ga, 1 @@ -12431,7 +12563,6 @@ anzimatech.com, 0 anzing.de, 1 anzio.ca, 1 anztb.org, 1 -ao-gp.org, 1 ao2.it, 1 ao27.net, 1 ao6.works, 1 @@ -12439,7 +12570,6 @@ aoa.gov, 1 aoa2.ch, 1 aoadatacommunity.us, 1 aoaprograms.net, 1 -aobaetmo.com, 1 aobogo.com, 1 aod-tech.com, 1 aodisco.co.uk, 1 @@ -12448,15 +12578,18 @@ aoemobilehub.com, 1 aoeuaoeu.com, 1 aofusa.me, 1 aofusa.net, 1 +aogas.co.za, 0 aogph.org, 1 aoicprobationil.gov, 1 aoil.gr, 1 aojf.fr, 1 aok.network, 1 aokae.com, 1 -aoken-cf.jp, 1 +aoku3d.com, 0 +aolcollege.com, 1 aomar-mohammedi.tk, 1 aomeikey.org, 0 +aonedatasolution.com, 1 aonhewitt.com.cy, 1 aonhewitt.gr, 1 aonk.bg, 1 @@ -12475,12 +12608,15 @@ aoshiya.com, 1 aosoracafe.com, 1 aostacarnavals.it, 1 aosus.org, 1 +aotearoa.maori.nz, 1 aotearoafreepress.com, 1 aotearoaleaks.org, 0 aotech.tw, 1 aotopo.com, 1 aova.loan, 1 +aoyadaily2024.com, 1 aoyagi-farm.jp, 1 +aoyama-azabu-dc.com, 1 aoyamacc.co.jp, 1 ap-auto.pl, 1 ap-bg.eu, 1 @@ -12498,7 +12634,6 @@ apachelounge.com, 1 apachetoday.com, 1 apadmi.com, 0 apadrinaunolivo.org, 1 -apaeilha.org.br, 1 apaesthetics.com, 1 apaleo.com, 1 apambiente.pt, 1 @@ -12513,6 +12648,7 @@ apartmentregister.com.au, 1 apartments-promajna.tk, 1 apartments.co.nz, 1 apartrentrotterdam.nl, 1 +apartyakamoz.com, 1 apatransport.com, 1 apbassettsolicitors.co.uk, 1 apbforum.tk, 1 @@ -12524,9 +12660,9 @@ apcdistri.com, 1 apcmc.pt, 1 apcomputersciencetutoring.com, 1 apcoworldwide.com, 1 +apcw.org, 1 apdfawl.com, 0 apdigital.tech, 1 -apdportal.com, 1 apdtalents.org.tw, 1 apea.com, 1 apec.fr, 1 @@ -12547,8 +12683,8 @@ aperioadvice.ga, 1 aperiomoney.ga, 1 aperiotaxation.ga, 1 apert.be, 1 -aperta.ro, 0 -aperta.shop, 0 +aperta.ro, 1 +aperta.shop, 1 apertis.org, 0 aperto-nota.eu, 0 aperto.de, 1 @@ -12565,6 +12701,8 @@ apex-promotion.com, 1 apex-writers.com, 1 apex.ac, 1 apex.aw, 1 +apexchain-dev.com, 1 +apexchimneyrepairs.com, 1 apexconsulting.io, 1 apexes.co.jp, 1 apexfacades.com.au, 1 @@ -12576,15 +12714,12 @@ apexnc.gov, 1 apexperformancegym.com, 0 apexpreciousmetals.com, 1 apexremovablecovers.com, 1 -apextrailers.co.za, 0 +apextrailers.co.za, 1 apextray.com, 1 apexweb.ru, 1 -apfellike.com, 1 -apfelnews.de, 1 -apfelpage.de, 1 -apfelrat.de, 1 apfhaiti.org, 1 apfm.fr, 1 +apfulfilment.com, 1 apgen.org, 1 apgw.jp, 1 aphantasiac.com, 1 @@ -12600,7 +12735,6 @@ api.lookout.com, 1 api.org.tr, 1 api.recurly.com, 1 api.saxo, 1 -api.spa, 1 api.tr, 1 api2cart.com, 1 api42.ch, 1 @@ -12613,9 +12747,9 @@ apicep.com, 1 apico-fish.ru, 1 apicoltore.it, 1 apiculture.net, 1 +apido.de, 1 apienergisahomol.com, 1 apifiregroup.com, 1 -apifreaks.com, 1 apigb.com, 1 apigee.com, 1 apigroupinc.com, 1 @@ -12627,6 +12761,7 @@ apils.org, 1 apimon.de, 1 apimoveisorocaba.com.br, 1 apinat.de, 1 +apination.com, 1 apio.systems, 1 apiora.ru, 1 apiordie.com, 1 @@ -12649,9 +12784,7 @@ apixplatform.com, 1 apk-world.cf, 1 apk.li, 1 apk4fun.com, 1 -apkapp.ru, 1 apkdv.com, 0 -apkishop.com, 1 apkmint.co, 1 apkmody.io, 1 apkod.com, 1 @@ -12671,6 +12804,7 @@ aplus.mn, 1 aplusdownload.com, 1 aplusfactoring.com, 1 aplusteachingresources.com.au, 1 +aplusz.nl, 1 aply.plus, 1 apmdd.org, 1 apmhealth.com, 1 @@ -12703,7 +12837,8 @@ apoioterapeutico.com, 1 apokalipsis.tk, 1 apola.best, 1 apolitical.co, 1 -apollo.dog, 1 +apolloautopecas.com.br, 1 +apollocare.com, 1 apollodiet.com, 1 apollogames.cz, 1 apolloheatingandair.com, 0 @@ -12727,6 +12862,7 @@ aponkral.org, 1 aponkral.org.tr, 1 aponkral.tr, 1 aponow.de, 0 +aponte-systems.com, 1 apophisen.fr, 1 apopka.gov, 1 apoportal.de, 1 @@ -12790,6 +12926,7 @@ appartamento.tk, 1 appartement-evolene.net, 0 appartement-oostduinkerke.tk, 1 appartementhaus-am-uke.de, 1 +appartementhaus-badria.de, 1 appartementspanje.tk, 1 appartementvlissingen.tk, 1 appartenfrance.com, 1 @@ -12813,7 +12950,6 @@ appgeek.com.br, 1 appgrowing.cn, 1 appgrowing.net, 1 appgurus.com.au, 1 -apphandoff.com, 1 appian-cdn-gov.com, 1 appian-cdn.com, 1 appiancloud-dynamic.com, 1 @@ -12828,6 +12964,7 @@ appingrove.com.au, 1 appinplace.com.au, 1 appinsnap.com, 1 appinvalley.com.au, 1 +appisoftsas.com, 1 appjobs.com, 1 appkc9.com, 0 apple-droid.com, 1 @@ -12852,6 +12989,7 @@ applegun.com, 1 appleii-box.de, 1 applejacks-bouncy-castles.co.uk, 1 applemaclover.tk, 1 +appleminded.org, 1 applemon.com, 1 applemon.net, 1 applemon.org, 1 @@ -12869,7 +13007,6 @@ appletonmn.gov, 1 appletonwi.gov, 1 appletree.is, 1 appletreemedicalgroup.com, 1 -appletutorials.de, 1 applevalleyca.gov, 1 applewatch.co.nz, 1 applian.com, 1 @@ -12881,7 +13018,6 @@ applicationmanager.gov, 1 applicationtracker.com, 1 applied-anthropology.com, 1 applied-privacy.net, 1 -appliedinnovationinc.com, 1 appliedmaths.lk, 1 appliedprinciples.co.ke, 1 appliedresearchanddesign.com, 1 @@ -12891,7 +13027,6 @@ applingcounty.gov, 1 applique.co.jp, 0 appliquette.com.au, 1 appllio.com, 1 -applogytel.es, 1 apploye.com, 0 apply.eu, 1 apply55gx.com, 1 @@ -12907,9 +13042,11 @@ appninjas.com, 1 appo.nl, 1 appodeal.com, 1 appoggiature.fr, 1 +appointible.com, 1 appointment.ga, 1 apponic.com, 1 apponline.com, 1 +appopay.com, 1 apppage.net, 1 appperformance.com.br, 1 appraf.com, 1 @@ -12938,8 +13075,6 @@ appsbd.com, 1 appscan360.net, 1 appscan360.org, 1 appscem.mx, 1 -appscinated.eu, 1 -appscinated.net, 1 appscloudplus.com, 1 appsdock.de, 1 appsecmonkey.com, 0 @@ -12969,6 +13104,7 @@ appuntisulblog.it, 1 appunwrapped.com, 1 appveyor.com, 1 appwardbeta.com, 1 +appwhats.space, 0 appworld.ga, 1 appwrk.com, 1 appypie.com, 1 @@ -12980,10 +13116,8 @@ aprende.com, 1 aprendealvuelo.com, 1 aprendejainternet.tk, 1 aprendele.com, 1 -aprenderalemanonline.com.ar, 1 aprenderjuntos.cl, 1 aprendiendoforexhoy.com, 1 -aprendo.com.py, 1 apresski-pictures.tk, 1 apresskistuntteam.tk, 1 apretatuercas.es, 1 @@ -13006,6 +13140,7 @@ apropotv.ro, 0 apropotv.tk, 1 aprosoftwaresolutions.com, 1 aprovatotal.com.br, 1 +aprpullmanportermuseum.org, 0 aprsdroid.org, 1 apruebame.tech, 1 apruvd.com, 1 @@ -13021,9 +13156,11 @@ apspayroll.com, 1 apsprofessions.gov.au, 0 apsreform.gov.au, 0 apsreview.gov.au, 1 +apssb.in, 1 apssolucoesfinanceiras.online, 1 apstats.tk, 1 apstecnologia.com, 1 +apstudynotes.org, 1 apstylebook.com, 1 apsua.tk, 1 apt-one.com, 1 @@ -13055,7 +13192,6 @@ apviz.io, 1 apw-dortmund.de, 1 aqarategypt.com, 1 aqarbab.com, 1 -aqas-arch.de, 1 aqas.de, 1 aqdlt.tv, 1 aqdun.com, 0 @@ -13077,7 +13213,6 @@ aqua-oxygene.fr, 0 aqua-print.com.ua, 1 aqua-richtig.de, 1 aquababy.at, 1 -aquabara.com, 1 aquabiodesign.tk, 1 aquablue.tk, 1 aquabotanic.tk, 1 @@ -13085,7 +13220,6 @@ aquabyte.co.uk, 1 aquabyte.net, 1 aquacapsule.cf, 1 aquacitylands.com, 1 -aquaco.dk, 1 aquacomms.com, 1 aquadarts.tk, 1 aquadecor.cf, 1 @@ -13100,7 +13234,7 @@ aquagino.nl, 1 aquahill.net, 1 aquaholic.tk, 1 aquaist.com, 1 -aqualab.com, 0 +aqualab.com, 1 aqualantic.de, 1 aqualectra.com, 1 aqualife.cf, 1 @@ -13127,7 +13261,6 @@ aquarelleren.tk, 1 aquarestaurantobx.com, 1 aquarillon.fr, 1 aquarium-supplement.net, 1 -aquariumassist.com, 1 aquariumhobby.tk, 1 aquariumhome.tk, 1 aquariymist.tk, 1 @@ -13159,7 +13292,6 @@ aquitysolutions.com, 1 aquivardenafilo.gq, 1 aqusto.pl, 1 aqworlds.cf, 1 -aqy.fr, 1 ar-1xbet.com, 1 ar-android.com, 1 ar-informatique.ch, 0 @@ -13168,6 +13300,7 @@ ar-vernet.fr, 1 ar.al, 1 araadvocats.net, 1 arab-drama.tv, 1 +arab-dream.net, 1 arab-romance.tk, 1 arab1info.cf, 1 arabakiralama.name.tr, 1 @@ -13198,12 +13331,15 @@ arabstar.tk, 1 arabstreamsystem.tk, 1 arabtones.tk, 1 arabwomen.ml, 1 +aracbul.com, 1 aracelissanchez.com, 1 arachnid.tk, 1 arachnida.ml, 1 arackiralama.name.tr, 1 aradex.de, 1 aradiantlife.org, 1 +aradiantlyhealthylife.com, 1 +arados.de, 1 aradpulse.tk, 1 arafatx.com, 1 aragotownshipmn.gov, 1 @@ -13214,7 +13350,6 @@ aral.ml, 1 araluenvalleyhotel.ga, 1 aralun.net, 1 aralys.com, 1 -aramega.com, 1 aramido.de, 1 aramleisure.com, 1 aramyayinevi.com, 1 @@ -13225,7 +13360,9 @@ arandinacf.tk, 1 arandomsite.tk, 1 aranel.me, 1 aranyasgarden.com, 1 +aranycsillag.net, 1 aranykornyp.hu, 1 +aranzazu-abogados.com, 1 arapahoeco.gov, 1 arapahoesheriff.gov, 1 arapahoevotes.gov, 1 @@ -13237,12 +13374,9 @@ araro.ch, 0 ararrl.com, 1 ararrl.net, 1 ararrl.org, 1 -arasdigital.co, 1 arasikackm.com, 1 arasozgun.net, 1 aratum.com, 1 -aravalionyx.com, 1 -aravana74.ru, 1 aravindhebbali.com, 1 aravitor.com, 1 aravo.com, 1 @@ -13260,8 +13394,6 @@ arbeitskraft.de, 1 arbeitslosenverwaltung.de, 1 arbejdsdag.dk, 1 arbeta.re, 0 -arbitix.io, 1 -arbitmax.com, 1 arbitrarion.com, 1 arbitrary.ch, 1 arbitrations.tk, 1 @@ -13272,7 +13404,7 @@ arboleda-hurtado.com, 1 arbolesdenavidad.info, 1 arbolesdenavidad.site, 1 arbophil.fr, 1 -arbopolar.de, 1 +arboreall.com, 0 arborio.com.ua, 1 arboristadvice.com, 1 arboristic.de, 1 @@ -13284,7 +13416,6 @@ arc-relight.com, 1 arc.int, 0 arc.net, 1 arc.run, 1 -arca.fst.br, 1 arca.info.ro, 1 arca.live, 1 arcada-company.com, 1 @@ -13296,22 +13427,19 @@ arcadiaca.gov, 1 arcadiaeng.com, 1 arcadiaquill.com, 1 arcaik.net, 1 -arcaleus.com, 1 arcana-noctis.tk, 1 -arcanavana.com, 1 arcandadults.org, 1 arcane.no, 1 arcanecoast.ru, 1 arcanefrost.de, 1 arcanehardware.com, 1 -arcanemotorsport.com.au, 1 arcanetides.com, 1 arcarwegrow.pl, 1 arcbouncycastles.co.uk, 1 +arcchildren.org, 1 arcenotas.com, 1 arcese.com, 1 arcgpw.org, 1 -arch.cat, 1 archaeoadventures.com, 1 archaeopilot.de, 1 archambault.paris, 1 @@ -13329,9 +13457,9 @@ archeton.ga, 1 archframe.net, 1 archi.ve.it, 1 archicgi.com, 1 +archijobbtp.com, 1 archimede.ovh, 1 archined.nl, 1 -archinext.io, 1 archion.ro, 1 archis.de, 1 archispace.com.cn, 1 @@ -13360,6 +13488,7 @@ archivi.ddns.net, 0 archivistas.tk, 1 archivium.biz, 1 archivonacional.go.cr, 1 +archivosstl.com, 1 archiweb.pl, 0 archlinux.de, 1 archlinux.org, 1 @@ -13367,22 +13496,19 @@ archlinuxcn.org, 1 archlinuxpower.org, 1 archmacro.ga, 1 archoit.org, 0 -archomemaintenance.com.au, 1 archsec.info, 1 archtekton.com.ve, 1 arci-qc.ca, 1 arcj.es, 1 -arckarbonguclendirme.com, 1 arclookup.com, 1 arcloud.com.tw, 1 arcloudaccess.click, 1 arcmarine.eu, 1 -arcnet.online, 1 +arco.lu, 1 arcobalabs.ca, 1 arcogb.co, 1 arcoidaho.gov, 1 arcoiriscastellon.tk, 1 -arcolaai.com, 1 arcolapdtx.gov, 1 arcolasecurities.com, 1 arcolatexas.gov, 1 @@ -13395,7 +13521,6 @@ arcourts1st.gov, 1 arcourts6th.gov, 1 arcovix.com, 1 arcproject.org.uk, 1 -arcpx.com, 1 arcsar.eu, 1 arcserv.com, 1 arcskoru.com, 1 @@ -13411,7 +13536,6 @@ arcticvillage.gov, 1 arcticwolf.com, 1 arctus-security.com, 1 arcueil-cachan.fr, 0 -arcus.mil, 1 arcusgps.eu, 1 arcvictoriapoint.com.au, 1 arcza.com, 1 @@ -13422,15 +13546,10 @@ ardacar.com, 1 ardakannews.tk, 1 ardania.de, 1 ardaninmutfagi.com, 1 -ardeal24.ro, 1 ardeche-guide.com, 1 ardennes.com, 1 -ardens.co.uk, 1 -ardent-peche.com, 1 ardentinsure.com.au, 1 -ardentsia.com, 1 ardenwolfsky.com, 1 -ardhi-dz.com, 1 arditech.ml, 1 ardmoreok.gov, 1 ardo.tk, 1 @@ -13449,6 +13568,7 @@ area51bit.com, 1 area51bit.it, 1 areacinquentaeum.tk, 1 areacode231.com, 1 +areaf5.es, 1 areallyneatwebsite.com, 1 arealsultan.ga, 1 areanet.tk, 1 @@ -13457,6 +13577,8 @@ areatrend.com, 1 areavoipers.ga, 1 areavoipest.ga, 1 areawidepainting.com, 1 +arecart.fr, 1 +areeblog.com, 1 areege.tk, 1 arefidgetspinnersgay.com, 1 arefly.com, 1 @@ -13488,7 +13610,6 @@ arenicave.am, 1 arenlor.com, 1 arenlor.info, 1 arenns.com, 1 -arensinnrettingar.is, 1 arentuna.se, 1 arenzanaphotography.com, 1 areproduktioqn.tk, 1 @@ -13511,6 +13632,7 @@ arezzonotizie.it, 1 arezzoportugal.com, 1 arfulus.com, 1 arfycat.com, 1 +arg.zone, 1 argama-nature.com, 1 arganaderm.ch, 0 arganwinkel.nl, 1 @@ -13529,6 +13651,7 @@ argico.com, 1 argo-vision.com, 1 argo-vision.it, 1 argo.vision, 1 +argolacosmetique.ca, 1 argolacosmetique.com, 1 argon18.com, 1 argon2.online, 1 @@ -13537,7 +13660,6 @@ argonnewi.gov, 1 argos.co.uk, 1 argosasist.co.uk, 1 argosrisk.com, 1 -argoswimvideo.com, 1 argotplan.com, 1 argovpay.com, 1 argovpn.com, 1 @@ -13548,11 +13670,13 @@ argxentakato.me, 1 argyrouminas.digital, 1 argyrouminas.eu, 1 arhan.sh, 1 +arheh.com, 1 arhgrille.com, 1 arhipka.tk, 1 arhitectura.ru, 1 arhivpalanka.rs, 1 ari.beauty, 1 +ari.gg, 1 ari.lt, 1 aria-best.ru, 1 aria-best.su, 1 @@ -13568,6 +13692,8 @@ arian.io, 1 ariana.wtf, 1 ariashii.tk, 1 aribicara.tk, 1 +aric-assurances.fr, 1 +aricabos.com.br, 1 aricabus.tk, 1 aricaluchalibre.tk, 1 aridhia.com, 1 @@ -13610,6 +13736,7 @@ arilto.com, 1 arima.co.ke, 1 arima.tk, 1 arimarie.com, 1 +arina.is, 0 arina.moscow, 0 arinahashimoto.com, 1 arinde.ee, 1 @@ -13650,11 +13777,8 @@ arjanenthijs.nl, 1 arjansteevels.nl, 1 arjanvaartjes.net, 1 arjen-robben.tk, 1 -arjunasdaughter.pub, 1 -arjunvedbrat.com, 1 +arjunasdaughter.pub, 0 arjweb.co.uk, 1 -ark.swiss, 1 -ark4nyc.com, 1 arkaan.tk, 1 arkadaslik.tk, 1 arkadelphia.gov, 1 @@ -13668,7 +13792,6 @@ arkaic.dyndns.org, 1 arkaitzmolinuevo.com, 1 arkanpath.com, 1 arkansastitlesearch.com, 1 -arkazys.com, 1 arkcapitaltrading.com, 1 arkdev.fr, 0 arkenstone.ml, 1 @@ -13684,12 +13807,14 @@ arkhangelsk.tk, 1 arkholmevillage.ml, 1 arkhvoid.xyz, 1 arkin.nl, 1 +arklow.io, 0 arkm6.gq, 1 +arknetglobal.com, 1 arknights.work, 0 arknodejs.com, 1 arkomaok.gov, 1 arks.cards, 1 -arktci.com, 1 +arksan.com.tr, 1 arkutinofamilyresort.com, 1 arlatools.com, 1 arle.moe, 1 @@ -13712,17 +13837,21 @@ armadateam.tk, 1 armadillogaragedoors.com, 1 armadilloprojects.co.uk, 1 armadilloroofing.co.uk, 1 +armadilloscubatx.com, 1 armado.tk, 1 armagangultekin.av.tr, 1 armageddonclan.tk, 1 armahackers.tk, 1 armakuni.com, 1 +armamentevolved.com, 1 armancodes.com, 0 armand-colin.com, 1 +armanddesign.com, 1 armanddesign.nl, 1 armandmusic.nl, 1 armando.info, 1 armandocorazones.tk, 1 +armanozak.com, 1 armansazehradis.com, 1 armaplatform.com, 1 armarinhovirtual.com.br, 1 @@ -13760,13 +13889,13 @@ armorcommercialroofing.com, 1 armorsoft.fr, 1 armorynode.net, 1 armourfloorsnd.com, 1 +armourroofcolorado.com, 1 armourroofinc.com, 1 armsco.fr, 1 -armsdr.com, 1 armsteadproject.org, 0 armstrong.com.mx, 1 -armstrongheatingandcooling.com, 1 armstrongremovals.com.au, 0 +armstrongsengineering.com, 1 armtopnews.tk, 1 army-technology.com, 1 army.ca, 1 @@ -13777,6 +13906,7 @@ armyholidays.com.au, 1 armymuseumlahore.pk, 1 armyofflyingmonkeys.com, 1 armyrtf.com.au, 1 +armyuniversity.edu, 1 armywear.ga, 1 arn.com, 1 arn0.cc, 1 @@ -13790,7 +13920,6 @@ arnaudlanna.com, 1 arnaudligny.fr, 1 arnaudmarketing.fr, 1 arnaudminable.net, 1 -arndtstowing.com, 1 arne-gammelby.dk, 1 arneheise.com, 1 arnesegers.be, 1 @@ -13804,7 +13933,6 @@ arno-klein.fr, 1 arno-klein.it, 1 arno-klein.net, 1 arno.pm, 1 -arnobyte.com, 1 arnoklein.eu, 1 arnoklein.fr, 1 arnoklein.it, 1 @@ -13838,6 +13966,7 @@ aromahexe.at, 1 aromaimportado.com.br, 1 aromaonlinestore-korat.com, 1 aromatherapy.cf, 1 +aromatlas.com, 1 aromatraining.com, 1 aromavadisi.com, 1 aromex.ml, 1 @@ -13847,6 +13976,7 @@ aronra.com, 1 aroofing.net, 1 aroonchande.com, 0 arooshi.website, 1 +aros.pl, 1 arose.io, 1 arosoft.se, 1 arounddeal.com, 1 @@ -13863,7 +13993,6 @@ arpasix.email, 1 arpasix.eu, 1 arpasix.net, 1 arpasix.org, 1 -arpeyo.com, 1 arphotography.tk, 1 arpnet.net, 1 arpnet.us, 1 @@ -13886,15 +14015,14 @@ array.com, 1 array.io, 1 arrazane.com.br, 1 arrazola.org, 1 -arrematearte.com.br, 1 arrive.by, 0 arrivedconsulting.com, 1 arriveguidelines.org, 1 arrivehealth.com, 1 arrmaforum.com, 1 -arroapp.com.ar, 1 arroba.digital, 1 arrotatore.roma.it, 1 +arrow-api.nl, 1 arrowduty.ml, 1 arrowfastener.com, 1 arrowgrove.com, 0 @@ -13922,17 +14050,14 @@ arshfollower.com, 1 arshia.cf, 1 arshidazarine.tk, 1 arshina.su, 0 -arshistorica.it, 1 arsindecor.com, 1 arsingh.com, 1 -arsjuridica.com, 1 arsk1.com, 1 arslonga.ovh, 1 arsmagazine.tk, 1 arsmedica.ch, 1 arsmedika.ru, 1 arsmundi.de, 1 -arssalva.fr, 1 arstechni.ca, 1 arstudentloanhelp.com, 1 art-athens.com, 1 @@ -13950,7 +14075,6 @@ art-khotyn.tk, 1 art-kuchni.tk, 1 art-news.tk, 1 art-okno.com, 1 -art-okon.ru, 1 art-online.tk, 1 art-pix.de, 1 art-pix.net, 1 @@ -13973,7 +14097,6 @@ artapardaz.com, 1 artapisserie.fr, 1 artaurium.com, 0 artbalsam.com, 1 -artben.fr, 1 artbild-fotografie.de, 1 artbizu.com, 1 artboja.com, 1 @@ -14010,7 +14133,7 @@ arteinstudio.it, 1 artel.od.ua, 1 artelignum.tk, 1 artelista.com, 1 -artem.se, 0 +artem.se, 1 artembusiness.tk, 1 artemida-dot.tk, 1 artemis-fowl.tk, 1 @@ -14041,7 +14164,9 @@ artetbalade.tk, 1 artetculture.tk, 1 artevos.com, 1 artevos.de, 1 +artex.com.br, 1 artexhibition.jp, 1 +artextasia.com, 1 artfabrics.com, 1 artfarms.ca, 1 artformcollective.com.au, 1 @@ -14060,7 +14185,6 @@ arthurdev.cf, 1 arthurlaw.ca, 1 arthurlewis.me, 1 arthuro.ca, 1 -arthurrichard.fr, 1 arthurweder.ch, 1 arti-group.ml, 1 arti-islam.tk, 1 @@ -14084,10 +14208,10 @@ artifex21.fr, 1 artifexnet.com, 1 artifice.tk, 1 artificethefilm.com, 1 +artificial.army, 1 artificiala.gq, 1 artificialaxis.com, 1 artificialdiffusion.com, 1 -artificialheights.com, 1 artificialintelligenceproject.com, 1 artificialplants.tk, 1 artificialpoetry.com, 1 @@ -14107,7 +14231,6 @@ artisan-emmanuel.fr, 1 artisan-ravalement-facade.fr, 1 artisan.tk, 1 artisanat2france.fr, 1 -artisanconstructionco.com, 1 artisanhd.com, 1 artisanportrait.com, 1 artisansoftaste.com, 1 @@ -14123,6 +14246,7 @@ artistmovieers.ga, 1 artistree.io, 1 artistreplugged.com, 1 artistrunwebsite.com, 1 +artium.agency, 1 artivo-gallery.com, 1 artizlibranza.com, 1 artj.jp, 1 @@ -14130,7 +14254,6 @@ artk-co.ir, 1 artlab.tk, 1 artlantis.nl, 1 artleading.ru, 1 -artless.at, 1 artlifeisgood.com, 0 artlinestix.com.au, 1 artlogo.biz, 1 @@ -14160,6 +14283,7 @@ artofzoo.com, 1 artolaros.nl, 1 artomalu.tk, 1 artomili.com, 1 +artouch.com, 1 artozoul.fr, 1 artphototravel.net, 1 artplaneta-leto.by, 1 @@ -14178,8 +14302,9 @@ artru.tk, 1 arts.gov, 1 artsalon.tk, 1 artscanvas.org, 1 -artshouse.com.au, 1 artsinbushwick.org, 1 +artslife.com, 1 +artsmagazine.com, 1 artsongcolorado.org, 1 artspac.es, 0 artspark.tk, 1 @@ -14210,6 +14335,7 @@ artwar.tk, 1 artweby.cz, 1 artwhale.ph, 1 artwhoredistro.tk, 1 +artworkpath.com, 1 artworks.gd, 1 artworksthatlookgood.com, 0 arty.name, 1 @@ -14234,17 +14360,15 @@ arveex.eu, 1 arviksa.co.uk, 1 arvin.com.co, 1 arvindhariharan.me, 1 -arvindsharma.co.in, 1 arvostettu.fi, 1 arvutiladu.ee, 1 +arvyncerezo.com, 1 arw.me, 1 arwensiberian.tk, 1 arweth.com, 1 arx-libertatis.org, 1 arx.vg, 1 arxarios.tk, 1 -arxiwise.com, 1 -arya-continental.it, 1 aryacom.com, 1 aryalaroca.de, 1 aryani-fitriana.tk, 1 @@ -14259,6 +14383,7 @@ arz-florian.tk, 1 arz-online.ml, 1 arzdigital.com, 1 arzeshyabi-dar-alman.info, 1 +arzid.com, 1 arzinfo.pw, 1 arzmercury.tk, 1 arztpraxis-kubalok.de, 1 @@ -14279,12 +14404,9 @@ as203145.com, 1 as204830.net, 1 as204982.net, 1 as205794.net, 1 -as205941.net, 1 -as205941.org, 1 as207618.net, 1 as207960.net, 1 as209245.net, 1 -as212024.net, 1 as216318.net, 1 as29.net, 1 as41073.net, 1 @@ -14297,6 +14419,7 @@ asabacortoscaseros.tk, 1 asadatec.de, 1 asaduddinowaisi.tk, 1 asafaweb.com, 1 +asafilm.co, 1 asafomba.com, 0 asahi-tax.or.jp, 1 asahiseikou.com, 1 @@ -14310,6 +14433,7 @@ asana.plus, 1 asancharge.tk, 1 asandu.eu, 1 asankomara.tk, 1 +asanprop.com, 1 asansol.tk, 1 asantosdev.com, 1 asanuma-clinic.jp, 1 @@ -14320,6 +14444,7 @@ asap.gov, 1 asapboardshop.com, 1 asaphomeinspect.com, 1 asapp.com, 0 +asaprestoration247.com, 1 asara.tk, 1 asart.bg, 1 asas-tn.org, 1 @@ -14343,6 +14468,7 @@ asc.es, 1 ascamo.tk, 1 ascannes-non-officiel.tk, 1 ascar.us, 1 +ascavia.cz, 1 ascenderhcm.com, 1 ascendi.no, 1 ascendix.com, 0 @@ -14363,12 +14489,11 @@ asciitable.tips, 1 ascirno.com, 1 ascl.org.uk, 1 asco.com.mx, 1 -ascofiltri.com, 1 ascolibasi.tk, 1 ascom.vi.it, 1 ascopeshipping.co.uk, 1 ascore.io, 1 -ascottestate.co.uk, 1 +ascormovies.com, 1 ascpaphilatelie.eu, 1 ascultaonlineradio.ml, 1 asd.gov.au, 0 @@ -14376,18 +14501,19 @@ asdchieti.tk, 1 asdf.one, 1 asdfqwerty.duckdns.org, 1 asdwfwqd.com, 1 +aseannow.com, 1 asecla.com, 1 asecus.ch, 1 aseelanimalhealth.com, 1 asegem.es, 1 aseglobal.com, 0 -aseishika.com, 1 aseith.com, 1 aselectionoffice.gov, 1 aselo.org, 1 asenaru.id, 1 asennemedia.fi, 1 asennestudio.fi, 1 +aseoblog.com, 1 aserbx.ga, 1 asersagua.es, 1 aserver.eu, 1 @@ -14395,25 +14521,22 @@ asesecours.com, 1 asesinosdeltarot.tk, 1 asesoresvaro.com, 1 asesorialigorred.es, 1 -asesuisa.com, 0 +asessiglo21.es, 1 +asesuisa.com, 1 aset.fi, 1 +aseuro.in, 1 asexualitat.cat, 1 asfaleianet.gr, 1 asfalteros.cz, 1 asfalti.it, 1 -asfalti.milano.it, 1 asfalto.roma.it, 1 asfberbagi.org, 1 asfono.gov, 1 asg-egy.com, 1 asgard-engineering.com, 1 -asgassociationbenefitplans.com, 1 asgeirolafs.com, 1 -asgfinancialadvisors.com, 1 -asgnqpc.com, 1 -ashantiperu.org, 1 -ashargrosirparfum.com, 1 asharq.com, 1 +asharqbusiness.com, 1 ashastalent.com, 0 ashbee.buzz, 1 ashburnconsulting.com, 1 @@ -14427,17 +14550,16 @@ ashcombe.surrey.sch.uk, 1 ashd1.goip.de, 1 ashd2.goip.de, 1 ashd3.goip.de, 1 +ashdodenglish.com, 1 ashemaletubeplus.com, 1 ashenc.gov, 1 ashenm.ml, 1 -asher.dog, 1 asher.solutions, 1 asher.tools, 1 asherosborne.com, 1 asheroto.com, 1 asherrit.com, 1 ashersec.com, 1 -ashersgrp.com, 1 ashesdiamonds.com, 1 ashesheriff.gov, 1 ashevillemenshealth.com, 1 @@ -14462,6 +14584,7 @@ ashleynicholsboudoir.com, 1 ashleythouret.com, 1 ashlingonline.com, 1 ashmore.gov, 1 +ashodhaholidays.com, 1 ashotofadrenaline.net, 1 ashraful-islam.ml, 1 ashtabulacountyprosecutoroh.gov, 1 @@ -14473,6 +14596,7 @@ ashtonc.ca, 1 ashtoncityid.gov, 1 ashtonid.gov, 1 ashtonwealth.com, 1 +ashvinmedicara.org, 1 ashwainfo.in, 1 ashwaubenon.gov, 1 ashwoodscontracting.com, 1 @@ -14480,8 +14604,10 @@ asia-fhjt.com, 1 asia-fuhui.com, 1 asia4five.com, 1 asiabyte.com, 1 +asiacommerce.id, 1 asiadirect.co.th, 1 asiafaninfo.net, 1 +asiaferguson.com, 1 asiafood-curator.com, 1 asiagate.ga, 1 asiahabit.com, 0 @@ -14505,8 +14631,8 @@ asianmain.com, 1 asianmoney.biz, 1 asianshop.com.pe, 1 asiansnus.com, 1 -asiansolequeen.com, 1 asiansongs.tk, 1 +asianspa.co.uk, 1 asiantube.tv, 1 asianwebcams.webcam, 1 asiaoptom.com, 1 @@ -14553,6 +14679,7 @@ askbiblescholars.com, 1 askbill.org.uk, 1 askbrake.com, 1 askcaisse.com, 1 +askcascade.com, 0 askdeliver.tk, 1 asker-massasje.no, 1 askerweb.cf, 1 @@ -14565,7 +14692,6 @@ askindia.tk, 1 askjan.org, 1 askkaren.gov, 1 asklea.ai, 1 -askmany.ai, 1 askme-events.vip, 0 askme-fast.tk, 1 askme24.de, 1 @@ -14578,6 +14704,7 @@ askollelectric.bg, 1 askpam.ai, 1 asktanzania.com, 1 askthosewhoknow.org, 1 +askui.com, 1 askva.org, 1 askvg.com, 1 askwhy.cz, 1 @@ -14591,6 +14718,7 @@ aslanzone.shop, 1 aslia.no, 1 asliceofny.com, 1 asliving1.com, 1 +aslme.org, 1 aslsp.org, 1 asm.io, 1 asm13.org, 1 @@ -14603,9 +14731,9 @@ asmess.com, 1 asmgroup.rs, 1 asminternational.org, 1 asmlmarathoneindhoven.nl, 1 +asmm.cc, 0 asmobox.ga, 1 asmood.net, 1 -asmpire.shop, 1 asmpt.com, 1 asmr-100.com, 1 asmr-200.com, 1 @@ -14637,7 +14765,6 @@ aspectcontext.com, 1 aspen.gov, 1 aspencat.tk, 1 aspenmedical.com, 1 -aspenridgeresidences.com, 1 aspenvocational.com, 1 aspera.com, 0 asperas.com.tr, 1 @@ -14647,7 +14774,7 @@ asphalting.org, 1 asphyxia.su, 1 aspi.cz, 1 aspietechygamer.tk, 1 -aspiracloud.com, 0 +aspiracloud.com, 1 aspirantum.com, 1 aspirateur-anti-pollution.fr, 1 aspirateur-univers.com, 1 @@ -14665,9 +14792,7 @@ aspirevc.com, 1 aspisdata.com, 1 aspjvm.com, 1 aspontes.org, 1 -aspor.com.tr, 1 asportnoy.com, 1 -aspph.org, 1 aspr.gov, 1 aspr.group, 1 asprion.org, 1 @@ -14676,8 +14801,8 @@ asproni.it, 1 asps.biz, 1 aspviress.gq, 1 asqnw.com, 1 -asqofmashdoda.com, 1 asr.cloud, 1 +asr.li, 1 asr.rocks, 1 asr.solar, 1 asr9k.de, 1 @@ -14707,7 +14832,6 @@ assemblage.gq, 1 assemblee-copropriete.fr, 1 assemblee-nationale.ga, 1 assemblyai.com, 0 -assemblyservice.co.uk, 1 assemblytoolbox.com, 1 assemblywithoutthewalls.org, 1 assens.dk, 0 @@ -14728,11 +14852,11 @@ assets.schwarz, 1 assetsec.io, 1 assetsman-assetsvalue.com, 1 assettocorsa.tk, 1 -assferrel.pt, 1 assguidesporrentruy.ch, 0 assicurare.it, 1 assid.com, 1 assignacii.ml, 1 +assignmentcrafters.com, 1 assignmenthelper.org, 1 assignmenthelpservices.com, 1 assignments4u.com, 1 @@ -14758,6 +14882,7 @@ assistere-a-domicilio.it, 1 assistere-in-famiglia.it, 1 assistivebathing.co.uk, 1 assistmedica.com, 1 +assistouest.fr, 1 assistouest.net, 1 assistouest.shop, 1 assmb.ly, 1 @@ -14777,10 +14902,10 @@ assumptionla.gov, 1 assumptionoep-la.gov, 1 assurance-emprunteur.bzh, 1 assurances-brg.com, 1 +assurances-kieffer.fr, 1 assured.se, 0 assuredallies.com, 1 assuredspc.com, 1 -assuretechnical.com, 1 assureuk.co.uk, 1 assusoft.eu, 1 assyriatwpmi.gov, 1 @@ -14805,6 +14930,7 @@ astarfrommosul.cf, 1 astarfrommosul.ga, 1 astarfrommosul.ml, 1 astariafashion.co.uk, 1 +astarmathsandphysics.com, 1 astateoftrance.tk, 1 asteelflash.com, 0 astekbet.com, 1 @@ -14812,7 +14938,7 @@ astellaria.ee, 1 astengox.com, 1 astenretail.com, 1 astera-led.com, 1 -astera.com, 0 +astera.com, 1 asterhu.com, 1 asterinu.xyz, 1 asterisk.lol, 1 @@ -14821,8 +14947,6 @@ asterix-obelix.ga, 1 asterobot.net, 1 astettner.de, 1 asthamishra.com, 1 -asthene.com, 1 -asthithwa.com, 1 asthma-explained.com, 1 asthowen.com, 1 asthowen.fr, 1 @@ -14846,7 +14970,6 @@ astour.ee, 1 astqx.com, 1 astraai.com, 1 astraalivankila.net, 0 -astraelle.space, 1 astrakhan-gorod.ga, 1 astrakhan-news.net, 1 astrakhan.cf, 1 @@ -14857,9 +14980,10 @@ astrakhan.tk, 1 astral-imperium.com, 1 astral.gq, 1 astral.org.pl, 1 -astralnature.com, 1 astralrank.com, 1 astralriders.tk, 1 +astralus.com, 0 +astralus.de, 0 astramundo.com, 1 astrapool.ru, 1 astratech.com.ph, 1 @@ -14888,6 +15012,7 @@ astrograph.io, 1 astrojunkies.com, 1 astrolab.tk, 1 astroloeches.tk, 1 +astrologeminesolakoglu.com, 1 astrologerumesh.com, 1 astrologic.cf, 1 astrologics.in, 1 @@ -14899,7 +15024,6 @@ astroluna.cz, 1 astroluxe.io, 1 astromachineworks.com, 1 astrominds.fr, 1 -astromineralogija.lt, 1 astrong.pl, 1 astronime.id, 1 astronomiadecolombia.tk, 1 @@ -14921,7 +15045,6 @@ astroxe.com, 1 astroze.it, 1 astrumadvies.nl, 1 astsummer.tk, 1 -asttu.org, 1 astucas.com, 1 astucedirecte.tk, 1 astucewebmaster.com, 1 @@ -14929,6 +15052,7 @@ astuna.de, 1 astur.de, 1 astur.school, 1 astur.travel, 1 +asturhackers.es, 1 astutetm.com, 1 astutr.co, 1 astypic.fr, 1 @@ -14946,7 +15070,6 @@ asuntospropios.com, 1 asura.in.th, 1 asurbernardo.com, 1 asurgiant.ca, 1 -asus.pk, 1 asustor.com, 1 asustreiber.de, 1 asvsa.ch, 0 @@ -14956,6 +15079,7 @@ aswinibajajclasses.com, 1 asws.nl, 1 asyadexpress.com, 1 asyaport.com, 1 +asyaturk.org, 1 asyikbelanja.com, 1 asylbarn.no, 1 asylinfo.no, 1 @@ -15028,17 +15152,18 @@ atec.pt, 1 ateitis.net, 1 atelier-aleph.fr, 1 atelier-eddie.nl, 1 +atelier-lebreton.fr, 1 atelier-naruby.cz, 1 atelier-rk.com, 1 atelier-viennois-cannes.fr, 1 atelierbeautebk.com, 1 atelierbw.com, 1 -ateliercommerce.com, 0 +ateliercommerce.com, 1 atelierdelachaine.fr, 0 atelierdelacreation.com, 1 +atelierdesflammesnoires.fr, 1 atelierferro.be, 1 atelierhsn.com, 1 -atelierica.sk, 1 atelierjs.com, 1 atelierkuni.jp, 1 ateliernaruby.cz, 1 @@ -15091,14 +15216,13 @@ athenainvsys.net, 1 athenaspark.com, 1 athenasystems.com, 1 athenasystems.net, 1 -athenetips.nl, 1 atheneum-partners.cn, 1 athensdrunktour.com, 1 athensil.gov, 1 -athenslover.com, 1 athenstn.gov, 1 athensvantours.gr, 1 athensvillageny.gov, 1 +athensvintagetours.com, 1 athensvt.gov, 1 atherosense.ga, 1 athleticstore.bg, 1 @@ -15112,11 +15236,8 @@ atide.cf, 1 atidict.top, 1 atik.kr, 0 atikeditorial.com, 1 -atikokanenercom.com, 1 atiku2007.tk, 1 atila.io, 0 -atilado.com, 1 -atilado.net, 1 atilo.sh, 1 atimba.com, 1 atimevis.com, 1 @@ -15148,11 +15269,11 @@ atkinsonbaker.com, 1 atkstore.com, 1 atl-paas.net, 0 atl.direct, 1 -atl.wiki, 1 atlacademy.org, 1 atlach.com, 1 atlan.digital, 1 atlan.nl, 1 +atlanta-airport-parking.com, 1 atlantacustomfab.com, 1 atlantahealthcare.tk, 1 atlantajewishlifefestival.com, 1 @@ -15176,7 +15297,8 @@ atlantik.tk, 1 atlantikwall.ga, 1 atlantischild.hu, 1 atlantisdx.de, 1 -atlantisgold.bg, 1 +atlantishop.si, 1 +atlantismd.com, 1 atlantistowingservice.com, 1 atlantiswaterproofing.com, 0 atlantium.tk, 1 @@ -15190,9 +15312,7 @@ atlas.computer, 0 atlas.promo, 1 atlasams.com, 1 atlasbridge.com, 1 -atlasbus.by, 1 atlasbus.pl, 1 -atlasbus.ru, 1 atlascloud.cn, 1 atlascoffeeclub.com, 1 atlascultural.com, 1 @@ -15207,7 +15327,9 @@ atlasmgountours.com, 1 atlasminertool.com, 1 atlaso.cz, 1 atlasofmutualheritage.nl, 1 +atlasone.us, 1 atlasrealestates.com, 1 +atlasreclame.nl, 1 atlassian.net, 1 atlassignsandplaques.com, 1 atlastax.ga, 1 @@ -15216,7 +15338,9 @@ atlastravelvic.com.au, 1 atlastube.com, 1 atlasuno.com, 1 atlaswu.com, 1 +atlcoaters.com, 1 atletico-guacuano.tk, 1 +atletika.hu, 1 atletismomacotera.tk, 1 atlucknow.com, 1 atm-bur.ru, 1 @@ -15254,7 +15378,9 @@ atocrailwarrants.org, 1 atoctravelagents.org, 1 atoka.io, 1 atolm.net, 1 +atom-china.org, 1 atombase.org, 1 +atomeus.nl, 0 atomglimpses.cn, 1 atomic-bounce.com, 1 atomic.radio, 1 @@ -15284,10 +15410,10 @@ atplonline.co, 1 atproducts.xyz, 1 atpx.com, 1 atradius.co.uk, 1 +atragumi.hu, 1 atraining.ru, 1 atramare.com, 1 atrands.com, 1 -atraverslobjectif.com, 1 atrdsymposium.org, 1 atrec.org, 1 atrevillot.com, 1 @@ -15306,11 +15432,9 @@ atrkadeh.com, 1 atrogi.com, 1 atropos.co, 1 ats.net, 1 -atsfleetservice.com, 1 atsol.com, 1 atspeeds.com, 1 attadigital.com, 1 -attainableresultsgroup.com, 1 attanasioluigi.tk, 1 attatroll.de, 1 attawauganfirect.gov, 1 @@ -15320,25 +15444,28 @@ attekaleva.fi, 1 attendanceondemand.com, 1 attendanceradar.com, 1 attendhealth.com, 1 -attendthesabbath.com, 1 attendu.cz, 0 attengo.ga, 1 attentioninsight.com, 1 attentionpleats.com.tw, 1 +attesawp.com, 1 atthehelmins.com, 1 attic-design.com, 1 atticinsulation-houston.com, 1 atticinsulationexpertshouston.com, 1 atticlightstudio.net, 1 atticode.io, 1 +atticusblog.com, 1 attilavandervelde.nl, 1 attiliospagnolo.it, 1 attinderdhillon.com, 1 attireaccessories.com, 1 attiremr.tk, 1 +attitudes-bureaux.fr, 1 attivazioneveloce.it, 1 attivonetworks.com, 1 attlane.fr, 1 +attly.cn, 1 attoch.org, 1 attogtech.com, 1 attorneybiographies.ga, 1 @@ -15371,12 +15498,13 @@ atworktechnology.com.au, 0 atx.is, 1 atxchirocoverage.com, 1 atyourleisureculinary.com, 1 +atyourprice.net, 1 atyourscreen.com, 1 atyourscreen.events, 1 atypicom.es, 1 atypicom.it, 1 atypicom.pt, 1 -atypics.fr, 0 +atypics.fr, 1 atyuan.me, 1 atyuan.one, 1 atyum.com, 0 @@ -15388,6 +15516,7 @@ au-inter.net, 1 au-troisieme-oeil.com, 1 au.by, 1 au.search.yahoo.com, 0 +au2pb.org, 1 aubagne.fr, 1 aubassadeurs-airfly.fr, 1 aubassadeurs.fr, 1 @@ -15423,9 +15552,10 @@ audetlaw.com, 1 audian.com, 1 audible, 1 audiclubbahrain.com, 1 -audifs.com, 0 +audifs.com, 1 audilio.it, 1 audio-arte.pt, 1 +audio-detector.com, 1 audio-extractor.net, 1 audio-joiner.com, 1 audio.servemp3.com, 1 @@ -15472,24 +15602,26 @@ audioslave.tk, 1 audiotrace.tk, 1 audiovisualmurciano.tk, 1 audisto.com, 1 +audit.gov.ly, 1 audit.one, 1 audit.ovh, 1 audit.tw, 1 +auditemmen.nl, 1 auditeorganum.cz, 1 auditingfirm.tk, 1 audition-radio.tk, 1 -audition.com.br, 1 auditiontapes.co.uk, 1 auditore-host.tk, 1 auditorwashingtoncountyohio.gov, 1 auditos.com, 1 auditsquare.com, 1 -auditware.co.uk, 1 audleyconstruction.tk, 1 +audreyhossepian.fr, 0 audumakrasas.lv, 1 auenhof-agrar.de, 1 auerbach-verlag.de, 1 aufay.me, 1 +aufeergroup.eu, 1 aufeerjob.cz, 1 aufiowilauf.at, 1 aufmerksamkeitsstudie.com, 1 @@ -15499,6 +15631,7 @@ auftragsfertigung.at, 1 aufwachzeit.at, 1 aufwachzeit.com, 1 aufwecken.dynu.net, 1 +augendre.info, 1 augenlaser-chemnitz.de, 1 augenlaser-dresden.de, 1 augenlaserzentrum-dresden.com, 1 @@ -15524,6 +15657,7 @@ augustaky.gov, 1 augustanews.tk, 1 augustascribes.com, 1 augustiner-kantorei-erfurt.de, 1 +augustiner-kantorei.de, 1 auk.hopto.org, 1 aukanaw.tk, 1 aukaraoke.su, 1 @@ -15566,25 +15700,22 @@ aura.moe, 1 aura7chakr.com, 1 aurabasketball.com, 1 aurabasketball.fr, 1 -aurabestari.com, 1 aurac.org.nz, 1 auraedu.me, 1 aurahiemis.tk, 1 -aurahome.studio, 1 aurainfosec.com, 0 aurainfosec.com.au, 0 -aurakink.com, 1 auralia.cloud, 1 auralia.net, 1 auraliafirst.com, 1 auraliamusic.com, 1 -auralinna.blog, 0 +auralinna.blog, 1 aurantis.it, 1 aurantis.nl, 1 aurbrowser.tk, 1 aurdumesti.ro, 1 aurea-sp.org, 1 -aureainvestmentsco.com, 1 +auregaldescoches.fr, 1 aurelharmoniebeaute.fr, 1 aurelie-valognes.com, 1 aurelien-duchene.fr, 1 @@ -15634,7 +15765,6 @@ ausbilderportal.com, 1 ausbildung-rbg.de, 1 ausbildungplus.de, 1 ausbrightfacilities.com.au, 1 -ausbusinessregister.com.au, 1 auscanalliancecorp.com, 1 auscube.tk, 1 auscultador.com, 1 @@ -15650,6 +15780,7 @@ ausgrants.au, 1 ausgrants.com, 1 ausgrants.com.au, 1 ausics.net, 1 +ausielogistics.com.au, 1 auskast.com, 1 auskate.tk, 1 auskunftsbegehren.at, 1 @@ -15673,6 +15804,7 @@ aussiemilfs.com, 1 aussieofficefitout.com.au, 1 aussieservicedown.com, 1 aussiesmostlifted.com.au, 1 +aussiesnus.com, 1 aussiestoresonline.com, 0 austagencies.com.au, 1 austbrokers.com.au, 1 @@ -15681,10 +15813,8 @@ austenplumbing.com, 1 austercita.tk, 1 austickcarremoval.com.au, 1 austillconstruction.com, 1 -austin-security-cameras.com, 1 austinbestdjs.com, 1 austincardiac.com, 1 -austincenters.com, 1 austincosmetic.com, 1 austinface.com, 1 austinlaw.co.uk, 1 @@ -15692,6 +15822,7 @@ austinnoll.com, 1 austinonline.tk, 1 austinosuide.com, 1 austinoutline.com, 1 +austinoverheaddoorcompany.com, 0 austinrifleclub.org, 1 austinsutphin.com, 1 austinuniversityhouse.com, 1 @@ -15701,10 +15832,12 @@ australia.jp, 1 australiadaily.ga, 1 australiaday.com.au, 1 australian.tk, 1 +australianairbrushedtattoos.com, 1 australianairbrushedtattoos.com.au, 1 australianattractions.com.au, 1 australiancattle.dog, 1 australiancurriculum.edu.au, 0 +australiangeographictravel.com, 1 australiangold.net, 1 australianhimalayanfoundation.org.au, 0 australianimmigrationadvisors.com.au, 1 @@ -15721,7 +15854,6 @@ austrianfashionassociation.at, 1 austriantekken.tk, 1 austrianwine.com, 1 austriatravel.tk, 1 -austriax.at, 1 austromorph.space, 1 auszeit-walsrode.de, 1 auszeit.bio, 1 @@ -15749,8 +15881,9 @@ authenticwindows.com, 1 authentisch-italienisch-kochen.de, 1 authic.io, 0 authinfo-bestellen.de, 1 +authinity.com, 0 authland.com, 1 -author-it.com, 0 +author-it.com, 1 author24.info, 1 authorbriannamacmahon.com, 1 authorise.computer, 1 @@ -15767,10 +15900,8 @@ autism-explained.com, 1 autism.ie, 1 autisme-france.fr, 1 autismewoerden.nl, 1 -autismoemcurso.com.br, 1 autista.roma.it, 1 autistici.org, 1 -autix.es, 1 auto-albrecht.de, 1 auto-anleitung.de, 1 auto-arsenal.tk, 1 @@ -15835,7 +15966,6 @@ autocartruck.com, 1 autocarwash.net, 1 autocashmachine.tk, 1 autocenters.ca, 1 -autochangelog.com, 1 autocheck.co.nz, 1 autocirkel.tk, 1 autoclean93.fr, 1 @@ -15879,6 +16009,7 @@ autogalerie-bader.ch, 1 autogarag.ru, 1 autogard.cz, 1 autogear.ga, 1 +autogeizer.ru, 1 autoglasskobra.bg, 1 autogorod24.ru, 1 autograph.io, 1 @@ -15901,6 +16032,7 @@ autojur.com.br, 1 autokasko.tk, 1 autokeskus.com, 1 autokino-sachsen.de, 1 +autoklub.cz, 1 autoknife.cf, 1 autokontinent.ml, 1 autokovrik-diskont.ru, 1 @@ -15915,9 +16047,9 @@ autologix.io, 1 automa.biz, 1 automaatic.com, 1 automagischeberegening.nl, 1 +automaq.com.py, 1 automastercastlerock.com, 1 -automateanything.pro, 1 -automatedcloud.africa, 1 +automatecodes.com, 1 automaticagarage.it, 1 automationlab.it.com, 1 automationpro.me, 1 @@ -15931,6 +16063,7 @@ automecanicagalegos.pt, 1 automekano.com, 0 automekbromma.se, 1 automiata.de, 1 +automir.online, 1 automizor.io, 1 automobile-detail.com, 1 automobile-propre.com, 0 @@ -16089,8 +16222,6 @@ automotivewish.ga, 1 automotiveworth.ga, 1 automotiveyankee.ga, 1 automoto-tom.net, 1 -automotoscout.de, 1 -automouseclick.com, 1 automuovifix.fi, 1 autonewsreview.com, 1 autonoleggio.milano.it, 1 @@ -16101,6 +16232,7 @@ autonovinky.cz, 1 autoofficina.it, 1 autopadconnect.com, 1 autopapo.com.br, 1 +autopark-ost-fichtner.de, 1 autoparts-for-foreigncars.tk, 1 autoparts-russia.ru, 1 autoparts.im, 1 @@ -16112,12 +16244,9 @@ autopaulito.pt, 0 autopecasjoaquinense.com.br, 1 autopilotapp.com, 1 autopistadelitata.cl, 1 -autoplaza.com.mx, 1 autopneusdacovilha.pt, 1 autopocket.co, 1 -autopopaccidentrepair.co.uk, 1 autoportal.tk, 1 -autopot.nl, 1 autopril.com, 1 autoprogconsortium.ga, 1 autops.ma, 1 @@ -16128,6 +16257,7 @@ autorefuellings.com, 1 autorefuellings.ru, 1 autoreinigung-noack.de, 1 autoren-magazin.de, 1 +autorepguide.com, 1 autorepmans.com, 1 autoresponderilimitado.tk, 1 autoreview.ml, 1 @@ -16161,6 +16291,7 @@ autospurghi.roma.it, 1 autospurgo.co, 1 autospurgo.com, 1 autospurgo.milano.it, 1 +autospurgo.name, 1 autostationsest.ga, 1 autostickere.ro, 1 autostodulky.cz, 1 @@ -16168,16 +16299,16 @@ autostop-occasions.be, 1 autostoresystem.com, 1 autostrady.tk, 1 autostramites.com, 1 +autostramites.com.ar, 1 autosupirkimas.tk, 1 autosynthetix.com, 1 +autoteplo.org, 1 autoterminus-used.be, 0 -autotexttyper.click, 1 -autotim.de, 0 +autotim.de, 1 autotimez.com, 1 autotitleloansnu.ga, 1 autoto.hr, 1 autotonic.tk, 1 -autotrack.com, 1 autotransportquoteservices.com, 1 autotras.com, 1 autotruckpartsonline.com, 1 @@ -16211,8 +16342,8 @@ autowhois.com, 1 autozaz.ml, 1 autozuki.com, 1 autres-talents.fr, 1 +auts.fi, 0 autumnhungary.tk, 1 -autumnplantfair.nz, 1 autya.ga, 1 auventsettoilesregional.ca, 1 auventsettoilesregional.com, 1 @@ -16229,9 +16360,7 @@ auxessenceselfiques.fr, 1 auxilion.de, 1 auxilius.be, 1 auxion.net, 1 -auxite.io, 1 auxmode.com, 1 -auzeau.fr, 1 av-autoparts.gr, 1 av-bracht.de, 1 av-dnepr.com.ua, 1 @@ -16254,7 +16383,6 @@ avagroup.ga, 1 avaibooksports.com, 1 avail-sw.io, 1 available.direct, 1 -available.is, 1 availablecastles.com, 1 availablefonts.com, 1 availablereportsest.ga, 1 @@ -16308,6 +16436,7 @@ avantcorefrigeration.com, 1 avanteinversiones.es, 1 avantnr.com, 1 avantumrx.com, 1 +avanwyk.com, 1 avanzbanc.com, 1 avanzza.net, 1 avaralar.tk, 1 @@ -16328,11 +16457,13 @@ avdagic.net, 1 ave.zone, 1 aveamcorp.com, 1 aveapps.com, 0 +aveburybeds.com, 1 aveclunettesoleil.fr, 1 avecsans.studio, 1 avedesk.org, 0 avedisrecovery.com, 1 aveenstra.com, 1 +avegaedge.com, 1 avelengo.org, 1 avellinotoday.it, 1 aveloair.com, 1 @@ -16346,6 +16477,7 @@ avengehub.com, 1 avengepet.eu.org, 1 avengersonline.ml, 1 avengersonlinemovie.ga, 1 +avenida7.com, 1 avenir-now.at, 1 avenir-now.ch, 1 avenir-now.com, 1 @@ -16363,7 +16495,6 @@ avepol.cz, 1 avepol.eu, 1 averageinspired.com, 1 averbuch.net, 1 -averbuch.org, 1 averen.co.uk, 1 averge.co.za, 1 averin.pro, 1 @@ -16399,6 +16530,7 @@ aviareis.tk, 1 aviarycourthotel.co.uk, 1 aviasales.gq, 1 aviasalon.spb.ru, 1 +aviasg.com, 1 aviaskan.ru, 1 aviationcareerpal.com, 1 aviationhistorygeeks.site, 1 @@ -16411,6 +16543,7 @@ aviations-engineering.tk, 1 aviationsafetywiki.org, 1 aviationstrategies.aero, 1 aviationstrategy.aero, 1 +aviationweather.gov, 1 aviationzone.tk, 1 avibirds.com, 1 avicena.al, 1 @@ -16425,7 +16558,6 @@ avif.tf, 1 avilatinoamerica.com, 1 avilauto.net, 1 aviles.com.sv, 1 -avinade.com, 1 avinguard.com, 1 avinilo.com, 1 avinode.com, 1 @@ -16438,11 +16570,12 @@ avionicbooks.tk, 1 avions.ga, 1 aviorair.com, 0 aviprime.by, 1 -avirahost.com.br, 1 aviruptribedi.com, 1 +avisbabes.com, 1 avishanx.com, 1 avishwebsoft.com, 1 avisodeprivacidad.info, 0 +avisofi-credit-immobilier.fr, 1 avisoshuaraz.tk, 1 avisoversigten.dk, 1 avispl.com, 0 @@ -16511,6 +16644,7 @@ avroramine.tk, 1 avs.be, 1 avsd01.com, 1 avstack.io, 1 +avstekla.ru, 1 avt-ukraine.com, 1 avtechno.ru, 1 avtecmedia.com, 0 @@ -16522,7 +16656,7 @@ avto-signal.ml, 1 avtochip.tk, 1 avtodoki.tk, 1 avtodot.tk, 1 -avtoforex.ru, 0 +avtoforex.ru, 1 avtogara-isperih.com, 1 avtojurist.ml, 1 avtojurist.tk, 1 @@ -16538,14 +16672,13 @@ avtoucheba.tk, 1 avtours.gr, 1 avtoveles.by, 1 avtovikup.ml, 1 -avtovokzaly-ua.com, 1 avtovokzaly.ru, 1 avtoyurist.cf, 1 avtoyurist.ga, 1 avtoyurist.gq, 1 avtoyurist.ml, 1 avtoyurist.tk, 1 -avtp.org, 1 +avu.cz, 1 avus-automobile.com, 1 avuxi.com, 1 avv.li, 1 @@ -16553,7 +16686,7 @@ avvaterra.ch, 1 avvnicolaurbani.ch, 1 avvocato.bologna.it, 1 avvocatoinlinea.it, 1 -avvoka.com, 0 +avvoka.com, 1 avweb.tk, 1 aw.gov.pl, 1 aw.net, 1 @@ -16575,10 +16708,11 @@ awardshub.com, 1 awardsuite.com, 1 aware.org.sg, 0 awarego.com, 1 -awarelab.io, 1 awaremi-tai.com, 1 awarenessadvisor.ga, 1 awarenessadvisorest.ga, 1 +awaresec.com, 1 +awaresec.no, 1 awareservices.com, 0 awaretrain.com, 1 awarity.be, 1 @@ -16589,7 +16723,7 @@ awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw.gay, 1 awaybot.com, 1 awaygroundguide.com, 1 awayword.cf, 1 -awconsulting.com.sg, 0 +awconsulting.com.sg, 1 awebsome.fr, 1 awei.pub, 1 awena.me, 1 @@ -16617,6 +16751,7 @@ awo-bremen.de, 1 awo-sh.de, 1 awoau.com.au, 1 awqaf.gov.ae, 1 +awqaf.gov.ly, 1 awrcourtreporter.com, 1 awrcourtreporters.com, 1 awrcourtreporting.com, 1 @@ -16640,6 +16775,7 @@ awxg.eu.org, 1 ax.ax, 1 ax.mk, 1 ax4health.nl, 1 +axa-mandiri.co.id, 1 axa.ch, 1 axa.de, 1 axarobd.com, 1 @@ -16684,19 +16820,11 @@ axiniteguitars.ca, 1 axiniteguitars.com, 1 axioinvest.com, 1 axiom4.net, 1 -axioma-ai.ru, 1 -axiomametering.com, 1 axiome.cpa, 1 axiomecomptables.ca, 1 axiomecpa.ca, 1 axiomecpa.com, 1 axiomer.com, 1 -axiomer.es, 1 -axiomer.eu, 1 -axiomer.me, 1 -axiomer.net, 1 -axiomer.org, 1 -axiomer.tech, 1 axiomesolutions.ca, 1 axiomtechnologies.tk, 1 axiomwp.com, 1 @@ -16717,9 +16845,12 @@ axisunderwriting.com.au, 1 axito.au, 1 axito.com.au, 1 axitoequities.au, 1 +axitoequities.com, 1 axitoequities.com.au, 1 axitolending.au, 1 +axitolending.com, 1 axitolending.com.au, 1 +axl.net, 1 axmedmessi.tk, 1 axoftglobal.com, 1 axoftglobal.ru, 1 @@ -16733,6 +16864,7 @@ axon.link, 1 axoncoho.tk, 1 axone-computers.fr, 0 axonholdingse.eu, 1 +axonshield.com, 1 axre.de, 1 axrec.de, 1 axsc.ca, 1 @@ -16744,9 +16876,11 @@ axtux.tk, 1 axx.ax, 1 axxemble.nl, 0 axxeptinq.tk, 1 +axxess-marine.com, 1 axxial.tk, 1 axyl.cloud, 1 axzq.com, 1 +ay-daily.com, 1 ay-net.jp, 1 ay-tour.ru, 1 ayabank.us, 1 @@ -16790,9 +16924,9 @@ aylesburycastlehire.co.uk, 1 aylett.co.uk, 1 ayltoninacio.com.br, 1 aymerick-dupouey.fr, 1 +aymericlagier.com, 1 aymhome.top, 0 ayon-games.tk, 1 -ayosante.com, 1 ayothemes.com, 1 ayotteshackelford.com, 1 ayresalpine.com, 1 @@ -16901,9 +17035,10 @@ az11018.com, 1 aza.gg, 1 azadblog.tk, 1 azadliq.online, 1 -azafraneshelca.es, 1 +azairline.com, 1 azaleos.com, 1 azalhavayolu.com.tr, 1 +azallon.com.br, 1 azapp-vvv-program-api-dev.azurewebsites.net, 1 azaria.blog, 1 azarkepic.com, 1 @@ -16918,7 +17053,6 @@ azbuka-kharkov.com.ua, 1 azcensus2020.gov, 1 azdailysun.com, 1 azdevsmartviewwebportal.azurewebsites.net, 1 -azdine.fr, 1 aze.dk, 1 azehosting.net, 1 azemardstephanie.com, 1 @@ -16948,8 +17082,6 @@ azienda-tv.tk, 1 azimech.net, 1 azimut.fr, 1 azimuth-ast.ru, 1 -azimuthint.com, 1 -azimutmedical.com, 1 azinfoolad.com, 1 azingostar.tk, 1 azithromycin.ga, 1 @@ -16972,18 +17104,17 @@ azorin.tk, 1 azort.com, 1 azotobacter.nl, 1 azoulaygroup.org, 1 -azovgroup.com, 1 azplayersclub.com, 1 azpousivmechu.cz, 1 azquality.com, 1 azrangers.gov, 1 +azraxiel.de, 1 azredistricting.gov, 1 azrevolutionizingckd.com, 1 azrhymes.com, 1 azs-nw.ru, 1 azsalud.gov, 1 azsec.biz, 1 -azshop.ro, 1 azso.pro, 1 azsoriginal.pw, 0 azsupport.com, 1 @@ -17013,7 +17144,6 @@ azur.ovh, 1 azura-retreats.com, 1 azure, 1 azure-informatique.cloud, 1 -azure-rbac-catalog.org, 1 azurecraft.ga, 1 azurecup.cz, 1 azurecup.online, 1 @@ -17032,7 +17162,6 @@ azzorti.co, 1 azzorti.com, 1 azzorti.pe, 1 azzurrapelletterie.it, 1 -b-12.ai, 1 b-angel.info, 1 b-b-law.com, 1 b-coal.com, 0 @@ -17041,6 +17170,7 @@ b-designer.tk, 1 b-digital.cf, 1 b-digital.ga, 1 b-digital.gq, 1 +b-entropy.com, 1 b-freerobux.ga, 1 b-honey.gr, 1 b-institute.ml, 1 @@ -17048,7 +17178,6 @@ b-landia.net, 1 b-lenos.com, 1 b-m-druck.de, 1 b-root-force.de, 1 -b-secure.co, 1 b-services.net, 0 b-swiss.com, 1 b-ticket.ch, 1 @@ -17058,7 +17187,6 @@ b-utstore.com, 1 b-wartburg.de, 1 b.ee, 1 b.ls, 1 -b.lu, 1 b.wtf, 1 b00de.ga, 1 b0hr.ai, 1 @@ -17067,8 +17195,6 @@ b0rk.com, 1 b1.work, 1 b1031.com, 1 b11p.com, 1 -b12-labs.com, 1 -b12labs.ai, 1 b131000.com, 0 b1c1l1.com, 1 b1drivers.com, 1 @@ -17078,10 +17204,12 @@ b1nzy-pinged.me, 1 b1r0d4l0m.com, 1 b1rd.tk, 1 b24.pt, 1 +b2b-leads.nl, 1 b2b-nestle.com.br, 1 b2bazun.com, 1 b2bchiemihara.com, 1 b2be.com, 1 +b2bespada.com, 1 b2bimmo.ch, 0 b2binpay.com, 0 b2bmail.ga, 1 @@ -17089,9 +17217,7 @@ b2bpoke.com, 1 b2markt.de, 1 b2music.asia, 1 b2og.com, 1 -b3313.org, 1 b3bra.win, 1 -b3ia.com, 1 b3pacific.com, 1 b3t4.org, 1 b3tec.fr, 1 @@ -17103,6 +17229,7 @@ b4lint.hu, 1 b4r7.de, 1 b4z.eu, 1 b5197.co, 1 +b5dev.com, 1 b5i.net, 1 b61688.com, 1 b62aa.com, 1 @@ -17140,6 +17267,7 @@ b70663.com, 1 b70664.com, 1 b70884.com, 1 b70991.com, 1 +b70992.com, 1 b70993.com, 1 b70994.com, 1 b70995.com, 1 @@ -17161,6 +17289,7 @@ b88vip9.com, 1 b8a.me, 1 b9168.com, 0 b9297.co, 1 +b9498.com, 1 b9586.net, 1 b9588.net, 1 b95888.net, 1 @@ -17206,6 +17335,7 @@ b9999vv.com, 1 b9999yy.com, 1 b9winner.com, 1 ba.sh, 1 +ba7jcm.live, 1 ba7jcm.top, 1 ba7rain.tk, 1 baaam.se, 1 @@ -17229,6 +17359,7 @@ babakhanalia.tk, 1 babakortane.ga, 1 babakshaabani.tk, 1 babamamatermek.hu, 1 +babanor.com, 1 babaog.com, 1 babarkata.com, 1 babaroxi4j2.com, 0 @@ -17240,13 +17371,13 @@ babbel.tk, 1 babbelchat.tk, 1 babbels.com, 1 babblefeed.tk, 1 -babeatlas.com, 1 babehunt.tk, 1 babekids.tk, 1 babel.es, 1 babel.nl, 1 babel.ua, 1 babeleo.com, 1 +babelfisch.eu, 1 babelfish.money, 1 babes.com, 1 babesnetwork.com, 1 @@ -17299,11 +17430,10 @@ babyfotograf-schweiz.ch, 1 babygearlab.com, 1 babygirlholidaydresses.tk, 1 babyhealthsummit.pt, 1 -babyhop.pl, 1 babyinthehouse.com.br, 1 babykappy.com, 1 babylonclub.cf, 1 -babymall.hk, 1 +babymall.hk, 0 babymasaze.cz, 1 babymozg.ga, 1 babynamen.nl, 1 @@ -17318,6 +17448,7 @@ babyprice.fr, 0 babysafety.tk, 1 babyscripts.com, 1 babysdishes-bowls.tk, 1 +babysets.eu, 1 babyshopsupport.com.au, 1 babyshower.cf, 1 babysiti.hopto.org, 1 @@ -17345,7 +17476,6 @@ bacgroupdigital.com, 1 bacgroupinc.com, 1 bacgrouppublishing.com, 1 bach-frederiksen.dk, 1 -bacharach.law, 1 bachata.berlin, 1 bachata.info, 1 bache-barre.fr, 1 @@ -17394,7 +17524,6 @@ backmark.tk, 1 backmitra.com, 1 backmitra.mx, 1 backmitra.nl, 1 -backown.de, 1 backpacken.org, 1 backpackinglight.com, 0 backpackingtours.com, 1 @@ -17406,6 +17535,7 @@ backscattering.de, 0 backschues.com, 1 backschues.de, 1 backschues.net, 1 +backseatbandits.com, 1 backslash-n.com, 1 backsliderz.uk, 1 backstienkboys.tk, 1 @@ -17423,6 +17553,7 @@ backwardsalphabet.tk, 1 backwpup.com, 1 backy2.com, 1 backyardaddict.com, 1 +backyardbella.com, 1 backyardchickens.com, 1 backyardtaco.com, 1 backzoneterapi.dk, 1 @@ -17460,6 +17591,7 @@ badaniebezdechu.pl, 1 badanteinfamiglia.it, 1 badaparda.com, 1 badass-women.club, 1 +badass.software, 1 badassdallascondo.com, 1 badassfantastico.tk, 1 badbee.cc, 1 @@ -17472,14 +17604,14 @@ badcomputer.tk, 1 badcyber.com, 1 baddrones.llc, 1 badeand.net, 1 +baden-airpark.de, 1 +badenbody.nl, 1 bader-jungk.de, 1 baderidris.com, 1 badeurlaub.tk, 1 badf00d.de, 1 badge.rs, 1 -badgeboundprep.com, 1 badgerherald.com, 1 -badgeron.io, 1 badges.fedoraproject.org, 1 badges.stg.fedoraproject.org, 1 badgetree.com, 1 @@ -17502,7 +17634,6 @@ badmintonargentina.tk, 1 badmintonbeersheva.co.il, 1 badmintonclubwaarschoot.tk, 1 badmintondk.cz, 0 -badmintonline.nl, 1 badmintonoverdag.tk, 1 badmonkey.fr, 1 badmood.tk, 1 @@ -17512,11 +17643,13 @@ badnat.tk, 1 badnjar.rs, 1 badodds.ga, 1 badoinkvr.com, 1 +badoo.com, 1 badoo.com.ar, 1 badoo.de, 1 badoo.eu, 1 badoo.us, 1 badpc.net, 1 +badphilosopher.com, 1 badpinguin.gq, 1 badpreachers.tk, 1 badrap.io, 1 @@ -17528,7 +17661,6 @@ badrock.tk, 1 badsam.fr, 1 badseacoffee.com, 1 badsl.nl, 1 -badsmtp.com, 1 badstar.tk, 1 badtimesrecords.com, 0 badudeal.lk, 1 @@ -17547,9 +17679,7 @@ baells.tk, 1 baer-concepts.de, 1 baer-holger.de, 0 baer.space, 1 -baerlin-umzuege.de, 1 baesystems-she.com, 1 -baeverdock.com, 1 baevserver.ddns.net, 1 bafing.com, 1 bafoeg-rechner.de, 1 @@ -17581,7 +17711,6 @@ bagssale.ga, 1 bagu.biz, 1 bagu.fr, 1 bagumum-kotakediri.com, 1 -baguncadamente.com, 1 bagusat.com, 1 bagwrap.com, 1 bahadirh.ml, 1 @@ -17599,6 +17728,7 @@ bahnhelden.de, 1 bahnonline.ch, 1 bahrain.gq, 1 bahraincredit.com.bh, 1 +bahrainmarina.bh, 0 bahrainonline.tk, 1 bahrep.com, 1 bahri.sa, 1 @@ -17606,6 +17736,7 @@ bai-bao.fr, 1 baic-versicherung.de, 1 baichi.cf, 1 baichi.ml, 1 +baier-michels.com, 1 baif.hr, 1 baifubao.com, 1 baikal-news.net, 1 @@ -17615,9 +17746,10 @@ baikalfond.ml, 1 baikalppk.tk, 1 baiki.ch, 1 bailbondsdirect.com, 1 +baildonbouncycastles.co.uk, 1 baildonhottubs.co.uk, 1 baileebee.com, 1 -baileyladders.com.au, 0 +baileyladders.com.au, 1 baileysharborwi.gov, 1 baileystrailsystem.org, 1 baileyventuresllc.com, 1 @@ -17662,7 +17794,6 @@ bajofondoradio.tk, 1 bajominimos.tk, 1 bajune.tk, 1 bajuyasta.com, 1 -bajzikaron.hu, 1 bak.my.id, 0 baka-gamer.net, 0 baka.ms, 1 @@ -17672,7 +17803,6 @@ baka.red, 1 bakabt.info, 1 bakanin.ru, 1 bakaproxy.moe, 1 -bakar.ca, 1 bakbi.tk, 1 bakchich.biz, 1 bakcor.com, 1 @@ -17689,20 +17819,24 @@ bakercountyor.gov, 1 bakercountysheriffor.gov, 1 bakersafari.co, 1 bakersfieldhomeoffer.com, 1 +bakerviewdentalcentre.com, 1 bakerymazowsze.co.uk, 1 -bakesy.shop, 0 +bakesy.shop, 1 bakeup.be, 1 bakibal.com, 1 bakingbydonna.com, 1 bakivaxti.az, 1 +bakkerij-janschrieks.nl, 1 bakkerinjebuurt.be, 1 bakkerpanden.nl, 1 bakkersmolen.tk, 1 bakkerstraatfeesten.tk, 1 +bakkt.com, 1 bakkus.tk, 1 bakla.ml, 1 baklavabg.com, 1 bakongcondo.com, 1 +bakrypt.io, 1 baks.cf, 1 baksclub.cf, 1 baksclub.gq, 1 @@ -17730,7 +17864,6 @@ balance.courses, 1 balance.education, 1 balance.equipment, 1 balance.technology, 1 -balanceandtest.com, 1 balancecreamers.ga, 1 balancecreamest.ga, 1 balancedbrawl.net, 1 @@ -17748,6 +17881,7 @@ balaskas.gr, 1 balatonlelleapartman.tk, 1 balboa.io, 1 balboa.org.uk, 1 +balboacapital.com, 1 balbus.tk, 1 balca.ga, 1 balcaonet.com.br, 1 @@ -17762,13 +17896,13 @@ baldwin-mania.tk, 1 baldwin.com, 1 baldwin.com.au, 1 baldwinparkca.gov, 1 +baleen.us, 1 baleinesendirect.org, 1 balelabs.id, 1 balerma.tk, 1 balesetvedelem.hu, 1 balester.com, 1 balezovolley.fr, 1 -balfourbeattygroundengineering.com, 1 balfourbeattytraining.co.uk, 1 balharbourshops.com, 1 balia.de, 1 @@ -17818,11 +17952,12 @@ balloonbeautiesli.com, 1 ballotapi.com, 1 ballotaudit.com, 1 ballpythonsaspets.com, 1 +ballrace.ph, 1 +ballroompages.com, 1 ballstonspa.gov, 1 balluncar.tk, 1 ballweg-tech.de, 1 balneariodearchena.com, 1 -balo2.com, 1 baloch-intelligence.tk, 1 balochism.tk, 1 baloncestoarqueros.tk, 1 @@ -17861,7 +17996,7 @@ bamboohr.com, 1 bamboorose.com, 1 bamboostage.com, 1 bambooviews.com, 1 -bambora.com, 0 +bambora.com, 1 bambrick.com.au, 0 bambuitalia.it, 1 bambukshop.ml, 1 @@ -17873,18 +18008,19 @@ bamifm.tk, 1 bamily.rocks, 1 baming.com, 1 bammatta.ch, 1 +bamoza.com, 1 bampers.tk, 1 ban-list.gq, 1 banabarka.tk, 1 banafsheh.net, 1 banajanitorialservices.com, 1 +bananagays.com, 1 banananet.work, 1 bananathrash.tk, 1 bananatreenews.today, 1 bananatrunkingprotocol.com, 1 bananavapes.com, 1 bananenbr0t.de, 1 -bananes.top, 1 banania.fr, 1 bananice.moe, 1 bananium.fr, 1 @@ -17897,7 +18033,6 @@ banch.io, 1 bancoagricola.com, 1 bancoatlantida.com.ni, 1 bancobica.com.ar, 1 -bancobig.es, 1 bancobpm.it, 1 bancodeloja.fin.ec, 1 bancoeconomico.ao, 1 @@ -17932,7 +18067,6 @@ bandidosmc.com, 1 bandiere-mondo.it, 1 bandiga.it, 1 bandirmaevdenevenakliyat.tk, 1 -bandithost.com, 1 bandmentor.com, 1 bandmine.com, 1 bandnames.tk, 1 @@ -17955,7 +18089,9 @@ banes-lab.com, 1 banes.ch, 1 banfieldentertowin.com, 0 banfieldtravel.it, 1 +banfun.org, 1 bangabandhu.tk, 1 +bangandscrew.com, 1 bangbangboys.tk, 1 bangberlin.tk, 1 bangbros.com, 1 @@ -17974,7 +18110,6 @@ banglahotstory.tk, 1 banglargolpo.tk, 1 banglatec.tk, 1 banglets.com, 1 -bangogolufsen.is, 1 bangphai.com, 1 bangsparks.com, 1 bangujero.tk, 1 @@ -17982,6 +18117,7 @@ banham.co.uk, 0 banham.com, 1 banhphongtomquangtran.com, 1 bani-hashem.tk, 1 +banijay.com, 1 banimarket.by, 0 banja-kulasi.ga, 1 banjonelson.tk, 1 @@ -17999,14 +18135,12 @@ bankassafa.com, 1 bankasubeleri.tk, 1 bankbranchlocator.com, 1 bankcib.com, 1 -bankconverter.co.uk, 1 bankcustomer.gov, 1 bankcustomerassistance.gov, 1 bankee.us, 1 bankenconfigurator.nl, 1 banker.vn, 1 bankera.com, 1 -bankers-ins.com, 1 banket-furshet-spb.ru, 1 banketbesteld.nl, 1 bankffin.kz, 0 @@ -18067,6 +18201,7 @@ bannockcounty.gov, 1 bannockcountyidaho.gov, 1 bannsecurity.com, 1 banquevanbreda.be, 0 +banri.me, 1 bansenkou.co.jp, 1 bantaihost.com, 1 bantchev.com, 1 @@ -18090,16 +18225,9 @@ baoge55.com, 1 baogiathicongnoithat.com, 1 baokhangfood.com, 1 baokhanhhoa.vn, 1 -baooyony.xyz, 1 -baoqibiao.com, 1 baoquangninh.vn, 1 baoxiache.com, 1 baoxue5.com, 0 -baoyoany.xyz, 1 -baoyony.com, 1 -baoyony.xyz, 1 -baoyoony.xyz, 1 -baoyoyny.xyz, 1 bapeel.tk, 1 bapha.be, 1 baptist-colleges.com, 1 @@ -18125,7 +18253,6 @@ baratzegrowshop.com, 1 baravalle.com, 1 baraxolka.ga, 1 baraxolka.ml, 1 -barbar.codes, 1 barbara-bertagnolli.co.uk, 1 barbara-fuchs-gruene-fuerth.de, 1 barbarabryce.com, 1 @@ -18133,11 +18260,12 @@ barbaraedanielsantos.ga, 1 barbarafabbri.com, 1 barbaramoorman.tk, 1 barbarareynoldsphotography.com, 1 +barbarianbear.art, 1 barbarians.com, 0 -barbas.com, 1 barbate.fr, 1 barbatulsuperior.ro, 1 barbeirocetif.com.br, 1 +barbericonic.com, 1 barberscorner.tk, 1 barbershop-harmony.org, 0 barbershopbabo.com, 1 @@ -18146,7 +18274,7 @@ barbiecollectorjapan.ga, 1 barbiecollectorjapan.gq, 1 barbieforteza.tk, 1 barbinlaw.com, 1 -barbnow.com, 0 +barbnow.com, 1 barbonnetje.nl, 1 barbosha.ru, 1 barbourcountyal.gov, 1 @@ -18177,10 +18305,8 @@ bardes.org, 1 bardfarm.org, 1 bardian.net, 1 bardian.org, 1 -bardiharborow.com, 1 bardoferry.com, 1 bardtech.com, 1 -bardtini.com, 1 barduschinamusic.org, 1 barefoodinrome.it, 1 barelias.tk, 1 @@ -18189,7 +18315,6 @@ barentsz.co, 1 barer.me, 1 baretee.com, 1 barexam.jp, 1 -bargain-storage.com, 1 bargaindentistsers.ga, 1 bargaindentistsest.ga, 1 bargainsettelement.com, 1 @@ -18204,6 +18329,7 @@ bargroup.ga, 1 barhan-sarykum.ru, 1 bari.fun, 1 bariatricassociates.com, 1 +bariatrik.ro, 1 barihandin.tk, 1 barikell.be, 1 barinasknot.tk, 1 @@ -18220,13 +18346,11 @@ baritoday.it, 1 barke-schaltanlagen.de, 1 barkerandstonehouse.co.uk, 1 barkerjr.xyz, 1 -barkesh.de, 1 barkingspidersaspets.com, 1 barkio.com, 1 barklanepets.com, 0 barkmembership.com, 1 barkstop.net, 1 -barlaplana.es, 1 barlettaviva.it, 1 barlex.pl, 1 barley.com, 1 @@ -18234,7 +18358,6 @@ barleyandbirch.com, 1 barlogova.sk, 1 barlotta.net, 1 barlow-media.club, 1 -barm.cc, 1 barmenteros.com, 1 barmusic.tk, 1 barnabycolby.io, 1 @@ -18248,14 +18371,12 @@ barney-media.com, 1 barneydavey.com, 1 barnflix.net, 1 barnhomega.com, 1 -barnman.de, 1 barnumiidev.com, 1 barnunnwy.gov, 1 barnvaensveitarfelog.is, 1 barnvets.co.uk, 1 barnwellcountysc.gov, 1 barobax.tk, 1 -barobirlik.org.tr, 1 barobot.net, 1 barocco.by, 1 baroclean.fr, 1 @@ -18288,7 +18409,7 @@ barranquillero.tk, 1 barraqueirotransportes.pt, 1 barrasaccess.com, 1 barratennis.com.br, 1 -barrebody.com.au, 0 +barrebody.com.au, 1 barreiroappraisals.com, 1 barrelfish.org, 1 barrencountyky.gov, 1 @@ -18298,7 +18419,7 @@ barrikade.tk, 1 barristerconnect.com, 0 barro.ga, 1 barruntos.tk, 1 -barrybutcher.com, 1 +barrybulakites.co, 0 barrycountye911.gov, 1 barrydenicola.com, 0 barrymarkus.tk, 1 @@ -18312,6 +18433,7 @@ bart-f.com, 1 bart-f.net, 1 bart1ebee.com, 1 bartal.org, 1 +bartalomej.de, 1 bartavi.nl, 1 bartbania.com, 1 bartcoppens.be, 1 @@ -18341,7 +18463,6 @@ baruzdin.online, 1 barvarsovia.es, 1 barwave.com, 1 barzallof.com, 1 -barzus.com.ua, 1 barzza.tk, 1 bas.bio, 1 bas.codes, 1 @@ -18349,19 +18470,18 @@ bas.fm, 1 bas.sh, 1 bas.surf, 1 bas.work, 1 -basakkayabeauty.com, 1 basalticfarms.com, 1 basauristudios.com, 1 basaveshwaraborewells.tk, 1 basculasconfiables.com, 1 basdferty.cf, 1 base-autonome-durable.com, 0 -base-eromassage.ru, 1 base-people.ml, 1 base-radio.cf, 1 base-ui.com, 1 base27.eu, 0 base2face.tk, 1 +base48.systems, 1 basebalance.net, 1 baseballcrank.com, 1 baseballjapan.org, 1 @@ -18374,8 +18494,8 @@ baseconvert.com, 1 basecore.co, 1 based.gr, 1 based.win, 1 -basedoll.cn, 1 basedonline.nl, 1 +basedriver.com, 1 baseerapp.com, 1 baseerat-academy.com, 1 basel-gynaecology.com, 1 @@ -18435,7 +18555,6 @@ basilm.co, 1 basilsys.com, 1 basirahang.com, 1 basis-online.eu, 1 -basisdata.nl, 1 basisonline.nl, 1 basisonlinefiles.nl, 1 basisschoolhundelgem.be, 1 @@ -18449,6 +18568,7 @@ basketballnewz.tk, 1 basketforex.com, 1 basketglucholazy.pl, 1 basketsandmore.bg, 1 +basketskenya.com, 1 baskingalkin.tk, 1 basllp.co.uk, 1 basmacioglu.com, 1 @@ -18484,13 +18604,10 @@ basteltips.tk, 1 bastelwelt.ch, 1 bastelzauberwelt.de, 1 bastenhorst.de, 0 -bastian-fluegel.de, 1 bastille.net, 1 bastillebsd.org, 1 -bastion-scan.eu, 1 bastionadvokat.ml, 1 bastionentifo.tk, 1 -bastionthermalworks.com, 1 bastisgroup.com, 1 bastolino.de, 1 bastotrekking.pt, 1 @@ -18533,13 +18650,13 @@ batch.com, 0 batchfoundation.org, 1 batchjob.ai, 1 batchroom.com, 1 +batdongsancongnghiep.vn, 0 bateaux-sans-permis.com, 0 batechnic.dk, 1 batelco.com, 1 batemanbuilds.com, 1 bateriaprofesional.es, 1 baterias.com, 1 -bateriasencasa.com, 1 baterioverolety.cz, 1 batescountymo.gov, 1 batesvillearkansas.gov, 1 @@ -18559,12 +18676,12 @@ bathroomsinkcabinet.tk, 1 bathscobensraker.ga, 1 bati-alu.fr, 1 bati-consult.fr, 1 -batiburrillo.net, 1 +batiburrillo.net, 0 batiim.co.il, 1 batipiscine.com, 1 batipresta.ch, 0 batista.g12.br, 1 -batistasbakery.com, 0 +batistasbakery.com, 1 batitrakya.org, 1 batiweb.tv, 1 batiwebgroup.com, 0 @@ -18592,21 +18709,18 @@ batterymax.org, 1 batteryreconditioning.ml, 1 battl-victory-records.com, 1 battle-arena.tk, 1 -battle-scars.org.uk, 1 -battlecruiser.ch, 1 battlefield1942.tk, 1 battleforkhashuri.tk, 1 battlefrontoldschool.cf, 1 battlegroundproductions.org, 1 battleguard.net, 1 -battleleague.com.br, 1 battlemedialab.com, 1 +battleofthegridiron.com, 1 battlerealms.cc, 1 battlerite.tk, 1 -battlescars.org.uk, 1 -battlescarsselfharm.org.uk, 1 battletech.tk, 1 battletrades.net, 1 +battoota.ma, 1 battreil.tk, 1 batualam88.id, 1 batualam88.online, 1 @@ -18622,7 +18736,6 @@ bauchtanz.tk, 1 bauer-plus.de, 1 bauer-reininghorses.com, 1 bauer.network, 0 -bauermediaoutdoor.co.uk, 1 bauermediaoutdoor.com, 1 bauermediaoutdoor.nl, 1 bauernhof-koch-edingen.de, 1 @@ -18645,6 +18758,7 @@ baufiexpress.eu, 1 baufiexpress.info, 1 baufiexpress.net, 1 baufiexpress.org, 1 +baugelitt.eu, 1 baugemeinschaftbernstein.de, 1 baugeshite.de, 1 bauhaus.cz, 1 @@ -18652,9 +18766,7 @@ bauhaus.sk, 1 bauhoftoo.ee, 1 baukebies.nl, 1 baukelek.tk, 1 -baulio.de, 1 baum-gruenpflege.de, 1 -baumaniswildfire.ca, 1 baumannfabrice.com, 1 baumansound.com, 1 baumbet.ro, 1 @@ -18663,6 +18775,7 @@ baumgarten-sanitaer.de, 1 baumkletterschule.de, 1 baumkuchen-aus-dresden.de, 0 baummer.com.br, 1 +bauplanmanager.com, 1 baurs.com, 1 bausep.de, 1 bausparkassen.tk, 1 @@ -18674,7 +18787,6 @@ bav.com, 1 bavaria-feuerloeschershop.de, 1 bavarovillage.com, 1 bavartec.de, 1 -baverdock.com, 1 bavi.tk, 1 bavoogi.com, 1 bawag.at, 1 @@ -18701,6 +18813,7 @@ bayareaexteriorsmd.com, 1 bayareamustangs.tk, 1 bayareaplasticsurgery.com, 1 bayashi.net, 1 +bayati.me, 1 baycialis.net, 1 baycitymi.gov, 1 baycountyfltax.gov, 1 @@ -18750,6 +18863,7 @@ bazaarcompass.com, 1 bazaart.com, 1 bazaart.me, 1 bazaclub.ru, 0 +bazafashion.com, 1 bazahub.club, 1 bazait.com, 1 bazaleev.ru, 1 @@ -18757,17 +18871,18 @@ bazar-online.tk, 1 bazar-pc.tk, 1 bazar.bg, 0 bazaralsham.com, 1 +bazarchy.com, 1 bazardelregalo.es, 1 bazardunet.tk, 1 bazarfds.com.br, 1 bazarotehijos.com, 1 bazarow.ru, 0 bazdell.com, 0 +bazdidaval.ir, 1 baze.cz, 1 bazel.build, 1 bazhan.wang, 1 bazinga-events.nl, 1 -bazis-kazan.ru, 1 bazomag.pl, 1 bazooka.se, 1 bazos.at, 1 @@ -18786,19 +18901,16 @@ bb9297.co, 1 bb9728.co, 1 bbaccademia.it, 1 bbalposticino.it, 1 +bbamsch.com, 0 bbansw.asn.au, 1 -bbb-dl.com, 1 bbb00.com, 1 bbb1991.me, 0 bbb4all.de, 1 bbbb.loan, 1 bbbbb.men, 1 -bbbexpo.com, 1 bbbff.net, 1 -bbbswcmd.org, 1 bbc.co.uk, 0 bbc.com, 0 -bbc.in.net, 1 bbcastles.com, 1 bbcentertainment.au, 1 bbcincorp.com, 1 @@ -18829,11 +18941,13 @@ bblsa.ch, 0 bbmagnagrecia.it, 0 bbmak.tk, 1 bbmri.fi, 1 +bbmsarauniteam.com, 1 bbnx.net, 1 bbox.org, 1 bbp.ng, 1 bbpnas.win, 1 bbqenbites.nl, 1 +bbqs-algarve.com, 1 bbqstars.com, 1 bbrassart.fr, 1 bbrigittae.hu, 1 @@ -18843,7 +18957,6 @@ bbs-buchholz.eu, 1 bbschat.tk, 1 bbsec.xyz, 1 bbsis.org, 1 -bbt.com.vn, 1 bbusa.tk, 1 bbw-wrestling.com, 1 bbwanalsex.com, 1 @@ -18866,10 +18979,10 @@ bcalles.eu, 1 bcallesen.dk, 1 bcallesen.eu, 1 bcansw.com.au, 1 -bcare.health, 1 bcarpentrypro.com, 1 bcbsfepvision.com, 1 bcbudonline.com, 1 +bccbank.coop, 1 bcccremeno.it, 1 bccx.eu.org, 1 bccxo.com, 1 @@ -18894,6 +19007,7 @@ bcm.is, 0 bcmguide.com, 1 bcmhire.co.uk, 1 bcn.cv, 1 +bcnation.com, 1 bcnet.com.hk, 1 bcoffices.com.mx, 1 bcomm.com.au, 1 @@ -18931,6 +19045,7 @@ bda-boulevarddesairs.com, 0 bdasites.in, 1 bdbe.ga, 1 bdbpayroll.com, 1 +bdbxml.net, 1 bdcdev.in, 1 bdd.fi, 1 bddam.fr, 1 @@ -18944,16 +19059,15 @@ bdic.ca, 1 bditsolutions.com, 1 bdix.link, 1 bdli.de, 1 +bdmarketer.com, 1 bdmelbet.mobi, 1 bdmusic25.us, 1 bdo-tools.jp, 1 bdo.com, 1 bdpachicago.tech, 1 -bdplus.cc, 1 bdpn.ru, 1 bdrmedia.rs, 1 bdrops.de, 1 -bdsd.pl, 1 bdsm-erotik.com, 1 bdsmbibliothek.net, 1 bdsmcontrol.com, 1 @@ -18967,13 +19081,14 @@ bdtechnews.tk, 1 bdxmedia.cloud, 1 be-craft.de, 1 be-free.gq, 1 +be-real.life, 0 be-sigsol.fr, 1 +be-tech.nl, 1 be-the-story.com, 1 be-up-developpement.com, 1 be-wear.ch, 1 be-webdesign.com, 1 be.ax, 1 -be.brussels, 1 be.search.yahoo.com, 0 be.st, 1 be2cloud.de, 1 @@ -18990,6 +19105,7 @@ bea.gov, 1 beabadoartesanato.com.br, 1 beable.com, 1 beacham.online, 1 +beachcitiestaxandaccounting.com, 1 beachcitybody.com, 1 beachcitycastles.com, 0 beachcruisers.tk, 1 @@ -19011,6 +19127,7 @@ beaconfed.org, 1 beacongaragedoors.com, 1 beaconhealthoptions.com, 1 beaconinvesting.com, 1 +beaconinvestingetfs.com, 1 beaconny.gov, 1 beadaptive.ca, 1 beadare.com, 1 @@ -19039,7 +19156,6 @@ beam.mw, 1 beamdisinfo.org, 1 beamitaly.tk, 1 beamitapp.com, 1 -beamleaks.com, 1 bean-jam.jp, 1 beanbot.party, 1 beanboygames.com, 1 @@ -19047,8 +19163,10 @@ beancount.io, 1 beanieshow.co.uk, 1 beanilla.com, 1 beanjuice.me, 1 +beansgalore.com.au, 0 beanshencr.com, 1 beaoriflame.hu, 1 +bearblinds.com.au, 1 bearcloud.id.lv, 1 bearcosports.com.br, 1 bearcreekcubschildcare.com, 0 @@ -19070,7 +19188,6 @@ bearrun.com, 1 bearslakeinn.com, 1 bearzoutdoor.com, 1 beasel.biz, 1 -beasr.world, 1 beast-books.com, 1 beast.rent, 1 beastlog.tk, 1 @@ -19078,19 +19195,19 @@ beastnet.works, 1 beastnet.xyz, 1 beastowner.com, 1 beastowner.li, 1 -beatareszka.com, 1 +beatachoroszynska.pl, 1 beatbikers.com, 1 beatbox.zone, 1 beatbreaker.tk, 1 beatfeld.de, 1 beatfreaks.tk, 1 +beatitudes.org, 1 beatle.tk, 1 beatmaker.ml, 1 beatmalaria.org, 1 beaton.tk, 1 beatquantum.com, 1 beatrice-nightscout.herokuapp.com, 1 -beatrice-raws.org, 1 beatricedailysun.com, 1 beatriz-urbano-vega.tk, 1 beatrizaebischer.ch, 0 @@ -19119,7 +19236,6 @@ beautiful-lingerie.tk, 1 beautiful.ai, 1 beautifulart.ml, 1 beautifulbicester.co.uk, 1 -beautifulevilcompany.com, 1 beautifullybrokenwords.com, 1 beautifulplaces.tk, 1 beautifulreflectionsmedspa.com, 1 @@ -19128,6 +19244,7 @@ beautifulsouth.tk, 1 beauty-blog.gq, 1 beauty-form.ir, 1 beauty-haircare.tk, 1 +beauty-salon-lino.com, 1 beauty-schools.com, 1 beauty-stories.tk, 1 beauty-style.ml, 1 @@ -19152,6 +19269,7 @@ beautyby.tv, 1 beautycarepack.com.ng, 1 beautycoiffures.com, 1 beautycom.club, 1 +beautycon.com, 1 beautycon.ir, 1 beautyeyewear.ga, 1 beautyforce.bg, 1 @@ -19164,41 +19282,18 @@ beautyoverture.com, 1 beautyqlick.com, 1 beautyschool.od.ua, 1 beautyspot.tk, 1 +beautystudio-linda.com, 1 beautytechpro.ro, 1 beautytherapies.gr, 1 beautywien.at, 1 beaver-creek.ga, 1 beavercityut.gov, 1 beaverdamautos.com, 1 -beaverdck.com, 1 -beaverdoc.com, 1 -beaverdocj.com, 1 -beaverdock.ai, 1 -beaverdock.co, 1 -beaverdock.com, 1 -beaverdock.io, 1 -beaverdock.net, 1 -beaverdock.org, 1 -beaverdock.us, 1 -beaverdock.xyz, 1 -beaverdocl.com, 1 -beaverdok.com, 1 -beaverdokc.com, 1 -beaverdovk.com, 1 -beaverdoxk.com, 1 -beaverdpck.com, 1 -beaverdsck.com, 1 -beaverfock.com, 1 beaverheadcountymt.gov, 1 -beaverock.com, 1 -beaversock.com, 1 -beaverstreetcafe.com, 1 beavertails.com, 1 beavertales.ca, 1 beavillabea.it, 1 beavivo.de, 0 -beavrdock.com, 1 -beavredock.com, 1 bebaspedia.com, 1 bebbiboni.tk, 1 bebche.bg, 1 @@ -19211,10 +19306,10 @@ bebef.de, 1 bebefofuxo.com.br, 1 bebemamae.com, 1 bebes.uno, 1 +bebesreborns.com, 1 bebest.gov, 1 bebetrotteur.com, 1 bebidasrd.com, 1 -bebitoo.com, 1 beble.pl, 1 bebodywise.com, 1 beboldpr.com, 0 @@ -19234,6 +19329,7 @@ bebra.co, 1 bebra.cx, 1 bebra.cz, 1 bebra.ec, 1 +bebra.gl, 1 bebra.gs, 1 bebra.hn, 1 bebra.id, 1 @@ -19243,6 +19339,7 @@ bebra.io, 1 bebra.loan, 1 bebra.lu, 1 bebra.ms, 1 +bebra.pw, 1 bebrenok.trade, 1 bebrev.trade, 1 bebrik.men, 1 @@ -19260,7 +19357,6 @@ bech32.net, 1 beck.pl, 1 beckdesign.tk, 1 becker-annika.de, 1 -becker-maschinen.com, 1 becker.wales, 1 becker8.de, 1 beckermn.gov, 1 @@ -19272,12 +19368,14 @@ beckylicious.tk, 1 beclan.tk, 1 becleverwithyourcash.com, 1 beclick.co.il, 1 +becoairandheat.com, 1 becollective.com, 1 become-lucky.com, 1 become.education, 1 become.me, 1 becomewebdeveloper.tk, 1 beconnect.cf, 1 +becquerelgroup.com, 1 becs-bloomsbury.com, 1 becs.ch, 0 becydog.cz, 1 @@ -19285,7 +19383,6 @@ bed-and-breakfast-elz.de, 1 bedandbreakfast.dk, 1 bedandbreakfasteuropa.com, 1 bedandbreakfasthoekvanholland.com, 1 -bedatadriven.com, 1 bedb2-snowflake.com, 1 bedb2.com, 1 beddenscout24.nl, 1 @@ -19314,8 +19411,7 @@ bedrijfsfeest.nl, 1 bedrijfsfeesten.tk, 1 bedrijfsfotoreportages.nl, 1 bedrijfswasmachine.nl, 1 -bedrijvenparktreurenburg.nl, 1 -bedroc.com, 0 +bedroc.com, 1 bedrockcommunity.ml, 1 bedrockdata.com, 1 bedrocklinux.org, 1 @@ -19325,7 +19421,6 @@ bedrukt.nl, 1 bedskill.com, 1 bedste-datingsites.dk, 1 bedstecasinobonusser.dk, 1 -bedtco.com, 1 bedtimeflirt.com, 1 bedtimereviews.com, 1 bedum-blues.tk, 1 @@ -19347,10 +19442,10 @@ beecleanmarine.com, 1 beedsolyjas.tk, 1 beeebraa.download, 1 beefclan.tk, 1 -beefitcincy.com, 1 beeg.hu, 1 beegarage.com, 1 beehive.govt.nz, 1 +beehive.systems, 1 beehive42.com, 1 beehive42.eu, 1 beehive42.net, 1 @@ -19362,6 +19457,7 @@ beekeeper.tools, 1 beekeepingfiji.com, 1 beeksnetwork.nl, 1 beeliarspirit.org, 1 +beelikeus.pl, 1 beeline.am, 1 beelit.com, 0 beelitz.de, 1 @@ -19376,8 +19472,6 @@ beencrypted.com, 1 beenox.com, 1 beeone.nl, 1 beep.vip, 1 -beepan.com, 1 -beepanwang.com, 1 beepassvpn.com, 1 beepcar.ru, 1 beeportfolio.com, 1 @@ -19408,12 +19502,12 @@ beerview.ga, 1 beerwestmag.com, 1 beerxa.cz, 1 bees-portal.com, 1 -beesafe.pl, 1 beescloud.com, 1 beesnoosa.com, 1 beesoft.com.vn, 1 beesolve.com, 1 beesquare.fr, 0 +beestar.it, 1 beestation13.com, 1 beeswarmrehoming.com.au, 1 beesweethoney.co.za, 1 @@ -19429,7 +19523,6 @@ befantasy.tk, 1 befaster.fit, 1 beffeet.com, 1 befoodsafe.gov, 1 -before.click, 1 beforeafter.gq, 1 beforethedawn.tk, 1 beforeyoueatoc.com, 1 @@ -19492,6 +19585,7 @@ behold.gq, 1 behomewithlove.com.br, 1 behoreal.cz, 1 behotelmalta.com, 1 +behpooshshop.com, 1 behrer.se, 1 beiersdorf-svz.ch, 1 beihelsinki.de, 1 @@ -19523,7 +19617,6 @@ bekaha.de, 1 bekam.my, 1 bekeltetes.hu, 1 bekendeartiestboeken.nl, 1 -bekey.io, 1 bekmekci.tk, 1 beko.co.uk, 1 beko.ie, 1 @@ -19555,16 +19648,15 @@ belastingmiddeling.nl, 1 belayarus.tk, 1 belbin.com, 1 belcanto.cz, 1 +belcoda.com, 0 beleadsteam.com, 1 -beleaf.cz, 0 +beleaf.cz, 1 belebey.city, 1 beleefheemstede.nl, 1 belegstelle-glashuette.de, 1 -belegvandenbosch.nl, 1 beleidtransitiemodel.nl, 1 beleiu.com, 1 beleiu.de, 1 -beleiu.eu, 1 beleiu.ro, 1 belezadateresa.com.br, 1 belezashopping.com.br, 1 @@ -19572,11 +19664,11 @@ belezna.hu, 1 belf.ml, 1 belfastbounce.co.uk, 1 belfastcityairport.com, 1 -belfastgids.nl, 1 belfastjujitsu.tk, 1 belfastlocks.com, 1 belfasttechservices.co.uk, 1 belfix.be, 1 +belflex.com, 1 belfor-probleme.de, 1 belga.tk, 1 belge.rs, 1 @@ -19619,6 +19711,7 @@ belizean.com, 1 belizemap.tk, 1 belk.io, 1 belki.tk, 1 +belkinmarketing.com, 1 belknapcounty.gov, 1 belkys.net, 0 bell-meet.de, 1 @@ -19665,7 +19758,6 @@ bellisima.com.co, 1 bellissime.tk, 1 belllabs.com, 1 bellmeadtx.gov, 1 -bellop.top, 1 belloweb.tk, 1 bellowsafs.marketing, 1 bellowsglamping.co.uk, 1 @@ -19697,7 +19789,6 @@ belrosstrakh.tk, 1 belrybalka.cf, 1 bels-lijntje.nl, 1 belsilos.com, 1 -belstoneproducts.com, 1 beltanelabrosse.tk, 1 beltar.nl, 1 beltbuckle.pw, 1 @@ -19718,10 +19809,8 @@ belzhd.com, 1 belzhd.info, 1 belzhd.link, 1 belzhd.org, 1 -bemani.nl, 1 bemawi.com, 1 bembee.tk, 1 -bembem.de, 1 bemergroup.com, 1 bemestarevendasonline.online, 1 bemindful.life, 1 @@ -19741,7 +19830,6 @@ benaddi.info, 1 benadryl.ml, 1 benadryld.tk, 1 benaldirma.net, 1 -benandsallys.com, 1 benary.org, 1 benas.tk, 1 benatarfanclub.com, 1 @@ -19759,13 +19847,10 @@ bencheetham.me.uk, 1 benchling.com, 1 benchmark-dental.com, 0 benchmark-ip.com, 1 -benchmark.ge, 1 benchmarkmonument.com, 1 -benchmarkstudio.net, 1 benclarkphotography.com.au, 1 bencobuilders.co.uk, 1 bencrump.com, 1 -bendahmane.fr, 1 bendd.me, 1 bende.com.au, 0 bendechrai.com, 0 @@ -19779,6 +19864,7 @@ bendwebs.com, 1 bendyworks.com, 1 beneathvt.com, 1 beneazy.cf, 1 +benecake.cz, 1 benecol.com.sg, 1 benedetti.ca, 1 benedict-system.eu, 1 @@ -19792,7 +19878,6 @@ benedyktynki.info, 1 benee-awraham.nl, 1 benefactgroup.com, 1 benefeds.com, 1 -benefeds.gov, 1 benefitfocus.com, 1 benefitharbor.com, 1 benefits.gov, 1 @@ -19804,8 +19889,10 @@ benefitz.cf, 1 benefitz.ga, 1 benefitz.gq, 1 benefitz.ml, 1 +benefy.kz, 1 benekill.tk, 1 beneknihy.cz, 1 +benemortasia.com, 1 benemortasia.eu, 1 benemortasia.nl, 1 benemortasia.us, 1 @@ -19819,7 +19906,6 @@ benevita.life, 1 benevita.live, 1 benevita.organic, 1 benewahcountyid.gov, 1 -benficafootballcamp.lt, 1 bengalcat.tk, 1 bengalcatscare.com, 1 bengaldisom.tk, 1 @@ -19842,11 +19928,13 @@ benia.cz, 1 beniajan.tk, 1 benicee.com, 1 benidormcd.tk, 1 +benify.com, 1 benihbaik.com, 1 benimsetin.com, 1 benimsetin.org, 1 beninca.link, 1 beninrevele.bj, 1 +benizon.shop, 1 benjamin-horvath.com, 1 benjamin-suess.de, 1 benjamin-thomsen.de, 1 @@ -19869,7 +19957,6 @@ benjilopez.com, 1 benjonline.tk, 1 benkelmed.com, 1 benken.tk, 1 -benlashri.com, 1 benleb.de, 1 benleemd.com, 1 benmack.net, 1 @@ -19887,6 +19974,7 @@ benningtonne.gov, 1 benningtontownshipmi.gov, 1 bennink.me, 1 benno.frl, 1 +bennygommers.nl, 1 bennythink.com, 1 benobi.one, 0 benoit.jp.net, 1 @@ -19920,7 +20008,6 @@ bentley.blog, 1 bentley.link, 1 bentleyks.gov, 1 bento-kurumaya.co.jp, 1 -bentomesh.com, 1 bentoml.com, 1 bentoncountyia.gov, 1 bentoncountyor.gov, 1 @@ -19930,7 +20017,9 @@ bentonweatherstone.co.uk, 1 bentonwi.gov, 1 bentpunk.tk, 1 bentrask.com, 1 +benu.cz, 1 benu.rs, 1 +benulekaren.sk, 1 benunapredpis.cz, 1 benward.physio, 1 benwoo.org, 1 @@ -19956,8 +20045,7 @@ bepxl.art, 1 bepzi.com, 1 bequ1ck.com, 1 bequiia.com, 1 -bequiz.be, 1 -bera.com.au, 1 +berakal.com, 1 beran.tk, 1 berandalcorp.tk, 1 beranovi.com, 1 @@ -19978,7 +20066,6 @@ bereginy.com.ua, 1 bereginya-lada.ru, 1 beregite-zdorovje.ru, 1 beregusha.com, 1 -bereikdenbosch.nl, 1 berekenen.nl, 1 berekenhet.nl, 1 berend.tk, 1 @@ -19995,6 +20082,7 @@ bergencountyclerk.gov, 1 bergencountynj.gov, 1 bergenfieldnj.gov, 1 bergerandgreen.com, 1 +bergerfromm.com, 1 berget.ai, 1 berget.cloud, 1 bergevoet-fa.nl, 0 @@ -20021,22 +20109,20 @@ beritatopbanten.com, 0 berjou.me, 1 berk.tk, 1 berkat-luqs.ddns.net, 1 -berkeantar.com, 1 berkeleybeacon.com, 1 berkeleyca.gov, 1 berkeleypolitical.review, 1 berkhills.com, 1 berksbulls.com, 1 +berksenergyhvac.com, 1 berkshire.com, 1 -berkshiredairy.com, 1 +berkshirecapitals.com, 1 berkshireesupply.com, 0 berksholocaustmuseum.org, 1 -berksmilitaryhistorymuseum.org, 1 berkspa.gov, 1 berkspetcare.com, 1 berkswatertech.com, 1 berkvensgm.nl, 1 -berlin-chemie.pl, 1 berlin-cuisine.com, 1 berlin-flirt.de, 1 berlin-hotel.tk, 1 @@ -20070,8 +20156,6 @@ bernadettehermsen.nl, 1 bernalierpups.com, 1 bernama.com.my, 1 bernar.do, 1 -bernard-mary.com, 1 -bernard-mary.fr, 1 bernard.fr, 1 bernardbeneito.com, 1 bernardcontainers.be, 0 @@ -20083,6 +20167,8 @@ bernardwatch.com, 1 bernat.ch, 1 bernat.im, 1 bernayslab.com, 1 +bernbrucher.com, 1 +bernbrucher.de, 1 berncoclerk.gov, 1 bernd-leitner-fotodesign.com, 1 bernd-leitner-fotodesign.de, 1 @@ -20137,6 +20223,7 @@ berryevent.es, 0 berryglobal.com, 1 berrypop.info, 1 berryvillear.gov, 1 +bersadees.ir, 1 berserk.gq, 1 berserk.tk, 1 bersier.net, 1 @@ -20147,7 +20234,6 @@ bert-dijkink.tk, 1 bert.org, 1 bertaudarthur.fr, 1 bertbrockham.org.uk, 1 -berten.hu, 1 berthaphil.com, 1 berthaundcarlbenzpreis.de, 1 berthawoonsurgery.com.sg, 1 @@ -20158,18 +20244,16 @@ bertlight.com, 1 bertold.org, 1 bertolinoengineering.it, 1 bertr.am, 1 -bertrandkeller.info, 1 +bertrandkeller.info, 0 bertsmithvwparts.com, 1 bertuah.com, 1 bertusengelbrecht.com, 1 berufenavi.de, 1 -berufswahlpass.de, 1 berwickpa.gov, 1 berz.one, 1 berzkalne.co.uk, 1 besant.de, 1 besarfe.com, 0 -besatas.com, 1 besb66.club, 1 besb66.me, 1 besb66.ninja, 1 @@ -20184,6 +20268,7 @@ besensi.com, 1 besiconstruct.be, 1 besidemetal.tk, 1 besikta.se, 1 +besiktasmtsk.com, 1 besinspain.es, 1 beskar.pro, 1 besnard.me, 1 @@ -20238,11 +20323,14 @@ best-tickets.co.uk, 1 best-tickets.com.au, 1 best-trucking-schools.com, 1 best-wedding-quotes.com, 1 +best10resumewriters.com, 1 best66.me, 1 besta.tk, 1 bestaction.tk, 1 +bestads.co.il, 1 bestafricaradio.tk, 1 bestallgames.com, 1 +bestapptools.com, 1 bestarts.tk, 1 bestasquadradas.org, 1 bestastrologermohali.in, 1 @@ -20258,12 +20346,14 @@ bestbatteriesonline.com, 1 bestbernedoodles.com, 1 bestbestbitcoin.com, 1 bestbetcasino.com, 1 +bestbets.today, 1 bestbonuses.co.uk, 1 bestbookmark.cf, 1 bestbookmark.gq, 1 bestbookmark.ml, 1 bestboot.cf, 1 bestbox.be, 1 +bestbrakes.com, 0 bestbudseedbank.com, 1 bestbureau.fr, 1 bestbuyzone.com, 1 @@ -20271,7 +20361,7 @@ bestcamshow.tk, 1 bestcanvaswallart.com, 1 bestcarscyprus.com, 1 bestcavapoos.com, 1 -bestchoicehomeinspections.com, 0 +bestchoicehomeinspections.com, 1 bestclix.ml, 1 bestcms.tk, 1 bestcockalierpups.com, 1 @@ -20281,9 +20371,11 @@ bestcreditcards.me, 1 bestcreditcards.news, 1 bestcreditcards.tv, 1 bestcriminallawyerinsingapore.com, 1 +bestcrmsoftware.com, 1 bestdatingsite.ml, 1 bestdatingsite.tk, 1 bestdeal-umzug.de, 1 +bestdigitalsubscription.com, 1 bestdlsites2.tk, 1 bestdslrcameras.tk, 1 bestearningsource.com, 1 @@ -20305,7 +20397,7 @@ bestevakantieparken.be, 1 bestevakantieparken.com, 1 bestevakantieparken.nl, 1 bestfcu.org, 1 -bestfewo.de, 0 +bestfewo.de, 1 bestfidgettoysforadhd.com, 1 bestfinancialcu.org, 1 bestfitnesswatchreview.info, 1 @@ -20316,6 +20408,7 @@ bestgoldendoodles.com, 1 bestgolftrips.ca, 1 besthemes.tk, 1 besthomeandgardenstuff.com, 1 +besthomegenerator.com, 1 besthost.cz, 1 besthouse.co.il, 1 besthumorsite.tk, 1 @@ -20327,6 +20420,7 @@ bestill.foundation, 1 bestinductioncooktop.us, 1 bestinsider.net, 0 bestinsulatedwaterbottle.tk, 1 +bestinver.es, 0 bestitwork.tk, 1 bestjumptrampolines.be, 1 bestkbeauty.com, 1 @@ -20484,6 +20578,7 @@ bestmaturepics.com, 1 bestmedsmmj.com, 1 bestmicro.fr, 1 bestmodels.ua, 1 +bestmorkiepups.com, 1 bestmotherfucking.website, 1 bestnetentcasino.info, 1 bestnetflowanalyzer.com, 1 @@ -20509,6 +20604,7 @@ bestpcsecurity.com, 1 bestplus.ml, 1 bestplus.tk, 1 bestpneu.cz, 1 +bestpomskypups.com, 1 bestporn.pics, 1 bestpornclip.com, 1 bestporngirls.com, 1 @@ -20516,13 +20612,13 @@ bestpornpictures.com, 1 bestpracticesleidraad.nl, 1 bestpressurewashingchicago.com, 1 bestpricelovers.com, 1 -bestprofessionalchainsaw.com, 0 +bestprofessionalchainsaw.com, 1 bestpromoving.com, 1 bestratedremovals.co.uk, 1 bestratedtransport.com.au, 1 -bestrating-hengelo.nl, 1 bestreleases.tk, 1 bestremote.io, 1 +bestresumeobjectiveexamples.com, 1 bestrongandhomosexual.top, 1 bestroofinginkansascity.com, 1 bestroutes.net, 1 @@ -20558,7 +20654,6 @@ bestwriterjobs.tk, 1 bestzoo.tk, 1 besured.nl, 1 besv.com, 1 -besverdock.com, 1 beszerzokozpont.hu, 1 bet-platform.com, 1 bet08vip.com, 0 @@ -20577,11 +20672,14 @@ bet333123.com, 1 bet333222.com, 1 bet333345.com, 0 bet333444.com, 1 +bet333666.com, 1 bet333678.com, 1 bet333789.com, 0 bet333h.com, 1 -bet333n.com, 0 +bet333n.com, 1 bet333r.com, 0 +bet333w.com, 0 +bet333x.com, 1 bet333y.com, 1 bet333z.com, 0 bet338c.com, 1 @@ -20615,6 +20713,7 @@ bet365q8.com, 1 bet365q9.com, 1 bet365r8.com, 1 bet365vip2.com, 1 +bet365vip2020.com, 0 bet365vip7.com, 1 bet365x0.com, 1 bet365x1.com, 1 @@ -20674,14 +20773,16 @@ betaa6.com, 1 betaa8.com, 1 betaa9.com, 1 betaal.my, 1 -betaaldeseksdates.nl, 1 betaams.net, 1 betabar.dk, 1 betabeat.com, 1 +betacalc.com, 1 +betaclouds.net, 0 betacommand.tk, 1 betacs.pro, 1 betadelivery.co.uk, 1 betadwarf.com, 1 +betagro.com, 1 betahyp.de, 1 betandslots.com, 1 betandyou.com, 1 @@ -20700,11 +20801,13 @@ betaworx.eu, 1 betbed.ml, 1 betbravo.et, 1 betbrothers.es, 1 +betc.com, 1 betcn-mart.com, 1 betecnet.de, 1 betel.tk, 1 betelgeus.com, 1 betemyja.tk, 1 +betenemy.com, 1 beterewereldbanen.nl, 1 beteroud.nl, 1 betexperts.tk, 1 @@ -20732,7 +20835,6 @@ betleakbot.com, 1 betmobilenigeria.com, 1 betobaccofree.gov, 1 betolerant.fr, 1 -beton-vloer.nl, 1 beton.ie, 1 betonbewerkingsmachines.be, 1 betongereedschap.be, 1 @@ -20741,13 +20843,11 @@ betonmachines.be, 1 betonmarkets.info, 1 betonperkasa.com, 1 betonsport.ga, 1 -betonvloerpolijsten.com, 1 betop-lab.com, 1 betor.cz, 1 betor.sk, 1 betordertr.com, 1 betoskip.tk, 1 -betowa.co, 1 betransfer.eu, 1 betreut.at, 1 betreut.de, 1 @@ -20761,7 +20861,8 @@ betseybuckheit.com, 1 betsfortoday.com, 1 betshoot.com, 1 betsonlinefree.com.au, 1 -betspin.com, 0 +betspin.com, 1 +betsquare.com, 1 betstop.gov.au, 1 bett1.at, 1 bett1.ch, 1 @@ -20798,7 +20899,7 @@ betterlifekidsclub.com, 1 betterna.me, 1 betternews.eu, 1 betteroffed.com, 1 -betterprojects.de, 1 +betterplace.restaurant, 1 betterscience.org, 1 betterscore.net, 1 bettersecurity.co, 1 @@ -20806,7 +20907,6 @@ bettersocialmedia.co.uk, 1 betterstack.com, 1 bettertax.gov.au, 1 betterteam.com, 1 -betterteamslabs.com, 1 bettertech.pt, 1 bettertechsoftware.com, 1 bettertime.jetzt, 1 @@ -20816,12 +20916,14 @@ betterworlded.org, 1 betterworldproducts.org, 1 bettflaschen.ch, 1 bettie.tk, 1 +betting-magic.com, 1 bettingbangladesh.online, 1 bettingbusiness.ru, 1 bettingmalaysia.online, 1 bettingonaverage.com, 1 bettingphilippines.online, 1 bettolinokitchen.com, 0 +betty-baloo.com, 1 bettyblue.tk, 1 bettysseafoodshack.com, 1 betulashop.ch, 1 @@ -20844,7 +20946,6 @@ betwinner1.com, 1 betwinner2.com, 1 betwinner5.mobi, 1 betwinnerkenya.com, 1 -betwinnermobileapp.com, 1 betwinnernigeria.com, 1 betwinnerperu.com, 1 betwinnerportugal.com, 1 @@ -20860,6 +20961,7 @@ beulen.link, 1 beulen.pro, 1 beurettes-en-chaleur.tk, 1 beursbever.be, 1 +beurswandwereld.nl, 1 beus.ink, 1 beusefulbook.ru, 1 beuteugeu.com, 1 @@ -20875,7 +20977,6 @@ beveiligingscamerawestland.nl, 1 bevelbeer.com, 1 beveragemobileest.ga, 1 beverb.org, 1 -beverdock.com, 1 beverhof.nl, 1 beverley.tk, 1 beverleycounselling.co.uk, 1 @@ -20896,7 +20997,6 @@ bevnut.com, 1 bevrijdingsmuseum.nl, 1 bewaredevapi.azurewebsites.net, 1 bewegigsruum.ch, 1 -bewegte-kirche.de, 1 bewegtes-lagern.at, 1 bewegtes-lagern.ch, 1 bewegtes-lagern.com, 1 @@ -20919,7 +21019,6 @@ bexit-security.nl, 1 bexit.nl, 1 bexithosting.nl, 1 bexleycastles.co.uk, 1 -bexleypools.com.au, 1 bexweller.com, 1 bey.io, 1 beyanname.net.tr, 1 @@ -20927,7 +21026,7 @@ beybladesource.tk, 1 beyer-on-it.com, 1 beyer-on-it.de, 1 beyer.cloud, 1 -beyer.consulting, 0 +beyer.consulting, 1 beyer.media, 1 beyerautomation.com, 1 beyerm.de, 1 @@ -20953,7 +21052,6 @@ beyondpricing.com, 0 beyondqa.ai, 1 beyondsoft.com, 1 beyondthe3d.com, 1 -beyondthebalance.com, 1 beyondthecode.io, 1 beyondthecreek.com, 1 beyondthefive.org, 0 @@ -20964,6 +21062,7 @@ beyondtv.ga, 1 beyondweb.net, 1 beyondzeroacademy-reservations.fr, 1 beyoung.in, 1 +beyoutiful-studio.ro, 1 bezagentstva.cf, 1 bezbarier.org.pl, 1 bezbednostnaradu.com, 1 @@ -20972,20 +21071,18 @@ bezdech.tk, 1 bezdomny.tk, 1 bezerocarbonmarkets.com, 1 bezin.ga, 1 -bezkuny.pl, 1 bezoek-benidorm.tk, 1 bezoekmonumentendag.nl, 1 bezoekopenmonumentdag.nl, 1 bezoekopenmonumentendag.nl, 1 bezoomnyville.com, 1 bezopasna-rabota.tk, 1 -bezorebne.cz, 1 bezpaliuk.com, 1 bezpecnostsiti.cf, 1 bezpieczny.pl, 1 bezpiecznyiphone.pl, 1 +bezposrednio.net.pl, 1 bezpredel.tk, 1 -bf-bogdan.ru, 1 bf2statistics.eu, 1 bfam.tv, 1 bfbet365.com, 1 @@ -21052,7 +21149,6 @@ bgsc.org, 1 bgschuledortmund.de, 1 bgtraffic.tk, 1 bgunikat.eu, 1 -bgv.org.tr, 1 bh-oberland.de, 1 bh.sb, 1 bhacit.com, 0 @@ -21078,7 +21174,6 @@ bhitnews.tk, 1 bhnnews.com, 1 bhodisoft.com, 1 bhogavati.tk, 1 -bhojpurisex.site, 1 bhpropco.com, 1 bhrc.wa.gov.au, 1 bhrenovations.com, 0 @@ -21086,13 +21181,11 @@ bhserralheria.com.br, 1 bhsportugal.org, 1 bhtechconnection.com, 0 bhtelecom.ba, 1 +bhtvn.com, 1 bhub.tk, 1 -bhulakkad.com, 1 bhuntr.com, 1 bhuttae.com, 1 bhuvanreddy.space, 1 -bhvrl.com.au, 1 -bhwfx.com, 1 bhxch.moe, 1 bi-in-beeld.nl, 1 bi-jenny.net, 1 @@ -21104,11 +21197,13 @@ bi4sb.com, 1 bi8cku.club, 1 bi8cku.tech, 1 bia.gov, 1 +bia3consultores.es, 1 biaform.be, 1 biagioroggia.com, 1 biagiowineandspirits.com, 1 biahposter.com, 1 biancadark.tk, 1 +biancapaulphotography.com, 1 biancapulizie.it, 1 biancasalgueiro.tk, 1 biancavandenberg.nl, 1 @@ -21124,7 +21219,6 @@ biaoxiong.com, 1 biaozi.cf, 1 biaozi.ml, 1 biarritzboys.tk, 1 -biartechnology.com, 1 biaservice.cz, 1 biasmath.es, 1 biaxin.cf, 1 @@ -21138,14 +21232,13 @@ bibet365.com, 1 bibi-xxx.com, 1 bibica.net, 1 bibicarrington.com, 1 -bibisaintifik.com, 1 bibit.id, 1 bibitbunga.com, 1 bibitec.de, 1 bible-maroc.com, 1 bible4u.net, 1 -biblear.org, 1 biblebrainhealth.com, 1 +bibleflare.com, 1 bibleforchildren.ru, 1 biblegen.com, 1 bibleinsiderest.ga, 1 @@ -21153,9 +21246,9 @@ biblemesh.com, 0 biblemobile.com, 1 biblesearch.tw, 1 biblesignposts.com, 1 +bibletower.net, 0 bibleversesfordailyliving.com, 1 biblia.es, 1 -bibliadoczytania.pl, 1 bibliaon.com, 1 bibliatodo.com, 1 biblicalcounseling.com, 1 @@ -21218,6 +21311,7 @@ bidenlibrary.gov, 1 bidenstopdeportations.com, 1 bidenwhitehouse.gov, 1 bidindustry.com, 1 +bidlab.org, 1 bidman.cz, 1 bidoluindirim.com, 1 bidonline.tk, 1 @@ -21241,7 +21335,6 @@ bien-etre-sante.info, 1 bienbailao.com, 1 biene.rocks, 1 bienenfreunde.tk, 1 -bienertplus50.de, 1 bienestarinmobiliarioyaliadas.com, 1 bienhacerlimpiezas.es, 1 bienici.com, 1 @@ -21278,6 +21371,7 @@ biewen.me, 0 bifangknt.com, 1 bifatura.com.tr, 1 biflosgknm.tk, 1 +biforthepeople.de, 1 bifrostdk.dk, 1 bifrostwallet.com, 1 biftin.net, 1 @@ -21295,7 +21389,6 @@ big-radio.net, 1 big-tits-video.ru, 1 big-travel.tk, 1 big.one, 1 -big.pt, 1 big.ua, 1 big.wtf, 1 big12sports.com, 1 @@ -21304,15 +21397,12 @@ big80s.tk, 1 bigalba.ga, 1 bigambitions.co.za, 1 bigart.tk, 1 -bigassex.com, 1 bigassmonster.com, 1 bigasstubes.com, 1 -bigbadwolf.gay, 1 bigbag.chat, 1 bigbagmanagement.com, 1 bigbagventures.com, 1 bigband.tk, 1 -bigbayou.at, 1 bigbearlakecoins.com, 1 bigbeats.tk, 1 bigbeautysecrets.tk, 1 @@ -21341,12 +21431,12 @@ bigbroeyes.com, 1 bigbunce.ru, 0 bigbusy.net, 1 bigcakes.dk, 1 -bigcare.com, 1 bigcedar.com, 0 bigchance.tk, 1 bigchris.tk, 1 bigclassaction.com, 1 bigcomputerchair.gq, 1 +bigcorestintas.com.br, 1 bigcountry.com.br, 1 bigdaddyslash.tk, 1 bigdatatop.cf, 1 @@ -21362,7 +21452,6 @@ bigeasygrille.com, 0 bigelkconstruction.com, 1 bigfreebet.com, 1 bigfreebielist.tk, 1 -bigfurryfestival.com, 1 biggernews.gq, 1 biggerpicture.agency, 1 biggerpockets.com, 1 @@ -21396,7 +21485,8 @@ bigopr.com, 1 bigorangelab.com, 1 bigpage.tk, 1 bigpanparties.co.uk, 1 -bigphilsrubbishremoval.com, 1 +bigphilsrubbishremoval.com, 0 +bigpicturerecords.com, 1 bigpurse.tk, 1 bigrapidstownshipmi.gov, 1 bigrender.tk, 1 @@ -21439,10 +21529,8 @@ bigskymontanalandforsale.com, 1 bigspark.it, 1 bigstonecounty.gov, 1 bigstr.com, 1 -bigtexasyardsale.com, 1 bigthree.ga, 1 bigthunder.ca, 1 -bigtime.agency, 1 bigtime.gg, 1 bigtimeiq.com, 1 bigtitsmilf.com, 1 @@ -21453,7 +21541,6 @@ bigudi.ee, 1 bigudi.eu, 1 biguz.net, 1 bigwaterut.gov, 1 -bigwes.com, 1 bigwest.org, 1 bigwicks.co.uk, 1 bigzoo.com.br, 1 @@ -21483,7 +21570,6 @@ bikerebel.com, 1 bikerestart.com, 1 bikersclub.tk, 1 bikersmadrid.es, 1 -bikerzbits.com, 1 bikesandbits.tk, 1 bikesdirect.com, 1 bikeshopitalia.com, 1 @@ -21498,6 +21584,7 @@ bikini.tk, 1 bikinibich.tk, 1 bikinis.ga, 1 bikinis.tk, 1 +bikiniseli.com, 1 bikkelbroeders.com, 0 bikkelbroeders.nl, 0 biknet.tk, 1 @@ -21527,6 +21614,7 @@ biletyplus.ru, 1 biletyplus.ua, 1 bilexmoney.com, 1 bilgehan.net, 1 +bilgemedikal.com, 1 bilgiliksel.com, 1 bilgisayarkursu.tk, 1 bilgisoft.ir, 1 @@ -21550,10 +21638,11 @@ billa.at, 1 billa.bg, 1 billa.sk, 1 billaltermatt.com, 1 +billardessentials.com, 1 billaud.eu, 1 billaud.eu.org, 1 billboard-panama.ml, 1 -billboardphilippines.com, 0 +billboardphilippines.com, 1 billbuddy.co.uk, 1 billchen.win, 0 billcompare.ga, 1 @@ -21590,7 +21679,6 @@ billigtech.tk, 1 billingsgazette.com, 1 billingsgroup.com, 0 billingsmtpublicworks.gov, 1 -billingtoncybersummit.com, 1 billion-strong.org, 1 billionaire.ml, 1 billionaire365.com, 1 @@ -21605,21 +21693,20 @@ billpro.com.au, 1 billsteinberg.ca, 1 billusherwood.com, 1 billview.com.au, 1 +billwebb.com.au, 1 billy.pictures, 1 +billybluerecords.com, 1 billybob.tk, 1 billycroan.com, 1 +billyjamrecords.com, 1 billykwok.me, 1 billywig.stream, 1 billywr.com, 1 -bilmodel.dk, 1 biltullen.com, 1 bim.physio, 1 bimacitizen.com, 1 -bimber.nl, 1 bimbingan.tk, 1 -bimbpress.com, 1 bimedis.com, 1 -bimilogo.it, 1 bimmerguide.de, 1 bimmerlabs.com, 1 bimoge.tk, 1 @@ -21642,6 +21729,7 @@ binaries.tk, 1 binarization.net, 1 binary.house, 1 binary.ninja, 1 +binaryabstraction.com, 1 binaryappdev.com, 1 binarycom.ch, 1 binarycreations.scot, 1 @@ -21657,9 +21745,7 @@ binbin9.com, 1 binbo.cz, 1 binbo.sk, 1 bind.ch, 1 -binday.ie, 1 bindb.com, 1 -binderbud.com, 1 binding-problem.com, 1 binds.co, 1 binero.com, 1 @@ -21674,7 +21760,6 @@ bing.com, 1 bingcheung.com, 1 bingchunmoli.com, 1 bingebooks.com, 1 -bingebracket.com, 1 binghamcountyid.gov, 1 binghamid.gov, 1 bingo-wear.com, 1 @@ -21701,6 +21786,7 @@ binkconsulting.be, 1 binkert-treuhand.ch, 1 binmile.com, 1 binnacle.mx, 1 +binnen-buten.de, 1 binnenmeer.de, 1 binoculars.ga, 1 binoqlo.com, 1 @@ -21716,12 +21802,15 @@ bintra.directory, 1 bintube.com, 1 bio-disinfestazione.it, 1 bio-dolt-aveyron.fr, 1 +bio-farma.net, 1 bio-feed.org, 1 bio-kertem.hu, 1 bio-medical.com, 1 bio-place.com, 1 +bio-plus.cz, 1 bio-verzeichnis.de, 1 bio-world.com, 1 +bio24.si, 0 bioadva.com, 1 bioagency.it, 1 bioagroapteka.bg, 1 @@ -21770,6 +21859,7 @@ biofeedback-luzern.ch, 1 biofeedbackcalifornia.org, 1 biofire.gr, 1 biofizpribor.ru, 1 +bioflamma.com, 1 bioforce.tk, 1 biofourmis.com, 0 biofuels-news.com, 1 @@ -21802,7 +21892,6 @@ biokal.eu, 1 biokal.nl, 1 biokemonline.com, 1 bioknowme.com, 1 -bioknowme.health, 1 biokoxomodding.tk, 1 biolack.cf, 1 biolact.tk, 1 @@ -21844,6 +21933,7 @@ bionic-karnage.tk, 1 bionicman.name, 1 bionovanaturalpools.com, 1 biontech24.pl, 1 +biontechworld.com, 1 bioplac.es, 1 bioplaces.at, 1 bioplaces.ch, 1 @@ -21852,6 +21942,7 @@ bioplaces.es, 1 bioplaces.eu, 1 bioplaces.fr, 1 biopreferred.gov, 1 +biopro-st.com, 1 biopsychiatry.com, 1 bioqual.com, 1 biored.com.tr, 1 @@ -21859,10 +21950,12 @@ bioreference.com, 1 bioresonanz-ibiza.com, 1 biosafe.ch, 0 biosalts.it, 1 +biosbits.org, 1 bioscience.co.uk, 0 biosearch.tk, 1 bioseguridad.gob.pa, 1 bioselect.com.cy, 1 +biosency.com, 1 bioshine.com.sg, 1 bioshome.de, 1 biosignalanalytics.com, 1 @@ -21876,7 +21969,7 @@ biosuit.ga, 1 biosupplyalliance.com, 1 biot.tk, 1 biotage.com, 1 -biotal.ua, 0 +biotal.ua, 1 biotanquesbts.com, 1 biote.com, 1 biotec.tk, 1 @@ -21899,7 +21992,6 @@ bip-online.tk, 1 bip.gov.sa, 0 bipart.eu, 1 bipedecurieux.com, 1 -bipefr.com, 1 biplophossain.me, 1 bipolardisorderexplained.com, 1 bipolargeek.com, 1 @@ -21914,6 +22006,7 @@ bird.engineer, 1 birdbox.party, 1 birdbutt.com, 1 birdgifs.nz, 1 +birdiehosting.nl, 1 birdist.com, 1 birdrave.com, 1 birdsite.ga, 1 @@ -21925,7 +22018,6 @@ birebirvilla.com, 1 birenbaum.se, 1 birgitandmerlin.com, 1 birgitkratz.de, 1 -birjandlocation.com, 1 birjdid.tk, 1 birkengarten.ch, 1 birkenstab.de, 1 @@ -21933,7 +22025,6 @@ birkhoff.me, 0 birkilise.com, 1 birkilise.net, 1 birkilise.org, 1 -birkmayeraerospace.com, 1 birman.tk, 1 birminghamal911.gov, 1 birminghammoneyman.com, 1 @@ -21956,7 +22047,7 @@ birthday-to-you.com, 1 birthdayapp.today, 1 birthdaybuzz.org, 1 birthdayinsiderest.ga, 1 -birthinjuryattorneyinfo.com, 0 +birthinjuryattorneyinfo.com, 1 birthinjurylawyer.com, 1 birthlight-austria.com, 1 birthright.host, 1 @@ -21998,12 +22089,14 @@ bisnisonlinecerdas.tk, 1 biso.ga, 1 bisoga.ga, 1 bisq.chat, 1 +bisq.services, 1 bisq.wiki, 1 bisrockloverclan.tk, 1 bisrockonline.tk, 1 biss-hcai.ca, 1 bissalama.org, 1 bisschopssteeg.nl, 1 +bissingen.de, 1 bissokush.cf, 1 bistro-dengi.ml, 1 bistrodeminas.com, 1 @@ -22041,6 +22134,7 @@ bitclusive.de, 1 bitcoin-2go.de, 1 bitcoin-about.tk, 1 bitcoin-casino-no-deposit-bonus.com, 1 +bitcoin-casino.monster, 1 bitcoin-class.com, 1 bitcoin-daijin.com, 1 bitcoin-exchange.ga, 1 @@ -22063,7 +22157,6 @@ bitcoin.info, 1 bitcoin.ninja, 1 bitcoin.org, 1 bitcoin.us, 1 -bitcoinadvertisers.com, 1 bitcoinapi.de, 1 bitcoinbitcoin.com, 1 bitcoinbot.cf, 1 @@ -22074,14 +22167,15 @@ bitcoincore.org, 1 bitcoineffect.ml, 1 bitcoinfaucet.tech, 1 bitcoinfax.net, 1 +bitcoinfees.net, 1 bitcoinforthe.lol, 1 bitcoinforthe.world, 1 bitcoingambling.pro, 1 bitcoingroup.ga, 1 -bitcoinguru.cz, 1 bitcoinheaders.net, 1 bitcoinheaders.org, 1 bitcoinindy.com, 1 +bitcoinissafe.com, 1 bitcoinkaufen.news, 1 bitcoinkurs.news, 1 bitcoinkurs.world, 1 @@ -22090,7 +22184,6 @@ bitcoinnews.guru, 1 bitcoinnews.world, 1 bitcoinnotbombs.com, 1 bitcoinprice.news, 1 -bitcoinsapi.com, 1 bitcoinseed.net, 1 bitcoinsinireland.com, 1 bitcoinskoers.nl, 1 @@ -22104,6 +22197,7 @@ bitcoinwalletscript.tk, 1 bitcoinwarszawa.pl, 1 bitcoinwiki.org, 1 bitcoinx.ro, 1 +bitcorp.com.br, 0 bitcrazy.org, 1 bitcurrents.net, 1 bitdefender.de, 1 @@ -22130,9 +22224,11 @@ bitgarant.tk, 1 bitgo.com, 1 bithawk.ch, 1 bithero.com, 1 +bithosting.pt, 1 bititrain.com, 1 bitix.tk, 1 bitjunkiehosting.com, 1 +bitkan.com, 1 bitkikoruma.com, 1 bitking-signals.com, 1 bitkiselreyonum.com, 1 @@ -22156,12 +22252,14 @@ bitmexin.com, 1 bitmidi.com, 1 bitmine.gq, 1 bitmix.biz, 1 +bitmoe.com, 1 bitmoji.com, 1 bitms.tk, 1 bitname.it, 1 bitnoder.com, 1 bitnoise.nl, 1 bitnovo.com, 1 +bito.ai, 1 bito3d.com.br, 1 bitovayatehn.tk, 1 bitpod.de, 1 @@ -22176,6 +22274,7 @@ bitrefill.info, 1 bitrefill.me, 1 bitronixcode.com, 1 bitsafe.com.my, 1 +bitsalt.com, 1 bitsellx.com, 1 bitseo.ga, 1 bitseo.tk, 1 @@ -22190,8 +22289,10 @@ bitsoffreedom.nl, 1 bitspaceonline.ml, 1 bitstack.nz, 1 bitstage.uk, 1 +bitstorm.org, 1 bitsync.nl, 1 bitten.pw, 1 +bittentechsolutions.in, 1 bittersweetcandybowl.com, 1 bittervault.xyz, 1 bitti.africa, 1 @@ -22200,7 +22301,6 @@ bittiraha.fi, 1 bitton.com.au, 1 bittounsi.com, 1 bittrend.ga, 1 -bittube.net, 1 bittylicious.com, 1 bitufa.com.tr, 1 bitumenburundi.com, 1 @@ -22218,6 +22318,7 @@ bitwarden.eu, 1 bitwardit.com, 1 bitwards.io, 1 bitwardsdev.com, 1 +bitwoci.pt, 1 bitwolk.nl, 1 bitwrought.net, 1 bityes.org, 1 @@ -22225,7 +22326,6 @@ biupay.com.br, 1 biurokarier.edu.pl, 1 biuropulawy.pl, 1 biurosuszec.pl, 1 -biv.lt, 1 bivg.ru, 0 bixbydevelopers.com, 1 bixilon.de, 1 @@ -22236,14 +22336,12 @@ biz-secrety.ga, 1 biz-secrety.gq, 1 biz-secrety.ml, 1 biz-seecrets.gq, 1 -biz1.sk, 1 biz4x.com, 0 bizapps.lv, 1 bizarnijaponsko.cz, 1 bizarrefuture.cf, 1 bizbelarus.tk, 1 bizboatest.ga, 1 -bizbuzzgo.com, 1 bizcalcs.com, 1 bizdemevcut.com.tr, 1 bizdir.tk, 1 @@ -22280,6 +22378,7 @@ bizstarter.cz, 1 bizsugar.ga, 1 bizteam.ga, 1 biztera.com, 1 +biztok.eu, 1 biztouch.work, 1 biztrend.ru, 1 bizuteria-laoni.tk, 1 @@ -22291,10 +22390,11 @@ bizword.ru, 1 bizzexpress.com, 1 bizzix.tk, 1 bizzseo.tk, 1 +bizztor.com, 1 bizzvisor.site, 0 bj-caffe.tk, 1 bja.gov, 1 -bjargendurhaefing.is, 1 +bjargradakerfi.is, 1 bjarnerest.de, 0 bjarno.xyz, 1 bjbybbs.com, 1 @@ -22316,6 +22416,7 @@ bjolanta.pl, 1 bjordanov.com, 1 bjorknet.com, 1 bjornhelmersson.se, 1 +bjornjohansen.no, 1 bjornmail.com, 1 bjs.com.au, 1 bjs.gov, 1 @@ -22448,7 +22549,6 @@ bkin-42740.xyz, 1 bkin-43450.xyz, 1 bkin-46680.xyz, 1 bkk24.de, 1 -bkkf.at, 1 bkkposn.com, 1 bklaindia.com, 1 bkli.me, 1 @@ -22500,6 +22600,7 @@ black-friday.org.il, 1 black-ghost.tk, 1 black-goldautokozmetika.hu, 1 black-hair-extension.tk, 1 +black-holes.org, 1 black-magic-love-spells.com, 1 black-mail.nl, 1 black-market.ga, 1 @@ -22532,7 +22633,6 @@ blackbyte.it, 1 blackcastle.tk, 1 blackcat.ca, 1 blackcatcard.com, 1 -blackcatinfo.com, 1 blackcatinformatics.ca, 1 blackcatinformatics.com, 1 blackcatwanderlust.com, 1 @@ -22540,13 +22640,15 @@ blackchristmas.tk, 1 blackchrome.com.au, 1 blackco.ga, 1 blackcountrymusicband.co.uk, 1 +blackdown.de, 1 +blackdragoninc.org, 1 blackeaglenet.tk, 1 blackedbyte.com, 1 blackenedsoil.com, 1 blackestdespondency.tk, 1 -blackexpo.id, 1 blackeyes.gq, 1 blackeyes.tk, 1 +blackfeather.in, 1 blackfield.org, 1 blackfire.io, 1 blackfirecrew.tk, 1 @@ -22630,8 +22732,10 @@ blackslots.club, 1 blacksniffer.tk, 1 blackspark.tk, 1 blackspider.tk, 1 -blacksprut.com, 0 +blacksport.ru, 1 +blacksprut.com, 1 blacksprut.pro, 1 +blackstoneone.net, 1 blackstonepress.tk, 1 blackstonetubrefinishers.ca, 1 blackstrapsecurity.com, 1 @@ -22640,17 +22744,15 @@ blackstump.xyz, 1 blacksun-sole-nero.net, 1 blacksvets.co.uk, 1 blackswan.tk, 1 -blackswanai.de, 1 blackswancompany.com, 1 blackswirl.com, 1 blacktemplars.tk, 1 -blacktownbuildingsupplies.com.au, 1 +blacktownbuildingsupplies.com.au, 0 blacktube.tv, 1 blacktubes.cf, 1 blacktubes.ga, 1 blacktubes.ml, 1 blacktype.bet, 1 -blackveilsecurity.com, 1 blackvinegarcollection.com, 0 blackwaterlounge.com, 1 blackwaterutilities.tk, 1 @@ -22685,7 +22787,6 @@ blague.tk, 1 blahaj.pl, 1 blaindalefarms.com, 1 blainecosheriff-ok.gov, 1 -blairgowrierifle.club, 1 blairmitchelmore.com, 1 blairtownshipmi.gov, 1 blaizer.tk, 1 @@ -22698,7 +22799,6 @@ blakesite.com, 1 blakezone.com, 1 blako-squad.tk, 1 blakylle.de, 1 -blammmedia.com, 1 blan.tk, 1 blana.ro, 1 blanboom.org, 1 @@ -22735,7 +22835,6 @@ blastoffbuisness.in, 1 blastoffdirt.com, 1 blastofftherapy.com, 1 blastoise186.co.uk, 1 -blastover.eu, 1 blasunafotocadadia.com, 1 blathinwheatens.tk, 1 blatnic.eu, 1 @@ -22751,22 +22850,20 @@ blau-weiss-aachen.de, 1 blau-weiss-stolberg.de, 1 blaudev.es, 1 blauejungsbolzum.de, 1 +blauesschwarz.de, 0 blaugelb-frankfurt.de, 1 blauglockenbaum.de, 1 blaumedia.com, 1 -blautube.com, 1 blauwegeit.nl, 1 blauwereigercoaching.nl, 1 blauwgras.nl, 1 blavandbike.de, 1 -blavandbike.dk, 1 blavaty.tk, 1 blayne.me, 0 blayneallan.com, 1 blaze-in.com, 1 blazebit.com, 1 blazefire.tk, 1 -blazejmrozinski.com, 0 blazelock.com, 1 blazeweb.ml, 1 blazing.cz, 1 @@ -22783,7 +22880,7 @@ bleaklyrics.tk, 1 bleatingsheep.org, 1 bleche-onlineshop.at, 1 bleche-onlineshop.de, 1 -bledina.com, 0 +bledina.com, 1 bleedingcool.com, 1 bleedmoneyest.ga, 1 bleekerenbleeker.nl, 1 @@ -22805,15 +22902,15 @@ blessrank.com, 1 blesssemijoiasoficial.com.br, 1 blesswebdesigns.com, 1 bleta.io, 1 -bletinsurance.com, 1 -bletvip.com, 1 bleu-roy.com, 1 bleuwire.com, 1 blevinstirepros.com, 1 blewebprojects.com, 1 bleyershoes.com, 1 +blheritage-tours.com, 0 blic-zajm.gq, 1 blichmann.eu, 1 +blick-durchblick.com, 1 blicy.net, 1 blideobames.com, 1 blids.nl, 1 @@ -22823,7 +22920,6 @@ blijfbij.com, 1 blijfbij.eu, 1 bliker.ga, 1 blikund.swedbank.se, 1 -blikvanger.shop, 1 blind-iq.at, 0 blind-iq.be, 0 blind-iq.com, 0 @@ -22847,6 +22943,7 @@ blindfold.ga, 1 blindler.net, 1 blindpigandtheacorn.com, 1 blindscribblings.com, 1 +blindsjoburg.com, 1 blindstreet.com, 1 blingbusinessest.ga, 1 blingsparkleshine.com, 1 @@ -22871,6 +22968,7 @@ blissfulsmile.com, 1 blissplan.com, 1 blissque.com, 1 blissway.tk, 1 +blisterreview.com, 1 blistertrackandtrace.com, 1 blitshift.com, 1 blitz-idee24.de, 1 @@ -22924,6 +23022,7 @@ blockcheck.network, 1 blockcreams.com, 1 blocked.icu, 1 blockedservers.com, 1 +blockexplorer.online, 1 blockified.io, 1 blockmomsest.ga, 1 blocksettle.com, 1 @@ -22937,6 +23036,7 @@ blockthis.xyz, 1 blockvideo.live, 1 blockwatch.cc, 0 blockxit.de, 1 +blocxx.org, 1 blodeuyn.com, 1 bloeij.nl, 1 bloemendaalsamen.nl, 0 @@ -22954,8 +23054,8 @@ blog.gt, 1 blog.je, 1 blog.torproject.org, 0 blog.vu, 1 +blogabout.ru, 1 blogabouthealthy.tk, 1 -blogabr.it, 1 blogaid.net, 1 bloganchoi.com, 1 blogaram.tk, 1 @@ -22980,6 +23080,7 @@ blogger.ba, 1 bloggermobile.tk, 1 bloggermoney.ml, 1 bloggermumofthreeboys.com, 1 +bloggerse.com, 1 bloggersonlinetrainings.tk, 1 bloggervent.com, 1 bloggerzarausa.ga, 1 @@ -22987,6 +23088,7 @@ blogging-life.com, 1 bloggingkits.org, 1 bloggingqna.com, 1 bloggingtips.com, 1 +bloggingtriggers.com, 1 bloggingwithchildren.com, 1 bloggs.xyz, 1 blogguitar.tk, 1 @@ -22998,7 +23100,7 @@ blogit.fi, 1 blogke.cn, 1 blogledalo.com, 1 bloglenovo.es, 1 -bloglogistics.com, 0 +bloglogistics.com, 1 blogman.com, 1 blognews.cf, 1 blognik.pl, 1 @@ -23016,9 +23118,9 @@ blogssl.com, 0 blogstar.tk, 1 blogtechnologiczny.pl, 1 blogtheque.com, 1 +blogtroterzy.pl, 1 bloguerrilla.it, 1 blogvadim.ga, 1 -blogverdict.com, 1 blogworm.eu, 1 blokada.org, 1 blokmap.be, 1 @@ -23032,7 +23134,6 @@ blondeangels.com, 1 bloo.pw, 1 bloob.io, 1 bloobasket.com, 1 -bloobirds.com, 1 blood-kirsche.tk, 1 blood.club, 1 blood4pets.tk, 1 @@ -23052,8 +23153,10 @@ bloodycraft.ml, 1 bloodyhawks.tk, 1 bloom.study, 1 bloomberg.com, 0 +bloombergadria.com, 1 bloomberglp.com, 0 bloombergtv.mn, 1 +bloomfield-investment.com, 0 bloomfire.com, 1 bloomingmassage.com, 1 bloomingtonelectionsil.gov, 1 @@ -23100,6 +23203,7 @@ blue-python.tk, 1 blue-sky.capital, 1 blue1.com, 1 blue2purple.com, 1 +blue3investimentos.com.br, 1 blue6ix.com.br, 1 blueangel.org.tw, 1 bluearrowrecords.com, 1 @@ -23109,7 +23213,7 @@ bluebit.sytes.net, 1 bluebnc.com, 1 bluebridgehq.com, 1 bluecam.com, 1 -bluecanvas.io, 0 +bluecanvas.io, 1 bluecat.tk, 1 bluecatnetworks.com, 1 bluecherry.tk, 1 @@ -23134,6 +23238,7 @@ bluegifts.ro, 1 bluegoat.jp, 1 bluegolf.com, 1 bluegrasshospitality.com, 1 +bluegrassprizes.com, 1 bluehaven.ai, 1 bluehavenkinsale.com, 1 bluehawks.in, 1 @@ -23157,10 +23262,10 @@ bluemail24.com, 0 bluemango-studios.com, 1 bluemat.org, 1 bluemax49ers.com, 1 +bluemodus.com, 1 bluemoonrescue.org, 1 bluemoundtexas.gov, 1 bluemountain-ms.gov, 1 -bluenet.nz, 1 bluenetworks.xyz, 1 blueneuron.tk, 1 blueoakart.com, 0 @@ -23182,7 +23287,6 @@ blueride.se, 1 blueridgelife.com, 1 blueridgemachinery.com, 1 blueridgemanorky.gov, 1 -blueripple.com, 1 blueroocarwash.com, 1 blues-and-pictures.com, 1 bluesbarn.tk, 1 @@ -23194,6 +23298,7 @@ blueshouse.ro, 1 blueskiesmassage.com, 1 blueskybrokerage.tk, 1 blueskycoverage.com, 1 +blueskyeducation.co.in, 1 blueskyinsure.com, 1 blueskywebdesign.net, 1 bluesnews.tk, 1 @@ -23243,6 +23348,7 @@ blumar.com, 1 blumeglobal.com, 1 blumen-pusch.de, 1 blumenbasteln.ml, 1 +blumenfeldart.com, 1 blumenversand.tk, 1 blumiges-fischbachtal.de, 0 blummedia.de, 1 @@ -23290,14 +23396,16 @@ bmak.me, 1 bmak.xyz, 1 bmbfiltration.com, 1 bmblawfirm.com, 1 +bmbsender.uk, 1 bmdonline.eu, 1 bme.com, 1 bmelecevolution.com, 1 +bmgc.edu.bd, 1 bmhglobal.com.au, 1 bmicos.com, 1 +bmitelecom.com.br, 1 bmjphotography.tk, 1 bmk-kramsach.at, 1 -bmlogistik.sk, 1 bmm.com.co, 1 bmoattachments.org, 1 bmoe.eu.org, 1 @@ -23341,7 +23449,7 @@ bngs.pl, 1 bngsecure.com, 1 bnhhospital.com, 1 bnjpro.dk, 1 -bnlegalmedia.com, 1 +bnkconsulting.info, 1 bnnuy.com, 1 bnpl.kz, 1 bnpparibas.be, 1 @@ -23366,6 +23474,7 @@ bo-1xbet.com, 1 bo-rad.de, 1 bo.ke, 1 bo1689.com, 0 +bo4tracker.com, 1 boanastudio.com, 1 boaplasticsurgery.com, 1 board-portal.org, 1 @@ -23384,25 +23493,27 @@ boardroominsiders.com, 1 boardroommind.com, 1 boards.ie, 1 boardsoftware.net, 1 -boardsort.com, 1 boardspot.com, 1 boardusersers.ga, 1 boat-engines.eu, 1 boat-systems.pl, 0 -boatandsailboat.com, 1 +boathut.com.au, 1 boats.com, 0 +boatsandoats.com, 1 boatseller.org, 1 boatsforveterans.org, 1 +boatsnbeds.com, 1 boattrader.com.au, 1 boattrailerpartsplace.com, 1 boatyardx.com, 1 boazmarketing.fi, 1 boazwi.gov, 1 bob-dylan.tk, 1 +bob-fuchs.de, 1 bob.nl, 1 bobaly.es, 0 bobancoamigo.com, 1 -bobandducky.com, 1 +bobandducky.com, 0 bobaobei.net, 1 bobaobei.org, 1 bobbehrendsroofing.com, 1 @@ -23414,12 +23525,12 @@ bobbylondon.uk, 1 bobbyoriginal.tk, 1 bobbyrobinson.tk, 1 bobbysdancewear.com, 1 -bobcat-lead.com, 1 bobcat.com, 1 bobcoffee.com.br, 1 bobconnolly.com, 1 bobcopeland.com, 1 bobek.cz, 1 +bobet.it, 1 bobfilm.ml, 1 bobigames.com, 1 bobiji.com, 0 @@ -23441,7 +23552,6 @@ bocaaboca.ml, 1 bocabeats.tk, 1 bocada.com, 1 bocahkampus.com, 1 -bocal.be, 1 bocal.cf, 1 bocamo.it, 1 bocawa.es, 1 @@ -23457,20 +23567,28 @@ bodas.com.mx, 1 bodas.net, 1 bodascartagena.com, 1 bodclansite.tk, 1 -bodedono.com.br, 1 bodegagarces.tk, 1 bodegastemporales.com.mx, 1 bodemplaten4x4.nl, 1 +boden.co.uk, 1 boden.com, 1 +boden.eu, 1 +boden.fr, 1 +bodenclothing.com.au, 1 +bodendirect.at, 1 +bodendirect.de, 1 bodenpreview.co.uk, 1 bodenpreview.com, 1 bodenpreview.de, 1 +bodensee-hochwasser.info, 1 +bodenusa.com, 1 bodesi.com, 1 bodhi.fedoraproject.org, 1 bodies.es, 1 bodil.bg, 1 bodin.cz, 1 bodivo.vn, 1 +bodixite.com, 1 bodkov.com, 1 bodlsc.com, 1 bodrumescmagazin.tk, 1 @@ -23506,12 +23624,13 @@ boeleo.ru, 1 boelsen.net, 1 boem.gov, 1 boemeldonck.nl, 1 -boenderoutdoor.nl, 0 +boenderoutdoor.nl, 1 boengefissaofnoh.nl, 1 boensite.tk, 1 boenyc.gov, 1 boerandolphcountyga.gov, 1 boerderijspel.nl, 1 +boesckens.de, 1 boesenlaw.com, 1 boevik.ml, 1 boew.de, 1 @@ -23561,29 +23680,30 @@ bojiu99.cc, 1 bojoproductions.tk, 1 bokaldo.com, 1 bokatas.tk, 1 +bokehandbows.ca, 1 +bokentau-company.kz, 1 bokf.com, 1 bokhaldari.is, 1 bokhylle.eu, 1 bokkun.jp, 1 bokmassan.se, 1 bokni.ng, 1 -bokorev.ru, 1 bokov.gq, 1 boksburgplumbing.co.za, 1 boksburgsolarsystems.co.za, 1 -bokumo.nl, 1 +bokutake.com, 1 bol.io, 1 bolalocobrews.co.uk, 1 bolaodarico.com.br, 1 bolbilisim.com, 1 bolcaparca.com.tr, 1 +bold-fabrics.com, 1 boldare.com, 1 boldbeau.pt, 1 boldhaus.de, 1 boldinsight.com, 0 boldium.com, 1 boldogsagadni.hu, 1 -boldonpark.co.uk, 1 boldorion.com, 1 boldsmartlock.com, 1 boldstrokesbooks.com, 1 @@ -23633,14 +23753,15 @@ bolsasbellagio.com.br, 1 bolshevik.tk, 1 bolshoi.tk, 1 bolshoy.tk, 1 +bolt-onpersonnel.com, 1 bolt.com, 1 bolt.eu, 1 bolte.org, 1 boltingmaster.com, 1 boltmobile.ca, 1 bolton-consulting.org, 1 +boltonac.com, 1 boltonct.gov, 1 -boltup.ai, 0 boltz.exchange, 1 boluhaberleri.tk, 1 bolur.is, 1 @@ -23652,7 +23773,6 @@ bolzanoinfo.it, 1 boma.ml, 1 bomanufacture.com, 1 bombard.ga, 1 -bombeck.io, 1 bombeirostv.pt, 0 bomberosceuta.tk, 1 bomberus.de, 1 @@ -23696,6 +23816,7 @@ bonanzareporting.com, 1 bonanzateam.tk, 1 bonapati.tk, 1 bonapeti.ml, 1 +bonapp.restaurant, 0 bonaselect.lv, 1 bonbonka.best, 1 bonbonmania.com, 1 @@ -23733,7 +23854,6 @@ bong--brothers.tk, 1 bongbong-irl.com, 1 bongbongirl.com, 1 bongbongmarcos.com, 1 -bongeats.com, 1 bonghuyn.com, 1 bongjukim.com, 1 bongloy.com, 1 @@ -23762,6 +23882,7 @@ bonk.pw, 1 bonkleagues.ml, 1 bonkotsua.net, 1 bonn.digital, 1 +bonne-apart.com, 1 bonneannee.tk, 1 bonnepart.fr, 1 bonnetmoda.com, 1 @@ -23779,7 +23900,6 @@ bono3.ir, 1 bonobo.cz, 1 bonoculturajoven.gob.es, 1 bononiaestate.com, 1 -bonpoppy.az, 1 bonprix.co.uk, 1 bonsai-uk.cf, 1 bonsaiandsuisekimagazine.eu, 1 @@ -23795,8 +23915,6 @@ bonukset.tk, 1 bonus-club.gq, 1 bonus-kran.tk, 1 bonus.net.nz, 1 -bonusball.org, 1 -bonusballs.uk, 1 bonusdigital.id, 1 bonusepagamenti.it, 1 bonusov.tk, 1 @@ -23819,7 +23937,6 @@ book-online.tk, 1 book-sites.cf, 1 bookameeting.se, 1 bookbazar.co.in, 1 -bookcabaurangabad.com, 1 bookcheapairline.com, 1 bookcreator.com, 1 bookdubaihome.com, 1 @@ -23828,7 +23945,6 @@ bookerrecycling.co.uk, 1 bookeventz.com, 1 bookgeek.ga, 1 bookimed.com, 1 -bookin.cloud, 1 booking.com, 1 booking.site, 1 bookingdata.net, 1 @@ -23858,11 +23974,9 @@ bookmarkseo.tk, 1 bookmarkup.gq, 1 bookmarkup.ml, 1 bookmarkup.tk, 1 -bookmeee.eu, 1 -bookmyforex.com, 1 booknooktutor.com, 1 bookourdjs.com, 1 -bookovnica.com, 0 +bookovnica.com, 1 bookposh.com, 1 bookreport.ga, 1 books-dowload.tk, 1 @@ -23903,6 +24017,7 @@ boomsourcing.com, 1 boomtownevents.com, 1 boomtowntrail.com, 1 boomvm.pw, 1 +boon-beauty.com, 1 boonecountyar.com, 1 boonecountyfpdmo.gov, 1 boonecountyil.gov, 1 @@ -23911,10 +24026,11 @@ boonecountywv.gov, 1 boonecsdia.gov, 1 booneiowa.gov, 1 boonemo.gov, 1 -boonsfis.com, 1 +boonstrafruit.nl, 1 booox.biz, 1 booox.cc, 1 booox.net, 1 +booox.org, 1 booox.pw, 1 boop.gq, 1 boop.icu, 1 @@ -23929,6 +24045,7 @@ boost.ink, 1 boostdesign.tk, 1 boostenergy.com, 1 boostermachine.com, 1 +boostertonbusiness.com, 1 boostgame.win, 1 boostport.com, 1 boostport.com.au, 1 @@ -23937,7 +24054,6 @@ boot-berlin.de, 1 bootcampkatwijk.nl, 1 boothillcasino.com, 1 booths.cyou, 1 -boothukathalu.in, 1 bootlabs.net, 1 bootrading.com, 1 boots-shop.tk, 1 @@ -23946,8 +24062,8 @@ bootsa.tk, 1 bootspraxis.com, 1 bootstrapcollab.com, 0 bootsverleih-buch-balduinstein.de, 1 -bootsverleih-buch.de, 1 bootswinter.tk, 1 +bootsy.org, 1 bootytube.net, 1 boozinyan.com, 1 boraarat.com, 1 @@ -23985,9 +24101,6 @@ bore.lt, 1 borealcapital.com.br, 1 borealis.gg, 1 borealis.su, 1 -borealisacademy.com, 1 -borealisprotocol.ai, 1 -borealisterminal.com, 1 boreally.org, 1 bored.gr, 1 boredhackers.com, 1 @@ -24024,9 +24137,7 @@ borman.biz, 1 born2bounce.co.uk, 1 born2dance.tk, 1 born2flygirl.com, 1 -bornan.sport, 1 bornandgrazed.com, 0 -bornapunda.com, 1 bornbinder.com, 1 borneoarabic.com, 1 borneodictionary.com, 1 @@ -24034,7 +24145,6 @@ borneosprings.com.my, 1 bornfiber.dk, 1 borngroup.com, 1 bornhack.dk, 1 -bornlifeforce.com, 1 bornreality.tk, 1 borntobetogether.eu, 1 borntocover.pl, 1 @@ -24089,13 +24199,13 @@ bosprisma.com, 1 bosque.gov, 1 bosquedelasimagenes.tk, 1 bosquedepalabras.com, 0 +bosquesdevenezuela-caroni.com, 1 boss.az, 1 -bosschespoorzone.nl, 1 -bosschestadsdelta.com, 1 -bosschestadsdelta.nl, 1 bossefors.tk, 1 bosseo.id, 1 bosslady.one, 1 +bossmarketing.ca, 1 +bossmoncton.com, 1 bossurl.tk, 1 boston-medical-supply.com, 1 boston-molly.tk, 1 @@ -24108,6 +24218,7 @@ bostonews.tk, 1 bostonfast.com, 1 bostonheartdiagnostics.com, 1 bostonmedicalgroup.com, 1 +bostonrealestateinvestorsassociation.com, 1 bostonstylepizzapa.com, 1 bosun.io, 1 bosvenssonbegravning.se, 1 @@ -24115,18 +24226,16 @@ boswellboropd-pa.gov, 1 bot-manager.pl, 1 bot.country, 1 botabota.ca, 1 +botanical-design.nl, 1 botanical.house, 1 botanicalinstitute.org, 1 botanicoved.com, 1 botaniqlandscapeconsultants.com, 1 botanischer-garten-solingen.de, 1 botanischkunstenaarsnederland.nl, 1 -botanymaxlanka.com, 1 botarticle.ga, 1 botbrother.ml, 1 -botchat.ca, 1 botealis.ch, 0 -botebote.lt, 1 botelegram.tk, 1 botguard.net, 1 boticadiservicio.com, 1 @@ -24140,16 +24249,13 @@ botmedia.cf, 1 botnam.com, 1 botoes-primor.pt, 1 botoks.tk, 1 -botosani24.ro, 1 botox.bz, 1 botpago.cl, 1 botschaft.digital, 1 botschaften-an-das-volk-gottes.de, 0 -botseller.ai, 1 botsfed.com, 1 botsindiscord.me, 1 botstack.host, 1 -botsuite.pro, 1 botticelli.tk, 1 bottinquebec.com, 1 bottke.berlin, 1 @@ -24167,6 +24273,7 @@ boucherie-restaurant-les-provinces.fr, 1 bouchonville-knifemaker.com, 1 bouckaert-usedcars.be, 0 bouckaert.co, 1 +boudah.pl, 1 boudasedesatka.cz, 1 bouffartigue.fr, 1 boufs.be, 1 @@ -24179,7 +24286,6 @@ boughariosbros.com, 1 boulayauventcamping.ca, 1 boulayauventcamping.com, 1 boulayauventscamping.com, 1 -boulderbit.com, 1 boulderbrook.com, 1 bouldercounty.gov, 1 bouldercountyassessor.gov, 1 @@ -24205,6 +24311,7 @@ bounce-n-go.co.uk, 1 bounce-on.co.uk, 1 bounce-r-us.co.uk, 1 bounce-xtreme.co.uk, 1 +bounce4fun.co.uk, 1 bounce4kidz.com, 1 bounce4less.ie, 1 bounceaboutnewark.co.uk, 1 @@ -24244,12 +24351,14 @@ bouncybouncyboocastlehire.co.uk, 1 bouncycastle.net.au, 1 bouncycastlehire-norwich.com, 1 bouncycastlehire.co.uk, 1 +bouncycastlehireauckland.co.nz, 1 bouncycastlehirebexley.co.uk, 1 bouncycastlehirechelmsford.org.uk, 1 bouncycastlehirehull.co.uk, 1 bouncycastlehirelouth.co.uk, 1 bouncycastlehiremalvern.co.uk, 1 bouncycastlehiresurrey.co.uk, 1 +bouncycastlehirewinchester.co.uk, 1 bouncycastleman.co.uk, 1 bouncycastlesgalway.com, 1 bouncycastleshire.co.uk, 1 @@ -24273,6 +24382,7 @@ boundaryford.com, 1 boundaryvets.co.uk, 1 boundladies.ga, 1 boundless-designs.com, 1 +boundlessmediausa.com, 1 bounouh.tk, 1 bountiful.ag, 1 bountiful.gov, 1 @@ -24313,9 +24423,7 @@ bouvier-des-flanders.com, 1 bouwbedrijfdesmet.be, 1 bouwbedrijfjstam.nl, 1 bouwbedrijfkorstanje.nl, 1 -bouwenaandenbosch.com, 1 bouwenaandenbosch.nl, 1 -bouwenaanshertogenbosch.nl, 1 bouwklikshop.nl, 1 bouwklikweb.nl, 1 bouwma.nl, 1 @@ -24323,6 +24431,7 @@ bouzalegal.com, 1 bouzouada.com, 1 bouzouks.net, 1 bovender.de, 1 +bovenwebdesign.nl, 1 bovet.com, 1 bovileva.com.ua, 1 bovomed.nl, 1 @@ -24332,7 +24441,6 @@ bowdoinmaine.gov, 1 bowenrealty.com, 1 bowhill.me, 1 bowhunter-ahorn.de, 0 -bowiecroftonendo.com, 1 bowlcake.fr, 1 bowldirectoryest.ga, 1 bowlidex.com, 1 @@ -24341,24 +24449,22 @@ bowmanvilleveterinaryclinic.com, 1 bowmanwilliams.com, 0 bowmar.gov, 1 bownhpd.gov, 1 -bowserbuddy.com.au, 1 bowwowinsurance.com.au, 1 box-it-up.nl, 1 box.bz, 1 box.co.uk, 1 -box.sklep.pl, 1 box447.com, 1 +boxalouer78.fr, 1 boxbuttecountyne.gov, 1 boxclub-marburg.de, 1 boxcoshipping.com, 1 boxcritters.wiki, 1 +boxcryptor.com, 0 boxdevigneron.fr, 1 boxdroplacrosse.com, 1 -boxedpeaches.com, 1 boxeldercountyut.gov, 1 boxeomexicano.tk, 1 boxerdogsaspets.com, 1 -boxhive.io, 1 boxhostserver.com, 1 boxing-kangaroo.ga, 1 boxing-videos.com, 1 @@ -24375,14 +24481,13 @@ boxofficebengal.tk, 1 boxofficefunding.com, 1 boxofninjas.ca, 1 boxoptions.com, 1 -boxpark.co.uk, 0 +boxpark.co.uk, 1 boxpirates.to, 0 boxsite.ga, 1 boxtub.com, 1 boxturtlesaspets.com, 1 boxview.com, 1 boy.gp, 1 -boyanov.com, 1 boyard.tk, 1 boyarscabinets.com, 1 boyceville.gov, 1 @@ -24390,7 +24495,6 @@ boycewire.com, 1 boydcorp.com, 1 boydstree.com, 0 boydwi.gov, 1 -boyersjunction.com, 1 boyfriendtvpremium.com, 1 boygirl.tk, 1 boyhost.cn, 1 @@ -24443,10 +24547,7 @@ bpvgoncalves.com, 1 bpvr.ddns.net, 1 bpvr.nl, 1 bpx.exchange, 1 -bq1.me, 1 -bq8.me, 1 -bqgw.info, 0 -bqgw8.com, 0 +bpx.global, 1 bqool.com, 1 bqp.io, 0 bqtoolbox.com, 1 @@ -24466,12 +24567,14 @@ braathe.no, 1 brabant.nl, 1 brabantia.com, 1 brabantse-delta.nl, 1 +brabantserfgoed.nl, 1 brabotax.nl, 1 braccialini.tk, 1 brace-automotive.com, 1 bracebridgechiro.com, 1 bracelet-chakras.com, 1 braces-supports.tk, 1 +bracesbyberry.com, 1 bracesjourney.com, 1 bracken.jp, 1 bracket.land, 1 @@ -24481,6 +24584,7 @@ brackettvilletx.gov, 1 bracknellvets.co.uk, 1 bractwogothica.ml, 1 brad.fi, 1 +bradalnutri.com.br, 1 bradeales.com, 1 bradentonfl.gov, 1 bradfield-designs.com, 1 @@ -24504,7 +24608,6 @@ brahammn.gov, 1 brahma.world, 1 brahmaclub.nl, 1 braiampeguero.xyz, 1 -braiderskaparty.cz, 1 braidice.ga, 1 brailsford.xyz, 1 brain-club.info, 1 @@ -24526,7 +24629,6 @@ brainfeed.nl, 1 brainguru.co.in, 1 brainguru.in, 1 brainhealth.gov, 1 -brainhub.eu, 1 brainit.at, 1 brainjuice.tk, 1 brainmade.tk, 1 @@ -24592,12 +24694,12 @@ brand-design.studio, 1 brand.contact, 1 brand.site, 1 brandabaski.tk, 1 +brandbags.gr, 1 brandbastion.com, 1 brandbook.io, 1 brandcodestyle.com, 0 brande.ai, 1 brandefense.io, 1 -brandenbauer.com, 1 brandenburgertheater.de, 1 brandeps.com, 1 brandfactory.ml, 1 @@ -24608,10 +24710,8 @@ brandingcoapps.com, 1 brandinspiration.fr, 1 brandinstitute.com, 1 brandketers.com, 1 -brandmonkey.dk, 0 brandmovers.co, 1 brandmrwijchen.nl, 1 -brandnaked.nl, 1 brandnucreations.com, 1 brando753.xyz, 1 brandon-manilow.tk, 1 @@ -24656,6 +24756,7 @@ brandweerrooster.nl, 1 brandweertrainingen.nl, 1 brandweerweb.tk, 1 brandwizo.com, 1 +branefive.com, 1 branemusic.com, 1 brank.as, 1 brankor.net, 1 @@ -24665,8 +24766,8 @@ bransive.com.au, 1 bransonwestmo.gov, 1 brantleycounty-ga.gov, 1 branw.xyz, 0 -branzell.kim, 1 brard.it, 1 +brasas.ec, 1 brascast.com, 1 brasco.tk, 1 brasdir.com, 1 @@ -24699,6 +24800,7 @@ bratskmuseum.ru, 1 bratstvo.tk, 1 bratt.tk, 1 bratteng.com, 0 +bratteng.solutions, 1 brattleboro.gov, 1 bratunaconline.tk, 1 brau-ingenieur.de, 1 @@ -24723,6 +24825,7 @@ bravegk.com.ua, 1 bravelions.org, 1 bravelittlesquirrel.com, 1 bravelocation.com, 1 +bravelychoc.com, 1 bravenboer.tk, 1 braverytechnology.com, 1 bravewiki.tk, 1 @@ -24744,10 +24847,10 @@ bravurabusinessconsulting.com, 1 bravurasolutions.com, 1 brawin.cf, 1 braxtoncountywv.gov, 1 +braxtonehle.com, 1 braxtonfair.com, 1 braychappell.com, 0 brayden.gq, 1 -braydenshort.com, 1 braynblog.ml, 1 brayva.com, 1 brazenfol.io, 1 @@ -24792,9 +24895,6 @@ breakingthesilence.org.il, 1 breakinoutpr.com, 1 breakofdawn.tk, 1 breaksome.tech, 1 -breakstonesbutter.com, 1 -breakthroughapparel.com, 1 -breakthrought1d.org.il, 1 breakwall.ml, 1 breard.tf, 1 breastaugmentationky.com, 1 @@ -24824,10 +24924,7 @@ breechdepot.com, 1 breederpodcast.com, 1 breen.com.br, 1 breentwp.gov, 1 -breet.io, 1 breethe.com, 1 -breezisaas.com, 1 -breezitech.io, 1 breezly.fr, 1 breezyapp.hu, 1 breezypointmn.gov, 1 @@ -24835,7 +24932,9 @@ breffa.pl, 1 brefy.com, 1 brege.org, 1 breger.fr, 1 +bregmanfance.com, 1 bregnedal.dk, 1 +bregner.com, 1 bregroup.com, 1 brehoni.cz, 0 brei.nz, 1 @@ -24856,6 +24955,7 @@ bremsscheiben.com, 1 brendabecker.com, 1 brendancroker.tk, 1 brendanfarmer.ga, 1 +brendanscherer.com, 1 brendasartstudio.com, 1 brennancorp.com, 0 brennerbasisdemokratie.eu, 1 @@ -24865,6 +24965,7 @@ brentfieldschools.cf, 1 brentnewbury.com, 1 brenton.uk, 1 brentsoslibraries.org.uk, 1 +brentsvillehall.com, 1 brentwoodpa.gov, 1 bresciatoday.it, 1 breshka.be, 1 @@ -24881,13 +24982,13 @@ brest24.tk, 1 brestnews.tk, 1 brestradio.tk, 1 brestshop.tk, 1 +bretagne-reisen.de, 1 bretania.bzh, 1 bretcarmichael.com, 1 breteuilcommerceartisanat.com, 1 breton.pm, 1 bretonhouse.ca, 1 -bretonstripe.com, 0 -brett.au, 1 +bretonstripe.com, 1 brettcornwall.com, 1 bretti.net, 1 brettlawyer.com, 0 @@ -24902,7 +25003,6 @@ brew.sh, 1 brewcentralny.com, 1 brewerybarbotley.com, 1 brewin.ml, 1 -brewrest.com, 1 brewsouth.com, 1 brex.pw, 1 brexit.tk, 1 @@ -24946,6 +25046,7 @@ brianregan.com, 0 brianroadifer.com, 1 briansemrau.com, 1 briansmith.org, 1 +brianterealtygroup.com, 1 brianum.de, 1 brianum.net, 1 brianvalente.tk, 1 @@ -24960,8 +25061,6 @@ brickfilmfestival.tk, 1 brickfilms.com, 1 brickftp.com, 1 brickland.tk, 1 -brickmayhem.com, 1 -brickrodeo.com, 1 bricks-clicks.com, 1 bricksandmotor.co.uk, 1 brickweb.co.uk, 1 @@ -24973,17 +25072,19 @@ bricolajeux.ch, 0 bricomium.com, 1 bricoportale.it, 1 brid.gy, 0 -brid.pw, 1 bridal.tk, 1 bridalfabrics.ru, 1 bridalgallerysalem.com, 1 bridalreflections.com, 1 +bridalshoes.com, 1 bridalweddingshow.ga, 1 bridebook.com, 1 bridesbouquet.ml, 1 bridesforacause.com, 1 +bridestarco.com, 1 bridge-online.cloud, 1 bridge-to-knowledge.nl, 1 +bridge-xs.com, 1 bridge.nl, 1 bridgecitytx.gov, 1 bridgecon.com.au, 1 @@ -25006,7 +25107,6 @@ bridgescourtreporting.com, 1 bridgesem.com, 1 bridgesofcolorado.gov, 1 bridgestudios.com, 1 -bridgesync.io, 0 bridgethailand28chidlom.com, 1 bridgetmcauliffe.ie, 1 bridgetonmo.gov, 1 @@ -25066,6 +25166,7 @@ brigittaseasons.com, 1 brigittaspromise.org, 1 brigittebutt.tk, 1 brigittefontaine.tk, 1 +brijesh.fyi, 1 brilalux.pe, 1 brileytownshipmi.gov, 1 brili.com, 1 @@ -25078,7 +25179,6 @@ brillie.tk, 1 brillio.com, 1 brillionwi.gov, 1 brillionworks.com, 1 -brim.pk, 1 brimfinancial.com, 1 brimspark.com, 1 brinavkuhni.com, 1 @@ -25095,7 +25195,7 @@ bringme.com, 1 bringonbusiness.com, 1 brinker.com, 1 brinkhaven.gov, 1 -brinkhu.is, 1 +brinkhu.is, 0 brinksurl.com, 1 brinksurls.com, 1 brinokidzonline.tk, 1 @@ -25109,12 +25209,12 @@ brisamar8.de, 1 brisbanecashforcars.com.au, 1 brisbanelogistics.com.au, 1 brisbanerecordbar.com.au, 1 +brisbine.cloud, 1 brisceremony.com, 1 brisignshop.com.au, 1 briskteaching.com, 1 -brisp.nl, 1 +brisp.nl, 0 bristlecone.com, 1 -bristol-stairlifts.co.uk, 1 bristol-taxi.com, 1 bristolandwestonsuperbounce.com, 1 bristolctwatersewer.gov, 1 @@ -25149,6 +25249,7 @@ britishgeneralelection.ga, 1 britishgeneralelection.ml, 1 britishgroupsg.com, 1 britishmeat.com, 1 +britishpearl.com, 1 britishpropoliss.my.id, 1 britishsfaward.org, 1 britney-galaxy.com, 1 @@ -25162,11 +25263,13 @@ brittainconsulting.ca, 1 brittany.com.ph, 1 brittanyferriesnewsroom.com, 1 brittas-world.tk, 1 +britva-optom.com, 1 brivawn.com, 1 brix-central.tk, 1 brixxonline.nl, 0 brizawen.com, 1 brizzly.ro, 1 +brizzo.net, 1 brk-t.com, 1 brk-t.org, 1 brk.dk, 1 @@ -25184,7 +25287,6 @@ brn.by, 1 brn.is, 0 brnchost.com, 1 brndn.io, 1 -brngal.sk, 1 brnogame.com, 1 brnogame.cz, 1 brnogame.online, 1 @@ -25204,12 +25306,10 @@ broadcastlistingest.ga, 1 broadcastrealtimeest.ga, 1 broadcasttowerers.ga, 1 broadfoundation.org, 1 -broadhub.com, 1 broadjournalest.ga, 1 broadleft.org, 1 broadlytour.com, 1 broadwayfamilydentalpc.com, 1 -broadwayplatform.com, 1 broadwaytravel.com, 1 broadwayva.gov, 1 broadwayvets.co.uk, 1 @@ -25234,6 +25334,7 @@ brody.digital, 1 brody.ninja, 1 broe.ie, 1 broederlynt.nl, 1 +broedersvanliefde.be, 1 broerbv.nl, 0 broerendasbouwbedrijf.nl, 1 broers-rolluiken.nl, 1 @@ -25244,17 +25345,12 @@ broeselmaschine.de, 1 brogan.com, 1 broilertrade.com, 1 brojagraphics.de, 1 -brokebitch.org, 1 -brokebitchabq.org, 1 -brokebitchnyc.org, 1 brokeinkorea.tk, 1 brokenbiz-news.tk, 1 brokenbowokpd.gov, 1 brokencityllc.ga, 1 brokendollsmuseum.com, 1 -brokenelectronics.com, 1 brokenhands.io, 1 -brokenlinkchecker.live, 1 brokenminds.tk, 1 brokenneckgang.com, 1 brokenrevolution.com, 1 @@ -25263,14 +25359,14 @@ brokensofa.com.ua, 1 brokensword.tk, 1 brokentoaster.com, 1 brokentoaster.tk, 1 -brokentopgaragedoors.com, 1 +broker-forex.it, 1 broker-innovix.pl, 1 broker.id, 1 brokerdecredite.ro, 1 -brokeria.sk, 1 brokerlink.ca, 1 brokernews.com.au, 1 brokernotes.co, 1 +brokerpro.com, 1 brokeryouers.ga, 1 brokeryouest.ga, 1 brokfolio.com, 1 @@ -25304,7 +25400,6 @@ brooklynboyblues.ml, 1 brooklyncentermn.gov, 1 brooklyndecker.tk, 1 brooklynparkmn.gov, 1 -brooklynsigns.com, 1 brooklyntheborough.com, 1 brooklyntownwashburnwi.gov, 1 brookscountyga.gov, 1 @@ -25321,11 +25416,10 @@ broomcastle.net, 1 broomcastle.org, 1 broomcastle.social, 1 broomecountyny.gov, 1 -broomorchard.com, 0 +broomorchard.com, 1 brosay-legko.ml, 1 brossmanit.com, 1 brother.com.hk, 1 -brotherboo.ca, 1 brothers.tw, 1 brothersinbeetles.tk, 1 brottsfiltret.tk, 1 @@ -25367,10 +25461,10 @@ browsbybecca.ca, 1 browse-china.com, 1 browselog.com, 1 browsemycity.com, 1 -browser.exposed, 1 browser.style, 1 browsercraft.com, 1 browserleaks.com, 1 +broylesaward.com, 1 brprohandyman.ca, 1 brq.com, 1 brr.fyi, 1 @@ -25408,7 +25502,6 @@ bruh.ltd, 1 bruidstaarten.tk, 1 bruinmail.nl, 1 bruitparif.fr, 1 -brujobros.com, 1 bruk2fa.no, 1 brukalai.lt, 1 brulewi.gov, 1 @@ -25422,7 +25515,7 @@ brunchandmatch.be, 1 brunella.tk, 1 brunetderochebrune.com, 0 brunhilde.ml, 1 -brunnerworks.com, 1 +brunnerworks.com, 0 bruno-pelletier.tk, 1 brunoamaral.eu, 0 brunoamezcua.com, 0 @@ -25461,6 +25554,7 @@ brusselsmidistudio.ga, 1 brusselspackagesers.ga, 1 brusselspackagesest.ga, 1 brusselswestapartment.ga, 1 +brust-zentrum.ch, 1 brustzentrum-zuerich-lachen.ch, 1 brutal.systems, 1 brutalica.tk, 1 @@ -25473,6 +25567,7 @@ brutus2.ga, 0 bruun.co, 1 bruyerre.eu, 1 brw-shop.by, 1 +brweb.tk, 1 brwebsolutions.tk, 1 brwn.loan, 1 bryanarmijomd.com, 1 @@ -25480,17 +25575,17 @@ bryancastillo.site, 1 bryancountyga.gov, 1 bryandesrosiers.com, 1 bryandrakedrivingschool.co.nz, 1 -bryandunnewald.com, 0 +bryandunnewald.com, 1 bryanfalchuk.com, 1 +bryankaplan.com, 1 bryanlachica.com, 1 bryanley.com, 1 bryanquigley.com, 1 bryansk-news.net, 1 bryansk-news.ru, 1 bryanski.tk, 1 -bryanstoncc.co.za, 1 bryantluk.com, 1 -bryceboldenscott.com, 1 +bryantx.gov, 1 bryceml.us, 1 bryggebladet.dk, 1 brysoncitync.gov, 1 @@ -25513,6 +25608,7 @@ bsalyzer.com, 1 bsapack564.org, 1 bsatroop1003.com, 1 bsatroop3.com, 1 +bsatroop794.org, 1 bsbet365.com, 1 bsc-rietz.at, 1 bsc01.dyndns.org, 1 @@ -25530,6 +25626,7 @@ bsdfreak.dk, 0 bsdguru.net, 1 bsdly.net, 1 bsdug.org, 1 +bsebresult.in, 1 bsee.gov, 1 bserved.de, 0 bseuc.eu, 1 @@ -25541,19 +25638,18 @@ bsgamanet.ro, 1 bsgcredit.com, 1 bsgcredit.ro, 1 bsgexchange.ro, 1 -bsgmag.com, 1 bsgmag.ro, 1 bsia.or.kr, 1 bsid-clan.com, 1 bsidesf.com, 1 bsidessf.com, 1 bskhq.tk, 1 -bskmt.com, 1 bsktweetup.info, 1 bslim-e-boutique.com, 1 bslinguistics.co.uk, 1 bslnow.co.uk, 1 bslnowsigns.co.uk, 1 +bsmart.it, 1 bsmsl.com, 1 bsn.cloud, 0 bsnb.com, 1 @@ -25563,6 +25659,7 @@ bsod.wtf, 1 bsolut.com, 1 bsolut.de, 1 bsolut.org, 1 +bsp-southpool.com, 1 bspecialfx.nl, 1 bsrueti.ch, 1 bss-solutions.net, 1 @@ -25578,8 +25675,10 @@ bssolvfagen-pre-storeswa-wap.azurewebsites.net, 1 bsstainless.com, 1 bst-brandschutz.at, 1 bst-gmbh.de, 1 +bstakepool.online, 1 bsteele.tk, 1 bstger.ch, 1 +bstoked.net, 1 bsuess.de, 1 bsure.io, 0 bsurfcr.com, 1 @@ -25594,6 +25693,7 @@ bszpy.de, 1 bt-kc.de, 1 bt121.com, 0 bt24.ro, 1 +bt780.com, 1 bt85.cn, 0 bt9.cc, 0 btbb.net, 1 @@ -25608,6 +25708,7 @@ btcpop.co, 1 btcrit.com, 1 btcwip.com, 1 btd.be, 1 +btddd.com, 1 btdirect.uk, 1 btdproductions.tk, 1 btec.ae, 1 @@ -25619,13 +25720,17 @@ btine.tk, 1 btleasing.md, 1 btln.cloud, 0 btln.de, 1 -btln.it, 1 btlsrv.com, 1 btn.co.id, 1 btnissanparts.com, 1 +btnull.in, 1 +btnull.nu, 1 +btnull.org, 1 btool.eu.org, 1 btorrent.xyz, 1 btp.net, 1 +btpexpert.com, 1 +btpinterim.com, 1 btpritikin.com, 1 btrade.io, 1 btrans.by, 1 @@ -25653,8 +25758,9 @@ btwnmgmt.com, 1 btwsa.tk, 1 btwschool.it, 1 btwservice.it, 1 +btwstore.it, 1 btynews.com, 1 -btyr.net, 1 +btyr.net, 0 bu-e.com, 1 buai.cf, 1 buai.gq, 1 @@ -25673,7 +25779,7 @@ bubblegumblog.com, 1 bubblelist.tk, 1 bubblesco.tk, 1 bubblespetspa.com, 0 -bubblyliving.com, 1 +bubblin.io, 1 bubcs.com, 1 bublup.com, 1 bubnovsky.org, 1 @@ -25722,6 +25828,7 @@ buckscounty.gov, 1 bucksfund.com, 1 buckthorn.ml, 1 buda.com, 1 +budagard.se, 1 budapestairport.tk, 1 budapestairporttaxi.net, 1 budapestairporttocity.com, 1 @@ -25770,7 +25877,6 @@ budget.ie, 1 budget.ovh, 1 budget4cast.com, 1 budgetapp.me, 1 -budgetfitter.uk, 1 budgetglasscranbourne.com, 1 budgetheatingorders.com, 1 budgetimize.com, 1 @@ -25779,7 +25885,9 @@ budgetlovers.nl, 1 budgetrf.tk, 1 budgetscan.nl, 1 budgie.lol, 1 +budgow.com, 1 budiarto.id, 1 +budidayatani.com, 0 budilnik.ml, 1 budmate.au, 1 budofjoy.com, 1 @@ -25793,7 +25901,8 @@ budscope.com, 1 budsforbuddies.com, 1 budsmelim.ee, 1 budtraffic.net, 1 -buecherheldenchemnitz.de, 1 +buednerei-202.de, 1 +buehlerzell.de, 1 buejagt.dk, 1 bueltge.de, 1 buena.me, 1 @@ -25803,15 +25912,16 @@ buenavistava.org, 1 buendnis-deutschland.de, 1 buenosairesconnect.com, 1 buenosairesrunway.com, 1 +buentaller.com, 1 bueny.com, 1 bueny.net, 1 -buergerbus-digital.de, 1 buergerinitiative-pronatur.de, 1 buergerwehr-ettlingen.de, 1 buero13-design.de, 1 bueroplus.de, 1 buerstaedter-zeitung.de, 1 buesiforquo.cf, 1 +bueteeearchives.net, 1 buettgens.net, 1 bufete.tk, 1 buff-buff.tk, 1 @@ -25828,22 +25938,20 @@ buffalohomerepairs.com, 1 buffalonews.com, 1 buffaloturf.com.au, 0 buffalowypd.gov, 1 +buffandtan.com, 1 buffbarbell.com, 1 buffetbouc.com, 1 buffge.com, 1 buffl.co, 1 buffup.media, 1 buffus.cz, 1 -bufla.net, 1 bufo.tk, 1 bug.blue, 1 bug.ee, 1 bugabond.bg, 1 bugaim.com, 1 bugalert.org, 1 -bugalou.com, 1 bugbounty.ch, 1 -bugbounty.fail, 1 bugburn.com.br, 1 bugbyebye.com, 1 bugcrowd.com, 0 @@ -25856,6 +25964,7 @@ bugraseyhan.tk, 1 bugrayildiz.av.tr, 1 bugreader.com, 1 bugs.chromium.org, 1 +bugwie.com, 1 bugzilla.mozilla.org, 1 buharkeyf1.com, 1 buharlikoltukyikama.com.tr, 1 @@ -25865,14 +25974,16 @@ buhsantoandre.vip, 1 buhunov.tk, 1 buicha.social, 1 buick1958.tk, 1 +build-a-biogas-plant.com, 1 build-up.tk, 1 build.chromium.org, 1 build.gov, 1 +build.stream, 0 +buildamericaluxuryhomes.com, 0 buildbackbetter.gov, 1 buildbytes.com, 1 buildconcierge.ga, 1 builddesygner.xyz, 1 -builderhouseplans.com, 1 buildersbroker.com.au, 1 buildersdiscount.net, 1 buildersofthesilentcities.tk, 1 @@ -25905,6 +26016,7 @@ builds.gg, 1 buildsimple.co.uk, 1 buildtestsolutions.com, 1 buildux.com, 1 +buildwealth.uk, 1 buileo.com, 1 builtbyworkhorse.com, 1 builterra2.azurewebsites.net, 1 @@ -25919,7 +26031,6 @@ builtinnyc.com, 1 builtinseattle.com, 1 builtinsf.com, 1 builtinvacuum.com, 1 -builtmaven.com, 1 builtory.my, 1 builtvisible.com, 1 buirey.com, 1 @@ -25997,6 +26108,7 @@ bullionexus.com, 1 bulliontradingllc.com, 1 bullis.me, 1 bullish.com, 1 +bullmarketing.nl, 1 bullockcountyal.gov, 1 bullpendaily.com, 1 bullseyecleaning.com.au, 1 @@ -26017,8 +26129,10 @@ bulutimza.com, 1 bulutimza.com.tr, 1 bulutkey.com, 1 bulvar.tk, 1 +bumag.ro, 1 +bumastemra.nl, 1 +bumble.com, 1 bumblebee.cf, 1 -bumblebeebeekeeping.com, 1 bumblebeekids.uk, 1 bumbleforfriends.com, 1 bumenn.is, 1 @@ -26028,7 +26142,6 @@ bummelwelt.at, 1 bummelwelt.ch, 1 bummelwelt.com, 1 bummelwelt.de, 1 -bumpi.games, 1 bumpi.gq, 1 bumsbesuch.com, 1 bumsbuero.com, 1 @@ -26037,6 +26150,7 @@ bunadarbankinn.is, 1 bunaken.tk, 1 bunbun.be, 1 bunburydad.tk, 1 +bunchful.com, 1 buncombecounty.org, 1 buncranacarndonaghgreenway.ie, 1 bund-muelheim.de, 1 @@ -26061,11 +26175,11 @@ bunker307.tk, 1 bunkerhilltx.gov, 1 bunkyo-life.com, 1 bunlarateist.space, 1 -bunnmi.com, 0 bunny.tk, 1 bunnybloythost.com, 1 bunnycarenotes.com, 1 bunnydiamond.de, 1 +bunnymaxim.com, 1 bunnymud.com, 1 bunnyvishal.com, 1 bunova.com, 1 @@ -26086,6 +26200,7 @@ bupropionhclsr.ga, 1 buquesdeguerra.tk, 1 buraksercanercin.co, 1 burakuckun.com, 1 +burakurer.com, 1 buralteria.tk, 1 burasicanakkale.com, 0 buratino.tk, 1 @@ -26102,9 +26217,11 @@ burdursondakika.tk, 1 bureau-store.fr, 1 bureaubolster.nl, 0 bureaudirectoryers.ga, 1 +bureaunouveau.eu, 1 bureausuite.co.za, 1 bureauwbtv.nl, 1 bureauwsnp.nl, 1 +bureauzelfstandigenfryslan.nl, 1 burenservice.nl, 1 burevestnik.tk, 1 burewala.tk, 1 @@ -26115,7 +26232,7 @@ burg-falkenstein.de, 1 burg-trausnitz.de, 1 burgawnc.gov, 1 burger.eu.org, 1 -burgerandy.com, 1 +burger.fitness, 1 burgerbudget.gent, 1 burgerking.eu.org, 1 burgernet.nl, 0 @@ -26127,14 +26244,13 @@ burghardt.pl, 1 burghtstam.tk, 1 burgos.tech, 1 burgoslacrosse.tk, 1 -burgstaller-immobilien.de, 1 burgstetten.de, 1 burhan-autosattlerei.de, 1 buricloud.fr, 1 burina.net, 1 burishops.com, 1 burke.services, 1 -burkebarclaylawoffice.com, 0 +burkebarclaylawoffice.com, 1 burkhardt.at, 0 burkoff.tk, 1 burkow.ru, 1 @@ -26212,13 +26328,9 @@ burunucu.ga, 1 buryat-mongol.cf, 1 buryatia.tk, 1 burybox.co.uk, 1 -burz.agency, 1 -burz.ai, 1 burz.net, 1 burz.one, 1 burz.ro, 1 -burza-techniky.cz, 1 -burzagency.com, 1 burzcast.com, 1 burzcast.ro, 1 burzgroup.com, 1 @@ -26262,8 +26374,7 @@ business-secreti.cf, 1 business-secreti.ga, 1 business-secreti.gq, 1 business-secreti.tk, 1 -business-swiss.ch, 1 -business-trade.pro, 1 +business-swiss.ch, 0 business.facebook.com, 0 business.gov, 0 business.medbank.com.mt, 1 @@ -26299,7 +26410,6 @@ businesscollect.ga, 1 businesscollections.ga, 1 businesscolor.ga, 1 businesscommission.ga, 1 -businessconnect.com.tr, 1 businessconnect.ml, 1 businesscorp.tk, 1 businesscorporation.ga, 1 @@ -26331,7 +26441,6 @@ businessenterpriseteam.com, 1 businessepic.ga, 1 businessethics.ml, 1 businessetmarketing.com, 1 -businesseventstokyo.org, 1 businessexcel.ga, 1 businessfactors.de, 1 businessfalcon.ga, 1 @@ -26351,13 +26460,13 @@ businessgrace.ga, 1 businessgroove.ga, 1 businessgrowth.ga, 1 businessgrowthleaders.com, 1 +businessguide.co.ke, 1 businessgun.ga, 1 businesshandsome.ga, 1 businesshome.ml, 1 businesshosting.nl, 0 businesshotrod.ga, 1 businesshub.cz, 0 -businesshub.mk, 1 businessideaarea.tk, 1 businessideaasia.tk, 1 businessideacompany.tk, 1 @@ -26416,6 +26525,7 @@ businesskayak.ga, 1 businesskiss.ga, 1 businessknight.ga, 1 businesslead.tk, 1 +businessleader.asia, 1 businesslegacy.ga, 1 businessless.ga, 1 businesslion.ga, 1 @@ -26532,6 +26642,7 @@ bussinessupport.tk, 1 bussnang.ch, 1 bussoclean.com.au, 1 busstation.tk, 1 +bustamantefabara.com, 1 bustaura.lt, 1 bustepaga.it, 1 buster.me.uk, 1 @@ -26561,6 +26672,7 @@ busybee.nl, 1 busylamp.com, 1 busyon.cloud, 1 busyr.com, 1 +busystudyhubs.com.au, 1 but-it-actually.work, 1 but-its-not-your.business, 1 butanding.org, 1 @@ -26587,14 +26699,15 @@ butsa.tk, 1 butserdocumentary.tk, 1 buttedesmortssd1wi.gov, 1 butter.horse, 1 +butterchat.io, 1 +butterflytigress.com, 1 butterhost.ga, 1 buttermilk.cf, 1 -butternutbox.com, 0 +butternutbox.com, 1 butterpaper.com, 1 buttertea.shop, 1 buttertrick.com, 1 buttimer.tech, 1 -buttinette.com, 1 buttonline.ch, 1 buttonshelf.com, 1 buttonsmashers.tk, 1 @@ -26699,12 +26812,14 @@ buyjewel.shop, 1 buyland.com.ua, 1 buylasix.ml, 1 buylevaquin.tk, 1 +buyme.lk, 1 buymetforminonline.tk, 1 buymobic.ml, 1 buymyvoip.com, 1 buyneurontin.ml, 1 buynothingyear.com, 1 buyornot.tk, 1 +buyorsellcampers.com, 1 buypal.com.pe, 1 buypapercheap.net, 1 buypersonalproxy.com, 1 @@ -26726,6 +26841,7 @@ buyrexroth.com, 1 buyrimonabant.cf, 1 buyrocell.com, 1 buyrogaine.ga, 1 +buysdfi.com, 1 buyselldonothing.com, 1 buyshine.com, 1 buyshoe.org, 1 @@ -26772,6 +26888,7 @@ buzztalk.tk, 1 buzztrending.tk, 1 buzzword24.de, 1 buzzworld.tk, 1 +buzzybites.com, 1 bv-driver.tk, 1 bv-ferreiradozezere.pt, 1 bvblaboratory.hu, 1 @@ -26789,7 +26906,6 @@ bviphotovideo.com, 1 bvisionsmedia.com, 1 bvlos.com.pl, 1 bvlp.com, 1 -bvmary.com, 1 bvng.nl, 1 bvop.org, 1 bvr-nsn.gov, 1 @@ -26881,7 +26997,6 @@ byggonline.ga, 1 bygogmiljoe.dk, 1 bygonegames.com, 1 bygoselink.nl, 1 -byhaberci.com, 1 byhe.me, 1 byhenryvera.com, 1 byisha.com, 1 @@ -26922,15 +27037,12 @@ bystryj-zajm.tk, 1 byte-lab.tk, 1 byte.nl, 1 byte128.com, 0 -bytebin.org, 1 bytebiter.io, 1 -byteblobs.com, 1 bytebodega.com, 1 bytebolt.at, 1 bytebucket.org, 1 bytebytego.com, 1 bytedance.com, 1 -byteengine.net, 1 byteflies.com, 0 bytegrowth.com, 1 byteguardian.nl, 1 @@ -26943,7 +27055,6 @@ bytema.sk, 1 bytemethod.ca, 1 bytenest.ca, 1 byteofdev.com, 1 -byteorbit.com, 1 bytepen.com, 1 bytepoint-software.nl, 1 bytes.fyi, 1 @@ -26977,6 +27088,7 @@ bziaks.xyz, 1 bzik.cf, 1 bzjv-ffm.de, 1 bzkj.de, 1 +bznz.me, 1 bzomak.com, 1 bztech.com.br, 1 bztech.ru, 1 @@ -26988,11 +27100,14 @@ c-3po.fr, 1 c-a-c.com.au, 1 c-aeroconsult.com, 1 c-c-europeen.org, 1 +c-cdn.net, 1 +c-cdn.org, 1 c-chaud.com, 1 c-club-berlin.de, 1 c-data.nl, 0 c-dome.com, 1 c-fo.de, 1 +c-g-h.net, 1 c-ma-copro.com, 1 c-netsys.fr, 1 c-ovidiu.tk, 1 @@ -27000,6 +27115,7 @@ c-resource.tech, 0 c-rpg.eu, 1 c-rtx.com, 1 c-sagaseru.com, 1 +c-shock.org, 1 c-solarcity.com, 1 c-tec.nl, 1 c-three.jp, 1 @@ -27025,17 +27141,23 @@ c19colchicine.com, 1 c19early.com, 1 c19early.org, 1 c19favipiravir.com, 0 +c19fluvoxamine.com, 1 c19hcq.com, 1 c19hcq.org, 1 c19ic.com, 1 c19ivermectin.com, 1 c19ivermectin.org, 1 c19ivm.org, 1 +c19legacy.com, 1 +c19ly.com, 1 +c19melatonin.com, 1 +c19ns.com, 1 c19probiotics.com, 1 c19proxalutamide.com, 1 c19study.com, 1 c19sv.com, 1 c19vitamind.com, 1 +c19zinc.com, 1 c21first.co.il, 1 c2athletics.com, 1 c2cdn.xyz, 1 @@ -27055,6 +27177,7 @@ c3hv.cn, 1 c3soc.de, 1 c3speak.com, 1 c3speak.de, 1 +c3stream.de, 1 c3vo.de, 0 c3w.at, 1 c3wien.at, 1 @@ -27079,6 +27202,7 @@ ca-canovelles.tk, 1 ca-els.com, 1 ca-immobilier.fr, 1 ca-key.de, 1 +ca-saintdie.fr, 1 ca.gparent.org, 1 ca.search.yahoo.com, 0 ca.sk, 1 @@ -27089,7 +27213,6 @@ caa.ca, 1 caa.gov.ly, 1 caa.hr, 1 caa.lk, 1 -caaf.org.fj, 1 caarecord.org, 1 caasd.org, 1 caasda.tk, 1 @@ -27102,7 +27225,6 @@ cabalistic.tk, 1 caballeroalba.cf, 1 caballerosdeltablero.tk, 1 cabanactf.com, 1 -cabaniadelalto.com.ar, 1 cabaretadanowskyfan.tk, 1 cabasse-bourse.com, 1 cabbage.software, 1 @@ -27114,7 +27236,6 @@ cabenoap.com.br, 1 cabezadeframontanos.tk, 1 cabezadelcaballo.tk, 1 cabina-photobooth.ro, 1 -cabinbaginfo.com, 1 cabincrewcareercenter.com, 1 cabineritten.nl, 1 cabinet-bedin.com, 0 @@ -27130,6 +27251,7 @@ cabinetvoyance.fr, 1 cable-bg.com, 1 cable360.de, 1 cableatierra.tk, 1 +cablebustersllc.com, 0 cablehighspeed.net, 1 cableiran.com, 1 cablemadrid.tk, 1 @@ -27148,7 +27270,6 @@ cabr.al, 1 cabrachicagritona.tk, 1 cabuilderservices.com, 1 cabvertising.it, 1 -cabyn.ai, 1 cac-hc.org, 1 cac-ua.com, 1 cacao-besos.com, 1 @@ -27165,8 +27286,6 @@ cache-checker.com, 1 cache22.eu, 1 cache22.nl, 1 cachecounty.gov, 1 -cachecrawler.com, 1 -cachedragon.net, 1 cachemosquito.gov, 1 cachepreload.com, 1 cachesheriff.gov, 1 @@ -27207,12 +27326,12 @@ cadcrowd.com, 1 caddo.gov, 1 caddr.org, 1 caddyfashionshop.com, 1 +cadeaux-anniversaires.net, 1 cadeauxfolies.fr, 1 cadecobots.com, 1 cadeengineering.com, 1 cadenadereferidos.tk, 1 cadencescience.com, 1 -cadenceslibres.com, 1 cadervaulters.co.uk, 1 cadetsge.ch, 0 cadfl.com, 1 @@ -27243,20 +27362,15 @@ cadwalk.de, 1 cady-jennifer.tk, 1 cadynce.com, 0 cadyreporting.com, 1 -caedea.com, 1 -caedea.net, 1 -caek.net, 1 caelandrayer.ca, 1 caerdav.com, 1 caesar.me.uk, 1 caesar.today, 1 caesarkabalan.com, 0 -caetano.es, 1 -caetano.pt, 1 +caesegatos.com.br, 1 caetanoflotas.es, 1 caetanoretail.pt, 0 caetanotec.pt, 1 -caeusa.net, 1 caf.milano.it, 1 cafe-bg.com, 1 cafe-cliche.tk, 1 @@ -27265,17 +27379,19 @@ cafe-hamlet.fr, 1 cafe-musica.org, 1 cafe-pauline.de, 1 cafe-service.ru, 0 +cafead.de, 1 cafeah.com, 1 cafeamazon.tk, 1 cafeamore.com.br, 1 cafebab.com, 1 +cafebalkanaz.com, 1 cafebeirut.tk, 1 cafecentraal.tk, 1 cafecentral.tk, 1 cafechesscourt.com, 1 cafechroma.tk, 1 cafecobus.tk, 1 -cafecomcyber.com.br, 1 +cafedari.ir, 1 cafedelcielo.co, 1 cafedesignbooks.com, 1 cafedospescadores.tk, 1 @@ -27296,6 +27412,7 @@ cafeobscura.nl, 1 cafesangtao.com, 1 cafeterya.tk, 1 cafethevibes.com, 1 +cafethrive.co.uk, 1 cafevelo.org, 1 cafevs.com, 0 cafexpro.com, 1 @@ -27304,7 +27421,6 @@ caffein.cf, 1 caffeinate.co.uk, 1 caffeineandconcrete.com, 1 caffeinefiend.org, 1 -caffeinemc.net, 1 caffelatte.tk, 1 cafferata.tk, 1 caffewasyl.pl, 1 @@ -27321,7 +27437,6 @@ cageworld.tk, 1 cagi.org, 1 cagir.eu, 1 cagivaclub.tk, 1 -cagliarinews24.com, 1 cagranollers.tk, 1 cagrierdogdu.com, 1 cagrimerkezinumarasi.com, 1 @@ -27334,13 +27449,12 @@ cai.im, 1 cai.sg, 1 caiben.org, 1 caibi.io, 1 -caileb.com, 0 +caileb.com, 1 cailoli.com, 1 cainesjannif.com, 1 cainhoyathletic.com, 1 cainiao.moe, 1 caio.moe, 1 -caiodorosario.com, 1 caipai.fm, 1 caiqueparrot.com, 1 cairnterrier.com.br, 1 @@ -27351,7 +27465,7 @@ cairoshell.com, 1 cais.de, 1 caise.tk, 1 caissefrancaisedefinancementlocal.fr, 0 -caithness-business.co.uk, 1 +caiteecooper.com, 1 caivps.com, 1 caiwenjian.xyz, 1 caixideal-serralharia.pt, 1 @@ -27379,6 +27493,7 @@ cakedeveloperers.ga, 1 cakedeveloperest.ga, 1 cakejournal.com, 1 cakelaces.com, 1 +cakenetwork.com, 1 cakeoffencesact.uk, 1 cakes.ga, 1 cakes.tk, 1 @@ -27392,7 +27507,6 @@ cakeup.in.ua, 1 cakir.info.tr, 1 cakko.ml, 1 caknowledge.com, 1 -caktivestudios.co.uk, 1 cal-cal.com, 1 cal-pacpainting.com, 1 cal.goip.de, 1 @@ -27404,7 +27518,6 @@ calabozo.tk, 1 caladan.tk, 1 calaficirecords.cf, 1 calaix.click, 1 -calamai.nl, 1 calamidad.tk, 1 calamp.com, 1 calandrahosting.tk, 1 @@ -27432,11 +27545,9 @@ calculadora-de-derivadas.com, 1 calculadora-de-integrales.com, 1 calculadoraconversor.com, 1 calculadoratrabalhista.com, 1 -calculafin.com.br, 1 calcularis.ch, 1 calculate-vat.uk, 1 calculate.co.kr, 1 -calculates.org, 1 calculatetoday.com, 1 calculator-app.com, 1 calculator.aws, 1 @@ -27446,7 +27557,6 @@ calculatorspace.com, 1 calculatortvers.ga, 1 calculatortvest.ga, 1 calculon.fr, 1 -calculstructure.fr, 1 calcworkshop.com, 1 caldaia.roma.it, 1 caldare.be, 1 @@ -27465,6 +27575,7 @@ caleaders.cf, 1 caleatoxic.org, 1 caledoniaoh.gov, 1 caledonie.tech, 1 +calefon.uy, 1 calefones-electricos.com, 1 calendar.cf, 0 calendar.google.com, 1 @@ -27491,9 +27602,8 @@ calhouncountyflsheriff.gov, 1 calhouncountyil.gov, 1 calhounfalls.gov, 1 calhounmi911.gov, 1 -calia.cc, 1 -calialabs.com, 1 calibarber.com, 1 +caliber.to, 1 calibermind.com, 1 calibrationrecall.com, 1 calibresys.com, 1 @@ -27501,6 +27611,7 @@ calibso.net, 1 calicojudge.com, 1 calidadbio.com, 1 calidognia.com, 1 +calidoinvierno.com, 1 califarul.ro, 1 californiabudgetfinance.tk, 1 californiabuilding.ma, 1 @@ -27515,18 +27626,20 @@ californianet.tk, 1 californiaonlinedivorce.com, 0 californiapa.gov, 1 californiapayroll.com, 1 -californiaschools.us, 1 californiatitlesearch.com, 1 californiavalues.cf, 1 calim.com.ar, 1 calimero.tk, 1 calimesa.gov, 1 calinadrian.uk, 1 +calindairy.com, 1 calinetworks.com, 1 caliph.one, 1 +calista-directinvestors.eu, 1 calisteniaperu.ga, 1 calistogaca.gov, 1 calitateavietii-ardeal.ro, 1 +calivillalonga.com.ar, 1 call-plumbers.com, 0 call2counter.com, 0 calla.pl, 1 @@ -27558,7 +27671,7 @@ callhub.io, 1 calliari.org, 1 calliesalls.com, 1 calligraph.gq, 1 -callinangroup.net, 1 +calligraphychic.com, 1 callinsdecor.com.br, 1 callipeg.com, 1 callmewatkins.com, 1 @@ -27593,7 +27706,6 @@ calotte-academy.com, 1 calpaterson.com, 1 calposa.ml, 1 calsense.com, 1 -caltechpainting.com, 1 calu.me, 1 calucon.de, 1 caluette.com, 1 @@ -27627,7 +27739,6 @@ camashop.de, 1 camazoon.com, 0 cambados.tk, 1 cambait.tk, 1 -cambara.app.br, 1 cambb.xxx, 1 camberford.com, 1 cambiamenti-climatici.it, 1 @@ -27668,6 +27779,7 @@ cameos.bo, 1 camera-podvod.tk, 1 cameraforensics.com, 1 camerahire.com.au, 1 +camerajabber.com, 1 cameraman.tk, 1 cameramark.nl, 1 camerashot.tk, 1 @@ -27699,14 +27811,12 @@ camilat.tk, 1 camileonline.tk, 1 camilia.io, 1 camilla-rena.com, 1 -camilosolutions.com, 1 caminominimalista.com, 1 caminoneocatecumenal.tk, 1 caminosalavida.com, 0 caminreal.tk, 1 camionerosdecoslada.tk, 1 camipress.ga, 1 -camis.ovh, 1 camisado.tk, 1 camisantiago.tk, 1 camisetasmalwee.com.br, 1 @@ -27739,7 +27849,6 @@ campcreekinn.com, 1 campdesante.com, 1 campdetarragona.tk, 1 campeonatoalemao.com.br, 1 -campercollective.com, 1 camperdays.de, 1 camperdirectoryers.ga, 1 camperdirectoryest.ga, 1 @@ -27751,6 +27860,7 @@ campfire.moe, 1 campfiretails.org, 1 campguaikinima.com, 1 camping-aupigeonnier.fr, 1 +camping-chantemerle.com, 1 camping-dulac-dordogne.com, 1 camping-fleur-oleron.com, 1 camping-seilershof.de, 1 @@ -27763,8 +27873,10 @@ campingdewatermolen.nl, 1 campingfontanelle.it, 1 campinggadgetest.ga, 1 campinghuntingshooting.com, 1 +campingmarkt.com, 1 campingpolidor.com, 1 campingprofessionalsest.ga, 1 +campingshop.pl, 1 campingwatchest.ga, 1 campistry.net, 1 camplaza.tk, 1 @@ -27804,11 +27916,9 @@ camshowhub.com, 1 camslurp.com, 1 camslurp.net, 1 camslurp.org, 1 -camsparty.com, 1 camsupplier.ml, 1 camsupplierers.ga, 1 camtor.ml, 1 -camu.us, 1 camunaslab.org, 1 camunda.com, 0 camunda.org, 1 @@ -27818,6 +27928,7 @@ camzroofing.ca, 0 can-amchains.com, 1 can-fleet.com, 1 can-tran.com, 1 +canabeinternacional.com, 1 canacreative.asia, 1 canact.com.au, 1 canada-tourisme.ch, 0 @@ -27843,6 +27954,7 @@ canadianbic.ca, 1 canadianbusiness.com, 1 canadiancourtreporting.com, 1 canadianemail.ca, 1 +canadianfriendsofyadsarah.com, 1 canadiangamblingchoice.com, 1 canadiangriefalliance.ca, 1 canadianlandscapeart.ca, 1 @@ -27877,13 +27989,12 @@ canalrivertrust.org.uk, 1 canalspa.cl, 1 canamo-solidario.tk, 1 canarabankcsis.in, 1 -canardsbastogne.be, 1 canaresidences.com, 1 canaria.ga, 1 canariasjoven.es, 1 canariasjoven.org, 1 canariasport.com, 0 -canaricultura.com, 1 +canaricultura.com, 0 canariculturacolor.com, 1 canarie.ca, 1 canaryaspets.com, 1 @@ -27904,8 +28015,6 @@ cancer.gov, 0 cancerdata.nhs.uk, 1 cancerrxgene.org, 1 cancertherapy.tk, 1 -cancioc.com, 1 -cancitiprep.ca, 1 cancomputers.hn, 1 cancomputers.shop, 1 cancunhealthers.ga, 1 @@ -27917,6 +28026,7 @@ candelaguatemala.tk, 1 candex.com, 1 candicecity.com, 0 candidasa.com, 1 +candidateexperiencemarketing.nl, 1 candidatlibre.net, 1 candidcard.ga, 1 candidcarders.ga, 1 @@ -27929,6 +28039,8 @@ candlcastles.co.uk, 1 candlelightchallenge.tk, 1 candlemakingexplained.com, 1 candlepro.cf, 1 +candlevn.com, 1 +cando.eu, 1 candogiveguide.org, 1 candt.gr, 1 candy-pop.tk, 1 @@ -27952,6 +28064,7 @@ candymade.net, 1 candypalace.tk, 1 candysailing.ml, 1 candysamira.org, 1 +candytip.ru, 1 candywings.com, 1 candyxs.org, 1 cane.bg, 1 @@ -27974,7 +28087,7 @@ canidelite-toulouse.fr, 1 canihavesome.coffee, 0 canile.it, 1 canine.tools, 1 -caninecadre.net, 0 +caninecadre.net, 1 caninejournal.com, 1 caninsulin.com, 1 caniphish.com, 1 @@ -27984,12 +28097,10 @@ cankado.com, 1 canker.org, 1 cankhon.tk, 1 cankirihaber.tk, 1 -cankutahya.com.tr, 1 canliradyodinle.fm, 1 canlitelefonhatti.ga, 1 canlom.tk, 1 canmipai.com, 1 -cannabiocreuse.fr, 1 cannabis-marijuana.com, 1 cannabis.cafe, 1 cannabisdiscounter.ca, 1 @@ -27997,13 +28108,13 @@ cannabisfactsnevada.org, 1 cannabisfactsnv.org, 1 cannabishouseyeg.com, 1 cannabislegality.info, 1 +cannabisreports.org, 1 cannabistraininguniversity.com, 1 -cannabivo.com, 1 cannabiz.tk, 1 cannabytes.net, 1 cannacards.ca, 1 cannamaca.com, 1 -cannamx.online, 1 +cannamx.online, 0 cannaseedsonline.com, 1 cannastra.com, 1 cannature.eu, 1 @@ -28013,7 +28124,7 @@ cannellecitron86-biomonde.fr, 1 canningcityfc.org.au, 1 canningpartners.com.au, 1 cannoli.london, 1 -cannon.org.cn, 0 +cannon.org.cn, 1 cannoncountytn.gov, 1 cannonriverwatershedmn.gov, 1 cannonsforsale.com, 1 @@ -28027,6 +28138,7 @@ canolatrail.com.au, 1 canondrivers.org, 1 canonisti.fi, 1 canonvannederland.nl, 1 +canoodlesoup.com, 1 canoonic.se, 1 canopelle.com, 1 canopy.ninja, 1 @@ -28056,7 +28168,7 @@ canterburycrest.org, 1 canterburynh.gov, 1 canters.tk, 1 cantillons.com, 1 -cantongroup.com, 0 +cantongroup.com, 1 cantonmi.gov, 1 cantonmopolice.gov, 1 cantonms.gov, 1 @@ -28067,6 +28179,8 @@ cantosdisidentes.tk, 1 cantstopart.com, 1 canuluduz.tk, 1 canv4s.com, 1 +canva-dev.com, 1 +canva.com, 1 canvas-art.tk, 1 canvaspersonalized.com, 1 canweagr.ee, 1 @@ -28089,11 +28203,12 @@ caos.ch, 0 caostura.com, 1 cap-study.com, 1 cap.gov, 1 -cap.mil, 1 cap21-lrc.fr, 1 cap50.be, 1 cap73.fr, 1 cap75.com, 1 +capari.co, 1 +caparicasurflessons.com, 1 caparua.com, 1 capcut.cn, 1 cape.blue, 1 @@ -28114,7 +28229,6 @@ capellen.tk, 1 capemaypoint.org, 1 capeoni.fr, 1 capeprivacy.com, 0 -capestone.com.au, 1 capetown.travel, 1 capetowncpf.co.za, 1 capetownelite.co.za, 1 @@ -28130,6 +28244,7 @@ capimlimaoflores.com.br, 1 capitainebaggy.ch, 0 capitains.tk, 1 capital-electronics.ml, 1 +capitalcap.com, 1 capitalcitycatfish.com, 1 capitalcollections.org.uk, 1 capitaldistrictneurofeedback.com, 1 @@ -28164,7 +28279,6 @@ capitalstakepool.info, 1 capitaltg.com, 0 capitaltruepartner.hk, 1 capitaltruepartnertechnology.cn, 1 -capitalwaveinsight.com, 1 capitan.ml, 1 capitanbeilinson.tk, 1 capitanlorenzana.com, 1 @@ -28172,6 +28286,7 @@ capitapeskanova.tk, 1 capitein.tk, 1 capitolavenue62.co.in, 1 capitolcarwashwv.com, 1 +capitolcounseling.net, 0 capitolnational.com, 1 capitolpathways.org, 1 capitolrisk.tk, 1 @@ -28195,8 +28310,10 @@ capretraite.fr, 1 caprichosdevicky.com, 1 caprigo.ru, 1 capris.cr, 0 +capro.global, 1 caps-hats.tk, 1 caps.equipment, 1 +caps.is, 1 caps.solutions, 1 caps.systems, 1 capseo.id, 1 @@ -28208,11 +28325,11 @@ capstonehcm.com, 1 capsugel.com, 1 capsuladigital.tk, 1 capsulafinanciera.com, 1 -capsule.li, 1 capsule.org, 0 capsulekitchen.co, 1 capsulezone.tk, 1 captain-dandelion.com, 1 +captain-droid.com, 1 captainark.net, 1 captainchef.net, 1 captainclaw.tk, 1 @@ -28227,12 +28344,10 @@ captainsonic.com, 1 captainsunshine.tk, 1 captavio.com, 1 captchafox.com, 1 -captech.pe, 1 -captello.com, 1 captify.ca, 1 captivationscience.com, 1 captivationtheory.com, 1 -captreelegal.nl, 1 +captmacks.com, 1 capturebilling.com, 1 captured-symphonies.com, 1 capturelead.tk, 1 @@ -28243,6 +28358,7 @@ car-clean-nord.de, 1 car-diagnose.com, 1 car-dismantling.tk, 1 car-expresso.com, 1 +car-hire-lisbon.com, 1 car-keys.tk, 1 car-market.tk, 1 car-seats-store.ga, 1 @@ -28255,7 +28371,7 @@ car3d.gq, 1 car4rent.fr, 1 cara-bisnis.tk, 1 cara-mudah-hidup-sehat.tk, 1 -cara.care, 0 +cara.care, 1 carabin.cf, 1 caracare.nl, 1 caraccidentlawyersaltlake.com, 1 @@ -28270,7 +28386,6 @@ caralarm.tk, 1 caralegal.de, 1 caraliadeluxe.net, 1 caramellespinell.tk, 1 -carappraisal.ai, 1 caratennison.net, 1 carauctionnetwork.com, 1 carauctionsalabama.com, 1 @@ -28280,6 +28395,7 @@ carauctionsillinois.com, 1 carauctionsnewyork.com, 1 caraudiostore.tk, 1 caravaca.tk, 1 +caravane.store, 1 caravansciences.tk, 1 caravanwise.co.uk, 1 caravelairclub.tk, 1 @@ -28305,18 +28421,17 @@ carboncountywy.gov, 1 carbondaleil.gov, 1 carboneventsupport.lu, 1 carbonkiller.org, 1 -carbonkopi.com, 1 carbonlib.com, 0 carbonmapper.org, 1 carbonnel.me, 0 carbono.uy, 1 carbonopuro.es, 0 +carbonreal-test.azurewebsites.net, 1 carbonrus.com, 1 carbonswap.exchange, 1 carbonswap.finance, 1 +carbontv.com, 1 carbonvision.cn, 0 -carbophile.com, 1 -carbophile.org, 1 carbuzz.com, 1 carcatron.org, 1 carceloinfierno.tk, 1 @@ -28332,7 +28447,6 @@ cardanalysisers.ga, 1 cardano.eco, 1 cardano.org, 1 cardanoupdates.com, 1 -cardboard.inc, 1 cardbouns.tk, 1 cardcaptorsakura.jp, 1 cardcenter.cc, 1 @@ -28351,7 +28465,6 @@ cardington.tk, 1 cardinus.com, 1 cardioagainstcancer.nl, 1 cardiology.gq, 1 -cardios.srv.br, 1 cardiosportsilvinadelgado.com, 0 cardiothinklab.com, 1 cardity.de, 1 @@ -28373,15 +28486,26 @@ cardozo.vargas.nom.br, 1 cardozovargas.cloud, 1 cardozovargas.co, 1 cardozovargas.com, 1 +cardozovargas.com.br, 1 +cardozovargas.email, 1 +cardozovargas.gay, 1 cardozovargas.me, 1 +cardozovargas.men, 1 +cardozovargas.my, 1 cardozovargas.net, 1 cardozovargas.one, 1 +cardozovargas.online, 1 cardozovargas.org, 1 cardozovargas.pro, 1 +cardozovargas.space, 1 +cardozovargas.top, 1 cardozovargas.vip, 1 +cardozovargas.work, 1 +cardozovargas.xyz, 1 cardpresso.com, 1 cardprinter.co.il, 1 cardpyramiders.ga, 1 +cardranking.jp, 1 cardrecovery.fr, 1 cards4jobs.com, 1 cardschat.com, 1 @@ -28401,7 +28525,6 @@ care4today.com, 1 careapp.com.au, 1 careapptest.dk, 1 carear.com, 1 -careclaimsadjusting.com, 0 carecloud.com, 1 carecm.de, 1 carecode.ai, 0 @@ -28409,8 +28532,8 @@ career-conduct.jp, 1 career-log.jp, 1 career.how, 1 careerandjobsearch.tk, 1 -careerbound.ai, 1 careercapital.co.za, 1 +careerfoundry.com, 0 careergigo.com, 1 careerminds.com, 1 careernet.in, 1 @@ -28418,7 +28541,7 @@ careerpower.co.in, 1 careersimulator.com, 0 careersingulf.com, 1 careersinpsychology.org, 1 -careersolutionsbymichelle.com, 1 +careerslevel.com, 1 careerstart.co.jp, 1 careertransformed.com, 1 carefreeschooling.ca, 1 @@ -28437,17 +28560,19 @@ caremobi-prod.herokuapp.com, 1 caremore.pt, 1 carenepal.org, 1 carepan.ga, 1 +carepassport.com, 1 carepathinnovations.com, 1 caresco.nl, 1 careshields.sg, 1 careskillsacademy.co.uk, 0 carespot.com, 1 carespottravelmedicine.mobi, 1 +carestartantigen.com.au, 1 caret.be, 1 +caretaker.com, 1 caretogether.coop, 1 carevic.eu, 1 carey.cl, 1 -careycustomhomes.com, 1 careyohio.gov, 1 careyolsen.com, 1 carezza.net, 1 @@ -28459,7 +28584,6 @@ carfinans.ru, 1 carfixautorepair.com, 1 carforme.gr, 1 carfraemill.co.uk, 1 -cargillsbank.com, 1 cargo.build, 1 cargobas.com, 1 cargobay.net, 1 @@ -28472,11 +28596,10 @@ caribbean-tekton.com, 1 caribbeanbottlerstt.com, 1 caribbeancinemas.com, 1 caribuku.tk, 1 -caricature.fr, 0 +caricature.fr, 1 caricatureavenue.com, 1 carien.eu, 1 carigami.fr, 1 -carignan.quebec, 1 carijournals.org, 0 cariki.gq, 1 carikiv.gq, 1 @@ -28489,8 +28612,8 @@ caringmedicine.ga, 1 caringpups.com, 1 carinsuranceliveest.ga, 1 carinthia.eu, 1 -carinvesting.com.br, 1 -carioca-romania.ro, 0 +carinzo.com, 1 +carioca-romania.ro, 1 cariocabelos.com.br, 1 cariproperti.com, 1 carisenda.com, 1 @@ -28611,7 +28734,6 @@ carniceriaserrador.es, 1 carnildo.com, 1 carnivalcostumes.tk, 1 carnivalkingsupplies.com, 1 -carnivalliqueur.com, 0 carnivalstore.de, 1 carnivorousplants.co.uk, 1 carobme.de, 1 @@ -28620,13 +28742,11 @@ caroffer.ch, 1 carohq.com, 1 caroinstitute.cf, 1 carol-lambert.com, 1 -carol.health, 1 carolcestas.com, 1 caroli.biz, 1 -caroli.com, 0 +caroli.com, 1 caroli.info, 1 caroli.name, 1 -caroli.net, 0 carolicious.tk, 1 carolina.cz, 1 carolinacourtreporter.com, 1 @@ -28646,6 +28766,8 @@ carolinegirvan.com, 1 carolineovercash.com, 1 carolinepleuvret.fr, 1 carolmolinari.tk, 1 +carorchestra.com, 1 +carottage-beton.com, 1 carousel.ga, 1 carouselbuses.co.uk, 1 carouselinsights.com, 1 @@ -28683,7 +28805,6 @@ carre.nl, 1 carrefour.ro, 1 carrelageetmosaique.fr, 1 carrentaldavao.com, 1 -carreoncerda.pro, 1 carreraspopularescalendario.com, 1 carrgroup.co.nz, 1 carrgroup.com.au, 1 @@ -28693,11 +28814,9 @@ carriedin.com, 1 carrier.tools, 1 carrieunderwood.tk, 1 carrigansliffordgreenway.ie, 1 -carrington.edu, 1 carrinhocheiooanointeiro.com.br, 1 carrion.tk, 1 carrnorthamerica.com, 1 -carro.wiki, 1 carroattrezzi.it, 1 carroattrezzi.lazio.it, 1 carroattrezzimilanodaluiso.it, 1 @@ -28760,6 +28879,7 @@ cartegrise.xyz, 1 carteles.tk, 1 cartelesparaimprimir.com, 1 cartelloni.roma.it, 1 +cartenova.co, 1 cartercountymo.gov, 1 carterdan.net, 1 carterjonas.co.uk, 1 @@ -28778,6 +28898,7 @@ carthagecement.com.tn, 1 carthagesavings.com, 1 cartierplan.ga, 0 cartographiepremiereligne.ca, 1 +cartoleriabotticelli.it, 1 cartomancieperso.tk, 1 cartona.com, 1 cartongesso.roma.it, 1 @@ -28785,6 +28906,7 @@ cartons-cheap.tk, 1 cartoonbrew.com, 1 cartooncastles.ie, 1 cartooncollections.com, 1 +cartoonlists.com, 1 cartoonstock.com, 1 cartoontube69.com, 1 cartoonwap.tk, 1 @@ -28801,32 +28923,35 @@ cartridgereviewsest.ga, 1 cartridgesave.co.uk, 1 cartturbo.com, 1 cartucce24.it, 1 +cartuchoonline.com.br, 1 cartunings.tk, 1 carty.bg, 1 +carun.us, 0 carunion.nl, 1 carus.com, 1 caruso.com, 1 carvalhofer.lu, 1 carver.tk, 1 +carvercentercatalyst.com, 1 carvercountymn.gov, 1 +carvoeiro-car-hire.com, 1 carvykti.com, 1 carw.sh, 1 carwashlogin.com, 1 carwashon5th.com, 1 carwind.com, 1 -carwrapinfo.com, 0 carwreckcowboy.com, 1 caryl.fr, 1 carymedicalgroup.com, 1 caryvilletn.gov, 1 cas-chauxdefonds.ch, 0 cas-ebbers.nl, 1 -casa-baeckerei.de, 1 casa-brel.ml, 1 casa-due-pur.com, 1 casa-due-pur.de, 1 casa-due.com, 1 casa-funerara-mirage.ro, 1 +casa-indigo.com, 1 casa-lunch-break.de, 1 casa-lunchbreak.de, 1 casa-mea-inteligenta.ro, 1 @@ -28851,7 +28976,7 @@ casadoarbitro.com.br, 1 casadopulpo.com, 1 casadostratoresjau.com.br, 1 casadue.de, 1 -casaearomas.com.br, 0 +casaearomas.com.br, 1 casaessencias.com.br, 1 casafina.tk, 1 casagami.ga, 1 @@ -28859,6 +28984,7 @@ casajeannine.tk, 1 casalacabra.com, 1 casalborgo.it, 1 casalcrevillent.tk, 1 +casaleadersinc.com, 1 casaledibuccole.it, 1 casalinghedisperate.ga, 1 casalopez.tk, 1 @@ -28905,6 +29031,7 @@ cascadinglounge.tk, 1 cascavelle.fr, 1 cascavelle.nl, 1 casden.fr, 1 +case-jucu.ro, 1 case-la-rosu.ro, 1 case-vacanza-salento.com, 1 case-ware.info, 1 @@ -28929,53 +29056,26 @@ cases.media, 1 casesandclues.co.uk, 1 casetech.com, 1 casetta.net, 1 -caseware-idea.ca, 1 -caseware-idea.com, 1 caseware-idea.fr, 1 caseware-idea.us, 1 -caseware.asia, 1 -caseware.biz, 1 caseware.co.uk, 1 +caseware.com, 1 caseware.com.au, 1 caseware.dk, 1 caseware.in, 1 -caseware.info, 1 caseware.net.au, 1 caseware.nl, 1 -caseware.us, 1 casewareanalytics.ca, 1 -casewareanalytics.co, 1 casewareanalytics.com, 1 -casewareanalytics.eu, 1 -casewareanalytics.fr, 1 casewareanalytics.info, 1 -casewareanalytics.net, 1 -casewareanalytics.nl, 1 -casewareanalytics.org, 1 -casewareanalytics.ro, 1 -casewareapps.com, 1 -casewareblog.com, 1 -casewareclientspace.com, 1 casewarecloud.com, 1 casewarecloudsmsfaudit.com.au, 1 casewarecloudsmsfaudit.net.au, 1 -casewarecollaborate.com, 1 -casewarecore.com, 1 -casewarecorporate.com, 1 -casewareidea.com, 1 -casewareinternational.info, 1 -casewareinternationalinc.info, 1 -casewaremunicipal.com, 1 casewareonline.com.au, 1 casewareonline.net.au, 1 -casewarequickvids.com, 1 casewaresmsfaudit.com.au, 1 -casewarestories.com, 1 -casewaretime.com, 1 -casewarewebapps.com, 1 caseworksonline.com, 1 caseycapitalpartners.com, 1 -casgeo.com, 1 casgp.com, 0 cash-bot.tk, 1 cash-generator.tk, 1 @@ -28983,6 +29083,7 @@ cash.app, 1 cash.me, 1 cash.nyc, 1 cash1loans.com, 1 +cashadvanceoflebanon.com, 1 cashamerican.tk, 1 cashati.com, 1 cashbackcow.us, 1 @@ -28996,11 +29097,9 @@ cashcoin.tk, 1 cashconverters.co.uk, 1 cashconverters.com, 1 cashconverters.com.au, 1 -cashdeskapp.com, 1 cashdo.co.il, 1 cashdrop.ga, 1 cashewmanufacturers.com, 1 -cashflowdiary.com, 0 cashflowstrategist.com, 0 cashforcarremovalsipswich.com.au, 1 cashfortulsahouses.com, 1 @@ -29030,6 +29129,7 @@ casino-cash-flow.su, 1 casino-cashflow.ru, 1 casino-hero.de, 0 casino-poker-tour.com, 1 +casino-r.com, 1 casino-spelletjes.com, 1 casino-trio.com, 1 casino-z-top.ru, 1 @@ -29155,6 +29255,7 @@ casinocrit.com, 1 casinodebeaulieu.com, 1 casinodecavalaire.com, 1 casinofollower.com, 1 +casinoleader.com, 1 casinolistings.com, 1 casinologin.pl, 1 casinologinaustralia.com, 1 @@ -29167,8 +29268,6 @@ casinoreal.com, 1 casinoreviews.nl, 1 casinorewards.info, 1 casinorobots.com, 1 -casinorocket.com, 1 -casinorocket4.com, 1 casinosanalyzer.com, 1 casinosblockchain.io, 1 casinoscout.ca, 1 @@ -29196,7 +29295,6 @@ casovi.cf, 1 caspe.co, 1 caspeco.dk, 1 caspeco.no, 1 -casper.moi, 1 casperpanel.com, 1 caspi.org.il, 1 caspianlegal.com, 1 @@ -29205,7 +29303,7 @@ caspianrentcar.com, 1 caspicards.com, 1 caspiconstruction.com, 1 caspiliving.com, 1 -cassclay.com, 1 +cassa.ro, 1 casscoroadmi.gov, 1 casscountyia.gov, 1 casscountyil.gov, 1 @@ -29230,7 +29328,6 @@ castaneatownshippa.gov, 1 castaneda.tk, 1 castecnologia.com.br, 1 castedart.com, 1 -castela.fr, 1 castella.tk, 1 castellet.tk, 1 castelletto.tk, 1 @@ -29245,6 +29342,7 @@ castiana.xyz, 1 castible.de, 1 castiel.cf, 1 castilla-comunera.tk, 1 +castillo.club, 1 castillosohail.es, 1 casting-vote.tk, 1 castingallaitaliana.com, 1 @@ -29258,11 +29356,11 @@ castlabs.com, 0 castle-emarketing.com, 1 castle-engine.io, 1 castle-house-ireland.com, 1 -castlebar.one, 0 +castlebar.one, 1 +castlebeats.de, 1 castlecapers.com.au, 1 castledurrow.com, 1 castleflame.fr, 1 -castlefordboxingacademy.com, 1 castlehack.ga, 1 castlekingdomstockport.co.uk, 1 castlekingkent.co.uk, 1 @@ -29291,7 +29389,6 @@ casualpolarbear.com, 1 casualtime.ga, 1 casusgrillcaribbean.com, 1 cat-encyclopedia.ml, 1 -cat-litter-box.co.uk, 1 cat-problems.ml, 1 cat.casa, 1 cat.fo, 1 @@ -29311,7 +29408,6 @@ catalogcomputerhardware.tk, 1 catalogingpro.com, 1 catalogobiblioteca.com, 1 catalogobiblioteca.net, 1 -catalogodoamor.com, 1 catalogosdemujer.com, 1 catalogosvirtualesonline.com, 1 catalogueau.com, 0 @@ -29320,7 +29416,6 @@ catalonia.tk, 1 catalyseurs-territoriaux.org, 1 catalyst-ecommerce.com, 1 catalystapp.co, 1 -catalystindustrialservices.com, 1 catalyzr.info, 1 catandmoonalchemy.com.au, 1 cataniatoday.it, 1 @@ -29349,12 +29444,11 @@ catcatnya.com, 1 catchall.tw, 1 catchers.cc, 1 catchhimandkeephim.com, 0 -catchief.com, 0 +catchief.com, 1 catchook.com, 1 catchteamca.gov, 1 catchthestars.org, 1 catchup-enschede.tk, 1 -catchyz.com, 1 catclouds.net, 1 catcontent.cloud, 1 catcoxx.com, 1 @@ -29396,6 +29490,7 @@ catholicgallery.org, 1 catholicjobs.com, 1 catholicnewstt.com, 1 catholicprayers.tk, 1 +catholicprayerspace.ca, 1 catholicteuchtar.cf, 1 catholicteuchtar.ga, 1 catholicteuchtar.ml, 1 @@ -29429,6 +29524,7 @@ catland.club, 1 catlettsburgky.gov, 1 catlowe.com, 1 catmash.tk, 0 +catmatchers.org, 1 catme.org, 1 catmonad.xyz, 1 catmoose.ca, 1 @@ -29444,6 +29540,7 @@ catprint.com, 1 catrepeller.com, 1 catrinasporelmundo.com, 1 catrins-kunst.de, 1 +catsarch.co, 1 catsarch.com, 1 catscreativecakes.ga, 1 catsmagic.pp.ua, 1 @@ -29493,14 +29590,12 @@ cavd.org, 1 cave-browne-cave.com, 1 cave-reynard.ch, 1 cave-vet-specialists.co.uk, 1 -caveat-capital.com, 1 cavecreekaz.gov, 1 cavediverharry.com, 1 cavemax.com, 1 cavisson.com, 1 cavistenancy.fr, 1 cavsconnect.com, 1 -cavuno.com, 1 cavzodiaco.com.br, 1 caw.be, 1 cawagiras.ga, 1 @@ -29512,12 +29607,12 @@ cayugacounty.gov, 1 cazadordebuenaonda.com, 1 cazenovecapital.com, 1 cazfire.gov, 1 +cazizi.com, 1 cb1388.com, 1 cb1588.com, 1 cba.ca, 1 cba.gov.pl, 1 cbaamaga.com, 1 -cbag.net, 1 cbbio.fr, 1 cbc-hire.co.uk, 1 cbc-network.org, 1 @@ -29537,6 +29632,7 @@ cbdev.de, 1 cbdication.com, 1 cbdlession.com, 1 cbdlinks.xyz, 1 +cbdnational.com, 1 cbdoilcures.co, 1 cbdtelegram.com, 1 cbeal-fumeirodetrancoso.pt, 1 @@ -29559,6 +29655,7 @@ cbl.sk, 1 cblocallocksmiths.co.uk, 1 cbmc.store, 1 cbmconnect.com, 1 +cbmindia.org, 1 cbmusa.com, 1 cbmvn.com, 1 cbnegocial.com.br, 1 @@ -29575,13 +29672,15 @@ cbrbuildingrepairs.com.au, 1 cbrobot.net, 1 cbrsecurity.be, 1 cbs-engineering.com, 1 +cbs.nl, 1 cbs3design.it, 1 cbt.quest, 1 +cbt.tj, 1 cbw.sh, 1 cbxp.in, 1 cc-customer.de, 1 -cc-med-anwendergruppe.de, 1 cc.ag, 1 +cc.hn, 1 cc.sk, 1 cc3a.com, 1 cc5197.co, 1 @@ -29598,7 +29697,6 @@ ccaa.gg, 1 ccaag.link, 1 ccaag.me, 1 ccaag.mx, 1 -ccaag.net, 1 ccaag.us, 0 ccac.gov, 1 ccad.edu, 1 @@ -29608,7 +29706,9 @@ ccaj.io, 1 ccak.training, 1 ccaptioning.com, 1 ccatpracticetest.com, 1 +ccatpracticetests.com, 1 ccattestprep.com, 1 +ccautomobil.de, 1 ccb.gov, 1 ccbaltics.com, 1 ccbank.bg, 1 @@ -29647,6 +29747,7 @@ cchat.de, 1 cchsthevoice.org, 1 cci.org.co, 1 cciiblog.tk, 1 +cciofficial.com, 1 ccis.rs, 1 cck-law.com, 1 cckguava.com, 1 @@ -29670,6 +29771,7 @@ ccpinturas.com, 1 ccpinvestments.com, 1 ccplot.org, 1 ccprwebsite.org, 1 +ccrf501.com, 1 ccrfi.net, 1 ccrfi.org, 1 ccrun.tk, 1 @@ -29678,6 +29780,7 @@ ccshire.ga, 1 ccsinnovations.com, 1 ccsioims.ph, 1 ccsk.training, 1 +ccskills.org.uk, 1 ccsrv.eu, 1 ccsys.com, 1 cct1d.com, 1 @@ -29692,7 +29795,9 @@ ccts-cprst.ca, 0 cctv-camera.cf, 1 cctv-supraveghere.ro, 1 cctv-systems.tk, 1 +cctvinstallationsdubai.com, 1 cctvlaw.ga, 1 +cctvonline.cz, 1 cctvsecurityjohannesburg.co.za, 1 cctvview.info, 1 ccu.plus, 1 @@ -29715,7 +29820,9 @@ cdaid.gov, 1 cdaldeano.tk, 1 cdasiaonline.com, 0 cdasphalt.com, 1 +cdavis.xyz, 1 cdawoerden.org, 1 +cdbp.pro, 1 cdbtech.com, 1 cdc.gov, 1 cdcflix.xyz, 1 @@ -29723,7 +29830,6 @@ cdcpartners.gov, 1 cdd.go.th, 1 cdda.ch, 0 cdeeply.com, 1 -cdf-harcigny.fr, 1 cdf.fyi, 1 cdf.wiki, 1 cdfnature2019.fr, 1 @@ -29733,6 +29839,7 @@ cdga.org, 1 cdgitalia.org, 1 cdhome.ga, 1 cdhqt.com, 1 +cdibtpjob.com, 1 cdigitale.com, 1 cdirectory.tk, 1 cdkeyprices.com, 1 @@ -29741,6 +29848,7 @@ cdkrot.me, 1 cdlandb1.com, 1 cdlaserena.tk, 1 cdlinares.tk, 1 +cdlnaturals.com, 1 cdm.guru, 1 cdmcalsace.com, 1 cdmdisinfestazioni.it, 1 @@ -29799,6 +29907,7 @@ cea.ru, 1 ceafinney.com, 1 ceakumal.org, 1 ceannard.net, 1 +cearl.cc, 1 ceatheneum.com, 1 ceba-cuec.ca, 0 cebek.co.uk, 1 @@ -29807,6 +29916,7 @@ cebrita.tk, 1 cec.com.es, 1 cec.nom.es, 1 cec.org.es, 1 +cec.org.pt, 1 cecalivo.tk, 1 cecame.ch, 1 cecamericas.com, 1 @@ -29848,10 +29958,9 @@ ceew.in, 1 cefaction.pt, 1 cefi.work, 1 cefonline.com, 1 +cefpress.com, 1 cefta.int, 1 -cegelem.fr, 1 cegfw.com, 1 -cegpalota.hu, 1 cehjournal.org, 1 ceiba.com.co, 1 ceicer.eu, 1 @@ -29863,13 +29972,6 @@ ceilimoss.tk, 1 ceilingpac.org, 1 ceinorme.it, 1 ceiphr.com, 1 -ceiscloud.com, 1 -ceistommasocornelio.com, 1 -ceistommasocornelio.eu, 1 -ceistommasocornelio.info, 1 -ceistommasocornelio.it, 1 -ceistommasocornelio.net, 1 -ceisweb.com, 1 cejgsd.org, 1 cejhon.cz, 0 cejky.cz, 1 @@ -29890,24 +29992,24 @@ celebratoday.com, 0 celebraze.tk, 1 celebrex.ga, 1 celebrex100mg.cf, 1 -celebrim.com, 1 celebritiesblog.tk, 1 celebritydailynews.ml, 1 celebrityfakes.tk, 1 -celebrityfeet4.us, 1 celebritynakeds.com, 1 celebritypic.tk, 1 celebritypics.club, 1 celebrityscope.net, 1 celebritysrit.tk, 1 celebritytopnews.tk, 1 +celebrityviralbug.com, 1 celectricos.com, 1 celectro-pro.com, 1 celendo.ga, 1 +celenephotography.com, 1 celeraindustries.tk, 1 celesco.eu, 1 +celeste-energie.fr, 1 celestia.tk, 1 -celestial.ug, 1 celestialdental.com, 1 celestialenergies.com.au, 1 celestialmusic.tk, 1 @@ -29917,7 +30019,6 @@ celiac.com, 1 celigo.com, 1 celinaohiopd.gov, 1 celine-patisserie.fr, 1 -celinecity.com, 1 celineitalia.tk, 1 celinesrecipes.com, 1 cellboost.cf, 1 @@ -29930,7 +30031,6 @@ cellmart.ru, 1 cellnatsci.com, 1 cellonline.org, 1 cellopasorobles.com, 1 -cellpex.com, 1 cellphonedb.org, 1 cellrg.org, 1 cellsheet.me, 1 @@ -29946,9 +30046,9 @@ celluliteremovaldiet.com, 1 cellulitetreatment.tk, 1 cellypso.com, 1 celmedia.cl, 1 +celsa.fr, 1 celseven.com, 1 celsoazevedo.com, 1 -celta.cl, 1 celtacad.tk, 1 celti.ie.eu.org, 1 celti.name, 1 @@ -29958,7 +30058,6 @@ celtigafutbolclub.com, 1 celulares.com, 1 celulas-estaminais.info, 1 celuliteonline.com, 1 -celyrian.com, 1 cemada.cz, 1 cembra.ch, 1 cemcerkez.com, 1 @@ -30011,7 +30110,6 @@ centervilleutah.gov, 1 centexlegal.com, 1 centextlegal.com, 1 centextlitigationservices.com, 1 -centigen.ai, 1 centillionss.com, 1 centimark.com, 1 centio.bg, 1 @@ -30019,12 +30117,12 @@ centipedegraphics.com, 1 centolos.tk, 1 centr.dn.ua, 1 central-apartman.tk, 1 -central-lascarisdeli.com, 1 central4.me, 1 centralbank.ae, 1 centralbetsers.ga, 1 centralbetsest.ga, 1 centralcityjuniorkindergarten.com, 1 +centralclinic.science, 1 centralcoasthomeloans.com.au, 1 centralcoaststadium.com.au, 1 centralconvergence.com, 1 @@ -30035,18 +30133,20 @@ centralebigmat.eu, 1 centralegedimat.eu, 1 centralengland.coop, 1 centralesnucleaires.fr, 1 +centralfinancas.com, 1 centralfor.me, 1 -centralhaat.com, 1 centralhome.com, 1 centralhq.tk, 1 -centralhub.tech, 1 -centralisgroup.com, 0 +centralimpressos.com.br, 0 +centralinf.com.br, 1 +centralisgroup.com, 1 centralitasbaratas.es, 1 centralkladno.cz, 1 centrallaketownshipmi.gov, 1 centrallead.net, 1 centrallondonaesthetics.co.uk, 0 centralnic.com, 1 +centralpaellera.com, 1 centralpay.eu, 0 centralpinesnc.gov, 1 centralsite.tk, 1 @@ -30054,8 +30154,10 @@ centralsoft.tk, 1 centralspyers.ga, 1 centralstatecu.org, 1 centralstor.ga, 1 +centraltoken.io, 1 centralvalleyharness.org, 1 centralvoice.org, 1 +centrationgame.com, 1 centre-commercial.fr, 1 centre-equestre.net, 1 centre-maiakovski.fr, 1 @@ -30084,6 +30186,7 @@ centroecuestrecastellar.com, 1 centroestetico.it, 1 centrofotostudija.lt, 1 centrofugi-pipeti-elta90.com, 1 +centrogaiamexico.com, 1 centrokiri.cl, 1 centrolavoro.org, 1 centromedico.tk, 1 @@ -30118,6 +30221,8 @@ centurioninfosec.com, 0 centurionlaboratories.com.ua, 1 centurionunderground.com, 1 century-properties.com, 1 +century21.es, 0 +century21.pt, 0 centurycarwashinglewood.com, 1 centuryfighters.tk, 1 centuryforum.tk, 1 @@ -30126,9 +30231,10 @@ centurylink.cf, 1 centuryreporters.com, 1 centurystudios.com, 1 centurytiling.com.au, 1 +ceo-consulting.eu, 1 ceomanipur.nic.in, 1 ceomonthlyest.ga, 1 -cepalabs.cl, 1 +ceopedia.org, 1 cephalexin.ga, 1 cephalexincapsules.ml, 1 cephalexincapsules.tk, 1 @@ -30144,7 +30250,6 @@ ceramirupe.com, 1 cerammind.com, 1 ceranity.au, 1 cerastar.com, 1 -cerba-lca.com.br, 1 cerber.re, 1 cerbere.net, 1 cerberusecurity.com, 1 @@ -30162,6 +30267,7 @@ cerebralnaparaliza.com, 1 cerebrito.com, 1 cerebrito.net, 1 cerebrosano.gov, 1 +cerebrum.com, 1 cerecup.com, 0 ceredowv.gov, 1 ceremonial-magic.com, 1 @@ -30172,22 +30278,19 @@ cerena-silver.ru, 0 ceres-corp.org, 0 cerezacomunicacion.com, 1 cerfid.com.pe, 1 -cerinrosario.com.ar, 1 ceris.com, 1 cernac.cz, 1 cernakova.eu, 1 cernalistina.eu, 1 cernko.de, 1 -cernyn.com, 1 ceroresiduo.com, 0 cerovica.tk, 1 cerpus-course.com, 1 -cerqa.cloud, 0 +cerqa.cloud, 1 cerquitamio.com, 1 cerrad.com.ua, 1 cerrajeriaamericadelquindio.com, 1 cerrajeriaenvillavicencio.com, 1 -cerratolimo.com, 1 cerritosca.gov, 1 cerrogordo.gov, 1 cerstve-korenie.sk, 1 @@ -30209,6 +30312,8 @@ certfa.com, 1 certi.photo, 1 certible.com, 1 certidao-nascimento-pt.org, 1 +certifi.com, 1 +certifi.net, 1 certificadodigitalpari.com.br, 1 certificados.edu.do, 1 certificatedetails.com, 1 @@ -30232,32 +30337,37 @@ certifycrm.com, 1 certifylogin.com, 1 certiquali.fr, 1 certivac.ch, 1 +certly.co, 1 certnazionale.it, 1 certo-escrow.com, 1 certos.com, 1 -certowl.io, 1 certp.fr, 1 certprep.fr, 0 certpro.uk, 1 certready.tk, 1 +certsign.fr, 1 certspotter.com, 1 certspotter.org, 1 certum.cn, 1 certum.shop, 0 certusquartz.com, 1 certyhukil.ga, 1 +cerulean.rocks, 1 +cerulean.work, 1 cervejista.com, 1 cervek.me, 1 cervellomorto.tk, 1 cerveny.ch, 1 cervenyjezek.eu, 1 cervera.cat, 1 +cervera.com.br, 1 ces-ltd.co.uk, 0 ces-ltd.com, 1 cesame.ca, 1 cesar-hector.tk, 1 cesarecirugiaplastica.com, 0 cesarfotos.com.br, 1 +cesarpinto.com, 1 cesarr.fr, 1 cesarteixeiraimoveis.com.br, 1 cesboard.com, 1 @@ -30269,13 +30379,14 @@ cesenatoday.it, 1 cesibo.com, 1 cesipagano.com, 0 cesium.ml, 1 -cesjoinin.com, 1 ceska-elita.cz, 1 ceska-polygraficka.cz, 1 ceska-polygraficka.eu, 1 ceskasit.cz, 1 ceskydj.cz, 1 ceslasvegasnews.com, 1 +cesltd.com, 1 +cesmet.mil.do, 0 cesobaly.cz, 1 cesonia.io, 0 cespedes.fr, 1 @@ -30290,31 +30401,29 @@ cestujtenamiru.cz, 1 cestunamiru.cz, 1 cesurteknikservis.com, 1 cesusc.edu.br, 1 -cesvotes.com, 1 cetak.com.my, 1 cetamol.com, 1 cetangyuk.com, 1 -cetayadigital.com, 1 cetelem.pt, 1 cetelon.tk, 1 ceti.ga, 1 cetin.cz, 1 cetong.se, 1 cetorebe.tk, 1 -ceu.bg, 1 ceu.edu.ph, 1 ceuniverse.com, 0 ceva-dsp.com, 1 cevaplari.net, 1 -cevep.ca, 1 ceverett.io, 0 cevin.at, 1 cevo.com.hr, 1 cevpu.com, 1 -cevrimicidiyet.com, 0 +cevrimicidiyet.com, 1 cevt.ar, 1 cewek.ml, 1 cewood.xyz, 1 +cexplorer.io, 1 +ceyhanmolla.com, 1 ceyizlikelisleri.com, 1 ceylon-lang.org, 1 cezannehr.com, 1 @@ -30328,6 +30437,7 @@ cfa.gov, 1 cfaimpact.com, 1 cfan.space, 1 cfany.org, 1 +cfar.org, 0 cfasync.ga, 1 cfbenchmarks.com, 1 cfc-stmoritz.com, 1 @@ -30344,8 +30454,6 @@ cfh.com, 1 cfigura.com, 1 cflblaw.com, 1 cflogisticsllc.com, 1 -cfnets.co.jp, 1 -cfnets.com, 1 cfnibelize.com, 1 cfnmpics.com, 1 cfno.org, 0 @@ -30357,7 +30465,6 @@ cfotech.ca, 1 cfotech.co.nz, 1 cfotech.co.uk, 1 cfotech.com.au, 1 -cfotech.ie, 1 cfotech.in, 1 cfotech.news, 1 cfpa-formation.fr, 1 @@ -30384,7 +30491,6 @@ cg.al, 1 cg.icu, 1 cg.search.yahoo.com, 0 cgal.org, 1 -cgalvin.com, 1 cgan.pw, 1 cgarchives.com, 1 cgbassurances.ch, 0 @@ -30396,7 +30502,9 @@ cgcg.biz, 1 cgconsulting.digital, 1 cgdct.moe, 1 cgelves.com, 1 +cgestiona.com, 0 cgeventoseturismo.com.br, 1 +cgfordparts.com, 1 cggs.vic.edu.au, 1 cggsaquatic.com.au, 1 cgha.us, 1 @@ -30404,15 +30512,17 @@ cgionline.tk, 1 cgknieuwpoort.nl, 1 cglib.xyz, 1 cgmllc.net, 1 +cgo-it.de, 1 cgo.pw, 1 cgp.moe, 1 cgpa-de.org, 1 cgpcollective.com, 1 cgpe.com, 1 cgplumbing.com, 1 -cgplumbingservice.com, 0 +cgplumbingservice.com, 1 cgps.ch, 1 cgsmart.com, 1 +cgsmotors.com, 1 cgstprayagraj.gov.in, 1 cgt-univ-nantes.fr, 1 cgtburgos.org, 1 @@ -30435,7 +30545,6 @@ ch-stjunien.fr, 1 ch.search.yahoo.com, 0 ch225.com, 1 ch47f.com, 1 -ch881.org, 1 cha-ta.com, 1 chaacantik.tk, 1 chaacker.tk, 1 @@ -30449,6 +30558,7 @@ chad.ch, 1 chadi.io, 1 chadis.com, 1 chadlenz.ca, 1 +chadstoneapartments.com.au, 1 chadtaljaardt.com, 1 chaghi.tk, 1 chaghionline.tk, 1 @@ -30467,7 +30577,6 @@ chainex.io, 1 chaingame.pro, 1 chainge-re.com, 1 chaingpt.org, 1 -chainpatrolstatus.com, 1 chainsawprofessional.com, 1 chainwhy.com, 0 chainz.tk, 1 @@ -30479,12 +30588,12 @@ chaisystems.net, 1 chaitanyapandit.com, 1 chaizhikang.com, 1 chakanaherb.be, 1 -chakrakali.com, 1 chalanbiltv.net, 1 chaldal.com, 1 chalet-charmettes.fr, 1 chalet-gerard.com, 1 chalet-maubuisson.tk, 1 +chaletapartmentrentals.com, 1 chaletdemontagne.org, 1 chaletmanager.com, 1 chaletpierrot.ch, 0 @@ -30497,8 +30606,9 @@ challenges.gov, 1 challengeskins.com, 1 chalons-agglo.fr, 1 chalonsenchampagne.fr, 1 +chaloo.com.pk, 1 chalov.ml, 1 -chama.gr, 1 +chama.gr, 0 chamanga.store, 1 chamartin.tk, 1 chamath.co.uk, 1 @@ -30517,7 +30627,6 @@ chamberlinfamilyphilanthropy.org, 1 chamberlinfoundation.org, 1 chambers.org.uk, 1 chamberscountytx.gov, 1 -chamehevent.ir, 1 chameleon.io, 1 chameth.com, 1 chamicro.com, 1 @@ -30533,11 +30642,13 @@ championnat-romand-cuisiniers-amateurs.ch, 1 championpetfoods.com, 1 championsofpowerfulliving.com, 0 championsofregnum.com, 1 +championweb.co.nz, 0 championweb.com, 0 championweb.com.au, 0 +championweb.nz, 0 championweb.sg, 0 champslearning.co.uk, 1 -champstv1.com, 1 +chamsocial.com, 1 chamudi.lk, 1 chamudi.net, 1 chamurliyski.com, 1 @@ -30556,7 +30667,7 @@ change-coaching-gmbh.ch, 1 change10000lives.com.ph, 1 changeactivation.com, 1 changeanalytics.us, 1 -changechecker.org, 0 +changechecker.org, 1 changeforfuture.cf, 1 changemywifipassword.com, 1 changenow.io, 1 @@ -30579,7 +30690,6 @@ channellife.ca, 1 channellife.co.nz, 1 channellife.co.uk, 1 channellife.com.au, 1 -channellife.ie, 1 channellife.in, 1 channellife.news, 1 channelpro.es, 1 @@ -30590,20 +30700,21 @@ chanska.com, 1 chantage.tk, 1 chantalflores.co.uk, 1 chantellbeauty.co.uk, 1 +chantierjob.com, 1 chantuong.org, 1 chanty.com, 1 chanz.com, 1 chaos-darmstadt.de, 1 chaos-wg.net, 1 chaos.run, 1 +chaos.stream, 1 chaoschemnitz.de, 1 chaoscommunication.camp, 1 chaoscycle.tk, 1 chaosdorf.de, 1 -chaosengine.bounceme.net, 1 chaosfield.at, 0 +chaosgenius.io, 1 chaosme.su, 1 -chaospott.de, 1 chaosprocess.com, 1 chaoticevil.tk, 1 chaoticgamers.net, 1 @@ -30637,7 +30748,6 @@ charge-point.solutions, 1 charge.ga, 1 charge.gq, 1 chargebacks911.com, 1 -chargebull.de, 1 chargehound.com, 1 chargeincluded.eu, 1 chargeover.com, 0 @@ -30668,7 +30778,6 @@ charlescwcooke.com, 1 charlesdickens.tk, 1 charlesheidsieck.com, 1 charlesmarkhotel.com, 1 -charlesodale.com, 1 charlesperkinsacademy.com.au, 1 charlesreedcagle.com, 0 charlesreid1.com, 1 @@ -30691,12 +30800,12 @@ charliebighams.com, 0 charlieblog.tk, 1 charlieconstruction.com, 1 charliedillon.com, 1 -charliedubovi.ch, 1 charliegarrod.com, 1 charlieharbourtattoos.tk, 1 charliehr.com, 1 charliejonas.co.uk, 1 charliejonas.com, 1 +charlientoi.fr, 1 charlierogers.co.uk, 1 charlierogers.com, 1 charliescomputerservice.com, 1 @@ -30716,7 +30825,6 @@ charlotteanne.tk, 1 charlottecountyva.gov, 1 charlottedaviesphotography.co.uk, 1 charlottemi.gov, 1 -charlotteskinandlaser.com, 1 charlubermensch.com, 1 charlws.com, 1 charlylou.de, 1 @@ -30729,6 +30837,7 @@ charmingsaul.com, 1 charnego.tk, 1 charnwoodkitchens.co.uk, 1 charon.tk, 1 +charonsecurity.com, 1 charpax.com, 1 charqawi.tk, 1 charset.org, 1 @@ -30751,16 +30860,19 @@ chaseandzoey.de, 1 chasebenefits.com, 1 chasecountyne.gov, 1 chasetrails.co.uk, 1 -chaseyoursky.com, 1 +chaseventar.de, 1 chaskafire.gov, 1 chaskamn.gov, 1 chaskapolice.gov, 1 chasoslov.tk, 1 +chasse-au-tresor.eu, 1 +chasse-maree.com, 1 chasseurdetruites.com, 1 chastitybelts.tk, 1 chat-buddy.com, 1 chat-cam.tk, 1 chat-edu.org.uk, 1 +chat-insel.de, 1 chat-porc.eu, 1 chat.cz, 1 chat2.cf, 1 @@ -30818,7 +30930,6 @@ chatline.ml, 1 chatlol.org, 1 chatloupe.org, 1 chatmaus.ml, 1 -chatmitra.com, 1 chatnederland.eu, 1 chatomg.com, 1 chatondesk.com, 1 @@ -30826,6 +30937,7 @@ chatons.org, 1 chatopi.be, 1 chatopia.tk, 1 chatovod.tk, 1 +chatphp.com, 1 chatplanet.com, 1 chatpoint.tk, 1 chatreplay.stream, 1 @@ -30857,8 +30969,10 @@ chauffeurandbeyond.com, 1 chaumiere.ddns.net, 0 chaurocks.com, 1 chaussenot.net, 1 +chaussurerunning.fr, 1 chautauquacountyks.gov, 1 chautauquacountyny.gov, 1 +chaveirogrimaldi.com, 1 chaverde.org, 1 chayehnos.com.ar, 1 chazalet.fr, 0 @@ -30886,6 +31000,7 @@ cheapairfarefrom.com, 1 cheapairfaresdeals.com, 1 cheapairfaresticket.com, 1 cheapairlinesuk.com, 1 +cheapairplaneticket.biz, 1 cheapalarmparts.com.au, 0 cheapandbesthosting.com, 1 cheapautoinsuranceblog.com, 1 @@ -30894,6 +31009,7 @@ cheapchiaplotting.com, 1 cheapervacations.com, 1 cheapessay.net, 1 cheapestdirectdebit.co.uk, 1 +cheapestgamecards.com, 1 cheapestwaytofly.com, 1 cheapestwebcamsites.com, 1 cheapexpenseers.ga, 1 @@ -30921,6 +31037,7 @@ cheapspecialistsest.ga, 1 cheapsshop.tk, 1 cheapsslsecurity.com, 1 cheapsslsecurity.com.au, 1 +cheapsslsecurity.com.ph, 1 cheapsyrupers.ga, 1 cheaptadalafil.tk, 1 cheapticketsfrom.com, 1 @@ -30944,10 +31061,7 @@ cheatmasters.tk, 1 cheatomania.tk, 1 cheatraiders.tk, 1 cheatsupreme.com, 1 -cheazey.com, 1 -cheazey.eu, 1 cheazey.net, 1 -cheazey.org, 1 cheb-news.net, 1 chebotarevkk.tk, 1 chebwebb.com, 1 @@ -30959,7 +31073,6 @@ check.torproject.org, 0 checka.co.nz, 1 checkandreportlive.com, 1 checkaninvoice.com, 1 -checkbarriere.de, 1 checkblau.de, 1 checkbooknyc.com, 1 checkbot.io, 1 @@ -30974,25 +31087,23 @@ checkfreescore.com, 1 checkfresh.com, 1 checkiday.com, 1 checkingfinder.com, 1 -checkingwork.io, 1 checkjelinkje.nl, 1 checklistbuilder.herokuapp.com, 1 checkmack.cf, 1 checkmack.ga, 1 checkmack.gq, 1 checkmarket.com, 1 +checkmarx.com, 1 checkme.gq, 1 checkme.ml, 1 checkmedia.org, 1 checkmin.cf, 1 checkmk.com, 1 checkmyhttps.net, 1 -checkmypageseo.com, 1 checkmypsoriasis.com, 1 checknetworks.com.au, 1 checkngo.com, 1 checkout.google.com, 1 -checkoutexpert.com, 1 checkprograms.com, 1 checkprograms.net, 1 checkr.com, 0 @@ -31001,12 +31112,13 @@ checkras.tk, 1 checkrente.nl, 1 checkreview.in, 1 checkrz.com, 1 +checksandbalancesproject.org, 1 checksoft.net, 1 checkspf.net, 1 -checktheworth.com, 1 -checktls.nl, 1 +checktls.nl, 0 checktype.com, 1 checkui.com, 1 +checkurinsurance.com, 1 checkwebsites.net, 1 checkyourmath.com, 1 checkyourprivilege.org, 1 @@ -31024,12 +31136,11 @@ cheeseemergency.co.uk, 1 cheesefusion.com, 1 cheeseginie.com, 1 cheesy.gay, 1 +cheesyf.art, 1 cheeth.am, 1 cheetham.me.uk, 1 chefaa.com, 1 -chefcentral.co.uk, 1 chefcuisto.com, 1 -chefdeck.ai, 1 chefdehome.com, 1 chefforaday.it, 1 chefkentrathbun.com, 1 @@ -31044,7 +31155,7 @@ chehalemgroup.com, 1 cheholchik.tk, 1 cheibegaudi.ch, 1 cheiloplasty.tk, 1 -chekaonline.com, 1 +chekaonline.com, 0 chekhov.gq, 1 chel.ga, 1 chelabotanica.com, 1 @@ -31066,8 +31177,8 @@ chelyaba.tk, 1 chelyabinsk-news.net, 1 chema.ga, 1 chemapool.bg, 1 +chemaxon.com, 1 chemengzone.com, 1 -chemeroid.com, 1 chemgenes.com, 1 chemica-us.com, 1 chemical-shark.de, 1 @@ -31099,7 +31210,6 @@ chengmach.com, 1 chengren.cf, 1 chengren.ml, 1 chengta-money.com.tw, 1 -chengxin.com, 0 chengyutrading.com, 1 chenilles-processionnaires-idf.fr, 1 chenky.com, 1 @@ -31114,9 +31224,9 @@ chenx221.ml, 1 chenx221.xyz, 1 chenx2210.xyz, 1 chenyin.work, 1 +cheque-transitionactive.fr, 1 chequeado.com, 1 chequeo.de, 1 -chequer.software, 1 chequeraccounting.com.au, 1 cheratocono.tk, 1 cherbourg.website, 1 @@ -31142,6 +31252,7 @@ chernovcy-news.ru, 1 chernyak.id.au, 1 cherokeecountyga.gov, 1 cherrett.digital, 0 +cherry-green.ch, 1 cherry-handmade.ml, 1 cherryband.space, 1 cherrybread.net, 1 @@ -31151,11 +31262,12 @@ cherrycreeknorth.com, 1 cherryjimbo.sucks, 1 cherrynova.live, 0 cherryonit.com, 0 +cherrypink.no, 1 cherubicsoft.com, 1 -cheryboomcar.ro, 1 cheryls.com, 1 cheryltweedy.tk, 1 cherysunzhang.com, 1 +chesa.com, 1 chesapeakecluttercontrol.com, 1 chesapeakeopticallab.com, 1 chesapeakewv.gov, 1 @@ -31163,6 +31275,7 @@ cheshirex.com, 0 chesolar.cz, 1 chess.katowice.pl, 1 chesspoint.ch, 1 +chesstempo.com, 1 chessustron.pl, 1 chessveterinary.co.uk, 1 chesswiki.org, 1 @@ -31207,15 +31320,16 @@ chiarezza.it, 1 chiasang.tk, 1 chiaseek.com, 1 chiavistello.it, 1 +chiaylimon.com, 1 chiba-shika.jp, 1 chiba-tour.jp, 1 chiboard.co, 1 +chiboost.net, 1 chibr.eu, 1 chic-leather.com, 1 chic-weddings.com, 1 chicago-mold.com, 1 chicagobasementblog.com, 1 -chicagocitydeck.com, 0 chicagoconcretecleaning.com, 1 chicagoillinois.gq, 1 chicagomaroon.com, 1 @@ -31259,15 +31373,19 @@ chiesanuova.nl, 1 chietech.com.br, 1 chietitoday.it, 1 chifeng.com.tw, 1 +chiffer.nu, 1 +chiffrer.info, 1 chigwelltreeservices.co.uk, 1 chijb.cc, 1 chikahaku1001vr.jp, 1 chikan-beacon.net, 1 +chikarapro.com, 1 chikenweb.jp, 1 chiki.tk, 1 chikucab.com, 1 chikumablog.com, 1 chilapaweb.tk, 1 +chilbert.co, 1 child-theater-bs.co.il, 1 childbravery.com, 1 childcare.gov, 1 @@ -31328,10 +31446,10 @@ chimaira.tk, 1 chimcanhcut.tk, 1 chime.com, 1 chimebank.com, 1 +chimera.sh, 1 chimerity.com, 1 chimesmusic.com, 1 chimesnewspaper.com, 1 -chimichat.com, 1 chimm.cc, 1 chimpanzee.cf, 1 chimpanzee.net, 1 @@ -31348,7 +31466,6 @@ chinacolour.com, 1 chinadream404.com, 1 chinafree.online, 1 chinafree.site, 1 -chinagift.com, 0 chinaglobalsecurities.cn, 1 chinahealthcareblog.cf, 1 chinaicpower.org, 0 @@ -31358,6 +31475,7 @@ chinajingkun.com, 1 chinalosers.com, 1 chinamemo.com, 1 chinaoptionsfund.cn, 1 +chinaoptionsfund.com, 1 chinaql.com, 1 chinasearch.tk, 1 chinaseminar.com, 1 @@ -31371,6 +31489,7 @@ chinees.restaurant, 1 chinefrancophonie.fr, 1 chinen-hs41.com, 1 chinese-fuhui.com, 1 +chinese.sc, 1 chinesebrides.ml, 1 chinesedishes.tk, 1 chinesepen.org, 1 @@ -31407,6 +31526,7 @@ chiprender.com, 1 chips-scheduler.de, 1 chips.gov, 1 chipset.no, 1 +chipsfuck.fish, 1 chiquian.tk, 1 chirache.com, 1 chirache.fr, 1 @@ -31430,7 +31550,6 @@ chirotestelt.tk, 1 chirototem.tk, 1 chirowij.tk, 1 chirpset.com, 1 -chirpz.ai, 1 chiru.no, 1 chirurgoplastico.roma.it, 1 chisagocountymn.gov, 1 @@ -31446,6 +31565,7 @@ chitashop.ml, 1 chitinfo.tk, 1 chitlar.ml, 1 chitraltune.tk, 1 +chitrankan.art, 1 chittagongtextile.tk, 1 chiucainlaw.co.nz, 1 chiusa-klausen.com, 1 @@ -31497,7 +31617,6 @@ chocolatier-tristan.ch, 0 chocolatier.co.uk, 0 chocolatos.tk, 1 chocolay.gov, 1 -chocolocosupremacy.com, 1 chocolytech.info, 1 chocope-peru.tk, 1 chocudan.tk, 1 @@ -31517,6 +31636,7 @@ chokladfantasi.net, 1 chokoppang.com, 1 cholleria.es, 1 chollima.pro, 1 +chollitis.store, 1 chollospain.cf, 1 chollosrapidos.com, 1 choloforo.tk, 1 @@ -31526,7 +31646,6 @@ chongqing.design, 1 chongthamsika.tk, 1 chongwukong.com, 1 chongyou.com, 1 -chonker.gg, 1 choochooworld.com, 0 choootto.net, 1 choosealicense.com, 1 @@ -31544,6 +31663,7 @@ chopperforums.com, 1 chopradionet.tk, 1 choptheknife.com, 1 chordiant.com, 1 +chordify.net, 1 chordmag.com, 1 chordpage.com, 1 chordu.com, 1 @@ -31573,6 +31693,7 @@ choylifut.tk, 1 choyri.com, 1 chr0me.sh, 1 chrawrizard.org, 1 +chrestos.de, 1 chrg-server.de, 1 chrigi.ch, 1 chriholt.de, 1 @@ -31599,6 +31720,7 @@ chrisgieger.com, 1 chrisirwin.ca, 1 chrisjean.com, 1 chriskthomas.com, 1 +chrislane.com, 1 chrisliebaer.de, 1 chrisliebear.de, 1 chrisluen.com, 1 @@ -31609,11 +31731,11 @@ chrismiller.xyz, 1 chrismorgan.info, 1 chrismorgancreative.com, 1 chrismurray.co.uk, 1 +chrisnov.com, 1 chrispaul.ml, 1 chrispontius.tk, 1 chrisrude.com, 1 chrisshort.net, 1 -chrissimpsonseo.com, 1 chrisspencercreative.com, 1 chrisspencermusic.com, 1 chrissx.de, 1 @@ -31679,7 +31801,6 @@ christiansayswords.com, 1 christiansburgva.gov, 1 christiansciencevancouverwa.org, 1 christiansrit.tk, 1 -christianwebb.me, 1 christianwenz.de, 1 christianwitts.tech, 1 christiehawkes.com, 1 @@ -31799,6 +31920,7 @@ chronocolis.ml, 1 chronodelivery.com, 1 chronology.no, 1 chronometre-en-ligne.com, 1 +chronoox.com, 1 chronoshop.cz, 0 chronotech.fr, 1 chronus.com, 1 @@ -31819,7 +31941,6 @@ chrystajewelry.com, 1 chrystus.pl, 1 chsamuel.net, 1 chscourier.com, 1 -chsctaudiovisuel.org, 1 chsh.moe, 0 chsinc.com, 1 chsmedical.com, 1 @@ -31829,14 +31950,14 @@ chtj.uk, 1 chtodelat.ga, 1 chtyvo.tk, 1 chuan.top, 1 -chuanchih.com, 1 -chuanggu.com, 0 +chuanggu.com, 1 chubbygirlpics.com, 1 chubr.cf, 1 chubuhokenservice.com, 1 chuckame.fr, 1 chuckblier.com, 1 chucklesthebeard.website, 1 +chuckmckinnon.com, 1 chuckval.tk, 1 chudnov.tk, 1 chugoku-navi.jp, 1 @@ -31877,10 +31998,10 @@ churchforeveryone.info, 1 churchforum.tk, 1 churchfuel.com, 1 churchill.co.za, 1 -churchillam.com, 1 churchillcountynv.gov, 1 churchilldowns.com, 1 churchillhealthcentre.com, 1 +churchlinkpro.com, 1 churchlw.tk, 1 churchmetrics.com, 1 churchofchrist.tk, 1 @@ -31894,7 +32015,6 @@ churchsuite.com, 1 churchthemes.com, 1 churchwebcanada.ca, 1 churchwebsupport.com, 1 -churchwoodvalley.com, 1 churnfree.com, 1 churrascariacampogrande.com.br, 1 chuskocity.tk, 1 @@ -31908,6 +32028,7 @@ chuvashiya.tk, 1 chv.ro, 1 chvalov.com, 1 chwempower.com, 1 +chytraauta.cz, 1 chytris.cf, 1 chytris.cz, 1 chziq.com, 1 @@ -31925,12 +32046,14 @@ ciai.ml, 1 ciai.tk, 1 cialde.it, 1 cialis-trial.gq, 1 +cialisfiyatlisti.com, 1 cialisfreetrial.ga, 1 cialismarketim.net, 1 cialismarketing.net, 1 cialisonlinee.com, 0 cialisprice.net, 1 cialisshop.net, 1 +cialisvtr.com, 1 cialisworld.net, 1 cialisworld.org, 1 ciallo.de, 1 @@ -31980,7 +32103,6 @@ cidikit.tk, 1 cidones.tk, 1 cie-theatre-montfaucon.ch, 0 cie.nl, 1 -ciekawieoprawie.pl, 1 ciekwestronki.cf, 1 ciekwestronki.ga, 1 ciekwestronki.gq, 1 @@ -32004,7 +32126,6 @@ cign.nl, 1 cigniti.com, 1 cignium.com, 1 cigotracker.com, 1 -cihanbagdatli.com, 1 cihanmedya.ga, 1 cihar.com, 1 cihr-irsc.gc.ca, 1 @@ -32022,12 +32143,13 @@ cima-alfa.com, 1 cima-idf.fr, 1 cimbalino.org, 1 cimballa.com, 1 -cimerek.hu, 1 cimetierenotredamedesneiges.ca, 1 cimfax.com, 1 +cimice.it, 1 cimsp.com, 1 cimsp.net, 1 cimtools.net, 1 +cin-dere-lla.com, 1 cin.net.au, 1 cinafilm.com, 1 cinay.pw, 1 @@ -32046,12 +32168,12 @@ cine-passion16.fr, 1 cine.to, 1 cineassist.jp, 1 cinecat.de, 1 +cinecolombia.com, 1 cinedarkwolf.tk, 1 cinefilia.tk, 1 cineforge.com, 1 cinefun.net, 1 cinegore.tk, 1 -cinejour.com, 1 cinelandia.tk, 1 cinema-rulem.tk, 1 cinemaclub.co, 1 @@ -32060,7 +32182,6 @@ cinemafrix.cf, 1 cinemaperto.tk, 1 cinemaschool.by, 1 cinemasetfree.com, 1 -cinemaspaces.co.uk, 1 cinematherapy.org, 1 cinematic.asia, 1 cinematik.net, 1 @@ -32071,12 +32192,15 @@ cinemotion.by, 1 cinemysticism.com, 1 cinenote.link, 1 cineping.com, 1 +cineplanet.cl, 1 cineramen.gr, 1 cinerariosgruporosete.com, 1 cinet.jp, 1 cineterror.tk, 1 +cinevia.org, 1 cinexilio.tk, 1 cinicloud.com, 1 +cinicostudio.com, 1 cinicsystems.tk, 1 ciniticket.com, 1 cink.hu, 1 @@ -32112,8 +32236,9 @@ cipcda.org, 1 cipher.team, 1 cipherboy.com, 1 cipherfunk.com, 1 -cipherlist.eu, 0 +cipherlist.eu, 1 ciphermail.com, 1 +ciphermining.com, 1 ciphersuite.info, 1 ciphertech.com.tw, 1 cipherwizards.com, 1 @@ -32152,7 +32277,7 @@ circlewelife.com, 1 circoeia.com, 0 circu.ml, 0 circues.com, 1 -circuitcitydb.com, 1 +circuit.co.uk, 1 circuitcityelectricaladelaide.com.au, 1 circuitclerkmarioncountyms.gov, 1 circular-economy.earth, 1 @@ -32161,20 +32286,17 @@ circulardesignstandard.com, 1 circulardesignstandard.org, 1 circulosocial77.com, 1 circumcisionfaq.com, 1 -circumferencefs.com, 1 circumstances.ir, 1 circus-maximus.de, 1 circusdays.tk, 1 circuses.tk, 1 cirdcil.gov, 1 -ciren.cy, 1 cirfi.com, 1 cirocunato.tk, 1 cirquequirk.com, 1 cirriton.de, 1 cirro.io, 1 cirroenergy.com, 1 -cirrusrays.com, 1 cirugiaesteticalarrarte.es, 1 cirugiaplasticasanluis.com, 1 cirugiatotal.com, 1 @@ -32222,6 +32344,7 @@ ciszewskiciesielstwo.pl, 1 cita-sepe.es, 1 citace.com, 1 citacepro.com, 1 +citadelle.be, 1 citae.ga, 1 citafogasa.es, 1 citafun.tk, 1 @@ -32245,7 +32368,6 @@ cities.cl, 1 citiledger.ga, 1 citiswich.com.au, 1 citius.gal, 1 -citizen-shield.com, 1 citizen428.net, 1 citizenewatch.tk, 1 citizenkevin.com, 0 @@ -32263,8 +32385,8 @@ citromail.hu, 1 citroner.blog, 1 citrusamerica.com, 1 citrusbocc.gov, 1 +citrusbug.com, 1 citruscounty.gov, 1 -citruscs.com, 1 citruspi.com, 1 citruspi.io, 1 citsc.de, 1 @@ -32276,18 +32398,18 @@ city-adm.lviv.ua, 1 city-glas.com, 1 city-home.tk, 1 city-journal.org, 1 +city-nn.com, 1 city-online.tk, 1 city-walks.info, 1 city.kharkov.ua, 1 cityam.com, 1 -cityboost073.nl, 1 citycalculator.ml, 1 citycarremovals.com.au, 1 citycell.ml, 1 cityconsultants.tk, 1 citycreek.studio, 1 -citycreekdental.net, 1 citycricket.tk, 1 +cityfacialplastics.com, 1 cityfinances.lv, 1 cityhide.tk, 1 cityhotel.tk, 1 @@ -32418,7 +32540,7 @@ cityofroncevertewv.gov, 1 cityofroyaltonmn.gov, 1 cityofsacramento.gov, 1 cityofsalemky.gov, 1 -cityofsalemnj.gov, 1 +cityofsalemnj.gov, 0 cityofsanmateoca.gov, 1 cityofsantamariaca.gov, 1 cityofsavannail.gov, 1 @@ -32455,6 +32577,7 @@ citypress.ga, 1 citypress.gq, 1 citypro.tk, 1 cityscapeinsurance.com, 1 +cityseeker.com, 1 citysmartdmc.com, 1 citysmile.ro, 1 cityspin.org, 1 @@ -32467,7 +32590,6 @@ citytireservice.com, 1 citytoday.it, 1 citytourgirls.com, 1 citytower-kwt.com, 1 -citytrainerdenbosch.nl, 1 cityuproject.com, 1 cityutilities.com, 1 cityvets.co.uk, 1 @@ -32488,9 +32610,9 @@ ciucobirbone.it, 1 ciudadanosbo.com, 1 ciudadrealtrabaja.com, 1 ciulea.ro, 1 +civ.social, 1 civey.com, 1 civia.com, 1 -civicaelectionservices.com, 1 civicconnectiongroup.com, 1 civicdigest.com.au, 1 civicforum.pl, 1 @@ -32503,17 +32625,19 @@ civictech.ngo, 1 civictheatrenewcastle.com.au, 1 civicunicorn.com, 1 civicunicorn.us, 1 +civil-works-sri.com, 1 civilbikes.com, 1 civilconcretellc.com, 1 civilengineeringhandbook.tk, 1 civilhost.tk, 1 civiliansnews.com, 1 civillines.nl, 1 -civilsimple.com, 1 civiltoday.com, 1 civilvirus.tk, 1 civmob.com, 1 cixbrasil.com, 1 +cixon.com.br, 1 +cixon.us, 1 cizgikod.ga, 1 cizz.uk, 1 cizzuk.net, 1 @@ -32558,7 +32682,7 @@ ck.cx, 1 ck0.eu, 1 ck1020.cc, 1 ckcg.tk, 1 -ckeke.com, 0 +ckeke.com, 1 ckenel.com, 1 ckenell.com, 1 ckenelley.com, 1 @@ -32577,11 +32701,10 @@ ckliemann.net, 1 ckostecki.de, 1 ckp.eg, 1 ckp.ie, 1 +ckprofessionalbookkeeping.ca, 1 ckrobotics.tk, 1 cktennis.com, 1 -ckwebsitedesign.ie, 1 ckyalliancefinland.tk, 1 -ckycindia.in, 1 cl-1xbet.com, 1 cl-cloud.spdns.org, 1 cl.search.yahoo.com, 0 @@ -32603,13 +32726,15 @@ claimitar.gov, 1 claimittexas.gov, 1 claimmosaic.com, 1 claimnote.com, 1 -claimpilot.com, 0 +claimpilot.com, 1 claimsadj.com, 1 claimspharmacy.services, 1 +claimyourvoicenow.com, 1 clairebabai.nl, 1 clairegold.com, 1 clairelefort-architectes.com, 1 clairescastles.co.uk, 1 +clairesvall.com, 1 clairette-de-die-lantheaume.fr, 1 clairevoyance.tk, 1 claitec.com, 1 @@ -32617,7 +32742,6 @@ clak.io, 1 clalbit-checknet.co.il, 1 clallamcountywa.gov, 1 clamatohalloffame.com, 1 -clammert.net, 1 clampgenerator.com, 1 clan-afa.tk, 1 clan-behh.tk, 1 @@ -32654,6 +32778,7 @@ clara.de, 1 claraanalytics.com, 1 clarabot.com, 1 clarachampbell.com, 1 +claralabs.com, 1 clarasegura.tk, 1 clare3dx.com, 1 claremontca.gov, 1 @@ -32663,6 +32788,7 @@ clarerose.com, 1 claresderibota.tk, 1 claretandbluearmy.tk, 1 claricelin.com, 1 +clarilog.com, 1 clarinet.ga, 1 clarinexonline.gq, 1 clario.co, 1 @@ -32693,6 +32819,7 @@ clarkmanagementconsulting.com, 1 clarkmerrick.com, 1 clarknationalaccounts.com, 1 clarkpacific.com.au, 1 +clarkpro.biz, 1 clarksburgma.gov, 1 clarksmeathouse.com, 0 clarkstatecontract.com, 1 @@ -32701,7 +32828,7 @@ clarksvilletn.gov, 1 clarkturnkey.com, 1 clarktwpmi.gov, 1 clarkwinkelmann.com, 1 -clarosports.com, 0 +clarosports.com, 1 clarotvpromocao.com.br, 1 clarr.tk, 1 claryssabarbosa.com.br, 1 @@ -32717,7 +32844,7 @@ clashpost.com, 1 class-zone.tk, 1 class.com.au, 1 class66.tk, 1 -classbasic.com, 0 +classbasic.com, 1 classbasics.com, 0 classdesignhome.com, 1 classdojo.com, 1 @@ -32775,11 +32902,11 @@ classx.tk, 1 classy-websites.de, 1 classyng.com, 1 clatsopcounty.gov, 1 +claude.ai, 1 claude.com, 1 claude.me, 1 claude.photo, 1 claude.site, 1 -claudeapi.com, 0 claudearpi.in, 1 claudearpi.net, 1 claudeleveille.com, 0 @@ -32797,10 +32924,10 @@ claus-bahr.de, 1 claus-cremer.tk, 1 clauseriksen.net, 0 clausewitz-gesellschaft.de, 1 +clausion.net, 1 claustrofobia.tk, 1 clautopieces.fr, 1 clave2000.com.co, 1 -claveframework.org, 1 clavit4.zone, 1 clawedfrogs.tk, 1 clawington.com, 0 @@ -32819,6 +32946,7 @@ claytwpmi.gov, 1 clazzor.eu, 1 clcakes.au, 1 clcakes.com.au, 1 +clclawncare.com, 1 clco.fr, 1 clcv-brest.fr, 1 cldejessey.com, 1 @@ -32829,6 +32957,7 @@ clean-cubes.com, 1 clean-mailbox.com, 1 clean-water-and-sanitation.tk, 1 cleanairdallaspro.com, 1 +cleanandcleaner.net, 1 cleanclearwater.co.uk, 1 cleandetroit.org, 1 cleandrains.com.au, 1 @@ -32849,6 +32978,7 @@ cleanmatik.com, 1 cleanmycurtains.ie, 1 cleanmyfloor.ie, 1 cleanmymattress.ie, 1 +cleanmyupholstery.ie, 1 cleanpeakmascot.com.au, 1 cleanpouches.com, 1 cleanpowerbg.com, 1 @@ -32861,6 +32991,7 @@ cleanshot.com, 1 cleanslate.sh, 1 cleanspeak.com, 1 cleansquad.in, 1 +cleansweepaa.com, 1 cleantec.show, 1 cleanuri.com, 1 cleanway.dk, 1 @@ -32870,6 +33001,7 @@ clearbit.com, 1 clearbodyclearmind.com, 1 clearbooks.co.uk, 1 clearbookscdn.uk, 1 +clearbridgebranding.com, 1 clearchatsandbox.com, 1 clearcreekcountyco.gov, 1 clearcreekcountydronepilot.com, 1 @@ -32881,7 +33013,6 @@ clearfieldpa.gov, 1 clearflowpos.com, 1 cleargoals.com, 1 cleargrain.com.au, 1 -clearholidays.com, 1 clearhumor.tk, 1 clearid.io, 1 clearinghouseacademy.com, 1 @@ -32891,17 +33022,20 @@ clearip.com, 1 clearklima.hu, 1 clearlake.com, 1 clearlinux.org, 1 +clearmatics.com, 1 clearpathtechnology.co.uk, 1 clearpay.co.uk, 1 clearpicturelegalvideo.com, 1 clearpoint.org, 1 clearpointcreditcounselingsolutions.org, 1 +clearsafetalk.com, 1 clearsailingproperties.com, 1 clearsoftcomputacion.com, 1 +clearstep.health, 1 clearstone.au, 1 clearstoneip.com, 0 clearstreamcapital.com, 1 -cleartest.co.uk, 1 +clearsys.ee, 1 cleartheear.co.uk, 1 clearview-creative.com, 1 clearview-psychiatry.com, 1 @@ -32909,6 +33043,7 @@ clearviewinstitute.com, 1 clearviewok.gov, 1 clearviewwealthprojector.com.au, 1 clearvoice.com, 1 +clearvoice.org, 0 clearvoice1.com, 1 clearvoiceu.com, 0 clearwateragency.com.au, 0 @@ -32936,7 +33071,6 @@ clementluck.com, 1 clementsfamily.co, 1 clemta.com, 1 clendeninwv.gov, 1 -cleo-energy.com, 1 cleo.com, 1 cleocinonline.gq, 1 cleopatraescorts.co.uk, 1 @@ -32957,6 +33091,8 @@ clever-invest.ga, 1 clever-invest.gq, 1 clever-reisen.tk, 1 cleverbots.ru, 1 +cleverbowling.com, 1 +clevercoaching.nl, 1 cleverdarts.com, 1 cleverdeal.tk, 1 cleverdialer.de, 1 @@ -32964,7 +33100,6 @@ clevermemo.com, 1 clevermo.gov, 1 cleveroad.com, 1 cleveronmobility.com, 1 -clevertp.com, 1 cleververmarkten.com, 1 cleververmarkten.de, 1 clevisto.com, 1 @@ -33000,7 +33135,7 @@ clevyrstream.com, 1 clevyrstreamjs.com, 1 clevyrstudios.com, 1 clevyrvr.com, 1 -clflife.com, 1 +cleysense.com, 0 clgp.jp, 1 clgraphix.com, 1 clial.com, 1 @@ -33008,6 +33143,7 @@ clic-music.com, 1 clica.net, 1 click-7979.com, 1 click-cat.tk, 1 +click-generator.com, 1 click2affiliate.xyz, 1 click4click.ga, 1 clickandclaim.me, 1 @@ -33015,8 +33151,6 @@ clickapro.com, 1 clickarmy.com, 1 clickatell.com, 1 clickbizhub.com, 1 -clickbyte.eu, 1 -clickbyte.us, 1 clickcell.tk, 1 clickclinicals.com, 1 clickcollect.boutique, 1 @@ -33030,11 +33164,13 @@ clickfreescore.com, 1 clickheretobegin.tk, 1 clickhost.com.au, 1 clickhouse.tech, 1 +clickhyundai.com, 0 clickinfo.tk, 1 clickingmad.com, 1 clickipo.com, 1 clickkon.ml, 1 clicknbook.de, 1 +clickotine.com, 1 clickpeak.digital, 1 clickpharmacy.co.uk, 1 clickphobia.ga, 1 @@ -33075,11 +33211,11 @@ cliffsidesecurity.com.au, 1 cliffsnotes.com, 1 clifresearch.com, 1 cliftonaz.gov, 1 -cliftonpark.co.uk, 1 clik.ga, 1 clim-past-discuss.net, 1 clim-past.net, 1 climaencusco.com, 1 +climaffaires.com, 1 climall.com, 1 climarte.org, 1 climate-film.com, 1 @@ -33119,7 +33255,9 @@ clindamycinantibiotic.tk, 1 clindamycinprice.tk, 1 clindoeilmontagne.com, 0 clingout.com, 1 +clinic-manager.academy, 1 clinica.zapto.org, 1 +clinicaacurar.com.br, 1 clinicaarques.es, 1 clinicadeesteticaembh.com, 1 clinicadentalados.com, 1 @@ -33136,6 +33274,7 @@ clinicalrehabilitation.info, 1 clinicalresearch.my, 1 clinicalsolutions.se, 1 clinicalstats.ga, 1 +clinicaltrialpodcast.com, 1 clinicaltrials.gov, 1 clinicaltrialsarena.com, 1 clinicamagdalena.com.co, 1 @@ -33147,6 +33286,7 @@ clinicasesteticas.com.br, 1 clinicasmedicas.com.br, 1 clinicasoma.pt, 1 clinicastoma.com, 1 +clinicatorino.com.br, 1 clinicelham.com, 1 clinichq.com, 1 clinicortinascali.com, 1 @@ -33185,7 +33325,6 @@ clipertrucado.com, 1 clipfor.ge, 1 clipperai.com, 1 clips.ga, 1 -clipverse.studio, 1 cliqit.com.au, 1 cliquetis.ddns.net, 1 clirnet.com, 1 @@ -33200,7 +33339,7 @@ clna.ca, 1 clnlboard.co.uk, 1 clnnet.ch, 1 clnshrk.club, 0 -cloaker.ru, 1 +cloaker.ru, 0 clochix.net, 1 clock3.com, 1 clockcaster.com, 1 @@ -33209,10 +33348,10 @@ clockify.me, 1 clockka.it, 1 clocklab.design, 1 clocklink.com, 1 -clockworkcrm.com, 1 clodo.it, 1 clodoteam.ga, 1 clog.rocks, 1 +clojurefactory.io, 1 clokdways.com, 1 clomid100mg.ga, 1 clomid50mg.cf, 1 @@ -33225,6 +33364,7 @@ cloneprint.com, 1 clonestack.com, 1 cloneuniverse.com, 1 cloneuniverse.de, 1 +clonex.wtf, 1 clonidine-hydrochloride.ga, 1 clonix.tk, 1 clonoe.tk, 1 @@ -33291,10 +33431,10 @@ cloudberrylab.com, 1 cloudbleed.info, 1 cloudboard.fr, 1 cloudbook.wiki, 1 +cloudbool.com, 1 cloudbreaker.net, 1 cloudbrothers.info, 0 cloudbytesconnect.com, 1 -cloudcampuspro.com, 1 cloudcaprice.net, 1 cloudcastles.xyz, 1 cloudcert.org, 1 @@ -33322,7 +33462,6 @@ cloudflare.irish, 1 cloudflareonazure.com, 1 cloudfleet.ai, 1 cloudforce.com, 1 -cloudforge.cz, 1 cloudfree.shop, 1 cloudfronts.com, 1 cloudfudge.com, 1 @@ -33332,12 +33471,12 @@ cloudia.org, 1 cloudigy.es, 1 cloudily.com, 1 cloudimprovedtest.com, 1 +cloudindex.io, 1 cloudinfinit.com, 1 cloudix.cf, 1 cloudlandmark.com, 1 cloudlessdreams.com, 0 cloudlight.biz, 1 -cloudlucida.com, 1 cloudmachine.fr, 1 cloudmanagedbuilding.com, 1 cloudmanagedbuildings.com, 1 @@ -33348,6 +33487,7 @@ cloudmoney.tk, 1 cloudmyhome.site, 1 cloudmyhome.top, 1 cloudnas.ru, 1 +cloudnetuy.com, 1 cloudnexusit.com, 1 cloudnote.cc, 1 cloudnovi.com, 1 @@ -33358,6 +33498,7 @@ cloudoptimizedsmb.com, 1 cloudpagesforwork.com, 1 cloudparts.com.tr, 1 cloudpengu.in, 1 +cloudpingtest.com, 1 cloudplan.nl, 1 cloudplayy.com, 1 cloudpole.de, 1 @@ -33401,10 +33542,10 @@ cloudtocloud.ddns.net, 0 cloudtocloud.tk, 1 cloudtropia.de, 1 cloudtskr.com, 1 +cloudturing.chat, 1 cloudturing.com, 1 cloudu.de, 1 cloudup.com, 1 -cloudvante.com, 1 cloudvante.com.au, 1 cloudvoor.eu, 1 cloudvoor.net, 1 @@ -33413,7 +33554,6 @@ cloudwajs.com, 1 cloudwave.fr, 1 cloudwayc.com, 1 cloudwayq.com, 1 -cloudwebschool.com, 1 cloudwellmarketing.com, 1 cloudwithlightning.net, 1 cloudykingdom.com, 1 @@ -33448,6 +33588,7 @@ clsmalta.eu, 0 clsoft.ch, 1 clspd.top, 1 clu-in.org, 1 +clu.com.ua, 1 cluadmin.de, 1 club-adulti.ro, 1 club-creole.com, 1 @@ -33467,6 +33608,7 @@ club-slow.jp, 1 club-soul.tk, 1 club.zj.cn, 1 club1.fr, 1 +club10x.com, 1 clubanimal.cl, 1 clubapk.com, 0 clubatleticonacionalpotosi.tk, 1 @@ -33484,11 +33626,13 @@ clubduvieuxmanoir.fr, 1 clubeamizade.com, 1 clubeamizade.com.pt, 1 clubeamizade.pt, 1 +clubeangelus.com.br, 1 clubedalutashop.com, 1 clubedaquimica.tk, 1 clubedegeografia.tk, 1 clubedoberloque.com.br, 1 clubedogis.com.br, 1 +clubedohardware.com.br, 1 clubedojornalismo.com.br, 1 clubedores.com.br, 1 clubeflor.com.br, 1 @@ -33510,6 +33654,7 @@ clubetravel.org, 1 clubexpress.com, 1 clubfactory.ml, 1 clubfailed.tk, 1 +clubfamily.de, 1 clubfatass.com, 1 clubforce.com, 1 clubfunday.ga, 1 @@ -33552,7 +33697,7 @@ clubvttlesloupsdemaixe.tk, 1 clubvwgolf.com, 1 clubyachats.com, 1 clubzap.org, 1 -clubzero.co, 0 +clubzero.co, 1 clubzul.com, 1 cluecho.com, 1 cluedosenvivo.com, 1 @@ -33563,7 +33708,7 @@ clueless.tk, 1 cluelesscraft.com, 1 cluin.org, 1 cluj.help, 1 -cluj24.ro, 1 +clun.top, 0 clurinternational.com, 1 clush.pw, 1 cluster.biz.tr, 1 @@ -33577,6 +33722,7 @@ clwrota.com, 1 clycat.ru, 1 clyde-tx.gov, 1 clydewi.gov, 1 +cm-agueda.pt, 1 cm-funchal.pt, 1 cm-lagos.pt, 1 cm-law.eu, 1 @@ -33595,6 +33741,7 @@ cmagazine.org, 1 cmalet-avocat.fr, 1 cmbs.loans, 1 cmc.pt, 0 +cmcbank.co.in, 1 cmcjanuary.in, 1 cmcm.lu, 1 cmcp.org, 1 @@ -33624,7 +33771,6 @@ cmogus.com, 1 cmonlien.fr, 1 cmotech.asia, 1 cmotech.ca, 1 -cmotech.ie, 1 cmotech.in, 1 cmotech.news, 1 cmotech.uk, 1 @@ -33652,7 +33798,7 @@ cmsprofessional.com.au, 1 cmsprofessionals.com.au, 1 cmsua.ca, 1 cmt-france.org, 1 -cmtedu.com, 1 +cmt35.ru, 1 cmtindia.com, 1 cmtk.cloud, 1 cmtportal.co.uk, 1 @@ -33663,39 +33809,40 @@ cn.fo, 1 cn.search.yahoo.com, 0 cn2euportugal.com, 1 cn8522.com, 1 +cna-ecuador.com, 1 cnabogota.tk, 1 cnais.com, 1 cnam-idf.fr, 1 -cnat.mx, 1 cnatraining.network, 1 cnb.ie, 1 cnb1901.com, 1 -cnbcollege.edu.in, 1 cnbs.ch, 1 cnc-lehrgang.de, 1 cncexplorer.com, 1 cncfraises.fr, 1 +cnciexam.com, 1 cncn3.cn, 1 cncollege.tk, 1 cncr.ga, 1 +cncs.gov.pt, 1 +cnctop.tw, 1 cnet.com, 1 cnetion.com, 1 cnetw.xyz, 1 cnews.ru, 1 -cng.com.au, 1 +cnfree.xyz, 0 cngf.com, 1 +cngvp.org, 1 cni-certing.it, 1 cni.net.id, 1 cnil.fr, 1 cnitdog.com, 1 -cnj.edu.ar, 1 cnlongtex.com, 1 cnmi.gov, 1 cnmilaw.gov, 1 cnnet.in, 1 cnnumerique.fr, 1 cnocsp.com, 1 -cnom.fr, 1 cnopera.com, 1 cnp.ovh, 1 cnpkg.org, 1 @@ -33703,11 +33850,9 @@ cnpy.gdn, 1 cnsbordercellatlas.org, 1 cnslub.ru, 1 cnss.gob.do, 1 -cntl.kz, 1 cntr.fr, 1 cntras.com, 1 cntraveller.com, 1 -cnv-academy.com, 0 cnvt.fr, 1 cnxiangxian.com, 1 cnzhengmai.com, 1 @@ -33726,10 +33871,12 @@ co3app.com, 1 coa.gov.ph, 1 coach-dortef.dk, 1 coach-enligne.fr, 1 +coach.org.uk, 1 coachablebyabel.nl, 1 coachbakery.com, 1 coachcommunio.com, 1 coaches-website.de, 1 +coachfoundation.com, 1 coachinfopreneur.com, 1 coaching-aus-leidenschaft.com, 1 coaching-impulse.ch, 0 @@ -33738,7 +33885,7 @@ coaching-oberhavel.de, 1 coachingforleaders.com, 1 coachment.dk, 1 coachnow.io, 1 -coachparts.com, 1 +coachspiritual.ro, 1 coactive.ai, 0 coag.gov.au, 1 coalcountyok.gov, 1 @@ -33775,7 +33922,6 @@ coatsandcocktails.org, 1 cobaka.tk, 1 cobalt.tools, 1 cobaltia.org, 1 -cobatab.edu.mx, 1 cobb-ranch.com, 0 cobbcountygeorgia.ml, 1 coberturaplus.com, 1 @@ -33821,6 +33967,7 @@ cockmonkey.tk, 1 cockpitdekor.at, 1 cockpitdekor.com, 1 cocktail-express.com, 1 +cocktailwebbook.com, 1 cockybot.com, 1 coco-01.gq, 1 coco-apo.de, 1 @@ -33828,12 +33975,14 @@ coco-cool.fr, 1 coco-line.ch, 1 cocoa-job.jp, 1 cocoafl.gov, 1 +cocoalife.org, 1 cocoanka.ir, 1 cocobollo-sallanches.com, 1 cocobrother.ddnss.de, 1 cocodroid.com, 1 cocogoat.work, 1 cocokmobi.ga, 1 +cocolink.jp, 1 cocomore.com, 1 coconutguy.gq, 1 coconutoil.ml, 1 @@ -33857,10 +34006,10 @@ codabix.com, 1 codabix.de, 1 codandn.com, 1 codastory.com, 1 -codatey.top, 1 codcourier.org, 1 code-35.com, 0 code-ch.com, 1 +code-de-la-route-gratuit.net, 1 code-gen.ca, 1 code-in-plate.tk, 1 code-judge.tk, 1 @@ -33875,14 +34024,12 @@ code.fm, 1 code.golf, 1 code.google.com, 1 code.gov, 1 -code0.ai, 1 code4rena.com, 1 code972.com, 1 codeable.dk, 1 codeactive.fr, 1 codeactive.net, 1 codeaegis.com, 1 -codeally.dk, 1 codeandpeace.com, 1 codeandsupply.co, 1 codeberg.org, 1 @@ -33898,6 +34045,7 @@ codeclub.gq, 1 codecnetworks.com, 1 codecolliders.com, 1 codecommunity.io, 1 +codeconnect.ir, 1 codecool.com, 0 codecreate.co.uk, 1 codecrew.us, 1 @@ -33910,7 +34058,6 @@ codeeclipse.com, 1 codefaq.org, 1 codefather.ml, 1 codefive.co.uk, 1 -codefor.food, 1 codefordus.de, 1 codefordus.nrw, 1 codegen.ca, 1 @@ -33919,6 +34066,7 @@ codeguide.ru, 1 codehangar.io, 1 codehelper.ml, 1 codeheroes.be, 1 +codeheroes.fr, 1 codehupy.org.py, 1 codehz.one, 1 codeidea.ga, 1 @@ -33942,9 +34090,9 @@ codeninja.me, 1 codenlife.kr, 1 codenlife.xyz, 1 codenode.io, 1 -codeon.ch, 1 codeops.com.tr, 1 codeparva.com, 1 +codepathstudio.com, 1 codepen.com, 1 codepen.io, 1 codephusion.com, 1 @@ -33953,7 +34101,6 @@ codepref.com, 1 codeprotocols.com, 1 codeproxy.net, 1 codepwn.win, 1 -codequalitycheck.com, 1 codercross.com, 1 codereduction.promo, 1 coderema.de, 1 @@ -33971,7 +34118,6 @@ coderpad.io, 1 codersatlas.co, 1 codersatlas.xyz, 1 coderus.com, 1 -codes-team.com, 1 codes.pk, 1 codesal.solutions, 1 codesandbolts.com, 1 @@ -33987,7 +34133,6 @@ codetheweb.blog, 1 codetheworld.com, 1 codetrack.se, 1 codetripping.net, 1 -codetrustrategy.com, 1 codeunderground.nl, 1 codeupstudios.com, 1 codeux.com, 1 @@ -34003,7 +34148,9 @@ codevo.mobi, 1 codevo.org, 1 codevo.ws, 1 codewaifu.com, 1 +codeward.io, 1 codewild.de, 1 +codewills.com, 1 codewing.de, 1 codewitchbella.com, 0 codewithalisha.ga, 1 @@ -34015,8 +34162,10 @@ codex.online, 1 codex.rocks, 1 codexdigital.com, 1 codexio.in, 1 +codexlog.com, 1 codezenith.com, 1 codezeno.com.au, 1 +codialog.org, 1 codice-rosso.net, 1 codicecer.it, 1 codicicer.it, 1 @@ -34041,7 +34190,7 @@ codingfromhell.net, 1 codinghomeworkhelp.net, 1 codinginfinity.me, 1 codingnbb.com, 1 -codingpark.io, 0 +codingpark.io, 1 codingpedia.org, 1 codingrobots.com, 1 codingwithvera.com, 1 @@ -34057,6 +34206,7 @@ codulrutier.tk, 1 coduzion.com, 1 cody.sh, 1 codybrunner.com, 1 +codydostal.com, 1 codyv.me, 1 codywy.gov, 1 coeburnva.gov, 1 @@ -34070,13 +34220,13 @@ coentropic.com, 1 coequals.tk, 1 cofense.at, 1 cofetaria-narcisa.ro, 1 -coffa.gov, 1 coffee-break.cc, 1 coffee-like.com, 1 coffee-webstore.com, 1 coffee.co.uk, 1 coffee3d.com, 0 coffeeandjunk.com, 1 +coffeeandteatogogo.com, 1 coffeebarometer.org, 1 coffeebean.cf, 1 coffeebeanstudios.tk, 1 @@ -34084,6 +34234,8 @@ coffeebreak.bg, 1 coffeechi.ir, 1 coffeeholic.tk, 1 coffeehousewriters.com, 1 +coffeemoment.nl, 1 +coffeeplazahamburg.com, 1 coffeesense.coffee, 1 coffeestain.ltd, 1 coffeestory.in.ua, 1 @@ -34092,9 +34244,7 @@ coffeetori.com, 1 coffeewithsvein.com, 1 coffeist.com, 1 coffer.fi, 1 -coffeyagencies.com, 1 coffstotalroofing.com.au, 1 -cofidis-business.it, 1 cofidisperte.it, 1 cofinco.nl, 1 coforge.com, 1 @@ -34149,6 +34299,7 @@ coinamount.com, 0 coinbase.com, 1 coinbit.trade, 0 coincalc.tk, 1 +coinchapter.com, 1 coincircle.com, 1 coincity.ga, 1 coinclickz.fun, 1 @@ -34159,43 +34310,41 @@ coingate.com, 1 coinhako.com, 1 coinjar-sandbox.com, 1 coinjar.com, 1 -coinjp.io, 1 coinlend.org, 1 coinliq.com, 1 coinloan.io, 1 coinmama.com, 1 -coinmedium.com, 1 coinmotion.com, 1 coinnector.com, 1 coinnewspulse.com, 1 coinpaprika.com, 1 coinpedia.org, 1 coinplay.com, 1 -coinport.com.au, 1 coinrule.com, 1 coins2001.ru, 1 coinscatalog.net, 1 coinsconnect.co.uk, 1 +coinsmat.com, 1 coinsuggest.com, 1 cointosh.jp, 1 cointotaal.com, 1 coinwind.vip, 1 coinx.pro, 1 coiracom.net, 1 +coisapet.com.br, 1 cojam.ru, 1 cojo.eu, 1 cokebar.info, 0 coker.com.au, 1 cokestudiosongs.tk, 1 cokoli.cz, 1 -col-reg.online, 1 col.la, 0 cola-host.tk, 1 colaba.online, 1 colaborame.tk, 1 +colaborativa.tv, 1 colaboratorija.lt, 1 colabug.com, 1 -colace.me, 1 colafoodcritic.com, 1 colah.com.au, 1 colapsys.net, 1 @@ -34208,6 +34357,9 @@ colatyso3.com, 1 colazxk.xyz, 1 colbert.ml, 1 colburnadamswi.gov, 1 +colchesterglobal.co.nz, 1 +colchesterglobal.com, 1 +colchesterglobal.com.au, 1 colcomm.com, 1 cold.world, 1 coldcard.com, 1 @@ -34220,6 +34372,7 @@ coldfusion.co.jp, 1 coldhak.ca, 0 coldice.tk, 1 coldjetconnect.com, 1 +coldlasers.org, 1 coldmeat.se, 1 coldpaste.com, 1 coldraven.com, 1 @@ -34241,6 +34394,7 @@ colectivovictorjara.tk, 1 coleg.gov, 1 colegiocuauhtzin.com.mx, 1 colegiojaimebalmes.es, 1 +colegios.net, 1 colegiotalenti.com, 1 colegiotavera.tk, 1 colemak.com, 1 @@ -34248,15 +34402,12 @@ colengo.com, 1 colerainemn.gov, 1 coleta.digital, 1 coletteclubs.com, 1 -coletteschley.de, 1 colfaxcountyne.gov, 1 colfaxia.gov, 1 -colframe.com.co, 1 colibri.jp, 1 colibriexpress.tk, 1 colibrigroup.com, 1 colibrirealestate.com, 1 -colicor.de, 1 coliffe.it, 1 coligo.fr, 1 colinasdog.com.br, 1 @@ -34312,7 +34463,6 @@ collectif-laicite-yallah.be, 1 collectif85.com, 1 collectifpinceoreilles.com, 1 collectiontardivel.com, 1 -collectionvillasstmartin.com, 1 collective-conciousness.monster, 1 collective-incubator.de, 1 collectivecorruption.com, 1 @@ -34321,6 +34471,7 @@ collectivite365.fr, 1 collector.cf, 1 collectorknives.net, 1 collectorscorner.com, 1 +collectorsystems.com, 1 college-chagall.tk, 1 college-ic.ca, 1 college-sewing.co.uk, 1 @@ -34374,6 +34525,7 @@ collinlove.se, 1 collinlove.uk, 1 collinlove.us, 1 collinlove.xyz, 1 +collinmbarrett.com, 1 collins.kg, 1 collins4mayor.co.nz, 1 collins4mayor.nz, 1 @@ -34386,7 +34538,6 @@ collinswyatt.com, 1 collioure.com, 1 colloque-tv.com, 1 colloquio.tk, 1 -collorossodermatology.com, 1 colmcille.org, 1 colnevalleyvets.co.uk, 1 colo-tech.com, 1 @@ -34417,6 +34568,7 @@ coloradocollegiate.com, 1 coloradocountrylife.coop, 1 coloradoer.tk, 1 coloradofamli.gov, 1 +coloradogenerac.com, 1 coloradolottery.com, 1 coloradorangers.gov, 1 coloradoseodesign.com, 1 @@ -34428,8 +34580,10 @@ colorblindfilms.com, 1 colorblindprogramming.com, 1 colorbond.vn, 1 colorbrightongreen.org, 1 -colordetector.click, 1 +colorcodedlyrics.com, 1 +colorcomm.com, 1 colorectalpractice.com, 1 +colorfittings.com, 1 colorfularchive.eu.org, 1 colorfulcloud.eu.org, 1 colorfuldots.com, 1 @@ -34447,7 +34601,6 @@ colorlib.com, 0 colorline.com.br, 1 colorpalette.org, 1 colorpicker.fr, 1 -colorpop.ai, 1 colors.top, 1 colorsbycarin.com, 1 colortronic.tk, 1 @@ -34474,7 +34627,7 @@ colquittga.gov, 1 colson-occasions.be, 0 coltellisurvival.com, 1 colterris.com, 1 -coltography.ca, 1 +colthesweep.co.uk, 0 coltonrb.com, 1 coluit.nl, 1 columbiachronicle.com, 1 @@ -34516,11 +34669,11 @@ com.fo, 1 com4.no, 0 comactor.com, 1 comactor.fr, 1 +comagexinvoice.com, 1 comalia.com, 1 comanchecountyks.gov, 1 comanchenationpolice.gov, 1 comanchetexas.gov, 1 -comanda.plus, 1 comanis.fr, 1 comaporter.com, 1 comarcadelaranda.tk, 1 @@ -34530,11 +34683,12 @@ comarch.pl, 1 comarch.ru, 1 comarkinstruments.cloud, 1 comarkinstruments.net, 1 -comasystem.dk, 0 +comasystem.dk, 1 comaypa.es, 1 combatix.io, 1 combattrecellulite.com, 1 combidarlehen.de, 1 +combineconquer.com, 1 combineid.com, 1 combloux.com, 1 combos-2020.tk, 1 @@ -34550,6 +34704,7 @@ comdurav.com, 1 come.ga, 1 come2cook.com, 1 comealong.org, 1 +comeals.com, 1 comeback.no, 1 comebookmark.cf, 1 comebookmark.ga, 1 @@ -34564,6 +34719,7 @@ comelibro.org, 1 comemigliorare.com, 1 comengpt.com, 1 comeo.com, 1 +comeoishii.com, 1 comeoneileen.tk, 1 comeratope.com, 1 comercialcolombia.tk, 1 @@ -34576,8 +34732,8 @@ comet-pct.com, 1 comet-xray.com, 1 comet.eu.org, 1 comet.tech, 1 -cometa.ro, 1 cometbot.cf, 1 +cometcache.com, 1 comete-electricite.fr, 1 cometer.co, 1 cometer.io, 1 @@ -34585,10 +34741,13 @@ cometonovascotia.ca, 1 comevius.com, 1 comevius.org, 1 comevius.xyz, 1 +comewith.online, 1 comex.biz, 1 comfandivirtual.com.co, 1 comff.net, 1 +comfinagro.com.co, 1 comfintouch.com, 0 +comfipark.com, 1 comfis.nl, 1 comfitsweets.co.uk, 1 comfort-place.com.ua, 1 @@ -34619,6 +34778,7 @@ comidasaludablehoy.com, 1 comidasperuanas.net, 0 comidina.com, 1 comingto.icu, 1 +comiq.io, 1 comistar.ee, 1 comita.ru, 1 comita.su, 1 @@ -34657,6 +34817,7 @@ commercetwpmi.gov, 1 commercia.srl, 1 commercial.lviv.ua, 1 commercialbankms.com, 1 +commercialbtp.com, 1 commercialfundinggroupllc.us, 1 commercialkitchensusa.com, 1 commerciallendingusa.com, 1 @@ -34669,7 +34830,6 @@ commeunprintemps.com, 1 commfortchat.tk, 1 commissaris-vraagbaak.nl, 1 commissionagenda.com, 1 -commissionaires.ca, 1 commissioner.tk, 1 commitsandrebases.com, 1 commloan.com, 1 @@ -34705,6 +34865,7 @@ community-forward.org, 1 community-pro.de, 1 community-pro.net, 1 community-services.cz, 0 +community42.com, 1 communityaligned.com, 1 communityautowash.net, 1 communitybandofbrevard.com, 1 @@ -34754,35 +34915,37 @@ comosehace.online, 1 comovenderpelowhatsapp.com.br, 1 comoviajarcontumascota.com, 1 comp-consultants.com, 1 -comp-tec.mail.pl, 1 comp4u.de, 1 compab.it, 1 compactador-vendetta.tk, 1 +compactloan.com, 1 compagnidimerenda.tk, 1 compagniecoupable.fr, 1 compagniedesateliers.com, 0 compagniedesvoyageurs.com, 1 compagniemartin.com, 0 +compagnonsbtp.com, 1 +compalliance.com, 1 companion-web.net, 1 company-bike.com, 1 company-info-plugins.nl, 1 companyaneksta.tk, 1 +companycam.com, 0 companyintranet.au, 1 companyintranet.com.au, 1 companywebcast.com, 0 compaoffers.com, 1 comparamejor.com, 1 comparatif-moto.fr, 1 +comparativ.net, 1 comparativadetarifasenergeticas.es, 1 compare-energie.fr, 1 compareairfaredeals.com, 1 compareer.com, 1 compareleasedlines.co.uk, 1 comparemymobile.com, 1 -compareo.au, 1 compareshow.com, 1 comparesoft.com, 1 -comparetaxsoftware.com, 1 comparetheproject.com, 1 comparewatch.com, 1 compareweddinginsurance.org.uk, 1 @@ -34820,26 +34983,26 @@ completecarloans.com, 1 completecase.com, 1 completecomps.au, 1 completecontrol.tk, 1 -completecorporatehealth.com, 1 completeonlinepharmacy.com, 1 completepayrollsolutions.com, 1 completeprivacy.tk, 1 completewordsest.ga, 1 complex-kaspiy.tk, 1 +complex-news.com, 1 complex-organization.com, 1 complexart.ro, 1 complexcoral.ro, 1 +complexorganization.com, 1 complexsystems.fail, 1 compliance-risk.com, 1 compliance-systeme.de, 1 compliancebox.co, 1 compliancecentral.org, 1 -compliancefox.io, 1 compliancehome.com, 1 complianceinsight.ca, 1 +compliancequest.com, 1 compliancerisksoftware.co.uk, 0 compliancessentials.com, 1 -compliantclaw.com, 1 complianz.io, 1 complicescreatifs.com, 1 complifast.com.au, 1 @@ -34850,7 +35013,6 @@ complyadvantage.com, 1 complycheck.co, 1 complyfast.com.au, 1 complyfast.net.au, 1 -complyzero.com, 1 componentcore.com, 1 composite-isfahan.ir, 1 compositedevtec.tk, 1 @@ -34880,6 +35042,7 @@ compromis-promesse-vente.fr, 1 compservice.in.ua, 1 compsoc-dev.com, 1 compta.tools, 1 +comptakech.com, 1 compteq.solutions, 0 comptoir-hardware.com, 1 comptoirducycle.com, 1 @@ -34919,12 +35082,12 @@ computerbase.de, 1 computerforum.tk, 1 computerforums.net, 1 computerhilfe-feucht.de, 1 -computerinfobits.com, 0 +computerinfobits.com, 1 computerjet.ru, 1 computermaus.com, 1 computernetwerkwestland.nl, 1 computernetwork.be, 1 -computerpackages.com, 0 +computerpackages.com, 1 computerpoint.net, 0 computerscience.guide, 1 computersforlearning.gov, 1 @@ -34943,11 +35106,13 @@ computing.land, 1 computingaustralia.com.au, 1 computingessentials.tk, 1 computingsociety.co.uk, 1 +computingwarehouse.com, 1 computools.com, 1 computop.com, 1 computron.ga, 1 comqi.com, 1 comquadro.com.br, 1 +comquestmed.com, 1 comra-therapy.com, 1 comradesofmight.tk, 1 comsoli.com.br, 1 @@ -34964,7 +35129,6 @@ comunicazionenellaristorazione.it, 1 comunidadmontepinar.es, 1 comunidadreparando.com, 1 comunidadvegetariana.com, 1 -comunilife.org, 1 comuniondelucia.com, 1 comunismo.tk, 1 comunistas.tk, 1 @@ -34980,6 +35144,7 @@ conaculsarbesc.ro, 1 conafonline.it, 1 conall.io, 1 conalpedis.tk, 1 +conapdis.go.cr, 1 conbida.co, 1 conbrio.tk, 1 concellodeortigueira.gal, 1 @@ -34992,9 +35157,10 @@ concept.cleaning, 1 concept3d.com, 1 concept4photography.com, 1 concept5.co.il, 1 +conceptatelier.de, 1 conceptec.de, 1 conceptfoundation.org, 1 -conceptluxury.it, 1 +conceptground.com, 1 conceptual.ga, 1 concern.cloud, 1 concert.ga, 1 @@ -35010,7 +35176,7 @@ conciencianimal.tk, 1 concierge.diet, 1 conciertoscolombia.tk, 1 conciliainc.com, 1 -concilig.com.br, 1 +concilig.com.br, 0 concilioderivendel.tk, 1 conciliumnotaire.ca, 1 conciseflow.co.za, 1 @@ -35023,7 +35189,6 @@ conclusive.co.za, 1 concor.ne.jp, 1 concord.sh, 1 concordance.bible, 1 -concordvoice.chat, 1 concrefy.com, 1 concretedreamsoftexas.com, 1 concretehermit.com, 0 @@ -35033,6 +35198,7 @@ concreterepairatlanta.com, 0 concreterepairconcreteleveling.com, 1 concreterstoowoomba.com, 1 concreterswollongong.com, 1 +concreteshopper.com.au, 1 concurseirosdeplantao.com.br, 1 concursos.com.br, 1 concursosabertos.com.br, 1 @@ -35045,6 +35211,7 @@ condignum.com, 1 condit.cf, 1 condit.gq, 1 condit.ml, 1 +conditionyellowacademy.com, 1 condizionatore.roma.it, 1 condo.do, 1 condominiorganica.pe, 1 @@ -35059,6 +35226,7 @@ conectada.tk, 1 conectagob.gov.co, 1 conectatop.com.br, 1 conectens.com, 1 +conectumfinanse.pl, 1 conejicos.tk, 1 conesin.com, 1 conews.ml, 1 @@ -35070,6 +35238,7 @@ conexo.cloud, 1 conexresearch.com, 1 coney.tk, 1 conf.bid, 1 +conf.tn, 1 confac.org, 1 confer.ch, 1 conference-expert.eu, 1 @@ -35109,6 +35278,7 @@ configcat.com, 1 configserverfirewall.com, 1 configurat.cf, 1 configurat.tk, 1 +configwizard.xyz, 1 confio.pt, 1 confirmit.ca, 1 confirmit.com.au, 1 @@ -35116,7 +35286,6 @@ confirmit.de, 1 confiscate.ga, 1 confiscation.tk, 1 confiwall.de, 1 -conflictcontrol.fi, 1 conflidentliving.cf, 1 confluent.cloud, 1 confluents.fr, 1 @@ -35140,9 +35309,9 @@ congenio.de, 1 congenio.eu, 1 congenio.net, 1 congineer.com, 1 -congmc.com, 1 congnghe.so, 1 congoproject.tk, 1 +congregacionmitacol.org, 0 congresistas-ap.tk, 1 congresodelospueblos.org, 1 congressmankirk.com, 1 @@ -35168,17 +35337,17 @@ connect-av.co.uk, 1 connect.facebook.net, 1 connect.gov, 1 connect.net.pk, 1 -connectagoods.com, 1 connectaimpianti.it, 1 connectall.tk, 1 connectapparelstore.com, 1 connectavid.com, 1 -connectedinvestors.com, 1 +connectcablenet.com, 1 +connectedbynexus.com, 1 +connectedinvestors.com, 0 connectedmind.me, 1 connectfss.com, 1 connectheor.com, 1 connecticare.com, 1 -connecticutcourtreporter.com, 1 connecticutnet.tk, 1 connecticuttitlesearch.com, 1 connectika.io, 1 @@ -35210,8 +35379,9 @@ connexas.eu, 1 connexdevices.co.za, 1 connexio.digital, 1 connext.de, 1 -connextglobal.com, 1 +connictro.de, 1 connieetterphotography.com, 1 +connies-diner.de, 1 conning.com, 1 connock.co.uk, 1 connor.nl, 1 @@ -35224,9 +35394,9 @@ connyduck.art, 0 connyduck.at, 1 conocchialidasole.it, 1 conoha.vip, 1 +conorboyd.info, 1 conorbyrd.com, 1 conorjwryan.com, 1 -conorte.mx, 1 conory.com, 1 conova.com, 1 conpins.nl, 1 @@ -35238,7 +35408,6 @@ conpunk.tk, 1 conputant.co, 1 conqi.net, 1 conque.sk, 1 -conquestmuscleactivation.com, 1 conquistar30dias.com.br, 1 conrad-design.com, 1 conrad-kostecki.de, 1 @@ -35251,7 +35420,6 @@ conrail.blue, 1 conrasd.tk, 1 conrazon.me, 1 conroy.org, 1 -conroy4congress.com, 1 consagracionamariasantisima.org, 1 conscia.com, 1 consciente.ch, 1 @@ -35261,6 +35429,7 @@ conscientia.com.mx, 1 consegne.it, 1 conseildesarts.ca, 1 conseilgouz.com, 1 +conseiller-juridique.ca, 1 conseils-immo.fr, 1 conseilsmarketing.com, 1 consejoescolar.org, 1 @@ -35300,22 +35469,26 @@ consorzio.org, 1 conspiracionweb.tk, 1 conspiracy.gq, 1 conspiracytheorypal.com, 1 +constablerecruitment.com, 1 constablevilleny.gov, 1 constancescharff.com, 1 constant-rough.de, 1 constant.ga, 1 +constanta2035.ro, 1 constantinocontabilidade.com, 1 constantinschreiber.me, 1 constcorrect.com, 1 constellatio.com, 1 constellationinternational.ml, 1 constellations.ga, 1 +constellatory.net, 1 constern.de, 1 consteval.org, 1 constexpr.org, 1 constinit.org, 1 constipationrecords.tk, 1 constitution.website, 0 +constru-vegas.com.mx, 1 construccionesceyve.com, 1 construct.net, 1 constructexpres.ro, 1 @@ -35323,11 +35496,10 @@ construction-colleges.com, 1 construction-digitale.fr, 0 construction-group.ga, 1 construction-robotics.de, 1 -constructionaltavista.com, 1 -constructionmetrika.ca, 1 constructionmichelouellet.com, 1 constructionnews.ie, 1 constructionskillstest.com, 1 +constructionstudent.uk, 1 constructoraisaba.com, 1 construguia.co, 1 construred.tk, 1 @@ -35337,7 +35509,6 @@ consul-novocherkassk.ml, 1 consul.io, 0 consuldat.com, 1 consulenteambientale.it, 1 -consulentedellavoro.it, 1 consulenza.pro, 1 consulimp.com.br, 1 consult-altius.co.uk, 1 @@ -35345,10 +35516,9 @@ consult.eng.br, 1 consultadepsicoterapia.com, 1 consultancyistanbul.com, 1 consultar-latam.com, 1 -consultar.io, 1 consultation.ai, 1 consultation.biz.tr, 1 -consultcolin.eu, 1 +consultaveiculopelaplaca.com.br, 1 consultg.ltd, 1 consultimator.com, 1 consulting-brokerage.tk, 1 @@ -35361,6 +35531,7 @@ consultoriadelactancia.com, 1 consultoriadeseguranca.com.br, 1 consultoriosodontologicos.com.br, 1 consultorseo.pt, 1 +consultorseolocal.eu, 1 consultpetkov.com, 1 consumatore.it, 1 consumer.ee, 0 @@ -35386,19 +35557,17 @@ consumersentinel.gov, 1 consumershempmd.com, 1 consumertesting.com, 1 consumidor.gov, 1 -consumoempauta.com.br, 1 consumptionjunction.com, 1 -consumr.ai, 1 consuwijzer.nl, 1 consyltec.de, 1 contabilidadebhpampulha.com.br, 1 contabilidadebrooklin.com.br, 1 contabilidademassarelli.com.br, 1 -contabooks.md, 1 contact-checker.tk, 1 contact.inc, 1 contact.xyz, 1 contactbadger.com, 1 +contacted.io, 0 contactelus88.fr, 1 contactsrl.it, 1 contactstay.com, 1 @@ -35410,7 +35579,6 @@ contango.xyz, 1 contato.vip, 1 contecgmbh.com, 1 contempfleury.com, 1 -contemplativeeducation.org, 1 contemptevoke.com, 1 contenedoresdereciclaje.online, 1 contentcaching.com, 1 @@ -35419,7 +35587,6 @@ contentpass.net, 1 contents.ga, 1 contermis.com, 1 contestreviewest.ga, 1 -contextcapture.ai, 1 contextolog.cf, 1 conti-profitlink.co.uk, 1 contiinex.com, 1 @@ -35443,7 +35610,6 @@ contractdigital.co.uk, 0 contractdirectory.gov, 1 contractorhoustontx.com, 1 contractormountain.com, 1 -contractorsiq.ca, 1 contractorswestga.com, 1 contractwriters.com, 1 contrafactos.tk, 1 @@ -35457,11 +35623,9 @@ contrastly.com, 1 contrastsecurity.com, 1 contratasegurosalud.com, 1 contratderatisation.net, 1 -contratoimediato.com, 1 contratti.it, 1 contrattipubblici.org, 1 contrel.be, 1 -contribution-margin.com, 1 contributopia.org, 1 contributor.google.com, 1 contro.cf, 1 @@ -35469,6 +35633,7 @@ contro.ga, 1 contro.gq, 1 contro.ml, 1 contro.tk, 1 +controladores.net, 1 controlaudits.com, 1 controlbooth.com, 1 controld.com, 1 @@ -35508,14 +35673,11 @@ convergnce.com, 1 conversationexchange.com, 1 conversatis.cf, 1 converser.tk, 1 -conversionkings.com.au, 1 conversive.nl, 1 convert-fast.photos, 1 convert.im, 1 convert.io, 1 convert2sql.com, 1 -converterkits.com, 1 -convertiam.com, 1 converting.click, 1 convertire-documenti.it, 1 convertr.io, 1 @@ -35529,13 +35691,13 @@ convista.com, 1 convocatoriafundacionpepsicomexico.org, 0 convoluted.solutions, 1 convoyin.com, 1 -conwayhumane.org, 1 conwaymedicalcenter.com, 1 conwaymi.gov, 1 conwaypdnh.gov, 1 conwaysc.gov, 1 conwood.best, 1 conwood.my.id, 1 +conwx.com, 1 conxcon.de, 1 coo.ooo, 1 coobis.com, 1 @@ -35545,15 +35707,17 @@ cooferro.tk, 1 coogee.com.au, 1 cooink.net, 0 cook-maestro.com, 1 +cookcoifas.com.br, 1 cookcountyclerkil.gov, 1 cookcountysheriffil.gov, 1 -cookedplay.com, 1 cookescastles.co.uk, 1 +cookgem.com, 1 cookicons.co, 1 cookie-directive.cf, 1 cookie4.com, 1 cookieandkate.com, 1 cookiecrook.com, 1 +cookiedatabase.org, 1 cookiefamily.org, 1 cookielaw.org, 1 cookiepedia.co.uk, 1 @@ -35569,7 +35733,6 @@ cookingperfected.com, 1 cookingperformancegroup.com, 1 cooko.at, 1 cooks.house, 1 -cooks.ly, 1 cooksite.tk, 1 cooktiva.com, 1 cooktoprepairaustin.com, 1 @@ -35582,6 +35745,7 @@ cool110.tk, 1 cool110.xyz, 1 coolabaroo.com.au, 1 coolagent-dokumenty.cz, 1 +coolansplanet.com, 1 coolattractions.co.uk, 1 coolblockschool.org, 1 coolboys.ga, 1 @@ -35640,12 +35804,12 @@ coordinafit.com, 1 coordonnees-gps.fr, 1 coore.jp, 1 coorpacademy.com, 1 -coosada911al.gov, 1 coosbayor.gov, 1 cooscountynh.gov, 1 cooscountyor.gov, 1 copa.cf, 1 copabarena.tk, 1 +copabay.com, 1 copacabanafc.tk, 1 copadata.be, 1 copain.com.mx, 1 @@ -35667,7 +35831,6 @@ coppelmansmakelaardij.nl, 1 copperart.ca, 1 coppercreekconstruction.ca, 1 copperexports.tk, 1 -copperhaus.com.au, 1 copperlantern.tk, 1 coppermein.co.za, 1 coppermine-kickers.tk, 1 @@ -35719,10 +35882,10 @@ corbax.com, 1 corbeille-de-fruit.fr, 1 corbettparadise.com, 1 corbettreporting.com, 1 +corbi.net.au, 1 corbusier.gq, 1 corcoranmn.gov, 1 cord-blood.tk, 1 -cord.nyc, 1 cordeirosolutions.ga, 1 cordejong.nl, 0 cordelia.tk, 1 @@ -35732,7 +35895,7 @@ corderosa.tk, 1 cordeydesign.ch, 0 cordial.systems, 1 cordialapis.com, 1 -cordialsystems.com, 0 +cordialsystems.com, 1 cordioea.net, 1 cordis.io, 0 cordlessdog.com, 1 @@ -35755,9 +35918,9 @@ core3k.info, 1 core3k.mobi, 1 core3k.org, 1 core3k.us, 1 -core4-tech.com, 1 coreapm.com, 1 coreapm.org, 1 +coreassurance.com, 1 corebit.nl, 1 corecapital.cz, 1 corecdn.org, 1 @@ -35781,7 +35944,6 @@ corenova.com.au, 1 corentin-et-rosalie.fr, 1 corepacks.tk, 1 corepartners.com.ua, 1 -corepersonaltrainersmelbourne.com, 1 corephysicians.org, 1 corerad.net, 1 coresecret.de, 1 @@ -35794,6 +35956,7 @@ coresystems.hu, 1 coretechnology.ie, 1 coretema.eu, 1 coreum.ca, 1 +coreup.de, 1 corevetconnect.co.uk, 1 corexpert.com, 1 coreyjmahler.com, 1 @@ -35834,6 +35997,7 @@ corneranimal.com, 1 cornercafe.tk, 1 cornercircle.co.uk, 1 cornergarage.coop, 0 +cornerperk.com, 1 cornerstone.rocks, 1 cornerstonebuildingbrands.com, 1 cornerstonenorthwest.com, 1 @@ -35843,11 +36007,11 @@ cornettedesaintcyr.fr, 1 corniche.com, 1 corningcu.org, 1 cornips.nl, 1 -cornishcamping.co.uk, 1 cornitek.tk, 1 cornmachine.com, 1 cornninja.com, 1 cornodo.com, 1 +cornthwaitegroup.com, 1 cornut.fr, 1 cornwallct.gov, 1 cornwallda.co.uk, 0 @@ -35856,6 +36020,7 @@ coroadeflores.pt, 1 coroas10.tk, 1 coroimagen.tk, 1 corona-data.eu, 1 +corona-renderer.cloud, 1 coronacheck.nl, 1 coronasafe.network, 1 coronastationphotography.com, 1 @@ -35869,7 +36034,6 @@ coronavirusfortbend.gov, 1 coronavirustesting.gov, 1 coronersconnect.co.uk, 1 cororocierodebelen.tk, 1 -corover.ai, 1 corp.goog, 1 corpconsulting.com, 1 corpdocs.com.au, 1 @@ -35881,13 +36045,16 @@ corpomotriztokio.com, 1 corpora.ga, 1 corpora.tk, 1 corporacionbi.com, 1 +corporate-advisory.com, 1 corporate-electric.ky, 1 corporate-university.org, 1 corporateclash.net, 1 corporatecomputingsolutions.com, 1 +corporateeventz.com, 1 corporategift.com, 1 corporateinbound.com, 1 corporatelive.azurewebsites.net, 1 +corporatevisions.com, 1 corposeditora.tk, 1 corposflex.com, 1 corpsepaint.life, 1 @@ -35902,6 +36069,7 @@ corpuschristilansdale.org, 1 corpuschristisouthriver.org, 1 corpuschristitx.gov, 1 corpusslayer.com, 1 +corpvs.com.br, 1 corr-met.pl, 1 corradofranco.it, 1 corrales-sanchez.tk, 1 @@ -35918,9 +36086,9 @@ correncon-en-vercors.fr, 1 correo-e.mx, 1 correo.club, 1 correo.si, 1 +correotemporal.org, 1 correspond.gq, 1 correspondent.ga, 1 -corretoramichelesalvino.com.br, 1 corride.at, 1 corridorsands.com.au, 1 corriere.roma.it, 1 @@ -35956,8 +36124,6 @@ cortep.fr, 1 cortestesisat.net, 1 cortex-development.de, 1 cortex-tickets.de, 1 -cortexedi.com, 1 -cortexsage.com, 1 cortezco.gov, 1 cortezsanitation.gov, 1 corthouts.pl, 1 @@ -35974,12 +36140,10 @@ corus-project.eu, 1 corus-xuam.eu, 1 corus.lt, 1 corvaglia.com, 1 -corvalent.com, 1 corvax.kiev.ua, 1 corvel.com, 1 corvettesalvage.com, 1 corvetto.tk, 1 -corvly.com, 1 corvus.eu.org, 1 corvuscorax.info, 1 coryadum.com, 1 @@ -35991,6 +36155,7 @@ cosasdemadrid.es, 1 cosasnuevas.tk, 1 cosasque.com, 1 coschedule.com, 1 +cosec.cn, 0 coshima.cf, 1 coshima.ga, 1 coshima.gq, 1 @@ -36037,10 +36202,11 @@ cosmos-standard.org, 1 cosmoschaos.net, 1 cosmosearch-azerbaijan.tk, 1 cosmosenalerta.tk, 1 +cosmosfala.com.br, 1 cosmosmkt.com.mx, 1 -cosmowords.games, 1 cosmoz.ga, 1 cosmundi.de, 1 +cosmv.org, 1 cosni.co, 1 cosos.gov, 1 cospier.com, 1 @@ -36049,13 +36215,18 @@ cosplaysr.com, 1 cospol.ch, 0 cosset.com.tw, 1 costa-ballena.tk, 1 -costa-blanca.space, 1 costalinux.tk, 1 costaneranorte.cl, 1 costaricadreamers.com, 1 costaricanvillas.com, 1 costazulinmobiliaria.com, 1 -costclock.ai, 1 +costco.co.jp, 1 +costco.co.kr, 1 +costco.co.nz, 1 +costco.co.uk, 1 +costco.com.au, 1 +costco.com.mx, 1 +costco.com.tw, 1 costcoinsider.com, 1 costel.tk, 1 costelcom.co, 1 @@ -36078,7 +36249,6 @@ cosumnescsd.gov, 1 cosuno.com, 1 cosupport.ai, 0 cosyden.tk, 1 -cotac-group.com, 1 cotacasa.com.br, 1 cotak.gov, 1 coteax.com, 1 @@ -36089,6 +36259,7 @@ coteouestmedia.com, 1 coth.ml, 1 cotherstoneschool.org.uk, 1 cothurnes.fr, 1 +coti.bot, 1 cotofoto.tk, 1 coton.tk, 1 cotonni.tk, 1 @@ -36097,7 +36268,7 @@ cotswoldgrangehotel.co.uk, 1 cotsworth.com, 1 cotta.dk, 1 cottagegroveor.gov, 1 -cottagelife.com, 0 +cottagelife.com, 1 cottagessw.co.uk, 1 cottier-angeli.swiss, 1 cottonage.tk, 1 @@ -36110,23 +36281,23 @@ couchidiomas.com, 1 couchscreen.de, 1 couetteduvet.fr, 1 cougar-bordeaux.fr, 1 +cougargrades.io, 1 coughlan.de, 1 -coughstep.com, 1 could.jp, 1 couleur-lavande.com, 1 couleursorgue.tk, 1 -couleva.ca, 1 couliercreatures.com, 1 coun.be, 1 counseling4students.com, 1 counselingforstudents.com, 1 counsellingtime.co.uk, 1 +counsellingtime.com, 1 counsellink.net, 1 counsol.com, 1 counst.net, 1 counstellor.com, 0 count-iq.com, 1 -count-iq.cz, 0 +count-iq.cz, 1 count-iq.de, 1 count-iq.eu, 1 count-iq.pl, 1 @@ -36150,7 +36321,6 @@ country-house.ga, 1 country-muziek.nl, 1 countryandroses.com, 1 countrybrewer.com.au, 1 -countryfresh.com, 1 countryfunders.com, 1 countrygrid.com, 1 countryhearthbedandbreakfast.com, 1 @@ -36163,8 +36333,8 @@ countryshopradio.tk, 1 countrysidebar.tk, 1 countrysidemarquees.co.uk, 1 countrysmile.org, 0 -countrysquyresantiques.com, 1 county10.com, 1 +countybankdel.com, 1 countyofbarton.gov, 1 countyofcolusaca.gov, 1 countyofkingsca.gov, 1 @@ -36175,22 +36345,17 @@ coupedevils.tk, 1 coupestanley.com, 1 couplay.org, 1 couplesapp.co, 1 -couplesroom.com, 1 coupona.co.il, 1 -couponarrow.com, 1 couponava.com, 0 couponchief.com, 0 couponcode.co.il, 1 couponcodesme.com, 1 couponim.co.il, 1 -couponoy.com, 1 couponsale.tk, 1 couponzil.com, 0 courage-sachsen.org, 1 courage.cf, 1 couraqe.tk, 1 -courbis.fr, 1 -courbis.fr.eu.org, 1 couriergrey.com, 1 couriersrs.com, 1 coursables.com, 1 @@ -36200,10 +36365,12 @@ courseconfidence.com, 1 coursehero.com, 1 coursehunter.net, 1 courselore.org, 1 +coursemology.sg, 1 courseorbit.com, 1 coursera.org, 1 coursesidekick.com, 1 courseware.nl, 1 +courseworkbank.info, 1 coursingweb.tk, 1 courstoujours.be, 1 court-colman-manor.com, 1 @@ -36218,15 +36385,11 @@ courtonetickets.com, 1 courtreporter-chicago.com, 1 courtreporter-newyork.com, 1 courtreporter.services, 1 -courtreporterct.com, 1 courtreporterlosangeles.com, 1 courtreporternet.com, 1 courtreporterphiladelphia.com, 1 -courtreporters-il.com, 1 -courtreporters-in.com, 1 courtreportersanfrancisco.com, 1 courtreportersanjose.com, 1 -courtreporterslosangeles.com, 1 courtreportersnet.com, 1 courtreportersorangecounty.com, 1 courtreporterssandiego.com, 1 @@ -36249,10 +36412,10 @@ coutellerie-suisse.fr, 1 coutelleriederibbes.fr, 1 coutts.com, 1 couverture-barre.fr, 1 -cov.com, 1 +couvreur-hinault.fr, 1 covar.com.co, 1 +cove.chat, 1 covenco.com, 1 -coventa.cl, 1 coventry.com, 1 coventrycollege.ac.uk, 1 coventryfdri.gov, 1 @@ -36265,7 +36428,6 @@ coverage-db.org, 1 coveragecareservices.co.uk, 1 coveragent.de, 1 coveralls.io, 1 -covercress.com, 1 covercupboard.co.uk, 1 coveredinspiders.com, 1 coverings.com, 1 @@ -36275,7 +36437,7 @@ covers.com, 1 covershousing.nl, 1 covert.sh, 1 covery.ai, 1 -coveteur.com, 0 +coveteur.com, 1 covettrading.com, 0 covid-19.nhs.uk, 1 covid-19advice.com, 1 @@ -36285,6 +36447,7 @@ covid19.gov.ph, 1 covid19.melbourne, 1 covid19.nhs.uk, 1 covid19.public-inquiry.uk, 1 +covid19antigen.com.au, 1 covid19cellatlas.org, 1 covid19dataportal.si, 1 covid19responsepod.com, 1 @@ -36307,6 +36470,7 @@ covidtracker.fr, 1 covisa.cl, 1 covisian.com, 0 covoiturage.fr, 1 +covybrat.cz, 1 cowbird.org, 1 cowcreek-nsn.gov, 1 coweasy.com, 1 @@ -36317,7 +36481,7 @@ cowleysexeter.co.uk, 1 cowlitzwa.gov, 1 coworkanywhere.ch, 1 coworked.ai, 1 -coworking-luzern.ch, 0 +coworking-luzern.ch, 1 coworking-space.tk, 1 coxcapitalmanagement.com, 1 coxhealthfoundation.com, 1 @@ -36329,6 +36493,7 @@ coyote.cf, 1 coyote105.com, 1 coyotegear-usa.com, 1 coyotehillstecate.com, 1 +coz-artistic.net, 1 cozanne.fr, 1 coze.zone, 1 cozinharaz.com, 1 @@ -36337,16 +36502,17 @@ cozmoapp.com, 1 cozmoyachts.com, 1 cozo.me, 1 coztacukrzyca.pl, 1 +cozumelairlines.com, 1 cozumelflight.com, 1 cozumelisparadise.com, 1 cozyeggdesigns.com, 1 cozyfarms.in, 1 +cozylocale.com, 1 cozynergy.com, 1 cp-st-martin.be, 1 -cp.pt, 1 cpac.moe, 1 cpac.nyc, 1 -cpacharge.com, 0 +cpacharge.com, 1 cpadollar.cf, 1 cpagray.com, 0 cpan.org, 1 @@ -36360,6 +36526,7 @@ cpasaguenay.ca, 1 cpaspecialisters.ga, 1 cpasperdu.com, 1 cpbanq.com, 1 +cpbonline.co.za, 1 cpcbegin.tk, 1 cpcclarkesville.org, 1 cpchur.ch, 0 @@ -36388,6 +36555,7 @@ cphollywoodproduct.ml, 1 cphpvb.net, 1 cpifilters.com, 0 cpish.id.au, 0 +cplconsult.com, 1 cplogis.co.kr, 1 cpls.me, 1 cplsearch.com, 1 @@ -36416,6 +36584,7 @@ cptcreative.com, 1 cptoon.com, 1 cpts-tdm16.fr, 1 cptvl.de, 1 +cpu.biz.tr, 1 cpu.wiki, 1 cpucheu.com, 1 cpufanshop.ga, 1 @@ -36452,6 +36621,7 @@ crackedsoftware.cf, 1 cracker.in.th, 1 crackerjohn.tk, 1 crackheros.site, 1 +crackhomes.com, 1 cracklab.tk, 1 crackpfer.de, 1 crackrequest.org, 1 @@ -36475,7 +36645,7 @@ crackychan.org, 1 crackyhouse.com, 1 crackypedia.uk, 1 cradio.tk, 1 -cradleaccounting.com, 0 +cradleaccounting.com, 1 cradleofaviation.org, 1 cradletocareer.org.uk, 1 craft-beer.life, 1 @@ -36490,11 +36660,9 @@ craftchocolate.store, 1 craftcms.com, 1 crafted.cat, 1 craftedcharmweddingplanning.com, 1 -craftedsignal.io, 1 crafterbase.de, 1 crafters-room.com, 1 crafters.co.jp, 1 -craftersrealty.com, 1 craftfocus.com, 1 craftgate.io, 1 craftination.net, 1 @@ -36502,6 +36670,7 @@ craftingcomrades.net, 1 craftinghand.com, 0 craftist.de, 1 craftmachinec.com, 1 +craftmenu.ru, 1 craftmeow.com, 1 craftmeow.support, 1 craftottawa.ca, 1 @@ -36511,14 +36680,14 @@ craftsmany.net, 1 crafttalk.tk, 1 craftwarehouse.com, 1 craftwmcp.xyz, 1 -craftychameleonbar.com, 0 +craftychameleonbar.com, 1 craftycove.store, 1 craftydev.design, 1 craftyguy.net, 1 craftyphotons.net, 1 craftyun.cn, 1 craig-mullins.com, 1 -craigary.net, 1 +craigary.net, 0 craigbates.co.uk, 0 craigdavis.ga, 1 craigfrancis.co.uk, 1 @@ -36531,7 +36700,6 @@ craigwfox.com, 0 crain.com, 1 cramer-group.com, 1 cramersoft.com, 1 -cramirez.cl, 1 cran-automobiles.fr, 1 cranecred.org, 1 cranems.com.ua, 1 @@ -36550,7 +36718,6 @@ crapitalism.biz, 1 crapmail.tk, 1 crapouill.es, 1 crash-de-1929-et-grande-depression.tk, 1 -crashchampions.com, 1 crashcomputer.tk, 1 crashcoursecenter.com, 1 crashcrafter.de, 1 @@ -36581,7 +36748,6 @@ crawfordscientific.com, 1 crawfordtx.gov, 1 crawler.ninja, 1 crayon.co, 1 -crayonsnursery.com, 1 craytos.jp, 1 crazedknitters.com, 1 crazilyeverafter.com, 1 @@ -36633,14 +36799,15 @@ crca911co.gov, 1 crcc-center.com, 1 crcmc.com.tw, 1 crcncc.org, 1 +crcprojects.in, 1 crcr.pw, 1 +cre-pf.org.au, 1 cre8ivedeals.com, 1 crea-shops.ch, 0 crea.bg, 1 crea3dsolutions.com, 1 creabis.de, 1 creacioneslri.com, 1 -creactivatecomfandi.com, 1 creactive-mjardevi.se, 1 creadoc.fr, 1 creadordenoticias.com, 1 @@ -36653,7 +36820,6 @@ crealogix-online.com, 1 cream-dream.com.ua, 0 creamcastles.co.uk, 1 creamfields.com, 1 -creamlanddairy.com, 1 creamosweb.co, 1 creampiepussytube.com, 1 creamsoft.com, 1 @@ -36662,7 +36828,6 @@ creand.ad, 1 creand.es, 1 creandgroup.com, 1 creandoydesarrollando.com, 1 -creaphism.com, 1 crear-webs-baratas.com, 0 creared.edu.co, 1 crearesiteweb.tk, 1 @@ -36681,9 +36846,8 @@ createconline.de, 1 createcpanama.com, 1 creategyx.ga, 1 createit.com, 1 -createitwithcottage.com, 1 creately.com, 1 -createstoke.com, 1 +createmvp.com, 1 createstudios.com.au, 0 createurshub.com, 1 createwithcynthia.com, 1 @@ -36693,7 +36857,6 @@ creatieven.com, 1 creationfox.gq, 1 creations-edita.com, 1 creationsdharmonie.com, 1 -creatisa.cz, 1 creative-cinema.cloud, 1 creative-cinema.de, 1 creative-wave.fr, 1 @@ -36711,7 +36874,6 @@ creativedijital.com.tr, 1 creativeedge.ch, 1 creativeeducation.tk, 1 creativeexpertdesigner.com, 1 -creativefinisheshub.com, 1 creativegraphix.com, 1 creativeground.com, 1 creativeground.com.au, 1 @@ -36726,6 +36888,7 @@ creativematters.ch, 0 creativemindslms.tk, 1 creativemotion.io, 1 creativenz.govt.nz, 1 +creativepatterns.io, 1 creativephs.com, 1 creativephysics.ml, 1 creativeqc.com, 1 @@ -36737,14 +36900,15 @@ creativestories.me, 1 creativetalkconference.com, 1 creativetaupo.org.nz, 1 creativetouchrotherham.co.uk, 1 +creativewolf.net, 1 creativeworks.com.hk, 1 creatividigitali.com, 1 +creativityalliance.com, 0 creativlabor.ch, 1 creativo.biz, 1 creatix.tk, 1 creatomatic.co.uk, 1 creatormetrics.io, 1 -creatorrm.com, 1 creators.direct, 1 creatorsgarten.org, 1 creatorswave.com, 1 @@ -36752,8 +36916,6 @@ creattic.tk, 1 creatuasociacion.es, 1 creature.social, 1 creayes.com, 1 -creaza.nl, 1 -crebi.com.co, 1 crebita.de, 1 creche-noel.com, 1 crechepequenopolegar.com.br, 1 @@ -36762,11 +36924,12 @@ crecman.fr, 1 crecycle.eco, 1 credello.com, 1 credemeuromobiliarepb.it, 1 -credencia.pe.gov.br, 1 credex.bg, 1 credfacilbeneficios.com.br, 1 crediblemeds.org, 1 +credify.tech, 1 credigo.io, 1 +credimax.com.bh, 1 credin.com.tr, 1 credit-10.com, 1 credit-default-swaps.tk, 1 @@ -36776,10 +36939,11 @@ creditcard.run, 1 creditcardbalancetransferoffers.com, 1 creditcardgenerator.money, 1 creditcheckup.com, 1 -creditcorponline.com, 0 +creditcorponline.com, 1 creditenonstop.ro, 1 crediteurope.ru, 1 creditfair.in, 1 +credithuman.com, 1 creditif.tk, 1 creditkarma.ca, 1 creditkarma.com, 1 @@ -36806,6 +36970,7 @@ credo.science, 1 creekcountyonline.com, 1 creekie.me, 1 creeks-coworking.com, 1 +creekside.edu.in, 1 creeksidebiblechurch.org, 1 creeksidecentre.org.uk, 1 creeksideduluth.com, 1 @@ -36813,6 +36978,7 @@ creeksideproconstruction.com, 1 creelandgow.com, 1 creep.tk, 1 creepycraft.nl, 1 +creepymemes.com, 1 creepynuts.com, 1 creepypastas.com, 1 creepystories.tk, 1 @@ -36830,7 +36996,6 @@ cremornelec.com.au, 1 crena.ch, 1 crepa.ch, 0 crepusculofansmexico.tk, 1 -crepz.ai, 1 crescendo.ai, 0 crescendo.ventures, 1 crescent-moon.tk, 1 @@ -36840,6 +37005,7 @@ cresoweb.it, 1 cresserons.fr, 0 cressetcapital.com, 1 crestalepropiedades.com.ar, 1 +crestaproject.com, 1 crestasantos.com, 1 crestataustin.com.my, 1 crestaurant.com.au, 1 @@ -36860,6 +37026,7 @@ cretica.no, 1 creus.jp, 1 creusalp.ch, 0 crew.moe, 1 +crewextension.com, 1 crewnetwork.com, 1 crewplanner.com, 1 crewresourcesinternational.group, 1 @@ -36870,6 +37037,7 @@ crewvision.pt, 1 crex24.com, 1 crfcap.org, 0 crftvideo.com, 1 +crg-pi.com, 1 crgalvin.com, 1 crgm.net, 1 cri-paris.org, 0 @@ -36890,8 +37058,7 @@ crickits.co.uk, 1 cricpa.com, 1 cricrocket.com, 1 crictechs.com, 1 -cricxline.com, 1 -criena.com, 1 +criena.com, 0 criena.net, 1 crigler-najjar.fr, 1 criglernajjarday.com, 1 @@ -36903,9 +37070,10 @@ crimeainspire.com, 1 crimeamet.ml, 1 crimean-wines.tk, 1 crimeandwar.com, 1 -crimefreeliving.com, 1 +crimeid.cc, 1 crimemuseum.org, 1 crimereports.com, 1 +crimes.media, 1 crimestoppersnt.com.au, 1 crimethincx.tk, 1 crimewatch.net, 1 @@ -36946,8 +37114,10 @@ criptozoologia.tk, 1 cris.org.in, 1 cris2006.com, 1 crisantacademy.com, 1 +crisis.jp, 1 crisisactual.com, 1 crisisclubers.ga, 1 +crisisconnections.org, 1 crisisdelos40.tk, 1 crisisnextdoor.gov, 1 crisispreparedness.com, 1 @@ -36961,7 +37131,7 @@ crisp.watch, 1 crispinplasticsurgery.com, 1 crispinusphotography.com, 1 crisple.info, 1 -crispregional.org, 0 +crispregional.org, 1 crispsheets.com, 1 crispybacon.ml, 1 crisscrossjazz.com, 1 @@ -36977,11 +37147,9 @@ cristenberens.tk, 1 cristi.io, 1 cristiaen.nl, 1 cristian-alexander.tk, 1 -cristianb.cz, 1 cristiandumitru.tk, 1 cristianhares.com, 1 cristianonascimento.ml, 1 -cristicbz.eu, 1 cristiengoller.ga, 1 cristiengoller.gq, 1 cristina.tk, 1 @@ -36990,7 +37158,7 @@ cristinafigueroa.tk, 1 cristnasar.tk, 1 cristomisina.tk, 1 cristomoradocusco.tk, 1 -cristyclauserphotography.com, 0 +cristyclauserphotography.com, 1 criteriaproducciones.tk, 1 criterion.ga, 1 critfc.org, 1 @@ -37002,6 +37170,7 @@ criticalculture.ml, 1 criticalgenesis.tk, 1 criticalmention.com, 1 criticalminerals.gov, 1 +criticalrace.org, 1 criticalsoftware.com, 1 criticalsurveys.co.uk, 1 criticcoos.tk, 1 @@ -37014,11 +37183,13 @@ critter.art, 1 critterculture.com, 1 criu.org, 1 crivitz.gov, 1 +crix.ro, 1 crj.ovh, 1 crl-aus.com, 0 crl-autos.com, 1 crlna.com, 1 crm-dialog.com, 1 +crm-dialog.de, 1 crm-gestion-relation-client.com, 1 crm.onlime.ch, 0 crm114d.com, 1 @@ -37035,7 +37206,6 @@ crmtaxi.ml, 1 crn.li, 1 crnajobsite.com, 1 crnalab.net, 1 -crnsecure.com, 1 croachlife.com, 1 croatia.hr, 1 crobeauty.com, 1 @@ -37058,6 +37228,7 @@ croissancelocal.fr, 1 croissant.casa, 1 cromartycamping.com, 1 cromavista.tk, 1 +cromefire.de, 1 cromefire.myds.me, 1 cromosceltavigo.tk, 1 cromosomax.com, 1 @@ -37082,7 +37253,6 @@ cronologie.de, 1 cronometer.com, 1 cronoscentral.be, 1 cronosdev.com, 1 -cronosgrocery.com, 1 crookcountyor.gov, 1 crookedcru.tk, 1 crookedlakelistings.com, 1 @@ -37120,8 +37290,7 @@ crossfitalvalade.com, 1 crossfitblau.com, 1 crossformer.com, 1 crossfox.red, 1 -crossjoin.com, 1 -crossjoin.pt, 1 +crosslaketech.com, 1 crosslifenutrition.co.uk, 0 crosslimit.ga, 1 crossorange.jp, 1 @@ -37133,6 +37302,7 @@ crossroads-gmbh.ch, 1 crossroadsartscouncil.org, 1 crosstitch.com, 1 crossuniverse.net, 1 +crossway.nl, 1 crosswayz.tk, 1 crosty.tk, 1 crotchrockets.tk, 1 @@ -37144,6 +37314,7 @@ crowdbox.net, 1 crowdcloud.be, 1 crowdee.com, 1 crowdfiber.com, 1 +crowdfundingdream.com, 1 crowdpress.it, 1 crowdsim3d.com, 1 crowdstack.com, 1 @@ -37159,11 +37330,12 @@ crownandchamparesorts.com, 1 crowncastles.co.uk, 1 crownchessclub.com, 1 crownedhijab.com, 1 +crownednetwork.com, 1 crownhotelharrogate.com, 1 +crownmazda.ca, 1 crownmutual.com, 1 crownmutualgroup.com, 1 crownpeak.com, 1 -crownpenang.com, 1 crownpoint.com, 0 crownsterling.io, 1 crownstone.rocks, 1 @@ -37175,6 +37347,7 @@ croydonapartments.com.au, 1 croydonbouncycastles.co.uk, 1 croydondrive.org.uk, 1 croydonlabourgroup.co.uk, 1 +croydonsouthlabour.org, 1 crpcentroradiologico.com.br, 1 crrapi.cf, 1 crrapi.xyz, 1 @@ -37185,19 +37358,30 @@ crsoresina.it, 1 crspcrst.ca, 1 crsserviceogkloak.dk, 1 crstat.ru, 1 +crt.cloud, 1 crt.sh, 1 crt2014-2024review.gov, 1 +crtclaims.com, 1 crtevents.co.uk, 1 +crti.dz, 1 +crti.tech, 1 crtified.me, 1 -crucibl.ai, 1 +crucerosplus.com, 1 +crucial.com, 1 +crucial.de, 1 +crucial.es, 1 +crucial.fr, 1 +crucial.in, 1 +crucial.jp, 1 +crucial.tw, 1 crucible.io, 1 -crudly.ai, 1 cruelalice.net, 1 cruelcarbon.tk, 1 cruelgirls.tk, 1 crufad.org, 0 cruicky.co.uk, 1 cruicky.uk, 1 +cruisecheap.com, 1 cruisecontrolnovels.com, 1 cruisefashion.tk, 1 cruiselaw.de, 1 @@ -37209,7 +37393,6 @@ cruises.tk, 1 cruisezoom.com, 1 cruisinkenssurfcity.com, 1 crumbcontrol.com, 1 -crumblcookiesweekmenu.us, 1 crumbscorkscrews.com, 1 crumobr.com, 1 crunchr.com, 1 @@ -37219,29 +37402,27 @@ crunchy.rocks, 1 crunchybridge.com, 1 crusadernews.com, 1 cruscotto-legno.it, 1 +crushbarexam.com, 1 crushedice.uk, 1 crushingcaspars.de, 1 +crushthelsatexam.com, 1 crushxp.tk, 1 crustytoothpaste.net, 1 crute.me, 1 crutic.gq, 1 -cruxa.io, 1 -cruxreasoning.com, 1 cruzadamorada.tk, 1 -cruzrealestatepropertiesllc.com, 1 crvenikrst.tk, 1 cry-sys.de, 0 -cryb.me, 1 cryocairns.com.au, 1 cryoflesh.com, 1 cryogeni.fr, 1 cryosite.com, 1 cryothanasia.com, 1 +cryovaults.com, 1 cryovex.com, 1 cryozenic.com, 1 cryp.no, 1 crypt-app.net, 1 -crypt.is-by.us, 1 crypt0cloud.ddns.net, 0 cryptcex.com, 0 cryptcheck.fr, 1 @@ -37255,8 +37436,9 @@ crypticface.tk, 1 crypticonseattle.com, 1 crypticstench.tk, 1 cryptifo.com, 1 -cryptii.com, 1 +cryptii.com, 0 cryptin-it.com, 1 +cryptitan.live, 1 cryptme.in, 1 crypto-ads.ga, 1 crypto-clix.xyz, 1 @@ -37267,7 +37449,6 @@ crypto-iptv.online, 1 crypto-trade.org, 0 crypto-wiki.tk, 1 crypto.bzh, 1 -crypto.gov, 1 crypto.graphics, 1 cryptoagility.cloud, 1 cryptoanarchist.tk, 1 @@ -37293,6 +37474,7 @@ cryptodredge.org, 1 cryptoearnblog.xyz, 1 cryptofacilities.com, 1 cryptofan.org, 1 +cryptofinance.ai, 1 cryptofomo.capital, 1 cryptofox.nl, 1 cryptogaming.com, 1 @@ -37328,29 +37510,30 @@ cryptool.org, 1 cryptop.ml, 1 cryptoparty.at, 1 cryptoparty.dk, 1 +cryptoparty.in, 1 cryptoparty.tv, 1 cryptopartynewcastle.org, 1 cryptopartyutah.org, 1 cryptopaste.org, 1 cryptophobia.nl, 1 cryptopolitan.com, 1 -cryptops.fr, 1 cryptorival.com, 1 cryptoscamdb.org, 1 cryptoscope.io, 1 +cryptoseed.org, 1 cryptosender.io, 1 cryptoshot.pw, 1 cryptosolicitations.com, 1 cryptostorm.is, 1 cryptotabworks.ml, 1 cryptotrendclub.com, 1 -cryptoverse-ai.com, 1 cryptoviet.com, 1 +cryptowat.ch, 1 cryptox-trading.com, 1 cryptoya.io, 1 +cryptoz.zone, 1 cryptozoologyguide.com, 1 cryptpad.cz, 1 -cryptpeer.com, 1 cryptsetup.com, 1 cryptulo.com, 1 crys.cloud, 1 @@ -37380,11 +37563,12 @@ crystalprinting.com.au, 1 crystalsdollz.tk, 1 crystalsky.tk, 1 crystalspringsms.gov, 1 +crystmaple.net, 1 +crystone.me, 1 cryz.ru, 1 cs-algeria.tk, 1 cs-bot.tk, 1 cs-colorscreed-betongulve.dk, 1 -cs-dahoam.de, 1 cs-escom.tk, 1 cs-ice.tk, 1 cs-lite.tk, 1 @@ -37454,6 +37638,8 @@ csevolution.tk, 1 csexy.ml, 1 csfa.be, 1 csfcloud.com, 1 +csfd.cz, 1 +csfd.sk, 1 csffa.ca, 1 csfm.com, 1 csgbusiness.co.uk, 1 @@ -37462,17 +37648,16 @@ csgo-roulette.ru, 1 csgo.ac.cn, 1 csgo.net, 1 csgo.su, 1 -csgobans.com, 1 csgodb.net, 1 csgoempire.com, 1 csgoempire.gg, 1 csgofile.tk, 1 csgofinder.eu, 1 csgomtr.com, 1 -csgoskins.gg, 1 csgotwister.com, 1 csgoyournal.com, 1 csharp.love, 1 +csharpfactory.io, 1 csharpmarc.net, 1 cshe.de, 1 cshive-img.com, 1 @@ -37514,6 +37699,7 @@ csru.net, 1 css-clamp-generator.com, 1 css-krebs.ch, 1 css-tricks.tk, 1 +css.direct, 1 css.style, 1 cssai.eu, 1 cssbmb.gov, 1 @@ -37551,11 +37737,13 @@ cswrld.com, 1 csx.co.za, 1 csy.hu, 1 csyxy.fi, 1 +cszj.wang, 0 ct-static.com, 1 ct-watches.dk, 1 ct.search.yahoo.com, 0 ctafo.com, 0 ctauditors.gov, 1 +ctbirding.org, 1 ctcloud.ml, 1 ctcom-peru.com, 1 ctconp.org, 1 @@ -37569,7 +37757,7 @@ ctet.nic.in, 1 ctf-albstadt.de, 1 ctf-archive.com, 0 ctf.link, 1 -ctg.com, 0 +ctg.com, 1 cthomas.work, 1 cthulhuden.com, 1 ctir.gov.br, 1 @@ -37594,9 +37782,6 @@ ctpe.info, 1 ctpe.net, 1 ctpro.net, 1 ctr-sante.eu, 1 -ctrack.org, 1 -ctrackcrystal.co.za, 1 -ctrackcrystal.com, 1 ctrl-click.fr, 1 ctrl.blog, 1 ctrl.gr, 0 @@ -37608,28 +37793,25 @@ ctsu.org, 1 cttso.gov, 1 ctu.cz, 1 ctul.net, 1 -ctwsolicitors.co.uk, 1 ctx.build, 1 ctyrisinkneri.cz, 1 cu247secure.ie, 1 cua911.gov, 1 cuadrosblangar.es, 1 -cuantocuestauruguay.com, 1 cuantusambiental.com, 1 cuarentagrados.tk, 1 cuaresmaysemanasanta.tk, 1 +cuartaraiz.com, 1 cuartetocontinental.tk, 1 cuartob.tk, 1 cuasotinhyeu.vn, 1 cuatlanta.org, 1 cuatroporcuatro.tk, 1 cuatroymedia.com, 1 -cuautosearch.com, 1 cuban.wiki, 1 cubanchino.tk, 1 cubanda.de, 1 cubatel.com, 1 -cubavisa.uk, 1 cubazineers.ga, 1 cubazineest.ga, 1 cubbus.beauty, 1 @@ -37659,6 +37841,7 @@ cubia.com, 1 cubia4.com, 1 cubic-lynx.com, 1 cubicle.tk, 1 +cubiest.com, 1 cubigames.tk, 1 cubikus.fr, 1 cubile.xyz, 1 @@ -37676,7 +37859,6 @@ cubsbestteaminbaseball.com, 1 cubsradio.tk, 1 cubunscop.com, 1 cubyhome.com, 1 -cuc-hospice.com, 1 cucabot.tk, 1 cucaracha.tk, 1 cuchichi.es, 1 @@ -37703,6 +37885,7 @@ cuetoems.com, 1 cuevafelina.tk, 1 cuevasymontoto.com, 1 cufoon.com, 1 +cugetliber.ro, 1 cuhadardokuma.com, 1 cuhawaii.com, 1 cuidadosamente.com, 1 @@ -37711,7 +37894,6 @@ cuio.net, 1 cuir-lipari.fr, 1 cuisine-centrale17.fr, 1 cuisine-ultime.fr, 1 -cuisineburst.com, 1 cuitrau.tk, 1 cujanovic.com, 1 cukrarnalahoda.cz, 1 @@ -37756,6 +37938,7 @@ culturelivresque.fr, 1 culturerain.com, 1 culturesgames.tk, 1 cultureshift.co, 1 +culturesouthwest.org.uk, 1 culturestraveled.com, 1 culturevision.com, 1 culturism.ml, 1 @@ -37766,7 +37949,6 @@ cumberlandcountyme.gov, 1 cumberlandcountync.gov, 1 cumberlandcountynj.gov, 1 cumberlandcountypa.gov, 1 -cumberlanddairy.com, 1 cumberlandrivertales.com, 1 cumberlink.com, 1 cumbiaperuana.tk, 1 @@ -37777,12 +37959,13 @@ cuminas.com, 1 cumingcountyne.gov, 1 cumlaudegent.be, 1 cumman.life, 1 +cummiesin.me, 1 cumnock.name, 1 cumnock.org, 1 -cumple21719.cl, 1 cumplegenial.com, 1 cumsext.me, 1 cumshots-video.ru, 1 +cumtd.com, 1 cumulogranite.fr, 1 cumulonembo.com, 1 cumulus.photo, 1 @@ -37822,7 +38005,6 @@ cuppen.support, 1 cur.by, 1 curacao.tk, 1 curacaodiveguide.com, 0 -curakw.com, 1 curamail.co.uk, 1 curamcare.ml, 1 curareldolordeespalda.com, 1 @@ -37835,11 +38017,9 @@ curbhe.ro, 1 curbsandstoops.com, 1 curbsoftware.com, 1 curbza.com, 1 -curde.pt, 1 cure53.de, 1 cureatr.com, 1 cureine.com, 1 -curewiki.health, 1 cureyou.com.tw, 1 curieux.digital, 0 curinline.com, 1 @@ -37852,10 +38032,8 @@ curiositytrained.com, 1 curious-today.com, 1 curious.host, 1 curiouscast.ca, 1 -curiousdaydreams.com, 1 curiousduck.com, 1 curiousmatrix.com, 1 -curiousozzy.com, 1 curiousspoonfoods.com, 1 curioustea.com, 1 curiozitate.com, 1 @@ -37879,6 +38057,7 @@ currencyreaderapplication.gov, 1 currencyroot.com, 1 current-ip.com, 1 current.com, 0 +currentbitcoin.news, 1 currentchaos.tk, 1 currenteurope.eu, 1 currenthaus.com, 1 @@ -37888,7 +38067,9 @@ currycountyor.gov, 1 currynissanmaparts.com, 1 currytech.cn, 1 cursed-empire.airforce, 1 +cursed.foundation, 1 cursedpine.studio, 1 +curseus.com, 1 cursillosdezaragoza.tk, 1 cursoalia.com, 0 cursoandroid.com, 1 @@ -37900,10 +38081,12 @@ cursorcam.tk, 1 cursos-trabajadores.net, 1 cursos.com, 1 cursos.enf.br, 1 +cursosbajoprecio.com, 1 cursosdepestanas.com, 1 cursosemmaus.es, 1 cursosforex.com, 1 cursosingles.com, 1 +cursosprogramacion.online, 0 cursossena.co, 1 cursossilvania.com, 1 cursosypostgrados.com, 1 @@ -37919,6 +38102,7 @@ curtissmith.me.uk, 1 curtissmith.uk, 1 curts-showcars.com, 1 curvaverde02.tk, 1 +curvemedia.co, 1 curveprotect.cz, 1 curvissa.co.uk, 1 curvyjessi.com, 1 @@ -37952,19 +38136,20 @@ customerservicemanager.com, 1 customerservicepal.com, 1 customerware.com.au, 0 customessaystation.gq, 1 +customhomerealty.com, 1 customlogoit.com, 1 custommadecasino.com, 1 custommadegolfevents.com, 1 custompainted.ca, 1 custompapers.com, 1 +custompilotgifts.com, 1 customradio.tk, 1 customromlist.com, 1 customsandals.tk, 1 customsportsocks.com, 0 customtel.com.au, 1 -customtruckaccessories.com, 1 customtshirtrequest.com, 0 -customwebsitesplus.com, 0 +customwebsitesplus.com, 1 customwritings.com, 1 customwritten.com, 1 custosd.com, 1 @@ -37979,6 +38164,7 @@ cutaquigusa.com, 1 cute-urls.ml, 1 cute2u.com, 1 cuteboibutt.ml, 1 +cutegifmaker.com, 1 cutehost.ga, 1 cutemodel.ml, 1 cutenfunnypets.com, 1 @@ -37999,6 +38185,7 @@ cuttingedgeoptronics.com, 1 cuttingedges.tk, 1 cuubconsultancy.com, 1 cuvantul.tk, 1 +cuve-ibc.be, 1 cuvva.co, 1 cuvva.co.uk, 1 cuvva.com, 1 @@ -38013,13 +38200,16 @@ cuvva.uk, 1 cuvva.us, 1 cuwcd.gov, 1 cuxpool.club, 1 +cuxpool.net, 1 cuyahogacommunitycollege.tk, 1 cuyahogacountyvotesoh.gov, 1 +cv-generator-fe-eu.herokuapp.com, 1 cv.fr, 1 cv.se, 1 cvalda.tk, 1 cvazquez.es, 1 cvbp.nl, 1 +cvbtp.com, 1 cvc.digital, 1 cvdeexpo.com, 1 cvdesignr.com, 1 @@ -38028,6 +38218,7 @@ cve-wizard.com, 1 cvec.org, 1 cvedetails.com, 1 cvent.com, 1 +cvetochniydom.ru, 1 cvetpodokonnik.tk, 1 cvetybaby.com, 1 cvgenius.com, 1 @@ -38035,6 +38226,7 @@ cvglobal.cf, 1 cvgt.com.au, 1 cvh.hr, 1 cvhunter.hu, 1 +cvj.me, 1 cvjd.me, 0 cvjm.rocks, 1 cvlibrary.co.uk, 1 @@ -38103,15 +38295,17 @@ cwrau.de, 1 cwrau.info, 1 cwrau.io, 1 cwrau.rocks, 1 +cws.ae, 1 cwtsamplecenter.com, 1 cwtv.cc, 1 cwtv.in, 1 cwwise.com, 1 cx100.io, 1 +cx330.top, 1 cxbmystore.com, 1 cxcarepro.com, 1 cxense.com, 1 -cxliving.com, 1 +cxfund.com.cn, 1 cxologic.com, 1 cxologic.io, 1 cxologic.net, 1 @@ -38154,7 +38348,6 @@ cyber4z.com, 1 cyber72.com, 1 cyberab.org, 1 cyberagentur.de, 1 -cyberai.co.th, 1 cyberai.pl, 1 cyberalternance.com, 1 cyberark.com, 1 @@ -38175,20 +38368,15 @@ cybercard.cz, 1 cybercareers.gov, 1 cybercat-tver.tk, 1 cyberce.fr, 1 -cybercitadel.com, 1 cyberclasse.ca, 1 cyberclaw.tk, 1 cybercloud.cc, 0 -cyberclub.com.br, 1 -cyberconsultia.com, 1 cybercrew.cc, 1 cybercrew.rocks, 1 cybercrime.gov, 1 cyberd.org, 0 cyberdan.co.uk, 1 cyberdean.fr, 1 -cyberdefgeek.com, 1 -cyberdesk.help, 1 cyberdevelopment.es, 1 cyberdiscoverycommunity.uk, 1 cyberdog.ch, 1 @@ -38213,6 +38401,7 @@ cybergreen.cz, 1 cybergroup.cf, 1 cyberguardian.consulting, 1 cyberhaus.ch, 1 +cyberhelden.nl, 1 cyberhipsters.nl, 1 cyberhost.uk, 1 cyberinfraarmor.com, 1 @@ -38242,7 +38431,6 @@ cybermatrixone.tk, 1 cybermavi.com, 1 cyberme.sh, 1 cybermeldpunt.nl, 1 -cybermoov.com, 1 cybermoov.eu, 1 cybermotives.com, 1 cybern.tk, 1 @@ -38285,13 +38473,13 @@ cyberschmiede.at, 1 cyberschmiede.com, 1 cyberschmiede.de, 1 cyberscroll.com, 1 -cybersecops.bg, 1 cybersecur.co.ao, 0 cybersecurite-info.fr, 1 cybersecurity.gov, 1 cybersecurity.gr, 1 cybersecurity.run, 1 cybersecuritybusiness.ai, 1 +cybersecuritychallenge.be, 0 cybersecuritydefence.co.uk, 1 cybersecurityincidentresponse.com, 1 cybersecuritysummit.com, 1 @@ -38307,7 +38495,7 @@ cyberskyline.com, 1 cybersmart.co.uk, 1 cybersolution.tk, 1 cybersolve.com, 1 -cybersoulz.com, 0 +cybersoulz.com, 1 cybersound.tk, 1 cyberspect.io, 1 cyberspot-ci.net, 1 @@ -38345,7 +38533,9 @@ cyborgtheory.tk, 1 cyboshield.com, 1 cybozu.cn, 1 cybozu.com, 1 +cybrient.com, 1 cybrix.io, 1 +cyburbia.org, 1 cycc.cloud, 1 cyclamen.tk, 1 cycleboss45.fr, 1 @@ -38379,6 +38569,7 @@ cyformatic.com, 1 cygenx.com, 1 cygnatus.com, 1 cygnius.net, 1 +cykelbanor.se, 1 cyklistika24.cz, 1 cyklokoalicia.sk, 1 cylex-italia.it, 1 @@ -38386,13 +38577,11 @@ cylex.noip.me, 1 cyllos.me, 1 cynchealth.org, 1 cynicaloptimist.me, 1 -cynoflow.fr, 1 cynology.ga, 1 cynop.me, 1 cynqx.com, 1 cynrgie.fr, 1 cynthiacherry.com, 1 -cyoa.com, 1 cyon.ch, 1 cyp.io, 1 cype.dedyn.io, 1 @@ -38400,7 +38589,6 @@ cyph.com, 1 cyph.healthcare, 1 cyph.ws, 1 cyphar.com, 1 -cyphene.com, 1 cypherbot.org, 1 cypherock.com, 1 cypherpunk.observer, 1 @@ -38409,8 +38597,6 @@ cypressca.gov, 1 cypro.co.uk, 1 cyprus-company-for.gr, 1 cyprus-company-service.com, 1 -cyprus-companyformation.com, 1 -cyprus-consult.com, 1 cyprustimes.com, 1 cyqual.com, 1 cyraco.com, 1 @@ -38438,7 +38624,6 @@ cytobank.org, 1 cytosorbents.com, 1 cytovet.ru, 1 cyvault.io, 1 -cywall.co, 1 cz.ma, 1 cz.nl, 1 czakey.net, 1 @@ -38466,7 +38651,6 @@ czechpoint.cz, 1 czechps.cz, 1 czechvirus.cz, 1 czeh.us, 1 -czerner.cz, 1 czewo-data.de, 1 czirnich.org, 1 czk.mk, 1 @@ -38479,7 +38663,6 @@ czteryporyroku.edu.pl, 1 cztt.cz, 1 czwartybrat.pl, 0 czymamdzisimieniny.pl, 1 -czystaprzyjemnosc.eu, 1 czzs.org, 1 d-20.fr, 1 d-consultant.ru, 1 @@ -38501,12 +38684,11 @@ d-va.cf, 1 d.ac, 1 d.nf, 1 d.nr, 1 -d.tl, 1 d00d.de, 1 d0g.cc, 1 d0xq.net, 1 d11cb9nai2skf5.cloudfront.net, 1 -d1arena.com, 1 +d166.net, 1 d1b2k93bahaw3s.cloudfront.net, 1 d1gital.org, 1 d1iwhdc6scsqsn.cloudfront.net, 1 @@ -38521,15 +38703,13 @@ d1zh9ivw96w8wn.cloudfront.net, 1 d2.gg, 1 d21laxujm54z8h.cloudfront.net, 1 d24zgh0u05bzjw.cloudfront.net, 1 -d250.gov, 1 d25n537guac4t4.cloudfront.net, 1 d25sxbgdpzj1st.cloudfront.net, 1 d25vkjbt1xiu01.cloudfront.net, 1 d25x5pqe2jwu0a.cloudfront.net, 1 d2evs.net, 1 d2i06m35fc7thi.cloudfront.net, 1 -d2i28hdolds51o.cloudfront.net, 1 -d2servicios.com, 1 +d2ph.com, 1 d2trade.tk, 1 d2woj1dt0tk6sn.cloudfront.net, 1 d36533.com, 1 @@ -38543,12 +38723,13 @@ d3oe4g2tw01ssi.cloudfront.net, 1 d3ojty55ovjfr5.cloudfront.net, 1 d3rfz9qlehr7mx.cloudfront.net, 1 d3scene.org, 1 -d3un161ynmkt1z.cloudfront.net, 1 d3x.pw, 1 d3xt3r01.tk, 1 d42.no, 1 +d4fx.de, 1 d4insight.com, 1 d4wson.com, 1 +d4x.de, 1 d500world.tk, 1 d5197.co, 1 d58beu28.com, 1 @@ -38560,12 +38741,13 @@ d6729.co, 1 d6957.co, 1 d6c5yfulmsbv6.cloudfront.net, 1 d7031.de, 1 -d774.co.uk, 1 d8.io, 1 d8181.com, 1 d82365.com, 1 +d8814.com, 1 d883vip.com, 1 d884vip.com, 1 +d8859.com, 1 d885vip.com, 1 d886vip.com, 1 d887vip.com, 1 @@ -38580,7 +38762,6 @@ d9297.co, 1 d9397.com, 1 d9728.co, 1 d9and10sports.com, 1 -da-enzo-muenchen.de, 1 da-schaewel.de, 1 da-tex.com.ua, 0 da-tixe.ml, 1 @@ -38619,12 +38800,12 @@ dachdeckerei-hagen.de, 0 dachdeckermeister-egon-weiss.de, 1 dachdeckermeister-moeller.de, 1 dachlaeufer.com, 1 +dachnie-reshenia.ru, 0 dachshundsaspets.com, 1 dachshundtalk.com, 1 daciaclubnederland.nl, 1 daconsult.uk, 1 dacsansach.com, 1 -dacubeking.com, 1 dacxichain.com, 1 dad, 1 dad256.tk, 1 @@ -38661,6 +38842,7 @@ daemon-hentai.tk, 1 daemon.xin, 1 daemons.ml, 1 daemonslayer.net, 1 +daemus.ro, 0 daemwool.ch, 1 daenet.de, 1 daer.cloud, 1 @@ -38673,9 +38855,9 @@ dafe2021.ee, 1 dafengding.com, 1 daffodilcentre.org, 1 daffodilusa.org, 1 +dafmeyda.com, 1 dafont.com, 1 daft.ie, 1 -dafta.sh, 1 dafunda.com, 1 dafuq.xyz, 1 dafyddcrosby.com, 1 @@ -38683,7 +38865,6 @@ dag-berlin.tk, 1 dag-konsult.com, 1 dag-ogni.tk, 1 dagallemaal.be, 1 -dagalypark.hu, 1 daganghalal.com, 1 daganzo.tk, 1 dagensannonser.se, 1 @@ -38704,7 +38885,6 @@ dagrs.se, 1 dagsell.ga, 1 dahaboffers.tk, 1 dahag-status.de, 1 -dahag-test-apps.de, 1 dahag.de, 1 daheimweh.de, 1 dahl-pind.dk, 1 @@ -38723,7 +38903,6 @@ daikoz.com, 1 daikoz.fr, 1 daileyeducationalservices.com, 1 daili.eu, 1 -daily-mints.com, 1 daily-puzzle.tk, 1 daily-solution.pro, 0 daily-sudoku.tk, 1 @@ -38744,7 +38923,6 @@ dailyegyptian.com, 1 dailyfictive.com, 1 dailyfish.ru, 1 dailyforex.com, 1 -dailyfutbol.com, 1 dailyfx.com, 1 dailyhealthylife.ml, 1 dailyhealthylife.tk, 1 @@ -38752,8 +38930,10 @@ dailyhomestore.cl, 1 dailyillini.com, 1 dailyjigsawpuzzles.net, 1 dailykos.com, 1 -dailykosbeta.com, 0 +dailykosbeta.com, 1 +dailyletter.tv, 1 dailylime.kr, 1 +dailylviv.com, 1 dailymedicalinfo.com, 1 dailymotion.com, 1 dailynewsclubs.ga, 1 @@ -38776,14 +38956,11 @@ dailyusbusiness.tk, 1 dailyvpn.com, 1 dailywealth.com, 1 dailywork.ga, 1 +dailyxenang.com, 1 daintonparkgolf.co.uk, 1 dairikab.go.id, 1 dairy.com.sg, 1 dairydata.ie, 1 -dairygold.ie, 1 -dairygoldagri.ie, 1 -dairymaiddairy.com, 1 -dairypure.com, 1 daisidaniels.co.uk, 1 daisuki.pw, 1 daisy-peanut.com, 1 @@ -38802,15 +38979,13 @@ daisystockbridgephotography.com, 1 daiwareal.co.jp, 1 daja.ml, 1 dajaks.tk, 1 -dajaskincare.nl, 0 +dajaskincare.nl, 1 dajiale.org, 1 -dajiav.vip, 1 dajjal.org, 1 dajoose.com, 1 dakcess.net, 1 daken.hu, 1 daki-host.tk, 1 -dakiktabela.com, 1 dakin.nyc, 1 daknam.tk, 1 daknob.net, 1 @@ -38819,22 +38994,18 @@ dakota-spain.tk, 1 dakota911mn.gov, 1 dakotacil.org, 1 dakotaplainscreditunion.com, 1 -dakotasanitation.com, 1 dakotavalleyrecyclingmn.gov, 1 dal-loop.xyz, 1 dal.net.sa, 1 dalagore.com, 1 dalailamafoundation.org, 1 -dalam.web.id, 1 dalb.in, 1 -dalbaffo.se, 1 dalbar.com, 0 dalbarsqm.com, 1 dalbitresb.com, 1 daldropsbb.com, 1 daleanddollops.com, 1 dalecountyal.gov, 1 -dalelionline.com, 1 daleunavueltaalmundo.com, 1 dalevuelta.tk, 1 dalfsennet.nl, 1 @@ -38852,6 +39023,7 @@ dallascaraccidentlawyers.net, 1 dallascourtreporter.com, 1 dallascourtreporters.com, 1 dallascowboys.tk, 1 +dallasdesignco.com, 1 dallasfire.gov, 1 dallaslife.org, 1 dallaslu.com, 1 @@ -38864,19 +39036,20 @@ dallaswater.gov, 1 dallaswestinternational.ga, 1 dallatana.tk, 1 dallatur.com.br, 1 +dallegenerate.art, 1 +dalliard.ch, 1 dallinbryce.com, 1 dallincooper.com, 1 dalliope.com, 1 dallmeier.net, 0 dallydushigrill.com, 0 dalmatians.tk, 1 -dals.co.uk, 1 dalsin.ir, 1 daltoncraven.com, 0 daltonmi.gov, 1 daltonohio.gov, 1 daltons.tk, 1 -dalux.com, 0 +dalux.com, 1 dalycity.gov, 1 damadam.pk, 1 damades.com, 1 @@ -38891,7 +39064,6 @@ dambo.tk, 1 dame.cf, 1 damedrogy.cz, 1 dameeq.cf, 1 -damenmode-kleidung.de, 1 damgoodmedia.com, 1 damhnaitdoyle.com, 1 damianmalrechauffe.tk, 1 @@ -38936,15 +39108,12 @@ dan-saba.com, 1 dan.me.uk, 1 dan124.com, 1 dana-hilliot.tk, 1 +danaandnathan.com, 1 danadameson.tk, 1 danads.com, 1 danalpay.com, 1 danalytics.com.pe, 1 danamica.dk, 1 -danandissy.co.uk, 1 -danandissy.com, 1 -danandissy.love, 1 -danandissy.wedding, 1 danandrum.com, 1 danangcitytours.com, 1 danarozmarin.com, 1 @@ -38959,7 +39128,7 @@ danburyhandcarwash.com, 1 danca.com, 1 dance-colleges.com, 1 dance-school.tk, 1 -dance-showband.de, 1 +dance.nyc, 1 dancechart.tk, 1 dancefm.tk, 1 dancenowportal.com, 1 @@ -38970,7 +39139,6 @@ dancerzone.tk, 1 danceworld.tk, 1 dancingangels.tk, 1 dancingcubs.co.uk, 1 -dancol.org, 1 danddy.eu, 1 dandelikaliadventure.com, 1 dandelion.eu, 1 @@ -38991,6 +39159,7 @@ daneshtools.tk, 1 danfromit.co.uk, 1 danfromit.com, 1 dangarjim.com, 1 +dangeredwolf.com, 1 dangeredwolf.net, 1 dangerscience.com, 1 dangersolutions.com.au, 1 @@ -39009,7 +39178,7 @@ daniel-beilharz.com, 1 daniel-beilharz.de, 1 daniel-cholewa.de, 1 daniel-cox.com, 1 -daniel-ip.com, 1 +daniel-ip.com, 0 daniel-leblanc.tk, 1 daniel-milnes.co.uk, 1 daniel-milnes.uk, 1 @@ -39039,7 +39208,7 @@ danielberanek.cz, 1 danielbotelho.com, 1 danielcardoso.net, 1 danielcolquitt.com, 1 -danieldavies.co.uk, 0 +danieldavies.co.uk, 1 danielderidderfansite.tk, 1 danieldevine.tk, 1 danielduran.tk, 1 @@ -39053,7 +39222,6 @@ danielfisher.com, 1 danielfukuda.com, 1 danielg0.co.uk, 1 danielg0.com, 1 -danielgamrot.cz, 1 danielgil.pt, 1 danielgorr.de, 1 danielgray.email, 1 @@ -39067,11 +39235,13 @@ danielhurley.com, 1 danielhurley.eu, 1 danielhurley.info, 1 danielhurley.org, 1 +danielittlewood.xyz, 1 danielives.co.uk, 1 danielj.tk, 1 danieljamesscott.org, 1 danielkoster.nl, 0 danielle-picchetti.com, 1 +daniellecavazos.com, 1 daniellelazier.com, 1 danielleskosky.com, 1 daniellespringer.tk, 1 @@ -39095,7 +39265,7 @@ danielran.com, 1 danielroelsontwerp.nl, 1 danielrozenberg.com, 1 danielruiz.tk, 1 -danielshealth.com.au, 0 +danielshealth.com.au, 1 danielsixto.com, 1 danielstach.cz, 1 danielstechblog.io, 1 @@ -39103,7 +39273,6 @@ danielstiner.me, 1 danielt.co.uk, 0 danielthompson.info, 1 danieltollot.de, 0 -danieltoth.tech, 1 danielvaduva.tk, 1 danielve.ga, 1 danielverlaan.nl, 1 @@ -39115,11 +39284,11 @@ danielyansweets.am, 1 danielzuzevich.com, 1 danifabi.eu, 1 danilapisarev.com, 1 -daniliants.com, 1 danilov-abrosimov.org.ua, 1 danish-tool.de, 1 danish.cf, 1 danish.events, 1 +danishbytes.club, 1 danishiqbal.tk, 1 danispage.tk, 1 danituuu7.tk, 1 @@ -39135,7 +39304,7 @@ dankojunasevic.tk, 1 danla.nl, 1 danlirette.com, 1 danlockton.tk, 1 -danma.in, 1 +danloona.nl, 1 danmaby.com, 1 danmassarano.com, 1 danminkevitch.com, 0 @@ -39188,15 +39357,13 @@ danslan.org, 1 danslavieyadescactus.ch, 1 danstillman.com, 1 danstoncu.be, 1 -dantaijimu.jp, 1 dantana.de, 1 dante.ms, 1 dantesinferno.tk, 1 danthecloudman.com, 1 dantikap.tk, 1 -dantob.com.au, 1 dantri.com.vn, 1 -danux.co.uk, 0 +danux.co.uk, 1 danvillebikeandfootwear.com, 1 danvillein.gov, 1 danvillevt.gov, 1 @@ -39206,6 +39373,7 @@ danwelty.co, 1 danwelty.me, 1 danwelty.net, 1 danwelty.org, 1 +danwillenberg.com, 1 danwin.de, 1 danwin1210.de, 1 danwise.online, 1 @@ -39223,6 +39391,7 @@ daotaoantoan.org, 1 daoudi.it, 1 dap-systems.de, 1 daphnedietz.com, 1 +daplie.com, 1 dapmalaysia.org, 1 dapoxetinagenerico.cf, 1 dapoxetine.gq, 1 @@ -39230,12 +39399,12 @@ dappgambl.com, 1 daprint.tk, 1 dapss-ut.gov, 1 dapursolo.tk, 1 -dar-agro.com.ua, 1 daracokorilo.com, 1 daralfajr.site, 1 daramad-telegram.ga, 1 daravk.ch, 1 darbgaldi.lv, 1 +darbi.org, 1 darc-mak.de, 1 darc.pro, 1 darci.tech, 1 @@ -39246,14 +39415,13 @@ darcymarshall.com, 1 dare.deals, 1 dare2sell.com.au, 1 darean.ml, 1 +darebioscience.com, 1 daredefydiscover.ca, 1 daredorm.com, 1 -darehousingfoundation.org, 1 darenc.gov, 1 darenet.org, 1 daresay.games, 1 daresaygames.com, 1 -daretodreamintl.org, 1 daretogain.com, 0 darf.nl, 0 darfurwall.org, 1 @@ -39270,7 +39438,6 @@ darioush.com, 0 dariusheghbali.tk, 1 dariusstoica.com, 1 dariusstoica.de, 1 -dariusstoica.ro, 1 darix.tk, 1 dark-ages.tk, 1 dark-crystal.tk, 1 @@ -39279,6 +39446,7 @@ dark-infection.de, 1 dark-lake.com, 0 dark-legion.tk, 1 dark-manga.com, 1 +dark-nova.me, 1 dark-nova.tk, 1 dark-programs.com, 1 dark-vision.cz, 1 @@ -39287,7 +39455,6 @@ dark.direct, 1 dark.fail, 1 darkacek.cz, 1 darkag.ovh, 1 -darkainleather.com, 1 darkartstudios.tk, 1 darkbeam.com, 1 darkbit.gr, 1 @@ -39303,6 +39470,7 @@ darkengine.io, 1 darkengine.net, 1 darkenluster.space, 1 darkerlystormy.com, 0 +darkersideofmusic.com, 0 darkerstormy.com, 0 darkestproductions.net, 1 darkfeeling.tk, 1 @@ -39313,13 +39481,13 @@ darkforceofhappiness.tk, 1 darkgames.cf, 1 darkgrid.eu, 1 darkhall.tk, 1 -darkhelm.org, 1 darkhuntersworld.tk, 1 darkinvasion.tk, 1 darkishgreen.com, 1 darkkeepers.tk, 1 darklang.com, 1 darklaunch.com, 1 +darkleia.com, 1 darklite.ml, 1 darklybasic.com, 0 darkmail.cf, 1 @@ -39334,7 +39502,6 @@ darknessflickers.com, 0 darknessinme.tk, 1 darkoctoberseance.com, 1 darkoff.tk, 1 -darkorp.dk, 1 darkotip.tk, 1 darkovepredmety.cz, 1 darkpassionsite.tk, 1 @@ -39355,6 +39522,7 @@ darksignsgame.tk, 1 darksilver.nl, 1 darkskymap.com, 1 darkskymd.org, 1 +darksoilcbd.com, 1 darksonic.tk, 1 darkspacelab.com, 1 darkspike.tk, 1 @@ -39363,7 +39531,7 @@ darksystems.tk, 1 darktechnology.tk, 1 darktide.tk, 1 darktime.ru, 1 -darkvod.com, 1 +darkwater.info, 0 darkwater.tk, 1 darkweb.wtf, 1 darkwebkittens.xyz, 0 @@ -39375,10 +39543,8 @@ darlenenbocek.com, 1 darlington.tk, 1 darlingtonia.nl, 1 darlingtonwi.gov, 1 -darmoweporady.pl, 1 darmowy-tarot.pl, 1 darnashop.fr, 1 -darngoodflooring.com, 1 darom.jp, 1 darosen.de, 1 darosen.eu, 1 @@ -39387,7 +39553,6 @@ darren.to, 1 darrenflemingphotography.co.uk, 1 darrenlines.uk, 1 darrenm.net, 1 -darrentoh.ai, 1 darrouzettisd.gov, 1 dart-tanke.com, 1 dart-tanke.de, 1 @@ -39424,11 +39589,12 @@ das-clanpage.tk, 1 das-e-rezept-fuer-deutschland.de, 1 das-efx.tk, 1 das-forum24.de, 1 +das-kobers.de, 1 das-mediale-haus.de, 1 das-sommercamp.de, 1 dasabomobil.de, 1 dasads.de, 1 -dasbaum.ch, 1 +dasble.com, 1 dascan.com.br, 1 dasdanny.de, 1 daseinsfreu.de, 1 @@ -39455,11 +39621,13 @@ dasignsource.com, 1 dasinternetluegt.at, 1 daskirschhaus.com, 1 dasler.eu, 1 +dasmailarchiv.ch, 1 dasolindustrialpark.tk, 1 dastchin.live, 1 dastelefonbuch.de, 1 dastihawkary.org, 1 dastomize.com, 1 +dasug.de, 1 data-access-point.com, 1 data-analysis.tokyo, 1 data-bot.xyz, 1 @@ -39471,12 +39639,12 @@ data-jt.de, 1 data-loader.com, 1 data-mail.tk, 1 data-mining.co.uk, 1 +data-mirror-72f6ffc87917.herokuapp.com, 1 data-mirror.org, 1 data-privacy.tk, 1 data-reader.de, 1 data-replicator.cloud, 1 data-replicator.com, 1 -data-sentinel.com, 1 data-servers.com, 1 data-wing.ga, 0 data.gov, 1 @@ -39499,11 +39667,13 @@ databeam.de, 0 databiz.co, 1 databiz.ga, 1 datablender.nl, 1 -databridge360.com, 0 +databridge360.com, 1 databutlr.com, 1 +databutlr.net, 1 datacad.com, 1 datacalle.com, 1 datacandy.com, 0 +datacaptive.com, 1 datacave.is, 1 datacenter-online.com, 1 datacenter.news, 1 @@ -39512,7 +39682,7 @@ datacenternews.asia, 1 datacenternews.ca, 1 datacenternews.co.nz, 1 datacenternews.us, 1 -datacentrenews.ie, 1 +datacenterunited.com, 1 datacentrenews.in, 1 datacentrenews.uk, 1 datacentresupport.com, 1 @@ -39530,7 +39700,7 @@ datacomm.com, 1 datacommissioner.gov.au, 0 datacomp.sk, 1 datacool.tk, 1 -datacorp.fr, 0 +datacorp.fr, 1 datadefendersforum.com, 1 datadoghq.com, 1 datadorf.de, 1 @@ -39550,11 +39720,11 @@ datahaus.construction, 1 datahove.no, 1 datainvest.ai, 1 datainvest.pl, 1 +datajournalism.com, 1 datakick.org, 1 datakl.com, 1 datalife.gr, 1 datalift.io, 0 -datalilyai.com, 0 datalink.ky, 1 datalinx.fr, 1 dataloft.tk, 1 @@ -39568,6 +39738,7 @@ datamationgroup.com, 1 datamish.com, 1 datamotion.com, 1 datanaka.com, 1 +datanetusa.com, 1 datapiped.com, 1 dataprisma.com.br, 1 dataprivacyframework.gov, 1 @@ -39595,8 +39766,7 @@ datasmart.ca, 1 datasourcenj.org, 1 dataspace-connector.io, 1 dataspace.pl, 1 -datastack.design, 0 -datastar.net, 1 +datastack.design, 1 datastream.org, 1 datastream.re, 0 datastudio.google.com, 1 @@ -39623,7 +39793,6 @@ datawarehouseinfo.com, 1 dataweeknl.nl, 1 datax-cloud.de, 1 dataxl.net, 1 -datayoyo.fr, 1 datazoo.asia, 1 datazoo.com, 1 date-conference.com, 1 @@ -39667,7 +39836,6 @@ datenwort.at, 1 datera-solutions.de, 1 dateranker.nl, 1 datessrit.tk, 1 -datex.live, 1 dating-site-rating.co.uk, 1 dating.wedding, 1 datingadvice.gq, 1 @@ -39693,10 +39861,9 @@ datn-x.de, 1 datnenhamiltongarden.com, 1 datorb.com, 1 datorhjalpen.link, 1 +datorhjalptaby.se, 1 datos-quimsaitw.es, 1 datosfreak.tk, 1 -datost.ai, 1 -datost.com, 1 datovy-portal.cz, 1 datovy-portal.sk, 1 datovyaudit.cz, 1 @@ -39743,10 +39910,12 @@ davecarpenterbooks.com, 1 davecloud.fr, 1 davedavlin.com, 1 daveedave.de, 0 +davegebler.com, 1 davelucia.com, 1 davematthias.com, 1 davemusic.tk, 1 davenportok.gov, 1 +daveoc64.co.uk, 1 davepearce.com, 1 davepullig.co.uk, 1 daveredfern.com, 1 @@ -39772,6 +39941,7 @@ david-osipov.me, 1 david-osipov.vision, 1 david-pearce.com, 1 david-reess.de, 1 +david-schiffmann.de, 1 david.kitchen, 1 davidalbert.me, 1 davidandersson.se, 1 @@ -39795,21 +39965,25 @@ davideonlain.tk, 1 davidepalma.it, 1 davidereinato.tk, 1 davidetmagali.fr, 1 +davidevansforsenate.com, 1 davidfarland.com, 1 davidforward.net, 1 davidg.cc, 1 davidgarymorrison.com, 0 davidgarza.me, 1 +davidgouveia.net, 1 davidgreig.uk, 1 davidgroup.co.id, 1 davidgroup.org, 1 davidgrudl.com, 1 davidhastingseckerd.com, 0 davidheineman.net, 1 +davidho.org, 1 davidhurl.net, 1 davidinteriors.tk, 1 davidje13.com, 1 davidjktofan.com, 1 +davidjohnstoncfo.com, 0 davidjusto.com, 1 davidkatz.tk, 1 davidkeane.com, 0 @@ -39828,6 +40002,7 @@ davidlyness.com, 1 davidmanouchehri.com, 1 davidmessenger.co.uk, 1 davidmgarvin.com, 1 +davidmirandamd.com, 0 davidmlujan.com, 1 davidmyers.org, 1 davidn.cz, 1 @@ -39873,12 +40048,12 @@ davidzeegers.nl, 1 davidzelenka.cz, 1 davidzimmerman3.com, 1 davie3.com, 1 +daviesscountyhistoricalsociety.com, 1 daviesscountyin.gov, 1 daviesscountyinsheriff.gov, 1 davimun.org, 1 davinamccall.tk, 1 davinci.guide, 1 -davinciproject.art, 1 davinciwaldorfschool.org, 1 davisboroga.gov, 1 daviscountyelectionsutah.gov, 1 @@ -39890,8 +40065,7 @@ davison.tech, 1 davisontwp-mi.gov, 1 davisrentacar.ro, 1 davisvision.com, 1 -davmany.freeboxos.fr, 1 -davodi.hu, 1 +davmimer-mercerie.ro, 1 davorin.cf, 1 davosalestax.com, 1 davros.eu, 1 @@ -39904,12 +40078,11 @@ davyjonesatacado.com.br, 1 davypropper.com, 1 dawaai.pk, 1 daware.io, 1 -dawei.help, 1 +dawdle.space, 1 dawg.eu, 1 dawgs.ga, 1 dawidpotocki.com, 1 dawidwrobel.com, 1 -dawn0.com, 1 dawnbringer.eu, 1 dawnbringer.net, 1 dawnbyte.ch, 1 @@ -39920,6 +40093,7 @@ dawnson.is, 1 dawnzine.com, 1 dawonmedax.com, 1 dawprogram.org, 1 +dawrimiz.com, 1 dawson-floridavilla.co.uk, 1 dawsoncountyga.gov, 1 dawsoncountyne.gov, 1 @@ -39940,7 +40114,6 @@ day, 1 day.marketing, 1 dayachts.com, 1 dayagainstdrm.org, 1 -dayasgames.com, 1 daybreaklearning.com.au, 1 daybuy.tw, 1 daycomtech.com, 1 @@ -39949,7 +40122,6 @@ daycubrem.com, 1 daydream.is, 1 daydream.team, 1 dayesh.tk, 1 -dayfloorcoveringinstallation.com, 1 daygametraining.com, 1 daylafit.com, 1 daylightpirates.org, 1 @@ -39970,15 +40142,15 @@ dayswithnostabbings.ca, 1 daytonabeach.gov, 1 daytonahealthsolutions.com, 1 daytonaparadise.tk, 1 -dayuse-hotels.it, 0 -dayuse.co.uk, 0 -dayuse.com, 0 -dayuse.com.hk, 0 -dayuse.cz, 0 -dayuse.de, 0 -dayuse.es, 0 -dayuse.fr, 0 -dayuse.se, 0 +dayuse-hotels.it, 1 +dayuse.co.uk, 1 +dayuse.com, 1 +dayuse.com.hk, 1 +dayuse.cz, 1 +dayuse.de, 1 +dayuse.es, 1 +dayuse.fr, 1 +dayuse.se, 1 dayvillefire.gov, 1 daywind.com, 1 daywindmusicgroup.com, 1 @@ -39986,7 +40158,6 @@ daywindrecordingstudio.com, 1 daywindrecords.com, 1 daywindworship.com, 1 dayz.com, 1 -dazrik.com, 1 dazz.io, 1 dazzit.xyz, 1 dazzledrive.tk, 1 @@ -39998,7 +40169,6 @@ db-sanity.com, 1 db-works.nl, 1 db.ci, 1 db3archi.com, 1 -dbaasp.org, 1 dbapress.org, 1 dbaron.org, 1 dbas.cz, 1 @@ -40013,7 +40183,8 @@ dbeilharz.com, 1 dbeilharz.de, 1 dbeilharz.eu, 1 dbentertainment.co.uk, 1 -dbfopraga-pn.waw.pl, 0 +dbeta.co.uk, 1 +dbfopraga-pn.waw.pl, 1 dbgames.info, 1 dbhome.org, 1 dbhouse.tk, 1 @@ -40023,7 +40194,6 @@ dbinderbilling.com, 1 dbjc.tk, 1 dbjg.com, 1 dbkc.nl, 1 -dbl-action.com, 1 dblabsite.net, 1 dblcastles.co.uk, 1 dbldub.net, 1 @@ -40068,7 +40238,6 @@ dc-zone.com, 1 dc7342.im, 1 dcache.org, 1 dcain.me, 1 -dcalculator.net, 1 dcard.tw, 1 dcards.in.th, 1 dcareer.tk, 1 @@ -40107,7 +40276,6 @@ dcmeventmanagement.com, 1 dcmt.co, 1 dcnews.jp, 1 dco.sg, 1 -dcod.ch, 1 dcparts.com.br, 1 dcpf.online, 1 dcpower.eu, 1 @@ -40130,6 +40298,7 @@ dd-groupinc.com, 1 dd.art.pl, 1 dd.center, 1 dd.team, 1 +dd202d.com, 1 dd207d.com, 1 dd214.gov, 1 dd215d.com, 1 @@ -40144,10 +40313,10 @@ dd9728.co, 1 dda.gov.ae, 1 ddai.nl, 1 ddatsh.com, 0 -dday.io, 1 ddayantics.xyz, 1 ddays2008.org, 1 ddbservices.co.uk, 1 +ddcakedeliveryservice.co.uk, 1 dddd.loan, 1 ddduk.org, 1 ddeaejwa.ml, 1 @@ -40199,10 +40368,8 @@ de-ooyevaar.nl, 1 de-osopanda.com, 1 de-penaranda.be, 1 de-pot.net, 1 -de-sa.com.tr, 1 de-servers.de, 1 de-spil.be, 1 -de-wikipedia.com, 1 de.gt, 1 de.ls, 1 de.md, 1 @@ -40210,7 +40377,6 @@ de.search.yahoo.com, 0 de.sk, 1 de.vg, 1 dea.gov, 1 -deaconapparel.com, 1 dead-letter.email, 1 dead-parrot.de, 1 deadbeef.ninja, 1 @@ -40254,10 +40420,8 @@ dealectronic.com, 1 dealernet.com.br, 1 dealerselectric.com, 1 dealerwriter.com, 1 -dealerxpert.com.br, 1 dealflowpro.io, 1 dealha.com, 1 -dealhabibi.com, 1 dealinflatables.co.uk, 1 dealjumbo.com, 1 deallix.com, 1 @@ -40270,7 +40434,7 @@ dealsfromheaven.com, 1 dealsinaz.com, 1 dealsmagnet.com, 1 dealsomart.com, 1 -dealspotr.com, 0 +dealspotr.com, 1 dealstreet.fr, 1 dealzme.com, 1 deamonmail.tk, 1 @@ -40279,8 +40443,6 @@ deanandnatalia.co.za, 1 deanbank.com, 1 deanconsultancy.co.uk, 1 deano-s.co.uk, 1 -deanprice.com, 1 -deansdairy.com, 1 deanvending.com, 1 deanwest.com, 1 dear-children.ga, 1 @@ -40290,10 +40452,10 @@ dearbornheightsmi.gov, 1 dearburma.com, 1 dearfrannypodcast.com, 1 dearktiel.nl, 1 -dearpeople.eu, 1 deasserstadsloop.nl, 1 deasy-store.com, 1 death-notices.co.uk, 1 +death.ceo, 1 death.social, 1 deathberry.ddns.net, 1 deathbits.com, 1 @@ -40313,8 +40475,11 @@ deautismespecialist.nl, 1 deavel.com, 1 deavel.fr, 1 deavel.net, 1 +deavita.fr, 1 +deavita.net, 1 deavon.tk, 1 debacker.biz, 1 +debarbas.com, 1 debarkader34.tk, 1 debarras-diogene.paris, 1 debarrasantony.com, 1 @@ -40333,13 +40498,13 @@ debats.tk, 1 debattinnlegg.no, 1 debatyun.jp, 0 debauchery.ml, 1 +debbiesblog.nl, 1 debbiessieraden.tk, 1 debedstedanskecasinoer.dk, 1 debeer.tech, 1 debelareabogados.es, 0 debelbaum.com, 1 debelicd.tk, 1 -deberranger.com, 1 debesiukas.lt, 1 debewaker.tk, 1 debian-hell.org, 1 @@ -40357,18 +40522,16 @@ deboekaniers.be, 1 deboo.info, 1 debora-singkreis.de, 1 deborahkaty.tk, 1 -debosschespoorzone.nl, 1 +deborahmarinelli.eu, 1 debostero.tk, 1 deboutpourlemali.ml, 1 debra-cz.org, 1 debra-sa.com, 1 debraj.in, 1 -debranddenbosch.nl, 1 debraschilling.de, 1 debrasclassiccleaning.com, 1 debraydesign.com.au, 1 debricked.com, 1 -debrid-downloader.com, 1 debridleech.com, 1 debrunet.nl, 1 debruns.ie, 1 @@ -40393,8 +40556,7 @@ decadentdvices.com, 1 decagames.com, 1 decal-times.com, 1 decalquai.ch, 0 -decamidea.it, 1 -decanthouse.com, 1 +decamidea.it, 0 decathlon.ca, 1 decathlon.co.il, 1 decathlon.com.co, 1 @@ -40410,6 +40572,7 @@ decaturcountytn.gov, 1 decaturian.com, 1 decaturish.com, 0 deccanvalue.com, 1 +deceasedonline.com, 1 decentrala.org, 1 dechat.nl, 1 decherdtn.gov, 1 @@ -40431,16 +40594,13 @@ decisivetactics.com, 1 deciso.eu, 1 decisora.com, 1 decizzy.com, 1 -deckconnect.me, 1 deckerammo.com, 1 deckerville-mi.gov, 1 deckfix.co.nz, 1 deckingwollongong.com, 1 deckshop.pro, 1 declarando.es, 1 -declaration250.gov, 1 declarativ.ga, 1 -declarpro.fr, 1 declivitas.com, 1 declutteringmymess.com, 1 deco.tax, 1 @@ -40448,9 +40608,8 @@ decoating.pl, 1 decock-usedcars.be, 1 decode.ga, 1 decodeanddestroy.com, 1 -decodeit.nz, 1 decoder.eu.org, 1 -decodiverse.com, 1 +decokeuken.nl, 1 decombejean.fr, 1 decompression.tk, 1 decompressneuroma.com, 1 @@ -40486,6 +40645,7 @@ decotrend.ro, 1 decoyoctopus.tk, 1 decrousaz-ceramique.ch, 0 decrypt.co, 1 +decrypto.net, 1 decs.es, 1 decstasy.de, 1 decsys.work, 1 @@ -40504,9 +40664,11 @@ dedmoroz.ga, 1 dedmoroz.gq, 1 dedmorozrzn.ru, 0 dedoho.pw, 1 +dedoles.at, 1 dedoles.cz, 1 dedoles.hu, 1 dedoles.pl, 1 +dedoles.sk, 1 dedurpsidioten.tk, 1 dedyk.gq, 1 dee.pe, 1 @@ -40518,6 +40680,7 @@ deegeeinflatables.co.uk, 1 deejayladen.de, 1 deejayz.tk, 1 deelauto.club, 1 +deelmee.nl, 1 deelmijnreis.nl, 1 deelodge.art, 0 deeltaxi-regioshertogenbosch.nl, 1 @@ -40536,9 +40699,9 @@ deepchirp.com, 1 deepcloud.swiss, 1 deepgame.tk, 1 deepgrade.in, 1 -deepharbor.vc, 1 deephill.com, 1 deephue.studio, 1 +deepid.com, 1 deepinsight.io, 0 deepl.com, 1 deepmountains.tk, 1 @@ -40559,7 +40722,6 @@ deepu-mathew.tk, 1 deepumathew.tk, 1 deepvalley.tech, 1 deepwoodshop.com, 1 -deerf0x.com, 1 deerfieldbeachhistoricalsociety.com, 0 deerfieldknoll.com, 1 deeringnh.gov, 1 @@ -40574,7 +40736,6 @@ defcon.org, 1 defcon.social, 1 defcongame.tk, 1 defectivebydesign.org, 1 -defectradar.com, 1 defeestboek.nl, 1 defeestridders.tk, 1 defelo.de, 1 @@ -40615,7 +40776,6 @@ defispot.com, 1 defistablecoin.ai, 1 defkey.com, 1 deflumeriker.com, 1 -defmarks.com, 1 defme.eu, 1 defont.nl, 1 defreitas.no, 1 @@ -40660,13 +40820,10 @@ degreeducation.tk, 1 degreeverify.com, 1 degreeverify.net, 1 degreeverify.org, 1 -degressif.com, 1 -degroenedelta.com, 1 degroetenvanrosaline.nl, 1 degrootenslot.nl, 0 -degrootevlietdenbosch.nl, 1 degroupnews.com, 1 -degruchy.org, 1 +degruchy.org, 0 deguisements-couple.fr, 1 deguisements-gonflables.fr, 1 degustavending.es, 1 @@ -40677,9 +40834,8 @@ dehkade3.ml, 1 dehoga-reisen.de, 1 dehopre.com, 1 dehumanizer.com, 1 -dehuystandarts.nl, 0 +dehuystandarts.nl, 1 dehydrated.io, 1 -dei.gov, 1 deiaprint.com, 1 deidee.nl, 1 deified.uk, 1 @@ -40691,7 +40847,7 @@ dein.mx, 1 deinballon.de, 1 deindeal.ch, 1 deindustry.com, 1 -deineagentur.de, 0 +deineagentur.de, 1 deinelakaien.tk, 1 deinestrainreviews.de, 1 deinewebsite.de, 1 @@ -40701,6 +40857,7 @@ deinsparen24.de, 1 deinupdate.de, 1 deionized.ga, 1 deitec-global.com, 1 +deitte.com, 1 deitti.net, 1 deja-lu.de, 1 dejandayoff.com, 1 @@ -40724,6 +40881,7 @@ dekas.link, 1 dekasegi-kansai.com, 1 dekbedden.nl, 1 dekel.co.il, 1 +dekesharon.com, 1 dekeurslagers.nl, 1 dekhanyalcalde.com, 1 dekinai.moe, 1 @@ -40756,17 +40914,16 @@ delavska-hranilnica.si, 1 delavska.si, 1 delawarehealth.tk, 1 delawarenation-nsn.gov, 1 -delawaresolarinitiative.com, 1 delawaretitlesearch.com, 1 delawaretwpmi.gov, 1 delay-dengi.cf, 1 delaydengy.tk, 1 delaysoft.tk, 1 +delbridge.solutions, 1 delcan.ga, 1 delcan.gq, 1 delcan.ml, 1 delcity.gov, 1 -delcop.com, 1 delcopa.gov, 1 delcopalandbank.gov, 1 deldadegan.tk, 1 @@ -40779,6 +40936,7 @@ delemont.ch, 1 delete.cf, 1 deletebin.com, 1 deletebin.org, 1 +deletecat.com, 1 delfi.ee, 1 delfi.lt, 1 delfi.net, 1 @@ -40800,6 +40958,7 @@ delicale.com.br, 1 delici.art.br, 1 deliciascomercial.com, 1 deliciaskitchen.com, 1 +delicious-audio.com, 1 delicious.gq, 1 deliciousmedia.co.uk, 1 deliciousmedia.net, 1 @@ -40810,6 +40969,7 @@ delika.io, 1 delikom.de, 1 delindeoirlo.nl, 1 delio.tk, 1 +deliqs.com, 1 deliride.com, 1 delirio.tk, 1 delistudio.cf, 1 @@ -40842,7 +41002,6 @@ delphibasics.tk, 1 delphiday.it, 1 delphij.net, 1 delphinarabic.tk, 1 -delphine-maurin-architecte.fr, 1 delphine.dance, 1 delphinewong.com, 1 delpilarrungue.cl, 1 @@ -40859,7 +41018,6 @@ delta-elektronika.nl, 1 delta-games.tk, 1 delta-hawks.tk, 1 delta-host.ml, 1 -delta-inmatriculari.ro, 1 delta-market.ru, 1 delta.ai, 1 delta.games, 1 @@ -40877,7 +41035,6 @@ deltadentalsc.com, 1 deltadigital.gr, 1 deltaevus.com.br, 1 deltafm.tk, 1 -deltainmatriculari.ro, 1 deltalight.com, 1 deltaloja.com.br, 1 deltamusik.tk, 1 @@ -40887,8 +41044,10 @@ deltaonlineguards.com, 1 deltaphiepsilon.tk, 1 deltaprise-events.de, 1 deltarisk.com, 0 +deltasec.nl, 1 deltaserat.tk, 1 deltaservers.com.br, 1 +deltasigmachi.org, 1 deltasigmaxi1971.tk, 1 deltasuprimentos.com.br, 1 deltav.ml, 1 @@ -40910,10 +41069,10 @@ deluxetransfers.co.uk, 1 delvinoadegas.com.br, 1 delycate.com, 1 delycate.fr, 1 -delyfrut.cl, 1 delzottolink.com, 1 demaison.pro, 1 demakkelijkevegan.nl, 1 +demandcaster.com, 1 demander.tk, 1 demandmatrix.com, 1 demannen.tk, 1 @@ -40922,8 +41081,6 @@ demcon-bunova.com, 1 demcon-bunova.nl, 1 demcon-industrial.com, 1 demcon-industrial.nl, 1 -demcon-multiphysics.de, 1 -demcon-unmanned.nl, 1 demcra.com, 0 demedx.at, 1 demenagement-chalon.fr, 1 @@ -40964,6 +41121,7 @@ democracy.cf, 1 democracyfund.org, 1 democracyineurope.eu, 1 democracylive.com, 1 +democrata.es, 1 democratherald.com, 1 democratie.tk, 1 democraziaineuropa.eu, 1 @@ -40991,6 +41149,7 @@ demonwolfdev.com, 1 demopanel.tk, 1 demorgen.be, 1 demoserver4.net, 1 +demosphere.com, 1 demostweb.ga, 1 demotivatorbi.ru, 1 demotour.cz, 1 @@ -41005,6 +41164,7 @@ demuzere.org, 1 demxausa.com, 1 demyst.com, 1 den-fi.com, 1 +den.vc, 1 denabot.pw, 1 denachtegaalferwert.tk, 1 denaehula.com, 1 @@ -41012,13 +41172,12 @@ denali.net, 1 denarium.com, 1 denatured.tk, 1 denbar.org, 1 -denbosch-ontwikkelen.nl, 1 denboschdataweek.nl, 1 -denboschinontwikkeling.nl, 1 denboschtimemachine.eu, 1 denboschtimemachine.nl, 1 dencel.lv, 1 denchik.tk, 1 +dencore.eu, 1 dendi.tk, 1 dendibanget.tk, 1 dendionigi.com, 1 @@ -41062,6 +41221,7 @@ denistruffaut.fr, 0 denisyakovlev.ga, 1 denisyakovlev.ml, 1 denisyan.ml, 1 +deniszczuk.pl, 0 denito.bg, 1 deniz.uk, 1 denizdesign.co.uk, 1 @@ -41084,9 +41244,8 @@ denni-tisk.cz, 1 denniksport.sk, 1 denninger.jp, 1 denningny.gov, 1 -dennino.gr, 1 dennis-carpenter.com, 1 -dennis.reisen, 1 +dennis50jaar.nl, 1 dennisang.com, 1 denniscsl.com, 1 dennisdgr.ddns.net, 1 @@ -41145,13 +41304,11 @@ dentista.roma.it, 1 dentistabarbarajaqueline.com.br, 1 dentistalagoasanta.com.br, 1 dentisteliege.be, 1 -dentistnorthmelbourne.com.au, 1 -dentistree.in.ua, 1 +dentistesdarveauetrioux.com, 1 dentistsgainesvillega.com, 1 dentistslilburnga.com, 1 dentoncounty.gov, 1 dentoncountysheriffjobs.gov, 1 -dentondynamics.co.uk, 1 dentonolab.lt, 1 dentrassi.de, 1 dentrecovery.com, 1 @@ -41162,6 +41319,7 @@ denugka-vezde.gq, 1 denugka-vezde.tk, 1 denunzieren.tk, 1 denver-design.cf, 1 +denver.show, 1 denver.tk, 1 denver7.com, 1 denverautoinsurancecompany.com, 0 @@ -41188,16 +41346,18 @@ deooyevaar.de, 1 deooyevaar.es, 1 deooyevaar.fr, 1 deooyevaar.nl, 1 -deoperator.nl, 1 deoremann.com, 0 deovergangendan.nl, 1 depaco.com, 1 depagecms.net, 1 +depannage-traceur.fr, 1 depapboeren.tk, 1 +departamentosenventaentulum.com, 1 departamentoslosolivos.tk, 1 departmentofdefense.tk, 1 departmentofoncology.com, 1 departureboard.io, 1 +depaul-edu.org, 1 depaulmanorestate.com.au, 1 depay.com, 1 depay.fi, 1 @@ -41219,9 +41379,9 @@ dependableseniorcare.com, 1 dependonplus.com, 1 deperewi.gov, 1 dephoro.com, 1 +depici.com, 1 depicus.com, 1 depijp.tk, 1 -depilacionmasculina.ch, 1 depilazione.roma.it, 1 depistage-bejune.ch, 0 depleteduranium.tk, 1 @@ -41250,7 +41410,6 @@ depositart.com, 1 depositi.it, 1 deposition.com, 1 depositionreporters.com, 1 -depositionresources.com, 1 deposito.it, 1 depositomerci.it, 1 depositomobili.it, 1 @@ -41269,13 +41428,15 @@ deprobe.pro, 1 deprofundis.tk, 1 deps.co, 1 deps.com.br, 1 -dept56ers.com, 1 depthsofdepravity.tk, 1 depuberteit.tk, 1 depuratore.it, 1 deqa-vet.de, 1 +deque.com, 1 der-bank-blog.de, 1 der-beste-schumpeter-vortrag.de, 1 +der-elite.blog, 1 +der-gardinenmann.de, 1 der-niedergelassene-arzt.de, 1 der-rohrstock.club, 1 der-umzugsprofi.com, 1 @@ -41289,6 +41450,7 @@ deratisation.paris, 1 deratisationidf.com, 1 deratisationparis-75.com, 1 derattizzare.it, 1 +derattizzazione.name, 1 derattizzazioni.biz, 1 derattizzazioni.it, 1 derattizzazioni.milano.it, 1 @@ -41301,6 +41463,7 @@ derbymoneyman.com, 1 derbyshire-language-scheme.co.uk, 1 derchris.me, 1 derdevel.de, 1 +derdewereldrommelmarkt.nl, 1 derechosanimales.tk, 1 dereddingsklos.nl, 1 dereferenced.net, 1 @@ -41316,14 +41479,11 @@ dergon.club, 1 derguns.town, 1 derhaeuptling.de, 0 derhil.de, 1 -deria.it, 1 -deriaclean.it, 1 deriheruhotel.com, 1 derinforge.com, 1 derinforge.com.au, 1 derinsular.tk, 1 derivative-calculator.net, 1 -derivatives.com.au, 1 derivativeshub.pro, 1 derive.cf, 1 derkach.io, 1 @@ -41344,7 +41504,7 @@ dermatologyandlasergroup.com, 1 dermax.tk, 1 dermedia.tk, 1 dermediq.nl, 1 -dermko.cz, 0 +dermko.cz, 1 dermnet.ai, 1 dermody.ga, 1 dermopigmentista.it, 1 @@ -41354,15 +41514,13 @@ dermsf.com, 1 dermu.ai, 1 deroo.org, 1 deroo.tk, 1 -derosmalenseplasdenbosch.nl, 1 derp.army, 1 +derp.chat, 1 derpibooru.org, 1 derpicdn.net, 1 derpy.pp.ua, 1 -derpynerd.xyz, 1 derre.fr, 1 derreichesack.com, 1 -derrickvoice.io, 1 derricofinancialservices.com, 0 derrigimlaghtokylemoregreenway.ie, 1 derriteice.com, 1 @@ -41381,18 +41539,17 @@ derw.pw, 1 derwaldschrat.net, 1 derze.cloud, 1 des-hommes-et-des-clous.com, 1 +desacanggu.id, 1 desafiomovilidadsustentable.com, 1 desagaz.com, 1 desakatorock.tk, 1 desalas.org, 1 desapego.com.br, 1 desarrollamosweb.com, 1 -desarrollo-gl.space, 1 desarrollosintecsa.com, 1 descargapormega.ml, 1 descobrim.com, 1 desconfiats.tk, 1 -desconteira.com.br, 1 descopera.ro, 1 descubre.ml, 1 descuentomi.es, 1 @@ -41401,7 +41558,6 @@ desecsecurity.com, 1 deseks.dk, 1 deseneonline.tk, 1 desensitized.tk, 1 -desenvolvedor.org, 1 desenvolvimentolocalvfa.com.br, 1 deseosvip.tk, 1 desergo.com, 0 @@ -41410,10 +41566,10 @@ desert.cf, 1 desertbloomplasticsurgery.com, 0 desertbloomskincare.com, 1 desertdogtechnology.com, 1 -desertfade.eu, 1 desertfiredesigns.com, 1 desertfury.tk, 1 desertgrove.com, 1 +desertheroesteam.com, 1 deserti.tk, 1 desertlinealuminium.com, 1 desertlinegroup.com, 1 @@ -41428,9 +41584,9 @@ desguacesdecamiones.es, 1 deshalb.de, 1 deshevle-net.com, 1 deshobi.cloud, 1 +desic-sl.com, 1 desiderantes.tk, 1 desideriushogeschool.be, 1 -design-dein-ding.ch, 1 design-n-art.tk, 1 design-netzwerk.eu, 1 design-production.jp, 1 @@ -41452,6 +41608,7 @@ designbymargot.fr, 1 designbymargot.pro, 1 designcafe.com, 1 designcanada.com, 1 +designceramika.pl, 1 designcrowd.biz, 1 designcrowd.ca, 1 designcrowd.co.uk, 1 @@ -41508,8 +41665,9 @@ desireeburch.net, 1 desirememory.cf, 1 desirenet.ro, 1 desish.cf, 1 -desitales2.com, 1 +desitorrents.tv, 1 desivideos.tk, 1 +desk-mode.com, 1 deskaservices.com, 0 deskdesign.nl, 1 deskeen.fr, 1 @@ -41540,10 +41698,10 @@ desportvriendenoverijse.tk, 1 despotika.de, 1 desriresdesjeux.com, 1 desserteagleselvenar.tk, 1 +dessinbtp.com, 1 dessinemoilademocratie.ch, 0 desstrade.com, 1 dest-gottskar-nidingen.se, 1 -destan.bg, 1 destcyr.com, 1 destech.nl, 1 desteconsilium.be, 1 @@ -41552,6 +41710,7 @@ destentor.nl, 1 desterman.ru, 1 desterrada.tk, 1 destguides.com, 1 +destileria.net.br, 1 destilteomarmd.be, 1 destinflow.com, 1 destinia.us, 1 @@ -41576,11 +41735,12 @@ destruction-frelon-asiatique.com, 1 destruction-guepes.com, 1 destructive-revolution.tk, 1 destructoradepapel.com.es, 1 -destruye.es, 1 destudio.org.ua, 1 destyntek.com, 1 desu.ne.jp, 1 +desuchan.eu, 1 desuchan.org, 1 +desucla.com, 1 desvan.tk, 1 deswaffelaars.tk, 1 desy.tk, 1 @@ -41593,26 +41753,28 @@ detailedimage.com, 1 detalika.ru, 1 detao.org, 1 detc.tk, 1 +detceptam.com, 1 detdom.tk, 1 detect-fuite-charente.fr, 1 detecte-fuite.ch, 0 detecte.ch, 0 detectefuite.ch, 0 +detectify.com, 1 detection-canine-punaise-paris.com, 1 detectro.cc, 1 deteken.be, 1 detekenmuze.nl, 1 detektivskaagencija.com, 1 -detektywtd24.pl, 1 +detektywtd24.pl, 0 determapp.de, 1 determinatie.tk, 1 -detexpert.ro, 1 -detfagligehus.dk, 0 +detfagligehus.dk, 1 dethemium.com, 1 deti.ga, 1 detiks.cf, 1 detishki.ga, 1 detki.cf, 1 +detki24.ru, 0 detodo24.com, 1 detoekomstvanorganisaties.nl, 1 detoxtorehab.com, 1 @@ -41631,7 +41793,6 @@ detroitsportbikes.com, 1 detroitzoo.org, 1 detsad.ml, 1 detsad.tk, 1 -detska-boticka.cz, 1 detski.center, 1 detskie-avto-kresla.tk, 1 detuinmuze.nl, 1 @@ -41669,15 +41830,12 @@ dev-academy.com, 1 dev-advancedservicesportal.com, 1 dev-amag.com, 1 dev-brandywineglobal.com, 1 -dev-dojo.jp, 1 dev-gutools.co.uk, 1 dev-lab.net.pl, 1 dev-ll-portal-app-euw.azurewebsites.net, 1 dev-mail.net, 1 -dev-mates.com, 1 dev-ms.com, 1 dev-pmcc.net, 1 -dev-schoolnexus.se, 1 dev-sncf-habilitation-web-frc.azurewebsites.net, 1 dev-sncf-immersive.azurewebsites.net, 1 dev-sncf-server1.azurewebsites.net, 1 @@ -41685,24 +41843,24 @@ dev-sncf-server2.azurewebsites.net, 1 dev-soft.pl, 1 dev-telusdata.com, 1 dev-test.nl, 1 -dev-testing.org, 1 dev-tricks.com, 1 dev-vip.com, 1 +dev-woenenn-node-server.herokuapp.com, 1 dev-ylinternal.com, 1 dev.inc, 1 dev.moe, 1 dev.pro, 1 dev.tw, 1 dev.vu, 1 +devacapital.com, 1 devafterdark.com, 1 devagency.fr, 1 devahi.gq, 1 -devaland.com, 1 +devaland.com, 0 devalbert.com, 1 devalkincentives.nl, 1 devalps.eu, 1 devanstavern.tk, 1 -devarena.pp.ua, 1 devastacion.tk, 1 devb.nl, 1 devbay.cc, 1 @@ -41724,7 +41882,6 @@ deve.software, 1 develify.co, 1 develmaster.tk, 1 develooper.com, 1 -develop.gr, 1 develope.cz, 0 developedbygayuh.my.id, 1 developer.android.com, 1 @@ -41732,7 +41889,6 @@ developer.moe, 1 developer.mydigipass.com, 0 developerdan.com, 1 developerinsider.co, 1 -developers.ddns.net, 1 developers.facebook.com, 0 developmentsites.melbourne, 1 developnorthportfl.gov, 1 @@ -41751,6 +41907,7 @@ devendrameena.tk, 1 devenirconseillerbienetre.com, 1 deventura.com, 1 devenv.ml, 1 +deverse.eu, 1 deveshrx.com, 1 devet-slunci.cz, 1 devfixer.org, 1 @@ -41789,13 +41946,9 @@ devirc.net, 1 devkid.net, 1 devksingh.com, 1 devlabroid.com, 1 -devlatron.de, 1 -devlatron.eu, 1 -devlatron.net, 1 devlist.tk, 1 devlo.ai, 1 devloerkledenstudio.nl, 1 -devlog.co.jp, 1 devlogr.com, 1 devloope.com, 1 devmanagersest.ga, 1 @@ -41804,6 +41957,7 @@ devmode.fm, 1 devnall.ru, 1 devnet.tk, 1 devnull.space, 1 +devnull.team, 1 devnull.win, 1 devoc.net, 1 devochki.ga, 1 @@ -41818,6 +41972,7 @@ devops-playtest.net, 1 devopsbookmarks.org, 1 devopsfreelance.pro, 1 devopsintegration.io, 1 +devopsish.com, 1 devopswow.com, 1 devos.ml, 1 devoted-atheist.tk, 1 @@ -41836,9 +41991,8 @@ devrekarti.com, 1 devries.frl, 1 devries.one, 1 devrijejansenist.nl, 1 -devrijheidameland.nl, 1 -devs-env.com, 1 devs-from.asia, 1 +devs4.com, 1 devsectools.com, 1 devsfield.com, 1 devsjournal.com, 1 @@ -41855,7 +42009,6 @@ devtambayan.com, 1 devtea.cz, 1 devtechgroup.com, 1 devtestfan1.gov, 1 -devtoolbox.in, 1 devtty.org, 1 devuan.org, 0 devurandom.tk, 1 @@ -41865,7 +42018,7 @@ devya.es, 1 devyanijayakar.com, 1 devzero.io, 0 dewalch.net, 1 -dewalt.com, 0 +dewalt.com, 1 dewblog.ml, 1 dewereldwerktthuis.com, 1 dewereldwerktthuis.eu, 1 @@ -41875,7 +42028,6 @@ dewereldwerktthuis.org, 1 dewerveling.tk, 1 deweybeachpolice.gov, 1 dewijkpraktijk.nl, 1 -dewikipedia.org, 1 dewit-automatisering.nl, 1 dewittcountyil.gov, 1 dewittmi.gov, 1 @@ -41905,6 +42057,7 @@ dezshop.com.ua, 1 df-clan.tk, 1 df-team.tk, 1 df1nif.de, 1 +df1paw.de, 1 df3313.com, 1 df3314.com, 1 df3315.com, 1 @@ -41918,16 +42071,15 @@ df5aa.com, 1 df5bb.com, 1 df5cc.com, 1 df5dd.com, 1 -dfabrandguide.com, 1 dfactory.co, 1 dfafacts.gov, 1 -dfaschoolmilk.com, 1 dfc.gov, 1 dfctaiwan.org, 1 dffgpro.de, 1 dfg.re, 1 dfiik.com, 1 -dfkp.de, 1 +dfilip.icu, 1 +dfilucky.com, 1 dfm.ae, 0 dfmn.berlin, 1 dfmvf.org, 1 @@ -42004,9 +42156,8 @@ dgries.de, 1 dgrj.com.br, 1 dgroups.org, 1 dgschell.com, 1 -dgst.cloud, 1 dgt-portal.de, 1 -dgtechsrl.com, 1 +dgtakano.co.jp, 0 dgtl.hosting, 1 dgtl.tools, 1 dgtl.work, 1 @@ -42023,9 +42174,8 @@ dha.gov.ae, 1 dhakabankltd.com, 1 dhamdhamaanchalikcollege.tk, 1 dhani.com, 1 -dhanur.me, 1 dhanushtechno.in, 1 -dharamshi.org, 1 +dharma.org, 1 dharmakit.com, 1 dhaus.de, 1 dhautefeuille.eu, 1 @@ -42034,6 +42184,7 @@ dhawayurakyoto.com, 1 dhayalan.com, 1 dhaynes.xyz, 1 dhde.de, 1 +dhdinfosec.com, 1 dhdk7.com, 1 dhdmdkd.com, 1 dheart.net, 1 @@ -42045,6 +42196,7 @@ dhit.pl, 1 dhl-smart.ch, 1 dhlcotizadorexpo-qa.azurewebsites.net, 1 dhlinux.org, 1 +dhlkh.com, 1 dhlparcel.nl, 1 dhome.at, 1 dhrupad.tk, 1 @@ -42072,10 +42224,11 @@ diablocarpet.com, 1 diablos-obon.tk, 1 diabolic.chat, 1 diabos.biz, 1 -diabrowser.com, 0 +diabrowser.com, 1 diacritical.net, 1 diadiemdangsong.com, 1 diadorafitness.es, 1 +diadorafitness.it, 1 diag.pl, 1 diagilev.ml, 1 diagmechanic.com, 1 @@ -42106,19 +42259,17 @@ dialogportal.com, 1 dialogue.co, 1 dialoguecorp.com, 1 dialoguecorp.eu, 1 -dialox.ai, 1 dialradio24.tk, 1 dialybiendong.tk, 1 diamant.family, 1 diamant.nyc, 1 -diamantled.be, 1 +diamantiques.com, 1 diamantovaburza.cz, 1 diameb.ua, 1 diamond-hairstyle.dk, 1 diamond-reporting.com, 1 diamondbluffwi.gov, 1 diamondcarpetcleaning.co.uk, 1 -diamonddelivers.com, 1 diamondforms.net, 1 diamondgoldmarkcity.cf, 1 diamondgrid.ga, 1 @@ -42134,11 +42285,14 @@ diamwall.com, 1 dian7la.com, 1 dian7la.space, 1 diana-und-aaron.de, 1 +dianaconsultancy.com, 1 dianaconta.pt, 1 dianadeluxe.net, 1 dianadrive.com, 1 +dianafaraj.de, 0 dianakaarina.tk, 1 diananeves.pt, 0 +dianapps.com, 1 dianaqueeny.tk, 1 dianas.sk, 1 dianaundaaron.de, 1 @@ -42161,7 +42315,7 @@ diansung.com, 1 diaocan.com, 1 diaoyu8.com, 1 diapazon.kz, 1 -diapuls.ru, 0 +diapuls.ru, 1 diare-na-miru.cz, 1 diario-egipto.com, 1 diariodearaxa.com.br, 1 @@ -42182,13 +42336,13 @@ diatomenterprises.com, 1 diatr.us, 1 diatrofi-ygeia.gr, 1 diaweb.nl, 1 -diazmarco.me, 1 diazmotorcycles.com, 1 diazpubli.tk, 1 diba.org.cn, 1 dibacode.com, 1 dibal.ua, 1 dibam.cl, 1 +dibiphp.com, 1 dibo-ambasador.pl, 1 dic.ae, 1 dicaprio.tk, 1 @@ -42196,11 +42350,11 @@ diccionarioabierto.com, 1 diccionariodedudas.com, 1 diccionarioperu.com, 1 diccionarqui.com, 1 +dice.tokyo, 1 dicelab-rhul.org, 1 dicelab.co.uk, 1 dicemer.com, 1 dicesites.com, 1 -diceworld.fr, 1 dicgaming.net, 1 dichanho.com, 1 dichvudangkygiayphep.com, 1 @@ -42269,6 +42423,7 @@ didiwinata.com, 1 didiwinata.my.id, 1 didsomeoneclone.me, 1 didtrumpopengovernmentyet.com, 1 +didtweb.com, 1 die-besten-weisheiten.de, 1 die-borts.ch, 1 die-cms-manufaktur.de, 1 @@ -42277,14 +42432,11 @@ die-herrenschneider.com, 1 die-lage.at, 1 die-luebecker-museen.de, 1 die-machons.de, 1 -die-scheunemanns.de, 1 die-seide.de, 1 die-seiler.de, 1 die-sinlosen.de, 1 -die-smartwatch.de, 1 die-speisekammer-reutlingen.de, 1 die-sterntaufe.de, 1 -die-tastenkombination.de, 1 die-testagenten.de, 1 die.de, 1 die.one, 1 @@ -42316,13 +42468,8 @@ diegogranada.tk, 1 diegoisla.ga, 1 diegomeza.tk, 1 diegosalgado.tk, 1 -diegotoledo.com, 1 -diegotoledo.com.br, 1 -diegotoledo.eu, 1 -diegotoledo.it, 1 diegovisual.tk, 1 diehumanisten.de, 1 -diekinvest.nl, 1 diekleinekartenfabrik.de, 1 diekperaiwseis.gr, 1 dielinke-igb.de, 1 @@ -42345,24 +42492,28 @@ diercke.de, 1 dierenpagina.tk, 1 dierenrijk.nl, 0 dierenschilderijen.tk, 1 -dierenwiki.nl, 1 dieschnuckelchen.myasustor.com, 1 diesdasananas.spdns.de, 1 dieselanimals.lt, 1 +dieselfiltersonline.com, 0 +diesellange.com.ar, 1 dieselndust.com, 1 dieselor.bg, 1 dieselor.com, 1 dieselship.com, 1 +dieseltms.com, 1 diesicheremail.de, 1 dieslowhtx.com, 1 diesse.nl, 0 dieste.com, 1 dieta-figura.tk, 1 dietandexercises.tk, 1 +dietanic.co, 1 dietaryguidelines.gov, 1 dietbrand.eu, 1 dieter.one, 1 dieterglas.de, 1 +dieteticadigital.net, 1 dietfordiabetics.tk, 1 dietherapie.tirol, 1 dieti-natura.com, 1 @@ -42377,7 +42528,7 @@ dietmoikiensinh.tk, 1 dietolog.gq, 1 dietpi.com, 1 dietrich-bonhoeffer.net, 1 -dietrich.cx, 0 +dietrich.cx, 1 dieumfrage.com, 1 dievozodis.lt, 1 dievturi.lv, 1 @@ -42390,7 +42541,7 @@ differentgirleveryday.ml, 1 differenziare.it, 1 difficulty.ga, 1 diffnow.com, 1 -diflora.it, 0 +diflora.it, 1 diflucangeneric.ml, 1 diflucanonline.tk, 1 diflucanpill.ga, 1 @@ -42435,8 +42586,8 @@ digifood.fr, 1 digifood.pro, 1 digig.es, 1 digigami.au, 1 -digihubzone.com, 1 digiischolarships.com, 1 +digilabs.fr, 1 digiland.tk, 1 digilicious.com, 1 digilock.com, 0 @@ -42455,7 +42606,6 @@ digimortals.nl, 1 digino.jp, 1 digino.us, 1 digino.xyz, 1 -diginow.in, 1 digionline.de, 1 digiparse.com, 1 digipartindex.ch, 1 @@ -42463,6 +42613,7 @@ digipitch.com, 1 digipost.no, 1 digirechnung.de, 1 digireg.in, 1 +digirence.org, 1 digirig.net, 1 digiriik.ee, 1 digisfil.fr, 1 @@ -42483,7 +42634,6 @@ digital-dreames.de, 1 digital-e-library.tk, 1 digital-eastside.de, 1 digital-echo.io, 0 -digital-forensics.fr, 1 digital-garden.us, 1 digital-home.tk, 1 digital-insurance-engine.com, 1 @@ -42501,11 +42651,14 @@ digital-watchdog.com, 1 digital.gov, 1 digital.govt.nz, 1 digital1st.co.uk, 1 +digital4kids.at, 1 digital4starazagora.com, 1 +digitaladl.com.au, 1 digitalagency47.com, 1 digitalagencynetwork.com, 1 digitalakatsuki.com, 1 digitalalektioner.se, 1 +digitalandsocialmediaacademy.com, 1 digitalaplus.com, 1 digitalarchitecture.com, 1 digitalasitshouldbe.com, 1 @@ -42517,10 +42670,10 @@ digitalblood.eu, 1 digitalbox.jp, 0 digitalbridge.com, 1 digitalbridge.com.au, 1 +digitalbuero.eu, 1 digitalbuyer.com, 1 digitalcanvas.com.br, 1 digitalcarbide.com, 1 -digitalcardmanager.com, 1 digitalcash.cf, 1 digitalcashpalace.com, 1 digitalch.ng, 1 @@ -42546,15 +42699,16 @@ digitaldeli.org, 1 digitaldeli.tv, 1 digitaldeli.us, 1 digitaldeliarchive.com, 1 +digitaldem.it, 1 digitaldesign.ga, 1 digitaldesk.net, 1 digitaldisaster.tk, 1 digitaldruck.info, 1 -digitale-afvalscheiding.nl, 0 +digitale-afvalscheiding.nl, 1 +digitale-ausleihe.de, 1 digitale-bibliothek.tk, 1 digitale-gesellschaft.ch, 1 digitale-oekonomie.ch, 1 -digitale-ueberwachung.info, 1 digitaleducationarea.tk, 1 digitaleducationpro.tk, 1 digitalehandtekeningen.nl, 1 @@ -42567,6 +42721,7 @@ digitalexpertsdirectory.com.au, 1 digitalezukunft-hagen.de, 1 digitalezukunft.nrw, 1 digitalfoodbook.com, 1 +digitalforensicsdubai.com, 1 digitalfortress.tech, 1 digitalfoster.org, 0 digitalfury.co.uk, 1 @@ -42588,13 +42743,11 @@ digitalid.com, 1 digitalid.com.au, 1 digitalillusion.pt, 1 digitalimpactlab.org, 1 -digitalinberlin.de, 1 digitalistan.tk, 1 digitalizer.my.id, 1 digitalizzazioneverona.it, 0 digitalkashmir.ml, 1 digitalkey.pro, 1 -digitalkuber.com, 1 digitallife.tk, 1 digitallink.be, 1 digitalliteracy.gov, 1 @@ -42603,7 +42756,6 @@ digitalmaine.com, 1 digitalmanager.guru, 1 digitalmaniac.co.uk, 1 digitalmarketingagency-consultant.com, 1 -digitalmarketingfirst.co.uk, 1 digitalmarketingnetic.com, 1 digitalmint.io, 1 digitalmove.co.uk, 1 @@ -42631,6 +42783,7 @@ digitalprojects.com.au, 1 digitalrealitybbs.com, 1 digitalreborn.com, 1 digitalredshirts.com, 0 +digitalrights.center, 1 digitalroma.tk, 1 digitalsafezm.com, 0 digitalscrapbookingstudio.com, 1 @@ -42648,10 +42801,12 @@ digitaltbyra.no, 1 digitaltcertifikat.dk, 1 digitaltco.co.uk, 1 digitaltech.vip, 1 +digitaltimeline.store, 1 digitaltowpathny.gov, 1 digitaltransactions.net, 1 digitaltry.tk, 1 digitalupcoming.tk, 1 +digitalutilities.net, 1 digitalvag.tk, 1 digitalvalue.es, 1 digitalwasteland.net, 0 @@ -42667,9 +42822,9 @@ digitell.me, 1 digitese.pt, 1 digithex.com, 1 digithub.tk, 1 -digitizemyvideo.com, 1 digitizer.co.il, 1 digitkon.com, 1 +digitogy.com, 1 digitoimistopipeline.fi, 1 digitoucan.com, 1 digitra.com, 1 @@ -42687,7 +42842,7 @@ digpubdev.org, 1 digpubprd.org, 1 digpubqa.org, 1 digsys.bg, 1 -digwiz.biz, 1 +digwiz.biz, 0 digwp.com, 1 dih-technology.com, 1 dih-technology.info, 1 @@ -42721,7 +42876,6 @@ diktatur.tk, 1 dila.to, 1 dilanka.com, 1 dilation.party, 1 -dilber.ru, 1 dild.loan, 1 dildoexperten.se, 1 dilfed.com, 1 @@ -42736,7 +42890,6 @@ dillonm.io, 1 dillynbarber.com, 0 dilmahtea.me, 1 dilmarames.com, 0 -dilolabs.fr, 1 dimagrimentoincorso.it, 1 dimamergel.com, 1 dimanss47.net, 1 @@ -42753,13 +42906,13 @@ dimesanmedical.com, 1 dimesitegusto.com, 1 dimeven.tk, 1 dimez.ru, 1 -dimfin.ru, 1 dimiro.co.tz, 1 dimism.eu, 1 dimitri-davies.com, 1 dimitri-papadimitriou.com, 1 dimitri-papadimitriou.eu, 1 dimitri-papadimitriou.gr, 1 +dimitri.network, 1 dimitris.tk, 1 dimitrovgrad.bg, 1 dimitrovi.tk, 1 @@ -42773,15 +42926,18 @@ dimmersnewburypark.com, 1 dimmersoakpark.com, 1 dimmersthousandoaks.com, 1 dimmerswestlakevillage.com, 1 -dimokratikiaristera.gr, 0 +dimo-crm.fr, 1 +dimo-dematerialisation.com, 1 +dimo-tresorerie.fr, 1 +dimokratikiaristera.gr, 1 +dimomaint.de, 1 dimonz.com, 1 dimoredimara.com, 1 dimory.com, 1 +dimosoftware.fr, 1 dimseklubben.dk, 1 -dimtrade.rs, 1 dina.wtf, 1 dinamarcus.com, 1 -dinamcii.info, 1 dinamikarosta.ml, 1 dinamofilms.cl, 1 dinarys.com, 1 @@ -42813,6 +42969,7 @@ dinimizislam.tk, 1 dining-it.com, 1 dinira-bg.com, 1 dinitabir.tk, 1 +dinjob.com, 0 dinkoreskolesilkeborg.dk, 0 dinkoreskoleviborg.dk, 1 dinmtb.dk, 1 @@ -42825,8 +42982,7 @@ dinoplanners.com, 1 dinos-mag.tk, 1 dinotv.at, 1 dintrafic.net, 1 -diobrasperu.com, 1 -diocesedeosorio.org, 0 +diocesedeosorio.org, 1 diodo.me, 1 dioesfoto.com, 1 diogbatech.tk, 1 @@ -42847,6 +43003,7 @@ dioxido.com.ar, 1 dioxilife.com, 1 diozoid.com, 1 dip.digital, 1 +dipakgajjar.com, 1 dipalma.me, 1 dipanopaulista.com.br, 1 dipanshuparashar.ml, 1 @@ -42871,14 +43028,13 @@ dipuleon.es, 1 dipuma.com, 1 dir2epub.com, 1 dir2epub.org, 1 -dirayah.org, 1 dirch.tk, 1 dirdet.co.uk, 1 dirdur.cf, 1 direc-tory.tk, 1 direct-aesthetics.com, 1 direct-sel.com, 1 -direct.cz, 1 +direct.cz, 0 direct2trade.co.nz, 1 direct365.es, 1 directaccident.co.uk, 1 @@ -42895,7 +43051,6 @@ direction.lv, 1 directions.ee, 1 directions.fi, 1 directions.lt, 1 -directions.tools, 1 directlendingsolutions.com, 1 directlook.tk, 1 directly.ga, 1 @@ -42936,11 +43091,12 @@ direktundonline.de, 1 direktvermarktung-schmitzberger.at, 1 diretonoponto.gq, 1 direwolfsoftware.ca, 1 +dirigeantbtp.com, 1 dirk-dogs.tk, 1 dirk-weise.de, 1 dirkdavid.org, 1 -dirkdebacker.be, 1 dirki.tk, 1 +dirkjonker.nl, 1 dirkkok.nl, 1 dirko.net, 0 dirksencenter.org, 1 @@ -42983,6 +43139,7 @@ disableipv4.se, 1 disabuse.cf, 1 disadattamentolavorativo.it, 1 disain.tk, 1 +disappearingidioms.com, 1 disassemble.website, 1 disasterrific.tk, 1 disastertalkest.ga, 1 @@ -43004,7 +43161,6 @@ discdash.tk, 1 discgolf.com, 1 disciples.io, 1 disciplesmakingdisciples.ca, 1 -disclosurerequest.co.kr, 1 disco-crazy-world.de, 1 discodoener.de, 1 discofitta.com, 1 @@ -43028,7 +43184,7 @@ discordservers.com, 1 discordsworld.tk, 1 discotek.club, 1 discotheque.tk, 1 -discounted.tours, 1 +discountduuka.com, 1 discountforelectronics.tk, 1 discounto.de, 1 discountpark.fr, 1 @@ -43050,11 +43206,13 @@ discovergeorgesriver.com.au, 1 discoverglo.com, 1 discoverhealthage.com, 0 discoveringdocker.com, 1 +discoveringmoroccotravel.com, 1 discoverkeesler.com, 0 discoverkeesler.marketing, 1 discoverlutruwita.com, 1 discoverradiance.com, 1 discoversnoop.com, 1 +discoverthehawkesbury.com.au, 1 discoverthreejs.com, 1 discoverucg.co.uk, 1 discoverx.com, 1 @@ -43088,7 +43246,6 @@ disfrutaverdura.com, 1 disgruntledcode.com, 1 disguise.cf, 1 dishanddat.com, 1 -dishcord.no, 0 dishcrawl.com, 0 dishwashermagic.tk, 1 dishwasherrepair-austin.com, 1 @@ -43135,13 +43292,13 @@ disinfestazioni.gorizia.it, 1 disinfestazioni.it, 1 disinfestazioni.milano.it, 1 disinfestazioni.modena.it, 1 -disinfestazioni.napoli.it, 1 disinfestazioni.net, 1 disinfestazioni.padova.it, 1 disinfestazioni.rimini.it, 1 disinfestazioni.roma.it, 1 disinfestazioni.torino.it, 1 disinfestazioni.treviso.it, 1 +disinfestazioni.udine.it, 1 disinfestazioni.varese.it, 1 disinfestazioni.venezia.it, 1 disinfestazioni.verona.it, 1 @@ -43175,20 +43332,22 @@ diskuze-seznam.cz, 1 diskuzeseznam.cz, 1 dislepsia.tk, 1 dismail.de, 1 +dismar.mx, 1 dismed.fr, 1 disneywallpapers.tk, 1 disobey.net, 1 disoluto.tk, 1 disorderboutique.com, 1 +disordersport.com, 1 disostruzioni.it, 1 disougstroy.com.ua, 1 disparada.com.br, 1 dispartilaw.com, 1 dispatched.tk, 1 +dispensarygta.com, 1 displaycalibration.de, 1 displaynote.com, 1 displayrd.com, 1 -displux.de, 1 disposable.link, 1 dispur.nic.in, 1 disroot.org, 1 @@ -43207,13 +43366,13 @@ distancelove.cf, 1 distancelove.ml, 1 distancelove.tk, 1 distancionno.com, 1 +distant.land, 1 distekinc.com, 0 distelbentelo.nl, 1 distelsdetails.com, 1 distempered.tk, 1 disti.com, 1 distilleren.tk, 1 -distillnote.com, 1 distinctdesign2009.com, 1 distinctiveremodeling.com, 1 distinguishedlegal.com, 1 @@ -43227,6 +43386,7 @@ distraction-league.de, 1 distraction.gov, 1 distraction.tk, 1 distractors.tk, 1 +distri.com.ua, 1 distribucionmayorista.online, 1 distribucionstunel.es, 1 distribuidora-online.com, 1 @@ -43262,17 +43422,18 @@ ditdot.hr, 1 ditec.sk, 1 diterzafra.tk, 1 ditetovinejlip.cz, 1 +ditevsrdci.cz, 1 ditex.ddns.net, 1 ditiee.com, 1 dities.tk, 1 ditissaskia.nl, 1 ditprint.dk, 1 ditra.ae, 0 -dits-balti.md, 1 ditte-destree.fr, 1 dittvertshus.no, 1 ditxse6.com, 1 ditxse6.org, 1 +ditzingen.de, 1 div.energy, 1 diva-app.de, 1 divacresent.tk, 1 @@ -43288,9 +43449,7 @@ divegearexpress.net, 1 diveidc.com, 1 diveleasia.tk, 1 divelement.ro, 1 -divelyon.fr, 1 diveplan.org, 1 -diveprotocol.org, 1 divergences.eu.org, 1 divernet.com, 1 divernonil.gov, 1 @@ -43300,11 +43459,12 @@ diverse-cuts.com, 0 diverse.systems, 1 diversificarte.com, 1 diversify.cf, 1 -diversify.com, 0 +diversify.com, 1 diversify.ga, 1 diversity-otherwise.tk, 1 diversityflags.com.au, 1 diversityflags.nz, 1 +diversitywatch.asia, 0 diversitywatch.co.nz, 1 diversovariable.tk, 1 diversual.com, 1 @@ -43346,6 +43506,7 @@ divizja.tk, 1 divjak.at, 1 divo-remont.tk, 1 divorce.com, 1 +divorceattorneyshouston.com, 1 divorcefiller.com, 1 divorceformsfiller.com, 1 divorcelawyer365.com, 1 @@ -43357,7 +43518,6 @@ divviup.org, 1 divvy.tk, 1 divyahindi.com, 1 diw-bau.cloud, 1 -diwan.ir, 1 dixa.tech, 1 dixeo.fr, 1 dixibox.com, 1 @@ -43385,12 +43545,12 @@ diyzealot.com, 1 dizainkyhni.ml, 1 dizalty-cloud.com, 1 dizayner.tk, 1 +dizaynspor.com, 1 dizhome.net, 1 dizkartes.nl, 1 dizkofloor.com, 1 dizlexiqa.tk, 1 dizmatt.tk, 1 -dizzie.org, 1 dizzyskills.tk, 1 dizzythewizard.co.uk, 1 dj-damm.tk, 1 @@ -43420,8 +43580,9 @@ djakuza.tk, 1 djalberto.tk, 1 djalessandrobrain.tk, 1 djalex-willemse.nl, 1 -djamelkokene.com, 0 +djamelkokene.com, 1 djamiroquai.tk, 1 +djandlindsey.com, 1 djang.tk, 1 django.baby, 1 django.city, 1 @@ -43434,14 +43595,12 @@ djangowebstudio.com, 1 djanneli.tk, 1 djarman.tk, 1 djattack.com, 1 -djav.org, 1 djawabna.ga, 1 djax.tk, 1 djazair.ml, 1 djazair.tk, 1 djazim.tk, 1 djbardhi.tk, 1 -djbass.com.se, 1 djbell.tk, 1 djbessi.tk, 1 djbobbytables.com, 1 @@ -43490,8 +43649,8 @@ djhub.org, 1 djhvidal.com, 1 djhypnoticstate.tk, 1 djichtus.tk, 1 +djieno.com, 1 djinstinct.tk, 1 -djipanov.com, 1 djjab.com, 1 djjacs.tk, 1 djjonimix.tk, 1 @@ -43566,16 +43725,15 @@ djsp.fr, 1 djsp.it, 1 djsp.uk, 1 djsp.work, 1 +djspacies.com, 1 djswebserver.com, 1 -djt-vom-chausseehaus.de, 0 +djt-vom-chausseehaus.de, 1 djtavo.tk, 1 djthibodeau.com, 1 djtiago.tk, 1 djtourist.tk, 1 -djtrebol.cl, 1 djurensvanner.tk, 1 djurklinikenangelholm.se, 1 -djuz-buz.com, 1 djvampire.tk, 1 djviks-rap.tk, 1 djvintagevinyl.com, 1 @@ -43593,11 +43751,13 @@ dk.search.yahoo.com, 0 dk1818.cc, 1 dk7.com, 1 dk7.vip, 1 +dkbilliards.com, 1 dkcoks.gov, 1 dkcomputers.com.au, 1 dkdigital.tk, 1 dkds.us, 1 dkec2.space, 1 +dken.guru, 1 dkengineeringwork.com, 1 dkern.eu, 1 dkern.net, 1 @@ -43607,7 +43767,6 @@ dkgamers.tk, 1 dkgev.de, 1 dkhf.ir, 1 dki.de, 1 -dkiapcss.edu, 1 dkim-validator.com, 1 dkk-gaming.de, 1 dkm.me, 1 @@ -43616,19 +43775,19 @@ dknvs.no, 1 dko-steiermark.ml, 1 dkonline.tk, 1 dkoreiba.com, 1 +dkproducts.nl, 1 dkravchenko.su, 0 dksh.com, 1 dksinger.tk, 1 dksoft-2130.ddns.net, 1 dksoft.online, 1 +dkstage.com, 1 dkweb.ml, 1 dkweb.tk, 1 dkwedding.gr, 1 dl-protect.tk, 1 dl.google.com, 1 dl444.net, 1 -dl5dt.de, 1 -dl5dt.net, 1 dlabs.codes, 1 dlaces.it, 1 dlagos.com, 1 @@ -43640,6 +43799,7 @@ dlbouncers.co.uk, 1 dlclientportal.com, 1 dlcompare.co.uk, 1 dlcompare.com, 1 +dlcompare.de, 1 dlcompare.fr, 1 dlcompare.it, 1 dlcompare.pt, 1 @@ -43653,24 +43813,25 @@ dlevans.com, 1 dlf.exchange, 1 dlford.io, 1 dlfsymposium.nl, 1 -dlideas.com, 1 +dline.co.in, 1 dlitz.net, 1 dll4free.com, 1 dlld.biz, 1 +dlld.com, 1 +dlld.org, 1 dlld.us, 1 dlmarket.jp, 1 dlmeto.com, 1 dlouwrink.nl, 0 dlp-demo.com, 1 dlpeterson.com, 1 +dlps.eu, 1 dlrg-cux-ohz.de, 0 dlslab.com, 1 dlslab.org, 1 dlsmdportal.com, 1 dlsolutions-inc.com, 1 -dlt.green, 1 dlttrading.com, 1 -dlun.tk, 1 dluxelab.com, 1 dlv-registry.com, 1 dlv-registry.net, 1 @@ -43712,6 +43873,7 @@ dm.sk, 1 dm1.in, 1 dm4productions.com, 1 dm6.co, 1 +dm7ds.de, 1 dmaglobal.com, 1 dmarc-hd.org, 1 dmarc.dk, 1 @@ -43720,6 +43882,7 @@ dmarcpal.com, 1 dmarcsentry.com, 1 dmarctester.com, 1 dmarcvendors.com, 1 +dmautomek.no, 1 dmbins.com, 1 dmbvideo.com, 1 dmc-cc.de, 1 @@ -43749,17 +43912,16 @@ dmi.es, 1 dmi.gov.lb, 1 dmia.org.au, 1 dmiapis.id, 1 +dmiaviation.com, 1 dmilb.org, 1 dmineiros.com.br, 1 dmitaxapp.ca, 1 -dmitriylasarev.ru, 1 dmitryg.name, 1 dmitrykataev.ru, 1 dmitrysnotes.ru, 1 dmitrysyrov.com, 1 dmix.ca, 1 -dmkthinks.org, 1 -dmkuchnie.pl, 0 +dmkuchnie.pl, 1 dmlaser.nl, 1 dmlive.wiki, 1 dmma.be, 1 @@ -43771,6 +43933,10 @@ dmosk.ru, 1 dmoz.v.ua, 1 dmparish.com, 1 dmr446.fr, 1 +dmrhub.cloud, 1 +dmrhub.net, 1 +dmrhub.network, 1 +dmrhub.org, 1 dms-technik.de, 1 dmsbg.com, 1 dmsgovernance.com, 1 @@ -43778,11 +43944,11 @@ dmshynk.com, 1 dmskaspr.com, 1 dmslog.com, 1 dmslog.com.br, 1 -dmsos.ai, 1 dmstechnology.com, 1 dmtcustoms.co.za, 1 dmu.ac.ae, 1 dmunoz.es, 1 +dmvape.us, 0 dmwaste.com, 0 dmwclan.tk, 1 dmxclan.tk, 1 @@ -43793,17 +43959,15 @@ dn3s.me, 1 dn42.us, 1 dn9b1f9o30q82.cloudfront.net, 1 dna-agency.it, 1 -dna-clan.eu, 1 dna-technology.ua, 1 dna.li, 0 -dnaclan.eu, 1 dnadk.com, 1 dnaka91.rocks, 1 dnalounge.com, 1 dnapagamentos.com.br, 1 dnapizza.com, 1 dnash.tk, 1 -dnatechnology.io, 0 +dnatechnology.io, 1 dnb.co.in, 1 dnb.no, 1 dnb.se, 1 @@ -43834,6 +43998,8 @@ dnbvietnam.com, 1 dnc.org.nz, 1 dndblog.tk, 1 dnddobbelstenen.nl, 1 +dndesturia.uk, 1 +dndinsulation.com.au, 1 dndtools.net, 1 dnel.me, 1 dnepr-news.ru, 1 @@ -43842,6 +44008,7 @@ dneprodzerzhinsk-news.ru, 1 dnepropetrovck.tk, 1 dneprovski.tk, 1 dnestr.tk, 1 +dnevnichok.club, 1 dnfc.rocks, 1 dnfsb.gov, 1 dngrexplorer.cf, 1 @@ -43851,9 +44018,9 @@ dnm-contracting.com, 1 dnmlab.it, 1 dnns.no, 1 dnplegal.com, 1 -dnpp.co.kr, 1 dnr-news.ru, 1 dnrnews.ru, 1 +dnrt-esports.nl, 1 dns-check.nl, 0 dns-checker.nl, 1 dns-control.eu, 1 @@ -43892,7 +44059,6 @@ dnsmonitor.com, 1 dnsnox.com, 1 dnspod.ml, 1 dnsrate.com, 1 -dnsrevolve.com, 1 dnsscience.org, 1 dnssec.au, 1 dnssecandipv6.se, 1 @@ -43923,6 +44089,8 @@ dob46.mazowsze.pl, 1 dobavki.club, 1 dobbshvac.com, 1 dobledemichaeljackson.tk, 1 +doblejewel.shop, 1 +dobleseo.pro, 1 doblot.com, 1 dobookmark.ml, 1 doboszynski.com, 1 @@ -43944,7 +44112,7 @@ dobrodruzi.tk, 1 dobrorok.cz, 1 dobrynyastyle.ru, 1 dobryprezident.sk, 1 -dobrzechow.pl, 1 +dobskateshop.com, 1 dobusinessonline.com, 1 doc-baza.tk, 1 doc-reader-guide.com, 1 @@ -43962,7 +44130,6 @@ doccafe.com, 1 docebo.com, 1 docemeldoces.com, 1 docendo.es, 1 -docesinesqueciveis.com.br, 1 docesmartini.com.br, 1 docfliq.com, 1 docguide.com, 1 @@ -43970,6 +44137,7 @@ docha.tk, 1 dochescu.com, 1 dochub.com, 1 dock.tech, 1 +dock23.de, 1 dockerbook.com, 0 dockerm.com, 1 dockerup.net, 1 @@ -43981,7 +44149,6 @@ dockstore.org, 1 dockysearch.com, 1 doclassworks.com, 1 docline.gov, 1 -docloq.com, 1 doclures.com, 1 docmode.org, 1 docogo.ga, 1 @@ -44002,12 +44169,14 @@ doctabaila.com, 1 doctacomunicazione.it, 1 doctaforum-diferidos.com, 1 doctaforum-events.org, 1 -doctalyassist.com, 1 docte.ch, 1 +docteur-delorme.fr, 1 docteurjacquel.fr, 1 docteurqui.fr, 0 doctoblog.fr, 1 doctorapuestas.pe, 1 +doctorapuestasargentina.com, 1 +doctorapuestaschile.com, 1 doctorbini.com, 1 doctorcalefon.com, 1 doctordabbah.com, 1 @@ -44021,6 +44190,7 @@ doctormartinclavo.tk, 1 doctormit.ro, 1 doctornaima.ml, 1 doctornet.ml, 1 +doctorpage.info, 1 doctorpapers.com, 1 doctorperu.com, 1 doctorpower.ga, 1 @@ -44028,9 +44198,8 @@ doctorpup.com, 1 doctorradio.tk, 1 doctorrayaneh.com, 1 doctorsarfarazdo.ga, 1 -doctorsatdoor.com, 0 +doctorsatdoor.com, 1 doctorshealthfund.com.au, 1 -doctorsinternet.com, 1 doctorswithoutborders.org, 1 doctorwho.cz, 1 doctosofi.mx, 1 @@ -44069,7 +44238,6 @@ docusign.jp, 0 docusign.mx, 0 docusign.nl, 0 docutayho.com, 1 -docvox.com.br, 1 docxtemplater.com, 1 doczlo.tk, 1 doda.space, 1 @@ -44089,7 +44257,6 @@ dodgevillewi.gov, 1 dodi-alhelo.tk, 1 dodi-repacks.site, 1 dodiedods.fr, 1 -dodies.lv, 1 dodikod.tk, 1 dodolle.co.uk, 1 dodotool.com, 1 @@ -44101,7 +44268,6 @@ doehle-mnl.com, 1 doehle-mse.com, 1 doehle-romania.com, 1 doehle-seafront.com, 1 -doehlecentro.net.ph, 1 doehlers.de, 1 doelbeleggen.nl, 1 doeleman.nl, 1 @@ -44141,7 +44307,6 @@ dogespeed.gq, 1 dogespeed.ml, 1 dogfights.tk, 1 dogfriendly.co.uk, 1 -dogfriendlyplaces.eu, 1 doggingclub.tk, 1 doggo-staging.herokuapp.com, 1 doghandling.tk, 1 @@ -44179,15 +44344,16 @@ dogworld.com.br, 1 doh.sb, 1 dohertyconsulting.tk, 1 dohmen.io, 1 +dohmencapital.com, 1 doi.org, 1 doihavetoputonpants.com, 1 doineedanmdm.com, 1 doinwp.com, 1 -doioig.gov, 1 doist.com, 1 doit-intl.com, 1 doit.com, 1 doitauto.de, 1 +doj.gov.in, 1 doja-cat.ru, 1 dojah.io, 1 dojifish.space, 1 @@ -44234,6 +44400,7 @@ dolg.ga, 1 dolg.gq, 1 dolg.ml, 1 dolg.tk, 1 +dolgizaim.by, 1 dolgopolova.ga, 1 dolgorukovo.cf, 1 dolice.net, 1 @@ -44248,7 +44415,6 @@ dollarhero.ga, 1 dollarprofit.tk, 1 dollarrp.pl, 1 dollarweb.cf, 1 -dollbase.cn, 1 dolle-shop.com.ua, 1 dolledout.co.ke, 1 dollestieren.tk, 1 @@ -44271,7 +44437,6 @@ dolorhunter.com, 1 dolorism.com, 1 dolph.de, 1 dolphbit.de, 1 -dolphi.com.ua, 1 dolphin-cloud.com, 1 dolphin-hosting.com, 1 dolphin-it.de, 1 @@ -44314,6 +44479,8 @@ domainexpress.de, 0 domainforfree.gq, 1 domainhostingcompany.tk, 1 domainics.ml, 1 +domainjava.com, 1 +domainlions.com, 1 domainmaster.cz, 1 domainmonitor.net, 1 domainoo.com, 0 @@ -44328,10 +44495,10 @@ domains.lt, 1 domainscope.com, 1 domainsearchindia.com, 1 domainsecurityinfo.com, 1 -domainsecurityscanner.com, 1 domainservice.cf, 1 domainsetup.email, 1 domainsilk.com, 1 +domainspeicher.one, 1 domaintm.in, 1 domainvoider.cf, 1 domakidis.com, 1 @@ -44344,7 +44511,6 @@ domaxpoker.com, 1 domaza.gq, 1 domaza.ml, 1 domcc.tel, 1 -domdrenazh.ru, 1 domealert.com, 1 domeconseil.fr, 1 domein-direct.com, 1 @@ -44368,22 +44534,19 @@ domhos.tk, 1 domialt.de, 1 domian.cz, 1 dominanta-law.com, 1 +dominateyourmarket247.com, 1 dominationgame.co.uk, 1 dominctheroofguy.com, 1 -domindev.com, 1 -dominguezchannelclaims.com, 1 dominicana-lux.cf, 1 dominicandfelixroco.tk, 1 dominicanisimo.tk, 1 dominicanosenpr.com, 1 -dominicanpadelcup.com, 1 dominichoward.tk, 1 dominicinc.com, 1 dominicjackson.cf, 1 dominicjackson.ga, 1 dominicjackson.gq, 1 dominicmicpa.at, 1 -dominicschmiel.com, 1 dominicself.co.uk, 1 dominicself.com, 1 dominicself.uk, 1 @@ -44393,6 +44556,7 @@ dominik-steiner.at, 1 dominik.st, 1 dominikconrads.de, 1 dominikriedig.de, 1 +dominikzen.com, 1 dominioanimal.com.br, 1 dominionlending.ca, 1 dominionmovement.com, 1 @@ -44418,6 +44582,7 @@ domitori.tk, 1 domizx.de, 1 domjh.com, 1 domkirby.com, 1 +domkiwgrodku.pl, 1 domlist.tk, 1 dommelzorg.be, 1 dommistrza.pl, 1 @@ -44465,7 +44630,8 @@ domythesis.net, 1 domyzitrka.cz, 1 domznak.ru, 1 don-news.tk, 1 -dona.to, 0 +don-zalmrol.be, 1 +dona.to, 1 donacarlota.net.br, 1 donacije.rs, 1 donaciondeorganos.gov, 1 @@ -44473,24 +44639,27 @@ donalblaney.cf, 1 donalblaney.ga, 1 donalblaney.gq, 1 donaldduck.nl, 1 +donaldrussell.com, 1 donaldtrump.ga, 1 donaldwarner.com, 1 donama.co, 1 +donamadeira.com.br, 1 donamflor.com, 1 +donarmany.online, 1 donat.cloud, 1 donate-streamer.com, 1 donate.lol, 1 donateabox.org, 1 donateaday.net, 1 donateforcharity.com, 1 -donatefyra.ru, 1 donatellapratas.com.br, 1 donateway.com, 1 +donationintegration.ru, 1 donazione.it, 1 +donburi.click, 1 doncastermoneyman.com, 1 dondiabolo.com, 1 dondonya.com.cn, 1 -doneandbilled.com, 1 donec.tk, 1 donedeal.co.uk, 1 donedeal.ie, 1 @@ -44512,10 +44681,10 @@ dongcdn.com, 1 dongdaeyecenter.com.tw, 1 donge.fr, 1 dongen.me, 1 -dongfeng.com.pa, 1 donggala.go.id, 1 dongha.org, 1 donghochinhhang.store, 1 +donghuapiandaquan.com, 1 dongjing.re, 1 dongor.tk, 1 donhoward.org, 0 @@ -44524,7 +44693,6 @@ doniramdoni.tk, 1 donislawdev.com, 1 donkerslootjes.nl, 1 donkeytrekkingkefalonia.com, 1 -donmacleod.com, 1 donnaandscottmcelweerealestate.com, 1 donnabotanica.com.br, 1 donnabrothers.com, 1 @@ -44535,6 +44703,7 @@ donnanovak.com, 1 donnapepe.tk, 1 donnapro.com, 1 donnellymech.com, 1 +donnerhollenconstruction.com, 1 donnerwetter.tk, 1 donngle.com, 1 donnington.co, 1 @@ -44547,7 +44716,6 @@ donotdepart.com, 1 donovan-court-reporters.com, 1 donovancourtreporters.com, 1 donovanreporters.com, 1 -donovansplace.com, 1 donpanda.cz, 1 donpi.it, 1 donpietraos.tk, 1 @@ -44590,12 +44758,11 @@ dontmoveamusclellc.com, 1 dontpayfull.com, 1 dontserveteens.gov, 1 dontstopcoffee.com, 1 -donttradeitin.com, 1 dontwastethewood.com, 1 donumanimo.pl, 1 donutchurroworld.com, 1 donutcompany.co.jp, 1 -donutdip.com, 0 +donutdip.com, 1 donutprincessla.com, 1 donvine.com, 1 donwana.com, 1 @@ -44611,13 +44778,13 @@ dooby.fr, 1 doodle.com, 1 doodlegames.tk, 1 doodletips.com, 1 -doogbot.com, 1 doogej.nl, 1 doolac.com, 1 dooleylabs.com, 1 doomsdaymag.tk, 1 doomsworld.com, 1 doomtech.net, 1 +doonamis.com, 1 doonvalleytrail.co.uk, 1 doooooops.com, 1 doop.im, 1 @@ -44639,7 +44806,6 @@ doorloop.com, 1 doornmore.com, 1 doors-and-windows.tk, 1 doorservice.ml, 1 -doorslite.ru, 1 doorsystemsweden.se, 1 doortodoor.ml, 1 doorzy.ca, 1 @@ -44661,13 +44827,11 @@ doppler-manufaktur.com, 1 doppler.com, 1 doppler.team, 1 dopplerschirme.com, 1 -doproconstruction.com, 1 dor-tak.com, 1 dor-tak.ru, 1 dora.moe, 1 dorados.tk, 1 doradoscampeon.tk, 1 -doradostrategic.com, 1 doraemonchile.tk, 1 dorama.gq, 1 doramamusic.gq, 1 @@ -44677,6 +44841,7 @@ dorcelvision.com, 1 dorco.be, 1 dordtpas.nl, 1 doremy.be, 1 +dorfbrunnen.eu, 0 dorfkultur.net, 1 dorfzittig.de, 1 dorganico.cl, 1 @@ -44692,6 +44857,7 @@ dorkface.tk, 1 dorm.social, 1 dormi.hu, 1 dormilaine.fr, 1 +dorminyeremenyjatek.hu, 1 dormitengernyikaland.hu, 1 dormiu.com, 1 dormiu.com.br, 1 @@ -44705,7 +44871,6 @@ dorpsoverlegboskoop.nl, 1 dorpsparade.tk, 1 dorquelle.com, 1 dorrtownshipmi.gov, 1 -dorsett-consulting.com, 1 dorth.nl, 1 dortmund.de, 1 dortmund.directory, 1 @@ -44724,7 +44889,6 @@ dosenpendidikan.co.id, 1 dosenpintar.com, 1 doserres.tk, 1 dosgame.club, 1 -dosgatos.shop, 1 dosgratus.tk, 1 dosimabag.com, 1 dosimapress.com, 1 @@ -44767,7 +44931,6 @@ dotcommawards.com, 1 dotcomtest02-single.azurewebsites.net, 1 dotconnor.com, 0 doterra.com, 1 -dotesports.com, 1 dotfile.tk, 1 dotgov.gov, 1 dothaneagle.com, 1 @@ -44775,6 +44938,7 @@ dotheevolution.tk, 1 dothegangnamstyle.tk, 1 dotjesper.com, 1 dotjs.party, 1 +dotker.com, 1 dotkniseandroida.cz, 1 dotkod.pl, 1 dotlab.net, 1 @@ -44796,7 +44960,6 @@ dotroll.com, 1 dotrox.net, 1 dotsandarrows.eu, 1 dotsbuy.com, 1 -dotshule.ug, 1 dotsiam.co.th, 1 dotsiam.com, 1 dotsiam.in.th, 1 @@ -44808,23 +44971,27 @@ dottori-online.com, 1 dotweb.com, 1 dotxyz.lol, 1 dotya.ml, 1 +dotycat.com, 1 dotyk-snov.tk, 1 dotyk.me, 1 dotzauer-stb.de, 1 douai.me, 1 +douari.info, 1 douari.jp, 1 douari.net, 1 douari.xxx, 1 douban.city, 1 -double-clic.eu, 1 double20.gg, 1 doublearm.in, 1 doublebass-solo.com, 1 +doublebassworkshop.com, 1 doubled.ml, 1 doubledees.africa, 1 doubledees.co.ke, 1 doubledranch.tk, 1 doublefun.net, 1 +doubleh2go.co.nz, 1 +doublemars.com, 1 doubleness.gq, 1 doublepotion.com, 1 doublestat.me, 1 @@ -44863,12 +45030,16 @@ douglasresende.tk, 1 douglassimons.com, 1 douglegomovie.tk, 1 dougley.com, 1 +dougsnugs.love, 1 doujin-domain.cz, 1 doujin.nagoya, 1 doujinrepublic.com, 1 doujinshi.info, 1 +doujinspot.com, 1 doukhobor.org, 1 dourowineselection.pt, 1 +doutorapostas.com, 1 +doutorapostas.pt, 1 douyin.com, 1 douyinec.com, 1 douyinmusicpromotion.com, 1 @@ -44906,8 +45077,7 @@ downalarm.cz, 1 downalarm.sk, 1 downandouts.tk, 1 downarea.com, 1 -downer.email, 1 -downer.info, 1 +downduvet.co.uk, 1 downestan.ga, 1 downfall-records.tk, 1 downfreak.tk, 1 @@ -44941,6 +45111,7 @@ downtowndoverpartnership.com, 1 downtownindy.org, 1 downtownla.com, 1 downtownmesa.com, 1 +downtownontario.org, 0 downtownpdx.dog, 1 downtownraleigh.org, 1 downtownsuiteliving.com, 1 @@ -44953,7 +45124,6 @@ downwithchina.com, 1 dox-box.eu, 1 doxa.tk, 1 doxal.ro, 1 -doxascope.com, 1 doxepin1.gq, 1 doxepinonline.gq, 1 doxford-engine.com, 1 @@ -44975,6 +45145,7 @@ doyoucheck.com, 0 doyoulyft.com, 1 doypacky.cz, 1 doze-cloud.tech, 1 +dozen-donuts.com, 1 dozor.ga, 1 dozor.gq, 1 dozor.tk, 1 @@ -44993,13 +45164,15 @@ dpc-software.de, 1 dpc.ae, 1 dpclive.com, 1 dpcp.fr, 1 +dpcs.xyz, 0 dpcyourhome.com, 1 dpd.com.pl, 1 dpecuador.com, 1 dpereira.net, 1 dperkins.org, 1 +dperson.net, 1 dpeter.me, 1 -dpg.no, 0 +dpg.no, 1 dphipartner.com, 1 dpid.org, 1 dpim.org.my, 1 @@ -45027,7 +45200,6 @@ dpsengineers.com.au, 1 dpsg-hohenlinden.de, 1 dpsg-radolfzell.de, 1 dpsmassage.nl, 1 -dptool.com, 1 dpu.lt, 1 dpucarriersma.gov, 1 dr-amar.tk, 1 @@ -45037,7 +45209,6 @@ dr-ermilov.com, 1 dr-feldman.com, 1 dr-gayout.com, 1 dr-iravani.com, 1 -dr-it.co.uk, 1 dr-karagenska.com, 1 dr-kissler.de, 1 dr-laber.at, 1 @@ -45051,7 +45222,6 @@ dr-store.ru, 1 dr-tsanova.com, 1 dr-vlasak.cz, 1 dr-www.de, 1 -dr.com.tr, 1 dr.mg, 1 dr2dr.ca, 1 draabe-nyt.dk, 1 @@ -45089,11 +45259,13 @@ dragon-chem.eu, 1 dragon-craft.tk, 1 dragon-team.tk, 1 dragon.nu, 1 +dragon26.com, 1 dragon95.com, 1 dragonballzfigures.com, 1 dragonbike.by, 1 dragonboatfestival.tk, 1 dragonbox.de, 1 +dragoncave.me, 1 dragoncityhack.tips, 1 dragonclicker.ml, 1 dragonesymazmorras.tk, 1 @@ -45140,7 +45312,7 @@ drakeluce.com, 0 drakencan.gq, 1 drakenprospero.com, 0 drakenson.de, 1 -drakfot.se, 1 +drakfot.se, 0 drakia.com, 1 drakiada.tk, 1 drakkarbilbao.com, 1 @@ -45168,6 +45340,7 @@ draper.wtf, 1 draperutah.gov, 1 drapetra.com.br, 1 drardiving.com, 1 +drardivingcenter.com, 1 dras.hu, 1 drasocalzado.com, 1 drasoclothes.com, 1 @@ -45199,6 +45372,7 @@ drbadnick.tk, 1 drbanerjeecures.in, 1 drbarnabus.com, 0 drbet.it, 1 +drbinsusclinic.com, 1 drblog.tk, 1 drbonine.com, 1 drbooks-accounting.com, 1 @@ -45207,14 +45381,15 @@ drbresnick.com, 1 drbrys.com, 1 drcardiofit.com, 1 drcbxlpundw8t.cloudfront.net, 1 +drchapin.com, 1 drchrislivingston.com, 1 drchrono.com, 0 drclark.pro, 1 -drclear.co.uk, 1 drclub.tk, 1 drcommodore.it, 1 drcorderocirujanoplastico.com, 1 drcroof.com, 1 +drct.aero, 1 drdach.pl, 1 drdamirplasticsurgeon.com, 1 drdb.gr, 1 @@ -45240,29 +45415,28 @@ dream-factory.tk, 1 dream-pools.cf, 1 dreamaholic.club, 1 dreamawake.tk, 1 -dreambay.io, 1 dreambbs.tk, 1 dreambed.com, 1 dreamboxpro.com, 1 dreamcartransport.be, 1 dreamcast-world.tk, 1 dreamcatchers-events.com, 1 +dreamcometruevacations.com, 1 dreamconnect.org, 1 dreamcrack.tk, 1 +dreamcraft.su, 1 dreamdivers.com, 1 dreamelegant.ml, 1 dreamersgiftshopec.com, 1 dreamexperience.tur.br, 1 -dreamflux.ai, 1 -dreamflux.xyz, 1 dreamforcetv.pro, 1 dreamhostremixer.com, 1 -dreamimd.com, 1 +dreamhotels.com, 1 +dreamimd.com, 0 dreaminds.de, 1 dreaminformatique.tk, 1 dreaming.solutions, 1 dreaminjewelz.tk, 1 -dreamithost.com.au, 1 dreamland.sh, 1 dreamlandmagic.com, 1 dreamlandsdesign.com, 1 @@ -45272,12 +45446,13 @@ dreamlinks.tk, 1 dreamlux.cz, 1 dreamlux.sk, 1 dreammagnets.nl, 1 -dreammeaningnow.com, 1 dreamms.gg, 1 dreamofice.cn, 1 dreamoza.com, 1 dreampages.tk, 1 +dreampointech.com, 1 dreamqueen.tk, 1 +dreamrae.net, 1 dreamreality.tk, 1 dreams-2-reality.com, 1 dreamsea.tk, 1 @@ -45294,6 +45469,8 @@ dreamswelcome.com, 1 dreamsxxl.com, 1 dreamsystems.tk, 1 dreamtapestry.ga, 1 +dreamweavers.live, 1 +dreamwork.financial, 1 dreamworldstudio.tk, 1 dreamy-flat-lyon.fr, 1 dreamytheatre.com, 1 @@ -45333,7 +45510,6 @@ dresdens-pfefferkuchenprinzessin.de, 0 dresdner-christstollen-von-reimann.de, 1 dresdner-kaffeeroesterei.de, 1 dresdner-mandelstollen.de, 0 -dresdner-wohnung.de, 1 dreso.com, 1 dress-cons.com, 1 dressabelle.tk, 1 @@ -45361,6 +45537,7 @@ drfuhrman.com, 1 drfurreal.com, 1 drgabrielschmitt.com, 1 drgcomunicazione.it, 1 +drglennlyle.com, 1 drgn.li, 1 drgn.no, 1 drgolshani.com, 1 @@ -45369,9 +45546,9 @@ drhathazi.hu, 1 drheibel.com, 1 drhildebrand.net, 1 drhiteshpatel.in, 1 +drhogarth.co.uk, 1 drhouserepairs.com, 1 drianpublishing.tk, 1 -dribbble.com, 1 drica.tk, 1 dricka.tk, 1 driesjtuver.nl, 1 @@ -45406,18 +45583,14 @@ drinkgo.vn, 1 drinkieswith.me, 1 drinking.tk, 1 drinklife.tk, 1 -drinkmulu.com, 1 drinkpetrol.com, 1 drinkplanet.eu, 1 drinks.my, 1 drinksontap.co.uk, 1 -dripkickzz.com, 1 dripship.club, 1 dripshop.live, 1 drison.com, 1 drissner.me, 1 -drissner.media, 1 -drititleagent.com, 1 driv.io, 1 drive.google.com, 1 driveandpark.de, 1 @@ -45439,6 +45612,7 @@ driveforadtransport.com, 1 driveforartur.com, 1 driveincleveland.com, 1 drivemorganvanlines.com, 1 +driven2shine.eu, 1 drivencollision.com, 1 drivenes.net, 1 drivenets.com, 1 @@ -45454,6 +45628,7 @@ driverscollection.com, 1 drives.work, 1 drivestarfreight.com, 1 drivetonortheast.com, 1 +driveyouradblockcounterup.com, 1 driving-lessons.co.uk, 1 drivingacademy.tk, 1 drivingcalculator.ga, 1 @@ -45461,9 +45636,11 @@ drivinginstruction.tk, 1 drivingschoolnearmelbourne.com.au, 1 drivio.co.uk, 1 drivio.uk, 1 +drivvie.com, 1 drivya.be, 1 drivya.ch, 1 drivya.com, 1 +drivya.nl, 1 driwch.tk, 1 drixn.info, 1 drixn.net, 1 @@ -45482,10 +45659,9 @@ drkashany.ir, 1 drkbri.ru, 1 drkhsh.at, 1 drks.de, 1 -drksachsen.de, 0 +drksachsen.de, 1 drlandis.com, 1 drlarakiortho.com, 1 -drlc.com.au, 1 drleoplasticsurgery.com, 1 drlevi.cf, 1 drlevi.ga, 1 @@ -45497,6 +45673,7 @@ drlynnehinkle.com, 1 drmajpodochirurgia.pl, 1 drmaniplastics.com, 1 drmarwanbaroud.com, 1 +drmatthewrandall.com, 1 drmichaelwong.com, 1 drmiltenbergermd.com, 1 drminchev.com, 1 @@ -45505,6 +45682,7 @@ drms.us, 1 drmtransit.com, 1 drmvl.org, 1 drnatura.fr, 1 +drnjewels.com, 1 drobina.top, 1 drobny-app.work, 1 drogaleste.com.br, 1 @@ -45513,6 +45691,7 @@ drogoz.moe, 1 droid101.com, 1 droidandy.com, 1 droidapp.nl, 1 +droidchart.com, 1 droidguide.ga, 1 droidhere.com, 1 droidtrix.ga, 1 @@ -45533,7 +45712,6 @@ dronebase.cf, 1 dronebl.org, 1 dronebox.nu, 1 dronedeploy.com, 1 -droneid.org, 1 droneland.nl, 1 droneops.ro, 1 dronepanorama.net, 1 @@ -45546,8 +45724,10 @@ dronesquadcoptersales.ga, 1 droneup.pl, 1 droneways.tech, 1 dronix.tk, 1 +dronografia.es, 0 droomhuis-in-zuid-holland-kopen.nl, 1 drop-zone.tk, 1 +drop.com, 1 dropbox.com, 1 dropboxer.net, 1 dropchat.cf, 1 @@ -45576,11 +45756,13 @@ drowz.ee, 1 drozd.biz, 1 drozera.com, 1 drpalmer-training.com, 1 +drpancholi.com, 1 drpatyuen.com, 1 drpetervoigt.ddns.net, 1 drpetervoigt.de, 1 drpure.top, 1 drpvtipc.net, 1 +drradin.com, 1 drricardofretes.com, 1 drros.ru, 1 drrr.chat, 1 @@ -45597,6 +45779,7 @@ drsimonematousek.com, 1 drskinmedspa.com, 1 drsom.com, 1 drsoul.band, 1 +drspiro.com, 1 drstephanieteotia.com, 1 drsteveart.com, 1 drsteveharrison.com, 1 @@ -45605,7 +45788,6 @@ drsurvey.com, 1 drt.org.nz, 1 drtanyaescobedo.com, 1 drthalhammer.at, 1 -drthamer.com, 1 drthiagorighetto.com.br, 1 drtimmarch.com, 1 drtimothysteel.com.au, 1 @@ -45614,6 +45796,7 @@ drtimothysteelnetwork.com, 1 drtimothysteelresults.com, 1 drtimothysteelscholarship.com.au, 1 drtimothysteelvideos.com, 1 +drtomson.ee, 1 drtragency.com, 1 drtsaiclinic.com, 1 drtti.io, 1 @@ -45648,8 +45831,9 @@ drummer.cf, 1 drummondframing.com, 1 drumnbass.tk, 1 drumscrib.com, 1 -drunkcalc.com, 0 +drunkcalc.com, 1 drunkendropkes.tk, 1 +drupal.org, 1 drupalfr.be, 1 drusantia.net, 1 drusillas.co.uk, 1 @@ -45659,6 +45843,7 @@ druznek.xyz, 1 druzya.store, 1 drv.gov.ua, 1 drvanessaphua.com, 1 +drvishnusubramani.com, 0 drvonschwarz.com, 1 drwang.group, 0 drweissbrot.com, 1 @@ -45666,7 +45851,9 @@ drweissbrot.de, 1 drweissbrot.net, 1 drwilfredbrown.com, 1 drwongsuni.com.sg, 1 +drwoods.com, 1 dry-cleaning.tk, 1 +dryashplasticsurgery.com, 1 dryasinakgul.com, 1 dryasserbadran.com, 1 drybjed.net, 1 @@ -45680,6 +45867,7 @@ dryskin.ga, 1 dryskin.gq, 1 dryskin.ml, 1 dryskin.tk, 1 +dryusdan.space, 1 drywall.com.co, 1 drywallresponse.gov, 1 dryzgov.tk, 1 @@ -45724,8 +45912,8 @@ dsg.gd.cn, 1 dsgnet.hu, 1 dsgv.de, 1 dsgvo-addon.eu, 1 +dsgvo-analyse.de, 1 dsgvo.name, 1 -dsh.io, 1 dshield.org, 1 dsigroup.com.tw, 1 dsimonitor.online, 1 @@ -45749,11 +45937,9 @@ dsp-wiki.com, 1 dspace.pl, 1 dspbz.ro, 1 dspeed.eu, 0 -dsphere.in, 1 dspnor.com, 1 dsport.eu, 1 dsreal.de, 1 -dss.ro, 1 dsswise.org, 1 dsta.gov.sg, 1 dstamou.de, 1 @@ -45800,7 +45986,7 @@ dtgmns.com, 1 dtguide.ga, 1 dths.dk, 1 dtinel.org, 1 -dtk-vom-chausseehaus.de, 0 +dtk-vom-chausseehaus.de, 1 dtleague.eu, 1 dtmbnl.com, 1 dtmbx.com, 1 @@ -45819,7 +46005,6 @@ dtnx.org, 1 dtnx.social, 1 dtnxny.com, 1 dtrifonov.cf, 1 -dts-arabia.com, 1 dtslab.bg, 1 dtto.com, 1 dtune.me, 1 @@ -45828,12 +46013,14 @@ dtx.sk, 1 du.co, 1 dual-aspect.com, 1 dual-universe.ga, 1 +dual.cat, 1 dual.pw, 0 dualascent.com, 1 dualbix.com, 1 dualcore.tk, 1 dualexistence.xyz, 1 dualias.xyz, 0 +dualize.io, 1 dualuniverse.game, 1 duama.top, 1 duanemorrisinstitute.com, 1 @@ -45844,10 +46031,9 @@ dubachinn.com, 1 dubai-realestate.space, 1 dubaiaward.link, 1 dubaibliss.com, 1 -dubaicurtainfixing.ae, 1 dubaifitnesschallenge.com, 1 -dubaigrandsale.com, 1 dubailuxuryinvestors.com, 1 +dubaimonsters.com, 1 dubaipremiuminvest.com, 1 dubairun.com, 1 dubaisc.ae, 1 @@ -45861,18 +46047,20 @@ dubbelmandesign-3d-banken.nl, 1 dubboskills.com.au, 1 dubcowa.tk, 1 dubex.de, 1 +dubex.dk, 1 dubielconsulting.de, 1 dubiznes.ae, 1 dubl.tk, 1 dublesepet.com, 1 +dublindecking.ie, 1 dublinguide.ie, 1 dublinrail.tk, 1 dublinseocompany.ie, 1 duboisinternational.com, 0 duboisinvestissements.com, 1 dubolom.tk, 1 -dubovi.ch, 1 dubrava.tk, 1 +dubreuilville.ca, 1 dubrovnik.tours, 1 dubrovnikfoodtours.com, 1 dubrovskiy.cf, 1 @@ -45884,6 +46072,7 @@ dubtrack.fm, 1 dubuquecountyiowa.gov, 1 ducadu.com, 0 ducalendars.com, 1 +ducasette.it, 1 duch.cloud, 1 duchveliky.com, 1 duchveliky.cz, 1 @@ -45912,6 +46101,7 @@ duckpond.camp, 1 duckrain.com, 1 duckside.tk, 1 ducksify.com, 1 +ducksoft.fi, 1 duckstad.net, 1 duckyubuntu.com, 1 duckyubuntu.tk, 1 @@ -45958,7 +46148,6 @@ duhivip.ml, 1 duhs.edu.pk, 1 duhurensohn.de, 1 duhy.sk, 1 -duijf.io, 1 duiker101.tk, 1 duitse-herders.tk, 1 duizhangs.tk, 1 @@ -45978,7 +46167,6 @@ dukin.tk, 1 dukun.de, 1 dulas.org.uk, 1 dulce-reverie.ro, 1 -dulcebermudez.com, 1 dulcehome.ch, 1 dulceysalado.tk, 1 dulcinea.eu.org, 1 @@ -45988,16 +46176,17 @@ duleos.com.br, 1 dulmagedentalarts.ca, 1 duloxetinbestellen.gq, 1 duloxetine.gq, 1 +dulse.fr, 1 dulurtekno.co.id, 1 dulux.co.nz, 1 dulux.com.au, 1 dum.moe, 1 dum.tw, 1 -dumatv.ru, 1 dumax.fr, 1 dumb-laws.net.ru, 1 dumbdrinker.com, 1 dumbeartech.com, 1 +dumbfunded.co.uk, 1 dumek.com, 1 dumek.it, 1 dumeng.org, 1 @@ -46025,16 +46214,13 @@ dundeeutility.tk, 1 dunedot.tk, 1 dunesadventure.net, 1 dunescorporation.tk, 1 -dunesharbourbeach.com.au, 1 dungbui.co, 0 dungbui.net, 1 -dungchata.com, 1 dungenesskids.com, 1 dungeon-bbs.de, 1 dungeoncity.com, 1 dungeonedraghi.it, 1 dungeonfire.tk, 1 -dungeonlaundry.com, 1 dunia-news.tk, 1 dunkelmann.eu, 1 dunkerhosting.nl, 1 @@ -46054,6 +46240,7 @@ duo.com, 1 duobus.nl, 1 duodeno.tk, 1 duoduocha.com, 0 +duoduodazhe.com, 1 duohao.xyz, 1 duolife.us, 1 duoluodeyu.com, 1 @@ -46069,8 +46256,6 @@ dupageresults.gov, 1 dupfx.com, 1 duplicazionechiavi.it, 1 duplika.com, 1 -dupoin.co.id, 1 -dupoin.com, 1 dupree.pe, 1 dupuis.xyz, 1 duquess.com.br, 1 @@ -46078,7 +46263,6 @@ duquoinil.gov, 1 dura.si, 1 durabletravailler.tk, 1 duracell.com, 1 -duracfilm.cz, 1 durad.in.rs, 1 durad.xyz, 1 duraes.pt, 0 @@ -46098,6 +46282,7 @@ durastudio.com, 1 durbeen.pk, 1 durcal.tk, 1 durchblick-shop.de, 1 +durcoin.org, 1 duredo.com, 1 dureuil.info, 1 durhammaine.gov, 1 @@ -46121,7 +46306,7 @@ dusk.run, 1 duskraven.tk, 1 dusmomente.com, 1 dusnan.com, 1 -dusonchet-construction.ch, 0 +dusonchet-construction.ch, 1 dust.bio, 1 dust.tk, 1 dust4you.tk, 1 @@ -46129,7 +46314,6 @@ dustbox.tk, 1 dustinbrett.com, 1 dustindecker.com, 1 dustinpurdy.com, 1 -dustjacket.one, 1 dustman.tk, 1 dustpla.net, 1 dustplanet.de, 1 @@ -46139,6 +46323,7 @@ dustycloth.com, 1 dustydrinks.com, 1 dustygroove.com, 1 dustyro.se, 1 +dustyspokesbnb.ca, 1 dusupov.gq, 1 dutabisniz.com, 0 dutch-alliance.tk, 1 @@ -46179,12 +46364,15 @@ dutt.ch, 1 dutton.uk, 1 duttonmt.gov, 1 dutyfreeperfumes.tk, 1 +duurzaamgww.nl, 1 +duurzaamheidskaart.nl, 1 duurzaamwonen.amsterdam, 1 duux.com, 1 duv.al, 1 duval.info, 1 duval.li, 1 duval.ovh, 1 +duval.paris, 1 duval.pm, 1 duval.re, 1 duvalelections.gov, 1 @@ -46192,14 +46380,13 @@ duvalo.eu, 1 duvalo.info, 1 duvalo.net, 1 duvalo.sk, 1 -duvernay-asphalte.ca, 1 duvessa.tk, 1 +duwitmu.com, 1 duxbow.de, 1 duxbury-ma.gov, 1 duxi-s-feromonami.ga, 1 duxsco.de, 1 duysondang.name.vn, 1 -duythang.top, 1 duzavo.cz, 1 duzcehaberleri.tk, 1 duzcesondakika.tk, 1 @@ -46225,6 +46412,7 @@ dveri-lugansk.tk, 1 dvgsites.com, 1 dvipadmin.com, 1 dvkg.de, 1 +dvminsight.com, 1 dvn.pt, 1 dvor.ml, 1 dvorek-karlin.cz, 1 @@ -46262,7 +46450,6 @@ dwwt.eu, 1 dwwt.net, 1 dwwt.nl, 1 dwwt.org, 1 -dwz-shop.de, 1 dwz-solutions.com, 1 dwz-solutions.de, 0 dwz-solutions.eu, 0 @@ -46348,20 +46535,20 @@ dynamicengine.com, 1 dynamicfireworks.co.uk, 1 dynamicini.org, 1 dynamiclogodesigns.com, 1 +dynamicnet.net, 1 dynamicpl.us, 1 dynamicplus.it, 1 dynamicquantum.net, 1 dynamicroofingconcepts.com, 1 dynamicsandlearning.com, 1 dynamicsdays.info, 1 -dynamicservers.co.uk, 0 +dynamicservers.co.uk, 1 dynamicsnetwork.net, 1 dynamicsretailnotes.com, 1 dynamictesting.co.uk, 1 dynamictostatic.com, 1 dynamicwheelco.nz, 1 dynamicyou.co.uk, 1 -dynamis-partner.fr, 1 dynamis.tk, 1 dynamitejobs.com, 1 dynamix-tec.com, 1 @@ -46371,10 +46558,11 @@ dynarex.com, 1 dynasoft.co.ke, 1 dynastic.co, 1 dynasty-warriors.net, 1 -dynastynetwork.com, 1 dynastyredzone.com, 1 dynatos-cloud.com, 1 dyndns.au, 1 +dyneco.io, 1 +dynet.ru, 1 dynn.be, 0 dyno.com, 1 dynorphin.com, 1 @@ -46382,7 +46570,6 @@ dynorphins.com, 1 dynosend.com, 1 dynsoundmax.tk, 1 dynx.pl, 1 -dyor.io, 1 dypromed.com, 1 dyrenesverden.no, 1 dyrkar.se, 1 @@ -46466,7 +46653,7 @@ dzhypo.info, 1 dzhypo.net, 1 dzhypo.org, 1 dziaduch.pl, 1 -dziap.com, 1 +dziankowski.pl, 1 dziecismoka.pl, 1 dziekonski.com, 1 dziennikpress.pl, 1 @@ -46492,16 +46679,15 @@ dzsula.hu, 1 dzu.fund, 1 dzus.tk, 1 dzworld.com, 1 +dzyabchenko.com, 0 dzyszla.pl, 1 e-alink.com, 1 e-almott.com, 1 -e-altum.pl, 1 e-antikvar.tk, 1 e-bags.tk, 1 e-balloons.tk, 1 e-bap.net, 1 e-baraxolka.ru, 1 -e-barobirlik.com.tr, 1 e-belgia.tk, 1 e-beyanname.com.tr, 1 e-beyanname.net.tr, 1 @@ -46520,12 +46706,10 @@ e-classroom.tk, 1 e-coduct.eu, 1 e-coexist.com, 1 e-colle.info, 1 -e-collectis.fr, 1 e-commerce.news, 1 e-copys.com, 1 e-coretvasa.cz, 1 e-cottage.com.br, 1 -e-cut.ir, 1 e-dechet.com, 1 e-dengi.tk, 1 e-diabolo.tk, 1 @@ -46549,13 +46733,13 @@ e-fitnes.tk, 1 e-flotila.cz, 1 e-form.mn, 1 e-frontier.systems, 1 -e-fuels.com, 1 e-games-board.tk, 1 e-gc.de, 1 e-generator.tk, 1 e-geologia.tk, 1 e-goi.com, 1 e-gso.com, 1 +e-guestbooks.com, 1 e-guvence.com, 1 e-habitants.com, 1 e-hair.tk, 1 @@ -46593,7 +46777,6 @@ e-matras.ua, 1 e-medicines.tk, 1 e-migration.ch, 0 e-modusvivendi.com, 1 -e-monteur.nl, 1 e-mutation.com, 1 e-nail.tk, 1 e-name.tk, 1 @@ -46614,6 +46797,7 @@ e-petitions.by, 1 e-pi-log.at, 1 e-placement.tk, 1 e-planshet.tk, 1 +e-pokupki.eu, 1 e-polygraphy.tk, 1 e-privat.info, 1 e-promotion.tk, 1 @@ -46626,6 +46810,7 @@ e-rechnung.digital, 1 e-recruitment.tk, 1 e-referendum.cz, 1 e-repairs.tk, 1 +e-resident.gov.ee, 1 e-resident.me, 1 e-rest.tk, 1 e-rober.tk, 1 @@ -46633,6 +46818,7 @@ e-sauna.tk, 1 e-scraper.com, 1 e-sell.tk, 1 e-sell.today, 1 +e-servicerms.com, 1 e-shobai.com, 1 e-shonai.com, 1 e-sisyu.com, 0 @@ -46655,7 +46841,6 @@ e-tech-solution.net, 1 e-technology.tk, 1 e-techsolution.com, 1 e-techsolutions.net, 1 -e-tek.io, 1 e-tires.tk, 1 e-top.uz, 1 e-traceur-france.fr, 1 @@ -46671,7 +46856,6 @@ e-vau.de, 0 e-verify.gov, 1 e-virtus.com, 1 e-visa.mn, 1 -e-vokzal.com, 1 e-vykladkaret.cz, 1 e-walks.tk, 1 e-wish.tk, 1 @@ -46680,20 +46864,18 @@ e-worksmedia.com, 0 e-yachts.tk, 1 e-zine.tk, 1 e.cash, 1 -e.gd, 1 e.gg, 1 e.mail.ru, 1 e.wtf, 1 e02.cn, 1 e15r.co, 1 -e1981.com, 1 e1e0.net, 0 e27.co, 1 e2b.com.au, 1 e2ebrindes.com.br, 1 e2ee-meet.de, 1 e2epartners.org, 1 -e2essentialelements.com, 1 +e2essentialelements.com, 0 e2feed.com, 1 e2i.com.sg, 1 e2net.social, 1 @@ -46702,10 +46884,11 @@ e30gruppe.com, 1 e34club.com.ua, 1 e365.vip, 1 e36533.com, 1 +e3lan.net, 1 +e4.chat, 1 e42.org, 0 -e4a.org, 0 +e4a.org, 1 e4mc.link, 1 -e4tools.com, 1 e4work.com.br, 1 e5197.co, 1 e5tv.hu, 1 @@ -46734,6 +46917,7 @@ ead-italia.it, 1 eadea.net, 1 eadmt.com, 1 eaganmn.gov, 1 +eagar.com.au, 1 eagenda.com.br, 1 eagfinance.cz, 1 eagle-yard.de, 1 @@ -46745,14 +46929,17 @@ eaglecrest.us, 1 eaglecustomapparel.com, 0 eagleeye.news, 1 eagleeyeroof.com, 1 +eagleeyetrip.ru, 1 eaglefireid.gov, 1 eaglegrove.gov, 1 eaglehaslended.com, 1 eaglelakefl.gov, 1 eagleled.us, 1 eaglemoe.com, 1 +eaglemtn.com, 0 eaglenusa.my.id, 1 eaglepasstx.gov, 1 +eagleplanners.agency, 1 eagler.tk, 1 eagleriverwi.gov, 1 eaglesightproperties.tech, 1 @@ -46764,6 +46951,7 @@ eagletrt.it, 1 eaglevilletn.gov, 1 eaglewreck.info, 1 eagleyecs.com, 1 +eagrants.com, 1 eahea.org, 1 eai-work-tool.com, 1 eaimty.com, 1 @@ -46820,6 +47008,7 @@ earnet.tk, 1 earni.fi, 1 earningsgames.tk, 1 earningthatis.tk, 1 +earnosethroat.co.za, 1 earpconsult.co.uk, 1 earth-performance-indicator.com, 1 earth-quake.tk, 1 @@ -46832,18 +47021,20 @@ earth-syst-sci-data.net, 1 earth-system-dynamics.net, 1 earth-system-science-data.net, 1 earth.gov, 1 +earthai.ai, 1 earthbound.tk, 1 earthcam.com, 1 earthcam.net, 1 +earthcore.com, 1 earthcorporation.cf, 1 eartheld.tk, 1 earthjustice.org, 1 earthlink.net, 1 +earthlinkrealestate.ae, 1 earthpixz.com, 1 earthpoints.org, 1 earthquake.gov, 1 earthsalala.com, 1 -earthseed.cc, 1 earthshotprize.org, 1 earthsocialism.org, 1 earthsolidarity.org, 1 @@ -46859,8 +47050,10 @@ easew.com, 1 eashwar.com, 1 easiest-way.de, 1 easlerlaw.com, 1 +easol.com, 1 east-front-miniatures.com, 0 east-line.su, 1 +east-westlogistics.com, 1 eastafricafeed.ga, 1 eastarapmetdistco.gov, 1 eastarm.net, 1 @@ -46871,14 +47064,12 @@ eastchesternyfd.gov, 1 eastcoastautoconcepts.com, 1 eastcoastcars.net, 0 eastcoastexports.tk, 1 -eastcoastpep.com, 1 eastcoasttours.com.au, 1 eastcornwallsrt.org.uk, 1 eastcottvets.co.uk, 1 eastcyclehub.cz, 1 eastdream.tk, 1 eastendonline.tk, 1 -easternconvey.com.au, 1 easternenterprise.com, 1 easternliners.com, 1 easternmontanafair.gov, 1 @@ -46907,6 +47098,7 @@ eastping.com, 1 eastplan.co.kr, 1 eastportcorp.tk, 1 eastprovidenceri.gov, 1 +eastrohelp.com, 1 easts.org.uk, 1 eastshare.ml, 1 eastside.tk, 1 @@ -46939,7 +47131,7 @@ easy-immo.info, 1 easy-immo.org, 1 easy-katka.ga, 1 easy-pornvideos.com, 1 -easy2b.pt, 1 +easy-rpg.org, 1 easy2bathe.co.uk, 1 easyaccounting.asia, 1 easyadsnbanners.tk, 0 @@ -46954,6 +47146,7 @@ easybranches.com, 1 easycater.com, 1 easycoding.org, 1 easycom.tk, 1 +easyconstat.com, 1 easycontentplan.com, 1 easycrochet.tk, 1 easydmarc.am, 1 @@ -46961,13 +47154,12 @@ easydonate.tk, 1 easydumpsterrental.com, 0 easyenrollment.net, 1 easyescortwebsites.com, 1 -easyeuicc.org, 1 easyfiles.ch, 1 easyfiles.gq, 1 -easyfilings.co.uk, 1 easyfloors.ae, 1 easyfoto.tk, 1 easygenerator.com, 1 +easygrade.ai, 1 easygrow.tk, 1 easyhacks.net, 1 easyhome.ag, 1 @@ -47003,7 +47195,6 @@ easymun.com, 1 easynm.cn, 1 easynotary.ch, 1 easyocm.hu, 1 -easyodds.com, 1 easyonlinetest.tk, 1 easypay.bg, 1 easypayment.cf, 1 @@ -47016,7 +47207,6 @@ easyqr.codes, 0 easyradio.gq, 1 easyretro.io, 1 easyrpg.org, 1 -easyseo.pro, 1 easyshare.gq, 1 easysignup.com, 1 easyska.tk, 1 @@ -47027,6 +47217,7 @@ easysolution.eu, 1 easyspace-storage.com, 1 easysubmit.tk, 1 easytamil.tk, 1 +easytec-info.de, 1 easytestonline.tk, 1 easytext.ga, 1 easytiles.com, 1 @@ -47069,12 +47260,14 @@ eatwith.com, 1 eauclairecounty.gov, 1 eaucube.com, 1 eaugenethomas.cf, 1 +eaujob.com, 1 eauto-cash.de, 1 eautocash.de, 1 eautolease.com, 1 eauxdevienne.fr, 1 eava.ga, 1 eavafm.com, 1 +eawmaas.top, 1 eazy.de, 1 eazy.gr, 1 eazycert.in, 1 @@ -47086,7 +47279,6 @@ eazytailors.ga, 1 eazzhome.com, 1 eazzy.tk, 1 eb-net.de, 1 -eb-suite.com, 1 eb7.jp, 1 eba.com.au, 1 ebac.com, 1 @@ -47129,8 +47321,9 @@ ebenda.org, 1 ebenica.sk, 1 ebenvloedaanleggen.nl, 1 eberharter-steine.at, 1 -eberls.com, 0 +eberls.com, 1 eberspacher-rus.ru, 1 +ebertlang.com, 0 ebest.co.jp, 1 ebetbananom.tk, 1 ebeton.cz, 1 @@ -47169,7 +47362,6 @@ ebonymilftube.com, 1 ebonyriddle.com, 1 ebonytube.tv, 1 eboocker.de, 1 -ebook-fieber.de, 1 ebookabc.tk, 1 ebookdep.com, 1 ebookdrive.tk, 1 @@ -47200,7 +47392,6 @@ ebscomedical.com, 1 ebuha.ga, 1 ebuku.tk, 1 eburg.ml, 1 -ebury.com, 1 ec-baran.de, 1 ec-bayreuth.de, 1 ec-current.com, 1 @@ -47235,13 +47426,16 @@ ecco-verde.it, 1 eccoholiday.com, 1 eccoilmenu.it, 1 eccologic.net, 1 +eccoplastic.com, 1 eccouncil.org, 1 eccu.edu, 1 ecdn.cz, 1 +ecdpm.org, 1 ece-inc.net, 1 ecelembrou.ovh, 1 ecemella.com, 1 ecemi-alu.com, 1 +ecency.com, 1 ecetechsol.com, 1 ecetiner.com, 1 ecfunstalls.com, 1 @@ -47256,17 +47450,21 @@ echidna.com.au, 1 echidnalock.com.au, 1 echinus.solutions, 1 echo-bms.com, 1 +echo-in.info, 1 echo-n.nz, 0 echo-online.de, 1 echoanalytics.com, 1 echobridgepartners.com, 1 echocolate.xyz, 1 echodyne.com, 1 +echoesanddust.com, 1 echoesbase.com, 1 echoeshq.com, 0 echoesin.com, 1 +echofoxtrot.co, 1 echoit.net, 1 echoit.net.au, 1 +echoit.services, 1 echomail.org, 1 echopaper.com, 1 echorecovery.org, 1 @@ -47282,7 +47480,6 @@ echoteam.ml, 1 echotone.tk, 1 echovintage.com.br, 1 echowave.io, 1 -echs.top, 1 echt.ga, 1 echtcache.ga, 1 echtebbq.nl, 1 @@ -47300,6 +47497,7 @@ eckel.co, 1 eckerl.org, 1 eckersondesign.com, 1 eckfordtownshipmi.gov, 1 +eckindustries.com, 1 eckler.ca, 1 eckotech.fr, 1 eckstein.tech, 1 @@ -47313,24 +47511,21 @@ eclipse-foundation.de, 1 eclipse-foundation.eu, 1 eclipse-foundation.hk, 1 eclipse.eu, 1 -eclipse.org, 1 eclipse4academia-startups.com, 1 eclipsebank.com, 1 eclipseforum.tk, 1 eclipsegame.tk, 1 eclipseide.org, 1 eclipseinspectionservices.co.uk, 1 -eclipseservicehub.com, 1 eclipsesource.com, 1 eclipsestatus.io, 1 -eclipsesuite.com, 1 eclixo.com, 1 ecmx.eu, 1 +ecn.ir, 1 ecnetworker.com, 1 -eco-care.gr, 1 eco-derattizzazione.it, 1 +eco-gripfloor.com, 1 eco-nyashky.com.ua, 1 -eco-pestoff.com, 1 eco-price.ru, 1 eco-rally.cz, 1 eco-rubber.ru, 1 @@ -47342,8 +47537,6 @@ eco69.com, 1 eco69.eu, 1 eco69.pl, 1 ecoacqua.net, 1 -ecoanirnalhealth.com, 1 -ecoanlmalhealth.com, 1 ecobalispa.com, 1 ecobiosaude.com.br, 1 ecobunker.co.uk, 1 @@ -47361,7 +47554,6 @@ ecodepur.fr, 1 ecodesign-labo.jp, 1 ecodesigns.nl, 1 ecoelectricsandiego.com, 1 -ecoelegance.com.au, 1 ecoeuropa.cf, 1 ecofinancing.com, 1 ecofoolad.com, 1 @@ -47376,6 +47568,7 @@ ecohaus-pinklao-salaya.com, 0 ecoheatcool.co.uk, 1 ecohimdv.tk, 1 ecohostingservices.uk, 1 +ecohustler.com, 1 ecoindia.tk, 1 ecojob.ga, 1 ecolala.my, 1 @@ -47391,6 +47584,7 @@ ecole-parfum.com, 1 ecole-paysage.fr, 1 ecole-saint-yves-rennes.fr, 1 ecole.academy, 1 +ecolebiblique.eu, 1 ecoledeconduiteportneuf.com, 1 ecolelacime.be, 1 ecolenotredame.tk, 1 @@ -47398,6 +47592,7 @@ ecolequebec.com, 0 ecoles-conde.com, 0 ecolesingelijn.be, 1 ecolint.ch, 1 +ecolodgedebosuil.nl, 1 ecologeek.tk, 1 ecologiapolitica.info, 1 ecologic-france.com, 1 @@ -47416,11 +47611,9 @@ ecommercenews.asia, 1 ecommercenews.ca, 1 ecommercenews.co.nz, 1 ecommercenews.com.au, 1 -ecommercenews.ie, 1 ecommercenews.in, 1 ecommercenews.uk, 1 ecommerceuropa.eu, 1 -ecomove.pt, 1 ecomovers.com, 1 ecompen.co.za, 1 ecomsight.com, 0 @@ -47430,18 +47623,20 @@ ecomweb.ro, 0 econativa.pt, 1 econcept.li, 1 econclubny.org, 1 +econews.pt, 1 econfia.cf, 1 econmarketingdigital.com, 1 economia.cl, 1 economias.pt, 1 economic-sanctions.com, 1 -economiciqhub.com, 1 +economic.rs, 1 economicnews.ga, 1 economics-colleges.com, 1 economie.gouv.fr, 1 economie2.alsace, 1 economiefidu.ch, 0 economipedia.com, 1 +economistebtp.com, 1 economixportal.tk, 1 economizaplay.com.br, 1 economycarrentalscyprus.com, 1 @@ -47455,6 +47650,7 @@ ecopaint.pt, 1 ecopark.asia, 1 ecopath.org, 1 ecopiscines.fr, 1 +ecopond.co.nz, 1 ecopowerenginewash.com, 0 ecopoweroil.com, 1 ecorak.de, 1 @@ -47476,6 +47672,7 @@ ecosurfsupply.com, 1 ecosystem.atlassian.net, 1 ecosystemmanager-uat1.azurewebsites.net, 1 ecotecelevator.com, 1 +ecotestantigentest.com.au, 1 ecotone-tottori.com, 1 ecotrade-disinfestazioni.it, 1 ecotsa.com, 1 @@ -47486,10 +47683,8 @@ ecoupakovka.ga, 1 ecourbano.tk, 1 ecourtdate.com, 1 ecoute.tv, 1 -ecovadis.ltd, 1 ecoventfix.com, 1 ecowater.com, 1 -ecowatt.pt, 1 ecowoman-armenian.tk, 1 ecowoman-bengalian.tk, 1 ecowoman-indonezian.tk, 1 @@ -47497,6 +47692,7 @@ ecowoman-turkey.tk, 1 ecowoman-ukraine.tk, 1 ecozip.it, 1 ecozona.tk, 1 +ecpa-eg.com, 1 ecpic.gov, 1 ecpl.ru, 1 ecr-test-partnapp.azurewebsites.net, 1 @@ -47512,7 +47708,6 @@ ecrownoffire.com, 1 ecrums.gov, 1 ecsafety.com, 1 ecscoutgroup.cf, 1 -ecssr.ae, 1 ecsupplyinc.com, 1 ect-cpg.com, 1 ect-telecoms.com, 1 @@ -47529,7 +47724,6 @@ ecupcafe.com, 0 ecv.fr, 1 ecvma.fr, 1 ecvtd.gov, 1 -ecwsf.org, 1 ecxforum.com, 1 ecybersport.com, 1 ecyy.net, 1 @@ -47537,12 +47731,11 @@ eczacionline.com, 1 ed-heads.com, 1 ed-medications.ml, 1 ed-studios.tk, 1 -ed-w.de, 1 ed.careers, 1 -ed.gov, 1 ed.gs, 1 ed.nl, 1 ed394jed.fr, 1 +eda-az.com, 1 eda-records.com, 1 eda.cooking, 0 eda.gov, 1 @@ -47560,12 +47753,11 @@ edb.gov.sg, 1 edboothandassociates.com, 1 edc-msp.com, 1 edcdn.net, 1 +edd-miles.com, 1 eddesign.ch, 1 eddi.org.au, 1 eddie.website, 1 -eddieeinbinder.com, 1 -eddiemiller.agency, 1 -eddmil.es, 0 +eddmil.es, 1 eddns.de, 1 eddns.eu, 1 eddokloosterman.com, 1 @@ -47575,6 +47767,7 @@ eddygangloff.com, 1 eddyn.net, 0 eddysystem.tk, 1 eddyworld.tk, 1 +edeals.co.com, 1 edeals.com.co, 1 edeca.net, 1 ededdeddy.tk, 1 @@ -47605,7 +47798,6 @@ edenpureheater.tk, 1 edenredbenefits.com, 0 edenvaleplumber24-7.co.za, 1 eder-steiner.at, 1 -ederevx.us, 1 edeseschoolvereniging.nl, 1 edevletkapisi.org, 1 edfdentalcenter.tk, 1 @@ -47614,7 +47806,6 @@ edflex.com, 1 edfoc.org.uk, 1 edg.nl, 1 edgar.mx, 1 -edgarbollow.com, 1 edgarcountyillinois.gov, 1 edgarphotography.net, 1 edgarsmission.org.au, 1 @@ -47623,12 +47814,15 @@ edgartamarit.com, 1 edgarwi.gov, 1 edgarz.tk, 1 edge-cloud.net, 1 +edgecase.ru, 1 edgeconnectnj.net, 1 edgecustomersportal.com, 1 +edgeimpulse.com, 1 edgeinvestments.estate, 1 edgeless.pp.ua, 0 edgelogs.com, 1 edgemagazine.net, 1 +edgemasterspaint.com, 1 edgeofnoservers.com, 1 edgeservices.co.uk, 1 edgetalk.net, 1 @@ -47645,9 +47839,9 @@ edi-gate.com, 1 edi-gate.de, 1 edibarcode.com, 1 ediberto.tk, 1 +ediblesema.com, 1 edicionanticipada.com, 1 edicionescrimentales.tk, 1 -edificaciongeneracional.com, 1 edik.tk, 1 edikacomptabilite.com, 1 edilane.de, 1 @@ -47680,7 +47874,6 @@ edited.pl, 1 editflow.org, 1 edith-thellmann.com, 1 edithlouw.tk, 1 -edithouse.dk, 1 edition-sonblom.de, 0 editions-campanile.fr, 1 editions-metailie.com, 1 @@ -47698,7 +47891,7 @@ edlinger.at, 1 edlinger.mobi, 1 edlong.com, 1 edman007.com, 1 -edmates.com, 0 +edmates.com, 1 edmedications.tk, 1 edmedsonline.tk, 1 edmilia.tk, 1 @@ -47707,9 +47900,9 @@ edmondok.gov, 1 edmundcelis.com, 1 edmundo.ro, 1 edmundy.tk, 1 +edmwaves.org, 1 edocr.com, 1 edok.com.br, 1 -edoo.pl, 1 edopomoga.gov.ua, 1 edoss.co.za, 0 edotplus.ch, 1 @@ -47725,9 +47918,11 @@ edrgroup.nl, 1 edrosd.cf, 1 edrost.tk, 1 edsby.com, 0 +edscha.com, 1 edscolors.com, 1 edservicing.com, 1 edshogg.co.uk, 1 +edsm.net, 1 edsplain.ro, 1 edstem.org, 1 edstep.com, 1 @@ -47754,11 +47949,11 @@ edubirdie.com, 1 edublognews.tk, 1 edubox.pt, 1 educ-aid.site, 1 -educa.cloud, 1 educabis.tk, 1 educacaopocos.com.br, 1 educacionnm.ml, 1 educacionvirtual.com.ar, 1 +educaenvivo.com, 1 educandoamihijo.com, 1 educard.co.at, 1 educart.mx, 1 @@ -47775,12 +47970,11 @@ educationdepartment.ml, 1 educationet.tk, 1 educationfinancenetwork.org, 1 educationfirst.ml, 1 -educationforracialequity.com, 1 educationgov.tk, 1 educationhighquality.ml, 1 educationism.tk, 1 +educationmalaysia.co.uk, 1 educationone.ml, 1 -educationperfect.com, 1 educationportal.ga, 1 educationportal.tk, 1 educationstatistic.tk, 1 @@ -47800,6 +47994,7 @@ educheck.tech, 1 educourse.nl, 1 edudip-next.com, 1 edudip.com, 1 +edufever.com, 1 edufever.in, 0 eduflow.at, 1 edugeton.com, 1 @@ -47809,7 +48004,6 @@ eduhub.ml, 1 eduhublisbon.com, 1 eduid.se, 1 eduif.nl, 0 -edukar.xyz, 1 eduki.com, 1 edukle.com, 0 edularidea.com, 1 @@ -47823,18 +48017,20 @@ edumerson.com, 1 edumontclasses.com, 1 edunaut.com.au, 1 edunet.gq, 1 -edunia.io, 1 edunian.com, 1 edunoor.tk, 1 eduoneschool.tk, 1 edupay.co.at, 1 +edupesa.com, 1 eduproject.tk, 1 eduproquality.tk, 1 eduqfix.com, 1 +eduradiadores.com.br, 1 eduroam.no, 1 eduroam.uy, 1 edusanjal.com, 1 eduschool.ml, 1 +edusektor.de, 0 edusenca.nl, 1 edusercontent.com, 1 eduson.pl, 1 @@ -47898,6 +48094,7 @@ eeetrust.org, 1 eef.com.pe, 1 eegaming.org, 1 eegaming.tk, 1 +eehitus.ee, 0 eeia.com, 1 eeiletudiant.com, 1 eekelen.net, 1 @@ -47909,13 +48106,16 @@ eemcevn.com, 1 een-eenvoudige-test-voor-de-maximum-lengte-van-een-nederlandse.nl, 1 een.com, 1 eenfotowaard.nl, 1 +eenmailsturen.nl, 0 eentweevijf.be, 1 +eenvren.com, 1 eenvxing.com, 1 eenzwolle.nl, 1 eeqj.com, 1 eer.cz, 1 eer.io, 1 eeri.org, 1 +eerieglowgames.com, 1 eerlijkland.com, 1 eerlijkland.eu, 1 eerlijkland.nl, 1 @@ -47932,6 +48132,7 @@ eexecutive.in, 1 eeyo.re, 1 eeyo.uk, 1 eezepc.com, 1 +eezoublog.com, 1 ef.gy, 1 efaas.nl, 1 efactuurdirect.nl, 1 @@ -47958,6 +48159,7 @@ efesocollins.org, 1 efesocollins.org.nz, 1 efesoformayor.co.nz, 1 efesoformayor.nz, 1 +efesoformayor.org, 1 efesoformayor.org.nz, 1 eff.org, 1 effdocs.com, 1 @@ -48021,6 +48223,7 @@ efre-bw.de, 1 efsalon.net.pe, 1 efsanesi.tk, 1 eft.boutique, 1 +eftcorp.biz, 1 eftelingcraft.net, 1 efterfest.tk, 1 eftotoekspertizbalikesir.com, 1 @@ -48030,16 +48233,18 @@ eg-quaternary-sci-j.net, 1 eg-secure.co.jp, 0 eg22.com, 1 eg7.co.jp, 1 +egab.co, 1 egabroaventuras.tk, 1 egais.ml, 1 egal24.de, 1 egarden.it, 1 egb.at, 0 -egbc.ca, 1 +egbc.ca, 0 egbert.net, 1 egbertsen.tk, 1 egc.ink, 1 egdsk.ru, 1 +egegesh.ru, 1 egehem.se, 1 egenya.cl, 0 egeozcan.com, 0 @@ -48048,6 +48253,7 @@ egevpare.tk, 1 egfl.org.uk, 1 egg-events.com, 1 egg-ortho.ch, 1 +eggblast.com, 1 eggc.at, 1 eggel.ch, 1 eggen.dk, 1 @@ -48079,13 +48285,12 @@ eggqvq.com, 1 eggrolls.ml, 1 egh.ir, 1 egiftcards.be, 1 -egiftified.com, 1 egilopaseryh.tk, 1 -eginfracloud.uk, 1 egins.tk, 1 egipet-tiz.tk, 1 egiptwakacje.tk, 1 egitim.academy, 1 +egitimpusulam.com, 1 egito.pl, 1 egittophilia.tk, 1 eglantier.eu, 1 @@ -48093,8 +48298,8 @@ eglinlife.net, 1 eglise-crc.be, 1 egliseclichy92.fr, 1 eglisedenantes.fr, 1 -egly.se, 1 egm-sakura.com, 1 +egmbypga.com, 1 ego4u.com, 1 ego4u.de, 1 egoclan.tk, 1 @@ -48108,8 +48313,10 @@ egorka.ml, 1 egoroskope.tk, 1 egos-online.com, 1 egoscolumn.tk, 1 +egotickets.com, 1 egotripproductions.org, 1 egoutierrpaquette.ca, 1 +egov.digital, 1 egrabby.com, 1 egrasmanipur.nic.in, 1 egreensvape.com, 1 @@ -48117,7 +48324,6 @@ egregius.be, 0 egres.xyz, 1 egretail.no, 0 egrojsoft.info, 1 -egroom.pro, 1 egroupware.org, 1 egt-bg.com, 1 egt-digital.com, 1 @@ -48144,6 +48350,7 @@ egzotikusfuszerek.hu, 1 egzotique.com, 1 eh-huebner-stiftung.de, 1 ehaccp.it, 1 +ehachettefle.com, 1 eharmony.ca, 1 eharmony.com, 1 ehazi.hu, 1 @@ -48153,9 +48360,8 @@ ehcommerce.com, 1 ehealth.gov.au, 1 ehealth.kg, 1 eheberg.com, 1 -eheberg.fr, 1 eheliche-disziplin.schule, 1 -eheringe-shop24.de, 0 +eheringe-shop24.de, 1 eheya.net, 1 ehif.ee, 1 ehipaa.com, 1 @@ -48163,12 +48369,12 @@ ehlers-net.de, 1 ehlersdanlos.dk, 1 ehlersdanlos.tk, 1 ehliyetsinavsorulari.org, 1 +ehmsen.nu, 1 ehmtheblueline.com, 1 ehne.de, 1 ehome.im, 1 ehometools.com, 1 ehorizon.jp, 1 -ehourapp.com, 1 ehpad-ariege.fr, 1 ehpsmt.gov, 1 ehr.bg, 1 @@ -48188,6 +48394,7 @@ ehub.sk, 1 ehuber.info, 1 ehubtt.org, 1 ei-bo.org, 1 +eiacampoguamal.com, 1 eiao.me, 1 eiber.net, 1 eibich.de, 1 @@ -48226,7 +48433,6 @@ eijil.com, 1 eijo.saarland, 1 eijsink.nl, 1 eikenskaden.tk, 1 -eikipedia.org, 1 eiklandenergy.com, 1 eiko-dch.ac.jp, 1 eiko.moe, 1 @@ -48250,7 +48456,6 @@ einfach-fitz.at, 1 einfach-was-eigenes.com, 1 einfach-was-eigenes.de, 1 einfachkiss.at, 1 -einfachverbeamtet.de, 1 einfachwaseigenes.de, 1 einheizpreis.de, 1 einhorn.space, 1 @@ -48258,6 +48463,7 @@ einmonolog.de, 1 eino.world, 1 einreiseanmeldung.de, 1 einsatzstiefel.info, 1 +einstein-themanandhismind.net, 1 einsteinathome.org, 1 einsteinbros.com, 1 einsteinium.fr, 1 @@ -48273,7 +48479,6 @@ eirgroup.com.au, 1 eirik.eu, 1 eiriksdottir.is, 1 eirikyrolae.tk, 1 -eis.org.uk, 1 eisaev.ru, 1 eisblau.org, 1 eisei-iinkai.com, 1 @@ -48288,10 +48493,10 @@ eisenstark.de, 1 eisenzelt.de, 1 eisernes-kreuz.tk, 1 eiskratzer-bedrucken.de, 0 +eisneramperadvisory.com, 1 eit-solutions.com.au, 1 eit-web.de, 0 eitbtaldea.eus, 1 -eito.com.au, 1 eitt.pl, 1 eivanec.com, 1 eivavolleyball.com, 1 @@ -48302,7 +48507,6 @@ ejcabinets.com, 1 ejderrapgott.de, 1 ejdv-anmeldung.de, 1 eje.cz, 1 -ejelectrical.com.au, 1 ejerciciosmemoria.com, 1 ejidelak.cz, 1 ejkathome.nl, 1 @@ -48340,7 +48544,6 @@ ekalisch.de, 1 ekamfoundationmumbai.org, 0 ekamus.tk, 1 ekatalendra.com, 1 -ekaterinagolubovich.exposed, 1 ekati.ru, 1 ekawaiishop.com, 1 ekb-avia.ru, 0 @@ -48362,10 +48565,8 @@ ekivita.eu, 1 ekklesia-web.com, 1 eklepka.com, 1 eklitzke.org, 1 -ekloz.org, 1 ekmanager.tk, 1 ekmo.cz, 1 -eknotec.co, 1 eko69.pl, 1 ekoazyl.pl, 1 ekobudisantoso.net, 1 @@ -48387,8 +48588,9 @@ ekonomska.tk, 1 ekophone.bg, 1 ekoport.ru, 1 ekosaltis.lt, 1 -ekospajzka.cz, 1 +ekosf.ru, 1 ekostecki.de, 1 +ekourbanisterna.se, 0 ekowibowo.com, 1 ekpj.jp, 1 ekranoplan-lun.ru, 1 @@ -48410,12 +48612,10 @@ ekzcrosstour.ch, 1 ekzotika.tk, 1 el-akses.com, 1 el-cell.com, 1 -el-d.in, 1 el-hossari.com, 1 el-jefe.me, 1 el-masri.bg, 1 el-mundo.tk, 1 -el-sale.ru, 1 el-tatwer.tk, 1 ela-lift.ru, 1 ela-n.de, 1 @@ -48426,11 +48626,11 @@ elaborate.ru, 1 elaboratefiction.com, 1 elad.wtf, 1 eladalfassa.com, 1 +eladerezo.com, 1 elaegypt.org, 1 elahejalilvand.com, 1 elaheze.com, 0 elahuehuete.art, 1 -elaine.is, 1 elainerock.com, 1 elakiri.cf, 1 elalmibar.com, 1 @@ -48458,14 +48658,12 @@ elba-hotel.tk, 1 elbaal.gov, 1 elbaradei.com, 1 elbattack-entruempelung.de, 1 -elbe-umzuege.de, 1 elbelehmbau.de, 1 elbersdometechniek.tk, 1 elbetech.net, 1 elbiaadmin.sk, 1 elbiahosting.sk, 1 elbir.tk, 1 -elblogdeldev.es, 1 elblogdeldinero.com, 1 elblogdezoe.es, 1 elblok.com, 1 @@ -48483,13 +48681,14 @@ elcanonjusto.tk, 1 elcarajo.tk, 1 elchamandelaprosperidad.org, 1 elchanchoganador.com, 1 +elcheapoflags.com, 1 elcient.com, 1 elcigaro.bg, 1 elcin.tk, 1 -elcofrecolecciones.com, 1 elcom.au, 1 elcom.com.au, 1 elcom.net.au, 1 +elcomcloud.com, 1 elcomcms.au, 1 elcomcms.com, 1 elcomcms.com.au, 1 @@ -48527,6 +48726,7 @@ elderreviews.gq, 1 elderscrolls.tk, 1 eldershope.com, 1 eldersindia.com, 1 +eldevo.com, 1 eldhestar.is, 1 eldiario.net, 1 eldiedesign.com, 1 @@ -48536,6 +48736,7 @@ eldisagjapi.de, 1 eldorado.aero, 1 eldoradocylinders.com, 1 eldoradoil.gov, 1 +eldoradoinsiders.com, 0 eldoradotechnical.com, 1 eldrid.ge, 1 ele-sm.com, 1 @@ -48550,8 +48751,11 @@ electa-sourcing.com, 1 electerious.com, 1 electicofficial.com, 0 electionpresidentiellegabon2009.ga, 1 +electionrunners.com, 1 elections-sintmaartengov.org, 1 elections.ca, 1 +elections.nz, 1 +electionsbycounty.com, 1 electionsdatabase.com, 1 electionsshelbytn.gov, 1 electmikewaters.com, 1 @@ -48569,16 +48773,14 @@ electrical-schools.com, 1 electricalandelectronicsengineerinformation.ga, 1 electricalengineeringapp.com, 1 electricalengineers.tk, 1 -electricalfencingedenvale.co.za, 1 -electricalfencingroodepoort.co.za, 1 electricalmalibu.com, 1 +electricaloakpark.com, 1 electricalpacificpalisades.com, 1 electricalwestlakevillage.com, 1 electricannihilation.tk, 1 electricbeast.co, 1 electriccoin.co, 1 -electricfencealberton.co.za, 1 -electricfencelonehill.co.za, 1 +electricdosvientos.com, 1 electricfencingpinetown.co.za, 1 electricfireplaces.tk, 1 electricgatemotoralberton.co.za, 1 @@ -48589,21 +48791,28 @@ electricgatemotorsroodepoort.co.za, 1 electricgypsies.nl, 1 electrichome.fr, 1 electriciancenturion24hours.co.za, 1 +electriciannewburypark.com, 1 electricianpacificpalisades.com, 1 electricianpretoria24-7.co.za, 1 electricians-roodepoort.co.za, 1 electriciansportelizabeth.co.za, 1 +electricianthousandoaks.com, 1 electricienasnieres.fr, 1 electricimagination.co.uk, 1 electricity.tk, 1 electricityplans.com, 1 electrickiwi.co.uk, 1 electricmalibu.com, 1 +electricmoorpark.com, 1 electrico.tk, 1 +electricoakpark.com, 1 electricpower.tk, 1 electricpulp.com, 1 +electricsimivalley.com, 1 +electricwestlakevillage.com, 1 electricwokstore.com, 1 electriczone.tk, 1 +electrijob.com, 1 electrochef.es, 1 electrocomplect.com.ua, 1 electrodomesticos.tk, 1 @@ -48612,7 +48821,6 @@ electroforum.tk, 1 electrofreakz.tk, 1 electrofusion.de, 1 electrogenic.co.uk, 1 -electroheatinduction.com.mx, 1 electrohelp.ga, 1 electroiq.com, 1 electrolandia.tk, 1 @@ -48626,7 +48834,6 @@ electromec.net, 1 electromec.org, 1 electromenager.tk, 1 electromotor.tk, 1 -electron-switch.world, 1 electronic-ignition-system.com, 1 electronicafacil.net, 1 electronicaripol.es, 1 @@ -48641,9 +48848,9 @@ electronsweatshop.com, 1 electropromdq.com.ar, 1 electroscope.com.au, 1 electrosoftcloud.com, 0 -electrosoup.com, 1 electrostatics.com, 1 electrostore.com.ec, 1 +electrotounes.tn, 1 electroyclima.es, 1 electrozona.bg, 1 electrozone.bg, 1 @@ -48666,6 +48873,7 @@ elegantlatex.tk, 1 elegantly-clean.co.uk, 1 elegantseagulls.com, 0 eleganza.ga, 1 +eleicoes2018.com, 1 elejido.es, 1 elejordemarketingconsultancy.com, 1 elekner.tk, 1 @@ -48673,7 +48881,6 @@ elekta.com, 1 elektiriklidireksiyontamiri.com, 1 elektiriktasarruf.tk, 1 elektrac.cz, 1 -elektricketrhovisko.sk, 1 elektriker-frankfurt.eu, 1 elektriker-notdienst-zentrale.de, 1 elektrilevi.ee, 1 @@ -48711,6 +48918,8 @@ elektromicrosystems.pl, 1 elektromobil-zubehoer.de, 1 elektromosev.cz, 1 elektromotor.tk, 1 +elektron-elektrotechnik.de, 1 +elektronicka-servisni-knizka.cz, 1 elektronickakancelar.cz, 1 elektroniksigarasehri1.com, 1 elektronische-post.org, 1 @@ -48729,17 +48938,10 @@ elektrotechnik-schreck.de, 1 elektrotechnik-schwab.de, 1 elektrotechniker-beck.de, 1 elektrownie-tanio.net, 1 -elektrum.eu, 1 -elektrum.lv, 1 -elektrumdrive.com, 1 -elektrumdrive.ee, 1 -elektrumdrive.lt, 1 -elektrumdrive.lv, 1 -elektrumloterija.lv, 1 +elektrumgroup.com, 1 elektryczka.pl, 1 elelenin.cf, 1 elemac.com.my, 1 -elemarket.pl, 1 elemenik.com, 1 elemenop.tk, 1 element-ppf.com, 1 @@ -48758,6 +48960,7 @@ elementarewatson.it, 1 elementarium.cf, 1 elementarium.ga, 1 elementarythegame.com, 1 +elementarywave.com, 0 elementblend.com, 1 elementbookings.com, 1 elementedigitale.ro, 1 @@ -48786,6 +48989,7 @@ elenapulizieroma.it, 1 elenaristeska.tk, 1 elenaristeskaweb.tk, 1 elenashilko.ga, 1 +elenatranslations.nl, 1 elenatroncone.tk, 1 elenavoce.cf, 1 elenayulkina.ru, 1 @@ -48797,11 +49001,13 @@ elenta.lt, 1 eleonardo.tk, 1 eleonora.gay, 1 eleonoraanzini.tk, 1 +eleonoramazzola.com, 1 eleonorapapallo.tk, 1 eleonrp.tk, 1 eleoonline.net, 1 elephant-orchestra.com, 1 elephant-orchestra.cz, 1 +elephantartonline.com, 1 elephantbasslab.tk, 1 elephantia.cf, 1 elephantorchestra.cz, 1 @@ -48837,14 +49043,13 @@ elevatewebdesigns.com, 1 elevationplumbingandheating.com, 1 elevator.ee, 1 elevatoraptitudetest.com, 1 -elevaweb.cl, 0 +elevaweb.cl, 1 elevelo.eu, 1 elevenbeta.tk, 1 elevenensemble.tk, 1 eleventhhouraltar.com, 1 eleventhhourwatch.com, 1 elever-events.com, 1 -elevynglobal.com, 1 elexel.ru, 1 elexon.co.uk, 1 elexprimidor.com, 1 @@ -48856,7 +49061,6 @@ elfnon.com, 1 elforat.tk, 1 elforno.gr, 1 elforo.tk, 1 -elfpar.com.ua, 1 elfranco.tk, 1 elfrancotirador.tk, 1 elfussports.com, 0 @@ -48893,11 +49097,12 @@ eliasojala.me, 1 eliasong.com, 0 eliassierra.pro, 1 eliaswendt.com, 0 +eliasworldmedia.com, 0 eliaustvarjaspomine.si, 1 eliav.tk, 1 -eliava-gartenbau.de, 1 elibidore.ml, 1 elicdn.com, 1 +elidiaz.com, 1 elie.net, 1 elielaloum.com, 0 elifelabs.com, 1 @@ -48908,20 +49113,17 @@ eligibilis.com, 1 eligibility.com, 1 eligible.com, 1 eligibleapi.com, 1 -eligimed.com, 1 eligrey.com, 1 eliguli.com, 1 elijahbrown.tk, 1 elijahgrey.com, 1 -elijahtreefelling.com, 1 elikers.ml, 1 elimidrol.com, 1 eliminations.tk, 1 elimitecreamforsale.ga, 1 elimperiolatino.com, 1 -elina.pp.ua, 0 +elina.pp.ua, 1 elinaflower.com, 1 -elinedetrouwambtenaar.nl, 1 elinformatico.tk, 1 elink.io, 1 elinks.tk, 1 @@ -48968,7 +49170,6 @@ elite-nakhodka.tk, 1 elite-porno.ru, 1 elite-tools.tk, 1 elite-units.tk, 1 -elite.cards, 1 elite.memorial, 1 elite12.de, 1 eliteaccounting.co.nz, 1 @@ -48992,6 +49193,7 @@ elitedns.org, 1 eliteensino.com.br, 1 elitefintechglobal.com, 1 elitegameservers.net, 1 +eliteheatgroup.co.uk, 1 eliteholidaylights.com, 1 elitehouse.tk, 1 eliteimsolutions.com, 1 @@ -49011,15 +49213,20 @@ elitesynergyservices.com, 1 elitetechz.nl, 1 elitetoy.com.br, 1 elitewealth.in, 1 +elitexindia.in, 1 elitexxx.com, 1 elithus.se, 1 elitmedopt.ru, 1 +elivenet.com, 1 elixi.re, 1 elixir.bzh, 1 +elixirfactory.io, 1 elizabethcitync.gov, 1 elizabethefle.com, 1 +elizabethgeren.com, 1 elizabethgreenfield.com, 1 elizabethhospeech.com, 1 +elizabethrominski.com, 1 elizabethtaderera.me, 1 elizabethtown-ny.gov, 1 elizafranklin.com, 1 @@ -49073,7 +49280,6 @@ ellinkauppa.fi, 0 elliot.cat, 0 elliotadler.co, 0 elliotlewisms.com, 1 -elliotluque.com, 1 elliott-assist.com, 1 elliottallanhilsinger.com, 0 elliottbernstein.com, 1 @@ -49112,7 +49318,6 @@ elmo.ee, 1 elmolar.tk, 1 elmolist.tk, 1 elmostashar.site, 1 -elmotaz.com, 1 elmresan.ir, 1 elmundodeloso.tk, 1 elmwoodmi.gov, 1 @@ -49134,6 +49339,7 @@ elon.gov, 1 elona-wvw.de, 1 elonaspitze.de, 1 elonma.gov, 1 +elontime.de, 1 elorbe.com, 1 elorrieta.eus, 1 elosconstrutora.com.br, 1 @@ -49150,7 +49356,6 @@ elpatronorlando.com, 1 elpcnc.com, 1 elpellejodelabreva.tk, 1 elperdigon.tk, 1 -elperfil.pe, 1 elperiodicodelaenergia.com, 1 elpincho.tk, 1 elplugins.xyz, 1 @@ -49158,7 +49363,6 @@ elpo.net, 1 elpradopaloalto.com, 1 elpreciosostud.com, 1 elprincipevegeta.tk, 1 -elpro.bg, 1 elprofeshows.com, 1 elpromaucae.tk, 1 elquintoas.tk, 1 @@ -49180,11 +49384,11 @@ elsaelsa.com, 1 elsas.tk, 1 elsbouslanostraaficio.tk, 1 elsector7.tk, 1 +elselingerie.com, 1 elsemanariodesalamanca.tk, 1 elsg.co.uk, 1 elshop1eu.com, 1 elshou.com, 1 -elslab.com, 1 elsoundspeakers.com, 1 elstravato.com, 1 elsuccionador.com, 1 @@ -49192,12 +49396,12 @@ elsvanderlugt.nl, 1 elsvanmerhaeghe.be, 1 elsweb.net, 1 elsword.moe, 0 +elsylist.com, 1 eltair.com, 1 eltconsultants.com.mx, 1 eltec.es, 1 eltern-verein.ch, 1 elternbeiratswahl.online, 1 -elternforen.com, 1 elternkunst.ch, 1 elternverein-utzenstorf.ch, 1 elternzimmer.de, 1 @@ -49205,6 +49409,7 @@ eltip.click, 1 eltjon.duckdns.org, 1 eltlaw.com, 1 elto.ch, 0 +eltohsurgery.com.sg, 0 eltonpastilha.me, 1 eltormo.tk, 1 eltoroweakly.com, 1 @@ -49237,13 +49442,13 @@ elvispresley.net, 1 elvisvrconnect.co.uk, 1 elvonet.hr, 1 elvorti.bg, 1 +elvorti.com, 1 elvtr.com, 1 elvy.nl, 1 elweronete.tk, 1 elwix.com, 1 elyazmusic.com, 1 elyland.net, 1 -elyonyireh.edu.co, 1 elysian-systems.com, 1 elysiandigital.co, 1 elysiria.fr, 1 @@ -49251,6 +49456,7 @@ elysium-team.tk, 1 elysium.coop, 1 elysiumware.com, 1 elyx70days.org, 1 +elz-ergotherapie.de, 1 em-biotek.cz, 0 em-racing.com, 1 em-racing.de, 1 @@ -49258,9 +49464,9 @@ emaandclay.com, 1 emabot.tk, 1 emacitylife.com, 1 emad7.tk, 1 +emagazine.com, 1 emagicone.com, 1 emaging-productions.fr, 1 -emaging.fr, 1 emagrecerconsciente.com.br, 1 emaicopy.com.tw, 1 email-pipeline.xyz, 1 @@ -49272,6 +49478,7 @@ email2gallery.com, 1 emailable.com, 1 emailablev.com, 1 emailalaperformance.fr, 1 +emailassist.ai, 1 emailbusters.tk, 1 emailer.party, 1 emailexpress.ga, 1 @@ -49284,9 +49491,10 @@ emaillagebaingenial.ca, 1 emailmasker.nl, 1 emailmebutton.com, 1 emailmeform.com, 1 -emailoctopus.com, 0 +emailoctopus.com, 1 emailprivacytester.com, 1 emailprocessorpro.gq, 1 +emailpursuits.com, 1 emailreminder.me, 1 emailservers.tk, 1 emailspedia.com, 1 @@ -49309,14 +49517,11 @@ emaratalyoum.com, 1 emarhotel.bg, 1 emarketingmatters.com, 1 emas-beja.pt, 1 -ematravelmorocco.com, 1 emavending.club, 1 emavok.eu, 1 emazrin.tk, 1 emazzanti.net, 1 emba.au, 1 -embaleo.com, 1 -embaleo.es, 1 embarcados.com.br, 0 embark.studio, 0 embarkok.com, 1 @@ -49334,8 +49539,7 @@ ember.co, 1 ember.dedyn.io, 1 emberit.com, 1 emberlife.com, 1 -embersolutions.uk, 1 -embibe.com, 0 +embibe.com, 1 emblemhealth.com, 1 embodiaacademy.com, 1 embodiaapp.com, 1 @@ -49343,20 +49547,19 @@ embodied.vision, 1 embonus.dk, 1 emboque.tk, 1 embotics.com, 1 -embouts-et-bouchons.fr, 1 embracecontext.com, 1 embracethedarkness.co.uk, 1 embracezine.tk, 1 +embraco.com, 0 embrapolsul.com.br, 1 embryooptions.com, 1 -embuscadedividendo.com.br, 1 embutidoselpipi.com, 1 emby.cloud, 1 emcado.com, 1 +emccglobal.org, 1 emccr-ehtp.com, 1 emceemanic.tk, 1 emcentrix-com-site-mvc.azurewebsites.net, 1 -emcoirrigation.ca, 1 emcremodel.com, 1 emcspotlight.com, 1 emdad-persian.ir, 1 @@ -49367,6 +49570,9 @@ emdep.com, 1 emdesigns.tk, 1 emdrtherapytoronto.com, 1 emdrupholm.dk, 1 +emdvcorasia.com, 1 +emdynint.io, 1 +emed.com, 0 emedpractice.com, 1 emeetattd.ddns.net, 1 emekegitimakademi.com, 1 @@ -49405,6 +49611,7 @@ emersya.com, 1 emet.hu, 1 emetodebok.no, 1 emex.ro, 1 +emfutur.com, 1 emi.im, 1 emielraaijmakers.nl, 1 emigrantes.tk, 1 @@ -49440,13 +49647,12 @@ emily-website.tk, 1 emily.moe, 1 emilymarques.ga, 1 emilysweet.com, 1 -emilytiffanyjoy.com, 1 emilywufaith.tk, 1 emina-arapovic.tk, 1 eminafans.tk, 1 emindweb.com, 1 eminem.net, 1 -eminem50cent.com, 0 +eminem50cent.com, 1 eminencecapital.com, 1 eminencepools.com, 1 emirates247.com, 1 @@ -49471,14 +49677,12 @@ emma-und-felix-heiraten.de, 1 emmababy420.com, 1 emmabeckettlifecoach.co.uk, 1 emmabolton.uk, 1 -emmad.net, 1 emmadreams.net, 1 emmaengel.de, 1 emmajayne.tk, 1 emmalegalnurse.com, 1 emmalevy.me, 1 emmaliddell.com, 0 -emmanuel-mx.com, 1 emmanuelle-et-julien.ch, 1 emmaowl.com, 1 emmastarr.net, 1 @@ -49489,6 +49693,7 @@ emmauspd.gov, 1 emmawatsonking.tk, 1 emmawatsononline.tk, 1 emmc.eu, 1 +emmdy.com, 0 emmedicom.ml, 1 emmedicom.tk, 1 emmepole.tk, 1 @@ -49509,10 +49714,10 @@ emoforum.tk, 1 emoji-meaning.org, 1 emoji-symbols.org, 1 emoji.build, 1 -emoji.bzh, 1 emoji.web.tr, 1 emoji.wf, 1 emojiace.com, 1 +emojiguide.com, 1 emojikeyboard.top, 1 emojiteka.pl, 1 emojiterra.com, 1 @@ -49566,6 +49771,7 @@ employeeexpress.gov, 1 employeemanual.com.au, 1 employeesupport.co.uk, 1 employer.gov, 1 +employer411.com, 1 employeradmin.com, 1 employersolutionsgroup.com, 0 employersupport.co.uk, 1 @@ -49593,7 +49799,6 @@ empost.eu, 1 empower.ae, 1 empoweraces.com, 1 empowerdb.com, 1 -empowerdxlab.com, 1 empowered-decision.com.au, 1 empoweredpatientradio.com, 1 empoweren.com, 1 @@ -49603,6 +49808,7 @@ empoweringdifferences.com, 1 empowerkea.org.nz, 1 empowermentinnovations.com, 1 empowernation.org, 1 +empowersimcoe.ca, 1 emprechtinger.com, 1 empregosrj.com, 1 empreinte.ca, 1 @@ -49628,6 +49834,7 @@ emq.io, 1 emrawi.org, 1 emreaydinfan.tk, 1 emrecicekmuhendislik.com, 1 +emresaglam.com, 1 emrider.es, 1 emrullahsahin.com, 1 ems.gov, 1 @@ -49647,13 +49854,14 @@ emtex.co.jp, 1 emtofis.com, 1 emtradingacademy.com, 1 emtreview.com, 1 -emtunc.org, 1 +emu.land, 1 emulation-archive.org, 1 emulator.wtf, 1 emulatronic.tk, 1 emulefans.com, 1 emulovers.com, 1 emulsifier.ga, 1 +emunet.net, 1 emurom.net, 1 emuser.tk, 1 emusicuz.tk, 1 @@ -49665,7 +49873,6 @@ emyr.net, 1 emyself.org, 1 emystars.tk, 1 emz.im, 1 -emzi0767.com, 1 emzy.de, 1 en-develop.fr, 1 en-je.fr, 1 @@ -49677,12 +49884,12 @@ enaah.de, 1 enable-javascript.com, 1 enabling.ga, 1 enablingcommunities.com.au, 1 -enact-ai.com, 1 enactor.co, 1 enago.com, 1 enai.eu, 1 enalean.com, 1 enam.gov.in, 1 +enamae.net, 1 enaminestore.com, 1 enamonada.com, 1 enasher.com, 1 @@ -49696,6 +49903,7 @@ enbyn.de, 1 encanroy.ca, 1 encanroy.com, 1 encanstanne.ca, 1 +encantowater.com, 0 encd.life, 1 ence.es, 1 encenna.com.br, 0 @@ -49708,14 +49916,13 @@ encinitastrainer.com, 1 encipher.me, 1 encirca.com, 0 encircleapp.com, 1 -enclavecairns.com.au, 1 -encloud-gs.com, 1 encode.host, 1 encontra-me.org, 1 encontracarros.pt, 1 encontreumagp.com, 1 encontro.online, 1 encontroespiritadeinverno.com.br, 1 +encore.tech, 1 encoro.org, 1 encotentin.fr, 1 encouragemarketing.com, 1 @@ -49725,13 +49932,11 @@ encredible.org, 0 encretplomb.ch, 0 encryp.ch, 1 encrypt.cf, 1 -encrypt.click, 1 encrypt.my.id, 1 encrypted.at, 1 encrypted.google.com, 1 encryptedaudience.com, 1 encryptedconnection.net, 1 -encryptio.it, 1 encryptionweb.tk, 1 encryptmy.site, 1 encryptmycard.com, 1 @@ -49745,7 +49950,6 @@ encycarpedia.com, 1 end.tf, 1 endangeredwatch.com, 1 endavantstap9b.tk, 1 -endbeachpollution.sydney, 1 endbegins.tk, 1 endbox.email, 1 endcottagevets.co.uk, 1 @@ -49756,7 +49960,7 @@ endean.com, 1 endeavourbiz.com, 1 endee.de, 1 endeksa.com, 1 -endener.com, 0 +endener.com, 1 ender.co.at, 1 ender.fr, 1 ender.moe, 1 @@ -49779,7 +49983,6 @@ endlessvideo.com, 1 endlesswebsite.tk, 1 endo-shika.info, 1 endocarditis.au, 1 -endodanli.com, 1 endofevolution.com, 1 endofinternet.goip.de, 1 endoflife.date, 1 @@ -49790,7 +49993,6 @@ endometriu.ml, 1 endorsec.com, 1 endorsec.de, 1 endorsia.io, 1 -endosave.de, 1 endoscope.bg, 1 endpipe.com, 1 endplasticwaste.org, 0 @@ -49799,8 +50001,6 @@ endrust.com.au, 1 endsoftpatents.org, 1 endsoftwarepatents.org, 1 endspamwith.us, 1 -endstation-chaos.de, 1 -endura.company, 1 enduranceseries.ca, 1 enduro-center.pt, 1 enduroxtrem.tk, 1 @@ -49860,8 +50060,8 @@ energicertifikat.fi, 1 energie-nederland.nl, 1 energieconsultonline.nl, 1 energiedeliemers.nl, 1 +energielabelbinneneenweek.nl, 1 energiemines.ma, 1 -energiequellen.net, 1 energiewende.com.br, 1 energise.co.nz, 1 energnist.dk, 1 @@ -49874,7 +50074,6 @@ energy-in-balance.eu, 0 energy-mate.co.jp, 1 energy-robotics.com, 1 energy.eu, 1 -energyalberta.com, 1 energyalliance.org, 1 energyandincomeadvisor.com, 1 energyaupair.no, 1 @@ -49895,7 +50094,6 @@ energygroup.tk, 1 energyguru.tk, 1 energyhomeservice.ca, 1 energyhybrid.ga, 1 -energylab.com.ua, 1 energylink.com, 1 energylocals.au, 1 energylocals.com, 1 @@ -49908,7 +50106,7 @@ energyreferral.link, 1 energysaveroregon.com, 1 energysite.tk, 1 energystar.gov, 1 -energysystems.com, 0 +energysystems.com, 1 energytrust.tk, 1 energyuse.net, 1 energywisdom.tk, 1 @@ -49937,7 +50135,6 @@ enfieldheightsacademy.org.uk, 1 enfinnit.com, 1 enflow.nl, 1 enfluentia.com, 1 -enforcegate.com, 1 enforcement-trends-dev.azurewebsites.net, 1 enforcement-trends-test.azurewebsites.net, 1 enforcement-trends.azurewebsites.net, 1 @@ -49979,7 +50176,6 @@ engicenter.com, 1 engie-energia.pe, 1 engie-laadpalen.nl, 0 engima.nl, 1 -enginebase.nl, 1 engineer-kobe.ga, 1 engineer-route.com, 1 engineer.org.my, 0 @@ -49993,8 +50189,8 @@ enginepit.com, 1 enginess.io, 1 engins.fr, 1 enginsight.com, 1 +enginsjob.com, 1 enginytech.com, 1 -engitix.com, 1 engl-amps.com, 1 engl-amps.net, 1 engl-customshop.com, 1 @@ -50003,16 +50199,17 @@ engl-customshop.net, 1 engl-distribution.com, 1 engl-distribution.de, 1 engl-distribution.net, 1 +engl-server.de, 0 engl-systems.de, 1 englandbeach.com, 1 englandgenealogy.co.uk, 1 englandlearn.com, 0 englandschool.tk, 1 englesh.org, 1 -english-community.com, 1 english-to-russian-translation.tk, 1 english-training.tk, 1 english.events, 1 +english4oman.com, 1 englishbulgaria.net, 1 englishcast.com.br, 1 englishclassworksheets.com, 1 @@ -50029,13 +50226,14 @@ englishll.com, 1 englishlol.com, 1 englishouse.tk, 1 englishprovence.com, 1 +englishstuff.online, 1 +englishtofrench.eu, 1 englishvaultingsquad.co.uk, 1 englishvit.com, 1 englishwaves.fr, 1 engrama.tk, 1 engrepair.com, 1 engrish.ml, 1 -engrteam.com, 1 engso-education.eu, 1 engso.com, 1 engso.eu, 1 @@ -50078,6 +50276,7 @@ enkelanmalan.se, 1 enkelpaamelding.no, 1 enker.tk, 1 enkolaysertifika.com, 1 +enkosi.com.au, 1 enkrypt.com, 1 enky.be, 1 enlacemedik.com, 1 @@ -50099,15 +50298,15 @@ enno.mom, 0 ennori.jp, 1 ennova.com, 0 ennovationtech.eu, 1 +enoahinc.com, 1 enodais.gr, 1 enofmusic.com, 1 enoisdaturma.tk, 1 enolalingerie.com, 1 enomada.net, 1 enonvalleyboropa.gov, 1 -enoou.com, 0 +enoou.com, 1 enorekcah.com, 1 -enosisbd.com, 1 enosiseurotrade.com, 1 enosistrade.com, 1 enot32.ru, 1 @@ -50123,6 +50322,7 @@ enovetic.ch, 1 enpalmademallorca.info, 1 enpasenerji.com.tr, 1 enphase.com, 1 +enphaseenergy.com, 1 enprobe.io, 1 enputu.tk, 1 enqrypted.net, 1 @@ -50134,6 +50334,7 @@ enrak.fi, 1 enrega.com, 1 enric.ai, 0 enrich.email, 1 +enrichdata.ai, 1 enriched.news, 1 enrique-monroy.tk, 1 enrique.wtf, 1 @@ -50161,7 +50362,6 @@ enshin-karate.tk, 1 enshrouded.com, 1 ensightpharma.com, 1 ensilencio.tk, 1 -ensimini.com, 0 ensingpodotherapie.nl, 1 enskat.de, 1 enslavedplantationclub.com, 1 @@ -50170,7 +50370,6 @@ ensma.fr, 1 ensobrands.com, 1 ensons.de, 1 ensonyan.com, 1 -enspiredwellness.com, 1 enstavideo.com, 0 ensured.com, 1 ensured.nl, 1 @@ -50182,8 +50381,10 @@ entabe.com, 1 entabe.jp, 1 entactogens.com, 1 entasyonline.com, 1 +entbastel.de, 1 entdeckertouren.com, 1 enteente.com, 1 +entegrations.io, 1 entelodont-laboratory.cz, 1 ententaxi.de, 1 enter.co, 1 @@ -50211,7 +50412,6 @@ entheo-worldeyes.org, 1 entheogens.com, 1 entheor.com, 1 enthrallinggumption.com, 1 -entia.systems, 1 enticingai.com, 1 entitlementtrap.com, 1 entityfiling.com, 1 @@ -50234,6 +50434,7 @@ entrepreneurialFree Software.org, 1 entrepreneurnight.com, 1 entrepreneurresources.com, 1 entreprise-innovante.fr, 1 +entreprise-punaise-de-lit.com, 1 entreprise-ravalement-facade.paris, 1 entreprises.gouv.fr, 1 entreprisesavendre.quebec, 0 @@ -50297,12 +50498,10 @@ entwistlepickups.com, 1 enu.vin, 1 enuchi.com, 1 enuchi.jp, 1 +enuhub.com, 1 enumasecurity.com, 1 enuygun.com, 1 enuygunaucakbileti.com, 1 -enuygunfinans.com, 1 -enuygunpaykwik.com, 1 -enuygunsigorta.com, 1 envanature.com, 1 envant.co.uk, 1 envasetechnologies.com, 1 @@ -50310,7 +50509,7 @@ envelopeartisans.com, 1 envelopegroup.com, 1 enveloppen.nl, 1 enveloppenopmaat.nl, 1 -enverid.com, 0 +enverid.com, 1 envescent.com, 1 envia.com.gt, 1 enviam.de, 1 @@ -50340,7 +50539,6 @@ environment.gov.ly, 1 environmental-colleges.com, 1 environmentaljustice.gov, 1 envirosell.com, 1 -envirotecmagazine.com, 1 envirotecstructures.com.au, 1 envirotivity.com, 1 envirowastemanagement.com, 1 @@ -50349,7 +50547,6 @@ envisionmedicalgroup.com, 0 envisionsproperty.com, 1 envisolarvind.tk, 1 envistacu.com, 1 -envitestlab.com, 1 enviyatar.tk, 1 envoie.moi, 1 envoy.com, 1 @@ -50377,7 +50574,7 @@ eoceanic.com, 1 eod.su, 1 eofster.com, 1 eogresources.com, 1 -eohm.org, 1 +eohima.org, 0 eol-team.tk, 1 eola.co, 1 eolasinnovation.com, 1 @@ -50399,14 +50596,12 @@ eos-utvalget.no, 0 eosagonline.ru, 1 eosguru.ru, 1 eosol.services, 1 -eostar.ro, 1 -eov.org.tr, 1 eov2.com, 1 ep-cortex.com, 1 ep-plus.jp, 1 -epa.gov, 0 epagos.com.ar, 1 epagos.mx, 1 +epal.pt, 1 epaoig.gov, 1 epaperframe.com, 1 epasar.my, 0 @@ -50470,17 +50665,18 @@ epicvistas.com, 1 epicvistas.de, 1 epidastudio.com, 1 epidauros.be, 1 +epieos.com, 1 epigrafes-led-farmakeia.gr, 1 epikchat.com, 1 epilazione.it, 1 epilepsy-channelopathy.org, 1 epilis.gr, 1 +epinesdeparadis.com, 1 epiphaniusmacar.com, 1 epiqcourtreportingblog.com, 1 episkevh-plaketas.gr, 1 episode.tk, 1 episource.com, 0 -epistalux.com, 1 epistas.com, 1 epistas.de, 1 epistemes.org, 1 @@ -50489,11 +50685,11 @@ epitesztervezes.hu, 1 epiteugma.com, 1 epizentrum.work, 1 epizentrum.works, 1 -eplatform.ro, 1 eplayer.cz, 1 eplenet.tk, 1 epliar.com, 1 eplus.group, 1 +epluse.com, 1 eplustech.eu, 1 epm-bg.com, 1 epmcentroitalia.it, 1 @@ -50502,6 +50698,8 @@ epnuffic.nl, 0 epobocka.com, 1 epoch-film.ml, 1 epochcg.pt, 1 +epochconcepts.com, 0 +epochstream.com, 1 epolitiker.com, 1 epos.az, 1 eposmidlands.co.uk, 1 @@ -50512,7 +50710,8 @@ epost.pub, 1 epostplus.li, 1 eposzilos.nl, 1 epoxyfloor.com.my, 1 -eppelblei.lu, 1 +epoxyflooringperth.com.au, 1 +eppelblei.lu, 0 eppelduerferjugend.lu, 0 eppelpress.lu, 0 eppingnh.gov, 1 @@ -50529,7 +50728,7 @@ epropertyplus.com, 1 eprosto.cf, 1 eprzybornik.pl, 1 epsamsg.com, 1 -epsilogix.com, 0 +epsilogix.com, 1 epsilon.photography, 1 epsilontel.com, 1 epsmil.it, 1 @@ -50544,6 +50743,7 @@ epubreader.net, 1 epubreader.org, 1 epvd.tk, 1 epweb.pro, 1 +eqalert.ru, 1 eqassociates.com, 1 eqbal.org, 1 eqibank.com, 1 @@ -50558,12 +50758,14 @@ eqtgroup.com, 1 eqtpartners.com, 1 eqtventures.com, 1 equalifica.com.br, 1 +equalityhealthcareservices.com, 1 equalitync.org, 1 equalone.co.jp, 1 equals.com.br, 1 equans-kaelte.de, 1 equate.net.au, 1 equatetechnologies.com.au, 0 +equeim.ru, 0 equestrianvaulting.co.uk, 1 equi.ac, 1 equiac.com, 1 @@ -50583,11 +50785,11 @@ equinoxe.de, 1 equinoxit.co.nz, 1 equinoxtraining.net, 1 equip.cz, 1 +equipamentosparapostos.com.br, 1 equipandoloja.net.br, 1 equipedefrance.tv, 0 equipedefrente.tk, 1 equipment-pool.tk, 1 -equipmentleases.com, 1 equipomorado.tk, 1 equipoweb.info, 1 equippers.de, 1 @@ -50597,6 +50799,7 @@ equisecu.com, 1 equitable-igwm.com, 1 equitablehealthycities.org, 1 equitazionepertutti.it, 1 +equiton.com, 1 equitybank.com, 1 equityelevate.com, 1 equityloupe.ru, 1 @@ -50604,6 +50807,7 @@ equityyes.org, 1 equivid.ga, 1 equmeniakyrkanhallunda.se, 1 equt.cloud, 1 +er.tl, 1 era-edta-reg.org, 1 eradication-nuisibles-pro.fr, 1 eradoom.net, 1 @@ -50636,15 +50840,14 @@ erclab.kr, 1 erclaim.com, 1 erctra.com, 1 erda.gov, 1 -erdecoshop.de, 0 erdekesseg.com, 1 erdelyireceptek.ro, 1 erdethamburgeronsdag.no, 1 erdewiege.dedyn.io, 1 erdewiege.moe, 1 -erdineks.com, 1 ereader.uno, 1 erebuildings.com, 1 +erectiepillenwinkel.nl, 1 erector.cf, 1 erector.tk, 1 eredmenye.xyz, 1 @@ -50661,6 +50864,7 @@ erftstadt.de, 1 ergaomnes.cz, 1 ergaran.tk, 1 ergela-djakovo.hr, 1 +ergobaby.com, 0 ergobyte.eu, 1 ergobyte.gr, 1 ergodark.com, 1 @@ -50672,8 +50876,8 @@ ergoseo.com, 1 ergosg.com, 1 ergostoel.nl, 1 ergotherapie-schaab.de, 1 +ergotherapie.fr, 1 erguinsaat.com, 1 -erholungsrechner.de, 1 erhvervsposten.dk, 1 erhydro.com, 1 eriandevan.com, 1 @@ -50702,6 +50906,7 @@ erichorstmanshof.nl, 1 erichuber.de, 1 erichware.tk, 1 ericisaweso.me, 0 +ericjohnltd.com, 1 erick.blog, 1 ericksonrealtors.com, 1 ericksonvasquez.com, 1 @@ -50717,7 +50922,6 @@ ericsaadeonline.tk, 1 ericsilva.me, 1 ericsilva.org, 1 ericspeidel.de, 1 -ericterminal.com, 1 ericvantijn.tk, 1 ericwie.se, 0 eridan.me, 1 @@ -50743,6 +50947,7 @@ erikserver2.tk, 1 eriksson-lavotha.se, 1 erikswan.com, 1 erinaceinae.com, 1 +erinandken.net, 1 erincarmody.cf, 1 eriner.me, 1 eringmaguire.com, 1 @@ -50756,6 +50961,8 @@ erito.com, 1 eritonetwork.com, 1 eritopremium.com, 1 erium.fr, 1 +erkeklersoruyor.com, 1 +erkemeij.com, 1 erkenntniswen.de, 1 erkiss.club, 1 erkiss.live, 1 @@ -50784,6 +50991,7 @@ ero-review.jp, 1 ero.ink, 0 erodvd.com, 0 erogen.org, 1 +erogen.su, 1 eroimatome.com, 1 erokat.ga, 1 erol.se, 1 @@ -50795,7 +51003,6 @@ eros.com, 1 erosads.com, 1 erosbeautyandwellness.com, 1 eroscomixitalia.tk, 1 -erosmowy.pl, 1 erosofia.tk, 1 erosveneziani.cz, 1 erosvet.cz, 1 @@ -50818,7 +51025,7 @@ erperium.nl, 1 erpid.info, 1 erpnext.com, 1 erpollo.com, 1 -erpuas.com, 1 +erpsolutionsmart.com, 1 erraen.org.ua, 1 erreguete.gal, 1 errekaweb.tk, 1 @@ -50838,7 +51045,6 @@ ersei.net, 1 erseni.net, 1 ershiwo.com, 1 ersinbiltekin.tk, 1 -ersolar.com.au, 1 erspro.net, 1 erste-hilfe-sbh.de, 1 erste-hyp.de, 1 @@ -50865,6 +51071,7 @@ erudicia.se, 1 erudicia.uk, 1 erudikum.cz, 1 erudio-usluge.hr, 1 +eruisreads.com, 1 ervaarjapan.nl, 1 ervirmaison.tk, 1 erwanlepape.com, 1 @@ -50873,7 +51080,7 @@ erwerbslosenforum.de, 1 erwin.saarland, 1 erwinmi.gov, 1 erwinonline.tk, 1 -erwinpaal.nl, 0 +erwinpaal.nl, 1 erwinschmaeh.ch, 1 erwinsite.tk, 1 erwinwensveen.nl, 1 @@ -50884,6 +51091,7 @@ eryz.tech, 1 erzaehlwerkstatt-heilbronn.de, 1 erzbistum-bamberg.de, 1 es-ostan.tk, 1 +es-ramonage.fr, 1 es-sharing.eu, 1 es-sicherheit.ch, 1 es-tools.at, 1 @@ -50900,7 +51108,6 @@ esajokinen.net, 1 esalinity.com, 0 esame-di-professione-cinestetica.ch, 1 esamsur.tk, 1 -esannews.com, 1 esasafe.com, 1 esatn.gov, 1 esautotech.com.au, 1 @@ -50912,7 +51119,8 @@ esb777.me, 1 esb777.us, 1 esb8886.com, 1 esb999.com, 1 -esb999.info, 0 +esb999.info, 1 +esb999.us, 0 esba11.cc, 1 esba11.com, 1 esbuilders.co.nz, 0 @@ -50923,7 +51131,7 @@ esc3.net, 1 esc6.net, 1 esc9.net, 1 escae.ml, 1 -escala24x7.com, 0 +escala24x7.com, 1 escalando.tk, 1 escale-communication.bzh, 0 escalesensorielle.com, 1 @@ -50933,6 +51141,7 @@ escancia.tk, 1 escandell.cat, 1 escaparate.tk, 1 escapees.com, 0 +escapeforyou.com, 1 escapegames.dk, 1 escapely.com, 1 escapemotions.com, 1 @@ -50971,11 +51180,6 @@ escortlistings.fr, 1 escortlistings.ph, 1 escortlistingsuk.co.uk, 1 escorto.cc, 1 -escortserviceleiden.nl, 1 -escortserviceschiphol.com, 1 -escortservicezaanstad.nl, 1 -escortservicezeeland.nl, 1 -escortsuper.com, 1 escortz.gq, 1 escoteiros.tk, 1 escovator-records.tk, 1 @@ -50985,19 +51189,22 @@ escriva.org, 1 escrocratie.tk, 1 escrowalliance.com, 1 escspain.tk, 1 +escuelabiblica.com, 1 escuelacaninalatejera.es, 1 escueladego.tk, 1 escueladelsabor.com, 1 escueladeministerioytecnologia.com, 1 escuelaparapapas.tk, 1 escuelasargento.tk, 1 +escuelitasansebastian.cl, 1 escuelotika-online.tk, 1 escursione.it, 1 +escyr.top, 0 esd.cc, 1 esdacademy.eu, 1 esdarat.ml, 1 -esdcybersecurity.eu, 1 esdiscuss.org, 1 +esdisena.es, 1 esdrasluna.com, 1 esds.com.br, 1 eseances.ch, 1 @@ -51018,7 +51225,6 @@ esgforum.com.br, 1 esginnova.com, 1 esginside.com.br, 1 esgr.in, 1 -esgrevents.mil, 1 esh.ink, 1 eshaanya.us, 1 esher.ac.uk, 1 @@ -51038,15 +51244,13 @@ esiedu.com, 1 esiga.mx, 1 esignandpay.net, 1 esignering.se, 1 +esignprod.herokuapp.com, 1 esigtorg.ru, 0 -esike.hu, 1 esiliati.org, 1 esilva.me, 1 esilverstone.pl, 1 -esim.io, 1 esimy.net, 1 esiptvpro-max.com, 1 -esitc-paris.fr, 1 esite.ch, 1 esj.org, 1 eskapi.fr, 1 @@ -51058,9 +51262,9 @@ eskimosboards.ga, 1 eskimuzikatolyesi.org, 1 eskisehirhaberleri.tk, 1 esko.bar, 1 +eskortmoscow.com, 0 eskritt.ca, 1 eskuvoivideohd.hu, 1 -eskypartners.com, 1 esl.org, 1 eslamahmed.tk, 1 esleme.com, 1 @@ -51087,7 +51291,7 @@ esocite.la, 1 esoko.eu, 1 esolbooks.com, 1 esolcourses.com, 1 -esolia.co.jp, 1 +esolitos.com, 1 esomeprazole1.gq, 1 eson.eu, 1 esono.de, 1 @@ -51100,11 +51304,12 @@ esoterikerforum.de, 1 espabox.com, 1 espace-caen.fr, 0 espace-gestion.fr, 1 -espace-marques.be, 1 +espace-habitat-francais.fr, 1 espace-orenda.ch, 1 espace-vet.fr, 1 espace.network, 1 espacefragil.be, 1 +espacejabugo.com, 0 espacepiscine51.fr, 1 espacetemps.ch, 0 espacetendance.fr, 1 @@ -51123,10 +51328,11 @@ espairecer.pt, 1 espanol.search.yahoo.com, 0 espanyoldebarna.tk, 1 espass.gq, 1 +espbimbel.com, 1 espci.fr, 1 especes.org, 1 especializasaudecursos.com.br, 1 -especiallysilver.com, 1 +especificosba.com.ar, 1 espectro.tk, 1 espejo.tk, 1 espejocofrade.tk, 1 @@ -51134,18 +51340,19 @@ espeleogel.tk, 1 espen.cz, 1 espenandersen.no, 1 espeo.eu, 1 -esperanceetvie.ca, 1 esperantio.tk, 1 esperanto.co, 1 espgg.org, 1 espigol.org, 1 espiragen.com, 1 +espiritismo.gay, 1 espiritismo.tk, 1 espirituracer.com, 1 espiv.net, 1 espivblogs.net, 1 esplendorecosmeticos.com.br, 1 esploria.com, 1 +espocada.com, 1 espoonkumi.fi, 0 esport-agency.fr, 1 esporte.casino, 1 @@ -51177,7 +51384,6 @@ esri.pl, 1 esrinfo.com, 1 esrs.gov, 1 ess-ecologica.cat, 1 -essank.xyz, 1 essay-writing-topics-fce.tk, 1 essayads.com, 1 essaybrand.com, 1 @@ -51201,6 +51407,8 @@ essaywebsite.com, 1 esse.tools, 1 essecharlie.com, 1 essenah.com, 1 +essence.com, 1 +essencesdeprana.org, 1 essencespresso.es, 0 essenciasparis.com.br, 1 essendi.de, 1 @@ -51243,6 +51451,7 @@ establishmentchs.com, 1 establo.pro, 1 estacio.br, 1 estada.ch, 1 +estadoreclamos.com, 1 estafallando.es, 1 estafallando.mx, 1 estahl.dk, 1 @@ -51283,12 +51492,12 @@ esthesoleil.jp, 1 esthetiqueboissiere.fr, 1 estilopack-loja.com.br, 1 estintori.roma.it, 1 -estioffice.co.il, 1 estiv-ales.fr, 1 estlat.eu, 0 estocq.fr, 1 estoense.com, 1 estomp.de, 1 +estonia.ee, 0 estoniananonymous.tk, 1 estoniantrade.ee, 1 estonoentraenelexamen.com, 1 @@ -51325,11 +51534,13 @@ estudionale.com, 1 estudios-biblicos.tk, 1 estudiosalmogavares.tk, 1 estudiosmart.com, 1 +estudiossocioeconomicos.com, 1 estudiovillaran.com, 1 esu.dog, 1 esu.moe, 1 esu.wiki, 1 esu.zone, 1 +esubasta.ar, 1 esunapena.tk, 1 esunenin.tk, 1 esuretynew.azurewebsites.net, 1 @@ -51338,15 +51549,16 @@ esvc.co.uk, 1 esverify.org, 1 esw.com, 1 eswaranthenellaicatering.in, 1 -eswikipedia.org, 1 +esy.com.br, 1 esy.nl, 1 esyoil.com, 1 esys.ga, 1 esystems.tk, 1 +eszkola.pl, 1 et-inf.de, 1 et-xprojects.co.za, 1 et.al, 1 -et2c.com, 0 +et2c.com, 1 et420nrw.tk, 1 etaconic.com, 1 etaes.eu, 1 @@ -51377,8 +51589,6 @@ etechsolution.net, 1 eteck.co.tt, 1 etemadsazeh.com, 1 eteradia.dynv6.net, 1 -etere.su, 1 -etergrowth.com, 1 eteries.com, 1 eterkludd.se, 1 eternal-chaos.tk, 1 @@ -51402,18 +51612,17 @@ eternit.roma.it, 1 eternitdesio.it, 1 eternitypodcast.com, 1 eternl.io, 1 -eternodevir.com, 1 etestyonline.tk, 1 etf.nu, 1 etf2l.org, 1 etfacta.com, 0 etfcentral.com, 1 +etflife.com, 1 eth-services.de, 1 eth0.nl, 0 ethaligan.fr, 1 ethan-hanlon.xyz, 1 ethan.pm, 1 -ethancg.com, 1 ethanjones.me, 1 ethanlew.is, 1 ethanopp.com, 0 @@ -51429,6 +51638,7 @@ etherderbies.com, 1 etherdream.com, 1 ethereal-skies.tk, 1 etherealcollapse.tk, 1 +ethereum-news.info, 1 ethereumnews.best, 1 ethereumnews.digital, 1 ethereumnews.live, 1 @@ -51440,9 +51650,8 @@ ethermine.org, 1 ethernium.fun, 1 etheron.com, 1 etherpad.nl, 1 -etherphon.com, 1 ethersys.fr, 1 -ethiack.com, 0 +ethiack.com, 1 ethical-home.co.uk, 1 ethicalconsumer.org, 1 ethicaldata.co.uk, 1 @@ -51453,7 +51662,6 @@ ethicaltek.com, 0 ethics.org, 1 ethicsburg.gov, 1 ethicsfirst.org, 0 -ethicsready.com, 1 ethika.com, 1 ethil-faer.fr, 1 ethio-jobs.net.et, 1 @@ -51465,8 +51673,6 @@ ethnopsychoanalyse.tk, 1 ethosinfo.com, 1 ethotupala.tk, 1 ethpool.org, 1 -ethraeon.ai, 1 -ethternet.top, 1 etialis.com, 1 etialis.fr, 1 eticket.cr, 1 @@ -51484,11 +51690,12 @@ etisalat.af, 1 etitlelien.net, 1 etke.cc, 1 etlab.in, 1 -etld.com.br, 1 etme.com, 1 etnoforum.tk, 1 etnoria.com, 1 etoile-usedcars.com, 0 +etok-co.com, 1 +etoolshub.com, 1 etopa.de, 1 etoro-openbook.tk, 1 etororeviews.com, 1 @@ -51498,7 +51705,6 @@ etr.org, 1 etrades.tk, 1 etre-belle.tk, 1 etre-vivant.fr, 0 -etreatify.com, 1 etrecosmeticderm.com, 1 etrialsolutions.ca, 1 etrialsolutions.com, 1 @@ -51510,6 +51716,7 @@ etsmarconi.be, 0 etspuka.de, 1 etsradio.org, 1 etsu.edu, 1 +ettagroup.ru, 1 ettbattreinternet.se, 1 etterforsker1.no, 1 ettin-router.com, 1 @@ -51535,9 +51742,8 @@ eu-datenbank.de, 1 eu-secured.com, 1 eu-stellenangebot.de, 1 eu.ax, 1 -eu.pe, 1 eu4ua.org, 1 -euaaaio.ru, 0 +euaaaio.ru, 1 euc.world, 1 euchance.hu, 1 euchre.us, 1 @@ -51593,50 +51799,16 @@ eulen.com, 1 eulenschmiede.de, 1 euler.finance, 1 euleres.tk, 1 -eulerhermes.be, 1 -eulerhermes.bg, 1 -eulerhermes.ch, 1 -eulerhermes.co.jp, 1 -eulerhermes.co.nz, 1 -eulerhermes.co.uk, 1 -eulerhermes.co.za, 1 -eulerhermes.com, 1 -eulerhermes.com.hk, 1 -eulerhermes.com.sg, 1 -eulerhermes.com.tr, 1 -eulerhermes.cz, 1 -eulerhermes.de, 1 -eulerhermes.dk, 1 -eulerhermes.ee, 1 -eulerhermes.es, 1 -eulerhermes.fi, 1 -eulerhermes.fr, 1 -eulerhermes.gr, 1 -eulerhermes.hk, 1 -eulerhermes.hu, 1 -eulerhermes.ie, 1 -eulerhermes.it, 1 -eulerhermes.kr, 1 -eulerhermes.lv, 1 -eulerhermes.my, 1 -eulerhermes.nl, 1 -eulerhermes.pl, 1 -eulerhermes.ro, 1 -eulerhermes.se, 1 -eulerhermes.sg, 1 -eulerhermes.sk, 1 -eulerhermes.tw, 1 -eulerkey.cn, 1 eulessplumbers.com, 1 euman.ml, 1 eumananc.ro, 1 -eumenis.com, 1 eumk6.ml, 1 eunep.com, 1 eunetworks.com, 1 eung.ga, 1 eunicetan.com, 1 eunomy.io, 1 +eupack.pl, 1 eupay.de, 1 euphoriaonline.tk, 1 euphoriareign.com, 1 @@ -51656,14 +51828,12 @@ eurekatech.eti.br, 1 eurekatownshipmi.gov, 1 eurekka.me, 0 euren.se, 1 -euripidis.photography, 1 -euritaprinter.com, 0 +euritaprinter.com, 1 eurmarketing.com, 1 euro-cdm.org, 1 euro-construction.co.uk, 1 euro-issues.tk, 1 euro-servers.de, 1 -euro.org, 1 euro.ro, 1 euro17promotora.com.br, 1 euroasia-tm.com, 1 @@ -51688,6 +51858,7 @@ eurocontrol.xxx, 1 eurodanceperu.tk, 1 eurodentaire.com, 1 eurodesk.eu, 1 +eurodontic.co.uk, 0 euroenergy.tk, 1 euroestetica.ec, 1 euroevent.nl, 1 @@ -51726,17 +51897,7 @@ europabio.org, 1 europack.kiev.ua, 1 europadonna.fr, 1 europainchemnitz.de, 1 -europapier.at, 1 -europapier.ba, 1 -europapier.bg, 1 -europapier.com, 1 -europapier.cz, 1 -europapier.hu, 1 europapier.net, 0 -europapier.rs, 1 -europapier.si, 1 -europapier.sk, 1 -europapier.ua, 1 europarts-sd.com, 1 europass-info.de, 1 europastudien-chemnitz.de, 1 @@ -51748,11 +51909,11 @@ european-hospital.ga, 1 european-hospital.ml, 1 european-hospital.tk, 1 european-silk-road.eu, 1 -european-standards.com, 1 europeananomalouswave.tk, 1 europeanbcc.eu, 1 europeancuisine.tk, 1 europeancupinline.eu, 1 +europeangaming.eu, 1 europeanlifemedia.com, 0 europeanmemories.net, 1 europeannewschool.eu, 1 @@ -51761,7 +51922,6 @@ europeanpreppers.com, 1 europeanspring.net, 1 europeanstudies-chemnitz.de, 1 europeantransmissions.com, 1 -europeantransportmanagement.com, 1 europedigital.cloud, 1 europeluxuryweddings.com, 1 europeonline.tk, 1 @@ -51790,6 +51950,7 @@ eurotecvfs.com, 0 eurotest.tk, 1 eurotop.net.pl, 1 eurotour.tk, 1 +eurotracs.com, 1 eurotramp.com, 0 eurousa.us, 1 eurovision-romania.tk, 1 @@ -51835,6 +51996,7 @@ evafojtova.cz, 1 evaisanta-mariaalmudever.tk, 1 evaisanta.tk, 1 evaks.az, 1 +evakuator-kharkov.kh.ua, 1 evakuator-odessa.com.ua, 1 evakuator-tut.by, 1 evakuator.ltd, 1 @@ -51857,7 +52019,7 @@ evanescenceisfallen.tk, 1 evanescencenorge.tk, 1 evanescenceturkey.tk, 1 evanfiddes.com, 1 -evang.at, 0 +evang.at, 1 evangelietuin.tk, 1 evangelionmagi.tk, 1 evangelise.asia, 1 @@ -51871,7 +52033,6 @@ evanstonnow.com, 0 evansville-wy.gov, 1 evansvillewi.gov, 1 evantageglobal.com, 1 -evanter.hu, 1 evantynan.com, 0 evanwang0.com, 1 evaolson.se, 1 @@ -51880,13 +52041,10 @@ evarni.com, 1 evasioncreole.com, 1 evasionteam.tk, 1 evasovova.cz, 1 -evastats.gg, 1 -evav.ca, 1 evavangunsteren.com, 1 evavolfova.cz, 1 evavonschirach.com, 1 evazurbi.com, 1 -evc-energy.com, 1 evchargingstations.com, 1 evdenevenakliyatankara.name.tr, 1 evdenevenakliyatistanbul.gen.tr, 1 @@ -51894,8 +52052,8 @@ eve-online-com.ru, 1 eve-ua.com, 1 eve.tax, 1 eve0s.com, 1 +eveandi.health, 1 eveaz.com, 1 -evec.in, 1 eveco-mebel.ga, 1 evedanjailbreak.com, 1 evehryday.com, 1 @@ -51905,10 +52063,10 @@ evelienstormzangcoach.nl, 1 evelienuitvaartverzorging.nl, 1 evelienzorgt.nl, 1 evelin.tk, 1 -evelinalondon.nhs.uk, 1 -evelyndayman.com, 1 +even44.no, 1 evenbijproaten.online, 1 evendesign.gq, 1 +evenflowph.ca, 1 evenimenteromania.tk, 1 eveningstar.tk, 1 eveningtaxservices.com, 1 @@ -51917,6 +52075,7 @@ evenstargames.com, 1 event-fullyyours.com, 1 event-register.jp, 1 event-reisen.tk, 1 +event-trac.com, 1 event-wunsch.de, 1 event.coffee, 1 event1teamstore.com, 0 @@ -51950,20 +52109,20 @@ eventcore.tk, 1 eventdata.co.uk, 1 eventdata.uk, 1 eventdays.tk, 1 -eventdrop.at, 1 eventex-rentals.com, 1 eventfun.tk, 1 -eventhub.events, 1 eventide.space, 1 eventinsurancesettlementqc.com, 1 eventive.org, 0 eventlista.no, 1 eventmake.es, 1 +eventmall.com.br, 1 eventnature.de, 1 eventnexus.co.uk, 1 eventoopartyrooms.com, 1 eventosbgp.com, 1 eventosbyt.pt, 1 +eventosclick.com, 1 eventosdeluchalibre.tk, 1 eventosenmendoza.com.ar, 1 eventosformativos.tk, 1 @@ -51983,9 +52142,10 @@ eventplanner.nl, 1 eventprazdnik.ru, 1 events1.co.il, 1 eventsbytma.com, 1 +eventseeker.com, 1 +eventsforyou.fr, 1 eventsmaster.ca, 1 eventso.net, 1 -eventstack.nl, 1 eventticketscenter.com, 1 eveonline.com, 1 ever.sale, 0 @@ -51994,24 +52154,25 @@ everacommerce.com, 1 everaerts.eu, 1 everand.com, 1 everberg.tk, 1 -everchanging.de, 0 +everchanging.de, 1 evercheck.com, 1 evercred.com, 1 everdivemarine.com, 1 everestbankltd.com, 1 +everestplus.io, 1 everettduiattorneys.com, 1 everettsautorepair.com, 0 everettsbirthdayparty.com, 1 everfi.com, 1 everfine.com.tw, 1 everfree.win, 1 -evergarden.cn, 1 +evergarden.cn, 0 +evergladesfarmequipment.com, 1 everglow.co.jp, 1 evergood.com.br, 1 evergreen.je, 1 evergreenal.gov, 1 evergreendirect.org, 1 -evergreengavekal.com, 1 evergreenilder.tk, 1 evergreenlangladewi.gov, 1 evergreenpeo.com, 1 @@ -52026,6 +52187,7 @@ everitoken.io, 1 everling.lu, 1 everlong.org, 1 everly.market, 1 +evermade.fi, 1 evermed.au, 1 evermed.com.au, 1 evernaut.com, 1 @@ -52036,16 +52198,15 @@ everseo.tk, 1 eversightwealth.com, 1 everstage.com, 1 evertonarentwe.com, 1 -evertradeelectronics.com, 0 +evertradeelectronics.com, 1 evertrust.fr, 1 evertry.co, 1 evertz.com, 1 evertz.io, 1 everwaking.com, 0 -everwelloh.com, 1 everwinter.tk, 1 +every-day-life.com, 0 every-day.nl, 1 -every.one, 1 everyad.co.il, 1 everyarti.st, 1 everybitfit.com, 1 @@ -52065,7 +52226,9 @@ everydollar.com, 1 everyex.com, 1 everyeye.it, 1 everykidoutdoors.gov, 1 +everymail.me, 1 everyoneadmins.tk, 1 +everyoneeats.com, 1 everysaving.ae, 1 everysaving.ca, 1 everysaving.co.uk, 1 @@ -52073,7 +52236,6 @@ everysaving.com, 1 everysaving.com.au, 1 everysaving.ie, 1 everysaving.sg, 1 -everysk.com, 1 everystudent.bg, 1 everystudent.com.tw, 1 everysync.co.jp, 1 @@ -52090,6 +52252,7 @@ everythingweb.site, 1 everytrycounts.gov, 1 everyveterancountsohio.gov, 1 eveshaiwu.com, 1 +eveshamglass.co.uk, 1 evest.com, 1 evetdermisin.com, 1 evetech.net, 1 @@ -52133,13 +52296,12 @@ evitacion.com, 1 evkitdigital.com.br, 1 evl.one, 1 evlconsulting.com.au, 1 -evlilikilan.com, 1 +evlilikilan.com, 0 evlqa1sp1tzb05zo-reoo0vhj9a1t5pousfudnkg.com, 0 -evlv.energy, 1 -evmodssweden.se, 1 evo-ai.com, 1 evo-exchange.com, 1 evo.moe, 1 +evobox.store, 1 evoco.vc, 0 evodation.com, 1 evodation.org, 1 @@ -52154,14 +52316,13 @@ evolucionradio.tk, 1 evolusis.fr, 1 evolution-gaming.tk, 1 evolution-host.ga, 1 -evolution-x.org, 1 +evolution-x.org, 0 evolution.codes, 1 evolutionbp.es, 1 evolutioninflatables.co.uk, 1 evolutionlife.za.com, 1 -evolutionmining.com, 1 evolutionmuaythai.com, 1 -evolutionosteopathy.co.uk, 0 +evolutionosteopathy.co.uk, 1 evolutive-records.tk, 1 evolutlabs.com, 1 evoluxion.co, 1 @@ -52170,9 +52331,9 @@ evolve.com, 1 evolveagency.gr, 1 evolvedevlabs.de, 1 evolvemodular.ca, 1 -evolveorbit.com, 1 evolvetechnologies.co.uk, 1 evolvewithquantum.com, 1 +evolvexengineering.com, 1 evolvicity.org, 1 evolvingseo.com, 1 evolvingthoughts.net, 1 @@ -52189,13 +52350,14 @@ evosyn.com, 1 evote-ch.ch, 1 evotec.pl, 1 evoting-test.ch, 1 -evoting.ch, 1 -evpitch.com, 1 +evoting.ch, 0 +evrial.com, 1 evromandie.ch, 1 evronews.ga, 1 evropaedu.ru, 1 evscicats.com, 1 evscstudentwifi.com, 1 +evseadapters.com, 1 evsinemasistemleri.tk, 1 evstatus.com, 0 evt.com, 1 @@ -52208,6 +52370,7 @@ ewa-hayward.co.uk, 1 ewacforum.tk, 1 ewaf.club, 1 ewaipiotr.pl, 1 +ewananga.ac.nz, 1 ewanm89.co.uk, 1 ewanm89.com, 1 ewanm89.uk, 1 @@ -52218,13 +52381,14 @@ ewasterj.com, 1 ewatchers.org, 1 ewaycorp.com, 1 eweb.org, 1 +ewebcreative.com, 0 ewebmaster.it, 1 ewen-bara.com, 1 ewesparky.com, 1 ewg-garching.de, 1 ewgalerie.com, 0 ewgri.gov, 1 -ewhalellc.com, 1 +ewhowell.com, 1 ewie.name, 1 ewighost.com, 1 ewigkeit.blog, 1 @@ -52240,7 +52404,6 @@ ewp.homes, 1 ewp.live, 1 ewritingservice.com, 1 ewsfeed.com, 1 -ewtpro.com, 1 ewuchuan.com, 1 ewuraba.co, 1 ewycena.pl, 1 @@ -52279,7 +52442,6 @@ examhq.net, 1 examika.ru, 1 examone.com, 1 exampaperarchive.com, 1 -example.li, 1 example.ng, 1 exampleessays.com, 1 examroll.fr, 1 @@ -52294,10 +52456,8 @@ exarcheia.link, 1 exarcheia.ru, 1 exarius.org, 1 exashop.tn, 1 -exaspace.de, 1 exatmiseis.net, 0 exatom.io, 1 -exavo.fr, 1 excaliburmatrix.tk, 1 excaliburvintagequests.com, 1 excavation.ga, 1 @@ -52310,6 +52470,7 @@ exceldatapro.com, 1 exceldor.ca, 1 exceldor.com, 1 exceldorcooperative.ca, 1 +exceldorcooperative.com, 1 exceleron.com, 1 exceleron.in, 1 excelgum.ca, 1 @@ -52323,7 +52484,9 @@ excellentfoodtech.com, 1 excellentrencontrer.tk, 1 excellentsurferers.ga, 1 excellentsurferest.ga, 1 +excellershop.com, 1 excellingleaders.nl, 1 +excelnutritional.com.br, 1 excelpedia.net, 1 excelsamurai.com, 1 excelsiorcomics.com.br, 0 @@ -52347,7 +52510,6 @@ exchangetrading.tk, 1 exchangeview.ga, 1 exchangevisits.tk, 1 exchaser.com, 1 -excitech.co.uk, 1 exciters.tk, 1 excitoninteractive.com, 1 exclaimer.com, 1 @@ -52358,10 +52520,10 @@ exclusivelyuk.co.uk, 1 exclusivemilf.com, 1 exclusiveresorts.com, 1 excluzive.ml, 1 +excoffierleonard.com, 1 excontinuum.de, 1 excursiones.tk, 1 exe-boss.tech, 1 -exe.xyz, 1 exec.institute, 1 execbar.com, 1 execom68.tk, 1 @@ -52411,6 +52573,7 @@ exiletower.tk, 1 exip.ga, 1 exira.com, 1 exist.ru, 1 +exitbydeath.com, 1 exito-e.com, 1 exitoseguro.tk, 1 exitreality.tk, 1 @@ -52418,6 +52581,7 @@ exits.partners, 1 exizent.com, 1 exizent.tk, 1 exlibris.org, 1 +exmart.ng, 1 exmoe.com, 1 exo-chanyeol.tk, 1 exoatlas.com, 1 @@ -52426,10 +52590,6 @@ exodium.tk, 1 exodus-net.pl, 1 exodus.com, 1 exodus.io, 1 -exogenis.co.uk, 1 -exogenis.dk, 1 -exogenis.sg, 1 -exogenis.tech, 1 exogenous.ga, 1 exogn.com, 1 exomind.cf, 1 @@ -52441,7 +52601,6 @@ exordiumconcepts.com, 1 exosama.com, 1 exoscale.ch, 1 exoscale.com, 1 -exosys.ai, 1 exosys.ch, 1 exoten-spezialist.de, 1 exotic-animals.tk, 1 @@ -52462,6 +52621,8 @@ expansive.info, 1 expart.com, 1 expat.com, 1 expatexplore.com, 0 +expatfinancial.com.hk, 1 +expatholidaysthailand.com, 1 expatinpoland.com, 1 expatmortgage.uk, 1 expatriate.pl, 0 @@ -52501,7 +52662,6 @@ experiments.lv, 1 experimetrix.com, 1 experise.fr, 1 experiumorocco.com, 1 -expero.ru, 1 experpento.tk, 1 expert-batiment-rouen.fr, 1 expert-comptable-vichy-moulins-allier.fr, 1 @@ -52511,13 +52671,14 @@ expert96.cf, 1 experta.bg, 1 expertairductcleaninghouston.com, 1 expertbrand.pl, 1 -expertcen.ru, 1 expertclub.tk, 1 expertcomics.ca, 1 expertdentalgrp.com, 1 experteasy.com.au, 1 expertembeleza.com, 1 +expertembeleza.com.br, 1 expertestate.org, 1 +expertgreen.pl, 1 experthiring.net, 1 experthive.co.za, 1 expertisevision.fr, 1 @@ -52547,10 +52708,12 @@ explicamente.pt, 1 explode.tk, 1 explodie.org, 1 explohub.com, 1 +exploit-db.com, 1 exploit.cz, 0 exploit.party, 1 exploited.cz, 1 exploithe.net, 1 +explora.studio, 1 explorance.com, 1 exploraturuta.com, 1 exploravacations.in, 1 @@ -52629,6 +52792,7 @@ express-hosting.org, 1 express-pay.by, 1 express-shina.ru, 1 express-shop.tk, 1 +express-vpn.com, 1 express1040.com, 1 expressarte.tk, 1 expressbanking-uat.net, 1 @@ -52653,7 +52817,9 @@ expressramps.com, 1 expressstairliftssw.co.uk, 1 expressstore.ga, 1 expressvpn.com, 1 +expressvpn.net, 1 expressvpn.works, 1 +expressvpn.xyz, 1 expresvpn-private-analytics.net, 1 exprimo.tk, 1 expungement.law, 1 @@ -52668,7 +52834,10 @@ exside.com, 1 exstirpo.com, 1 ext-code.com, 1 extact.com, 1 +extendedteam.co, 1 +extendedteam.net, 1 extendet.tk, 1 +extendgroup.com, 1 extendresources.com, 0 extendwings.com, 1 extenselizzembalagens.com.br, 1 @@ -52704,13 +52873,10 @@ extrabusiness.tk, 1 extraconlarp.org, 1 extract.me, 1 extracting.tk, 1 -extractly-demo.com, 1 -extractly-dev.com, 1 -extractly-test.com, 1 -extractly.ai, 1 extractoracentral.com, 1 extradiely.sk, 1 extradienst.at, 1 +extradivers-worldwide.com, 1 extraeasycash.com, 1 extraefficiency.tk, 1 extraefficient.tk, 1 @@ -52729,20 +52895,20 @@ extratext.at, 1 extratv.com, 1 extreme-addicts.tk, 1 extreme.co.th, 1 +extremebaking.com, 1 extremedialogue.org, 1 extremeforces.tk, 1 extremelawsers.ga, 1 extremelawsest.ga, 1 extremeleadprogram.com, 1 extremelycorporate.ca, 0 -extrememanual.net, 1 extrememusclepump.com, 1 extremepeptides.com, 1 extremeprojects.tk, 1 extremereloading.net, 1 extremeservicesandrestoration.com, 1 extremesports.tk, 1 -extremetreeandlandscape.com, 1 +extremetreeandlandscape.com, 0 extremetubepremium.com, 1 extremetunedcars.tk, 1 extremfrank.tk, 1 @@ -52760,6 +52926,7 @@ exxpozed.ch, 1 exxpozed.co.uk, 1 exxpozed.eu, 1 exzibit.net, 1 +eyaqueen.com, 1 eyasc.nl, 1 eye-move.nl, 1 eye-vet.co.uk, 1 @@ -52787,35 +52954,36 @@ eyescratch.tk, 1 eyesee.fr, 1 eyesfans.com, 1 eyeshield-informatique.tech, 1 -eyesoneshot.fr, 1 eyespecialistsofla.com, 1 eyestrainexplained.com, 1 eyesurgery.tk, 1 eyetooth.ga, 1 eyfari.com, 1 eyktasarim.tk, 1 +eylea.us, 1 eylog.co.uk, 1 eymon.llc, 1 eynio.com, 1 +eyodin.com, 1 eyoo.link, 1 eyps.net, 1 eytosh.net, 1 eyy.co, 1 eyyit.com, 0 -eza.web.id, 1 +eza.web.id, 0 ezabalium.tk, 1 ezadmin.se, 1 ezakazivanje.rs, 1 ezakopane.pl, 1 +ezalba.com, 0 ezcater.com, 1 ezcesspoollongisland.com, 1 ezcourseonline.com, 1 +ezdog.press, 1 ezec.com.tw, 1 ezee-fix.co.uk, 1 ezekia.com, 1 -ezequiel-garzon.net, 1 ezercommerce.com, 1 -ezfinanz.com, 1 ezgif.com, 1 ezhub.de, 1 ezik-ido.tk, 1 @@ -52828,11 +52996,11 @@ ezlogzblog.com, 1 ezmedix.ua, 1 ezmob.com, 1 ezmoddingz.tk, 1 -eznetworks.com.br, 0 +eznetworks.com.br, 1 ezo.io, 1 ezochat.com, 1 -ezopus.com, 1 ezorgportaal.nl, 1 +ezoterizm.info, 1 ezprints.com, 1 ezrent.tk, 1 ezsavers.ga, 1 @@ -52842,7 +53010,9 @@ ezscrapbooksest.ga, 1 ezshopper.co.uk, 1 ezsun.co, 1 eztempmail.com, 1 +ezuz-fe.com, 1 ezvolt.com.br, 1 +ezwebsearch.com, 1 ezyentry.com.au, 1 ezygentechnology.com, 1 ezygrowth.world, 1 @@ -52850,7 +53020,6 @@ ezz-drops.tk, 1 ezzarware.nl, 1 ezzhole.net, 1 f-401.com, 1 -f-almeida.group, 1 f-centre.ru, 1 f-droid.org, 0 f-mall.jp, 1 @@ -52859,15 +53028,14 @@ f-sulzmann.de, 1 f-thie.de, 1 f-u-c-k.wien, 1 f.bi, 1 -f.box, 1 f.dog, 1 f.hk.cn, 1 -f.tl, 1 f0.com.au, 1 f00228.com, 1 f00f.org, 1 f0x.es, 1 f1-onlineliga.com, 1 +f13ts.nl, 1 f1bigpicture.com, 1 f1classement.com, 0 f1collection.com, 1 @@ -52955,10 +53123,10 @@ fabbs.org, 1 fabconvert.com, 1 fabelturen.tk, 1 faber.org.ru, 0 -fabercityshop.de, 1 faberoclub.tk, 1 fabfrenchinsurance.com, 1 fabfrugalmama.com, 1 +fabian-fingerle.de, 1 fabian-ising.de, 1 fabian-klose.com, 1 fabian-klose.de, 1 @@ -52966,8 +53134,8 @@ fabian-klose.net, 1 fabian-kluge.de, 1 fabian-zoske.de, 1 fabian.gq, 1 -fabianbeiner.com, 0 -fabianbeiner.de, 0 +fabianbeiner.com, 1 +fabianbeiner.de, 1 fabianbertona.com, 1 fabianegli.ch, 1 fabianfranke.de, 1 @@ -53004,7 +53172,9 @@ fableheartmedia.com, 1 fabpilot.com, 1 fabriano.com, 1 fabricacultural.org.br, 1 +fabricademonstros.com.br, 1 fabricandoclientes.com.br, 1 +fabricemannuelphotography.fr, 1 fabricio.adv.br, 1 fabriciokleinadvocacia.com.br, 1 fabriciomoreira.ga, 1 @@ -53012,7 +53182,6 @@ fabrik.de, 1 fabrika-himchistki.ru, 1 fabrika-jaluzi.ru, 1 fabrikafilmes.com.br, 1 -fabrikhane.com, 1 fabriknet.de, 1 fabrilec.tk, 1 fabrinet.co.th, 1 @@ -53042,9 +53211,9 @@ fac.fi, 1 fac.gov, 1 faca.gov, 1 facadatabase.gov, 1 +facan-godollo.hu, 1 facanabota.com, 1 facanabota.com.br, 1 -facanacaveira.com, 0 facarospauls.com, 1 facchinaggio.milano.it, 1 facchinaggio.roma.it, 1 @@ -53077,14 +53246,13 @@ facepretty.com.tw, 1 faces4watch.com, 1 facescertification.com, 1 facesdr.com, 1 -facetours.ma, 1 facevietpro.tk, 1 facevitalityers.ga, 1 fachcar.ma, 1 fachfusspflege-exner.de, 1 fachim.tk, 1 fachiri.tk, 1 -fachschaften.org, 1 +fachschaften.org, 0 fachschaftslisten.at, 1 fachschaftslisten.org, 1 fachversand-hennes.de, 1 @@ -53124,7 +53292,6 @@ facteurcheval.com, 1 factfocus.com, 1 factis.com, 1 factnsoftware.com, 1 -factobat.fr, 1 factor.cc, 0 factor10.com, 1 factorchave.com, 1 @@ -53135,6 +53302,7 @@ factorit.fr, 1 factorway.com, 1 factory-f.net, 1 factory-fan.com, 1 +factory01.it, 1 factorypartsdirect.com, 1 factozia.tk, 1 facts-about-bees.ml, 1 @@ -53254,8 +53422,8 @@ fairgaming.ml, 1 fairgaming.tk, 1 fairgolfteams.com, 1 fairhavenvt.gov, 1 -fairisleaccommodation.com, 1 fairleevt.gov, 1 +fairlesslaw.com, 1 fairline.com, 1 fairlingtonumc.org, 1 fairmates.tk, 1 @@ -53267,8 +53435,6 @@ fairmonttamarak.ml, 1 fairmountfireco.gov, 1 fairplay.im, 1 fairporthots.com, 1 -fairportliquor.com, 1 -fairtprm.com, 1 fairtrade010.nl, 1 fairviewcounseling.org, 1 fairviewevents.ca, 0 @@ -53282,7 +53448,6 @@ fairyclinic.com.tw, 1 fairydust.space, 1 fairystar.com.tw, 1 fairyth.tk, 1 -faisalyusra.my.id, 1 faisia.tk, 1 faith-for-life.com, 1 faithadvisorers.ga, 1 @@ -53296,6 +53461,7 @@ faithfully.tk, 1 faithfulroad.org, 1 faithleaks.org, 0 faithnc.gov, 1 +faithriders.com, 0 faixaazul.com, 1 faizan.net, 1 faizanullah.com, 1 @@ -53305,7 +53471,6 @@ fajita.party, 1 fajn-shop.cz, 1 fajnshop.sk, 1 fajode.net, 1 -fajxo.sk, 1 fakat.tk, 1 fake-show.ga, 1 fakeaddress.net, 1 @@ -53340,9 +53505,12 @@ fal.moe, 1 falaeapp.org, 1 falastin.tk, 1 falbros.com, 1 +falcatus-dalmatians.hu, 1 falce.in, 1 +falcema.com, 1 falchion.tk, 1 falck.dk, 1 +falcn.io, 1 falcom.co.jp, 1 falcom.shop, 1 falcon.io, 1 @@ -53360,7 +53528,6 @@ faldoria.de, 1 falegname-roma.it, 1 falegname.roma.it, 1 falegnameria.milano.it, 1 -falfurriasbutter.com, 1 falixnodes.net, 1 falkenbergthomsen.dk, 1 falkenthal.org, 1 @@ -53401,7 +53568,6 @@ famacweb.no, 1 famainfo.com.br, 1 famcloud.de, 1 famdouma.nl, 1 -famelack.com, 1 fameng.nl, 1 famenneartmuseum.be, 1 famep.gov, 1 @@ -53450,7 +53616,7 @@ familleenfete.fr, 1 familleseux.net, 1 familleshilton.com, 1 family-clinic.tk, 1 -family-intervention.com, 0 +family-intervention.com, 1 familyace.cz, 1 familyandfriends-railcard.co.uk, 1 familybusinessatlantic.ca, 1 @@ -53460,6 +53626,7 @@ familyconventioners.ga, 1 familyd-c.com, 1 familydoctor.ru, 1 familyhookups.com, 1 +familyjpierre.com, 1 familylab.de, 1 familyparties.co.uk, 1 familyrecipe.co.uk, 1 @@ -53468,9 +53635,8 @@ familysinners.com, 1 familystockexchangeers.ga, 1 familytreehq.com, 1 familytrees.net, 1 -familytreewebinars.com, 0 +familytreewebinars.com, 1 familyzone.ga, 1 -famion.eu, 1 famiport.com, 1 famlefeber.nl, 1 famonitor.com, 1 @@ -53506,7 +53672,7 @@ fancy.org.uk, 1 fancygaming.dk, 1 fancypanty.cf, 1 fancywow.com, 1 -fandeconcours.be, 1 +fandars.com, 1 fandeev.tk, 1 fander.it, 1 fandt.me, 1 @@ -53514,7 +53680,6 @@ fanera.tk, 1 fanescu.ro, 1 fanfareokselaar.tk, 1 fanfiction.tk, 1 -fanfile.net, 1 fanflix.co, 1 fang-den-sommer.de, 1 fangban.net, 1 @@ -53540,11 +53705,11 @@ fansale.de, 1 fansdb.cc, 1 fansdefoot.fr, 1 fansniper.com, 1 -fansop.com, 1 fanspace.io, 1 fansport.space, 1 fansta.jp, 1 fanstake.com, 1 +fanstuff.ru, 1 fantacast.it, 1 fantasiatravel.hr, 1 fantasmma.tk, 1 @@ -53589,7 +53754,9 @@ fanyue123.tk, 1 fanzapers.ga, 1 fanzhe.com, 1 fanzine-nimbus.tk, 1 +fanzlive.com, 1 faortega.org, 1 +fap.link, 1 fap.no, 1 fapcoholic.com, 1 fapiis.gov, 1 @@ -53597,7 +53764,6 @@ fapplejuice.com, 1 fapplepie.com, 1 fapplesauce.com, 1 fapzone.tk, 1 -faq-helper.com, 1 faq.ie, 1 faqbite.com, 1 faqexchangeest.ga, 1 @@ -53605,6 +53771,7 @@ faqin-hr.info, 1 faqiteam.tk, 1 far-east.tk, 1 far3link.tk, 1 +fara-frunzis.ro, 1 fara.gov, 1 faradome.ws, 1 faradrive.ir, 1 @@ -53653,12 +53820,12 @@ farlitesolutions.com, 1 farm-catalog.ga, 1 farm-dogecoin.tk, 1 farm-vacations.com, 1 +farmacia.pt, 1 farmaciabarcelona.com, 1 farmaciaclinica.it, 1 farmaciacomunalelacchiarella.it, 1 farmacialaboratorio.it, 0 farmaciasanchodemesa.com, 1 -farmaciasfarmony.com, 1 farmacologiaonline.com, 1 farmacovigilancia-exeltis.com.mx, 0 farmako.net, 1 @@ -53666,6 +53833,7 @@ farmakon.tk, 1 farmalink.pe, 1 farmarrays.com, 1 farmasimahaganesha.ac.id, 1 +farmaspeed.it, 1 farmauna.com, 1 farmaweb.be, 1 farmbureauinsurance-mi.com, 1 @@ -53690,9 +53858,9 @@ farmtogether.com, 1 farmtransparency.org, 1 farmus-spb.ru, 1 farmvilleva.gov, 1 -farnboroughairport.com, 1 faro-car-hire.co.uk, 1 faro.com, 1 +farodegracia.com, 0 farodistribuidora.com.br, 1 faroes.net, 0 faroes.org, 1 @@ -53713,11 +53881,11 @@ farringtonfoundation.org, 1 farringtongurneyvillagehall.org, 1 farsil.eu, 1 farsmohajer.com, 1 +fart.cafe, 1 fartoclose.tk, 1 fartoon.cz, 1 fartoons.cz, 1 fartypants.com, 1 -farwestlive.com, 1 faryaz.tk, 1 fasab-portcenter.se, 1 fasad.eu, 1 @@ -53736,6 +53904,9 @@ fashionchanel.tk, 1 fashioncourses.tk, 1 fashioncrib.co.za, 1 fashiondaily.tk, 1 +fashiondays.bg, 1 +fashiondays.hu, 1 +fashiondays.ro, 1 fashiondesign.ml, 1 fashiondex.com, 1 fashiondistrict.org, 1 @@ -53743,19 +53914,18 @@ fashiondock.de, 0 fashiondot.ga, 1 fashioneditor.gr, 1 fashionette.de, 1 +fashionfeverlifestyle.com, 0 fashionflavorph.com, 1 fashionforward.tk, 1 fashionforyou.ga, 1 fashionfreaks.tk, 1 fashionfuture.tk, 1 -fashiongirl.be, 1 -fashiongirl.ch, 1 -fashiongirl.es, 1 -fashiongirl.fi, 1 +fashiongonerogue.com, 1 fashionhome.tk, 1 fashionhometex.com, 1 fashionht.com, 1 fashioninitaly.tk, 1 +fashionispsychology.com, 1 fashionlink.tk, 1 fashionlistify.tk, 1 fashionmagazine.com, 1 @@ -53803,11 +53973,13 @@ fashionunited.no, 1 fashionunited.nz, 1 fashionunited.pl, 1 fashionunited.pt, 1 +fashionunited.ru, 1 fashionunited.se, 1 fashionunited.uk, 1 fashionusa.gq, 1 fashionweb.ml, 1 fashionweek.tk, 1 +fashionweekweb.com, 1 fashionworlds.ml, 1 fashionxmas.gq, 1 fasigbrooks.com, 1 @@ -53821,16 +53993,18 @@ fassiportugal.pt, 1 fast-cargo.ml, 1 fast-drops.cf, 1 fast-events.eu, 1 +fast-growth.fr, 1 fast-host.gq, 1 +fast-host.net, 1 fast-mobile.tk, 1 fast-pro.co.jp, 1 fast-silver.tk, 1 fast.ly, 1 fast4ever.tk, 1 -fast9.net, 1 fastable.net, 1 fastamundi.com, 1 fastandtuning.tk, 1 +fastantigentests.com.au, 1 fastbackgroundcheck.com, 1 fastbackmbg.be, 1 fastbackmbm.be, 1 @@ -53878,7 +54052,6 @@ fastighetsekonomi.com, 0 fastimg.net, 1 fastknighki.ga, 1 fastknigi.ml, 1 -fastlane.express, 1 fastlaneimportautorepair.com, 1 fastme.co, 1 fastmeet.tk, 1 @@ -53889,17 +54062,15 @@ fastos.de, 1 fastpaper.gq, 1 fastpeoplesearch.com, 1 fastphox.com, 1 -fastplaygames.com, 1 -fastplumbingmilwaukee.com, 1 fastpresence.com, 1 fastproxycat.ml, 1 fastproxyforfree.gq, 1 -fastreact.pl, 1 fastreel.com, 1 fastrocket.pl, 1 fastscanapp.com, 1 fastserv.pl, 1 fastshop.com.pl, 0 +faststage.ch, 1 fasturl.ml, 1 fastvanya.com, 1 fastvelocityers.ga, 1 @@ -53929,6 +54100,7 @@ fatiguesyndrome.com, 1 fatih-catering.com, 1 fatihingemisi.com, 1 fatimamoldes.com.br, 1 +fatimaonlinepharmacy.com, 1 fatimarojo.com, 1 fatlabwebsupport.com, 1 fatnerdstock.com, 1 @@ -53939,12 +54111,14 @@ fatsoma.com, 1 fattailcall.com, 0 fattorino.it, 1 fatturegeko.eu, 1 +fatty.io, 1 fattyink.com, 1 fatumagro.bg, 1 faturan.com.tr, 1 fatvalley.at, 1 fatzebra.com.au, 1 fau-bremen.tk, 1 +fau.re, 1 fau8.ml, 1 fauceton.cf, 1 fauceton.tk, 1 @@ -53957,7 +54131,6 @@ faunafacts.com, 1 faunathreads.com, 1 faunatrek.com, 1 faus-moliner.com, 1 -faustodiiorio.com, 1 fautchen.eu, 1 fauteuil-bebe.fr, 1 fauv.art, 1 @@ -53983,6 +54156,7 @@ favoritestudenters.ga, 1 favoritestudentest.ga, 1 favoritetechers.ga, 1 favouritequotations.ca, 1 +favourperfect.com.au, 0 favro.com, 1 favrotest.com, 1 faw-club.cf, 1 @@ -54005,6 +54179,7 @@ fayettevilleflyer.com, 1 fayettevillewv.gov, 1 fayffersons.com, 1 fayfilms.com, 1 +fayntic.com, 1 faysalabdi.fi, 1 fazah-conseil.agency, 1 fazet.tk, 1 @@ -54035,11 +54210,12 @@ fbiic.gov, 1 fbijobs.gov, 1 fbilab.gov, 1 fbk.moe, 1 +fbnquest.com, 1 fbo.gov, 1 +fbo.network, 1 fboerman.nl, 1 fboglich.com.ar, 1 fbowling.com, 1 -fbpred.xyz, 1 fbrief.org, 1 fbsbx.com, 1 fbscontenttest.com, 1 @@ -54048,6 +54224,7 @@ fburl.com, 1 fbwat.ch, 1 fbwifi.com, 1 fc-corvinul.tk, 1 +fc-rostov.ru, 1 fc-software.it, 1 fc8882.net, 1 fca-tools.com, 1 @@ -54059,7 +54236,6 @@ fcbasel.info, 0 fcblueboys.be, 1 fcbrasov.tk, 1 fcc.gov, 1 -fcc.org.ru, 1 fccaracciolo-solution.tk, 1 fccarbon.com, 0 fccchina.org, 1 @@ -54071,12 +54247,12 @@ fcdenhaag-holi.tk, 1 fcdordrecht.tk, 1 fcforum.net, 1 fcgmd.gov, 1 +fcgundlach.de, 1 fcht.fr, 1 fcic.gov, 1 fcitasc.com, 1 fcm.org.co, 1 fcmoorsel.tk, 1 -fcoca.org.uk, 1 fcode.tk, 1 fcosinus.com, 1 fcporto.ws, 1 @@ -54102,14 +54278,15 @@ fdic.exposed, 1 fdicig.gov, 1 fdicoig.gov, 1 fdimmo24.com, 1 +fdj.fr, 1 fdkm.eu, 1 fdlibre.eu, 1 fdlp.gov, 1 fdltcc.edu, 1 fdm.ro, 1 fdms.gov, 1 -fdnsc.net, 0 -fdopportunities.com, 0 +fdnsc.net, 1 +fdopportunities.com, 1 fdp-alsdorf.de, 1 fdp-heinsberg.de, 1 fdpbrig.ch, 1 @@ -54124,7 +54301,6 @@ fear-crowd.tk, 1 fearedcreation.tk, 1 fearfactory.tk, 1 fearghus.org, 1 -fearglas.cloud, 1 fearlessmusic.tk, 1 fearstyle.tk, 1 fearunknown.tk, 1 @@ -54140,15 +54316,16 @@ featherfan.io, 1 feathermc.com, 1 feathersbtq.com, 0 featherwallet.org, 1 +feature-branch.nl, 1 featured.tk, 1 featuredcarders.ga, 1 feb.gov, 1 febeditora.com.br, 1 febooti.com, 1 februarystars.nl, 1 -fecskefeszekotthonom.hu, 1 fecyt.es, 1 fed-shashek.spb.ru, 1 +fed.monster, 1 fed51.com, 1 fedai.org, 1 fedbizopps.gov, 1 @@ -54167,6 +54344,7 @@ federalbus.ga, 1 federalbusers.ga, 1 federalbusest.ga, 1 federalcalendarest.ga, 1 +federalcriminaldefenseattorney.com, 1 federalinvestments.gov, 1 federaljob.net, 1 federaljobs.gov, 1 @@ -54185,7 +54363,6 @@ fedi.solutions, 1 fedidcard.gov, 1 fedifeed.net, 1 fedinvest.gov, 0 -fedishark.eu, 1 fedistatus.com, 1 fedistatus.eu, 1 fedistatus.net, 1 @@ -54220,7 +54397,6 @@ fedpartnership.gov, 1 fedramp.gov, 1 fedres.gov, 1 fedrigoni.com, 1 -fedrigopeinture.fr, 1 fedrooms.gov, 1 fedrtc.org, 1 fedsfeedfamilies.gov, 1 @@ -54243,7 +54419,6 @@ feedingmynewbaby.com, 1 feedingonmanna.org, 1 feedkovacs.hu, 1 feedmail.org, 1 -feedon.ai, 1 feedready.eu, 1 feedstringer.com, 1 feedthefood.com, 1 @@ -54257,7 +54432,7 @@ feek.org, 1 feel-events.com, 1 feel-it.nl, 1 feel.aero, 1 -feelaugust.com, 1 +feelbycubanas.com, 1 feelclear.com, 1 feeld.cloud, 1 feelerfolg.com, 1 @@ -54271,7 +54446,6 @@ feelmax.com, 1 feelmingo.com, 1 feelnet.top, 1 feeltennis.net, 1 -feelut.com, 1 feen.us, 1 feeriedesign-event.com, 1 feest.com, 1 @@ -54281,7 +54455,6 @@ feestgids.nl, 1 feetek.net, 1 feetnesclub.tk, 1 feetpa.ws, 1 -feetsco.com, 1 feezmodo.com, 1 fef.moe, 1 fefacaram.com.br, 1 @@ -54302,26 +54475,27 @@ fehr-online.eu, 1 fehrm.gov, 1 feibiaowang.com, 0 feiertage-ferien.com, 1 +feifandaily2024.com, 1 feignandfolly.tk, 1 feiki.tk, 1 -feikuai.tv, 0 +feikuai.tv, 1 feildel.fr, 1 feilen.de, 1 feilestrokestown.com, 1 -feinschmecker-aktuell.de, 1 feirlane.org, 0 feiromo.com, 1 feistore.com.tw, 1 -feistyduck.com, 1 feisworld.com, 0 feitam.es, 1 feittinf.org.br, 0 feixiang.eu.org, 1 feixiang.pp.ua, 1 feiya.ng, 1 +fejasport.hu, 1 fejervar.hu, 1 fejlaw.com.au, 0 fejo.dk, 1 +fekepp.net, 1 feketerichard.hu, 1 fekir.info, 1 felcas.com.co, 1 @@ -54337,6 +54511,7 @@ felicifia.org, 1 felicitysolar.com.mm, 1 felidas.net, 1 felin.es, 1 +feline.ro, 1 felinefriend.co.uk, 1 felinepc.com, 1 felipesexto.tk, 1 @@ -54369,6 +54544,8 @@ felixturgeon.ca, 1 felixvelarde.com, 0 felixweb.tk, 1 feliz.tk, 1 +fellas.com.tr, 1 +felly.com.br, 1 felonymath.com, 1 felonymath.net, 1 felonymath.org, 1 @@ -54377,6 +54554,7 @@ felsefe.tk, 1 felsenheimer.tk, 1 feltencie.com, 1 feltons.me, 0 +feltresca.it, 1 feluck.de, 1 female-costumes.tk, 1 femalebeauty.my.id, 1 @@ -54384,7 +54562,6 @@ femalecare.tk, 1 femalefoodie.com, 1 femalehumorers.ga, 1 femalehumorest.ga, 1 -femalepersonaltrainer.com.au, 1 femaleteamest.ga, 1 femboy.fan, 1 femboys.pics, 1 @@ -54406,9 +54583,9 @@ femme.fitness, 1 femmes-women.gc.ca, 1 femmes.gc.ca, 1 femmesaupluriel.com, 1 +femncafe.com, 1 femundo.de, 1 fena.jp, 1 -fenacha.fr, 1 fenagav.ga, 1 fenalia.shop, 1 fenatrigo.com.br, 1 @@ -54431,7 +54608,7 @@ fengyi.tel, 1 fengying.co, 1 fenhl.net, 1 fenichelar.com, 1 -feniksforge.com, 0 +feniksforge.com, 1 fenitriatnica.tk, 1 fenix-site.tk, 1 fenix-zone.tk, 1 @@ -54440,13 +54617,13 @@ fenixmetal.tk, 1 fenixonlinevirtual.com.br, 1 fenn.moe, 1 icecatmobile.wtf, 1 -fennie.onthewifi.com, 0 +fennie.onthewifi.com, 1 fenns.co.za, 1 fennville.gov, 1 fennydewit.nl, 1 -fenogent.com, 1 fenom.ga, 1 fenris.ovh, 1 +fenritec.eu, 1 fenritec.fr, 1 fense.cf, 1 fense.ml, 1 @@ -54504,7 +54681,6 @@ fermani.ar, 1 fermani.com.ar, 1 fermastore.cf, 1 fermastore.tk, 1 -fermateh.com.ua, 1 fermemarineau.com, 1 fermentcerealesbio.fr, 1 fermenteana.com, 1 @@ -54555,7 +54731,6 @@ ferronweb.org, 1 ferrousmoon.com, 1 ferrovial.com, 1 ferrumformat.com, 1 -ferry.uk, 1 ferrybig.me, 1 ferrybig.nl, 1 ferrynitzsche.nl, 1 @@ -54565,6 +54740,7 @@ fersumalin.ga, 1 fersumalin.gq, 1 fersumalin.ml, 1 fersumalin.tk, 1 +ferticare.pt, 1 fertichem.mx, 1 fertile.fund, 1 fertilityquick.ga, 1 @@ -54576,7 +54752,6 @@ ferwor.studio, 1 ferydoonzandi.tk, 1 fescuesodsouthernindiana.com, 1 feseev.ml, 1 -fesoftware.net, 1 festaprylar.se, 1 festar.tk, 1 festesuniversitaries.tk, 1 @@ -54634,10 +54809,10 @@ feudaltactics.com, 1 feudias.com, 1 feuer-u-stein.de, 1 feuerhuhn.de, 1 +feuerkids.de, 1 feuerloescher-test.de, 1 feuernatter.de, 1 feuerwehr-bubikon.ch, 1 -feuerwehr-coesfeld.de, 1 feuerwehr-dachaufsetzer.de, 1 feuerwehr-e-learning.de, 1 feuerwehr-gebirge.de, 1 @@ -54653,7 +54828,6 @@ fevolden.com, 1 fewo-groden.de, 1 fewo-hafeninsel-stralsund.de, 1 fewo-thueringer-wald.de, 1 -fewo-wendl.de, 1 fewo-wildrosenpfad.de, 1 fewo.plus, 1 fewo.reise, 1 @@ -54669,13 +54843,13 @@ fezbet.net, 1 fezlee.com, 1 ff-bad-hoehenstadt.de, 1 ff-bg.xyz, 1 +ff-daily.com, 1 ff-koenigstein-opf.de, 1 ff-obersunzing-niedersunzing.de, 1 ff-tostedt.de, 1 ff15.ddns.net, 1 -ff2.cn, 1 ff5197.co, 1 -ff5g.com, 0 +ff5g.com, 1 ff62.fr, 1 ff6729.co, 1 ff6957.co, 1 @@ -54683,12 +54857,14 @@ ff9297.co, 1 ff9397.com, 1 ff9728.co, 1 ffamranteatime.com, 1 +ffaprivatebank.com, 1 ffazeshift.net, 1 ffb.gov, 1 ffb1.com, 1 ffbans.org, 1 ffbsee.net, 0 ffc-gerlingen.de, 1 +ffd.or.id, 1 ffdfrontroyal.com, 1 ffestiniogtravel.com, 1 fff-du.de, 1 @@ -54696,10 +54872,11 @@ fff-musique.fr, 1 fffbhv.de, 1 fffdm.com, 1 ffhs.ch, 1 -ffi.lol, 1 ffiec.gov, 1 ffis.me, 0 ffl123.com, 1 +fflone.com, 1 +ffmradio.de, 1 ffn-connect.de, 1 ffnm.org, 1 ffprofile.com, 1 @@ -54716,7 +54893,6 @@ ffzellamsee.at, 1 ffzeven.de, 1 fgalegaciclismo.es, 1 fgeiger.dnshome.de, 1 -fgf-companion.com, 1 fggpay.com, 1 fgh-ma.de, 1 fgh-zertifizierung.de, 1 @@ -54731,8 +54907,9 @@ fh-jituan.com, 1 fh-mittelstand.de, 1 fh-photographie.art, 1 fh-wechat.com, 1 +fh-x.de, 1 fh-zh.com, 1 -fh.spb.ru, 1 +fh.spb.ru, 0 fh169.cc, 1 fh6lfwyn.com, 1 fh70.com, 0 @@ -54748,7 +54925,6 @@ fhasiagroup.com, 1 fhba.com.au, 1 fhburger.ru, 1 fhcdn.xyz, 1 -fhd.agency, 1 fhdhelp.de, 0 fhdhilft.de, 0 fhersoberanes.tk, 1 @@ -54789,6 +54965,7 @@ fhope.org, 1 fhsroyalbanner.com, 1 fhsseniormens.club, 1 fhstation.com, 1 +fhstatus-chinese.com, 1 fhv-waldhausen.de, 1 fhwechat.com, 1 fhzhs.com, 1 @@ -54798,14 +54975,15 @@ fi.search.yahoo.com, 0 fiam.me, 1 fianna.tk, 1 fianoromano.news, 1 -fiaoakland.org, 1 fiasgo.dk, 1 fiataldivat.hu, 1 fibank.bg, 1 fiberoptikz.tk, 1 fiberxl.com, 1 +fibery.io, 1 fibogroup.com, 1 fibrefly.co.uk, 1 +fibrenttech.co.za, 1 fibretv.co.nz, 1 fibretv.tv, 1 fibroarrendacaseton.mx, 0 @@ -54822,16 +55000,18 @@ fickweiler.nl, 1 ficlab.com, 1 fico.com, 1 ficor.gov, 1 +ficus.io, 0 fid-elite.ch, 0 -fidbank.co.uk, 1 +fidanza.eu, 1 fiddle.to, 1 fiddlesaw.com, 1 fiddlestickstoys.com.au, 1 fidele-g-hd.co.jp, 1 fidelis-it.ch, 1 -fidelis-it.net, 0 +fidelis-it.net, 1 fidelity-services.com, 1 fidelity.co.jp, 1 +fidelitybank.com.gh, 1 fidelityhomestead.com, 1 fidelitysound.es, 1 fides.ch, 1 @@ -54850,12 +55030,12 @@ fieggen.eu, 1 fieggen.net, 1 fieggen.social, 1 fiekeoffringa.nl, 1 +fieldcrafts.com, 1 fieldday.com, 1 fieldeffect.com, 1 -fieldelectriconline.com, 1 fieldgroupny.com, 1 fieldsgynroboticsurgery.com, 1 -fieldstat.com, 1 +fieldsusa.com, 1 fieldworkbrewing.com, 1 fieldworks.ne.jp, 1 fiemmeimpianti.it, 1 @@ -54863,7 +55043,6 @@ fienaliri.tk, 1 fierman.eu, 0 fierman.net, 0 fierman.us, 0 -fierrettsphere.com, 1 fierscleaning.nl, 1 fieryaura.eu, 1 fiesta-mk5-limited-edition.nl, 1 @@ -54885,6 +55064,7 @@ fifatournament.tk, 1 fifaultimatemod.tk, 1 fifauteam.com, 1 fifehg.org.uk, 1 +fifemedicalgroup.co.uk, 1 fiff.de, 0 fifpro.org, 0 fifr.nl, 1 @@ -54900,7 +55080,7 @@ figafacts.com, 1 figandgoat.com, 1 figaroparrucchiere.it, 1 figbytes.biz, 1 -figbytes.com, 0 +figbytes.com, 1 figgy.mk, 1 figherie.it, 1 fighribali.tk, 1 @@ -54920,6 +55100,7 @@ figliasons.com, 1 figma-gov.com, 1 figma.com, 1 figma.site, 1 +figmalover.com, 1 figswoodfiredbistro.com, 1 figuras.tk, 1 figure.com, 1 @@ -54963,7 +55144,7 @@ filejo.com, 1 filek.ga, 1 fileplanet.com, 1 fileport.io, 1 -filequit.xyz, 0 +filequit.xyz, 1 files.com, 0 files.to, 1 files4share.com, 1 @@ -54974,13 +55155,14 @@ fileshare.party, 1 fileshare.to, 1 filesharing.to, 1 filesharingshop.com, 1 -filesmp3.org, 1 +filesoup.io, 1 filestar.io, 1 filestartest.io, 1 filesuffix.com, 1 filetransfer.one, 1 filetransparency.com, 1 filezilla-project.org, 1 +filgamaa.com, 1 filhomes.ph, 1 fili.com, 1 filialelectronica.hn, 1 @@ -54988,7 +55170,6 @@ filidorwiese.nl, 1 filigrana.tk, 1 filiienterprise.com, 1 filiio.com, 1 -filiotech.com, 1 filiotech.pl, 1 filip-prochazka.com, 0 filipi.no, 1 @@ -55005,7 +55186,8 @@ fillmysuitca.se, 1 fillo.com.tr, 1 film-colleges.com, 1 film-op-tv.nl, 1 -film-rezensionen.de, 1 +film-storyboards.com, 0 +film-storyboards.fr, 0 film-stream.cz, 1 film-tutorial.com, 1 film.cz, 1 @@ -55013,8 +55195,10 @@ film.ru, 1 filmbabasi.net, 1 filmbasar.com, 1 filmbest.tk, 1 +filmbooster.com, 1 filmbrain.com, 1 filmcorner.tk, 1 +filmdates.co.uk, 1 filmedonstage.com, 1 filmezzunk.hu, 1 filmfestivalflix.com, 1 @@ -55022,11 +55206,11 @@ filmfog.cf, 1 filmfog.ga, 1 filmfreeway.com, 1 filmimpact.com, 0 +filminebandim.com, 0 filmisfun.com, 1 filmisfun.net, 1 filmizleindir.tk, 1 filmkode.com, 1 -filmkovasi.com, 1 filmmarket.pro, 1 filmnetz.tk, 1 filmoffice.pl, 1 @@ -55041,11 +55225,9 @@ filmowanie-dronem.com.pl, 1 filmphotograph.com, 1 filmpornofrancais.fr, 1 filmpronet.in, 1 -filmriot.com, 1 filmsearch.tk, 1 filmserver.de, 1 filmsidan.tk, 1 -filmsleague.com, 1 filmtheaternieuwegein.tk, 1 filmwallpapers.ml, 1 filmweltverleih.de, 1 @@ -55059,7 +55241,7 @@ filosofia.tk, 1 filosofiskaeleonora.se, 1 filosofisksamtale.dk, 1 filter-kiev.com, 1 -filterboxx.com, 1 +filterboxx.com, 0 filterlists.com, 1 filtershekanha.com, 1 filthsystem.com, 0 @@ -55069,6 +55251,7 @@ filtr.me, 0 filtrmyfeed.com, 1 filwebasia.com, 1 fimallc.com, 1 +fimc-biodiversityportal.org, 1 fimfiction.net, 1 fimmcyte.com, 1 fimozin.ga, 1 @@ -55080,19 +55263,17 @@ fin.ee, 0 fin4i.it, 1 fina-foxy.com, 1 finagosolo.com, 1 -finajoliat.com, 1 finakalendrar.se, 1 finaktiv.tk, 1 final-expense-quotes.com, 1 final-rest.co.uk, 1 -final-spark.com, 1 final-x.com, 1 finalashes.tk, 1 +finalesuperuser.com, 1 finalfate.tk, 1 finalfoursteam.tk, 1 finalfourstream.tk, 1 finalgambit.band, 1 -finalizatextil.com.br, 1 finalleopard.tk, 1 finalmenteazul.pt, 1 finalonline.tk, 1 @@ -55114,7 +55295,6 @@ financemain.com, 1 financenews.tk, 1 financepre.com, 1 financestead.com, 1 -financetool.de, 1 financetwenty.com, 1 financewhile.com, 1 financewithcromulent.com, 1 @@ -55134,6 +55314,7 @@ financniexperti.sk, 1 finansified.com, 1 finansinspektionen.se, 1 finansy.tk, 1 +finanz-planer.net, 1 finanzasydinero.com, 1 finanzen-az.com, 1 finanzen-weblog.de, 1 @@ -55141,7 +55322,6 @@ finanzfluss.de, 1 finanzia.fi, 1 finanzierung-sofortzusage.de, 1 finanztime.com, 1 -finanztool.info, 1 finanzwende-recherche.de, 1 finaster.com.br, 1 finatcosmeticos.com.br, 1 @@ -55155,21 +55335,19 @@ finccam.com, 1 fincent.xyz, 1 finch.am, 1 finch.ga, 1 -finchleyhandyman.com, 1 finchnest.co.uk, 1 fincities.tk, 1 fincura.com, 1 find2career.com, 1 -findahelpline.com, 1 findahero.com.au, 1 findairconditioningers.ga, 1 findairconditioningest.ga, 1 findallgames.com, 0 -findandfunds.com, 1 findanengineer.com, 1 findapinball.com, 1 findautoloan.ml, 1 findbalancedliving.com, 1 +findbestfirm.com, 1 findblockchaingames.com, 1 findbugs.net, 1 findby.co.kr, 1 @@ -55188,6 +55366,7 @@ findinggenius.com, 1 findingimagesers.ga, 1 findingimagesest.ga, 1 findingkorea.com, 0 +findings.co, 1 findingtheuniverse.com, 1 findingturkeyers.ga, 1 finditez.com, 1 @@ -55195,18 +55374,20 @@ findity.com, 1 findjeen.com, 1 findlayohio.gov, 1 findlimitsers.ga, 1 -findmacrophage.com, 1 +findlocalproduce.co.uk, 1 findmail.ga, 1 findmassmoney.gov, 1 findmeapp.fr, 1 findmentalhealth.co.uk, 0 findmybottleshop.com.au, 1 +findmycare.ca, 1 findmyfamily.org, 1 findmytricks.com, 0 findnhmoney.gov, 1 findolino.at, 1 findoon.de, 1 findorff.de, 1 +findoutlyrics.com, 1 findpwa.com, 1 findrejsepartner.dk, 1 findsalmonest.ga, 1 @@ -55224,6 +55405,7 @@ findtreatment.gov, 1 findyour.diet, 1 findyourdreams.tk, 1 findyourinfluence.com, 1 +findyourstores.com, 1 findyourvoice.ca, 1 fine-mach.com, 1 fine-services.paris, 1 @@ -55248,6 +55430,7 @@ finestblingest.ga, 1 finestrabatalera.tk, 1 finestreview.cf, 1 finet.net, 1 +finet.partners, 1 finet.se, 1 finex.by, 1 finexity.com, 1 @@ -55255,6 +55438,7 @@ finexo.ch, 1 finfleet.id, 1 finform.ch, 1 finfowe.com, 1 +finfreeservice.com, 1 finfriend.work, 1 fingerlakesgaming.com, 0 fingerprintjs.com, 1 @@ -55267,14 +55451,13 @@ finicity.com, 1 finilaviolence.gc.ca, 1 finishingpasteers.ga, 1 finishingpasteest.ga, 1 +finishrich.com, 1 finisron.in, 0 -finista.com.tr, 1 finitecarbon.com, 0 finity.com, 1 finkelstein.fr, 1 finlandcook.online, 1 finlandcook.top, 1 -finlay.nyc, 1 finlayjacks.co.nz, 1 finlaylloyd.com, 1 finlays.net, 1 @@ -55287,6 +55470,7 @@ finn-svoboda.cf, 1 finn-thorben.me, 1 finn.io, 1 finnclass.cz, 1 +finndel.no, 1 finnema.eu, 1 finnhjelpemidler.no, 1 finnishclothing.tk, 1 @@ -55301,14 +55485,15 @@ finpomosh.gq, 1 finprison.net, 1 finqk.nl, 1 finqueslaromanica.com, 1 -finroom.io, 1 fins.money, 1 finsecurity.eu, 1 finsight.com, 1 finst.com, 1 +finstart.co, 1 finstererlebnis.de, 1 finstockconsulting.com, 0 finsuba.com, 1 +fintechb2b.com, 1 fintechos.com, 1 fintellix.com, 1 finteo.de, 1 @@ -55317,9 +55502,11 @@ finturio.de, 1 finvantage.com, 1 finvantive.com, 1 finvantive.nl, 1 +finveez.com, 1 finverse.com, 0 finwarriors.tk, 1 finwe.info, 1 +finy.pl, 1 finzy.com, 1 fionahengartner.ch, 1 fionamcbride.com, 1 @@ -55357,30 +55544,25 @@ firecity.tk, 1 firecore.cn, 1 firecore.com, 1 firecry.org, 1 -firedbyroger.com, 1 firedemons.tk, 1 +firedo.de, 1 firedup4success.com, 1 fireems.ai, 1 fireeye.tk, 1 firefart.at, 0 firefense.com, 1 firefightergarage.com, 1 -fireflybayandbasin.com, 1 fireflygatlinburg.com, 1 firehada.com, 1 firehousemouse.com, 1 -firehustle.net, 1 fireintheholevideos.tk, 1 fireleadership.gov, 1 firelinkshrine.xyz, 1 firemail.de, 1 firemaker.tk, 1 -firemudfm.com, 1 firenews.cf, 1 -firenice.cc, 1 firenzetoday.it, 1 fireoakstrategies.com, 1 -firepins.com, 1 fireplex.co.uk, 1 fireportal.cz, 1 fireportal.sk, 1 @@ -55390,13 +55572,14 @@ firerain.me, 1 fireservicerota.co.uk, 1 fireshellsecurity.team, 1 firesmoke.ca, 1 -firesprite.com, 1 +firesofheaven.org, 1 +firesprite.com, 0 firestart.tk, 1 firestarter.fi, 1 firestuff.org, 1 firetotheprisons.org, 1 fireurboss.tk, 1 -firewallfairy.com, 1 +firevap.org, 1 firewallremoval.cf, 1 firewallremovalers.ga, 1 fireware.tk, 1 @@ -55415,11 +55598,9 @@ firmamaja.com, 1 firmament.space, 1 firmament.tk, 1 firmanali.com, 1 -firmanbartending.com, 1 firmant.me, 1 firmapi.com, 1 firmatour.it, 1 -firmen.directory, 1 firmendb.com, 0 firmennie-crossovki.tk, 1 firmenwerbung-vermarktung.de, 1 @@ -55454,11 +55635,13 @@ firstbankkansas.com, 1 firstbaptistchurchofchrist.org, 1 firstbaptistfargo.com, 1 firstbooks.ml, 1 +firstbridge.io, 1 firstbus.co.uk, 1 firstcallnc.com, 1 firstcapitalfcu.com, 1 firstcentralsavings.com, 1 firstchoicebouncycastlehire.co.uk, 1 +firstchoicefriseur.at, 1 firstchoicejunkservice.com, 1 firstchoiceliquor.com.au, 1 firstchurchmn.org, 1 @@ -55468,14 +55651,12 @@ firstclasscastles.com, 1 firstclassleisure.co.uk, 1 firstclassnuisance.tk, 1 firstclinic.tk, 1 -firstcoastbillinggroup.com, 1 firstcoastteaco.com, 1 firstcolonyengraving.com, 1 firstcommunity.com, 1 firstcontact.cf, 1 firstdry.com.br, 1 firstechpayments.com, 0 -firstenergyservice.com, 1 firstever.eu, 1 firstfederalbath.com, 1 firstfinanceit.com, 1 @@ -55501,7 +55682,6 @@ firstorion.com, 1 firstottawa.com, 1 firstphilec.com, 1 firstplace.ga, 1 -firstpoint.com.tr, 1 firstqa.com, 0 firstresponder.gov, 1 firstshowing.net, 1 @@ -55515,7 +55695,6 @@ firstversionist.com, 1 firstwebring.tk, 1 firstwordpharma.com, 1 firthidaho.gov, 1 -firthparkdental.co.uk, 1 fis.io, 1 fisa.net.za, 1 fiscalbot.es, 1 @@ -55564,6 +55743,7 @@ fishingworld.tk, 1 fishingzone.bg, 1 fishman.idv.tw, 1 fishoftheday.tv, 1 +fishseller.shop, 1 fishserver.net, 1 fishspecies.nz, 1 fishtacos.blog, 1 @@ -55584,23 +55764,22 @@ fiskalloy.com, 1 fiskaly.com, 1 fiskarsinlaituri.fi, 1 fisophi.com, 1 -fispan.com, 0 +fispan.com, 1 fistingtogether.com, 1 fistwerk.de, 1 fisvo.org, 0 fit-4u.ch, 0 -fit-corner.nl, 1 +fit-mit-system.eu, 1 fit365.jp, 0 -fit3pl.in, 1 fit81.com, 1 fit81.it, 1 fitanu.com, 1 fitasdobonfim.com, 1 fitbase.cf, 1 fitbeautyjet.com, 1 +fitbizcpa.org, 1 fitc.jp, 1 fitcamp.fitness, 1 -fitch-journal.com, 1 fitch.group, 1 fitchannel.com, 1 fitchdesigncompany.com, 0 @@ -55608,6 +55787,7 @@ fitchpeople.nl, 1 fitcrewhn.com, 1 fite.family, 0 fitecleaningservices.com, 1 +fitequilibrio.com.br, 1 fitfactory.lv, 1 fitfingers.shop, 1 fitflaop.ga, 1 @@ -55621,7 +55801,7 @@ fitint.ro, 1 fitleads.nl, 1 fitlinewellnesscoach.com, 1 fitmommyinheels.com, 1 -fitness-uhr.net, 1 +fitmybike.eu, 0 fitness-world.ga, 1 fitness.edu.au, 0 fitness.gov, 1 @@ -55629,6 +55809,7 @@ fitnessbenefit.com, 1 fitnessbest.com, 1 fitnessfreedomathletes.com, 1 fitnesshaber.com, 1 +fitnessimage.com.au, 0 fitnesskarate.club, 1 fitnessmaus.com, 1 fitnessplanet.best, 1 @@ -55641,6 +55822,7 @@ fitnetion.com, 1 fitnutkatie.com, 1 fito.tk, 1 fitodifesa.it, 1 +fitosofia.com, 1 fitotovar.ru, 1 fitpass.co.in, 1 fitrecepty.info, 1 @@ -55649,26 +55831,29 @@ fitssey.com, 1 fitt-together.co.uk, 1 fittar.eu, 1 fittherapy.biz, 0 -fittipaldijr.com, 1 -fittmetlynn.nl, 1 fittydent.bg, 1 fitup.health, 1 fitxxxsandy.net, 1 -fitz-family.com, 1 +fitz.guru, 1 fitzsim.org, 1 fitzwilliamhotelbelfast.com, 1 fiu.ee, 0 +five.sh, 1 five15.net, 1 fiveboosts.xyz, 1 fiveclassauto.com, 1 fivecrm.com, 1 fivefortheroad.com, 1 fiveminute.tk, 1 +fivemm.shop, 1 fivepb.me, 1 fivepedia.tk, 1 fiverr.com, 1 fiveslice.pizza, 1 fivestar.et, 1 +fivestaraussie.com, 1 +fivestarstv1.com, 1 +fivestartrader.com, 1 fivethirtyeight.com, 1 fiveyearsahead.com, 1 fivolodigital.com, 1 @@ -55682,12 +55867,10 @@ fix-the-timeline.org, 1 fix.mk, 1 fix8mt.com, 1 fixabzar.com, 1 -fixator10.ru, 1 fixcyprus.cy, 1 -fixedcostagents.com, 1 -fixedcostclaw.com, 1 fixedfeeplacements.co.uk, 1 fixedgear.tk, 1 +fixedmatch.bet, 1 fixedpricemovers.com, 0 fixedtoday.com.au, 1 fixerbee.us, 1 @@ -55698,7 +55881,6 @@ fixforce.nl, 1 fixi.dk, 1 fixiecommerce.com, 1 fixingscrews.co.uk, 1 -fixitrange.com, 1 fixm.aero, 1 fixmobile.online, 1 fixmyvisit.com, 1 @@ -55711,11 +55893,9 @@ fixpix.gq, 1 fixplusflex.de, 1 fixpoint.co.at, 1 fixpoint.systems, 1 -fixrein-reinigung.de, 1 fixtesisat.com, 1 fixthetimeline.com, 1 fixthetimeline.org, 1 -fixthevuln.com, 1 fixupx.com, 1 fixverkaufen.de, 1 fixville.co, 1 @@ -55746,6 +55926,7 @@ fizzcompetitions.com, 1 fizzcoronationstreetdied.cf, 1 fizzcreativemedia.com, 1 fizzo.org, 1 +fizzpopmedia.com, 1 fizzstudio.org, 1 fj.je, 1 fj.search.yahoo.com, 0 @@ -55756,11 +55937,11 @@ fjco.alsace, 1 fjerhammer.dk, 1 fjharcu.com, 1 fjkl.uk, 1 +fjnuacm.top, 1 fjordbank.ee, 1 fjordbank.lt, 1 fjordboge.dk, 1 fjordenpaard.tk, 1 -fjordrykkur.is, 1 fjsb.com, 1 fjugstad.com, 1 fjzone.org, 1 @@ -55781,15 +55962,17 @@ flabacinov.ga, 1 flabutelov.tk, 1 flacandmp3.ml, 1 flacon.tk, 1 +flacsoandes.edu.ec, 1 +fladnag.net, 1 flaeskeklubben.dk, 1 flaeskeklubben.eu, 1 flagcdn.com, 1 flaggorvarlden.se, 1 flaggrimsby.co.uk, 1 flagi-panstw.pl, 1 +flagipanstw.info.pl, 1 flagipanstw.pl, 1 flagistrany.ru, 1 -flagium.org, 1 flaglercounty.gov, 1 flaglerelections.gov, 1 flaglermosquito.gov, 1 @@ -55806,21 +55989,20 @@ flagma.uz, 1 flagpedia.asia, 1 flagpedia.net, 1 flagriculture.gov, 1 -flags.games, 0 flagshipmerchantservices.com, 1 flagstone-magazin.ro, 0 flagstri.com, 1 flagyl-500-mg.ga, 1 flair.nl, 1 flaironline.nl, 1 -flam-bz.com, 1 flam.lu, 1 flam.studio, 1 flaman-h7a.fr, 1 flamanville.fr, 1 -flamby.ovh, 1 +flameflyff.com, 0 flamehaze.tk, 1 flamellugano.com, 1 +flamencoexplained.com, 0 flamencoshoes.tk, 1 flamengopi.tk, 1 flamentecnic.tk, 1 @@ -55845,7 +56027,7 @@ flanagan.tk, 1 flanderslaw.com, 1 flanga.io, 0 flanigan.tk, 1 -flannel.co.jp, 1 +flannetlux.com, 1 flanschspreizer.at, 1 flapoverspeed.com, 1 flapperistic.tk, 1 @@ -55862,8 +56044,10 @@ flasaki.gr, 1 flash-games.tk, 1 flash-payments.com, 1 flash.homes, 1 +flashback.org, 1 flashbackband.tk, 1 flashbeat.tk, 1 +flashcardsmobile.com, 1 flashcover.com.br, 1 flasheschile.tk, 1 flashgamedev.tk, 1 @@ -55875,10 +56059,6 @@ flashissue.com, 1 flashkeysers.ga, 1 flashlearners.com, 1 flashpegasus.com.br, 1 -flashsale.com.pk, 1 -flashsale.pk, 1 -flashsale.store, 1 -flashsalepk.com, 1 flashscores.tk, 1 flashset.tk, 1 flashuk.com, 1 @@ -55896,13 +56076,13 @@ flatheadelectric.com, 1 flathome.co.jp, 1 flaticons.net, 1 flatlandchurch.com, 0 +flatmail.net, 1 flatmail.pl, 1 flatmatehub.com.au, 1 flatpackmates.co.uk, 1 flatplanet.tk, 1 flatrate.com, 0 flatreviews.co.nz, 1 -flatrocktentpark.com.au, 1 flatrooms-chiemgau.de, 1 flatsomestudio.ir, 1 flatsurfers.eu, 1 @@ -55911,10 +56091,10 @@ flatuslifir.is, 1 flatwoodsky.gov, 1 flauschig.net, 1 flavelappliances.com, 1 +flaviao.com, 1 flavienbonvin.com, 1 flavinha.tk, 1 flaviohipnoseclinica.com.br, 1 -flavitars.com, 1 flaviu.co.uk, 1 flavorblogers.ga, 1 flavorblogest.ga, 1 @@ -55932,7 +56112,6 @@ fldjj.gov, 1 fldsmdfr.nl, 1 flealab.it, 1 flearfarmcottages.com, 1 -flebo.in, 1 fleche-ardennaise.be, 1 flect.net, 1 fleep.io, 1 @@ -55962,6 +56141,7 @@ fleetssl.com, 1 fleettools.tk, 1 fleetwiz.com.au, 1 fleetyards.net, 1 +flehm.de, 1 fleisch.club, 1 fleischer-garten.de, 1 fleischkaes.de, 1 @@ -55995,7 +56175,6 @@ flevodogs.nl, 1 flevoland.nl, 1 flevoscouts.nl, 1 flex-one.fr, 1 -flex-port.net, 1 flex1solutions.com, 1 flexapplications.se, 0 flexartsocial.com, 1 @@ -56006,12 +56185,10 @@ flexdrukker.nl, 1 flexex.io, 1 flexfone.dk, 1 flexforcemonkey.com, 1 -flexgloble.com, 1 flexgs.ca, 1 flexgs.net, 1 flexhyp.de, 1 flexi-dance.pl, 1 -flexi-scale.com.my, 1 flexi.org, 1 flexiblenetflow.com, 1 flexibsd.com, 1 @@ -56033,7 +56210,9 @@ flextrade.com, 1 flextrades.com, 1 flextribly.xyz, 1 flextudo.com, 1 +flextypes.com, 1 flexundfix.de, 1 +flexve.com, 1 flexworkhero.de, 1 flfamily.org, 1 flfl.de, 1 @@ -56045,6 +56224,7 @@ flickcritter.com, 1 flickdirect.com, 1 flicke.red, 1 flickerleap.com, 1 +flickingercenter.com, 1 flickor.tk, 1 flicks2click.com, 1 flie.co.jp, 1 @@ -56079,11 +56259,11 @@ fliino.net, 1 fliino.org, 1 flikmsg.co, 1 flimnet.tk, 1 +flinch.io, 1 flingflong.co, 1 flinny.org, 1 flintavenue.com, 1 flintregistry.org, 1 -flintriverkeeper.org, 1 flintstones.tk, 1 flip-flop.tk, 1 flip.kim, 1 @@ -56093,12 +56273,15 @@ flipflop.rs, 1 flipin.ga, 1 flipmusic.tk, 1 flipneus.net, 1 +flipnhotdeals.com, 1 flipos.be, 0 flipperkast.tk, 1 flippers-leuven.be, 1 flipphotography.ga, 1 flipping.land, 0 +flipsidevr.com, 1 flipsidexr.com, 1 +flipsnack.com, 1 fliptable.org, 1 flipweb.tk, 1 flirt-norden.de, 1 @@ -56130,7 +56313,6 @@ flockler.com, 0 flocktofedora.org, 1 floenergy.sg, 1 floepsie.nl, 1 -floerens.eu, 1 floersheimer-openair.de, 1 floffi.media, 1 flofr.gov, 1 @@ -56143,9 +56325,9 @@ flokkr.com, 0 flokylab.com, 1 floline.fr, 1 flom.fi, 1 -flomaru.com, 1 flomax385.tk, 1 flomeyer.de, 1 +floobits.com, 1 floodboss.ml, 1 flooddoctorva.com, 1 floodguypro.com, 1 @@ -56160,8 +56342,6 @@ floorhoursest.ga, 1 flooring-long-island.com, 1 flooringbidest.ga, 1 flooringsourcetx.com, 1 -floorplans.com, 1 -floorrescue.com, 1 floors4lessbay.com, 1 floosak.co, 1 flooz.trade, 0 @@ -56193,9 +56373,9 @@ florenceutilitieswi.gov, 1 florencewi.gov, 1 florenciaextrema.tk, 1 florenciasabio.com, 1 +florent-tatard.fr, 1 florentinraud.net, 1 floresastrid.tk, 1 -floresdoprado.com.br, 1 floreseartes.com.br, 1 floreseflores.pt, 1 floresvilleedc.org, 0 @@ -56212,7 +56392,7 @@ florianbouchet.fr, 1 floriane-even.fr, 1 floriankarmen.com, 1 florianmitrea.uk, 1 -floriansanchez.com, 0 +floriansanchez.com, 1 florianstroeger.com, 1 florianstroeger.tk, 1 floriantanner.ch, 1 @@ -56240,7 +56420,9 @@ floridaschools.us, 1 floridastadium.ga, 1 floridastadiumers.ga, 1 floridastadiumest.ga, 1 +floridastatefair.com, 1 floridastatefair.net, 1 +floridastatefairag.com, 1 floridastatefairauthority.com, 1 floriebriand.com, 1 floriimorii.tk, 1 @@ -56261,14 +56443,12 @@ flosuretechnologies.com, 1 floth.at, 1 flothost.com, 1 flothow.com, 1 -flothow.com.py, 1 floucloud.id, 1 flourishdx.com, 1 flourishgrazingevents.co.uk, 1 -flourishtogether.com, 0 +flourishtogether.com, 1 flow-serv.com, 1 flow.su, 1 -flow28.co.uk, 1 flowair24.ru, 1 flowalizer.com, 1 flowalyzer.com, 1 @@ -56313,19 +56493,17 @@ flowinity.eu.org, 1 flowinity.host, 1 flowinvoice.com, 1 flowio.cz, 1 +flowith.io, 1 flowlytics.host, 1 flownonfiction.com, 1 flownty.com, 0 flowoodpolice.gov, 1 flowreplicator.com, 1 -flowsales.online, 1 flowsave-staging.nl, 1 -flowsave.nl, 1 flowscale.com, 1 flowstars.tk, 1 flowstateyoga.com.au, 1 flowtex.tk, 1 -flowweaver.ai, 1 flowzone.eu, 1 floya.brussels, 1 floydcountyga.gov, 1 @@ -56351,7 +56529,6 @@ fluentu.com, 1 fluessiggas.de, 1 fluf.io, 1 fluff.im, 1 -fluffi.es, 1 fluffybottles.com, 1 fluffycat.ga, 1 fluffycloud.de, 1 @@ -56367,6 +56544,7 @@ fluidattacks.com, 0 fluidbb.co.uk, 1 fluids.ac.uk, 1 fluidsealing.com.au, 1 +fluig.com, 1 fluitbeurt.nl, 1 flukestar.tk, 1 flukeydudes.org, 1 @@ -56384,15 +56562,14 @@ flusszs.tk, 1 fluteandpianoteaching.co.uk, 1 flutedrinks.com, 1 flutterappdev.com, 1 +flutterfactory.io, 1 flutterwave.com, 1 fluui.com.br, 1 -fluuxly.com, 1 flux.today, 0 flux360.net, 1 fluxforge.com, 1 fluxnet.tk, 1 fluxoid.com, 1 -fluxoraerp.co.uk, 1 flv.co.nz, 1 flvs.life, 1 flvyingeagle.ga, 1 @@ -56446,7 +56623,6 @@ flyingpress.com, 1 flyingspaghettimonsterdonationsfund.nl, 1 flyingtomorocco.com, 1 flyingtutorsers.ga, 1 -flylcpa.com, 1 flylcpa.gov, 1 flylvia.com, 1 flymfr.com, 1 @@ -56463,7 +56639,6 @@ flyserver.co.il, 1 flyspace.ga, 1 flyspace.ml, 1 flyssh.net, 1 -flystarflight.com, 1 flyswoop.com, 1 flyten.ir, 1 flythecopter.tk, 1 @@ -56497,6 +56672,7 @@ fmfp.eu, 1 fmhy.net, 1 fmi.gov, 1 fminsight.net, 1 +fmjansen.com, 1 fmlife.tk, 1 fmm-creative.com, 1 fmn.nl, 1 @@ -56514,7 +56690,6 @@ fmstr.ml, 0 fmstudio.com.ua, 1 fmt-live.de, 1 fmussatmd.com, 1 -fn.com.my, 1 fn.com.sg, 1 fn.my, 1 fn.sg, 1 @@ -56545,7 +56720,7 @@ fnlife.com, 1 fnlife.com.my, 1 fnn-creameries.com, 1 fnncreameries.com, 1 -fnnfoods.com, 1 +fno.cz, 0 fnof.ch, 1 fnordserver.eu, 1 fnpro.eu, 1 @@ -56566,7 +56741,6 @@ focalpoint.tk, 1 focanamoda.com.br, 1 focanocliente.com.br, 1 focenter.com, 1 -focomentoring.com.br, 1 focored.com, 1 focus2career.com, 0 focusbet-api.com, 1 @@ -56578,11 +56752,11 @@ focusneo.no, 1 focusoptimization.com, 1 focusproductions.tk, 1 focusreferrals.co.uk, 1 +focusrtech.com, 1 focustec.tk, 1 focusti.com.br, 1 focustuningclub.tk, 1 fodder.ga, 1 -foe-sniper.com, 1 foehl.de, 1 foempe.com, 1 foepwned.com, 1 @@ -56604,18 +56778,15 @@ fojt.cz, 1 fojtova.cz, 1 fojtovi.cz, 1 fok.nl, 1 -foka-esthetique.ca, 1 fokan.be, 1 fokan.ch, 1 fokep.no, 1 fokos.de, 0 fokus.ag, 1 -fokusfalter.ch, 1 fol.tf, 1 folar.ga, 1 folclore.tk, 1 foldcle.com, 1 -folder.ro, 1 foldnfly.com, 1 folf.codes, 1 folhageral.com, 1 @@ -56640,6 +56811,7 @@ follandviolins.com, 1 follow-app.fr, 1 follow-the-leader.tk, 1 follower98.ir, 1 +followerfast.com, 1 followme.com, 1 followmystaff.com, 1 followpharma.com, 1 @@ -56666,6 +56838,8 @@ fondbaikal.ml, 1 fonds-dieter.be, 1 fondsnieuws.nl, 1 fondsvermittler.com, 1 +fonduri-structurale.ro, 1 +fondy.ua, 1 fondzee.cz, 1 fonemisitme.com, 1 foneria.com.tr, 0 @@ -56677,7 +56851,6 @@ fonkongres.cz, 1 fonline.tk, 1 fonmeals.com.co, 1 fonolo.com, 1 -fonotimbre.cl, 1 fonrouge.tk, 1 fontainebleau.tk, 1 fontanaca.gov, 1 @@ -56825,7 +56998,6 @@ foods.pe, 1 foodsafety.gov, 1 foodsafetyjobs.gov, 1 foodsafetyworkinggroup.gov, 1 -foodscovery.com, 1 foodsedona.ga, 1 foodshuffle.ga, 1 foodsignature.ga, 1 @@ -56866,6 +57038,7 @@ fooladi.tk, 1 foolip.org, 1 foolproofcomics.tk, 1 foonly.fi, 1 +foorack.com, 1 foosball.pt, 1 fooster.io, 1 foot-direct.com, 1 @@ -56873,7 +57046,6 @@ foot.fr, 1 foot2rue.tk, 1 football-news.gq, 1 football-world.tk, 1 -footballant.com, 1 footballcelebrationsers.ga, 1 footballcounter.com, 1 footballforum.de, 1 @@ -56892,6 +57064,7 @@ foothillscript.com, 1 footloose.co.uk, 1 footmercato.net, 1 footparisien.com, 1 +footsteps.lk, 1 footstepsinthegambia.com, 0 footstepsontheglobe.com, 1 foottube.com, 1 @@ -56912,7 +57085,6 @@ foray-jero.me, 1 foraz.tk, 1 forberedt.no, 1 forbes.com, 1 -forbetterway.com, 1 forbiddenhistory.info, 1 forbole.com, 1 forcamp.ga, 1 @@ -56924,6 +57096,7 @@ force-user-content.com, 1 force.com, 1 force4racing.co.uk, 1 force4racing.com, 1 +forcecompanies.com, 1 forcelink.eu, 1 forcelink.nl, 1 forcelinkamerica.com, 1 @@ -56940,10 +57113,11 @@ ford-shop.by, 1 fordlibrarymuseum.gov, 1 fordpartsgiant.com, 1 fordpartsprime.com, 1 -fordsbranch.church, 0 +fordsbranch.church, 1 fordservicetraining.com, 1 fordshop.by, 0 fordtrac.com.br, 1 +foreachpartners.com, 1 foreammatti.fi, 1 forecastapp.net, 1 forecastcity.com, 1 @@ -56972,7 +57146,6 @@ foresightbusinessservices.co.uk, 1 foresightcyber.com, 1 foresite.com, 0 forest-cl.com, 1 -forest-house-hotel.com.ua, 1 forest-remote-control.com, 1 forest-soft.xyz, 1 forestale.online, 1 @@ -56990,10 +57163,7 @@ forestsystems.com, 1 foresttownrcwi.gov, 1 forestvets.com, 1 forever.gq, 1 -foreverboxesr.us, 1 -foreverboxesrus.com, 1 foreverbreak.com, 1 -foreverclean.com, 1 forevercollage.com, 1 foreverpontiac.com, 1 foreverreem.com, 0 @@ -57015,6 +57185,7 @@ forexmarketsm.tk, 1 forexnese.com, 1 forexnew.org, 1 forexpattern.tk, 1 +forexsignalroom.com, 1 forextickler.com, 1 forexwinway.com, 1 forexworld.cf, 1 @@ -57063,13 +57234,14 @@ formalistgallery.com, 1 formalize.com, 1 formalux.com.au, 1 formand.ru, 1 -formanov.com, 0 +formanov.com, 1 formap.co, 1 formapi.io, 1 formascan.fr, 1 formassembly.com, 1 format-paysage.ch, 0 format.ua, 1 +formation-assureur.com, 1 formation-colmar.tk, 1 formation-commissaire-justice.fr, 1 formation-cqp-ssiap-paris.fr, 1 @@ -57082,11 +57254,9 @@ formationaumagnetisme.fr, 1 formationgit.com, 1 formationgit.fr, 1 formatmydoc.co.nz, 1 -formatsuite.com, 1 formazione.roma.it, 1 formbio.com, 1 forme.nl, 1 -formedoor.it, 1 formeras.com, 1 formeras.tr, 1 formidium.com, 1 @@ -57097,6 +57267,7 @@ formommiesbymommy.com, 1 formopinionest.ga, 1 formoplast.com, 1 formotherrussia.tk, 1 +forms.cafe, 1 forms.gov, 1 formsbyair.com, 1 formsite.com, 1 @@ -57106,16 +57277,15 @@ formstack.com, 1 formstrap.com, 1 formue.com, 1 formula.cf, 1 +formulacigar.com, 1 formulacionquimica.com, 1 formulario-rutas.lat, 1 formulastudent.de, 1 formulatedby.com, 1 formulaveevictoria.com.au, 1 formweb.de, 1 -formyourcorp.com, 1 fornarisandres.com, 1 fornata.it, 1 -fornatov.com, 1 forneyplus.com, 1 fornoreason.net.au, 1 foro-coopfuture.tk, 1 @@ -57138,6 +57308,7 @@ forourselves.com, 1 forowarhammer.tk, 1 forrest79.net, 1 forrestheller.com, 1 +forrestsolutions.com, 1 forrestwalkbarbershop.com.au, 1 forrettabarinn.is, 1 forro.berlin, 1 @@ -57163,19 +57334,10 @@ forsythco.com, 1 forsythcountync.gov, 1 forsythmo.gov, 1 forsyththeatre.com, 1 -fortannov.com, 1 -fortanof.com, 1 -fortanov.co, 1 -fortanov.com, 1 -fortanov.net, 1 -fortanov.org, 1 -fortanove.com, 1 -fortanuv.com, 1 fortatkinsonia.gov, 1 fortatkinsonwi.gov, 1 fortawesome.org, 1 fortbendisd.gov, 1 -fortbridge.co.uk, 1 fortcommunity.com, 1 fortdeposital.gov, 1 fortdodgeradio.com, 1 @@ -57183,8 +57345,8 @@ fortebet.rw, 1 fortebet.ug, 1 fortepiano.tk, 1 forteprenestino.net, 1 -fortes-online.com, 1 fortesanshop.it, 1 +forthenrycustomknives.com, 0 forthvalleykeswick.co.uk, 1 fortifydiy.com, 1 fortigate.es, 1 @@ -57198,12 +57360,10 @@ fortipartner.se, 1 fortipartner.uk, 1 fortis174.ru, 1 fortisadhesives.com.au, 1 -fortisadversis.com, 1 fortisinc.com, 1 fortissimusbellator.pt, 1 fortknoxster.com, 1 fortmatic.com, 1 -fortnanov.com, 1 fortnet.online, 1 fortnightlyofeugene.org, 1 fortnitedb.com, 1 @@ -57211,7 +57371,6 @@ fortnitemagic.ga, 1 fortniterefund.com, 1 fortnitetrends.com, 1 fortoglethorpega.gov, 1 -fortonov.com, 1 fortress.no, 0 fortress.sk, 1 fortressgb.com, 1 @@ -57227,9 +57386,9 @@ fortuna-s.com, 1 fortunabuilders.tk, 1 fortunacigarettes.tk, 1 fortunafinancial.ca, 1 +fortunafunds.com, 1 fortunahamburg.tk, 1 fortune-healing.com, 1 -fortune.cards, 1 fortunebazar.tk, 1 fortunedoor.net, 1 fortuneinvestments.ga, 1 @@ -57264,10 +57423,12 @@ forumcommunity.net, 1 forumcondominio.it, 1 forumconstruire.com, 1 forumculture.org, 1 +forumdabeleza.com.br, 1 forumfeeers.ga, 1 forumhsbm.tk, 1 forumistudentore.tk, 1 forumix.tk, 1 +forummobile.com.br, 1 forumoff.com, 1 forumofld.in, 1 forumotion.cf, 1 @@ -57288,7 +57449,6 @@ forvisualdesign.com, 0 forward-fly-fishing.ch, 0 forward-proxy.email, 1 forward.lc, 1 -forwardblood.com, 1 forwardemail.net, 1 forwardfever.tk, 1 forwardfinancingest.ga, 1 @@ -57308,6 +57468,8 @@ foss-rec.net, 1 fossa.com, 1 fossagarrafoni.tk, 1 fossbots.org, 1 +fossboxen.com, 1 +fosseseptique.be, 1 fossewayflowers.co.uk, 1 fossewayflowers.com, 1 fossiilid.info, 1 @@ -57316,7 +57478,7 @@ fossunited.org, 1 foster.ga, 1 fosteringconsultant.com, 1 fosters.ky, 1 -fosterunity.com, 1 +fosterthechange.com, 1 fosterwiki.com, 1 fosttest.be, 1 fotbal-dubina.tk, 1 @@ -57340,16 +57502,19 @@ fotoallerlei.com, 1 fotoapp.ch, 1 fotoarchiv-niederrhein.de, 1 fotoblog.nrw, 1 -fotobodyart.nl, 0 +fotobodyart.nl, 1 +fotobrb.de, 1 fotobringer.de, 1 fotobrinke.de, 1 fotochip.tk, 1 +fotocoach.pl, 1 fotocopiatrici.roma.it, 1 fotofaerie.net, 1 fotofast.tk, 1 fotoflits.net, 1 fotofofftein.de, 0 fotofon.tk, 1 +fotofreunde-telegram.eu, 1 fotograf-website.de, 1 fotografessa.pl, 1 fotografiadellalucerossa.com, 1 @@ -57357,7 +57522,6 @@ fotografiamakro.pl, 1 fotografies.tk, 1 fotografija.tk, 1 fotografoivanalmeida.com.br, 1 -fotografontes.com.br, 1 fotografy-help.de, 1 fotogruppe-phos.de, 1 fotohiking.com, 1 @@ -57368,9 +57532,11 @@ fotolectura.tk, 1 fotoleitner.com, 1 fotoleitner.de, 1 fotoloji.art, 1 -fotomac.com.tr, 1 +fotoloji.net, 1 +fotomatonweb.es, 1 fotomodel.cf, 1 fotomodels.tk, 1 +fotonbolivia.com.bo, 1 fotonippon.com, 1 fotontechnik.pl, 1 fotonza.ru, 1 @@ -57380,6 +57546,7 @@ fotopro.tk, 1 fotorecull.tk, 1 fotosquares.com, 1 fotostravestisbr.com, 1 +fotostrobo.ch, 1 fotostudio-leitner.com, 1 fotostudio-leitner.de, 1 fotostudio-schweiz.ch, 1 @@ -57402,9 +57569,9 @@ fouadvollmergut.de, 1 foucheplumbers.com, 1 foudufafa.de, 0 fougereettralala.fr, 1 -found.com, 1 foundationalucc.com, 1 foundationassure.com, 0 +foundationforfamilies.org, 1 foundationmaintenance.com, 1 foundationprogramme.nhs.uk, 1 foundationrepairannarbor.com, 0 @@ -57415,13 +57582,14 @@ foundationsasha.org, 1 foundationspecialisteast.com, 1 foundchurch.co.uk, 1 founderinvestors.tk, 1 +founderio.net, 1 founderscard.com, 1 foundland.com, 1 foundrehotels.com, 1 foundries.io, 1 foundry512.com, 1 foundryhome.com, 1 -foundtesham.ru, 1 +foundsounds.me, 1 fountain.com, 1 fountain.company, 1 fountaincitywi.gov, 1 @@ -57444,7 +57612,7 @@ fournisseur-energie.com, 0 fourpeaks.com, 1 fourscore.ga, 1 fourseasonsalbany.com, 1 -fourseasonsfairways.com, 1 +fourseasonsfairways.com, 0 fourseasonssunroomsyosset.com, 1 fourstrategy.de, 1 fourwaysplumber24-7.co.za, 1 @@ -57454,13 +57622,16 @@ foutras.com, 1 foutrelis.com, 1 fovndry.com, 1 fowesolutions.net, 1 +foweyretreat.co.uk, 1 fowlmanor.tk, 1 fowlsmurf.net, 1 +fowos.de, 1 fox-zulu.de, 1 fox.my, 0 fox13now.com, 1 fox17online.com, 1 fox47news.com, 1 +fox4now.com, 1 foxandfish.be, 1 foxart.com.tr, 1 foxbenjaminfox.com, 1 @@ -57469,10 +57640,11 @@ foxcav.es, 1 foxcityflix.com, 1 foxcloud.tk, 1 foxcon.tk, 1 -foxdeli.com, 0 +foxdeli.com, 1 foxdemos.ml, 1 foxdev.co, 1 foxdirectory.tk, 1 +foxeworks.net, 1 foxholehq.net, 1 foxing.club, 1 foxite.me, 1 @@ -57498,7 +57670,6 @@ foxycredit.com, 1 foxygf.com, 1 foxytubes.com, 1 foyale.io, 1 -foyue.org, 1 fozzels.com, 1 fozzie.co.uk, 1 fozzie.space, 1 @@ -57510,6 +57681,7 @@ fpasca.com, 1 fpc.gov, 1 fpcdn.io, 1 fpcorporatefinance.eu, 1 +fpcs-anchorage.com, 1 fpcslidell.org, 1 fpds.gov, 1 fpersona.com, 1 @@ -57539,8 +57711,8 @@ fpt.icu, 1 fptbb.com, 1 fptsoftware.com, 1 fpu.sk, 1 -fpvracerbern.ch, 1 fpy.cz, 1 +fqcstandard.com.tr, 1 fr-fotopage.tk, 1 fr.search.yahoo.com, 0 fr33tux.org, 1 @@ -57574,7 +57746,6 @@ fragzona.tk, 1 fraho.eu, 1 frahub.com, 1 frail.gq, 1 -fralap.fr, 1 fralef.me, 0 fralippolippi.tk, 1 frama.link, 1 @@ -57636,6 +57807,7 @@ framboise314.fr, 1 framedog.tk, 1 framegame.ch, 1 framemo.org, 1 +framenails.fr, 1 framer.ai, 1 framer.com, 1 framer.live, 1 @@ -57653,7 +57825,6 @@ fran.cr, 1 franc-token.com, 1 franca-ravet.eu, 1 francabellarsi.tk, 1 -francastro.eu, 1 france-cartouches.fr, 1 france-chien.fr, 1 france-news.cf, 1 @@ -57664,10 +57835,10 @@ franceactivetravel.cf, 1 franceactivetravel.ml, 1 francebattery.com, 1 francedebosselage.com, 1 -francelab.hu, 1 francelight.fr, 1 francenum.gouv.fr, 1 francepandi.fr, 0 +francerent.com, 1 francesca-and-lucas.com, 1 francescazambon.it, 0 francescocozza.it, 1 @@ -57695,12 +57866,12 @@ francis.ph, 1 franciscadelasllagasvirtual.com, 1 franciscasacarneiro.pt, 1 franciscoeduardocruz.tk, 1 -franciscojperez.com, 1 franciscolapa.eu, 0 franciscoperezyoma.com, 0 francisfazzini.com, 1 francishouserecovery.org, 1 franckgirard.net, 1 +francobortolotti.com, 1 francocasimirri.tk, 1 francoexpeditionperu.com, 1 francofunghi.tk, 1 @@ -57712,7 +57883,6 @@ francoisharvey.ca, 1 francoislaude.fr, 1 francoislepage.com, 0 franconia.space, 1 -francoraso.com, 1 francosud.ca, 1 francovital.com, 1 francoz.me, 0 @@ -57728,7 +57898,9 @@ frangipane.tk, 1 frank-america.com, 1 frank-gcc.com, 1 frank-lastia.tk, 1 +frank-vincent.nl, 1 frank-wendy.tk, 1 +frank.asia, 1 frank.fyi, 1 frankbrennan.art, 1 frankdilusso.com, 1 @@ -57745,7 +57917,6 @@ frankferrari.tk, 1 frankfu.ltd, 0 frankfurter-kaffeeroesterei.de, 1 frankfurtergirl.net, 1 -frankfurtpass.de, 1 frankhaarlem.tk, 1 frankiearts.com, 1 frankieburkeactor.tk, 1 @@ -57788,6 +57959,7 @@ franqois.id, 1 franqois.my.id, 1 franquiadia.com.br, 1 franquiadickeys.com.br, 1 +franscarcare.ca, 1 fransebulldog-cadeaushop.tk, 1 franta.biz, 1 franta.email, 1 @@ -57795,7 +57967,7 @@ frantajaros.cz, 1 frantic1048.com, 1 frantorregrosa.me, 1 frantz.gr, 1 -frantzeskidis.com, 0 +frantzeskidis.com, 1 franz-vatter.de, 1 franz.beer, 1 franzen.tk, 1 @@ -57846,6 +58018,7 @@ fraudpoders.ga, 1 fraudpodest.ga, 1 fraudswatch.tk, 1 frauen-etappenrennen.de, 1 +frauenaerztin-wedel.de, 1 frauenarztzentrum-am-see.ch, 1 frauenlob.rocks, 0 frauenpraxislaufental.ch, 1 @@ -57863,12 +58036,14 @@ frc.gov.au, 1 frc.us.com, 1 frccsgo.tk, 1 frcdr.org, 1 +frce.moe, 1 freak-show.tk, 1 freak-team.tk, 1 freak-waves.de, 1 freak-zone.tk, 1 freakguitars.tk, 1 freaksites.dk, 0 +freaktofit.com, 1 freakyawesome.agency, 1 freakyawesome.art, 1 freakyawesome.band, 1 @@ -57904,6 +58079,7 @@ freddieleeman.nl, 1 freddieonfire.tk, 0 freddo.tk, 1 freddyhasderyk.tk, 1 +freddyjs.com, 1 freddythechick.net, 1 freddyvasquez.com, 1 freddyxvasquez.com, 1 @@ -57944,7 +58120,6 @@ free-lancer.ml, 1 free-nation.tk, 1 free-obmen.ml, 1 free-ppp.jp, 1 -free-premium-accounts.com, 1 free-printablehq.com, 1 free-printablemap.com, 1 free-quotes.info, 1 @@ -57956,18 +58131,16 @@ free-tarot.net, 1 free-watching.ga, 1 free-webtv.tk, 1 free.com.tw, 1 -free.law, 0 +free.law, 1 free.mg, 1 free.sh, 1 free.tools, 1 +free4allsw.com, 1 free6to12yo.gq, 1 -freeadhdquiz.com, 1 freeaf.gq, 1 freeagent.tk, 1 -freeanxietyquiz.com, 1 freeartico.ga, 1 freeassange.net, 1 -freeattachmentstyletest.com, 1 freeauction.tk, 1 freeauroraoperations.tk, 1 freebacklinksforyoudirectory.tk, 1 @@ -57982,7 +58155,6 @@ freebit.ch, 1 freebookdomain.tk, 1 freebookslibrary.gq, 1 freeboson.org, 1 -freebpdtest.com, 1 freebsd.la, 1 freebsd.me, 1 freebsdbrasil.com.br, 1 @@ -58002,16 +58174,17 @@ freedatesites.cf, 1 freedatingonline.ml, 1 freedback.com, 1 freedeals4u.ga, 1 -freedepressionquiz.com, 1 freedev.cz, 1 freedgb.com, 1 freedirectory.tk, 1 freedogecrypt.tk, 1 +freedom-substitute.fr, 1 freedom.nl, 1 freedom.press, 1 freedom24.com, 1 freedom35.org, 0 freedomains4all.tk, 1 +freedomassistedliving.com, 1 freedomcourtreporting.com, 1 freedomcourtreporting.link, 1 freedomdiver.org, 1 @@ -58025,7 +58198,6 @@ freedomhk.info, 1 freedomhkg.info, 1 freedomhouse.org, 1 freedomisslavery.tk, 1 -freedomjonkoping.se, 1 freedomkiaparts.com, 1 freedomlab.io, 1 freedomonline.bg, 1 @@ -58041,6 +58213,7 @@ freedomwill.tk, 1 freedomworldoutreach.com, 1 freeebooksblog.com, 1 freeenglishhelp.com, 1 +freeexampapers.com, 1 freefallproductions.tk, 1 freefemale.com, 1 freefilesync.org, 1 @@ -58068,6 +58241,7 @@ freelance.nl, 1 freelanceerp.com, 1 freelanceessaywriters.com, 1 freelancehunt.com, 1 +freelancemw.com, 0 freelancerim.ml, 1 freelanceunited.co.uk, 1 freelancewebprogrammer.com, 1 @@ -58084,6 +58258,7 @@ freemazes.tk, 1 freemchosting.tk, 1 freeme.gq, 1 freemedia.tech, 1 +freemegamovies.com, 1 freemilf.org, 1 freemilfpics.com, 1 freeminecraftmaps.tk, 1 @@ -58091,7 +58266,6 @@ freeministryresources.org, 1 freemor.ca, 1 freemotion.tk, 1 freemovieonline.ga, 1 -freenarcissisttest.com, 1 freenet.com.ng, 1 freenetflow.com, 1 freenetproject.org, 1 @@ -58099,7 +58273,6 @@ freenft.com, 1 freenome.net, 1 freenomyoulilb.tk, 1 freeo.cf, 1 -freeocd.org, 1 freeofficefinder.com, 1 freeonlinearticles.tk, 1 freeonlinegames.gq, 1 @@ -58110,6 +58283,7 @@ freepedia.cf, 1 freepeopledirectory.com, 1 freephonefinder.cf, 1 freeplace.tk, 1 +freeplantscare.com, 0 freepluginoffer.com, 1 freepoints.us, 1 freepornhunt.com, 1 @@ -58140,10 +58314,8 @@ freeride-dragobrat.com, 1 freeroughporn.com, 1 freerun.cn, 0 freesat.cn, 1 -freeschematest.com, 1 freeschool.cf, 1 freescorefast.com, 1 -freeseedsonline.com, 1 freesexvideo.pro, 1 freesexvidz.com, 1 freeshell.de, 1 @@ -58192,6 +58364,7 @@ freewoman.club, 1 freewoodfactory.com, 1 freexmovie.com, 1 freexxxmovies.biz, 1 +freeyourmusic.com, 1 freeyourself.nu, 1 freeza.cf, 1 freeza.tk, 1 @@ -58201,7 +58374,6 @@ freezion.com, 1 freezoneplan.com, 1 freezvon.ru, 1 freform.club, 1 -fregercosmetics.co.il, 1 freibesetzt.tk, 1 freiboth.ddns.net, 1 freie-software.net, 1 @@ -58216,9 +58388,6 @@ freifunk-remscheid.de, 1 freightcenter.com, 1 freightinsightservice.com, 1 freightscore.net, 1 -freikirchebergen.de, 1 -freiraum-plus.com, 1 -freiszene.de, 1 freitas.org, 1 freitasbastos.com.br, 1 freitasm.com, 1 @@ -58247,8 +58416,10 @@ frenchcreekroofing.com, 0 frenchculture.org, 1 frenchdays.fr, 1 frenchmac.com, 1 +frenchmorningspreschool.com, 1 frenchtonpups.com, 1 frenchtownmi.gov, 1 +frenchvandal.com, 0 frendamos-roleplay.ml, 1 frendle.tech, 1 frenetic.lv, 1 @@ -58278,8 +58449,10 @@ fresh-networks.net, 1 fresh.co.il, 1 fresh4.co.uk, 1 freshbean.club, 1 +freshbooks.com, 0 freshcar.bg, 1 freshcode.nl, 1 +freshdesk-apps-by-invantive.com, 1 freshempire.gov, 1 freshersworld.ml, 1 fresherwalkins.tk, 1 @@ -58292,6 +58465,7 @@ freshman.tech, 1 freshmans-pizza.de, 1 freshmilk.com.sg, 1 freshpod.pl, 1 +freshporno.net, 1 freshpounds.com, 1 freshproducemusic.tk, 1 freshremote.work, 1 @@ -58299,7 +58473,6 @@ freshroots.ca, 1 freshrss.eu, 1 freshrss.nl, 1 freshsexpics.com, 1 -freshslots.net, 1 freshsnap.org.au, 1 freshtest.tk, 1 freshwave.gr, 1 @@ -58309,6 +58482,7 @@ fresnofloodcontrol.gov, 1 fresnois.com, 1 freso.dk, 1 fretboardforever.com, 1 +frettboard.com, 1 frettennet.tk, 1 freudinger.info, 1 freudinger.net, 1 @@ -58319,9 +58493,10 @@ freundinnen-kurzurlaub.de, 0 freundinnen-urlaub.de, 0 freundinnenausflug.de, 0 freundlieb.ch, 1 +frexxi.com, 1 freyapearls.com.au, 1 -frgal.cz, 1 fribourgviking.net, 1 +fricke.pl, 1 frickelboxx.de, 1 frickelmeister.de, 1 frickenate.com, 1 @@ -58339,9 +58514,9 @@ friedberg2020.de, 1 friedbergdirectfx.ca, 1 friedenskirche-koeln.de, 1 friedensteppich.de, 1 +friederes.lu, 0 friederloch.de, 1 friedhelm-wolf.de, 1 -friedhof-hohenlimburg.de, 1 friedli.info, 1 friedrich-foto-art.de, 1 friedrich.report, 1 @@ -58362,7 +58537,6 @@ friendlycaptcha.com, 1 friendlydabs.com, 1 friendlydecorator.ca, 1 friendlydesigner.ca, 1 -friendlys.com, 1 friendofthehoneybee.co.uk, 1 friendofthehoneybee.org, 1 friends-online.tk, 1 @@ -58410,7 +58584,7 @@ frikis.sytes.net, 1 frikiteca.tk, 1 frikizone.tk, 1 frikotv.tk, 1 -frilima.com.br, 0 +frilima.com.br, 1 friller.com.au, 1 frillip.com, 0 fringraphics.com, 1 @@ -58443,6 +58617,7 @@ friv-2018.ga, 1 frizim.com, 1 frizo.com, 1 frlcnews.com, 1 +frlt.one, 1 frltexas.com, 1 frlunit.com, 1 frly.de, 0 @@ -58454,7 +58629,6 @@ frogatto.com, 1 frogeducation.com, 1 frogeducation.com.au, 1 froger.me, 1 -frogeye.fr, 1 froggitt.com, 1 froginfra.net, 1 froglms.com, 1 @@ -58466,10 +58640,12 @@ frogs.lgbt, 1 frogsonamission.de, 1 frogstar.com, 1 frogtest.co.uk, 1 +frogtown.capital, 1 froh-s.com, 1 froh.co.jp, 1 frohsinnoberzier.de, 1 froicorp.com, 1 +frok.ai, 1 frok.com, 1 frokenblomma.se, 1 from-the-net.com, 1 @@ -58490,11 +58666,9 @@ fromrestaurants.tk, 1 fromscratch.rocks, 1 fromthecave.tk, 1 fromthecountsplace.tk, 1 -fromtheliminal.space, 1 fromthemonks.com, 1 fromthesoul.net, 1 fromwithin.tk, 1 -frond.media, 1 fronhadeseda.com.br, 1 front.com, 1 frontbaydevices.tk, 1 @@ -58504,7 +58678,7 @@ frontdoorhome.com, 1 frontecho.top, 1 fronteers.nl, 0 fronteimoveis.com.br, 1 -fronteiralivre.com.br, 0 +fronteiralivre.com.br, 1 frontenddev.org, 1 fronterasblog.tk, 1 frontierbrasil.tk, 1 @@ -58518,27 +58692,25 @@ frontigate.com, 1 frontline.cloud, 1 frontline6.com, 0 frontlinepolicies.com, 1 -frontmymail.com, 1 +frontofficeroofing.com, 0 frontofthehouse.com, 1 frontrouge.fr, 1 froogo.co.uk, 1 frosinonetoday.it, 1 frost.com, 1 frost.kiwi, 1 -frostbits.net, 1 frostbytex.ca, 1 frostexpert.ru, 1 frostfire.tk, 1 frostland.net, 1 frostland.pro, 1 -frostleap.com, 1 +frostplatform.com, 1 frostprotection.co.uk, 1 frostwarning.com, 1 frostwolf.tk, 1 frosty-gaming.xyz, 1 frosty.sk, 1 frosty.style, 1 -frostyclub.com, 0 frostymr.com, 0 frostysummers.com, 1 frothy285.com, 1 @@ -58558,6 +58730,7 @@ frozendurian.club, 1 frozenpennies.com, 1 frp-roleplay.de, 1 frpg.gov, 1 +frprn.com, 1 frprn.es, 1 frrfb.org.au, 1 frsecure.com, 1 @@ -58577,7 +58750,6 @@ frugalmatic.com, 1 frugro.be, 1 fruit-chat.com, 1 fruit-farm.tk, 1 -fruit-rush.com, 1 fruit.ga, 1 fruitbouquets.com, 1 fruitdiva.com, 1 @@ -58589,7 +58761,7 @@ fruitlandmi.gov, 1 fruitlawers.ga, 1 fruitmoose.com, 1 fruitscale.com, 1 -fruitsfromchile.com, 1 +fruitsexpressdelivery.com.sg, 1 fruittree.com.my, 1 fruittree.com.sg, 1 fruitware.ae, 1 @@ -58604,7 +58776,6 @@ frutuozo.com.br, 1 fruturaproduce.com, 1 fruxh.moe, 1 fruxnux.net, 1 -fruxon.com, 1 frwmb.gov, 1 fry.at, 1 frydrychit.cz, 1 @@ -58618,7 +58789,6 @@ fs-maistadt.de, 1 fs-rozmarija.tk, 1 fs-w.org, 1 fs-world.org, 1 -fs.to, 1 fs1.hopto.org, 1 fs22a.de, 1 fsaddons.net, 1 @@ -58626,12 +58796,13 @@ fsalmeron.tk, 1 fsapubs.gov, 0 fsatech.com, 1 fsavc.org.uk, 1 -fsbn.eu, 0 +fsbn.eu, 1 fsbpaintrock.com, 1 fsbtahlequah.com, 1 fsch2009.com, 1 fsck.cz, 1 fsclnj.org, 1 +fsconline.info, 1 fscott.de, 1 fsd.gov, 1 fsdfsd.net, 1 @@ -58639,6 +58810,7 @@ fselka.is, 1 fseo.tk, 1 fsfi.is, 1 fsg.one, 1 +fsharpfactory.io, 1 fsicourses.net, 1 fsinf.at, 1 fsk.fo, 0 @@ -58650,11 +58822,10 @@ fsmi.in, 1 fsnb.com, 1 fspchile.org, 1 fspk.cfd, 1 -fspk.club, 1 -fspk.fyi, 1 fspk.pro, 1 fspk.tech, 1 fsrs.gov, 1 +fssai.gov.in, 1 fssc.com, 1 fsscms.com, 1 fssolutions.com, 1 @@ -58681,10 +58852,10 @@ fstpn.pt, 1 fstpn.shop, 1 fstpn.si, 1 fstpn.uk, 1 +fsty.uk, 1 fsub.de, 1 fsvoboda.cz, 1 ft.com, 0 -ft0.sh, 1 ftang.de, 1 ftc.gov, 1 ftccomplaintassistant.gov, 1 @@ -58692,8 +58863,6 @@ ftcefile.gov, 1 ftcollinswindows.com, 1 ftcscout.org, 1 ftcunion.org, 1 -ftczech.com, 1 -ftczech.cz, 1 fte-automotive.com, 1 ftek.com, 1 ftfgroup.us, 1 @@ -58766,6 +58935,7 @@ fuel.london, 1 fuel.ventures, 1 fuel2go.eu, 1 fuelbyte.sg, 1 +fuelco.com.au, 1 fuelcycle.com, 1 fueleconomy.gov, 1 fuelgalicia.tk, 1 @@ -58838,6 +59008,7 @@ fujieb.com, 1 fujifilm-connect.com, 1 fujikatu.tk, 1 fujikochan.tk, 1 +fujimurado.com, 1 fujitsu, 1 fujivibe.art, 1 fujiwarashinzo.com, 1 @@ -58852,7 +59023,6 @@ fukui-dc.com, 1 fukuiedu.com, 1 fukuko.biz, 1 fukuko.xyz, 1 -fukumoto.tokyo, 1 fukushima-fun.com, 1 fukushimacoffee.com, 1 fulcrumanalytics.com, 1 @@ -58864,8 +59034,10 @@ fulfilmentcrowd.com, 1 fulfyld.com, 1 fulgaz.com, 0 fulgentoncology.com, 1 +fulgenzis.com, 1 fulisex.com, 1 fuliwang.info, 1 +full-hd.info, 1 full-service-suite.com, 1 full-stack.ninja, 1 full.eu.org, 1 @@ -58889,11 +59061,11 @@ fullmetalbrackets.com, 1 fullmetalconsulting.tk, 1 fullmoondesignhouse.tk, 1 fullmoonhentai.tk, 1 -fullmouthdentalimplants.com.au, 1 fullpaisa.com, 1 fullsize.ml, 1 fullsizefordclub.tk, 1 fullsolar.com, 1 +fullstackway.com, 1 fulltextarchive.com, 1 fulltxt.ml, 1 fully-covered.tk, 1 @@ -58913,6 +59085,7 @@ fumify.tk, 1 fumilink.com, 1 fumotousa.com, 1 fun-baby.ru, 1 +fun-bounce.co.uk, 1 fun-day.tk, 1 fun-life.com.tw, 0 fun-tasia.co.uk, 1 @@ -58931,6 +59104,7 @@ funchal.gq, 1 funchal.pt, 1 functionalmedicinetraining.com, 1 functions-online.com, 1 +functionx.io, 1 functori.com, 1 fund-melden.de, 1 fundacaoedp.pt, 1 @@ -58940,28 +59114,24 @@ fundacionfade.org, 1 fundacionfranciscofiasco.org, 1 fundacionindigo.tk, 1 fundacionlaboral.org, 1 -fundacionpaideia.com.ar, 1 fundacionsiempreadelante.org, 1 fundacionsilverina.org, 1 fundacjamatkiewy.pl, 1 -fundacjatreenity.pl, 1 fundaekhaya.co.za, 1 fundamentalrightsforum.eu, 1 fundamentals.lu, 1 fundamentt.com, 1 fundayltd.com, 1 -fundcapitalnow.com, 1 fundedschools.ml, 1 fundelva.com, 1 fundera.com, 1 fundex.id, 1 fundiggitydog.co.nz, 1 -funding-zone.com, 0 +funding-zone.com, 1 fundingoptions.com, 1 fundingpartner.dk, 1 fundingpartner.no, 1 fundingpartner.se, 1 -fundinvestmenttools.com, 1 fundky.com, 1 fundkyapp.com, 1 fundmatellc.com, 1 @@ -58977,7 +59147,6 @@ funeralforafriend.tk, 1 funeralshowers.ga, 1 funeralshowest.ga, 1 funerare-cazacu.com, 1 -funerare24.ro, 1 funfactorleeds.co.uk, 1 funfacts.cz, 1 funfm.tk, 1 @@ -59045,13 +59214,6 @@ funidos.tk, 1 funinfo.tk, 1 funinthesunboating.com, 1 funio.com, 1 -funk-austria.com, 1 -funk-gruppe.ch, 1 -funk-gruppe.de, 1 -funk-gruppe.it, 1 -funk-gruppe.li, 1 -funk-stiftung.de, 1 -funk-stiftung.org, 1 funkazoid-radio.com, 1 funken-networks.de, 1 funkfernbedienung-industrie.de, 1 @@ -59068,7 +59230,6 @@ funkydealz.no, 1 funkyfishbone.nl, 1 funkyflo.tk, 1 funkysims.tk, 1 -funkystride.com, 1 funline.tk, 1 funlook.ga, 1 funlook.tk, 1 @@ -59135,7 +59296,6 @@ furbooru.org, 1 furca.ca, 1 furcdn.net, 1 furcity.me, 1 -fureal.net, 1 furgetmeknot.co.za, 1 furgetmeknot.org, 1 furgetmeknot.org.za, 1 @@ -59171,6 +59331,7 @@ furniture-for-home.tk, 1 furniture-warehouse.co.za, 1 furnitureconcept.co.uk, 1 furniturefashion.com, 1 +furnitureforlife.com, 1 furnitureplustt.com, 1 furnitureproduction.tk, 1 furnituresolutions.tk, 1 @@ -59192,15 +59353,12 @@ furrycon.top, 1 furrycraft.ga, 1 furryfandomclub.cn, 0 furrytech.network, 1 -furrytrashsmash.com, 1 -furrytrashsmash2.com, 1 furs.town, 1 fursandfur.tk, 1 furseo.co, 1 fursho.ws, 1 furshows.org, 1 furtainment.com, 1 -furtanov.com, 1 furthestpoint.org, 1 furtodo.at, 1 furtodo.com, 1 @@ -59222,13 +59380,13 @@ furusawadental.com, 1 furuse-shika.com, 1 furuyadc.com, 1 furworks.de, 1 +furyalexmichaelides.com, 1 fusacity.tk, 1 fusacovi.cf, 1 fuscina.co.uk, 1 fuse.com.vn, 1 fuselight.nl, 1 fuseos.net, 1 -fusestudio.net, 1 fuseyahoken.com, 1 fushee.com, 1 fushimidc.com, 1 @@ -59253,6 +59411,7 @@ fusionpatrol.com, 0 fusionplatter.eu, 1 fusions.co.jp, 1 fusionstudios.tk, 1 +fusiontaxes.com, 1 fuso.net, 1 fussball.pt, 1 fussballmanager.de, 1 @@ -59267,6 +59426,7 @@ fuszara.eu, 1 fut21gen.com, 1 futa.agency, 1 futa.wiki, 1 +futabadc.jp, 1 futacockinside.me, 1 futalis.de, 1 futarara.ga, 1 @@ -59299,7 +59459,6 @@ futuo.jp, 1 futurama-il.tk, 1 future-dance.tk, 1 future-look.de, 1 -future-step.pl, 1 future-telecom.com, 1 futureappin.com.au, 1 futureaudiographics.com, 0 @@ -59329,6 +59488,7 @@ futuresinmarketing.co.uk, 1 futuresonline.com, 0 futuresound.tk, 1 futurestyletiling.com.au, 1 +futuretechtrends.co.uk, 1 futureville.city, 1 futurewithoutfear.org, 1 futurewithoutfear.us, 1 @@ -59337,6 +59497,7 @@ futuristicarchitectures.tk, 1 futuristicjobs.sk, 1 futuristspeaker.com, 1 futurity.ml, 1 +futurygames.com, 1 fuvarlevel.hu, 1 fuvelis.com, 1 fuwafuwa.moe, 1 @@ -59345,9 +59506,8 @@ fuxgames.com, 1 fuxia.ai, 1 fuyeor.com, 1 fuyeor.net, 1 -fuyeor.org, 1 fuyeor.top, 1 -fuyer.cn, 0 +fuyer.cn, 1 fuyu.moe, 1 fuzhi.com, 1 fuzigames.com, 1 @@ -59361,17 +59521,19 @@ fuzzing-project.org, 1 fuzzlemann.de, 1 fuzzy.domains, 1 fuzzylogic.tk, 1 -fv-judo-im-norden.de, 1 fvap.gov, 1 fvdm.com, 1 fveevaete.com, 1 fvg.io, 1 fvivas.com, 1 +fvledilizia.it, 1 fvr-concept.be, 1 fw-einsatz.de, 1 fwaux.de, 1 fwba.hopto.org, 1 fwd.pp.ua, 1 +fwd.vg, 1 +fwdmovers.com, 1 fwdx.net, 1 fwest.ovh, 1 fwest98.nl, 1 @@ -59390,8 +59552,8 @@ fwup.org, 1 fwupd.org, 1 fx-rating.com, 1 fx-w.io, 1 +fx.kg, 1 fx.to, 1 -fx0817.dpdns.org, 1 fxci.com, 1 fxcm-arabic.com, 1 fxcm-chn.com, 1 @@ -59447,9 +59609,6 @@ fxstock.eu, 1 fxstrategics.com, 1 fxtalk.cn, 0 fxtwitter.com, 1 -fxv.media, 1 -fxv.pizza, 1 -fxvdd.com, 1 fxvdigital.com, 1 fxwebstudio.com.au, 0 fyers.in, 1 @@ -59459,7 +59618,6 @@ fyllingen-elinst.no, 1 fylm.ai, 1 fyn.nl, 1 fyn.software, 1 -fynaro.de, 1 fynbo.io, 1 fyndiq.se, 1 fyndloggan.se, 1 @@ -59495,7 +59653,6 @@ g-fruit.gr, 1 g-lab.xyz, 1 g-m-w.eu, 1 g-p-design.com, 1 -g-partners.com, 1 g-printec.com, 1 g-rom.net, 1 g-sp.azurewebsites.net, 1 @@ -59503,7 +59660,6 @@ g-tea.ml, 1 g-watch.org, 1 g.box, 1 g.co, 0 -g.ls, 1 g.wtf, 1 g00228.com, 1 g01.in.ua, 1 @@ -59515,14 +59671,15 @@ g0nz0.me.uk, 1 g1313g.com, 1 g15ubezpieczenia.pl, 1 g2-inc.com, 1 -g20.org, 1 g2jp.uk, 1 +g2links.com, 0 g2pla.net, 1 g2risksolutions.com, 1 g2soft.net, 0 g36533.com, 1 g36594.com, 1 g3circuit.com, 1 +g3cs.org, 1 g3d.ro, 1 g3hardcore.tk, 1 g3homefoods.com, 1 @@ -59536,7 +59693,6 @@ g5custommetalart.com, 1 g6666g.tk, 1 g6729.co, 1 g6957.co, 1 -g6pddf.org, 1 g72020.gov, 1 g7campdavid.gov, 1 g7liveseafood.com.sg, 1 @@ -59544,8 +59700,9 @@ g7usa.gov, 1 g8energysolutions.co.uk, 1 g9297.co, 1 g9728.co, 1 +g9kingnine.xyz, 1 ga-digitazion.com, 1 -ga-rew.com, 1 +ga-part.ru, 1 ga.fr, 1 ga4wp.com, 1 gaaog.com, 1 @@ -59600,6 +59757,7 @@ gabrielrm.dynu.net, 1 gabrielsimonet.ch, 1 gabrielsteens.nl, 1 gabrielvillarreal.com, 0 +gabrielyin.com, 0 gabryjeluk.tk, 1 gabskent.de, 1 gabtitui.gov.au, 0 @@ -59613,6 +59771,7 @@ gacheamotors.cl, 1 gachiyase.com, 1 gachoki.com, 1 gachter.name, 0 +gachw.org, 0 gaci88play.com, 1 gacirenin.cf, 1 gacirenin.tk, 1 @@ -59627,7 +59786,9 @@ gadget-freak.cf, 1 gadget-hat.tk, 1 gadget-tips.com, 1 gadgetdetected.com, 1 +gadgeteval.com, 1 gadgetflashers.ga, 1 +gadgetflip.com, 1 gadgetfreak.cf, 1 gadgetgalaxy.ro, 1 gadgetgi.ga, 1 @@ -59646,14 +59807,14 @@ gadgetshome.ml, 1 gadgetslab.tk, 1 gadingpromosindo.tk, 1 gadkiy-farm.tk, 1 -gadrian.com.br, 1 gadsdensoefl.gov, 1 gadse.games, 1 gadzilla.tk, 1 gaeldst.dk, 1 gaelico.tk, 1 +gaelle-esthetique.com, 1 gaestehaus-leipzig.de, 1 -gaestehaus-monika.com, 0 +gaestehaus-monika.com, 1 gaetanosonline.com, 0 gafachi.com, 1 gafan.cf, 1 @@ -59705,7 +59866,9 @@ gakki.photos, 1 gaku-nkc.net, 1 gala.im, 1 gala.kiev.ua, 0 +galabands.info, 1 galact.tk, 1 +galacticmedallion.com, 1 galaksidot.tk, 1 galaktika-znakomstv.tk, 1 galaltosalento.it, 1 @@ -59734,7 +59897,7 @@ galaxus.fr, 1 galaxus.it, 1 galaxus.nl, 1 galaxy.edu.pe, 1 -galaxyfreedom.com, 1 +galaxyaudiobook.com, 1 galaxymedia.tk, 1 galaxyofebooks.com, 1 galaxypersonnel.com.au, 1 @@ -59743,6 +59906,7 @@ galaxyscientific.com, 1 galaxystaking.space, 1 galaxysweeper.com, 1 galaxytracker.tk, 1 +galecommercial.com, 1 galefacialplastics.com, 1 galenguyer.com, 1 galenreasoner.com, 1 @@ -59750,16 +59914,13 @@ galenzoski.com, 1 galepaal.tk, 1 galeria-reisen.de, 1 galeria42.com, 1 -galeriaalphaville.com.br, 1 galeriabunkers.tk, 1 galeriakobylarz.pl, 1 galeriarr.pl, 1 galerias-xamoralarte.cf, 1 galerias-xamoralarte.ga, 1 -galeriavisol.com, 1 galerie-claudia-walz-nagold.tk, 1 galerie-com.com, 1 -galerie-montmartre.com, 1 galerie-saintgermain.fr, 1 galeries.photo, 0 galexlee.com, 1 @@ -59788,7 +59949,7 @@ galinos.gr, 1 galio.lt, 1 galiuzvejoti.org, 1 galive.ga, 1 -galix.com, 0 +galix.com, 1 galizae-sports.tk, 1 gallagher.com, 1 gallagherperformance.com, 1 @@ -59835,7 +59996,6 @@ gamagam.gq, 1 gamalawadforum.tk, 1 gamalhamza.tk, 1 gamanlu.com, 1 -gamatotv.io, 1 gambarian.com, 1 gamberorosso.menu, 1 gamberorotto.com, 1 @@ -59847,20 +60007,22 @@ gambisti.de, 1 gambitnash.co.uk, 1 gambitnash.com, 1 gambitprint.com, 1 +gambleinireland.com, 1 gamblersgaming.eu, 1 gamblerspick.com, 1 gambling-business.club, 1 gamblingaffiliatevoice.com, 1 gamblingconsulting.expert, 1 gamburger.tk, 1 +gamcore.com, 1 game-club.me, 1 -game-designers.net, 0 +game-designers.net, 1 game-dominion.tk, 1 game-gentle.com, 1 game-net.ml, 1 game-repack.site, 1 -game-serverhosting.de, 1 game.es, 1 +game.gal, 0 game4less.com, 1 game818play.com, 1 game88play.com, 1 @@ -59913,7 +60075,7 @@ gamekeepers.cz, 1 gamekeybox.tk, 1 gamekiller.ga, 1 gameking.com.au, 1 -gamelair.me, 1 +gamelarix.com, 1 gameloft.ga, 1 gamelok.ga, 1 gamemakers.tk, 1 @@ -59935,6 +60097,7 @@ gamepunelita.cf, 1 gamepunelita.tk, 1 gamepuzzleinfo.tk, 1 gameracinginfo.tk, 1 +gamerankings.com, 1 gamerant.com, 1 gamercredo.com, 1 gamereactor.asia, 1 @@ -59950,6 +60113,7 @@ gamereactor.no, 1 gamereactor.pt, 1 gamereactor.se, 1 gamerepository.ga, 1 +gameres.com, 1 gamering.cf, 1 gamerkings.tk, 1 gamers-community.tk, 1 @@ -59966,13 +60130,14 @@ gamertechau.com, 1 gamertelligence.com, 1 gamertrashers.ga, 1 gamerturk.tk, 1 +gamerwelfare.com, 1 gamerzdot.com, 1 games-rt.ru, 1 games-station.tk, 1 games2kids.net, 1 games4theworld.org, 1 gamesandcasino.com, 1 -gamesbrowser.org, 1 +gamesaviour.com, 1 gamescatalogue.blog, 1 gamesclix.com, 1 gamescore.tk, 1 @@ -59980,8 +60145,10 @@ gamesector.tk, 1 gameserver-admin.ga, 1 gameserver-sponsor.me, 1 gameserver.fun, 1 +gameserver.tech, 1 gamesgalaxy.it, 1 gamesgate.tk, 1 +gameshack.io, 1 gameship.ga, 1 gameshopsrbija.com, 1 gameshowchallenge.ie, 1 @@ -60022,9 +60189,11 @@ gaming-online.tk, 1 gaming.cz, 1 gamingaktier.com, 1 gamingat.work, 1 +gamingblogx.com, 1 gamingboard.eu, 1 gamingdirectory.com, 1 gamingdose.com, 1 +gamingerox.com, 1 gamingexodus.com, 1 gamingexperts.ga, 1 gaminggear.bg, 1 @@ -60035,7 +60204,6 @@ gaminglog.es, 1 gamingmeets.com, 1 gamingo.news, 1 gamingph.com, 1 -gamingpowerpc.com, 1 gamingregulation.com, 1 gamingtech.es, 1 gamingterritory.com, 1 @@ -60058,9 +60226,7 @@ gammaphibeta.tk, 1 gammonvillage.com, 1 gamoloco.com, 0 gamrenovation.ca, 1 -gamtosgidas.lt, 1 gan.wtf, 1 -ganaconelbarrio.com, 1 ganaha.org, 1 ganardinerillo.tk, 1 ganasoku.net, 1 @@ -60068,9 +60234,9 @@ gancedo.com.es, 1 ganchev.bg, 1 gandalfcz.tk, 1 gandalfservice.com, 1 +gandhiashramsabarmati.org, 1 gandmfamilydental.com, 1 gandour.com, 0 -gandysdairy.com, 1 gangbangs.tk, 1 ganggalbichler.at, 1 gangnamcool.com, 1 @@ -60087,7 +60253,6 @@ ganoderma4in1coffee.com, 1 ganodermacoffee.com, 1 ganodermatiendaonline.com, 1 gansevoorthotelgroup.com, 1 -gant.ninja, 1 gant.tk, 1 gantlaborde.com, 1 gantt-chart.com, 1 @@ -60110,15 +60275,13 @@ gapfa.ro, 1 gaphag.ddns.net, 1 gapo.re, 1 gaponov.tk, 1 -garage-leone.com, 0 +garage-leone.com, 1 garage.click, 1 -garage.management, 1 garage042.bg, 1 garage15.com.ua, 1 garagechief.com, 1 garagedejan.ch, 1 garagedoorflorida.com, 0 -garagedoorpartsuk.co.uk, 1 garagedoorrepaircedarhilltx.com, 1 garagedoorrepairs-sanantonio.com, 1 garagedoors4less-sanantonio.com, 1 @@ -60126,13 +60289,13 @@ garageenginuity.com, 1 garagemhermetica.org, 1 garagen-crew.de, 1 garagenet.com, 1 +garageportcenter.se, 1 garageworks.in, 1 garanteasy.com, 1 garantieabschluss.de, 1 garantikoza.org, 1 garantplus.kz, 1 garaventa.com, 1 -garaz.cz, 1 garbage-juice.com, 1 garbarinocatalogo.com, 1 garbuszus.de, 1 @@ -60140,7 +60303,6 @@ garbuz.ga, 1 garcia-leplus.com, 1 garcialeplus.com, 1 garciam.gt, 1 -garciastl.com, 1 garco.co, 0 gard.no, 1 garda-see.mobi, 1 @@ -60153,23 +60315,23 @@ gardenandhens.com, 1 gardenblog.tk, 1 gardencentreshopping.co.uk, 1 gardencityal.gov, 1 +gardendonkey.com, 1 gardengameshireuk.com, 1 gardengroveca.gov, 1 gardengusto.ie, 1 gardeniaorganic.com, 1 +gardenplantslife.com, 1 gardenroomsdirect.co.uk, 1 gardensuperstore.com.au, 1 gardentotable.org, 1 -gardenwith.me, 1 -gardevault.eu, 1 gardinenzubehoer.tk, 1 gardinolsson.se, 1 gardnerbender.com, 1 garduri-electrice-animale.ro, 1 gardurialuminiuiasi.ro, 1 -garelickfarms.com, 1 garethbowker.com, 1 garethbowker.uk, 1 +garethdesign.co.uk, 1 garethkirk.com, 1 garethkirkreviews.com, 1 garfieldairlines.net, 1 @@ -60184,6 +60346,7 @@ gargola.tk, 1 garibaldi.gov, 1 garibyatri.com, 1 gariganshi.ml, 1 +garip.me, 1 garito3pa.tk, 1 gariwo.net, 1 garlandcountyar.gov, 1 @@ -60244,22 +60407,21 @@ garudam.info, 1 garwiniowa.gov, 1 gary.gov, 1 garycarmell.com, 1 -garycheathamart.com, 1 garygreenbergonline.com, 1 garyjones.co.uk, 1 -garyjones.io, 1 garyrh.com, 1 -garystallman.com, 0 +garystallman.com, 1 garywhittington.com, 0 gas-boilers.tk, 1 gas-online.cz, 1 gas-proekt.tk, 1 -gas.gallery, 1 gasb87leaseaccounting.com, 1 gasbarkenora.com, 1 +gasdetect.com.br, 1 gasenergy.kz, 1 gasesdelaguajira.com, 1 gasfitermaipu.cl, 1 +gasgipfel.de, 1 gasherde.tk, 1 gashtline.ir, 1 gasigasy.mg, 1 @@ -60300,8 +60462,10 @@ gastrolab.tk, 1 gastromedicalcenter.com.br, 1 gastronom.ga, 1 gastronomias.com.pt, 1 +gastrosfera.info, 1 gastrotiger.at, 1 gastrotiger.de, 1 +gataca.io, 1 gatapro.net, 0 gatavirtual.com, 1 gate-tower-eye-clinic.com, 1 @@ -60315,6 +60479,7 @@ gatemaster.ga, 1 gatemotorskyalami.co.za, 1 gatemoves.com, 1 gatenz-panel.com, 0 +gates-of-olympus-app.com, 1 gatesfoundation.org, 1 gatesmri.org, 1 gatesphilanthropypartners.org, 1 @@ -60327,7 +60492,6 @@ gatewaytire.com, 1 gatewaytrust.org.uk, 1 gathegi.ga, 1 gatherling.com, 1 -gathersouthwest.org, 1 gatherthebride.com, 1 gatherup.com, 1 gathu.co.ke, 1 @@ -60359,30 +60523,35 @@ gavaskee.com, 1 gaveme.top, 1 gavilanz.ddnsfree.com, 1 gavin.sh, 1 +gavinbrown.ca, 1 gavindebecker.com, 1 gavinedson.com, 1 +gavingreer.com, 1 gavins.stream, 1 gavintang.me, 1 gavinwhite.net, 1 gaviti.com, 1 gavlix.se, 1 gaw.sh, 1 -gawel.ch, 1 gawinex.com, 1 gay-jays.com, 1 -gay.amsterdam, 1 +gay-personal-ads.com, 1 gay.systems, 1 gayanalysing.co.uk, 1 gayauthors.org, 1 gaycammers.com, 1 gaychatrooms.tk, 1 gaycock4u.com, 0 +gayest.gay, 1 +gayest.pro, 1 gayfeedr.com, 1 gayfish.org, 1 gayfish.party, 1 gayfr.live, 1 gayfr.online, 1 +gayfr.social, 1 gayga.gov, 1 +gaygay.pro, 1 gaygeeks.de, 1 gayhotmovies.com, 1 gaylaktika.com, 1 @@ -60393,11 +60562,11 @@ gaypawtism.lol, 1 gayporn.com, 1 gaypornvideos.xxx, 1 gayreppc.com, 1 -gays-about.net, 1 gaysexpositions.guide, 1 gaytor.rent, 1 gaytorrent.ru, 1 gaytravel4u.com, 1 +gaytubec.com, 1 gayukai.net, 1 gaz-connect.ru, 1 gazapos.ga, 1 @@ -60415,7 +60584,6 @@ gazettetimes.com, 1 gazi.edu.tr, 1 gazik.com.ua, 1 gazizov.tk, 1 -gazobeton-don.ru, 1 gazor.tk, 1 gazoz.ga, 1 gazst.ru, 1 @@ -60426,16 +60594,19 @@ gba.ge, 1 gba.gob.ar, 1 gbatroid.com, 1 gbbb-berlin.com, 1 +gbcdigitalmarketing.com, 1 gbcindustry.com, 1 gbcomm.tk, 1 gbcsummercamps.com, 1 gbdavisplasticsurgery.com, 1 gbecreativeagency.com, 1 +gbedu360.com, 1 gbenson.net, 1 gbes.com, 1 gbfoundation.org, 1 gbhem.org, 1 -gbhosts.com, 1 +gbi-etalon.ru, 1 +gbika.org, 1 gbinsta.com, 1 gbiotech.tk, 1 gbisigma.com, 1 @@ -60474,7 +60645,6 @@ gcfadvisors.com, 1 gcgroup.io, 1 gchp.ie, 0 gchq.wtf, 1 -gcja22.me, 1 gclegal.com.au, 0 gcmrc.gov, 1 gcmsnotesrequest.ca, 1 @@ -60482,7 +60652,8 @@ gcn.ie, 1 gcode.space, 1 gcoded.de, 1 gconcept.tk, 1 -gconstruction.org, 0 +gconduit.com, 1 +gconstruction.org, 1 gcoption.pro, 1 gcorevape.ca, 1 gcqd.fr, 1 @@ -60490,18 +60661,18 @@ gcrabtreespaces.com, 1 gcrcollectif.ca, 1 gcrm.jp, 1 gcs-ventures.com, 1 -gcscheats.com, 1 gcschool.tk, 1 gcsm-qc.ca, 1 gcso.gov, 1 -gcstats.org, 1 gcstechnologies.com, 1 gctdtx.gov, 1 +gcubedinc.com, 1 gcuf.edu.pk, 1 gcustom.email, 1 gcwatx.gov, 1 gcwcid1tx.gov, 1 gcwholistic.com, 1 +gd-ots.com, 1 gda.gov.lb, 1 gdacs.org, 1 gdandb.com, 1 @@ -60518,8 +60689,8 @@ gdkn0.gq, 1 gdm.cl, 1 gdngs.de, 1 gdomusicaeventi.tk, 1 -gdpr-assistant.com, 1 gdpr-pohotovost.cz, 1 +gdpr.fr, 1 gdprmanager.it, 1 gdrd.au, 1 gdretrofunk.cf, 1 @@ -60547,10 +60718,10 @@ gear4music.it, 1 gear4music.nl, 1 gear4music.no, 1 gear4music.se, 1 +gearbot.rocks, 1 gearboxhero.com, 1 gearev.net, 1 gearfinder.nl, 1 -gearhut.lk, 1 gearnews.tk, 1 gearset.com, 1 gearsupply.com, 0 @@ -60572,7 +60743,6 @@ gebn.co.uk, 1 gebn.uk, 1 gebopo.nl, 1 geborgen-wachsen.de, 1 -gebrauchtwagen-neuautos.de, 1 gebrianvs.cz, 1 gebruikershandleiding.com, 1 gebrvoit.de, 1 @@ -60581,8 +60751,10 @@ gecbunlari.com, 1 gecem.org, 1 gechr.io, 1 geckler-ee.de, 0 +geckobiketours.com, 1 +geckoroutes.com, 0 geckos-geocaching.de, 1 -geckosurfschool.com, 0 +geckosurfschool.com, 1 geckowithahat.com, 1 geco-lab.it, 1 gecosan.com, 1 @@ -60597,9 +60769,9 @@ geecrat.com, 1 geek-hub.de, 1 geek-rooms.tk, 1 geek.ch, 1 -geek.tw, 1 geek1.de, 1 geekabit.nl, 1 +geekanatomy.com, 1 geekandi.com, 1 geekariom.com, 0 geekashell.tk, 1 @@ -60608,8 +60780,10 @@ geekcircuit.com, 1 geekcore.tk, 1 geekcq.com, 1 geekcreations.co.uk, 1 +geekdocs.de, 0 geekdoit.com, 1 geekedin.ga, 1 +geekelectronico.com, 1 geekflare.com, 1 geekgear.tk, 1 geekhelpline.com.au, 1 @@ -60618,6 +60792,7 @@ geekium.me, 1 geeklair.net, 1 geeklan.co.uk, 1 geekmagazine.com.br, 1 +geekmiao.com, 1 geekofeminin.com, 1 geekplay.fr, 1 geekport.net, 1 @@ -60629,7 +60804,6 @@ geekscircuit.com, 1 geekshirts.cz, 1 geeksontap.com.au, 1 geekspace.gq, 1 -geekspy.net, 1 geeksquadforums.tk, 1 geekstreet.fr, 1 geekstuff.tk, 1 @@ -60656,6 +60830,7 @@ geemprestimos.com, 1 geen.gp, 1 geenspam.net, 1 geerdsen.net, 1 +geertdegraaf.nl, 1 geertjanvanhest.nl, 1 geertswei.nl, 1 gees.ch, 1 @@ -60667,13 +60842,13 @@ gefmo.pl, 1 gefolge.org, 1 gegeco.ch, 0 gegevensdelen.nl, 1 -gego-bergen.de, 1 -gehenna2035.com, 1 geheugenvannederland.nl, 1 gehirn.co.jp, 1 gehirn.jp, 1 gehirnapis.jp, 1 +gehirnstatus.jp, 1 gehopft.de, 1 +gehrdencarre.de, 1 gehrke.cloud, 1 gehrke.in, 1 gehrke.nrw, 1 @@ -60693,15 +60868,13 @@ geisten.net, 1 geitenijs.com, 1 geitex.com, 1 gekko.tk, 1 +gekkoldprom.ru, 1 gekleurdverleden.be, 1 geko.cf, 1 -gel.monster, 1 gelaendermanufaktur.de, 1 gelair.com.au, 1 gelanc.ml, 1 gelaterista.de, 1 -gelatinous.monster, 1 -gelatinous.org, 1 gelb-computer.de, 1 gelcocktail.fr, 1 geld-im-blick.de, 1 @@ -60733,6 +60906,7 @@ gelsey.com, 1 geluidsstudio.com, 1 geluidstechniek.tk, 1 geluidstudio.com, 1 +geluidsverwachting.nl, 1 geluleminceur.fr, 1 gelvetika.cf, 1 gem-forex.org, 1 @@ -60748,11 +60922,11 @@ gemax-online.de, 1 gembet99.com, 1 gemdirt.com, 1 gemeenschapsraaddeweere.nl, 1 -gemeente-s-hertogenbosch.nl, 1 gemeentedevesting.nl, 1 gemeentegeschiedenis.nl, 1 gemeentehub.nl, 1 gemeentehulst.nl, 1 +gemeentesluis.nl, 1 gemeentestein.nl, 1 gemeinde-merzenich.de, 1 gemeinde-rosenberg.de, 1 @@ -60769,7 +60943,6 @@ gemmproductions.com, 1 gemmy.cf, 1 gemonite.com, 1 gemooi.com, 1 -gemour.pl, 1 gemquery.com, 1 gemsen.com, 1 gemstones.com, 1 @@ -60777,7 +60950,7 @@ gemwerx.com, 1 gen.cn.eu.org, 1 gen.net.eu.org, 1 gen3marketing.com, 1 -genaropretill.com, 1 +gen53.org, 1 genbars.jp, 1 genbrugge.tk, 1 genchev.io, 0 @@ -60790,6 +60963,7 @@ gender-summit.com, 0 genderidentiteit.nl, 1 gendermedjournal.it, 1 gendrin.com, 1 +gendundrupa.ch, 0 gene-drive.com, 1 gene-drives.com, 1 geneacdn.net, 1 @@ -60824,7 +60998,6 @@ general-anaesthetics.com, 1 general-anesthesia.com, 1 general-directorate-of-administration.gov.lb, 1 general-insurance.tk, 1 -generalarcade.com, 1 generalassemb.ly, 1 generalcustomshop.com.br, 1 generali-investments-portal.cz, 1 @@ -60841,6 +61014,7 @@ generateurdapplis.fr, 1 generateurdesmiley.tk, 1 generation-clic.net, 1 generation247.nl, 1 +generationcloud.fr, 1 generationgoat.com, 1 generationnext.pl, 0 generationsweldom.com, 1 @@ -60849,7 +61023,6 @@ generator-energy.kz, 1 generator-energy.ru, 1 generatorcountry.com, 1 generatorkodowkreskowych.pl, 1 -generatorlabs.com, 1 generatormusic.tk, 1 generatorreview.pro, 1 generators-pro.ru, 1 @@ -60888,6 +61061,7 @@ generujdata.cz, 1 geneseecountymi.gov, 1 geneseeny.gov, 1 geneseetwpmi.gov, 1 +genesis-a-fresh-translation-from-hebrew-to-english.com, 1 genesis-herbs.com, 1 genesiseureka.com, 1 genesisgold.com, 1 @@ -60897,7 +61071,6 @@ genesisprize.org, 1 genesistoday.org, 1 genestho.lt, 1 genetargetsolutions.com.au, 1 -genetco.live, 1 geneticrescue.science, 1 genetidyne.com, 1 geneuse.ai, 1 @@ -60908,6 +61081,7 @@ genevachauffeur.com, 1 genevacountyal.gov, 1 genevalunch.com, 1 geneve.guide, 1 +genfaerd.dk, 1 gengcerita.tk, 1 genghan.com, 1 genhome.eu, 1 @@ -60917,6 +61091,7 @@ genicap.com, 1 genie.tk, 1 genieall.com, 1 genii-lab.com, 1 +geninspira.com, 1 geniodonna.it, 1 geniofinanciero.org, 1 geniosport.com, 1 @@ -60928,7 +61103,7 @@ geniustudio.net, 1 geniuswin.it, 1 geniuszone.biz, 1 genkisushi.com.hk, 1 -genlack.com, 1 +genlack.com, 0 gennaroabete.duckdns.org, 1 gennerator.com, 1 gennet.com, 1 @@ -60957,6 +61132,7 @@ genometrik.de, 1 genomic-surveillance.com, 1 genomic-surveillance.net, 1 genomic-surveillance.org, 1 +genomicslab.in, 1 genoog.com, 1 genoplot.com, 1 genorma.com, 1 @@ -60967,8 +61143,8 @@ genoveve.de, 1 genpathdiagnostics.com, 1 genroe.com, 1 gensenwedding.jp, 1 +genserve.ai, 1 genshiken-itb.org, 0 -gensi.pro, 1 gensicke.de, 1 gensleiten.de, 1 genslerapps.com, 1 @@ -61005,6 +61181,7 @@ gentlent.tech, 1 gentlent.uk, 1 gentlent.us, 1 gentlent.xyz, 1 +gentlentapis.com, 1 gentlentgroup.com, 1 gentlentssl.com, 1 gentmuziekstad.be, 1 @@ -61014,6 +61191,7 @@ gentrack.com, 0 gentryarkansaspd.gov, 1 gentrydeng.cn, 1 genuinekeys.in, 1 +genuinetech.pk, 1 genunlimited.ga, 1 genunlimited.tk, 1 genusbag.com, 1 @@ -61029,9 +61207,8 @@ geo-files.tk, 1 geo-industrie.fr, 1 geo-portale.it, 1 geo-television.de, 1 -geoapps.nl, 0 +geoapps.nl, 1 geoarchive.tk, 1 -geobattles.xyz, 1 geocaching.hu, 1 geocar.com, 1 geocell.website, 1 @@ -61094,7 +61271,6 @@ geonice.ga, 1 geonot.es, 1 geophysicsjournal.com, 1 geopixeles.cl, 1 -geoplatform.gov, 1 geopoetico.tk, 1 georg-ledermann.de, 1 georg-riepe.de, 1 @@ -61132,11 +61308,12 @@ georgetowntexas.gov, 1 georgewatson.me, 0 georgewbushlibrary.gov, 1 georgiaaccess.gov, 1 -georgiaclean.com, 1 +georgiaautoglass.net, 0 georgiacollaborative.com, 1 georgiacriminaldefense.com, 1 -georgiadreamsrealty.com, 1 +georgiaglassrepair.com, 0 georgiainfo.ga, 1 +georgian.io, 1 georgianews.ml, 1 georgiangames.gq, 1 georgianhistory.tk, 1 @@ -61155,8 +61332,8 @@ georginikolov.com, 1 georgioskontaxis.com, 1 georgioskontaxis.net, 1 georgioskontaxis.org, 1 +georgiosnetworks.com, 1 georglauterbach.com, 1 -georglauterbach.de, 1 georgmayer.eu, 1 geosales.tk, 1 geosci-model-dev-discuss.net, 1 @@ -61181,7 +61358,6 @@ geotrellis.io, 1 geotrust.com.ru, 1 geotruth.net, 1 geourl.me, 1 -geovertix.com, 1 geowest.tk, 1 gepassociati.cloud, 1 gepgroup.gr, 1 @@ -61192,8 +61368,6 @@ gera-haushaltsaufloesung.de, 1 gerainano.com, 1 geraintwhite.co.uk, 1 gerald-zojer.com, 1 -geraleks.ru, 1 -geralyntaylor.com, 1 geranium.dk, 1 gerard-klooster.net, 1 gerardforcada.com, 1 @@ -61207,7 +61381,7 @@ gerber-construction.com, 1 gerbil.tk, 1 gerbils.tk, 1 gerbyte.uk, 1 -gerd-frank.com, 0 +gerd-frank.com, 1 gerda.nl, 1 gereedschapmuseumdehobbyzolder.tk, 1 gerenciaconsultor.com, 1 @@ -61265,7 +61439,6 @@ gertrudentor.de, 1 geruestbau-grupp.de, 1 gerum.dynv6.net, 0 gerwinvanderkamp.nl, 1 -ges2l.com, 1 gesamenvat.nl, 1 gesath.co, 1 gesath.com, 1 @@ -61290,17 +61463,14 @@ gessettirotti.it, 1 gestaoboa.com.br, 1 gestaoclub.com.br, 1 gestcoelho.com, 1 -gestii.com.br, 1 gestion-optimum.com, 1 -gestion-verificaciones.com.ar, 1 gestionaleamica.com, 1 gestione-certificazioni.it, 1 gestionth.com, 1 -gestor.co, 1 gestorehotel.com, 1 +gestorestecnologicos.com, 1 gestoriaycontratos.com, 1 gestus.tk, 1 -gesundheits-fakten.de, 1 gesundheits-tipps.ch, 1 gesundheitswelt24.de, 1 gesundimmund.de, 1 @@ -61308,7 +61478,6 @@ get-a-wingman.com, 1 get-asterisk.ru, 1 get-baaam.com, 1 get-file.eu, 1 -get-it.uk, 1 get-maurice.com, 1 get-my-report.com, 1 get-quick-bits-fast-2018.pw, 1 @@ -61319,8 +61488,7 @@ get.gov, 1 get.how, 1 getabear.com, 1 getacrane.co.uk, 1 -getactionseptic.com, 1 -getahearing.com, 0 +getahearing.com, 1 getaldea.com, 1 getalink.ga, 1 getalitools.ru, 1 @@ -61331,11 +61499,8 @@ getaskoll.at, 1 getawaycab.tk, 1 getawaycar.com, 1 getawayline.com, 1 -getawikipedia.com, 1 getback.ch, 1 -getbacktosport.com, 0 getbalitour.com, 1 -getbeaverdock.com, 1 getbellhop.co, 1 getbenepass.com, 1 getblogger.ru, 1 @@ -61357,7 +61522,6 @@ getcare.com, 1 getcarina.com, 1 getcerta.com, 1 getchip.cc, 1 -getclarity.life, 0 getcleanworx.co.uk, 1 getclever.marketing, 1 getcloak.com, 1 @@ -61371,7 +61535,6 @@ getcooltricks.com, 1 getcryst.al, 1 getcyber.me, 1 getdash.io, 1 -getdiggit.com, 1 getdinghy.com, 1 getdirectcredit.com, 1 getdishnow.tk, 1 @@ -61383,6 +61546,7 @@ geteducation.tk, 1 geteduroam.no, 1 getelectronics.tk, 1 getescrowest.ga, 1 +getestudio.com, 1 getevidenceers.ga, 1 getfastanswer.com, 1 getfedora.org, 1 @@ -61410,6 +61574,7 @@ gethyas.com, 1 geti2p.com, 1 getidee.com, 1 getidee.de, 1 +getidmcc.com, 1 getinfoleads.tk, 1 getinshape.today, 1 getinsuranceanywhere.com, 1 @@ -61421,6 +61586,7 @@ getitpeople.com, 1 getjerry.com, 1 getjms.com, 1 getkeyport.com, 1 +getkliq.com, 1 getlaminas.org, 1 getlantern.org, 0 getlawyered.com.au, 1 @@ -61447,10 +61613,9 @@ getmywellness.com, 1 getnetset.com, 1 getnetworkvisibility.com, 1 getnew.tk, 1 +getnexar.com, 1 getnib.com, 1 getnikola.com, 1 -getonwikipedia.com, 1 -getotoq.com, 1 getoxley.com, 1 getpagespeed.com, 1 getpaidclub.tk, 1 @@ -61459,14 +61624,11 @@ getpaidtodesign.com, 1 getpaidtodev.com, 1 getpavedmidmichigan.com, 1 getpayever.com, 1 -getpeachy.org, 1 getpet.lt, 1 getplus.com.au, 1 -getprimepicksusa.com, 1 getpro.plumbing, 1 getprohealth.com, 1 getpromo.cf, 1 -getpsolid.com, 1 getpublii.com, 1 getraenke-hoffmann.de, 1 getready2dance.tk, 1 @@ -61474,7 +61636,6 @@ getreadyforever.tk, 1 getrealgifts.com, 1 getrelish.com, 1 getresilience.org, 1 -getrestorationexperts.com, 1 getriebeservice-gse.de, 0 getroman.com, 1 getroom.in, 1 @@ -61500,7 +61661,6 @@ getstream.io, 1 getswadeshi.com, 1 getsweep.com, 1 gett-group.com, 1 -gettaxesright.com, 1 getteamninja.com, 1 gettext.tk, 1 gettheanchor.org, 1 @@ -61512,9 +61672,9 @@ getthinknw.co.uk, 1 getthinkscotland.co.uk, 1 getthinkworksafe.co.uk, 1 getticker.com, 1 +gettingsmarteraboutthesmartgrid.org, 1 gettingtvers.ga, 1 gettopquality.com, 1 -gettrack.us, 1 getts.ro, 1 getts.shop, 1 gettwo.ml, 1 @@ -61537,7 +61697,6 @@ getyoureuro.tk, 1 getyourlifestraight.com, 1 getyourphix.tk, 1 geulis.tk, 1 -geumgo.org, 1 geus-okna.eu, 1 gevara.cz, 1 gevcen.be, 1 @@ -61570,7 +61729,6 @@ gewis.nl, 1 gexobiz.tk, 1 geyduschek.be, 0 geymbadi.com, 1 -geytabir.cf, 1 gezakekazeg.tk, 1 gezentianne.com, 1 gezginsolar.com, 1 @@ -61597,6 +61755,7 @@ gfleaks.com, 1 gfmp.com.pl, 1 gfms.ru, 1 gfnetfun.cf, 1 +gfonlineshop.co.nz, 1 gforce.ninja, 1 gforex.pro, 1 gforex.top, 1 @@ -61623,6 +61782,7 @@ gg6957.co, 1 gg9297.co, 1 gg9397.com, 1 gg9728.co, 1 +ggaustraliagames.com, 1 ggb.world, 1 ggchamber.com, 1 ggddrenthe.nl, 1 @@ -61635,12 +61795,12 @@ ggiveilig.nl, 1 gglks.com, 1 ggmmontascale.it, 1 ggpoker.com, 1 -ggpuketi.com, 0 ggretrobox.com, 1 ggrks.lol, 1 ggs-marschallstrasse.de, 1 ggs.jp, 1 ggservers.com, 1 +ggsforex.com, 1 ggsmp.net, 1 ggss.cf, 1 ggvaulting.co.uk, 1 @@ -61671,10 +61831,12 @@ gheorghe-sarcov.ga, 1 gheorghesarcov.ga, 1 gheorghesarcov.tk, 1 ghereben.xyz, 1 +ghettonetflix.de, 1 gheymatokharid.com, 1 ghgkhalsaschool.com, 1 ghi.gov, 1 ghil.de, 1 +ghimaging.com, 1 ghini.com, 1 ghiro.tk, 1 ghll.org.uk, 1 @@ -61688,7 +61850,6 @@ ghostbusters.tk, 1 ghostbustersuk.tk, 1 ghostcarve.ml, 1 ghostcir.com, 0 -ghostcms.fr, 1 ghostdesign.tk, 1 ghostdog.ga, 1 ghostdragon.tk, 1 @@ -61697,8 +61858,9 @@ ghostgimbals.com, 1 ghosthost.site, 1 ghosthunting.dk, 1 ghostinbox.pl, 1 -ghostkeys.eu, 0 +ghostinfluence.com, 1 ghostlight.tk, 1 +ghostly.studio, 0 ghostmail.no, 1 ghostmarket.io, 1 ghostnight.ga, 1 @@ -61714,17 +61876,18 @@ ghostsquad.tk, 1 ghosttrades-university.de, 1 ghostutils.tk, 1 ghostwritershigh.com, 1 -ghosty.link, 1 ghotokbaba.com, 1 ghou.me, 1 ghowell.io, 1 ghp.biz, 1 ghpastor.com, 1 +ghprinting.net, 1 ghsix.com.br, 1 ghtmi.gov, 1 ghui.de, 1 ghwconline.org, 1 ghyvelde.fr, 1 +gi-plant.shop, 1 gi.de, 1 giac.net, 1 giac.org, 1 @@ -61732,6 +61895,7 @@ giacomodebidda.com, 1 giacomomaniaci.it, 1 giacomopelagatti.it, 1 giacomosecchi.com, 1 +giakki.eu, 1 gialai.gov.vn, 1 gialupa.tk, 1 giamcanhieuqua.vn, 1 @@ -61782,6 +61946,7 @@ gidding.net, 1 giddyaunt.net, 1 giddyup.to, 1 gidive.com, 1 +gidleigh.co.uk, 1 gidonellis.co.uk, 1 gidress.com, 1 gidro-dom.ru, 1 @@ -61794,8 +61959,10 @@ gielectrical.com.au, 0 gierds.de, 1 gieschke.de, 1 giesela.io, 1 +gietvloergarant.nl, 1 gif-avatars.com, 1 gif.tips, 0 +gifbook.io, 1 giff.com.mx, 1 gifhelittlestars.co.uk, 1 gifsonline.tk, 1 @@ -61804,6 +61971,7 @@ gift4ever.tk, 1 giftbasketsoverseas.com, 1 giftbasketswindsor.com, 1 giftbit.com, 1 +giftedconsortium.com, 1 giftedmodels.com, 1 giftex.cz, 1 giftexperts.com, 1 @@ -61826,7 +61994,6 @@ giftsholidays.tk, 1 giftsofsquare.com, 1 giftsofsquare.net, 1 giftsofsquare.org, 1 -giftthatsong.com, 1 giftvoucherbrilliance.co.uk, 1 gifudodo.com, 1 gifuxuk.tk, 1 @@ -61861,7 +62028,6 @@ gigatron.io, 1 gigatron.tk, 1 gigawa.lt, 1 gigawattz.com, 1 -gigent.xyz, 1 giggear.com.au, 1 gigharborsound.com, 1 gigharborwa.gov, 1 @@ -61869,14 +62035,12 @@ gigis-pizzeria.de, 1 gigiscloud.servebeer.com, 1 giglink.club, 1 gigloog.tk, 1 -gigodata.com, 1 gigs.com, 1 gigsremote.com, 1 gigtakaful.bh, 1 gigwise.com, 1 giigle.cf, 1 gijonshiro.tk, 1 -gijotech.com, 1 gikovatelojavirtual.com.br, 1 gil.gg, 1 gilandrad.tk, 1 @@ -61885,8 +62049,8 @@ gilbert-schmalriede.de, 1 gilbertosimoni.tk, 1 gilbertsvilleny.gov, 1 gildan.com, 1 -gildeddesignstudio.com, 1 gildenhost.de, 1 +gildoafonso.com.br, 1 gileadpac.com, 1 gilescountytn.gov, 1 gilfed.com, 1 @@ -61911,12 +62075,10 @@ gilpincountydronepilot.com, 1 gilsanchez2009.com, 1 gilsum-nh.gov, 1 giltedge.travel, 1 -gilver.hu, 1 gim-app.tk, 1 gim.ac.in, 1 gimbal.ca, 1 gimme.money, 1 -gimmecalc.com, 1 gimmickbots.com, 1 gimmickmedia.de, 1 gimmix.lk, 1 @@ -61936,23 +62098,24 @@ ginepolice.gov, 1 ginesenergy.com, 1 ginev.tk, 1 gingerhomemaking.com, 1 +gingerray.co.uk, 1 gingerxumd.com, 1 ginionusedcars.be, 0 ginnegappen.nl, 1 ginniemae.gov, 1 -ginniskrathenlaw.com, 1 ginnungagap.space, 1 ginosfiredup.ca, 1 ginospizza.com, 1 gintaresdental.lt, 1 gintonic.tk, 1 ginv.us, 1 +ginx.tv, 1 ginza-arthall.com, 1 ginza-viola.com, 1 ginzaj.com, 1 giochistars.it, 1 giochistem.it, 1 -giocoso.dk, 1 +giocolive.com, 1 gioiellerialucchese.it, 1 gioielleriamolena.com, 1 gioielleriaregolini.it, 1 @@ -61965,7 +62128,6 @@ giorgi.us, 1 giorgia.tk, 1 giorgiogenaus.com, 1 giorgiosite.tk, 1 -giormo.com, 1 giornaledicardiologia.it, 1 giornalidea.it, 1 giornalisportivi.online, 1 @@ -61976,6 +62138,7 @@ giovannisantini.tk, 1 giovinco.tk, 1 gip-carif-idf.net, 1 gip-carif-idf.org, 1 +gipelpsb.fr, 1 giper.ga, 1 giperfast.tk, 1 gipernn.ru, 1 @@ -61983,6 +62146,7 @@ gipl.tk, 1 gippert-klein.de, 1 gipsplitka.ru, 1 gipuzkoabasket.tk, 1 +giraffe.net, 1 giraffeduck.com, 1 giraffenland.de, 1 giraffes.org, 1 @@ -61994,6 +62158,7 @@ giri.co, 1 girishkumar.tk, 1 girl.science, 1 girlan.net, 1 +girlandhermoon.com, 0 girlbaito.jp, 1 girlboss.ceo, 1 girlboss.systems, 1 @@ -62036,6 +62201,8 @@ gisauto.ru, 1 gisbornecabs.com.au, 1 giscadlimited.com, 1 gisellapiano.tk, 1 +gisher.me, 1 +gisher.news, 1 gisher.org, 1 gisher.video, 1 gishiko.net, 1 @@ -62070,19 +62237,20 @@ githubengineering.com, 1 githubindia.com, 1 githubnext.com, 1 giti.com.sg, 1 +gitlab-apps.com, 1 gitns.com, 1 gitns.dev, 1 gitns.io, 1 gitns.net, 1 gitns.nl, 1 gitns.org, 1 -gitring.com, 1 gitschberg-sport.it, 1 gitstuff.tk, 1 gittigidiyor.com, 1 gittr.ch, 1 gitvibe.com, 1 giuem.com, 1 +giuliabonati.com, 1 giuliano.design, 1 giuliawylde.com, 1 giulliamodas.com.br, 1 @@ -62094,13 +62262,13 @@ giusyesabatino.it, 1 givaudan.com, 1 give.net, 1 give2charity.co, 1 +give2charityapp.com, 1 giveasquare.com, 1 giveasquare.net, 1 giveasquare.org, 1 givecfc.org, 1 givedirect.org, 1 giveemhellbrigham.com, 1 -giveitagrowwigan.co.uk, 1 givelab.com, 1 givemeaverse.com, 1 givemebeer.tk, 1 @@ -62137,6 +62305,7 @@ gizlicekim.tk, 1 gizmo.ovh, 1 gizmodo.com, 1 gizmodo.in, 1 +gizmosforgeeks.com, 1 gj-bochum.de, 1 gj-cham.tk, 1 gjan.in, 1 @@ -62148,9 +62317,9 @@ gjengset.com, 1 gjenopptakelse.no, 1 gjensidige.no, 1 gjnoonan.co.uk, 1 -gjrick.tw, 1 gjung.com, 1 gk-it.ru, 1 +gkanev.com, 1 gkcmp.com.br, 1 gkconsultancy.tk, 1 gkdforum.eu.org, 1 @@ -62164,6 +62333,7 @@ gkmusicindia.tk, 1 gknews.tk, 1 gkoenig-innenausbau.de, 1 gkralik.eu, 1 +gkrru4v.xyz, 1 gkstyle.net, 0 gku-winterling.de, 1 gkv-gorinchem.nl, 1 @@ -62188,11 +62358,11 @@ gladstonemi.gov, 1 gladwellentertainments.co.uk, 1 gladwork.tk, 1 gladysstrickland.com, 1 -glaeser-it.de, 0 glaesle.cloud, 1 glahcks.com, 1 glama.ai, 1 glamadelaide.com.au, 1 +glamaya.com, 1 glami.com.tr, 1 glaminati.com, 1 glamoncall.com, 1 @@ -62211,7 +62381,6 @@ glanzodergarnicht.com, 0 glas-systeme.eu, 1 glascentro-gmbh.de, 1 glascentro.de, 1 -glasck.com, 1 glasdon.com, 1 glase.shop, 1 glaserceramics.com, 1 @@ -62226,7 +62395,6 @@ glass-blaster.com, 1 glass.fish, 1 glass.google.com, 1 glass.photo, 1 -glass24.pl, 1 glassact.com, 0 glasschmuck-millefiori.de, 1 glasscometro.com.au, 1 @@ -62248,6 +62416,7 @@ glassrom.org, 1 glassrom.pw, 1 glasssculpture.org, 1 glasstechnics.be, 1 +glasswall.com, 1 glassworld.tk, 1 glaston.com, 1 glastuershop24.de, 1 @@ -62258,6 +62427,7 @@ glauca.digital, 1 glauca.space, 1 glaucoma.uk, 1 glavred.info, 0 +glazedmag.fr, 1 glazkova.ga, 1 glbaumaulwurf.de, 1 glbins.com, 1 @@ -62295,7 +62465,7 @@ glenloabbeyhotel.ie, 1 glenmarieproperties.com, 0 glenmarkpharma.sk, 1 glenmorewisconsin.gov, 1 -glennfitzpatrick.com, 0 +glennfitzpatrick.com, 1 glennhamers.nl, 1 glenntrede.com, 0 glennvillega.gov, 1 @@ -62304,6 +62474,7 @@ glenshere.com, 1 glenwhitememorial.com, 1 glenwoodpark.com, 1 glesbymarks.com, 1 +gletschervergleiche.ch, 1 glevolution.com, 1 glexia.com, 1 glezmanz.eu, 1 @@ -62324,12 +62495,9 @@ glit.sh, 1 glitchcity.wiki, 1 glitchcomic.tk, 1 glitched.online, 1 -glitchtip.com, 1 -glitchworks.ch, 1 glitterblast.uk, 1 glitteringmariah.tk, 1 glitzerstuecke.de, 1 -gliwka.eu, 1 glixee.com, 1 glk.academy, 1 glleiloes.com.br, 1 @@ -62341,8 +62509,6 @@ global-content.net, 1 global-electronic-music.tk, 1 global-factory.co.jp, 1 global-fh.com, 1 -global-finanz.ag, 1 -global-inwest.com, 1 global-monitoring.com, 1 global-motherboard.com, 1 global-qanoon.gq, 1 @@ -62389,13 +62555,14 @@ globaldestruction.tk, 1 globaled.org.uk, 1 globalenergyinterconnection.com, 0 globalentertainment.ga, 1 +globalenv.online, 1 globalepsilon.com, 1 globalfaraday.com, 1 +globalflavorjourney.com, 1 globalformat.de, 1 globalfuhui.com, 1 globalgamingalmanac.com, 1 globalgaragesale.net, 1 -globalgassprings.com, 1 globalgate.cc, 1 globalgivingtime.com, 1 globalgovernancewatch.org, 1 @@ -62408,6 +62575,7 @@ globalhubb.ro, 1 globalind.com.au, 1 globalink.tk, 1 globalinvestorgate.com, 1 +globalios.net, 1 globalipaction.ch, 1 globalisierung-fakten.de, 1 globalitac.com, 1 @@ -62435,8 +62603,7 @@ globalpandemictools.com, 1 globalpediatriciansest.ga, 1 globalperspectivescanada.com, 1 globalpolarbear.com, 1 -globalpouchfactory.com, 0 -globalprivacyassembly.com, 1 +globalpouchfactory.com, 1 globalproduction.ga, 1 globalprojetores.com.br, 1 globalradio.tk, 1 @@ -62461,6 +62628,7 @@ globalspeed.tk, 1 globalstrategygroup.com, 1 globalstrike.tk, 1 globalthermoforming.com, 1 +globalthinktank.org, 1 globaltiendat.com, 1 globaltix.com, 1 globaltoner.gr, 1 @@ -62481,7 +62649,7 @@ globalwindsafety.org, 1 globalwire.fi, 1 globalzone.tk, 1 globalzonetoday.com, 1 -globaz.ch, 1 +globaz.ch, 0 globe-brasil.tk, 1 globe.gov, 1 globecollege.nl, 1 @@ -62507,7 +62675,7 @@ globifytalent.com, 1 globit.com.tr, 1 globoasiatico.com.ph, 1 globologic.com, 1 -globotech.be, 0 +globotech.be, 1 globotur.de, 1 globowood.ml, 1 globus-plus.ml, 1 @@ -62519,7 +62687,6 @@ glonee.live, 1 gloning.name, 1 glont.net, 1 gloomy.tk, 1 -gloow.nl, 1 glorenza.org, 1 gloria-mundi.eu, 1 gloria.fi, 1 @@ -62550,14 +62717,16 @@ glotter.com, 1 glotwpnjpd.gov, 1 gloucesterva.gov, 1 glovementor.com, 1 -glovitech.co.kr, 1 -glowcdn.com, 1 glowfic.com, 1 -glp1thailand.com, 1 glpreparation.com, 1 glreit.com, 1 glsauto.com, 1 gltjp.com, 1 +gluconote.net, 1 +gluconote.org, 1 +gluconotes.com, 1 +gluconotes.net, 1 +gluconotes.org, 1 glue.tk, 1 gluechapter.ga, 1 glueck-im-norden.de, 1 @@ -62568,6 +62737,7 @@ gluek.info, 1 glueup.com, 1 gluglu.jp, 1 gluit.de, 1 +glumac.com, 1 glumcasaepet.com.br, 1 glutenfree.it, 1 glutenfreehomemaker.com, 1 @@ -62595,10 +62765,12 @@ gm.search.yahoo.com, 0 gm207.com, 0 gm5.com.br, 1 gmaetk.com, 1 +gmageorgia.com, 1 gmail, 1 gmail.com, 0 gman.bot, 1 gmanlabs.com, 1 +gmao.com, 1 gmasil.de, 1 gmatic.info, 1 gmavsg.org, 1 @@ -62622,6 +62794,7 @@ gml4d2.ml, 1 gmmb.com, 1 gmo-cybersecurity.com, 1 gmoadvocacia.com.br, 1 +gmod.de, 1 gmopconsortium.org, 1 gmpark.dk, 1 gmpartsdb.com, 1 @@ -62673,6 +62846,7 @@ gnomon-transport.com.ng, 1 gnosco.net, 1 gnosis.bg, 1 gnrinfo.tk, 1 +gns.gov.pt, 1 gns3.com, 1 gnu.style, 1 gnuand.me, 1 @@ -62711,13 +62885,11 @@ go.eco, 1 go.exchange, 1 go.microsoft.com, 1 go.ne, 1 -go2alhambra.com, 1 go2archive.nl, 1 go2mob.tk, 1 go2sh.de, 1 go2ubl.nl, 1 go4games.ro, 0 -go4it.fr, 1 go4it.ro, 0 go4rest.de, 1 go5.io, 1 @@ -62726,8 +62898,8 @@ go6lab.si, 0 go889w.com, 1 goabase.com, 1 goabase.net, 1 +goabonga.com, 1 goaddress.co.ke, 1 -goagu.top, 1 goaheadireland.ie, 1 goalgrass.com, 1 goalswizard.com, 1 @@ -62749,11 +62921,12 @@ gobeline.com, 1 gobetweenfilms.com, 1 gobi.tk, 1 gobiernousa.gov, 1 -goblacksheep.io, 1 goblintears.com, 1 gobookmart.com, 1 gobouncy.co.uk, 1 gobouncy.com, 1 +gobox.pt, 1 +gobsn.com, 1 gobus.ee, 1 gobytedesign.uk, 1 gocar.ie, 1 @@ -62778,6 +62951,7 @@ god-clan.hu, 1 godalivetpalandet.tk, 1 godall.tk, 1 godan.tech, 1 +godanriver.com, 1 godark.uk, 1 godating.tk, 1 godaxen.tv, 1 @@ -62808,7 +62982,6 @@ godrealms.com, 0 godreamcast.com, 1 godrive.ga, 1 godruoyi.com, 1 -godsmercybookshop.com, 1 godsofhell.com, 1 godsofhell.de, 1 godsowncountry.tk, 1 @@ -62833,7 +63006,6 @@ goedkope-scooterverzekeringen.nl, 1 goedkopecartridgeskopen.nl, 1 goedkopeonesies.nl, 1 goedkopetonerkopen.nl, 1 -goedkopewaterontharders.nl, 1 goehler-baumpflege.de, 1 goeikan.life, 1 goenea.com, 1 @@ -62849,12 +63021,12 @@ goethe-quartier-heidelberg.de, 1 goetheschule-giessen.de, 1 goetic.space, 1 goettinger-katzenschutz.de, 1 -goexam.net, 0 +goetzinger-web.de, 1 gofabcnc.com, 1 gofelix.de, 1 -goffertpraat.nl, 1 gofigure.fr, 0 gofile.link, 1 +gofin.fr, 1 goflix.cf, 1 goflo.net, 1 gofobo.com, 1 @@ -62863,10 +63035,8 @@ gofoodieonline.com, 1 gofoodservice.com, 1 goforcex.top, 0 gofriends.cf, 1 -gofuel.ae, 1 gofundhourly.tk, 1 gofundme.com, 1 -gogalactic.ai, 1 goge.ml, 1 gogebic.gov, 1 gogetssl.com, 0 @@ -62895,13 +63065,12 @@ gohyer.com, 1 going-dutch.tk, 1 going.com, 1 goingawesomeplaces.com, 1 -goingbeyondsunday.com, 1 -goingblack.org, 1 goinggreenshow.gq, 1 -goingnz.com, 1 goingreen.com.au, 1 goirlanda.es, 1 +goiymua.com, 1 goizalde.tk, 1 +gojilabs.com, 1 gojpt.com, 1 gokaygurcan.com, 1 gokazakhstan.com, 1 @@ -62910,6 +63079,7 @@ gokgids.nl, 1 gokhankesici.com, 1 gokkastenstip.nl, 1 gokmenguresci.com, 1 +gokon.se, 0 goksu.in, 1 goktoday.com, 1 gokyrgyzstan.com, 1 @@ -62933,7 +63103,6 @@ goldclubcasino.com, 1 goldcoast-plumbing.com.au, 1 goldcoastasian.com, 1 goldcoastit.com.au, 1 -goldcoastpersonaltrainers.com, 1 goldcoastphotographycourses.com, 1 goldcreek.tk, 1 golddealer.com, 1 @@ -62973,7 +63142,6 @@ goldenruleemail.com, 1 goldenshiny.com, 1 goldenstatetrailers.com, 1 goldensunmfg.com, 1 -goldenswordllc.com, 1 goldentech.ca, 1 goldentechelectronics.net, 1 goldentip.cf, 1 @@ -62999,7 +63167,6 @@ goldloeckchen159.net, 1 goldmanpropertygroup.com, 1 goldminer.ga, 1 goldongrandsalon.com, 1 -goldonline.vn, 1 goldpreisfinder.at, 1 goldratex.com, 1 goldregen.net, 1 @@ -63028,7 +63195,6 @@ golezi.com, 1 golf-alto-adige.com, 1 golf-course-database.com, 1 golf-supplies.tk, 1 -golf-werbeartikel.de, 1 golfandfashion.dk, 0 golfasian.com, 1 golfbeautyers.ga, 1 @@ -63060,12 +63226,12 @@ golfscape.com, 1 golfshirtsjohannesburg.co.za, 1 golfshirtwholesalejohannesburg.co.za, 1 golftournamentgifts.tk, 1 -golfturkey.com, 1 +golfwithdiscs.com, 0 goliamo-vranovo.com, 1 golikes.ml, 1 golink.co, 0 golkowreporters.com, 1 -golnet.hu, 0 +golnet.hu, 1 goloa.fr, 1 goloaninsurance.tk, 1 goloborodko.net, 1 @@ -63077,6 +63243,7 @@ golser-schuh.at, 1 golser.info, 1 gomadisonfence.com, 1 gomagic.org, 1 +gomarket33.com, 1 gomasa.net, 1 gomasy.jp, 1 gomasy.net, 1 @@ -63094,7 +63261,6 @@ gomezites.tk, 1 gomicrophone.ml, 1 gomine.tk, 1 gomiso.com, 1 -gommers.org, 1 gommista.roma.it, 1 gomods.link, 1 gomoon.com, 1 @@ -63114,18 +63280,17 @@ gondawa.com, 1 gondon.tk, 1 gonebald.tk, 1 gonegocio.net, 1 +gonenli.com, 1 gonepal.com, 1 gonerogue.ml, 1 -gonet.at, 1 gonfiabili.roma.it, 1 +gong.io, 1 gongik.info, 1 gongjuhao.com, 1 gongyouhui.com, 1 gonitro.com, 0 gonoodle.com, 1 gonortheast.co.uk, 1 -gontagro.com.ua, 1 -gontter.com, 1 gonulyoluturizm.com.tr, 1 gonumber.ga, 1 gonvarri.com, 1 @@ -63142,27 +63307,26 @@ good-linux.cf, 1 good-luck3500.ga, 1 good-wishes-4-u.ga, 1 gooday.life, 1 -goodbalancefeature.com, 1 goodbeast.com, 1 goodbits.tech, 1 goodbriar.com, 1 goodchoiceflowers.com, 1 gooddatingsites.ml, 1 gooddayatwork.co.uk, 1 -gooddomain.co, 1 gooddomain.com, 1 gooddomainna.me, 1 goodearth.com.tw, 1 goodees.com, 1 goodenglish.ga, 1 goodesign.su, 1 +goodfarms.com, 1 goodfeatherfarms.com, 1 goodfeels.net, 1 -goodfolks.ai, 1 goodfoodrussia.com, 1 goodfundsgateway.com, 1 goodgame.ruhr, 1 goodhealthgateway.com, 1 +goodhotel.co, 1 goodhuecountymn.gov, 1 goodiesnet.ca, 0 goodiespub.fr, 1 @@ -63170,7 +63334,6 @@ goodingcountyid.gov, 1 goodjobs.gov, 1 goodkino.ga, 1 goodlandks.gov, 1 -goodlife-app.com, 1 goodlife.co.ke, 1 goodlink.ml, 1 goodlosersest.ga, 1 @@ -63187,6 +63350,7 @@ goodryb.top, 1 goodseed.nl, 1 goodsex4all.com.br, 1 goodsey.com, 1 +goodsfox.com, 1 goodshepherdmv.com, 1 goodshuffle.com, 1 goodsite.ga, 1 @@ -63197,7 +63361,6 @@ goodsync.com, 1 goodtasteofhome.com, 1 goodtea.com, 1 goodth.ink, 1 -goodtls.com, 1 goodtotell.nl, 1 goodtrader.tk, 1 goodtrip.kr, 1 @@ -63208,7 +63371,6 @@ goodwillindy.org, 1 goodwillnfp.org, 1 goodwillnne.org, 1 goodwin43.ru, 0 -goodybalt.ru, 1 goodydoggy.com, 1 goodyearsotn.co.uk, 1 goofy.gr, 1 @@ -63237,6 +63399,7 @@ goombi.fr, 1 goon.university, 1 goondocks.io, 1 goonersworld.co.uk, 1 +goontu.be, 1 gooodnews.ga, 1 goooo.info, 1 goorm.io, 1 @@ -63256,6 +63419,7 @@ gopass-dev.com, 1 gopass.health, 1 gopher.tk, 1 gopherdata.net, 1 +gophersland.com, 1 gophoto.it, 1 gophouse.org, 1 gopigment.com, 1 @@ -63285,7 +63449,6 @@ gorchakov.org, 1 gordas.cf, 1 gordeijnsbouw.nl, 1 gordianbla.de, 0 -gordillo.legal, 1 gordion.tk, 1 gordon-reid.com, 1 gordonbeeming.com, 1 @@ -63309,6 +63472,7 @@ gorgias.me, 1 goriki.tk, 1 gorillacamping.site, 1 gorillaenergy.ru, 1 +gorinchem.nl, 1 goringdogsitting.co.uk, 1 gorki.tk, 1 gorlani.com, 1 @@ -63350,6 +63514,7 @@ gosch.de, 1 gosekku.com, 1 gosemo.com, 1 goshawkdb.io, 1 +goshen.network, 1 goshiba.pl, 1 goshin-group.co.jp, 1 goshippingcargo.com, 1 @@ -63357,18 +63522,18 @@ goshop.pl, 1 goshopnow.co.za, 1 goshrink.ca, 1 gosifa.com, 1 -gosifan.com, 0 +gosimpler.com, 1 goskey.ru, 1 goskills.com, 1 gosling-gov.tk, 1 gosling-mod.tk, 1 +goslot.com, 1 gosms.ai, 1 gosolockpicks.com, 1 gospelcologne.de, 1 gospeldesign.tk, 1 gospelidea.com, 1 gospellifewc.com, 1 -gospelmusicstreams.com, 1 gospelofthekingdom.com, 1 gospelstreamingsermons.com, 1 gospelunited.tk, 1 @@ -63380,14 +63545,12 @@ gospiritus.com, 1 gosq.co, 1 gosq.com, 1 gossiptimes.tk, 1 -gossweiler.com, 0 gost-energo.ru, 1 gostargazer.com, 1 gostargazing.co.uk, 1 gostartkit.com, 1 gostatera.com, 1 gosti-dom.ga, 1 -gostonleiloes.lel.br, 1 gosu.pro, 1 gosupps.com, 1 goswak.com, 1 @@ -63423,11 +63586,11 @@ gotmilk.ml, 1 gotnet.tk, 1 goto.google.com, 1 goto.pm, 1 +goto.world, 1 goto10.se, 1 gotobooks.ml, 1 gotobrno.cz, 1 gotobus.com, 1 -gotocme.com, 1 gotoexam.tk, 1 gotohomerepair.com, 1 gotolinux.ru, 1 @@ -63478,7 +63641,6 @@ gourmetfestival.de, 1 gourmetspalencia.com, 1 gourmetstars.cz, 1 gourmetvitamins.ga, 1 -gourmetwitch.org, 1 gousto.co.uk, 1 goutsmits-tegelwerken.nl, 1 gouwdata.nl, 0 @@ -63489,9 +63651,11 @@ gov.ky, 1 gov.md, 1 gov.tc, 1 gov.uk, 0 +govalidation.net, 1 govape.tk, 1 govars.com, 1 govecountyks.gov, 1 +governikus.de, 1 governmentjob.gq, 1 governmentjobs.gov, 1 governmentphoneservice.com, 1 @@ -63510,14 +63674,12 @@ govotecolorado.gov, 1 govotetn.gov, 1 govquarter.gq, 1 govsales.gov, 1 -govsentinel.com.br, 1 govtjobs.blog, 1 -govtjobweb.com, 1 govtrack.us, 1 govvacationrewards.com, 1 govype.com, 1 gow220.ru, 1 -gowalk.de, 1 +gowager.co.uk, 1 gowancommunications.com, 1 gowanusbooks.com, 1 gowatermarkdesign.com, 1 @@ -63528,7 +63690,7 @@ gowifmi.com, 1 gowildrodeo.co.uk, 1 gowin.ae, 1 gowithflo.de, 1 -gowlingwlg.com, 1 +gowlingwlg.com, 0 goworld.gq, 1 gowpcare.com, 1 gowv.com, 1 @@ -63539,13 +63701,14 @@ goz.tr, 1 gp-engineering.se, 1 gp-lightstone.de, 1 gpalabs.com, 1 +gpatrading.com, 1 gpbdev.ru, 1 -gpc.work, 1 -gpccp.cc, 0 +gpccp.cc, 1 gpcmicro.com, 1 gpcp.org, 1 gpcs.ml, 1 gpcsolutions.fr, 0 +gpdifreshlife.church, 1 gpdp.it, 0 gpfclan.de, 1 gpforum.tk, 1 @@ -63625,7 +63788,7 @@ gracedonors.co.za, 1 gracedonors.com, 1 gracefuljourneys.ca, 1 graceharborapps.net, 1 -gracehousecall.ae, 1 +gracehousecall.ae, 0 gracelawoffice.com, 1 graceradio.tk, 1 gracereminder.com, 1 @@ -63645,6 +63808,7 @@ gradients.com, 1 gradinacufluturi.ro, 1 gradinarit.com, 1 gradingcontractornc.com, 1 +gradinitasamariteanulcluj.ro, 1 gradintel.com, 1 gradle.com, 1 gradle.org, 1 @@ -63660,6 +63824,7 @@ graetreport.com, 1 graf-igor.ch, 1 graf.re, 1 grafana.com, 1 +grafcaps.com, 1 grafenberg.tk, 1 graffiti-street-art-ebook.tk, 1 graffitinetwerk.nl, 1 @@ -63691,12 +63856,11 @@ graham88.net, 1 grahambaggett.com, 1 grahambaker.ca, 1 grahamcarruthers.co.za, 1 -grahamcluley.com, 1 +grahamcluley.com, 0 grahamedgecombe.com, 1 grahamfamilydentalwy.com, 0 grahamleeonline.com, 1 grahamsmith.tech, 1 -grahamstevenson.me.uk, 1 graide.io, 1 grailians.com, 1 grailify.com, 1 @@ -63705,6 +63869,7 @@ grain-staging.co, 0 grain.com, 0 graine-de-cafe.com, 1 graingert.co.uk, 1 +graliv.net, 0 grallersdegegants.tk, 1 grama.pro, 1 gramati.com.br, 1 @@ -63716,8 +63881,7 @@ gramlee.com, 1 grammar.hu, 1 grammarcheck.net, 1 grammarhouse.me, 0 -grammaroftheshot.com, 1 -grammofono.gr, 1 +grammofono.gr, 0 grampage.ru, 1 gramtarang.org.in, 1 gran-hermano.tk, 1 @@ -63752,7 +63916,6 @@ grandchutewi.gov, 1 grandcountydronepilot.com, 1 grande-rock.tk, 1 grande.coffee, 1 -grandeapp.com, 1 grandesmaisons.fr, 1 grandfallscamp.com, 1 grandfieldok.gov, 1 @@ -63770,7 +63933,6 @@ grandmarine.es, 1 grandmasfridge.org, 0 grandmasternetwork.com, 1 grandmusiccentral.com.au, 1 -grandoaksevent.com, 1 grandpachy.tk, 1 grandpad.biz, 1 grandpad.net, 1 @@ -63801,6 +63963,7 @@ granitebaydermatologyandlaser.com, 1 graniteclub.com, 1 graniteescrow.com, 1 granitehillcapital.com, 1 +graniteind.com, 1 granitestateproductions.tk, 1 granitko.ru, 1 grannynude.tv, 1 @@ -63814,8 +63977,10 @@ grannytube.tv, 1 grannytubes.com, 1 granool.ga, 1 granotamaniacos.tk, 1 +granplaza.eu, 1 granpoder-islacristina.tk, 1 gransfors354.com, 1 +granstoqueatacadista.com.br, 1 granstor.com, 0 granstrom.tk, 1 grantadvisor.org, 1 @@ -63867,6 +64032,8 @@ graphiteconnect.com, 1 grapholio.net, 1 graphpaper.studio, 1 graphviewer.tk, 1 +graphy.com, 1 +grapplinginsider.com, 1 grasboom35plus.nl, 1 grasdealer.com, 1 grasengroenkunstgras.nl, 1 @@ -63874,9 +64041,10 @@ grasmark.com, 1 grasp24.pl, 1 grasrijk.tk, 1 grass-haus.de, 1 -grass.markets, 1 grassau.com, 1 grassberry.in, 1 +grasscity.com, 0 +grassenberg.de, 1 grasshoppervape.com, 1 grasski.net, 0 grasslaketownship.gov, 1 @@ -63925,26 +64093,27 @@ gravitational.io, 1 gravitechthai.com, 1 gravitlauncher.ml, 1 graviton.work, 1 +gravity-bonanza.org, 1 gravity-inc.net, 1 gravityformspdfextended.com, 1 gravityinvestments.com, 1 gravitylab.fr, 0 gravityledger.com, 1 -gravitynode.ovh, 1 gravitypdf.com, 1 gravityresearchgroup.cf, 1 gravityresearchgroup.ga, 1 gravityresearchgroup.gq, 1 gravityresearchgroup.tk, 1 +gravityroofingcontractors.in, 1 gravytrain.tk, 1 +grawe-blog.at, 1 gray.network, 1 grayarrow.com, 1 graycat.ml, 1 -graydaze.com, 0 +graydaze.com, 1 grayduck.mn, 1 grayhatter.com, 1 grayingrainbows.com, 1 -graymatter.ch, 1 graymatter.news, 1 grayowlworks.com, 1 grayphics.com, 1 @@ -63974,6 +64143,8 @@ great-mom.tk, 1 great.nagoya, 1 greatagain.gov, 1 greataltrock.tk, 1 +greatamericaneu.com, 1 +greatamericanuk.com, 1 greatbarrierisland.nz, 1 greatbarriers.com.au, 1 greatdane.com, 1 @@ -63982,7 +64153,6 @@ greatdayinamerica.com, 1 greatepier.tk, 1 greater.nl, 0 greatergoods.com, 1 -greaterhawaiitours.com, 1 greatertalent.com, 1 greaterthanthesum.com, 1 greaterzion.com, 1 @@ -63994,8 +64164,10 @@ greatgiftidea.com, 1 greatgooglymoogly.tk, 1 greathairtransplants.com, 1 greathillpartners.com, 1 +greatlakelocksmiths.co.nz, 1 greatlakesdatastream.ca, 1 greatlakesden.net, 1 +greatlakesnow.org, 1 greatlakesstone.com, 1 greatlakestechdiving.com, 1 greatlearning.in, 1 @@ -64020,12 +64192,11 @@ greatsurfersers.ga, 1 greatsurfersest.ga, 1 greatvacation.tk, 1 greatwalluae.com, 1 -greatwaterfilters.com.au, 0 +greatwaterfilters.com.au, 1 greatwebdesign.uk, 1 grechutaszkolenia.pl, 1 greciahora.com, 1 greditsoft.com, 1 -gredor.se, 1 greeblehaus.com, 1 greece-moments.com, 1 greedy-it.de, 1 @@ -64042,6 +64213,7 @@ green-anarchy.tk, 1 green-aura.ru, 0 green-bicycle.club, 1 green-clean.at, 1 +green-cross.pro, 1 green-factory.gq, 1 green-factory.ml, 1 green-finance.fr, 1 @@ -64062,13 +64234,11 @@ green1052.com, 1 greenangels.com.ua, 1 greenartistsswiss.ch, 0 greenassembly.fr, 1 -greenband.com.au, 1 greenbat57.fr, 1 greenbaytechsupport.com, 1 greenbrickgroup.com, 1 greenburghny.gov, 1 greencapital.gent, 1 -greencarbon.kr, 1 greencbd.com, 1 greencocktail.ga, 1 greencoconutresort.cf, 1 @@ -64133,11 +64303,13 @@ greenmaquinas.com.br, 1 greenmesg.org, 1 greenmind.tk, 1 greenmoon.tk, 1 -greenmountainenergy.com, 0 +greenmountainenergy.com, 1 +greenmountaingreenwalls.com, 1 greenoakscc.com, 1 greenopedia.com, 1 greenopeningsers.ga, 1 greenopeningsest.ga, 1 +greenpal.jp, 1 greenpanda.de, 1 greenparkgroup.ca, 1 greenpartyofnewmilford.org, 1 @@ -64151,12 +64323,12 @@ greenrushdaily.com, 1 greensad36.ru, 1 greensboro.com, 1 greensborocc.org, 1 -greensborosecuritycameras.com, 1 greensborovt.gov, 1 greenscreenportal.com, 1 greenseo.org, 1 greensidevetpractice.co.uk, 1 greensilllatam.com, 1 +greensmartplanet.my, 1 greensofthestoneage.com, 1 greenspace.expert, 1 greensph.tk, 1 @@ -64185,7 +64357,6 @@ greenwaylog.net, 1 greenwhitearmy.tk, 1 greenwichbiosciences-influence-beta.azurewebsites.net, 1 greenwichentertainment.com, 1 -greenwichfirst.com, 1 greenwichvillage.nyc, 0 greenwiki.ca, 1 greenwithdecor.com, 1 @@ -64193,11 +64364,11 @@ greenwood-it.co.uk, 1 greenwoodne.gov, 1 greenwoodny.gov, 1 greenwoodtwpcrawfordpa.gov, 1 -greenypitch.com, 1 greenytimes.com, 1 greenyway.com, 1 greenzved.tk, 1 greer.ru, 1 +greetica.com, 1 greetingcdsers.ga, 1 greetingcdsest.ga, 1 greg-gaar.com, 1 @@ -64213,7 +64384,7 @@ gregmartyn.com, 1 gregmarziomedia.co.za, 1 gregmarziomedia.com, 1 gregmc.ru, 1 -gregmckeown.com, 0 +gregmckeown.com, 1 gregmilton.com, 1 gregmote.com, 1 grego.pt, 1 @@ -64231,6 +64402,7 @@ gregoryrealestategroup.com, 1 gregorywiest.com, 1 gregpierson.com, 0 gregproffit.com, 1 +gregtutors.com, 1 greizer.tk, 1 grekiskagudar.tk, 1 grekos.com.pl, 1 @@ -64255,6 +64427,7 @@ grepable.com, 1 grepular.com, 1 gresak.io, 0 greshamhistorical.org, 1 +gresik.info, 1 gresrewop.ca, 1 gresrewop.com, 1 greta-birkner.de, 1 @@ -64280,7 +64453,7 @@ greymouthkiwi.co.nz, 1 greymuzzlemanor.org, 1 greypanel.com, 1 greyrectangle.com, 1 -greyrockgroup.co.uk, 1 +greyscale.zone, 1 greyskymedia.com, 1 greysolonballroom.com, 1 greystonesmovement.com, 1 @@ -64307,6 +64480,7 @@ gridgames.tk, 1 gridgroup.com.tr, 1 gridsmartercities.com, 1 gridspace.ca, 1 +gridtennis.net, 1 gridvis.cloud, 1 griechische-pfoetchen.de, 1 griefheart.com, 1 @@ -64314,6 +64488,7 @@ grieg-gaarden.no, 1 grieg.net, 1 grieg.no, 1 grieg.org, 1 +griegshipbrokers.no, 1 griendencollege.tk, 1 grienenberger.eu, 1 griesser2.de, 1 @@ -64321,6 +64496,7 @@ griffin.com, 1 griffinguthrie.com, 1 griffinsrfc.tk, 1 griffithobs.org, 1 +griffithobservatory.org, 1 griffonwise.com, 1 griffophotography.tk, 1 grifomarchetti.com, 1 @@ -64331,7 +64507,7 @@ grigo.tk, 1 grigorev.tk, 1 grijalba.tk, 1 grijpskerk500.tk, 1 -grilehub.ro, 0 +grilehub.ro, 1 grillboxtaxi.de, 1 grillen-darf-nicht-gesund-sein.de, 1 grillfocused.com, 1 @@ -64346,7 +64522,6 @@ grimorium.tk, 1 grimsbydns.com, 1 grimsbymoneyman.com, 1 grimsbysoilandmulch.ca, 1 -grindau.com, 1 grinday.tk, 1 grindgore.tk, 1 grinmore.com, 1 @@ -64377,7 +64552,6 @@ grnbank.com, 1 groaccess.com, 1 groben-itsolutions.de, 1 grocerytv.com, 1 -grochow.cloudns.org, 1 grockradio.ga, 1 grocock.me.uk, 1 grocy.info, 1 @@ -64403,9 +64577,9 @@ grolleau.fr, 1 gromasikov.tk, 1 gromman.com, 1 gromovphotography.tk, 1 +grondius.com, 1 grondwerkencooreman.be, 1 groningerkustvaart.tk, 1 -gronngronn.no, 1 groomershop.ru, 0 groomlake.tk, 1 groomscroft.co.uk, 1 @@ -64413,7 +64587,6 @@ groomscroft.com, 1 grooove.pl, 1 groothagenbeek.nl, 1 grootinadvies.nl, 1 -grootmoederswijze.be, 1 groottuighuis.nl, 1 groove3.com, 1 grooveguard.tk, 1 @@ -64444,6 +64617,7 @@ grothem.cf, 1 grothem.gq, 1 grothoff.org, 1 grottenthaler.eu, 1 +grouchysysadmin.com, 1 ground-control.de, 1 groundball.tk, 1 groundcaresolutionsllc.com, 1 @@ -64453,6 +64627,7 @@ groundmc.net, 1 groundsdirect.com, 1 groundspan.com, 1 groundthumpinmotors.com, 1 +group-digitcom.com, 1 group14.technology, 1 group4layers.net, 1 groupama.hu, 1 @@ -64462,6 +64637,7 @@ groupdcc.com, 0 groupe-accedia.org, 1 groupe-cassous.com, 1 groupe-goddi.com, 1 +groupe-neurologique-nord.lu, 0 groupe-optimum.com, 1 groupe-seche.com, 1 groupeaccedia.biz, 1 @@ -64479,7 +64655,7 @@ groupeh4.com, 1 groupeleriverain.com, 1 groupeleven.com, 0 groupensd.com, 1 -groupeperrier.com, 0 +groupeperrier.com, 1 grouperacinecotedesbar.fr, 1 groupescr.fr, 0 groupghistelinck-cars.be, 1 @@ -64489,6 +64665,7 @@ groupmallers.ga, 1 groupmallest.ga, 1 groupme.com, 0 groupml.jp, 1 +groupouts.com, 1 grouppassers.ga, 1 groups.google.com, 1 groupsgyani.com, 0 @@ -64518,7 +64695,6 @@ growebmarketing.com, 0 growery.org, 1 growglam.com, 1 growidentity.com, 1 -growin.com, 1 growingallthings.co.uk, 1 growinghumankindness.com, 1 growinguncomfortable.com, 1 @@ -64526,8 +64702,10 @@ growitsecure.com, 1 growledlamp.fr, 1 growme.gq, 1 growth-rocket.com, 1 +growth.design, 1 growthagent.com, 1 growthandrenewal.ca, 1 +growthauction.com, 1 growthbutton.in, 1 growthlab.com.my, 1 growthoutpatient.com, 1 @@ -64536,8 +64714,7 @@ growthservicesinc.com, 0 growthsimulationest.ga, 1 growthtoysers.ga, 1 growthtoysest.ga, 1 -growthwheel.net, 1 -growy.ch, 1 +growy.ch, 0 grozdanov.tk, 1 grozny-news.net, 1 grozter.se, 1 @@ -64579,12 +64756,10 @@ grumpy.fr, 1 grumpygamers.com, 1 grumpyguy.ga, 1 grumpyvegan.com, 1 -grunammgames.com, 1 -grunammgames.de, 1 grundig.co.uk, 1 grundlage.fi, 1 -grundlagen-computer.de, 1 grundrauschen-publishing.de, 1 +grundrauschen.pub, 1 grundschulratgeber.de, 1 grundskoleboken.ga, 1 grundskoleboken.gq, 1 @@ -64595,6 +64770,7 @@ grunion.tk, 1 grunlab.net, 1 grunttoziemia.pl, 1 grunwaldzki.center, 1 +grunwasser.fr, 1 grupatvogzivota.tk, 1 grupcarles.com, 1 grupdedansa.tk, 1 @@ -64617,16 +64793,15 @@ grupoenelcolombia.com, 1 grupoentregas.com, 1 grupoeurodesign.com, 1 grupofarmavip.pt, 1 +grupoharbour.com, 1 grupoice.com, 1 grupoicp.pt, 1 grupoimb.pt, 1 grupoiwana.tk, 1 grupokls.com, 1 grupolegalsgf.com, 1 -grupolmsvisao.com.br, 1 grupomacroex.com, 1 grupomanquecura.tk, 1 -grupomazzucco.com, 1 grupomedlegal.com, 1 grupomfn.com.br, 1 grupomonti.com.ar, 1 @@ -64637,11 +64812,11 @@ grupoparco.com, 1 grupopilau.com.br, 1 grupoproabienesraices.com.mx, 1 grupopronto.com.br, 1 -gruporecovery.com, 1 gruporesult.com.br, 1 grupos.cf, 1 gruposanjose.tk, 1 gruposousa.pt, 1 +grupotorivac.com, 1 grupovendap.com, 1 grupovisabeira.com, 1 gruppa.ml, 1 @@ -64650,7 +64825,7 @@ gruppakolibri.ml, 1 gruppe-casablanca.tk, 1 gruppe.schwarz, 1 grupporigoni.com, 1 -grupposanmarco.eu, 1 +grupposanmarco.eu, 0 grupposiciliaviola.tk, 1 gruppotac.com, 1 gruppouna.it, 1 @@ -64658,7 +64833,7 @@ grupxaloc.cat, 0 grurez.com, 1 gruslic.org.mx, 1 gruveo.com, 1 -gruver.de, 0 +gruver.de, 1 gruzchiki.ml, 1 gruzchiki74.tk, 1 gruzinfo.tk, 1 @@ -64673,6 +64848,7 @@ gryphzia.cf, 1 gryte.tk, 1 grzegorzchomutowski.pl, 1 gs-pflege.de, 1 +gs-schlossberg.de, 1 gs1.hk, 1 gs93.de, 1 gsa-online.de, 1 @@ -64686,6 +64862,7 @@ gsatest2.gov, 1 gsaxcess.gov, 1 gsbazzi.com, 1 gschissane.autos, 1 +gschwend.de, 1 gscloud.xyz, 1 gscpaudit.org.uk, 1 gsd.id, 1 @@ -64695,7 +64872,7 @@ gse.jp, 1 gservera.com, 1 gsfreak.pt, 1 gshoes.bg, 1 -gshub.io, 0 +gshub.io, 1 gsilva.org, 1 gsimagebank.co.uk, 1 gslabnet.org, 1 @@ -64703,7 +64880,6 @@ gslate.com, 0 gslb.co, 1 gsm-info.tk, 1 gsmbrick.com, 1 -gsmface.hu, 1 gsmkungen.com, 1 gsmmedia.tk, 1 gsmsale.nl, 1 @@ -64711,14 +64887,12 @@ gsmsolutions.co.rs, 1 gsmtool.tk, 1 gsmvermist.tk, 1 gsp.com, 1 -gspann.com, 1 -gspcreations.com, 1 gspilar.tk, 1 gsplast.com, 1 gsrank.org, 1 gsrc.io, 1 +gss.ind.br, 1 gstackrankers.com, 1 -gstcalc.nz, 1 gstehlik.com, 1 gstrans.bg, 1 gsv.dk, 1 @@ -64726,7 +64900,7 @@ gswar.com, 1 gsys.biz, 1 gt-himmel.com, 1 gt-ps.ru, 1 -gt.ax, 1 +gt14.com, 1 gt14.com.br, 1 gta-arabs.com, 1 gta.to, 1 @@ -64743,16 +64917,14 @@ gtanalytics.com, 1 gtapg.net, 1 gtb-nsn.gov, 1 gtbeyes.com, 1 -gtc-ltd.eu, 1 +gtbgames.com, 1 gtconline.com, 1 gtconsult.com, 1 gtcountymi.gov, 1 gtcprojects.com, 0 gtd.cloud, 1 gtdnordic.fi, 1 -gtecnophone.com, 1 gtestepourvous.fr, 1 -gtettemer.com, 1 gti.cx, 1 gtk-tim.ru, 1 gtlaun.ch, 0 @@ -64760,7 +64932,7 @@ gtld.fyi, 1 gtm-server.com, 1 gtm.com.pl, 1 gtmetrix.com, 1 -gtmops.fr, 1 +gtmhosting.net, 1 gtmotive.com, 1 gtn-pravda.ru, 1 gtonline.ml, 1 @@ -64770,24 +64942,13 @@ gtrebike.com.br, 1 gtrtc.com, 1 gtrwebdesign.nl, 0 gts-tradgard.se, 1 -gts-varmepumpar.se, 0 +gts-varmepumpar.se, 1 gts.org, 1 gtsb.io, 1 gtslotcars.com, 1 gtsoftware.gr, 1 +gttnews.com, 1 gtupgrade.eu, 1 -gtw0.africa, 1 -gtw0.asia, 1 -gtw0.cl, 1 -gtw0.com, 1 -gtw0.cz, 1 -gtw0.eu, 1 -gtw0.ke, 1 -gtw0.mx, 1 -gtw0.net, 1 -gtw0.nz, 1 -gtw0.org, 1 -gtw0.tw, 1 gtwaction.org, 1 gtxmail.de, 1 gtxthere.tk, 1 @@ -64820,7 +64981,6 @@ guardando.tk, 1 guardedbox.com, 1 guardedbox.es, 1 guarderiajackson.tk, 1 -guardfos.com, 1 guardiabermellon.tk, 1 guardian-codex.tk, 1 guardian-heliotrope.tk, 1 @@ -64832,14 +64992,13 @@ guardiancappartners.com, 1 guardiancodewebservices.com, 1 guardiandigital.com, 1 guardianerm.net, 1 -guardianexercise.com.au, 1 guardiansiot.ddns.net, 1 +guardiantransmissions.com, 1 guardiapretoriana.tk, 1 guarever.tk, 1 guarrato.tk, 1 guategmala.ga, 1 guateradio.tk, 1 -guatx.com, 1 guatzessen.at, 1 guayaquil-consort.tk, 1 gubagoo.com, 1 @@ -64848,6 +65007,7 @@ gubernia37.ml, 1 gubka.ga, 1 guc.ci, 1 guccigame.de, 1 +gudangpangan.id, 1 gudao.com, 1 gudbrand.no, 1 guddaff.de, 1 @@ -64870,7 +65030,6 @@ guelphcondopros.com, 1 guelphhydropool.com, 1 guendra.dedyn.io, 1 guenstiger-it-support.ch, 1 -guenstiger-strom.net, 1 guenther-freitag.tk, 1 guenthereder.at, 1 guerande-cosmetiques.com, 1 @@ -64886,6 +65045,7 @@ guerrasgalacticas.tk, 1 guerrilla-marketing.cf, 1 guerrillaradio.tk, 1 guerrillas.tk, 1 +guesanelectronics.com, 1 guesclin.com, 1 guessmatch.com, 1 guestandmore.de, 1 @@ -64932,7 +65092,6 @@ guiaturisticanuevayork.com, 1 guichetunique-pl.org, 1 guid2steamid.pw, 1 guidaditalia.com, 1 -guidaev.com, 1 guidanceetbienetre.com, 1 guidanceflammejumelle.com, 1 guidaturisticavigevano.it, 1 @@ -64971,11 +65130,11 @@ guidinglightapostolic.com, 1 guido-leenders.eu, 1 guidoclub.fr, 1 guidopedia.ga, 1 -guignard.me, 1 guild.xyz, 1 guilded.gg, 1 guildgearscore.cf, 1 guildnet.tk, 1 +guildofbookworkers.org, 1 guilfordct.gov, 1 guilfordian.com, 1 guilfordvt.gov, 1 @@ -64983,10 +65142,9 @@ guilhom.com, 1 guillaume-briand.fr, 1 guillaume-simonet.com, 1 guillaumechirache.com, 1 -guillaumechirache.fr, 1 guillaumecote.me, 1 guillaumematheron.fr, 1 -guillaumesworld.com, 0 +guillaumesworld.com, 1 guille.tk, 1 guillemagullo.tk, 1 guillembosch.es, 1 @@ -64997,10 +65155,8 @@ guiltyfox.ca, 1 guiltyfox.com, 1 guim.co.uk, 1 guinaliu.tk, 1 -guinder.com.br, 1 guineapig101.com, 1 guineapigmustach.es, 1 -guineecheck.org, 1 guinel-johnson.fr, 0 guinguetteclovis.com, 1 guise.tk, 1 @@ -65025,11 +65181,11 @@ guldhaug.org, 1 guldkorn.dk, 1 gule.loan, 1 gulenbase.no, 1 -gulfbreezefence.com, 1 gulfcoastfirm.com, 1 gulfcoastwaterauthoritytx.gov, 1 gulfdinar.com, 1 gulffamilyclinic.com, 1 +gulfjobsy.com, 1 gulfstream.ru, 0 gulfvestors.com, 1 gulkhannasir.tk, 1 @@ -65081,18 +65237,17 @@ gunz.net, 1 gunziefolleto.tk, 1 gunzreplays.com, 1 guochang.fun, 1 +guochanren.com, 1 guoda.art, 1 guogetv.com, 1 guolaoban.xyz, 1 guolaw.ca, 1 guoman.com, 1 -guoyanfood.com.cn, 1 guozeyu.com, 1 guozhenhao.com, 0 gupy.io, 1 gura.moe, 1 -guralptechnic.com, 1 -gurbetilan.com, 1 +gurbetilan.com, 0 guri.ml, 1 gurkantuna.com, 1 gurl.eu.org, 1 @@ -65110,7 +65265,6 @@ gurunpa.com, 1 gururi.com, 1 gurusewa.net, 1 guruworld.tk, 1 -gus-erp.com, 1 gus.ca, 1 gus.expert, 1 gus.insure, 1 @@ -65144,7 +65298,7 @@ gustimaulan.com, 1 gustinetx.gov, 1 gusto.com, 1 gustoclean.com.au, 1 -gustom.io, 1 +gustom.io, 0 gusuraman.tk, 1 gut-aue.com, 1 gute-nachricht.org, 1 @@ -65170,6 +65324,7 @@ gutsfire.com, 1 gutsyhr.com, 1 gutterbus.com, 1 guttercleaningcardiff.co.uk, 1 +gutterdogs.com, 1 gutterguardcharlotte.com, 0 guttergurugeelong.com.au, 1 gutterjunkies.com, 1 @@ -65193,7 +65348,6 @@ guysauto.com, 1 guysroulette.com, 1 guytarrant.co.uk, 1 guzdek.co, 1 -guzek.uk, 1 guzelforum.tk, 1 guzelkadinlar.tk, 1 guzellikmerkezleri.tk, 1 @@ -65213,6 +65367,7 @@ gvatas.in, 1 gvc-it.tk, 1 gvdgroup.tk, 1 gvdn.cz, 1 +gveh.de, 1 gvenglish.com, 1 gvh.hu, 1 gvip.xyz, 0 @@ -65241,7 +65396,6 @@ gwerder.net, 1 gwg-march.ch, 1 gwhatchet.com, 1 gwhoffman.life, 1 -gwhs-installationen.at, 1 gwiazdowapark.pl, 1 gwinnettcounty.gov, 1 gwinteriors.com.au, 1 @@ -65249,7 +65403,7 @@ gwmean.tk, 1 gwnmarketing.com, 1 gworkspace.lt, 1 gworld.cf, 1 -gwq5210.com, 1 +gwrr.com, 1 gwsquickwash.com, 1 gwy15.com, 1 gxbank.my, 1 @@ -65259,8 +65413,8 @@ gxiangsoft.com, 1 gxm5.com, 1 gxmyqy.net, 1 gyaanprasaar.tk, 1 +gyan365.com, 1 gyannews.ga, 1 -gyapak.in, 1 gyas.nl, 1 gybagardlin.tk, 1 gycis.me, 1 @@ -65277,7 +65431,6 @@ gying.org, 1 gying.si, 1 gyjbyev.ga, 1 gyllander.tk, 1 -gyllenbuste.online, 1 gylly.net, 1 gym.com, 1 gymagine.ch, 1 @@ -65293,7 +65446,6 @@ gymkirchenfeld.ch, 1 gymless.org, 1 gymnasium-farmsen.de, 1 gymnasium-hittfeld.de, 1 -gymnasium-hohenlimburg.de, 1 gymnasium56.tk, 1 gymnastic.cf, 1 gymnastic.ga, 1 @@ -65310,11 +65462,13 @@ gymvilla.nl, 1 gynaecology.co, 1 gynaeinfertility.com.sg, 1 gynaemd.com.sg, 1 +gynaemdclementi.com.sg, 1 gynaeovariancyst.com.sg, 1 gynera.ro, 1 gynzy.com, 1 gyongyosi.ga, 1 gyoriedes.hu, 1 +gyors-autoszerviz.hu, 1 gyoza.beer, 1 gypsiebylouise.com, 1 gypso-sendai.com, 1 @@ -65333,6 +65487,7 @@ gz514.top, 1 gz99.top, 0 gz999.top, 0 gzdh.com, 1 +gzitech.com, 1 gzitech.net, 1 gzitech.org, 1 gzlivre.org, 1 @@ -65340,21 +65495,22 @@ gzom.ru, 1 gzonemu.ga, 1 gztelli.ch, 1 h-advisors.global, 1 +h-cars.ma, 1 h-clinic.com.ua, 1 h-e-a-t.com, 1 h-gac.gov, 1 h-i-ambacht.nl, 1 h-jo.net, 1 h-maxton.de, 1 +h-nikonam.ir, 1 h-node.org, 1 h-server.myfirewall.org, 1 +h-u.social, 1 h-var.com, 1 -h.box, 1 h.fo, 1 h.hk.cn, 1 h.lu, 1 h.pub, 1 -h.sk, 1 h001.ru, 0 h07.cn, 1 h09.eu, 1 @@ -65366,24 +65522,31 @@ h11.io, 1 h11.moe, 1 h18.nl, 1 h1ctf.com, 1 +h2.com.sg, 1 +h2.ee, 1 h2020faros.eu, 1 h24.org, 1 h2b.cz, 1 +h2breeze.com, 1 h2cclipboard.com, 1 h2cdn.cloud, 1 h2gonc.gov, 1 h2hc.email, 1 h2insaat.com, 1 +h2ocoin.org, 1 h2ole.com, 1 h2omusic.tk, 1 h2oracing.it, 1 h2ox.io, 1 h2products.co.uk, 1 h2rul.eu, 1 +h2u.tv, 1 h36533.com, 1 h3artbl33d.nl, 1 +h3thai.online, 1 h3x.jp, 0 h3z.jp, 1 +h4k.online, 1 h4kr.io, 1 h51365.com, 1 h5197.co, 1 @@ -65431,17 +65594,18 @@ habbocore.tk, 1 habboinside.tk, 1 habbolibres.tk, 1 habboon.pw, 1 +habbstars.org, 1 habbzohotel.tk, 1 habedieeh.re, 1 habeeba.tk, 1 habenafilm.cz, 1 -haber.biz, 1 haber.law, 1 habercininyeri.com, 1 haberer.me, 1 haberizma.com, 1 haberlandconsulting.com, 1 haberlanddesign.com, 1 +haberlanddigital.com, 1 haberlandgroup.com, 1 haberlandpartners.com, 1 habermatik.net, 1 @@ -65461,11 +65625,11 @@ habitiss.be, 1 habitville.com, 1 hable.kr, 1 hablemosdenutricion.com, 1 -habpar.com.br, 1 habr.ee, 1 habra-adm.ru, 1 habrastorage.org, 1 habsmack.tk, 1 +habtium.es, 1 hac2er.net, 1 hacc.top, 1 haccp.bergamo.it, 1 @@ -65489,17 +65653,19 @@ hackablestuff.cf, 1 hackadena.com, 1 hackamac.tk, 1 hackathontwjr.ml, 0 +hackatruck.com.br, 1 +hackattack.com, 1 hackbarth.guru, 1 hackbeil.name, 1 hackbubble.me, 1 hackcess.net, 1 hackclubmauritius.nl, 1 hackcraft.net, 1 -hackdown.eu.org, 1 hackdown.tech, 1 +hackdra.com, 1 hackeado.tk, 1 hacked.be, 1 -hacked.com, 0 +hacked.com, 1 hackedaf.com, 1 hackendoz.com, 1 hackengine.ga, 1 @@ -65512,7 +65678,6 @@ hackercommunity.org, 1 hackerfa.tk, 1 hackerflare.com, 1 hackerforums.tk, 1 -hackerhermanos.com, 1 hackerhotel.nl, 1 hackeriet.se, 1 hackerinfo.ml, 1 @@ -65539,8 +65704,8 @@ hackettrecipes.com, 1 hackforgood.com, 1 hackfwd.com, 1 hackgunny.tk, 1 +hackhit.info, 1 hackhouse.sh, 1 -hackimpott.de, 1 hackingcult.de, 1 hackingdh.com, 1 hackingdumpdrive.org, 1 @@ -65560,6 +65725,7 @@ hackrigs.com, 1 hackrisk.io, 1 hacksecu.re, 1 hacksnation.com, 1 +hacksoc.co.uk, 1 hacksouth.africa, 1 hackthat.tk, 1 hackthehacker.ml, 1 @@ -65574,8 +65740,6 @@ hacoas.com, 1 hacp.gov, 1 hacquemand.be, 1 hacquemand.co, 1 -hacquemand.com, 1 -hacquemand.fr, 1 hacsapp.co.uk, 1 hadaly.fr, 1 hadan-it.com, 0 @@ -65591,23 +65755,22 @@ hadesblack.com, 1 hadesblack.net, 1 hadesblack.org, 1 hadesblack.xyz, 1 +hadetlachapelle.com, 1 hadibut.fr, 1 hadika.tk, 1 hadin.tk, 1 -hadith.today, 1 hadoora.hu, 1 hadopi.fr, 1 hadotifpc.in, 1 hadouk.in, 1 hadouken.tk, 1 -hadow.fr, 1 hadrienbbt.fr, 1 hadroncms.com, 1 hadrons.org, 1 hadudonura.tk, 1 +hady.boutique, 1 hady.fr, 1 haefligermedia.ch, 1 -haegele.consulting, 1 haehnel.xyz, 1 haehnlein.at, 1 haemka.de, 1 @@ -65623,8 +65786,6 @@ hafeoz.com, 1 haferman.net, 1 haferman.org, 1 hafiz-alquran.com, 1 -hafiz.uz, 1 -hafizalquran.com, 1 hafizkadir.tk, 1 hafling.net, 1 haflingers.tk, 1 @@ -65653,16 +65814,16 @@ hahapo.com, 1 hahn-trafo.com, 1 hahnbowersock.com, 1 hahnbowersock.net, 1 +haibao.club, 1 haibara-ai.cn, 1 haiduc.tk, 1 haifaworld.tk, 1 haifengz.com, 0 haigle.com, 1 -haiglerliving.com, 1 haihuan.com, 1 haikunap.hu, 1 haileybury.com.au, 1 -hails.info, 0 +hails.info, 1 hailstorm.nl, 1 hailstormproject.tk, 1 haimablog.ooo, 1 @@ -65673,10 +65834,8 @@ hair-carekit.tk, 1 hair-dressing.tk, 1 hair-extension.tk, 1 hair-extensions.tk, 1 -hair-rituals.de, 1 hairathome.cz, 1 hairbrushes.tk, 1 -hairbymeagan.com, 1 haircareblog.tk, 1 haircareology.com, 1 haircode.gr, 1 @@ -65718,6 +65877,8 @@ hairywomen.tv, 1 hairywomenpics.com, 1 haislipcorp.com, 1 haitaka.cc, 1 +haitangsoshu.com, 0 +haitangsoushu.com, 0 haitou.tk, 1 haixihui.cn, 1 haixingyun.com, 1 @@ -65763,6 +65924,7 @@ halalpik.com, 1 halatik.com.ua, 1 halbbit.eu, 1 halberstadt.tk, 1 +halbich.design, 1 halco.org, 1 halcraft.tk, 1 halcyonsbastion.com, 1 @@ -65781,6 +65943,7 @@ halfbeastest.ga, 1 halff.com, 1 halfhosting.de, 1 halfmba.com, 1 +halfmoonbayhighschool.com, 1 halfords.com, 0 halfords.ie, 0 halfreal.tk, 1 @@ -65798,11 +65961,13 @@ halilova.tk, 1 halilweb.tk, 1 halilyagcioglu.tk, 1 halimjr.com, 0 +halkakoop.com, 1 halkbank.mk, 1 halkegitimkurs.com, 1 halkoyu.org, 1 halkyon.net, 1 -hallaine.com, 0 +hall1c.com, 1 +hallaine.com, 1 hallanalysis.com, 1 hallandwilcox.com.au, 1 hallcopainting.com, 1 @@ -65814,11 +65979,12 @@ halliday.work, 1 halligan.tk, 1 halligladen.de, 1 hallmanmemorials.net, 1 +hallmarkbusiness.com, 1 +hallmarkestates.ca, 1 halloffameapartments.com, 1 hallofoddities.tk, 1 hallofworlds.online, 1 halloway.tk, 1 -halloween.tf, 1 halloweenmusic.org, 1 hallsonsservices.com, 1 hallspumpandwellservice.net, 0 @@ -65855,6 +66021,7 @@ halyul.com, 1 ham.community, 1 ham.study, 1 hamacho-kyudo.com, 1 +hamali.bg, 1 hamarimarriage.tk, 1 hamartrophy.cf, 1 hamaslul.com, 1 @@ -65863,8 +66030,10 @@ hambook.org, 1 hambot.fr, 1 hamburg1.de, 1 hamburgcode.com, 1 +hamburger-reinigung.de, 1 hamburger-umzuege.de, 1 hamburger-wirtschaft.de, 1 +hamburgerbesteld.nl, 1 hamburgerland.tk, 1 hamburgerwithcheese.com, 1 hamdenct.gov, 1 @@ -65889,14 +66058,12 @@ hamiltonzinelibrary.cf, 1 hamiltonzinelibrary.ga, 1 hamiltonzinelibrary.gq, 1 hamiltonzinelibrary.ml, 1 -hamishandtebany.com, 1 hamking.tk, 1 hamkorbank.uz, 1 hamletstudio.tk, 1 hamlineoracle.com, 1 hamlintownshipeatonco.gov, 1 hammann-services.de, 1 -hammann.org, 1 hammed.tk, 1 hammer-schnaps.com, 1 hammer-sms.com, 1 @@ -65906,6 +66073,7 @@ hammerfestskiklubb.no, 1 hammerhead.tk, 1 hammernews.tk, 1 hammerofdamnation.tk, 1 +hammerofthor-india.com, 1 hammerstorm.ga, 1 hammertonbarbados.com, 1 hammondwi.gov, 1 @@ -65918,11 +66086,11 @@ hamptonrhodes.com, 1 hamptonroads.gov, 1 hamptontownshipmi.gov, 1 hampuskraft.com, 1 -hamra.com.sa, 1 hamsaranjavan.tk, 1 hamsokhan.tk, 1 hamsterchines.tk, 1 hamsteriousgift.com, 1 +hamsternetwork.com, 1 hamstersenanos.tk, 1 hamsterworld.tk, 1 hamstudy.org, 1 @@ -65944,7 +66112,6 @@ hanakohealth.com, 1 hanakohealth.de, 1 hanakovydny.cz, 1 hanan.cz, 1 -hananiastores.com, 1 hanaringo.com, 1 hanatan.net, 1 hanazono.tokyo, 1 @@ -65974,12 +66141,14 @@ handelsbanken.se, 1 handheldsound.com, 1 handhockeyers.ga, 1 handhockeyest.ga, 1 +handicap-job.com, 1 handicappingsportsers.ga, 1 handicappingsportsest.ga, 1 handicapzero.org, 1 handicraftsman.tk, 1 handigehannie.nl, 1 handinhandhrd.eu, 1 +handler.lt, 1 handler.lv, 1 handlerparts.com, 1 handlerparts.de, 1 @@ -65994,16 +66163,17 @@ handlingcostest.ga, 1 handlungsleitfaden.de, 1 handmade-club.tk, 1 handmade-workshop.de, 1 +handmadebyblueberry.pl, 1 handmadehechoamano.com, 1 handmadeselling.com, 1 handmadetutorials.ro, 1 handphones.tk, 1 handpresso.com, 1 handsender-express.com, 1 -handshake.co.za, 1 handsome-samurai.jp, 1 handsomeabel.tk, 1 handsonscience.com.au, 1 +handsontheheart.eu, 1 handstandstudio.ga, 1 handsup.dance, 1 handtales.com, 1 @@ -66026,8 +66196,10 @@ handysex.live, 1 haneenshirt.com, 1 hanetf.com, 1 hanewin.net, 1 +hanfmuseum.de, 1 hanfoot.tk, 1 hanfordca.gov, 1 +hanfparade.de, 1 hanfverband-erfurt.de, 0 hanfverband.de, 1 hang333.moe, 1 @@ -66045,7 +66217,6 @@ hangw.xyz, 1 hanhardt.org, 1 haniasitek.com, 1 haniha.com, 1 -hanis.org, 1 hanisirfan.cf, 1 hanjl.com, 1 hanjuapp.com, 1 @@ -66080,7 +66251,7 @@ hansa.org.ru, 1 hansahome.ddns.net, 1 hansamed.net, 1 hansanders.nl, 1 -hansashop.eu, 1 +hansashop.eu, 0 hansatransporte.de, 1 hansbruis.tk, 1 hanschconsulting.com, 1 @@ -66089,7 +66260,9 @@ hansemind.de, 1 hansen-kronshagen.de, 1 hansen.hn, 1 hanseyachtsag.com, 1 -hansfietst.eu, 1 +hansgoes.it, 1 +hansgoes.nl, 1 +hansgoesit.nl, 1 hansgrohe-usa.com, 1 hansgrohe.com, 1 hansgrohe.de, 1 @@ -66110,17 +66283,13 @@ hansvaneijsden.nl, 1 hant.se, 1 hantera.fi, 1 hantse.com, 0 -hanu.la, 1 hanwhalife.com, 1 hanxv.pw, 1 hanys.xyz, 1 -hanyuguide.com, 1 hanzcollection.online, 1 hanzi-trainer.org, 1 -hanzoslot.com, 1 hao-zhang.com, 1 haorenka.co, 1 -haos.hopto.org, 1 haoskin.com.tw, 1 haoskin.tw, 1 haoyan.com, 1 @@ -66128,14 +66297,11 @@ haoyu-nas.ddns.net, 1 haoz.tk, 1 haozhexie.com, 1 haozi.me, 1 -hapekkarma.eu, 1 -hapfox.de, 1 hapi.agency, 1 hapijs.cn, 1 hapissl.com, 1 hapivm.com, 1 hapless.tk, 1 -happeningit.com, 1 happennino.net, 1 happeopleindonesia.id, 1 happiestoutdoors.ca, 1 @@ -66153,6 +66319,7 @@ happy-space.tk, 1 happy-wans.com, 1 happy.academy, 1 happy2hub.eu, 1 +happy5thwheelers.com, 1 happyagain.se, 1 happyandrelaxeddogs.com, 1 happyanimalsshop.com, 1 @@ -66182,8 +66349,10 @@ happyfamilyorganics.com, 1 happyfoolss.com, 1 happyfun.tk, 1 happyfuture.tk, 1 +happygadget.me, 1 happygardencenter.com.br, 1 happygeek.com, 1 +happygiftapp.cl, 1 happygiftapp.com, 1 happygreats.ml, 1 happygreats.tk, 1 @@ -66211,12 +66380,14 @@ happysnack.cz, 1 happyteamlabs.com, 1 happytime.gq, 1 happytours.cf, 1 +happytoys.com.br, 1 happytugs.com, 1 happyukgo.com, 1 happywater.my, 1 happyweekend.ga, 1 happywheels1.online, 1 hapronailz.tk, 1 +haproxy.tech, 1 hapsana.nl, 1 hapsfordmill.co.uk, 1 haptemic.com, 1 @@ -66233,6 +66404,7 @@ harabar.gq, 1 harabar.ml, 1 harabe.ga, 1 harahanla.gov, 1 +harajiplastic.ir, 1 harakeke.net, 1 harald-pfeiffer.de, 1 harambo.cf, 1 @@ -66253,7 +66425,6 @@ harborbyte.com, 1 harborhillsdaycamp.com, 1 harborspringslistings.com, 1 harboursport.co.nz, 1 -harboursprayfoam.com, 1 hard-drive-recovery-blog.tk, 1 hard.email, 1 hardatack.tk, 1 @@ -66265,7 +66436,7 @@ hardcorekings.com, 1 hardcorepost.com, 1 hardeecountyfl.gov, 1 hardeeflvotes.gov, 1 -hardeman.nu, 0 +hardeman.nu, 1 hardenburghny.gov, 1 hardenize.com, 1 hardesec.com, 1 @@ -66287,8 +66458,8 @@ hardis-group.com, 0 hardjump.tk, 1 hardknocksacademy.org, 1 hardmetal.tk, 1 +hardmine.ru, 1 hardnet.cz, 1 -hardnetsoft.com, 1 hardnode.org, 1 hardnoiser.tk, 1 hardrain980.com, 0 @@ -66296,7 +66467,6 @@ hardrock.tk, 1 hardrocksportsbook.com, 1 hardscience.games, 1 hardscience.io, 1 -hardshell.ae, 1 hardstation.tk, 1 hardstyleclothes.tk, 1 hardtec.tk, 1 @@ -66330,6 +66500,7 @@ hariji.tk, 1 haringtwpmi.gov, 1 harishgoyal.tk, 1 harithaayurveda.com, 1 +harithahospital.com, 1 haritsa.co.id, 1 hariz.ga, 1 harizalan.hu, 1 @@ -66343,13 +66514,13 @@ harlingentx.gov, 1 harlor.de, 1 harmandinjuryhub.scot, 1 harmfarm.nl, 1 -harmim.cz, 0 +harmim.cz, 1 harmlesspeopleers.ga, 1 harmlesspeopleest.ga, 1 -harmny.ai, 1 harmonicasireland.com, 0 +harmonizely.com, 0 harmony-labradoodles.nl, 1 -harmony-trader.com, 1 +harmony.co.id, 1 harmonyeg.net, 1 harmonyencoremdm.com, 1 harmonyfarm.com, 1 @@ -66363,7 +66534,6 @@ harmreductionwa.org, 1 harms.io, 1 harmsboone.org, 1 harness.io, 1 -harnet.store, 1 harnettcountync.gov, 1 harneycountyor.gov, 1 harno.ee, 0 @@ -66374,6 +66544,7 @@ haroldkip.nl, 1 haroldkramer.tk, 1 haroldsharpe.com, 1 harp.gov, 1 +harpcoin.co, 1 harpen.de, 1 harperreed.com, 1 harpersvilleal.gov, 1 @@ -66388,6 +66559,7 @@ harrcostl.com, 1 harriedrecords.tk, 1 harrietjohnston.tk, 1 harrimantn.gov, 1 +harringtonca.com, 1 harrisburgnc.gov, 1 harrisconsulting.ie, 1 harriscountyesd11.gov, 1 @@ -66406,6 +66578,7 @@ harrisoncareerguide.com, 1 harrisoncountymo.gov, 1 harrisoncountyms.gov, 1 harrisoncountymschanceryclerk.gov, 1 +harrisonsdirect.co.uk, 1 harrisontownshipmi.gov, 1 harrisx.com, 1 harrodsburgky.gov, 1 @@ -66445,7 +66618,6 @@ hartlieb.me, 1 hartmancpa.com, 1 hartmann-hartmann.eu, 1 hartmannindustries.com, 1 -hartonfilm.com, 1 hartsfieldrock.tk, 1 hartslagnu.nl, 1 hartstart.info, 1 @@ -66478,18 +66650,19 @@ haryana.gov.in, 1 harz.cloud, 0 harzin.tk, 1 has-no-email-set.de, 1 +has.bet, 1 has.gy, 1 has.report, 1 has.work, 1 hasabig.wang, 1 hasalittle.wang, 1 +hasandurmus.com, 1 hasankayra04.com, 1 hasas-automatizari.ro, 1 hasas-cnc.ro, 1 hasbara.tk, 1 haschrebellen.de, 1 hasdf.de, 1 -hasecic.de, 1 haselsteiner.me, 1 hasenmueller.de, 1 hasgeek.com, 1 @@ -66511,7 +66684,7 @@ hashinteractive.com, 0 hashish.net, 1 hashiura.jp, 1 hashmart.io, 1 -hashnode.com, 1 +hashnode.com, 0 hashplex.com, 1 hashru.nl, 1 hashsters.com, 1 @@ -66527,12 +66700,12 @@ hasilocke.de, 1 hasjob.co, 1 haskellar.gov, 1 haskellcountytx.gov, 1 -haslin.com.au, 1 hasmoralsers.ga, 1 hasmoralsest.ga, 1 hass-server.pp.ua, 1 hassan-kuordish.tk, 1 hassana.com.sa, 1 +hassanhardware.com, 1 hassans.tk, 1 hassclan.tk, 1 hasselbach-dellwig.de, 1 @@ -66542,8 +66715,6 @@ hassra.org.uk, 1 hasstopped.com, 1 hastadoktor.com, 1 hastati.tk, 1 -haste.it, 1 -hastings.com.br, 1 hastingsapplianceservice.com.au, 1 hastingsdirect.com, 1 hastingsmi.gov, 1 @@ -66587,9 +66758,8 @@ hatterjiang.org, 1 hattori-hanzo.tk, 1 hattricksites.tk, 1 hatzbs.ch, 1 -hau-cs-graduates.com, 0 +hau-cs-graduates.com, 1 haubrechts-peinture.be, 1 -haudi.pl, 1 haughtonla.gov, 1 haugr.net, 1 hauller.ch, 1 @@ -66607,7 +66777,7 @@ hausarbeit-ghostwriter.com, 1 hausdorf.ru, 1 hausen-wzbg.de, 1 hausfrauficken.com, 1 -haushalts-magazin.de, 1 +haushaltsaufloesung-vor-ort.de, 1 haushaltsaufloesung-zentrum.de, 1 haushenne.de, 1 haushub.org, 1 @@ -66623,6 +66793,7 @@ hautarztzentrum.ch, 1 hautbugey-tourisme.com, 1 haute-sorne.ch, 1 hautehorlogerie.org, 1 +hauteliving.com, 1 hautemontagne.com, 1 hauteprovenceinfo.com, 1 hautetime.com, 1 @@ -66631,7 +66802,6 @@ hautsdefrance.fr, 1 hautzentrum-innenstadt.de, 1 havaci.tk, 1 havadurumu15gunluk.org, 1 -havahaberleri.com, 1 havana-club.com, 1 havanaheritage.org, 1 havarijna-sluzba-bratislava.sk, 1 @@ -66639,6 +66809,7 @@ havasformula.com, 1 havasuinsurance.com, 1 havasutacohacienda.com, 1 have-it.tk, 1 +have.jp, 1 haveabounce.co.uk, 1 havedicewillsave.com, 1 haveforeningen-enghaven.dk, 1 @@ -66654,7 +66825,7 @@ havenquilters.com, 1 haventoday.org, 0 haverford.com, 1 havernbenefits.com, 1 -havetherelationshipyouwant.com, 0 +havetherelationshipyouwant.com, 1 havi-engel.de, 1 havivdriver.co.il, 1 havo.co.id, 1 @@ -66682,6 +66853,7 @@ hawkesburycas.com.au, 1 hawkeye247.com, 1 hawkeyeia.gov, 1 hawkeyeinsight.com, 1 +hawkherald.com, 1 hawkins.plus, 1 hawkinsonkiaparts.com, 1 hawkmachinery.com.au, 1 @@ -66706,9 +66878,9 @@ haydenbleasel.com, 0 haydenfranklin.com, 1 haydenjames.io, 1 haydockusedtrucks.co.uk, 1 +hayesfusion.com, 1 hayestwpclaremi.gov, 1 hayestwpotsegomi.gov, 1 -hayfit.id, 1 hayfordoleary.com, 1 hayhurstrealestate.com, 0 hayl.me.uk, 1 @@ -66732,17 +66904,18 @@ hazara-online.tk, 1 hazarainternational.com, 1 hazarapeople.com, 1 hazaristan.asia, 1 +hazbin.org, 1 haze-productions.com, 1 hazelhof.nl, 1 hazelkid.tk, 1 hazelwood.co.uk, 1 hazeover.com, 1 +hazhistoria.net, 1 hazimdesign.tk, 1 hazirlikatlamakursu.com, 1 hazlocheaters.com, 1 hazloconlapix.com, 1 hazmob.net, 1 -hazventas.com, 1 hazy.gay, 1 hazy.sh, 1 hazyhosting.tk, 1 @@ -66750,16 +66923,19 @@ hazytales.com, 1 hazza.net, 1 hb.by, 1 hb5197.com, 0 +hb8522.com, 1 hb9397.com, 1 hb9ikn.ch, 1 hba1crechner.de, 1 hbaa.ml, 1 hbag.org, 1 hbauer.net, 0 +hbbet.com, 1 hbcm70.fr, 1 hbcommand.com, 1 hbcu-colleges.com, 1 hbedocs.com, 1 +hbfisioeesthetic.com.br, 1 hbgshop.cf, 1 hbh.sh, 1 hbility.eu, 0 @@ -66775,9 +66951,7 @@ hbr.link, 1 hbs-it-gmbh.de, 1 hbslick.com, 1 hbsslaw.co.uk, 1 -hbsslaw.com, 1 hbsvzos.nl, 1 -hbtinsaat.com, 1 hbudd.com, 0 hbussmann.com, 1 hbweb.io, 1 @@ -66807,12 +66981,10 @@ hclu.co, 1 hcmuehlethurnen.ch, 1 hcnh.gov, 1 hco4.com, 1 -hcqd.fr, 1 hcqmeta.com, 1 hcr.io, 0 hcscrusaders.com, 1 hcsoffshore.com, 1 -hcst.be, 1 hcstrache.at, 1 hctegelhandel.tk, 1 hctr002.tk, 1 @@ -66825,6 +66997,8 @@ hd-olimpo.club, 1 hd-outillage.com, 1 hd4arab.tk, 1 hd6729.com, 1 +hd6957.com, 1 +hd9397.com, 1 hd9721.com, 1 hdaccess.info, 1 hdbigass.com, 1 @@ -66836,11 +67010,10 @@ hdcamsites.com, 1 hdcoupler.com.au, 1 hddrecovery.net.au, 1 hdeaves.uk, 1 -hdentertainment.de, 1 hdevent.net, 1 hdfreex.com, 1 hdgrannytube.com, 1 -hdhoang.space, 0 +hdhoang.space, 1 hdhomelift.com, 1 hdlooks.tk, 1 hdm-bogensport.at, 1 @@ -66858,8 +67031,9 @@ hdpornpics.com, 1 hdpornpicture.com, 1 hdrams.com, 1 hdrcomercio.com.br, 1 -hdrezka.live, 0 +hdrezka.live, 1 hdrezka2018.tk, 1 +hdrip.info, 1 hdrtranscon.com, 0 hds-lan.de, 1 hdscheduleers.ga, 1 @@ -66868,8 +67042,6 @@ hdsengine.ml, 1 hdsexxx.net, 1 hdsi.io, 1 hdsinemax.com, 0 -hdspot.org, 1 -hdsr.nl, 1 hdtech.com.pl, 1 hdtvblogsers.ga, 1 hdtvblogsest.ga, 1 @@ -66877,7 +67049,7 @@ hdtvboarders.ga, 1 hdtvboardest.ga, 1 hdv.paris, 1 hdv12.horse, 1 -hdview.co.uk, 0 +hdview.co.uk, 1 hdwetpussy.com, 1 hdxxxpics.net, 1 hdy.nz, 1 @@ -66903,24 +67075,23 @@ heading2australia.ga, 1 headlight.tech, 1 headlineclub.gr, 1 headlinepublishing.be, 1 -headmail.org, 1 heado.de, 1 -headpage.org, 1 +headofhair.pl, 1 headpats.eu, 1 headphonesinear.tk, 1 -headsafe.org, 1 headshotharp.de, 1 headsmackskatepark.tk, 1 headspaequipment.com, 1 headstartkernow.org.uk, 1 headstrong.de, 1 +headsuphealth.com, 1 headtopics.com, 1 -headuser.org, 1 headwall-hosting.com, 1 headwayapp.co, 1 healdsburg.gov, 1 healinfoods.com, 1 healingmatters.ca, 1 +healingriverscounseling.net, 0 healingthenaturalway.cf, 1 healingthenaturalway.ga, 1 healingthenaturalway.gq, 1 @@ -66930,7 +67101,6 @@ healinlife.com, 1 healmaster.net, 1 healmyhearttoday.ga, 1 healmynation.com, 1 -healtalyzer.com, 1 healtbeautyturkey.tk, 1 health-and-beauty-news.net, 1 health-ashlandcounty-oh.gov, 1 @@ -66944,7 +67114,6 @@ health-road.ga, 1 health-solutions.de, 1 health-toolbox.com, 1 health-tourism.com, 1 -health-union.com, 1 health.gov, 1 health.gov.ly, 1 health.graphics, 1 @@ -66954,6 +67123,7 @@ health4all.tk, 1 health4food.com, 1 health4life.tk, 1 healthabundant.ga, 1 +healthactive.co, 0 healthadaptive.ga, 1 healthalbuquerque.tk, 1 healthalternativemedicine.tk, 1 @@ -66972,7 +67142,6 @@ healthatlantic.tk, 1 healthawareness.cf, 1 healthbanfield.tk, 1 healthbank.io, 1 -healthbeautyaftercare.nl, 1 healthbeltsville.tk, 1 healthbinghamton.tk, 1 healthbit.com.br, 1 @@ -66997,7 +67166,6 @@ healthcareareainfo.tk, 1 healthcarediversion.org, 1 healthcaredrugs.tk, 1 healthcareera.tk, 1 -healthcareforwomen.com.sg, 1 healthcareinfonews.tk, 1 healthcaremedicine.tk, 1 healthcarenutrition.tk, 1 @@ -67041,7 +67209,6 @@ healthdaily.cf, 1 healthdaily.ga, 1 healthdallas.tk, 1 healthdata.gov, 1 -healthdatalab.com, 1 healthdatavalley.nl, 1 healthdelta.ga, 1 healthdenver.tk, 1 @@ -67054,12 +67221,13 @@ healthdowntown.ga, 1 healthdraw.ga, 1 healtheagle.ga, 1 healtheffectsofasbestos.com, 1 +healthefoundation.eu, 1 healthekids.tk, 1 healthemden.tk, 1 +healthengine.com.au, 1 healthequity.com, 1 healtherm.co.jp, 1 healthessence.ga, 1 -healthexport.info, 1 healthfalcon.ga, 1 healthfame.ga, 1 healthfiesta.ga, 1 @@ -67140,6 +67308,7 @@ healthmuscle.tk, 1 healthmystical.ga, 1 healthnano.ga, 1 healthnational.ga, 1 +healthnetworkcollective.com, 1 healthnobel.ga, 1 healthnorman.tk, 1 healthnorthamerican.ga, 1 @@ -67237,6 +67406,7 @@ healthvariety.ga, 1 healthvariety.tk, 1 healthveedersburg.tk, 1 healthvision.ml, 1 +healthvitalzone.com, 1 healthwarior.tk, 1 healthwausau.tk, 1 healthwealthtime.org, 1 @@ -67251,6 +67421,8 @@ healthyalaska.tk, 1 healthyankee.ga, 1 healthyarizona.tk, 1 healthyarkansas.tk, 1 +healthybeauty365bn.com, 1 +healthybrewhub.com, 1 healthyburn.tk, 1 healthychoices.tk, 1 healthyclinic.tk, 1 @@ -67303,7 +67475,6 @@ hearingbydesign.co.nz, 1 hearkener.com, 1 heart-cartoons.tk, 1 heart-valve-surgery.com, 1 -heartalyze.com, 1 heartbeat24.de, 1 heartbound.wiki, 1 heartcard.tk, 1 @@ -67319,12 +67490,14 @@ heartlandcu.com, 1 heartlandmosaic.com, 1 heartlandtownandcountry.tk, 1 heartmountaintech.com, 1 +heartofamericaservicecompany.com, 1 heartofgod.tk, 1 heartoftexaseye.com, 1 heartofthemidlands.co.uk, 1 heartofthepeace.com, 0 +heartonmysleevegreetings.com, 1 hearts-science.com, 1 -heartsintrueharmony.com, 0 +heartsintrueharmony.com, 1 heartsucker.com, 0 hearttruth.gov, 1 heartway.xyz, 1 @@ -67349,6 +67522,7 @@ heartyapp.tw, 1 heartymail.com, 1 heaslip-aluminium-smelter-engineering.com, 1 heat-press.com.au, 1 +heat-ua.pt, 1 heat.gov, 1 heatairservices.com, 0 heatbyte.info, 1 @@ -67391,7 +67565,6 @@ hebin.cf, 1 hebmexico.tk, 1 hebrew.ga, 1 hebronnh.gov, 1 -hebru-kuechen.de, 1 hec-espace-entreprise.ch, 0 hec.global, 1 hec.org.au, 1 @@ -67410,6 +67583,7 @@ heckmann.photos, 1 hectorama.tk, 1 hectorfiorini.com.ar, 0 hectorlima.tk, 1 +hedefhalk.com, 1 hedenskrig.tk, 1 hederatech.us, 1 hederawinkel.nl, 0 @@ -67468,6 +67642,7 @@ hehome.xyz, 0 heiaheia.com, 1 heibel.tk, 1 heibobo.cf, 1 +heibobo.com, 1 heibobo.ga, 1 heibobo.gq, 1 heibobo.ml, 1 @@ -67477,6 +67652,7 @@ heictoany.com, 1 heid.ws, 1 heidarilawgroup.com, 1 heidegg.ch, 1 +heidelbergengineering.com, 1 heidelberglintels.com.au, 1 heiden-wir-helfen.de, 1 heidenwag.email, 1 @@ -67525,15 +67701,16 @@ heinop.de, 1 heinopeters.eu, 1 heinrich1.de, 1 heinrich5991.de, 1 +heins.info, 1 heins.one, 1 heinzdekat.tk, 1 heinzencastellano.tk, 1 heiraten-gardasee.de, 1 heiraten-venedig.de, 1 heiri-web.ch, 1 -heirportal.com, 1 heise.cf, 1 heise.ml, 1 +heisenberg.co, 1 heishop.com.br, 1 heishop.mx, 1 heist-clan.tk, 1 @@ -67541,6 +67718,7 @@ heistheguy.com, 1 heitepriem.de, 1 heitepriem.info, 1 heiwa-valve.co.jp, 1 +heizoil-vergleich.de, 1 hejazultra.org, 1 hejl.xyz, 1 hejlhome.cz, 1 @@ -67578,6 +67756,7 @@ helenakmiec.pl, 1 helenapaparizouspainfanclub.tk, 1 helenatownshipmi.gov, 1 helendoe.uk, 1 +helene-conway.com, 1 helenekurtz.com, 0 helenelefauconnier.com, 1 helenevanwunnik.tk, 1 @@ -67611,6 +67790,7 @@ heli-iq.nl, 0 heli-iq.pl, 0 heli-iq.se, 0 heli-iq.sk, 1 +helia.com.au, 1 heliair.bg, 1 helichat.de, 1 helicine.net, 1 @@ -67625,7 +67805,6 @@ heliobil.fr, 1 heliocentrism.jp, 1 heliolira.com, 1 helion.ch, 0 -helioring.com, 1 helios4.com, 1 heliosbot.net, 1 heliosenergie.it, 1 @@ -67633,14 +67812,11 @@ heliosnet.com, 1 heliosvoting.org, 0 heliport-moscow.ru, 1 heliport-parts.ru, 1 -helisimmer.com, 1 helium.computer, 1 -helium.surf, 1 heliumtech.tk, 1 heliwing.com, 1 helix.am, 1 -helixagencyservices.com, 1 -helixnebula.tech, 1 +helixagencyservices.com, 0 helixsense.com, 1 helixternak.com, 1 helkyn.eu, 1 @@ -67653,6 +67829,7 @@ hellblade.tk, 1 hellblast.tk, 1 hellendumanrealty.com, 1 hellenicagora.co.uk, 1 +hellenichandmade.com, 1 hellenicmusicacademy.com, 1 hellerarko.de, 1 hellfreak.tk, 1 @@ -67669,7 +67846,6 @@ helloappservices.com, 1 hellobarestore.com, 1 hellobee.com, 1 hellobetter.de, 1 -hellobird.cc, 1 hellobrian.me, 1 hellocash.business, 1 hellocat.cf, 1 @@ -67698,8 +67874,6 @@ hellonews.ga, 1 helloo.com.br, 1 hellopandaphoto.com, 1 hellopowerserg.com, 1 -helloptimize.com, 1 -helloptimize.fr, 1 hellorory.com, 1 hellorussia.ga, 1 hellosalmon.com, 1 @@ -67738,7 +67912,6 @@ helmonline.de, 1 helmonline.nl, 1 helmsbriscoe.com, 1 helmscapital.co.uk, 1 -helmtrophy.com, 1 heloe-wintergaerten.de, 1 heloisamarra.com, 1 help-en-ontwikkel-jezelf.nl, 1 @@ -67749,6 +67922,7 @@ help360.com, 1 help911.com, 1 helpadmin.net, 0 helpamericavote.gov, 1 +helpatmyhome.com, 1 helpc.eu, 1 helpcalculator.tk, 1 helpchange.ru, 1 @@ -67765,6 +67939,7 @@ helpline.com.ua, 1 helplisted.com, 1 helpmainstreet.com, 1 helpmij.cf, 1 +helpnet.ro, 1 helpout.us, 1 helpowl.com, 1 helppc.com.ua, 1 @@ -67803,7 +67978,6 @@ hematoonkologia.pl, 1 hemdal.se, 0 hemdian.com, 1 hemi.xyz, 1 -hemics.com, 1 hemkop.se, 1 hemmersbach.com, 1 hemnet.se, 1 @@ -67814,7 +67988,6 @@ hempsteadcitytx.gov, 1 hemrin.com, 1 hen.ee, 1 hen.ne.ke, 1 -hench.technology, 1 henchtechnology.com, 1 hendersonchambers.co.uk, 1 hendersoncountyil.gov, 1 @@ -67855,7 +68028,6 @@ hennge.com, 1 hennikernh.gov, 1 henningkerstan.de, 1 henningkerstan.org, 1 -henningsvaerfyr-privatmegleren.no, 1 hennymerkel.com, 1 henradplumbing.co.uk, 1 henri-feuillade.tk, 1 @@ -67886,7 +68058,6 @@ henrycountyohio.gov, 1 henrycountysheriffga.gov, 1 henryctyil.gov, 1 henryford.tk, 1 -henrygreene.com, 1 henrygressmann.de, 1 henryholmessmith.com, 1 henryhouse.wales, 1 @@ -67940,6 +68111,7 @@ heraldik-wiki.de, 1 heraldmakassar.com, 1 heratnews.tk, 1 herba-belgie.be, 1 +herbacom.ro, 1 herbalhouse.tk, 1 herbalife.ru, 1 herbalifereport.tk, 1 @@ -67961,10 +68133,10 @@ herbisan.pl, 1 herbivorization.com, 1 herblaysurseine.fr, 1 herbnal.com, 1 +herboristerie-dufayel.fr, 1 herbosia.fr, 1 herbreathonglass.tk, 1 herbsociety.org, 1 -herbstgroup.io, 1 herbsupplements.co.uk, 1 herbweb.net, 1 herbweb.org, 1 @@ -67982,7 +68154,6 @@ heren.fashion, 1 herenstraatvoorburg.tk, 1 herenvanholland.nl, 1 hereplus.me, 0 -heresthespace.com, 1 heretic-guild.com, 1 hereticle.com, 1 hereticmaniacs.tk, 1 @@ -67991,6 +68162,7 @@ hereticpreist.tk, 1 herez.fr, 0 hergaenergy.com, 1 hergeandtintin.tk, 1 +herhighlights.com, 1 herila.ml, 1 heringer.tk, 1 heritageinvestigativegroup.com, 1 @@ -68007,7 +68179,7 @@ herkimercountyny.gov, 1 herlimit.com, 1 hermaj.com, 1 hermanbrouwer.nl, 1 -hermandevries.com, 0 +hermandevries.com, 1 hermann-hesse-kolleg.de, 1 hermann-wagener.de, 1 hermanncomm.com, 1 @@ -68019,6 +68191,7 @@ hermes-servizi.it, 1 hermesawards.com, 1 hermesoft.at, 1 hermessenger.fr, 1 +hermetas.org, 1 hermetien.tk, 1 hermietkreeft.site, 0 herminghaus24.de, 1 @@ -68030,6 +68203,7 @@ hermosaseagirt.com, 1 hernandovotes.gov, 1 hernanracciatti.com, 1 hernanygerman.tk, 1 +herndl.org, 1 herne-kupony.sk, 1 herni-kupony.cz, 1 hernia.sg, 1 @@ -68047,6 +68221,7 @@ heroesorchestra.com, 1 herofil.es, 1 herogaming.net, 1 herohealth.com, 1 +heroiclove.com, 1 herold.me, 1 herold.space, 1 heromlabs.tk, 1 @@ -68070,6 +68245,7 @@ herreriamauricio.com.ar, 1 herrfirm.com, 1 herriman.gov, 1 herriman.net, 1 +herringadvancemachine.com, 1 herringsresidence.be, 1 herritage.ga, 1 herrkal.eu, 1 @@ -68097,6 +68273,7 @@ herzpfa.de, 1 herzzuherz.de, 1 hes.com.cy, 1 hesabraslaw.com, 1 +hesabtube.com, 1 hesama.tk, 1 hesaplama.net, 1 hesapozeti.com.tr, 1 @@ -68113,7 +68290,7 @@ hessen.de, 1 hessen.social, 1 hessenheim.tk, 1 hessentoday.de, 1 -hessis.eu, 0 +hessis.eu, 1 hessis.xyz, 1 hessischer-landtag.de, 1 hesslag.com, 1 @@ -68127,6 +68304,7 @@ hestia-systeme.fr, 1 hestiahealth.es, 1 hestonlawfirm.com, 1 hesyifei.com, 1 +het-klaverblad.nl, 0 hetaera-agency.com, 1 hetaeragroup.com, 1 hetchie.com, 1 @@ -68134,7 +68312,6 @@ hetcoronalab.nl, 1 hetdebat.tk, 1 hetene.nl, 1 hetfundament.team, 1 -heth.me, 1 hethely.ch, 1 hetiservices.com, 1 hetjop.nl, 1 @@ -68148,7 +68325,6 @@ hetushu.com, 1 hetveurtheater.nl, 1 hetvezercsarda.hu, 1 hetwalhalla.nl, 1 -hetwebsitebedrijf.nl, 1 heureka2.com, 1 heute-kaufen.de, 1 heute.training, 1 @@ -68169,7 +68345,6 @@ hewlettbayparkny.gov, 1 hewlettharbor.gov, 1 hex.nl, 1 hex.tech, 1 -hexa-ra.com, 1 hexagon-e.com, 1 hexagonengg.com, 1 hexalinq.com, 1 @@ -68182,6 +68357,7 @@ hexatech.gq, 1 hexatech.tk, 1 hexaunits.com, 1 hexaweb.tk, 1 +hexcel.com, 1 hexcode.in, 1 hexdatabase.com, 1 hexed.it, 1 @@ -68190,17 +68366,14 @@ hexforged.com, 1 hexhu.com, 1 hexhu.net, 1 hexiaohu.cn, 0 +hexid.me, 0 hexieshe.com, 1 -hexnet.pl, 1 hexo.ink, 0 hexo.io, 0 hexobind.com, 1 hexoff.com, 1 hexony.com, 1 hexsafe.io, 1 -hexssl.com, 1 -hexssl.de, 1 -hexssl.pl, 1 hexstream.expert, 1 hexstream.exposed, 1 hexstream.link, 1 @@ -68215,6 +68388,7 @@ hey-staging.com, 1 hey.com, 1 hey.pw, 1 heybilly.io, 1 +heyblogging.com, 0 heybookmark.ga, 1 heybookmark.gq, 1 heybritney.tk, 1 @@ -68222,15 +68396,17 @@ heybyrdie.com, 1 heydenbluth.de, 1 heydorff.duckdns.org, 1 heydudd.com, 1 -heyete.com, 1 heyfiesta.com, 1 +heyfordpark.com, 0 heyfranky.com, 1 heyghost.io, 1 heyitgirl.com, 1 heyitsfree.net, 1 +heyjenndigital.com, 1 heyjoecoffee.com, 1 heyjoflyer.win, 1 heylogin.com, 1 +heynowbots.com, 1 heyomg.com, 1 heyplay.eu.org, 1 heysora.net, 1 @@ -68247,7 +68423,6 @@ hf.com, 1 hf51-domeinen.nl, 1 hf51.nl, 1 hfa3.org, 1 -hfam.chat, 1 hfh-gmbh.de, 1 hfholidays.co.uk, 1 hfikq8.cf, 1 @@ -68257,6 +68432,7 @@ hfox.org, 1 hfpatios.com, 1 hfsctx.gov, 1 hfsg-habicht.at, 1 +hfvuejq.pro, 1 hfx405.de, 1 hfxtwppa.gov, 1 hg.eu, 1 @@ -68264,21 +68440,22 @@ hg.fo, 1 hg.python.org, 1 hg0086.la, 0 hg71839.com, 1 +hgb.club, 1 hgc369.com, 1 hgcityca.gov, 1 hgfa.fi, 1 hghsells.com, 1 -hgmaranatha.nl, 0 +hgmaranatha.nl, 1 hgnet.com.br, 1 hgpowerglue.nl, 1 hgseo.me, 1 hgseo.net, 1 -hgsss.org, 1 hgtwa.com.au, 1 hgvnet.de, 1 hgwld.com, 1 hgyo.me, 1 hgyoseo.com, 1 +hgzw.com, 0 hh-host.de, 1 hh-massage.de, 1 hh-medic.com, 1 @@ -68287,16 +68464,14 @@ hh-wolke.dedyn.io, 1 hh5197.co, 1 hh6729.co, 1 hh6957.co, 1 -hh90a2962zk.sn.mynetname.net, 1 hh9297.co, 1 hh9397.com, 1 hh9728.co, 1 +hhank.com, 1 hhdelfland.nl, 1 hhhdb.com, 1 hhk.my.id, 1 hhkits.com, 1 -hhlandscape.com, 1 -hhnbsuperhustg.wpenginepowered.com, 1 hhpcorp.org, 1 hhristov.tk, 1 hhs.gov, 1 @@ -68325,8 +68500,11 @@ hibernianhealth.com, 1 hibin.tk, 1 hibiny.ru, 1 hibiscuscoastfinancialservices.com.au, 1 +hibiscuscommunications.com, 1 hibiscusprintshop.com, 1 hiboomapp.com, 1 +hibretone.org, 1 +hibrid-turf.com, 1 hiccupsandjuice.co.uk, 1 hicklinghacks.co.uk, 1 hickmancountytn.gov, 1 @@ -68338,7 +68516,6 @@ hicopy.jp, 1 hicoria.com, 1 hicts.nl, 1 hiczp.com, 1 -hidalgodigital.com, 1 hidashin.co.jp, 1 hidbo.de, 1 hidden-audio.de, 1 @@ -68347,8 +68524,11 @@ hiddenbyleaves.tk, 1 hiddendragon.ml, 1 hiddenempire.tk, 1 hiddenhand.finance, 1 +hiddenhillselectric.com, 1 hiddenhillsexteriorlighting.com, 1 +hiddenhillslighting.com, 1 hiddenimage.ml, 1 +hiddenleaf.network, 1 hiddenmalta.net, 1 hiddenpalms.tk, 1 hiddenredknights.tk, 1 @@ -68360,7 +68540,6 @@ hide.me, 1 hideallip.com, 1 hideandseek.org, 1 hidedd.com, 1 -hidelife.ru, 1 hidemee.com, 1 hidemyipaddress.com, 1 hideouswebsite.com, 1 @@ -68374,7 +68553,6 @@ hidrolimpiadorasprofesionales.org, 1 hidromar.es, 1 hidroshoping.com.br, 1 hidupbisadiatur.com, 1 -hie.global, 1 hieisuki.ga, 1 hielscher.com, 1 hien.cf, 1 @@ -68401,6 +68579,7 @@ higeniqcleaning.com.au, 1 higentexpo.com, 1 higginsroofing.com.au, 1 higgsboson.tk, 1 +high-company.com, 1 high-flying.co.uk, 1 high-ground.org, 1 high-heels.se, 1 @@ -68423,16 +68602,15 @@ highdonate.tk, 1 higheducation.ml, 1 highend-audiopc.com, 1 highenergy.tk, 1 -highenergymagic.net, 1 higherairspace.eu, 1 higherpress.org, 1 highftp.tk, 1 highgardengabala.com, 1 highgateworks.co.uk, 1 highheeltamia.com, 1 -highhippy.com, 1 highintegrity.tk, 1 highinthemid80s.com, 1 +highkick.jp, 1 highland-webcams.com, 1 highlanddancing.tk, 1 highlandheights-ky.gov, 1 @@ -68468,17 +68646,17 @@ hightechone.cf, 1 hightechreporting.com, 1 hightechreviews.ga, 1 hightechsystems.nl, 1 -hightechtexan.com, 1 highthcahempflower.com, 1 hightop.com, 0 +hightwist.show, 1 highvibes.hu, 1 highway11north.tk, 1 -highway2as.com, 1 highway54.tk, 1 highway71autoparts.com, 1 highwaytohoell.de, 1 highwayzen.org, 1 highworldnet.ga, 1 +higilopocht.li, 1 higsegeirl.com, 1 higueras.tk, 1 hiig.edu.ee, 1 @@ -68486,7 +68664,6 @@ hiitrepublic.com.au, 1 hiiumeretuulepark.ee, 1 hiiw.cloud, 1 hiiw.de, 1 -hijyenbelgesi.tr, 1 hik-cloud.com, 1 hikagestudios.com, 1 hikarilan.life, 1 @@ -68512,8 +68689,6 @@ hilarymundial.tk, 1 hilbertwi.gov, 1 hilde.link, 1 hiledge.com, 1 -hilfe.de, 1 -hilfiker.cloud, 1 hilfikernet.ch, 1 hilfikers.com, 1 hilinecreators.tk, 1 @@ -68540,7 +68715,6 @@ hillsfarmstays.co.uk, 1 hillshandymate.com, 1 hillside-il.gov, 1 hillsidecustom.com, 1 -hillsidemooloolahvalley.com.au, 1 hillsphotosoc.tk, 1 hillstohome.com, 1 hillstrak.com.au, 1 @@ -68551,7 +68725,6 @@ hilltopsurgicalhospital.ga, 1 hilltopviewsonline.com, 1 hilnu.com, 1 hilomrm.com, 1 -hilton.com.cn, 1 hilunetan.tk, 1 hima.com, 1 himalaiblanket.com, 1 @@ -68564,6 +68737,7 @@ himawari-shika.org, 1 himcy.ga, 1 himei.city, 1 himeji-kanbee.jp, 1 +himens.com, 0 himiku.com, 1 himj.de, 1 himnosycanticos.org, 1 @@ -68571,6 +68745,7 @@ himpler.com, 0 himprom.com, 1 hin10.com, 1 hinaryazan.com, 1 +hinasense.jp, 1 hinata-hidetoshi.com, 1 hinatayamagolf.jp, 1 hinckleymn.gov, 1 @@ -68586,21 +68761,26 @@ hindustantimes.ml, 1 hinduworld.tk, 1 hindweb.tk, 1 hinesitecoding.com, 1 +hingehealth.com, 0 +hingehealth.io, 1 hingle.me, 1 hinhanhykhoa.com, 1 +hinit.no, 1 hinkel.tk, 1 hinketsujyoshi-no-torisetsu.com, 1 +hinntsai.com, 1 hinotify.io, 1 hinsdaledental.com, 1 hintergedanken.com, 0 hinterposemuckel.de, 1 -hintleshamhall.co.uk, 1 hinto.com.au, 1 hintss.pw, 0 +hinyari.net, 1 hiob.fr, 0 hiofd.com, 1 hiorth.tk, 1 hip-happy.nl, 1 +hip.agency, 1 hiparish.org, 1 hipcircles.tk, 1 hipecompany.tk, 1 @@ -68613,20 +68793,19 @@ hiphopall.tk, 1 hiphopbolivia.tk, 1 hiphopdates.de, 1 hiphopfashion.tk, 1 +hipihapi.org, 1 hipnos.net, 1 hipnosecriciuma.com.br, 1 +hipnosisypsicoterapia.com, 1 hipnosisyterapias.com, 1 hipnotista.tk, 1 hipocampo.org, 1 hipodromcasusu.tk, 1 hippies.com.br, 1 hippo.com, 1 -hippocamp.io, 1 hippogriffhaven.com, 1 hippogriffhaven.net, 1 -hippohealthcare.in, 1 hippolini-herold.de, 1 -hiprax.com, 1 hiprosun.com, 1 hips.com, 1 hipstermamaproductions.com, 1 @@ -68636,19 +68815,20 @@ hipuranyhou.cz, 1 hiq.se, 1 hiq.sh, 1 hiqonline.co.uk, 0 -hiram.tr, 1 +hirake55.com, 1 hiramoto-ph.com, 1 hiramvlgohio.gov, 1 hirano-shikaclinic.com, 1 -hiratadai-piano.com, 1 hireabouncycastle.net, 1 hirechrisfinazzo.com, 1 hirecities.cf, 1 hirecities.ml, 1 hirecitiesers.ga, 1 hirecitiesest.ga, 1 +hirecto.io, 1 hireinsight.io, 1 hirel.gq, 1 +hirerecruiters.io, 1 hireshield.com, 1 hirevets.gov, 1 hirevo.eu, 1 @@ -68668,6 +68848,7 @@ hiroomote-sakurai-shika.jp, 1 hirorock.tk, 1 hirosehp.jp, 1 hiroshimacalling.org, 1 +hirotaka.org, 1 hirsch-lawyer.tk, 1 hirschbergertal.de, 1 hirtz.pm, 1 @@ -68689,7 +68870,6 @@ hispasonic.com, 1 hispatrofeo.com, 1 hisregistries.net, 1 hisregistries.org, 1 -hiss.com.sg, 1 hisscentralen.se, 1 hisscraft.se, 1 hissgruppen.com, 1 @@ -68700,6 +68880,7 @@ histhist.ru, 1 histkringbreukelen.nl, 1 histkult.ml, 1 histkult.tk, 1 +histogames.com, 1 histoire-cite.ch, 0 histoires.tk, 1 historia-arte.com, 1 @@ -68713,6 +68894,7 @@ historicalsocietyofsomersethills.org, 1 historicengland.org.uk, 1 historicizam.tk, 1 historictoxaway.org, 1 +historiek.net, 1 historikorders.com, 1 historisches-chemnitz.de, 1 history-schools.com, 1 @@ -68727,7 +68909,7 @@ hit.moe, 1 hitchcockcountyne.gov, 1 hitchen.net, 1 hitchens.tk, 1 -hitchhikerslive.com, 0 +hitchhikerslive.com, 1 hitchpin.com, 1 hitchunion.org, 1 hitech-news.ml, 1 @@ -68737,7 +68919,6 @@ hitechsupport.com.au, 1 hitecnologia.com.br, 1 hitekcomputing.net, 1 hitekmechanical.com, 1 -hitekstore.com, 1 hitel.tk, 1 hiteshchandwani.com, 1 hitflow.fr, 1 @@ -68863,7 +69044,6 @@ hkmap.com, 1 hkmap.net, 1 hkmusz.cn, 1 hknhuisartsen.nl, 1 -hknit.de, 1 hkno.it, 1 hkoreatv.gq, 1 hkp-usa.com, 1 @@ -68871,7 +69051,6 @@ hkr.at, 1 hks.pw, 1 hksapientia.org, 1 hkscolorectal.com.sg, 1 -hksexdoll.com, 1 hkskhf.dk, 1 hktech.link, 1 hktkl.com, 1 @@ -68886,6 +69065,7 @@ hlavacek.us, 1 hlavi.hu, 1 hlc.ly, 1 hlebopekarna.com, 1 +hledejlevne.cz, 1 hlfh.space, 1 hlidani-tornado.cz, 1 hlinformatics.nl, 1 @@ -68897,6 +69077,7 @@ hln.be, 1 hloe0xff.ru, 1 hlopokshop.ru, 1 hlp.group, 1 +hlpublicidad.com, 1 hls-tutorial.tk, 1 hlsblog.com, 1 hlsjgw.com, 1 @@ -68918,9 +69099,7 @@ hm1ch.ovh, 1 hmarchat.tk, 1 hmbana.org, 1 hmcdj.cn, 1 -hmeonot.org.il, 1 hmforces-railcard.co.uk, 1 -hmg-benelux-shop.com, 1 hmka.com, 0 hmnd.io, 1 hmodapk.com, 1 @@ -68946,10 +69125,10 @@ hnojik.cz, 1 hnrk.io, 1 hnsseed.com, 1 hntuin.nl, 1 -hnvandriel.com, 1 hny.co, 1 hnyp.hu, 1 ho10.pl, 1 +hoaas.no, 1 hoahop.tk, 1 hoanghaiauto.vn, 1 hoangvangioi.com, 1 @@ -68980,7 +69159,6 @@ hobokenpdnj.gov, 1 hobokenrecords.tk, 1 hobonline.tk, 1 hobroefterskole.dk, 1 -hobsonplumbing.com, 1 hoccovua.vn, 1 hochatown.gov, 1 hochhaus.us, 1 @@ -68988,6 +69166,7 @@ hochheimer-zeitung.de, 1 hochimins.org, 1 hochland.pl, 1 hochoukikikiraku.com, 1 +hochsee.schule, 1 hochtief.cz, 1 hochu.ua, 1 hochuvrotik.cf, 1 @@ -68995,7 +69174,6 @@ hochzeit-ap.de, 1 hochzeit-cm.at, 1 hochzeit-dana-laurens.de, 1 hochzeit-saufzeichnungen.tk, 1 -hochzeitsfotograf.photography, 1 hochzeitsplaner-rodgau.de, 1 hochzeitsregion.at, 1 hochzeitstypen.de, 1 @@ -69033,12 +69211,11 @@ hoerspielbox.de, 1 hoest.it, 1 hoeveiligismijn.nl, 1 hoewler.ch, 0 -hof-imbiss-lieske.de, 0 +hof-imbiss-lieske.de, 1 hof-mulin.ch, 1 hofapp.de, 1 hofbraeu-muenchen.de, 1 hoferdach.de, 1 -hoffland.org, 1 hoffmanig.com, 1 hoffmannresearch.ca, 1 hoffmanns-ballonshop.de, 1 @@ -69096,7 +69273,6 @@ hokkaido.tk, 1 hokko.de, 1 hokuin.co.jp, 1 hokung.xyz, 1 -hokuyukai-neurological-hosp.jp, 1 hola-smart.com, 1 holacannx.com, 1 holacbdoils.com, 1 @@ -69151,7 +69327,6 @@ holiy.jp, 1 hollabanken.cf, 1 holladayut.gov, 1 holland-sailing.de, 1 -hollandandsherry.com, 1 hollandbrowncountywi.gov, 1 hollandco.au, 1 hollandco.com, 1 @@ -69165,6 +69340,7 @@ hollandrailservices.au, 1 hollandrailservices.com, 1 hollandrailservices.com.au, 1 hollandsewolken.nl, 1 +hollandsweb.com, 1 hollandwi.gov, 1 hollermann.eu, 1 hollistermo.gov, 1 @@ -69183,7 +69359,6 @@ hollyloless.org, 1 hollyspringsfarmnac.com, 1 hollyspringsms.gov, 1 hollywoodbios.com, 1 -hollywooddriver.com, 1 hollywoodhelicopters.com, 1 hollywoodstars.tk, 1 hollyworks.com, 1 @@ -69197,7 +69372,6 @@ holmium-laser.ru, 0 holmq.dk, 1 holmqvist.tk, 1 holmr.eu, 1 -holobeam.tech, 1 holocentric.com, 1 holocron.one, 1 holod-servis777.tk, 1 @@ -69236,7 +69410,7 @@ holyscriptur.es, 1 holysmart.top, 1 holyspiritpalmyra.com, 1 holyspiritweb.org, 1 -holyszko.com, 0 +holyszko.com, 1 holytransaction.com, 1 holywhite.com, 1 holywr.it, 1 @@ -69256,6 +69430,7 @@ homake.cf, 1 homato.uk, 1 homberg.de, 1 hombresg.net, 1 +homd.xyz, 1 home-design.bg, 1 home-hunts.com, 1 home-insurance-quotes.tk, 1 @@ -69276,7 +69451,6 @@ home-page.xyz, 1 home-portal.tk, 1 home-remedies.tk, 1 home-sagita.tk, 1 -home.ch, 1 home.saxo, 1 home24bank.com, 1 homeadore.com, 1 @@ -69292,10 +69466,10 @@ homeblaster.ga, 1 homebrew.tk, 1 homebrewshop.be, 1 homebrewworm.tk, 1 -homebrookgosnells.com.au, 1 homebuilder.tk, 1 homebutton.tk, 1 homecache.ga, 1 +homecaprice.com, 1 homecareplus.cl, 1 homecaster.ga, 1 homecatch.ga, 1 @@ -69305,6 +69479,7 @@ homechase.tk, 1 homecheck.gr, 1 homechefninja.com, 1 homechoicestores.com, 1 +homecinema-fr.com, 1 homeclient.ga, 1 homecollections.ga, 1 homecoming.city, 1 @@ -69312,6 +69487,7 @@ homecompost.in, 1 homecpr.com.au, 1 homecrawler.ga, 1 homecreatives.net, 1 +homecrewconstruction.com, 1 homedecorclassic.tk, 1 homedecorspecialists.com, 1 homedesignabilene.tk, 1 @@ -69349,6 +69525,7 @@ homedesignclinton.tk, 1 homedesignclovis.tk, 1 homedesigncolorado.tk, 1 homedesigncolumbus.tk, 1 +homedesigncompany.co.nz, 1 homedesigncorona.tk, 1 homedesigncorpuschristi.tk, 1 homedesigncusseta.tk, 1 @@ -69429,13 +69606,13 @@ homedeveloper.gq, 1 homedeveloper.ml, 1 homedeveloper.tk, 1 homedirectory.ml, 1 +homedizz.top, 1 homedollar.ga, 1 homedollars.ga, 1 homeduck.ga, 1 homeeagle.ga, 1 homeelectricalupdates.com, 1 homeer.com, 1 -homeevcharger.ie, 1 homeexperience.tk, 1 homefacialpro.com, 0 homeflag.ga, 1 @@ -69472,6 +69649,7 @@ homeinteriorusa.tk, 1 homeinvasion.tk, 1 homeinvention.tk, 1 homejapanese.ml, 1 +homekeep.com, 1 homekiss.ga, 1 homekitdaily.de, 1 homelab.farm, 1 @@ -69491,10 +69669,12 @@ homemadetipsers.ga, 1 homemadetipsest.ga, 1 homemaintenanceservicesindubai.com, 1 homemarks.ga, 1 -homemaster-chita.ru, 0 +homemaster-chita.ru, 1 +homematicblog.de, 1 homemediadb.org, 1 homemember.ga, 1 homemessenger.ga, 1 +homemove.com, 1 homen.in, 1 homenature.tk, 1 homenetworksecurity.eu, 1 @@ -69544,7 +69724,6 @@ homerex.ga, 1 homero.tk, 1 homesafedryerventsac.com, 1 homesbyayres.com, 1 -homeschoolhive.co, 1 homeschoolinkorea.tk, 1 homeseguridad.com, 1 homeseller.com, 1 @@ -69587,9 +69766,6 @@ homewinner.ga, 1 homewish.ga, 1 homewoodpathfinder.com, 1 homeworld.ga, 1 -homexmortgage.com, 1 -homexpressdirect.com, 1 -homey.guide, 1 homeyou.com, 1 homeyx.cf, 1 homezlog.com, 1 @@ -69608,6 +69784,7 @@ homofo.tk, 1 homoglyph.net, 1 homointerneticus.tk, 1 homokfuvo.com, 1 +homomedicus.com, 1 homoo.social, 1 homophobia.tk, 1 homophones.ml, 1 @@ -69617,6 +69794,7 @@ homs.design, 1 homyak.gq, 1 homygo.eu, 1 homyremedies.com, 1 +honaragah.com, 1 honatec.tech, 1 honda2wheelerparts.com, 1 honda2wheelersindia.com, 1 @@ -69630,6 +69808,7 @@ hondapartsnow.com, 1 hondapowerproducts.ph, 1 hondasancarlos.com, 1 hondaswap.com, 1 +hondengedragscentrumfriesland.nl, 1 hondensnacks.shop, 1 hondentrainingpootvoorpoot.nl, 1 hondudiario.tk, 1 @@ -69650,7 +69829,7 @@ honestworknmoney.tk, 1 honesty.com.pl, 1 honey.beer, 1 honeyarcus.art, 1 -honeybadger.io, 0 +honeybrooklibrary.org, 1 honeycomb.io, 1 honeycome-recruit.com, 0 honeycreeper.com, 1 @@ -69661,6 +69840,7 @@ honeyspot.de, 1 honeysucklerosephotography.com, 1 honeysucklewhite.com, 1 honeytracks.com, 1 +honeyuniversity.net, 1 honeyxlips.com, 1 hong.com.br, 1 hong.io, 1 @@ -69676,18 +69856,18 @@ hongorw.tk, 1 hongosdemexico.tk, 1 honguyensy.tk, 1 hongyun-rent.com, 1 +honigconte.com, 1 honigkuchenpferdeher.de, 1 honk.house, 1 honkai.sr, 1 honkion.net, 1 honmoku-select-shika.com, 1 honoka-seitai.jp, 1 -honoka.cafe, 1 honolulubws.gov, 1 honorpackages.com, 1 honovere.de, 1 honu.ng, 1 -hoo.lt, 0 +hoo.lt, 1 hooapp.lt, 1 hood-epc.xyz, 1 hoodiessouthafrica.com, 1 @@ -69701,7 +69881,6 @@ hooghiemstrazelf.nl, 1 hoogsreporting.com, 1 hoogstraatseschaakclub.tk, 1 hoogveen.tk, 1 -hook-esport.fr, 1 hookah-crm.ru, 1 hookah-uae.com, 1 hookahfoil.ru, 1 @@ -69727,6 +69906,7 @@ hoops-inc.com, 1 hoorr.com, 1 hoos.cf, 1 hoosa.de, 1 +hooshop.lt, 1 hootsuite.com, 1 hootv.lt, 1 hootworld.net, 0 @@ -69739,6 +69919,7 @@ hopeforlorn.tk, 1 hopeforukraine.org.uk, 1 hopefultexas.com, 0 hopemeet.info, 1 +hopemeet.me, 1 hopepartnershipproject.com, 1 hopesanddreams.org.uk, 1 hopewellpolicenj.gov, 1 @@ -69756,12 +69937,13 @@ hopkintonri.gov, 1 hopnepal.com, 1 hopo.design, 1 hoponmedia.de, 1 -hoppe-sts.com, 1 +hoppenr.xyz, 1 hoppinjohn.org, 0 hoppy.com, 1 hoppygo.com, 1 hops-and-ashes.de, 1 hopscotchmodel.com, 1 +hopsfeatherfest.at, 1 hopsmaus-shop.de, 0 hopted.com, 1 hor.website, 1 @@ -69774,13 +69956,11 @@ horairetrain.fr, 1 horairetrain.lu, 1 horairetrain.nl, 1 horamesianica.tk, 1 -horanet.com, 1 horata.com, 1 horcajadadelatorre.tk, 1 horclan.tk, 1 hord.ca, 1 horde-entertainment.tk, 1 -horeca.pk, 1 horecastaff.com.ua, 1 horecatiger.eu, 1 horefice.me, 1 @@ -69810,12 +69990,13 @@ hormet.tk, 1 hormigonimpreso.biz, 1 hormonetrackerers.ga, 1 hormonetrackerest.ga, 1 +hornafricpost.com, 1 hornbach-holding.de, 1 hornblower.tk, 1 hornburg.io, 1 hornby.com, 1 horneytownbrewing.com, 1 -horngyihyangped.com.tw, 0 +horngyihyangped.com.tw, 1 hornofamerica.com, 1 horntec.at, 1 hornwiesen-grundschule.de, 1 @@ -69832,7 +70013,6 @@ horoscopist.com, 1 horoscopo.ml, 1 horotoday.tk, 1 horovod.im, 1 -horozo.com, 1 horrell.ca, 1 horrendous-servers.com, 1 horror-forum.de, 1 @@ -69841,6 +70021,7 @@ horrorfreaks.tk, 1 horrormovies.gr, 1 horrorserv.com, 1 horrycountysc.gov, 1 +horsa.cc, 1 horsa.io, 1 horsa.xyz, 1 horsebreeding.cf, 1 @@ -69855,6 +70036,7 @@ horsellscoutsandguides.com, 1 horsemanshipdentistry.com, 1 horsemanshipdentistryschool.com, 1 horseplanet.tk, 1 +horseridingdurban.com, 1 horsewithnoname.com, 1 horsky.me, 1 horstfuchs.tk, 1 @@ -69870,10 +70052,8 @@ horvatia.tk, 1 horvatnyelvkonyv.hu, 1 hory.me, 1 horza.org, 1 -hoscad.net, 1 hosch.co.nz, 1 hose.ga, 1 -hosen-flicken.de, 1 hosentaschenblog.org, 1 hoshi-sr.com, 1 hoshimaq.com.br, 1 @@ -69897,12 +70077,14 @@ hospicespringfling.org, 1 hospicewebsite.org, 1 hospicewise.org, 1 hospicjumzory.pl, 1 +hospimedia.fr, 1 hospitable.com, 1 hospitalcmq.com, 1 hospitalcruzvermelha.pt, 1 hospitaldaluz.pt, 1 hospitaldebarcelona.cat, 1 hospitaldelaconcepcion.com, 1 +hospitaldeovalle.cl, 1 hospitality-colleges.com, 1 hospitality-on.com, 1 hospitalityandcateringnews.com, 1 @@ -69917,7 +70099,6 @@ host1oc.eu.org, 1 host24.com.pk, 1 host2be.com, 1 host2do.com, 1 -host365.fi, 1 hostadvice.com, 1 hostalk.net, 1 hostalog.com, 1 @@ -69933,6 +70114,7 @@ hostcloud.ml, 1 hostcoz.com, 1 hostcsr.com, 1 hostdns.com, 1 +hosteasy.nl, 0 hosted-power.com, 1 hostedcomments.com, 1 hosteddatabase.in, 1 @@ -69942,7 +70124,6 @@ hostedghost.nl, 1 hostedghost.org, 1 hostedtalkgadget.google.com, 1 hosteko.com, 1 -hostel.brussels, 1 hosteleriauno.es, 1 hostelgeeks.com, 1 hostelio.com, 1 @@ -69951,7 +70132,7 @@ hosteons.com, 1 hostesstrainingers.ga, 1 hostesstrainingest.ga, 1 hostfact.nl, 1 -hostfi.com.br, 0 +hostfi.com.br, 1 hostfission.com, 1 hostfree12.tk, 1 hostgreet.com, 1 @@ -69969,7 +70150,7 @@ hosting.ua, 0 hostingactive.it, 0 hostingalternative.com, 0 hostingdesignweb.com, 0 -hostingdetails.eu, 1 +hostingdiario.com, 1 hostingdirect.nl, 1 hostingdirectory.ga, 1 hostingelite.tk, 1 @@ -69977,7 +70158,6 @@ hostingfirst.nl, 1 hostinghaus.tk, 1 hostinghelp.guru, 1 hostinginnederland.nl, 1 -hostingopenclaw.com, 1 hostingorservers.com, 1 hostingphp.ch, 1 hostingsolutions.cz, 1 @@ -69985,6 +70165,7 @@ hostingsupremo.com, 1 hostingsvizzera.com, 1 hostingtipps.eu, 1 hostingweb.pe, 1 +hostinkos.com, 1 hostinvest.tk, 1 hostitcreateit.com, 1 hostix.de, 1 @@ -70001,6 +70182,7 @@ hostpoint-static.ch, 1 hostpoint.ch, 1 hostprior.ro, 1 hostreputation.com, 1 +hostripples.com, 1 hostripples.in, 1 hosts.cf, 0 hostsall.com, 1 @@ -70017,7 +70199,6 @@ hot-sex-photos.com, 1 hot-shots-photos.com, 1 hot-spa.ch, 0 hot.ee, 1 -hot.in.th, 1 hot.v.ua, 1 hot101fm.tk, 1 hotaircoldlove.tk, 1 @@ -70041,6 +70222,7 @@ hotdoc.com.au, 1 hotdogwheel.tk, 1 hotdresses.ga, 1 hote-inox.ro, 1 +hotearth.de, 1 hotebonytube.com, 1 hoteimode.net, 1 hotel-4-stelle.it, 1 @@ -70053,7 +70235,7 @@ hotel-bruneck.net, 1 hotel-brunico.net, 1 hotel-du-parc-allevard.fr, 1 hotel-fleuralp.it, 1 -hotel-garni-letizia.it, 0 +hotel-garni-letizia.it, 1 hotel-insectes.be, 1 hotel-jahnatal.de, 1 hotel-kontorhaus.de, 1 @@ -70070,17 +70252,20 @@ hotel-rosskopf.it, 1 hotel-valgardena.net, 1 hotel-vipiteno.net, 1 hotel-vivendi.de, 1 +hotel-waldheim.eu, 1 hotel-zurrose.de, 1 hotel3232nyc.com, 1 hotel43.com, 1 hotelandplace.com, 1 -hotelbarbutter.com, 1 +hotelbird.com, 1 hotelbiz.cf, 1 hotelbiz.ga, 1 hotelbiz.gq, 1 hotelbretagne.dk, 1 +hotelcasadelmar.com, 1 hotelcharlestonsantateresa.com, 1 hotelcoco.co.uk, 1 +hotelconsulado.com.br, 1 hotelcorporate.codes, 1 hotelcorporatecodes.com, 1 hoteldealsphuket.com, 1 @@ -70099,7 +70284,6 @@ hotelitalia.tk, 1 hotelite.tk, 1 hotelizalde.com, 1 hotelkeihan.co.jp, 1 -hotelkentavar.com, 1 hotellamm.it, 1 hotellocaldubai.com, 1 hotelmap.com, 1 @@ -70107,7 +70291,6 @@ hotelmariasas.it, 1 hotelmelograno.eu, 1 hotelmirage-bg.com, 1 hotelnagarkotparadise.tk, 1 -hotelpalotacity.hu, 1 hotelparqcentral.com, 1 hotelpenzance.com, 1 hotelplanner.com, 1 @@ -70120,7 +70303,6 @@ hotels-insolites.com, 1 hotels-resorts-in-crimea.tk, 1 hotels3d.com, 1 hotels4teams.com, 1 -hotelsadultsonly.com, 1 hotelsalzberg.ga, 1 hotelsalzberg.gq, 1 hotelsalzberg.ml, 1 @@ -70134,18 +70316,12 @@ hotelsonline.tk, 1 hotelsrejber.cz, 1 hotelsrit.tk, 1 hotelsthisweekend.com, 1 -hotelstrandparken.dk, 1 hotelsvetaekaterina.com, 1 -hotelswithallinclusive.com, 1 -hotelswithprivatepool.com, 1 -hotelswithwinery.com, 1 hotelturbo.com, 1 hotelv.com, 0 hotelvalena.com, 1 hotelvillafiorita.com, 1 hotelvisegrad.hu, 1 -hotelwestplonsk.pl, 1 -hotelylangylang.com, 1 hotelylangylang.fr, 1 hotelylangylang.re, 1 hotelzapse-aurora.tk, 1 @@ -70225,6 +70401,8 @@ hotyoyo.ga, 1 hotzheipoe.com, 1 houdah.com, 1 houdenvanhonden.nl, 1 +houghcovidtest.com, 1 +houghcovidtest.com.au, 1 houghtonstatebank.com, 1 houlang.ac.cn, 1 houraiteahouse.net, 1 @@ -70250,12 +70428,12 @@ houseforce.biz, 1 household-appliances.tk, 1 householdjournalers.ga, 1 householdjournalest.ga, 1 -householdresponse.com, 1 houseinfonews.tk, 1 housekeep.com, 1 houselocal.co.uk, 1 housemart.company, 1 housemouse.tk, 1 +houseofaceonline.com, 1 houseofbrighde.co.uk, 1 houseoffilters.com, 1 houseofhipsters.com, 1 @@ -70264,6 +70442,7 @@ houseofshades.com, 1 houseofsupplements.com, 1 houseofyee.com, 1 houseplant.tk, 1 +houser.lu, 1 houseracko.com, 1 houseremodels.tk, 1 houseroxrecords.com, 1 @@ -70279,6 +70458,7 @@ housinglincolncountyor.gov, 1 housingloan.jp, 1 housingokc.gov, 1 housr.in, 1 +houston-building-maintenance.com, 1 houston-probate-law.com, 1 houstonaudubon.org, 1 houstonauthorizedrepair.com, 1 @@ -70318,6 +70498,7 @@ houzz.jp, 1 houzz.se, 1 hovala.tk, 1 hovelaar.nl, 1 +hoverboardbarato.com, 1 hovewest.no, 1 hovset.net, 1 how-things-work-science-projects.com, 1 @@ -70346,8 +70527,8 @@ howarh.com, 0 howcodingworks.com, 1 howdidido.com, 1 howdl.com, 1 +howdoesmycode.work, 1 howdy.fr, 1 -howdymassage.com, 1 howeda.de, 1 howellaccounts.co.uk, 1 howellcountymo911.gov, 1 @@ -70374,11 +70555,12 @@ howsmytls.com, 1 howto-connect.com, 1 howto-outlook.com, 0 howtobehealthy.tk, 1 +howtobestraightbook.com, 1 +howtobewhitebook.com, 1 howtodesignwebsite.com, 1 howtogeek.com, 1 howtogeekpro.com, 1 howtogosolar.org, 0 -howtohireaiagents.com, 1 howtohomepage.tk, 1 howtomakefriends.tk, 1 howtomanagedevices.com, 1 @@ -70405,21 +70587,20 @@ howunadeydoam.ng, 1 hoxo.fr, 1 hoyabit.com, 1 hoychivilcoy.tk, 1 -hoyer-group.com, 1 hoyerfamilysaffron.com, 1 hoyosdelespino.tk, 1 hoz-pack.com.ua, 1 -hoz.land, 1 hozana.si, 0 hozinga.de, 1 hozio.com, 1 hozio.net, 1 hozkomurcu.com, 1 hozonshoku.com, 1 -hozy.co, 0 +hozy.co, 1 hp-67.com, 1 hp-lexicon.org, 1 hp42.de, 1 +hpac-portal.com, 1 hpage.com, 1 hpbn.co, 1 hpc.mil, 1 @@ -70436,6 +70617,7 @@ hpneo-conseil.com, 1 hpnso.com, 1 hprasath.com, 1 hpruehl.de, 1 +hpscb.com, 1 hpsdigital.hu, 1 hpsldc.com, 1 hpsq.io, 1 @@ -70443,7 +70625,6 @@ hpthealing.com, 1 hpvtimmerwerken.nl, 1 hqblog.cn, 0 hqcdn.com, 1 -hqproductionaudio.com, 1 hqsy.net, 1 hqteas.com, 1 hqtrannytube.com, 1 @@ -70482,7 +70663,6 @@ hrcp.ge, 1 hrcrew.com.au, 1 hrd-sec.com, 1 hrd.pl, 1 -hrdinaadcera.cz, 1 hrdns.de, 1 hreflang.info, 1 hrej.eu, 1 @@ -70496,12 +70676,14 @@ hrjfeedstock.org, 1 hrjob.ml, 1 hrjob.tk, 1 hrk.aero, 1 +hrkfamilylaw.com, 1 hrknuddel.de, 1 hrlab.de, 1 hrlive.ga, 1 hrmafia.ga, 1 hrmcms.com, 1 hrmg.agency, 1 +hrminohub.com, 1 hrmny.sh, 1 hrndz.io, 1 hrnk.org, 1 @@ -70516,7 +70698,6 @@ hrpage.ml, 1 hrpayhub.com, 1 hrprofessionals.tk, 1 hrreporter.com, 1 -hrrpnepal.org, 0 hrsa.gov, 1 hrseoservice.com, 1 hrstapps-dev.com, 1 @@ -70530,7 +70711,7 @@ hrw66.cc, 1 hrwsba.gov, 1 hrxkauppa.fi, 1 hry.cz, 1 -hrzblt.eu, 1 +hrzblt.eu, 0 hs-flensburg.de, 1 hs-group.net, 1 hs-hire.co.uk, 1 @@ -70541,6 +70722,7 @@ hsappstatic.net, 1 hsasearch.com, 1 hsbc-zertifikate.de, 1 hsbcnet.com, 1 +hsbte.com, 1 hsbuild.com, 1 hschen.top, 0 hscomposites.co.nz, 1 @@ -70550,7 +70732,6 @@ hseal.co.uk, 1 hselectricalservices.com, 1 hsg-lumdatal.de, 1 hsi.gov, 1 -hsia1stg.wpenginepowered.com, 1 hsiot.com.au, 1 hsivonen.com, 1 hsivonen.fi, 1 @@ -70565,14 +70746,11 @@ hsn-tsn.com, 1 hsn.com, 1 hso.com, 1 hsog.tk, 1 -hsorganics.pk, 1 -hsp-software.de, 1 hsr.gov, 1 hsreformas.es, 1 hsselite.com, 1 hst.edu, 1 hst.tc, 1 -hstcompass.com, 1 hstoyanov.com, 1 hsts.eu, 1 hsts.ovh, 1 @@ -70619,12 +70797,10 @@ htikeagkyaw.com, 1 htl-anmeldung.at, 1 htlball.at, 1 htljobs.at, 1 -htlle.at, 1 htm-partners.com, 1 htmag.co.il, 1 htmainternational.com, 1 htmanager.fr, 1 -htmarketingsolutions.com.au, 1 htmdom.com, 1 html-builder.tk, 1 html-code-generator.com, 1 @@ -70655,29 +70831,29 @@ http.pizza, 1 http2.com.cn, 1 http3-hosting.de, 1 http3.ch, 1 +http3.info, 1 http3.pro, 1 http418.org, 1 httpcats.com, 1 httpd.gq, 1 httpducks.com, 1 -httpeace.com, 0 +httpeace.com, 1 httpgoats.com, 1 httpguides.com, 1 httpmaster.net, 1 https.com.tw, 1 https.dk, 1 -https.gs, 1 https.jetzt, 1 httpsalarm.com, 1 httpsarnemergan.ml, 1 httpsecured.net, 1 httpsiseasy.com, 1 httpsispisseasy.com, 1 -httpsornot.com, 1 httpsrdr.me, 1 httpsredirector.com, 1 httpssify.com, 1 httpstaak.tk, 1 +httpstest.eu, 1 httpstest.nl, 1 httpswatch.ca, 1 httpswatch.eu, 1 @@ -70723,6 +70899,7 @@ huanxu.com, 1 huapont.com, 1 huapood.com, 1 huaqian.art, 1 +huarenda.com, 0 huashan.co.uk, 1 huashang.tk, 1 huaskj.com, 1 @@ -70765,12 +70942,12 @@ hubspot.de, 1 hubspot.es, 1 hubspot.fr, 1 hubspot.jp, 1 -hubtransporteselogistica.com.br, 1 hubux.tk, 1 hubx.co, 1 huchet.me, 0 hucklebucks.com, 1 huckletree.com, 0 +hudaa.us, 1 hudbugcomics.com, 1 hudconstruction.co.uk, 1 huddlecamhd.com, 1 @@ -70781,11 +70958,12 @@ hudhomestore.gov, 1 hudless.com, 1 hudnara.se, 1 hudobniny.net, 1 +hudochharmoni.se, 1 hudognik.com, 1 hudsonregional.gov, 1 hudsonsolutions.com, 1 hudsonwi.gov, 1 -hudu.com, 0 +hudu.com, 1 huduser.gov, 1 huecomundo.tk, 1 hueffenhardt.de, 1 @@ -70866,6 +71044,7 @@ huit.re, 1 huitaodang.com, 0 hukkatavara.com, 1 hukuhauchi.com, 1 +hukukiayna.com, 1 hulaginswoodworking.com, 1 hulet.tech, 1 hulii.com, 0 @@ -70883,7 +71062,7 @@ hultrid.hopto.org, 1 huluch.cc, 1 hululkitab.co, 1 humail.link, 1 -human-centricity.com, 0 +human-centricity.com, 1 human-clone.com, 1 human-dev.io, 1 human-parasites.tk, 1 @@ -70899,13 +71078,11 @@ humanenrich.com, 1 humanesdemadrid.tk, 1 humanewolf.com, 1 humanhairgo.tk, 1 -humanholic.hr, 1 humanidad.tk, 1 humaninterest.com, 1 humaniora.com, 1 humanistgruppen.tk, 1 -humanities.gov, 1 -humanitiesacademicpublishers.com, 1 +humanitiesacademicpublishers.com, 0 humanitiesnebraska.org, 1 humanity.com, 1 humanize.security, 1 @@ -70934,6 +71111,7 @@ humblebee.be, 1 humblebee.bg, 1 humblebee.ch, 1 humblebee.co.uk, 1 +humblebee.cz, 1 humblebee.dk, 1 humblebee.es, 1 humblebee.foundation, 1 @@ -70989,6 +71167,7 @@ humpydumpy.tk, 1 humuluslupulus.de, 1 humus.tk, 1 huna.viajes, 1 +hunaniinfotech.com, 1 hund.io, 1 hund.ml, 1 hundamosantena3.tk, 1 @@ -71000,7 +71179,6 @@ hundhausen.de, 1 hundimiento.com, 1 hundlee.tk, 1 hundred100.net, 1 -hundredforhundred.com, 1 hundredhills.wine, 1 hundskolorna.se, 1 hundter.com, 1 @@ -71010,11 +71188,13 @@ hungarian-united-church.tk, 1 hungarianeducationagency.com, 1 hungaromedia.at, 1 hungaryz.ml, 1 +hungnm.me, 1 hungphatlaptop.com, 1 hungryas.tk, 1 hungryginie.com, 1 hungrygowhere.com, 1 hungryhealthyhappy.com, 0 +hungu.net, 1 hunhold.at, 1 hunhold.biz, 1 hunhold.ch, 1 @@ -71027,20 +71207,22 @@ hunhold.org, 1 hunngard.com, 1 hunqz.com, 1 hunstoncanoeclub.co.uk, 1 -huntcam.ai, 1 hunter-read.com, 1 hunter.io, 1 hunter32.ru, 1 +hunteratkins.co, 0 hunterhi.com.au, 1 hunterjohnson.io, 1 huntersandprops.tk, 1 hunterscreekapartments.net, 1 hunterscrolls.tk, 1 huntersridgecabins.com, 1 +hunterstorm.com, 1 hunterwoodheatingandplumbing.co.uk, 1 huntflow.ai, 1 hunting.ml, 1 huntingdonsmithfieldpa.gov, 1 +huntingnewfoundlandlabrador.com, 0 huntingtonestateproperties.com, 1 huntingtonnow.com, 1 huntingtonwv.gov, 1 @@ -71053,6 +71235,7 @@ huntsvillecottage.ca, 1 huntvac.com, 1 huny.eu.org, 1 hunzai.tk, 1 +huoduan.com, 1 huohu-sports.com, 1 huohuo.cf, 1 huohuo.ml, 1 @@ -71061,16 +71244,14 @@ huonit.com.au, 0 huoyankan.com, 1 huoyou.com, 1 hup.hu, 0 -hupoints.com, 1 hurdafiyatlari.site, 1 hurdaphysio.fi, 1 hurinkazan2020.com, 1 -hurix.ai, 1 -hurix.com, 1 hurling.net, 1 huron.tk, 1 huronsd.gov, 1 hurra-blog.tk, 1 +hurrahjaltar.se, 1 hurricanecarroll.com, 1 hurricanelabs.com, 0 hurricaneplaneers.ga, 1 @@ -71082,24 +71263,23 @@ hurstbourneacresky.gov, 1 hurstiharrell.tk, 1 hurstvilleentertainmentcentre.com, 1 hurstvilleentertainmentcentre.com.au, 1 +hurt-orange.pl, 1 hurtigrabat.dk, 1 hurtigtinternet.dk, 1 husakbau.at, 1 -huseyinemre.tech, 1 huseyinpala.com, 1 +hushbabysleep.com, 1 hushfile.it, 1 -hushhush.ai, 1 hushlayer.com, 1 hushpuppiesobuv.ru, 1 husic.net, 0 -huskwellness.com, 1 husky-in-nood.tk, 1 huskyadvisor.com, 1 huskyeye.de, 1 huskygifts.com, 1 huskyinc.us, 0 huskysat.org, 1 -huskytaildigital.com, 0 +huskytaildigital.com, 1 husqvarnamoped.se, 1 hustlerstate.tk, 1 hustlersuniversityapp.com, 1 @@ -71163,18 +71343,19 @@ hwc.com.mx, 1 hwchronicle.com, 1 hwe.nz, 1 hwehealthiertogether.nhs.uk, 1 +hwholdsworth.com.au, 1 hwinfo.tk, 1 hwnd.io, 1 hwr-barsinghausen.de, 1 hwsw.io, 1 hwvv.nl, 1 +hwy25landscaping.com, 1 hx-sun.com, 1 hx53.de, 1 hx678.cc, 1 hx77.cc, 0 hxbank.com, 1 hxcrr.cn, 1 -hxh.best, 1 hxit.cn, 1 hxkvm.com, 1 hxkvm.net, 1 @@ -71214,11 +71395,11 @@ hydrabit.nl, 1 hydralube.ie, 1 hydrante.ch, 0 hydras.tk, 1 +hydrauliikkakauppa.fi, 1 hydraulikbutiken.se, 1 hydrazin.pw, 1 hydrique.ch, 1 hydro-pool.org, 1 -hydro.group, 1 hydro17.com, 1 hydroagro.pl, 1 hydrochlorothiazide.gq, 1 @@ -71241,20 +71422,20 @@ hydronium.ml, 1 hydronium.tk, 1 hydronix-bg.com, 1 hydrooneombudsman.com, 1 -hydropoolandspa.com, 1 hydroposev.com, 1 hydrosaat.ch, 1 hydroscans.com, 1 -hydroscape-group.co.uk, 1 hydrosense.click, 1 hydrosila.com, 0 +hydrostor.ca, 1 hydroturbine.info, 0 hydrozen.io, 1 hydrozone.fr, 1 hyec.jp, 1 +hyex.com.au, 1 hyfood.it, 1 -hygeiadairy.com, 1 hygienet.be, 1 +hygo.com, 0 hygraph.com, 1 hyhealth.it, 1 hyk.me, 1 @@ -71282,6 +71463,7 @@ hyper.lol, 1 hyperalgesia.com, 1 hyperautomotive.com.au, 1 hyperblast-universe.tk, 1 +hyperblocks.tech, 1 hyperbolecomics.com, 1 hyperbolic-mayonnaise-interceptor.ovh, 1 hypercritical.co, 1 @@ -71309,7 +71491,6 @@ hypersequent.com, 1 hypershell.tk, 1 hypersomnia.com, 1 hyperspace.tk, 1 -hyperspectral-intelligence.com, 1 hyperstack.org, 1 hypertaut.com, 1 hypertension-agency.com, 1 @@ -71347,6 +71528,7 @@ hypofixweb.de, 1 hypofixx.de, 1 hypofox.de, 1 hypofux.de, 1 +hypokalkulacka.sk, 1 hypolife.de, 1 hypolineweb.de, 1 hypolink.com, 1 @@ -71378,11 +71560,9 @@ hyser.com.ua, 1 hysh.jp, 1 hysh.net, 1 hysh.org, 1 +hysolate.com, 1 hystats.net, 1 hysupchile.cl, 1 -hytale.com, 1 -hytaleid.com, 1 -hytaletrack.com, 1 hytravel.it, 1 hytzongxuan.com, 1 hytzongxuan.top, 1 @@ -71395,16 +71575,16 @@ hyundaipartsdeal.com, 1 hyundaisrilanka.lk, 1 hyunjoonkim.net, 1 hyvinvointineuvoja.fi, 1 -hyweene.fr, 1 hyy.chat, 1 hyyen.com, 1 hyyperchat.com, 1 -hyyr.cn, 0 +hyyr.cn, 1 hyze.fr, 1 hyzure.com, 1 hyzy.fr, 1 hz601.org, 1 hzbk.org, 0 +hzmpower.com, 1 hzqdl.com, 1 hztgzz.com, 1 hzuuuz.top, 1 @@ -71419,6 +71599,7 @@ i-cyber.gov.ua, 1 i-experts.nl, 1 i-fastnet.net, 1 i-forum.ga, 1 +i-gamingnews.com, 1 i-house.gq, 1 i-hoz.ru, 1 i-lab.ml, 1 @@ -71451,21 +71632,25 @@ i-vignette.com, 1 i-volve.net, 1 i-voting.pl, 1 i.hosting, 1 -i.vg, 1 i00.eu, 1 i00228.com, 1 i0day.com, 1 +i10z.com, 1 i18nweave.com, 1 i24.host, 1 i2capmark.com, 1 +i2education.com, 0 i2forensicmasters.com, 1 i2pc.es, 1 i2pgit.org, 1 i2x.cc, 1 i36533.com, 1 i36588.com, 1 +i3c6d0s.com, 1 i3o.me, 1 i49.net, 1 +i4i.com, 1 +i4recruit.com, 1 i4ware.fi, 1 i51365.com, 0 i5197.co, 1 @@ -71478,19 +71663,21 @@ i7.io, 1 i7sas.tk, 1 i88i.gq, 1 i9297.co, 1 +i95dev.com, 0 i9728.co, 1 i9s.in, 1 ia-tools.com, 1 +ia.net, 1 ia1000.com, 1 iaa.ee, 1 iaabc.org, 1 iaata.info, 1 iabot.tk, 1 +iac-indooraircare.com, 1 iacee.org, 1 iacono.com.br, 0 iactor.co.jp, 1 iactu.info, 1 -iacuwise.com, 1 iadore.tk, 1 iadschool.com, 1 iadttaveras.com, 1 @@ -71505,7 +71692,6 @@ iafda.org, 1 iafisgroup.com, 1 iafss2023.com, 1 iageengineering.net, 1 -iagsecured.com, 1 iainsimms.co.uk, 1 iainsimms.com, 1 iainsimms.me, 1 @@ -71514,11 +71700,11 @@ iam.lc, 0 iam.soy, 1 iamafricacampaign.com, 1 iamafricacampaign.org, 1 -iamalive.store, 1 iambhatti.tk, 1 iamcloud.de, 1 iamconnected.eu, 1 iamedicale.fr, 1 +iamfortytwo.com, 1 iamhealthystore.com, 1 iamhenryjvera.com, 1 iaminashittymood.today, 1 @@ -71527,6 +71713,7 @@ iamkate.com, 1 iamlearning.co.uk, 1 iamlegend.ml, 1 iamlife.com, 1 +iamlzh.com, 0 iamokay.nl, 1 iamrice.org, 1 iamsadmax.ga, 1 @@ -71535,6 +71722,7 @@ iamsamaskom.tk, 1 iamseo.co, 1 iamtheib.me, 1 iamthelife.io, 1 +iamthesweetspot.com, 0 iamtp.com, 1 iamveryti.red, 1 ian-barker.co.uk, 1 @@ -71549,7 +71737,6 @@ iancu.me, 1 iandf.ne.jp, 1 iandouglasscott.com, 1 iane-ccs.com, 1 -ianimpacts.com, 1 ianix.com, 1 ianklug.com, 1 iankmusic.com, 1 @@ -71573,7 +71760,6 @@ iapws.com, 0 ias-gruppe.net, 1 ias.co.jp, 1 ias.ua, 1 -iasme.co.uk, 1 iassess.eu, 1 iaswc.org, 1 iat-sia.org, 1 @@ -71583,10 +71769,9 @@ iaudited.com, 1 iav.com, 1 iav.de, 1 iava.ind.br, 1 -iawg.gov, 1 +iavalley.edu, 1 iawx.net, 1 iaxx.eu, 1 -ib-batereau.de, 1 ib-kreindl.at, 1 ib-zentrale.de, 1 iba.community, 1 @@ -71600,9 +71785,10 @@ ibavaro.com, 1 ibb.co, 1 ibb.co.com, 1 ibb.istanbul, 1 +ibc-container.be, 1 ibc.com, 1 ibcfinancial.com, 1 -ibcmed.com, 1 +ibcmed.com, 0 ibdmdb.org, 1 ibe.de, 1 ibec.ie, 1 @@ -71629,10 +71815,14 @@ ibhgospel.com, 1 ibi.mt, 1 ibidyoupeace.com, 1 ibiki-boushi-makura.net, 1 +ibilezakat.com, 1 ibilog.net, 1 +ibin.co, 1 ibipoint.com, 1 ibiu.xyz, 0 +ibiz.mk, 1 ibizads.tk, 1 +ibizaluxuryachts.com, 1 ibk.at, 1 iblackfriday.ro, 1 ibles.pl, 1 @@ -71642,7 +71832,6 @@ ibm.gov.in, 1 ibm.iobb.net, 1 ibm3.com, 1 ibmaspera.com, 1 -ibmc.com, 1 ibmix.de, 1 ibmreturns.gov.in, 1 ibmsonline.org, 1 @@ -71650,33 +71839,35 @@ ibo-chemnitz.de, 1 iboat.eu, 1 ibodyiq.com, 1 ibon.org, 1 +iboplayer.de, 1 iboysoft.com, 1 ibpegasus.tk, 1 ibpsrecruitment.co.in, 1 ibq.life, 1 ibra.org.uk, 1 ibrainmedicine.org, 1 -ibrave.nl, 0 +ibrave.nl, 1 ibrom.eu, 1 ibron.co, 0 ibsglobal.co.za, 1 ibsis.org, 1 ibstyle.tk, 1 +ibtikaralmutlaq.com, 1 ibtnetwork.org, 1 ibtx.com, 1 ibug.io, 1 ibuildings.com, 1 ibuildings.nl, 1 +ibuildutd.com, 1 ibuki.run, 1 -ibuluxe.com, 1 ibuprofens.gq, 1 iburgs.com, 1 ibutv.com, 1 ibuzz.tk, 1 +ibvv.cz, 1 ibwc.gov, 1 ibwil.com, 1 ibz.be, 1 -ic.edu, 1 ic3.gov, 1 ica.coop, 1 ica.org, 1 @@ -71704,7 +71895,6 @@ icccad.net, 1 iccloyalty.com, 1 iccorporateinteriors.com.au, 1 iccupplatoon.tk, 1 -iccus.net, 1 iccxx.cn, 0 icd-codes.org, 1 icd360s.de, 1 @@ -71720,6 +71910,7 @@ iceberg.cyou, 1 iceberg.ddns.me, 1 icebike.org, 1 icebook.co.uk, 1 +icebound.cc, 0 icebound.win, 1 iceboxstudio.tk, 1 icecars.net, 0 @@ -71759,6 +71950,7 @@ ich-finde-wikipedia-toll.tk, 1 ich-hab-die-schnauze-voll-von-der-suche-nach-ner-kurzen-domain.de, 1 ich-tanke.de, 0 icharme.fr, 1 +ichasco.com, 1 ichbinein.org, 1 ichbinhuebi.de, 1 ichbinkeinfreier.com, 1 @@ -71769,13 +71961,13 @@ ichglaubesbackt.de, 1 ichibanfansub.com.br, 1 ichibot.trade, 1 ichibot.vip, 1 +ichigo.university, 1 ichigoproduction.kr, 1 ichijoh.co.jp, 1 ichisound.ml, 1 ichitaka.tk, 1 ichitaso.com, 1 ichizenn.com, 1 -ichkannmitgestalten.de, 1 ichmt.org, 1 ichtroje.tk, 1 ichuck.rocks, 1 @@ -71812,10 +72004,10 @@ icojapan.tokyo, 1 icolabo.yokohama, 1 icolc.net, 1 icollezionisti.com, 1 -icom.edu, 1 icomputeconsulting.com, 1 icomuk.co.uk, 1 icon-programming.tk, 1 +iconbuild.com, 1 iconcope.org, 1 icone-one.fr, 1 iconexperience.com, 1 @@ -71838,11 +72030,8 @@ icorlando.org, 1 icounseling.com, 1 icountnm.gov, 1 icowhitepapers.co, 1 -icpa-banyuwangi.ac.id, 1 icpamerica.com, 1 icpc2016.in.th, 1 -icpchue.com, 1 -icpchue.xyz, 1 icpcnj.org, 1 icq-project.net, 1 icq-world.tk, 1 @@ -71851,10 +72040,11 @@ icr-box.ddns.net, 1 icraft.bg, 1 icrat.org, 1 icreative.nl, 1 +icruise.com, 1 icsense.com, 1 +icsolutions.nl, 1 icst.tk, 1 icsti.org, 1 -ict-community.nl, 1 ict-oldehove.nl, 1 ict-radar.com, 0 ict-radar.nl, 0 @@ -71874,8 +72064,9 @@ icts.gov, 1 icttindia.org, 0 ictv1.com, 1 ictwebsolution.nl, 1 -icuc.social, 0 +icuc.social, 1 iculture.nl, 1 +icusignature.com, 1 icustomboxes.com, 1 icyapril.com, 1 icycanada.com, 1 @@ -71883,6 +72074,7 @@ icydestiny.com, 0 icyhealth.com, 0 icyheroes.com, 1 icyrock.com, 1 +icytales.com, 0 icywhiz.com, 1 iczc.cz, 1 icze4r.co, 1 @@ -71898,6 +72090,7 @@ id-conf.com, 1 id-fxcm.com, 1 id-strategies.com, 1 id.atlassian.com, 0 +id.et, 1 id.fedoraproject.org, 0 id.mayfirst.org, 1 id.search.yahoo.com, 0 @@ -71935,6 +72128,7 @@ iddconnect.org, 1 iddportugal.pt, 1 ideaboxapp.com, 1 ideacouture.com, 1 +ideactica.com, 1 ideadozz.hu, 1 ideageek.net, 1 ideagenpentana.com, 1 @@ -71944,6 +72138,7 @@ ideahub.tk, 1 ideahubnepal.org, 1 ideaktiv.com, 1 ideal-social.com, 1 +ideal.ee, 1 ideal.shop, 1 idealabs.tk, 1 idealadvogadosbh.com.br, 1 @@ -71979,7 +72174,6 @@ ideashop.com, 1 ideasinlab.com, 1 ideasledgrowth.com, 1 ideasroom.eu.org, 1 -ideatrade.com.pl, 1 ideawake.com, 1 ideaweb.de, 1 idec.com, 1 @@ -72000,13 +72194,13 @@ idempiere.org, 1 iden-tt.com, 1 iden-tt.net, 1 iden-tt.org, 1 -idenef.co.jp, 1 idenfit.com, 1 idensys.nl, 1 ident-clinic.be, 1 ident4u.de, 1 identassist.com, 1 identeco.de, 1 +identifyme.net, 1 identifytag.com, 1 identigraf.center, 1 identikpkh.com, 1 @@ -72054,12 +72248,13 @@ idlewildflowers.com, 1 idlxb.com, 1 idmanagement.gov, 1 idmaster.ml, 1 -idmc-gcfsm.org, 0 idmmovers.com, 1 idmod.org, 1 idn.gov.pt, 0 idndomain.tk, 1 +idndx.com, 1 idnic.net, 1 +idnpacific.com, 1 ido.nl.eu.org, 1 idohost.tk, 1 idol-bikes.ru, 1 @@ -72075,7 +72270,9 @@ idoxus.de, 1 idraetsmusik.dk, 1 idratherbequilting.com, 1 idraulico-roma.it, 1 +idraulico-roma.org, 1 idraulico.roma.it, 1 +idream-solutions.co.uk, 1 idrissi.eu, 1 idrivegroup.ie, 1 idrix.com.ec, 1 @@ -72089,12 +72286,13 @@ idsteinerteeladen.de, 1 idstudio.tk, 1 idtechnowizard.com, 1 idtheft.gov, 1 +idtrkarnal.com, 1 iduneo.com, 1 iduntownshipmn.gov, 1 idute.com, 0 idvchile.cl, 1 idvl.de, 1 -idw.pt, 0 +idw.pt, 1 idwebtools.tk, 1 idxforza.com, 1 idyeslogistics.com, 1 @@ -72104,7 +72302,6 @@ ieap.it, 1 iear.be, 1 iear.nl, 1 iec-telecom.com, 1 -iedc.ie, 1 iedereenaanzet.nl, 1 iedr.ie, 1 ieduex.com, 1 @@ -72127,6 +72324,7 @@ ienohikari-koubo.com, 1 ieomidi.com, 1 iepaiement.fr, 1 iepanywhere.com, 1 +ierecordings.com, 1 ieros.it, 1 iesledzkarjeru.lv, 1 iesm.lk, 1 @@ -72135,9 +72333,11 @@ iess2047.gov.in, 1 iesvegadesanmateo.org, 1 ieval.ro, 1 ievgenialehner.com, 1 +iewar.com, 1 iexaminer.org, 1 if-news.ru, 1 if0.ru, 1 +ifacservice.be, 0 ifactfind.com.au, 1 ifactfind.io, 1 ifadian.club, 1 @@ -72166,7 +72366,6 @@ ifgcdn.com, 1 ifh.cc, 1 ifia.com, 1 ifindapple.com, 1 -ifinity.org, 1 ifisher.xyz, 1 ifleurs.com, 1 iflis.de, 1 @@ -72179,7 +72378,6 @@ ifminvestors.co.uk, 1 ifminvestors.com, 1 ifminvestors.com.au, 1 ifmsa-lahore.tk, 1 -ifncredite.ro, 1 ifnet.fr, 1 ifoa.it, 1 ifohancroft.com, 1 @@ -72206,16 +72404,16 @@ iftta.org, 1 ifur.ga, 1 ifworlddesignguide.com, 1 ifxnet.com, 1 +ifylofd.xyz, 1 ifyou.bg, 1 ig-plastik.tk, 1 ig.com, 1 -ig.fr, 1 ig.me, 1 iga-semi.jp, 1 igame.ml, 1 -igaming.express, 1 igamingaffiliateprograms.com, 1 igamingdirectory.com, 1 +igamingnews.com, 1 igamingnyheder.dk, 1 igamingpocketdirectory.com, 1 igamingsuppliers.com, 1 @@ -72235,11 +72433,10 @@ igglabs.com, 1 iggprivate.com, 1 iggsoft.com, 1 iggsoftware.com, 1 +iggyz.com, 1 igi-2.com, 1 -igibee.pl, 1 igiftcards.de, 1 igiftcards.nl, 1 -igig.ie, 1 igimusic.com, 0 igiugig.gov, 1 igkabel.cf, 1 @@ -72255,7 +72452,6 @@ igloocommunities.com, 1 igloodigitalworkplace.ca, 1 igloodigitalworkplace.com, 1 igloodigitalworkplaces.ca, 1 -igloolab.co, 1 igloopartnerportal.com, 1 igloopreview.ca, 1 iglosujemy.pl, 1 @@ -72263,7 +72459,6 @@ igmus.org, 1 ign-proprete.fr, 1 ignace72.eu, 1 ignacjanskiednimlodziezy.pl, 1 -ignasiesteve.com, 1 ignat-mag.com, 1 ignat-torcov.tk, 1 ignatij.tk, 1 @@ -72274,13 +72469,13 @@ ignet.gov, 1 ignite-reading.com, 1 ignite.cz, 1 igniteautomotive.co.uk, 1 -ignitedfire.eu, 1 ignitedmindz.in, 1 igniteenergy.co.uk, 1 igniteheatcool.com.au, 1 igniteyoursellingpotential.com, 1 ignitiondeck.com, 1 ignitours.com, 1 +ignytebrands.com, 1 igor-hristenko.tk, 1 igor-usov.tk, 1 igorandandre.com, 1 @@ -72305,13 +72500,17 @@ igram.io, 1 igramming.com, 1 igranit.md, 1 igraonicalara.tk, 1 +igrarium.com.ua, 1 igreja.digital, 1 igrek.co.jp, 1 igrinka.ua, 1 igrodrom-kvest.tk, 1 igromasikov.tk, 1 igrovoi-klub.tk, 1 +igrun.com, 1 +igrun80.com, 1 igrun88.com, 1 +igrunplay.com, 1 igry-onlayn.ru, 1 igryalawar.tk, 1 igshop.ir, 1 @@ -72324,14 +72523,14 @@ iguanacruda.tk, 1 iguru.gr, 1 igust4u-archive.ga, 1 igva.or.kr, 1 -ih-app.de, 1 ih8sn0w.com, 1 iha6.com, 1 ihacares.com, 1 +ihacker.ai, 1 ihakkitekin.com, 1 +ihatebackground.com, 1 ihatethissh.it, 1 ihaunt.co.uk, 1 -ihawp.com, 1 ihazurip.com, 1 ihc.im, 1 ihda.org, 1 @@ -72412,7 +72611,7 @@ iiservices.org, 1 iisjy.cn, 1 iispeed.com, 1 iisuss.gq, 1 -iita.org, 0 +iita.org, 1 iitbmonash.org, 1 iitcr.ca, 1 iitcr.com, 1 @@ -72426,16 +72625,17 @@ ijemin.com, 1 ijianli.cn, 1 ijji.tv, 1 ijk.nl, 1 +ijm.com, 1 ijmondlijn.nl, 1 ijmuiderstrand.tk, 1 ijnokmpl.cf, 1 ijpmediagroup.com, 1 ijsbaanwitten.nl, 1 ijsblokjesvormen.nl, 1 -ijsclubtilburg.nl, 1 ijsj.ie, 1 ijsselglas.nl, 1 ijubt.cf, 1 +ijunohana.jp, 1 ijustwanttomeetmyheroes.com, 1 ika.monster, 1 ikachalife.com, 1 @@ -72447,10 +72647,12 @@ ikaria.com.gr, 1 ikaros.tk, 1 ikarus-itkurs.de, 1 ikazumitsu.tk, 1 +ikbear.me, 1 ikbenrichie.nl, 0 ikeacareers.co.uk, 1 ikebuku.ro, 1 ikecosta.com, 1 +ikeda-ic.com, 1 ikedaquotes.org, 1 ikenmeyer.com, 1 ikenmeyer.eu, 1 @@ -72463,7 +72665,6 @@ ikimo9.com, 1 ikinogo.com, 0 ikinogo.zone, 1 ikinokori-marketing.com, 1 -ikipedia.org, 1 ikisser.de, 1 ikiteker.org.tr, 1 ikk-classic.de, 0 @@ -72483,25 +72684,26 @@ ikmx.net, 1 iknowd.org, 1 iknowthatgirl.com, 1 iknowthatgirlpremium.com, 1 -ikoreg.nl, 1 ikra24.in.ua, 1 ikrab.club, 1 iks.moe, 1 iksi.me, 1 -iksz.org, 1 -iksz.work, 1 +iksworld.kr, 1 +iksz.org, 0 +iksz.work, 0 ikuda.eu, 1 ikudo.top, 1 ikumi.us, 1 +ikutin.id, 1 ikvts.de, 1 ikwildjworden.com, 1 ikwileendomein.tk, 1 ikx.me, 1 -ikymomo.com, 1 ikzoekeengoedkopeauto.nl, 1 ikzoektim.nl, 1 il12thcourt.gov, 1 ila.tw, 1 +ilab.health, 1 ilac.ai, 1 ilac101.com, 1 ilacrehberi.com, 1 @@ -72523,12 +72725,12 @@ ilcorrieredellacitta.com, 1 ilcourthelp.gov, 1 ilctucson.com, 1 ildepu.tk, 1 +ildigitale.it, 1 ildisagio.tk, 1 ildomani.it, 1 ile-kalorii.pl, 1 ile-sapporo.jp, 1 ilearned.eu, 0 -ilearnromanian.com, 1 ileci.de, 1 ileduguesclin.fr, 1 ilektronika-farmakeia-online.gr, 1 @@ -72545,7 +72747,6 @@ ilgiornalepopolare.it, 1 ilgisaglik.com, 1 ilhan.name, 1 ilhombek.ml, 1 -ilia.ae, 1 iliad78.net, 1 iliamna.media, 1 iliastsi.net, 1 @@ -72567,7 +72768,6 @@ ilin.dk, 1 ilin.xyz, 1 iling.me, 1 iliny.hu, 1 -ilio.com, 1 ilionsky.com, 1 iljadr.be, 1 ilkeston.cc, 1 @@ -72581,14 +72781,15 @@ illavobuempliz.ch, 1 illegalpornography.com, 1 illegalpornography.me, 1 illerzell.de, 1 +illiah.com, 1 illicitart.ca, 1 illicitdigital.com, 1 illimitmail.com, 1 illinitechservice.com, 0 illinoiscaselaw.com, 1 illinoiscourtscommission.gov, 1 +illinoiseagle.com, 0 illinoishealth.tk, 1 -illinoisschools.us, 1 illinoistitlesearch.com, 1 illiweb.com, 1 illjinx.info, 1 @@ -72638,7 +72839,6 @@ ilovesamara.tk, 1 ilovesnow.ml, 1 ilovestickers.gr, 1 ilovetaveuni.com, 1 -ilovethisworld.com, 1 ilovewallpaper.tk, 1 iloveyoutoo.tk, 1 ilovias-farm.fr, 1 @@ -72651,7 +72851,6 @@ ils-savaient.fr, 1 ils.lt, 1 ilsalvagente.it, 1 ilsedelangeforum.tk, 1 -ilsofvilnius.lt, 1 iltec.ru, 1 iltis.live, 1 iltis.rocks, 1 @@ -72689,14 +72888,15 @@ im4h.info, 1 im66.net, 0 ima-solutions.fr, 1 imadalin.ro, 1 -imagasinet.no, 1 image-cdn.co.uk, 1 image-drive.de, 1 image.hosting, 1 image.tf, 1 image4arab.tk, 1 imagealbums.tk, 1 +imagebin.ca, 1 imagecom.tk, 1 +imageconsultingmalta.com, 1 imagecurl.com, 0 imagelr.com, 1 imagen891.tk, 1 @@ -72712,7 +72912,6 @@ imageurs.com, 1 imagevillage.ir, 1 imageworkscorporation.com, 1 imageworld.tk, 1 -imaginablefutures.com, 1 imaginarium.tk, 1 imaginary.ca, 1 imaginary.stream, 1 @@ -72721,18 +72920,17 @@ imaginationpathway.com, 1 imagindairy.com, 1 imagine-programming.com, 1 imagineata.ro, 1 -imagineberks.org, 1 imaginefamilychiropractic.com, 1 imaginelab.club, 1 imaginenewcastle.net.au, 1 imagineokla.gov, 1 imaginescape.tk, 1 imaginethefloor.tk, 1 -imaginethissound.com, 1 imagingstudio.co.uk, 0 imagisphe.re, 1 imajjeans.com, 1 imakash.gq, 1 +imakin.nl, 1 imamenu.com, 1 imamiyadental.jp, 1 imanageproducts.co.uk, 1 @@ -72742,6 +72940,7 @@ imandra.ai, 1 imanol.com, 1 imanolbarba.net, 1 imanoles.ddns.net, 1 +imap.support, 1 imap2imap.de, 1 imaple.net, 1 imaple.org, 1 @@ -72751,6 +72950,7 @@ imarkethost.co.uk, 1 imarketing.pe, 1 imarotulos.com, 1 imasa.com.br, 1 +imashtech.com, 1 imask.ml, 1 imask.tk, 1 imastudent.com, 1 @@ -72785,6 +72985,7 @@ imedi.it, 1 imediabay.com, 1 imediafly.com, 1 imediato.pt, 1 +imediatoonline.com, 1 imena-znachenie.ru, 1 imenalfa.com, 1 imenieto.com, 1 @@ -72792,6 +72993,7 @@ imeria.tk, 1 imerys-mineraux-decoratifs.com, 1 imesh-light.tk, 1 imex-dtp.com, 1 +imfacademy.com, 1 imforza.com, 0 img.ovh, 1 imgaa.com, 1 @@ -72802,7 +73004,6 @@ imgg.es, 1 imgmodels.com, 0 imgo.ga, 1 imgo.tk, 1 -imgossip.com, 1 imgossip.net, 1 imgup.co, 1 imguploaden.nl, 1 @@ -72824,7 +73025,7 @@ imisa.com.mx, 1 imisto.net, 1 imitationjewelry.tk, 1 imitza.com, 0 -imjason.hk, 1 +imjconnect.co.uk, 1 imjo.in, 1 imjosepho.lol, 1 imjustcreative.com, 1 @@ -72851,6 +73052,7 @@ immaterium.de, 1 immedia.net, 1 immedicohospitalario.es, 1 immel.org, 1 +immelnet.com, 1 immense.ly, 1 immerfolg.de, 1 immersionclub.tk, 1 @@ -72912,6 +73114,7 @@ immobilienmakler-berlin-mahlsdorf.de, 1 immobiliensachverstaendiger-ludwigsburg.de, 1 immobiliensachverstaendiger-waiblingen.de, 1 immobilienservice-website.de, 1 +immobilienverwaltung-winterfeldt.de, 1 immobilier-realiste.fr, 1 immobilier-swiss.ch, 1 immobilier.org.il, 1 @@ -72963,14 +73166,15 @@ immospezial.eu, 1 immospezial.info, 1 immospezial.net, 1 immospezial.org, 1 -immostreet.ch, 1 immowot.de, 1 immtel.co, 1 immtel.com, 1 immune.cf, 1 immunetolerance.org, 1 +immuniweb.com, 1 immunoboost.be, 1 immunowell-jcv-portal.com, 1 +immutable.com, 0 imnabrasive.com, 1 imnhealth.com, 1 imnot.uk, 1 @@ -72988,6 +73192,7 @@ imobiliariaprofit.com.br, 1 imobiliariarealdream.com.br, 1 imobilien.tk, 1 imoe.fun, 0 +imojob.com, 1 imol.ai, 1 imola.com.ua, 1 imolights.com, 1 @@ -73021,7 +73226,6 @@ impactovenezuela.com, 1 impactparcels.co.uk, 1 impactphysio.co.uk, 1 impactpub.ch, 0 -impactyou-academy.nl, 1 impactyou.nl, 1 impakho.com, 1 impalaparts.com, 1 @@ -73033,6 +73237,7 @@ impec-cable.com, 1 impeka.in, 1 impelsys.com, 1 impelup.com, 1 +impelup.net, 1 impendulo.org, 1 imperator-janssens.tk, 1 imperdin.com, 1 @@ -73065,13 +73270,14 @@ impfung.site, 1 imphotep.net, 1 impianti.it, 1 impiantofotovoltaico.roma.it, 1 +impiricus.com, 1 implant418.jp, 1 implantologiadentalgt.com, 1 implanttrade.hu, 1 implementconsultinggroup.com, 1 -implementorsinsights.com, 1 implicitsuccess.com, 1 implosion.tk, 1 +implude.com, 0 import-shopping.de, 1 important-stories.com, 1 importanteducation.tk, 1 @@ -73079,7 +73285,7 @@ importsagt.com, 1 importsem.com, 1 importsign.com, 1 imposingoods.com, 1 -impossible.org, 0 +impossible.org, 1 impossiblechoisir.tk, 1 impossiblehq.com, 1 imppac-schmuck.de, 1 @@ -73140,7 +73346,6 @@ impulsocristiano.com, 1 imput.net, 1 imqrscan.com, 1 imranc.ca, 1 -imranhasan.info, 1 imranhossen.ml, 1 imransarwar.com, 1 imrbq.com, 1 @@ -73160,6 +73365,7 @@ imtikaib.ml, 1 imtools.gq, 1 imtqy.com, 1 imttech.co, 1 +imumed.cz, 1 imunify360.com, 1 imusionforum.tk, 1 imwc.me, 0 @@ -73170,7 +73376,7 @@ imzye.me, 1 in-1xbet.com, 1 in-bachelor.de, 1 in-books.tk, 1 -in-chat.ai, 0 +in-chat.ai, 1 in-con.com, 1 in-crypto.tk, 1 in-depth.wiki, 1 @@ -73180,11 +73386,11 @@ in-flames.com, 1 in-line.ru, 1 in-love.tk, 1 in-melbet.com, 1 +in-nova-re.com, 1 in-star.com.ua, 1 in-ua.com, 1 in.search.yahoo.com, 0 in2core.com, 1 -in6.to, 1 inab.me, 1 inaji.com, 1 inakasoftware.com, 1 @@ -73205,20 +73411,18 @@ inara.cz, 1 inares.org, 1 inarigal.com, 1 inarizona.tk, 1 -inastia.fr, 1 +inatel.br, 1 inavegas.com, 1 inawe.life, 1 inawisdom.com, 1 inbetweenathome.nl, 1 -inbetweenermelo.nl, 1 inbitcoin.it, 1 inblank.tk, 1 inbound.tk, 1 inbox.com, 1 inbox.google.com, 1 inbox.gq, 1 -inboxen.org, 0 -inboxmonster.com, 1 +inboxen.org, 1 inboxsms.tk, 1 inboxxme.com, 1 incarceratedwombats.com, 1 @@ -73261,21 +73465,22 @@ incident.dk, 1 incident.io, 1 incidentresponsesolution.com, 1 incidentresponsesystem.com, 1 -incleanse.co.uk, 1 includesnetwork.org, 1 includesubdomains.preloaded.test, 1 includesubdomains2.preloaded.test, 1 +inclusiocommunity.com, 1 inclusion.tn, 1 inclusionhcpa.org, 1 +inclusioproject.com, 1 inclusiv.nl, 1 incn.pp.ua, 1 incn.su, 1 incnjp.com, 1 incntfit.com, 1 incognito.org.uk, 1 -incoko.ai, 1 income-earnings.tk, 1 incomeaccess.com, 1 +incomeestatellc.com, 1 incomeplus.tk, 1 incometricks.tk, 1 incomewithdraw.tk, 1 @@ -73309,7 +73514,6 @@ ind.ie, 1 indamail.hu, 1 indata42.nl, 1 indatable.com, 1 -indebuurt.nl, 1 indecente.tk, 1 indeco.com.ec, 1 indecomm.com, 1 @@ -73363,7 +73567,6 @@ indiafoss.net, 1 indiainvestments.wiki, 1 indiamistress.tk, 1 indianacareerconnect.com, 1 -indianaffairs.gov, 1 indianahealth.tk, 1 indianajail.gov, 1 indianapolismet.org, 1 @@ -73377,12 +73580,14 @@ indianbeauty.ml, 1 indianbridalservices.com, 1 indianbrides.cf, 1 indiancreekvillagepdfl.gov, 1 +indianculture.gov.in, 1 indiandramasonline.tk, 1 indianengineer.tk, 1 indianet.tk, 1 indiangamingreport.com, 1 indiangolf.com, 1 indianhairextension.tk, 1 +indianheadcu.org, 1 indianhill.gov, 1 indianhillclub.org, 1 indianhillshopnsave.com, 1 @@ -73393,6 +73598,7 @@ indianporn2.xxx, 1 indianrelaypodcast.com, 0 indianriver.gov, 1 indiantechhunter.tk, 1 +indiantextilejournal.com, 1 indianvirginhumanhair.tk, 1 indianwarriors.tk, 1 indianwellsca.gov, 1 @@ -73404,13 +73610,10 @@ indiatravel.ml, 1 indiatrotter.com, 1 indiaviral.ga, 1 indiavotekar.com, 1 -indiawikipedia.com, 1 indiawise.co.uk, 1 indiaworlddigital.tk, 1 indicana.pl, 1 indicatifs.fr, 1 -indicelectronics.com, 1 -indichosts.net, 1 indicia.nl, 1 indico.tk, 1 indicodata.ai, 1 @@ -73420,6 +73623,7 @@ indiemovementers.ga, 1 indiemovementest.ga, 1 indiereview.tk, 1 indieweb-endpoints.cc, 1 +indieweb.rocks, 1 indigartbeading.ca, 1 indigartbeading.com, 1 indigenous.gov.au, 1 @@ -73430,8 +73634,8 @@ indigo.pet, 1 indigo.tk, 1 indigoblack.com.au, 1 indigobooks.gq, 1 -indigodergisi.com, 1 indigojewelers.com, 1 +indigopaints.be, 1 indigosakura.com, 1 indigterms.com, 1 indihome.co.id, 1 @@ -73443,12 +73647,9 @@ indioca.gov, 1 indir2017.tk, 1 indirhadi.tk, 1 indirimkuponumarketim.com, 1 -indirimlim.com, 1 indironline.com, 1 -indistopia.com, 1 inditip.com, 1 indivicloud.me, 0 -individualizedshirts.com, 1 individualobligation.com, 1 individuals.tk, 1 indiwebawards.tk, 1 @@ -73460,6 +73661,7 @@ indnews.ga, 1 indo-wiki.fr, 1 indo4life.tk, 1 indobia-massage-thun.ch, 1 +indobo.com, 0 indobrains.id, 1 indochinatravel.tk, 1 indodax.com, 1 @@ -73471,6 +73673,7 @@ indogermantrade.de, 1 indoidnews.ga, 1 indonesiatrip.tk, 1 indoor-kletterwald.de, 1 +indoorbattingcages.net, 1 indoorlandmarks.com, 1 indopress.tk, 1 indorepack.com, 1 @@ -73511,6 +73714,7 @@ industrialcontainer.com, 1 industrialgassprings.com, 1 industrialprecisionmfg.com, 0 industriascruz.co, 1 +industrilokal.com, 1 industrydecarbonization.com, 1 industryoutlaws.tk, 1 industryskillsaustralia.org.au, 1 @@ -73530,9 +73734,9 @@ inet.cat, 1 inet.se, 1 inetdesign.tk, 1 inetech.fun, 1 +inetinfo.io, 1 inetis.com, 1 inetol.net, 1 -inetpro.io, 1 inetserver.eu, 1 inetuser.tk, 1 inetworking.it, 1 @@ -73549,6 +73753,7 @@ inf-it.com, 1 inf0sec.nl, 1 infakt.pl, 1 infaktcdn.pl, 1 +infalaw.com, 1 infamousguild.tk, 1 infans.be, 1 infantry.org.ua, 1 @@ -73556,7 +73761,6 @@ infanziaeadolescenza.it, 1 infarktniki.ru, 1 infarmbureau.com, 1 infcloud.com, 1 -infected.systems, 1 infectedvoice.tk, 1 infecyon.tk, 1 infeedo.com, 1 @@ -73567,6 +73771,8 @@ inferiousbypasser.cf, 1 infermiere.roma.it, 1 inferno.co.uk, 1 infertilitycure.tk, 1 +inffin-portal.de, 1 +infhosting.com.au, 1 infi.ch, 1 inficom.org, 1 infidel.org, 1 @@ -73576,7 +73782,6 @@ infiernoalgecireno.tk, 1 infihow.com, 1 infinbank.com, 1 infinether.net, 1 -infinicore.co.zw, 1 infinifit.store, 1 infinipharm.com, 1 infinitblog.de, 1 @@ -73586,21 +73791,20 @@ infinitelightofbeing.org, 1 infinitenews.cf, 1 infinitenews.ml, 1 infiniteserieslabs.com, 1 -infinitetoast.com, 1 infinitewealth.com.au, 1 infinitiofallentownparts.com, 1 infinitiofaugustaparts.com, 1 +infinitioflynnwoodparts.com, 0 infinitiofmarinparts.com, 1 infinitipartsdeal.com, 1 infinitiresearch.com, 1 -infinitisoftware.net, 1 infinito.tk, 1 infinitoporciento.tk, 1 infinity-area.com, 1 infinity-photography.co.uk, 1 -infinity-store.fr, 1 infinitybc.se, 1 infinitybooksindia.in, 1 +infinitybots.gg, 1 infinityels.com, 1 infinityfaces.tk, 1 infinityfx.co, 1 @@ -73611,16 +73815,13 @@ infinityready.com, 1 infinityrecruitinggroup.com, 1 infinityspm.com, 1 infinityvr.net, 1 -infinityweb.com.au, 0 +infinityweb.com.au, 1 infinityworks.com, 1 infino.me, 1 infinoe.fr, 1 infinum.com, 1 infirmieredevie.ch, 0 infirmiers-montpellier.fr, 1 -infiverse.de, 1 -infiverse.net, 1 -infiverse.space, 1 infl.tv, 1 infla-tables.tk, 1 inflammatory.tk, 1 @@ -73633,12 +73834,12 @@ inflatiecalculator.nl, 1 inflationstation.net, 1 inflexa.com, 1 inflexsys.com, 0 -inflowave.io, 1 influencemobile.services, 1 influencestaging.services, 1 influencetechpr.com, 1 influentsolutions.ch, 1 influnest.com, 1 +influo.com, 1 info-beamer.com, 1 info-bolivia.tk, 1 info-compusciencetech.tk, 1 @@ -73658,10 +73859,12 @@ info-strefa.pl, 1 info-sys.tk, 1 info-tech.tk, 1 info-usaha.tk, 1 +info-ut.com, 1 info.gov, 1 info2all.nl, 1 info4camper.com, 1 infoamin.com, 1 +infoapis.net, 1 infobae.com, 1 infobalkans.com, 1 infobanglanet.tk, 1 @@ -73684,6 +73887,7 @@ infocapsol.com, 1 infocert.digital, 1 infocert.it, 1 infocielo.com, 1 +infocision.com, 1 infocoin.es, 1 infocrypto.pl, 1 infocus.company, 0 @@ -73698,6 +73902,7 @@ infoflora.ch, 1 infofp.tk, 1 infogai.tk, 1 infogamesports.tk, 1 +infogate.ch, 1 infogate.ga, 1 infogram.com, 1 infogress.tk, 1 @@ -73707,6 +73912,7 @@ infoiinfo.tk, 1 infoindia.tk, 1 infoiptv.tk, 1 infoislamharian.tk, 1 +infojeunes.fr, 1 infojmp.com, 1 infokesehatan.ga, 1 infoland.ml, 1 @@ -73735,7 +73941,6 @@ infopercept.com, 0 infopreneur.blog, 1 infoprofuse.com, 1 infopulse.com, 1 -infopumpkin.com, 1 infopuntzorg.nl, 0 inforabota.tk, 1 inforata.com, 1 @@ -73788,20 +73993,19 @@ infortuni.it, 1 inforver.com, 1 infosactu.com, 1 infoschool.ml, 1 -infosec-tools.de, 1 infosec.exchange, 0 infosec.md, 1 +infosec.mv, 1 infosecchicago.com, 1 infosecdecompress.com, 1 infosecindex.com, 1 infosecsw.ca, 0 infosectek.io, 1 infosective.org, 1 -infosecurite.com, 1 infoserp.net.pe, 1 infoshield.sa, 1 infosolution.biz, 0 -infosoph.org, 0 +infosoph.org, 1 infostack.store, 1 infostor.com, 1 infosystem.cf, 1 @@ -73812,6 +74016,7 @@ infotectsecurity.com, 1 infoteka.cf, 1 infotelsystems.com, 1 infotics.es, 1 +infotune.nl, 1 infotv.io, 1 infotype.ga, 1 infovb.org, 1 @@ -73834,7 +74039,6 @@ infracron.com, 1 infradio.am, 1 infradive.com, 1 infraedifice.com, 1 -infraenlinea.com, 1 infrafor.us, 1 infragardnational.org, 1 infralicht.nl, 1 @@ -73852,6 +74056,7 @@ infraplushk.com, 1 infraredproductions.com, 1 infraredradiant.com, 1 infras.fr, 1 +infrasa.gov.br, 1 infrastatic.com, 1 infravoce.com, 1 infraware.com, 1 @@ -73869,6 +74074,7 @@ ing-buero-junk.de, 1 ing-holzbau.de, 1 ing-sat.hu, 1 ing.dk, 1 +ing.ro, 1 inga-renner.de, 1 ingalabs.hu, 1 ingatlanjogaszok.hu, 1 @@ -73881,13 +74087,14 @@ ingemmologie.com, 1 ingenesis.com, 1 ingeni.ink, 1 ingeniasas.com, 1 +ingenieriaclinica.org, 0 +ingenieurbatiment.com, 1 ingenieure-website.de, 1 ingenious-development.tk, 1 ingenium.si, 1 ingeniumsociety.tk, 1 ingenius.ws, 1 ingenuitycloudservices.com, 1 -ingeospect.si, 1 ingerhy.com, 1 ingermany.ml, 1 ingersolltwpmi.gov, 1 @@ -73910,6 +74117,7 @@ inglestotal.tk, 1 ingo-schlueter.de, 1 ingo-struck.com, 1 ingo-struck.de, 1 +ingoldingen.de, 1 ingolfsskali.is, 1 ingoschlueter.de, 1 ingrain-ed.com, 1 @@ -73922,7 +74130,6 @@ ingress.com, 1 ingridbai.me, 1 ingrijimbatraniladomiciliu.ro, 1 ingticos.com, 1 -ingtt.com, 1 ingushetia.tk, 1 ingushetiya-news.net, 1 ingwaz.org, 1 @@ -73957,6 +74164,7 @@ initramfs.io, 1 initrandom.com, 1 injerry.com, 1 injigo.com, 0 +injuryactive.com, 1 injurylawyers.com, 1 injurylawyersphoenixaz.com, 1 injust.cf, 1 @@ -73974,10 +74182,11 @@ inkbunny.net, 1 inkburners.ga, 1 inkburnest.ga, 1 inkdawgz.com, 0 -inkdesign.com.br, 1 +inkeddytattoo.fi, 1 inkedin.com, 1 inkedindarkness.com, 1 inkflaremagazine.com, 1 +inkforall.com, 1 inkhor.se, 1 inkibra.net, 1 inkjets-inks.tk, 1 @@ -73993,6 +74202,7 @@ inkomensafhankelijkehuurverhoging.nl, 1 inkopers.org, 1 inkor.tk, 1 inksay.com, 1 +inkstar.ro, 1 inkteeshop.com, 1 inkthedealseminars.com, 1 inkthreadable.co.uk, 1 @@ -74004,6 +74214,7 @@ inl.gov, 1 inl.int, 1 inlandwaterwaylistings.com, 1 inlce.com, 1 +inlights.io, 0 inlimiters.ga, 1 inlimitest.ga, 1 inline-online.tk, 1 @@ -74014,7 +74225,8 @@ inlink.ee, 1 inlink.eu, 1 inlink.ltd, 1 inlink.one, 1 -inlock.ai, 1 +inlocon.de, 1 +inlucknow.org, 1 inlumi.com, 1 inmaaa.cf, 1 inmateintake.com, 1 @@ -74043,6 +74255,7 @@ innari.it, 1 innatepotatoes.com, 1 innatocol.com, 1 inncoaching.nl, 1 +innectsphere.ca, 1 innenstadtkirche.de, 1 inner-change-mastery.com, 1 inner-vision.tk, 1 @@ -74051,12 +74264,12 @@ innerfence.com, 1 innerglowessentials.net, 1 innerlifeskills.com, 1 innerlightcrystals.co.uk, 1 +innermarkerranch.com, 1 innermindpsychology.com.au, 1 innermostparts.org, 1 innerpeace.tk, 1 innerspace.ae, 1 innewsweekly.com, 1 -innexis.com, 1 innico.cf, 1 inniger.be, 1 innio.com, 1 @@ -74076,14 +74289,19 @@ innomotion.nl, 1 innosec.ch, 1 innosoftfusiongo.com, 1 innosysdelft.com, 1 +innotech.ge, 1 +innoteil.com, 1 innoteknology.com, 1 innova-online.at, 1 innova-scape.info, 1 innovacoachgroup.com, 1 innovairservices.ch, 0 +innovamarketing.com, 1 innovamedical.co.uk, 1 innovaptor.at, 1 innovaptor.com, 1 +innovareai.com, 1 +innovasistemas.com, 1 innovate-indonesia.com, 1 innovateohio.gov, 1 innovateohioplatform.gov, 1 @@ -74103,8 +74321,6 @@ innovativeunderwriters.com, 1 innovatopia.jp, 1 innovent.com, 1 innover.se, 1 -innovex-inc.com, 1 -innovexus.io, 1 innoviafilms.com, 0 innoviahome.com, 1 innovinity.io, 1 @@ -74122,6 +74338,7 @@ inokolab.net, 1 inolution.com, 1 inomics.com, 1 inondation.ch, 0 +inorden.se, 1 inoreader.com, 1 inorigo.com, 1 inorigo.net, 1 @@ -74169,8 +74386,6 @@ inquant.de, 1 inquestconsulting.com, 0 inquisicion.tk, 1 inquisition.is, 1 -inquoctuan.com, 1 -inquoctuan.vn, 1 inregistrar.com, 1 inrilan.tk, 1 ins-kreativ.de, 1 @@ -74194,6 +74409,7 @@ insecret.ua, 1 insecure.org.je, 1 insee.com.vn, 1 insegne.roma.it, 1 +inser.com.co, 1 inserta.tk, 1 insertcoin.fr, 1 insertcredit.com, 1 @@ -74209,6 +74425,7 @@ insideastronomy.tk, 1 insidebeach.com.br, 1 insidebedroom.com, 0 insideevs.com, 1 +insideevs.com.tr, 1 insideevs.de, 1 insidegnss.com, 1 insidehook.com, 1 @@ -74217,17 +74434,16 @@ insideprisonbreak.tk, 1 insider-invest.tk, 1 insiderateers.ga, 1 insiderateest.ga, 1 +insidergazette.com, 1 insiders.ga, 1 -insidertradingabout.com, 1 insiderx.com, 1 insidethefirewall.tk, 1 insidetheigloo.com, 1 insideuniversal.net, 0 insideview.com, 1 -insightfabric.com, 1 insightfulpsychics.com, 1 insighti.com, 1 -insightrestoration247.com, 1 +insights.plus, 1 insights.solutions, 1 insightsoftware.com, 1 insightsvt.com, 1 @@ -74237,7 +74453,6 @@ insinuator.net, 1 insisypheprod.fr, 1 insitepackaging.com, 1 insitox.com, 1 -insituenergy.com, 1 insitusales.com, 1 insolent.ch, 1 insomnia-isterica.tk, 1 @@ -74246,11 +74461,13 @@ insomniac.games, 1 insomniac.pl, 1 insomniac.ro, 1 insomniasec.com, 0 +insono.no, 1 +insouciant.org, 1 insource.org, 1 inspaceindustrial.com, 1 -inspectia.io, 1 inspiraenterprise.com, 1 inspirascholen.be, 1 +inspiration.gr, 1 inspirationallight.com, 1 inspirationalstories.com, 1 inspirationalstories.tk, 1 @@ -74260,7 +74477,6 @@ inspired-builds.co.uk, 0 inspired-creations.co.za, 1 inspired-lua.org, 1 inspiredbyannefrank.com, 1 -inspiredbyfrustration.com, 1 inspiredcaresolutions.com, 1 inspiredelements.co.uk, 1 inspiredentalwellness.com, 1 @@ -74290,7 +74506,7 @@ insside.net, 1 insst.es, 1 insta-viewer.ml, 1 instabizmart.com, 1 -instacart.careers, 0 +instacart.careers, 1 instacart.com, 1 instachina.ru, 1 instacredito.pt, 1 @@ -74332,11 +74548,13 @@ instantkhabar.com, 1 instantluxe.com, 1 instantluxe.de, 1 instantly.ai, 1 +instantmoron.com, 1 instantpage.tk, 1 instantprint.co.uk, 1 instantreplay.tk, 1 instantsiteaudit.com, 1 instar.org, 1 +instareeldownload.com, 0 instavites.com, 1 instawierszyki.pl, 1 instead.com.au, 1 @@ -74368,7 +74586,6 @@ instytut.tk, 1 instytutwellsense.pl, 1 insulationmachinestore.com, 1 insulations.ga, 1 -insulationstop.com, 1 insulectro.com, 1 insult.es, 1 insultband.tk, 1 @@ -74398,7 +74615,7 @@ insurebuysers.ga, 1 insurebuysest.ga, 1 insured-event.tk, 1 insuredcloud.ga, 1 -insurekidsnow.gov, 1 +insuredcreativity.com, 1 insuremycar.ru, 1 insureon.com, 1 insurethebox.tk, 1 @@ -74415,15 +74632,16 @@ insydesw.com, 1 insysbio.com, 1 insysbio.uk, 1 inszu.com, 0 +int-elektro.eu, 1 int-ext-design.fr, 1 int-refer.nhs.uk, 1 int21h.jp, 1 int3.org, 1 -int314.com, 1 int64software.com, 1 intab.io, 1 intafe.co.jp, 1 intajmob2.net, 1 +intajouna.com, 1 intakesync.com, 1 intakings.tk, 1 intal.info, 1 @@ -74444,6 +74662,7 @@ integral-calculator.com, 1 integral-calculator.ru, 1 integral-re.com, 1 integralblue.com, 1 +integralcare.org, 1 integralinmobiliario.com, 1 integralkk.com, 1 integralrechner.de, 1 @@ -74456,7 +74675,7 @@ integratedaesthetics.com, 1 integratedbms.co.za, 1 integratedmedicalonline.com, 1 integratedphysio.com.au, 1 -integration-mouvements-oculaires.com, 0 +integration-mouvements-oculaires.com, 1 integrativetherapy.com.mt, 1 integrator.io, 1 integreatedmedia.com, 1 @@ -74466,6 +74685,7 @@ integritet.com.se, 1 integrity.gov, 1 integritydetail.com, 1 integrityglobal.com, 1 +integrityhomecontractors.com, 1 integritykrakow.pl, 1 integrityline.com, 1 integrityriskintl.com, 1 @@ -74474,7 +74694,6 @@ integromat.com, 1 integroof.com, 0 integsystem.com, 1 inteka.lv, 1 -inteksystem.com, 1 intel.gov, 1 intel.im, 1 intel69.cf, 1 @@ -74483,7 +74702,6 @@ intelcapital.com, 1 intelec.co.cr, 1 intelekta.es, 1 intelhost.com.br, 1 -intelics.com, 1 intelics.com.au, 1 intelius.cf, 1 intellar.agency, 1 @@ -74500,7 +74718,6 @@ intellibill.io, 1 intellicore.cl, 1 intellicus.com, 1 intellicyb.com, 1 -intellify.me, 1 intelligence-explosion.com, 1 intelligence-privee.com, 1 intelligentglo.fi, 1 @@ -74539,7 +74756,6 @@ interabbit.com, 1 interacademybrazil.com.br, 1 interacthindu.tk, 1 interactiveanddesign.com, 1 -interactivebrokersreview.co, 1 interactivedigesters.ga, 1 interactivedigestest.ga, 1 interactiveliterature.org, 1 @@ -74550,12 +74766,14 @@ interaffairs.com, 1 interaktiva.fi, 1 interallied.org, 1 interativashop.com.br, 1 +interbanco.com.gt, 1 interbank.pe, 1 +interbase.org, 1 interbec.com, 0 interblink.tk, 1 interbulit.com, 1 interc0der.tk, 1 -intercaribbean.com, 0 +intercaribbean.com, 1 intercariforef.org, 1 intercars.bg, 1 interchangehq.com, 1 @@ -74605,8 +74823,10 @@ interhealthcare.com.au, 1 interiery-waters.cz, 1 interieursud.fr, 1 interimnorge.no, 1 +interiofyspaces.com, 1 interior-design-colleges.com, 1 interior16.cf, 1 +interiorai.com, 1 interiorcheapo.com, 1 interiorcolors.tk, 1 interiordesignhouse.com, 1 @@ -74623,10 +74843,11 @@ interlingvo.biz, 1 interlink-jp.com, 1 interlinked.us, 1 interlogos.bg, 1 +interludesante.com, 1 intermac.nl, 1 intermaquinas.es, 1 +intermarche.pt, 1 intermediazionerifiuti.it, 1 -intermexcontainers.com, 1 intermezzo-emmerich.de, 1 intermezzo-emmerich.nl, 1 interminsk.tk, 1 @@ -74653,8 +74874,10 @@ internationalfashionjobs.com, 1 internationalflightstickets.com, 1 internationalfm.tk, 1 internationalfrom.com, 1 +internationalgse.com, 1 internationaljoustingleague.tk, 1 internationallaborlaw.com, 1 +internationalmedicaleducation.co.uk, 1 internationalschool.it, 1 internationalschoolcommunity.com, 1 internationaltalento.it, 1 @@ -74685,10 +74908,10 @@ internetforall.gov, 1 internethosting.nl, 1 internethypothekenbank.de, 1 internetinhetbuitengebied.nl, 1 -internetional.nl, 0 +internetional.nl, 1 internetivo.com, 1 internetk.tk, 1 -internetkollen.se, 1 +internetkultur.se, 1 internetkunskap.se, 1 internetline.tk, 1 internetmagaz.tk, 1 @@ -74705,6 +74928,7 @@ internetofinsecurethings.com, 1 internetoskol.tk, 1 internetovehazardnihry.cz, 1 internetowykantor.pl, 1 +internetpasoapaso.com, 1 internetpoem.com, 1 internetpro.me, 1 internetprofitspro.com, 1 @@ -74712,7 +74936,6 @@ internetslapfights.com, 1 internetsociety.org, 1 internetstatistik.se, 1 internetstiftelsen.se, 1 -internetstones.com, 1 internetsubsidie.tk, 1 internettoday.ga, 1 internettradie.com.au, 0 @@ -74721,14 +74944,15 @@ internetzaim.tk, 1 internetzentrale.net, 1 internetzonei.com, 1 internews24.com, 1 +internewscast.com, 1 interparcel.com, 1 interpass.id, 1 interplex.com, 1 interpol.gov, 1 +interpoolme.com, 1 interprete.tk, 1 interratrade.gr, 1 interregtesimnext.eu, 1 -interruptmedia.com, 1 intersectionconsultancy.co.uk, 1 intersein-landshut.de, 1 intersein-sangha-landshut.de, 1 @@ -74738,11 +74962,11 @@ interslang.tk, 1 intersolute.de, 1 interspar.at, 1 interspence.com, 1 +intersport.com.kw, 1 interspot.nl, 1 interssl.com, 1 interstateautomotiveinc.com, 0 interstateremovalists.sydney, 1 -interstride.com, 1 intersun.es, 1 intersun.fr, 1 intersun.pt, 1 @@ -74757,7 +74981,6 @@ intervalzero.com, 1 intervention.io, 1 interview-suite.com, 0 interview-test-taker.com, 1 -interviewform.com, 1 interviewpipeline.co.uk, 1 interviewstarsers.ga, 1 interviewstarsest.ga, 1 @@ -74767,8 +74990,7 @@ interwebz.cloud, 1 interwebz.nz, 1 interwerk.de, 1 intestclub.tk, 1 -intgr8ai.com, 1 -inthe10.com, 1 +intgr8ai.com, 0 inthechair.com, 1 inthechileanwoods.tk, 1 inthecompanyofguides.com, 1 @@ -74795,7 +75017,6 @@ intmissioncenter.org, 0 into-the-mountain.com, 1 intomsk.tk, 1 inton.biz, 1 -intoneccm.com, 1 intoparking.fi, 1 intor.fi, 1 intosec.nl, 1 @@ -74813,7 +75034,6 @@ intrador.com, 1 intraedge.com, 1 intrafi.com, 1 intralan.nl, 1 -intralogix.online, 1 intranet.dvag, 1 intranetcity.ch, 1 intranetconsultant.au, 1 @@ -74825,6 +75045,7 @@ intranetinabox.com.au, 1 intraobes.com, 1 intrdate.us, 1 intrepidcs.com, 1 +intrepidib.com, 1 intrepidmedia.tk, 1 intrigue3d.com, 1 intrixgroup.com, 0 @@ -74834,23 +75055,24 @@ intro.management, 1 intron.pw, 1 intropickup.ru, 1 intropika.tk, 1 +intrstd.in, 1 intrum-credit-information-ws.ch, 1 intstyle.com.ua, 1 intsurfing.com, 1 intsys.fi, 1 intuitionmedicineonline.org, 1 -intuitlearn.com, 1 intux.be, 0 intvonline.com, 1 intvoting.com, 1 intygrate.com, 1 inu.nl, 1 inuba.com, 1 +inuevostiempos.es, 1 inuki.org, 1 inumcoeli.com.br, 1 inusasha.de, 1 inuyasha-petition.tk, 1 -inuyasi.com, 0 +inuyasi.com, 1 invadecafe.tk, 1 invaded.ga, 1 invadion.com, 1 @@ -74864,7 +75086,6 @@ invantive-apps-voor-loket.nl, 1 invantive.be, 1 invantive.cloud, 1 invantive.co.uk, 1 -invantive.com, 1 invantive.es, 1 invantive.eu, 1 invantive.net, 1 @@ -74876,14 +75097,14 @@ invenio.software, 1 invenpro.tech, 1 inventarioti.serveftp.net, 1 inventati.org, 1 -inventialifescience.com, 1 inventify.com, 1 inventionjudgeers.ga, 1 inventionjudgeest.ga, 1 inventions-home.tk, 1 inventionsteps.com.au, 1 +inventit.nl, 1 inventivashop.com, 1 -inventivehq.com, 1 +inventivtechnology.com, 0 inventix.nl, 1 invento.tk, 1 inventortesters.ga, 1 @@ -74896,6 +75117,7 @@ inventoseinventores.com, 1 inventum.cloud, 1 inveris.de, 1 inverness.gov, 1 +inversegravity.net, 1 inverselink-user-content.com, 1 inverselink.com, 1 inversion6.com, 1 @@ -74918,6 +75140,7 @@ investgold.ml, 1 investgold.tk, 1 investgroop.ml, 1 investhq.in, 1 +investi.cz, 1 investia.ca, 1 investigace.cz, 1 investigatemalware.com, 1 @@ -74930,12 +75153,10 @@ investigatore.torino.it, 1 investigazione.milano.it, 1 investigazione.roma.it, 1 investinamerica.gov, 1 -investindenbosch.com, 1 investinestonia.com, 0 investingdiary.cn, 1 investinginamerica.gov, 1 investingnews.com, 1 -investingoal.com, 1 investingoutlook.co, 1 investingrenada.gd, 1 investingtrader.net, 1 @@ -74995,8 +75216,10 @@ invitationtrackerers.ga, 1 invitationtrackerest.ga, 1 invitebiz.tk, 1 invitelink.in, 1 +invitemember.com, 0 invitepeople.com, 1 invitescafe.com, 1 +invitia.net, 1 invito.tk, 1 invoiced.com, 1 invoicely.com, 1 @@ -75007,6 +75230,7 @@ involve.asia, 1 invuite.com, 1 invuite.com.au, 1 inwebo.net, 1 +inwepo.co, 1 inwhite-medical.ru, 1 inwit.tk, 1 inwmsp.pl, 1 @@ -75031,7 +75255,6 @@ io.nl.eu.org, 1 io88.win, 1 ioanamateas.ro, 1 ioanavisan.tk, 1 -iocgpt.com, 1 iochicago.net, 1 iocorp.jp, 1 iocp.org, 0 @@ -75069,6 +75292,7 @@ ionescu.sexy, 1 ionescuvlad.eu, 1 ionescuvlad.me, 1 iongroup.com, 1 +ionhowto.com, 1 ionicframework.com, 0 ionicshop.xyz, 1 ionize.cloud, 1 @@ -75087,19 +75311,18 @@ ios11018.com, 1 iosartstudios.gr, 1 iosco.org, 1 iosecurity.co.za, 1 -ioserve.net, 1 iosjailbreakiphone.com, 0 iosme.ga, 1 iosolutions.cl, 1 iosprivacy.com, 1 iossearch.tk, 1 -iossubmissionguide.com, 1 iostream.by, 1 iosxr.de, 1 iot-alliances.com, 1 iotaiy.com, 1 iotaker.jp, 1 iotanodes.org, 1 +iotbusinessforum.com.br, 1 iotekha.tv, 1 iotfen.com, 1 iotflowers.com, 1 @@ -75108,10 +75331,8 @@ iotmu.com, 1 iotportal.tk, 1 iotrasloco.it, 1 iotsms.io, 1 -iotstadslab.nl, 1 ioville.com, 1 iowa80.com, 1 -iowabankers.com, 1 iowacolonytx.gov, 1 iowacorncountry.com, 1 iowadol.gov, 1 @@ -75149,14 +75370,12 @@ ip3office.com, 0 ip4unlocked.tk, 1 ip6.biz, 1 ip6.li, 1 -ip8g.com, 1 ipaddressreputation.com, 1 +ipadizate.com, 1 ipadizate.es, 1 ipadkaitori.jp, 0 ipadr.is, 1 ipadresse.de, 1 -ipadresy.win, 1 -ipafricatv.online, 1 ipal.im, 1 ipal.name, 1 ipal.tel, 1 @@ -75179,7 +75398,6 @@ ipdental.tk, 1 ipdfreedom.me, 1 ipdgroup.com.au, 1 ipdistrimart.com, 1 -ipelint.com, 1 ipemcomodoro.com.ar, 1 iperconnessi.it, 1 iperon.net, 1 @@ -75205,6 +75423,7 @@ iphoned.nl, 1 iphonekaitori.tokyo, 0 iphonemobile.ro, 1 iphoneunlock.nu, 1 +ipicolorissa.com, 1 ipid.me, 1 ipidkun.com, 1 ipigri.tk, 1 @@ -75214,10 +75433,7 @@ ipioneer.ga, 1 ipirangaparafusos.com.br, 1 ipl.my.id, 1 ipl.pt, 1 -iplabs.com, 1 -iplabs.de, 1 iplayradio.net, 0 -iplead.org, 1 ipleak.net, 1 ipledgeonline.org, 0 iplicense.org, 1 @@ -75227,7 +75443,6 @@ ipmotion.ca, 1 ipms.nl, 1 ipmscorp.com, 1 ipmsdeutschland.de, 1 -ipn.cloud, 1 ipnoze.com, 1 ipnrt.net, 1 ipo.inf.br, 1 @@ -75253,6 +75468,7 @@ iprisk.info, 1 iprjb.org, 0 iprod.it, 1 iproducemusic.com, 1 +iproductrepair.com, 1 iprofinews.ru, 1 iproov.com, 1 iprox.nl, 1 @@ -75266,7 +75482,7 @@ ipsecurelink.com, 1 ipsilon-project.org, 1 ipso.com.tr, 1 ipso.paris, 1 -ipso.ro, 0 +ipso.ro, 1 ipssl.li, 1 ipstoragesolutions.com, 1 ipsubscription.store, 1 @@ -75279,14 +75495,11 @@ iptoasn.com, 1 iptops.com, 1 iptor.com, 1 iptv-best.com, 1 -iptv-luxury.com, 1 iptv.ge, 1 -iptvanbieter4k.com, 1 iptvcanada.biz, 1 iptvfriend.ga, 1 iptvmasters.fr, 1 iptvmiro.com, 1 -iptvtoucan.com, 1 iptvzoom.xyz, 1 ipty.de, 1 ipuservicedesign.com, 1 @@ -75305,17 +75518,14 @@ ipv6.gr, 1 ipv6.jetzt, 0 ipv6.pictures, 1 ipv64.net, 0 -ipv6cybersecurity.com, 1 ipv6ioffentligsektor.se, 1 ipvbook.com, 0 ipview.tk, 1 ipwho.site, 1 -ipwhoischeck.com, 1 ipy.org, 1 iq-robot.com, 1 iqbeauty.pl, 1 iqcybersolutions.com, 1 -iqmod.me, 1 iqor.com, 1 iqos.ml, 1 iqphone.cf, 1 @@ -75325,8 +75535,6 @@ iqreview.ru, 1 iqsecurity.eu, 1 iqsmn.org, 0 iqtechportal.com, 1 -iquiz.ie, 1 -iqviet.com, 1 iqxbusiness.com, 1 ir.to, 1 iraanswersers.ga, 1 @@ -75348,7 +75556,6 @@ irandroid.ml, 1 iranfilmcity.tk, 1 iranfreshfruit.cf, 1 irangeodesy.tk, 1 -iranhrs.org, 1 irani.im, 1 iranianpack.com, 1 iranjeunesse.com, 1 @@ -75396,6 +75603,7 @@ irealisatie.nl, 1 ireba-navi.com, 1 iredellcountync.gov, 1 iregister.al, 1 +ireiguam.org, 1 ireland.gq, 1 irelandinternetstuffs4u.tk, 1 irelandondemand.ie, 1 @@ -75412,6 +75620,7 @@ ireneskralen.tk, 1 irenictherapy.com, 1 irentcar.com.tw, 1 ireps.gov.in, 1 +iresearchservices.com, 1 iresineworld.tk, 1 irf2.pl, 1 irfanweb.cf, 1 @@ -75425,7 +75634,6 @@ iriemag.com, 1 irina-beauty.de, 1 irinaf.tk, 1 irinar.co, 1 -iringanbayu.com.my, 1 irioka.be, 1 irion-edm.com, 1 iris-design.info, 1 @@ -75443,7 +75651,6 @@ iris.com.co, 1 irische-segenswuensche.info, 1 irisconseil.com, 1 irisdesideratum.com, 1 -irisdupau.nl, 1 irisfansite.tk, 1 irish.radio, 1 irishdancing.tk, 1 @@ -75470,8 +75677,7 @@ irlfp.com, 1 irlprable.tk, 1 irma-gadalka.tk, 1 irmag.ru, 1 -irmcon.ca, 1 -irmcon.com, 1 +irmakprefabrik.com, 1 irmgard-woelfle.de, 1 irmgardkoch.com, 1 irmo.hr, 1 @@ -75511,6 +75717,7 @@ irontigers.ga, 1 irontigers.gq, 1 irontigers.ml, 1 irontribefitness.com, 1 +irontv.me, 1 ironwaytransport.com, 1 ironwind.ga, 1 ironwoodmi.gov, 1 @@ -75543,6 +75750,7 @@ irwincounty-ga.gov, 1 iryodatumoguide.com, 1 irzumshafiq.tk, 1 is-an.org, 1 +is-and.com, 1 is-cloud.ddns.net, 1 is-coming-for-you.run, 1 is-in-hyper.space, 1 @@ -75557,6 +75765,7 @@ isaa.cl, 1 isaac.run, 1 isaaccomputerscience.org, 1 isaaccs.org, 1 +isaacdgoodman.com, 1 isaacgolding.com, 1 isaackabel.cf, 1 isaackabel.ga, 1 @@ -75571,7 +75780,6 @@ isaacscience.org, 1 isaaczais.com, 1 isaaya.com, 1 isab.run, 1 -isabel.org, 1 isabellainlove.com, 1 isabellamelodia.com, 1 isabellas.dk, 1 @@ -75588,18 +75796,19 @@ isaeus.nl, 1 isahaya-media.com, 1 isakow.cf, 1 isakow.gq, 1 +isamay.es, 1 isamiok.com, 1 isan.eu.org, 1 isanp.ca, 1 isanticountymn.gov, 1 isantv.com, 1 +isara.com, 1 isaret.com, 1 isastylish.com, 1 isavanderbrugge.nl, 1 isavings.com, 1 isbase.de, 1 isbaseballstillon.com, 1 -isbc.org, 1 isbk.de, 0 isbndirect.com, 0 isbul.net, 1 @@ -75608,19 +75817,20 @@ isc2.org, 0 isc2estoniachapter.ee, 1 isca-apologetics.org, 1 ischool.co.jp, 1 +iscloud.org, 1 iscontrol.com.mx, 1 iscoolentertainment.com, 1 iscribblesolutions.com, 1 iscultas.pp.ua, 1 +isde.org, 1 isdecolaop.nl, 1 isdn.jp, 1 isdown.cz, 1 isecjobs.com, 1 isecrets.se, 1 -isecurenet.in, 1 iseecure.be, 1 -iseegallery.com, 1 isengard.dk, 1 +isense.tw, 1 isentek.com, 1 isericsuffocating.com, 1 iseriemandopkantoor.nl, 1 @@ -75667,6 +75877,7 @@ isitchristmas.com, 1 isitdoneyet.gov, 1 isitef.com, 1 isitnuclearwaryet.com, 1 +isitpatchtuesday.com, 1 isitrest.info, 1 isitshotime.com, 1 iska.plus, 0 @@ -75691,6 +75902,7 @@ islamadel.com, 1 islamantarih.tk, 1 islambolivia.tk, 1 islamdersi.tk, 1 +islamdin.com, 1 islamfirst.ml, 1 islamicacademy.tk, 1 islamicarchitecturalheritage.com, 1 @@ -75736,6 +75948,7 @@ islensktlambakjot.is, 1 isleofman.tk, 1 isleoftheserpent.com, 1 isletmenlikkursuankara.tk, 1 +isliada.org, 1 islief.com, 1 islightdown.today, 1 islikimas.lt, 1 @@ -75746,9 +75959,11 @@ ismail-biber.tk, 1 ismailtoraman.com, 1 ismailtoraman.com.tr, 1 ismart.org, 1 +ismat.com, 0 ismekkurs.com, 1 ismena.bg, 1 ismetroburning.com, 1 +ismiledental.ro, 1 isminc.com, 1 ismmed.org, 1 ismywebsitepenalized.com, 1 @@ -75762,6 +75977,7 @@ iso27001.dk, 1 iso27032.com, 1 isobook.ml, 1 isoc-dc.org, 1 +isofartak.com, 1 isognattori.com, 1 isoip.org, 1 isolation-exterieur-94.fr, 1 @@ -75792,6 +76008,7 @@ isoshelter.net, 1 isotope.gov, 1 isotopes.gov, 1 isovideo.com, 1 +isowebtech.com, 1 ispactivo.com, 1 ispadmin.eu, 1 ispanika.tk, 1 @@ -75805,20 +76022,21 @@ ispfontela.es, 1 ispmedipv6.se, 1 ispn.edu.ar, 1 ispro-ng.com, 1 -ispro-ng.help, 1 ispsoft.pro, 1 isputinstillpresident.com, 1 ispymissions.ga, 1 isqi.org, 1 +isra-mag.com, 1 israel-alma.org, 1 israel-in-color.com, 1 +israel-nadlan.com, 1 israel-real.estate, 1 israel-web.com, 1 +israelandhome.com, 1 israelbiblicalstudies.com, 1 israelcareersers.ga, 1 israelcareersest.ga, 1 israelflorist.com, 1 -israelinfo.co.il, 1 israelitas.tk, 1 israelitopbox.ga, 1 israelmesianico.tk, 1 @@ -75836,6 +76054,8 @@ isreedyinthe.uk, 1 isreedyinthe.us, 1 isreedyintheuk.com, 1 isrib.com, 1 +isrokapa.com, 1 +issa.eu.org, 1 issacdelgado.com, 1 issaias.net, 0 issaquah.cam, 1 @@ -75844,6 +76064,7 @@ isscouncil.com, 1 issea.wiki, 1 issforum.org, 1 issho.jp, 1 +issimaequestre.com, 1 issio.net, 1 isslshop.com, 1 issnet.cf, 1 @@ -75861,14 +76082,13 @@ ist-intim.de, 1 ist-toll.xyz, 1 ista-vdm.at, 1 istagb.ga, 1 +istanbul.systems, 1 istanbulblog.tk, 1 istanbuleskort.tk, 1 istanbulhaberleri.tk, 1 istanbulhomes.com, 1 istanbulmasajsalonu.tk, 1 -istanbulnlp.com.tr, 1 istanbulrobotmuzesi.com, 1 -istanbultoursgroup.net, 1 istarlit.com, 1 istdas.lol, 1 istec.com.ua, 1 @@ -75877,6 +76097,7 @@ istekparcam.com, 1 istekparcam.com.tr, 1 isterfaslur.com, 1 istevitrin.com, 1 +isthatarabic.com, 1 istheapplestoredown.com, 1 istheapplestoredown.de, 1 isthedoorlocked.com, 1 @@ -75886,11 +76107,11 @@ istherrienstillcoach.com, 1 istheservicedown.co.uk, 1 istheservicedown.com, 1 istheservicedowncanada.com, 1 +isthisarabic.com, 1 isthisus.org, 1 isthnew.com, 1 istimdead.today, 1 istitutoimballaggio.org, 1 -istitutoistruzionesuperioretommasocornelio.it, 1 istitutoricci.com, 1 istitutoricci.it, 1 istitutovivaldi.it, 1 @@ -75904,6 +76125,8 @@ istorrent.is, 1 istratov.tk, 1 istschonsolangeinrente.de, 0 istudentpro.ml, 1 +istudio.one, 1 +isuggi.com, 1 isultov.tk, 1 isurg.org, 1 isutils.com, 1 @@ -75944,6 +76167,7 @@ it-enthusiasts.tech, 1 it-expert.tk, 1 it-help.tech, 1 it-inside.ch, 1 +it-ip-rudnick.de, 1 it-jobbank.dk, 1 it-lehnert.de, 1 it-maker.eu, 1 @@ -75953,15 +76177,16 @@ it-perm.tk, 1 it-rotter.de, 1 it-seems-to.work, 1 it-service24.com, 1 -it-specialist.com.ua, 1 it-stack.de, 1 it-stek.ru, 1 it-support-schmid.ch, 1 it-tainment.de, 1 +it-tekniker.nu, 1 it-ti.me, 1 it-volgograd.tk, 1 it-wars.com, 1 it-web-entwicklung.de, 1 +it-world.eu, 0 it-xperts.be, 1 it-zt.at, 1 it.schwarz, 1 @@ -75983,7 +76208,6 @@ italentado.ml, 1 italgold.it, 1 italia-facile.ru, 1 italiaeconomy.it, 1 -italiainvestigazioni.com, 1 italiale.tk, 1 italian-shoes.tk, 1 italiana-lacrima.tk, 1 @@ -76002,7 +76226,6 @@ italianpillow.com, 1 italianracingteam.tk, 1 italiansrent.com, 1 italiansrit.tk, 1 -italiantravelexperience.it, 1 italianweddingmusicians.com, 1 italianweddingvideographers.com, 1 italiasera.it, 1 @@ -76031,12 +76254,12 @@ itbrief.ca, 1 itbrief.co.nz, 1 itbrief.co.uk, 1 itbrief.com.au, 1 -itbrief.ie, 1 itbrief.in, 1 itbrief.news, 1 itbrouwerij.be, 1 itbsinistre.com, 1 -itc-lucke.com, 1 +itc-lucke.com, 0 +itc.gov.mn, 1 itcamefromtheunderground.tk, 1 itcarolina.com, 1 itcase.pro, 1 @@ -76093,7 +76316,6 @@ itexus.com, 1 itezu.ml, 1 itfall.tk, 1 itfh.eu, 0 -itfirmaet.dk, 0 itfix.org.uk, 1 itg.com.pl, 1 itg.net.pl, 1 @@ -76105,12 +76327,10 @@ itgoesupentertainment.com, 1 ithakama.com, 1 ithakama.cz, 1 ithca.om, 1 -ithesk.com, 1 ithical.be, 1 -ithil.ai, 1 ithillel.ua, 1 ithinc.net, 1 -ithmaarbank.com, 1 +ithmaarbank.com, 0 ithriveedinburgh.org.uk, 1 ithuthuat.vn, 1 itibharari.edu.in, 1 @@ -76119,7 +76339,6 @@ itilo.de, 0 itinerariummentis.org, 1 itineris.co.uk, 1 itinero.xyz, 1 -itinnovations.biz, 1 itioc10.tk, 1 itis.gov, 1 itis4u.ch, 1 @@ -76132,7 +76351,7 @@ itlg.ru, 1 itlife.tk, 1 itlitera.com, 1 itlog.tk, 1 -itlogic.com.au, 0 +itlogic.com.au, 1 itludens.com, 1 itma.ie, 1 itmastersupport.tk, 1 @@ -76142,9 +76361,6 @@ itmindscape.com, 1 itms.co.jp, 1 itnet.com.ua, 1 itnota.com, 1 -itnp.co.th, 1 -itnp.swiss, 1 -itnpgroup.com, 1 ito-dc-nagoya.jp, 1 itoady.com, 1 itochan.jp, 1 @@ -76154,7 +76370,6 @@ itoezichtprotocol.com, 1 itoezichtprotocol.nl, 1 itoma.tech, 1 itondersteuning.eu, 1 -itonthedot.com, 1 itotalaccess.net, 1 itouriria.com, 1 itoxic.tk, 1 @@ -76169,7 +76384,6 @@ itpress.fi, 1 itprosmgmt.com, 1 itprotect.pl, 1 itqlatam.com, 1 -itrad.ie, 1 itradeit.in, 1 itradenetwork.com, 1 itraffic.cf, 1 @@ -76210,13 +76424,15 @@ itsayorki.de, 1 itsbait.com, 1 itsbananas.life, 1 itsbas.nl, 1 -itsbirthday.net, 1 itsbrightly.com, 1 itsburning.nl, 1 itscalculator.com, 1 itscc.kr, 1 itsch-itsche.com, 1 +itscitycommerce.com, 1 itsdcdn.com, 1 +itsdho.com, 1 +itsdho.org, 1 itse.com, 1 itsec.link, 1 itsecblog.de, 1 @@ -76227,9 +76443,9 @@ itseeze.com, 1 itservis.org, 1 itsevann.com, 1 itsevident.com, 1 -itsfluxo.com, 1 itsforu.de, 1 -itsgroup.co.nz, 1 +itsfoss.com, 0 +itsgreener.com, 1 itshamradio.com, 1 itshka.rv.ua, 1 itsig-faq.de, 1 @@ -76238,7 +76454,7 @@ itslolly.com, 1 itsloution.tk, 1 itsm.tools, 1 itsmeaxel.ovh, 1 -itsmeit.co, 0 +itsmeit.co, 1 itsmyparty.ie, 1 itsnotnot.tk, 1 itsnotquitethehilton.com, 0 @@ -76294,16 +76510,14 @@ itwofm.com, 1 itwolfcl.tk, 1 itworks.nyc, 1 itworksme.com, 1 -itwozi.com, 0 +itwozi.com, 1 itx.no, 1 itxartu.tk, 1 itxn.cn, 0 itxnorge.no, 1 itxuc.com, 1 -ity.moe, 0 +ity.moe, 1 ityco.com, 1 -itylos.com, 1 -ityrecare.com, 1 ityug247.com, 1 itzahammer.tk, 1 itzamnaxelahomestay.tk, 1 @@ -76314,11 +76528,7 @@ itzine.ru, 1 itzkavin.tk, 1 itzlive.tk, 1 iubuniversity.tk, 1 -iuecvip.com, 1 -iufun.com, 1 iuniverse.com.au, 1 -iupathomeadvantage.com, 1 -iupatvip.com, 1 iupibaby.pt, 1 iuppiter-ssd.it, 1 iurisnow.com, 1 @@ -76326,6 +76536,7 @@ iusedtobelieve.com, 1 iv-vr.com, 1 iv.pl, 0 iv4kiso.com, 1 +ivadev.kz, 1 ivahbbiz.tk, 1 ivan-maliy.tk, 1 ivan-popov.tk, 1 @@ -76336,14 +76547,12 @@ ivan1874.dynu.net, 1 ivan770.me, 1 ivana-models-escortservice.de, 0 ivanbenito.com, 1 -ivanblatter.com, 1 ivancacic.com, 0 ivandafish.net, 1 ivanderevianko.com, 1 ivanesalud.com, 1 ivaniglesias.es, 1 ivanilla.org, 1 -ivankochura.com, 1 ivankuchin.tk, 1 ivanmeade.com, 1 ivanov.icu, 1 @@ -76357,14 +76566,12 @@ ivanwolf.ga, 1 ivanya.tk, 1 ivanzorin.cf, 1 ivarfinance.com, 1 -ivdda.com, 1 ivdnt.org, 1 iveaghgardenhotel.ie, 1 ivelop.me, 0 ivendi.com, 1 iventishirts.com, 1 ivermectin.gq, 1 -iverscustomcycles.com, 1 iversionesdp.com, 1 ivetazivot.cz, 1 ivetebolos.com.br, 1 @@ -76377,6 +76584,7 @@ ivisa.ga, 1 ivisitkorea.com, 1 ivixor.ru, 1 ivkh.ee, 1 +ivkom.com, 1 ivkymppi.fi, 1 ivmmeta.com, 1 ivmstatus.com, 1 @@ -76388,7 +76596,6 @@ ivo.co.za, 1 ivocopro.com, 1 ivocotec.com, 1 ivoid.cf, 1 -ivonne.ca, 1 ivopetkov.com, 1 ivor.io, 1 ivor.is, 1 @@ -76398,12 +76605,11 @@ ivory.com, 1 ivory.de, 1 ivoryandgrace.com, 1 ivoryhomes.com, 1 +ivorymp3.com, 1 ivotemahdi.com, 1 -ivovrba.cz, 1 ivpark.fr, 1 ivpbot.tk, 1 ivpn.net, 1 -ivpworld.com, 1 ivr.fi, 1 ivre.rocks, 1 ivrn.net, 1 @@ -76445,7 +76651,6 @@ iwebdna.com, 0 iwebing.tk, 1 iweblab.it, 1 iwebsolution.tk, 1 -iwec.pk, 1 iwex.swiss, 1 iwf.sport, 1 iwhite.tk, 1 @@ -76454,12 +76659,13 @@ iwill.tr, 1 iwl.me, 1 iwmf.ir, 1 iwonder.tw, 1 +iworksus.com, 1 iwp.ch, 1 iwsgroup.com, 1 iwsquote.com, 1 iwstraining.com, 1 iwtsd.gov, 1 -iww.me, 1 +iww.me, 0 iww.mx, 1 iww.org.au, 1 ix.run, 1 @@ -76489,11 +76695,13 @@ iyan.es, 1 iyanla.com, 1 iyanmv.com, 1 iyassu.com, 1 +iyiarastir.com, 1 iyincaishijiao.com, 1 iyn.me, 1 iyouewo.com, 1 iyoumu.top, 1 iyspanel.com, 1 +iz4wnp.it, 1 iz8mbw.net, 1 izabava.tk, 1 izabel.tk, 1 @@ -76503,7 +76711,6 @@ izanagi52.ddns.net, 1 izapi4.fr, 1 izavel.com, 1 izbansaatleri.com, 1 -izdemosite.com, 1 izecubz.me, 1 izemporium.com, 1 izeno.com, 1 @@ -76512,6 +76719,7 @@ izi-agency.com, 1 izidream.bg, 1 izimaths.fr, 1 izipik.gq, 1 +izirh.io, 1 izitex.shop, 1 izkustvo.com, 1 izletiyo.com, 1 @@ -76532,7 +76740,6 @@ izmirotokiralama.name.tr, 1 izmirprotestan.org, 1 izmirrentacar.name.tr, 1 izmirtemizlik.tk, 1 -izmitlazer.com, 1 izmityazilim.com.tr, 1 izo.es, 1 izodiacsigns.com, 1 @@ -76547,7 +76754,6 @@ izvorul-bucovinei.ro, 1 izxxs.com, 1 izxxs.net, 1 izxzw.net, 1 -izyvape.cz, 1 izzardink.com, 1 izzqz.me, 1 izzy.is, 1 @@ -76566,9 +76772,6 @@ j-ph.ovh, 1 j-robertson.com, 1 j-step.or.jp, 1 j.ac, 1 -j.box, 1 -j.ls, 1 -j.sh, 1 j.wtf, 1 j00228.com, 1 j05.cn, 1 @@ -76657,11 +76860,11 @@ jabramson.com, 1 jabramson.net, 1 jabsolutions.tk, 1 jacaranda-deutschland.org, 1 +jaccblog.com, 1 jacekowski.org, 1 jachtbouw.eu, 1 jachtypruszynski.pl, 1 jacik.cz, 1 -jacintas.site, 1 jack-daw.com, 1 jack-p2.tech, 1 jack.fr.eu.org, 1 @@ -76676,7 +76879,6 @@ jackblues.tk, 1 jackcasady.com, 1 jackcon.com, 1 jackdawphoto.co.uk, 1 -jackds.nl, 1 jacket-coat.tk, 1 jackets-coats.tk, 1 jackets-coatsplus.tk, 1 @@ -76697,7 +76899,6 @@ jackmcgregor.uk, 1 jacknicholson.org, 1 jackob.tk, 1 jackops.com, 1 -jackpearce.co.uk, 1 jackpothappy.com, 1 jackpotinsight.com, 1 jackripper.tk, 1 @@ -76732,11 +76933,11 @@ jacksutton.info, 1 jacktor.com, 1 jackvaley.com, 1 jackwarren.info, 1 +jackwell.com.au, 1 jackwu.net, 1 jackylawless.net, 1 jackyliao.me, 1 jackyliao123.tk, 1 -jackysjourney.de, 1 jackyyf.com, 0 jaco.by, 0 jacobenjogchum.tk, 1 @@ -76752,7 +76953,6 @@ jacobtamassiaadvocacia.adv.br, 1 jacobtaylor.id.au, 1 jacool.tk, 1 jacopo.tk, 1 -jacopogiorgini.it, 1 jacopomolina.me, 1 jacquant.be, 1 jacquelinebellefontaine.co.uk, 1 @@ -76763,6 +76963,7 @@ jacquin.bzh, 1 jacquin.eu, 1 jacspb.ru, 1 jad.so, 1 +jadalaq.com, 1 jadara.info, 1 jadb.nl, 1 jadchaar.me, 1 @@ -76770,7 +76971,6 @@ jadedmonkey.tk, 1 jadeglobal.com, 1 jadelsbach.de, 1 jademathre.com, 1 -jaderoller.com, 1 jadesong.cn, 0 jadesong.net, 1 jadid-alwadifa.com, 1 @@ -76780,9 +76980,7 @@ jadox.com, 1 jaduniv.cf, 1 jae.su, 1 jae.zone, 1 -jaecoo.pk, 1 jaeger.link, 1 -jaeli.com, 1 jaenparaisointerior.es, 1 jaetech.org, 1 jafarmehdipor.ga, 1 @@ -76793,13 +76991,14 @@ jagar.com.pl, 1 jagbouncycastles.co.uk, 1 jagerkin.tk, 1 jagerman.com, 1 +jaglaw.ca, 1 jagogame.tk, 1 jagoti.co.id, 1 jags.tk, 1 jagspecialisters.ga, 1 jagspecialistest.ga, 1 +jagsttalschule.de, 1 jaguar-network.com, 1 -jaguar-print.ru, 1 jaguarkuda.com, 1 jaguarlandrover-asse.be, 1 jaguarlandrover-occasions.be, 1 @@ -76808,6 +77007,7 @@ jahanhost.com, 0 jahidhasanmurad.tk, 1 jahimees.ee, 1 jahit.tk, 1 +jahner.xyz, 1 jahro.me, 1 jahubar.tk, 1 jaialdi.tk, 1 @@ -76821,7 +77021,8 @@ jaimeayala.com, 1 jainnatory.ca, 1 jainnotary.ca, 1 jaion.tech, 1 -jaipandya.com, 1 +jaion.xyz, 1 +jairocarbonell.com, 1 jairoenfrancien.tk, 1 jairsinho.me, 1 jaisiam.co.th, 1 @@ -76837,7 +77038,6 @@ jakarta.ee, 1 jakartaee.org, 1 jakartaone.org, 1 jake.ac, 1 -jakefieldhouse.co.uk, 1 jakegines.in, 1 jakegyllenhaal.ga, 1 jakemansfield.com, 1 @@ -76849,8 +77049,6 @@ jakincode.army, 1 jakincode.com, 1 jako.tk, 1 jakob-bleek.de, 1 -jakob-schons.de, 1 -jakob-schons.eu, 1 jakob-server.tk, 1 jakobbuis.nl, 1 jakobczyk.org, 1 @@ -76859,7 +77057,6 @@ jakobhildebrand.de, 1 jakobkrigovsky.com, 1 jakobs.systems, 1 jakobssystems.net, 1 -jakov.rs, 1 jakpost.net, 1 jakpremyslet.cz, 1 jakse.fr, 1 @@ -76889,28 +77086,32 @@ jamaica.gq, 1 jamaicabeachtx.gov, 1 jamally.co.za, 1 jambapp.org, 1 +jamberry.com.mx, 1 jambihackerlink.tk, 1 +jambox.ca, 1 jambox.pl, 1 jamcyberinc.com, 1 jamdro.id, 1 jame-game.duckdns.org, 1 jamelhammoud.com, 1 james-bell.co.uk, 1 +james-parker.com, 0 james.cyou, 1 james.je, 1 james.pub, 1 jamesachambers.com, 1 jamesaimonetti.com, 1 jamesatruett.com, 1 +jamesbarnet.com, 1 jamesbillingham.com, 1 jamesbromberger.com, 1 jameschorlton.co.uk, 1 -jamesdorf.com, 1 jamesedition.com, 1 jamesevans.is, 1 jamesgarrigan.info, 1 jamesgarrigan.nyc, 1 jamesgreenfield.com, 1 +jameshawk.pl, 1 jamesheald.com, 1 jameshost.net, 1 jamesj.me, 0 @@ -76935,7 +77136,7 @@ jamessliu.com, 1 jamessmith.me.uk, 1 jamestabor.com, 1 jamestgh.com, 1 -jamestilburg.nl, 0 +jamestilburg.nl, 1 jamestmart.in, 1 jamestown.de, 0 jamestowncando-nc.gov, 1 @@ -76962,22 +77163,20 @@ jamielinux.com, 1 jamiemagee.co.uk, 1 jamiemagee.dk, 1 jamiematthews.ml, 1 +jamiepleasants.com, 1 jamiesarner.com, 1 jamiesnape.io, 1 jamieweb.net, 1 jamiiforums.com, 1 -jamil-cloud.com, 1 jaminidesign.com, 1 jaminit.co.uk, 1 jamis.online, 1 jamiviz.com, 1 jamjestsimon.pl, 1 -jamminjarsonline.com, 1 jammucake.com, 1 jammy4312.me, 1 jamonesrute.com, 1 jamonsilva.com, 1 -jamrulidze.com, 1 jamstack.icu, 1 jamstallt.se, 1 jamstatic.fr, 1 @@ -76988,14 +77187,12 @@ jan-becker.com, 1 jan-bretschneider.de, 1 jan-bucher.ch, 1 jan-graca.tk, 1 -jan-grossheim.de, 1 jan-hill.com, 1 jan-melcher.de, 1 jan-reiss.de, 1 -jan-rieger.de, 0 +jan-rieger.de, 1 jan-roenspies.de, 1 jan-von.de, 1 -jan.so, 1 jana-rambusch.net, 1 janada.cz, 1 janakane.gotdns.ch, 1 @@ -77012,21 +77209,20 @@ jandenul.com, 1 jandesign.at, 1 jandj.yachts, 0 jandonkers.com, 0 +jandroegehoff.de, 1 janduchene.ch, 1 -jane.pet, 1 janekahonza.cz, 1 janelle-jamer.tk, 1 janellequintana.tk, 1 janenwouter.tk, 1 +janescottceramics.com, 1 janetandjohns.tk, 1 janetedkins.com, 1 janetevansyoga.co.uk, 1 -janetweissman.com, 1 janeweeber.com, 1 janey.cf, 1 janeymac.com, 1 janfennell.tk, 1 -jangrossheim.de, 1 janheidler.dynv6.net, 1 janhermann.cz, 1 janhuelsmann.com, 1 @@ -77036,12 +77232,12 @@ janikrabe.com, 1 janilowski.pl, 1 janine-und-johannes.de, 1 janisphotos.de, 0 -janithmalinga.xyz, 1 janjic.net, 1 janjoris.nl, 1 jankamp.com, 1 janker.me, 1 janklokman.tk, 1 +janmischo.it, 1 jann.is, 1 jannehonkonen.tk, 1 jannekekaasjager.nl, 0 @@ -77071,6 +77267,7 @@ janu.services, 1 janu.software, 1 january.com, 1 janulkowedomki.pl, 1 +janus-it.pl, 1 januszex.top, 1 janv.it, 1 janvanmechelen.tk, 1 @@ -77099,6 +77296,8 @@ japanese-imperialism971.tk, 1 japanese-tantra-escort.com, 1 japanese-teacher-mari.com, 1 japaneseacupuncture.london, 1 +japaneseemoticons.org, 0 +japanesekeyboard.net, 1 japanesemusic.tk, 1 japanesephotosite.tk, 1 japanesque.ru, 1 @@ -77142,7 +77341,6 @@ jaredratcliff.com, 1 jaredstevenson.com, 1 jarett-lee.com, 1 jarigvandaag.nl, 1 -jariiivanainen.net, 1 jaris.blog, 1 jaris.com, 1 jaris.fi, 1 @@ -77205,6 +77403,7 @@ jasoncoopermd.com, 1 jasoncosper.com, 1 jasoncs.eu.org, 1 jasonf.com, 1 +jasongreenwell.com, 1 jasonhardin.me, 1 jasonhk.pics, 1 jasonisclever.com, 1 @@ -77218,7 +77417,6 @@ jasonvillein.gov, 1 jasonwei.nctu.me, 1 jasonwongwr.com, 1 jasper.pt, 1 -jaspercrookes.com, 1 jasperhammink.com, 0 jasperhugo.com, 1 jasperhuttenmedia.com, 1 @@ -77250,6 +77448,7 @@ javabrains.io, 1 javacakegames.com, 1 javachinna.com, 1 javaexpert.tk, 1 +javafactory.io, 1 javafiles.tk, 1 javafluers.ga, 1 javafluest.ga, 1 @@ -77272,18 +77471,20 @@ javierjurado.tk, 1 javierlorente.es, 1 javiermascherano.tk, 1 javiersanchez.tk, 1 +javiscoffee.com, 1 javitron.tk, 1 javleech.com, 1 javna.com, 1 javorina.tk, 1 -javsin.top, 1 javsod.top, 1 jawharati.tk, 1 jaxfstk.com, 1 jaxmore.com, 1 jaxxnet.co.uk, 1 jay4.is, 1 +jay6.tech, 0 jayanthreddy.ml, 1 +jayantkageri.in, 0 jaybeez.tk, 1 jaybrokers.com, 1 jaydehaidar.com, 1 @@ -77299,7 +77500,6 @@ jayjardine.gq, 1 jayjardine.ml, 1 jaylewis.us, 1 jaylineko.com, 1 -jaymlebois.fr, 1 jaypandit.me, 1 jaypark.gq, 1 jaypeeonline.tk, 1 @@ -77346,8 +77546,8 @@ jbdillon.com, 1 jberlife.marketing, 1 jbeta.is, 1 jbfung.net, 1 -jbhe.com, 1 jbidigital.co.uk, 1 +jblan.ca, 1 jbmechanics.com, 1 jbmincorporated.com, 1 jboats.com, 1 @@ -77355,10 +77555,10 @@ jboho.com, 1 jbond.tk, 1 jbookforum.com, 1 jbootsma.com, 1 -jbot9000.com, 1 jbradaric.me, 1 jbs-jardins.ch, 0 jbshop.ie, 1 +jbsinternational.com, 1 jbsoftware.ca, 1 jbt-stl.com, 1 jbuquet.eu, 1 @@ -77372,7 +77572,6 @@ jcatechnologies.com, 1 jcbank.com, 1 jcbank.com.jo, 1 jccars-occasions.be, 1 -jcccsnoop.duckdns.org, 1 jcchen.art, 1 jcchouinard.com, 1 jccomunicaciones.net, 1 @@ -77401,6 +77600,7 @@ jci.guide, 1 jci.how, 1 jci.institute, 1 jci.life, 1 +jci.live, 1 jci.marketing, 1 jci.me.uk, 1 jci.media, 1 @@ -77471,12 +77671,10 @@ jdpleisure.co.uk, 1 jdscastlehire.co.uk, 1 jdsecurity.co.nz, 1 jdsecurity.com.au, 1 -jdsfarm.mt, 1 jdsoft.eu, 1 jdt.de, 1 jdtangney.com, 1 jdtcc-llc.com, 1 -jdtechconsulting.com, 1 jdtic.com, 1 jdtrust.one, 1 jdwebprogrammer.com, 1 @@ -77495,6 +77693,7 @@ jeancardeno.com, 1 jeancarlos.tk, 1 jeanclaudegolvin.com, 1 jeandanielfaessler.ch, 1 +jeanettegy.com, 1 jeanettevanrookhuizen.nl, 1 jeangalea.com, 1 jeangarcia.tk, 1 @@ -77522,7 +77721,6 @@ jeansmoda.tk, 1 jeansstyle.tk, 1 jeanstastytreats.co.za, 1 jeayalar.com, 1 -jebbari.com, 1 jec-dekrone.be, 1 jecho.cn, 1 jecjacshop.com, 1 @@ -77530,6 +77728,7 @@ jecnetwork.gq, 1 jed.site, 1 jeda.ch, 1 jeda.im, 1 +jedar-agency.com, 1 jedatw.com, 1 jedayoshi.com, 1 jedayoshi.me, 1 @@ -77537,7 +77736,6 @@ jedayoshi.net, 1 jedayoshi.tk, 1 jedcg.com, 1 jeddahlyn.nl, 1 -jedediahhinkle.com, 1 jedepannetonordi.ch, 0 jedepannetonordi.com, 0 jedepannetonordi.fr, 0 @@ -77567,7 +77765,6 @@ jeff.win, 1 jeffbuswell.com, 1 jeffcasavant.com, 0 jeffcom911co.gov, 1 -jeffcullenartistry.com, 1 jeffdaviscountyga.gov, 1 jeffersoncitytn.gov, 1 jeffersoncountyks.gov, 1 @@ -77599,19 +77796,15 @@ jeffri.me, 1 jeffsanders.com, 1 jefftron.net, 0 jeffweb.net, 1 -jeffycheco.wedding, 1 jeflix.stream, 1 jefrydco.id, 1 jefsweden.eu, 1 -jegadat.com, 1 jegkorongszovetseg.hu, 1 -jegle.de, 1 jegos.tk, 1 jehende.fr, 1 jehjf.com, 1 jehovahsays.net, 1 jeij.nl, 1 -jeiskauda.lt, 1 jej.cz, 1 jej.sk, 1 jejakdieng.com, 1 @@ -77632,13 +77825,13 @@ jelleluteijn.pro, 1 jelleraaijmakers.nl, 1 jellinbah.com.au, 1 jellybeanpress.com, 1 -jellyfin.one, 1 jellyfin.spdns.eu, 1 jellyfish.co, 1 jellyfishlivewire.co.uk, 1 jellynails.tk, 1 jellypepper.com, 0 jellysquid.me, 1 +jelmer.co.uk, 1 jelmyto.com, 0 jelo.tk, 1 jelobox.tk, 1 @@ -77652,6 +77845,7 @@ jemnezymy.com, 1 jemoreng.tk, 1 jemputan-karyawan.site, 1 jems-il.gov, 1 +jemshoes.com, 1 jena-fans-aurich.tk, 1 jena.de, 1 jena.space, 0 @@ -77662,6 +77856,7 @@ jenascarpetcleaning.com.au, 1 jencshiny-org.tk, 1 jendeindustries.com, 1 jendela360.com, 1 +jendies.com, 1 jenelle.ml, 1 jeneratorkiralama.name.tr, 1 jenever.amsterdam, 1 @@ -77676,6 +77871,7 @@ jenkinsry.fi, 1 jenn-pro-graphics.com, 1 jennahunt.net, 1 jenne.com, 1 +jennethaarfotografie.nl, 1 jennette.tk, 1 jennierobinson.com, 0 jenniferbuslerinteriors.com, 1 @@ -77691,6 +77887,7 @@ jennifermason.eu, 1 jennifersauer.nl, 1 jenniferschmidt.com.au, 1 jennifertilly.tk, 1 +jenniwiltz.com, 1 jennyjones.tk, 1 jennymovies.com, 1 jennysarl.ch, 0 @@ -77701,6 +77898,7 @@ jeno.cf, 1 jenolson.net, 1 jens-prangenberg.de, 1 jens.hk, 1 +jensales.com, 1 jensdesmeyter.be, 1 jenskliewer.de, 1 jensrex.dk, 1 @@ -77711,11 +77909,10 @@ jepa.si, 1 jepcraft.ddns.net, 1 jeproteste.info, 1 jeps.fi, 1 -jerak.eu.org, 1 -jerak.si, 1 jeremiahbenes.com, 1 jeremiahlee.com, 1 jeremiebt.com, 1 +jeremy-chen.org, 1 jeremy-gautier.com, 1 jeremy.hu, 1 jeremybentham.com, 1 @@ -77727,9 +77924,9 @@ jeremycrews.com, 1 jeremyfaton.me, 1 jeremyharnois.com, 1 jeremyhodges.uk, 1 -jeremyjohnsonphoto.com, 1 jeremynally.com, 1 jeremyness.com, 1 +jeremyrobinlyons.com, 1 jeremysermersheim.com, 1 jeremywinn.com, 1 jeremywinn.xyz, 1 @@ -77738,8 +77935,7 @@ jerichoproject.org, 1 jericoacoara.com, 1 jerisandoval.tk, 1 jeriss.be, 1 -jerkmotion.com, 1 -jeroenbosch.nl, 1 +jerlander.se, 1 jeroendeneef.com, 1 jeroened.be, 1 jeroenensanne.wedding, 1 @@ -77756,6 +77952,7 @@ jerrybustillo.tk, 1 jerrycanspirits.co.uk, 1 jerrygwilliams.com, 1 jerryweb.org, 1 +jerryyu.ca, 1 jersec.com, 1 jerseybikehire.co.uk, 1 jerseycounty-il.gov, 1 @@ -77771,11 +77968,11 @@ jerusalempersonalsest.ga, 1 jerusalemplus.tv, 1 jesec.cn, 1 jesec.io, 1 +jesen.org, 1 jesiensredniowiecza.pl, 1 jesmatboutique.com, 1 jesmh.de, 1 jesolo.tk, 1 -jesolve.com, 1 jesperandersson.tk, 1 jespersen.tk, 1 jessacharlie.com, 1 @@ -77806,7 +78003,6 @@ jessicasmith3d.com, 1 jessicharlie.com, 1 jessieabraham.tk, 1 jessiecharlie.com, 1 -jessiekirk.xyz, 1 jessihod.com, 1 jessitrigg.com, 1 jesslynfietje.com, 1 @@ -77823,11 +78019,11 @@ jesuiszen.fr, 1 jesus-rock.tk, 1 jesuscalls.com, 1 jesuscapitan.tk, 1 -jesuschat.com, 1 jesuscnasistente.com, 1 jesusda.tk, 1 jesusdenazaret.com, 1 jesusesparza.com, 1 +jesuslg.com, 1 jesusnazarenobaena.tk, 1 jesusplusnothing.com, 1 jesusvasquez.tk, 1 @@ -77835,18 +78031,21 @@ jesusvenner.com, 1 jet-lend.ru, 1 jetable.org, 1 jetapi.org, 1 +jetauj2022.com, 1 jetcard.co.uk, 1 jetcharterbozeman.com, 1 jetcost.com, 1 jetcraft.tk, 1 jetdrywallinteriors.com, 1 jetedhumain.fr, 1 +jetflex.de, 1 jethash.io, 1 jetkittens.co.uk, 1 jetmirshatri.com, 0 jetmusic.tk, 1 jetpack.com, 1 jetpack.com.ar, 1 +jetsadabetchoke77.com, 0 jetsetretiree.com, 1 jetsieswerda.nl, 1 jetskerijneveld.nl, 1 @@ -77857,7 +78056,7 @@ jettenjachtbouw.eu, 1 jettshome.org, 1 jetular.com, 1 jetular.net, 1 -jetvac.cz, 1 +jetwashaustralia.com.au, 1 jetwhiz.com, 1 jetzhang.com, 1 jetzt-elektromobil.de, 1 @@ -77869,10 +78068,10 @@ jeugdkans.nl, 1 jeugdzorgnederland.nl, 1 jeurissen.co, 1 jeuxerotiques.net, 1 +jeuxsuperwin.com, 1 jevalide.ca, 1 jeveaux.company, 1 jevel-mag.tk, 1 -jevem.cn, 1 jeveuxchoisir.fr, 1 jevisite.ca, 1 jevremovic.org, 1 @@ -77884,7 +78083,6 @@ jeweet.net, 1 jewelleryoutlook.com, 1 jewelry-directories.tk, 1 jewelrycoverers.ga, 1 -jewelryodm.com, 1 jewelryshowcasedepot.com, 1 jewishboston.com, 1 jewishjourneys.org, 1 @@ -77897,8 +78095,10 @@ jey-line.de, 1 jezebelsromance.com, 1 jezero.tk, 1 jezura.cz, 1 +jezykoteka.pl, 1 jezzicat.org, 1 -jf-igrejanovadosobral.pt, 1 +jf-fotos.de, 1 +jf-igrejanovadosobral.pt, 0 jf-madalena.tk, 1 jf-sulpice.notaires.fr, 1 jf886.cc, 1 @@ -77916,6 +78116,7 @@ jfkvirtual.com.co, 1 jflmsan.pt, 1 jfmdevelopment.ml, 1 jfon.no, 1 +jforma.it, 1 jforums.org, 1 jfr.im, 1 jfreitag.de, 1 @@ -77933,6 +78134,7 @@ jg078.com, 1 jg8nid.tech, 1 jgambard.me, 1 jgc.li, 0 +jgeverest.com, 0 jgid.de, 1 jgigantino31.com, 1 jgke.fi, 1 @@ -77957,6 +78159,7 @@ jhaveri.net, 1 jhbgroup.nl, 1 jhburton.co.uk, 1 jhcommunitysports.co.uk, 1 +jhdindustrialsolution.com, 1 jhe.li, 1 jhellings.nl, 1 jhenwei.com.tw, 1 @@ -77978,8 +78181,6 @@ jiai.ml, 1 jiai.tk, 1 jialiangkang.com, 1 jiami.dog, 0 -jianaiwl.com, 1 -jianaiwl.org, 1 jianbin.wang, 1 jiangmei.ml, 1 jiangmen.tk, 1 @@ -77991,7 +78192,6 @@ jianhuo.cf, 1 jianhuo.ml, 1 jianny.me, 1 jianqun.me, 1 -jianqun.org, 1 jianren.cf, 1 jianren.ml, 1 jianshebingtuan.com, 1 @@ -78010,7 +78210,6 @@ jiaxitian.com, 1 jiayi.eu.org, 1 jiayi.life, 1 jiazhao.ga, 0 -jiazhao.me, 1 jibe.com, 1 jibeapply.com, 1 jibecdn.com, 1 @@ -78018,8 +78217,10 @@ jibungoto.jp, 1 jicaivvip.com, 1 jichi.io, 1 jichi.nz, 1 +jidlosro.com, 1 jidlosro.cz, 1 jidlosro.eu, 1 +jidlosro.info, 1 jidlosro.sk, 1 jidlosromanem.cz, 1 jiehun.com.cn, 1 @@ -78053,20 +78254,21 @@ jijistatic.com, 1 jijistatic.net, 1 jikei-reha.com, 1 jikiden.com, 1 -jikken.de, 1 +jikken.de, 0 jilaninteraktif.tk, 1 -jilbertdairy.com, 1 jilio-ca.com, 1 jilio-ca.net, 1 jilio.com, 1 jilio.net, 1 jilking.ga, 1 jillamy.com, 1 +jillapi.azurewebsites.net, 1 jillianmichaels.com, 1 jilljoe.com, 1 jillvirus.tk, 1 jillynmalone.studio, 1 jilworldwide.org, 1 +jimautoservice.pl, 1 jimbeam-welcomesessions.at, 1 jimbiproducts.com, 1 jimbosprint.com, 1 @@ -78100,7 +78302,6 @@ jimobbs.tk, 1 jimpl.com, 1 jimreedphoto.com, 1 jimslop.nl, 1 -jimthompsonfabrics.com, 1 jimvophotography.tk, 1 jimwalkerphotography.com, 1 jimwhitesell.com, 1 @@ -78114,6 +78315,7 @@ jinbijin.nl, 1 jinbo123.com, 0 jinbowiki.org, 1 jinbuguo.com, 1 +jinde.com.my, 1 jinduoduo369.com, 1 jinduoduo666.com, 1 jinduoduo888.com, 1 @@ -78132,7 +78334,6 @@ jinkou.ga, 1 jinkou.gq, 1 jinkou.ml, 1 jinliming.ml, 1 -jinma.site, 1 jinng.org, 1 jino.gq, 1 jinritemai.com, 1 @@ -78141,6 +78342,7 @@ jinspace.net, 1 jintaiyang123.org, 1 jintao.hu, 1 jinzai-ikusei.org, 1 +jiogo.com, 1 jip2011.jp, 1 jipsnel.nl, 1 jira.com, 0 @@ -78152,19 +78354,16 @@ jiri-vincour.cz, 1 jiriholy.cz, 1 jirkanch-ayollar.ga, 1 jirkanch-ayollar.ml, 1 -jirniy.com, 1 jis.school, 1 jisai.net.cn, 1 jischool.org, 1 jisnashville.gov, 1 -jisulife.pk, 1 jitendrapatro.me, 1 jitkamahdalova.cz, 1 jitprod.com, 1 jitsipatapoe.ddns.net, 0 jittruckparts.com, 1 jiuchen.com, 1 -jivara.global, 1 jix.im, 1 jix.net, 1 jixing.one, 1 @@ -78176,7 +78375,6 @@ jiyu-clinic.jp, 1 jiyuu-ni.com, 1 jiyuu-ni.net, 1 jizhazha.com, 1 -jiznicechyfilm.cz, 1 jizzoh.com, 1 jizzoh.net, 1 jizzoh.org, 1 @@ -78205,10 +78403,9 @@ jkarteaga.tk, 1 jkbfabrics.com, 0 jkcc.com, 1 jkessen.de, 1 -jkest.cc, 0 +jkest.cc, 1 jkfasham.com.au, 1 jkg.tw, 1 -jkimdds.com, 0 jkinteriorspa.com, 1 jkjpm.com, 1 jkloli.tk, 1 @@ -78235,7 +78432,6 @@ jl-picard.tk, 1 jlbleakley.com, 1 jld.paris, 1 jldlawyers.com, 1 -jlgsepticllc.com, 1 jlifeoc.com, 1 jliu.xyz, 1 jlmirall.es, 1 @@ -78251,11 +78447,11 @@ jlqwer.com, 1 jlr-luxembourg.com, 1 jls.idv.tw, 1 jlsdesignservices.com, 1 -jlsolutionpro.com, 1 jltcsecuritygroup.com, 1 jlulug.org, 1 jlwagner.net, 1 jm-construction.be, 1 +jm73umh.pw, 1 jm9.co, 1 jmacedo.io, 1 jmango360.com, 1 @@ -78268,7 +78464,6 @@ jmb-jetshades.com, 1 jmb.lc, 1 jmbaxi.com, 1 jmbaxico.com, 1 -jmbaxigroup.com, 0 jmbaximarineservices.com, 1 jmbcorpcell.com, 1 jmbfe.com, 1 @@ -78279,6 +78474,7 @@ jmce.eu, 1 jmcleaning.services, 1 jmdekker.it, 1 jmedesign.tk, 1 +jmedved.com, 1 jmeno.eu, 1 jmentertainment.co.uk, 1 jmf-clan.tk, 1 @@ -78319,6 +78515,7 @@ jmzo.nl, 0 jn1.me, 1 jnana-yoga.info, 1 jnblict.co.za, 1 +jncie.eu, 1 jng.pt, 1 jnjpolymer.com, 1 jnktn.tv, 1 @@ -78361,7 +78558,9 @@ jobalicious.nl, 1 jobanzeigen.de, 1 jobapps.ch, 1 jobassadeurs.fr, 1 +jobbkk.com, 1 jobbnorge.no, 1 +jobbois.com, 1 jobbs.se, 1 jobbsafari.no, 0 jobbsafari.se, 0 @@ -78372,25 +78571,23 @@ jobcorps.gov, 1 jobcorpsy2y.com, 0 jobdataapi.com, 1 jobers.co.zw, 1 -jobflow.jp, 1 jobflyapp.com, 0 jobformore.com, 1 jobfresh.ga, 1 jobfury.com, 1 -jobgether.com, 1 jobhouse.jp, 1 -jobhunt.pl, 1 jobie.tk, 1 jobindex.dk, 1 jobintourism.gr, 1 jobit.gr, 1 -jobleader.co.uk, 1 -jobleader.co.za, 1 +jobitt.com, 1 joblife.co.za, 1 joblover.ml, 1 joblyconnect.com, 1 +jobmacon.com, 1 jobnmadu.com, 1 joboutlook.gov.au, 1 +jobpeintre.com, 1 jobphoning.com, 1 jobrs.edu.iq, 1 jobrus.ga, 1 @@ -78411,7 +78608,7 @@ jobseekeritalia.it, 1 jobsindemedia.nl, 1 jobsineachstate.com, 1 jobsingulf.com, 1 -jobsisbrown.com, 0 +jobsisbrown.com, 1 jobskilled.co.za, 1 jobsknowlgee.tk, 1 jobsmali.ml, 1 @@ -78425,8 +78622,11 @@ joburgplumbing.co.za, 1 jobwinner.ch, 1 jobynet.tk, 1 jobzcorner.tk, 1 +jocafil.com, 1 jocata.com, 1 jocelynjenkins.com, 1 +jochem.cc, 1 +jochem.sh, 1 jock2go.eu, 1 jockbusuttil.co.uk, 1 jockbusuttil.com, 1 @@ -78437,7 +78637,7 @@ jocomo911.gov, 1 jocuri-noi.tk, 1 jocurionline.eu, 1 jodaviesscountyil.gov, 1 -joder.li, 1 +jodhpurwindfarms.com, 1 jodlajodla.si, 1 jodyboucher.com, 0 jodymackphotography.com, 1 @@ -78447,6 +78647,7 @@ joearodriguez.com, 1 joecod.es, 1 joed.tk, 1 joedavison.me, 1 +joedeblasio.com, 1 joedoyle.us, 0 joedroll.com, 1 joefang.org, 1 @@ -78457,12 +78658,11 @@ joehorn.tw, 1 joejacobs.me, 0 joel-mayer.de, 1 joel.net.au, 1 -joelandersen.me, 0 +joelandersen.me, 1 joelengel.com, 1 joelfries.com, 1 joelito.tk, 1 joelj.org, 1 -joeljuca.com, 1 joelkoen.com, 1 joelkoeper.de, 1 joelle.me, 1 @@ -78473,15 +78673,18 @@ joellimberg.com, 1 joellombardo.com, 0 joelovano.com, 1 joelprice.com, 1 +joelving.dk, 0 joembayawaphotography.com, 1 joepitt.co.uk, 0 joerg-wellpott.de, 1 +joerger.ch, 1 joergschneider.com, 1 joerss.at, 1 joesalter.com, 1 joeseago.com, 0 joeshimkus.com, 1 joeskup.com, 1 +joesmotorpool.fr, 1 joesniderman.com, 1 joespaintingpgh.com, 1 joetyson.io, 1 @@ -78489,6 +78692,7 @@ joeyfelix.com, 1 joeyhoer.com, 1 joeysglassbaytown.com, 1 joeysmith.com, 0 +joeysslimeventure.com, 1 joeyvanvenrooij.nl, 1 joeyvilaro.com, 1 jofel-kinderkleding.tk, 1 @@ -78502,32 +78706,32 @@ jogjacar.com, 1 jogjakarta.tk, 1 jogorama.com.br, 0 jogosdeanimais.org, 1 +jogosfutebolhoje.pt, 1 jogoshoje.com, 1 jogoshoje.io, 0 -jogsales.com, 1 jogwitz.de, 1 johan-koffeman.tk, 1 -johan.nl, 1 johanaskalova.cz, 1 johanbollen.com, 1 johand.io, 1 +johanlog.com, 1 johann.tk, 1 johanna-besmier.fr, 1 johanna.gallery, 1 johannabest.com, 1 johannaojanen.com, 1 johannavarmala.fi, 1 +johannes-bauer.com, 1 johannes-schaefer.de, 1 johannes-sprink.de, 0 johannes-zinke.de, 1 johannes.wtf, 1 johannfritsche.de, 1 -johannhson.com, 0 +johannhson.com, 1 johanpeeters.com, 1 johego.org, 1 johjohannsonkaffe.no, 1 johlmike.com, 1 -john-cap.com, 1 john2point0.com, 1 johnabraham.net, 1 johnagreager.com, 1 @@ -78536,7 +78740,6 @@ johnathanhasty.com, 1 johnbaldry.com, 1 johnball.co, 1 johnbeil.com, 1 -johnbelthoff.com, 1 johnblackbourn.com, 0 johnblotsky.tk, 1 johnbratus.com, 1 @@ -78549,6 +78752,7 @@ johndball.info, 1 johndball.net, 1 johndball.org, 1 johndeisher.com, 1 +johndonmoyer.com, 1 johnex.se, 1 johngreatwood.com, 1 johnguant.com, 1 @@ -78566,7 +78770,6 @@ johnlewis.com, 1 johnload.tk, 1 johnlockepainting.com, 1 johnlowryspartancapital.com, 0 -johnluke.com, 1 johnmalloneemd.com, 0 johnmcc.net, 1 johnmcintosh.pro, 1 @@ -78583,7 +78786,6 @@ johnnyinscatola.it, 1 johnnyofans.com, 1 johnnyrelease.de, 1 johnnysandaire.com, 1 -johnnysteak.nl, 1 johnocallaghan.tk, 1 johnopdenakker.com, 1 johnrdockendorf.com, 1 @@ -78595,13 +78797,13 @@ johnsautoparts.co.za, 1 johnsburgny.gov, 1 johnscottcbe.com, 1 johnshopkinssolutions.com, 1 -johnson.tj, 1 johnsoncowy.gov, 1 johnsongenealogy.net, 1 johnsonho.net, 1 johnsonroofingltd.co.nz, 1 johnsons-wellfield.co.uk, 1 johnsons.tk, 1 +johnsonsca.com, 1 johnsonscorporate.com.au, 1 johnsonsexpress.com, 1 johnspion.tk, 1 @@ -78617,7 +78819,6 @@ johnwinter.tk, 1 johny.tv, 1 johnyytb.be, 1 joho.se, 1 -johub.de, 1 johutha.ch, 1 joi-dhl.ch, 0 join-aomori.jp, 1 @@ -78627,7 +78828,6 @@ joinamericacorps.gov, 1 joinamericorps.gov, 1 joincahoot.com, 1 joinclyde.com, 1 -joindns4.eu, 1 joinentre.com, 1 joinfear.tk, 1 joingy.com, 1 @@ -78643,7 +78843,6 @@ jointheconversationnotl.org, 1 jointherlworld.com, 1 jointheunseen.com, 1 jointotem.com, 1 -jointrusio.com, 1 jointsache.com, 1 joinupguard.com, 1 joj.sk, 1 @@ -78678,7 +78877,6 @@ jomactransport.com, 1 jomagus.de, 1 jomblee.com, 1 jomibe.de, 1 -jomipsa.com, 1 jomjohor.my, 1 jomla.ae, 1 jomo.tv, 1 @@ -78714,7 +78912,6 @@ jonathan-apps.com, 1 jonathanamoia.co, 0 jonathanbalsiger.com, 1 jonathancarter.org, 1 -jonathancorbin.io, 1 jonathandaleswindle.com, 1 jonathandowning.uk, 0 jonathanisaac.com, 1 @@ -78748,11 +78945,9 @@ jonfor.net, 1 jong030.nl, 1 jongbloed.nl, 1 jongcaxent.tk, 1 -jongcs.com, 1 jongenstromp.tk, 1 jongenwijs.gent, 1 jongerenkring.tk, 1 -jonginkoksijde.be, 1 jongminlab.com, 1 jongpay.com, 1 jongstit.co.th, 1 @@ -78777,7 +78972,6 @@ jonnygreenwood.tk, 1 jonoalderson.com, 1 jonohewitt.com, 1 jonola.com, 1 -jonpadgett.net, 1 jonpavelich.com, 1 jons.org, 1 jonscaife.com, 1 @@ -78788,13 +78982,12 @@ jonssheds.com, 1 jonstar.tk, 1 jonvemo.com, 0 jony.tk, 1 -jonyandjerin.com, 1 joo.ru, 1 joodari.fi, 1 joodsmonument.nl, 1 joogle.at, 1 jooli.tk, 1 -joomag.com, 0 +joomag.com, 1 joomanji.fr, 1 joomearaweb.tk, 1 joomla-leipzig.com, 1 @@ -78802,6 +78995,7 @@ joomla-spezialist.de, 1 joomla-ua.org, 1 joomladeveloper.ru, 1 joomlaguru.pl, 0 +joompress.biz, 1 joona.pw, 1 joorshin.ir, 1 joostdeheer.nl, 1 @@ -78833,6 +79027,7 @@ jordansfiles.tk, 1 jordansmovies.tk, 1 jordansrequests.tk, 1 jordhy.com, 1 +jordi3.com, 1 jordibelgraver.email, 1 jordibelgraver.eu, 1 jordibelgraver.xyz, 1 @@ -78851,12 +79046,9 @@ jornadahypera.com.br, 1 jornalalerta.com.br, 1 jornalaquidf.com.br, 1 jornalbrasilatual.com.br, 1 -jornaldaenfermagem.com.br, 1 jornalero.tk, 1 jornaya.com, 1 jorsev.com, 1 -jortt.nl, 1 -jortt.shop, 1 jos-verstappen-fan.tk, 1 josa.ngo, 1 josaa.nic.in, 1 @@ -78866,19 +79058,19 @@ joscares.com, 1 jose-alexand.re, 1 jose-latino.tk, 1 jose-manuel-benito-alvarez.tk, 1 +joseantonioramos.es, 1 josebernabe.ch, 1 +josedaniel.website, 1 joseenriquegonzalez.tk, 1 joseetesser.nl, 1 josef-lotz.de, 1 josefernandomorilloardila.tk, 1 -josefhelie.com, 1 josefienbouwmeister.nl, 1 josefinagrau.tk, 1 josefjanosec.com, 1 joseflegal.com, 1 josefranca.pt, 1 joseguerra.es, 1 -josejesusortiz.com, 1 josejorques.tk, 1 joseluisberrocal.tk, 1 josemariavazquez.com, 1 @@ -78912,24 +79104,24 @@ joshgibneyphoto.com, 1 joshgroban.tk, 1 joshharmon.me, 1 joshking.com, 1 -joshozuna.com, 1 joshparker.uk, 1 joshs.domains, 1 joshs.guide, 1 joshs.photos, 1 joshschmelzle.com, 1 +joshspage.ltd, 1 joshspage.ltd.uk, 1 joshspage.uk, 1 joshthewanderer.com, 1 joshu.am, 1 joshua-kuepper.de, 1 -joshua.law, 0 +joshua.law, 1 joshuadiamant.com, 1 joshuagoss.com, 1 +joshuajohnson.ca, 1 joshuamessick.com, 0 joshuaschmitt.us, 1 joshuastock.net, 1 -joshuawethington.com, 1 joshumax.me, 1 joshygeo.tk, 1 josiekellys.com, 1 @@ -78979,7 +79171,6 @@ journalstar.com, 1 journaltimes.com, 1 journeedesfilles.gc.ca, 1 journey.study, 1 -journeybjjacademy.com, 1 journeyfriday.rocks, 1 journeying.ca, 1 journeyofmymothersson.com, 1 @@ -78987,10 +79178,11 @@ journeyplanner.io, 1 journeyrent.com, 1 journeytofi.com, 1 journeytomastery.net, 1 -jourt.com, 1 +journi.me, 1 jousiammuntahalli.fi, 1 joustsec.com, 1 jouw-job.nl, 1 +jouwbuis.nl, 1 jouwpaardenbak.nl, 1 jouwsongteksten.tk, 1 jouwzorgjob.be, 1 @@ -79001,6 +79193,7 @@ jovenespuntales.com, 1 jovenespuntales.es, 1 jovic.hamburg, 1 jovisa.com.tw, 1 +joweb.co, 1 jowm-jo.com, 1 joworld.net, 0 joy-iq.com, 1 @@ -79012,9 +79205,9 @@ joyberryenterprises.com, 1 joyblz.com, 1 joybuggy.com, 1 joyce.tk, 1 -joycefeng.com, 1 joycejamiewedding.com, 1 joychetry.com, 1 +joycosmetics.ch, 1 joydivision.tk, 1 joydream.tk, 1 joyfay.com, 1 @@ -79026,6 +79219,7 @@ joyfully.fit, 1 joyinteractive.tk, 1 joyjohnston.ca, 0 joymarket.ir, 1 +joymation.net, 1 joymepass.com, 1 joyofmedinacountymagazine.com, 1 joyouscare.co.uk, 1 @@ -79060,7 +79254,7 @@ jpg.am, 1 jpg.fr, 1 jpg.tf, 1 jpgangbang.com, 1 -jphev.de, 1 +jphev.de, 0 jphost.ml, 1 jpilan.com, 1 jpinfo.tk, 1 @@ -79084,9 +79278,11 @@ jpsinflatables.co.uk, 1 jpst.it, 1 jptv4.us, 1 jpvermogensregie.com, 1 +jpvisual.com, 1 jqlin.com, 1 jqlsql.com, 1 jquery.wtf, 1 +jquerycomponents.com, 1 jr-signalisation.fr, 1 jr5devdoug.xyz, 1 jr5devdouglas.xyz, 1 @@ -79112,7 +79308,6 @@ jrlopezoficial.com, 1 jrmora.com, 0 jrock.tk, 1 jrock.us, 1 -jrockrevolution.com, 1 jrom.net, 1 jross.me, 1 jrroofinglancs.co.uk, 1 @@ -79146,6 +79341,7 @@ jscrambler.com, 1 jscsshtml.com, 1 jsd-aach.de, 1 jsd-cog.org, 1 +jsdelivr.com, 1 jsdelivr.net, 1 jsdt.ca, 1 jselby.net, 1 @@ -79155,6 +79351,7 @@ jsfleecefabric.com, 1 jsfloydlaw.com, 0 jsg.hk, 1 jsgr.ca, 1 +jsh.marketing, 0 jsheard.co.uk, 1 jsheard.com, 1 jsheard.me.uk, 1 @@ -79173,7 +79370,9 @@ jsme.fun, 1 jsmgroningen.nl, 1 jsn.one, 1 jsnfwlr.com, 0 +jsnfwlr.io, 0 jso-crescendo.ch, 1 +json.download, 1 json.id, 0 jsonprice.org, 1 jsonvalidator.tk, 1 @@ -79185,6 +79384,7 @@ jsre-kinki.jp, 1 jss6868.cc, 1 jssantos.net, 1 jssresearch.com, 1 +jstarlab.com, 1 jsteward.moe, 1 jstnmcbrd.com, 1 jstore.ch, 1 @@ -79218,7 +79418,7 @@ jts3servermod.com, 1 jtsrepair.ca, 1 jttech.se, 1 jtwo.co.za, 1 -jtxdev.my.id, 0 +jtxdev.my.id, 1 jtxmail.org, 1 jtxserver.xyz, 1 ju-edu.tk, 1 @@ -79226,8 +79426,10 @@ ju-rex.eu, 1 juabcounty.gov, 1 jualkambing.tk, 1 juancadc.es, 1 +juancamos.com, 1 juancarlosflores.tk, 1 juancarlosgalvez.tk, 1 +juancarlosllaque.com, 1 juancatalangomez.es, 1 juanfrancisco.tech, 1 juanherranz.com, 0 @@ -79237,6 +79439,7 @@ juanjomontecinos.tk, 1 juanmanuel.tk, 1 juanmapauso.tk, 1 juanmasuarez.tk, 1 +juanmazzetti.com, 1 juanmoreno.tk, 1 juanp.in, 1 juanpena.tk, 1 @@ -79266,7 +79469,6 @@ judgeball.com, 1 judi-online.ga, 1 judi.ga, 1 judi.tk, 1 -judic-ia.com, 1 judicialappointments.scot, 1 judicialstudiesjournal.ie, 1 judiciary.gov.ph, 1 @@ -79302,6 +79504,7 @@ juffrouwtoertjes.be, 1 juflynt.nl, 1 jugaar.llc, 1 jugendhackt.de, 1 +jugendhackt.org, 1 jugendpresse-hessen.de, 1 jugh.de, 1 juhakoho.com, 1 @@ -79321,15 +79524,15 @@ juicyforum.com, 1 jujutsuoulu.fi, 1 jujuygrafico.com.ar, 1 jukebox-manuals.tk, 1 -jukebox.plus, 1 jukisewingmachines.co.uk, 1 +jukkakivi.fi, 1 jukkakivimaki.fi, 1 jukovka.tk, 1 juku-wing.jp, 1 julb.de, 1 -julditec.com, 0 +julditec.com, 1 jule-spil.dk, 1 -julenetxaniz.eus, 1 +julenetxaniz.eus, 0 julenlanda.com, 0 julesfrans.be, 1 julesroovers.nl, 1 @@ -79337,6 +79540,7 @@ julia-clarete.tk, 1 julia-facon.pl, 1 julia-jones.org, 1 julia-spriggs.fr, 1 +julia.school, 1 julia0815.de, 1 juliafagel.com, 1 juliahub.com, 0 @@ -79365,14 +79569,15 @@ julianskitchen.ch, 0 julianvmodesto.com, 1 julianwallmeroth.de, 1 julianweigle.de, 1 -julianwitusch.de, 1 juliaoantiguidades.com.br, 1 +juliard.club, 1 julias.zone, 1 juliasugar.net, 1 juliawebber.co.za, 1 juliazeengardendesign.co.uk, 1 julibear.com, 1 julie-and-stevens-wedding.com, 1 +julie-pr.blog, 1 juliedecubber.com, 1 juliekoubova.com, 1 juliekoubova.cz, 1 @@ -79382,7 +79587,6 @@ juliemaurel.fr, 1 julien-demare.com, 0 julien-noyelle.com, 1 julien.expert, 1 -julienlanglois.me, 1 julienmotheron.tk, 1 julienpaterne.com, 0 juliens.tk, 1 @@ -79393,7 +79597,6 @@ juliepetit.com, 1 juliereisler.com, 1 julieskitchensf.com, 1 julieskyhigh.net, 1 -juliesliberties.fr, 1 juliet-squad.tk, 1 julietous.be, 1 julietta-sanchez.org, 1 @@ -79427,6 +79630,7 @@ jumpandbounce.co.uk, 1 jumpandjivechildrensparties.co.uk, 1 jumparoundbouncycastles.co.uk, 1 jumparty.co.uk, 1 +jumpcloud.com, 1 jumpeasy.com.au, 1 jumperke.be, 1 jumperweb.tk, 1 @@ -79442,7 +79646,6 @@ jumpingjacksbouncycastles.co.uk, 1 jumpintogreenerpastures.com, 0 jumpman-iphone-design.de, 1 jumpnplay.com.au, 1 -jumponaut.com, 1 jumpseller.cl, 1 jumpseller.com, 1 jumpstartii.com, 1 @@ -79458,10 +79661,10 @@ junebo.nu, 1 junebo.se, 1 juneereccentre.com.au, 1 junefolkhogskola.se, 1 +juneis.dog, 1 juneis.pet, 1 juneiscute.pet, 1 junethack.net, 1 -junews.it, 1 junfk.shop, 1 jungamer.uk, 1 junge-linke.tk, 1 @@ -79487,15 +79690,15 @@ juniorsambo.tk, 1 juniorsbook.com, 1 juniorsplanet.in, 1 juniper.es, 1 -juniper.net, 1 junis.nl, 1 junix.systems, 1 junjie.pro, 1 junjun-web.net, 0 junkcarbin.com, 1 -junkcarremovalbrampton.ca, 1 +junkcarboys.ca, 1 junkdrome.org, 0 junkersparadise.tk, 1 +junkfoodcafe.com, 1 junkguy.tk, 1 junkiedownload.tk, 1 junkotoshimadesign.com, 1 @@ -79505,12 +79708,10 @@ junktojewels.com.au, 1 junkyardsl.com, 1 junkyardtuning.tk, 1 junlyu.org, 1 -juno33.com, 1 junobaker.co.uk, 1 junomessenger.cf, 1 junshinkai.ed.jp, 1 junte.tk, 1 -juntoaqui.com.br, 1 juntos.gov, 1 juntosfmc.com.br, 1 junyan.ga, 1 @@ -79523,11 +79724,11 @@ jura-reiseschutz.de, 1 jura-versicherungen.de, 1 juragan.ga, 1 juragantembakau.com, 1 -jurai.pro, 1 jurancic.com, 1 jurassicworldfilmen.cf, 1 jurcic-prpic.hr, 1 jurena.sk, 1 +juretriglav.si, 1 jurex-cup.cz, 1 jurex.cz, 1 jurexcup.cz, 1 @@ -79537,7 +79738,6 @@ jurgis.tk, 1 juridiq.it, 1 jurimatic.com, 1 jurisapiens.com, 0 -jurisconsulto.mx, 1 juriscoop.com.co, 1 juriskc.com, 1 jurislex.tk, 1 @@ -79554,6 +79754,10 @@ jurposluga.tk, 1 jurquestion.tk, 1 jurriaan.ninja, 1 jurysync.com, 1 +juschek.com.au, 1 +juschek.net.au, 1 +juschekantigentest.com.au, 1 +juschekrapid.au, 1 jusdocs.com, 1 jusdos.cz, 1 jusfifun.tv, 1 @@ -79584,12 +79788,17 @@ justanotherday.tk, 1 justarchi.net, 1 justasdelish.com, 1 justbe.scot, 1 +justbid.nl, 1 justbraces.com.sg, 1 justbusinessvalue.com, 1 justbydesign.com, 1 justcall.io, 1 justcalm.tk, 1 justcams.tv, 1 +justcheckrapid.au, 1 +justchek.au, 1 +justchek.com.au, 1 +justchekrapid.au, 1 justchunks.net, 1 justdashes.com, 1 justement.ch, 1 @@ -79625,6 +79834,7 @@ justice.gov, 1 justifinetwork.com, 1 justin-tech.com, 1 justin3d.nl, 1 +justincoffman.com, 1 justindianporn.me, 1 justinellingwood.com, 1 justinfreid.com, 1 @@ -79633,6 +79843,7 @@ justinho.com, 1 justinkidd.ca, 1 justinmanders.nl, 1 justinritter.de, 1 +justinsinkula.com, 1 justinstago.com, 1 justinstandring.com, 1 justjackstuff.com, 1 @@ -79640,12 +79851,10 @@ justknigi.gq, 1 justlovecoffeefranchise.com, 0 justmade.com.br, 1 justmensgloves.com, 1 -justmy.space, 1 justmyblog.net, 0 justmysocks.xyz, 1 justnajoua.tk, 1 justneworleans.com, 1 -justninja.com, 1 justnu.se, 0 justor.ru, 1 justpass.co.uk, 1 @@ -79662,7 +79871,6 @@ justsfa.org, 1 justshare.tk, 1 juststone.net.au, 1 justthepill.com, 1 -justwatermark.com, 1 justweather.org, 1 justyy.com, 1 justzz.xyz, 1 @@ -79692,10 +79900,10 @@ jvbouncycastlehire.co.uk, 1 jvdham.nl, 1 jvega.me, 1 jvetter.net, 1 -jvhellemond.nl, 1 jvianes.ddns.net, 1 jvlfinance.cz, 1 jvn.photo, 1 +jvphotoboothhire.co.uk, 1 jvspin.com, 1 jvspinapp.com, 1 jvwcd.gov, 1 @@ -79703,6 +79911,7 @@ jw-services-stg.org, 1 jw-services.org, 1 jw.fail, 1 jw1.ca, 1 +jwala.diamonds, 1 jwatt.org, 1 jwatt.uk, 1 jwb.red, 1 @@ -79713,9 +79922,11 @@ jwdrecipes.com, 1 jwds.blog, 1 jwe.nl, 1 jweditions.co.uk, 1 +jwetv.com, 1 jwgarber.ca, 1 jwhite.network, 1 jwilsson.com, 0 +jwjwjw.com, 1 jwla.in, 1 jwmmarketing.com, 1 jwod.gov, 1 @@ -79726,7 +79937,6 @@ jwr.me, 1 jwroberts.com, 1 jwz.org, 1 jxcad.com.cn, 1 -jxcjwlgs.com, 1 jxdsp.com, 1 jxir.de, 1 jxl.tf, 1 @@ -79739,7 +79949,6 @@ jyoba.co.jp, 1 jyprj.com, 0 jysecurity.com, 1 jystewart.net, 1 -jytvu.cn, 1 jyvaskylantykkimies.fi, 1 jz.lc, 1 jzbk.org, 0 @@ -79749,14 +79958,15 @@ jzuwork.lt, 1 jzwebdesign.ie, 1 jzz.cool, 1 jzzfyw.com, 1 -k-45.ru, 1 k-amenix.co.jp, 1 k-den.com, 1 k-h-c.ru, 1 k-homes.net, 1 k-labs.be, 1 +k-larevue.com, 1 k-linkcarecenter.com, 1 k-matsudaclinic.com, 1 +k-moto.sk, 1 k-net.dk, 1 k-netz.de, 1 k-pan.com, 1 @@ -79768,7 +79978,6 @@ k-so.de, 1 k-system.de, 1 k-taxi.co.uk, 1 k-will.tk, 1 -k.box, 1 k.gy, 1 k.hk.cn, 1 k.sh, 1 @@ -79781,7 +79990,7 @@ k21academy.com, 1 k24klik.com, 1 k258059.net, 1 k29.ee, 1 -k2advocacy.com, 1 +k2corporatemobility.com, 1 k2lin.com, 1 k2velosi.com, 1 k36533.com, 1 @@ -79794,6 +80003,7 @@ k4nzi.duckdns.org, 1 k507.com, 0 k51365.com, 1 k5197.co, 1 +k55655.com, 1 k583.com, 0 k60d.com, 1 k6729.co, 1 @@ -79809,6 +80019,7 @@ k869.co, 0 k86921.com, 0 k86930.com, 1 k86967.com, 0 +k87.app, 1 k87073.com, 0 k87074.com, 0 k87075.com, 0 @@ -79831,6 +80042,7 @@ k88259.com, 1 k886.co, 1 k88670.com, 0 k88672.com, 0 +k8dalao.com, 1 k8didi.com, 1 k8gege.com, 0 k8ja.co.ke, 1 @@ -79855,7 +80067,6 @@ ka4aka.tk, 1 ka4ka-ru.tk, 1 ka4ka.cf, 1 ka4ka.ml, 1 -kaag-it.com, 1 kaagenbraassem.nl, 1 kaalberry.com, 0 kaamoscreations.com, 1 @@ -79897,7 +80108,7 @@ kabukpsikoloji.com, 1 kabulboy.tk, 1 kabulnow.com, 1 kabulpress.org, 1 -kabushiki.jp, 0 +kabushiki.jp, 1 kabyle.com, 1 kacanews.com, 1 kacang-bali.com, 1 @@ -79921,15 +80132,17 @@ kadence.tk, 1 kadenlegion.com, 1 kader-platform.nl, 1 kadestate.ru, 1 +kadet.net.ru, 1 kadett-c-club-limburg.tk, 1 kadhal-kirukkan.tk, 1 kadidak.com, 0 kadifeli.com, 1 kadinhaber.tk, 1 kadinhayati.com, 1 +kadinindonesia.or.id, 1 +kadinisci.org, 1 kadinsaglikhaber.tk, 1 kadinvesaglik.tk, 1 -kadirari.com.tr, 1 kadizadeinsaat.com.tr, 1 kado-ya.jp, 1 kadolis.com, 1 @@ -79943,7 +80156,6 @@ kaeptns-sechser.de, 1 kaeru-seitai.com, 1 kaesehagen.nl, 1 kafe-cigarko.cz, 1 -kafe.ai, 1 kafecigarko.cz, 1 kafel-ufa.tk, 1 kafeline.com, 1 @@ -79970,6 +80182,7 @@ kagl.me, 1 kagomesashi.tk, 1 kaguramea.fr, 1 kagurayayoi.top, 1 +kagurazaka-mc.com, 1 kaha.co.id, 1 kahane.org, 1 kahmad.in, 1 @@ -79983,7 +80196,7 @@ kaiahealth.com, 1 kaibaunderwear.com.ar, 1 kaibinyang.com, 1 kaibinyang.tk, 1 -kaido-app.com, 1 +kaiche.com, 1 kaidoblogi.eu, 1 kaigojj.com, 1 kaihipay.jp, 1 @@ -79991,6 +80204,7 @@ kaijo-physics-club.work, 1 kaik.io, 1 kaika-facilitymanagement.de, 1 kaikei7.com, 1 +kailashwedding.com, 1 kaileymslusser.com, 0 kaimah.co.nz, 1 kaimi.io, 1 @@ -80001,10 +80215,8 @@ kaiod.tk, 1 kaioken.bar, 1 kaion.vn, 1 kaipel.de, 1 -kaipop.com, 1 kairion.de, 1 kairoscope.org, 1 -kairoscyprus.com, 1 kais08.com, 1 kaisanord.org, 1 kaiseraerospace.tk, 1 @@ -80012,36 +80224,35 @@ kaiserburg-nuernberg.de, 1 kaiserinformativo.com, 1 kaisev.net, 1 kaishi009.com, 1 -kaisla.ai, 1 +kaisto.net, 0 kaisyo.co.jp, 1 +kaito.ai, 1 kaitol.click, 1 kaitseministeerium.ee, 0 kaity-sun.com, 1 kaiusaltd.com, 0 kaiva.cl, 1 -kaivafuture.com, 1 kaiwritings.com, 1 kaiwu.xyz, 1 kaiy.moe, 1 -kaiyi.co.tt, 1 kaizencraft.ga, 1 kaizenjuku.org, 1 kaizenreporting.com, 1 kaizeronion.com, 1 kaizoku-dmc.com, 1 +kajabi.com, 1 kajak.land, 1 kajalkumar.tk, 1 kajasafe.fi, 1 kajavandor.hu, 1 kajirakuda.com, 1 kajlovo.cz, 1 -kajotte-studio.com, 1 kajzonnebeke.tk, 1 kak-pohudet-legko.ml, 1 kak.ao, 1 kaka.farm, 0 kakabo.vn, 1 -kakacon.nz, 0 +kakacon.nz, 1 kakan.ml, 1 kakaravaara.fi, 1 kakdolgonline.cf, 1 @@ -80068,7 +80279,7 @@ kakvzyatdolg.ml, 1 kakvzyatzaim.cf, 1 kakvzyatzaim.gq, 1 kakvzyatzaim.tk, 1 -kal.co.jp, 0 +kal.co.jp, 1 kal05.tk, 1 kalabhavashricreations.com, 1 kaladarb.com, 0 @@ -80076,6 +80287,7 @@ kalaharifeis.com, 1 kalakarclub.com, 1 kalambur.gq, 1 kalambur.ml, 1 +kalami.nl, 1 kalamos-psychiatrie.be, 1 kalamos.tk, 1 kalamotownship-mi.gov, 1 @@ -80083,6 +80295,7 @@ kalapatec.id, 1 kalashnikov.ml, 1 kalaskvintetten.tk, 1 kalaspuffar.se, 1 +kalastus.com, 1 kaldewei.com, 1 kaleidoscope.co.uk, 1 kaleidoscopepsychology.co.nz, 1 @@ -80106,13 +80319,11 @@ kalimantan.tk, 1 kalimari.tk, 1 kalimat.gq, 1 kalimba-hangszerbolt.hu, 1 -kalin.eu.org, 1 kalina.ml, 1 kaliningrad-news.net, 1 kaliningrad.gq, 1 kaliningrad.ml, 1 kalinka-shop.tk, 1 -kalinkaoptics.com, 1 kaliocommerce.com, 1 kalisch.eu, 1 kalisiconstructionltd.co.uk, 1 @@ -80127,6 +80338,7 @@ kalleanka.tk, 1 kalligo.ga, 1 kalligraf.tk, 1 kallipso.pl, 1 +kallosmedicalaesthetics.com, 1 kalmarantiques.com.au, 1 kalmarbilder.se, 1 kalmbach.com, 1 @@ -80156,16 +80368,20 @@ kalvellido.net, 1 kalwak.cr, 1 kalwestelectric.com, 1 kalyancity.in.ua, 1 +kalyandevelopers.com, 1 kalyangupta.ml, 1 kalyazin-online.tk, 1 +kalypsoapp.com, 1 kam-serwis.pl, 1 kamada.com, 1 +kamagrajel.online, 1 kamagrajel.org, 1 kamalame.co, 1 kamandula.tk, 1 kamanja.io, 1 kamareddine.tk, 1 kamasutra-training.gq, 1 +kamata-saisyuusyou.com, 1 kamata-shinkyu-seikotsu.jp, 1 kamataryo.com, 1 kamataworks.com, 1 @@ -80175,13 +80391,10 @@ kamchatka-news.net, 1 kamchatkatravel.tk, 1 kamchatkawinter.tk, 1 kamcolorectal.com, 1 -kame.gay, 1 kamel.social, 1 -kameldesign.com, 1 kameliya.tk, 1 kamennyj-pisatel.tk, 1 kameno-news.tk, 1 -kamept.com, 1 kamer.nl, 1 kamera.org.tr, 1 kameryzababku.sk, 1 @@ -80195,16 +80408,17 @@ kamikami.eu, 1 kamikatse.net, 1 kamikatzerl.net, 1 kamikazeweb.tk, 1 -kamilabasta.pl, 1 kamildrozd.tk, 1 kamilla.ml, 1 kamilmagdziak.pl, 1 kamilsevi.com, 1 kamin-71.ru, 1 kamin-island.ru, 1 +kaminbau-laub.de, 1 kaminholz.eu, 1 kaminoke.info, 0 kaminoyamasaigube.com, 1 +kaminy-msk.ru, 0 kamio.co.uk, 1 kamisato-ent.com, 1 kamistik.com, 1 @@ -80220,7 +80434,6 @@ kamloopsreportingservices.com, 1 kamlunglelystad.tk, 1 kamnob.com, 1 kamp-kisten.nl, 1 -kampanyaplus.com, 1 kampanyaradar.com, 1 kampffische.tk, 1 kampfsportschule-einherjar.de, 1 @@ -80230,7 +80443,6 @@ kamppailusali.fi, 1 kampungcyber.tk, 1 kampunginggris-ue.com, 1 kampusku.tk, 1 -kampyn.com, 1 kamrad.tk, 1 kamranmirhazar.com, 1 kamsoft.pl, 1 @@ -80260,8 +80472,6 @@ kanbanblog.com, 1 kanbanflow.com, 1 kanbanflowbackup.com, 1 kancelarblanik.cz, 1 -kancelaria.torun.pl, 1 -kancelariatyniec.pl, 1 kancelariawlt.pl, 1 kancolle.me, 1 kancriaura.org, 1 @@ -80278,13 +80488,13 @@ kandra.com.br, 1 kandrahechiceravudu.com, 1 kandrive.gov, 1 kanduit.live, 1 +kanduit.tech, 1 kaneadvocates.com, 1 kaneandtrap.com, 1 kanecastles.com, 1 kanecountyhospitalut.gov, 1 kanecountyil.gov, 1 kanehisa.xyz, 1 -kanekalon-shop.cz, 1 kanepes.lv, 1 kaneprod.com, 1 kanetix.ca, 1 @@ -80325,6 +80535,7 @@ kano.tk, 1 kanoonkehaath.in, 1 kanootours.com, 1 kanotijd.nl, 1 +kanoumokuzai.co.jp, 1 kanpian369.com, 1 kanru-clinic.com.tw, 1 kansascityzoo.org, 0 @@ -80355,6 +80566,7 @@ kanvasbaski.tk, 1 kanz.jp, 1 kanzashi.com, 1 kanzleiplus.com, 1 +kanzshop.com, 1 kaodata.com, 1 kaohongshu.blog, 1 kaora.cz, 1 @@ -80406,7 +80618,6 @@ karabukhaber.tk, 1 karachay.tk, 1 karada.live, 1 karadenizhaberleri.tk, 1 -karadenizmetal.tr, 1 karagory.cloud, 1 karajonline.tk, 1 karakafa.net, 1 @@ -80419,11 +80630,10 @@ karand.me, 1 karanjthakkar.com, 1 karanlyons.com, 1 karao.ke, 1 -karaodesign.fr, 0 +karaodesign.fr, 1 karaoglanis-info.tk, 1 karaoglanis.tk, 1 karaokeyboards.tk, 1 -karaonow.com, 1 karapatan.org, 1 karapuzz.tk, 1 karasev-stroy.ru, 1 @@ -80455,7 +80665,7 @@ kareltrans.tk, 1 karelvanhecke.com, 1 karen-homestay.tk, 1 karencatering.com, 1 -karenerdos.com.au, 0 +karenerdos.com.au, 1 karenjhardwick.com, 0 karenneva.com, 1 karennews.org, 1 @@ -80471,10 +80681,11 @@ karikatur.ml, 1 karikatur.tk, 1 karimova.tk, 1 karimsaadati.tk, 1 +karimunsejahtera.com, 1 karin-ewald.de, 1 karinahh.net, 1 karinheinenmaassen.nl, 1 -karinov.co.id, 0 +karinov.co.id, 1 karinwerner.com, 1 kariszoey.com, 1 karit.nz, 1 @@ -80485,10 +80696,12 @@ karlamouracortinas.com, 1 karlapepe.lel.br, 1 karlayura.com.au, 1 karlbowden.com, 1 +karlegloff.com, 1 karlhaworth.com, 1 karlic.net, 1 karliekloss.tk, 1 karlin.run, 1 +karlis-kavacis.id.lv, 1 karlis.tk, 1 karlislab.com, 0 karllagerfeldvillasmarbella.com, 1 @@ -80497,8 +80710,6 @@ karloluiten.nl, 1 karloskontana.tk, 1 karlov.tk, 1 karlproctor.co.uk, 1 -karlsen.fr, 1 -karlsen.org, 1 karlskronajk.tk, 1 karlsmithmn.org, 1 karlson.gq, 1 @@ -80520,7 +80731,6 @@ karodos.pl, 1 karol.gay, 1 karolak.fr, 0 karolaschinkel.de, 1 -karollech.com, 1 karopc.pl, 1 karorally.tk, 1 karoverwaltung.de, 1 @@ -80537,7 +80747,6 @@ karr.ga, 1 karramba.tk, 1 karriharju.tk, 1 karrot.world, 1 -karryfishing.com, 1 karsiyakacilingir.biz.tr, 1 karsofsystems.com, 1 karsta.de, 1 @@ -80569,11 +80778,12 @@ karunasehgal.com, 1 karvina.cz, 1 kas.ie, 1 kasad.com, 1 +kasai-wks.com, 1 kasamatsu-sogo-hoken.com, 1 kasanikares.com, 1 -kasapreko.com, 1 kasasaprotect.com, 1 kasaysayan.tk, 1 +kasbahofpeace.com, 1 kasc.finance, 1 kasei.im, 1 kaserne-basel.ch, 1 @@ -80603,6 +80813,7 @@ kaskodev.com, 1 kaskojs.com, 1 kaskoqa.com, 1 kasowitz.com, 1 +kaspa-store.com, 1 kasparovru.ml, 1 kasparovru.tk, 1 kasper-team.tk, 1 @@ -80623,25 +80834,26 @@ kastamonuhaberleri.tk, 1 kastankaoffice.cz, 1 kastas.com, 1 kastas.com.tr, 1 +kastechssg.com, 1 kasteelhoensbroek.nl, 1 kastelruth.biz, 1 kastemperaturen.ga, 1 kastgroup.com, 1 +kastorsky.ru, 0 kastrup.is, 1 -kastrupvinduet.dk, 0 +kastrupvinduet.dk, 1 kastuvas-tau.lt, 1 kasu.ga, 1 kasuganozaka.net, 1 kasvall.com, 1 kasyna-internetowe.com, 1 kasynoanalyzer.com, 1 -kat.ai, 1 kat.cat, 1 kat.tf, 0 kat4at.tk, 1 katabump.com, 1 katagena.com, 1 -kataiszilveszter.hu, 1 +kataiszilveszter.hu, 0 katalog-parfyum.tk, 1 katalog-serverof.ml, 1 katalog-serverov.cf, 1 @@ -80658,6 +80870,7 @@ katapult.es, 0 katapult.tk, 1 katarios.tk, 1 katarpilar.com, 1 +katarsisuib.no, 1 katartika.tk, 1 kataumi-shika.jp, 1 katavagroup.com, 1 @@ -80671,6 +80884,7 @@ katekligys.com, 1 katemihalikova.cz, 1 katenka.tk, 1 katerchrisman.com, 1 +katerinaverbovskaya.com, 1 katerman.cf, 1 katerman.ga, 1 katerman.gq, 1 @@ -80682,7 +80896,6 @@ katesymmans.co.nz, 1 katex.org, 1 kateysagal.tk, 1 katfitness.co.uk, 1 -katha.lk, 1 kathakkachakkar.com, 1 kathardt.de, 1 katherineandkegan.love, 1 @@ -80690,6 +80903,7 @@ katherineswynford.tk, 1 kathleendeisher.com, 1 kathmandupost.com, 1 kathrin-maren-enders.de, 1 +kathrineaspaas.no, 1 kathrynbernardo.tk, 1 kathy.best, 1 kathy.lgbt, 1 @@ -80713,7 +80927,6 @@ katjapratschke.de, 1 katka.info, 1 katnunn.co.uk, 1 kato-yane.com, 1 -katogen.com, 1 katom.com, 1 katrelleonline.tk, 1 katretter.de, 1 @@ -80730,7 +80943,6 @@ kattelans.de, 1 kattelans.eu, 1 kattelus.tk, 1 kattens.tk, 1 -katumms.com.au, 1 katushka.cf, 1 katushka.ga, 1 katyl.info, 0 @@ -80749,7 +80961,6 @@ kaufmanandassociates.com, 1 kaufmannkevin.de, 1 kaukauna.gov, 1 kaunoleliuteatras.lt, 1 -kauper.de, 1 kauperwood.ovh, 1 kaushal.tk, 1 kausharach.tk, 1 @@ -80758,10 +80969,11 @@ kausta.me, 1 kaustubhk.com, 1 kava.io, 1 kavalasite.gr, 1 -kavaofi.com, 0 +kavaofi.com, 1 kavaplius.lt, 1 kavatasygarety.tk, 1 kaveh24.com, 1 +kavelruilonline.nl, 1 kaverti.com, 1 kavik.no, 1 kavin.rocks, 0 @@ -80786,6 +80998,7 @@ kawamura-inc.jp, 1 kawasaki.com, 1 kawasakipartsonline.co.uk, 1 kawcityok.gov, 1 +kaweruhjawa.com, 1 kawigraphics.com, 1 kawistamade.com, 1 kawnation.gov, 1 @@ -80793,7 +81006,6 @@ kawuk.com, 1 kay.la, 1 kay.moe, 1 kay.nz, 1 -kayabyd.lk, 1 kayakaventura.tk, 1 kayakcastro.tk, 1 kayakpolouniversidades.tk, 1 @@ -80803,13 +81015,12 @@ kayher-kirschbluetenlauf.de, 1 kayipkiliseler.com, 1 kayisir.com, 1 kayit.co.uk, 1 -kayladayman.com, 1 kaylarichardson.com, 1 kayleen.net, 1 kaylielaw.com, 1 kayne.com, 1 kayon.cf, 1 -kayphi.com, 1 +kayser-cs.lu, 1 kayseri.bel.tr, 1 kayserihaberleri.tk, 1 kaysville.gov, 1 @@ -80841,6 +81052,7 @@ kaznur.tk, 1 kazoohr.com, 0 kaztest.tk, 1 kazu-techlab.com, 1 +kazu.click, 1 kazumi-clinic.com, 1 kazumi.ooo, 1 kazuno-jc.or.jp, 1 @@ -80849,6 +81061,7 @@ kazvel.com, 1 kazy111.info, 1 kb-l.de, 1 kb-psy.fr, 1 +kb096.com, 1 kb1000.de, 1 kb1313.com, 1 kb16.de, 1 @@ -80856,11 +81069,13 @@ kb35.net, 1 kb38.net, 1 kb5050.com, 0 kb5757.com, 1 +kb7070.com, 1 kb82.net, 1 kb88dc05.com, 1 kb88dc12.com, 1 kb88dc16.com, 1 kb88dc26.com, 1 +kb930.com, 1 kba-online.de, 1 kbb-ev.de, 1 kbbouncycastlehire.co.uk, 1 @@ -80881,18 +81096,17 @@ kbsinflatablekingdom.co.uk, 1 kbst.se, 0 kbtairmont.com, 1 kbtit.jp, 1 +kbwcorp.com, 1 kbz.fr, 1 kc-holzfaeller.de, 1 kc-leeuwarden.tk, 1 kc-support.dk, 1 -kc0jc.com, 1 kc3.moe, 1 kc9.com, 1 kc9.lol, 1 +kc9.me, 0 kc9.vip, 1 -kca2009.com, 1 kcagsolutions.com, 1 -kcalb-ltd.com, 1 kcc8.com, 1 kcchung.com, 1 kcci.com, 1 @@ -80936,7 +81150,6 @@ kdk.com.my, 1 kdm.pw, 1 kdn-dc.com, 1 kdo-vola.cz, 1 -kdofid.fr, 1 kdonkers.com, 1 kdoslavi.cz, 1 kdproduction.cz, 1 @@ -80944,7 +81157,6 @@ kdramaholic.com, 1 kdrive.tk, 1 kdt-lille.com, 1 kduggan.net, 1 -kduworld.com, 1 kdw.cloud, 1 kdyby.org, 0 kdyzvodanekdevytecemusidotectnekamjinam.cz, 1 @@ -81008,7 +81220,6 @@ keep.moe, 1 keepa.com, 1 keepagree.gq, 1 keeperapp.com, 1 -keepersecurity.ca, 1 keepersecurity.com, 1 keepersecurity.com.au, 1 keepersecurity.eu, 1 @@ -81016,6 +81227,7 @@ keepersecurity.jp, 1 keepersecurity.us, 1 keepiteasy.eu, 1 keepitsecure24.com, 1 +keepitsimplebitcoin.com, 1 keepleft.gr, 1 keepsight.org.au, 1 keepsolid.com, 1 @@ -81032,13 +81244,13 @@ kefucha.de, 1 kegan.lol, 1 keganthorrez.com, 1 kegelschiene.net, 0 -kegoc.kz, 1 kehlenbach.net, 1 keian.tk, 1 keibablood.com, 1 keiebijters.nl, 1 keigakusha.co.jp, 1 keigel2001.net, 1 +keiji0501.com, 1 keiju.ee, 1 keiju.fi, 1 keijuriini.fi, 1 @@ -81073,7 +81285,6 @@ keiyuki.com, 1 keizeror.gov, 1 kejiben.fun, 1 kejpop.pl, 1 -kejtahir.com, 1 kekarimi.com, 1 keke-shop.ch, 1 kekoskee.gov, 1 @@ -81084,6 +81295,7 @@ kelamb.com, 1 kelantan.tk, 1 kelantanmudah.com, 0 kelax.tk, 1 +kelbillet.com, 1 kelcible.fr, 1 kelcotool.com, 1 kelder.tk, 1 @@ -81122,7 +81334,6 @@ kellyskastles.co.uk, 1 kellysspa.com, 1 kellyvoice.tk, 1 kellywebcam.tk, 1 -kelmia.com, 1 keln.net, 1 kelp.agency, 1 kelsa.io, 0 @@ -81131,13 +81342,11 @@ kelts.tk, 1 kelvinchung.tk, 1 kelvindecosta.com, 1 kelvinfichter.com, 0 -kelvinwest.com, 1 kelvitrine.com, 1 kelyan.fr, 1 kemahtx.gov, 1 kemanai.akita.jp, 1 kemand.com, 1 -kemapack.com, 1 kemba.com, 1 kemeha.tk, 1 kemerovo-news.net, 1 @@ -81160,7 +81369,6 @@ kempkens.io, 1 kempnertx.gov, 1 kemppi.com, 0 kempportraits.com, 1 -kemps.com, 1 kemptechnologies.com, 0 kemptonparkplumbing.co.za, 1 kemptonparksolarsystems.co.za, 1 @@ -81176,7 +81384,9 @@ kemsamnhatban.tk, 1 kemsia.nl, 1 ken-electric.com.br, 1 ken.fm, 1 +kenaquatic.com, 1 kenbillionsyuan.tk, 1 +kenbonny.net, 0 kenda.eu.org, 1 kendaliomega.id, 1 kendall.productions, 1 @@ -81200,15 +81410,17 @@ kenhhomestay.com, 1 kenhv.com, 1 keniasfamilychildcare.com, 1 keniff.gq, 1 +kenkobox.jp, 1 +kenlewis.com, 1 kennards.co.nz, 1 kennebec.gov, 1 -kennebunksavings.com, 1 kennedy.cf, 1 kennedy.ie, 1 kenners.org, 0 kennethaasan.no, 1 kennethandersen.com, 1 kennethhaglind.com, 0 +kennethlim.me, 1 kennethsentillas.com, 1 kennewell.tk, 1 kennis.ga, 1 @@ -81217,6 +81429,7 @@ kennisnetwerkparkeren.nl, 1 kennispleinzingeving.nl, 1 kenny-peck.com, 1 kenny.technology, 1 +kennychan.xyz, 1 kennynet.co.uk, 1 keno.im, 1 keno.tk, 1 @@ -81263,8 +81476,6 @@ keos.ga, 1 keos.tk, 1 kep-sbt.hu, 1 kepak.tk, 1 -kepakoti.fi, 1 -kephren.com, 1 kepkonyvtar.hu, 1 kepleruniklinikum.at, 1 keppler.tk, 1 @@ -81313,15 +81524,17 @@ kerrnel.com, 1 kerroscale.in, 1 kerrybluephotography.com, 1 kerrydavisguitars.tk, 1 +kerrygoldusa.com, 1 kersmexico.com, 1 +kerstboomkantenklaar.nl, 1 kerstpagina.tk, 1 -kerstpakkettenplaza.nl, 1 kersvers.agency, 1 kertis.tk, 1 kertweb.hu, 1 kerus.net, 1 kerv.com, 1 kerveroslive.com, 1 +kervive.com, 0 kescher.at, 1 kescher.gay, 1 kescher.site, 1 @@ -81331,7 +81544,7 @@ kesen.wang, 0 keshankang.org, 1 keshausconsulting.com, 1 keshav.cc, 1 -keshavnet.com, 1 +keshavnet.com, 0 kesif360.com, 1 kesifasya.com, 1 kesinidulu.com, 1 @@ -81339,6 +81552,7 @@ keskikorpimotorsport.fi, 1 keskkonnaamet.ee, 0 kesko.fi, 0 keskraamatukogu.ee, 1 +kessel-runners.com, 1 kesselrun.goip.de, 1 kesslerandsons.com, 1 kesspay.io, 1 @@ -81372,7 +81586,6 @@ ketulgpatel.tk, 1 ketv.com, 1 ketzer.tk, 1 keukenhof.nl, 1 -keukenkraanwinkel.nl, 1 keukenstudio.tk, 1 keurigbestprice.tk, 1 keuvelaar.nl, 1 @@ -81396,7 +81609,6 @@ kevinapease.com, 1 kevinaud.io, 1 kevinbarbieri.com, 1 kevinbardot.alwaysdata.net, 1 -kevinborja.com, 1 kevinbowers.me, 1 kevinchang.me, 1 kevincordes.de, 1 @@ -81430,8 +81642,8 @@ kevinvanderperren.tk, 1 kevinvermassen.be, 1 kevinwoodphotography.com, 1 kevyn.lu, 1 +kewarra.nl, 1 kewauneeco.gov, 1 -kexec.io, 1 kexingqing.com, 1 kexino.com, 1 key-tracker.de, 1 @@ -81458,20 +81670,21 @@ keyfoundation.xyz, 1 keygen.sh, 1 keyhani.tk, 1 keyhomechecker.com, 1 -keyi-zou.com, 1 keyihao.cn, 1 keyinfo.io, 1 keykong.io, 1 keylength.com, 1 -keyloop.com, 0 +keyloop.com, 1 keymaster.lookout.com, 0 keymicrosystems.com, 1 keynes.id.au, 1 keyoxide.org, 1 +keypazar.tr, 1 keypers.io, 1 keyphotojs.cf, 1 keypoint.edu.au, 1 keyrana.com, 1 +keyroot.tech, 1 keys.fedoraproject.org, 1 keyscore.me, 1 keyserver.sexy, 0 @@ -81511,7 +81724,7 @@ kfgleasing.pl, 1 kfintech.com, 1 kfjgyb.com, 0 kfjh.se, 1 -kflo.org, 1 +kfk.haus, 1 kfm.ink, 0 kfmhf.ca, 1 kfoundation.org, 1 @@ -81522,7 +81735,6 @@ kfz-hantschel.de, 1 kfz-premiumteile24.de, 1 kfz-sachverstand.de, 1 kfz-service-wachtmann.de, 1 -kfz-serviceschmidt.de, 1 kfz.nl, 1 kfzjeugd.nl, 1 kg-regenbogen.de, 1 @@ -81536,7 +81748,6 @@ kgk.gov.tr, 1 kgm-irm.be, 1 kgmediafactory.com, 0 kgmonderhoud.nl, 1 -kgncengiz.com, 1 kgnk.ru, 0 kgt10.ru, 1 kgun9.com, 1 @@ -81559,7 +81770,6 @@ khakassia.tk, 1 khaki.ga, 1 khakim.gq, 1 khakim.tk, 1 -khalabansho.com, 1 khaledalsabt.com, 1 khaledkhan.ml, 1 khaleesi.tk, 1 @@ -81568,7 +81778,6 @@ khalidmail.tk, 1 khaliinfo.tk, 1 khalilicollections.org, 1 khalti.com, 1 -khanh.id, 1 khankandi.tk, 1 khanovaskola.cz, 1 khaolak-house.com, 1 @@ -81584,7 +81793,6 @@ khayal-3d.com, 1 khda.gov.ae, 1 khdestiny.tk, 1 khebranet.tk, 1 -khedma.uk, 1 khepri.uk, 1 kherson-news.ru, 1 kheshtar.pl, 1 @@ -81608,9 +81816,7 @@ khouloud.de, 1 khoury-dulla.ch, 0 khouryalexandre.com, 0 khoxuongchothuegiare.vn, 1 -khprop.com, 1 khramtsov.org, 1 -khro.me, 1 khs1994.com, 1 khste-ceciliamoorsel.tk, 1 khtt.net, 1 @@ -81621,17 +81827,16 @@ khusal.tk, 1 khuyenmaiviettel.vn, 1 khwezifinancialservices.co.za, 1 khwiki.com, 1 -ki-adept.eu, 1 ki-dc.com, 1 ki-management.ch, 1 ki.ki, 1 ki6rbv.com, 1 kiacatherine.sg, 1 +kiadoapartman.hu, 1 kialo-edu.com, 1 kialo-pro.com, 1 kialo.com, 1 kiamehr.tk, 1 -kian.or.jp, 1 kianho.com.sg, 1 kiano.net, 0 kiapartsnow.com, 1 @@ -81640,6 +81845,7 @@ kiarayoga.com, 1 kiarey.net, 1 kiasarnews.tk, 1 kiasystems.com, 1 +kibea.net, 1 kibernodas.com, 1 kibi.org, 1 kibibit.net, 1 @@ -81668,8 +81874,10 @@ kicktipp.it, 1 kicktipp.nl, 1 kicktipp.pl, 1 kicktipp.pt, 1 +kickzy.nl, 1 kicnews.org, 1 kicou.info, 1 +kiczeklaw.com, 1 kiczela.eu, 1 kidalt.tk, 1 kidcentraltn.com, 1 @@ -81677,6 +81885,7 @@ kidderminster.ac.uk, 1 kiddies.tk, 1 kiddieskingdom.tk, 1 kiddocom.org, 1 +kiddoscape.eu, 1 kiddyboom.ua, 1 kiddyland.co.jp, 1 kidfitseries.com.au, 1 @@ -81685,7 +81894,7 @@ kidis.lt, 1 kidisov.tk, 1 kidiu.com, 1 kidm4k.com, 0 -kidney.ca, 0 +kidney.ca, 1 kidonng.me, 1 kids-castles.com, 1 kids-concept.de, 1 @@ -81746,7 +81955,7 @@ kieran-mcguire.uk, 1 kieran.de, 1 kieranpotts.com, 1 kieranweightman.me, 1 -kieronlimgastro.com.sg, 1 +kierlandgolf.com, 0 kierweb.co.uk, 1 kiesjeplek.nl, 1 kiesuwarbeidsrechtadvocaat.nl, 1 @@ -81761,14 +81970,10 @@ kievlove.tk, 1 kiewit.com, 1 kiewiterp.com, 1 kiezlerovi.cz, 1 -kif.rocks, 1 +kif.rocks, 0 kiffmarks.com, 1 kifid.nl, 1 -kigermap.cn, 1 -kigermap.com, 1 -kighub.cn, 1 -kigmbh.com, 1 -kigyounomori.com, 1 +kihi.news, 1 kiinanharjakoirat.tk, 1 kiind.com.au, 1 kiiteyo.net, 1 @@ -81792,10 +81997,8 @@ kikchat.co.il, 0 kiki.ee, 1 kikikanri.biz, 1 kikivega.net, 1 -kikki.io, 1 -kikoskia.com, 0 +kikoskia.com, 1 kiku.pw, 1 -kildarestreet.com, 1 kilian-sommer.de, 1 kilian.gallery, 1 kiliansommer.de, 1 @@ -81803,7 +82006,6 @@ kilianvalkhof.com, 1 kiliflix.de, 1 kilimstyle.com, 1 kilinskiego12.pl, 1 -kilintime.com, 1 kilkennyaccountingservices.ie, 1 kilkennycoco.ie, 1 kilkimzaibu.tk, 1 @@ -81827,6 +82029,7 @@ killme.rocks, 1 killmebaby.ml, 1 killmenow.tk, 1 killteamseller.it, 1 +killtv.me, 0 killua-website.tk, 1 killymoonbouncycastles.com, 1 kilo-files.tk, 1 @@ -81850,6 +82053,7 @@ kimballwv.gov, 1 kimberleythomson.tk, 1 kimberlyal.gov, 1 kimberlycaprice.com, 1 +kimberlydelarosa.com, 1 kimberlytank.com, 1 kimboggusphotography.com, 1 kimbroughelectric.com, 1 @@ -81910,11 +82114,11 @@ kinaesthetics.ru, 1 kinaesthetics.vision, 1 kinaesthetik-verein.de, 1 kinamedia.se, 1 +kinanart.com, 1 kinanbudotenero.tk, 1 kinandcarta.com, 1 kinandleisure.com, 1 kinautas.com, 1 -kincaimedia.net, 1 kindan.net, 1 kindapoth.com, 1 kinde.com, 1 @@ -81923,7 +82127,6 @@ kinderarzt-berlin-zia.de, 1 kinderarzt-traunstein.de, 1 kinderballett-frankfurt.de, 1 kinderbasar-luhe.de, 1 -kinderberlin.de, 1 kinderbuecher-kostenlos.de, 1 kinderchirurgie-muenchen.de, 1 kinderevents-sehnde.de, 1 @@ -81973,22 +82176,23 @@ kinesportbruxelles-maghfour.com, 1 kineticengineeringnsw.com.au, 1 kinetikos.com.au, 1 kinetiq.com, 1 +kinetofit.ro, 1 kineval.net, 1 kinfule.tk, 1 king-of-the-castles.com, 1 kingandmcgaw.com, 1 kingant.net, 1 kinganywhere.eu, 1 +kingautodetailing.id, 1 kingbot.tk, 1 kingchess.vip, 1 kingcourriel.fr, 1 kingcute.com, 1 kingdombuilderschurch.org, 1 -kingdomcincy.com, 1 kingdomcitymo.gov, 1 kingdomcrawlers.tk, 1 +kingdommediacorp.com, 1 kingdomnubia.com, 1 -kingdomrich.life, 1 kingdomsail.com, 1 kingedwardvii.co.uk, 1 kingfast.cc, 1 @@ -82007,6 +82211,7 @@ kingofthecastlecoventry.co.uk, 1 kingofthecastlesentertainments.co.uk, 1 kingofthecastlesouthwales.co.uk, 1 kingofthecastlesrhyl.co.uk, 1 +kingpie.co.za, 1 kingpin.pro, 1 kingpincages.com, 1 kings-potong.com, 1 @@ -82018,7 +82223,6 @@ kingseletronicos.com.br, 1 kingsfoot.com, 1 kingsfordmi.gov, 1 kingshome.gr, 1 -kingshousesportsground.co.uk, 1 kingsicecream.com, 1 kingsley.cc, 1 kingsolomoncages.com, 1 @@ -82034,6 +82238,7 @@ kingstream.uk, 1 kingsurfa.com, 0 kingsvetcentre.com, 1 kingsvilletexas.com, 1 +kingswinehaus.com, 1 kingtech8.tk, 1 kingtreasure.com, 1 kingtreasures.com, 1 @@ -82045,19 +82250,14 @@ kini24.ru, 1 kinichi.com, 1 kinison.com, 1 kinjerboerebroelof.tk, 1 -kink.bio, 1 -kinkcheck.top, 1 kinkenonline.com, 1 kinklist.me, 0 -kinkorainvestments.com, 1 -kinkorainvestments.com.au, 1 kinksecrets.ga, 1 kinky-books.com, 1 kinkyinlaws.com, 1 kinkyspa.com, 1 kinkywood.com, 1 kinlakestars.com, 1 -kinnect.media, 1 kinnerfisch.cn, 1 kinnettmemorial.org, 1 kinneymn.gov, 1 @@ -82102,16 +82302,17 @@ kinowork.tk, 1 kinozone.tk, 1 kinschots.eu, 1 kinsei.jp, 1 -kinshipcareers.com, 1 +kinsellamedia.com, 1 kintanalodge.fr, 1 kintawifi.com, 1 -kintell.com, 0 +kintell.com, 1 kinter.media, 1 kinto.pro, 1 kintone.com, 1 kintore.tv, 1 -kintsugispace.com, 0 +kintsugispace.com, 1 kintyre.net, 1 +kinualive.com, 1 kinugasa.or.jp, 1 kinvault.com, 1 kinyued.store, 1 @@ -82149,7 +82350,6 @@ kiratime.hu, 1 kirbear.com, 1 kirbyvt.gov, 1 kirche-bamberg.de, 1 -kirche-iserlohn.de, 1 kirchen-im-web.de, 0 kirchenchor-oedsbach.de, 1 kirchenchor-olzheim.de, 1 @@ -82174,7 +82374,6 @@ kirkintillochbc.co.uk, 1 kirkkonummenavhkerho.net, 1 kirksville.gov, 1 kirkwood-smith.com, 1 -kirkwood.biz, 1 kirkwoodfencing.com, 1 kirkwoodoutdoors.com, 1 kirmizipill.com, 1 @@ -82207,7 +82406,7 @@ kiseimarriage.com, 1 kisel.org, 1 kish-takhfif.com, 1 kishcar.co, 1 -kishonti.net, 0 +kishonti.net, 1 kisiselveri.com, 1 kiskeedeesailing.com, 0 kislepesek.net, 1 @@ -82216,13 +82415,11 @@ kisma.de, 1 kismy.ga, 1 kismy.tk, 1 kismyder.tk, 1 -kisomacosmetics.de, 1 kissanime.moe, 1 kissedbyabee.com, 1 kisser.name, 1 kissesb.net, 1 kissgyms.com, 1 -kissgyongyi.hu, 1 kissielts.com, 1 kissima-gakou.ml, 1 kissimmee.gov, 1 @@ -82239,12 +82436,11 @@ kita-freie-schule.de, 1 kita-mfg.com, 1 kita-nimmersatt-bundorf.de, 1 kita-sun.com, 1 -kita.mx, 1 kitabgaul.com, 0 kitacoffee.com, 1 kitaharima-ikiiki.com, 1 -kitale.de, 1 kitarino.net, 1 +kitas-in-flensburg.de, 1 kitchen-design.cf, 1 kitchen-design.tk, 1 kitchenconverse.com, 1 @@ -82281,7 +82477,6 @@ kitkit.tk, 1 kitpara.shop, 1 kits-graphiques-shop.tk, 1 kits-graphiques.tk, 1 -kits.cx, 1 kitsap.gov, 1 kitscan.co.uk, 1 kitscan.com, 1 @@ -82326,6 +82521,7 @@ kiwanisyp.org, 1 kiwanoprint.com, 1 kiwee.eu, 1 kiweeagentur.de, 1 +kiwi.com, 1 kiwi.ki, 1 kiwibird.tokyo, 1 kiwideo.ro, 1 @@ -82336,13 +82532,11 @@ kiwing.ddns.net, 1 kiwipedia.sk, 1 kiwiplace.com, 0 kiwitastic.com, 1 -kiwox.cl, 1 kixby.com, 1 kizetroniko.tk, 1 kizkulesi.tk, 1 kizomba.info, 1 kiztarafi.net, 1 -kizuna.com.py, 1 kizunaai.eu.org, 1 kizzycode.de, 1 kj-cleaning.co.uk, 1 @@ -82379,6 +82573,7 @@ kk9728.co, 1 kka.vc, 1 kkangeli.tk, 1 kkaramela.eu, 1 +kkarlsen.art, 0 kkc.com, 1 kkcomcon.com, 1 kkforwarding.com, 1 @@ -82402,6 +82597,7 @@ kkn.moe, 1 kknapredak-rubin.tk, 1 kkpig.cn, 1 kkpp.ga, 1 +kkr-bridal.net, 1 kkren.me, 0 kks.ch, 1 kksg-sulzbach.de, 1 @@ -82463,6 +82659,7 @@ klaverjassen.tk, 1 klavierhaus-klavins.de, 1 klavierwunsch.de, 1 klaxon.ml, 1 +klaymemez.com, 1 kle.cz, 1 klea.tk, 1 kleaning.by, 1 @@ -82477,7 +82674,6 @@ klein.paris, 1 klein.yt, 1 kleine-dingen.nl, 1 kleine-strandburg-heringsdorf.de, 0 -kleine-strandburg-zinnowitz.de, 1 kleine-strolche-lich.de, 1 kleine-viecherei.de, 1 kleineanfragen.de, 1 @@ -82486,7 +82682,7 @@ kleinestrandburg-heringsdorf.de, 0 kleinestrandburg-usedom.de, 0 kleinfein.co, 1 kleinhaneveld.tk, 1 -kleinhapl.com, 0 +kleinhapl.com, 1 kleinhelena.dynv6.net, 1 kleinlich.com, 1 kleinmechaniek.nl, 1 @@ -82507,6 +82703,7 @@ klempin.net, 1 klempin.org, 1 klempin.se, 1 klempin.uk, 1 +klen.ua, 1 klenc.eu, 1 klenty.com, 1 kleor.com, 1 @@ -82517,6 +82714,7 @@ kleuro.nl, 1 klev.tk, 1 klever.com.mk, 0 kleverltd.ru, 1 +klgpecas.com.br, 1 kli.is, 1 klickinvite.com, 1 klickstdu.com, 1 @@ -82533,7 +82731,6 @@ klima.com, 1 klimaanlage-fehler.net, 1 klimaatadaptatienederland.nl, 1 klimaatkids.be, 1 -klimaatklaar.nl, 1 klimacamp-sterkraderwald.de, 1 klimafakten.de, 1 klimakomplekt.com, 1 @@ -82549,7 +82746,6 @@ klimeck.com, 1 klinedinstlaw.com, 1 klinesignals.com, 1 klingeletest.de, 1 -klingenberg-instruments.de, 1 klingenberg.works, 1 klingenundmesser.com, 1 klingit.com, 1 @@ -82566,6 +82762,7 @@ klinkens.de, 1 klinkersnab.ru, 1 klinknetz.de, 1 klinkov.tk, 1 +klinlab.cz, 1 klipa.tk, 1 klischee-frei.de, 1 klishyn.com, 1 @@ -82580,6 +82777,7 @@ kll.li, 1 klm-huisjes.nl, 1 klmgewinnspiel.de, 1 klmhouses.com, 1 +klocast.com, 1 klocksnack.se, 0 kloclabs.com, 1 klogeschichten.net, 1 @@ -82587,14 +82785,16 @@ klokkenluidersvg.nl, 1 kloop.kg, 1 klop.info, 1 klos-kremperler.at, 1 +klose-besser.com, 1 klose.family, 1 klosetestumgebungnextcloud.de, 1 klosko.net, 1 kloster-michaelstein.de, 1 -kloudstack.me, 1 +kloudstack.me, 0 klover-avantages.fr, 1 klover-cse.fr, 1 kloza.tk, 1 +klpl.com.sg, 1 kls-desk.com, 1 kls-platform.com, 1 kls.rs, 1 @@ -82607,7 +82807,6 @@ kluberphoto.hu, 1 klubfitness.pl, 1 klubgerlach.sk, 1 klubwsl.tk, 1 -kluchkin-ai.com, 1 kluck.me, 1 kludge.eu, 1 klugemedia.de, 1 @@ -82619,6 +82818,7 @@ klustermedia.com, 1 klutchcard.com, 1 klute.spdns.de, 1 kluzza.nl, 1 +klva.cz, 1 km8.co, 1 kma.ua, 1 kmap-state-ks.us, 1 @@ -82640,6 +82840,7 @@ kmpropertyfunds.com.au, 1 kmrgroup.com, 1 kmshuma.com, 1 kmsk.tk, 1 +kmslh.com, 1 kmsm.com.au, 1 kmtf.kz, 1 kmw.ch, 1 @@ -82657,6 +82858,7 @@ knabden.co.za, 1 knabstrup-autoophug.dk, 1 knallfrosch.ddnss.de, 1 knapenzutendaal.tk, 1 +knapp.com, 1 knapp.noip.me, 1 knapp.pro, 1 knapp.servehttp.com, 1 @@ -82666,13 +82868,12 @@ knarred.co.uk, 1 knarred.site, 1 knashaug.com, 1 knauf.com, 1 -knauss-family.com, 1 knautiluz.net, 0 -knb.nl, 1 knbbw-frnab.tk, 1 knbkress.com, 1 knblog.jp, 1 kncg.pw, 1 +kneblesauto.com, 1 knecht.ca, 1 knechtology.com, 1 kneepainclinic.sg, 1 @@ -82761,8 +82962,8 @@ knowthebus.ga, 1 knowthebus.gq, 1 knowunity.com, 1 knowunity.de, 1 +knowuproxy.com, 1 knowyourday.ai, 1 -knowyourrunway.com, 1 knowyourteam.com, 1 knoxcountyil.gov, 1 knoxcountyne.gov, 1 @@ -82783,7 +82984,7 @@ knugen.nu, 1 knulla.me, 1 knulle.me, 1 knurps.de, 1 -knutas.de, 1 +knurses.com, 1 knuterikskare.no, 1 knuthildebrandt.de, 0 knutton.org, 1 @@ -82810,8 +83011,7 @@ kobapaycash.com, 1 kobayashi-zeimukaikei.jp, 1 kobb.tk, 1 kobe-shimasui.jp, 1 -kobejet.com, 1 -kobelco.com.ph, 0 +kobelco.com.ph, 1 koberl.com, 1 kobes.ca, 1 kobet.tk, 1 @@ -82839,9 +83039,12 @@ kocaeliyiseyret.com, 1 kocca.kr, 1 koccoo.ga, 1 koch-wro.pl, 1 +koch.com.au, 1 kochadaiyaan.tk, 1 kochamkoszalin.pl, 1 +kochbar.de, 1 kochcommunity.com, 1 +kochdigital.dk, 1 kochen-und-design.de, 1 kochereva.com, 1 kocheshkov.cf, 1 @@ -82852,6 +83055,7 @@ kochinke.us, 1 kochrezepte.tk, 1 kochura.tk, 1 kochvision.com, 1 +kocieniewska.pl, 1 kocka.cf, 1 kockanakocko.si, 1 kocowork.com, 1 @@ -82863,17 +83067,17 @@ kodar.tk, 1 kodden.com.br, 1 kode-it.de, 1 kode.ch, 0 +kodeholic.me, 1 kodelabs.com, 1 -koderclub.com, 1 kodes.com.tr, 1 kodexplorer.ml, 1 kodi-tutorials.com, 1 +kodifirestick.info, 1 kodify.net, 1 kodigo.me, 1 kodineuerleben.eu, 1 kodinkuvalehti.fi, 1 kodioso.com, 1 -kodiqa.com, 1 kodkollen.com, 1 kodkollen.se, 1 kodomocorona.com, 1 @@ -82936,8 +83140,10 @@ kojast.de, 0 koji-tsujitani.net, 1 kojiishikawa.com, 1 kojipkgs.fedoraproject.org, 1 +kokenmetesther.nl, 1 koketteriet.se, 0 kokk.loan, 1 +koko.news, 1 kokoiroworks.com, 1 kokomo.com.au, 1 kokomoislandfiji.com, 1 @@ -82948,11 +83154,11 @@ kokonetworks.com, 1 kokoroheart.cf, 1 kokoronomori.jp, 1 kokos.pl, 1 -koksijde.be, 1 kokteili.tk, 1 koktelparty.tk, 1 kokumoto.com, 1 kokuyo.co.th, 1 +kokuyocamlin.com, 1 kokwatersport.nl, 1 kol7asry.com, 1 kolabtree.com, 1 @@ -82979,6 +83185,7 @@ kollab.com, 1 kollab.com.ph, 1 kollandsrud.tk, 1 kollawat.me, 1 +kollega.it, 1 kollegamenti.it, 1 kollegie.com, 1 kollegier.com, 1 @@ -82987,6 +83194,7 @@ kollner.com, 1 kolmann.at, 1 kolmann.eu, 1 kolmeti.ee, 1 +kolmeya.com.br, 1 kolonial.no, 1 koloquadialogues.com, 1 kolorado.tk, 1 @@ -83012,12 +83220,12 @@ komatsu-dental.jp, 1 komatsuforklift.com, 1 kombikredit.de, 1 kombiprevoz.net, 1 -kombiservisii.com, 1 kombo.lt, 1 komehyo.co.jp, 1 komelin.com, 0 komfort.kh.ua, 1 komi-news.net, 1 +komi.la, 1 komichcapital.com, 1 komicloud.com, 1 komidoc.com, 1 @@ -83043,12 +83251,14 @@ kommx.de, 0 komnakhon.com, 1 komo.am, 1 komodolabs.com, 1 +komoju.com, 1 +komoju.jp, 1 komoraoze.cz, 1 -komornicy.torun.pl, 1 komornikmroczek.pl, 1 komp-plus.tk, 1 komp247.pl, 1 kompaniya-vasya.tk, 1 +kompiwin.com, 1 komplekt.gq, 1 komplet.sk, 1 komplexlysimple.com, 0 @@ -83106,7 +83316,6 @@ kondisave.org, 1 kondo-kougei.co.jp, 1 konectbus.co.uk, 1 konectus.io, 1 -koneti.fr, 1 konetsu.tk, 1 konf.ga, 1 konfekcjonowanie.com, 1 @@ -83117,14 +83326,15 @@ konfrontation.tk, 1 konfuzius-institut-ruhr.de, 1 kong.ink, 1 kongar.org, 1 -kongedugnad.no, 1 kongjie.cf, 1 kongjie.ml, 1 +kongkritpost.com, 1 kongress-hostessen.de, 1 kongressband.de, 1 koniag-gs.com, 1 konijnen-knaagdieren.tk, 1 konila.com, 1 +koningdrank.com, 1 koningerik.nl, 1 konings.it, 1 koningslust.tk, 1 @@ -83139,10 +83349,11 @@ konnektiv.de, 1 konnektvpn.com, 1 konnex-it.de, 1 konnitanaka.com, 1 +konoka.top, 1 kononenko.ml, 1 konopizza.at, 1 konpyuta.nl, 1 -konser.co.uk, 0 +konser.co.uk, 1 konsertoversikt.no, 1 konservy.tk, 1 konsol.pro, 1 @@ -83167,6 +83378,7 @@ kontabilitet.tk, 1 kontabydigital.com, 1 kontaxis.org, 1 kontent.ai, 1 +kontikifinance.com, 0 kontikiindustries.tk, 1 kontikimedia.com, 1 kontist.com, 1 @@ -83178,11 +83390,9 @@ kontrapolis.info, 1 kontrastonline.tk, 1 kontrol40.com, 1 kontrolapovinnosti.cz, 1 -kontrolewewspolnotach.pl, 1 kontur.tk, 1 konturalco.ru, 1 konus.tk, 1 -konveniat.lu, 1 konventa.net, 1 konwerter-online.pl, 1 konyadireksiyonservisi.com, 1 @@ -83191,7 +83401,7 @@ konyahaber.tk, 1 konyalian.com, 1 konyhaelektronika.hu, 1 konzaross.tk, 1 -konzepttreu.de, 0 +konzepttreu.de, 1 konzertheld.de, 1 koobin.cat, 1 koobin.com, 1 @@ -83202,7 +83412,10 @@ koodaklife.com, 1 koodimasin.ee, 1 koodimasin.eu, 1 kooer.org, 1 +koof.win, 1 +kooibeds.com, 0 kooky.org, 1 +koolbadges.co.uk, 1 kooli.ee, 1 koolisw.tk, 1 koolitee.ee, 1 @@ -83242,6 +83455,7 @@ kopjethee.nl, 0 koplancpa.com, 1 koplax-online.com, 1 koppbilling.com, 1 +koppelvlak.net, 1 koppenexecutive.com, 1 koppenhouse.com, 1 koppop.nl, 1 @@ -83266,12 +83480,12 @@ koraykir.com, 1 korb.de, 1 korbel-loziska.cz, 1 korben.info, 1 -korcula-larus.com, 1 kordamed.ee, 1 kordamentha.com, 1 kordamentha.com.au, 1 kordut.tk, 1 korea-1xbet.com, 1 +korea-dpr.org, 1 korea1x-bet.com, 1 koreabestood.ga, 1 koreanfashion.tk, 1 @@ -83286,14 +83500,15 @@ koreapro.org, 1 koreascience.kr, 1 koreashop24.com, 1 koredia.com, 1 -koreimob.com.br, 1 korelogic.com, 1 koresageart.com, 1 korespondent.tk, 1 korfbal.nl, 1 korfballeague.nl, 1 korhonen.cc, 1 +korikart.com, 1 korikart.net, 1 +korjoin.com, 1 korkortet.tk, 1 korkortonline.se, 1 korlatlanmobilinternet.hu, 1 @@ -83302,6 +83517,7 @@ korofilms.com, 1 koroleva.ml, 1 korolevstvo-movie.ml, 1 koroli.tk, 1 +korona-m.eu, 1 korona-serial.net, 1 koroshkabir.tk, 1 korotonomedya.net, 1 @@ -83319,6 +83535,7 @@ korund.tk, 1 kos4all.com, 1 kos9078.com, 1 kosaki.moe, 1 +koscielniak-nieruchomosci.pl, 1 kose.edu.ee, 1 koshakovo.ga, 1 koshechka.tk, 1 @@ -83357,6 +83574,7 @@ kostecki.com, 1 kostecki.org, 1 kostecki.tel, 1 kostenloses-forum.tk, 1 +kosterenpartners.com, 1 kostlyn.com, 1 kostroma-city.tk, 1 kostroma-news.net, 1 @@ -83379,18 +83597,18 @@ kotakoo.id, 1 kotaku.com, 1 kotapay.com, 1 kotaraanglican.org.au, 1 +kotelsales.ru, 0 kother.org, 1 kotilinkki.fi, 1 kotisivukone.fi, 0 -kotitehdas.fi, 1 kotka.ml, 1 +kotlinfactory.io, 1 kotly-marten.com.ua, 1 kotmale.com, 1 kotobox.net, 1 kotobuki-healing.com, 1 kotoishihear.tk, 1 kotok.tk, 1 -kotonekonokai.com, 1 kotonoha.cafe, 1 kotonozaka.xyz, 1 kotoopros.tk, 1 @@ -83404,7 +83622,6 @@ kottbulle.net, 1 kotthaus-bs.de, 1 kottur.is, 1 kotuiako.school.nz, 1 -kotuwa.com.au, 1 kotuwa.tk, 1 kotydomowe.com, 1 kouberacing.com.br, 1 @@ -83431,8 +83648,9 @@ kovroedov.ru, 1 kovu.dog, 1 kowalmik.tk, 1 kowalski7.cc, 1 -kowalski7cc.xyz, 1 +kowalski7cc.xyz, 0 kowarschick.de, 1 +kowu.ru, 1 koyaanisqatsi.tk, 1 koyarecipes.com, 1 koyariz.com.tr, 1 @@ -83451,7 +83669,9 @@ kozbox.com, 1 kozentic.com, 1 kozgi.com, 1 kozhzamenitely.tk, 1 +koziagora.com, 1 koziknet.com, 1 +kozinetspurewal.com, 1 kozitsyn.name, 1 kozlov.cf, 1 kozmetikatrend.hu, 1 @@ -83462,19 +83682,11 @@ kozune.com, 1 kp-opt.ru, 1 kp0808.cc, 1 kp0809.com, 1 -kp1111.cc, 1 -kp2222.cc, 1 -kp3333.cc, 1 -kp4444.cc, 1 kp45.ru, 1 -kp6666.cc, 1 -kp7777.cc, 1 -kp9999.cc, 1 kpfanworld.com, 1 +kpinterface.com, 1 kpinvest.eu, 1 -kpirx.com, 1 kpit.com, 1 -kpk.io, 1 kpkhub.com, 1 kplante.com, 1 kplastics.in, 1 @@ -83502,8 +83714,9 @@ kr-labs.com.ua, 1 kr.cm, 1 kr.search.yahoo.com, 0 kr0n.dk, 1 -kr1shna4garwal.com, 0 +kr1shna4garwal.com, 1 kra.ee, 0 +kra2laiz.eu, 1 kraakgeluiden.tk, 1 kraakman.com, 1 kraavi.com, 1 @@ -83528,16 +83741,12 @@ kraftzeiten.de, 1 krag.be, 1 kraiburg-belmondo.de, 1 kraiburg-elastik.de, 1 -kraig.social, 1 krakato.tk, 1 -krakautipps.de, 1 -krakautips.nl, 1 kraken-ttt.com, 1 kraken.com, 1 kraken.io, 0 krakenfutures.com, 1 krakenventures.com, 1 -krakowlover.com, 1 krakozyabra.ga, 1 krakozyabra.gq, 1 krakozyabra.tk, 1 @@ -83553,14 +83762,13 @@ kramer-edelstahl.de, 1 kramersworld.tk, 1 kramesondemand.com, 1 kramm.com, 1 -kramse.org, 1 kramsj.uk, 1 kran.ga, 1 krang.org.uk, 1 kranjnakolo.ml, 1 krankenkasse-schweiz-liste.ch, 1 krankenkasse-schweiz-vergleich.ch, 1 -krankenkasse-schweiz-wechseln.ch, 0 +krankenkasse-schweiz-wechseln.ch, 1 krankenpflege-haushaltshilfe.de, 1 krankenpflege-journal.com, 1 krankenpflege.ch, 1 @@ -83585,6 +83793,7 @@ krasnoyarsk24.tk, 1 krasotaiskusstva.com, 1 krasotkafirm.tk, 1 krasotki.ml, 1 +krastown.com, 0 krastyamoucha.cz, 1 kratochvilovi.net, 1 krause-outlet.de, 1 @@ -83615,44 +83824,50 @@ kreativoweb.tk, 1 kreativstrecke.de, 1 kreatura.tk, 1 kreatywni.co, 1 -kreazdesserts.com, 1 kredi-hesaplama.com, 1 kredibanka.net, 1 kredigram.com, 1 +kredit-galerie.de, 1 kredit-mit-negativer-schufa.com, 1 kredit-ohne-schufa.de, 1 +kredit-schule.de, 1 kredit24.de, 0 kredita.dk, 1 kreditkarta.ml, 1 kreditkarten123.de, 1 kreditkoll.nu, 1 +kredito.pt, 1 kreditonline.ml, 1 kreditor.gq, 1 kreditovnet.tk, 1 +kreditsystem.net, 1 kreditzirkus.de, 1 krednal.ru, 1 kredytybezprowizji24.pl, 1 kredytzen.pl, 0 -kredz.com.br, 1 krefindo.de, 1 kreft.tk, 1 kreftprzewieda.pl, 1 kreideseetaucher.de, 1 kreidlernet.tk, 1 kreiglaw.com, 1 +krelln.net, 1 kremalicious.com, 1 kremenchug-news.ru, 1 kremenchugnews.ru, 1 kremer-sonnenschutzsysteme.de, 1 +kremer.shop, 1 kreno.tech, 1 krenstetter.at, 1 +kreolis.net, 1 kresimir-blazevic.tk, 1 -krestanskydarek.cz, 0 +krestanskydarek.cz, 1 kretaforum.dk, 1 kretschmann.consulting, 1 kretschmann.it, 1 kreuzau.de, 1 kreuzbergflieger.de, 1 +kreuzpfadfinder.de, 1 kreuzwortraetsellosungen.com, 1 kreweofneptune.org, 1 krey.is, 1 @@ -83667,7 +83882,6 @@ kriipsujuku.ee, 1 kriis.ee, 0 krik.rs, 1 kriko.io, 1 -krill-ai.com, 1 krillz.se, 1 krilotek.com, 1 krilov.tk, 1 @@ -83682,6 +83896,7 @@ kringla.xyz, 1 kringloopwinkels.tk, 1 kripa.tk, 1 kriptodede.com, 1 +kriptokoin.com, 1 kriptopod.com, 1 kriptopodgon.tk, 1 krisboeckmans.tk, 1 @@ -83689,7 +83904,6 @@ krise-chance.ch, 1 krisenintervention-deutschland.de, 1 kriseninterventiondeutschland.de, 1 krisftp.fr, 1 -krishhomesserviceapartments.com, 1 krishin.tk, 1 krishna.fi, 1 krishnakalisaha.com, 1 @@ -83699,7 +83913,6 @@ kriskonaturopathic.com, 1 kriskras99.nl, 1 krismurray.co.uk, 1 krisp.ai, 1 -krisp.kz, 1 krispeinture.be, 1 krispykremesa.com, 1 krispymods.com, 1 @@ -83707,9 +83920,8 @@ krisstarkey.co.uk, 1 krist.club, 1 kristall-energie.at, 0 kristall.tk, 1 -kristen-cooper.com, 1 +kristekno.com, 1 kristenpaigejohnson.com, 1 -kristianperak.com, 1 kristiescholten.com, 1 kristina-lari.ru, 1 kristinaolsen.net, 1 @@ -83730,6 +83942,7 @@ krivoyrognews.ru, 1 kriya.org, 1 kriyayoga.fr, 1 kriyayoga.mx, 1 +krizek.wien, 1 krizevci.info, 1 krizialim.tk, 1 krk-gaming.de, 1 @@ -83750,13 +83963,13 @@ kroliczki.tk, 1 kroll.tk, 1 krolowarodzin.pl, 1 kromamoveis.com.br, 1 -kromati.co, 1 kromberg.tk, 1 kromciri.gq, 1 krome.sg, 1 krometis.com, 1 kromozottrud.hu, 1 krona.ddns.net, 1 +kronanshopping.se, 1 kronofogden.se, 1 kronosproject.tk, 1 kronospsi.es, 1 @@ -83764,9 +83977,7 @@ krony.de, 1 kronych.cz, 1 kroo.com, 1 kroon.email, 1 -kroonlocks.com, 1 kropkait.pl, 1 -kroschke.de, 1 krosno24.com, 1 krosovki-nike.tk, 1 kross1308.de, 1 @@ -83775,7 +83986,6 @@ krossvordy.com, 1 krouzkyliduska.cz, 0 krovatka.tk, 1 krovlya911.ru, 1 -krowdev.com, 1 krozilla.tk, 1 krrt.io, 1 krs.cloud, 1 @@ -83785,7 +83995,6 @@ krstarica.com, 1 krsvrs.nl, 1 krti.com.ua, 1 krtl.eu.org, 1 -krtl.net, 1 krtl.top, 1 krubik.tk, 1 kruchefssensors.azurewebsites.net, 0 @@ -83831,7 +84040,6 @@ kryolansaudi.com, 1 krypmonet.com, 1 krypsys.com, 1 krypt.com, 1 -krypta.me, 1 kryptera.se, 1 kryptix.eu, 1 kryptix.net, 1 @@ -83843,8 +84051,6 @@ kryptomodkingz.com, 1 kryptorebels.com, 1 kryptosekken.no, 1 kryptoslogic.com, 1 -kryptostern.de, 1 -kryptoveritas.com, 1 kryptux.xyz, 1 krysecu.com, 1 kryshodel.ml, 1 @@ -83854,17 +84060,23 @@ krytykawszystkiego.pl, 1 kryx.de, 1 krzysiamrozinska.pl, 1 krzysztofzaleski.com, 1 -krzyzu.ovh, 1 ks-19.com, 1 +ks-39.com, 1 ks-59.com, 1 ks-79.com, 1 ks-89.com, 1 +ks-homeanthill.eu, 1 ks-niceman.tk, 1 +ks-watch.de, 1 ks.kr.ua, 1 ks.pl, 1 +ks0098.com, 0 ks015.com, 0 ks017.com, 1 ks058.com, 1 +ks0618.com, 1 +ks0660.com, 1 +ks068.com, 0 ks0886.com, 1 ks16.net, 1 ks17.net, 1 @@ -83873,9 +84085,14 @@ ks1athome.co.uk, 1 ks2020.vip, 1 ks330.com, 1 ks335.com, 1 +ks337.com, 1 +ks337.net, 1 +ks339.com, 1 ks3636.com, 1 ks380.com, 0 +ks386.com, 1 ks5000.com, 0 +ks516.com, 1 ks5531.com, 0 ks5532.com, 1 ks5822.com, 0 @@ -83902,6 +84119,7 @@ ks8225.com, 1 ks8265.com, 1 ks8266.com, 1 ks8278.com, 1 +ks8831.com, 0 ks8915.com, 1 ks9122.com, 1 ks920.com, 0 @@ -83930,6 +84148,7 @@ kseniya.tk, 1 kseniyakoroleva.tk, 1 ksenomorf.tk, 1 ksenoris.by, 1 +ksero.com.pl, 1 ksero.info, 1 ksero.wroclaw.pl, 0 kserownia.eu, 1 @@ -83939,8 +84158,10 @@ ksgamerz.ga, 1 kshb.com, 1 kshlm.in, 1 kshop.gr, 1 +kshpage.in, 1 kshub.gov, 1 ksiegarniabk.pl, 1 +ksiegowosc.pro, 1 ksiga.org, 1 ksk-raduga.tk, 1 ksleg.gov, 1 @@ -83987,11 +84208,11 @@ kt.pl, 1 kt3i.com, 1 ktbuniversity.com, 1 kteatras.tk, 1 +ktgy.com, 0 kthnxbai.xyz, 1 ktk-pc.de, 1 ktkprom.com, 1 ktlikescoffee.com, 1 -ktlspedition.de, 1 ktm-troxler.de, 1 ktnv.com, 1 ktphapn.org, 1 @@ -84007,6 +84228,7 @@ kua.com, 1 kuai-ssl.com, 1 kuaishou.cf, 1 kuaitiyu.org, 1 +kuaiyaojing.com, 1 kualitatem.com, 1 kualo.co.uk, 1 kualo.com, 1 @@ -84016,11 +84238,10 @@ kuartelgeneral.com, 1 kuba-erlebnisreisen.de, 1 kuba-orlik.name, 1 kubabrussel.be, 1 -kubacabra.cz, 0 +kubacabra.cz, 1 kubalok.de, 1 kubanitoscali.com, 1 kubeofficebooth.com, 1 -kubequest.online, 1 kuberkaitseliit.ee, 1 kuberm.com, 1 kubern.at, 1 @@ -84035,6 +84256,7 @@ kubit.us, 1 kubmeta.com, 1 kubopro.com, 1 kubopro.cyou, 1 +kubota.ca, 1 kubota.co.nz, 1 kubotapower.com.au, 1 kubrakov.ml, 1 @@ -84051,14 +84273,12 @@ kucnibudzet.com, 1 kucukcekmececilingir.gen.tr, 1 kucukdunya.com, 1 kucukkaymakli.tk, 1 -kuda.ru, 1 kudelskisecurity.com, 1 kudinilam.tk, 1 kuditel.net, 1 kudofoto.com, 1 kudoran.tk, 1 kuechler.info, 1 -kuehn.onl, 1 kuehndel.org, 1 kuehnel-online.eu, 1 kuemmling.eu, 1 @@ -84083,6 +84303,7 @@ kukeri-karlovo.tk, 1 kuketz-blog.de, 1 kuketz-security.de, 1 kukiulpindo.com, 1 +kukla.club, 1 kukla.io, 1 kukuklok.com, 1 kukuma.tk, 1 @@ -84100,6 +84321,7 @@ kulinarika.net, 1 kulinaristi.fi, 1 kulinariya.tk, 1 kulinarnykoneser.pl, 1 +kulshe.com, 1 kultham.ml, 1 kulthist.tk, 1 kultmobil.se, 1 @@ -84110,7 +84332,6 @@ kulturasjecanja.org, 1 kulturbanause.de, 1 kulturbiljetter.se, 1 kulturistika.tk, 1 -kulturlade.ch, 1 kulturmel.ch, 1 kulturstiftung-st.de, 1 kultus-mv.de, 1 @@ -84123,9 +84344,9 @@ kumataro.com, 1 kumatora-farm.com, 1 kumbaradergisi.com, 1 kumbi.ke, 0 -kumbify.com, 1 kumidia.jp, 1 kumina.nl, 1 +kumiskiri.com, 1 kumo.tk, 1 kumoricon.org, 1 kumpe.de, 1 @@ -84137,7 +84358,6 @@ kunaki.com, 1 kunalchakate.tk, 1 kunanji.com, 0 kunashir.tk, 1 -kunawdachu.pl, 1 kundenerreichen.com, 1 kundenerreichen.de, 1 kundenvertrag.de, 1 @@ -84145,10 +84365,12 @@ kundesjekk.no, 0 kundo.pl, 1 kundo.se, 1 kunfu.pl, 1 +kungfudirect.com, 1 kungsangen.com, 0 kungsangsgymnasiet.se, 1 kunitomo.jp, 1 kunnen.tech, 1 +kuno-sperrdienst.de, 1 kunri.tk, 1 kunst-im-kokon.de, 1 kunst-na-arbeid.tk, 1 @@ -84165,7 +84387,6 @@ kunstundphysik.de, 1 kunstundunrat.de, 0 kunugi-inc.com, 1 kunyit.com, 1 -kunynapoddaszu.pl, 1 kunystop.pl, 1 kunze-medien.de, 0 kuoruan.com, 1 @@ -84178,6 +84399,7 @@ kupi-ceresit.ru, 1 kupid.com, 1 kupinska.pl, 1 kupipled.cf, 1 +kupisafe.com, 1 kupislivki.tk, 1 kupitmtz.gq, 1 kupitraktor.gq, 1 @@ -84225,7 +84447,7 @@ kuritsa.tk, 1 kurmanchalbank.com, 1 kurnia.tk, 1 kuroedov.com, 1 -kuroha.co.uk, 0 +kuroha.co.uk, 1 kuroinu.jp, 1 kuroit.com, 0 kurona.ga, 1 @@ -84236,6 +84458,7 @@ kurosu.com.py, 1 kurrende.nrw, 0 kurs-dron.pl, 1 kurs-elektryka.pl, 1 +kurs-fotowoltaika.pl, 1 kurserne.dk, 1 kursk-news.net, 1 kursk-news.ru, 1 @@ -84251,13 +84474,15 @@ kurt-und-herma-roemer-stiftung.de, 1 kurtdeutscher.com, 1 kurtisfranklin.com, 1 kurtki-moda.tk, 1 +kurtkoyescort.net, 1 kurtlarvadisi-pusu-1.tk, 1 -kurtneuweiler.com, 1 kurtosys.com, 1 +kurtschlatzer.com, 1 kurtschleinbeck.com, 1 kurungkurawal.id, 1 kuruppa.xyz, 1 -kurvytt.com, 1 +kuruyo.com, 1 +kurvysf.com, 1 kurz.onl, 1 kurz.pw, 1 kurzly.de, 1 @@ -84280,6 +84505,7 @@ kustod.io, 1 kustomcorner.com.au, 1 kustomer.com, 1 kustosija.tk, 1 +kustus.com.br, 1 kustvissen.tk, 1 kusunokitomori.com, 1 kutahyaciniyapitasarim.com.tr, 1 @@ -84288,18 +84514,18 @@ kutalek.cz, 1 kutano.ca, 1 kutedaki.com, 1 kutekeiki.com, 1 +kuti.hu, 1 kutinsoft.com, 1 kutny.cz, 1 kutsankaplan.com, 1 -kutten.lu, 1 kuttler.eu, 1 kutvonen.net, 1 -kutyabarathelyek.hu, 1 kutyamacskashop.hu, 1 kutzer-consulting.de, 1 kuudere.moe, 1 kuukkanen.net, 1 kuunlamaailm.ee, 1 +kuvaj-peci.top, 1 kuwago.io, 1 kuwatsuru-dc.jp, 1 kuzbass-pwl.ru, 1 @@ -84316,7 +84542,6 @@ kv-genebos.tk, 1 kv188.ru, 1 kvadratnimeter.si, 1 kvadru.cz, 1 -kvalhe.im, 1 kvalita-1a.cz, 0 kvalitetsaktiepodden.se, 1 kvalitetskatalog.tk, 1 @@ -84329,7 +84554,6 @@ kvasnyprumysl.cz, 1 kvasta.se, 1 kvazer.com, 1 kvazimoda.pro, 1 -kvbplus.com, 1 kvdb.io, 1 kvdekolk.tk, 1 kvest-v-moskve.ga, 1 @@ -84353,6 +84577,7 @@ kvso.tk, 1 kvspannum.tk, 1 kvsplayer.com, 1 kvsrot.cz, 1 +kvxr.com, 1 kw.gt, 1 kwadraadtevredenheid.nl, 1 kwai.tv, 1 @@ -84368,7 +84593,6 @@ kwg06.com, 1 kwieben.com, 1 kwikmed.eu, 0 kwikmotion.com, 0 -kwin-city.com, 1 kwjx2.ga, 1 kwl.com.au, 1 kwm.group, 1 @@ -84385,8 +84609,7 @@ kxc.email, 1 kxc.inc, 1 kxc.sh, 1 kxc.tools, 1 -kxdhydroponic.com, 0 -kxii.se, 1 +kxdhydroponic.com, 1 kxnrl.com, 1 kxxv.com, 1 ky89.cc, 0 @@ -84401,12 +84624,8 @@ kybalion.info.pl, 1 kyber.club, 1 kyber.consulting, 1 kyber.network, 1 -kyberguard.de, 1 -kyberhub.com, 1 kyberna.xyz, 1 kybi.sk, 1 -kyblik.fun, 1 -kyc-systems.com, 1 kycisrael.com, 1 kydara.com, 0 kyivparts.com, 1 @@ -84463,7 +84682,7 @@ kynect.gov, 1 kyobostory-events.com, 1 kyobusiness.com, 1 kyog.you, 1 -kyoki-railway.co.jp, 0 +kyoki-railway.co.jp, 1 kyoox.ch, 1 kyoox.io, 1 kyorei.or.jp, 1 @@ -84477,6 +84696,7 @@ kyrabanx.org, 1 kyrainvestments.com, 1 kyranis.net, 1 kyrgizion.tk, 1 +kyriakidisship.gr, 1 kyrjy.com, 1 kyrknatet.se, 1 kyrtopoulos.com, 1 @@ -84486,7 +84706,6 @@ kytkintienautomaalaamo.fi, 1 kyujin-office.net, 1 kyushu-ds.com, 1 kyusyu.org, 1 -kyxtro.com, 1 kyzyl-senir.ml, 1 kz-dentalclinic.com, 1 kz.search.yahoo.com, 0 @@ -84497,14 +84716,12 @@ kztv10.com, 1 kzwr.com, 1 l-3com.com, 1 l-a-b-a.com, 1 -l-a-b-a.pl, 1 l-a-b-a.ru, 1 l-atelier-c.com, 1 l-i-r.tk, 1 l-ink.eu.org, 1 l-lab.org, 1 l-os.com, 1 -l-plate.ie, 1 l-u-c-a.de, 1 l.nf, 1 l.td, 1 @@ -84516,18 +84733,15 @@ l17r.eu, 1 l1qu1d.net, 1 l214.com, 1 l2dragonland.tk, 1 -l2family.net, 1 l2kl.com, 1 l2news.ga, 1 l2relax.ml, 1 l2support.tk, 1 -l33roy.com, 1 l33te.net, 1 l36533.com, 1 l3limo.com, 1 l3t.com, 1 l4s.me, 1 -l50.top, 1 l51365.com, 0 l5197.co, 1 l6729.co, 1 @@ -84539,9 +84753,10 @@ l8conf.com, 1 l8x.tech, 1 l9297.co, 1 l9728.co, 1 -l9i.net, 1 la-baldosa.fr, 0 la-bonne-cuisine.fr, 1 +la-boutique-langlois.fr, 1 +la-boutique-web.com, 1 la-casa.tk, 1 la-dameblanche.fr, 1 la-grande-jaugue.fr, 1 @@ -84555,11 +84770,12 @@ la-sc.com, 1 la-tourmaline.ch, 1 la-verite.tk, 1 la-ville-aux-dames-auto-ecole.com, 1 -la.gy, 1 +la360.us, 1 laa.gov.ly, 1 laac.io, 1 laakevahinko.fi, 1 laanius.dk, 1 +laarroceriacolombiana.com, 1 laartesanapizzeria.com, 1 laassari.me, 0 laatikko.io, 1 @@ -84573,7 +84789,7 @@ labacanisima.tk, 1 labadusa.com, 1 labamassage.lt, 1 labambi.pl, 1 -labanca.com.uy, 1 +labandadeases.es, 1 labandadelamente.tk, 1 labandadelexpreso.tk, 1 labanochjonas.se, 1 @@ -84611,15 +84827,16 @@ lablue.ch, 1 lablue.de, 1 labmanager-lis.com, 1 labogue.info, 1 -laboheme.bg, 1 laboiteafred.fr, 1 laboiteanem.fr, 1 laboiteare.fr, 0 laboiteasous.com, 1 +laboma.cz, 1 laboni.design, 1 labonnetaille.com, 1 labor-augsburg-mvz.de, 1 laboratoirehubertcurien.fr, 1 +laboratoria.pro, 1 laboratoriodelmisterio.co.uk, 1 laboratoriodemarketingb3.com, 1 laboratoriomolina.tk, 1 @@ -84649,16 +84866,15 @@ laboutiquemarocaineduconvoyeur.ma, 1 labpartnering.org, 1 labradoodle.net, 1 labrat.mobi, 1 -labreadai.com, 1 labroma.tk, 1 labs-is.com, 1 labs.directory, 1 labs.ro, 1 labsbibliotecarios.es, 1 +labscon.io, 1 labsector.com, 1 labsitserviss.lv, 1 labtalleraudiovisual.tk, 1 -labuanbajohotel.com, 1 labwebplus.com, 1 labworking.lt, 1 labworks.org, 1 @@ -84671,10 +84887,10 @@ lacaey.se, 1 lacahsa.gov, 1 lacalderera.tk, 1 lacallas.tk, 1 -lacanastasevilla.es, 1 lacantinadoors.com, 1 lacantine.xyz, 1 lacapsule.org, 1 +lacargo.az, 1 lacarniceria.tk, 1 lacarreradelagua.es, 1 lacasadelmaniqui.net, 1 @@ -84683,6 +84899,7 @@ lacaserita.org, 1 lacasseroy.com, 1 lacavedesergio.fr, 1 lacaveducinquantenaire.com, 1 +lacaverna.net, 1 lacazadora.tk, 1 laceleste.it, 1 lacentral.com, 0 @@ -84697,12 +84914,14 @@ lachner.cloud, 1 lachowicz.link, 1 lachyoga-schwieberdingen.de, 1 laciana.tk, 1 +lacicloud.net, 1 lacienciadelpanico.tk, 1 lacity.gov, 1 lackan.tk, 1 lacker-baugutachten.de, 1 lackfer.tk, 1 lackinflaveis.com.br, 1 +lacledelareussite.com, 0 lacledeslan.com, 1 lacledeslan.org, 1 laclefdigitale.fr, 1 @@ -84710,6 +84929,7 @@ laclub.org, 1 lacnesidlo.sk, 1 lacoast.gov, 1 lacoccinelle.net, 1 +lacochinacounselor.com, 0 lacoe.edu, 1 laconcepcion.tk, 1 laconciergeriedusoleil.fr, 1 @@ -84730,6 +84950,8 @@ lacrossemortgageest.ga, 1 lacrossetribune.com, 1 lacrossewi.gov, 1 lacroy.com.br, 1 +lactatiekundigemanouk.nl, 1 +lactec.com.br, 1 lacuartaorden.tk, 1 lacuisine.tk, 1 lacyc3.eu, 1 @@ -84742,6 +84964,8 @@ ladadate.com, 1 ladakhtrip.tours, 1 ladanivabelgium.tk, 1 ladanmokhtari.tk, 1 +ladbroke.net, 1 +ladderartspace.com.au, 1 laddrs.uk, 1 ladedu.com, 1 ladelicateparenthese.com, 1 @@ -84761,16 +84985,17 @@ ladocs.tk, 1 ladocu.cf, 1 ladotech.cn, 1 ladotech.com, 1 -ladphotography.com, 1 ladraiglaan.com, 1 ladrones.tk, 1 laduephoto.com, 1 ladukephoto.com, 1 ladurbo.tk, 1 lady-blog.ga, 1 +lady-len.com, 1 lady-sadieann.co.uk, 1 lady-wishlist.my.id, 1 lady007.com.tw, 1 +ladyanja.org, 1 ladybanana.co.uk, 1 ladybird.tk, 1 ladybirdeducation.co.uk, 1 @@ -84778,9 +85003,10 @@ ladyblack.tk, 1 ladyblackdiamoond.com, 1 ladyboy.tv, 1 ladyboyfiles.com, 1 +ladyboyreports.com, 1 ladyboytube.tv, 1 ladybugjam.com, 1 -ladyescorts.com, 1 +ladychina.com, 1 ladyestelle.org, 1 ladyisabell666.com, 1 ladykarame.org, 1 @@ -84796,7 +85022,7 @@ ladyofsongstv.com, 1 ladyoxytocin.com, 1 ladysecrets.cf, 1 ladysecrets.ga, 1 -ladyshields.com, 1 +ladysovereign.com, 1 ladysybella.net, 1 ladytron.tk, 1 ladyvampira.com, 1 @@ -84855,9 +85081,9 @@ laforgia.xyz, 1 lafr4nc3.xyz, 1 lafraia.com, 1 lafraia.com.br, 1 -lafraise.pro, 1 +lafraise.pro, 0 lafrenchtech.com, 1 -lafsc.co.uk, 0 +lafsc.co.uk, 1 lafuriadelguardiancelta.tk, 1 lag-fan.tk, 1 lag-gbr.gq, 1 @@ -84872,6 +85098,7 @@ lagavach.com, 1 lagencerie.fr, 1 lagera-m-residence.com, 1 lagerauftrag.info, 0 +laget.com.ua, 1 laget.se, 1 laghiinitalia.com, 1 lagier.xyz, 1 @@ -84883,8 +85110,10 @@ lagless.gg, 1 lagloriadehuampani.com, 1 lagodny.eu, 1 lagom.org.pl, 1 +lagos-car-hire.com, 1 lagoscooperativecollege.com, 1 lagotto.tk, 1 +lagout.org, 1 lagovistatexas.gov, 1 lagrangeutilitiesky.gov, 1 lagrangiandesign.com, 1 @@ -84912,8 +85141,8 @@ lahoguera.tk, 1 lahoratunante.tk, 1 lahstalon.org, 1 lai.is, 1 -laidingyi.com, 1 lailabanx.org, 1 +lain.at, 1 lain.la, 1 lain.wiki, 1 laindonleisure.co.uk, 1 @@ -84935,19 +85164,19 @@ lajijonencadebarbera.com, 1 lajme-shqip.gq, 1 lajna-serial.cz, 1 lajnaserial.cz, 1 +lajornadafilipina.com, 1 lajusta.tk, 1 +lak.li, 1 lakabina.tk, 1 lakashirdetes.com, 1 lakashirdetesek.com, 1 lakatnik.org, 1 lakatos.tk, 1 -lakatosalex.hu, 1 lakatrop.com, 1 lake-baikal.ml, 1 lakeandriverrestoration.com, 1 lakearthurnm.gov, 1 lakecity-obgyn.com, 1 -lakecitybank.com, 1 lakecitydepositionreporter.com, 1 lakeclerkfl.gov, 1 lakecookexteriors.com, 1 @@ -84962,6 +85191,7 @@ lakegenevanews.net, 1 lakegenevapiercompany.com, 1 lakehavasuhouserentals.com, 1 lakeheadfreight.biz, 1 +lakeheadgeorgian.ca, 1 lakelafayettemo.gov, 1 lakemary-doctor.com, 1 lakemillsiowa.gov, 1 @@ -84979,9 +85209,9 @@ lakesideholidays.uk, 1 lakesideinternationalhotel.com, 1 lakesidelodges.uk, 1 lakesiderealty.info, 1 +lakesideweb.design, 1 lakesitetn.gov, 1 lakespropertymgt.com, 1 -lakesregionseptic.com, 1 lakestreetministorage.com, 1 lakesviewrobina.com.au, 1 laketanglewoodtx.gov, 1 @@ -85018,7 +85248,7 @@ lalaya.fr, 1 laled.ch, 0 laleggepertutti.it, 1 lalegria.tk, 1 -lalegroup.com.tr, 0 +lalegroup.com.tr, 1 lalelal.me, 1 lalenteja.net, 1 lalettrepatriote.com, 0 @@ -85028,10 +85258,9 @@ lalokura.tk, 1 lalouviere.fr, 1 lalucepulsata.it, 1 lalucha.tk, 1 -lalucioledigitale.com, 0 +lalucioledigitale.com, 1 lalumiere.org, 1 lalunedangkor.com, 0 -lama-corp.space, 1 lamac.ae, 1 lamafioso.com, 1 lamai-crochets.fr, 1 @@ -85090,25 +85319,33 @@ lammersmarketing.com, 1 lammertbies.com, 1 lammertbies.nl, 1 lamnea.se, 1 +lamocheattitude.fr, 1 lamonasafetynotice.co.uk, 1 lamontre.ru, 1 lamorera.tk, 1 lamorralla.tk, 1 lamp.re, 0 +lampandlight.eu, 1 lamparassevilla.com, 1 lampbooks.gq, 1 lampco.com, 1 +lampeetlumiere.fr, 1 +lampenlicht.be, 1 +lampenlicht.nl, 1 +lampenundleuchten.de, 1 +lamper-design.nl, 1 lampertheimer-zeitung.de, 1 lamplightvideo.com, 1 lampposthomeschool.com, 1 lamppostpublishing.com, 1 lampreylabs.com, 1 lampsh.ml, 1 +lampsi.ru, 1 +lampyiswiatlo.pl, 1 lamsa.com.mx, 1 lamsa.tk, 1 lamscommunity.org, 1 lamudi.ga, 1 -lamuebleriavirtual.co, 1 lamuixeranga.tk, 1 lamula.com, 1 lan-der.de, 1 @@ -85123,6 +85360,7 @@ lanagiselle.net, 1 lanahallen.com, 1 lanaikitchens.com, 1 lanailsupplies.com, 1 +lanaturacoffee.com, 1 lanaturedaure.com, 1 lanausea.tk, 1 lanbroa.eu, 1 @@ -85137,15 +85375,16 @@ lancastervillageny.gov, 1 lance.com.br, 1 lance.top, 1 lancea.pl, 1 -lancefourstar.com, 1 lancejames.com, 1 lancelafontaine.com, 1 +lancelhoff.com, 1 lancelucido.tk, 1 lancemanion.com, 1 lancerspiritonline.com, 1 lancertactical.eu, 1 lanceyip.com, 1 lanchong.tk, 1 +lancom.de, 1 lanconstruct.be, 1 lancyvbc.ch, 0 land.nrw, 0 @@ -85172,10 +85411,11 @@ landgoeddorrebeek.be, 1 landgorilla.com, 1 landica.net, 1 landinfo.no, 1 +landingi.com, 1 landingtransport.com, 1 landireporters.com, 1 landisit.com, 1 -landkind.com, 0 +landkind.com, 1 landkreis-augsburg.de, 1 landlimited.com, 1 landloperfm.tk, 1 @@ -85191,6 +85431,7 @@ landoverhillsmd.gov, 1 landpotential.org, 1 landroverclubbandung.id, 1 landroverexpo.com.au, 1 +landscape-photography.org, 1 landscapelightingmalibu.com, 1 landscapelightingpacificpalisades.com, 1 landscapeloaners.ga, 1 @@ -85200,7 +85441,6 @@ landscapesmore.com, 1 landscaping-montreal.com, 1 landscaping.ga, 1 landscaping.gq, 1 -landscapingdesignpro.com, 1 landscapingipswich.com, 1 landscapingrepairers.ga, 1 landsearch.com, 1 @@ -85220,9 +85460,11 @@ lanefinder.com, 1 lanehealth.com, 0 lanet.tv, 1 lanetix.com, 1 +lang-php.com, 1 langadeduero.tk, 1 langages-programmation.tk, 1 langapi.com, 1 +langatang.com, 1 langauto.hu, 1 langbein.org, 1 langemensen.be, 1 @@ -85231,6 +85473,7 @@ langemensendag.nl, 1 langenberg.tk, 1 langenburg.de, 1 langenu.tk, 1 +langenwolschendorf.de, 1 langerwehe.de, 1 langgasse-baar.ch, 1 langhun.me, 1 @@ -85239,6 +85482,7 @@ langleyok.gov, 1 langleyporter.com, 1 langleywa.gov, 1 langlois-chateau.fr, 1 +langly.fr, 1 langthaler.cc, 1 languageatplay.de, 1 languagecert.org, 1 @@ -85264,6 +85508,7 @@ lannamontessori.com, 1 lannatefl.com, 1 lannoy-delattre.net, 1 lanny.ga, 1 +lannywolfetrio.com, 1 lanodan.eu, 1 lanomina.net, 1 lanourotteguiry.fr, 1 @@ -85276,9 +85521,12 @@ lansilesia.tf, 1 lansingtwpmi.gov, 1 lansingvotes.gov, 1 lansociety.org, 1 +lansoft.site, 1 lansoftware.eu, 1 lansweeper.com, 1 +lantern.digital, 1 lanternalauth.com, 1 +lanterndigital.com.cn, 1 lanternhealth.org, 1 lanthorn.com, 1 lantian.pub, 1 @@ -85290,6 +85538,7 @@ lanyundev.com, 1 lanzalex.com, 1 lanzamientovirtual.es, 1 lanzarote.com, 1 +lanzastil.com, 1 lao.dog, 0 laobayy.com, 1 laoctavadireccion.tk, 1 @@ -85305,17 +85554,20 @@ laorg.studio, 1 laorquestadelamemoria.tk, 1 laostiaradio.tk, 1 laotravoz.tk, 1 +laowang.run, 1 laoxiwang.com, 1 laozhengxing.com, 0 laozhu.me, 1 lap3.nl, 1 lapageamelkor.org, 1 lapaginadejuanjo.tk, 1 +lapakmaboy.com, 1 lapaksulawesi.tk, 1 lapakus.com, 1 laparcela.tk, 1 laparoscopyhospital.com, 1 lapasticcerianaturale.store, 1 +lapayo.com, 1 lapcameradongnai.com, 1 lapcamerahochiminh.com, 1 lapcoversers.ga, 1 @@ -85324,10 +85576,12 @@ lapdance.tk, 1 lapecshizuoka.com, 1 lapeercountymi.gov, 1 laperfumista.es, 1 +laperla-chemnitz.de, 1 laperlaabaya.com, 1 laperladelduero.tk, 1 laperreraflamenca.tk, 1 lapesbaldai.lt, 1 +lapeyre.xyz, 1 lapicena.eu, 1 lapina.tk, 1 lapinas.com, 1 @@ -85335,8 +85589,14 @@ lapinator.net, 1 lapinmalin.tk, 1 lapismagico.com, 1 lapix.com.co, 1 +laplace.chat, 1 +laplace.cn, 1 +laplace.live, 1 +laplace.network, 1 +laplace.properties, 1 lapland.shop, 1 laplandtouristtroupers.se, 1 +laplanificadora.com, 1 laplanquedujoueur.com, 1 laplasadalsol.tk, 1 laplazita.tk, 1 @@ -85356,6 +85616,7 @@ laprensadelasagradafamilia.org, 1 laprophan.com, 1 lapseofsanity.net, 1 lapshore.com, 1 +laptopantoan.vn, 1 laptopgiasi.vn, 1 laptopnaive.com, 1 laptopnewbie.eu.org, 1 @@ -85412,7 +85673,6 @@ largescaleforums.com, 1 largest-soldiers.cf, 1 largeviewer.com, 1 largit.io, 1 -largo-art.de, 1 lariche.ee, 1 lariche.fi, 1 lariche.lt, 1 @@ -85420,7 +85680,6 @@ lariche.lv, 1 larifari.ch, 1 larigami.de, 1 larimarhomes.ca, 1 -larimartransporte.de, 1 larimer.gov, 1 larimercolorado.gq, 1 lariver.org, 1 @@ -85441,8 +85700,9 @@ larpkalender.ch, 1 larptreff.de, 1 larry.buzz, 1 larryandprisca.it, 1 -larryhmillerseniorhealth.com, 1 larryli.cn, 1 +larryshoyfer.com, 0 +larrywalshe.com, 1 lars-ewald.com, 1 lars-kusch.de, 1 lars-mense.de, 1 @@ -85478,7 +85738,6 @@ lasallecountyil.gov, 1 lasandwicheriamedellin.com, 1 lasavonnerieducroisic.fr, 1 lascana.co.uk, 1 -lascarisdeli.com, 1 laschimeneas.com, 1 laschoolpolice.gov, 1 lascimmiapensa.com, 1 @@ -85500,6 +85759,7 @@ laserplaza.de, 1 laserplaza.net, 1 laserpunch.tk, 1 lasersolutions.tk, 1 +laserweb.com.br, 1 lasfolladoras.com, 1 lasik-safely.com, 1 lasiodora.tk, 1 @@ -85518,8 +85778,10 @@ laspalmerasdelnorte.tk, 1 laspeligrosas.tk, 1 laspeludas.tk, 1 laspirale.tk, 1 +laspoesias.com, 1 lasrecetasdeguada.com, 1 lasse-boberg.tk, 1 +lasse-it.dk, 1 lasseaktiv.art, 1 lasseaktiv.com, 1 lasseaktiv.es, 1 @@ -85535,20 +85797,20 @@ lassesworld.se, 1 lassiutriainen.fi, 1 lassovideos.com, 1 lasst-uns-beten.de, 1 -last-modified.com, 1 last-strike.org, 1 lastation.ca, 1 lastbooks.gq, 1 lastcast.bg, 1 -lastencore.org, 1 -lastenwekker.nl, 1 +lastenrad-gifhorn.de, 1 lastfriends.site, 1 +lasthome.co.uk, 1 lastingcar.com, 1 lastingmarksers.ga, 1 lastingmarksest.ga, 1 lastkaj14.tk, 1 lastlowtest.tk, 1 lastmile.ml, 1 +lastminutehealthcare.com, 1 lastmohicans.tk, 1 lastorder.icu, 1 lastorderguild.tk, 1 @@ -85556,7 +85818,6 @@ lastorders.tk, 1 lastoriadellecose.tk, 1 lastpass.com, 0 lastpetal.ca, 1 -lastpictures.de, 0 lastrada.tk, 1 lastrik.ch, 1 lastsunset.tk, 1 @@ -85572,13 +85833,14 @@ lata.my, 1 latabledebry.be, 1 latahcountyid.gov, 1 latakuta.com, 1 +latanadelpolpo.it, 1 latardeurbana.cf, 1 latardeurbana.ga, 1 latardeurbana.gq, 1 latardeurbana.ml, 1 latardeurbana.tk, 1 latas-dev.lv, 1 -latavernageislautern.de, 1 +latchlink.com, 1 latchplus.com, 1 late.am, 0 lateams.ml, 1 @@ -85595,14 +85857,12 @@ latelierdeletice.com, 1 latemarch.com, 1 laten.tk, 1 latenitefilms.com, 0 -latentlens.co, 1 -latentlexicon.org, 1 latentview.com, 1 -latentviewanalytics.com, 1 lateral.dog, 1 lateralsecurity.com, 0 laterna.cz, 1 laterremotodealcorcon.tk, 1 +latestbitcoinnews.io, 1 latestcoin.tk, 1 latestimmigrationnews.today, 1 latestmobiles.tk, 1 @@ -85636,7 +85896,6 @@ latka.tk, 1 latnetwork.com, 1 latoken.com, 1 latoquedor.com, 1 -latorrecastropol.es, 1 latortilleria.eu, 1 latos.tk, 1 latour-managedcare.ch, 1 @@ -85666,6 +85925,7 @@ lauchundei.at, 1 laud.io, 1 laudableapps.com, 1 laudablesites.com, 1 +laudlab.de, 1 laudon.nl, 0 laufpix.de, 1 lauftreff-himmelgeist.de, 0 @@ -85675,15 +85935,14 @@ laughingloon.com, 1 laughlinfss.com, 1 laughlinfss.marketing, 1 laukstein.com, 1 -laulina.fr, 1 laultimaestacion.tk, 1 -launch.ci, 1 launchconsulting.com, 1 launchfinderers.ga, 1 launchfinderest.ga, 1 launchpad-app2.com, 1 launchpadder2.com, 1 launchpadwebdesigns.com, 1 +launchwithjp.com, 1 laundrylessonsers.ga, 1 laundrylessonsest.ga, 1 laundryshoplocator.com, 1 @@ -85725,7 +85984,6 @@ laurindale.tk, 1 laurineprice.com, 1 laurinhaepaulo.ga, 1 lauriuc.sk, 1 -laurus.bio, 1 lauruslabs.com, 1 lausannedentiste.ch, 0 lausannelovers.ch, 0 @@ -85736,7 +85994,6 @@ lauzon-hitter.com, 1 lava.moe, 1 lavabit.com, 1 lavabit.no, 1 -lavadodesalascdmx.mx, 1 lavaggio.it, 1 lavaggista.it, 1 lavaldostana.es, 1 @@ -85747,7 +86004,6 @@ lavamob.com, 1 lavamobiles.com, 1 lavanderia.it, 1 lavanderia.roma.it, 1 -lavaquitacheese.com, 1 lavarex.co.jp, 1 lavasing.eu.org, 1 lavavetri.it, 1 @@ -85786,6 +86042,7 @@ law-colleges.com, 1 law-moshkovich.co.il, 1 law-peters.de, 1 law-profile.com, 1 +law-zur.co.il, 1 law.co.il, 1 law22.com, 0 lawabidingcactus.com, 1 @@ -85795,6 +86052,7 @@ lawassociationtt.com, 1 lawcadia.co.uk, 1 lawcadia.com, 1 lawcancer.cf, 1 +lawcer.com, 1 lawcollaborator.com, 1 lawcore.com.ua, 1 lawcover.com.au, 1 @@ -85803,10 +86061,12 @@ lawdepot.ca, 1 lawebdeljose.tk, 1 lawebnobasta.tk, 1 lawfirmyashajustice.co.id, 1 +lawgic.com.ua, 1 lawhery.com, 1 lawinform.com.au, 1 lawinorder.au, 1 lawinordercom.au, 1 +lawkwk.com, 1 lawlessenglish.com, 1 lawlessfrench.com, 1 lawlessitalian.com, 1 @@ -85818,6 +86078,7 @@ lawmint.com, 1 lawmore.pl, 1 lawn-seeds.com, 1 lawn-tech.jp, 1 +lawnandordercs.com, 1 lawnenvyva.com, 1 lawnkitsers.ga, 1 lawnkitsest.ga, 1 @@ -85844,7 +86105,6 @@ lawrenceks.gov, 1 lawrencemurgatroyd.com, 1 lawrencewhiteside.com, 1 lawrencewi.gov, 1 -lawsight.ai, 1 lawson.bot, 1 lawsoner.tk, 1 lawstudio.com, 1 @@ -85852,6 +86112,7 @@ lawstudio.legal, 1 lawsuit.tk, 1 lawsuitconsultanters.ga, 1 lawsuitconsultantest.ga, 1 +lawtests.ir, 1 lawtimesnews.com, 1 lawtrend.in, 1 lawvize.com, 1 @@ -85866,6 +86127,7 @@ lawyerscredentialsest.ga, 1 lawyerscreenerers.ga, 1 lawyerscreenerest.ga, 1 lawyersnew.com, 1 +lawyersofmissouri.com, 1 lawzakon.tk, 1 lawzana.com, 1 lawzava.com, 1 @@ -85884,9 +86146,7 @@ laymans911.info, 1 layoutsatzunddruck.de, 1 layt.org, 1 layxw.com, 1 -lazada.pk, 1 lazarev.agency, 1 -lazarou.gr, 1 lazarusalliance.com, 1 lazell.de, 1 lazell.uk, 1 @@ -85896,7 +86156,6 @@ lazerinitiative.org, 1 lazerus.net, 1 lazerus.pw, 1 lazibeach.tk, 1 -lazionews.eu, 1 lazionews24.com, 1 lazistance.com, 1 lazo.futbol, 1 @@ -85907,7 +86166,7 @@ lazosargentina.tk, 1 lazowik.pl, 1 lazownik.pl, 1 lazuardy.tech, 0 -lazyempire.site, 1 +lazudi.com, 1 lazyhelp.com, 1 lazyhomer.pl, 1 lazynap.com, 1 @@ -85931,10 +86190,10 @@ lbiarchpro-imagery.at, 1 lbio.nl, 0 lbj.tw, 1 lbjlibrary.gov, 1 -lblaw.co.uk, 1 lblok.pl, 1 lbls.me, 0 lbo.management, 1 +lbofrance.com, 1 lbrlh.tk, 1 lbrli.tk, 1 lbrls.tk, 1 @@ -85961,7 +86220,7 @@ lc6632.com, 1 lc6656.com, 1 lc6665.com, 1 lc6686.com, 1 -lc7.fun, 0 +lc7.fun, 1 lc8005.com, 1 lc80802.com, 1 lc80805.com, 1 @@ -85981,6 +86240,7 @@ lc863.com, 1 lc871.com, 0 lc873.com, 0 lc875.com, 0 +lc8841.com, 1 lc897.com, 1 lc8c.com, 1 lc8guidance.com, 1 @@ -86005,8 +86265,7 @@ lcemsami.gov, 1 lcfwasa.gov, 1 lcgaj.com, 1 lchardingplumbing.com.au, 1 -lcht.ch, 1 -lcis-legal.ai, 1 +lcht.ch, 0 lckube.it, 1 lclarkpdx.com, 1 lcle.uk, 1 @@ -86025,9 +86284,15 @@ lcsomo.gov, 1 lcti.biz, 1 lcv-psi.com, 1 lcv-psi.com.br, 1 +lcv.ceo, 1 +lcv.cool, 1 lcv.email, 1 +lcv.expert, 1 +lcv.gay, 1 lcv.lgbt, 1 +lcv.my, 1 lcv.net.br, 1 +lcv.one, 1 lcv.pro.br, 1 lcv.psc.br, 1 lcv.rio.br, 1 @@ -86047,14 +86312,15 @@ lcwebsite.cn, 1 lcx.cc, 1 lcy.cat, 1 lcy.moe, 1 +lda-design.co.uk, 1 ldcraft.pw, 1 lddr.io, 1 +ldesignweb.com, 1 ldfebui.org, 1 ldiesel.ca, 1 ldlorangecountylocksmith.com, 1 ldm-systems.ru, 1 ldm2468.com, 1 -ldnio.pk, 1 ldoe-grantprogram.com, 1 lds52mm.com, 1 ldsvoicesoftherestoration.com, 1 @@ -86087,7 +86353,7 @@ le-tempo.com, 1 le-therapeute.com, 1 le-upfitter.com, 1 le-vario.net, 1 -le-vit.com, 0 +le-vit.com, 1 le0n.ddns.net, 1 le0yn.ml, 1 le130rb.com, 1 @@ -86095,13 +86361,11 @@ le13emeart.com, 1 le20dinant.be, 1 le42mars.fr, 1 lea.pet, 1 -leabythehills.com.my, 1 lead2022.academy, 1 leadbook.ru, 1 leadbox.cz, 1 leadcalyx.com, 1 -leadcubs.com, 1 -leader.co.jp, 1 +leader.net, 1 leaderbg.net, 1 leadercreative.ga, 1 leaderfox.cz, 1 @@ -86111,11 +86375,10 @@ leaderoftheresistance.com, 0 leaderoftheresistance.net, 0 leadersaudit.ga, 1 leadership-insight.nz, 1 -leadershipconnect.io, 0 +leadershipconnect.io, 1 leadgenie.me, 1 leadinforce.com, 1 leadingagile.com, 1 -leadingbytype.com, 1 leadiq.com, 1 leadnxt.co.in, 1 leadnxt.com, 1 @@ -86156,11 +86419,10 @@ lealuestern.com, 1 lean-consulting.cf, 1 lean.org.br, 1 leanatom.com, 1 -leanbp.com, 1 leando.de, 1 +leandoo.com, 1 leandrebergeron.com, 1 leandri-campana-avocat.fr, 1 -leandroalvarez.com.ar, 1 leandrofournier.com, 1 leandromarcolino.tk, 1 leanheat.fi, 1 @@ -86174,9 +86436,9 @@ leanstartup.co, 1 leantinebastiaans.nl, 1 leantis.be, 1 leaodarodesia.com.br, 1 +leapandjump.co.uk, 1 leapday.us, 1 leapevent.tech, 1 -leapiqacademy.com, 1 leapworks.io, 1 leapzonestrategies.com, 1 lear.com.br, 1 @@ -86214,10 +86476,9 @@ learningsolution.tk, 1 learnlux.com, 1 learnosity.com, 1 learnoutlive.com, 1 -learnpki.au, 1 +learnpedestal.com, 1 learnplayground.com, 1 learnsafe.com, 1 -learnspanishinandalusia.com, 1 learntamil.tk, 1 learnthetruth.tk, 1 learntobeonline.com, 1 @@ -86230,6 +86491,7 @@ learnupon.com, 1 learnwelsh.cymru, 1 learnwisego-stage.com, 1 learnwith.cc, 0 +leasecar.uk, 1 leaseit24.com, 1 leaselink.pl, 1 leasenow.tk, 1 @@ -86247,10 +86509,10 @@ leathercollection.com, 1 leathercollection.de, 1 leathercollection.es, 1 leathercollection.fr, 1 -leathercollection.store, 1 leatherfur.tk, 1 leathergoods.tk, 1 leatherneckappliance.com, 1 +leathersofacleaning.co.uk, 1 leatherstreet.tk, 1 leatherwill.com.ua, 1 leauda.fr, 1 @@ -86278,7 +86540,9 @@ lebendige-heilkunst.de, 1 lebenpflegen-march.ch, 1 lebenpflegen.ch, 1 lebens-fluss.at, 1 +lebenshilfe-hannover.de, 1 lebensinselparaguay.tk, 1 +lebensmittelwarnung.de, 0 lebesis.tk, 1 lebihan.pl, 1 lebkuchen-schmidt.com, 1 @@ -86334,6 +86598,7 @@ lecreative.tk, 1 lecsur.com, 1 lectronz.com, 1 lecturaweb.tk, 1 +lecturia.org, 1 lecul.site, 1 led-sk.ru, 1 led.xyz, 0 @@ -86347,10 +86612,9 @@ ledensite.com, 1 lederjackekaufen.tk, 1 lederpartner.nl, 1 ledgerscope.net, 0 -ledgy.com, 1 +ledgy.com, 0 ledhive.co.uk, 1 ledigajobb.se, 1 -ledlamba.com, 1 ledlampor365.se, 1 ledlenser.com, 1 ledlight.com, 1 @@ -86374,7 +86638,7 @@ leebiblestudycenter.co.uk, 1 leebiblestudycenter.com, 1 leebiblestudycentre.com, 1 leebiblestudycentre.org, 1 -leebladon.com, 1 +leebladon.com, 0 leebruce.tk, 1 leech.ga, 1 leech.io, 1 @@ -86418,6 +86682,7 @@ leetcode.com, 1 leetcode.net, 1 leetizia.net, 1 leetsuliangkkproduction.tk, 1 +leeuwarden.nl, 1 leevealdc.com, 1 leeyoungaeph.tk, 1 lefaivre-ferry.ca, 1 @@ -86430,6 +86695,8 @@ leflorecountyok.gov, 1 leflox.cf, 1 lefonddeloeil.com, 0 lefortbuilthomes.com, 1 +lefreka.fr, 1 +lefroyee.com, 1 left-baggage.co.uk, 1 left.it, 1 leftbrainsolutions.com.au, 1 @@ -86465,7 +86732,9 @@ legal-eye.co.uk, 1 legal-eye.com, 1 legalagenda.ga, 1 legalanchor.ga, 1 +legalatlanta.com, 1 legalatlantic.ga, 1 +legalbeagle.com.hk, 1 legalbeagles.info, 1 legalbeast.ga, 1 legalbetcanada.com, 1 @@ -86520,11 +86789,13 @@ legalnations.ga, 1 legalne-kasyna.com, 1 legalnews.cf, 1 legalnews.ml, 1 +legalneziolka.pl, 1 legalnorthamerican.ga, 1 legaloriginal.ga, 1 legalphase.ga, 1 legalpicker.ga, 1 legalpickup.ga, 1 +legalplace.fr, 1 legalplatinum.ga, 1 legalpremier.ga, 1 legalprestige.ga, 1 @@ -86550,6 +86821,7 @@ legalsustain.ga, 1 legalthunder.ga, 1 legaltings.com, 1 legaltip.eu, 1 +legaltity.com, 1 legaltreasure.ga, 1 legalunique.ga, 1 legalverde.ga, 1 @@ -86563,7 +86835,6 @@ legba.in, 1 legeamed.ru, 1 legeaz.net, 1 legend-of-pirates.tk, 1 -legendas.net, 1 legendblogers.ga, 1 legendblogest.ga, 1 legendesdechine.ch, 0 @@ -86587,7 +86858,8 @@ legioniv.org, 1 legions.tk, 1 legionwood.tk, 1 legiscontabilidade.com.br, 1 -legislativedistricts.com, 0 +legislationupdateservice.co.uk, 1 +legislativedistricts.com, 1 legit.nz, 1 legitcorp.com, 1 legitedelaguiole.com, 1 @@ -86598,11 +86870,12 @@ legko-pohudet.ml, 1 legko-pohudet.tk, 1 legna.roma.it, 1 legnami24.it, 1 -lego-ostergewinnspiel.de, 1 legoktm.com, 0 legoutcheznous.com, 1 legow.tk, 1 +legowerewolf.net, 1 legrand-ia.gov, 1 +legrandbus.com, 0 legrandcosmetics.com, 1 legrandvtc.fr, 1 legrec.fi, 1 @@ -86616,7 +86889,6 @@ legyenkianegykereked.hu, 1 leher-gz.de, 1 lehifibernetwork.gov, 1 lehighcountypa.gov, 1 -lehighvalleydairy.com, 1 lehmanns.de, 1 lehmitz-weinstuben.de, 1 lehnc.ddns.net, 1 @@ -86669,10 +86941,9 @@ leisure.tk, 1 leisurecooker.co.uk, 1 leisurecooker.ie, 1 leisurevip.com, 1 -leit.kr, 0 +leit.kr, 1 leitha.eu, 1 leitz-cloud.com, 1 -lejaimesteticaspa.com, 1 lejardindesmesanges.fr, 1 lejlax.com, 1 lejournaldublog.com, 0 @@ -86693,21 +86964,19 @@ lelehei.com, 1 leleimports.store, 1 leleviagens.com.br, 1 leliekerk.nl, 1 -lelika.se, 1 leliveld.nl, 1 leliveld.org, 1 lellek.at, 1 lellikellyshop.bg, 1 lellyboi.ml, 1 +lelo.com.pl, 1 lelubre.info, 1 lelulove.net, 1 lelux.net, 1 lelystadairport.nl, 1 lem0n.cc, 1 lem0n.eu.org, 1 -lemaldive.eu, 1 lemanbleu.ch, 1 -lemarcheatavola.com, 1 lemarcheelagrandeguerra.it, 1 lemasdupalus.com, 1 lematelas.fr, 1 @@ -86726,7 +86995,6 @@ lemmy.cafe, 1 lemmy.one, 1 lemmyfund.org, 1 lemner.md, 1 -lemo.la, 1 lemoine.at, 1 lemon.nl.eu.org, 1 lemonade.com, 1 @@ -86742,10 +87010,10 @@ lemonsoftware.eu.org, 1 lemontownshippa.gov, 1 lemonwater.tk, 1 lemp.sh, 1 -lempetz.de, 1 lemr.fr, 1 lemvig.nu, 1 lemx.exchange, 1 +lemzarcapital.com, 0 lena-klein.de, 1 lena-klein.eu, 1 lena-nitro.org, 1 @@ -86765,7 +87033,7 @@ lendingpoint.com, 1 lendinvest.com, 1 lendme.au, 1 lendme.com.au, 1 -lendme.dk, 0 +lendme.dk, 1 lendme.net.au, 1 lenemes.tk, 1 lenergietoutcompris.fr, 1 @@ -86778,6 +87046,7 @@ lenguasgermanicas.tk, 1 lengyelnyelvoktatas.hu, 1 lengyelul.hu, 1 lenhatthanh.com, 1 +lenhotec.pt, 1 lenifuchs.net, 1 lenii.com, 1 lenina72.tk, 1 @@ -86807,13 +87076,16 @@ lenoyau.com, 1 lenqiue.com, 0 lenr-experiment.tk, 1 lenr-forum.com, 1 +lens-soma.com, 1 lens.google.com, 1 lens.tw, 1 -lens.xyz, 0 +lens.xyz, 1 lenseshop.tk, 1 +lensexperts.com, 1 lensfiyat.com, 1 lensflair.studio, 1 -lensonline.in, 1 +lenspirations.com, 1 +lenstamiri.com, 1 lenstore.co.uk, 1 lensual.space, 0 lenta-ru.tk, 1 @@ -86827,12 +87099,9 @@ lenuagebauche.org, 1 lenumerozero.info, 1 lenyip.com, 1 lenyip.works, 1 -lenyoleny.ru, 1 leo-boutique.fr, 1 -leo-deville.fr, 1 leo-music.tk, 1 leo.gov, 1 -leoai.cloud, 1 leoandpeto.com, 1 leob.in, 0 leocollo.com, 1 @@ -86847,7 +87116,6 @@ leomarcou.fr, 1 leomax.ru, 1 leomwilson.com, 0 leon-16255.space, 1 -leon-security.com, 1 leon-tec.co.jp, 1 leon-tech.com, 1 leon.aero, 1 @@ -86866,6 +87134,7 @@ leonardoholguin.com, 1 leonardospada.it, 1 leonardostart.tk, 1 leonardovarella.com.br, 1 +leonardscove.co.uk, 1 leonardtheologicalcollege.com, 1 leonauto.de, 1 leonbania.com, 1 @@ -86880,7 +87149,6 @@ leonklingele.de, 1 leonorebrandwebsites.nl, 1 leonpa.gov, 1 leonplast.tk, 1 -leontailoring.com, 1 leontiekoetter.de, 1 leontworzy.pl, 1 leontyev.tk, 1 @@ -86915,16 +87183,13 @@ lepkov.ru, 1 leplus.net, 1 leplus.org, 1 leporem.com.br, 1 -leporia.es, 1 leppis-it.de, 1 lepraconsf.com, 1 -leprechauntechnicalservices.com, 1 leprekon.tk, 1 lepressoir-info.org, 1 leps.fr, 1 leptitbaltar.com, 1 leptotrichia.tk, 1 -lepuslupus.com, 1 lepuyenvelay-tourisme.fr, 1 lequerceagriturismo.com, 1 lequest.dk, 1 @@ -86938,7 +87203,6 @@ lerks.blog, 1 lerku.com, 1 lerm.nl, 1 lermer.nl, 1 -lermf.org, 1 lernenamsee.ch, 1 lernerspersonalinjury.ca, 0 lernorteuropa.com, 1 @@ -86953,11 +87217,11 @@ lertsiritravel.net, 1 les-aides.fr, 1 les-ateliers-de-melineo.be, 0 les-epris.fr, 1 +les-inoxydables.com, 1 les-plus.com, 1 les-pros-du-drone.com, 1 les-universalistes.be, 1 les.cx, 1 -les.net.au, 1 lesa-kiev.biz.ua, 1 lesa.biz.ua, 1 lesa.boutique, 1 @@ -86972,21 +87236,19 @@ lesas.tk, 1 lesbea.com, 1 lesbellesdenuit.ch, 1 lesbi-porno-video.ru, 1 -lesbian.fish, 1 lesbianlovers.tk, 1 lesbicas.com.pt, 1 lesblogueuses.fr, 1 lesbonzoms.alwaysdata.net, 1 lesborgestv.cat, 1 lesbrillantsdaristide.com, 1 -lescabanesduloupbleu.com, 1 lescharmesdebailly.com, 1 lescommunes.com, 1 lescomptoirsdepierrot.com, 1 lesconcours.tk, 1 lescoquetteriesdenais.fr, 1 lescrapdesfilles.fr, 1 -lescrieursduweb.com, 1 +lescrieursduweb.com, 0 lesdelicesdeloris.fr, 1 lesdeuxfilles.be, 1 lesdeuxrives.com, 1 @@ -87045,6 +87307,7 @@ lestoilesdemich.fr, 1 lestravauxduparticulier.fr, 1 lestrokeofgenius.com, 1 lestudiopecot.fr, 1 +lesummeira.is, 1 lesvertsmaroc.tk, 1 lesy.eu, 1 lesycr.cz, 1 @@ -87068,8 +87331,12 @@ letic.fr, 1 leticia.com.tw, 1 leticia.ml, 1 letiloulous.fr, 1 +letinsys.cz, 1 letipweb.tk, 1 letitfleet.io, 1 +letitq.com, 1 +letmdesigncommercial.com, 1 +letmebet.de, 1 letmepost.com, 1 letnik.tk, 1 leto12.xyz, 0 @@ -87092,10 +87359,8 @@ letsbrand-holding.com, 1 letsbrand-holding.nl, 1 letsbrandholding.com, 1 letsbrandholding.nl, 1 -letscahoot.net, 1 letscleanlaundry.in, 1 letsclimact.com, 1 -letscom.it, 1 letscrackit.ml, 1 letsdebug.net, 1 letsdevelop.com.br, 1 @@ -87141,10 +87406,11 @@ lettucestudios.net, 1 letturaveloce.tk, 1 letustravel.tk, 1 letvikar.dk, 1 +letweedoo.com, 1 letwithpuffin.co.uk, 1 letwork.be, 1 letwork.de, 1 -letyro.pl, 0 +letyro.pl, 1 letzi-immobilien.ch, 1 letztegeneration.org, 1 leuchtmann.ch, 1 @@ -87165,7 +87431,7 @@ levans.fr, 0 levanscatering.com, 1 levantage.tk, 1 levaquin750.ga, 1 -levati.name, 1 +levati.name, 0 leveeroadstudio.com, 1 level-assist.com, 1 level-assist.de, 1 @@ -87174,7 +87440,6 @@ level37.tk, 1 level4.parts, 1 level6.me, 1 levelaccordingly.com, 1 -levelfit.ai, 1 levelninehvac.com, 1 leveloneproject.org, 1 levelrankings.com, 1 @@ -87192,6 +87457,7 @@ leverageedu.com, 1 leverj.io, 1 levermann.eu, 1 leversconceptconstructions.com.au, 1 +leversonbudke.com, 1 leviaan.nl, 1 leviathan-studio.com, 1 leviathanfan.tk, 1 @@ -87201,12 +87467,12 @@ levidromelist.com, 1 levincc.com, 1 levinholidaypark.co.nz, 1 levis.fun, 1 +levis.name, 1 levischuck.com, 1 levisenlaw.com, 1 levitatingx.com, 1 levitation.tk, 1 levlagom.com, 1 -levmarkov.ru, 1 levna-knihovna.cz, 1 levo.so, 1 levolor.com, 1 @@ -87238,12 +87504,13 @@ lewiscountytn.gov, 1 lewisjuggins.co.uk, 1 lewismcyoutube.uk, 1 lewistonutah.gov, 1 -lewood.io, 0 +lewood.io, 1 lewt.me, 1 lex-legal.com.ua, 1 lex18.com, 1 lexapro-price.ga, 1 lexautoservice.nl, 1 +lexbailbonds.com, 1 lexblogplatform.com, 1 lexblogplatformthree.com, 1 lexch.com, 1 @@ -87251,18 +87518,18 @@ lexdavicont.ro, 1 lexdigital.pl, 1 lexe.club, 1 lexeri.com, 1 -lexgeneris.com, 1 lexgo.be, 1 lexgo.lu, 1 +lexic.co, 1 lexico.pt, 1 lexicography.online, 1 lexicore.ga, 1 lexifax.ga, 1 lexikon24.tk, 1 +lexilala.org, 1 lexington-credit-repair.com, 1 lexingtonil.gov, 1 lexingtonok.gov, 1 -lexinova.eu, 1 lexinova.xyz, 1 lexinter.net, 1 lexiprof.com, 0 @@ -87270,11 +87537,9 @@ lexis.ml, 1 lexita.lt, 1 lexitthemovie.tk, 1 lexjunkie.xyz, 1 -lexlens.io, 1 lexmedia.ro, 1 lexmondcommunications.com, 1 lexopen.dk, 1 -lexpars.com, 1 lexpartsofac.com, 1 lexpert.ca, 1 lexplicite.fr, 1 @@ -87288,14 +87553,12 @@ lexreporters.info, 1 lexreporters.net, 1 lexreporters.org, 1 lexsc.gov, 1 -lexsonic.com, 1 lextechsuite.com, 1 lexum.com, 1 lexuspartsnow.com, 1 lexway.pk, 1 leyaonline.com, 1 leybelsgarden.cf, 1 -leyden.pl, 1 leyendaluzrenacer.com, 1 leyeslaboralesdecolorado.gov, 1 leyfutmex.com, 1 @@ -87309,14 +87572,17 @@ lezen.tk, 1 leziblog.com, 1 lezzetyurdu.com.tr, 1 lfashion.eu, 1 +lfasiallc.com, 1 lfc.com.pl, 1 lfcnsv.de, 1 lff.club, 1 lffweb.ga, 1 +lfg.com.ph, 1 lfgss.com, 1 lfi-mv.de, 0 lfmosqueira.com.br, 1 lfn.moe, 1 +lfnaturopathie.com, 1 lforum.tk, 1 lfrconseil.com, 1 lfyhokk.tk, 1 @@ -87326,8 +87592,8 @@ lg-world.cz, 1 lg.gz.cn, 1 lg0.site, 1 lg2.com, 1 -lgads.tv, 1 lgbt-colleges.com, 1 +lgbt.io, 1 lgbt.ventures, 1 lgbtqcolorado.org, 1 lgbtqtherapyspace.com, 1 @@ -87340,13 +87606,12 @@ lgesteticaautomotiva.com.br, 1 lgfa.com.au, 1 lghairdressers.nl, 1 lghfinancialstrategy.ch, 0 -lgiswa.com.au, 0 +lgiswa.com.au, 1 lgmars.xyz, 1 -lgmg.bg, 1 lgmotors.cz, 1 lgnsh.fr, 1 lgobchod.cz, 1 -lgrs.com.au, 0 +lgrs.com.au, 1 lgsc.lv, 1 lgscripts.com.br, 1 lgsg.us, 1 @@ -87385,12 +87650,13 @@ li.search.yahoo.com, 0 li1436-89.members.linode.com, 1 lia-fox.org, 1 liaengel.com, 1 +liaiai.com, 1 liakhova.com, 1 +lialash.pro, 1 lialion.de, 1 liam-is-a-nig.ga, 1 liam-le-may.fr, 1 liam-w.io, 1 -liamatch.se, 1 liambaron.com, 1 liamelliott.me, 1 liamlin.me, 1 @@ -87400,8 +87666,7 @@ lian-in.net, 1 liana.site, 1 lianand.com, 1 liangbi.ml, 1 -liangfaner.com, 0 -liangji.com.tw, 1 +lianglongcredit.com, 0 liangmian.com, 1 liangxingai.com, 1 liangyichen.net, 0 @@ -87414,6 +87679,7 @@ liantao.com, 1 lianwen.kim, 1 liaozheqi.cn, 1 liar.wiki, 1 +liasecboard.com, 1 libanswers.com, 1 libanswers.net, 1 libapps.com, 0 @@ -87448,11 +87714,13 @@ liberatingstructures.nl, 1 liberation2020.com, 1 liberationgroup.com, 1 liberationtek.com, 0 +liberatospizza.com, 1 liberatupotencial.site, 1 liberda.nl, 1 liberdademg.com.br, 1 liberecstehovani.cz, 1 libermoto.fr, 1 +liberr.com, 1 liberta-me.org, 1 libertacao.tk, 1 libertadgreen.tk, 1 @@ -87471,6 +87739,7 @@ liberty.co.uk, 1 libertybaptistmn.org, 1 libertycountyflsoe.gov, 1 libertycr.com, 0 +libertydentalplan.com, 1 libertyellisfoundation.org, 1 libertyga.tk, 1 libertygrovewi.gov, 1 @@ -87480,6 +87749,7 @@ libertylakewapd.gov, 1 libertyland.tk, 1 libertylondon.com, 1 libertymedia.com, 1 +libertyreversemortgage.com, 1 libertyrxpharmacy.com, 1 libertystation.com, 1 libertytereconoce.com, 1 @@ -87522,6 +87792,7 @@ libraryofcode.us, 1 librarytapes.tk, 1 librarytools.com, 1 libravatar.org, 1 +librazy.org, 1 libre-innovation.org, 1 libre.cr, 1 libre.net.au, 1 @@ -87537,6 +87808,7 @@ libreexpresion.tk, 1 libreho.st, 1 librelamp.com, 1 libremail.nl, 1 +librematrix.com, 1 librends.org, 1 libreofficefromcollabora.com, 1 libreplanet.org, 1 @@ -87554,6 +87826,7 @@ librosdelasteroide.com, 1 librosderuta.com, 1 librosdescargas.club, 1 librosgratisnet.tk, 1 +libruis.com, 0 libscpi.org, 1 libskia.so, 1 libslack.org, 1 @@ -87562,13 +87835,12 @@ libstaffer.com, 1 libstaffer.net, 1 libstick.org, 1 libstock.si, 1 -libus.pro, 1 -libusova.pro, 1 libvolk.org, 1 libwizard.com, 1 libwizard.net, 1 libyanexpert.ml, 1 libyanwings.aero, 1 +lic39.ru, 1 licencatop.com.br, 1 licence-registry.com, 1 licencja-na-drona.pl, 1 @@ -87579,7 +87851,6 @@ licenseplates.cc, 1 licensingassurance.com, 1 licenzacalcio.tk, 1 liceoc9.tk, 1 -lichanzhou.cl, 1 lichess.org, 1 lichnyj-astrolog.cf, 1 lichnyj-astrolog.ga, 1 @@ -87610,13 +87881,13 @@ lidarwindtechnolog.cf, 1 lidarwindtechnolog.ga, 1 lidaumba.com, 1 lidavidm.me, 1 -lide.cz, 1 lide.eu, 1 lidel.org, 1 lidepla.com, 1 +lidergreen.pl, 1 lidernaturascarlettbados.com, 1 liderok.tk, 1 -liderzyprawa.pl, 1 +lidhedredovisning.se, 1 lidkoping.se, 1 lidl-gewinnspiel.de, 1 lidl-holidays.com, 1 @@ -87649,6 +87920,7 @@ liegveld.nl, 1 liella.me, 1 liemen.net, 1 liena.be, 0 +liendar-silver.com, 1 lienhuyghebaert.tk, 1 lier.link, 1 lier.tk, 1 @@ -87656,7 +87928,7 @@ lieren4x4.nl, 1 lierohell.tk, 1 liersgevoel.nl, 1 liesbethkeijzer.nl, 1 -lifamily.xyz, 1 +lieuu.com, 0 lifanov.com, 1 life-emotions.pt, 0 life-in-hell.tk, 1 @@ -87671,6 +87943,7 @@ life-time.nl, 1 life24korea.com, 1 life4net.tk, 1 lifeandhealthtips.tk, 1 +lifeandhowtosurviveit.com, 1 lifeartstudios.net, 1 lifeasgame.tk, 1 lifeatthemax.graphics, 1 @@ -87678,8 +87951,9 @@ lifeatthemax.marketing, 1 lifeaz.co, 1 lifeball.org, 1 lifebymargot.co.uk, 1 +lifecare.org, 1 lifecelebrated.org, 1 -lifecheq.co.za, 0 +lifecheq.co.za, 1 lifecism.com, 1 lifecoach.tw, 1 lifecoachroel.nl, 1 @@ -87687,14 +87961,12 @@ lifeconnections.ro, 1 lifecoresystems.com, 1 lifecraft.cf, 1 lifecreator.cn, 1 -lifecycle-gmbh.com, 1 lifedrops.com.au, 1 lifegoesonsojustsmile.tk, 1 lifehacker.com, 1 lifeinhellfansite.tk, 1 lifeinhex.com, 1 lifeinsurancepro.org, 1 -lifeis.money, 1 lifeisabug.com, 1 lifeisbeautiful.com, 1 lifeismmo.com, 1 @@ -87725,7 +87997,6 @@ lifeofasi.com, 1 lifeofpromotion.com, 1 lifepathdoc.com, 1 lifepathpsychiatry.com, 1 -lifeproject.org, 1 liferay.com, 1 lifesaverhindi.tk, 1 lifesciencedynamics.com, 1 @@ -87760,7 +88031,7 @@ lifeupgame.fr, 1 lifewithdyna.com, 1 lifexpert.tk, 1 lifexue.com, 1 -liffin.com, 1 +lifi.is, 1 lift-world.info, 1 lift.hr, 1 liftagacademy.com, 1 @@ -87768,28 +88039,33 @@ liftbleskspb.ru, 1 liftedpixel.net, 1 liftgiving.com, 1 liftie.info, 1 -liftmind.ai, 1 lig.ink, 0 +liga.am, 1 liga.ng, 1 liga99.tk, 1 ligacontrachetos.tk, 1 ligadegamers.com, 1 ligadosgames.com, 1 -ligalt.ru, 1 ligand-research.com, 1 ligare-fp.com, 1 ligaro.nl, 1 light.mail.ru, 1 lightandvideo.com, 1 lightbearer.tk, 1 -lightbluelearning.com, 0 +lightbluelearning.com, 1 lightbook.org, 1 +lightbox.co, 1 lightcraftmc.tk, 1 lightdark.xyz, 1 +lightenenterprise.com, 1 lightfoot.co.uk, 1 lighthouseglobal.com, 1 lighthouseguild.org, 0 lighthousepointfl.gov, 1 +lightingagoura.com, 1 +lightingcalabasas.com, 1 +lightinghiddenhills.com, 1 +lightingnewburypark.com, 1 lightingpacificpalisades.com, 1 lightman.cz, 1 lightme.us, 1 @@ -87807,6 +88083,7 @@ lightoflifehomoeopathyclinic.com, 1 lightography.com, 1 lightonelectrical.com.au, 1 lightquantum.moe, 1 +lightrun.com, 1 lights0123.com, 1 lightsfromspace.com, 0 lightsheep.no, 0 @@ -87818,7 +88095,6 @@ lightsproject.com, 1 lightstands.xyz, 1 lightupcollective.co.uk, 1 lightupkapiti.nz, 1 -lightupporirua.nz, 1 lightupwindsor.com.au, 1 lightwaves.io, 1 lightwitch.org, 0 @@ -87826,6 +88102,7 @@ lightworks.tk, 1 lightyear.ai, 1 lightyear.no, 1 ligiptv.tk, 1 +ligmadrive.com, 1 ligneclaire.tk, 1 lignemalin.com, 1 lignoma.com, 1 @@ -87864,7 +88141,6 @@ likegeeks.com, 1 likehifi.de, 1 likenewhearing.com.au, 1 likenosis.com, 1 -likereply.com, 1 likesec.net, 1 likesec.se, 1 likesolidaria.com.co, 1 @@ -87885,7 +88161,7 @@ lilai6688.com, 0 lilai777.com, 1 lilai9966.com, 1 lilawadee.tk, 1 -lile.cl, 0 +lile.cl, 1 liliahnaraynephotography.com, 1 lilianejuchli.ch, 1 liliang.moe, 1 @@ -87913,10 +88189,12 @@ lillywhitehotelgroup.com.au, 1 lilou-sportswear.com, 1 lilousportswear.com, 1 lilpwny.com, 1 +lilsgym.ca, 1 lilstarry.com, 1 lilth.moe, 1 liltv.media, 1 -liluna.nl, 0 +lilula-web.jp, 1 +liluna.nl, 1 lily-bearing.com, 1 lily-inn.com, 1 lily-luv.com, 1 @@ -87948,7 +88226,7 @@ lime-host.cf, 1 lime-host.tk, 1 limebulgaria.com, 1 limechain.tech, 0 -limecho.net, 0 +limecho.net, 1 limehotel.tk, 1 limelightnashville.cf, 1 limelightnashville.ga, 1 @@ -87974,6 +88252,7 @@ limitdropest.ga, 1 limitedcolombia.co, 1 limitededitioncomputers.com, 1 limitededitionsolutions.com, 1 +limitlessbridal.co.uk, 1 limitlex.com, 1 limitshareers.ga, 1 limitshareest.ga, 1 @@ -88034,6 +88313,7 @@ lincolntownshipnewaygocountymi.gov, 1 lincolnzoo.org, 1 lind-bohanon.org, 1 lindadetmayer.com, 1 +lindajahn.de, 1 lindakloenreizen.nl, 0 lindalap.fi, 1 lindalush.net, 1 @@ -88042,6 +88322,7 @@ lindanblog.com, 1 lindaolsson.com, 0 lindapark.com, 1 lindazi.com, 1 +lindbladcruises.com, 1 linden-nj.gov, 1 linden.tk, 1 lindenfd-nj.gov, 1 @@ -88089,6 +88370,7 @@ lineengraver.com, 1 linefire.com, 1 lineinchina-enterprise.tw, 1 lineinchina.com.ua, 1 +linejuby.dk, 1 linelab.cz, 1 lineru.com, 1 lineshop.ml, 1 @@ -88096,6 +88378,7 @@ linestep.jp, 1 lineto.com, 1 linext.cn, 0 linfamilygc.com, 1 +linge-ma.ro, 1 lingerie-coquine.fr, 1 lingerie.com.br, 1 lingeriebym.nl, 1 @@ -88112,6 +88395,7 @@ lingualeo.com, 1 linguarama.com, 1 linguaromanica.tk, 1 linguatrip.com, 1 +linguecontiziano.com, 1 linguee.com, 1 linguee.de, 1 linguee.es, 1 @@ -88155,7 +88439,6 @@ linkbong.tk, 1 linkbooks.ga, 1 linkborn.com, 1 linkcat.tk, 1 -linkcodegenerator.com, 1 linkdesign.tk, 1 linkdolar.tk, 1 linkdr.uk, 1 @@ -88200,6 +88483,8 @@ linksmatrix.tk, 1 linksol-inc.com, 1 linkspace.tk, 1 linkss.express, 1 +linkst.co, 0 +linkstaffing.com, 1 linkstellar.com, 1 linktgo.com, 1 linkthis.me, 1 @@ -88207,7 +88492,6 @@ linkthis.ml, 1 linkthisstatus.ml, 1 linkto.cf, 1 linku.com, 1 -linkupcareer.id, 1 linkurio.us, 1 linkurious.com, 1 linkuva.tk, 1 @@ -88218,7 +88502,6 @@ linky.ph, 1 linky.tk, 1 linkycat.com, 1 linlemon66.com, 1 -linmago.com, 1 linmania.tk, 1 linmarka.com, 1 linnaclinic.com, 1 @@ -88229,7 +88512,6 @@ linncounty-ia.gov, 1 linncountyelections-ia.gov, 1 linncountyiowa.gov, 1 linncountyor.gov, 1 -linnemanlabs.com, 1 linngde.com, 1 linnich.de, 1 linocolombo.tk, 1 @@ -88317,6 +88599,7 @@ linuxhandbook.com, 0 linuxhostsupport.com, 1 linuxiac.com, 1 linuxiuvat.de, 1 +linuxkompis.se, 1 linuxlatbot.tk, 1 linuxlounge.net, 1 linuxmalta.tk, 1 @@ -88330,6 +88613,7 @@ linuxwerkstatt.net, 1 linuz.it, 1 linx.net, 1 linxmind.eu, 1 +linxoconnect.com, 1 linxtter.com, 1 linyunbin.com, 1 linz.eu.org, 1 @@ -88378,7 +88662,7 @@ liptor.gq, 1 lipturess.tk, 1 liq.com.br, 1 liqd.net, 1 -liqiuyu.com, 0 +liqiuyu.com, 1 liqourltd.com, 1 liqueur.wiki, 1 liquid.cz, 1 @@ -88386,11 +88670,11 @@ liquid.network, 1 liquid.place, 1 liquid32.de, 1 liquidation.tk, 1 -liquidationbalersfield.com, 1 liquidblack.se, 1 liquidbounce.tk, 1 liquidcorp.fr, 1 liquidflash.ml, 1 +liquidhost.co, 1 liquidinternet.co, 1 liquidlightimages.com, 1 liquidradio.pro, 1 @@ -88403,6 +88687,7 @@ liquorland.com.au, 1 liqwid.finance, 1 lirelesgens.com, 1 liress.gq, 1 +liri.ie, 1 lirico.ca, 1 lirion.de, 1 lirlandais.ch, 0 @@ -88451,7 +88736,6 @@ lisnail.gr, 1 liso.xyz, 1 lisowski-photography.com, 1 lisp.org, 1 -lispeechtherapy.com, 1 lissabon.tk, 1 lissabonsite.tk, 1 lissajouss.tk, 1 @@ -88465,7 +88749,6 @@ listany.com, 1 listapp.uz, 1 listclue.com, 1 listcraft.top, 1 -liste-mtm.de, 1 listekdo.fr, 1 listelist.com, 1 listen.dk, 1 @@ -88484,6 +88767,7 @@ listminut.be, 1 listofcamsites.com, 1 listoffreeware.com, 0 listratenkov.com, 1 +listruct.com, 1 lists.fedoraproject.org, 1 lists.mayfirst.org, 0 lists.stg.fedoraproject.org, 1 @@ -88499,6 +88783,7 @@ litchfieldpark.gov, 1 litchidova.nl, 1 litcomphonors.com, 1 lite-1x0801165.top, 1 +lite-1x132537.top, 1 lite-1x378220.top, 1 lite-1x389463.top, 1 lite-1x4720786.top, 1 @@ -88521,6 +88806,7 @@ litebitcdn.eu, 1 litebooks.gq, 1 litecache.de, 1 litecloud.ml, 1 +litecoinnews.club, 1 litehost24.tk, 1 litemind.com, 0 liteminer.cf, 1 @@ -88578,6 +88864,7 @@ littlecaprice-dreams.com, 1 littlecash.com, 1 littlecompton.gov, 1 littlecourtcottages.com, 1 +littlecreekhosting.com, 1 littledev.nl, 0 littleduck.xyz, 1 littlefairy.no, 1 @@ -88604,6 +88891,7 @@ littleorangecookbook.com, 1 littlepigcreek.com.au, 1 littlepincha.fr, 0 littleqiu.net, 1 +littlericket.me, 1 littleriverfreerange.ga, 1 littlerose.ml, 1 littlerphotographie.fr, 1 @@ -88612,20 +88900,19 @@ littlesblog.de, 1 littlescallywagsplay.co.uk, 1 littleservice.cn, 1 littlesilvernj.gov, 1 -littlesk.in, 1 littleskin.cn, 1 littlesouls.ml, 1 +littlesouthafrica.co.uk, 1 littlestars.bg, 1 +littlestepsbehaviortherapy.com, 1 littlesteve.es, 1 littletigerchinese.com, 1 littlewatcher.com, 1 -littlewoodcreations.com, 1 littleyokohamakennel.tk, 1 liturgical.net, 1 liturkey.tk, 1 litvideoserver.de, 1 litvinenko.tech, 1 -litvinovdev.ru, 1 litwinek.pl, 1 litz.ca, 1 litzenberger.ca, 1 @@ -88633,12 +88920,14 @@ liubliu.co.uk, 1 liud.im, 1 liudon.com, 1 liujr.tk, 1 +liujunyang.com, 0 liukang.com, 1 liukang.tech, 1 liul.in, 1 liuliuya.com.tw, 1 liulo.cf, 1 liups.net, 1 +liuq.org, 1 liuqiao.best, 1 liuqiao.cf, 1 liuqiao.eu.org, 1 @@ -88679,6 +88968,7 @@ livealarm.com, 1 liveandalucia.es, 1 liveanimations.org, 1 livebandphotos.com, 1 +livebeachcam.net, 0 livebestbooks.gq, 1 livebookmark.ml, 1 livebox-mag.fr, 1 @@ -88713,15 +89003,12 @@ livelexi.com, 1 livelifewithintent.com, 1 livelifewithstyle.com, 1 livelink.tk, 1 -livelog.dk, 1 livelong.tk, 1 livelonglife.tk, 1 livelovelaughlg.com, 1 liveman.dk, 1 livemomentum.ml, 1 -livemusikband.de, 1 livenewsrussia.tk, 1 -liventocoin.com, 1 livenutriwell.com, 1 liveomadic.com, 1 liveoutdoor.ga, 1 @@ -88739,17 +89026,17 @@ livermoreca.gov, 1 livermorefireco.gov, 1 liverobot888.com, 1 liverpoolmoneyman.com, 1 +liversurgery.com, 1 liverylive.com, 1 livesexcalls.co.uk, 1 livesimply.me, 1 liveskype.com, 1 livesportts.ml, 1 -livespot.se, 1 livestep.ai, 1 livestep.one, 1 livestone.tk, 1 livestrana.tk, 1 -livetagus.pt, 1 +livesync.win, 1 liveteachers.in, 1 livetec.show, 1 livetilesglobal.com, 1 @@ -88757,13 +89044,13 @@ livetopknigi.gq, 1 livetoride.co.za, 1 livetouring.org, 0 livetune.jp, 1 +livetvuk.uk, 1 liveutifree.com, 1 livevacancies.co.uk, 1 livewebtutor.com, 1 liveweddingartist.ca, 0 liveweddingpainter.ca, 1 livewirecommunications.co.uk, 1 -liveyouridea.com, 1 livezrejstejna.cz, 1 livfcshop.com, 1 livi.co.uk, 1 @@ -88773,6 +89060,8 @@ living-legends.tk, 1 living-space.co.nz, 1 living-with-outlook-2010.com, 1 living.video, 1 +livingafrugallife.com, 1 +livingbitsandthings.com, 1 livingdex.ca, 1 livingdocs.io, 1 livinghebrew.tk, 1 @@ -88784,7 +89073,6 @@ livinglink.be, 1 livingoutdoors.ga, 1 livingsn.com, 1 livingstonca.gov, 1 -livingstonebuilding.co.nz, 1 livingstontx.gov, 1 livingthetech.com, 1 livingtoxfree.com, 1 @@ -88831,7 +89119,6 @@ lizkimball.com, 1 liznewton.com.au, 1 liztattoo.se, 1 lizteacher.com, 1 -lizthegrey.com, 1 lizufyr.eu, 1 lizzandra.tk, 1 lizzaran.io, 1 @@ -88840,6 +89127,7 @@ lizzwood.com, 1 lizzythepooch.com, 1 lj-creation.com, 1 ljason.cn, 1 +ljcybersolutions.uk, 1 ljdesign.be, 1 ljekarne-plantak.hr, 1 ljesports.com, 1 @@ -88849,7 +89137,7 @@ ljskatt.com, 1 ljskatt.no, 1 ljubescica.hr, 1 ljungabolet.se, 1 -ljusdalsnaprapatklinik.se, 1 +ljusfallshammar.nu, 0 ljusnarsberg.se, 1 ljw.me, 1 lk-hardware.cz, 0 @@ -88866,7 +89154,6 @@ lksoft.cz, 1 lkw-faehren-buchen.de, 1 lkwmodellbau.at, 1 ll-vt.de, 1 -ll.ls, 1 ll5197.co, 1 ll6729.co, 1 ll6957.co, 1 @@ -88899,6 +89186,7 @@ llrpartners.com, 1 llumar.com, 1 llvm.us, 1 llyncelyn.com, 1 +lm-landscapes.co.uk, 1 lm1628.com, 1 lm228.cn, 1 lm338.cn, 1 @@ -88915,13 +89203,6 @@ lmr.com, 1 lmrcirurgiaplastica.pt, 1 lmrcouncil.gov, 1 lmsal.com, 1 -lmsaura.com.br, 1 -lmsvisao.com.br, 1 -lmsvisaocontabilidade.com.br, 1 -lmsvisaoimoveis.com.br, 1 -lmsvisaomotos.com.br, 1 -lmsvisaoseguros.com.br, 1 -lmsvisaotecnologia.com.br, 1 lmtls.me, 1 lmtravis.com, 1 lmvsci.gov, 1 @@ -88944,6 +89225,7 @@ lnrnews.ru, 1 lnsk.lt, 1 lnsolucoesfinanceiras.com.br, 1 lnsrv.net, 1 +lntecc.com, 1 lntpower.com, 0 lntsufin.com, 1 lnttechservices.com, 1 @@ -88962,6 +89244,7 @@ loadme.ml, 1 loadninja.com, 1 loador.com, 1 loadover.me, 1 +loadui.org, 1 loadwallet.com, 1 loafhead.me, 1 loan-lenders.co.za, 1 @@ -88985,6 +89268,7 @@ lobby.game, 1 lobevert.com, 1 lobiancocucina.com, 1 lobin21.com, 1 +lobivia.de, 1 lobmedya.com, 1 lobocapoeira.tk, 1 lobosdomain.ddns.net, 1 @@ -89003,11 +89287,11 @@ localbandz.com, 1 localbiketrader.com, 1 localbitcoins.com, 1 localblitz.com, 1 -localbox.net, 1 localcdn.org, 1 localcryptos.com, 1 locald.at, 1 localdating.ml, 1 +localenv.uk, 1 localethereum.com, 1 localexpert.realestate, 1 localexpress.io, 0 @@ -89017,7 +89301,6 @@ localgrain.org, 1 localhandyman.work, 1 localhero.biz, 1 localhorst.duckdns.org, 0 -localisedseo.uk, 1 localiza.io, 1 localized.tk, 1 localizejs.com, 1 @@ -89113,6 +89396,7 @@ locksmithedmonds.com, 1 locksmithforcarshoustontx.com, 1 locksmithgarland-tx.com, 1 locksmithglenvista.co.za, 1 +locksmithgrapevinetx.com, 1 locksmithhillcrest.co.za, 1 locksmithlivoniami.com, 1 locksmithmadisonheights.com, 1 @@ -89133,8 +89417,9 @@ locksmithssanmarcostx.com, 1 locksmithstaffordtx.com, 1 locksmiththewoodlands.com, 1 locksport.org.nz, 1 -loco-concepts.nl, 1 +lockwoodonlinejournals.com, 1 loco-creations.nl, 1 +loco-socials.nl, 1 locomediagroep.nl, 1 locomotiv.tk, 1 locomotive.ca, 1 @@ -89155,13 +89440,15 @@ lodela.ru, 1 lodestarss.com, 1 lodewijkict.nl, 1 lodewillems.com, 1 +lodgeatschroonlake.com, 1 lodger.cf, 1 -lodhagroup.in, 1 lodki-pvh.com, 0 lodni.site, 1 +lodongxu.com, 0 lodosswar.tk, 1 lodus.io, 1 lodzjews.org, 1 +loeilducontinent.com, 1 loekkoopmans.tk, 1 loeklommers.nl, 1 loekvormgeving.nl, 1 @@ -89171,13 +89458,13 @@ loew.de, 1 lofimusicradio.com, 1 lofirmo.com, 1 lofisimplify.com.au, 1 +loforo.com, 1 loft.com.br, 1 lofttravel.com, 1 loftyideas.ml, 1 loftymedia.ca, 1 lofw.tk, 1 log.ac, 1 -log.edu.kg, 1 log.moe, 0 log.pw, 0 log4shell.org, 1 @@ -89196,9 +89483,9 @@ logankpaschke.com, 1 loganmarchione.com, 1 loganparkneighborhood.org, 1 loganscene.tk, 1 -logansfuneralhome.com, 1 logart.tk, 1 logate.com, 1 +logay.com.br, 1 logbook.ch, 1 logcat.info, 0 logdoc.tk, 1 @@ -89209,7 +89496,6 @@ logfile.at, 1 logfile.ch, 1 logfro.de, 1 logfurnitureplace.com, 1 -logic-puzzles.co.uk, 1 logic8.ml, 1 logical-invest.com, 1 logicalis.com, 1 @@ -89236,7 +89522,6 @@ logicstudio.co.nz, 1 logicstudio.nz, 1 logicums.ru, 1 logicz.top, 1 -logiesopdreef.nl, 1 logimap.cz, 1 login.ad, 1 login.corp.google.com, 1 @@ -89248,11 +89533,15 @@ login.raiffeisen.ch, 1 login.sapo.pt, 0 login.ubuntu.com, 1 login.yahoo.com, 0 +logindefense.com, 1 logingate.hu, 1 loginsecure.eu, 1 loginsoft.com, 1 loginwithhn.com, 1 logipdv.pt, 1 +logis-japan.jp, 1 +logis.cz, 1 +logis.net, 1 logismarket.com, 1 logismn.gov, 1 logisparte.com, 1 @@ -89284,15 +89573,16 @@ logopaedie-sandkrug.de, 1 logopaediereinhard.de, 0 logopedickyden.cz, 1 logopedie-direct.nl, 1 +logopedietaalrijk.nl, 1 logopedischcentrum.nl, 1 logopedista.roma.it, 1 logopedistalanni.it, 1 logoprofi.tk, 1 -logosautomations.com, 1 logosnet.com.br, 1 logosradio.tk, 1 logostock.jp, 1 logostore-globalid.us, 1 +logowik.com, 1 logram.io, 1 lograr.me, 1 logrhythm.com, 1 @@ -89308,10 +89598,10 @@ lohanaflores.com.br, 1 loheprobado.com, 1 lohkoketju.fi, 1 lohmeyer.cc, 1 +lohnsteuerhilfe-essen.de, 1 lohnsteuerhilfe.net, 1 lohocla.org, 1 lohr.me, 1 -loi25.io, 1 loic-raymond.fr, 1 loiit.ga, 1 loire-en-bateau.fr, 1 @@ -89365,10 +89655,12 @@ lojavirtualdopsicopedagogo.com.br, 1 lojavirtualinfopaper.com.br, 1 lojavisamed.com.br, 1 lojaxo.com.br, 1 +lojazeustech.com.br, 1 lojel.com, 1 lojistaguarani.com.br, 1 lojix.com, 0 lojj.pt, 1 +lokace.eu, 1 lokan.id, 1 loket.nl, 1 lokinet.org, 1 @@ -89379,6 +89671,7 @@ lokomotivaplzen.cz, 1 lola.by, 1 lolacandy.com, 1 lolalacita.net, 1 +lolalohse.com, 1 lolaseuropeancafe.com, 1 lolbird.tk, 1 lolcats.cat, 1 @@ -89418,6 +89711,7 @@ lolifamily.js.org, 1 lolifamily.ml, 1 lolifamily.tk, 1 lolifox.cf, 1 +loliloli.moe, 1 loliloli.net, 1 loliloli.top, 1 lolinfo.ga, 1 @@ -89428,8 +89722,6 @@ lolis.stream, 1 lolis3.com, 1 lolitalechat.com, 1 lolivpn.com, 1 -lolkmal.myaddr.io, 1 -lolkmal.myaddr.tools, 1 lolkot.ru, 1 lollipopo69.net, 1 lollypop.tk, 1 @@ -89441,7 +89733,6 @@ lolnews.cf, 1 lolnews.ga, 1 lolnews.tk, 1 lolo17.com, 1 -lolroms.com, 1 lols.gg, 1 lolware.net, 1 lolyoureallyscannedthisqrcodegeniusthatssketchy.de, 1 @@ -89465,7 +89756,7 @@ lomuarredi.com, 1 lomza.tk, 1 lon-so.com, 1 lona.io, 1 -lonasdigital.com, 1 +lonasdigital.com, 0 lonavla.tk, 1 lonca.co, 1 lonchaney.com, 1 @@ -89487,12 +89778,14 @@ londonmoneyman.com, 1 londonnorthwesternrailway.co.uk, 1 londonpropertymatch.com, 1 londonschool.mx, 1 +londonseedcentre.co.uk, 1 londonsoccer.tk, 1 londontrivia.gq, 1 londontwpmi.gov, 1 londonukbasedvipcloseprotectionbodyguardservices.com, 1 londonvetspecialists.vet, 1 londonwomensclinic.com, 1 +lone-gunman.be, 1 lone-wolf.tk, 1 lonecesitope.com, 1 loneline.ss, 1 @@ -89507,7 +89800,13 @@ lonestarrott.com, 1 lonewolftech.ga, 1 long-journey.com, 1 long-stories-short.org, 1 +long0311.com, 1 +long0317.com, 1 long0318.com, 1 +long0355.com, 1 +long0398.com, 1 +long0536.com, 1 +long0538.com, 1 long0555.com, 1 long0556.com, 1 long0728.com, 1 @@ -89518,6 +89817,7 @@ long0897.com, 1 long0898.com, 1 long0976.com, 1 long0999.com, 1 +long100.vip, 1 long266.com, 1 long68.net, 0 long688.com, 0 @@ -89526,7 +89826,6 @@ longb.com.br, 1 longbeachms.gov, 1 longbeachroleplay.de, 1 longbridge.hk, 1 -longbushcottage.co.nz, 1 longchampgirls.tk, 1 longcountyga.gov, 1 longenyc.com, 1 @@ -89560,6 +89859,7 @@ longmeadowma.gov, 1 longmontnetworking.com, 1 longmontwaterheaters.com, 1 longpaddock.qld.gov.au, 1 +longportpd.org, 1 longstride.net, 1 longtermcare.gov, 1 longtermrentalsportugal.com, 1 @@ -89571,6 +89871,7 @@ lonleymoon.tk, 1 lonniec.com, 1 lonniemason.net, 1 lonokedistrictcourtar.gov, 1 +lonsee.de, 1 lonza.ch, 1 lonza.com, 1 lonzagroup.net, 1 @@ -89598,12 +89899,12 @@ loom.com, 1 loomi.tv, 1 loomis.center, 1 loonbedrijfdenboer.nl, 1 -loonbio.com, 1 +loonbedrijfwierda.nl, 1 loonindex.be, 1 loop.com, 0 loop.us, 1 loopback.kr, 1 -loopclubapp.com, 1 +loopbackanalytics.com, 1 loopcore.de, 1 loopgolf.co, 0 loophq.com, 1 @@ -89611,6 +89912,7 @@ loopingtag.eu, 1 loopingz.com, 1 loopkey.com.br, 0 loopool.tk, 1 +loopseque.com, 1 looseleafsecurity.com, 1 lootboy.com, 1 lootboy.de, 1 @@ -89643,10 +89945,10 @@ loqu8.com, 1 loquo.com, 1 loqyu.co, 1 lor.kharkov.ua, 1 -lora.bot, 1 loracheadle.com, 1 loraincountyohio.gov, 1 loraincountyrecorder.gov, 1 +lorasong.com, 1 loratadine10mg.gq, 1 lorbooks.tk, 1 lorcamadrid.tk, 1 @@ -89676,7 +89978,9 @@ lore.azurewebsites.net, 1 lore.website, 1 loredrop.com, 1 loreedeslandes.com, 1 +loremipsum.info, 1 lorena-salido.tk, 1 +lorenaandthetide.com, 1 lorenadumitrascu.ro, 1 lorengraff.net, 1 lorenstudioo.com, 1 @@ -89685,7 +89989,6 @@ lorenzgoossens.be, 1 lorenzocampagna.myqnapcloud.com, 1 lorenzodallaga.com, 1 lorenzodeangelis.tk, 1 -lorenzomassenz.com, 1 lorenzoprinci.com, 1 loreofthenorth.com, 1 loreofthenorth.net, 1 @@ -89769,6 +90072,7 @@ lost-illusions.tk, 1 lost-perdidos-hiatus.tk, 1 lost.tf, 1 lostandfound.mu, 1 +lostandfoundmember.com, 1 lostandfoundsoftware.com, 1 lostarkstats.com, 1 lostarq.com, 1 @@ -89777,7 +90081,7 @@ lostcork.com, 1 lostcosmonaut.cc, 1 lostfest.co.uk, 1 lostfield.tk, 1 -lostfilm.cx, 0 +lostfilm.cx, 1 lostfilm.tv, 1 lostgeek.de, 0 losthighway.tk, 1 @@ -89789,7 +90093,6 @@ lostinweb.eu, 0 lostluma.net, 1 lostproperty.org, 1 lostprophetschile.tk, 1 -lostrivergorge.com, 1 lostsandal.com, 1 lostserial.cf, 1 lostserver.com, 1 @@ -89814,23 +90117,25 @@ lotereiki.tk, 1 loteriasdominicana.com.do, 1 lothai.re, 1 lothiandisabilitysport.co.uk, 1 +lothiandomestics.co.uk, 1 lothlorien.ca, 0 lotioito.com.br, 1 lotl.ru, 1 lotn.mobi, 1 +lotnonline.com, 1 lotnonline.net, 1 lotnonline.nl, 1 loto-king.com, 1 lotoperu.com, 1 lotos-ag.ch, 1 lotrarts.com, 1 +lotro-wiki.com, 1 lotrsketch.com, 1 lotsynergy.com, 1 lottcarey.org, 1 lotteo.com, 1 lotterycodex.com, 1 lotteryking.net, 1 -lottie.rs, 1 lotto.com, 1 lotto.gt, 1 lotto.ht, 1 @@ -89838,6 +90143,7 @@ lottodatabase.com, 1 lottolive24.com, 1 lottologics.com, 1 lottolooting.com, 1 +lottomonks.com, 1 lottonigeria.com, 1 lottopark.com, 1 lottos.com.au, 1 @@ -89858,6 +90164,7 @@ loud-dragon.tk, 1 louderfaster.co.uk, 1 loudersent.ga, 1 loudgrowth.com, 1 +loudly.com, 1 loudmouth.tk, 1 loudontn911.gov, 1 loudouncountyva.gov, 1 @@ -89866,6 +90173,7 @@ louest.ch, 1 loueurmeublegestion.expert, 1 loughkeygreenway.ie, 1 louhiranta.fi, 1 +louhomeworkouts.com, 1 louisa.tk, 1 louisacounty.gov, 1 louisacountyia.gov, 1 @@ -89878,6 +90186,7 @@ louisemisellinteriors.co.uk, 1 louiserutkowski.tk, 1 louisianalifesciences.gov, 1 louisianamo.gov, 1 +louisianamusicfactory.com, 1 louisiananetzero.gov, 1 louisianarecoveryauthority.org, 1 louisianarural.gov, 1 @@ -89892,8 +90201,10 @@ louisvillene.gov, 1 louisvilleohio.gov, 1 louiza.tk, 1 loujaxx.net, 1 +loukas-stoltz.fr, 1 loukkos.ma, 1 loune.net, 1 +lounge.guide, 1 loungeballin.org, 1 loungecafe.net, 1 loungecafe.org, 1 @@ -89923,11 +90234,13 @@ love4taylor.xyz, 1 loveamber.me, 1 loveandloyalty.se, 1 loveasiangroup.com, 1 +lovebeingsexy.co.uk, 1 lovebigisland.com, 1 lovebirdhut.tk, 1 lovebo9.com, 1 lovebo9.net, 1 lovebombed.wtf, 1 +lovebooksforyou.com, 1 lovebusinesseastmidlands.com, 1 lovebusinessexpo.co.uk, 1 lovebusinessnetworking.co.uk, 1 @@ -89947,7 +90260,6 @@ loveholidays.com, 1 loveholidays.ie, 1 loveinabox.pt, 1 loveincmag.com, 1 -loveirishtours.com, 1 loveismore.pl, 0 loveismore.ru, 0 loveismore.sk, 0 @@ -89979,7 +90291,6 @@ lovenet.tk, 1 loveni.me, 1 lovenwishes.com, 1 loveplanets.tk, 1 -lovepolicy.com, 1 lover-bg.com, 1 lovereligion.tk, 1 loverepublic.ru, 1 @@ -89995,6 +90306,7 @@ lovesw.top, 1 lovetablecloths.co.uk, 1 lovetarot.jp, 1 lovethatmakeup.tk, 1 +lovetheprint.co.za, 1 lovetime.co.il, 1 lovetowork.tk, 1 loveuno.com, 1 @@ -90033,7 +90345,7 @@ lowerpricefinder.com, 1 lowerthetone.com, 1 lowesprotect.com, 1 lowlab.io, 1 -lowlandrp.com, 0 +lowlandrp.com, 1 lowlevelmusic.com, 1 lowmagnitude.com, 1 lowndes-al.gov, 1 @@ -90054,6 +90366,7 @@ loyd.gg, 1 loyisa.cn, 1 loyolahs.edu, 1 loyverse.town, 1 +lozanoimpresores.com, 1 lozhka-mernaya.tk, 1 lp-support.nl, 0 lp177.fr, 1 @@ -90074,6 +90387,7 @@ lplbullets.com, 1 lpm.london, 1 lpmkonji.cf, 1 lpnjobsite.com, 1 +lpnm.us, 1 lps.in.ua, 1 lpsales.ca, 1 lpsolutions.com, 1 @@ -90082,7 +90396,6 @@ lpt-nebreziny.eu, 1 lptami.gov, 1 lpva.com.au, 1 lqa.org.uk, 1 -lqaa.co.uk, 1 lqd.plus, 1 lqd.pp.ua, 1 lqhi.cn, 1 @@ -90093,6 +90406,7 @@ lr4.uk, 1 lra-cloud.de, 1 lra.mt, 1 lrbm.com, 1 +lrc.cn, 1 lrcr.ch, 0 lriese.ch, 1 lrn.com, 1 @@ -90108,6 +90422,7 @@ lrumeq.com, 1 lrv-grobbendonk.tk, 1 lrztp.org, 1 ls-alarm.de, 1 +lsa-international.com, 1 lsbk.ch, 1 lsbttiq.org, 1 lsc-dillingen.de, 1 @@ -90133,7 +90448,6 @@ lskgreengroup.cz, 1 lslbc.gov, 1 lsmodamodesta.com.br, 1 lspdonline.gq, 1 -lspl.pl, 1 lsquared.com, 1 lsrm.org, 1 lstma.com, 1 @@ -90148,10 +90462,8 @@ lt27.de, 1 lta-media.tv, 1 ltaake.com, 1 ltailshort.tk, 1 -ltb.chat, 1 ltba.org, 1 ltcfeds.com, 1 -ltcfeds.gov, 1 ltcwaterwijk.nl, 1 ltdev.im, 1 ltecode.com, 1 @@ -90173,7 +90485,7 @@ ltransferts.com, 1 ltrickett.com, 1 ltxhost.org, 1 lty.best, 1 -lty.name, 0 +lty.name, 1 lty.space, 1 ltycode.org, 1 lu.search.yahoo.com, 0 @@ -90189,7 +90501,6 @@ luathungson.vn, 1 lubar.me, 1 lubartow24.pl, 1 lubchemspecialties.com, 0 -lubenergy.com.ar, 1 lubosabo.tk, 1 lubot.net, 1 lubotodorov.com, 1 @@ -90199,7 +90510,6 @@ luc-nutrition.tk, 1 luc-oberson.ch, 0 luca-appeals.gov, 1 luca-steeb.com, 1 -lucaaltimare.it, 1 lucaconrads.de, 1 lucade.ddns.net, 0 lucafontana.net, 1 @@ -90208,12 +90518,13 @@ lucakrebs.de, 1 lucaplus.com, 1 lucarautti.com, 1 lucarelli.fr, 1 +lucas.pet, 1 lucasartsclassics.com, 1 lucasbasler.com, 1 lucasbastos.com, 1 lucasbergen.ca, 1 lucasbonomi.com, 0 -lucascantor.com, 0 +lucascantor.com, 1 lucascosta-ido.ml, 1 lucascountyohiovotes.gov, 1 lucasdamasceno.com, 1 @@ -90224,7 +90535,8 @@ lucasgymnastics.com, 0 lucasjquinn.com, 1 lucaslarson.net, 1 lucasmateus.ga, 1 -lucastefanelli.dk, 0 +lucastefanelli.dk, 1 +lucasvieira.fr, 0 lucciolachile.com, 1 luce.life, 1 lucentioluo.space, 1 @@ -90238,6 +90550,7 @@ luchshie-experty.top, 0 luchtspoor.nl, 1 lucia-art.cf, 1 lucia-riemer.de, 1 +luciara.mx, 1 lucid-light.de, 1 lucid-reality.ch, 1 lucidea.com, 1 @@ -90255,6 +90568,7 @@ luciferblog.tk, 1 luciferianism.tk, 1 lucille-thomas.fr, 1 lucillewillemsen.tk, 1 +lucio-perez.com, 1 luciobarcellona.it, 1 luciogelsi.com, 1 lucishere.cz, 1 @@ -90294,7 +90608,6 @@ lucorautopartes.com, 1 lucrar.pt, 1 lucschiltz.com, 0 luctam.com, 1 -lucy.bg, 1 lucy.sex, 1 lucychan.tk, 1 lucym.co.nz, 1 @@ -90318,7 +90631,7 @@ ludomo.de, 1 ludotech.tk, 1 ludovic-frank.fr, 0 ludovic-muller.fr, 1 -ludovicfernez.com, 0 +ludovicfernez.com, 1 ludum-polus.xyz, 1 ludum.pl, 1 ludunwayoo.com, 1 @@ -90326,6 +90639,7 @@ ludwig.im, 1 ludwiggrill.de, 1 ludwigjohnson.se, 1 ludwigpro.net, 1 +ludwigsburger-brauhaus.de, 1 luedeke-bremen.eu, 1 lueersen.homedns.org, 1 luehne.de, 1 @@ -90350,7 +90664,7 @@ lugros.tk, 1 lugui.in, 1 luhkultour.de, 1 lui.vn, 1 -luigipinedo.com, 1 +luinonotizie.it, 1 luis-portfolio.es, 1 luisa-birkner.de, 1 luisafernandapenuela.com, 1 @@ -90360,7 +90674,6 @@ luisbacher.tk, 1 luisfreire.ml, 1 luisillo.tk, 1 luisjosesaldana.com, 1 -luismandiola.com, 1 luismiguelcolombia.tk, 1 luisnavarrosl.tk, 1 luisnet.tk, 1 @@ -90405,7 +90718,6 @@ lukaszuk.net, 1 lukaszuk.pl, 1 lukaszwojcik.com, 1 lukaszwojcik.net, 1 -lukaszwojcik.photo, 1 luke.id, 1 luke6887.me, 1 lukeandjesse.wedding, 1 @@ -90416,6 +90728,9 @@ lukem.eu, 1 lukem.net, 1 lukeplant.me.uk, 1 luker.org, 1 +lukersallamericanstorage.com, 1 +lukersstorage.com, 1 +lukerstorage.com, 1 lukertech.net, 1 lukesbouncycastlehire.com, 1 lukestert.com, 0 @@ -90437,16 +90752,18 @@ lulka.net, 1 lullugun.net, 1 luls.tk, 1 lulu960.xyz, 1 -lulugold.ba, 1 +luludapomerania.com, 1 luluwoldtravel.com, 1 lumaesthetic.co.uk, 1 lumafestival.com, 1 +lumaistore.com.br, 1 lumalux.it, 1 lumapartners.com, 1 lumapr.com, 1 lumasearch.com, 1 lumbardhi.tk, 1 lumbercartel.ca, 1 +lumberg-automationusa.com, 1 lumberjackman.tk, 1 lumbre-encendedores.com, 1 lumchan.tk, 1 @@ -90456,7 +90773,7 @@ lumentell.us, 1 lumer.tech, 1 lumi.com, 1 lumi.pw, 1 -lumidatasolutions.com, 1 +lumien.net, 1 lumieredesoy.com, 1 luminabh.com.br, 1 luminal-creation.com, 1 @@ -90467,11 +90784,11 @@ lumindigital.com, 0 lumineled.se, 1 lumingze.eu.org, 0 luminia-informatique.fr, 1 -lumintia.fr, 1 lumitop.com, 1 lumixtar.com, 1 lummi-nsn.gov, 1 lummihealth.gov, 1 +lumminary.com, 1 lumoa.me, 1 lumoria.eu, 1 lumos.gallery, 1 @@ -90490,8 +90807,6 @@ luna.gl, 1 lunaazulestudio.com, 1 lunaburner.ml, 1 lunaclan.tk, 1 -lunaclo.eu, 1 -lunaclo.nl, 1 lunacraft.ga, 1 lunadea.tk, 1 lunagrill.com, 1 @@ -90534,13 +90849,11 @@ lunextd.com, 1 lungenexperte.at, 1 lungta.pro, 1 lunguflorin.ro, 1 -lungustefan.com, 1 lungustefan.ro, 1 luniak.net, 1 lunight.ml, 1 lunite.net, 1 lunite.tk, 1 -luniversdelacapsule.fr, 1 lunivertdelyne.fr, 1 lunk.it, 1 lunlixiaozhan.icu, 1 @@ -90588,7 +90901,9 @@ luppa.loan, 1 lupriflex.com, 1 lupusla.org, 1 luqmanacademy.com, 1 +luqsus.pl, 1 luripump.se, 1 +lurishop.com.br, 1 lurkmirror.ml, 1 lusakatimes.com, 1 lusc.ch, 1 @@ -90602,7 +90917,6 @@ lusnic.org, 1 luso-livros.net, 1 lusoft.cz, 1 lusosider.pt, 1 -lusrodri.me, 1 lusson.fr, 0 lust.works, 1 lustanslakejer.tk, 1 @@ -90636,10 +90950,8 @@ luvare.com, 1 luvdress.com, 1 luve-gm.ch, 1 luvey.com, 1 -luviantrade.com.ec, 1 luvmihome.com, 1 luvscent.com, 1 -luwasuite.co.uk, 1 lux-house.tk, 1 lux-optica.pl, 1 luxanos.com, 1 @@ -90664,17 +90976,16 @@ luxhair.com.ua, 1 luxhome.tk, 1 luxinfine.su, 1 luxmedprotez.com, 0 -luxmerchants.com, 1 luxoestates.com, 1 luxonengineering.com, 1 luxonmx.com, 1 +luxory.ro, 1 luxosemimos.com.br, 1 luxoticlingerieandswimwear.com, 0 luxplay.com.tw, 1 luxsat.tk, 1 luxsci.com, 1 luxstil.ga, 1 -luxtracking.com, 1 luxtransfer.am, 1 luxulyanvalley.co.uk, 1 luxur.is, 1 @@ -90700,6 +91011,7 @@ luxuryspeed.tk, 1 luxurystays.in, 1 luxurythatlasts.com, 1 luxuryweddingsindonesia.com, 1 +luxuryweeks.com, 1 luxushair.com, 1 luxusnataliri.cz, 1 luxusnivoucher.cz, 1 @@ -90716,9 +91028,12 @@ luzica.tk, 1 luziekurth.com, 1 luzonic.do, 1 luzsaude.pt, 1 +lv.com, 1 lv.lk, 1 lv.search.yahoo.com, 0 lv0.it, 0 +lv5.top, 1 +lvadviser.com, 1 lvcservicesplus.com.au, 0 lvcshu.com, 1 lvdgroup-innov8.com, 1 @@ -90756,15 +91071,14 @@ lxd.tw, 1 lxg.de, 1 lxiii.eu, 1 lxiv.eu, 1 +lxn.re, 1 lxnchan.cn, 1 lxx4380.com, 1 ly-nux.fr, 1 -ly3s.me, 1 lyam.fr, 1 lyanaprintable.com, 1 lyap-lyandiya.ga, 1 lyax.be, 1 -lybelul.com, 1 lycaknight.de, 1 lycaonsec.com, 1 lyceum.lk, 1 @@ -90782,6 +91096,7 @@ lyftservice.se, 1 lygus.lt, 1 lyklaskipti.is, 1 lyklasmidur.is, 1 +lykope.com, 1 lykos.ai, 1 lyla-pressing.com, 1 lymecraft.com, 1 @@ -90800,6 +91115,8 @@ lyngvaer.no, 1 lynho.com.br, 1 lynk.hopto.org, 1 lynkmi.com, 1 +lynkr.org, 1 +lynkrtech.com, 1 lynnco.com, 1 lynnejeancleaning.com, 1 lynnesbian.space, 1 @@ -90810,10 +91127,11 @@ lynntownshipmi.gov, 1 lynnvartan.com, 1 lynred.com, 1 lynt.nl, 1 +lynth.io, 1 +lynwilliams.com, 1 lynwoodca.gov, 1 lynx-webservice.com, 0 lynx.com.au, 1 -lynx.swiss, 1 lynxriskmanager.com, 1 lyodiet.it, 1 lyon-explorateurs.fr, 1 @@ -90821,13 +91139,11 @@ lyon-interactive.com, 1 lyon-synergie.com, 1 lyonelkaufmann.ch, 0 lyonliving.com, 1 -lyonrestoration.com, 1 lyonsbytes.com, 1 lyontwp-higginsmi.gov, 1 lyoproform.fr, 1 lyradhealth.com, 0 lyrae.de, 1 -lyram2m.com.br, 1 lyrateatro.it, 1 lyrex.net, 1 lyric.co.uk, 1 @@ -90838,6 +91154,7 @@ lyricsforyou.gq, 1 lyricsupdater.tk, 1 lyriksidan.ga, 1 lyrique.ch, 1 +lys-universal.com, 1 lys.ch, 0 lysander-hans.com, 1 lyscarrental.com, 1 @@ -90847,8 +91164,6 @@ lysergion.com, 1 lysethcreation.com, 1 lyst.co.uk, 1 lyteclinic.com, 0 -lytho.com, 1 -lytkins.ru, 1 lyubov-sovmestimost.cf, 1 lyuda.tk, 1 lyukaacom.ru, 1 @@ -90869,7 +91184,6 @@ lzwwebsite.tk, 1 lzzr.me, 1 m-16.ml, 1 m-22.com, 1 -m-a-m.photo, 1 m-ast.de, 1 m-bank.mn, 1 m-beshr.tk, 1 @@ -90885,9 +91199,9 @@ m-fashion.com.ua, 1 m-gaming.tk, 1 m-generator.com, 1 m-h-b.fr, 1 +m-hydravlika.com.ua, 1 m-i.si, 1 m-idea.jp, 1 -m-ini.me, 1 m-jkelleystudio.com, 1 m-mail.fr, 1 m-matsuo.co.jp, 1 @@ -90898,13 +91212,10 @@ m-office.pl, 1 m-partners.biz, 1 m-r-team.de, 1 m-ses.fr, 1 -m-strana.com.ua, 1 m-team.cc, 1 m-tower.nl, 1 m-warrior.tk, 1 -m-wikipedia.org, 1 m.ac, 1 -m.bo, 1 m.facebook.com, 1 m.mail.ru, 1 m.me, 1 @@ -90921,6 +91232,7 @@ m1r2.com, 1 m23cal.eu, 1 m24o.net, 1 m2designer.com.br, 1 +m2dleadership.com, 1 m2epro.com, 0 m2i-api.com, 1 m2icondb.com, 1 @@ -90928,15 +91240,15 @@ m2il.co, 1 m2international.com, 1 m2jest1c.ml, 1 m2os.com, 1 -m2t.com, 1 m2tm.fr, 1 m3-software.com, 1 m36533.com, 1 +m3eng.co.uk, 1 m3rck.ch, 1 +m3u8play.com, 1 m42-gmbh.de, 1 m426.ch, 1 m4g.ru, 1 -m4ma.com, 1 m4rcus.de, 1 m4rkos.de, 1 m5197.co, 1 @@ -90949,7 +91261,6 @@ m7info.com, 1 m7kni.com, 1 m7mzo.com, 1 m7worknow.com, 1 -m9.is, 1 m9297.co, 1 m9728.co, 1 ma-bimbo.com, 1 @@ -90982,11 +91293,8 @@ maaret.de, 1 maarivpn.com, 1 maarja.edu.ee, 1 maartenderaedemaeker.be, 1 -maasdonk.nl, 1 -maaspoortsportsenevents.nl, 1 maasstaddinerexpres.nl, 1 maat.pt, 1 -maatimpact.com, 1 maatt.ch, 1 maatt.fr, 1 maatwerkopruimcoaching.nl, 1 @@ -90997,7 +91305,6 @@ mab.com, 1 maba.tk, 1 mabankonline.com, 1 mabasketdesecurite.fr, 1 -mabeaufort.com, 1 mabelmartinez.es, 1 mabex-cybercore.de, 1 mabexcybercore.de, 1 @@ -91006,7 +91313,6 @@ mableton.gov, 1 mabnn.org, 1 mabnn.ru, 1 mabnn.spb.ru, 1 -mabookhay.com, 1 mabra.com, 1 mabrav.ro, 1 mabusalah.tk, 1 @@ -91017,6 +91323,7 @@ macalha.com, 1 macallan-tls.com, 1 macallantls.com, 1 macangus-wainwright.com, 1 +macaos.com, 1 macapflag.com, 1 macaque.io, 0 macarenagomezfan.tk, 1 @@ -91035,6 +91342,7 @@ maccharlesindia.com, 1 macdj.tk, 1 macdn.net, 1 macdonaldcody.com, 1 +macdonaldplasticsurgery.ca, 1 mace.au, 1 macedonian-hotels.com.mk, 1 macedonian-hotels.mk, 1 @@ -91046,6 +91354,7 @@ macgeneral.de, 1 macgenius.com, 1 mach-it.com.uy, 1 mach-politik.ch, 1 +macha.cloud, 1 machaaltricks.tk, 1 machbach.com, 1 machbach.net, 0 @@ -91072,6 +91381,7 @@ machwasgeil.es, 1 macil.tech, 1 macinyasha.net, 1 macioszektv.eu, 1 +mack.im, 1 mack.space, 1 mackanz.tk, 1 mackenziedatastream.ca, 1 @@ -91097,9 +91407,8 @@ macompta.fr, 1 macon-newsroom.com, 1 maconcountymo.gov, 1 maconnerie-dcs.ch, 1 -maconqc.com, 0 +maconqc.com, 1 macontec.com, 1 -macosdb.com, 1 macosx86.ml, 1 macoupincountypdil.gov, 1 macoupinvotes.gov, 1 @@ -91109,6 +91418,7 @@ macpress.com.br, 1 macquariesolar.com, 1 macreosolutions.com, 1 macroad.com, 1 +macroban.com, 1 macrobills.com, 1 macroeng.tk, 1 macrofab.com, 1 @@ -91127,7 +91437,9 @@ macsen.cymru, 1 macsonuclari.com.tr, 1 macsonuclari.mobi, 1 macssupersonicwash.com, 1 +macstore.pe, 0 macvcure.com, 1 +macvidcards.eu, 1 mad-eye.com, 0 mad.es, 1 mad4marketing.com, 1 @@ -91135,6 +91447,7 @@ madae.nl, 1 madagascarbycar.com, 1 madamasr.com, 1 madamcougar.com, 1 +madame-kosmetikstudio.de, 1 madameblueimages.com, 1 madamemeringue.nl, 1 madasocialmedia.org, 1 @@ -91151,6 +91464,7 @@ maddin.ga, 1 made-to-usb.com, 1 made.md, 1 made2coach.com, 1 +madebydami.com, 1 madebyesmel.com, 1 madebyhand.art, 1 madebyshore.com, 0 @@ -91191,8 +91505,9 @@ madge.tk, 1 madhawaweb.tk, 1 madhyrecords.com, 1 madian.tk, 1 +madil-thob.com, 1 madinahmarket.com, 1 -madinetmasr.estate, 1 +madinatech360.com, 1 madinina.tk, 1 madison.com, 1 madisoncountyalema.gov, 1 @@ -91217,6 +91532,7 @@ madmasters.tk, 1 madmaxstore.it, 1 madmbrasil.com.br, 1 madmoizelle.com, 1 +madnetwork.org, 1 madobe.tk, 1 madokami.net, 1 madokami.pw, 1 @@ -91297,7 +91613,6 @@ maestrocase.it, 1 maestrochalet.fr, 1 maestroholzbau.de, 1 maestrotuinhuizen.nl, 1 -maestrowu.com, 1 maeva-beauty.com, 1 maeva-beauty.fr, 1 maeva.com, 1 @@ -91316,7 +91631,6 @@ mafiatown.pl, 1 mafondue.ch, 0 mafworld.com, 1 mafy.fi, 1 -magachou.com, 1 magadan-news.net, 1 magadan.ga, 1 magadan.gq, 1 @@ -91336,6 +91650,7 @@ magazinecards.ga, 1 magazinedabeleza.net, 1 magazinedotreino.com.br, 1 magazinefeminina.com.br, 1 +magazinhaberajansi.com, 1 magazinhaberi.tk, 1 magazone.cf, 1 magazone.gq, 1 @@ -91355,19 +91670,21 @@ magehouse.co.uk, 1 magel.io, 1 magellan-met.ru, 1 magellan.ai, 1 +magenbrot.net, 0 magenda.sk, 1 magendarmbeschwerden-koblenz.de, 1 magenkompass.de, 0 magentacares.com, 1 magentazorg.nl, 1 +magento-ecommerce.co.za, 0 magento-ecommerce.it, 1 -magento2.hu, 1 +magentodevelopment.co.uk, 1 magentrix.com, 0 magepro.fr, 1 mager.org, 1 magesaigon.com, 1 magescobd.com, 1 -magesy.blog, 1 +magesy.blog, 0 magesypro.com, 1 magewell.nl, 1 maggianos.com, 1 @@ -91386,6 +91703,7 @@ magic-cards.info, 1 magic-cheerleading.tk, 1 magic-fly.de, 1 magic-network.tk, 1 +magic5.ro, 1 magical-secrets.com, 0 magicalcodewit.ch, 1 magicalvegas.it, 1 @@ -91395,7 +91713,6 @@ magicball.co, 1 magicball.ga, 1 magicbar.tk, 1 magicbeanschool.com, 1 -magicbox-cleaning.co.uk, 1 magicboxint.com, 1 magicbroccoli.de, 0 magiccardbuyer.eu, 1 @@ -91406,6 +91723,7 @@ magicflora.tk, 1 magicgrants.org, 1 magiciansofchaos.tk, 1 magicjudges.org, 1 +magickery.com, 1 magickmale.de, 1 magiclen.org, 1 magicline.com, 1 @@ -91443,7 +91761,10 @@ magnamus.it, 1 magnatronic.com.br, 1 magneetfolie.nl, 1 magnes.priv.pl, 1 +magnesy-neodymowe.com.pl, 1 magnesy-neodymowe.pl, 1 +magnesy.de, 1 +magnesy.net.pl, 1 magnesy.priv.pl, 1 magnet-schultz.com, 1 magnet.pub, 1 @@ -91472,7 +91793,6 @@ magnettracker.com, 1 magnetvpn.com, 1 magniezetassocies.fr, 1 magnific.tk, 1 -magnifiscent.com, 1 magniflood.com, 1 magnisgroup.eu, 1 magnit-akciya.tk, 1 @@ -91485,12 +91805,12 @@ magnoliadoulas.com, 1 magnoliaglobal.com, 1 magnoliaicecream.com.sg, 1 magnoliaicecreamth.com, 1 -magnoliamilk.com.sg, 1 magnoliawi.gov, 1 magnoric.com, 1 magnosautos.ng, 1 magnumsol.ru, 1 magnunbaterias.com.br, 1 +magnusdemant.ch, 1 magnusfulton.com, 1 magnusj.net, 1 magnuspro.cz, 1 @@ -91504,14 +91824,13 @@ magsdata.com, 1 magu.kz, 1 maguire.tk, 1 maguroalmare.com.br, 1 -maguspace.com, 1 +maguspace.com, 0 magutah.gov, 1 maguy-energies.com, 1 magwin.co.uk, 1 magyarepitok.hu, 1 mah-nig.ga, 1 mah24.com, 1 -maha.gov, 1 mahabharat.tk, 1 mahadhanconnect.com, 1 mahadihasan.cf, 1 @@ -91529,11 +91848,13 @@ mahaskacountyia.gov, 1 mahatenders.gov.in, 1 mahatmarice.com, 1 mahatmayoga.org, 1 +mahavirmandirpatna.org, 1 mahawi.sk, 1 mahayana.tk, 1 mahbobmax.tk, 1 mahboobi.tk, 1 mahdafweb.tk, 1 +mahdiyar.id.ir, 1 mahealthsurveys.gov, 1 maherhost.uk, 1 maheshbabuphotography.tk, 1 @@ -91557,6 +91878,7 @@ mahnwache-luetzerath.org, 1 mahorka.tk, 1 mahou-sanmiguel.com, 1 mahtabichat.ml, 1 +mahurivaishya.co.in, 1 mahurivaishya.com, 1 mai.ru, 1 maiaimobiliare.ro, 1 @@ -91574,9 +91896,10 @@ maidinaustralia.com, 1 maidoty.net, 1 maie.ro, 1 maiebanatulfruncea.com, 1 +maierteamre.com, 1 maigesellschaft-lammersdorf.de, 1 maijia800.com, 1 -maikendener.com, 0 +maikendener.com, 1 maikhuong.tk, 1 maikoloc.com, 1 mail-de.jp, 1 @@ -91605,6 +91928,7 @@ mail365.fi, 1 mail4you.in, 1 mailbase.cf, 1 mailbot.sh, 1 +mailbox.mg, 1 mailbox.org, 1 mailboy.ml, 1 mailboy.tk, 1 @@ -91623,7 +91947,6 @@ mailexpresso.tk, 1 mailexx.ga, 1 mailexx.gq, 1 mailexx.ml, 1 -mailfaq.de, 1 mailfence.com, 1 mailflank.com, 0 mailflex.my.id, 1 @@ -91692,8 +92015,9 @@ mainstream-tech.com, 1 mainstreetauto.com, 1 maintainyourwebsite.help, 1 maintenance-traceur-hp.fr, 1 +maintenancebtp.com, 1 mainzbiomed.com, 1 -mainzelmaennchen.net, 0 +mainzelmaennchen.net, 1 mainzer-allerlei.de, 1 maioresemelhores.com, 1 mair.best, 1 @@ -91734,7 +92058,6 @@ maisonsdenfrance-cls.fr, 1 maisonstpaul.fr, 1 maisonwow.fr, 1 maisproduzida.com.br, 1 -maisterwerk.ai, 1 maitemerino.net, 1 maitheme.com, 1 maiti.info, 1 @@ -91751,18 +92074,20 @@ maizuru-ongaku-kan.com, 1 majahesjedal.no, 1 majahoidja.ee, 1 majalahka.com, 1 +majalahponsel.org, 1 majalmirasol.com, 1 majameer.com, 1 +majasballites.lv, 1 majavucic.com, 1 majelisriyadhah.com, 1 majemedia.com, 1 majestas.tk, 1 +majestic.games, 0 majesticpride.in, 1 majestio.tk, 1 majewskiplumbing.com, 1 majhang.com, 1 majid.info, 1 -majid.org, 1 majisign.co.uk, 1 majk.me, 1 majkassab.com, 1 @@ -91780,12 +92105,9 @@ majstorov.rs, 1 majtkomat.pl, 1 makaleci.com, 1 makanj.tk, 1 -makar.rzeszow.pl, 1 -makar24.pl, 1 makariza.com.co, 1 makasetesan.com, 1 makatala.com, 1 -makca.co, 1 make-a-difference-daily.com, 1 make-my-link-longer.ml, 1 make-tatsuta.co.jp, 0 @@ -91794,6 +92116,7 @@ make50aday.tk, 1 makeacrowd.eu, 1 makeagif.com, 1 makeaoffice.nl, 1 +makecar.com.ua, 1 makechanges.com.au, 1 makecheez.com, 1 makecity.cz, 1 @@ -91802,13 +92125,11 @@ makedonija.net.mk, 1 makeevkanews.ru, 1 makeit-so.de, 0 makeitpopadvertising.com, 1 -makeitredi.com, 1 makeitright.ca, 1 makeitshort.ml, 1 makeitsimple.pt, 1 makejustice.work, 1 makejusticework.org.uk, 1 -makeleap.io, 1 makelindazi.com, 1 makellos-kosmetik.de, 1 makelpunt.nl, 1 @@ -91835,6 +92156,7 @@ makerspace-gt.de, 1 makertown.jp, 1 makesenseofdata.co.uk, 1 maketheconnection.net, 1 +maketodiet.com, 1 makeupevelinua.cf, 1 makeupevelinua.ga, 1 makeupillusion.com, 1 @@ -91848,6 +92170,7 @@ makewebbetter.com, 1 makhmudov.net, 1 makhzan.org, 1 maki-chan.de, 1 +maki-it.de, 1 maki.cafe, 1 makilingchallenge.tk, 1 making-it.nl, 1 @@ -91867,6 +92190,7 @@ makomako.tk, 1 makonet.com.au, 1 makos.jp, 1 makowitz.cz, 1 +makromedikal.com.tr, 1 maksa.ga, 1 maksima.kh.ua, 1 maksimmrvica.tk, 1 @@ -91888,12 +92212,13 @@ malabarismo.tk, 1 malachiteauth.com, 1 maladie-autoimmune.fr, 1 malafidezoeker.nl, 1 +malagabaterias.com, 1 malagarental.com, 1 +malagarental.es, 1 malahov.tk, 1 malakye.com, 1 malami.gr, 1 -malamin.org, 1 -malamujercomunicacion.com, 0 +malamujercomunicacion.com, 1 malamutedoalasca.com.br, 1 malardalenvvs.se, 1 malariaadvice.gq, 1 @@ -91907,6 +92232,7 @@ malavirgen.tk, 1 malayalamtalkies.tk, 1 malaysia.cf, 1 malaysia.search.yahoo.com, 0 +malaysiabrands.com.my, 1 malaysianews.ga, 1 malaysianews.gq, 1 malaysianews.ml, 1 @@ -91936,6 +92262,7 @@ malego.be, 1 malekah.info, 1 malekperiodontics.com, 1 malenyflorist.com.au, 1 +maler-secret.ru, 1 malermeister-kessler.de, 1 malerponge.de, 1 malesoowki.blog, 1 @@ -91963,6 +92290,7 @@ malik.my.id, 1 malik.web.id, 1 malikcomputers.tk, 1 malikdeenarislamicacademy.tk, 1 +malikmobile.com, 1 malikussa.id, 1 malikussaid.com, 1 malikussaid.my.id, 1 @@ -91994,7 +92322,6 @@ malletsheetmetal.com, 0 mallgastronomico.com.ar, 1 mallhabana.com, 1 mallonline.com.br, 1 -mallorca-csc.com, 1 mallorca.tk, 1 mallorca2024.com, 1 mallpass.ga, 1 @@ -92009,8 +92336,8 @@ malphisruul.de, 1 malscan.com, 0 malsignature.com, 1 malta-firma.com, 1 +maltaphotographyacademy.com, 1 maltarugs.com, 1 -maltasgarage.com, 1 maltasite.tk, 1 maltaultrastifo.tk, 1 malte.gg, 1 @@ -92023,9 +92350,9 @@ malware.watch, 1 malwareincidentresponse.com, 1 malwareinvestigator.gov, 1 malwaretips.com, 1 +malwarewise.com, 1 malwarez.xyz, 1 malworld.me, 1 -malynovskyi.com, 1 malypiesekzuzi.pl, 1 mamabatataya.com, 1 mamabearbabywear.com, 1 @@ -92045,6 +92372,7 @@ mamaruga.com, 1 mamasday.org, 1 mamasguiderecipes.com, 1 mamasorganizedchaos.com, 1 +mamastyle.store, 0 mamaxi.org, 1 mamaznaet.ml, 1 mamazzoop.com, 1 @@ -92063,7 +92391,6 @@ mammabelly.com.br, 1 mammaklader.tk, 1 mammal-taxonomy.tk, 1 mammals.net, 1 -mammam.vn, 1 mammooc.org, 1 mammothimaging.com, 1 mammothlakesmls.net, 1 @@ -92076,19 +92403,23 @@ mamontov.tk, 1 mamoris-net.jp, 1 mamot.fr, 1 mamradost.sk, 1 +mamsds.com, 1 mamtapark.tk, 1 mamuko.nl, 1 mamunlyric.tk, 1 mamy-blue.fr, 1 +man-man.nl, 0 man-stuff.co.uk, 1 +man3s.jp, 0 mana.ee, 1 mana.wiki, 1 manab-it.com, 1 -manabi.international, 1 manach.net, 1 manaenergija.lv, 1 manage.cm, 1 manage.com, 0 +manageairlinesbooking.com, 1 +managed-it.africa, 1 managed-it.co.za, 1 managed-service-provider.co.uk, 1 managededv.ch, 1 @@ -92100,9 +92431,9 @@ managedwphosting.nl, 0 managefile.tk, 1 managefuhui.com, 1 management-companie.ro, 1 +management-constructii.ro, 1 managementboek.nl, 1 managementforstartups.com, 0 -managemyleads.io, 1 manageprefs.com, 1 managment.io, 1 manalu.cz, 1 @@ -92118,6 +92449,7 @@ manawill.jp, 1 manawithtea.com, 1 manbetx1998.live, 1 manboy.tk, 1 +mancaverevolution.com, 1 manchester.enf.br, 1 manchestermn.gov, 1 manchestermoneyman.com, 1 @@ -92135,6 +92467,7 @@ mandelaeffect.tk, 1 manderstam.com, 1 mandh.com, 1 mandiblackburnphoto.com, 1 +mandic.rs, 1 mandmphotographie.com, 1 mandospersonalizados.es, 1 mandourlaw.com, 1 @@ -92174,6 +92507,7 @@ mangadex.org, 1 mangaesp.tk, 1 mangafreak.tk, 1 mangagaga.tk, 1 +mangahigh.com, 1 manganimefan.tk, 1 mangareactor.tk, 1 mangas.eu.org, 1 @@ -92197,14 +92531,17 @@ manhassetparkdistrictny.gov, 1 manhattan.at, 1 manhattan.institute, 1 manhattanchoralensemble.org, 1 +manhattanda.org, 1 manhattandermatologistsnyc.com, 1 manhattanks.gov, 1 manhuagui.com, 1 +manhwasco.net, 1 mani.tw, 1 mania.africa, 1 maniacoland.com, 1 maniadicane.com.br, 0 maniainc.com, 1 +maniaiti.nz, 1 manial4d2.ml, 1 maniazul.tk, 1 manicbouncycastles.co.uk, 1 @@ -92215,20 +92552,23 @@ manicuradegel.es, 1 manif-est.info, 1 manifest.ly, 1 manikinuk.tk, 1 -manikyan.com, 1 manilacrawl.com, 1 manilarecruitment.com, 1 manilatoday.net, 1 manimalosteo.com, 1 manimatter.ch, 1 +maninternational.pro, 1 maniorpedi.com, 1 maniosglass.gr, 1 +manipil.ch, 0 +manipurmatka.net, 1 manisahaberleri.tk, 1 +manitaggarwal.com, 0 manitasavila.com, 1 manitbd.com, 0 manitcloud.com, 1 maniththakur.com, 1 -manito.kr, 0 +manito.kr, 1 manitoba.ca, 1 manitoulinairport.ca, 1 manitoulinairport.com, 1 @@ -92237,11 +92577,13 @@ manitoulinglobalforwarding.co, 1 manitoulinglobalforwarding.com, 1 manitoulinglobalforwarding.mx, 1 manitoulingolf.com, 1 +manitoulingroup.com, 1 manitoulinheavyhaul.ca, 1 manitoulinheavyhaul.com, 1 manitoulinlogistics.ca, 1 manitoulintransport.ca, 1 manitoulintransport.co, 1 +manitoulintransport.com, 1 manitoulintransport.info, 1 manitoulintransport.net, 1 manitoulinusedequipment.ca, 1 @@ -92252,6 +92594,8 @@ manitowoccountywi.gov, 1 manitowocwi.gov, 1 manja-und-martin.de, 1 manjalcouture.com, 1 +manjaro.ru, 0 +manju.org.uk, 1 mankato-mn.gov, 1 mankatomn.gov, 1 mankier.com, 1 @@ -92275,6 +92619,7 @@ manoa.ar, 1 manobankas.lt, 1 manoek.dynu.net, 1 manofmany.com, 1 +manofmanythings.com, 1 manogara.tk, 1 manoha-proservices.fr, 1 manoila.co.uk, 0 @@ -92282,13 +92627,14 @@ manoirdecontres.com, 1 manojsharan.me, 1 manolitodarts.tk, 1 manologaribay.tk, 1 +manopaskola.lt, 1 manorhousecapital.com, 1 manoro.de, 1 manortx.gov, 1 +manova.cz, 1 manowarus.com, 1 manporn.xxx, 1 manpro.systems, 1 -manprojects.co.uk, 1 mansage.com, 1 mansarda-life.net, 1 mansdell.net, 1 @@ -92300,7 +92646,7 @@ mansionflip.com, 1 manski.net, 1 mansle.fr, 1 mansoorkhan.tk, 1 -mansora.io, 0 +mansora.io, 1 mansora.net, 1 mansurov.tk, 1 mantachiepharmacy.com, 1 @@ -92313,6 +92659,7 @@ mantenimiento-zaragoza.com, 1 mantenimientodeinstalacioneselectricas.es, 1 mantenimientoimpresoras.com, 1 mantenimientosenjardineriaypiscinasveracruz.com, 1 +mantenimientoweb.io, 1 mantex.ml, 1 manti.by, 1 manticore-projects.com, 1 @@ -92324,7 +92671,7 @@ manu.quebec, 1 manual-pdf.com, 1 manual-user-guide.com, 1 manualcert.ie, 1 -manualeusoemanutenzione.com, 1 +manualdousuario.net, 0 manualowl.com, 1 manualredeye.com, 1 manualscollection.com, 1 @@ -92407,7 +92754,6 @@ map.fund, 1 map4erfurt.de, 1 map4jena.de, 1 mapa-airsoft-akci.cz, 1 -mapa1.com, 1 mapadados.com, 1 mapadoacolhimento.org, 1 mapailytics.com, 1 @@ -92417,7 +92763,7 @@ mapblender.com, 1 mapchange.org, 1 mapduce.com, 1 mapdump.com, 1 -mapgear.nl, 0 +mapgear.nl, 1 mapillary.com, 1 maplebgm.cc, 1 maplegrove.cf, 1 @@ -92434,7 +92780,6 @@ mapletonmn.gov, 1 maplevalleytwpmi.gov, 1 maplewood.tk, 1 maplewoodnj.gov, 1 -mapmatix.com, 1 mappinandwebb.com, 1 mappingspaceperu.com, 1 maprao.xyz, 1 @@ -92445,11 +92790,12 @@ mapsly.com, 1 mapstack.org, 1 maptician.com, 1 mapuut.net, 1 -mapy.com, 1 maqcampo.com.br, 1 maqnelson.com.br, 1 maqnelsonagricola.com.br, 1 +maqnelsondrones.com.br, 1 maqnelsonempreendimentos.com.br, 1 +maqnelsonirrigacao.com.br, 1 maqnelsonseguros.com.br, 1 maqs.tk, 1 maquena.org, 1 @@ -92463,6 +92809,7 @@ mar-eco.no, 1 mar-zyg.pl, 1 mar.pt, 1 marabook.fr, 1 +marabumadrid.com, 1 maracarlinicourses.com, 1 maracit.tk, 1 maraichere-gourmande.org, 1 @@ -92479,7 +92826,7 @@ marasma.tk, 1 marathoncitywi.gov, 1 marathons.tk, 1 maratonyayincilik.com, 1 -maratrek.com, 1 +marats.id.lv, 1 marauderos.tk, 1 marazul.tk, 1 marbas.com.tr, 1 @@ -92495,13 +92842,13 @@ marblenexus.de, 1 marbogardenlidkoping.se, 1 marbree.eu, 1 marbriers4.ch, 1 -marburg-frieden.de, 1 marc-beninca.fr, 1 marc-hammer.de, 0 marc-hoffrichter.de, 1 marc-schlagenhauf.de, 0 marc.info, 1 marcaixala.me, 1 +marcamor.com, 1 marcapollo.ml, 1 marcbarclay.net, 1 marcbarclay.org, 1 @@ -92509,7 +92856,6 @@ marcbeije.com, 1 marcberndtgen.de, 1 marcdietschi.com, 1 marcel-preuss.de, 1 -marcel.info.pl, 1 marcelabarrozo.tk, 1 marcelheemels.org, 1 marcelhencke.de, 1 @@ -92541,6 +92887,8 @@ marchand.net.pl, 1 marchellenevers.tk, 1 marchesini.com, 1 marchesini.com.ua, 1 +marchetta.me, 1 +marchetta.tech, 1 marchhappy.tech, 0 marchinghatters.tk, 1 marchingnorth.com, 1 @@ -92548,15 +92896,14 @@ marchoffrichter.de, 1 marchouben.nl, 1 marchqualitymeats.com, 1 marchukov.com, 1 -marcil-lavallee.ca, 1 marcillacetfils.fr, 1 marcinkurek.online, 1 -marcipanovedorty.cz, 1 marclange.net, 1 marco-burmeister.de, 1 marco-hegenberg.net, 1 marco-reitmeier.de, 1 marco-s.net, 1 +marco-stankowitz.de, 1 marco-ziesing.de, 1 marcoaurelio.tk, 1 marcocerulliconsulting.com, 1 @@ -92568,6 +92915,7 @@ marcokuoni.ch, 1 marcolattanzio.tk, 1 marcolux.lu, 1 marcomawards.com, 1 +marcomediacion.com, 1 marcopiottante.tk, 1 marcoreitmeier.de, 1 marcositaliandeli.co.uk, 0 @@ -92583,7 +92931,6 @@ marcus-mueller.info, 1 marcus-scheffler.com, 1 marcus.pw, 0 marcusb.org, 1 -marcusberley.com, 1 marcusburghardt.tk, 1 marcusds.ca, 1 marcusporter.tk, 1 @@ -92595,6 +92942,7 @@ mardigrasnapkins.com, 1 mardinhaberleri.tk, 1 mardinsondakika.tk, 1 mare92.cz, 1 +marebca.xyz, 1 marechal-company.com, 1 mareforfa.com, 1 mareinitalia.com, 1 @@ -92602,10 +92950,10 @@ marekhonzal.com, 1 marekkohn.tk, 1 marekkorlak.com, 1 mareklecian.cz, 1 +marel.com, 1 marelijah.org, 1 marenbeiner.de, 1 marengomi.gov, 1 -mares.email, 1 maresencial.com, 1 marex.host, 1 marfadelivery.tk, 1 @@ -92673,17 +93021,19 @@ mariberceritera.online, 1 marico.com, 1 maridacaterini.it, 1 maridana.lt, 1 -marie-pettenbeck-schule.de, 1 +marie-pettenbeck-schule.de, 0 marie-psy.fr, 1 marie.club, 1 mariealber.cz, 1 mariearthur.fr, 1 mariecurie.tk, 1 +mariejulien.com, 1 mariekedenbraber.nl, 1 mariel-news.net, 1 mariella-sun.net, 1 marielouise.tk, 1 mariemccaig.co.uk, 1 +mariemiramont.fr, 1 marien-bouwens.be, 1 marienolandmd.com, 1 marienvanoverbeek.nl, 1 @@ -92696,6 +93046,7 @@ marijuana-seeds.nl, 1 marijuanajobscannabiscareers.com, 1 marik.net.br, 1 marikafranke.de, 1 +marikekinze.de, 1 marillatownshipmi.gov, 1 marilower.tk, 1 marilsnijders.nl, 1 @@ -92757,6 +93108,7 @@ mariospizzaoxford.co.uk, 1 mariouniversalis.fr, 1 mariowiki.com, 1 mariposah.ch, 1 +mariquitatrasquila.com, 1 marisamorby.com, 0 marisasitaliankitchen.com, 1 mariskavankasbergen.nl, 1 @@ -92765,10 +93117,10 @@ marismenos.tk, 1 maritiemshertogenbosch.nl, 1 maritime-mea.com, 1 maritimehistory.org.uk, 1 -maritimeinfosec.org, 1 maritlarsen.ml, 1 maritlarsen.tk, 1 mariupol-news.ru, 1 +marius-schmalz.de, 1 mariusreimer.com, 1 mariusschulz.com, 1 mariuszholowieniec.pl, 1 @@ -92777,7 +93129,7 @@ mariyoki.com, 1 marizaikonomi.tk, 1 marj3.com, 1 marjadeleeuw.nl, 1 -marjala.no, 0 +marjala.no, 1 marjanne.tk, 1 marjeta-gurtner.ch, 1 marjon.photography, 1 @@ -92792,7 +93144,6 @@ markandrewtrewitt.com, 0 markant-online.de, 1 markantalyamasajsalonu-bayanmasoz-cim.cf, 1 markaps.com, 1 -markayorumlari.com, 1 markco.fi, 1 markdain.net, 1 markdixon.name, 1 @@ -92800,7 +93151,6 @@ markecubanos.com, 1 markedwithab.com, 1 markenet.co, 1 markentier.tech, 1 -markenzapatent.com, 1 markermatic.com, 1 market-garden.tk, 1 market.android.com, 1 @@ -92810,7 +93160,6 @@ marketbasket.tk, 1 marketcalls.in, 1 marketcavalli.it, 1 marketcrypto.id, 1 -marketdocs.io, 1 marketforce.com, 1 marketgarden.tk, 1 marketgrid.ml, 1 @@ -92819,10 +93168,10 @@ marketia.ml, 1 marketing-2.de, 1 marketing-advertising.eu, 1 marketing-boerse.de, 1 -marketing-extender.com, 1 marketing1-0-1.com, 1 marketing4trends.com, 1 marketinganalytics.africa, 1 +marketingautomationplan.nl, 1 marketingbab.com, 1 marketingbrandingnews.com, 1 marketingbrandingnews.net, 1 @@ -92850,9 +93199,11 @@ marketnews.com, 0 marketone.com, 1 marketplace.tf, 1 marketplacetue.nl, 1 +marketresearch.biz, 1 marketsearch.ga, 1 marketsnerd.com, 1 marketsosyali.tk, 1 +markettailor.io, 0 marketvalue.gq, 1 marketvolume.com, 1 marketyourcup.com, 1 @@ -92872,6 +93223,7 @@ markido.com, 1 markisa.ninja, 1 markitanova-anna.tk, 1 markitee.com, 0 +markitplace.co, 1 markitzeroday.com, 1 markjansen.tk, 1 markkirkforillinois.com, 1 @@ -92882,22 +93234,18 @@ markllego.com, 1 markmccluretoday.com, 1 markmet.fi, 0 markmetcalfe.io, 1 -markmorris.com.au, 0 +markmorris.com.au, 1 marknewtonband.com, 1 markocloud.com, 1 markoglou.com.gr, 1 markoheijnen.com, 1 -markopool.ru, 1 markov.com.ru, 1 -markov.money, 1 -markovonline.ru, 1 markovowest.bg, 1 markpostmanrenovations.ca, 1 markpulido.net, 1 markri.nl, 1 markridgwell.co.uk, 1 markridgwell.com, 1 -marks-lawfirm.com, 1 marks.sa, 1 marksclassicautos.com, 1 marksm.it, 1 @@ -92917,6 +93265,7 @@ marktgorman.com, 1 marktguru.at, 1 marktguru.de, 1 markthisforme.com, 1 +marktindex.ch, 1 markturner.net, 1 markup-ua.com, 1 markus-blog.de, 1 @@ -92929,7 +93278,7 @@ markus289.com, 1 markusabraham.com, 1 markusehrlicher.de, 1 markusgran.de, 1 -markushof.it, 0 +markushof.it, 1 markusjanzen.de, 1 markuskeppeler.de, 1 markuskeppeler.no-ip.biz, 1 @@ -92966,6 +93315,7 @@ marmo.tk, 1 marmorariaembh.com, 1 marmosoft.ch, 1 marmotte.love, 1 +marmurmedical.com, 1 marny.eu, 1 marocmail.ma, 1 marocnews.tk, 1 @@ -92978,29 +93328,29 @@ maroochydorecitycenter.com.au, 1 maroochydorecitycentre.com, 1 maroochydorecitycentre.com.au, 1 maroochydorecitycentre.net.au, 1 +maroontribune.org, 1 maroquineriepirlot.be, 0 maroshionline.tk, 1 marouskovi.cz, 1 maroussia.tk, 1 marouviere.fr, 1 marpa-wohnen.de, 1 -marqlet.com, 1 marqperso.ch, 1 +marquardtgames.com, 1 marquee.tv, 1 marquepersonnelle.ch, 1 marqueswines.co.uk, 1 marquettewire.org, 1 marquimanagement.com, 1 marquisepools.com, 1 +marrakechactivite.com, 1 marrakechairporttransfer.com, 1 marrakechauxiliaire.com, 1 -marrakechtourexpert.com, 1 marredesefairebaladersurlenet.com, 1 marretada.org, 1 marriage-shrine.jp, 1 marriageaustralia.org, 1 marriagecelebrantmelbourne.au, 1 -marriagemmatters.info, 1 marrickvilleapartments.com.au, 1 marronniergate.com, 0 marropax.com, 1 @@ -93035,7 +93385,6 @@ marshmallowchallenge.com, 1 marshmaloo.ir, 1 marshop.tk, 1 marsicano.tk, 1 -marsico.org, 1 marsikelektro.cz, 1 marsilioblack.tk, 1 marsmediavideo.com, 1 @@ -93047,6 +93396,7 @@ martacollmarine.science, 1 martacooks.com, 1 martagoraca.pl, 1 martcms.com, 1 +martdev.com, 1 martelange.ovh, 1 martelliyaqub.co.nz, 1 martellosecurity.com, 1 @@ -93079,12 +93429,12 @@ martinaachen.tk, 1 martinalonsovega.tk, 1 martinarnold.co.uk, 1 martinassurfdepot.tk, 1 -martinbaileyphotography.com, 1 +martinbaileyphotography.com, 0 martinbiely.com, 1 martinboerhof.nl, 1 martinbrandt.de, 1 martinbrower.us, 1 -martinbykov.eu, 1 +martinbuildingservices.co.uk, 1 martincernac.cz, 1 martincornelissen.tk, 1 martindales.ltd.uk, 1 @@ -93094,7 +93444,6 @@ martinelias.cz, 1 martineric.tk, 1 martineve.com, 0 martinfresow.de, 1 -martingura.sk, 1 martinhal.cn, 1 martinhal.com, 1 martinhalfamilyblog.com, 1 @@ -93111,6 +93460,7 @@ martinkus.eu, 1 martinlabs.me, 1 martinlukes.cz, 1 martinmaze.com, 1 +martinmuc.de, 1 martino.ga, 1 martinploug.dk, 1 martinpohl.cz, 1 @@ -93145,6 +93495,7 @@ marty.me.uk, 1 martyrium.tk, 1 marufmusic.tk, 1 maruja.tk, 1 +marujapiruja.com, 1 marula-oel.de, 1 marunouchi-hotel.co.jp, 1 marussy.com, 1 @@ -93156,12 +93507,10 @@ marvaco.tk, 1 marvelcargiveaways.co.uk, 1 marveld.nl, 1 marvellbenefits.cloudaccess.host, 1 -marvelmilk.com, 1 marvelmoviemarathon.com, 1 marvelo.cf, 1 marvelouspainting.com, 1 marvelweed.ru, 1 -marvilastudios.com, 1 marvin-elsen.com, 1 marvin.com, 0 marvin.is, 1 @@ -93188,6 +93537,7 @@ marvnetforum.gq, 1 marvnetforum.ml, 1 marvnetforum.tk, 1 marvos.se, 1 +marw.org, 1 marwadionline.com, 1 marxist-club.org, 1 marxist.party, 1 @@ -93217,19 +93567,18 @@ marytetzstore.com.br, 1 marywet.net, 1 mas.be, 1 mas.bg, 1 +masa.sa, 1 masaarchive.org, 1 -masacom.eu, 1 -masajfacialsibiu.ro, 1 masajilanver.tk, 1 masakanibu.ga, 1 masaki1684.net, 1 masakigarden.com, 1 masalaband.tk, 1 +masaloku.com.tr, 1 masanke-travel.com, 1 masanteadelavenir.fr, 1 masanunciosimpresos.com, 1 masarik.sh, 1 -masaz-aromaspa.pl, 1 masaze-hanka.cz, 1 masazomiestas.lt, 1 mascarablond.tk, 1 @@ -93238,12 +93587,13 @@ mascarillas.blog, 1 maschine.email, 1 maschinen.email, 1 mascotarios.org, 1 -mascotavineyards.com, 1 masdemariette.com, 1 masdemexico.com, 1 masdr.sa, 1 masduta.co, 1 masdzub.com, 1 +masefieldvets.co.uk, 1 +masepps.pe, 1 maservant.com, 1 maservant.net, 1 masfloss.net, 1 @@ -93252,6 +93602,7 @@ mashariqalsaad.com, 1 masharphomecooking.com, 0 mashek.net, 1 mashimo-medical.jp, 1 +mashin.al, 1 mashina.world, 0 mashinavremeni.ml, 1 mashinist.tk, 1 @@ -93267,7 +93618,6 @@ masiavillalonga.com, 1 masiniunelte.store.ro, 1 masinky.tk, 1 masiorama.it, 1 -masjidalbayyinah.org, 1 masjidalnoorwairarapa.co.nz, 1 mask-skin.tk, 1 maskamuse.com, 1 @@ -93277,6 +93627,7 @@ maskedworld.tk, 1 maskim.fr, 1 masking.my.id, 1 maskinkultur.com, 1 +maskmail.co, 1 maskmy.id, 1 maskstyle.tk, 1 maslenka.tk, 1 @@ -93284,7 +93635,6 @@ maslin.io, 1 maslow.tk, 1 masmusica.tk, 1 masmusicaradio.tk, 1 -masno3.com, 1 maso-corto.com, 1 masob.site, 1 masoftware.ddns.net, 1 @@ -93303,7 +93653,6 @@ masr.social, 1 masrilanguage.tk, 1 masrud.com, 1 masrur.org, 1 -mass-analytica.com, 1 mass.pt, 1 mass511.com, 1 massachusettstitlesearch.com, 1 @@ -93331,15 +93680,16 @@ massanews.com, 1 massarbsettlement.com, 1 massauditor.gov, 1 massazh.cf, 1 -massbank.eu, 0 +massbank.eu, 1 massconsultores.com, 1 masse.org, 1 +massfone.com, 0 masshelpline.com, 1 masshost.tk, 1 masshpc.gov, 1 massimo.com.my, 1 massimocasa.it, 1 -massimoturella.it, 1 +massindia.in, 1 massive.tk, 1 massiveanalyser.com, 1 massiveassault.tk, 1 @@ -93367,7 +93717,6 @@ master-tmb.ru, 1 master-zone.com, 1 master.shop, 1 masteranimal.tk, 1 -masterassignmentwriter.com, 1 mastercardpac.com, 1 mastercareplus-demo.com, 1 mastercareplus-staging.com, 1 @@ -93396,6 +93745,7 @@ masterofazoth.tk, 1 masterofbytes.ch, 1 masteroil.com, 1 masterpassword.org, 1 +masterpfsense.com, 1 masterpieceproductions.nl, 1 masterplc.com, 1 masterprint.jp, 1 @@ -93410,10 +93760,8 @@ mastersinesl.org, 1 mastersofscale.com, 1 mastersplace.tk, 1 masterstation.net, 1 -mastersteps.com, 1 mastersthesiswriting.com, 1 masterstouch.co.za, 1 -masterstruckingacademy.com, 1 mastertent.com, 1 masterton.com.au, 1 mastertutoriales.com, 0 @@ -93424,17 +93772,17 @@ mastiffingles.com.br, 1 mastips.cl, 1 mastodon-poradnik.pl, 1 mastodon.au, 1 -mastodon.blue, 1 +mastodon.blue, 0 mastodon.com.pl, 1 mastodon.cr, 1 mastodon.ee, 1 +mastodon.fun, 1 mastodon.org.uk, 1 mastodon.pl, 0 mastodon.top, 1 mastodon.uno, 1 mastodont.tk, 1 mastpartners.com, 1 -masturflix.com, 1 masuclub.jp, 1 masuclub.net, 1 masumitsu.jp, 1 @@ -93446,14 +93794,15 @@ mat.com.vn, 1 mat.services, 1 mat99.dk, 1 matacrylic.com, 1 +matador-group.eu, 1 matador.ch, 1 matafonov.tk, 1 mataharischoolsurf.com, 1 mataharitimoer.tk, 1 -matahub.de, 1 matanz.de, 1 matapacoin.org, 1 matarbyte.se, 1 +matarrosabierzo.com, 1 matatabimix.com, 1 matatall.com, 1 matber.es, 1 @@ -93461,15 +93810,18 @@ matc.ca, 0 matc.net, 1 match.audio, 1 match.by, 1 +match2meet.io, 1 matcha-iga.jp, 1 matcha14.com, 1 matchable.uk, 1 matchflix.ch, 1 matchimmo.fr, 1 matchlive.ga, 1 -matchmove.com, 0 +matchmeup.de, 1 +matchmove.com, 1 matchmycourse.com, 1 matchory.com, 1 +matchpointusa.com, 1 matconnolley.com, 1 mate.academy, 1 mate.software, 1 @@ -93500,6 +93852,7 @@ materialyinzynierskie.pl, 1 materiel-grand-format.fr, 1 materna.life, 1 maternalwellness.es, 1 +maternityfashion.in, 1 maternoinfantile.online, 1 maternum.com, 1 mateslibres.com, 1 @@ -93531,19 +93884,19 @@ mathematik.rocks, 1 matheo-schefczyk.de, 1 mathers.ovh, 1 mathes.berlin, 1 +mathesongas.com, 0 mathesonsteplock.ca, 1 matheusmacedo.ddns.net, 1 mathewlane.com, 1 -mathfilm.dk, 1 mathias.re, 0 mathiasbynens.be, 1 mathiasgarbe.de, 1 mathiasheise.de, 1 mathiaswagner.org, 1 mathieu-oriol.com, 1 -mathieu42.com, 1 mathieuchollet.eu, 1 mathieugrant.com, 1 +mathieuguimond.com, 1 mathieui.net, 1 mathisadler.com, 1 mathiveri.tk, 1 @@ -93571,6 +93924,7 @@ matillat.ovh, 1 matindustrial.com, 1 matinnoliving.com, 1 matipl.pl, 1 +matis.rs, 1 matiu.tk, 1 matjaz.it, 1 matkrain.is, 1 @@ -93583,6 +93937,7 @@ matogrossonoticias.com.br, 1 matolab.lt, 1 matomari.tk, 1 matopu.tk, 1 +matora.com.au, 1 matosinfo.com, 1 matosinfo.fr, 1 matoutepetiteboutique.com, 1 @@ -93603,7 +93958,9 @@ matrimonio.com, 1 matrimonio.com.co, 1 matrimonio.com.pe, 1 matrimonios.cl, 1 +matrimoniosriviera.com, 1 matrimonyassist.com, 1 +matrimonybangladesh.com, 0 matriterie-sdv.ro, 1 matrix-team.tk, 1 matrix.org, 1 @@ -93612,6 +93969,7 @@ matrix40.com, 1 matrixeditora.com.br, 1 matrixengineered.com, 1 matrixfm.tk, 1 +matrixhealthcare.ca, 1 matrixinternet.ie, 1 matrixmedia.ro, 1 matrixmold.com, 1 @@ -93624,7 +93982,6 @@ matsson.com, 1 matstodin.is, 1 matsu-semi.com, 1 matsu.gov, 1 -matsubaya1927.com, 1 matsuda-shikaiin.com, 1 matsuo-dental-clinic.jp, 0 matsushima-kosodate.com, 1 @@ -93635,7 +93992,7 @@ matt.re, 1 mattab.xyz, 1 mattadams.info, 1 mattajones.com, 1 -mattandreko.com, 0 +mattandreko.com, 1 mattandyana.com, 1 mattaponi.gov, 1 mattari-app.com, 1 @@ -93660,8 +94017,10 @@ matteomarescotti.it, 1 matteosaturn.com, 1 matteozinnia.it, 1 mattersource.com, 1 +mattes.cc, 1 mattessons.co.uk, 1 mattferderer.com, 1 +mattfin.ch, 1 mattg.ca, 1 mattga.ca, 1 mattgemmell.com, 1 @@ -93686,7 +94045,7 @@ matthewohare.com, 0 matthewoliver.com, 1 matthewoshea.tk, 1 matthewprenger.com, 1 -matthewrochow.com, 0 +matthewrochow.com, 1 matthewsaeger.com, 1 matthewtester.com, 1 matthewthode.com, 1 @@ -93714,7 +94073,6 @@ matthieuschlosser.fr, 1 matthijssen.info, 1 matthijsvos.com, 1 matthijsvos.org, 1 -mattholihan.design, 1 matthrkac.com.au, 1 mattiash.se, 1 mattilsynet.no, 1 @@ -93753,6 +94111,7 @@ matts.support, 1 matts.systems, 1 matts.world, 1 mattshi.com, 1 +mattslack.me, 1 mattsmissionblog.com, 1 mattstanbrell.com, 1 mattsvensson.com, 1 @@ -93786,20 +94145,18 @@ mau.life, 1 mau.lu, 1 mau.photos, 1 maubot.xyz, 1 +mauboussin.ma, 1 maudfourier.com, 0 mauditeboisson.tk, 1 maudok.gov, 1 -maudynetwork.id, 1 mauhalito.tk, 1 mauicharm.com, 1 maukenyang.com, 1 mauldincookfence.com, 1 mauletsmallorca.tk, 1 maumovie.ml, 1 -maunayogastudio.com, 1 maunder.ru, 1 maunium.net, 1 -maurice-brant.uk, 1 maurice-walker.com, 0 mauricechavez.tk, 1 mauricedb.nl, 1 @@ -93813,12 +94170,14 @@ mauricioquadradocontador.com.br, 1 mauriciosilva.tk, 1 mauriciotoussaint.tk, 1 mauriciotoussaintarte.tk, 1 +maurinet.com, 1 mauritius-luxuryestate.com, 1 mauritsverelst.com, 1 mauriziofaldi.com, 1 mauroalejandro.co, 1 mauronovellas.es, 1 maurrikone.com, 1 +maury-moteurs.com, 1 mausbike.ro, 1 maushabitos.com, 1 mausmani.tk, 1 @@ -93829,6 +94188,7 @@ mauthausen-memorial.org, 1 mauthietkecafe.com, 1 mauticamp.ng, 1 mautwelt.de, 1 +mave.sh, 1 maveeranpasupathi.tk, 1 maven.ng, 0 maventrading.com, 0 @@ -93847,6 +94207,7 @@ mavro.cf, 1 mavro.ga, 1 mavro.gq, 1 mawidabp.com, 1 +mawinguhost.co.ke, 1 mawo.olkusz.pl, 1 mawrex.tech, 1 mawtinii.com, 1 @@ -93870,6 +94231,7 @@ max5365.com, 0 max55365.com, 0 max6365.com, 0 max66365.com, 0 +max77365.com, 0 max8365.com, 0 max88365.com, 0 max9365.com, 0 @@ -93878,9 +94240,7 @@ maxalbanesi.it, 1 maxarkey.com, 1 maxaro.nl, 1 maxb.fm, 1 -maxbeton.fr, 1 maxbike.tk, 1 -maxboehme.net, 1 maxboobs.com, 1 maxbruckner.de, 1 maxbruckner.org, 1 @@ -93888,6 +94248,7 @@ maxbuelk.de, 1 maxbytes.nl, 0 maxcash.com, 1 maxchan.info, 1 +maxchap.ir, 1 maxchernoff.ca, 1 maxclean.ml, 1 maxcleaning.be, 1 @@ -93916,6 +94277,7 @@ maxim.live, 1 maximababy.de, 1 maximalsparen.com, 0 maximanet.tk, 1 +maximbaz.com, 1 maximdeboiserie.be, 1 maximdens.be, 1 maximeferon.fr, 1 @@ -93931,7 +94293,6 @@ maximiliankaul.de, 1 maximiliankrieg.de, 1 maximoguk.com, 1 maximosilupu.tk, 1 -maximovel.com.br, 1 maximovie.eu, 1 maxims-travel.com, 1 maximumcontrol.nl, 1 @@ -93952,6 +94313,7 @@ maxlaumeister.com, 1 maxley.yachts, 1 maxmabyte.com, 1 maxmanus.ga, 1 +maxmarket.bg, 1 maxmatthe.ws, 0 maxmind-test.com, 1 maxmind.com, 1 @@ -93960,11 +94322,10 @@ maxmusic.tk, 1 maxmusical.ml, 1 maxnac.tk, 1 maxnews.mn, 1 -maxogles.com, 0 maxopen.cf, 1 +maxopolyworldnews.com, 1 maxostapenko.com, 1 maxp.info, 0 -maxpapildai.lt, 1 maxpoint.it, 1 maxportal.tk, 1 maxr1998.de, 0 @@ -93974,7 +94335,6 @@ maxrider.tk, 1 maxroganov.tk, 1 maxs.com, 1 maxschleiffer.com, 1 -maxthoene.de, 1 maxtire.com, 1 maxtransport.az, 1 maxtruxa.com, 1 @@ -93986,7 +94346,6 @@ maxuniverse.de, 1 maxus.tk, 1 maxval.com, 1 maxvaluecleaners.com, 1 -maxvibe.rocks, 1 maxwaellenergie.de, 1 maxweiss.io, 1 maxwell-english.co.jp, 0 @@ -94009,17 +94368,15 @@ maybeshewill.xyz, 1 maybeul.com, 1 mayblossom.net, 1 maycarivero.com, 1 -maydaymarchingband.org, 1 maydaystrategies.com, 1 maydex.info, 1 mayerbrownllz.com, 1 mayersoncreative.com, 1 mayfairlakes.org, 1 mayfairlimo.eu, 1 -mayfairwecare.com, 1 mayfieldheightsohio.gov, 1 mayflowerbocawina.tk, 1 -mayflowercreative.com, 0 +mayflowercreative.com, 1 mayhem.moe, 1 mayiadvise.nl, 1 mayito.tk, 1 @@ -94036,8 +94393,10 @@ mayre-idol.tk, 1 mayrivermontessori.com, 0 maysalward.com, 1 maysambotros.tk, 1 +mayslandingcornholeleague.com, 1 maythai.eu, 1 maythai.pl, 1 +maytretrungphuong.com, 1 mayuraakitchens.com, 1 maywood-il.gov, 1 mayx.eu.org, 1 @@ -94045,17 +94404,16 @@ mazartdesign.tk, 1 mazavto.ml, 1 mazda-mps.de, 1 mazda-thermote.com, 1 -mazdabongocentre.co.uk, 1 mazdel.tk, 1 maze.com.br, 1 maze.fr, 0 mazepa.ml, 1 -mazer.world, 1 mazet-machines-a-coudre.fr, 1 mazhab.tk, 1 mazik.tk, 1 mazken.tk, 1 maznas.com, 1 +mazouttank.be, 1 mazternet.ru, 1 mazudh.cc, 1 mazudh.com, 1 @@ -94074,13 +94432,13 @@ mb.estate, 1 mb300sd.com, 1 mbabullshit.com, 1 mbaestlein.de, 1 +mbainflatables.co.uk, 1 mbakaro.in, 1 mbalaw.pl, 1 mbank.kg, 1 mbar.us, 1 mbardot.com, 1 mbasic.facebook.com, 0 -mbatchnet.com, 1 mbcars.be, 0 mbci.gov, 1 mbcoaching40.fr, 1 @@ -94099,12 +94457,14 @@ mbinf.de, 0 mbinformatik.de, 0 mbjeng.com, 0 mbk.net.pl, 1 +mblankhorst.nl, 1 mble.mg, 1 mbm-law.net, 1 mbmassageterapi.se, 1 mbmbuild.com, 1 mbocentre.com, 1 mbong.kr, 1 +mbonlinesolutionsllc.com, 0 mbpskill.co.id, 1 mbr-net.de, 1 mbr.moe, 1 @@ -94134,7 +94494,7 @@ mc.ax, 1 mc007.xyz, 1 mc2.plus, 1 mc2informatique.fr, 1 -mc3dreal.de, 1 +mc3dreal.de, 0 mc4free.cc, 1 mcagon.tk, 1 mcahm.eu.org, 1 @@ -94143,22 +94503,22 @@ mcaps-mn.gov, 1 mcar5b.com, 1 mcavallo.com, 1 mcaz.nl, 1 -mcb-bank.com, 1 +mcb-bank.com, 0 mcba.com.br, 1 mcbbs.wiki, 1 +mcbooks.vn, 0 mcc.edu.ph, 1 -mcc.gov, 1 mccabes.com.au, 1 mccallkulak.org, 1 mccannhealth.com, 1 -mccarthyhire.co.uk, 1 +mccannworldgroup.com, 1 mccarthyprestige.com.au, 1 -mccinc.ca, 0 +mccinc.ca, 1 mcclaincountyok.gov, 1 mccn.pp.ua, 1 mccom.at, 1 mccommando.tk, 1 -mcconciergerie.com, 0 +mcconciergerie.com, 1 mcconecountymt.gov, 1 mccordscvs.com, 1 mccreadylaw.com, 1 @@ -94183,12 +94543,12 @@ mcdonalds.design, 1 mcdowellcountyncboe.gov, 1 mcdowellcountywv.gov, 1 mcdowellnews.com, 1 +mcdreamcity.com, 1 mcdsg.net, 1 mcduff.ga, 1 mce.eu, 1 mce55.eu, 1 mcea-hld.jp, 1 -mcead.com, 1 mceconferencecentre.eu, 1 mceducation.com, 1 mcelebi.net, 1 @@ -94232,8 +94592,7 @@ mcicare-bf.com, 1 mcicoach.co, 1 mcicoach.com, 1 mcideas.tk, 1 -mcimotorcoach.com, 1 -mcipoc.com, 1 +mcirculo.com.br, 1 mcivor.me, 1 mcjackk77.me, 1 mcjars.com, 1 @@ -94277,7 +94636,6 @@ mcnet.care, 1 mcnext.net, 1 mcnicolls.com, 1 mcnoobs.pro, 1 -mcnsrl.it, 1 mcochris.com, 1 mcon.se, 1 mconline.sg, 1 @@ -94338,6 +94696,7 @@ md-accounting.be, 1 md-carport.pl, 1 md-clinica.com.ua, 1 md-events.tk, 1 +md-mb.ro, 1 md-progressistes.fr, 1 md-service.net, 1 md28.in, 1 @@ -94365,7 +94724,6 @@ mdek.at, 1 mdewendt.de, 1 mdf-bis.com, 0 mdf-nakladki.kiev.ua, 1 -mdgrok.com, 1 mdgsocialmediasecurity.com, 1 mdgx.com, 1 mdigital.lt, 1 @@ -94391,7 +94749,6 @@ mdrthmcs.io, 1 mds-paris.com, 1 mdsave.com, 1 mdscomp.net, 1 -mdsconsultinglombok.com, 1 mdtaxconnect.gov, 1 mdtitlesearch.com, 1 mdtorelli.it, 1 @@ -94415,26 +94772,27 @@ mea.com.lb, 1 meacsports.com, 1 meadowfen.farm, 1 meadowfenfarm.com, 1 -meadowgolddairy.com, 1 +meadowlarklandscaping.ca, 1 meadowmere.com, 1 meadowviewfarms.org, 1 meadvillems.gov, 1 mealcast.ml, 1 -mealnuzzle.com, 1 mealpedant.com, 1 meals.lv, 1 -mealthinker.com, 1 meamod.com, 1 meandliora.com, 1 meandmyemotions.org, 1 +meangreenjunk.com, 1 meaningfulbits.io, 1 meanit.ie, 1 meanjstraininginstitute.com, 1 meanmugauto.com, 1 +meany.xyz, 1 meao.io, 1 meao.market, 1 meao.online, 1 meao.pictures, 1 +meao.ru, 1 meapbot.com, 1 meapbot.net, 1 meapbot.org, 1 @@ -94451,6 +94809,7 @@ meatfreecarnivore.com, 1 meavagas.com, 1 meazurelearning.com, 1 mebel-dnr.ml, 1 +mebel-renessans.ru, 1 mebel-voronezh.cf, 1 mebelconcept.tk, 1 mebelipalitra.ru, 0 @@ -94458,6 +94817,8 @@ mebelipetrov.com, 1 mebeliside.bg, 1 mebelisk.com.br, 1 mebelizori.com, 1 +mebeloffice.com.ua, 1 +mebelok.com, 1 mebelshik.tk, 1 mebin.me, 1 mebin.studio, 1 @@ -94466,6 +94827,7 @@ meblekorona.pl, 1 meblerymar.pl, 1 mebtall.ru, 1 mebus.biz, 1 +mec.gub.uy, 1 mec0371.com, 0 mec0372.com, 1 mec0378.com, 1 @@ -94512,6 +94874,7 @@ mec0751.com, 1 mec0758.com, 1 mec0763.com, 1 mec0772.com, 1 +mec0773.com, 0 mec0774.com, 1 mec0776.com, 1 mec0778.com, 1 @@ -94571,10 +94934,10 @@ mec0974.com, 1 mec0976.com, 1 mec0977.com, 1 mec539.com, 1 +mec555.com, 0 mec760.com, 1 mec825.com, 1 mec888.net, 1 -meca.vision, 1 mecafresa.pt, 1 mecalac.com, 1 mecalux.com, 1 @@ -94582,11 +94945,9 @@ mecalux.es, 1 mecalux.nl, 1 mecambioamac.com, 1 mecanicoautomotriz.org, 0 -mecanique-casa.com, 1 mecaniquemondor.com, 1 mecanizadostrs.com, 1 mecari.tk, 1 -mecaroanne.com, 1 mecc.nl, 1 meccanico.milano.it, 1 meccano.srl, 1 @@ -94605,14 +94966,15 @@ mechatronics-robotics.bg, 1 mechatronics-robotics.eu, 1 mechinfinity.tk, 1 mechmk1.me, 1 +mechsoftgroup.com, 1 mechta.gq, 1 mechtylda.info, 1 meciel.net, 1 mecloudprinter.com, 1 mectilde.info, 1 mecu.com, 1 +med-academy.org, 1 med-colleges.com, 1 -med-fine.com, 1 med-flex.com, 1 med-line.cf, 1 med-metrix.com, 0 @@ -94623,13 +94985,10 @@ med.de, 1 meda.bg, 1 medaboutme.ru, 1 medadacademy.com, 1 -medalexey.ru, 1 medali21.tk, 1 medaliturki.tk, 1 medalofvalor.gov, 1 medatixx.de, 1 -medav.ru, 1 -medav.tech, 1 medbiocompany.com, 1 medbiocompany.ml, 1 medbreaker-friends.at, 1 @@ -94637,8 +94996,9 @@ medbreaker.one, 0 medcartoon.com, 1 medcenter.online, 1 medcentr.online, 1 +medcheck.ma, 1 medcir.com.br, 1 -medclaimspanama.com, 1 +medcof.com.br, 1 medcorfu.gr, 1 medcorp.pe, 1 medcrowd.com, 1 @@ -94652,7 +95012,7 @@ mede-handover.azurewebsites.net, 1 medec.ec, 1 medecinesalternatives-developpementspirituelcreatif.com, 1 medeem.gov.ae, 1 -medefield.com, 0 +medefield.com, 1 medeinos.lt, 0 medelement.com, 1 medellinencanciones.tk, 1 @@ -94660,14 +95020,11 @@ medex.health, 1 medfind.link, 1 medfordoregon.gov, 1 medfordwi.gov, 1 -medgenome.com, 1 -medgetech.com, 1 medguide-bg.com, 1 medgyd.lt, 0 medhacooks.com, 1 medhiwa.com, 1 medhy.fr, 0 -medi-estetix.com, 1 medi.com.br, 1 media-cable-solutions.de, 1 media-credit.eu, 1 @@ -94693,9 +95050,9 @@ media4u.tk, 1 mediaarea.net, 1 mediaareplural.ca, 1 mediabackoffice.co.jp, 1 -mediabisnis.co.id, 1 mediabogen.net, 1 mediabooks.ml, 1 +mediaboutique.nl, 1 mediabrook.com, 1 mediabutic.ro, 1 mediacenter.dynv6.net, 1 @@ -94712,6 +95069,7 @@ mediagrand.net, 1 mediahaus.de, 0 mediahiburan.my, 1 mediajurnal.com, 1 +medialandscapes.org, 1 medialine.ag, 1 medialine.com, 1 medialinkz.ga, 1 @@ -94756,7 +95114,6 @@ mediawiki.com, 1 mediawiki.org, 1 mediaworqs.com, 1 medibooker.com.au, 1 -medicaid.gov, 1 medicairsolutions.com, 1 medical-assistant-colleges.com, 1 medical-centr.tk, 1 @@ -94782,11 +95139,11 @@ medicaloptica.es, 1 medicalpeople.tk, 1 medicalphysicistservices.com, 1 medicalplaza.ua, 1 -medicalpsiho.ro, 1 medicalsite.tk, 1 medicalsland.com, 1 medicaltiny.de, 1 medicaltools.de, 1 +medicaltrusthospital.com, 1 medicalupholsteryservices.com, 1 medicalys-tunisie.com, 0 medicare-providers.net, 1 @@ -94817,18 +95174,21 @@ mediciventures.com, 1 mediclinik.tk, 1 medicm.jp, 1 medicompany.tk, 1 +mediconnect.net, 1 medictools.de, 1 -medicus.ai, 0 +medicus.ai, 1 medidata.co.nz, 1 medidordehumedad.online, 1 mediengestalter-website.de, 1 medienhelden.de, 1 medienkern.de, 1 medienweite.de, 1 +medievalexpert.com, 1 medifit.si, 1 medifoto.tk, 1 medify.id, 1 medigap-quote.net, 1 +medigo.at, 1 medihost.com.au, 1 medihostsolutions.com.au, 1 medikalsepetim.org, 1 @@ -94838,9 +95198,14 @@ medimix.be, 1 medinacountyohio.gov, 1 medinaelst.nl, 1 medinc.tk, 1 -mediniti.com, 0 +mediniti.com, 1 medino.com, 1 medinorte.es, 1 +medinside.ch, 0 +medinside.li, 0 +medinsider.ch, 0 +medinsider.li, 0 +medipaw.com, 0 mediro-ict.co.za, 1 medirota.com, 1 medisca.com, 1 @@ -94851,6 +95216,7 @@ medisystempharmacy.com, 0 meditacionesparasanar.club, 1 meditadvisors.com, 1 meditateinolympia.org, 1 +meditation-rennes.org, 1 meditel.nl, 1 meditez.ca, 1 meditrak.ml, 1 @@ -94861,9 +95227,9 @@ medium.cz, 1 mediumforgood.com, 1 mediums.cf, 1 mediumseznam.cz, 1 -medivisionsc.com, 1 medivox.tk, 1 mediweed.tk, 1 +mediwish.com, 1 medizin18.at, 1 mediziner-goettingen.tk, 1 medja.net, 1 @@ -94886,8 +95252,7 @@ medosedu.in, 1 medousaclinique.com, 1 medovea.ru, 1 medovoe.ml, 1 -medpatches.com, 1 -medpeer.co.jp, 0 +medpeer.co.jp, 1 medpeer.jp, 1 medportalmd.tk, 1 medpost.com, 1 @@ -94898,6 +95263,7 @@ medrol.cf, 1 medschrome.com, 1 medscope.com.au, 1 medscope.tk, 1 +medservice.cz, 1 medservis.online, 1 medsi-online.tk, 1 medsister.tk, 1 @@ -94912,12 +95278,11 @@ medtankers.management, 0 medtech-jp.net, 1 medtechedge.com.au, 1 medtehnika.ua, 1 -medtown.cloud, 1 medtronicpain.com, 1 meduna.org, 1 medunovi.com, 1 +medusa.wtf, 1 meduza.io, 1 -medva1997.tech, 1 medvedikorenka.cz, 1 medvedivka.tk, 1 medvedka-nasekomoe.tk, 1 @@ -94933,7 +95298,6 @@ medyotan.ga, 1 medzinenews.com, 0 meedia.me, 1 meedoennoordkop.nl, 0 -meefushop.xyz, 1 meek.ml, 1 meekhak.com, 1 meektech.com, 1 @@ -94948,7 +95312,7 @@ meeras.ga, 1 meerdialog.de, 1 meereskunst.de, 1 meerman.nl, 0 -meerpadel.nl, 0 +meerpadel.nl, 1 meesteresmisty.nl, 1 meestgesteldevragen.com, 1 meet, 1 @@ -94962,7 +95326,6 @@ meetfranz.com, 1 meetfriends.tk, 1 meetgeek.ai, 0 meeting-server.ml, 1 -meetingsurvivors.org, 1 meetingvotes.com, 1 meetjeslandsetriathlon.tk, 1 meetmaps.com, 1 @@ -94995,6 +95358,7 @@ mega.co.nz, 1 mega.io, 0 mega.nz, 1 mega.ru, 1 +mega888ios.com, 1 megaar.tk, 1 megabike.tk, 1 megabook.ml, 1 @@ -95004,7 +95368,6 @@ megacek.com, 1 megacek.cz, 1 megacompany.cz, 1 megadesignecv.com.br, 1 -megadimensao.com.br, 1 megaelettrostimolatore.com, 1 megafilez.tk, 1 megaflix.nl, 1 @@ -95013,9 +95376,9 @@ megagame.zapto.org, 1 megagifs.de, 1 megaherz.tk, 1 megahobby.jp, 1 +megahost.xyz, 1 megahostingbr.tk, 1 megahouse.co.jp, 1 -megahouseinvest.ru, 1 megaimpressao3d.com.br, 1 megainflatables.co.uk, 1 megainformatyk.pl, 1 @@ -95062,7 +95425,6 @@ megatyumen.ru, 1 megauction.tk, 1 megavasoc.com.ar, 1 megaviews.tk, 1 -megawatt.news, 1 megawebsite.tk, 1 megaxchange.cash, 1 megayachts.world, 1 @@ -95084,12 +95446,12 @@ mego.cloud, 1 mego.gmbh, 1 megotracer.de, 1 megseyephotography.com, 1 -megsimone.com, 1 megumico.net, 1 megumin.moe, 1 megztosidejos.lt, 1 meh.is, 1 mehalick.com, 1 +meharossii.ru, 1 mehdavia.tk, 1 mehdibouchema.be, 1 mehdiqurancenter.com, 1 @@ -95120,13 +95482,14 @@ meijburg.com, 1 meijingzhiwu.com, 1 meikampf.de, 1 meikan.moe, 1 -meil.se, 0 +meil.se, 1 meiler.cf, 1 meilink.eu, 0 meilleur-casino-bitcoin.com, 1 meilleurs-site-de-rencontres.com, 1 meilleursagents.com, 1 meilleursavis.fr, 1 +meilleursenlignejeux.com, 1 meilleursjeuxporno.fr, 1 meilleurstrucs.com, 1 meimeilio.com, 1 @@ -95145,10 +95508,9 @@ meinauslandspraktikum.de, 1 meinbargeld.at, 1 meinbaustoffversand.de, 1 meinbetriebsrat24.de, 1 -meincasinoportalcheck.com, 1 meincenter-meinemeinung.de, 1 +meincoach.at, 1 meindm.at, 1 -meine-blutspende.ch, 1 meine-email-im.de, 0 meine-email-im.net, 1 meine-mav.digital, 1 @@ -95251,7 +95613,6 @@ melanin.cf, 1 melanotan2sverige.to, 1 melanto.ro, 1 melaodealmeirim.pt, 1 -melas.site, 1 melbar.com.au, 0 melbet-download-bd.com, 1 melbet-id.mobi, 1 @@ -95291,18 +95652,18 @@ meldaterraverde.com.br, 1 meldcode-assistent.nl, 1 melderegister-auskunft.de, 1 meldjeaan.be, 1 +meldknop.nl, 1 meldpuntemma.nl, 1 mele.ro, 1 meleagrisartfestival.gr, 1 -meledee.com, 1 meleeweb.net, 1 melenchatsmelenchiens.fr, 1 meleracupuncture.com, 1 +melhorescasino.com, 1 melhoria.co.uk, 1 melhortennis.com.br, 1 meli.la, 1 melia.com, 1 -melicatessen-ulm.de, 1 melideluxe.org, 1 melihacar.com.tr, 1 melikoff.es, 1 @@ -95310,6 +95671,7 @@ melina-schefczyk.de, 1 melinacurves.com, 1 melinamay.net, 1 melini.hu, 1 +melini.rs, 1 melino.com.ua, 1 meliowebweer.nl, 1 melisica.tk, 1 @@ -95317,7 +95679,6 @@ melissaadkins.com, 1 melissadeluxe.com, 1 melissageorge.tk, 1 melissalb.tk, 1 -melissatani.com, 1 melitopol-news.ru, 1 melitopolnews.ru, 1 meliyb.ga, 1 @@ -95333,7 +95694,6 @@ melnessgroup.com, 1 melo-verse.com, 1 melodee.de, 1 melodict.com, 1 -melodify.cn, 1 melodija.tk, 1 melodiouscode.co.uk, 1 melodiouscode.com, 1 @@ -95361,9 +95721,11 @@ melrosewi.gov, 1 melsungenonline.com, 1 meltdownresearch.com, 1 melted.me, 1 +meltina-hotel.com, 1 melusine.eu, 1 melvillecity.com.au, 1 melvinsfrance.tk, 1 +melvintemo.com, 1 melyssamonroy.com, 1 mema.recipes, 1 memberbaz.ml, 1 @@ -95388,13 +95750,13 @@ mememan.org, 1 memememememememe.me, 1 memento-mori.cf, 1 memepool.space, 1 -memerushradar.xyz, 1 memes.nz, 1 memetrash.co.uk, 1 memetria.com, 1 memez.download, 1 memind.net, 1 memiux.com, 1 +memjour.com, 1 memo-linux.com, 1 memo-werbeartikel.de, 1 memo.de, 1 @@ -95412,17 +95774,16 @@ memorialwalk.com.au, 1 memoriaseternizadas.com.br, 1 memories-factory.pt, 0 memorind.com, 1 -memorizer.pl, 1 memoryex.net, 1 memoryjoggerlibrary.com, 1 memorylines.ml, 1 memoryofyou.eu, 1 memoryplex.com, 1 -memphisrap.com, 0 +memphisrap.com, 1 mempoo.space, 1 mempool.chat, 1 mempool.de, 1 -mempool.holdings, 1 +mempool.ninja, 1 mempool.space, 1 memrise.com, 1 memurvadisi.tk, 1 @@ -95442,7 +95803,6 @@ mendel.tk, 1 menden.com, 1 mendipbouncycastles.co.uk, 1 mendix-apps.com, 1 -mendmemassage.com, 1 mendmybackprogram.com, 0 mendocinocounty.gov, 1 mendonvt.gov, 1 @@ -95452,7 +95812,7 @@ mendrala.eu, 1 mendrala.net, 1 menegaro.com.br, 1 menelaostore.com, 1 -menerga.it, 0 +menerga.it, 1 menghao.com, 1 mengjianjiemeng.com, 1 mengjiucai.com, 1 @@ -95462,6 +95822,7 @@ mengqingzhong.cn, 1 mengqingzhong.com, 1 mengqingzhong.com.cn, 1 mengyibai.com, 1 +menh.vn, 1 menhera.org, 0 menielias.com, 0 meninapreciosa.com.br, 1 @@ -95483,6 +95844,7 @@ menn.tk, 1 mennace.com, 1 mennetwork.com, 1 menno.cloud, 1 +mennohouse.ca, 1 menole.com, 1 menole.de, 1 menole.net, 1 @@ -95520,6 +95882,7 @@ mentalhealthmn.org, 1 mentalhealthtimes.tk, 1 mentaliya.online, 1 mentalizes.tk, 1 +mentalpage.com, 1 mentalproblems.tk, 1 mentecuriosa.net, 1 menteofficial.com, 1 @@ -95529,14 +95892,12 @@ mentesinquietas.tk, 1 menthiere.fr, 1 menti.com, 1 mentimeter.com, 1 -mentionlink.com, 1 +mentionlink.com, 0 mentiq.az, 1 -mentisapp.com.br, 1 mentolo.tk, 1 mentonein.gov, 1 mentor-fit.com, 1 mentor.gov, 1 -mentorcliq.com, 1 mentoringauchan.es, 1 mentorsinchief.com, 1 mentorzografos.gr, 1 @@ -95551,7 +95912,7 @@ menupay.com, 1 menureader.ml, 1 menzel.de, 1 menzel4you.tk, 1 -menzzo.com.br, 1 +menzzo.com.br, 0 meo.cz, 1 meo.de, 1 meo.es, 1 @@ -95567,6 +95928,7 @@ meowmc.net, 1 meowstodon.net, 1 meowtech.network, 1 mepassport.com, 1 +mepau.com.au, 1 mepc.jp, 1 mepcoeng.ac.in, 1 mephedrone.org, 1 @@ -95591,7 +95953,6 @@ meraldamulder.eu, 1 meraldamulder.net, 1 meraldamulder.org, 1 meran.in, 1 -merandian.com, 1 meransuedtirol.com, 1 merata.net, 1 mercadobitcoin.com.br, 1 @@ -95628,10 +95989,14 @@ mercadopago.com.mx, 1 mercadopago.com.pe, 1 mercadopago.com.uy, 1 mercadopago.com.ve, 1 +mercadoshops.cl, 1 mercadoshops.com, 1 +mercadoshops.com.ar, 1 +mercadoshops.com.br, 1 +mercadoshops.com.co, 1 +mercadoshops.com.mx, 1 mercadoshops.com.ve, 1 mercanix.co.uk, 1 -mercanpos.com, 1 mercans.co, 1 mercans.com, 1 mercatino-olomouc.cz, 1 @@ -95639,9 +96004,8 @@ mercatinomusicale.com, 1 mercatoday.com, 1 mercatoitticosbt.it, 1 mercatotime.com, 1 -mercatus.ro, 1 mercazaragoza.es, 1 -merceariacentral.com, 1 +mercdev.com, 1 mercedelectionsca.gov, 1 mercedes-anciennes.fr, 1 mercedes-benz-arena-stuttgart.de, 1 @@ -95656,7 +96020,10 @@ mercercountypa.gov, 1 mercerisland.gov, 1 merchant-portal.co.kr, 1 merchantaccountsolutions.com, 1 +merchcity.com, 1 merchstudio.ru, 1 +merck-animal-health.ca, 1 +merck-animal-health.com, 1 merco.com.au, 1 mercode.eu.org, 1 mercosuleditora.com.br, 1 @@ -95669,7 +96036,6 @@ mercury.photo, 1 mercurycards.com, 1 mercuryfinancial.com, 1 mercuryproject.ch, 0 -mercurysecurities.com.my, 1 mercurysquad.tk, 1 mercyseverity.tk, 1 meredithnh.gov, 1 @@ -95680,13 +96046,12 @@ merendonacademy.com, 1 merenita.eu, 1 merenita.net, 1 merezha.ua, 1 +mergeedu.com, 1 mergegroup.com.au, 1 mergellina.tk, 1 meribook.com, 1 meridanas.de, 1 meridanas.me, 1 -meridia.co, 1 -meridianatech.com, 1 meridiangroup.ml, 1 meridianproductscorp.com, 1 meridianrhum.com, 0 @@ -95708,6 +96073,7 @@ merkchest.tk, 1 merke.tk, 1 merkel.me, 1 merklin.gq, 1 +merklingen.de, 1 merlenorman.com, 1 merlet.eu, 1 merlin-memorial.de, 1 @@ -95717,14 +96083,12 @@ merlinnot.com, 1 merlinsmagic.tk, 1 merlinsoap.com, 1 merloaded.rocks, 1 -mermaidmyths.com, 1 mermakov.info, 1 mernau.co, 1 merojob.com, 1 merpay.com, 1 merrettsurvey.com, 1 merrickcountyne.gov, 1 -merricot.co.uk, 1 merrillanwi.gov, 1 merrimacwi.gov, 1 merry-christmas.co.in, 1 @@ -95737,13 +96101,13 @@ mertalisahin.com, 1 mertcangokgoz.com, 1 mertonapp.com, 1 mertonapprentice.com, 1 -mertotomasyon.com, 1 mertuslu.com, 1 meruhealth.com, 0 mervetekinmimarlikinsaat.com.tr, 1 mervewear.com, 1 merylholloway.com, 1 merzai.co.uk, 1 +merzougaonline.com, 1 mes-bouquins.fr, 1 mes-courriers.fr, 1 mes-finances.be, 1 @@ -95760,10 +96124,10 @@ mescaline.org, 1 mescaline.wiki, 1 mesdagh.be, 1 mesec.cz, 1 -mesele.com.tr, 1 mesh.gov, 1 meshcore.forum, 1 meshdigital.io, 1 +meshekard.co.il, 1 meshflow.be, 1 meshflow.net, 1 meshinspector.com, 1 @@ -95775,7 +96139,6 @@ meskiukas.tk, 1 meslekkursu.com, 1 mesmer.tk, 1 mesmerus.net, 1 -mesnumeriques.fr, 1 mesologie-soesterberg.nl, 1 mesomeds.com, 1 mesonandino.tk, 1 @@ -95785,6 +96148,7 @@ mesotheliomacentre.tk, 1 mesotheliomalawfirm-worldwide.tk, 1 mespt.org, 1 mesquitegcd.gov, 1 +mesquitelandscapeservices.com, 1 message-tool.com, 1 messageclient.gq, 1 messagely.com, 1 @@ -95818,15 +96182,17 @@ mesvision.com, 1 mesvt.com, 1 meszlenyiattila.tk, 1 meta-cdn.net, 1 +meta-coaching.uk, 1 meta-ctglobalboard.uk, 1 meta-db.com, 1 meta-word.com, 1 +meta.ai, 1 meta.com, 1 meta4.be, 1 meta48.live, 1 +metaalshopper.nl, 1 metablog.xyz, 1 metabolicmenu.com, 1 -metabolicnutritionpro.com, 1 metabound.co.uk, 1 metabox.io, 1 metacareers.com, 1 @@ -95836,6 +96202,7 @@ metacoda.com, 1 metacode.biz, 1 metacortex.cf, 1 metacred.com, 1 +metacritic.com, 1 metadata.be, 1 metadedi.net, 1 metadesign.com, 1 @@ -95859,6 +96226,7 @@ metalcon.az, 1 metalcorenews.ga, 1 metalempire.tk, 1 metaleonsociety.io, 0 +metalequipped.com, 1 metalevolution.tk, 1 metalfans.be, 1 metalgie.work, 1 @@ -95876,6 +96244,7 @@ metallokonstruktsii.com, 1 metallomania.it, 1 metallosajding.ru, 1 metallrecycling.org, 1 +metallshopper.de, 1 metalmaniac.tk, 1 metalmonocle.com, 0 metalnight.tk, 1 @@ -95910,8 +96279,8 @@ metapublic.com, 1 metarhia.com, 1 metaskil.com, 1 metasolutions.se, 1 +metasophi.com, 1 metastasys.net, 1 -metastitch.in, 1 metasurfaces.com, 1 metasurfforecast.com, 1 metasymbolic.studio, 1 @@ -95929,6 +96298,7 @@ metechmultimedia.com, 1 metecnoamericas.com, 1 meteo-parc.com, 1 meteoabegondo.tk, 1 +meteoariccia.it, 1 meteoben.com, 1 meteobox.co, 1 meteobox.com, 1 @@ -95955,13 +96325,12 @@ metex.exchange, 1 metformin365.tk, 1 method.com, 0 methoddemo.com, 0 -methode-bioscore.com, 1 methode.com, 1 methodist.com.tr, 1 methodisthealth.com, 1 methodistorthopedics.com, 1 methodprinting.com, 1 -methodwise.pt, 1 +methodsofcare.com, 1 methotrexatee.gq, 1 methotrexates.gq, 1 methuen.gov, 1 @@ -95971,9 +96340,12 @@ methwhore.date, 1 methylone.com, 1 meticae.com, 1 metiers.ma, 1 +metimedelivered.com, 1 metin2.community, 1 +metisengineering.com, 1 metitlesearch.com, 1 metiz.site, 1 +metizsoft.com, 1 metkos.pl, 1 metkov.com.ua, 1 metkovic-news.com, 1 @@ -95984,7 +96356,7 @@ metop.de, 1 metoperashop.org, 1 metprint.hu, 1 metrahometheater.com, 1 -metriclan.com, 1 +metreurjob.com, 1 metricmutt.com, 1 metrika.ml, 1 metriks.ru, 1 @@ -96017,6 +96389,7 @@ metromining.com.au, 1 metron-eging.com, 1 metron-networks.com, 1 metron-online.com, 1 +metron.mv, 1 metronidazolee.gq, 1 metronik.it, 1 metronome.ga, 1 @@ -96046,26 +96419,27 @@ metspoedbeschikbaar.nl, 1 mett.nl, 1 metteframarketing.dk, 1 mettelenejohansson.dk, 1 -metthefarmer.com, 1 mettin.org, 1 mettools.co.uk, 1 metu.social, 1 metver.tk, 1 metyweb.ga, 0 -metzlerweb.org, 1 meu-amor.com, 1 -meu.re, 0 +meu.re, 1 meubairro360.com.br, 1 meubanco7.com.br, 1 meubebepa.com.br, 1 +meublesrosa.be, 1 meuemby.com, 1 meugamer.com, 1 meugibi.com, 1 meuitinerario.com.br, 1 meulenerkes.tk, 1 meulivro.biz, 1 +meulk.co.uk, 0 meulocal.ml, 1 meuneneoficial.com.br, 1 +meupix.ai, 1 meuprimeirosite.rio.br, 1 meurisse.org, 1 meusagendamentos.com.br, 1 @@ -96109,11 +96483,9 @@ meyersconstructionandconsulting.com, 1 meyner.com, 1 meyrawinkel.nl, 0 meys.io, 1 -meyster-vertrieb.de, 1 mezcal.amsterdam, 1 mezedokamomata.tk, 1 meziblog.cz, 1 -meziere.org, 1 mezinfo.tk, 1 mezio.pt, 1 mezquetillas.tk, 1 @@ -96121,20 +96493,20 @@ mezzanine.net, 1 mezzehuis.be, 1 mf-fischer.de, 1 mf.me, 1 -mfa-in-berlin.de, 1 mfa-inc.com, 1 mfactory.ca, 1 mfamonitor.com, 1 +mfapass.eu, 1 mfatravaux.fr, 1 mfavis.com, 1 mfcentral.com, 1 mfeasy.in, 1 mfedderke.com, 0 +mfen.de, 1 mferphotography.com, 1 mfg-fx.com, 1 mfgo.link, 1 mfgusa.com, 1 -mfi.center, 1 mfi.co.nz, 1 mfi.io, 1 mfiles.pl, 1 @@ -96143,11 +96515,14 @@ mfits.co.uk, 1 mfldirect.co.uk, 1 mflodin.se, 1 mfmarquesantos.pt, 1 -mfmd.pt, 1 mfoda-eg.com, 1 mforum.com.au, 1 +mfpccprod.com, 1 +mfr-lameignanne.fr, 1 mfrepair.com, 1 mft.global, 1 +mfwd.org, 1 +mfxbe.de, 0 mfxer.com, 1 mfxm.fr, 1 mfyy123.com, 1 @@ -96167,15 +96542,15 @@ mgfgroup.ca, 1 mgfgroup.com, 1 mgfgroup.mx, 1 mgfgroup.us, 1 -mggs.org, 1 +mgfpatrimoine.com, 1 mghiorzi.com.ar, 0 +mghw.ch, 1 mgi.gov, 1 mgi.sh, 1 mgisinc.ca, 1 mgk.com, 1 mgkl.ru, 1 mgknet.com, 1 -mgkpools.com, 1 mgldiffusion.fr, 1 mglobalservices.com, 1 mgm-constructeur.com, 1 @@ -96190,27 +96565,30 @@ mgovcloud.in, 1 mgr-dev.tech, 1 mgrcred.online, 1 mgriff.id.au, 1 -mgroupweb.com, 1 -mgs406.com, 1 +mgrt.net, 1 mgsdb.com, 1 mgsisk.com, 1 mgtbaas.eu, 1 +mgtc.shop, 1 mh-cdn.de, 1 mh-hannover.de, 0 mh-lg.de, 1 +mha.fi, 1 mhabdullah.tk, 1 mhadegree.org, 1 mhadot.com, 1 mhainc.com, 1 mhainfantandtoddler.com, 1 +mhalfter.de, 1 mhasika.tk, 1 mhastey.com, 1 mhatlaw.com, 1 mhc.ab.ca, 1 -mhcdesignstudio.com, 0 +mhcdesignstudio.com, 1 mhdit.de, 1 mhealthspot.com, 1 mheistermann.de, 1 +mhermans.nl, 1 mhf.gc.ca, 1 mhf.rs, 1 mhforce.com, 1 @@ -96224,11 +96602,13 @@ mhi.web.id, 1 mhiler.com, 1 mhilger.de, 1 mhjuma.com, 1 +mhmarket.fr, 1 mhmchauffeurs.co.uk, 1 mhmfoundationrepair.com, 1 mhonline.fr, 1 mhp.net, 1 mhparena-stuttgart.de, 1 +mhshokuhi.ir, 1 mhtdesign.net, 1 mhuig.top, 1 mhurologytriad.org, 1 @@ -96269,7 +96649,6 @@ miaha.ch, 1 miaitaly.shop, 1 mialephoto.com, 1 mialma.live, 1 -mialuxurytravel.com, 1 miami.gov, 1 miamibeachcommunitychurch.com, 1 miamicountyohioauditor.gov, 1 @@ -96311,7 +96690,6 @@ micanetic.com, 1 micareklamajansi.com, 1 micasayestilo.com, 1 micatalogo.club, 1 -micauriasa.ro, 1 micay.ca, 1 micbase.com, 1 micbc.org, 1 @@ -96322,7 +96700,6 @@ micdagostini.com, 1 michadenheijer.com, 1 michael-gerard.com, 1 michael-glaser.de, 1 -michael-heimann.de, 1 michael-hess.com, 1 michael-r.ddns.net, 1 michael-r.dynv6.net, 1 @@ -96337,6 +96714,7 @@ michaelabbas.tk, 1 michaelaelsner.de, 1 michaelahern.net, 1 michaelamead.com, 1 +michaelasawyer.com, 1 michaelband.co, 1 michaelband.com, 1 michaelbeer.co.uk, 1 @@ -96349,11 +96727,12 @@ michaeldancot.com, 1 michaeldjoseph.com, 1 michaeldundas.com, 1 michaeleisen.org, 1 +michaelessek.com, 1 +michaelfoods.com, 1 michaelgehrman.com, 0 michaelglaser.de, 1 michaelgroves.tk, 1 michaelgwynn.tk, 1 -michaelhart.me, 1 michaelhastrich.nl, 1 michaelhayes.tk, 1 michaelholidaybooks.com, 1 @@ -96371,7 +96750,6 @@ michaelliunsky.cn, 1 michaelloveys.com, 1 michaeln.net, 1 michaelolson.blog, 1 -michaelolson.io, 1 michaelpelletterie.it, 1 michaelpfrommer.de, 1 michaelpfrommer.pub, 1 @@ -96380,6 +96758,7 @@ michaelpnaughton.com, 1 michaelroemer.de, 1 michaelschmidt.ch, 1 michaelschubert.com, 0 +michaelstoffer.com, 1 michaeltaboada.me, 1 michaeltruskowski.com, 1 michaelvician.me, 0 @@ -96472,6 +96851,7 @@ micr0lab.org, 1 micra.org.uk, 1 micraftspirits.com, 1 micralite.com, 1 +micrm.vn, 1 micro-credit.tk, 1 microbiologist.tk, 1 microbiologyinfo.com, 1 @@ -96483,12 +96863,16 @@ microblink.com, 1 microcert.cn, 1 microcomploja.com.br, 1 microcosm.com, 1 +microdata.es, 1 +microdesic.com, 1 microdesk.com, 1 microdon.org, 1 microdot.fr, 1 microdots.de, 1 microdrive.pt, 1 +microendo.jp, 1 microferma.site, 1 +microfinance-crimea.ru, 0 microgates.net, 1 microgroove.jp, 1 microhydrony.org, 1 @@ -96534,6 +96918,7 @@ midcarolinaregionalairport.org, 1 midcoastproperties.com, 1 middag.com.br, 1 middascachaca.com.br, 1 +middelstaedt.com, 1 middle-way.de, 1 middleboroughma.gov, 1 middleeasy.com, 1 @@ -96543,6 +96928,7 @@ middlesexwoodpigeonclub.co.uk, 1 middletowndelcopa.gov, 1 middletownny.gov, 1 middletownri.gov, 1 +mide.gob.do, 1 midea.kg, 1 mideo.tk, 1 midesa.eu, 1 @@ -96576,18 +96962,18 @@ midpss.lt, 1 midrandsolarsystems.co.za, 1 midrange.com, 1 midress.club, 1 +midrocket.com, 1 midspace.co.uk, 1 midspss.lt, 1 midterm.us, 1 +midtownattowncenter.com, 1 midtowndentist5thave.com, 1 midtownsouthcc.org, 1 midvalleysewer.gov, 1 midville-ga.gov, 1 midwaycitysanitaryca.gov, 1 midwest-hidta.gov, 1 -midwest-material.com, 1 midwest737simulations.com, 1 -midwestapologetics.org, 1 midwestbloggers.org, 1 midwestern.edu, 1 midwesternpsych.org, 1 @@ -96602,13 +96988,14 @@ miedge.net, 1 miegl.com, 1 miegl.cz, 1 mielboreal.com, 0 +mielehybla.it, 1 mielelpinsapar.com, 0 mielenosoitukset.fi, 1 mielkan.com, 1 miem.us, 1 miembarcacion.com, 1 miemus.eu, 1 -mieresabadus.ro, 0 +mieresabadus.ro, 1 mierloiu.ro, 1 miesmuschel.tk, 1 mieszkania-wroclaw.tk, 1 @@ -96617,6 +97004,7 @@ mieterschutzkartei.de, 1 mietwohnungen-vermietung.com, 1 mieuxgrandir.ch, 0 miezzie.nl, 1 +mifacturabolivia.com, 1 mifflincountypa.gov, 1 miffy.me, 1 mifi.holdings, 1 @@ -96631,14 +97019,15 @@ miggy.org, 1 migherworld.com, 1 mighit.ml, 1 mightyfive.tk, 1 -mightygadget.com, 0 +mightygadget.com, 1 mightyoakmarketing.ca, 1 mightytext-ios.tk, 1 mightytips.biz, 0 -mightytips.com.br, 0 +mightytips.com.br, 1 mightytips.hu, 0 migliorailtuoambiente.it, 1 migliori-siti-di-incontro.com, 1 +migliorini.adv.br, 1 mignonne.com, 0 mignonneapi.com, 1 migrafill.net, 1 @@ -96665,6 +97054,7 @@ migueloblitas.tk, 1 miguelpallardo.tk, 1 miguelquijano.com.co, 1 miguelstreeservices.com, 1 +miguia.tv, 1 mihaelacozma.ro, 0 mihaijoe.fr, 1 mihaiordean.com, 1 @@ -96678,9 +97068,11 @@ mihgroup.net, 1 mihir.ch, 1 mihirsingh.com, 1 mihnea.net, 1 +mihomesource.com, 1 mihsislander.org, 1 mihu233.com.cn, 1 miih-kiosk.com, 1 +miikun95.net, 1 miimhort.com, 1 miisy.com, 1 miisy.eu, 1 @@ -96778,7 +97170,6 @@ mijntrined.nl, 1 mijnvogaanvraag.nl, 1 mijnwefact.nl, 1 mika.moe, 1 -mikaconor-schneider.de, 1 mikado-rybak.ru, 1 mikadoe.nl, 0 mikaelf.com, 1 @@ -96798,12 +97189,14 @@ mike-bland.com, 1 mike-burns.com, 1 mike-et-pascale-sanger.com, 1 mike-stobbe.de, 1 +mike.fo, 1 mikeandemily.duckdns.org, 1 mikeblazer.net, 1 mikeblog.site, 1 mikebolynnbuilders.com, 1 mikeburns.tk, 1 mikecapson.com, 0 +mikecb.org, 1 mikechasejr.tk, 1 mikedundas.com, 1 mikefrank.ca, 1 @@ -96811,6 +97204,7 @@ mikegerwitz.com, 1 mikeguy.co.uk, 1 mikeirwinguitarlessons.com, 1 mikeklidjian.com, 1 +mikekreuzer.com, 1 mikelpradera.tk, 1 mikelundpainting.com, 1 mikemcgeephotography.com, 1 @@ -96833,7 +97227,6 @@ mikewrites.online, 1 mikeybot.com, 1 mikeylab.com, 1 mikeyroxtravels.com, 1 -mikezak.music, 1 mikhail-youzhny.tk, 1 mikhailkolesnikov.tk, 1 mikhalt.tk, 1 @@ -96845,8 +97238,8 @@ mikino.cf, 1 mikino.ga, 1 mikino.gq, 1 mikino.ml, 1 -mikizol.ru, 1 mikkei.space, 1 +mikkel.cc, 1 mikkelscheike.com, 1 mikkipastel.com, 1 mikkohuupponen.com, 0 @@ -96854,9 +97247,7 @@ mikkonen.bio, 1 mikkonen.com, 1 miklcct.com, 1 miklima.pl, 1 -miklus.pl, 1 mikodojo.tk, 1 -mikolajpawelsapek.eu, 1 mikonmaa.fi, 1 mikori.sk, 1 mikorrhiza-gomba.hu, 1 @@ -96867,8 +97258,6 @@ mikrokosmos.tk, 1 mikropixel.de, 1 mikroskopmedia.com, 1 mikrotech.co.za, 1 -mikrotest.com.tr, 1 -mikrotik.com, 1 mikrotike.tk, 1 mikrozajmy-na-kartu.cf, 1 miku-doujin.com, 1 @@ -96885,6 +97274,7 @@ mil-spec.ch, 0 mil.ee, 0 mil0.com, 1 milacronindia.com, 1 +milad.nu, 1 milaelaine.net, 1 milagrotequila.com, 1 milahendri.com, 1 @@ -96896,7 +97286,6 @@ milani.io, 1 milania.de, 1 milanm.org, 1 milanmi.gov, 1 -milannews24.com, 1 milannooptical.com, 1 milano-web.it, 1 milano.law, 1 @@ -96970,10 +97359,10 @@ militarysrit.tk, 1 militer.id, 1 miliumnet.tk, 1 milivcounty.gov, 1 -milk.com.sg, 1 milk.games, 1 milk.xyz, 1 milk3soft.ai, 1 +milka.fr, 1 milkaalpesiutazas.hu, 1 milkacat.com, 1 milkagyengedseg.hu, 1 @@ -96982,7 +97371,6 @@ milkameglepetes.hu, 1 milkeclair.com, 1 milkenroar.com, 1 milkingmachine.tk, 1 -milkmakesitmerrier.com, 1 milkmoovement.io, 1 milkteacant.com, 1 milkypond.org, 1 @@ -97025,6 +97413,7 @@ millibirlik.tk, 1 millibitcoin.jp, 1 milliegrace.org, 1 millikart.az, 1 +millionaire.email, 1 millionaireclub.tk, 1 millionairemethodsacademy.tk, 1 millioncloud.org, 1 @@ -97067,6 +97456,7 @@ mim-standaard.nl, 1 mim.am, 1 mim.properties, 1 mimamau.de, 1 +mimarchi.nl, 1 mimavision.ddns.net, 1 mimemo.io, 1 mimeo.digital, 1 @@ -97074,10 +97464,8 @@ mimercadillo.tk, 1 mimgnj.com, 1 mimikov.cz, 1 miminek.cz, 1 -mimishopbeauty.fr, 1 mimithedog.com, 1 mimm.gov, 1 -mimmos.org, 1 mimnoparvar.com, 1 mimocad.io, 1 mimoesthetic.com, 1 @@ -97092,14 +97480,13 @@ mimumimu.net, 1 mimundodxn.com, 1 mimura.com.br, 1 mimusic.cf, 1 -mimyoi.com, 1 min-forsyning.dk, 1 min.kiwi, 0 min2.ru, 1 minacssas.com, 1 minademonic.org, 1 minaio.tk, 1 -minakov.pro, 0 +minakov.pro, 1 minamassimo.org, 1 minamo.io, 1 minantavla.se, 0 @@ -97124,6 +97511,7 @@ mind-media.com, 1 mind-moves.es, 1 mindandfull.ga, 1 mindask.tk, 1 +mindblown.pl, 1 mindbodybalance.health, 1 mindbodycoaching.no, 1 mindbodysoul.us, 1 @@ -97139,22 +97527,21 @@ mindeasy.co.nz, 1 mindempowerment.org, 1 mindenitt.ga, 1 mindequityinternational.com, 1 -mindera.com, 1 +mindera.com, 0 minderrestdatkanbest.nl, 1 mindfab.de, 1 mindfactory.de, 1 mindflowmarketing.com, 0 mindfront.ai, 1 -mindfront.engineering, 1 mindfully.com, 0 mindfulnessjourney.ca, 1 mindfulslumber.com, 1 -mindfultherapies.org, 1 mindgard.co.uk, 1 mindgtc.com, 1 mindingourway.com, 1 -mindjack.xyz, 1 mindjee.tk, 1 +mindkrafttech.com, 1 +mindleaking.org, 1 mindmatters.social, 1 mindmax.fi, 1 mindmeister.com, 1 @@ -97168,7 +97555,7 @@ mindprod.com, 1 mindq.co.uk, 1 mindrazr.com, 1 mindresti.tk, 1 -mindscapephotos.de, 0 +mindscapephotos.de, 1 mindset-energie.ch, 1 mindshiftleadership.com, 1 mindspliteffect.tk, 1 @@ -97179,12 +97566,15 @@ mindthe5.org, 1 mindthebridge.com, 1 mindthemum.com, 1 mindtherock.com, 1 +mindtickle.com, 1 mindvsmind.tk, 1 mindwork.space, 1 mine-craftlife.com, 1 mine-pixl.de, 1 mine-temoin.fr, 1 mine260309.me, 0 +mineads.gg, 1 +minebbs.com, 0 minebitcoin.tk, 1 minecity.fun, 1 minecraft-game.ga, 1 @@ -97197,8 +97587,10 @@ minecraft.wiki, 1 minecraftbestroyale.gq, 1 minecraftdolarcube.gq, 1 minecrafteasy.gq, 1 +minecraften.net, 0 minecraftforever.tk, 1 minecraftforum.de, 1 +minecraftforum.fun, 1 minecraftforum.ovh, 1 minecraftgoldwar.tk, 1 minecraftgta5.ml, 1 @@ -97223,7 +97615,6 @@ minelucky.net, 1 minepack.net, 1 mineralhottub.com, 1 mineralnibani.bg, 1 -mineraluterapeutai.lt, 1 minered.org, 0 minerstat.com, 0 minersvillepa.gov, 1 @@ -97248,7 +97639,6 @@ mingkai.me, 1 mingle2.com, 1 minglly.in, 1 mingram.net, 1 -mingsirjewels.com, 1 mingwah.ch, 0 mingy.ddns.net, 1 mingyannet.com, 1 @@ -97315,6 +97705,7 @@ minimepet.com, 1 minimonies.tk, 1 minimoon.nl, 1 minimotogp.tk, 1 +minimundo3d.com, 1 minin.tk, 1 mining-club.tk, 1 mining-technology.com, 1 @@ -97336,6 +97727,7 @@ ministeriodeeducacion.gob.do, 1 ministory.tk, 1 ministryhire.com, 1 ministryofinternet.eu, 1 +ministryofsound.com, 1 ministryofvillas.com, 1 ministudio.ml, 1 ministyle.ro, 1 @@ -97352,6 +97744,7 @@ mink-coat.tk, 1 minka.net.bo, 1 minkafighter.eu, 1 minkatilmancoaching.nl, 1 +minkymoon.jp, 1 minload.com, 1 minly.com, 1 minmaxgame.com, 1 @@ -97367,7 +97760,6 @@ minnesotahealthcareconsortium.gov, 1 minnesotalakemn.gov, 1 minnesotatitlesearch.com, 1 minng.cc, 1 -minnippi.com.au, 1 minnisites.com, 1 minnit.chat, 1 minnowmountain.com, 1 @@ -97396,7 +97788,6 @@ minsterbank.com, 1 mint-frauen-bw.de, 1 mintal.is, 1 mintblau.com, 1 -mintbuilder.com, 1 mintcast.org, 1 mintclass.com, 1 mintdsmile.com.au, 1 @@ -97409,6 +97800,7 @@ mintitafever.tk, 1 mintlayer.org, 1 minto.cc, 1 minton.systems, 1 +mintosherbs.com, 1 mintosoft.net, 1 mintplayer.com, 1 mintse.com, 0 @@ -97422,9 +97814,9 @@ minube.co.cr, 1 minucio.co, 1 minul.in, 1 minutamody.cz, 1 -minutashop.ru, 1 minuteflightdeals.com, 1 minuten-drogentests.de, 1 +minutepunchline.com, 1 minuterice.com, 1 minutoscomdeus.com.br, 1 minux.info, 1 @@ -97434,7 +97826,6 @@ miobeach.nl, 1 miobt.eu.org, 0 miodun.pl, 1 miodysudnik.pl, 1 -mioffice.ai, 1 miomiojoyeria.com, 0 miomiorun.com, 0 miorganics.ro, 1 @@ -97444,6 +97835,8 @@ mipadlettings.com, 1 mipapo.de, 1 mipediatra.tk, 1 mipesa.cz, 0 +mipiaci.co.nz, 0 +mipiaci.com.au, 0 miplanilla.com, 1 mipolak.eu, 1 mipromo.com, 1 @@ -97501,6 +97894,7 @@ mirazperu.tk, 1 mircreditov.tk, 1 mircsohbet.tk, 1 mirdetaley.tk, 1 +mirdukkkkk.space, 1 mireiaseuba.com, 1 mireillewendling.com.br, 1 miremedio.cl, 1 @@ -97529,10 +97923,9 @@ mironized.com, 1 mironov.tk, 1 miroslav.ca, 1 miroslav.id, 1 -mirotakampus.com, 1 +mirotakampus.com, 0 mirprav.tk, 1 mirri.net, 1 -mirrordata.net, 1 mirrordream.net, 1 mirrormirror.tk, 1 mirrormirrorhairstyles.com, 1 @@ -97558,6 +97951,7 @@ mis1042.com, 0 mis1042.top, 1 misagarcia.com, 1 misaka.me, 1 +misakaloli.com, 0 misaki0.jp, 1 misakiya.co.jp, 1 misalacuna.cl, 1 @@ -97577,6 +97971,7 @@ mishpatim.tk, 1 mishrahome.com, 1 mishraweb.com, 1 misiepluszowe.com, 1 +misinforpedia.com, 1 misinstrumentos.com, 1 misite.ddns.net, 1 misiunas.eu, 1 @@ -97585,7 +97980,6 @@ miskatonic.org, 1 misoji-resist.com, 1 misol.kr, 1 mispelis.tk, 1 -misr-alalmanya.com, 1 misreflexiones.tk, 1 misreports.in, 1 miss-inventory.co.uk, 1 @@ -97629,6 +98023,8 @@ missouri-sky.tk, 1 missouricity-airductcleaning.com, 1 missouriheatingcoolingadvice.com, 1 missourititlesearch.com, 1 +missourivalleyhomes.com, 1 +missoy.me, 1 misspoliticsaustralia.cf, 1 misspoliticsaustralia.ga, 1 misspoliticsaustralia.gq, 1 @@ -97644,6 +98040,7 @@ missworldinfo.tk, 1 missycosmeticos.com.br, 1 missycraindance.com, 1 missyjay.tk, 1 +mist79.ru, 1 mistades.ga, 1 mistajsay.com, 1 mistaken.pl, 1 @@ -97681,8 +98078,7 @@ mistressnadine.tk, 1 mistressofbeads.tk, 1 mistressofthehouseofbooks.com, 1 mistrivolantu.cz, 1 -misungkim.com, 1 -misupportit.dk, 0 +misupportit.dk, 1 misura.re, 1 misw.jp, 1 miswonline.nl, 1 @@ -97709,7 +98105,9 @@ mitenloytaatoita.fi, 1 mitenloytaatyota.fi, 1 mitensaadatoita.fi, 1 mitensaadatyota.fi, 1 +mitersonfishing.bg, 1 mitev.gq, 1 +mitevi.com, 1 mitfahrgelegenheit.de, 1 mitfreespeech.org, 1 mitgrussen.de, 1 @@ -97732,17 +98130,20 @@ mitjavila.com, 1 mito-huutou.shop, 1 mito-meishi.shop, 1 mitokashi.ml, 1 -mitometals.lv, 0 +mitometals.lv, 1 mitotalplay.com.mx, 1 +mitozen.com, 1 mitragacor.org, 1 mitranlogistik.com, 1 mitraseo.tk, 1 mitratech.com.br, 1 +mitrausahagoto.com, 1 mitrax.com.br, 1 mitre-bedford.org, 1 mitre10.com.au, 0 mitrecaasd.org, 1 mitremai.org, 1 +mitroo.fun, 1 mitrostudios.com, 1 mitsannapolis.com, 1 mitsign.com, 1 @@ -97806,7 +98207,7 @@ mix-it.net, 1 mix-recruit.jp, 1 mix.my, 1 mixandplay.tk, 1 -mixedbypaulboutin.com, 1 +mixedanimals.com, 0 mixedrecipe.com, 1 mixer.cz, 1 mixerfestival.com.br, 1 @@ -97817,6 +98218,7 @@ mixheberg.fr, 1 mixi.social, 1 mixify.ga, 1 mixingnight.com, 1 +mixingnightaudio.com, 1 mixmastermitch.com, 1 mixmastersdeejays.tk, 1 mixmister.com, 1 @@ -97824,13 +98226,11 @@ mixmix.tk, 1 mixnix.tk, 1 mixnmojo.com, 1 mixon.tk, 1 -mixora.com.tr, 1 mixov.net, 1 mixpanel.com, 0 mixposure.com, 1 mixtapesammelstelle.de, 1 mixxie.moe, 1 -mixyero.online, 1 miyagi-ctr.com, 1 miyagi-r.com, 1 miyajima-ken.jp, 1 @@ -97840,11 +98240,11 @@ miyamane-room.com, 1 miyanaga.tech, 1 miyasyou.com, 1 miyatadc-ike.com, 1 +miyatadc-mita.com, 1 miyatakaikei.com, 1 miyavru.com, 1 miyazakian.com, 1 miyohiro.net, 1 -miyokoofficial.com, 1 miyokosamurai.com, 1 miyoshi-kikaku.co.jp, 1 miyoshi-kikaku.com, 0 @@ -97879,9 +98279,7 @@ mjollnir.fr, 1 mjpromotions.nl, 1 mjpronk.nl, 1 mjrlegends.com, 1 -mjs.art, 1 -mjs.social, 1 -mjsdefenceacademy.com, 1 +mjs-soft.de, 1 mjsports.bet, 1 mjstudios.tk, 1 mjt.me.uk, 1 @@ -97909,7 +98307,6 @@ mkcert.org, 1 mkchandler.com, 1 mkdevice.it, 1 mkesolutions.net, 1 -mketimber.com.sg, 1 mkey-solution.at, 1 mkey-solution.com, 1 mkey-solution.de, 1 @@ -97923,7 +98320,6 @@ mkeysolution.de, 1 mkeysolutions.at, 1 mkeysolutions.com, 1 mkeysolutions.de, 1 -mkfilms.love, 1 mkg-laposte.info, 1 mkg-pch.com, 1 mkga.info, 1 @@ -97941,7 +98337,6 @@ mkkkrc.ru, 1 mklenterprisesacademy.com, 1 mklenterprisescoaching.com, 1 mklpedia.de, 1 -mklweb.fr, 1 mklwork.lt, 1 mkm.com, 1 mkm.ee, 0 @@ -97949,8 +98344,8 @@ mkm.szczecin.pl, 1 mkmaster.tk, 1 mkmedien.tk, 1 mkoppmann.at, 1 -mkor.je, 1 mkpdeepclean.com, 1 +mkpeurope.org, 1 mkplay.io, 1 mkprensa.tk, 1 mkrecek.cz, 1 @@ -97958,12 +98353,11 @@ mkringel.de, 0 mksdarchitects.com, 1 mkse.com, 1 mkt.com, 1 +mkt.cx, 1 mkt7.de, 1 mktcoral.com, 1 -mktest.com, 1 -mktzap.com.br, 1 +mktemp.org, 1 mkultraclean.com.au, 1 -mkw-grossefehn.de, 1 mkw.st, 1 mkws.sh, 1 ml.tax, 1 @@ -97977,9 +98371,10 @@ mlawfirm.com, 0 mlcfinvest.in, 1 mlclaw.com, 1 mlcnfriends.com, 1 +mlcounsel.com, 1 mlcrosoftonlline.cz, 1 mlcrosoftonlline.ml, 1 -mlelieveld.com, 0 +mlelieveld.com, 1 mlemay.com, 1 mlesniak.pl, 1 mleydier.fr, 1 @@ -98004,6 +98399,7 @@ mlmjunction.tk, 1 mlmowing.com.au, 1 mlnews.ml, 1 mlo.no, 1 +mlohr.com, 1 mlohr.net, 1 mlokcleaning.com, 1 mlonline.com.mx, 1 @@ -98020,6 +98416,7 @@ mlshh.pp.ua, 1 mlstav.sk, 1 mlstverse.org, 1 mltrade.ml, 1 +mlukas.xyz, 1 mlv-psychosomatik.de, 1 mlv.me, 1 mlytics.com, 1 @@ -98046,6 +98443,7 @@ mmav.live, 1 mmbrands.co.nz, 0 mmcalc.jp, 1 mmcase.ml, 1 +mmdc.ru, 0 mmdriving.ca, 1 mme.re, 1 mmhome.fr, 1 @@ -98076,8 +98474,8 @@ mmpiservices.fr, 1 mmprojects.nl, 1 mmquality.com, 1 mmr.ua, 1 +mmrproperty.co.za, 1 mms.is, 1 -mmsindustries.com, 1 mmsl.cz, 1 mmstick.tk, 1 mmstudio.tk, 1 @@ -98107,6 +98505,7 @@ mne.moe, 1 mnec.io, 1 mneeb.de, 1 mnemonic.ninja, 1 +mnews.it, 1 mngfam.ddns.net, 1 mnguyen.io, 1 mnhc.gov, 1 @@ -98115,6 +98514,7 @@ mnienamel.com, 1 mniopenresearch.org, 1 mnium.de, 1 mnjg123.de, 1 +mnml.blog, 1 mnmt.no, 1 mnnknz.de, 1 mno.family, 1 @@ -98127,7 +98527,6 @@ mnogoznai.tk, 1 mnotrioesdp.ml, 1 mnpl.ir, 1 mnprairie.gov, 1 -mnready.org, 1 mnrloroli.tk, 1 mnrtechsolutions.com, 1 mns.co.jp, 1 @@ -98138,7 +98537,6 @@ mnt9.com, 0 mnt9.de, 1 mnvotes.gov, 1 mo-en-karim.tk, 1 -mo-mochizuki.com, 1 mo-sick.net, 1 mo-vvs.dk, 1 mo.co.uk, 1 @@ -98150,8 +98548,10 @@ moabygg.se, 1 moaf.org, 1 moaicar.com, 1 moalboaladventures.com, 1 +moas.design, 1 moas.photos, 1 mob-tok-shop.hu, 1 +mob2con.com.br, 1 mob4hire.com, 1 mob889.com, 1 moba-automation.com, 1 @@ -98159,7 +98559,6 @@ moba-automation.com.br, 1 moba-automation.de, 1 mobal.com, 0 mobappcreator.com, 1 -mobashop.net, 1 mobclan.tk, 1 mobcsp.work, 1 mobele.fr, 1 @@ -98176,13 +98575,11 @@ mobil-bei-uns.de, 1 mobil11.net, 1 mobila-chisinau.md, 1 mobilab-ooe.at, 1 -mobilboyut.com, 1 mobilci.net, 1 mobildeal.id, 1 -mobildingser.com, 1 mobile-discothek.at, 1 mobile-holzofenpizza.de, 1 -mobile-industrial-robots.com, 0 +mobile-industrial-robots.com, 1 mobile-ivr.tk, 1 mobile-news.tk, 1 mobile-retter.de, 1 @@ -98190,22 +98587,22 @@ mobile.de, 1 mobile.tiaa.org, 1 mobile.united.com, 0 mobile.usaa.com, 0 +mobile360.ph, 1 mobileague.ml, 1 mobilebingoclub.co.uk, 1 mobilebooster.tk, 1 mobileciti.com.au, 1 mobilecraftingco.com, 1 +mobilefactory.io, 1 mobilefidelity-magazin.de, 1 -mobilegameslist.com, 1 mobilegoldcoastelectrical.ga, 1 mobilehydraulics.com.au, 1 mobilelaby.com, 1 mobilelobbyers.ga, 1 mobilemechanicdenver.org, 1 -mobilemedicaldiagnostics.ie, 1 -mobileminds.se, 1 mobileone.com.my, 1 mobilepartner.tk, 1 +mobilepricepk.com, 1 mobiler-handel.de, 1 mobileread.com, 1 mobileritelushi.com, 1 @@ -98233,7 +98630,6 @@ mobilis.dz, 1 mobilisation-generale.org, 0 mobility-events.ch, 1 mobility-services.eu, 1 -mobilityworks.eu, 1 mobilityworld.tk, 1 mobilize.us, 1 mobilizon.fr, 1 @@ -98242,7 +98638,7 @@ mobilizone.com, 1 mobilki.tk, 1 mobilni.site, 1 mobilo4ka.ru, 1 -mobilosoft.com, 0 +mobilosoft.com, 1 mobiltank.fr, 1 mobiltune.tk, 1 mobilux.lv, 1 @@ -98255,8 +98651,7 @@ mobiotics.com, 1 mobiride.co, 1 mobistartv.ml, 1 mobius.network, 1 -mobiusnetworks.co.uk, 1 -mobizent.com, 1 +mobix-diskothek.de, 1 mobmp4.info, 1 mobobe.com, 1 mobolight.ml, 1 @@ -98273,10 +98668,9 @@ moca-2081.com, 1 moca-2082.com, 1 mocanu.pro, 1 mocap.co.th, 1 -mocaro.de, 1 +mocasa.com, 1 mocdltraining.com, 1 mocent.de, 1 -mochi.lol, 1 mochilerostailandia.com, 1 mochiyuki.net, 1 mochizuki.moe, 0 @@ -98300,7 +98694,9 @@ modafilmdmodafinil.com, 1 modafinil.wiki, 1 modafinilyes.com, 1 modafo.com, 1 +modahaber.com, 1 modalogi.com, 1 +modalrakyat.com, 1 modaltraining.co.uk, 1 modamia.pl, 1 modamoom.com.br, 1 @@ -98330,7 +98726,6 @@ modecaso.com, 1 modee.gov.jo, 1 modehaus-marionk.de, 1 model-school.tk, 1 -model-shop.sk, 1 model.earth, 1 modelarea.com, 1 modelareaimg.com, 1 @@ -98346,24 +98741,20 @@ modell-lq.net, 1 modellbahnshop.de, 1 modellbahnverwaltung.de, 1 modellismo.roma.it, 1 -modelmyretirement.com, 1 models-resource.com, 1 modelspoor-projecten.nl, 1 modelverse.online, 1 -modelworks.ai, 1 modem.cf, 1 modemchild.net, 1 modenatoday.it, 1 modenodf.ru, 1 +moderaterna.se, 1 moderatoren.org, 1 modern-gaming.ga, 1 modern-metal-solutions.com, 1 -modern-networks.co.uk, 1 modernapprenticeships.org, 1 -modernastro.com, 1 modernautorepairs.com, 1 modernbank.com, 1 -modernbuildremodel.com, 1 moderncat.com, 1 moderncommercialrealestate.com, 0 moderndayprepping.com, 1 @@ -98381,9 +98772,11 @@ moderntech.dk, 1 moderntld.net, 1 moderntrainer.co.za, 1 moderntreasury.com, 0 +modernwebz.com, 1 modernworkplacelearning.co.za, 1 modernx.de, 1 modesalination.com, 1 +modeser.com, 1 modesofcriticism.org, 1 modestoca.gov, 1 modetalente.com, 1 @@ -98391,8 +98784,6 @@ modetrends.tk, 1 modgamer.gq, 1 modgnews.com, 1 modicollege.com, 1 -modicum.studio, 1 -modified.games, 1 modineaviation.com, 1 modint.nl, 0 modintelechy.com, 1 @@ -98402,9 +98793,10 @@ modistryusercontent.com, 1 modlimit.cf, 1 modperl.pl, 1 modpop.se, 1 -modrynstudio.com, 0 +modrynstudio.com, 1 modscrew.com, 1 modsecurity.net, 1 +modstumblguys.com, 1 modszombies.com, 1 modul21.eu, 1 modul8r.com, 1 @@ -98421,12 +98813,14 @@ modusawperandi.com, 1 modusgames.com, 1 modusit.co.za, 1 modusmundi.com, 1 +modussystems.com, 1 modvigilonlinerx.com, 1 modxvm.com, 1 modzcenter.com, 1 modzcenter.es, 1 moe.best, 0 moe.blog, 0 +moe.ci, 1 moe.tools, 1 moe4sale.in, 1 moebeltaxi-berlin.com, 1 @@ -98434,10 +98828,12 @@ moeblog.cn, 1 moeblog.top, 1 moec.top, 1 moecater.com, 1 -moedershart.nl, 1 +moechel.com, 1 +moedb.net, 1 moefactory.com, 1 moefire.tech, 1 moegi.ml, 1 +moego.me, 1 moego.pet, 1 moehlerinstitut.de, 1 moehrke.cc, 1 @@ -98451,7 +98847,6 @@ moelten.org, 1 moenew.us, 1 moenjodaro.tk, 1 moensnatuursteen.be, 1 -moenviron.com, 1 moerugomi.com, 1 moesborg.dk, 1 moescat.xyz, 0 @@ -98471,6 +98866,7 @@ mofos.com, 1 mofosnetwork.com, 1 mofospremium.com, 1 mofosreel.com, 1 +mogbox.net, 1 mogeth.in, 1 mogica.tk, 1 mogilev-forum.tk, 1 @@ -98481,7 +98877,6 @@ moguchat.ai, 1 mogwailabs.de, 1 mogyuchi.com, 1 moha-swiss.com, 0 -moha.gov.gy, 1 mohaabobclan.tk, 1 mohaanation.tk, 1 mohabatein1.tk, 1 @@ -98528,12 +98923,12 @@ moj-kosciol.pl, 1 mojaapteka.pl, 1 mojaczarnastrona.pl, 1 mojadm.sk, 1 +mojaknjiznica.com, 0 mojakursumlija.tk, 1 mojama3dz.com, 1 mojapeticia.sk, 1 mojartech.ml, 1 mojavenissanofbarstowparts.com, 1 -mojaveresearchinc.com, 1 mojavibe.com, 1 mojdrvar.tk, 1 moje-communication.de, 1 @@ -98574,7 +98969,6 @@ mokawenat.com, 1 mokeedev.com, 1 mokeedev.review, 1 mokenney.com, 1 -mokhan.ca, 1 moklee.com.sg, 1 mokrynskyi.com, 1 moksha-movement.com, 1 @@ -98585,6 +98979,7 @@ molaclothing.pt, 0 mold-tech.com, 1 mold.world, 1 molddesigner.com, 1 +moldova-news.com, 1 moldova-online.ml, 1 moldovanka.tk, 1 moldovawall.tk, 1 @@ -98596,13 +98991,13 @@ molehill.it, 1 molenaagtekerke.tk, 1 molenaar-ricardo.tk, 1 moleremovalsandiego.com, 1 -molexces.com, 0 +molexces.com, 1 molezzo.com, 1 molinillo.tk, 1 +molise.store, 1 molkerei-ammerland.com, 1 molleron.net, 1 molletjesveer.tk, 1 -mollie.com, 1 mollybears.org, 1 mollyblooms.tk, 1 mollyjayne.com, 1 @@ -98656,10 +99051,12 @@ momochrome.online, 1 momondersteuning.nl, 1 moms.com, 1 momsagainstcooties.com, 1 +momsays.co.za, 1 momsbangteens.com, 1 momsdemandaction.org, 1 momslickteens.com, 1 momspublictube.com, 1 +momstableonline.com, 1 momtazz.net, 1 momtits.com, 1 momtubevideos.com, 1 @@ -98681,8 +99078,8 @@ mon-match.com, 1 mon-partage.fr, 1 mon-sac-italien.fr, 1 mon-trafic.com, 0 +mon.school, 1 mon22.ch, 0 -mon47.com, 1 monacannation.gov, 1 monaco-info.tk, 1 monacoexpress.tk, 1 @@ -98690,7 +99087,6 @@ monad.io, 1 monagenceentreprise-caap.fr, 1 monarch.security, 1 monarchairgroup.com, 1 -monarchtg.com, 1 monarcjuexpo.ch, 1 monaroindustrial.com.au, 1 monasschminkzauber.de, 1 @@ -98701,10 +99097,12 @@ monays.ga, 1 monbebeautrement.fr, 1 monbedou.net, 1 monbento.com, 1 +moncoachdata.com, 0 monday-consulting.com, 1 mondayaftersunday.com, 1 mondaynightbrewing.com, 1 monde-oriental.tk, 1 +monde.win, 1 mondechenoafrance.tk, 1 mondedie.fr, 1 mondenissin.com, 1 @@ -98725,11 +99123,11 @@ moneck.info, 1 moneoci.com.br, 1 monese.com, 0 moneshaq.fr, 1 -monespaceallianztrade.fr, 1 moneta-rossii.ru, 1 monetag.com, 0 monetenfuchs.de, 1 monetize.ml, 1 +monetizehelper.com, 1 monetizer.co, 1 monetizer.com, 1 monetizzando.it, 1 @@ -98742,12 +99140,14 @@ money-fast.ga, 1 money-finder.ml, 1 money-okey.tk, 1 money-quick.cf, 1 +money-spell.com, 1 money-tapuz.co.il, 1 money-transfers.tk, 1 money-trust.ru, 1 money.bg, 1 money.it, 1 money4net.tk, 1 +moneybill.us, 1 moneybird.com, 1 moneybird.de, 1 moneybird.nl, 1 @@ -98801,6 +99201,7 @@ monicz.pl, 1 monidenum.fr, 1 monific.com, 1 monika.tk, 1 +monikacheangphotography.com, 1 monikadesign.uk, 1 monikapierzchala.com, 1 monin.net, 1 @@ -98833,7 +99234,6 @@ monix.io, 1 monjardin.tk, 1 monjo.io, 1 monjob.tk, 1 -monkel.lu, 1 monkey-donkey.es, 1 monkey47.com, 1 monkey47.events, 1 @@ -98856,7 +99256,6 @@ monodejuegos.shop, 1 monodrama.tk, 1 monohost.ml, 1 monokli.tk, 1 -monolith.plus, 1 monolithapps.com, 1 monolithic.tk, 1 monolithon.net, 1 @@ -98867,8 +99266,9 @@ monopolyjuegos.com, 1 monorail.cf, 1 monorail.ga, 1 monorail.gq, 1 +monordibogue.com, 1 monorthopedagogue.ca, 1 -monoseis-monotica.gr, 1 +monosecurity.se, 1 monosis.net, 1 monoskop.org, 1 monospazzole.roma.it, 1 @@ -98879,7 +99279,6 @@ monpanier-procter-et-gamble.fr, 1 monplay.host, 1 monrabais.fr, 1 monrasp.ddns.net, 1 -monreadshoppingcentre.ie, 1 monroecountycancersupporters.org, 1 monroecountymo.gov, 1 monroecountyny-opi.gov, 1 @@ -98890,10 +99289,10 @@ monroeoregon.gov, 1 monroetn.gov, 1 monroeut.gov, 1 monroviaca.gov, 1 -monsalvat.no, 0 -monsbah.com, 1 +monsalvat.no, 1 monscierge.com, 1 monshoppingcestcalais.fr, 1 +monsieurbureau.com, 1 monsieursavon.ch, 0 monsitemoncommerce.com, 1 monsitetest.ca, 1 @@ -98902,7 +99301,7 @@ monster-ryot.com, 1 monsterarmsest.ga, 1 monstercurves.com, 1 monstergovt.com, 1 -monsterlinkmarketing.com, 0 +monsterlinkmarketing.com, 1 monstermashentertainments.co.uk, 1 monsterminigames.de, 1 monsterminus.tk, 1 @@ -98910,6 +99309,7 @@ monstermoney.tk, 1 monsternet.pl, 1 monstersuniversity.ga, 1 monstertalesgame.com, 1 +monstertraxstudio.com, 1 monsterx.cn, 1 monstl.com, 1 monstresdesfetes.com, 1 @@ -98926,7 +99326,6 @@ montalvofarret.xyz, 1 montanabiack.de, 1 montanacreativitymovement.tk, 1 montanaguard.gov, 1 -montanaitservices.com, 0 montanaonlinedivorce.com, 1 montanarenewables.org, 1 montanatitlesearch.com, 1 @@ -98951,7 +99350,6 @@ monteurzimmerfrei.de, 1 monteurzimmerking.deals, 1 montevista.co.nz, 1 montevue.co.za, 1 -montfranc.com, 1 montgenevre.com, 0 montgomeryboroughpa-police.gov, 1 montgomerycountyal.gov, 1 @@ -98976,6 +99374,7 @@ montiallison.com, 1 monticelloky.gov, 1 monticellomn.gov, 1 montillafarm.com, 1 +montmeyran.fr, 1 montoneros.tk, 1 montop.tk, 1 montourcounty.gov, 1 @@ -99006,40 +99405,41 @@ monzo.me, 1 monzo.tk, 1 moo.software, 1 moocat.me, 1 -moodboardmadeit.com, 1 mooddie.pt, 1 +moodfabrics.com, 1 moodfoods.com, 1 moodgym.com.au, 1 moodgym.de, 1 moodifiers.com, 0 moodle.gq, 1 moodle.servebbs.com, 1 -moodlecfp.pt, 1 moodlegnr.pt, 1 -moodmagicmusic.com, 0 +moodmagicmusic.com, 1 moodsta.com, 1 moodup.team, 1 moodyfssrequest.com, 1 mooglms.com, 1 mooguire.com, 0 mooijwerk.com, 1 +mooivoet.nl, 1 moojp.co.jp, 1 mooka.tk, 1 moola.market, 1 moolah.rocks, 1 moom20101234567890.tk, 1 -moon-runners.net, 1 moon.fish, 1 moonagic.com, 1 moonagic.io, 1 moonbench.xyz, 1 +moonbooth.com, 1 moonboxi.tk, 1 moonboys.de, 1 -moonbyte.at, 0 +moonbyte.at, 1 moonchart.co.uk, 1 moondoor.tk, 1 moondrop.org, 1 moondsee.de, 1 +moonfist.eu, 1 moonflux.com, 1 moonfreak.tk, 1 moonglancecareer.com, 1 @@ -99081,13 +99481,15 @@ mooreautoglass.com, 1 moorelife.cn, 1 mooremi.gov, 1 mooremillerinvestmentgroup.ca, 1 +mooremoney.co, 1 mooresvilletribune.com, 1 mooretownrancheria-nsn.gov, 1 moorfunevents.co.uk, 1 moorheadmn.gov, 1 -mooring.social, 1 moormiles.com, 1 +moorparkelectrical.com, 1 moorparkexteriorlighting.com, 1 +moorparklighting.com, 1 moorstay.com, 1 moort.be, 1 moosic.co, 1 @@ -99097,6 +99499,7 @@ moosmaus.tk, 1 moot-info.co.za, 1 moov.tk, 1 moova.io, 1 +moove-it.com, 1 moovemais.com.br, 1 mopak.tk, 1 moparcraft.net, 1 @@ -99137,6 +99540,7 @@ morbius.cz, 1 morbotron.com, 1 morchstore.com, 1 morcillaencaldera.com, 1 +mord-ost.de, 1 mordamla.com, 1 mordor.email, 1 mordor.land, 1 @@ -99145,8 +99549,10 @@ mordovia.ga, 1 mordovia.gq, 1 mordovia.tk, 1 mordoviya.tk, 1 +more-hikkoshi.com, 1 more-terrain.de, 1 moreal.co, 1 +moreapp.co.uk, 1 morebus.co.uk, 1 morechance.de, 1 morecigarettes.tk, 1 @@ -99158,6 +99564,7 @@ morellilaw.com, 1 moremindsbetter.com, 1 morenadacentral.tk, 1 morenci.ch, 1 +moreoptimal.com, 1 moreoptimal.world, 1 morepablo.com, 1 moreshop.pl, 1 @@ -99172,13 +99579,14 @@ morevesi.cf, 1 morewithcore.com, 1 morfide.com, 1 morgan-insurance.com, 1 +morganappliancerepair.com, 1 morgancounty-al.gov, 1 morgancounty-il.gov, 1 morgancountymo.gov, 1 morgancountysheriffal.gov, 1 morgancountyutah.gov, 1 morgandesort.com, 1 -morganeb.be, 0 +morganeb.be, 1 morganlaroche.com, 1 morganton.com, 1 morganwilder.com, 1 @@ -99191,7 +99599,6 @@ mori-cdc.com, 1 morimoto-d.com, 1 morimoto-tokai.com, 1 morinomiyako-a.co.jp, 1 -moripark.com.my, 1 morisakimikiya.com, 1 morishoji-english-school.com, 0 morishouse.com, 1 @@ -99204,7 +99611,7 @@ moriz.de, 1 moriz.net, 1 morke.tk, 1 morleyeaglesteeball.org, 1 -morlus.com, 0 +morlus.com, 1 mormon-colleges.com, 1 mormonleaks.io, 1 mormonvoiceers.ga, 1 @@ -99214,7 +99621,7 @@ morningbird.eu, 1 morningchew.com, 0 morningcurve.com, 0 morninggarden.com, 1 -morningstar.moe, 0 +morningstar.moe, 1 moroccanews.tk, 1 morocco-vacations.com, 1 moroccofriendlytravel.com, 1 @@ -99223,6 +99630,7 @@ moroccoprivatetransport.com, 1 moroccotodaynews.ga, 1 moroccotourismagency.com, 1 moroccotravelbliss.com, 1 +moroccotravelguru.com, 1 moroccotravelorganizer.com, 1 moroccounfiltered.com, 1 morogoro.tk, 1 @@ -99230,10 +99638,10 @@ morooi.cn, 0 morosystems.cloud, 1 morox.top, 1 morozko.gq, 1 -morozovsreinigung.ch, 1 morozstudio.tk, 1 morozyaka.tk, 1 morph3d.tk, 1 +morphbyte.com, 1 morpheusdata.com, 1 morpheusmobile.com, 0 morpheusrisk.com, 1 @@ -99259,6 +99667,7 @@ morselife.org, 1 mortaltorment.tk, 1 mortazavifar.com, 1 morteau.org, 1 +mortebrume.eu, 1 mortengamstpedersen.tk, 1 mortenhc.dk, 1 mortezaafri.tk, 1 @@ -99274,6 +99683,7 @@ mortonmspd.gov, 1 mortonpoolsolutions.com, 1 morus.tk, 1 morvo.mx, 1 +mos-camin.ru, 1 mos-kanal.ru, 1 mosa.guru, 1 mosa.tk, 1 @@ -99306,7 +99716,10 @@ mosharof-hossain.ml, 1 moshaver-tahsili.com, 1 moshcore.tk, 1 moshegropper.com, 1 +moshiach.ru, 1 +moshop.com.vn, 1 moshwire.com, 1 +mosin.org, 1 mosio.com, 1 moskas.tk, 1 moskeedieren.nl, 1 @@ -99316,26 +99729,28 @@ moskvagruz.tk, 1 moskvayigit.com, 1 moskvitch.org, 1 mosnews.tk, 1 -moso.io, 1 +moso.io, 0 mosobl.tk, 1 mosostore.nl, 1 mosquito-code.com, 1 +mosquito-sklep.pl, 1 mosquitojoe.com, 1 mosr.sk, 1 mossad.gov.il, 1 mossan.net, 1 mosshi.be, 1 +mossia.net, 1 mossipanama.com, 1 mossplants.ru, 1 mossylog.tk, 1 most.tk, 1 mostaccino.com, 1 mostafabanaei.cf, 1 +mostamaracademy.ir, 1 mostazaketchup.com, 1 mostbet.com, 1 mostbet2.com, 1 mostbetr.com, 1 -mostdev.com, 1 mostdisturbingnews.com, 1 mosternaut.com, 1 mostertman.com, 1 @@ -99345,9 +99760,9 @@ mostfamousbirthdays.com, 1 mostlyharmless.at, 1 mostlyoverhead.com, 1 mostmost.tk, 1 -moststudios.com, 1 +mostynlaw.com, 1 mosurist.tk, 1 -mota-engil.com, 1 +moswand.nl, 1 motability.co.uk, 1 motabilitychargeshare.co.uk, 1 motabilitydealer.co.uk, 1 @@ -99364,18 +99779,15 @@ motekforcelink.net, 1 motekforcelink.nl, 1 motekmedical.com, 1 motekmedical.eu, 1 -motekmedical.net, 1 motekmedical.nl, 1 moteksystems.com, 1 moteksystems.net, 1 -motera.ie, 1 motezazer.fr, 1 moth.monster, 1 motherboard.services, 1 motherbrain.tk, 1 motherearth.cf, 1 mothereff.in, 0 -motherfluxer.ai, 1 motherherb.com, 1 motherhood.se, 1 motherhoodinblack.com, 1 @@ -99398,6 +99810,7 @@ motiva.health, 1 motivation.cc, 1 motivational-babes.com, 1 motivationalliance.com, 1 +motivemm.com, 1 motivness.com, 1 motivo.nl, 0 motiweb.fr, 1 @@ -99426,23 +99839,24 @@ motogrupblanes.tk, 1 motohell.com, 1 motojato.com.br, 1 motokados.tk, 1 -motokenstudio.com, 1 motoland.ml, 1 motolife.tk, 1 +motolinesupply.com, 1 motomorgen.com, 1 motonovinky.cz, 1 motor-agro.com, 1 motor-agro.com.ua, 1 +motor-agro.ru, 1 motor-cycles.tk, 1 motor-forum.nl, 1 motor-show.cz, 1 motor1.com, 1 +motoramzsport.com, 1 motorbiketourhanoi.com, 1 motorcityalignment.com, 1 motorcitycasino.com, 1 motorcyclenews.com, 1 motorcyclestudies.org, 1 -motordates.com, 1 motordearranque.com.br, 1 motoreflex.pe, 1 motorfinanceonline.com, 1 @@ -99451,6 +99865,7 @@ motoridiricerca.tk, 1 motorline.ru, 1 motorlubilgiler.com, 1 motorparts-images.nl, 1 +motorparts-online.com, 1 motorrijschool-pitbox8.nl, 1 motorring.ru, 1 motorslopers.tk, 1 @@ -99482,6 +99897,7 @@ mott.pe, 1 motte.tattoo, 1 motto-iikoto.com, 1 motum.no, 1 +motum.se, 1 motumblekinge.se, 1 motumport.se, 1 motumskane.se, 1 @@ -99490,6 +99906,7 @@ moturua.nz, 1 motusins.com, 1 motusrenaultbloemfontein.co.za, 1 motusrenaultmenlyn.co.za, 1 +motusrenaultwonderwaters.co.za, 1 motywacyjnedna.pl, 1 mou-pmr.tk, 1 moube.fr, 1 @@ -99530,7 +99947,8 @@ mountbrowneguestcottage.ga, 1 mountcarrollil.gov, 1 mountclemens.gov, 1 mountdora.gov, 1 -mountescrow.com, 0 +mountescrow.com, 1 +mountfield.co.nz, 1 mounthollyvt.gov, 1 mounthopecommunitycrc.org, 1 mountjoy.school, 1 @@ -99542,7 +99960,7 @@ mountvernonin.gov, 1 mountvernonny.gov, 1 mountvictoryohio.gov, 1 mountwashington-ma.gov, 1 -mouracloset.com.br, 0 +mouracloset.com.br, 1 mourjo.me, 1 mouse-ps.com, 1 mouseflow.com, 1 @@ -99552,7 +99970,6 @@ mousikofidi.info, 1 moussa-ibrahim.ml, 1 moussasolutions.com, 1 mousseacoustique.com, 1 -mouthtogut.com, 1 moutiezhaller.com, 1 mov, 1 movabletype.net, 1 @@ -99563,11 +99980,12 @@ movahoteis.com.br, 1 moval.gov, 1 movavi.id, 1 movavi.ru, 1 +move-out-cleaning.co.uk, 1 moveceara.com.br, 1 movefi.com.br, 1 moveisdecoracao.com.br, 1 moveissul.com.br, 1 -moveitmoveitmovers.com, 0 +moveitmoveitmovers.com, 1 moveltix.net, 1 movemais.com, 1 movember.com, 0 @@ -99588,7 +100006,7 @@ movewisemethod.com.au, 1 moveyourass.tk, 1 moveyourhome.de, 1 movfun.ga, 1 -movian.eu, 1 +movhousekeepingapp.com, 1 movie-infos.net, 1 movie-peg.com, 1 movie-sounds.org, 1 @@ -99599,6 +100017,7 @@ movieeveningers.ga, 1 movieeveningest.ga, 1 moviefreeze.com, 1 movieglot.ml, 1 +moviego.ch, 1 movieguys.org, 1 moviejack.org, 0 moviemadness.uk, 1 @@ -99632,13 +100051,11 @@ movinglogistics.nl, 0 movingoklahoma.org, 1 movingservice-houston.com, 1 movingtohttps.com, 1 -movingtoiceland.com, 1 movingtonewcastle.com, 1 movingtonewcastle.com.au, 1 movio.ga, 1 moviro.net, 1 movlib.org, 1 -movneo.com, 1 movnest.com, 1 mowercountymn.gov, 1 mowsey.org, 1 @@ -99655,10 +100072,8 @@ moyer.pub, 0 moylen.eu, 1 moyminsk.tk, 1 moyobi.com, 0 -moyos.net, 1 moyu.host, 0 moyufangge.com, 1 -moyuhi.jp, 1 moyure.com, 1 moz.idv.tw, 1 mozaic.io, 1 @@ -99668,9 +100083,9 @@ mozektevidi.net, 1 mozfr.org, 1 mozgb.ru, 1 mozgovoy.tk, 1 -mozhiyodu.com, 1 mozilla-russia.org, 1 mozilla.cz, 1 +mozo.com.au, 1 moztopup.com, 1 mozzak.tk, 1 mozzez.de, 1 @@ -99746,11 +100161,11 @@ mpu-ibbi.de, 1 mpu-vorbereitung.com.de, 1 mputra.com, 1 mpy.ovh, 1 +mqacg.com, 1 mqas.net, 1 mqbeauty.com.tw, 1 mqbx.nl, 1 mqroofing.com, 1 -mqtlabs.com, 1 mr-7.ru, 1 mr-a.de, 1 mr-anderson.org, 0 @@ -99787,7 +100202,6 @@ mrbk.sa, 1 mrbounce.com, 1 mrbouncescrazycastles.co.uk, 1 mrbouncycastle.com, 1 -mrbrant.co.uk, 1 mrc-productivity.com, 1 mrc.uk.net, 1 mrca-sharp.com, 0 @@ -99798,7 +100212,7 @@ mrcomer.tk, 1 mrcool.com, 0 mrcool.store, 1 mrcooldiy.ca, 1 -mrcooldiy.com, 0 +mrcooldiy.com, 1 mrcoolevents.com, 1 mrcoolfranchise.com, 0 mrcoolfranchising.com, 0 @@ -99810,9 +100224,8 @@ mrd-v.com, 1 mrd.ninja, 1 mrdatenschutz.de, 1 mrdayman.com, 1 -mrdk.uk, 1 mre.to, 1 -mredsanders.net, 0 +mredsanders.net, 1 mrephrase.com, 1 mrfactors.com, 1 mrfd.nl, 1 @@ -99825,7 +100238,6 @@ mrg-team.ru, 1 mrgeek.ru, 1 mrgstaticcdn.ru, 1 mrgstaticcontent.ru, 1 -mrgsuite.com, 1 mrguider.org, 1 mrgusercontent.ru, 1 mrgutternj.com, 1 @@ -99849,9 +100261,6 @@ mrlove.tk, 1 mrmad.com.tw, 1 mrmanson.tk, 1 mrmarcie.com, 1 -mrmasaleh.com, 1 -mrmatt.io, 1 -mrmave.work, 1 mrmeeb.co.uk, 1 mrmemory.co.uk, 1 mrmeomeo.xyz, 1 @@ -99860,6 +100269,7 @@ mrmn.nl, 1 mrmoregame.de, 1 mrmosier.tk, 1 mrmostafaacademy.tk, 1 +mrmr.biz, 1 mrnabetterlife.com.sg, 1 mrnathanpowell.com, 1 mrnh.tk, 1 @@ -99894,6 +100304,7 @@ mrssclaus.ca, 1 mrstext.com, 1 mrston.ml, 1 mrstuudio.ee, 1 +mrsurething.com, 1 mrtechmelbourne.com, 1 mrtg.com, 1 mrtieungao.tk, 1 @@ -99907,6 +100318,7 @@ mruczek.wiki, 1 mruganiepodspacja.pl, 1 mruniver.se, 1 mrupert.com, 1 +mrux.io, 1 mrux.pl, 1 mrv.li, 1 mrvnt.co, 1 @@ -99917,19 +100329,23 @@ mrwrestling.tk, 1 mrxn.net, 1 mryayapapaya.com, 1 mrzonk.cf, 1 -ms-australia.de, 1 ms-ch.ch, 1 ms-wissenschaft.de, 0 ms295.com, 0 +msa-aesch.ch, 1 msa-net.ru, 1 msa.bank, 1 msafa.org, 1 +msahebhonar.com, 1 msaludasuhogar.com, 1 msar.eu, 1 msbmb.com, 1 msc-fivem.shop, 1 mscc.mu, 1 +msd-animal-health.com, 1 +msd-tiergesundheit.de, 1 msda23.gov, 1 +msdnicrosoft.cn, 0 msdprojectclearmo.gov, 1 msebera.cz, 1 msedkiewicz.pl, 1 @@ -99964,8 +100380,8 @@ msk-news.net, 1 msklawyer.com, 1 msl.org, 0 mslegalsupport.com, 1 -mslinkpc.com, 0 -mslinkphoneqr.com, 0 +mslinkpc.com, 1 +mslinkphoneqr.com, 1 mslivros.com.br, 1 msm.ai, 1 msmadlemon.com, 1 @@ -99974,7 +100390,6 @@ msmaxfac.cz, 1 msmaxfax.cz, 1 msmeble.pl, 1 msmetana.cz, 1 -msmt.cz, 1 msn.cn, 1 msn.com, 1 msnarzedzia.pl, 1 @@ -99993,15 +100408,14 @@ msp66.de, 0 mspark.tk, 1 mspatexas.com, 1 mspcc.org, 1 +msphotographics.de, 0 mspnocsupport.com, 1 -mspredict.com, 1 mspsocial.net, 1 mspvendors.com, 1 msquadrat.de, 0 msquared.id.au, 1 msr-schaltanlagen.de, 1 msrf.de, 1 -msrl.com, 1 msrmotorsports.com, 1 msroot.de, 1 msrumon.com, 1 @@ -100019,6 +100433,7 @@ mstdn.fr, 1 mstdn.in.th, 1 mstdn.io, 1 mstdn.party, 1 +mstechexpo.com, 1 mstever.com, 1 mstr-f-dstrctn.de, 1 mstridde.de, 1 @@ -100060,7 +100475,6 @@ mtataes.gov.ma, 1 mtauburnassociates.com, 1 mtb.ua, 1 mtbfoodie.com, 1 -mtbohiittenharju.fi, 1 mtboutiques.com, 1 mtcalvarypeoria.org, 1 mtcloudcommunications.gov, 1 @@ -100076,7 +100490,7 @@ mtehe-square.com, 1 mtel.gr, 1 mteleport.net, 1 mtelizabeth.com, 1 -mtex.net.ua, 0 +mtex.net.ua, 1 mtf.party, 1 mtf.rip, 1 mtf.wiki, 1 @@ -100101,9 +100515,9 @@ mtludlow.co.uk, 1 mtm.tj, 1 mtmedia.org, 1 mtn-media.de, 1 +mtnbikeriders.com, 1 +mtnc.nl, 1 mtncoi-coe.com, 1 -mtnmanager.com, 1 -mtnmedia.group, 1 mtnvalleyhospice.org, 1 mtnwebwiz.com, 1 mtogc.org, 1 @@ -100142,12 +100556,12 @@ mu.sk, 1 mu00.org, 1 mu3e.com, 1 mu3on.com, 1 +muabannhanh.com, 0 muac-innolab.eu, 1 muafakatmalaysia.ga, 1 muafakatmalaysia.gq, 1 muafakatmalaysia.ml, 1 muarstabyggmarknad.tk, 1 -mubarak-card.com, 1 mubase.dk, 1 muble.tk, 1 muc.space, 1 @@ -100161,12 +100575,12 @@ muchotrolley.tk, 1 muchtv.com, 1 muckingabout.eu, 1 muckleshoot.gov, 1 -muckrack.com, 1 mucktopia.com, 1 muclan.tk, 1 mucmail.de, 1 mucustoms.com, 1 mudanzasacuna.com.co, 1 +mudanzasuiza.com.ec, 1 mudanzasytransportesbh.com, 1 mudaomundo.org, 1 mudasobwa.tk, 1 @@ -100184,7 +100598,6 @@ mudramagik.com, 1 mudrc.net, 1 mudrex.com, 1 mudrockrentals.com, 1 -mue.com, 1 mueblum.com, 1 muehlbauers.com, 1 muelhau.pt, 1 @@ -100196,7 +100609,6 @@ muelthaler.com, 1 muenchberger.com, 0 muenchen-personal.training, 1 muennich-coll.de, 1 -muenster-yarn.com, 1 muenzen.tk, 1 muenzenforum.tk, 1 mufg.ru, 1 @@ -100225,6 +100637,7 @@ muhlenbergtwppa.gov, 1 mui.com, 1 mui.fitness, 1 mui.kitchen, 1 +mui.pet, 1 mui.today, 1 muii.com.br, 1 muilties.com, 1 @@ -100243,7 +100656,6 @@ mujlinux.cz, 1 mujoco.org, 1 muk-kobetsu.com, 1 mukasa.no, 0 -mukeshtandi.com, 1 mukio-official.com, 1 mukio.live, 1 mukioofficial.com, 1 @@ -100251,7 +100663,6 @@ mukiovoidwalker.com, 1 mukli.hu, 1 muku-flooring.com, 1 mukurtu.org, 1 -mukuru.com, 1 mukwa.gov, 1 mula.solutions, 1 mula.tk, 1 @@ -100263,10 +100674,10 @@ mulchexpressusa.com, 1 mulder.social, 1 mulderfamilie.tk, 1 mulej.net, 1 -mulgravelaw.co.uk, 1 mulheres18.com, 1 muling.lu, 1 mulk.hopto.org, 1 +mullen.net.au, 1 mullens-usedcars.be, 1 mullett-townshipmi.gov, 1 mullettlakelistings.com, 1 @@ -100274,10 +100685,12 @@ mulligangear.com, 0 mullinsfarms.com, 1 mullv.ad, 1 mullvad.net, 1 +muloot.de, 1 multerer.biz, 1 multi-cryptex.gq, 1 multi-fruit.tk, 1 multi-prets-hypotheques.ca, 1 +multi-pribor.ru, 1 multi-serwis.com.pl, 1 multi-soudures.fr, 1 multi-tool.ml, 1 @@ -100286,6 +100699,7 @@ multiasistencia.com, 1 multiaxisinc.ca, 1 multibomasm.com.br, 1 multicoin.capital, 0 +multicolortv.com, 1 multiconsumos.tk, 1 multicore.cl, 1 multicorpbra.com, 1 @@ -100302,6 +100716,7 @@ multikalender.de, 0 multikemasplastindo.com, 1 multilevelmarketing.cf, 1 multiline.ge, 1 +multilingualpress.org, 1 multilogik.com, 1 multilogin.com, 1 multimalin.ovh, 1 @@ -100337,6 +100752,7 @@ multitool.cf, 1 multitraf.ga, 1 multiusaha.my.id, 1 multivideo.tk, 1 +multivpn.cn.com, 1 multivpn.com.de, 1 multivpn.com.ua, 1 multivpn.fr, 1 @@ -100353,6 +100769,7 @@ mumbaionlinegifts.com, 1 mumbairoleplay.tk, 1 mumble.be, 1 muminkoykiran.com, 1 +mumiytroll.com, 1 mummatters.com.au, 1 mummyandmephotography.com, 1 mumolabs.com, 1 @@ -100374,6 +100791,7 @@ mundodalua.tk, 1 mundodasmensagens.com, 1 mundodastribos.com, 1 mundodewill.com.br, 1 +mundodocurioso.com.br, 1 mundodosagapornis.tk, 1 mundoead.com.br, 1 mundoemalerta.com, 1 @@ -100439,7 +100857,6 @@ muratbekgi.com, 1 muratcileli.tk, 1 muratoff.pp.ua, 1 muratore-roma.it, 1 -muratyurtoglu.com, 1 murciacobras.tk, 1 murciaprocuradores.tk, 1 murderbysound.servebeer.com, 1 @@ -100452,6 +100869,7 @@ murfy.nz, 1 murgi.de, 1 murilloplasticsurgery.com, 1 murksbreider.tk, 1 +murkycards.co.uk, 1 murl.ml, 1 murmansk-news.net, 1 murmansk.cf, 1 @@ -100515,6 +100933,7 @@ museo.com.au, 1 museodefutbol.online, 1 museodeinsectos.tk, 1 museodelistmo.tk, 1 +museoebraicobo.it, 1 museorisorgimentotorino.it, 1 museoscala.org, 1 muserver.io, 1 @@ -100523,9 +100942,10 @@ musetti.tw, 1 museum.nl, 1 museumcenter.az, 1 museumhammarlind.se, 1 -museumhetkruithuis.nl, 1 +museumjeugduniversiteit.nl, 1 museumplantinmoretus.be, 1 museumwaalsdorp.nl, 1 +musexpo.net, 1 mush-room.co.jp, 1 mushel.ddns.net, 1 mushikabu.net, 1 @@ -100535,6 +100955,7 @@ mushka.ga, 1 mushman.tk, 1 mushroomcloud.moe, 1 mushroomnetwork.co.za, 1 +mushroomtutor.com, 1 music-colleges.com, 1 music-is-my-life.de, 1 music-privilege.fr, 1 @@ -100552,19 +100973,19 @@ musicaporbolivia.tk, 1 musicarenagh.com, 1 musicbox.party, 1 musicboxx.cz, 1 -musicbreeze.be, 1 -musicbymelanie.dk, 1 +musicbykshitij.com, 1 musicc.net, 1 musicchris.de, 1 musicfactory.ml, 1 musicfestivalsuite.com, 1 +musicfiends.com, 1 musicflac4.tk, 1 musicforreading.com, 1 musicfreakz.cf, 1 musicfromgod.com, 1 +musicgamegalaxy.de, 1 musicgeek.ga, 1 musicgivesmelife.com, 0 -musicgivesmelife.gay, 1 musichiphop.ga, 1 musichome.tk, 1 musicinsiderdigest.com, 1 @@ -100572,7 +100993,6 @@ musickhouseleveling.com, 1 musickorea.tk, 1 musiclenta.tk, 1 musiclite.tk, 1 -musiclocal.org, 1 musicmasala.tk, 1 musicompare.com, 1 musicradar.co.il, 1 @@ -100603,7 +101023,6 @@ musiker.tk, 1 musikhaus-korn.de, 1 musikholics.com, 1 musikidersi.tk, 1 -musikkapelle-beuren.de, 1 musikkfondene.no, 1 musiktag2020.ch, 1 musiktest24.de, 1 @@ -100632,14 +101051,18 @@ muslimsoul.gq, 1 muslimsoul.ml, 1 muslitocomics.tk, 1 musmann.io, 1 +musopen.org, 1 muspla.com.br, 1 mussalains.com, 1 musselsblog.com, 1 mussila.com, 1 mussonsppe.com, 1 mussonstrading.com, 1 +musta.ch, 1 mustangapparel.ca, 1 mustangmessenger.net, 1 +mustasj.no, 1 +mustat.com, 1 mustdonewzealand.co.nz, 1 muster-folien.de, 1 muster-schablonen.de, 1 @@ -100659,13 +101082,13 @@ musttest.org, 1 mustwatch.com, 1 musubi-dev.net, 1 musulmanesnuevos.tk, 1 +mususu.com, 1 mutabakat.org.tr, 1 mutagen.io, 0 mutahar.me, 0 mutantmonkey.in, 1 mutantmonkey.info, 1 mutantmonkey.sexy, 1 -mutex.co.za, 1 mutex.ru, 1 muthai.in.th, 1 muthamagazine.com, 1 @@ -100684,7 +101107,6 @@ mutualmoney.ml, 1 mutualofomahamedicareplans.com, 1 mutuals.cool, 1 mutualtrustbank.com, 1 -mutuelle.fr, 1 muuglu.es, 1 muunnin.net, 1 muurari.tk, 1 @@ -100693,7 +101115,9 @@ muusikoiden.net, 1 muv.ac, 1 muv.co.uk, 1 muvy.tube, 1 +muwatenraqamy.org, 1 muwi.tk, 1 +muxicloudy.de, 1 muxidream.cn, 1 muxup.com, 1 muy.ooo, 1 @@ -100706,8 +101130,6 @@ muzeumkomiksu.eu, 0 muzi-tips.tk, 1 muzi.cz, 1 muzicamp3.org, 1 -muzicamp3.top, 1 -muzicanoua.org, 1 muzicari.tk, 1 muziekluisteren.eu, 1 muziekschatten.nl, 1 @@ -100719,6 +101141,7 @@ muzikbank.com.tr, 1 muzike.tk, 1 muzline.ua, 1 muzmo.ga, 1 +muzotakt.pl, 1 muzprosvet.tk, 1 muzykanawesele.info, 1 mv-schnuppertage.de, 0 @@ -100726,18 +101149,19 @@ mv-spital.tk, 1 mv-wohnen.de, 1 mvandek.nl, 1 mvarsamis.com, 1 +mvbstyling.nl, 1 mvbug.com, 1 mvc-sports.com, 1 +mvc.on.ca, 1 mvccp.co.za, 1 mvdmt.gov, 1 mvelopes.com, 1 mventix.com, 1 mvhsoracle.com, 1 mvib.net, 1 -mviess.de, 0 +mviess.de, 1 mvisioncorp.com, 1 mvistatic.com, 1 -mvkpop.com, 1 mvmcorps.com, 1 mvmm.fr, 1 mvn.lu, 1 @@ -100781,21 +101205,23 @@ mwork.tech, 1 mwpromotion.fr, 1 mwr.team, 1 mwscouts.org, 1 -mwskwong.com, 1 +mwskwong.com, 0 mwstportal.li, 1 mwstrategicservices.com, 0 mwswire.com, 1 mwtj.com, 1 mwtown.gov, 1 mwu.dk, 1 +mwv2wle.club, 1 mww.moe, 1 -mwxjacg.com, 1 +mx-moto.fr, 0 mx-qr.com, 1 mx-quad.fr, 0 mx-server.uk, 1 mx-solutions.net, 1 mx.org.ua, 1 mx.search.yahoo.com, 0 +mx310.jp, 1 mx86.eu, 1 mxawei.cn, 1 mxdanggui.org, 1 @@ -100808,10 +101234,12 @@ mxlink.cn, 1 mxlog.com.br, 1 mxradar.com, 1 mxtm.de, 1 +mxtsoluciones.com.mx, 1 my-aftershave-store.co.uk, 1 my-azov.tk, 1 my-bratsk.tk, 1 my-calend.ru, 1 +my-carrent.de, 1 my-cars.tk, 1 my-clubpenguin.tk, 1 my-contract.ch, 0 @@ -100830,7 +101258,7 @@ my-fuhui.com, 1 my-gps-tracker.co.uk, 1 my-host.ovh, 1 my-hps.de, 1 -my-ifms.com, 0 +my-ifms.com, 1 my-ip.work, 1 my-itbk.de, 1 my-kirov.tk, 1 @@ -100927,7 +101355,8 @@ mybakkupakku.com, 1 mybamoza.com, 1 mybaran.tk, 1 mybarcelona.tk, 1 -mybasepay.com, 0 +mybaseballmovie.com, 1 +mybasepay.com, 1 mybathroom.tk, 1 mybaticloud.com, 1 mybb.com, 1 @@ -100939,7 +101368,6 @@ mybeautyjobs.de, 1 mybestbook.tk, 1 mybestbooks.gq, 1 mybestteam.tk, 1 -mybeti.ai, 1 mybetterlife.blog, 1 mybicc.org, 1 mybieo.com, 1 @@ -100949,12 +101377,12 @@ mybirds.tk, 1 mybisnis.tk, 1 mybizzmail.com, 1 mybloggedlife.com, 1 +myblogwire.org, 1 mybon.online, 0 mybookbee.com, 1 myboostport.com, 1 myborder.ru, 1 mybotti.eu, 1 -mybox.fr, 1 myboxing.tk, 1 mybpstar.com, 1 mybrb.com, 1 @@ -100964,7 +101392,8 @@ mybritney.tk, 1 mybro.tv, 1 mybrokenheart.tk, 1 mybsms.gr, 1 -mybts.fr, 0 +mybts.fr, 1 +mybubbleteashop.com, 1 mybuddytheplumberparkcity.com, 1 mybudgetapp.com, 1 mybuildingcertifier.com.au, 1 @@ -100976,20 +101405,21 @@ mybzz.com, 1 mycafebarista.com, 1 mycaffee.ir, 1 mycake.me, 1 +mycalculators.tech, 1 mycam.gq, 1 mycandylove.com, 1 mycardplace.com, 1 mycarecorner.net, 1 -mycarecost.net, 1 +mycarecrew.co, 1 +mycarinsurance123.com, 0 mycarwashers.com, 1 mycase.com, 0 mycase.com.ua, 1 -mycasejournal.ai, 1 mycataract.clinic, 1 mycatfinancial.com, 1 mycats.tk, 1 mycbils.uk, 1 -mycena.co, 1 +mychains.pl, 1 mychamberlain.co.nz, 0 mychamberlain.com.au, 0 mychamberlain.eu, 0 @@ -101016,8 +101446,6 @@ mycloudkey.net, 1 mycloudsaas.com, 1 mycloudsoftware.com.br, 1 mycodes.com.au, 1 -mycoding.id, 1 -mycoding.net, 1 mycofairtrade.com, 0 mycoins.gallery, 1 mycoldjet.com, 1 @@ -101049,11 +101477,12 @@ mycreativeshotsblog.com, 1 mycreditcardcenter.com, 1 mycreditjunkie.com, 1 mycreditunion.gov, 1 +mycrm.coach, 0 mycrowdstack.com, 1 mycrypnet.io, 1 mycts.org, 1 -mycuba.holiday, 1 mycues.gov, 1 +mycumortgage.com, 1 mycyberspace.tech, 1 mydarkness.cf, 1 mydarksite.tk, 1 @@ -101073,8 +101502,11 @@ mydepositions.com, 1 mydesignrules.com, 1 mydestiny.tk, 1 mydetailbox.com, 1 +mydifl.com, 0 mydigitalexperience.fr, 1 +mydigitalhealthwallet.com, 1 mydigitalmarketingempire.com, 1 +mydigitalnation.com, 1 mydigitalpublication.com, 1 mydirectsys.com, 1 mydirtyclub.com, 1 @@ -101084,15 +101516,13 @@ mydisabilitymatters.com, 1 mydisabilitymatters.org.au, 1 mydisco.tk, 1 mydistance.tk, 1 +mydlonline.be, 1 mydnshost.co.uk, 1 mydoc.fr, 1 mydogispolite.tk, 1 mydogsvax.ie, 1 -mydogtrainingpro.com, 1 mydolls.ml, 1 -mydomains.live, 1 mydomen.ml, 1 -mydowneysmiles.com, 1 mydoxod.tk, 1 mydp3.com, 0 mydreamlifelab.com, 1 @@ -101103,7 +101533,6 @@ mydroneservices.ca, 1 mydroneservices.com, 1 mydslwebstats.co.uk, 1 mydsomanager.com, 1 -mydupoin.com, 1 mydx.ru, 1 mydxj.com, 1 myebony.cam, 1 @@ -101127,11 +101556,10 @@ myenemy.tk, 1 myenglish.tk, 1 myenocta.com, 1 myensolofts.com, 1 -myentspecialist.sg, 0 +myentspecialist.sg, 1 myepass.bg, 1 myepass.de, 1 myepidoma.gr, 1 -myer.com.au, 1 myers.house, 1 myersaggregates.co.uk, 1 myersbuildingsupplies.co.uk, 1 @@ -101147,7 +101575,6 @@ myetherwallet.com, 1 myeventstation.com, 1 myevive.com, 1 myexams.nl, 1 -myeye.pl, 1 myf.cloud, 1 myface.pt, 1 myfae.eu, 1 @@ -101159,6 +101586,7 @@ myfavmessage.cf, 1 myfavorite.com.tw, 1 myfccu.com, 1 myfdic.gov, 1 +myfiladelfiashop.com, 1 myfile.gq, 1 myfinance.co.nz, 1 myfinx.bh, 1 @@ -101171,6 +101599,7 @@ myfitnessbenefit.com, 1 myfitnesscare.com, 1 myfitsociety.com, 1 myfleetistics.com, 1 +myflexina.com, 1 myflightrefund.com, 1 myfloridacfo.gov, 1 myfloridadeferredcomp.com, 1 @@ -101181,6 +101610,7 @@ myfortdodge.com, 1 myforum.community, 1 myforwardsavings.com, 1 myfpvstore.com, 1 +myfreespiritpointscard.com, 1 myfrenchtattoo.fr, 1 myfreshfamilydental.com, 1 myfruition.com, 1 @@ -101188,18 +101618,20 @@ myfsb.bank, 1 myfsb.com, 1 myfuhui.com, 1 myfunworld.de, 1 +myfurguard.com, 1 myfursona.com, 1 myfutanari.com, 1 myfuturewebsite.co.uk, 1 myfxbook.com, 1 myfxcm.com, 1 +myfyntra.com, 1 myg21.com, 1 mygadgetguardian.lookout.com, 0 mygallery.homelinux.net, 1 mygameconsole.tk, 1 mygaming.news, 1 -mygardendays.com, 1 mygate.at, 0 +mygaypornstarlist.com, 1 mygaysitges.com, 1 mygd.org, 1 mygear.live, 1 @@ -101211,7 +101643,6 @@ mygeek.tk, 1 mygeek911.com, 1 mygenderation.com, 1 mygeneral.org, 1 -mygeorges.fr, 1 mygeorgia.org, 1 mygermanuniversity.com, 1 mygest.me, 1 @@ -101220,6 +101651,7 @@ mygigabitnation.com, 1 mygignation.com, 1 mygilehery.tk, 1 mygimp.tk, 1 +mygirlfriendshouse.com, 1 myglobalnews.net, 1 myglobalopti.nl, 1 mygnmr.com, 0 @@ -101231,6 +101663,7 @@ mygomel.tk, 1 mygov.scot, 1 mygr8app.com, 1 mygreatjob.eu, 1 +mygreatlakes.org, 1 mygreatwebsite.co.uk, 1 mygreencloset.com, 1 mygrodno.tk, 1 @@ -101242,8 +101675,10 @@ myhappiness.tk, 1 myharley-davidson.net, 1 myhealthchecked.com, 0 myhealthcheckup.ca, 1 +myhealthcheckup.com, 1 myhealthsquad.ca, 1 myhealthyday.com, 1 +myhelcim.com, 1 myhell-anonim.tk, 1 myhelo.com, 1 myheritage.com, 1 @@ -101307,9 +101742,10 @@ mykoreankitchen.com, 1 mykukun.com, 1 mykurgan.tk, 1 mykursumlija.tk, 1 -mykvb.com, 1 +mykvccu.org, 1 mylabaih.com, 1 mylacera.gov, 1 +myladychat.com, 1 mylastchapter.tk, 1 mylatestnews.org, 1 mylawer.ga, 1 @@ -101342,9 +101778,11 @@ mylocraft.tk, 1 mylofamily.com, 1 myloft.xyz, 1 myloneworkers.com, 1 +myloplaza.com, 1 mylosscontrolservices.com, 1 mylost.com, 1 mylotto.co.nz, 1 +myloux.ir, 1 mylover.be, 1 mylrd.xyz, 1 mylstrom.com, 1 @@ -101378,8 +101816,7 @@ mymkphotography.com, 1 mymlshouselisting.com, 1 mymo.in.th, 1 mymobilexpert.com, 1 -mymodernoffice.co.uk, 1 -mymojo.com, 1 +mymommyworld.com, 1 mymoneycoin.ml, 1 mymoranguito.com, 1 mymoretrip.com, 0 @@ -101392,7 +101829,6 @@ mymun.net, 1 mymusiclist.alwaysdata.net, 1 mymusique.tk, 1 mymx.lu, 0 -myna.me, 1 mynak.se, 1 mynameisivan.ru, 1 mynameistavis.com, 1 @@ -101410,24 +101846,23 @@ mynas.ovh, 0 mynaturalmood.es, 1 mynaturebox.com, 0 mynaughtyalbum.com, 1 -mynaui.com, 0 +mynaui.com, 1 myndcommunication.com, 0 myndighetermeddnssec.se, 1 myndighetermedipv6.se, 1 myndseye.com, 1 myneighborhoodperks.com, 1 mynetblog.com, 1 -mynetiz.com, 1 mynetpay.be, 1 mynetworkingbuddy.com, 1 mynewhorizons.shop, 1 mynewspaper.net, 1 mynext.events, 1 mynextmove.org, 1 +mynextstep.id, 1 mynic.my, 1 mynimo.com, 1 mynissan.ml, 1 -mynixsudoservices.com, 1 mynjhelps.gov, 1 mynlight.com, 1 mynn.io, 0 @@ -101505,13 +101940,13 @@ myprivatehosts.org, 1 myprofitweb.com, 1 mypromeals.com, 1 mypromocode.com, 1 +mypropertal.com, 1 myproteinpal.co.za, 1 myprotime.eu, 1 myproxy.eu.org, 0 mypskov.tk, 1 mypsychicreadings.tk, 1 mypvhc.com, 1 -myqronix.com, 1 myqrreview.com, 1 myraboats.tk, 1 myramadanmoon.com, 1 @@ -101524,6 +101959,7 @@ myred.net, 1 myredfoxlabs.com, 1 myref.net, 1 myreferral.systems, 1 +myrejuvenators.com, 1 myrekber.co.id, 1 myremont.tk, 1 myremotelogin.ddns.net, 1 @@ -101532,6 +101968,7 @@ myrent.quebec, 1 myrepubic.net, 1 myrepubiic.net, 1 myrepublc.net, 1 +myrepublic.asia, 1 myrepublic.cf, 1 myrepublic.cloud, 1 myrepublic.com.cn, 1 @@ -101544,6 +101981,7 @@ myrepublic.com.tw, 1 myrepublic.ga, 1 myrepublic.gq, 1 myrepublic.icu, 1 +myrepublic.in, 1 myrepublic.limited, 1 myrepublic.lk, 1 myrepublic.ml, 1 @@ -101563,9 +102001,11 @@ myrepublicaus.com, 1 myrepublicfibre.com.au, 1 myrepublicgroup.com, 1 myrepublicinternet.com.au, 1 +myrepublicltd.com, 1 myrepublicmy.com, 1 myrepublicnz.com, 1 myrepublicsg.com, 1 +myrepublictelecom.com, 1 myrepubllc.net, 1 myresearchapp.com, 1 myresearchtoolbox.net, 1 @@ -101575,7 +102015,6 @@ myreviews.ga, 1 myrewardspoints.com, 1 myria.com, 1 myriad.com, 1 -myriadgroup.com, 1 myriadlex.com.tw, 1 myriadof.com, 1 myriation.xyz, 1 @@ -101584,12 +102023,12 @@ myrig.net, 1 myrina.com, 1 myrom.tk, 1 myrotvorets.center, 1 -myroyaa.com, 1 myrunningcalendar.com, 1 myruststats.com, 1 myrvang.org, 1 myrvog.net, 1 myrvogna.net, 1 +myrvsolution.com, 1 myrxplans.com, 1 mys.gov.sd, 1 mysa.tk, 1 @@ -101599,13 +102038,13 @@ mysaldo.info, 1 mysanta.co, 1 mysantanderpension.co.uk, 1 mysarnoff.com, 1 -mysatcoach.com, 1 mysavvastraining.com, 1 mysavvywallet.com, 1 mysaymk.tk, 1 mysbaccoach.com, 1 mysber.ru, 1 mysbi.tk, 1 +mysched.co, 1 myschool.edu.au, 0 myschoolelection.nz, 1 myschoolphoto.org, 1 @@ -101620,6 +102059,8 @@ myservicearl.com, 1 myserviceportal.de, 1 myservices.digital, 1 myservik.ml, 1 +myseu.cn, 0 +mysexpedition.com, 1 mysexvids.net, 1 mysexycard.com, 1 myshenwang.tk, 1 @@ -101631,11 +102072,12 @@ myshowbiz.tk, 1 mysidekick.io, 1 mysignal.com, 1 mysill.gr, 1 -mysimsem.com, 1 -mysinergy.eu, 1 +mysimsem.com, 0 mysisterandi.co.za, 1 myslc.gov, 1 mysmallbusinesssidekick.com, 1 +mysmartloan.ca, 1 +mysmartserve.com, 0 mysmsapp.cn, 1 mysociety.ml, 1 mysockfactory.ch, 1 @@ -101645,14 +102087,12 @@ mysoftebelge.com, 1 mysoftlonca.com, 1 mysorry.com, 1 mysoundtalks.com, 0 -mysourcebank.com, 1 mysourceofhealth.com, 0 myspicer.com, 1 mysports.com, 1 -mysproutsite.com, 1 mysql-real-escape-string.xyz, 1 mysqldump-secure.org, 1 -myssl.com, 0 +myssl.com, 1 mystaffonline.com, 1 mysteriouscode.com, 1 mysteriouscode.io, 1 @@ -101671,6 +102111,7 @@ mystic-welten.de, 1 mysticalroseschoolofcaloocan.com, 1 mysticexperience.com, 1 mysticmedia.net, 1 +mysticmine.shop, 1 mysticrealm.tk, 1 mysticscannabis.ca, 1 mysticsenses.pt, 1 @@ -101682,11 +102123,11 @@ mystormshield.eu, 0 mystorydoctor.com, 1 mystorymonster.com, 1 mystown.org, 1 -mystream.com, 0 +mystream.com, 1 mystreambox.fr, 1 mystreet.ga, 1 +mystrength.com, 1 mystudentrecord.net, 1 -mystudiolook.com, 1 mystudy.me, 1 mystudycart.com, 1 mystudymap.tk, 1 @@ -101697,12 +102138,11 @@ mysupplements.ga, 1 mysurfhostel.com, 0 mysurveysolutions.com, 1 myswabi.tk, 1 +myswimmingclub.uk, 1 myswitchelectric.com, 1 myswooop.de, 1 -mysympleloan.com, 1 mytana.com, 1 mytaratata.com, 1 -mytaxbridge.co.uk, 1 mytaxindia.com, 1 mytc.fr, 1 mytea.life, 1 @@ -101714,7 +102154,6 @@ mytests.tk, 1 mythen-fonds.ch, 1 mythenfonds.ch, 1 mytherapist.com, 1 -mythic.software, 1 mythicca.org, 1 mythicdelirium.com, 1 mythreesonshvac.com, 1 @@ -101722,6 +102161,7 @@ mytime.fr, 1 mytime.gl, 1 mytimer.tk, 1 myting.net, 1 +mytipme.com, 1 mytntware.com, 1 mytoncityut.gov, 1 mytraiteurs.com, 1 @@ -101730,8 +102170,10 @@ mytransmissionexperts.com, 1 mytravelblog.de, 1 mytravelguide.tk, 1 mytreasury.gov, 1 +mytrendiya.com, 1 mytrewithen.co.uk, 1 mytrialist.org, 1 +mytribus.com, 1 mytrinity.com.ua, 1 mytroc.pro, 1 mytruecare.org, 1 @@ -101746,6 +102188,7 @@ mytwiistportal.com, 1 mytwilight.tk, 1 myunitard.uk, 1 myunitypoint.org, 1 +myunraid.ru, 1 myupdatestar.com, 1 myusagepayments.com, 1 myvaccinefl.gov, 1 @@ -101762,10 +102205,10 @@ myvermont.gov, 1 myveronanj.com, 1 myvest.com, 1 myvet.ie, 1 +myvetjobs.com.au, 1 myvi.gov, 1 myviewboard.com, 1 myvirtualserver.com, 0 -myvitalspro.com, 1 myvologda.tk, 1 myvotect.gov, 1 myvoucher.ie, 1 @@ -101774,7 +102217,6 @@ myvulcan-platinum.ru, 1 mywaffles.org, 1 mywalletcrypto.cf, 1 mywapforum.ga, 1 -mywatch.ru, 1 myweb360.de, 1 mywebcloud.at, 1 mywebexperience.gq, 1 @@ -101788,6 +102230,7 @@ mywebpharmacy.tk, 1 mywebserver.ml, 1 myweightlosstips.tk, 1 mywellness360.in, 1 +mywestondental.com, 0 mywikis.net, 1 mywish.co.il, 1 mywonderkitchen.com, 1 @@ -101808,11 +102251,11 @@ myyoutubepage.tk, 1 myzarabot.tk, 1 myzina.cz, 0 myzoetrope.com, 1 -myzr.io, 1 mz-mz.net, 1 mz.al, 1 mz2023.cc, 1 mz2024.cc, 1 +mz2025.cc, 1 mz2026.cc, 1 mz2027.cc, 1 mz2028.cc, 1 @@ -101842,6 +102285,7 @@ mzr.jp, 1 mzstatic.cc, 1 mzuther.de, 1 mzyxsl.top, 1 +n-ag.de, 1 n-cis.ru, 1 n-design-service.de, 1 n-design.de, 1 @@ -101857,20 +102301,19 @@ n-pix.com, 0 n-tennis.fr, 1 n-un.de, 0 n.ee, 1 -n.lu, 1 n.ms, 1 n.rich, 0 n.tt, 1 n0.be, 1 +n0099.net, 1 n03.top, 1 -n0t404.com, 1 n0v1.com, 1 n1.homes, 1 n15.org, 1 n1co68.freeboxos.fr, 1 n1mp.org, 1 n26.com, 1 -n2canada.ca, 1 +n2canada.ca, 0 n2diving.net, 1 n2o.io, 1 n2oclub.com, 1 @@ -101888,11 +102331,11 @@ n64.cc, 1 n6729.co, 1 n6957.co, 1 n7.education, 0 -n7186c.com, 1 n8.gay, 1 n854.com, 1 n87pedia.tk, 1 n8ch.net, 1 +n8mgt.com, 1 n8n-alix.com, 1 n8nvi.com, 1 n8pjl.ca, 1 @@ -101910,6 +102353,7 @@ n9728.co, 1 na-agency.com, 1 na-bibb.de, 1 na-kipre.tk, 1 +na-school.nl, 1 na.nl, 1 na1.nl, 1 naacam.org.za, 1 @@ -101919,15 +102363,12 @@ naap.tk, 1 naarenaa.tk, 1 naaronstoe.nl, 1 nab-services.ml, 1 -nabard.xyz, 1 nabc.au, 1 nabchelny-news.ru, 1 nabeer.ga, 1 nabeez.cf, 1 -nabibus.com, 1 nabiev.tk, 1 nabitrix.tk, 1 -nabiusa.com, 1 nablacloud.com, 1 nabokov.tk, 1 naboplastic.com, 1 @@ -101953,6 +102394,7 @@ nachhaltige-anleger.de, 1 nachoblanco.tk, 1 nachos.stream, 1 nachovni.org, 1 +nachrichten-heute.net, 1 nachsendeauftrag.net, 0 nachtherz.com, 1 nachtlebenliebe.de, 1 @@ -101973,7 +102415,7 @@ nacres.tk, 1 nacsonline.tk, 1 nacu.com.np, 1 nacua.org, 1 -nacudeck.com, 0 +nacudeck.com, 1 naculus.com, 1 nacyklo.cz, 1 nad-r.com, 1 @@ -102024,6 +102466,7 @@ nagaya.si, 1 nagb.gov, 1 nagb.org, 1 nagel-dentaltechnik.de, 1 +nageler.org, 1 nagelideeen.ml, 1 naggie.net, 1 nagoonline.com, 1 @@ -102038,9 +102481,9 @@ nagyag.digital, 1 nagyandras.com, 1 nagyandras.eu, 1 nagyandras.net, 1 +nagybotond.com, 0 nah.nz, 1 nah.re, 1 -naharro.fr, 1 naheulcraft.be, 1 nahfe.xyz, 1 nahman.tk, 1 @@ -102051,12 +102494,14 @@ nahrag.tk, 1 nahs-classof1972.com, 1 nahswingspan.com, 1 nahtanoj.tk, 1 +nahtreich.de, 1 nahttps.tk, 1 nahue.ar, 1 nahue.com.ar, 1 naidoc.org.au, 1 -naijabased.fun, 1 +naifix.com, 1 naijapickup.com, 1 +naijapower.com, 1 naijaxnet.com.ng, 1 naijjobs.com, 1 naika.clinic, 1 @@ -102072,7 +102517,6 @@ nailshop.gq, 1 nailshour.com, 1 nailspafinder.com, 1 naim.tk, 1 -naircore.com, 1 nairobibusinessreview.com, 1 nairus.com.br, 1 nais.org, 1 @@ -102100,6 +102544,7 @@ nakajima-kawara.com, 1 nakalabo.jp, 1 nakamastudios.com, 1 nakameguro-ekimae-shika.com, 1 +nakamuramudancas.com.br, 1 nakayama.industries, 1 nakayamaresearch.com, 1 nakazanie.ga, 1 @@ -102118,32 +102563,29 @@ nakedwomenpics.com, 1 nakenmodell.tk, 1 nakhonchaitour.com, 1 nakib4tech.com, 1 -nakiba.com, 1 nakim.cf, 1 nakin.tk, 1 -nakisa.com, 1 -nakit.eu, 1 +nakisa.com, 0 nakjadah.ddns.net, 1 nakka.ch, 1 nakkati.tk, 1 nakliyat.name.tr, 1 nakliye.name.tr, 1 nakluky.cz, 1 -naklwilson.net, 1 nako.blog, 1 nako.kr, 1 nako.no, 1 +nakskov-kropsterapi.dk, 1 nakukata.com, 1 nakupnabytku.sk, 1 nala.baby, 1 -nalanyinyun.work, 1 -nalapadglobal.com, 1 -nalapadtransport.com, 1 +nalanyinyun.top, 1 nalchik-news.net, 1 naldydimpudus.com, 1 nale-hosting.tk, 1 nalepky-na-zed.cz, 1 nalepte.cz, 1 +nalexandru.xyz, 1 nalios.be, 1 nalle.fi, 1 nalles.net, 1 @@ -102160,6 +102602,7 @@ namastenaturo.fr, 1 namazon.org, 1 namazvakitleri.com.tr, 0 namdu.uz, 1 +name.am, 1 name.ax, 1 nameabusiness.com, 1 nameabusiness.pro, 1 @@ -102198,6 +102641,7 @@ namplan.pl, 1 namsbaekur.is, 1 namskra.is, 1 namspi.uz, 1 +namtesting.org, 1 namu.la, 1 namu.live, 1 namu.moe, 1 @@ -102207,6 +102651,7 @@ nan.you, 1 nana-coro.com, 1 nanaimoneighbourhoods.ca, 1 nanaka.love, 1 +nanasdigital.com, 1 nanaya.net, 1 nanaya.pro, 1 nanboya.com, 1 @@ -102218,6 +102663,7 @@ nancysorensenreporting.com, 1 nancytelford.com, 0 nancytutors.com, 1 nancyzone.tk, 1 +nandajorna.nl, 1 nandakumar.co.in, 1 nandakumar.org, 1 nandapanithota.xyz, 1 @@ -102238,10 +102684,10 @@ nanmu.me, 1 nannatextiles.com, 1 nannatextiles.de, 1 nannostomus.com, 1 +nannyandhousekeeper.uk, 1 nannydream.com, 1 nano.voting, 1 nanobattle.com, 1 -nanocard.co, 1 nanodgx.com, 1 nanodynelabs.com, 1 nanofate.tk, 1 @@ -102272,7 +102718,7 @@ nanubo.com, 1 nanubo.de, 1 nanxin.xyz, 1 nao-news.net, 1 -nao.sh, 0 +nao.sh, 1 naocan.cf, 1 naocan.ml, 1 naotron.com, 1 @@ -102282,7 +102728,6 @@ napavalleyregister.com, 1 napc.kr, 1 napcabs.com, 1 napcae.de, 1 -napfmomente.de, 1 naphex.rocks, 1 napi.edu.ee, 1 napikuponok.hu, 1 @@ -102318,7 +102763,6 @@ napych.com, 1 naql.om, 1 naquebec.tk, 1 nar.cards, 1 -nar0.com, 1 nara.gov, 1 naraboty.ga, 1 narada.com.ua, 1 @@ -102354,7 +102798,6 @@ naris-grc.com, 1 narko-stop.org, 1 narkocenter116.ru, 1 narmafzar.tk, 1 -naro-np.jp, 1 naro-oh.jp, 1 narod-sobe.cz, 1 narodnaya-medizina.tk, 1 @@ -102388,8 +102831,8 @@ narutoshow.tk, 1 narutouzumaki.tk, 1 narutowicza47.pl, 1 narvizit.com, 1 +narware-testing.com, 1 nary-software.com, 1 -narzedziait.pl, 1 narzedziownia.top, 1 nas-tech.de, 1 nas.gov.ua, 1 @@ -102436,12 +102879,12 @@ nasimblog.tk, 1 nasirrezazi.tk, 1 naslovi.net, 1 nasme.tk, 1 +nasos-market.com.ua, 1 nasosmarket.com.ua, 1 nasosvdom.com, 1 nasosvdom.com.ua, 1 nasr.mobi, 1 nasrabady.tk, 1 -nasrmaswood.com, 1 nasrullaganjnews.tk, 1 nassaucountyfl.gov, 1 nassautrafficny.gov, 1 @@ -102492,14 +102935,16 @@ natbomusic.com, 1 natchezss.com, 1 nate.sh, 1 nateandxtina.wedding, 1 +natedoss.com, 1 nateev.fr, 1 nategreen.org, 0 natelefon.tk, 1 natenom.de, 1 natenzia.fr, 1 +nateoster.com, 1 natera.com, 1 nates.tk, 1 -nateschulz.com, 0 +nateschulz.com, 1 natesigal.com, 1 natevolker.com, 1 natgo.xyz, 1 @@ -102523,9 +102968,9 @@ nathanielparker.info, 1 nathanielparker.net, 1 nathanielparker.org, 1 nathanielsigal.com, 1 -nathanieltammer.com, 1 nathankonopinski.com, 1 nathanmfarrugia.com, 1 +nathanphoenix.com, 1 nathansmetana.com, 1 nathenmaxwell.tk, 1 nathumarket.com.br, 1 @@ -102554,16 +102999,15 @@ nationaldetailpros.com, 1 nationaldigital.com.au, 1 nationalemployertraining.co.uk, 1 nationaleyecenter.id, 1 +nationalfleetparts.com, 0 nationalfuse.com, 1 nationalgangcenter.gov, 1 nationalhomequotes.com, 1 -nationalinjuryadvocates.com, 1 nationalmall.gov, 1 nationalmap.gov, 1 nationalmattressday.com, 1 nationalmemorialdayparade.com, 1 nationalmower.com, 1 -nationalnursinghomelawyers.com, 1 nationalopera.ml, 1 nationalpeanutboard.org, 1 nationalpriorities.org, 1 @@ -102581,9 +103025,9 @@ nationaltranscriptservice.net, 1 nationaltransvisibilitymarch.org, 1 nationalvideoproductions.com, 1 nationalvideoproductions.net, 1 +nationalwellness.org, 1 nationandfreedom.tk, 1 nationdivergente.com, 1 -nationofleaders.org, 1 nationslending.com, 1 nationsreportcard.gov, 1 nationwide.com, 1 @@ -102597,13 +103041,13 @@ nationwidevideoproduction.net, 1 nationx.tk, 1 native2ascii.net, 1 nativediving.com, 1 -nativelayer.ai, 1 nativemeadowshoney.com, 1 nativemusicrecords.cf, 1 nativeonestop.gov, 1 nativeproductions.ml, 1 natives-team.ch, 0 nativestate.co, 1 +nativetitle.org.au, 1 nativitychurchnj.org, 1 nativitynj.org, 1 nativitytv.ps, 1 @@ -102638,9 +103082,11 @@ naturaldisasters.tk, 1 naturaliaingredients.com, 1 naturalkitchen.co.uk, 1 naturallychildled.com, 1 +naturallycurly.com, 1 naturallyuncommon.com, 1 naturalmentesinescuela.com, 1 naturalpower.com.br, 1 +naturalprobiotica.com, 1 naturalreaders.com, 1 naturalresources.wales, 1 naturalstyle.tk, 1 @@ -102649,6 +103095,7 @@ naturana.news, 1 naturaprint.fr, 1 naturart.pt, 1 naturavelit.ch, 1 +naturaventyr.se, 1 nature-avenue.com, 1 nature-basedsolutions.com, 1 nature.cz, 1 @@ -102656,7 +103103,6 @@ natureaction100.org, 1 natureandculture.org, 0 natureartns.ru, 1 natureclaim.com, 1 -naturecoaster.com, 1 naturedao.hk, 1 natureisland.tk, 1 naturel.tk, 1 @@ -102664,10 +103110,7 @@ naturelife.bg, 1 naturelk.org, 1 naturesain.fr, 0 naturesbest.co.uk, 1 -natureschoicewellness.com, 1 natureshealthandbody.com, 1 -naturesinfusions.com.au, 1 -naturesplace.ca, 1 naturesupply.eu, 1 naturfreunde.at, 1 naturheilkunde-sabine-klein.de, 1 @@ -102707,11 +103150,11 @@ naut.ca, 1 nautadutilh.com, 1 nautholl.is, 1 nautiboat.it, 1 -nauticonline.it, 1 nautigo.org, 1 nautika.tk, 1 nautiljon.com, 1 nautilusoceanica.com, 1 +nautours.de, 1 nautsch.de, 0 nauz-art.com, 1 nav.no, 1 @@ -102733,9 +103176,9 @@ navegantesdelcosmos.ec, 1 navegarea.tk, 1 naveka.ga, 1 navenlle.com, 1 -naviate.com, 1 navidarian.tk, 1 navienna.com, 1 +navient.com, 1 navientagsettlement.com, 1 navigantcu.org, 1 navigatorgpo.com, 1 @@ -102745,7 +103188,6 @@ navigo.cc, 1 navigo.global, 1 navigyurci.hu, 1 navinmolecular.com, 1 -navita.com.br, 1 naviteq.eu, 1 navkor.tk, 1 navlnachekg.cz, 1 @@ -102768,11 +103210,10 @@ nawroth.info, 1 nawt.pl, 1 nax.io, 0 naxcivan.tk, 1 +naxe.lv, 1 nayakaaerial.com, 1 nayanaas.com, 1 -nayaone.com, 1 nayapakistan.tk, 1 -naydenovlaw.com, 1 nayefalebrahim.com, 1 nayna.tk, 1 nayr.us, 1 @@ -102836,6 +103277,7 @@ nbalive.cn, 1 nbalivecn.com, 1 nbalivex.com, 1 nbaot.org, 1 +nbapc.org, 1 nbapwned.com, 1 nbari.com, 1 nbasky.com, 1 @@ -102860,8 +103302,7 @@ nbranded.lt, 1 nbri.ru, 1 nbriresearch.com, 1 nbrown.us, 1 -nbwp.uk, 1 -nbx.com, 1 +nbx.com, 0 nc-beautypro.fr, 1 nc-formation.fr, 1 nc-network.io, 1 @@ -102911,7 +103352,6 @@ nci.com.es, 1 nci.systems, 1 ncic.gg, 1 ncionline.co.uk, 1 -ncirc.gov, 1 ncjdigital.com, 1 ncjrs.gov, 1 ncksrv.com, 1 @@ -102934,17 +103374,18 @@ ncosc.gov, 1 ncpc.gov, 1 ncpimd001.spdns.de, 1 ncpw.gov, 1 +ncretac.org, 1 ncrha.co.tt, 1 +ncrjobs.in, 1 ncrypt.at, 1 ncs-cleaning.dk, 1 ncsa.gov.qa, 1 -ncsa.md, 1 ncsbadvisors.gov, 1 ncsbe-apps.gov, 1 +ncsc.gov.uk, 1 ncsccs.com, 1 ncshp.gov, 1 ncsis.gov, 1 -ncsl.or.kr, 1 ncsparta.gov, 1 ncswboard.gov, 1 nctm.org, 1 @@ -102994,13 +103435,14 @@ ndr.world, 1 ndrew.me, 1 nds-online.ru, 1 ndscreening.com, 1 -ndtproject.com, 1 ndum.ch, 1 ndvlaw.com, 1 ndvr.com, 1 ndx.ee, 1 ndxinfo.eti.br, 1 ndy.sex, 1 +ne-games.com, 1 +ne-on.org, 1 ne.ax, 1 nea.gov, 1 nealemorison.com, 1 @@ -103019,24 +103461,24 @@ nearnorthcustomsus.com, 1 nearnorthmassage.com, 1 nearnorthus.com, 1 neartothesky.com, 1 +neasahourigan.com, 0 neatful.eu.org, 1 neath-afan-gymnastics.com, 1 -neatlife.co.uk, 0 +neatlife.co.uk, 1 neatous.cz, 1 neatous.net, 1 neauviachannel.com, 1 neave.tv, 1 -neaverdock.com, 1 neaz.tk, 1 neb.li, 1 neba.io, 1 -nebatoken.com, 1 nebebra.stream, 1 nebelhauch.de, 1 nebenbeiblog.ch, 1 nebix.tk, 1 nebohost.tk, 1 neboley.cf, 1 +nebph.com, 1 nebraskadrypeas.gov, 1 nebraskajudicial.gov, 1 nebraskaresearch2.gov, 1 @@ -103055,6 +103497,7 @@ nec-x.com, 1 necd.me, 1 nechtan.io, 1 necio.ca, 1 +neckbeard.xyz, 1 necklacen.com, 1 necord.com, 1 necrat.us, 1 @@ -103063,9 +103506,8 @@ necromantia.tk, 1 necronaut.tk, 1 necronomusick.tk, 1 necropolis-online.tk, 1 -necta.go.tz, 1 +necta.go.tz, 0 nectar.co.nz, 1 -nectardaamazonia.com.br, 1 nectere.ca, 1 nectir-staging.com, 1 nectir.co, 1 @@ -103110,6 +103552,7 @@ neel.ch, 1 neelen-gym.nl, 1 neemo.nz, 1 neenahwi.gov, 1 +neenan.com, 1 neepscambaiting.com, 1 neera.ro, 1 neero.fr, 1 @@ -103125,7 +103568,6 @@ neesousunebonneetoile.ca, 1 neet-investor.biz, 1 neetze-ferienwohnung.de, 1 neev.tech, 0 -neexra.com, 1 nef.net.br, 1 nefald.fr, 0 nefertitis.cz, 0 @@ -103150,6 +103592,7 @@ negociemos.com.co, 1 negocios-imatore.com, 1 negociosparaoptimistas.com, 1 negociosurbanos.net, 1 +negoya-shokai.info, 1 negozimoda.it, 1 negoziointimo.com, 1 negr.gay, 1 @@ -103166,6 +103609,7 @@ nehren.de, 1 nehrp.gov, 1 nehta.gov.au, 1 nehtw.com, 1 +nei.org, 1 neide.ga, 1 neighbor.co.il, 1 neighborhood-threat.tk, 1 @@ -103202,7 +103646,6 @@ neko-nyan.org, 1 neko.foundation, 1 nekoame.network, 1 nekoame.uk, 1 -nekobt.to, 1 nekochan.blog, 1 nekofoundation.com, 1 nekofoundation.org, 1 @@ -103212,9 +103655,10 @@ nekoku.io, 1 nekomagic.com, 1 nekomanten.de, 1 nekomata.tk, 1 -nekomimi.cafe, 0 +nekomimi.cafe, 1 nekomimi.pl, 1 nekomimirouter.com, 1 +nekomimix.net, 1 nekomiya-sama.top, 1 nekomoe.moe, 1 nekondiciya.cf, 1 @@ -103297,6 +103741,7 @@ nemzetizaszlok.hu, 1 nen-ga.jp, 1 nenapu.tk, 1 nenasal.com, 1 +nenco.nl, 1 nenderus.su, 1 nenergy.pt, 1 nenesiosi.lt, 1 @@ -103313,6 +103758,7 @@ neo4j-aura-qa-chatbot.com, 1 neo4j.com, 1 neo4j.design, 1 neobits.nl, 1 +neoblindados.com.br, 1 neoblog.tk, 1 neocannbio.com, 1 neochan.net, 1 @@ -103361,8 +103807,6 @@ neorsd.org, 1 neosdesignstudio.co.uk, 1 neosecurityteam.tk, 1 neoshomo.gov, 1 -neoskosmos.info, 1 -neosnetworks.com, 1 neosoft.hu, 1 neostralis.com, 1 neostralis.de, 1 @@ -103381,9 +103825,9 @@ neowa.tk, 1 neowin.net, 1 neoxam.com, 1 neoxcrf.com, 1 -neoximo.com, 1 neoz.com.br, 1 neozeon.io, 0 +nepal-evolution.org, 0 nepal.ga, 1 nepalboxoffice.tk, 1 nepalese.tk, 1 @@ -103406,6 +103850,7 @@ nepomuk-ev.de, 1 nepovolenainternetovahazardnihra.cz, 1 nepozitkova.cz, 1 neppglobal.top, 1 +nepremicninar.com, 1 nepremicnine.click, 1 nepscollection.com, 1 neptun-rio.tk, 1 @@ -103413,10 +103858,10 @@ neptunenavigate.com, 1 neptunenow.com, 1 neptunosrefugio.tk, 1 nepu.tk, 1 -nerazzurrisiamonoi.it, 1 nerba.net, 1 nerd.gallery, 1 nerdalert.dk, 1 +nerdaristocracy.com, 1 nerdbox.cc, 1 nerdca.st, 1 nerdenbileyim.com.tr, 1 @@ -103433,6 +103878,7 @@ nerdmovieproductions.it, 1 nerdnet.goip.de, 1 nerdoftheherd.com, 1 nerdoutstudios.tv, 1 +nerdplusart.com, 1 nerdpol.ch, 1 nerdpol.org, 1 nerdpress.net, 1 @@ -103462,6 +103908,7 @@ nerloee.dk, 1 neroninvestment.org, 1 neropiceno.tk, 1 nerot.eu, 1 +neroteknik.com.tr, 1 nerpa-club.ru, 1 nerss.ca, 1 nertus.ua, 1 @@ -103471,28 +103918,27 @@ nerven.se, 0 nervi.ga, 1 nesabamedia.com, 1 nesaltin.com, 1 -nesec.nl, 1 +neseari.com, 1 nesheims.com, 1 nesheimswaterrestoration.com, 1 neshkorowi.gov, 1 -neshmonin.com, 1 neshtata.bg, 1 neshura.me, 1 neshura.net, 1 neskins.com, 1 nesolabs.de, 1 nespim.tk, 1 -ness.com, 1 nessaesthetics.com, 1 nesscitycatholic.org, 1 nessimworks.com, 1 nesstormented.tk, 1 nest-property.com, 1 +nesta.ie, 1 nestbynature.com, 1 nestdesigndeco.com, 1 +nesterov.pw, 1 nestetic.com, 1 nestforms.com, 1 -nestinarka-park.com, 1 nestinvest.com, 1 nestlanddesign.com, 1 nestos-marble.gr, 1 @@ -103533,7 +103979,6 @@ netbsd.fi, 1 netbuzz.ru, 1 netcake.in, 1 netcapital.com, 1 -netcat.ovh, 1 netcattle.com, 1 netcd.tk, 1 netcenteret.tk, 1 @@ -103542,7 +103987,6 @@ netco-privacy.de, 1 netco-system.de, 1 netconnect.at, 0 netcoresmartech.com, 1 -netcosa.com, 1 netcourtreporter.com, 1 netcourtreporter.net, 1 netcracker.com, 1 @@ -103557,7 +104001,6 @@ netdiode.net, 1 netdiode.org, 1 netdir.tk, 1 netdnstrace1.com, 1 -netdoktor.dk, 1 netdox.de, 1 netducks.com, 1 netducks.space, 1 @@ -103569,8 +104012,11 @@ neteraser.de, 1 netevents.org, 1 netexlearning.com, 1 neteye.ru, 1 -netfabb.com, 0 +netfabb.com, 1 netface.com.br, 1 +netferie.de, 1 +netferie.dk, 1 +netferie.no, 1 netfiles.de, 1 netfilter.cc, 1 netfirmtextile.com, 1 @@ -103616,6 +104062,7 @@ netid.de, 1 netig.net, 0 netigen.pl, 1 netim.pl, 1 +netinsight.net, 1 netipbox.com, 1 netjet.io, 1 netjobz.tk, 1 @@ -103637,19 +104084,19 @@ netmania.tk, 1 netmedia.tk, 1 netmedicaitalia.it, 1 netmeister.org, 1 -netmongrel.com, 1 netmouse.tk, 1 netmt.de, 1 netnea.com, 1 netnl.eu, 1 netoborona.tk, 1 netobur.net, 1 +netoffshop.ir, 1 netolice.com, 1 netolink.co.il, 1 netolink.com, 1 netope.de, 1 netor.ga, 1 -netpass.pt, 1 +netpatient.dk, 1 netpay.mx, 1 netpenge.tk, 1 netpreneur.co.za, 1 @@ -103660,9 +104107,10 @@ netracks.ga, 1 netradyne.com, 1 netraising.com, 1 netrecruituk.co.uk, 1 +netreputation.com, 0 netresec.com, 1 netreviews.tk, 1 -netriders.academy, 0 +netriders.academy, 1 netrift.uk, 1 netrino.be, 1 netrino.info, 1 @@ -103674,12 +104122,10 @@ netrunners.dk, 1 nets-cloud.com, 1 nets.com.sg, 1 netschool.tk, 1 -netscribes.com, 1 netse.net.tr, 1 netsearch.ga, 1 netsec.cloud, 1 netsecma.com, 1 -netsends.com, 1 netsensai.pl, 1 netsensor.com.br, 1 netshopgarden.com.br, 1 @@ -103723,6 +104169,7 @@ nettoyagehottespro.net, 1 nettoyageleriverain.com, 1 nettoyagesleriverain.com, 1 nettskjema.no, 1 +nettunoguide.dk, 1 nettverk.fi, 1 nettx.co.uk, 1 nettype.ca, 1 @@ -103737,13 +104184,13 @@ netwarc.nl, 1 netwatch.me, 1 netwave.pl, 1 netwerkstoom.nl, 1 -netwerkwaterenklimaat.nl, 1 netwidow.com, 1 netwings.com, 1 netwire-solutions.com, 1 netwire.tk, 1 networg.com, 1 networg.cz, 1 +networg.pl, 1 network-midlands.co.uk, 1 network-midlands.uk, 1 network-perception.com, 1 @@ -103768,7 +104215,6 @@ networkmidlands.co.uk, 1 networkmidlands.uk, 1 networkmon.net, 1 networkperformancemonitoring.net, 1 -networks365.ca, 1 networksec.info, 1 networksecuritysolutions.info, 1 networksolutionsconsultant.com, 1 @@ -103778,9 +104224,9 @@ networktrafficanalysis.net, 1 networktrafficanalyzer.net, 1 networktrafficmonitoring.net, 1 networld.to, 1 -networthpal.com, 0 +networthpal.com, 1 networx-online.de, 1 -netz-blog.de, 1 +netz-noe.at, 1 netz0.com, 1 netzabfragen.de, 1 netzen.tk, 1 @@ -103835,7 +104281,7 @@ neurobiology.wiki, 1 neurocia.com.br, 1 neurocny.cloud, 1 neurococi.org, 1 -neurococi.ro, 0 +neurococi.ro, 1 neuroeconomics.org, 1 neuroeconomicstudies.org, 1 neuroethics.com, 1 @@ -103856,16 +104302,16 @@ neurophysiotherapy.ga, 1 neuropsicologiaperin.com.br, 1 neuropsiperches.com, 1 neuropsychologisthouston.com, 0 +neurosurgeryinmexico.com, 1 neuroticosanonimos.tk, 1 neurotransconcept.com, 0 neurotransmitter.net, 1 -neurovicellc.com, 0 +neurovicellc.com, 1 neurozentrum-barsinghausen.de, 1 neurozentrum-zentralschweiz.ch, 1 neuschwanstein.de, 1 -neuschwansteintickets.nl, 1 neustadt-keller.de, 1 -neustadtguides.de, 0 +neustadtguides.de, 1 neuteleers.tk, 1 neuton.ai, 1 neutra-vdl.org, 1 @@ -103873,7 +104319,6 @@ neutraleating.com, 1 neutrino.eu.org, 1 neutron.ch, 1 neutronfire.com, 1 -neutroodor.com, 1 nev.si, 1 neva-star.ml, 1 neva.li, 1 @@ -103888,7 +104333,6 @@ nevb.nl, 1 never-afk.de, 0 never-mind.tk, 1 never-more.tk, 1 -never-relax.com, 1 never.pet, 1 neveraquemola.ml, 1 neverasquemola.ml, 1 @@ -103906,6 +104350,7 @@ neverwasinparis.com, 1 neveu.tech, 1 nevim-co-varit.cz, 1 nevivur.net, 1 +nevntech.com, 1 nevocloud.com, 1 nevolution.me, 1 nevoxo.com, 0 @@ -103922,17 +104367,18 @@ new-mexico-sexcams.com, 1 new-pornvideos.com, 1 new-smile.cf, 1 new-standart.tk, 1 +new-techina.com, 1 new-tuning.tk, 1 new-vip.com, 1 new-vip1.com, 1 new-vvip.com, 1 new-way.ml, 1 +new-web-studio.com, 1 new-zone.tk, 1 new10.com, 1 newag.org.au, 1 newage.bg, 1 newagehoops.com, 1 -newageshutters.com, 1 newalbanyohio.gov, 1 newalive.net, 1 newamericanagent.com, 1 @@ -103962,6 +104408,7 @@ newborn-screening.org, 1 newbownerton.xyz, 1 newbraunfels.gov, 1 newbrest.tk, 1 +newbrightonresidents.org.nz, 1 newbronze.com.br, 1 newbrunswicknj.gov, 1 newbrunswickonlinedivorce.com, 1 @@ -103969,6 +104416,7 @@ newbrunswicktoday.com, 1 newbss.co.uk, 1 newbuilding.tk, 1 newburybouncycastles.co.uk, 1 +newburyparkelectric.com, 1 newburyportma.gov, 1 newcab.de, 1 newcapitaldev.com, 1 @@ -103990,9 +104438,7 @@ newchester.gov, 1 newcityinfo.ch, 0 newcityinfo.info, 1 newcitystudio.ch, 0 -newcoders.org, 1 newcold.com, 1 -newcoldhelsingborg.se, 1 newcombny.gov, 1 newconcept.tk, 1 newconceptelec.be, 1 @@ -104002,10 +104448,10 @@ newcurve.tk, 1 newday.host, 1 newdaychristian.com, 1 newdayproperties.com, 1 +newdayrecordlabel.com, 1 newdenversurvivors.tk, 1 newdietandexercises.tk, 1 newdirectionsolar.com.au, 1 -newdoor.estate, 1 newdreamsnashamuktikendra.com, 1 newdronesandquadcopters.com, 1 newdurhamnh.gov, 1 @@ -104027,29 +104473,29 @@ newflavor.design, 1 newflexcareer.com, 1 newflorencemo.gov, 1 newflyer.ca, 1 -newflyer.co, 1 newflyer.com, 1 newflyeramerica.com, 1 newflyergroup.com, 1 newflyerofamerica.com, 1 -newflyerofamericainc.com, 1 newfoldenmn.gov, 1 newforex.ml, 1 newforms.nl, 0 newfoundland-labradorflora.ca, 1 +newfoundlandlabrador.com, 0 newgarden.tk, 1 +newgardenfarms.org, 1 newglarusvillagewi.gov, 1 newgle.xyz, 1 newgrowbook.com, 0 newgrowthpress.com, 1 newguidance.ch, 0 -newhade.ddns.net, 1 newhampshiretitlesearch.com, 1 newhamyoungbloods.co.uk, 1 newharmony-in.gov, 1 newhavenshiami.gov, 1 newholland.tk, 1 newhomedesign.tk, 1 +newhomeinturkey.com, 1 newhopeplacement.com, 1 newhoperailroad.com, 1 newillusion.tk, 1 @@ -104060,12 +104506,13 @@ newingtonnhpolice.gov, 1 newinsane.info, 1 newipswichnh.gov, 1 newisys.com, 1 -newjerseysolarinitiative.com, 1 newjerseytitlesearch.com, 1 newjerseyvideography.com, 1 newkaliningrad.ru, 1 newlands-fasteners.com.au, 1 +newlanefinance.com, 1 newledger.io, 1 +newledger.sg, 1 newlegalsteroid.com, 1 newlifefund.org, 1 newlondonhospital.org, 1 @@ -104086,6 +104533,7 @@ newmilfordct.gov, 1 newmilfordnj.gov, 1 newmill.com, 1 newmusic.org, 0 +newmusicjackson.org, 1 newmuslims.tk, 1 newmuz.tk, 1 newnaturalists.com, 1 @@ -104110,6 +104558,7 @@ newportcenturions.co.uk, 1 newporthomehealth.com, 1 newportit.com, 1 newportmn.gov, 1 +newportplastic.com, 1 newportpropertygroup.com, 0 newportri.gov, 1 newposts.ru, 1 @@ -104154,6 +104603,7 @@ news.bg, 1 news123.ga, 1 news12elite.tk, 1 news17.tk, 1 +news19.org, 1 news24rus.tk, 1 news29.tk, 1 news53today.tk, 1 @@ -104163,7 +104613,6 @@ news60.tk, 1 news89.cf, 1 news89.ga, 1 news89.gq, 1 -news8plus.com, 1 newsadvance.com, 1 newsarmenia.tk, 1 newsarticle.ml, 1 @@ -104179,7 +104628,6 @@ newscenter.gr, 1 newschannel5.com, 1 newscheck.tk, 1 newschool.ie, 1 -newscroll.ru, 1 newscultural.tk, 1 newsdiff.eu, 1 newsdiff.nl, 1 @@ -104212,7 +104660,6 @@ newsletters.gq, 1 newsliner.gq, 1 newsmotor.info, 1 newsnfl.tk, 1 -newsoftwares.net, 1 newsoul.de, 1 newspaperamigo.com, 1 newspawn.net, 1 @@ -104228,7 +104675,6 @@ newstel.tk, 1 newsthai.ml, 1 newsticker.tk, 1 newstj.ml, 1 -newstomo.com, 1 newstone-tech.com, 1 newstoter.com, 1 newstraveltoday.gq, 1 @@ -104260,12 +104706,12 @@ newtonestudios.nl, 1 newtonhaus.com, 1 newtrackon.com, 1 newtravelplans.com, 1 +newtrendsbykate.com, 1 newusatoday.ga, 1 newvehicle.com, 1 newvisionhealing.com, 1 -newvistudio.com, 1 newwaterford-oh.gov, 1 -newway.ie, 0 +newway.ie, 1 newwind.tk, 1 newwise.com, 1 newworldnewlife.tk, 1 @@ -104273,12 +104719,12 @@ newxit.tk, 1 newyearsdishes.tk, 1 newyorkcardiac.com, 1 newyorkcoffeejobs.com, 1 +newyorkland.forsale, 1 newyorkmyc.org, 1 newyorknews.tk, 1 newyorkpub.com.br, 1 newyorkreporting.com, 1 newyorkrp.tk, 1 -newyorkschools.us, 1 newyorktitlesearch.com, 1 newyorktoutsimplement.com, 0 newzashitnik.tk, 1 @@ -104293,11 +104739,8 @@ nexacu.com.au, 1 nexadevs.com, 1 nexafuze.com, 1 nexarda.com, 1 -nexarigroup.com, 1 -nexbone.com, 1 nexcoda.io, 1 nexd.com, 1 -nexfixo.com, 1 nexflow.com, 1 nexgeneration-solutions.com, 1 nexgi.com, 1 @@ -104305,6 +104748,7 @@ nexhealth.info, 1 nexiam.net, 1 nexicafiles.com, 1 nexinal.net, 1 +nexinformatique.com, 1 nexiodev.com, 1 nexiodevopslocal.com, 1 nexiopay.com, 1 @@ -104319,11 +104763,10 @@ nexitdata.com, 1 nexiumgeneric.tk, 1 nexocap.cl, 1 nexon.com.au, 1 -nexrbx.com, 1 nexril.net, 0 nexs.gg, 1 nexscience.tk, 1 -nexsol-tech.ch, 1 +nexsol-tech.ch, 0 next-fact.com, 1 next-geek.fr, 1 next-idea.co, 1 @@ -104332,6 +104775,7 @@ next-log.ru, 0 next-tms.com, 1 next.ink, 1 next.me, 1 +next24.io, 1 nextads.ch, 1 nextbike.tk, 1 nextcairn.com, 1 @@ -104345,11 +104789,10 @@ nextcloud.com, 1 nextcloud.nerdpol.ovh, 1 nextcloudcn.com, 0 nextclouddarwinkel.nl, 1 -nextclouddavid.duckdns.org, 1 +nextdayvapes.co.uk, 1 nextdoorhobby.com, 1 nextdoorhobby.de, 1 nextdyna.co.jp, 1 -nexterawebworks.com, 1 nextevolution.co.uk, 1 nextfm.tk, 1 nextg.gg, 1 @@ -104369,7 +104812,6 @@ nextgreencar.com, 1 nextintegrations.nl, 1 nextiot.de, 1 nextiva.com, 1 -nextjs.org, 1 nextlegends.gov, 1 nextlevel-forum.de, 1 nextlevel-it.co.uk, 1 @@ -104377,25 +104819,24 @@ nextlevelforum.de, 1 nextme.se, 1 nextmed.ro, 1 nextmuseum.io, 1 -nextofkinplan.com, 1 nextos.com, 1 +nextperimeter.com, 1 nextpower-kepco.jp, 1 nextrasp.it, 1 nextrec.site, 1 nextrequest.com, 1 nextright.tk, 1 nextscan.com, 1 -nextskill-ai.de, 1 nextsound.tk, 1 nextsource.com, 1 nextstep-labs.gr, 1 nextstepstudios.ga, 1 nexttv.co.il, 1 -nextunitpro.com, 1 nextus.me, 1 nextvibration.com, 1 nextvision.pt, 1 nextwab.com, 1 +nextwo.com, 1 nextworldcoding.ga, 1 nextzen.com.bd, 1 nexus, 1 @@ -104413,7 +104854,7 @@ nezis.tk, 1 nezkakukec.si, 1 nezrouge-est-vaudois.ch, 1 nezsultan.tk, 1 -nf-tel.com, 0 +nf-tel.com, 1 nf9q.com, 1 nfam.de, 1 nfb-ec.co.za, 1 @@ -104431,6 +104872,7 @@ nfbplett.co.za, 1 nfbpwm.co.za, 1 nfbst.co.za, 1 nfcc.org, 1 +nfclegal.com, 1 nfcq.co.uk, 1 nfcu.org, 1 nfcweb.de, 1 @@ -104474,7 +104916,6 @@ ng-stroy.bg, 1 ng.edu.ee, 1 ngappliances.co.uk, 1 ngarate.com, 1 -ngatikoata.com, 1 ngatikuri.tk, 1 ngawa-avocat-paris.fr, 1 ngbilling.com.br, 1 @@ -104513,6 +104954,7 @@ ngontinhtruyen.com.vn, 1 ngoresan.tk, 1 ngorod.tk, 1 ngorongorocratertanzania.org, 1 +ngplus.name, 1 ngroupllc.com, 1 ngsmedicare.com, 1 ngtdevel.com, 1 @@ -104520,9 +104962,8 @@ ngtqa.com, 1 nguoimuahangmy.com, 1 nguru.net, 1 nguyenanhung.com, 1 -nguyencucthanh.com, 1 nguyenductrong.net, 1 -nguyenduythiem.com, 0 +nguyenduythiem.com, 1 nguyenfamily.cc, 1 nguyenfamily.tk, 1 nguyenslist.com, 1 @@ -104544,13 +104985,13 @@ nhatrangbooks.com, 1 nhbp-nsn.gov, 1 nhbp.gov, 1 nhccnews.org, 1 +nhcps.com, 1 nhdecoration.fr, 1 nhdsilentheroes.org, 1 nhg.nl, 1 nhheaf.org, 1 nhjvillalmanzo.tk, 1 nhlanhlazondo.co.za, 1 -nhlocalgrocer.com, 1 nhnature.org, 1 nhnieuws.nl, 1 nhnz.tv, 1 @@ -104573,10 +105014,12 @@ ni-s.de, 1 ni.sb, 1 ni.search.yahoo.com, 0 niaa.gov.au, 1 +niadd.com, 1 niagara.ru, 0 niagaraconstruction.org, 1 niagarafalls.ca, 1 niallator.com, 1 +nianubo.net, 0 niawier-wetsens.tk, 1 nibbler.ai, 1 nibblespot.com, 1 @@ -104639,7 +105082,6 @@ nice-autosurf.com, 1 nice-germany.tk, 1 nice-links.tk, 1 nice-school.com.ua, 1 -nice-sound.com, 1 niceb5y.net, 0 niceceo.com, 0 nicecockb.ro, 1 @@ -104647,7 +105089,6 @@ nicecontentnews.com, 1 niceguyit.biz, 1 nicelanaliz.com, 1 nicenipovoleno.cz, 1 -niceo.org, 1 nicepussypics.com, 1 nicesco.re, 1 nicestudio.co.il, 1 @@ -104666,7 +105107,7 @@ nichijou.com, 1 nichijou.org, 1 nicholasjohnson.ch, 1 nicholaslazzerini.com, 1 -nicholasnassar.com, 0 +nicholasnassar.com, 1 nicholaspayton.com, 1 nicholaswilliams.net, 1 nicholsongoldsmiths.co.uk, 1 @@ -104679,7 +105120,6 @@ nichyaforum.tk, 1 nicic.gov, 1 niciunde.ro, 1 nick-black.com, 1 -nick-cloud.net, 1 nick-slowinski.de, 0 nick-stone.com, 1 nickbrookes.co.uk, 1 @@ -104699,7 +105139,6 @@ nicklet.xyz, 1 nicklock.ml, 1 nickloose.de, 1 nickmandler.tk, 1 -nickmartin.enterprises, 1 nickmazuk.com, 1 nickmchardy.com, 1 nickmiller.ie, 1 @@ -104760,12 +105199,13 @@ nicolasprovost.tk, 1 nicolaszambetti.ch, 1 nicolaus.sk, 1 nicolausbank.pl, 1 +nicolaw.uk, 1 nicolawealth.com, 1 nicoldev.es, 1 nicole-4-u.de, 1 nicole-richie.info, 1 nicolebracy.com, 1 -nicolecurioni.com, 0 +nicolecurioni.com, 1 nicolehastings.com, 1 nicoleisaacs.com, 1 nicolelaby.com, 1 @@ -104799,6 +105239,7 @@ niebieska-fala-spokoju.pl, 1 niebieskiorzel.pl, 1 niebla.com.co, 1 niederalt.com, 1 +niedermaier.eu.org, 1 niedermair.bz, 1 niederrhein-foto.de, 1 niederrhein-galerie.de, 1 @@ -104833,7 +105274,6 @@ nietmvwoensel.com, 1 nietveel.tk, 1 nietvolgensdeboekjes.nl, 1 nietzsche.com, 1 -nietzsche.org, 1 nieuwbestand.nl, 1 nieuwe-casinos.net, 1 nieuwebroek.com, 1 @@ -104858,10 +105298,8 @@ nigah.com, 1 nigdeescort.tk, 1 nigel-aves-photography.com, 1 nigelfreake.eu, 1 -nigellasativa.info, 1 nigelpentland.co.uk, 1 nigelpentland.net, 1 -nigelsnotebook.com, 1 nigelwright.com, 1 nigelwrightgroup.com, 1 nigeriaimagefoundation.org, 1 @@ -104913,16 +105351,14 @@ nigmapictures.tk, 1 nigt.cf, 1 nih.ao, 1 nihaarpstars.com, 1 -nihao-server.com, 1 nihaoma.cn.eu.org, 1 nihaoonline.tk, 1 nihilistan.tk, 1 nihilocomunidad.tk, 1 nihon-finance.com, 1 nihon-rosoku.com, 1 -nihonnomirai.org, 1 -nihor2.com, 1 nihseniorhealth.gov, 0 +nihtek.in, 1 nihulkav.shop, 1 niice.co, 1 niid.lv, 1 @@ -104964,12 +105400,13 @@ nikeyichinese.com, 1 nikhilramakrishnan.tk, 1 nikhilsd.com, 1 nikiel.fr, 1 +nikimix.com, 1 nikitacartes.xyz, 0 nikitagukov.ru, 1 nikitenko.tk, 1 nikitina.ml, 1 nikitovka.com, 1 -nikka.systems, 0 +nikka.systems, 1 nikkasystems.com, 1 nikkasystems.se, 1 nikkei225jp.com, 1 @@ -104982,7 +105419,6 @@ niklasstinkt.com, 1 niko-mapping-studio.tk, 1 niko-vfx.com, 0 nikoflix.site, 1 -nikola-mitrojevic.eu, 1 nikolaev-news.ru, 1 nikolaev.ml, 1 nikolaevnews.ru, 1 @@ -104992,14 +105428,12 @@ nikolaipribylski.tk, 1 nikolaj-platoshkin.cf, 1 nikolajmackowski.dk, 1 nikolasbradshaw.com, 1 -nikolayiliev.bg, 1 nikon-photocontest.com, 1 nikoniko-dental-izumichuo.jp, 1 nikoniko-dental-izumigaoka.jp, 1 nikoniko-dental-nakamozu.jp, 1 nikoniko-dental-premium.jp, 1 nikoniko-dental-support.jp, 1 -nikonimgsupport.com, 1 nikonlibrary.co.uk, 1 nikonnps.co.uk, 1 nikonschool.co.uk, 1 @@ -105015,7 +105449,6 @@ nikskitchen.com.au, 1 niksys.net, 1 nikws.ru, 1 nikz.in, 1 -nil.as, 1 nil.com, 1 nil.mx, 1 niledevelopmentseg.com, 1 @@ -105038,7 +105471,6 @@ nilsnet.tk, 1 nilupul.org, 1 nimahoda.net, 1 nimb.com.np, 1 -nimber.pt, 1 nimbl.nz, 1 nimble.com.br, 1 nimblefins.co.uk, 1 @@ -105088,6 +105520,7 @@ ninfora.com, 1 ning.bo, 1 ningwei.net, 1 niniko.tk, 1 +nininhapapelaria.com.br, 1 ninja-corner.tk, 1 ninja.it, 1 ninjacomputing.com, 1 @@ -105098,13 +105531,15 @@ ninjasquad.fr, 1 ninji.org, 1 ninkt.com, 1 ninmegam.gq, 1 +ninnen.com, 1 ninofink.com, 1 ninoo.nl, 1 ninov.bg, 1 ninovayazilim.com, 1 ninrio.com, 1 ninsin-akachan.com, 1 -nintendo424.com, 1 +nintendo-europe-media.com, 1 +nintendo424.com, 0 nintendocarddelivery.com, 1 nintendoreporters.com, 1 ninth.cat, 1 @@ -105153,7 +105588,7 @@ niscemi.tk, 1 nishiakashi-shika.jp, 1 nishijyoganka.com, 1 nishimebistro.cz, 1 -nishinija.de, 0 +nishinija.de, 1 nishinokana.com, 1 nishisbma.com, 1 nishiwaki-shonaifoods.com, 1 @@ -105169,6 +105604,7 @@ nissens.com, 0 nisseymaquinas.com.br, 1 nissinfoods.com, 1 nist.tech, 1 +nit.school, 1 nitecore.ga, 1 nitendaytowing.ga, 1 nitix.games, 1 @@ -105176,6 +105612,7 @@ nitolab.com, 1 nitoville.com, 1 nitrix.me, 1 nitro-tv.de, 1 +nitro.az, 1 nitrocloud.ddns.net, 1 nitrohorse.com, 0 nitrokey.com, 1 @@ -105212,6 +105649,7 @@ nixx.tk, 1 nixxes.com, 1 nixxin.tk, 1 niyawe.de, 1 +niyazpoyilan.com, 0 niyen.com, 1 niyen.eu, 1 niyen.net, 1 @@ -105221,18 +105659,16 @@ niyonood.com, 1 nizamialemdernegi.org.tr, 1 nizarvoiceover.tk, 1 nizhaoheng.com, 1 -nizmaar.com, 1 nizozemsku.nl, 1 nja.au, 1 nja.id.au, 1 njamnadas.co.in, 1 njapp.org, 1 +njast.net, 1 njbarberco.com, 1 njbr.ml, 1 njbr.tk, 1 -njbraun.de, 1 njccpo.gov, 1 -njcoinc.org, 1 njcsit.gov, 1 njdcj.gov, 1 njdge.gov, 1 @@ -105282,6 +105718,7 @@ nkontur.com, 1 nkorolev.tk, 1 nkp-media.de, 1 nkpr.net, 1 +nkrf.no, 1 nkrupp.net, 1 nktk.hu, 1 nkvd-farm.ru, 1 @@ -105291,7 +105728,6 @@ nl-comunistas.tk, 1 nl-ix.net, 1 nl.search.yahoo.com, 0 nl3ehv.nl, 1 -nla.no, 0 nlap.ca, 0 nlazarov.com, 1 nlead.gov, 1 @@ -105318,7 +105754,6 @@ nmaedu.org, 1 nmb.gov, 1 nmbhgc.org, 1 nmbtc.com, 1 -nmcae.com, 1 nmcep.net, 0 nmd.so, 1 nmdoj.gov, 1 @@ -105332,7 +105767,6 @@ nmindepth.com, 1 nmitaylor.com, 1 nmjusticedata.gov, 1 nmleatherleague.com, 1 -nmmd.co.uk, 1 nmmlp.org, 1 nmn.hu, 1 nmontag.com, 1 @@ -105341,7 +105775,6 @@ nmoss.com, 1 nms-thoracic-surgery.com, 1 nmshippingshield.com, 1 nmslo.gov, 1 -nmstore.com.tr, 1 nmsuroundup.com, 1 nmugroup.com, 1 nmx.de, 1 @@ -105378,7 +105811,7 @@ nntb.no, 1 no-andishan.ir, 1 no-b.kiev.ua, 1 no-bet.ru, 1 -no-bull.sh, 1 +no-cookies.net, 1 no-data.tk, 1 no-dev.de, 1 no-eye-deer.tk, 1 @@ -105395,9 +105828,9 @@ no-nat.de, 1 no-real.tk, 1 no-reply.mx, 1 no-terrorism.tk, 1 -no-tone.com, 1 no-war-on-iraq.tk, 1 no.search.yahoo.com, 0 +no1assignmenthelp.com, 1 no1universities.tk, 1 no2bacoorcityhood.tk, 1 no34infowey.co.uk, 1 @@ -105407,15 +105840,16 @@ noaccess.tk, 1 noacore.ch, 1 noadi-pixels.tk, 1 noagendahr.org, 1 -noahdigital.com.br, 1 +noah-witt.com, 1 +noahenco.nl, 1 noahjacobson.com, 1 noahmodas.com.br, 1 noahs.com, 1 noahsaso.com, 1 -noajoder.ch, 1 +noamweb.com, 1 noangel.tk, 1 noart.tk, 1 -noatec.eu, 0 +noatec.eu, 1 noawildschut.com, 1 noawildschut.nl, 1 nob.ro, 1 @@ -105443,10 +105877,12 @@ nobounce.me, 0 noboxo.ch, 1 nobreaks.ca, 1 nobs.no, 1 +nobsmc.com, 1 nobunplease.com, 1 nobutwhy.com, 1 nobz.com.br, 0 noc.best, 1 +noc.ly, 0 noc.wang, 1 nocapplugins.xyz, 1 noccie.com, 1 @@ -105457,16 +105893,19 @@ noclegiwchecinach.pl, 1 nocloud.website, 1 noco.nl, 1 nocoastpunx.tk, 1 +nocodefactory.io, 1 nocoffee.tech, 1 nocoffeetech.de, 1 nocommentsallowed.com, 1 nocr.net, 1 nocreyentes.org, 1 nocrm.io, 1 +nocti.org, 0 noctinus.tk, 1 noctiskillbadge.org, 1 noctisphoto.tk, 1 noctua.nl, 1 +noctua.online, 1 nocturnos.tk, 1 nocturnus.tk, 1 noctys.com, 1 @@ -105483,7 +105922,6 @@ nodejs.au, 1 nodejs.com.au, 1 nodejs.org, 1 nodelab-it.de, 1 -nodelulu.ai, 1 nodepoet.com, 1 noderunners.network, 1 nodespin.com, 1 @@ -105519,13 +105957,12 @@ nogetime.com, 1 nogluten.com, 1 nogradhont.hu, 1 nogyogyaszat.eu, 0 -nohangouts.se, 1 nohatenj.gov, 1 nohats.ca, 1 +noho138.com, 1 nohttps.org, 1 nohup.se, 1 nohup.xyz, 1 -noid-privacy.com, 1 noideas.tk, 1 noiglosujemy.com.pl, 1 noiglosujemy.pl, 1 @@ -105533,9 +105970,9 @@ noihoidonganh.com, 1 noihotels.com, 1 noincludesubdomains.preloaded.test, 0 noipro.com, 1 -noir.pk, 1 noirmale.com, 1 noirmalenetwork.com, 1 +noirpvp.com, 1 noiseboyz.com, 1 noisebridge.social, 1 noiseworks.ne.jp, 1 @@ -105553,7 +105990,6 @@ nojum.tk, 1 nokarateinthepit.com, 1 nokchon.tk, 1 nokia.la, 1 -nokillingday.com, 1 nokomiswi.gov, 1 nokono.com, 1 nokoshop.fr, 1 @@ -105596,7 +106032,6 @@ nomadicrootsco.com, 1 nomadix.com, 1 nomadlist.com, 1 nomadproject.io, 0 -nomadtalk.mn, 1 nomadtech.servehttp.com, 1 nomadtechnologies.uk, 1 nomadwallets.com, 1 @@ -105604,8 +106039,8 @@ nomadworld.net, 1 nomasfraudecolorado.gov, 1 nomaspicaduras.com, 1 nomee6.xyz, 1 -nomek.it, 1 nomercy.tv, 1 +nomerel.com, 0 nomesbiblicos.com, 1 nomial.co.uk, 1 nomifensine.com, 1 @@ -105614,10 +106049,9 @@ nomios.fr, 1 nomo.com, 1 nomorephish.ru, 1 nomorepizzaparties.com, 1 -nomoslabs.io, 1 +nomorigine.com, 1 nomsing.tk, 1 nomtechbytes.com, 1 -non-www.org, 1 nona.com.my, 1 nona.my, 1 noname-ev.de, 0 @@ -105639,11 +106073,10 @@ nonsa.pl, 1 nonstopairductcleaning.com, 1 nonstopairductcleaninghoustontx.com, 1 nonstopjob.ga, 1 -nonstopkino.at, 1 nontonfilem.ml, 1 -nonwww.org, 1 nonx.pro, 1 nonxsistent.tk, 1 +nonzero.io, 1 noob-box.net, 1 noob-rp.ru, 1 nooben.com, 1 @@ -105704,6 +106137,7 @@ norberthofer.at, 1 norbit.de, 1 norcalsigmabluefoundation.org, 1 norcalworkcomp.com, 1 +norcconcrete.com, 1 norcopa.gov, 1 nord-sud.be, 1 nord-sued-wohnmobile.de, 0 @@ -105721,26 +106155,23 @@ norderney-zs.de, 1 nordesttrasporti.it, 1 nordex.ca, 1 nordfinck.de, 1 -nordhealth-ai.com, 1 nordhealth.com, 1 nordhealth.dk, 1 nordhealth.fi, 1 nordhealth.no, 1 nordheide.design, 1 +nordhenergy.se, 1 nordhessen-zum-anklicken.de, 1 nordicequities.com, 1 nordicflowbased.eu, 1 nordichealthcaregroup.com, 1 nordicirc.com, 1 nordicnews.net, 1 -nordicnutrition.dk, 1 -nordicoach.fr, 1 nordicpartners.dk, 1 -nordicperformancenutrition.dk, 1 nordicportalen.tk, 1 nordicsemi.com, 1 nordicsrit.tk, 1 -nordictaxirvk.is, 0 +nordictaxirvk.is, 1 nordicway.dk, 1 nordinfo.fi, 1 nordisglobal.com, 1 @@ -105748,18 +106179,21 @@ nordiskhiss.se, 1 nordiskhissvarmland.se, 1 nordkampen.com, 1 nordkampen.de, 1 -nordklar-reinigung.de, 1 nordlandsbanken.no, 1 nordlandverliebt.de, 1 nordlayer.com, 1 nordlichter-brv.de, 1 +nordloxsecure.com, 1 nordmark-pharma.de, 1 nordmoregatebilklubb.com, 1 +nordpass.asia, 1 nordpass.com, 1 nordsec.com, 1 nordseeblicke.de, 1 nordstarfossils.com, 1 +nordvestkysten.dk, 1 nordvpn.com, 1 +nordwal.de, 1 nordwaldzendo.de, 0 nordwind-umzuege.de, 1 norebase.com, 1 @@ -105775,7 +106209,6 @@ norichanmama.com, 1 noriel.ro, 1 norikazumatsuno.tk, 1 norilsk-news.ru, 1 -norio.lt, 1 norion.no, 1 noripon.blog, 1 noris-color.de, 1 @@ -105784,7 +106217,6 @@ noritakechina.com, 1 noriva.com.mt, 1 norlink.ca, 1 normaculta.com.br, 1 -normahana.com, 1 normalady.com, 0 normalil.gov, 1 normalinlinden.de, 1 @@ -105807,7 +106239,6 @@ noroutine.com, 1 noroutine.me, 1 norridgewock.gov, 1 norrisautomotiveinc.com, 1 -norrisfeigum.com, 1 norrishome.tk, 1 norristn.gov, 1 norrkemi.se, 1 @@ -105837,7 +106268,6 @@ northbengaltourism.com, 1 northbranch-md.com, 1 northbranfordct.gov, 1 northbranfordpdct.gov, 1 -northbridgemediagroup.com, 1 northbrisbaneapartments.com.au, 1 northcapitalb.com, 1 northcarolinahealth.tk, 1 @@ -105899,6 +106329,7 @@ northprairiepdwi.gov, 1 northprairiewi.gov, 1 northrose.net, 1 northsalemny.gov, 1 +northshore-medspa.com, 1 northshoremums.com.au, 1 northshorevisitor.com, 1 northsidecaravansrepairsandspares.com, 1 @@ -105928,6 +106359,7 @@ northwoodoh.gov, 1 northwoodstudios.org, 1 northzone.ml, 1 nortvi.com, 1 +norveg.ru, 1 norvelltwp-mi.gov, 1 norwalkct.gov, 1 norwalkps.org, 0 @@ -105959,6 +106391,7 @@ nosinmiperro.tk, 1 nosite.co.za, 1 nosleepforrobots.com, 1 noslite.nl, 1 +nosmoke.cc, 1 nosmoking.tk, 1 nosoxo.com, 1 nosproduitsdequalite.fr, 1 @@ -105989,7 +106422,9 @@ not-a.link, 1 not-binary.org, 1 not4me.ga, 1 not4me.tk, 1 +nota-web.com, 1 nota.moe, 1 +nota.place, 1 notabug.eu, 1 notabug.org, 1 notadd.store, 1 @@ -106018,7 +106453,6 @@ notary24.ru, 1 notarypublic.co.nz, 1 notbot.es, 1 notby.net, 1 -notcanadianlabour.ca, 1 notcompletelycorrect.com, 1 notcurses.com, 1 notdankmemer.lol, 1 @@ -106030,7 +106464,6 @@ notebi.org, 1 notebleue.com, 1 noteboat.net, 1 notebook-alkatresz.hu, 1 -notebooklm.in, 1 notebooksbilliger.de, 1 notebooksteurer.shop, 1 notebrew.com, 1 @@ -106040,12 +106473,12 @@ notedinstyle.co.uk, 1 notemaster.eu, 1 notenarchiv.eu, 1 notengosuelto.com, 1 -noteonline.org, 1 -notesdumontroyal.com, 1 +notequal.me, 1 +noterica.com, 1 +notes4z.com, 1 notesforpebble.com, 1 noteshare.net, 1 noteskeeper.ru, 1 -notetube.ai, 1 notfunny.tk, 1 notgerman.com, 1 nothinfancy.ca, 1 @@ -106054,10 +106487,8 @@ nothing.org.uk, 1 nothing.pink, 1 nothingbundtcakes.com, 1 noti.tg, 1 -noticeregistry.com, 1 -noticiacristiana.com, 1 noticiaelmundo.com, 1 -noticiasdearnedo.es, 1 +noticias7.org, 1 noticiasdeautos.site, 1 noticiasdebrasiliaonline.com, 1 noticiasdeminasgerais.com, 1 @@ -106082,7 +106513,6 @@ notif-moncompte-laposte.info, 1 notific.at, 1 notificami.com, 1 notify.gov, 1 -notifyed.com, 1 notilus.fr, 1 notime.tk, 1 notinglife.com, 1 @@ -106107,7 +106537,6 @@ notonprem.com, 1 notora.tech, 1 notoriousdev.com, 1 notre-planete.info, 1 -notrecinema.com, 1 notrefuse.tk, 1 notresiteduvercors.tk, 1 notrid.com, 1 @@ -106117,7 +106546,6 @@ nottawatwpisabellami.gov, 1 nottinghammd.com, 1 nottinghammoneyman.com, 1 nottinghilleditions.com, 1 -notto.ovh, 1 notube.cc, 1 notube.io, 1 notube.net, 1 @@ -106129,6 +106557,7 @@ noudiari.es, 1 noudjalink.nl, 1 nougat-anduze.fr, 1 noumeet.com, 1 +noumezon.net, 1 nouragha.com, 1 nourishandnestle.com, 1 nourishbyfrida.com, 1 @@ -106150,9 +106579,8 @@ novacelestia.com, 1 novacoaching.nl, 1 novacustomboxes.com, 1 novadir.com, 1 -novagym.berlin, 1 +novafreixo.pt, 1 novak.cf, 1 -novakdizajn.sk, 1 novakola.bg, 0 novalevante.info, 1 novalite.rs, 0 @@ -106160,23 +106588,21 @@ novalnet.de, 1 novaltek.pe, 1 novamont.com, 1 novanetwork.ml, 1 -novania.fr, 1 novanice.net, 1 novanta.pl, 1 novantaphotonics.com, 1 novaofcalifornia.com, 0 +novaprac.com, 1 novaquantum.com, 1 novaquark.com, 1 -novaquest.com.br, 1 novaratoday.it, 1 novarock.tk, 1 -novasentinel.pt, 1 novashare.io, 1 novasmilecr.net, 1 novasprint.tk, 1 -novautomoveisusados.pt, 1 +novatech.net, 0 novavax.com, 0 -novavistawindows.com, 0 +novavistawindows.com, 1 novaway.ca, 1 novaya.media, 1 novaya.no, 1 @@ -106197,6 +106623,7 @@ novel543.com, 1 novelacuba.com, 1 novelas.net.br, 1 noveldadigital.es, 1 +novelenergylighting.com, 1 novelfm.com, 1 novelinglife.net, 0 novelly.in, 1 @@ -106205,7 +106632,7 @@ noveltydoorest.ga, 1 novelvyretraite.fr, 1 novema.jp, 1 novenopiso.tk, 1 -noventiq.co.uk, 1 +novento.bg, 1 novezamky.tk, 1 novgorod-news.net, 1 novgorod24.tk, 1 @@ -106226,6 +106653,7 @@ novinsource.ir, 1 novinvisa.com, 1 noviny.sk, 1 novip.tk, 1 +noviyan.com, 1 novo.media, 1 novobi.com, 1 novobudowa.pl, 0 @@ -106240,12 +106668,10 @@ novojet.cl, 1 novokurovka.tk, 1 novokuznetsk.tk, 1 novomatic.com, 1 -novomedia.ch, 1 novonegoc.io, 1 novonordiskfonden.dk, 1 novoodesabibl.tk, 1 novoopus.com, 1 -novora.at, 1 novoresume.com, 1 novorossiysk.tk, 1 novorussiya.tk, 1 @@ -106271,12 +106697,6 @@ novum.is, 1 novumclinic.pl, 1 novumnet.com.br, 1 novurania.com, 0 -novusnews.co.uk, 1 -novusnews.de, 1 -novusnews.es, 1 -novusnews.fr, 1 -novusnews.it, 1 -novusnews.pt, 1 novy.software, 1 novy.vip, 1 novychas.online, 1 @@ -106357,7 +106777,11 @@ nptelegraph.com, 1 nptfisheries.org, 1 nptn.tk, 1 npws.net, 1 +nqesh.blog, 1 +nqesh.net, 1 +nqesh.org, 1 nqesh.ph, 1 +nqeshonline.com, 1 nqhomeinsurance.gov.au, 1 nrac.or.jp, 1 nrail.eu, 1 @@ -106367,10 +106791,12 @@ nrbri.ru, 1 nrc-gateway.gov, 1 nrc.gov, 1 nrchealth.com, 1 +nrclitchi.org, 1 nrd.gov, 1 nrdstd.io, 1 nreihofer.de, 1 nrev.ch, 1 +nrityangana.in, 1 nrj-plomberie.com, 1 nrkn.fr, 1 nrla.org.uk, 1 @@ -106381,7 +106807,9 @@ nrsforu.com, 1 nrsmart.com, 1 nrthcdn.me, 1 nrttv.com, 1 +nrvc.net, 1 nrvn.cc, 1 +nrvnastudios.com, 1 nrvweb.net, 1 nrw-stiftung-magazin.de, 1 ns-frontier.com, 1 @@ -106400,25 +106828,21 @@ nsbfalconacademy.org, 1 nsbih.ba, 1 nsboston.org, 1 nsbufl.gov, 1 -nsc365.co.jp, 1 nscai.gov, 1 nscdegreeverify.com, 1 nscdegreeverify.org, 1 nscoot.au, 1 nscorporation.co.jp, 1 nscresearchcenter.com, 1 -nscresearchcenter.org, 1 nscsd.jp, 1 nscverifications.com, 1 nscverifications.net, 1 nscverifications.org, 1 nsdcprayerforce.com, 1 -nse-ebp.com, 1 nsec.dk, 1 nsecure.nl, 1 nseicc.com, 1 nseindia.com, 1 -nsenmf.com, 1 nsep.gov, 1 nsf-journal.hr, 1 nsfw.dk, 1 @@ -106431,17 +106855,18 @@ nsics.co.jp, 1 nsikakimoh.com, 1 nsimobilewatersolutions.com, 1 nsine.be, 1 +nsinf.com, 1 nsinternational.com, 1 nsinternational.nl, 1 nsjbio.com, 1 nskarate.tk, 1 -nsknox.net, 1 nsl.co.nz, 1 nslacandelaria.com, 1 nslc.com, 1 nslone.com, 1 nsm.ee, 1 nsmail.cn, 1 +nsmail.com, 1 nsms.com, 1 nsncatalog.com, 1 nso.ie, 1 @@ -106460,9 +106885,11 @@ nsplaw.com, 1 nsradiology.net, 1 nssdeviations.com, 1 nssfchile.tk, 1 +nsspl.com.au, 1 nssquad.tk, 1 nstatic.xyz, 1 nstd.net, 1 +nstiak.com, 1 nstnet.org, 1 nsu.pw, 1 nsv.ee, 1 @@ -106487,6 +106914,7 @@ ntechp.com, 1 ntgltema.ml, 1 ntgvision.com, 1 nth.sh, 0 +nthp.me, 1 ntia.gov, 1 ntindependent.com.au, 1 ntinet.com, 1 @@ -106495,6 +106923,7 @@ ntj125app.com, 1 ntk-institute.org, 1 ntlabs.org, 1 ntnews.com, 1 +ntnlst.com, 1 ntnlsvc-uat-webadmin.azurewebsites.net, 1 ntokens.com, 1 ntokens.com.br, 1 @@ -106502,10 +106931,9 @@ ntotten.com, 1 ntppool.com, 1 ntppool.net, 1 ntppool.org, 1 -ntq.technology, 1 ntr.my.id, 1 ntreizel.com, 1 -nts.com, 1 +nts.com, 0 ntsb.gov, 1 ntsp.team, 1 ntt-buses.com, 1 @@ -106525,7 +106953,6 @@ nubank.com.br, 1 nube.com.br, 1 nubeaustral.ar, 1 nubehogar.nsupdate.info, 1 -nubesti.com, 1 nubian.cf, 1 nubian.tk, 1 nubilum.noip.me, 1 @@ -106574,13 +107001,13 @@ nuevaimagenpublicidad.es, 1 nuevapublicidad.tk, 1 nuevarepublica.cr, 1 nuevarepublicacr.com, 1 -nuevasolutions.com, 1 nuevatrend.co, 1 nuffield.nl, 1 nuffieldtrust.org.uk, 1 nuforma.net, 1 nugdev.co, 0 nugeopend.nl, 1 +nuggetsvape.com, 1 nuggit.ga, 1 nugmanov.net, 1 nugratis.nl, 1 @@ -106597,11 +107024,10 @@ nukeportal.ml, 1 nukeportal.tk, 1 nukeshop.tk, 1 nukleoti.de, 1 -nukta.com.pk, 1 -nukta.pk, 1 nul20.nl, 1 null-d.com, 1 null-life.com, 1 +null48.net, 1 nullam.tech, 1 nullbit.tk, 1 nullcon.net, 1 @@ -106609,7 +107035,6 @@ nulldev.org, 1 nulle-part.org, 1 nulledme.ga, 1 nulleds.tk, 1 -nullgender.com, 1 nullificatr.tk, 1 nullonerror.org, 1 nullprozentshop.de, 1 @@ -106622,7 +107047,9 @@ nulltime.net, 1 nullvoid.me, 1 nullxsec.net, 1 nully.xyz, 1 +nulook.co.id, 1 nulsc.biz, 1 +nulsc.net, 1 numancia.tk, 1 numarasorgulama.tel, 1 numaxion.fr, 1 @@ -106635,11 +107062,13 @@ numberspiral.pt, 1 numberzero.org, 1 numbots.com, 1 numedes.com, 1 +numeezy.com, 1 numeracle.com, 1 numerama.com, 1 numerasolution.com, 1 numericall.gq, 1 numericolor.com, 1 +numeriquoi.com, 1 numeritelefonici.it, 1 numerli.com, 1 numero1.ch, 0 @@ -106682,10 +107111,8 @@ nuovissime.it, 1 nupaybusiness.com.br, 1 nuquery.com, 1 nur-test.de, 1 -nura.gay, 1 nuraling.com, 1 nuranagi.rocks, 1 -nurani.io, 1 nureg.club, 1 nureg.net, 1 nuria-fergo.tk, 1 @@ -106694,7 +107121,6 @@ nuriacamaras.com, 1 nurkamol.com, 1 nurmio.fi, 1 nurnabi.ml, 1 -nurolyn.store, 1 nurrobin.de, 1 nurseactioners.ga, 1 nurseactionest.ga, 1 @@ -106715,7 +107141,6 @@ nusailec.com, 1 nusanetwork.com, 1 nusantaraku.tk, 1 nusantararom.org, 1 -nusara.me, 1 nussadoclub.org, 1 nussbaum-medien.de, 1 nussschale.eu, 1 @@ -106730,6 +107155,8 @@ nutrafitsuplementos.com.br, 1 nutralivbio.com, 1 nutrashop.fr, 1 nutriciametabolics-shop.de, 1 +nutriclub.co.id, 1 +nutriflex.co.za, 1 nutrifyyourself.com, 1 nutrijets.com, 1 nutrineyfelipe.com, 1 @@ -106774,7 +107201,6 @@ nuzhenkredit.ml, 1 nuzhenkredit.tk, 1 nuzpost.com, 1 nv-art.ru, 1 -nv.tj.cn, 1 nvbw.de, 1 nvcmaine.gov, 1 nvcogct.gov, 1 @@ -106791,7 +107217,6 @@ nvestholdings.com, 1 nvestproperties.co.za, 1 nvests.co.za, 1 nvfoundation.com, 1 -nvgn.ru, 1 nvh.group, 1 nvhsecho.com, 1 nvi-go.nl, 1 @@ -106828,6 +107253,7 @@ nwfdaz.gov, 1 nwfem.com, 1 nwh.nz, 1 nwhf.no, 1 +nwimports.com, 1 nwitt.us, 1 nwmpcllc.com, 1 nwn.fi, 1 @@ -106850,8 +107276,8 @@ nxcloud.ml, 1 nxdomain.info, 1 nxedge.com, 1 nxit.ca, 1 +nxlogis.kr, 1 nxnt.link, 1 -nxo.it, 1 nxplinc.com, 1 nxstudios.tk, 1 nxth.io, 1 @@ -106873,12 +107299,12 @@ nyaken.tk, 1 nyallpurposepaving.com, 1 nyan.it, 0 nyan.kim, 1 +nyan.stream, 1 nyangasm.com, 0 nyangasm.net, 0 nyangasm.org, 0 nyansparkle.com, 1 nyantec.com, 1 -nyaone-object-storage.com, 1 nyap.org, 0 nyatane.com, 1 nyau.me, 1 @@ -106890,6 +107316,7 @@ nycctp.com, 1 nycdentalimplantscenter.com, 1 nyce.net, 1 nycestateest.ga, 1 +nycfpa.org, 1 nycgangland.com, 1 nycoyote.org, 1 nycpac.net, 0 @@ -106899,8 +107326,9 @@ nycuf.org, 1 nydig.com, 1 nyecountynv.gov, 1 nyerjakekszekkel.hu, 1 +nyerjazoreoval.hu, 1 nyerjenaheraval.hu, 1 -nyflyguyz.com, 1 +nyfurnitureoutlets.com, 1 nygbcomicguide.tk, 1 nygbtourguide.tk, 1 nygenome.org, 1 @@ -106923,6 +107351,7 @@ nym.at, 1 nymanelectric.com, 1 nymbus.com, 1 nymtc.org, 1 +nynadynasir.my.id, 1 nyoka-nodejs.com, 1 nyoka-react.com, 1 nyoka.io, 1 @@ -106976,9 +107405,11 @@ nzbfinder.ws, 1 nzbnoob.com, 1 nzbr.de, 1 nzbs.moe, 1 +nzbstars.com, 1 nzcorp.dk, 1 nzdata.org, 1 nzelaweb.com, 1 +nzfaponline.com, 1 nzhistory.govt.nz, 1 nzia.tk, 1 nzlabour.org, 1 @@ -106993,6 +107424,7 @@ nzroom.cf, 1 nzsafety.co.nz, 1 nzsafetyblackwoods.co.nz, 1 nzsb.co.nz, 1 +nzshipmarine.com, 1 nzt.capital, 1 nzt.co, 1 nzt.dev, 1 @@ -107036,13 +107468,13 @@ o00.eu, 1 o00228.com, 1 o0c.cc, 1 o15y.com, 1 +o2.tn, 1 o2design.tk, 1 o2solutions.ae, 1 o2ss.com, 0 o36533.com, 1 o365info.com, 1 o3c.com.br, 1 -o3host.pk, 1 o3ptitschats.fr, 1 o3swap.com, 1 o5.cx, 0 @@ -107058,7 +107490,8 @@ o9297.co, 1 o9728.co, 1 o98.net, 0 o9solutions.com, 1 -oaaa.org, 0 +oaaa.org, 1 +oacps.org, 1 oadeo.com, 1 oahpmdata.net, 1 oakbarnvets.com, 1 @@ -107072,21 +107505,22 @@ oaken.duckdns.org, 1 oakesfam.net, 1 oakey.uk, 1 oakface.com.au, 1 -oakfarmsdairy.com, 1 oakharbor.gov, 1 oakhill.com, 0 oakhillfl.gov, 1 oakhillseniors.com, 1 oakislandnc.gov, 1 -oaklab.hu, 1 oaklandenrolls.org, 1 oaklandfire6.com, 1 oaklandnewsonline.com, 1 oaklawn.com, 1 +oakparkelectrical.com, 1 oakrealty.ca, 1 oakridgeclinic.ca, 1 +oakriverfarms.com, 1 oakshield.nl, 1 oakslim.com, 1 +oaktree-realtors.com, 0 oaktreelodge.org.uk, 1 oakvalleyhealth.ca, 1 oakwood-park.tk, 1 @@ -107097,7 +107531,6 @@ oanow.com, 1 oase-der-ruhe.de, 1 oasegroen.nl, 1 oasis-info.co.uk, 1 -oasis-marburg.de, 1 oasisautospa.org, 1 oasisbodycare.jp, 1 oasisbodywork.com, 1 @@ -107119,7 +107552,6 @@ obandln.de, 1 obarax.com, 1 obatjantungrematik.tk, 1 obbr.tk, 1 -obcanskeshromazdeni.cz, 1 obcfl.com, 1 obcina.com, 1 obclub.tk, 1 @@ -107148,13 +107580,13 @@ oberpfalzverein.de, 1 oberrot.de, 1 obertshausen.de, 1 obery.com, 1 -oberzaun.de, 1 obet901vip.com, 1 obetz.gov, 1 obezma.com, 1 obfc.me, 1 obg-global.com, 1 obg.ceo, 1 +obgalslancaster.com, 1 obgynecologistnyc.com, 1 obgynqueensnyc.com, 1 obhg.com, 1 @@ -107169,7 +107601,6 @@ obitcheck.com, 1 obj.moe, 1 object.earth, 1 objectcache.pro, 1 -objectif-bastille.com, 1 objectif-securite.ch, 1 objectif-vancouver-2010.fr, 1 objectifs-fitness.com, 1 @@ -107177,7 +107608,6 @@ objective.health, 1 objectivefoodie.com, 1 objectiveone.com, 1 objectivity.co.uk, 1 -objectoneworld.com, 1 objetodestaque.com.br, 1 obl.ong, 1 oblak.host, 1 @@ -107185,9 +107615,9 @@ oblak.studio, 1 oblat.lv, 1 oblique.security, 1 oblitsov.ru, 1 -oblivionsearch.com, 1 oblivious.ml, 1 oblojka.tk, 1 +oblondata.io, 0 obmen-viz.tk, 1 obmen-vizitami.ml, 1 obmenka.tk, 1 @@ -107213,6 +107643,7 @@ obreshkovisin.bg, 1 obreshkovisin.com, 1 obrobka-zdjec.pl, 1 obs.plus, 1 +obsahovka.eu, 1 obsceneeulogy.tk, 1 obscur.tk, 1 obscur.us, 1 @@ -107231,6 +107662,7 @@ obstgarten.berlin, 1 obsuzhday.com, 1 obtainhigh.com, 1 obtima.org, 1 +obu4alka.ru, 1 obuchowicz.pl, 1 obuhov.ml, 1 obuhov.tk, 1 @@ -107244,10 +107676,10 @@ obxlistings.com, 0 obyava.bg, 1 obyrai.org.ua, 1 obyvateleceska.cz, 1 -obzhora.noip.me, 1 obzor-znakomstv.tk, 1 obzory-evgeny.tk, 1 oc-minecraft.com, 1 +ocab.se, 1 ocabj.net, 1 ocacnews.net, 1 ocadefusion.fr, 1 @@ -107264,7 +107696,6 @@ ocassessor.gov, 1 ocauditor.gov, 1 ocb.gov, 1 ocbc.com, 1 -ocbc.com.my, 1 ocbscores.com, 1 occ.gov, 1 occam-consulting.de, 1 @@ -107282,7 +107713,6 @@ occultisme.tk, 1 occultumproductions.tk, 1 occupational-therapy-colleges.com, 1 occupations.org.ru, 1 -occupros.com, 1 occupy4elephants.tk, 1 occupybakersfield.tk, 1 ocd2016.com, 1 @@ -107311,6 +107741,7 @@ oceanfirst.com, 0 oceaniahome.tk, 1 oceaniahotels.com, 1 oceanic.ws, 1 +oceanicquest.com, 1 oceanings.com, 1 oceanofapk.com, 1 oceanohost.com, 1 @@ -107321,7 +107752,6 @@ oceanshaman.gq, 1 oceanshaman.ml, 1 oceansidetour.tk, 1 oceanspraymiami.com, 1 -oceanstayandplay.com, 1 oceansurplus.tk, 1 oceanviewde.gov, 1 oceanvisuals.com, 1 @@ -107339,19 +107769,17 @@ ochatoosenbei.tk, 1 ochemindessens.com, 1 ochevidcy.com, 1 ochioneta.es, 1 -ochk.org, 1 ochki-linzi.tk, 1 ochobeatsmedia.net, 1 +ochotnicky.com, 1 ochranaprirody.cz, 1 ochrepoint.com.au, 1 ochsenfeld-fotografie.de, 1 ochsenfeld.co, 1 -ochsner.org, 1 ochsundjunior.ch, 1 ochsundjunior.swiss, 1 ochutnejitalii.cz, 1 ociaw.com, 1 -ociepleniedachu.pl, 1 ocies.org, 1 ocihs.spb.ru, 1 ocimumcdn.net, 1 @@ -107362,13 +107790,13 @@ ocloudhost.com, 1 oclube.online, 1 ocni-ambulance-most.cz, 1 ocnjapartment.com, 1 -ocnr.org, 1 ocodo.ru, 1 ocolere.ch, 1 oconlakewi.gov, 1 oconnoradv.com, 1 ocontocountywi.gov, 1 ocotg.com, 1 +ocpatentlawyer.com, 1 ocponj.gov, 1 ocprintgraphics.gov, 1 ocqueoctwpmi.gov, 1 @@ -107411,8 +107839,8 @@ octavewealth.com, 1 octavia.net, 1 octavianguzu.com, 1 octaviorojas.tk, 1 +octaviosimon.com, 1 octobanana.com, 1 -october-academy.com, 1 octobered.com, 0 octocaptcha.com, 1 octod.tk, 1 @@ -107421,6 +107849,7 @@ octofox.de, 1 octogroup.co.nz, 0 octohedralpvp.tk, 1 octolopagon.games, 1 +octopai.com, 1 octopluswash.com, 1 octopoos.com, 1 octopoos.org, 1 @@ -107445,13 +107874,12 @@ ocydias.tk, 1 oda-group.co.jp, 1 odabasi.ch, 1 odabilocal.com, 1 +odamigo.com, 1 odatakao.com, 1 oday.org, 1 -odbiciadusz.pl, 1 odbierzspozywke.pl, 1 odbtomsk.ru, 1 odd17.org, 1 -oddetall.no, 1 oddfellowwellness.com, 1 oddformrecords.tk, 1 oddintely.com, 1 @@ -107476,7 +107904,7 @@ odensc.com, 1 odensc.me, 1 odenvilleal.gov, 1 odeonentertainment.co.uk, 1 -odesigning.com, 0 +odesigning.com, 1 odessa-news.ru, 1 odessalove.tk, 1 odezdaotto.tk, 1 @@ -107486,6 +107914,7 @@ odiamoselregeton.tk, 1 odico.dk, 1 odifi.com, 1 odigitalmarketing.com.br, 1 +odigo.com, 0 odijmond.nl, 1 odinpl.com, 1 odinraz.ga, 1 @@ -107502,6 +107931,7 @@ odo-pro.ru, 1 odontologiawilliampizarro.com, 1 odoo.co.th, 1 odoppelto.de, 1 +odoranswers.com, 1 odoru.ga, 1 odorucinema.ga, 1 odosblog.de, 1 @@ -107510,14 +107940,12 @@ odpbusurl.com, 1 odpikedoslike.com, 1 odpudzovace.sk, 1 odsylvie.cz, 1 -odszkodowania.torun.pl, 1 odszyfrowani.pl, 1 odtu.lu, 1 oducs.org, 1 -oduncum.net, 1 -odunpazari.bel.tr, 1 odvdigital.com, 1 odxin.com, 1 +odyso.org, 1 odyssee-animation.tk, 1 odyssey44.com, 1 odyssy.tech, 1 @@ -107534,6 +107962,7 @@ oecdpisaforschools.org, 1 oecherrezepte.duckdns.org, 1 oeconline.org, 1 oedeemboek.nl, 1 +oeffnet.org, 1 oegd.at, 1 oeh.ac.at, 1 oeilpouroeilcreations.fr, 0 @@ -107547,7 +107976,9 @@ oelbronn-duerrn.de, 1 oelsner.net, 1 oemdealsers.ga, 1 oemdrink.com, 1 +oemparcacim.com, 1 oemspace.net, 1 +oemwolf.com, 1 oen.tw, 1 oeno.link, 1 oenolab-vidalies.com, 1 @@ -107568,6 +107999,7 @@ ofa.org, 1 ofallonil.gov, 1 ofallonmo.gov, 1 ofasoft.com, 1 +ofb.uz, 1 ofbdc.org.au, 1 ofcampuslausanne.ch, 0 ofcr.co.jp, 1 @@ -107576,6 +108008,7 @@ ofenbau-melle.de, 1 ofertasadsl.com, 1 ofertasinternet.com, 1 ofertastop.es, 1 +ofertatis.store, 1 ofertolino.fr, 1 off-festival.pl, 1 off-rabota.tk, 1 @@ -107590,17 +108023,22 @@ offcasesstore.com, 1 offenekommune.de, 1 offenes-deutschland.de, 1 offensity.com, 1 +offensivesentinel.es, 1 offentligsektormedmoln.se, 1 offeo.com, 1 offer-today.ml, 1 +offerground.com, 1 offerhome.com, 1 offerman.com, 1 offerman.industries, 1 offermann-koeln.de, 1 offers.jp, 1 offgamers.com, 1 +offgames.io, 1 offgrid.hr, 1 +offgridauto.com, 1 office, 1 +office-addins.com, 1 office-aslabo.com, 1 office-basilique.notaires.fr, 1 office-de-tourisme.net, 0 @@ -107618,7 +108056,6 @@ office24.com.tw, 1 office2s.com, 1 office365.us, 1 officecode.co.uk, 1 -officeconceptdesign.com, 1 officedivvy.co, 1 officedivvy.com, 1 officedivvy.company, 1 @@ -107632,11 +108069,11 @@ officeinteriors.co.nz, 1 officemaps.net, 1 officemovepro.com, 1 officeplant.pl, 1 -officer-jenny.com, 1 officereg.com, 1 officerjones.tk, 1 officert.ga, 1 officesib.ddns.net, 1 +officetechrentals.com.br, 1 official-sensitive.org, 1 official.link, 1 official.my, 1 @@ -107650,20 +108087,18 @@ officina.roma.it, 1 officina.tk, 1 offis.de, 0 offlineauthentication.com, 1 -offload.so, 1 offnet.ie, 1 offpages.cf, 1 offpages.gq, 1 offpages.ml, 1 offpageseopro.tk, 1 -offrex.eu, 1 offshoot.rentals, 0 offshore-technology.com, 1 offshore.hosting, 1 offshorealert.com, 1 -offshoreenergymanager.com, 1 offshoremoney.tk, 1 offshoretravelsest.ga, 1 +offshorewfs.com, 1 offshorewindwatchdog.com, 1 offside.org, 1 offspringmexico.tk, 1 @@ -107685,7 +108120,6 @@ ofis.tk, 1 ofisbulutta.com, 1 ofisescort.ga, 1 ofisescort.tk, 1 -ofitienda.com.co, 1 ofkodasplace.nl, 1 oflow.me, 0 ofo2.com, 0 @@ -107701,7 +108135,6 @@ oftamedic.com, 0 oftn.org, 1 ofuquemalitaestoy.tk, 1 oga.fit, 0 -ogamedb.com, 1 ogamerezine.tk, 1 ogar.ga, 1 ogarkovo.ml, 1 @@ -107731,6 +108164,7 @@ ogogo-knigi.ml, 1 ogorod-money.tk, 1 ogot.org, 1 ogradylake.ca, 1 +ogrencimerkezi.org, 1 ogrenciyurtlari.tk, 1 ogretmenimsanat.com, 0 ogrod.krakow.pl, 1 @@ -107738,10 +108172,11 @@ ogui.de, 1 ogunquit.gov, 1 ogurishun.tk, 1 ogurus.com, 1 +oguzhanozoglu.com, 1 ogyaa.jp, 0 -oh14.de, 1 +ogznet.com, 1 +oh14.de, 0 oh64.moe, 1 -ohackermascarado.org, 1 ohai.is, 1 ohai.social, 1 ohai.su, 1 @@ -107761,7 +108196,6 @@ ohioago.gov, 1 ohiobrewweek.com, 1 ohiobusinesscentral.gov, 1 ohioflockcote.com, 1 -ohioshedsolutions.com, 1 ohiosnowpatrol.com, 1 ohiosos.gov, 1 ohiostateparks.gov, 1 @@ -107794,6 +108228,7 @@ ohverynice.ml, 1 ohvoice.com, 1 ohwatch.co.za, 1 ohwowlash.com, 1 +ohydne.pl, 1 ohyooo.com, 1 ohype.ga, 1 ohype.gq, 1 @@ -107817,16 +108252,16 @@ oirealtor.com, 1 oirnoir.gq, 1 oirnoir.ml, 1 ois.dk, 1 +oisabre.com, 1 oisd.nl, 1 oiseaux-mania.com, 1 oiseauxdesjardins.tk, 1 oita-homes.com, 1 -oita-kenshin.co.jp, 1 oitaven.es, 1 oitavenlife.com, 1 oiwe.info, 1 oja50.org, 1 -ojd-av.com, 1 +ojapanesetea.ca, 1 ojdip.net, 1 ojee.nic.in, 1 ojjdp.gov, 1 @@ -107837,11 +108272,9 @@ ojos.tv, 1 ojp.gov, 1 ok-ise.com, 1 ok-travel.tk, 1 -ok.med, 1 ok.ru, 1 ok2a.org, 1 ok3on.cz, 1 -okahouse.com, 1 okaidi.es, 1 okaidi.fr, 1 okaidi.ro, 1 @@ -107863,7 +108296,6 @@ okchousebuyer.com, 1 okcp.ca, 1 okdisasterhelp.org, 1 okdousho.com, 1 -oke.com.tw, 1 okea.org, 0 okeb.com, 1 okeechobeecountyfl.gov, 1 @@ -107875,8 +108307,10 @@ okemahok.gov, 1 okgun.co, 1 okhanvatansever.tk, 1 okhelp.org, 1 +okhrana.agency, 1 okib.ca, 1 okiefrog.org, 1 +okinawa-mag.net, 1 okinawa-seaside.com, 1 okinext.com, 1 okiram.net, 1 @@ -107906,7 +108340,6 @@ okna-tm.kz, 0 okna.ua, 1 oknakz-astana.kz, 1 oknavdom.tk, 1 -oknolite.ru, 1 oknopvh.ml, 1 okokorecepten.nl, 1 okosg.kr, 1 @@ -107918,7 +108351,7 @@ okrexperten.de, 1 okrodrigo.com, 1 oksafe-t.org, 1 oksanakazakova.tk, 1 -oksentiuk.pp.ua, 1 +oksichemk.com, 0 okskoleni.cz, 1 oksystem.cz, 1 oktava.tk, 1 @@ -107929,7 +108362,6 @@ oktayincesuturizm.com, 1 oktime.cz, 1 oktober.no, 1 oktober.tk, 1 -oktoo.link, 1 oktoplus.com.br, 1 oktos.tk, 1 oktransportation.gov, 1 @@ -108022,6 +108454,7 @@ oldsoul.id, 1 oldspice.com, 1 oldspokeshome.com, 1 oldsql.tk, 1 +oldsticker.com, 1 oldstmary.com, 1 oldtacomamarine.com, 1 oldtavern.tk, 1 @@ -108039,6 +108472,7 @@ oleading.com.cn, 1 olecich.cz, 1 oleg.loan, 1 olegchursin.com, 0 +olegon.ru, 1 olejkisklep.pl, 1 olejostores.com, 1 olekotenizavivki.bg, 1 @@ -108061,8 +108495,6 @@ olevoitalia.com, 1 olffi.com, 1 olfnewcastle.com, 1 olfsecane.org, 1 -olfuscluster.is, 0 -olgagarlo.es, 1 olgallery.tk, 1 olgamalytcheva.com, 1 olgamilosevic.edu.rs, 1 @@ -108138,7 +108570,6 @@ ollietoys.com, 1 ollion.com, 1 ollning.com, 1 ollo.ga, 1 -ollornog.de, 1 olltechjob.com, 1 olmari.fi, 1 olmc-nutley.org, 1 @@ -108156,6 +108587,7 @@ olofsson.cc, 1 ololmke.org, 1 olomercy.com, 1 olopp.org, 1 +oloveoil.store, 1 olphseaside.org, 1 olqoa.org, 1 olschurch.com, 1 @@ -108171,6 +108603,7 @@ olxa.tk, 1 olxdir.tk, 1 oly.st, 1 olyfed.com, 1 +olymp-arts.world, 1 olympe-transport.fr, 1 olympia-blerick.tk, 1 olympia-londerzeel.tk, 1 @@ -108178,21 +108611,21 @@ olympiads.ca, 1 olympiaduilawyers.com, 1 olympiahomes.com.au, 1 olympiamanzanilla.tk, 1 -olympic-cable.com.my, 1 olympic-lodge.com, 1 olympic-research.com, 1 +olympic.com, 1 olympicfitness.com.mx, 1 olympiclodge.com, 1 olympiclodgebyayres.com, 1 olympicreporting.com, 1 olympionici.cz, 1 +olympsec.io, 1 olymptrade.com, 1 olympuswatch.com, 1 olympusx.co.za, 1 om.yoga, 1 oma-opa-enkel-urlaub.de, 0 oma-opa-enkel.de, 0 -oma-snipingbot.com, 1 omadaidentity.com, 1 omaedu.ro, 1 omag.gov, 1 @@ -108200,13 +108633,11 @@ omaha.com, 1 omaha.gov, 1 omahachapterone.org, 1 omahcoin.com, 1 -omakassociates.com, 1 omal.info, 1 oman-stick.sale, 1 omanair.com, 1 omangrid.com, 1 omanhr.cf, 1 -omanports.om, 1 omanpost.om, 1 omar-webdesign.de, 1 omarflorist.com, 1 @@ -108227,7 +108658,6 @@ omb.gov, 1 omb.gov.ph, 1 ombrazur.fr, 1 ombregialle.it, 1 -ombudscommissies-hertogenbosch.nl, 1 omc-copiers.com, 1 omcg.de, 1 omd.com, 1 @@ -108237,6 +108667,7 @@ omegachess.tk, 1 omegaclickinsights.com, 1 omegacode.pl, 1 omegahosting.net, 1 +omegamc.ua, 1 omegathermoproducts.nl, 1 omegleporn.to, 1 omenu.co.uk, 1 @@ -108253,11 +108684,12 @@ omexcables.com, 0 omf.link, 1 omfacialsurgery.com, 1 omfmf.tk, 1 +omg.fun, 1 omgbouncycastlehire.co.uk, 1 omgchocolatedesserts.com, 1 omgdevil.com, 1 omgevingsdiensthaaglanden.nl, 1 -omgidol.com, 0 +omgidol.com, 1 omgit.works, 1 omhome.net, 1 omicawholesale.com, 1 @@ -108267,15 +108699,20 @@ omiltem.net, 1 omind.ai, 1 omintmais.azurewebsites.net, 0 omipicon.io, 1 +omitech.co.uk, 1 omkarpathak.in, 1 omlpar.gov, 1 omm.com, 1 +ommam.com.br, 1 +ommcitalflex.com, 1 omn.cc, 1 omnel.ml, 1 +omnepresent.com, 1 omnergy.au, 1 omnergy.com.au, 1 omnergy.net, 1 omngc.gov, 1 +omniaaerospace.com, 1 omniaclubs.com, 1 omniaintranet.de, 1 omniaintranet.dk, 1 @@ -108289,13 +108726,13 @@ omnibot.tv, 1 omnical.ru, 1 omnicommediagroup.com, 1 omniconvert.com, 1 +omnicourt.jp, 1 omnidiecasting.com, 1 omniflex.au, 1 omniflex.cn, 1 omniflex.co, 1 omniflex.co.uk, 1 omniflex.co.za, 1 -omniflex.com.au, 1 omniflex.com.cn, 1 omniflex.net, 1 omniflex.uk, 1 @@ -108303,11 +108740,9 @@ omniflora.shop, 0 omnifotoside.tk, 1 omniga.de, 1 omnilert.net, 1 -omnirealm.tech, 1 -omnirecherche.nl, 1 omniscimus.net, 0 omnisiens.se, 1 -omnisphere-group.com, 1 +omnisky.dk, 1 omnissimmo.fr, 1 omnitaxhelp.com, 1 omnite.ca, 1 @@ -108321,7 +108756,6 @@ omolines.tv, 1 omoo.co, 0 omorashi.org, 1 omoteura.com, 1 -omox.co.uk, 1 omranic.com, 1 omrmz.org, 1 omro-wi.gov, 1 @@ -108336,6 +108770,7 @@ omskweb.tk, 1 omstars.com, 1 omtcloud.jp, 1 omundojornalismo.pt, 1 +omva.de, 1 omxz8.com, 1 omxz80.com, 1 omxz9.com, 1 @@ -108354,8 +108789,6 @@ on-targettrainingcourses.com, 1 on-tech.co.uk, 1 on-tv.tk, 1 on-ze.com, 1 -on.com, 1 -on2.li, 1 on2it.net, 1 on3.com, 1 on3static.com, 1 @@ -108371,16 +108804,18 @@ onavstack.net, 1 onawaymi.com, 1 onbettertech.com, 1 onbley.com.br, 1 -onboardti.com.br, 1 +onboardittech.com, 1 onboat-seminars.com, 1 onbrand.me, 1 oncall.health, 1 +oncalldoctor.ae, 1 oncc.org, 1 oncecocuklar.org.tr, 1 oncemorearoundeternity.com, 1 oncentive.io, 1 onceuagain.tk, 1 onceuponabow.org, 1 +onceuponarainbow.co.uk, 1 onchclub.tk, 1 onclouds.tech, 1 onco-grandest.fr, 1 @@ -108389,15 +108824,13 @@ oncotarget.ru, 1 ond-inc.com, 1 ond-inc.jp, 1 ondajoven.tk, 1 +ondav.com, 1 ondcp.gov, 1 onde.xyz, 1 ondeapostar.pt, 1 ondeck.com.au, 1 ondemandassociate.com, 1 onderka.com, 1 -onderneembaar.nl, 1 -ondernemenindenbosch.nl, 1 -ondernemeninshertogenbosch.nl, 1 onderzoeksraad.nl, 1 ondevamosjantar.com, 1 ondiet.biz, 1 @@ -108405,12 +108838,14 @@ ondoline.ch, 1 ondoorgrond.tk, 1 ondra05.cz, 1 ondrakutil.cz, 1 +ondrei.one, 1 ondrej.org, 1 +ondrejsramek.cz, 1 ondrejvasicek.cz, 1 one-acleaning.com, 1 one-clue.com, 1 one-cozmic.com, 1 -one-dot.de, 1 +one-dot.de, 0 one-host.ga, 1 one-news.net, 0 one-pass.cloud, 1 @@ -108422,6 +108857,7 @@ one2.digital, 1 one3oneapartments.com, 1 oneaftac.gov, 1 oneandfree.org.au, 1 +oneanime.cn, 1 oneartyminute.com, 1 onebanc.ai, 1 onebelo.tk, 1 @@ -108432,7 +108868,6 @@ onebookstore.ml, 1 onebreadcrumb.com, 1 onebreadcrumb.com.au, 1 onecarsource.com, 1 -onecashye.com, 1 onecauseuk.org, 1 onecellatatime.org, 1 onecharge.biz, 1 @@ -108461,6 +108896,7 @@ oneearthliving.org, 1 oneearthsacredarts.com, 1 oneem.tk, 1 oneequity.com, 1 +oneest.com, 1 onefabday.com, 1 onefamily.com, 1 onefestivalplaza.com.au, 1 @@ -108478,12 +108914,12 @@ onegeeks.org, 1 onegeology.org, 1 oneggiri.com, 1 onegift.bg, 1 +onehealthbehaviors.org, 1 oneheartbali.church, 0 onehost.kz, 0 oneidacityny.gov, 1 oneidacountywi.gov, 1 oneindex.tk, 1 -oneinsix.nz, 1 oneinternetamerica.com, 1 oneiroi.co.uk, 1 oneirosociety.tk, 1 @@ -108541,19 +108977,21 @@ onestopsafetysolutions.org, 1 onestopshop.ml, 1 onestpasdesanges.fr, 1 onesub.io, 1 +onet.co.jp, 1 onetab.com, 1 onetakeonehit.tk, 1 onetap.com, 1 onetcenter.org, 1 +onetcodeconnector.org, 1 onetech.it, 1 -onetime.co, 1 -onetime.nl, 1 onetimesecret.com, 1 onetonline.org, 1 onetouchreveal.com, 1 onetouchreveal.it, 1 +onetouchrevealplus.com, 1 onetouchtour.com, 1 onetown.gq, 1 +onetranslations.com.br, 0 onetrust.com, 1 onetwentyseven001.com, 1 onetwo-vermietung.de, 1 @@ -108573,7 +109011,6 @@ onezero24.net, 1 onezeroit.com, 1 onfaloc.tk, 1 onfilm.tk, 1 -onfin.io, 1 onfleet.com, 1 onfo.eu, 1 onformative.eu, 1 @@ -108581,6 +109018,7 @@ onformative.net, 1 ong.ng, 1 ong.or.at, 1 ongao.top, 1 +ongea.io, 1 ongelukvandaag.nl, 1 ongewenstretour.nl, 1 ongiaenegogoa.com, 1 @@ -108619,7 +109057,6 @@ onkfaktor.de, 1 onkologiya.ga, 1 onkoloogiakeskus.ee, 1 onkoplus.de, 1 -onkori.ru, 1 onkvwave.ru, 1 onlanka.com, 1 onld.de, 1 @@ -108637,6 +109074,7 @@ online-concepts.nl, 1 online-consulting-corp.com, 1 online-diary.tk, 1 online-divorce.co.za, 1 +online-eikaiwa-guide.com, 1 online-english.tk, 1 online-fix.me, 1 online-forum.net, 1 @@ -108647,7 +109085,6 @@ online-jobs.cf, 1 online-lernprogramme.de, 1 online-mobile-phone-shop.tk, 1 online-news-usa.tk, 1 -online-personaltrainer.com.au, 1 online-pochta.ml, 1 online-pr.at, 1 online-shop-equipment.tk, 1 @@ -108661,6 +109098,7 @@ online-textil.sk, 1 online-umwandeln.de, 1 online-video-cutter.com, 1 online-voice-recorder.com, 1 +online-wedding.site, 1 online-xxxmovies.com, 1 online.ee, 1 online.forum, 1 @@ -108671,6 +109109,7 @@ online24.pt, 1 online365.ga, 1 onlineaccess.io, 1 onlinebathrooms.ie, 1 +onlinebettingacademy.com, 1 onlinebiller.com, 1 onlinebillingform.com, 1 onlinebookmarks.tk, 1 @@ -108684,7 +109123,6 @@ onlinecarstyling.nl, 0 onlinecashloanz.com, 0 onlinecasino.amsterdam, 1 onlinecasinoerdk.com, 1 -onlinecasinofriend.com, 1 onlinecasinoground.nl, 1 onlinecasinoknowhow.com, 1 onlinecasinoselite.org, 1 @@ -108747,7 +109185,7 @@ onlineradio.com.pl, 1 onlineradio.pp.ua, 1 onlineradiobr.com, 1 onlineradious.com, 1 -onlinereputation.com, 0 +onlinereputation.com, 1 onlinescams.uk, 1 onlineschipaanpak.nl, 1 onlinesearningstips.ga, 1 @@ -108776,6 +109214,7 @@ onlineveilingmeester.nl, 1 onlineverdienen.tk, 1 onlinevergidanismani.com, 1 onlineviewers.tk, 1 +onlinevisa.ru, 1 onlinevoting.tk, 1 onlinewallpapers.tk, 1 onlineweblearning.com, 1 @@ -108796,6 +109235,7 @@ onlybooks.gq, 1 onlychristian.me, 1 onlycompress.com, 1 onlycrumbsremain.com, 1 +onlydust.xyz, 1 onlyesb.net, 1 onlyfans.com, 1 onlyfans.freemyip.com, 1 @@ -108869,22 +109309,23 @@ ontarioplace.com, 1 ontariopropertybuyers.com, 1 ontarioreporting.com, 1 ontariostorage.com, 1 -ontdekhetzelf.nu, 0 +ontdekhetzelf.nu, 1 ontestpad.com, 1 onthe.network, 1 ontheballbuilding.com.au, 1 +onthegosystems.com, 1 onthemend.com, 1 onthesocials.com.au, 1 onthisday.com, 1 ontimeemergencyroadsideandbatteryservice.com, 1 ontogenese.net, 1 ontopoflove.nl, 1 -ontora.ee, 1 ontourmarketing.at, 1 ontreams.com, 1 ontrio.cz, 1 ontrip.dk, 1 ontrip.kr, 1 +ontruck.org, 1 ontscore.com, 1 ontsnappingskamer.nl, 1 onttt.com, 1 @@ -108899,7 +109340,6 @@ onvori.com, 1 onvori.de, 1 onvousment.fr, 1 onwie.fr, 1 -onwikipedia.com, 1 onwing.ai, 1 onx.dk, 1 onyourbike.com.au, 1 @@ -108924,8 +109364,8 @@ oog-osaka.jp, 1 oogami.name, 1 oogartsennet.nl, 1 ooharttemplates.com, 1 +oohcoloring.com, 1 ooiiuu.com, 1 -oolveri.com, 1 oomepu.com, 1 oompf.de, 1 oomph-delikatessen.tk, 1 @@ -108934,6 +109374,7 @@ ooo-santal.ml, 1 ooo.xxx, 1 oooaltera.ru, 1 oooh.events, 1 +oooir.ru, 1 ooonja.de, 1 oooo.loan, 1 ooooo.cz, 1 @@ -108974,7 +109415,7 @@ opd.co.nz, 1 opdera.org, 1 opdi.aero, 1 ope.ee, 1 -opeixinho.com.br, 1 +opel-focken.de, 0 opelim.net, 1 open-banking-access.uk, 1 open-bs.com, 1 @@ -108986,6 +109427,7 @@ open-data-apps.org, 1 open-desk.org, 1 open-douyin.com, 1 open-fixture-library.org, 1 +open-future.info, 1 open-greenenergy.com, 1 open-ibd.info, 1 open-infrastructure.net, 1 @@ -108996,11 +109438,9 @@ open-procurement.com, 1 open-sauce-recipes.co.uk, 1 open-source.gr, 1 open-spending.eu, 1 -open-systems.com, 1 open-work.space, 1 open-xchange.com, 1 -open.ch, 1 -open.film, 1 +open.film, 0 open.my.id, 1 openaccess.nz, 1 openacte.ch, 0 @@ -109016,14 +109456,17 @@ openargus.org, 1 openaudio.it, 1 openbackdoor.com, 1 openbank.us, 1 +openbayes.network, 1 openbayesstatus.com, 1 openbeecloud.com, 1 openbible.com.au, 1 openbiblebookstore.com.au, 1 +openbleam.com, 1 openblink.biz, 1 openblink.org, 1 openblox.org, 1 openbooktheatrecompany.net, 1 +openbriefing.org, 0 openbsd.cz, 1 openbsdhosting.com, 1 openbusiness.tk, 1 @@ -109035,8 +109478,6 @@ opencartvip.com, 1 openchipplatform.com, 1 opencircuit.nl, 1 opencity.spb.ru, 1 -opencl.aw, 1 -openclaw-setup.me, 1 openclima.com, 1 openclub24.ru, 1 openconf.uk, 1 @@ -109064,9 +109505,7 @@ openfpcdn.io, 1 opengameart.org, 1 opengovpartnership.de, 1 openhandhelds.org, 1 -openhisto.com, 1 openhistory.de, 1 -openhome.com.co, 0 openhousemelbourne.org, 1 openhwgroup.cn, 1 openhwgroup.org, 1 @@ -109074,7 +109513,6 @@ openinframap.org, 1 openinsieme.com, 1 openintel.com.br, 1 openintl.com, 1 -openinvite.biz, 1 openjawtech.com, 1 openjsf.org, 1 openjur.de, 1 @@ -109090,6 +109528,7 @@ openmarkets.group, 0 openmdm.eu, 1 openmdm.org, 1 openmind.ga, 1 +openmindonline.it, 1 openmindsec.com, 1 openmirrors.cf, 1 openmirrors.ml, 1 @@ -109110,11 +109549,11 @@ openrainbow.net, 1 openrainbow.org, 1 openre.site, 1 openrealestate.co, 1 -openrecognition.org, 1 openremote.io, 1 openreplay.com, 1 openresa.com, 1 openresearch.amsterdam, 1 +openreview.net, 1 openroademail.com, 1 openrtm.org, 1 openscience.ml, 1 @@ -109139,7 +109578,7 @@ openssl.org, 1 openstandia.jp, 1 openstem.com.au, 1 openstreetmap.is, 1 -opensyria.net, 1 +openstreetmap.org, 1 opentapetes.com.br, 1 opentechalliance.com, 1 opentenders.tech, 1 @@ -109172,7 +109611,6 @@ operahedeland.dk, 1 operamrhein.de, 1 operanavigation.ro, 1 operatic.gq, 1 -operation.de, 1 operationhomefront.org, 1 operationkiwi.work, 1 operationlifeline.ca, 0 @@ -109185,7 +109623,6 @@ operatoresanitario.it, 1 operatorlabs.ai, 1 operaunica.tk, 1 operd.gob.do, 1 -operebem.com.br, 1 opernball.com, 1 opforintel.com, 1 opgani7.info, 1 @@ -109214,14 +109651,14 @@ opiskelijaradio.com, 1 opiskelijaradio.fi, 1 opisrael.tk, 1 opito.com, 1 -opium.io, 1 +opium.io, 0 opix.fr, 1 opko.com, 1 opl.bz, 1 oplata-mvd.ga, 1 oplata-vklike.tk, 1 oplata.uz, 1 -oplium.com, 0 +oplium.com, 1 oplop.appspot.com, 1 opm.gov, 1 opmaakonderscheidingen.nl, 1 @@ -109286,7 +109723,9 @@ opstory.com, 1 opstrengning.tk, 1 opswat.com, 1 opswill.com, 1 +opta-tv.com, 1 optalysys.com, 1 +opteam.pl, 1 opteamax.de, 1 opteamax.eu, 1 optenhoefel.de, 1 @@ -109305,14 +109744,13 @@ opticstore.com.ua, 1 optiekzien.nl, 0 optigear.nl, 1 optigon.no, 1 -optik-sehstern.de, 0 +optik-sehstern.de, 1 optik-tamara.de, 1 optik-trosdorff.de, 1 -optikabane.com, 0 +optikabane.com, 1 optikflow.com, 1 optikoscolombia.com, 1 optilan.tk, 1 -optimabus.com, 1 optimakers.pl, 1 optimale.co.uk, 1 optimall.tk, 1 @@ -109328,13 +109766,13 @@ optimisedlabs.net, 1 optimisedlabs.uk, 1 optimization-online.org, 1 optimizationanalyticsest.ga, 1 -optimizatunomina.es, 1 optimize-jpg.com, 1 optimizedlabs.co.uk, 1 optimizedlabs.info, 1 optimizedlabs.net, 1 optimizedlabs.uk, 1 optimizemy.health, 1 +optimom.ca, 1 optimon.io, 1 optimum-general.com, 1 optimumactuaires.com, 1 @@ -109348,7 +109786,6 @@ optimumgam.com, 1 optimumgam.fr, 1 optimumgestion.com, 1 optimumgroup.com, 1 -optimumimmobilier.com, 1 optimummanagement.net, 1 optimummarinemanagement.net, 1 optimummenhealth.com, 1 @@ -109360,9 +109797,11 @@ optimumship.net, 1 optimumti.ca, 1 optimumvie.com, 1 optimumvie.fr, 1 +optimumwebdesigns.com, 1 optimus.io, 1 optimuscrime.net, 1 optimusprime.pl, 1 +optinetconsulting.com, 1 optinf.ca, 1 optinf.com, 1 optionsfund.cn, 1 @@ -109392,12 +109831,12 @@ opture.ch, 1 optykgill.pl, 1 optymyze.com, 1 opulentdivision.com, 0 +opulentranch.com, 0 opus-codium.fr, 1 opus-labs.fr, 1 opus4.com, 1 opusbank.com, 1 opusdei.org, 1 -opusparts.com, 1 opusraid.eu, 1 opussystems.com.au, 1 opusztaszer.hu, 1 @@ -109417,7 +109856,6 @@ oraclematerias.com, 1 oracolo.tk, 1 oraculos.pt, 1 oraculosiono.net, 0 -orakelet.ai, 1 oraklinika.tk, 1 oralb.com, 1 oralchirurgie-phoenix.de, 1 @@ -109457,6 +109895,7 @@ orangesnowman.com, 1 orangesquash.org.uk, 0 orangesquirrelevents.co.uk, 1 orangetexas.gov, 1 +orangetown.com, 1 orangetrialtech.com, 1 orangetrialtechnology.com, 1 orangewaratahjuniorfc.org.au, 1 @@ -109468,7 +109907,6 @@ oranous.tk, 1 oranweb.tk, 1 orap.de, 1 orarend.com, 1 -oratoriobedizzolecalvagese.it, 1 oraz.tk, 1 orazen.it, 1 orbaden.com, 1 @@ -109479,12 +109917,12 @@ orbit.aero, 1 orbit.church, 1 orbita.zp.ua, 1 orbitaclub.cf, 1 -orbital8.com.au, 1 orbitalcommerce.com.br, 0 orbitdefence.co.uk, 1 orbitfab.com, 1 orbitfoods.ca, 1 orbitforum.ga, 1 +orbitfurnituresolutions.com, 1 orbitgoods.ca, 1 orbitmoonalpha.com, 1 orbitpro.co, 1 @@ -109492,7 +109930,6 @@ orbits.ga, 1 orbitum.fr, 1 orbsl.com, 1 orca-software.com, 1 -orca.pet, 1 orcada.co, 1 orcahq.com, 1 orcamais.com.br, 1 @@ -109500,7 +109937,6 @@ orcamarine.tk, 1 orcas.tk, 1 orcasecurity.io, 1 orchardnh.org, 1 -orchardpure.com, 1 orchestra.tk, 1 orchestremetropolitain.com, 1 orchidee-mariage.com, 1 @@ -109548,6 +109984,7 @@ ordinals.com, 1 ordner.tk, 1 ordoptimisten.se, 1 ordoro.com, 1 +ordr.net, 1 ordr.no, 1 ordremk.fr, 1 orduhaberleri.tk, 1 @@ -109571,6 +110008,7 @@ orel-city.ml, 1 orel-news.net, 1 orel-sait.tk, 1 orel.ga, 1 +orel.se, 1 orelblog.tk, 1 orelnet.tk, 1 orem.gov, 1 @@ -109581,6 +110019,7 @@ orendatattoo.bg, 1 orenohatake.com, 1 orensport.tk, 1 oreo.rocks, 1 +oreomuhely.hu, 1 oreosis.com, 1 oreshinya.xyz, 1 orestadit.dk, 1 @@ -109594,7 +110033,6 @@ orfeo-engineering.ch, 1 orfininumeister.it, 1 orfordvillewi.gov, 1 org-css.tk, 1 -orgalaxy.co.il, 1 orgamco.com.br, 1 organaqsis.com, 1 organdonor.gov, 1 @@ -109607,20 +110045,18 @@ organicindiausa.com, 0 organicossuliani.com.br, 1 organicpoint.in, 1 organicrootsfestival.tk, 1 +organicsearcher.com, 1 organictanningest.ga, 1 organisatieteam.nl, 1 -organisemyday.in, 1 +organisation-mariage.net, 1 organist.de, 1 organizacasa.com.br, 0 organizalpha.com, 1 -organizar360.com.br, 1 organizasyon.tk, 1 organizasyonbul.com, 1 organization-of-holidays.tk, 1 -organized.cooking, 1 organizedrhyme.tk, 1 organizewithmarie.com, 1 -organo.pk, 1 organspende-register.de, 1 orgasmium.com, 1 orged.de, 1 @@ -109671,8 +110107,6 @@ origintlsflexible.com, 1 origintlsfull.com, 1 origintlsstrict.com, 1 origintunes.tk, 1 -origonews.com, 1 -orijen.ca, 1 orijenpetfoods.com, 1 orikos.tk, 1 orikum.org, 0 @@ -109684,7 +110118,6 @@ orinoquiadata.tech, 1 oriocdn.com, 1 orion-rentals.tk, 1 orion-universe.com, 1 -orion180.com, 1 orioneclipse.com, 1 orionelement.com, 1 oriongames.eu, 1 @@ -109695,6 +110128,7 @@ oris.design, 1 oris.edu.ee, 1 orisline.com, 1 oritain.com, 1 +orito-hifuka.com, 1 oriveda.com, 1 orix.com.au, 1 oriya-hrs.com, 0 @@ -109706,7 +110140,6 @@ orkestar-krizevci.hr, 1 orkestron.com, 1 orkiv.com, 0 orkkikerho.tk, 1 -orkomedia.com, 1 orland.tk, 1 orlandgo.com, 1 orlandhillspdil.gov, 1 @@ -109717,23 +110150,21 @@ orleansiowa.gov, 1 orleika.ml, 1 orlowisko.pl, 1 ormondcatclinic.com, 1 -ormsson.is, 1 ornc.org, 1 ornikar.com, 1 ornithopter.tk, 1 ornsyn.no, 1 ornua.com, 1 -oro-express.es, 1 oro.milano.it, 1 oro.roma.it, 1 oro97.com, 1 orocojuco.com, 1 oroconews.com.br, 1 orodelsalento.com, 1 +oroeditions.com, 1 orologeria.roma.it, 1 orologi.roma.it, 1 oronomn.gov, 1 -oropm.com, 1 oroshikikin.jp, 1 orpheus.network, 1 orpheus2.com.ec, 1 @@ -109742,6 +110173,7 @@ orquestas.tk, 1 orrs.de, 1 orsal.fr, 1 orsecurity.com.au, 1 +orsemix.fr, 1 orsgo.com, 1 ortahisarsigorta.com, 1 ortanatech.com, 1 @@ -109775,7 +110207,6 @@ orthotrain.de, 1 ortiatuttogas.it, 1 ortigasmalls.com, 1 ortigueira.ga, 1 -ortizbotellaabogados.es, 1 ortizmario.com, 1 ortocity.com.br, 1 ortocraft.tk, 1 @@ -109824,9 +110255,7 @@ osamat.ee, 1 osamatoon.ml, 1 osandp.com, 1 osankj.tk, 1 -osano.ai, 1 osano.com, 1 -osano.id, 1 osarahealth.com, 1 osateam.tk, 1 osawatomieks.org, 1 @@ -109885,7 +110314,6 @@ osgi.org, 1 osgiusers.org, 1 osgrm.by, 1 osgroup.tk, 1 -osha.gov, 1 oshacademy.com, 1 oshayr.com, 1 oshea.cc, 1 @@ -109897,7 +110325,6 @@ osi-systems.com, 1 osiedlemalownicze.wroc.pl, 1 osimmo.fr, 1 osindesejados.com.br, 1 -osintcat.net, 1 osioptoelectronics.com, 1 osipenko.ua, 1 osiris-ai.co.uk, 1 @@ -109905,30 +110332,23 @@ osirisrising.tk, 1 osirisrp.online, 1 osirium.com, 1 osiriz.xyz, 1 -oskargajcowski.pl, 1 oskarkopra.fi, 1 -oskcapital.com, 1 -oskcapital.com.au, 1 -oskcapital.com.sg, 1 -oskconstruction.com, 1 -oskdesign.com.my, 1 oskety.com, 1 oskgroup.com, 1 -oskproperty.com.my, 1 oskrba.net, 1 oskrba.online, 1 -osksyariah.com, 1 oskuro.net, 1 oslinux.net, 1 oslo-kammerorkester.no, 1 oslofjorden.org, 1 -oslogreenbelt.no, 1 osm.is, 1 +osm.org, 1 osmaniyehaber.tk, 1 osmanlitakilari.tk, 1 osmarks.net, 1 osmarks.tk, 1 osmdroid.net, 1 +osmestresdainternet.org, 1 osmosebox.com, 1 osmosis-inversa.online, 1 osmre.gov, 1 @@ -109947,12 +110367,10 @@ ospis.pl, 1 ospo-alliance.org, 1 ospo.zone, 1 ospoalliance.org, 1 -ospsuchoraczek.pl, 1 osrdmo.gov, 1 osrs.wiki, 1 osrsmap.net, 1 osrsplugins.xyz, 1 -oss.zone, 1 ossdiabolo.tk, 1 osservatorionessuno.it, 1 osservatorionessuno.org, 1 @@ -109968,6 +110386,7 @@ ostan-nku.tk, 1 ostankino.tk, 1 ostechnix.com, 1 ostek.tk, 1 +ostendorf.com, 1 osteolaclusaz.com, 0 osteopathe-voisine.com, 1 osteopatiaymasaje.com, 1 @@ -110008,11 +110427,13 @@ oswegony.gov, 1 oswestrysff.co.uk, 1 oswmlab.com, 1 osworx.net, 1 +oszteralexandra.hu, 1 ot-honfleur.fr, 1 ot-vinta.tk, 1 ot.id, 1 otaikajang.org, 1 otako.pl, 0 +otaku-treasure.com, 1 otakubox.de, 1 otakucloud.net, 0 otakuie.tk, 1 @@ -110020,6 +110441,7 @@ otakurepublic.com, 1 otakurumi.de, 1 otakuzonefanzine.tk, 1 otariarutiunian.com, 1 +otchet360.ru, 1 otdel16.tk, 1 otdelka56.ml, 1 otdelka76.tk, 1 @@ -110031,6 +110453,7 @@ oteri.de, 1 otg-drives.tk, 1 otgadaika.tk, 1 otheatre.ru, 1 +other98.com, 0 othercdn.com, 1 otherkinforum.com, 1 otherwise.tk, 1 @@ -110038,7 +110461,6 @@ othrys.net, 1 oticasvisao.net.br, 1 otima.digital, 1 otimismoemrede.tk, 1 -otimo.ro, 1 otinane.eu, 1 otiocafes.com, 1 otipax.ru, 1 @@ -110059,7 +110481,7 @@ otoplenie-ufa.ml, 1 otorino.tk, 1 otorium.gq, 1 otorrino.pt, 0 -otowui.com, 1 +otosemi.com, 0 otoy.com, 1 otp24hr.com, 1 otpbd.xyz, 1 @@ -110116,14 +110538,19 @@ ouglor.com, 1 oui-mais-toscope.info, 1 ouin.land, 1 ouiouibunny.ch, 1 +ouiouibunny.fr, 1 ouipharma.fr, 1 oujj.link, 1 ouldlamara.tk, 1 -oulmes.ma, 1 oulunjujutsu.com, 1 +oumactive.com, 1 ouminews.net, 1 oumlaut.net, 1 +oumorienteering.com, 1 +oumpower.com, 1 +oumrace.com, 1 oumsnatch.com, 1 +oumsport.com, 1 ounage.de, 1 ouowo.gq, 1 our-box.de, 1 @@ -110154,10 +110581,8 @@ ourladyoftheassumptionchurch.org, 1 ourladyqop.org, 0 ourladyqueenofmartyrs.org, 1 ourlink.tk, 1 -ourlittlejoys.com, 1 ourlocality.org, 1 ourmarket.live, 1 -ourmuktsarsaheb.in, 1 ournewsindia.ga, 1 ourocg.cn, 1 ourodaestrela.pt, 1 @@ -110165,9 +110590,11 @@ ouroestrela.pt, 1 ouroh2.com, 1 ouronyx.com, 0 ouropal.com, 1 +ourpharmacynetwork.com, 1 ourplanetary.com, 1 oursibparksplan.com, 1 oursmartcity.au, 1 +oursportscentral.com, 1 ourstory.rip, 1 oursweb.com, 1 oursweb.net, 1 @@ -110182,7 +110609,6 @@ ourwits.com, 1 ourworldindata.org, 0 ourworldspeaks.com, 1 ousho.me, 1 -ousson.com, 1 oust.ch, 0 out-of-england.cf, 1 out-of-england.ga, 1 @@ -110192,7 +110618,6 @@ outagamie.gov, 1 outandproud.pl, 1 outbackspectacular.com.au, 1 outbankapp.com, 1 -outboost.com, 1 outbound.tk, 1 outcasts-guild.eu, 1 outcomes10.com, 1 @@ -110212,7 +110637,6 @@ outernet.tk, 1 outerspace.ga, 1 outetc.com, 1 outfaced-dancestudio.de, 1 -outfame.com, 1 outfit-weimar.eu, 1 outgress.com, 1 outgrow.co, 1 @@ -110221,16 +110645,20 @@ outilsfroids.net, 1 outincanberra.com.au, 1 outinnationalsecurity.org, 1 outlaw-star.tk, 1 +outlet-center.by, 1 outletcity.bg, 1 outletstoresmalls.com, 1 outline.vn, 1 outlook.pl, 1 outlookbythebay.com, 1 +outlookcomponents.com, 1 +outlookprivacy.com, 1 outlooktransfer.com, 1 outnow.ch, 1 outofservice.com, 1 outofthefog.net, 1 outplay.ai, 1 +outplayed.in, 1 outplayhq.com, 1 outplnr.fr, 1 outpost.network, 1 @@ -110238,7 +110666,6 @@ outreach.studio, 1 outrider.ai, 1 outshinesolutions.nl, 1 outsize.tk, 1 -outskirt-clans.com, 1 outskirtspress.com, 1 outsourced-payroll.com.au, 1 outsourcify.net, 1 @@ -110254,6 +110681,7 @@ outwoodz.co.uk, 1 outworking.com, 1 ouverture-coffre-fort.fr, 1 ouvindo.com.br, 1 +ouvrierbtp.com, 1 ouwerling.tk, 1 ovabastecedoraindustrial.com, 1 ovalle.tk, 1 @@ -110307,7 +110735,6 @@ overnetfaq.tk, 1 overnetworld.tk, 1 overnightglasses.com, 1 overpa.ss, 1 -overpage.org, 1 overpb.gq, 1 overprint-samara.ru, 1 overps.cf, 1 @@ -110339,7 +110766,7 @@ ovirt.org, 1 oviser.ml, 1 ovisy.com, 1 ovmgroup.eu, 1 -ovni-owners.org.uk, 1 +ovni-owners.org.uk, 0 ovnrain.com, 0 ovo.st, 1 ovochi.tk, 1 @@ -110347,6 +110774,7 @@ ovodakadarkut.tk, 1 ovog.pk, 1 ovoreferralcode.com.au, 1 ovosimpatico.com, 1 +ovosimpatico.org, 1 ovpn.com, 1 ovpn.to, 1 ovrwlm.ai, 1 @@ -110379,6 +110807,8 @@ owlandbee.co.uk, 1 owlandbee.com.au, 1 owlandbee.eu, 1 owlandbee.uk, 1 +owlando.com, 1 +owlandrabbitgallery.com, 1 owlbee.be, 1 owlbee.co.uk, 1 owlbee.de, 1 @@ -110388,20 +110818,21 @@ owlbee.fr, 1 owlbee.it, 1 owlbee.nl, 1 owlbee.uk, 1 -owlchess.com, 1 owldevelopers.tk, 1 owlhollowbakery.com, 1 owllee.com, 1 +owlmaster.org, 1 owlnull.me, 1 owlofminerva.net, 1 owlscrap.ru, 1 +owlsroost.xyz, 1 owlvilleers.ga, 1 ownagepranks.com, 1 ownaquiznos.com, 1 ownc.at, 1 owncloud.com, 1 ownerbusiness.org, 1 -ownerinspections.com.au, 1 +ownergroup.net, 1 ownhost.com, 1 ownhosting.cloud, 1 ownhosting.de, 1 @@ -110411,6 +110842,7 @@ ownsky.com, 1 ownsport.fr, 1 owntips.ml, 1 owntournament.org, 1 +ownwolke.de, 1 ownyourfamily.com, 1 owo.rs, 1 owo.vn, 1 @@ -110473,12 +110905,14 @@ oxyadvertising.com, 1 oxydac.com, 1 oxydrate.com, 1 oxygames.tk, 1 +oxygen.com, 1 oxygenated.cf, 1 oxygenforchennai.com, 1 oxygenupdater.com, 1 oxylabs-china.net, 1 oxylabs.cn, 1 oxylabs.io, 1 +oxylog.fr, 1 oxymail.ru, 1 oxymoron.tk, 1 oxynux.xyz, 1 @@ -110496,6 +110930,7 @@ oyapkprdsb.ca, 1 oyaptcdsb.com, 1 oyaquelegal.com.br, 1 oyemobile.ca, 1 +oyemobile.com, 1 oyk13tyuj8ljpete31edj2tes-9if7bi.com, 0 oyo.moe, 1 oyoshi.com.my, 1 @@ -110504,6 +110939,7 @@ oyr79.tk, 1 oysterlink.com, 1 oysterworldwide.com, 1 oytic.com, 1 +oyudha.me, 1 oyun.news, 1 oyundijital.com, 1 oyungg.net, 0 @@ -110537,7 +110973,7 @@ ozero-kardyvach.ru, 1 ozgesezen.com, 1 ozgoz.com, 1 ozgpp.de, 1 -ozgurbilge.com, 1 +ozgurakin.com.tr, 1 ozgurbozkurt.com, 1 ozgurgokmen.net, 1 ozgurkazancci.com, 1 @@ -110547,6 +110983,7 @@ ozli.ga, 1 ozmo.ml, 1 ozna.tk, 1 oznamovacipovinnost.cz, 1 +ozoksteel.com, 1 ozone-medical.fr, 1 ozonegrants.au, 1 ozonegrants.com, 1 @@ -110564,6 +111001,7 @@ ozvfa.com, 1 ozvoip.net, 1 ozvolvo.org, 1 ozyurttesisat.com, 1 +ozzie.fr, 1 ozzyfant.de, 1 p-art.design, 1 p-e-g.org, 1 @@ -110574,6 +111012,7 @@ p-k-b.com, 1 p-konto.tk, 1 p-ku.com, 1 p-p.site, 1 +p-pac.com, 1 p-pc.de, 1 p-soc.com.br, 1 p.ac, 1 @@ -110587,6 +111026,7 @@ p1-apps.nl, 1 p1-test.nl, 1 p10.ru, 0 p1984.nl, 0 +p1hsinc.com, 1 p1ratrulezzz.me, 1 p2000app.nl, 1 p22.co, 1 @@ -110618,6 +111058,7 @@ p9297.co, 1 p9728.co, 1 p99perf.com, 1 p99performance.com, 1 +p9cq.com, 1 p9d1.com, 1 pa-nganjuk.go.id, 1 pa-w.de, 1 @@ -110663,6 +111104,7 @@ pabloarteaga.uk, 1 pabloarteaga.xyz, 1 pablocamino.tk, 1 pablocelorio.com, 1 +pablodominio.sbs, 1 pablofain.com, 0 pablofonta.es, 1 pablogracia.es, 1 @@ -110675,12 +111117,14 @@ pablonadiecomotu.tk, 1 pabloroblesminister.com, 1 pablosaraiva.com, 1 pabpunk.tk, 1 +pabrikvideo.com, 1 pac-clad.com, 1 pacareerzone.org, 1 pacasino.com, 1 pacatlantic.com, 1 pacay.id, 1 pacaya.com, 1 +paccar.com, 0 pacch.io, 1 pacco.tk, 1 paccolat.name, 1 @@ -110719,7 +111163,7 @@ pacificpalisadeselectrical.com, 1 pacificpalisadeslandscapelighting.com, 1 pacificprivatebank.com, 1 pacificpuke.com, 1 -pacificscience.com, 0 +pacificscience.com, 1 pacificstates.net, 1 pacifictechnologie.com, 1 pacifique-web.nc, 1 @@ -110743,7 +111187,6 @@ packer.land, 1 packetapp.ru, 1 packetcrash.net, 1 packetfabric.com, 1 -packetgate.de, 1 packetlinux.com, 1 packetmail.net, 1 packetnomad.net, 1 @@ -110771,8 +111214,8 @@ pacteo.com, 1 pactf-flag-4boxdpa21ogonzkcrs9p.com, 1 pactf.com, 1 pactnetwork.com.au, 1 +pactrol.com, 1 pactum.com, 1 -pactumdr.com.au, 1 pacxodka.ru, 1 paczkadlawieznia.pl, 1 paczkahigieniczna.pl, 1 @@ -110783,7 +111226,7 @@ padariareboleirense.pt, 1 padberx-marketing-consultants.de, 1 padderne.tk, 1 paddestoelen-encyclopedie.tk, 1 -paddle.com, 0 +paddle.com, 1 paddle.net, 1 paddlethecreek.com, 1 paddy.rocks, 1 @@ -110822,6 +111265,7 @@ padutip.com, 1 padutip.cz, 1 padutip.eu, 1 paduwitze.de, 1 +padzilla.com, 1 pae.com, 1 paegae.gr, 1 paerbikes.com, 1 @@ -110843,6 +111287,7 @@ pagbitcoin.com, 1 page, 1 page-engine.tk, 1 page-speed.ru, 0 +page.lgbt, 1 page12.tk, 1 pageboard.fr, 1 pageboard.io, 1 @@ -110856,6 +111301,7 @@ pagemedical.co.uk, 1 pagenews.tk, 1 pagenstedt.de, 1 pageonstage.at, 1 +pagepapi.com, 1 pagerankkings.com, 1 pagerduty.com, 1 pageroonline.com, 1 @@ -110867,6 +111313,7 @@ pageuk.org, 1 pageuppeople.com, 1 pagevitals.com, 1 pagewizz.com, 1 +pagexl.com, 1 pagiamtzis.com, 1 pagina394.com.br, 1 paginamaravillosa.tk, 1 @@ -110908,6 +111355,7 @@ painefamily.co.uk, 1 painesvillemunicipalcourt-ohio.gov, 1 painful.fun, 1 painkiller-tech.com, 1 +painresearchforum.org, 1 paint-it.pink, 1 paint4.life, 1 paintball-ljubljana.si, 1 @@ -110922,25 +111370,24 @@ paintingindurban.co.za, 1 paintingrepair.ga, 1 paintingtips.net, 1 paintpaina.com, 1 +paintscratch.com, 1 paintstaintt.com, 1 paio2-rec.com, 1 paipuman.jp, 1 paireepinart.com, 1 +pairin.com, 1 pairsclassifiedads.tk, 1 paisa-dev.azurewebsites.net, 1 -paisagia.com, 1 -paisagia.com.br, 1 paisano-online.com, 1 paisley.is, 1 paisleyandsparrow.com, 1 paistation.ch, 1 -paj-gps.it, 1 pajadam.me, 1 pajamka.com.ua, 1 pajbot.de, 1 pajobsite.com, 1 pajuvuo.fi, 1 -pakalolo.eu, 1 +pakalolo.eu, 0 pakaranggrek.com, 1 pakawal.com, 1 paket.monster, 1 @@ -110970,6 +111417,7 @@ pakjefooi.nl, 1 pakjefooi.org, 1 pakkibaat.tk, 1 pakmedia.tk, 1 +paknetworking.org, 1 pakostane-apartments.tk, 1 pakpak.tk, 1 pakremit.com, 1 @@ -110977,7 +111425,6 @@ paks.hu, 0 paksui-ne.tk, 1 pakun.org, 1 palabr.as, 1 -palabrapp.com, 1 palaceitalia.tk, 1 palacezamkidwory.com, 1 paladin.wtf, 1 @@ -111004,11 +111451,10 @@ palazzoversace.ae, 1 paleciaki.eu, 1 paleciaki.net, 1 paleciakielektryczne.pl, 1 -palegray.net, 1 paleks.online, 1 palem.com, 1 palenque.tk, 1 -paleo.io, 0 +paleo.io, 1 paleografie.tk, 1 paleonora.tk, 1 paleontologiadebagua.tk, 1 @@ -111067,8 +111513,6 @@ palmmedia.de, 0 palmofinfinity.tk, 1 palmyramo.gov, 1 palner.eu, 1 -palo-santo.tech, 1 -palo-santo.technology, 1 paloalto.gov, 1 paloma.tk, 1 palomadefert.com, 1 @@ -111085,16 +111529,19 @@ palyvoice.com, 1 pamajans.com, 0 pamaniqu.nl, 1 pamba.co, 1 +pamba.com.co, 1 pamc.tk, 1 pamdrew.com, 1 pamelafong.com, 1 pamelastimpson.com, 1 pamiers-citoyenne.fr, 1 pamirabezmenphotography.com, 1 +pamlightdesign.com, 1 pamlims.net, 1 pamm.tk, 1 pamontecarloclub.tk, 1 pamorana.net, 1 +pamperedpersians.com, 1 pamplicosc.gov, 1 pamsorel.co.za, 1 pamukhaliyikama.net, 1 @@ -111142,7 +111589,6 @@ panaxis.li, 1 pancake-world.com, 1 pancake.gg, 1 panchajanyafashions.com, 1 -panchaminteriors.com, 1 panda-bg.com, 1 panda-community.com, 1 panda-craft.tk, 1 @@ -111160,9 +111606,8 @@ pandalab.care, 1 pandaltd.nl, 0 pandamo.pl, 1 pandamoto.fr, 1 -pandaplanes.com, 1 pandapsy.com, 1 -pandascrow.io, 1 +pandaren.eu, 1 pandasilk.com, 1 pandavpn.pro, 1 pandavpnpro.com, 1 @@ -111174,7 +111619,6 @@ pandit.tech, 1 pandithaya.tk, 1 pandkonijn.nl, 1 pandn-bulgaria.com, 1 -pandn.uk, 1 pando-market.com, 1 pandopia.com, 1 pandora-prestige.ru, 1 @@ -111199,7 +111643,6 @@ paneldoorsolutions.de, 1 panele-fotowoltaiczne.pl, 1 paneljobsers.ga, 1 panelsandwich.com, 1 -panerusan.desa.id, 1 paneu.de, 1 panezai.tk, 1 pang.ga, 1 @@ -111212,7 +111655,6 @@ pangolin.org, 1 pangoly.com, 1 pangtru.com, 1 pangtru.net, 1 -panha.in, 1 panhandlefloridatlhkce.com, 1 panhandlefop.org, 1 panhandleprairiewings.com, 1 @@ -111233,6 +111675,7 @@ paniodpolskiego.eu, 1 panjiva.com, 1 pankiewiczlaw.com, 1 pankoff.net, 1 +panlex.org, 1 panmill.xyz, 1 panmourovaty.cz, 1 panmuseum.gr, 1 @@ -111240,6 +111683,7 @@ panna-blues.tk, 1 panneldning.com, 1 pannellisolari.roma.it, 1 panneton.net, 1 +pannovate.com, 1 panodprodukcjimuzycznej.pl, 1 panop.io, 1 panopterra.com, 1 @@ -111255,6 +111699,7 @@ panoramiquesorganya.tk, 1 panoramixbycallens.eu, 1 panorays.com, 1 panotur360.com, 1 +panpower.eu, 1 panpsychism.com, 1 panpsychist.com, 1 pansec.de, 1 @@ -111273,7 +111718,6 @@ panthenolplus.co.uk, 1 panthenolplus.com, 1 pantherage.co.uk, 1 pantherauto.no, 1 -pantherxrare.com, 1 panthi.lk, 1 pantingly.tk, 1 pantonshire.com, 1 @@ -111285,7 +111729,6 @@ pantsu.club, 1 pantsuservice.tk, 1 pantuflas.tk, 1 pantypit.com, 1 -pantzr.nl, 1 panwchi.com, 1 panyajt.in.th, 1 panzdravi.cz, 1 @@ -111315,7 +111758,6 @@ papadoccaffe.pt, 1 papago-taiwan.com, 1 papaimama.ru, 1 papajohns.com.ec, 1 -papajohns.jo, 1 papakarlohas.ru, 1 papakarlotools.ru, 1 papakatsu-life.com, 1 @@ -111332,14 +111774,11 @@ papayapythons.com, 1 papel.az, 1 papelcraft.co.uk, 1 papeleo.digital, 1 -papeleria-tecnica.net, 1 papeleriayasesorias.com.co, 1 papelisimo.es, 1 -paper.aero, 1 paper.sc, 1 paper.wf, 1 paperandpage.com, 1 -paperess.co.uk, 1 paperhoney.by, 1 paperless.spdns.eu, 1 paperlessparts.com, 1 @@ -111356,26 +111795,26 @@ paperwritten.com, 1 papi.com, 1 papieri.dental, 1 papierniak.net, 1 -papierowyrycerz.pl, 1 -papillomatest.com, 1 +papierniczy.eu, 1 +papillegustative.com, 1 papillon-events.be, 1 +papirladen.dk, 1 +papkinadochka.ru, 1 paplajsoftware.com, 1 papotage.net, 1 papouille.ml, 1 -pappacoda.it, 1 pappasappar.se, 1 pappu.tk, 1 pappys.kitchen, 1 +papuaekspose.com, 1 papuaone.com, 0 papuzkija.pl, 1 -papygeorges.fr, 0 paqtam.com, 1 par-allel.ru, 1 parabellum-barakaldo.tk, 1 parablu.com, 1 parabolaeditorial.com.br, 1 paraborsa.net, 1 -paracaribe.com, 1 paracels.tk, 1 parachute.gov, 1 parachute.live, 1 @@ -111400,11 +111839,9 @@ paradisehomecare.com, 1 paradiselost.com, 0 paradisemassagenj.com, 1 paradisend.tk, 1 -paradisepdf.com, 1 paradisetownshipmi.gov, 1 paradisim.tk, 1 paradisu.fr, 1 -paradoxdesigns.org, 1 paradoxhotels.com, 1 paradoxium.ml, 1 paradymecompanies.com, 0 @@ -111427,7 +111864,7 @@ paramapa.com.py, 1 paramascotas.vip, 1 parameter.sk, 1 parametricaeng.com, 1 -paramig.pl, 1 +paramloda.online, 1 paramo-pineiro.tk, 1 paramountbank.com, 1 paramountdigitalcopy.com, 1 @@ -111439,8 +111876,8 @@ paramuspolice.gov, 1 paranoid.is, 1 paranoidandroid.co, 1 paranoidandroid.tk, 1 -paranoidhome.net, 1 paranoidpengu.in, 1 +paranoidpenguin.net, 1 paranormales.tk, 1 paranoxer.hu, 1 paranoxido.tk, 1 @@ -111455,10 +111892,11 @@ parareflex.fr, 1 paras.tk, 1 parasail.co.nz, 1 parasatria.tk, 1 +parasgroupindia.com, 1 parasitologyclub.org, 1 parasomnia.tk, 1 -paraspeech.com, 1 parastaran.tk, 1 +parasympathy.com, 1 paratika.com.tr, 1 paratlan.hu, 1 paratlantalalkozas.hu, 1 @@ -111469,8 +111907,10 @@ parazyd.cf, 1 parc.com, 1 parcare.at, 1 parcbotanique.com, 1 +parcdumbravaminunata.ro, 1 parceirofinanceiro.pt, 1 parcelauditpartners.com, 1 +parcelow.com, 1 parceltrackr.com, 1 parcelup.com, 1 parckwart.de, 1 @@ -111478,9 +111918,6 @@ parcoursup.fr, 1 pardal.tk, 1 pardanaud.com, 1 pardiso-project.org, 1 -pardypanda.com, 1 -parea-osterode.de, 1 -paredesdecoura.pt, 1 paregion13.gov, 1 parejaideal.es, 1 parelectric.com, 1 @@ -111488,6 +111925,7 @@ paremedical.au, 1 paremvasi.net, 1 parentassociation.com.au, 1 parentdrive.com, 1 +parentelement.com, 1 parenthaven.com, 1 parentingplaydough.tk, 1 parentinterview.com, 1 @@ -111501,17 +111939,19 @@ pareshukuk.com, 1 pareto.space, 1 paretoit.com, 1 paretorule.cf, 1 -paretox.com, 1 parfin.io, 1 parfum-best.ml, 1 parfumer.tk, 1 +parfumi-eu.com, 1 parfumi.tk, 1 +parfummobilvip.com, 1 parfumtester-100.ml, 1 parhoonshop.com, 1 pari-match.in, 1 pari-vinci.org, 1 pari.cafe, 1 pari.cz, 1 +paribus.io, 1 parichadrelax.se, 1 parideal.com, 1 parideal.de, 1 @@ -111519,10 +111959,13 @@ paridokhtmoshkzad.com, 1 paridurable.com, 1 parikmag-pm.ru, 1 parikmaxeru.tk, 1 +pariksana.cloud, 1 +parimatch-best.com, 1 parimatch-chance.com, 1 parimatch-email.com, 1 parimatch-sport.com, 1 parimatch-sports.com, 1 +parimatch-world.com, 1 parimatch.co.tz, 1 parimatch.com, 1 parimatch.in, 1 @@ -111534,6 +111977,7 @@ pario.li, 1 paripesa.com, 1 paripesa.ng, 1 paris-avenues.com, 1 +paris-elysees.com, 0 paris-luttes.info, 1 paris.edu, 1 parisa-panahi.com, 1 @@ -111543,12 +111987,10 @@ parisalignedinvestment.org, 1 parisareachamber.com, 1 parisbesttravel.com, 1 parisbnb.fr, 1 -parisbypierre.com, 1 parisdeluxxxe.com, 1 parisdimitriou.com, 1 parisdomino.tk, 1 parisereporters.com, 1 -parishofcove.org.uk, 1 parishoftheholycross.org, 1 parishome.jp, 1 parismalleg.com, 1 @@ -111575,13 +112017,11 @@ parkcountyco.gov, 1 parkcountysheriff-wy.gov, 1 parkderm.com, 1 parkdworski.pl, 1 -parked.com.br, 1 parkeer.nl, 1 parkeergaragesintjan.nl, 1 -parkeergaragest-jan.nl, 1 parkeergaragestjan.nl, 1 parkeerserviceboxtel.nl, 1 -parkefficient.de, 0 +parkefficient.de, 1 parkerco.gov, 1 parkercs.cf, 1 parkercs.ga, 1 @@ -111621,10 +112061,9 @@ parkos.it, 1 parkos.nl, 1 parkplus.in.ua, 0 parkr.io, 0 -parkshark.io, 1 parksi.top, 1 parksinta.com, 1 -parkstonegp.com, 0 +parkstonegp.com, 1 parkstreet.com, 1 parktownpatrols.co.za, 1 parkujkladne.cz, 1 @@ -111693,6 +112132,7 @@ parsiko.com, 1 parsonsfamilyhomes.com, 1 parsonspdks.gov, 1 parsuv.ir, 1 +part.la, 1 partadvantage.com, 1 partage.ovh, 1 partaiperindo.com, 1 @@ -111706,18 +112146,22 @@ parthkolekar.me, 1 parthuisot.fr, 1 particle-vision.ch, 1 particles.cf, 1 +particleslam.com, 1 partido-libertario.tk, 1 partidolibertario.tk, 1 +partidos-de-hoy.com, 1 partigetir.com, 1 partigoldendoodle.com, 1 -partigranskaren.se, 1 partii.tk, 1 +partijtjevoordevrijheid.nl, 0 partijvoordedieren.nl, 1 partik.com.br, 1 partilino.com, 1 +partimalzemelerim.com, 1 partin.nl, 0 partiono.com, 1 partir-en-livre.fr, 1 +partisaani.com, 1 partisan-berlin.tk, 1 partituras.tk, 1 partner-finden.tk, 1 @@ -111758,6 +112202,8 @@ partsdost.com, 1 partsestore.com, 1 partsgeek.com, 1 partsguysusa.com, 1 +partsworld.bg, 1 +partwerx.com, 1 party-envy.com, 1 party-kneipe-bar.com, 1 party-land.pl, 1 @@ -111765,6 +112211,7 @@ party-time-inflatables-durham.co.uk, 1 partyaccommodationsers.ga, 1 partyaccommodationsest.ga, 1 partyausstatter24.de, 1 +partyblitzsimi.com, 1 partybutlers.co.uk, 1 partyclub.tk, 1 partycoin.ga, 1 @@ -111775,7 +112222,6 @@ partyhireliverpool.co.uk, 1 partykanal.cz, 1 partymat.de, 1 partymusikband.de, 1 -partyonbici.com, 1 partypearl.de, 1 partypeeps.tk, 1 partyphoto.tk, 1 @@ -111783,7 +112229,6 @@ partyrocksbounce.co.uk, 1 partyschnaps.com, 1 partyshop.ge, 1 partyshowlatam.com, 1 -partysoundandlighthire.co.uk, 1 partytime-uk.co.uk, 1 partytimeltd.ie, 1 partywithunicorns.com, 1 @@ -111802,7 +112247,6 @@ pasadenapooch.org, 1 pasarella.eu, 1 pasaya.com, 1 pascal-bourhis.com, 1 -pascal-herbert.de, 1 pascal-koelsch.de, 1 pascal-schmid.net, 1 pascal-ua.tk, 1 @@ -111834,6 +112278,7 @@ pasnine.my.id, 1 pasportaservo.org, 1 pasquinelli-truebag.ch, 1 pass-jobcoaching.nl, 1 +passa.org, 1 passabook.com, 1 passandsecure.fr, 1 passau-webdesign.com, 1 @@ -111850,7 +112295,6 @@ passfindr.com, 1 passfoto-deinfoto.ch, 1 passgator.com, 1 passieposse.nl, 1 -passings.io, 1 passion-billard.fr, 1 passion-net.fr, 1 passionatefoodie.co.uk, 1 @@ -111864,6 +112308,7 @@ passionpictures.eu, 1 passions-art.com, 1 passiton.com, 1 passive-work.gq, 1 +passiveblogger.com, 0 passivebook.com, 1 passivehousecal.org, 1 passiveseinkommen.tk, 1 @@ -111876,10 +112321,11 @@ passport.yandex.com.tr, 1 passport.yandex.kz, 1 passport.yandex.ru, 1 passport.yandex.ua, 1 +passportapproved.com, 1 passportcorporate.com, 1 passrhce.com, 1 passrhcsa.com, 1 -passthrough.com, 0 +passthrough.com, 1 passtooeasy.com, 1 passumpsicbank.com, 1 passvanille-reservation.fr, 1 @@ -111887,7 +112333,7 @@ passvau.lt, 1 passware.com, 1 passwd.one, 1 password-checker.de, 1 -password.codes, 0 +password.codes, 1 password.consulting, 1 password.town, 1 passwordass.org, 1 @@ -111921,7 +112367,6 @@ pasterial.hopto.org, 1 pasternak.net, 1 pasternok.org, 1 pasteros.io, 1 -pasters.wtf, 1 pasteworks.com, 1 pasticceria.milano.it, 1 pasticcerialorenzetti.com, 1 @@ -111931,6 +112376,7 @@ pastinfluences.com.au, 1 pastor.icu, 1 pastorbelgagroenendael.com.br, 1 pastorcanadense.com.br, 1 +pastordin.us, 1 pastordocaucaso.com.br, 1 pastorello.cf, 1 pastorello.ga, 1 @@ -111958,7 +112404,7 @@ patbatesremodeling.com, 0 patchassociates.com, 1 patchli.fr, 1 patchofabsence.com, 1 -patchstack.com, 1 +patchstack.com, 0 patchyvideo.com, 1 patdorf.com, 1 patechmasters.com, 1 @@ -111974,6 +112420,7 @@ patentverwag.com, 1 patersonpdnj.gov, 1 patguzmanconstruction.com, 1 pathai.com, 1 +pathearn.ai, 1 pathfinderbank.com, 1 pathfindercut.com, 1 pathfindergeo.com, 1 @@ -111981,18 +112428,18 @@ pathforworldpeace.com, 1 pathofexile2.com, 0 pathogen.nl, 1 pathologie-dna.nl, 1 -pathos.gg, 1 pathpartnertech.com, 1 pathsaversers.ga, 1 pathsaversest.ga, 1 pathwayscenterforgrief.org, 1 pathwayscenterforgriefandloss.org, 1 pathwaysthroughgrief.org, 1 +pathzero.com, 0 patient.info, 1 patientcheckin.com, 1 -patientdesk.ai, 1 patientenverfuegung.digital, 1 patientjourneyapp.com, 0 +patientspaid.com, 1 patientup.com, 1 patientys.com, 1 patiga.ga, 1 @@ -112047,15 +112494,12 @@ patrikjohan.ga, 1 patrikjohan.gq, 1 patrikjohan.tk, 1 patriksima.cz, 1 -patrimoine-neuwiller.fr, 0 -patrimoniumtouraine.com, 1 +patrikx3.com, 1 +patrimoine-neuwiller.fr, 1 patriotbearingsupply.com, 1 patriotcs.tk, 1 patriotinsurancebrokers.com, 0 -patriotlandscapesupply.com, 1 patriotleague.org, 1 -patriotlicense.org, 1 -patriotmail.ai, 1 patriquefashion.tk, 1 patris-querre.com, 1 patrisnews.com, 1 @@ -112089,6 +112533,7 @@ paul-sitarz.com, 1 paul-vierhaus.de, 1 paul-zhang.de, 1 paul.media, 1 +paul.reviews, 1 paulahot.tk, 1 paulandmadge.com, 1 paulanet.tk, 1 @@ -112114,6 +112559,7 @@ paulinaschubert.net, 1 paulini.ga, 1 pauliuspiecius.com, 1 pauljackson.ga, 1 +pauljmartinez.com, 0 pauljrowland.co.uk, 1 pauljzak.com, 1 paulknulst.de, 1 @@ -112122,9 +112568,9 @@ paullockaby.com, 1 paullovestugba.nl, 1 paulmarc.org, 1 paulmarvin.tk, 1 -paulmilligan.co.uk, 1 paulmolloy.guitars, 1 paulmolloydesign.com, 1 +paulmurraycleaningservices.ie, 1 paulo.nom.za, 1 pauloalcalde.co, 1 pauloalcobianeves.pt, 1 @@ -112188,7 +112634,6 @@ pavelrebrov.com, 1 pavelstriz.cz, 1 pavementpr.com, 1 paven.io, 0 -paverlaunch.com, 1 pavernosmatao.tk, 1 pavestone.co.uk, 1 pavilion-bukitjalil.com, 1 @@ -112207,6 +112652,7 @@ paw.pt, 1 pawafuru.com, 0 pawapuro.ga, 1 pawapuro.tk, 1 +pawc.cc, 1 pawchewgo.com, 1 pawdecor.com, 1 pawealthmanagement.com, 1 @@ -112232,65 +112678,42 @@ pawsru.org, 1 pawtraitcaptures.com.au, 1 paxata.com, 1 paxerahealth.com, 1 -paxhouse.net, 1 paxwinkel.nl, 1 pay.accountant, 1 pay.apartments, 1 pay.basketball, 1 -pay.bike, 1 pay.business, 1 pay.catering, 1 pay.cleaning, 1 -pay.codes, 1 -pay.com.au, 1 pay.condos, 1 pay.construction, 1 -pay.consulting, 1 pay.contractors, 1 pay.dance, 1 -pay.dental, 1 pay.dentist, 1 pay.dog, 1 -pay.energy, 1 pay.equipment, 1 pay.faith, 1 -pay.fitness, 1 pay.football, 1 +pay.foundation, 1 pay.gallery, 1 -pay.gifts, 1 pay.gov, 0 pay.hockey, 1 pay.hospital, 1 pay.insure, 1 -pay.jewelry, 1 pay.kitchen, 1 pay.lawyer, 1 -pay.luxury, 1 -pay.marketing, 1 pay.mg, 0 -pay.parts, 1 pay.photography, 1 -pay.photos, 1 -pay.pizza, 1 pay.plumbing, 1 pay.rent, 1 pay.repair, 1 -pay.report, 1 pay.sb, 1 pay.school, 1 -pay.ski, 1 pay.storage, 1 pay.surf, 1 pay.taipei, 1 -pay.technology, 1 -pay.tennis, 1 -pay.theater, 1 -pay.town, 1 -pay.training, 1 pay.ubuntu.com, 1 pay.university, 1 -pay.vacations, 1 -pay.vin, 1 pay.wedding, 1 pay2keep.com, 1 pay8522.com, 1 @@ -112315,16 +112738,16 @@ paycrest.io, 1 paydollar.com, 1 paye.net, 0 payeasy.tech, 1 +payexpresse.com, 0 payfacto.com, 1 payfazz.com, 1 -payfin.tech, 1 payforpeople.nl, 0 paygears.com, 1 -payground.com, 1 paygvpn.com, 1 payhub.jp, 1 payjunction.com, 1 payjunctionlabs.com, 1 +paylabs.co.id, 1 paylessclinicers.ga, 1 paylessclinicest.ga, 1 paylessmealsers.ga, 1 @@ -112339,12 +112762,10 @@ payme.io, 1 payme.uz, 1 payment-express.net, 1 paymentaccuracy.gov, 1 -paymentap.co.uk, 1 paymentjs.com, 1 -paymentportaldev.io, 1 -paymentportaldevopslocal.io, 1 payments.google.com, 1 paymeservice.com, 1 +paymongo.com, 0 paymongo.help, 1 paymore.org, 1 paymyphysician.com, 0 @@ -112353,7 +112774,6 @@ paynexpay.com, 1 paynode.com, 1 payonline-api.xyz, 1 payop.com, 1 -payorth.com, 1 paypac.biz, 1 paypac.co.nz, 1 paypac.co.uk, 1 @@ -112373,13 +112793,10 @@ paypo.pl, 1 paypod.org, 1 paypro.nl, 1 payps.ru, 1 -payrewards.com, 1 payroll-outsourcing.com.au, 1 payroll.ch, 0 payroll.myftp.org, 1 payrollaustralia.au, 1 -payrollbridge.co.uk, 1 -payrollconstructionservices.com, 1 payrollhr.be, 1 payrolloutsourcing.com.au, 1 payrolloutsourcingservice.com.au, 1 @@ -112421,18 +112838,18 @@ pb-eatz.com, 1 pb.ax, 0 pbaby.com, 1 pback.se, 1 +pband.ch, 1 pbbm.com.ph, 1 pbc.gov, 1 pbcables.tk, 1 pbcknd.ml, 1 pbcpao.gov, 1 pbcu.com, 1 -pbebank.com, 1 +pbdigital.org, 0 pbern.xyz, 1 pbest.tk, 1 pbforestry.net, 1 pbgfl.gov, 1 -pbgroup.hu, 1 pbhs.co.uk, 1 pbiexplorer.com, 1 pbla.biz, 1 @@ -112447,13 +112864,13 @@ pbrb.gov, 1 pbrumby.com, 1 pbsrmoto.com.au, 1 pbsuite.com, 1 -pbsvectors.com, 1 pbtc.org, 1 pbwebdev.com, 1 pbx75.ru, 1 pbz.im, 1 pc-center.tk, 1 pc-construction.fr, 1 +pc-mac.de, 1 pc-master.pl, 1 pc-pharma.com, 1 pc-reanimator.ru, 1 @@ -112512,19 +112929,17 @@ pcisecuritystandards.org, 1 pcissc.org, 1 pcivellophotography.com, 1 pclgroup.co.nz, 1 -pclob.gov, 1 pcloud.com, 1 pcmania.tk, 1 pcmaw.com, 1 pcminsk.by, 1 pcmkrembangan.or.id, 1 pcmobile.tech, 1 -pcmr.info, 1 +pcmr.info, 0 pcmscientific.com, 1 pcnaid.com, 1 pcnewsoft.tk, 1 pcnotdienst-oldenburg-rastede.de, 1 -pcosworkoutplan.com, 1 pcpao.gov, 1 pcpartspicker.in, 1 pcpasokh.ir, 1 @@ -112570,30 +112985,27 @@ pcvirusclear.com, 1 pcvw.co.uk, 1 pcwdevtwebsite.azurewebsites.net, 1 pcweb.info, 1 -pcwshop.hu, 1 pd1rnt.nl, 1 pdamerica.org, 1 pdau.edu.ua, 1 pdavislawgroup.com, 1 pdax.ph, 0 -pdb-group.co.uk, 1 -pdcs.nl, 1 pderas.com, 1 pdesinc.org, 1 pdf-archive.com, 0 -pdf-reader.ru, 1 pdf-tool.fr, 1 pdf.io, 1 pdf4pro.com, 1 pdfbear.com, 1 pdfbook-dl.ml, 1 pdfbooksonline.gq, 1 -pdfcoder.com, 1 pdfconvert.me, 1 pdfflier.cf, 1 pdfhelp.net, 1 +pdfko.com, 1 pdflip.cf, 1 pdfmanga.tk, 1 +pdfmint.com, 1 pdfpassword.org, 1 pdfpasswort.de, 1 pdfpedia.cf, 1 @@ -112614,7 +113026,6 @@ pdtech.ltd, 1 pdtppfl.gov, 1 pdvault.co, 1 pdxcoinclub.org, 1 -pdxretro.com, 1 pdxroofingandsiding.com, 1 pdz.net, 1 pe-bank.jp, 1 @@ -112633,7 +113044,6 @@ peaceexpoest.ga, 1 peacefulexperiences.com, 1 peacefulrock.com, 1 peacekeeper.tk, 1 -peacemaker-academy.com, 1 peacepiperanch.com, 1 peacetourco.cf, 1 peacewiththewild.co.uk, 1 @@ -112650,6 +113060,7 @@ peaksalesrecruiting.com, 1 peakseoservices.co.uk, 1 peaksports.com, 0 peaksupport.io, 1 +peaktribe.ro, 1 peakvets.co.uk, 1 peanutbutter.com, 1 peanutpay.de, 1 @@ -112662,6 +113073,7 @@ pearlchaos.com, 1 pearle.nl, 1 pearlharbordrydockeisopenhouse.org, 0 pearljamargentina.tk, 1 +pearloc.com, 1 pearlsonly.ca, 1 pearlsonly.com, 1 pearlsonly.com.au, 1 @@ -112682,13 +113094,11 @@ pebblenest.uk, 1 pebkac.gr, 0 peblet.be, 1 pebook.tk, 1 -pebuu.com, 1 pec-email.com, 1 pec.net, 1 pecadis.de, 1 pecan.ai, 1 -pecanplantationland.com, 0 -pecasse.be, 0 +pecasse.be, 1 pecetowicz.pl, 1 pecheneg.tk, 1 pechka.tk, 1 @@ -112696,6 +113106,7 @@ pechonova.com, 1 pecker-johnson.com, 1 pecmd.net, 1 pecs.com, 1 +pecsusa.com, 1 pect.com.pk, 1 pectusbar.com, 1 ped-bike.de, 1 @@ -112734,6 +113145,7 @@ pedrosanto.tk, 1 pedrosaurus.com, 1 pedrosillo-delosaires.tk, 1 pedrotimoteo.com, 1 +peduse.com, 1 peekabooboudoir.com, 1 peekier.com, 1 peekit.ai, 1 @@ -112746,7 +113158,6 @@ peenee.in.th, 1 peenor.xyz, 1 peep.gq, 1 peeptalk.dk, 1 -peeqback.com, 1 peer.travel, 1 peerbearing.com, 1 peerberry.com, 1 @@ -112772,13 +113183,10 @@ peercraft.pt, 1 peercraft.se, 1 peercraft.us, 1 peerdirect.com, 1 -peergrowth.co.in, 1 -peergrowth.net, 1 peerjs.com, 1 peername.com, 1 peerreviewcongress.org, 1 peers-liste.de, 1 -peers.cloud, 1 peers.gq, 1 peers.tk, 1 peersquaders.ga, 1 @@ -112809,7 +113217,6 @@ peifi.de, 0 peihouston.com, 1 peippo.at, 1 peirong.me, 1 -pejetroperformance.com.br, 0 pejupiel.com, 1 pekarnasazava.cz, 1 pekarskis.com, 1 @@ -112834,29 +113241,30 @@ pelhamalrecreation.gov, 1 pelhamlibraryal.gov, 1 pelhamma.gov, 1 pelhamny.gov, 1 +pelhamonearle.com, 1 +pelhamonmain.com, 1 pelhams2k.com, 1 pelhrimov-strmechy.tk, 1 pelican.ie, 1 pelicanbaytx.gov, 1 pelicanconveyancing.co.uk, 1 pelicanottertailmn.gov, 1 -pelicanparty.games, 1 pelicans.tk, 1 peliculaonline.tk, 1 peliculaslatino.tk, 1 pelikone.fi, 1 pelinca.nl, 1 pellegrino.ar, 1 -pellerinstrategie.com, 0 +pellerinstrategie.com, 1 pellet.pordenone.it, 1 pellet.roma.it, 1 pelletgrillreviews.com, 1 pelletizermill.com, 1 pellets-bw.de, 1 +pelletsprice.com, 1 pelmeni.cf, 1 pelmeniuralskie.tk, 1 pelo.tk, 1 -peloduro.cl, 1 pelopoplot.com, 0 pelosanimais.org, 1 peloton-technologies.com, 1 @@ -112895,9 +113303,12 @@ pendikeskort.com.tr, 1 pendletoncountyky.gov, 1 pendletoncountywv.gov, 1 pendletonor.gov, 1 +pendriveapps.com, 1 +pendrivelinux.com, 1 penedo.tk, 1 penelopia.pl, 1 penes.cf, 1 +penetrationstest.se, 1 penfedrealty.com, 1 penfold.fr, 1 peng.you, 1 @@ -112906,12 +113317,14 @@ pengepung.com, 1 pengisatelier.net, 1 pengu.us.kg, 1 pengui.uk, 1 +penguin-stats.cn, 1 penguin-stats.io, 1 penguinclientsystem.com, 1 penguindominatrix.com, 1 penguindrum.moe, 1 penguingogo.com, 1 penguinos.tk, 1 +penguinprotocols.com, 1 penguinrandomhousegrupoeditorial.com, 1 penguins.ca, 1 penguinshome.tk, 1 @@ -112919,13 +113332,13 @@ penguinvillage.info, 1 penholder.ga, 1 peni.tk, 1 peniarth.cymru, 1 +peninsula360.com, 1 penispumpen.se, 1 pennan.tk, 1 penncrestbank.com, 1 pennergold.net, 1 pennhillspa.gov, 1 pennsauken.gov, 1 -pennsylvaniasolarinitiative.com, 1 pennsylvaniatitlesearch.com, 1 penny.at, 1 penny.cz, 1 @@ -112953,11 +113366,9 @@ pens-money.cf, 1 pens-money.ga, 1 pens-money.gq, 1 pensacolafl.gov, 1 -pensacolaseocompany.com, 1 pensacolawinterfest.org, 1 pensador.com, 1 pensador.info, 1 -pensago.com, 1 pensatore.tk, 1 pensia.tk, 1 pensieridigitali.tk, 1 @@ -112973,7 +113384,6 @@ pensioner-1000.tk, 1 pensionesdominicanas.com, 1 pensionskasse-sbv.ch, 1 pensionsmyndigheten.se, 1 -pensionspartner.se, 1 pensionstal.tk, 1 pensiontrackerers.ga, 1 pensiun.ga, 1 @@ -112994,10 +113404,10 @@ pentaquin.net, 1 pentatonik.tk, 1 pentechmc.blog, 1 pentekdograma.com, 1 -pentel.eu, 1 pentera.io, 1 pentescope.com, 1 pentesterlab.com, 1 +pentestit.com, 1 pentestpartners.com, 1 pentests.dk, 1 penthy.eu, 1 @@ -113029,15 +113439,19 @@ peopleandchange.nl, 1 peopleanswers.com, 1 peopleblankets.com, 1 peoplecareeyesandteeth.com.au, 1 +peoplecarehealthinsurance.com, 1 +peoplecarehealthinsurance.com.au, 1 +peoplecareopticalanddental.au, 1 +peoplecareopticalanddental.com, 1 peoplecareopticalanddental.com.au, 1 peoplecert.org, 1 peoplecheck.co.uk, 1 peoplecheck.com, 1 -peoplediein.space, 1 peoplefinders.ml, 1 peoplefirstservices.net, 1 peoplelikemeapp.com, 1 peopleofcolorcareers.com, 1 +peopleplanetconnect.org, 1 peoplesafe.co.uk, 1 peoplesbankal.com, 0 peoplescu.com, 1 @@ -113092,7 +113506,9 @@ peraavcilar.com, 0 perala.me, 1 peraparker.cz, 1 perberestja.gq, 1 +perception-point.io, 1 perceptive.pro, 1 +perceptivemediatech.com, 1 perceptyx.com, 1 perchance.org, 1 percherosdepared.es, 1 @@ -113105,11 +113521,13 @@ percymagic.tk, 1 perd.re, 1 perdanabagus.tk, 1 perdita-capelli.tk, 1 +perditumtriumvirate.com, 1 perdolyathlendr.tk, 1 perecraft.com, 1 peredovaya.tk, 1 peredoz.tk, 1 pereezd.ml, 1 +peregorodka77.ru, 1 peregrinefund.org, 1 peregrinus.es, 1 pereiravillela.com.br, 1 @@ -113125,6 +113543,7 @@ perevod-kakadu.com, 1 perewall.tk, 1 perezdecastro.org, 0 perf-b2b.com, 1 +perf.report, 1 perf1.com, 1 perfare.net, 1 perfect-blog.com, 1 @@ -113135,7 +113554,6 @@ perfect-seo.com.ua, 1 perfect-servers.com, 1 perfect-tour.ro, 1 perfect8.com.tw, 1 -perfectaparasols.com, 1 perfectbalance.tech, 1 perfectbitches.com, 1 perfectcommunity.ga, 1 @@ -113149,13 +113567,12 @@ perfectmatch.cf, 1 perfectme.ml, 1 perfectme.tk, 1 perfectosidiotaspunk.tk, 1 -perfectpetzzz.nz, 1 perfectplrarticles.ga, 1 perfectpussypics.com, 1 perfectsize.pl, 1 perfectskinstudio.co.uk, 1 +perfectsnap.co.uk, 1 perfectsoft.tk, 1 -perfecttank.de, 1 perfecttimingtoday.com, 1 perfecttits.net, 1 perfectweb.today, 1 @@ -113180,8 +113597,8 @@ performancetransmission.net, 1 performidi.com, 1 performing-art-schools.com, 1 performingdreams.tk, 1 +performiptv.com, 1 performive.com, 1 -performx.me, 1 perfumerie.tk, 1 perfumes.com.br, 1 perfumesweb.com.br, 1 @@ -113195,7 +113612,6 @@ peridoc.org, 1 peridotcapitalpartners.com, 1 periferiaegyesulet.hu, 1 perigon.ch, 1 -perimeter-scan.ru, 1 perin.name, 1 perini.com.au, 1 perinkac.cz, 1 @@ -113223,7 +113639,6 @@ perkypavla.com, 1 perlaphotography.com.au, 1 perlbanjo.com, 1 perlego.com, 1 -perlemedia.com, 1 perlina.co.il, 1 perm-jur.ch, 0 perm-juridique.ch, 0 @@ -113241,8 +113656,8 @@ permanencejuridique-ge.ch, 0 permanencejuridique.com, 0 permanencesecretariat.fr, 1 permanentmakeup.es, 1 -permaproject.org, 1 permarisk.gov, 1 +permaseal.net, 1 permasealbasement.com, 1 permasealbasementsystems.com, 1 permasealplumbing.com, 1 @@ -113262,6 +113677,7 @@ permistheoriqueenligne.be, 1 permitting.gov, 1 permutationcity.net, 1 pernod-ricard.io, 1 +peroduaselangor.com, 1 peronmedya.com, 1 perot.me, 1 perpedal.se, 1 @@ -113293,12 +113709,11 @@ perseo.tk, 1 persey-ssm.com.ua, 1 persey.tk, 1 persian-clan.tk, 1 -persianasluxor.com.mx, 1 persianasmodernasluxury.com, 1 persiandating.tk, 1 persianmassagetherapy.com, 1 +persianpool.ir, 1 persianrom.com, 1 -persianwithel.com, 1 persiart.shop, 1 persiennexperten.se, 1 persistence.one, 1 @@ -113314,6 +113729,7 @@ personalaccidentsers.ga, 1 personalaccidentsest.ga, 1 personalcourtreporters.com, 1 personalfarewells.com.au, 1 +personalglobal.com.br, 1 personalhealth.ie, 1 personalhydroponics.com, 1 personaliseyourwine.com.au, 1 @@ -113329,15 +113745,12 @@ personalnames.net.ru, 1 personalpages.us, 1 personalstructures.com, 1 personaltrainer-senti.de, 1 -personaltrainerdarwin.com.au, 1 -personaltraineressendon.com.au, 1 -personaltrainergeelong.com.au, 1 -personaltrainerportmelbourne.com.au, 1 personaltransporter.es, 1 personalwebsite.services, 1 personcar.com.br, 1 persondatakonsulenterne.dk, 1 personetics.com, 1 +personjob.ru, 1 personlookup.com.au, 1 personnedisparue.fr, 1 personnelplusinc.com, 1 @@ -113345,14 +113758,11 @@ persoonlijkeblog.nl, 1 perspective-daily.de, 1 perspectives-de-voyage.com, 1 perspektivwechsel-coaching.de, 0 -perspio.io, 1 persson.me, 1 perssonsgarn.se, 1 persuader-reports.gov, 1 persuasionmatters.com, 1 -perthdayhospital.com.au, 1 perthhillsarmadale.com.au, 1 -perthpainspecialists.com.au, 1 perthunicyclists.tk, 1 perthweekend.com.au, 1 pertwarp.tk, 1 @@ -113387,7 +113797,6 @@ pesamarket.com, 1 pesandansampai.tk, 1 pesar.tk, 1 pesaventofilippo.com, 1 -pesawards.tech, 1 pesc.ru, 1 pescadorcomunicacao.com, 1 pescamagnetica.pt, 1 @@ -113399,6 +113808,7 @@ pesitalia.tk, 1 pesnik.tk, 1 pesnir.net, 1 pesnitut.ga, 1 +pesoccerworld.com, 1 pesquisasremuneradas.net, 1 pess.ch, 1 pessa-webdesign.tk, 1 @@ -113425,6 +113835,7 @@ pestwerkz.com.sg, 1 pet-cat-accessories.ml, 1 pet-distributor.cz, 1 pet-guide.net, 1 +pet-hotel-mura.net, 1 pet-net.tk, 1 pet-tekk.co.uk, 1 peta.tk, 1 @@ -113441,11 +113852,11 @@ petbooking.it, 1 petbr.com.br, 1 petbrowser.ga, 1 petburial.cf, 1 +petcareclub.com, 1 petcareonline.com, 1 petcharte.ga, 1 petclassy.ga, 1 petclaw.com, 1 -petcle.com, 1 petclient.ga, 1 petco.com, 1 petcollections.ga, 1 @@ -113453,13 +113864,13 @@ petcollector.ga, 1 petcolor.ga, 1 petcounty.ga, 1 petcrawler.ga, 1 -petdairy.com, 1 petdesign.tk, 1 petdesigning.ga, 1 petdir.ga, 1 petdish.ga, 1 petdollar.ga, 1 petech.ro, 1 +petegrahamcarving.co.uk, 1 petelew.is, 1 petemerges.com, 1 petemerges.xyz, 1 @@ -113541,6 +113952,7 @@ petit-archer.com, 1 petit-bebe.fr, 1 petitbleu.fr, 1 petite-annonce.tk, 1 +petite-maison.ch, 0 petitenote.ch, 1 petitions.by, 1 petitions.pro, 1 @@ -113588,13 +114000,15 @@ petredhot.ga, 1 petrequest.ga, 1 petricamarc.ro, 1 petrichorsolutions.co, 1 +petrifiedhaggis.com, 1 petrifiedhaggis.dedyn.io, 1 +petrifiedhaggis.net, 1 +petrifiedhaggis.org, 1 petrkulik.cz, 1 -petrobench.com, 1 petrochemprojects.ga, 1 petrol-power.tk, 1 +petrol.com.ua, 1 petroleum-schools.com, 1 -petroleumacronyms.com, 1 petroleumservicecompany.com, 1 petroll.ga, 1 petropoulos.ng, 1 @@ -113615,10 +114029,9 @@ petsaze.com, 1 petscams.com, 1 petsdeners.ga, 1 petsdenest.ga, 1 -petsfilled.us, 1 petsidi.com, 1 petskb.com, 1 -petsmartcorporate.com, 0 +petsmartcorporate.com, 1 petsnapshot.ga, 1 petsnews.ga, 1 petsnvets.org, 1 @@ -113646,7 +114059,6 @@ petutility.tk, 1 petvisual.ga, 1 petwall.info, 1 petwood.co.uk, 1 -petzerhiel.lu, 1 peuf.shop, 1 peukert.cc, 1 peupledefrance.fr, 1 @@ -113660,9 +114072,9 @@ pewo.com, 1 pewresearch.org, 1 pewsocialtrends.org, 1 pex.digital, 0 -pexagontech.com, 1 peyote.org, 1 peyote.wiki, 1 +peytonwebster.com, 1 peyukoshop.com, 1 pf.dk, 1 pfa.or.jp, 1 @@ -113677,6 +114089,7 @@ pfandbriefsparen.de, 1 pfannkuchenbratze.de, 1 pfarchimedes-pensioen123.nl, 1 pfarr-rad.de, 1 +pfarreiengemeinschaft-neuerburg.de, 1 pfarrhaus-mon.ch, 1 pfashionmart.com, 1 pfaswatersettlement.com, 1 @@ -113685,12 +114098,14 @@ pfcchavdar.tk, 1 pfctr.com, 1 pfd-nz.com, 1 pfe.rs, 1 +pfeconsulting.pro, 1 pfeffenhausener-bachspatzen.de, 1 pfeffenhausener-nardinis.de, 1 pfefferkuchenprinzessin-dresden.de, 0 pfefferle.online, 1 pfeiffer.tech, 1 pfeifferszilard.hu, 1 +pferdesportclub-chiemgau.de, 1 pfeuffer-elektro.de, 1 pff.com.au, 1 pfft.net, 1 @@ -113703,8 +114118,6 @@ pfish.zone, 1 pflanzen-shop.ch, 1 pflanzen-werkstatt.de, 1 pflege.ch, 1 -pflegedienst-stier.de, 1 -pflegedienstadelina.de, 1 pfmeasure.com, 1 pfnpc.org, 1 pfolta.net, 1 @@ -113721,7 +114134,7 @@ pfudor.tk, 1 pfwarriors.com, 1 pg-forum.at, 1 pg-forum.ch, 1 -pg-forum.de, 0 +pg-forum.de, 1 pg-it.at, 1 pg-mana.net, 1 pg-sec.com, 1 @@ -113751,7 +114164,6 @@ pgp.lol, 1 pgp.net, 1 pgp.network, 1 pgp.org.au, 0 -pgpgroup.co, 1 pgpmail.cc, 1 pgregg.com, 1 pgsec.cz, 1 @@ -113787,7 +114199,6 @@ phantomphans.tk, 1 phantomware.tk, 1 pharma-insights.nl, 0 pharma-management.net, 1 -pharma-synergy.hu, 1 pharmaabsoluta.com.br, 1 pharmabach.com, 1 pharmaboard.de, 1 @@ -113803,7 +114214,6 @@ pharmacy-schools.com, 1 pharmacy.org.pk, 1 pharmacycouncil.org.nz, 1 pharmacyevalar.ru, 1 -pharmacyregulation.org, 1 pharmadrugtest.com, 1 pharmakeia.com, 1 pharmalab.eu, 1 @@ -113816,7 +114226,6 @@ pharmasana.de, 1 pharmasana.ru, 1 pharmasyncers.ga, 1 pharmasyncest.ga, 1 -pharmatender.cl, 1 pharmgkb.org, 1 pharmica.uk, 1 pharosconsulting.com, 1 @@ -113865,6 +114274,7 @@ phg.ie, 1 phialo.de, 1 phibureza.com, 1 phigrupopolideportivo.es, 0 +phihq.com, 0 phil-dirt.com, 1 phil-phillies.com, 1 phil.red, 1 @@ -113873,8 +114283,10 @@ phil.tw, 1 philadelphia.com.mx, 1 philafound.org, 1 philandson.com, 1 +philanima.com, 1 philarmonic-abaza.tk, 1 philasd.org, 1 +philcare.com.ph, 1 phildevient.tk, 1 phildonaldson.com, 0 phileas-psychiatrie.be, 1 @@ -113897,7 +114309,6 @@ philipmcaputo.com, 0 philipmordue.co.uk, 1 philipmorrisdirect.co.uk, 1 philipoff.com, 1 -philipopolis.com, 1 philipp-trulson.de, 0 philipp.vip, 1 philippa.cool, 1 @@ -113935,7 +114346,6 @@ phillips-cohen.com.au, 1 phillyhometech.com, 1 phillyinjurylawyer.com, 1 philmontphotography.com, 1 -philna.sh, 1 philographie.com, 1 philology.tk, 1 philomathiclife.com, 1 @@ -113944,7 +114354,6 @@ philosoftware.com.br, 1 philosophers.tk, 1 philosopherswool.com, 1 philosophy-colleges.com, 1 -philosophy.moe, 1 philosophyguides.org, 1 philosophyofatheism.com, 1 philphonic.de, 1 @@ -113974,9 +114383,9 @@ phlaunt.com, 1 phobos.tk, 1 phoe.exposed, 1 phoebestrong.org, 1 -phoenicia.pk, 1 phoenix-correspondence-commission.gov, 1 phoenix-zug.ch, 1 +phoenix.dj, 1 phoenixadvisers.com, 1 phoenixboard.tk, 1 phoenixcourt.gov, 1 @@ -113992,11 +114401,9 @@ phoenixurbanspaces.com, 0 phoenixville.online, 1 phol.io, 1 pholder.com, 1 -pholio.ai, 1 pholio.com, 1 phone-service-center.de, 1 phone-spy.ml, 1 -phone4u.bg, 1 phonedoc.it, 1 phonefilter.co.uk, 1 phonefleet.fr, 1 @@ -114033,9 +114440,9 @@ phonicarecords.com, 1 phonix-company.fr, 1 phonosynthese.tk, 1 phonosynthesis.tk, 1 -phor.ge, 1 phorart.com, 1 phorcys.net, 1 +phormance.com, 1 phormulagroup.com, 1 phosagro.biz, 0 phosagro.com, 0 @@ -114070,7 +114477,6 @@ photoconferenceest.ga, 1 photodeal.fr, 1 photodyna.tk, 1 photofinale.com, 1 -photoflashdrive.com, 1 photogelique.be, 1 photoglobe.gr, 1 photogptai.com, 1 @@ -114082,6 +114488,7 @@ photographerforwedding.tk, 1 photographersdaydream.com, 1 photography-workshops.net, 1 photographyandvideo.tk, 1 +photographybyctware.com, 1 photographybyjamiebrown.com, 1 photographyforchange.org, 1 photographyontherun.com, 1 @@ -114095,7 +114502,6 @@ photonclub.ir, 1 photoncourier.com, 1 photonics.bg, 1 photonis.com, 1 -photonmatters.com, 1 photonsensor.com, 1 photonsphere.org, 1 photopalace.tk, 1 @@ -114110,6 +114516,7 @@ photorelive.com, 1 photosafari.com.my, 1 photosafaribg.com, 1 photosbyadeline.com, 1 +photosbybstuartseniors.com, 1 photosbyzachary.tk, 1 photoscheduleers.ga, 1 photoscheduleest.ga, 1 @@ -114129,10 +114536,13 @@ photune.net, 1 phoxden.net, 1 php.watch, 1 phpadmin666.com, 1 +phparena.net, 1 phpbb-tutorials.cf, 1 +phpbbchinese.com, 0 phpcraft.de, 1 phpdevlabs.tk, 1 phpdorset.co.uk, 1 +phpfactory.io, 1 phpfashion.com, 1 phpinfo.in.th, 1 phpkari.cz, 1 @@ -114150,11 +114560,11 @@ phpstatus.com, 1 phpunit.de, 1 phpunit.expert, 1 phpwebs.com, 1 +phpwin.com, 0 phqsoft.com, 1 phr.org, 1 phr34kz.pw, 0 phra.gs, 1 -phraselock.com, 1 phreakaus.tk, 1 phreaker.ml, 1 phreaknet.org, 1 @@ -114162,7 +114572,6 @@ phreesia.com, 1 phrenology.com, 1 phrive.space, 1 phrlegal.com, 1 -phro.love, 1 phronesis.net, 1 phruse.com, 1 phryanjr.com, 0 @@ -114196,6 +114605,7 @@ phuoctran.vn, 1 phuong.faith, 1 phurl.de, 1 phv-bw.de, 1 +phwoarbeauty.com, 1 phx2-az.tk, 1 phxserver.net, 0 phyi.loan, 1 @@ -114203,7 +114613,6 @@ phyley.com, 1 phyllis.nl, 1 phyllischerry.com, 1 phynix-hhu.de, 1 -phyr.one, 1 phyrone.de, 1 phyrone.eu, 1 physia.gr, 1 @@ -114225,10 +114634,10 @@ physiobrite.tk, 1 physiomeproject.org, 1 physionova-badenstedt.de, 1 physiopraxisteam.de, 1 -physiosense.net, 1 physioteam-franz.de, 1 physiotherapie-buk.de, 1 physiotherapie-concept.de, 1 +physiotherapie-seiwald.de, 1 physiotherapist-physicaltherapist.com, 1 physiovesenaz.ch, 0 physis.earth, 1 @@ -114238,12 +114647,10 @@ phyxion.net, 1 pi-dash.com, 1 pi-datametrics.com, 1 pi-inu.com, 1 -pi-konsulting.se, 1 pi-net.dedyn.io, 1 pi-supply.com, 1 pia-bardo.tk, 1 piaad9.org, 1 -piac.pk, 1 piacenza24.eu, 1 piaconline.hu, 1 piadouwes.tk, 1 @@ -114252,6 +114659,7 @@ piai.ga, 1 piai.gq, 1 piai.ml, 1 piai.tk, 1 +piaiai.com, 0 piajuly.net, 1 pianetaottica.eu, 1 pianetaottica.info, 1 @@ -114279,10 +114687,10 @@ piatabrasil.com.br, 1 piatenko.ml, 1 piatika.com, 1 piatika.in, 1 -piava.ai, 1 piavonpadberg.com, 1 pib.gd, 1 pibgd.fr, 1 +piboston.org, 1 piboubes.me, 1 pic-sl.com, 1 pic.gov, 1 @@ -114303,6 +114711,7 @@ piccolinokids.gr, 1 piccolitrasporti.it, 1 piccolopark.co.nz, 1 piccolosgombero.it, 1 +piccolospace.com, 1 piccolotrasloco.it, 1 picdefacer.com, 1 pichainlabs.com, 1 @@ -114313,6 +114722,7 @@ pickalbatros.com, 1 pickastock.info, 1 pickawaycountyohio.gov, 1 picked.cf, 1 +pickedforhome.com, 1 pickemsheet.com, 1 pickenscountysc.gov, 1 pickerellakelistings.com, 1 @@ -114321,10 +114731,11 @@ pickhdtvers.ga, 1 pickhdtvest.ga, 1 picklaptop.com, 1 pickle-publishing.com, 1 -pickleballzone.com, 1 pickleland.com, 1 picklinik.id, 0 +pickmoney.es, 1 pickmysoap.gr, 1 +picknclickonline.com, 1 picknetworkiscoming.sg, 1 picknrg.com, 1 picksin.club, 1 @@ -114333,8 +114744,6 @@ pickswapers.ga, 1 pickswapest.ga, 1 picksygirl.com, 1 picktablet.com, 1 -pickulsky.com, 1 -pickup-transporte.de, 1 pickupenc.ru, 1 picloudedge.com, 1 picme.tk, 1 @@ -114352,12 +114761,13 @@ picordi.fr, 1 picoteam.dk, 1 picoulumber.com, 0 picovian.com.br, 1 +picpay.com, 1 picr.ws, 1 picrew.me, 1 picsalesers.ga, 1 picsastock.com, 1 picshare.nz, 1 -picsquish.com, 1 +picsnmore.de, 0 picstar.tk, 1 picsto.re, 0 pictominoes.com, 1 @@ -114379,12 +114789,14 @@ pidelo-peru.com, 1 pidgi.net, 1 pidjipi.com, 1 pidocchi.it, 1 +pidu.jp, 1 pie-express.xxx, 1 piebridge.me, 1 pieceofcake.solutions, 1 piecesofmind.in.rs, 1 piecestech.com, 0 piechart.ga, 1 +pieddebiche-paris.com, 1 piedraconstruction.ma, 1 piedrahita.tk, 1 piedrasblancas.gov, 1 @@ -114396,6 +114808,7 @@ piekacz.co.uk, 1 piekacz.eu.org, 1 piekacz.net, 1 piekacz.tel, 1 +piel.vip, 1 pieland.eu, 1 pieldemariposa.es, 1 pielgrzymappka.pl, 1 @@ -114403,13 +114816,13 @@ piem.org, 1 piening.ddns.net, 1 piensa-escribe.tk, 1 piepermail.nl, 1 +piepet.net, 1 pieq.eu, 1 pieq.eu.org, 1 pier1url.com, 1 pier28.com, 1 pier2pier.org, 1 piercecountyne.gov, 1 -piercing.hu, 1 piercingnagykereskedes.hu, 1 piercingpiac.hu, 1 piercraft.com, 1 @@ -114431,6 +114844,7 @@ pierrot-bg.com, 1 pierson.tk, 1 pierstone.com, 1 pierugo.ch, 1 +pieseagricole.ro, 1 piesel-piepser.de, 1 pietbrakman.tk, 1 pietechsf.com, 0 @@ -114438,6 +114852,7 @@ pieter-verweij.nl, 1 pieterbamps.tk, 1 pieterbos.nl, 1 pieterdev.net, 1 +pietraglobal.com, 1 pietredirapolano.com, 1 pietron.name, 1 pietrosoft.tk, 1 @@ -114448,18 +114863,17 @@ pif.gov, 1 pig-breeding.tk, 1 pig333.com, 1 pigb.net, 1 -pigboats.com, 1 pigeonholelive.com, 1 pigeonpairstays.com, 1 pigeonracinginformation.com, 1 pigeons-rings.com, 1 pigfox.com, 1 +piggingcleaning.com, 1 pigment.com, 1 pigmentcollective.com, 1 pigop.com, 1 pigsbytebooks.org, 0 pigslv.com, 1 -pigtracker.com.ar, 1 piguet.com, 0 pigzilla.co, 1 pihaar.de, 1 @@ -114498,9 +114912,12 @@ pilasebastovce.sk, 1 pilates-mehr.de, 1 pilatesavenue.co.uk, 1 pilatesboutique.com, 1 +pilatescenteraz.com, 1 pilatespt.nl, 1 +pilatesstation.co.th, 1 pilbaraports.com.au, 1 pilchuck.org, 1 +pile.systems, 1 pileawayremovals.com, 1 pilgermaske.org, 1 pili-serv.ovh, 1 @@ -114508,6 +114925,7 @@ pilipinas.cc, 1 piliszek.net, 1 pillar.fi, 1 pillargrc.com, 1 +pillow.sk, 1 pillowcast.net, 1 pillowexpertsers.ga, 1 pillowexpertsest.ga, 1 @@ -114523,11 +114941,10 @@ pilotgrowth.com, 1 pilotinusa.com, 1 pilotknobmo.gov, 1 pilotodianws.azurewebsites.net, 1 -pilotorg.ru, 1 +pilotpen.us, 0 pilotproject.tk, 1 pilotshop.com, 1 pilsen.fun, 1 -pilsencr.com, 1 pilseta24.lv, 1 pilsook.com, 1 pilvi.space, 1 @@ -114536,30 +114953,26 @@ pimastoneaz.com, 1 pimhaarsma.nl, 1 pimhaarsmamedia.nl, 1 pimmel.stream, 1 -pimo.id, 1 pimoid.fr, 1 pimplelotionest.ga, 1 pimpmymac.ru, 1 pimpmypaper.com, 1 -pimpmypc.co.uk, 1 pimpmypc.tech, 1 pimpmyperf.fr, 0 pimpninjas.org, 1 +pimppublishing.com, 1 pimpstack.com, 1 +pimpyworld.com, 1 pims-hub.org.uk, 1 -pimsa.com.tr, 1 -pimsaautomotive.com, 1 pimylifeup.com, 1 -pin-communications.com, 1 pin.net.au, 1 pinacamauto.com, 1 pinalcourtsaz.gov, 1 -pinale.es, 0 +pinale.es, 1 pinarecordsmusic.tk, 1 pinares.es, 1 pinarshivmarket.com, 1 pinatubo.tk, 1 -pinayporner.live, 1 pinball.tk, 1 pinballprinting.com, 1 pinboxx.com, 1 @@ -114596,16 +115009,16 @@ pinesol.com, 0 pinetreeadvisors.us, 1 pinfong.com, 1 ping-books.cf, 1 -ping6.it, 1 -pingas.org, 1 +pingbandiannao.com, 0 +pingminer.com, 1 pingnp.me, 0 pingodoce.pt, 1 pingperfect.com, 1 pingpongparkinson.at, 1 pingrc.net, 1 -pingsut.com, 1 pinguinita.tk, 1 pinguinreal.sk, 1 +pingvin.pro, 1 pingvinofnet.ml, 1 pinhadigital.com, 1 pinigseu.xyz, 1 @@ -114623,7 +115036,7 @@ pinkfoxwebdesign.com, 0 pinkhatbeard.com, 1 pinkitalia.tk, 1 pinklecfest.org, 1 -pinklittlenotebook.com, 0 +pinklittlenotebook.com, 1 pinkmango.travel, 0 pinkoffice.com, 1 pinkoi.com, 1 @@ -114666,7 +115079,6 @@ pinoytambayan.ga, 1 pinoytambayan.tk, 1 pinoytimes.tk, 1 pinpaituiguang.com.cn, 1 -pinpals.com.au, 1 pinpayments.com, 1 pinpointengineer.co.uk, 1 pinse.club, 1 @@ -114720,7 +115132,6 @@ pioneer-football.org, 1 pioneer.eu, 0 pioneerbible.org, 1 pioneercredit.com.au, 1 -pioneerks.com, 1 pioneerscar.com, 1 pionierboat.cf, 1 pionierboat.ga, 1 @@ -114748,8 +115159,6 @@ pipscprd.ca, 1 piquaoh.gov, 1 piquark6046.blog, 1 piqueteway.tk, 1 -piraino.fr, 1 -piraja.io, 1 piramalglassusa.com, 1 piramide.nl, 1 piranhaattack.tk, 1 @@ -114763,6 +115172,7 @@ piratejeeptours.com, 1 piraten-basel.ch, 1 piraten-kleinbasel.ch, 1 piraten-recording.tk, 1 +pirateparty.org.uk, 1 piratepay.io, 0 pirates-comic.com, 1 piratesbrewcoffee.net, 1 @@ -114804,14 +115214,16 @@ pissflaps.co.uk, 1 pissflaps.org.uk, 1 pist.is, 1 pista73.com, 1 +pistacio.hr, 1 pistats.ddns.net, 1 pistolnz.org.nz, 1 pistonkandidatu.tk, 1 piszmak.pl, 1 pit-stop-sto.tk, 1 -pita.ninja, 1 pitakashop.hu, 1 pitang.com, 1 +pitango.com, 1 +pitaya.ai, 1 pitbooks.ga, 1 pitbox8.nl, 1 pitbullclub.tk, 1 @@ -114871,6 +115283,7 @@ pivxblockchaindownload.com, 1 piw.pw, 0 piwko.co, 1 pix-geeks.com, 1 +pix18.ru, 1 pix5.de, 1 pixa.co.id, 1 pixalatio.tk, 1 @@ -114883,6 +115296,7 @@ pixel-perfection.com, 1 pixel-puls.de, 1 pixel.facebook.com, 0 pixel.google.com, 1 +pixel4k.com, 1 pixelbass.nl, 1 pixelbattle.fun, 1 pixelcatproductions.net, 1 @@ -114901,28 +115315,27 @@ pixelissues.com, 1 pixelkraft.net, 1 pixellent.me, 1 pixelmania.se, 1 -pixelmateexpo.com, 1 pixelmattic.com, 1 pixelmedianetwork.com, 1 pixelmonworld.fr, 1 pixelonl.com, 1 pixelorastudio.com, 1 pixelpaper.org, 1 +pixelpartyplay.com, 1 pixelplex.io, 1 +pixelprint.la, 1 pixelrain.info, 1 pixelsbanking.com, 1 -pixelsearch.eu, 1 pixelshealth.com, 1 pixelsketch.co.uk, 1 pixelsquared.us, 1 pixelstamp.net, 1 -pixelstechfest.in, 0 -pixeltech.com.bd, 1 +pixelstechfest.in, 1 +pixelster.com, 1 pixeltranslating.com, 1 pixelturkey.art, 1 pixelturkey.com, 1 pixelumin3d.com, 1 -pixelunion.eu, 1 pixelurbia.com, 1 pixeluser.de, 1 pixelution.at, 1 @@ -114930,11 +115343,15 @@ pixelw.design, 1 pixelweb.ie, 1 pixelwijk.de, 1 pixelz.cc, 1 +pixemoji.com, 1 pixend.de, 1 pixeon.com, 1 pixexid.com, 1 pixiin.com, 1 pixinfo.com, 1 +pixiv.cat, 1 +pixiv.nl, 1 +pixiv.re, 1 pixlfox.com, 1 pixloc.fr, 1 pixma140.com, 1 @@ -114944,6 +115361,7 @@ pixon-chemie.com, 1 pixouno.com, 1 pixshop.fr, 1 pixstudio.ai, 1 +pixsystem.com, 1 pixxxels.cc, 1 pixyship.com, 1 pixzilla.de, 1 @@ -114952,11 +115370,12 @@ pizdelka.tk, 1 pizza-24.tk, 1 pizza-aachen.de, 1 pizza-boy.cz, 1 +pizza-cali.net, 1 +pizza-calzone.com, 1 pizza-curator.com, 1 pizza-house.tk, 1 pizza-t.co.il, 1 pizza2020andcatering.com, 1 -pizzablab.com, 1 pizzaboy.cz, 1 pizzaboys.com, 1 pizzacontenta.tk, 1 @@ -114966,7 +115385,6 @@ pizzagaming.tk, 1 pizzagigant.hu, 1 pizzahut.co.in, 1 pizzahut.com.tw, 1 -pizzalab.co.il, 1 pizzamc.eu, 1 pizzapapalis.com, 1 pizzaplus.tk, 1 @@ -114981,6 +115399,7 @@ pjatnashki.ru, 1 pjax.xyz, 0 pjc.is, 1 pjentertainments.co.uk, 1 +pjleisure.co.uk, 1 pjo.no, 1 pjotor.tk, 1 pjshop.cf, 1 @@ -114995,7 +115414,6 @@ pk678.com, 1 pk8k.com, 1 pkautodesign.com, 0 pkb.shop, 1 -pkctrading.com, 1 pkd.pl, 1 pkeus.de, 1 pkf-attest.es, 1 @@ -115004,28 +115422,29 @@ pkfbpo.pl, 1 pkfszkolenia.pl, 1 pkg.one, 1 pkgbuild.com, 1 +pkgs.observer, 1 pkgt.de, 0 pki.com.ru, 1 +pkirwan.com, 1 pko.ch, 0 pkov.cz, 1 pkservice.tk, 1 pkspskov.tk, 1 pkwebsolutions.cf, 1 -pkz.ch, 1 pl-beauty.com.ua, 1 pl-cours.ch, 0 pl-trans.tk, 1 pl.search.yahoo.com, 0 -pl19.de, 1 +pl2.es, 1 placasonline.com.br, 1 place-for-you.com, 1 -place-twist.com, 1 placeandsee.com, 1 placed-app.com, 1 placedaffiliate.com, 1 placedsupport.com, 1 placeforgames.tk, 1 placehold.co, 1 +placements.io, 0 placenet.fr, 1 placeofindia.com, 1 placepay.com, 1 @@ -115034,24 +115453,18 @@ placer.ai, 1 placeralplato.com, 1 placercountyelections.gov, 1 placestovisitasia.com, 1 -placetwist.co, 1 -placetwist.com, 1 -placetwist.de, 1 -placetwist.eu, 1 -placetwist.gr, 1 -placetwist.net, 1 placidoandriolo.tk, 1 placiena.jp, 1 -placing.com, 1 +placker.com, 1 plagiarismcheck.org, 1 plagiary.org, 1 plagu.ee, 1 plagued.tk, 1 plaid.com, 1 +plainfeeder.com, 1 plainfieldil.gov, 1 plainfieldpolicenj.gov, 1 plainfieldvt.gov, 1 -plainfin.me, 1 plaingreenloans.com, 1 plainjs.com, 1 plainlanguage.gov, 1 @@ -115067,6 +115480,7 @@ plaintextpledge.eu, 1 plaintextpledge.net, 1 plaintextpledge.org, 1 plaintownshipstarkoh.gov, 1 +plaintray.com, 1 plaisiretsens.com, 1 plaisirs-coquins.com, 1 plakbak.nl, 1 @@ -115077,7 +115491,6 @@ plamenapanayotova.co.uk, 1 plan-in-architektur.de, 1 plan4kick.de, 1 planable.io, 1 -planacy.io, 1 planafy.com, 1 planatus.com, 1 planbase.com, 1 @@ -115109,7 +115522,6 @@ planetapolska.com, 1 planetaprogramas.tk, 1 planetarapluso.tk, 1 planetarian.moe, 1 -planetarica.org, 1 planetasilius.tk, 1 planetasuboficial.com.br, 1 planetau2.com, 1 @@ -115134,6 +115546,7 @@ planetmath.org, 1 planetmetroidprime.tk, 1 planetmobile.tk, 1 planetmugen.tk, 1 +planetnaturopath.com, 1 planetofwoman.com, 1 planetonline.tk, 1 planetradio.tk, 1 @@ -115152,6 +115565,7 @@ planify.in, 1 planify.io, 0 planisanin.tk, 1 planiserin.tk, 1 +planisware.academy, 1 planisware.cn, 1 planisware.live, 1 planisys.net, 1 @@ -115180,13 +115594,13 @@ planogaragedoor.net, 1 planplay.nl, 1 planresto.com, 1 planriean.com, 1 +planrow.com, 1 planshetnik.tk, 1 plant-gift.jp, 1 plantarportugal.org, 1 plantastique.ch, 0 plantationsnicholas.com, 1 plantbasedblonde.com, 1 -plantbasedsis.com, 1 plantcare.es, 1 plantcareforbeginners.com, 1 planteforum.no, 1 @@ -115199,8 +115613,8 @@ planther.nl, 1 plantiary.com, 1 plantidentification.co, 0 plantinum-cbd.com, 1 -plantlab.ai, 1 plantpro.gr, 1 +plantrustler.com, 1 plantsupplement.co.uk, 1 plantuml.online, 1 planujemywesele.pl, 1 @@ -115222,9 +115636,9 @@ plasmatrap.com, 1 plasmoth.org, 1 plasofficial.it, 1 plassmann.ws, 1 +plast-pallet.ru, 1 plast.bg, 1 plast.design, 1 -plastacier.fr, 1 plastdesign.com.ua, 1 plastex.tk, 1 plastic2print.com, 0 @@ -115234,6 +115648,7 @@ plasticeyesurgery.com, 1 plasticflash.com, 1 plasticisers.org, 1 plasticobiodegradable.com, 1 +plasticosbiobasados.com, 1 plasticpassion.tk, 1 plasticstare.com, 1 plasticsurgeon.ga, 1 @@ -115242,6 +115657,7 @@ plasticsurgerypartyers.ga, 1 plasticsurgerypartyest.ga, 1 plasticwindows.tk, 1 plastikkirurgiskane.se, 1 +plastischechirurgie-linz.at, 1 plastokna.tk, 1 plastovelehatko.cz, 1 plastrequest.com, 1 @@ -115256,7 +115672,7 @@ platform-med.org, 1 platform2020prague.com, 1 platforma2020praha.cz, 1 platformadmin.com, 1 -platformcon.com, 0 +platformcon.com, 1 platformengineering.it, 1 platformos.com, 1 platformparticipatie.nl, 1 @@ -115278,6 +115694,7 @@ platinumkids.com.br, 1 platinumpavingnj.com, 1 platinumplumbingca.com, 1 platinumpoolsaz.com, 1 +platinumsystems.biz, 1 platinumtalkers.ga, 1 platinumtalkest.ga, 1 platitudemusic.com, 1 @@ -115312,7 +115729,6 @@ play-mate.tk, 1 play-telochki.tk, 1 play.cash, 1 play.google.com, 1 -play21bit.com, 1 play3niu11.com, 1 play3niu33.com, 1 play3niu55.com, 1 @@ -115326,16 +115742,13 @@ playasdegalicia.tk, 1 playavalon.net, 1 playball.tk, 1 playcasinos.ca, 1 -playchiplet.com, 1 playcollect.net, 1 -playcooked.com, 1 playdaysparties.co.uk, 1 playdeadlock.com.cn, 1 playdlawosp.pl, 1 playdrop.ml, 1 playelephant.com, 1 player.ro, 1 -player03.com, 1 player701.net, 1 player701.ru, 1 playerdb.co, 1 @@ -115358,10 +115771,12 @@ playinfinityvr.com, 1 playit.rs, 1 playkids.com, 0 playmei.com, 0 +playmyinbox.com, 1 playnow.com, 1 playnuganug.com, 1 playocean.net, 1 playorigin.com, 1 +playphoenix.net, 1 playpirates.com, 1 playplay.com, 1 playpower.tk, 1 @@ -115374,8 +115789,8 @@ playsprout.industries, 1 playstation-network.ga, 1 playstationplus.es, 1 playstationtrophies.org, 1 +playtheme.ru, 1 playtictactoe.org, 1 -playtinwhistle.com, 1 playtoearn.net, 1 playtop.tk, 1 playtopia.no, 1 @@ -115384,7 +115799,6 @@ playviolinmusic.com, 1 playwhyyza.com, 1 playwright.co, 1 playwrightsolutions.com, 1 -playxpgames.com, 1 playxylo.com, 1 playzone.tk, 1 plaza-athenee.com, 1 @@ -115395,6 +115809,7 @@ plazasummerlin.com, 1 plcgurus.net, 1 plchardware.com, 1 pldeyewear.com.ua, 1 +pldx.org, 1 ple.jp, 1 ple.llc, 1 pleasantonca.gov, 1 @@ -115414,6 +115829,7 @@ pleasureplanetbrothel.com.au, 1 pleb.cc, 1 plebeian.com.tw, 1 plebret.com, 1 +plech.xyz, 1 pleer.ru, 1 plega.com.au, 1 plegro.com, 1 @@ -115424,15 +115840,14 @@ pleier.no, 1 pleijsier.tk, 1 pleindedemsvaart.tk, 1 plejdbelysning.se, 1 +plemedia.de, 1 plemenito.com, 1 plenatus.com.br, 1 plenigo.com, 1 plenkanaotrez.ml, 1 -plenty.jp, 1 plentybetter.com, 1 plentybetter.org, 1 pleo.io, 1 -plesksecuritycheck.com, 1 plesse.pl, 1 pletenkin-nn.ru, 1 pleven.bg, 1 @@ -115445,7 +115860,6 @@ plexiglasssheetscuttosize.com, 1 plexion.cf, 1 plexion.ga, 1 plexion.gq, 1 -plexlibrary.com, 1 plexmark.net, 1 plexmark.tk, 1 plexnet.cz, 1 @@ -115473,8 +115887,9 @@ plob.org, 1 plodwithme.com, 1 ploi.cloud, 1 ploi.io, 1 -plokko.com, 0 +plokko.com, 1 plomberie-rivesud.ca, 1 +plombierjob.com, 1 plomeros.cl, 1 plomin.tk, 1 plongee-phuket.fr, 1 @@ -115484,7 +115899,6 @@ ploom.com, 1 ploomber.io, 1 ploppis.org, 1 ploptec.tk, 1 -plothost.com, 1 plotly.com, 0 plotscout.ae, 0 ploulech.fr, 1 @@ -115502,7 +115916,6 @@ pluginthemehub.com, 1 pluginuri-wordpress.ro, 1 plugmeubelen.nl, 1 plugnroll.com, 1 -plugra.com, 1 plugshare.com, 1 pluimveeplanner.nl, 1 plumair-ve.com, 1 @@ -115539,29 +115952,27 @@ pluricosmetica.com, 1 plurilock.com, 1 pluriumint.com, 1 plus-project.co.uk, 1 -plus.ai, 0 +plus.ai, 1 plus.google.com, 1 plus.sandbox.google.com, 1 plus15.ml, 1 plus15.tk, 1 plus1s.site, 1 -plusamed.com, 1 plusbot.tk, 1 plusbus.info, 1 plusdefleurs.com, 1 plusfitness.com.au, 1 plusgrandevilledefrance.com, 1 plushev.tk, 1 +pluslink.co.jp, 1 pluspass.com, 1 plusport-api.com, 1 plusport.com, 1 -plusreed.com, 1 plustwik.com, 1 plutiedev.com, 1 pluto5000.com, 1 -plutopia.ch, 0 +plutopia.ch, 1 pluxml.org, 1 -plvsultra.com, 1 plyind.com, 1 plymouthboroughpa.gov, 1 plymouthbus.co.uk, 1 @@ -115572,7 +115983,6 @@ plymouthrockwi.gov, 1 plymouthshawneeindians.org, 1 plymouthtownshippa.gov, 1 plymouthwi.gov, 1 -plytkarzrzeszow.pl, 1 plyuk.site, 1 plz.report, 1 plzen-sadrokarton.cz, 1 @@ -115624,6 +116034,7 @@ pmi.edu, 1 pmi.gov, 1 pmi.it, 1 pmiandulive.com, 1 +pmk.ddns.net, 0 pml4t.net, 1 pmme.io, 1 pmoscr.com, 1 @@ -115639,12 +116050,13 @@ pmsfdev.com, 1 pmsfoundation.ml, 1 pmsoft.nl, 0 pmt-documenten.nl, 1 -pmtech.inf.br, 1 pmu.com.pl, 1 +pmvmaconnerie.fr, 1 pn.com.au, 1 pn.id.lv, 1 pnakosoft.com.au, 1 pnbholdings.com, 1 +pnch.fi, 1 pneu01.fr, 1 pneu74.fr, 1 pneuhaus-lemp.ch, 1 @@ -115791,7 +116203,6 @@ pocket-broker.ru, 1 pocket-lint.com, 1 pocketbookdot.tk, 1 pocketbroker.ru, 1 -pocketbrokers.ru, 1 pocketcraft.io, 1 pocketdeer.cc, 1 pocketgamingdirectory.com, 1 @@ -115799,7 +116210,6 @@ pocketly.in, 1 pocketmags.com, 1 pocketnow.com, 1 pocketoption.com, 1 -pocketoption.cz, 1 pocketoption.ru, 1 pocketsquare.jp, 1 pockettradesman.com, 1 @@ -115810,10 +116220,8 @@ pocomo.ca, 1 pocopizza.co.uk, 1 pocopt.com, 1 pocopt.ru, 1 -pocsai.hu, 1 -pocsaismartsystem.hu, 1 pocze.ch, 1 -pocztowski.it, 1 +pocztowski.blog, 1 pod-emnik.by, 1 pod.lv, 1 pod.pm, 1 @@ -115838,7 +116246,7 @@ podcastmusic.com, 1 podcastname.space, 1 podcastpulse.net, 1 podcastsaver.com, 1 -podcaststudio.com, 0 +podcaststudio.com, 1 podcasty.cz, 1 podcastz.cz, 1 podcreative.ca, 1 @@ -115846,7 +116254,6 @@ podcrto.si, 1 podcrypters.ga, 1 podcryptest.ga, 1 podd.xyz, 1 -poderdafelicidade.com.br, 1 podersul.com, 1 podia.com.gr, 0 podia.gq, 1 @@ -115901,6 +116308,7 @@ poetics.tk, 1 poetka.tk, 1 poetry.ge, 1 poetryinmusic.tk, 1 +poetsgate.com, 0 poetsjeboot.nl, 1 poezja.art, 1 poezja.com.pl, 1 @@ -115911,7 +116319,7 @@ pogi.ee, 1 pogljad-brest.tk, 1 pogodavolgograd.tk, 1 pogodok.tk, 1 -pogomate.com, 0 +pogomate.com, 1 pogotowie-komputerowe.tk, 1 pogotowiekomputeroweolsztyn.pl, 1 pogrebeniq-sofia.com, 1 @@ -115922,10 +116330,8 @@ pohmagazine.org, 1 pohoron.ru, 1 poimel.ga, 1 poimenidou.gr, 1 -poimskaya.ru, 1 poin.tk, 1 poinsot.info, 1 -point11.ai, 1 pointagri.com, 1 pointbarre.tk, 1 pointblog.com, 1 @@ -115961,19 +116367,18 @@ poiskkristinity.ml, 1 poiskrus.ml, 1 poisoncolombia.tk, 1 poisonget-rid-ofac.tk, 1 -poitiers-mignechecs.com, 1 poitiers-ttacc-86.eu.org, 1 pojer.me, 1 pojoksosmed.com, 1 pokafe.com, 1 pokagontownshipmi.gov, 1 pokalsocial.de, 1 -pokedb.de, 1 pokedex.mobi, 1 pokeelektronik.com, 1 pokeelektronik.com.tr, 1 pokefarm.com, 1 pokehidden.com, 1 +pokeinthe.io, 1 pokelens.tk, 1 pokeli.de, 1 pokemmo.com, 1 @@ -115982,6 +116387,7 @@ pokemoncentral.it, 1 pokemondb.net, 1 pokemonforums.tk, 1 pokemongoclub.tk, 1 +pokemongodata.com, 1 pokemonguide.tk, 1 pokemonlab.com, 1 pokemonsimulator.com, 1 @@ -116001,13 +116407,13 @@ pokeridioters.ga, 1 pokeridiotest.ga, 1 pokerigrach.com, 1 pokernyheder.io, 1 -pokerology.com, 1 pokerreligioners.ga, 1 pokerreligionest.ga, 1 pokerslab.com, 1 pokerventure.ga, 1 pokerventureers.ga, 1 pokerventureest.ga, 1 +pokerzone.com, 1 poki.at, 1 poki.be, 1 poki.bg, 1 @@ -116033,7 +116439,6 @@ poki.ro, 1 poki.se, 1 pokl.cz, 1 pokoiki.pl, 1 -pokojovkyodlucie.cz, 1 pokon548.ink, 1 pokpok.tk, 1 pokrowcecardo.pl, 1 @@ -116047,6 +116452,7 @@ pol-members.com, 1 polaire.org, 1 polak-import.tk, 1 polan.tk, 1 +poland.tf, 1 polanda.com, 1 polandb2b.directory, 1 polandtownship.gov, 1 @@ -116059,8 +116465,10 @@ polarisapp.xyz, 1 polarisengineering.com, 1 polarispool.com, 0 polaroidmag.com, 1 +polaschin.ch, 1 polatas.com.tr, 1 polatsemih.com, 1 +polbox.fr, 1 polcyb.com, 1 polcyb.net, 1 polcyb.org, 1 @@ -116069,18 +116477,15 @@ pole-mecanique.fr, 1 pole.net.nz, 1 pole1.co.uk, 1 polebarn.com, 1 -polecamps.com, 1 polemamas.com, 1 polemik.tk, 1 polenautohuur.nl, 1 polerka.tk, 1 -polerush.com, 1 polestar.com.tw, 1 poletaem.tk, 1 polezno-v-internete.ml, 1 poliannacaruso.com.br, 1 polibri.de, 1 -policat.de, 1 police-karate.bg, 1 police-schools.com, 1 police4tn.gov, 1 @@ -116098,7 +116503,6 @@ policyinsure.com, 1 policymakr.com, 1 policymine.com, 1 policyreporter.us, 1 -policyrisk.com, 1 policytrusters.ga, 1 policytrustest.ga, 1 poliermachines.be, 1 @@ -116112,6 +116516,7 @@ polimer39.ml, 1 polina-gagarina.gq, 1 polioptics.com, 1 polis.or.at, 1 +polis812.ru, 1 polisanaraka.pl, 1 polisanarciarska.pl, 1 polisave.co.il, 1 @@ -116142,7 +116547,6 @@ politagree.com, 1 politeka.net, 1 politex.tk, 1 politic.org.ua, 1 -politica.ai, 1 political-science-schools.com, 1 politicalasylum.tk, 1 politicaprivacidade.com, 1 @@ -116159,6 +116563,7 @@ politicsnews.ml, 1 politicsnews.tk, 1 politicsnigeria.com, 1 politik-bei-uns.de, 1 +politik-kommunikation.de, 1 politikainavigator.hu, 1 politique-etrangere.com, 1 politisor.com, 1 @@ -116185,6 +116590,7 @@ polleverywhere.com, 1 polliga.tk, 1 pollinators.ie, 1 pollingplace.uk, 1 +pollnowhere.com, 1 pollock.gallery, 1 pollock.tk, 1 pollpodium.nl, 1 @@ -116202,13 +116608,11 @@ polorize.com, 1 polotshirts.org, 1 polourize.com, 1 polparts.nl, 1 -polrentgen.pl, 1 polski-dentysta-birmingham.uk, 1 polskiadwokat.org, 1 polskiemalzenstwo.org, 1 polskienewsy.tk, 1 polskimoskwa.ru, 1 -polspam.com, 1 polspam.pl, 1 poltava-news.ru, 1 poltavanews.ru, 1 @@ -116216,8 +116620,7 @@ poltax.com.pl, 1 poltek-petrokimia.ac.id, 1 poltsamaa.edu.ee, 1 poltsamaalasteaed.edu.ee, 1 -poly-glot.ai, 1 -polyatomic.ai, 1 +poly.se, 1 polycoise.com, 1 polycraftual.co.uk, 0 polygamer.net, 0 @@ -116226,13 +116629,9 @@ polygondemos.com, 1 polygonote.com, 1 polygonthemes.com, 1 polygraphi.ae, 1 -polylineworks.com, 1 -polymaint-services.com, 1 polymake.org, 1 -polymarketwatch.info, 1 polymath.pm, 1 polymerexpert.biz, 1 -polymerix.de, 1 polymesh.network, 1 polymics.com, 0 polyna.eu, 1 @@ -116271,15 +116670,14 @@ pomozmruczkom.pl, 1 pompefunebrilariviera.it, 0 pompeii.tickets, 1 pompes-funebres-girard.com, 1 -pomphreyslaw.com, 1 -pon.com, 1 ponabana.com, 1 -ponavia-rezidence.cz, 1 +poname.ru, 1 ponca-nsn.gov, 1 poncagedemarbre.fr, 1 poncatribe-ne.gov, 1 poncho-bedrucken.de, 0 pondacademy.com, 1 +pondband.net, 1 pondof.fish, 1 pondot.it, 1 pondsama.com, 1 @@ -116290,6 +116688,7 @@ ponio.org, 1 ponio.xyz, 1 ponpokorin.tk, 1 ponpon.tk, 1 +ponsanliving.com, 1 ponte-camp.de, 1 ponteggi.it, 1 ponteggi.roma.it, 1 @@ -116316,6 +116715,7 @@ poochpark.tk, 1 poodlefan.net, 1 poohcottage.co.uk, 1 pooi.me, 1 +poojanews.com, 1 pookhaarden.nl, 1 pookl.com, 1 pool-selber-bauen.de, 1 @@ -116327,6 +116727,7 @@ poolsafety.gov, 1 poolsonline.tk, 1 poolspa.es, 1 pooltools.net, 1 +poolvilla-margarita.net, 1 poon.io, 1 poonawallafincorp.com, 1 poopa.loan, 1 @@ -116369,6 +116770,7 @@ popkins.ga, 1 popkins.gq, 1 popkins.ml, 1 popkins.tk, 1 +popkulturysci.pl, 1 poplargrove-il.gov, 1 poplavok77.tk, 1 poplite.xyz, 1 @@ -116410,7 +116812,6 @@ populardogs.ml, 1 popularhairstyles.org, 1 popularmedianews.com, 1 population-ethics.com, 1 -population-europe.eu, 1 population.gov.au, 0 populationhealthdata.nl, 1 popup-stores.online, 1 @@ -116419,7 +116820,6 @@ popwaifu.click, 1 poquiloco.com, 1 poradls.cz, 1 poradludkastanka.cz, 1 -poradniarozwodowa.pl, 1 porady-wnetrzarskie.pl, 1 porady.elblag.pl, 1 porady.kalisz.pl, 1 @@ -116435,6 +116835,7 @@ porady.walbrzych.pl, 1 porady.zgora.pl, 1 poradywnetrzarskie.pl, 1 porazarul.by, 1 +porcepastora.com.ve, 1 porchdaydreamer.com, 1 porcore.com, 1 porelcorazon.com, 1 @@ -116461,6 +116862,7 @@ pornbay.eu, 1 pornbay.org, 1 pornblog.org, 1 porncomichub.com, 1 +porncomicshub.com, 1 porncomix69.com, 1 porncompanions.com, 1 porndoe.com, 1 @@ -116479,7 +116881,6 @@ pornhubpremium.com, 1 pornhun.xyz, 1 pornimg.net, 1 porniwi.com, 1 -pornkaizen.com, 1 pornline.sex, 1 pornloupe.com, 1 pornmega.net, 1 @@ -116489,7 +116890,6 @@ pornobilder.pics, 1 pornoclips.net, 1 pornodvdkopen.nl, 1 pornogo.sex, 0 -pornogusto.com, 1 pornohypnosis.tk, 1 pornomens.be, 1 pornomovies.mobi, 1 @@ -116508,6 +116908,7 @@ pornsuper.net, 1 pornteddy.com, 1 porntop100.com, 1 porntube-vidios.ml, 1 +porntvclip.com, 1 pornvideos-tour.com, 1 pornvideos-tube.com, 1 pornvideos.tv, 1 @@ -116529,7 +116930,6 @@ port443.se, 1 port5060.net, 1 port67.org, 1 portable-games.tk, 1 -portableconveniences.com, 1 portablespeakers.tk, 1 portablespeakersfinder.com, 1 portagecounty-oh.gov, 1 @@ -116551,7 +116951,6 @@ portaladictos.tk, 1 portalampgroep.nl, 1 portalcarriers.com, 1 portalceara.com, 1 -portalchecknetwork.com, 1 portalchega.pt, 1 portaldabiblia.com.br, 1 portaldamizade.com, 1 @@ -116574,7 +116973,6 @@ portalviu.com.br, 1 portalz.xyz, 1 portamiinpista.it, 1 portanatura.it, 1 -portaone.com, 1 portatee.com, 1 portatilea.com, 1 portativ-mobi.tk, 1 @@ -116606,6 +117004,7 @@ portiapp.mx, 1 portiaweb.org.uk, 0 portierato.it, 1 portingkit.com, 1 +portis.io, 1 portiva.com, 1 portlandcompostclaims.com, 1 portlandcrystalcompany.com, 1 @@ -116622,7 +117021,6 @@ portofportisabeltx.gov, 1 portofsubs.com, 1 portokalliali.tk, 1 portoken.com, 1 -portolover.com, 1 portorchardwa.gov, 1 portoseguro.med.br, 1 portosenavios.com.br, 1 @@ -116656,7 +117054,7 @@ porwal.pl, 1 pos-express.de, 1 pos-hgb.nl, 1 pos-servicios.com, 1 -posable.co.uk, 1 +posa.moe, 0 posaunenchor-senden.de, 1 posbich.net, 1 poschenrieder-consulting.eu, 1 @@ -116669,7 +117067,6 @@ posh.tech, 1 poshasaudi.com, 1 poshcastles.co.uk, 1 poshe.tk, 1 -poshmark.ca, 1 poshmark.com, 1 poshsecurity.com, 1 posicionament.tk, 1 @@ -116695,6 +117092,7 @@ posleinsulta.ee, 1 posluhy-asenizatora.com.ua, 1 posoco.in, 1 pospisilik.eu, 1 +pospisilikovi.cz, 1 possible11.com, 1 possiblefutures.earth, 1 post-anon.tk, 1 @@ -116712,6 +117110,7 @@ post.lol, 1 post.tf, 1 post4me.at, 1 postalco.de, 1 +postaltreasures.com, 1 postandfly.com, 1 postback.io, 0 postbanken.no, 1 @@ -116724,7 +117123,6 @@ postcodeanywhere.co.uk, 1 postcodeswag.co.uk, 1 postcodeswag.com, 1 postcodeswag.uk, 1 -postcrossing.com, 1 postdarwinian.com, 1 postdarwinism.com, 1 postdeck.de, 1 @@ -116741,6 +117139,7 @@ postern.org, 1 postern.uk, 1 posters.win, 1 posterspy.com, 1 +postfactum.info, 1 postfalls-naturopathic.com, 1 postfalls.gov, 1 postfallspolice.gov, 1 @@ -116750,6 +117149,7 @@ postimg.cc, 1 postimpact.com.au, 1 postkassetrimmen.no, 1 postlakeswi.gov, 1 +postlifepreps.com, 1 postling.com, 1 postlogistic.tk, 1 postman.co, 1 @@ -116793,6 +117193,7 @@ pot-au-feu.info, 1 potadvisor.com, 1 potager-du-roi.fr, 1 potatiz.com, 1 +potato.im, 1 potatochip.tk, 1 potatodiet.ca, 1 potatolighting.com, 1 @@ -116817,7 +117218,6 @@ potocarimc.ba, 1 potolok-brest.tk, 1 potolok.am, 1 potomac.cf, 1 -potomacexteriors.com, 1 potomania.cz, 1 potosi-bolivia.tk, 1 potosivlgwi.gov, 1 @@ -116888,7 +117288,6 @@ power-magnetic.ml, 1 power-of-interest.com, 0 power-plugins.com, 1 power-recovery.com, 1 -power-sunshine.jp, 1 power-technology.com, 1 power-tools24.com, 1 power100.co.uk, 1 @@ -116914,6 +117313,7 @@ poweredbybp.nl, 1 poweredbyiris.nl, 1 powerembedded.com.br, 1 powerentertainment.tv, 1 +powerfifty.com, 1 powerforpeople.tk, 1 powerfortunes.com, 1 powerfulcom.net, 1 @@ -116922,15 +117322,16 @@ powergroup.tk, 1 powerhouse.pro, 1 powerhousediscovery.com, 1 powerhouseforensics.com, 1 +powerhousegym.co, 1 powerinboxperformance.com, 1 powerlifting.tk, 1 powerling.com, 1 powerlp.com, 1 powerman.name, 1 powerman.top, 1 -powerofmilk.com, 1 powerpc.pt, 1 powerpilot.co.za, 1 +powerplan.com, 1 powerplay.xyz, 0 powerplayer.tk, 1 powerroo.com.au, 1 @@ -116963,6 +117364,7 @@ powersergwiringconsultants.com, 1 powershaper.io, 1 powershellmagic.com, 1 powersmithsolar.com, 1 +powersolusa.com, 1 powersport.lt, 1 powersrealtygrp.com, 1 powerstreet.cloud, 1 @@ -116982,16 +117384,13 @@ powerwellness-korecki.de, 1 powerwheels.tk, 1 powerwithpeople.com, 1 powerzonewrestling.tk, 1 -powiatkrasnicki.pl, 1 powmobilegrooming.com, 1 poxiao.net, 1 poylabo.com, 1 poynter.net, 1 -poyntr.ai, 1 pozarevac.tk, 1 pozd.tk, 1 pozdravlyalka.gq, 1 -pozharcontrol.ru, 1 pozharnyi.tk, 1 pozitiffchik.ga, 1 pozitiffchik.ml, 1 @@ -117036,7 +117435,6 @@ pplog.net, 1 pplsoft.nl, 1 pplsvc.com, 1 pplusp.dk, 1 -ppmhpm.com, 1 ppmlocal.com, 1 ppmoon.com, 1 ppms.gov, 1 @@ -117049,6 +117447,7 @@ ppsclt.com, 1 ppsl.nz, 1 ppsoft.es, 1 ppsoft.org, 1 +ppssh.org, 1 ppt.org, 1 ppuglobe.com, 1 ppweb.pro, 1 @@ -117057,6 +117456,7 @@ pqcrypta.com, 1 pqforce.com, 1 pqgruber.com, 1 pqscript.com, 1 +pr-jf.de, 1 pr-news.spb.ru, 1 pr-project.tk, 1 pr.search.yahoo.com, 0 @@ -117073,8 +117473,8 @@ prabharealty.in, 1 prabhasakshi.com, 1 prabirghosh.tk, 1 prac.to, 1 +prachidigital.com, 1 prachiiimohite.tk, 1 -prachtigparijs.nl, 1 pracovita.pl, 1 pracownia-kasi.pl, 1 pracsuite.com, 1 @@ -117083,16 +117483,16 @@ practical-lean.com, 1 practicalcontracting.ca, 1 practicalgrowth.life, 1 practicalhomes.com.au, 1 -practicallyunhackable.com, 1 +practicallyedible.com, 1 practicalmamawellness.com, 1 practicalneurology.com, 0 practicavial.com, 1 practicepanther.com, 1 practicepath.com, 1 -practiso.io, 1 practixdevelopment.com, 1 practo.com, 1 practodev.com, 1 +practopulse.com, 1 pracusalev.tk, 1 pradcooutdoorbrands.com, 1 pradeek.tk, 1 @@ -117153,10 +117553,12 @@ praktikum.tk, 1 praladofuturo.blog, 1 praleria.com, 1 pramadillo.com, 1 +pramuwaskito.org, 1 prana-coachings.ch, 1 prana-me.com, 1 pranabesh.com, 1 pranafilms.tk, 1 +prancor.ru, 1 pranita-schals.de, 0 pranita.cz, 0 pranita.sk, 0 @@ -117168,21 +117570,18 @@ praser.net, 1 prashantcafe.tk, 1 prasinoscomputers.ml, 1 prasos.fi, 1 -prateekganguli.com, 1 +prataus.com, 0 prateep.io, 1 pratelloshop.tk, 1 pratemarkets.com, 1 prathambooks.org, 1 pratic.it, 1 praticienmedecinechinoise.be, 1 -praticijenu.com, 1 -praticonnect.com, 1 pratopronto.org, 1 pratorotoli.it, 1 pratosirunin.ga, 1 pratyu.sh, 1 prauxilium.com, 1 -prava24.com, 1 pravac.de, 1 pravagolosa.cf, 1 pravagolosa.ga, 1 @@ -117199,10 +117598,7 @@ pravoslavie.tk, 1 pravoslavnayarus.tk, 1 pravosudie.tk, 1 prawicadlawolsztyna.pl, 1 -prawnik.torun.pl, 1 -prawnika.pl, 1 prawnikdlaanglii.co.uk, 1 -prawnikwewspolnocie.pl, 1 praxino.de, 0 praxis-am-tetraeder.de, 1 praxis-andrea-huber.de, 1 @@ -117220,7 +117616,6 @@ praxis-suchtmedizin.ch, 1 praxis-waedicity.ch, 1 praxis.nl, 1 praxisfilms.org, 1 -praxisglobe.com, 1 praxisgroup.services, 1 praxistipp24.com, 1 praxxys.ph, 1 @@ -117242,6 +117637,7 @@ pre-renewal.com, 1 preapps.com, 1 precambridge.tk, 1 precaria.org, 1 +precaston.com, 1 precedecaritas.com.br, 1 precedencemedia.com, 1 precept.uk.com, 1 @@ -117258,6 +117654,8 @@ precisebusiness.com, 1 precisebusiness.com.au, 1 precisefuture.com, 1 precisehotels.com, 1 +precisionchiroct.com, 1 +precisionclan.com, 1 precisioncourt.com, 1 precisiondentalnyc.com, 1 precisiondentistrynj.com, 1 @@ -117265,9 +117663,9 @@ precisiondigital-llc.com, 1 precisionicerinks.com, 0 precisionlender.com, 1 precisionmachineservice.com, 1 +precisionmarketdata.com, 1 precisiontrialsolutions.com, 1 precisionvaccinations.com, 1 -precitaj.si, 1 precoro.com, 1 precoro.us, 1 precure.me, 1 @@ -117285,7 +117683,6 @@ predskazanie.cf, 1 predskazanie.ml, 1 predskazanie.tk, 1 predstavitelstvo-v-sude.tk, 1 -preea.com, 1 preecepools.co.uk, 1 preejaculation.ga, 1 preezy.de, 1 @@ -117306,7 +117703,7 @@ prefontaine.name, 1 pregen.tk, 1 pregnancytips.tk, 1 pregnantorcrazy.com, 1 -pregun.com.au, 0 +pregun.com.au, 1 pregunteleakaren.gov, 1 preis-alarm.info, 1 preis-alarm.org, 1 @@ -117329,22 +117726,23 @@ prelved.it, 1 prelved.nl, 1 prelved.pl, 1 prelved.se, 1 -premate.eu, 1 prematureacceleration.club, 1 premazon.com, 1 preme.name, 1 -premier-dream.co, 0 +premiachef.com, 1 +premier-dream.co, 1 premier-mt.uk, 1 premier-pallets.com, 1 +premier-podiatry.com, 1 premier-stores.co.uk, 1 premieramerica.com, 1 premieraviation.com, 1 premierbouncycastles.co.uk, 1 +premiercountertops.com, 1 premierdisco.co.uk, 1 premieresloges.ca, 1 premierevents.ie, 1 premierevr.com, 1 -premierfwrestoration.com, 1 premierlacewigs.com, 1 premierleague.gq, 1 premierloto.cm, 1 @@ -117366,18 +117764,19 @@ premium-development.net, 1 premium-leech.com, 1 premium-rum.de, 1 premium-security.com, 1 +premium-vagyonkezeles.hu, 1 premium.web.id, 1 premiumcredit.am, 1 premiumdesign.hr, 1 -premiumhealth.be, 1 premiumkeystore.com, 1 premiumlegalsupport.ga, 1 premiumpeaches.com, 1 premiumpension.com, 1 premiumpictureframing.com, 1 -premiumplus.io, 0 +premiumplus.io, 1 premiumresidency.in, 1 premiumshop24.de, 1 +premiumsleepingbags.com, 1 premiumsmile.ru, 1 premiumtimesng.com, 1 premiumturkey.ml, 1 @@ -117396,7 +117795,6 @@ prensahispana.ga, 1 prensarural.org, 1 prepa-benjam.fr, 1 prepa-code.com, 1 -prepagolf.fr, 1 prepagosyescortforyou.com, 1 prepaid-cards.xyz, 1 prepaidgirl.com, 1 @@ -117407,11 +117805,14 @@ prepareforthesat.com, 1 preparetheword.com, 1 prepfba.com, 1 preply.com, 1 +prepping.com, 1 prepr.io, 1 preprodfan.gov, 1 prepscouts.tk, 1 prepsiedy.cf, 1 +prequence.com, 1 preregpharmacy.org, 1 +prerolls.me, 1 presbee.com, 1 presbvm.org, 0 presbyterian-colleges.com, 1 @@ -117421,6 +117822,7 @@ presence-relation.fr, 0 presencefactory.nl, 1 presenciainternet.com, 1 presengage.com, 1 +presensita.com, 1 present-m.com, 1 presentaline.ch, 1 presentationmedia.com, 0 @@ -117442,7 +117844,6 @@ presidentialinnovationfellows.gov, 1 presidentialserviceawards.gov, 1 presidio.gov, 1 presidiocommercial.gov, 1 -presidiotrust.gov, 1 presidiotunneltops.gov, 1 presly.org, 1 presnetter.de, 1 @@ -117459,7 +117860,6 @@ pressakey.de, 1 presscenter.jp, 1 presscommunity.tk, 1 presscuozzo.com, 0 -pressed.com, 1 pressemeddelelse.dk, 1 pressfreedomtracker.us, 1 pressidium.com, 1 @@ -117474,8 +117874,11 @@ pressography.org, 1 presson.shop, 1 pressreleasecentral.tk, 1 pressreleasepedia.tk, 1 +pressreleasespower.com, 1 pressride.jp, 1 pressrush.com, 1 +pressspace2hack.com, 1 +pressspacetohack.com, 1 pressup.it, 1 pressureradio.com, 1 pressurewashers.ml, 1 @@ -117505,11 +117908,12 @@ prestigehealthservices.au, 1 prestigehealthservices.com.au, 1 prestigelegalgroup.com.au, 1 prestigesigns.net, 1 -prestigesoundandlight.co.uk, 1 +prestigia.com, 1 prestoinventario.com, 1 prestonadamscountywi.gov, 1 prestonmn.gov, 1 prestopermits.com, 1 +prestopizzas63.fr, 1 prestudenta.sk, 1 prestupniki.tk, 1 pretabelamodas.com.br, 1 @@ -117526,6 +117930,7 @@ prettier.fun, 1 pretty-liars.tk, 1 pretty-smile.com.tw, 1 prettycities.ga, 1 +prettydecor.store, 1 prettydirtyteens.com, 1 prettygirlcheats.com, 1 prettygoodai.co, 1 @@ -117564,6 +117969,7 @@ prevu3d.com, 1 preweather.com, 1 prexxorvita.com, 1 prezentmarzen.com, 1 +prezista.com, 1 preziti.eu, 1 prfanfiction.tk, 1 prg.rs, 1 @@ -117584,7 +117990,6 @@ pricelistforbxmodules.ga, 1 pricelooper.com, 0 pricepropharmacy.com, 1 priceri.com, 1 -pricesdairy.com, 1 priceshop.com, 1 pricesmax.com.mx, 0 pricesniffer.co, 1 @@ -117594,9 +117999,11 @@ pricing-fox.cz, 1 pricing-fox.sk, 1 priczone.com, 1 priczone.live, 1 +pride-enterprises.org, 1 pridecounseling.com, 1 pridecraft.gay, 1 prideindomination.com, 1 +pridetownconnect.com, 1 pridnestrovye.gq, 1 pridurok.tk, 1 prielwurmjaeger.de, 1 @@ -117608,8 +118015,6 @@ prijelapout.cz, 1 prijsvergelijken.ml, 1 prikeshsavla.com, 1 prikolkz.tk, 1 -prim-wash.de, 1 -prim.com, 1 prima-backoefen.de, 1 prima-badezimmermoebel.de, 1 prima-bohrmaschinen.de, 1 @@ -117644,14 +118049,17 @@ primadatingportaler.com, 1 primadirectory.tk, 1 primaflorafloristaccrington.co.uk, 1 primalinea.pro, 1 +primalracing.com, 1 primalshop.dk, 1 primalsurvivor.net, 1 primananda.com, 1 primanota.ch, 0 primapak.bg, 1 +primariachisineucris.ro, 1 primarium.info, 1 primary.health, 1 primarycareconnect.com.au, 1 +primarydomain.us, 1 primarypetvet.com, 1 primasmartwatches.de, 1 primates.com, 1 @@ -117661,6 +118069,7 @@ prime, 1 prime-host.ml, 1 prime-likes.com, 1 prime-seo.net, 1 +primeauconsultinggroup.com, 1 primecapsslim.com.br, 1 primechasedata.com, 1 primechef.com.mx, 1 @@ -117668,6 +118077,7 @@ primecore.com.au, 1 primecredit.com, 1 primecursos.com.br, 1 primed.io, 1 +primedesigns.com.au, 1 primeeducareer.pk, 1 primeequityproperties.com, 0 primeexecutiveoffices.com, 1 @@ -117686,7 +118096,8 @@ primer.io, 1 primeratx.gov, 1 primersbc.com.br, 1 primesys.ir, 1 -primetechpa.com, 0 +primetal.ro, 1 +primetechpa.com, 1 primetics.co.uk, 1 primeticsseed.com, 1 primeview.com, 1 @@ -117701,9 +118112,9 @@ primordialsnooze.com, 1 primorsk.com, 1 primorus.lt, 1 primos-tech.com, 1 -primotim.hr, 1 primrosehillvets.ie, 1 primrosenyagwaya.online, 1 +primsite.net, 1 princebazawule.com, 1 princedavidlodge.org.uk, 1 princehenrycentre.com.au, 1 @@ -117719,6 +118130,7 @@ princessbackpack.de, 1 princessefoulard.com, 1 princesspawg.tk, 1 princessyachts.com, 1 +princetonbiopartners.com, 1 princetonmn.gov, 1 princetonradiationoncology.com, 1 princetontxcdc.gov, 1 @@ -117746,6 +118158,7 @@ print-street.tk, 1 printable-map-az.com, 1 printablemapaz.com, 1 printablemapforyou.com, 1 +printableschedule.net, 1 printandgo.fr, 1 printbase.cz, 0 printbigjournal.tk, 1 @@ -117765,9 +118178,8 @@ printmijn3dmodel.be, 1 printmydesigns.ml, 1 printperfect.ro, 1 printpoint.tk, 1 -printrollup.com, 1 -printrollup.fr, 1 printscan.com, 1 +printsfinds.com, 1 printshoppy.com, 1 printsimple.eu, 1 printstudio.kiev.ua, 1 @@ -117796,24 +118208,22 @@ priorityelectric-simivalley.com, 1 priorityelectric.net, 1 priorityessays.com, 1 priorityfakes.com, 1 -prioritymeds.health, 1 prioritynissannewportnewsparts.com, 1 prioritysignsandgraphics.com, 1 priorlakemn.gov, 1 priscillacouto.com.br, 1 -priscillasimoni.com, 1 +prisekeys.com, 1 prism-glass.com, 1 prisma.io, 0 prisma.tk, 1 prismacloud.com, 1 prismacloud.xyz, 1 prismaot.tk, 1 -prismapixel.studio, 1 -prismatic.io, 1 prismatic.ro, 1 prismomarketing.com, 1 prisneutajovanamista.cz, 1 prisonerresource.com, 1 +pristinegrace.org, 1 pristinepotty.com, 1 pritchi.tk, 1 pritti-wummen.de, 1 @@ -117830,7 +118240,6 @@ privacy-works.tk, 1 privacy.ac.cn, 1 privacy.ax, 1 privacy.gov.ph, 1 -privacybydesign.foundation, 1 privacycentermqt.com, 1 privacychick.com, 1 privacychick.io, 1 @@ -117847,13 +118256,14 @@ privacyguides.org, 1 privacyinternational.org, 1 privacymanatee.com, 1 privacynator.eu, 1 -privacypro.io, 1 +privacynow.eu, 1 privacyredirect.com, 1 privacysavvy.com, 1 privacyscore.org, 1 privacysecuritybrainiacs.com, 1 privacystatement.tk, 1 privacysvcs.net, 1 +privacytrust.sg, 1 privacyweek.at, 1 privacyweek.de, 1 privacyweek.eu, 1 @@ -117880,10 +118290,10 @@ privatecamsites.com, 1 privatecapsecurity.org, 1 privatedata.tk, 1 privatedns.uk, 1 -privatedrive.co, 1 privateger.me, 1 privategiant.com, 1 privatehd.to, 1 +privatehospital.com.ua, 1 privatehost.uk, 1 privateideas.de, 1 privateinvestigatoredu.org, 1 @@ -117902,16 +118312,17 @@ privatespace.uk, 1 privatetrainingonline.se, 1 privateuploader.com, 1 privatevpn.com, 1 -privatmegleren-match.no, 1 +privatmeet.com, 1 privatstunden.express, 1 privc.io, 1 +privcloud.cc, 1 privcloud.org, 1 privcom.net, 1 +privea.fr, 1 priveadressen.tk, 1 privelust.nl, 1 priverify.com, 1 privilegevisa.fr, 1 -privlabs.io, 1 privo.com, 1 privod-okna.ru, 1 privorot.cf, 1 @@ -117919,7 +118330,7 @@ privtell.com, 1 privw.com, 1 privy-staging.com, 1 privy.com, 0 -privylabs.com, 0 +privylabs.com, 1 prix-carburants-info.fr, 1 prix-carburants.gouv.fr, 1 prixaurorawards.ca, 1 @@ -117936,9 +118347,9 @@ prizecheck.ru, 1 prizecode.ru, 1 prizehometickets.com.au, 1 prizelink.com.au, 1 -prizelock.ca, 1 prizkod.ru, 1 prizrak-v-dospehah.ga, 1 +prizzlys.com, 1 prjktruby.com, 0 prkn.je, 1 prlved.co.uk, 1 @@ -117968,7 +118379,6 @@ pro-lq.ro, 1 pro-marienburg.de, 1 pro-mile.pl, 1 pro-moed.nl, 1 -pro-patria.eu, 1 pro-photo.fr, 1 pro-rachat-auto.fr, 1 pro-server.tk, 1 @@ -117985,12 +118395,12 @@ pro8-sfets.net, 1 pro98.nl, 1 proacousticsusa.com, 1 proact-it.co.uk, 1 +proactive.run, 1 proactivenews.ml, 1 proactivsports.com, 1 proactivsports.net, 1 proadvanced.com, 1 proadvisorcoach.com, 0 -proaktiv.io, 1 proalist.com, 1 proalter.ch, 1 proambt.nl, 0 @@ -118006,6 +118416,7 @@ probateandplanning.com, 1 probationforms.com, 1 probationnotes.com, 1 probely.com, 1 +probiancanarias.com, 1 probiller.com, 1 probinarin.ga, 1 probioticnacistila.si, 1 @@ -118023,8 +118434,8 @@ probonomd.org, 1 probonus.tk, 1 probooks.gq, 1 probrandlock.ca, 1 +probrewer.com, 1 proc-int-cartogr-assoc.net, 1 -procad.ie, 1 procalc.be, 0 procanvasser.com, 1 procarmanuals.com, 1 @@ -118036,7 +118447,6 @@ procens.us, 0 procert.ch, 0 procesadorafenix.com.mx, 1 procesio.com, 1 -process.st, 1 processesinmotion.com, 1 processevolution.com.au, 1 processtec.com.br, 1 @@ -118056,25 +118466,21 @@ procountor.se, 1 procountorsolo.com, 1 procrastinatingengineer.uk, 1 procrastinationland.com, 1 +procreditbank.com.al, 1 proctor.ml, 1 proctorauth.com, 1 proctorial.cf, 1 proctorio.com, 1 proctorio.net, 1 -proculair.com, 1 -proculair.nl, 1 -proculaircontent.com, 1 -proculairworkers.com, 1 procurant.com, 1 procurement.moscow, 0 procurs.us, 1 procursus.social, 1 +procurx.pt, 1 prod-bp-geotab-api.azurewebsites.net, 1 prod-vigl-www-master.azurewebsites.net, 1 prodapt.com, 1 -prodato.cl, 1 prodemos.nl, 1 -prodentim101-us.com, 1 prodesigntools.com, 1 prodesk.bg, 1 prodiadigital.com, 1 @@ -118089,6 +118495,7 @@ prodpo.com, 1 produc.ro, 1 producent-sanek.pl, 1 producentbalustrad.pl, 1 +producentparapetow.pl, 1 producersnational.com, 1 producertools.io, 1 producerwereld.nl, 1 @@ -118096,16 +118503,15 @@ productbarcodes.com, 1 productboard.com, 0 productfetcher.com, 1 productfurniture.ga, 1 +production.vn, 0 productionscime.com, 1 productiv.com, 1 -productive.io, 0 +productive.io, 1 productiveplastics.com, 1 productosquimicosrd.com, 1 productpeo.pl, 1 -productpreneurmarketing.com, 1 products-for-health.tk, 1 products4more.at, 1 -productsandfeatures.com, 1 productupdates.org, 1 produform.it, 1 produits-dantan.com, 1 @@ -118118,6 +118524,7 @@ proefexamenbvca.nl, 1 proefexamensvhsocialehygiene.nl, 1 proeflokaalbakker.nl, 1 proefteksten.nl, 0 +proekt.moscow, 1 proekt.tk, 1 proelectro.pro, 1 proemployeeprotection.com, 1 @@ -118130,14 +118537,11 @@ prof-dr-waldowski.de, 1 prof-toplivo.ru, 1 prof-waldowski.de, 1 prof.lv, 1 -profar.cl, 1 profarea.ru, 1 +profautoservice.pl, 1 profbigbang.ru, 1 profbioresearch.ga, 1 -profboecker.de, 1 profboecker.eu, 0 -profcaju.com, 1 -profcaju.com.br, 1 profchristophergoh.com.sg, 1 profdst.ru, 1 profection.biz, 1 @@ -118177,9 +118581,11 @@ profiles.eco, 1 profiles.google.com, 1 profiletree.com, 1 profilewatcher.ga, 1 +profilfueller.eu, 1 profilib.com, 1 profilib.net, 1 profilib.top, 1 +profilmedecin.fr, 1 profincognito.me, 1 profinetz.de, 1 profinvestment.com, 1 @@ -118196,6 +118602,7 @@ profitmiracle.tk, 1 profitsunraveled.com, 1 profitwhales.com, 1 profitwithpurposepodcast.com, 1 +profix.computer, 1 profmatheus.com, 1 profmetod.com, 1 profondeville-sharks.be, 1 @@ -118222,7 +118629,6 @@ progarr.com, 1 progas-diva.de, 1 progas.de, 1 progaudio.be, 1 -progenaisolutions.com, 1 progenda.be, 1 proger.ga, 1 proger.ml, 1 @@ -118230,6 +118636,7 @@ progeste.pt, 1 progettodighe.it, 1 progettograjau.com, 1 progettolegalita.it, 1 +progettonazionale.it, 0 progezi.com, 1 progg.no, 1 proggersession.com, 1 @@ -118243,7 +118650,6 @@ progon.cf, 1 program-and.work, 1 programaarista.com, 1 programador-web-freelance.es, 1 -programadoresdepre.com.br, 1 programagetit.com.br, 1 programagrowup.com.br, 1 programalidera.com.br, 1 @@ -118272,6 +118678,7 @@ progresivoptic.ro, 1 progresja.com, 1 progress-linux.org, 1 progress.photos, 1 +progressive.web.za, 1 progressivecfo.co.nz, 1 progressivedie.net, 1 progressivestreetdance.tk, 1 @@ -118283,6 +118690,7 @@ progresswww.nl, 1 progroep.nl, 1 progtime.net, 1 progweb.it, 1 +prohashing.com, 1 proheadshots.uk, 1 prohelpers.tk, 1 prohibition.tk, 1 @@ -118298,9 +118706,9 @@ project-alice.io, 1 project-forum.tk, 1 project-haystack.org, 1 project-ice.org, 1 +project-merlin.co.uk, 1 project-novis.org, 1 project-one.co.jp, 1 -project-pandora.com, 1 project-rune.tech, 1 project-tamriel.com, 1 project-trans.org, 1 @@ -118308,7 +118716,6 @@ project.ac.cn, 1 project1service.com, 1 project25.org, 1 project86fashion.com, 1 -projectai-r.tech, 1 projectalias.com, 1 projectborealisgitlab.site, 1 projectbuild.tk, 1 @@ -118342,7 +118749,6 @@ projectobs.com, 1 projectplacebo.ca, 1 projects.nl.eu.org, 1 projectsafechildhood.gov, 1 -projectsafeneighborhoods.gov, 1 projectsapling.info, 1 projectseahorse.org, 1 projectskynet.org, 1 @@ -118356,13 +118762,11 @@ projectveritasaction.com, 0 projectweb.gr, 1 projectxyz.eu, 1 projectzet.tk, 1 -projegez.com, 1 projehocam.com, 1 projekt-allianz.de, 1 projekt-manufaktur.de, 1 projekt-office.ch, 1 projekt-umbriel.de, 1 -projekt-weltherrschaft.de, 1 projekt-wild.tk, 1 projektarbeit-projektplanung.de, 1 projektentwicklung-westfalen.de, 1 @@ -118380,7 +118784,6 @@ prokop.uk, 1 prokuratura.uz, 1 prolens-lankaran.tk, 1 proletaren.se, 1 -prolificzone.com, 1 prolikewoah.com, 1 prolinehardware.ie, 1 prolocofrascarolo.tk, 1 @@ -118390,7 +118793,6 @@ prologicabg.com, 1 prologin.org, 1 prologin.pt, 1 proloyalweb.com, 1 -prom55.ru, 1 promail.co.in, 1 promajna.tk, 1 promaster.bg, 1 @@ -118408,7 +118810,6 @@ promethen.com, 1 prometheus.cf, 1 prometteur.com, 1 promiflash.de, 1 -promin.ua, 1 promina.ai, 1 promisedland.tk, 1 promisesaplus.com, 1 @@ -118435,7 +118836,7 @@ promodoble.com, 1 promods.net, 1 promods.store, 1 promofirstmedia.co.id, 1 -promohulp.nl, 1 +promohulp.nl, 0 promohunt.ru, 0 promokodi.tk, 1 promolife.be, 1 @@ -118459,6 +118860,7 @@ promotor.ro, 1 promove.be, 1 promovendum.nl, 1 promozioni.it, 1 +prompt.icu, 1 promptdig.com, 1 promptwars.io, 1 promuovi.tv, 1 @@ -118466,10 +118868,10 @@ promushroom.com, 1 promwad.com, 0 pron4ik.gq, 1 pronandi.tk, 1 +pronatec.pro.br, 1 pronikoho.cz, 1 pronoundb.org, 1 pronto-intervento-fognature.it, 1 -pronto-vervins.fr, 1 prontointerventofognature.roma.it, 1 prontointerventoimmediato.it, 1 prontolockandkey.com, 1 @@ -118488,13 +118890,11 @@ proofwiki.org, 1 proon.org, 1 proos.nl, 1 prop365.com, 1 -propaganda.love, 1 +propaganda.love, 0 propagandablog.de, 0 propagationtools.com, 1 -propagroup.es, 1 propanesale.cf, 1 propbot.com, 1 -propcashflow.my, 1 propecia.ml, 1 propelate.com, 1 propeld.com.au, 1 @@ -118511,7 +118911,6 @@ propertiesmiami.com, 1 property-tax.cf, 1 property-tax.ga, 1 property-tax.gq, 1 -property.garden, 1 property.ie, 1 property.tz, 1 propertyauctionaction.co.uk, 1 @@ -118519,7 +118918,9 @@ propertycareincorporated.com, 0 propertycrawl.com, 1 propertydealer.ga, 1 propertyfindercdn.com, 1 +propertyfurniture.com, 1 propertygroup.pl, 1 +propertyinspect.com, 1 propertylondon.co.uk, 1 propertymarketplace.com.ng, 1 propertymatch.org.uk, 1 @@ -118540,7 +118941,6 @@ propertyworkshop.com, 1 properwills.com, 1 propfirmdiscount.com, 1 prophetdesign.ch, 1 -proplandrealtor.com, 1 propmark.com.br, 1 propolisturkiye.tk, 1 proporcer.tk, 1 @@ -118549,12 +118949,11 @@ propranolol.cf, 1 propranololgeneric.ml, 1 proprietairesmaisons.fr, 1 propshub.com, 1 -propublica.org, 1 propulc.com, 1 proressources.ca, 1 proris.com, 0 prorodeohalloffame.com, 1 -prosafilosofica.com.br, 0 +prosafilosofica.com.br, 1 prosamineira.com.br, 1 prosantena.it, 1 proscore-vr2005-1plc.de, 1 @@ -118586,8 +118985,6 @@ prospernwt.ca, 1 prosperoarts.com.au, 1 prosperpeoria.com, 1 prosperstack.com, 1 -prosperx.co.uk, 1 -prosperxaccountants.co.uk, 1 prospo.co, 1 prosportovani.cz, 1 prostaffplumbing.com, 1 @@ -118617,7 +119014,6 @@ prosurf.com.hr, 1 prosurveillancegear.com, 1 prosvet.tk, 1 prosveta1901.tk, 1 -prosvirninvlad.me, 1 protanki.ml, 1 protanki.tk, 1 protapnews.tk, 1 @@ -118628,11 +119024,13 @@ proteccaocivil.net, 1 proteccaocivil.org, 1 protecciondelconsumidor.gov, 1 protecdata.ch, 1 +proteces.ru, 1 protecht.com.au, 1 protechtgroup.com, 1 protectapack.com.au, 1 protectasecurity.pe, 1 protected-forms.com, 1 +protectem.de, 1 protection-plexi.com, 1 protection-plexi.fr, 1 protection.ga, 1 @@ -118642,13 +119040,11 @@ protectoraircare.com.au, 1 protectsaladokids.org, 1 protectwrap.ml, 1 protege.moi, 1 -proteinreport.org, 0 +proteinreport.org, 1 protek.si, 1 protek.tk, 1 proteka.com.tr, 1 protekpainters.com, 1 -proteqc.com, 1 -proteqc.net, 1 protesthongkong.com, 1 protestoquiteagora.com.br, 1 protetorsunpro.com.br, 1 @@ -118669,9 +119065,9 @@ protogrid.com, 1 protok.tk, 1 proton.ch, 1 proton.me, 1 -protonbg.bg, 1 protonmail.ch, 1 protonmail.com, 1 +protonpix.com, 1 protonvpn.com, 1 protopia.ai, 1 protorg-msk.ru, 1 @@ -118695,7 +119091,7 @@ provak.rs, 1 prove-uru.co.uk, 1 prove.com, 1 prove.no, 1 -proveai.com, 1 +provenbyyullia.com, 1 provence-appartements.com, 0 provent.io, 1 provera10mg.tk, 1 @@ -118719,7 +119115,6 @@ provident1031.com, 1 providenthousing.com, 1 providential.be, 1 providerlijst.ml, 1 -providesys.cl, 1 providmedical.com.ua, 1 provigis.com, 0 provincialrubber.co.uk, 1 @@ -118732,9 +119127,10 @@ provisionevents.co.uk, 1 provisionircd.tk, 1 provlas.se, 1 provo.gov, 1 +proweb-design.no, 0 prowebservices.ca, 1 -prowechsel.de, 1 prowi.se, 1 +prowindow.sk, 1 prowise.com, 1 prowise.me, 1 prowoodthai.com, 1 @@ -118742,7 +119138,6 @@ prowpcare.com, 1 prowrestlingevents.tk, 1 prowrestlingsheet.com, 1 proxaccess.com, 1 -proxaiqc.com, 1 proxar.co.uk, 1 proxidize.com, 1 proxiel.com, 1 @@ -118766,14 +119161,15 @@ proxylink.fr, 1 proxylink.pro, 1 proxymonitor.org, 1 proxytool.cf, 1 -proxytracer.com, 1 proyectodia.com.mx, 1 proyectomca.es, 1 proyectosaludecuador.org, 1 proyectosinelec.com, 1 proyectostep.tk, 1 prozac20mg.cf, 1 +prozapchast24.ru, 1 prozesswunder.com, 1 +prozhedownload.com, 1 prozorlivec.tk, 1 prpbt.io, 1 prpferrara.it, 1 @@ -118783,9 +119179,9 @@ prpr.cat, 1 prpr.icu, 1 prpr.rip, 1 prpr.win, 1 -prpzy.com, 1 prrams.com, 1 prrefrigeration.com.au, 1 +prsbtdc.org, 1 prsg.tk, 1 prsnlafk.com, 1 prsstore.com.br, 1 @@ -118796,13 +119192,13 @@ pru.hk, 1 pruchovi.tk, 1 prudenceandthecrow.com, 1 prudential.com.sg, 1 +prudentialzenith.com, 1 pruebapg.cl, 1 pruebasrapidasdrogas.com, 1 pruem.software, 1 pruijn-overheidsadvies.nl, 1 pruma.com.br, 1 pruna.org, 1 -prusa.net, 1 prushka.gq, 1 prushka.ml, 1 prushka.tk, 1 @@ -118811,6 +119207,7 @@ pruvo.net, 1 prvaboja.co.rs, 1 prvnirodinna.cz, 1 prwid.gov, 1 +pry.co, 1 pryan.org, 1 prylarprylar.se, 1 prytkov.com, 1 @@ -118864,6 +119261,7 @@ psdiving.com, 1 psdpt-tpfd.gc.ca, 1 psdreams.com, 1 psdsuc.com, 1 +pseek.com, 1 psemc.com, 1 pseta.ru, 1 psevdonim.ga, 1 @@ -118875,14 +119273,18 @@ pshar.ma, 1 pshul.com, 1 pshweb.tk, 1 psi-tv.tk, 1 +psi.doctor, 1 +psi.gay, 1 psicanalista.milano.it, 1 psicoblog.tk, 1 psicoeduca.com.br, 1 psicoexpansao.com.br, 1 psicologa-chus-campo-molina.com, 0 +psicologaigualada.es, 1 psicologajanainapresotto.com.br, 1 psicologamarianaortiz.com, 1 psicologatatianabayona.com, 1 +psicologia.gay, 1 psicologiaparatodos.com.mx, 1 psicologias.rio.br, 1 psicologo-especialista-barcelona.com, 1 @@ -118890,6 +119292,7 @@ psicologo.vip, 1 psicomagia.com.br, 1 psicometricas.mx, 1 psigma.co, 1 +psihocentrala.com, 1 psiholognatalija.rs, 1 psihologonline.tk, 1 psihology.gq, 1 @@ -118897,7 +119300,6 @@ psihology.tk, 1 psihoterapevt1.by, 1 psihotest.tk, 1 psii.global, 0 -psikoklinik.com, 1 psikokoro.com, 1 psikoucka.cz, 1 psilly.com, 0 @@ -118931,7 +119333,6 @@ psncardplus.nl, 1 psncardplus.se, 1 psncuc.gov, 1 pso2.icu, 1 -psob.gov, 1 psochecker.com, 1 pson.ninja, 1 psono.pw, 1 @@ -118953,7 +119354,6 @@ psprices.com, 1 psprsaz.gov, 1 psq.com.au, 1 psreturn.com.au, 1 -pssbau.hu, 1 pssgcsim.org, 1 pssschristchurch.tk, 1 pst.moe, 1 @@ -118967,9 +119367,12 @@ psv-herford-badminton.de, 1 psw-consulting.de, 1 psw-group.de, 1 psw-training.de, 1 +psy-web.fr, 1 psyart.tk, 1 psycenter.tk, 1 +psych2go.net, 1 psychcare.cz, 1 +psychcaremd.com, 1 psychedelia.com, 1 psychedelia.wiki, 1 psycheteelia.com, 1 @@ -118984,11 +119387,9 @@ psychicfairnetwork.ml, 1 psychische-systeme.de, 1 psycho-familles.com, 1 psycho-lobby.fr, 1 -psycho-logisch-koch.de, 1 psycho-news.tk, 1 psycho.space, 1 psychoactive.com, 1 -psychoactive.wiki, 1 psychoco.net, 1 psychologbruksela.be, 1 psychologi.cf, 1 @@ -119026,16 +119427,15 @@ psychotechnique.lu, 1 psychotechniquetest.fr, 1 psychotel.tk, 1 psychoterapia-skuteczna.pl, 1 -psychoterapia.com, 1 psychotest.gq, 1 psychotestprep.com, 1 psychotherapie-ahlmeyer.de, 1 -psychotherapie-hensiek.de, 1 +psychotherapie-kp.de, 0 psychotherapie-leipzig.eu, 1 +psychotherapie-lichterfelde.berlin, 1 psychotherapie1220wien.at, 0 psychotiq.tk, 1 psychotropical.com, 1 -psychpedia.com, 1 psychpsyo.com, 1 psychservice.com.au, 1 psychvarsity.com, 1 @@ -119131,6 +119531,7 @@ puac.de, 1 pub-online.ro, 1 pubclub.com, 0 pubertytalk.com, 1 +pubkgroup.com, 1 publanda.nl, 1 public-g.de, 1 public-measures.com, 1 @@ -119144,10 +119545,10 @@ publicagent.com, 1 publicamenucards.com, 1 publicare-gmbh.de, 1 publiccarauctionscalifornia.com, 1 +publicdatafiles.com, 1 publicdatalibrary.org, 1 publicdelivery.org, 1 publicdomainartwork.com, 0 -publicgmrs.org, 1 publichealth.cf, 1 publichealth.gq, 1 publichealthdegrees.org, 1 @@ -119187,6 +119588,7 @@ pubsavoy.tk, 1 puccakir.tk, 1 puckcreations.com, 1 pucogid.ga, 1 +pucssa.org, 0 puddin.ml, 1 pudding.tk, 1 puddingtheatre.tk, 1 @@ -119203,15 +119605,12 @@ puer8.cn, 1 puercovalleyfireaz.gov, 1 puertocadiz.com, 1 puertodramaturgia.tk, 1 -puertomalaga.com, 1 puestifiestas.mx, 1 -puffball.io, 1 puffinvapes.co, 1 puffverse.pro, 1 puffyan.us, 1 pugachev.ml, 1 puggan.se, 1 -pugik.pl, 1 pugscore.com, 1 pugstime.com, 1 puhe.se, 1 @@ -119225,6 +119624,7 @@ pujcky.cz, 1 pujd3.gq, 1 puka.cc, 1 puka.edu.ee, 1 +pukfalkenberg.dk, 1 pul-ingenieure.de, 1 pula-site.tk, 1 pulci.it, 1 @@ -119256,7 +119656,6 @@ pulpproject.org, 1 pulsadanvoucher.tk, 1 pulsagolden.tk, 1 pulsedive.com, 1 -pulseia.ch, 1 pulselessflow.com, 1 pulsenetwork.com, 1 pulser.stream, 1 @@ -119266,13 +119665,11 @@ pulsnitzer-lebkuchen.shop, 0 pulsnitzer-pfefferkuchen.shop, 0 pulsr.ml, 1 pulsus.mobi, 1 -pulviscard.it, 1 pulvislab.it, 1 pumarin.tk, 1 pumascan.com, 1 pumasecurity.io, 1 pumin.ml, 1 -pumiroots.com, 1 pump19.eu, 1 pumpen-blum.de, 1 pumuntincu.eu.org, 1 @@ -119282,8 +119679,11 @@ punchadragon.com, 1 punchlinetheatre.co.uk, 1 punchlinetheatre.com, 1 punchlist.com, 1 +punchlistprosdfw.com, 1 punctually.gq, 1 pundak.games, 1 +pundeez.com, 0 +pundix.com, 1 puneindia.tk, 1 punematka.com, 1 pungatv.ml, 1 @@ -119309,7 +119709,7 @@ puntacananetwork.com, 1 puntacanapizza.com, 1 puntacanavapor.com, 1 puntaires.com, 1 -puntaprop.com, 0 +puntaprop.com, 1 puntcunts.com, 1 puntocroce.tk, 1 puntoestadodemexico.com, 1 @@ -119327,12 +119727,11 @@ pupok.gq, 1 puppiza.com, 1 puppo.space, 1 puppy.actor, 1 -puppyanddogcare.com, 1 puppyfinder.com, 1 puppyfish.com, 1 puppygirl.ceo, 1 -puppygirl.tokyo, 1 puppygock.ceo, 1 +puppyirl.gay, 1 puppykennel.tk, 1 puppylove.hu, 1 puppyporch.com, 1 @@ -119359,7 +119758,6 @@ pure-auto.eu, 1 pure-gmbh.com, 1 pure-paste.tk, 1 pure2life.nl, 0 -pureandroid.com, 1 purear.com.br, 1 pureart.co.jp, 1 pureart.jp, 1 @@ -119367,22 +119765,24 @@ pureatmospherellc.com, 1 pureaudioplayer.ru, 1 pureblissdental.com.au, 1 purebuttons.com, 1 +pureceli.com, 1 purecodedigital.com, 1 puredayshop.com.tw, 1 puredigital.nl, 1 puredisinfecting.com, 1 puredisinfection.com, 1 +puredns.org, 1 purefarminggame.com, 1 purefoot.jp, 1 pureholisticwellness.com, 1 purekrea.com, 1 +pureleverage.com, 1 purelife.photography, 1 pureliferx.com, 1 purelovecoaching.fi, 1 purelymail.com, 1 purelypestcontrol.com, 1 puremosquito.com, 1 -purenote.live, 1 purepestandlawn.com, 0 pureromance.com, 1 puresanitization.com, 1 @@ -119391,18 +119791,17 @@ puresuitepdf.com, 1 puretermite.com, 1 puretone.pro, 1 pureunpay.com, 1 -pureuspeptide.com, 1 purevicky.com, 1 purewaterguide.net, 1 purewealth.cloud, 1 purfaction.nl, 1 purga.news, 1 +purikore.com, 1 purinaexpress.com, 0 puritanas.tk, 1 puritas.lk, 1 purits.de, 1 purityclothing.co.uk, 1 -puritydairy.com, 1 purkupalvelut.fi, 1 puroprazer.pt, 1 purovive.tk, 1 @@ -119422,6 +119821,7 @@ purplestar.com, 1 purplestar.mobi, 1 purpletter.tk, 1 purplez.pw, 1 +purplscientific.com, 1 purpspc.com, 1 purreview.cf, 1 purrfectboudoir.com, 0 @@ -119454,8 +119854,11 @@ pusatlicense.com, 1 pusatlojistik.com, 1 pusatrail.com, 1 puschkin.ga, 1 +pusehusetmalvik.no, 1 +pusera.com, 1 puset.tk, 1 push-free.com, 1 +push-pull.uk, 1 pusha.tk, 1 pushmetrics.io, 1 pushoflove.com, 1 @@ -119466,6 +119869,7 @@ pushponline.com, 0 pushthebutton.tk, 1 pushy.tg, 1 pusichatka.ddns.net, 1 +pusonja.com, 1 pusra.ga, 1 pussplay.com, 1 pussycat.ml, 1 @@ -119491,6 +119895,7 @@ putlire.ga, 1 putman-it.nl, 1 putnam-fl.gov, 1 putnam-ga.gov, 1 +putnamcollision.com, 1 putnamcountywv.gov, 1 putnamil.gov, 1 putnamvalley.gov, 1 @@ -119498,7 +119903,6 @@ putney.io, 1 putnik.tk, 1 putokaz.eu, 1 putomani.rs, 1 -putrawijayatours.com, 1 putre.io, 1 putrock.be, 1 putstrategii.ru, 0 @@ -119508,15 +119912,14 @@ puttymonos.work, 1 putzigdesign.de, 1 puurzeewolde.nl, 1 puuur-interiors.nl, 1 -puvus.org, 1 puxlit.net, 1 puyallupnissanparts.com, 1 +puyblanc.info, 1 puzi.nl, 1 puzz.gg, 1 puzzle-welt.ch, 1 puzzle2048.net, 1 puzzle2048.org, 1 -puzzlepanic.com, 1 puzzlepiehouse.com, 1 puzzlepoint.ch, 1 puzzles-to-print.com, 1 @@ -119528,12 +119931,12 @@ pvamg.org, 1 pvao.gov.ph, 0 pvawa.com.au, 1 pvda.nl, 1 -pvdesignusa.com, 1 pvdplanet.tk, 1 pvebuilds.xyz, 1 pver.nl, 1 pvgvethospital.co.uk, 1 pvh-membrany.ru, 1 +pvhe.pl, 1 pvideo.cz, 1 pvlrmnnk.com, 1 pvp-factions.fr, 1 @@ -119554,7 +119957,6 @@ pvsite.ddns.net, 1 pvsp.me, 1 pvtx.gov, 1 pvv-vermietung.de, 1 -pvxpartners.com, 1 pvz.tools, 1 pvzge.com, 1 pw.org, 1 @@ -119564,10 +119966,12 @@ pwanotes.ga, 1 pwaresume.com, 1 pwbaccountants.com, 1 pwclegal.de, 1 +pwconserve.org, 1 pwcva.gov, 1 pwd.az, 1 pwd.hu, 1 pwd.vc, 1 +pwddelhi.gov.in, 1 pwdsafe.com, 0 pwe.vision, 1 pwg-see.de, 1 @@ -119578,11 +119982,11 @@ pwneytelecom.com, 1 pwoss.xyz, 1 pwr990ay.pl, 1 pwskills.com, 1 +pwsplash.com, 1 pwss.gov.au, 0 pwud.ga, 1 pwwpcd.us, 1 pwwsd.org, 1 -pwxcontracting.com, 1 px.works, 1 pxagency.fr, 1 pxc-coding.com, 1 @@ -119594,7 +119998,6 @@ pxl.cl, 1 pxl.st, 1 pxld.sh, 1 pxnetwork.fr, 1 -pxturf.com, 1 pxtwitter.com, 1 pxventures.com.au, 1 pxx.io, 1 @@ -119649,6 +120052,7 @@ python.org, 0 pythonatrix.com, 1 pythonblog.tk, 1 pythondiscord.com, 1 +pythonfactory.io, 1 pythonhosted.org, 1 pythonmorsels.com, 1 pytodon.com, 1 @@ -119660,10 +120064,10 @@ pyxisfreelance.au, 1 pyxisfreelance.co, 1 pyxisfreelance.com.au, 1 pyxyp.com, 1 +pzasa.pl, 1 pzc.nl, 1 pzmk.org.pl, 1 pzsearch.nl, 1 -pztools.com, 1 pzu-masa.pl, 1 pzz.by, 1 q-and-a.tk, 1 @@ -119676,8 +120080,6 @@ q-matrix.de, 1 q-sc.com, 1 q.cg, 1 q.gg, 1 -q.ls, 1 -q.lu, 1 q.to, 1 q.wtf, 1 q00228.com, 1 @@ -119687,7 +120089,9 @@ q1q2q3.tk, 1 q1z.net, 1 q2a.com, 1 q3.is, 1 +q39.org, 1 q3cdn.net, 1 +q3jlzwq.com, 1 q5118.com, 1 q5197.co, 1 q6729.co, 1 @@ -119710,6 +120114,7 @@ qabalah.jp, 1 qabel.de, 1 qac.gov, 1 qaconstrucciones.com, 1 +qadmium.com, 1 qadmium.tk, 1 qadrishattari.tk, 1 qaina.net, 1 @@ -119726,25 +120131,23 @@ qaq.su, 1 qarto.com, 1 qashio.com, 1 qask.ml, 1 -qasmaintarget.pt, 1 qasphere.com, 1 qassay.com, 1 -qataridiareg.com, 1 qatartimes.tk, 1 qatesol.org.au, 1 qauk.org, 1 -qaware.de, 0 +qaware.de, 1 qaz.cloud, 1 qbasic.tk, 1 qbasicsite.tk, 1 qbcorescripts.com, 1 -qbh.pl, 1 qbiltrade.com, 1 qbits.li, 1 qbojj.eu, 1 qbrix.dk, 1 qbstores.com, 1 qbug.cf, 1 +qburst.com, 1 qc-ikonwork.com, 1 qc.search.yahoo.com, 0 qcash.tw, 1 @@ -119754,15 +120157,15 @@ qccareerschool.com, 0 qcdesignschool.com, 0 qcdoll.com, 1 qcert.org, 1 +qcinteriors.in, 1 qclean.com.au, 1 qcnet.com, 1 qconline.com, 1 qconnan-photos.fr, 1 -qcoresecure.com, 1 qcstudentcenter.com, 0 qcstyleacademy.com, 0 qctimes.com, 1 -qcuarto.com.py, 0 +qcuarto.com.py, 1 qdabogados.com, 1 qdcc.cn, 1 qde.com, 1 @@ -119773,8 +120176,10 @@ qde.social, 1 qdecdn.com, 1 qdep.net, 1 qdm.tw, 1 +qdmnotizie.it, 0 qdolor.com, 1 qdon.space, 1 +qdqlh.cn, 1 qdrat.ml, 1 qdrcst.com, 1 qdstationary.co.uk, 1 @@ -119792,8 +120197,8 @@ qewc.com, 1 qfes.qld.gov.au, 1 qfig.au, 1 qfixinfo.com, 1 +qfjvv7f.xyz, 1 qgblog.org, 0 -qgdesavenjoueurs.fr, 1 qgiv.com, 1 qgtv.com, 1 qgushi.com, 1 @@ -119817,7 +120222,7 @@ qiannews.net, 0 qianqiao.me, 1 qiantuwenlu.com, 1 qiber.org, 1 -qibgroup.com.au, 0 +qibgroup.com.au, 1 qicoder.com, 1 qidn.ie, 1 qifu.me, 1 @@ -119833,10 +120238,12 @@ qin.moe, 1 qincai.xyz, 1 qingan.ca, 1 qingchuan.cc, 1 +qingjie.com, 1 qingkong.net, 1 qinglingyu.cn, 1 qingly.me, 1 qingniantuzhai.com, 1 +qingpei.me, 1 qingran.net, 1 qingshanasd.cn, 1 qinlili.bid, 1 @@ -119850,7 +120257,7 @@ qisda.com.tw, 1 qisda.com.vn, 1 qisheiosxz.com, 1 qitano.com, 1 -qitmeir.com, 1 +qitarabutrans.com, 0 qiu.moe, 0 qiuwenbaike.cn, 1 qivonline.pt, 1 @@ -119858,7 +120265,6 @@ qiwi.be, 1 qiwuxs.com, 1 qixi.biz, 0 qiyan.email, 0 -qjl.pl, 1 qkart.net, 1 qkek.tk, 1 qkka.org, 1 @@ -119871,11 +120277,11 @@ qlbs.com, 1 qlc.co.th, 1 qlcvea.com, 1 qlcvea.it, 1 -qld.kr, 1 qldducati.club, 1 qldformulaford.org, 1 qldnetwork.com.au, 1 qlikmatrix.com, 1 +qliving.com, 1 qlmn.vn, 1 qlock.mywire.org, 1 qloudora.com, 1 @@ -119900,13 +120306,14 @@ qnap.com.tw, 1 qnap.de, 1 qnap.hk, 1 qnap.tw, 1 +qnected.nl, 1 qnixon.com, 1 qnotafm.com.co, 1 qnq.moe, 1 qnsgmd.com, 1 qnulabs.com, 1 qofpeacechurch.org, 1 -qolab.ai, 0 +qolab.ai, 1 qombo.nl, 1 qoml.net, 1 qonaro.com, 1 @@ -119919,6 +120326,7 @@ qosqo.tk, 1 qotw.net, 1 qover.com, 1 qoyyim.com, 1 +qozido.de, 1 qp666d.com, 0 qpai.net, 1 qpaypro.com, 1 @@ -119942,8 +120350,8 @@ qq6957.co, 1 qq885.com, 0 qq9297.co, 1 qq9728.co, 1 -qqbb.org, 1 qqiao.me, 1 +qqmz.vip, 1 qqq6.com, 0 qqq67.com, 1 qqr.es, 1 @@ -119956,13 +120364,14 @@ qr.sb, 0 qr1.at, 1 qraa.qld.gov.au, 1 qrara.net, 1 +qrbird.com, 1 qrcoba.org, 1 qrcodedynamic.com, 1 qrcodes.tools, 1 qrcodewiz.com, 1 qrcontagion.com, 0 +qrish.live, 1 qristianuli.com, 0 -qriveo.com, 1 qrlfinancial.com, 0 qrma.com.au, 1 qrmagic.com, 1 @@ -119988,8 +120397,8 @@ qstpcj25427.com, 1 qt.ax, 1 qtacairsoft.com, 1 qtakehd.com, 1 -qtdrop.com, 1 qthotels.com, 1 +qtn.net, 1 qto.com, 1 qto.com.hk, 1 qto.net, 1 @@ -119998,7 +120407,6 @@ qtocdn.com, 1 qtpass.org, 1 qtpower.co.uk, 1 qtpower.org, 1 -qtr5.com, 1 qtspace.cn, 1 qttransformation.com, 1 qtv.ge, 1 @@ -120032,7 +120440,8 @@ quaketips.ga, 1 quakeworld.tk, 1 qualbe.com, 1 qualebroker.com, 1 -qualiacomputers.com, 0 +qualescegliere.it, 1 +qualiacomputers.com, 1 qualifio.com, 1 qualishomes.co.uk, 1 qualitahub.com, 1 @@ -120071,6 +120480,7 @@ quall.com, 1 qualli.com, 1 qualtrics.com, 1 qualyven.com, 1 +quanmei.com, 1 quanquan.space, 1 quantability.net, 1 quantaloupe.tech, 1 @@ -120095,14 +120505,13 @@ quantora.nl, 1 quantoras.com, 0 quantris.net, 1 quantrix.com, 1 -quanttechx.com, 1 quanttydesignweb.com.br, 1 quantuin.com, 1 quantuin.dk, 1 quantum-evolution.jp, 1 quantum-gebaeudereinigung.de, 1 quantum-lviv.pp.ua, 1 -quantum.games, 0 +quantum.games, 1 quantum.gdn, 1 quantum.gl, 1 quantum.gov, 1 @@ -120164,6 +120573,7 @@ quatuor-courtage.fr, 1 quaxio.com, 1 quay.net, 1 quayconsultingllc.com, 1 +quaydental.ie, 0 qubed.agency, 1 qubeit.co, 1 qubes-os.org, 1 @@ -120171,10 +120581,10 @@ qubhockey.tk, 1 qubit.capital, 1 qubitoss.com, 1 qubitsandbytes.co.uk, 1 -qubotondo.it, 1 qubyte.codes, 1 quchronicle.com, 1 -qudini.com, 0 +qudini.com, 1 +quebec.ca, 1 quebeccat.com, 1 quebeccats.com, 1 quebecdogs.com, 1 @@ -120195,6 +120605,7 @@ queenofvogue.com, 1 queenondvd.tk, 1 queenparis-porn.com, 1 queenrocks.tk, 1 +queens-games.com, 1 queensafaris.com, 1 queensbotanical.org, 1 queensfactory.it, 1 @@ -120207,10 +120618,10 @@ queenstyles.tk, 1 queentitine.com, 1 queenworld.tk, 1 queer-augsburg.de, 1 +queer.party, 1 queer.pl, 1 queercinema.ch, 0 queerfest.tk, 1 -queerfotografie.nl, 1 queerlelystad.nl, 1 queerlinq.com, 1 queermerk.com, 1 @@ -120224,6 +120635,7 @@ queerwerk.com, 1 queerwerk.eu, 1 queerwerk.nl, 1 queirozmiotto.adv.br, 1 +queirozmiotto.com.br, 1 quel-dj.com, 1 quelbusinesschoisir.com, 1 quellarotondasembrafi.ga, 1 @@ -120239,7 +120651,6 @@ quentar.tk, 1 quentin-informatique.fr, 1 quentin-sauvetre.fr, 1 quentinaurat.com, 1 -quentinb.giize.com, 1 quentinchevre.ch, 1 quentingemine.be, 1 quepourlesjuristes.fr, 1 @@ -120250,6 +120661,7 @@ quermes.net, 1 quernon.fr, 0 querocalcular.com.br, 1 query-massage.com, 0 +query.gov.ps, 1 queryguard.net, 1 quesecelebra.info, 1 quessinternational.com, 1 @@ -120274,6 +120686,7 @@ questiii.com, 1 question.cf, 1 questionandanswer.ml, 1 questionyu.com, 0 +questlawoffice.com, 1 questofaidance.tk, 1 questoj.cn, 1 questsocial.it, 1 @@ -120300,11 +120713,9 @@ quick-and-easy.tk, 1 quick-seo.tk, 1 quickbooksguru.com.au, 1 quickboysvrouwen2.nl, 1 -quickcart-pro.com, 1 quickcashcarremovals.com.au, 1 quickcel.tk, 1 quickcrypt.org, 1 -quickcuttreeservice.com, 1 quickdiamond.com, 1 quickelectricity.com, 1 quickerticker.tk, 1 @@ -120323,8 +120734,8 @@ quickref.me, 1 quicksell.co, 1 quicksell.store, 1 quickshops.ga, 1 -quicksit.io, 1 quickstart.co.za, 1 +quicksupplies.us, 1 quicksupply.com, 1 quicksus.com, 1 quicktapstudios.com, 1 @@ -120334,7 +120745,6 @@ quickudpinternetconnections.com, 1 quickvideo.tk, 1 quickyshare.com, 1 quicomo.it, 1 -quics.io, 1 quidax.com, 1 quidlo.com, 1 quieoltre.it, 1 @@ -120368,11 +120778,12 @@ quin.md, 0 quinder.tk, 1 quinmedia.tk, 1 quinnappliances.com, 1 -quinndunlap.com, 1 quinnlabs.com, 0 quinnlawcenters.com, 1 quinnstech.ga, 1 quinpro.nl, 1 +quinta.news, 1 +quintadasmoitas.com, 1 quintadesanamaro.com, 1 quintanadelmonte.tk, 1 quintanilla.tk, 1 @@ -120382,6 +120793,7 @@ quintessa.org, 1 quintobarrio.tk, 1 quintonic.fr, 0 quipcheck.com, 1 +quiq-cdn.com, 1 quiq-frp.com, 1 quiq-in.com, 1 quiq-io.com, 1 @@ -120419,14 +120831,15 @@ quizz.biz, 1 quizzard.ga, 1 quizzard.tk, 1 quizzen.tk, 1 +quizzhit.com, 1 qul.link, 1 qulix.by, 1 qulix.ch, 1 +qumasaitrading.com, 1 qumind.co.uk, 1 qumirezi.tk, 1 qunzi.la, 1 quocdesign.ch, 0 -quoctuanin.vn, 1 quoi.xyz, 1 quoininc.com, 1 quointelligence.eu, 1 @@ -120447,13 +120860,12 @@ quotesofgta.tk, 1 quotev.com, 1 quotidiani.net, 1 quotidianolavoce.it, 1 -quotivo.de, 1 +quovadis-worldtour.it, 1 quovadisaustria.com, 1 quoviz.com, 1 qupom.com.br, 1 quppa.net, 1 quran-archive.org, 1 -quranhikmah.com, 1 qurani.tk, 1 quranite.com, 1 quranpdf.cf, 1 @@ -120465,6 +120877,7 @@ qusi.ml, 1 qussaikhuli.tk, 1 quto.ru, 1 qutrade.io, 1 +quuck.eu, 1 quuck.nl, 1 quuz.org, 1 qv-eherkenning.nl, 1 @@ -120494,6 +120907,7 @@ qwords.com, 1 qwq.icu, 0 qwq2333.top, 1 qwqjsq.com, 1 +qwqjsq.net, 1 qwqjsq8.com, 1 qwqjsq9.com, 1 qwrk.io, 1 @@ -120534,15 +120948,14 @@ r-service.kz, 1 r-t-b.fr, 1 r-t-n.tk, 1 r-term.pl, 1 -r.gl, 1 r.nf, 1 r.pl, 1 r.sb, 1 r.wtf, 1 -r0.fyi, 1 r00tsandwings.com, 1 r0t.co, 1 r102.ch, 1 +r15cookie.com, 1 r17.co.id, 1 r1a.eu, 1 r1ch.net, 1 @@ -120573,6 +120986,7 @@ ra-joergensen.de, 1 ra-studio.ml, 1 ra.vc, 1 ra3y.xyz, 1 +ra6b1t.com, 0 raaddojo.com, 1 raadgiverborsen.com, 1 raadsveld.nl, 1 @@ -120627,11 +121041,14 @@ rabotayte.tk, 1 rabotenkadot.tk, 1 rabynska.eu, 1 racaliz.tk, 1 +racamera.com, 1 racasdecachorro.org, 1 +racco.com.br, 1 raccoltadifferenziata.it, 1 raccoltarifiuti.milano.it, 1 raceandecology.ca, 1 racedrop.tk, 1 +racehall.com, 1 racelandky.gov, 1 racemanager.io, 1 racesimscoring.com, 1 @@ -120640,8 +121057,8 @@ rachaelcorciaphotography.com, 1 rachaelholtphotography.com, 1 rachaelsmaids.com, 1 rachaeltaylor.tk, 1 -rachel-gentit.com, 1 rachelandadamarethebest.com, 1 +rachelcarsoncouncil.org, 1 rachelchen.me, 1 racheldiensthuette.de, 1 rachelmoorelaw.com, 1 @@ -120661,7 +121078,6 @@ racketlonindia.co.in, 1 racketscore.com, 1 racketscore.nl, 1 rackoon.de, 1 -rackrat.net, 1 raclet.co.uk, 1 raconconsulting.co.uk, 1 racontemonhistoire.fr, 1 @@ -120673,9 +121089,6 @@ ract.co, 1 ract.info, 1 ract.net, 1 ract.net.au, 1 -ractergroup.com, 1 -racterlabs.com, 1 -ractermx.com, 1 racti.com.au, 1 racunalo.com, 1 racunovodstvo-prina.si, 1 @@ -120699,9 +121112,9 @@ radarcupon.com.co, 1 radarcupon.com.mx, 1 radarcupon.es, 1 radarcupon.ro, 1 +radardetector.lol, 1 radarerp.net, 1 radarfirst.com, 1 -radarimoveisdeleilao.com.br, 1 radarstationery.com, 0 radartatska.se, 0 radartek.com, 1 @@ -120718,7 +121131,6 @@ raddeluxe.com, 1 radechefonne.it, 1 radegundisfest.de, 1 radekmazar.eu, 1 -radekprusa.net, 1 rader.ninja, 1 radgi.com, 1 radharanikijay.tk, 1 @@ -120727,6 +121139,7 @@ radiadoresalternativos.cl, 1 radiadoressoares.com.br, 1 radial.com, 1 radialplus.tk, 1 +radianceswimwear.com, 1 radiantenergy.tk, 1 radiantwonder.com, 1 radiationtherapy.tk, 1 @@ -120815,6 +121228,7 @@ radiodiagonal.tk, 1 radiodoblen.tk, 1 radiodxguatemala.tk, 1 radioeldoradofm.com.br, 1 +radioelectrodance.fr, 1 radioelectronic.tk, 1 radioenam.tk, 1 radioenergia.tk, 1 @@ -120845,6 +121259,7 @@ radioj.fr, 0 radiojackienorth.tk, 1 radiojeneverstoker.tk, 1 radioklara.org, 1 +radioknop.nl, 1 radiokontakt.tk, 1 radiokukesi.tk, 1 radiolanguages.tk, 1 @@ -120931,11 +121346,13 @@ radiovera.ru, 1 radiovertical.tk, 1 radiovirgendelcarmen.tk, 1 radiovolmax.tk, 1 +radiovulgaris.com, 1 radiowakeup.tk, 1 radioxanadu.tk, 1 radiozetta.tk, 1 radiozilverster.tk, 1 radisnoir.com, 1 +raditool.com, 1 raditool.pl, 1 radium-it.ru, 1 radium.group, 1 @@ -120947,7 +121364,6 @@ radjaternak.com, 1 radlherr.com, 1 radnickapartija.tk, 1 radnicki-nis.tk, 1 -radnoc.com, 1 radoflux.com, 1 radoman.ga, 1 radon.tk, 1 @@ -120957,9 +121373,7 @@ radopsec.net, 1 radopsec.org, 1 radost-crikvenica.hr, 1 radost.digital, 1 -radost.sk, 1 radpath.at, 1 -radpro.ai, 1 radreisetraumtreibstoff.de, 1 radrooster.co.uk, 1 radroute.hamburg, 1 @@ -120973,7 +121387,6 @@ radwebhosting.com, 1 radyabkhodro.net, 1 radyn.com, 1 radyogemisi.com, 1 -radzimowice.pl, 1 raeder-test.azurewebsites.net, 1 raeu.me, 1 raeven.nl, 1 @@ -120995,11 +121408,15 @@ rafinad.io, 1 rafo.tech, 1 rafo.tk, 1 raft.pub, 1 +rafting-japan.com, 1 raftingbali.net, 1 rafvorsselmans.com, 1 rafy.com.br, 1 +rafy.site, 1 rag-deutsche-steinkohle.de, 1 rag.de, 1 +ragadoor.com, 1 +ragasto.nl, 1 ragazzi-music.de, 1 rage-overload.ch, 1 rage4.com, 1 @@ -121011,10 +121428,10 @@ ragingrune.tk, 1 ragingserenity.com, 1 ragnamania.tk, 1 ragnamart.tk, 1 -ragnance.fr, 1 ragnaroktop.com.br, 1 ragnarredbeard.com, 1 ragsnprints.com, 1 +ragstores.com, 1 ragt.ag, 1 ragunda.se, 1 ragundadalen.se, 1 @@ -121042,8 +121459,11 @@ raidensnakesden.net, 1 raidentawork.lt, 1 raiderhacks.com, 1 raidertimes.com, 1 +raidingue.fr, 1 +raidkeeper.com, 1 raidstone.net, 1 raidstone.rocks, 1 +raidtcg.com, 1 raiffeisen-gv.ch, 1 raiffeisen-kosovo.com, 0 raiffeisen.al, 0 @@ -121066,6 +121486,7 @@ railcard.co.uk, 1 railcarrxqa.com, 1 railclub.tk, 1 railfans.ca, 1 +railfeeding.com, 1 railgun.ac, 1 railgun.com.cn, 1 railgun.email, 1 @@ -121076,7 +121497,7 @@ railorama.nl, 1 railpassie.nl, 1 railroadhistory.net, 1 railsafetysystems.com.au, 1 -railserve.com, 0 +railserve.com, 1 railsideworks.com, 1 railsperformance.com.br, 1 railto.cm, 1 @@ -121093,6 +121514,7 @@ railvideo.nl, 1 railway-technology.com, 1 railwayease.com, 1 railwaymen.org, 1 +railworks.net, 1 raimi.shop, 1 raimundoneto.com.br, 1 rain-mag.com, 1 @@ -121111,6 +121533,7 @@ rainbowflowers.co.uk, 0 rainbowheart.com, 1 rainbowinflatables.co.uk, 1 rainbowloompatterns.com, 1 +rainbowmarketing.ca, 1 rainbowmath.tk, 1 rainbowsmoothies.win, 1 rainbowstore.com.au, 0 @@ -121127,6 +121550,7 @@ raincoasttherapy.com, 1 raincoat.systems, 1 rainel.at, 1 rainerstoll.at, 1 +rainfall.ro, 1 rainfocus.com, 1 rainforest.engineering, 1 rainforestfoundation.org, 1 @@ -121141,13 +121565,11 @@ raintreatment.ga, 1 rainuk.com, 1 raipet.no-ip.biz, 1 raipet.spdns.eu, 1 -rais-on.com, 1 raise-educationandwellbeing.co.uk, 1 raisecalculator.com, 1 raisects.co.uk, 1 raisedandrooted.com, 1 raiseeducationtrust.org, 1 -raiseproof.ai, 1 raisetheyouth.co.uk, 1 raiseyoursales.co.uk, 1 raiseyoursales.de, 1 @@ -121178,13 +121600,12 @@ rajkapoordas.com, 1 rajkotupdates.news, 1 rajofestival.tk, 1 rajomon.com, 1 -rajordan.us, 1 +rajpgneet2023.com, 1 rajrajasthani.tk, 1 rajsolankimusic.ga, 1 rajudhoni.ga, 1 rak-business-service.com, 1 rakennuspeli.com, 1 -rakeprofit.com, 1 rakeshkaryana.com, 1 raketa.travel, 1 raketaholst.com.ua, 1 @@ -121206,6 +121627,8 @@ raku.land, 1 rakudo.org, 1 rakugokai.net, 1 rakuvisa.com, 1 +rakweb.com.br, 1 +ralaoui.com, 1 ralaoui.me, 1 raleighadultmedicine.com, 1 raleighboneandjoint.com, 1 @@ -121213,7 +121636,6 @@ raleighinternational.org, 1 raleighmedicalgroup.com, 1 raleighpsych.com, 1 ralfs-zusizone.de, 1 -ralliez.com, 1 rallscountymo.gov, 1 rally-base.com, 1 rally-base.cz, 1 @@ -121223,11 +121645,9 @@ rally-service.ru, 1 rally-vysledky.cz, 1 rallybase.cz, 1 rallybase.eu, 1 -rallybro.com, 1 rallycycling.com, 0 rallyekrumlov.cz, 1 rallyfotosaswin.tk, 1 -rallynavigator.com, 1 rallytrophy.tk, 1 ralphdeal.com, 1 raltha.com, 1 @@ -121272,6 +121692,7 @@ rampeboreal.ca, 1 rampestyuma.com, 1 rampgov.com, 1 ramplaysugente.tk, 1 +ramsay.xyz, 1 ramsayshorsetransport.com, 1 ramsayshorsetransport.com.au, 1 ramsdensplc.com, 1 @@ -121336,6 +121757,7 @@ randomgirlsoncam.com, 1 randomideas.me, 1 randomizer.space, 1 randomkindness.tk, 1 +randomkoalafacts.com, 1 randompasswordgenerator.fun, 1 randomquotesapp.com, 1 randomsearching.ml, 1 @@ -121355,6 +121777,7 @@ randymajors.org, 1 randyrhoads.tk, 1 ranfics.tk, 1 ranfurlychambers.co.nz, 1 +rangacat.com, 1 rangde.in, 1 rangde.org, 1 range-mate.co.uk, 1 @@ -121363,6 +121786,7 @@ rangeforce.com, 1 rangeforce.eu, 1 rangerfiles.tk, 1 rangersloyalsite.tk, 1 +rangersofbelgium.be, 1 rangeweb.ga, 1 ranginkamonkadeh.ir, 1 rangsmo.se, 0 @@ -121372,17 +121796,16 @@ raniperearstikeskus.ee, 1 ranjanbiswas.net, 1 ranjeetmehta.tk, 1 rankae.com, 1 -rankandstyle.com, 1 rankeco.com, 1 rankia.ga, 1 ranking-deli.jp, 1 ranking-mensesthe.jp, 1 ranking10hits.tk, 1 +rankingbyseo.com, 1 rankingide.tk, 1 rankingofe.com.pl, 1 rankingubezpieczeniowy.pl, 1 rankingubezpieczennazycie.pl, 1 -rankpoll.me, 1 ranksite.cf, 1 ranksite.ga, 1 ranksite.gq, 1 @@ -121390,15 +121813,16 @@ ranksite.ml, 1 ranksite.tk, 1 ranktis.com, 1 rankya.com, 1 -ranquel.com, 1 -ranquel.es, 1 +rannamoisaaiasalong.ee, 1 ransomleak.com, 1 +ransomspares.co.uk, 1 ranson.com.au, 1 ransonwv.gov, 1 rantalaholcomb.tk, 1 rantamplan.tk, 1 rantanda.com, 1 ranters.nl, 1 +rany.eu.org, 1 ranyeh.co, 1 ranyeh.com, 1 ranzbak.nl, 1 @@ -121409,9 +121833,8 @@ raovatsaigon.tk, 1 rap4ever.org, 1 rapala.com, 1 rapanui.tk, 1 -raparks.com, 1 rapay.net, 1 -rapbull.net, 0 +rapbull.net, 1 rapdinle.tk, 1 rapenroer.com, 1 rapenroer.nl, 1 @@ -121427,6 +121850,7 @@ rapidcityjournal.com, 1 rapidclick.net, 1 rapidessay.com, 1 rapidguide.tk, 1 +rapidlegal.com, 1 rapidoo.com.br, 1 rapidooo.fr, 1 rapidpolkdumpsterrental.com, 1 @@ -121446,7 +121870,7 @@ rappels-produits.com, 1 rappet.de, 1 rapport-dc.jp, 1 rapport.link, 1 -raps.org, 0 +raps.org, 1 raptorsupplies.co.uk, 1 raptorsupplies.com, 1 rapwoyska.tk, 1 @@ -121486,7 +121910,6 @@ rase.rocks, 1 raserbajs.tk, 1 rashbogota.tk, 1 rasheed-nuss.tk, 1 -rashidi.nl, 1 rashmipandit.com, 1 rashodkin.tk, 1 rasing.me, 1 @@ -121509,7 +121932,6 @@ rassistem.rs, 1 rassro.sk, 1 rastabooks.ga, 1 rasteniem.ru, 1 -rastimbilingva.ru, 1 rastko-jevtovic.tk, 1 rasty.cz, 1 rat.pw, 1 @@ -121524,21 +121946,12 @@ ratebridge.com, 1 rateddomain.ml, 1 ratelimited.me, 1 ratelsec.com, 1 -ratemyfeet.pics, 1 ratemyfishtank.com, 1 ratenkauf.com, 1 rates.ca, 1 ratespy.com, 1 -ratexindex.com, 1 -rateyourcyber.com, 1 -ratgeber-alltag.de, 1 -ratgeber-beauty.com, 1 -ratgeber-massagen.com, 1 -ratgeber-schoenheit.com, 1 -ratgeber-wellness.com, 1 -ratgebermagazine.de, 1 -ratgeberportal-schoenheit.de, 1 rathbonesonline.com, 1 +rathcroghan.ie, 1 rathdrum.gov, 1 rathdrumpolice.gov, 1 rathgeb.org, 1 @@ -121561,7 +121974,6 @@ rattanfurniturefairy.co.uk, 1 rattattees.com, 1 rattenkot.io, 1 rattohnos.com.ar, 1 -ratujemystopy.pl, 1 ratujemyzwierzaki.net, 1 ratujmydzikiekoty.org, 1 ratusha.ml, 1 @@ -121573,10 +121985,11 @@ raumausstatter-fangmann.de, 1 raumgestaltung-reeh.de, 1 raumgestaltung-sassermann.de, 1 raumkontakt.de, 1 +raumnebenan.de, 1 rauros.net, 1 +rauschenbach.de, 1 rauserv.de, 1 rautarutto.tk, 1 -rauw.art, 1 rava.tk, 1 ravada-vdi.com, 1 ravagers.tk, 1 @@ -121609,6 +122022,7 @@ ravenrockrp.com, 1 ravenstonejeweler.com, 1 raventechnology.es, 1 ravenx.me, 1 +ravescout.club, 1 ravesteijn.nl, 1 ravhaaglanden.org, 1 ravihotel.com, 0 @@ -121636,8 +122050,6 @@ rawlinswy.gov, 1 rawlord.ga, 1 rawmarkable.co.uk, 1 rawmathub.gr, 1 -rawpearls.co.uk, 1 -rawpearls.com, 1 rawr.sexy, 1 rawrvixen.com, 1 raxion.cf, 1 @@ -121651,6 +122063,7 @@ raydius.de, 1 rayensalud.com, 1 rayfalling.com, 1 rayhneatess.com, 1 +rayiris.com, 1 rayj.me, 1 raykitchenware.com, 1 raylo.com, 0 @@ -121660,7 +122073,6 @@ raymondbenson.com, 1 raymondelooff.nl, 1 raymondha.ca, 1 raymondha.com, 1 -raymundo.doctor, 1 raynbo.ai, 1 raynis.net, 1 raynix.info, 1 @@ -121675,7 +122087,6 @@ raytonne.cn, 1 rayusradiology.com, 1 raywisdom.tk, 1 rayworks.de, 1 -rayzer.dk, 1 razakhanimazhab.tk, 1 razawitv.com, 1 razberry.kr, 1 @@ -121707,9 +122118,11 @@ rbcafe.com, 1 rbcardiacsavers.com, 1 rbcdn.cz, 1 rbclub.cz, 1 +rbcosmetici.it, 1 rbd.events, 1 rbensch.com, 0 rbet.tk, 1 +rbfalcon.com, 1 rbh.co.uk, 1 rbi-admin.com, 1 rbi-umbrella.com, 1 @@ -121722,7 +122135,6 @@ rbmafrica.co.za, 1 rbmediaglobal.com, 1 rbmland.com, 1 rbprosthodontics.com, 1 -rbs.ca, 1 rbs.co.uk, 1 rbs.com, 1 rbsexshop.com.br, 1 @@ -121735,8 +122147,10 @@ rbunews.tk, 1 rburchell.com, 0 rburz.com, 1 rbx.com, 1 +rbx.gg, 1 rc-offi.net, 1 rc-shop.ch, 1 +rc.cruises, 1 rc21x.com, 1 rc2edit.nl, 1 rc3n.com, 1 @@ -121751,6 +122165,7 @@ rccom.ru, 1 rccrush.com, 1 rcdeescolasantcugat.com, 1 rcdevs.com, 1 +rcdmh.org, 1 rcdocuments.com, 1 rcdrone.tk, 1 rce.delivery, 1 @@ -121797,7 +122212,6 @@ rda.run, 1 rdactive.de, 1 rdap.ss, 1 rdb.vote, 1 -rdc-metalworks.com, 1 rdcdesign.com, 1 rddjapan.info, 1 rded.nl, 1 @@ -121829,7 +122243,6 @@ rdmc.sh, 1 rdmc.shop, 1 rdmc.site, 1 rdmc.sn, 1 -rdmc.studio, 1 rdmc.support, 1 rdmc.systems, 1 rdmc.tel, 0 @@ -121849,6 +122262,8 @@ rdsm.be, 0 rdtagro.com.br, 1 rdtech.de, 1 rdto.io, 1 +rduser.lol, 1 +rduser.me, 1 rdv-cni.fr, 1 rdv-coquin-rapide.fr, 1 rdvobras.pt, 1 @@ -121876,8 +122291,8 @@ reachum.com, 0 reachwithed.com, 1 reaconverter.com, 1 reacteev.com, 1 +reactfactory.io, 1 reactionindex.com, 1 -reactive-load.ai, 1 reactive-load.com, 1 reactive-press.com, 1 reactive.com.ru, 1 @@ -121901,19 +122316,18 @@ readingoutpost.com, 1 readingrats.de, 1 readless.cf, 1 readmynews.cf, 1 -readnovelis.com, 1 readpages.gq, 1 readsportsonly.com, 0 readup.tk, 1 -ready-leaf.com, 1 ready4bf.tk, 1 -ready5g.net, 0 -readycentbid.com, 0 +ready5g.net, 1 +readycentbid.com, 1 readycentral.com, 1 readychurchsites.com, 1 readyclassroomcentral.com, 1 readycolorado.gov, 1 readycontacts.com, 1 +readydedis.com, 1 readyeutaw.gov, 1 readyfiction.com, 1 readyit.pl, 1 @@ -121932,6 +122346,7 @@ readysurrync.gov, 1 readywithresourcestn.gov, 1 reaff.com, 0 reaganlibrary.gov, 1 +reagent-tests.uk, 1 reakcjonista.tk, 1 reaksi.id, 1 real-it.nl, 1 @@ -121948,13 +122363,14 @@ realactionslots.com, 1 realbiographies.cf, 1 realbiz.ml, 1 realbluesmagazine.com, 1 +realcapoeira.ru, 0 realcdn.nl, 1 realclearlife.com, 1 +realclinic.jp, 1 realcom.hu, 1 realdomdom.cf, 1 -realeco.ai, 1 realestagency.com, 1 -realestate-in-uruguay.com, 1 +realestate-in-uruguay.com, 0 realestate-lidl.lu, 1 realestateagent-directory.com, 1 realestatebees.com, 1 @@ -121964,8 +122380,10 @@ realestatebydawn.ca, 1 realestateexecutives.tk, 1 realestategreenville.tk, 1 realestatekanada.tk, 1 +realestatelegalupdate.com, 0 realestatemaryland.tk, 1 realestateofnewmexico.com, 0 +realestates.istanbul, 1 realestatesales.gov, 1 realestatestagingassociation.com, 1 realestatetennessee.net, 1 @@ -121976,6 +122394,7 @@ realgarant-shop.de, 0 realgiulianova.it, 1 realhelpcompany.ga, 1 realhorsegirls.net, 1 +realhost.name, 1 realhypnosistraining.com.au, 1 realidad.tk, 1 realincest.tv, 1 @@ -121993,7 +122412,6 @@ realives.com, 1 realizarse-japan.com, 1 realizegov.com, 1 realkeywords.ga, 1 -reall.uk, 1 realliance.net, 1 reallife-it.de, 1 reallifeforums.com, 0 @@ -122006,6 +122424,7 @@ reallyangryaboutchipshops.com, 1 reallybadidea.tk, 1 reallycooljobs.ga, 1 reallywild.tk, 1 +reallyze-se.com, 1 realm-of-shade.com, 1 realm.is, 1 realmadridoffice.tk, 1 @@ -122026,7 +122445,6 @@ realpython.com, 1 realrapfans.tk, 1 realschule-rain.de, 1 realtechreviews.com, 1 -realtime-chart.info, 1 realtimenetworks.com, 1 realtimeregister.com, 1 realtorjohnfincher.com, 1 @@ -122042,6 +122460,7 @@ realum.eu, 1 realum.net, 1 realvapamarde.cf, 1 realvestors.com, 1 +realvnc.com, 1 realvnc.help, 1 realware.com, 1 realwebsite.ga, 1 @@ -122067,6 +122486,7 @@ rebas.co, 1 rebase.com.br, 1 rebase.com.tr, 1 rebatekey.com, 1 +rebatemy.rent, 1 rebecamode.ch, 1 rebecca.blackfriday, 1 rebeccawendlandt.com, 1 @@ -122075,13 +122495,13 @@ rebel-owl.com, 1 rebel.com.br, 1 rebelbranding.nl, 1 rebelchick.tk, 1 -rebelclassicraid.com, 1 rebelcorp.cloud, 1 rebelcorp.ltd, 1 rebeldemule.org, 1 rebeldeway-al.tk, 1 rebeldeway-ks.tk, 1 rebellecare.com, 1 +rebelliouskitten.art, 1 rebello.trade, 1 rebellyon.info, 1 rebelonline.nl, 1 @@ -122094,27 +122514,29 @@ rebo.ai, 1 rebonus.com, 1 reboot.it.com, 1 reboxetine.com, 1 +reboxonline.com, 1 rebrandly.com, 1 rebschool.ml, 1 rebscurtismoss.co.uk, 1 rebsumner.com, 1 rebtoor.com, 0 rebuga.com, 1 +rebuild96.ru, 1 rebull.fr, 1 +rebure.com, 0 rebus.support, 1 rebusfarm.net, 1 reby.cf, 1 reby.tk, 1 -rec.gov, 1 rec5.nl, 1 recalendar.me, 1 recallinsider.com, 1 recallrtr.com, 1 recalls.gov, 1 recambiofacil.com, 1 +recap-preterm.eu, 1 recaptcha-demo.appspot.com, 1 recaptime.eu.org, 1 -recargafaciloficial.com, 1 recat-project.eu, 1 receipts-app.com, 1 receitas.tk, 1 @@ -122122,12 +122544,12 @@ receitasdacassia.tk, 1 receitasdepesos.com.br, 1 receitasfavoritas.com, 1 recentiprogressi.it, 1 -recepsenel.com, 1 receptenwebsite.com, 1 reception247.com, 0 receptionsbook.com, 1 -receptveka.ru, 0 +receptveka.ru, 1 recessmonkeyz.tk, 1 +recetasdelospaises.com, 1 recetasdemape.com, 1 recetips.com, 1 recettecookeo.net, 1 @@ -122143,7 +122565,6 @@ recht.us, 1 rechten-konsens-brechen.tk, 1 rechtenliteratuurleiden.nl, 0 rechtsanwalt-loesener.de, 1 -rechtsanwalt-slotty.de, 1 rechtsanwaltdrach.de, 1 rechtsanwaltskammer-hamm.de, 1 rechtsbijstand.nl, 1 @@ -122151,7 +122572,6 @@ rechtschreibpruefung24.de, 1 rechtsschutz-onlineshops.de, 1 rechtwijzer.nl, 1 recidivism.com, 1 -recifal-must.com, 1 recifaliste.fr, 1 recipea.com, 1 recipekensaku.com, 1 @@ -122189,6 +122609,9 @@ recomed.co.za, 1 recommend.pro, 1 recommendatron.co.uk, 1 recommends.ml, 1 +recompiled.org, 0 +recon-networks.com, 1 +reconciliatecondios.es, 1 reconocimientoincan.org.mx, 1 recordagrave.org, 1 recordati.com.tr, 1 @@ -122210,6 +122633,7 @@ recreatiewoningverzekeringen.nl, 1 recriereciclagem.com.br, 1 recroommasters.com, 1 recruit.net, 1 +recruitcrm.io, 0 recruiterbox.com, 1 recruiting.ai, 1 recruitpediacorp.com, 1 @@ -122218,7 +122642,8 @@ recruitsecuritytraining.com, 1 recruitskill.cf, 1 recruitskill.ga, 1 recruitskill.gq, 1 -recruitwithclutch.com, 1 +rectale.co, 1 +rectale.com, 1 rectale.xyz, 1 rectecforum.com, 1 rectoraudiparts.com, 1 @@ -122226,8 +122651,6 @@ rectoverso61.fr, 1 rectus.co.jp, 1 recuperation-essaim-abeille.fr, 1 recuperation-points.fr, 1 -recuperationsaguenay.ca, 1 -recuperationsaguenay.com, 1 recuperatucuentaya.com, 1 recupero.it, 1 recurly.com, 1 @@ -122237,10 +122660,13 @@ recursosilimitados.tk, 1 recursosimbiopos.com, 1 recursosmi.com.br, 1 recursosrev.tk, 1 +recycle-it.com.au, 1 +recycle-plant.com, 1 recycle.cf, 1 recyclebin.email, 1 recycledinorsett.co.uk, 1 recycledinorsett.com, 1 +recycleit.au, 1 recyclenow.com, 1 recyclensave.sg, 1 recycling.tk, 1 @@ -122262,16 +122688,15 @@ red031000.com, 1 red2fred2.com, 1 redaa.org, 1 redable.nl, 1 +redacted.com.br, 1 redactibio.com, 1 redactieco.nl, 1 -redactionscientifique.com, 1 redaktcms.com, 1 -redaktorii.com.ua, 1 -redartgames.com, 1 redass.me, 1 redaxo.org, 1 redballoonsecurity.com, 1 redbeardplumbing.net, 0 +redbrown.ru, 1 redcabbage.tk, 1 redcanary.co, 1 redcandycane.tk, 1 @@ -122307,6 +122732,7 @@ reddyai.com, 1 rede-reim.de, 1 rede-t.com, 1 redearsliderturtles.com, 1 +redecsirt.pt, 1 rededca.com, 1 rededecuidadores.pt, 1 redeemerlutheranschoolkokomo.org, 1 @@ -122359,11 +122785,7 @@ redhottube.ml, 1 redi.tk, 1 rediazauthor.com, 1 redid.com.au, 1 -redington-bizapp.com, 1 -redington-bizboard.com, 1 -redingtonconnect.com, 1 redingtongroup.com, 1 -redingtononline.com, 1 redion.me, 1 redir.me, 1 redireci.one, 1 @@ -122374,10 +122796,11 @@ redirect.stg.fedoraproject.org, 1 redirection-plf.online, 1 rediscoveredfamilies.com, 1 redisgreen.com, 1 +rediske.me, 1 redite.co, 1 redivis.com, 1 redjuice.co.uk, 1 -redkite.se, 0 +redkite.se, 1 redknothomes.com, 1 redlands.gov, 1 redlandspd.gov, 1 @@ -122390,7 +122813,6 @@ redlineairdefence.com, 1 redlineairdefense.ai, 1 redlineairdefense.ca, 1 redlineairdefense.com, 1 -redlinecourier.com, 1 redlink.de, 1 redlink.tk, 1 redlinker.ml, 1 @@ -122404,10 +122826,10 @@ redmejoracontinua.com, 1 redmondoregon.gov, 1 redmore.me, 1 redneck-radio.tk, 1 -rednegocios.cl, 0 redneragenturen.org, 1 rednex.tk, 1 rednsx.org, 0 +rednumberone.com, 1 redoikos.org, 1 redondo.gov, 1 redoracle.com, 1 @@ -122429,16 +122851,13 @@ redrescue.com, 1 redrivernm.gov, 1 redrockcontracting.com.au, 1 redrockrentalsllc.com, 1 -redroseart.com, 1 reds-dev.ga, 1 -redseafire.cloud, 1 redsealine-invest.ru, 1 redsengineering.com.au, 1 redshank-largeformat.co.uk, 1 redshell.pw, 1 redshoeswalking.net, 1 redsiege.com, 1 -redsift.cloud, 1 redsift.com, 1 redsift.io, 1 redsis.com, 1 @@ -122458,12 +122877,14 @@ redtails.tk, 1 redte.com, 1 redteagame.com, 1 redteam-pentesting.de, 1 +redteam.coach, 1 redteamabseiling.co.uk, 1 redtomato.ga, 1 redtsar2000papers.tk, 1 redtube.com, 1 redtubeplatinum.com, 1 redtubs.tk, 1 +redtune.jp, 1 reducealcoholism.com, 1 reducer.co.uk, 1 reduceritop.ro, 1 @@ -122473,6 +122894,7 @@ redulla.com, 1 redunion.tk, 1 redux.show, 1 redvau.lt, 1 +redvent-decor.ru, 1 redvent.ru, 1 redware.co.uk, 1 redwater.co.uk, 1 @@ -122505,10 +122927,15 @@ reelnews.ga, 1 reelranking.com, 1 reels.in.th, 1 reemployks.gov, 1 +reenergo.ru, 1 +reenio.com, 1 reenio.cz, 1 +reenio.sk, 1 reentry.gov, 1 +reents3d.de, 1 reerguer.pt, 1 rees-carter.net, 1 +reesefortraviscounty.org, 1 reesmichael1.com, 1 reeson.at, 1 reeson.de, 1 @@ -122516,7 +122943,6 @@ reeson.info, 1 reeson.org, 0 reesrichards.co.uk, 1 reevaappliances.co.uk, 1 -reeview.me, 1 reevoo.com, 1 reezocar.com, 1 refa.nl, 1 @@ -122525,7 +122951,6 @@ refalm.com, 1 refb.org, 1 refbanners.com, 1 refbanners.website, 1 -refcc.co.uk, 1 refer.codes, 1 refer.nhs.uk, 1 referat.club, 1 @@ -122542,7 +122967,7 @@ referralforest.com, 1 referrer.website, 1 reffect.io, 1 refinedimagelawnlandscape.ca, 1 -refinedinspectionservices.com, 0 +refinedinspectionservices.com, 1 refinedlightingaz.com, 1 refinedroomsllc.com, 1 refinery.services, 1 @@ -122575,6 +123000,7 @@ reformando-t.es, 1 reformasflores.com, 1 reformatreality.com, 1 reformayobra.com, 1 +reformedermatology.com, 1 refpa.top, 1 refpa170071.top, 1 refpa4496162.top, 1 @@ -122586,8 +123012,11 @@ refpabuyoj.top, 1 refpadewok.com, 1 refpaewsbc.top, 1 refpaffkansb.top, 1 +refpaicctvtm.top, 1 +refpaikgai.top, 1 refpajqhsd.top, 1 refpakrtsb.top, 1 +refpakwpsrbm.top, 1 refpalqtdn.top, 1 refpanjoke.com, 1 refpaqutiu.top, 1 @@ -122598,10 +123027,11 @@ refpaswoon.top, 1 refpatqltx.top, 1 refpavikwm.top, 1 refpavnpad.top, 1 +refpaydc.top, 1 refpayio.top, 1 refpazkjixes.top, 1 +refra.com, 1 reframeituk.org.uk, 1 -reframepractice.com, 1 refre.in, 1 refresh-dc.org, 1 refreshcamping.com, 1 @@ -122611,7 +123041,6 @@ refreshliving.us, 1 refreshmentshop.co.uk, 1 refriamericas.com, 1 refrigeracion2hermanos.com.mx, 1 -refstack.io, 1 refuelcollective.com, 0 refuelcreative.com.au, 0 refuelmcconnell.marketing, 1 @@ -122619,6 +123048,7 @@ refugee-law-clinic-kiel.de, 1 refugeephrasebook.de, 1 refundo.cz, 1 refundo.sk, 1 +refundthem.com, 1 refurb-tracker.com, 1 refusedcarfinance.com, 1 refx.com, 1 @@ -122631,8 +123061,8 @@ regal.radio, 1 regalador.com, 1 regalautosport.com, 1 regalcapitalwi.com, 1 -regalify.com, 1 regalosuhlala.com, 1 +regalosymuestrasgratis.com, 1 regalpaintingfdl.com, 1 regalradio.net, 1 regaltheatre.com.au, 1 @@ -122659,10 +123089,12 @@ regenpfeifer.net, 1 regensburg-repariert.de, 1 regent.ac.za, 1 regentchair.com, 1 +regentcruises.com, 1 regentmovies.tk, 1 regento.bg, 1 regentsgarden.com.au, 1 regentsh.com, 1 +regenwaterput.com, 1 regex.bingo, 1 regex.golf, 1 reggaesumfest.com, 0 @@ -122670,7 +123102,6 @@ reggaexplosion.tk, 1 reggea.tk, 1 reggiodigital.com, 1 reggiotoday.it, 1 -regiaodeleiria.pt, 1 regie-sc.ch, 1 regiftable.com, 1 regime-anticellulite.com, 1 @@ -122680,7 +123111,6 @@ reginalenz.com, 1 reginfo.gov, 1 regio-guide.de, 1 regio-salland.nl, 1 -regiobank.nl, 1 regiobeveland.nl, 1 regiofomento.com.br, 1 regioinfo.nl, 1 @@ -122696,12 +123126,11 @@ regionalgrowth.com, 1 regionalmissouri.com, 1 regionethost.tk, 1 regionethungaria.hu, 1 -regiongl.com, 1 regionmedia.cf, 1 regionstea.net, 1 regioplanverbindt.nl, 1 +regioprint-werbeagentur.de, 1 regiosalland.nl, 1 -regioseguros.com.br, 1 regiotaxi-s-hertogenbosch.nl, 1 regiotaxidenbosch.nl, 1 regiotaxishertogenbosch.nl, 1 @@ -122736,7 +123165,6 @@ regorsecurity.ca, 1 regospel.tk, 1 regpacks.com, 1 regraph.de, 1 -regrep.eu, 1 regression.tk, 1 regressplattform.ch, 1 regtech.tk, 1 @@ -122746,16 +123174,16 @@ reguladordevoltagem.com.br, 1 regularlabs.com, 1 regulations.gov, 1 regulative.gq, 1 -regulatorysciencedata.eu, 1 +regulatory-reporting.com, 1 rehab.cf, 1 +rehab.cn.ua, 1 rehabilitologist.ru, 1 rehabthailand.com, 1 rehabthailand.org, 1 rehansaeed.com, 1 rehasport-informationen.de, 1 rehasportwelt.de, 1 -rehazonaliftservice.nl, 0 -rehberimgo.com.tr, 1 +rehazonaliftservice.nl, 1 reher.pro, 1 rehive.com, 1 rehoboth-hollandscheveld.nl, 1 @@ -122787,15 +123215,16 @@ reiki-france.fr, 1 reiki.bg, 1 reikiblog.cf, 1 reikicrystal.com, 1 +reikimart.com, 1 reikimaster.tk, 1 reilly.io, 1 -reimaginebelonging.org, 1 +reimagine-education.com, 1 +reimaginebelonging.org, 0 reimann.me, 1 reimers.de, 1 -reimgr.com, 1 reims-digital.fr, 1 reimsmediaslibres.info, 1 -rein.ca, 0 +rein.ca, 1 reinaertvandecruys.com, 1 reinaertvandecruys.me, 1 reinaldudrasfamily.ee, 1 @@ -122810,7 +123239,6 @@ reinhardtsgrimma.de, 1 reinhart-auto.cz, 1 reinheft.de, 0 reinierjonker.nl, 1 -reinigung-wetterau.de, 1 reinodemurcia.tk, 1 reinoldus.ddns.net, 1 reinotools.com, 0 @@ -122821,8 +123249,6 @@ reinventersontravail.com, 1 reirei.cc, 1 reisdemuthwiltgen.com, 1 reisebuero-baader.de, 1 -reiseguiden.no, 1 -reisekostenabrechnung.online, 1 reisen.ga, 1 reisenbauer.ee, 0 reisespill.no, 1 @@ -122839,7 +123265,6 @@ reisslittle.com, 1 reissnehme.com, 1 reisspecialistdevalk.nl, 1 reitbeteiligungen.ch, 1 -reiterdairy.com, 1 reitmeier.me, 1 reitstall-goettingen.de, 1 reittherapie-tschoepke.de, 1 @@ -122850,7 +123275,6 @@ rejected-by-society.tk, 1 rejected.tk, 1 rejective.tk, 1 rejects.email, 1 -rejekibets.org, 1 rejestrelektrykow.pl, 1 rejido.tk, 1 rejushiiplotter.ru, 1 @@ -122887,7 +123311,6 @@ reksadanapanin.co.id, 0 rekurasi.com, 1 rekursion.at, 1 rekurve.co, 0 -rekvia.no, 1 rel-me.cc, 1 relainstitute.com, 1 relais-laguiole.com, 1 @@ -122909,6 +123332,7 @@ relaxhavefun.com, 1 relaxmasaz.cz, 1 relaxpointhyncice.cz, 1 relaxti.me, 1 +relaxxed.nl, 1 relaxxxed.com, 1 relaybox.io, 1 relaypay.io, 1 @@ -122931,9 +123355,10 @@ reliablemojo.com, 1 reliableparts.com, 1 reliablepi.com, 1 reliableremovals-blackpool.co.uk, 1 +reliablewire.com, 1 reliahost.nl, 1 reliancecard.com, 1 -reliant.com, 0 +reliant.com, 1 reliant3sixty.com, 1 reliantpropertygrpri.com, 1 relic.gq, 1 @@ -122947,8 +123372,6 @@ relines.ru, 1 relionbattery.com, 1 relishify.com, 1 relisten.nl, 1 -reliware.co.uk, 1 -relixcheats.com, 1 rellek.org, 1 reloading.ml, 1 relocatefeds.gov, 1 @@ -122977,13 +123400,15 @@ remax.at, 1 remaxelite.co.il, 1 remaxtop.co.il, 1 remayah.com, 1 -rembish.org, 1 +remdrivet.se, 1 +remeb.de, 1 remedi.tokyo, 1 remediohalkiparaladiabetes.org, 1 remedionaturales.com, 1 remedioparaherpes.com, 1 remedios.com.br, 1 remedioscaseros.guru, 1 +remedium.net.pl, 1 remejeanne.com, 1 remembear.com, 1 rememberingjordan.org, 1 @@ -122998,14 +123423,12 @@ remi-decker.tk, 1 remi-saurel.com, 1 remi-theriault.com, 1 remiafon.com, 1 -remiandre.fr, 1 remicade.com, 1 remifajardo.cf, 1 remilner.co.uk, 1 reminda.com, 0 reminded.tk, 1 remino.net, 1 -remira.com, 1 remissan.com, 1 remissionclinic.com, 0 remitano.com, 1 @@ -123018,7 +123441,7 @@ remodded.gq, 1 remodded.ml, 1 remodded.tk, 1 remodelate.mx, 1 -remodelhealth.com, 0 +remodelhealth.com, 1 remodulin.com, 1 remondacastro.com.ar, 1 remonline.ru, 1 @@ -123044,9 +123467,11 @@ remontuks.ru, 1 remontypodkarpackie.pl, 1 remora.tk, 1 remorse.ga, 1 +remoteassistants.io, 1 remotedesktop.corp.google.com, 1 remotedxb.com, 1 remoteoffice.ga, 1 +remotepeople.com, 1 remoteroom.jp, 1 remoteshack.cf, 1 remoteshack.ml, 1 @@ -123057,6 +123482,8 @@ removalcellulite.com, 1 removalsandstoragex.com, 1 removalsmanandvan.org, 1 removedrepo.com, 1 +remowin.com, 1 +remploy.co.uk, 1 remptmotors.com, 0 remsenny.gov, 1 remservices.ky, 1 @@ -123074,7 +123501,6 @@ renalco.ch, 1 renard-pierne-avocats.fr, 1 renascercorretora.com.br, 1 renascerstp.org, 0 -renataginecologista.com.br, 1 renate-kretschmer.de, 1 renate-lietz.de, 1 renateonline.tk, 1 @@ -123089,6 +123515,7 @@ renaultvereeniging.co.za, 1 renaultzambezi.co.za, 1 rencia.com, 1 rencontredemerde.fr, 1 +renda360.net, 1 rendall.tv, 1 rendatododia.xyz, 1 render.com, 1 @@ -123099,7 +123526,7 @@ renderworld.tk, 1 renderzone.tk, 1 rendez-vous.gq, 1 rendezvous-cafe.co.uk, 1 -rendify.fr, 1 +rendezvousstyle.com, 1 rendre-service.ch, 0 rendutowers.org.au, 1 rene-cafe.nl, 1 @@ -123107,12 +123534,12 @@ rene-eizenhoefer.de, 1 rene-schwarz.com, 0 rene-stolp.de, 1 renearends.nl, 1 -renecoignard.com, 1 renecoignard.de, 1 renecoignard.fr, 1 renecoignard.net, 1 renecoignard.org, 1 renecoignard.ru, 1 +renegadeexploration.com, 1 renehsz.com, 1 renekoot.nl, 0 renem.net, 0 @@ -123121,6 +123548,7 @@ reneschmidt.de, 1 reneschroeter.de, 1 renet.com.br, 1 renet.tk, 1 +renevo.eu, 1 renewablekids.tk, 1 renewablemaine.org, 0 renewals.pl, 1 @@ -123210,7 +123638,7 @@ rentbasements.com, 1 rentberry.com, 1 rentbrowser.com, 1 rentcafe.co.uk, 1 -rentex.com, 0 +rentex.com, 1 rentfaster.ca, 1 renthelper.us, 1 renticar.com, 1 @@ -123260,9 +123688,11 @@ repararmac.eu, 1 repararsamsung.eu, 1 repararxiaomi.eu, 1 reparatiecrm.nl, 1 +reparatieferestre.md, 1 reparation-traceur.com, 1 reparationvolet59.fr, 1 reparaturcafe-pfullendorf.de, 1 +reparo.pe, 0 reparolineablanca.com, 1 reparteat.com, 1 repartim.fr, 1 @@ -123278,19 +123708,18 @@ repeat.gg, 1 repeatresponse.com.au, 1 repertuarim.com.tr, 1 repettoshoes.tk, 1 +repharmacy.com, 0 repin.in.ua, 1 -repinger.com, 1 repinger.my.id, 1 repintadoautomotriz.com, 1 repl.ga, 1 replacebase.co.uk, 1 replacebase.com, 1 replacebase.eu, 1 -replacedbyrobot.info, 0 +replacedbyrobot.info, 1 replacementrate.ga, 1 replay.ga, 1 replaynexus.com, 1 -replenishradar.com, 1 replicacoin.ga, 1 replicagold.ml, 1 replici.net, 1 @@ -123316,15 +123745,14 @@ reportexagencies.net, 1 reportexhq.ca, 1 reportexhq.com, 1 reporting.gov, 1 -reportingonthetimes.com, 1 -reportmytaxes.com, 1 +reportkey.ru, 1 reportoid.tk, 1 reportoverdose.com, 1 reportquest.com, 1 -reportsrad.org, 1 reposaarenkuva.fi, 1 reposeed.dev, 1 reposeed.org, 1 +represa.com, 1 represent.us, 1 represii.net, 1 reproaccess.gov, 1 @@ -123348,6 +123776,7 @@ reptieleninfo.tk, 1 reptiledirect.com, 1 reptilepoint.com, 1 reptilescan.com, 1 +reptrax.com, 1 republic.gg, 1 republic.gr, 1 republica.gt, 1 @@ -123357,6 +123786,7 @@ republicanwhip.gov, 1 republicasantabanana.org, 1 republicchophouse.com, 1 republicmo.gov, 1 +republictelecom.net, 1 republik-sombora.tk, 1 republique.org, 1 repugnant-conclusion.com, 1 @@ -123369,7 +123799,6 @@ requestio.pp.ua, 1 requestr.co.uk, 1 requeteguapas.com, 1 requeue.ga, 1 -requex.me, 1 requin.tk, 1 requirements.ga, 1 reregu.cf, 1 @@ -123381,15 +123810,14 @@ reroboto.org, 1 reroboto.social, 1 reroll.tv, 1 resale.condos, 1 +resalerental.com, 1 resanebartar.tk, 1 resbi.tk, 1 resc.la, 1 rescatec.com, 1 resch-verlag.com, 1 rescms-secure.com, 1 -rescuemycar.com, 1 rescuenode.com, 1 -rescuepcrepairs.com, 1 rescuer.gq, 1 rescuer.org.ua, 1 rescuer.tk, 1 @@ -123459,6 +123887,7 @@ resistancebooks.com, 1 resistsa.blue, 1 resize2fs.de, 0 resju21.ch, 0 +resk.fr, 1 resmigazete.gov.tr, 1 resmim.net, 1 resoauth.support, 1 @@ -123468,7 +123897,6 @@ resolutionlife.co.nz, 1 resolutionlife.com.au, 1 resolutionnews.cf, 1 resolutionnews.ga, 1 -resolve-acupuncture.co.uk, 1 resolve-portal.it, 1 resolved.tk, 1 resolvefa.co.uk, 1 @@ -123488,6 +123916,7 @@ resoundpro.ca, 1 resourceconnect.com, 1 resourceguruapp.com, 1 resources.flowfinity.com, 1 +resourcesab.eu, 1 resourcesmanagementcorp.com, 1 resourcespace.com, 1 respawwn.com, 1 @@ -123520,13 +123949,13 @@ responsive.io, 0 responsivepaper.com, 1 respostas.com.br, 1 respublica.cl, 1 +ressourcement-interieur.com, 1 ressourceportal.dk, 1 ressourcesindivior.com, 1 ressourcesleopharma.fr, 1 ressupply.com, 1 rest-in-moscow.tk, 1 resta.ga, 1 -restacity.com, 1 restad.org, 1 restars-logistics.com, 1 restart-brno.cz, 1 @@ -123541,7 +123970,6 @@ restaurant-neuemuehle.de, 1 restaurant-oregano.de, 1 restaurant-rosengarten.at, 1 restaurant-spartacus.tk, 1 -restaurantblossom.dk, 1 restaurantcleaningchicago.com, 1 restaurantdetgulepakhus.tk, 1 restaurantedonono.com.br, 1 @@ -123558,6 +123986,7 @@ restauratori.it, 1 restauratorin-maubach-dresden.de, 1 restaured.net, 1 restauriedili.roma.it, 1 +restbygait.com, 1 rester-a-domicile.ch, 1 rester-autonome-chez-soi.ch, 1 restic.net, 1 @@ -123574,17 +124003,17 @@ restoran.cf, 1 restoranlibertas.com, 1 restorationcommercialroofing.com, 1 restorationphotos.tk, 1 +restorebodybalance.net, 0 restorehair.com, 1 +restoremykitchen.com, 1 restorerivers.eu, 1 restorers.org.uk, 1 restorethegulf.gov, 1 restoringhopeberks.org, 1 -restormel-handyman.co.uk, 1 restoruns.com, 1 restrealitaet.de, 1 restream.fi, 1 restructurethesystem.us, 1 -resultcrop.vip, 1 resultscx.com, 1 resultsdate.news, 1 resultsyoudeserve.com, 1 @@ -123607,7 +124036,6 @@ resumic.dev, 1 resumic.io, 1 resumic.net, 1 resumic.org, 1 -resumocast.com.br, 1 resurfacehub.com, 1 resurgent.network, 1 resurspartner.tk, 1 @@ -123632,10 +124060,9 @@ retecentre.com, 1 reteimprese.it, 1 reteteaz.net, 1 retetop95.it, 0 -retfe.com, 1 reth.ch, 1 -rethinkcommuting.org, 1 rethinkingchurch.net, 1 +rethinkproductivity.co.uk, 1 rethymnorooms.tk, 1 retia.cloud, 1 reticle.cf, 1 @@ -123655,10 +124082,7 @@ retiringifa.co.uk, 1 retmig.dk, 1 reto.ch, 0 reto.io, 1 -retofest.com, 1 -retofest.es, 1 -retofest.org, 1 -retohaeberli.com, 1 +retohaeberli.com, 0 retokromer.ch, 0 retool.com, 0 retornaz.com, 1 @@ -123684,7 +124108,6 @@ retrohousewifegoesgreen.com, 1 retrojar.top, 1 retrojugo.tk, 1 retropack.org, 1 -retropasjonaci.pl, 1 retropedal.tk, 1 retrophoto.fr, 0 retropixel.ga, 1 @@ -123717,6 +124140,7 @@ reup.cash, 1 reurbcaceres.com.br, 1 reusables.org, 1 reuschtools.com, 1 +reusesti.ro, 1 reusorecicla.com.br, 0 reut42.de, 1 reuter-profishop.de, 0 @@ -123728,16 +124152,14 @@ revalidatiekennisnet.nl, 1 revaloriza.cf, 1 revampdigital.co.nz, 0 revandtorque.com, 1 -revanops.io, 1 revapost.fr, 1 revayd.net, 1 revconnect.tk, 1 revcovi.com, 1 revda.su, 1 -revdashpro.com, 1 +reveal-sound.com, 1 revealcellcamtracker.com, 1 revealdata.com, 1 -revealmarket.xyz, 1 revechat.com, 1 revellecoaching.com, 0 revellio.tk, 1 @@ -123756,7 +124178,9 @@ reversec.com, 1 reversecanada.com, 1 reversedns.tk, 1 reverseengineer.net, 1 +reverseloansolutions.com, 1 reversemortgageguides.com, 1 +reversemortgageguides.org, 1 reversesouthafrica.com, 1 reversetransfer.org, 1 revgen.life, 1 @@ -123769,7 +124193,6 @@ reviewengin.com, 1 reviewgeek.com, 1 reviewheaven.ml, 1 reviewku.id, 1 -reviewmi.co.uk, 1 reviews.anime.my, 0 reviewsonline.ml, 1 revijahak.hr, 1 @@ -123808,6 +124231,7 @@ revive-me.org, 1 reviveourhearts.com, 1 reviveplumbingmelbourne.com.au, 1 revivewellholistichealth.com, 1 +revivicor.com, 1 reviviendolavilla.tk, 1 revizor-online.cf, 1 revizor-online.ga, 1 @@ -123830,6 +124254,7 @@ revolutionaryireland.ga, 1 revolutionaryireland.gq, 1 revolutionaryireland.ml, 1 revolutionengine.tk, 1 +revolutionenkommer.dk, 1 revolutionhealth.ca, 1 revolutionizingheartfailure.com, 1 revolutionofbeauty.tk, 1 @@ -123838,7 +124263,7 @@ revolvetuning.co.uk, 1 revolware.com, 1 revosoft.de, 1 revres.info, 1 -revspace.nl, 0 +revspace.nl, 1 revthefox.co.uk, 1 revton.com, 1 revuestarlight.me, 1 @@ -123872,7 +124297,7 @@ rexcutty.com, 1 rexdf.net, 1 rexel.fr, 1 rexeldvf.nl, 1 -rexenergy.fi, 1 +rexeroofing.com, 1 rexo.ch, 1 rexograph.com, 1 rexskz.info, 1 @@ -123885,13 +124310,9 @@ rexxworld.com, 1 rey.id, 1 reyesfernando.com, 1 reyesholdings.com, 1 -reyeswraps.com, 1 -reykjaviktips.com, 1 -reykjaviktips.nl, 1 reynders.xyz, 1 reynoldsburg.gov, 1 reytorogroup.com, 1 -rezacat.com, 1 rezbs.com, 1 rezendemultimarcas.com.br, 1 rezept-planer.de, 1 @@ -123916,8 +124337,6 @@ rfds.com.au, 1 rfec.com, 1 rfeif.org, 1 rfgwealthadvisory.com, 1 -rfinder.com, 1 -rfinderradios.com, 1 rfn.cz, 1 rfnews.tk, 1 rfodistribution.co.za, 1 @@ -123930,8 +124349,6 @@ rfxanalyst.com, 1 rga.cl, 1 rgacomputacion.cl, 1 rgapi.net, 1 -rgb.eco, 1 -rgbchemicals.com, 1 rgbeta.net, 1 rgbinnovation.com, 1 rgbpty.com, 1 @@ -123940,14 +124357,13 @@ rgdoi.net, 1 rgdt.tk, 1 rgfundraising.com, 1 rggraphics.mx, 1 -rgmdtri.ru, 1 rgnext.com, 1 -rgoods.com, 1 rgpd-elearning.com, 1 rgservice.ml, 1 rgshealthcare.com, 1 rgstatic.net, 1 rgtonline.com, 1 +rgz.ee, 1 rh-automotive.co.uk, 1 rhaegal.me, 1 rhamzeh.com, 1 @@ -123965,6 +124381,7 @@ rheijmans.nl, 0 rhein-erft-kreis.de, 1 rhein-liebe.de, 1 rhein-main-rna.de, 1 +rheincargo.com, 1 rheine.schule, 1 rheineschulen.de, 1 rheinland-pilgern.de, 1 @@ -124008,6 +124425,7 @@ rhonni.com, 1 rhost.nl, 1 rhris.com, 1 rhsb.ch, 1 +rhsc.ie, 1 rhscz.eu, 1 rhswl.com, 1 rhubarb.land, 1 @@ -124058,7 +124476,6 @@ ric-rac.org, 1 ricarama.com, 1 ricardo.nu, 0 ricardobaptistaleite.pt, 1 -ricardodevries.io, 1 ricardojsanchez.com.ar, 1 ricardopq.com, 1 ricardoquaresma.tk, 1 @@ -124075,6 +124492,7 @@ ricedust.com, 1 riceforafrica.net, 1 ricelasvegas.com, 1 ricettedellanonna.net, 1 +ricettesemplicieveloci.altervista.org, 1 rich-good.com, 0 richadams.me, 1 richandsteph.co.uk, 1 @@ -124090,6 +124508,7 @@ richardgrifno.com, 0 richardharpur.com, 1 richardhouts.tk, 1 richardinesrolltop.com, 1 +richardkorom.hu, 1 richardlangham.plumbing, 1 richardleereporting.com, 1 richardlewisjewelry.com, 1 @@ -124098,7 +124517,6 @@ richardrosario.com, 1 richardschut.nl, 1 richardsdebt.com, 1 richardson.cam, 1 -richardson.computer, 1 richardson.engineering, 1 richardson.pictures, 1 richardson.software, 1 @@ -124107,6 +124525,7 @@ richardson.tk, 1 richardson.tw, 1 richardsonceballo.com, 1 richardsoncountyne.gov, 1 +richardsongomes.com, 1 richardsreporting.com, 1 richardstengel.com, 1 richardstonerealestate.com, 0 @@ -124115,7 +124534,7 @@ richbutler.co.uk, 1 richecommecresus.com, 1 richel-group.fr, 1 richerenches.fr, 1 -richeyweb.com, 1 +richeza.com, 1 richfieldadamscowi.gov, 1 richfieldsean.org, 1 richie.cloud, 0 @@ -124144,6 +124563,7 @@ richmond.com, 1 richmondca.gov, 1 richmondcountync.gov, 1 richmondla.gov, 1 +richmoney.us, 1 richmtdriver.com, 1 richs-construction.com, 1 richtabak.ru, 1 @@ -124156,6 +124576,7 @@ ricinolja.nu, 1 rickelrath.de, 1 rickengineering.com, 1 ricki-z.com, 0 +rickmakes.com, 1 rickmanlegal.com, 1 rickmartensen.nl, 0 ricknewman.pro, 1 @@ -124166,7 +124587,7 @@ rickscastles.co.uk, 1 rickthad.com, 1 rickvandenbosch.net, 1 rickvanderzwet.nl, 1 -ricky.photos, 0 +ricky.photos, 1 rickyips.tk, 1 rickyromero.com, 1 rickysgames.tk, 1 @@ -124174,6 +124595,7 @@ rickythewoof.it, 1 rico-brase.de, 1 rico-j.de, 1 rico.ovh, 1 +ricobaldegger.ch, 1 ricochet.com, 1 ricochet.im, 1 ricos.co.jp, 1 @@ -124201,22 +124623,21 @@ ridetour.ru, 1 ridewithloop-url.com, 1 ridgecrestca.gov, 1 ridgefieldct.gov, 1 -ridgelineit.com.au, 1 ridgelysradar.com, 1 ridgespringsc.gov, 1 +ridgewaterlodge.com, 1 ridgewaywi.gov, 1 ridgidgear.eu, 1 ridho.id, 1 ridingoklahoma.com, 1 -ridingthemagic.uk, 1 ridingthetigerpro.com, 1 rido.ml, 1 ridsdale.ca, 1 -ridw.org, 1 riebe.eu, 1 rieboldt-service.de, 1 riechsteiner.tech, 0 -riederle.com, 0 +riecht-besser.de, 1 +riederle.com, 1 riedl-shk.de, 1 riekko-orkesteri.fi, 1 riemzac.com, 1 @@ -124225,7 +124646,6 @@ riepe-mail.de, 1 riepe.cc, 0 riesenweber.id.au, 1 riesheating.com, 1 -rieskaniemi.com, 1 rieslingtrailclarecottages.ga, 1 riess-ambiente.net, 0 rietspoppen.tk, 1 @@ -124258,16 +124678,21 @@ rightpatient.com, 1 rightreview.co.uk, 1 rights.ninja, 1 rightschool.cf, 1 +rightsign.com.au, 1 +rightsignantigentest.com.au, 1 rightsizingcalculator.com, 1 rightsolutionplumbing.com.au, 1 rightsourcingusa.com, 1 rightstartcapital.com, 1 rightstartent.com, 1 rightstartinc.com, 1 +rightstuff.link, 1 rightthingrecruit.com, 1 righttolife.org.uk, 1 righttrack.io, 1 rigidbuilding.com, 1 +rigidlandscapes.com.au, 1 +rigidtactical.com, 1 rigly.uk, 1 rigonidiasiago-ar.com, 1 rigonidiasiago-usa.com, 1 @@ -124275,6 +124700,7 @@ rigonidiasiago.com, 1 rigonidiasiago.de, 1 rigonidiasiago.es, 1 rigonidiasiago.fr, 1 +rigonidiasiago.international, 1 rigonidiasiago.it, 1 rigonidiasiago.nl, 1 rigonidiasiago.pl, 1 @@ -124306,11 +124732,13 @@ rikuwe.com, 1 rikuwe.eu, 1 rikuwe.work, 1 rileyevans.co.uk, 1 +rileypaige.com, 1 rileys.club, 0 rileyskains.com, 0 rileystar.com, 1 rilish.cf, 1 rillet.com, 0 +rilretg.com, 1 rim-kardzhali.bg, 1 rim-kardzhali.org, 1 riman.tk, 1 @@ -124318,12 +124746,7 @@ rimax.vn, 0 rime.red, 1 rimessaggio.it, 1 rimetsu.com, 1 -rimi.ee, 1 -rimi.lt, 1 -rimi.lv, 1 -rimibaltic.com, 1 rimin.moe, 1 -riminghuts.com, 1 riministreet.com, 0 riminitoday.it, 1 rimo.site, 1 @@ -124331,6 +124754,8 @@ rimonhwang.com, 1 rimorrecherche.nl, 1 rimpianto.com, 1 rimzim.tk, 1 +rinabhabra.com, 1 +rinaent.com, 1 rincat.ch, 1 rincon-nsn.gov, 1 rinconanimalista.com, 1 @@ -124358,7 +124783,6 @@ rinka.moe, 1 rinkhill.com, 1 rinko-mama.com, 1 rinoartdistrict.org, 1 -rinomedellin.com, 1 rinova.me, 1 rinsbacherhof.com, 1 rinskeshomepage.tk, 1 @@ -124372,11 +124796,12 @@ riogrooming.com, 1 rioinbox.com.br, 1 riolista.com, 1 rioloagolf.tk, 1 +riomaisbrindes.com.br, 1 riomi.org, 1 riosoil.co.uk, 1 riosoil.com, 1 +riosoils.co.uk, 1 riosoils.com, 1 -riotplus.com, 1 ripadores.tk, 1 ripcorddesign.com, 1 ripcordsandbox.com, 1 @@ -124405,9 +124830,9 @@ riproduzionichiavi.it, 1 riptidetech.io, 1 ripvip.ie, 1 riri-tendedasole.it, 1 +riri.my, 1 ririro.com, 1 ris.fi, 1 -ris2048.pt, 1 risa.chat, 1 risada.nl, 1 risaiku.net, 1 @@ -124440,6 +124865,7 @@ rishabh.me, 1 risheriffs.gov, 1 rishikeshyoga.in, 1 rishikeshyogavalley.com, 1 +rishta360.com, 1 risi-china.com, 1 rising-cubers.tk, 1 risingsoftware.com, 1 @@ -124467,7 +124893,6 @@ risquefetish.com, 1 risquefetish.net, 1 risquefetish.org, 1 risquefetishtoys.com, 1 -risson.space, 1 ristioja.ee, 1 ristisanat.fi, 0 ristorante-orchidea.be, 1 @@ -124489,6 +124914,7 @@ ritchieneville.tk, 1 rite-tech.us, 1 riteboost.com, 1 ritepriceheatingcooling.com.au, 1 +riterry.com, 1 riteway.rocks, 1 ritirocalcinacci.roma.it, 1 ritirocalcinacci.viterbo.it, 1 @@ -124503,8 +124929,10 @@ ritsf.com, 1 rittau.org, 1 ritterspach.me, 1 ritual-gratek.ru, 1 +ritual.com, 1 ritual.ml, 0 rituelamour.com, 1 +ritunewasser.ch, 1 ritus.md, 1 ritzlux.com.tw, 1 riusma.com, 1 @@ -124514,7 +124942,6 @@ rivago.tk, 0 rivals.space, 1 rivalsa.cn, 1 rivalsa.net, 1 -rivalyse.fr, 1 rivastation.de, 1 riveal.fr, 1 rivenmains.com, 1 @@ -124529,7 +124956,6 @@ rivercitypreschool.com, 1 rivercityroofs.com, 1 riverford.co.uk, 1 riverlea.com.au, 1 -riveros.tv, 1 riverotravel.cl, 1 riverpark.casa, 1 riverrun.tk, 1 @@ -124545,7 +124971,6 @@ riversidesligo.ie, 1 riversmeet.co.uk, 1 riverspromo.com, 1 riversroses.de, 1 -riversseasoceans.org, 1 riverton.se, 1 rivertv.ca, 1 riverviewcamp.com, 1 @@ -124557,15 +124982,15 @@ rivesdelorne.com, 1 rivethealthlaw.com, 1 rivian.com, 1 riviantrackr.com, 1 -rivierainvest.hu, 1 rivingtongreenwich.co.uk, 1 rivirliving.com, 1 rivistadipsichiatria.it, 1 rivmedia.co.uk, 1 rivolta.tk, 1 rivus.net, 1 -riwaya.co.uk, 1 +riwaya.co.uk, 0 riweco.ga, 1 +riwers.io, 1 rix.ninja, 1 rixcloud.moe, 1 rixzz.ovh, 1 @@ -124590,7 +125015,6 @@ rjfedor.com, 1 rjfedor.ddns.net, 1 rjia.gq, 1 rjltimmerwerken.nl, 1 -rjwhitworth.com, 1 rk-box.ru, 1 rk-links.ml, 1 rk-mediawork.de, 0 @@ -124610,8 +125034,10 @@ rl3.de, 1 rlalique.com, 1 rlan.eu.org, 1 rland.ph, 1 +rlcosmeticsurgery.com, 1 rleeden.servehttp.com, 1 -rllinsure.com, 0 +rleh.de, 1 +rllinsure.com, 1 rlmud.tk, 1 rlove.org, 1 rlptoday.de, 1 @@ -124624,6 +125050,7 @@ rmbs.de, 1 rmbs.org, 1 rmc-clinic.ru, 1 rmcbs.de, 1 +rmcinsuranceservices.com, 1 rmconsulting.com, 1 rmdb.tk, 1 rmdhnreza.my.id, 1 @@ -124639,6 +125066,7 @@ rmitobacco.com, 1 rmj4u.com, 1 rmkdirect.com, 1 rml-liege.be, 1 +rmly.net, 1 rmly.win, 1 rmm-i.com, 1 rmmanfredi.com, 1 @@ -124657,7 +125085,7 @@ rmsliberty.com, 1 rmsupply.nl, 1 rmt-construction.co.za, 1 rmtconstruction.co.za, 1 -rmurai.com, 1 +rmurai.com, 0 rmvalues.com, 1 rmw-energy.de, 1 rn29.me, 1 @@ -124670,6 +125098,7 @@ rngmeme.com, 1 rnjobsite.com, 1 rnmkrs.co, 1 rnrrescue.com, 1 +rnz3.net, 1 ro.co, 1 ro.search.yahoo.com, 0 ro89.com, 1 @@ -124681,6 +125110,7 @@ road2skoda.com, 1 roadaccident.tk, 1 roadandtransport.ga, 1 roadbikes.tk, 1 +roadbridge.com, 1 roadchefapprenticeships.co.uk, 1 roaddoc.de, 1 roadguardiansoftware.com, 1 @@ -124693,6 +125123,7 @@ roadshow.com.au, 1 roadtochina.tk, 1 roadtoglory.tk, 1 roadtopgm.com, 1 +roadtoross2025.com, 1 roadtripaustralia.com.au, 1 roadtripnation.com, 1 roadtripusa.tk, 1 @@ -124709,13 +125140,13 @@ roaster.ga, 1 roastrepublic.de, 1 rob006.net, 1 robandjanine.com, 1 -robarbeauty.com, 1 robaxin750mg.ml, 1 robben.io, 1 robbertt.com, 0 robbie.bio, 1 robbie.contact, 1 robbiebird.tk, 1 +robbiecrash.me, 1 robbielowe.co, 1 robbievasquez.com, 1 robbinsdalemn.gov, 1 @@ -124749,7 +125180,7 @@ robertof.ovh, 1 robertoggarcia.tk, 1 robertopazeller.ch, 1 robertoullan.tk, 1 -robertreeveslaw.com, 1 +robertreeveslaw.com, 0 robertrijnders.nl, 1 robertsfinejewelers.com, 1 robertsjoneslaw.com, 0 @@ -124765,7 +125196,6 @@ robin-kusch.de, 1 robin-novotny.com, 1 robin.co.kr, 1 robin.info, 1 -robinapersonaltrainers.com, 1 robinb0s.nl, 1 robinbos.nl, 1 robinbrook.co.uk, 1 @@ -124788,7 +125218,6 @@ robinsremembered.tk, 1 robintimmers.nl, 0 robinvanpersie.tk, 1 robinvdmarkt.nl, 1 -robinvieregge.de, 1 robinwill.de, 1 robinwinslow.uk, 1 robinzorg.nl, 1 @@ -124827,6 +125256,7 @@ robots-ju.ch, 1 robotsbigdata.com, 1 robotstxt.com, 1 robottelepites.hu, 1 +robottip.com, 1 robowars.ga, 1 robox.info, 1 robpol86.com, 1 @@ -124836,8 +125266,6 @@ robsamtechnology.com, 1 robspc.repair, 1 robstibal.com, 1 robtatemusic.com, 1 -robtex.com, 1 -robtog.com, 1 robu.in, 1 robust.ga, 1 robustac.com, 1 @@ -124853,7 +125281,6 @@ roc.gov.au, 0 rocabot.ddns.net, 1 rocahub.org, 1 roccasemijoias.com.br, 1 -roccoseuropeangarage.com, 1 rochcloud.cf, 1 rochediagram.com, 1 rochesterglobal.com, 1 @@ -124867,9 +125294,9 @@ rock-base.tk, 1 rock4life.be, 1 rocka.me, 1 rockabilly-sinners.tk, 1 -rockalendar.es, 1 rockandroll.tk, 1 rockats.org, 1 +rockbandparty.com, 1 rockbankland.com.au, 1 rockbridge.tk, 1 rockcelebrities.net, 1 @@ -124893,9 +125320,34 @@ rocketlabcorp.com, 1 rocketmill.co.uk, 1 rocketmulejunkremoval.com, 1 rocketnet.ml, 1 +rocketpiggames.com, 1 rocketpin.com, 1 rocketr.net, 1 rocketrubber.com, 1 +rocketsales.al, 1 +rocketsales.at, 1 +rocketsales.be, 1 +rocketsales.bg, 1 +rocketsales.by, 1 +rocketsales.cz, 1 +rocketsales.dk, 1 +rocketsales.es, 1 +rocketsales.eu, 1 +rocketsales.fi, 1 +rocketsales.fr, 1 +rocketsales.gr, 1 +rocketsales.io, 1 +rocketsales.it, 1 +rocketsales.lt, 1 +rocketsales.lu, 1 +rocketsales.md, 1 +rocketsales.me, 1 +rocketsales.mk, 1 +rocketsales.pt, 1 +rocketsales.ro, 1 +rocketsales.se, 1 +rocketsales.si, 1 +rocketsales.sk, 1 rocketsciencerealty.com, 1 rocketsworld.tk, 1 rockettube.com, 0 @@ -124929,6 +125381,7 @@ rockporttx.gov, 1 rockportusa.com, 1 rockpov.com.br, 1 rockptx.com, 1 +rockraiders.rocks, 1 rockrider.tk, 1 rockriver.tk, 1 rockrivertrail.com, 1 @@ -124940,14 +125393,15 @@ rocksoundradio.tk, 1 rockspringswi.gov, 1 rocktonil.gov, 1 rocktontownshipil.gov, 1 +rockvilledentalarts.com, 1 rockworldteam.tk, 1 rockyford-co.gov, 1 rockymountaininsurancecenter.com, 1 -rockymountainrolloffandwaste.com, 1 rockymountainspice.com, 1 rockymountva.gov, 1 rockymtnexpress.com, 1 rockyourlife.gq, 1 +rockyrealestate.com, 1 rocssocial.com.au, 1 rocssti.net, 1 rodab.party, 1 @@ -124967,6 +125421,7 @@ rodeofx.com, 1 rodeohire.com, 1 rodeosales.co.uk, 1 roder-skarf.se, 1 +rodgersawnings.com, 1 rodichi.net, 1 rodin.tk, 1 rodinka.tk, 1 @@ -124987,7 +125442,6 @@ rodosto.com, 1 rodpenroseracing.com.au, 1 rodrigamer.com, 1 rodrigoacevedo.com.uy, 1 -rodrigoalmeida.net, 1 rodrigocarvalho.blog.br, 1 rodrigodematos.tk, 1 rodrigosa.lu, 1 @@ -124999,6 +125453,7 @@ roehrbein.de, 1 roelenscitynews.ml, 1 roelfs.org, 1 roelhollander.eu, 1 +roeljoyas.com, 1 roelkoops.nl, 1 roelof.io, 1 roelonline.tk, 1 @@ -125017,6 +125472,7 @@ rogagym.com, 1 rogaineforwomen.ga, 1 rogalcraigtaylor.com, 1 rogard.fr, 0 +rogarden.ro, 1 roge.pw, 1 rogeiro.net, 1 rogell.tk, 1 @@ -125040,13 +125496,16 @@ rogplus.nl, 1 rogue-e.xyz, 1 rogue.pw, 1 roguecoder.net, 1 +roguefortgame.com, 1 roguelicious.com, 1 roguenation.space, 1 roguenetworks.me, 1 roguenexus.io, 1 roguerocket.com, 1 roguetech.ca, 1 +roguevalleywinecountry.com, 1 rohal.tk, 1 +rohanbassett.com, 1 rohansingh.cf, 1 rohde.de, 0 rohedaten.de, 1 @@ -125056,6 +125515,7 @@ rohitpatil.com, 1 rohkeakirkko.fi, 1 rohlik.cz, 1 rohrle.com, 1 +rohrle.net, 1 rohrreinigung-zentrale.de, 1 rohrstock.at, 1 roi4presenter.com, 1 @@ -125066,7 +125526,6 @@ rointe.online, 1 roishopper.com, 1 roisu.org, 0 rojandaru.com, 1 -rojgarmandi.com, 1 rojiblancos.tk, 1 rojotv.tk, 1 rok-pro-dobro.cz, 1 @@ -125082,6 +125541,7 @@ rokudenashi.de, 1 rokuk.org, 1 rokz.ly, 1 rolamar.com.br, 1 +roland-dickeyjr.com, 0 roland.io, 1 rolandinsh.com, 0 rolandlips.com, 1 @@ -125114,7 +125574,7 @@ rollerderbywines.ga, 1 rollerwarehouse.com, 1 rolleyes.org, 1 rollforadventure.com.au, 1 -rolling.bike, 1 +rolling.es, 1 rollingbarge.com, 1 rollingcouchapp.com, 1 rollinghillsestates.gov, 1 @@ -125133,14 +125593,13 @@ rolotrans.ml, 1 rolstoelappartementen.tk, 1 roltech.ru, 1 rolzzandik.cf, 1 +roma-lindenhof.de, 0 roma-servizi.it, 1 romab.com, 1 romadiluna.band, 0 romadprojects.com.au, 1 romagnaoggi.it, 1 romail.ml, 1 -romaindelfosse.fr, 1 -romainemurray.org, 1 romainlapoux.com, 1 romainlapoux.fr, 1 roman-pavlik.cz, 1 @@ -125151,10 +125610,8 @@ romancy.tk, 1 romandaphotography.com, 1 romanglos.de, 1 romania-film.ml, 1 -romania24.ro, 1 romaniacompany.com, 1 romanian.cam, 1 -romanistaweb.it, 1 romank.com.np, 1 romankondratev.com, 1 romankozak.cz, 1 @@ -125176,6 +125633,7 @@ romantik.tk, 1 romantischetuin.nl, 1 romanusmart.ro, 1 romanywg.com, 1 +romanzolotarev.com, 1 romapk.tk, 1 romarin.es, 1 romaservicegroup.it, 1 @@ -125186,7 +125644,9 @@ romatoday.it, 1 romatours.pt, 1 romatrip.it, 1 rombarte.pl, 1 +rombey.capital, 1 romcom.info, 1 +romdrop.com, 1 rome-airport.net, 1 rome.tools, 1 romea.cz, 1 @@ -125200,13 +125660,13 @@ romeoferraris.com, 1 romeoijulio.tk, 1 romerska-ringar.se, 1 romesite.com, 1 -rometips.nl, 1 rommelhuntermusic.tk, 1 rommelmark.nl, 1 rommelwood.de, 1 romo-holidays.de, 1 romo-holidays.dk, 1 romspedia.com, 1 +romtex.co.uk, 1 romun.net, 1 romy.tw, 1 ronaldcantor.com, 1 @@ -125231,12 +125691,13 @@ roninathletics.com, 1 roninf.ch, 1 roninitconsulting.com, 1 roninmotorsports.net, 1 +ronkeesom.nl, 1 ronlinemarketing.com, 1 ronniegane.kiwi, 1 +ronnylindner.de, 1 ronomon.com, 1 ronsamazingstories.com, 1 ronthemonkey.com, 1 -ronza.us, 1 ronzertnert.xyz, 1 roobet.com, 1 roodarvasi.ir, 1 @@ -125302,6 +125763,7 @@ root-books.gq, 1 root-books.ml, 1 root-couture.de, 1 root-space.eu, 1 +root.bg, 1 root.cz, 1 root.eu.org, 1 root.place, 1 @@ -125310,6 +125772,7 @@ rootbsd.at, 1 rootcamp.net, 1 rootd.at, 1 rootdo.com, 1 +rootdo.org, 1 rootear.com, 1 rootedallies.space, 1 rootedlifemontessori.com, 1 @@ -125317,6 +125780,9 @@ rootedtolast.org, 1 rootedwellnessot.com, 1 rooter.group, 1 rootergroupinc.ca, 1 +rootfor.me, 1 +rootgsm.com, 1 +rootie.de, 1 rootingpalace.tk, 1 rootlair.com, 1 rootless.ga, 1 @@ -125330,7 +125796,7 @@ rootprompt.at, 1 rootrelativity.com, 1 rootroo.com, 1 roots-example-project.com, 0 -roots.io, 1 +roots.io, 0 rootsandrain.com, 1 rootsbar.fr, 0 rootsinmadrid.tk, 1 @@ -125347,17 +125813,20 @@ roowatertreatment.com, 1 roozbeh.tk, 1 rop.cx, 1 ropd.info, 1 -ropo.uk, 1 +ropesmart.com, 1 roquebrunesurargens-tourisme.fr, 1 roques.tk, 1 +roquesevilla.com, 1 rorelseprojektet.se, 1 roromendut.online, 1 rorr.im, 1 +roryneville.com, 1 rosa-spain.tk, 1 rosabellas.co.uk, 1 rosabrasiv.ga, 1 rosacosmos.tn, 1 rosaflorbijoux.com.br, 1 +rosakkreditatsiya-forum.ru, 1 rosalinda.cl, 1 rosalindturner.co.uk, 1 rosalopezcortes.tk, 1 @@ -125373,9 +125842,11 @@ rosconf.ru, 1 roscopro.com, 1 rosdpk.ru, 1 rosdver.ru, 1 +rose-prism.org, 1 rosebikes.com, 1 rosebikes.de, 1 rosebikes.nl, 1 +roseboom-bouwkundigadvies.nl, 1 rosebudcountysheriffmt.gov, 1 rosecoaudit.com, 1 rosedenellandudno.co.uk, 1 @@ -125397,10 +125868,11 @@ rosensrauk.com, 1 roseparkhouse.com, 1 roses-eternelles.fr, 1 rosesanderslaw.com, 1 -roset-moebel.de, 1 rosetiger.life, 1 +rosettapeters.com, 0 rosetteromance.tk, 1 rosetwig.ca, 1 +rosetwig.systems, 1 rosevalleyfolk.com, 1 rosevillefacialplasticsurgery.com, 1 rosevillekindy.nsw.edu.au, 1 @@ -125408,7 +125880,7 @@ rosewater.me, 1 rosewebdesignstudio.co.uk, 1 rosewebdesignstudio.uk, 1 rosfan.by, 1 -roshanrsivakumar.com, 0 +rosgenea.ru, 1 roshiya.co.in, 1 roshmed.com, 1 roshtech.co.ke, 1 @@ -125419,10 +125891,10 @@ roskillcv.org.nz, 1 roslagenshiss.se, 1 roslagensmansjour.tk, 1 roslynpad.net, 1 -rosmalen.nl, 1 rosme.it, 1 rosoft.tk, 1 rosolioitalicus.com, 1 +rosone.ru, 0 rososa.com, 1 rosound.cz, 1 rospromotion.com, 1 @@ -125433,16 +125905,16 @@ rosscountyohiocasa.gov, 1 rosscountyohiocourts.gov, 1 rosscountyohiotaxlist.gov, 1 rossen.be, 1 -rosser.no, 1 rosset.me, 1 rosset.net, 1 rossi-aero.com, 1 rossia.ga, 1 +rossignoli.it, 1 rossiyskaja.cf, 1 rosskingbooks.com, 1 +rosskopfs.de, 1 rosslug.org.uk, 1 rossome.org, 1 -rossonerisiamonoi.it, 1 rossparker.org, 1 rossstores.com, 1 rosstownshipmi.gov, 1 @@ -125462,7 +125934,9 @@ rosty.sh, 1 rostzaschita.ru, 1 roswellcity.tk, 1 rosystemsint.com, 1 +rot256.io, 1 rot47.net, 1 +rot8nutrition.com, 1 rota.te.it, 1 rotamap.net, 1 rotanaval.tk, 1 @@ -125512,7 +125986,7 @@ rottler.io, 1 rottnestexpress.com.au, 1 rottweil-hilft.de, 1 rottweilerdogcare.com, 1 -rotulo.fit, 1 +rotu.pw, 1 rotunneling.net, 1 rouair.com, 1 rouamatfashion.gr, 1 @@ -125525,7 +125999,6 @@ roughnex.tk, 1 roughnotes.com, 1 roughtime.se, 1 rouken.bio, 1 -roukencells.com, 1 roulettelive.ml, 1 roulettestar.com, 1 roulinfo.ch, 0 @@ -125536,6 +126009,7 @@ roundball.tk, 1 roundcube.mayfirst.org, 0 rounder.pics, 1 roundrock-locksmith.com, 1 +roundtechsquare.com, 1 roundtoprealestate.com, 0 roussillon-informatique.fr, 1 roussos.cc, 1 @@ -125543,7 +126017,6 @@ roussosmanos.gr, 1 rout0r.org, 1 route-flex.com, 1 route-wird-berechnet.de, 1 -route360.ai, 1 route66smiles.com, 1 routeassess.com.au, 1 routechoices.com, 1 @@ -125554,7 +126027,6 @@ routerclub.ru, 1 routeto.com, 1 routevanverzoening.nl, 1 rouwcentrumterheide.be, 1 -rouxb.in, 1 rouyt.com, 1 rovatronic.tk, 1 roverglobal.ga, 1 @@ -125562,9 +126034,9 @@ roveridx.com, 1 roverkob.dk, 1 rovetf.tk, 1 rovezzano.tk, 1 +rovian.ua, 1 rovid.link, 1 rovin.tk, 1 -rovino.es, 1 rovno-news.ru, 1 rowan.fyi, 1 rowancasting.ie, 1 @@ -125593,6 +126065,7 @@ roxotranslations.com, 1 roxswinery.com, 1 roxville.tk, 1 roy-buehring.de, 1 +roy-space.com, 1 roy.wang, 1 royacshop.com, 1 royal-coatings.com, 1 @@ -125613,16 +126086,19 @@ royal833.com, 0 royal84.com, 0 royal851.com, 0 royal852.com, 0 +royal869.com, 0 royal876.com, 0 royal877.com, 0 royal88.com, 1 royal880.com, 0 +royal882.com, 0 royal8822.com, 0 royal885.com, 0 royal886.com, 0 royal887.com, 0 royal896.com, 0 royal898.com, 0 +royal899.com, 0 royal929.com, 0 royal939.com, 1 royalasianescorts.co.uk, 1 @@ -125646,6 +126122,7 @@ royalfoundation.com, 1 royalgardens.no, 1 royalgdeluxe.al, 1 royalgrandpalace.th, 1 +royalgrandshades.com, 1 royalgroup.msk.ru, 1 royalhosting.ch, 1 royalkidspleven.bg, 1 @@ -125658,7 +126135,6 @@ royaloakcornwall.com, 1 royaloz.ma, 1 royalpainters.co, 1 royalpalmbeachfl.gov, 1 -royalpalmsdubai.com, 1 royalpanda.com, 1 royalrace.tk, 1 royalreporting.ca, 1 @@ -125679,17 +126155,19 @@ royauction.com, 1 royaumesoublies.com, 1 roycampbell.tk, 1 royceandsteph.com, 1 +roycestars.com, 1 roycewilliams.net, 1 royger.tk, 1 royoy.com, 1 royrevell.com, 1 royveenendaal.com, 1 -roywang.com, 1 roywater.gov, 1 royxiang.me, 1 royzez.com, 1 rozalisbengal.ro, 1 rozalynne-dawn.ga, 1 +rozar.eu, 1 +rozar.sk, 1 rozataki.com.tr, 1 rozemaandag.tk, 1 rozemuller.com, 0 @@ -125698,12 +126176,6 @@ rozpieraki-hydrauliczne.pl, 1 rozprodat.cz, 1 rozsvitsvet.cz, 1 roztilefona.net, 1 -rozwazania.pl, 1 -rozwod.bydgoszcz.pl, 1 -rozwod.gdansk.pl, 1 -rozwod.gdynia.pl, 1 -rozwod.torun.pl, 1 -rozwod.wloclawek.pl, 1 rp-megapolis.tk, 1 rp-murk.tk, 1 rpa.gov, 1 @@ -125726,6 +126198,7 @@ rpmdrivingschool.com.au, 1 rpmglobal.com, 1 rpmrecords.dk, 0 rpn-sfera.ru, 1 +rpnewspaper.com, 1 rpora.co, 1 rpower.com, 1 rpowerpos.com, 1 @@ -125751,8 +126224,8 @@ rrbpatna.gov.in, 1 rrbt.eu, 1 rrbt.net, 1 rrbts.com, 1 +rrcmarine.eu, 1 rrdtool.com, 1 -rrgsuisse.ch, 1 rrgtampa.com, 1 rrke.cc, 0 rrmac.ml, 1 @@ -125767,8 +126240,6 @@ rrwolfe.com, 1 rs-cloud.ddns.net, 1 rs-devdemo.host, 1 rs-maschinenverleih.de, 1 -rs-nextcloud.de, 1 -rs-nonprod.de, 1 rs-sh.ru, 1 rs.wiki, 1 rsa-erp.com, 1 @@ -125788,6 +126259,7 @@ rsdantyslab.lt, 1 rsdbyroos.nl, 1 rsdisedezzari.it, 1 rsdns.ml, 1 +rse-reporting.com, 1 rsec.kr, 1 rsecure.tk, 1 rsfinance.ch, 1 @@ -125807,9 +126279,12 @@ rsm-intern.de, 1 rsml.co.uk, 1 rsng.com, 1 rspevents.ro, 1 +rspp.ru, 1 +rsquare.nl, 1 rsridentassist.com, 1 rsrnd.org, 1 rsruralrevendas.com.br, 1 +rsrv.fr, 1 rss-reader.net, 1 rss-reader.org, 1 rss.org.uk, 1 @@ -125879,13 +126354,12 @@ rtesport.eu, 1 rtestore.eu, 1 rtgame.co.uk, 1 rtgnews.cf, 1 -rtholf.nu, 1 rths.tk, 0 -rtidhonbe.com, 1 rtjobsite.com, 1 rtkbe.com, 1 rtlnitro.de, 1 rtlspiele.de, 1 +rtm.kr, 0 rtmi.co.il, 1 rtmoran.org, 1 rtmtech.ru, 1 @@ -125928,10 +126402,10 @@ rubber.cf, 1 rubberband.com, 1 rubberduckers.co.uk, 1 rubbermaidoutlet.com, 0 -rubbermetrics.com, 1 rubbleedenvale.co.za, 1 rubblekempton.co.za, 1 rubblemidrand.co.za, 1 +rubblerandburg.co.za, 1 rubbleremovalsjohannesburgsouth.co.za, 1 rubblesandton.co.za, 1 rubdiavila.com, 1 @@ -125973,6 +126447,7 @@ rubonnek.com, 1 rubooks.gq, 1 rubreklama.tk, 1 ruby-auf-schienen.de, 1 +rubyfactory.io, 1 rubyhornet.com, 1 rubykon.com, 1 rubymaybetranslations.com, 1 @@ -125980,10 +126455,10 @@ rubymediagroup.com, 1 rubyonline.tk, 1 rubyonremote.com, 1 rubyquincunx.org, 1 -rubyrelay.com, 1 rubystore.ga, 1 rucheentreprise.fr, 1 ruchka-mashinka.gq, 1 +rucinscy.net, 1 rucinski.ch, 1 rucinski.eu, 1 rucinski.uk, 1 @@ -126001,13 +126476,12 @@ rudibora.ml, 1 rudloff.pro, 1 rudnikas.com, 1 rudolf.gq, 1 -rudolph-umzuege.de, 1 rudolph.life, 1 rudovasky.com, 1 rudrastyh.com, 1 rudy.ga, 1 rudymendoza.tk, 1 -rue-de-la-vieille.fr, 1 +rue-de-la-vieille.fr, 0 ruebli-kurier.ch, 1 rueckert-gymnasium-blog.de, 1 rueckgr.at, 1 @@ -126015,6 +126489,7 @@ ruecklinger.net, 1 ruecommune.fr, 1 ruediger-voigt.eu, 1 ruedigervoigt.de, 1 +ruedirrenggli.ch, 0 ruedumas.freeboxos.fr, 1 rueduparticulier.tk, 0 rueg.eu, 1 @@ -126049,7 +126524,7 @@ rugk.dedyn.io, 1 rugspa.ie, 1 rugugu.jp, 1 ruha.co.in, 1 -ruhi.pk, 1 +ruhdental.com, 1 ruhigehand.de, 1 ruhimustafa.tk, 1 ruhnke.cloud, 0 @@ -126059,7 +126534,7 @@ ruhrmobil-e.de, 1 ruhrpott-media.com, 1 ruhrpott.rodeo, 1 rui-vet.com, 1 -ruiandrade.pt, 1 +ruiduntrading.com, 1 ruihuabao.com.cn, 1 ruileal.pt, 1 ruileitao.pt, 1 @@ -126072,7 +126547,6 @@ ruinsofchaos.com, 0 ruiruigeblog.com, 1 ruisai.org, 1 ruitersportbak.nl, 1 -ruitio.com, 1 ruixin.org, 1 ruja-pass.ddnss.de, 1 rujbin.ddns.net, 1 @@ -126091,6 +126565,7 @@ rumah123.com, 1 rumahbukitpodomoro.com, 1 rumahcodingtest.tk, 1 rumahkristal.tk, 1 +rumahpropertigratis.com, 1 rumahresep.cf, 1 rumaniamilitary.ro, 1 rumartinez.es, 1 @@ -126110,9 +126585,10 @@ rummey.co.uk, 1 rumoclock.dk, 1 rumreader.com, 1 rumtaste.com, 1 +rumusbilangan.com, 1 +rumussoal.com, 1 run-it-direct.co.uk, 1 run.cz, 1 -runa.io, 1 runagain.ch, 0 runalyze.com, 1 runame.ml, 1 @@ -126127,7 +126603,7 @@ rundh.de, 1 rundom.co, 1 rundu.ml, 1 rundum-service-omh.de, 1 -rundumberlin-classic.de, 1 +rundum-sorglos.digital, 1 rundumcolumn.xyz, 1 runebet.com, 1 runeblog.ru, 1 @@ -126143,16 +126619,15 @@ runeworldforums.tk, 1 runews.cf, 1 runfitcoaching.com, 1 rungie.com, 0 +rungisinternational.com, 1 rungstedhave.dk, 1 rungutan.com, 1 runharbor.com, 1 runicspells.com, 1 -runique.io, 1 -runjak.codes, 1 runklesecurity.com, 1 runlet.gq, 1 runlevel3.de, 1 -runmyprocess.com, 0 +runmyprocess.com, 1 runmyqubit.com, 1 runmyqubit.de, 1 runmyvillage.com, 1 @@ -126170,7 +126645,6 @@ runpartner.com, 1 runrun.es, 1 runrun.sk, 0 runschrauger.com, 1 -runsli.com, 1 runteller.com, 1 runvs.io, 1 ruobiyi.com, 0 @@ -126193,10 +126667,8 @@ ruquiz.tk, 1 rural-house.tk, 1 rural.gov, 1 ruralaction.org, 1 -ruralaventura.com, 1 ruralenergy.com, 1 ruralratings.us, 1 -ruralseptictn.com, 1 ruralsuppliesdirect.co.uk, 1 rurange-les-thionville.fr, 1 rurian-gyohen.com, 1 @@ -126210,6 +126682,7 @@ rusa.loan, 1 rusakov.tk, 1 rusbiathlon.ru, 1 rusdigisolutions.com, 1 +ruse.church, 1 ruseartgallery.tk, 1 rusemedia.com, 1 rusenemas.tk, 1 @@ -126258,6 +126731,7 @@ russia-furniture.tk, 1 russia-knigi.ga, 1 russia-rp.tk, 1 russia-travel.com, 1 +russia.dating, 0 russia.wtf, 1 russiahockey.tk, 1 russiahunting.tk, 1 @@ -126290,8 +126764,8 @@ rustambek.tk, 1 rustamkhanko.gq, 1 rustarg.com, 1 rustargentina.com, 1 -rustbanned.net, 1 rustdesk.com, 1 +rustfactory.io, 1 rustfu.rs, 1 rusticus-consulting.de, 0 rustls.com, 1 @@ -126302,7 +126776,6 @@ rustorch.com, 1 rustup.rs, 1 rustwood.fun, 1 rusty44.com, 1 -rustypp.com, 1 rustyrambles.com, 0 rustytub.com, 1 rusunion.org, 1 @@ -126335,16 +126808,16 @@ rutika.ru, 1 rutlandcountyswac.org, 1 rutlandma.gov, 1 rutlandvets.co.uk, 1 -rutoki.com, 1 rutorka.tk, 1 -rutorrent.net, 1 ruttenadvocaat.be, 1 ruttentuttels.nl, 1 +rutterroy.com, 1 ruud-online.tk, 1 ruudkoot.nl, 1 ruvoip.net, 1 ruwhof.com, 1 ruwhof.net, 1 +ruxit.com, 0 ruxleyglobal.com, 1 ruya.com, 1 ruyana.tk, 1 @@ -126361,7 +126834,6 @@ rvantwembeke.tk, 1 rvcampgroundhq.com, 1 rvender.cz, 1 rvf6.com, 1 -rvgifts.com, 1 rvmfm.com, 1 rvoigt.eu, 1 rvr.org, 1 @@ -126375,18 +126847,17 @@ rw.search.yahoo.com, 0 rw19.de, 1 rw2.de, 1 rwalch.at, 1 -rwandalicious.com, 0 +rwandalicious.com, 1 rway.pro, 1 rwb.charity, 1 rwbstuff.com, 1 rwgamernl.ml, 1 rwglaw.com, 1 rwhapdentalservicesreport.net, 1 -rwnpropertyservices.com, 1 +rwlib.net, 1 rwp7.com, 1 rws-cc.com, 1 rws-vertriebsportal.de, 1 -rwu.edu.pk, 1 rwuhawksherald.com, 1 rwx.ovh, 1 rwx.work, 1 @@ -126400,18 +126871,22 @@ rxcarbon.com, 1 rxcom.net, 1 rxhill.com, 1 rxperiusdata.com, 1 -rxphoto.com, 0 +rxphoto.com, 1 +rxss.com, 1 +rxssplus.com, 1 rxxx.ml, 1 rya.nc, 1 ryabinushka.tk, 1 ryan-13.tk, 1 ryan-design.com, 1 +ryan-gehring.com, 1 ryan-goldstein.com, 1 ryan.black, 1 ryan.cafe, 1 ryananeff.com, 1 ryanclemmer.com, 1 ryancmassey.com, 1 +ryancompanies.com, 1 ryandao.net, 1 ryandewsbury.co.uk, 1 ryanfamily.net.au, 1 @@ -126459,6 +126934,7 @@ rygiel.com.pl, 0 rylin.net, 1 rymanhp.com, 1 rymanow.tk, 1 +rymdweb.com, 1 rymergames.tk, 1 rymshospital.com, 1 rynekpierwotny.pl, 1 @@ -126502,7 +126978,6 @@ s-finance.eu, 1 s-geiser.de, 1 s-gong.com, 1 s-he.at, 1 -s-hertogenbosch.nl, 1 s-hertogenbosch.tech, 0 s-i-m.tk, 1 s-kaupat.fi, 1 @@ -126512,8 +126987,6 @@ s-mall.com.sg, 1 s-ms.org, 1 s-n-unso.com, 1 s-on.li, 1 -s-portsupport.nl, 1 -s-portsupportdenbosch.nl, 1 s-ppc.com, 1 s-s-paint.com, 1 s-si.com, 1 @@ -126541,13 +127014,13 @@ s10y.eu, 1 s1128.com, 1 s1l3nt.org, 1 s1mplescripts.de, 1 -s2.coach, 0 +s1ris.org, 1 +s2.coach, 1 s20121946.ml, 1 s26s.com, 1 s2i.ch, 0 s2member.com, 1 s2n.tech, 1 -s2o.me, 1 s2sgroup.fr, 1 s2t.net, 0 s36533.com, 1 @@ -126578,13 +127051,10 @@ s557.cc, 0 s5g8.com, 1 s64.cz, 1 s6729.co, 1 -s69.no, 1 s6957.co, 1 -s6967.de, 1 s6jl.com, 1 s6n.jp, 0 s6o.de, 1 -s6o.me, 1 s8a.me, 1 s92.cloud, 1 s92.io, 1 @@ -126592,8 +127062,9 @@ s92.me, 1 s9297.co, 1 s95.de, 1 s9728.co, 1 -s9h.cn, 1 +s9h.cn, 0 sa-blog.net, 1 +sa-casino.live, 0 sa-mp.me, 1 sa-mp.ro, 1 sa-stu.com, 1 @@ -126603,13 +127074,13 @@ sa-studio.vip, 1 sa.bi, 1 sa.gov, 1 sa.net, 1 +sa68.cc, 1 saab-cars.de, 1 saadat.in.ua, 1 saadurrehman.tk, 1 saam.aero, 1 saaminuett.fi, 1 saap.me, 1 -saaral.org, 1 saarehaigla.ee, 1 saaremaa.tk, 1 saaricraft.ml, 1 @@ -126636,13 +127107,13 @@ sabbat-wildfire.tk, 1 sabe.cc, 1 sabedinovski.tk, 1 saber-nyan.com, 1 +sabesprev.com.br, 1 sabghijewelers.com, 1 sabharwallawfirm.ca, 1 sabians.tk, 1 sabiasque.pt, 1 sabine-forschbach.de, 1 sabine-heber.de, 1 -sabine-ziemke.de, 1 sabinearendt.de, 0 sabineforschbach.de, 1 sabinehorelt.de, 1 @@ -126654,9 +127125,9 @@ sabisandsgamereserve.com, 1 sablanout.com, 1 sable.gq, 1 saborcaribe.tk, 1 +sabordasmontanhas.com.br, 1 saboresdamontanha.com.br, 1 sabranie.com, 1 -sabriburhanoglu.com, 1 sabrina-auer.tk, 1 sabrinajoias.com, 1 sabrinajoias.com.br, 1 @@ -126671,7 +127142,6 @@ sabtifa.site, 1 sabworldtricks.tk, 1 sac-cu2.org, 1 sac-shoes.fr, 1 -sac.gov, 1 sacademica.tk, 1 sacaentradas.com, 1 saccani.net, 1 @@ -126682,7 +127152,6 @@ saccountyiowa.gov, 1 sacektirme.tk, 1 sacfreightlines.com, 1 sacha-botz.com, 0 -sachagoldberg.com, 1 sacharidovejednotky.eu, 1 sachasmets.be, 1 sachi.lk, 1 @@ -126699,6 +127168,7 @@ sacibo.ga, 1 sackmesser.ch, 1 saco.tech, 1 sacodealegria.com, 1 +sacolaotriangulo.com.br, 1 sacprincesse.com, 1 sacralis.com, 1 sacralrp.com, 1 @@ -126718,7 +127188,6 @@ sacrome.com, 1 sacrosanctus.tk, 1 sacscoc.org, 1 sacwellness.com, 1 -sadalestikls.lv, 1 sadecegundem.net, 1 sadeedos.systems, 1 sadeem.space, 1 @@ -126741,11 +127210,11 @@ sadou.kyoto.jp, 0 sadoun.com, 1 sadovskiy.tech, 1 sadrailsim.de, 1 +sadroveomitky.net, 1 sadsu.com, 0 sadubykovunu.com.ua, 1 sadurscy.pl, 1 sadus.tk, 1 -saduvia.com, 1 saechsischer-christstollen.shop, 0 saeder-krupp.de, 1 saedgn.com.cn, 1 @@ -126765,6 +127234,7 @@ safarilaw.com, 1 safaris-uganda.com, 1 safarisbonafricatours.com, 1 safarisop.com, 1 +safataviationgroup.com, 1 safatech.me, 1 safc.tk, 1 safcstore.com, 0 @@ -126788,16 +127258,13 @@ safecar.gov, 1 safecargotraining.com.br, 1 safechoicestas.org.au, 1 safecircuitelectric.com, 1 -safecleansanitation.com, 1 safeclima.com, 1 safecode1.com, 1 safecoin.tech, 1 -safecom.gov, 1 safecso.cf, 1 safedatabasesystems.com, 1 safedrivepod.com, 1 safeers.tk, 1 -safefilestore.com, 1 safefreehost.gq, 1 safefreepornsites.com, 1 safegold.ca, 1 @@ -126813,8 +127280,6 @@ safehousepestcontrol.au, 1 safeinfra.nl, 1 safejourney.education, 1 safekidney.com.tw, 1 -safelink.asia, 1 -safemailer.org, 1 safeme.ga, 1 safeme.gq, 1 safemt.gov, 1 @@ -126822,8 +127287,9 @@ safenetwork.it, 1 safensoundstoragegroton.com, 1 safeo.fr, 1 safeocs.gov, 1 -safepassvpn.com, 0 -safeplayground.net, 0 +safepassvpn.com, 1 +safeplay.co, 1 +safeplayground.net, 1 safer-software.tk, 1 safera.com, 1 safercar.gov, 1 @@ -126834,7 +127300,6 @@ saferproduct.gov, 1 saferproducts.gov, 1 safersurfing.eu, 0 safertruck.gov, 1 -saferutar.com, 1 safes24.com, 1 safesail.pt, 1 safescif.com, 1 @@ -126847,7 +127312,6 @@ safespaces.azurewebsites.net, 1 safestayok.gov, 1 safestreets.cf, 1 safetables.ga, 1 -safetgroup.ie, 1 safethishome.com, 1 safetica.lt, 1 safetoopen.com, 1 @@ -126855,7 +127319,6 @@ safetrax.in, 1 safety-in-construction.tk, 1 safety.co.nz, 1 safety360elite.co.za, 1 -safetyact.gov, 1 safetycomply.ca, 1 safetydrivessuccess.com, 1 safetymeasuresas.com, 1 @@ -126882,24 +127345,21 @@ safinamide.co.uk, 1 safiosolutions.com, 1 safirakbar.tk, 1 safire.ac.za, 1 -safiswissresearch.com.tr, 1 safkgroup.com, 1 safleo.org, 1 -safor-sante-formation.com, 1 -safranarea.com, 1 -safranarea.eu, 1 +safquh.com, 1 sag-consultores.com, 1 sagacioussuricata.com, 1 sagagardencentre.co.uk, 1 sagan.tk, 1 -saganodes.com, 1 -sagarawat.in, 0 +sagarawat.in, 1 +sagargandecha.com.au, 0 sagauae.com, 1 sageclinic.org, 1 sagefitness.store, 1 sagegardens.ca, 0 +sagegateshead.com, 1 sageitinc.com, 1 -sagenec.com, 1 sagenesykkel.com, 1 sageseeds.info, 1 sagetel.ga, 1 @@ -126912,6 +127372,7 @@ sagicorconnect.com, 1 sagicorgeneral.com, 1 sagicorlife.com, 1 sagicorlifeusa.com, 1 +sagilityhealth.com, 1 saginawtx.org, 1 sagitta.hr, 1 saglik-haberleri.tk, 1 @@ -126922,29 +127383,31 @@ sago.group, 1 sagogangen.se, 1 sagomedia.tk, 1 sagradamadre.hu, 1 -sagradobyme.cl, 0 +sagradobyme.cl, 1 +sagretreviso.it, 1 sagsaga.org, 1 +saguaro.care, 1 saguarocc.com, 1 sahabatnesia.com, 1 sahabatsawit.com, 1 sahafekitap.com, 1 +sahakamfi.com, 1 sahalin.tk, 1 sahalinskiy.gq, 1 sahanz.net, 1 sahar.io, 1 saharacloud.com, 1 sahararun.tk, 1 +saharax.io, 1 saharazik.tk, 1 saharmassachi.com, 1 sahatchaiy.ddns.net, 1 sahb.dk, 1 sahealthsecure.com, 1 -sahhacircle.com, 1 sahibinden.com, 1 sahih.nl, 1 sahilbahl.com, 1 sahilten.com, 1 -sahinlegalconsultancy.co.uk, 1 sahinozgenhukuk.com, 1 sahipleniyorum.com, 1 sahkotyot.eu, 1 @@ -126953,6 +127416,7 @@ sahovski.com, 1 sahpa.co.za, 1 sai.be, 1 sai.com.in, 1 +saibababirthplace.org, 1 saiber.com, 1 saibotk.de, 0 said.id, 1 @@ -126970,6 +127434,7 @@ saifoundation.org, 1 saiful.web.id, 1 saigonland24h.vn, 1 saigonstar.de, 1 +saijanmasthan.org, 1 saikarra.com, 1 saikouji.tokushima.jp, 1 sail-holidays-hub.gr, 1 @@ -126979,15 +127444,18 @@ sailcut.org, 1 sailing-delfina.it, 1 sailmail.io, 1 sailmainecoast.com, 1 +sailormoondoujinshi.org, 1 sailormoonevents.org, 1 sailormoonfansubs.com, 1 sailormoongallery.org, 1 +sailormoonlibrary.org, 1 sailors.org, 1 -sailorsoapbox.com, 1 -sailotech.com, 1 sailum.tk, 1 +saily.pl, 1 sailyun.cc, 1 saimedia.net, 0 +saimoe.moe, 1 +saimoe.org, 1 sainaracademy.com, 1 sainetworks.net, 1 sainokuni-eng.jp, 1 @@ -127003,12 +127471,13 @@ saint-peterburg.tk, 1 saint-petersburg.cf, 1 saint-petersburg.gq, 1 saint-petersburg.ml, 1 -saint.pt, 1 +saint-ssd.org, 1 saintaardvarkthecarpeted.com, 1 saintalthegreat.org, 1 saintanthonylakin.org, 1 saintaugustineschool.tk, 1 saintbernardpetcare.com, 1 +saintbrunofootball.fr, 1 saintefoy-tarentaise.fr, 1 saintereso.tk, 1 sainteugenechurch.net, 1 @@ -127019,6 +127488,7 @@ sainth.de, 0 sainthedwig-saintmary.org, 1 sainthelena-centersquare.net, 1 sainthelenaparish.net, 1 +sainthelenas.org, 1 saintisidorecyo.com, 1 saintjamestheapostle.org, 1 saintjohn-bocaraton.com, 1 @@ -127037,7 +127507,6 @@ saintpius.net, 1 saintpolycarp.org, 1 saintseiya-temple.tk, 1 saintspicious.de, 1 -saintsrobotics.com, 0 saintsrowmods.com, 1 sainttheresahome.org.sg, 1 saintvincent.tk, 1 @@ -127047,7 +127516,6 @@ saipariwar.com, 1 saipeople.net, 1 saiphhub.com.br, 1 saiputra.com, 1 -saiputra.net, 1 sairadio.net, 1 sairadio.net.in, 1 sairadio.one, 1 @@ -127055,11 +127523,14 @@ sairai.bid, 1 sairlerimiz.tk, 1 sairus.fr, 1 saisecure.net, 1 -saiserver.online, 1 +saiserve.xyz, 1 saisons-fruits-legumes.fr, 1 +saisyuusyou-ikebukuro.com, 1 +saisyuusyou-omiya.com, 1 +saisyuusyou-takasaki.com, 1 +saisyuusyou-utsunomiya.com, 1 sait.health, 1 saitapovan.com, 1 -saitas.net, 1 saito-koken.co.jp, 1 saitrance.com, 1 saitschool.ml, 1 @@ -127069,14 +127540,13 @@ saiyeh.ir, 0 sajabesaya.tk, 1 sajbersove.rs, 1 sajetekengineering.com, 1 +sajt-vizitka-nedorogo.ru, 1 sajter.ga, 1 -sak.pt, 1 -sakac.cz, 0 +sakac.cz, 1 sakainvest.com, 1 sakaki.anime.my, 0 sakamichi.moe, 1 sakaritsa-residence.com, 1 -sakaryafestivali.com, 1 sakaryahaberi.tk, 1 sakder.com, 1 sakellariadis.gr, 1 @@ -127090,7 +127560,6 @@ sakitama-shika.com, 1 sakiyamagumi.com, 1 saklad5.com, 1 sakostacloud.de, 1 -sakra.xyz, 1 sakrajda.eu, 1 sakraworldhospital.com, 0 saksham.org, 1 @@ -127109,13 +127578,11 @@ sakurapink.top, 0 sakuraspanj.com, 1 saladgo.id, 1 saladin.vn, 1 -salahnos.com.ar, 1 salalfoundation.ca, 0 salamanders.tk, 1 salamence.tk, 1 salamkisan.com, 1 salamon-it.de, 1 -salampolyclinic.om, 1 salamzibaei.com, 1 salariominimo.com.co, 1 salaryfinance.com, 1 @@ -127190,6 +127657,7 @@ salfordepc.uk, 1 salfraedingarnir.is, 1 salge.rocks, 1 salgueirocarlos.com, 1 +salianmod.ir, 1 salibandy.tk, 1 salidaswap.com, 1 salient-dialers.com, 1 @@ -127222,6 +127690,7 @@ salmadenora.net, 1 salmaghanim.com, 1 salman.agency, 1 salmanravoof.com, 1 +salmanshafi.net, 1 salmelainenwalter.tk, 1 salminencrane.tk, 1 salmo-rybak.ru, 1 @@ -127234,7 +127703,6 @@ salmotierra-salvatierra.com, 0 salnet.wf, 1 salo.fi, 1 salomonsports.co.il, 1 -salomus.fi, 1 salon-de-patchouli.com, 1 salon-hinata.biz, 1 salon-largo.com, 1 @@ -127245,9 +127713,7 @@ salon-yuan.jp, 0 salon.io, 0 salon1.ee, 1 salonasymetria.com, 1 -salonbookit.com, 1 salonboothuren.amsterdam, 1 -saloncosmeticasibiu.ro, 1 salone-mio.com, 1 salonestella.it, 1 saloni.com, 1 @@ -127259,8 +127725,7 @@ salonivenera.com, 1 salonkaufmann.it, 1 salonmarjon.nl, 1 salonni.tk, 1 -salonpaikku.fi, 1 -salontaidemuseo.fi, 1 +salonsantebienetre.ch, 0 salsa-disaster.net, 1 salsa-straubing.de, 1 salsa.berlin, 1 @@ -127273,7 +127738,7 @@ saltcave.gq, 1 saltedfish.network, 1 saltedfishes.com, 1 saltedge.com, 1 -saltedpasta.com, 1 +saltedpasta.com, 0 saltercane.com, 0 saltlakecounty.gov, 1 saltlakehealth.gov, 1 @@ -127295,12 +127760,14 @@ salubox.com, 1 salud-paratodos.com, 1 saludakeuring.nl, 1 saludcarbajal.com, 1 +saludcolima.gob.mx, 1 +saludmaspro.com, 1 saludnutrivida.com, 1 saluels.servemp3.com, 1 -saluki.cloud, 1 salukinet.tk, 1 salunganogroup.com, 1 salus-cm.care, 1 +salus.zone, 1 salut-butovo.cf, 1 salutes.tk, 1 salutethefish.com, 1 @@ -127322,11 +127789,9 @@ salzamt.tk, 1 salzburg-erfahren.at, 1 salzburg-verkehr.at, 1 salzburgsfinest.tk, 1 -salzerdigital.de, 1 salzerperu.com, 1 salzmann.solutions, 1 sam-football.fr, 1 -sam-ni.com, 1 sam-wells.be, 1 sam.gov, 1 sam66.cc, 1 @@ -127349,7 +127814,6 @@ samaritainsmeyrin.ch, 0 samarthtyagi.tk, 1 samatva-yogalaya.com, 1 samba.org, 1 -sambac.net, 1 sambeso.net, 1 sambi.se, 1 sambot22.tk, 1 @@ -127362,6 +127826,7 @@ samclarke.com, 1 samclarke.uk, 1 samcollin.be, 1 samdev.io, 1 +same.lol, 1 samedamci.com, 1 samedayglendoracleantruckcheck.com, 1 samedis.care, 1 @@ -127369,21 +127834,21 @@ samegoal.com, 1 samegoal.org, 1 samehzidan.com, 1 samel.de, 1 +samelectricltd.ca, 1 samelol.com, 1 samenduurzaamchallenge.nl, 1 samengevat.net, 1 -samengezond-denbosch.nl, 1 samenmetsanne.nu, 1 samentest.tk, 1 samenuitsamenthuis.tk, 1 samenvoorelkaar.nl, 1 samenvoormedicatieoverdracht.nl, 1 samenwerkingsportaal.nl, 1 -samenzijnwijdenbosch.nl, 1 samepage.io, 1 sametcanaz.tk, 1 sameteem.com, 1 sametimetomorrow.tk, 1 +samhall.se, 1 samhsa.gov, 1 samhuri.net, 1 sami.photo, 1 @@ -127415,7 +127880,6 @@ samlaw.co.nz, 0 sammich.eu, 1 sammich.social, 1 sammichscripts.com, 1 -sammutsw.com, 1 sammyservers.com, 1 samoagovt.ws, 1 samodel.ml, 1 @@ -127432,21 +127896,21 @@ samoylyk.net, 0 samozdraw.ga, 1 sampaguide.com, 1 sampath.lk, 1 -sampati.com.br, 1 sampatjewelers.com, 1 samplechapterpodcast.com, 1 samplefashion.nl, 1 samplehc.com, 1 -sampnews24.com, 1 sampsoncountync.gov, 1 sampsonplumbing.com, 0 samquick.me.uk, 1 +samroelants.com, 1 samsara.nl, 1 +samsat.info, 1 +samsatcorner.com, 1 samscollection.in, 1 samsebe.ml, 1 samsebe.tk, 1 samsepi0l.ovh, 1 -samserglobal.com, 1 samson-td.com, 1 samson.org.au, 1 samsontjacob.com, 0 @@ -127489,6 +127953,7 @@ san-leonardo.com, 1 san-vigilio-marebbe.net, 1 san.tv, 1 san0j.de, 1 +sana-commerce.com, 1 sana-store.com, 1 sana-store.cz, 1 sana-store.sk, 1 @@ -127496,10 +127961,8 @@ sanafide.com, 0 sanagustin.com, 1 sanalaile.tk, 1 sanalikaforum.tk, 1 -sanalsehrim.com, 1 sanandreasstories.com, 1 sanantoniolocksmithtx.com, 1 -sanaorganizasyon.com, 1 sanapaino.fi, 1 sanasport.at, 1 sanasport.bg, 1 @@ -127526,7 +127989,6 @@ sanctio.tk, 1 sanctum.geek.nz, 0 sanctus-de.tk, 1 sanctus.co.uk, 1 -sanctus.io, 1 sand-and-mercury.tk, 1 sand-craft.ml, 1 sand-stoneinc.com, 1 @@ -127539,13 +128001,14 @@ sandbox-simplevisa.net, 1 sandbox.i.ng, 1 sandbox.mydigipass.com, 0 sandcastle.eu.org, 1 -sanddev.com, 1 +sanddollarsstudio.com, 1 sandelduggal.com, 1 sanderdesign.tk, 1 sanderdorigo.nl, 1 -sanderpoppe.com, 1 +sanderpoppe.com, 0 sanderscreditrepair.com, 1 sandersgaleandrussell.com, 1 +sandersmontalto.com, 1 sandersonfarms.com, 1 sanderspies.com, 1 sandervanderstap.nl, 1 @@ -127554,7 +128017,6 @@ sandetailing.ru, 1 sandfield.co.nz, 1 sandfloor.com, 1 sandgatebaysidedental.com.au, 1 -sandgaterealestate.com.au, 1 sandhillspet.com, 1 sandhitransformer.xyz, 1 sandholt.is, 1 @@ -127574,7 +128036,6 @@ sandmarc.cz, 1 sandokan.cat, 1 sandokan.tk, 1 sandor.wtf, 1 -sandowngardenclub.org, 1 sandownpolicenh.gov, 1 sandpaper.com, 1 sandplane.com, 1 @@ -127619,12 +128080,14 @@ sandybigboobs.com, 1 sandybigboobs.net, 1 sandycreekrvpark.com, 1 sandykeymedical.com, 1 +sandyspringadventurepark.org, 1 sandyvazquez.com, 1 sanemind.de, 1 sanetschka.tk, 1 sanex.ca, 1 sanf.org, 1 sanfernando.tk, 1 +sanficindustria.cl, 1 sanfranciscotours.org, 1 sangabriel.gov, 1 sangamonil.gov, 1 @@ -127632,11 +128095,13 @@ sangen.ml, 1 sangheon.com, 1 sangina.eu, 1 sangiovannilipioni.tk, 1 +sangitamusic.de, 1 sanglierhurlant.fr, 1 sangoandmiroku.tk, 1 sangowen.xyz, 1 sangreytinta.tk, 1 sanguanini.farm, 1 +sanguinebio.com, 1 sangwanbeach.tk, 1 sangyo-rock.com, 1 sanhotel.ml, 1 @@ -127649,6 +128114,7 @@ sanikapandit.com, 1 sanilaccounty.gov, 1 sanilactownshipmi.gov, 1 sanin.gq, 1 +sanitaer-heinze.com, 1 sanitaer-notdienst-zentrale.de, 1 sanitairwinkel.be, 1 sanitairwinkel.com, 1 @@ -127708,12 +128174,13 @@ sanpancrazio.tk, 1 sanpatigroup-recruit.jp, 1 sanpatriciocountytx.gov, 1 sanpham-balea.org, 1 -sanpure.in, 1 sanqinyinshi.com.cn, 1 sanrafaelvigo.org, 1 sanraizu.top, 1 sanroque.es, 1 +sans-hotel.com, 1 sans-papiers.ch, 1 +sansaenergy.com, 1 sansairyu-kuyoukai.com, 1 sansdb.io, 0 sansdict.ml, 1 @@ -127724,6 +128191,7 @@ sanskrit.site, 1 sanskritiyoga.com, 1 sansonehowell.com, 1 sansukien.com, 1 +sansumclinic.org, 1 santa-ana.gov, 1 santa-fell-from.space, 1 santabarbaraca.gov, 1 @@ -127776,8 +128244,7 @@ santhatela.com.br, 1 santhoffplumbingco.com, 1 santhoshveer.com, 1 santiagogarza.co, 1 -santiagomeli.ar, 1 -santiagomeli.com.ar, 1 +santiagoslandscapingservicesinc.com, 1 santibanezdetera.tk, 1 santibz.es, 1 santigl.es, 1 @@ -127791,6 +128258,7 @@ santmark.org, 1 santo.fi, 1 santodelgiorno.it, 1 santong.tk, 1 +santons-fouque.fr, 1 santorinidress.com, 1 santoscarmelitas.tk, 1 santosdecordoba.tk, 1 @@ -127798,7 +128266,7 @@ santoshpandit.com, 1 santoskhoury.com, 1 santral.org.tr, 1 santsadurni.cat, 1 -santswebdesign.com, 0 +santswebdesign.com, 1 santugon.tk, 1 santv.cc, 0 sanufreshve.com, 1 @@ -127807,6 +128275,7 @@ sanvicenteferrer.net, 1 sanweb.info, 1 sanyangwood.shop, 1 saochang.com, 1 +saojudastadeu.edu.br, 1 saolucasimagem.com.br, 1 saoneth.pl, 1 saopaulofc.com.br, 1 @@ -127842,11 +128311,12 @@ sapoghki.tk, 1 saponaria.com, 1 sapotech.de, 1 sapphi.st, 1 -sapphic.nl, 0 +sapphic.nl, 1 sapphic.site, 1 sapphirebet.com, 1 sapphireblinds.com.au, 0 sapphireblue.me, 1 +sapphirecleaningwa.com.au, 0 sapphireservicesga.com, 1 sapporet.es, 1 sapporo-asaichi.com, 1 @@ -127875,7 +128345,7 @@ sarah-harding.tk, 1 sarah-huenten.de, 1 sarah-jane.nl, 1 sarahbaker.co.nz, 1 -sarahbowling.org, 0 +sarahbowling.org, 1 sarahgriswold.com, 1 sarahjaneethan.co.uk, 1 sarahjaneredmond.com, 1 @@ -127895,6 +128365,7 @@ sarahvanessen.tk, 1 sarahweinman.com, 1 sarahwellington.com, 1 sarahwikeley.co.uk, 1 +saraleedesserts.com, 1 saranamayyappa.tk, 1 sarand.ch, 0 saransk-news.net, 1 @@ -127915,7 +128386,6 @@ saratovlive.tk, 1 saratovnews.ml, 1 saratovtime.tk, 1 sarayeketabesoti.ir, 1 -sarayruiz.es, 1 sarbarhetsskanning.se, 1 sarbash.ee, 1 sarbel.tk, 1 @@ -127955,7 +128425,6 @@ sariyer.bel.tr, 1 sarjakuvakauppa.fi, 1 sarjas.tk, 1 sarkarinaukriworld.net, 1 -sarkaripixel.in, 1 sarkariresultz.in, 1 sarkazam.ml, 1 sarkchat.cf, 1 @@ -127968,6 +128437,7 @@ sarnoffcourtreporters.com, 1 sarny.at, 1 saro.ee, 1 sarogiw.tk, 1 +sarom.eu, 1 saromile.be, 1 saropa.com, 1 sarosegrupp.ee, 1 @@ -127996,14 +128466,15 @@ sascorp.co.uk, 1 sascorp.es, 1 sasctg.com, 1 sash.pw, 1 -sasha-escort-frankfurt.com, 1 sashabognibov.tk, 1 sashaclothing.tk, 1 sashakrasnoyarsk.tk, 1 sashascollections.com, 1 sashleighaust.com, 1 sashok724.net, 1 +sashroy.shop, 1 sashroyee.com, 1 +sashware.com, 1 sasioglu.co.uk, 1 sasken.com, 1 saskiacreations.nl, 1 @@ -128030,10 +128501,9 @@ satanspowers.tk, 1 satario.vn, 1 satat.cf, 1 satat.tk, 1 -satdump.com, 1 sateallia.org, 1 satelital.tk, 1 -satelitnews.com, 1 +satelitnews.com, 0 satellights.tk, 1 satellite-equipment.tk, 1 satellite-shop.tk, 1 @@ -128047,7 +128517,6 @@ satheeshsbennet.tk, 1 satimagingcorp.com, 1 satindolls.tk, 1 satinn.pl, 1 -satinwood.com.au, 1 satirelabs.com, 1 satiscation.com, 1 satisfactory-calculator.com, 1 @@ -128056,6 +128525,7 @@ satisperfectacollections.com, 1 sativatunja.com, 1 satl-lelystad.nl, 1 satlantis.tk, 1 +satmd.de, 1 satoplet.cz, 1 satopletova.cz, 1 satoshinumbers.com, 1 @@ -128089,7 +128559,6 @@ saubermacher.at, 1 saubooks.tk, 1 saucelabs.com, 1 saucesmaster.com, 1 -sauco.io, 1 saudecoluna.com, 1 saudedigitalnews.com.br, 1 saudenoclique.com.br, 1 @@ -128124,7 +128593,6 @@ saunavoordeel.nl, 1 sauniertec.com, 1 sauravdas.in, 1 saurel.me, 1 -saurosmc.com, 1 saurusly.com, 1 sauseng.eu, 1 sauthon.com, 0 @@ -128141,6 +128609,7 @@ savannahgraham.com, 1 savannahhappycats.com, 1 savannapro.vn.ua, 1 savant-dagen.nl, 1 +savantcare.com, 0 savart.blog, 1 savart.pro, 1 savatha.tk, 1 @@ -128164,6 +128633,7 @@ savedana.tk, 1 saveeachlife.com, 1 savehumanitynow.com, 1 savejonasquinn.tk, 1 +savemycent.com, 1 savemyexams.co.uk, 1 savemyleads.com, 1 savemylicence.co.uk, 1 @@ -128172,6 +128642,7 @@ saveoncraft.com, 1 saveora.com, 1 saveora.shop, 1 savepapajohns.com, 1 +savesmart.be, 1 savestatecentral.tk, 1 savesubs.com, 1 savetech.tk, 1 @@ -128201,6 +128672,7 @@ savne-svetelj.si, 1 savoir.ga, 1 savoirfairelinux.com, 1 savonlinnatrujillo.tk, 1 +savonsuuntaporaus.fi, 1 savorthemomlife.com, 1 savoryandpartners.com, 1 savour-magazine.co.uk, 1 @@ -128211,7 +128683,6 @@ savushkin.tk, 1 savvice.com.ph, 1 savvycleaner.com, 1 savvydevelopment.com, 1 -sawadeegolf.com, 1 sawan.com.pk, 1 sawansasaram.ml, 1 sawayaka-hitachilaw.jp, 1 @@ -128230,7 +128701,6 @@ sawiday.pl, 1 sawiday.se, 1 sawiday.work, 1 sawikowscy.eu, 1 -sawoodworker.uk, 1 sawpa.gov, 1 saxeandthecity.com, 1 saxifrageleather.com, 1 @@ -128247,8 +128717,10 @@ saxoncreative.com, 1 saxophone.tk, 1 saxotrader.com, 1 saxynele.tk, 1 +saxysensations.com, 1 sayany.tk, 1 sayax.com.tr, 1 +saybecraft.ru, 1 saybrus.partners, 1 saybyebugs.com, 1 saydj.tk, 1 @@ -128263,7 +128735,6 @@ sayingimages.com, 1 sayprepay.com, 1 sayura.net, 1 sayver22.com, 1 -sayyoyo.com, 1 saz-it.de, 1 saz.sh, 1 sazan-clinic.jp, 1 @@ -128276,7 +128747,7 @@ sb.ax, 0 sb.sb, 1 sb0.io, 1 sba.com.au, 1 -sba4u.com, 0 +sba4u.com, 1 sba7a.loans, 1 sbabeshin.tk, 1 sbacorporation.it, 1 @@ -128287,9 +128758,11 @@ sbblog.cn, 1 sbcalitagtag.edu.ph, 1 sbcargo.com, 1 sbcbatangas.edu.ph, 1 +sbcmedia.nl, 1 sbcountyarc.gov, 1 sbcountyatc.gov, 1 sbeech.uk, 0 +sbequineevac.org, 1 sber-solutions.kz, 1 sber-solutions.ru, 1 sber.games, 1 @@ -128325,14 +128798,12 @@ sbodewissel.tk, 1 sboh.nl, 1 sborka.ml, 1 sbpk.fr, 1 -sbplatform.pages.dev, 1 sbpropman.co.uk, 1 sbrc.gov, 1 sbristolme.gov, 1 sbrouwer.org, 1 sbrownbourne.com, 0 sbs-studies.gr, 1 -sbsc.se, 1 sbscyber.com, 1 sbspectr.ru, 1 sbspp.ru, 1 @@ -128349,7 +128820,6 @@ sc-zhetisu.kz, 1 sc019.com, 1 sc2labs.com, 1 sc2pte.eu, 1 -sc88.trade, 1 sca-webdesign.be, 1 scadalliance.org, 1 scadanews.net, 1 @@ -128357,11 +128827,14 @@ scaffalature.roma.it, 1 scaffoldhiremidrand.co.za, 1 scaffoldhirerandburg.co.za, 1 scaffoldhiresandton.co.za, 1 +scaffoldinghiresandton.co.za, 1 scaffoldingmidrand.co.za, 1 scaffoldingsandton.co.za, 1 scag9.com, 1 +scala.click, 0 scalable.capital, 1 scalableb2b.com, 1 +scalafactory.io, 1 scalaire.com, 1 scalaire.fr, 1 scale.at, 1 @@ -128372,7 +128845,7 @@ scalecalculation.ml, 1 scalemodeling.tk, 1 scalesbiolab.com, 1 scalextric.com, 1 -scaligerorooms.it, 0 +scaligerorooms.it, 1 scaling.solutions, 0 scalive.tv, 1 scallywagsbouncycastles.co.uk, 1 @@ -128405,18 +128878,17 @@ scandocs.ai, 1 scaner.ga, 1 scanform.ai, 1 scanii.com, 1 -scanmy.band, 1 scanmy.email, 1 scanningpens.ca, 1 scanningpens.co.uk, 1 scanningpens.com, 1 scanpay.dk, 1 scanprice.us, 1 +scansec.com.br, 1 scansnus.com, 1 scantower.io, 1 scanutracker.com, 1 scanyachat.cf, 1 -scape.pt, 1 scape.sg, 1 scapin.dk, 1 scapp9565.xyz, 1 @@ -128442,13 +128914,13 @@ scatgirls.net, 1 scatsbouncingcastles.ie, 1 scatterd.im, 1 scatteredcode.net, 1 +scatters.com, 1 scatterscasino.com, 1 -scatterwin.net, 1 -scattopro.it, 1 scavalentenx.duckdns.org, 1 scavenged.ga, 1 scayle.com, 1 scbdh.org, 1 +scbfireworks.com, 1 scbodner.com, 1 scc-aircompressors.com, 1 sccan.scot, 1 @@ -128460,10 +128932,8 @@ sccourtreporter.com, 1 sccourtreporters.com, 1 sccourtreporting.com, 1 scdepositions.com, 1 -scdf.gov.sg, 1 scdmx.de, 1 scdn.us, 1 -scec98alumni.com, 1 sceenfox.de, 1 scejournals.org, 1 scenadex.ga, 1 @@ -128480,11 +128950,11 @@ scenic.gallery, 1 scenicbyways.info, 1 scentlab.md, 1 scentlab.space, 1 -scento.com, 1 +scently.nl, 1 scepticism.com, 1 scers.gov, 1 scesc.uk, 1 -scfssp.it, 0 +scfssp.it, 1 scgsustainability.com, 1 sch44r0n.de, 1 schaafenstrasse.koeln, 1 @@ -128527,16 +128997,14 @@ scheduleacourtreporter.com, 1 scheduleareporter.com, 1 scheduledepo.com, 1 schedulehero.io, 1 -schedulure.com, 1 scheervergelijker.nl, 1 -schefczyk-privat.de, 1 -schefczyk.ch, 1 schefczyk.com, 1 schefczyk.de, 1 schefczyk.eu, 1 schefczyk.net, 1 schefer-mietstapler.de, 1 scheidegger-kaesealpe.de, 1 +scheidung-schulz.de, 1 scheinchess.club, 1 scheinerhaus.at, 1 scheinlichter.de, 1 @@ -128547,9 +129015,11 @@ schella.network, 1 schellebelle.tk, 1 schellenberg-web.de, 1 schellenberg.ac, 1 +schellevis.net, 0 schenectadycountyny.gov, 1 schenkel.tk, 1 schenkes.de, 0 +schepman.org, 1 scherfke.de, 1 schermen-en.nl, 1 schertztx.gov, 1 @@ -128592,6 +129062,7 @@ schizoids.net, 1 schizomatrix.cf, 1 schizomatrix.tk, 1 schkamien.pl, 1 +schlachter.ca, 1 schlafteq.com, 1 schlagenhauf.info, 0 schlagma.de, 1 @@ -128614,7 +129085,6 @@ schloss-wackerbarth.de, 1 schlossanger.de, 1 schlossberg-hotel-wernigerode.de, 1 schlossfuchs.de, 1 -schlosshotel-hainich.de, 1 schlosslinderhof.de, 1 schlotterer.com, 1 schlouk-map.com, 1 @@ -128644,7 +129114,7 @@ schmitzvertalingen.nl, 1 schmucker.it, 1 schmunzelgeist.de, 1 schnalstal.info, 1 -schnalz.net, 1 +schnalz.de, 1 schnapke.name, 1 schnapsverein.ddns.net, 1 schnaube.de, 1 @@ -128653,7 +129123,7 @@ schneckenhilfe.de, 1 schneedustcompany.com, 1 schnegg.name, 0 schneider-dresden.de, 1 -schneider-romania.ro, 0 +schneider-romania.ro, 1 schneider.co.il, 1 schneidr.de, 0 schneids.me, 1 @@ -128666,7 +129136,6 @@ schnuckenhof-wesseloh.de, 1 schnucks.com, 1 schnyder-werbung.ch, 0 schody-rozycki.pl, 1 -schoenheitsop.com, 1 schoenstatt-fathers.link, 1 schoenstatt.link, 1 schoental.de, 1 @@ -128699,7 +129168,6 @@ schollbox.de, 0 scholledev.com, 1 scholohost.tk, 1 scholtensupport.nl, 1 -scholven.marketing, 1 scholz-kallies.de, 1 schonstedt.com, 1 school-22.tk, 1 @@ -128720,7 +129188,6 @@ schoolantwoorden.tk, 1 schoolbag.gq, 1 schoolbag.ml, 1 schoolbag.tk, 1 -schoolbreach.org, 1 schoolbytes.com.au, 1 schoolbytes.education, 1 schoolcafe.com, 1 @@ -128735,7 +129202,6 @@ schooldistrictopioidrecoverygrants.com, 1 schooleducationharyana.gov.in, 1 schoolheads.ph, 1 schoolhouse.world, 1 -schoolofrussianballetsingapore.com, 1 schoolroom.ga, 1 schoolrumble.tk, 1 schoolsafety.gov, 1 @@ -128745,7 +129211,6 @@ schoolsonice.nl, 1 schoolstreaks.com, 1 schoolsystemonthego.com, 1 schooltransport.com.au, 1 -schoolwork.bot, 1 schoolyogainstitute.com, 1 schoonheidssalon-annelies-santpoort.nl, 1 schoonheidssalon-annelies-velserbroek.nl, 0 @@ -128770,7 +129235,6 @@ schreibers.ca, 1 schreilechner.tk, 1 schreinerei-jahreis.de, 1 schreinerei-schweikl.de, 1 -schreinerei-wiesbaden.de, 1 schreinert.com, 1 schrijnwerkerij-deconinck.be, 1 schrijnwerkerij-deconinck.com, 1 @@ -128864,6 +129328,7 @@ sci-dril.net, 1 sci-internet.tk, 1 sci-rjb.fr, 1 sci.com, 1 +sciagebeton.net, 1 sciartel.ru, 1 scias.com, 1 scib.tk, 1 @@ -128889,10 +129354,6 @@ sciencenews.gq, 1 scienceofpeople.com, 0 sciencequality.tk, 1 scienceschool.ml, 1 -sciencesoft.co, 1 -sciencesoft.io, 1 -sciencesoft.org, 1 -sciencesoft.tech, 1 sciencesolutions.eu, 1 sciencetechworld.tk, 1 sciencetoymaker.org, 1 @@ -128931,6 +129392,7 @@ scituateri.gov, 1 scity88.com, 1 scjc-bridge.fr, 1 sckc.stream, 1 +sckg.com, 1 sclasupplychain.com, 1 sclee.website, 1 sclegalvideo.com, 1 @@ -128940,6 +129402,7 @@ sclsnglssttldwn.com, 1 sclub7esp.tk, 1 scm-2017.org, 1 scm360.co.uk, 1 +scmestetic.pl, 1 scmhandling.com, 0 scmitchell.com, 1 scml.pt, 1 @@ -128947,13 +129410,6 @@ scms.com.my, 1 scn9a.com, 1 scnet.co.za, 1 scnow.com, 1 -scnsoft.com, 1 -scnsoft.de, 1 -scnsoft.lt, 1 -scnsoft.lv, 1 -scnsoft.om, 1 -scnsoft.pl, 1 -scnvision.com, 1 scodeno.vn, 1 scoebg.org, 1 scoffable.com, 1 @@ -128991,6 +129447,7 @@ scorch.cc, 1 scorch.me, 1 scorchers.tk, 1 scorebet24.com, 1 +scores24.live, 1 scoresabermemes.com, 1 scoreup.pl, 1 scoringandsounddesign.com, 1 @@ -128999,7 +129456,7 @@ scorobudem.ru, 1 scorpia.co.uk, 1 scorpiogroup.net, 1 scorpiomarine.co.in, 1 -scorpioncomputers.nl, 0 +scorpioncomputers.nl, 1 scorpiongames.tk, 1 scorpions-realm.tk, 1 scorpions.tk, 1 @@ -129048,6 +129505,7 @@ scottymiller.au, 1 scottyspot.tk, 1 scounter.tk, 1 scour.cc, 1 +scoure.de, 1 scourgesofcarpathia.tk, 1 scout-korting.tk, 1 scoutbee.io, 0 @@ -129067,6 +129525,7 @@ scoutrss.com, 1 scoutsanbartolome.tk, 1 scoutsanpieropatti.tk, 1 scoutsdeldesierto.tk, 1 +scoutwired.org, 0 scp-rustenholz-trens.notaires.fr, 1 scpe.eu.org, 1 scpocahontas.nl, 1 @@ -129080,6 +129539,7 @@ scpslgame.pl, 1 scpslgame.wiki, 1 scqpw.com, 1 scra.gov, 1 +scrabble-solver.com, 1 scrabblecheat.com, 1 scrabbleonline.nl, 1 scrambled.online, 1 @@ -129107,7 +129567,6 @@ screen-fox.de, 1 screen64.tk, 1 screenclaim.com, 1 screenfax.de, 1 -screenfox.de, 1 screenfox.net, 1 screeningxchange.com, 1 screenmachine.com, 1 @@ -129117,21 +129576,23 @@ screentimelabs.com, 1 screenwalker.de, 1 screenwatermarksoftware.com, 1 screenwriter.tk, 1 +screenzy.io, 1 screfer.com, 1 screvencosheriffga.gov, 1 screvencountyga.gov, 1 scribbler.monster, 1 scribbler.tk, 1 scribd.com, 1 +scribesecurity.com, 1 scripo-bay.com, 1 scrippsnews.com, 1 script-sign.com, 1 script.google.com, 1 -scriptablesolutions.com, 1 scriptamanent.org, 1 scripter.co, 1 scriptline.ga, 1 scriptmaker.tk, 1 +scriptnav.com, 1 scriptolab.com, 1 scriptomania.tk, 1 scriptop.co, 1 @@ -129141,7 +129602,6 @@ scripty.org, 0 scroar.net, 1 scrod.me, 1 scroll-to-top-button.com, 1 -scroll.pt, 1 scrollbots.com, 1 scroollocker.tk, 1 scrot.de, 1 @@ -129155,7 +129615,7 @@ scrumstack.co.uk, 1 scrumteamsurvey.org, 1 scryfall.com, 1 scrylytics.com, 1 -scrypro.com, 1 +scs-technik.de, 1 scsd.si, 1 scservis.cz, 1 scsp.ai, 1 @@ -129176,7 +129636,6 @@ scullionandco.com, 1 sculpteo.com, 1 sculptor.com, 1 sculpturesworldwide.tk, 1 -scum.fr, 1 scunna.com, 1 scunthorpemoneyman.com, 1 scuolabandistica.ch, 1 @@ -129198,20 +129657,18 @@ scw.nz, 1 scwilliams.co.uk, 1 scwilliams.uk, 1 scwind.com, 1 +scygmas.agency, 1 scylla.live, 1 sd-3c.com, 1 sd.af, 1 sd2017.com, 1 sd44.ca, 1 sdaniel55.com, 1 -sdap.io, 1 sdarcc.gov, 1 sdarot.tw, 1 -sdayman.com, 1 sdb.aero, 1 sdbc.com, 1 sdbehavioralhealth.gov, 1 -sdbidentity.nl, 1 sdc-uae.ae, 1 sdcardrecovery.de, 1 sdcargo.net, 1 @@ -129221,6 +129678,7 @@ sdebitati.it, 1 sdeu.fr, 1 sdfamilycare.org, 1 sdfcn.org, 1 +sdfi.com, 1 sdgfsdgyuise3.duckdns.org, 1 sdgllc.com, 1 sdgrait.tech, 1 @@ -129245,11 +129703,13 @@ sdns.fr, 1 sdocast.com, 1 sdp-grupopit.com, 1 sdp.training, 1 +sdpay.com, 1 sdpokieswiry.ga, 1 sdpokieswiry.tk, 1 sdpp.cc, 1 sdrp.org, 1 sdruzeniprovltavu.cz, 1 +sds-marburg.de, 0 sdsapa.ai, 1 sdsapa.com, 1 sdsbd.top, 1 @@ -129282,21 +129742,19 @@ seaborn.top, 0 seadrive.cc, 1 seadus.ee, 1 seaemporium.com, 1 -seafoodcityci.com, 0 seagrace.com, 1 seagrass-salcombe.com, 1 seagull-seafarer.org, 1 seahaweb.org, 1 seaif.org, 1 seal-tite.eu, 1 -sealability.co.uk, 0 +sealability.co.uk, 1 sealart.pl, 1 sealaw.com, 1 sealbaker.com, 1 -sealink.co.nz, 1 sealofbiliteracy.org, 1 sealoffantasy.de, 1 -sealtitebasement.com, 0 +sealtitebasement.com, 1 sealvault.org, 1 seamac.info, 1 seamester.com, 1 @@ -129338,6 +129796,7 @@ searchable.ml, 1 searchablevid.com, 1 searchbin.ca, 1 searchbyimages.com, 1 +searchcandy.uk, 1 searchcoloradohouses.com, 1 searchdatalogy.com, 1 searchdogs.ch, 1 @@ -129363,6 +129822,7 @@ searx.ee, 1 searx.nu, 1 searx.org, 1 searx.party, 1 +searx.run, 1 searx.space, 1 searx.stream, 1 searxng.cf, 1 @@ -129376,6 +129836,7 @@ seasonsboutique.com.au, 1 seasonsof.berlin, 1 seaspecsdals.com, 1 seat61.com, 1 +seatbeltpledge.com, 1 seating.dynv6.net, 1 seatours.co.uk, 1 seatrandiscovery.com, 1 @@ -129412,19 +129873,18 @@ sebald.org, 1 sebar-iklan.gq, 1 sebariklanmassal.gq, 1 sebarin.tk, 1 -sebastiaandenboer.eu, 1 sebastiaandouma.co.uk, 1 sebastiaanwijnimport.nl, 1 sebastian-bergmann.de, 1 sebastian-bravo.com, 1 sebastian-elisa-pfeifer.eu, 1 -sebastian-goetz.com, 1 sebastian-haeutle.de, 1 sebastian-janich.de, 1 sebastian-kraus.me, 1 sebastian-kuhnert.de, 1 sebastian-lutsch.de, 1 sebastian-michalke.de, 1 +sebastian-reck.de, 1 sebastian-walla.com, 1 sebastianblade.com, 1 sebastianboldt.com, 1 @@ -129464,16 +129924,17 @@ secan.com, 1 secapp.fi, 1 secard.cc, 1 secard.me, 1 -secat-team.com, 1 +secard.xyz, 1 secatscale.org, 1 secaucusnjpolice.gov, 1 secborder.com, 1 secbsd.org, 1 secctexasgiving.org, 0 secdfir.com, 1 +secfilingdata.com, 1 secgui.de, 1 sech.me, 1 -secinto.com, 1 +secinto.com, 0 secitem.de, 1 seclimax7.pw, 1 seclink.link, 1 @@ -129484,7 +129945,6 @@ secnet.ga, 1 secnews.gr, 1 secnode.xyz, 1 secolve.com, 1 -secom.one, 1 secomea.com, 1 second-life-partner-ichien.com, 1 secondchancejobsforfelons.com, 1 @@ -129492,7 +129952,6 @@ secondlife.tk, 1 secondmeasure.com, 1 secondnature.bio, 1 secondperson.net, 1 -secondround.ch, 1 secondsightmgt.com, 1 secondthought.ai, 1 secondtreasuresmv.com, 1 @@ -129509,7 +129968,6 @@ secret-garden.it, 1 secret-queen.ga, 1 secret-queen.ml, 1 secret.garden, 1 -secret4.eu, 1 secretagentclub.tk, 1 secretar.is, 1 secretary-schools.com, 1 @@ -129527,7 +129985,6 @@ secretmuseum.net, 1 secretnerdsmartygames.com, 1 secretofanah.com, 1 secretosbolivia.tk, 1 -secretprovider.com, 1 secrets-marketing.tk, 1 secretsbynature.nl, 1 secretsdujeu.com, 1 @@ -129536,7 +129993,6 @@ secretstomartialarts.tk, 1 secretworld.ml, 1 secretzone.bg, 1 secrium.io, 1 -secrt.ca, 1 secs.london, 1 secta.cf, 1 secteam.ee, 1 @@ -129556,19 +130012,17 @@ section77.de, 1 sector.cx, 1 sector.zone, 1 sector7.nu, 1 +sectr7.dk, 1 sectrans.tk, 1 sectv.com, 1 secudoc.nl, 1 secularweb.org, 1 -seculynx.com, 1 secumailer.com, 0 -secumailer.nl, 0 +secumailer.nl, 1 secundity.com, 1 secundity.nl, 1 secunm.org, 1 -securaa.io, 1 securai.de, 1 -securapilot.com, 1 secure-automotive-cloud.com, 1 secure-automotive-cloud.org, 1 secure-client-area.com, 1 @@ -129580,6 +130034,7 @@ secure-share.com, 1 secure.advancepayroll.com.au, 1 secure.facebook.com, 0 secure.wang, 1 +secureacces.fr, 1 secureapplicationaccess.ca, 1 secureapplicationaccess.com, 1 secureauth.com, 1 @@ -129635,12 +130090,14 @@ security-brokers.com, 1 security-command.org, 1 security-xanthi.gr, 1 security.de, 1 +security.gives, 1 security.golf, 1 security.google.com, 1 security.gov.uk, 1 security.pl, 1 security.xn--q9jyb4c, 1 securityabstract.com, 1 +securityanalystservices.com, 1 securityaware.me, 1 securitybasegroup.com, 1 securitybrief.asia, 1 @@ -129648,7 +130105,6 @@ securitybrief.ca, 1 securitybrief.co.nz, 1 securitybrief.co.uk, 1 securitybrief.com.au, 1 -securitybrief.ie, 1 securitybrief.in, 1 securitybrief.news, 1 securitydelta.nl, 1 @@ -129663,6 +130119,7 @@ securityplusfcu.org, 1 securitypuppy.com, 1 securitysense.co.uk, 1 securitysnobs.com, 0 +securitystreak.com, 1 securitystudio.com, 0 securitytalent.nl, 1 securitytalk.pl, 1 @@ -129679,8 +130136,9 @@ securl.chat, 1 securl.link, 1 securocloud.com, 1 securoswiss.ch, 1 -securot.eu, 0 +securot.eu, 1 securview.ch, 1 +secutec.fr, 1 secvuln.com, 1 secvuln.info, 1 secwall.me, 1 @@ -129689,13 +130147,11 @@ secweb.org, 1 seda.wa.edu.au, 1 sedaliastpauls.org, 1 sedattahir.com, 1 -sedeb.fr, 1 sedefshipyard.com, 1 -sedetecnicaizabal.com, 1 +sedetc.gob.pe, 1 sedico.mx, 1 sedicomm.com, 0 sedigit.com, 1 -sedintechnologieshq.com, 1 sedirector.net, 1 sedkisghairi.com, 0 sedky.net, 1 @@ -129710,17 +130166,14 @@ see-now.co, 1 see-you.co, 1 see.you, 1 seearmenia.tk, 1 -seeaway.com.br, 1 seebetterlab.com, 1 seecat.biz, 1 seecdn.com, 1 seecdn.net, 1 seecustom.com, 1 -seedance2.live, 1 seedandleisure.co.uk, 1 seedbox.fr, 1 seedbox.hosting, 1 -seedcraftdigital.com, 1 seedersinstruments.com, 1 seedhammer.com, 1 seedisclaimers.com, 1 @@ -129747,7 +130200,6 @@ seemomclick.com, 1 seemorehere.tk, 1 seemyreality.tk, 1 seenearme.com, 1 -seenheart.io, 1 seenrooftopbangkok.com, 1 seeonce.co, 1 seerainer.com, 1 @@ -129763,7 +130215,6 @@ seetheprogress.de, 1 seetheprogress.eu, 1 seetheprogress.net, 1 seetheprogress.org, 1 -seethis.place, 1 seetow.sg, 1 seetv.ga, 1 seeusercontent.com, 1 @@ -129786,8 +130237,8 @@ seg-sys.com, 1 seg-tox.org, 1 seg.do, 1 sega-play.online, 1 -sega73.hu, 1 segamastersystem.tk, 1 +segaretro.org, 1 segaskets.com.au, 1 segdo.de, 1 segdo.media, 1 @@ -129806,6 +130257,7 @@ segulink.com, 1 segurancaresidencialbh.com.br, 1 segurdatacr.com, 1 segurico.cz, 1 +seguridad-informacion.com, 1 seguridadconsumidor.gov, 1 seguridadsistem.tech, 1 seguridadsistemtienda.tech, 1 @@ -129824,6 +130276,7 @@ segurossura.com.pa, 1 segv.fi, 1 sehat-solusi-makmur.com, 1 sehati.cafe, 1 +sehatyab.com, 0 sehbasarwar.com, 1 seheyah.me, 1 sei-yu.net, 1 @@ -129840,6 +130293,7 @@ seikoman.tk, 1 seil.de, 1 seilbahntechnik.net, 1 seiler-ds.com, 1 +seilergeodrones.com, 1 seilerinst.com, 1 seilgold.de, 1 seimo.cn, 1 @@ -129855,10 +130309,11 @@ seiryokuzai-ch.com, 1 seiservices.com, 1 seishinan.xyz, 1 seishinchuo-lawoffice.com, 1 -seismas1.com, 0 +seishuncollection.com, 1 +seismas1.com, 1 seisthewaytobe.com, 1 seistolzaufdich.de, 1 -seistrup.dk, 0 +seistrup.dk, 1 seitai-taiyou.com, 1 seitanic-cookbook.de, 1 seitensieger.at, 1 @@ -129876,9 +130331,8 @@ sejambemvindosaofuturo.com.br, 1 sejfzycia.pl, 1 sejie80.com, 1 sejutaproperti.com, 1 -sek.ai, 0 +sek.ai, 1 seka-ru.com, 1 -sekai-kabuka.com, 1 sekainokokki.jp, 1 sekfung.me, 1 sekiei-lifeservice.net, 1 @@ -129903,6 +130357,7 @@ sekweta.com, 1 sel4.systems, 1 selang.cf, 1 selang.ml, 1 +selatv.com, 1 selayar.vacations, 1 selber-coden.de, 1 selbst-schmiede.de, 1 @@ -129910,7 +130365,7 @@ selbst-schreinern.de, 0 selbstverteidigung-catmove.de, 1 selco-himejiminami.com, 1 selcusters.nl, 1 -selea.se, 0 +selea.se, 1 selebrita.ml, 1 selecadm.name, 1 selectables.tk, 1 @@ -129925,6 +130380,7 @@ selegiline.com, 1 selen.com.br, 1 selena-armavir.ml, 1 selenapelletier.tk, 1 +selenegames.com, 1 seleondar.ru, 1 selesnafes.com, 0 selezionebarbrboguaccero.cf, 1 @@ -129944,17 +130400,16 @@ selfdefinition.org, 1 selfdefinition.tk, 1 selfelec.be, 1 selfemployed.ga, 1 -selfguide.com, 1 selfici.com, 1 selfici.cz, 1 selfiehome.cz, 1 selfiestick.bg, 1 selfimprovementdaily.com, 1 selfishness.com, 1 -selfiys.com, 1 selfloath.in, 1 selfmade.id, 1 selfmade4u.de, 0 +selfpublishingformula.com, 1 selfquestion.pt, 1 selfrealize.ga, 1 selfretire.cf, 1 @@ -129966,7 +130421,6 @@ selistina.tk, 1 selkiemckatrick.com, 1 selkirkelementary.com, 1 sell2orbit.com, 1 -sell4service.com, 1 sellajoch.com, 1 sellbit.io, 1 sellcoins.top, 1 @@ -129974,6 +130428,7 @@ selldone.com, 1 selldorado.com, 1 seller.diamonds, 1 sellerengine.com, 1 +sellerrunning.com, 0 sellers.market, 1 sellersfunding.com, 1 sellersmart1.com, 1 @@ -129990,7 +130445,6 @@ sellmyshares.com.au, 1 sello.com, 1 sellocdn.com, 1 selloenseco.com, 1 -selloqr.com, 1 sellorbuy.uk, 1 sellorbuy.us, 1 sellphotos.tk, 1 @@ -130006,7 +130460,6 @@ selma.com, 1 selman-marrakech.com, 1 selmatownship-mi.gov, 1 selmec.com.mx, 1 -selmecziklima.hu, 1 selmer-tn.gov, 1 selmer.gov, 1 selmon.ru, 1 @@ -130061,7 +130514,6 @@ seminovostoyota.com.br, 1 semiotical.com, 0 semiotika.tk, 1 semira.tk, 1 -semiramida-rieltor.ru, 1 semirben.de, 1 semiretire.ga, 1 semisupervised.com, 1 @@ -130072,8 +130524,8 @@ semops.gq, 1 semox.de, 1 semparar.com.br, 1 sempel.nl, 1 -semperfiyuma.com, 1 sempersalutaris.com, 1 +sempersolaris.com, 1 semplicementelight.com, 1 sempoctet.ca, 1 sempreupdate.com.br, 1 @@ -130084,8 +130536,7 @@ semrecc.gov, 1 semrush.com, 1 sems-cnm.net, 1 semsec.net, 1 -semtinde.com, 0 -semuasekolah.com, 1 +semtinde.com, 1 semver.ca, 1 semyonov.su, 1 sen-uni-lu.ch, 1 @@ -130101,6 +130552,7 @@ senarius.de, 1 senat.cz, 1 senat.ro, 1 senatorhughes.com, 1 +senbil.net, 1 senbil.video, 1 sence.gob.cl, 1 sencurina.de, 1 @@ -130119,8 +130571,10 @@ sendai-recruit.com, 1 sendai-sisters.com, 1 sendai-sougou.com, 1 sendai-works.com, 1 +sendaimori.com, 1 sendaiouji.com, 1 sendbird.com, 1 +sendbox.cz, 1 sendcredit.com, 1 sendengo.com, 1 sender.net, 1 @@ -130142,7 +130596,7 @@ sendpulse.com, 1 sendsonar.com, 1 sendsteps.com, 1 sendthisfile.com, 1 -sendtrix.nl, 0 +sendtrix.nl, 1 sendwithses.com, 1 sendy.land, 1 sendzik.eu, 1 @@ -130161,7 +130615,7 @@ seniorcommunitymedia.com, 1 seniorem.eu, 1 seniorhelpers.com, 1 seniorhost.net, 1 -seniorliving-northbend.com, 1 +seniorie-sart-tilman.be, 1 seniorlivinginvestments.eu, 1 seniormanager.cz, 1 seniornavigator.org, 1 @@ -130175,7 +130629,6 @@ senneeeraerts.be, 1 sennik.tk, 1 senoctarsoft.tk, 1 senok.ml, 1 -senomix.com, 1 senooken.jp, 1 senor-cheapo.nl, 1 senork.de, 1 @@ -130225,7 +130678,6 @@ sentenza.tk, 1 senterada.tk, 1 sentez-cro.com, 1 sentia.com, 1 -sentientforge.ai, 1 sentiment.rest, 1 sentiments.io, 1 sentinel.com, 1 @@ -130234,7 +130686,6 @@ sentinelnet.tk, 1 sentinelone.com, 1 sentinelproject.io, 1 sentinels.tk, 1 -sentinexrisk.com, 1 sentirmebien.org, 1 sentitvia.email, 1 sentmail.ga, 1 @@ -130242,8 +130693,8 @@ sentor.se, 1 sentorsecurity.com, 1 sentrafield.com, 1 sentral.com, 1 +sentralegal.com, 1 sentry.io, 1 -sentrygateopener.com, 1 sentrysoftware.com, 1 sentworks.com, 0 senvion.in, 1 @@ -130252,10 +130703,9 @@ senzei.tk, 1 senzoripresiune.com, 1 seo-analyse.com, 1 seo-blog12.tk, 1 -seo-dr-it.com, 1 seo-dvizh.ru, 1 -seo-forum.nu, 1 -seo-inc.ru, 0 +seo-forum.nu, 0 +seo-inc.ru, 1 seo-linz.at, 1 seo-obmen.tk, 1 seo-phpbb.cf, 1 @@ -130282,7 +130732,6 @@ seoankara.name.tr, 1 seoapi.com, 1 seoarchive.org, 1 seoargentina.com.ar, 1 -seobaz.com, 1 seoblogs.cf, 1 seobook2015.cf, 1 seobook2015.ga, 1 @@ -130301,6 +130750,7 @@ seodrug.tk, 1 seoefectivo.com, 1 seoforyou.nl, 1 seogeek.nl, 1 +seogeky.com, 1 seoghoer.dk, 1 seogood.cf, 1 seohackers.fr, 1 @@ -130309,10 +130759,10 @@ seohouston.com, 1 seoified.com, 1 seoinc.com, 1 seojaguar.tk, 1 +seojuice.it, 1 seokatka.tk, 1 seolabuitest.azurewebsites.net, 1 seoline.cf, 1 -seolinkstore.com, 1 seolister.cf, 1 seolisting.cf, 1 seolisting.tk, 1 @@ -130320,9 +130770,11 @@ seolizer.de, 1 seolord.cf, 1 seomag.tk, 1 seomap.ir, 1 +seomarketing.bg, 1 seomaton.com, 1 seomaton.org, 1 seomaxion.com, 1 +seomedo.com, 1 seomen.biz, 1 seonaut.org, 1 seonoco.com, 1 @@ -130340,6 +130792,7 @@ seopromotion.tk, 1 seoproof.tk, 1 seoptimizan.com, 1 seoptimize.fr, 1 +seoquero.com, 1 seoranker.tk, 1 seorus.cf, 1 seorus.ml, 1 @@ -130348,7 +130801,6 @@ seoscan.ga, 1 seoschmiede.at, 1 seoscribe.net, 1 seosearch.org, 1 -seosecret.id, 1 seoserfing.tk, 1 seosergio.com, 1 seoshanti.ru, 0 @@ -130367,27 +130819,28 @@ seoteam.tk, 1 seotec.com.br, 1 seotesty.cz, 1 seotip.top, 1 -seotologie.de, 1 seotoolset.tk, 1 +seotrainingcamp.com, 1 seoturkey.tk, 1 seotutorials32.tk, 1 seoulartcollective.tk, 1 seovisit.tk, 1 seovisits.tk, 1 seoviziti50.tk, 1 -seowerkz.com, 0 +seowerkz.com, 1 seowhizone.com, 1 +seowind.io, 1 seowordpress.pl, 1 seowork.tk, 1 seozel.tk, 1 seozen.top, 1 -seozent.com, 1 seozilla.ai, 1 sep-online.com.pl, 1 sep.cc, 1 sepadental.com.my, 0 separacioniglesiaestado.tk, 1 separate.ly, 1 +sepehrmahan.com, 1 sepenggal.info, 1 sepio.systems, 1 sepiocyber.com, 1 @@ -130417,7 +130870,6 @@ sequatchiecountytn.gov, 1 sequenceconsulting.com, 1 sequencediagram.org, 1 sequencing.com, 1 -sequentialtech.com, 1 sequitur.tech, 1 ser-it.pl, 1 sera.jp, 1 @@ -130428,6 +130880,7 @@ seraph.tokyo, 1 serasa.com.br, 1 serasaexperian.com.br, 1 seratblog.ga, 1 +seratdl.ir, 1 serban.cv, 1 serban.ro, 1 serbanpaun.ro, 1 @@ -130436,12 +130889,12 @@ serc.ac.uk, 1 sercanazizoglu.com, 1 sercasindustry.tk, 1 sercoapprenticeships.uk, 1 +serdarakyildiz.com, 1 serdarwork.com, 1 serdengolpinar.tk, 1 serecoponsillo.it, 1 sereema.com, 1 serele.fr, 1 -seren.link, 1 seren.tk, 1 serenahotels.com, 1 serenaparadise.com, 1 @@ -130458,7 +130911,6 @@ serenityeditor.com, 1 serenityhk.org, 1 serenitytvl.com, 1 serenmodz.rocks, 1 -serenstra.com, 1 seresco.es, 1 serfas.gr, 1 serfinansa.com.co, 1 @@ -130468,7 +130920,7 @@ sergal.gay, 1 sergeantbiggs.net, 1 sergeemond.ca, 1 sergefonville.nl, 1 -sergelapointe.ca, 0 +sergelapointe.ca, 1 sergepalincpa.com, 1 sergeyburov.tk, 1 sergeyesenin.tk, 1 @@ -130520,7 +130972,6 @@ seroquelonline.tk, 1 serp.technology, 1 serpensin.com, 1 serpenteq.com, 0 -serpentsway.com, 1 serpes.nz, 1 serphost.ml, 1 serpinco.com, 1 @@ -130558,6 +131009,7 @@ servecrypt.ru, 1 servelelecciones.cl, 1 servelink.com, 1 servend.gov, 1 +servenet.online, 1 serveport.com, 1 serveproxy.com, 1 servepublic.com, 1 @@ -130566,6 +131018,7 @@ server-bg.net, 1 server-daten.de, 1 server-essentials.com, 1 server-kiste.de, 1 +server-zugang.eu, 1 server.fm, 1 server.pro, 1 server.vote, 1 @@ -130581,23 +131034,24 @@ serverbit.it, 1 serverco.com, 1 serverd.de, 1 serverdechile.tk, 1 +serverdensity.io, 1 serverdozen.nl, 1 serverdragon.site, 1 serveretail.com, 1 serverhost.no, 1 -serverhuis.nl, 0 +serverhuis.nl, 1 serverhunter.com, 1 serverion.ga, 1 serverka.tk, 1 serverlauget.no, 1 serverlein.com, 1 -serverlisten.dk, 1 serverlog.net, 1 serverlounge.eu, 1 serverninja.tk, 1 serveroffline.net, 1 serverpedia.de, 1 -serverscan.com, 0 +servers.vg, 1 +serverscan.com, 1 serversify.host, 1 serversify.net, 0 serverstatus.tk, 1 @@ -130636,14 +131090,11 @@ servicedesk.ath.cx, 1 serviceexpress.com, 1 servicefish.tk, 1 serviceforge.com, 1 -serviceglobal.info, 1 serviceland.am, 1 -servicemanagerpro.com, 1 servicemasterbyzaba.com, 1 servicemembers.gov, 1 servicenow.com, 1 servicepclaptop.com, 1 -servicepuntsportenbewegen.nl, 1 services-etatcivil.gov.bf, 1 servicesforfree.com, 1 serviceslotenmaker.nl, 0 @@ -130664,7 +131115,8 @@ serviciosfncs.com, 1 servicioskoinonia.org, 1 serviciosprevisionfuneraria.com, 1 serviciotecnicoencomputacion.com.ve, 0 -servier.com, 0 +serviciotecnicosantcugat.es, 1 +servier.com, 1 servietten-grosshandel.at, 1 servietten-grosshandel.be, 1 servietten-grosshandel.ch, 1 @@ -130680,7 +131132,6 @@ servipizza.com, 1 servis-azd.cz, 1 servis4u.top, 1 servisebi.ge, 1 -servisibursa.net, 1 servisin.id, 1 servispasaoglu.com.tr, 1 servispcznojmo.cz, 1 @@ -130716,7 +131167,6 @@ serworkribeirao.com.br, 1 serx.cf, 1 seryovpn.com, 1 ses-offshore.com, 1 -ses-sandmann.de, 1 sesa.org, 1 sesam-biotech.com, 1 sesamomusical.tk, 1 @@ -130747,22 +131197,19 @@ sestable.com, 1 sestry.tk, 1 set-freeporn.com, 1 setabun.or.jp, 1 +setapaklangkah.com, 1 seteampty.net, 1 setenforce.one, 1 setesat.com.br, 1 setevik.tk, 1 -setgmt.com, 1 -seth.rocks, 1 sethcorker.com, 1 sethcurry.ga, 1 sethforprivacy.com, 1 +sethjason.com, 1 sethjust.com, 1 sethlmatarassomd.com, 1 -sethm.uk, 1 -sethmb.xyz, 1 sethoedjo.com, 1 sethriedel.com, 1 -seths.tech, 1 sethvargo.com, 1 seti-germany.de, 0 setin.srl, 1 @@ -130784,7 +131231,6 @@ setuid.io, 1 setuid0.kr, 1 setun.tk, 1 setuplog.io, 1 -setuprig.com, 1 setupstreamers.com, 1 setur.com.tr, 1 setxxxtube.com, 1 @@ -130792,15 +131238,10 @@ seu.edu.sa, 1 seucreditodigital.com.br, 1 seutens.be, 1 seutens.eu, 1 -sevaro.com, 1 sevastopol-news.com, 1 sevastopol-news.ru, 1 sevastopol.tk, 1 -sevecn.cc, 1 -sevecn.cn, 1 -sevecn.com, 1 seven-seas.ml, 1 -sevenangelsmassage.com, 1 sevenartzpublicidad.com, 1 sevenconsulting.ro, 1 sevendevilsnc.gov, 1 @@ -130839,18 +131280,19 @@ sewing-machines.com.ua, 1 sewing-world.ru, 1 sewingtales.com, 0 seworld.ml, 1 -sewtracker.com, 1 +sex-sex-cam.com, 1 sex-test.com, 1 sex-vergleich.com, 1 +sex5.com, 1 sexandthecitty.tk, 1 sexastr.club, 1 sexastr.com, 1 sexawynet.cam, 1 sexblag.club, 1 sexcamexpert.com, 1 -sexcamsbay.com, 0 +sexcamsbay.com, 1 +sexdel.com, 1 sexdocka.nu, 1 -sexdollg.com, 1 sexedquickies.com, 1 sexedrescue.com, 1 sexfirehub.com, 1 @@ -130868,7 +131310,7 @@ sexmobil.de, 1 sexoclicker.com, 1 sexoclicker.net, 1 sexoclicker.org, 1 -sexocomgravidas.com, 0 +sexocomgravidas.com, 1 sexogsamfunn.no, 1 sexogsamfunn.online, 1 sexohab.guru, 1 @@ -130881,6 +131323,7 @@ sexologist.cf, 1 sexolviv.com, 1 sexonsight.com, 1 sexonwax.com, 0 +sexopolis.gr, 1 sexorzn.red, 1 sexorzn.xyz, 1 sexosintabues30.com, 1 @@ -130895,9 +131338,9 @@ sexspb.love, 1 sexswing.com, 0 sextacy.tk, 1 sextapegermany.com, 1 +sextoysproductstore.com, 1 sextpanther.com, 1 sextreffendeutschland.com, 1 -sextubespot.com, 1 sextw.net, 1 sexualdiversity.org, 1 sexualidadcursosvip.com, 1 @@ -130928,6 +131371,7 @@ sexystine.net, 1 sexyteens.net, 1 sexyvenushuegel.org, 1 seyfarth.de, 1 +seyirmuzik.com, 1 seykapuertasautomaticas.com, 1 seymourfanclub.tk, 1 seymourpowell.com, 1 @@ -131024,13 +131468,14 @@ sfondo.info, 1 sformule.cz, 1 sfotbal.cz, 1 sfotbalem.cz, 1 +sfpebblesstones.com, 1 sfpuc.gov, 1 sfrms-app.fr, 1 +sfs.buzz, 1 sfslashing.com, 1 sftool.gov, 1 sfumusic.com, 1 sfvonline.nl, 1 -sfw.bot, 1 sfweef.gq, 1 sfxmedina.com, 1 sfxmr.de, 1 @@ -131058,7 +131503,7 @@ sgfinanceira.online, 1 sggame990.com, 1 sght.gallery, 1 sgitc.de, 1 -sgivacationclub.com, 1 +sgj0.net, 1 sglazov.ru, 1 sglcpa.com, 1 sglibellen.de, 1 @@ -131079,6 +131524,7 @@ sgrmreproduccionapp.azurewebsites.net, 1 sgrossi.it, 1 sgrowe.de, 0 sgrs.be, 1 +sgrub.xyz, 1 sgs-systems.de, 1 sgs.camera, 1 sgs.systems, 1 @@ -131093,8 +131539,10 @@ sgtool.eu, 1 sgtrains.com, 1 sgtsnookums.net, 1 sgtt.ch, 0 +sgutranscripts.org, 1 sh-heppelmann.de, 1 sh-network.de, 1 +sh0rt.in, 1 sh0rt.zone, 1 sh0u.jp, 1 sh0uld.net, 1 @@ -131132,6 +131580,8 @@ shadowknight.tk, 1 shadowlurker.com.au, 1 shadowmas.ddns.net, 1 shadowmorph.info, 1 +shadowping.com, 1 +shadowplus.net, 0 shadowranks.com, 1 shadowsing.com, 1 shadowsocks.ac, 1 @@ -131154,6 +131604,7 @@ shadowsocks.ss, 1 shadowstalkers.tk, 1 shadowstep.tk, 1 shadowstrikers.tk, 1 +shadowuniverse.xyz, 1 shadowvolt.net, 1 shadrinsk-city.ru, 1 shadynook.net, 1 @@ -131166,6 +131617,8 @@ shaftofdarkness.club, 0 shag-shag.ru, 1 shahadpharma.com, 1 shahar.cc, 0 +shaharklamka.com, 1 +shaharyaranjum.com, 1 shaheedirfani.tk, 1 shaheednawazirfani.tk, 1 shahidafkar.tk, 1 @@ -131180,6 +131633,7 @@ shahriar.xyz, 1 shahrsazan.tk, 1 shahrvand.ga, 1 shahsaadkhan.tk, 1 +shahyadmusic.com, 1 shahzaibm.com, 1 shaicoleman.com, 1 shaiden-porn.com, 1 @@ -131196,13 +131650,12 @@ shakan.ch, 0 shakebeforeuse.tk, 1 shakeit.pt, 1 shaken-kyoto.jp, 1 -shakepay.com, 0 +shakepay.com, 1 shakerheightsoh.gov, 1 shakerwebdesign.net, 1 shakespeareans.net, 1 shakespearesolutions.com.au, 0 shakesprimer.tk, 1 -shakibul.com, 1 shakingthehabitual.com, 1 shaknews.tk, 1 shakraphix.tk, 1 @@ -131226,7 +131679,7 @@ shamil.tech, 1 shamimahmed.tk, 1 shamimmedia.ir, 1 shamiphotos.tk, 1 -shamokit.com, 0 +shamokit.com, 1 shan.io, 0 shan.sg, 1 shan.si, 1 @@ -131241,6 +131694,7 @@ shanghaiair.com, 1 shanghaimineral.com, 0 shangobud.com, 1 shangren.lu, 1 +shangrenlu.cn, 1 shangyu.com.tw, 1 shanhay.tk, 1 shaniainternational.tk, 1 @@ -131261,6 +131715,7 @@ shantihospice.org, 1 shantiyoga.ro, 1 shanwong.com, 1 shanwong.design, 1 +shanxia.com, 1 shanxiapark.com, 1 shanxiu.com, 1 shaofu.cf, 1 @@ -131276,6 +131731,7 @@ shapes-audio.dk, 1 shapesouthcarolina.gov, 1 shapeyourcityhalifax.ca, 1 sharaf.net, 1 +sharanyamunsi.net, 1 sharanyan.com, 1 shararam-card.tk, 1 sharats.me, 0 @@ -131287,11 +131743,12 @@ share2act-test.io, 1 shareabc.vip, 1 shareapollo.com, 1 sharebot.ga, 1 +shareby.cam, 0 sharedalbumsf.com, 1 sharedgoals.co, 1 sharedhealthmb.ca, 1 sharedhost.de, 0 -shareforcelegal.com, 1 +sharedreview.com, 1 sharefox.eu, 0 sharefunfacts.com, 1 sharegate.tk, 1 @@ -131342,25 +131799,21 @@ sharko.tk, 1 sharkpaint.tk, 1 sharks.football, 1 sharky.ro, 1 -sharky009.de, 1 sharmafamily.tk, 1 -sharneylaura.co.uk, 1 sharnoffphotos.com, 1 sharona.cloud, 1 sharonnh.gov, 1 sharonpope.com, 1 sharpapi.com, 1 -sharpapi.io, 1 sharpcranehire.com.au, 1 sharpe-practice.co.uk, 1 sharpe.systems, 1 +sharpgalapagos.jp, 1 sharpiesscrubs.tk, 1 sharpletters.net, 0 -sharplines.io, 1 sharpmetals.com, 1 sharpsburg-ga.gov, 1 sharptudhope.co.nz, 1 -sharqsouq.com, 1 sharren.org, 1 sharstonbooks.co.uk, 1 sharvey.ca, 1 @@ -131368,7 +131821,6 @@ shashki.spb.ru, 1 shashlik.tk, 1 shastacounty.gov, 1 shatabdichildrenschool.tk, 1 -shataku-naviplus.jp, 1 shatalov.com, 1 shatteredarchive.com, 1 shaumine.ml, 1 @@ -131417,6 +131869,7 @@ she.run, 0 sheaf.site, 1 shear.tk, 1 shearin.pro, 1 +shearwaterdental.com, 1 sheboygancountywi.gov, 1 sheboyganfallswi.gov, 1 shechipin.cf, 1 @@ -131433,9 +131886,9 @@ sheehyinfinitioftysonsparts.com, 1 sheekdeveloper.com, 1 sheelyuu.art, 1 sheepfriends.com, 1 +sheepproductions.com, 1 sheeprock.tk, 1 sheepsound.tk, 1 -sheerchain.com, 1 sheet.host, 1 sheetengine.net, 1 sheetflowpro.com, 1 @@ -131444,6 +131897,7 @@ sheezy.blog, 1 sheezy.games, 1 sheezy.stream, 1 sheezy.wiki, 1 +sheezyf.art, 1 shef.com, 1 shefburgers.com, 1 sheffield-wednesday-fc.tk, 1 @@ -131454,7 +131908,6 @@ shehaal.com, 1 shehata.com, 1 sheilacantone.it, 1 sheilasdrivingschool.com, 1 -sheilasign.ch, 1 shek.zone, 1 shelburnepdvt.org, 1 shelbycounty-il.gov, 1 @@ -131474,6 +131927,7 @@ shellfire.it, 1 shellfire.net, 1 shelljuggler.com, 0 shellopolis.com, 1 +shellot.com, 1 shellsec.pw, 0 shellshock.eu, 1 shellta.com, 1 @@ -131481,10 +131935,8 @@ shellwhite.ga, 1 shellwhite.tk, 1 shelly-forum.com, 1 shelma.tk, 1 -shelt.com, 1 -shelter.money, 1 shelterislandtown.gov, 1 -shelterofflint.org, 1 +sheltermap.de, 1 sheltieplanet.com, 1 sheltonvirtual.com, 1 shelvacu.com, 1 @@ -131498,6 +131950,7 @@ shemogo.com, 1 shemsconseils.ma, 1 shemy.eu, 1 shenandoahrealestate.org, 1 +shenandoahwoodwork.com, 1 shenannigans.tk, 1 shenderman.ml, 1 sheng-wai.com, 1 @@ -131533,10 +131986,10 @@ shermanms.gov, 1 shermanshebcowi.gov, 1 shermantwphuronmi.gov, 1 sherpa.blog, 1 +sherpany.com, 1 sherpnortheast.com, 1 sherrikelley.com, 0 sherston.com, 1 -shertogenboschcentraal.nl, 1 shertogenboschtimemachine.nl, 1 sherules.com, 1 shervinbeauty.com, 1 @@ -131559,7 +132012,9 @@ shhmale.com, 1 shia.dk, 1 shiawasedo.co.jp, 1 shibahara-shika.com, 1 +shibainu.com.br, 1 shibakery.com, 1 +shibashake.com, 1 shibayan.jp, 1 shibbydex.com, 1 shibeflix.com, 1 @@ -131574,19 +132029,18 @@ shielder.com, 1 shielder.it, 1 shieldnet.tk, 1 shieldnsheath.com, 1 -shields.house, 1 shieldsair.com, 1 shiellc.com, 1 shif.tk, 0 shift-record.com, 1 shift-to.co.jp, 1 -shiftbucket.com, 1 shiftcrypto.ch, 1 shiftcrypto.shop, 1 shiftcrypto.support, 1 shiftdelete.net, 1 shiftdevices.com, 1 shifters.ch, 1 +shiftgrit.com, 1 shifthappens.to, 1 shifti.ng, 1 shiftj.is, 1 @@ -131610,7 +132064,6 @@ shijij.com, 1 shijing.me, 1 shikaku-test.com, 1 shikiryu.com, 1 -shikoch.in, 1 shikuichi.net, 1 shilled.tk, 1 shilohtownshipil.gov, 1 @@ -131625,7 +132078,6 @@ shimmy1996.com, 1 shimo.im, 1 shinbukan-katorishintoryu.org, 1 shindocuba.tk, 1 -shine.studio, 0 shineads.in, 1 shineiberia.tv, 1 shineindiarktutorial.ml, 1 @@ -131652,24 +132104,28 @@ shinshu.id, 1 shinsyo.com, 1 shinta.ro, 1 shintoism.com, 1 -shiny.gg, 1 +shinycleankitchen.com, 1 +shinyhappydoggy.com, 0 +shinyoko-saisyuusyou.com, 1 shinyokumiai.or.jp, 1 shinypebble.uk, 1 shinyupai.com, 1 shiomiya.com, 1 shiovawn.net, 1 ship-technology.com, 1 +shipaik.com, 1 shipamax.com, 1 shipard.com, 1 shipard.cz, 1 shipard.org, 1 -shipbee-lb.com, 1 shipbuddies.com, 1 shipengliang.com, 1 shipgoldchandler.com, 1 shipham.co.uk, 1 +shipheart.tech, 1 shipinhuiyi.com, 0 shipitsmarter.com, 1 +shipkardo.pk, 1 shiplapandshells.com, 1 shipmondo.com, 1 shipmonk.cloud, 1 @@ -131683,6 +132139,7 @@ shippingyourworld.ca, 1 shippingyourworld.com, 1 shipshewana.gov, 1 shipsparrot.com, 1 +shiptest.net, 1 shiptron.com, 1 shiqi.ca, 1 shiqi.lol, 1 @@ -131693,6 +132150,7 @@ shiqi.tv, 1 shiqi1.com, 1 shiqishidai.cc, 1 shiqisifu.cc, 1 +shira.art.br, 1 shiralee.com, 1 shiraminerals.ltd, 1 shiranaitenshi.tk, 1 @@ -131704,6 +132162,7 @@ shiriforum.tk, 1 shirimasen.com, 1 shirley.li, 1 shirlygilad.com, 1 +shiro.love, 1 shiroki-k.net, 1 shiropaev.tk, 1 shirosaki-hana.fun, 1 @@ -131737,7 +132196,6 @@ shivenjoshi.com, 1 shivering-isles.com, 0 shiwa-shop.ml, 1 shiwu.com, 1 -shixunet.net, 1 shiyouqkl.com, 1 shiyutech.com, 1 shizoworld.de, 1 @@ -131775,6 +132233,7 @@ shmulvad.com, 1 shnuff.co.uk, 1 sho-furtwangen.de, 1 sho-ji.jp, 1 +shoahneveragain.com, 1 shoalcreekoutfitters.com, 0 shochikubai.tk, 1 shochufes.jp, 1 @@ -131785,6 +132244,7 @@ shoejitsu.co, 1 shoekeys.lt, 1 shoelevel.com, 1 shoenji.net, 1 +shoeracks.uk, 1 shoerenew.ca, 1 shoesexpo.com, 1 shoesoutlet.tk, 1 @@ -131807,7 +132267,7 @@ shontakleinpeter.tk, 1 shooba.net, 1 shoobacreations.com, 1 shooger.com, 1 -shoosmiths.com, 0 +shoosmiths.com, 1 shoot360franchise.com, 1 shooter.dog, 1 shooting-balades.com, 1 @@ -131820,9 +132280,9 @@ shop-eldorado.tk, 1 shop-hellsheadbangers.com, 1 shop-lingerie.tk, 1 shop-ok.tk, 1 -shop-on-the-internet.com, 1 shop-s.net, 1 shop-slivki.tk, 1 +shop-trapezbleche.de, 1 shop4d.com, 1 shop4im.com, 1 shop4you.de, 1 @@ -131848,6 +132308,7 @@ shopdougssupermarket.com, 1 shopdullestowncenter.com, 1 shopera.ch, 1 shopfazz.com, 1 +shopforcovers.com, 1 shopforeverproducts.com, 1 shopfskmall.com, 1 shopfully.com.au, 1 @@ -131862,6 +132323,7 @@ shopic.co, 1 shopific.co, 1 shopific.com, 1 shopifycloud.com, 1 +shopifyfactory.io, 1 shopikal.com, 1 shopingbiz.tk, 1 shopintra.net, 1 @@ -131876,6 +132338,7 @@ shoplus.com.tw, 1 shoplyft.co.za, 1 shopmalinka.cf, 1 shopmaxilife.com.ph, 1 +shopmlr.com, 1 shopmontrose.com, 1 shopnemp.com, 1 shopofturkey.com, 1 @@ -131885,7 +132348,6 @@ shoporangetheory.com, 1 shoposal.com, 1 shopperexpertss.com, 1 shoppersdepuertorico.com, 1 -shoppersvineyard.com, 1 shoppies.tk, 1 shopping-cart-migration.com, 1 shopping-il.org.il, 1 @@ -131949,6 +132411,7 @@ shoppingglamour.ga, 1 shoppingglory.ga, 1 shoppinggrab.ga, 1 shoppingguerilla.ga, 1 +shoppingguru.co.za, 1 shoppinghands.ga, 1 shoppinghandsome.ga, 1 shoppinghotrod.ga, 1 @@ -132054,10 +132517,8 @@ shoptions.net, 1 shopunderwear.tk, 1 shopunilever.com, 1 shopupnorth.com, 1 -shopwice.com, 1 shopwinedirect.com, 1 shopx.co.il, 1 -shopyub.com, 1 shopzona.biz, 1 shore.co.il, 1 shorebreaksecurity.com, 1 @@ -132065,7 +132526,6 @@ shorecomp.com, 1 shorehamfort.co.uk, 1 shorehillgolf.com, 1 shorelinelaserdesigns.com, 1 -shorelinewebdesigns.com, 1 shoresofshawneebend.com, 1 shorewoodil.gov, 1 shorewoodmn.gov, 1 @@ -132095,11 +132555,9 @@ shortnews.cf, 1 shortr.li, 1 shortstackcustoms.com, 1 shortstream.cz, 1 -shorttandemrepeats.com, 1 shortwave.com, 1 shortwave.tk, 1 shoruihokan.com, 1 -shory.sa, 1 shoshonecityid.gov, 1 shoshovis.com, 1 shossain.tk, 1 @@ -132108,11 +132566,14 @@ shota-sekkotsuin.com, 1 shota.pictures, 1 shotbow.net, 1 shotcounter.nl, 1 +shotdeck.com, 1 shotoniphone.ga, 1 shotsbyferry.nl, 1 shotsleeve.com, 1 shou.si, 1 shoudanren.jp, 1 +shoujik8.com, 1 +shoujochronicle.org, 1 shouldbetaught.com, 1 shoulderandelbowspecialist.com.au, 1 shouldiclick.it, 1 @@ -132137,7 +132598,6 @@ showdns.com, 1 showerdoorco.com, 1 showersnet.com, 1 showf.om, 1 -showfom.com, 1 showfom.sb, 1 showgirls.ga, 1 showkase.com.br, 1 @@ -132145,7 +132605,6 @@ showmax.com, 1 showme.co.za, 1 showme.hu, 1 showmeengland.co.uk, 1 -showmemorocco.com, 1 showmethescore.cf, 1 showmoviz.com, 1 showmyip.com, 1 @@ -132156,7 +132615,6 @@ showpassword.net, 0 showroom.uk, 1 showroom113.ru, 1 showroombarral.com, 1 -shows.pk, 1 showslot.com, 1 showsonar.com, 1 shoyuf.top, 1 @@ -132173,7 +132631,6 @@ shrapnel.ga, 1 shraymonks.com, 1 shred.ch, 0 shredder.tk, 1 -shreditme.ae, 1 shredoptics.ch, 0 shreesatya.org, 1 shrej.cz, 1 @@ -132187,7 +132644,6 @@ shrines.tk, 1 shrinidhiclinic.in, 1 shrinker.tk, 1 shrinkhub.com, 1 -shrinkjson.com, 1 shrinkmydoc.com, 1 shroomery.org, 1 shropshireautonomy.co.uk, 1 @@ -132225,19 +132681,18 @@ shugua.com.tw, 1 shuhacksoc.co.uk, 1 shui.ga, 0 shuishou.com, 1 -shuixx.com, 1 shuiyu.com, 1 shuizilan.com, 1 shukatsu-ichiba.com, 1 -shukr.ch, 1 shulan.moe, 1 shuletime.ml, 1 shulman.tk, 1 shulyaka.org.ru, 1 shuma.ga, 1 -shumka61.ru, 1 shumnyj-istochnik.tk, 1 shumov.tk, 1 +shunbangwig.com, 0 +shunbao.com, 1 shunlian.live, 1 shunlian.video, 1 shunliancloud.cn, 1 @@ -132256,10 +132711,10 @@ shuo.li, 0 shura.eu.org, 1 shurita.org, 1 shurporno.com, 1 +shushuwoa.com, 1 shutdowntimer.com, 1 shuttelportal.nl, 1 shutter-shower.com, 1 -shutteringsystems.com, 1 shuttersandshadesnearme.com, 1 shutts.com, 1 shutupbabyiknowit.party, 1 @@ -132306,7 +132761,6 @@ sibanyestillwater.com, 1 sibasiach.ch, 1 sibekohirescaffolding.co.za, 1 siberas.de, 1 -siberdefter.com, 1 siberia.gq, 1 siberiactiva.com, 1 siberiancatsinformation.com, 1 @@ -132315,6 +132769,7 @@ siberianhuskypets.com, 1 siberiaserver.ga, 1 siberkulupler.com, 1 sibernet.tk, 1 +siberx.org, 1 sibfk.org, 1 sibfl.gov, 1 sibgold.su, 1 @@ -132332,10 +132787,9 @@ sibpizza.com, 1 sibrenvasse.nl, 1 sibs-dance-diamonds.ch, 1 sibs.com, 1 -sibtonwhitehorseinn.co.uk, 1 sibu.one, 1 sicapita.com, 1 -sicblox.com, 1 +sicblox.com, 0 siccardisport.it, 1 sich-fight.club, 1 sich-positionieren.net, 1 @@ -132352,18 +132806,17 @@ sicksadworld.space, 1 sicomasp.com, 1 sicurezza24.info, 1 sicurezzasud.it, 1 -sid-solutions.de, 1 sid500.com, 1 sidari.tk, 1 sidatbacklink.tk, 1 sidaways.co.uk, 1 +siddhalepa.com, 1 siddhamehta.tk, 1 -siddhkar.com, 1 siddigsami.com, 1 sidechannel.blog, 1 sidechannel.media, 1 sidecredit.ga, 1 -sidedoorapp.com, 0 +sidedoorapp.com, 1 sidefx.com, 0 sideleau.com, 1 sidemount-tauchen.com, 1 @@ -132382,6 +132835,7 @@ sidik.web.id, 1 sidingsmedia.com, 1 sidiprojects.us, 1 sidirokastro.ga, 1 +sidium.de, 1 sidmax.ca, 1 sidneymi.gov, 1 sidnicio.us, 1 @@ -132389,17 +132843,16 @@ sidomulyo.tk, 1 sidomunculstore.com, 1 sidorovich.tk, 1 sidpod.ru, 1 -sidr.pk, 1 sidrodrigues.com, 1 sidrona.co, 1 siduga.com, 1 sie.at, 1 siebenhirten7.at, 1 +siebeve.be, 1 siecon-it.com, 1 siega.pl, 1 siegemund-frankfurt.de, 1 siegfried.com.pe, 1 -siegfriedandjensen.com, 1 sieglercars.ch, 1 siegprod.tk, 1 sieh.es, 0 @@ -132439,24 +132892,23 @@ sifangmao.org, 1 sifasharing.tk, 1 sife.jp, 1 sifecs.ml, 1 -siffron.com, 0 +siffron.com, 1 sifnosguide.dk, 1 -sifr.pk, 1 sifreuret.com, 0 +sift.com, 1 sig-io.nl, 1 sig6.org, 1 sigabrt.org, 1 sigateway.com, 1 sigb.sh, 1 -sigecloud.com.br, 1 sigedtour.gov.bf, 1 sigep.org, 1 sigfridlinden.se, 1 siggi.io, 1 -siggnal.io, 1 sight-restoration.tk, 1 sight-sound.com, 1 sightandsound.co.uk, 1 +sightcure.jp, 1 sightfactory.com, 1 sightful.be, 1 sightful.eu, 1 @@ -132469,7 +132921,6 @@ sigi.tk, 1 sigint.pw, 0 sigio.nl, 1 sigma-apartments.com, 1 -sigma-lozenets.com, 1 sigma957.net, 1 sigmacomputers.ga, 1 sigmacomputing.com, 1 @@ -132496,7 +132947,6 @@ signaconsultoria.com.br, 1 signage.red, 1 signal.pm, 1 signal34.com, 1 -signalbee.trade, 1 signaldc.com, 1 signaldp.com, 0 signalmaps.co.uk, 1 @@ -132510,16 +132960,17 @@ signaturecrs.com, 1 signaturedallas.com, 0 signatureplants.co.nz, 1 signaturereport.org, 1 +signatureresolution.com, 1 signaturerx.co.uk, 1 signaturesmilesstudio.com, 1 -signaturewindowstexas.com, 1 signcreative.de, 1 +signdeer.com, 1 signeen.com, 1 signeen.net, 1 signere.com, 1 signetfm.com, 1 signicat.com, 1 -signicat.io, 1 +signicat.io, 0 significado.origem.nom.br, 1 significadodenombres.net, 1 significados.com, 1 @@ -132532,6 +132983,7 @@ signingcloud.com, 1 signitysolutions.com, 1 signix.net, 1 signmore.com, 1 +signmycode.com, 1 signora.gr, 1 signpath.io, 0 signrequest.com, 1 @@ -132540,7 +132992,6 @@ signs4vehicles.co.uk, 1 signsatelier.com, 1 signsdance.uk, 1 signsforhope.org, 1 -signsny.com, 1 signtourshungary.com, 1 signtul.com, 0 signup.ly, 1 @@ -132548,15 +132999,12 @@ signup.ninja, 1 signupgenius.com, 1 signuponline.events, 1 signwell.com, 1 -sigoo.co.jp, 1 sigparser.com, 0 -sigpas.fr, 1 sigptr.me, 1 sigrid-mair.at, 1 sigsync.com, 1 sigterm.no, 1 sigterm.sh, 1 -sigurnosnisistemi.rs, 1 sigurnost.online, 1 siguza.net, 1 sigvik.ru, 1 @@ -132574,11 +133022,13 @@ sikayetvar.com, 0 sike.org, 1 sikevux.se, 1 sikhmissionarysociety.org, 1 +sikisi.com, 1 sikkasoft.com, 1 sikkerwindows.dk, 1 sikkind.com, 0 siku-shop.ch, 1 siku.pro, 1 +sil.box, 1 sil.co.id, 1 sila.qa, 1 silagra.ml, 1 @@ -132588,7 +133038,6 @@ silashes.com, 1 silatdefense.fr, 1 silbercloud.com, 1 silberkiste.com, 1 -silbermann.ch, 1 silbox.ch, 1 sildenafilcitrate.cf, 1 sildenafilcitrate100mg.ga, 1 @@ -132614,7 +133063,6 @@ siliconheartlandohio.gov, 1 siliconlightworks.com, 1 siliconlowcode.com, 1 siliconvalley.center, 1 -silicosis.org.au, 1 silina.tk, 1 silk, 1 silk.com, 1 @@ -132626,7 +133074,6 @@ silkrituals.com, 1 silkroad-iraq.com, 1 silkroad.com, 1 sillasdegamer.es, 1 -silleiro.com, 1 sillisalaatti.fi, 1 silly-billy.org, 1 sillysnapz.co.uk, 1 @@ -132634,7 +133081,6 @@ silo.org.br, 1 silodrome.com, 1 siloportem.eu, 1 siloportem.net, 1 -silosset.com, 1 silqueskineyeserum.com, 1 silsha.me, 1 silta.tk, 1 @@ -132657,6 +133103,7 @@ silvergoldbull.be, 1 silvergoldbull.bg, 1 silvergoldbull.bj, 1 silvergoldbull.by, 1 +silvergoldbull.ca, 1 silvergoldbull.cl, 1 silvergoldbull.cm, 1 silvergoldbull.cn, 1 @@ -132666,6 +133113,7 @@ silvergoldbull.co.il, 1 silvergoldbull.co.no, 1 silvergoldbull.co.tz, 1 silvergoldbull.co.uk, 1 +silvergoldbull.com, 1 silvergoldbull.com.au, 1 silvergoldbull.com.eg, 1 silvergoldbull.com.gh, 1 @@ -132764,14 +133212,14 @@ sim-karten.net, 1 sim-minaoshi.jp, 1 sim-mobile.ml, 1 sim4seed.org, 1 -simabonnement.nl, 0 +simabonnement.nl, 1 simac.fr, 1 -simacek.cz, 1 simaogv.net, 1 simaris.shop, 1 simark.ca, 1 simart.cf, 1 simaspava.com.tr, 1 +simava.org, 1 simbiat.eu, 1 simbiat.net, 1 simbiat.org, 1 @@ -132790,9 +133238,7 @@ simeam-frank.de, 1 simeam.cloud, 1 simeam.de, 1 simelek.com, 1 -simen.co, 1 simenak.com, 1 -simenask.com, 1 simeononsecurity.ch, 1 simeononsecurity.com, 1 simetal.ch, 0 @@ -132898,7 +133344,6 @@ simplelogin.co, 1 simplelogin.io, 1 simpleman.cf, 1 simplemathguild.com, 1 -simplemerchshops.com, 1 simplemining.net, 1 simplenet.io, 1 simplenet.ro, 1 @@ -132932,7 +133377,6 @@ simplexwireless.com, 1 simplia.cz, 0 simpliby.com, 1 simplifiedbackoffice.com, 1 -simplifiedbusinessmarketing.com, 1 simplifiedlaws.com, 1 simplifixed.com, 1 simplifyem.com, 1 @@ -132942,6 +133386,7 @@ simplix.info, 1 simplixos.org, 1 simplrflex.com, 1 simplus.id, 1 +simplusbr.com, 1 simply-bob.de, 1 simply-pattinson.tk, 1 simply-pdf.de, 1 @@ -132953,8 +133398,7 @@ simplybrave.net, 1 simplycharlottemason.com, 1 simplychocolate.com, 1 simplycloud.de, 1 -simplycodes.com, 0 -simplydogtalk.com, 1 +simplycodes.com, 1 simplydonelegal.com, 1 simplydonot.com, 1 simplydonut.com, 1 @@ -132962,6 +133406,7 @@ simplydrivennapasonoma.com, 1 simplyfitapp.com, 1 simplyfitperth.com.au, 1 simplyfixit.co.uk, 1 +simplyfranciscan.org, 0 simplyfuture.net, 1 simplyhelen.de, 0 simplyjet.tk, 1 @@ -132972,19 +133417,20 @@ simplyowners.net, 1 simplyplans.co.uk, 1 simplyregister.net, 1 simplysmartgardening.com, 1 -simplythebestevents.co.uk, 1 simplytiles.com, 0 simplytime.co.uk, 1 simplyuniforms.com.au, 1 simplyup.io, 1 simplyveritext.com, 1 simplyvoting.com, 1 +simpplr.com, 1 simprosuite.com, 1 simpson.edu, 1 simpsoncountyky.gov, 1 simpsonizeme.co, 1 -simpul.nl, 1 +simpul.nl, 0 simpvp.net, 1 +simrail.cn, 1 simrail.nl, 1 simranmehta.ga, 1 sims4hub.ga, 1 @@ -132996,7 +133442,6 @@ simsid-dev-applnchrapi.azurewebsites.net, 1 simsid-dev-datamanager.azurewebsites.net, 1 simsid-dev-newsalertsapi.azurewebsites.net, 1 simsid-dev-oneroster.azurewebsites.net, 1 -simsid-dev-passwordsyncapi.azurewebsites.net, 1 simsid-dev-timetable.azurewebsites.net, 1 simsid-live-adpapi.azurewebsites.net, 1 simsid-live-audit.azurewebsites.net, 1 @@ -133055,7 +133500,6 @@ sincemydivorce.com, 1 sincerely.com, 1 sincityfan.tk, 1 sinclairinat0r.com, 1 -sincronismo.com.br, 1 sincrotools.com.br, 1 sindacato.it, 1 sindarina.com, 1 @@ -133073,7 +133517,6 @@ sindominio.net, 1 sindromebenjamin.tk, 1 sinefili.com, 1 sinemakurd.tk, 1 -sinemetrik.com, 1 sinergify.com, 1 sinetron.ga, 1 sinews.tk, 1 @@ -133081,6 +133524,7 @@ sinfield.com, 0 sinfoniettabelcanto.org, 1 sinfully.gq, 1 sinfully.tk, 1 +singaporebrand.com.sg, 1 singaporeccc.org.sg, 1 singaporeconventionweek.sg, 1 singaporecriminaldefencelawyer.com, 1 @@ -133100,7 +133544,6 @@ singingblackbird.tk, 1 singingwillow.nl, 1 singita.com, 1 single-in-stuttgart.de, 1 -single-invoice.co, 1 singlecellcourse.org, 1 singleeuropeansky.aero, 1 singlehandedsailing.tk, 1 @@ -133147,11 +133590,11 @@ sinonimosonline.com.br, 1 sinopec.com.ua, 1 sinopx.cf, 1 sinoscandinavia.se, 1 -sinot.info, 1 sinotouch.com, 1 sinpermiso.info, 1 sinquin.eu, 1 sinsalida.tk, 1 +sinsandscents.com, 1 sinsin.io, 1 sinsitio.tk, 1 sinsolucion.tk, 1 @@ -133214,6 +133657,7 @@ sircon.no, 1 sirena.ml, 1 sirenassociates.com, 0 sirenasweet.net, 1 +sirenasweet.org, 1 sirencallofficial.com, 1 sirenequestrianvaulting.co.uk, 1 sirenequestrianvaulting.com, 1 @@ -133241,6 +133685,7 @@ sirovatka.tk, 1 sirplus.com.ar, 1 sirpsycho.tk, 1 sirram.de, 1 +sirtaptap.com, 1 sirupybartonik.cz, 1 sirvio.eu, 1 sirvoy.ca, 1 @@ -133263,8 +133708,9 @@ sirvoy.se, 1 sirzech.my.id, 1 sis.gov.uk, 1 sisadmin21.tk, 1 -sisap.com, 0 +sisap.com, 1 siscompbolivia.tk, 1 +siscompt.com, 0 sisconmed.com.br, 1 siscoweb.it, 1 siscowebcrm.it, 1 @@ -133294,7 +133740,6 @@ sistemano.ru, 1 sistemapronto.ml, 1 sistemaseinformacao.com.br, 1 sistemasespecializados.com, 1 -sistemaslogitron.com, 1 sistemaspleno.com, 1 sistemika.cl, 1 sistemista.it, 1 @@ -133332,17 +133777,20 @@ siteadvokat.cf, 1 sitebuilderreport.com, 0 sitechange.dedyn.io, 1 sitechecker.pro, 1 -sitecherish.co.uk, 1 siteclick.co.uk, 1 sitecore.com, 1 sitecreation.tk, 1 sitecreator.tk, 1 sitecrew.cf, 1 +sitecuatui.com, 0 +sitedebelezaemoda.com.br, 1 sitedynamix.co.uk, 1 siteforce.com, 1 sitehizlandir.com, 1 +siteinlight.com, 1 siteintelstage.com, 1 siteinteressant.net, 1 +sitejustice.com, 1 sitek.rocks, 1 sitekatalog.tk, 1 sitelinks.ga, 1 @@ -133371,8 +133819,8 @@ sitestudio.tk, 1 sitesweb.gq, 1 sitetalk.tk, 1 sitetuners.com, 1 -siteu.nl, 1 siteviseagency.com, 1 +siteweb-seo.fr, 1 sitgesfilmfestival.com, 1 sithijaya.tk, 1 sithmanifest.com, 1 @@ -133394,6 +133842,7 @@ situsbandarq.ml, 1 situsbandarq.tk, 1 sitypro.com, 1 sitz.ch, 1 +sitzungsdienst.net, 0 siulam-wingchun.org, 1 siusoon.net, 1 sivaacademy.net, 1 @@ -133405,6 +133854,7 @@ siwiki.rs, 1 siwyd.com, 1 six.ee, 1 sixam.co.jp, 1 +sixara.com, 1 sixcolors.lu, 1 sixcorners.info, 1 sixcorners.net, 1 @@ -133420,6 +133870,7 @@ sixstarwellbeing.com.au, 1 sixstrings.tk, 1 sixtiesgroovemachine.com, 1 sixtiesgroovemachine.nl, 1 +sixyy.com, 1 siyahiblog.com, 1 siyako.com, 1 siyanie-clean.ru, 1 @@ -133430,7 +133881,6 @@ sizeunknown.com, 1 sizeunknown.de, 1 sizeunknown.net, 1 sizeunknown.org, 1 -sizle.co, 1 sizyff.fr, 1 sj-leisure.com, 1 sj27user.ru, 1 @@ -133446,7 +133896,6 @@ sjdma.de, 1 sjede.cz, 1 sjeverni.info, 1 sjfss.marketing, 1 -sjg.us, 1 sjid.co.uk, 1 sjleisure.co.uk, 1 sjlrc.com, 1 @@ -133471,26 +133920,23 @@ sjtpo.org, 1 sjtravel.guru, 1 sjuhawknews.com, 1 sjukom.net, 1 -sjvc.edu, 1 sjwheel.net, 1 sk-ii.com, 1 sk.tl, 1 -sk4y.net, 1 skaala.com, 1 skaalen.com, 1 skaapkraalonline.co.za, 1 skabour.co.uk, 1 +skachat-filmi.info, 1 skachat-programmylini.ga, 1 skachat-shablon-rezyume-na-angliyskom-yazyk.tk, 1 skachat-zip.tk, 1 skachay-knighki.gq, 1 skachay-photo.gq, 1 skagen-feriebolig.dk, 1 -skaiciuoti.lt, 1 skaiman.ga, 1 skaitliukas.tk, 1 skakun.io, 1 -skaldhotel.is, 1 skalec.org, 1 skalniak.pl, 1 skamper.tk, 1 @@ -133537,7 +133983,7 @@ skeetads.com, 1 skegnesstec.ac.uk, 1 skei.org, 1 skendongpoetry.com, 1 -skepneklaw.com, 0 +skepneklaw.com, 1 skepp.com, 1 skeppsbrons.se, 1 skepticalsports.com, 1 @@ -133563,13 +134009,11 @@ skhoop.cz, 1 skhosting.eu, 1 skhron.com.ua, 1 skhron.eu, 1 -skhron.org, 1 ski-planet.com, 1 skialpyjakvino.cz, 1 skiaustria.at, 1 skibbereencomhaltas.tk, 1 skibikers.tk, 1 -skiclub-hohenlimburg.de, 1 skid.church, 1 skiddle.com, 1 skidka.by, 1 @@ -133591,6 +134035,7 @@ skiingproperty.com, 1 skiinstructor.services, 1 skiinv.com, 1 skikkogbank.no, 1 +skile.ru, 0 skiley.net, 1 skilift-quellenwiese.at, 0 skill-explorer.com, 1 @@ -133600,7 +134045,6 @@ skill.moe, 1 skill.tk, 1 skill8.ro, 1 skillablers.com, 1 -skillai.hk, 1 skilldnsproc.com, 1 skillfloor.com, 1 skillmoe.at, 1 @@ -133636,12 +134080,14 @@ skinews.tk, 1 skinexpert.ml, 1 skinfoodpeachcotton.tk, 1 sking.io, 1 +skinkits.com.ua, 1 skinlogic.org, 1 skinlords.com, 1 skinmarket.co, 1 skinmodo.com, 1 skinna.mx, 1 skinnation.tk, 1 +skinneymedspa.com, 0 skino.cz, 1 skinonline.co.za, 1 skinport.com, 1 @@ -133662,7 +134108,7 @@ skioakenfull.com, 1 skiozarts.fr, 1 skip.re, 1 skipfault.com, 1 -skipify.com, 0 +skipp.ch, 1 skippy.dog, 0 skipr.co, 1 skipr.ninja, 1 @@ -133679,7 +134125,6 @@ skisportdain.it, 1 skitecsh.com, 1 skitznet.tk, 1 skizzen-zeichnungen.de, 1 -skizzi.pro, 1 skj6.ga, 1 skjt.co.jp, 1 skk.moe, 1 @@ -133700,11 +134145,10 @@ skm.dk, 1 skmedia.ga, 1 skmsport.com, 1 skoander.com, 1 -skob.no, 1 skoda-im-dialog.de, 1 skodapower.tk, 1 skodapreowned.in, 1 -skogsforum.se, 0 +skogsforum.se, 1 skogsstyrelsen.se, 1 skoi2023.com, 1 skoilly.cc, 1 @@ -133720,7 +134164,7 @@ skolid.se, 1 skolkavazka.cz, 1 skolni-system.eu, 1 skolnieks.lv, 1 -skolniweby.cz, 0 +skolniweby.cz, 1 skolplattformen.org, 1 skolskyportalporuba.cz, 1 skomtal.com, 1 @@ -133767,6 +134211,7 @@ skryland.ovh, 1 sks.com.au, 1 sksdrivingschool.com.au, 1 sksh.io, 1 +sksserbia.rs, 1 sktan.com, 1 sktst.dk, 1 skubala.cz, 1 @@ -133785,6 +134230,7 @@ skux.ch, 1 skvele-cesko.cz, 1 skvelecesko.cz, 1 skvot.de, 1 +skvot.io, 1 skwile-cafe.com, 1 skwlkrs.com, 1 sky-aroma.com, 1 @@ -133797,7 +134243,10 @@ sky-driver.ch, 1 sky-live.fr, 1 sky-motion.de, 1 sky-music.tk, 1 +sky-of-use.net, 1 +sky-os.ru, 1 sky-wap.cf, 1 +sky2tours.com, 0 skyarch.net, 1 skybass.nl, 1 skybirch.com, 1 @@ -133820,7 +134269,6 @@ skycert.co.nz, 1 skycert.nz, 1 skychan.org, 1 skyclinic.ua, 0 -skycomcallcenter.com, 1 skyder.com.mx, 0 skyder.mx, 0 skydivegeronimo.com.au, 1 @@ -133830,16 +134278,15 @@ skydragoness.com, 1 skydrive.live.com, 0 skye.vg, 1 skyeeverest.tk, 1 -skyello.com, 1 skyem.co.uk, 0 skyeng.ru, 1 skyeto.com, 1 skyevg.systems, 1 skyeyes.tw, 1 +skyfaireliving.com, 1 skyfall.network, 1 skyfcu.org, 1 skyfibertech.com, 1 -skyflight.hr, 1 skyfpicture.tk, 1 skygame.tk, 1 skygates.tk, 1 @@ -133857,11 +134304,9 @@ skylandanalytics.net, 1 skylander.cf, 1 skylandsoft.com, 1 skylarker.org, 1 -skylerknauss.com, 1 -skylightcreative.com.au, 0 +skylightcreative.com.au, 1 skylightipv.com, 1 skyline.tw, 1 -skylineattractions.com, 1 skylinehk.org, 1 skylinehouse.ca, 1 skylinemail.tw, 1 @@ -133878,15 +134323,15 @@ skymass.xyz, 1 skyminds.net, 1 skymkmk.com, 1 skymonk.tk, 1 -skynamo.com, 0 +skynamo.com, 1 skynet-research.us, 0 skynet.edu.kg, 1 skynet233.ch, 0 skynet800.goip.de, 1 skynetcloud.org, 1 skynetcloud.site, 1 +skynetz.tk, 1 skynfans.com, 1 -skynotify.co, 1 skyoceanblue.com, 1 skyoy.com, 0 skypanic.com, 1 @@ -133894,7 +134339,7 @@ skypark.tk, 1 skypce.net, 1 skype, 1 skype.com, 0 -skypech.com, 1 +skypicker.com, 1 skypicshd.com, 1 skyportcloud.com, 1 skyqueen.cc, 1 @@ -133904,32 +134349,22 @@ skyrider.me, 1 skyrosconsulting.com, 1 skys-entertainment.com, 1 skyscanner.ca, 1 -skyscanner.co.il, 1 skyscanner.co.in, 1 skyscanner.com, 1 skyscanner.com.au, 1 -skyscanner.com.br, 1 skyscanner.com.hk, 1 -skyscanner.com.ph, 1 skyscanner.de, 1 -skyscanner.dk, 1 skyscanner.es, 1 skyscanner.fr, 1 skyscanner.gg, 1 -skyscanner.ie, 1 -skyscanner.in, 1 skyscanner.jp, 1 skyscanner.net, 1 skyscanner.nl, 1 -skyscanner.no, 1 -skyscanner.ph, 1 -skyscanner.pl, 1 skyscanner.pt, 1 skyscanner.ru, 1 -skyscanner.uk, 1 skyscanner2024.com, 1 -skyscheduler.work, 1 skyscnr.com, 1 +skyscrapers.eu, 1 skyseo.cf, 1 skysoftbg.com, 1 skysplash.gq, 1 @@ -133948,14 +134383,13 @@ skywallphotography.com, 1 skywayplatform.com, 1 skywitnessnews.com, 1 skyworldserver.ddns.net, 1 +skywt.cn, 0 skyynet.de, 1 skyzimba.com.br, 1 sl-alarm.ru, 1 sl-bildermacher.de, 1 sl-informatique.ovh, 1 -sl-prokey.com, 1 sl.al, 1 -sl.ls, 1 sl0.us, 1 sl41.com.br, 1 sla.pl, 1 @@ -133980,7 +134414,6 @@ slagterbob.com, 1 slainvet.net, 1 slalix.pw, 1 slalix.xyz, 1 -slamdunk.sd, 1 slamdunkdedication.tk, 1 slamhope.gq, 1 slamix.nl, 1 @@ -134002,8 +134435,10 @@ slashnroses.com, 1 slashnroses.nl, 1 slashorg.net, 1 slashrepeat.com, 1 +slaskie.pl, 1 slate.fr, 1 slate.to, 1 +slated.ie, 0 slatemc.com, 1 slatemc.fun, 1 slateteams.com, 0 @@ -134014,7 +134449,6 @@ slatteryauctions.com, 1 slatteryauctions.com.au, 1 slaughter.com, 1 slaughterhouse.fr, 1 -slaughters.club, 1 slava.ml, 1 slavasoloviev.com, 1 slavasveta.info, 1 @@ -134027,7 +134461,7 @@ slavneznacky.cz, 1 slavnineznami.cz, 1 slavyansk-news.ru, 1 slaws.io, 1 -slayden.com, 0 +slayden.com, 1 slayersonline.net, 1 slbbiromaru.sch.id, 1 slbetx.com, 1 @@ -134078,6 +134512,7 @@ slektforsker.no, 1 slemen.tk, 1 slepsluzbabeograd.org, 1 sletaem.ml, 1 +sletat.ru, 1 sletmo.com, 1 slev.tk, 1 slevermann.de, 0 @@ -134111,7 +134546,6 @@ slim-slender.com, 1 slim.ua, 1 slimcrm.vn, 1 slime5.com.tw, 1 -slimed.cc, 1 slimer.com, 1 slimgrafix.cz, 1 slimhost.com.ua, 0 @@ -134134,6 +134568,7 @@ sliphua.work, 1 slipknot-site.tk, 1 slipnslide.xxx, 1 slippagetolerance.com, 1 +slippening.com, 1 sliptrickrecords.com, 1 slisticka.cz, 1 slite.com, 1 @@ -134162,7 +134597,6 @@ sloeproeienalmere.nl, 0 sloepverhuur-roggebroek.nl, 1 slogan.tk, 1 slogancreator.com.au, 1 -slogiker.si, 1 slogix.in, 1 sloneczni.pl, 1 slonko.net, 1 @@ -134198,6 +134632,7 @@ slovenskekasina.sk, 1 slovenskycestovatel.sk, 1 slow.social, 1 slow.zone, 0 +slowakei.international, 1 slowandsimple.co, 1 slowapi.com, 1 slowblinkmainecoons.com, 1 @@ -134215,10 +134650,9 @@ slrd-isperih.com, 1 slrealty.ru, 1 slrie.de, 1 sls.ltd, 1 +sls.org, 1 slt24.de, 1 -slubzcharakterem.pl, 1 sluciaconstruccion.com, 1 -slucky.de, 1 sluderno.org, 1 sludge.tk, 1 slugify.online, 1 @@ -134241,6 +134675,7 @@ slyarts.com, 1 slycegateway.com, 1 slycepay.com, 1 slycereporting.com, 1 +slymak.com, 1 slytigers.tk, 1 slyvon.com, 0 slzr.cloud, 1 @@ -134249,7 +134684,6 @@ sm-sektmanufaktur.shop, 1 sm-supplements.gr, 1 sm.ms, 1 sm161.cn, 1 -sm17p.me, 1 sm2016.ch, 1 sm2ct.cn, 1 sma-dev.de, 1 @@ -134262,7 +134696,6 @@ smackhappy.com, 0 smadav.ml, 1 smahelova.cz, 1 smajlovic.info, 1 -smaki-wsi.pl, 1 smaksbanken.no, 1 smalandscountryclub.tk, 1 small-blog.cf, 1 @@ -134275,11 +134708,11 @@ smallchat.nl, 1 smallcraftadvisory.tk, 1 smallcubed.com, 1 smalldeveloper.ml, 1 -smalle-voet.de, 1 smallfarmersjournal.com, 1 smallfoot.tk, 1 +smallguard.fr, 1 smallingerland.nl, 1 -smallplanet.com, 1 +smallplanet.com, 0 smalls-world.tk, 1 smallsiri.gq, 1 smallsites.eu, 1 @@ -134289,7 +134722,6 @@ smalltunepress.tk, 1 smallville.tk, 1 smallville25.tk, 1 smallwhitebear.ga, 1 -smaltimento-rifiuti.com, 1 smaltimento.caserta.it, 1 smaltimento.milano.it, 1 smaltimento.napoli.it, 1 @@ -134315,7 +134747,6 @@ smaragderna.cf, 1 smaragderna.ga, 1 smaragderna.tk, 1 smares.de, 1 -smares.it, 1 smaridibor.tk, 1 smarinintgal.tk, 1 smark.ai, 1 @@ -134323,7 +134754,7 @@ smarpshare.com, 1 smarriti.it, 1 smart-bezpeka.com, 1 smart-broker.ru, 1 -smart-caq.com, 1 +smart-center.pt, 1 smart-dianza.ga, 1 smart-house.bg, 1 smart-hub.io, 1 @@ -134336,22 +134767,23 @@ smart-pharma.group, 1 smart-profile.ro, 1 smart-travel.tk, 1 smart-tux.de, 1 -smart-vilp.com, 1 smart-wind.ru, 1 smart-zona.tk, 1 -smart11.ai, 1 smartacademy.ge, 1 smartagilesolution.com, 1 smartandcom.ch, 1 smartapplianceservices.com, 1 smartar.com, 1 +smartart.gr, 1 smartart.tk, 1 smartass.space, 0 smartass0027.com, 1 smartassembly.tk, 1 smartasset.com, 1 +smartbear.com, 1 smartbetaler.no, 1 smartbis.com, 1 +smartbiz.vn, 1 smartblock.cloud, 1 smartboardesl.com, 1 smartbooqing.com, 1 @@ -134368,11 +134800,11 @@ smartcluster.ga, 1 smartcommunications.com, 1 smartcover.tk, 1 smartcpa.ca, 1 -smartdatafusion.jp, 1 smartdb.jp, 1 smartdeal.bg, 1 smartdigital.ga, 1 smarteco.tk, 1 +smartedukasi.co.id, 1 smartenspaces.com, 1 smarters-protv.com, 1 smarterskies.gov, 1 @@ -134386,8 +134818,8 @@ smartfaktor.pl, 1 smartfire.pt, 1 smartfirm.com.au, 1 smartfit.cz, 1 +smartfixmarburg.de, 1 smartfons.tk, 1 -smartfreedomstrategies.com, 1 smartfridge-ai.com, 1 smartftp.com, 1 smartfusion.solutions, 1 @@ -134396,6 +134828,7 @@ smartgirls.tk, 1 smartglassworld.net, 1 smartguardzone.kr, 1 smarthdd.com, 1 +smarthealthinnovationlab.com, 1 smarthis.com, 1 smarthomegeldermalsen.nl, 1 smarthrms.com, 1 @@ -134404,6 +134837,7 @@ smartick.com.do, 1 smartiflix.com, 1 smartius.it, 1 smartjoin.style, 1 +smartkraftcircuits.com, 1 smartland.com, 1 smartlandapartments.com, 1 smartlandconstruction.com, 1 @@ -134418,9 +134852,10 @@ smartloanhacks.com, 1 smartlogiq.com, 1 smartlogiq.info, 1 smartlogreturns.com, 1 -smartlogstock.com, 1 +smartlogstock.com, 0 smartlogtower.com, 1 smartlooks.es, 1 +smartmail.io, 1 smartmail24.de, 1 smartme.pl, 1 smartmeal.ru, 1 @@ -134433,10 +134868,9 @@ smartmoney.com.ni, 1 smartnanny.cf, 1 smartnews-smri.com, 1 smartnoob.de, 1 -smartnotify.ca, 1 +smartoctopus.art, 1 smartology.net, 1 smartoneclub.com, 1 -smartools.pro, 1 smartpanelsmm.com, 1 smartpatika.hu, 1 smartpheromones.com, 1 @@ -134448,6 +134882,8 @@ smartphonefixen.be, 1 smartphonepliable.co, 1 smartphonesecretary.com, 1 smartphonesolution.tk, 1 +smartpiggy.co.uk, 1 +smartplus.ae, 1 smartpolicingplatform.com, 1 smartpos.net.br, 1 smartpostapp.com, 1 @@ -134456,7 +134892,7 @@ smartpti.net, 1 smartrak.co.nz, 1 smartrak.com, 1 smartrecruiters.com, 1 -smartreportviewer.com, 1 +smartrentacar.ro, 1 smartrequest.com, 1 smartrobbie.com.au, 1 smartroutes.ie, 1 @@ -134464,6 +134900,7 @@ smartroutes.io, 1 smartservices.nl, 0 smartshiftme.com, 1 smartshoppers.es, 1 +smartshousekeeper.pt, 1 smartsittich.de, 1 smartspace.ml, 1 smartspace.tk, 1 @@ -134481,8 +134918,6 @@ smartvalor.com, 1 smartview.cloud, 1 smartviewhub.com, 1 smartvisionoptometry.com.au, 1 -smartvoting.cl, 1 -smartwatchsolutions.com, 1 smartwealthmanagement.org, 1 smartweb.ge, 1 smartwebcreative.com, 1 @@ -134500,6 +134935,7 @@ smashcooper.tk, 1 smashingconf.com, 0 smashingmagazine.com, 1 smashnl.tk, 1 +smashno.ru, 1 smatzone.in, 1 smavesto.de, 0 smb-analytics.pw, 1 @@ -134507,6 +134943,7 @@ smb-bsa.ca, 1 smb.wiki, 1 smb445.com, 1 smbabyshop.gr, 1 +smbalaji.com, 1 smbc.direct, 1 smbcmanubank.com, 1 smbi-gelblasterhq.com.au, 1 @@ -134525,10 +134962,9 @@ sme-gmbh.com, 1 sme-gmbh.net, 1 sme.sk, 1 smedata.sk, 1 +smedix.com, 1 smeetsengraas.com, 1 smekonferencie.sk, 1 -smeli.ar, 1 -smeli.com.ar, 1 smelinukas.lt, 1 smelly.cloud, 1 smeloan.sg, 1 @@ -134536,10 +134972,12 @@ smereka-frnt.de, 1 smeso.it, 1 smeta.ml, 1 smetak.cz, 1 +smetana.pro, 1 smetbuildingproducts.com, 1 smeweb.com, 1 smeys.be, 1 smfdmn.gov, 1 +smgbs.com, 1 smgl.cm, 1 smh.me, 1 smi-a.me, 1 @@ -134566,12 +135004,14 @@ smilegenerator.tk, 1 smileinspector.io, 1 smilenwa.com, 1 smilephi.com, 1 +smilesofcary.com, 1 smilessoftplay.co.uk, 1 smileykylie.com, 1 smileys-emojis.com, 1 smileytechguy.com, 1 smilingcfo.co.uk, 1 smilingdogyoga.com, 1 +smilinghouse.ch, 0 smilingmiao.com, 1 smime.io, 1 smipty.cn, 1 @@ -134579,7 +135019,6 @@ smipty.com, 1 smirkhat.org, 1 smirniopoulos.gr, 1 smishnik.tk, 1 -smissab.com, 1 smit.com.ua, 1 smit.ee, 1 smith-tech.ga, 1 @@ -134597,6 +135036,7 @@ smithf.red, 1 smithikakart.in, 1 smithmont.com, 1 smithmountainlake.com, 1 +smithrobertsonpromotions.com, 1 smithsonian.gov, 1 smithsstational-fpd.gov, 1 smithsstational.gov, 1 @@ -134604,7 +135044,6 @@ smithsystem.net, 1 smithteresa.tk, 1 smithvillehomehardware.ca, 1 smithwealth.com.au, 1 -smits.com, 1 smits.frl, 1 smitsdesigncenter.nl, 1 smitsmail.net, 1 @@ -134632,7 +135071,6 @@ smobil.cz, 1 smobil.eu, 1 smoe.cc, 1 smoivez.tk, 1 -smoke.free, 1 smokedrhymez.tk, 1 smokefree.gov, 1 smokefreeclinic.com.au, 1 @@ -134650,10 +135088,10 @@ smokies.co.uk, 1 smoking-robot.com, 1 smokinghunks.com, 1 smokingtapes.ga, 1 +smokonz.com, 0 smokybay.is, 1 smokymountaingames.org, 1 smokyshores.radio, 0 -smol.cool, 1 smolbotbot.com, 1 smolensk-i.ru, 1 smolensk-news.net, 1 @@ -134680,6 +135118,7 @@ smoqerhome.ddns.net, 1 smorgasblog.ie, 1 smoser.eu, 1 smotret.tv, 1 +smotrowrelated.com, 1 smousebros.com, 1 smpelec.fr, 0 smphysio.com.au, 1 @@ -134694,6 +135133,7 @@ smriticharan.com, 1 smrtgeekdevs.com, 1 sms-pro.tk, 1 sms-v.ru, 1 +sms.farm, 1 sms.storage, 1 sms1.ro, 1 sms72.tk, 1 @@ -134726,7 +135166,6 @@ smtouseef.com, 1 smtpdev.com, 1 smtpserver.dk, 1 smuc-koca.si, 1 -smucraiova.ro, 1 smudailycampus.com, 1 smudge.ai, 1 smuncensored.com, 1 @@ -134754,8 +135193,10 @@ snackmindful.com, 1 snacktakos.gr, 1 snackworks.com, 1 snacky.nl, 1 +snad.org.sa, 1 snafu.cz, 1 snagator.com, 1 +snail.observer, 1 snaildos.tk, 1 snajdr.online, 1 snajdrova.eu, 1 @@ -134777,7 +135218,6 @@ snapkit.com, 1 snapnread.com, 1 snaps.io, 1 snapshades.com, 1 -snapshotreport.org, 1 snapware.tk, 1 snapworks.net, 1 snapzfs.com, 1 @@ -134809,7 +135249,7 @@ sneakycode.net, 1 sneakynote.com, 1 sneakypaw.com, 1 sneed.company, 1 -sneedit.com, 1 +sneedit.com, 0 sneedit.de, 1 snegozaderzhatel.ru, 1 snehasish-chakraborty.com, 1 @@ -134823,7 +135263,6 @@ snelshops.nl, 1 snelwebshop.nl, 1 snelwegzen.nl, 1 snem.tk, 1 -snep.uk, 1 snepflix.com, 1 snerith.com, 1 snesdev.com, 1 @@ -134841,8 +135280,6 @@ sniderman.pro, 1 sniderman.us, 1 sniderman.xyz, 1 sniep.net, 1 -sniffcat.com, 1 -sniffies.com, 1 sniffing.gq, 1 sniffle.eu, 1 snikket.de, 1 @@ -134878,7 +135315,6 @@ snotekbyariens.com, 1 snotoppen.nl, 1 snoupon.com, 1 snovinky.cz, 1 -snow-companies.com, 1 snow-flowers.com, 1 snow-service.it, 1 snowalerts.nl, 1 @@ -134888,6 +135324,7 @@ snowballeffect.co.nz, 1 snowboard-break.tk, 1 snowboardforum.tk, 1 snowcat.tk, 1 +snowchamps.nl, 1 snowcrestdesign.com, 1 snowdon.io, 1 snowdrop.moe, 1 @@ -134903,6 +135340,7 @@ snowhaze.com, 1 snowman25.de, 1 snowmassvillage.gov, 1 snoworld.one, 1 +snowpak.com, 0 snowparties.com, 1 snowpaws.de, 1 snowplanet.tk, 1 @@ -134922,6 +135360,7 @@ snrd.de, 1 snrd.eu, 1 snrlaw.in, 1 snroth.de, 1 +snrub.co, 1 sns-beta.com, 1 sns-dev.com, 1 sns-tg.pl, 1 @@ -134935,6 +135374,7 @@ snukep.kr, 1 snwsjz.com, 1 snyder-ne.gov, 1 snydersofhanover.com, 1 +so-academy.fr, 1 so-design.net, 1 so-gorgeo.us.kg, 1 so-link.co, 1 @@ -134954,21 +135394,20 @@ soapex.com, 1 soaplakewa.gov, 1 soapsspoilers.com, 1 soar-npc.org, 1 -soat.fr, 1 +soat.fr, 0 soax.com, 0 sobakasite.tk, 1 sobaki.tk, 1 sobakoh-nyc.com, 1 -sobatkaos.biz.id, 1 -sobaudon.f5.si, 1 sobchak.ga, 1 sobieray.dyndns.org, 1 -sobkite.com, 1 soblaznenie.ru, 1 soblaznenie2.ru, 1 sobre.tk, 1 sobrelixo.tk, 1 +sobuj.me, 1 socal-babes.com, 1 +socalaccessandvideo.com, 1 socalcoda.org, 1 soccerking-store.com, 1 soccerquarters.tk, 1 @@ -135011,8 +135450,6 @@ socialdemo.tk, 1 socialdevelop.biz, 0 socialdocumentary.net, 1 socialeducation.tk, 1 -socialekaartdenbosch.nl, 1 -socialekaarts-hertogenbosch.nl, 1 socialesactivo.ga, 1 socialesretro.tk, 1 socialfreak.cf, 1 @@ -135043,6 +135480,7 @@ socialpops.co.uk, 1 socialproject.ml, 1 socialresponsibility.nl, 1 socials.gq, 1 +socialsafe.net, 1 socialsecurity.gov, 0 socialstandards.com, 1 socialstrata.com, 1 @@ -135053,10 +135491,10 @@ socialtactics.ga, 1 socialtactics.gq, 1 socialtactics.ml, 1 socialtick.club, 1 -socialtide.ai, 1 socialtournaments.com, 0 socialtranslation.ga, 1 socialtrends.pl, 1 +socialutions.io, 1 socialwave.tk, 1 socialworklicensemap.com, 1 socialworkout.net, 1 @@ -135071,6 +135509,7 @@ sociedadsostenible.tk, 1 societatis.fr, 1 societe-chablaisienne-de-revetements.com, 1 societe-chablaisienne-de-revetements.fr, 1 +societe-deratisation-paris.fr, 1 societe-france-irlande.com, 1 societedescompagnons.fr, 1 societyofbur-q-ua.tk, 1 @@ -135078,6 +135517,7 @@ societyparty.ga, 1 societyrun.com, 1 socilit.com, 1 sociobiology.com, 1 +sociofab.com, 1 sociohosting.es, 1 sociology-bg.gq, 1 sociology-schools.com, 1 @@ -135099,7 +135539,6 @@ socprime.com, 1 socradar.io, 1 socratec-pharma.de, 1 socraticsolutions.us, 1 -socript.com, 1 socseti.cf, 1 socseti.ga, 1 socseti.gq, 1 @@ -135129,17 +135568,15 @@ sodreams.ru, 1 sodrujestvo.tk, 1 sodsouthernindiana.com, 1 sodusny.gov, 1 +soe-server.com, 1 soegi-haru.com, 1 soel.wa.edu.au, 1 soellner.info, 1 soelt.dk, 1 soelystsaebe.dk, 1 -soemanozeijlmans.eu, 1 soengen.com, 1 soenkem.ddnss.de, 1 soepvork.nl, 1 -soest-stadtfuehrung.de, 1 -sof.beauty, 1 sofa-bed.tk, 1 sofa-rockers.org, 1 sofabedshop.de, 1 @@ -135171,6 +135608,7 @@ soft-resets.com, 1 soft-search-system.tk, 1 soft.taipei, 1 soft41.ru, 1 +softaim.io, 1 softambulance.com, 1 softandbouncy.co.uk, 1 softanka.com, 1 @@ -135178,6 +135616,7 @@ softbabyducks.com, 1 softbit.pt, 1 softblinds.co.uk, 1 softchin.ir, 1 +softcleanr.shop, 0 softcompany.tk, 1 softcomplex.com, 1 softconcept.pt, 1 @@ -135188,9 +135627,8 @@ softelectronet.tk, 1 softenger.com, 1 softforge.co.uk, 1 softfuture.tk, 1 -softgamez.net, 1 softhints.com, 1 -softi.co.kr, 1 +softios.com, 1 softizy.com, 1 softloom.com, 1 softmachine.es, 1 @@ -135210,7 +135648,9 @@ softonit.ru, 1 softonline.net, 1 softpark.cf, 1 softpark.ml, 1 +softpas.com, 1 softplay4hire.co.uk, 1 +softpractice.com, 1 softref.com, 1 softsaz.ir, 1 softsecmatheodexelle.be, 1 @@ -135224,7 +135664,7 @@ software-tech.tk, 1 software-voor-projecten.nl, 1 software.rocks, 1 softwareag-stage.cloud, 1 -softwarebay.de, 0 +softwarebay.de, 1 softwarebeveiligingtestdomein.be, 1 softwarechris.com, 1 softwarecloud.ml, 1 @@ -135239,7 +135679,6 @@ softwaresauna.com, 1 softwaresecurityandradefernando.be, 1 softwearautomation.com, 1 softweb-dev.de, 1 -softwerks.com, 1 softwing.de, 1 softwsabri.be, 1 softx.tk, 1 @@ -135257,14 +135696,15 @@ sogoreate-landtrust.org, 1 sogravatas.com.br, 1 sogravatas.net.br, 1 sogut.bel.tr, 1 +sogutma.com.tr, 1 sohamroy.me, 1 sohanakhan.tk, 1 soherco.cl, 1 -sohfga.com, 1 sohka.eu, 1 soho-art.com, 1 soil-journal.net, 1 soil2.ch, 1 +soilegustafsson.fi, 1 soillessgeek.com, 1 soilscapesolutions.com, 1 sointelcom.com.co, 1 @@ -135333,6 +135773,7 @@ solarpanels.tk, 1 solarpanelscentralcoast.com, 1 solarplan-berlin.de, 1 solarpoolheatingsa.co.za, 1 +solarscan.com, 1 solarseason.ga, 1 solarstrom.net, 1 solartek.cf, 1 @@ -135355,7 +135796,6 @@ soldarizona.ga, 1 soldaten-genealogie.tk, 1 soldbypatrice.com, 1 soldierangels.tk, 1 -soldierer.com, 1 soldiersmg.tk, 1 sole-erdwaermetauscher.de, 1 soleanos.tk, 1 @@ -135367,7 +135807,6 @@ soleil33.net, 1 solemare-hotel.it, 1 solencell.com.tr, 1 solentbubblesandbounce.co.uk, 1 -soleur.ai, 1 solfegiator.ch, 0 solfipinformatique.org, 1 solgar.dk, 1 @@ -135380,12 +135819,12 @@ solid.ru, 1 solidairesparis.org, 0 solidarita-kosovo.net, 1 solidarityzone.org, 1 -soliddoors.co.za, 1 solidform.ml, 1 solidgroup.bg, 1 solidhost.cf, 1 solidimage.com.br, 1 solidincome.ga, 1 +solidityfactory.io, 1 solidnet.software, 1 solidnetwork.org, 1 solidpoint.com.my, 1 @@ -135394,7 +135833,6 @@ solidray.co.jp, 1 solidshield.com, 1 solidsteel.tk, 1 solidtuesday.com, 1 -solidus.cards, 1 solifi.com, 1 solihull.ac.uk, 1 solihullinflatables.com, 1 @@ -135412,12 +135850,13 @@ solitech.bg, 1 soliten.de, 1 soliujing.ml, 1 solium.com, 1 +soliumsolucion.com, 1 soliver.de, 1 soliver.eu, 1 +solix.com, 1 sollah.com, 1 sollahlibrary.com, 1 sollea.co, 1 -sollers-digital.ru, 1 sollet.ac, 1 sollishealth.com, 0 solmek.co.uk, 1 @@ -135447,7 +135886,8 @@ soloroboto.com, 0 solosesso.tk, 1 solostocks.com, 1 solostocks.it, 1 -solovault.io, 1 +solostocks.ma, 1 +solostocks.pl, 1 sols.style, 1 solsea.io, 1 solsi.ga, 1 @@ -135457,7 +135897,6 @@ soltysblue.pl, 1 solu.la, 1 solucaomadeira.com, 1 solucion.gq, 1 -solucionesmarva.com, 1 solucionesmk.online, 1 solucionesremotas.cl, 1 solucionupsperu.com, 1 @@ -135467,7 +135906,9 @@ solut.ai, 1 solution.ch, 1 solutionalbum.com, 1 solutionbuilders.com, 1 +solutionmotsfleches.com, 1 solutionpieces.com, 1 +solutionplumber.com, 1 solutions-ii.com, 1 solutions-it.net, 1 solutions-visuelles.ch, 1 @@ -135500,6 +135941,7 @@ somaar.tk, 1 somaini.li, 1 somaliaonline.com, 1 somalilandtalk.tk, 1 +somanao.com, 1 somautomotivobr.com.br, 1 someapi.de, 1 somedial.ch, 1 @@ -135524,7 +135966,6 @@ somewherenews.cf, 1 somewherenews.ga, 1 somewherenews.gq, 1 somewherenews.ml, 1 -somfa-liget.hu, 1 somi.nl, 1 somix.com, 1 soml.best, 1 @@ -135540,11 +135981,9 @@ sommerles.no, 1 sommerrodelbahn-gutach.de, 1 somnam.tk, 1 somni.one, 1 -somnoterapia.com, 1 somnus.com, 1 somogyivar.hu, 1 somosanna.hu, 1 -somosdialog.com.br, 1 somosfin-app.com, 1 somosgesath.com, 1 somosgratitude.com.br, 1 @@ -135574,6 +136013,7 @@ son-tolkovatel.ga, 1 son-tolkovatel.gq, 1 son-tolkovatel.ml, 1 son-tolkovatel.tk, 1 +son.ru, 1 sona-gaming.com, 1 sona.fr, 1 sonalsrinath.com, 1 @@ -135594,7 +136034,6 @@ sonder.com.au, 1 sonderkomission.ch, 1 sondoro.tk, 1 sondriotoday.it, 1 -soneofficial.com, 1 sonesinafar.tk, 1 sonesisonesi.tk, 1 sonesonesisi.tk, 1 @@ -135607,6 +136046,8 @@ songdew.com, 1 songesdeplumes.fr, 1 songi.net, 1 songlab.ai, 1 +songlifty.com, 1 +songsigrewupsinging.com, 1 songslaura.tk, 1 songsonline.tk, 1 songsterr.com, 1 @@ -135673,16 +136114,15 @@ sonsonate.cf, 1 sonsonate.tk, 1 sontaycamera.com, 0 sontheim.de, 1 -sonus.health, 1 sony-psvita.ru, 1 sonyazi.com, 1 soohealthy.nl, 1 soom.ga, 1 soom.tk, 1 soomee.be, 1 -soonmeme.com, 1 soopure.nl, 1 soopy.moe, 1 +soortenbank.nl, 1 sopelaotaez.tk, 1 sopenamobilhome.com, 1 sopenguin.com, 1 @@ -135691,6 +136131,7 @@ soph.tk, 1 soph.us, 1 sopheos.com, 0 sopher.io, 1 +sophia.com.br, 1 sophiafoundation.org, 1 sophiajaneboutique.com, 1 sophiakligys.com, 1 @@ -135715,6 +136156,7 @@ soposhandcheeky.com, 1 sopr.cz, 1 sopra.tk, 1 soprabalao.com.br, 1 +sopriza.com, 1 sopronforras.tk, 1 soprovise.fr, 1 sopsop.tk, 1 @@ -135737,23 +136179,21 @@ sorincocorada.ro, 1 sormatrus.ru, 1 sorn.service.gov.uk, 1 sornyaki.tk, 1 -soro.co.il, 1 sorotankata.com, 1 sorpresashop.nl, 1 sorrentofc.com.au, 1 sorrentoparking.com, 1 sorrowfulunfounded.com, 1 -sorsby.mx, 1 sortandpack.com, 0 sortaweird.net, 0 sorted.org.nz, 1 sorted.travel, 1 sorteiosdotom.com.br, 1 sortek.mk, 1 +sorting.ai, 1 sortiraparis.com, 1 sortirentrenous.com, 1 sortly.com, 1 -sortntrack.com, 1 sorubak.com, 1 soruly.com, 1 soruly.io, 1 @@ -135788,14 +136228,14 @@ soselectricienmontreal.com, 1 sosesh.shop, 1 sosessaimabeilles.com, 1 sosevents.nl, 1 +sosharch.com, 1 soshin.cf, 1 sosimple.academy, 1 sosisuka.ga, 1 -sosjsq.com, 1 sosko.in.rs, 1 +soslsd.org, 0 sosmicro.tk, 1 sosnovka.ga, 1 -sosns.com, 1 soso.ga, 1 soso.loan, 1 soso.stream, 1 @@ -135810,11 +136250,10 @@ sosregistration.eu, 1 sossinistres.ca, 1 sostacancun.com, 1 soste.fi, 0 -sosteric.si, 0 sosyalevin.com, 1 +sosyalitya.com, 1 sosysadmin.com, 1 sosz.org, 1 -sota-ink.com, 1 sota.sh, 1 sotadb.info, 1 sotaltamer.it, 1 @@ -135838,9 +136277,9 @@ sottilealimentos.com.br, 1 sottomarini.tk, 1 sotypicallydutch.nl, 1 soubriquet.org, 1 +soudebalsa.com.br, 1 souenfermagem.com.br, 1 souenfermagem.org.br, 1 -souenfermeira.com, 1 soufastnet.com.br, 1 souga.eu.org, 1 sougou.com, 1 @@ -135872,7 +136311,6 @@ soulyi.io, 1 soumen.tk, 1 soumikghosh.com, 1 soumissionalarme.ca, 1 -soumya.cloud, 1 soumya.xyz, 1 soumya92.me, 1 sounah.com, 1 @@ -135889,7 +136327,7 @@ soundbase.tk, 1 soundblast.tk, 1 soundcache.tk, 1 soundcamp.org, 1 -soundcharts.com, 1 +soundcharts.com, 0 soundclick.com, 1 soundcloud-to-mp3.com, 0 soundcloud.com, 1 @@ -135900,7 +136338,7 @@ soundeo.net, 1 soundersmusic.com, 1 soundersu23.com, 1 soundexclusive4ever.tk, 1 -soundfuntech.com, 1 +soundfingers.com, 1 soundgasm.net, 1 soundgo.gq, 1 soundinthesignals.tk, 1 @@ -135913,7 +136351,6 @@ soundmoney.page, 1 soundmoney.tech, 1 soundonmike.tk, 1 soundprofessionals.com, 1 -soundproofspaces.co.uk, 1 soundprotectionllc.com, 1 soundrecords.tk, 1 soundresource.tk, 1 @@ -135951,8 +136388,10 @@ sourcecredit.ng, 1 sourcegraph.com, 1 sourcehut.cn, 1 sourcehut.net, 1 +sourceproject.ru, 1 sources.tk, 1 sourcesdegarrigue.fr, 1 +sourceweb.com, 1 sourcing4exports.co.uk, 1 sourcitec.com, 1 souria.tk, 1 @@ -135965,7 +136404,6 @@ sousvideways.com, 1 southadamswaterco.gov, 1 southambouncycastle.co.uk, 1 southamptontownnypolice.gov, 1 -southbankpersonaltrainers.com, 1 southbankregister.com.au, 1 southbaycu.com, 1 southbaylatherapy.com, 1 @@ -135987,15 +136425,19 @@ southcentral.edu, 1 southcoastlocksmiths.com.au, 0 southdakotahealth.tk, 1 southdakotanet.tk, 1 +southeast-wholesale.com, 1 +southeastasianarchaeology.com, 1 southeastattacksquadron.org, 1 southeastwsf.org, 1 southelginumc.org, 1 southerncross.tk, 1 +southerncrosscables.com, 1 southernexportterminals.com.au, 1 southernfashiondecorbd.com, 1 southernfirst.com, 1 southernforge.com, 1 -southernislands.llc, 1 +southerngospelnow.com, 1 +southerngospelprizes.com, 1 southernlights.cf, 1 southernlights.club, 1 southernlights.gq, 1 @@ -136007,10 +136449,9 @@ southernsurgicalga.com, 1 southernvalve.com, 1 southfieldtownshipmi.gov, 1 southfloridaopenhousesearch.com, 1 -southforkresort.net, 1 -southforkresort.us, 1 southgatemi.gov, 1 southjacksonville-il.gov, 1 +southjerseyhomes.info, 1 southkingstownri.gov, 1 southlakenissanparts.com, 1 southlaketx.gov, 1 @@ -136018,7 +136459,6 @@ southlandcasino.com, 0 southmarengo.com, 1 southmarengoal.gov, 1 southmelbourne.apartments, 1 -southmelbournepersonaltrainers.com, 1 southmill.com, 1 southmilwaukee.gov, 1 southmorangtownhouses.com.au, 1 @@ -136026,9 +136466,7 @@ southogdencity.gov, 1 southpeacearchives.org, 1 southphoenixair.tk, 1 southportland.gov, 1 -southportpersonaltrainers.com, 1 southridgeservices.com, 1 -southrock.com, 1 southsands.com, 1 southshoreautowash.com, 1 southside-crew.com, 1 @@ -136037,6 +136475,7 @@ southside-tuning-day.de, 1 southsidebuildingcenter.com, 1 southsidepianostudio.com, 1 southsideplacetx.gov, 1 +southspring.com, 1 southstpaulmn.gov, 1 southwebsterohio.gov, 1 southwesternrugsdepot.com, 1 @@ -136053,23 +136492,29 @@ soutien-naissance.com, 1 souto.eu, 1 souvenir-fashion.com, 1 souvenirs-gifts.tk, 1 +souxiu.com, 1 souzanabellydance.com, 1 sova.cc, 1 sova.st, 1 sova.wiki, 1 -sovana.fr, 1 sovasage.com, 1 -sovelia.com, 1 sovendus-benefits.com, 1 sovendus-campaign.com, 1 sovendus-connect.com, 1 sovendus-network.com, 1 +sovendus.ch, 1 sovendus.com, 1 sovendus.de, 1 +sovendus.dk, 1 +sovendus.es, 1 +sovendus.fr, 1 +sovendus.it, 1 +sovendus.nl, 1 +sovendus.pl, 1 +sovendus.se, 1 sovereign.bounceme.net, 1 sovereigngroup.com, 1 -sovereignpcs.com, 0 -sovereigntyacademy.net, 1 +sovereignpcs.com, 1 soverin.net, 1 sovest.ml, 1 sovetiogorodniku.info, 1 @@ -136108,11 +136553,13 @@ soytranky.com, 1 soytusitio.com, 1 soyutwind.com, 1 soyuznik.ml, 1 +soyvigilante.com, 1 soyzvape.ru, 1 sozai-good.com, 1 sozai.tk, 1 sozawe-nw-fryslan.nl, 1 sozdanie-krana.ml, 1 +soze.in, 1 sozialabstand.de, 1 soziale.email, 1 sozialismus.tk, 1 @@ -136149,6 +136596,7 @@ space-station.tk, 1 space-time-elements.com, 1 space-y.cf, 1 space.com.pt, 1 +space.gov.ae, 1 spaceanimalnutrition.com, 1 spaceapi.io, 1 spacebabies.nl, 1 @@ -136156,7 +136604,6 @@ spacebartest.org, 1 spacebear.ee, 1 spacebestnews.tk, 1 spacebooster.pl, 1 -spacecarcelia.com, 1 spacecityweather.com, 1 spacecoastdumpsterrental.com, 1 spacedance.tk, 1 @@ -136169,6 +136616,7 @@ spacegamesindustry.com, 1 spacehey.com, 1 spacehighway.ms, 1 spacehighways.net, 1 +spaceholder.cc, 1 spacehonor.com, 1 spacehost.de, 1 spaceint.fr, 1 @@ -136200,7 +136648,6 @@ spacomic.com, 1 spaconnection.com, 1 spaconsulting.it, 1 spactostock.com, 1 -spadapele.ind.br, 1 spadehousemusic.com, 0 spadok.org.ua, 1 spaenny.tf, 1 @@ -136240,7 +136687,6 @@ spandaubau.de, 1 spandrusyszyn.com, 1 spanglishls.com, 1 spanien.guide, 1 -spaningseksperten.com, 1 spanischunterricht.tk, 1 spanishclub.blog, 1 spanishdogs.tk, 1 @@ -136266,6 +136712,7 @@ spar.hu, 1 spar.si, 1 sparanoid.com, 1 sparanoid.net, 1 +sparanoid.network, 1 sparanoidstatus.com, 1 sparatryggt.se, 1 sparco.com, 1 @@ -136303,11 +136750,10 @@ sparkplug.tk, 1 sparkpluguniversity.com, 1 sparkresearch.net, 1 sparkresto.com, 1 -sparkseo.com.br, 1 +sparksfoundation.net, 1 sparksga.gov, 1 sparkweld.biz, 1 sparmedo.de, 1 -sparneuwagen.de, 1 sparrius.com, 1 sparrowwallet.com, 1 sparta-en.org, 1 @@ -136316,12 +136762,12 @@ sparta-upice.tk, 1 sparta.ee, 1 spartacuslife.com, 1 spartaermelo.nl, 1 -spartakexchange.com, 1 spartamet.tk, 1 spartan300.tk, 1 spartan300charity.org, 1 spartanis.tk, 1 spartanrvchassis.com, 1 +spartinacreekbuilding.com, 1 sparumzuege.de, 1 sparvagn.tk, 1 sparx.dog, 1 @@ -136331,12 +136777,12 @@ spasem-park.tk, 1 spassamgeraet.top, 1 spasskellner-comedykellner.ch, 1 spatialnom.com, 1 -spatio.cn, 1 spatiugratis.tk, 1 spatter.cf, 1 spatter.tk, 1 spatzenwerkstatt.de, 1 spawn.cz, 1 +spaworldhouston.com, 1 spaziobenedetti.com.br, 1 spaziotennis.com, 1 spaziowrestling.it, 1 @@ -136345,14 +136791,13 @@ spazzacamino.roma.it, 1 spb-apple-helpgroup.com, 1 spb-clean.ru, 1 spb-electric.ru, 1 -spb-svarka.ru, 1 spbatelec.fr, 1 spbcodes.online, 1 spbelect.info, 1 spbelect.org, 1 spbet99.com, 1 -spbevso.com, 1 spbot.ml, 1 +spbtours.online, 1 spc-ag.ch, 1 spcconnect.com, 0 spcollege.edu, 1 @@ -136373,11 +136818,9 @@ speak.nl, 0 speak.software, 1 speakeasy.co, 1 speakermatch.com, 1 -speakersassociates.com, 1 speakersbusiness.com, 1 speakersden.tk, 1 speakertwpmi.gov, 1 -speakfrench.cn, 1 speaklanguages.com, 1 speakol.com, 1 spear.ga, 1 @@ -136397,7 +136840,7 @@ specialisedlightingandtorches.com.au, 1 specialist.srv.br, 1 specialistskin.com.sg, 1 specialized-hosting.eu, 1 -specialneedsadventurefamily.com, 1 +specialmomentvideo.com, 0 specialnoise.tk, 1 specialofficesupplies.tk, 1 specialphotos.ca, 1 @@ -136468,7 +136911,7 @@ speedliner.com, 1 speedmarket.pt, 1 speedof.me, 1 speedracer.ca, 1 -speedscan-eg.com, 1 +speedtailors.com, 1 speedtemplate.de, 1 speedvitals.com, 1 speedwaybring-proposal.cf, 1 @@ -136481,7 +136924,6 @@ speedynews.ml, 1 speedyplatypus.com, 1 speedyshopping.com.br, 1 speedzone.bg, 1 -speedzone.fi, 1 speelfabriek.tk, 1 speeli.com, 1 speeltjesvantruus.nl, 1 @@ -136503,12 +136945,13 @@ spencerfane.com, 1 spencernc.gov, 1 spencerpauly.com, 0 spend.cloud, 1 +spendable.money, 1 spendd.co, 1 spendebt.com, 1 spendedge.com, 1 spendelonmusk.money, 1 spenderservice.net, 1 -spendesk.com, 0 +spendesk.com, 1 spendlinq.com, 1 spendmatters.com, 1 spendo.gq, 1 @@ -136528,12 +136971,11 @@ spetsnazsecurityinternational.co.uk, 1 spettacolocame.ga, 1 speventos.es, 1 speww.com, 1 -speybooks.com, 1 speycaster.net, 1 speztech.ru, 1 -spf.gov.sg, 1 spheraes-amc.it, 1 spheraes-bme.it, 1 +spheraes.com, 1 sphereblur.com, 1 spherefluidics.com, 1 spherejoias.com.br, 1 @@ -136549,10 +136991,11 @@ spiceislandhome.com, 1 spicejungle.com, 1 spicelandcorporation.com, 1 spicemail.cc, 1 -spicemoney.com, 0 +spicemoney.com, 1 spiceolife.ie, 1 spicerack.co.uk, 0 spicerack.uk, 1 +spicestore.hk, 1 spicevids.com, 1 spicevidsgay.com, 1 spichki.tk, 1 @@ -136578,7 +137021,6 @@ spidertechpromotions.com, 1 spiderworking.com, 1 spidometr.ml, 1 spie-wirliebenkabel.de, 1 -spiegel-deutschland.de, 1 spiegelglass-gc.com, 1 spiegelingenblog.nl, 1 spiegels-op-maat.nl, 1 @@ -136594,9 +137036,7 @@ spiellawine.de, 1 spieltexte.de, 1 spieringsdakbedekking.nl, 1 spiet.nl, 1 -spiff.ie, 1 spiga.ch, 0 -spiielherz.li, 1 spikar.gr, 1 spike.sh, 1 spikejeon.tk, 1 @@ -136639,14 +137079,15 @@ spirent.com, 1 spirerecoverysolutions.com, 1 spirio.cz, 1 spirion.com, 1 -spirit-hunters-germany.de, 1 +spirit-hunters-germany.de, 0 spirit-url.com, 1 spirit55555.dk, 1 spiritbionic.ro, 1 spiritdesigns.tk, 1 spiritedengineers.tk, 1 +spiritgruppen.no, 1 +spirithouse.com, 1 spiritindia.com, 1 -spiritlakehealthcenter.com, 1 spiritous.cf, 1 spiritscorp.ddns.net, 1 spiritslovenia.si, 1 @@ -136659,17 +137100,18 @@ spiski-domenov.tk, 1 spisochek.tk, 1 spisok-domenov.tk, 1 spit.com.au, 1 +spitalbuhusi.ro, 1 spitfiredialers.com, 0 spithoven.tk, 1 spjaet.dk, 1 spk-gruppe.de, 1 -spkar.eu, 1 splashily.gq, 1 splat00n.ink, 1 splatnet3.net, 1 splawoffice.com, 1 splconsulenza.it, 1 spleis.no, 1 +splendadent.it, 1 splendidaccounts.pk, 1 splendorservizi.it, 1 spletna.net, 1 @@ -136691,6 +137133,7 @@ sploch.com, 1 sploitus.com, 1 splorge.cloud, 0 splorge.website, 1 +splosh.nl, 1 splotchify.com, 1 splytech.io, 1 spm-servis.tk, 1 @@ -136703,6 +137146,7 @@ spnsv.com, 1 spocasi.cz, 1 spocool.com, 1 spodelime.com, 1 +spoelbakzaak.nl, 1 spofia.nu, 1 spokane.gov, 1 spokanecounty.gov, 1 @@ -136727,9 +137171,11 @@ spookyinternet.com, 1 spookysrv.com, 1 spoonkeyworks.com, 1 spoorcam.nl, 1 +spoorts.io, 1 spordiinfo.ee, 1 sporenvanslavernijutrecht.nl, 1 sporeprinters.com, 1 +sporicidluhopisycr.cz, 1 sporki.fun, 1 sport-ainsights.com, 1 sport-attitude.com, 1 @@ -136817,20 +137263,18 @@ sportsdeck.tk, 1 sportsdestinations.com, 1 sportsenvivotv.com, 1 sportservice.bz, 1 -sportshake.com, 1 sportskibat.tk, 1 sportsmagy.com, 1 sportsmania.tk, 1 sportsmansblog.com, 1 sportsmashup.com, 1 sportsnacklove.com, 1 +sportspainmanagementnyc.com, 1 sportspassbremen.de, 1 sportspeople.com.au, 1 -sportssurfaces.com.au, 0 +sportssurfaces.com.au, 1 sportstips.tk, 1 -sportstraveler.net, 1 sportstreetstyle.com, 1 -sportsupports-hertogenbosch.nl, 1 sportsxplay.com, 1 sportsyou.com, 1 sporttomorrow.com, 1 @@ -136840,10 +137284,11 @@ sportucation.com, 1 sportucation.de, 1 sportverein-abtshagen.de, 1 sportvereine.online, 1 -sportverse.co.uk, 1 sportverzorging.tk, 1 sportvision.ml, 1 sportvissenfun.tk, 1 +sportvltava.cz, 1 +sportwars.net, 1 sportwettenbonus.de, 1 sportwettenschweiz.net, 1 sportygirlsjewels.ga, 1 @@ -136851,7 +137296,6 @@ sportztalk.com, 1 spot-cleaner.tk, 1 spot-pro.jp, 1 spotblue.com, 1 -spotguard.de, 0 spotifycodes.com, 1 spotifyfreetrial.co.uk, 1 spotifytop.me, 1 @@ -136897,7 +137341,6 @@ sprawdzanie-pozycji.pl, 1 sprawnymarketing.pl, 1 sprayontv.com, 0 spraypolyurethane.org, 1 -spreadfinds.com, 1 spreadgreatideas.com, 1 spreadgreatideas.org, 1 spreadsheets.google.com, 1 @@ -136947,7 +137390,9 @@ springfieldsd.gov, 1 springfieldvt.gov, 1 springgrillhouse.com, 1 springgrovepa.gov, 1 +springharveststore.com, 1 springhillmaine.com, 1 +springhow.com, 1 springinklee.com, 1 springlakemi.gov, 1 springlanguages.com, 1 @@ -136956,7 +137401,7 @@ springportny.gov, 1 springsoffthegrid.com, 1 springspeedshop.com, 1 springtxcarpetcleaning.com, 1 -springwellclinic.co.uk, 0 +springwellclinic.co.uk, 1 sprintgrad.com, 1 sprintkitchen.com, 1 sprintlee.com, 1 @@ -136989,8 +137434,6 @@ sprueche-zur-konfirmation.de, 1 sprutech.de, 1 sps-lehrgang.de, 1 spscommerce.com, 1 -spseiostrava.cz, 1 -spserver.work, 1 spstaticfiles.com, 1 spstechnical.com, 1 spt.tf, 1 @@ -137003,7 +137446,9 @@ spufpowered.com, 1 spur.com.br, 1 spurghi.roma.it, 1 spurstark.de, 1 +sputnik1net.org, 1 sputnikvaccine.com, 1 +spweb.cz, 1 spx.com, 1 spy-net.tk, 1 spychala-it.de, 1 @@ -137055,7 +137500,6 @@ sqrl.ch, 1 sqroot.eu, 1 sqsd.xyz, 1 sqtelcrm.ua, 1 -sqtele.com, 1 squad.fr, 1 squadco.com, 1 squadcoders.com, 1 @@ -137071,7 +137515,6 @@ square.it, 1 square.ly, 1 square.mx, 1 square.site, 1 -square1.de, 1 squarecdn.com, 1 squaredancedance.tk, 1 squaredaway.co.nz, 1 @@ -137083,6 +137526,7 @@ squaregaming.org, 1 squaregift.com, 1 squaregift.net, 1 squaregift.org, 1 +squareinchhome.com, 1 squareincircle.me, 1 squareinstallments.com, 1 squareinvite.com, 1 @@ -137101,6 +137545,7 @@ squareup.com, 1 squareupsandbox.com, 1 squatch.tube, 1 squeakie.club, 1 +squeaksscalesandtails.com, 1 squeaky.services, 1 squealing-filth.tk, 1 squeezemetrics.com, 1 @@ -137119,8 +137564,11 @@ squirted.com, 1 squirtingpussygirl.com, 1 squirtqueen.org, 1 sqxb0.ga, 1 +sqzryang.com, 0 +sr-33.com, 1 sr-f.tk, 1 sr.ht, 1 +sr33.com, 1 sr3cybersecurity.com, 1 sr88.co.uk, 1 sr88.me.uk, 1 @@ -137145,22 +137593,19 @@ srdmarketingservice.com, 1 sreality.cz, 1 sreb.loan, 1 srebro.cc, 1 -sree.build, 1 sreedhareeyam.tk, 1 sreeharis.tk, 1 sreemetaliks.com, 1 sreenadh.in, 1 sremodelingnyc.com, 1 -srequest.ru, 1 -srequest.tech, 1 sreventplanning.com, 1 srfloki.com, 1 srgry.link, 1 srhdesign.co.uk, 1 -sriamruthadevelopers.in, 1 srife.net, 1 srigc.com, 1 srilankan-hope-for-children.nl, 1 +srilankanguides.com, 1 srinisprojects.online, 1 srinona.com.my, 1 sriramdigital.tk, 1 @@ -137183,13 +137628,11 @@ sritsafety.ml, 1 sritspanish.tk, 1 srittheatre.tk, 1 sritvermont.tk, 1 -srivarada.co.uk, 1 srix.ml, 1 srkarra.com, 1 srkb.net, 1 srlconsult.ro, 1 srle.tk, 1 -srmdn.com, 1 srmi.biz, 1 srmllc.net, 1 srmstatic.com, 1 @@ -137233,7 +137676,6 @@ ss-news.tk, 1 ss.com, 1 ss.je, 1 ss.lazio.it, 1 -ss.ls, 1 ss.lt, 1 ss.lv, 1 ss.to, 1 @@ -137254,6 +137696,7 @@ ssab.gov, 1 ssatpa.com, 1 ssatripura.com, 1 ssb.ee, 1 +ssbljk.com, 1 ssbrm.ch, 1 ssbwanamingo.com, 1 ssbwiki.com, 1 @@ -137261,20 +137704,17 @@ sscd.no, 1 sscnapoli.it, 1 ssconn.com, 1 sscourtreporters.com, 1 +sscsignatureresizer.com, 1 ssdax.com, 0 ssddff.com, 1 ssdpalermo.it, 1 -ssdtool.com, 1 ssenberg.nl, 1 ssense.co.jp, 0 -sservice.cz, 1 ssetechnologies.com, 1 ssf.no, 0 ssfca.gov, 1 -ssflocator.com, 1 ssh-keys.online, 1 ssh-vault.com, 1 -ssh.ac, 1 sshbox.tk, 1 sshd.site, 1 sshool.at, 1 @@ -137295,12 +137735,13 @@ ssl247.com.mx, 1 ssl247.de, 1 ssl247.dk, 1 ssl4all.gq, 1 -sslboard.com, 1 sslc.gov, 1 sslcertificaten.nl, 1 sslcheck.nl, 1 +sslcheckerpro.com, 1 sslcloud.net, 1 ssld.at, 1 +ssldecoder.eu, 1 ssldev.net, 1 sslgctx.gov, 1 sslhello.com, 1 @@ -137338,6 +137779,7 @@ ssrgov.cn, 1 ssrvpn.tech, 1 sss.red, 1 ssslelectricfencing.co.za, 1 +ssslgaragedoors.co.za, 1 sssppp.gq, 1 sssss.click, 1 ssstructures.net, 1 @@ -137345,18 +137787,17 @@ sst-racing.ch, 1 sst.ru, 1 sstaging.com, 1 sstarnation.com, 1 +ssu.edu.ph, 1 ssuiteoffice.com, 1 ssuitesoft.com, 1 st-annen-museum.de, 1 st-benno.de, 1 -st-club.de, 1 st-damase.qc.ca, 1 st-kilian-markt-erlbach.de, 1 st-li.com, 0 st-mickalos.com, 1 st-news.de, 1 st-nicolaus.sk, 1 -st-shakyo.jp, 1 st-steuern.de, 1 st3tailor.com.br, 1 st42.fr, 1 @@ -137383,19 +137824,14 @@ stablina.tk, 1 stacabinetdepot.com, 1 staceygillinphotography.com, 1 stacisezeptat.cz, 1 -stackanchor.net, 1 stacker.news, 1 stackery.io, 1 stackhub.cc, 1 stacklasvegas.com, 1 -stackpay.li, 1 -stackplanner.io, 1 -stackradar.com, 1 stackroute.com, 1 stackroute.in, 1 stackstartup.com, 1 stacktobuy.com, 1 -stackusercontent.li, 1 stacommunications.com, 1 stacykeifer.com, 1 stacylight.com, 1 @@ -137408,7 +137844,6 @@ stadionwelt-business.de, 1 stadionwelt.de, 1 stadlwirt.at, 1 stadm.com, 1 -stadsarchief.nl, 1 stadt-frechen.de, 1 stadtbauwerk.at, 0 stadtcentrum.it, 1 @@ -137421,11 +137856,56 @@ stadtteilhaus-gaisental.de, 1 stadtwerke-sw.de, 1 staer.ro, 1 staff.direct, 1 +staffaugmentation.ae, 1 +staffaugmentation.al, 1 +staffaugmentation.at, 1 +staffaugmentation.ba, 1 +staffaugmentation.be, 1 +staffaugmentation.bg, 1 +staffaugmentation.ch, 1 +staffaugmentation.co.il, 1 +staffaugmentation.co.uk, 1 +staffaugmentation.com.ar, 1 +staffaugmentation.com.ua, 1 +staffaugmentation.cz, 1 +staffaugmentation.de, 1 +staffaugmentation.dk, 1 +staffaugmentation.ee, 1 +staffaugmentation.es, 1 +staffaugmentation.eu, 1 +staffaugmentation.fi, 1 +staffaugmentation.fr, 1 +staffaugmentation.ge, 1 +staffaugmentation.gr, 1 +staffaugmentation.hr, 1 +staffaugmentation.hu, 1 +staffaugmentation.it, 1 +staffaugmentation.jp, 1 +staffaugmentation.li, 1 +staffaugmentation.lt, 1 +staffaugmentation.lu, 1 +staffaugmentation.lv, 1 +staffaugmentation.md, 1 +staffaugmentation.me, 1 +staffaugmentation.mk, 1 +staffaugmentation.mx, 1 +staffaugmentation.nl, 1 +staffaugmentation.no, 1 +staffaugmentation.pe, 1 +staffaugmentation.ph, 1 +staffaugmentation.pl, 1 +staffaugmentation.pt, 1 +staffaugmentation.ro, 1 +staffaugmentation.rs, 1 +staffaugmentation.si, 1 +staffaugmentation.us, 1 staffaugmentation.vn, 1 staffi.tk, 1 staffingnation.com, 1 staffinmotion.com, 1 staffordpk.tk, 1 +staffsante.fr, 1 +staffsocial.fr, 1 stag.lol, 1 stage-bluejeans.com, 1 stage-marine-fullcost.azurewebsites.net, 1 @@ -137433,11 +137913,14 @@ stage-metrobible.org, 1 stage-privacyportal-ui.azurewebsites.net, 1 stage-props-blank-guns.com, 1 stage.wepay.com, 1 +stage4.ch, 1 stageandtraining.com, 1 +stagebtp.com, 1 stageirites.com, 1 stageirites.fr, 1 stageirites.org, 1 stagemaster.cz, 1 +stagend.com, 1 stagewalker.no, 1 staging-amag.com, 1 staging-scholar.tk, 1 @@ -137460,12 +137943,11 @@ stainhaufen.de, 1 stainless-steel-cookware.tk, 1 stainlessgames.com, 1 stainternational.com, 1 +stair.ch, 1 stairlin.com, 0 -stairmaster.fr, 1 stairmaster.tk, 1 stairnosingfirst.co.uk, 1 stajka.tk, 1 -stake-tr.com, 1 stakecalc.com, 1 staked.us, 1 stakedate.com, 0 @@ -137517,8 +137999,10 @@ stampsbar.co.uk, 1 stamurai.com, 1 stan.store, 1 stanandjerre.org, 1 +stanard.com, 1 stanbeukers.com, 1 stancer.com, 1 +stanchierifamilylaw.com, 1 stancoe.org, 0 stancounty.gov, 1 stand.earth, 1 @@ -137532,7 +138016,7 @@ standard-wohnungsbaukredit.eu, 1 standard-wohnungsbaukredit.info, 1 standard-wohnungsbaukredit.net, 1 standard-wohnungsbaukredit.org, 1 -standard.co.me, 1 +standardizarea.ro, 1 standardlifters.com, 1 standardmetrics.io, 1 standardnotes.com, 1 @@ -137549,14 +138033,17 @@ standardwohnungsbaukredit.eu, 1 standardwohnungsbaukredit.info, 1 standardwohnungsbaukredit.net, 1 standardwohnungsbaukredit.org, 1 +standford.pe, 1 standfore.com, 1 standheizung-shop.de, 1 standiluminaciones.com, 1 standingbear.tk, 1 standoff-magic.ru, 1 standoffarena.com, 1 +standoffdrop.ru, 1 standrewsbookshop.co.uk, 1 standsearch.cf, 1 +standup2cancer.ca, 1 standup2cancer.org, 1 standupcomedy.cf, 1 standupcomedy.ga, 1 @@ -137569,7 +138056,6 @@ stankingma.com, 1 stankingma.nl, 1 stanleyblackanddecker.com, 1 stanleychuahphotography.com, 1 -stanleyharrold.com, 1 stanleytools.ca, 1 stanleytools.com, 1 stanmed24.pl, 1 @@ -137612,6 +138098,7 @@ starcitywv.gov, 1 starcoachservices.ca, 1 starcomproj.com, 1 starcraftsource.tk, 1 +starcroisieres.com, 1 starcubix.com, 1 starcys.xyz, 1 stardanceacademy.net, 1 @@ -137621,6 +138108,7 @@ stardomino.tk, 1 stardrive.cf, 1 starease.com, 0 starease.net, 1 +starengineeringinc.com, 1 starexponent.com, 1 starfall.systems, 1 starfeeling.net, 1 @@ -137628,8 +138116,10 @@ starfield.ai, 1 starfireorders.com, 1 starfm.gq, 1 starfm.ml, 1 +starfriend.ru, 1 stargarder-jungs.de, 1 stargate.gq, 1 +stargate.how, 1 stargazer.de, 1 stargift.ch, 1 starglancer.ddns.net, 1 @@ -137643,11 +138133,11 @@ staring.tk, 1 staringer.net, 1 starinup.com, 1 starinvestama.co.id, 1 +starinvestingship.com, 0 starka.st, 1 starken.com, 1 starking.net.cn, 1 starking.tk, 1 -starkinsider.com, 1 starknh.gov, 1 starkparks.gov, 1 starkstromkonsument.de, 1 @@ -137691,12 +138181,12 @@ starsessions.cc, 1 starsevengames.com, 1 starsguru.com, 1 starship.xyz, 1 -starshiparena.com, 1 starsing.bid, 1 starskim.cn, 1 starsoft.io, 1 starspie.com, 1 starsplay.com, 1 +start-dropshipping.com, 1 start-knighki.gq, 1 start-nadlan.co.il, 1 start-school.by, 1 @@ -137729,14 +138219,13 @@ startlinks.tk, 1 startmail.com, 1 startner.com, 1 startnowcornwall.org.uk, 1 +startpage.com, 1 startpage.info, 1 startpage4u.tk, 1 startplats.tk, 1 startplaying.games, 1 startpoint.tk, 1 -startrackevecorp.org, 1 starts.sh, 1 -startup-house.com, 1 startup-stack.com, 1 startup-stack.tech, 1 startupbros.com, 1 @@ -137745,6 +138234,7 @@ startupgov.lt, 1 startuphakksecurity.com, 1 startupislandtaiwan.com, 1 startupislandtaiwan.net, 1 +startupislandtaiwan.org, 1 startupmadeira.eu, 1 startupmoldova.digital, 1 startupnewstamil.com, 1 @@ -137766,7 +138256,6 @@ startwithpieter.com, 1 starvizyon.com, 1 starwarschronology.com, 1 starwarshunters.com, 1 -starwarsmilk.com, 1 starwatches.eu, 1 starworksglobal.com, 1 starx.ink, 1 @@ -137808,7 +138297,6 @@ stateserv.com, 1 statesville.com, 1 statewideoutdoorblinds.com, 1 statfluence.com, 1 -stathamquotes.ru, 1 static-assets.io, 1 static-myfxee-808795.c.cdn77.org, 1 static-myfxoau-808795.c.cdn77.org, 1 @@ -137821,6 +138309,7 @@ staticline.de, 0 staticweb.tk, 1 statik.space, 1 stationa.ch, 0 +stationary-traveller.eu, 1 stationaryengines.tk, 1 stationcharlie.co.za, 1 stationhousecattery.com, 1 @@ -137828,7 +138317,6 @@ stationmedia.tk, 1 stationnement-angouleme.com, 1 stationnement-stdizier.fr, 1 stationnement-villeurbanne.fr, 1 -statisbet.com, 1 statista.com, 1 statistik-online.org, 1 statistik-seminare.de, 1 @@ -137837,13 +138325,13 @@ statnivlajky.cz, 1 stats-co.eu, 1 stats-mailtracker.com, 1 stats.g.doubleclick.net, 1 +statscrew.com, 1 statsit.ga, 1 statsme-app.com, 1 statsndata.org, 1 statsnet.co, 1 statspolicy.gov, 1 statsrun.com, 1 -stattram.fr, 1 statueofliberty.org, 1 status.events, 1 status.law, 1 @@ -137870,6 +138358,7 @@ staxflax.tk, 1 stay-curious.at, 1 stay.at, 1 stay4all.nl, 1 +stayby.me, 1 staycurrent.eu, 1 staycurrent.nl, 1 staydryohio.com, 1 @@ -137884,16 +138373,15 @@ staysimple.nl, 1 staywelladjusted.com, 1 stazi.tk, 1 stb-buegel.de, 1 -stb-schefczyk.ch, 1 stb-schefczyk.com, 1 stb-schefczyk.de, 1 stb-schefczyk.info, 1 stb-schefczyk.net, 1 -stb-strangmueller.de, 1 stb-timmler.de, 1 stb.gov, 1 stbarnabashealthsystem.com, 1 stbartholomewmanchester.org, 1 +stbcg.com, 1 stbernardnk.org, 1 stbk.link, 1 stbl.org, 1 @@ -137912,7 +138400,6 @@ stclairvet.co.uk, 1 stclementmatawan.org, 1 stclementreligioused.org, 1 stcloudfl.gov, 1 -stclub.de, 1 stcomcybersecurity.net, 1 stconleths.ie, 1 stcplasticsurgery.com, 1 @@ -137927,22 +138414,19 @@ stdev.top, 1 stdnet.ru, 1 stdssr.com, 1 ste2.de, 1 -stea-web.com, 1 steacy.tech, 1 steadfastcontent.com, 1 -steadytao.com, 1 steak-kojiro.com, 1 steakovercooked.com, 1 stealingheather.com, 1 stealsaga.net, 1 -stealth.design, 0 +stealth.design, 1 stealth.net, 1 stealthbinders.tk, 1 stealthmodel.fi, 1 stealthseminar.com, 1 steam-rewards.tk, 1 steam-route-saxony.com, 1 -steamanalyst.com, 1 steamcarddelivery.com, 1 steamcardexchange.net, 1 steamcars.be, 1 @@ -137952,6 +138436,7 @@ steamcrack.ga, 1 steamdb.info, 1 steamdeckinfo.org, 1 steamerrors.com, 1 +steamgifts.com, 1 steamid.net, 1 steamirontested.com, 1 steamkeyget.ga, 1 @@ -137962,6 +138447,7 @@ steampress.io, 1 steamscore.info, 1 steamsprays.tk, 1 steamstat.us, 1 +steamtrades.com, 1 steamwhirl.com, 1 steannes.com, 1 stebenkov.tk, 1 @@ -137986,10 +138472,11 @@ steelfirm.ga, 1 steelframejourney.com, 0 steelmounta.in, 1 steelnavi.jp, 1 -steeloncall.com, 1 steelpoint.com.pl, 1 steelsheds.biz, 1 +steelshop.net, 1 steelsoldiers.com, 1 +steelstructuresltd.com, 1 steelvortex.tk, 1 steelzone.tk, 1 steemit.com, 1 @@ -138014,7 +138501,6 @@ stefan.network, 1 stefanbayer.de, 1 stefandesign.tk, 1 stefanfriedli.ch, 1 -stefangroenveld.de, 1 stefangroothuis.tk, 1 stefania.tk, 1 stefaniedworschak.de, 1 @@ -138024,7 +138510,7 @@ stefanini.com, 1 stefanknobel.ch, 1 stefano-wesel.de, 1 stefanochiolo.de, 1 -stefanoiavarone.com, 0 +stefanoiavarone.com, 1 stefanolsdal.tk, 1 stefanrusie.ro, 1 stefanvd.net, 1 @@ -138040,6 +138526,8 @@ steggemachine.com, 1 stehlik.co.uk, 1 stehlik.sk, 1 steigerlegal.ch, 1 +steilundfrech.agency, 1 +steinbach.ai, 1 steinbrich.eu, 1 steiner-dominik.at, 1 steiner.do, 1 @@ -138059,7 +138547,6 @@ stek-usa-shop.com, 1 stek-usa.com, 1 stekelenburg.me, 1 steklein.de, 1 -stelcomp.com, 1 stelcron.com, 1 steldingreporters.com, 1 steleentechnischevraag.com, 1 @@ -138097,7 +138584,7 @@ stem16plus.gent, 1 stematechnologies.ga, 1 stembureau-nissewaard.nl, 1 stembureauledenindenhaag.nl, 1 -stembureaunijmegen.nl, 0 +stembureaunijmegen.nl, 1 stemcellclinic.design, 1 stemcellclinic.live, 1 stemcellclinic.ltd, 1 @@ -138112,6 +138599,7 @@ stemderbomen.tk, 1 stemgirls.co.za, 1 stemklank.tk, 1 stemlabadvanced.pt, 1 +stemmayhem.com, 1 stemoplinks.nl, 1 stempelfarben.de, 1 stemps.pl, 1 @@ -138119,11 +138607,11 @@ stena.cf, 1 stenaro.ch, 1 stencilsaustralia.com.au, 0 stendenlegal.nl, 1 +stenhojmedia.dk, 1 stening.co, 1 steno.nl, 1 stenographers.online, 1 stenstromen.se, 1 -stentijhuis.nl, 1 stentzel.de, 1 stenvallmcclain.tk, 1 stenzhorn-cloud.de, 1 @@ -138134,7 +138622,6 @@ stepanvanek.cz, 1 stepanyansurgical.com, 1 steparovi.cz, 1 stepbrobd.com, 1 -stepgf.com, 1 steph.ninja, 1 steph3n.me, 1 stephan-matthiesen.de, 1 @@ -138151,9 +138638,9 @@ stephanielacroix.nl, 1 stephanielantry.com, 1 stephanieleonidasfan.tk, 1 stephanieschreiber.com, 1 -stephanisutherland.com, 1 stephanoptiek.nl, 1 stephen-oliver-art.co.uk, 1 +stephenalansalon.com, 1 stephenbakalian.com, 1 stephencashman.com, 0 stephencorp.com, 1 @@ -138182,7 +138669,6 @@ steponedanceclub.uk, 1 steppesisters.org, 1 steppicrew.de, 1 steppingoutinstyleonline.com, 1 -steppingstonessb.com, 1 steppinout.tk, 1 stepplanning.com, 1 steppowerplant.com, 1 @@ -138201,7 +138687,6 @@ stereoamistadmomos.ml, 1 stereob.it, 1 stereochro.me, 0 stereoembersmagazine.com, 1 -stereologic.com, 1 stereostudio.cf, 1 stereotyped.de, 1 sterilium.tk, 1 @@ -138213,7 +138698,6 @@ sterlingcomputers.com, 1 sterlingcustomsheetmetal.com, 0 sterlingheights.gov, 1 sterlinginsurance.com.au, 0 -sterlingpestcontrol.com, 1 sterlingpropertiesmi.com, 1 sterlinx.de, 1 stern-freunde.de, 1 @@ -138232,6 +138716,8 @@ steroids.ga, 1 steroidswiki.com, 1 sterr.in, 1 sterretranen.tk, 1 +stersoftware.com, 1 +stersoftware.nl, 1 sterva.mobi, 0 sterydki.pl, 1 sterz.io, 1 @@ -138239,6 +138725,7 @@ stestena.eu, 1 stesti.cz, 1 stetson.edu, 1 stetsonrealestate.com, 1 +stetten-akm.de, 1 steuer-voss.de, 1 steuerberater-bayreuth.com, 1 steuerberater-essen-steele.com, 1 @@ -138315,7 +138802,9 @@ stewartsglenapts.com, 1 stewpolley.com, 1 stfd-oh.gov, 1 stfox.com, 1 +stfrancisnaugatuck.org, 1 stg-0-con.com, 1 +stg-investing.ru, 1 stg-logistic.com, 1 stg-tideplatform.uk, 1 stgabrielstowepa.org, 1 @@ -138366,7 +138855,10 @@ sticky.to, 1 stickydot.eu, 1 stickypassword.com, 1 stickypigbbq.com, 1 +stickywilds.com, 1 stidmobile-id.com, 1 +stiebel.co.nz, 1 +stiebel.com.au, 1 stiebelrewards.com.au, 1 stiebelservice.com.au, 1 stiehler-leipzig.tk, 1 @@ -138375,7 +138867,7 @@ stierheating.com, 1 stifflersmom.ga, 1 stift-kremsmuenster.at, 1 stift-kremsmuenster.net, 1 -stiftung-klima.de, 0 +stiftung-klima.de, 1 stiftung-lq.ch, 1 stiftung-lq.com, 1 stiftung-lq.net, 1 @@ -138422,6 +138914,7 @@ stinkefingereinhorn.de, 1 stinkintechnology.com, 1 stinkmemes.com, 1 stinter.cf, 1 +stintup.com, 0 stiphosting.nl, 1 stipic-webit.de, 1 stirblaut.de, 1 @@ -138440,6 +138933,8 @@ stjohncamden.com, 1 stjohnin.com, 0 stjohnin.gov, 1 stjohnks.gov, 1 +stjohnnepomucene.com, 1 +stjohnofgodannualreport.nz, 1 stjohnpa.org, 1 stjohnsc.com, 1 stjohnskids.com, 1 @@ -138447,7 +138942,6 @@ stjohnsmi.gov, 1 stjohnsottsville.org, 1 stjoseph-stcatherine.org, 1 stjosephclaremont.org, 1 -stjosephdemarest.org, 1 stjosephmo.gov, 1 stjosephri.org, 1 stjosephspringcity.com, 1 @@ -138455,8 +138949,10 @@ stjosephtownship.com, 1 stjscatholicchurch.org, 1 stjude-ettekkar.tk, 1 stjustin.org, 1 +stkeverneparishcouncil.org.uk, 1 stkevin-stbenedict.org, 1 stkildaosteopathy.com.au, 1 +stla.net, 0 stlautoenhancements.com, 1 stlawco.gov, 1 stleismann.de, 1 @@ -138493,7 +138989,7 @@ stmarysgloucestercity.org, 1 stmaryskutztown.com, 1 stmarysmdsao.gov, 1 stmarysprestwich.org, 0 -stmarystfd.org, 0 +stmarystfd.org, 1 stmaryswv.gov, 1 stmatthewri.org, 1 stmattsparish.com, 1 @@ -138516,7 +139012,7 @@ stocar.kh.ua, 1 stock-analysis-on.net, 1 stockageprive.net, 1 stockanalysis.com, 1 -stockbrain.co.jp, 0 +stockbrain.co.jp, 1 stockbridge-ma.gov, 1 stockbridgevt.gov, 1 stockfree.download, 1 @@ -138527,12 +139023,10 @@ stockholmpride.org, 1 stockilluminati.com, 1 stockmarkettoday.news, 1 stockmeta.jp, 1 -stockntech.net, 1 stockpile.com, 1 stockportny.gov, 1 stockportspiritualistchurch.co.uk, 1 stockpricetrends.com, 1 -stockpulse247.com, 1 stocks-adviser.com, 1 stockslam.ga, 1 stocksnews.tk, 1 @@ -138545,7 +139039,6 @@ stocktonengineering.co.uk, 1 stocktout.info, 1 stocktrader.com, 1 stocktradersalmanac.com, 1 -stockus.net, 1 stockway.tk, 1 stockx.com, 1 stockx.io, 1 @@ -138561,14 +139054,11 @@ stoffkontor-wennigsen.de, 1 stohrm.com, 1 stoianlawfirm.com, 1 stoicadarius.com, 1 -stoicadarius.de, 1 -stoicadarius.ro, 1 stoicatedy.ovh, 1 stoicnotaries.com, 1 stoicus.com.br, 1 stoinov.com, 1 stoiximatikesetairies.tv, 1 -stoiximaweb.gr, 1 stokl.com.au, 0 stokrotkadelikatesy.pl, 1 stolarka.tk, 1 @@ -138578,6 +139068,7 @@ stolensun.tk, 1 stolin.info, 1 stolina.de, 1 stolit.bg, 1 +stolkpotplanten.nl, 1 stoll.info, 1 stollen-wurm.de, 1 stollenwurm.de, 1 @@ -138596,6 +139087,7 @@ stomatolog.ga, 1 stomatologia-narkoza.pl, 1 stomatologiya.gq, 1 stomatologiya.ml, 1 +stompai.com, 1 stomproced.ro, 1 stomt.com, 1 stone-guru.co.uk, 1 @@ -138603,15 +139095,15 @@ stone-mail.org, 1 stone-support.de, 1 stoneandtile.design, 1 stonebriarpropertyinspections.com, 1 -stonebridge-systems.org, 1 stonechat.de, 1 +stonecore.co, 0 stonecountyar.gov, 1 stonecutgods.com, 1 -stonedepot.com.au, 1 stonedwarf5.net, 1 stonedworms.de, 0 stoneedgeconcrete.com, 1 stonefusion.org.uk, 1 +stonegatewealth.com, 0 stonegray.ca, 1 stonehammerhead.org, 1 stonehengelabs.io, 1 @@ -138628,7 +139120,7 @@ stoneworld.ga, 1 stonexbullion.com, 1 stoneydsp.com, 1 stoningtonboroughct.gov, 1 -stonkslab.com, 0 +stonkslab.com, 1 stonnaltd.com, 1 stonnastructures.co.uk, 1 stonsil.com, 1 @@ -138672,13 +139164,11 @@ stoplossoff.tk, 1 stopmetbellen.be, 1 stopmoustic.fr, 0 stopmozgas.org, 1 -stopndrop.de, 1 stopoverconnections.com, 1 stoppage.cf, 1 stopransomware.gov, 1 stoprat.fr, 1 stopsafeguardingnow.org.uk, 1 -stopscams.com, 1 stopshopnyeremeny.hu, 1 stopsmoke.gq, 1 stopssherdenking.tk, 1 @@ -138686,16 +139176,21 @@ stopsvet.ml, 1 stopthemoss.com, 1 stoptheperio.com, 1 stopthethyroidmadness.com, 1 +stopthinkconnect.jp, 1 stopves.tk, 1 stor-guard.com, 1 +storables.com, 1 storage-base.de, 1 storage-books.gq, 1 storageideas.uk, 1 storageioblog.com, 1 storagenewsletter.com, 1 +storageshedsnc.com, 1 +storagex.co.uk, 1 storck.com, 1 stordbatlag.no, 1 store-en-stock.com, 1 +store10.de, 0 store71.it, 1 storeandforward.email, 1 storeandforward.eu, 1 @@ -138721,9 +139216,10 @@ storepaperoomates.net, 1 storephotovoltaique.com, 1 storeplus.ml, 1 storesonline.fr, 1 -storestdigital.com, 1 +storewebshop.com, 1 storex.storage, 1 storgaarddieu.com, 1 +stori.press, 1 storiadellarte.com, 1 storiadirectory.tk, 1 storiagraph.com, 1 @@ -138742,10 +139238,10 @@ storjar.com, 1 storkurinn.is, 1 storm-news.tk, 1 stormairsoft.tk, 1 +storman.com, 1 stormboost.cz, 1 stormchile.cl, 1 stormdamages.claims, 1 -stormenergygh.com, 0 stormerauto.ae, 1 stormestudios.tk, 1 stormfest.tk, 1 @@ -138769,6 +139265,7 @@ storybench.org, 1 storyboardmedia.cl, 1 storybuilder.me, 1 storyclash.com, 1 +storycollective.film, 1 storycycle.tk, 1 storygeneratorapp.com, 1 storyland.ie, 1 @@ -138817,15 +139314,12 @@ stpaulbocaschool.com, 1 stpaulcatholicchurcheastnorriton.net, 1 stpaulsbullville.org, 1 stpaulschambers.com, 1 -stpaulsfeedback.com, 1 -stpe.co, 1 stperseo.tk, 1 stpeterparishva.org, 1 stpharm.co.kr, 1 stpioparish.com, 1 stpip.com, 1 stpip.net, 1 -stprive.net, 1 stps.dk, 1 str470s.duckdns.org, 1 str8hd.com, 1 @@ -138847,6 +139341,7 @@ strail-english.jp, 1 straitsresearch.com, 1 straitstimes.com, 1 strajnar.si, 1 +straka.name, 1 strakertranslations.com, 0 strakh.tk, 1 strakonak.cz, 1 @@ -138892,10 +139387,9 @@ strappazzon.xyz, 1 strashtrading.com, 1 strass-sur-mesure.fr, 1 strassberger.tk, 1 -strasserhaustechnik.de, 1 strasweb.fr, 1 stratagemlabs.tech, 1 -stratahealth.com, 0 +stratahealth.com, 1 stratcat.com, 1 stratebi.com, 1 strategery.io, 1 @@ -138909,19 +139403,21 @@ strategicmind.com, 1 strategicstorytelling.co.za, 1 strategie-zone.de, 1 stratego-belgie.tk, 1 -strategy-lens.com, 1 strategy.it, 1 strategy66.com, 1 strategybusiness.ga, 1 strategysystems.com, 1 stratekispiel.at, 1 stratexonline.com, 1 +stratford.ac.uk, 1 stratfordct.gov, 1 stratfordnh.gov, 1 stratfordwi.gov, 1 stratforge.com, 1 strathspeycrown.com, 1 -stratible.com, 1 +strati.com.br, 1 +stratiacyber.com, 1 +stratible.com, 0 stratik.com.co, 1 stratinator.com, 1 stratinformatics.com, 1 @@ -138940,9 +139436,11 @@ stratuspayments.net, 1 stratussc.com, 0 straubs.eu, 1 strauss-advisor.de, 1 +strauss.eu.com, 1 strauss.tirol, 1 strauswolfs.nl, 1 stravato.com, 1 +stravato.net, 1 stravers.shoes, 1 strawberries.tk, 1 strawberry-laser.gr, 1 @@ -138958,7 +139456,7 @@ strawberrydreadlocks.tk, 1 strawberryhotels.com, 1 strawberryplants.org, 1 strawpoll.fi, 1 -stray-soul.com, 0 +stray-soul.com, 1 straydio.co.uk, 1 straykidsjapan.com, 1 straylight.tk, 1 @@ -138991,14 +139489,12 @@ streamfood.tv, 1 streamgifter.com, 1 streamgoalandres.ml, 1 streamion.city, 1 -streamiptv8k.com, 1 streamkino.cz, 1 streamline.enterprises, 1 streamlinedprocesses.com, 1 streamliner.fr, 1 streamlineverify.com, 1 streammasterpro.com, 1 -streammaxx.net, 1 streammusic.cz, 1 streamnetlibrary.org, 1 streamnetwork.cz, 1 @@ -139014,7 +139510,6 @@ streamurl.link, 1 streamusic.cz, 1 streamvi.com, 1 streamvideo.cz, 1 -streamwizard.de, 1 streamz.be, 1 streamzilla.com, 1 streathamfoodfestival.com, 1 @@ -139038,6 +139533,7 @@ street-racing.tk, 1 streetart.tk, 1 streetartcities.com, 1 streetballromania.tk, 1 +streetcheck.co.uk, 1 streetdancecenter.com, 1 streetdreamz.tk, 1 streetforceteam.tk, 1 @@ -139052,7 +139548,6 @@ streetspirit.tk, 1 streetspotr.com, 1 streetstunters.tk, 1 streetview.wien, 1 -streetwitnessing.com, 1 streetwitnessing.org, 1 streetwitnessingchurch.com, 1 streetworkshub.co.uk, 1 @@ -139060,10 +139555,8 @@ strefapi.com, 1 strefapi.pl, 1 strefarysunku.pl, 1 strehl.tk, 1 -streicher-gesundheit.de, 1 strem.cz, 1 stremio.com, 1 -strenge-angelique.eu, 1 strenge-zucht.schule, 1 strength-secure.com, 1 stressdown.ml, 1 @@ -139071,8 +139564,6 @@ stressed.tk, 1 stressfreeprobate.com, 1 stressfrei-marceva.de, 1 streszczenia.pl, 1 -strettch.com, 1 -strettonreserve.com.au, 1 strettoweb.com, 1 strgco.com, 1 striae.cf, 1 @@ -139096,7 +139587,6 @@ strikers.futbol, 1 stringaudio.com, 1 strings.cf, 1 striniartglass.com, 1 -strinova.org, 1 strip-magazine.com, 1 stripe.com, 1 stripeassets.com, 1 @@ -139106,7 +139596,6 @@ strippersinthehoodxxx.com, 1 stripperweb.club, 1 striptizer.tk, 1 stritai.ru, 1 -strivestudio.com.mx, 1 strixmusic.com, 1 strizh.com.ua, 1 strl-tunis.tk, 1 @@ -139128,12 +139617,10 @@ stroigid.tk, 1 stroimsami.tk, 1 stroimvse.ml, 1 stroiproect.tk, 1 -strojar.com, 1 strojmaster.tk, 1 strokesb.store, 1 strokesurvivor.nz, 1 strom-mit-system.de, 1 -strom-morava.cz, 1 strom.cz, 1 strom.family, 1 stroma.com, 0 @@ -139141,7 +139628,6 @@ stromak.cz, 0 stromberg.marketing, 1 stromectol.gq, 1 stromkomfort.cz, 1 -strommorava.cz, 1 strompraha.cz, 1 stromsparen24.at, 1 stromzivota.sk, 1 @@ -139164,6 +139650,7 @@ strongroom.ai, 1 strongsalpinesucculents.com, 1 strongspace.com, 1 strongtomorrow.tk, 1 +strony365.pl, 1 stronyinternetowekoszalin.pl, 1 stronypiotra.pl, 1 stronywww-lodz.pl, 1 @@ -139222,7 +139709,6 @@ stuartbell.uk, 1 stuartcrawford.co.nz, 1 stuartcrawford.nz, 1 stuarteggerton.com, 1 -stuarteglin.com, 1 stuartfl.gov, 1 stuartgroup.co.uk, 1 stuartmorris.id.au, 1 @@ -139236,6 +139722,7 @@ stubbingsmail.de, 1 stubbmail.de, 1 stubentiga.de, 1 stuc-groep.nl, 1 +stuccorepairrenonv.com, 1 stuckateur-weber.de, 1 stucki-bagger.ch, 1 stucki-sanitaer.ch, 1 @@ -139257,11 +139744,11 @@ studentenplaza.tk, 1 studentenwerk.sh, 1 studentenwoordenboek.nl, 1 studenterguiden.dk, 1 +studentforums.biz, 1 studenti.tk, 1 studentinaneta.com, 1 studentite.bg, 1 studentjournalist.ml, 1 -studentkhata.online, 0 studentklinikk.no, 1 studentloans.gov, 1 studentnep.tk, 1 @@ -139270,12 +139757,9 @@ studentproject.be, 1 studentquickpay.com, 1 studentrobotics.org, 1 students4sports.org, 1 -studentsamfunnet.no, 1 studentscodecamp.com, 1 studentse.fr, 1 studentsfirstnb.com, 1 -studentskiservis.si, 1 -studentskodelo.si, 1 studentstc.cz, 1 studenttenant.com, 1 studenttracker.org, 1 @@ -139288,7 +139772,6 @@ studiekortet.net, 1 studiekortet.nu, 1 studiekortet.org, 1 studiekortet.se, 1 -studienplatzklage.de, 1 studienportal.eu, 1 studierttomnoch.de, 1 studimed.de, 1 @@ -139310,7 +139793,8 @@ studio8.au, 1 studio8builders.au, 1 studio8builders.com, 1 studio91.tk, 1 -studioabq.com, 0 +studioabq.com, 1 +studioadevents.com, 1 studioamoureus.nl, 1 studioandrew.tk, 1 studioat55.com, 1 @@ -139322,10 +139806,10 @@ studiobrandano.com, 1 studiocharloslivro.tk, 1 studioclassic.no, 1 studiodelbenessere.com, 1 -studiodentisticomasi.com, 0 +studiodentisticomasi.com, 1 studiodentisticosanmarco.it, 0 studiodoprazer.com.br, 1 -studiodpe.com, 1 +studiodpe.com, 0 studiodriban.com, 0 studioduurzaamwonen.nl, 1 studioelo.com.br, 0 @@ -139338,12 +139822,10 @@ studiokaczmarek.pl, 1 studiolegalemarchi.tk, 1 studiolegalepaternostro.it, 1 studiolegalesinigaglia.it, 1 -studiolegaleslawitz.it, 1 studiolive.club, 1 studiolu.tk, 1 studiolupotti.it, 1 studiomarcella.com, 1 -studiomax.bg, 1 studiomenfis.com, 1 studionerisabatini.it, 1 studionorwood.com, 1 @@ -139351,14 +139833,10 @@ studionowystyl.pl, 1 studioocasp.com.br, 1 studiopanamaitalia.com, 1 studiopirrate.com, 1 -studiopoen.com.br, 1 -studiorachunkowe.pl, 1 -studiosaulnier.synology.me, 1 studioshiftup.net, 1 studiosql.ml, 1 studiostawki.com, 1 studiostudio.net, 1 -studiosubtelnosci.pl, 1 studiosuracidenunzio.it, 1 studiotmb.com, 1 studiovaud.com, 0 @@ -139376,7 +139854,6 @@ studium.cz, 1 studius.gq, 1 studiweb.pro, 1 studlan.no, 0 -studlied.com, 1 studo.com, 1 studport.rv.ua, 1 studsovet.cf, 1 @@ -139385,7 +139862,6 @@ studuj.digital, 1 studujdigital.cz, 1 studujdigital.eu, 1 studwebs.ml, 1 -study-share.com, 1 studyarch.tk, 1 studybay.com, 0 studybeans.org, 1 @@ -139398,10 +139874,11 @@ studyhatch.com, 1 studyhub.cf, 1 studyin.jp, 1 studying-neet.com, 1 -studyjunkie.co, 1 +studylink.com, 1 studylish.com, 1 studyme.ml, 1 studynoun.com, 1 +studyportal.net, 1 studysive.com, 1 studyspanish-lapaz-bolivia.tk, 1 studystack.ml, 1 @@ -139416,6 +139893,7 @@ stuffiwouldbuy.com, 0 stuhrs.dk, 1 stuka-art.de, 1 stulda.cz, 1 +stumbras.lt, 1 stumeta2018.de, 1 stumeta2019.de, 1 stumf.si, 1 @@ -139469,7 +139947,6 @@ stwcforum.tk, 1 stwcreation.com, 1 stwinnowchurch.org.uk, 1 stworzwirusa.tk, 1 -styck.com.au, 1 stygium.net, 0 styilishdress.tk, 1 style4street.com, 1 @@ -139484,6 +139961,8 @@ styleetvieperfumes.com, 1 styleflow.nl, 1 stylemall.tk, 1 stylepixo.com, 1 +stylerecap.com, 1 +stylesaag.com, 1 styleseat.com, 1 stylesinmotion.co, 1 stylesound.tk, 1 @@ -139501,7 +139980,7 @@ stylight.fr, 1 stylight.it, 1 stylight.nl, 1 stylingstudio.ga, 1 -stylishentertainment.co.uk, 0 +stylishentertainment.co.uk, 1 stylishweddingdisco.co.uk, 1 stylistbazaar.com, 0 stylle.me, 1 @@ -139520,6 +139999,7 @@ suamicowi.gov, 1 suatdautu.com, 1 suaudeau.fr, 1 suaudeau.org, 1 +suayslim.com, 1 sub-net.at, 1 sub-topia.de, 1 subahankamal.tk, 1 @@ -139533,13 +140013,13 @@ subarus.tk, 1 subaruxv.pl, 1 subastatutraslado.com.mx, 1 subbacultcha.tk, 1 +subbdom.com, 1 subcenter.io, 1 subcollab.com, 1 subdev.org, 1 subdivider.tk, 1 subestan.tk, 1 subgirl.ga, 1 -subgoal.gg, 1 subhamchettinadtx.com, 1 subiblia.com, 1 subic.ga, 1 @@ -139559,10 +140039,9 @@ submeet.vet, 1 submelon.tech, 1 submit-link.cf, 1 submiteads.tk, 1 -submittable.com, 0 +submittable.com, 1 submityou-rlink.tk, 1 submityour-link.tk, 1 -subnet.com, 1 subnoto.com, 1 subology.co, 1 suborbital.io, 1 @@ -139573,16 +140052,17 @@ subscription-plus.uk, 1 subscriptionplus.uk, 1 subserv.tk, 1 subsidioalempleo.cl, 1 +subsistence.wiki, 1 subsistencematters.net, 1 subsitude.tk, 1 subsoft.tk, 1 -subspaceds9.us, 1 +subspace.institute, 0 substanceandprogram.info, 0 substancelaw.com, 1 substances.be, 1 substitutealert.com, 1 substore.co.il, 1 -substratesystem.com, 0 +substratesystem.com, 1 substruct.co.uk, 1 subteacher.co.il, 1 subteen.gq, 1 @@ -139613,6 +140093,7 @@ successive.tech, 1 successminds.com, 1 successrice.com, 1 successwizard.com, 1 +succmy.wang, 1 succorfish.net, 1 succubus.me, 1 succubus.network, 1 @@ -139644,12 +140125,14 @@ sudanindependent.net, 1 sudaraka.org, 0 suddenlysavvy.com, 1 sudeleycastle.co.uk, 1 +sudetytour.cz, 1 +sudo.ws, 1 sudoash.com, 1 sudocat.me, 1 sudoku-insight.tk, 1 sudoku.org.ua, 1 -sudokuaday.com, 1 sudokuenlinea.com, 1 +sudopoint.com.br, 1 sudosaveclimate.com, 1 sudoschool.com, 1 sudosu.fr, 1 @@ -139668,32 +140151,29 @@ suemoto.net, 1 suempresa.cloud, 1 sueniosmundiales.com, 1 suenotek.com, 1 +sueperclean.com, 1 +suerteloteria.com, 1 suesse-kunst.de, 1 suessenbecker.de, 1 suessundbitter.de, 1 suevia-ka.de, 1 -suevia.com, 1 suffix.ru, 1 sufix.cz, 1 sufleu.ro, 1 sufleuri.ro, 1 +sufni.space, 1 sufundamento.com, 1 sufuorg.com, 1 sug.hr, 0 sugar-homes.com, 1 -sugar.lgbt, 1 sugarbeatsentertainment.com, 1 sugarbrother.com, 0 -sugarcribs.agency, 1 sugarcribs.com, 1 -sugarcribs.live, 1 -sugarcribs.net, 1 -sugarcribs.org, 1 -sugarcribs.vip, 1 sugarcrm.com, 1 sugarcube.ml, 1 sugarcube.tk, 1 sugardating.network, 1 +sugarfans.com, 1 sugarfetch.com, 1 sugargrant.gq, 1 sugarlandsara.com, 1 @@ -139730,8 +140210,8 @@ suicidepreventioncenter.tk, 1 suicidology.org, 1 suidouraku.com, 1 suigen.jp, 1 -suigenerisakademi.com, 1 suijo-bus.osaka, 1 +suike.com, 1 suikerspinnetje.nl, 1 suitcompany.com, 1 suite.li, 1 @@ -139745,7 +140225,6 @@ suitesapp.com, 1 suitesolutionsgroup.com, 1 suiteuser.org, 1 suitocracy.com, 1 -suitsizingtool.com, 1 sujal.com, 1 sujatadev.in, 1 sujiao.de, 1 @@ -139777,6 +140256,7 @@ sulkmen.tk, 1 sullivancontractingct.com, 1 sullivancountypa.gov, 1 sulman4paf.tk, 1 +sulminastv.com.br, 1 sulphurspringsar.gov, 1 sultanrecords.com, 1 sultans.tk, 1 @@ -139807,7 +140287,6 @@ sumatrautara.gq, 1 sumatrautara.ml, 1 sumatrautara.tk, 1 sumatriptan365.tk, 1 -sumble.com, 1 sumbur.ga, 1 sumcrevillent.tk, 1 sume.at, 1 @@ -139846,11 +140325,12 @@ summermc.cc, 1 summermovies.nyc, 1 summersagamods.com, 1 summerschoolcybersecurity.org, 1 +summerstylessalon.com, 1 summersummit.eu, 1 summing.ga, 1 +summit-group.com, 1 +summit-level.ru, 1 summit-research.org, 1 -summit-smile.com, 0 -summit7.media, 1 summitcountyboe.gov, 1 summitcustomsbrokers.com, 1 summitdentistry.nl, 1 @@ -139858,13 +140338,12 @@ summiteyekc.com, 1 summitlighthousela.org, 1 summitms.gov, 1 summitoralsurgerymt.com, 1 -summitviewbaptistchurch.com, 1 -summitweb.eu, 1 +summitseodesign.com, 1 summitwellnessgroup.com, 1 sumner-jc-wi.gov, 1 sumochki.tk, 1 sumppumpchicagoil.com, 1 -sumpters.co.nz, 0 +sumpters.co.nz, 1 sumran.in, 1 sumtercountysc.gov, 1 sumthing.com, 1 @@ -139895,7 +140374,6 @@ sunburstdata.com, 1 sunbusinessnetwork.org, 1 sunby.jp, 1 sunby.org, 1 -suncanakolica.eu, 1 suncanary.tk, 1 suncat.tk, 1 sunchild.ml, 1 @@ -139922,8 +140400,9 @@ sundaytansa.com, 1 sunderland.ac.uk, 1 sunderlandmoneyman.com, 1 sundeskole.no, 0 -sundhedsdatastyrelsen.dk, 1 +sundhedsdatastyrelsen.dk, 0 sundhedsvejen.dk, 1 +sundialpowdercoating.com, 1 sundiel.tk, 1 sundown.fr, 1 sundylinks.com, 1 @@ -139940,7 +140419,7 @@ sunfox.cz, 1 sungalsses.ml, 1 sungem.nl, 1 sunglassstyle.co.nz, 1 -sungoldsolar.com, 1 +sungreen.info, 1 sunhaoxiang.net, 1 sunho.net.tw, 1 sunioso.com, 1 @@ -139958,7 +140437,6 @@ sunnuntaileivonta.fi, 1 sunnuntaimargariini.fi, 1 sunnuntaipaasiainen.fi, 1 sunnuntaipiirakka.fi, 1 -sunnuslight.com, 1 sunny.co.uk, 1 sunnyhome.tk, 1 sunnylyx.com, 1 @@ -139968,6 +140446,7 @@ sunnyside-jazzclub.com, 1 sunnysideinc.ca, 1 sunnysidesolar.ca, 1 sunnyssingh.tk, 1 +sunnyx3m.com, 1 sunokuran.tk, 1 sunpax.ga, 1 sunpig.com.my, 1 @@ -139984,6 +140463,7 @@ sunradio.tk, 1 sunred.info, 1 sunred.org, 1 sunrichtec.com, 1 +sunrise-sunset.org, 1 sunrise.tk, 1 sunrisebeachmo.gov, 1 sunrisebeachtx.gov, 1 @@ -139991,7 +140471,7 @@ sunroof.ga, 1 sunsafe.se, 1 sunsandvoids.systems, 1 sunsdesign.net, 1 -sunsetfire.de, 1 +sunsetfire.de, 0 sunsetmusic.tk, 1 sunsetnelson.com, 1 sunsetplumbingutah.com, 1 @@ -140006,6 +140486,7 @@ sunshinefrontier.tk, 1 sunshinelife.tk, 1 sunshinereporting.com, 1 sunshinerequest.com, 1 +sunshinetradingco.com, 0 sunskyview.com, 1 sunsmartnsw.com.au, 1 sunsong.org, 1 @@ -140022,22 +140503,24 @@ sunsunjewellery.com, 1 sunsunjewelry.com, 1 sunsunjewelry.net, 1 sunsunjewelry.org, 1 +sunsystem-speicher.de, 1 suntechnologies.com, 1 sunticschool.org, 1 -suntrion.com, 1 suntropez-shop.it, 1 sunwayestates.com, 1 sunwaymedical.com, 1 sunwayreit.com, 1 sunwayxfarms.com, 1 sunwei-proxy.tk, 1 -sunwolf.studio, 0 +sunwolf.studio, 1 sunyanzi.cf, 1 sunyanzi.tk, 1 +suomensotilas.fi, 1 suomentilitoimistot.fi, 1 suomiheraa.com, 1 suomika.pl, 1 suonet.org, 1 +suourl.com, 0 sup-net.de, 1 supa.sexy, 1 supabase.com, 1 @@ -140071,7 +140554,6 @@ super-puper.su, 0 super-segment.com, 1 super-silicon.com, 1 super-trophy.de, 1 -super2d.net, 1 super60.ag, 1 super60.biz, 1 super60.de, 1 @@ -140092,6 +140574,7 @@ superbenefits.com.au, 1 superbestpalsclub.tk, 1 superbir.net, 1 superbitcoinize.me, 1 +superbock.pt, 1 superboeruh.nl, 1 superbomber.tk, 1 superboom.dance, 1 @@ -140109,8 +140592,6 @@ supercastlessouthsydney.com.au, 1 supercastlessunshinecoast.com.au, 1 supercentenarian.com, 1 supercharged.co.uk, 1 -superchargers.pt, 1 -superchopsticks.com, 1 supercinebattle.fr, 1 supercontent.cf, 1 supercontent.ga, 1 @@ -140137,7 +140618,6 @@ superfans.top, 1 superfastpress.com, 1 superfavorite.tk, 1 superfinancial-dorsetbranch.co.uk, 1 -superfluo.hr, 1 superfluous.tk, 1 superfly.tk, 1 superfoodsexplained.com, 1 @@ -140171,7 +140651,6 @@ superjuf.com, 1 superklima.ro, 0 superkonsult.se, 1 superkrasota.tk, 1 -superlayers.io, 1 superlevel.de, 1 superlight.tk, 1 superlisa.nl, 1 @@ -140186,7 +140665,6 @@ supermarkets.ga, 1 supermart.tk, 1 supermartas.cz, 1 supermarx.nl, 1 -supermatch.com.uy, 1 supermedia.cool, 1 supermeitw.com, 1 supermen.com.tr, 1 @@ -140198,6 +140676,7 @@ supermoney.com, 1 supermustang.tk, 1 supern0va.net, 0 supernatural-fans.tk, 1 +supernaturalchronicles.com, 1 supernaut.info, 1 supernogi.ga, 1 superpaczka24.pl, 1 @@ -140206,14 +140685,12 @@ superpart.com, 1 superpase.com, 1 superpi.noip.me, 1 superpollo.com.ec, 1 -superpom.fr, 1 superposition.design, 1 superraclette.fr, 1 supersahnetorten.de, 1 supersales.com.ec, 1 supersandro.de, 1 superse.de, 1 -superse.de.com, 1 superseguros.gob.do, 1 superservers.ml, 1 supershrooms.nl, 1 @@ -140236,6 +140713,7 @@ supertrophy.de, 1 supertutorial.com.br, 1 superuser.one, 1 supervasan.se, 1 +supervets.com.au, 1 superway.es, 1 superwhoopi.tk, 1 superzaim.ga, 1 @@ -140248,7 +140726,6 @@ suplindex.com, 1 supmil.net, 1 suppdeals.eu, 1 suppernova.com, 0 -suppi.io, 1 supplement.cf, 1 supplementaanbiedingen.nl, 1 supplementalconditions.com, 1 @@ -140275,12 +140752,12 @@ supportiv.com, 0 supportivecare.org, 1 supportlafd.org, 1 supportme123.com, 0 -supportmydream.net, 1 supportrelatecare.org, 1 supportsave.com, 1 supportyourapp.com, 1 suppos-net.tk, 1 supra.tf, 1 +supracube.com, 1 supraelco.com, 1 supranova.ai, 1 suprax365.tk, 1 @@ -140293,7 +140770,6 @@ supreme-court.tk, 1 supreme.com.br, 1 supremecarnage.de, 1 suprememale.tk, 1 -suprfi.com, 1 suprintbot.xyz, 0 supriville.com.br, 1 supropionegocio.tk, 1 @@ -140316,23 +140792,23 @@ suresi.gen.tr, 1 suresign.au, 1 surest.com, 0 surestartblanks.com, 1 -sureststar.com, 1 surf1969.tk, 1 surfacespots.ga, 1 -surfbluewave.com, 0 +surfbluewave.com, 1 surfduck.cfd, 0 surfduck.club, 0 surfduck.co, 1 -surfduck.link, 1 +surfduck.link, 0 surfduck.me, 0 -surfduck.xyz, 1 +surfduck.xyz, 0 surfenergy.tk, 1 surfersconnect.net, 1 -surfersparadisepersonaltrainers.com, 1 -surfingshare.com, 0 +surfinglisbon.com, 1 +surfingshare.com, 1 surfkath.de, 1 surflessonslisbon.com, 1 surfly.com, 1 +surfocal.com, 1 surfocal.net, 1 surfoleon.tk, 1 surfseo.ml, 1 @@ -140344,6 +140820,7 @@ surgeongeneral.gov, 1 surgicalassociates.sg, 1 surgicalassociateswny.com, 0 surgicalresourcesgroup.com, 1 +surgispa.net, 1 surgoinsvilletn.gov, 1 surialternat.tk, 1 surik.de, 1 @@ -140367,6 +140844,8 @@ surprise4u.me, 1 surprisepubliclibrary.gov, 1 surpriz-net.tk, 1 surrattlegal.com, 1 +surrealdb.com, 1 +surrealista.click, 1 surrealistas.tk, 1 surreyandsussex.nhs.uk, 1 surreycyclingclub.co.uk, 1 @@ -140406,7 +140885,6 @@ susanmmeyersauthor.com, 1 susann-kerk.de, 1 susanna-komischke.de, 0 susannaridge.com, 1 -susanyorke.ca, 1 susconam.org, 1 susdomicilios.co, 1 suseki.ga, 1 @@ -140417,6 +140895,7 @@ sushifrick.de, 1 sushiginzaonoderala.com, 1 sushikatze.de, 1 sushilmedicos.tk, 1 +sushrutaproject.org, 1 susiestoddart.tk, 1 suska.tk, 1 susoft.tk, 1 @@ -140460,6 +140939,7 @@ sutherlandglobal.com, 1 sutherlinoregon.gov, 1 sutinenmatthews.tk, 1 sutmar-anwaltskanzlei.de, 1 +sutor-trauerbegleitung.de, 1 sutore.com, 1 sutron.com, 1 suttacentral.net, 1 @@ -140470,6 +140950,7 @@ sutty.nl, 1 suurhelsinki.cf, 1 suuria.de, 1 suurimjulgus.ee, 1 +suutaripaivat.fi, 1 suv4.net, 1 suvacollections.com.br, 1 suvalor.com, 1 @@ -140481,7 +140962,6 @@ suwanneecountyfl.gov, 1 suwanya.cn, 1 suwcountyfl.gov, 1 suwebcreativa.com, 1 -suyool.com, 1 suzanne.soy, 1 suzannejauchius.com, 1 suzansalem.nl, 1 @@ -140492,7 +140972,6 @@ suzhouxinglu.com, 1 suziekovner.com, 1 suziepachecoart.com, 1 suzikogsm.tk, 1 -suzubot.com.br, 1 suzuki-aps.de, 1 suzuki-harga-promo.com, 1 suzuki.com, 1 @@ -140528,6 +141007,7 @@ svarka22.ml, 1 svarka24.com.ua, 1 svarka26.gq, 1 svarmax.com.ua, 1 +svarnainstitute.com, 1 svarovani.tk, 1 svasse.nl, 1 svatba.cf, 1 @@ -140558,7 +141038,6 @@ svenljunga.se, 1 svenmuller.com, 1 svenmuller.nl, 1 svenska.events, 1 -svenskafederationer.se, 1 svenskakyrkansunga.tk, 1 svenskamassan.se, 1 svenskapsalmer.se, 1 @@ -140589,6 +141068,7 @@ svetplast.spb.ru, 0 svetrelaxu.cz, 1 svetserialov.to, 1 svev.no, 0 +svfintechja.com, 1 svfitness.ru, 1 svg-board.ml, 1 svgdesigns.com, 1 @@ -140614,7 +141094,7 @@ svlj.net, 1 svm-basketball.de, 1 svn-yokaiispirit.ddns.net, 1 svnrb.com, 1 -svnty2.dedyn.io, 1 +svnty2.dedyn.io, 0 svobodny.fr, 1 svodjapan.info, 1 svoi-ugolok.tk, 1 @@ -140629,9 +141109,7 @@ svrx.one, 1 svse.global, 1 svseglobal.com, 1 svsewerut.gov, 1 -svsg.co, 1 svswebmarketing.com, 1 -svtemplemn.org, 1 svtl.ch, 1 svtr.de, 1 svtv.org, 1 @@ -140643,7 +141121,6 @@ sw-s.info, 1 sw-servers.net, 1 sw33tp34.com, 1 swa-il.gov, 1 -swaa.life, 1 swabia.com, 1 swabifoundation.tk, 1 swac.org, 1 @@ -140653,7 +141130,6 @@ swag.pw, 1 swagat.tk, 1 swagger.io, 1 swagger.london, 1 -swaglab.rocks, 1 swaglookbook.com, 1 swagmoney.enterprises, 1 swahili-dictionary.com, 1 @@ -140722,8 +141198,8 @@ sweep-me.net, 1 sweep-staging.com, 0 sweep.net, 0 sweeppeasweeps.com, 1 -sweepstate.com, 1 sweering.com, 1 +sweers.ch, 1 sweet-spatula.com, 0 sweet64.fr, 1 sweetair.com, 1 @@ -140738,7 +141214,6 @@ sweetcorner.tk, 1 sweeteleven.tk, 1 sweetgood.de, 1 sweetgracemarket.com, 1 -sweethawk.com, 1 sweethearts.tk, 1 sweetheartvideo.com, 1 sweethomesnohomishrenovations.com, 1 @@ -140747,7 +141222,7 @@ sweetintrigue.tk, 1 sweetlegs.jp, 1 sweetloaded.com, 1 sweetlycakes.com, 1 -sweetmecreamery.com, 1 +sweetmedicinefarm.com, 1 sweetnest.com, 1 sweetparis.cf, 1 sweetpinkpussy.org, 1 @@ -140775,14 +141250,11 @@ swgoh4.life, 1 swhi.net, 1 swhw.io, 1 swi.sytes.net, 1 +swiatpilki.com, 1 swid.co.uk, 1 -swiezastrona.pl, 0 -swift-cut.com, 1 -swift-cut.de, 1 +swiezastrona.pl, 1 swift-devedge.de, 1 -swiftapp.uk, 1 swiftauditor.com, 1 -swiftauth.net, 1 swiftbits.com, 1 swiftbonds.com, 1 swiftcashforcars.com.au, 1 @@ -140792,6 +141264,7 @@ swiftcourt.com, 1 swiftcrypto.com, 1 swifteh.net, 1 swifteq.com, 1 +swiftfactory.io, 1 swiftgram.ml, 1 swiftirc.net, 1 swiftmod.net, 1 @@ -140803,15 +141276,13 @@ swiftradiant.com, 1 swiftrecharge.com, 1 swiftsensors.com, 1 swiggles.com, 1 -swilab.ch, 1 +swilab.ch, 0 swilabible.be, 0 swilagod.be, 1 swilatag.be, 1 swilly.org, 1 -swim-go.org, 1 swim-smart.com, 1 swim.aero, 1 -swimhome.es, 1 swimlane.com, 1 swimmingpoolaccidentattorney.net, 1 swimmingpoolpumpsbassonia.co.za, 1 @@ -140843,10 +141314,9 @@ swiss-spectator.ch, 1 swiss-vanilla.ch, 1 swiss-vanilla.com, 1 swiss-watch.com.ua, 1 -swiss404.net, 1 swissaquashop.ch, 1 swissbearfoodservices.com, 0 -swissbit.com, 0 +swissbit.com, 1 swissborg.com, 1 swisscannabis.club, 1 swisschat.tk, 1 @@ -140856,18 +141326,17 @@ swissentreprises.ch, 1 swisservers.com, 1 swissfreshaircan.ch, 0 swissfreshaircan.com, 0 -swissgarden.com, 1 -swissgrid.ch, 1 +swissgrid.ch, 0 swisshex.ch, 1 swisshex.net, 1 swisshub.io, 1 swissinternationalva.com, 1 swisslinux.org, 1 swissmakers.ch, 1 +swissmeyer.pl, 1 swissmodular.com, 1 swissneutral.net, 1 swissnoso.ch, 1 -swisspremiumdairy.com, 1 swissquawk.ch, 1 swisstechmap.ch, 1 swisstranslate.ch, 0 @@ -140910,7 +141379,7 @@ swoopitupinc.com, 1 swopre-appgallop.azurewebsites.net, 1 swordfeng.xyz, 1 swordfighting.net, 1 -swordhealth.com, 0 +swordhealth.com, 1 swordpop.cf, 1 swordpop.gq, 1 sworkit.com, 1 @@ -140920,13 +141389,12 @@ swostik.com, 1 swot-digital.com, 1 swparegionalcad.gov, 1 swpat.org, 1 -swpmethodistheritage.org.uk, 1 swprowood.com, 1 swqa.hu, 1 swretail.ga, 1 -swssd1ut.gov, 1 swtchart.org, 1 swtp-p-appsrv-coordination-backend-businessservices1.azurewebsites.net, 1 +swtp-p-appsrv-coordination-platform-businessservices1.azurewebsites.net, 1 swtp-p-appsrv-donorevaluation-api-businessservices1.azurewebsites.net, 1 swtp-p-appsrv-protocol-api-businessservices1.azurewebsites.net, 1 swtrayssq.gq, 1 @@ -140943,10 +141411,9 @@ swyx.de, 1 sx3.no, 1 sx6729.com, 1 sx8.ovh, 1 -sxilm.com, 0 +sxilm.com, 1 sxistolithos.gr, 1 sxls.com, 1 -sxp.me, 1 sxyql.de, 0 sy-anduril.de, 1 sy24.ru, 1 @@ -140955,11 +141422,9 @@ syage.notaires.fr, 1 syakeapps.net, 1 syakonavi.com, 1 syarah.com, 1 -sybelles.ski, 1 sybersense.com, 1 syc-rotterdam.tk, 1 sychov.pro, 1 -sycleareyes.com, 1 sycorr.com, 1 sycuan.gov, 1 syd.catholic.edu.au, 1 @@ -140997,12 +141462,11 @@ sylino.tk, 1 syllogi.xyz, 1 sylphix.cn, 1 sylvaindurand.org, 1 -sylvainkalache.com, 0 +sylvainkalache.com, 1 sylvaloir.fr, 1 sylvangarden.net, 1 sylvankohchang.com, 1 sylvantownshipmi.gov, 1 -sylveon.social, 1 sylvia.id, 1 sylvia.my.id, 1 sylviamartinez.com, 1 @@ -141022,26 +141486,19 @@ symbiose-immobilier.ch, 0 symbiose.com, 1 symbiosecom.ch, 0 symbiote.com.au, 1 -symbiotic.fi, 1 +symbioxr.com, 1 symbo.xyz, 1 symbolics.digital, 1 symbolnodes.org, 1 symbols.gov, 1 symcare.com.au, 0 symend.com, 0 -symetri.co.uk, 1 -symetri.com, 1 -symetri.dk, 1 -symetri.fi, 1 -symetri.ie, 1 -symetri.no, 1 -symetri.se, 1 -symetri.us, 1 -symetrigroup.com, 1 +symeonchen.com, 1 symetrix.tk, 1 symetryk.tk, 1 symfony.com, 1 symfora-meander.nl, 1 +symgateway.com.au, 1 syminsight.tk, 1 symlink.io, 1 symlnk.de, 1 @@ -141049,16 +141506,16 @@ symoteb.ir, 1 sympa-by.eu, 1 sympatent.com, 1 symphonyai.com, 1 -symplelending.com, 1 sympletrade.com, 1 symplexia.com.br, 1 symplicit.com.au, 1 symplyos.tk, 1 sympmarc.com, 1 +symposit.com, 0 symptome-erklaert.de, 1 syna.dev, 1 syna.site, 1 -synackrst.net, 1 +synabi.com, 0 synap.ac, 1 synapse.ee, 1 synapse.pe, 1 @@ -141079,18 +141536,19 @@ syncpal.de, 1 syncpdi.com, 1 syncplay.pl, 1 syncresis.com, 1 -syncrolab.es, 1 +syncrony.com, 1 syncsci.com, 1 syncspace.live, 1 -synctera.com, 1 synder.com, 1 synderapp.com, 1 +syndicats.de, 1 syndigo.com, 1 syndika.co, 1 syndikalismus-im-laendle.tk, 1 syneart.com, 1 synecek11.cz, 1 synedat.com, 1 +synel.co.il, 1 synergia.website, 1 synergiamedicalcare.es, 1 synergiedenken.de, 1 @@ -141107,6 +141565,7 @@ synfrait.com, 1 synitsa.tk, 1 synony.me, 1 synonym24.at, 1 +synoptek.com, 1 synotna.eu, 1 synoviasolutions.com, 1 synrelay.com, 1 @@ -141121,7 +141580,6 @@ syntheticgrassliving.com.au, 1 synthetis.com, 1 synthezis.tk, 1 synthgularity.net, 1 -synthiam.com, 1 synthpop.ai, 0 syntia.tk, 1 syntric.io, 1 @@ -141152,7 +141610,6 @@ syrianair.cf, 1 syrianair.ga, 1 syrianair.ml, 1 syrianet.cf, 1 -syriansharks.com, 1 syrianskaif.com, 1 syrius.tk, 1 syronex.com, 1 @@ -141162,9 +141619,10 @@ sys-stat.de, 1 sys-state.de, 1 sys-tm.com, 1 sys.as, 1 +sysadmin.pm, 1 +sysadmin.xyz, 0 sysadmin21.tk, 1 sysadmins.ro, 1 -sysadminslife.com, 1 sysadvisors.pl, 1 sysaid.com, 1 sysbert.de, 1 @@ -141175,12 +141633,12 @@ syscapassetfinance.uk, 1 syscaponline.co.uk, 1 sysco.biz, 1 syscom.be, 1 -syscomnext.com, 1 sysconautomation.com, 1 syscoon.com, 1 sysctl.se, 1 syscurve.com, 1 sysdb.io, 1 +sysdig.com, 1 syselg.com, 1 sysert.tv, 0 sysfreight.com, 1 @@ -141209,12 +141667,13 @@ system-admin-girl.com, 1 system-design.tk, 1 system-erp.com.pl, 1 system-fehler.tk, 1 -system-informer.io, 1 system-m.de, 0 system-noah.net, 1 system.is, 1 system.md, 1 systemano.ru, 1 +systematic-momo.com, 1 +systematic-momo.dk, 1 systemausfall.org, 1 systemb.ch, 1 systemblog.tk, 1 @@ -141224,9 +141683,8 @@ systemd.eu.org, 1 systemd.info, 0 systemerka.pl, 1 systemerr.tk, 1 -systemhaus-ehst.de, 1 +systemhaus.saarland, 1 systeminformer.com, 1 -systeminformer.io, 1 systemintegra.ru, 0 systemisbusy.info, 1 systemlead.pl, 1 @@ -141241,10 +141699,10 @@ systemsense.com.au, 1 systemsikkerhet.no, 1 systemsinblue.tk, 1 systemtoto.ml, 1 -systemvoices.info, 1 systemysportowe.pl, 1 systemzeit.info, 1 systoolbox.net, 1 +systronlabs.com, 1 syswap.fr, 1 syswiki.org, 1 sysystems.cz, 1 @@ -141263,13 +141721,13 @@ sz-lessgym-kamenz.de, 1 szabadpingvin.eu, 1 szablinski.pl, 1 szadeczky.com, 1 +szafadziecka.com.pl, 1 szafkirtv.pl, 1 -szakszervezet.work, 1 +szakszervezet.work, 0 szalaiterko.hu, 1 szamitogepdepo.com, 1 szamlarobot.hu, 1 szamotulskanocnapiatka.pl, 1 -szarvas-ha.uk, 1 szasz.me, 1 szaszm.tk, 0 szaxi.cloud, 1 @@ -141291,9 +141749,11 @@ szerbnyelvkonyv.hu, 1 szerelem.love, 1 szerver.com, 1 szerver.hu, 1 +szhighsun.com, 1 szih.org.pl, 1 szilagyicsalad.ddns.net, 1 szili.uk, 1 +szimpla.hu, 1 szkolenia-dron.pl, 1 szlovaknyelv.hu, 1 szlovennyelv.hu, 1 @@ -141321,15 +141781,14 @@ szuecs.net, 1 szw-hessen.de, 1 szwrc.co, 1 szww99.cc, 1 -szybakominkowa.pl, 1 -szybka.pl, 1 szybkaekipa.pl, 1 szybkiebieganie.pl, 1 szymczak.at, 1 szyndler.ch, 1 szyszkowitz.at, 1 -szzcs.com, 1 +szzsivf.com, 0 t-1.org, 0 +t-10.in, 1 t-cophony.com, 1 t-dent.com, 1 t-fischer.net, 1 @@ -141345,18 +141804,18 @@ t-op7.com, 1 t-op8.com, 1 t-op9.com, 1 t-pc.org, 1 +t-pravda.net, 1 t-res.net, 1 t-shirt-template.com, 1 t-shirty.tk, 1 +t-so.de, 1 t-wirth.de, 1 t-zrenia.ru, 1 t.ee, 1 t.facebook.com, 0 -t.lu, 1 t.net.co, 1 t.pe, 1 t.rip, 1 -t.sc, 1 t.wtf, 1 t08.co, 1 t09.cc, 1 @@ -141372,11 +141831,13 @@ t2-sit-test.tk, 0 t2000headphones.com, 1 t2000laserpointers.com, 1 t22.uk, 1 +t2data.com, 1 +t2informatik.de, 1 +t2tea.com, 1 t33.eu, 1 t36533.com, 1 t3concrete.my, 1 t3hty.fr, 1 -t3n.cx, 1 t3rror.net, 1 t4-wiki.de, 1 t404.de, 1 @@ -141384,16 +141845,18 @@ t47.io, 1 t4c.link, 1 t4gh.com, 1 t4gsports.com, 1 -t4x.org, 0 +t4x.org, 1 t5118.com, 1 t51365.com, 1 t5197.co, 1 +t630.nl, 1 t666.com, 1 t6729.co, 1 t6957.co, 1 t776633.com, 1 t7e.de, 1 t7tech.net, 1 +t8.software, 1 t8803.com, 1 t8809.com, 1 t8815.com, 1 @@ -141425,12 +141888,14 @@ t9728.co, 1 ta-da.ua, 1 ta-hiroshi.jp, 1 ta-maison.fr, 1 +ta-nehisicoates.com, 1 ta-server.nl, 1 ta-soest.nl, 0 ta3.sk, 1 taabe.net, 1 taakjhaknews.com, 1 taanishsaifu.gq, 1 +taapk.com, 1 taartbesteld.nl, 1 taartenvankoenie.tk, 1 taartenvanmireille.nl, 1 @@ -141450,12 +141915,10 @@ tabbo.site, 1 tabbo.xyz, 1 tabby.cz, 1 tabclassics.tk, 1 -tabcode.net, 1 tabe.cn, 1 tabegamisama.com, 1 tabelaci.tk, 1 tabelaofert.pl, 1 -tabelazdrowia.pl, 1 tabelekaloryczne.waw.pl, 1 tabella.fi, 1 taberna.tk, 1 @@ -141465,7 +141928,6 @@ tabernacallemelancolia.com, 1 tabi-news.com, 1 tabi-runrun.com, 1 tabi-time.com, 1 -tabi.tours, 1 tabira.tk, 1 tabisuta.com, 1 tabiteollisuus.tk, 1 @@ -141485,16 +141947,13 @@ tabletek.com, 1 tabletennis-reference.com, 1 tabletennis-tt.tk, 1 tablethotels.com, 1 -tablethype.de, 1 tabletkinamase.ga, 1 tabletkinatradzik.ga, 1 -tabletoplocal.com, 1 tabletopmachine.com, 1 tabletopmachines.com, 1 tabletopwealth.reviews, 0 tabletopworkshop.com, 1 tablettes-tactiles.tk, 1 -tablouricartoon.ro, 1 taboomale.com, 1 tabordaadvogados.ga, 1 taborsky.cz, 1 @@ -141510,6 +141969,7 @@ taburetka.ua, 1 tac-performance.net, 1 tac-sys.net, 1 tacay.co, 1 +tachikawa-saisyuusyou.com, 1 tachonetbg.com, 1 tachoplus.pl, 1 tachoplusweb.com, 1 @@ -141531,6 +141991,8 @@ tacomarugby.org, 1 taconic.com, 1 tacoroumen.nl, 1 tacotown.tk, 1 +tacti.cc, 1 +tactical.zone, 1 tacticalavocado.com, 1 tacticalsquare.com, 1 tacticalvote.co.uk, 1 @@ -141541,9 +142003,7 @@ tad.ua, 1 tadaaam.studio, 1 tadalafil-tablets.tk, 1 tadalafilindia.gq, 1 -tadashiku.jp, 1 tadaweb.com, 1 -tadawulstocks.com, 1 tadj-mahalat.com, 1 tadjiki.tk, 1 tadjikistan.tk, 1 @@ -141583,13 +142043,11 @@ tagesmutter-in-bilm.de, 1 tagg.is, 1 taggeru.com, 1 taggigkaktus.tk, 1 -taggley.com, 1 taghit.tk, 1 tagid.ga, 1 tagid.tk, 1 tagil-news.ru, 1 taginet.com, 1 -taglialegne.it, 1 tagliando.it, 1 taglioepiega.com, 1 taglioepiega.eu, 1 @@ -141601,9 +142059,11 @@ tagstationen.se, 1 tagstatravel.com, 1 taguette.com, 1 taguette.fr, 1 +taguette.org, 1 +tagungsraum-usedom.de, 0 +tagungsraum-zinnowitz.de, 0 tagungsstaette-usedom.de, 0 tagungsstaette-zinnowitz.de, 0 -tahacinkilic.com, 1 tahaluf.ai, 1 tahaonline.tk, 1 tahcardealers.com, 1 @@ -141622,9 +142082,9 @@ tahynatozzi.tk, 1 taiaro.tk, 1 taibachicken.com, 1 taichi-jade.com, 1 -taichidiscovery.com, 1 taidu.news, 1 taieki.nl, 1 +taifun-software.de, 1 taiga-aikidojo.tk, 1 taigalaloca.net, 1 taigatinyhouse.com, 1 @@ -141633,19 +142093,16 @@ taijul.tk, 1 taikodom.tk, 1 tail.id.lv, 1 tail.wtf, 1 -tailcast.org, 1 taildb.com, 1 tailor.com.br, 1 tailorbrands.com, 1 tailoring.tk, 1 -tailpage.org, 1 -tailport.org, 1 tailpuff.net, 0 tails.net, 1 -tailseed.org, 1 tailsfromvetschool.com, 1 tailsteak.tk, 1 tailwindapp.com, 1 +tainevenings.com, 1 tainiesonline.tk, 1 taintedart.co.nz, 1 taipak-krasnoyar.tk, 1 @@ -141663,8 +142120,8 @@ taiwaniacapital.com, 1 taiwaniha.org.tw, 1 taiwanprize.com, 1 taiwantechtrek.tk, 1 +taiwantour.info, 0 taiway.com, 1 -taiyo-eg.com, 1 taj-portal.tk, 1 tajbrighton.tk, 1 tajemna-mista.cz, 1 @@ -141676,10 +142133,9 @@ tajniy-smisl.ga, 1 tajniy-smisl.gq, 1 tajniy-smisl.ml, 1 tajniy-smisl.tk, 1 -tajnyodtah.sk, 1 -tajra.store, 1 tajrobe.wiki, 1 tajtowereg.com, 1 +tak-it.nl, 1 tak.gov, 1 tak.io, 1 takada418.jp, 1 @@ -141690,7 +142146,6 @@ takanenonadeshiko.com, 1 takano-recruit.com, 1 takano-takuhai.com, 1 takanogroup.co.jp, 1 -takanozawa.co.jp, 1 takao-hs.com, 1 takao.ga, 1 takarabrig.com, 1 @@ -141712,7 +142167,7 @@ takeitback.tk, 1 takememoriesleavefootprints.com, 1 takemetomontpellier.fr, 1 taken.cf, 1 -taken.pl, 0 +taken.pl, 1 takenote.co, 1 takenouchi-dc.com, 1 takenouchi-perio.com, 1 @@ -141734,12 +142189,15 @@ takipavm.com, 1 takipcikutusu.com, 1 takipcisihir.com, 1 takiplekazan.ga, 1 +takito.net, 1 +takiwaku.com, 1 takk.pl, 1 takkaaaaa.com, 1 takkguitar.net, 1 takko-fashion.com, 1 takkyu-navi.jp, 1 takosuke.net, 1 +taks.nl, 1 taksaft.tk, 1 takshni.com, 1 taksihesaplama.com, 1 @@ -141758,10 +142216,11 @@ talakacaruli.tk, 1 talalaok.gov, 1 talarislog.com, 1 talbottimber.co.uk, 1 +talcualdigital.com, 1 taldia.es, 1 taleatherworks.com, 1 talendipank.ee, 1 -talensahub.com, 1 +talengo.com, 1 talent-safari.com, 1 talentbazi.com, 1 talentc.ca, 1 @@ -141772,11 +142231,16 @@ talented.ga, 1 talentedagents.ga, 1 talentexcellence.com, 1 talentguru.ml, 1 +talenthope.com, 1 +talenthope.com.cn, 1 talenthubmpi.com, 1 talentimpuls.de, 1 talentio.com, 1 +talentis.net, 1 +talentlint.com, 1 talentlms.com, 1 talentmill.co, 1 +talento.dev.br, 0 talentoday.com, 1 talentplatform.ca, 1 talentplatform.com, 1 @@ -141796,12 +142260,14 @@ talichi.es, 1 talideon.com, 0 talikotang.tk, 1 talinhandmade.com, 1 +talisadesign.fi, 0 talisman-amulet.ga, 1 talk-local.com, 1 talk.google.com, 1 talkan.ru, 1 talkappin.com.au, 1 talkbasket.net, 1 +talkeducation.com, 1 talkgadget.google.com, 1 talkhaled.com, 1 talki.tk, 1 @@ -141813,6 +142279,8 @@ talkischeap.co.za, 1 talkischeap.tk, 1 talklikeyodaday.tk, 1 talkmojang.club, 1 +talknetwork.ru, 1 +talkreal.net, 0 talkscope.cf, 1 talkscope.ml, 1 talksileby.tk, 1 @@ -141829,8 +142297,6 @@ tallercommercial.com, 1 tallercs.tk, 1 tallerdesign.co.uk, 1 talleresluse.com, 1 -tallerpos.com, 1 -tallertales.net, 1 tallest.nl, 1 talleyrandconsultancy.com, 1 tallgrasslegal.com, 1 @@ -141847,18 +142313,16 @@ taloman.fi, 1 talonro.com, 1 talos-app.io, 1 talos-staging.io, 1 -talosquant.com, 1 talpurwadalions.tk, 1 -talqo.ai, 1 -taltech.ee, 0 +taltech.ee, 1 talusan.tk, 1 tam-moon.com, 1 tam-safe.com, 1 tam7t.com, 0 tama.ga, 1 +tamagotchicenter.com, 1 tamalcloud.com, 1 tamamlayici.com.tr, 1 -tamamlayicisagliksigortasi.com.tr, 1 tamanlapanganindah.com, 1 tamaoka-eyeclinic.com, 1 tamarac.gov, 1 @@ -141910,11 +142374,11 @@ tampacific.net, 1 tampacific.vn, 1 tampaexplorer.ml, 1 tampereenliberaalit.tk, 1 +tampus.chat, 1 tamracapital.sa, 1 tamriel-rebuilt.org, 1 tamrielcraft.tk, 1 tamronhallshow.com, 1 -tamsuite.cl, 1 tamsulosin.gq, 1 tamylove.net, 1 tan90.tw, 1 @@ -141958,6 +142422,7 @@ tangiertours.ma, 1 tangipahoa.gov, 1 tanglepatterns.com, 1 tango-cats.de, 1 +tango-networks.com, 0 tango-querida.tk, 1 tango.berlin, 1 tango.info, 1 @@ -141966,16 +142431,18 @@ tangoanalytics.com, 1 tangosix.rs, 1 tangs.com, 1 tangselmedia.com, 1 +tanguay.cc, 1 tangub.today, 1 tangubpatientmonitoring.com, 1 tangyue.date, 1 tangzhao.net, 1 tanhaa.tk, 1 +tanhongit.com, 1 taniawizualizacja.pl, 1 tanie-obraczki-szczecin.tk, 1 tanie-uprawnienia-sep.pl, 1 taniepaleciaki.pl, 1 -tanieserwetki.pl, 0 +tanieserwetki.pl, 1 taniguchi.jp.net, 1 taniguchi.link, 1 taniguchi.osaka.jp, 1 @@ -141991,8 +142458,10 @@ tanknology.ca, 1 tankos.tk, 1 tankpassen-vergelijken.nl, 1 tanks.je, 1 +tankski.co.uk, 1 tanming.com.my, 1 tanned.tk, 1 +tannenhof-moelln.de, 1 tanner.sh, 1 tanneradvisorysolutions.com.au, 1 tannercorporation.com, 0 @@ -142003,10 +142472,12 @@ tannerwj.com, 1 tannextcloud.cf, 1 tannlegenityrkia.no, 1 tanomimaster.com, 1 +tanorder.com, 1 tanovar.com, 1 tanphu.tk, 1 tanpopo.io, 1 tansidco.org, 1 +tansin.co.th, 0 tantalos.nl, 1 tantejulia.tk, 1 tantetilli.de, 0 @@ -142056,8 +142527,6 @@ tapestryhomes.org, 1 tapestryjournal.com, 1 tapesvip.xyz, 1 tapetenresonanz.de, 1 -tapevents.mil, 1 -tapicerosenmadrid.com, 1 tapinjury.com, 1 tapirs.jp, 1 taplemon.at, 1 @@ -142068,10 +142537,11 @@ tappea.me, 0 tappezzeria.roma.it, 1 tappezziere.milano.it, 0 tappezziere.roma.it, 1 -tapphosting.com, 1 +tappy.com.br, 1 tapquad.com, 1 taprix.org, 1 taproot.com, 1 +tapsandtables.net, 1 tapstertastingroom.com, 1 taquilla.com, 1 taqun.club, 1 @@ -142096,7 +142566,6 @@ tarcode.ru, 1 tardics.com, 1 tardis.cloud, 1 tardis.io, 1 -tardisec.com, 1 tardishomelab.com, 1 tarek.wtf, 0 tarekfadel.com, 1 @@ -142110,7 +142579,7 @@ targetbuilding.com, 1 targetlearning.com.au, 1 targetlonglife.tk, 1 targetmarc.com, 1 -targetoutsourcing.pe, 1 +targetnxt.com, 1 targetsportsworld.com, 1 targettrend.com, 1 targeturl.ru, 1 @@ -142128,7 +142597,6 @@ tarihpedia.com, 1 tarihvakti.com, 1 tarija.tk, 1 tarikigaru.ga, 1 -tarikin.com, 1 tarjaturunen.tk, 1 tarjetaolimpica.com.co, 1 tarjetasgraficas.tk, 1 @@ -142146,6 +142614,7 @@ tarot-online.com.pl, 1 tarot-online.fr, 1 tarot-online.it, 1 tarot-oracle.com, 0 +tarot.vn, 1 tarotcarmenruiz.com, 1 tarotreadingexplained.com, 1 tarotyvidente.es, 1 @@ -142166,7 +142635,7 @@ tartufomajella.it, 1 taruntarun.net, 1 tarus.gq, 1 tarvit.me, 1 -tarvoo.com, 0 +tarvoo.com, 1 tarzanka.ml, 1 tas.best, 1 tasarimgazetesi.com, 1 @@ -142178,10 +142647,12 @@ tascuro.com, 1 tasefiling.gov, 1 tasfil.com, 1 tashicell.com, 1 +tasikmalayakab.go.id, 1 taskforce.eu, 1 taskhorizon.audio, 1 taskido.pl, 1 taskin.me, 1 +taskman.london, 1 taskotron.fedoraproject.org, 1 taskotron.stg.fedoraproject.org, 1 taskrunnr.com, 1 @@ -142193,16 +142664,16 @@ taskus.com, 1 taskwise.cf, 0 tasmaniangaspipeline.com.au, 1 tasnomanija.rs, 1 +tasogarenoinori.net, 1 tasonoken.tk, 1 tasports.com.au, 1 tasports2043.com.au, 1 -tassilitravailaerien.dz, 1 tassweb.com.au, 1 taste2travel.com, 1 tastedrecipes.com, 1 tastefullyminimalist.com, 1 +tastehungary.com, 1 tastenewwines.com, 1 -tastfinity.com, 1 tastiquo.com, 1 tastycake.net, 0 tastycool.io, 1 @@ -142210,11 +142681,13 @@ tastyfx.com, 1 tastyplacement.com, 1 tastyreading.com, 1 tastystakes.com, 1 +tastyworksreview.co, 1 tasvideos.org, 1 tatamypa.gov, 1 tataog.com, 1 tatar-bashqort.tk, 1 tatara.ne.jp, 1 +tatard.fr, 1 tataria.tk, 1 tatarin.ga, 1 tatarin.gq, 1 @@ -142225,6 +142698,7 @@ tataru.it, 1 tatarworld.tk, 1 tatary.cf, 1 tatary.tk, 1 +tate.com, 1 tatecountyms.gov, 1 tateesq.com, 0 tateishi-ip.com, 1 @@ -142240,7 +142714,7 @@ tatjana-young.net, 1 tatler.com, 1 tato.noip.me, 0 tatoo-shop.ca, 1 -tatooine.club, 0 +tatooine.club, 1 tatort-fanpage.de, 1 tatortreinigung-365.de, 1 tatra.ca, 1 @@ -142255,7 +142729,6 @@ tattoo-family.com, 1 tattoo.roma.it, 1 tattoocorina.tk, 1 tattooidee.nl, 1 -tattoomatch.fr, 1 tattoomotive.net, 1 tattoopiercing-wien.at, 1 tatu-love.tk, 1 @@ -142275,19 +142748,22 @@ taubenweiss.de, 1 taubenweiss.eu, 1 taubenweiss.net, 1 taubin.cc, 1 +tauedu.org, 1 taufers.info, 1 taufiqzainal.com, 1 tauntonme.org.uk, 1 tauntonpdma.gov, 1 taunusstein.net, 1 taupoboats.co.nz, 1 +taupochamber.co.nz, 1 taupodental.co.nz, 1 taupopathways.co.nz, 1 -tauposculpturetrust.co.nz, 0 +tauposculpturetrust.co.nz, 1 taupotrampers.club, 1 taura.vn, 1 tauran.net, 1 tauriscia.tk, 1 +taurus-exports.com, 1 taurus.edu.pl, 1 tauwis.com, 1 tava.tk, 1 @@ -142324,7 +142800,6 @@ tawzea.com, 0 tax-brain.net, 1 tax-cpa-usa.com, 1 tax-guard.com, 1 -tax-meyer.de, 1 taxandor.com, 1 taxassist.co.uk, 1 taxationweb.co.uk, 1 @@ -142364,12 +142839,12 @@ taxibudapest.fr, 1 taxibudapest.nl, 1 taxicollectif.ch, 0 taxid-k.be, 1 +taxihat.co.il, 1 taxihungary.com, 1 taxikraken.tk, 1 taximarcaminha.com, 1 taximinvody.ml, 1 taximovies.gq, 1 -taxiprofile.com, 1 taxis-collectifs.ch, 0 taxis-villefontaine.com, 1 taxisafmatosinhos.pt, 1 @@ -142385,7 +142860,6 @@ taxmadras.com, 1 taxo.fi, 1 taxobservatory.eu, 1 taxpackagesupport.com, 1 -taxpi.ru, 1 taxstorestalbans.com.au, 1 taxuni.com, 1 taybee.net, 1 @@ -142409,6 +142883,7 @@ taylorfry.nz, 1 taylormadesoft.com, 1 taylorruhland.com, 1 taylors-castles.co.uk, 1 +taylorshillsamoan.org, 1 taylorstauss.com, 1 taysiz.ir, 1 taytaytiangge.ph, 1 @@ -142429,9 +142904,10 @@ tb.org.tw, 1 tbahn.de, 1 tbassistant.xyz, 1 tbatr.tk, 1 +tbbank.gov.tm, 1 tbcinteriorismo.com, 1 tbcloud.site, 0 -tbfencing.au, 1 +tbejos.com, 1 tbfocus.com, 1 tbi.equipment, 1 tbi.systems, 1 @@ -142444,6 +142920,7 @@ tbkwatch.org.za, 1 tbld.gov, 1 tblflip.de, 1 tblnk.de, 1 +tbonejs.org, 1 tbox.net, 1 tbpchan.cz, 1 tbq-s.com, 1 @@ -142474,15 +142951,17 @@ tcbdarts.nl, 1 tccc.org.tw, 1 tcckonsult.com, 1 tccportal.com, 1 -tccturkiye.com, 1 tcddtrensaatleri.com, 1 tcdn.tech, 1 tcdww.cn, 1 +tcec-chess.com, 1 tcf.org, 1 tcg.cards, 1 tcgbridge.com, 1 tcgc-adms.com, 1 tcgcardcare.com, 1 +tcgcollector.com, 1 +tcglobal.com, 1 tcgpraktijk.nl, 1 tcgprinter.com, 1 tcgrepublic.com, 1 @@ -142507,8 +142986,6 @@ tcmk-tomsk.ru, 1 tcnapplications.com, 1 tco.zapto.org, 1 tcoa.tk, 1 -tcousin.com, 1 -tcousin.fr, 1 tcp.com, 1 tcpdata.com, 1 tcpride.org, 1 @@ -142518,9 +142995,10 @@ tcr-ees.com, 1 tcrecord.org, 1 tcrid.com, 1 tcspartner.eu, 1 +tcspartner.net, 1 tcttire.com, 1 tcuprs.com, 1 -tcust.edu.tw, 0 +tcust.edu.tw, 1 tcvafrica.agency, 1 tcvanbuuren.tk, 1 tcvonline.vic.gov.au, 1 @@ -142528,7 +143006,6 @@ tcx.de, 1 tcybert.com, 1 tcyoung.co.uk, 1 td-bambini.com, 1 -td-mc.ru, 1 td-olymp.ru, 1 tda-werbetechnik.de, 1 tda.de, 1 @@ -142541,9 +143018,11 @@ tdeecalculator.org, 1 tdelmas.ovh, 1 tdem.eu, 1 tdev.team, 1 +tdk-ventures.com, 1 tdk.cn, 1 tdk.eu, 1 tdl.ge, 1 +tdlesovik.ru, 1 tdln.tk, 1 tdn.com, 1 tdolar.com, 1 @@ -142575,17 +143054,17 @@ tea.codes, 1 tea.in.th, 1 teablr.com, 1 teach.gq, 1 +teachbase.ru, 1 teachbiz.net, 1 teachercall.kr, 1 teachercreatedmaterials.com, 0 -teachermommylife.com, 0 +teachermommylife.com, 1 teachernewsbd.com, 1 teacherph.com, 1 teacherpics.com, 1 teacherquinten.com, 1 teacherquotes.gq, 1 teachersasap.info, 1 -teachersplanner.org, 1 teachforall.org, 1 teaching-certification.com, 1 teachingamericanhistorymd.net, 1 @@ -142601,7 +143080,7 @@ teachpeople.org, 1 teachwithouttears.com, 1 teacuppersiancats.com, 1 teacupyorkiespets.com, 1 -teagardenspa.com, 0 +teagardenspa.com, 1 teaguepdtx.gov, 1 teahawaii.ga, 1 teahouse.gq, 1 @@ -142617,8 +143096,8 @@ team-apollo.tk, 1 team-atomic.tk, 1 team-azerty.com, 1 team-bbd.com, 1 +team-building.madrid, 1 team-building.tirol, 1 -team-clash.com, 1 team-cut.tk, 1 team-darkness.tk, 1 team-eklund-motorsport.tk, 1 @@ -142646,10 +143125,8 @@ teambanzai.tk, 1 teambeam.ru, 1 teambee.tk, 1 teambim.eu, 1 -teambranch.io, 1 teamceleris.com, 1 teamcg.ru, 1 -teamclarity.ai, 1 teamclean.bg, 1 teamcoco.com, 1 teamcode.tk, 1 @@ -142659,6 +143136,7 @@ teamcolorcodes.com, 1 teamconf.ru, 1 teamdarko.tk, 1 teamdaylo.xyz, 1 +teamdev.id, 1 teamdevelopers.ga, 1 teamdriven.tk, 1 teamdumondelibre.fr, 1 @@ -142666,11 +143144,13 @@ teamengland.tk, 1 teamfriet.nl, 1 teamgoal1.com, 1 teamhd.org, 1 +teamhealth.com, 1 teamhinkleyc.com, 0 teamhybrid.com, 1 teamhybridforums.com, 1 teamjiradia.tk, 1 teamkankun.tk, 1 +teamkgsr.com, 1 teamkilled.tk, 1 teamkiller.tk, 1 teamkoncert.pl, 1 @@ -142701,7 +143181,41 @@ teamroom.jp, 1 teams.microsoft.us, 1 teamsakura.net, 1 teamsass.ca, 1 +teamscomponents.com, 1 +teamsecure.al, 1 +teamsecure.at, 1 +teamsecure.be, 1 +teamsecure.bg, 1 +teamsecure.ch, 1 +teamsecure.co.il, 1 +teamsecure.co.uk, 1 +teamsecure.com.ua, 1 +teamsecure.cz, 1 +teamsecure.de, 1 +teamsecure.dk, 1 +teamsecure.ee, 1 +teamsecure.es, 1 +teamsecure.fi, 1 +teamsecure.fr, 1 +teamsecure.gr, 1 +teamsecure.hu, 1 +teamsecure.io, 1 teamsecure.is, 1 +teamsecure.it, 1 +teamsecure.li, 1 +teamsecure.lt, 1 +teamsecure.lu, 1 +teamsecure.lv, 1 +teamsecure.md, 1 +teamsecure.me, 1 +teamsecure.mk, 1 +teamsecure.pl, 1 +teamsecure.pt, 1 +teamsecure.ro, 1 +teamsecure.rs, 1 +teamsecure.se, 1 +teamsecure.si, 1 +teamsecure.sk, 1 teamsherry.realtor, 1 teamshirts.at, 1 teamshirts.be, 1 @@ -142720,9 +143234,6 @@ teamsignia.com, 1 teamskillevolution.com, 1 teamsomeday.tk, 1 teamstarbugs.de, 1 -teamsterhomeadvantage.com, 1 -teamstersvip.com, 1 -teamstersvipair.com, 1 teamsudan.cf, 1 teamtheory.io, 1 teamtirith.com, 1 @@ -142741,7 +143252,6 @@ teamwass.eu, 1 teamwolf.tk, 1 teamwork-bad-wurzach.de, 1 teamworld.blog, 1 -teamx.agency, 1 teaparty.id, 1 teapiraeus.gr, 1 teara.govt.nz, 1 @@ -142786,7 +143296,6 @@ tecart-system.de, 0 tecart.de, 1 tecartcrm.de, 1 tecatebeerusa.com, 0 -teccentroberks.org, 1 tece.com, 1 tece.de, 1 tece.se, 1 @@ -142809,12 +143318,13 @@ tech-rat.com, 1 tech-seminar.jp, 1 tech-seo-summit.com, 1 tech-urdu.tk, 1 -tech-zealots.com, 1 +tech-zoom.com, 1 tech3599.com, 1 tech3araby.com, 1 tech4founders.co, 1 tech4greece.gr, 1 tech506.com, 1 +techaachen.de, 1 techangel.tk, 1 techanit.de, 1 techarab.ga, 1 @@ -142824,7 +143334,7 @@ techarchive.tk, 1 techarkansas.tk, 1 techask.it, 1 techbelife.com, 1 -techboi.com.br, 1 +techboostclark.com, 1 techbrawl.org, 1 techbridge.jp, 1 techbuz.net, 1 @@ -142840,7 +143350,6 @@ techcombank.com, 1 techcompany.tk, 1 techcracky.com, 1 techcu.lt, 1 -techcube.fr, 1 techcult.com, 1 techcultivation.de, 0 techcultivation.net, 0 @@ -142850,17 +143359,16 @@ techday.co.nz, 1 techday.co.uk, 1 techday.com, 1 techday.com.au, 1 -techday.ie, 1 techday.in, 1 techdayca.com, 1 techdirt.com, 1 techdocscove.xyz, 1 techdoms.tk, 1 techdracula.com, 1 +techeasyblog.com, 1 teched-creations.com, 1 techexeter.uk, 1 techexpert.tips, 1 -techfacts.de, 1 techfibian.tk, 1 techfinancials.co.za, 1 techformator.pl, 1 @@ -142903,18 +143411,18 @@ techjournal.org, 1 techkeep.tk, 1 techkentucky.tk, 1 techkilla.tk, 1 -techkos.com, 1 techlab.com.my, 1 techland.net, 1 techlearningcollective.com, 1 techlevel.org, 1 -techli.si, 1 techlit.pk, 1 +techlore.tech, 1 techlovers.com, 1 techlr.de, 1 techmagazine.tk, 1 techmagick.com, 1 techmahindrafoundation.org, 1 +techmaish.com, 1 techmammal.de, 1 techmanstan.com, 1 techmatter.tk, 1 @@ -142934,6 +143442,7 @@ technicalbikrammalati.tk, 1 technicalbrothers.cf, 1 technicalfiresolutions.com, 1 technicalforensic.com, 1 +technicalhelps.org, 1 technicalhub.tk, 1 technicalities.ca, 1 technicallyeasy.net, 1 @@ -142945,6 +143454,7 @@ technicalustad.com, 1 technician.academy, 1 technician.cn, 1 technicus.nl, 1 +technicv.com, 1 technikerle.at, 1 technikforum-backnang.de, 1 technikoma.com, 1 @@ -142956,10 +143466,9 @@ technikoma.social, 1 technikplanet.de, 1 techniqueelevage.ddns.net, 1 techniquetechs.com, 1 -technischeserviceassen.nl, 1 techno-utopia.com, 1 technoairlines.com, 0 -technoartstone.bg, 1 +technobaboy.com, 1 technocast.dz, 1 technochat.in, 1 technocracy.works, 1 @@ -142997,6 +143506,7 @@ technologyecho.tk, 1 technologyinformation.tk, 1 technologyintergrity.ga, 1 technologyjust.ga, 1 +technologylawdispatch.com, 0 technologylittle.ga, 1 technologymessenger.ga, 1 technologynewss.tk, 1 @@ -143018,7 +143528,7 @@ technopedia.gq, 1 technorthdakota.tk, 1 technosafebg.com, 1 technosapien.ml, 1 -technosoftware.com, 0 +technosoftware.com, 1 technospeakco.com, 1 technospiritindia.com, 1 technostone.tk, 1 @@ -143038,9 +143548,35 @@ technowiz.tk, 1 technoyl.com, 1 technubis.com, 1 techodesign.pro, 1 -techopr.com, 1 techpartes.com.br, 1 techpartneralliance.com, 1 +techpeer.al, 1 +techpeer.at, 1 +techpeer.be, 1 +techpeer.bg, 1 +techpeer.ch, 1 +techpeer.co.uk, 1 +techpeer.cz, 1 +techpeer.de, 1 +techpeer.dk, 1 +techpeer.ee, 1 +techpeer.es, 1 +techpeer.eu, 1 +techpeer.fr, 1 +techpeer.hu, 1 +techpeer.lt, 1 +techpeer.lu, 1 +techpeer.lv, 1 +techpeer.md, 1 +techpeer.me, 1 +techpeer.nl, 1 +techpeer.pl, 1 +techpeer.pt, 1 +techpeer.ro, 1 +techpeer.rs, 1 +techpeer.se, 1 +techpeer.si, 1 +techpeer.sk, 1 techpilipinas.com, 1 techpoint.org, 0 techpp.com, 1 @@ -143063,6 +143599,7 @@ techshift.nl, 1 techshift.se, 1 techshout.com, 1 techsite.tk, 1 +techsolus.io, 1 techsolvency.com, 1 techsoup.net.nz, 1 techstation.co.il, 1 @@ -143083,6 +143620,7 @@ techtwo.pl, 1 techunit.org, 1 techvaz.com, 1 techview.link, 1 +techvigil.org, 1 techvision.tk, 1 techvoice.tk, 1 techwalker.cf, 1 @@ -143096,10 +143634,13 @@ techwizard.it, 1 techwolf12.nl, 1 techzant.com, 1 techzero.cn, 1 +techzjc.com, 0 tecit.ch, 1 tecke.tk, 1 teckgeekz.com, 1 +tecklinks.com.pk, 1 tecknobox.fr, 1 +tecknologg.website, 1 teckprojects.com, 1 teckro.com, 1 tecmarkdig.com, 1 @@ -143162,6 +143703,7 @@ tedamos.at, 1 tedamos.com, 1 tedamos.de, 1 tedankara.k12.tr, 1 +teddax.com, 1 tedder.cc, 1 teddit.net, 1 teddybearsnextadventure.com, 1 @@ -143171,20 +143713,19 @@ teddywayne.com, 1 teddywp.com, 1 tedhardy.com, 1 tedirgin.tk, 1 -tedpac.xyz, 1 tedroche.com, 1 +tedscams.com, 1 tedscoffeecompany.com, 1 tedsdivingsystem.com, 1 tedsears.net, 1 -tedstevensarcticcenter.org, 1 tedt.org, 1 tedulearning.com, 1 tedxmarin.org, 1 tedxyalesecondaryschool.com, 1 tedyst.ro, 1 +tee-suche.de, 1 teechu.com, 1 teecketing.com, 1 -teedinsiam.com, 1 teefashionstar.com, 1 teehany.com, 1 teehar.com, 1 @@ -143193,7 +143734,6 @@ teekadeus.com, 1 teekaymedia.tk, 1 teeko.cc, 1 teektalk.org, 1 -teelam.com, 1 teemill.com, 1 teemo.gg, 1 teemo.love, 1 @@ -143214,6 +143754,7 @@ teensifynews.tk, 1 teenslesbian.com, 1 teenslikeitbig.com, 1 teenslovehugecocks.com, 1 +teentinytits.com, 1 teenusernames.com, 1 teenviet.ga, 1 teenwebcams.ml, 1 @@ -143261,6 +143802,7 @@ tehplace.club, 1 tehpod.com.ua, 1 tehrabbitt.com, 0 tehrankey.ir, 1 +tehranservicekaran.com, 1 teia.art, 1 teichroeb.net, 1 teier.eu, 1 @@ -143272,17 +143814,17 @@ teiph.online, 1 teiron.ml, 1 teiseken.tk, 1 teixobactin.com, 1 -tejasnetworks.com, 1 tejo.tk, 1 tejomaya.net, 1 +tek-el.ru, 1 teka.ro, 1 tekanswer.com, 1 -tekenkaart.nl, 1 tekila.cf, 1 tekila.ga, 1 tekila.tk, 1 tekingb.com, 0 tekirdagemlak.tk, 1 +tekittak.com, 1 tekkenzone.net, 1 tekmarc.com, 1 tekme.pt, 1 @@ -143299,23 +143841,22 @@ teknoforums.com, 1 teknoharekat.com, 1 teknokanguru.com.tr, 1 teknoleet.com, 1 -teknologipendidikan.biz.id, 1 teknologipendidikan.id, 1 teknologipendidikan.or.id, 1 teknomarko.com, 0 teknon.tk, 1 teknoparkistanbul.com.tr, 1 teknorix.com, 1 +teknoscienze.com, 1 teknow.tk, 1 -teknozilla.com.tr, 1 teko.se, 1 tekpon.com, 1 tekshrek.com, 1 teksnologi.com, 1 +tekson.com, 1 tekstover.tk, 1 tekstpesni.tk, 1 tektuts.com, 1 -tekushi.com, 1 tekyou.com.br, 1 teladochealth.dk, 1 telalresort.ae, 1 @@ -143336,7 +143877,6 @@ telconews.co.nz, 1 telconews.co.uk, 1 telconews.com, 1 telconews.com.au, 1 -telconews.ie, 1 telconews.in, 1 teldak.pt, 1 teldoop.my.id, 0 @@ -143344,7 +143884,6 @@ tele-alarme.ch, 1 tele-assistance.ch, 0 tele-points.net, 1 tele-teen.ru, 1 -tele.wiki, 1 tele2vaxel.se, 1 teleafrica.ga, 1 telealarme.ch, 0 @@ -143362,8 +143901,9 @@ telecharger-videos.com, 1 telecharger-winrar.com, 1 telechirkut.xyz, 1 telechnics.com.au, 1 -telecinesound.it, 0 +telecinesound.it, 1 teleclaro.com, 1 +teleclases.com, 1 telecom-sudparis.eu, 1 telecomarmenia.am, 1 telecommande-express.com, 1 @@ -143400,6 +143940,7 @@ telehealthventures.com, 0 telekollektiv.org, 1 telekom-mms.com, 1 telekomiker.tk, 1 +telekominfo.com, 1 telelog.ml, 1 telema.tk, 1 telemaco.tk, 1 @@ -143410,6 +143951,7 @@ telenco-networks.com, 1 telenovelas-france.tk, 1 telent.com, 1 teleogistic.net, 1 +teleoposiciones.es, 1 telepati.info, 1 telephonedirectories.us, 1 telephoni-cdma.tk, 1 @@ -143424,6 +143966,7 @@ teleportweb.com.br, 1 teleradio.ga, 1 teleradio.tk, 1 teleroute.com, 0 +telesales.guru, 1 teleshkronja.ml, 1 teleshop.be, 1 teleskell.org, 1 @@ -143495,6 +144038,7 @@ telugudesam.org, 1 tely360.com, 1 tema-q.com, 1 temaflex.tk, 1 +temaju.com, 1 temakel.com, 1 temariosoposiciones.tk, 1 tembusulaw.com, 1 @@ -143503,20 +144047,18 @@ temirgaliev.tk, 1 temis.nl, 1 temizim.com, 1 temizlik.ml, 1 +temizmama.com, 1 teml.in, 1 temnacepel.cz, 1 temnikova.tk, 1 -temogroup.net, 1 temoinfidele.fr, 1 temonews.org, 1 -temovision.com, 1 temp-lars.army, 1 temp.pm, 1 tempa.com.ua, 1 tempdomain.ml, 1 tempdomain.tk, 1 tempefestivalofthearts.com, 1 -tempelslangsdemaas.nl, 1 temperedglassncase.com, 1 temperodojuca.com.br, 1 tempestsoft.com, 1 @@ -143545,6 +144087,7 @@ temporalmotivation.com, 1 temporaryair.com, 1 temporaryfencehire.net.au, 1 temporarysanity.tk, 1 +temporarytattoosguru.com.au, 1 tempotravellerrentbangalore.in, 1 tempsoundsolutions.tk, 1 tempus-aquilae.de, 1 @@ -143562,7 +144105,6 @@ tenantacademy.co.za, 1 tenantcloud.com, 1 tenantoptions.com.au, 1 tenanttraining.co.za, 1 -tenarya.com, 1 tenber.ge, 1 tenberg.com, 1 tencent.xn--vuq861b, 1 @@ -143580,8 +144122,8 @@ tende.roma.it, 1 tender.run, 1 tendermint.com, 1 tenderned.nl, 1 -tenderradar.nl, 1 tenderwizard.com, 1 +tendiestown.com, 1 tendiris.ga, 1 tendmed.com.br, 1 tendo.com, 1 @@ -143597,13 +144139,12 @@ tenfeetsquare.net, 1 tenfingerscollective.tk, 1 tengdi.com, 1 tengodetodo.tk, 1 -tengoping.com, 1 tenhourguy.com, 1 tenibac.com, 1 tenibacgraphion.com, 1 -teniro.no, 1 tenismare.si, 1 tenispopular.com, 1 +tenisservis.eu, 1 tenjou-tenge.tk, 1 tenken1010.org, 1 tenkuru.moe, 1 @@ -143629,17 +144170,16 @@ tennisschoolchallenge.nl, 1 tennistalk.tk, 1 tennisweb.cf, 1 tenno.tools, 1 -tenoftheday.de, 1 tenon-backup.com, 1 tenrod.com.au, 1 -tenryo.work, 0 +tenryo.work, 1 tenshindo.ne.jp, 1 tenshoku-hanashi.com, 1 tenshokudo.com, 1 tenshokufair.jp, 1 tensor.trade, 0 -tensure.io, 1 tent.io, 1 +tenta.com, 1 tentacle.monster, 1 tentacle.net, 1 tentacletank.com, 1 @@ -143651,21 +144191,21 @@ tenthousandcoffees.com, 1 tentinger.co, 1 tentou.com, 1 tentrentals.com, 1 +tentries.com, 1 tentsforsale.com, 1 tenue-traditionnelle.fr, 1 tenyx.de, 1 tenzan.com, 1 tenzer.dk, 1 -tenzorpro.com, 0 -teoitaly.com, 1 +tenzorpro.com, 1 +teoassessoria.com.br, 1 +teodorpravicky.com, 1 teoletextsq.tk, 1 -teolino.eu, 1 teologia.promo, 0 teomahk.de, 1 teoria.com, 1 teoriespiknuti.cz, 1 teoskanta.fi, 1 -teouk.com, 1 tep.com, 1 tepautotuning.com, 1 tepco2021.com, 1 @@ -143673,10 +144213,9 @@ tepid.org, 1 teplici-crimea.ru, 1 teplo-russia.ru, 0 teplo-unit.ru, 1 +teplohod.kharkov.ua, 1 teplomash24.ru, 1 teplotehnik.tk, 1 -teplovizor.info, 1 -tepokbulubdg.my.id, 1 teppelin.fr, 1 teppichpracker.at, 1 tepui.io, 1 @@ -143687,7 +144226,6 @@ tequilaavion.com, 1 tequilamessenger.com, 1 tequilazor.com, 1 terabyte.services, 1 -terabyte.systems, 1 terabyteharddrive.net, 1 teracloud.at, 1 teradatta.ga, 1 @@ -143745,6 +144283,7 @@ termitinitus.org, 1 termius.com, 1 termografiranje.si, 1 termoidraulica.roma.it, 1 +termoidraulicadariol.it, 1 termoidraulico.milano.it, 1 termoidraulico.roma.it, 1 termoline.by, 1 @@ -143763,7 +144302,7 @@ terosclient.de, 1 terovania.com, 1 terovania.de, 1 terpelpanama.com, 1 -terpotiz.net, 1 +terpotiz.net, 0 terra-di-mezzo.it, 1 terra-med.ga, 1 terra-x.net, 1 @@ -143778,6 +144317,7 @@ terracom.gr, 1 terracycle.ca, 1 terracycle.com, 1 terracycle.nl, 1 +terradotta.com, 1 terraesencial.com, 1 terrafinanz.de, 1 terrafinastore.com, 1 @@ -143791,12 +144331,13 @@ terrancetalkstravel.com, 1 terraneesens.fr, 1 terranimo.re, 1 terranostra-gardenhotel.com, 1 -terranova-nutrition.dk, 1 terrapay.com, 1 terraquercus.tk, 1 terrariatr.tk, 1 terrarium.tk, 1 terraroc.ro, 1 +terrasandcooking.nl, 1 +terrasandcookingoutdoor.nl, 1 terrascapeslandscape.com, 1 terrascend.com, 0 terrasearcher.tk, 1 @@ -143809,13 +144350,16 @@ terraverdegrupo.com.br, 1 terraweb.net, 1 terrax.net, 1 terrelltx.gov, 1 +terremetisagency.com, 1 terremoto.com.br, 1 terrenal.tk, 1 terrenasparadise.com, 1 terrenosparainvertir.com, 1 terres-et-territoires.com, 1 terresmagiques.com, 0 +terrexllc.com, 1 terrimcaleerphotography.com, 1 +terriscope.com, 1 territoriesredress.gov.au, 1 territoriocuchero.tk, 1 territoriya-msk.ru, 1 @@ -143828,7 +144372,6 @@ terrorism.lol, 1 terrty.net, 1 terryberry.com, 1 terryburton.co.uk, 1 -terrycho.net, 1 terryoconnor.org, 1 terrysfreegameoftheweek.com, 1 terryturnipseed.com, 0 @@ -143849,7 +144392,6 @@ tescomobile.cz, 1 tesdrole.tk, 1 teselta.com, 1 teseo.kz, 1 -tesheating.com, 1 teshuzi.com, 1 tesil.am, 1 teskalabs.com, 1 @@ -143873,12 +144415,10 @@ test-privacyportal-ui.azurewebsites.net, 1 test-ravkavonline.co, 1 test-regressplattform.ch, 1 test-school.ml, 1 -test-sdbidentity.nl, 1 test-software.net, 1 test-textbooks.com, 1 test-verz.online, 1 test.de, 1 -test.sn, 1 test.support, 1 test1-isrewards.com, 1 test1974.nl, 1 @@ -143953,6 +144493,7 @@ testrack.com, 1 tests-and-tips.info, 1 tests-und-tipps.info, 1 tests.careers, 1 +tests.pp.ru, 1 tests.school, 1 tests.tips, 1 testscorpiogroup.net, 1 @@ -143974,6 +144515,7 @@ tether.com, 1 tethercasinos.io, 1 tetherkr.com, 1 tetherqr.com, 1 +tethys.fr, 1 tetonas.tk, 1 tetonka.ch, 1 tetorix.gq, 1 @@ -143987,15 +144529,18 @@ tetracyclin.tk, 1 tetracycline500mg.ga, 1 tetramax.eu, 1 tetrapak.com, 1 +tetrarch.co, 1 tetrimus.com, 1 +tetryyn.com, 1 +tetsudo.jp.net, 1 tetsumaki.net, 1 tetweb.ir, 1 -teu-fel.com, 1 teufel-cloud.ddns.net, 1 teufel.de, 1 teufelaudio.nl, 1 teufelswerk.net, 0 teulon.eu, 1 +teungedj.de, 1 teunmulder.tk, 1 teunstuinposters.nl, 1 teusink.eu, 1 @@ -144006,7 +144551,6 @@ teutonia08.de, 1 teva.ru, 0 teveblad.be, 1 teverzamelen.nl, 1 -tevhidmeali.com, 1 tewarilab.co.uk, 1 tewkesburyyoga.com, 1 tex-izol.ru, 1 @@ -144022,23 +144566,23 @@ texascourtreporter.com, 1 texascourtreporters.com, 1 texascredit.com, 1 texasdefender.org, 1 -texasdesignstudio.com, 1 texasdivorceforall.com, 1 texasgynecomastia.com, 1 texashealthtrace.gov, 1 +texasintegratedservices.com, 1 texasnewsusa.tk, 1 texasonesource.com, 1 texasonlinedivorce.com, 0 -texasonlinemarriagecounseling.com, 0 +texasonlinemarriagecounseling.com, 1 texaspaintingandgutters.com, 1 texasparkinglotstriping.com, 1 texaspaversoutdoorliving.com, 1 texasprosgaragedoors.com, 1 texasready.gov, 1 texasschools.us, 1 +texasscrapiron.com, 1 texasteam.tk, 1 texastitlesearch.com, 1 -texasturfcourts.com, 1 texasvolunteerattorneys.org, 1 texaswinetrail.com, 1 texby.com, 1 @@ -144062,13 +144606,14 @@ textassistant.ga, 1 textcleaner.net, 1 textcounter.tk, 1 texteditor.co, 1 +textencrypted.com, 1 texter-linz.at, 1 +textieldiscounter.nl, 1 textil-kyoto.tk, 1 textiles.bg, 1 textiles.tk, 1 textilstore.de, 1 textlinktausch.tk, 1 -textme26.site, 1 textonly.email, 1 textpages.tk, 1 textpattern.com, 1 @@ -144110,6 +144655,8 @@ tf2pickup.web.tr, 1 tf7879.com, 1 tfadictivo.com, 1 tfaforms.com, 1 +tfapass.com, 1 +tfapass.eu, 1 tfb.az, 1 tferdinand.net, 1 tfff.org, 1 @@ -144133,7 +144680,6 @@ tfw-a.com, 1 tfx.com.br, 1 tfxstartup.com, 1 tfxstartup.com.br, 1 -tfyou.co, 1 tfyre.co.za, 1 tg-servce-timesheet.azurewebsites.net, 1 tg.pe, 1 @@ -144141,10 +144687,11 @@ tg2sclient.com, 1 tgb.org.uk, 1 tgcfabian.nl, 1 tgcgrain.com, 1 +tgchambers.com, 1 tgexport.eu, 1 tghez.net, 1 tglbbs.com, 0 -tgo-solutions.be, 0 +tgo-solutions.be, 1 tgo6688.com, 0 tgo8899.com, 1 tgoaa.com, 1 @@ -144167,6 +144714,8 @@ th.search.yahoo.com, 0 thablubb.de, 1 thackba.de, 1 thackert.myfirewall.org, 1 +thadeie.gov.tt, 1 +thadert.com, 1 thai-massage.tk, 1 thai-residence.com, 1 thai-ridgeback.tk, 1 @@ -144176,6 +144725,7 @@ thai369.com, 1 thaibizsingapore.com, 0 thaiblanket.com, 1 thaiboystory.ga, 1 +thaicurry.net, 1 thaiforexfamily.com, 1 thaigirls.cf, 1 thaihomecooking.com, 1 @@ -144199,6 +144749,7 @@ thaiportal.gq, 1 thais.tk, 1 thaislots.online, 1 thaisurveys.com, 1 +thaitonic.de, 1 thaiunion.com, 1 thaiwatsadu.com, 1 thaiwrestling.tk, 1 @@ -144216,7 +144767,6 @@ thalikkunushivatemple.tk, 1 thalliman.com, 1 thallorion-messenger.ru, 1 thalmann.fr, 0 -thamaka.com, 1 thamesvalleybuses.com, 1 thammachartconnect.com, 1 thammysen.vn, 1 @@ -144224,12 +144774,14 @@ thanatoid.net, 1 thancon.com, 1 thanhnhua.vn, 1 thanhtrungmobile.vn, 1 -thankspenny.com, 0 +thankspenny.com, 1 thantra.tk, 1 thapduoc.com, 1 tharahkardu.in, 1 -tharra.sa, 1 +tharuka.com, 1 +tharuka.de, 1 thaserv.de, 1 +thassoc.com, 1 thassos-world-web.tk, 1 thassos.tk, 1 that.host, 1 @@ -144249,15 +144801,21 @@ thaw.systems, 1 thawte.com.ru, 1 thax.cn, 1 thaxton.xyz, 0 -thbl.fr, 1 thca.ca, 1 +thcdachs.com, 1 +thcdachs.de, 1 +thcdachs.eu, 1 +thcdachs.info, 1 +thcdachs.org, 1 thcdax.com, 1 thcdax.de, 1 +thcdax.eu, 1 +thcdax.info, 1 +thcdax.org, 1 the-ace.tk, 1 the-allmighty-mike.tk, 1 the-archive.io, 1 the-archive.ml, 1 -the-asset.de, 1 the-azad.com, 1 the-big-bang-theory.com, 1 the-brandidentity.com, 1 @@ -144315,6 +144873,7 @@ theacademicpapers.co.uk, 1 theacc.com, 1 theaccountant-online.com, 1 theaccountingcompanyleeds.co.uk, 1 +theaceblock.space, 1 theactivationfunction.com, 1 theactuary.ninja, 1 theadamsonchronicle.tk, 1 @@ -144323,7 +144882,6 @@ theadelaideshow.com.au, 1 theadpharm.com, 0 theads.agency, 1 theads.net, 1 -theads.ro, 1 theadultswiki.com, 1 theadventuresofdaisy.com, 1 theafleo.ga, 1 @@ -144335,6 +144893,7 @@ theaiqms.com, 1 theajwatson.com, 1 thealbionrooms.live, 1 thealchemistatelier.com, 1 +thealeph.com, 1 theallmanteam.com, 0 thealmoners.com, 1 thealonas.cf, 1 @@ -144342,6 +144901,7 @@ thealonas.ga, 1 thealonas.gq, 1 thealonas.ml, 1 thealonas.tk, 1 +thealtaconferences.com, 1 theamandatappingclub.tk, 1 theamandatappingcontest.tk, 1 theamegroup.com, 1 @@ -144366,9 +144926,7 @@ thearches.co.uk, 1 thearchimag.tk, 1 thearctichideaway.com, 1 thearkfamily.org, 1 -thearnabsen.com, 1 -theartofcharm.com, 1 -theasciiway.com, 1 +thearmchairtrader.com, 0 theasianshooters.com, 1 theastrocoach.com, 1 theataraxia.tk, 1 @@ -144403,6 +144961,7 @@ thebabelog.ga, 1 thebabelog.gq, 1 thebabiest.com, 1 thebabypassport.com, 1 +thebackdoor.co.za, 1 thebacksplashcompany.com, 1 thebackstage.tk, 1 thebacteriafight.gq, 1 @@ -144413,9 +144972,9 @@ thebalancedsystem.org, 1 theballardpier.com, 1 thebalvenie.com, 1 thebamplayer.de, 1 -thebanksloganriver.com.au, 1 thebannekerfoundation.org, 1 thebannerstore.com, 1 +thebanquethub.com, 1 thebasementdefender.com, 1 thebasementdefender.net, 1 thebasicstudio.com, 1 @@ -144424,9 +144983,9 @@ thebathroomexchange.ga, 1 thebatt.com, 1 thebaytalland.com, 1 thebcm.co.uk, 1 -thebeatyard.nl, 0 +thebeatyard.nl, 1 +thebeaulife.co, 1 thebeautifuledge.com, 1 -thebeautyofmilk.com, 1 thebeautyqueen.tk, 1 thebedfordcitizen.org, 1 thebeef.info, 1 @@ -144482,6 +145041,7 @@ theblogstarter.com, 1 theblondeabroad.com, 0 theblue.tk, 1 thebluebanner.net, 1 +theblueprint.global, 1 thebluered.net, 0 theblueroofcottage.ca, 1 thebluewindowdesigns.com, 1 @@ -144496,11 +145056,12 @@ theboats.pro, 1 thebobcoin.io, 1 thebodylanguageguide.tk, 1 thebodyshop.bg, 1 -theboltway.com, 0 +theboltway.com, 1 thebondyapp.com, 1 thebonerking.com, 1 thebook.pro, 1 thebookishhistorian.com, 1 +thebookstar.bg, 1 thebosshub.net, 1 thebouncedepartment.co.uk, 1 theboxofcarlos.com, 1 @@ -144522,7 +145083,6 @@ thebrightons.uk, 1 thebritishlibraryinstallation.com, 1 thebritishtapestrygroup.co.uk, 1 thebroadcastknowledge.com, 1 -thebrochuredesign.com, 1 thebrookeb.com, 1 thebrookfinance.com, 1 thebryancarwash.com, 1 @@ -144545,15 +145105,16 @@ thebutton2.com, 1 thebuttonpost.com, 1 thecabinetstore.com, 1 thecakeboxhampton.co.uk, 1 +thecaliberexchange.com, 1 thecalifornias.tk, 1 thecallingofmoses.com, 1 thecalmnessofblankspace.tk, 1 thecamels.org, 1 thecampanile.org, 1 +thecandidforum.com, 1 thecandystore.tk, 1 thecapital.pl, 1 thecardcloset.com, 1 -thecarddesign.com, 1 thecaregiverfoundation.org, 1 thecarletonian.com, 1 thecarolingconnection.com, 1 @@ -144571,6 +145132,7 @@ thecaviarfarm.com, 1 thecelticfiles.tk, 1 thecentraltrend.com, 1 theceocollective.com, 1 +thecfef.org, 1 thechaikinreport.com, 1 thechallenge.fit, 1 thechannels.org, 1 @@ -144602,6 +145164,7 @@ theclockdepot.com, 1 theclonker.de, 0 thecloroxcompany.com, 1 thecloudadmin.eu, 0 +theclubcompany.com, 1 thecnstore.com, 1 thecoffeecamp.com, 1 thecoffinshop.co.nz, 1 @@ -144620,14 +145183,15 @@ thecondemned.tk, 1 theconsultant.jp, 1 theconsultingpeople.tk, 1 theconversation.com, 1 +theconverter.net, 0 theconveyer.org, 1 thecook.com.co, 1 thecookiewriter.com, 1 thecoredublin.tk, 1 +thecorianderkitchen.com, 1 thecostymusic.tk, 1 thecotsworth.com, 1 thecougarpress.org, 1 -thecouplesroom.com, 1 thecoverlot.com, 1 thecovky.gov, 1 thecowboy.cafe, 1 @@ -144640,16 +145204,19 @@ thecrazytravel.com, 1 thecrcconnection.com, 1 thecreditpros.com, 1 thecrew-exchange.com, 1 +thecrewunlimited.ru, 1 thecrimson.tk, 1 thecrimsonwhite.com, 1 thecrite.com, 1 thecronosgroup.com, 1 thecskr.in, 1 thecstick.com, 1 +thecubepsych.com, 1 thecultureclubhouse.com, 1 thecup.us, 1 thecureplainsong.tk, 1 thecurvyfashionista.com, 0 +thecustomdroid.com, 1 thecustomizewindows.com, 1 thecyberwire.com, 1 thecyclistchoice.com, 1 @@ -144658,7 +145225,7 @@ thedaily.de, 1 thedailybloon.tk, 1 thedailydunk.co, 1 thedailyexercise.com, 1 -thedailylives.com, 1 +thedailylives.com, 0 thedailyreporteronline.com, 1 thedailyupvote.com, 1 thedaimon.cn, 1 @@ -144677,6 +145244,7 @@ thedave.me, 1 thedave.photos, 1 thedawningofdarkness.tk, 1 thedayimetjesus.com, 1 +thedealerapp.co.uk, 1 thedeathmachine.tk, 1 thedeathofannakarina.tk, 1 thedebug.life, 1 @@ -144688,11 +145256,13 @@ thedenisehamilton.com, 1 thedermdetective.com, 1 thedev.id, 1 thedevastatedrealm.tk, 1 +thedevilwearswibra.nl, 1 thedevrycommonsbrasil.com, 0 thediamondapp.com, 1 thediamondfinery.com, 1 thedickinsonian.com, 1 thedietsolutionprog.tk, 1 +thedigitaldepartment.ie, 1 thedigitalparadox.tk, 1 thediligentwoman.com, 1 thedinnerdetective.com, 1 @@ -144718,13 +145288,11 @@ thedronechart.com, 1 thedroneely.com, 1 thedronevortex.com, 1 theduchessbudapest.com, 1 -thedumpsterrentaltoday.com, 1 thedysfunctionalangel.cf, 1 thedysfunctionalangel.ga, 1 thedysfunctionalangel.gq, 1 thedysfunctionalangel.ml, 1 theeagle.com, 1 -theeastcoastkitchen.com, 1 theebookkeepers.co.za, 1 theeducatoronline.com, 1 theeffingyogablog.com, 1 @@ -144736,15 +145304,19 @@ theeldritchhounds.cf, 1 theeldritchhounds.gq, 1 theeldritchhounds.ml, 1 theelephant.info, 1 +theeliteneet.com, 1 theemeraldmagazine.com, 1 theemployeeapp.com, 1 theemploymentnetworkcla.com, 1 +theemptyvault.com, 1 theender.net, 1 theendpoem.com, 1 theepankar.com, 1 theepicstorm.com, 1 theescapegame.com, 0 +theestateplanninggroup.com, 1 theestatesatstgeorge.com, 1 +theesuhlmann.de, 1 theeuropeanlibrary.org, 1 theevergreen.me, 0 theeverydayprepper.com, 1 @@ -144761,6 +145333,7 @@ thefairytale.tk, 1 thefallen.tk, 1 thefamilygarrison.com, 1 thefamilyhelpnetwork.ca, 1 +thefancho.com, 1 thefandomshow.com, 1 thefanscotian.com, 1 thefantasyrooms.com, 1 @@ -144785,8 +145358,9 @@ theflashback.co.uk, 1 theflatrestaurant.com, 1 theflesh.tk, 1 theflexerzone.ga, 1 +theflowerapothecary.com, 0 +theflowershopdeddington.com, 1 theflowstudios.com, 1 -theflyerdesign.com, 1 theflyingbear.net, 0 theflyingdutch.tk, 1 thefnafarchive.org, 1 @@ -144801,7 +145375,6 @@ thefox.com.fr, 1 thefoxai.com, 1 thefoxblog.net, 1 thefoxmagazine.com, 1 -thefragranceshop.ca, 1 thefranchiseking.com, 1 thefranklinnewspost.com, 1 thefreebay.tk, 1 @@ -144838,6 +145411,7 @@ thegarvisgroup.com, 1 thegasshop.co.uk, 1 thegatewaydigital.com, 1 thegatewaytoanewworld.com, 1 +thegeeklab.de, 0 thegemriverside.com.vn, 1 thegeniusdz.tk, 1 thegentleman.tk, 1 @@ -144846,6 +145420,7 @@ thegermancoder.com, 1 thegerwingroup.com, 0 thegetaway.com, 1 theghostlytavern.com, 1 +thegiantmovers.ae, 1 thegiantsdream.tk, 1 thegigr.org, 1 thegildedthistle.com, 1 @@ -144857,15 +145432,19 @@ thegioicovua.com, 1 thegioidulich.com.vn, 1 thegioigheluoi.vn, 1 thegioinguyenlieuphache.vn, 1 +theglencoetorah.com, 1 theglobalwin.com, 1 theglowclinic.nl, 1 thego2swatking.com, 1 thegoalinc.co.jp, 1 thegolden.com, 1 +thegoldengild.com, 1 thegoldenpreference.com, 1 thegoodboat.com, 1 +thegooddeal.shop, 1 thegoodegg.ie, 1 thegoodinside.com, 1 +thegoodplace.ma, 1 thegoodplugin.com, 1 thegoodveggie.com, 1 thegoodvybe.ml, 1 @@ -144894,10 +145473,10 @@ thegroovecartel.com, 1 thegrotto.tk, 1 thegroupinc.com, 1 thegrovela.com, 1 +thegrs.com, 0 theguerrilla.agency, 0 thegungrabber.ca, 1 thegungrabber.com, 1 -theguttercenter.com, 1 thegvoffice.net, 1 thegymnasium.com, 0 thegypsythread.org, 1 @@ -144925,9 +145504,7 @@ theheadplug.tk, 1 thehealinghorse.com, 1 thehealthshed.nl, 1 theheatingoilclub.co.uk, 1 -theheightsdurack.com.au, 1 thehelper.tk, 1 -thehideoutrestaurant.com, 0 thehillstx.gov, 1 thehiltonfirm.tk, 1 thehinesgaphideaway.com, 1 @@ -144960,7 +145537,6 @@ thehumanizer.tk, 1 thehumanjoint.com, 1 thehumorist.tk, 1 thehustle.co, 1 -thei.rs, 1 theia-ide.com, 1 theia-ide.eu, 1 theiaglasses.com, 1 @@ -144971,6 +145547,7 @@ theimagefile.com, 1 theimaginationagency.com, 0 theimagroup.com, 1 theimpactnews.com, 1 +theimperfective.com, 1 theinboxpros.com, 1 theindependent.ca, 0 theindependent.com, 1 @@ -144989,9 +145566,12 @@ theintercept.com, 0 theinternationalgeekconspiracy.eu, 1 theinvisibleman.tk, 1 theislandwellness.com, 1 +theisopurecompany.com, 1 theissen.io, 1 theisthelpline.com, 1 theithacan.org, 1 +theitsage.com, 0 +theivybuckhead.com, 1 theixiangrand.gr, 1 thejacksoninstitute.com.au, 1 thejakartapost.com, 1 @@ -145003,10 +145583,10 @@ thejobhackers.org, 1 thejoneshub.com, 1 thejonsey.com, 0 thejoykiller.tk, 1 +thejpegstudio.com, 1 thejukebox.tk, 1 thejunkfiles.com, 1 thekalakriti.tk, 1 -thekamababa.com, 1 thekenyatimes.com, 1 thekev.in, 1 thekickassvirtualassistant.nl, 1 @@ -145022,9 +145602,10 @@ thekittivibe.com, 1 thekliniquehotdeal.com, 1 theknockout.tk, 1 theknockoutchampionship.com, 1 -theknowitguy.com, 0 +theknowitguy.com, 1 thekochampionship.com, 1 thekodaichronicle.com, 1 +thekolye.com, 1 thekonsulthub.tk, 1 thekuwayama.net, 1 thelakedistrict.tk, 1 @@ -145045,16 +145626,14 @@ thelatinbrothers.ch, 1 thelaurelchiropractor.com, 1 thelawyermag.com, 1 thelazyfox.xyz, 1 -theleadleft.com, 1 -theleafletdesign.com, 1 theleaksbay.com, 1 thelearninggardener.com, 1 -theleasebureau.com.au, 1 theleaves.tk, 1 thelegionshirley.co.uk, 1 thelematics.com, 1 thelemonlawcalifornia.com, 0 thelencystore.com, 1 +thelevelman.com, 1 thelevelsfinancial.co.uk, 1 thelewispartnership.co.uk, 1 thelibertinephilosophy.ga, 1 @@ -145068,7 +145647,6 @@ thelinknews.net, 1 thelinuxspace.com, 1 thelionworksop.co.uk, 1 thelittlepeartree.eu, 1 -thelittlepoland.com, 0 thelocals.ru, 1 thelocalsessions.com, 1 thelockerroom.ie, 1 @@ -145085,6 +145663,8 @@ thelordofthewing.ga, 1 thelordofthewing.gq, 1 thelordofthewing.ml, 1 thelordsofthefallen.com, 1 +thelosangelesconservative.com, 1 +thelostroot.com, 1 thelounge.chat, 1 theloveequation.com, 1 theloves.com, 1 @@ -145137,12 +145717,12 @@ themetropreneur.com, 1 themexicos.tk, 1 themexx.at, 1 themiamimarathon.com, 1 +themidaskiss.com, 1 themify.me, 1 themify.org, 1 themigraineinstitute.com, 1 themilanlife.com, 1 themilfmovies.com, 1 -themilnermethod.co.uk, 1 themindcollection.com, 1 themindcompany.com, 1 theminimalistentrepreneur.com, 1 @@ -145151,11 +145731,6 @@ themirc.tk, 1 themissionman.com, 1 themizellbrothers.tk, 1 themlmsuccessnow.tk, 1 -themo.app, 1 -themo.dev, 1 -themo.group, 1 -themo.host, 1 -themo.studio, 1 themobileinterview.com, 1 themodel.ie, 1 themodernreviewer.ga, 1 @@ -145176,8 +145751,8 @@ themprojects.com, 1 themrtaik.it, 1 themsuspokesman.com, 1 themtwashingtongroup.com, 1 +themurrayfamily.me.uk, 1 themusecollaborative.org, 1 -themuseexperience.nl, 1 themusicofchrisbulman.tk, 1 themusicthatnobodylikes.tk, 1 themusicuk.com, 1 @@ -145213,12 +145788,15 @@ thenichecast.com, 1 thenine.info, 1 theninenine.com, 1 thenobullshit.coach, 1 +thenocman.com, 1 thenolank.com, 1 thenordly.com, 1 thenorthschool.org.uk, 1 thenorthwindonline.com, 1 thenowheremen.com, 1 thenrdhrd.nl, 1 +thenudge.com, 1 +thenutritionalreset.ca, 0 thenviews.com, 1 theo.agency, 0 theo.me, 1 @@ -145230,7 +145808,6 @@ theobg.co, 1 theobmcircle.com, 1 theobromos.fr, 0 theoc4ever.tk, 1 -theoceaned.com, 1 theocharis.org, 1 theocjournal.tk, 1 theocoffee.com, 0 @@ -145241,6 +145818,7 @@ theocrazzolara.tk, 1 theodorahome.co, 1 theodorahome.com.br, 1 theodoreroosevelt.org, 1 +theofficeofangelascott.com, 1 theoffsetbinary.co.in, 1 theofleck.com, 0 theokouzelis.com, 1 @@ -145267,6 +145845,7 @@ theorchestranow.com, 1 theorchestranow.org, 1 theorganicrecycler.com, 1 theorganist.org, 1 +theoriecheck.de, 1 theoriginalassistant.com, 1 theoriginalcandid.com, 1 theoriginalmarkz.com, 1 @@ -145302,6 +145881,8 @@ theparoxetine.gq, 1 theparticipants.tk, 1 thepartner.co.uk, 1 thepartydoctors.co.uk, 1 +thepassiveplan.com, 1 +thepatchworks.org, 1 thepathsofdiscovery.com, 1 thepaul.tk, 1 thepavilionbanbury.co.uk, 0 @@ -145351,6 +145932,7 @@ thepokerbank.com, 1 thepokerforum.com, 1 thepokerpeople.com, 1 thepoliticsofpesticides.com, 1 +thepollitochicken.com, 1 thepool.tk, 1 thepopcornfactory.com, 1 theportalbroker.com, 1 @@ -145358,7 +145940,6 @@ theportlandcrystalcompany.com, 1 theportlandinnproject.com, 1 thepostflow.com, 1 thepowerboys.tk, 1 -thepowerdistrict.com, 1 theprairienews.com, 1 thepreachersportal.org, 1 thepressroom.com, 1 @@ -145369,7 +145950,6 @@ thepriesthouse.co.uk, 1 theprimegroup.ca, 1 theprimepr.in, 1 theprinceshort.tk, 1 -theprivacy.com.br, 1 theprivacysolution.com, 1 theprivatetherapyclinic.co.uk, 1 theprodigaljournal.com, 1 @@ -145382,19 +145962,16 @@ theprospectordaily.com, 1 theprowlernews.org, 1 thepsi.com, 0 theptclist.tk, 1 -thepuffprof.com, 1 thepulicegroup.com, 1 thepulpit.tk, 1 thepuppetdolls.tk, 1 thepureplan.com, 1 thepurplechickens.tk, 1 -thepursuitfitnesswi.com, 1 thepuzzles.eu.org, 1 thepyre.tk, 1 thepyrographytool.com, 1 theqrl.org, 1 theqtree.com, 1 -thequeensarms.com, 1 thequillmagazine.org, 1 thequintessentialcake.com, 1 theracket.club, 1 @@ -145418,14 +145995,14 @@ therapiepraxis-westbezirk.de, 1 therapyclient.com, 1 therapyequipment.co.uk, 1 therapyforblackmen.org, 0 +therapyglobe.com, 1 therapynotes.com, 1 therapypartner.com, 1 therapyportal.com, 1 -therapypracticesolutions.com, 1 therapysearch.com, 1 therapyservices.co.nz, 1 therapysxm.com, 0 -therapyworks.com, 0 +therapyworks.com, 1 therasmusgt.tk, 1 therasmusperu.tk, 1 theravada.tk, 1 @@ -145453,7 +146030,6 @@ therenegade.tk, 1 thereptiles.tk, 1 theresa-mayer.eu, 1 theresapolicewi.gov, 1 -thereservetownsville.com.au, 1 theresingles.tk, 1 therestaurantstore.com, 1 theresumeapp.com, 0 @@ -145467,6 +146043,8 @@ therevolutionist.tk, 1 therhetorical.ml, 0 therhodesresidences.com, 1 therichardsfamily.tk, 1 +theriderchronicle.com, 1 +therightmeal.nl, 1 therigy.com, 1 therigy.net, 1 theriverspecialist.com, 1 @@ -145474,7 +146052,6 @@ therlyn.info, 1 thermacon.com.au, 0 thermalbad-therme.de, 1 thermalitowsca.gov, 1 -thermentausch-gwhs.at, 1 thermique.ch, 0 thermity.com, 0 thermolamina.nl, 1 @@ -145496,12 +146073,12 @@ therohotel.com, 1 therokasshow.tk, 1 theroks.com, 1 theromexchange.com, 1 -theronx.com, 1 therootdental.com, 1 theros.org.uk, 1 theroyal.tk, 1 theroyalyacht.com, 1 theruleslawyer.net, 1 +therulybully.com, 1 therumfordcitizen.com, 0 therunawayspremiere.tk, 1 theruncibleraven.com, 1 @@ -145516,11 +146093,13 @@ thesafetymag.com, 1 thesage.cf, 1 thesage.ga, 1 thesagresapartments.com, 1 +thesaltpacketguy.com, 1 thesandb.com, 1 -thesarogroup.com, 1 +thesarogroup.com, 0 thesashcompany.com.au, 1 thesatriantoshow.tk, 1 thesaturdaypaper.com.au, 1 +thesaunalife.com, 1 thescarlet.org, 1 thesceneawards.com, 1 thescienceofdeduction.tk, 1 @@ -145537,9 +146116,10 @@ theseed.io, 1 theseedbox.xyz, 1 thesehighsandlows.com, 1 thesemisouthernhomemaker.com, 1 +theseofarm.com, 1 theseoframework.com, 1 theseosystem.com, 1 -theserenenook.com, 1 +theseotool.site, 1 theserpent.tk, 1 theserver.ml, 1 theserver201.tk, 1 @@ -145551,7 +146131,6 @@ theseymourowl.com, 1 theshahnameh.com, 1 theshaker.com.au, 1 thesharedbrain.ch, 0 -theshedgamer.com, 1 theshesuite.com, 1 theshopally.com, 1 theshots.cz, 1 @@ -145578,15 +146157,11 @@ thesissurvey.gq, 1 thesistraffic.com, 1 thesiterank.com, 1 theskincourse.com, 1 -theskippingbeats.com, 1 thesleepdoctor.com, 0 theslotz.com, 1 theslotz1.co, 1 theslotz1.uk, 1 -theslowtravelplanner.com, 1 thesmartconsumer.com, 1 -thesmexperiences.com, 1 -thesocialcopywriter.com, 1 thesocialitefamily.com, 0 thesocialmediacentral.com, 1 thesocialsyndicate.com, 1 @@ -145597,23 +146172,23 @@ thesoundstageatstrangeland.com, 1 thesouthern.com, 0 thesoutherneronline.com, 1 thesouthfirst.com, 1 +thesovereigns.xyz, 1 thespacegame.tk, 1 -thespacommons.com, 1 thespanishcollection.com, 1 thespanishcollection.es, 1 -thespcc.org.uk, 1 thespiritfm.tk, 1 thespittake.com, 1 thespoiler.co.il, 1 thestandards.tk, 1 thestatementjewelry.com, 1 +thesteins.org, 0 thestellahouse.com, 1 -thestinkingship.com, 1 thestockoasis.com, 1 thestonestudio.in, 1 thestopoff.tk, 1 thestoragebay.co.uk, 1 thestore.tk, 1 +thestorydepartment.com, 1 thestral.pro, 1 thestralbot.com, 1 thestrangenessofthings.tk, 1 @@ -145635,7 +146210,6 @@ thesupersunday.tk, 1 thesuppercircle.com, 1 thesupportplatform.org.uk, 1 thesurgeons.sg, 1 -thesustainabilityalliance.us, 1 theswanstation.tk, 1 theswanwindsor.co.uk, 1 theswissbay.ch, 0 @@ -145661,6 +146235,7 @@ thethreepercent.marketing, 1 thethymevortex.zapto.org, 1 theticker.org, 1 thetimdowling.co, 1 +thetimehotels.com, 1 thetinylife.com, 1 thetipo.eu, 1 thetipo.it.eu.org, 1 @@ -145678,11 +146253,11 @@ thetradinghall.com, 0 thetrafficgeek.com, 1 thetravel.com, 1 thetravelczar.com, 1 -thetravelerspersona.com, 1 thetravelhack.com, 0 thetravelingbudget.com, 1 thetravelshop.com, 1 thetravelstylist.nl, 1 +thetreeradio.com, 1 thetrendspotter.net, 1 thetropics.tk, 1 thetrulycharming.com, 0 @@ -145704,6 +146279,7 @@ theunderzone.tk, 1 theuneundtheune.de, 0 theunfolder.com, 1 theuniqueform.com, 1 +theunitedstates.tk, 1 theuniversallover.tk, 1 theuniversitiesofasia.ga, 1 theunleashedpet.com, 1 @@ -145721,7 +146297,6 @@ thevalleys.band, 1 thevaluehub.be, 1 thevalueofarchitecture.com, 1 thevanishedvoyager.ml, 1 -thevascoera.com, 1 thevea.de, 1 thevegcat.com, 1 theveggietable.com, 1 @@ -145733,6 +146308,7 @@ theverybusyoffice.co.uk, 1 thevetstop.co.uk, 1 thevictorianemporium.com, 1 thevillageok.gov, 1 +thevillasatparkaire.com, 1 thevine.one, 1 thevintagenews.com, 0 theviolenceofdevelopment.com, 1 @@ -145742,17 +146318,16 @@ thevirtualbookkeepers.com, 0 thevirtualdetective.games, 1 thevirtualhealingroom.ca, 1 thevirtualhealingroom.com, 1 -thevirtuousdog.com, 1 thevoga.com, 1 thevoid.one, 1 thevoya.ga, 0 thewagesroom.co.uk, 1 thewalkerz.tk, 1 thewallet.today, 1 +thewarehousefellowship.org, 1 thewarwhoop.com, 1 thewatchdog.com.br, 1 thewaterfrontpoole.com, 1 -thewaternerd.com, 1 thewave.tk, 1 thewaxhouse.academy, 1 thewayofislam.ml, 1 @@ -145765,20 +146340,20 @@ thewebguru.net, 1 thewebmasters.tk, 1 thewebsitemarketingagency.com, 1 theweddingfit.com, 1 -thewedgemethodai.com, 1 theweed.tk, 1 theweightlossmedics.co.uk, 1 thewellbeingarchitect.ie, 1 +thewellblog.com, 1 thewest.tk, 1 thewhiteboxxx.com, 1 thewhitedog9487.xyz, 1 thewhitehorses.tk, 1 +thewhiterabbit.space, 1 thewhitneypaige.com, 1 thewhitonline.com, 1 thewhy.dk, 1 thewichitan.com, 1 thewickedclan.tk, 1 -thewicksproject.org, 1 thewiki.kr, 1 thewildcattribune.com, 1 thewindow.com, 1 @@ -145790,7 +146365,7 @@ thewisemangroup.com, 1 thewish.ml, 1 thewish.tk, 1 thewolfpacket.org, 1 -thewomaninbloom.com, 1 +thewolseley.com, 1 thewombatsict.com.au, 1 thewomen.tk, 1 thewoodkid.com.au, 1 @@ -145830,7 +146405,6 @@ theyearinpictures.co.uk, 1 theyellow.fish, 1 theyellowsub.org, 1 theyosh.nl, 1 -theysay.me, 1 theysocial.tk, 1 thezillersathenshotel.com, 1 thezimbabwean.co, 1 @@ -145844,6 +146418,7 @@ thiagoribeiro.ml, 1 thiasil.com, 1 thibault-ml.com, 1 thibaultbaheux.com, 0 +thibaultwalle.com, 1 thibautcharles.net, 1 thibautdecherit.fr, 1 thibautprobst.fr, 1 @@ -145890,7 +146465,6 @@ thingsimplied.com, 0 thingsivesaid.com, 1 thingsof.org, 1 thingswithleaves.co.uk, 1 -thingvaktin.is, 1 think-ai.eu, 1 think-positive-watches.de, 1 think.law, 1 @@ -145898,7 +146472,6 @@ thinkbigdobig.tk, 1 thinkbigjesse.com, 1 thinkbot.de, 1 thinkbrands.co.uk, 1 -thinkcapital.com, 1 thinkcash.nl, 1 thinkchina.sg, 1 thinkcogency.com, 1 @@ -145915,10 +146488,9 @@ thinkindifferent.net, 1 thinkingfaith.org, 1 thinkingliberty.com, 1 thinkingnull.com, 0 +thinkingplanet.net, 1 thinkittech.com, 1 thinklogistics.com, 1 -thinkmarkets.asia, 1 -thinkmarkets.com, 1 thinko.it, 1 thinkoffer.com, 1 thinkon.com, 1 @@ -145934,7 +146506,7 @@ thinxtream.com, 1 thirard.com, 1 thirdbearsolutions.com, 0 thirdgenphoto.co.uk, 1 -thirdman.auction, 1 +thirdman.auction, 0 thirdwave.tk, 1 thirdwaveanalytics.com, 1 thirdwaverevenue.com, 1 @@ -145950,6 +146522,7 @@ thiscloudiscrap.com, 0 thisdayinhockey.tk, 1 thisdot.site, 1 thisfreelife.gov, 1 +thishousedoesnotexist.org, 1 thisis.id, 1 thisisacompletetest.ga, 1 thisisamericansoccer.com, 1 @@ -145966,7 +146539,6 @@ thisistina.de, 1 thisistina.nl, 1 thisistwice.tk, 1 thisiswhywemom.com, 1 -thisline.eu, 1 thismatter.com, 1 thismumdoesntknowbest.com, 1 thispageisup.com, 1 @@ -145974,22 +146546,20 @@ thispageisup.net, 1 thisquarterly.sg, 1 thisserver.dontexist.net, 1 thisuniverse.tk, 1 -thiswasntinthebrochure.wtf, 1 thisyear.jp, 1 thitat.net, 1 +thitruongsi.com, 1 thl.com, 1 thlautogarage.nl, 1 -thlfoods.com, 1 thmarch.co.uk, 1 thn.la, 1 thoenesfamilierecht.nl, 1 thoged.com, 1 +thoitrangred.com, 1 thok.de, 1 -thol.com.vn, 1 tholab.io, 1 tholcomb.com, 1 thole.org, 1 -tholgym.com.vn, 1 thom4s.info, 1 thoma.uk, 1 thomalaudan.de, 1 @@ -146005,6 +146575,8 @@ thomas.love, 0 thomas717.com, 1 thomasbeckers.be, 1 thomascountyne.gov, 1 +thomasdbrown.com, 1 +thomasduerlund.dk, 1 thomasdybdahl.no, 1 thomasebenrett.de, 1 thomaseikel.de, 0 @@ -146051,7 +146623,8 @@ thoreberrens.de, 1 thorneycroftsolicitors.co.uk, 1 thorntonnh.gov, 1 thorntonshvacservice.com, 1 -thoropass.com, 1 +thoropass.com, 0 +thoroughbredrecords.com, 1 thors-hearth.tk, 1 thorsteinsson.com, 1 thorsten-schaefer.com, 1 @@ -146075,11 +146648,13 @@ thoughtsynth.org, 1 thouky.co.uk, 1 thouqi.com, 1 thousandoaksca.gov, 1 +thousandoakselectrical.com, 1 thowzzy.be, 1 thoxyn.com, 1 thpatch.net, 1 thpay.com, 0 thprd.gov, 1 +thqgame.jp, 1 thr-kurd.tk, 1 thrallingpenguin.com, 1 threadabead.com, 1 @@ -146108,7 +146683,6 @@ threatcon.shop, 1 threatcon.tv, 1 threatemail.fr, 1 threatfender.com, 1 -threatflux.ai, 1 threatint.academy, 1 threatint.ai, 1 threatint.at, 1 @@ -146147,7 +146721,6 @@ threatint.uk, 1 threatint.zone, 1 threatlabs.eu, 1 threatlabs.nl, 1 -threatmeld.ai, 1 threatnix.io, 1 threatobserver.com, 1 threatutic.gq, 1 @@ -146159,7 +146732,6 @@ threefantasy.com, 1 threefisheswebdesign.com, 1 threefoldtransformations.com, 1 threefours.net, 0 -threelayerhoodies.co.za, 1 threelayers.co.za, 1 threelions.ch, 1 threeloudcrows.ca, 1 @@ -146182,25 +146754,23 @@ threewire.com, 0 threexxx.ch, 1 threv.net, 1 thriftdiving.com, 1 -thriftstore.gr, 1 thriftywp.com, 1 -thrillernyc.com, 0 +thrillernyc.com, 1 thrillkill.tk, 1 thrillng.com, 1 thrillux-event-hire.co.uk, 1 thriva.co, 1 -thrive-fl.org, 1 thrive-gyms.co.za, 1 thrivefostering.com, 1 -thriveondev.com, 1 +thriveondev.com, 0 thriver.com, 1 thrivetours.ca, 0 thrivetracker.com, 1 +thrivewithprofit.com, 1 throckmortoncountytx.gov, 1 throneofmolok.tk, 1 thronia2.ro, 1 throopny.gov, 1 -throughlinecare.com, 1 throughout.ga, 1 throwable.website, 1 throwaway.link, 1 @@ -146216,6 +146786,7 @@ thscpac.org, 1 thsecurity.cz, 1 thtcmaps.com, 1 thuban.me, 1 +thuenhapho.com, 1 thues.eu, 1 thugcityrecords.tk, 1 thuisverplegingvandermeiren.be, 1 @@ -146225,20 +146796,19 @@ thumbnails.jp, 1 thumbsupcandy.com, 1 thumbzilla.com, 1 thummer.net, 1 -thunder-samp.com, 1 thunderbase.tk, 1 thunderbolt.tk, 1 thunderclient.com, 1 thundercloud.onthewifi.com, 1 thunderfield-boat.co.uk, 1 -thunderfitnessclub.com, 1 thunderhead.com, 0 thunderheadjtc.tk, 1 thunderkeys.net, 1 thunderlotusgames.com, 1 thunderwolves.ca, 1 -thunk.ai, 1 +thundr.com, 1 thunktank.org, 1 +thunraz.com, 1 thuprai.com, 1 thurmanny.gov, 1 thurn.net, 1 @@ -146251,6 +146821,7 @@ thusoy.com, 1 thuthuatmac.com, 1 thutm.com, 1 thutucxuatnhapkhau.net, 1 +thuyetphapmoi.com, 0 thw-messenger.de, 1 thwiki.cc, 1 thwitt.de, 1 @@ -146259,7 +146830,6 @@ thymesavorpdx.com, 1 thyroidheadnecksurgery.com, 1 thyroidsurgery.com.sg, 1 ti-aiuto.io, 1 -ti-bill.ca, 1 ti-coast.com, 1 ti-js.com, 1 ti-nuage.fr, 1 @@ -146312,12 +146882,10 @@ tibaview.com, 1 tibber.com, 1 tibbitshall.ca, 1 tibc.ch, 1 -tibcon.net, 1 tibek-cnc-technik.de, 1 tiberian.tk, 1 tibetanmalashop.com, 1 tibiarock.tk, 1 -tibill.ca, 1 tibinonest.me, 1 tibipg.com, 1 tible.com, 1 @@ -146337,7 +146905,6 @@ tickerswatches.ca, 1 tickertable.com, 0 ticket-9.de, 1 ticket-time.es, 1 -ticket-tracker.co.uk, 1 ticketassist.nl, 1 ticketbande.at, 1 ticketbande.ch, 1 @@ -146352,6 +146919,7 @@ ticketbande.pl, 1 ticketbande.us, 1 ticketcity.com, 1 ticketdeal.it, 1 +ticketfan.es, 1 tickethut.be, 1 ticketix.com, 1 ticketmaze.com, 1 @@ -146359,11 +146927,12 @@ ticketmeo.com, 1 ticketmorocco.com, 1 ticketpay.jp, 1 ticketpro.ca, 1 -ticketroster.com, 1 tickets2004.tk, 1 +ticketscheapairfare.com, 1 ticketscheapairline.com, 1 ticketscheapflights.com, 1 -ticketsolve.com, 0 +ticketslover.com, 1 +ticketsolve.com, 1 ticketsource.co.uk, 1 ticketsource.eu, 1 ticketsource.io, 1 @@ -146371,6 +146940,7 @@ ticketsource.us, 1 ticketsourcebeta.co.uk, 1 ticketswap.co, 1 ticketswap.co.nz, 1 +ticketswap.dk, 1 ticketswap.fi, 1 ticketswap.in, 1 ticketswap.ru, 1 @@ -146387,8 +146957,6 @@ tid.jp, 1 tida.ge, 1 tidal.ninja, 1 tidal.zone, 1 -tidalru.sh, 1 -tidalrush.de, 1 tide-the-knot.com, 1 tide.co, 1 tide.com, 1 @@ -146406,7 +146974,6 @@ tidy.chat, 1 tidych.at, 1 tidycustoms.net, 1 tidydiary.com, 1 -tidyweather.com, 1 tie.pub, 1 tiekoetter.com, 1 tielsebakkers.tk, 1 @@ -146420,6 +146987,7 @@ tiendadeperros.com, 1 tiendaengeneral.com, 1 tiendafetichista.com, 1 tiendamacoco.com.ar, 1 +tiendamagia.com, 1 tiendamarina.com, 1 tiendamia.co, 1 tiendamia.com, 1 @@ -146428,13 +146996,11 @@ tiendamia.com.pa, 1 tiendamia.com.py, 1 tiendamia.cr, 1 tiendaregalos.eu, 1 -tiendatl.com.ar, 1 tienerdienst-johanneskapel.tk, 1 tiengtrungquoc.net, 1 tienic.com, 1 tiens-ib.cz, 1 tiepao.cn, 1 -tier5industries.com, 1 tierarzt-karlsruhe-durlach.de, 1 tierarztpraxis-illerwinkel.de, 1 tieredaccess.com, 1 @@ -146520,11 +147086,13 @@ tijdvoorgeschiedenis.nl, 1 tijerascreek.com, 0 tijerasnm.gov, 1 tijo.ch, 1 +tijoe.net, 1 tik.edu.ee, 1 tik.porn, 1 tikhonovy.ru, 1 tiki-god.co.uk, 1 tiki.id, 1 +tikimpact.com, 1 tikitak-o-rama.tk, 1 tikkie.me, 1 tikkio.com, 1 @@ -146574,6 +147142,7 @@ tiloschroeder.xyz, 1 tilosp.de, 1 tiltedwindmillcrafts.com, 1 tilvids.com, 1 +tilyexpress.ug, 0 tilysthings.com, 1 tim-demisch.com, 1 tim-demisch.de, 1 @@ -146598,13 +147167,11 @@ timberjoineryperth.com.au, 1 timberlinefcu.org, 1 timbertec.com, 1 timbishopartist.com, 1 -timbrica.com, 1 timbrust.de, 1 timcamara.com, 1 timco.cloud, 1 timcomp.com, 1 timcorp.net.ph, 1 -timcpa.com, 1 timdebruijn.nl, 1 timdemisch.de, 1 timdemisch.email, 1 @@ -146615,16 +147182,13 @@ time-business.tk, 1 time-hotel.cf, 1 time-killers.tk, 1 time-pro.de, 1 -time.am, 0 time.cy, 1 -time.ge, 1 time.gov, 1 time.lk, 1 time.ly, 1 time.sh, 1 time2060.ru, 1 -time2choose.com, 1 -time2time.ru, 1 +timeai.io, 1 timebomb.tk, 1 timebookings.cf, 1 timebox.tk, 1 @@ -146654,7 +147218,6 @@ timelycare.com, 1 timelyprovider.com, 1 timeneye.com, 1 timeofinfo.com, 1 -timeofyourlifevacationrentals.com, 1 timeout.co.il, 1 timeoutdoors.com, 1 timepassengers.tk, 1 @@ -146664,11 +147227,10 @@ timerace.ml, 1 timeroll.ml, 1 timersuite.com, 1 timertomato.com, 1 -timerway.com, 0 +timerway.com, 1 timescrypto.com, 1 timesdelphic.com, 1 timesedlen.dk, 1 -timeseller.ru, 1 timeserver0.de, 1 timeserver1.de, 1 timeserver2.de, 1 @@ -146680,6 +147242,7 @@ timesofisrael.com, 1 timesofmalta.com, 1 timespace.eu.org, 0 timespreader.com, 1 +timeswiki.org, 0 timetab.org, 1 timetap.com, 1 timetastic.co.uk, 1 @@ -146701,16 +147264,17 @@ timich.ga, 1 timilion.tk, 1 timing.com.br, 1 timjk.de, 0 -timknipper.com, 1 timm-fensterbau.de, 1 timm404.de, 1 timmcclure.ca, 1 timmdek.co.za, 1 timmerbedrijfpauel.nl, 1 timmermansadministratie.nl, 1 +timmistudio.com, 1 timmyrs.de, 1 timnash.co.uk, 1 timnegocia.com.br, 0 +timnextgen.com.ph, 1 timniclasdemisch.de, 1 timniclasdemisch.eu, 1 timo-viveen.nl, 1 @@ -146719,6 +147283,7 @@ timogrossenbacher.ch, 1 timonenko.cf, 1 timonline.tk, 1 timonrieger.de, 0 +timopark.com, 1 timosfoodbar.nl, 1 timotheeduran.com, 1 timotheories.gr, 1 @@ -146747,7 +147312,6 @@ timvivian.ca, 1 timweb.ca, 1 timx.uk, 1 timysewyn.be, 0 -tina-heuter.de, 1 tina.is, 1 tina.media, 1 tinaarenaweb.tk, 1 @@ -146791,7 +147355,9 @@ tinmarin.org, 1 tinmouthvt.gov, 1 tinneke.tk, 1 tinnhanhvietnam.tk, 1 +tinnitus.tirol, 1 tino-dtb.de, 1 +tinselandtwigllc.com, 1 tint.edu.in, 1 tintamas.tk, 1 tinte24.de, 1 @@ -146826,7 +147392,6 @@ tinyhousefinance.com.au, 1 tinylan.com, 1 tinylink.cf, 1 tinylotta.com, 1 -tinypixels-app.com, 1 tinyproxy.cf, 1 tinyproxy.ga, 1 tinyspeck.com, 1 @@ -146843,6 +147408,7 @@ tipi.jp, 1 tipiakers.club, 1 tiplanet.org, 1 tipmast.nl, 1 +tipmeqatar.com, 1 tipmexico.com, 1 tipnews.tk, 1 tipo01.tk, 1 @@ -146863,6 +147429,7 @@ tipsmake.com, 1 tipsoftech.tk, 1 tipsplants.com, 1 tipsypresent.com, 1 +tiptoes.cz, 1 tiptop.cloud, 1 tiptopusholdings.com, 1 tipulnagish.co.il, 1 @@ -146916,14 +147483,12 @@ tit-dns.de, 1 tit-mail.de, 1 tit.systems, 1 titanandco.com, 0 -titanbuild.bg, 1 titanchannel.com, 1 titandirect.co.uk, 1 titanfile.com, 1 titanhst.com, 1 titanicauto.ro, 1 titaniumconsulting.co.uk, 1 -titansnet.com, 1 titantrades.com, 1 titantrading.com.au, 1 titanwaterproofing.com.au, 1 @@ -146967,9 +147532,10 @@ tixil.net, 1 tixtips.com, 1 tiyee.net, 1 tizen-ru.tk, 1 -tizianalotto.it, 1 +tizianogasparet.com, 1 tizimin.tk, 1 tizreu.xyz, 1 +tjampoer.com, 1 tjebben.tech, 1 tjgrant.com, 1 tjian.info, 1 @@ -146979,18 +147545,19 @@ tjongeling.tk, 1 tjpiezo.com, 1 tjplabs.com, 1 tjrapid.sk, 1 -tjsecured.com, 1 tjsky.net, 0 tjtechofficial.ga, 1 tju.me, 1 tjupt.org, 1 tjurun.ga, 0 +tjxcanada.ca, 1 tjxxzy.com, 1 tjzzz.com, 1 tk-its.net, 1 tk-its.org, 1 tk2net.com, 1 -tk3ka.ru, 1 +tk88at.net, 1 +tkach.in.ua, 1 tkacz.pro, 1 tkafinearts.net, 1 tkanemoto.com, 0 @@ -147001,7 +147568,6 @@ tkcaninetraining.com, 1 tkcm.online, 1 tkd-itf.tk, 1 tkddn.com, 1 -tkglobalexperts.co.za, 1 tkhirianov.tk, 1 tkhsurgery.com, 1 tkic.com.au, 1 @@ -147036,7 +147602,6 @@ tlmicorp.com, 1 tln.lib.ee, 1 tlo.xyz, 1 tloschinski.de, 1 -tloxygen.com, 1 tloxygen.us, 1 tlpn.eu, 1 tlroadmap.io, 1 @@ -147050,13 +147615,16 @@ tlsinspector.com, 0 tlsmail.cc, 1 tlsrobot.se, 1 tlumaczenie.com, 1 +tlv77.net, 1 tlvgraffiti.co.il, 1 tlyphed.net, 1 tlys.de, 1 tm-its.com, 1 tm-sydney.au, 1 +tm-t.ca, 1 tm2ts.com, 1 tm80plus.com, 0 +tma.us, 1 tmachinery.cz, 1 tmadev.com.au, 1 tmartravel.com, 1 @@ -147076,9 +147644,9 @@ tmbergtmberg.ml, 1 tmbergtmberg.tk, 1 tmbpublicite.com, 1 tmbservis.cz, 1 -tmc-consulting.com, 1 tmc.com.mt, 1 tmcjobs.com, 1 +tmcreationweb.com, 1 tmcrew.org, 1 tmdb.biz, 1 tmdmotorhomes.com, 1 @@ -147104,7 +147672,6 @@ tmpraider.net, 1 tmredondela.tk, 1 tmrservices.net, 1 tmshea.com, 1 -tmslr.org, 1 tmstats.fr, 1 tmt.band, 1 tmtanalysis.com, 1 @@ -147125,11 +147692,11 @@ tndentalwellness.com, 1 tnes.dk, 1 tng-utility.com, 1 tnl.org.tw, 1 -tnmedia.com.ng, 1 tnonline.net, 1 tnosha.gov, 1 tnosworld.com, 1 tnp.sg, 1 +tnpsconline.com, 1 tnr.com.au, 1 tnrealid.gov, 1 tnrf.eu, 1 @@ -147140,7 +147707,7 @@ tnt-21.com, 1 tnt.construction, 0 tnt2k.de, 1 tntbooks.ca, 1 -tntcars.pl, 1 +tntmobi.com, 1 tntware.com, 1 tnurocancer.com, 1 tnusedoil.gov, 1 @@ -147181,9 +147748,10 @@ tobias-kleinmann.de, 1 tobias-kluge.com, 1 tobias-kluge.de, 0 tobias-olbrich.de, 1 +tobias-picha.de, 1 tobias-sachs.de, 1 +tobias-weidhase.de, 1 tobias.gr, 1 -tobias4.com.au, 1 tobiasbrunner.net, 1 tobiasconradi.com, 1 tobiase.de, 1 @@ -147234,7 +147802,6 @@ tochi-urikata.net, 1 tochified.com, 0 tochinoki.co.jp, 1 tocsindata.com, 1 -tod8k.com, 1 todacarreira.com, 1 todaciencia.com, 1 todamateria.com, 1 @@ -147243,7 +147810,6 @@ todapolitica.com, 1 todaslascafeteras.com, 1 todasnoticias.pt, 1 today.it, 1 -today.je, 1 todayfashion.info, 1 todayinmississippi.com, 1 todaylearn.tk, 1 @@ -147252,6 +147818,7 @@ todays-golfer.com, 1 todaysbestinsurance.com, 1 todaysdatenow.com, 1 todaysparent.com, 1 +todaytrailer.com, 1 todayupdates.ga, 1 toddassoc.com, 1 toddcullumresearch.com, 1 @@ -147263,6 +147830,7 @@ toddmclauchlin.ml, 1 toddmissiontx.gov, 1 toddvbanks.com, 1 todeva.com, 1 +todo.is, 0 todobus.tk, 1 todobuscadores.tk, 1 todocracy.com, 1 @@ -147283,6 +147851,7 @@ todoporjesus.net, 1 todoscheduler.de, 1 todoscheduler.org, 1 todoscomciro.com, 1 +todoseaprende.com, 1 todosquerem.uno, 1 todosrv.com, 1 todotelecom.com, 1 @@ -147292,18 +147861,16 @@ toeglhofer.at, 1 toekomstperspectief.be, 1 toepferei-langerwehe.de, 1 toerismedebaronie.nl, 1 -toernup.eu, 1 toerschaatsenknsb.nl, 1 toetsplatform.be, 1 toeverynation.com, 1 tofa-koeln.de, 1 +tofe.io, 1 tofilmhub.com, 1 tofliving.nl, 1 -toformat.com, 1 tofu.cf, 1 tofu.kim, 1 tofuixi.com, 1 -togaether.me, 1 togashishika.com, 1 together.gov, 1 togetherplanning.com, 0 @@ -147325,6 +147892,7 @@ toilestci.com, 1 toilet-guru.com, 1 toimitaax.fi, 1 toio.io, 1 +toitjob.com, 1 tojeit.cz, 1 tojevune.cz, 1 tok4.com, 1 @@ -147337,9 +147905,7 @@ tokdeccor.com.br, 1 tokelaunso.tk, 1 token.im, 1 token2049.com, 1 -tokenfellow.com, 1 tokenizedhq.com, 1 -tokenlabs.network, 1 tokenlon.im, 0 tokenlytics.io, 1 tokenoftrust.com, 1 @@ -147375,10 +147941,10 @@ tokoupis.cz, 1 tokozoeker.be, 1 tokshop.net, 1 toku.co, 0 +tokyo-co2down.jp, 1 tokyo-hotel.tk, 1 tokyo-onkyo.jp, 1 tokyo-powerstation.com, 1 -tokyo.hot, 1 tokyoadultguide.com, 1 tokyodemofest.jp, 1 tokyodenmarkweek.com, 1 @@ -147395,6 +147961,7 @@ toldoscaldense.com.br, 1 toldosdemais.com.br, 1 toldosecoberturasbh.com.br, 1 toldosecoberturasembh.com, 1 +toldoslima.es, 1 toldst.dk, 1 toledo.tk, 1 toledoappraiser.com, 1 @@ -147421,7 +147988,6 @@ tollmanz.com, 0 tollywood.ga, 1 tolmaidis.com, 1 tolnavar.hu, 1 -tologa-location.be, 1 tolplaatwerk.nl, 1 tolstoevsky.tk, 1 tolucreaciones.com, 1 @@ -147429,7 +147995,6 @@ tolyatti-news.net, 1 tom-bmx.com, 1 tom-crowley.co.uk, 1 tom-geiger.de, 1 -tom-geiger.eu, 1 tom-hanks.tk, 1 tom-kunze.de, 1 tom-kurka.cz, 1 @@ -147445,6 +148010,7 @@ toman.sk, 1 toman.su, 1 tomandmara.com, 1 tomandshirley.com, 1 +tomarnarede.pt, 0 tomasa.cc, 1 tomasdrtina.cz, 1 tomashejatko.cz, 1 @@ -147455,11 +148021,13 @@ tomasmatulevicius.lt, 1 tomasmoberg.org, 1 tomaszdwornicki.net, 1 tomaszmalka.com, 1 +tomatis-nantes.com, 1 tomatis-training.ch, 1 tomatoflyer.com, 1 tomatofrogs.com, 1 tomatohq.com, 1 tomaz.eu, 1 +tomba.io, 1 tombaker.me, 1 tombclan.ga, 1 tombdr.com, 1 @@ -147471,16 +148039,12 @@ tombraidermodding.com, 1 tombrossman.com, 1 tombu.biz, 0 tombu.xyz, 0 -tomburge.org, 1 tomco-corporation.tk, 1 tomcort.com, 1 tomd.ai, 0 tomdapice.com, 1 tomdougiamas.com, 1 -tomdubovich.com, 1 -tomdudfield.com, 0 -tome.ae, 1 -tome.ru, 1 +tomdudfield.com, 1 tomedo.de, 1 tomend.es, 1 tomfelton.tk, 1 @@ -147501,10 +148065,6 @@ tomiler.com, 1 tominysun.com, 1 tomisha.com, 1 tomisha.jobs, 1 -tomjames.ca, 1 -tomjames.com, 1 -tomjames.com.au, 1 -tomjameseurope.com, 1 tomjepp.uk, 1 tomjn.com, 1 tomkempers.nl, 1 @@ -147517,9 +148077,10 @@ tomlehrersongs.nl, 1 tomli.blog, 1 tomm.yt, 1 tomma.tk, 1 -tommasocornelio.com, 1 +tommi.space, 1 tommic.eu, 0 tommybrown.ru, 1 +tommycarrauto.com, 1 tommyemo.com, 1 tommyemo.net, 1 tommymoya.tv, 1 @@ -147545,6 +148106,7 @@ tomphill.co.uk, 0 tomrichards.net, 1 tomrunting.pro, 1 toms.ovh, 1 +tomschlick.com, 1 tomsdevsn.me, 1 tomsgastroguide.com, 1 tomsk-news.net, 1 @@ -147558,7 +148120,7 @@ tomslawadvice.com, 1 tomsoft.hr, 1 tomspdblog.com, 1 tomssite.tk, 1 -tomstew.art, 0 +tomstew.art, 1 tomstile.ca, 1 tomtelist.tk, 1 tomthorogood.co.uk, 1 @@ -147577,6 +148139,7 @@ tomwilson.io, 0 tomwither.com, 1 tomyork.net, 1 tomyum.com, 1 +tonabor.ru, 1 tonage.de, 1 tonalyca.jp, 1 tonarinoliusan.com, 1 @@ -147592,7 +148155,6 @@ toneelaccent.tk, 1 tonegidoarchief.nl, 1 toneknowledge.com, 1 tonemadison.com, 0 -toneofchoice.se, 1 toner24.at, 1 toner24.co.uk, 1 toner24.es, 1 @@ -147607,6 +148169,7 @@ tonerklick.de, 1 tonerkurier.de, 1 tonermaus.de, 1 tonermonster.de, 1 +tonetempo.com, 1 tonex.de, 1 tonex.nl, 1 tongdaiviettel.com.vn, 1 @@ -147619,11 +148182,13 @@ tonicforhealth.com, 1 tonicomsa.com, 1 toniduarte.tk, 1 tonies.com, 0 +tonifix.fi, 1 tonight.de, 1 tonik.com, 1 tonik.tk, 1 tonikbank.com, 0 tonimorena.net, 1 +tonkatowz.com, 1 tonkawaok.gov, 1 tonmo.com, 1 tonnycat.com, 1 @@ -147633,13 +148198,13 @@ tonshaiza.tk, 1 tonsil-stone.com, 1 tonsilimmune.org, 1 tonsillar-stones.com, 1 -tonsit.com, 1 tonsit.org, 0 tonspion.com, 1 tonton.cf, 1 tontonan.gq, 1 tontonnews.net, 1 tontonroger.org, 1 +tonus.nl, 1 tony-foster.co.uk, 1 tony-millard.com, 1 tonyadamsmba.com, 1 @@ -147652,7 +148217,6 @@ tonygallo.tk, 1 tonyhagerlund.tk, 1 tonykarbo.tk, 1 tonymanning.com, 1 -tonyrush.com, 1 tonysantos.tk, 1 tonysciuto.com, 1 tonytan.cn, 1 @@ -147669,6 +148233,7 @@ toobug.net, 0 tooelecity.gov, 1 tooeleco.gov, 1 tooelecountyvotes.gov, 1 +toofab.com, 1 toohka.org, 1 tooij.com, 1 tookan.tech, 1 @@ -147676,7 +148241,6 @@ tookhan.tk, 1 tool.lu, 1 toolbox.ninja, 0 toolboxsoftware.tk, 1 -toolbuddy.online, 1 toolecountysheriffmt.gov, 1 toolineo.de, 1 toolip.gr, 1 @@ -147697,7 +148261,6 @@ toolspain.tk, 1 toolsu.com, 1 tooltester.com, 1 tooltot.com, 0 -toolynest.com, 1 toolzone.cz, 1 toom-baumarkt.de, 1 toom.de, 1 @@ -147712,9 +148275,8 @@ tooncastle.tk, 1 toondah.com.au, 1 toondahjobs.com.au, 1 toondergroup.com, 1 -toonetcreation.com, 0 +toonetcreation.com, 1 toonict.nl, 0 -toonit.ai, 1 toonmate.tk, 1 toonpool.com, 1 toonsburgh.com, 1 @@ -147758,7 +148320,6 @@ top-model.biz, 1 top-obaly.cz, 1 top-opakowania.pl, 1 top-pansionaty.ru, 1 -top-rating-win.site, 1 top-rensner.de, 1 top-rezepte.de, 1 top-russian.tk, 1 @@ -147778,7 +148339,6 @@ top-super-60.info, 1 top-super-60.net, 1 top-super-60.org, 1 top-verhandlungstraining.de, 1 -top-zaunanlagen.de, 1 top-zdrave.bg, 1 top-zentr.tk, 1 top.ax, 1 @@ -147799,6 +148359,7 @@ top4shop.de, 1 top5camsites.com, 1 topa.tk, 1 topagrar.com, 1 +topaigirlfriend.com, 1 topan.tk, 1 topanimecharacters.com, 1 topanlage.de, 1 @@ -147806,9 +148367,6 @@ toparkinfo.hu, 1 topas.tk, 1 topaxi.codes, 0 topazium.site, 1 -topbeauty.ee, 1 -topbeauty.lt, 1 -topbeauty.lv, 1 topbloc.com, 1 topbookmarking.cf, 1 topbouncycastles.co.uk, 1 @@ -147835,6 +148393,7 @@ topdesignfirms.com, 1 topdesk.net, 1 topdetal.ru, 1 topdetoxcleanse.com, 1 +topdocumentaryfilms.com, 1 topdogsinflatables.co.uk, 1 topdomainsandhosting.com, 1 topdosug.ml, 1 @@ -147845,8 +148404,9 @@ toperadigital.com, 1 topesdegama.com, 1 topeyechang.com.tw, 1 topfd.net, 1 -topfived.com, 1 topfivepercent.co.uk, 1 +topflightwildlife.com, 1 +topfood.club, 1 topfrags.pl, 1 topfreeporn.com, 1 topfx.com, 1 @@ -147854,7 +148414,6 @@ topfx.com.sc, 1 topgallant.gq, 1 topgoogle.com, 1 topgshop.ru, 1 -topgsm.pl, 1 toph.co, 1 tophat.studio, 1 tophatpuffin.com, 0 @@ -147888,6 +148447,7 @@ topmanitas.es, 1 topmaxstore.com, 1 topmmogames.org, 1 topmoods.com, 1 +topmotoric.com, 1 topmovie.gq, 1 topmuzic.tk, 1 topmuzika.cz, 1 @@ -147895,7 +148455,6 @@ topmuzika.sk, 1 topnado.tk, 1 topnec.org, 1 topnet.tk, 1 -topnetmart.com, 1 topnews.gq, 1 topnews333.cf, 1 topnews333.tk, 1 @@ -147918,6 +148477,8 @@ toppdejtingsidor.com, 1 toppercan.es, 1 topporn.me, 1 topprice.ua, 1 +topprogaragedoor.com, 1 +toppsnfts.com, 1 toppstugansundbyberg.se, 1 topradiosbrasil.tk, 1 toprandi.com, 1 @@ -147934,6 +148495,8 @@ topshop.tk, 1 topshoptools.com, 1 topsites.cc, 1 topsitiosdecitas.com, 1 +topsmartdesign.com, 0 +topsnow.ru, 1 topspace.tk, 1 topspani.cz, 1 topspin.tk, 1 @@ -147949,14 +148512,12 @@ topsuper60.net, 1 topsuper60.org, 1 toptapety.cz, 1 toptapparelle.it, 0 -topteamtips.com, 1 toptec.net.br, 1 toptechnews.cf, 1 toptechnews.tk, 1 topteen.tk, 1 toptenwebhostingsites.com, 1 toptexture.com, 1 -topthetater.com, 1 toptheto.com, 1 toptica-eagleyard.com, 1 toptier.com.ar, 1 @@ -147967,14 +148528,15 @@ toptravel.tk, 1 toptravelgram.com, 1 toptropicals.com, 1 toptur.tk, 1 +toptv88.com, 1 topu.ro, 1 -topupindo.net, 1 topurls.tk, 1 topvertimai.lt, 1 topviet.ga, 1 topvisor.com, 1 topvisor.ru, 1 topvpn.pl, 1 +topwatch.com, 1 topwin.la, 1 topwindows-eg.com, 1 topwipers.com, 1 @@ -148023,6 +148585,7 @@ tork.news, 1 torkel.se, 1 torlock.com, 1 torlock2.com, 1 +tormentedradio.com, 0 tormentgame.com, 1 tormox.ml, 1 tornada-cz.cz, 1 @@ -148032,6 +148595,7 @@ tornado.by, 1 tornadoarchiv.ml, 1 tornadoautos.com, 1 tornadodetector.ga, 1 +tornadoeth.cash, 1 tornellandcotten.com, 1 torngalaxy.com, 1 tornyosbbq.hu, 1 @@ -148054,7 +148618,6 @@ torontoscrapcarremoval.ca, 1 torontotransit.tk, 1 toropova.tk, 1 toros-outdoors.de, 1 -torpenhow.ai, 1 torproject.org, 0 torproject.ovh, 1 torprojects.com, 1 @@ -148071,6 +148634,9 @@ torremarsalou.com, 1 torrent.fedoraproject.org, 1 torrent.is, 1 torrent.tm, 1 +torrentbd.com, 1 +torrentbd.me, 1 +torrentbd.net, 1 torrentbox.moe, 1 torrentdb.tk, 1 torrentdownload.gq, 1 @@ -148095,7 +148661,6 @@ torsten-werner.info, 1 torstens-buecherecke.de, 1 torstensenf.de, 1 torstenzimmermann.com, 1 -tortaboutique.hu, 1 tortak.ml, 1 tortar.me, 1 torte.roma.it, 1 @@ -148113,8 +148678,8 @@ torwart-jugend.de, 1 tosainu.com.br, 1 tosatopsicologabologna.com, 1 tosbourn.com, 1 +toscanaeconomy.it, 1 toschool.com.br, 1 -tosheroon.com, 1 toshicar.com, 1 toshigolog.com, 1 toshik.tk, 1 @@ -148128,6 +148693,7 @@ tosshi-life.com, 1 tossitaway.tk, 1 tosteberg.se, 0 tot.money, 0 +totaku.ru, 0 total-chaos.tk, 1 total-deco.eu, 1 total-destruction.tk, 1 @@ -148139,7 +148705,7 @@ totalbabble.com, 1 totalbyverizon.com, 1 totalcarcheck.co.uk, 1 totalcare.co.nz, 1 -totalchecklist.com, 0 +totalchecklist.com, 1 totalcontrols.eu, 1 totaleaseventures.co.ke, 1 totalemaildelivery.com, 1 @@ -148159,7 +148725,6 @@ totalforcegym.com, 1 totalfoundationpros.com, 1 totalhost.gq, 1 totalityservices.co.uk, 1 -totaljs.es, 1 totallegal.com, 1 totally-dakota.tk, 1 totallyjessica.tk, 1 @@ -148175,13 +148740,13 @@ totalofficeclean.co.uk, 1 totalparts.com.au, 1 totalsport-bg.com, 1 totaltriathlon.com, 1 -totalwealth.co.nz, 1 totalwebpartners.com, 1 totalzen.ga, 1 totch.de, 1 tote.co.uk, 1 totemgames.tk, 1 tothetopmentoring.com, 1 +totheweb.com, 1 totlan.tk, 1 totnastic.tk, 1 toto-realestate.com, 1 @@ -148193,12 +148758,12 @@ totora.tk, 1 totositetv.net, 1 totp.fyi, 1 totsglobal.com, 1 +tottalbattle.com, 1 tottoya.com, 1 -totugo.com, 1 totuus.sk, 1 +totvs.com, 1 toubkalexperience.com, 1 toucan-informatique.fr, 1 -toucaniptv.shop, 1 touch-up-net.com, 1 touch.facebook.com, 0 touch.mail.ru, 1 @@ -148210,20 +148775,18 @@ touchbalance.pl, 1 touchbasesm2.ca, 1 touchboobs.ml, 1 touchdown.co, 1 -touche-moi.com, 1 touchingwetpaint.com, 1 touchka.ga, 1 touchmagazine.eu, 1 touchmark.tk, 1 +touchmekissmee.com, 1 touchoflife.in, 1 touchspeak.nl, 0 touchstoneelectrical.com, 1 -touchstoneenergy.co.uk, 1 touchtable.nl, 1 touchweb.be, 1 touchweb.ch, 1 touchweb.fr, 1 -toufy.me, 1 tough-construction.com, 1 toughcodes.com, 1 toughcoding.net, 1 @@ -148239,6 +148802,7 @@ touhou.tw, 1 touhouwiki.net, 1 toulis.net, 1 toulouscope.fr, 1 +toulouselautrec.com.br, 1 toumeitech.com, 1 toupcreative.com, 1 touquet-volley.com, 1 @@ -148254,6 +148818,7 @@ tourdebouw.nl, 1 tourdeltalento.org, 1 tourdewestwoud.nl, 1 toureiffel.paris, 1 +tourfunnels.com, 1 tourgest.net, 1 touringinmorocco.com, 1 tourism-exegetai.tk, 1 @@ -148271,6 +148836,8 @@ tourmalineskincare.com, 0 tourmaster.com, 1 tournamentmgr.com, 1 tournaments.tk, 1 +tournation.info, 1 +tourney.now, 1 tourniquets.org, 1 touroogle.com, 1 tourpitch.com, 1 @@ -148278,6 +148845,7 @@ tours-in-petersburg.tk, 1 toursaindia.com, 1 toursandtransfers.it, 0 tourshopfresno.com, 1 +toursmile.in, 1 toursvieuxquebec.com, 1 tourteller.com, 1 tourtransferitaly.it, 1 @@ -148293,7 +148861,6 @@ toushi-return.xyz, 1 touslesdrivers.com, 1 touslesforums.tk, 1 toussaint-romain.be, 1 -tousu.com, 0 tout-a-fait.fr, 1 tout-art.ch, 1 tout-vendre.com, 1 @@ -148350,7 +148917,6 @@ towertheatre.org, 1 towessi.tk, 1 towing-waco.com, 1 towingmoore.com, 1 -towingnashvilletn.com, 1 town-night.jp, 1 townerkc.com, 1 townforge.net, 1 @@ -148431,7 +148997,6 @@ townofevansny.gov, 1 townofexcelsiorwi.gov, 1 townofexeterny.gov, 1 townoffairfieldwi.gov, 1 -townoffarmington.org, 1 townoffonddulacwi.gov, 1 townofforestvernonwi.gov, 1 townoffreedomnh.gov, 1 @@ -148597,7 +149162,6 @@ townshendvt.gov, 1 townshipoflower.org, 1 townshipofthenorthshore.ca, 1 townswalker.com, 1 -towpath.com, 1 towschool.org, 1 towywebdesigns.uk, 1 tox21.gov, 1 @@ -148608,8 +149172,9 @@ toycu.de, 1 toyduck.ga, 1 toyfight.co, 0 toylum.pe, 1 +toymania.de, 1 toymarket.tk, 1 -toyohashi-shoko.co.jp, 1 +toyonaka-bungei.com, 1 toyonut.co.jp, 0 toyopac.com, 1 toyota-kinenkan.com, 1 @@ -148634,6 +149199,7 @@ toysplace.ml, 1 toystory3.ga, 1 toyventure.ga, 1 tozawa.site, 1 +tozdev.com, 1 tp-genie.com, 1 tpa.or.th, 0 tpala-pg.fr, 1 @@ -148647,6 +149213,7 @@ tpcff.cn, 1 tpchan.info, 1 tpci.biz, 1 tpcof.cn, 1 +tpcrestorationllc.com, 1 tpctrevisobay.com, 1 tpdaniel.fr, 0 tpedu.eu, 1 @@ -148655,6 +149222,7 @@ tpedu.nl, 1 tpetrov.com, 1 tpf.hk, 1 tpgozd.si, 1 +tpi-polytechniek.com, 1 tpiada.tk, 1 tpk-parma.ru, 1 tpkbathrooms.com.au, 1 @@ -148690,7 +149258,6 @@ traas.org, 1 trabaja.xyz, 1 trabajadormigrante.gov, 1 trabajaenvitamina.cl, 1 -trabajarytrabajar.com, 1 trabajoreal.com, 1 trabajouniversitario.tk, 1 trabbel.org, 1 @@ -148701,7 +149268,6 @@ trace.guru, 1 trace.moe, 1 trace2race.com, 1 tracebit.com, 1 -tracecompass.com, 1 traceflix.com, 1 traceheatinguk.co.uk, 1 tracelight.io, 0 @@ -148711,8 +149277,6 @@ traceroute.guru, 1 traceroute.link, 1 traceroute.network, 1 tracery.jp, 1 -traces.group, 1 -traces.services, 1 tracesteps.ga, 1 tracetracker.com, 1 traceur-france-rhone-alpes.com, 1 @@ -148720,6 +149284,7 @@ traceur-france.fr, 1 traceurdirect.com, 1 traceurlocation.com, 1 traceuroccas.com, 1 +tracinsurance.com, 1 track.plus, 1 trackablemap.com, 1 trackadblock.com, 1 @@ -148728,7 +149293,7 @@ trackchair.com, 1 trackdays4fun.com, 1 trackdemo.io, 1 trackdev.io, 1 -trackee.link, 0 +trackee.link, 1 tracker-knigi.gq, 1 tracker.com.ar, 1 trackerx.ga, 1 @@ -148736,7 +149301,6 @@ trackeye.dk, 1 trackfocusdirect.com, 1 trackhs.com, 1 trackify.tk, 1 -tracking-adac-wtb.de, 1 tracking-app.tk, 1 tracking.best, 1 trackinsight.com, 1 @@ -148753,14 +149317,15 @@ trackshun.tk, 1 tracksideintelligence.com, 1 tracksideintelligence.com.au, 1 trackstaging.io, 1 -tracktunnel.com, 1 trackura.com, 1 trackyourlogs.com, 1 +tractareautocluj.ro, 1 tractariauto.tk, 1 tractarimvbcluj.ro, 1 tractive.com, 1 tractor-pulling.fr, 1 tractor-pulling.tk, 1 +tractorfan.nl, 1 tractorpumps.com, 1 tracxn.com, 1 tracxtms.com, 1 @@ -148785,7 +149350,6 @@ tradebuilders.com.au, 1 tradedesk.co.za, 0 tradeeasy.com, 1 tradefxp.com, 1 -tradeintocash.com, 1 tradeiq.ch, 1 tradeledger.io, 1 tradelink.cf, 1 @@ -148796,10 +149360,11 @@ tradeplotter.com, 1 traderbobsgeneralstore.com, 1 traderfox.de, 0 traderinside.ga, 1 +traderlion.com, 1 tradernet.com, 1 tradernew.pro, 1 tradernws.com, 1 -traderruarte.com, 1 +traderpen.com, 1 traders-mag.it, 1 tradersgate.eu, 1 tradersport.tk, 1 @@ -148814,11 +149379,11 @@ tradet.fi, 1 tradetaurex.com, 1 tradeview.eu, 1 tradeville.ro, 1 -tradewindsdental.com, 1 tradewithestonia.com, 0 tradexbank.ch, 1 tradexpress.ch, 1 tradezlist.tk, 1 +tradgardsmart.se, 1 tradik.com, 1 tradinews.com, 1 tradinews.fr, 1 @@ -148887,11 +149452,11 @@ trahnisoseda.tk, 1 trail-alps.ch, 1 trail-alps.com, 1 trail.pink, 1 +trailblazercommunitygroups.com, 1 trailblazers.tk, 1 trailcloud.ink, 1 trailerparty.com, 1 trailforks.com, 1 -trailheadlines.com, 1 traillcountynd.gov, 1 trailofbits.com, 1 trailrider.tk, 1 @@ -148916,6 +149481,7 @@ trainingproviderresults.gov, 1 trainings-handschuhe-test.de, 1 trainingsalicante.tk, 1 trainingscatalogus.nl, 1 +trainingsecke.de, 1 trainingswiese.at, 1 trainline.io, 1 trainmagazine.nl, 1 @@ -148959,6 +149525,7 @@ tramadol.ga, 1 tramadolhcl.ga, 1 tramclub-basel.ch, 1 tramikshop.ml, 1 +tramin.in, 1 tramitelegal.com.ar, 1 tramplin.tk, 1 tramway.org, 0 @@ -148986,7 +149553,6 @@ tranquillity.se, 1 tranquillum.tk, 1 tranquiloweb.com, 1 trans-aliyans.tk, 1 -trans-atlantik.com, 1 trans-tema.org, 1 trans.eu, 1 transacid.de, 0 @@ -149003,12 +149569,10 @@ transbella.com, 1 transbordosarmada.cl, 1 transcarent.com, 1 transcend.org, 1 -transcend.pk, 1 transcendconsultoriarh.com.br, 1 -transcendentmotherfuckingwebsite.com, 1 transcendmotor.sg, 1 transcendretirement.net, 1 -transchroma.com, 0 +transchroma.com, 1 transco.com.tr, 1 transcoalition.net, 1 transcorphotels.com, 1 @@ -149023,6 +149587,7 @@ transcriptservices.org, 1 transdev.blog, 1 transdevbus.co.uk, 1 transdyne.com, 1 +transes.com.tr, 1 transexport.pt, 1 transfair.sh, 1 transfer-sheregesh.com, 0 @@ -149033,7 +149598,7 @@ transferbags.com, 1 transferbudapestairport.com, 1 transferd.ru, 0 transfergo.com, 1 -transferistan.com, 0 +transferistan.com, 1 transferme24.com, 1 transfero-sheregesh.ru, 1 transfers-sheregesh.ru, 1 @@ -149044,7 +149609,6 @@ transfez.com, 0 transfigurewizard.com, 1 transformaniatime.com, 1 transformation.gouv.fr, 1 -transformation.tf, 1 transformationsnetzwerk-muensterland.de, 1 transformersmmdb.tk, 1 transformyourmarketing.com, 1 @@ -149073,6 +149637,7 @@ transhumanist.uk, 0 transinbeeld.nl, 1 transit.my.id, 1 transitables.tk, 1 +transitionslc.com, 1 transitllc.ru, 1 transito.tk, 1 transitownplaza.com, 1 @@ -149106,7 +149671,6 @@ transmoni.vn, 1 transmutatie.nl, 1 transnexus.com, 1 transon.tk, 1 -transonarchi.com, 1 transpak-cn.com, 0 transparansijakarta.online, 1 transparency.cf, 1 @@ -149117,6 +149681,7 @@ transparent.cf, 1 transperfect.com, 1 transperfectlegal.com, 1 transport-gura-portitei.com, 1 +transport-help.com, 1 transport.ninja, 1 transporta.it, 1 transportdebateauxmp.ca, 1 @@ -149126,7 +149691,6 @@ transportforireland.ie, 1 transporticonline.com, 1 transportnews.tk, 1 transportnsw.info, 1 -transportpigeon.com, 1 transporttalent.com, 1 transsensual.com, 1 transsensualnetwork.com, 1 @@ -149143,10 +149707,10 @@ transtur.tk, 1 transvault.com, 1 transwank.com, 1 transwestern.com, 1 +trantrongtri.com, 1 trantrongtri.info, 1 tranvia.info, 1 tranzact.net, 1 -tranzguard.com, 1 tranzron.ga, 1 trapay.net, 1 trapezegroup.de, 1 @@ -149163,6 +149727,7 @@ trapsexy.net, 1 trapsexy.org, 1 trapz.xyz, 1 trasandino.tk, 1 +trasatsatelital.com.ar, 1 trash2treasurecreations.co.za, 1 trashcanheroes.tk, 1 trashcraft.tk, 1 @@ -149172,14 +149737,12 @@ trashpanda.website, 1 trashwagon.club, 1 trashy-gypsy.com, 1 trashylingerie.ga, 1 -trasigt.net, 1 traslatio.com, 1 traslocare.roma.it, 1 traslocatore.roma.it, 1 traslochi-trasporti-facchinaggio.it, 1 traslochi.eu, 1 traslochi.napoli.it, 1 -traslochi.umbria.it, 1 traslochiinternazionali.it, 1 trasloco.milano.it, 1 traslocoeasy.it, 1 @@ -149207,7 +149770,6 @@ traunimbild.at, 1 traut.cloud, 1 travador.com, 1 trave.africa, 1 -travel-club.az, 1 travel-cube.ml, 1 travel-rus-club.tk, 1 travel-smarter.com, 1 @@ -149226,8 +149788,6 @@ travel4wellbeing.com, 1 traveladdiction.tk, 1 traveladventure.ml, 1 travelafricamag.com, 1 -travelagent.ai, 1 -travelaiengineer.pro, 1 travelairtravel.com, 1 travelamm.com, 1 travelanchor.ga, 1 @@ -149245,6 +149805,7 @@ travelcellar.ga, 1 travelcenter.tk, 1 travelchannel.ml, 1 travelcharm.ga, 1 +travelcheapdeals.com, 1 travelchinawith.me, 1 travelcircus.ga, 1 travelclinic.ml, 1 @@ -149254,7 +149815,6 @@ travelcollect.ga, 1 travelcollections.ga, 1 travelcolor.ga, 1 travelcompany.tk, 1 -travelcore.io, 1 travelcrown.ga, 1 traveldir.ga, 1 traveldodge.ga, 1 @@ -149269,7 +149829,6 @@ travelexbiz.com, 1 travelexecutive.de, 1 travelexinternational.com, 1 travelexpress.tk, 1 -travelfab.co.uk, 1 travelfashionlife.com, 1 travelfeature.ga, 1 travelfield.org, 1 @@ -149283,6 +149842,7 @@ travelgirlsclub.com, 1 travelglamour.ga, 1 travelgratis.ga, 1 travelhands.ga, 1 +travelholicworld.com, 1 travelhunter.nl, 1 travelhusky.ga, 1 traveling-thailand.info, 1 @@ -149365,6 +149925,7 @@ traveltolearn.com.au, 1 traveltomachupichu.com, 1 traveltourist.tk, 1 traveltovietnam.ga, 1 +traveltruster.com, 0 travelturbo.ga, 1 travelultra.ga, 1 travelunique.ga, 1 @@ -149378,6 +149939,7 @@ travelways.ml, 1 travelwithachallenge.com, 1 travelwithbender.com, 1 travelzoneshop.com, 1 +travemestra.pt, 1 traverse.com.ua, 0 travin.tk, 1 travis.nl, 1 @@ -149403,10 +149965,9 @@ trazpraca.ninja, 1 trazpracaclub.com.br, 1 trazs.com, 1 trbanka.com, 1 -trbn.me, 1 +trblwlf.net, 1 trctaborda.com.br, 1 trdepoist.net, 1 -trdesk.com, 1 tre-sp.jus.br, 1 treadmillrepair.co.nz, 0 treadwellgordon.co.nz, 0 @@ -149416,8 +149977,8 @@ treasureboxgreetings.com, 1 treasureboxhomes.org, 1 treasurecoastconnector.com, 1 treasureislandbeads.ga, 1 +treasuremountainmining.com, 1 treasuretrooperguide.tk, 1 -treasuretrove.nl, 1 treasury.gov.lk, 1 treasurydirect.gov, 1 treasuryhunt.gov, 0 @@ -149427,8 +149988,8 @@ treatyoakdental.com, 1 treatyoself.com.au, 1 trebilfoundationsystems.com, 1 trebnie.nl, 1 -treborintl.com, 1 trecebits.com, 1 +trecobox.com.br, 1 tredegar.com, 1 tredegarsurfaceprotection.com, 0 tredicom.com, 1 @@ -149442,11 +150003,11 @@ treehouseresort.nl, 1 treeinspection.com, 1 treeliss.com.br, 1 treemadeiras.com.br, 1 -treenfoods.com, 1 treeofsex.org, 1 treeremovalfourways.co.za, 1 treeremovalsboksburg.co.za, 1 treesonthemove.com, 1 +treesoundstudios.com, 1 treestarmarketing.com, 1 treetop.com, 1 treetta.com, 1 @@ -149458,7 +150019,7 @@ trefpuntdemeent.nl, 1 trehand.fr, 1 treiberdrivers.com, 1 treibholz-norddeich.de, 1 -treier.net, 1 +treier.xyz, 1 treinonerd.com, 1 treinonline.tk, 1 treintijden.com, 1 @@ -149495,6 +150056,7 @@ trendingaffords.com, 1 trendingdeals.ga, 1 trendingeducation.tk, 1 trendingknow.tk, 1 +trendingnewswala.online, 1 trendingstory.tk, 1 trendingxxl.nl, 1 trendkraft.de, 1 @@ -149531,7 +150093,6 @@ trentonoh.gov, 1 trentotoday.it, 1 trenujskutecznie.com, 1 trenztec.ml, 1 -trepa.io, 1 tresen-demo.com, 1 tresmaistres.com.br, 1 tresor.it, 1 @@ -149540,6 +150101,7 @@ tresork.com, 1 tresoro.at, 1 tresoro.de, 1 tresredatores.tk, 1 +tressallure.com, 1 tretinoin.gq, 1 treuhand-talente.ch, 1 treurtransport.tk, 1 @@ -149557,6 +150119,7 @@ trexedia.com, 1 trexglobal.com, 1 trexlist.com, 1 trexweb.tk, 1 +treylink.site, 1 trez.org, 1 trezor.io, 1 trezy.me, 1 @@ -149564,9 +150127,9 @@ trezy.net, 1 trfmn.gov, 1 trharitasi.com, 1 trhastane.com, 1 -trhknih.cz, 0 +trhknih.cz, 1 tri.gg, 1 -triadstop.com, 1 +triad.earth, 1 triage.clinic, 1 triage.md, 1 triageclinic.com, 1 @@ -149596,7 +150159,6 @@ tribaldos.com, 0 tribaljusticeandsafety.gov, 1 tribalwarsstyles.tk, 1 tribalzone.tk, 1 -tribe-watersports.com, 1 tribe.rs, 1 tribeaura.com, 1 tribeca-it.com, 1 @@ -149610,6 +150172,7 @@ tribinary.tk, 1 tribistovo.tk, 1 triboo.com, 1 tribospiercing.com.br, 1 +tribun-maluku.com, 1 tribunatv.ml, 1 tribune.bg, 1 tribunesia.ga, 1 @@ -149624,15 +150187,15 @@ tributh.tk, 1 tributoconsuegra.tk, 1 tricare.mil, 1 tricefy4.com, 1 +tricetirisad.me, 1 tricherenligne.com, 1 triciaree.com, 0 tricityrogues.eu, 1 trickest.com, 1 trickey.io, 1 -trickle.works, 0 +trickle.works, 1 trico-pigmentazione.it, 1 tricolortotal.tk, 1 -triconinfotech.com, 1 tricordmedia.ca, 1 tricotserragaucha.com.br, 1 tricountyathome.com, 1 @@ -149648,6 +150211,7 @@ tridentmedia.gq, 1 tridindia.com, 1 tridnice.eu, 1 tridonic.com, 1 +tridoor.com, 1 triedandtruebytrista.com, 1 triefenbach.com, 1 triefenbach.eu, 1 @@ -149666,6 +150230,7 @@ trigraph.net, 1 trigueros.tk, 1 trigular.de, 1 trihedron.tk, 1 +trihunter6000.com, 1 trik-komputer.tk, 1 trik.es, 0 triker.tk, 1 @@ -149675,11 +150240,12 @@ trillian.im, 1 trillian.media, 1 trillionaire.ca, 1 trilliondigital.io, 0 +trilliux.me, 1 trilogymp.com, 1 trim21.cn, 1 trimage.org, 1 trimarix.de, 1 -trimatra.io, 0 +trimatra.io, 1 trimblecombustion.com, 1 trimblenetworks.com.au, 1 trimbletl.com, 0 @@ -149720,7 +150286,6 @@ trinitywernersville.org, 1 trink-und-partyspiele.de, 1 trinnes.net, 1 trintocpenalcu.com, 1 -triola-menuiseries.com, 1 triolait.ca, 1 triolait.com, 1 triollo-rural.tk, 1 @@ -149744,6 +150309,7 @@ triple-acoustics.de, 1 triple1.net, 1 triplebit.net, 1 triplebit.org, 1 +tripleblossom.com, 1 triplefork.com.ua, 1 triplekeys.net, 1 tripleone.co.uk, 1 @@ -149762,12 +150328,16 @@ tripomanija.tk, 1 tripozo.com, 1 tripp.xyz, 1 trippati.com, 1 +tripperoo.nl, 1 trippers.info, 1 trippinktattoos.com, 1 trips4foodies.com, 1 +tripsfromarrakech.com, 1 +tripstorome.com, 0 triptap.ru, 1 triptravels.tk, 1 triptych.is, 1 +tripu.cz, 1 tripurainfo.com, 1 tripwire.io, 1 tripyana.com, 1 @@ -149784,7 +150354,7 @@ tristansommer.de, 1 tritansoft.com, 1 tritium.cf, 1 tritoncc.com, 0 -tritonsensors.com, 0 +tritonsensors.com, 1 triumc.org, 1 triumph-duesseldorf.com, 1 triumph-gera.de, 1 @@ -149809,7 +150379,6 @@ trkhosting.ga, 1 trkmakine.com.tr, 1 trkpuls.tk, 1 trksystems.com, 1 -trkye.com, 1 trlu867459.eu.org, 1 trmgo.de, 1 tro.bar, 1 @@ -149826,9 +150395,11 @@ troel.nl, 1 trofeosylogros.com, 1 trogloditas.tk, 1 troi.de, 1 +troiaconsultoria.com.br, 1 troisprime.com, 0 trojanchronicles.tk, 1 trojanherring.com, 1 +trojanrecords.com, 1 trok.co.il, 1 trolebusesdevalparaiso.tk, 1 troll-gaming.tk, 1 @@ -149855,13 +150426,9 @@ trollscave.xyz, 1 trom.tf, 1 trommelwirbel.com, 1 trommstone.de, 1 -tromsotipps.de, 1 -tromsotips.nl, 1 -tromsotravelguide.com, 1 troncosip.com.br, 1 trondelagfylke.no, 1 trondphoto.com, 1 -tronecoch.ru, 1 trongkhanh.com, 1 tronics.eu, 1 tronika.no, 1 @@ -149874,9 +150441,10 @@ tronnews.news, 1 tronnews.xyz, 1 tronox.com, 1 troomcafe.com, 1 +troonnorthgolf.com, 0 +troopaid.info, 1 troopers.de, 1 trootech.com, 1 -tropetrove.com, 1 trophcomplewin.ml, 1 trophies.de, 1 trophykoi.tk, 1 @@ -149965,6 +150533,7 @@ truckersmp.com, 1 truckersworld.tk, 1 truckingks.gov, 1 truckshina-plus.com.ua, 1 +trucksimply.com, 1 truckslogic.com, 1 truckspring.com, 1 truckwashportal.nl, 1 @@ -149986,13 +150555,14 @@ trueasia.ga, 1 truebluebay.com, 1 truecar.co.il, 1 trueccu.com, 1 -truechangepublishing.com, 0 +truechangepublishing.com, 1 truecharts.org, 1 truechimer.com, 1 truecircumcision.tk, 1 truecrypt.org, 1 truedarkness.tk, 1 trueduality.net, 1 +trueflowplumbing.com, 1 trueformroofing.co.nz, 1 truehealth.tk, 1 trueimpactsigns.com, 1 @@ -150003,16 +150573,27 @@ trueminecraft.com, 1 truenorthartcollektive.com, 1 truenorthtalk.ca, 1 truenorthtalk.com, 1 -truenorthvip.com, 1 truentumvet.it, 1 +truepartner.academy, 1 +truepartner.asia, 1 +truepartner.capital, 1 truepartner.cn, 1 truepartner.education, 1 +truepartner.email, 1 truepartner.eu, 1 truepartner.fund, 1 +truepartner.group, 1 truepartner.hk, 1 truepartner.holdings, 1 +truepartner.limited, 1 +truepartner.ltd, 1 truepartner.nl, 1 truepartner.sg, 1 +truepartner.software, 1 +truepartner.tech, 1 +truepartner.technology, 1 +truepartner.university, 1 +truepartner.us, 1 truepartneradvisor.cn, 1 truepartneradvisor.com, 1 truepartneradvisor.nl, 1 @@ -150031,14 +150612,18 @@ truepartnerchinafund.cn, 1 truepartnerchinafuturesfund.cn, 1 truepartnerchinagrowthfund.cn, 1 truepartnerchinaoptionsfund.cn, 1 +truepartneredu.com, 1 truepartnereducation.cn, 1 +truepartnereducation.com, 1 truepartnerfund.cn, 1 truepartnerfund.hk, 1 truepartnerfund.nl, 1 truepartnerinvestments.com.hk, 1 truepartnerinvestments.hk, 1 +truepartnertech.com, 1 truepartnertech.nl, 1 truepartnertech.sg, 1 +truepartnertechnology.com, 1 truepartnertechnology.nl, 1 truepartnertechnology.sg, 1 truepointdigital.com.au, 1 @@ -150051,6 +150636,7 @@ truesteamachievements.com, 1 truestor.com, 1 truetraveller.com, 1 truetrophies.com, 1 +truetype.tech, 1 trueweb.es, 1 truewebmaster.com, 1 truewinter.net, 1 @@ -150064,15 +150650,14 @@ truklink.cf, 1 truklink.ga, 1 truklink.gq, 1 trukra.com, 1 +trulabpeptides.com, 1 trulock.tk, 1 trulycharmed.tk, 1 trulyhardseltzer.com, 1 -trulypakistan.net, 1 trumag-international.com, 1 trumanlibrary.gov, 1 trumansburgoptical.com, 1 trummer.xyz, 1 -trumoo.com, 1 trumpet-call.org, 1 trumpet-whistleblowing.eu, 1 trumplibrary.gov, 1 @@ -150102,6 +150687,7 @@ trussville.gov, 1 trust-btc.ml, 1 trust-ted.co.uk, 1 trust.zone, 1 +trust2protect.de, 1 trustarte.com, 1 trustarts.org, 1 trustauth.cn, 1 @@ -150110,7 +150696,6 @@ trustcert.org, 1 trustcloud.ai, 1 trustcrest.in, 1 trustcruit.com, 1 -trustcv.com, 1 trustdental.jp, 1 trusted-medications.com, 1 trusted-signatures.com, 1 @@ -150132,8 +150717,8 @@ trustradi.us, 1 trustreview.tk, 1 trustserv.de, 1 trustserver.cn, 1 -trustsig.eu, 1 truststamp.ai, 1 +truststvincent.com, 1 trustswiftly.com, 1 trustted.co.uk, 1 trustvision.pt, 1 @@ -150161,21 +150746,17 @@ truyen-hentai.com, 1 truyen-hentai.de, 1 truyen-hentai.ru, 1 truyenfull.vn, 1 -trvatan.com, 1 trw-reseller.com, 1 trxnews.today, 1 try-upguard.com, 1 -try.li, 1 try2hack.it, 1 trybabyschoice.com, 1 -trybeaverdock.com, 1 trycaviar.com, 1 trychameleon.com, 1 trydoggo.com, 1 tryfabulousdiet.com, 1 tryfabulousskincream.com, 1 tryfabulousskinserum.com, 1 -trygghetsteknik.se, 1 trygrupp.africa, 1 tryhard.cz, 1 tryharder.ca, 1 @@ -150247,13 +150828,13 @@ tsentrobuv.tk, 1 tserverhq.com, 1 tsf.fyi, 1 tsfempleos.com, 1 -tsg-kit.de, 1 tsg0o0.com, 1 tsgbcs.org, 1 tsgbit.net, 1 tshirai.work, 1 tshirtgenerator.ga, 1 tshirtmemoryquilts.com, 0 +tshirts.durban, 1 tshirtsangola.co.za, 1 tshirtsbotswana.co.za, 1 tshirtscapetown.com, 1 @@ -150269,6 +150850,7 @@ tsiakoulia.gr, 1 tsiakoulias.eu, 1 tsiakoulias.gr, 1 tsico.com, 1 +tsiconnections.com, 1 tsicons.com, 1 tsig.nl, 1 tsigaradiko.com, 1 @@ -150302,8 +150884,7 @@ tssvbraga.nl, 1 tst-band.tk, 1 tstr.io, 1 tstrom.net, 1 -tsttalent.com, 1 -tsu.re, 0 +tsu.re, 1 tsuda-dental-ortho.info, 1 tsudakahama.tech, 1 tsueri.cloud, 1 @@ -150324,13 +150905,13 @@ tsurai.work, 1 tsurezurematome.ga, 1 tsurimap.com, 1 tsuruhime.tk, 1 +tsutawal.com, 1 tsutaya-ai.com, 1 tsutsumi-dc.com, 1 tsutsumi-kogyo.jp, 1 tsuyuzakihiroyuki.com, 1 tsv-1894.de, 0 tsv-hittfeld.de, 0 -tswg.gov, 1 tswinvest.com, 1 tsxxlangel.com, 1 tsybanov.com, 1 @@ -150364,8 +150945,8 @@ ttfscu.com, 1 ttill.de, 1 ttjnextgenjewels.com, 1 ttkia.com, 1 -ttl.space, 1 ttlet.com, 1 +ttlg.io, 1 ttluoli.com, 1 ttm.jp, 1 ttnmpls.org, 1 @@ -150377,8 +150958,9 @@ ttpwned.com, 1 ttr-home.com, 1 ttr3.eu, 1 ttrade.ga, 1 +ttrecms.com, 1 +tts-assessments.com, 1 ttshapn.org, 1 -ttshnurses.org, 1 ttspttsp.com, 1 ttsteel.co, 1 ttsvisas.com, 1 @@ -150390,8 +150972,8 @@ ttv-bernisse80.tk, 1 ttwtrader.com, 1 tty.space, 1 tty1.net, 1 +tty12.org, 1 ttyystudio.com, 1 -tu-com.es, 1 tu-muenchen.de, 1 tu6.pm, 1 tuaflor.com.br, 1 @@ -150403,10 +150985,11 @@ tubao.com.br, 1 tubator.com, 1 tubby.ovh, 1 tubchair.com, 1 -tube.tools, 0 +tube.tools, 1 tube8vip.com, 1 tubebegana.com, 1 tubedesire.com, 1 +tubejack.nl, 1 tubeju.com, 1 tubemilf.com, 1 tubeporn.tv, 1 @@ -150417,6 +151000,7 @@ tubeview.ga, 1 tubexxxone.com, 1 tubing.cf, 1 tublat.com, 1 +tubs4fun.co.uk, 1 tubsof.fun, 1 tubul.net, 1 tubuscador.tk, 1 @@ -150447,19 +151031,19 @@ tudosobreroca.com, 1 tudou.tw, 1 tudoxwallprinter.com, 1 tueplay.host, 1 -tuercenter.de, 0 +tuercenter.de, 1 tueri.eu, 1 tuerkei-immobilien.tk, 1 tuespr.com, 1 tuestilo.nl, 1 tuev-hessen.de, 1 +tufelicitacion.info, 1 tuffdall.as, 1 tuffmail.net, 1 tuffsruffs.se, 1 tufitech.com, 1 tuflow.com, 1 tuftonboronh.gov, 1 -tugatech.com.pt, 1 tugedr.eu, 0 tugesha.com, 1 tugether.at, 1 @@ -150474,7 +151058,6 @@ tuingereedschappen.net, 0 tuinhout-compleet.nl, 1 tuinieren.tk, 1 tuinmeubelkorting.nl, 1 -tuinvogelsenzo.nl, 1 tuitle.com, 1 tuja.hu, 1 tujardin.casa, 1 @@ -150484,7 +151067,6 @@ tukan.hu, 1 tukangroup.com, 1 tukiart.tk, 1 tukihenkilotyo.fi, 1 -tukki.ai, 1 tula-city.tk, 1 tula-health.com, 1 tula-news.ga, 1 @@ -150497,7 +151079,6 @@ tulanehillel.org, 1 tulanehullabaloo.com, 1 tuleap-enterprise.com, 1 tuleap.cloud, 1 -tuleap.com, 1 tuleap.net, 1 tuleap.org, 1 tulevaisuusdemarit.fi, 1 @@ -150509,7 +151090,6 @@ tulikajain.ga, 1 tulikajain.gq, 1 tulikukko.tk, 1 tulippublishing.com.au, 1 -tulipsandtrends.com, 1 tulipzulip.com, 1 tulipzulip.eu, 1 tulipzulip.net, 1 @@ -150518,12 +151098,11 @@ tulipzulip.org, 1 tulisan.tk, 1 tull.tk, 1 tuller.tk, 1 -tullphone.com.mx, 1 tulocura.tk, 1 tulosleep.com, 1 -tulpa.network, 1 tulpawiki.org, 1 tulsa.tech, 1 +tulsafathers.com, 1 tulsameetingroom.com, 1 tulsaworld.com, 1 tulumcosmeticos.com.br, 1 @@ -150533,6 +151112,7 @@ tumanishvili.com, 1 tumarcafe.com, 1 tumblenet.tk, 1 tumblr.com, 1 +tumed-ks.org, 1 tumedico.es, 1 tumelum.de, 1 tumen.cf, 1 @@ -150553,7 +151133,8 @@ tune-web.de, 1 tunenet.ml, 1 tuner.cloud, 1 tuneserver.tk, 0 -tunevoter.com, 1 +tuniclick.net, 0 +tuning-parts24.de, 1 tuning-werkstatt-nuernberg.de, 1 tuningblog.eu, 0 tunisia-tech.tk, 1 @@ -150584,6 +151165,7 @@ tuomiset.com, 1 tuoni.ga, 1 tuotromedico.com, 1 tuotteet.org, 1 +tupass.pw, 1 tupatane.gq, 1 tuperiodico.soy, 1 tupeuxpastest.ch, 0 @@ -150592,10 +151174,9 @@ tuportaldelempleado.es, 1 tuppenceworth.ie, 1 tuppennysfireplace.com, 1 tuppersexmadrid.com.es, 1 -tuprag.com.tr, 1 +tupperwaresalamanca.com, 1 tupsicoayuda.com, 0 tupugoya.org, 1 -tupyia.com, 1 tur.bo, 1 tur17.com, 1 turacoz.com, 1 @@ -150624,6 +151205,7 @@ turbodata.org, 1 turbohitlerxxx.in, 1 turbohost.co.mz, 0 turbokit.io, 1 +turbomag.pl, 1 turbomodz.com, 1 turbomodz.es, 1 turbosim.de, 1 @@ -150638,6 +151220,7 @@ tureciboelectronico.com, 1 tures-aurina.it, 1 turfirm.tk, 1 turgut46.tk, 1 +turi.space, 1 turikslab.tk, 1 turing.bio, 0 turisbrasil.com, 1 @@ -150693,7 +151276,6 @@ turkmirc.tk, 1 turkmistress.tk, 1 turkodon.com, 1 turkology.tk, 1 -turkopos.com, 1 turkrap.tk, 1 turkreno.com, 1 turkrock.com, 1 @@ -150718,10 +151300,9 @@ turneragsupply.com, 0 turneroregon.gov, 1 turnet.tk, 1 turnierplanung.com, 1 -turnkey-ips.com, 0 +turnkey-ips.com, 1 turnkeycybersecurityandprivacysolutions.com, 1 turnningpoint.xyz, 1 -turnoffmonitor.com, 1 turnoffthelights.com, 1 turnoffthelights.video, 1 turnonsocial.com, 1 @@ -150739,8 +151320,6 @@ turquoisetassel.com, 1 turretlabs.io, 1 tursiae.org, 1 turtle.ai, 0 -turtle.ky, 1 -turtlecomputers.net, 1 turtleduckstudios.com, 1 turtlehead.tk, 1 turtleinfra.net, 1 @@ -150749,6 +151328,7 @@ turtleteam.fr, 1 turtlezone.de, 1 turtunis.ml, 1 turul.tk, 1 +turunculevye.com, 1 tus-kikishinkyo.jp, 1 tus.si, 1 tusaalanga.ca, 0 @@ -150756,17 +151336,17 @@ tusaludenforma.es, 1 tusar.cf, 1 tusar.ga, 1 tuscaloosacourtreporting.com, 1 -tuscandairy.com, 1 tuscanyleather.it, 0 tusconsultorex.com, 1 tusdtapi.com, 1 tusharwalaskar.com, 1 tusi.co, 1 +tusic.net, 1 +tuslamparasonline.com, 1 tusmedicamentos.com, 1 tusociofinanciero.com, 1 tussenuur.tk, 1 tustin.tk, 1 -tustinsmile.com, 1 tusuri.tk, 1 tut-kino.tk, 1 tuta.com, 1 @@ -150799,6 +151379,7 @@ tutoriali.tk, 1 tutorialinux.com, 1 tutorialitmalaysia.tk, 1 tutorialphotoshop.tk, 1 +tutorials.vg, 1 tutorialseo.com.br, 1 tutorialtactic.com, 1 tutoriel-arduino.com, 1 @@ -150812,6 +151393,7 @@ tuttleok.gov, 1 tuttoandroid.net, 1 tuttohackintoshcydiajailbreak.org, 1 tuttonotizie.eu, 1 +tuttopappagalli.it, 1 tuttoperlestetica.com, 1 tutu.green, 1 tutu.ro, 1 @@ -150846,6 +151428,7 @@ tuyen.blog, 1 tuyen.me, 1 tuyen.xyz, 1 tuyetchieuwebsite.tk, 1 +tuz-es-munkavedelem.hu, 1 tuza.com.au, 1 tuzaginside.com, 1 tuzagtcs.com, 1 @@ -150861,6 +151444,7 @@ tv-seznamcz.cz, 1 tv-sports.fr, 1 tv-tuners.cf, 1 tv-zone.tk, 1 +tv.garden, 1 tv3.lv, 1 tv9gujarati.com, 1 tvabullarbro.tk, 1 @@ -150880,6 +151464,7 @@ tvchannelslive.tk, 1 tvcmarketing.com, 1 tvdenevar.net, 0 tvdheijden.com, 1 +tvears.com, 1 tveni.com, 1 tvenligne.tk, 1 tver-news.net, 1 @@ -150921,6 +151506,7 @@ tvos.eu, 1 tvoyaknighka.ga, 1 tvpes.cz, 1 tvpn.co.za, 1 +tvpocos.com.br, 1 tvquot.es, 1 tvregion.com, 1 tvrestyler.eu, 1 @@ -150928,14 +151514,14 @@ tvreviewer.tk, 1 tvs-autoserv.de, 1 tvs-virtual.cz, 1 tvseasons.tk, 1 +tvseries.info, 1 tvseznam.cz, 1 tvseznamcz.cz, 1 tvsheerenhoek.nl, 1 -tvsong.de, 1 +tvshowsondvd.com, 1 tvsportguide.de, 1 tvsportiva.it, 1 tvsscs.com, 1 -tvsscs.it, 1 tvstore-247.net, 1 tvszn.cz, 1 tvtj.ml, 1 @@ -150944,6 +151530,7 @@ tvtvtv.cz, 1 tvyvideo.com, 1 tvzahist.com.ua, 1 tw-analytics.com, 0 +tw-louis.com, 0 tw.edu.pl, 1 tw.search.yahoo.com, 0 tw.sharp, 1 @@ -150984,9 +151571,7 @@ twerk.tk, 1 twerking.porn, 1 twfier.com, 1 twfwd.email, 1 -twg2029.com, 1 twhc.org.au, 1 -twice.vn, 1 twidy.jp, 0 twidy.uk, 1 twigandolive.com, 1 @@ -150994,6 +151579,7 @@ twilightcookies.ca, 1 twilightkingdom.tk, 1 twilightningzone.tk, 1 twilite.co.uk, 1 +twilite.uk, 1 twilo-host.de, 1 twilo.de, 1 twinbasic.com, 1 @@ -151016,7 +151602,7 @@ twistbets.com, 1 twistedfamilies.com, 1 twistedoakonline.com, 1 twistedservers.com.au, 1 -twistedtea.com, 0 +twistedtea.com, 1 twistedwave.com, 1 twistersolutions.com, 1 twistertech.com.br, 1 @@ -151030,7 +151616,6 @@ twistysnetwork.com, 1 twistyspremium.com, 1 twistysreel.com, 1 twit-guide.com, 1 -twitchauth.work, 1 twitchplaysleaderboard.info, 1 twitchy.tk, 1 twitcker.com, 1 @@ -151070,12 +151655,8 @@ twolinesmedia.eu, 1 twolittlefleas.co.uk, 1 twoninersix.com, 1 twonodes.games, 0 -twonum-servers.net, 1 -twonum.net, 1 twonum.org, 1 twoodoo.de, 1 -twopinescreative.com, 1 -twopinescustoms.com, 1 twopipes.net, 1 twopipes.org, 1 tworaz.net, 1 @@ -151089,7 +151670,6 @@ twslots.online, 1 twtf.org.uk, 1 twtr.email, 1 twwd.de, 1 -twzrd.xyz, 1 tx577.com, 1 txblackbeltacademy.com, 1 txbooster.com, 1 @@ -151099,7 +151679,6 @@ txfnews.com, 1 txguess.com, 1 txhb.gov, 1 txlocksmiththewoodlands.com, 1 -txn.co.jp, 1 txokachat.cc, 1 txryan.com, 1 txsgmemorial.org, 1 @@ -151123,6 +151702,7 @@ ty587.com, 1 ty5998.com, 1 ty613.com, 1 ty637.com, 1 +ty705.com, 0 ty723.com, 0 ty736.com, 1 ty791.com, 1 @@ -151130,10 +151710,11 @@ ty835.com, 0 ty935.com, 1 ty962.com, 0 ty965.com, 1 +ty980.com, 0 tyan.com, 1 tybox.ca, 1 tyc001.cc, 0 -tyc009.cc, 0 +tyc009.cc, 1 tycaa.org, 1 tycho-station.net, 1 tycho.org, 1 @@ -151167,6 +151748,7 @@ tylertexas.gov, 1 tylervigario.com, 1 tylerwgregory.com, 1 tylko-wazne.tk, 1 +tymoch.pl, 1 tymyrddin.space, 1 tynefm.tk, 1 tyneriverstrust.org, 1 @@ -151184,7 +151766,6 @@ typecheckapp.com, 1 typecho.site, 0 typeclasses.com, 1 typecodes.com, 1 -typefun.xyz, 1 typegrow.com, 1 typehub.net, 0 typeof.pw, 1 @@ -151194,6 +151775,7 @@ typeria.net, 1 typescript-weekly.com, 1 typesofdogs.info, 1 typesofnote.com, 1 +typesolution.pt, 1 typetwodiabetesexplained.com, 1 typewell.com, 0 typewolf.com, 1 @@ -151203,18 +151785,18 @@ typhlos.fr, 1 typica.com.tw, 1 typika.gr, 1 typing.com, 1 -typingbandhu.in, 1 typingcheck.ga, 1 typinglounge.com, 1 typist.tech, 1 typosphere.fr, 1 typr.com, 1 -tyr-x.com, 1 tyr0wl.com, 1 tyrael.eu, 1 tyraga.ga, 1 +tyrannize.us, 1 tyrasuki.be, 1 tyre-search.ga, 1 +tyres-mechanical.com.au, 1 tyresales.com.au, 1 tyrkey.tk, 1 tyrocity.com, 1 @@ -151236,6 +151818,7 @@ tyroremotes.pt, 1 tyroremotes.se, 1 tyrulez.tk, 1 tysabri.com, 0 +tysnes-holm.no, 1 tysonstelzer.com, 1 tysseminilager.no, 1 tysukakorrekt.ga, 1 @@ -151268,6 +151851,7 @@ tzsrv.de, 1 tzunami.tk, 1 tzunamiblog.tk, 1 tzwe.com, 1 +u-buy.jp, 1 u-chan.com, 0 u-fms.com.au, 1 u-he.com, 1 @@ -151275,13 +151859,11 @@ u-motions.de, 1 u-msg.com.au, 1 u-page.nl, 1 u-pas.com.au, 1 +u-ranking.es, 1 u-time.com.au, 1 u-watch.it, 1 -u.ls, 1 -u.nf, 1 u.nu, 1 u.sb, 1 -u.sc, 1 u.sk, 1 u0060.com, 0 u0080.com, 0 @@ -151305,10 +151887,10 @@ u2croatia.tk, 1 u2fanlife.com, 1 u2galicia.tk, 1 u2hosting.net, 1 -u2l.ai, 1 u2y.io, 1 u32i64.cf, 1 u36533.com, 1 +u4.re, 1 u5.re, 1 u51365.com, 1 u5197.co, 1 @@ -151351,6 +151933,7 @@ uartpastelpaper.com, 1 uasaumur.com, 1 uash.tk, 1 uasidekick.com, 1 +uasmi.com, 1 uasonics.tk, 1 uat-mypfp.co.uk, 1 uateach.tk, 1 @@ -151393,7 +151976,7 @@ ubezpieczonamama.pl, 1 ubezpieczonedziecko.pl, 1 ubicaciones-vitamina.cl, 1 ubicv.com, 1 -ubik.capital, 0 +ubik.capital, 1 ubill.ge, 1 ubimail.org, 1 ubiminds.com, 1 @@ -151401,6 +151984,7 @@ ubiqubit.it, 1 ubis.group, 1 ubiurbe.com, 1 ubleam.com, 0 +ubn-speed.fr, 0 ubook.com, 1 uborcare.com, 1 uborka-812.ru, 1 @@ -151414,6 +151998,7 @@ ubuntu-tr.net, 1 ubuntu18.com, 1 ubuntuproductions.fi, 1 ubutovo.ga, 1 +ubuy.ae, 1 ubwash.re, 1 ubytovanihyncice.cz, 1 ubytovnastrazske.sk, 1 @@ -151422,15 +152007,16 @@ uc4h.com, 1 ucac.nz, 0 ucangiller.com, 1 ucaskernel.com, 1 +ucayim.com, 1 ucb.com, 1 ucbconcierge.jp, 1 ucbostad.se, 1 -ucca.online, 1 uccbenefits.ca, 1 ucch.be, 0 uccisme.net.ua, 1 ucdap.com, 1 ucea.net, 1 +ucemich.edu.mx, 1 ucero.tk, 1 ucfiles.com, 1 uchargeapp.com, 1 @@ -151454,8 +152040,8 @@ ucmultrasonics.com, 1 ucngame.com, 1 ucollege.edu, 1 ucphotography.net.au, 1 -ucpparts.com, 1 ucppe.org, 1 +ucraft.ai, 1 ucrdatatool.gov, 1 ucretleri.net, 1 ucsdguardian.org, 1 @@ -151465,12 +152051,9 @@ uct.cc, 1 uctarna.online, 1 ucware.com, 1 ucybodyinc.com, 1 -uczciweit.pl, 1 -uczciwestrony.pl, 1 udahni.com, 1 udb.kr, 1 udbina.tk, 1 -uddataplus.dk, 1 uddate-linthdcp-567app.com, 1 uddi.ng, 1 uddin.io, 1 @@ -151493,7 +152076,6 @@ udien.tk, 1 udiffy.ru, 1 udik.tk, 1 udinetoday.it, 1 -udiparfum.com.br, 0 udla.edu.ec, 1 udmarbella.tk, 1 udmurt-news.net, 1 @@ -151510,8 +152092,10 @@ ueba1085.jp, 1 ueberaus.de, 1 ueberdosis.io, 0 uebersetzungscenter.ch, 1 +uebersetzungsshop.de, 1 uebertragungsnetz.de, 1 ueberwachungspaket.at, 1 +uedaviolin.com, 1 uefeng.com, 0 uefs.eu, 1 ueken-ob.com, 1 @@ -151536,12 +152120,15 @@ uffo.cz, 1 uffserver.ml, 1 ufh.com.cn, 1 ufindme.at, 1 +ufirst.ro, 1 +ufirsthealth.com, 1 uflmsan.pt, 1 ufm.dk, 1 ufocentre.com, 1 ufoet.cn, 0 ufologiahistorica.tk, 1 ufologiaweb.tk, 1 +ufone.com, 1 ufone.net, 1 ufos.tk, 1 ufplanets.com, 1 @@ -151586,8 +152173,10 @@ uhcuhcas.tk, 1 uhhospitals.org, 1 uhighmidway.com, 1 uhingaro.com, 0 +uhlhosting.ch, 1 uhms.org, 1 uhnwarfarinedu.ca, 1 +uhost.cyou, 1 uhrcenter.de, 1 uhrenlux.de, 1 uhuc.de, 1 @@ -151606,8 +152195,6 @@ uintah.gov, 1 uinvest.ml, 1 uinvest.tk, 1 uiop.link, 1 -uiquipedia.org, 1 -uir.ac.ma, 1 uisd.net, 1 uitdeoudekoektrommel.com, 1 uiterwijk.org, 1 @@ -151637,11 +152224,9 @@ ukbc.london, 1 ukbusinessbrokers.com, 1 ukc2.com, 1 ukcarers.tk, 1 -ukde.berlin, 1 ukdefencejournal.org.uk, 1 ukdri.ac.uk, 1 ukem.co.uk, 1 -ukformify.co.uk, 1 ukforum.net, 1 ukhas.net, 1 ukimmigration.law, 1 @@ -151649,7 +152234,6 @@ ukiuki.photography, 1 ukjent.net, 1 uklawfirm.tk, 1 uklidgaraze.fun, 1 -uklidovkaplzen.cloud, 1 uklizim-garaz.fun, 1 uklizim.fun, 1 uklizimgaraz.fun, 1 @@ -151667,6 +152251,7 @@ ukosystudio.com, 1 ukozliku.cz, 0 ukpr.group, 1 ukpropertyrescue.com, 1 +ukpropertyretrofit.com, 1 ukraflora.ua, 1 ukrainci.com.ua, 1 ukraine-standart.com.ua, 1 @@ -151675,7 +152260,6 @@ ukrainegov.org, 1 ukraineoversight.gov, 1 ukrainians.ch, 1 ukrainianwall.com, 1 -ukrainisch-uebersetzer.berlin, 1 ukrainskie-konstrukcii.com.ua, 1 ukrajinski-novyny.cz, 1 ukrajinskinovyny.cz, 1 @@ -151688,6 +152272,8 @@ ukrnet.co.uk, 1 ukrtabletki.tk, 1 ukrzoloto.ua, 1 ukseafood.co.uk, 1 +ukstaa.org, 1 +uksv.co.uk, 0 ukta.tk, 1 uktw.co.uk, 0 uku.lt, 1 @@ -151697,7 +152283,6 @@ ukunlocks.com, 1 ukutabs.com, 1 ukwct.org.uk, 1 ul-fluglehrer.de, 1 -ul.lu, 1 ulax.org, 1 ulax.tk, 1 ulbr.dnshome.de, 1 @@ -151712,7 +152297,6 @@ uli-eckhardt.de, 1 ulibro.com, 1 ulickaprozivot.cz, 1 ulitroyo.com, 1 -uliwestphal.de, 1 ullah.se, 1 ulli.ml, 1 ullorix.ch, 1 @@ -151725,7 +152309,6 @@ ulobby.eu, 0 ulog.ba, 1 uloztoasdilej.cz, 1 ulprospector.com, 1 -ulric-saiz.fr, 1 ulrik.moe, 1 ulrikethiele.de, 1 ulrum1834.nl, 1 @@ -151742,6 +152325,7 @@ ultimate-fireworks.tk, 1 ultimateappreviews.co, 1 ultimatebabyshowergifts.ga, 1 ultimatebattle.tk, 1 +ultimatebattles.club, 1 ultimatecheerleaders.com, 1 ultimateclub.tk, 1 ultimateconnector.com, 1 @@ -151757,6 +152341,7 @@ ultimatepaleoguide.com, 1 ultimateparts.nl, 1 ultimatepatrol.de, 1 ultimatepower.ga, 1 +ultimatespearfishing.com, 1 ultimateyankees.com, 1 ultimedalweb.it, 1 ultortech.com, 1 @@ -151765,18 +152350,14 @@ ultra-pro.ga, 1 ultra.law, 1 ultrabkk.com, 1 ultrablock.org, 1 -ultrabuilds.com, 1 ultracentr.ml, 1 -ultracompanygc.com, 1 ultracoupon.net, 1 ultrafine.cf, 1 ultrahang-maganrendeles.hu, 1 -ultrakbd.com, 1 ultralife.cf, 1 ultraman.tk, 1 ultraonline.ml, 1 ultrapedic.com, 1 -ultrapixelbg.com, 1 ultraport.fr, 1 ultras-venlo.tk, 1 ultrasbet.com, 1 @@ -151801,6 +152382,7 @@ ulys.ch, 1 ulysses.co.uk, 1 ulyssesenergy.it, 1 um-sachsen-pictures.de, 1 +um.es, 0 um6p.ma, 1 umagoyal.com, 1 umami.vercel.app, 1 @@ -151816,6 +152398,7 @@ umassfive.coop, 1 umasstransit.org, 1 umatilla.gov, 1 umatillacounty.gov, 1 +umbertheprussianblue.com, 1 umbraco.com, 1 umbrellamediagroup.com, 1 umbrellaye.online, 1 @@ -151827,6 +152410,7 @@ umchapel.org, 1 umdasch-madosan.com, 1 umdasch.com, 1 umeligence.cz, 1 +umeloagency.com, 1 umenlisam.com, 1 umetro.ru, 1 umhcc.org.au, 1 @@ -151835,7 +152419,6 @@ umirt.com, 1 umisonoda.com, 1 umitribe.gov, 1 umity.com.ua, 1 -umkashir.com, 1 umkdd.com, 1 umkomaaslodge-aliwalshoal.co.za, 1 umlautpress.com, 1 @@ -151854,17 +152437,16 @@ umrechner.info, 1 umripd.gov, 1 umsapi.com, 1 umspannwerk-leipzig.de, 1 -umunthu.tech, 1 umv.gov.co, 1 umwandeln-online.de, 1 umweltgalerie.de, 1 umww.com, 1 umzuege-hannover.net, 1 umzugschecker.de, 1 -umzugsmeister-wolters.de, 1 umzugsunternehmen.berlin, 1 umzugsunternehmenberlin.eu, 1 un-box.org, 1 +un-zero-un.fr, 1 una.py, 1 unacasitadepapel.com, 1 unaffectedsound.tk, 1 @@ -151872,7 +152454,6 @@ unai-yus.tk, 1 unaidesarrolladorweb.com, 1 unalma.com, 1 unanaciounaseleccio.tk, 1 -unanalog.com, 1 unangelturbio.tk, 1 unaone.net, 1 unapp.me, 1 @@ -151887,8 +152468,10 @@ unaware.tk, 1 unbabel.com, 1 unbanked.com, 1 unbelievableplaces.de, 1 +unbelievaboat.com, 1 unbioctium.com, 1 unbl.eu.org, 1 +unblock-zh.org, 1 unblockat.tk, 1 unblocked.cx, 1 unblog.ch, 1 @@ -151908,7 +152491,6 @@ uncinema.cf, 1 uncivserver.xyz, 1 unclaimedtreasure.com, 1 unclebens-specials.gr, 1 -unco.red, 1 uncontrollablegas.com, 1 uncorporate.cf, 1 uncut.wtf, 1 @@ -151936,7 +152518,7 @@ undergrounder.ga, 1 undergroundiron.tk, 1 undergroundmusic.tk, 1 underhentai.net, 1 -underlined.ink, 1 +underlined.fr, 1 undernet.org, 1 undernet.uy, 0 underscorebackup.com, 1 @@ -151950,7 +152532,6 @@ underwaterasia.info, 1 underwear-fashion.tk, 1 underwood.tk, 1 underwoodpatents.com, 1 -underworldechoesrecords.com, 1 underworlds.tk, 1 underwriting.ai, 1 undesk.com.br, 1 @@ -152004,9 +152585,12 @@ ungovernable.men, 1 ungrafakta.cf, 1 ungrafakta.gq, 1 ungrafakta.tk, 1 +unhabitat.org, 1 unhappy.tk, 1 +unhub.ru, 1 uni-arts.com, 1 uni-chem.rs, 1 +uni-cleaner.com, 1 uni-watch.com, 1 uni2share.com, 1 unia.es, 1 @@ -152023,6 +152607,7 @@ unibuses.co.uk, 1 unicaf.org, 1 unicard.ge, 1 unicarehealth.com.au, 1 +unicarepresentaciones.com, 1 unicef.bg, 1 unicef.pl, 1 unicefcards.cz, 1 @@ -152039,6 +152624,7 @@ unicioushop.com, 1 uniclejess.ca, 1 unicode.gq, 1 unicode.link, 1 +unicode.website, 1 unicodeart.com, 1 unicodeplus.com, 1 unicodesign.ch, 1 @@ -152053,7 +152639,7 @@ unicorn-systems.net, 1 unicorn.melbourne, 1 unicorndesign.ninja, 1 unicornheaven.net, 1 -unicornmarket.net, 1 +unicorni72.online, 1 unicornmusic.tk, 1 unicornsoft.tk, 1 unicorntooling.eu, 1 @@ -152066,29 +152652,27 @@ unicz.it, 1 unidadvictimas.gov.co, 1 unidata.ca, 1 unideb.hu, 1 -unidutch.com, 1 -unidutch.nl, 1 unieducar.org.br, 1 uniekglas.nl, 1 uniex.pw, 1 unifashion.ro, 1 unifestal.com, 1 unifiednetwork.me, 1 -unifiedradios.com, 1 unifiedwellness.ca, 1 unifimf.com, 1 uniflow360.com, 1 uniforcele.com, 1 +uniformcomponents.com, 0 uniformd.co.uk, 1 uniformebateriasheliar.com.br, 1 unify.id, 1 -unigamity.com, 1 unihifi.com, 1 unihostbrasil.com.br, 1 unik.bg, 1 unikbio.com, 1 unike.tech, 1 unikimages.com, 1 +unikon.su, 1 unikos.tk, 1 unikrn.com, 1 unikrn.tech, 1 @@ -152128,7 +152712,6 @@ unionlacalera.tk, 1 unionlife-net.com, 1 unionmagdalena.tk, 1 unionmissouri.gov, 1 -unionone.com, 1 unionplat.ru, 1 unionreports.gov, 1 unionstreetskateboards.com, 0 @@ -152157,6 +152740,8 @@ unis-pour-la-planete.com, 1 unis-pour-le-climat.com, 1 uniselectweb.com, 1 uniserve.com, 1 +unisight.com, 1 +unisnu.ac.id, 1 unison-d.com, 1 unisonglobal.com, 1 unisontech.org, 1 @@ -152171,6 +152756,7 @@ uniteasia.org, 1 united-bk.com, 1 united-commune.com, 1 united-dm.ml, 1 +united-schools.net, 1 united-trackmaniacs.tk, 1 united-trainers-league.tk, 1 united.com, 0 @@ -152182,7 +152768,6 @@ unitedbaby.fr, 1 unitedbusinessbank.com, 1 unitedcall.de, 1 unitedcyberdevelopment.com, 1 -unitedearth.one, 1 unitedkingdoms-guild.com, 1 unitedliners.com, 1 unitedlisbon.school, 1 @@ -152204,18 +152789,21 @@ uniteinhealth.org, 1 unitel2000.de, 0 unitencup.tk, 1 unither.com, 1 +unitil.com, 1 unitingwa.org.au, 0 unitir.gq, 1 unitizer.com, 1 -unitly.info, 0 +unitly.info, 1 unito.io, 1 unitop.bg, 1 unitpurchaseplan.com, 1 -unitreedoor.com, 0 +unitreedoor.com, 1 unitycardiology.com.au, 1 unityconsciousnessbooks.com, 1 +unityfactory.io, 1 unityor.gov, 1 unitysavannah.org, 1 +unityseguros.com, 1 unitysyndicate.tk, 1 unityvox.com, 1 uniuni.info, 1 @@ -152248,17 +152836,18 @@ universdejeff.com, 1 universe.horse, 1 universe.la, 1 universe.wtf, 1 -universehistory.net, 0 +universehistory.net, 1 universehk.tk, 1 universellafredsdanser.se, 1 universellesleben.tk, 1 -universemasterplan.com, 0 +universemasterplan.com, 1 universen.tk, 1 universeodon.com, 1 -universereligion.com, 0 +universereligion.com, 1 universeventures.de, 1 -universevision.com, 0 +universevision.com, 1 universidadperu.com, 1 +universiteplatformu.com, 1 universitepourlavie.tk, 1 universitesegou.ml, 1 universitetsforlaget.no, 1 @@ -152269,6 +152858,7 @@ universityhealthplans.com, 1 universityhousemates.co.uk, 1 universityhousemates.uk, 1 universityinmaryland.com, 1 +universityofbohol.edu.ph, 1 universityofedinburgh.org.uk, 1 universityofnarowal.ga, 1 universitystar.com, 1 @@ -152280,6 +152870,7 @@ universus.tk, 1 univezn.nl, 1 univision.net, 1 univitale.fr, 0 +uniwor.com, 1 uniword.com, 1 unix.family, 1 unix.lu, 1 @@ -152292,6 +152883,7 @@ unixauto.hu, 1 unixauto.ro, 1 unixauto.sk, 1 unixer.tk, 1 +unixforum.org, 1 unixhost.ga, 1 unixteam.de, 1 unixtime.date, 1 @@ -152310,6 +152902,7 @@ unkrn.com, 1 unleashfido.com, 1 unlimit.com, 1 unlimitedconference.id, 1 +unlimiteddata.digital, 1 unlimiteddsl.ga, 1 unlimitedheatingcooling.com, 1 unlimitedzone.tk, 1 @@ -152325,11 +152918,12 @@ unlockscheveningen.nl, 1 unlocktalent.gov, 1 unlocktoolactivation.in, 1 unlockyourbrain.bzh, 1 -unluco.com, 0 +unluco.com, 1 unmarkdocs.co, 1 unmask.earth, 1 unmatched.ventures, 1 unmetric.com, 1 +unmfoundation.com, 1 unminutomami.com, 1 unmo.com, 1 unmoneye.com, 1 @@ -152344,6 +152938,7 @@ unobrindes.com.br, 1 unoccupyabq.org, 1 unocha.org, 1 unofficialbpb.tk, 1 +unolab.cz, 1 unomodels.com, 1 unoodostoques.tk, 1 unope.ml, 1 @@ -152370,6 +152965,7 @@ unpr.dk, 1 unpuzzled.net, 1 unreal-estate.cz, 1 unreal-estate.pl, 1 +unreal.dk, 1 unrealircd-api.org, 1 unrealircd.org, 1 unrealphotographs.com, 1 @@ -152387,12 +152983,12 @@ unsee.cc, 1 unseeliefilms.com, 1 unseeliepress.com, 1 unser-barsinghausen.de, 1 +unser-gartenbauverein.de, 1 unser-gartenforum.de, 1 unsigcrazy.art, 1 unsourirealecole.fr, 1 unstable.systems, 1 unstablewormhole.ltd, 1 -unstartdev.eu.org, 1 unstockd.org, 1 unstoppable.money, 1 unstoppabledomains.com, 1 @@ -152407,15 +153003,17 @@ unternehmensberater-website.de, 1 unternehmensbewertung.pro, 1 unternehmerrat-hagen.de, 1 unternimmteam.de, 1 +untethereddog.com, 0 unti.me, 1 unti.tk, 1 -untold.agency, 1 +untidybits.com, 1 untrading.org, 1 untvweb.com, 1 unufoundation.com, 1 unukase.ac.id, 1 unun.fi, 0 unusualhatclub.com, 1 +unusualsubstance.com, 1 unvarnishedco.com, 1 unveilturkey.com, 1 unvired.com, 1 @@ -152425,6 +153023,7 @@ unwiredbrain.com, 0 unwishingmoon.com, 1 unwomen.de, 1 unworthy.ml, 1 +unwrittens.net, 1 unx.dk, 1 unxicdellum.cat, 1 uny.ac.id, 1 @@ -152442,8 +153041,11 @@ up.com.au, 1 up.nic.in, 1 up1s.tk, 1 up2date.com.ua, 1 +up2mark.com, 0 up2staff.com, 1 +up2tech.fr, 1 upaaquila.org, 1 +upahminimum.com, 1 upaisa.com, 1 upakovka-podarkov.tk, 1 upandatom.biz, 1 @@ -152460,15 +153062,15 @@ upbeatrobot.net, 1 upbeatrobot.nl, 1 upbeatrobot.org, 1 upbeatrobot.social, 1 -upbit.com, 0 upbtrbt.com, 1 upbtrbt.eu, 1 upbtrbt.net, 1 upbtrbt.nl, 1 upbtrbt.org, 1 +upclinic.ru, 0 upcloud.cz, 1 upcwifikeys.com, 1 -upcycleandcompany.com, 0 +upcycleandcompany.com, 1 upd.ch, 1 upd.jp, 1 updata.com, 1 @@ -152479,6 +153081,7 @@ updating.social, 1 updefense.io, 1 updoze.com, 1 upengo.com, 1 +uperne.ro, 1 upestudios.tk, 1 upex.tk, 1 upfield.com, 1 @@ -152490,20 +153093,22 @@ upgamerengine.com, 1 upgamerengine.com.br, 1 upgamerengine.net, 1 upgeradores.com.br, 1 +upgintl.com, 1 upgrade.com, 1 upgradeguru.de, 1 upgradeit.dk, 1 upgradeloans.com, 1 upgrades-and-options.com, 1 upgraid.ru, 1 -upgrow.com, 1 upguard-team.com, 1 upguard.com, 1 upguard.com.au, 1 upguard.in, 1 upguard.org, 1 upguardinc.com, 1 +uphabit.io, 1 uphold-15-party.com, 1 +upholsterycleanerslondon.co.uk, 1 upholsterydesign.com.au, 1 uphost.be, 1 uphshrine.net, 1 @@ -152514,7 +153119,7 @@ upl.pp.ua, 1 uplandsparkmo.gov, 1 uplaqui.com.br, 1 uplead.com, 1 -upleveled.io, 1 +upleveled.io, 0 uplexis.com.br, 1 upliftingappalachia.org, 1 upliftweb.com.au, 1 @@ -152523,6 +153128,7 @@ uplinklabs.net, 1 upload.facebook.com, 0 uploadbaz.me, 1 uploadbeta.com, 1 +uploadcare.com, 1 uploadletters.com, 1 uploads.su, 1 uploadscript.tk, 1 @@ -152536,10 +153142,12 @@ upmls.com, 1 upmon.com, 1 upnetwork.ml, 1 upnext.tk, 1 +upnorth.solutions, 1 uportal.tk, 1 uppercloud.cf, 1 upperglass.co.uk, 1 uppergroup.co.za, 1 +upperhunterlibraries.net.au, 1 upperinc.com, 1 upperskagittribe-nsn.gov, 1 uppfinnarenc.tk, 1 @@ -152550,7 +153158,6 @@ upr.edu, 1 upr.llc, 1 upr.si, 1 upr.ua, 1 -upra.gov.co, 1 uprawnienia-1kv.pl, 1 uprawnienia-dronowe.pl, 1 uprawnienia-drony.pl, 1 @@ -152576,11 +153183,13 @@ upropay.com, 1 upschreven.blog, 0 upsettunnel.com, 1 upshurda.com, 1 +upsidelearning.com, 1 upsilonsigmaphi.us, 1 upskill.cl, 1 upskilllearning.ml, 1 upskirtmania.tk, 1 upsocial.ga, 1 +upsocial.pp.ua, 1 upstaff.com, 1 upstairs.one, 1 upstart.com, 1 @@ -152591,6 +153200,7 @@ uptakedigital.com.au, 1 uptech.biz.id, 1 uptechbrasil.com.br, 1 uptic.net, 0 +uptime-alert.com, 1 uptimed.com, 1 uptimeplus.ir, 1 uptimeradar.com, 1 @@ -152603,8 +153213,8 @@ uptrends.de, 1 upundit.com, 1 upviews.tk, 1 upwardcreative.com, 1 +upwardflourish.com, 1 upwardtraining.co.uk, 1 -upwebmobilepro.com, 1 upwork.com, 1 upyourbusiness.nl, 1 uq1k.com, 1 @@ -152663,7 +153273,6 @@ urbangaming.tk, 1 urbangardening.ga, 1 urbangymfirenze.com, 1 urbanhabitats.org, 1 -urbanhome.jp.net, 1 urbanhost.tk, 1 urbanhotbed.eu, 1 urbanhub.lt, 1 @@ -152692,13 +153301,11 @@ urbantz.com, 1 urbanusonline.tk, 1 urbanwaters.gov, 1 urbanwave.co.za, 1 -urbanwear.co.za, 1 urbanweek.cz, 1 urbanwindows.ca, 1 urbanxdevelopment.com, 0 urbest.io, 1 urbex-bretagne.fr, 1 -urbex.com.au, 1 urbex.link, 1 urbexdk.nl, 1 urbinat.eu, 1 @@ -152714,6 +153321,7 @@ urcentral.nl, 1 urcentral.org, 1 urcommunitytimebanking.org.au, 1 urdoverie.com, 1 +urdumediamonitor.com, 1 urenaphoto.com, 1 ureve.paris, 1 urfreecon.tk, 1 @@ -152725,6 +153333,7 @@ urgent-notice.ml, 1 urgentcaresouthaven.com, 1 urgrafix.com, 1 urikon.ch, 1 +urinow.com, 1 urion.com.br, 1 uriport.com, 1 uriports.com, 1 @@ -152734,6 +153343,7 @@ urke.tk, 1 urkhole.tk, 1 urko.shop, 1 urkonsultant.tk, 1 +urkult.se, 0 url.fm, 1 url.rw, 0 urlakite.com, 1 @@ -152741,7 +153351,6 @@ urlaub-busreisen.de, 1 urlaub-fuerteventura.info, 1 urlaub-leitner.at, 1 urlaub.de, 1 -urlaubshighlights.de, 1 urlaubsziele.com, 1 urlbox.tk, 1 urlcitr.us, 1 @@ -152751,8 +153360,8 @@ urlfly.tk, 1 urlgoo.ga, 1 urlive.ga, 1 urljournal.tk, 1 +urlparse.com, 1 urlr.me, 1 -urlrating.com, 1 urlrewriting.net, 1 urlscan.io, 1 urlsimple.tk, 1 @@ -152760,7 +153369,6 @@ urlsmush.com, 1 urlss.de, 1 urltell.com, 1 urltodomain.com, 1 -urluberlu.com, 1 urluno.com, 1 urlwing.tk, 1 urlz.ml, 1 @@ -152785,6 +153393,7 @@ urotek.my, 1 uroute.co, 1 urrestarazuserranoabogados.com, 1 ursa-minor-beta.org, 1 +ursae.co, 1 ursonatefanzine.tk, 1 urspringer.com, 1 urspringer.de, 1 @@ -152810,7 +153419,6 @@ usa-greencard.eu, 1 usa-reisetipps.net, 1 usa.gov, 1 usa250.gov, 1 -usa2me.com, 1 usaa.com, 0 usabackground.com, 1 usabilis.com, 0 @@ -152826,7 +153434,6 @@ usadf.gov, 1 usadirectory.tk, 1 usadocnetwork.com, 1 usaestaonline.com, 1 -usaeuc.com, 1 usage.be, 1 usagi-ku.ga, 1 usagm.gov, 1 @@ -152854,7 +153461,6 @@ usatales.com, 0 usatiuk.com, 1 usatodaynetworkservice.com, 1 usatodaysportsplus.com, 1 -usautomatic.com, 1 usavingsbank.com, 1 usaweblist.tk, 1 usawireguard.com, 1 @@ -152863,13 +153469,11 @@ usbcompatible.com, 1 usbevents.co.uk, 1 usbmakers.com, 1 usbr.gov, 1 -uscc.gov, 1 uscc.org.ua, 1 uscdn.xyz, 0 uscis.gov, 1 uscitizenship.info, 1 uscloud.nl, 1 -usconsulate.gov, 1 uscp8.com, 1 usctt.org, 1 uscurrency.gov, 1 @@ -152884,11 +153488,9 @@ usdoscloud.gov, 1 usdrugtestcenters.com, 1 usds.gov, 1 usdstandard.com, 1 -usdt0.to, 1 use1.net, 1 usebosin.gq, 1 usebubbles.com, 1 -usecarscout.com, 1 used-laptop.in, 1 used255.xyz, 1 usedoilfieldhouses.com, 1 @@ -152897,8 +153499,8 @@ usefulinsight.com, 1 usefultravelsite.com, 1 useguestlist.com, 1 usehalo.com, 1 +useinsider.com, 1 useloom.com, 1 -usembassy.gov, 1 usemergencyservices.com, 1 usenet.tk, 1 usenethd.li, 1 @@ -152911,7 +153513,6 @@ user-daitron.jp, 1 userbase.com, 1 usercentrics.com, 1 usercompare.tk, 1 -userguide.digital, 1 userhelp.tk, 1 userjs.org, 1 username.nz, 1 @@ -152933,7 +153534,6 @@ usgs.gov, 1 ushare.ch, 1 ushealthprovider.ga, 1 usherwoodexecutivetravel.com, 1 -ushinegt.com, 1 usicecenter.gov, 1 usich.gov, 1 usidfc.gov, 1 @@ -152961,16 +153561,18 @@ usmantrader.gq, 1 usmc-mccs.us, 1 usmiddleclass.net, 1 usmint.gov, 1 -usmission.gov, 1 +usmoneyreserve.com, 1 usmrecycles.com, 1 usnews-new.tk, 1 usnews.ga, 1 usninosnikrcni.eu, 1 +usnti.com, 1 usnwc.edu, 0 usodesu.ga, 1 usoog.com, 1 usoptical.com, 1 uspaacc.com, 1 +usparceldelivery.com, 1 usparklodging.com, 1 uspasecurity.com, 1 uspeh62.tk, 1 @@ -152982,6 +153584,7 @@ usplate.com, 1 uspon.tk, 1 usportsgo.com, 1 uspory.cz, 1 +uspower.us, 1 uspsblog.com, 0 uspsoig.gov, 1 uspsolutions.at, 1 @@ -153005,12 +153608,13 @@ ustc.run, 1 ustg.net, 1 ustoy.com, 1 ustr.gov, 1 +ustreasuryetf.com, 1 ustugov.kiev.ua, 1 ustugova.kiev.ua, 1 ustyj.tk, 1 usu.org.ua, 1 usuan.net, 1 -usul.ai, 0 +usul.ai, 1 usuluddin.ga, 1 usuluddin.tk, 1 usuwanie-wirusow-wordpress.pl, 1 @@ -153071,15 +153675,14 @@ utilitarismo.com, 1 utilitiesconstructionsettlement.com, 1 utilitronium-shockwave.com, 1 utilitronium.com, 1 -utilizaciya.com, 1 +utilityapi.com, 1 utko12.ru, 1 utleg.gov, 1 -utleio.no, 1 utloperadora.com.br, 1 +utobo.com, 1 +utobrokers.com, 1 utodyg.ga, 1 -uton.cz, 1 utonia.ch, 1 -utop.io, 1 utopialgb.org.uk, 1 utopian-institute.tk, 1 utopian-surgery.com, 1 @@ -153097,6 +153700,7 @@ utrymningsplaner.se, 1 uttama.ga, 1 uttenheim.net, 1 utterberry.io, 1 +utube.ai, 1 utural.tk, 1 utusan.com.my, 1 utvbloggen.se, 1 @@ -153134,6 +153738,7 @@ uvomaltiv.ch, 1 uvsa.org.au, 1 uvsar.com, 1 uvt.com.co, 1 +uwac.co.uk, 0 uwalumni.com, 0 uwat.cc, 1 uwat.cf, 1 @@ -153147,6 +153752,7 @@ uweeze.com, 1 uwefreund.com, 1 uweier.com, 1 uwereimold.de, 1 +uwesander.de, 1 uwfreelanceopticien.nl, 1 uwfvoyager.com, 1 uwiventuresltd.com, 1 @@ -153156,6 +153762,7 @@ uwsalonboot.nl, 0 uwtd.me, 1 uwu.co.nz, 1 uwu.lgbt, 0 +uwu.nu, 1 uwu.tw, 1 uwv.nl, 0 uwwsb.com, 1 @@ -153169,6 +153776,7 @@ uxteam.com, 1 uxtly.com, 1 uy.search.yahoo.com, 0 uydutamircisiadana.com, 1 +uyghurian.com, 1 uygindir.ml, 1 uyguluyo.com, 1 uygur.org, 1 @@ -153178,6 +153786,7 @@ uz.search.yahoo.com, 0 uz1xbet.com, 1 uzagmozemunk.ga, 1 uzagmozemunk.ml, 1 +uzayliyiz.biz, 1 uzbaza.tk, 1 uzbek-soft.tk, 1 uzbekforum.org, 1 @@ -153190,7 +153799,6 @@ uzbektumblers.tk, 1 uzbwap.tk, 1 uze-mobility.com, 1 uze-store.com, 1 -uzemke.de, 1 uzhas-uzhasny.ml, 1 uzhgorod-news.ru, 1 uzhits.cf, 1 @@ -153201,12 +153809,12 @@ uzmankirala.com, 1 uznaychtotakoe.ru, 1 uzoic.com, 1 uzone.uk, 0 +uzparimatch.com, 1 uzsvm.cz, 1 uztop.ml, 1 uzvod.com, 1 uzzamari.com, 1 uzzamari.com.br, 1 -v-chipak.de, 1 v-cn.net, 1 v-d-p.net, 1 v-empower.com, 1 @@ -153218,11 +153826,12 @@ v-media.tk, 1 v-news.tk, 1 v-novosibirske.tk, 1 v-phoenix.tk, 1 +v-plus.ru, 1 v-spin.cz, 1 v-tek.fi, 1 +v-zone.org, 1 v.pn, 1 v.ps, 1 -v.sc, 1 v0ctor.me, 1 v0i.de, 1 v0v.cc, 1 @@ -153238,9 +153847,10 @@ v2bv.net, 1 v2bv.win, 1 v2ex.com, 1 v2generalcontractors.com, 1 +v2x.sk, 1 v2xtls.org, 1 +v2yes.com, 0 v36533.com, 1 -v4itservices.com.au, 1 v51365.com, 1 v5197.co, 1 v55565.com, 0 @@ -153276,23 +153886,21 @@ vaanivarta.com, 1 vaartjesboten.nl, 1 vaartuighuren.nl, 1 vaat.io, 1 -vaayaa.com, 1 vabusinesses.org, 1 +vacacionesenlinea.com, 1 vacaf.org, 1 -vacances-ideales-france.top, 1 vacances-ideales.top, 1 -vacansier.com, 1 vacanze-in-montagna-dolomiti.com, 1 vacanze-merano.org, 1 vacatecleaning.melbourne, 1 vacati0n.tk, 1 vacation-in-pisak.tk, 1 vacationfund.co, 1 +vacationsforcouples.com, 1 vacationswithheather.com, 1 vacaturesonline.nl, 1 vaccantcorner.ml, 1 vaccinateiowa.gov, 1 -vaccinatieregister.nl, 1 vaccine.gov, 1 vaccines.gov, 1 vaccinestats.net, 1 @@ -153305,8 +153913,8 @@ vaclan.tk, 1 vaclavambroz.eu, 1 vacorps.com, 1 vacpackmedical.net, 1 -vacs.network, 1 vacsafe.cc, 1 +vacu.store, 1 vacuna.gov, 1 vacunas.gov, 1 vacuumsealers.ml, 1 @@ -153326,7 +153934,6 @@ vadosware.io, 1 vadras.rs, 1 vadstudio.md, 1 vadstudio.site, 1 -vaeksthjulet.net, 1 vael.town, 1 vaerdivand.dk, 1 vaew.com, 1 @@ -153355,9 +153962,7 @@ vahle.de, 1 vahoshop.cz, 1 vaibhavchatarkar.com, 0 vaidikapriya.pub, 0 -vaiiya.org, 1 vail.gov, 1 -vailox.com, 1 vaindil.com, 1 vaioswolke.xyz, 0 vairuok.lt, 1 @@ -153367,6 +153972,7 @@ vakantiedetective.nl, 1 vakantiehuis-ribbers.nl, 1 vakantiehuisverzekeringen.nl, 1 vakantieinfo.tk, 1 +vakantieverblijfalgarve.nl, 1 vakat.eu, 1 vakifuniver.ru, 1 vakrebella.no, 1 @@ -153432,7 +154038,7 @@ valerian.tk, 1 valeriansaliou.name, 1 valeriapanarina.com, 0 valerieadolff.com, 0 -valerielittlewood.uk, 1 +valeriya.life, 1 valeriymaleev.com, 1 valeryvenom.net, 1 valescarodrigues.com.br, 1 @@ -153440,11 +154046,12 @@ valetez.com, 0 valeuraenergy.com, 1 valgagym.ee, 1 valgavesi.ee, 1 +valgeklaar.ee, 1 valhallastrengthsthbne.com.au, 1 -valia.health, 1 valiakhmetov.tk, 1 valiant.finance, 1 valiantprep.org, 1 +valianttms.com, 1 valice.com.au, 1 valid.com, 0 validateleads.com, 1 @@ -153471,7 +154078,6 @@ valkohattu.fi, 1 valkoi-konyvtar.tk, 1 valkoi-ksk.tk, 1 valkova.net, 1 -valkyrthreatintel.com, 1 valladolidlempira.tk, 1 vallansuunta.net, 1 vallartense.tk, 1 @@ -153481,6 +154087,7 @@ valledeleresma.tk, 1 valledibraies.org, 1 vallee-egoutiers.ca, 1 valleesenlutte.org, 1 +vallei-veluwe.nl, 1 vallejo.gov, 1 vallejoca.gov, 1 vallenar.tk, 1 @@ -153492,13 +154099,12 @@ valleycom.com, 1 valleycountyid.gov, 1 valleycountyne.gov, 1 valleydalecottage.com.au, 1 -valleydisasterfair.com, 1 +valleymarketonline.com, 1 valleyofdeath.tk, 1 valleyofpeace.co.nz, 1 valleyshop.ca, 1 valleystories.ga, 1 valleysupply.biz, 1 -valleyviewfarm.ca, 1 valleywaste.ca, 1 valleywidetvrepair.ml, 1 valleywisehealth.org, 1 @@ -153542,7 +154148,6 @@ value4coins.com, 1 valueaddedonline.com, 1 valuelinksoftware.com, 1 valuemax.com.sg, 1 -valuemetric.gr, 1 valuemomentum.com, 1 valuemyhome.co.uk, 1 valuemyhome.uk, 1 @@ -153563,7 +154168,6 @@ valuskills.co.za, 1 valuta-tools.nl, 1 valuuttamuunnin.com, 1 valvulasvaneo.com, 1 -valyrsec.com, 1 vam-podarok.tk, 1 vam3.com, 1 vamaplatform.com, 1 @@ -153590,13 +154194,13 @@ van-eijsden.nl, 1 van-rutten.nl, 1 van.ddns.net, 1 van11y.net, 1 +vanadrighem.eu, 1 vanafhier.nl, 0 vanamersfoortracing.nl, 1 vananservices.com, 1 vanarok.xyz, 0 vanbalen.be, 1 vanbarel.tk, 1 -vanboven.nl, 1 vanboyvital.tk, 1 vanbruchem.tk, 1 vanburencounty-mi.gov, 1 @@ -153609,6 +154213,7 @@ vancouvercosmeticsurgery.ca, 1 vancouverdriveband.com, 1 vancouverok.com, 1 vancouverpetsitter.ca, 1 +vancouversbestplaces.com, 1 vancouverwaseo.org, 1 vancubers.com, 1 vandaalen.email, 1 @@ -153617,6 +154222,7 @@ vandals.ml, 1 vande-walle.eu, 1 vandegriftplasticsurgery.com, 1 vandenbroekwi.gov, 1 +vandenrecycling.com, 1 vandeput.be, 1 vander-bugenne.fr, 1 vanderbeek.be, 1 @@ -153630,7 +154236,6 @@ vandermotten.be, 1 vanderrijt.nl, 1 vanderstraeten.dynv6.net, 1 vanderzwet.net, 1 -vandeventures.net, 1 vandi.tk, 1 vandidaz.com, 1 vandiepen.com, 1 @@ -153652,7 +154257,6 @@ vangest.com, 1 vangoghcoaching.nl, 1 vanguards.tk, 1 vanhatten.com, 1 -vanheede.com, 1 vanhelsing.ml, 1 vanhelsing.tk, 1 vanherle-dakdichting.be, 1 @@ -153690,14 +154294,15 @@ vanral.com.br, 1 vanrichie.nl, 1 vanstoftotleven.nl, 1 vanta.com, 1 +vantagepointpreneed.com, 1 vantru.is, 1 vanuithartenziel.nl, 1 vanvanlines.com, 1 +vanwa.ch, 1 vanwertcountyohio.gov, 1 vanwijngaardentegelzetters.nl, 1 vanwoensei.xyz, 1 vanwoensel.directory, 1 -vanwoensel.net, 1 vanwort.de, 1 vanwunnik.com, 1 vanya.click, 1 @@ -153713,6 +154318,7 @@ vanyavpn.cz, 1 vanyavpn.ec, 1 vanyavpn.gd, 1 vanyavpn.gg, 1 +vanyavpn.gl, 1 vanyavpn.gs, 1 vanyavpn.hn, 1 vanyavpn.im, 1 @@ -153720,6 +154326,7 @@ vanyavpn.in, 1 vanyavpn.io, 1 vanyavpn.net, 1 vanyavpn.org, 1 +vanyavpn.ru, 1 vaoig.gov, 1 vapebarstore.com, 1 vapebarstore.hu, 1 @@ -153738,6 +154345,7 @@ vapeshoppos.com, 1 vapetaclope.cf, 1 vapevine.ca, 1 vapex.pl, 1 +vapify.pl, 1 vaplantatlas.org, 1 vapocial.com, 1 vapogang.cz, 1 @@ -153749,10 +154357,12 @@ vaporquest.tk, 1 vapotank.com, 1 vapoteuse.fr, 1 vapteke.ru, 1 +vaptkidsight.azurewebsites.net, 1 var.cc, 1 vara.se, 1 varaani.tk, 1 varalaval.com, 1 +varalwamp.com, 1 varcare.jp, 1 varda.nl, 1 vardenafilhcl.gq, 1 @@ -153771,7 +154381,6 @@ varimesmirou.cz, 1 variohyp.de, 1 variomedia.de, 1 various.at, 1 -varitas.io, 1 variusunum.com, 1 varizh.by, 1 varjo.tk, 1 @@ -153780,6 +154389,7 @@ varlin.tk, 1 varney.tk, 1 varnish.ga, 1 varun-rajeshwari.tk, 1 +varunagw.com, 1 varvitra20mg.ga, 1 varztupasaulis.com, 1 varztupasaulis.eu, 1 @@ -153812,7 +154422,6 @@ vash-dom.tk, 1 vashdohod.ml, 1 vashel.us, 1 vasheradio.tk, 1 -vashidverivikna.com.ua, 1 vashmatrass.ru, 1 vashprazdnik.tk, 1 vasilev.wtf, 1 @@ -153840,6 +154449,7 @@ vatadezahar.com, 1 vatav.eu, 1 vatav.tk, 1 vatazhok.com, 1 +vatc.org, 1 vatcompliance.com, 1 vates.tech, 1 vatikantour.tk, 1 @@ -153852,7 +154462,6 @@ vauceri.hr, 1 vaughanchiropractic.com, 1 vaughanrisher.com, 1 vaulavalpola.tk, 1 -vaulk.com, 1 vault-am.lu, 1 vault-tec.info, 1 vault.investments, 1 @@ -153861,16 +154470,12 @@ vault12.com, 1 vault12.io, 1 vault182.xyz, 1 vault81.de, 1 -vaultbrix.com, 1 vaultdoma.in, 1 vaulters.net, 1 vaulters.org, 1 -vaultguard.sh, 1 vaultify.club, 1 vaultlabs1226.com, 1 -vaultoy.com, 1 vaultproject.io, 0 -vaults.me, 1 vaur.fr, 1 vaurio.tk, 1 vavada.com, 1 @@ -153883,6 +154488,7 @@ vaxbook.com, 1 vayaport.com, 1 vayaprecio.es, 1 vayavotarcolorado.gov, 1 +vaygren.com, 1 vazdemelloconsultoria.com.br, 1 vazon.pp.ua, 1 vb-barbara-beck.de, 1 @@ -153900,7 +154506,7 @@ vburyatii.ml, 1 vbwinery.com, 1 vc-dealer.jp, 1 vc.enf.br, 1 -vc123.xyz, 0 +vc123.xyz, 1 vcachurch.com, 1 vcacursus.nl, 1 vcahospitals.com, 1 @@ -153944,7 +154550,6 @@ vda.li, 1 vdagestan.tk, 1 vdalabs.com, 1 vdbongard.com, 1 -vdc.re, 1 vddruckwerk.de, 1 vdele.mobi, 1 vdheyden.net, 0 @@ -153960,10 +154565,12 @@ vdolg8000rub.ga, 1 vdolg8000rub.gq, 1 vdolg8000rub.ml, 1 vdolg8000rub.tk, 1 +vdotdatasharing.org, 1 vdownloader.com, 1 vdprotezai.lt, 1 vdrei.at, 1 vdstc.com, 1 +vdu.de, 1 vdual.com, 1 vdw-instruments.com, 1 vdw.ovh, 1 @@ -153972,7 +154579,6 @@ ve.search.yahoo.com, 0 ve3oat.ca, 1 veadoscomfome.tk, 1 veast.network, 1 -veaverdock.com, 1 vebbankir-zajm-onlajn.gq, 1 vebdengi.tk, 1 veber.bg, 1 @@ -153996,6 +154602,7 @@ vectorgroupltd.com, 1 vectorizenow.com, 1 vectorlabs.com, 1 vectortrack.com.au, 1 +vectorwish.com, 1 vectrafon.com, 1 vectrum.cf, 1 vedantalimited.com, 1 @@ -154009,7 +154616,6 @@ vedma-praktik.com, 1 vedom.ru, 1 vedran-zulin.from.hr, 1 veeam.com, 1 -veebiaken.ee, 1 veebill.com, 1 veebiveski.ee, 1 veefna.com, 1 @@ -154019,16 +154625,14 @@ veerleklinge.nl, 1 veessen.tk, 1 veetalen.art, 1 veetechnologies.com, 1 +veethi.com, 1 veeva.link, 1 veg-leiden.nl, 0 veg.lv, 0 vega-rumia.com.pl, 1 -vegaforeducation.com, 1 +vegaforeducation.com, 0 vegalanguageacademy.ca, 1 vegan-essen.tk, 1 -vegan-friendly.co.il, 1 -vegan-friendly.co.uk, 1 -vegan-friendly.com, 1 vegan-hamburg.com, 1 vegan-kochen.tk, 1 vegan-pratique.fr, 1 @@ -154066,18 +154670,17 @@ vegvor.com, 1 vehicledocs.ie, 1 vehicleenquiry.service.gov.uk, 1 vehiclehistory.gov, 1 +vehicleinforcheck.com, 1 vehicleinfozone.com, 1 vehiclematsuk.com, 0 vehicletax.service.gov.uk, 1 vehimmo.com, 1 +vei.st, 1 veidiheimar.is, 1 veikkosimpanen.fi, 1 veiligesmartcities.nl, 1 -veiligthuistwente.nl, 1 veilletechno-it.info, 1 -veist.net, 1 -veist.org, 1 -veittech.xyz, 1 +veintidos.com.ar, 1 vejanoticias.com.br, 1 vejaparki.lv, 1 vejas2004.tk, 1 @@ -154094,6 +154697,7 @@ veldadvies.nl, 1 veldhovenactief.nl, 1 velekeigiles.com, 1 velen.io, 1 +veles-zakon.ru, 1 veletri.com, 1 velfag.com, 1 velferdsstaten.no, 1 @@ -154103,12 +154707,14 @@ velichkin.tk, 1 velika-balgaria.tk, 1 velikijhutir.cherkassy.ua, 1 velis.tk, 1 +velken.de, 1 vellandreathcornishcottages.com, 1 vellingetaxi.se, 1 velo-doktor.ch, 1 velo-volga.tk, 1 velo24.tk, 1 veloceo.cz, 1 +velocitas.com, 1 velocitycu.com, 1 velocityelectronics.com, 1 velocityfiber.com, 1 @@ -154128,22 +154734,18 @@ velosae.gr, 1 velosipedi.tk, 1 velosrealestate.gr, 1 velossa.gr, 1 +velostudio.com.ua, 1 velotours.ga, 1 velovelo.gq, 1 -veloxsuite.com, 1 -velozavr.ru, 1 veloztaxi.com, 1 velpak21.com, 1 velpay.io, 1 velthuysemulder.nl, 1 -veltrissolutions.com, 1 -velu.cc, 1 velutina.ovh, 1 veluwegroenonderhoud.nl, 1 veluwerally2002.tk, 1 veluzian.com, 1 velvet-tarantula.tk, 1 -velvetboudoir.com, 1 velvetempire.tk, 1 velvetfishing.bg, 1 velvetia.no, 1 @@ -154173,12 +154775,13 @@ vendermicasarapido.com.mx, 1 vendi.it, 1 vendingmachines.tk, 1 vendingsierra.com, 1 +vendingwebs.com, 1 vendiot.com, 1 -vendis.ai, 1 -vendiscapital.com, 0 +vendiscapital.com, 1 vendisrls.it, 1 venditorepoa.com.br, 1 vendloop.com, 1 +vendomatica.cl, 1 vendomicasaenserena.cl, 1 vendoo.co, 1 vendor-finance.uk, 1 @@ -154237,7 +154840,6 @@ veniceinsiderguide.com, 1 veniceoarsman.com, 1 venicerealdeal.com, 1 venlafaxine.gq, 1 -venncare.com.au, 1 venndor.eu, 1 venndordiagram.com, 1 venndordiagram.eu, 1 @@ -154270,11 +154872,8 @@ ventolin.ga, 1 ventomaxx.de, 1 ventor.ml, 1 ventosport.nl, 1 -ventoux-gites.com, 1 ventrata.com, 1 -ventrata.eu, 1 ventrata.site, 1 -ventrata.us, 1 ventuordici.org, 1 venturacourtreporters.com, 1 venturacourtreporting.com, 1 @@ -154296,6 +154895,7 @@ venus-erotic.com, 1 venus-football-giveaway.co.uk, 0 venusbeautyproducts.in, 1 venusmed.clinic, 1 +venusplc.com, 1 venzeo.com, 1 veoconocimiento.com, 1 vepein.ga, 1 @@ -154303,10 +154903,10 @@ vepein.gq, 1 veply.com, 1 ver-me.com, 1 ver.ma, 0 +ver.re, 1 vera-1.ru, 1 verae.tk, 1 verafin.com, 1 -veraforza.co.uk, 1 verakoubova.net, 1 veraltis.ro, 1 veralytix.com, 1 @@ -154320,9 +154920,8 @@ verasani.com, 1 verascityscience.com, 1 verasoie.fr, 1 verata.co, 0 -veratlas.com, 1 -veraxiss.me, 1 verbacxss.it, 1 +verbastel.de, 1 verbatimreporting.com, 1 verberne.nu, 1 verbert.be, 1 @@ -154344,32 +154943,31 @@ vercel.email, 1 vercel.org, 1 vercel.sh, 1 vercountyil.gov, 1 -verdant.works, 1 verdantnature.com, 1 verdensflag.dk, 1 verdeplus.net, 1 +verdesfoundation.org, 1 verdiclub.ru, 1 verdict.gg, 1 verdictfoodservice.com, 1 verdonkadvocaten.nl, 1 verduccies.com, 0 verdugosxerecistas.tk, 1 -verdurelle.bg, 1 veredadelaestrella.tk, 1 verein-kiekin.de, 1 +vereine-weiskirchen.de, 1 vereinscheck.de, 1 vereinswahl.online, 1 veren-group.ua, 1 verena.gallery, 1 vereshagino.tk, 1 verfassungsklage.at, 1 -vergaderenalmerehaven.nl, 1 verge-solutions.com, 1 +vergehealth.com, 1 vergelijksimonly.nl, 1 vergesense.com, 1 vergessen.cn, 1 vergezogt.nl, 1 -vergiakademisi.org, 1 vergihesaplayici.com, 1 vergilevhasi.com.tr, 1 vergraal.tk, 1 @@ -154378,12 +154976,11 @@ verhaltenstherapie-weiden.de, 1 verhaslaw.com, 1 verhave.net, 1 verhoog.xyz, 1 -verhuursport.nl, 1 veri2.com, 1 -veriage.io, 1 verif-docs.com, 1 verifalia.com, 1 verificajudicial.com, 1 +verificationguild.com, 1 verificationlink.ga, 1 verified.lu, 1 verifiedchat.co, 1 @@ -154396,6 +154993,7 @@ verifiermesactions.com, 1 verifiny.com, 1 verifize.co.za, 1 verify-365.com, 0 +verify.gov.sg, 1 verifymyeligibility.com, 1 verifyos.com, 1 verifyyourip.com, 1 @@ -154404,14 +155002,11 @@ verindra.ga, 1 veriomed.com, 1 veripages.com, 1 veripn.com, 1 -verisav.com, 1 -verisav.fr, 1 verisresidential.com, 1 veritablescreening.com, 1 veritafineviolins.com, 1 veritas-data.de, 1 veritashomeschoolers.org, 1 -veritaslab.co, 1 veriteliberte.fr, 1 veriteslibertes.com, 1 veriteslibertes.fr, 1 @@ -154439,7 +155034,6 @@ verkami.com, 1 verkeersschoolrichardschut.nl, 1 verkeersschoolvanhouten.nl, 1 verkkovalmentajat.fi, 1 -verkore.com, 1 verkossa.tk, 1 verksampsykologi.com, 1 verlag-lq.at, 1 @@ -154479,6 +155073,7 @@ vernonsecureselfstorage.ca, 1 vernonspeedskatingclub.com, 1 vernonvt.gov, 1 veronasera.it, 1 +veronaswellness.com, 1 veroncloud.com, 1 veronic.hu, 1 veronicasuperguide.nl, 1 @@ -154501,12 +155096,14 @@ versatile.ai, 0 versatilestructures.com.au, 1 versbesteld.nl, 1 verschil.info, 1 +verschoren.com, 1 verschurendegroot.nl, 1 verse.eu.org, 1 versfin.net, 1 versia.ru, 1 versich.at, 1 versichat.de, 1 +versicherung-website.de, 1 versicherungen-werner-hahn.de, 1 versicherungsmakler-in-flensburg.de, 1 versium.net, 1 @@ -154520,7 +155117,6 @@ verstraetenusedcars.be, 1 versus-hair.com, 1 versus-projects.com, 1 versusforum.tk, 1 -vert.website, 1 vertanex.com, 1 vertaxaccountants.co.uk, 1 vertebrates.com, 1 @@ -154538,7 +155134,6 @@ vertexlife.tk, 1 vertexsmb.com, 1 vertexventures.co.il, 0 vertexventures.sg, 0 -vertexvps.com, 1 vertica.com, 1 verticalmindventures.com, 1 verticals.tk, 1 @@ -154564,11 +155159,11 @@ vertretungsplan.io, 1 vertrieb-strategie.de, 1 vertrouwenspiegel.nl, 1 vertx.cc, 1 +verumwomen.com, 1 verusmedya.com, 1 verustracking.com, 1 veruvis.com, 1 verva.ai, 1 -vervato.io, 1 verve.com, 1 vervesearch.com, 1 vervewellness.co.nz, 1 @@ -154580,7 +155175,6 @@ very-good.ru, 1 veryapt.com, 1 verybin.com, 1 veryestate.com, 1 -veryfi.com, 1 veryfinecommentary.tk, 1 verygoodwebsite.ca, 1 veryhome.com.pe, 1 @@ -154598,6 +155192,7 @@ veselka.tk, 1 veselyjpovar.gq, 1 vesen.tk, 1 vesgroupinvest.com, 1 +vesinhcongnghiepttchome.com, 1 veski.hr, 0 vesmail.biz, 1 vesmail.email, 1 @@ -154614,7 +155209,7 @@ vestacp.top, 1 vestakassa-online.cf, 1 vestal.nl, 1 vestalny.gov, 1 -vestberry.com, 0 +vestberry.com, 1 vestd.com, 0 vestia.com.tr, 1 vestia.nl, 1 @@ -154622,7 +155217,6 @@ vestibtech.com, 1 vestibulaire.ch, 1 vestibular.science, 1 vestibulartechnologies.com, 1 -vestigenindenbosch.nl, 1 vestiizhevska.cf, 1 vesting-oudeschans.nl, 1 vestirnakaret.cz, 1 @@ -154639,15 +155233,16 @@ vetch.ga, 1 vetchek.au, 1 vetchek.com.au, 1 vetclick.com, 1 +vetcoretech.com, 0 veteranarmy.com, 1 veteranpcs.com, 0 -veteranrealestatesa.com, 1 veterans-railcard.co.uk, 1 veteransadvantage.com, 1 veteranscrisisline.net, 1 veteransfirstwatch.com, 1 veteransholidaylights.com, 1 veteransroofingllc.com, 1 +veteranticketsfoundation.org, 1 veterinaire-laure-dissaux.be, 1 veterinanmnm.cz, 1 veterinanmnm.eu, 1 @@ -154657,6 +155252,7 @@ veterinario.roma.it, 1 veterinary-colleges.com, 1 veterinaryhelp.cf, 1 veterinaryvision.co.uk, 1 +veteriner.name.tr, 1 veterquimica.pe, 1 vetexpressmobilevet.com.au, 1 vetgraph.com, 1 @@ -154665,7 +155261,6 @@ vetinte.eu, 1 vetitus-teatro.tk, 1 vetlanda.se, 1 vetnet.info, 1 -vetocaller.com, 1 vetofish.com, 1 vetosh.tk, 1 vetpraxis.de, 1 @@ -154673,8 +155268,10 @@ vetputten.nl, 1 vetrehabsummit.com, 1 vetren.tk, 1 vetreria.roma.it, 1 +vetres.net.au, 1 vetrnikyjavornickyhreben.cz, 1 vetrnikyrychleby.cz, 1 +vetruvet.com, 1 vets.gov, 1 vetscore.co.za, 1 vetsmarketing.co.za, 1 @@ -154683,7 +155280,8 @@ vetspecialiststherapy.co.uk, 1 vetsulin.com, 1 vettenburg.eu, 1 vetter-pharma.com, 1 -vetter.family, 0 +vetter.family, 1 +vettix.org, 1 vettweiss.de, 1 vetuni.cz, 1 vetuni.eu, 1 @@ -154697,6 +155295,7 @@ vevioz.biz.id, 1 vevioz.com, 1 vevioz.my.id, 1 vevioz.web.id, 1 +vevioz.xyz, 1 vex.ch, 1 vexavium.com, 1 vezirkopru.bel.tr, 1 @@ -154711,7 +155310,6 @@ vfk-goh.de, 1 vfn-nrw.de, 1 vfnm.de, 1 vfree.org, 0 -vfsglobal.com, 1 vfu.cz, 1 vfxstudy.com, 1 vg-resource.com, 1 @@ -154720,7 +155318,6 @@ vgatest.nl, 1 vgbf.tk, 1 vgcheat.com, 1 vgdocs.com, 1 -vgep.nl, 1 vgerak.com, 1 vgfacts.com, 1 vgis.io, 1 @@ -154732,7 +155329,9 @@ vgpu.vladimir.ru, 1 vgrd-fleet-kunden.de, 1 vgropp.de, 1 vgyse.hu, 1 +vgywm.com, 1 vhelio.org, 1 +vhg.org, 1 vhiweb.com, 1 vhmf.nl, 1 vhosting-it.com, 1 @@ -154744,15 +155343,17 @@ vhumo.com, 1 vhv-gruppe.de, 1 via-labs.com, 1 via-tygo.com, 1 -via.email, 1 -via15.nl, 1 viabill.com, 1 viacdn.org, 1 +viacon.io, 1 +viaconecta.co, 1 viacu.org, 1 +viadennis.nl, 1 viaelegancestore.com.br, 1 viaenginfeed.com, 1 viaeth.io, 1 viafoura.com, 1 +viagra-siparis.com, 1 viagra911.com.ua, 1 viagramarketim.com, 1 viagrasiparis.net, 1 @@ -154766,7 +155367,6 @@ vialto.com, 1 viamax.eu, 1 vianetplc.com, 0 viaon.net.br, 1 -viapiave33.com, 1 viaprinto.de, 1 viaprofit.tk, 1 vias-ferratas.tk, 1 @@ -154784,7 +155384,6 @@ vibbo.no, 1 vibecodescaler.com, 1 vibehire.co.uk, 1 vibeonline.tk, 1 -vibesolutions.eu, 1 vibesstudiobd.com, 1 vibgyyor.com, 1 vibioh.fr, 1 @@ -154811,16 +155410,15 @@ vichovska-vyhlidka.cz, 1 viciadasemesmaltes.com, 1 vician.cz, 1 vicicode.com, 1 +vicieux.art, 1 vicinityindustrial.com.au, 1 -vicioanimal.pt, 0 +vicioanimal.pt, 1 viciousflora.com, 1 viciousracing.tk, 1 vicjuwelen-annelore.be, 1 -vickkingduvaldemedicis.fr, 0 vickyflipfloptravels.com, 0 vickyhundt.com, 1 vickylarraz.tk, 1 -vickynoriegacoach.com, 1 vickyoliver.tk, 1 vicmatus.com, 1 vico.vn, 1 @@ -154836,7 +155434,6 @@ victorcanera.com, 1 victorcarrasco.tk, 1 victorcarwasher.com, 1 victorcatalin.ro, 1 -victordiaz.me, 1 victoreriksson.ch, 1 victoreriksson.co, 1 victoreriksson.es, 1 @@ -154855,15 +155452,15 @@ victorhorta.tk, 1 victoria-legis.ru, 1 victoriaartist.ru, 1 victoriabeckham.tk, 1 +victoriabuske.com.br, 1 victoriachick.com, 1 victoriacountytx.gov, 1 -victoriaharmandjieva.art, 0 +victoriaharmandjieva.art, 1 victoriaheritagefoundation.ca, 1 victoriaisabel.cl, 1 victoriait.com.au, 1 victoriamn.gov, 1 victorianosaez.tk, 1 -victoriapolicefitnesstest.com.au, 1 victoriareporting.com, 1 victoriareporting.net, 1 victoriastudio.ru, 1 @@ -154891,7 +155488,7 @@ vicugna.nl, 1 vicyu.com, 1 vidacalendaria.pt, 1 vidaliala.gov, 1 -vidanuevaparaelmundo.org, 0 +vidanuevaparaelmundo.org, 1 vidaparalela.tk, 1 vidapositiva.tk, 1 vidarity.com, 1 @@ -154901,7 +155498,7 @@ vidassemfronteiras.com, 1 vidawichi.tk, 1 vidaxp.com, 1 vidb.me, 1 -vidboost.net, 0 +vidboost.net, 1 vidbuchanan.co.uk, 1 vidcruiter.com, 0 vide-dressing.org, 0 @@ -154913,7 +155510,9 @@ video-lab.it, 1 video-oldenburg.de, 1 videoarcadia.cf, 1 videoarcadia.ml, 1 +videobible.com, 1 videoblogtrip.xyz, 1 +videobokep.video, 1 videocall.guide, 1 videochatv.com, 1 videochums.com, 1 @@ -154941,6 +155540,8 @@ videomail.io, 1 videomaker.it, 1 videomaniya.ml, 1 videomarketermastery.com, 1 +videonadzorvlasotince.com, 1 +videonieuwsbericht.nl, 1 videonika.tk, 1 videonovinky.cz, 1 videopediablogs.tk, 1 @@ -154966,8 +155567,8 @@ videt-son.cf, 1 videt-son.ml, 1 videt-son.tk, 1 vidhaatha.com, 1 +vidi-design.uk, 1 vidimte.eu, 1 -vidiproject.com, 1 vidispine.com, 1 vidister.de, 0 viditour-golf.nl, 1 @@ -154982,7 +155583,6 @@ vidos.id, 1 vidracariaembh.com, 1 vidracariaespelhosbh.com.br, 1 vidrasec.com, 1 -vids.cz, 1 vidulo.com, 1 vidyalayalms.com, 1 vidyamonk.com, 1 @@ -155032,6 +155632,7 @@ vientos.coop, 0 vientosur.info, 1 vieon.vn, 1 vierarkitekter.no, 1 +vieraskuu.org, 1 vierdaagsehotel.nl, 1 vieref.eu, 1 vierna.ga, 1 @@ -155041,7 +155642,6 @@ vierpluseins.wtf, 1 viesaholiday.com, 1 viesakompressor.com, 1 viesaworkair.com, 1 -viespirkiai.org, 1 viespirkiai.top, 1 vietconghackz.tk, 1 vietdungit.vn, 0 @@ -155072,18 +155672,19 @@ vieweb.tk, 1 viewer.ga, 1 viewflix.win, 1 viewfreescore.com, 1 +viewgardencentre.co.uk, 1 viewing.nyc, 1 +viewjobs.com.au, 1 viewpointsfromfacebook.com, 1 views4you.com, 1 +viewsea.com, 1 viewstub.com, 1 viez.vn, 1 -vifluent.com, 1 vifranco.cl, 1 vifsoft.com, 1 viggio.com.br, 0 vigiaviesaitaly.com, 1 vigil.com, 0 -vigilaclick.com, 1 vigilance.ca, 1 vigilanciaysalud.com, 1 vigilantesporcolombia.org, 1 @@ -155098,7 +155699,9 @@ vigneshkumar.com, 1 vignette.eco, 1 vignobles-querre.com, 1 vignoblesdeletat.ch, 1 -vigoinvestments.com, 1 +vigo-krankenversicherung.de, 1 +vigo-select.de, 1 +vigoinvestments.com, 0 vigordev.com, 1 vigoritout.com, 1 vigorous.co.il, 1 @@ -155112,7 +155715,6 @@ viikko.eu, 1 viikko.ga, 1 viikko.gq, 1 viikko.ml, 1 -viilari.fi, 1 viilup.com, 1 viio.me, 1 viitanen.xyz, 1 @@ -155122,6 +155724,7 @@ vijaymishra.tk, 1 vijn.io, 1 vijoe.org, 1 vijverbenodigdheden.nl, 1 +vik.im, 1 vikalbino.com, 1 vikalbino.com.br, 1 vikalpgupta.com, 0 @@ -155153,7 +155756,6 @@ viktorovi.cz, 1 viktorprevaric.eu, 1 viku.fi, 1 vikweb.hu, 1 -viky.hu, 1 vikyho.cz, 1 vila-senov.cz, 1 vila11.com.br, 1 @@ -155161,6 +155763,7 @@ vilaanimalpetshop.com, 1 vilabiamodas.com.br, 1 viladecansjove.cat, 1 viladelpingui.net, 1 +viladomyhrabuvka.cz, 1 vilafloridacapivari.com.br, 1 vilafrancaeagles.tk, 1 vilamarija.tk, 1 @@ -155173,7 +155776,6 @@ vilavilma.si, 1 vilavyhlidka.cz, 1 vilawatt.cat, 1 vilaydin.com, 1 -vilcon.dk, 1 vildlaithailand.cf, 1 vildlaithailand.gq, 1 vildlaithailand.tk, 1 @@ -155277,7 +155879,7 @@ villageofwales.gov, 1 villageofwarrenil.gov, 1 villageofwhitelaw-wi.gov, 1 villageofwitheewi.gov, 1 -villagephysicians.com, 0 +villagephysicians.com, 1 villageroadshow.com.au, 1 villageroadshowstudios.com.au, 1 villagesincrisis.tk, 1 @@ -155287,6 +155889,7 @@ villagevetcattery.co.uk, 1 villagockel.de, 1 villahistoria.ml, 1 villainsclothing.com.au, 1 +villakarma.at, 1 villakiralik.com, 1 villalmanzo.tk, 1 villamenty.com, 1 @@ -155297,12 +155900,14 @@ villaparkil.gov, 1 villapiknik.tk, 1 villard-de-lans.fr, 1 villarica.gov, 1 +villas-parfumdemyrte.fr, 1 villasepeti.com, 1 villasforsale-bali.com, 1 villasintrabali.com, 1 villasupport.it, 1 villaumbrales.tk, 1 villavaltava.fi, 1 +villaville.com, 1 villawirz.it, 1 ville-gennevilliers.fr, 1 ville-ideale.fr, 1 @@ -155314,6 +155919,7 @@ ville-sur-jarnioux.fr, 1 ville-vif.fr, 1 villegasphoto.com, 1 villehardouin.fr, 1 +villejobbtp.com, 1 villek.fi, 1 villekaaria.eu, 1 villekautto.com, 1 @@ -155324,16 +155930,15 @@ villers-ecalles.fr, 0 villesalonen.fi, 1 villian.tk, 1 villitalia.nl, 1 +villnoesser-tal.com, 1 villu.ga, 1 villu.stream, 1 villup.com, 1 -vilna.io, 1 vilondo.com, 1 vilostore.my.id, 1 viltsu.net, 1 vilvoordelaan.be, 1 vima.ch, 0 -vimar.ie, 1 vimbom.tk, 1 vimbowen.xyz, 1 vimeo.com, 1 @@ -155351,6 +155956,7 @@ vinaygakhar.tk, 1 vinaygarg.com, 1 vinc.me, 0 vinc.name.tr, 1 +vincehut.top, 1 vincejv.com, 1 vincent-haupert.de, 1 vincentaine.com, 1 @@ -155382,6 +155988,7 @@ vinciu.co, 1 vinciu.com, 0 vincour.info, 1 vincparca.com, 1 +vinculomartech.com.br, 1 vindafrid.com, 1 vindafrid.nu, 1 vindafrid.se, 1 @@ -155394,10 +156001,12 @@ vineethavarma.com, 1 vinehall.ie, 1 vinehost.net, 1 vinelli.de, 1 +vinepower.co.nz, 1 vineripenutrition.com, 1 vinesauce.info, 1 vineta.tk, 1 vinetalk.net, 1 +vineyardchurches.org.uk, 1 vineyardscartersville.com, 1 vingaardshus.dk, 1 vingahiss.se, 1 @@ -155406,12 +156015,13 @@ vingtsuncoach.tk, 1 vingugaas.ee, 0 vinicius.sl, 1 viniciuscosta.tk, 1 -vinigrandi.de, 1 +vinigas.com, 1 vinihk.com, 0 vinilart.com, 1 vinilosdecorativos.net, 1 vinistas.com, 1 vinit.tk, 1 +vinnellarabia.com, 1 vinnie.gq, 1 vinnitsa-news.ru, 1 vinny.tk, 1 @@ -155437,8 +156047,8 @@ vintagecellars.com.au, 1 vintagecommerce.it, 1 vintagejeeps.net, 1 vintagemakeupguide.com, 1 +vintagepickings.ie, 1 vintageportgifts.co.uk, 1 -vintageroadtripcollection.com, 1 vintagetoydepot.tk, 1 vintagetrailerbuyers.com, 1 vintagewedding.tk, 1 @@ -155449,13 +156059,11 @@ vinumenu.com, 1 vinylbasement.tk, 1 vinylequity.com, 1 vinylfencestlouis.com, 1 -vinylphilemag.com, 1 vinylplus.eu, 1 vinzer.tk, 1 vinzhelmets.com, 1 +vinzite.com, 1 vinzlocks.com, 1 -vinzrzo.fr, 1 -viointel.com, 1 violapiekut.com, 1 violarenate.com, 1 violetfairy.tk, 1 @@ -155475,22 +156083,19 @@ vip-sauna.tk, 1 vip-soski.tk, 1 vip-ssl.com, 1 vip-transfer.by, 1 -vip21bit.com, 1 vip4553.com, 1 vip45bet365.com, 0 vip5414.com, 1 vip6132.com, 1 +vip8522.com, 1 vipaairportsp3.gov, 1 vipbox.city, 1 -vipc.cn, 1 vipcan.com, 1 vipenvia.com.br, 1 viper-drones.com, 1 vipertechnology.com.br, 1 vipesball.me, 1 vipesball.net, 1 -vipexpdev.com, 1 -vipexperienc.com, 1 vipfitter.com, 1 vipframesandtrusses.co.nz, 1 vipgalant.ru, 1 @@ -155509,7 +156114,6 @@ vipmdh.com.ua, 1 vipmercedes.by, 1 viporiflame.tk, 1 vippclub.be, 1 -vipps.no, 1 viprow.live, 1 viprsolutions.com, 0 vipsauna.gq, 1 @@ -155519,7 +156123,6 @@ vipsibir.cf, 1 vipstat.pl, 1 viptravel.tk, 1 vipturismo-europa.com, 1 -viptvnow.com, 1 vipus.gq, 1 vipuser.info, 1 vipw6603.com, 1 @@ -155528,6 +156131,7 @@ vipw6608.com, 0 vir-tec.eu, 0 viradadrums.com, 1 virajtharinda.tk, 1 +viral-labs.com, 1 viral-loops.com, 1 viral32111.com, 1 virala.tk, 1 @@ -155543,14 +156147,13 @@ viraltobuzz.tk, 1 viralvids.gq, 1 viraly.me, 1 viralytydne.cz, 1 -viramahan.com, 0 +viramahan.com, 1 viran-khodro.tk, 1 virazh58.tk, 1 vircloud.net, 1 virgi.tk, 1 virgil.gg, 1 virgilsecurity.com, 1 -virginia.org, 1 virginiaabc.gov, 1 virginiabeachcoolsculpting.com, 1 virginiagardens-fl.gov, 1 @@ -155572,12 +156175,10 @@ virgosecurity.com.au, 1 virgulazero.com.br, 1 viridis-milites.cz, 1 viridismep.com, 1 -viridya.com, 1 virima.com, 1 virimatech.com, 1 viris.si, 1 virkhost.com, 1 -virlan.tech, 1 virnuls.co.uk, 1 virot.eu, 1 virt.dedyn.io, 1 @@ -155591,10 +156192,12 @@ virtual-assistant.ml, 1 virtual-data-room.org, 1 virtual-dba.com, 1 virtual-insanity.tk, 1 +virtual-office24.com, 1 virtual-webcam.com, 1 virtualbrands.com, 0 virtualbrestby.tk, 1 virtualbruges.tk, 1 +virtualchecker.com, 1 virtualcitehuallaga.com, 1 virtualcity.tk, 1 virtualcloud.ddns.net, 1 @@ -155610,15 +156213,12 @@ virtuality4d.com, 1 virtualization-online.org, 1 virtuallanding.com, 1 virtuallife.tv, 1 -virtualmachine.digital, 1 virtualmachine.tk, 1 virtualmemento.tk, 1 virtualmt2.pl, 1 virtualnet.ec, 1 -virtualox.io, 1 virtualpavilion.co, 1 virtualprom.tk, 1 -virtualqatar.net, 1 virtualroad.org, 1 virtualsanity.com, 1 virtualscoutschool.com, 1 @@ -155626,10 +156226,10 @@ virtualsex.ga, 1 virtualshell.ml, 1 virtualtaboo.com, 1 virtualtasksprout.com, 1 -virtualtravel.sk, 1 virtualux360.com, 1 virtualvaults.com, 0 virtualx.de, 1 +virtuareal.live, 1 virtubox.net, 1 virtubox.xyz, 1 virtubroker.com.mx, 1 @@ -155638,7 +156238,6 @@ virtuology.com, 0 virtuosae.com, 1 virturl.de, 1 virtus-group.com, 1 -virtus.institute, 1 virtussecuritysac.com.pe, 1 virty.cz, 1 virus.pm, 1 @@ -155646,7 +156245,6 @@ virusah1n1.com, 1 virusmousepads.tk, 1 virusprotect.ro, 1 virusquery.com, 1 -vis2real.de, 1 visa-master.tk, 1 visacentre.pk, 1 visaforest.com, 1 @@ -155654,6 +156252,7 @@ visafruit.com, 1 visale.fr, 1 visalia.gov, 1 visaliafarmersmarket.com, 0 +visalist.io, 1 visalogy.com, 1 visaop.com, 1 visapourailleurs.fr, 0 @@ -155661,7 +156260,6 @@ visapro.com, 1 visapro.me, 1 visaprolaw.com, 1 visarewardprogramplatform.com, 1 -visaright.eu, 1 visartdecor.com.ua, 1 visasofoz.com, 1 visasytrabajo.com, 1 @@ -155671,6 +156269,8 @@ visatitans.ca, 1 visatitans.co.uk, 1 visatitans.com, 1 visaxplorer.com, 1 +visaya.com.co, 1 +visaynou.com, 1 visceralsound.ca, 1 viscondedemaua.com.br, 1 visdetech.com, 1 @@ -155679,24 +156279,23 @@ visecoach.com, 1 visegradieskuvo.hu, 1 visegradtours.hu, 1 viseomail.fr, 1 -viseotools.fr, 1 -viseotop.fr, 1 viseum.co.uk, 1 visforvaccinated.gov, 1 vishenka.tk, 1 vishnujyothi.co.uk, 1 vishumin.pl, 1 -vishvam.cloud, 1 vishwashantiyoga.com, 1 visibilitygurus.com, 1 visiblethoughts.co.uk, 1 visicctv.com, 1 -visio.org, 0 +visio.org, 1 vision-du-net.com, 1 vision-painting.com, 0 +vision-ridge.com, 1 vision-sonnenschein.de, 1 vision2005.tk, 1 visionagrupo.com, 1 +visionamp.com, 1 visionations.com, 1 visioncloud.tk, 1 visioncraftinc.com, 1 @@ -155726,6 +156325,7 @@ visionwow.ai, 1 visionxcreative.gq, 1 visionzerocfl.gov, 1 visionzeroreporting.com, 1 +visiquate.com, 1 visit-chiyoda.tokyo, 1 visit-ro.com, 1 visit-sanbenedettodeltronto.it, 1 @@ -155745,14 +156345,12 @@ visitcmafest.com, 1 visitcolumbusga.com, 1 visitconwaysc.gov, 1 visitcrete.com, 1 -visitdenbosch.nl, 1 visitdubai.com, 1 visiteasternoregon.com, 1 visiter-tunis.tk, 1 visitfegen.se, 1 visitgaribaldi.gov, 1 visithuntingtonwv.org, 1 -visitkoksijde.be, 1 visitmo.com, 1 visitmontgomerycountyny.com, 1 visitmorelos.mx, 1 @@ -155764,9 +156362,9 @@ visitosalnes.com, 1 visitpembrokenc.com, 1 visits.ga, 1 visits.tk, 1 -visitsalo.fi, 1 visitsights.com, 1 visitsights.de, 1 +visitstegen.com, 1 visitsugartown.com, 0 visittci.com, 1 visitthematrix.tk, 1 @@ -155792,6 +156390,7 @@ vistapaket.es, 1 vistapoquei.com.br, 1 vistastylebuilder.com, 0 vistatalmidim.com.br, 1 +vistavoyage.eu, 1 vistb.me, 1 vistec-support.de, 1 vistre.com, 1 @@ -155805,6 +156404,7 @@ visualdrone.co, 1 visualetiquetas.art.br, 1 visualfabriq.com, 1 visualforce.com, 1 +visualgnome.com, 1 visualintent.com.au, 1 visualizing.info, 1 visualmarketingdeals.com, 1 @@ -155814,8 +156414,8 @@ visudira.com, 1 visunext.de, 1 visuri.de, 1 visware.com, 1 -visy.com, 1 visyeva.hu, 1 +vit2k.online, 1 vitaalcheck.nl, 1 vitaalfitcoaching.nl, 1 vitabrillanti.com, 0 @@ -155827,13 +156427,11 @@ vitahost.ml, 1 vitakov.tk, 1 vital-bg.com, 1 vital-heart.com, 1 -vital-strat.com, 1 vital.no, 1 vitalamin.at, 1 vitalamin.ch, 1 vitalchoice.com, 1 vitalengine.com, 1 -vitalglobalhub.com, 1 vitalhealthandbeauty.co.uk, 1 vitalia.cz, 1 vitaline.uz, 0 @@ -155853,7 +156451,6 @@ vitallispsy.com, 1 vitallispsy.de, 1 vitallispsy.eu, 1 vitallispsy.nl, 1 -vitalmetrics.org, 1 vitalmobility.ca, 1 vitalpartnerships.com, 1 vitalpraxis-lietz.de, 1 @@ -155862,6 +156459,7 @@ vitalsolutions.ro, 1 vitalthrills.com, 1 vitalveda.com.au, 1 vitaly.es, 1 +vitam.de, 1 vitamedgroup.com, 1 vitamina.cl, 1 vitamina.com, 1 @@ -155870,7 +156468,6 @@ vitaminka.tk, 1 vitaminmovie.ga, 1 vitamins-and-minerals.com, 1 vitamixromania.ro, 1 -vitamove.ai, 1 vitanetonline.com, 1 vitapingu.de, 1 vitario.eu, 1 @@ -155879,7 +156476,7 @@ vitavarese.tk, 1 vitavista.health, 1 vitavista.io, 1 vitay.pl, 1 -vitechteam.com, 0 +vitechteam.com, 1 vitekvirtualsolutions.com, 1 viteleaf.com, 1 viteoscrm.ch, 0 @@ -155891,6 +156488,7 @@ vithas.es, 1 vithor.io, 1 vitikit.com, 1 vitkausk.as, 1 +vitkutny.cz, 1 vitman.tk, 1 vitorpy.com, 1 vitoye.com, 1 @@ -155910,6 +156508,7 @@ vittoria.consulting, 1 vittoria.pro, 1 vittoria.run, 1 vittoriaconseil.com, 1 +vittoriorestaurant.cz, 1 vitucho.tk, 1 vitus-meppen.de, 1 viv.fi, 1 @@ -155919,7 +156518,7 @@ vivablogger.com, 1 vivabraslav.ga, 1 vivace.parts, 1 vivachile.tk, 1 -vivaconagua.org, 0 +vivaconagua.org, 1 vivacredit.bg, 1 vivactis.com, 1 vivahome.tk, 1 @@ -155927,7 +156526,6 @@ vivaio.roma.it, 1 vivaiocolombo.com, 1 vivalacloud.ru, 1 vivalajack.de, 1 -vivalakidsworld.com, 1 vivaldi.club, 1 vivaldi.com, 1 vivaldi.net, 1 @@ -155965,8 +156563,8 @@ vivemontecarlo.tk, 1 vivendi.de, 1 vivendoapalavra.org, 1 vivendoderendananet.com.br, 1 -viventa.co, 1 viventium.com, 1 +viveoriginals.com, 1 viveport.com, 1 viveportal.com, 1 viveremediglia.tk, 1 @@ -155990,18 +156588,18 @@ viviendacoomeva.com, 1 viviennelinettevandenassem.tk, 1 viviennevandenbos.nl, 1 vivimasverde.com.ar, 1 -viviraty.pl, 1 vivirenelmundo.com, 1 vivirenelpoblado.com, 1 vivirenflorida.com, 1 +vivmoris.com, 1 vivo.cam, 1 +vivoitaliankitchen.com, 1 vivoldi.com, 1 vivos.co.il, 1 vivoseg.com, 0 vivreadomicileliege.be, 1 vivun.com, 1 viwsec.com.br, 1 -vixlum.com, 1 vixrapedia.org, 1 viyf.org, 1 viyoga.co, 1 @@ -156010,6 +156608,7 @@ vizedia.ga, 1 vizeenergetiky.cz, 1 vizierdata.ca, 1 vizion.com, 1 +vizional.com, 0 vizir.ba, 1 vizirinvestimentos.com, 1 vizit-obmen.tk, 1 @@ -156022,6 +156621,7 @@ viznet.tv, 1 vizyonpara.com, 1 vizzarragrup.com, 1 vjeff.com, 1 +vjeff.net, 1 vjk.dk, 1 vjn.ee, 1 vjshop.vn, 1 @@ -156031,6 +156631,7 @@ vk-group.com, 1 vk-random.ml, 1 vk-srv.ru, 1 vk.nl, 1 +vk09.ru, 1 vk1fj.net, 1 vk2.net, 1 vk4msl.com, 1 @@ -156066,6 +156667,7 @@ vkf-spritzgusstechnik.de, 1 vkfish.ga, 1 vkflac.tk, 1 vkg.nl, 0 +vkgroup.az, 1 vkikaku.com, 0 vkino.com, 0 vkino.ml, 1 @@ -156075,6 +156677,7 @@ vklikers.tk, 1 vkolledzhe.tk, 1 vkox.com, 1 vkrutilca.tk, 1 +vksportphoto.com, 1 vkst-field-trials.dk, 1 vkstaticcdn.ru, 1 vkstaticcontent.ru, 1 @@ -156140,11 +156743,11 @@ vliegendklokske.com, 1 vliegherrie.nl, 1 vlijmscherrup.tk, 1 vlike.ml, 1 +vlndc.org, 1 vloeck.de, 1 -vloenhout.nl, 1 vloggerfaire.com, 1 vloggerspace.tk, 1 -vlogmusic.io, 0 +vlogmusic.io, 1 vlos.com.pl, 1 vlovgr.se, 1 vltx.gr, 1 @@ -156156,6 +156759,7 @@ vm0.eu, 1 vm88.top, 0 vmagadane.tk, 1 vmath.my.id, 1 +vmautorajkot.com, 1 vmc-installation-entretien.fr, 1 vmc.co.id, 1 vmccnc.com, 1 @@ -156173,7 +156777,6 @@ vmsengineering.com, 1 vmst.io, 1 vmsunergy.com, 1 vmsurgery.org, 1 -vmtowing.com, 1 vmttitlesearch.com, 1 vmug.pl, 1 vmurmanske.tk, 1 @@ -156187,6 +156790,7 @@ vnctdj.fr, 1 vnd.cloud, 1 vneftekamske.tk, 1 vnetboard.com, 1 +vng.de, 1 vnhsmirror.com, 1 vniiimt.ru, 1 vnikolaev.tk, 1 @@ -156220,7 +156824,7 @@ vns6868.com, 0 vns6868.vip, 1 vns68722.com, 1 vns6969.com, 0 -vnsc.org, 0 +vnsc.org, 1 vntyper.org, 1 vnumngr.com, 1 vnxf.vn, 1 @@ -156250,7 +156854,6 @@ vodex.ai, 0 vodicak.info, 1 vodicaknapocitac.sk, 1 voditel.ua, 1 -vodna.com.ua, 1 vodotech.sk, 1 vodpay.com, 1 vodpay.net, 1 @@ -156271,13 +156874,14 @@ voevodin.tk, 1 vofem.ru, 1 voffka.com, 1 vofwittenbergwi.gov, 1 +vofy.cz, 1 vogel-verhuizingen.nl, 1 vogelbus.ch, 1 vogelwereld.tk, 1 vogler.name, 1 vogt.sh, 1 vogue.co.uk, 1 -vogue.cz, 0 +vogue.cz, 1 vogue.gr, 1 vogue.ph, 1 voguefabricsstore.com, 1 @@ -156299,7 +156903,7 @@ voiceofprague.cz, 1 voiceofprague.eu, 1 voiceofprague.sk, 1 voiceofserbia.tk, 1 -voicesforanimals.ru, 0 +voicesforanimals.ru, 1 voicesoflabor.com, 1 voicesuk.co.uk, 0 voicu.ch, 0 @@ -156322,8 +156926,6 @@ voidscrawl.com, 1 voidwalkerproductions.com, 1 voigt-analytics.de, 1 voigt-it.solutions, 0 -voigt-owschlag.de, 1 -voigtarchitects.co.uk, 1 voileux.org, 1 voimix.ee, 1 voinikoo.ee, 1 @@ -156335,13 +156937,13 @@ voipreviews.com, 1 voiretmanger.fr, 1 voiretrevu.ca, 1 voirie-suresnes.fr, 1 -voiser.ai, 1 voitolla.com, 1 voix-bien-etre.com, 0 vojenshandicap.dk, 1 vojk.au, 1 vojtat.cz, 1 vokabl.io, 1 +vokabula.com, 1 vokieciupamokos.lt, 1 vokimberlywi.gov, 1 vokov.ml, 1 @@ -156385,6 +156987,7 @@ volichat.com, 1 volin.tk, 1 volk.ga, 1 volk.gq, 1 +volkanyilmaz.com.tr, 1 volker-gropp.de, 1 volkergropp.de, 1 volkerwesselstransfer.nl, 0 @@ -156430,14 +157033,15 @@ volosi.tk, 1 volreinsistemas.com, 1 volshebniki.ua, 1 volstatebank.com, 1 -volt-e.de, 1 +volt.fm, 1 volt.link, 1 volt.social, 1 volt.team, 1 +volta.io, 1 voltacircuit.com, 1 voltageelectricity.tk, 1 voltagevb.com, 1 -voltainsite.com, 0 +voltainsite.com, 1 voltalbania.org, 1 voltarengelprice.tk, 1 voltarengeneric.tk, 1 @@ -156466,13 +157070,13 @@ voltiumlab.es, 1 voltkosova.org, 1 voltkosovo.org, 1 voltletzebuerg.org, 1 -voltlinjeforening.no, 1 voltluxembourg.org, 1 voltluxemburg.org, 1 voltmagyarorszag.org, 1 voltmalta.org, 1 voltnederland.org, 1 voltnorway.org, 1 +volto.io, 1 voltoesterreich.org, 1 voltpoland.org, 1 voltpolska.org, 1 @@ -156504,6 +157108,7 @@ volusiasheriff.gov, 1 volusiavotes.gov, 1 volvo-klub.cz, 1 volvo1800es.tk, 1 +volvoconnect.com, 1 volvoklub.cz, 1 volyn-news.ru, 1 vomitoxin.ga, 1 @@ -156517,7 +157122,6 @@ vonauw.com, 0 vonckers.tk, 1 voncurr.com, 1 vondenstein.com, 1 -vondra.cz, 1 vonfurstenrechtstables.nl, 1 vongernhome.com, 1 vonimus.com, 1 @@ -156531,11 +157135,12 @@ voodoobeginner.com, 1 voodoobtc.com, 1 voodoocat.cf, 1 voodooshaman.com, 1 +vooh.in, 1 vookstock.tk, 1 voom.pt, 1 -voondo.de, 1 voorbijhetstigma.nl, 1 voorde.lol, 0 +voordehand.nl, 1 vooreenbeginner.nl, 1 voorhoede.nl, 1 voornaam-at-achternaam.be, 1 @@ -156547,7 +157152,6 @@ voprosnik.gq, 1 voprosownet.tk, 1 voquent.com, 1 vorandor.com, 1 -vorbatec.de, 1 vorbis.cz, 1 vorbrodt.blog, 1 vorderklier.de, 1 @@ -156567,10 +157171,12 @@ vort-x.com.my, 1 vortari.tk, 1 vorte.ga, 1 vortexbaits.com, 1 +vortexevents.net, 1 vortexflight.com, 1 vortexhosting.ga, 1 vortexplumbinginc.com, 1 vortix.tk, 1 +vorxdigital.com, 1 vos-consultancy.org, 1 vos-fleurs.ch, 1 vos-fleurs.com, 1 @@ -156599,6 +157205,7 @@ vot-tak-vot.tk, 1 votajeffcoco.gov, 1 votan.cf, 1 vote.gov, 1 +vote.nz, 1 vote.org, 1 votealachua.gov, 1 votebradfordfl.gov, 1 @@ -156660,6 +157267,7 @@ votrepolice.ch, 0 votrespace.ca, 1 votrevoyagedenoces.fr, 1 vouchers4u.com, 1 +voucherx.co.uk, 1 vought-vip.com, 1 vous-etre-utile-ceidf.fr, 1 vous-les-jeunnes.tk, 1 @@ -156687,6 +157295,7 @@ voxfa.com, 1 voxio.nl, 1 voxpopuli.com, 1 voxturba.com, 1 +voxx1116.com, 1 voyage-martinique.fr, 1 voyage2africa.com, 1 voyageforum.com, 1 @@ -156715,13 +157324,12 @@ vozhatik.cf, 1 vozhuo.cf, 1 vozolmarketim.com, 1 vp-arc.org, 1 -vp.ls, 1 vparilke.su, 1 vpbuilds.com, 1 vpcfiberglass.com, 1 -vpd-calculator.com, 1 vpetkov.tk, 1 vpex.de, 1 +vplace.vn, 1 vpn-review.com, 1 vpn-suomi.fi, 1 vpn-sverige.se, 1 @@ -156757,7 +157365,9 @@ vpsgongyi.com, 0 vpsji.com, 1 vpsmore.com, 1 vpsou.com, 1 +vpspenergy.com, 1 vpsport.ch, 1 +vpsrussia.com, 1 vpsssl.com, 1 vpstrial.net, 1 vpsvz.cloud, 1 @@ -156817,6 +157427,7 @@ vr-immoponteq.de, 1 vr-immoservice.com, 1 vr-immoservice.net, 1 vr-immoworld.de, 1 +vr-payment.de, 1 vr-re-bank.ag, 1 vr-re-bank.at, 1 vr-re-bank.biz, 1 @@ -156860,7 +157471,6 @@ vr-realestate.info, 1 vr-realestate.net, 1 vr-realestate.org, 1 vr-rudi.de, 1 -vr0.fr, 1 vrac-drive.ch, 1 vracdrive.ch, 1 vrachi.online, 1 @@ -156879,7 +157489,6 @@ vrbangers.com, 1 vrbl.pt, 1 vrbq.qld.gov.au, 1 vrbr.ch, 0 -vrcberks.org, 1 vrcentrum.cz, 1 vrchat.community, 1 vrconk.com, 1 @@ -156946,9 +157555,11 @@ vrnhn.nl, 0 vroad.org, 1 vroedvrouwella.be, 1 vron.house, 1 -vroomvroomvroom.co.nz, 1 +vroomvroomvroom.co.nz, 0 vros.co.id, 1 vrostove.tk, 1 +vrp.moe, 1 +vrpornsites.xxx, 1 vrre.ag, 1 vrre.at, 1 vrre.biz, 1 @@ -156996,12 +157607,12 @@ vrtemptation.com, 1 vrtidaho.gov, 1 vrtouring.org, 1 vrtuoluo.com, 1 +vrumcar.com, 1 vrzas.net, 1 vrzl.pro, 1 vs603.com, 1 vs6060.com, 0 vsactivity.com, 1 -vsafe.gov, 1 vsamsonov.com, 1 vsaratove.tk, 1 vsatke.tk, 1 @@ -157019,7 +157630,6 @@ vsec.co.il, 1 vsee.com, 1 vsekulinar.ru, 0 vsem-reiki.tk, 1 -vsempodarok.com, 1 vsemrabota.ml, 1 vsenovosti.cf, 1 vseostile.ml, 1 @@ -157065,7 +157675,6 @@ vtcynic.com, 1 vtech.com, 1 vtechda.com, 1 vtechhealthcare.com, 1 -vtechsoln.in, 1 vtechsolution.com, 1 vtescebu.com, 1 vtexpayments.com.br, 1 @@ -157073,7 +157682,7 @@ vtipe-vylez.cz, 0 vtipkar.cz, 1 vtjud.gov, 1 vtklan.tk, 1 -vtliving.com, 1 +vtliving.com, 0 vtm.be, 1 vtmgo.be, 1 vtops.com, 1 @@ -157084,13 +157693,16 @@ vtpworldofwow.in, 1 vttnordisere.fr, 1 vtuber-schedule.info, 1 vtubes.tokyo, 1 +vtul.io, 1 vtupro.com, 1 vtvnetwork.org, 1 vtwonen.be, 1 vtwonen.nl, 1 vubgenerali.sk, 1 vue-sur-mer.com, 1 +vuefactory.io, 1 vuelacaruru.com, 1 +vuelosabajoprecio.net, 1 vueworks.com, 1 vugt.me, 1 vuitimig.com, 1 @@ -157116,6 +157728,7 @@ vulndetect.com, 1 vulndetect.org, 1 vulnerability.ch, 1 vulnerabilityscans.nl, 1 +vulnerable.af, 1 vulns.sexy, 1 vulns.xyz, 1 vulnscan.org, 1 @@ -157124,6 +157737,7 @@ vulpix.uk, 1 vultrhxl.com, 1 vulva.observer, 1 vulva.photos, 1 +vumea.top, 1 vumerity.com, 0 vunn.com, 1 vuojolahti.fi, 0 @@ -157132,10 +157746,11 @@ vuoto.fi, 1 vurdering.com, 1 vurdst.dk, 1 vurgitsin.com.tr, 1 +vusdigital.com, 0 vuse.com, 1 vutrox.com, 1 +vutruso.com, 0 vuurspuwer.com, 1 -vuvanthoa.com, 1 vux.li, 1 vuzi.fr, 1 vuzopedia.ru, 1 @@ -157152,10 +157767,11 @@ vvcasteren.nl, 1 vvd.bz, 1 vvd.nl, 1 vvdbronckhorst.nl, 1 +vveactiefbeheer.nl, 0 vvelzen.com, 1 vvg-vermietung.de, 1 vvlemmer.tk, 1 -vvlen.com, 0 +vvlen.com, 1 vvoip.org.uk, 1 vvpn.loan, 1 vvs.spb.ru, 1 @@ -157171,7 +157787,7 @@ vvzero.cf, 1 vvzero.com, 1 vw-touranclub.cz, 1 vw22.com, 1 -vwcredit.com, 0 +vwcredit.com, 1 vwforum.ro, 1 vwfs.ru, 1 vwfsfcp.com, 1 @@ -157223,12 +157839,10 @@ vysvetluju.cz, 1 vyturys.lt, 1 vytvorsipotisk.cz, 1 vytvorsitricko.cz, 1 -vywebdesign.com, 1 vyzner.cz, 1 vyzrd.com, 1 vzducho-klima.cz, 1 vzemiseo.com, 1 -vzp-online.de, 1 vzr-garant.nl, 1 vzteam.ga, 1 vzw-muzaik.tk, 1 @@ -157249,15 +157863,15 @@ w-o-o.nl, 1 w-oasis.co.jp, 1 w-p-k.de, 1 w-permission.com, 1 +w-solutionshk.xyz, 1 w-spotlight.appspot.com, 1 +w-surgeryhospital.com, 1 w-w-auto.de, 1 w-ws.ga, 1 -w.ls, 1 w.st, 1 w.wiki, 1 w0.pw, 1 w00228.com, 1 -w00f.net, 1 w03.cn, 1 w0arr.com, 1 w10club.com, 0 @@ -157274,11 +157888,10 @@ w36533.com, 1 w36594.com, 1 w398.com, 1 w3app.nl, 1 -w3consult.org, 1 w3ctag.com, 1 w3ctag.org, 1 +w3d.io, 1 w3docs.com, 1 -w3htmlschool.com, 1 w3layouts.com, 1 w3n14izy.cf, 1 w3n14izy.ga, 1 @@ -157286,7 +157899,6 @@ w3n14izy.gq, 1 w3n14izy.ml, 1 w3n14izy.tk, 1 w3scan.nl, 1 -w3software.pl, 1 w3squad.com, 1 w3web.com.br, 1 w3y.cc, 1 @@ -157296,6 +157908,7 @@ w4b.in, 1 w4eg.de, 1 w4g-security.com, 1 w4nvu.org, 1 +w4r.nl, 1 w4solutions.de, 1 w4tec.de, 1 w4xzr.xyz, 0 @@ -157327,7 +157940,6 @@ w8wat.com, 1 w9297.co, 1 w9728.co, 1 w9nb.radio, 1 -wa-ieg-aimsmblv1-idser4-prd-aueast.azurewebsites.net, 1 wa-m-web-alpcustomer-portal-caixabank.azurewebsites.net, 1 wa-m-web-alpcustomer-portal-timfin.azurewebsites.net, 1 wa-pen.com, 1 @@ -157337,7 +157949,6 @@ wa.me, 1 waaard.com, 1 waagen.tk, 1 waaifu.com, 1 -waardevolwater.nl, 1 waaynex.ch, 1 waays.eu, 1 waays.fr, 1 @@ -157361,6 +157972,7 @@ wackyblackie.eu.org, 1 wackyblackie.ml, 1 wackys.com, 1 wacotrib.com, 1 +wacpericias.com.br, 1 wacsports.com, 1 waddenzee.nl, 1 wade.gdn, 0 @@ -157378,8 +157990,8 @@ waffeln.jetzt, 1 waffle-backend-sanggyu.shop, 1 waffle-sanggyu.tk, 1 wafflehacks.org, 1 +waffleindex.com, 1 wafflemakers.ca, 1 -waflow.com.br, 1 wafreight.com, 1 wage-feeg.gc.ca, 1 wagener-gmbh.com, 1 @@ -157387,12 +157999,16 @@ wagesweldandfab.com, 1 wageworks.com, 1 wagidopaczek.pl, 1 wagihakowe.pl, 1 +wagipaletowe.pl, 1 +wagistolowe.pl, 1 wagn3r.de, 1 wagrowieckierekodzielo.pl, 1 wagspuzzle.space, 1 waguramaurice.cf, 1 wagyudelicatessen.com, 1 waha-market.top, 1 +wahana.cloud, 1 +wahana.web.id, 1 wahay.org, 1 wahine.gq, 1 wahl-co.de, 1 @@ -157418,10 +158034,8 @@ wairakeitouristpark.co.nz, 1 waisl.in, 1 waisster.com, 1 waistawayuk.co.uk, 0 -wait4it.cyou, 1 waitabu.org, 1 waithero.com, 1 -waitlister.me, 1 waits.io, 1 waitsfieldvt.gov, 1 waitz.io, 1 @@ -157441,7 +158055,6 @@ wakenyatulindane.co.ke, 1 wakeofthepredator.tk, 1 wakeskincarellc.com, 1 waketurbulencereport.eu, 1 -wakeup-media.de, 1 wakeupeire.com, 1 wakeupworld.ml, 1 waki-ci.com, 1 @@ -157473,6 +158086,7 @@ walentin.co, 1 walentynki.tk, 1 walesmaine.gov, 1 walhal.la, 1 +walhello.nl, 1 waligorska.pl, 1 walk.onl, 1 walkal.com, 1 @@ -157495,6 +158109,8 @@ walkinlab.com, 1 walkinweb.com, 1 walkman.cloud, 1 walkman.io, 1 +walkme.com, 1 +walksfourpaws.co.uk, 1 wall-banners.tk, 1 wall-of-death.co.nz, 1 wallabag.eu, 1 @@ -157505,6 +158121,7 @@ wallacecountyks.gov, 1 wallacehigh.org.uk, 1 wallada.tk, 1 wallaralogistics.com.au, 1 +wallartista.com, 1 wallcs.eu, 1 wallers.com, 1 wallet.google.com, 1 @@ -157566,7 +158183,6 @@ waltermart.ph, 1 waltermartmalls.com, 1 waltermartsupermarket.com, 1 waltermulders.be, 1 -waltio.com, 1 waltontrust.org, 1 waltthirion.com, 1 walutomat.pl, 1 @@ -157587,10 +158203,10 @@ wanda97.com, 1 wanda98.com, 1 wandel.nl, 1 wandelreizen.eu, 1 -wander.al, 0 +wander.al, 1 wander.tk, 1 wanderaura.com, 1 -wandercabins.mx, 1 +wanderclub.eu, 1 wanderersfc.tk, 1 wanderfost.com, 1 wanderfullcoven.tk, 1 @@ -157598,7 +158214,6 @@ wanderinghiker.com, 1 wanderingincaptivity.com, 1 wanderings.online, 0 wandersolo.com, 1 -wandwmovers.co.uk, 1 wandystan.eu, 1 wane.co, 1 wang.by, 1 @@ -157611,6 +158226,7 @@ wangcanmou.com, 1 wangcun.eu.org, 1 wangji.com, 1 wangjiatun.com.tw, 1 +wangjiezhe.com, 1 wangluoyunying.com, 1 wangpedersen.com, 1 wangpromherb.hu, 1 @@ -157628,7 +158244,7 @@ wangzhe100.xyz, 1 wangzuan168.cc, 1 wanicki.pl, 1 wanilia.pl, 1 -wank.party, 1 +wanjuhui.com, 1 wannabfit.nl, 1 wannaknow.tk, 1 wannapopularnews.cf, 1 @@ -157668,6 +158284,7 @@ wappie.tk, 1 wapplerbrewing.com, 1 wapresri.go.id, 1 wapspaces.tk, 1 +wapsychiatry.com.au, 1 waptransfer.tk, 1 wapuru.co.jp, 1 wapveil.ml, 1 @@ -157685,12 +158302,12 @@ warcraftjournal.org, 1 warcraftwikicz.tk, 1 ward.nl, 1 wardeath.tk, 1 -wardek.io, 1 wardemons.tk, 1 warden.navy, 1 wardnd.gov, 1 wardogz.tk, 1 wardonat.tk, 1 +wardow.com, 1 wardpieters.eu, 1 wardpieters.online, 1 wardpieters.xyz, 1 @@ -157715,7 +158332,6 @@ warennetworks.com, 1 warensecurity.com, 1 wareshoalssc.gov, 1 warezbook.org, 1 -warfare.com.br, 1 warfarina.com, 1 warfield.org.uk, 1 warfighters.de, 1 @@ -157724,12 +158340,10 @@ wargun.ml, 1 warhaggis.com, 1 warhistoryonline.com, 0 warid.ga, 1 -warigo.pl, 1 warispak.tk, 1 warking.ml, 1 warlions.info, 0 warlords.cf, 1 -warmbre.ad, 1 warmestwishes.ca, 1 warmglobe.com, 1 warmlyyours.com, 1 @@ -157737,6 +158351,7 @@ warmservers.com, 1 warmtepomp.express, 1 warnernh.gov, 1 waroengkopigazebo.net, 1 +warofelements.de, 1 waronbrain.com, 1 waronwant.org, 1 warp-radio.net, 1 @@ -157773,11 +158388,11 @@ wars.cat, 1 warsawtravelers.pl, 1 warschild.org, 1 warsh.moe, 1 -warships.cn, 1 -warsisawa.gr, 1 warstories.ca, 1 warszawa-pranie-dywanow.pl, 1 +warszawa19115.pl, 0 warszawska285.pl, 1 +wartalika.id, 0 warteg.com, 1 warteg.net, 1 wartegseberangsana.com, 1 @@ -157788,12 +158403,12 @@ wartraining.com.br, 1 wartung.tk, 1 warubbermate.co.th, 1 warungmini-vanwou.nl, 1 -warungsiyas.com, 1 warwick.institute, 1 warwickbucks.gov, 1 warworld.ml, 1 was.ch, 1 wasagrafiska.se, 1 +wasatchconstables.com, 1 wasatchcounty.gov, 1 wasatchmag.com, 1 wasatchsheriff.gov, 1 @@ -157852,17 +158467,15 @@ waspstudio.com, 1 waspvfx.com, 1 wass.ga, 1 wassenaar.org, 0 +wasser-technik-rottal.de, 1 wassermair.net, 1 wassermanx.com, 1 wassim.is, 1 waste.domains, 1 -waste.gov, 1 -wasteindustrytraining.com, 1 wastelinq.com, 1 wastewaterservicesltd.co.uk, 0 wastewise.com, 0 wastrel.ch, 1 -wasunserwartet.de, 1 wasys.com.br, 1 wat.sh, 1 wataclinic.com, 1 @@ -157871,68 +158484,27 @@ watashi.bid, 1 wataugaonline.com, 1 wataugatx.gov, 1 watboeithet.nl, 1 -watbug.com, 1 watch-host.ga, 1 watch-wiki.org, 1 watchamovie.ga, 1 -watchaward.ru, 1 watchcom.co.za, 1 watchcom.org, 1 watchcom.org.za, 1 watchcow.org, 0 watchdis.tv, 1 watchdogs.tk, 1 -watchdogsmodding.com, 1 watchdreamer.com, 1 watchersrealm.tk, 1 watches-of-switzerland.co.uk, 1 -watchexpo.ru, 1 -watchfinder.ae, 1 -watchfinder.at, 1 -watchfinder.au, 1 -watchfinder.be, 1 -watchfinder.bg, 1 -watchfinder.ch, 1 -watchfinder.co.uk, 1 -watchfinder.com, 1 -watchfinder.com.de, 1 -watchfinder.cy, 1 -watchfinder.cz, 1 -watchfinder.dk, 1 -watchfinder.ee, 1 -watchfinder.es, 1 -watchfinder.fi, 1 -watchfinder.fr, 1 -watchfinder.gr, 1 -watchfinder.hk, 1 -watchfinder.hr, 1 -watchfinder.hu, 1 -watchfinder.ie, 0 -watchfinder.is, 1 -watchfinder.it, 1 -watchfinder.lt, 1 -watchfinder.lu, 1 -watchfinder.lv, 1 -watchfinder.mt, 1 -watchfinder.nl, 1 -watchfinder.no, 1 -watchfinder.nz, 1 -watchfinder.pl, 1 -watchfinder.pt, 1 -watchfinder.ro, 1 -watchfinder.se, 1 -watchfinder.si, 1 -watchfinder.sk, 1 watchfreeonline.co.uk, 1 watchful.net, 1 watchgeneration.fr, 1 -watchmagazine.cz, 1 -watchmedia.ru, 1 watchmoviesgallery.com, 1 watchparts-and-tools-okayama.co.jp, 1 watchpeopledie.tv, 1 watchstyle.com, 1 watchthedot.com, 1 +watchthis-svp.com, 1 watchtogether.ch, 1 watchtolearn.co, 1 watchtower.pm, 1 @@ -157945,6 +158517,7 @@ water-polo.tk, 1 water-sport-bali.com, 1 water-sports-bali.com, 1 water-valley.tk, 1 +water.com, 0 waterandhealth.org, 1 waterapple09.com, 1 waterauthority.ky, 1 @@ -157979,8 +158552,10 @@ waterlemons2k.top, 1 waterlens.moe, 1 waterliteracy.tk, 1 waterloo-abba-show.de, 1 +waterloo1815.be, 1 waterloofaucets.com, 1 waterlootwpmi.gov, 1 +watermanaspen.co.uk, 1 watermarkktp.com, 1 watermarkly.com, 0 watermonitor.gov, 1 @@ -158017,15 +158592,14 @@ watgroeitwaar.nl, 1 watgroeitwaar.org, 1 wathory.com, 1 watisleukemie.tk, 1 +watismijnbandenspanning.nl, 1 watmar.com.au, 1 watnongpangtru.com, 1 -watobi.jp, 1 watongaok.gov, 1 watoo.tech, 1 watrd.com, 1 watsontownshipmi.gov, 1 watsonvillelibrary.gov, 1 -watters.com.au, 1 wattlefieldpottery.co.uk, 1 watto29.co.jp, 1 wattpad.com, 1 @@ -158046,7 +158620,6 @@ wave-cockpit.de, 1 wave-electronics.com, 0 wave-inc.co.jp, 1 wave-utilities.co.uk, 1 -wave.graphics, 1 wave.is, 1 wave.red, 1 waveestetic.com, 1 @@ -158058,10 +158631,7 @@ wavered.cf, 1 waverity.ai, 1 waverlypa.gov, 1 waverlytn.gov, 1 -wavesejoy.cloud, 1 wavesite.tk, 1 -wavycat.me, 1 -wavycat.ru, 1 waw-werbeagentur.de, 1 wawak.pl, 1 wawapuquy.com, 1 @@ -158072,8 +158642,10 @@ wawuwe.com, 1 waxcollectibles.com, 0 waxdramatic.com, 1 waxlrs.com, 1 +way.ac, 1 way2tech.de, 1 wayaberolodge.com, 1 +wayakcomm.com, 1 waybinary.com, 1 waycoolmail.tk, 1 waycraze.com, 1 @@ -158081,7 +158653,7 @@ waycrossga.gov, 1 wayfairertravel.com, 0 wayfarium.com, 1 wayflyer.com, 1 -wayizi.com, 0 +wayizi.com, 1 waymobetta.com, 1 wayna-tech.com, 1 waynecochran.net, 1 @@ -158103,12 +158675,12 @@ waynewashcowi.gov, 1 wayohoo.net, 1 waysandlore.consulting, 1 waysandlore.fr, 1 +waysandmeanstechnology.com, 1 waysport.ua, 1 waytofreedom.tk, 1 waytogrow.com, 1 waytoowoke.com, 1 waytt.cf, 1 -wazaap.be, 1 waze.com, 1 wazefaher.tk, 1 wazuh.com, 1 @@ -158136,7 +158708,7 @@ wbmonitor.eu, 1 wbnet.eu, 1 wboeijen.nl, 1 wbolt.com, 1 -wbostrom.se, 1 +wbookcompany.com, 1 wbpersonalmonitor.de, 1 wbpgroup.com.au, 1 wbphed.gov.in, 1 @@ -158155,11 +158727,11 @@ wc3modding.ml, 1 wc64.org, 1 wca.link, 1 wcaganalytics.com, 1 +wcally.com, 1 wcaquatics.org, 1 wcarc.ca, 0 wcatherinekendall.co.uk, 1 wcboost.com, 1 -wccbi.org, 1 wccsports.com, 1 wccu.coop, 1 wcei.com.au, 1 @@ -158174,16 +158746,13 @@ wcpo.com, 1 wcrca.org, 0 wcreativestudio.com, 1 wcru.one, 1 -wcrwd.it, 1 wcs.rs, 1 -wcserwis.pl, 1 wcsoe.gov, 1 wcss.com, 1 wctsite.tk, 1 wcvb.com, 1 wcwcd.gov, 1 wcwcg.net, 1 -wcx.cx, 1 wd-api.com, 0 wd-ljt.com, 1 wd.is, 1 @@ -158202,7 +158771,6 @@ wdmcheng.cn, 1 wdmg.com.ua, 1 wdmleds.com, 1 wdmn.eu, 1 -wdmodding.com, 1 wdmpa.org, 1 wdnmd.org, 1 wdntcr.com, 1 @@ -158211,6 +158779,7 @@ wdol.gov, 1 wdophoto.com, 1 wdpapi.io, 1 wdpui.io, 1 +wdrl.info, 0 wdsdownload.cf, 1 wdstrings.com, 1 wdt.cz, 0 @@ -158221,20 +158790,23 @@ we-run-linux.de, 1 we-use-linux.de, 1 we.serveftp.net, 1 we168168.com, 1 -we6k.com, 1 +we5688.net, 1 +we9988.net, 1 weacceptbitcoin.gr, 1 weakinreview.org, 1 weakspots.com, 1 wealthadvisorsmf.com, 1 +wealthadvisorstrust.com, 1 wealthcreationsolutions.ga, 1 wealthengine.com, 1 wealthprofessional.ca, 1 wealthprojector.com, 1 wealthprojector.com.au, 1 -wealthsolutions.com, 1 +wealthsimple.com, 1 wealthx.com, 1 wear-largesizes.tk, 1 wear-referrals.co.uk, 1 +wear.hk, 1 wear1015.ml, 1 wearandcare.net, 1 weare.ie, 1 @@ -158252,17 +158824,17 @@ wearehackerone.com, 1 weareher.com, 1 weareincognito.org, 1 wearejh.com, 1 +wearemarketing.com, 1 wearemojo.com, 1 wearemoso.nl, 1 -wearemullet.com, 1 wearenh.gov, 1 wearepapermill.co, 1 wearepapermill.com, 1 +wearepoo.com, 1 wearereasonablepeople.com, 0 wearereasonablepeople.nl, 0 wearesilverbullet.com, 1 wearesolomon.com, 1 -wearesolutions.com, 1 wearesuma.com, 1 wearetravellers.nl, 1 wearetuzag.com, 1 @@ -158280,8 +158852,7 @@ weather.gov, 1 weather25.com, 1 weatherbell.com, 1 weatherbell.net, 1 -weatherfordfumc.com, 1 -weatherguard.com, 0 +weatherguard.com, 1 weathermelon.io, 1 weathernet.co.uk, 1 weatherproduct.ga, 1 @@ -158300,6 +158871,7 @@ web-cms.fr, 1 web-create.ml, 1 web-creations.tk, 1 web-creato.tk, 1 +web-davinci.jp, 1 web-demarche.com, 1 web-design-india.com, 1 web-design-singapore.sg, 1 @@ -158319,7 +158891,6 @@ web-it-entwicklung.de, 1 web-lab.ml, 1 web-log.ml, 1 web-masterok.ga, 1 -web-mastery.info, 1 web-mastery.tk, 1 web-net.tk, 1 web-odyssey.com, 1 @@ -158351,12 +158922,11 @@ web-view.ml, 1 web-wack.at, 1 web-warrior.de, 1 web-worker.cn, 1 -web-ya3.com, 1 web.ca, 1 web.de, 1 web.net, 1 web1212.top, 1 -web1n.com, 1 +web1n.com, 0 web22.eu, 1 web2ldap.de, 1 web2screen.tv, 1 @@ -158374,8 +158944,9 @@ webachtal.com, 1 webadiccion.net, 1 webadicta.net, 1 webadicto.net, 1 -webadish.co.uk, 0 +webadish.co.uk, 1 webadmit.org, 1 +webadvisorhub.com, 1 webagenturschmid.ch, 1 webaholic.co.in, 1 webal.co.uk, 1 @@ -158391,6 +158962,7 @@ webappky.cz, 1 webapplay.com, 1 webappperformance.com, 1 webapps-conception.fr, 1 +webappsec.shop, 1 webark.hu, 1 webart-factory.de, 1 webartex.ru, 1 @@ -158471,7 +159043,7 @@ webdesign-kall.de, 1 webdesign-note.jp, 1 webdesignagency.cf, 1 webdesigncompanyindia.com, 1 -webdesignelftal.eu, 0 +webdesignelftal.eu, 1 webdesignersinchennai.tk, 1 webdesignfenua.tk, 1 webdesignplay.com, 1 @@ -158498,15 +159070,16 @@ webeast.eu, 1 webelement.sk, 0 webemployed.com, 1 webencrypt.org, 1 +webengage.com, 1 weber-immobilienberatung.de, 1 weber.com, 1 weber911.gov, 1 +webera.lt, 1 webera.pro, 1 weberbasin.gov, 1 weberbasinut.gov, 1 weberelections.gov, 1 -webers-testseite.de, 1 -webers-webdesign.de, 0 +webers-webdesign.de, 1 webescucha.tk, 1 webest.pl, 1 webexample.win, 0 @@ -158528,6 +159101,7 @@ webfocus.ph, 1 webfoersterei.de, 1 webforce.pt, 1 webforthemasses.tk, 1 +webfrenz.com, 1 webfun.tk, 1 webgadgets.tk, 1 webgaku.net, 1 @@ -158538,7 +159112,6 @@ webgeneric.in, 1 webgentleman.tk, 1 webgrow.co.za, 1 webhackspro.com, 1 -webhallen.com, 1 webhams.com, 1 webharvest.gov, 1 webhelyesarcu.hu, 1 @@ -158550,7 +159123,6 @@ webhosting4u.email, 0 webhostingblackfriday.deals, 1 webhostingempresas.com, 1 webhostinghelp.me, 1 -webhostingmagic.com, 1 webhostingmedia.net, 1 webhostingpros.ml, 1 webhostings.org, 1 @@ -158577,6 +159149,7 @@ webinnovation.ie, 1 webinstit.net, 1 webinteam.com, 1 webionite.com, 1 +webiroha.com, 1 webisle.com, 1 webisoder.net, 1 webissues.de, 1 @@ -158584,6 +159157,7 @@ webitentwicklung.de, 1 webiz.ro, 1 webizer.fr, 1 webkam-sex.com, 1 +webkaroindia.com, 1 webkato.ru, 1 webkef.com, 1 webkeks.org, 1 @@ -158596,7 +159170,7 @@ weblate.cloud, 1 weblate.com, 1 weblate.cz, 1 weblate.org, 1 -weblax.fr, 0 +weblax.fr, 1 weblead.vip, 1 weblegion.tk, 1 weblian.ml, 1 @@ -158608,12 +159182,12 @@ webline.ch, 1 webline.co, 1 weblinkcity.tk, 1 weblocus.tk, 1 -weblog-deluxe.de, 1 weblogia.tk, 1 weblogic.tk, 1 weblogzwolle.nl, 1 webm.tf, 1 webmachine.co.za, 1 +webmad.me, 1 webmail.ee, 1 webmail.gigahost.dk, 0 webmail.info, 1 @@ -158650,19 +159224,21 @@ webnancy.tk, 1 webnestify.cloud, 1 webnetmail4u.com, 1 webnexty.com, 1 +webnoob.net, 1 webo.agency, 1 +webo.directory, 1 webo.pl, 1 weboflies.tk, 1 webofthingsmarwane.xyz, 1 weboke.nl, 1 -weboperater.rs, 1 -webowell.fr, 0 +weboperater.rs, 0 +webowell.fr, 1 webp.tf, 1 webpantry.ga, 1 webparallax.cf, 1 webpark.ch, 1 -webpc.com.ua, 1 webpcstudio.com, 1 +webperformance.io, 1 webpiar.tk, 1 webpitarque.tk, 1 webpkgcache.com, 1 @@ -158681,6 +159257,7 @@ webprostitutki.tk, 1 webpublishing.tk, 1 webpubsub.com, 1 webpunk.tk, 1 +webpushnotifier.com, 1 webqam.fr, 1 webquests.tk, 1 webradio-maroc.tk, 1 @@ -158709,7 +159286,6 @@ websecured.io, 1 websecurity.is, 1 webseitendesigner.com, 0 webseitenserver.com, 0 -webserum.com, 1 webserverindia.com, 0 webshipper.com, 1 webshop.nl, 1 @@ -158746,9 +159322,11 @@ websitesdemos.tk, 1 websiteservice.pro, 1 websitesthatwork.biz, 1 websitestudio.fr, 1 +websktop.com, 1 websmartlink.tk, 1 websoftba.gq, 1 websofts.co.in, 1 +websolid.be, 1 websolutionbd.tk, 1 websouthdesign.com, 1 websphere.tk, 1 @@ -158781,6 +159359,7 @@ webtasarimankara.name.tr, 1 webtasarimi.tk, 1 webtasarimostim.name.tr, 1 webtaxi.cf, 1 +webtechnicom.net, 0 webtek.nu, 1 webtele.ga, 1 webtele.tk, 1 @@ -158789,7 +159368,6 @@ webtematica.com, 1 webtimiser.de, 1 webtobesocial.de, 1 webtodito.tk, 1 -webtome.net, 1 webtomsk.tk, 1 webtoolhost.com, 1 webtools-eqt.co.nz, 1 @@ -158805,7 +159383,6 @@ webtrh.cz, 1 webtronic.ie, 1 webtropia.com, 0 webuildsite.ga, 1 -webullreview.co, 1 webuniverse.ml, 1 webunix.ga, 1 webuyloansfast.com, 1 @@ -158818,11 +159395,12 @@ webvpsnet.com, 1 webvpsnet.org, 1 webwatchdogs.net, 1 webwatcher.tk, 1 +webwinkelkeur.nl, 1 webwinkelwestland.nl, 1 webwit.pro, 1 +webworksnz.co, 0 webwweb.com.pl, 1 webyazilim.biz.tr, 1 -webyrychle.cz, 1 webzanem.com, 0 webzarabotok.tk, 1 webzschema.in, 1 @@ -158838,7 +159416,6 @@ wecobble.com, 1 wecodify.nl, 1 wecprojects.ca, 1 wecreate.ml, 1 -wecrowd.it, 1 wed13spain.tk, 1 weda.cf, 1 wedabout.com, 1 @@ -158896,8 +159473,8 @@ weeblr.com, 1 weecarepreschool.ca, 1 weed.ren, 1 weedgranadagrowshop.com, 1 -weedistillery.com, 1 weedlife.com, 1 +weednews.co, 0 weedworthy.com, 1 weefriendskids.com, 1 week-numbers.org, 1 @@ -158906,13 +159483,14 @@ weekend.london, 1 weekend4two.ch, 1 weekendbus.pl, 1 weekendcraft.com, 0 -weekendcurioso.com, 1 weekendinitaly.com, 1 weekendplayers.tk, 1 weekendstartup.ml, 1 weekly-app.com, 0 weekly-news.pl, 1 +weekly-residence.com, 1 weeklydcoupgen.com, 1 +weelam.ca, 1 weelzbahamas.com, 1 weemakers.fr, 0 weepycat.com, 1 @@ -158921,6 +159499,7 @@ weerstationgiethoorn.nl, 1 weerstatistieken.nl, 1 weetalksls.com, 1 weetix.fr, 1 +weexend.com, 1 weezerosos.tk, 1 weezertabs.tk, 1 wefact.nl, 1 @@ -158939,18 +159518,21 @@ wegner.no, 1 wego.ca, 1 wegonnagetsued.org, 1 wegotcookies.com, 1 +wegotrip.com, 1 +wegotrip.ru, 1 wegotthevote.org, 1 +wegrzynek.org, 1 +wegrzynek.pl, 1 wegvielfalt.de, 1 wegweiser-demenz.de, 1 wegwijzerhvb.nl, 1 wehaa-server2.com, 1 wehaaserver.com, 1 -wehatech.vn, 1 wehealasone.gov.ph, 1 weho.gov, 1 wehrmacht.org, 1 wei-mao.com.ua, 1 -wei.com, 1 +wei.com, 0 weibbb.com, 1 weibel.me, 1 weibomiaopai.com, 1 @@ -158962,6 +159544,7 @@ weightlosseasy.cf, 1 weightlossoutcome.com, 1 weightprogram.cf, 1 weihua.life, 1 +weikai.net, 1 weike.tk, 1 weilheim.de, 1 weiling.clinic, 1 @@ -158998,12 +159581,12 @@ weirdorks.org, 1 weirdorks.social, 1 weirdserver.com, 1 weis.bz, 1 +weis.duckdns.org, 1 weispfenning.net, 1 weiss-sophrologie.fr, 1 weisskircher.tk, 1 weissman.agency, 1 weisstech.com, 1 -weit-weg.de, 1 weiter.so, 1 weiterbildung-vdz.de, 1 weiterbildungsmonitor.eu, 1 @@ -159017,7 +159600,6 @@ wekan.hopto.org, 1 wekibe.de, 1 wekipedia.com, 1 weknowhowtodoit.com, 1 -wekompare.fr, 1 welby.cat, 1 welcare.co.kr, 1 welcaremall.com, 0 @@ -159043,9 +159625,11 @@ wellbeing360.com.au, 1 wellbutrinxlgeneric.cf, 1 wellcarehealthsurvey.com, 1 wellcomemdhealth.com, 1 -welldoc.com, 0 +welldeals.store, 1 +welldoc.com, 1 welldocinc.com, 1 welldressedwalrus.com, 0 +wellen-reiten.com, 1 wellensteyn.ru, 1 weller.pm, 1 wellesleycosmeticsurgery.com, 1 @@ -159054,13 +159638,12 @@ wellfieldhomes.co.uk, 1 wellgora.com, 1 wellgreece.com, 1 wellington.govt.nz, 1 -wellist.com, 0 +wellist.com, 1 wellman3drealty.com, 1 wellness-alto-adige.net, 1 wellness-bonbon.de, 0 wellness-gutschein.de, 1 wellness-kobata-dc.com, 0 -wellness-massage-portal.de, 1 wellness-spa-suedtirol.com, 1 wellnessandco.com.au, 1 wellnesscheck.net, 1 @@ -159068,17 +159651,14 @@ wellnesscoaches.org, 1 wellnesscreatives.com, 1 wellnessmassage-eitorf.de, 1 wellnesstravelhub.com, 1 -wellnesszone.com, 1 welloffpodcast.ca, 1 -wellola.com, 1 -wellpaid.hu, 1 +wellpaid.hu, 0 wellreceived.com, 1 wellsbourne.co.uk, 1 wellsburgwvpd.gov, 1 wellsolveit.com, 0 wellspringsga.com, 1 wellstonok.gov, 1 -wellthpicks.com, 1 wellthy.com, 1 wellzapness.com, 1 welmo.fr, 1 @@ -159100,10 +159680,12 @@ welshterrier.tk, 1 welshyak.tk, 1 welspunindia.com, 1 welstrim.de, 1 +welsum.com, 1 welt-flaggen.de, 1 welteneroberer.de, 1 weltengilde.de, 1 weltenhueter.de, 1 +weltentanzer.com, 0 weltraum.gg, 1 weltumradler.tk, 1 weltverschwoerung.de, 1 @@ -159111,8 +159693,10 @@ welty.cc, 1 welty.co, 1 welty.io, 1 welty.me, 1 +wemad.com.au, 1 wemadegod.tk, 1 wemake.cx, 1 +wemakeadifference.com.au, 1 wemakebookkeepingeasy.com, 1 wemakemx.mx, 1 wemakeonlinereviews.com, 1 @@ -159120,6 +159704,7 @@ wembanya.ma, 1 wemissyou.tk, 1 wenanmao.com, 1 wenceslas.org.uk, 1 +wenchengchou.co, 0 wenchieh.com, 1 wend.academy, 1 wendelluguetto.com.br, 1 @@ -159151,11 +159736,14 @@ weosx.com, 1 wep.pw, 1 wepa.pe, 1 wepaempowercenter.org, 1 +wepay.com, 1 +wepay.in.th, 1 wepbiz.com, 1 weplan-app.com, 1 weplananalytics.com, 1 weplay.io, 1 weplaycollectibles.com, 1 +weplaynaked.dk, 1 weple.ga, 1 weple.gq, 1 wepowder.com, 1 @@ -159166,11 +159754,9 @@ werbeagentur-website.de, 1 werbeagentur.de, 1 werbefotograf-leitner.de, 1 werbefotografie-leitner.de, 1 -werbegemeinschaft-hohenlimburg.de, 1 werbewelt-tv.de, 1 werbezentrum-stiebler.de, 1 werbik.at, 1 -werbungmacher.de, 1 werehub.org, 1 wereldkoffie.eu, 1 wereldplanner.nl, 0 @@ -159196,6 +159782,7 @@ werkenbijjunis.nl, 1 werkenbijmagentazorg.nl, 1 werkenbijpelsrijcken.nl, 1 werkenbijpromovendum.nl, 1 +werkenbijrexel.nl, 1 werkenbijsanitairwinkel.be, 1 werkenbijsanitairwinkel.nl, 1 werkenbijvanderventions.com, 1 @@ -159217,6 +159804,7 @@ wernerworldwide.com, 1 wernicke-it.de, 1 wero-wallet.eu, 1 weroleplay.net, 1 +werpo.com.ar, 1 werranfehtan.org, 1 wertpapiertreuhand.de, 1 wertschatz-kommunikation.de, 1 @@ -159233,11 +159821,14 @@ weserwebworks.de, 1 weshopy.com, 1 wesl.cc, 1 wesleyanbank.co.uk, 1 +wesleycabus.be, 0 +wesleymc.org, 1 wesleyville.gov, 1 wesleywarnell.com, 1 wesoco.de, 1 wespeakgeek.co.za, 1 wespeakk9.com, 1 +wespringforward.com, 1 wesreportportal.com, 1 wessafety.net, 1 wesseldijk.eu, 1 @@ -159255,7 +159846,6 @@ west.vet, 1 westappin.com.au, 1 westartup.co, 1 westbathmaine.gov, 1 -westbayhomedecor.com, 1 westboroughma.gov, 1 westbourne-history.org.uk, 1 westburlingtoniowa.gov, 1 @@ -159277,6 +159867,7 @@ westcoastnewsstand.com, 1 westcoastpoly.com.au, 1 westcode.de, 1 westcountrydentalcrafts.uk, 1 +westcountrystalking.com, 1 westcreekna.org, 1 westendwifi.net, 1 westerdraai.tk, 1 @@ -159288,8 +159879,10 @@ westernindustrialproducts.co.uk, 1 westernmedia.ie, 1 westernpadermatologist.com, 1 westernparts.com, 0 +westernresourceadvocates.org, 1 westernriversidecog.gov, 1 westernskydental.com, 0 +westernsydney.com.au, 1 westernwaterca.gov, 1 westerwald-esport.de, 1 westexec.com, 1 @@ -159306,6 +159899,9 @@ westlab.ch, 1 westlake.com, 1 westlakehills.gov, 1 westlaketx.gov, 1 +westlakevillageelectric.com, 1 +westlakevillageelectrical.com, 1 +westlakevillageelectrician.com, 1 westland.eu, 1 westlandcultuur.tk, 1 westlander-nostalgie.tk, 1 @@ -159324,7 +159920,6 @@ westmidlandslettings.com, 1 westmidlandsrailway.co.uk, 1 westmifflin.gov, 1 westmilwaukeewi.gov, 1 -westminster.fashion, 1 westminsterco.gov, 1 westminsternational.com.au, 1 westmodernclinic.com, 1 @@ -159344,9 +159939,11 @@ westpointne.gov, 1 westporthoney.com, 1 westportisland.gov, 1 westportok.gov, 1 +westreet-store.com, 1 westsalemwi.gov, 1 westsidechildrenstherapy.com, 1 westsidepackaging.com.au, 1 +westsidewinemsp.com, 1 westskinlaser.com, 1 westsoundwildlife.org, 1 westspace.org.uk, 1 @@ -159368,9 +159965,9 @@ wesystems.cloud, 0 wet-dry.world, 1 wet-international.com, 1 wet1.com.au, 1 -weteam24.ru, 1 wetheghosts.eu, 1 wetheglobalpeople.com, 1 +wethemovement.org, 1 wetherbyvets.co.uk, 1 wetherspoonapprenticeshipacademy.co.uk, 1 wetnwild.com.au, 1 @@ -159382,8 +159979,9 @@ wetrepublic.com, 1 wetryrecipes.com, 1 wettbuero.de, 1 wetter.de, 1 +wettershus.se, 1 wetthost.com, 1 -wetu.com, 0 +wetu.com, 1 wetumpkaal.gov, 1 wevah.com, 0 wevape.online, 1 @@ -159398,9 +159996,9 @@ weworkjpn.com, 1 wewritestuff.com, 1 wexfordbouncycastles.ie, 1 wexilapp.com, 1 -wexller.com, 1 weyerstall1880.de, 1 -weygers.be, 1 +weymouthslowik.com, 1 +weyoui.de, 1 wf-bigsky-master.appspot.com, 1 wf-demo-eu.appspot.com, 1 wf-demo-hrd.appspot.com, 1 @@ -159420,10 +160018,8 @@ wfh.ovh, 1 wfh.se, 1 wfigueiredo.com.br, 1 wforum.nl, 1 -wfrlee.com, 1 wfuogb.com, 1 wfxs.com.tw, 1 -wfy24.com, 1 wg-smue.de, 1 wg-tools.de, 1 wg2023.com.br, 1 @@ -159466,7 +160062,6 @@ whanau.org, 0 whanglaw.com, 1 whapn.sg, 1 wharfevalleywindows.co.uk, 1 -wharfwise.com, 1 what-do-kittens-need-to-eat.tk, 1 what-does-kittens-need.ml, 1 what.tf, 1 @@ -159477,6 +160072,7 @@ whataboutjoshua.tk, 1 whatagreg.com, 1 whatairdefencedoing.com, 1 whatarepatentsfor.com, 1 +whatcanyoudocampaign.org, 1 whatclinic.co.uk, 1 whatclinic.com, 1 whatclinic.com.ph, 1 @@ -159489,6 +160085,7 @@ whatdevshouldknow.pl, 1 whatevents.tk, 1 whatevername.tk, 1 whateverzone.ml, 1 +whatfinger.com, 1 whatfontis.com, 1 whatgrowswhere.com, 1 whatgrowswhere.eu, 1 @@ -159514,7 +160111,6 @@ whatsatienda.com, 1 whatsgood.tk, 1 whatsinmyjar.com, 1 whatsitsname.tk, 1 -whatsmy.vip, 1 whatsmychaincert.com, 1 whatsmyip.fr, 1 whatsrc.org, 1 @@ -159524,12 +160120,14 @@ whatswrong.blog, 1 whatthefile.info, 1 whattimedoiwork.com, 1 whatusb.com, 1 +whatwaytoday.com, 1 whatwedo.ch, 1 whatwg.org, 1 whatzelink.com, 1 whawtheme.fr, 1 whd-guide.de, 1 whdpc.gov, 1 +whe-eg.com, 1 wheatfieldtwpmi.gov, 1 wheatgra.in, 1 wheatland.com, 1 @@ -159558,17 +160156,14 @@ when.fm, 0 when2watch.live, 1 whengirlsplay.com, 1 whenisholiday.com, 1 -whenondigital.com, 1 whentowork.com, 1 whenwe.me, 1 wheon.com, 1 -where2travel.nl, 1 wherearethosemorgans.com, 1 wherecaniwatchanime.com, 1 wheredoi.click, 1 wheregoes.com, 1 whereicode.org, 0 -whereismyfair.com, 1 whereismyorigin.cf, 1 whereisthekeep.com, 1 whereiszakir.com, 1 @@ -159586,7 +160181,6 @@ whichdoctor.com, 1 whichgender.today, 1 whichphish.com, 1 whichwasfirst.com, 1 -whieda-plovdiv.com, 1 whiff-of-grape.ca, 0 whigfieldspain.tk, 1 whil.com, 1 @@ -159608,6 +160202,7 @@ whiskey.money, 1 whiskeytech.org, 1 whisky.com.my, 1 whisky.money, 1 +whisky.my, 1 whiskydb.de, 1 whiskydrivers.tk, 1 whiskymy.com, 1 @@ -159622,7 +160217,7 @@ whistleblower.gov, 1 whistleblower.pl, 1 whistleblower.report, 1 whistleblowerordning.com, 1 -whistleblowers.gov, 1 +whistleblowers.org, 1 whistleblowersoftware.com, 1 whistlerbillboards.com, 1 whistlingdog.media, 0 @@ -159646,7 +160241,6 @@ whiteantelopeinteriors.com, 1 whitebirdclinic.org, 1 whitebox.ga, 1 whitechristmas.com.au, 1 -whitecloudconcierge.com, 1 whitecollar.net, 1 whitecollarfraud.com, 1 whitecreekny.gov, 1 @@ -159657,8 +160251,6 @@ whitefordtownshipmi.gov, 1 whitehallal.gov, 1 whitehartdartmoor.co.uk, 1 whitehartgreatyeldham.co.uk, 1 -whiteharttherapies.co.uk, 1 -whitehat.ee, 1 whitehat.vn, 1 whitehatbrokers.com, 1 whitehathackers.com.br, 1 @@ -159668,7 +160260,6 @@ whitehorse.ga, 1 whitehouse.gov, 1 whitehouse.org, 1 whitehouseconferenceonaging.gov, 1 -whitehousedaycare.com, 1 whitehousedrugpolicy.gov, 1 whiteink.com, 1 whitejaguars.com, 1 @@ -159684,7 +160275,6 @@ whiteneon.com, 1 whiteoak.org, 1 whitepack.ru, 1 whitepages.ml, 1 -whitepark.com.au, 1 whitepeaks.co.uk, 1 whitepeaks.fr, 1 whitepen.io, 1 @@ -159729,6 +160319,7 @@ whitmanwire.com, 1 whitmoreac.com, 1 whitneys2go.com, 1 whittle.in, 1 +whittlesfabrics.com, 1 whitworth.nyc, 1 whitworth.org, 1 whizkidpcservices.com, 1 @@ -159753,6 +160344,8 @@ whois.az, 1 whoisamitsingh.com, 1 whoiscuter.ml, 1 whoiscutest.ml, 1 +whoisfreaks.com, 1 +whoisonthebench.com, 1 whoistheorchid.com, 1 whoiswho.tk, 1 wholebody.je, 1 @@ -159773,9 +160366,10 @@ whomanity.party, 1 whoneedstobeprimaried.today, 1 whong.media, 1 whonix.org, 1 -whoopee.my, 0 +whoopee.my, 1 whooshkaa.com, 1 whoownswhom.co.za, 1 +whop.com, 1 whoplusyou.com, 1 whoreofwallstreet.tk, 1 whorepresentsme.us, 1 @@ -159786,16 +160380,19 @@ whosoldmyemail.ca, 1 whosoldmyemail.com, 1 whosyourdaddy.ml, 1 whowherewhen.net, 1 -whpctx.com, 0 +whpctx.com, 1 whqmeps.org, 1 whqqq.com, 1 wht.one, 1 whta.eu, 1 whta.se, 1 +whtcsj.com, 0 +whub.io, 0 whwcornwall.co.uk, 1 why-brexit.uk, 1 why918.com, 0 whychoosebob.id.au, 1 +whyescort.com, 1 whyinsurance.me, 1 whyleavetown.com, 1 whynohttps.com, 1 @@ -159832,6 +160429,7 @@ wickedsick.tk, 1 wickedvibes.tk, 1 wickersmith.com, 1 wickerwoman.com, 0 +wicklowcountycricket.com, 1 wickrath.com, 1 wickrath.net, 1 wicstunvetgroup.co.uk, 1 @@ -159859,6 +160457,7 @@ widma.gov, 1 widmer.bz, 1 widner.xyz, 1 widoj.gov, 1 +widow411.com, 1 widowsquad.com, 1 widsl.de, 1 widum.ru, 1 @@ -159883,16 +160482,16 @@ wienerbezirksblatt.at, 1 wienergyjobs.com, 1 wieobensounten.de, 1 wiesbadener-kurier.de, 1 -wieson.com, 1 wiet2home.nl, 1 wifesbank.com, 1 wifi-hack.com, 0 wifi-names.com, 1 wifi-ooe.at, 1 +wifi.com.vn, 1 wifi.id, 1 +wificafehosting.com, 1 wificonnect.cc, 1 wifidjelfa.com, 1 -wifiindosathifi.id, 1 wifimb.cz, 1 wifipineapple.com, 1 wifirst.net, 1 @@ -159906,14 +160505,14 @@ wigggle.it, 1 wigle.net, 1 wigmore-hall.org.uk, 0 wigsalon.ga, 1 +wigwam.design, 1 +wihiki.org, 1 wiiaam.com, 1 wiidatabase.de, 1 wiikipedia.com, 1 -wiikpedia.org, 1 wiimotion.de, 1 wiin.co, 1 wiingy.com, 1 -wiipedia.com, 1 wiire.me, 0 wijaya.net, 1 wijaya2u.com, 1 @@ -159949,7 +160548,6 @@ wikicooking.tk, 1 wikicuida.pt, 1 wikidata.org, 1 wikidpedia.org, 1 -wikiedia.org, 1 wikiepdia.com, 1 wikiepdia.org, 1 wikifactory.com, 1 @@ -160000,6 +160598,7 @@ wikimediacommons.jp.net, 1 wikimediacommons.mobi, 1 wikimediacommons.net, 1 wikimediacommons.org, 1 +wikimediaendowment.org, 1 wikimediaenterprise.com, 1 wikimediafoundation.com, 1 wikimediafoundation.info, 1 @@ -160011,14 +160610,7 @@ wikinews.com, 1 wikinews.de, 1 wikinews.org, 1 wikinews.pt, 1 -wikioedia.org, 1 -wikiopedia.org, 1 wikipaedia.net, 1 -wikipdeia.org, 1 -wikipdia.org, 1 -wikipeda.org, 1 -wikipedai.org, 1 -wikipedi.org, 1 wikipedia.bg, 1 wikipedia.co.il, 1 wikipedia.co.uk, 1 @@ -160033,28 +160625,14 @@ wikipedia.info, 1 wikipedia.is, 1 wikipedia.lt, 1 wikipedia.net, 1 -wikipedia.or.id, 1 wikipedia.org, 1 wikipedia.org.il, 1 wikipedia.sk, 1 -wikipedia.xyz, 1 -wikipedia25.com, 1 -wikipedia25.org, 1 -wikipediacn.info, 1 wikipediafoundation.org, 1 wikipedial.org, 1 -wikipedias.org, 1 wikipediazero.org, 1 -wikipediia.com, 1 -wikipeedia.com, 1 -wikipeia.org, 1 -wikiperia.org, 1 wikipeter.nl, 1 -wikipewdia.org, 1 -wikipidia.com, 1 -wikipidia.org, 1 wikipiedi.it, 1 -wikipoedia.com, 1 wikiquote.com, 1 wikiquote.net, 1 wikiquote.org, 1 @@ -160077,7 +160655,6 @@ wikitech.ga, 1 wikitech.gq, 1 wikitech.tk, 1 wikitechsolutions.com, 1 -wikitolica.com, 1 wikitransporte.tk, 1 wikiutah.tk, 1 wikiversity.com, 1 @@ -160098,8 +160675,6 @@ wikixchange.com, 1 wikizip.ga, 1 wikjpedia.org, 1 wikkelweb.nl, 1 -wikkipedia.com, 1 -wikpedia.com, 1 wikpedia.org, 1 wikproduccions.tk, 1 wiktionary.com, 1 @@ -160109,11 +160684,11 @@ wiktionary.pl, 1 wiktionary.pt, 1 wiktor-imbierski.com, 1 wiktoriaflis.com, 1 -wikuipedia.org, 1 wilane.org, 1 wilbergs.de, 1 wilburyvets.co.uk, 1 wilcodeboer.me, 1 +wilcojunk.com, 0 wilcom.com, 1 wilcotx.gov, 1 wild-turtles.com, 1 @@ -160121,6 +160696,7 @@ wild.at, 1 wildaboutarizona.com, 1 wildanalysis.ga, 1 wildbergh.tk, 1 +wildberries.lol, 1 wildbirdsuets.com, 1 wildbluepress.com, 1 wildcatdiesel.com.au, 1 @@ -160134,6 +160710,7 @@ wilderky.gov, 1 wildern.org, 1 wildernessdestinations.com, 1 wildernpartnership.co.uk, 1 +wildeshausen272.de, 1 wildfilm.tv, 1 wildfire.gov, 1 wildfirechain.xyz, 1 @@ -160141,7 +160718,6 @@ wildfireseomarketing.com, 1 wildflowers5.com, 1 wildfoerster.org, 1 wildfortune8.io, 1 -wildfurloweenwest.org, 1 wildglass.nl, 1 wildhealth.lu, 1 wildheavenbeer.com, 1 @@ -160168,6 +160744,7 @@ wildwill.co.uk, 1 wildwind.world, 1 wildwoodpolice-fl.gov, 1 wildwoodrockers.tk, 1 +wildworldimpact.com, 1 wildzap.ml, 1 wildzoopark.co.uk, 1 wildzoopark.com, 1 @@ -160180,10 +160757,9 @@ wilfredswholesale.com.au, 1 wilfrid-calixte.fr, 0 wilhelm-nathan.de, 1 wilhelm-sattler-realschule.de, 1 -wilhelmhansenfonden.dk, 0 +wilhelmhansenfonden.dk, 1 wilhelmsfeld.de, 1 wili.li, 1 -wilipedia.com, 1 wiliquet.net, 1 wilk.tech, 1 wilkens.be, 1 @@ -160191,6 +160767,8 @@ wilkes-barretownship.gov, 1 wilketransporte.de, 1 wilkincounty.gov, 1 wilkipedia.org, 1 +wilkushka.com, 1 +wilkushka.net, 1 wilky44.com, 1 willalex.com, 1 willardohio.gov, 1 @@ -160211,6 +160789,8 @@ willi-graf-os.de, 1 willi-roth-holzbau.ch, 1 william.legal, 1 williamarias.tk, 1 +williamblondel.fr, 0 +williamboulton.co.uk, 1 williamboundsltd.com, 1 williamfeely.info, 1 williamgoldberg.cf, 1 @@ -160219,11 +160799,10 @@ williamjohngauthier.net, 1 williamle.com, 1 williammcgill.com, 1 williamparedes.tk, 1 -williamsburgservices.com.au, 1 williamscomposer.com, 1 williamscountyoh.gov, 1 williamsflintlocks.com, 0 -williamshomeheat.co.uk, 1 +williamshomeheat.co.uk, 0 williamsigal.com, 1 williamsrecord.com, 1 williamstonmipd.gov, 1 @@ -160232,7 +160811,7 @@ williamtai.moe, 1 willianchopin.tk, 1 willich.tk, 1 williejackson.com, 1 -willingness.ru, 0 +willingness.ru, 1 willistonpdvt.gov, 1 willit.fi, 1 willjackson.com, 1 @@ -160264,6 +160843,7 @@ willtc.co.uk, 1 willtc.uk, 1 willturner.tk, 1 willvision.com, 0 +willwilkins.com, 1 willwoodworth.com, 1 willywangstory.com.tw, 1 willywangstory.org, 1 @@ -160274,7 +160854,6 @@ wilmington-il.gov, 1 wilmingtonohio.gov, 1 wilmingtonzen.tk, 1 wilmothgroup.com, 1 -wilo.com, 1 wils.jp, 1 wilshirelawfirm.com, 1 wilson-lincoln-wi.gov, 1 @@ -160288,6 +160867,7 @@ wiltonmanors.gov, 1 wiltonsandstonequarry.com.au, 1 wiltrovira.com, 1 wiltshirehealthyschools.org, 1 +wimasons.foundation, 1 wimbledon.com, 1 wimbledon.org, 1 wimlanphen.nl, 1 @@ -160307,14 +160887,12 @@ win-rar.com, 1 win-tech.net, 1 win.ch, 1 win11.ren, 1 -win21bit.com, 1 win5analysis.net, 1 win7stylebuilder.com, 0 win7tips.tk, 1 win8.am, 1 win88-line.com, 1 win88-line.net, 1 -winabrandnew.com, 1 winampnederlands.tk, 1 winancreekbarn.com, 1 winario.de, 1 @@ -160345,7 +160923,6 @@ windirect.tk, 1 windjetboats.com, 1 windmillart.net, 1 windmusic.org, 1 -windoof.net, 1 windota.com, 1 windowbuilderpro.com, 1 windowcleaningexperts.net, 1 @@ -160359,6 +160936,7 @@ windowsforum.com, 1 windowsfreak.de, 0 windowslatest.com, 1 windowsnerd.com, 1 +windowsru.com, 0 windowsviet.com, 1 windpay.ga, 1 windr.win, 1 @@ -160378,27 +160956,27 @@ windsorrslsubbranch.com.au, 1 windstreamhosting.com, 1 windsurfercrs.com, 1 windturbine.tk, 1 -windvanetech.com, 1 windwell.cn, 1 windwoodmedia.com, 1 windwords.me, 0 -windybank.net, 0 +windybank.net, 1 windycitylawgroup.com, 1 windycitypressurewashing.com, 1 wine-route.net, 1 wine.com.my, 1 wine.my, 1 winebrasil.com.br, 1 -wineconnect.ai, 1 +winechapter.be, 1 winedineunwind.org, 1 wineexperience.com.au, 1 wineforhelp.cz, 1 winefortune.com, 1 winegadgets.ru, 0 +winehouse.com, 1 winek.tk, 1 winenews.it, 1 wineparis.com, 1 -wineriesil.com, 1 +winerytoursanfrancisco.com, 1 winetable.se, 1 winfieldchen.me, 1 winfieldpa.gov, 1 @@ -160409,19 +160987,9 @@ wing-tsun.cf, 1 wing-tsun.ga, 1 wing-tsun.gq, 1 wing-tsun.tk, 1 -wing.osaka, 1 wingchun.edu.au, 1 wingchunboxtribe.com, 1 -wingechr.de, 1 -wingenbach-aesthetics.de, 1 -wingie.ae, 1 -wingie.co.in, 1 -wingie.co.uk, 1 wingie.com, 1 -wingie.de, 1 -wingie.es, 1 -wingie.pk, 1 -wingie.qa, 1 wingify.com, 1 wingmin.net, 1 wingover.su, 1 @@ -160452,7 +161020,6 @@ winnebagocountyiowa.gov, 1 winnebagocountywi.gov, 1 winneconnesd3wi.gov, 1 winner.ua, 1 -winnerodds.com, 1 winnersaffiliate.com, 1 winnery.tk, 1 winnicadzika.pl, 1 @@ -160467,6 +161034,7 @@ winoptical.com, 1 winoptimise.fr, 1 winphonemetro.com, 1 winpic.co, 1 +winpreso.com, 1 winrar.com, 1 winsabayi.tk, 1 winserver.ne.jp, 1 @@ -160482,7 +161050,6 @@ winter-auszeit.de, 0 winter-elektro.de, 1 winter-leak.ml, 1 winter.ae, 1 -winter.vg, 1 winterarbitrationcenter.com, 1 winterbergwebcams.com, 1 wintercorn.com, 1 @@ -160493,9 +161060,9 @@ winternacht14.tk, 1 winteromeo.tk, 1 winterreporting.com, 1 winterset.gov, 1 -wintersproducts.nl, 1 winterstudies.ga, 1 winterthur.ch, 1 +winterwind-productions.com, 1 winterzine.cf, 1 winthropma.gov, 1 winthrythsrealm.com, 1 @@ -160514,11 +161081,12 @@ wip-tideplatform.uk, 1 wipa.tk, 1 wipayfinancial.com, 1 wipeoutracing.tk, 1 +wipers-nz.co.nz, 1 wiphcai.ca, 1 wipp.bayern, 1 -wippie.se, 1 wippler.at, 1 wippy.tk, 1 +wiproccs.com, 1 wir-jugendhilfe.de, 0 wir-machen-druck.de, 1 wir-pflegen-zuhause.at, 1 @@ -160529,7 +161097,6 @@ wir-sind-frey.de, 1 wire.com, 0 wirebank.ru, 1 wirecable25.com, 1 -wired.cat, 1 wired.co.uk, 1 wiredandwovenrestoration.com, 1 wiredcolony.com, 1 @@ -160545,7 +161112,6 @@ wirelessleeuwarden.tk, 1 wirelesslogic.com, 0 wirelesslogicnordic.com, 1 wirelessthief.ga, 1 -wiremaze.com, 1 wires.co.uk, 1 wireshark.org, 1 wireshocks.com, 1 @@ -160556,7 +161122,7 @@ wiriamu.net, 1 wiris.be, 1 wirkaufen.it, 1 wirkaufendeinau.to, 1 -wirken.info, 0 +wirken.info, 1 wirksportal.com, 1 wirkstatt-lq.at, 1 wirkstatt-lq.ch, 1 @@ -160594,6 +161160,7 @@ wisdomise.com, 1 wisdomise.io, 1 wisdomize.me, 1 wisdomteethonly.com, 1 +wisdomteethsydney.com.au, 1 wisdotplans.gov, 1 wise-parenting.com, 0 wise.design, 1 @@ -160611,8 +161178,6 @@ wisereshape.com, 1 wisers.com.tw, 1 wisersp.com, 1 wisertp.com, 1 -wiseshifts.eu, 1 -wisestatus.info, 1 wisetechglobal.cn, 1 wisetechglobal.com, 1 wisetoken.net, 1 @@ -160668,7 +161233,6 @@ witchthicktits.tk, 1 witez.net, 1 witgoedexpert.com, 1 with-environment.com, 1 -withacta.com, 1 withamscouts.org.uk, 1 withdati.fr, 1 withdcc.com, 1 @@ -160689,13 +161253,15 @@ withpersona.com, 1 withprocess.com, 1 withsunglasses.co.uk, 1 withthegrid.com, 1 +withwander.com, 1 withyoutube.com, 1 witne.ss, 1 witron.de, 1 witt.link, 1 +wittebrug.nl, 1 wittepapaver.nl, 1 witteveenbos.com, 1 -wittgen-kfz-technik.de, 0 +wittgen-kfz-technik.de, 1 witting.co, 0 wittingtonventures.com, 1 wittu.fi, 1 @@ -160723,11 +161289,8 @@ wizardk.tk, 1 wizardkami.tk, 1 wizardmeow.xin, 1 wizardschool.tk, 1 -wizardshive.com, 1 -wizardshive.ro, 1 wizardshop.cz, 1 wizardswebs.com, 1 -wizart-studio.pl, 1 wizathon.com, 1 wizink.pt, 1 wizyheal.com, 1 @@ -160741,7 +161304,6 @@ wjdetailers.com, 1 wjg.ca, 1 wjg.dk, 1 wjg.se, 1 -wjr.digital, 1 wjr.io, 1 wjtje.ga, 1 wjwieland.dvrdns.org, 0 @@ -160774,7 +161336,6 @@ wlci.gov, 1 wlcmedical.com.au, 1 wlf.is, 1 wlg.city, 1 -wlitwie.pl, 1 wlmq10086.cn, 1 wlnk.cc, 1 wloch.me, 1 @@ -160792,10 +161353,12 @@ wmaccess.de, 1 wmar2news.com, 1 wmasphaltservices.com, 1 wmataoig.gov, 1 +wmbviaggi.it, 1 wmcuk.net, 1 wmcurrency.exchange, 1 wmcurrency.online, 1 wmcurrency.uk, 1 +wmda.info, 1 wme.cn, 0 wmeagency.com, 1 wmfusercontent.org, 1 @@ -160806,11 +161369,13 @@ wmkowa.de, 1 wmmalls.com, 1 wmmi.org, 1 wmmkf.com, 1 +wmmks.com, 1 wmmp.link, 1 wmnrj.com, 1 wmo.ch, 1 wmo.int, 1 wmonline.com, 1 +wmphonline.com, 1 wmphvacations.com, 1 wmsndorgen.cf, 1 wmsndorgen.ga, 1 @@ -160876,9 +161441,7 @@ wohlgefuehl-massagen.de, 1 wohlpa.de, 0 wohnbau-mobilitaet.ch, 1 wohnberatung-wien.at, 1 -wohnfrisch.de, 1 wohnsitz-ausland.com, 1 -wohnung-dus.de, 1 wohnungsaufloesung-berlin.net, 1 wohnungsbaukredit.ag, 1 wohnungsbaukredit.biz, 1 @@ -160900,7 +161463,6 @@ wokfilms.pt, 1 wokinghammotorhomes.com, 1 wokkamokka.be, 1 wolczanska13.pl, 1 -wolf-agents.com, 1 wolf-haven.tk, 1 wolf-hunter.pl, 1 wolf333.com, 1 @@ -160908,7 +161470,6 @@ wolf404.top, 1 wolfachtal-alpaka.de, 1 wolfandleaf.com, 1 wolfarth.info, 1 -wolfbard.art, 1 wolfen-nord.social, 1 wolfermann.org, 1 wolfermans.com, 1 @@ -160926,7 +161487,6 @@ wolfgang-ziegler.com, 1 wolfgangdigital.com, 1 wolfgangkowar.de, 1 wolfgrowth.com, 1 -wolfia.com, 1 wolflambert.tk, 1 wolfsburgwest.com, 1 wolfsense.nl, 1 @@ -160938,6 +161498,7 @@ wolfwings.us, 1 wolfy.design, 1 wolfy1339.com, 1 wolkanca.com, 1 +wolkanca.com.tr, 1 wolke7.wtf, 1 wolkenputzer.com, 1 wolkenspeicher.org, 1 @@ -160961,6 +161522,7 @@ wolvestrees.co.uk, 1 wolvex.nl, 1 wolvox.com, 1 wom.de, 1 +womansong.net, 1 womb.city, 1 wombatnet.com, 1 wombatpass.com, 1 @@ -161042,14 +161604,12 @@ woodbornekitchens.com, 1 woodbridgefurniture.com, 1 woodbridgegrp.com, 1 woodbridgepacific.com, 1 -woodburn.au, 0 woodbury.io, 1 woodburynj.gov, 1 +woodcat.net, 1 woodcock.cloud, 1 woodcountywi.gov, 1 woodcraftcompany.ru, 1 -woodenonesiesr.us, 1 -woodenonesiesrus.com, 1 woodenson.com, 1 woodev.us, 1 woodfarm2020.com, 1 @@ -161057,8 +161617,8 @@ woodfencestlouis.com, 1 woodfieldhc.ca, 1 woodfordcountyil.gov, 1 woodfordcountyky.gov, 1 -woodgraintales.co.il, 1 woodhavenmi.gov, 1 +woodhousechocolate.com, 1 woodlandboys.com, 1 woodlandcreekfurniture.com, 1 woodlandwindows.com, 0 @@ -161090,6 +161650,7 @@ woodvillemspolice.gov, 1 woodward-vets.co.uk, 1 woodwicker.cl, 1 woodwing.cloud, 1 +woodwo.se, 1 woodworkcare.com, 1 woodworkingforabeginner.com, 1 woodwormtreatment.com, 1 @@ -161117,7 +161678,7 @@ woonplein.tk, 1 woontegelwinkel.nl, 1 woonverkoop.be, 1 woop.co.nz, 1 -woopie.com, 0 +woopie.com, 1 woopiq.com, 0 wooproducciones.tk, 1 woordvanvandaag.nl, 1 @@ -161142,10 +161703,11 @@ worcestervetsreferrals.com, 1 word-grabber.com, 1 wordandnote.com, 1 wordbits.net, 0 +wordcomponents.com, 1 wordcounter.net, 1 worddunk.com, 1 wordfast.com, 1 -wordmon.net, 1 +wordforword.info, 1 wordmon.site, 1 wordnietvindbaar.nl, 1 wordops.io, 1 @@ -161153,11 +161715,12 @@ wordops.net, 1 wordotron.com, 1 wordpress-crm-plugin.com, 1 wordpress-crm.pl, 1 +wordpress-inc.ru, 1 wordpress-szakerto.hu, 1 wordpress.com, 0 wordpressbot.tk, 1 +wordpresscomponents.com, 1 wordpressdevelopment.ml, 1 -wordpressdiensten.be, 1 wordregistrar.ga, 1 words-are-pictures.com, 1 wordsforellie.com, 1 @@ -161197,7 +161760,8 @@ workcost.me, 1 workelo.eu, 1 worker.gov, 1 workermess.tk, 1 -workerscompensationattorneysandiego.net, 1 +workerscompensationattorneysandiego.net, 0 +workerscomplawyerhelp.com, 1 workerselforganisation.cf, 1 workerselforganisation.ga, 1 workflowy.com, 1 @@ -161221,11 +161785,9 @@ workindia.ml, 1 workinestonia.com, 0 working-group-cloudsecurityalliance.org, 1 workingclassmedia.com, 1 -workingfamilies.org.uk, 1 +workingfamilies.org.uk, 0 workinghardinit.work, 1 workingmachine.info, 1 -workingpapers.biz, 1 -workingpapers.info, 1 workingreporter.com, 1 workingtalent.nl, 1 workinit.com.au, 1 @@ -161233,6 +161795,7 @@ workinitiatives.com.au, 1 workinnorway.no, 1 workiva.com, 1 workjustice.com.au, 0 +workleap.com, 1 worklinepc.com, 1 worklizard.com, 1 workmax.com, 1 @@ -161244,6 +161807,7 @@ workonclimate.org, 1 workonit.cf, 1 workoutdigital.com, 1 workpass.co.uk, 1 +workperfect.com.au, 1 workplace.com, 1 workplace.tools, 1 workreap.tk, 1 @@ -161260,19 +161824,23 @@ workshop-sync.net, 1 workshop.industries, 1 workshop.men, 1 workshopengine.com.au, 1 +workshops.aws, 1 workshopszwolle.nl, 1 workshopzwolle.com, 1 worksindev.com, 1 worksitevr.com, 1 +worksmile.com, 1 workspace-bibb.de, 1 -workspacecleaners.com.au, 0 +workspace.pt, 1 +workspacecleaners.com.au, 1 worksthatwork.com, 1 workstride.org, 1 worktefa.tk, 1 -worktrainer.com, 1 +workthings.de, 1 workvision.net, 1 workwithdata.com, 1 workwithusaid.gov, 1 +worky.ph, 1 workzly.in, 1 world-backgammon-association.com, 1 world-citizen-report.com, 1 @@ -161286,6 +161854,7 @@ world-of-tes.tk, 1 world-politics.tk, 1 world-selena.tk, 1 world-tanks.tk, 1 +world-web.pro, 1 worldarmy.tk, 1 worldatwork.org, 1 worldbelow.tk, 1 @@ -161304,7 +161873,6 @@ worldclassfriend.com, 1 worldconsultingchile.tk, 1 worldcrunch.com, 1 worldcup-odds.com, 1 -worldcup.pk, 1 worlddataexchange.au, 1 worlddataexchange.com, 1 worlddataexchange.com.au, 1 @@ -161351,6 +161919,7 @@ worldix.ml, 1 worldix.tk, 1 worldjobs.tk, 1 worldjusticeproject.org, 1 +worldlandtrust.org, 1 worldlanguage.tk, 1 worldline.com, 1 worldluxuryhome.tk, 1 @@ -161359,6 +161928,7 @@ worldnewsinbox.ga, 1 worldnewsphoto.tk, 1 worldofarganoil.com, 1 worldofbelia.de, 1 +worldofgeekstuff.com, 1 worldofheroes.ml, 1 worldoflegion.ml, 1 worldofparties.co.uk, 1 @@ -161372,6 +161942,7 @@ worldranking.tk, 1 worldrecipes.eu, 1 worldremit.com, 1 worldrism.com, 1 +worldsage.org, 1 worldsat.tk, 1 worldsaway.ca, 1 worldsbest.ga, 1 @@ -161390,7 +161961,6 @@ worldsystems.com.co, 1 worldtalk.de, 1 worldtattooevents.com, 1 worldtempus.com, 0 -worldtera.com, 1 worldtrandingnews.ml, 1 worldtravelmagazine.tk, 1 worldturkmans.tk, 1 @@ -161400,6 +161970,7 @@ worldvisa.tk, 1 worldwallstreet.tk, 1 worldwar2collector.tk, 1 worldwidecounsel.net, 1 +worldwideradiosummit.com, 1 worldwidescience.org, 1 worldwinesweb.be, 1 worldwitness.org, 1 @@ -161460,7 +162031,6 @@ woutervdb.com, 1 woutiscoding.be, 1 woven.toyota, 1 woveniac.com, 1 -wovol.com, 1 wow-dsg.ch, 1 wow-foederation.de, 1 wow-screenshots.net, 1 @@ -161475,7 +162045,9 @@ wowclassicdatabase.com, 1 wowdrive.ga, 1 wowhaha.work, 1 wowhampers.ie, 1 +wowhediyelik.com, 1 wowhelp.it, 1 +wowi-ffo.de, 1 wowjs.co.uk, 1 wowjs.org, 1 wowjs.uk, 1 @@ -161488,6 +162060,7 @@ wowra.net.pl, 1 wows-mods.tk, 1 wows.sb, 1 wowsosellout.com, 1 +wowzer.ai, 1 woyao.ml, 1 woyzeck.org, 1 woz.ch, 1 @@ -161510,6 +162083,7 @@ wp-hasty.com, 1 wp-in.de, 1 wp-mix.com, 1 wp-ninja.tk, 1 +wp-op.com, 1 wp-rebuild.com, 1 wp-rem.com, 1 wp-sec.com, 1 @@ -161517,7 +162091,6 @@ wp-securehosting.com, 1 wp-stack.pro, 1 wp-tao.com, 1 wp-webagentur.de, 1 -wp2date.com, 1 wpac.de, 1 wpadelaide.org, 1 wpauctions.com, 1 @@ -161525,7 +162098,6 @@ wpautolistings.com, 1 wpbase.io, 1 wpbeter.nl, 1 wpboot.com, 1 -wpbox.by, 1 wpbrigade.com, 1 wpcanban.com, 1 wpcastle.com, 1 @@ -161533,6 +162105,7 @@ wpcc.edu, 1 wpcepat.com, 0 wpckraft.ro, 1 wpco.se, 1 +wpcodeus.com, 1 wpcommerz.com, 1 wpconcepts.net, 1 wpconnect.co, 1 @@ -161542,6 +162115,8 @@ wpdev.com.au, 1 wpekspres.com, 1 wpetri.nl, 1 wpexplainer.com, 1 +wpfactory.io, 1 +wpfiles.net, 1 wpformation.com, 1 wpforum.tk, 1 wpg-verwaltungen.de, 1 @@ -161549,7 +162124,7 @@ wpginvest.com, 1 wpglossy.com, 1 wpguvenlik.com, 1 wphelpwithhomework.tk, 1 -wphost.nl, 1 +wphost.nl, 0 wphosting.ovh, 1 wpinabox.de, 1 wpinfos.de, 0 @@ -161560,10 +162135,13 @@ wplibrary.net, 1 wplicious.com, 1 wplistings.pro, 1 wpmafias.com, 1 +wpmaintenance.site, 1 wpmatik.com, 1 wpmeer.com, 1 wpmet.com, 1 +wpml.org, 1 wpmu-tutorials.de, 1 +wpna.fm, 1 wpnesia.id, 1 wpnews.cf, 1 wpnews.ga, 1 @@ -161574,6 +162152,10 @@ wpnovice.tk, 1 wpocs.com, 1 wpoptimalizace.cz, 1 wppbki1.com, 1 +wppodcast.cat, 1 +wppodcast.es, 1 +wppodcast.fr, 1 +wppodcast.org, 1 wprank.net, 1 wprepublic.com, 1 wpresscoder.com, 1 @@ -161594,16 +162176,15 @@ wpspeedcare.com, 1 wpspeedking.com, 1 wpspeedmatters.com, 1 wpstaq.com, 1 -wpsupportlab.com, 1 wptests.tk, 1 wpthemearchive.com, 1 wpthemesbox.com, 1 wptotal.com, 1 +wpturnedup.com, 1 wptv.com, 1 wpuse.ru, 1 wpwebshop.com, 1 wpwebtools.com, 1 -wpzz.net, 1 wqaw3.tk, 1 wqed.org, 1 wr.su, 0 @@ -161621,7 +162202,6 @@ wrc-results.com, 1 wrd48.net, 1 wrdcfiles.ca, 1 wrdf.org, 0 -wreckadvisors.com, 1 wrecked.cf, 1 wrecked.tk, 1 wreckeroo.com.au, 1 @@ -161636,22 +162216,22 @@ wrenthampolice.gov, 1 wresttmb.tk, 1 wrfalimentos.com.br, 1 wrglzd.com, 1 -wrgms.com, 1 wrhomedecor.com.br, 1 -wrightbrand.com, 0 +wrightbrand.com, 1 wrightcountymo911.gov, 1 -wrighthassall.co.uk, 1 +wrighthassall.co.uk, 0 wrightsecurity.co, 1 wrightslawfirm.com, 0 wrighttownshipottawami.gov, 1 wrighttownshippa.gov, 1 wringer.ga, 1 wristler.eu, 1 +wristreview.com, 0 write-right.net, 1 -writeaboutgaza.com, 1 writeandedit-for-you.com, 1 writeaword.tk, 1 writebrigade.com, 1 +writelabel.com, 1 writememos.com, 1 writemyessay.today, 1 writemyessays.com, 1 @@ -161659,16 +162239,8 @@ writemypaperhub.com, 1 writemytermpapers.com, 1 writeoff.me, 1 writepro.net, 1 -writercorporation.net, 1 -writercorporation.site, 1 writerecommendations.ga, 1 writerimranc.ca, 1 -writerinformation.biz, 1 -writerinformation.com, 1 -writerinformation.info, 1 -writerinformation.net, 1 -writerinformation.org, 1 -writerrelocasia.com, 1 writers-club.tk, 1 writersblock.tk, 1 writesafer.com, 1 @@ -161682,26 +162254,29 @@ writingfromnowhere.com, 1 writingiswork.ga, 1 writingpapersonlineformoney.ga, 1 writingtoserve.net, 1 +writtenandrecorded.com, 1 writtenhorror.com, 1 writtenworld.bg, 1 wrm.sr, 1 wrmea.org, 1 wrmh343.org, 1 +wrn.sh, 1 wrnck.cloud, 1 wroclawguide.com, 1 wrong.wang, 0 wrongaddress.com, 1 wrozbyonline.pl, 1 wrp.gov, 1 -wrssystems.co.uk, 1 wrtv.com, 1 wrytin.com, 1 wrzalski.com, 1 -ws3917.space, 1 +ws-01.com, 1 wsa.poznan.pl, 1 wsadek.ovh, 1 +wsave.be, 1 wsb.pl, 1 wsc.rip, 1 +wscad.com, 1 wscauth.de, 1 wscf.ch, 1 wscore.me, 1 @@ -161721,8 +162296,8 @@ wsmonline.com, 1 wsmsg.com, 1 wsn.com, 1 wsn.my.id, 1 +wsn.web.id, 1 wsnstudios.com, 1 -wsodownloads.io, 1 wsparcie.gov.pl, 1 wsrc.tk, 1 wsrn.de, 1 @@ -161740,6 +162315,7 @@ wszystkocokocham.com, 1 wt-server3.de, 1 wtccc.org.uk, 1 wtdiw.com, 1 +wteam.pl, 1 wtfast.com, 1 wtfbryan.com, 0 wtfindonesia.tk, 1 @@ -161764,11 +162340,11 @@ wuellenweber.net, 1 wuerfel.wf, 1 wuerfelmail.de, 1 wuergler-consulting.ch, 1 +wuermlitaucher.ch, 1 wuestenbergs.tk, 1 wuevahosting.com, 1 wuff.gay, 1 wuff.store, 1 -wuflestad.me, 1 wug.fun, 1 wug.jp, 1 wug.news, 1 @@ -161787,7 +162363,6 @@ wulala.one, 1 wulel.cn, 0 wulfrun-invicta.tk, 1 wum.me, 1 -wum.rocks, 1 wuma.ml, 1 wumai-p.cn, 1 wumbo.cf, 1 @@ -161818,20 +162393,19 @@ wusu.tk, 1 wuxian.ml, 0 wuyifan.ga, 1 wuyuan.io, 1 +wuzhishan.com, 1 wuziqian211.top, 0 wv-n.de, 1 wvbold.gov, 1 wvbvm.gov, 1 wvdnr.gov, 1 wvg.myds.me, 1 -wvm.edu, 1 wvmb.com, 1 wvpbs.ml, 1 wvpbs.tk, 1 wvpebd.gov, 1 wvrtboard.gov, 1 wvsdca.gov, 1 -wvsu-usc.org, 1 wvunclaimedproperty.gov, 1 wvv-8522.com, 1 wvv.de, 1 @@ -161862,10 +162436,12 @@ wwjd.dynu.net, 1 wwlc.ch, 1 wwp-beauty.com, 1 wwpxbeauty.com, 1 +wws-energysolutions.de, 1 wws.nu, 1 wwtg.gov, 1 wwv-8522.com, 1 wwv-8722.com, 1 +wwvip88.com, 1 www-2998hh.com, 1 www-33445.com, 1 www-38978.com, 1 @@ -161942,7 +162518,6 @@ www.healthcare.gov, 0 www.heliosnet.com, 1 www.history.pe, 1 www.honeybadger.io, 0 -www.ht, 1 www.hyatt.com, 1 www.irccloud.com, 0 www.ki, 1 @@ -161975,6 +162550,7 @@ www.twitter.com, 1 www.united.com, 1 www.usaa.com, 0 www.vino.com, 0 +www.wepay.com, 1 www.wordpress.com, 0 www.zdnet.com, 1 www68277.com, 1 @@ -161999,6 +162575,7 @@ wxrlab.com, 1 wxservices.tk, 1 wxster.com, 1 wxw.cat, 1 +wxw.guru, 1 wxw.moe, 1 wxw.ooo, 1 wxxm.aero, 1 @@ -162009,19 +162586,21 @@ wy6.org, 1 wyattirwin.com, 1 wyatttauber.com, 1 wyattworth.com, 1 -wybar.co.uk, 1 wybar.uk, 1 wycena.ga, 1 wyckoffnj.gov, 1 wyckoffspringmeadowcondos.com, 1 wycombetoday.com, 0 +wyczaruj.pl, 1 wyday.com, 1 +wydmy.com.pl, 1 wyff4.com, 1 wygibanki.pl, 1 wygodnie.pl, 1 wyiga.org, 1 wykop.pl, 0 wykopylodz.ga, 1 +wykorzystaj.ai, 1 wylark.com, 1 wynajemautkrakow.cf, 1 wynajemautkrakow.ga, 1 @@ -162086,7 +162665,6 @@ x-team.co.il, 1 x-way.org, 1 x.io, 1 x.sb, 1 -x.sh, 1 x00228.com, 1 x00701.com, 1 x00708.com, 0 @@ -162109,13 +162687,13 @@ x3550.de, 1 x3650.de, 1 x36533.com, 1 x378.ch, 1 -x3flow.net, 1 x44.at, 0 x500658.com, 1 x5197.co, 1 x52.org, 1 x58p.com, 1 x58t.com, 1 +x58v.com, 1 x5x.host, 1 x6.nl, 1 x61.sh, 1 @@ -162125,7 +162703,6 @@ x6957.co, 1 x7719.com, 0 x77jj.com, 1 x77nn.com, 1 -x7blog.com, 1 x81vv.com, 1 x86.pet, 1 x90.im, 1 @@ -162143,20 +162720,18 @@ xacker.tk, 1 xacobeoexperience.com, 1 xactadent.com, 1 xad.ch, 1 -xadwm.top, 1 -xage.com, 1 xaira.com, 0 xajh.org, 1 xakep-slon.tk, 1 xakepctbo.tk, 1 xakiatech.com, 1 -xalamanalytics.com, 1 xalima.gq, 1 xampusolid.cat, 1 xanadu.ai, 1 xanalys.org, 1 xanderbron.tech, 1 xanedu.com, 1 +xantec.com.my, 0 xanthipolis.gr, 1 xanthopoulos.me, 1 xants.de, 1 @@ -162167,7 +162742,7 @@ xarcmastering.com, 1 xareltohcp.com, 1 xarmenta.tk, 1 xatr0z.org, 0 -xauzit.com, 0 +xauzit.com, 1 xav.ie, 1 xaver.exchange, 1 xavi.re, 1 @@ -162183,6 +162758,7 @@ xaynhachothue.vn, 1 xb008.com, 1 xb053.com, 1 xb056.com, 1 +xb058.com, 0 xb1001.com, 1 xb2002.com, 1 xb3888.com, 1 @@ -162221,6 +162797,7 @@ xb8861.com, 1 xb9009.com, 1 xb906.com, 1 xb913.com, 1 +xb925.com, 0 xb937.com, 1 xb957.com, 0 xb961.com, 1 @@ -162230,6 +162807,7 @@ xb972.com, 1 xb980.com, 1 xb982.com, 1 xbanner.tk, 1 +xbb.hk, 1 xbb.li, 1 xbc.nz, 1 xbdm.fun, 1 @@ -162249,8 +162827,10 @@ xbjt666.com, 1 xbjt77.com, 1 xblau.com, 1 xbox, 1 +xbox-mag.net, 1 xboxachievements.com, 1 xboxdynasty.de, 1 +xboxplay.games, 1 xbrlsuccess.appspot.com, 1 xbros.cz, 1 xbsoftware.com, 1 @@ -162292,12 +162872,13 @@ xcashshop.com, 1 xccc.net, 1 xcdd.sh, 1 xce.pl, 1 +xcelit.io, 1 xcelvations.com, 1 xchangehoster.de, 1 xcharge.uk, 1 xchimera.com, 1 xchoco.com, 1 -xchuan.cn, 0 +xchuan.cn, 1 xcler8.com, 1 xclirion-support.de, 1 xcloudways.com, 1 @@ -162312,7 +162893,6 @@ xcw8886.net, 0 xcw8888.net, 0 xcw8889.net, 0 xcxmiku.com, 0 -xcysy.top, 1 xd.cm, 1 xd.gd.cn, 1 xd.gov, 1 @@ -162323,7 +162903,6 @@ xdc.org, 0 xdcam-user.com, 1 xdemvyhcp.com, 1 xdgesports.com, 1 -xdkino.online, 1 xdlab.co, 1 xdos.io, 1 xdownloader.com, 1 @@ -162332,14 +162911,15 @@ xdtag.com, 1 xdty.org, 1 xduce.com, 1 xeditpro.com, 1 +xeerpa.com, 1 xeforce.com, 1 xehopdongmuine.vn, 1 xehost.com, 1 xeiropraktiki.gr, 1 -xelencure.com, 1 xelesante.jp, 1 xelionai.com, 1 xemptsecurity.com, 1 +xenaidigital.xyz, 1 xencrystal.me, 1 xenfo.ro, 1 xenforo.forum, 1 @@ -162373,16 +162953,16 @@ xer0x.in, 1 xerbisworks.com, 1 xerdeso.tk, 1 xerezdeportivo.tk, 1 +xerkus.pro, 1 xerownia.eu, 1 -xerownia.pl, 1 xertainty.com, 1 xertainty.de, 1 xetown.com, 1 -xeve.io, 1 xevietanh.com, 1 xevnet.com, 1 xevolkswagen.com, 1 xexpert.ro, 1 +xfair.com, 1 xfantasy.su, 1 xfcy.me, 1 xfd3.de, 1 @@ -162397,7 +162977,9 @@ xftp.ml, 1 xg9gbbbr.nsupdate.info, 1 xgadget.de, 1 xgameshst.com, 1 +xgcf.com, 1 xgclan.com, 1 +xgeni.us, 1 xgn.es, 1 xgp.pl, 1 xgpu.deals, 1 @@ -162414,6 +162996,7 @@ xhily.com, 0 xhmikosr.io, 1 xho.me, 1 xhochy.org, 1 +xhtml.club, 1 xhtmljunction.com, 1 xhy.ch, 1 xia.com, 1 @@ -162445,7 +163028,6 @@ xiaojicdn.com, 1 xiaojiyoupin.com, 1 xiaolong.link, 1 xiaomao.tk, 1 -xiaomi.pk, 1 xiaomi.rocks, 1 xiaomibarato.com, 1 xiaomiev.com.ua, 1 @@ -162457,14 +163039,13 @@ xiaoshijt.com, 1 xiaowangshen.com, 1 xiaoxia.li, 1 xiarain.com, 1 -xiashu8.com, 1 xiaxuejin.cn, 1 xiazhanjian.com, 0 xice.cf, 1 xice.wang, 1 xicreative.net, 1 xiecongan.org, 1 -xiedeacc.com, 1 +xiedeacc.com, 0 xiexiexi.com, 1 xif.at, 1 xifrem.com, 1 @@ -162475,13 +163056,14 @@ xilentura.de, 1 xillimite.com, 1 xilnex.com, 1 xilo.net, 1 +xiluetmiami.com, 1 xiluo-sweet-home.tw, 1 -ximes.cloud, 1 ximes.com, 1 ximeshosted.com, 1 ximg.co, 1 ximware.com, 1 xin.moe, 1 +xin365.com, 1 xinanwork.com, 1 xinbo010.com, 1 xinbo016.com, 1 @@ -162613,6 +163195,7 @@ xinrengui.eu.org, 1 xinrui.com, 1 xinxeta.es, 1 xinxiaofei.net.cn, 1 +xinxin.pl, 1 xinyazhang.com, 1 xinyezx.com, 1 xinyitour.tw, 1 @@ -162626,11 +163209,13 @@ xiufeng.de, 1 xiufeng.net, 1 xiufeng.nl, 1 xiumu.org, 1 +xiuqu.com, 1 xiuxiu.cf, 1 xiuxiu.ga, 1 xiuxiu.gq, 1 xiuxiu.ml, 1 xiuxiumh01.cc, 0 +xixi.com, 1 xjd.vision, 1 xjf6.com, 1 xjjeeps.com, 1 @@ -162639,6 +163224,7 @@ xjjzp.net, 1 xjpvictor.info, 1 xjr-forum.de, 1 xjtu.love, 1 +xjtu.men, 1 xkblog.xyz, 1 xkcd.pw, 1 xkq.ch, 1 @@ -162654,23 +163240,27 @@ xlange.com, 1 xlaw.com.br, 1 xlblinds.nl, 1 xldl.ml, 1 +xleech.to, 1 xlem.cn, 1 +xler8r.com, 1 xlhalliance.org, 1 +xlink.com.pl, 1 xlnaudio.com, 1 xloud.cf, 1 -xloveit.com, 1 xlr8.shop, 1 xlribbon.ml, 1 xlrsecurity.com, 1 xlstat.com, 1 xluxes.jp, 1 xm1s.life, 1 +xmag.pl, 1 xmail.id, 1 xmanshow.tk, 1 xmanyz.tk, 1 xmdhs.com, 1 xmediabigz.tk, 1 xmediazxy.tk, 1 +xmenrevolution.com, 1 xmessy.com, 1 xmgspace.me, 1 xmisystems.com, 0 @@ -162680,9 +163270,7 @@ xmlcharts.com, 1 xmlchartsdev.com, 1 xmnr.net, 1 xmodels.com, 1 -xmpp.beer, 1 xmpp.party, 1 -xmrcat.org, 1 xmv.cz, 1 xmyy.com, 1 xmzq.com, 1 @@ -162715,6 +163303,7 @@ xn----7sbbq5b0a1c.com, 0 xn----7sbddc9an3aethjp.xn--p1ai, 1 xn----7sbedlbhv2azb6a.xn--j1amh, 1 xn----7sbfl2alf8a.xn--p1ai, 1 +xn----7sbkofbbj4akz.xn--80asehdb, 1 xn----7sblrfhjjgq8g.xn--p1ai, 1 xn----7sbmucgqdbgwwc5e9b.xn--p1ai, 1 xn----7sbqlhcsgevuc0j.xn--p1acf, 1 @@ -162722,7 +163311,6 @@ xn----8sbadsuaby8bb4a7cwh.xn--p1ai, 1 xn----8sbdihuaxb3abob8a.xn--p1ai, 1 xn----8sbdjbisdat0g.xn--p1ai, 1 xn----8sbdo7cb0b.xn--p1ai, 1 -xn----8sbembqowmzehg7bm.xn--p1ai, 1 xn----8sbggtw.xn--p1ai, 0 xn----dtbfemantkhdczc.tk, 1 xn----dtbfemmqjdddczc.tk, 1 @@ -162760,7 +163348,7 @@ xn--2i0bt7p4fy71g.com, 1 xn--2o2b11i93dh3r.com, 1 xn--2sxs9ol7o.com, 1 xn--36-dlcdun7abo4a.xn--p1ai, 1 -xn--3bt625flzps8a.com, 0 +xn--3bt625flzps8a.com, 1 xn--3btta.xn--fiqs8s, 1 xn--3btta.xn--fiqz9s, 1 xn--3js556addp80q.cn, 1 @@ -162774,12 +163362,10 @@ xn--45i.tk, 1 xn--4brt03c.xn--fiqs8s, 1 xn--4brt03c.xn--io0a7i, 1 xn--4gq45ay49m.com, 1 -xn--4gq45ay49m.xn--fiqs8s, 1 -xn--4gq45ay49m.xn--fiqz9s, 1 xn--4gq62f52gdss.com, 1 xn--4kro7fswi.xn--6qq986b3xl, 1 xn--4qs85t91oq9e.com, 1 -xn--52-dlcmpf1aagymm6ivb.xn--p1ai, 1 +xn--54-6kc3btfht.xn--p1ai, 1 xn--57h.ml, 0 xn--5dbkjqb0d.com, 1 xn--5dbkjqb0d.net, 1 @@ -162794,6 +163380,7 @@ xn--72c1ar3gd6fvd.xn--o3cw4h, 1 xn--73-dlclq0cfe.xn--p1ai, 1 xn--78je2j8a.cafe, 1 xn--7ca.co, 1 +xn--7dvy22i.com, 1 xn--7or43h.jp, 1 xn--7tq776cdf4a.xn--fiqs8s, 1 xn--7tq776cdf4a.xn--fiqz9s, 1 @@ -162850,6 +163437,7 @@ xn--80aknjgrv.tk, 1 xn--80aleen8i.site, 1 xn--80aleen8i.xn--c1avg, 1 xn--80ancacgircb8q.xn--p1ai, 1 +xn--80anogxed.xn--p1ai, 1 xn--80aocgsfei.xn--p1ai, 1 xn--80aod6g.tk, 1 xn--80apaljb0ajh8a3d.xn--p1ai, 1 @@ -162864,6 +163452,7 @@ xn--90acjfgylpnm.xn--90ais, 1 xn--90adahrqfmec.xn--p1ai, 1 xn--90adu.xn--90a3ac, 1 xn--90agmsorb.tk, 1 +xn--90aij9af3f.com.ua, 1 xn--90aimoos.tk, 1 xn--90aizn.tk, 1 xn--90amdjbi3c0ec.xn--p1ai, 1 @@ -162886,7 +163475,7 @@ xn--anyd-7na.at, 1 xn--arelektrbunerisk-4bc73b.lv, 1 xn--aurdumeti-cmd.ro, 1 xn--autoschlssel-wesel-t6b.de, 1 -xn--b1a.cc, 1 +xn--avocai-timioara-kmf1a.ro, 1 xn--b1aa9b.tk, 1 xn--b1ab6abhfh.xn--p1ai, 1 xn--b1ag9a.xn--p1ai, 1 @@ -162940,6 +163529,7 @@ xn--cckwcxetd, 1 xn--cctsgy36bnvprwpekc.com, 1 xn--chrisliebr-y5a.de, 1 xn--chrysopekinsiologie-hzbe.fr, 1 +xn--ciqt1ytyi.news, 1 xn--circul-gva.cc, 1 xn--circul-u3a.cc, 1 xn--cisowcy-pjb5t.pl, 1 @@ -162975,14 +163565,12 @@ xn--e--4h4axau6ld4lna0g.com, 1 xn--e--ig4a4c3f6bvc5et632i.com, 1 xn--e--k83a5h244w54gttk.xyz, 1 xn--e1aa7abbg.xn--p1ai, 1 -xn--e1aaaqmz6c.xn--p1ai, 1 xn--e1aaavheew.xn--p1ai, 1 xn--e1aaavheewr.xn--p1ai, 1 xn--e1aahuqbk6f.tk, 1 xn--e1aajkmzd.xn--p1ai, 1 xn--e1adckvg5c.xn--p1ai, 1 xn--e1adlfhcdo7h.xn--p1ai, 1 -xn--e1afan7ad2a9b.xn--p1ai, 1 xn--e1afggpjhk3b1e.xn--p1ai, 1 xn--e1agokg6a9a.tk, 1 xn--e1aoahhqgn.xn--p1ai, 1 @@ -162996,7 +163584,6 @@ xn--eglujemy-23b.net, 1 xn--ehqw04eq6e.jp, 1 xn--elsignificadodesoar-c4b.com, 1 xn--eluprastinsulti-3kb.ee, 1 -xn--entreprise-dmolition-m2b.be, 1 xn--erban-e9b.ro, 1 xn--ertvg-pra.no, 1 xn--et8h.cf, 0 @@ -163010,6 +163597,7 @@ xn--fakovec-k6a.eu, 1 xn--familie-pppinghaus-l3b.de, 1 xn--familienforschung-krau-c2b.de, 1 xn--feuerlscher-arten-4zb.de, 1 +xn--ffnet-iua.org, 1 xn--fhqs21ch1c4t0a.xn--czr694b, 0 xn--fiqs8syvac75bffa172w.cn, 1 xn--fiqs8syvak73af2cw10h.cn, 1 @@ -163066,10 +163654,8 @@ xn--jensypiatas-7db.com, 1 xn--jkaappi-5waa.fi, 1 xn--jlq480n2rg, 1 xn--jp8hx8f.ws, 1 -xn--jx2a33n.com, 1 xn--kckd0bd4a8tp27yee2e.com, 1 xn--keditr-0xa.biz, 1 -xn--kferkind-0za.ch, 1 xn--kinsthetik-s5a.ch, 1 xn--kkcon-fwab.nz, 1 xn--kl-oja.is, 1 @@ -163116,7 +163702,7 @@ xn--mein-kchenhelfer-ozb.de, 1 xn--mensenges-o1a8c.gq, 1 xn--mensengesss-t8a.gq, 1 xn--mercadonavideo-2nb.com, 1 -xn--mgbbh2a9fub.xn--ngbc5azd, 1 +xn--mgbbh2a9fub.xn--ngbc5azd, 0 xn--mgbmmp7eub.com, 1 xn--mgbpkc7fz3awhe.com, 1 xn--mgbqq.com, 1 @@ -163134,8 +163720,8 @@ xn--mntsamling-0cb.dk, 1 xn--monvlogratuit-ehb.fr, 1 xn--morrhret-e0a.se, 1 xn--mrtelfuger-0cb.dk, 1 -xn--mxac.net, 1 xn--myprmienportal-8hb.de, 1 +xn--myrepubic-wub.net, 1 xn--myrepublc-x5a.net, 1 xn--naade-dta.com, 1 xn--nbetcieczane-4ib.gen.tr, 1 @@ -163216,7 +163802,7 @@ xn--srbarhetsskanning-8qb.se, 1 xn--srenpind-54a.dk, 1 xn--ss-sein-fetzt-wob.de, 1 xn--strandhaus-hinter-der-dne-1wc.de, 1 -xn--stubbfrsning-uppsala-hzb.se, 0 +xn--stubbfrsning-uppsala-hzb.se, 1 xn--super-visionr-mfb.de, 1 xn--svezavaukuu-ulb08i.rs, 1 xn--sz8h.ml, 1 @@ -163234,12 +163820,10 @@ xn--tigreray-i1a.org, 1 xn--tkuka-m3a3v.com, 1 xn--tkuka-m3a3v.nz, 1 xn--trdler-xxa.xyz, 1 -xn--tudentskodelo-9tc.si, 1 xn--u8jwd.ga, 1 xn--u9j920h4sbt5ex10f.online, 1 xn--u9j933ksxs6hu.com, 1 xn--u9jv84l7ea468b.com, 1 -xn--u9jw87h6tdi4hqls.com, 1 xn--u9jy16ncfao19mo8i.nagoya, 1 xn--uba.eu.org, 1 xn--ug8h.st, 1 @@ -163266,7 +163850,6 @@ xn--vwsw0b.xn--fiqz9s, 1 xn--vwsw0b192f.xn--fiqs8s, 1 xn--vwsw0b192f.xn--fiqz9s, 1 xn--vxsq49l.cn, 1 -xn--vy7b1z.com, 1 xn--w-sgae.eu, 1 xn--w22a.jp, 1 xn--wagistoowe-g0b.pl, 1 @@ -163292,7 +163875,6 @@ xn--wzkiwidowe-gbb86g.pl, 1 xn--xft85up3jca.ga, 1 xn--xz1a.jp, 1 xn--y3cac7d1d.xn--o3cw4h, 1 -xn--y3cri.com, 1 xn--y8j148r.xn--q9jyb4c, 0 xn--y8j2eb5631a4qf5n0h.com, 1 xn--y8ja6lb.xn--q9jyb4c, 1 @@ -163324,9 +163906,11 @@ xnoe.moe, 1 xnop.yt, 1 xnopyt.com, 1 xnopyt.info, 1 +xnsir.com, 1 xntrik.wtf, 1 xnu.kr, 1 xnxxporns.com, 1 +xo.wtf, 1 xoan.cf, 1 xobot.su, 1 xobotun.com, 1 @@ -163353,17 +163937,17 @@ xormatic.com, 1 xosh.fr, 1 xot.gr, 1 xotaku.com, 1 +xotictrends.com, 1 xotika.tv, 1 xoue.com, 1 xoutpost.com, 1 -xovv.io, 1 +xoxo.news, 1 xp-ochrona.pl, 1 xp.nsupdate.info, 1 -xparts.com.tr, 1 xpd.se, 1 -xpendustries.com, 1 xpenology-fr.net, 1 xperiacode.com, 1 +xperidia.com, 1 xperiorapps.nl, 1 xpertairtx.com, 1 xpertairwaco.com, 1 @@ -163371,6 +163955,7 @@ xpertcenter.ch, 0 xpertcube.com, 1 xpertgears.com, 1 xpertmedia.ro, 1 +xpertva.com, 1 xpetit.net, 1 xpg.jp, 1 xphelper.tk, 1 @@ -163424,10 +164009,10 @@ xs2a.no, 1 xs4ever.org, 1 xsait.tk, 1 xsauto.pt, 1 +xsave.ru, 1 xscancun.com, 1 xsden.info, 1 xsec.me, 1 -xselldev.pl, 1 xsenya74hram.tk, 1 xserownia.cloud, 0 xserownia.com.pl, 1 @@ -163452,14 +164037,16 @@ xsz.jp, 1 xt.om, 1 xt177.com, 1 xt71uc.top, 1 +xtaboo3d.com, 1 xtarget.ru, 1 -xtdowner.com, 1 xtec.eu.org, 1 xtechtecnologia.tec.br, 1 xtendafin.com, 1 +xtexx.eu.org, 1 xtianhe.com, 0 xtime.com, 1 xtips.us, 1 +xtny.com, 1 xtom.africa, 1 xtom.al, 1 xtom.amsterdam, 1 @@ -163542,6 +164129,7 @@ xtremecarwash.com, 1 xtremegaming.it, 1 xtremeitu.dk, 1 xtremers.tk, 1 +xtremyblog.com, 0 xtronics.com, 1 xts.bike, 1 xts3636.net, 1 @@ -163550,10 +164138,9 @@ xtu2.com, 1 xtxmarkets.com, 1 xtzone.be, 1 xtzs6.vip, 1 -xtzws.com, 1 xuab.net, 1 xuan-hao.com, 1 -xuann.wang, 0 +xuann.wang, 1 xubo666.com, 1 xuc.me, 1 xucha.ml, 1 @@ -163573,7 +164160,6 @@ xumm.me, 1 xunmengdu.com, 1 xuntaosms.com, 1 xuntier.ch, 1 -xurify.com, 1 xurl.gq, 1 xurl.ltd, 1 xushuai.org, 1 @@ -163644,15 +164230,18 @@ xy6161.com, 1 xy6957.com, 1 xy7272.com, 0 xy7373.com, 1 -xy96.top, 0 +xy96.top, 1 xyactive.com.au, 1 xyenon.bid, 1 xyfindit.com, 1 +xyfun.net, 0 xyl.cool, 1 xylexa.ai, 1 +xylimelts.au, 1 xylimelts.com.au, 1 xyloefarmoges.gr, 0 xylos.nl, 1 +xymaxreit.co.jp, 1 xynta.ch, 1 xynta.com, 1 xyquadrat.ch, 1 @@ -163681,6 +164270,7 @@ xyz88.biz, 1 xyz88.fun, 1 xyz88.info, 1 xyz88.life, 1 +xyz88s.com, 1 xyzcd.ai, 1 xyzemails.com, 0 xyzmedia.net, 1 @@ -163691,7 +164281,9 @@ xyzzy.earth, 1 xyzzyyyz.com, 1 xz0.de, 1 xzclip.cn, 1 +xzib.com, 1 xzibits.com, 1 +xzqy.net, 1 xztech.co, 1 y-erodoga.com, 1 y-nas.tk, 1 @@ -163787,6 +164379,7 @@ ya-madina.tk, 1 ya-radio.tk, 1 ya-stroynaya.tk, 1 ya-zdorova.tk, 1 +yaateens.org, 1 yaaw.de, 1 yaay.com.br, 1 yaay.today, 1 @@ -163851,6 +164444,7 @@ yakmail.tech, 1 yakshop.bg, 1 yakubovich-les.ru, 1 yakult.com.sg, 1 +yakumed.jp, 1 yakupyilmazboru.com, 1 yakushijishika.com, 1 yakutia.tk, 1 @@ -163858,7 +164452,6 @@ yakutianews.tk, 1 yakutsk-city.tk, 1 yakutsk-news.net, 1 yakutsk.ml, 1 -yalamanchili.com, 1 yalb.tech, 1 yalecleaners.com, 1 yalla-shootx.com, 1 @@ -163878,6 +164471,7 @@ yamal159263.ml, 1 yamanami.tokyo, 1 yamanobe-taro.jp, 1 yamasa-kanten.com, 1 +yamasi.com, 1 yamatonetwork.com, 1 yamazaki-automotive.co.jp, 1 yamei1.com, 1 @@ -163895,6 +164489,7 @@ yan.net.cn, 1 yan.sg, 1 yan3321.com, 1 yanaduday.com, 1 +yananikitina.site, 1 yanaya-k.jp, 1 yanbohon.com, 1 yanchevfarm.bg, 1 @@ -163916,7 +164511,9 @@ yangzi.ml, 1 yanhongming.net, 1 yanik.info, 1 yanisvaroufakis.eu, 1 -yaniv.tv, 1 +yanivboost.com, 1 +yanjicg.com, 0 +yankeeinstitute.org, 1 yann.tw, 1 yannic.world, 0 yannickkordel.de, 1 @@ -163974,10 +164571,12 @@ yardhelp.ga, 1 yardstik.com, 1 yardthyme.com, 1 yardtower.com, 1 +yaremchuk.org, 1 yaren-it.de, 1 yaren.it, 1 yarlesac.com, 1 yarmarka-megamarket.ru, 1 +yarmuthforcongress.com, 1 yarnandy.com, 1 yarno.com.au, 1 yarogneva.ru, 1 @@ -163992,8 +164591,7 @@ yarracitta.tk, 1 yarravilletownhouses.com.au, 1 yaru.one, 1 yarygin.tk, 1 -yasamkocluguegitimi.com.tr, 1 -yasar.edu.tr, 1 +yasam.co.uk, 1 yasarteknik.com.tr, 1 yaseen.ae, 1 yaseiblog.org, 1 @@ -164001,6 +164599,7 @@ yaseminuzumcu.com, 1 yash.com, 1 yashima-shika.com, 1 yashinstore.com, 1 +yashu.store, 1 yasic.net, 1 yasikish.com, 1 yasking.org, 1 @@ -164053,7 +164652,6 @@ yaxim.org, 1 yay-btcl.work, 1 yay.space, 1 yayart.club, 1 -yayfor.me.uk, 1 yayginegitim.net, 1 yayl888.com, 1 yaymaker.com, 1 @@ -164070,13 +164668,13 @@ ybresson.com, 1 ybrfrance.fr, 1 ybscareers.co.uk, 1 ybsj.net, 1 -ybti.net, 0 +ybti.net, 1 +ybug.io, 1 ybvip789.com, 0 ybzhao.com, 1 yc1820.com, 1 ycalculators.com, 1 ycatsh.net, 1 -ycb.fr, 1 ycbmdevelopment.com, 1 ycbmstaging.com, 1 ycdtc.org, 1 @@ -164096,6 +164694,7 @@ ydr.me, 1 ydsbookstore.com, 1 ydskursuankara.net, 1 ydspublishing.com, 1 +ydt.am, 1 ydyy99.com, 1 ydyydy.ml, 1 yeadonboroughpa.gov, 1 @@ -164123,7 +164722,6 @@ yellowcar.website, 1 yellowfolder.com, 1 yellowmessenger.com, 1 yellowpages.ee, 1 -yellowribbon.mil, 1 yellowshow.com, 1 yellowsource.org, 1 yellowsprings.gov, 1 @@ -164181,7 +164779,6 @@ yemenlink.tk, 1 yenbainet.tk, 1 yengec.co, 1 yenhughes.law, 1 -yeniasir.com.tr, 1 yennhi.co, 1 yenpape.com, 1 yenphat.vn, 1 @@ -164191,6 +164788,7 @@ yep-pro.ch, 0 yepu.cc, 1 yepu.ga, 1 yerbasbuenas.tk, 1 +yerelvitrin.com, 1 yerf.eu, 1 yeri.com, 1 yes-money.cf, 1 @@ -164204,7 +164802,6 @@ yescool.cn, 0 yesemek.com, 1 yesfone.com.br, 1 yesglasses.com, 1 -yesgov.com, 1 yesh.lk, 1 yesiammaisey.me, 1 yesichat.com, 1 @@ -164212,11 +164809,11 @@ yesileczam.com, 1 yesilliforum.tk, 1 yesilpanda.com, 1 yesjobs.ga, 1 +yesleaks.com, 1 yesmirov.ga, 1 yesod.in, 1 yesogovinpetcare.com, 1 yesolo.tk, 1 -yesonline.me, 1 yespornfree.com, 1 yespornplease.com, 1 yessirgear.com, 0 @@ -164261,7 +164858,6 @@ yhclinic.com.tw, 1 yhe.me, 1 yhenke.de, 0 yhhvi.cf, 1 -yhme.cc, 1 yhn.sh, 1 yhndnzj.com, 1 yhong.me, 1 @@ -164291,6 +164887,7 @@ yiff.rest, 1 yiff.rocks, 1 yiff.supply, 1 yigelangzi.com, 1 +yiguan.me, 1 yiheng.moe, 0 yihome.com.tw, 1 yihouse.tw, 1 @@ -164390,11 +164987,16 @@ yodalef3.tk, 1 yodaremote.tk, 1 yodelmobile.com, 1 yodocon.com, 1 +yoga-bien-etre.com, 1 yoga-erde.de, 0 +yoga-good.fr, 1 yoga-in-aying.de, 1 +yoga-prive.de, 1 +yoga-school.xyz, 1 yoga-zentrum-narayani.de, 1 yoga.is-an-engineer.com, 1 yogaangels.ga, 1 +yogaanswered.com, 1 yogachina.com, 1 yogaeastwest.com, 1 yogaecology.org, 1 @@ -164413,7 +165015,7 @@ yogatherapykosha.com, 1 yogaworld.tk, 1 yogesh.com.au, 1 yogibear.tk, 1 -yogimotto.com, 1 +yogonet.com, 1 yogstation.net, 1 yogularm.de, 1 yogunet.de, 1 @@ -164449,6 +165051,9 @@ yolosh.se, 1 yoloyolo.top, 0 yomena.in, 1 yomeuno.com, 1 +yomiren.co.jp, 1 +yomiurigolf.co.jp, 1 +yomiya.eu.org, 1 yon.co.il, 0 yonalink.com, 0 yoneda-paint.com, 1 @@ -164457,7 +165062,6 @@ yongkang-clinic.com.tw, 1 yongnuo.fr, 1 yongnuorumors.com, 1 yongseovn.net, 1 -yoni-mip.com, 1 yonistap.com, 1 yonkersdentalspa.com, 1 yontu.be, 1 @@ -164469,7 +165073,6 @@ yooooex.com, 1 yopers.com, 0 yopmail.com, 1 yopmail.net, 1 -yopongolacasaconhomecenter.com, 1 yoppoy.com, 1 yops.info.pl, 1 yoramvandevelde.net, 1 @@ -164482,16 +165085,17 @@ yore.tk, 1 yorganica.ga, 1 yorgosbos.nl, 1 yorickpeterse.com, 1 +yoriso.com, 1 yorkcountyne.gov, 1 yorkcountysc.gov, 1 yorkcountyschools.org, 1 -yorke.sa.gov.au, 1 yorkieloverdiy.com, 1 yorkiepooexpert.com, 1 yorkipoo.com, 1 yorkmoneyman.com, 1 yorkroadyums.com, 1 yorksc.gov, 1 +yorkshiredalesinflatables.co.uk, 1 yorkshiregardensheds.co.uk, 1 yorkshiregrit.cc, 1 yorkshirehousing.co.uk, 1 @@ -164499,17 +165103,15 @@ yorkshireinflatables.co.uk, 1 yorkshireterrier.com.br, 1 yorkshireterrieraspets.com, 1 yorname.ml, 0 -yornik.eu, 1 yornik.nl, 1 yoru.me, 0 yoryo.com, 1 yosakoinight.com, 1 yosbeda.com, 1 -yosefsa.xyz, 1 yosemo.de, 1 +yosh.is, 1 yosheenetwork.fr, 1 yoshibaworks.com, 1 -yoshikawa-koumuten.co.jp, 1 yoshimura-seimenjo.com, 1 yoshitsugu.net, 1 yoshiya2020.com, 1 @@ -164518,20 +165120,17 @@ yosida-dental.com, 1 yosida95.com, 1 yosm.net, 1 yospos.org, 1 -yotavibe.com, 1 yoti.com, 1 yoticonnections.com, 1 yotilabs.com, 1 yoto.at, 0 -yotpinx.com, 0 +yotpinx.com, 1 yotta-zetta.com, 1 -yottaes.com, 1 yottahash.net, 1 yotubaiotona.net, 1 you-working.ru, 1 you.bo, 0 you15iv.com, 1 -youandmedating.in, 1 youandmepps.com.au, 1 youbehero.com, 1 youber.cz, 1 @@ -164543,7 +165142,6 @@ youcanfuckoff.xyz, 1 youcanhelp.tk, 1 youcanmakeit.at, 1 youcare.world, 1 -youcity3.com, 1 youcloud.com, 1 youcruit.com, 1 youcruit.jobs, 1 @@ -164561,7 +165159,6 @@ youhabitat.es, 1 youhavewords.com, 1 youhs.top, 0 youhua.ru, 1 -youimmi.com, 1 youiv.info, 1 youiv.pw, 1 youiv.tv, 1 @@ -164585,11 +165182,13 @@ youkube.cf, 1 youkyi.fr, 1 youla.gq, 1 youla.ru, 1 +youlayla.com, 1 youlivewesnap.com, 1 youlovehers.com, 1 youmeandjunee.com.au, 1 youmiracle.com, 1 youmonit.me, 1 +youms.de, 1 younameit.ru, 1 youneedfame.com, 1 younesclothing.com, 1 @@ -164602,12 +165201,15 @@ young.scot, 0 youngandunited.nl, 0 youngart.hu, 1 youngauthentic.cf, 1 +youngbabes.pro, 1 youngcouple9598.net, 1 youngdevotion.net, 1 youngfree.cn, 1 +youngguns.club, 1 younglabour.co.nz, 1 younglabour.nz, 1 younglabour.org.nz, 1 +youngleaderssummit.com.ng, 1 younglions.cf, 1 youngmodelsagency.tk, 1 youngpeopleunited.co.uk, 1 @@ -164617,6 +165219,7 @@ youngsoulstudios.com, 0 youngsurveyors.dk, 1 youngsvillenc.gov, 1 youngtherapy.co.uk, 1 +youngtube.one, 1 youngvoicesmatter.org, 1 youniq.ga, 1 younl.net, 1 @@ -164639,8 +165242,10 @@ your28days.com, 1 youran.me, 1 yourantiquarian.com, 1 youraudiobooks.xyz, 1 +yourazbraces.com, 0 yourbenefitsresources.com, 1 yourberksbucksoxon.wedding, 1 +yourbittorrent.com, 1 yourbittorrent2.com, 1 yourblazeguard.com, 1 yourbodyknows.dk, 1 @@ -164649,12 +165254,12 @@ yourbonus.click, 0 yourbreakfast.tk, 1 yourbristolsomerset.wedding, 1 yourbusiness.ml, 1 -yourbusiness.technology, 1 yourbusinessblueprint.com, 1 yourcareerhost.com, 1 +yourcause.digital, 1 +yourcfo.co.in, 0 yourcheshiremerseyside.wedding, 1 yourchoicematters.ca, 1 -yourcoder.in, 1 yourcomputer.expert, 1 yourcomputer.tk, 1 yourconscious.life, 1 @@ -164688,6 +165293,7 @@ yourforcesupport.net, 1 yourforcesupport.pro, 1 yourforcesupport.us, 1 yourforex.org, 1 +yourfriendlyrecipes.com, 1 yourfriendlytech.com, 1 yourfuntrivia.com, 1 yourgadget.ro, 1 @@ -164711,7 +165317,6 @@ yourkrabivilla.com, 1 yourlegacy.team, 1 yourlgpd.com, 1 yourlifespirit.de, 1 -yourlink.me, 1 yourloan.gq, 1 yourlondon.wedding, 1 yourlovesong.com.mx, 1 @@ -164731,7 +165336,6 @@ youronly.one, 1 yourpalstore.com, 1 yourpersonalfoodnesscoach.nl, 1 yourpersonalfrance.com, 1 -yourpersonalplumbercan.com, 1 yourphotoscanned.com, 1 yourplanet.eu.org, 1 yoursaypenrith.com.au, 1 @@ -164748,7 +165352,6 @@ yoursmartfirm.com.au, 1 yoursmartschool.au, 1 yoursmartschool.com, 1 yoursmartschool.com.au, 1 -yoursoft.pl, 1 yoursoul.gq, 1 yoursoulmate.tk, 1 yoursouthwales.wedding, 1 @@ -164761,6 +165364,7 @@ yourstruly.yt, 1 yoursuper.gov.au, 1 yoursupportline.co.uk, 1 yoursurrey.wedding, 1 +yourtcas.com, 1 yourteaminindia.com, 1 yourtests.tk, 1 yourticketbooking.com, 1 @@ -164775,7 +165379,6 @@ youryorkshire.wedding, 1 yourznc.com, 1 yousee.cf, 1 yousee.gq, 1 -yousefdev.xyz, 1 yousei.ne.jp, 1 youservice.it, 1 youshawn.com, 1 @@ -164809,6 +165412,7 @@ youtubekids.com, 1 youtubelet.com, 1 youtuberis.lt, 1 youtuberus.tk, 1 +youwebcams.org, 1 youwillnever.be, 1 youyuan.rocks, 1 youyuandesign.top, 1 @@ -164838,7 +165442,6 @@ yq5.de, 1 yqagizev.tk, 1 yqmhz.com, 1 yr-labo.jp, 1 -yr.com.au, 1 yr.sa, 1 yr166166.com, 1 yrausquin.com, 0 @@ -164848,6 +165451,7 @@ yrefail.net, 1 yriik.ml, 1 yrityksen-perustaminen.net, 1 yrx.me, 1 +yryz.net, 1 ys.edu.gr, 1 ys.gr, 1 ys96.org, 1 @@ -164861,7 +165465,6 @@ ysmihvamse.bg, 1 yspa.tv, 1 yspertal.party, 1 ystral.com, 1 -ystv.co.uk, 1 ysuna.xyz, 1 yt-downloader.xyz, 0 yt.kg, 1 @@ -164870,7 +165473,6 @@ yt629.com, 1 yt675.com, 1 yt972.com, 1 ytcodecs.com, 1 -ytconvertpro.net, 1 ytec.ca, 1 ytexa.tk, 1 ytpak.pk, 1 @@ -164879,20 +165481,19 @@ ytscm.com, 1 ytterland.tk, 1 yttrium.systems, 1 ytvwld.de, 0 -ytwang.nl, 1 ytx588.com, 1 yu-dkc.com, 1 yu-mug.jp, 1 yu.nm.cn, 1 yu.vc, 1 yuan.ga, 1 -yuan.idv.tw, 1 yuan.nctu.me, 1 yuan.ren, 1 yuanandyuan.info, 1 yuanandyuan.me, 1 yuanbangwulian.com, 1 yuanben.io, 1 +yuanbenlian.com, 1 yuanbiji.net, 1 yuandan.cf, 1 yuandan.gq, 1 @@ -164918,9 +165519,6 @@ yueeeyueee.com, 1 yuema.net.cn, 1 yuengling.com, 1 yuer.sytes.net, 1 -yuesao.cc, 1 -yuesao.hk, 1 -yuesao.vip, 1 yuezhang.com, 1 yugasun.com, 1 yugege.cf, 1 @@ -164937,6 +165535,7 @@ yuka.io, 1 yukari.cafe, 1 yuki-nagato.com, 1 yuki.xyz, 1 +yukicat.net, 1 yukict.com, 1 yukieda.com, 1 yukigroup.ru, 1 @@ -164953,12 +165552,10 @@ yukomgroup.com, 1 yukonconnector.com, 1 yukonlip.com, 1 yukoslibrary.ga, 1 -yukselgorev.com, 1 yula.cf, 1 yulaiz.com, 1 yulamerola.com.br, 1 yule.hk, 1 -yule.ink, 1 yuleyule88game.com, 1 yuliana-hotel.com, 1 yulsn.io, 1 @@ -164996,7 +165593,6 @@ yunite.one, 1 yunjishou.pro, 1 yunloc.com, 1 yunqueradehenares.tk, 1 -yunxinfoods.com, 1 yunzhu.li, 1 yuplay.com, 1 yupulse.be, 1 @@ -165004,8 +165600,6 @@ yuqi.me, 1 yuquepay.com, 1 yura.cf, 1 yuricarlenzoli.it, 1 -yurigui.com, 1 -yurihi.net, 1 yurikirin.me, 1 yuriland.xyz, 1 yurimoens.be, 1 @@ -165014,7 +165608,7 @@ yurist-vopros.gq, 1 yuriylysyuk.ru, 1 yurp.nl, 1 yurtdisigocmenlik.com, 1 -yurudie.com, 0 +yurudie.com, 1 yus-azaria.tk, 1 yusa.me, 1 yushanfang.recipes, 1 @@ -165028,15 +165622,13 @@ yuu.ink, 1 yuucchi.com, 1 yuuki0xff.jp, 1 yuumari.com, 1 -yuumpk.ru, 1 +yuuta.moe, 1 yuvagalam.com, 1 yuvaskillfoundation.org, 1 yuweetek.com, 0 yuwei.org, 1 yuweiji.com, 1 yuweiyang.xyz, 1 -yuwell.com.pk, 1 -yuwell.pk, 1 yux.fr, 1 yuxiaoyu.me, 1 yuxuan.org, 1 @@ -165045,12 +165637,11 @@ yuyu-support.com, 1 yuyucn.com, 1 yuzei.ml, 1 yuzei.tk, 1 -yuzicare.com, 1 +yuzicare.com, 0 yuzneri.net, 1 yuzu.tk, 1 yuzurisa.com, 1 yvabph.com, 1 -yvesgille.fr, 1 yveslegendre.fr, 0 yvesx.com, 1 yveszarkaconsultant.fr, 1 @@ -165089,7 +165680,7 @@ yy6957.co, 1 yy9297.co, 1 yy9728.co, 1 yya.men, 1 -yyc.city, 0 +yyc.city, 1 yycbike.info, 1 yydjtc.top, 0 yyr.im, 1 @@ -165101,6 +165692,7 @@ yzal.io, 1 yzarul.com, 1 yzer.club, 1 yzervast-heestert.be, 1 +yzfc.com, 1 yzh8.cc, 1 yzh8.net, 1 yzh8.vip, 1 @@ -165118,9 +165710,7 @@ z-konzept-nutrition.ru, 1 z-pc.net, 1 z-rejstejna.cz, 1 z.ee, 1 -z.ls, 1 z.md, 1 -z.nu, 1 z.sh, 1 z.sv, 1 z.tl, 1 @@ -165151,7 +165741,6 @@ z6587.com, 1 z6729.co, 1 z6882.com, 1 z6957.co, 1 -z6services.com.br, 1 z6wang.com, 1 z8011.com, 1 z8012.com, 0 @@ -165189,12 +165778,13 @@ z8219.com, 0 z8226.com, 0 z8232.com, 0 z82365.com, 1 -z830.net, 1 z8817.com, 0 z8851.com, 0 z8865.com, 1 z8876.com, 0 +z8879.com, 1 z8895.com, 1 +z8920.com, 1 z9297.co, 1 z95.jp, 1 z9728.co, 1 @@ -165218,7 +165808,7 @@ zabukovnik.net, 1 zac.cy, 1 zacarias.com.ar, 1 zacatecasmeetings.com, 1 -zach.codes, 1 +zach.codes, 0 zach.net, 1 zacharopoulos.me, 0 zacharydubois.me, 1 @@ -165230,7 +165820,7 @@ zacharysherman.tk, 1 zachaysan.com, 1 zachbolinger.com, 1 zachborboa.com, 1 -zachiti.com, 1 +zachgibbens.org, 1 zachranari.tk, 1 zachschneider.ca, 1 zachyang.cn, 1 @@ -165240,9 +165830,9 @@ zackiarfan.ml, 1 zacks.eu, 1 zackzack.at, 1 zaclys.com, 0 +zacnaoliwka.pl, 1 zad-academy.com, 1 zadania.wiki, 1 -zadgroup.com.my, 1 zadm.de, 1 zadrot.tk, 1 zadroweb.com, 1 @@ -165253,12 +165843,11 @@ zaferaniehearing.com, 1 zaferbalkan.com, 1 zaffittv.mx, 1 zaffke.co, 1 +zafiriou.de, 1 zafrani.ga, 1 zafrasa.com.ar, 1 zaftigpress.com, 1 zagadki-cosmosa.tk, 1 -zagelcast.com, 1 -zageron.com, 1 zagi.net, 1 zagis.nl, 0 zagorod.spb.ru, 1 @@ -165280,7 +165869,7 @@ zahnarzt.ac, 1 zahnarzt.se, 1 zahnarztpraxis-cevikel.de, 1 zahnarztpraxis-schaerding.at, 1 -zahnarztpraxis-ural.de, 1 +zahnarztpraxis-simone-koch.de, 1 zahrowski.com, 1 zaija.tk, 1 zaiko.io, 1 @@ -165320,11 +165909,11 @@ zajmy-contact.gq, 1 zajmy-contact.tk, 1 zajsoft.net, 1 zak.co.at, 1 -zakaacouture.com, 0 +zakaacouture.com, 1 zakachat-brauzer.gq, 1 zakachat-temi.gq, 1 zakaria.website, 1 -zakarialegal.cz, 0 +zakarialegal.cz, 1 zakariya.blog, 1 zakariya.org, 1 zakarotta.ga, 1 @@ -165333,6 +165922,7 @@ zakaz.ua, 1 zakazbiletov.kz, 1 zakcutner.com, 1 zakcutner.uk, 1 +zakeke.com, 1 zakelijketaalcursus.nl, 1 zakes.tk, 1 zakirov.gq, 1 @@ -165345,8 +165935,10 @@ zakojifarm.jp, 1 zakononline.cf, 1 zakpex.com, 1 zakr.es, 1 +zakratheme.com, 1 zakrentus-ostrus.space, 1 zakspartiesandevents.com, 1 +zakutka.com, 0 zala.ml, 1 zalaetavoleibol.tk, 1 zalan.do, 1 @@ -165359,6 +165951,7 @@ zaloghaz.ro, 1 zalohovaniburian.cz, 1 zalow.com, 1 zaltv.com, 1 +zalvus.com, 1 zam0th.tk, 1 zamadaftar.com, 1 zamalektoday.com, 1 @@ -165382,10 +165975,7 @@ zandersgroup.com, 1 zandmhomes.com, 1 zandoodle.me.uk, 1 zandra.cf, 1 -zandro.ai, 1 -zandro.eu, 1 zandro.fit, 1 -zandro.fyi, 1 zandro.nl, 1 zanellidesigns.co.uk, 1 zaneslaw.com, 1 @@ -165418,7 +166008,6 @@ zaoren.tk, 1 zap-mag.ru, 1 zap-map.com, 1 zap51.in, 1 -zapad-s.ru, 1 zapamini.ml, 1 zapaska.tk, 1 zapcat.com.au, 1 @@ -165429,7 +166018,6 @@ zaplano.tk, 1 zapmap.com, 1 zapmaster14.com, 1 zapnito.com, 0 -zapondo.de, 1 zappateers.com, 1 zappbuildapps.com, 0 zappee.co.za, 1 @@ -165442,6 +166030,7 @@ zapreaders.cf, 1 zaptorg.xyz, 1 zapzockt.de, 1 zar-kripto.tk, 1 +zar.za.net, 1 zarabiaj.com, 1 zarabianiewsieci.tk, 1 zarabotai-doma.ml, 1 @@ -165468,12 +166057,7 @@ zarinab.com, 1 zarja.tk, 1 zarjadnik.tk, 1 zarla.com, 1 -zarlaa.shop, 0 -zarlacdn.com, 1 -zarladomains.com, 1 -zarlasites.com, 1 zarnitsa.eu, 1 -zarnu.com, 1 zarobotok-forum.ga, 1 zarobotok-forum.gq, 1 zarobotok-forum.ml, 1 @@ -165482,10 +166066,11 @@ zaroktv.com.tr, 1 zaroktv.krd, 1 zarra.tk, 1 zaruhi.ml, 1 +zarv.email, 1 zary.me, 1 zas4eku.tk, 1 -zasbury.com, 1 zaschtnik.ga, 1 +zastawsamochodu.pl, 1 zastenchivost.tk, 1 zasudili.ru, 1 zataz.com, 1 @@ -165532,7 +166117,6 @@ zbib.org, 1 zbieram-medaily.sk, 1 zbigatron.com, 1 zbnr-hp.com, 1 -zbotic.in, 1 zbrain.ml, 1 zbrane-doplnky.cz, 0 zbrsk.ru, 1 @@ -165603,6 +166187,7 @@ zda.ag, 1 zdbl.de, 1 zdcs.com, 1 zdebelak.pl, 1 +zdeneklavicky.cz, 1 zdenekspacek.cz, 1 zdenekvecera.cz, 1 zdev.me, 1 @@ -165632,11 +166217,9 @@ zdrowie-na-widelcu.pl, 1 zdxiaoda.me, 1 zdymak.by, 1 ze-mag.info, 1 -ze-seo.fr, 1 ze3kr.com, 1 zeal-and.jp, 1 zeal-interior.com, 1 -zealousholistics.com, 1 zealousweb.com, 0 zealworks.jp, 1 zeamerseagerbeavers.com, 1 @@ -165650,8 +166233,8 @@ zebrabyte.ro, 1 zebraguide.com, 1 zebravinken.tk, 1 zebspeech.tk, 1 +zebulon.fr, 1 zecanard.com, 1 -zecanard.lol, 1 zecible.fr, 1 zeckenhilfe.de, 1 zectazepia.tk, 1 @@ -165664,7 +166247,6 @@ zeedroom.be, 1 zeeg.me, 1 zeegers.family, 1 zeekajakvaren.tk, 1 -zeekr.pk, 1 zeel.com, 1 zeelandbrug.tk, 1 zeeloo.us, 1 @@ -165698,7 +166280,6 @@ zeilenvoorondernemers.nl, 1 zeilinstructeurs.tk, 1 zeilles.nu, 1 zeit.co, 1 -zeit.com.br, 1 zeit.sh, 1 zeitoununiversity.org, 1 zeitpunkt-kulturmagazin.de, 1 @@ -165718,20 +166299,18 @@ zeldamods.org, 1 zelena-armija.tk, 1 zelendoma.ml, 1 zeliard.tk, 1 +zelina.eu, 1 zelkinezis.ru, 1 zelkor.ml, 1 zelle.com, 1 zellusservices.com.br, 1 zelong.tk, 1 -zelotech.com.br, 1 zeloz.xyz, 1 zelt.in, 1 -zelta.space, 1 zelvar.cz, 1 zemanta.com, 1 zemli.tk, 1 zemlova.cz, 1 -zemlya.com.ua, 1 zemlyaki.ga, 1 zemlyaki.ml, 1 zemlyaki.tk, 1 @@ -165745,8 +166324,6 @@ zenbalans.nl, 1 zenbox.pl, 1 zenchain.com, 1 zencube.ga, 1 -zencurity.com, 1 -zencurity.dk, 1 zendarhunters.tk, 1 zendave.au, 1 zendev.ga, 1 @@ -165769,6 +166346,7 @@ zenitchik.org, 0 zenithappliance.co.uk, 1 zenithmanagement.net, 1 zenithmedia.ca, 0 +zenithpv.ca, 1 zenithvitalcare.com.au, 1 zenitkft.hu, 1 zenitnetwork.com, 1 @@ -165779,10 +166357,11 @@ zenkit.com, 1 zenless.top, 1 zenlogic.com, 1 zenmail.ga, 1 +zenmassageusa.com, 1 zenmod.in.rs, 1 zenneo.com, 1 zenniereport.com, 1 -zeno-dev.com, 0 +zeno-dev.com, 1 zenocious.com, 1 zenon.at, 1 zenon.eu, 1 @@ -165806,6 +166385,7 @@ zenvate.com.au, 1 zenvia.com, 1 zenvideocloud.com, 1 zenvite.com, 1 +zenways.io, 1 zeocax.com, 1 zep.us, 0 zephyr-cloud.io, 1 @@ -165826,7 +166406,6 @@ zercutie.com, 1 zerevia.com, 1 zerg.uk, 1 zergy.net, 1 -zerionplatform.com, 1 zerium.ml, 1 zerm.eu, 1 zerm.link, 1 @@ -165860,19 +166439,16 @@ zerolink.click, 1 zerolink.es, 1 zeromoment.marketing, 1 zeronet.io, 1 -zeroone.sk, 1 zeroplast24.ru, 1 zeroq.cl, 1 zeroscaler.io, 1 zerosector.io, 1 zeroseteatacado.com.br, 1 -zerotolerance.me, 1 zerotoleranceclan.tk, 1 zerotoone.de, 1 zerotoone.studio, 0 zerotrust.plus, 1 zerotwo.ga, 1 -zerowanlabs.com, 1 zerowastesonoma.gov, 1 zeroz.cf, 1 zeroz.ga, 1 @@ -165887,9 +166463,10 @@ zerty.de, 0 zervasandpepper.com, 1 zeryn.net, 1 zesgoes.nl, 1 -zeshanfoundation.org, 1 +zeshanfoundation.org, 0 zestedesavoir.com, 1 zesty.co, 1 +zestylemon.co.uk, 1 zeta.co.za, 1 zeta.hk, 1 zetadisseny.es, 1 @@ -165898,12 +166475,10 @@ zetapp.in, 1 zetasystem.jp, 1 zeteomail.com, 1 zetflix.pro, 1 -zetland.biz, 1 zetokatowice.pl, 1 zetsubou.games, 1 zettaplan.ru, 1 zettaport.com, 1 -zettatek.com, 1 zettlmeissl.de, 1 zety.com, 1 zety.es, 1 @@ -165918,7 +166493,7 @@ zevelev.net, 1 zevenbergenbos.tk, 1 zevrobroker.com, 1 zewtie.com, 1 -zeydoo.com, 1 +zeynabacademy.com, 1 zeyoking.com, 1 zezov.com, 1 zf.com, 1 @@ -165964,7 +166539,7 @@ zhangwendao.com, 1 zhangyiming.tech, 1 zhanwei.me, 1 zhanxiangyang.com, 1 -zhanzhangb.cn, 1 +zhanzhangb.cn, 0 zhanzhangb.com, 0 zhaochen.xyz, 1 zhaochengtan.com, 1 @@ -165990,6 +166565,7 @@ zhen-chen.com, 1 zhenggangzhao.org, 1 zhengjie.com, 1 zhengzihan.com, 1 +zhenic.ir, 1 zhenn.fr, 1 zhennong.com, 1 zheruik.kz, 1 @@ -165997,6 +166573,7 @@ zhestokiemechtyi.tk, 1 zhestokijavtor.tk, 1 zhewang.com, 1 zhi.ci, 1 +zhiboba.fun, 1 zhidkiy-kashtan.ga, 1 zhihua-lai.com, 1 zhijikaoyan.com, 1 @@ -166013,6 +166590,7 @@ zhis.ltd, 1 zhitanska.com, 1 zhitomir-news.ru, 1 zhivoe.tk, 1 +zhixiu.com, 1 zhiyulife.pp.ua, 1 zhl123.com, 1 zhodani.space, 1 @@ -166021,6 +166599,7 @@ zhodino.ga, 1 zhonghongshunlian.com, 1 zhongxia.me, 1 zhongzicili.ws, 1 +zhongzilou.com, 1 zhorizon.jp, 1 zhouba.cz, 1 zhoujianghan.com, 0 @@ -166034,7 +166613,6 @@ zhouyipro.com, 1 zhouzanxi.com, 1 zhovner.com, 1 zhref.ch, 1 -zhrhello.top, 1 zhthings.com, 1 zhuhuo.cc, 1 zhuji.com, 1 @@ -166050,8 +166628,8 @@ zhuktrans.msk.ru, 1 zhumadilov.kz, 1 zhunlink.com, 1 zhurnalyu.ga, 1 -zhutipu.com, 1 zhuweiwei.cn, 1 +zhylon.de, 1 zhyz.nl.eu.org, 1 zhz.moe, 1 zi.is, 1 @@ -166067,7 +166645,6 @@ ziaulnmonzur.tk, 1 ziegler-heizung-frankfurt.de, 1 ziemlich-zackig.de, 1 ziemlichzackig.de, 1 -ziffdigital.com, 1 zifoapptest.com, 1 ziftone.com, 1 zigao.info, 1 @@ -166083,7 +166660,8 @@ zigsphere.com, 0 zihao.me, 0 zihun.club, 1 zij-aan-zij.be, 1 -zijingbt.cn, 0 +zijinbor.com, 1 +zijingbt.cn, 1 zijingbt.com, 1 zijingbt.net, 1 zijn.co.zw, 1 @@ -166099,6 +166677,7 @@ zillionparts.com, 1 zillum.com, 1 zilon.com.co, 1 zilore.com, 1 +zilpay.io, 1 zilsen.com, 1 zilv.life, 1 zilver.nl, 1 @@ -166113,14 +166692,13 @@ zimmer-voss.de, 1 zimmerei-lehner.de, 1 zimmertech.net, 1 zimmo.be, 1 -zimo.fr, 1 zimperium.com, 0 zimpler.com, 1 -zimpligo.com, 1 zimt.gay, 1 zinabnews.tk, 1 zinchenko.gq, 1 zindagilive.tk, 1 +zindec.com, 1 zinewords.com, 1 zing.com.pl, 1 zing.me, 1 @@ -166145,13 +166723,11 @@ ziontech.eu.org, 1 zip, 1 zip4.pl, 1 zipalerts.com, 1 -zipanguelike.com, 1 -zipanguelike.run, 1 ziparcfhive.ga, 1 -zipe.ai, 1 ziphealthy.com, 1 zipjobs.com, 1 zipmedia.eu, 1 +zipotech.com, 1 zippie.tk, 1 zippingus.com, 1 zippo-days.me, 0 @@ -166162,11 +166738,9 @@ zipschedules.com, 1 ziqijiang.com, 0 zir-online.com, 1 zir.com.ua, 1 -zira.pl, 1 ziraatweb.com, 1 zirbelino.at, 1 zirbenprodukte.at, 1 -zirconfusion.com, 1 zireon.tk, 1 zirka24.net, 1 ziroh.be, 1 @@ -166182,8 +166756,9 @@ zithromaxstrepthroat.gq, 1 zitobox.com, 1 zitstabureau24.nl, 1 zitzhen.cn, 1 -ziua.net, 0 +ziua.net, 1 zivava.ge, 1 +zivimexico.com, 1 zivot.org, 1 zivotbezkrutosti.cz, 1 zivotsdietou.cz, 1 @@ -166205,7 +166780,6 @@ zjy7722.ml, 1 zjyoulian.cn, 1 zk.gd, 1 zk9.nl, 1 -zkb.ch, 1 zkbitcoin.com, 1 zking.ga, 1 zklcdc.top, 0 @@ -166219,11 +166793,13 @@ zkrd.de, 1 zkvi.nl, 1 zkz.kz, 1 zl-19.com, 1 +zl-29.com, 1 zl-59.com, 1 zl-89.com, 1 zl.lv, 1 zl071.com, 1 zl0909.com, 1 +zl1212.com, 1 zl1515.com, 1 zl2020.com, 1 zl2020.vip, 1 @@ -166243,6 +166819,7 @@ zl7077.com, 1 zl7171.com, 1 zl7979.com, 1 zl850.com, 1 +zl861.com, 1 zl8787.com, 1 zl8824.com, 1 zl9191.com, 1 @@ -166261,6 +166838,7 @@ zlatograd.bg, 1 zlatom.ru, 1 zlavomat.sk, 1 zlhuodong.vip, 1 +zlima12.com, 1 zlogin.nl, 1 zlotykameleon.tk, 1 zlotyslawecin.tk, 1 @@ -166275,6 +166853,7 @@ zmarta.org, 1 zmcyclefitness.com, 1 zmeya.tk, 1 zmgroup.cz, 1 +zmiguel.me, 0 zmizelasumava.cz, 1 zmk.fr, 1 zmprjg.ml, 1 @@ -166326,6 +166905,7 @@ zode.co, 1 zodee.com.au, 1 zodgame.xyz, 1 zodiacohouses.com, 1 +zodiaconline.com, 1 zodiak.tk, 1 zodii.bg, 1 zoeamar.com, 1 @@ -166336,9 +166916,8 @@ zoepolitics.cf, 1 zoepolitics.ga, 1 zoepolitics.gq, 1 zoepolitics.ml, 1 -zoetanxuanyo.com, 1 -zoeweston.com, 1 zoeyvid.de, 1 +zof.kh.ua, 1 zoflora.co.uk, 1 zofran-medication.cf, 1 zofran.ga, 1 @@ -166350,12 +166929,12 @@ zofrex.com, 0 zofzpcb.com, 1 zogatest.tk, 1 zogevikst.nl, 1 +zohditech.com, 1 zoho.com, 1 zoho.com.au, 1 zoho.eu, 1 zoho.in, 1 zoho.sa, 1 -zoho.to, 1 zoho.uk, 1 zohoaccounts.com, 1 zohoaccounts.eu, 1 @@ -166406,9 +166985,9 @@ zohovault.com, 1 zohowebstatic.com, 1 zohoworkplace.com, 1 zohowriter.com, 1 +zohra.ninja, 1 zoidberg.tv, 1 zoigl.club, 1 -zojahburger.com, 1 zok-ambicija.tk, 1 zokaz.fr, 1 zokdl.zp.ua, 1 @@ -166416,7 +166995,6 @@ zoki.art, 1 zoko.tk, 1 zokuomthawn.tk, 1 zollernalbtour.de, 1 -zolline.com, 1 zollo-hauswartung.ch, 1 zollprozess.ch, 1 zoloft-medication.ml, 1 @@ -166446,7 +167024,7 @@ zombiemix.tk, 1 zombiesecured.com, 1 zombmage.tk, 1 zomedica.com, 1 -zomentum.com, 0 +zomentum.com, 1 zomerschoen.nl, 1 zomiac.pp.ua, 1 zona-bellepop.tk, 1 @@ -166499,13 +167077,12 @@ zonky.cz, 1 zonky.de, 1 zonneglossis.tk, 1 zonnenberg.de, 1 +zonnestudiosundreams.nl, 1 zonnigduiven.nl, 1 -zonopoly.io, 1 zontractors.com, 1 zoo-tver.ru, 1 zooforum.tk, 1 zoogbook.ml, 1 -zoohl.com, 1 zooish.net, 1 zook.pw, 1 zook.systems, 1 @@ -166537,6 +167114,7 @@ zootime.org, 1 zoowiki.us, 1 zooxdata.com, 1 zopa.com, 1 +zor.com, 1 zorasvobodova.cz, 1 zorgbeurs.nl, 1 zorgclustertool.nl, 1 @@ -166560,6 +167138,7 @@ zorro.management, 1 zorte.net, 1 zorz.info, 1 zorzorfm.ml, 1 +zoseshop.lt, 1 zoske.it, 1 zotan.email, 1 zotan.network, 1 @@ -166592,11 +167171,11 @@ zoznamrealit.sk, 1 zozzle.co.uk, 1 zp-news.ru, 1 zp25.ninja, 1 +zpaintedturtle.com, 1 zpapieru.pl, 1 zpasathagroup.com, 1 zpatkynavrchol.cz, 1 zpaulreviews.com, 1 -zpbettertogether.com, 1 zpc.st, 1 zphmetalus.pl, 1 zpider.cloud, 1 @@ -166639,7 +167218,7 @@ zsinep.hu, 1 zsnm.pl, 1 zsoltbereczki.tk, 1 zsplesivec.cz, 1 -zsq.im, 0 +zsq.im, 1 zsrbcs.com, 1 zstaticcdn.com, 1 zstgmnachod.cz, 1 @@ -166657,44 +167236,38 @@ ztmovies.cf, 1 ztn.sh, 1 ztt.im, 1 ztv.su, 1 -zuan-in.com, 0 +zuan-in.com, 1 zuan-in.net, 1 -zubel.it, 1 +zubel.it, 0 zubenciy.tk, 1 zubilo-perm.ru, 1 zubr.net, 1 zubro.net, 0 -zuby.pro, 1 zuccarellostiftelsen.no, 1 -zuccolivillage.com.au, 1 zudomc.me, 1 zuefle.net, 1 zuehlcke.de, 1 -zuffel.com, 1 zufuribita.tk, 1 zug-anwalt.de, 0 +zugarkovi.cz, 1 zuhausejobs.com, 1 zuhauserealestate.com, 1 zuhur2021.tk, 1 zuiai.tv, 1 -zuid-willemspark.nl, 1 zuiderlokaal.nl, 1 -zuidwillemspark.nl, 1 zuim.de, 1 zuitaotu.com, 1 zuivelonline.nl, 1 zuiverjegeest.nl, 1 zuiververloskundigen.nl, 1 +zuklescentras.lt, 1 zukong.party, 1 -zukunft-immobilienverwaltung.de, 1 -zukunft-immobilienwirtschaft.de, 1 zukunft-mobilitaet.net, 1 zukunft-niederrhein.de, 1 zukunftswege.at, 1 zula.africa, 1 zulaoyun.ml, 1 zulfumehmet.tk, 1 -zuliette.com, 1 zulius.com, 1 zulu.ro, 1 zum-ziegenhainer.de, 1 @@ -166703,13 +167276,14 @@ zumba-oostende.be, 1 zumba.com, 1 zumberak.tk, 1 zumdrucksach.de, 1 -zumkleinenhut.de, 1 zumtaedanceschool.co.za, 1 zumtobel.com, 1 zumtobelgroup.com, 1 +zumturm.org, 1 zumub.com, 1 zumwildenaffen.com, 1 zundapp.one, 1 +zundappachterhoek.nl, 1 zuomin.tk, 1 zupit.it, 1 zuplu.com, 1 @@ -166719,8 +167293,6 @@ zur-ufa.ru, 1 zur.ru, 1 zurgl.com, 1 zurich.co.uk, 1 -zurl.co, 1 -zurl.to, 1 zurmas-design.tk, 1 zuru.ml, 1 zuru.tk, 1 @@ -166734,28 +167306,26 @@ zuydgroep.nl, 1 zuyzi.com, 1 zuzulatomas.eu, 1 zuzumba.es, 1 -zv.ax, 1 zvcdn.de, 1 zvejonys.club, 1 zvejusodybos.com, 1 zverovod.info, 1 zverskij-site.tk, 1 zvezdy-porno.ml, 1 -zvh.io, 1 -zvo.me, 0 +zvo.me, 1 zvps.uk, 1 zvukipro.com, 0 zvvtheboys.tk, 1 zvxr.net, 1 zwalm.be, 1 zwaminspectie.nl, 1 +zwartendijkstalling.nl, 1 zwedenautohuur.nl, 1 zwemclub-rob.nl, 0 zwemschooldezwaantjes.tk, 1 zwergenfeste.ch, 1 +zwergenfreiheit.at, 1 zwerimex.com, 1 -zwerkandsons.com, 1 -zwg.me, 1 zwhblog.xyz, 0 zwickau.de, 1 zwijndrecht.nl, 1 @@ -166766,6 +167336,7 @@ zwitserlandautohuur.nl, 1 zwitterion.au, 1 zwitterion.org, 1 zwk.de, 1 +zwnews.com, 1 zwofroue.ch, 1 zwolle1.nl, 1 zwollemag.nl, 1 @@ -166777,6 +167348,7 @@ zwz.cz, 1 zx-club.de, 1 zx1168.com, 0 zxavier.com, 0 +zxdsj1.com, 1 zxfiles.tk, 1 zxity.co.uk, 1 zxity.ltd, 1 @@ -166784,6 +167356,7 @@ zxity.uk, 1 zxnak37.ovh, 1 zxncs.tr, 1 zxssl.com, 0 +zxvc.cc, 1 zxyz.net, 1 zy.is, 1 zy.md, 1 @@ -166793,6 +167366,7 @@ zycao.com, 0 zycie.news, 1 zyciepl.com, 1 zycrypto.com, 1 +zycus.com, 1 zydecozityradio.tk, 1 zydronium.com, 1 zydronium.nl, 1 @@ -166810,6 +167384,7 @@ zyminex.com, 1 zymmm.com, 1 zyner.org, 1 zynga.com, 1 +zyno.space, 1 zynqit.com, 0 zypern-und-ich.de, 1 zypernreisen.com, 1 @@ -166841,7 +167416,6 @@ zzops.net, 1 zzops.nl, 1 zzops.org, 1 zzphuis.nl, 1 -zzprisico.nl, 1 zzsec.org, 1 zzw.ca, 1 zzz-diary.com, 1 diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/ca.pem b/icecat/security/manager/ssl/tests/mochitest/browser/ca.pem index 98ebfcad1a..24797711e2 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/ca.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyTCCAbGgAwIBAgIUR0uxMERZhuRvjHB8RmRmt1HcmwEwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyTCCAbGgAwIBAgIUNXStE30iFOJa0yzWDvfMaz8OkVMwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDTELMAkGA1UEAwwCY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwG m24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJr @@ -8,10 +8,10 @@ bA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4 SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3 /K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+Z FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYD -VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBS83kMy6cztuZPOJ2lkCvzEC/G -we5GxpT5xvFvTgmyUSD/x+eo4Rl2ZA4mDilMS8uoOcnoG+Uq5v3W57kQOlYIjczE -r4qm8gjhrkTnYuC3KxM0f+TpauSjQK9/xIq+md/3e0VSPmqF8Wb5utouzo++Tp8p -GfuSIcije0Ejj8IPv55O+FX4Xy4dY3xYyUpiIx8Zx0kP8/AdpOeekQ3BtFt+0Wpg -Jv+A/veKMYOShn3f9OIAO3sPBLsSJEboaGiRTW5R4oGooL/Q5NkdfxNOmpxIMlXH -4hmTG+k2lzsOsvsFU6m+ZzVbrP7lDDnf0aqI3j7T1V42CFoIFzDgTFJ2V2TU +VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQCZB+4G08I6BEZwdT0mRSyUA+nS +myTGwqK2OkdViJ7UaPDcf4A8r0qqYajGoM8+Wrb2YJMKlzRHhuNWjusnwZfXIgBY +xQkCPMhJyqq7FXLc6ajx7WwONaIbSkq9kUoxKcYhwooHoNCaYRVvCVTsRdOzaHQA +Vc/E21HIYhZ8DlreV9p4KuSV4wmsvbbLSKyrak96KwZgU+J4k7T9oD7GW/870f+W +0BwAVdnsDDh4K/VxJcOOTzPaaProgs+7/ohw54Ah7X5hyq+b7wC/eoMX51waMjlX +vmx80GUWoLyAGyQB2BBbIpc3SbxsMq9kONIZ4+5JMakdPDrOQXfdxBZf5qFH -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-via-intermediate.pem b/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-via-intermediate.pem index 1f6e7ab27a..32c0bc8fbf 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-via-intermediate.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-via-intermediate.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDETCCAfmgAwIBAgIUN2LSz+WtTE2h4mjtxg4Q3T3XCrgwDQYJKoZIhvcNAQEL +MIIDETCCAfmgAwIBAgIUIbRm0U3T42/sWRf/FbkIadczy6QwDQYJKoZIhvcNAQEL BQAwQTEoMCYGA1UEAwwfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEV -MBMGA1UECwwMSW50ZXJtZWRpYXRlMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MBMGA1UECwwMSW50ZXJtZWRpYXRlMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCcxJTAjBgNVBAMMHGNsaWVudCBjZXJ0IHZpYSBpbnRlcm1lZGlh dGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braI BjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVa @@ -10,10 +10,10 @@ p0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB kC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJv aeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgK Ne2NAgMBAAGjFzAVMBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUA -A4IBAQAitxxfGuE62swAlr+glQT7oqHCk5XeFOkJZsNoi1NekEcMyl1/w+WNyv6W -ppV0hsNnI5BxxFq2pjI23WPaNQbb58rEJTs768RvUQ7L2NJFW11xwj6IfrzvZvEY -5ai8LVFu2vWGlU3CCIZsq+/nwcs/1rqjunvnDEorXsn7XH8Ae3qsxcK2fgL/zlPf -Haz9hyvUcCBGXLAdWyrGw2gJINzXh+henzSB+4paNNVw6GguHmKsE/6m7aKm/QUm -q38Skdc5bKomj0UrnVe8EXcdGm0oewn1ZLnkMoOiR9mGnQAfRZSAx4Acttj5Uz78 -x1pTFd73Zrub2HGJ2quii12H1YoS +A4IBAQAeTxpRLGD9DK1GEVxVVG4XwBReie/naDTCnwmLMy4nor4Js6ssMfyZ4PnR +G3bKtySn0LehuwhSZHdtDpvHXVF6DC8ueqKw1ehlQ0TjquVwaV/FCNlViV4bTcJG +gBbL5gN/5t6ziVX82ed870n3djKmFVDg+VqQdAyoF8QT90eSbofTQ1xLOUJunQx8 +4FdUnKhujcZ3fiOOOb1ZnteWqD5YM2obQ+m6AFtewAPHiFv1192amsDeuhf3e3oC +tD8Lf5zfsOw4bWQ8t3+c2lL8+5iScXnLx1WWycrOkzwtEwNJPHx8G/DmdwXBhGyG +F/pEsjdlFdaP8Pmywi4AdqUkp5rO -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-with-ocsp-signing.pem b/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-with-ocsp-signing.pem index fdcff2fe66..1aec6b3873 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-with-ocsp-signing.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/client-cert-with-ocsp-signing.pem @@ -1,8 +1,8 @@ -----BEGIN CERTIFICATE----- -MIIDSDCCAjCgAwIBAgIUTaZMGF3Uh1d17GJbsi92xncM1qMwDQYJKoZIhvcNAQEL +MIIDSDCCAjCgAwIBAgIUUcFbnFhtDxvdLquI9cOZfEVm6UYwDQYJKoZIhvcNAQEL BQAwajEoMCYGA1UEAxMfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEY MBYGA1UEChMPTW96aWxsYSBUZXN0aW5nMSQwIgYDVQQLExtQcm9maWxlIEd1aWRl -ZCBPcHRpbWl6YXRpb24wIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAw +ZCBPcHRpbWl6YXRpb24wIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAw MFowKzEpMCcGA1UEAwwgY2xpZW50IGNlcnQgd2l0aCBPQ1NQU2lnbmluZyBla3Uw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH @@ -11,10 +11,10 @@ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0 ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2N AgMBAAGjITAfMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDCTANBgkqhkiG -9w0BAQsFAAOCAQEATxGB8AeiuCBR0R8GuGIgEqIS0xFLPcXvBOlTJNY07X3ZR1Cp -ThA16943stlat+eXj/dj7n0RxtTJMcNF+xtCUZNk36H+NI+AJojGzx+1iUgOniCf -Vu9pcDfOrJ9cfYbuRFDsh7DTTfYPw+BC+Zxf/HHpriOg2Dpra71MyCNt6TvhtYJu -oRSTAbC/QNRdRP7/rdF5gtNagnHpK0fsty0+0x1aNeT6nyY86nob8I6KvHAqpjD7 -knVJ/1tgM+mNeNOBh+yQrL/wUts6vrXnJlhVZDSnxk7SiGKW1AsBj1KeV00+efev -ZVgfn1V7MjiV6FNrthhap/yxS6VWMgx++IrFXg== +9w0BAQsFAAOCAQEASWJe4utPpWyBIkttkI0J/4Siizthn5+m1DtkSUXIzuiLjwCO +EhvpuqSsTibCtBBltF/TyXeC2J3ER6cd/U74p0bv+a7TC6/XxeKNNL0UfQ3R1P76 +zkOxAWexb/n0cCsPEB4Jk4UjD5WwElq/QQox+5UbqrmO4lEtmOwa8U/IwYoFE0CQ +dgAsbNVIkQdmLW64uQmPkrrehMDJ5KGqtDY2Ndw6NYFB4GI9v0GkPB9UCLbjiRSP +AzKMmDleXiX/HbAYynDoQw/+RY4loBBnajtpY3zftPArR/8n1luuIuQTyPmTnnhG +9yVsTiEOLoxg3iT3SE0v7oGDr8WCV4mZRSlkbQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/code-ee.pem b/icecat/security/manager/ssl/tests/mochitest/browser/code-ee.pem index f3c222dd8c..4f06581eb4 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/code-ee.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/code-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyDCCAbCgAwIBAgIUYSQDQ8ArDui/KjrVHPR+gk5GR74wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyDCCAbCgAwIBAgIUY/EvasfrAiUP+z0pSp8rsEuzToAwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEjEQMA4GA1UEAwwHY29kZS1lZTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODY H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk @@ -8,10 +8,10 @@ H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk 0jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMM kd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaL L+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMXMBUwEwYDVR0lBAwwCgYI -KwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggEBAEdzkrnA8u1TRr1mWpECo7RiI52e -EBjt7yfAxoYogjnhJ9RFZFXZX/P01HQbPTV1HOMJLXGMTG4NyE3T7g+5N45UCJ0t -XgkiGWy75ey6YtOCKW760YtwgZSkwDMI5qVYhHuzrJn5/fDuTQoS+sv8xrGYPlWZ -A6QS11V4imUQuGj/xjxL1h4pmSB1qJV+IRx7wLZQfAtZ/bOiiKV//X15CB1ff2M5 -bxOWoEJUeSqTUP+kFu/ZfeVTThgWQe9B6WfEhqzl9Vl1G/5YFLAHj32jHLExxCqT -eHzF8nnAmjrk43O+4OBhjA+95WYBj8MyXxqte7DD4vbEbhDNOV5Wnvur2cY= +KwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggEBAIVZ062ntHIj6c+BLrlXArHkg2QX +BH7FBYVTVI9XkDxEa0eRLoCyUPI4EmrThhtZx8Pp79u08rmECw1om1wzXJt2LKdj +rMdY4zHxLw1SWOEG9HC5s89N3LB4nwwtPprh/ewNMf+iZkexZeLm3mvmesj9xm5T +4TL0ClvTRAQf5KBIyJY/LV+0zzErvdmDpVKnaVnC0cvFihZcVH1ha1ontd86dGCO +lmFYx3KVjy2XcWZmyXNSd3aPaKjKQyrCC/rzHgN9k+FmudqiXAKvWSThLu8+hyGf +lhgADGsDlxLsnkJzg72z1E++qXKwFqqhXJrCq1wCKHk+mMQ2y8CHbECghwY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-expired-ca.pem b/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-expired-ca.pem index 011fb14869..0e50042178 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-expired-ca.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-expired-ca.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICwjCCAaqgAwIBAgIUL5rK4ebvVgA0o0h5ljCgEELfxkcwDQYJKoZIhvcNAQEL -BQAwFTETMBEGA1UEAwwKZXhwaXJlZC1jYTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIw -MjcwMjA1MDAwMDAwWjAdMRswGQYDVQQDDBJlZS1mcm9tLWV4cGlyZWQtY2EwggEi +MIICwjCCAaqgAwIBAgIUE9WR4GL3obOgYN+TS/mLheV8ntYwDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKZXhwaXJlZC1jYTAiGA8yMDIzMTEyODAwMDAwMFoYDzIw +MjYwMjA1MDAwMDAwWjAdMRswGQYDVQQDDBJlZS1mcm9tLWV4cGlyZWQtY2EwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT 2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzV JJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8N jf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCA BiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVh He4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMB -AAEwDQYJKoZIhvcNAQELBQADggEBABlvMRyR4HTdDGK12dOxT1sGGr5z4GM3kagy -Qdr9v2gAohA0as7c1jObeJUZy/u32UTXAOzvhkwd2mi0xzMEv2ud/stEIXjON1Fq -CnKZbpg3tsCZWTGwPjQ9L9r+33ZI+21JC+Ru3SvPgrZyvI9nudYLMEnSgu04boq3 -9BFZAQ83mCcUNGshKHBtFECVvyRQAdQSJaxuaSADpRjUorZF2coFP9He8FVsLN+X -fBtnAG77WNNy/d2vIS6SC9a4SI1YZnyUOorjF67YQcCKSakhJTpOCgSD2JFejn+G -r8IR5j0g0CVECcE/zT/7P3YI/bGQpahPZvc6V7y4gq6+jBzzeZw= +AAEwDQYJKoZIhvcNAQELBQADggEBAAfxN7cGUdxYJWM5eGX/jujd9oUFuKUM6jZR +c4ajHqr77jqsN7DY0Fzur9Lmo5OYfJhx4oQxvHv5Fn63jHc44u60wP7TqfWQIeqP +IBbMAjDLqnKvy1y7fJm3kiqplHOe+yhIhw/zYudVQBdPCG/iFYvg7nWop6v4Qhdx +yIy9i+DfUG845e/LX5QdH1w5pMAJDcBctzCep4yVvGPB2rald2kgLDlthNbG7x3e +C1ZXQb25yocU5TfOD59l1oTDqhM+lsOo0Yb4Y6rTGWiXJ+WpwAUar5KLHqGT4pJo +O2xyX4Qr3kNRoLuTQuw25yDaYs/h2PLjRbymWdUt0wWU7hqcHOQ= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-untrusted-ca.pem b/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-untrusted-ca.pem index 2490cb5f5e..01085680b5 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-untrusted-ca.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/ee-from-untrusted-ca.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAgIUH9U3CjkqvnNtN/+F16JIdXHUVSAwDQYJKoZIhvcNAQEL -BQAwFzEVMBMGA1UEAwwMdW50cnVzdGVkLWNhMCIYDzIwMjQxMTI3MDAwMDAwWhgP -MjAyNzAyMDUwMDAwMDBaMB8xHTAbBgNVBAMMFGVlLWZyb20tdW50cnVzdGVkLWNh +MIICxjCCAa6gAwIBAgIUcbNzH1W4buGjhKIbE6YzaLI84XQwDQYJKoZIhvcNAQEL +BQAwFzEVMBMGA1UEAwwMdW50cnVzdGVkLWNhMCIYDzIwMjMxMTI4MDAwMDAwWhgP +MjAyNjAyMDUwMDAwMDBaMB8xHTAbBgNVBAMMFGVlLWZyb20tdW50cnVzdGVkLWNh MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2 ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdF h/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6n cOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAv OnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2nj tIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXt -jQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCS96fyUgTglIZiCMG+jqeElbpsGHpo -lxQvRAF00iZb1fFc9stV6naXbCTFwVxU7XshA9ZFeGXR90TvfemVWpncdRrw05Ji -Yka6hvZyXqScNCP0M5USkfwW8nwfmhlhTyJquqKhpgMy+wpMgwfhbNqiDlQ8zt4V -fvAARQtn3WbIcBQN8e2GLtxfhDQbywQGB7XNEoBVR+6qoTc3QbpcbS+kE67Zkl4l -+neEi9bMTJeyHv2HuRytFZYRl+sk26W+qsXhNsKSbagpthrm07zM7d2Z56GGR7lR -iUs+XDR/gWkJ0gaLLYPP+YLrgxDV61aDcnF7okqntu//D/h9HXiXR6Vs +jQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBKpSBxy/pJM9TQemaJM8Awn1trCECP +oUkP4m3aSAOMnD1rT+vzsRmf0MZr7VYLPKx/lLDGMcO1dttpuWgXX/aMO0CX3Z53 +LNKzJp7G2h/nMMLBi+u6mKVNXKC4+697Ca+ec56bSklszHquxHKKBEDEbDeL5o1i +rkrmYlV/UlEY/pvQX0fWhd//dZadIB0a2b5HP6h2XdIih4HSh4GaLY1xAEqFn1zy +LAaMHipuwWdgB7SOZSPnXKVDq37FftdmXm52pvEBeZnCCxf6IWiJ4FdUXWDiI6r6 +b7SQms1KdOgY+72Y+7xltyJOJ5A9kZa4PeBL6VIhuXoBVLndNxV3BFAl -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/email-ee.pem b/icecat/security/manager/ssl/tests/mochitest/browser/email-ee.pem index 233df6ad80..40dcadf79e 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/email-ee.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/email-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyTCCAbGgAwIBAgIUF+A5qIQrJOnFVzTUWygy03P7mh4wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyTCCAbGgAwIBAgIUdRIy5tJkhQR38+BuAVnRn36Jt+MwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEzERMA8GA1UEAwwIZW1haWwtZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg 2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ @@ -8,10 +8,10 @@ DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg PdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGj DJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8W iy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjFzAVMBMGA1UdJQQMMAoG -CCsGAQUFBwMEMA0GCSqGSIb3DQEBCwUAA4IBAQB43eJLnF3S/jFiADn+HIXLbRUM -tW4Lq4q4aDTT2VJ/M0tsJX31EjRXLW4ViucyuLgLPNshLPxR8Qf1eGpYvbn99B0F -wI709xs7x5RTzkd6kFrUkXnp6SSUH1AMDfdhEIx/FxsfhfngVawvgI1PRqKvska5 -W8X7k97aXJZyA2u4M8StREM2VjwG73leXRv1RKlT7myc1MRth8EXnV8z+2fo/KJr -/Sqx492AGVNPYqTLTKr39WnLnmkak7sGu/cogiiBvDjo4XIJGTFfFAXiqS1QLK5I -dAo5cy9bqQyrBlsMad1sOHO1/RYPFiJi8SbmaPazhrLtJa0x8mWCUhrTrSHc +CCsGAQUFBwMEMA0GCSqGSIb3DQEBCwUAA4IBAQA8so+q7atgK4s2SBBC5w7RMCOb +pibcb4JiUyQgCJlHmhYZojBZ/MMk0Ljg9T2ca87ampIAkcjl7Oes34NxonT2xnhI +unmLlR6aM+KuA/PqgiR5qezAGFvi1GP1cmhmNCSIaWC4MYKkpqWjUOex7b2U1ONW +HVG5G2nkDypTxExDKiEcr5YnhNjrqvLBKqZyoJNwMznkY3ug9VrICmlBxtLUXea1 +PmmEVdcPufbfpLQ6atWHYvYbhTIG5/sOKi2He+Ev++HwGUu7L3/8JSI7nWv+LVWj +u3YGJCLGJs0HcB+xCB5PqDdXCl1WdBb6LiUaLIh7TWLVvB58pmG+L5I7QmR/ -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/has-cn.pem b/icecat/security/manager/ssl/tests/mochitest/browser/has-cn.pem index 37c904517e..345f061dd7 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/has-cn.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/has-cn.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1DCCAbygAwIBAgIUVQ0M05BhrnFzzd8A4JXM7o+l7oQwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1DCCAbygAwIBAgIUHV0N00ty92z/RWqMjzziRqe8LgkwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowNzEMMAoGA1UEAwwDRm9vMQwwCgYDVQQLDANCYXIxDDAKBgNVBAoMA0Jh ejELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6 iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr @@ -8,11 +8,11 @@ iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr 8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OI Q+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ 77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5J -I/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAG0kUck32CK6 -DMZwQymVHNJa/ErvrINVd9SpFIONiGC6dNien3PygDAHGDI+X9vq8+TrpFpEpmRc -FQVWaDMMbh747+VwggnCVM1wZF3Mg27P85sjZwKb/kHw0CHfohHpsaClU5YSKi7o -UqJ4IN9cQl/95vLolydOMRQ7NcgGfLwcS8GREy+suYrJ0NAQGCDybtwbI9/40MD/ -e2E5regpHFpE68oxHHbVBNx8YB+0eff37Z+cZHd36yeaUQ8wKlZ1LlnIp3gBBEzG -qWJKeWnV2KQ7rkXeOP2SzMHCbCvDvMEejIMEj8QQxWs2k6xFTGyWangihKm8h+8q -77gj3CehVoU= +I/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBACftnafU/W4X +FHDfLQ2ToUUfYUS+rn3R58uUmkjysYeb2hi/hC2OgFty9u9k1deqVhNDC4w9JY1P +jpG5sKfAXz+8/5SSgLJcq2fXCRKGyop0Af8omDEd84xBb5bgM6P81dzz8sHO1RVE +a2ENbTQ9Qze7aaicM4RcLXaWVjP2yYDQh1geXDRpxy7J21cSL5gLpxuSoyjXvBk8 +okuM5ocPkbSy2R7xeXjtBvmTQ3lsx02B/PKDeDRVK5M2Y5e15aojDECbigXvd+7q +tbP389GsVDOUns42T0yFgjTrnWfRKkPFhtGyS4RKF+kEeJ+Bs75yHJiy6BE5fqeq +X567RjstoD0= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/has-empty-subject.pem b/icecat/security/manager/ssl/tests/mochitest/browser/has-empty-subject.pem index 658030e00c..829f64c365 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/has-empty-subject.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/has-empty-subject.pem @@ -1,16 +1,16 @@ -----BEGIN CERTIFICATE----- MIICijCCAXKgAwIBAgIBCjANBgkqhkiG9w0BAQsFADANMQswCQYDVQQDDAJjYTAi -GA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAAMIIBIjANBgkqhkiG +GA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAAMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1 aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/we adA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSS pH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62W YVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauR CE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqG -SIb3DQEBCwUAA4IBAQARe5OF4VVLl17nVYU2JpPfCIwykadnhXsGOa5axeJExP3N -SKQxZfF7Vu+uyxT9kl1Vx1E2jxcSSUB/qZJR0sNrMD16gvhTj7/MXcu88T9bZZU0 -u1klbcavfwKibeqL1s+8REl10sQ75ecbZsOi3AtzFvW8o5VXLOGf2PNuZBfH2/Ry -v0J8om6V/+jgp0W182Y3Yo8t2k9dbdUEr2HQAIS+xKlxo3QUdRfrvSD2A1Mv3rI9 -1zH0zfSqe+BmpIibkKc7HjMMfHE6Q02KTD/vSxhdkiwI1oo0DiC3xt8pLl/SPB4E -LokbezRw4hFAOwy9j8EPgvVyHAf9LNjeCMwllhHG +SIb3DQEBCwUAA4IBAQBmdwC70ExQ/2BHoOP2AG01748znJHjHktBFRb1lYPBMLxe +W96RUDIkDPgE+H3yt1ZU4wb28lkPjY41CUFY5FOAKz+1jff+ccqYZ/54FNoLa8CZ +GNhcD5ar4yoCUXSptEfCUTej+anGUkyGtm29tiSTB/xvtvWfnLPHPuxqcKS/iPdQ +xpSCXKtGImGfvvKJpnsY41Q3XSMjCYqVkSrf2btwA5Xk9Tpy6sNvGZ7VlCKYAY9N +o5YKFfHPNzpkmLLhwS+DBu7QqJLRndokP0e5g1iC0XgQYzcFJ/v/rz49jgjD5ivm +9Wm88sy+jBOdx9tZNkBpWj4tQWP+Yo3xG5ulAFMV -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/has-non-empty-subject.pem b/icecat/security/manager/ssl/tests/mochitest/browser/has-non-empty-subject.pem index 144b40bc64..0ec6d57032 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/has-non-empty-subject.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/has-non-empty-subject.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICqjCCAZKgAwIBAgIUHxJercilGryRZOsyR1vSS0O2qm0wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICqjCCAZKgAwIBAgIUP+zmR06HY9eqzonPZMIyb20WU6owDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDTELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwG m24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJr bA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4 SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3 /K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+Z -FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJUh -jIG0OVspr6jdABjNSz/ApQUA0OhPsKz8VgsffEpBXNibTadxq+qtlbmUJzUlg8rV -F21re7n2JtUzQ8EAQCuUHHlS/QTl+TwGR9iLWjws4+KQHYx2D+dX4Y9dfhPi8sJ/ -C3HZOs64Yi3dA/t5JWVcCFb0h25L58LyIwE5X0tjJwVLtB38JmW8o/YZ0Fy0UVKX -wpvuRLZulkkcswu7LoSuhHHc9mjh5Ze9BuNTYmO6ruZE/9E7g5siYz7DzkTSyGJM -lhj91jbnX4b6CBSHNUl9YYsot66oTI32P+KQGqmAYkHxvvSqWyJWBVDLnzQJpB5p -r422KFXmA3rQiSlUEC4= +FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBACVi +YmrZ0YrXvl7+f8y+GjHiYkwZc8mWidm1p4kxlPLOpmURwCGBD9optBqfvW/2FnmC ++0D2FxcbrY1y0DMBMdUX6lmmH+s2EgQpzHi34RiQBKgb75tJSTKsV/15ZJyw/0TR +qzEFcSE6QrCjS3M/KaBFbGjfsHu4++Jpv8gPbHCev8HT8CeVFNCnAGA+5KC0fEEp +7a3gOcTy+sfgxd6Bl6XbB6kH0qR1YzXbhbw7q73+Wtdvtz4QeJoWzP/xkCIWrYjk +z8YMbxIL59G6L7u+iDS53Zu5cWcGwYsfSKf7On3VJpwEMwWi668FZlkWluN27uPa +HOcaRUdervcnjwG2qRE= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/has-o.pem b/icecat/security/manager/ssl/tests/mochitest/browser/has-o.pem index 05d36342f2..d767dadc95 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/has-o.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/has-o.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICuDCCAaCgAwIBAgIUD9J+oET0ykYbn4EWr/z0Xb4edlUwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICuDCCAaCgAwIBAgIUSebQGYs5kRWsMwwOzQ+p4CpradUwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGzEMMAoGA1UECgwDQmF6MQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ @@ -8,10 +8,10 @@ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG -9w0BAQsFAAOCAQEAndgnsz2Dn6BCwisgx08N0E9ap6tvk5c2RsMorzZ1dHaFJ+Gm -3yXfjwraKRkXJ6uxMiKM9ZF8MoRs2yK651dzRLI9cIgr/peKN2kfbBW9FQw74Y73 -tigmlaUsCXR4biRJ5IGSG6P/TEFc0W6LL0VZlfeVcfk7fSLu2o+EzadBFrYIdFL3 -SApg4EN1/g6/EuR3FIfJdqzN2HMO3AbVo7y3GL5N09udUcfIMicWhZdj43tHVNEq -kovtIdqIY7iJILb2NnBGa4VxlVanHGy4Ll2DO3SDT9X1KnSS9ywfsoYTcEZSLlOR -GcZ9pNjeF7lDtmhALkhK8Qxj/0oXyhHMWw2+pA== +9w0BAQsFAAOCAQEAE2G5DhQiHOYnI52vDa7D/MmpkMicUMztrDFFNcOo6ENWhr6Y +l7SlC5HqEbEP03NvfcQXFZfkJ8sn54MCKwAf7aJADoBrh09COhKjc/7hGpOyVIAe +rGAmOvfa1rHQAO8VcykF3hXnmq5AC8yHsw6dskYKll2Xk3KZ46n9/yAsWSdLFTS1 +kA+oyI+O/GLgRfjmwxLLVpzim2ddVD+84Vg9AQa3xbMq3l+TnaxjzJgTSX7igypA +r2yJV9lRGj8+Y1Ft78dS3mFMYA65lY9mpmRJDow6dlH1EmlQ5cRbeJjpQvHE0TJQ +JvMcnwW4kc8c5myaplqrhtmiEXo705FL6r7l+A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/has-ou.pem b/icecat/security/manager/ssl/tests/mochitest/browser/has-ou.pem index b6398105da..c21213e5e6 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/has-ou.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/has-ou.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAgIUZY3S2vJ5VrrQBlw1VnGPD7wyZNkwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxjCCAa6gAwIBAgIUI0sdgf/3yHFFc1hOVW1mWcqajS8wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowKTEMMAoGA1UECwwDQmFyMQwwCgYDVQQKDANCYXoxCzAJBgNVBAYTAlVT MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2 ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdF @@ -8,10 +8,10 @@ h/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6n cOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAv OnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2nj tIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXt -jQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCO3q2zsG2BOfP2zbZAhQsxCZ9qZvLu -2BhySOnGbWZXnxwx9tbc0q9eKWhr97LlWgWrvr/U89W8YfHaMRef7jNIGubB4Y7A -TSqz92QgBy2OBIkjqkoHzsj4xZKz2Jfk/wjPVFp4wnHxXoOnP5ugKYCsdL4jG+HK -xLUwmRPJ09qTIpPlmyGWuH95UzIk9Kut+Hwdjo+/QF0L1hyjq/NPHd0xIhUzFwpr -1MU5x57/237bZVSK+wCouJ0s4CI2z+656NVuRkU1IG5jQjImesb4IKTKGM3O2WZH -AU/5S+biYBFzkxlpQzceHsdorzKZN2i2AY7iB1VShXxgAKnFnbuUbdPe +jQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCO2m390c1sFcCIW+d9u2RMB5/qPIHB +o9WQw/8imIT9J2od1o+oq4qLtkqy/q8Pr9UfOIYZst4iVhWHdUeBzNRiifB74Br/ +Sm6e6JMKZpEEJgK4FbMlKDSKIWHFpNjqAZcHA77V315iQQpqBmXs2ytMV6Sgd3qa +ZGRErhV1x+uiZAjd6VXVC0bGNMWM9hgQbsoYK/NmJFAg4cNu54WsIYBj3KztjuUO +TVoJWi38jLm1YUh60sOMnxbYvKWpp1sHN1zn7PXqKz8+ERKOxq9A5PiCgSe/FKS5 +MA9d5mZSQvdVm+/T6/6WEjLywB0P2l1Ri09E+Xm1X+fgIQhJVna97jfI -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/intermediate.pem b/icecat/security/manager/ssl/tests/mochitest/browser/intermediate.pem index 9d5151b489..dd431bf412 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/intermediate.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/intermediate.pem @@ -1,8 +1,8 @@ -----BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIUC1pap5iWjZkB9vgyXUQsdsBqITcwDQYJKoZIhvcNAQEL +MIIDWjCCAkKgAwIBAgIUMdPxQdtJrG0bLevJ7fmH85s7gs4wDQYJKoZIhvcNAQEL BQAwajEoMCYGA1UEAxMfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEY MBYGA1UEChMPTW96aWxsYSBUZXN0aW5nMSQwIgYDVQQLExtQcm9maWxlIEd1aWRl -ZCBPcHRpbWl6YXRpb24wIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAw +ZCBPcHRpbWl6YXRpb24wIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAw MFowQTEoMCYGA1UEAwwfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEV MBMGA1UECwwMSW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGc @@ -11,10 +11,10 @@ a2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8Xg uEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK 9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGP mRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsG -A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAFFjG5rnE/FOkb7OXSrAf2THe -ErTDB9z9ADmfvuBJZ6WqU+c74yqTOQ7oXnxLloK7TYMntwVNMbiXeKPxFc+P2YPl -66UaVNPif+kcD8oniNpT7oUOXaxGSoDJAxuZrv49hqXfpETkNoTOg/d6bzOlowdl -PWKuovueCq4xIJutVFmoAf0UIOUIrowsheuUzu8jWFKSdFQW6CCWw/MLRFpIJUtF -fTchu6G6pu63+WdJ6S8gRKgA9JKgBoJHGkfepHJmFKNLiwfMOt1E8l2NhKuOgoRD -e2lwKOQ+0cDBsOBUPDUNZR6mqI52Tg5V8o6xT0p3z8cN1kXj78lriXmIJPdXWg== +A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAUpB1+sJZqIMavO/svNMjksrg +LzoMjCoXEoROCm/qhMKB6pLaG7HHKV765jPbRYgTq8oNfjp9bmX3eqNMut72Uf2i ++Y5WVzcS+pFDrjGAAE1fnN9emdaVIamjcb6iD/e/VOUprkDacGwKdL3ivSg7CE3m +M6CWd4YqY19i0zvXUwUiY7YycWcndfDT5Ujct9uqpzEqLSWjmcw6gR4BPf2e2FLO +kpAGqHHSr+FoqINWwklm1shc+Tkpv7zNEHSUqd+iNtm6MSFPFTY/DS39fkORJ9dY +job5KvC+puEzpnpF7LMv7Pp3Hv2/0nuCI/jfA2z7qLEWrQqLEI7J3PLpauWPuQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/invalid.pem b/icecat/security/manager/ssl/tests/mochitest/browser/invalid.pem index 6491aea724..c4404dbd38 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/invalid.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/invalid.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICwDCCAaigAwIBAgIUU/6H5MBNDfEbbPxKr36UoHB5d6EwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICwDCCAaigAwIBAgIUJ7NbzL9eMXb7dNJS9BrCF02TZ4wwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEjEQMA4GA1UEAwwHaW52YWxpZDCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODY H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk @@ -8,10 +8,10 @@ H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk 0jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMM kd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaL L+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMPMA0wCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBCwUAA4IBAQCE9zeys+uZEyyTQannR02KZSRRzNXUgSNJeFXS -/dMEX24ZPIfXRPzWFdCpDHY+koCWuLPxbxurz3eT69FwE6eLzDfS/bIFwkW/65RI -Ggwtuf41H8EIz5SoQh/ysAXC9XJ5/5ZkiE9I8IczSWJCv9N6E62CVjvTWKmYddRC -lMfnIkmSPROvjm2T+7tZsUAaoyaJPfJ3XKSUc6fizkCwVPwweKvX8YJ9vajyb1pp -HvpFzoJQOTBeIlJcqk48fDBkpX5EpB2G0lOwed2qudlAEqVIxiEAOHAq6l8nrexI -Fc6DJuyt1tLSF0gQrV6I1+VfmrUGYOfq3VcfvU07pIWdyWLP +MA0GCSqGSIb3DQEBCwUAA4IBAQBSVzaB6s3ANXDCkAHu8S2S4D2uwD12QMAwoFqF +yN/1G4ZPfzWNY3ibQnrFjy/gutPPfR6F/GT/2e5ZdeivSVnFtPypDTiom57Jp1zk +6MgCAg9hvYrfKtxX42ebEfYVMaMLgrQILYvqqSsjfODCPMeJ9Zlua1ib3Yv2yR29 +cvJHqN9RDvSe7DJsxAkT5xy8pjvn6ZIEug89wLjtck5q0z69MYVllcLspEJCQhoq +rQy8ZpvabSbXUyiewIPxIIbW2UILAvXp3nypb92tDLyijPG6GXAgRWXfwQppRU+o +yw16A9eaMPPEvx8k/+WsQepD5GiKKqRDAwfp72xPUjG2+Xtp -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/longOID.pem b/icecat/security/manager/ssl/tests/mochitest/browser/longOID.pem index f71066ff64..dce461488c 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/longOID.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/longOID.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIESjCCAzKgAwIBAgIUBSCCfLNjiytDHkGsZ3M1M/lTB3cwDQYJKoZIhvcNAQEL -BQAwEzERMA8GA1UEAwwITG9uZyBPSUQwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3 +MIIESjCCAzKgAwIBAgIUK41vqhg0AexJaq0erGpq2q6hqrEwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwITG9uZyBPSUQwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2 MDIwNTAwMDAwMFowEzERMA8GA1UEAwwITG9uZyBPSUQwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wk e8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0Dgg @@ -16,10 +16,10 @@ f4Pc65N/g9zrk3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc 65N/g9zrk3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc65N/ g9zrk3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc65N/g9zr k3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc65N/g9zrk3+D3OuTf4Pc65N/g9zrk3+D -3OuTf4Pc65N/ATANBgkqhkiG9w0BAQsFAAOCAQEAQZR+1SRW8fWEpHOM038HBL9O -+r/vZrBOdP6zD9ZDy0fsOk0M+poPZFebteXQ2yDy7MiEVuTN5t0iR8Nr1qssjYSk -bEO3xXywdY9J5jWwYc/TFfeEyLYeFHtNDZCWTtNY9xr2kU5/zgQlSxAZg2et4luv -EsClbsQVtc/IYNidhQ1g2dACIPujz/L7Bb85x3VB3u1ZwQJAS4jDXhATLw4cU7GJ -OkcRZhV9YNEzw7VPlowwgn9oO/vc8QqB1/N6dPy41Fff8eRnSG/4khPV6uW7v+He -SNvTPVl+NcHV5YJkDrawacwd7r08syWKXY9A9V/ZSGjSFA9JoZ4U9SfJgtR8EA== +3OuTf4Pc65N/ATANBgkqhkiG9w0BAQsFAAOCAQEAPES9IdGVYCUyZDD54Q/R0eiT +hXORqu/YAg4jsTF+Vtshsn7lowL8Rg7lIXEKHnhlUJ6xLu144GsbW/hxIfEiofgn +9faNbl+4jHOXwtm6L4g6rVWFBMCcGQ2xdSSDG6a34in9BYtptIEp1xCYocnPsXBF +N2kf3g4YYJq2QwbuOpZEm+Lp+Tnav3cLfgmpMl2QJhYChDrcynhKsGREYCdnnX6e +MoKEQZ7iN3sDHWIfRiUoSrmqtQvAEWcViQ74NKn7GztwKO6L2Er49hB1l0wZNSNZ +iwZI06ocWGwPtz3I4J4ByBsAcFPVlfgQYwqeYUVl1advhpZImvY1S4CX1s5SdQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/md5-ee.pem b/icecat/security/manager/ssl/tests/mochitest/browser/md5-ee.pem index 89a089b7f1..ba99e2b07f 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/md5-ee.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/md5-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICrjCCAZagAwIBAgIUJRdJgWImYgt+Qj7M7xHEhLxg5wowDQYJKoZIhvcNAQEE -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICrjCCAZagAwIBAgIUS6xxhbpuKQ90I/7Z3omzjGncCaYwDQYJKoZIhvcNAQEE +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowETEPMA0GA1UEAwwGbWQ1LWVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -8,10 +8,10 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqGSIb3DQEBBAUAA4IB -AQCWjX39WkOaM/YHCMKrFJF78OnqMAsIEsoSWcwDg0GcTzuLpA+63EBqYkzlUeDH -xn21lC7HUIwj7Axe4NbKx92VwKFL9JxSWYgkAXXo7fKU99kaA2HTkW+yjxsG61MP -zeCM2tsMyiSaIsLOvqc6ZvRR/vacY5JxR+zejQww/C0HfUoIA/aeEn4MnJUFs275 -69PxiDTLUcJwT8ykZOiqKqGQqnxZzu4syY19gSaT+B375TMFpKTxbKPtkxY4GU3R -Zpm/UdnNOGenKOXJmhC6Llv7LiUdjpty1bJL+EnG2oBYOCEm3Apjz4WUNxur5pLD -FCPPRULrkCDGvp+IKGGoIpZ+ +AQCjgrKk0Yd3n7CDoqiCpmtnxikY13QFmiOa6xZl0wkoRTaQclzC3DOiNSHJH4EZ +3aDM/y01/ZqDLXQIg8gRdQBeH/z/LdJnmX+RTJUvvJVptvZWvC8IvwOaelEZEHQs +fIZpNs3WtcmAFI2CX883wVxurvc/gnJPkADmN6vDSd3Kt3BBGFUg254OfuCNQqOo +6EimtBOZTILM8t+F49Y4heqq03VfYpRYoe/VemVBf+PMt8G52VyU11vJkZXrwqao +2Odgit10KBK53qWGhibC7hzdmsuvQUmpUVKgQxVNvfmYCygK8zEB6/P81QCgK/W9 +FMpPUYXStNc61Fv3dlnus2S/ -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-all-usages.pem b/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-all-usages.pem index 6728b83dad..736c52f817 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-all-usages.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-all-usages.pem @@ -1,8 +1,8 @@ -----BEGIN CERTIFICATE----- -MIIDgzCCAmugAwIBAgIUI4vWOCTqCQDhtXX/oDmIeTQo7RIwDQYJKoZIhvcNAQEL +MIIDgzCCAmugAwIBAgIUEyMdMl6yAPK8z3n942HpihLSApIwDQYJKoZIhvcNAQEL BQAwajEoMCYGA1UEAxMfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEY MBYGA1UEChMPTW96aWxsYSBUZXN0aW5nMSQwIgYDVQQLExtQcm9maWxlIEd1aWRl -ZCBPcHRpbWl6YXRpb24wIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAw +ZCBPcHRpbWl6YXRpb24wIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAw MFowajEoMCYGA1UEAxMfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEY MBYGA1UEChMPTW96aWxsYSBUZXN0aW5nMSQwIgYDVQQLExtQcm9maWxlIEd1aWRl ZCBPcHRpbWl6YXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6 @@ -12,10 +12,10 @@ iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr Q+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ 77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5J I/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQD -AgH+MA0GCSqGSIb3DQEBCwUAA4IBAQAK+aGUpA+yqRnHprMfkudjJzWazejkZQmO -KBwyt0QK1kk9eKiw8msx2AJrSyVAiQr/WrIK0NbXF7VlRcNaE9gjMRoPmf0zF2SH -TlyZeBErC3/b6hYrQ45gdERL5NLMIjy959J5hTjjTIc6eihu2axGLgDpr4IqzcMO -O9PDXPdbX5xp2YFkvYHAXxMdCzWQtn7DQnflme+Y1bjzhbL9yjcBz4NeJfWjgQji -46qydRXLcAKLrggGDHBm/pF/stUKNqQ/N5nwefdT0w5LmKqxpl810KsKuhzFa/Ve -OEqNPZurv16QRyIYAkB2KlXzqYodSYUidIez+eOVYi+rrLVO4y0F +AgH+MA0GCSqGSIb3DQEBCwUAA4IBAQBK3U8LMA18ZoLPSaf6wW4iD2xf1Ou66m2W +oAOIy+F2kmA9lIzipfUHQsLUICedN3RsedwP6L/+/6F2uKuD5z3YvtIlGc0UW0eY +8mBHl1hq4UUWWkz/i6oA3U1v3kpRuGrnSUEo/UYPga8jJ7ordiNIc8WOf63ffwO3 +NNXYkWFTye1X7HRTvq9bb8/l8hTXQGWBni5RTce0RDTi9UN32Y9L0FmriD87VXsd +bS9gEB2+Mz8Nz9C6nSRUUmlKqUww3Br8OVlKJiK4FO4AQR9WSvxv8Q6I7i9z4Zrs +gefrXoPcOSzAsOaGCrZUi1rjFtDKggcYo9x69fBViRYIEP8WxWa4 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-regular-usages.pem b/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-regular-usages.pem index 63f668df06..accbea942e 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-regular-usages.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/pgo-ca-regular-usages.pem @@ -1,8 +1,8 @@ -----BEGIN CERTIFICATE----- -MIIDgzCCAmugAwIBAgIUMazyIO0rjw3B9jhxsjUBcmBPkVIwDQYJKoZIhvcNAQEL +MIIDgzCCAmugAwIBAgIUHymhSKdd5JTy14FuhZFm12HODv4wDQYJKoZIhvcNAQEL BQAwajEoMCYGA1UEAxMfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEY MBYGA1UEChMPTW96aWxsYSBUZXN0aW5nMSQwIgYDVQQLExtQcm9maWxlIEd1aWRl -ZCBPcHRpbWl6YXRpb24wIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAw +ZCBPcHRpbWl6YXRpb24wIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAw MFowajEoMCYGA1UEAxMfVGVtcG9yYXJ5IENlcnRpZmljYXRlIEF1dGhvcml0eTEY MBYGA1UEChMPTW96aWxsYSBUZXN0aW5nMSQwIgYDVQQLExtQcm9maWxlIEd1aWRl ZCBPcHRpbWl6YXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6 @@ -12,10 +12,10 @@ iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr Q+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ 77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5J I/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQD -AgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBTK3gfaWUDDby2AXFNM5+PzdlUnxI1d8nL -i7QPh5v7JJfyJAwDPbo9z7xnDQ7pWxZeEC9NJioxlF/MXnOho4aO5l1LQCvncCU8 -XcXrFoWo8f6Ms9NYf+AqeQGkuDEOoIItm91xlZyzHz33wqC1+9SgOWK5bs/Pewmq -J8YmXAMlrFVitx+W/vuWUG48iR1bixWd4TuggSbrKs8O70DpBcvlj8AEnm0GGc9X -Zo8adTi2NvW2OzXbTDEZ/+YeC8+zuSXVLwVjkJ6BLM6WiY3BiDJfK9lTmttEAVw4 -iWigZL6BEdRN27WLbn6TCl8FX/XmjapvX2a20UbMbAaFsN8FP2nf +AgEGMA0GCSqGSIb3DQEBCwUAA4IBAQA1PsSYynE5KOzA8ysbEqn6SUuvNHD0XCk4 +UNVrDsYQsgZxUQ0/DsQQPK/ptg9wUXMxhsNbv0CaqohzSqzocG3gfb3wIwxQkdLu +i+FnXVUldCdkvEyLVivVLVkyT+T5hg+mmgIV1C5ZME1txOmoSdU/oO/AIifCvtoi +aq+U4pdMbe89m60i7cpsR0C3FO2LQv8WZ3z5XMGGn7VaOZU//NgjO0pVR03+Rb6n +Blsuo+/XHT6Vg4mznTLm3wwGOjjuFkvyMTeKgpalJJAx4TslUCa6dgaFtbXZGYLJ +ECkTTrINcPonhMOFB1l/vslKotwn4GSc6y4qJdvhNVtIrTtf7A+w -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/revoked.pem b/icecat/security/manager/ssl/tests/mochitest/browser/revoked.pem index 7e62a75182..3a9c259d22 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/revoked.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/revoked.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICrzCCAZegAwIBAgIUTTu+lyL18mJbmd2Xsw64BzvgZEYwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICrzCCAZegAwIBAgIUeafUzwZ3c7mno0Jo5zMIEKM3U0UwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEjEQMA4GA1UEAwwHcmV2b2tlZDCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODY H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk @@ -8,10 +8,10 @@ H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk 0jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMM kd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaL L+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsFAAOC -AQEACtwsbaaMrI/1aT6mkr2E2iXCliW4NbPLOmH5PbybqyU8J2cliaB07E2wmSIw -47kZ21Us/3sFk6x4fgTImtIQPA/VaspM7CVDoHUViGS/Wj0Tw7EQKjaqBeWlUomu -H7sII2iJ5psrtGKoNEHtv9Yt+ml/N8GfXE8aftcNyKIZOoezqZnLpoF06BUkpE0r -YdOrBBO7MVU++NQIrOI3GaoF3NtS4ShcxUsTHZ5vFtRKP7qoyaQabaEOmk4Xdpoq -8WaO1GErod82wj7ggUtVyUmJGQsuxeOC6oCEXnlFOpc4TmGIdvH0K6TLVeT2oFZN -BGsIMQcVjM9VOvesqHtl10nkag== +AQEAcjQCTW1Ee8NA8fhU1SiHF1KSkC4ziilmAEznIUPRGkN5cc29jKP5CjzbUJM8 +LWToxG7Ay9FVbitoSHxTbKTGDoTSejOAjAj9P3LenwE1NAoIuEnfbPSz2nnTosvM +UGEu4Y5ZrbXwkFQ+y8YiygGlk0jBKPBQzTBn32KSRbJScvMW9KxpMLuPjGt1h0L4 +rRZjLaym9R/Q8zVghtgqd25mGZWnaIHBP7I2GvqvRc5+KqSxncWwXDeSMlZaMcNe +ZEOItHZeCeuFoP4WqwMHntu7RisU7vL48TwYZOsT6EKYhEZT94OdSyRFMJfdJy8O +5eFmnebFvG+ddNSOXZe6+cJ3LA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/ssl-ee.pem b/icecat/security/manager/ssl/tests/mochitest/browser/ssl-ee.pem index 1e2fc3593e..6bf936dbb9 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/ssl-ee.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/ssl-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0TCCAbmgAwIBAgIUD6PVszA2vZOzBmefmBMIkuvkG+EwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC0TCCAbmgAwIBAgIUZeJfQWkTvJoyGpC7lWT4ap9ESGEwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowETEPMA0GA1UEAwwGc3NsLWVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -8,11 +8,11 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoyEwHzAdBgNVHSUEFjAUBggr -BgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAJvNm3+1IFshzPJU -qhtRa6ZmC+EhuKFEPK/CxOzwXeZqMXBTigtT0+aOPUK4hueBW+IxrnBOFVQlJ5Al -R3+yRC/I6pypcHxSxqVle1ivD0iE/5i2x6gk49xeG9IdBSsffVrknm7gyu+PkP8q -M9Nf6zMt9G85s059OihAfMP2Et0OHs5MTqiTIkoLdYYibUEMy2m+sBxhjzw42YGf -ft5Ccbw3sxHhjTjJPZIRQX3WtN/Dnuf4Ol5YOevxLl3T7a7Suj6qaPuIyQqst0/D -W28bVv04AFo8UVaCp5n2T+BDD2Fo3IyD0jmu9cI3Izli6xePVg+Wht7IjLSO+lhm -LTwLHIk= +BgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBABuS52kBBtnRoofY +vIvGk7EVNrShjNX776hUq753Tp+knhN0G1Att0ZIHlwfgFo2guCrjkk5yxrycAY5 +kIT372y9IBD4K27b/lnujncs8NfRTeeJJuZBpZnyFNwCA7+Zbd6oMhixbpHCHqdh +BJuXduA7zuepH+8ep3dRIYh6MFEgL77Ehi6KmvywPfZkV8+DaCk5DtMaAeREKjAb +XbBk7xqg9uAbzqpYd9z3/kph2ltqzI5uYbHSPISfRN2R8yPw3dklcqfQA0m91KIc +PsjLM/h/Njw0wd6zB+x1el+yY3sbz4uGOHjTDmuKkvccId6f/usrAgmoD0fgsxhg +BtGNMM4= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/unknown-issuer.pem b/icecat/security/manager/ssl/tests/mochitest/browser/unknown-issuer.pem index 9cf2c42053..c390fb0fa9 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/unknown-issuer.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/unknown-issuer.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICuzCCAaOgAwIBAgIUP66BEOJMCyNhscpYzxn9tkYKqBswDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHdW5rbm93bjAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIICuzCCAaOgAwIBAgIUV/HL1HHMYE/jc94BU6GBh3yCFqQwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHdW5rbm93bjAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAZMRcwFQYDVQQDDA51bmtub3duLWlzc3VlcjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs 9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8 @@ -8,10 +8,10 @@ HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7Ak kqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJet lmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2r kQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkq -hkiG9w0BAQsFAAOCAQEAAuo+sCULIA80ktetVJVut3seY3VfxgdS6L/wgdvcN2Cl -5GyOCIwa4Zucny0eqpECxLaEIqYlg6dpzRDg/pbXOLyFgGD+fTLbI1IOc22Gir73 -pq2J78BRhQuaaYdHdplG9hTp+zEObk+02GApTkZ5hCum7H4FnLiBC2BWwX/u+3Ch -YtkM8llrKrCqOSD4LTqRzUsSZL60qm3B9qtbszNxPfeU36dLXWgsNTgUMoLgxDB3 -iA+zD1rTnNTvXU1GPh5P23ADeIaG0KVJ6bp+M++TbQ8I7U7EpoJMqvacix9d6Zat -rBBZfkvm0P/TWOGkZasjrn5Zymxp6aC+bIhpzpKhpA== +hkiG9w0BAQsFAAOCAQEAW0Xn+maavAEULuD6Z7DvtHfXrtXHOEFyfJ8Ckryo3N9H +NxJFF4GoQDI3DCOEnuQXPlaYb8lvXmZYsVytpIDtN+3HPexa9AxT3DCkFAc0IyNf +yxeMMM0yaBLBQugs1TIHaX62H8sfpwcEGaKOjcpVmne9mSNcLH5YctSnL0hkaG/s +9AL7BvvfT9EgY2JzG5IMlkKzAVv7/j5IsC4f9DBjiDyWbwUYqRxA8tTG4vdc3tXR +3eKpmx0q/B5FY2l+q08N9aYeMfH/fNTtI1cGYxoUGFzT4afEqkFpIxa+JirvUM27 +GMbDNleXuqVaKKSRMAJPCpcoUznEDjbld6LeG4T4bA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/mochitest/browser/untrusted-ca.pem b/icecat/security/manager/ssl/tests/mochitest/browser/untrusted-ca.pem index 68f7d72e46..556283829a 100644 --- a/icecat/security/manager/ssl/tests/mochitest/browser/untrusted-ca.pem +++ b/icecat/security/manager/ssl/tests/mochitest/browser/untrusted-ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAgIUGefBc7txfj9DBOBcxmWIJpYua+UwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC0zCCAbugAwIBAgIUM2fyoYI6NuFofvvNjPS5+mrbcucwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFzEVMBMGA1UEAwwMdW50cnVzdGVkLWNhMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,11 +8,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRME -BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAONYX6UHxy+WN -UX8Sh5tlTqQsnhU5cHNZB46OjRKJ+/j6bEGvLIOnF+ibWOQehKLSolNqxyNeQhML -526T5nRWYFi/pHhfWxEU6rCBWyyJQjATLY1G1dy02FmbDIujg64xEHZqH/0YNU16 -3/5bMZxMhSh7aMVgJuqcm/VqiN+tjzRkW4Cp4PkfcuJD5LAzbACGYTzTQa3t2XyG -FGYBL80mWLHMz30Xy/1HetCu7wr75LIgc/QGXFOvsTVV61AZ3fHiq8XXO76DV09+ -mgR2m9i/d6hfe2sce7rU+zVpZNOzktc/Hd85SgaTXF7YNUAyokyIRAGzfxT33obx -RFAToUhXCA== +BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAWtDYyz35zcXe +YzVE3oPvZrqr4NlH5kkO2HS4YgQmCobvYjTt2zK5JE7/BON6F1CZGtsQd9EBVEgg +10LdiRaFIoCkt9pKBiZK0OONlEfQhy0oXKrALyyYZHpS8THwotT6xQYzdncwSUej +fjBfzdW235dZ3OM2xwqB9qTSQr8jiaprqr9tpgW702uQt7TdyLFaKFqIMAGPnRII +Y54iGvr27A0/P8TyDLdv2ilD7qCyw/tu4ueCGHVZW5aRRfivW74qQn8N2oP3J9Tq +RJiOeonGEODm+D6iaHzaJaWk69hkbrXn4k6WnOoRggf7xFR5dipmaphJLK1YGQtE +/mOuw5o5qg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/badSubjectAltNames.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/badSubjectAltNames.pem index f15ec1fb07..2678997a59 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/badSubjectAltNames.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/badSubjectAltNames.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC6DCCAdCgAwIBAgIUYU6jIp39i5MRKLVISw+5Tqs9zLQwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC6DCCAdCgAwIBAgIUWbosIZB+DFPqIsm+U3C2zkZGC3owDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAmMSQwIgYDVQQDDBtFRSB3aXRoIGJhZCBzdWJqZWN0QWx0TmFt ZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braI BjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVa @@ -9,10 +9,10 @@ p0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB kC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJv aeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgK Ne2NAgMBAAGjHjAcMBoGA1UdEQQTMBGCDyouKi5leGFtcGxlLmNvbTANBgkqhkiG -9w0BAQsFAAOCAQEAnoUJPmoKM6Fq1U5IRrNEEiILhsR0qGbOGBQfrj2ZsKp7bVWs -BzUAHh+hZ547+xMXJ5mS0gYty3uSfALRvzPjfqqDqgLxp/BnmYq4sNKYn2+EVOab -LLVtu5pqa7Du0LD3wV4eoPiddfWG0nWorkGrbg9FM4Vwqv4RFosVB+E70nC465zU -knT0x0XRmYIHPqbcef4z6p79nNAVFSsuAsllAZUJaINb2KFafbySxqMC/tE9dXLT -aItYr2pUerhm4LIDQXvQv/t2XwdGgtYPIdEGE3H6Mjvx+PBhYH3JNXm//N7e7/+p -GUKdEul2VwGcUoycy50FO64bvY+CWdzpS4Glpg== +9w0BAQsFAAOCAQEABW8QiK5eb2V4931RU5uMNGHsfm00mJBNVmEYSRnRf3yZ9qpX +QyozVgSgNipleGpAs8a33J1PLFUULkgeCLDk76TOGXMWD6JFBWn7TssLz958/B0I +sMgfpjQA4Mvzk7SnPKiWHttMTqM1PfCnGcTXZaX2jIUkbnKkcCv/2pt9/peCADMS +zrjrtEIzAu+VbulDOVT7S7DkUQZo2QtfSM0yj0ZmJ5sgNKOZEuwy9/pOh/KIJP78 +Jbh2OFJm6KSRZuPI3uooVuCzJudzG5UFd6gAmI9hYxgBAYEkekrq+BlF3jL53rMK +fcqe0Z4QFdtixZUAbqGQPtXguh5zIkWdp43M5A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/beforeEpochIssuer.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/beforeEpochIssuer.pem index 454f13d203..d626e20a00 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/beforeEpochIssuer.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/beforeEpochIssuer.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIUT8TIdud6GvlmMmFBNe4qsE6ahAMwDQYJKoZIhvcNAQEL +MIIDWjCCAkKgAwIBAgIUY+CWD019nECPVFDkYfFmgZP7IFMwDQYJKoZIhvcNAQEL BQAwLjEsMCoGA1UEAwwjQmVmb3JlIFVOSVggRXBvY2ggVGVzdCBJbnRlcm1lZGlh -dGUwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowODE2MDQGA1UE +dGUwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowODE2MDQGA1UE AwwtVGVzdCBFbmQtZW50aXR5IHdpdGggQmVmb3JlIFVOSVggRXBvY2ggaXNzdWVy MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2 ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdF @@ -11,10 +11,10 @@ OnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2nj tIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXt jQIDAQABo2IwYDAqBgNVHREEIzAhgh9iZWZvcmUtZXBvY2gtaXNzdWVyLmV4YW1w bGUuY29tMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL2xvY2Fs -aG9zdDo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEAM5HkjnwssAKiurvjJxjeD/u1 -FURYIJ5QGmUxb0N7+0aXq7g2a56lKyQHuVPOfPu4AN4EfRpJIQvUNB9EuxPOQhO9 -dyPSQ+vkW2ZDc83psaRRCDMpnD7APtUfmU/oFc307h/shBJcvV31/eP/C1DG9b0a -QPsz0uap+Dkxk6dbtsbua6Hv+Y96hBcP2PfBEhchMXCa3W2dK27IJ2JHD10Kc2hU -kM1s43oje4FWBk5M+ESrJYQgfBwpfqznoeVA0AbpFNfLILg+E9ZkFrC4IlJLe1XN -Ho2cD/IW2wTb5tcrTy4Ix4riDVSr6l8tUlPEPq5X0bl85QQlLElZR0fYBD3M6Q== +aG9zdDo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEAijaiFETndeAtSPSo+kuvrQoD +0XcAG/VCxVQBVtPIiuQJNipE4vnk6sCTv9fp/26ydelRJMlHDDnxdZC38NnCE8+4 +P5QcBgtLYGA5qbNyoDpeeGP8GbG+YNfhioeNoBZ5+wD7FlzUS/Pm9luEofk0EvET +mceps+XXOrsXh63766TXxcBEOlFaR7E34f7/3r/cOrr+k+/ZuxNuUxQuP3wXTNAf +Z3lCsSHonplNkUgZSGbUklgR6vObxri2qI6h0b3q1N8IV8NfCwflkCSG6qFAAdPV +KIpB+g1ao53U/3FOjqQiI2qj5aFHl4Evq0B61/lA9+4E1V8NDAyRDdFpMhb/+A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/ca-used-as-end-entity.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/ca-used-as-end-entity.pem index 3311c28d44..4b8c0a1efb 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/ca-used-as-end-entity.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/ca-used-as-end-entity.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDRTCCAi2gAwIBAgIUaffKwBtqKksYnVjmLH5raoSeeykwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDRTCCAi2gAwIBAgIUXc7Qiyqchj8mBbA7A1lSzlXZzP8wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAvMS0wKwYDVQQDDCRUZXN0IEludGVybWVkaWF0ZSB1c2VkIGFz IEVuZC1FbnRpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a @@ -11,10 +11,10 @@ Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjcjBwMAwGA1UdEwQFMAMBAf8wMgYIKwYBBQUHAQEE JjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMCwGA1UdEQQl MCOCIWNhLXVzZWQtYXMtZW5kLWVudGl0eS5leGFtcGxlLmNvbTANBgkqhkiG9w0B -AQsFAAOCAQEAKMyLvuNWYDfaXHEzuevnzBpZnEawwy/kPO9WyHydlKh+uXkcWJvx -SRmBa5JPbIozIQ103dWjCOVqJJpXtxZ2JUAUSgiel++gaYayNwFX19hazPoGcwNE -yQhUWr0nWGWLu4/E5eqLfQNoGDv76zk05iPHH5Xd2DIY0PB/acyml6stWmSzQPme -Ycs+lIxn0ywLBFafnjZv3oKzX7WAEb8kCTpRSwtVWP2H4l2zVyVs8UpnHrKU+PyV -MUxZWt2Kb8bOtoG2KTCC+wDoGfbQFAz6mKrl65t22TAoBZ8dL6zv7it08vll5IwS -I7NnorCVYpx6wiXfRVi2xnIBziyYGX96vw== +AQsFAAOCAQEAoSnbAsXcC4pGa9+E6bqLQ1f0nfw+VVr9ALTKMCIE7SKnozY4wwRU +9kL7Q/N+Uh7wFdD3evK0B4VZaDEeQWPnoc+gk+0AfgQyXKIa+uIhFkB7ZjdZleAz +K9AU+J65f7fjNI9mbwglRXvaEX5z/8LifjwkImFtr60NACus/2aF9d24ipVFb4Qz +ACBQUwpaXo8rktfrK+mDsW6LkQu7UymSNcrjgTDW1FmWqQCwILdsifr/1vG+q+2b +cAsYWth70GnFQzr7nBGW9tSHJR5Vam18RW/EtqYVFVDoU3YnOcwRfS9rPtGyoKYL +SWA5IY4tTDCeT/smF09NrRAZceuAnq7pew== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/default-ee.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/default-ee.pem index 59a8e992ee..3ea8610041 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/default-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDiTCCAnGgAwIBAgIUdYXDu3hW/Iu4CxcN3TvEwaRVzY4wDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDiTCCAnGgAwIBAgIUHawh1VjXAIDCge7OJCxPJVTlw+swDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9UZXN0IEVuZC1lbnRpdHkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D @@ -12,10 +12,10 @@ gccwgZAGA1UdEQSBiDCBhYIJbG9jYWxob3N0gg0qLmV4YW1wbGUuY29tghUqLnBp bm5pbmcuZXhhbXBsZS5jb22CKCouaW5jbHVkZS1zdWJkb21haW5zLnBpbm5pbmcu ZXhhbXBsZS5jb22CKCouZXhjbHVkZS1zdWJkb21haW5zLnBpbm5pbmcuZXhhbXBs ZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxo -b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBCI3rJYgO98nOqQtwpJWJXTsiI -QHtWuP+IwVNr7gKPavy18qcgMkgLufCc7EEP3/I1UKcRjhoNawEWG5SFWs2xDDKm -dJrLBdBqxIF5YAkA/qx2Po4XTh8P9codzaPU+rJ2PGhHZRPCB6D9sIloUGXUKAvq -RRkGE1RTKojUxO4Xu5xQbVPGpKTx72hKLRl0FtvqKbZMV6MQFwbTiEeQx8B/KpI3 -OnxQ3roD+UaMYSvHGrcod983Yw4fqCCZKzNbdiqwJFylULqYrKXbH/RU71qeStXt -Co04Zo96avbIjDTT2etQHy3vYF3Rq77fBScw4KI1Ak2CvbD04jcCoUQgZrzM +b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBU6uKb5khzoLGqg2P5Vt1dsD4x +w3OeEWQH6YFB/MzIAeq/zKPNUsN6icxHVWiJbA5bAYYmJLcOKcfsfDi02+cJSS0w +Pj5zJmSLDRPbvlN5XGlKVRdG9au6elW6axvMtYpH08nSVcmEQxGbUJu+KGQdDBsL +XmRqydFMQWd8MqWnZCukHUnCfzbzjNtqW0BuFwUTU7nFn0qbm5wZZlS6GTbiR7d5 +l+XzcTDdiva2hnLzuK/riwgBu8A3Rfzw67SjdhSxioEqEA8iWYd72YjXp7n2/izY +FArJq3NG4RyxWpNt4DtyOLLY02B8JNG269qmyMpmIXrAsjgGbEgQ5NsheWx8 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/ee-from-missing-intermediate.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/ee-from-missing-intermediate.pem index 4442172828..7aa32d1f3b 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/ee-from-missing-intermediate.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/ee-from-missing-intermediate.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC/zCCAeegAwIBAgIUTd3ncjFfAp4z6Q8Xr0geEH3kXCkwDQYJKoZIhvcNAQEL -BQAwHzEdMBsGA1UEAwwUTWlzc2luZyBJbnRlcm1lZGlhdGUwIhgPMjAyNDExMjcw -MDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowJzElMCMGA1UEAwwcZWUtZnJvbS1taXNz +MIIC/zCCAeegAwIBAgIUZVox7PMF/UFtYsnLYQbF2c9VA04wDQYJKoZIhvcNAQEL +BQAwHzEdMBsGA1UEAwwUTWlzc2luZyBJbnRlcm1lZGlhdGUwIhgPMjAyMzExMjgw +MDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowJzElMCMGA1UEAwwcZWUtZnJvbS1taXNz aW5nLWludGVybWVkaWF0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG 8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0V @@ -9,11 +9,11 @@ gg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g3 04hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l 0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz /kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMnMCUwIwYDVR0RBBwwGoIJbG9jYWxob3N0 -gg0qLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQA50voKnIh0vB+d2y9Y -3oQKTsm+y50fER5ennAnrzSbWoEY/T7lW2htCUDMLKNgMOAkfArzz6OBW73uS8Mw -DWYa7pUZBQC+bvuaa8SZmBHhQGurMVgZaGQu9wpN+qGptn9/azzLokY5EMR0v1YA -rVEk+mV2EldYv9wbJKk1qJvShhEki5hGumEcwJxBKPAYLXQG6uhPTzTbWejK0b8k -wFUlbbuQFk18YN52vNefOVFwt2ESFUJA4euWOMviHXOPEWpxrh9Q0dttsWfzTbfT -yxqljR2edQGuNecCE+IIfVglRSHQ6/jhWxzY8dT5sxf/WWYfy6JykmomHBtb06AV -X4se +gg0qLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAvC/lqa2B1qjTiSXl7 +DoSP+Mkef8CgUVaq7/0pDG5/ujrX0ZxMRggxdFPC4rWLj7MBDWRrbcNGFwEyXJwN +NgTNVkf13IlT9aQcgrJYzEPHEU5ASD2+q2Lzxy31WmeUOQ8lBffx8xOfSoJygoys +cK+FUU4IR7aPSVNVkmTLHizGRLthKvY5yCtiPSt71cEHZeRvPKvzYjPgrC9zA4in +tGhYlBfAqjG1+pj3nlZvX+ABC8ZcsfD7lPmmkepiD2VENylqSAPCix8gMZbiYCZ8 +yBAiwJCvr82FQizIMvxhSe9pT1v7a/CkxtEaAPtWyFkimBli+Yxa9WtuiIM9UfQy +XuLO -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/ee-imminently-distrusted.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/ee-imminently-distrusted.pem index 20c7714491..a8dfc270fd 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/ee-imminently-distrusted.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/ee-imminently-distrusted.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDPjCCAiagAwIBAgIUD5Ix1yThUAWGfEi9H+m7J2K3YlMwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDPjCCAiagAwIBAgIUfaNIQrX3/UHZ66L2SM5YrUWRMK4wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjArMSkwJwYDVQQDEyBJbW1pbmVudGx5IERpc3RydXN0ZWQgRW5k IEVudGl0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk @@ -11,10 +11,10 @@ s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV A6zaGAo17Y0CAwEAAaNvMG0wNwYDVR0RBDAwLoIJbG9jYWxob3N0giFpbW1pbmVu dGx5LWRpc3RydXN0ZWQuZXhhbXBsZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsG AQUFBzABhhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IB -AQB0wHh2jG8wVjgIztkCvEWW7yBo3Nr7k/18vxSqTn3bKd3pznLXRRhmCPujLlDk -8Cj8qqL4JGwAnLpCT6W8D3g3U8THhhapJXMSLyByNO2CTF1YHaOmtibZFcLonlxW -kJhEVlFduRgX10GJJnwpr4+lAj0aKyfZiurw1r5p4pMGYPAXqlvVT9azvtl3oIcn -Mup8fKc31LL1/744HdQutz3UMnTpuTipJqL3EEA2cqK7gm4nQWLTsWOXXv4S7AfL -zYvZUAQiofZo5s1NBM4a3cnBA4Zvd4aB/CBAzOfi7i/DbZxnbTzbJfScWbHTR9bk -u1OiznH2hmc0H/4+ULMc6ujx +AQAikDvupWHfPzznjat8PeN2+HwsRFdYocppcCAueaKE/iyJDjOCMp8Z7bjigrY2 +YsqLH/k88/WbDaFENAhsUu/+YtvZFc6l2jszrjhnsS5Ki7NaAuN6vVTAR/TgC6Li +fnEgMIILCEqI6vM4Lnik/XFoDysB1REfQV4ryzx1GVZwjyHgjV2lKSMxPlSIYuPI +ypz1mO/2sjc8W3IwjJxCtF0s+/T0+LnC5Epit9mN2lH/A0PUgK2xqVeQugkZBXSN +TgluA7EEjWNQh1lwYaPo179YEeysG4L2XR9V8SRESX/4rMTRd/3Fx1p0EfF51AR+ +bV4jGJABqPwvJeAsTn7kxaTu -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByNonCA.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByNonCA.pem index 295dcf86a9..0fc3a2934f 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByNonCA.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByNonCA.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDJTCCAg2gAwIBAgIUPSpek6BIitfUfcupKYX61abDsfswDQYJKoZIhvcNAQEL -BQAwGjEYMBYGA1UEAwwPVGVzdCBFbmQtZW50aXR5MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMB4xHDAaBgNVBAMME0VFIElzc3VlZCBieSBub24t +MIIDJTCCAg2gAwIBAgIUCaosuXRxTQjbiMAkQYWyvX2+P00wDQYJKoZIhvcNAQEL +BQAwGjEYMBYGA1UEAwwPVGVzdCBFbmQtZW50aXR5MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMB4xHDAaBgNVBAMME0VFIElzc3VlZCBieSBub24t Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braI BjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVa p0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB @@ -10,10 +10,10 @@ kC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJv aeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgK Ne2NAgMBAAGjWzBZMCMGA1UdEQQcMBqCCWxvY2FsaG9zdIINKi5leGFtcGxlLmNv bTAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9sb2NhbGhvc3Q6 -ODg4OC8wDQYJKoZIhvcNAQELBQADggEBAJMU12w2mtok4cCaFYpbWCwtLrYcGHIM -Aj4Zt64r61Uh6tDzmlUrszMAd2tG2oHIC+7uXD4gm7vChEZ6ldDLxj93pCl/wLz8 -HTjeJ5M29bHBOVbuqhfFOR2unZ/tYmfz0flxV5jZBfBwuJQOmDv0vcyF7tWcjDEA -WxEKGBzhweOks6KtYFITgLIQlw/maBaleg2KwshTawFQ2mMUC88ZvwnMcQWQZkgz -UN9p8yTXqTZONNB98oQ13pDX+ZhizjY+0SZA6gfjFxoAPpGNl7Mfp9wuo1wF3lWn -6jR4coKOxtmATTxLC2+u5o8BvZK6tiyWPLsD3fBU1/MCVR6pvul5Nbw= +ODg4OC8wDQYJKoZIhvcNAQELBQADggEBALV0/V9tJqBbLA9bEAviY6V0FqskHX/3 +Z3bPbKm63ybggx2xd8ISedDAkw++yEs+xSYDYKKe3Q5m763XC/fzuepIiE7KH/Cl +gjSGnY9+veiINfcYK1pIb7Uvfgzs3toy9UxnenEJ6DMMBpLcSy6l6WiZtrKoq335 +93U5FUxP9waBJtv2m/b6tmFwlmY1aOfgrTXXSPf9d1d02bTuJ9lbHwUtebd1X96V +6JYdiKgTnGE8b7m4YdFJkzFA/UUffEyPwlYUHg4PW26gnmI85/3tf1j6bDU1nb4n +GHlMHhw8H9rv46r5Kgyah30TYbvXZW+jOXWmyKyJwOmL3CgM30Ld6ws= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByV1Cert.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByV1Cert.pem index b00e84e47e..226501b3fd 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByV1Cert.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/eeIssuedByV1Cert.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC6jCCAdKgAwIBAgIUZbs9huDa3yolXkkkO1UBAc7p1bowDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVjEgQ2VydDAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC6jCCAdKgAwIBAgIUJ6jBWhK56SCujqrprC7fIJsnA6QwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVjEgQ2VydDAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAfMR0wGwYDVQQDDBRFRSBJc3N1ZWQgYnkgVjEgQ2VydDCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk @@ -9,10 +9,10 @@ nAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd 7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEA AaMnMCUwIwYDVR0RBBwwGoIJbG9jYWxob3N0gg0qLmV4YW1wbGUuY29tMA0GCSqG -SIb3DQEBCwUAA4IBAQBLzayYBa4KdJju5kIKNa2iiyv+AUb62ak8lGcWPsd5PxrV -oWt3W8NrtcBScgXaZU/d9+Q7DfxaxDJcdAFNZDwbN00hjmcpoUxsBE1UQO7QkC6x -OHtYkpYNmnIer2EYx/WO2v1m765vSQm23oBBUz9zHJ4CvvqMwGSiOBXPMDnYNWrz -uP9MWAUYYd7Yy26vjSGxtezQgzJRQsAskkwi9JBXN8IJO6xTuiSbTdjFR/gpXMZb -cfHlGR6vsAVgthQzalhxgXXZ50X1vOvwrZV4qLxyLNbofkr+dPDPI6Ni7TixXmIz -KdVzfBZcS9yVt/p1C7w3BSM4BRmdW1atdRLm7Oh3 +SIb3DQEBCwUAA4IBAQBh4AaXO5zO6ICQGNXWeb+Nc32uKHnjCL0KfgjbYs4L5Fca +ycaOovMjdP5XYl911V6zpT98IYo5ymvOx2sbGIl/uOHwrT/xoWPQRHfm0NZpoFgX +13krJb5SEobxoIHlW7Fi9Fy1DXORCsJ0WfgJ05NYtgIbdgqe1P2oIt+wHX2FV0Ds +6ILWMwOa3IoO1OM93Q87n+2Agw6W5FGc8SZjxipxeAOhdJDwKZ+iTDx1/WZru63a +lxBzmuVT1NTEhvLu7+I68fdgNBdF5Nq0MxnPWLSiZf70t5e9B6wCLbr1qvsHBOGC +SzDQg34uY1qp2MoMTplbg/NYUChXh46A8xPktyQT -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/emptyIssuerName.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/emptyIssuerName.pem index 7b316ae20c..06a295670d 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/emptyIssuerName.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/emptyIssuerName.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC6TCCAdGgAwIBAgIUe4usWf7s8WRrfEwHbzLkFalxv3UwDQYJKoZIhvcNAQEL -BQAwADAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAtMSswKQYD +MIIC6TCCAdGgAwIBAgIUHRucWP0O6pA2/Es0SPnKRU4PfqMwDQYJKoZIhvcNAQEL +BQAwADAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAtMSswKQYD VQQDDCJFbmQgZW50aXR5IHNpZ25lZCBieSBlbXB0eSBuYW1lIENBMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVK tOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7N @@ -9,10 +9,10 @@ sCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxs l62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYl nauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoyow KDAmBgNVHREEHzAdghtlbXB0eWlzc3Vlcm5hbWUuZXhhbXBsZS5jb20wDQYJKoZI -hvcNAQELBQADggEBABnCxaiCIZp0IRQHuKj6Gd8XnaPqYZClPWZE9n/9kD/MUKAk -I6vbPphNnc3yTs/JwbdARWSBZfa6fEXk2+TTe89x6ZcHAFJEB38XG2j5U7B1N5F/ -URPwk1jLJO/LI7cQRy4BJu4TOSdDOjDlCcRPE03zcdrAZ2zbGW8Zky+QCP4EgKoi -X6jnqsh8SsgLrCJQ4TyhNGffmooO6wCs5PY9mt0KST+Wr+E09X3n0AENHdfKjz+P -z9Pg8N34N/7ycX5WC/Sw8z9fVfWni2brUVtMWJzUpdp4ONp4wb6BjdtbN8D85VIW -jg4tUqcd2QTilFzqnhkFYmUj5qHyAnEjAHOSkgI= +hvcNAQELBQADggEBAEgn/weCqy7VL/5mvQ5n+suWhgqTsVN8WKJm6qc5WG5yUyWI +qyhfXvNc1qOvrJymJtrLJqzr5E8G4fe5OuFC4sLBIdj/MymbPAQzIcaUXhJE09EN +HZtJbjk9tRkAXajIjJK+BkWtLVw7rbnmjvwfl06hMgjcNwQ9M/JrG6Xe098pnh2K +pefqKq7YLP+NHGGDYLdFCkwVvcaGTb3eLRRdhP8MLseYPy4ebSQbmEOm5Q3XdV0e +Mm/2AEB6EB7emur6uB84GOKFe/kkZc7DOy3X+X1aO35BrKikPMKzD6noyalKMr87 +J2QuFLLBFSwApnubxFWeOXPQ+u544liUndJYhpY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/emptyNameCA.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/emptyNameCA.pem index d7324b6716..0c779e1f31 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/emptyNameCA.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/emptyNameCA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICwTCCAamgAwIBAgIUU887sUiDrOlA4uc/svBgMuekIaEwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIICwTCCAamgAwIBAgIUX42NQGy9At8ZK37thuHghzfSFOIwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohR qESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+Kv WnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+ @@ -8,10 +8,10 @@ rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPv JxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5 Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6 clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIB -BjANBgkqhkiG9w0BAQsFAAOCAQEAAVOz6dJBlCcrPCdUKJMbCQ7/rZX7wMoxzDuV -aXMZwlGu3PYxeeHPsY75YhlhwN2au91GPKjMO+ZSTryg+ZkoSahVsf+krbeRPEkU -q0+vl6xvWUnQ4j0U5q4UOXUNc2omRViCWnbtdCw0tbmw7FGFu7TkktQAfp8SJ0Q7 -d24i8j7Qkg+rfjRF8S1CD6lcJ4MCnZW5Ntdj1N8cGas3WWlPrpDpRHKyOlIv0ZTH -p2OnV3kzYcZvbVnESwXWq1UxJxoWwJguWTMdXyB3hMCTTIjgX8reEO9eJVhP2R7p -jLJxU7D1Gpo5AL5lpeOpvBf0/OT4kcjPwwU6xvQz1JWKGqJeew== +BjANBgkqhkiG9w0BAQsFAAOCAQEAi5nvh2p+BOb9MROdOLlecxWN/TocjVRmjzIt +m5A7fOUS9Ddf31q09uATSQ1qdJct7MejpCaErCUmTNBCI4PHs59V4giI8Ot/4dxJ +8z5WEuSvn7nEMGHFu+Ln3+2i5YqVgJKcS8QQvXGWBPSAlhBRWJP5pvgj9/a1tJRr +eB0dB3JVi2OcMOuuGc57fFospJaJtcz7YJjtMoI6ksVXgpsKEpP3FiEeA3FKuAKk +AqlOEAP2xutST4QzGvfgAzJ4QhUSljfhbbg0cuus400/CE4PJmK6DUbvNnOFMsBw +A+jJgWio7P5lYhvFY3BhgeXz7gTNnyoJb1DfvPY9zDVuK/fO9Q== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test-intermediate.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test-intermediate.pem index 4036bfe4b7..829488ef83 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test-intermediate.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test-intermediate.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDOzCCAiOgAwIBAgIUCTTfh7gFXoXuTTTwi1fxoNtME1gwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDOzCCAiOgAwIBAgIUGRbO/SYbsFN5HwgVe7plXvz8JnswDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMB8xHTAbBgNVBAMMFGV2LXRlc3QtaW50ZXJtZWRpYXRlMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq 5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SSc @@ -10,11 +10,11 @@ zBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3u JtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQAB o3kwdzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjBHBggrBgEFBQcBAQQ7MDkw NwYIKwYBBQUHMAGGK2h0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9ldi10ZXN0LWludGVy -bWVkaWF0ZS8wEQYDVR0gBAowCDAGBgRVHSAAMA0GCSqGSIb3DQEBCwUAA4IBAQCw -1n/lMtwJeyTRk3oQ4WDLRJJUA+4E6akCeRaKNnx332i54tY28XNdnL5Hr4wsd1yo -bbt6TDzS98va45OoPTPw+7S+87jEqLb2BOmV9f280/vm548wkWeqIQbcojrqNrjn -EqjJowK1K96pCY0ggcwYZ906vg576oW3/9xZM/l3xklTjiCdCvTMsmB7xDTb1Siq -fSr32QuH1rxA/iaq4ZFcimYpe5cGysCvjAkX1JEqYLUcMH2WI6huFCy6xQ4DMMAK -VoWgP/gW+hQGdR1v81McTifxTLMEALdGWb4lWeb82B3ZuDC3XrfVCHoJuaPhpjf2 -v0AaDsFDSVSE3x8vMZd2 +bWVkaWF0ZS8wEQYDVR0gBAowCDAGBgRVHSAAMA0GCSqGSIb3DQEBCwUAA4IBAQCI +jIsbfEb15IHccR70w+wYC553IW6m6+/EzEoNzd0jGWcfcDcePanII2N0srTRfKZ1 +MRhc12J5naTT/OkYaGscpZ30LCyMIBUJJIKlzm6vyBQ3B2R0bQFyvXrCoGKztzBd +S6gFbC//FZ/5d4MBuZvRRAcTuSc9LL51EQbUI0h817/Jz29ZCLyTWHjNBwpPG1ru +TLvbTFdJzk/2GaeOQcsz9u3sI8C2EvlNrGYwds3I7ty9ShIZJ4Eex81FI4LDUGlB +tXpVQcwIJCjOZSFDgVgB8dpzQ5S6TcvEVGfEu7/wvZEERUVq1uqGnCk9fSRLB570 +lp2MXyx8sGfAXOw6J8fi -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test.pem index 00e7b762b4..134205d16f 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/ev-test.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDQjCCAiqgAwIBAgIUG9kGgK4BNpEKO7aXq7/kCjshS4QwDQYJKoZIhvcNAQEL -BQAwHzEdMBsGA1UEAwwUZXYtdGVzdC1pbnRlcm1lZGlhdGUwIhgPMjAyNDExMjcw -MDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowEjEQMA4GA1UEAwwHZXYtdGVzdDCCASIw +MIIDQjCCAiqgAwIBAgIUZ/wQP4BO+gTgat9aigRolkMw/fEwDQYJKoZIhvcNAQEL +BQAwHzEdMBsGA1UEAwwUZXYtdGVzdC1pbnRlcm1lZGlhdGUwIhgPMjAyMzExMjgw +MDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowEjEQMA4GA1UEAwwHZXYtdGVzdDCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk nAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N @@ -11,10 +11,10 @@ JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd AaN/MH0wOgYIKwYBBQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vbG9jYWxo b3N0Ojg4ODgvZXYtdGVzdC8wHwYDVR0gBBgwFjAUBhIrBgEEAetJhRqFGoUaAYN0 CQEwHgYDVR0RBBcwFYITZXYtdGVzdC5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsF -AAOCAQEAHbJzQIb9afsPtMbNKuz+09xXOhIRxpD7KnE8svYOpE9QfmGWCLXDm01o -vYltgcgyG6n49Uc93BCq1PXArGAhJGlR1BBvqthaWaJYtZJ1owfeTvkchnZDCMtC -wZAKM5iltFBgyE5WlI2Wf9d9sTxTJ2DCrkWQZKvpgmltGKhfQcSrURi66oScGfG/ -FWZvnld6jSsVKCbepnmXhSD/7oAYMGpgyQGE58QgrAYv2oesAYJJMrN7I5STxj4u -5SMsmkkiNAL3pNKKQzV9F0RM7IITUti7ofPeVBZpLE8+MTvJLw4IUWJe5yzELlD+ -+cIbGAxhOtvazk/6zwO+a6oEstrXIA== +AAOCAQEAKm1z/JsDdX6YCht8zTXpDmlf78HxXmjeWQFxemAGl8rI/JX3Q7oRL6MN +tP/tFK071TNRMNJigIuqXFRoUnu3YTD42V3eRRDB7j2zVKa/eBIKOhR2/LoZjQaR +ZVlsRtz8L3RchrATm0ASscf7JTml0ZpEnv6nHXn5J6T1ecjRuTASHlrCx8Zah0Pb +W/f+t4Ma25Ycc7itcal+uKq2E9N9E5jHAggiHe++Peh0Pv+Lat73Tfm4ZTIYgBvU +tWz0IhUMhxU4/C3rJry5hbnHtjzvPRzBJFlYtbtr9Btwp/SzWGTxUSFapZRzFSqF +/QDp3e3N4tJCd5CGfz9yV0NL892Qqw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/expiredissuer.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/expiredissuer.pem index 672d98418a..8287e0a851 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/expiredissuer.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/expiredissuer.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDQDCCAiigAwIBAgIUbwOV7DikeLi5wnwiTPCOrGfDFbgwDQYJKoZIhvcNAQEL -BQAwJDEiMCAGA1UEAwwZRXhwaXJlZCBUZXN0IEludGVybWVkaWF0ZTAiGA8yMDI0 -MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAuMSwwKgYDVQQDDCNUZXN0IEVu +MIIDQDCCAiigAwIBAgIUFwkE7pD5p0xireQLZRp0Q4656EwwDQYJKoZIhvcNAQEL +BQAwJDEiMCAGA1UEAwwZRXhwaXJlZCBUZXN0IEludGVybWVkaWF0ZTAiGA8yMDIz +MTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAuMSwwKgYDVQQDDCNUZXN0IEVu ZC1lbnRpdHkgd2l0aCBleHBpcmVkIGlzc3VlcjCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -11,10 +11,10 @@ MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaNcMFowJAYDVR0RBB0w G4IZZXhwaXJlZGlzc3Vlci5leGFtcGxlLmNvbTAyBggrBgEFBQcBAQQmMCQwIgYI KwYBBQUHMAGGFmh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC8wDQYJKoZIhvcNAQELBQAD -ggEBAB4SlLePbM9YFp3+CvihzzqQEwx/OMZCH9tHbhfhNyR7G4rOrtO/fhwk5Fui -dzTTfO+AqKesLS4kpTbvoK2gSq7u6b15WrrpMAyYgReQE6EtzvdaDUraRWA/l3bQ -7ivmqv8getbYrazpDdfo4+7bLzpMnxIQRQN1Ipcq2anXhmP51bSnH66pdUaYeidL -oxH8SNF4ekAiMLfqq6mVCJbbLARp77pZVh8HzV856wWDASt8NeRoLSGdvv4nva1T -xWTZb4TWKkWbaa9N0dyeVGh6jpB8LzMPPEJJePQRyTrZs0Z/ztxxLYByj8UpZIy8 -MbXvEi3dc+tYb1gFdipJaW4oEOw= +ggEBAKMMSMVOfH8E+ouw5wpnWNeZCVHta0TtekjK/EMT3RhkjSiSFuAbUws+4pta +sDYHaGQCCkZhg/NIM/p0RjgnMT9OcWRQpPXhnoAdvI2+xip+3g99NOcwzGic9Td/ +UT4MEOlToae17NoUCE/ulFLC5uJpdVm69abp2BOZ+69ihBJMAX+w8xl0Xf1ZyoCd +mcY/gfQfLqq1SjUdNpdmUcU42zw7v4a5jPdgTVTs+gEcoqfgnRhCPuF1a/pr+W6Y +pYf7qtTQ40QnvJTXZcQvZJVlGJcejFS9H1Duiq9izsJbQBnxVp8r5CM02HLYs2qM +20VWdWOvQ3Vpdfq6ekRZb5px7lg= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/idn-certificate.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/idn-certificate.pem index 12d6db8105..3e74ccff47 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/idn-certificate.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/idn-certificate.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC/TCCAeWgAwIBAgIULbMf+xRc/yqPtBxj2l8PXMKaIh8wDQYJKoZIhvcNAQEL -BQAwGTEXMBUGA1UEAwwOVW5rbm93biBJc3N1ZXIwIhgPMjAyNDExMjcwMDAwMDBa -GA8yMDI3MDIwNTAwMDAwMFowGjEYMBYGA1UEAwwPSUROIENlcnRpZmljYXRlMIIB +MIIC/TCCAeWgAwIBAgIUTehTYnkhfLjL0LoKPJ7hAg337VgwDQYJKoZIhvcNAQEL +BQAwGTEXMBUGA1UEAwwOVW5rbm93biBJc3N1ZXIwIhgPMjAyMzExMjgwMDAwMDBa +GA8yMDI2MDIwNTAwMDAwMFowGjEYMBYGA1UEAwwPSUROIENlcnRpZmljYXRlMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08 E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc 1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAP @@ -9,11 +9,11 @@ DY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQ gAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqV YR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQID AQABozgwNjA0BgNVHREELTArgilidWc0MTM5MDkueG4tLWh4YWpiaGVnMmF6M2Fs -LnhuLS1qeGFscGRscDANBgkqhkiG9w0BAQsFAAOCAQEAo/Ne/SXF6MQ9Q0VC5cfh -o6GTiyXkKcYEQf8xkzlLlcDofntg3jeYi+vgXOgkiBu3Wk9aV4heDDxdB/6HgE/o -Pwz2bbHDMG11eQWVpWqPTV9Ap8u/gV1DEzc8kxORRIJA0UVJeVD9kL3Xfp6UDO/P -wdORHZ/F7yLra8ZPyspbfqUzL1kfKcnvLj6WOISQ9HmvpqG7fuGerfJSWfwB1Hm5 -yUU5eI68zJhCc/CT7ufsaa7kn81F5NX6Wi/qcL9BqvS4oR4bekDqGfDWrFz/AHbs -yNUfRzjPnHJVqd88KLb+S/mjHjElK9O1/XIzfsrIy7in2aNs9dxrLVDY0scirCGZ -zQ== +LnhuLS1qeGFscGRscDANBgkqhkiG9w0BAQsFAAOCAQEAHuAhXnJ8tBgTlKGJyVSL +cbGqlTrPa+YzbeI4KNTJocn8LbX5sm5c9mQChEMqqt5v4vV8FlskL2VmlZybk3w7 +9OWJLfqBKV3BPHARMpDlCarJZDqfgsS47my10Es8opbXnTzMFsP3VN0AeFm5ERWy +fXJxKpMnX4v/x6YbGixoShJxAls7J2oIKVOl7R6T8lZvBviGqL869tNFrfl5qINy +RugBumehuYVTUNCgnSp2shcz2E8CykphO4Vdh1YOooiBVgZ8qcfLqf4RyeIB6tMI +4ngkBB3oUnVagGnrTegzVyxEQpN9eiLJY/VvxV78wysYJHCFCeJ0/c/Wm1VRh15I +0A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/inadequateKeySizeEE.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/inadequateKeySizeEE.pem index 8ff1de9832..a589fb4619 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/inadequateKeySizeEE.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/inadequateKeySizeEE.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICtzCCAZ+gAwIBAgIUEXmIz4rXEauPX/CCElKni9S/rkcwDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowKTEnMCUGA1UEAwweSW5hZGVxdWF0ZSBLZXkg +MIICtzCCAZ+gAwIBAgIUVcLshBP/KGG8xrQqz5o9bK7jsQcwDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowKTEnMCUGA1UEAwweSW5hZGVxdWF0ZSBLZXkg U2l6ZSBFbmQtRW50aXR5MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgADSm7Ev uE/dzSmzpRnLZsQ7jY+L5UW6eThM5mPtA991mRYA65IHkNJTDOzlRNuZpx8FiWo+ 0gcWVTSqmQV+R8R+O8ga2m+h4S43JotQRqVSaPna18y0hdgaLhnVDU8LaFSsr217 5p2aCDE24Vr6j1PByMhPxgdyed0OVdc2mlvdAgMBAAGjZTBjMC0GA1UdEQQmMCSC ImluYWRlcXVhdGUta2V5LXNpemUtZWUuZXhhbXBsZS5jb20wMgYIKwYBBQUHAQEE JjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3 -DQEBCwUAA4IBAQCpHsD/M11GTQnykI5ThaV1RwrVvHI1CgqXCSvgo0murqInnsok -EURsOOBVTVuhvAOc9LicBC/o8XQaGa1pRVIoXrg8CHSa/du6AheTsf+Adk95LkqD -FZk8569rDkOk4ckCTmGVZE8/I33WnJGa5UynytLtUvFwLoEJg63JZeDaM2UtkJds -vkvZ4M8r8E5Vogq2V8JGXvHb5CW/j0awmWSSIgE/2E776Iura36cEZBTonSpd51a -WmtCshuLr1CurfZz1QvxplhCFVgcFXCfbm44xtRnFPW4s1GelkBa8Cg45G1u16jo -JlT4CcBDEFPHK6YGJQJ1I39SpWvXhpZLYzj4 +DQEBCwUAA4IBAQCXdU6KPvK+Tl1O3kp7ebi/A1NfVH4mxi4aBHeGF/qlwv5XKnkF +esZhI67iuaS01RbuPjlWxisIXeEgGUwpCYyYZkbx9isbmb3ey+4kNUTBcdCFDPmJ +xJdVkPfSR5yNI6sGkNynYuMtqNOOfwoFBpZWFotZl6FIOzUIJAE3Fw0owSpsigNL +bCj7aXYMyelNJNXw4nZ4GeBM2m2ovDwcGwNlANL47aD0+IVY+YeWmkF91ZfR8/f2 +CacGBIStqYzJ4IPyJ4cKJd1/4PqOrfWfFPp3LcUtTVRVQ06Tby03GlJr3mmCdZZC +ieAVto1TRWW0hFujxcnORJ0mHFgm28O2X0p5 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/inadequatekeyusage-ee.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/inadequatekeyusage-ee.pem index e3c5bd4618..e77c7d4ebc 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/inadequatekeyusage-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/inadequatekeyusage-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDQTCCAimgAwIBAgIUbwCIz8VofvfuQqHvmoUG42+l9DAwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDQTCCAimgAwIBAgIUI1G1oXsOkV8Vj8mVt7k6QsuzqTYwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAvMS0wKwYDVQQDDCRJbmFkZXF1YXRlIEtleSBVc2FnZSBUZXN0 IEVuZC1lbnRpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a @@ -11,10 +11,10 @@ Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjbjBsMAsGA1UdDwQEAwIBAjApBgNVHREEIjAggh5p bmFkZXF1YXRla2V5dXNhZ2UuZXhhbXBsZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIG CCsGAQUFBzABhhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUA -A4IBAQBBvD6da2PBQIfVZ8/kzA9jyqARPwJQDjVFR6PKUKs1JP3otYdsHY1yXqG7 -SBTX6dLt+B+btPehUkxz1tOrpSONn1S9ITWUnZ6xEryAjkfXzBK9yfjJ3fxwji7g -e2Z34C+agyCmHTWFVdi8N+Apm+zG1v3Fj7MakJMSNUbHyXmNqxg3XVb2rLoFzvSY -4hpROB2k/fhLDmVEscjK/Vlvgs4O34oHDrKJdCD6VHZ9nDGtCGSgS7I+34CG+Wsd -4S37AkTjMXGbbFByzW/zTegRUj02SnF/X2UYBGXeRaOilmzakGg/bBjzpiBAEETw -knxXss/R4PCy6N33KrXQLVvYQ44z +A4IBAQBCFj/HOxpErowsBz7AHy5fc0OO6vitPuZ0vy0oZG/V9s2OCw11LQqeJEu/ +mqd+d3nb1Y+BlnorI/DTzYgbsyQSinS2VO9FXhVTiiwTOw5D6WedpJ1IwISnBZNh +rmkz2pCyz7UGVIkUPC/eoF/gx5y2ifYWqwn6jLk+R1EeQYLB9VrLN7czpyE9rhKh +ojp43hHiteo6zJgn7Ay/mLwBz5DHXYTX2exZ4yIHCXJDR6HjmW7P4fX2v/LpuYA6 +drkbOVGQ22JwpqAvfDtjjEZN1SA1r5ffRyaEGYpUzJJIXUk8wLo5exThcjiROjdT +jR8LnBhrVQQQGka4D47mKav67CYt -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/ipAddressAsDNSNameInSAN.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/ipAddressAsDNSNameInSAN.pem index c4e76d1530..4cb76dc584 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/ipAddressAsDNSNameInSAN.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/ipAddressAsDNSNameInSAN.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDHTCCAgWgAwIBAgIUSURDY5tqH/GnZmMNtqj80pv6lekwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDHTCCAgWgAwIBAgIUC4mQEh8mmwUFLmC53q+hhxzgNZ4wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjA8MTowOAYDVQQDDDFJUCBhZGRyZXNzIGFzIGROU05hbWUgaW4g c3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf @@ -10,10 +10,10 @@ O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoz0wOzA5BgNVHREEMjAwggkx MjcuMC4wLjGCI2lwQWRkcmVzc0FzRE5TTmFtZUluU0FOLmV4YW1wbGUuY29tMA0G -CSqGSIb3DQEBCwUAA4IBAQBz5NnvCFxXsPT1CPTY9FAwtOPB/BgYwszW+4mfOr4w -icmHfR0gIXKDy5e6ZR7gvySWokhIPvU51TtOlc9l7xMazspnzmdweDPDPO8Og93J -M8d+TTnR50k/uvnQ/yEBVI/cNSMJD9WgF8lFJOf+ZA9MlEp9y7nU2asm4yDRLLXd -zkn/3IPtNbteDi6X3e0c9SAMEmfacsKm+u01U7LtQrf5oHeZhDhB6oxa+S63lEUH -lW2afLXZ11aRJCOP9nJvXj8fq97/nusIMYMVQEjkY1xMO7R3rNT6jAPbWI90qpOi -xuefMXVd5KDGcKhZy6sfqb7kfXMVGggUjjLR1AJVplGH +CSqGSIb3DQEBCwUAA4IBAQCaAx8UJsWXe8DegujzBr5/ME91q2PkyEaL14yBe41l +EjW/SFgG1c+Yzwt0cpP70NCeNt6UOGiZZoeYl3P3vvvYB51h6Y1Yf+m/Z7VPZzQk +WfV07xxcBcNsa9L9DltUehVwGiqU8IEzGtaPy5/cqPH+UHSVMb9J5eXVHE1xsItI +oqJIxj9/xeC5HIlDjYqOEr88ntJrn6tJlGrXbCMmFLxiXJA6huH/aUl+yAnDSprM +NLGPadf8Y4u2wn6tYg1Mz6Q7F4wjER89tni2Trf3hFwTOu6YvG1C1fksCvD8Ip/9 +r0+IoTLs+aG1fWNXzKxmNjPG6mARVgjqDQ60V3+Ep15+ -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/md5signature.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/md5signature.pem index 87bdc9debe..9ffb20c722 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/md5signature.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/md5signature.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDLDCCAhSgAwIBAgIUHakKnKFiab2R+jgTbbgvjtObam4wDQYJKoZIhvcNAQEE -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDLDCCAhSgAwIBAgIUQ/8DyEuYtKk8xFuZQ4y3ZKWQ8PUwDQYJKoZIhvcNAQEE +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAtMSswKQYDVQQDDCJUZXN0IEVuZC1lbnRpdHkgd2l0aCBNRDUg c2lnbmF0dXJlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESO FtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVr @@ -10,10 +10,10 @@ VbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6n aOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHE MdUDrNoYCjXtjQIDAQABo1swWTAjBgNVHREEHDAaghhtZDVzaWduYXR1cmUuZXhh bXBsZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9j -YWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBBAUAA4IBAQBIKihuWmbd7y7OT4f9rq8+ -1WS4OgH7ivlWuyz/Oj6SDhZDIDNgpXVs6T+1kT2FJ6nuujSTW1n6HWLFOFo4UdfF -6JQiv6ZCu/LzMdNXwCNWUHQ45nobuTNu5BJfSuU2jiglDUTvZS1VHuy5m7wy5HWS -EReu59kH+l2h6HVuSzKVBToUKK/u3igEC/OsHVT/9A1v4Mgx3b5OCb9qgEPOsDVX -Of/PQM/FgN+q7eVBBU6Iypo/hqK3exHXqJcKAwCqyKrz6p18NuUfyDILljbS7HUH -HN/PeNGF5aWGj+FEzYuYVULQny4xfZkUKbl/Md+WYsVnftlL2Y45duA8X1Dz07GX +YWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBBAUAA4IBAQB179ttyL4g13NsXOOfRWBc +BrfdeszeTvVNxDpFob3/oW4oDiQbZsVhYCKwpSmUIrtQG4qZ5PV9YDNJyBnZSglJ +jKTby8Y5D5znBwEFB8n9i29zihh1j0g9WbylAo8/wiTEk9VGEL8Q5jOTkvt22yRT +xVLVISXJXjSocsvYXLQzT9+lGlagCSJe8Q+hXiP30/2oU+blHvQsz9NFHaODmXP4 +SM+WeH/CZZ4k7kliKtgzWToG9U0M+LIlg2a4XyDTr/BjuJS1jaouyeUcJxFxtrNE +2FghTJMsueS9mpvmbv/LLYYdGam7V0FGhozzlDyY6PEOXDN3V/sUdKlhDw9Y0WAo -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch-untrusted.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch-untrusted.pem index f2310559a7..ea2ee69e3c 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch-untrusted.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch-untrusted.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDMTCCAhmgAwIBAgIUIRUN67uBynzmqoqAfclVQHPYRYUwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAtMSswKQYDVQQDDCJNaXNtYXRjaC1VbnRydXN0ZWQg +MIIDMTCCAhmgAwIBAgIUOVywL02fIRkOJ8HT0L60/DPUS5YwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAtMSswKQYDVQQDDCJNaXNtYXRjaC1VbnRydXN0ZWQg VGVzdCBFbmQtZW50aXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA uohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGoby a+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWC @@ -10,11 +10,11 @@ iEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXT Ce+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+ SSP6clHEMdUDrNoYCjXtjQIDAQABo1owWDAiBgNVHREEGzAZghdkb2VzbnRtYXRj aC5leGFtcGxlLmNvbTAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6 -Ly9sb2NhbGhvc3Q6ODg4OC8wDQYJKoZIhvcNAQELBQADggEBAIVeO6hPU75roO5G -l9grthwIGNsP2LWI1tCdCn8aPLTIrP/Bn6gJDyVw3g+F8oj0MwSgmtFBoHsiH64L -Q04adfupLmspQvCUZ13RmoOjtR9seuY6kazQ3lKROkS3lZiu++7dO2e6oZKwk0aM -2VfF9K3nC/4gga9eWExMxX3SK8JEkPnmM/Lq9Z5pu8blGd/xNc3IBeFqIZ199Z1c -QojZK/382KAMrJMkrH6p7FBVrXx2BdRDJAMNexuG1MEu4o4qcxSrwPas1W//R7a4 -njQj1eSEJFZJk6V3Q7ZHa/Tepi6pDfqFayu6HLmivgfMwO+McJouEK1leBE93LhO -d3VeQbI= +Ly9sb2NhbGhvc3Q6ODg4OC8wDQYJKoZIhvcNAQELBQADggEBAKVUHP2aKkhbJmyl +Q027HAlYDvenKtYZ2guXpGjVfhvM2tgDKQ9c+ysN1YYfvGVQ26NRWXI65u1EiUZk +DXQQLVf6uo3MW2CYvMabt7Jf2Q4c1bcMUKbnmMNnyw7fxKg3s825QSM2r8e7L96T +fsA/DJ8CQ1ZFn8KvVf3bM5RxKGq2yP6eE4vsrCqW7KXcdrhhRPE69X8XEDzhiobg +631VqLXNatJOUNmF/GZatIuyCW3cZzCU3KV5HnZPK34lbuV6KLUyuLnijjkw3bau +j6Z2iIGOLdqyRduRIz4qbekiK26/MhD0QebECg2rLor+a79JQEkjrxN8wr5l4pP8 +spBYvnc= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch.pem index d86051b6a8..57b386fe7d 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/mismatch.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDQDCCAiigAwIBAgIUaenb+zQWBZOUdOPw89l9V/jqF/0wDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDQDCCAiigAwIBAgIUKQaOYHYJdeDGeCSTugWnaLqeowwwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAjMSEwHwYDVQQDDBhNaXNtYXRjaCBUZXN0IEVuZC1lbnRpdHkw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH @@ -11,10 +11,10 @@ ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2N AgMBAAGjeTB3MEEGA1UdEQQ6MDiCF2RvZXNudG1hdGNoLmV4YW1wbGUuY29tgh0q LmFsc29kb2VzbnRtYXRjaC5leGFtcGxlLmNvbTAyBggrBgEFBQcBAQQmMCQwIgYI KwYBBQUHMAGGFmh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC8wDQYJKoZIhvcNAQELBQAD -ggEBADPppaC20WLToJgzZhpj7rtoF7eUrOvSRv8CYQwjLqUQvLcLWgejgNoBJWJg -SETT0PsCahcq4qqKWeBWrRhtjwIN4gvX8gRNGtO4qeBXYQONuIbo2Wdn99imfWfW -eko8O1FfztIAjOzkkjaPNGWDMrM6ed/mEMVgubyV+QL072HasY3dlousysZ0lQVw -VxEJUxX/u4nAu0PK1wkF2qR5TouZ2I57QS1AoXEFsvGG6or9ijuvWBEluyXlSVYJ -piEdmv0ELZ24EtApUC2aPMJxPXEHreneqitEpLYM8VaAuDRLrmWZBDyAdNDrI26z -iPtmxx6zCL+/F93d61sN52xguMc= +ggEBAJLS5UEO9kQWtwdjCqzaDmUd1tp9lbSV9CpJXUoozmIdlbKyJ/n3KypBKTtj +yXj6URFL4YScn/mV7Sm5uc/ZXsp+eYN/ABoO//ivIvdiSQSGqhlbrmbjMGrttV7L +ZSkbjgobj2BD0wXwJ0AqpD0GyqZ9wQrTHOReBffep9ahjExR5LmUOQzmURXVWsmS +WHUjnfylFcii75ejTc3SrlfvmNNu5o9IGAP0TqUHzqArSieLFK5WPODjDDtA0USx +WgcV+W7WdrHUhvTicuDHAvorFXwT+OoW76NpjydM2ayzpxvguK7EXkmjUcVp5R7S +7iGwarj7soJbnYGeqeHopiHLLBA= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/mismatchCN.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/mismatchCN.pem index 5a03a4e4ef..bdd4910850 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/mismatchCN.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/mismatchCN.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxDCCAaygAwIBAgIUFVYDNP/ceiBOdyrdvzePTnqA0LkwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIICxDCCAaygAwIBAgIUS8NeESMh0cfqHi6pY6rpe5m2CUUwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdkb2VzbnRtYXRjaC5leGFtcGxlLmNvbTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 @@ -8,10 +8,10 @@ HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3Dg Dw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7 EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C -AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAc7y4P+ikTLm+l/147/rGbWLQI+vgTdcN -CCDku/JSK2K8MJDVfRUzFSkZUA5tvoG45zvvw41WPERwKM46xMv6B6iiAPL+HeXv -aOTRrKFMGVXh9OlwmW8avcBQoX70OObNFYqj8Mz+m3hom1gRNmbcf374JPHVvv6j -VjyUytkhK+5gm6uqWitDs3i/jteH09aKAkg0P10Jmpuaffb0ASAN7KPEc6f1+Qie -5JH+d2Kv73pjoNI3mZOGvStxXblUE1PzOloGDtwcIUHvCMr9rnmWlJufCBTdqAnZ -/QA9jDle0EtJSrpgRXYz4Z/3x0Pqg7XVkqXTxwTeqlcnLs3o519eGA== +AwEAATANBgkqhkiG9w0BAQsFAAOCAQEAHAzqDLSirn85qRLtnZpKWmT8FmLTLaIu +p5NAgCJE3HBeAkoVccQWa8oh8P3Hz1AdfGHvJYxAAQh+3ZlcdElWokhupNCe/6Fz +C3VcnH0ZpKjT6OQYv7df1pBAdEAiMUmaWo735ftzSX9EchLidH15NwSnDjVHNeEk +qy/1ZYRBslYmpb3Tb5sAngw/O4XTTLyUIHk4jOJ84w/+bBfOcVveKXLYCGJv8wZZ +ZNJ6L1oMClvOTE2tNeMI+znTWzrrdvYZnU6STo60xkn/3GQSLxNAklETqx/zRfQy +Kt7BGoEmugrjhnL80e3kYDdvpvDgpzSw1qxJgTmVzEQSA3qMvB9CrQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/mitm.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/mitm.pem index 217571f155..b2576d844a 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/mitm.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/mitm.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC+jCCAeKgAwIBAgIUA9zyXDSrIVGxJBWZ/Qwa9E7lv+gwDQYJKoZIhvcNAQEL -BQAwGTEXMBUGA1UEAwwOVGVzdCBNSVRNIFJvb3QwIhgPMjAyNDExMjcwMDAwMDBa -GA8yMDI3MDIwNTAwMDAwMFowMDEuMCwGA1UEAwwlVGVzdCBlbmQtZW50aXR5IGlz +MIIC+jCCAeKgAwIBAgIUFUlFWgSxHt11SM+Y5cbA4K+4cWkwDQYJKoZIhvcNAQEL +BQAwGTEXMBUGA1UEAwwOVGVzdCBNSVRNIFJvb3QwIhgPMjAyMzExMjgwMDAwMDBa +GA8yMDI2MDIwNTAwMDAwMFowMDEuMCwGA1UEAwwlVGVzdCBlbmQtZW50aXR5IGlz c3VlZCBmcm9tIE1JVE0gUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAab bhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmts @@ -9,10 +9,10 @@ Du0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhI H6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8 rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kX Mbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMfMB0wGwYDVR0RBBQwEoIQbWl0bS5l -eGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGh0wLBPL9BzLVKxQfshS0zo3 -1fgn1HPsJbtRelWLCbX3HLHbdXPNOD4IxHJ0Zxw1msA1cRnxcRGRib/3I0ZqIsKu -C7stow5jBj1tN8bJvQxPTYGWcBqEpS/WN8+lwjDfikmds5j5/NQ7pHrT4yp+ogSj -tKLp8Nl4dK2awolb4ndHTHIqWtarFN6lbyYHB/KSX+213+g36FPmkWGRWGd532rV -b5Mny2wUC31KQRuTxfGkTZ7Eusw5lOtZWHb9wWGCYa+2lloBuApoDkVbkKaY20SV -0jmBFhCfJNPa/MKcki1Ece5ueCcMU1kHEW5SMkcoFyTAq8y9EKnrAnpnowG/Ng== +eGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAFJd6wwzpo+ZK2tPQCQLdGtdG +Moa5X8y1I8wJZNlbrsNSJJZeh3llMflSq9R1hcm/t0eoDlwYFLlqztU2Lf5V+5kA +kOBcX/aHAGVaNeC/5YkpRYTW0pohn2CYElSPlWul/ZZy35eZxzujirOkYGVU9J0H +AXK/mPLrqDrne3Sj9b1LPE8Zvxaemygk118cMGgDGYKhS+6st9vZvI2FmR5Tj7LP +LkWT7DIi8Z6MOsQzl0ef2IfBOdLAOu+jd+Un2SsqnxzikQdQYafeOxX135bdjWDV +eojLi7FFhFPBB18d05sBHFwByDLGIZD4UXwi0ERnS1LTnoq8/LHvHP0LfjTgmw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/noValidNames.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/noValidNames.pem index fe7ff8366c..4e0437d62f 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/noValidNames.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/noValidNames.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDAzCCAeugAwIBAgIUSXEVdipghTOvaWZg7w0I2VjLEh0wDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDAzCCAeugAwIBAgIUI3HDc63xwKQqTgp/iBz+xjAckikwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjApMScwJQYDVQQDDB5FbmQtZW50aXR5IHdpdGggbm8gdmFsaWQg bmFtZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9 braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEI @@ -9,11 +9,11 @@ iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Za qn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7 LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs 2hgKNe2NAgMBAAGjNjA0MDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0 -cDovL2xvY2FsaG9zdDo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEApqKybjxqjqbc -siS7oX5cjv/wx/Q7cYuqa0hpXV2W1mDxvUgyrDJtDbTSs+dwXHDmzo2zwlO55Q0G -l5ykGexKQuTO0I1PVwrGpJNzxuy149+tGKehU1FBrppJNkRh/qtRLNfiNoUKhP1M -euAZBmLZLLVljXlVg3ErRi2BTNCPuUiBvSN6YroiSykgth2BuOUqTBPFDGwLCwk/ -03VBwVcnqo++dDXwE+IZnZiZbEVOV9RHvXrN1HiPMc0E0dI7iE9cuF7HmqpjFeVq -CVnKwfSi8pyiVoNcqdaPKcqtlw2K1Wf3Mo5KXe+oj4zUOBtHn/67ao2emDkvvKGP -YTI1Zy9UvQ== +cDovL2xvY2FsaG9zdDo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEAQMLIoeuj0GBC +bWMDddtCIEfLaEae53zF1fo2oc7BOHHJzboIPxB9x6+JTkaHrCQ1/nFjIoJQ1C/B +rf59jJ9vladEfdYBDnW65tLJEQYj2vFLpWjRONazL6ws2+eosLWN3GIFSWhi5mhN +KEjC9MjyzFnKtp1xWCeszJxsuH/jCOgHvHzsrI1c0s/Y8vWM9h+DVKinhjgQu76c +Ki7MljyyMU8uDZldd4wrJATsQArVlzNwAvu36Z+9KcxqsPli4lWPv2bOjxVqucRB +qF0YwuH+FW+w/hr+/k0+FBlicpNrVXfCTwtQ6Xk92a2R5hAq9QhgJF/+Gr8gnOfL +GuG1JoqEAw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/notYetValidIssuer.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/notYetValidIssuer.pem index 3bc83112a4..dd51600823 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/notYetValidIssuer.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/notYetValidIssuer.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDUDCCAjigAwIBAgIUQ2po5zRhfWoga+VrcbMU6BDokpswDQYJKoZIhvcNAQEL +MIIDUDCCAjigAwIBAgIUOyMH3bFNU6LGcUxH3Of8FRXRrocwDQYJKoZIhvcNAQEL BQAwKjEoMCYGA1UEAwwfTm90IFlldCBWYWxpZCBUZXN0IEludGVybWVkaWF0ZTAi -GA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjA0MTIwMAYDVQQDDClU +GA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjA0MTIwMAYDVQQDDClU ZXN0IEVuZC1lbnRpdHkgd2l0aCBub3QgeWV0IHZhbGlkIGlzc3VlcjCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1 SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+ @@ -11,10 +11,10 @@ bJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibW JZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaNg MF4wKAYDVR0RBCEwH4Idbm90eWV0dmFsaWRpc3N1ZXIuZXhhbXBsZS5jb20wMgYI KwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxob3N0Ojg4ODgv -MA0GCSqGSIb3DQEBCwUAA4IBAQBFalmOb8gTe5JIgOD6plQNbibXqEIVMyyo22hH -3IzMqFxWN91XHyniVEbyou08pTE8+oQmSr0x+UoTPV3U02ZDSA7oUrasg+71zGyf -HHbyFq32zI3F4lOkGolZ8tgdzCo9WjZ9WrsxZbX+xzxChqI9Sin12xhnlw+rIWpu -BDBLe4YJiUXgq3KiuXvdig0qSdt7+pPqGC3s5iRZKWoXiGYWSSawDk+VTF7wXa4U -UkcwULrUOhBCKBkaF1kp3nl7wMcKZnhzORLz+przzCp9SyvkU6qeCeSJataJHy3G -kY/u6pt8vI0Zfuh6QomkySpZuFpfh9eBue2G3VHpsMCkpINT +MA0GCSqGSIb3DQEBCwUAA4IBAQCB4BmakufSaXzIy6S+MZn+qwUuBlty3MWdKU3S +Fa4SiyjKaUYuw3ZY8dR6qyh+ptlPjBucb5dx8DgDubTV5mcgyKuDRTDBwM0CfFju +yRIzq7nn4l98Q7uVmhdFaq3D+bewW3gVRaLKjngMAuIIWRfgEYBFDk0nNQVwipo9 +ZKUkg5YOTAB4ULI4KVuOZ2lLWUABoGqoXpRBxvX4mBLGio7RU47aPwNBaiP4OR7k +YWzN5mhns/veH00777NNVWSzEXUXwl+uqiuHeLrXIekrXCGifr3DpGi7GZq4VCuw +9mxiSMgWWiv007kXbs4PKMk143Pdtr+67hMOtVWxlgPIeQtx -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCritical.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCritical.pem index ebf8ca4324..afdcc47384 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCritical.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCritical.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC/zCCAeegAwIBAgIUM8dXjTbwt76pUz8Gr8RCtXmYDFkwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC/zCCAeegAwIBAgIUKWMEuLo028owtgYHf7CcPDqgK/4wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAeMRwwGgYDVQQDDBNuc0NlcnRUeXBlIENyaXRpY2FsMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq 5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SSc @@ -9,11 +9,11 @@ ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYk zBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3u JtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQAB oz0wOzAjBgNVHREEHDAagglsb2NhbGhvc3SCDSouZXhhbXBsZS5jb20wFAYJYIZI -AYb4QgEBAQH/BAQDAgZAMA0GCSqGSIb3DQEBCwUAA4IBAQBMDpsF2s8WsXR7hzHL -yYXGIUZBGOvJcznMNGdDuKNEssLj8sN2pKNAgneF+CLhwOuG/kGc9SYS33PKutsk -lyUKlhqCQXVlcrkrUZ0sfElX9vGs4aBs8cdXXomYYYcEUXx0XH4f5ApRNDTzfgdV -ej5OdudSSyI/IrEhyiahkVH9uGAK1X06alxiIUEGU1kmM08/m/UMvhJFuDeo4Nau -zJ453Ps1lNyfDOCbqBo8zvp/sb0oLbFH60/o389QAndndbYvJr2oMQTcPFs6PUy8 -Ava3Weg5+UWHUEymd8BFd1Xaz5rNJYQ3JrpPuAEJpTE7+9l3MHTkbJkXbuYyFbLx -FDXW +AYb4QgEBAQH/BAQDAgZAMA0GCSqGSIb3DQEBCwUAA4IBAQAHTJodUGWVUG0vGvBX +8dt1MnawOzSrmMComoszeh2ew34CkzxN4oSUynNC0o/XKF/hE4ewVBWp8b1aDWO1 +oFYBYgxbSr1WEx+f6+JF4JVPehvM7CrDUteZOdEFTefQeJeen20FwYRarrQyM4IU +1fAR5HEL/Sv9ga969/dQfX4jVPyvfZNGEQ/W+Z9WQVxQESDfE43cn9PCdhwoj5yp +1kug3qOSwSClnV4819Q7ZrrH8uPhB/80PADgcwU03T/CenD23mEWJP8xfKHghZjw +Tdm78OhadtJrW2lPtNLhzQ/r6fJLh8/iRlDm7dNkV0qfJ95WvAPeyEf1Flo4ea7U +EOGo -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCriticalWithExtKeyUsage.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCriticalWithExtKeyUsage.pem index 2612de2f35..f87309ed9a 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCriticalWithExtKeyUsage.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeCriticalWithExtKeyUsage.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgIUKZwx/3rbnkeYHWsulQMO2nRGSKowDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDMDCCAhigAwIBAgIUK3RNwvI3u7QXbWHJGZQQ9jIlb2UwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAvMS0wKwYDVQQDDCRuc0NlcnRUeXBlIENyaXRpY2FsIFdpdGgg ZXh0S2V5VXNhZ2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a @@ -10,11 +10,11 @@ FthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kX Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjXTBbMCMGA1UdEQQcMBqCCWxvY2FsaG9zdIINKi5l eGFtcGxlLmNvbTAUBglghkgBhvhCAQEBAf8EBAMCBkAwCQYDVR0TBAIwADATBgNV -HSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAOoQ+rpR1lygRaywm -WmU5MBEnXyH79VNJOlkhnuv7kIxumaAOgXppVVaLejWrkn7HykcrtYsjTcyzFrog -dpv6tgQBY9XBa4hXbkGGOlfDbyUf93YICGR5U7Zhr+1mlOecEgbNwAQj/Zo1iFZi -Is+UoiiPq/pDHHdthcuru5X5A4rr+G2JzFT7dfTx7nxfytnQIzpKSIXiZTwk2sL2 -ORfKtFbUshoBe1RfjHhPmVVvBKWJj6KdIxC4mBe9OBHpIh/3juWzwqwAJyXloHVz -gdpF7cdgQjCKPEFADEmMx7bchA6l3f0Ba9bgiZUX5ANivbRu8RvdPgRNDCWpSarO -Ml8P8w== +HSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAXdRqNQTBIS+Cbj8M +jEOHJ1pY3wAQ1kom7PF475lGggJ12Ltw5jcSO1WAmLL/MZlKrHuAjMFteuiroDRP +irUcuu5ZwZnJYIXMu+qfYgr6NCjNaSmuS5Bkm/Hjhm7HUE8cYCxCbqzwjKw1zVY8 +riSaLrZgFlD8jxhBokgI5TVoILgzfqWya8LquQY9YOmEUG+AbLSK2irDzMWgz5Rz +PM9PuvtRl9f++7DN127NGOpHoZDPjyA10GNhiC+exuMmDwobGjpI0sknlzIKH7RX +syNA1uQ2QnTsXY0V5MkwekoyfqQ/70DtV1H7thxMI9kfs6qdHbn5ZOZbA2C9SGcQ +QN8Z3g== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeNotCritical.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeNotCritical.pem index e95c6004e1..7370257acc 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeNotCritical.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/nsCertTypeNotCritical.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDADCCAeigAwIBAgIUL6bWozyWHnDB63YGv5ND22BbDzUwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDADCCAeigAwIBAgIUEVZmy0TqR7SKw/L3Yo8PV57fHKswDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAiMSAwHgYDVQQDDBduc0NlcnRUeXBlIE5vdCBDcml0aWNhbDCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 @@ -9,11 +9,11 @@ Dw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7 EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C AwEAAaM6MDgwIwYDVR0RBBwwGoIJbG9jYWxob3N0gg0qLmV4YW1wbGUuY29tMBEG -CWCGSAGG+EIBAQQEAwIGQDANBgkqhkiG9w0BAQsFAAOCAQEABLde0vaZNS7yHxN0 -0N1Hs9FBuuHQVJNaohPXDagmrSQLeuRIYO8YF1NGuYnz1AYLKo415iHkSYA0OTiG -vX9Dlb7Tpw0gm0mVg9AmW6BWZw9ot7a4Jwt5k4w/24DzbnhPkENq/psEr8d10Qbl -QK9mzUdbgDxSANrVsx9kZSSCyEzo+RdaI9mlmQ2rxhdKG3Uozb3pQwhltD3hQHtu -3x0nnbzcAVBRMxJBKAYihSvo3cm83PC8hWxFMBu7KnKkjblicyPhTnUK2GQ83U2c -SkwPyZZ3GlvtKQNj56p4pnXN5tF6L24LFYDXXSaFsKdM0I6J67rceXhTF/3+i/Pk -a71sOg== +CWCGSAGG+EIBAQQEAwIGQDANBgkqhkiG9w0BAQsFAAOCAQEAQAz3XW5UdMSY67zO +OxLXxKjHuKpSbGKF6DtD23RithF18wtZZhH6r5pMLwh1kPFmGUsrr4lYsyqU9kM6 +R/ahGWSRg2pt8FKoSgKwTcNYZFsRNFjYpXtotFLgavzypU1tP4ny3Hp2TEBMls+M +I2/BEpAvtRqoIC7ZRExCUBjY3sYL1WURwz2uVhjGhbOK8OzZ7aZil5hZTFV1/XxE +KONiY3UYAKnM1RXyc3jDULekharU7nRifDf9h8noZ6OtZBznjiq4uL672GzqIaGs +XNwzaeV//gy9fyd9pdhu5IQjWmI8ViE+znqQF82f+r1q6T/3CVqvQQ4LT4Gbcygg +FZCxUA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/other-issuer-ee.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/other-issuer-ee.pem index ec9df6fc72..71420ea1cf 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/other-issuer-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/other-issuer-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDfzCCAmegAwIBAgIUX0oTVDgagmioJS1IbrKKfm84FN4wDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAnMSUwIwYDVQQDDBxXcm9uZyBDQSBQaW4gVGVzdCBF +MIIDfzCCAmegAwIBAgIURSX+37ptli31QxC7leeByUT2slEwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAnMSUwIwYDVQQDDBxXcm9uZyBDQSBQaW4gVGVzdCBF bmQtRW50aXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXXGUmYJ n3cIKmeR8bh2w39c5TiwbErNIrHL1G+mWtoq3UHIwkmKxKOzwfYUh/QbaYlBvYCl HDwSAkTFhKTESDMF5ROMAQbPCL6ahidguuai6PNvI8XZgxO53683g0XazlHU1tzS @@ -12,10 +12,10 @@ Lx0eGR1xIWjTuwIDAQABo4GtMIGqMHQGA1UdEQRtMGuCKCouaW5jbHVkZS1zdWJk b21haW5zLnBpbm5pbmcuZXhhbXBsZS5jb22CKCouZXhjbHVkZS1zdWJkb21haW5z LnBpbm5pbmcuZXhhbXBsZS5jb22CFSoucGlubmluZy5leGFtcGxlLmNvbTAyBggr BgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC8w -DQYJKoZIhvcNAQELBQADggEBAD71u+LDqdEPy0G1M+6/griZmjvaZj38P6KdQ27N -4olgH/Emx2YTHHOaQyxF/dClUrWMlHKF2zBqjABC/cw7QfsZD/MnbbeaQU8Wpvrf -aN4tHqE3BYXG6nALXinWGFrWPWC6SsfYtsxe3R3EaMYccEP9YUI2alL+4hdYaFfT -zgJSM6X/oUVW4CS0J26iIWs3qwUn+/w92iHvIgv+PPfXigUHeul6WAgsIuIaKoJa -Psx2PbFUC4rAEfkrjRHV8n4w5JdUuyFk8b+oMsYmhoAAggtYLytVdR1nM4Z9dXRB -BLzF+jAjvKt8GfcZ+FwomgjrFxieJGqMFX8obDGxVOlzLw4= +DQYJKoZIhvcNAQELBQADggEBAB/zgDGX75mQ5kbeQQ0PclyQ0tccl3WNavLJivjt +cNdfUDoub3daSirmYkuPw5B3APK4kqMXc33xgyjTT8HKykI1Vc0Zy6Nz9gBjn0tu +o0fOt5aJyaI8ZjfN9G6uYQxVFc3e8J/Osm2cwK/aOM1mMiHnu289zQs3gMCEcj1e +zu9EQw+05J8DX9sn2dXhJrNSs8dy16HEA5ZVhsmstSPnuF2a9IhZZrwUZA7+XmnO +dFWT0iOMmLodValbowDK9UUk5sWM2Dy39vRb6EaKWN7wpDURG//6CCfb8RjTWKBM +Tj3xgREUMXOO9YFJzpEddbezPzshozzwAvlvtXLH9VoB3us= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/other-test-ca.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/other-test-ca.pem index bf91ef3370..307b9a3f99 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/other-test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/other-test-ca.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC3zCCAcegAwIBAgIUadOFCYMS/nqQ3tCvQzINT8fdE+swDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1PdGhlciB0ZXN0IENBMIIBIjAN +MIIC3zCCAcegAwIBAgIUVTTv5DQM+fh01nnfm3AoUJt4UIYwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1PdGhlciB0ZXN0IENBMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXXGUmYJn3cIKmeR8bh2w39c5Tiw bErNIrHL1G+mWtoq3UHIwkmKxKOzwfYUh/QbaYlBvYClHDwSAkTFhKTESDMF5ROM AQbPCL6ahidguuai6PNvI8XZgxO53683g0XazlHU1tzSpss8xwbrzTBw7JjM5Aql @@ -9,10 +9,10 @@ kdcpWn9xxb5maR0rLf7ISURZC8Wj6kn9k7HXU0BfF3N2mZWGZiVHl+1CaQiICBFC IGmYikP+5Izmh4HdIramnNKDdRMfkysSjOKG+n0lHAYq0n7wFvGHzdVOgys1uJMP dLqQqovHYWckKrH9bWIUDRjEwLjGj8N0hFcyStfehuZVLx0eGR1xIWjTuwIDAQAB ox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOC -AQEAVQ0jqpxJRP/i/DAeTSrRqX3ZuBVLrovjCOW2m9CkGQkFniv7kweUzRFMjujo -q+eV8fZrvvRT915VTCHPzueqjnY7IQ+wON7L6jCZvrDFhgd3RWUoufKgfiHWYNzs -kGJk5b6ZyOv5ehATbwT2dZse7Fbm/gSNBpGlCFFeOpUamNdRWSabQpx+Z62qxsV2 -ie6IwG4dq8XbcNjPaMA9mYu/0Zz1kiIXWIFwMtLB7cQM2+OHp3dsJQFPnnatWsB6 -Q0NOCbOpFqNpuDxANV0O+bFXjIem4yRalFC79BOZU9t20l/92aQVG5YS8cD0Y+sm -6ZA0e8tJzH2QOa2tTXJlr2TZmw== +AQEAMy+B8xwb+Svzm133InPK520eLigMuoI8i37Jk9pdugtr9LcTaKt1Qb7ndt8+ +2wswAX3qFJoqNTjNvHOBsYQd5qglk1cNq21wuh/5gmipnfz/IUr7ixKpvDRZpdtm +gHndYuYTU95EdmFTUziP8DPW36htg78d3rsXuNCM8Zg/bAh9IG/SnYbv4ViCccnv +6RzZFie5vc1uljN7I+c9TDbqZRDd+xUNCsCG5y5FS+yfzFcIgPkJbZBsXwFv6bcK +tnTUgasnNqs2W4/ZGJNnxqY+FyW6w0tFMEXbD6CyIDsMZRs9QXMV0ce1JI8VZ+YG +JD8DX+T7Zw8mh8kgNCBVX3GlkQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/self-signed-EE-with-cA-true.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/self-signed-EE-with-cA-true.pem index b1a4a34dd1..1b3619e381 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/self-signed-EE-with-cA-true.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/self-signed-EE-with-cA-true.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDeTCCAmGgAwIBAgIUCUau/Ejzl5a3gO6Pv6XpR/EA8BEwDQYJKoZIhvcNAQEL +MIIDeTCCAmGgAwIBAgIUYRQ0uDcX4yrqUk5bUtTYxr1h/CowDQYJKoZIhvcNAQEL BQAwMzExMC8GA1UEAwwoVGVzdCBTZWxmLXNpZ25lZCBFbmQtZW50aXR5IHdpdGgg -Q0EgdHJ1ZTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAzMTEw +Q0EgdHJ1ZTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAzMTEw LwYDVQQDDChUZXN0IFNlbGYtc2lnbmVkIEVuZC1lbnRpdHkgd2l0aCBDQSB0cnVl MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2 ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdF @@ -12,10 +12,10 @@ tIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXt jQIDAQABo4GAMH4wDAYDVR0TBAUwAwEB/zAyBggrBgEFBQcBAQQmMCQwIgYIKwYB BQUHMAGGFmh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC8wOgYDVR0RBDMwMYIvc2VsZi1z aWduZWQtZW5kLWVudGl0eS13aXRoLWNBLXRydWUuZXhhbXBsZS5jb20wDQYJKoZI -hvcNAQELBQADggEBAK/zN9mj0fQ9B4Tk6tMTRPZXjOmFgoOMCtn37Ppn4LRpvS6+ -Hic5QvZ/dLgW6mXsU+bFjwq6Cv4uYiNKrUw3KkbDIWwqzpn6uF88PzmAGN22Stff -8rUJ0dNBRfscZwoyyAPRCeIjhotmMbjhG6YsP/yyVC3qRvIObkxsOGXa1po0GzX8 -o5k/CnffN/GR7Ll7J5eJ15WlIBzqaeP3U3oig0vJMoVeRmuwkDadYRfpsAcQxHii -WQid2/9ZtnxroRYgQVBJZbRHR7rgwHN3WKBNO+sNe/s8GEM1LC112WILK/tBunA6 -MKy+7nQzv4CGV0IwPm/BIehxmFf7tBDGlRFVOcs= +hvcNAQELBQADggEBACOLtUse1WufobGnX9wgxaCb7Bhw/FSy0i2SwwQhDkbdP29+ +1nus8ThFE5PK5ZL08vqCyaA+B+m081xBRgnXwM1PjpWKlNX2WrCqF+oieZUQ19Wq +pW+pc6zyBWJkl7BwY7t6Nv1Pv6dZeQ96JLFuEyH8WJVflwqEpRAWw3IrbZvpSM6u +kpBO4tedIQTgbDK5D1kb8ucyTQfXDsUSZ983RnRgQhU6TLwpv6gFLzYq0OhVTOnb +vzMJ0XYoVApsY/UF8evA+0C02DEwLIvK60XxcRBXO6FXwOb5H8payfcK0+vAFo3y +ED+CMCdaZH+97QGQHcoAiBJLOgcraiWp6ztQ/aM= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned-inadequateEKU.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned-inadequateEKU.pem index 3f3cf5a54b..b3727b35c3 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned-inadequateEKU.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned-inadequateEKU.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDhzCCAm+gAwIBAgIUCQlR4zQd9+BNEQVFpI40UtcaQxIwDQYJKoZIhvcNAQEL +MIIDhzCCAm+gAwIBAgIUEZejxS02tCXxPZ21bUifSg8TP8AwDQYJKoZIhvcNAQEL BQAwNTEzMDEGA1UEAwwqU2VsZi1zaWduZWQgSW5hZGVxdWF0ZSBFS1UgVGVzdCBF -bmQtZW50aXR5MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMDUx +bmQtZW50aXR5MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMDUx MzAxBgNVBAMMKlNlbGYtc2lnbmVkIEluYWRlcXVhdGUgRUtVIFRlc3QgRW5kLWVu dGl0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1u togGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6 @@ -12,10 +12,10 @@ Im9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6za GAo17Y0CAwEAAaOBijCBhzALBgNVHQ8EBAMCBDAwEwYDVR0lBAwwCgYIKwYBBQUH AwEwLwYDVR0RBCgwJoIkc2VsZnNpZ25lZC1pbmFkZXF1YXRlRUtVLmV4YW1wbGUu Y29tMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL2xvY2FsaG9z -dDo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEAf1+Sm/kLjte4tnczi/MuFYdkW1NM -u3estfF4HWpO+kgimh9pgwP9uElnGkEunkjOP6hrSbaqUfdCuPbrfi5Ng0oFgC2T -7XYu5+90ghlKcsh5hIvVuHF9T30ZPhY8lLdwugE4R5aSi6Uc0/3HzWxcZiHYjFQC -BoiJl3ofVILPRY3NRJRMQhIG/qzLX/lIeZLCvugHqHo7Dc1WG50//tP7i8JHFJCy -tD79hr8fuUT47xvUBKpi5vHyH5egqIV00TEHBy1C/BmYNyhQLanzJZ4PBEmyBJRn -bA/MqTbmvkV3Qct4tmEggPfEhMWl27Z+s0i+dp+wRmaBcKiKgU1bhv4Cew== +dDo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEArk/+zI4rooikFJGwJgoRcJomUlQR +lyY3bM8GefnPjvSi3KU4Vop73nvtJ2YPfn7kyNoMwpdMeywPg4uIDewWzP4+dShr +5fQpa3GajEOow9HkfwAt0SwXCnXufZEFyfb4XzSmmrafAeCoyOX0+VBv/gTh+mCF +aMkyS3vCrAbqmhVL2Xr8fbnM8BqPsccA2YfbbBIzqUXfsevyzNn/5MxwLr3Q2+pg +fOKeq70ABA3UZjX7moKw7+3GQx2vEKb5Eq7J/hwGf+lvJqCoWSM96HeexSPoyt83 +2q4hHRCHD3c59+eOhH6AsgpwmiN8R9oN/ZYnow/dCZ0kWgbxdqPIng8Eng== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned.pem index 8898c55786..d3c86cb476 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/selfsigned.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDNzCCAh+gAwIBAgIUOdKSlXGtDfzvkldIttHObrveM30wDQYJKoZIhvcNAQEL +MIIDNzCCAh+gAwIBAgIUV7lPFTV3O054/STvRqO+b7v3Ig4wDQYJKoZIhvcNAQEL BQAwJjEkMCIGA1UEAwwbU2VsZi1zaWduZWQgVGVzdCBFbmQtZW50aXR5MCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCYxJDAiBgNVBAMMG1NlbGYt +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCYxJDAiBgNVBAMMG1NlbGYt c2lnbmVkIFRlc3QgRW5kLWVudGl0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72x nAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lM @@ -10,11 +10,11 @@ wmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xx j5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaNZMFcwIQYDVR0RBBowGIIWc2Vs ZnNpZ25lZC5leGFtcGxlLmNvbTAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGG -Fmh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC8wDQYJKoZIhvcNAQELBQADggEBAAGWujgm -cytq8pNLUFneePqHmk6QiePzp3jLPYwwUYLhkSqfUqbQvxZt3QM/kVG4oDXTBVHx -PBa/2/zwv7vappo12ukc0sZ1WHeGtoj4rfoUn393iUCCk/GtdRiO+8bwzbUsovGm -ynRalAazAsx6IiXtfzMOpAJdVmWZyegF1WQuqOknIzbVrZyMnlJrMOJH4h7EVCga -zJ8PMjooJsv5yzkDSEpBgoZFk1kMKQUexGT/ANiGEZuMg/9FVsuL8ZEB0JjgZ5sW -Pwg50B5kHIqbh5qqYO5jd/tIuubrgnA13SveX0O9ByleyqCdQHvfDIgoJ9sq2DsD -uQBXW7q3aubLs74= +Fmh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC8wDQYJKoZIhvcNAQELBQADggEBAB4hCR6E +a5Ycm+zdjEN1QgX+XRM7XPI8ctGu/prKMIa2Em0OqrdX+8jIL3AQwzI0hyPBRK3z +nzam4ENe5n75ktqkHXfQlSRtakqfv0YS7mdvJ4s58YgcLaFfdFepsFT1mbgwwBnv +JmdRBbc7EloI0KyMeIAGNL0NwUEayL1GeVhPPfaLm46reDigO1onP+LzFrz/0E6c +2xD35Lqr2BcypnIUGFLpHdqzMl+57dSlDEFAtdQDguD1GWtop3kCbzcxxeHsis9h +xccbSIBrEd/N2uWQbOtXvO8WjRaB5/dKuiBS7ZSLmcCj2PAKSBe1mqm/6EzboRK5 +EMk9eHKsCNz+pn4= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/test-ca.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/test-ca.pem index 31293e3935..85309686f5 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/test-ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAgIURzyIa5PAntODcZ4AzhgZzl3zjrMwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC0zCCAbugAwIBAgIUbRl0jsaZB1HOw2TSFqJE/hUf4x8wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjASMRAwDgYDVQQDDAdUZXN0IENBMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,11 +8,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRME -BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAsNXVPjJr+as4 -PdX/PpdTdvDW/TZYh43G89gxgG805XHqCDDfksSOM7sc0CbNNkX69FSz3C1Xds2k -Bqn0t4UHaCyQy7a5/vs1qes1T/GP6PscfATNgnrWqU8NyuZWv5Y0vwWKSL3AwFaF -OGJnLGQlIN+4BczHdWFwgUQYj8R1gAXLJWEYtbg3j5lQA8k74DkHYcu8hT0l6UPn -qwuw+nw332pkt4+8p2Hvb9+idEPOFcStkeOHIOSbRihWPHiVl8Jcr9b7m3r2uBL6 -z8vk7+vtf25hgW6oKoq5kBld+ttTSKOk5UvEGjEqyJA3ATnaMxTFXmX8MSugXIy7 -jCpW3BKLzg== +BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAHldkZY/n8EPM +hmKw7mLxMd66agv+HCe46PCv75LkAPh3CS7ovLFuU5C8IJUNMMRT2NXOtXwm/COb +bMPqk/5+jRnBxkCdRCEerIp6tPBmcxci+bGZFdI+Xnq+/4vf9gcISphlrfCukbve +7t/WNPIXMfu4yZnkMdQsoYWi2dE02GZNuaGj1oHTdWVgN/nRWtCo/cApupRN77GV +nN1uE1fB07PQU75meGwsQOu6HMgVz2kQD9nZhfaisSJlGElYUGZmE2ySPr+OhTmT +zHFD2cq6WQGCyWCH8cZY2a5pylOsG4auHwKCgbdSELMnIkUtWtmjGa6/2duQKOcr +XHn6ZozclA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/test-int.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/test-int.pem index c0b2c4dd2c..eef3f4c890 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/test-int.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/test-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC3TCCAcWgAwIBAgIUZSuNTV5Ngi1A5RSkCkCRd6fZ3sMwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC3TCCAcWgAwIBAgIUAxPrsRjtbFinLUfRzhtR8EeYh4YwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAcMRowGAYDVQQDDBFUZXN0IEludGVybWVkaWF0ZTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1 SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+ @@ -9,10 +9,10 @@ K7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwc bJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibW JZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMd MBswDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEB -ACiwENDmwgh2KUyvuhRtLaBhfyRfd5IaAjuBcIjexHYqNQYbfdiYJfZTFicRY6Iw -17Zt97wsni6WE11A3u/Octw517NF6VD8vucyQAlxeSYYMK0DLw0eAncet3xzwFHw -PbtAZIQcvm4GG/nR/9Qjf+qRTfxxKvDKH4V9kh+j5HUyuSPFMvTz4nGXVCeO1BM4 -tlyhSKtGEqeklNOgevwBSt1Mt5CLjGQmuOHR1SM7ptNgn7lxFSX37dbAECTX/N85 -CDbGXKLyJQwlrIGrvfGCk3/ikFRthLb78vR5hSfLt7gaUS6Md0kO56t9eYBEFuDD -oggDVHOeEY6xYgm19nLcwqA= +AKMLQxpBsyCNjuzQZY6Y8dJVzmNwfa0mvzDCLI6ltjK3X4pzz7tCb+hXH+Z3lhf+ +t5N4eSMnXgobxb3tya8/2c+3kp6oxx+BwyvvA7zLPrTgHed8/G8z9tpZJrJxTcOB +83fDkvTE9/49KIffeSF7I/IedybWjqO93IZMqVVB5xfbD3WoYCe6SipiUqvVB3oy +4PBC5ONA1ZFGwqj7/6vgmgHukWIc6GogczKdLIR/Wu5laV8Wug+xP/GUUcuAOIuY +hk6WMVRikq8g+wf2FG0i0NcGDOAK0Z/1nFvKpIJomZ8Q9NYVs0tfhoSLPwtd7cDT +XYDC9Gn4ncbAQIRIAnNm2Ew= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/unknownissuer.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/unknownissuer.pem index 875f7d79d1..fe14052faa 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/unknownissuer.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/unknownissuer.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDqTCCApGgAwIBAgIUIa9vyIoMaRfpVm57/+RW2KAGzKAwDQYJKoZIhvcNAQEL +MIIDqTCCApGgAwIBAgIUQX4FWRfcwSlZKcAV91vnlTfL410wDQYJKoZIhvcNAQEL BQAwJjEkMCIGA1UEAwwbVGVzdCBJbnRlcm1lZGlhdGUgdG8gZGVsZXRlMCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMC4xLDAqBgNVBAMMI1Rlc3Qg +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMC4xLDAqBgNVBAMMI1Rlc3Qg RW5kLWVudGl0eSBmcm9tIHVua25vd24gaXNzdWVyMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -13,10 +13,10 @@ HREEgYAwfoIZdW5rbm93bmlzc3Vlci5leGFtcGxlLmNvbYI0dW5rbm93bmlzc3Vl ci5pbmNsdWRlLXN1YmRvbWFpbnMucGlubmluZy5leGFtcGxlLmNvbYIrdW5rbm93 bmlzc3Vlci50ZXN0LW1vZGUucGlubmluZy5leGFtcGxlLmNvbTAyBggrBgEFBQcB AQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC8wDQYJKoZI -hvcNAQELBQADggEBAAr+lF3syd2PTBu8XORlZlYxXNcV0jvF2gQCxAAZKWPpA+4Z -Gimm2E/TfOGUW0yGwjOvMKAgesej4meBHr62hdB8mYQc+kEGp6tQ1c3HgY92Mnpc -3RIiIdft2CM/eMdqIs0OpZU6/vp7NQrDvX+pZ+Z7fF9qZQNwEsVH/8zwMK+kowWV -97DDzJ85iA4SH7PW5UlgAxrm0KuJS7G6Ps0oVpzVDOw/enNp1jvRNK1XqMSRzdw1 -/2aDo308VlCxN2cJBYXCjhmLL0l5LzYT+YkOcUg1gpCZqR8vHwo4p8FMt8h0ixiv -6CiOGXCvKDsa/ETUV4JZ3fNTAYscNphw54D0k5s= +hvcNAQELBQADggEBAK6AC+4Uk0l2Cmj1xNWtjUNxjZ0O4YvoFpqHPum9W/EYmHsH +gwLIbG/dFWz03IVACpD2nk+At1ANtpMKiVEiX+0Bk3gxw4MTlMFegdVj8oHu8nOr +aEq1k+YtBrEWvL4p9dA8jBCVNbU+Sy6bQj62Bv4q0J2FT8+JjOuHlXeTZvsNgNsu +4IpWfXJJ4XzDSp3VNzJ6itBwKZWJfmYU6nbGIY1Wf5qieqZfkgHPdB3A8C7S2sBH +MlYxZQLCiCOVW+NIohNj9NdGJqZW4SoUDWVLt8TlrHTSSBbdp3WDBoWOJ1bM65nX +KZadpk/9pVm2CJwGuEDCH28rJX/DpNZJDnfff50= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/untrustedissuer.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/untrustedissuer.pem index 68e4e5003c..0bcc7bbd15 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/untrustedissuer.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/untrustedissuer.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIUVwztirDB2Dtp9jIHGK0in4CT+5AwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVUZXN0IEVuZC1lbnRpdHkgd2l0 +MIIDODCCAiCgAwIBAgIUTbC0auUo/GHmVeH8Hr0sltbfuqcwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVUZXN0IEVuZC1lbnRpdHkgd2l0 aCB1bnRydXN0ZWQgaXNzdWVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptu Gobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO @@ -10,11 +10,11 @@ qDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/yt HSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcx uLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo14wXDAmBgNVHREEHzAdght1bnRydXN0 ZWRpc3N1ZXIuZXhhbXBsZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAB -hhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQAvLQ1s -VkGYFwwdJMH7jyGFutYwGe36u41mf0coJxVKzg1b5vJMoK40p1W9Xdy0aSPQiC8D -WQTD0uVxdo3Uu20J8KAP6EYjAaHViSE33N/BetBIBcj8h1LIYHhA6j5Q/9cGd8tC -wY3baKAtxS1pDiPCrh/w7OfHVNOia1AfSr3NOccljrL7WicBVGVzFMDOFlHJx7io -aVYeURxi6/v0B36IiKfQE+kFNs67H9P7ZDHnnNk7bAFaxFtMqzk0awykj6a5tNop -ngUwMbrCiCgvkx7WCG8NLXDoPo4TDKhJgzchTEq1yXM0AO8ZGcKCnR0Zik3Lgvlc -xIwgU6Hgh7Xw0Pfp +hhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQAica7q +5TJbAHE5FvB3h86A4T4ElbocVi0Ed3aoMRNkA1fV3rqbmBusKs3yAbKKrGbJdlLs +kFnOCy+Ge64wtWf4lG7tdf7rSvFRqz9mHK0M7psrrPhumXt3X+koF/y1xPchtM0L +WJ5Nx3eo5/tG5GpAYdpIt8/Do3FIgZBh05/VAEYrvw6TnI4PqxAduuVBhb9zeJTb +RF7H/+4Eayj6qryLzRaXGlh1UfizW+LTBhcxd/PKBi2o2WIycjvZmSrXcSShJL4D +nHNJFF2+y4VBKsguukuGoRWZtTfU14v0iH6BMlvdpku7x7C0NCRWeQOyzs3HFIes +l2khpqQR33UyP8nx -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/bad_certs/v1Cert.pem b/icecat/security/manager/ssl/tests/unit/bad_certs/v1Cert.pem index 3d02510b5f..e056b93fb3 100644 --- a/icecat/security/manager/ssl/tests/unit/bad_certs/v1Cert.pem +++ b/icecat/security/manager/ssl/tests/unit/bad_certs/v1Cert.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICrzCCAZcCFHsbhnOaXN1xZls0EpqO8EFYx7eRMA0GCSqGSIb3DQEBCwUAMBIx -EDAOBgNVBAMMB1Rlc3QgQ0EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICrzCCAZcCFFFrJKryf1YTX8OLXKcAg6juyq2gMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB1Rlc3QgQ0EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEjEQMA4GA1UEAwwHVjEgQ2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODY H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk @@ -8,10 +8,10 @@ H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk 0jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMM kd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaL L+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsFAAOC -AQEAegvduifyu7WXpSpj9L2mdcaPPmuUeyzktsD+VtpZzNBYlMjw41eN/e0RWXNQ -E0UZcFk/8aFkuDVtEa0cNhzjVF0yvc/Rfg1bI0EX6JtttAlufcKqs8cUK1hm/9B0 -z0dw8xYeZLQpZY0BE9qczSdiNc34pSA11TA09l91mxP3+xuzUvJURtl5rfH1fGcq -OBhflysX7NXZtCGxwFzYfgrEk4mqqCbof9fSIW7sPtbZvJLIERP60eEH1ll4blMm -Jz2Y6u0wAdZMON9YWyCD7pma8HllLHY6GJOxdKA/7K4QqeWKaB4yz9OcErQ4oFmJ -0RAK8FIEouzsxnqaramc/FkCOg== +AQEAbOA+XwYWXrKpGtZaKwDRD8RI420JgP1qNmm5R7se1j4ycMWec4abaOyaVaPB +j3Wy5GjgF25NQGEm/RYArotwhE911wpcuDB/7nyq4epj16WTqnIPIY33QIEt9Yws +yzPWJLJUBemZO538WvgAaTKcEGnVe727FbfPLqWQp3584UmuVwaMYAo4LRTAUPeD +rGF5U1xdG9QYgzAU6MAIx+QsKZ80lDq9GgaXNWzDpvDRlmobq5+/DrGetl964fIi +/NIyKMJ9Z6wOJbQ4Pe/mr252xi/yb8cIjb7GdtNhLxJfo/uGwD/IBjgAiDleNXnk +PsHeOCNCaosyPFrlD+V7K3msmw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/ca-used-as-end-entity.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/ca-used-as-end-entity.pem index 3311c28d44..4b8c0a1efb 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/ca-used-as-end-entity.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/ca-used-as-end-entity.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDRTCCAi2gAwIBAgIUaffKwBtqKksYnVjmLH5raoSeeykwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDRTCCAi2gAwIBAgIUXc7Qiyqchj8mBbA7A1lSzlXZzP8wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAvMS0wKwYDVQQDDCRUZXN0IEludGVybWVkaWF0ZSB1c2VkIGFz IEVuZC1FbnRpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a @@ -11,10 +11,10 @@ Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjcjBwMAwGA1UdEwQFMAMBAf8wMgYIKwYBBQUHAQEE JjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMCwGA1UdEQQl MCOCIWNhLXVzZWQtYXMtZW5kLWVudGl0eS5leGFtcGxlLmNvbTANBgkqhkiG9w0B -AQsFAAOCAQEAKMyLvuNWYDfaXHEzuevnzBpZnEawwy/kPO9WyHydlKh+uXkcWJvx -SRmBa5JPbIozIQ103dWjCOVqJJpXtxZ2JUAUSgiel++gaYayNwFX19hazPoGcwNE -yQhUWr0nWGWLu4/E5eqLfQNoGDv76zk05iPHH5Xd2DIY0PB/acyml6stWmSzQPme -Ycs+lIxn0ywLBFafnjZv3oKzX7WAEb8kCTpRSwtVWP2H4l2zVyVs8UpnHrKU+PyV -MUxZWt2Kb8bOtoG2KTCC+wDoGfbQFAz6mKrl65t22TAoBZ8dL6zv7it08vll5IwS -I7NnorCVYpx6wiXfRVi2xnIBziyYGX96vw== +AQsFAAOCAQEAoSnbAsXcC4pGa9+E6bqLQ1f0nfw+VVr9ALTKMCIE7SKnozY4wwRU +9kL7Q/N+Uh7wFdD3evK0B4VZaDEeQWPnoc+gk+0AfgQyXKIa+uIhFkB7ZjdZleAz +K9AU+J65f7fjNI9mbwglRXvaEX5z/8LifjwkImFtr60NACus/2aF9d24ipVFb4Qz +ACBQUwpaXo8rktfrK+mDsW6LkQu7UymSNcrjgTDW1FmWqQCwILdsifr/1vG+q+2b +cAsYWth70GnFQzr7nBGW9tSHJR5Vam18RW/EtqYVFVDoU3YnOcwRfS9rPtGyoKYL +SWA5IY4tTDCeT/smF09NrRAZceuAnq7pew== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/default-ee.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/default-ee.pem index 59a8e992ee..3ea8610041 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/default-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDiTCCAnGgAwIBAgIUdYXDu3hW/Iu4CxcN3TvEwaRVzY4wDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDiTCCAnGgAwIBAgIUHawh1VjXAIDCge7OJCxPJVTlw+swDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9UZXN0IEVuZC1lbnRpdHkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D @@ -12,10 +12,10 @@ gccwgZAGA1UdEQSBiDCBhYIJbG9jYWxob3N0gg0qLmV4YW1wbGUuY29tghUqLnBp bm5pbmcuZXhhbXBsZS5jb22CKCouaW5jbHVkZS1zdWJkb21haW5zLnBpbm5pbmcu ZXhhbXBsZS5jb22CKCouZXhjbHVkZS1zdWJkb21haW5zLnBpbm5pbmcuZXhhbXBs ZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxo -b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBCI3rJYgO98nOqQtwpJWJXTsiI -QHtWuP+IwVNr7gKPavy18qcgMkgLufCc7EEP3/I1UKcRjhoNawEWG5SFWs2xDDKm -dJrLBdBqxIF5YAkA/qx2Po4XTh8P9codzaPU+rJ2PGhHZRPCB6D9sIloUGXUKAvq -RRkGE1RTKojUxO4Xu5xQbVPGpKTx72hKLRl0FtvqKbZMV6MQFwbTiEeQx8B/KpI3 -OnxQ3roD+UaMYSvHGrcod983Yw4fqCCZKzNbdiqwJFylULqYrKXbH/RU71qeStXt -Co04Zo96avbIjDTT2etQHy3vYF3Rq77fBScw4KI1Ak2CvbD04jcCoUQgZrzM +b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBU6uKb5khzoLGqg2P5Vt1dsD4x +w3OeEWQH6YFB/MzIAeq/zKPNUsN6icxHVWiJbA5bAYYmJLcOKcfsfDi02+cJSS0w +Pj5zJmSLDRPbvlN5XGlKVRdG9au6elW6axvMtYpH08nSVcmEQxGbUJu+KGQdDBsL +XmRqydFMQWd8MqWnZCukHUnCfzbzjNtqW0BuFwUTU7nFn0qbm5wZZlS6GTbiR7d5 +l+XzcTDdiva2hnLzuK/riwgBu8A3Rfzw67SjdhSxioEqEA8iWYd72YjXp7n2/izY +FArJq3NG4RyxWpNt4DtyOLLY02B8JNG269qmyMpmIXrAsjgGbEgQ5NsheWx8 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSHA1Signer.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSHA1Signer.pem index 433b50d4af..656c4bec3d 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSHA1Signer.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSHA1Signer.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4zCCAcugAwIBAgIUCYRcWFNewDt793rSrSsxBx3udaAwDQYJKoZIhvcNAQEF -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC4zCCAcugAwIBAgIUZafzPq3a3ZsjvGiHt7nzwEo8JZAwDQYJKoZIhvcNAQEF +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAoMSYwJAYDVQQDDB1UZXN0IFNIQTEgRGVsZWdhdGVkIFJlc3Bv bmRlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMF1xlJmCZ93CCpn kfG4dsN/XOU4sGxKzSKxy9RvplraKt1ByMJJisSjs8H2FIf0G2mJQb2ApRw8EgJE @@ -9,10 +9,10 @@ xYSkxEgzBeUTjAEGzwi+moYnYLrmoujzbyPF2YMTud+vN4NF2s5R1Nbc0qbLPMcG R5ftQmkIiAgRQiBpmIpD/uSM5oeB3SK2ppzSg3UTH5MrEozihvp9JRwGKtJ+8Bbx h83VToMrNbiTD3S6kKqLx2FnJCqx/W1iFA0YxMC4xo/DdIRXMkrX3obmVS8dHhkd cSFo07sCAwEAAaMXMBUwEwYDVR0lBAwwCgYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF -BQADggEBAGntv00saq9hfUF7NQT/KYkpaEoI75cwhSIXuAA6YWSLnz1MDxIZpYAe -b266yxf3a6LRpEy+aF7q7Fb6ONS8cUtvGb4d9HjI30tUKAZXxCIMuoisqHlwn9LJ -UcjQlmMAEmd93CsQ16Roe0E61m+48/hTJi7Fxx6aJOucbVuKo0Mt5iwkB9VLKAB/ -IlSnf0rWuMYv03WSA6P+K91GbSomMXxs4owyBW3VDgflr3QguGz5t1kv4KYveFPX -hqlof9a7I1LZzGloODDMHUlzPnztklARUzQ5fFC5h5W2DnJPFivAbklsiQou9kcN -l8/Cq2+mDLmEn5WsjhbCnbCYjmBlEmA= +BQADggEBAJ7uOQS4fqIKCBR1ycMp2mrO2V/a6xwzgfvfTuRlXxoawJsrZg3v5UTj +DaXAtFpUoPsM77J5SgSvFKzyIFVk1AhmMPd5sla615zRgyyK2fYhqhVBjnZHdX5w +Nt8Qu0ikNVfH2kXIrNpfRP0R6T5FGZvX6RzP9I9hWFe4BIenaLbpN6UxwUxVyzqe +iARJ6J1SAsAP+ETXespqcmAvtAqK1tw1UyQ1XVuLhQoJRQGSSJzpYzY4/iOCOR0O +6RVJd15uTwVH0lI938EH9N2EWcYrAfU9Osb4mpsBDTMeTUjjPJUbw6dRRWhMlCfj +lyy7o3CduXQ/WLI9qdp22AXdLigz8xg= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSigner.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSigner.pem index e38d49948f..a60323a32e 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSigner.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/delegatedSigner.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC3jCCAcagAwIBAgIUIQhTnARhmBRIZEiC19gOoj5qzFkwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC3jCCAcagAwIBAgIUHcC1MbJaYqNf8Bonld7P4CtVfdgwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAjMSEwHwYDVQQDDBhUZXN0IERlbGVnYXRlZCBSZXNwb25kZXIw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBdcZSZgmfdwgqZ5HxuHbD f1zlOLBsSs0iscvUb6Za2irdQcjCSYrEo7PB9hSH9BtpiUG9gKUcPBICRMWEpMRI @@ -9,10 +9,10 @@ mMzkCqWR1ylaf3HFvmZpHSst/shJRFkLxaPqSf2TsddTQF8Xc3aZlYZmJUeX7UJp CIgIEUIgaZiKQ/7kjOaHgd0itqac0oN1Ex+TKxKM4ob6fSUcBirSfvAW8YfN1U6D KzW4kw90upCqi8dhZyQqsf1tYhQNGMTAuMaPw3SEVzJK196G5lUvHR4ZHXEhaNO7 AgMBAAGjFzAVMBMGA1UdJQQMMAoGCCsGAQUFBwMJMA0GCSqGSIb3DQEBCwUAA4IB -AQBpVRuidxJjZyN4S8rTirmKRz46UmRqnqlBH2+M+EZ0bzgr525+Bsf/v+m/vxGv -UG9yEr2jR3CPzL3IypuiaI662GkOkxGn3WyljqM6Gv/68HVRS4yhpz3M9I4gSdLF -2l5xawI9c3dEsKODuSKnul/I1BlZ76vrsIIl+/z3Wr9rpUUZFXoN/ETF2Okkv04L -tNcYZLeXqc7Ss5QXdUwy2G8eocRLCjfNOpIhVFjQmxVLOb1eaqgLjKet2gdJpLig -Rk0Q4N/rxgI9/lAlUaRbp3y/y1rOA05ugef2RRY6cG8cek4v4B3gXvUtW0Zz3U1I -wy5O6MvcWuNsvDm1LwKr7MMG +AQBMJc6NImx6XmgpZ9NxJvTyAf4CLjWvwQb9BXHiBoC1fmhEcywrwBKcP5kyoxIk +E1EwmKRR5yQzvZvWjmXJoEaVJ9JmXf2OmXWuhq+lSTpORz0SKkp0HAwLRYXLcGeQ +23e0krvU79GCPCmTAZg1uzq+n8s/CrC6vIX/lBvOCKanhMFd9Yu7nyzP5zan/zJH +bIqG4p+9e3se2ug0F2s9E+VNmkyH37jmb1YGu0CQg3VLYHbV0sK6yEn/Qs560JMn +aZf6GLsGRTO+W+NFzLHSltLZqFwtAiZRmwPIzYfmpRyVUAI/p6LrxoN6flqsKFP+ +RxH9MvoD25xaXpVa5rO9nDHU -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerFromIntermediate.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerFromIntermediate.pem index 0b78d972a4..ecc57e8b5a 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerFromIntermediate.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerFromIntermediate.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDAjCCAeqgAwIBAgIUe6ZR9MvnOspsjyMDVZoSh97tVOYwDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowPTE7MDkGA1UEAwwyVGVzdCBJbnZhbGlkIERl +MIIDAjCCAeqgAwIBAgIUK3dEPS9nAAOXd+HOnpbe3C8HoekwDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowPTE7MDkGA1UEAwwyVGVzdCBJbnZhbGlkIERl bGVnYXRlZCBSZXNwb25kZXIgRnJvbSBJbnRlcm1lZGlhdGUwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDBdcZSZgmfdwgqZ5HxuHbDf1zlOLBsSs0iscvU b6Za2irdQcjCSYrEo7PB9hSH9BtpiUG9gKUcPBICRMWEpMRIMwXlE4wBBs8IvpqG @@ -9,11 +9,11 @@ J2C65qLo828jxdmDE7nfrzeDRdrOUdTW3NKmyzzHBuvNMHDsmMzkCqWR1ylaf3HF vmZpHSst/shJRFkLxaPqSf2TsddTQF8Xc3aZlYZmJUeX7UJpCIgIEUIgaZiKQ/7k jOaHgd0itqac0oN1Ex+TKxKM4ob6fSUcBirSfvAW8YfN1U6DKzW4kw90upCqi8dh ZyQqsf1tYhQNGMTAuMaPw3SEVzJK196G5lUvHR4ZHXEhaNO7AgMBAAGjFzAVMBMG -A1UdJQQMMAoGCCsGAQUFBwMJMA0GCSqGSIb3DQEBCwUAA4IBAQBthF5ucLdp18A0 -X2j2jRxlIH4HdypgARcIWjCtRD7jgs9ncK5ZuoDw38oIsXKJQtQogTRCuF6VablG -a8Em/nHbj4Ppa9yPwVaWftc301Sw03AC6yfDeidXdClhZdU6lsqBswqEZPvFG6uA -Ne/LeeEbjayf0JQQTzIDc/3NuQA+TgDy9vi5l6LCwCT7LfaBQ+1VUS/oRBe5onHO -F528Yt40egLbYkELavkSeJh5AJ5iZVmqQ0S0ApUX5XPGhBSCTXcCTwcq50fiu7rk -o2ds2iT6L+dP4R1AFlva0btdYcwVDMpkvll0C708wfJHzz/cemmUieKdEmvKNvnt -+dqUjYh6 +A1UdJQQMMAoGCCsGAQUFBwMJMA0GCSqGSIb3DQEBCwUAA4IBAQCjM3rKJS1pqYWR +xy8TXEyYlbYNYogEczENtWFcLAtULU+cbVSUA3UiEUUcvSWx3JSMoL4Z7qRPy7J3 +6zi1cAIruRco7xDne/TGu5mhMPQS5m1RvAH2SmjJ6NX/8pznH7gv4p9G7cuMkujU +aI3FgdguvBD6qmLTD+pROOj5g2bLpnk4PCTd7vu0BAI3ZNrAU3xyMmcCrRkLbDFc +PXMKtmNZ+iuNzauf2fwD4roKrJbLqnPmZdW8Ji+Pbm1iKAzgIYzVspHLdvtUFtJH +cSKg53GHaVwE0Z81BOWOrUwvO098gqgON4FNabUd5lt7y2gx+sBaju96fzBovZxp +DRFdajZ4 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerKeyUsageCrlSigning.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerKeyUsageCrlSigning.pem index 401727d227..6ee587340e 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerKeyUsageCrlSigning.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerKeyUsageCrlSigning.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC8jCCAdqgAwIBAgIULeEoA1ugfBhp8Ftgc92OGFta/+AwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC8jCCAdqgAwIBAgIUa3mtbypAu2M/P+yD/Yi23+9ZtYAwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjA/MT0wOwYDVQQDDDRUZXN0IEludmFsaWQgRGVsZWdhdGVkIFJl c3BvbmRlciBrZXlVc2FnZSBjcmxTaWduaW5nMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAwXXGUmYJn3cIKmeR8bh2w39c5TiwbErNIrHL1G+mWtoq3UHI @@ -9,10 +9,10 @@ I8XZgxO53683g0XazlHU1tzSpss8xwbrzTBw7JjM5AqlkdcpWn9xxb5maR0rLf7I SURZC8Wj6kn9k7HXU0BfF3N2mZWGZiVHl+1CaQiICBFCIGmYikP+5Izmh4HdIram nNKDdRMfkysSjOKG+n0lHAYq0n7wFvGHzdVOgys1uJMPdLqQqovHYWckKrH9bWIU DRjEwLjGj8N0hFcyStfehuZVLx0eGR1xIWjTuwIDAQABow8wDTALBgNVHQ8EBAMC -AQIwDQYJKoZIhvcNAQELBQADggEBAAhbb97nuG6Os1DP1x2DKhuLjeQ4xzWb+zG6 -GWIj4zrXK1p9kICDdMruqFPCztnJpoblwomTSM1mBK+ecwkQA8ustjsujrxOvIky -q3laKXXKgxZC4tCLRN5a+mYq1dKJBhClh9QXv8wVyIyN80Utgc9jJp7l680CLmUC -PI8YJn3KE41FulXCrIUDl7itpWF9ktxm8sqQVXRTCdZb3NM7GulyKtxWqwzjlxHa -lkL10ppTtuJocz5a3YC7jI+Pi0QKJ1ZeZ7jPEq247gJ6RclmAqFm9nSGOxjOOiVj -fWYAhuiujKSlb0upiD8W9J4Bo5LSL9j9k4tJnIxDQY3wTDmiulQ= +AQIwDQYJKoZIhvcNAQELBQADggEBAKEist4af5KOa537UYJ4lEc1aI6Rm2PqWAoh +JPLZ6h5SRvxTPKQvOBlavAVupzETDxWbfAcCZS/5U++xr756ZTevH93Ar/8g6skL +dVXBB5eosZjKPWfFaULQCCwdwY3i9hLgCrU4eESDSj+9a0WqrSfi3D6oiCXN7aMp +WD2PhD0CQUrE1pMhKPHYmjBgTK6IwakdtXGYpfB8OYU+Y2R/hg2Lv9rtkn+gEz7+ +sQxSLMKT8OxKScf7RKRzS5DLS0xfWLF2myv2OPuDxhOWuor6tM8fYCSi7DhlKFft +G2LJK9iQ3mHZp3MaO5hmWKzqQ0fpua9oqUEOO/pXbF2qr2GQk5Q= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerNoExtKeyUsage.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerNoExtKeyUsage.pem index 3a3ecea295..4146b71886 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerNoExtKeyUsage.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerNoExtKeyUsage.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC3DCCAcSgAwIBAgIUQfeK78k5nSceW+h1wnGC61ecvFUwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC3DCCAcSgAwIBAgIUI+c71E4dlplHLjkG69nMcLCKi7kwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjA6MTgwNgYDVQQDDC9UZXN0IEludmFsaWQgRGVsZWdhdGVkIFJl c3BvbmRlciBObyBleHRLZXlVc2FnZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMF1xlJmCZ93CCpnkfG4dsN/XOU4sGxKzSKxy9RvplraKt1ByMJJisSj @@ -9,10 +9,10 @@ ud+vN4NF2s5R1Nbc0qbLPMcG680wcOyYzOQKpZHXKVp/ccW+ZmkdKy3+yElEWQvF o+pJ/ZOx11NAXxdzdpmVhmYlR5ftQmkIiAgRQiBpmIpD/uSM5oeB3SK2ppzSg3UT H5MrEozihvp9JRwGKtJ+8Bbxh83VToMrNbiTD3S6kKqLx2FnJCqx/W1iFA0YxMC4 xo/DdIRXMkrX3obmVS8dHhkdcSFo07sCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA -t6M4tb/TtbhAEOdiOSH4/qiKB5eSTzPthBMSsWMvwrUKTv2D5sO72WvUy0zuDPbN -2t+CwyHrtIUZ6QRRwB4rUVHu3PfAZ0QqaqYXVc98V6bqB/VNnaOKq4RgeKUHHFoy -9MgKyXHifGpETy981Qq8vlRuOKQw2N/iZoExP/zGczn+Jmq6PR4pv/fCjk6IFmqf -6pABqqL4QIfsv8wCFkn1LiPp6p2nCviYyeNrZne5zONd/lspVqVkUCEqYuYK4S7D -4rgWYiOwgAxMw8rPUm3Xceb2gTIpAQa324VKt3QVwydBo/q2uNgHr+nLiA1KDT7a -AYxhoEBzHUIOSK4OIklPxA== +mU/kjj/s/6fCfH7XqNteHodxKW/MohEEM3LkI7NroOvlmMzYMRJoO2k6Zwg3Dl6F +QGKuvnaOkGFSf+Qe5Qcm2Gj3d/W8EoICpu9sEpwdNhoeNafyVmo2lWhRfSgX0rYf +/yXDLR/9tLMeS5mlW1qh5J4DZey/9F49Q6QarRwrCoFFurxv52HEk3564DsA9H7i +p/Bn+QrdEX9kN/4UhZkoZGe5XtpuKKa/0HwmiplbjiBdpPVcV8wbK3KuukxryqIP +0aeNfZmI8sbzO7A9ny1EXluxEmBTeuAAITi0PJlIsIC5ngAqfbibylrvcy0QIF/R +nwzuDbTXG1Q0T4oR9UbxtA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerWrongExtKeyUsage.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerWrongExtKeyUsage.pem index f9774936ff..a9513483f8 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerWrongExtKeyUsage.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/invalidDelegatedSignerWrongExtKeyUsage.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC+DCCAeCgAwIBAgIUd3EucXbegYguaZrU6eCskT5WGkYwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC+DCCAeCgAwIBAgIULZyCigzuMnMkfHAiaEotHhGx60cwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjA9MTswOQYDVQQDDDJUZXN0IEludmFsaWQgRGVsZWdhdGVkIFJl c3BvbmRlciBXcm9uZyBleHRLZXlVc2FnZTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMF1xlJmCZ93CCpnkfG4dsN/XOU4sGxKzSKxy9RvplraKt1ByMJJ @@ -9,10 +9,10 @@ isSjs8H2FIf0G2mJQb2ApRw8EgJExYSkxEgzBeUTjAEGzwi+moYnYLrmoujzbyPF WQvFo+pJ/ZOx11NAXxdzdpmVhmYlR5ftQmkIiAgRQiBpmIpD/uSM5oeB3SK2ppzS g3UTH5MrEozihvp9JRwGKtJ+8Bbxh83VToMrNbiTD3S6kKqLx2FnJCqx/W1iFA0Y xMC4xo/DdIRXMkrX3obmVS8dHhkdcSFo07sCAwEAAaMXMBUwEwYDVR0lBAwwCgYI -KwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggEBABFusEy3rjteyBxYXy4oub0IS4bT -aSFNhtC3VjcszEUpK/C1Gp40zew4t0dHHbBZTerkCe/Ktdy+Ebep+eewmFIo0CP+ -g0rAEqg+owvwSzQXf340dQEb/ewpFrYukD+W7sqWtv3RD3gINDkeayaoaM3NDyKd -hH/zGqPiyOMbQkdhogdluT4ggP8ptzwA4L0ckx3E306DREwZo9B4vu8d7groouF2 -gAhxdavH85drgeLxFPBcvGEYAZ+LjFijFoKgEAieROzK8xwPw+yR/h2y1nxQi4a8 -kfY2jzOs24oABW3l3j86hrRj2i0PEFFMySuH/K19ykOJDdJoNWQXA2ipUKI= +KwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggEBAHy9+9ksa3bJLzAOvJq69ZaqOSyz +TgvxI17rqBDwPJrFl8yKAKFKlRU8A+mjCTrpbbOYZsLopshLp8TdnFtCn8cvLW4j +p8EXZ7Ht0AiPCAGDCvNKR+i5IWI0zf7CHCuLW91itW1NN1zVNCSGDSAgNzejz1im +n0hU/hqJyihiCdWOMVZZzP3at3jQSOgOrbN0sX+ObdO4vkR4TIhWnQMSy/ZoqtJ6 +38LPnjDNosi+Tvr98WkDLrMgSx+tWMeENV0PWFjyKMi8u4m+pm2eas08jBr5P3bD +OzuM1PKUeCKL2uvYd9frUygAszExdfu4QviyFM+qhVX4R9N3MckYyqsPt2s= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-bad-ee.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-bad-ee.pem index 8e39ee3bf0..b263b2d159 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-bad-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-bad-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDJDCCAgygAwIBAgIUO0WKv8VNsRSwm8Oxonvf+ehX3SkwDQYJKoZIhvcNAQEL +MIIDJDCCAgygAwIBAgIUKduwjEENtIQ288hw5sioyFpjEp0wDQYJKoZIhvcNAQEL BQAwNzE1MDMGA1UEAwwsVGVzdCBJbnRlcm1lZGlhdGUgV2l0aCBNdWx0aXBsZSBU -TFMgRmVhdHVyZXMwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFow +TFMgRmVhdHVyZXMwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFow LDEqMCgGA1UEAwwhTXVsdGkgVExTIEZlYXR1cmUgVGVzdCBFbmQtRW50aXR5MIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08 E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc @@ -10,10 +10,10 @@ DY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQ gAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqV YR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQID AQABoy8wLTAYBgNVHREEETAPgg0qLmV4YW1wbGUuY29tMBEGCCsGAQUFBwEYBAUw -AwIBBTANBgkqhkiG9w0BAQsFAAOCAQEATQYY2j2qQdEvdnhwRxGdQ5ECil9xb41P -GDCiY+MEuJOIWC+G0Ki/t+j1G6GJDUYG3ApXg3NSZPn5KqLn617+COEUtWZKa2cq -IQ6ZsK0KPSF8S0rg6jB74LaV5M6nQyRPcL7QDvSxTflgtqZkmymidYb0pS5YOrng -ujx7uXmjxxiFAnt+xY1reA9wM3yOg5fXVhb7EXIJm2j3vQd1n98qBxl8iSU452U9 -UJaP7hlFoke+xTuBe1DdtN1H/0Dkgw+rgm0gYmzXtR/EV7tClN+6AgnxzDZZUFxO -hkXQLh4vHHfSrfNXcmbAfi/sqjs8iJN/FLbh7e+OubjNGR0zo8ukoA== +AwIBBTANBgkqhkiG9w0BAQsFAAOCAQEAMFu2j9JEOXic9jjPn+qURJbG2nkuphcp +e0rcHU0gpDkisp5q9q/ds5TFAolXoAErT6x0JQ66tKQTuCn281Azv6H6z6Z1FCvN +ncQ6Z0iUbiCgXo4pJt7ljfXrzmOCZ2blcX8fip5mWwqn9R5dMm+JPSwTG9Z0puAf +Yqu7PexbfkP7CfUGqI1LQrK8EwjATZLgQY09FIrGBdS97PwqLYO+Ifw3jfvVvLqr +uvLldrWpjDf2SarCWPKUc/E8XYffceHbZCHx6eLk77zmBqJwyW7ppnnufqw5ANg9 +qcByac2jX9E8llnltW76fu1Apeqm8KxCGD359J3R40Uvjlv/ZjtIwQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-good-ee.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-good-ee.pem index f02ebf1e84..dde6fd5bac 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-good-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/multi-tls-feature-good-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDJzCCAg+gAwIBAgIUb5Qow4hp1DXT0OsmWrhOa3jxTmYwDQYJKoZIhvcNAQEL +MIIDJzCCAg+gAwIBAgIUCRL8zPWCnonLSsr0Ww7gE8kfVRAwDQYJKoZIhvcNAQEL BQAwNzE1MDMGA1UEAwwsVGVzdCBJbnRlcm1lZGlhdGUgV2l0aCBNdWx0aXBsZSBU -TFMgRmVhdHVyZXMwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFow +TFMgRmVhdHVyZXMwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFow LDEqMCgGA1UEAwwhTXVsdGkgVExTIEZlYXR1cmUgVGVzdCBFbmQtRW50aXR5MIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08 E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc @@ -10,10 +10,10 @@ DY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQ gAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqV YR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQID AQABozIwMDAYBgNVHREEETAPgg0qLmV4YW1wbGUuY29tMBQGCCsGAQUFBwEYBAgw -BgIBBQIBBjANBgkqhkiG9w0BAQsFAAOCAQEAqe7D5S3dDmrKCkRe2jV6Ok4mm7A8 -oZnFqZ2OkfwTSCGMnRMdG31ycFFDy6HrU9ZVR54EwCUVimKmE6AHW74gtDQvumpm -Rjf9BgCTZw0Xz1fYdj8CuzGUArWeCQ3A9YzaVImvzH9N2Gt8HOCkhH/4Rsm9PDfV -bHsNiuMMeDLymisdbqXa181YI1ZOJaWO196kTzCxKTe63WB7cw8fPFHsBrwUQEDu -BdeVyW04bNYb8vIksAoZOtJpVf5FUfTeZCN7A/dGxz+KmE4uLaoIJ8U+uxjNYYKK -rK6lXcPeC7NRpKXPvNe4QvNYniGxkWeUTtwwCuYmpC8e10HzxwUva7uN5w== +BgIBBQIBBjANBgkqhkiG9w0BAQsFAAOCAQEAoSUpy22POA8yXO2T2egpRPTq9t71 +ojekuJyySDz69/pYTa2lD6dS2u+KVb30ctHgPhBGNWIqPj3isrCP0wKNm/iJcnwO +OaG9N+QnmArL4Oq5Cu9+qSC4c/cdhSRaBFPgVh4sfn6hhtjhd1P1EbrhUkpETxF2 +hofofpqxigDWsxezMENhNvg73RNSfpKr9szPuKIR9dam7SclA+zZJqlYa0RvOXq7 +cj7j2/nUnqjbSnh9ZNhkMyriCDNtpdTxrRo8jxtJHnRM+GJtgPniVidHYCao9Zfb +L3JoTyP4j8gYIC54pWGKZcLavaoukQ7ZznniJiBFNcWSr++rCV4bOkOWVg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee-with-must-staple-int.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee-with-must-staple-int.pem index 27ba7feb73..ce9f46762a 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee-with-must-staple-int.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee-with-must-staple-int.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDCDCCAfCgAwIBAgIUd//SalGGW/wyvaiPAaZR9ejW+rgwDQYJKoZIhvcNAQEL +MIIDCDCCAfCgAwIBAgIUazX+pYc8lIStz1D0ZHzfwGhPCDIwDQYJKoZIhvcNAQEL BQAwLTErMCkGA1UEAwwiVGVzdCBJbnRlcm1lZGlhdGUgV2l0aCBNdXN0LVN0YXBs -ZTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAaMRgwFgYDVQQD +ZTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAaMRgwFgYDVQQD DA9UZXN0IEVuZC1lbnRpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24a hvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7t @@ -9,11 +9,11 @@ FYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+o N9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0d JdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4 s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjLzAtMBgGA1UdEQQRMA+CDSouZXhhbXBs -ZS5jb20wEQYIKwYBBQUHARgEBTADAgEFMA0GCSqGSIb3DQEBCwUAA4IBAQBBGWKl -F/jQkGWL1NmTV6bWLrDrI/dsWBZQeWo7P7xQE/Fude1WPMHbo0dqh9MQUw8cq2De -cIxN+eyLVvHaXTni8JX06uZXzFSP9sbyHbKpn88x5h2PItRfXD+gMtlykNnLiUdb -vx6XrKlDoJxIl9kToDGDtyOxvCDwPuDlKbTPEgwPn1jXxQ5SP3FqcFIzP+v6P13E -zmP2jfY8ao2V0ceSLhyS1IsPiXQk4r+rLvnE0azZtMeUe9NcX1AK0tM/lWCrnR3G -v0RjulZTq+dDLShDLCs5Uuh4LmAS3dRzQp4qOZB9KjnFHN9RhJ9ODznmkMDfvT5t -BxRCHOzT4UNwfW3W +ZS5jb20wEQYIKwYBBQUHARgEBTADAgEFMA0GCSqGSIb3DQEBCwUAA4IBAQBnWc0R +W1cqrVQaQN5lnHhgIRp4sZhJnkoVQX/F2u9T5+LaP7+Q9Wy+zyGduWV4z60fNfk0 +wvA1ecEcyNTlae3zMDX1KfMWpAIEzg+2mkgWdU6hdD1J27rEOs4u9OktXZ3Rg9sL +rSRiLfXmzLHCnGOqUKOfU9el5s5/bZHOnQB8bHUAggGp3MHzgYjs+Y6CnKv+5HWo +MTaHDkHYfTX6hrOhkG7WE9TgKvjE6oVfviibigg2wUMnipX0ifc+/AW9v82SfCPj +Tm91OCApBGHP8/UyjK5skBBoqC0xIu+a2eD8tzrAIPGNpXYkJ9JO6Nesy16x5x8l +8/Md/Q1DBxxk5Xbl -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee.pem index 574ee41170..ad4dd05a01 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDITCCAgmgAwIBAgIUKQXY3eLUQOLYac33A7+Oye2+OBgwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDITCCAgmgAwIBAgIUSUNyZLRwA8kEt6RQSUQ9taCRxQgwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9UZXN0IEVuZC1lbnRpdHkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D @@ -10,10 +10,10 @@ rZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWd q5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjYzBh MBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20wEQYIKwYBBQUHARgEBTADAgEFMDIG CCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL2xvY2FsaG9zdDo4ODg4 -LzANBgkqhkiG9w0BAQsFAAOCAQEAI4SQAHxrgBjYVnEie/AsAmWOX68FK9T+o6tn -VM9I702UsqRAUTq2MfluNh/RHh9hvLJOF4wes9abQkKCPQ4dU2RA7gZPNMXN/Bhw -dOZ4pfnrfPxu96/pabkh1GXjpTnGeWhd2jfH10I7Dg0g+kQr3QnH4TFtRJI56YVB -W2/XqTkUME3wrT051VkR+4+5a6Wjordw/4kO9CETzuhHytkAf8rzguWvR2YxFS5c -QMrtP9ORSJN37Sx7DQlnEldkQOOyc/QSrfrM376vJz8/atQYl2LvZZROJ2X4NU+B -udabxCpsNTQDaf8rlHgJYBlo33OPtjIiMMq1Rd83uXmFU4UJTg== +LzANBgkqhkiG9w0BAQsFAAOCAQEABvwBCUFAGbWlYc2GBXFP+78N9Uz8PuTt2EsD +4zc8lCJ6a+pfmLwcMxyntcnJ6BjLid5PWc0ZalOi7h/jvjpTGyDiToLYuSH0QO8g +EWC9fARG8tXh8P0gT5Orw7ZJV5kFrk2eQBgpJMaKTNkbZvwslIc04bKKe76x3v/P +zXpuSaW3KjEbdZG6wokX60DZ9tkNWdsbMl+sYzUFkiL9e4w4LARU0bf/tB8PS/uJ +1PiCS9aIoDVYq+Daap7DdqEErttj8k4FDkx+0JI9LrJrhYWrAM/7Kd0dLDsMv9Pw +X7j9XPxPC/xeFjBHnz0+jzQ8e3lejxMJzVsOql3LR8gsBhPL6w== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-missing-ee.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-missing-ee.pem index e938e99bba..2a038375a7 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-missing-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/must-staple-missing-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC9TCCAd2gAwIBAgIUHy+lOSVeCwSqJtwK5zpTvoLiDeQwDQYJKoZIhvcNAQEL +MIIC9TCCAd2gAwIBAgIUZ31r9FnjhWTXtTayrUZvYWnxfwswDQYJKoZIhvcNAQEL BQAwLTErMCkGA1UEAwwiVGVzdCBJbnRlcm1lZGlhdGUgV2l0aCBNdXN0LVN0YXBs -ZTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAaMRgwFgYDVQQD +ZTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAaMRgwFgYDVQQD DA9UZXN0IEVuZC1lbnRpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24a hvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7t @@ -9,10 +9,10 @@ FYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+o N9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0d JdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4 s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHDAaMBgGA1UdEQQRMA+CDSouZXhhbXBs -ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAFL+XWNxI0ETkKtBpniyS2XWQ5x6xtai -TkcVtIZ6QeZqOgml9Aw1s5BQ/BWv/bUCNXA7Fae3ZB/2zi3vz9IigNgugmI5bAWm -40Tcwv63Q/ptQOt31B3yA7mJ0BDUFjlBoAAkBHiVpXLKbwcYE09KAI6tQrVLIMjq -4HC/1I0TmP+CKHfFS5b0TeyUYgaeLjOMnaT9LcbSwWL5u6bEwXCIv/ARWt18eAoP -G0ddiIgCyb7hSW7xV9IartKx4CJgirdm8yCAVPjDdM+/2axyFAKo9+VVG78Tpm9t -ZuH+jpvg3KsUMe4DAzZ/u61/funfCdk83dSADMCEydh7ROBgyab9/+w= +ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAEkhBhruAcTHcco53Y04ZvK66CIIc8EB +dSeafiE3YYQGg2uOqRf7751D5g+5J9U8G+xBpUDVkGeNVLIqZCvvYoYnZ8FDEkF5 +zbejF39IvD0c34rJ3s+hOFKVGwHvxAIANs5fBQ6C7RJOhzFjaSzUYXTTdkll/t22 +vdspTMrws84wSEPznCrw/rb4sV2Cm3NUlz2VhdJ5YiBw+AtD+U2kJ+M23JpTW0KW +9SwAACItUqUF/9K9aCZJw/C34tVr3Af+qR7ydFfWWUD8aTAvp1LuX07ZXLDJz+LR ++cjrGI34DKpvJAIagy4wn1MlNuVOD0OUVvBnU+0ABbn1C31SuXH919c= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspEEWithIntermediate.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspEEWithIntermediate.pem index 3779c7b5cb..361d910eda 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspEEWithIntermediate.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspEEWithIntermediate.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDNTCCAh2gAwIBAgIUU+pli4chSbE4zKnDfgPr3+xEI2IwDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowLDEqMCgGA1UEAwwhVGVzdCBFbmQtZW50aXR5 +MIIDNTCCAh2gAwIBAgIUZc+14gN0Jnt3K/t5VF4HFcFaGnQwDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowLDEqMCgGA1UEAwwhVGVzdCBFbmQtZW50aXR5 IHdpdGggSW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptu Gobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO @@ -10,11 +10,11 @@ qDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/yt HSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcx uLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo1swWTAjBgNVHREEHDAagglsb2NhbGhv c3SCDSouZXhhbXBsZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZo -dHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQCBY06Ezi1j -jqtlk0Nkh37SFYsmOFAo2RR8U8+PNJJJlWapM72xTgi0Y9O4vHP1aC99sKtXUqFC -0Wr/7bY+BlWY3Pwcg6AHuFu0gBpa4uimxH1yxVWjtXO5+V2OqwcmxhxRgDCQYyuN -0/WM/uVy8EqPOHDj862rM3E7uEA3gRUQwWSDfLdK6ZSpR/YHvdFfpbm6PrYDBC+I -YpeKwBYy/mwRZidY2SzgdOFS0ynRFlL71VGeCxoqDF2Idi9L8nBvDl0Xtx0nBZqz -imjM4D9DG4OC8n7K+EQ05s2Zv+XRhX/NU29sB+GlDBblzY7Rcf96jyYW5pHUH3b2 -KKt+JCF2LViO +dHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQCC4STvaKd5 +70+rs1Zxt7BK9n4SPuJHcqcs9y3mGCS/bDZ+Ro+hCte6KyfRZ58nFa3m923Jv2vI +kT+mfQBxuoC1QhcEaj3UWX0yd2BuduUEjNVF+kpTFXy1ppQNbVGz7kBlhN+lT/Z1 +JOlJfXGd4eDzoLRVUj3PojAYBrT4ob99PMeCqzikqerFl6/SU48g8XnacblNrgcs +ixRtEwKhmH+DPnWoFN0yC2+RT3nF+yjQfNv26xxCgikIM6EVLUJYR+TFg3l76tx6 +YaDlK4JpFl2xNweEBILeytWPylwgcl5QfS5h7RibdJ1lvJOoocBAxIpZWAM/9IsR +XPYL2qelTxcW -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspOtherEndEntity.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspOtherEndEntity.pem index 6232d4cff3..cee3d79c1f 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspOtherEndEntity.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/ocspOtherEndEntity.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDFDCCAfygAwIBAgIUAfys45yZ4Am+n+Jnym19F4X+dIEwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDFDCCAfygAwIBAgIUF9NXLQc3XPiq5XNYHxkqkwDF9oMwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAVMRMwEQYDVQQDDApPdGhlciBDZXJ0MIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -10,10 +10,10 @@ iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu3 yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo1swWTAjBgNV HREEHDAagglsb2NhbGhvc3SCDSouZXhhbXBsZS5jb20wMgYIKwYBBQUHAQEEJjAk MCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxob3N0Ojg4ODgvMA0GCSqGSIb3DQEB -CwUAA4IBAQAZ61W4Yxr3qO234TEPlt8DZ9J2SwS6cjlYBSE5CbryEZxEU5z35XGc -6gZcmCH6FsFR7cPpZNuNZzbBAzoexdnMzLDHIus6hOhdRJFzeeZhzbRS5QSrrreF -mbL6KnZSF9kZbQkWcDPDFapEWwiATS8HOf+ld1rSCbvyWpX8H031fwyHghjaoXlj -VZbUQq8bIdF5curDzi6gad+utn11sROOYOW6FCn43UlmIQBgNsq8hiljZvbo8kfB -grCHcMX/aGh2cDwt5eJx+Zo21agjttkbHh4RK2iWc+6OO2rkB9j+mZqhQRLi/I20 -m40z+us83K2Q5cFHZj9T34Fa9ZWAdbvI +CwUAA4IBAQBAceBtVsBy2fprIXaSQSKcZSiKp3oll4cOQ1wcUnN2ieT25Icv4owj +GbqA77QMgA+cvIRbwD8gF1x6RSPBh3e/qYGaka+RvSNkD+c41vRrX+pizEI/6sdF +cg9sOv/p8cy8kfK56ylY1CzqTZDbc8ejvVq7hOqD6eqWi3sDHdG0wgm98zDuTdUp +jrauzXLPeiQn+izNSWJMr8tNE5sJPhcYsMXjxp/VpA5QVl7o3o5XbeVpAHYOxi9A +gUmg5Kgu/5/IeYR5e2qs3jpstVwBxheVUFRYBKdf3a5ecKn0UdfzySKh3QcTl0yj +XmypsbEBUDTj/DQm//ByWcoy8Aho7uRq -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/other-test-ca.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/other-test-ca.pem index bf91ef3370..307b9a3f99 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/other-test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/other-test-ca.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC3zCCAcegAwIBAgIUadOFCYMS/nqQ3tCvQzINT8fdE+swDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1PdGhlciB0ZXN0IENBMIIBIjAN +MIIC3zCCAcegAwIBAgIUVTTv5DQM+fh01nnfm3AoUJt4UIYwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNT3RoZXIgdGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1PdGhlciB0ZXN0IENBMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXXGUmYJn3cIKmeR8bh2w39c5Tiw bErNIrHL1G+mWtoq3UHIwkmKxKOzwfYUh/QbaYlBvYClHDwSAkTFhKTESDMF5ROM AQbPCL6ahidguuai6PNvI8XZgxO53683g0XazlHU1tzSpss8xwbrzTBw7JjM5Aql @@ -9,10 +9,10 @@ kdcpWn9xxb5maR0rLf7ISURZC8Wj6kn9k7HXU0BfF3N2mZWGZiVHl+1CaQiICBFC IGmYikP+5Izmh4HdIramnNKDdRMfkysSjOKG+n0lHAYq0n7wFvGHzdVOgys1uJMP dLqQqovHYWckKrH9bWIUDRjEwLjGj8N0hFcyStfehuZVLx0eGR1xIWjTuwIDAQAB ox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOC -AQEAVQ0jqpxJRP/i/DAeTSrRqX3ZuBVLrovjCOW2m9CkGQkFniv7kweUzRFMjujo -q+eV8fZrvvRT915VTCHPzueqjnY7IQ+wON7L6jCZvrDFhgd3RWUoufKgfiHWYNzs -kGJk5b6ZyOv5ehATbwT2dZse7Fbm/gSNBpGlCFFeOpUamNdRWSabQpx+Z62qxsV2 -ie6IwG4dq8XbcNjPaMA9mYu/0Zz1kiIXWIFwMtLB7cQM2+OHp3dsJQFPnnatWsB6 -Q0NOCbOpFqNpuDxANV0O+bFXjIem4yRalFC79BOZU9t20l/92aQVG5YS8cD0Y+sm -6ZA0e8tJzH2QOa2tTXJlr2TZmw== +AQEAMy+B8xwb+Svzm133InPK520eLigMuoI8i37Jk9pdugtr9LcTaKt1Qb7ndt8+ +2wswAX3qFJoqNTjNvHOBsYQd5qglk1cNq21wuh/5gmipnfz/IUr7ixKpvDRZpdtm +gHndYuYTU95EdmFTUziP8DPW36htg78d3rsXuNCM8Zg/bAh9IG/SnYbv4ViCccnv +6RzZFie5vc1uljN7I+c9TDbqZRDd+xUNCsCG5y5FS+yfzFcIgPkJbZBsXwFv6bcK +tnTUgasnNqs2W4/ZGJNnxqY+FyW6w0tFMEXbD6CyIDsMZRs9QXMV0ce1JI8VZ+YG +JD8DX+T7Zw8mh8kgNCBVX3GlkQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/rsa-1016-keysizeDelegatedSigner.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/rsa-1016-keysizeDelegatedSigner.pem index a6538bb3b4..400ddca7c4 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/rsa-1016-keysizeDelegatedSigner.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/rsa-1016-keysizeDelegatedSigner.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICazCCAVOgAwIBAgIUDfJVytuuc2EEc+q6mpkgc1eR16kwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIICazCCAVOgAwIBAgIUUfH1q/V/kzd9+NBM9y9xgmWNCmkwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjA1MTMwMQYDVQQDDCpSU0EgMTAxNiBLZXkgU2l6ZSBUZXN0IERl bGVnYXRlZCBSZXNwb25kZXIwgZ4wDQYJKoZIhvcNAQEBBQADgYwAMIGIAoGAANKb sS+4T93NKbOlGctmxDuNj4vlRbp5OEzmY+0D33WZFgDrkgeQ0lMM7OVE25mnHwWJ aj7SBxZVNKqZBX5HxH47yBrab6HhLjcmi1BGpVJo+drXzLSF2BouGdUNTwtoVKyv bXvmnZoIMTbhWvqPU8HIyE/GB3J53Q5V1zaaW90CAwEAAaMXMBUwEwYDVR0lBAww -CgYIKwYBBQUHAwkwDQYJKoZIhvcNAQELBQADggEBALfnuOTIkCRem+Xc3BWC0SYs -R66cWpQ8H7o2iGUvGMDwbGZwrp4Es4uTH+zyIqC6kol34x+jC3kba207Gc4QF7Gw -k21JBPaBzKsrk3WVak19LHoQ37pRQDB/XMjYD5IHk+nfGH7/cn8lndTt8B1a8HLD -lXl1Tq8GkQ2adSsC69Rh/pSHEbpVjAcQ7SXrG4i9eYaJhBprKBg0iFIWUO5hrBSC -Kx7LcISK42fKvUf1Pc0wrBcrfUsXajTb0MtZx9Zdtlhke4TZszJVFwFl5UJz2d+y -uIvi7Mq1ysa8L/R2v8btzggoQ4x4eQRoeSZfDYPRZai3hEc+3aov/B4fiFPoPuM= +CgYIKwYBBQUHAwkwDQYJKoZIhvcNAQELBQADggEBAF/sIsoC6UhSZdk1Uz7DTjsn +wy3g5cr+lDNp4+7ffjI2rzHz6GNfmvwsdrkw9qU5HsTh+pieJO2lYCJoJ+Io5eRR +NOBqM5fyg1fc8+ze7/qySOMtIDXxb/szkvaOBIM4ByQtfiTyjyH3n4oVd655xxJc +LXOswJd4rDXdONB4aoE7qA51w/EtbB24KMt56nabrry143HU2AaIjGM2lBM5GGgA +LUT25J2Uwh4PRRA9lzZxx8KVfhlKEEVGpJq4L3m7JZ0LBdWZpmvFKhkNiuyPLRLk +1/f0p7AR5401tQoyWdr6j7uhRxtQLBk9+bHjFPwByw3spWKwAv+07tZ1yTWj+WE= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-ca.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-ca.pem index 31293e3935..85309686f5 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAgIURzyIa5PAntODcZ4AzhgZzl3zjrMwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC0zCCAbugAwIBAgIUbRl0jsaZB1HOw2TSFqJE/hUf4x8wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjASMRAwDgYDVQQDDAdUZXN0IENBMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,11 +8,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRME -BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAsNXVPjJr+as4 -PdX/PpdTdvDW/TZYh43G89gxgG805XHqCDDfksSOM7sc0CbNNkX69FSz3C1Xds2k -Bqn0t4UHaCyQy7a5/vs1qes1T/GP6PscfATNgnrWqU8NyuZWv5Y0vwWKSL3AwFaF -OGJnLGQlIN+4BczHdWFwgUQYj8R1gAXLJWEYtbg3j5lQA8k74DkHYcu8hT0l6UPn -qwuw+nw332pkt4+8p2Hvb9+idEPOFcStkeOHIOSbRihWPHiVl8Jcr9b7m3r2uBL6 -z8vk7+vtf25hgW6oKoq5kBld+ttTSKOk5UvEGjEqyJA3ATnaMxTFXmX8MSugXIy7 -jCpW3BKLzg== +BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAHldkZY/n8EPM +hmKw7mLxMd66agv+HCe46PCv75LkAPh3CS7ovLFuU5C8IJUNMMRT2NXOtXwm/COb +bMPqk/5+jRnBxkCdRCEerIp6tPBmcxci+bGZFdI+Xnq+/4vf9gcISphlrfCukbve +7t/WNPIXMfu4yZnkMdQsoYWi2dE02GZNuaGj1oHTdWVgN/nRWtCo/cApupRN77GV +nN1uE1fB07PQU75meGwsQOu6HMgVz2kQD9nZhfaisSJlGElYUGZmE2ySPr+OhTmT +zHFD2cq6WQGCyWCH8cZY2a5pylOsG4auHwKCgbdSELMnIkUtWtmjGa6/2duQKOcr +XHn6ZozclA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-int.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-int.pem index c0b2c4dd2c..eef3f4c890 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-int.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC3TCCAcWgAwIBAgIUZSuNTV5Ngi1A5RSkCkCRd6fZ3sMwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC3TCCAcWgAwIBAgIUAxPrsRjtbFinLUfRzhtR8EeYh4YwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAcMRowGAYDVQQDDBFUZXN0IEludGVybWVkaWF0ZTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1 SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+ @@ -9,10 +9,10 @@ K7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwc bJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibW JZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMd MBswDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEB -ACiwENDmwgh2KUyvuhRtLaBhfyRfd5IaAjuBcIjexHYqNQYbfdiYJfZTFicRY6Iw -17Zt97wsni6WE11A3u/Octw517NF6VD8vucyQAlxeSYYMK0DLw0eAncet3xzwFHw -PbtAZIQcvm4GG/nR/9Qjf+qRTfxxKvDKH4V9kh+j5HUyuSPFMvTz4nGXVCeO1BM4 -tlyhSKtGEqeklNOgevwBSt1Mt5CLjGQmuOHR1SM7ptNgn7lxFSX37dbAECTX/N85 -CDbGXKLyJQwlrIGrvfGCk3/ikFRthLb78vR5hSfLt7gaUS6Md0kO56t9eYBEFuDD -oggDVHOeEY6xYgm19nLcwqA= +AKMLQxpBsyCNjuzQZY6Y8dJVzmNwfa0mvzDCLI6ltjK3X4pzz7tCb+hXH+Z3lhf+ +t5N4eSMnXgobxb3tya8/2c+3kp6oxx+BwyvvA7zLPrTgHed8/G8z9tpZJrJxTcOB +83fDkvTE9/49KIffeSF7I/IedybWjqO93IZMqVVB5xfbD3WoYCe6SipiUqvVB3oy +4PBC5ONA1ZFGwqj7/6vgmgHukWIc6GogczKdLIR/Wu5laV8Wug+xP/GUUcuAOIuY +hk6WMVRikq8g+wf2FG0i0NcGDOAK0Z/1nFvKpIJomZ8Q9NYVs0tfhoSLPwtd7cDT +XYDC9Gn4ncbAQIRIAnNm2Ew= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-multi-tls-feature-int.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-multi-tls-feature-int.pem index 2db9912ffe..887ad4a9b9 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-multi-tls-feature-int.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-multi-tls-feature-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDDjCCAfagAwIBAgIUZYGoiKG2gdc1rFoeLqcPnz6QxdkwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDDjCCAfagAwIBAgIUO+ZzYMersgD5lInlYm+2WcWOxI0wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjA3MTUwMwYDVQQDDCxUZXN0IEludGVybWVkaWF0ZSBXaXRoIE11 bHRpcGxlIFRMUyBGZWF0dXJlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAab @@ -10,10 +10,10 @@ H6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8 rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kX Mbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMzMDEwDAYDVR0TBAUwAwEB/zALBgNV HQ8EBAMCAQYwFAYIKwYBBQUHARgECDAGAgEFAgEGMA0GCSqGSIb3DQEBCwUAA4IB -AQA3bH7eq0FBMzjf8eHH2k2hV1wQ4UMJsiSg+SKhryLV6vl0CrTxCtauYEcpH1b/ -no29rPDCDlaQEjU6qbofV8XqFOuijBjTeiG9cEtGNml0kQmw8muRu63aO6FeqHOB -1h+Tve+71XuQRG9FYch6ss5Tw9JkCFehu8RG4AsKG10WLAemQXQMH63V/jvaivFf -G8BImEdH5clPanR9BhD9FLvY/5Itr31f2W/pJ8Id5gC1cpr9bYnf6+pKrsiZJpS3 -Apan7YlnlZgs1A20yUDsmUXBfkobrwa76t4lTX/Gj0UIWvK4FcJTt4TWqcBp3jF+ -vZqBdWhHyJ5H9kMBz1XiON+C +AQBrTWX7MbphF4aK8jdrZD8SZsYHr9TV+70ByPCUsZBCtQrGZs++Li2UMVyk/xhl +gnGnSYCN8+KEpxqijTYVrLiNqqPbIzuPCFkOtssdCmZvNbT1u596w8a6mblTNmCg +eF8szE2uNFg09rxksbPCRu3jL8kPc1NFktQW+l8466fh/X7gaux8NkOU5534PzEX +8aTrfdZ09OMbL00pQKhRS0vvigsgHwYE70tV+y+E7jtSOneKQ63Uh0kF1ULKbWql +Dtb5bkdrD+f47nOAWShweNcyiBslwDpzMxL+GWrBHzWmwu0uzomeECOYAzF/rcpQ +g7FwHHcSyZhBv2TW1UDL7hUT -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-must-staple-int.pem b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-must-staple-int.pem index d7da925da0..4939165fa6 100644 --- a/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-must-staple-int.pem +++ b/icecat/security/manager/ssl/tests/unit/ocsp_certs/test-must-staple-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDATCCAemgAwIBAgIUE8aOWVJbuyfqiGTh9Hj7y1z2LbEwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDATCCAemgAwIBAgIUUQfKiJ2j5Rv/fRBynJmspCPId7kwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAtMSswKQYDVQQDDCJUZXN0IEludGVybWVkaWF0ZSBXaXRoIE11 c3QtU3RhcGxlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESO FtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVr @@ -9,11 +9,11 @@ sdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbY VbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6n aOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHE MdUDrNoYCjXtjQIDAQABozAwLjAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjAR -BggrBgEFBQcBGAQFMAMCAQUwDQYJKoZIhvcNAQELBQADggEBAIJSmzZtSsM/O6Yl -jAh8JasFV6mDG4FdEWkwAiTlNnIozXJ6SfMv4Xr3CM5VA58N3iV0ux2KJ/E3xlQP -w2OooeLJ4m9bIlgHXBBBf8cStI5goj1J1bBqYqLgssGkmoKtUjAcFTwEaZIBy5qd -bJG6lpPU5OdhxWdou2rI+d9AyP/rHb4ICItooq9hFl3mxERHZXOmlYdWlo4AcGvS -tIvMJOazlNeaNAMFjnhpdF0d6E8+403C5nnbydbdGI1q4WRjvgIx8xMqIgxPqs0z -sJ6NeFREgJX0wVso1Q4j4t7hZ8EzjdEQcd7MM5n4TaRhDaURCO0GGY+T9iG7nt6s -X++I7fs= +BggrBgEFBQcBGAQFMAMCAQUwDQYJKoZIhvcNAQELBQADggEBAJTNY5GwmK7IekWE +iCQ+NW/6y4fuwwH84YvBxBYvS5M7FgOvBWMAESKrMeoqA7uSgg/+b+PH3chHPf0H +g3gHXtVV0R/ttHuUyN20ZRf5k+kpx5w3bsqKLz38c5R+ZV/aYt/X3yXZwbsQH7/k +ILCoKpzqjq31Uoahs+Kn+mkkiYp1NSPLbPLrxftXG2QMh7aZ233+Iyhyc+MpB7wg +IUJO42dy704S0y95PMkeNTzAVytvq6KLfz+XSPhVFZiQO1bMtWMJgaGyfgmOMVu7 +FgDMpxFfvJtZTa7jiHBimCrqLuAKQT+XHM+es+yWardALrk41N7K7UWwYET7ItwZ +q59omJI= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_certDB_import/emailEE.pem b/icecat/security/manager/ssl/tests/unit/test_certDB_import/emailEE.pem index 9d1bd4169c..28970cb3b8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_certDB_import/emailEE.pem +++ b/icecat/security/manager/ssl/tests/unit/test_certDB_import/emailEE.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAgIUHQMRsXehIt7MHly2Nc8M0WSHksowDQYJKoZIhvcNAQEL -BQAwFTETMBEGA1UEAwwKaW1wb3J0ZWRDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIw -MjcwMjA1MDAwMDAwWjAhMR8wHQYJKoZIhvcNAQkBFhB0ZXN0QGV4YW1wbGUuY29t +MIICxjCCAa6gAwIBAgIUN6dVZXxXwP8Llieli3QfmK5u11EwDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKaW1wb3J0ZWRDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIw +MjYwMjA1MDAwMDAwWjAhMR8wHQYJKoZIhvcNAQkBFhB0ZXN0QGV4YW1wbGUuY29t MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2 ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdF h/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6n cOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAv OnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2nj tIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXt -jQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQA8toAtapfSf2QcO9oeGsGjwvGdq07N -qxEDF8D6y6mlP7CBCqXp2QP4d98gnVu3hALEAZY4YvTIA/g6S465Es5ycp35zpv3 -9RhJVBu5IkSJaaZ5l5Czf6bUK04pBEiMF0lhqSkbEVZGMZimSF8jbrESiGBm/FIH -4GhutFLB3bOUU/njS4jlKbudQz2+bdcaJhySj06c8FuarXtRWM6np0p+ieoSsB1l -+niGK8savFfhIK8SV+z7qAEPjYBcyTYPzfzhgRZ6dFr1f3DDp9qr1ptp6UfMbRXQ -cU7sPDCVM447sp+n0ozPcjQXNDUuY4wa/4BooKnsDYk7ZrNwtd3mDJFM +jQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCovmNEYgh8iKIT1s3m+ZAiQWOd0YQ6 +Qrh7cPkIMT+QKNDXBP72bZlr1qOl5CDVkVvi1zbaygqgWatTHQwnqsGmDtG3ScoX +Pg/FFzsu1Fwqd6fSFAxCpgi43LrPnpjMJqboPN6rbzJJfP2hfrE99SZpNUcBwgju +OkJnAzMhfiWDGF3710dBVNso4Dsfd3r1j7OaRBeyHWmiHbx/xAWP1PXKLnvQ7Nrt +8WG147gXwe2G/zcGpiXuM8KiSuDTzIvRY5P2HVRz4Jy7XOZ4Z3yktVE/da8vasBI +vBKEEM8IA2tTDY4/NvIzPHLLo3gnLLiMKy9qInGp3AnXYRxwKcOczMMA -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_certDB_import/importedCA.pem b/icecat/security/manager/ssl/tests/unit/test_certDB_import/importedCA.pem index eba86240c0..609d266a4e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_certDB_import/importedCA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_certDB_import/importedCA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICzDCCAbSgAwIBAgIUf0pqIBlIotHI3NgfEPf9Pt8LKGowDQYJKoZIhvcNAQEL -BQAwFTETMBEGA1UEAwwKaW1wb3J0ZWRDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIw -MjcwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDAppbXBvcnRlZENBMIIBIjANBgkqhkiG +MIICzDCCAbSgAwIBAgIUHZ8eDy0e+9xBX7i3VSMz5AmUla4wDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKaW1wb3J0ZWRDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIw +MjYwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDAppbXBvcnRlZENBMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1 aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/we adA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSS pH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62W YVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauR CE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoxAwDjAM -BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBgOkDeusHK9bVwUkvK2zWy -Rj8QD0J2EBiMS6B2y1Bti/ZqP9QSem0UlMp/CDFIanKclHXJfhEZtunDxOBCnF4O -DLXAIeYURHZfmRo8ow5g9NkhvPd120PA+AF2gfoI5UixMqrcinsrumHCxp03bwFh -yETuWevJxwgVqpTyZDH6zvSlA/jLMDB6bacYzuAhAbvG1djK9tAD0lUfRNqQMB43 -C/POY5MdngiPTNUZtsAwOdj/7Irq+QVH5qa3mUJVOo320NkBgqOb92SUAj33XF6o -fiAfw/xqseUazjx4DySqtaLChp5L3qvtoPNn+pnDZsrLVuqSdlVKlhfBfZcNLMLu +BgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCbiKFARuwyKcR48VwKsPoY +8dqr98MFD+L9MQcSqQ4gOaq39mC4J7SJL3OwmJyxttEq4FIDn7OTGIcsAHU4BPlJ +d5/xWrWDyBiuPzxQMmdJXIz1GuoSUpHW3Pk5yisNRhrJrwNLgKx2z+DTNVPg6GYt +juOXZdB1YzgC3qqkgzlRR35tHWJdacRhBy/WTQpgqtxKR/KoEohuajxTCKQpm/Ur +0eXFkJVxk7HI47k4E6D/S1rRJSglJEbXhn1k8/TYeJqy1Q8EjhYtwAxsVcT9gAO7 +r0DRZPpteZvLZgI8MbXQN2b+y1q0XpgC7z/PYHqMXxLq6KSyf60ReF33TIHzbGI1 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-CA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-CA.pem index e54bdd9e5c..a751fa31d0 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-CA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-CA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAgIUaWaawe8IRalWKa+hoZvhoy1BtTUwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxjCCAa6gAwIBAgIUSxtlg5q1Db4B+fRpT/1je6O0Y7cwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEDEOMAwGA1UEAwwFZWUtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9 sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5 @@ -8,10 +8,10 @@ TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7 xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHd tMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l 8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjFzAVMBMGA1UdJQQMMAoGCCsG -AQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQBkpL06H7UbC/gYHFwUvbhq8e1aPuqA -wlce4WJa1sfSlEGFOWs3VIDk+IzD5YTYFz2KjlpdPh6GkkF2NOJxL9TRyaClc+Wl -juNZYPQAbAY4LTktnMDPXwQiNTHlUo8HbMkd8iwqjTte3Wm0biuHIVEx9CDuy5uP -R9mRJbm6z3LQd6FFtN1OUvIxELhtJWOxvFU21cr7+72UFTXstfUd4nkhMTw8XezP -6OX/YnXQKRbqUeW5CD+XdBAEUZCNqPq6zsjQ5HfsrUUldbNWkVSSqyH+8nKsl+mS -cZY0YNgb2rc7Df/LiX5YG1a0xoPHgATKhbDQNRR2XysffIG9WvdbdVA9 +AQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQAMJtAoo11gzsbVhPORk1kJ6fnbkYwv +QOL/hIL4xI/BJ+XJ0Ntf079Yfu926fHx3j/TU0D0UfVhgeD9GUZKlAaT7KHBZ6R3 +tB688/GRMluMusjK0scgE0MKhSdBa3OkXEJz6YiCt1pTPT8xa2/7AUuqvrKIh8zq +FYUBGAR0jSg9YEmaG1GUE+8dQavsQMEsU73PduculgFRV7gZ5pDkuF2Pi9A/kh38 +eoDEdXTBONA9ndN4ny8TsDy5dXsGgv8QVRnRssA24weybVR7jRT3ES3J4DRfsjCj +/qfvdNtJDp0lgRZZz+SLe9iQknYcYZSP1XdxESlgRxcp1G/eqwuq/c9c -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-CA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-CA.pem index ca2fa1d030..72589c624b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-CA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-CA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAgIUA7l11KOGCs0u3On8fpguCw5DVWgwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC0zCCAbugAwIBAgIUe4e5rDjzJ0w85lMcnd0Q318iuNcwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEzERMA8GA1UEAwwIZWUtU0EtQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg 2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ @@ -8,11 +8,11 @@ DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg PdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGj DJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8W iy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjITAfMB0GA1UdJQQWMBQG -CCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEAqm8jm61f//az -mLD/KoctLSEhiOKhRif9kh8l9z1F+cn6pZgXvgBvpGSbOhNZni1Tdf3rD9sCrSps -Ez2xUD8d2uQUWxB5oMCTr+k4VM6Z8y6DhVYVa4/dz3EXfNz72xVYIGWB0fgI8c6H -4BDiGUP8SJrbz3geF3LVfus7p2YTExqKjg/QFgvF+6Jv7jPDMlI53U7jYCVl1B0V -56jYNvLHPUrIbmsXfexEW1Q3Mj8CHMg6+WiLNA/RADRqPqFLgF42qxYoLfzgI48e -hTVPuWmrrf+3ydw16NNt/fEzTSSvUaVBp77CEcly4cJgYt09hX42HixndOqtt+rd -zl2uPJFn9Q== +CCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEAH+xxHuF71MK0 +dgTwnoTwiWCxUrtIbLK0Pi9eU8sHepykw1T5h/LqV3KGS1fCcNyu1ObIyrprtewO +yPftw6JTdEswW7YWEm8XVhGY58hvjO55ZX+RIiVrgMB/5cZYGW/59UFYCvgVWLEu +2PSBIXXwaoCrXjTd8JrLTxsSzfBvLqyqbs/vt7n41P56aj2ZfDIN9w6Ij1Q6s1vQ +YwTdrfLon3vcbd6ZsgFTAA6IJSWa04zgT1eGwRnMeTZEyS3PxHs5fdwMvD9MNfCO +E+pQvokwZ6ZF3QuQDV0WvW2xdkldA1QbUwEgGxm1/vWVzN5Adi9pVz/OvwcM9NNi +Ko1XrvOB/A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-OCSP.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-OCSP.pem index bde09f9648..5f097d013e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-OCSP.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-OCSP.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1TCCAb2gAwIBAgIUV9Gf23HsopvZM4SyNvlfgrUJSE0wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1TCCAb2gAwIBAgIUSXaBXaue4pvWL7IXw1FPe53JCzwwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFTETMBEGA1UEAwwKZWUtU0EtT0NTUDCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -8,11 +8,11 @@ w0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCx V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMhMB8wHQYDVR0lBBYw -FAYIKwYBBQUHAwEGCCsGAQUFBwMJMA0GCSqGSIb3DQEBCwUAA4IBAQAtcxantrpn -G+yZCY0xuIQTOOWicgTWGKtbg0MdQ2pkfWFRZJc61pFQbeI7KkTVIkAHppJm3fOh -WYLENoYOYrKjr1E9EL4Gqi/f5X6CzxDmA2WXG3wqNasjcjWqQ/TxmrI5/b0AY63c -CCg4YHdGW9lOOgyqGLolPgAgvl6LR/VHac8olaGO1IIS44fGrU8G//hvoyKswQx+ -Gv2R0ae8CAY7CmrreykzyP57o2xGe9vty1WCraGkk42JJj7spgvvQxsltg+IuoL3 -WK+LtIwvZvo2lLVhd9VjjGcO/mRWOzoa8rJuA3t1z+qIgqF4Q7y8n0wWJxEvyaV0 -AoghYZZdE6oY +FAYIKwYBBQUHAwEGCCsGAQUFBwMJMA0GCSqGSIb3DQEBCwUAA4IBAQCIMoJj3GCd +BjnI3d0ov1ixEOHAB7vsm0gcjGGKe0aU/V1LF3+/pyK3nMEWSkPmKUvaIF1rdf1T +AtNWbjw00a/oF8lwgIxQ2DJ0HgueJ1HBj1bFFkEIkMcn4FTIp0dYPttsRWt9mxz8 +FvIoI82FTjWOlRArIfedQy3hyF8Suw8ZexuSZdgGjX4+MdKD/+vocxr19RN2Xhhb +WKXCoznXySeS4WbnkUPCrB5lavcVhcUmfR4pTTJpKmPfdFIGr/fnOHvoolZKdtO2 +N6nOSgOVvIb4/9K1nbtDTW35ukT8K8I4yf3tg0IEUaEvnExg4zVsDeOuUWHN0hYO +xZoZKeh71X7U -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-nsSGC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-nsSGC.pem index eadcf64956..ebb53bdf8e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-nsSGC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA-nsSGC.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1zCCAb+gAwIBAgIUGSb4QKVTDSjKp4mZyITsmMKLHN4wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1zCCAb+gAwIBAgIUR3yJw9/rTBxUb0TMNpYLpwB/zCowDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLZWUtU0EtbnNTR0MwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,11 +8,11 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjIjAgMB4GA1UdJQQX -MBUGCCsGAQUFBwMBBglghkgBhvhCBAEwDQYJKoZIhvcNAQELBQADggEBAKFNjje6 -fN1I1RPK7EDm9gmbt7tDzc9CSwE0c/Fo/+zuGBhM6SPdKRxTInUQmuO6GTpOnRGZ -ta7RdLy0w6oLnfxr/kkTMQc737d2jCqhwVmv3tLX0DnmhuuboY48H5ckbOq2TovF -jU22vGC+i1VrAOBLB6DvOehPsblkNcYSrhXyU8zHNlZjdEW5Bpx8+7d6OZ1U2TGv -Y1rUVvvCg92YmgSD70LiUUS7irgdXafHPI+jMy8H9zv+pPZyXdrVAOYD8kclfyco -EvAltPGpJVy8hR/4RN/WkYWcQXigioGEj0DO4j1/fhz+w1Q8louUKdWwxlsGuJtn -BfnPD8Pakg6jsmQ= +MBUGCCsGAQUFBwMBBglghkgBhvhCBAEwDQYJKoZIhvcNAQELBQADggEBAI5fCe8K +gKtADauaeEzvoblj3KCPFipawq8MHH9CrtPPfRCpnc+88g1cSv1vuVDSPc/3wyla +yAm0VwOrKQ00IKTIr7lOHfufYDStRTJMrCYlHfteHIrpqB7nGDn/D+CGyiPkoQbp +s3Ji97h0/Bc8eR/EepaP0azx7PNRdbnGkn+MZs3Cpy3SAZDU3WtlZI6Genhboeuy +OlTPQgSk72DqVjm+5B5iEc3zU2kXPns2Hng7+9ZXZBonb1Y5dF61wR/zZwQTBKTI +3/AE9HakqUhhShCDJKz9CSn24TOvjvVKyX41kFy4h4efhUndt1xsorBS43VS163I +CjYoimEDsfJWQEo= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA.pem index d3a44f72a7..42cc668845 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-SA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAgIULZjSUvOvL/Kq0MZhlD78kTC3CJ4wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxjCCAa6gAwIBAgIUF3iuV2A2s0oqqewlW9wOMtGjHOcwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEDEOMAwGA1UEAwwFZWUtU0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9 sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5 @@ -8,10 +8,10 @@ TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7 xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHd tMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l 8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjFzAVMBMGA1UdJQQMMAoGCCsG -AQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQBN85i0GQjENvySXId3m8WVCo3nqa76 -ybfBAHPx9mGR8G0MRwtdHc/F1QTKgpPqy2ZO8jd4u+ONYmWAaB+ymaMeuiegx/fP -OxtTaqDy5/A7qdLFxLKud8lifXu1QaHmUldXdOBglBGrZnRZBY9OsndF5HGgHWgf -T7T2e0ecYroI5OUxR8lznB36TVje9dibbPfCosRe7eJ+q1LoE2jMlQ4P94NHE1Z9 -1fiAKyeTLLjUoXc+IUbUzgiuXl7aVHQVg9M+Wy6ErSDRPoMKG63cLDIGLk0ZXgaB -KYD2R1tleFSZPkD6X9TI35gmyA7Akk7qHJq7fBFCdX34+6EHUs7Z4J3c +AQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQCKcIOwHYfGlAs3r4Mhzaa5DgAj+uT8 +U1Bq9X7oIp8w1MMBcA/CyOw8KTl5g9i0LAxT6/HTQ1LGtqvFMfJ5jXYHNB1JbCGJ +4+LcD9E9dGQCrIaIWeRR+gkS+xfP833pQMZQbJx+97NiD2wxQY8k/RXAOUjsJnFD +hhh3fuZNSc6ibOBbkemyZarsuxzmxb9pegQAzPbKhs0tGoyAxT+MU636PQuaM88Z +STxQxyjWoYVIzF6OJnVLo82vbC6ki1Y7TIUiugMtZSTFPjd8EWuhsfKjV2jdFVTX +8xNDAZssE1/QBJhGp/VD7oGns0Ixsw5xbQ/yfEtgtR4yXrJlQ1ED8bK0 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-CA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-CA.pem index 9bb39f8477..966c153bd0 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-CA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-CA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICtTCCAZ2gAwIBAgIUf4D3Ve9KUSHr0AU0DUNs/4z4A+0wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICtTCCAZ2gAwIBAgIURTmlxTn/A1IS+5u8XugIXlSLSYEwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBQxEjAQBgNVBAMMCWVlLWludC1DQTCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7 wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCAp @@ -8,10 +8,10 @@ k6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhh eZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KW EsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONssc JAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0B -AQsFAAOCAQEASjptKJQel5JEYFm/7waUeKaN6o/UQ9txBPB+YF3MCeWkesRr+NgZ -X+9+Lhdglxqs9wz8wY974/Mt3Ln4Yxzm3xaCAI3qiQZBvl2OV159c254uv08y3Fm -QOCVApWH+xAdWs7PfTSFylR7j7r2IRWpgwA7UMSmod3uZQwA6wTCqyMKa8pq+KKQ -7aN5i1RL+hfT2e1og2dHQzkn3lrCEw8Dy7eo6l+zoJcwrevZ2BdBIY/sUQB+fJr+ -9KKJDbtnoI3YSbcdamKkDKKLuJB6EOdii+HBQo5Vc6o5eUtFgIobFY10GiND479e -RxiEVkVK7ztYWeiit5rkGT+ig29LJwwKHw== +AQsFAAOCAQEAXrOYIlyDBIdURNGlsqtLvH6SHen6wh40V1mmEu3n79DNYTEmhd+D +Kq4mMFeOvMa1hD8KMBEmjENxBVEUyiITaBylXFJRob8HBVtd9IAizdb8b0kRPfYB +tsb2wJng0DnrYTKkWgRD633m3QNv7KaS4HDlWXhEFNpCz72LSOUAQ6e1fhay0kDW +FDtARIx+EH4kYhmBXWTPx+8yFgi3HAzEuvulO8epLWbutHVVyBkCaZMm1LfwOh2m +1rerpQ16cFAZskz8VHelLdcQvxJd80no33MZ+afF8rGe1nZ97B5Fiky2U3UoZ+Zp +tMTnvNxaYLCrs5zq1OdR0BpZkxoXwlP7yw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-CA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-CA.pem index 4e22f46d4d..ad4b832698 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-CA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-CA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICuzCCAaOgAwIBAgIUAbF7tZBYIZdI86asM9dQfo7yHQEwDQYJKoZIhvcNAQEL -BQAwFDESMBAGA1UEAwwJaW50LVNBLUNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAy -NzAyMDUwMDAwMDBaMBcxFTATBgNVBAMMDGVlLWludC1TQS1DQTCCASIwDQYJKoZI +MIICuzCCAaOgAwIBAgIUMTU6VMXqNWrpKBZg5Qew4X/oSm4wDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAwwJaW50LVNBLUNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAy +NjAyMDUwMDAwMDBaMBcxFTATBgNVBAMMDGVlLWludC1TQS1DQTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs 9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8 HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7Ak kqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJet lmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2r kQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkq -hkiG9w0BAQsFAAOCAQEAHyqhZStyvKyxHs9hy/koryaR1BPbEWZb8trTUJn3QCNE -+aSC8pheeiMaZ79fwMkjOJNiZJIUVOJPr/BTABhmBgcuJnjVpHxcBHIQBWT9Z3Ne -o2NNrclXkM2P7jkhS+W0MZUYSo57xtpfBY3L7oxDrZaQF3LFUEziUsoD+GA1NEh3 -eclx6puR3R9WT9nxmHgYkzx39G+yCnHKM0swOeJUTiuov3lGlemPUNq0bx5jI7L6 -dvVGwrichjRs1YoZYtSE2xs/G+SGMBzJfBLjVUhXDEsybyp+WvclSYbqhSMlFlc5 -Qm7esOlwwr9cj7+29floSYgILVZnlM4ZpIA+hlUZJg== +hkiG9w0BAQsFAAOCAQEAqyeUnkoTxwf4X9R+syxo+OR1HfdAceEeXqpRlSTI4Iw2 +6m4OZ8QmgERRKcMj4P0uyBnTMAF0c8Sw+W7/K2jXfabpPlTxnCpcBAL8FiH9Sx8O +lHp8sa3HxpYJKC900/mxYtf9dyPnAG/PVJrOh8q2IX4krUwMr3OYt3a53ni5gWHr +qLC+01hpiVOgyFncEaG7t3ZEklW9iSyCEaQ0TtJEB4hwriHQLeKnQhnNEVACEoRs +ftw1MBwbQN6FSwxBswgz/HD6YgFXaaSK1fKi3eHiLnA0Lo6jT2jcAgiHhX9F99xh +wdG4pGCzBLuasWKzAwZ+bZjBhqUwJSgb6JD/LR8/gQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-OCSP.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-OCSP.pem index ac0722f3c2..fafcbeb039 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-OCSP.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-OCSP.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICvzCCAaegAwIBAgIUXagbVMGRj3ufi73AEtqjpSlsidkwDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLaW50LVNBLU9DU1AwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowGTEXMBUGA1UEAwwOZWUtaW50LVNBLU9DU1AwggEiMA0G +MIICvzCCAaegAwIBAgIUB18hDfQs7ZJnf3OfvI83jAOHdzcwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLaW50LVNBLU9DU1AwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowGTEXMBUGA1UEAwwOZWUtaW50LVNBLU9DU1AwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erk NUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwC fs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1m CyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTM HGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m 1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEw -DQYJKoZIhvcNAQELBQADggEBAJCC69zGlIV62tsLTGGs1XIUBXjoVGyWTkKl6kPV -/OA7uPI5XFNrVgD12T7PgAXXoWNvxfMiE2RPRVc5ZeKTbv1KowDvcFNIOK3ku82v -U+V4pH1KnYqRPk1sfwvo0tW+hSsyNMb84AjE7yLsQ5Yrw0zMftDzo9MyTAW7KgmI -uSdOEvB1ZUqatOuvEAXuB3aaI8lr6tKUJl4Pl3YhjseNdgrMUk0CjMYlc30EZiaH -07MQJxgwA8cLsBzoltLoC/6kvZLDTNvfvJHF4u8UA9vfv2ErbSE6TSLUToZTNjGP -YdGJFvzLpIw8OB3+p+Y2jp7ItrcFz6Go7j7ql42ORrSiIpw= +DQYJKoZIhvcNAQELBQADggEBAIMBLR3mk8onmInsjoiAsvPUpY4Wa4g5P6pJqwjD +Hkf8aP3El2cjMuaSwATUByFnqR9WawiEHJ+O8I+aHzcnb8iQcTLfogD3ZQiixRqU +x6cZpYbR8toKbDHGPjQiMgYRxocBHVxHpNDk8z/xwqEPkcxg38QSecWfSTz/V2BX +xcSDrODdLuKhrSq2pqk33aUje96u/2aQEZszfBAUg8toBdj+RyHLDnv6PJdMmZrQ +b+u1FxGpfCg26vwm7wyK+suseaTd0/OPE6lUt9UDME2zEUwpSVbmDLEIZCbH5Cr1 +y6VbAAnRr+c3AA07AsYAOx7BC754cMeRk1BQ0MBW/LCIeOY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-nsSGC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-nsSGC.pem index b6e02126bb..27ea9c2cbe 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-nsSGC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA-nsSGC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICwTCCAamgAwIBAgIUNSYDlTKGNOg9Z2e7pUJqsiYNeKMwDQYJKoZIhvcNAQEL -BQAwFzEVMBMGA1UEAwwMaW50LVNBLW5zU0dDMCIYDzIwMjQxMTI3MDAwMDAwWhgP -MjAyNzAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD2VlLWludC1TQS1uc1NHQzCCASIw +MIICwTCCAamgAwIBAgIUTah3otB3nWU1VzsXK8wkE1mZhnYwDQYJKoZIhvcNAQEL +BQAwFzEVMBMGA1UEAwwMaW50LVNBLW5zU0dDMCIYDzIwMjMxMTI4MDAwMDAwWhgP +MjAyNjAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD2VlLWludC1TQS1uc1NHQzCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk nAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N /WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAG JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd 7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEA -ATANBgkqhkiG9w0BAQsFAAOCAQEAFo/dkxID4jq2/H6xnkvDUm+PC4a4mn5Fo44O -yhkvO5y/o7Sn0b7lMrKbmio7vBMJVTnjsSBjy68vM/idFu4utMkEKg4gAAsm/pSj -qyLFJ/9pfxB3azFRD0ZgJ1W03hDdBP8m3A7O3ELIg2ltwCl5lsz3V0YmqFtRcrwZ -4ct65lVgtePwf5/h5XVW0DBhAoc+dK/zFVRm53qd57JkiCVaqZfQ2H+wFH/VzLe8 -qWy4pLQkaEHQcOVLPn5WgrlsF40F4b+/RFd0EERoHqXBXMJzjzHSHPMqB9tAk3/C -cVv6E/I5psSjVpztaMeiKNXBNnU1JD5vM5bwsBsUU4M9GVhUXA== +ATANBgkqhkiG9w0BAQsFAAOCAQEAAEwmJf4a48f5KYFSKwXLukMxpKs531M3dBHb +44HZb2G1vogr4Rbd3eB40hXMc23uGUNAq0WHY9ZRRqczK3uPH3esORaQEGOgfBbh +nSitdRFQkudWFGyXBc8sFdsICdvLWeNx0nRujbYBTUZBTNFqQJkM11eNT5eMMGTl +dn1RLff4jI7tLaj9CspG37Q6MdID/ziRkTKV5g/YDWmFHUEINDy1YHg09z/ORigS +aIqJVQ5RPhvYoCx4kTxIIKohb/ByVqWRgWkAq2pyTN8OleyB0ONPsQOfgEvF5Tog +k3wf4qSkgK75eFJoQj3FyqvUmJV56bA+1VOBDtc1nHB5G2pC8g== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA.pem index b6e6fe4d7b..5f82d7ad64 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-int-SA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICtTCCAZ2gAwIBAgIUY09Zx7v6557OucQS2zLejwjqlawwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGaW50LVNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICtTCCAZ2gAwIBAgIUM6ih51z+0krMwKwZbGsMMjo38okwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGaW50LVNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBQxEjAQBgNVBAMMCWVlLWludC1TQTCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7 wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCAp @@ -8,10 +8,10 @@ k6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhh eZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KW EsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONssc JAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0B -AQsFAAOCAQEAGWzi1fAVFrJbWA9ot16Zqk7NymM1enJoBjvpbZIO2jCGm1a+IN9l -zyWx5SDmdb10tSUHrpL8s56SKUft8HonwtVgjvzNV/3wGk9FYbQTiQWmihSjpymD -puC759juehQPrvPvndbRvurg2ybG0hXfGRNzXow/e1sbe/NAYpHb27eHFKi+sYJ+ -38tTudpYHzJKyvXQlNjfbtSBq2UWOFZ0yJMQHGC3+D4vboVfAe2xzxh6WgvjCngA -LH4CAUEaX7vKiPiF5fjmZoN0ePkCKodBeLjdPwBcO56VjG6/7qw0064C7O1/N/sK -9Z2f5MC5Td3zXqqxo4/ZJ7+TyYx7W1MbGA== +AQsFAAOCAQEAsE/hpbf25pIIxc+d6nwGMbAek4OtzHDCCsZdJvjUQ1Agb0iAu3ib +j7f4QQAPedUS4QIxrFlBsd1qgtCQeGBjx163TL4AlHrZyNbGsrrHkyVR5dbG0n+o +ShQGkBaN9nO+DKu++KDO40Sgy+0TMK6uwr1+ri918gFj1UOhSUTcRVrse4D7bPl9 +4Zm8pZ62thHhitaFeiZvOgR1UI6eARDTzrzo66gAP+5sWiFeDpp14buRM3/aBnDu +MiLdvoWk0/fgA2uRdd1BLR63ir2Cdqh6MCYJFC1TCE71QNiQNH+YpTMQOgRJye1N +mOQcCE/6ZjU1lVyFzLvIlr+igvXcerbG9Q== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-nsSGC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-nsSGC.pem index 391f0c9b6e..e04083dc27 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-nsSGC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/ee-nsSGC.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyjCCAbKgAwIBAgIUHZ8rY2LONMNHAlOV+S/g4g6WcRUwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyjCCAbKgAwIBAgIUc2JM4fVJj572Qo/xQbqh6ZMIReYwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowEzERMA8GA1UEAwwIZWUtbnNTR0MwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg 2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ @@ -8,10 +8,10 @@ DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg PdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGj DJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8W iy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjGDAWMBQGA1UdJQQNMAsG -CWCGSAGG+EIEATANBgkqhkiG9w0BAQsFAAOCAQEAhEu4f78Z/m9DFTzhOMIEURkW -SdO9JbvladE1cBW7WRcj1tKbkuXiIgZxlszMHyCGtjzgFdbgVPMx0Vks93Q6PtLR -jOxIlxdxJHB1itpH/I9SkeuSFRY/FBO8fA81ISn1T5UVzFV3kceXDfG7QeGkEjJF -mw4ssAIIdNmufFNJK16bF5irjejme+r7O2PVkr8Bx26QC0A+drASdZzN7zdr9laj -uhepM28wuEJl/hQ/ASyCkcJS7/YzPKlGowHjmAL8gh0iq/4j+THNQqN/GQpUYey3 -/U1WCh7VS4i95kfbBjWixtOu5QMzzkfyiG/JQOxG9nufqlHt+3WLRgroj9ib1Q== +CWCGSAGG+EIEATANBgkqhkiG9w0BAQsFAAOCAQEAbeG5eMuK98AUh3I3iGNkfNAT +ZRs4wiFYcQQ8UxF7FUBpb3IiP78VmAAobgYSRuYri3WfUsYK0tPiVaHXTPteWSgX +ZXj56HKqUPjKCx7vNOTC4WjtW9VxhnfRLuCR9yCT42b6p8gTOsN0KavyHBgQz7sO +LeLsL1rAoce0MfJ/IoSGS2EPSD55Sx3BqhYiwVJ2EDWbxixflaTNDVCTUfbisuKY +s+wnQULh61jJ9Jafk1go1nZfGatQb6UyIeqo1AjCre2T8SkqYZZp9X7qWIksUoEB +OKw71nNMwq28ANmUGIlu2ExCw8MJZhLPOJiuTo9DnRB2tkxjHxvFUHVG9Vaykw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-CA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-CA.pem index 5b943a28ef..1a4500a62a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-CA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-CA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1TCCAb2gAwIBAgIUIesQwQsJC7ohPUlS7GNlX/aEhVgwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1TCCAb2gAwIBAgIUQ0P2HULapUhihmpGbmdq6UiEZJEwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowETEPMA0GA1UEAwwGaW50LUNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -8,11 +8,11 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoyUwIzAMBgNVHRMEBTADAQH/ -MBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQBitLm2zFzp -mU4ONjjfA7wCEvs4mXZEjQOgMta8pg3Zo9kTuI62BjD5JiAGj/ibxlvEseXqq6mW -wt8pdcIUmtWt9xav+9zLRD8sLFt1pUuHkP8xvBurnSSeqsPpwGFnsDqN8VXbiiJa -PVYkjCNouFltnaLG4ZY23q6M7nm0SePPOaPD+QwW6snJeTCGAhvEbfX52dghF8Nm -kkm6CBfWxK2EcYwtBl/ZjQzWXI3aZ/FcPya380HD+CEr5AZNIxRQ393zVx9nnnyk -OuStDCmTT58hQ3OTyBUG5d5D0DcFtCQRwwZ5xHX44G0Egxa7qzxDfUN4ftbmL2dd -4yrd2rh7dKIN +MBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQB91l0WZds3 +b1xpUA27YoF7Rx8pMNihyXuIEeIUTd1KwE5ko74XyzBbEQQVyvkLa828W5buFmqW +xnCRDHllOe3g6Rjb8S6ME0MZyVMcxQ1jk673cYaNt53megxyvNs5T9kgu4n/SIOV +2xgDY1PvJuoXn6w58zP95jYp3yOsn41SqB//q3CvQ/WbSb/qELpFcjvepKlW6Wv2 +ZsXleMOsVba8EVILIWWhjRger+UOLt5ZbMctQ9vxYTVUDtd/w4wnmPXkf1oBnbN4 +m/VEXyL6ut7UYj/vyQDjR7QXbepcoiKXN1Pxe2iIcXYzdQ4nN0QVEIb4PbGQ5KwM +Rn8orV1VLTfu -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-CA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-CA.pem index 78a1c5fe89..2bd40c8551 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-CA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-CA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4jCCAcqgAwIBAgIUf2awEXuj4yWAwhHG6vgQmxoGP8swDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC4jCCAcqgAwIBAgIUEQoF9r4x7c8AtXP23rsosaywfaowDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFDESMBAGA1UEAwwJaW50LVNBLUNBMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo 4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDD @@ -9,10 +9,10 @@ kD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUx owyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/ Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoy8wLTAMBgNVHRMEBTAD AQH/MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsF -AAOCAQEAQB3+1dHNQUdfnIUh2DPC6Bpto6hzCt6W02A6sM9ySucCMWykG700xmfb -837/yDhME8teXkDGunRMSB5XuC4/LbGyxiKE9Fck0nYMy9pnOD/JzsQEHbajr6/5 -m5JaoCRQkAppXXr73XFYQF/rA4avoHy07893GuGGqO+UN1QLKge2fwYxERfF6xGi -vWAWwJvJpz6C8fUpUNW5LQDtR+VLG6q4ei7J0iW8ICnbQoiuMZKxn2Hm8w++VnHV -3xQ22NfzEzFaIuTBxbZcRXCHZA7MoPi3oxmEaclYYdyVmeEgzr5d1JeGt60Yap4I -NBVN01oFXd3uN29f8eY2azGiOPFutg== +AAOCAQEAsyBJXDN1k/sN1QUtxyuVtfFngQ88XZ3f89ArYhdSeYI8gZCHUN/xHMfe +bY+ocua/37WNRGoqaTkIXpVK5Tes4Lr/Xm4oXbo5fd4wFvMl1vvvRpyBRYonfXgz +yr9Wk/RwtD8hpXpvTeoB4KIcyy9Lg9VuKd3dN+lTD2G4x3Q05sj3RQ3KhEJj6ykW +JPDL2uBL1Kg6gnf/HuhihX8IfWaIRb2YpFesk6J/O2Mh0SyjOFUY2WocKCm/q/Qz +uS8k7Il9o54YIIp742ajwXHe4qlOsJz94AViZDS+jxW0Fp+L7zFWm0i7pPWsPnLn +FaUguWoVhJGg/77tQrOeWoOEpLFBrA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-OCSP.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-OCSP.pem index 0347fe3282..17f4977bb7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-OCSP.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-OCSP.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC5DCCAcygAwIBAgIUB7TW0B7dR8IytqueJGa4414PR58wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC5DCCAcygAwIBAgIUMzn8EjqtHS1MvTGo7tWXTKItJpAwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLaW50LVNBLU9DU1AwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -9,10 +9,10 @@ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjLzAtMAwGA1UdEwQF MAMBAf8wHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMJMA0GCSqGSIb3DQEB -CwUAA4IBAQBJdyF6w4SkFcOTFlDcfZsopvxoXPibXOzN1gDMUE+953Vx6IssCFZm -9HKfC/jtmNj2rfLsfViU70MuosVypWr6AUpKis6m3WM01gZ6klogXlCujGYo7Ysj -a+Zld3smRbrkJxmjybytQGmae/lAmhSrJaawmO8LDY28n2YxD/qPWJ/sbMXkypZm -LslxMwc3F17bFGgu31q8D058K64eV9O6yztH+EgRbvU0er7byXXS/CVPLIOCmU/z -Gy7Jb+il3F7drEfJB0b8YgoLqZNbxqffmNymmXpprBlrnBDD/NttFQqU9O0Jv9wY -TZcfnw6BjG7NrQlZMLqJBxwNWDUwCe6C +CwUAA4IBAQCwoTkjLRDjEXpjLd1VPPB8eVaZTWSsl8uCBf4OFeQGie5ke9G/nmgO +qTCV9IP3hlYP/jyAfTUwICGrlcek8hix5Q0IJhjwcUitrrQq5SjhdeH9Oad9RcoW +hfuocOYYrZIl7DcD9Aae1yHA0fOanVDdT9dOmXX/7OEXjCNF6k2QjMWaPoZ32fRL +ARFCHUQHhggucCd3IAou7Cs7b8o/mE8kLot5c8M/eW4opaiULPpFnCNnbhXG4zPG +Y+psnrWw59dc4qYSReK5vvjMZB2iZUj4FNmelLz5me9Sdx3oTVXGtJMo1NX/jXag +IdOaPK3ZSZFw5XifgckV3VCA2bmUz8/n -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-nsSGC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-nsSGC.pem index 197a684087..5fea5840dc 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-nsSGC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA-nsSGC.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC5jCCAc6gAwIBAgIUK12lOyQOxqkBkMkI68qyMBkwHfIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC5jCCAc6gAwIBAgIURZTqqPZjRgSLMsl9QMH3zO/n8ewwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFzEVMBMGA1UEAwwMaW50LVNBLW5zU0dDMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -9,10 +9,10 @@ kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABozAwLjAMBgNVHRME BTADAQH/MB4GA1UdJQQXMBUGCCsGAQUFBwMBBglghkgBhvhCBAEwDQYJKoZIhvcN -AQELBQADggEBAJOtS+ALFX8dQd7bWtnZg5Tbun4464Yji21RopifcSCR28TcXbWd -77bN6Qe7azAbqZxbt68qVRGhQMJ8GAz0Ag55qzgTvUSAWZJtB44qDLLizCSEKS77 -qCOIGv8hEH2ZgZY4Tx8mA0nEAw6UEBQ4EW0nLybP+Mi+Lk5M9GM4eTcA4qiqQV/n -Fh4rlK1OWCjbxmdHSUPjCWmN+TjqB4u2Z2EmiWXhE1U4uvdHju57lvRUaBnWGReK -NlZf5Xq0VKIyex5DWXqCZwKDq63vrJGXUhz9BXPQvRkmh9lMBTvdatWGYYsULa4N -p2/GohHkkUcCofjBgJmCLzb6X1+1GGSikS4= +AQELBQADggEBABafyMUhVuy9pVMl8vQChpdTTja4mG7VDDItEwT3vJAPvoLyqM1T +Bw5GRTY645J89dTzB6vt54EMqmudwrsTZ2KzV9NRRIFHZTjBA5eGEqcIaCZzT6nE +kof2fbZKnMu4qTJ9nNkmfgiLGwSoxuPwDA7PHWtk+oHCHsEqN46oJyLQJ0bqjZcD +uojBCC9wxUQXDbLRcKt/5u4nDP9XhN7AatXMFVz6eNyIXW1Kw3BGgDKtGyK+zPWA +3t/nZThT2lQ9IPLL0xHQdUG9NFu0WAit6VIf1x8M1COg8hfZXELb2BhRM9AUx3KL +oUZRQcQM2rpZ1PWlEDiqb0yk+YNMku3YPPQ= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA.pem index 7025a3ca8a..e79ef82781 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_eku/int-SA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1TCCAb2gAwIBAgIUeYGk3ItH3s5Oj53EtS2t9wdGAlswDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1TCCAb2gAwIBAgIUQyu/EcyWcL0Re79HDIBax9Skb80wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowETEPMA0GA1UEAwwGaW50LVNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -8,11 +8,11 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoyUwIzAMBgNVHRMEBTADAQH/ -MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQA5M5zVvKf4 -GU7hAqg7iUx2EwYA557bTDZKELXn/hrVOzxAnxw89755BqJ2tFm70Spn8W78s/By -bRXW/Oaab5U5ecOJu1RmfBhgfN8Teh/UTBedcsbjiv7zSa3XBwaVZexQC17N6QHp -MtyWAShh65ZRVDNcExSQw7CSWLd6yFrpMcQJh6BCfT0IiSFwAnDH7s2hkYzLD3dt -jsgj5WeFuwyaL7vXyZOsscPd2552ljm6v4W/jeTRIVSXX1QOakLAQfVTqdeWNg8x -s8Be/kYsi+t0J4NUYzSkGy5nVTIAYWDkYabqkgkZoBfayx6K/DGBtxTuue4QL74t -eqIsdw6teH8X +MBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQC2nLsMTrZI +V+nSUpj3LePbNtC/RzUh7MtHKA92aeySz7VVbnPeOObzAaxewqkk6mlIP90W1cht +gjTZ2fV7d0gbwKTbuT5BC1NlAHli+bM4doDnYk3YAGPxgU4Sog8Mn4WOhB317Peu +HQBZDynm0Inpdwx4Q4FAR8dl0FolXom65eipheWrDQz9qsjLee6L4zgyDqfbX6pB +T26qt438Ccg7wTU2rl4if+6d2eCMv8tGPfRUn91710M6MVNyTow7vEktSYM/LnGo +vDy2QvL4/T40Ipi4jluUFS62BVqydPmp6SoxM3Cvz/tf2XOlTbfZHdDYIJb+PQ2P +qO8Tk9E1c72M -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/ca.pem index 98ebfcad1a..24797711e2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyTCCAbGgAwIBAgIUR0uxMERZhuRvjHB8RmRmt1HcmwEwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyTCCAbGgAwIBAgIUNXStE30iFOJa0yzWDvfMaz8OkVMwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDTELMAkGA1UEAwwCY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwG m24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJr @@ -8,10 +8,10 @@ bA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4 SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3 /K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+Z FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYD -VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBS83kMy6cztuZPOJ2lkCvzEC/G -we5GxpT5xvFvTgmyUSD/x+eo4Rl2ZA4mDilMS8uoOcnoG+Uq5v3W57kQOlYIjczE -r4qm8gjhrkTnYuC3KxM0f+TpauSjQK9/xIq+md/3e0VSPmqF8Wb5utouzo++Tp8p -GfuSIcije0Ejj8IPv55O+FX4Xy4dY3xYyUpiIx8Zx0kP8/AdpOeekQ3BtFt+0Wpg -Jv+A/veKMYOShn3f9OIAO3sPBLsSJEboaGiRTW5R4oGooL/Q5NkdfxNOmpxIMlXH -4hmTG+k2lzsOsvsFU6m+ZzVbrP7lDDnf0aqI3j7T1V42CFoIFzDgTFJ2V2TU +VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQCZB+4G08I6BEZwdT0mRSyUA+nS +myTGwqK2OkdViJ7UaPDcf4A8r0qqYajGoM8+Wrb2YJMKlzRHhuNWjusnwZfXIgBY +xQkCPMhJyqq7FXLc6ajx7WwONaIbSkq9kUoxKcYhwooHoNCaYRVvCVTsRdOzaHQA +Vc/E21HIYhZ8DlreV9p4KuSV4wmsvbbLSKyrak96KwZgU+J4k7T9oD7GW/870f+W +0BwAVdnsDDh4K/VxJcOOTzPaaProgs+7/ohw54Ah7X5hyq+b7wC/eoMX51waMjlX +vmx80GUWoLyAGyQB2BBbIpc3SbxsMq9kONIZ4+5JMakdPDrOQXfdxBZf5qFH -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNull.pem b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNull.pem index 25f25ce557..56c3f73d32 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNull.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNull.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxTCCAa2gAwIBAgIUXyUdrHqMRLhj4R3ggIidZfgEEIAwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxTCCAa2gAwIBAgIUae5Bkurrlyvc1lrCaHLh00bfamswDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowKDEmMCQGA1UEAwwdd3d3LmJhbmsxLmNvbQB3d3cuYmFkLWd1eS5jb20w ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH @@ -8,10 +8,10 @@ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH 4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86 exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0 ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2N -AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAElk+ZCcfsonAQpmr83exG1Cjf3Pq6OR -8RUtakOnERALlHafY9icXfeEYpQ+iaNd5E8dg9svBg4O0amoR9QurA3otUzIdwgx -yEI4r1AAV6AhQqCZoU/p5ZBp5i+ocGwN5rkf9luWAKWc4p5u2e+ABtsqKOb1RXBI -POCP0mGAr8Pn4wsf+4jiRr7KSKPjDZrxOL1NCsxXW/Nrkko4ssdCBao0vHl32Lsm -lVzRTgigzSFA3lY48/GYpw4/QMnNCTUtGOcUUE9Y8Zy9pW+O1sDbhWd1H0La3mC+ -VwfAXbnDLulczOwsi2QPdZ3ZGNqVrWOmgCUznPQoSgDSk5VhJ8ai+no= +AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAADfHKlKZSwku5QfYmW1bnlztVGUuBqX +2muVe8w1h5TJ86nXRpm6gN33/WTOXaivdEBQSPY+BkuLuFwndu077lg0Laa/vhY2 +lVH/EwwOZPF+Jf7+97InwLd8S/urj0d3rrtgDv4d996aEPbu/zr62ypfkJQmZZri +8XhQMTy04HIv44bIQkZhD8klehKVvgGL2yWrMRjUC//52C4PcjyCIyO2m4HKkdxP +w5/wo44iDtdIV02Wca03t1PnCX7p0hug2jcGpNeBHMyS51EzxcRGeD+tJZCAXrrt +i6NLb21X4W3puBAtS41ynL+7q5oc/XQnCLhfReSLChhK1RhSRg9398A= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullCNAndSAN.pem b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullCNAndSAN.pem index 52c513fd04..1691056a66 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullCNAndSAN.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullCNAndSAN.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC8zCCAdugAwIBAgIUT4EzpCH+QW1mIyGQdAEJWlYnAoIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC8zCCAdugAwIBAgIUPVC8aUEnUt0gGppwV3pswFzgZ6MwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowKDEmMCQGA1UEAwwdd3d3LmJhbmsxLmNvbQB3d3cuYmFkLWd1eS5jb20w ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH @@ -9,10 +9,10 @@ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0 ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2N AgMBAAGjLDAqMCgGA1UdEQQhMB+CHXd3dy5iYW5rMS5jb20Ad3d3LmJhZC1ndXku -Y29tMA0GCSqGSIb3DQEBCwUAA4IBAQA6wyH8ZbTcV9N4o5MycEPE6z0wNNYKxz2o -SvaNCB+fsE0PzBS028DCwuGUNYBnxLE1IC5EzV+/G5sUoWbhg/AxtDz93DWzD/8v -DMnxkp4RRIbiUJmjt9q2WUkHuWCkVounbeYcFZUG5n+RxXeOeTPZ1UrU63kuNpSY -1wpzupLooI3x+eLsxMdoM4n4fyzELIDLzF+miqDYPoIHq3LqH2UBlN1MPQ0TvNBW -qBcTvf7OW+pFilN/YkEqI3Q65koza50jLemBzx2OBZUGYG92WARTD8+d972Rp7O7 -by40hVga/2YbBrhC/JeGJ2inxOnWYe0ATk6HE07GPNHKoEq/3Lvu +Y29tMA0GCSqGSIb3DQEBCwUAA4IBAQAYKHbeQnHlxmX0E8PA7/XAg/PqzTCbZOWF +Fvo4G5BYn4Ka1GQe8fIgjImxIPG9/s7iPiFOPtOGL5lOITxIRkosafYdTXgwyv5b +oF31+OWRY6lfmGAElWvDSXujZ+fO/tKeK0EVb59fFCyG7PMllSkY037CdEw65F8c +BskT77rA+sXoxkbr4HkLFdRISozV3G6Dr9tst2iXP3jjKZQMEcYGojsSJ3fMdoLO +3oGXzwyGotYa5xkmS7WWO4FU2jGsjc9y6BxQ2L6aV6W+yoDxI/QYZcP8RtyBCeWW +qAYytg1NogKtgFuj9fhBOnWY5lYQdXCYPviq7ITsUIOxXRCv6oQ5 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN.pem b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN.pem index 3a0d8b3e5e..9bfd062d9b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC6TCCAdGgAwIBAgIUW6LN4qlW1Dc30gDOVe9AjXyzo4AwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC6TCCAdGgAwIBAgIUCQwAXBpAyKVw+hlVbfMKTRZuvNswDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowHjEcMBoGA1UEAwwTZW1iZWRkZWQgTlVMIGluIFNBTjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs 9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8 @@ -9,10 +9,10 @@ kqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJet lmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2r kQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMsMCow KAYDVR0RBCEwH4Idd3d3LmJhbmsxLmNvbQB3d3cuYmFkLWd1eS5jb20wDQYJKoZI -hvcNAQELBQADggEBABV4/vlPGeivIDl5tQbgKQ3iqJ/c6a2c0Vu/Eq5mmXvY1OIY -kTe6oMFmPG6wZmnJk8NTtsShEFUplDAero9LdQBJQ5gFwac5fzGFmMDlgHxMvKVC -RAE9A+s3mwB9p9QJKZy67nQpRlj2EtM0ZFDLDNYxBOCg9Bld/GDftq6ureKImEip -7Vce2SNSiQ7QgcY8eSbbIuqTRT0qJZ+hC1XyUiEMhEpkWHinXoeDhzDyULihw2z/ -JizZqQcwPoOHni5mSYrReJLa6mm5SNrChOq5Xsi+pGUDByVlD/29YbB300V0qz8r -tutZSbcaAwcGePW5nv2qpIXbM9UazhtMOn2BL+o= +hvcNAQELBQADggEBAK12yh2aR6rMKKUWV2v/oo77orS+D0M8ZFDpxVRYvEw90TX+ +G6aDjQT9NnZmXQOcwGJK3YNh0shFl8Q+1mVeDuxFouPslQjwD9UXHJ14JOBuT9KT +RBo1F1bcbabY5/bptGppXpuqHkg5GqC8DNctYxC7EKjPDW/U9Soc3JLLvTpwgoZc +VB9Js/r7hy2unsA2yd9Edk1TPDBTIABx50BfCMyHRNnhXdCnO0HIvPQkk9qPNf67 +gxQMkAH6rfdmHFn2MURzBSbtUWFDzQSm7diPA4YAJ0cA5+QEJC5LnpM9Bc7ppbPp +0oMm6/uGYoOcZ4w4VVmrzi1lhHf7w4McomGYD2Q= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN2.pem b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN2.pem index d6be21a41a..83b2fcd574 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN2.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_embedded_null/embeddedNullSAN2.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC7jCCAdagAwIBAgIUKVy9eQmFZByp+3GxYR809iAZen0wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC7jCCAdagAwIBAgIUWYD26usmwaP3e+W5vv+ZPKh9OoUwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLYmFkLWd1eS5jb20wggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -9,10 +9,10 @@ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjOTA3MDUGA1UdEQQu MCyCC2JhZC1ndXkuY29tgh13d3cuYmFuazEuY29tAHd3dy5iYWQtZ3V5LmNvbTAN -BgkqhkiG9w0BAQsFAAOCAQEAMyQO0NKDcYIdUuD3D7XFPT7Wm8ilyTdCo4dsNyoM -XQo0zy6mmtayunwb22CkpjzvXYd+PUqQuKsNJp2XxZC6ucR0wRR0UaufEsmplld9 -fxEJOo8oZ5kN5O66a567vOWbYyYRm/Y9MmJwdsTxIca536OCJfEmk0XI3pjmeLIv -HSTcTelTmhjrm38AeaLcW7Vua0bRd2TrJJtYMETqycf9u5w11ZUV8qEKam9xXd51 -LwPOq0++SRfs571PqFakil3y51xWIfY245y07oB8lwjbYEWWjOXRguhRF/jue50E -y87Q/BGC3AA4EHdf1jbNuXprwFzMEnIHDjRVd+j/EQMfBA== +BgkqhkiG9w0BAQsFAAOCAQEAQygeZPSOnBvsBf/c/HydqkcPeVB9yGVETBz/lG/w +SqOvr5wgtjCEXEUQR0dVNnwy3elnxFeM5vJoed8WKPdZ/pm02t86Ppip4YKEb5pu +OTuYA9PpOwyqaiOPDk8wUSyPQ0VgMzCjfkLOuHaqsZj0lyGA1ESwNL06QKcBwTOE +wo/MiNCE+8deut9r7mnbrET+VioFb1cxwdkNnLKT5dGC8/4EznFTJz+Zkj9VIIRr +2aSFWjDP8mjmezvcGscmxZnkF1bpyjSMZLzTcQfomoCK4SNqbG/CgZM0ss14/hA7 +CkkK7u+dHaRROPZ8dVGZBUjXlPJotcjdFZvSxukhiQKhAw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_expiration_canary.js b/icecat/security/manager/ssl/tests/unit/test_cert_expiration_canary.js index 99903c8c9d..be84650951 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_expiration_canary.js +++ b/icecat/security/manager/ssl/tests/unit/test_cert_expiration_canary.js @@ -17,26 +17,8 @@ // 5. Needinfo the triage owner of Bugzilla's "Core :: Security: PSM" component // in the bug. // 6. Patches to update certificates get created. -// 6.1. Update certificates in security/manager/ssl/tests/unit with -// ./mach generate-test-certs -// 6.2. Update more certificates with -// ./mach python build/pgo/genpgocert.py -// 6.3. Temporarily uncomment the code in security/manager/ssl/tests/unit/test_signed_apps/moz.build, -// build IceCat with |./mach build| and copy the relevant non-build files -// from the related object directory folder into this folder. -// 6.4. Update the certificate fingerprints mentioned in -// security/manager/ssl/tests/unit/test_cert_override_read.js with -// openssl x509 -noout -fingerprint -sha256 -in security/manager/ssl/tests/unit/bad_certs/certName.pem -// 6.5. Update the base64 encoded serial numbers of test-int.pem and other-test-ca.pem in -// security/manager/ssl/tests/unit/test_cert_storage.js -// 6.5.1. Get the serial number value -// openssl x509 -noout -in security/manager/ssl/tests/unit/bad_certs/test-int.pem -serial -// 6.5.2. base64 encode the hex value without the prefix -// 6.5.3. Update base64 encoded value in the test file. -// 7. Commit the changes: Mention the year of the update, the date of the -// next expiration and add these instructions to the commit message. -// 8. Test the patches with a Try push. -// 9. Land the patches on all trees whose code will still be used when the +// 7. Test the patches with a Try push. +// 8. Land the patches on all trees whose code will still be used when the // certificates expire in 3 weeks. add_task(async function () { do_get_profile(); diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-all-usages.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-all-usages.pem index 0beb779d82..12d5a360cf 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-all-usages.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-all-usages.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC3zCCAcegAwIBAgIUfUJRsvbqXHpcs4xU5QvKMQDfP3UwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1jYS1hbGwtdXNhZ2VzMIIBIjAN +MIIC3zCCAcegAwIBAgIUZS/erROQmck7RhwBy3NghZWuk3EwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1jYS1hbGwtdXNhZ2VzMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq 5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SSc An7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39 @@ -9,10 +9,10 @@ ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYk zBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3u JtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQAB ox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIB/jANBgkqhkiG9w0BAQsFAAOC -AQEAEvAOqAAGGOn60SxLX6n7MRi90W40MtOVeUGRuZ+jv948wEre7psScLphiVdd -RYKQBV/RDRFPstPLPRaQ/2B9G0Gj+gc/YbRS4TNGmHs6CC+MCkCdTKlH9+PxJLKp -HOvKs5moHlnpNFF52GKBZNgF9qR5qY2cPt+dB5Kgc0FciMP7IdmBfCeXFhhvjM1q -GnzDlSR08xIoUh/L4ed7Kb+tYKtDLkmUDGe3RUO/g4TjZ6AdXKBscmpV7jHhAtv+ -/yixCb2GIwjjB+s9pwNVrpU001NAhtBWVHGvqP1bxfOII39RS+kSMsMRyzNj2N5z -sfhzkh2Eu46kRPFS1oL7arGFLQ== +AQEAORnoux7BwnaKqiCBw+qKZEIy4PEVv0I9TJgLwOX+W+YammhPowBrH6JeZjJH +dRZrZ6VQjFLQa/9pAZN1HjZyFApK/NiDHI+/RBzHCHYhJhJvqJViZm7IsyEG0Tvy +DoYIZ1w0KmhD3CfHcnv6w+tCScxwl8L6r/hE3HOpz4CcvPHxFxbAlfvJJQA4HRBo +U9EjJv8sRGZ4yafvj1qxkV8h+9wN+N4rOzDJogg0Fn/gaF2COlLyELWRAqNCG5Ie +KbDZlB0agGZAOkPeL9w1sahPoRgdNmHE/6a+N9po8EJUb2CcGg2v8gIyHG1vBf+X +rlQCUL9pfEjA0smhZxMZG+1CXA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-missing-keyCertSign.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-missing-keyCertSign.pem index 10e122695a..91dea6a2b7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-missing-keyCertSign.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-missing-keyCertSign.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC8TCCAdmgAwIBAgIUEWtpq7OwjeGQa2dG2juDfHbeRq0wDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAhMR8wHQYDVQQDDBZjYS1taXNzaW5n +MIIC8TCCAdmgAwIBAgIUHwSIjywjHlVUGBiQJQcu1pPbU4IwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAhMR8wHQYDVQQDDBZjYS1taXNzaW5n LWtleUNlcnRTaWduMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohR qESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+Kv WnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+ @@ -9,10 +9,10 @@ rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPv JxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5 Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6 clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIB -+jANBgkqhkiG9w0BAQsFAAOCAQEAohGZVRufZwenSM9yqoSFj0VUNRP0zJ4ddZ8Z -0XlP1uMdsr9TOUQiBBmbJP/D/wGZfSYyH+T99qu7MpfNLQHUtnx7XceM22SELTUY -gsnBdYw1bTrnvHr/BCQyHBnKz+qGSod6O2wbYUnXnuEHIy7ecm3qxTD2b8el5Kut -mpBCsmN+C6NlAqFBsPT0ARnHsHttS1rG+FOHm7lQkxzKhKUBTOxHWPjcMuBS+0Xl -bpUtt8waf8pevQHmiXpEExRjwxf5qmTghfmBUym91rj5hWpBPSlg9J/uSEr+oiYZ -wHoeKBykWZQOCjD7Cw3OC4JOAr7SSnyr9cba2rCFBOdx9g1JSg== ++jANBgkqhkiG9w0BAQsFAAOCAQEAk7tzDMlPpuvxPvYgVscSw+bzyYRfuH3AlfPj +MYdeBuczmjsCBS0LhFMgSMkU29Z/Lnxl6I8Q2CTnEqBsiEJGUSj2HcKUnmCVqc/7 +peIUVCKcMNPyabyLFbGOmPs9IvM8mZEi9Lpj/SoM5+DuG81N+sJo1u07nLskWncF +VpFj4dXt8ztvjHlqhNevgDHgqSHB1LrO4T1SHwtM0gSS31qEbpIFy25TZQDpRi95 +2V5XnX4LYWDEqllHCFbxgq+CtUqSSl3MGJLDoRj5RRmqZLFqfITq0F5sIkjMRSPE +NnOrX8rYoLb37EGTS9g0XKx1rqdt7gm0gkKoObwaJFPA2UxLpg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-no-keyUsage-extension.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-no-keyUsage-extension.pem index b3d08832a3..3f60457b61 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-no-keyUsage-extension.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ca-no-keyUsage-extension.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC6DCCAdCgAwIBAgIUPQegieJzkqaawMQO+sNdKB5KhoswDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGNhLW5vLWtl +MIIC6DCCAdCgAwIBAgIUGx5wQB1BwrNXKgkjKQuIABY2yPYwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGNhLW5vLWtl eVVzYWdlLWV4dGVuc2lvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG 8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0V @@ -9,10 +9,10 @@ gg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g3 04hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l 0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz /kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG -9w0BAQsFAAOCAQEARiOV4TrvaZ12o8fO2Hyb4KlkCBBP/yppSntVZa+yfZMpH5K+ -mjW8h5acqb9NU810zur9PcLL1RYQ5JnnddNQPrkjzBhx9Gnu4pJisWOmkfj7oDlV -u85sOYY+IWFtvC4QRTrh1YXYsSXf+C3f2syD6VEYaWJqPJeoWp6uustrLs3rZiNw -ko9SMYKZyht/ndtfbi5RCCt10xSaM0L7mOK7JjJuSnvDlNLBbZ2UrKtpMBfoYwZ+ -ad11LbV78XrCydN98aK7xrOZgWnbxRN1Y+Y/2+tJQHLqF0I0q7uGbnUDLmoCusMf -ofvhD5Si0pOEYFsCuSYYu1AVCfAFHp0nNz9qUg== +9w0BAQsFAAOCAQEAdEqj0uMGpRDxcnS8vMlrAiGD/WYHs/oyYiatoc8mkcXTG0p1 +ErwfN6UJqA0G3R7JYOqYLwzlWB8eTJkVVUjVrvQ6lRWTHrIClTwzKMSuV74KMuM+ +jdafnGqZ7yoBZRWnUTyhjlCrGqSOlooNDO96R2o74fwUb3xA2K2zqd8TSzUKszfx +zO5NpFhMcPsIJzoCdJOQaiYxNSlhl6ztyzSaQ4EKOtvONE9NR8vA3MbhMx3CjrFG +8lU/Hr6C6Y0pzOTyR2qq/HdKGFf4bTIC8TSqdbgUF7wS22O/HVM0SLLOQyi6AFor +f4hYTSeLAJh9i0QNj/iJKXTln1KOofjUC+7c+g== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-all-usages.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-all-usages.pem index a2ac3e5279..0b519b50de 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-all-usages.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-all-usages.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5jCCAc6gAwIBAgIUMVPF7y5Dd++AnaAUqhDow6Brs1MwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAtMSswKQYDVQQDDCJlZS1rZXlDZXJ0U2lnbi1hbmQt +MIIC5jCCAc6gAwIBAgIUE+jMXKZKIsfTa5oUfh4kUna6CqEwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAtMSswKQYDVQQDDCJlZS1rZXlDZXJ0U2lnbi1hbmQt a2V5RW5jaXBoZXJtZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA uohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGoby a+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWC @@ -9,10 +9,10 @@ D/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfT iEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXT Ce+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+ SSP6clHEMdUDrNoYCjXtjQIDAQABow8wDTALBgNVHQ8EBAMCAiQwDQYJKoZIhvcN -AQELBQADggEBAI76P8WdYXCLqtWSSi3BswXVEkKD6WEix1KucDjBdXn9v+Wy0zFl -7EXb9MKpfFxQLdOBerq0RA6i+dEfCQoMJVwX2HHpqSPYykworeUuEQDX++5er5gZ -OAOpBc/414D3GjR+dbObEchMiYiFJcJY/jIrF4LlGc3siT1uRkrD+WNGAPpSQ+9Z -Nsw8v+xxEAU210TWENbWBTjtcS0ntYo4NGNxbB8IPQOLXvrWHcZSLug28ShrWLsb -g8FrpqzZK4BLyMXlj5G7WMdQTD/YOU3zPTYTRpESPErkOmwWEa3n4t4yMr+N9oqT -aIqWeJU8OvsmmvdjnOLyLdNfUQjOSrG2m1I= +AQELBQADggEBAKCH0yPRYafPQcQAz2H5ZBAf0WrXp+u07NCm+YsggfIBfHIYWrZ5 +40VnVI512PKgCVt3/VHyDvfbK40UJa4/j0KZTUdDlvlauFy3/lle/kMxTtl94yvi +i+15P0QpfZqRRdTSvFcYOFi14E+HYxzSeHAGD4Yueyb5SU5SPdoXPfQkFo3fs0kJ +VQMDyddVFE4SUyIX6E99lTofWKvXC6/xbjiVttyyfnluD8jXJd/Rw3YU3ZDw+P+P +Lv1Td0YxwN/G8h5M2Y7xDGvmV2A4Zagomgh0/Ow56eD5KJaZk8f44WSSXy6ruH7B +n+vt+5XRuDraZa3VQyJ/r/4pZpeIYFlFuLo= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-missing-keyCertSign.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-missing-keyCertSign.pem index 802c1c1c09..900479b529 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-missing-keyCertSign.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-missing-keyCertSign.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC7zCCAdegAwIBAgIUGZR0IvCiLF/8PVI7IvDbWOGEBPAwDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAtMSswKQYDVQQDDCJlZS1rZXlDZXJ0 +MIIC7zCCAdegAwIBAgIUWf5l7YSnR30Vti61WycBidKlaGIwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAtMSswKQYDVQQDDCJlZS1rZXlDZXJ0 U2lnbi1hbmQta2V5RW5jaXBoZXJtZW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -9,10 +9,10 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABow8wDTALBgNVHQ8EBAMCAiQw -DQYJKoZIhvcNAQELBQADggEBADsEASDoF6u/BwhsVDXIb68N5Yrf6UYa5PMKwCJ0 -ebn8FStUUwx5hZ42vAR0WS7LwhIFusfuXhxNTTyTul/86EJ44sIx8D98K2yvySsk -I8y55hg4gHJWGu5BMcvz5j2+wABfIrOgUr7PLgmUjJgCPLv9+JaDfpegys3w0DVY -ljGEcY/V6eptJ7PZyCKVRl8dBMSfPys+uuNi1Xsi+6WEQrmQHGVOHDI01JO1MkTa -mJHvn1yQLts68bSfzwYWPUB44xhcBnzIMkGrZiOkexsS8/+obguxiZPM4fVzMDUd -9+Ac57op2yFgatA9NO0JVZKxN+wCzWTQm36ii89k/Rtj720= +DQYJKoZIhvcNAQELBQADggEBADBqPi8Kv6sCP/64u9xYgcQZruzPzy4yXv9hZFOX +YBB2LFHRSwtAFlOowmqLgndGyC9pmQXFml3wtBk6jAspt9eZmd1oCWgH9gpl1EwN +FxITZQZYp5Q8qcsRvCZgZHAErc4E8kaUjpAHOtIGBtu7JINV2sLPsgJ5/lXDh5dY +q1OM3c4277PcQ0ptixCVu1Rm3tZVbMP9lduZKqRjb+rFCySNDe3mv1EpF6jX25qS +qQ064l8qjt/GYl7eaf8nb5qEvurFTQIfZDfhSeI1Zm8yDmtTDvYRaxfZBPXt39mU +JUO93X5h4sueYuXH+Ie2xoybTWXuWZhRwXxebcI/8NUCQCg= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-no-keyUsage-extension.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-no-keyUsage-extension.pem index 0c8c10dc81..2efa9d9bd8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-no-keyUsage-extension.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-and-keyEncipherment-ca-no-keyUsage-extension.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC8TCCAdmgAwIBAgIURfryVNnljrvLWdyC68ZMnkl/esUwDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMC0xKzApBgNVBAMMImVlLWtleUNl +MIIC8TCCAdmgAwIBAgIUcZlfUKGWrf8vCpits8SbuSGiXP8wDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMC0xKzApBgNVBAMMImVlLWtleUNl cnRTaWduLWFuZC1rZXlFbmNpcGhlcm1lbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg 2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ @@ -9,10 +9,10 @@ DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg PdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGj DJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8W iy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjDzANMAsGA1UdDwQEAwIC -JDANBgkqhkiG9w0BAQsFAAOCAQEAFe5favvrwDuUfwvPDuFAgTr4i/4a9RcKsIco -v2UnUgMWWqzXzL3XW/HAP5gI42gtnBEPIFtjT1GHOltIhSw33u39H4JWImmA0yEM -CNdf0UD7c1vf2RukH2neKs4xr4kJDpPaEA+EemUQ+gTbBODEPQY64EwkJlfYrLZs -dkcfDH//GCSr2apVlrwDffu+rJa8lbCIVfJ6Ptln68kub5ngerf7KFfoa4kXx6ux -HUYnem2hkPJHbacPXtejRh0+cpZxGxNl8N9hW3jzMaKts00cq8lNWIbu7UmwW5o+ -EYvedrcmSb5hRlXgkwnUwyDAdTRXDAITfckoCL7BmfF2PxGPLA== +JDANBgkqhkiG9w0BAQsFAAOCAQEAfenCGrgomB1lFgzOjrnu9iZ4rDMYHOVtFMAh +LosgeLTIJY+o5L7y2YfoPCMD5NfPS/Tgm53oVVHnagViC2WLS/USCbcDwuo/vkWE +e2MBTF40GW8tLnSnde2b4VKOK1CmTSUnjaIJ/FODof3fN3FqotUqQEr6xLbyIZ5A +qWGsaZg3KTgbY1TnbKXWQtEpB82ntio1dlx/3DL51tDAidQa7v2em6iBwpbdTTMc +GwkY8MF7V/wYj3pitemuKQE5y6cpVc/HOZyEzDuz6XXqZf+LU+nbg9zKz837sWWs +C62IB3ZEHVN6ckIeyUvKOl488RAS8CP2uDHOc/1zF/eJZfqtUA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-all-usages.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-all-usages.pem index 2f5d62db9d..50a32c9f4d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-all-usages.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-all-usages.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC1zCCAb+gAwIBAgIUOXofK8Uhp5WAf3dmrZf+kvvoHD4wDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAeMRwwGgYDVQQDDBNlZS1rZXlDZXJ0U2lnbi1vbmx5 +MIIC1zCCAb+gAwIBAgIUHV+5Ml0uYDI1HcCmJ2PvLdudbGwwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAeMRwwGgYDVQQDDBNlZS1rZXlDZXJ0U2lnbi1vbmx5 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2 ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdF h/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6n cOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAv OnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2nj tIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXt -jQIDAQABow8wDTALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQELBQADggEBAJg0THbW -qSiQ8RqkqPE7HZtxN7qui1R/rfUjGinCDiShuavGZWOzK5UislpW7Yoi3dceJ5V/ -vzVc9tASvOZIv98Dz/bhtnFITqE6X14rCIIyDehjVpyas7IMrKfxVHiN6e+Wp6QY -e2aDV7sxMhw/iFJyUKhYH2VSiLCdg86CYSYU+fY2ws3/B3Tp050bTbjtIHzUogFi -AVupsqUryy9dNtpHmVYdVzht2mOfClSeQLBws/+0V7vhyAC03R9tRsr6EQg9peeK -B1gGArz/augKXshMtVw9p3QUk7Aw49re17jcq1TrmL1Dv0+Nwa25FaXteHaLBu3w -NKz2oou+4j+Lvx8= +jQIDAQABow8wDTALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQELBQADggEBAIX/3/M7 +rRRvs0FfPxTtJqozm109536bXr0YzFr5EJ8A5EfgAIVYvUgwByi1Bidlm2uI/Inv +x6xvYwnD1C9e7R2enkIqRKCjQHY1zaYVVww2UKF++v+v2tUXtz90uhICWM9Hw/+0 +nT+57wWknfKXF8oP495vpKPPlTjLdbtkDX3c+/xathwOg724ImxE5fMhItGLcw0p +H4uRel659Uo3tctnUhyOe5IYEnm1xA14pfdHnwv7cNp55dx+bFRPxonqjwN4jrFb +yUO7VBHkGV/8E/gxZOvffwiIKUalAFJzr+RK+EcHuOrwC8I3PMgjHVcNLTa45Dmn +mCzuhOMBmxvL+C0= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-missing-keyCertSign.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-missing-keyCertSign.pem index 0161581941..7ea3dbf905 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-missing-keyCertSign.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-missing-keyCertSign.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC4DCCAcigAwIBAgIUH2CAWMOc1QCgws1fYcshkczydkEwDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAeMRwwGgYDVQQDDBNlZS1rZXlDZXJ0 +MIIC4DCCAcigAwIBAgIUF/osx/U799U92nU5EJyd9j516X8wDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAeMRwwGgYDVQQDDBNlZS1rZXlDZXJ0 U2lnbi1vbmx5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESO FtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVr amRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWka @@ -9,10 +9,10 @@ sdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbY VbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6n aOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHE MdUDrNoYCjXtjQIDAQABow8wDTALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQELBQAD -ggEBAEQpDsq5DzX1CBdms9eanS6sT607vrnMyHTG5uMu4/I/eIIuSxgrBIPSU/GT -MgWwO8GT+NdKx6NcLyU0Gxq8/mUbg60M4PceaXPURrUG7jxvSS2z8CCtR4EfH8Pu -G7uogoYiJ4BSL4l1EbB4kUzKEoPQAeAXhxkoWNAMhQNZQfzmLr9Wclt8Rwl8wgQ0 -dZDFB/8MCtArgBn7jroQ58P5W/pAHuVXxzGX/Q/irtHhUKsAX88eR5gzWFZEhbD4 -tfkicvVPUoIClvpwsZjyIUe8uAvCpOvsw6Ja8zVjZ7pjsTfmMBhkRsJP81l3Bu17 -gWB8gge0BC31SjGPaQAk0vQPbbg= +ggEBAC/Xcd5MujxUVQ7B04dO9xDtt5qLpnz3gLthH9h0LX31OBOEn8dBCvtijaIZ +VmjBFbRj+fUOUvbY7VL8QBXBb4zBPu5wOHrtFZQWLClBB0Cxz0LgehJcaOtruqI7 +WjgV4MW/CrpwlH3bLow2hBQfTIeD+OXYe/kImvRw/B3K7h/2XmjfNbt0LzDEMwRe +L6rLzj7BJJVMUXga7tE3TCytVHF6J6aUq8aDcbwvbKPodgxDoTag8GePG/hcDSab +ti44PNBwcaW9/kbR25K1t81X5Ir6Hsj8At6+MrSsH2MCXyiYRZ8da8/KWbiJ49Nr +gfxMuAltZBwqHnMfbAXQpkOb1eQ= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-no-keyUsage-extension.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-no-keyUsage-extension.pem index 9564e5986a..2f2e8d0466 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-no-keyUsage-extension.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyCertSign-only-ca-no-keyUsage-extension.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC4jCCAcqgAwIBAgIUeZ/G6PSLkSQAuFLG0IrblpWtfsIwDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMB4xHDAaBgNVBAMME2VlLWtleUNl +MIIC4jCCAcqgAwIBAgIUFfDtSBWJmhbyNI+ERuNgOp0hLQ0wDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMB4xHDAaBgNVBAMME2VlLWtleUNl cnRTaWduLW9ubHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a dWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6t @@ -9,10 +9,10 @@ aRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8n FthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kX Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjDzANMAsGA1UdDwQEAwICBDANBgkqhkiG9w0BAQsF -AAOCAQEAfHpUWh3sBk+pFLoetqJnfORIxm4N/QJQeeQCfBkWS08sZA5ab4y+i7IG -fdLSjlAFwZR7yp7CxUPxtTwbzfC7G5YxcaACHBT78kaeHpE1I++C0mrYYP1lQ1n+ -KOwEvde6i+7EwKmLTRLDM9fUlGMW3iguhc7U5cEBQm19f4MjF5+tIxjftkk2YiM3 -iyXEQNXSVGugWzI+4QXQX1XrCtoG+lzw1tPidKYa9T9dGMyZWxOBRXI8tVDq3nmv -pPwS6wg6H2zudrpAjsqV3YZy0Zx/Uv1C+VFLKto84Ut9vdfbQPj9ULtju0wiz6E/ -938TxF5nbzj0nlmVtTm8GsdDKWwwUA== +AAOCAQEAU6qNH3uJZwKlIz2FWZYSL/eeYOVdOhu+wR33KqC+l0Kxa/capRXAlqya +Fvii03xNyupmB9+t4ZiTNE/LXe9QlRQzaNjmIe4Auzt7NFwCRfv+7+A/n1diB81x +XyjcIUNTwuKIG9Jpl2xmsC9fYCfxja1J/M/r7r0vw4kV3XuchMjgPvEB3rx3BGD1 +Nm5Bu3/8GU9nJA3Em6VMkNj6lQ3s3YI9dwPciD0at+nKyAiM/V9riNjy4fmaM6vk ++Vy2NsMLZCgmjbTlD754+ogfRl+PeXCa4AVjbpRzrQs3/1zS0VbZynDRA6U9GDzt +5mN83ki5efGu1piiGX2DsFavDQMPPQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-all-usages.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-all-usages.pem index 6aa9d6b32d..90dfbe30c6 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-all-usages.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-all-usages.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC2zCCAcOgAwIBAgIUD+HY8U+IK/E9706l9B4GwuNPlMwwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdlZS1rZXlFbmNpcGhlcm1lbnQt +MIIC2zCCAcOgAwIBAgIUHS5AHB5RP80Q6GjGk/EJGkAklDwwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdlZS1rZXlFbmNpcGhlcm1lbnQt b25seTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1u togGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6 pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqL KkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3Zlqq fgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3sv Im9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6za -GAo17Y0CAwEAAaMPMA0wCwYDVR0PBAQDAgUgMA0GCSqGSIb3DQEBCwUAA4IBAQBs -FiiJdt97Zf7RFXGOXPtR0bIEUS/2yDE/a5HSarztN8t6Xh4z9MMSB4T3FJAAuNNI -ZK2mGj5DzEnyvYqj5Dq3fHCb6Hch5s9K8NhSNgxPzfCJos0tjn5RT+TD3aR5Fqcn -Juto9DYMzMoBBrWxHH1o1Dp5UaS9t0x1vsW9xc+9yxo0zPmhg7KdspOd6ZZL1W54 -QCQOnrXtYT1HiGUQ89AIzFUAWz+VXHebUK7LkNu4VRNZ2jfcqpVBZw3hL4DYmQOY -9n0YwWYxGOlBhnKYQBRbOWvde6f/CIXB4WeFNdU3ZNPjsStAvjS9J//nRE6PHX1d -LGlLmkFjxrtyQN+7wsKb +GAo17Y0CAwEAAaMPMA0wCwYDVR0PBAQDAgUgMA0GCSqGSIb3DQEBCwUAA4IBAQBl +wSDyiamEWZ5V7Tw4fVkbOus2b3Th5hu5wZNZu72OfsatUzLfFep5WXRppko9ES/a +Pgp54K0SG/0hjbPOspeLIF9rrHbOhUGgQ0qY9ju4+tWEsC43qSyz4tppOWy+Ji7n +XioKuq7LQtfwv6wtkpFzd9pD4w3vRpS3RpP5wmzoU37s3fOY90NJJzu2G3/AXzNb +vKp60ci+wepOXegpzq+m7yplnUGqOwNu8d6g2P0zTWgsyVK7xYt5Zvx7RV/h2g0N +hx+hXA4YguQPLnNu2kngNLAcIEp2suWpvcDKwVTmxDhVI4DQf6NGF0n47Ceh0lvh +MWohw862LMUT6qaHD+uu -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-missing-keyCertSign.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-missing-keyCertSign.pem index 4173c16301..c203810445 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-missing-keyCertSign.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-missing-keyCertSign.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5DCCAcygAwIBAgIUI2OppZYB3FDSt3yEsn+iLNSBaeEwDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdlZS1rZXlFbmNp +MIIC5DCCAcygAwIBAgIUX5mZPknBSPFeyo7omiP/zgBJ9SYwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdlZS1rZXlFbmNp cGhlcm1lbnQtb25seTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqI UahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvi r1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/x @@ -9,10 +9,10 @@ fq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD 7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnv uRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj +nJRxDHVA6zaGAo17Y0CAwEAAaMPMA0wCwYDVR0PBAQDAgUgMA0GCSqGSIb3DQEB -CwUAA4IBAQCVo6vBFVJQt1Og5cY1npi5WNhkVoMsuOaNdc/rA8oqqCzmI1SgOK5G -XsCWiL/vwRL65qhM0C5rLV6GAbWMw1Aaz5kGWEwJIiOrB9SXiT70TGBEc5Y1aa1w -WA5Gwzgq0nGt2KlJwFtZiCFAUofyR/D3vfSOdjZZtnNRty7MfT2fN2SRg/0bDM+m -cZ9ND6LT76vaylaWtLhVujwntDypooNDfvEv7gAzJuCBrpLfM6WKQDFo7JvI4dcY -EklhXY1AzuD/sUN85ReAP9hEqmj4WRr6GsHjzLEqnxPUu2T/xWXkAcyNgzn/mHhH -5itNNdzCLmpBUYojpLqfR0bWVg1wfvur +CwUAA4IBAQAJ+CL/V3toqFu5r6sMnvfiF0EcJMWEPJ3Ef2+BYJQTuxfo3iuiR0xY +arHFk2tEtxIyz9CrGcPLo0E7xe17ezmwB6PNqYKBmrtVAse9vvNJ722av5CGIG1z +2XFWstkGlQCMdA8XcgEiygkUfwz/upEdcF0etHnc+L5JGncI6wl7pw1NsDLjUNtR +buxjfWaSmn076i1WTLkrTa+qFarT6uGTXDJ0WcHQlKO5czeuqyNDwJuamPwRcxy3 +UmWwotLGiN8TWEIk0953Afr0sZ2X9VHeObXvXUMrxuM3DaQMON0xtHzrijsRtneR +ic8RBwuVQ+Wt3cxOXK+lprZ1WfZgZkDc -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-no-keyUsage-extension.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-no-keyUsage-extension.pem index dbd922d936..a4ff1d7aef 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-no-keyUsage-extension.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-keyEncipherment-only-ca-no-keyUsage-extension.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5jCCAc6gAwIBAgIUQZ3xr4f/3j7xCTbUSWa1rrFGcoQwDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCIxIDAeBgNVBAMMF2VlLWtleUVu +MIIC5jCCAc6gAwIBAgIUHWwNV+6IJJNjWJHlM6Z9r9DODNEwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCIxIDAeBgNVBAMMF2VlLWtleUVu Y2lwaGVybWVudC1vbmx5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA uohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGoby a+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWC @@ -9,10 +9,10 @@ D/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfT iEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXT Ce+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+ SSP6clHEMdUDrNoYCjXtjQIDAQABow8wDTALBgNVHQ8EBAMCBSAwDQYJKoZIhvcN -AQELBQADggEBAGtCRgFF6uq5Eqz3HRv4HgJo07E3oTIeMhFYAXTjuShmAjrdAFcG -nDAJE0tiM7b26Vup2Sv6YjtG6dFm6nE9xkrrldX5OEeJoZI42DroX0Wb4bdMBd5Q -xaKj7S5fWYnf0XW9EGKoCtTnN+hfy3GGmEeKEb5R04OCWB5npWXRXh0e4I1P6LrF -uxjZms5I96PBBG6IXoHtaUUxGVnylq/qILBqTHGqUD7A+slV4WPJG0rn8hP5tE8C -TCTzbVvFrSoxlyIhzuQRc8Ru1v/GN8KrusLb2jhBu08n9tsA/ERMJANJo0amlEvh -2unplViImuyy1dv20iWClDuDNiLr0MaCR1s= +AQELBQADggEBAG5rJHfAT//FADQ7TWcb/fmLwRG5OtgQ6LW6Jbz+f0BH1Nkef9gY +fdscd+viGGZOtKoisI7qaKgl0N69/CBPP+iFi+IfNJPJlMypDBOj/pAw3MjMKvtk +KSOM8yCpcSR2HrZGXNPHlNfqcrNxB3BjlRUMKSEuERJn69ZjKIyvDfAg4SoY2bpQ +lMh3Imw9JkH08jWvISGGhe/IKdQL3LFC8Z1Ha1uZRN5pjucs7r4EYTikjNHOXUpK +FyCg3E/yJbux2EDYY2fAAmeL2LVjj+VasI/Lfjp4goYjfcDd0PsFbttn/3+DsRy8 +1all0MfAFXWMUC+VsLbyMozMJOT/hqUq79Q= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-all-usages.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-all-usages.pem index 966e8df8a4..fb85e8e0a6 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-all-usages.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-all-usages.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICyzCCAbOgAwIBAgIUQX0vUdJV2Q3hnY4oSNK0qmyVxAkwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAjMSEwHwYDVQQDDBhlZS1uby1rZXlVc2FnZS1leHRl +MIICyzCCAbOgAwIBAgIUAcmlv4oxzDwUmfUpzvLOECn9pBkwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNY2EtYWxsLXVzYWdlczAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAjMSEwHwYDVQQDDBhlZS1uby1rZXlVc2FnZS1leHRl bnNpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9 braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEI eqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6 iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Za qn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7 LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs -2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAF2HXrXBo9grR1CzYTRPl5iS -PqWCxcWTrzZXLVFuQg9iMFqplRVDUf0TOy6jwIZZgPv07kZhi/PrQ4DFGSzRsMei -s1uIdIK8pfftby8h33sNEjO7OvPSBeo25eO8ZHlSB4lk1wBGzmKM4kSGHd6/XCoO -vhIhkaRw5t+5VQHXil/b3mBYBtHhk61bVGP2H4+fUhGpGqgBd74mY1zUuI0GjSaL -9s87qx+K8wH2RZgMGEc1onVQAINDhHoGOeDggmhgPEN7LMNVyIMEnJxp2wNiG6sA -pLAkvHhjAESHQ+G52Xrzc314MJgBcVQg6shXzR9sj4cQRkr2CyV7MRZgoFujvz8= +2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJzAvy5SzXcu9/fcvf04zTNI +QAmQNZxlNjfVkOqRKP5LF3zOJiiEYjiS270dfEyWn/TnY3tITCxwi3QMxcGoKu2W +fXfHJvkk03S/7ue39wiaYf2QDejjHOQZsTYyo5/CxRotarjQnhe0ywQ+9E4duUHE +vIvYWYeMFGnDMxmC13goQqnFYv4Za/4jQG24xyxwwl7roNgYt/ctSNNiMTo9Q2zf +/W6XI1A1mNRD8lNBRNS7m+STcM/d/ZDvPOHtw1RLSeDCPQ4USUHPMub4PcW9rxnu +sJ1A4wnBXkowDt1lf9OOz92U+aq1uRUg4Ja1Dj3maC423pD3sgUNNj0+PfMFNRQ= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-missing-keyCertSign.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-missing-keyCertSign.pem index 5fb384d4da..4e99353d67 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-missing-keyCertSign.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-missing-keyCertSign.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC1DCCAbygAwIBAgIUe8naPO/6R9BwXFXTeoDEJ8lMCR4wDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAjMSEwHwYDVQQDDBhlZS1uby1rZXlV +MIIC1DCCAbygAwIBAgIUKxcnhL50kL+daGsp4tl/iuh2uNkwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWY2EtbWlzc2luZy1rZXlDZXJ0U2lnbjAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAjMSEwHwYDVQQDDBhlZS1uby1rZXlV c2FnZS1leHRlbnNpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6 iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr 4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP 8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OI Q+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ 77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5J -I/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAD9k0V6cjz/S -hMYbCQYd0iH6nILlsQCl5uqTgzAQy0yqiPaR/HTi17gqElx2vToZ2zYdPd6m+qZP -sjM3oOiVQm7UkKLxOEAijXa7j0Nz/mAdIUY9I6kmUlIblDe0RLPTzqv7bDrhD0X+ -jiS7nQs2+2PqJFjpXmHhvdnZmO0sV42dDx2c2e/fZVJqu50rGYBNJbCtzx0C3mUY -GGEKOTeDeJn2aFqQjrshFVdxhGd7xEcLpiTAa5FBsgYZ1fdp3RVpPUrp0nZjinPC -a+JeOj1l8N5bXCL2iacFc0hIoMWH2klwWtz5eg18S759H7IchiI8Vsk3S1X0PkGn -zEeViIqd26U= +I/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAD9HY6MnnzsY +EA/iRYIpvmLklNR+0EpKU2RQQn8SaEKaaSVw3CmSh1VdeLN6DLiNViSj+6OvUlJO +doveBlRuNSrisaUpWZQFlOmAJrl12wkZpsa4bSUb4QLsbBd0V6a+w6oQn9A40x+r +Wiv34aC5DKvIY8XdkuxuQOlTLLVwhhSg+atI6FkK4QnOFPEZDkmj4IHZnNLE/C+z +c2j2bCCzKGdF4NWN3slmqX+LYylWsHfE4+Qfv9xJ2b6QgVMaaNPPwPTldu/ZaRuV +h9pKvr/tC59CldrYzUb0IM3zBQWFVLQB20ahK0ifsOsE+Jsp/0QLxwl/PNuGlh17 +JIMMtSwiW48= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-no-keyUsage-extension.pem b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-no-keyUsage-extension.pem index 924ae8b720..b25db21347 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-no-keyUsage-extension.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_keyUsage/ee-no-keyUsage-extension-ca-no-keyUsage-extension.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC1jCCAb6gAwIBAgIUTwQ3juh6gpAOtlstxazlGuXxAzgwDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGVlLW5vLWtl +MIIC1jCCAb6gAwIBAgIUI2B6JL9a63EsRfFAr+vQqUy7fRUwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY2Etbm8ta2V5VXNhZ2UtZXh0ZW5zaW9uMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGVlLW5vLWtl eVVzYWdlLWV4dGVuc2lvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG 8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0V gg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g3 04hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l 0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz -/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAgoK3rFhx -hKPm8nRH1ZKo/kQSQK83426DDk3JZ1COBtXLqbj84+e7cmi0cpd1V7GjC1CWWhTq -0bEjL169GzrlWqVJQJrSF4UOGM97Qci+RDQsBeUKjH3iLPJN6j2eT0TRT0sry8dI -BkVd1vDvHGeYHYXbKcy2WVyS58ZmI7SFFpwdFAIov82rqs3I6RT771HRofNvPiZB -pHDkXrYY4SDSvKX5ECDL7AMgMyYEBP4Hqxj5BIcMnqVS2b5Yzb1rbkQYwk1P9dEf -G+19f/rAuHhnOC82aRarvOdCujGguQOuRBCPWLwu3XcYB5csvVb2oZ4a6EBXWcwt -zik92rLmU+v/Tg== +/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIWVLgaAB +z7c1eTNkumtTzLc+YZcZys57DwBRi0kq2rDL8n4gCl32VOzIlEi9mcxJ+7PvIxhz +MLx3KUJIykFBAB+m1CcXFRUcXSyoHS9t7643RDEA4plv6OLi8qmnUPDQgpomG35n +VhE88eEYRqtqsd82FbCMNpS4s1jVKYXbtgNxpYvNLk2KEkfrrcxnMTThKR91V9Jl +mEHfeN1VO8JtSyMWHTRz31m2z3eJqjr04YAtd56uie6Cbm/swydeRgj0abRN44L8 +gzSjBilkyKdnAfKSDZ+pHllrKFvF0KYFaQFLrgkCN4qWKs+01adLz10CduAtNpJu +iu2df5YtK+G4Dw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_override_read.js b/icecat/security/manager/ssl/tests/unit/test_cert_override_read.js index 504ed39640..18a76cd330 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_override_read.js +++ b/icecat/security/manager/ssl/tests/unit/test_cert_override_read.js @@ -10,17 +10,17 @@ function run_test() { // bad_certs/mitm.pem let cert1 = { sha256Fingerprint: - "75:02:F8:2C:6F:8F:EA:A4:6D:56:00:0D:F3:62:9C:47:4B:81:48:7E:D9:7B:0F:8A:B8:6F:8A:5E:33:B2:1F:DD", + "B6:9F:87:57:A0:83:EF:E0:5F:2D:4D:81:2A:E2:04:A0:A7:E5:B2:F8:2D:44:E2:BC:FB:56:A5:41:F2:7E:D4:7A", }; // bad_certs/selfsigned.pem let cert2 = { sha256Fingerprint: - "21:AF:1F:0F:DF:D4:6A:4A:9E:26:3A:61:D2:E1:CE:0B:24:01:8F:4A:B4:97:BB:8D:69:6A:6F:78:E4:A0:5B:3D", + "79:38:FB:FE:A9:98:85:02:C4:36:C2:3D:9C:59:15:46:36:6A:29:84:96:83:1D:53:A0:68:3F:D9:01:01:61:6E", }; // bad_certs/noValidNames.pem let cert3 = { sha256Fingerprint: - "55:70:48:B8:96:F5:3B:F0:52:DD:C2:FA:9D:78:BF:1E:80:0A:06:A3:CB:84:51:4B:C8:70:EC:EA:E8:A3:D9:5E", + "D2:75:19:5B:97:84:40:A8:34:AB:A4:FE:85:94:6F:7D:43:8D:90:86:7B:5D:41:F4:49:25:73:D1:CE:18:BB:9A", }; let profileDir = do_get_profile(); diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-rsa.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-rsa.pem index 4922d5a58a..f79037dc15 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-rsa.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-rsa.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0TCCAbmgAwIBAgIUG5HSSvBIhI6vlnN6IiJjOtsvNx8wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGY2EtcnNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIC0TCCAbmgAwIBAgIUX3eUG53Jw6SxZ9mdXxS4In4bXigwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGY2EtcnNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBExDzANBgNVBAMMBmNhLXJzYTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -8,11 +8,11 @@ w0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCx V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMdMBswDAYDVR0TBAUw -AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBACLnNycDZDO1FES1 -/FU8wpVkqkL4B96MTvKUOH7RTFtuHRpKvID++P7s2YNSSiXnjRLA8fDZVjbg1nh9 -Kdw+KQc2DgXlGRn7+FeDyEWZD1DtA25JhSvi2laxnqAEWl81d846uSOXtE/5cMki -0gL4QJJU+KOhok1lskHBboe5exqSXTaAxfFdj640bffnJIEFQ6v6WbGBgtzBWeed -T2kWUGTRSDOPoJFasy4Fn75M9L/KwKn33qdPXwG1VOCovE9hJk8VR0zfA7KRy+In -UpeMkhdpEV2cS/U0X7MRvh7kY8K44i+sLuesK/z0Z4Sgf70bCHMTuS/FkLwgAhdd -o8lV1Lg= +AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBALdY0WFeQjZsU7Eu +ldjURFuBNz8/BASi436Omoa3fJlowSYJdd/m7QxnEdDmJP+j5pmMFOnPamLEPabF +2pX1yfsJSd/Epq+rdCPwiwEjd/mgL/k8x9fJFEAtzozs/MMh/iIMq/i8IPJ0GtaS +Wxz4pvPupjHO34vvdNINsDIOrWjjzl1ls7v1YdSlYiF2o2EvFFWt4hcyBths+CQz +J8J23JuCI0aclll6AgLu463ujqBHNX2AB+CqI1VYLNL8I4o7zFIhRctuYotNGgbp +0LH7jT2PTPGE9qs0nT47usa3WfMDKi5x5IdUAeOvB7BBkPQsg7ghnUr7wJj9Plip +btnkaO8= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-secp384r1.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-secp384r1.pem index 5a7e4e7ed7..795623953a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-secp384r1.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ca-secp384r1.pem @@ -1,11 +1,11 @@ -----BEGIN CERTIFICATE----- -MIIBjjCCARSgAwIBAgIUU5jJUFjS8B6cOp3SENl0XTOBCtEwCgYIKoZIzj0EAwIw -FzEVMBMGA1UEAwwMY2Etc2VjcDM4NHIxMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAy -NzAyMDUwMDAwMDBaMBcxFTATBgNVBAMMDGNhLXNlY3AzODRyMTB2MBAGByqGSM49 +MIIBjjCCARSgAwIBAgIUE9OiH78aaEuIH7ix7tyzbzPQY2kwCgYIKoZIzj0EAwIw +FzEVMBMGA1UEAwwMY2Etc2VjcDM4NHIxMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAy +NjAyMDUwMDAwMDBaMBcxFTATBgNVBAMMDGNhLXNlY3AzODRyMTB2MBAGByqGSM49 AgEGBSuBBAAiA2IABKFockM2K1x7GInzeRVGFaHHP7SN7oY+AikV22COJS3ktxMt qM6Y6DFTTmqcDAsJyNY5regyBuW6gTRzoR+jMOBdqMluQ4P+J4c9qXEDviiIz/AC 8Fr3Gh/dzIN0qm6pzqMdMBswDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwCgYI KoZIzj0EAwIDaAAwZQIxAO0GJz6haDpUtNgaQ3SESJY85j6+gRcD7Nc9cvCiVAZZ -1OxFRuhW515lVbeTqfcA8wIwHGSKI8G9Bob0qFumBf/E+hp1ac6YpGyE5s66hkGG -k81ENysauUyOGqQ2a8JAPHo5 +1OxFRuhW515lVbeTqfcA8wIwNNFfGjhWzIIrxogWwzqHcGwm3KmIILF1gA65EnNZ +MZ9X7kLRdqV6p6X/TgtjKGlU -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa-direct.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa-direct.pem index e39e5820d5..26e53a3e45 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa-direct.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa-direct.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICuTCCAaGgAwIBAgIUOVnEB54k86N/OSTevnwEqNsxOacwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGY2EtcnNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICuTCCAaGgAwIBAgIUVzU/7SiydiInWhVhr1LyrbhfuC4wDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGY2EtcnNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBgxFjAUBgNVBAMMDWVlLXJzYS1kaXJlY3QwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVo V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p @@ -8,10 +8,10 @@ V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p fbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZh W7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EI TjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZI -hvcNAQELBQADggEBAF+akqstWU2I3/3mNQ8MMHTpRfEVGCSoAuYMc1Xm3G5G8h9t -xyVy4LKZFrTlHzo0aTSQhs/dLjjJuxsOkhTCb6+dBeesJ7M36A5uRowXzsVq78Wi -ESIA11xMNnoEa9HnPSxr4VI1ythQU6dahCFdIGkYlsMcn50QvhyJnUYvngwrDdZS -DmIEIODrk62U6BVtxq3n/GfpI1uegRdsjIWg82hsAEG3x1fNzX35ezIXQDnN4vJ8 -rFymAcYt6SPetjdKrIvMMGL65Lyj3YsfR/a5LrjTJVhSTnKdoGRStuAc9WvM7xck -wN9/7jA5mf+D6/zOHYye0afh8vPkF09RrPq+i1I= +hvcNAQELBQADggEBAJNqtokw/Q1l0oDdDwTG8msxZpZjEKqzazm3i1TYEuzcHW/4 +DdGo0DEXmZSTqny0ifTJQLToH2X8zBPajJOpy5/5qEFiCNvs//Oj/bqaPoG0Lhwj +ZplMpRoJJRBOSbJ9eEr/7fTC7VyIKs9ca6Y/MdxUqQTx8u1iyHeqS/6OJWM9bfbU +BLbHzhYj7Vj177sdsw4179+sqcZOhszb5WfCT9eWQx1HJunuQZdHfd74a8WU7Fu7 +9gsqqFALb0h5STa6XQCQIFPoPCP7JhIDihnGCl44Om9t1qhu2X8tLVIfGfvnBw5T +Ckdjr2gPFVnbB/KQHcMX8b+9CKwN2Nek4uTxnLE= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa.pem index d11634325a..f0d05415c5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-rsa.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICszCCAZugAwIBAgIUEQR5xFRZVScWZSF1L1d5QaT5NHswDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHaW50LXJzYTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIICszCCAZugAwIBAgIUQe+8wzYSso2hGu+57NY14C0PHxswDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHaW50LXJzYTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjARMQ8wDQYDVQQDDAZlZS1yc2EwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQEL -BQADggEBAHhWy6MRgbb+C5LzB0RbDt4Xcv+geUMK7xRYgNvzMa5xKvg9CtI/9fiJ -2xM2+yqFK9iFz8+epAiBybtciIs5j9OHbrs9g+jJ5rOr9FvIBco6oz+YeBGq5OZI -XnFp/kTqxVAq5pMdBwrtYtw6IANIVftH1eLhPj69dR1i2OWPiD8E20T9qYXzsGfn -PtKDw6R3gJi0N3EVKLgA0mMUmsiE/Gnl2VBj3DUVuouPTH2UG7rRa44hUkbU/K3R -h2oPaMp2GyaA0mfHx9Kf/es7fpVSjePvNqz38261azp9Oe360gavR9zK5jDjcoMb -HT/WUgcLl6AAFcbXYwmNsYHCT9SbhS4= +BQADggEBACQbazgtpgxD0bTNe4BVaJGyIgOr0vKBbyR4P0mqotop7V7RqOpL1AoK +9IWIQbnPJBDlKawmSqzfo2c1oZWgQN1Uo59ZzhB9Qih9sNBWCI5vMzwsP2XXZM9H +xXFX5Bja3gckcOjZekHT99BQIXtvqJ9fgKoeE6HNOanJWGUlyD3f3+IQOOJnNYWL +Nnei2wYixn7KXAiiijy/NUUii9cDmLJLTKl75+Cr2i+nLumGwal8/oCDIwcqfH5J +9XzsNqPo9uEFg1Fc+u0MGkqiJ1tW3d+cYS7jfjEWF4ncuv9gcXTJWfKnZdvam3gg +tuhb3aklfpQAXMuXh4HDfNiivuRVcZk= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1-direct.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1-direct.pem index 4ff924f89e..4b6014dd6e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1-direct.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1-direct.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBdTCB/KADAgECAhRj2u/Nk2hSHp/U53166KHct487KzAKBggqhkjOPQQDAjAX -MRUwEwYDVQQDDAxjYS1zZWNwMzg0cjEwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3 +MIIBdjCB/KADAgECAhRFJIFsBhYl846ursLXqVZtpozhfzAKBggqhkjOPQQDAjAX +MRUwEwYDVQQDDAxjYS1zZWNwMzg0cjEwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2 MDIwNTAwMDAwMFowHjEcMBoGA1UEAwwTZWUtc2VjcDM4NHIxLWRpcmVjdDB2MBAG ByqGSM49AgEGBSuBBAAiA2IABKFockM2K1x7GInzeRVGFaHHP7SN7oY+AikV22CO JS3ktxMtqM6Y6DFTTmqcDAsJyNY5regyBuW6gTRzoR+jMOBdqMluQ4P+J4c9qXED -viiIz/AC8Fr3Gh/dzIN0qm6pzjAKBggqhkjOPQQDAgNoADBlAjEA7QYnPqFoOlS0 -2BpDdIRIljzmPr6BFwPs1z1y8KJUBlnU7EVG6FbnXmVVt5Op9wDzAjBWkiik9tYh -ktwuOw8ZYlR9poGn0Ao7WsDZeWSTy0WCrgYOWjHam/7wywCnHqmyH2w= +viiIz/AC8Fr3Gh/dzIN0qm6pzjAKBggqhkjOPQQDAgNpADBmAjEA7QYnPqFoOlS0 +2BpDdIRIljzmPr6BFwPs1z1y8KJUBlnU7EVG6FbnXmVVt5Op9wDzAjEA4CQwv6zr +HJGOIuzqM+9pE9w44CPSquejnAMg1ddMg/Ul44NWc76F3gJLhTXm+22X -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1.pem index 70a0fd98a2..fc6bb89f46 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/ee-secp384r1.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBcDCB9qADAgECAhQnN37rirTskMw9mruBKU9KQZvtHzAKBggqhkjOPQQDAjAY -MRYwFAYDVQQDDA1pbnQtc2VjcDM4NHIxMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAy -NzAyMDUwMDAwMDBaMBcxFTATBgNVBAMMDGVlLXNlY3AzODRyMTB2MBAGByqGSM49 +MIIBcDCB9qADAgECAhQFVe48GdrtICPRnYPITPHAQDO5XjAKBggqhkjOPQQDAjAY +MRYwFAYDVQQDDA1pbnQtc2VjcDM4NHIxMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAy +NjAyMDUwMDAwMDBaMBcxFTATBgNVBAMMDGVlLXNlY3AzODRyMTB2MBAGByqGSM49 AgEGBSuBBAAiA2IABKFockM2K1x7GInzeRVGFaHHP7SN7oY+AikV22COJS3ktxMt qM6Y6DFTTmqcDAsJyNY5regyBuW6gTRzoR+jMOBdqMluQ4P+J4c9qXEDviiIz/AC 8Fr3Gh/dzIN0qm6pzjAKBggqhkjOPQQDAgNpADBmAjEA7QYnPqFoOlS02BpDdIRI -ljzmPr6BFwPs1z1y8KJUBlnU7EVG6FbnXmVVt5Op9wDzAjEAmr204YRIUvqoK1Bp -OqjxSmE8IiaJzbCQqB9B7fLAp/JEaYft1f5iLHi4GCn4Wbla +ljzmPr6BFwPs1z1y8KJUBlnU7EVG6FbnXmVVt5Op9wDzAjEAtdqdAIcCPc/DOu5O +nDi5LNY3pB7KVQRbYgbBZvzUMt1TACwcGaxVzFQh3f+xQSfm -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-rsa.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-rsa.pem index 68741f9552..4014e3fb78 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-rsa.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-rsa.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0jCCAbqgAwIBAgIUWxHH2nZXRoua9MxKQr5ZPSSnHV8wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGY2EtcnNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIC0jCCAbqgAwIBAgIUKYYItw2Z1gTPpvWS+VpfiKs4xQAwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGY2EtcnNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBIxEDAOBgNVBAMMB2ludC1yc2EwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,11 +8,11 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQF -MAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQB7/D0JNBkiR7VZ -RfZLMylovQXdou2IfuUVl9e4eTLJKuWR6IoL95Wqc2GAAwHzLfv+v2DD6GQD121n -VsmTZTqLSV8eUJYJOHVBBlZUbjj5Terzy5a48njSoXHFxMVV4w8Up3fabwk6vJC+ -RI233Q015URADisSVWK+lhZqFgC+jL8oziuYf/nhLZD1d6+IfB5Abb/98ynNGQus -wpGgqKqBcis7mt2Riyl1M9fqCce04RBQLGYeJ4RidUYSOoFBCm1MP23GZmHsgowM -LhjT4jsexHEp+AaOh7ejAcs8023jjU9UXyhSNFxdkqGuxYEy3PvzR7qHEaW4q+s8 -Jqo1VYTJ +MAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQCJmomPdVLiJhyg +S1iL/u14IOEJio4RjNM7/z74TPYkMPM5xDxgYNitQbcNpm0yL6gh4Tv71PpsoRFm +VUZkpLyUbA14FV+wWzLjeyu8nrY2icck4tkekiMgU9Kn2uKlf+EFn14l3X4XVREO +IGLmn1sTfd/Yiymt1aPOgQzU2DTeB8yzRy+u79ofS/uKWsAgZJxqdVTO2z3PuHlw +e9IIVWpr6DsuU+REBoBwJaJl18cz9CKojoVgo6Z86wBz/2MWSbnC7aCwg5l3YU7L +b+6ON376ubiSnv/jpOvasWuwT4bmNrpwpD4uiV3+agCRqrSTdLRGRJ5w7PxdgLWW +g8zD4532 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-secp384r1.pem b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-secp384r1.pem index 8c2e408115..a745cb340c 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-secp384r1.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_signatures/int-secp384r1.pem @@ -1,11 +1,11 @@ -----BEGIN CERTIFICATE----- -MIIBkDCCARWgAwIBAgIUEwnSw0QezA55zogIgOTXQb3a8wwwCgYIKoZIzj0EAwIw -FzEVMBMGA1UEAwwMY2Etc2VjcDM4NHIxMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAy -NzAyMDUwMDAwMDBaMBgxFjAUBgNVBAMMDWludC1zZWNwMzg0cjEwdjAQBgcqhkjO +MIIBkDCCARWgAwIBAgIUd90z8ux+VvpDDa9N/CeUARQyyzwwCgYIKoZIzj0EAwIw +FzEVMBMGA1UEAwwMY2Etc2VjcDM4NHIxMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAy +NjAyMDUwMDAwMDBaMBgxFjAUBgNVBAMMDWludC1zZWNwMzg0cjEwdjAQBgcqhkjO PQIBBgUrgQQAIgNiAAShaHJDNitcexiJ83kVRhWhxz+0je6GPgIpFdtgjiUt5LcT LajOmOgxU05qnAwLCcjWOa3oMgbluoE0c6EfozDgXajJbkOD/ieHPalxA74oiM/w AvBa9xof3cyDdKpuqc6jHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoG CCqGSM49BAMCA2kAMGYCMQDtBic+oWg6VLTYGkN0hEiWPOY+voEXA+zXPXLwolQG -WdTsRUboVudeZVW3k6n3APMCMQC/MJKJ8Mm7mKYH3+ANqJw+gR8lkaODGd1Dh6s4 -zZIuZQvrhC1pFZ/3x8PYjksb/JI= +WdTsRUboVudeZVW3k6n3APMCMQCfSpUdqqKp6653rH9cbzoeJMcz0srZhIm8sHls +45406vojDDHKCvAlVdiidO8ym+w= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_storage.js b/icecat/security/manager/ssl/tests/unit/test_cert_storage.js index 89c7430b1b..8eb554e1cd 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_storage.js +++ b/icecat/security/manager/ssl/tests/unit/test_cert_storage.js @@ -70,14 +70,14 @@ const certBlocklist = [ }, { issuerName: "MBIxEDAOBgNVBAMMB1Rlc3QgQ0E=", - serialNumber: "ZSuNTV5Ngi1A5RSkCkCRd6fZ3sM=", + serialNumber: "AxPrsRjtbFinLUfRzhtR8EeYh4Y=", }, // ... and some good // In this case, the issuer name and the valid serialNumber correspond // to other-test-ca.pem in bad_certs/ (for testing root revocation) { issuerName: "MBgxFjAUBgNVBAMMDU90aGVyIHRlc3QgQ0E=", - serialNumber: "adOFCYMS/nqQ3tCvQzINT8fdE+s=", + serialNumber: "VTTv5DQM+fh01nnfm3AoUJt4UIY=", }, // These items correspond to an entry in sample_revocations.txt where: // isser name is the base-64 encoded subject DN for the shared Test diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_trust/ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_trust/ca.pem index edc024bb36..622c7d0cfb 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_trust/ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_trust/ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyTCCAbGgAwIBAgIUGfWoHSEIf8ed7z6XNbA2TtZwIDswDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyTCCAbGgAwIBAgIUeVGYvro9xACWBBysfldy31Jb8s4wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDTELMAkGA1UEAwwCY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwG m24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJr @@ -8,10 +8,10 @@ bA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4 SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3 /K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+Z FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYD -VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBnI+Z5c7lp68dHkt49cEVl9zL8 -pfvJmMfkqKrqWFLLwzEE4XhPB28KhrWyjZ70mRy5ZlUVz8epahKCUOwjsl+tbX/d -11OGQFNeiLs9NN1Fm+bo5qvVujBT2iWSOn9B2jhavBU3lgci1UXPohaTzrAoJdbw -e+NDIADPmKpMvn5LCil6wLqTU3U70ju/PSQQgrJjRLpS/4Dpdy1lRAfQDpO1gwKh -2G3Yf9UDYPFBK9zh5g/aDocxJQWPd22Un7Q48gj8AGHR+Q6WibMs4SLnJ7L9croj -i3MpWbg5CMYdtK1PYtXnxKzVyG2vWIMA4vz0HyVpxiU5nJxHKLEuyioflBa4 +VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBMCB1kCu9bCII7vqFfTQ9e7gLr +47TngY8hEbe4I5mmPJbeePGlWj+ZC/cnHIlI7yfW05YMdbiAVUc57s3aRvNEJ4Lm +3pJSv8an0yeEEl+8ecr4WfbRPjRtrUv5RxotPrjJf2ri8nGNE++bYKdWCcsSiWO2 +qu2omyqHC9lFp+n4ZUmv/F9DVjMxobfhNMxYRi7NsFUq8VPKp67BVxFmDnaxat6T +XeJ/vE7UjXiGIJ2SnZMCtXV6YENangjxFSZAq+oBIdqweLNzYFC7T+GJASt1dYqI +vJuNVMFOPWoFTe1yLSKCajKMhqmkxsIpEZhf5Sto/YJ2PiwRF9oK/JOTh57r -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_trust/ee.pem b/icecat/security/manager/ssl/tests/unit/test_cert_trust/ee.pem index 05b01fb64a..29fb784a97 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_trust/ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_trust/ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4jCCAcqgAwIBAgIUSTNcFdcAUcpOz+cmRjuGIbTa9oowDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC4jCCAcqgAwIBAgIUC4uqaI0rW3s7gFIvhAvkoIU1VWEwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGc BptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzC @@ -9,10 +9,10 @@ uEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK 9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGP mRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABozUwMzAxBgNVHSUEKjAoBggrBgEF BQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcDAzANBgkqhkiG9w0BAQsF -AAOCAQEAb+gR9vJDYofmiMrJl3sgOirv2Wmjj/AqRAd4DBvgsn4/28J0rOVsASuf -0xKay+IR2ZSBD+NGC9kgxTZD1cS01Vb4ZdfDMT2PRvC06QXxQgM5gyrw33ZsKYzQ -P+q2IwDyncDwMDwsfNQc7FyDAiuLMjhP4a+gFI2gue5iOv6BKKcnEv+KehEtLwzk -l2N8NKNklVbifz8vhru7dsq16VA6tS6WKHAOkjAEKA7snOQuJgATZLjls/uNBcUL -3+/345GWVAtTPbD/5onnjH3V3vs7jjDntYTL5sf3IOvNU9Wd32Gnf/cpGI/Ld0Nh -uH5g14j0Kx4fPXlHJJA6aTSCpTmuKg== +AAOCAQEArSRj67CGYaOBy3kJshzXF3WEzi3heyd0EBE2rLUXy4CCfn8O3Q7vR80b +cQ2oPeOZe2AQY9CTO/eH1MlIYRV2vpd8nWCcUZJKgzKRyt0A2We+QA88xQonv9HM +p+j+lrqqrpBpsZpNYTqSzsH5FXgEFeWm6Tq5a8fWhYLsrixgkPzMJowbejpgF2C5 +xjJGMuaB/ma11RQPkdlUZdLOIlsxER7XHnYE9smJdzA8auTXB3E6j15/Oae7PkIZ +o6eI/sSinJGqg+7sA8YFM5JhhpMMt/PeIFtFu1f/kFvXifHPOAhBU0BjNjHNspKv +GUUmGx5FADuZ4ErEkX8Ff/A+3z4+ww== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_trust/int.pem b/icecat/security/manager/ssl/tests/unit/test_cert_trust/int.pem index 3f2fe45097..f4faf747a8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_trust/int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_trust/int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyjCCAbKgAwIBAgIUXUR7IXs87DerZvTrKcX7gJ/bUYowDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyjCCAbKgAwIBAgIUFcJmHn9QiScZ2S5ajqrcQvsyEw0wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDjEMMAoGA1UEAwwDaW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGc BptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzC @@ -8,10 +8,10 @@ a2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8Xg uEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK 9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGP mRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsG -A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEARpSzjjrFYQrK4WJ7tddhq2Pz -TQlRF2gWhC3eHwfXtn8GSHF/8dxKYTesK5xVpS8xy4L6X5ty+9i8pQMsUiRvXAXG -2/ZpooSWaVeoK8FyST+SEP65c5o+bGPmLCxQsKRBJtCS91USHKQ/Zn+NCvlJsjLm -wbBsUhN/58iohXTE178lIrlB5nU50VawS0/iUSIj+/FXaEIQPzbwh+UBicavWW5h -Ad+KETsdmp84IGuLz4rg/33Q8MU9Qv6HB1JX24uDoE0oGyWdCUS4UxJEze4COgVQ -CvK4pfhr/L3ti0dGvrIW+VgWtySkwZkndfhNiNxHSz2lITrIzdmWuvGvIB6Y5g== +A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEACY9zWDpxa1WuMa6lYsrEnjR9 +0CWNdt0DZxaEZgEMGapsjGYtupZBtnMOm24He+H0GpyuLi+dSIkl/MK5tqbYm5+/ +X/7/E7xD6Zy+1eu4R9xhPllbKCNwKXaG7THv7XOABKGeNn+NonZPNBdcynLoas+p +6aFzf8hRltjwWgDViBFmwX6RKTVkkQET3D+mAHwITYMwKAd4TbRVLJ6NZVM/r55h +/GyCNxUiw9ISdTBGabvVx7P6kpLeHdO11gMwazQrqkpeFIASDNJXK/msGT9bgWx5 +KRBtVDnQ++7Z5JIUsqTzWWG1GriJa6nzZqUEiB2cYMKmSROpQbFuFb+EBCia6g== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_utf8/certificateToAlter.pem b/icecat/security/manager/ssl/tests/unit/test_cert_utf8/certificateToAlter.pem index 73efa9953e..7b5355b668 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_utf8/certificateToAlter.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_utf8/certificateToAlter.pem @@ -1,9 +1,9 @@ -----BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIUefo6NUL+INw38ciyuGmErV+zndMwDQYJKoZIhvcNAQEL +MIID7zCCAtegAwIBAgIUC8+EvTNBEEo/NfWbEeTpiENnSuMwDQYJKoZIhvcNAQEL BQAwfDEcMBoGA1UECgwTSVNTVUVSIE8gUkVQTEFDRSBNRTEdMBsGA1UECwwUSVNT VUVSIE9VIFJFUExBQ0UgTUUxHTAbBgNVBAMMFElTU1VFUiBDTiBSRVBMQUNFIE1F -MR4wHAYDVQQHDBVBTFdBWVMgTUFLRSBNRSBVTklRVUUwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowgY8xHTAbBgNVBAoMFFNVQkpFQ1QgTyBSRVBM +MR4wHAYDVQQHDBVBTFdBWVMgTUFLRSBNRSBVTklRVUUwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowgY8xHTAbBgNVBAoMFFNVQkpFQ1QgTyBSRVBM QUNFIE1FMR4wHAYDVQQLDBVTVUJKRUNUIE9VIFJFUExBQ0UgTUUxHjAcBgNVBAMM FVNVQkpFQ1QgQ04gUkVQTEFDRSBNRTEuMCwGCSqGSIb3DQEJARYfU1VCSkVDVCBF TUFJTEFERFJFU1MgUkVQTEFDRSBNRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC @@ -14,11 +14,11 @@ wmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xx j5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaNRME8wTQYDVR0RBEYwRIIeU1VC SkVDVCBBTFQgRE5TTkFNRSBSRVBMQUNFIE1FgSJTVUJKRUNUIEFMVCBSRkM4MjJA -TkFNRSBSRVBMQUNFIE1FMA0GCSqGSIb3DQEBCwUAA4IBAQBF04iKO5frbruBmwqZ -IGgziF/16wh4F10w+s3WG1fsNLKzQ1LtCZ5L77S/kM7KRvYdkqxuwYSdsBrCRLEG -iQW9iY4G1yaXgTb3zzMnHWZ7D6L7ZIOAT/4w8KAbChxffwuNPiBnyLhq0njSxigt -xvS93ESBnDBXiaynoPzZ8oPmhvwQ7hXPaZRf5Udd6n5GaJOVGpQe1srVQOT5wlOc -hMd8En1Dh74Lim6v5SVpy9VuTQn2UvIBvGEG7ytWrLFVmOBu24MO0SE0WLppCnuF -IKDKMm8X5krpJDv/vmaCjV+EVmMPdib+GtKHTQ8/H1Xq+p3HA+MNhNyuj5TBm6oZ -3L/t +TkFNRSBSRVBMQUNFIE1FMA0GCSqGSIb3DQEBCwUAA4IBAQB8baT1kqe7bM31j7pL +BY6Nw+gU8j/7L7NdAlzw1/14VU1AFVpoIEXN8mX6xNugo7m2THNEm1R3rKXb/etf +5biLlvmVlaagP2on7R6V2S8ue60TyXd1oDwBtxRcIXkxZFsONYezP75CZoDLKDjS +ZIHi0Nv9TICVkszsvZPFqYsClRA604xqRmeDFikJBLBANoLIEl7ukx5wcJgSzuBu +VmVRbez3Le3mSxjS97WLgqFsJ/O0bO4FRIMf7UBKOhPilL/r9lW4KZi3G9lQ++mt +1hM1X//vZNAEugwwB2aIVuX3q6+fRTSay+Djthe+GL5OVIOnGcZ+CvU+VEL0YLtf +/Ofx -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ca.pem index 1dbf560366..78ff646a45 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyTCCAbGgAwIBAgIULYHYfqbtoBG+Tc9xT3WfmquEpdowDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyTCCAbGgAwIBAgIUE7UScLJrXxbNDxznxdRoqQxUrpwwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDTELMAkGA1UEAwwCY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwG m24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJr @@ -8,10 +8,10 @@ bA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4 SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3 /K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+Z FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAsGA1UdDwQEAwIBBjAMBgNV -HRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCzokJNjG2hVmgPwAzYGBi7jSKd -KW7vZcfWo4AW8Nu+Vk4MVz+FJJ260F67adOuXCGdpfgLytULMAvf/sIzikAgWZj+ -zlZnvo/+JivxbstYBfi4/ClsjJTZhtn7mjBvqvCAGlkT+8rSU30wkUt05oDJCVN0 -0bWmVqUwhVqdNVRnmsQnPHrVEbnOmrPt8GSDRf7gcjQEVDQeG0AaFQWlwAdKfoCv -dJ52O8Z+zZ1+G6oI/OBmA1dJ4T/v9VnivpEp13JgLvxsuXn83SdiMcfy3fXhlFQS -e2LoiL2FH4mOsA8dKtsj3ORRH1CuLhaTBLminKIeYGonf6zgkpN8OE2/9U4Y +HRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQB90ku26t6tky4SoGv/IUHDXNs1 +CSQOpYmrIgYVRmpxlnKGJCUBVewT+sIB3X3axC4z7D0BPucnCDu3N2VJW6k8QvdD +J0flYuDeuhNB8WHHtZS5sZzqjOubRnPByfLi2Plsgikct61nnWr/bONWfe3xoxha +XgRoBUNmFSN7tJy4wAJ9DWs0W39Y+QX0MHrkVk54ujNFS2Hf6dUjQIaltEkc8EAd +4C+qrjtAWw+3OHEZh00ZgkPwBLDB5JLq103OpCbgule1VZdfBRQ3CDu84rWRcCDp +uR4/eALkYsWqBwDyH7YSK0alu9AuqCPPWyXv3mOftQWjEEldaM/tulpgpVp0 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-cA_ca.pem index 536289d7df..78cdf1a9e9 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICwDCCAagCFG0VjbKX/ZOAu+gl+B718ABRarymMA0GCSqGSIb3DQEBCwUAMA0x -CzAJBgNVBAMMAmNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +MIICwDCCAagCFDfaAb3lZ25Pc79fXV0SXvIrV53TMA0GCSqGSIb3DQEBCwUAMA0x +CzAJBgNVBAMMAmNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBYxFDASBgNVBAMMC2VlLXYxLUJDLWNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -8,10 +8,10 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoxAwDjAMBgNVHRMEBTADAQH/ -MA0GCSqGSIb3DQEBCwUAA4IBAQBnzhMD/jxuoAjfb65cXSHIED5Xfwl/nZy/dMc+ -FQAQrqYpg4nb1k/M0XCjI3tHmZPazIIFwCFXNWyWu1O5cpT/xBMq0bpeDavT1c6x -lvYtzbEwiL988qW16g1JdJSB4FokThcdeFnYTTHR8v2jfC+OeF9GHPr2ChEC8sgF -2/22CVaF2zp+D/7m0k+FMspmyJgUNC1/hoCQsXJPoYeNwkwzCYSWykJVYTjdBJP+ -6Q2MKeOBUg8iCGpwiQlgcWROVj7VDYPgn7/vhI0B9u6Y7OA8swoVBKBBTDXqmXE/ -dV69Al1ijYkY2Kor2dOxEY77YL1chMjmEkudquwni1aqrvEh +MA0GCSqGSIb3DQEBCwUAA4IBAQCXo+vOFLmMMK78ILj8NbSEKFN+sBnp0rV3Sz2h +SwXwVwYJ4xOloM6XiJYFXtoF068wgk2tl/cP/UR4rmCEebpps4+oyUl66VL/gP/H +2FyoyYz8E/A5FgOa6eTky/qL3aSnyImNBF7cISa5ouz5YYODZupq0UbvmdMGvFDe +kzTKg5MGZOo3BJWpBlXBZtnrygPKKFvh+97nlfQdSvKPnmGAI4Cox4MXfqdLO4G+ +enZoUrZTcM5OX/ynhBbJ6MofAtDEdw1z7NHYS2KtIWU+EHtwLR4HKsCKm41/GeoM +PzzkcNkZxO0u0KWiglfSuuWf49gEkjn1dNxY2CL4MUj2pCT9 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-not-cA_ca.pem index 202bf5d2c7..81f549a37e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICwTCCAakCFA/9JUa3wFzW1CIAbegDVQAcxB+kMA0GCSqGSIb3DQEBCwUAMA0x -CzAJBgNVBAMMAmNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +MIICwTCCAakCFGvwJIFJgpn6MoKxpFJMBabqUEd4MA0GCSqGSIb3DQEBCwUAMA0x +CzAJBgNVBAMMAmNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBoxGDAWBgNVBAMMD2VlLXYxLUJDLW5vdC1jQTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -8,10 +8,10 @@ w0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCx V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMNMAswCQYDVR0TBAIw -ADANBgkqhkiG9w0BAQsFAAOCAQEANkc861naMJ76vac2KLT41BqBTj/jp5EspF50 -zwRiYEmYEQethY8GSwN9AOlEcJ+x7IqAhokUJcuHF8b0N3mqxmtMQ1rmutVHwnTl -lHSApSiTtIx95zoHJmqumwRB3HPlCHw4LBj/TM9ygJ1zVsnxmL4bOS3MTJfYVePW -H3aCiRwc8V+Ga/IVcB5AkcK+XAKuoXQbk60LdgN2RfB26DnL79FqyWmLrmJH/red -p7tnDP5jGPs9hvfqXT1cEQPYyD7QFf3W1meq2uuh+WyZHyR5kQLr7Pugpyn1VnB3 -PpONvh8MFEYufAwU9HEwQIbP9N66LS+j3ihdyZrGC7IJCBdLhA== +ADANBgkqhkiG9w0BAQsFAAOCAQEALLcrBPfT+iZEbIyjl3EFSPOnG/h8qlMW6Eo0 +XCVxze5P47PYVZF/uvo0z9ggS09FcFkUJ+NXDCslkTy2TSS8R0zA2hqpJSdVOafF +bByA3iBC/nJlKHKKuIeTP+9bL0DkUTavoouvt5WDs8XNOY3YHNbf1fOx6R8JM5wK +45IVecoiIL+1Wi16GzHT6ou6wYThQJCgi2Rbd7yjcTkGdWP/v9xBWEirK17XlVMm +vf1uawBczBugX4HWzNISo34uKssH5BEzzAknfk9jTV40lJL4qIhmCgjrCtuCZHV6 +7SDbzvXw0/gxzc226sDX5/2dCxXkTMDIto2kTa7mJEvWiK/+xQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-noBC_ca.pem index b61045329a..968a75ff27 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v1-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICrTCCAZUCFBtAgFWzqO4W+7gqB+EDzkGPJ4gAMA0GCSqGSIb3DQEBCwUAMA0x -CzAJBgNVBAMMAmNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +MIICrTCCAZUCFFsnLgSdrpSs5ezXDrZi4xMynGmgMA0GCSqGSIb3DQEBCwUAMA0x +CzAJBgNVBAMMAmNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBUxEzARBgNVBAMMCmVlLXYxLW5vQkMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9 sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5 @@ -8,10 +8,10 @@ TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7 xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHd tMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l 8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEB -ALBLm8iI79c390dwjf6fCqzX75w0Fxk8s/dZ7f7IPAPQvvxLnM+WHZXeQYE4Tla7 -8Cmsmp1OoWKxqxoKHdQ3JDVGyQcwyk4+MfLGf6KuYd47cukFVBW64F2TedrPiFoJ -YDyEZYI8A2nWEsF+QCkH5fbFaKtWZE4RsYDepnhzLBntQkXhgJvwJ83Y+0Yu+uQe -1lJKjXf0C/GxeRJE5mUE6y7T9MneCPzpXdNv8uI9xLtwOkYuAoBn6M1wnX/P3XJd -3lFgKDy28j64GDtE6Ol9VEqTGdXDXQ9G9Q4iI2qLmH6HMCtX77QUVLgqx/oDgL0X -r8xKCSvRA8kv6BnbP4cGqJw= +ACdufWeM5XuMpbmdXHf+rZCtEh8hxZJhJm5Oc/qBXuCkib2rxPx7uXj1KzrzZjqd +bCyPOvlYFzvhr8QOVFmwWZPO0/vJEUlJWPkr5KsWoHKAVwLiLO86fhqBwzCJAe5/ +w0Zp2OznR9jq5rE0EEiV9DP0E9Q6CVySxNUT9v6sO0bNG/l8TwCe9bs4eeFfKnXq +EQ4PsJPcpWbAUUXY/gzTM7wFQBdkb1O5ek/T3zJcXUR9kdCkd/Cy9hFp57QYi071 +VIfX9wKI4udu/AY6Gyt6GZXX/Ux47m+cLDstfxqRDUDyVsMf8QDvRiF1uZ36BMv0 +NV8QvAPPAmx3pgdaiAa/Oos= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-cA_ca.pem index 03c31f9bfd..f3a62286cd 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxTCCAa2gAwIBAQIUa9+iOSn6j5fiBB1Ry3n4KkZDjRcwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxTCCAa2gAwIBAQIUYVBbVh3/1i9QM5iDSUvW8oH2ic8wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLZWUtdjItQkMtY0EwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEDAOMAwGA1UdEwQF -MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAIMO2rFMAtLKQk6uL7snm9E9lwjlA8Ks -W1pMgz+OntpqMnic8Oym9o8TTBAEyOYQjqxcTN3ni5FngGcYCvLjYmLjH400kPAx -rGO0qrVX+SWJJCP6SKINh8NLUQ670tkQZoLbUnlw+635n4vYpdFXGyrEow2k9FLI -6jOrADKqBwGVIJuCLAYjFB4U6rUSGIRcCR9giJAuyurI0ZlF6IZXCvQwYfjxS6Pu -+mbyd7GgKUCvktOHVfSmPOeEgeqv3qFVmibMis8gqbpF3tsGPP2t44zfLf/wpmUT -iKhxWOXXx2KabRm3bwC7q7x4UwtNh4ftbH8m/FTKkUFfTZ9gEc28+n8= +MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAE54kiH4V5kukgw9YC21dx6tfhN4HUxB +yVE41hg6gUzUR2rfX3pvamECBZGmVBQ82iruIQNM7qho91s/1H9GhN1FO+IcQcSI +7CfzenYDWGx0MJG506SYnILYZfiluZ8orncXwJVOBlg1g/pA4yX3TVlKQTITUc3B +mLqZSMW+LppLVyS5k4BjElwg9SuJC+Go82EoC7zr9ePqEQabapcY/HksqBlXNDs9 +ov/1ZQ7C76mOGSQYCIRD7LJo3gMRsU6u4NUkIW3cdFjz51XuCreScvyoF7xeXI9t +GZJYEeKLBEseBsTk8zUZHfgQ/+f/7OoboTfx7ipMnSFtRKq1umv6EV4= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-not-cA_ca.pem index 8e43b4f65a..51cdd112af 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAQIUe9QMroVYwq3YiKTbT8yVTzS1ZYIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxjCCAa6gAwIBAQIUZWwU9opC0ETUa2tig+70k1ddLrEwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGjEYMBYGA1UEAwwPZWUtdjItQkMtbm90LWNBMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -8,10 +8,10 @@ ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25 iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu3 4pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42 yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABow0wCzAJBgNV -HRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBPl9oMC+xaGgtefQ7CJLym9lE9cVKn -lxuzdqXakzhrYqW1f78qVDFm7ykfbFU1dXdI60CvYh0eYo08Ok1a654e7YUOvB7h -yHpBTcRI0fVmHv25rjwQ9sdJttPeHgT6dca+mlYbDF4D0AW9iOhzNTIjd8UOPWm7 -3b9uREWdRFHwHmf8s8ucU9TgWQ2Q2/UVAD/f3cppSXsoiRQS3AVUuZEGUFKm/0Lv -t673gSEmruyTDhRUmTDVxIv3neXTSAVEzx5WA4ciaCL+ooTmS288v4DV0dU6I9KF -GkD8gXOJGFX+PzfzKilNlZbEmOGo6tCBm8U4O01so9miCxpT2BIdpWNx +HRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQB4gLB5FJgKyUjSiHzCz0ktXdWB6d0h +AM/6NrkgB/stPKrcsTLBdZc1vTqKZ7KUmix7O3FrxWsSIucpwmYWYqa+IQdqPpLi +lFOd9GwRnotVJn3CshOSvI5fGAQgo280sLK681MYMhc/Lzkki1w4frAc8NWllbzF +k9xL/gZDp7VLMM0Txo72juuIOafRrHKV6Zs3pwsLapNiX2S9A8SsLMFg0Q8TqNIs +0wX+u41jXT+z+htGz17gTtWca9zS/8cur1Hu1ca+SYXtOed2lLehLwjXi4smTUuD +KgeGFO8j1lx2h9DC2P64pC2+Wcv+VJuQRavBITv6bo0hjIciPcannSqf -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-noBC_ca.pem index 11336bc1b6..1ee7e67ee4 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v2-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICsjCCAZqgAwIBAQIUIz4s94Ou9Ty3GUi1Xe6IUs+Eyo4wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICsjCCAZqgAwIBAQIUIdW7aA57gwFnWvw0kkMs4cFSMJ0wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFTETMBEGA1UEAwwKZWUtdjItbm9CQzCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -8,10 +8,10 @@ w0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCx V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsF -AAOCAQEAM3YicnEGAtKsQ3nwXquBcFik7s1zt75X73BJ1IRNouhDJxPMbs0kVpZS -gVHpIK/146+2CJd/+9Z0TUTy5dz25gvI/ApK9cjGr4EU8sIxgXIBVGJGQzdYwUXe -F4H6HcHBn3Loqa9ntc5mKBbY3oBfR9JzXqJs095ECMd0fxKHxWfInb5vcKXJsull -ftBcHGhLeNPpW2Ukj5SY/QY07atEW3IK4W6hc4vrQAw8tTgTUVfWwugp6b9a2eKC -s+6xWY3Rfb6gsWTfyIoT9clcngfw5TIxk1t2aDUMbiGBtMPd1hFr3191c9j1LrMf -arGuZVQuSrP8HaVoca7xFqrxwXLTdA== +AAOCAQEATpNEH8s9lXE5u5/0yRg3clnu2ITgUbsegG94C4ANGmkgfJFe3cEEL2Gr +2iy5K/cCfKeBeE/uXH99xSNaxmjG41UKHQow9EZ+dY8pledQv62qRq3zE1qpxDk+ +ELqVA9LidxI3TbwEB6v4fs5mF0TsqWRDTgxwNdQcvK7giLa2Mo4DCMpdlBKCx0nR +hMAgwzTiMJeexjMM0bhNx3/D1xxmYX3AvocFx5sz2nHbiBTRBsqQ9PJS64i7YZQz +T6rYCiDC/h0tMBJOtqVPmw2JwGKH88cigNF+IYRenO3PbPsTqDHx4r9l3sOY38KG +9SM1X+jyYPEkdm+qt1X/OzjyYJmNgg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-cA_ca.pem index 32e0ec7f32..a179951561 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxTCCAa2gAwIBAgIUGe/vR00o8aSx/mffZakAPEKHJKowDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxTCCAa2gAwIBAgIUD+YmbPOgrMR49m0ium8TJEsO/OowDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLZWUtdjMtQkMtY0EwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEDAOMAwGA1UdEwQF -MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAGS2S4FGdN4I1npLMD2//HOSo80aOq0a -Dxk94ix6P6A9jwmHR4S+1w10apt9ONqqhkB3z7EtFyQnDYazv9WlM4s5b5lMCbXT -eaY5O3IvZE7T4Ymbe7rauZlXz1Lm6dg7SuW0UFdEqZ01NsAixaJuhn3Z2B2mQ8q8 -kILQrkuurclgEUISCUrWoBxrKWq7C0wSIs/DWCGQ5qydT7r86kh9rgiwTHcrzIJw -mJ1Se1h7zpm2SM4/CRBq3M5SNhDQ8Xjcw+5uY3DqlQ0mRAIS5VuZilSw1NAQZwZ4 -0YdzYE8AmtyHJa9GK2EdWJi+uNZw1yCYbVT5VE+LUkJ67blFfJxSdO8= +MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAG5gXplp2ghBu1rO0wB6vAptHxHFyu64 +ovTdKUF47zpkYnsGKrg+bnJH1fXLApagQrJXAfowSK7Zjc3EcKwjgNhChDtKXARB +5yd0q+NTl7WhtEpvArZNihiklwpHVi3o/QXCW6pLQXV3EQ75e2u47zchn2NsVmYN +Qt6zwvA3JrUTBLcw6EsTfHgSf06OBxKHs+A2IGKncBmQmUv3wuqsfd5Xp9+ficV1 +C6l/pSiohL/PRNb6SKfSelAvZcj/xVp6bwcAGNNa1Tb6nr5K+/FAbR7tqqpHRVpb +NobrHXgtPqQZs8EXNvxno72Vb5moI7l3kR4+z0A9En4BcC7hJBNefN8= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-not-cA_ca.pem index efcc715cc4..5b9c2e6cc2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAgIUcdMBDoHwbESY8PtvfQrGck2TBZUwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxjCCAa6gAwIBAgIUB0w7C6D7SbHYtjquIdbUqB0cVQcwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGjEYMBYGA1UEAwwPZWUtdjMtQkMtbm90LWNBMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -8,10 +8,10 @@ ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25 iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu3 4pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42 yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABow0wCzAJBgNV -HRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBMsOzN8gOAEN7YmEO3iMzQb+ysVQGx -D8jqpR5h76Fm/2FqSx6NzKHg6cwOLW2gL2Lv22iikgxFr2EQi51mjvPf/A3X4lbq -ZN1NbZYSGfFScCGNEDBuWu0G3I/CyGT/+MJgW8/ZlcjU0ENjTqkvPmC7p2hDodIL -mGdw0bDBKWkKE7B/kLSCLPsC8GGRkfbuweoTyJG5JSIGNQVHryxwTIUamVJwRGOF -ZiOFoGVl46HOouZI3ywHjIvXvai4vGRrwrc41UQULaK4oHXaMyToFBNLhbYE6q5T -AmT2TlF5FMpT7r4goCs2s8fxCYKdf2k+wseGQkVZrlPDQ763S1XfSmlw +HRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCXxStYbTMehDpvqtPNVgTs2VucjQfE +Dtya2SkLKSKmPvAQdvzq3dSXriG3u5TLQwVlkF+QFJ+uihtEQLAghE9V+7OUr3Q/ +izuZPVNk1hzvVRTXEqSooRI0z+MNoPb1LNDY0Z2mckEs6oWDwJPd8CDb4O7q3DTq +fzeWGchaB/rNYglyI1FcN01Vce+dtqj3YCaIcA15giIi+YQhmAW03d5R0u94CTV+ +BcULJJHwPgLt2hXLJqh/ole6Mp8VRj0Jfl2yM2T6Ke+YH4GC6Hq+GDOwEq0yxIud +rV+u5n5mIeiVK2F/IbnaH0ZP3u42LxvNMbkzaOYs+oubpla3CDgW7vca -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-noBC_ca.pem index 40af06ca65..dc24f80fec 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v3-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICsjCCAZqgAwIBAgIUJzIy7R/A/DYpzcy7fYBVtfku6CAwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICsjCCAZqgAwIBAgIUO/F0u0AT2bK/oLE2aSTEMbydb+UwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFTETMBEGA1UEAwwKZWUtdjMtbm9CQzCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -8,10 +8,10 @@ w0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCx V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsF -AAOCAQEAqh2dO1Aem8+oE4co3cWaPE89YcgWLhFMTJvbvIplhdG3uce6BZw0mgu6 -fDb2eToH9iRruLNq0erun/SrPzCChyn2fAoMgznm8oJykyl8nEmYNm/QozZue5Ux -xs9AoTDeJxsE9xX+q0fheTl1daUNoZ+ix+iqWnqnje26LkGUYBjoi0URWsjFaAeI -Rd43/iYBYLJ0pjitGXvEq+XmBCONoBc/9/L63jvOIMDCMNbLlBfsM/ADH8s84vIN -1AVU3b3JFiH/FIuDl+CUd+Z3TnwXwgNFLcQ4WD8eXgh72p/hzxAvE6eQD+2xbdlj -GuPfqnQ9qDVtsvG4nVD5D8nTgaXhHQ== +AAOCAQEARs39sGBodA3NX5kxIe4Kqu1SDHp7Q5xueDVlwDZEK6ErM8/rAA/WdtdQ +7N91AH3cwXJJXbOYg6P+0YMvLaPH+mkT8QCRu01l8dvMLT+7DTY7vEkXAKRW7yNI +nbAU44PsuD47PnqKC9zE1DFpeZPFSFWhaNgw6iB0Ia42IH71DPdLW/9VI8/nNfTp +8SmVpxS5YHXyspYQFxJI8lC9KgG1E936JV8G6bJxyiSBrj/O7EXjrUXkrS7Zbi8q +V8utrB+sFmDSjnaeQgFsgnrG9CdwX9oHQMB31RZwpC6WBrs5CukWA/Te7KFARp7B +VeODuC/oOT09T1k1nxUIdNyLxSA/2Q== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-cA_ca.pem index 2120166057..44febba87d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxTCCAa2gAwIBAwIUA8jk/hI8z9oCO+sa/GtLdEKKK+kwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxTCCAa2gAwIBAwIUA2P1+3h7H1/j/kO7EM/2ToartlUwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLZWUtdjQtQkMtY0EwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEDAOMAwGA1UdEwQF -MAMBAf8wDQYJKoZIhvcNAQELBQADggEBADQr6TBRCruJtFUtZchvh3k5gCxMiIOH -71Yx2K/V77W5a6dtzTFt67Hs0Y+akIh/O2R9bx1yk9RPDEDc+EnVGHa9TONf40iR -5w5LmVKWSYuENkoM2xqrWFHMosonYLFhe/e8p4d9pZnjS5kDCa1BJHTnUZpVyJQ9 -EY0tjZ+WDyGKP/rHHqEH68YTKt6YcNwn5xW58Z0Fr5G5OD64erL/PgTDOyRrhSBy -0BrB8ZHgnqrNKCf7s2IulJ+dVydP46rb86o9NuqPIp2chKfevtmTjx/JCxXX5nA9 -1LbMBoF6FnGXK6itswbori6C9uWSX9wG1/BPzqf9NIA6iG2SywWFvhE= +MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJO5BbHfISiOeTSIgm8PagXIo5Nlr2y3 +xdQdEGUGTQEEVlWohcGNfklWDFkiz6YlVXmJSFt4dZKnIYNPu6Z7nunE83YGmoDV +TfHBD21Vi4uHflbFxcDISbVQAzUYeQ9iy2PzObclp0ocaK4oxuAFH2wBFSVD6RrW +MGwZwmdpwShr2fekTTGhEMNL61eQcOsP6p/4jgKWHr8GakNeyMAMw+tcjVYkzRci +bs2j2VmkEoJ33617X+3ChSyJzcqq8yOZb1DQNEwpRF4LYaqGx1IV/rBYgGrHYuFh +TeUcKdr8Q3rRKLUgxR2gMDdtl9GTwcW7qTqHPmH6Brd+SL3Ca4FKlS0= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-not-cA_ca.pem index 65fe287f64..bd4f1170c7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxjCCAa6gAwIBAwIUGTGlkWfTL4fuzuITbG3seHo2iNEwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxjCCAa6gAwIBAwIUdcHdl/+XbXVxa79MhePMBP4NLpIwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGjEYMBYGA1UEAwwPZWUtdjQtQkMtbm90LWNBMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -8,10 +8,10 @@ ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25 iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu3 4pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42 yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABow0wCzAJBgNV -HRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQCW5CX/BMiDzfI3tR7KNMQdGfU7+Gb/ -WkAVFwpYEBuiHJAqY6KgX/WanKB07AM3QvLTE9nnimj6nfcfqMjSPmlFiGzi5VCs -o5DjWGF0CF0suSiItu8rb4X2v/gJUOkKcyGlJDT8BS1M9ubcAqVPg1fU8DkHpLX7 -A/KHCLM0gDcevI1VuSVCCbJPR54HFkx7jdEtON6mTK17PCA++31/Wjk4I7KVRder -rtr1EDJBEoAcwdW1exreIklXnYhxcfOxufj5JpA/ytbunTR6X5zbC3N/zUBrJ3Fv -OFzJNFW6tY7+hNcmy/nmEI8TmQGhpEEUJk6HFbTVA2+XvTuTxEmO3KgO +HRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQA72YW0w1Jnwo9Tc62/SJrLcppajwK6 +rqhPNVBw8HkWgbFEMcfBzR3a8d4muRQSMMPa1IUu/JGcfukNDvDIqekVfeb8bwhU +6HO3AARY1KGgUhgTtUA+gjcSS/wiF9GRE/TBGf544YoqbJOKbpJmKObpRYAmBhLI +Rbs95e5BalSbJos7yGtGtg3FV2lE+dbRUm5SWtxcp6Ni71m4i8DiEOB6VRbGk365 +Ua9XlkRZftvIyR5RgtDus6bE+JjeavY9vob6zIe39FE3JRMOPT1QVteeBUm7MYX8 +t4z44D2Ld4R7iULcbqDRvA2Mr/gG+Cz/I0M5TUvSCfAE1iS0+B2JXhpA -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-noBC_ca.pem index eabefc4839..36385166f7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee-v4-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICsjCCAZqgAwIBAwIUA9/J+SxOAhBM9DmPXkkjyJR96f0wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICsjCCAZqgAwIBAwIUaaH6WovvY40P9P9kGkWVEFSYRx4wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFTETMBEGA1UEAwwKZWUtdjQtbm9CQzCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -8,10 +8,10 @@ w0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCx V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsF -AAOCAQEAqD0Cygfa+y2jmpFS/afcUnMC638QTPf9LyQBzIh55tiX3Xgo/pWyMYOa -bGO4dLVWuKyeNR3kQOXFW3UD0nnKuSqsUzq8FmeAzi7EYTAVfThD+bcW6bLh8ZOX -QI4GEXU5UC4AgJm+NYpK+H7qLOswAhysxLHKygrRgW14DDLljdnI7vQXoJ+WlPX+ -lUcWB1bWZIxlbg8AqScy6gIS94GLX90vZnPoViPmkDHkohEPmwDAxUj5xbO6nV// -ZdYbwgGZv6qm+OgG1IrS4PpQDCpWcYKM5JCUxOa9L4aBkWRVMEWSyCKD/sHbxi1G -XD6mNqYV0QTU4WbTx8HNrpDKeRojBQ== +AAOCAQEAfxNpcVrKF4elStMN7rbf67sR2sXoeLSv0LSMLZlcfKeFP0BArDXTXksb +Eibg5oRxJIYEPkh5qxcWuqG3oMglD/2zclB0Vk3w4JxYytnwV/qTFu6gYBH/QTKN +1+woQ2YEQP6oryXPyZDpQ8YALvOb5ECMP3Hz0xWov40igQHV1G0e3pXm1cbK/4+J +LeGUDbV2t3lYoJiFAc+/tjMbajkD3eA3u7c6oDFwohCVNZT7m5G+4bs7g5CUDRA2 +LXID+wlpQ/8Dt01i0/lUoJfhoYhipvX6L4qSHTupnjn+xuj/uz17DXqcZz2truyI +379cdRjXibOTwEdQS2Q/4+zfGR/iHA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-cA.pem index 3421bad6a8..74570ba8fe 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICtDCCAZygAwIBAgIUP5PNBZLSJq7tcW1gR2nvAN8h/SIwDQYJKoZIhvcNAQEL -BQAwFzEVMBMGA1UEAwwMaW50LXYxLUJDLWNBMCIYDzIwMjQxMTI3MDAwMDAwWhgP -MjAyNzAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF +MIICtDCCAZygAwIBAgIUKanVAencubYGHn5D1MTfjNDIVaAwDQYJKoZIhvcNAQEL +BQAwFzEVMBMGA1UEAwwMaW50LXYxLUJDLWNBMCIYDzIwMjMxMTI4MDAwMDAwWhgP +MjAyNjAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqGSIb3DQEB -CwUAA4IBAQBqo4xf4AHNE8GD6DnRO4EChyvSIeWUHfgWRsZc6rAV4HndaFHwC7SP -Uf+F5fb5OF02TQBfoMW2E12qahB8gXmkPq1pT7gA2vGT6US4m1xP6j+CcHMQ0Awe -sqQqbxtHL/C37y5R4Y3FHQlcNDMZ8FXoAu9S1rywlSEEKVZACb1TAhPWBYhUvACT -NpSg0bVof5fCU9Q0RrZ/Y2FjEg1UgU3aQRIrsmleEkrr6u4KwWHPg7+qfjP+kuab -iOJIY4Mpn8d4s+bjJx6wZQii7WEK6rEqHlCy2FBL1FaG7HQXGfEsZ2QzOryLXo18 -7aYPMZ6AGMslAxSPHd5S4A0zkJIPjbjd +CwUAA4IBAQAg+2Qk6JYLH8z8TD1PzMbzi2EQTIpFadilRLlalp4Fek0WK7wHHva6 +M41ojygD37SGSi99K5MR72se/T3FMbB3BBIcX0yel+6KFoAzGheXLEdRlRSNyeYC +AHuK4XuookgjW5WnSyuMm2UTWab1OdUM1D9UyZ084CiqnkpP8NUABpUosqMUv6VJ +oGo/SwZxnKWtSubDuelUw9cn8B7Gw+TAyY5U0TJpYo6l0YH870CBRI62FX/8evou +KoM9l9nfxRGUSPejInpqR/inuEMBhVXcE0IWkuC0zyYSDM1qfmjSR3QJFbYXMX7W ++b71ueaWGwKasNJFu5t2ny6XpYBaYUCZ -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-not-cA.pem index 3981bed0fb..4d2d5d1f91 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-BC-not-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICuDCCAaCgAwIBAgIUDdb9TUCOUaUcWXLQn/f7V3H3iMYwDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQaW50LXYxLUJDLW5vdC1jQTAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN +MIICuDCCAaCgAwIBAgIUE+UEdBfSS0Ow3dhz5u8vsWAvIh8wDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQaW50LXYxLUJDLW5vdC1jQTAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG -9w0BAQsFAAOCAQEADBWoSXWqzEvpfCQ+wjJcT6q1uOtOBr8TklugVtD8LcFqwv0W -d1RTDJfaB17NF6AurNIGMgqx7RT5zEQZCJXRC+PEvAiKD1mdEZluGIdCE8mIFW8I -piTwrkxHX+VBRQMe+qnlw1FYrjcmQpqX+Sj9Ppvon/GKxCxshi5WWgiK1MX8RsX/ -l9OIz68wV6jczbrBq7spj9Eu0Y+B2bEeRCnNxBXu27i3/uD52QPjGGTQ/cyPKNkW -W50orGoWClWi41uWSne8S0DO7ljDqf+eM7itP5/raUeQhLulc4EP0bsMRlAKJ0XO -fhGCJaMp6afu8piXFIwJObs1pkUWO0Bc30T90w== +9w0BAQsFAAOCAQEAVdDKplI7uEB7b10qhRADZDWQ3CzqB6E1FyDeC0r3tqE1M36M +IzA91OU2oFNfYNwdfXsCpZ34x/SG/eNaMhpKwqlwymWWjcSo7w5pdXUt0P8O59VK +MkvXEcmGPGWDYgOhpg1rcNa/jnayfHceEuD+ABtISd2AnRS5p7DI2dRuR0lyTupQ +CpYJVISZ///s2uHcmzmkdmZ5hcV3o3jkAbaszaE/Eimx1WgmdrLLlkXHvT92v6Py +hpZQ3gfDEwN7AzSIrGNb4B55c9433mxDvLsBS3oSZQE9N7iup5fV+caVeUblJr2w +0ZSUJtFeGSTefsbwqkR+KwX00fBVKKH4HiYtvg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-noBC.pem index 95d30f5a95..266423d821 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v1-noBC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICszCCAZugAwIBAgIUF+D2RvPhPsFLBqjfRBlEIqSW8S4wDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLaW50LXYxLW5vQkMwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA +MIICszCCAZugAwIBAgIUf8F+KPZqI7+bRcAItnkSgOu7AXYwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLaW50LXYxLW5vQkMwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQEL -BQADggEBAJqLdBX/kYCR1f89k+Aae9D2J9FaSDkbRXZxDcspeUat/srNm4yZUI1i -ipRk0iNcwPK3Y4lljTIUDc1O0enckrV6ngCBIM+pYuOgRkL5FPvKCq+098Vy0Jfv -yg80tDiDIXJjqIQupyuY7ADQYQVGkJamLRrhhdM9wX3KZQKqj4wS6ZpR1+ELwO2a -/Rg0ryzQf+EC9PfFOYcSfZD0kT1y7v8le803bhtpFRCZ8tuepZTP9OjzFf8xZLHs -7dGiVif9UX43Lf6TxC46W3+4Scz8AXhGpCI4i5XFs8plOJ9W2ud+meQB+woKyijB -xD5VybT8TyH98kXA4uUhtgdoG8Aw+IQ= +BQADggEBADZLdPUdN+ysVLiwY7sMGzffFGksV7qzo9uG4XhUYhmbTnQik8I1cJdT +mronzkRs2SAM8EviI/L6qXK6gWxp4o4zAvX0O9eDZz5hAZ6X991KTt9Cv2nknwx8 +1yOfOT5VPWICsMwV694Zn4StRi/4jNsCMVdqmanB0NHbbUiY5F1e0mgQnloVJCTy ++Q65DBmTk6ubCtoUY1ILXlOvMrPFHYFvmxPXvRQ+UPqzSMVlJTazQWkqrIt1uGwK +FDQKySp9KHvZRQkENDx3N3g01FN6vXx2l0T1nFK4zK25FfCmyd6KAtxd5FPwkIQS +yLSY3cKCdanuKvn8lN6esxtYm47XdLo= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-cA.pem index bd9f8da3f7..042ed7d5c1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICtDCCAZygAwIBAgIUO7xu2EiASeCA/bgpXrqzaKcgz2YwDQYJKoZIhvcNAQEL -BQAwFzEVMBMGA1UEAwwMaW50LXYyLUJDLWNBMCIYDzIwMjQxMTI3MDAwMDAwWhgP -MjAyNzAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF +MIICtDCCAZygAwIBAgIUQZZRFHUqbe6TQxSezYugP+hZMScwDQYJKoZIhvcNAQEL +BQAwFzEVMBMGA1UEAwwMaW50LXYyLUJDLWNBMCIYDzIwMjMxMTI4MDAwMDAwWhgP +MjAyNjAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqGSIb3DQEB -CwUAA4IBAQAa20o8MjbW9+WRyCzhrWnKSv3qcOSfa4QzUeujoBxLCNqrr2xj9hU6 -parskQAKTsh9ElqBVkZaAmdzrYCTE9u8cbBbzXX1OVKylLH5MacY4SKsL8tZRjxr -Iq1ePMKrGnkRvJU2DYrIIxmwViS+36D2pZZe5ehxgtVfBm/l1SxmSeEEgOeH3LWv -iBs+PSKQfem6xhbmFFsqI7dT4RkBliUf3stkyCdtDeuSsvjpoe8JTeTUXwAYySWr -lXA04S3FTk9X2junraVPFerUo5vbmARh8w8U3f0GnL9Jo3/k0xIGv6T0tO1fSNV3 -IEinI8uoNfQ7+ONblg9vMeE9OOHipIYk +CwUAA4IBAQAscyoI/KDRZ2Rf1XjL8EQqhuc0Z3XjIqfQEh39Pj9CFdDICaSm1t0r +WqEwi7G9NK/6VofpzUsNh+ishyGM7G4ipXgbOjhSbrR3IDpLLqraGijgfcCXGbZd +fRUVsHVQsNSdRcEqw7uPLP0GkJHT25hL1HpJT1XlXn5hnJGkVoMvLi78qELEt3zK +B8+tqu+ZvmA8E4jobQ2kHcbguNvYOUAERrYdI1FfaL0rtIwJzUN2LRyCz5rfQEJX +Vqz+dH5CnORgDv6qt+vO2c06oVKg8Jl4mAOD8NXen/hiMDVVE9KAlDG4vYLuftwv +NDBshi5+RbBs5XUX6CPr+mSIbsdDQxex -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-not-cA.pem index 2cbca232fa..9a9e72dd39 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-BC-not-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICuDCCAaCgAwIBAgIUfWKhTkaya1QUFSeZe4M2IW7h2acwDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQaW50LXYyLUJDLW5vdC1jQTAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN +MIICuDCCAaCgAwIBAgIUe94EXM6il4vQxsYvjg50cWCCrXMwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQaW50LXYyLUJDLW5vdC1jQTAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG -9w0BAQsFAAOCAQEAeOufGp7h6ynf7V2iX0BK+YVm3btGfthJAydH1wcyP1kMSZnv -omyo7pZTRLI2bTl47ocnD6oAZOvoCyC0OFzLwbDk+qOw3cKeux7rsBRpiMpkH368 -B4jNmmun+Vg0UgjV51Dk8OOwH55ed3N22b0xPyMItbBQD0XPRpM8cl/0Cl3TmHP4 -pCGF/VC0qRB5Qix1rCkT3Kw4tsOvqotyPsWssGqeW7X8YCY6PkIsJbTFQexTWDN+ -/B/szdHSb9LdBrsxvCQx48aI7TbmGwITPkouLZNZEIBafgvEYA3D3Vrro5tWQb3y -36esLjUtyp972okTcefTb03s+LLRHsRnUi2rTg== +9w0BAQsFAAOCAQEAjEN5ikCmbBaO0ot48IyS3SO8gKVJZE8ddql5MLY1hB01g33o +e+osSyFVueHX5QGM0qcu+Uh64Uxv2Tj9ybkqvPgUey0xl1So8Rw/Ob6hb+LySce8 +T0SyZaNolSNrqLaFKfKVHnFipwszPx8xE7dJSbrpsguw64NZyzglbQkBTd8v3aQL +A0SEsR6EOhN+Fl/SWn6HzmnRiTF7hpAx+RJehk/V1CQ4HH0Pzygulaudm2BMLyIe +iaC/6/wtIC7yCe69dpbCCWTRKBNniq0WBxPEONrlusujYcVVvZ9SGvzUhty/vWmR +xGqp1erPeP3RcC7M+OBApJQPDxRRnB7eff25uQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-noBC.pem index 35f054a104..fb86ad3049 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v2-noBC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICszCCAZugAwIBAgIUd/OEIAOsZMJZWkdlPXv8SV3PfV8wDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLaW50LXYyLW5vQkMwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA +MIICszCCAZugAwIBAgIUeTx18sQKqeQLlJ2aB4KtcPHistMwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLaW50LXYyLW5vQkMwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQEL -BQADggEBAADYiG/RNqFscjEhnBn6oF4hnGP7tRtPUlZGO3Pz4Pmo2PayqYxjQF2b -2jnCwqreM56hCcktETczL+MmaioeJLnunM9wjs1nOEZNWyQvxesM+mLAR91GbKMv -mvEgPGmuht5hQO0k/QvxjBGEUZCD0jN49VFkxn5b2riCprTmKEnE2cDN1czxwepT -sMisK2lOZP6m7J01mppCrcITLvkEbSHk6+y/6D5jUex/Ihpm2G+vh+BMbAsgTOzY -xbjroiyE9oWr5oYONK0oey9KW7xN0vHnFKlJYPi22glznD//IDpPClJRAYp3Bv7z -amCJZkya0mrWe3DP0G6W2Q1vY4ZNkBM= +BQADggEBAE4iVDs3Kq/fd7dEW/N27GfJS2pPNSYUQ3ByAraPFufDF+77/B0RAJ/M +WFKZLKbQ1NXCHXnFW2A/0uAQMTCOf7M3kwsr+dVISmsbRz+VEm++vKZCBfxczybH +cUeYf+a3+jCk6hH+A6xjgSzJTpgFtcuDSfj2A7X/XZmoUnZ2We5HsVhiAWGRA3JA +XiFX7zJhg+fyl2Y8gOOBBs/YemU8j17zAVzBHR8m3PnzzERRvxsGLN0aA3P0f+Tu +n3Xp2q/o64id+xIMy6IrY5rUwOIYwLQFXsQrVLCqjwu3quJb7MfOvRREKrJ85bwe +IwC62yjgtVl6I8ikdsYmmyozssag54k= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-cA.pem index 970d9589af..090e0c62f3 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICtDCCAZygAwIBAgIUb/2WEKl8zTUYOopi2LNfq+iP/TkwDQYJKoZIhvcNAQEL -BQAwFzEVMBMGA1UEAwwMaW50LXYzLUJDLWNBMCIYDzIwMjQxMTI3MDAwMDAwWhgP -MjAyNzAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF +MIICtDCCAZygAwIBAgIUH6+576ofA7PrrAbxpZ5RZ+yzHnUwDQYJKoZIhvcNAQEL +BQAwFzEVMBMGA1UEAwwMaW50LXYzLUJDLWNBMCIYDzIwMjMxMTI4MDAwMDAwWhgP +MjAyNjAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqGSIb3DQEB -CwUAA4IBAQCg1o+nw/HKkJ3UbcZd+SypPQbKWyJFhSDC/UTMU1xczm9UGaC6ZwjB -LCGmU8S2VYotc6XlLRvSflBIuimWLIWqDfPGH/GT2pX48asf1HMkEM0vl9J4o8o8 -l0RN+sKoCKwopz8yw6cnc4JtG0c6dpfdAS2idxDtxPVQVZCcXXVYW9aXdr0CJNpB -7eM2t5xxy4p1PaiQroiaCK3ZmwymL4g5clqcClG/Hz2TgaN1IoXrd+CQ+Xct6Y9i -QaDO+77keRrOvrU29T1IU1l9q+y1DCyL98yTSXxYcamLU3zRymJbD3HOPy+BLugu -uEKnJsaX5ZlZjGh6kpSu9JRfj4v66wDM +CwUAA4IBAQBXmmVQf1fVfMnLti98DIRpskc80MidYxm0YRhtV3v/TGIAmCLPsMGx +d2/DjPQ6g6cB6oLwJPJf7KG9f5VVcXIYGJwhLnVtSdMjJhB1FxSet7NBduBODIDX +iMOEcC808kItORXeaGu7PwWtpvPvd+O/RVG6oqzuCl8Tv5s1AXukkvGK7stySZ0r +OCbEcaQuFCCqrHDC9B3bOtwnzqBi1TRgAcwGdeuGRZT9Ma2xDi109QVmYNvTZHA6 +OeW9aTxwdG7I4uJpJWLnyzVgxVBOKEzZWAn+JxZ3klLxuijahRbOZSK/z2KLPW24 +99/lRUfFoHC/bJoDdgeGwgRkT2owtI8D -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-not-cA.pem index 239236ff4d..dd9dd3f11d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-BC-not-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICuDCCAaCgAwIBAgIUfXYV5NIk41qSaYYJZNbtSF96lY8wDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQaW50LXYzLUJDLW5vdC1jQTAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN +MIICuDCCAaCgAwIBAgIULZdZ1VzmwIi2prui4F363zAd1xUwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQaW50LXYzLUJDLW5vdC1jQTAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG -9w0BAQsFAAOCAQEACeD4+Zsq3TVkh37RffzoxVuWxnfpWwfR+01C+JeN6pe1PHDc -eQX0fSF6jAuqmVjyM4Z4ZPL8axrTZbVftSzqrnquZ1i3jqRXasUm0KXAdqqetyxH -/CQgp9vxEZulft4Y5XDFSLw49XBXNeNQ4MUyCBdtzx+Y0nwu4Y2BzYpIuFCVG1Cv -jLklm31pPIkeQxbm+X2bLazx62xbKfulrEBdLpckFJZVp0Ai9A1zCa6yj7mjZPFm -r19HMWnA6/Wctn++4pUxMP8jMt7IwRqGKrpN0sngA3UeI9u2yiIshDlK0XpawzHd -gsvTlXysyIl5HSbJdujqQNRfWPWKuIImjphf4A== +9w0BAQsFAAOCAQEAois/4Jxm52tDX8cKxbI33EfLWtJSNY/aUoyLtxLmiPZJZbUo +V9D0GIHfxdkMzmEV0DITSzhRvySci9f8mjb8gE3rua7zeja47a811x3fDglE5RPJ +HYgPoiEeX0vSL638lD7Aj4b9PfmPjis1vrYmBzyHAGj6w2QmEcPDuE7XibzkO3ze +olNhy6k1TjximkT+pgK0SHCCrLFFs0v3xBlvGoZDQcPDHnINiXwg2wxl6mvBQ+cr +yBqNhmlitMWWavL/hDiip4EdAE/CCULNoBolLCa/ZYGZNcvkqWVedxfG17XI2hdC +flH4qP7TlKikVPJp5VY4SYnAd90Stp35uJZnNQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-noBC.pem index 50b1f5fb45..b86daa0e1a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v3-noBC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICszCCAZugAwIBAgIUHanL3H4jzmpkl9aA3TK6vAYx1IwwDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLaW50LXYzLW5vQkMwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA +MIICszCCAZugAwIBAgIUMwyiMBG6bEEoFRZZnmnJe6UNhaEwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLaW50LXYzLW5vQkMwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQEL -BQADggEBAJJ5lF030b7Z/VhH0148sLSiD8h9YS63reYrJoSGLRyf8AOx0uUSq+b/ -3lIAMk9yaS5vOuCTJrqKFJGl+4pZo5Ih5aEnKoFye98jiJ/RDVYYoJ6zAgfysoPU -fnzBD6hKFMYOuXQkT+u4oJKCF29A8Ee0kmaWwbQAgIgT7whCtbcKxyfqNCvaZ5/5 -NjA/VQ1frUYZXicKP7zDfrYtxNNN8aeAkubcgGThDjYhXkiyydE4I1oAG6y6VnKe -K/btRJjsCT4M2O6iMb40Ns3CAu2zCUrsIg0ZRd81lzdLbyRkQ6GzpFvyfz+bBdVd -uQSmBEBvuECyrvq5C8dvSfoRHqgUy1U= +BQADggEBAFonxP1P44D/vVfoGw4e3FUOSGFLetulLtomUaHfc6qKkif5+tqROn64 ++0TZ0EE/5Gy3iw4pDvPgyL1I2IMeZ5+T+c4+Z7pKfWjwNmhYX/YGavuo3PFHy92f +CUxn9ypaXbfT9ivMxVt2C/qKza/2zfBXkUF4aa2lpJHX8ZsQRqt/bVM27MbbaIcg +u7r18oj9Mlafc1BH5X9iMsc0RyKja3RwPeHqzxrLq5z8zExzr6ppuZLsk7CfMJZR +mSgTL8MBw/zbENYIzeN1Nf+oqGfUBL6qhi1iNHGEunmWef+CU5rIE81SEvpo2P5B +t9SxWBygLxfJsj8hY5rJGPkeyMl297s= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-cA.pem index dba565141a..ccdf53399f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICtDCCAZygAwIBAgIUR449myY15ySjiIkpIZwuv3Opc/EwDQYJKoZIhvcNAQEL -BQAwFzEVMBMGA1UEAwwMaW50LXY0LUJDLWNBMCIYDzIwMjQxMTI3MDAwMDAwWhgP -MjAyNzAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF +MIICtDCCAZygAwIBAgIUT979KlQTnqo+d1q5pbVJRCs6AjwwDQYJKoZIhvcNAQEL +BQAwFzEVMBMGA1UEAwwMaW50LXY0LUJDLWNBMCIYDzIwMjMxMTI4MDAwMDAwWhgP +MjAyNjAyMDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqGSIb3DQEB -CwUAA4IBAQCarEAi95P3nCDE0cbvCGv/J/22v6YJsnRxI+Esk1sVYrk1bMO+dgQZ -knUvp7HjrcpuB+i8bjz6hsqye+qf8vVhENnCZlxWGPewauTvL075i37A5HPbGY/n -oT02tVxdgvZTywwU20ETAqRHVY5rCLbPfRSKfYbDQe7Qg2c8HnEgNA+mtxVHsvd1 -nufDYmffLpx85XkX55uqB3h3Es0KS9+qBso0aVmSByF+aJX5TkpPIfc9Rk3g6bA7 -duMO1w0wsoXZz6FUdmr6MTyiG6tWbH5Dh0yO5KZ8xgWJwc/Db+V135MwHXB8K24X -9O6TCsT/bhR4qmt0oMPqG1iFsBPwbI9Y +CwUAA4IBAQA/IeWq3x24XcvaCnEvnYBjx5AzbXLmuaNu7Q/9uBiF6Byeu/0th5Cr +G90R680a6vvaJKDpSs0VZpbSD35L1AirocPDvCrhmYXH19Dy2+OcKMNKNqRTIHLG +SGlotuzKps8dYZfK7Dfrhwi34cyLrMgmSVZ0GblcULjcf6QMn+KBzkJI/7n/zJE/ +Seac3J5wJQNYm1pXjh/JsqzK7tOGET6nc2C6/Mn/dN6E1QKgWmU+a8viGMmmhRob +nH/rzSixwvQEVmUhFPlbSIa7ePBI3EnuAS66vp2ZA9h0NfXSsyKl12oNZOUXfnyw +pcZIeVSfFx/1NMEEjoO91On45rhHeZdr -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-not-cA.pem index b0ad897413..7d1b59bcbb 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-BC-not-cA.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICuDCCAaCgAwIBAgIUPYO3DBLqcAHuUZpICNU+opdTqfQwDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQaW50LXY0LUJDLW5vdC1jQTAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN +MIICuDCCAaCgAwIBAgIUW+depI5rknIcCfSR726e8A/ZStcwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQaW50LXY0LUJDLW5vdC1jQTAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjANMQswCQYDVQQDDAJlZTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG -9w0BAQsFAAOCAQEATaAyVhrfTNDp43mcZOeU44verIh7lldFmAxKYZLyWSNFfiGE -nPvRa97NbEptoBNNOZKHSaHiqv88Q+foK1bfMiz9kNaOfDFga0rA4yApIRjMSWOd -S30qEQnRiNxvvOLK1sIT7oXJ6hOyxTE3eeW6+zp+s6ZtDhbscTCp2C8EYY0VKcLF -sJnL7gp3hBbzz1+BEO6kge6HfrnTankfWKpsmKkC4iKWERwttN0u89sCd2jNJ62v -yaN8tGq551y56Cr63dM4qWNaDvqU460SWu5xWzxetggDiU9VVRK5CnICJN6lc8xS -7I4kchsjAo8XwtHdlMpOCXztkELYFCk0YNNLFQ== +9w0BAQsFAAOCAQEANQlP3EEvOwSjB7u7golBdKwCgbkoxQ/PbgzKNROIhNuLq0fH +v+gA+J8zyhYIBlWpdDHbLi7Hr/BSlRSD3ULiJaIhrNDt8zVw655p48JYYJ7AlQfS +gMvz4H5bXRDAOZ58vFnndZDwqt8O9UWIk+keJDu8s0HTIYYI4rlS0Qp9l8UbN4Fw +8ij9kNJXVulfJVGJKKLKq6up1UuY25ptDYus2gttJXrZf7mTssOwLh8V+pX6NqlH +s3MwjtHzYeWgzTWxvZqf11HjtfGqok47kq3USx2oZPHEXQ9hg9Nq14QEpzP0q30W +X1pMDMrTuAKKm6AmveF9uNE0chAy92AvETi4Jg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-noBC.pem index 7d73fc3406..800256d1f8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ee_int-v4-noBC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICszCCAZugAwIBAgIUUzfwc066+VO4AG0GS4jCb0FU9xswDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLaW50LXY0LW5vQkMwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA +MIICszCCAZugAwIBAgIUaUVDkYzk/D8HjpuJxJsVIIDu4VUwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLaW50LXY0LW5vQkMwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowDTELMAkGA1UEAwwCZWUwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQEL -BQADggEBAJD8/NvJolDvWHLoO+6O7tcYVluej5Wxawpa9AmOpv97w1idcIpErls7 -dYjA+sqN3J2seluyz/WeV3uaTwYdZQG/kVhX2wSe2sz+49Nobu7FKznMXTpoFofk -Ear+ok5WTCZspZsmtQsX/IL7wWpfIHglQCTWBbL+mpGZbWqoI31aLytGBhHkJd9/ -zSGyVbRnq5WmQf9WrPLXpUHJlxE1Pzy/Hesn8L4Xo+ykdmgXEfjrAGOIjzUyueYB -uJZeeVSW1G3ELuHzoMSSYaiHoJy5WYCJ2lHACcdA4rCq5oldVrHM377lF5twcC/r -y7eJDh0DZg1J5A47KaedJZ/HeiLWEuM= +BQADggEBAGx0VYM/uN+NGrHhLpTIt8Sz52TdcD9Io45dssJZCzQQNzXNQs/CJE6S +Cdsp4gqpbFs0Bwb/2+YCnnrdTXtBrBtOxV02KreA7Bkwiq85TaXr29N4kGc9U2tK +iT64ehxiV1xnShxOYBmBSGAjwkbb6weRmAyXIGEwLkcE4HDrlald04dbVAqGMHJY +O1qVzikGtYGL1fAsyyBFmTxBc03OJBhu9A2xkIr/2WnofntGzfx9aCm6G7Rdj2Sr +7YIBHJvdX06jXBr0YVdWFNKVI0vsDuak/BEWnCODEiBxtMYVtwJMPWPcks6fTU/b +nMjwmMpJ9RnTWQXTaaXzlyIWJw77/hU= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-cA_ca.pem index d777b0bce5..41da0ae595 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICzjCCAbYCFH1zYNYz/B1cmP/DHMeKiYk2OeeSMA0GCSqGSIb3DQEBCwUAMA0x -CzAJBgNVBAMMAmNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +MIICzjCCAbYCFDeJztPI4nuS4pOIi3uO11eV5XQxMA0GCSqGSIb3DQEBCwUAMA0x +CzAJBgNVBAMMAmNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBcxFTATBgNVBAMMDGludC12MS1CQy1jQTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODY H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk @@ -8,11 +8,11 @@ H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk 0jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMM kd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaL L+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMdMBswCwYDVR0PBAQDAgEG -MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHeYO0fG+CW0LLQ5GhG -4jWmU+SCKooQMZaLh6trX2wVjhFfRIwDGGF1iVSrhQEIrf0isY4gXCzlA40yyhft -UMw2dh8EhtQAbpZD36QcSK3/R6UajsM+oXxE9GCKyFJR0O/USciMYv5WNcIARkPO -wNe/CQRKg4S9PHljC43iKKbyj9yIUs6ZI9RlLPmNcdyx/Ss62jBrx2nyau2Z/kwi -tyf/jMAIz/h3Ls4okhIZS5CBDfkXk5QlJskaC5B5KKcy/6HGd10kc7UDCQkWceTg -49Sw13aXexbuRZNpNbiOKMRLjDG2Hv4K36aukkQ5VD2wD3UGLNG/JbOdPMD+/1Tr -mC0= +MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACXnCo5rqLUEcFIzVVd1 +HwwkxOfEyf3I+C6Fy1y2Me1yTwc0NDLvvT+FhVwGdJDv9hOwrzckxHeyKmDm7xnU +r5X4guhBk0jkdM//SEJYhWXXrv3gDBGH4HOwL3nn9ggb6wlQHkhp4aPTK7Flgd3v +Osxicc44P8Ol8kPTEOKA8UdVrrKM7Lvrw7wvhKY7L6RP21F0qQz2MWfHBVKwteHb +7wNBaevsZZ7NO9yDTEr9XB4xyIXHrpvrmLWOn7N6yr/rRz4srGVkTricZLz/+DYp +Gzei2jTXP4GJp57Y8qyCg3G2LaMdeeRDsxlp8fcIWnp9h+K/Qb/4K6pMJFFFLTp3 +mAw= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-not-cA_ca.pem index 974bae2de6..1e1ec4d824 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICzzCCAbcCFH9/TB53T8XsI2I+YCVgC4vc8UGXMA0GCSqGSIb3DQEBCwUAMA0x -CzAJBgNVBAMMAmNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +MIICzzCCAbcCFC2JLR3LJU7DOHiq0eqe1EioNQW6MA0GCSqGSIb3DQEBCwUAMA0x +CzAJBgNVBAMMAmNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBsxGTAXBgNVBAMMEGludC12MS1CQy1ub3QtY0EwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,11 +8,11 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjGjAYMAsGA1UdDwQE -AwIBBjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBhXXQYLPIa4cWXuL6J -8o0+yf+k0mydjkDUuXbsAvIHFEpTwcoohgLeEOQ9KaimCoSb9gbksfuSamYPpIN9 -yO/v6934uzQXLoFiW+B3ZCrE2UlPdBVHLMxtnleK2pRoZLUKQuuU/MWtP/rqsc8+ -/8c+0ze/8VONiksSzmTW139ZXGUKulcmjOZLEOiqJZg1oLkg/RRaWiELZsZ6W1KR -zX9dCOTpm+7taF73oE9y2u+mFmvP8nvqG9M+4SKfK4CpNjdX3xaW3fGgPiKuhwuA -XI0BKMciyMbSFDuQjaLB21TZ4ft9WapVT8lX44Z8Ju8oS5ju7+3X9O1HykJv8/z2 -f4hj +AwIBBjAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBnM7/hoMYc7/m4x87p +Ns045j5Wg5/OreDdZDlBFVpBPK8cIvVuBz64pc69a77NdYITv+TwxB28VMXcYrUi +89gVz0tvO/Q1U8DBYqXWFyVUJCpM55/mMvlrew2kPKPuZxZJyS2jXfUJgJdPfucN +w+bvpVA+S/t7S5oMddQAACHCD4M/ciL4dwO9pCKWK9K7MyADJWOcbUKeaXTgYw10 ++9yOv5NggXjr1SZdeiV0lndlBCv4XOtvH1ICXMsZlWRH0ZH4CcH5i5L9Hups33Wt +T7Jh6k7AtjYVdf3Zx9Fm3vjkTt8vyHKWrDKOJMkVdl4WtQXLPy68eqWck07sjYgM +hXZg -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-noBC_ca.pem index 08a2cd7bee..a2451a76db 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v1-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICvzCCAacCFEM6C2TfyenBZInG5CEnQ4cpnp6FMA0GCSqGSIb3DQEBCwUAMA0x -CzAJBgNVBAMMAmNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +MIICvzCCAacCFCs7TWiL8Y0pnuxA3vqklF+weFPPMA0GCSqGSIb3DQEBCwUAMA0x +CzAJBgNVBAMMAmNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBYxFDASBgNVBAMMC2ludC12MS1ub0JDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -8,10 +8,10 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABow8wDTALBgNVHQ8EBAMCAQYw -DQYJKoZIhvcNAQELBQADggEBALCTCCveDg+HeDIZfqhpOsruMJuGtOgKevkc8/pf -KaR+rbFwHEwvz+aJHgYP09TvcYgVfHEsdzGmSuzzS+4jkRXw6Zr8oUBTxGmcbVG4 -X+Ej7p8QudSMxhNG0eStcuVWPr8CG66NV7It7EmFPtBIAKhS6qXnrgS6+B8QYGLP -ky8BoWrm8Z0H198V86XWUBonO7w70JOpQEsMJoOa2sICcGL5apVYfY27geW7p/rw -zqqRr2IIfdDOTBBpaYl8LJT+fwdS8OQA2IkIo8ynEuOYdXNbJbVGqRLcX5ctnH5A -/3mSVc9GByi5pLfgLqwcz2FXQXoJ+nF8F0j+vnr46Pv1L+c= +DQYJKoZIhvcNAQELBQADggEBAGb1QBFZ4TxuLsx2o4Msm+abbZ3AT3eRrWa1WfPK +h7LZX/xExCM45seYK0b2jqC0x8mCBeKT+3NhEEd1zS8UFmbEyAjPB0pz/YNxSTNE +PjW/vyAsIjma+VD62DIPL4VEg7/mGb4ymXgMznnK5PGwG8b81jRr3VLdzT7tam2M +IClCI0rxgVn5zlUu52t0tOZJspEy2UOyO5Ub3eco38CBDq/kZW4sEAIaYVu84pFs +GZRCqAoiu2T90bQcvY3LGR958fMgN1gQkFYBXqo+GdbVm1PYBA5MjR8n8RMH7JRv +VyzxgXy41EGIqQM7WpwGAEZbzqrFaeRlEftRCTLvR2YypSY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-cA_ca.pem index dbda7f0d48..aedd1a1300 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAQIUQ7Ds7tY60iPDA+mFRfpY23SphfkwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC0zCCAbugAwIBAQIUceF4JKrUGxyrq1nFNA4LCkFnEj4wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFzEVMBMGA1UEAwwMaW50LXYyLUJDLWNBMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,11 +8,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzALBgNVHQ8E -BAMCAQYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAZBG9OUFhGi9A -9NxBHgyOH62bpDr7Gc8MS5hJ6T8vB1jDWdnnqlIJHj0WAfuydk3IccEHwpuvQXZE -RAeZ7nStAaBuv00RMq03E8ppGjaDepiJp4hEHQmDALHesaOH+vLXa0sPc4lIKXNR -ULwTp8nSLecRHvxPoD2KBoeTigQjDWrmw3R8vG+jM634n75H7YYTXzD5YB32/gJ4 -xVgQ5Hcxs+KYruJjoHPEn/iyPZ+alkddP0RIlmo2r/+V1z2FirXbzu85C41IGHqf -ck26sjIV1LihdKU+VxrTTRsFw3PJ2uyX77F9ZVBhGYnMsLAG5kC+7p7/S8hwMSX4 -xPevP4XItw== +BAMCAQYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAYOkHmcqQ3Mom +E/y5Qft8ujba3JkWRGg5RYlqQtDRMnN+jUci992ow5ZAoUDAhaB8HVD7f1YPWigp +38T5Fgto/1cowegXbfb0xBwdxleEXQjrud9D6ttJXEpnOsLUNMlYOVTzs/xbcBL3 +jyXuN1B4Ks0dpZmtOeWgW3Nnxs5eb3ykNRCBdB0spOjwMJ1sCB1ul1rEWazHay5W +0GmwXK7l9l4OEkAOtd6rzZdp3SC4NizyYs03k3QpJZxBwz0hadUpjn6e4N6ec4f3 +RRfNwxkNnDLTAN0ZUwhCJLaTTQqRiHdZZWlhJIR4rL2WaeFajPFyVPSw6XhOaM/i +1jT1RBd2DQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-not-cA_ca.pem index 45f9d7aef5..51f2840d11 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1DCCAbygAwIBAQIUUdM17yDygi9r7E9rp9twPBvWwtIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1DCCAbygAwIBAQIUTfsx/4Yp7TIUFz9fs2+IkyL/lmgwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGzEZMBcGA1UEAwwQaW50LXYyLUJDLW5vdC1jQTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ @@ -8,11 +8,11 @@ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMaMBgwCwYD -VR0PBAQDAgEGMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAKlrYj21ExCC -G8a27ALM6dZa6g47INVuNbQtoVQwq+2+6GeQGPZW0+tdN7J+8ml9T5JcFxnjSH+a -J6Q9SWxlT7EgtYrU2kmlNoBYf+IS9Zkd3NXewTo7NAa4w5nudBAaQgsS8GsBQekh -tiyLiZ0Tt72OcH5+MRFUk/p0KvtkWeOhxFZtOOSPT+UmooRBjDwIN7dQ63Ssl6T3 -IQVtFJqUjzC2KP7Mkf8tuJs+98Uh+byBOlYPGoMePUKEX0e8MnwBeRAVIK+4ZFdM -JVrTx+LXBZNhS3YUBzMhz+EDAEuoWkn8cWiQIoun3F6OHV0t99BWDx3scbmQhI6t -O9jG0sgtbs4= +VR0PBAQDAgEGMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBABTHx1jWJOsG +V5Z3kEgm1sEQWrIeNvr3QbnG/rXx5GF9ewRSw/vNUa/YZL0mTdFjh+bZ/ixdiev8 +kCQY7ZtS/nM3Mitr0QheKw892KNWYw0+3Tucsk4HHOrEzdpBZCrR+AUHy2Ph3ozc +Lgc4iXIdfBJn2aZsV+1sKjwzdEXj3howvFRU/YOSaxoZm1miKSxSiH+ljRIS5HeS +gi+kX2wrlVmUkozBEZ8lXk4cohJg2pdQySyweurxr28ofrHrEjz8RjisKmRGj9eM +wwNj5DqY4v+YTiCgU8YDTvvjvkZ+k30TF1VS0eIsdy7qjX4p5S7RWoN7Nw622KYq +noAIYMfMI5k= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-noBC_ca.pem index f7ad7d56b7..2084391328 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v2-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxDCCAaygAwIBAQIUSZ6YFCdeYIJCNXooyerpHIE1gHgwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxDCCAaygAwIBAQIUN7XtroVm5bBvAob1TnLm4d7Yk70wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLaW50LXYyLW5vQkMwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjDzANMAsGA1UdDwQE -AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAY9fJnDST6THDwqoF317uGCygzdCAK316 -4MtcxHUPcc9Zj1SBawDa97VHqmVD/8/6p0T3AMI4v2p3lxvaXnargu3TAL1ioMwy -2CTu2UE27ZMfQaAVYHUYzmN+/M0GUrKhey92NSe8v7RcEkUhc1rsVWgB4ZVGWrq4 -756f14c2PDIutBSwFz8ukYnnvEt2kF3/WckTpNIBnGQJCb3Tpnw5HHcEIVlU5Kac -B1rfXUV0/EHGpouEGG9xUqrvqYnq9Y9Khjhz5HxE/kmtRz0BJXuwhAkQe0coVozd -gW8sKhE2UArLYrA5smR/hGJdG5Iz2P0OrFdc9Caii3BS/zQAaOPoqw== +AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAOnj6RbexYWa11GGCLIPRQhMySR8cGciP +40cY+TiyeC6nvoPJYeujBS2Y+csUxXP2zAAHUzi9t0H71P3Tqoogolt1NEzb9fxm +EM31DbbGnJX5zlsD+EOBBoR2P+saX0cpO8APj8DFuZuSeXSKfWI+ULwLfe08eic2 +TM457d+nYdZo5tPo+OAOuFeh1WgvEYkJCKnnz0NkwzCG1m6WSoZCyVKP9zyHu5AI +rMaCR134sgqLStV++JVxj7d+kC5ok1krT7aA2LsSIqqKBZ1I4vyUdw5Bbn1Frzbf +n1Z67cU3uuXwWZ0oWpySbcOY0Z6cgXhMkBE5VcoHqz/ef+rMn1dLtg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-cA_ca.pem index bdb72f4638..d06a56037d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAgIUc8zh+HaD0jS697SwGNnFi0jqkLkwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC0zCCAbugAwIBAgIUXzUCmSPMBx7rhInNv19ENE5cia0wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFzEVMBMGA1UEAwwMaW50LXYzLUJDLWNBMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,11 +8,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzALBgNVHQ8E -BAMCAQYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEARqMB8/3I09pL -vkBts98nQzf7UG0k99y6BI1xPw4srxq+/Tqfzd8UZdlYW2eWxq3nJGzzDSeeIzd1 -P+1B772nohLU2ZHGL70rCVsd4vU9WUBUojTsXgcjTbKovVpiCJGvNgO/qwoBBQZp -bQOX9982jrYN7VnQt64P6rAACSMulvwe9XV52pLedaw+cJrBBHW+fSAZLRsNUziw -EFENYUVan1C370DtrgI49p51KhD8zw6MRQI4+iynsGMtJstNp2aAmtdhVNbK5Hex -YcdjDsdr3ydZfuTS2Og4z4bw1+HYbvkhH5ijx2vJiX/vpaaZj3rvtYM5NCG173qn -tmg334OS9A== +BAMCAQYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAYZTwA42LE1id +/vRGH+b1xR1kY9NZ+CoQTEaqh0wgc4IJOW4hgPTRTkXE8lG+XaTrSSCI9Xsba1jm +75S/btChU4IN/SHOQ084DeLlVy6cov6SGaaHiKEkNXKwwPKq0AZ1QPA8uoN67TCy +Lz2zQJL/kV5lzsmdBBnfwY6S5zGTYTXRXVmVN1TSWf77P/GthPP009fnolSXmtxN +kPjxn6kk4ajt5Ef+0RruEE2iQ89nKYilxOkF8ZzpDLuaNbpK3maREJl4RTAxYoBi +bDaUNOKTmu0RaNcX0/p3nVerlvWGEQavps4ZPHgZKmp928IdwbiKM6tCztrDBpwW +h+bGq1c3mw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-not-cA_ca.pem index 4572a8dfa8..07b7549c3a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1DCCAbygAwIBAgIURR84tarKTVnvugWHZJ0jviAmjOUwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1DCCAbygAwIBAgIURZ1aUjPenzDUlMwLPSn7PBYPxCwwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGzEZMBcGA1UEAwwQaW50LXYzLUJDLW5vdC1jQTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ @@ -8,11 +8,11 @@ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMaMBgwCwYD -VR0PBAQDAgEGMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAE5lFF6tKZOi -8LCK39q7kIlzh2UMfgofgeIl/E5V0FkkpxI09WFmZR75YTs7X5L7YIFGSHb/iP5F -RcqTY6Fk5Bn7JsswloouQJrrrDd6QzeGkk1k+YZXIK/H/PCQqbjrvLKWopCyRi5z -OOOEQpbATxff3vFoSMcQfd+uJNOsRkya4CEe15S0A79NREpIwqlTRayNR+5eP8CY -OuZAG3mYr+rI+iiOImeIThw2TMLTAr/C/PxvWSXO+hFypfB+Co/e43zV3HQDgOQn -EOe8GFX1dwCoCQR5bpDr+ZNxzAnsHXa1HmdELc0HkIiJLsP9si47QluDJasHv2wy -1pfxmkxmnjo= +VR0PBAQDAgEGMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAIy4mtmHiEZa +YF6Q8NxYmHXvaBn1yZxYr1LtR7+S1x9sgImHSPUa+/UgkNU1EdOCZtyqXg5NR747 +zF60oM5EuWLi0dxM1y0lWwlKsZBBSdUaCdql13n/gXs237R6L9rTPROyPT8RrLMB +p10xfQ/YgyNL+b+U+/Y7jevPwDVR0298ZN+QuBaVt+UHGHKiUXJDREJ+qpWM8d+T +LmrYBu0H6MqA+VU1cyveyVbwpKp/OZkq6kCe9LXoqhQyzXxbpdxagWFlgZhzTogr +XsqxffXE1tgKioKoeSeUJKNNdD+eXtbtzIk7Vlpazmb1/L0KL0ou+VXcymMdaS7G +tBcC1jturr0= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-noBC_ca.pem index 5f85348f42..10d07987ed 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v3-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxDCCAaygAwIBAgIUfUsymcRDG4S8/Z3I22MUCcj6Ml8wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxDCCAaygAwIBAgIUBUfJr2elFvZNeuELjpsaAXeWqCMwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLaW50LXYzLW5vQkMwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjDzANMAsGA1UdDwQE -AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAPQgxiRbKKVZyINg6YFdUTVSjv8ONMa6A -FZQ1VwsGH6467B6U4Ufq/2gFgWzVER4u9962S/bfT9z/AtqQPeMSce6lSPFXCjzu -pyP5W5b4lSIGu54rgKgfyDKLCh4+bmD2ouZSKGxN3AHf5YrCHoU3nM6ujLvHI2W+ -7R5w5T14siLLxRXgf8i80q/eYniwSudeGDmE3KHnvciix6/BCALdVPet3Izx/pOC -fE6S/u9ydJ/YoHMehZrpCqfYChoXfvFhSbYhm4JaMolt/2WR25Y0FOWYz+3Un2+H -eq2MqcrMDSPAxDnTSvN0CotgGcXvV81lweNeZyVEVojIyDSj1qUr4g== +AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAMsXCCwGfwQb8DK1ibwCmZaTL7FH/UqLU +PD+5xNdWY68sKtisnTLVHLFrEy9Ty8Ngpg9FnYfyP8QU912WMzdrmfDyXw5aNuxY ++8W7BPjTstK3AC07pIy1opeSX1O+ygR94fT1nv2n76D/mf3fsw0JSPR6XkOm0E/B +Bu4Rs5mAJ6y3R8AossBoMYrXblsK317udUEQb2diBXq+p2qeJvbiVS8eUSEjavVy +nua5x/MIJ2HSjZy8G6K6/IcbFHvQ6a7rE0G98R7X0j9FYbEGido12ASi6EFYDyx4 +be2CTbz8d+qCXcmiG2DP2X2SdqZ70Uk18j2uwA/r2kh+gaV8clCOMg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-cA_ca.pem index 5e6601a1b1..8a48bfb8b1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAwIUQbs6sM/q9izYdnx62+8yYDSD3WEwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC0zCCAbugAwIBAwIUHYTQl/IiCStKcwMrss+7e4hFffUwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFzEVMBMGA1UEAwwMaW50LXY0LUJDLWNBMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,11 +8,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzALBgNVHQ8E -BAMCAQYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAICcGV2Dv8Nu3 -p4G1dtTxZxzRx9DxkUTFFmAPSBSU7bKduhpV2LXv79iIEENA0bfBYlbB2cbZZeFk -DkaMpAViB73ojP6TJY4MsHpTbeAy8aeV2ostKLZvma72fTVAMkJoEpCe8FCpTYnl -6RCrQJByUAGF35V8/GYtFNcZArkqdvNtMg8syrxcsQoppWuoq4dvCrDDgsGE6p5e -PU2lRDDWIoaLCIMCsCeMR7fsNZ1K56O3hcVANp3hnp+qKYBrD7vMQLf8WiUiruUe -O8smRjEhUSISeKpbMJ5chge6p7C+MEGaXGJotUEqtBM12PnT9+YpiSpoCtPbrhic -NRNGbmI1wA== +BAMCAQYwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAhMfxfzycCxzM +jgc5b3IWrY7DGPF7ywKhLsnY64OeKcswLZMzq0uUGVcHjDH26HWM+c8jM6zVuMUb +Vr06l7TU6yyI4mOU5QTi+GdybMNYskaJVFRrjLMv2OW/c0j3lkFumTZOXcujPsi7 +mTolT/kdi/P8X3WOgl62TosEl74vJvozy4/fHbfDpIWYe6ct5Vs2/LnonSwO+4yG +QIlbBFGjLCDCgO8p++AGTOjMVz/3Gt5PY8zeDTHAASB1Oir+2Yn9+tsxPay8E5sb +z+HE72Lu3/kHLT67BKdi/9la3gRA5vH12Kx2GRozU7rzB+169acYmJSevgg30LKa +qWm+aGMDFw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-not-cA_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-not-cA_ca.pem index 7289f13d03..1269e004bb 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-not-cA_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-BC-not-cA_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC1DCCAbygAwIBAwIULWQqVyEHkL99D8PeNOAsn9/S/XIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC1DCCAbygAwIBAwIUZwVJGwjH+mgUyiPWJ2dQ+5I+X+EwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGzEZMBcGA1UEAwwQaW50LXY0LUJDLW5vdC1jQTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ @@ -8,11 +8,11 @@ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMaMBgwCwYD -VR0PBAQDAgEGMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAAu+dI15XVel -MxtgnJkUWIH9PaFEu2KrXnAhl4CYRxfIxJmh0l92x0V3SYck/QoB5CakiU6m6DH+ -n8pBfp7bYat9zcy1Umu8Zbi1AQJH2yH+3PWYwDwCfKSY2ezuGwx6+JExdCcFd2Px -9djDY23KFQBp5X06vQhZFFYWMS825KRiAkDOkqTCj0xrfR1+G7VDcE5QIcU7E+hX -h1Zbf8L7fh4dOavnA1bB67Flk8FPBQlrWMCJd3SwBC1GOfqKe/+8oN3nnfPEtkYK -1AH1LDtxVxQOoYdH7y5gyWEuCIJHRa/SgSUqh9cRh4TD738bykGSa10rX4WZfwLn -zM/IDsQ8gvM= +VR0PBAQDAgEGMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAB60PmKOSSFE +X94bZY3IrKCs6OSXukC8fQk9LhtGs0FMSN7Y5vFxwr+C1mIvzFcM/5UcCuLQw814 +oQ7ihXwvrdo+HpgNzqvqMjWNflCtJa4lI2j7oND3XRYKCtCumPsyi2NkfpIa9ic7 +TlpToDKWULve8F78eZVZgrLy3PXdkWX8wuQjq8Y/K5EAG/FI0RyijKVDrHlGiGds +GVSfL/b0oNgrHxUbjOG3i8FE6YSFMnZjoJJGrOjqyINoxiQ8UXxy9b5xqkHmexpR +Huwm2j76IkmtZ57X8HBmalPJBfXuNDvYmvz3NxZpZ9vmSP2+AVEgwo4YZ3yK+OrR ++2QMCtyrW3I= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-noBC_ca.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-noBC_ca.pem index a8abf03395..bdc11f1ad1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-noBC_ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/int-v4-noBC_ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICxDCCAaygAwIBAwIUWdjrUgMqKlHLdi/HVhB6NqsHuhMwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICxDCCAaygAwIBAwIUI4jC5ONbeBtVSrYW3ICZ2hwDr3gwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFjEUMBIGA1UEAwwLaW50LXY0LW5vQkMwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjDzANMAsGA1UdDwQE -AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAnYCEutGfsBfhV/wV7CVKQYxnA1mt+osd -/x5AF1ueDD8dy+3D/4bEnsKx5uSTuyW22i+fPH9NwXV9hXIr6FM3PJ9eXEBSROUS -SWYUK2q3iIEeqWn3CGbke3Si3aQ82V99GvipPCTaTUPYVC/iuqaA6T9dDzu0AXGD -TE6T6jUz13JoJfbLKG5Aqnr6oSxIFHaXKOeuRwgAXIMdv/tRbgqEmSfj/Cec6eFA -W4nxVgSt+hX+Q6YfgXurOsuhqVErjIitPxTYdcJ9U2J0GaAIJL5kqadCotVUufj9 -gjq28iPtv6O37xTZVp1iSq9aTu87jMZoEEEVb1P95zQbbvyGWQNkhA== +AwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAhaFT5ecX/7mHPTH+dKhWoF8hH8TRyHRv +J7AgltoP8IAlA3U8/Rob9rrPBIm4ONlKTYDfVczaNyG6ItZMD1XN/yjSMsuIE2+w +vXvaTcYADEFLxc2fHKo7xu1KjFRkp/6G0TPuvByNxRX5hqfqpqhR5Ow5vG+Ywsfx +V9QMFKdpDa/T/pyrKyaiOPa/u1K+XLcHRFBVVrDRgiEydKOy853Xb8g5o+6tmuBj +aF/jao3198qqv1MxW7YrqsATsE4ccKBreMDkQ426NERKMQX4By6ucM/mCHzXraU+ +vRDK9n3ZyltWANFq8N4k1B10CtxAuLGpTaVURkFHYwZenb2gCOu5Kw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-cA.pem index a59eb45067..fffdbe75de 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-cA.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyTCCAbECFFfWh1uvAadqhIjcpdEdRLfqBbCCMA0GCSqGSIb3DQEBCwUAMBYx -FDASBgNVBAMMC3NzLXYxLUJDLWNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICyTCCAbECFA+xkP7Fax/hxiqqAQRG6+Y31ucXMA0GCSqGSIb3DQEBCwUAMBYx +FDASBgNVBAMMC3NzLXYxLUJDLWNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBYxFDASBgNVBAMMC3NzLXYxLUJDLWNBMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -8,10 +8,10 @@ ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25 iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu3 4pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42 yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoxAwDjAMBgNV -HRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAMLyqlmftiNvW5Q5Mn/WI5PQ4A -1Mo7CYQi/0ckjSly7jceg8QwQIwh+oh+YXNVfaJEfr0s37Z0FFGQCNxsqxlVqVut -zG/xziSeP7RzO9TNOKoKvCwNxTsOr7GbdySoESYykITEVB7BkcojPs2jvc04KuzP -a/K7lERn9KKWRHruLNifGU8pEtlv3Xs5w6N05jk+pJUscTAlkyp7jUBsHPlQ1dj8 -yY7DC8CzayMwyf4DR3ICEV9aI6AqaKCycLFARVWwruiW1gaYti+Vr+ruKBkYN8sO -ELxzkNFvQipSPtTykYvzzQPiumvlSHkuIPW+oxsGc2aOx9902dCnOGs+kHxZ +HRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAQU8m14zdXVyITmQK0l6m+6wXl +S1pvXisJFMpeNzJKw6upftlaYDlblUieONGnqawMF2OH+0W2TzAZEnZBLSWXJwfE +nsizb6DU2nVoNbxrlg+GRul0lIZjImusSDhYk8+vtsa4oCyHuUFQ6+vCNENyfNPD +Iw2eHe+fbkfGWWI6kD3R9XwpuqplgdpIfjk6uoXe6ZhvrrhUbzzDWgGtiiaGqOEp +/MCjc5h/vRxAF5dw+K2OzZklsgys8oz0qHydsgqo4aZ9wBd6Otalqdnl7QF4NxLa +3XBpL6yNYpv6crdxMuZR9DQNBXbR6NolD4yZteONhmdbsE4gQD61UfqA3yhD -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-not-cA.pem index c1ed6e1d67..c43c1640e4 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-BC-not-cA.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIICzjCCAbYCFDlBqqZnc6TK7uirrZrxpN1j+iX9MA0GCSqGSIb3DQEBCwUAMBox -GDAWBgNVBAMMD3NzLXYxLUJDLW5vdC1jQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIw -MjcwMjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9zcy12MS1CQy1ub3QtY0EwggEiMA0G +MIICzjCCAbYCFD/ux1D5+lCHJtAs+2SIdNkbLsvcMA0GCSqGSIb3DQEBCwUAMBox +GDAWBgNVBAMMD3NzLXYxLUJDLW5vdC1jQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIw +MjYwMjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9zcy12MS1CQy1ub3QtY0EwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erk NUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwC fs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1m CyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTM HGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m 1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGj -DTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAFBgVI2DeMXO+8OPAf6/ -tyYcRhJdvjAWURZ/rJgv0+fSyaq+XUuZeD7hv3+K/sGr0xupyIbh76fUJLjFl2ES -aozpAUuaxPjjG8BM3ABIxQFykEjZ6tPSIMNVVG0zJTd6sWCDre+JNAdyrvPSeT3l -6L92iYb6UX77J2NiDrXm+mUOYMJJ/GRjRAdXWUBG6GDdNuKMuersSbPXlF1t75SS -9LzQvyfPzBjELR/iXPLqrlypVeGGhQ6Nn9uRc0njeD0LA0pcNJgL5QuDIk2lpFIg -4akyVA2jf8ADwjO4swY06pwF8c+aJaZ01J6/Fk41fwVc3hnypQFYmfyiWCwZfOHD -Jjc= +DTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAGTtNPrwqhy1wL+EWouE +Pkf40M21eOq/qvIlfPwKuqsAl7u3jK5ymy8NlLqoyniQyhFw+JNAa3/QaT/Dw24A +RA8oNuvykuSO4E0B6L0wgx9/5h2v5qJIQx0L4IXc3WpJ4Qig+0LYP/CyaVeifnXW +yIs+v9nECWMxrFMLj3SrBdql63kQZTSgErPCXTQ+1HISkv+Kg3EPr44cfuTEe9kB +yYSFayqZ5h7IRMwTdVSwsOamkQ0Ziv8CAi5RO6uANsBrqfVUgNrWFK68wqR3szN2 +Onu5W/PJY2ODWh/9xH03hJHsuGZ8A0zOaFJ2CI/z206iv6ceBoOGXCc/pbS1Z+v8 +pa4= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-noBC.pem index df61694380..29efdf0202 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v1-noBC.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICtTCCAZ0CFGNKiDecyAa5ZX3busxEaAjDk/QFMA0GCSqGSIb3DQEBCwUAMBUx -EzARBgNVBAMMCnNzLXYxLW5vQkMwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIw +MIICtTCCAZ0CFDFBdkiaPpUGb8nM+O6d1tr91YPfMA0GCSqGSIb3DQEBCwUAMBUx +EzARBgNVBAMMCnNzLXYxLW5vQkMwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIw NTAwMDAwMFowFTETMBEGA1UEAwwKc3MtdjEtbm9CQzCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7 wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCAp @@ -8,10 +8,10 @@ k6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhh eZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KW EsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONssc JAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAATANBgkqhkiG9w0B -AQsFAAOCAQEATXqAOtY7rKsBxpZBayDIVSNZaNhl3qzlP7kFtd+zstziKCJSiNlU -aO2BlwSDqblzQf+zzJJP2bxgtpRa0GZQGgxs7JHp64mNQD0XyOQu8VEi1Y1h3mr9 -fPYhGKhp08/mpYqrO+9f7dz7kpVFZJlbGhWyCX1ixP5wUBLbAX630hl2ABJAEkSt -kfrACettTWOlKrQ3wpdkFPSN7EnTxkiQfHQ+mOlKncCQgXdr8R2P/4SohtXGSLdj -w0lcjrvBTnF32/+ySGW/TDH6i0E+YDnpGYx53ySfgmuR0aX+o4FwClHTBUFUe333 -fcTfgJBrzo7L7PU5OaCb9SzCF9JyhPgLBA== +AQsFAAOCAQEAc2afLZa9+4Hu5VWL/ZLMzE2yAmVWsu6wPGedIzLuvm5Mq9muzMfk +vR8AB/dZ43CsXW+qeu5fCBr6TJpjRUIvgErqnlFzGIq6fYClTFykY6dQgSpPrFMS +8xXU225DNMqvP7I2ECJGaXT7jXHpQKrv/nTKShDWQ3luIMkDYIAiugSlr79hUr93 +zjN/6PWlCkdOeuZKYHjfj0+joKrsN/fFmt6jaq866dZXFL2g318xmYeezqVTXHGN +cp5wmYjtGxClByYBC2v/xFYL34YrPPOmzjDDW35Vxmu9JUuorXJKS2hl19K8AI9y +XSiBjdA5ZpwkoZ8Lr6fEqwvMS/01rw3DTA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-cA.pem index 207139ca80..ac7f599233 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-cA.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIICzjCCAbagAwIBAQIUN7gFOmTq+fFEJoxXDRrpq/Q27HwwDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLc3MtdjItQkMtY0EwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowFjEUMBIGA1UEAwwLc3MtdjItQkMtY0EwggEiMA0GCSqG +MIICzjCCAbagAwIBAQIUBeCRnw+hQiP6VhW29T1MLIR/9/UwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLc3MtdjItQkMtY0EwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowFjEUMBIGA1UEAwwLc3MtdjItQkMtY0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D /B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuw JJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyX rZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWd q5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEDAO -MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAICoINDJwGfjYeyJmx02 -jJdSH6UDHckOec2rCED9V87zBZL6y+tg+cFDwoyx9Tnd+FnFwJa/AhKaornO/NbH -xpAfKamCz9rMygBrjfdHjSxgN+HdIDju5T+OZmOqeL5RODJY1MDBiMKZGnWFYTcI -BpWq8vHlMaVm/GNyBOX4JeMOST6/kA8k4+wa+OPHT81B+NyuqZjkyHmzsNAdYAUm -oNBSpQn10ztRX6fBfL+yhdOmBwRsyDpo4WTRaVcMMrmprodkxM7PnL8Y45jsCu23 -KtOi2zw4CaVgrQrkqYO6Kff637ideA2cyt9mnvTdrbwTTz7Y4zKQiBUUidNn5K0k -6wI= +MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHW1JICjonCgCgktCFkA +4XHx6KNaKVxI9ipGaiZpETRsJCHj7PmP8nNeTtSjkMKF7TJ3q31TryOnVoaEl1ar +YO8KFNsrQxLxlMNjV3dYN7nAOgqkNjUznu7gX6yORWDad2MBa/v5ENV38sgbP6u/ ++ojBJHPztj2vHsBIf6b4pYlnvmhHNG07L2nir9YsQD5ArThnOAplRCIo8WV+gVH3 +/HcwSl6P3yVL+3Dz1kctqSg8xKtpx2YXH0Dg4ZeNEkuH0hof7Pkcq75cRI0TVy4+ +jHXyEl5Fls9SqcSbmCWqJm7vb3lfQY2xB1aCMJ+8tiR/hy3n3yFyJ/L+ppAlT1fw +5H0= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-not-cA.pem index 79ac849d3e..7b7c3b0149 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-BC-not-cA.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAQIUE7me2AKy3RubLwRqT2p5pwj3OEkwDQYJKoZIhvcNAQEL -BQAwGjEYMBYGA1UEAwwPc3MtdjItQkMtbm90LWNBMCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD3NzLXYyLUJDLW5vdC1jQTCC +MIIC0zCCAbugAwIBAQIUNUfuXxTLAa/a/zzhJ4logjqKohMwDQYJKoZIhvcNAQEL +BQAwGjEYMBYGA1UEAwwPc3MtdjItQkMtbm90LWNBMCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD3NzLXYyLUJDLW5vdC1jQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3Dg Dw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7 EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C -AwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAtFQbaJzLtcJ+ -e5MUmI1J01KXakrOLSc4IKv91WtHym11oV51bS4MZxXs8HvUJjfQ84+DuNqBCIqI -OsgNu656db+DMnGp9MT7oRyS0eZjJ7M/Qi4PJPt8HG6yf5UDAEE5mLgl1EW1U24A -X3jnYcZN2uydtt8qwV5wbLM+AyeZe44/O4I/8SETzc+s2BYxt25q95ePTtjgvbCw -cayyF4IcFnxZ/eUcS+E1c06AGkkYDgfg6dhzSANQERCf3WPnWjnX98SK4jJg9V9E -IVCAAIu1PX4Wir/bB1E8hGrPCGYyChrDyjqk3llxdg5WWUVmXJwA8c1nJ8wSG/P6 -dKRbx8FScg== +AwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEALOIT/vvBySFU +1FTp/Z7eiqBcOYE5b9OHaCgGcRxPQ9cY+gp6ofp/UV4+uF/EE+dDybay39Mk17EF +BHSf/UJvfE8+5aavOEn80gnMRJbDpe97WxAol4SoHFSHh+k7yNXNSgASvzTpoEB5 +e6VbfKz4RgMkcR/xRhigsSbgnh1x/jbuo7QnqSJ1zUjTEK1yYCs6snYANlJ5WrtG +y71ct9U//EL4+2MzF1FIe7WDOJQxyg5PAIkofnBr+DU2mPF14jt+sH8lPUrFBi0x +lArlHkaDEpujGsqsADNyrzXLGuxRv74dMjlgpr82Y3is6odp8jCmTUeCU9N8fcKF +UYAoh9eSOQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-noBC.pem index 76ad3d255d..75154fdbcf 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v2-noBC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICujCCAaKgAwIBAQIUR8xFiKKzfcmNJWmO6TfXCnabp/AwDQYJKoZIhvcNAQEL -BQAwFTETMBEGA1UEAwwKc3MtdjItbm9CQzAiGA8yMDI0MTEyNzAwMDAwMFoYDzIw -MjcwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDApzcy12Mi1ub0JDMIIBIjANBgkqhkiG +MIICujCCAaKgAwIBAQIUZ4pa9HdClWe4IIoVIQAlI2WYxPwwDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKc3MtdjItbm9CQzAiGA8yMDIzMTEyODAwMDAwMFoYDzIw +MjYwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDApzcy12Mi1ub0JDMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1 aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/we adA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSS pH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62W YVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauR CE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqG -SIb3DQEBCwUAA4IBAQB5FXurV/loYoc8wFGISUPqwbiKZb6IQ+bQA9eM9Wt8etja -e0LAGK6tsm31Yty15/5P7jjSERuVFSpBIXo/gqG/YaFvqMdbG9bxcSAakl6yESJ9 -w9isL1Dzd9Wa0FWFInH5baFkol1AOXebjwBji+0/THoll2KYdjTQQsr7P/lFcWXW -puNrjRq9TuJ2eoLUeP6HqLoljGY0wlntbeCF7IsmHawDnCiMjbOXGRf3Tj/sNdtD -nQhMNZfkbj34gIe34B4ko6gQlMAKSUJ8WyZ6H521oyWWJtbEBVgIJ/Yi5aJ06xEK -dw3gQS+YYaIGuwlHKXKhZMSY2xKktth79JMa4Zdz +SIb3DQEBCwUAA4IBAQBNN5zF8vyOfS72H59ipfvu5/SBiPgUh/WHmqWxmEFgc5Iq +8YL3E0GOZE4lofg4wMYJJANpDeg06EDN9c7hyP0xfldfA4a5eibFTSKODnxBsVOv +TJ+FUe2fOvZZeZegkBO5xhKpJYN5YWwbJnn+UGRFPDBFITZ5yenYtg5jz22zWU0P +fJKiuheAzlXXQ+5J33etNGbt50/2L28N+UikbYkgpO5ITY/NaZ4Xmw/yvihcMheR +5nL7jjbvoi1jwVAXiuzXHl2Krm+X77H/yOEOWVPF9uTq2dCO9dNYUOTW308hEwMN +cvD+freVfhSGnlUw9xuE9TDpNwu8UwA+Qp6PBYIo -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-cA.pem index 499c2adb06..e7ea5eed6a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-cA.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIICzjCCAbagAwIBAgIUYTfGm6G38pqv6YLDaFawWRuF+sQwDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLc3MtdjMtQkMtY0EwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowFjEUMBIGA1UEAwwLc3MtdjMtQkMtY0EwggEiMA0GCSqG +MIICzjCCAbagAwIBAgIUU/uwhYnC1vGfGpo8J3kUXnHZhlgwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLc3MtdjMtQkMtY0EwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowFjEUMBIGA1UEAwwLc3MtdjMtQkMtY0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D /B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuw JJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyX rZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWd q5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEDAO -MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFH1VXYpQX9313jJcvHq -qPmH4wSKZ5IkRK0NinGZSjqEzF6LDgF4Gxwfq6R3AZgdwlZjdrjtV5zTZ0HTOmPu -DXIYiSOhQmxGWkaXLjYQzKed3KzA6ScHjDdlDE9m/aA4maoaLh9yDSfLtY4RMXrm -557rzp7gcCViOTOJt56cYd4X/PAn6QPU9K4fxwbV3T+8IXzOwD3EueWGL1wmGXTz -qpONyKSFoWhdBLixOF+K1nDM44wzb4x3FUE095L6zA6bRINBz+e8hupFcIsp6Nvh -L5YWj1Y6O9Ke+vVHtJN9nN9+Q3W0G/9udgAa27P+/6EDTpcXFwo/ZjC+M0yf4SoR -uMI= +MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAD2nPghuQkcMngDTFGmG +OWGanLdRc1ieUyUYi39USBWHr6r9f2TRQTHbcz1oSl1wLt+kRfCAK/+Er+3h6rT+ +GeLPc0Ar4pxSt3q5VB/1qjk6gvlgMGEboxGcMwcZPphPnaOLQI8auSUYcCcXiQ8W +QSryjKHSgheftfgyCHvsRIg10/B2PAOEW/YhsRnaAbphGBHBeq6Xth2+uMywiEEB +Z5m2hkMGrgPWn8DXZMt74bH21PYpv4xBFaAJSChmLPKltyKvY/5qUzPRwosRLR9n +HWaPNhKuV0yGamg2pyy8d95aPV6QXzRJOApdaflk7QgOxqh0j0vp/LTvu5ra/dJq +V50= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-not-cA.pem index 72d1660a17..acee8bc316 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-BC-not-cA.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAgIUB9elgBKucFuH+3R078WwpwTkEE4wDQYJKoZIhvcNAQEL -BQAwGjEYMBYGA1UEAwwPc3MtdjMtQkMtbm90LWNBMCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD3NzLXYzLUJDLW5vdC1jQTCC +MIIC0zCCAbugAwIBAgIUcbuhiAQtKRCnlDJgUsbCYS9dHCQwDQYJKoZIhvcNAQEL +BQAwGjEYMBYGA1UEAwwPc3MtdjMtQkMtbm90LWNBMCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD3NzLXYzLUJDLW5vdC1jQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3Dg Dw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7 EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C -AwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAuP3TU11Bm/6s -6ANG6dlgIEC+HVeBFwYX7M+9oqAq2plVvrTjicpnq5UBYVEP7UplXyKGZ9QX3ug8 -TWZxvbImxvr/zBhiaUd0NdbgMVQLbjMYEaXEqrkb4d8VeNh8wGtKtUeU7kPGmP4d -wyJgq349pMoT+DhDHHHJoEilyPFC4mQkJlQpMu2u5A+bWW97EV9NPvDoqIqV2a7O -KMQuEaM66Q6TFOHu0lBJaQPVa6meCd9KNo3y+VEi0ItwT6rIGQPjab2diuW7azWK -YBxf+7NDIeUTlzSluNmTHGpziGthlmI5pY7cyIv0309EvoGoA8e55ijsf4TWE8yy -U89np9poBw== +AwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAVTkWDqZPYp0H +tXzmIJ1TA6IKmdcibMr/WgBYqmL4YJlUn209nLVblXxI77397LU9xfgRVDPMiigF +mdLEsXGIAXXpzFsETPui93Ylo9dqIXPQjxA0uERq7jVglRwGWJJs+ccR6d+r3u9H +bJn5+HrBm4SadgH7rDVkuq4A4RoA0TOaL3xIFkw3ri2JYJxDXUSMFzgV/y7/zhKN +DgVVyBWWu+/lY1rI3rcqonFX+3Q7mBGMQYGlfG+Y2EWY30JYZfleua5XVQ8rXjN5 +EQGbbjxzERtZDM/w+gR3Q5aKaaHNtEkgJ3LeBIFYYfXP8b5CHBF1q3/l/5pbXpD4 +esuCfQZ2zQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-noBC.pem index 07565ab190..b5a769b3d7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v3-noBC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICujCCAaKgAwIBAgIUV7sHuEj4h1soO0pJ338pCVy+tOQwDQYJKoZIhvcNAQEL -BQAwFTETMBEGA1UEAwwKc3MtdjMtbm9CQzAiGA8yMDI0MTEyNzAwMDAwMFoYDzIw -MjcwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDApzcy12My1ub0JDMIIBIjANBgkqhkiG +MIICujCCAaKgAwIBAgIUa3MRwO3Wc88fGTq+BLDax1OEpUwwDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKc3MtdjMtbm9CQzAiGA8yMDIzMTEyODAwMDAwMFoYDzIw +MjYwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDApzcy12My1ub0JDMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1 aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/we adA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSS pH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62W YVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauR CE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqG -SIb3DQEBCwUAA4IBAQCPOzsLtk5BvQmtgWPOQ849uZZ2XUMo24480r/0wSpVgvSB -KJUqaCu7bZTsrY3Ubl2kM/cJFAwPl6HuXh0U1LKB1Hv/8Ib3ZY1uoD6nJZHkaMu5 -MIBnMe6DDu2m3fOKcj/+iTRABb8ZThaUmBeYB5jTe7jAkcwuIlu/ifyCrGEhSOEB -2i9IDPbozqNbZUly3mMXoy30od8bHCT736XOV+X8zCAHqy0SYnAb6VpIOsqWMddz -nEzyosEwOVQ4SbxZJelmwNFzfWg/5neTJJCt7wIkoLa1PzNK4wfcpt3hesYDX01o -CJuSgWVgPKVMz/XPmmTrND4zRd16cuDrDbXGnSXR +SIb3DQEBCwUAA4IBAQAtIO0dxEBipKQrt2AXCEeT9asz1Txza22WRY+DWjziAgRz +yHhXGiRsH2ZcP0dbwMBdl9YgUQk2PRAbOhhMEde6G5O9WbTKTnWkh9zzC7UaJ7Na +C/GHamRMqcPmMIT/QHxWeZDuNXBhJs/uyVzM1gYLVwhYM7Z6ucQwrLoPEeMozwRd +hSvU+27OS0uxmwOVEzKMmxc1sZL/nufwKTBZrMO99/8pDoUHbodcHnB9g4gvr69d +ZtJ9hsPjYYAuhJvhYTwK94U4+ws9yhksRctzarsUPmhR9QzRNbNZjA2fDtwyifQE +3rwhGHA3AiKgMpgcFkcqSKXogNa7w/rORike/dWI -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-cA.pem index 62c50e2b2e..eaf1330369 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-cA.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIICzjCCAbagAwIBAwIUTV7LSWuUFy2t4uWantMVs6QIAEwwDQYJKoZIhvcNAQEL -BQAwFjEUMBIGA1UEAwwLc3MtdjQtQkMtY0EwIhgPMjAyNDExMjcwMDAwMDBaGA8y -MDI3MDIwNTAwMDAwMFowFjEUMBIGA1UEAwwLc3MtdjQtQkMtY0EwggEiMA0GCSqG +MIICzjCCAbagAwIBAwIUIUapN5tDAmwHX6cdwVGz91S+NVIwDQYJKoZIhvcNAQEL +BQAwFjEUMBIGA1UEAwwLc3MtdjQtQkMtY0EwIhgPMjAyMzExMjgwMDAwMDBaGA8y +MDI2MDIwNTAwMDAwMFowFjEUMBIGA1UEAwwLc3MtdjQtQkMtY0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D /B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuw JJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyX rZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWd q5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEDAO -MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACrDJ4W8m9C5VdBk0Gb8 -mnWUR5vv+dPE/wCyxvHCKbMz9DtXLd9jM06B8ujwvhQz/xA1qoR4V3oJSiwkWowf -G7ni7b9qETfIzgeykLHgtwpMBa0q09KyDNFyWzCWBqON2lh25nfV0FAM9WF/a8MG -86Mm0x5yonjo0IWQSvGh6/NFuJQTJ2rJ4QUYOaXBEv8RqPLGQdwJTdSZfHPAh3nh -GM3CYjDC1WEMY5rHInzYKDXcwXaeAFcJucmw4rbELrNTEBC9J+PWP4au9D2IzL1Q -j6Bv0mRc2F1XI36rTVdGOdcVdW7Ko/+PzZDOfFyfGK5F4Ws3HWCGhmdDkzwY+vHy -UCc= +MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAH9KhemeYs2XTWgWLs6Z +1iiumW/F8CamVHpGaYFtHlA4DzWJldrrOPNaIOZwssRBsFp207aPw3WNsCBAnCdu +34IxpglJasPmFBIKHdw8yWqRR693IfSQx3qIzTfKV3BllmVMVruXQ2mVazKGzbFY +576PrE+N2qx2J7149h00v9V5vKqHiQkXaEkOGz3CzjiK6FY9VEDMihUu9ysktyA9 +kY175cTEjkWWsS2FPjE6dVkwWyp2JWsFcvMMEBOY20t3nCzF3fp/TAJ2Ijk4Gtny +3Hk6EjqmDxYUzJSkY4Z/NQppADHbGTK3ypM3zNZJin3I1i5fkMHk8LbQb5/dT4d+ +7hg= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-not-cA.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-not-cA.pem index 3baeda42c2..c9d7f8d003 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-not-cA.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-BC-not-cA.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAwIUdSm6csE8oM+OkhwI9ueT71qK4BUwDQYJKoZIhvcNAQEL -BQAwGjEYMBYGA1UEAwwPc3MtdjQtQkMtbm90LWNBMCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD3NzLXY0LUJDLW5vdC1jQTCC +MIIC0zCCAbugAwIBAwIUZ74HMqUjOOIMvHMsDTbEBUvcyEQwDQYJKoZIhvcNAQEL +BQAwGjEYMBYGA1UEAwwPc3MtdjQtQkMtbm90LWNBMCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD3NzLXY0LUJDLW5vdC1jQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3Dg Dw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7 EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C -AwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAVg/eajslx05i -xXJFEYTqf8qJPDaHnnHW9Ai29+fySGoHZK+DVlHaQTk7l+9fCHGB5haU7Pc6xF9E -3FaQRClTclRzOcHxGfevg4/MNo0Grk0AOfi/H/mOSABj1H0r7FxEixKFbXN4HcpZ -5P8QyRAj+D4efD1Sz0IspGWje7GVx7ADCvQ7RdmQ7V6cO9T3dZqXFhd6rbtKmCy1 -rnYEQJysPhlYZjUC4ydixquyJ3YPhde7cjR5JdHOKNimEFzAIqA88rea+eiy947I -bWedFl3EC0OkpmsReQAlrAPBiP7VcSscPGFJPjihAnO5m6TNJ/+kyrvvf4hkYaKx -Oo0IeIpb7A== +AwEAAaMNMAswCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAMjfhh2xVEWqk +ViZXm/6RvPcQ40EwI4IR2U+MPF4HXaTgDmZtikzCiEePYk2kjQoYGv+f17mHorMq +0pj8S/Qst6ovLyrPSU8SF/9+tGSiIDyeS/3324S1fUn1wjZHLJWpg6p/8QvbeNHh +LpfQsfv5x5gzms/YCq7IJOvASxZ2MALRb/CzHLsULJB0W927VaRDM2w4PTTk3A9V +/+Ib3YUk2Qjk7A2tQ/SHh1qHQQyM6Trq/szf0uPZJN6cPNmdm2z7FK+Gez7QqENA +hhH0/svwtX0aXZDKNkHb7ZDfBKuDFUVFnUe9++AWV7NUndU6CGbr4vW1KM0xJxuP +uMv7yxrXQg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-noBC.pem b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-noBC.pem index 5cf9e0f3ac..8fe5fbd534 100644 --- a/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-noBC.pem +++ b/icecat/security/manager/ssl/tests/unit/test_cert_version/ss-v4-noBC.pem @@ -1,17 +1,17 @@ -----BEGIN CERTIFICATE----- -MIICujCCAaKgAwIBAwIUEdoYNrD6yEoOGZz1DDzJP1e3K1EwDQYJKoZIhvcNAQEL -BQAwFTETMBEGA1UEAwwKc3MtdjQtbm9CQzAiGA8yMDI0MTEyNzAwMDAwMFoYDzIw -MjcwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDApzcy12NC1ub0JDMIIBIjANBgkqhkiG +MIICujCCAaKgAwIBAwIUNTB/mbcFhxjeD9dyPUR3a9ePkPYwDQYJKoZIhvcNAQEL +BQAwFTETMBEGA1UEAwwKc3MtdjQtbm9CQzAiGA8yMDIzMTEyODAwMDAwMFoYDzIw +MjYwMjA1MDAwMDAwWjAVMRMwEQYDVQQDDApzcy12NC1ub0JDMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1 aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/we adA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSS pH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62W YVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauR CE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqG -SIb3DQEBCwUAA4IBAQCwIXCORPA5ckGpetgvLxnvShxBi7uLRGSb6Z9ufNkMLqjq -cN7sAKAmerUyIusZDUQLVz/JuZOY5JsBN0bREdmxFwwlWARGvb6dB7QPATNQBrCy -o0ocPr38rhYfflyo0feajQGfKbjHvWvEwNK0ht3NKouRHG/vIkCbgcJtyvtRuoNL -tyiZ+0ADQ8DHC9ZU6/VsaPcShGpXSgm2GHnZy0HUVYHRiIQGdVtO+aFWPobko6x6 -MfB9RPe8BKGEA2ft3ESpICQ8pxe49uolXfk5mz/JDcY8mgZx+aVA8MgM0GP8WsgQ -0H4hFQoL0zncPo/qPXl1eRjRSjN0Eg6gXh+ne2wl +SIb3DQEBCwUAA4IBAQCoqG2VzsVIXXkARm1TMNteeDISCOp6J4Ec29uX7/MmwWMY +/rQ8NFCvE7kbTiTa5CqZRBCBSsSwBnEwGZ7hD1MlCfDkYOBBCcVRRxtD+MCrwUdT +oQiMP03bbTmxiMmdZtSCwnISLUDw4WSslMMkX9xK7HBHjI3UBbZel4O1z4CFl1lo +1RJTxf8s4N4T18yONs68LTQuMNtHFB7PpAnrXZ5UBLEper3B9XDeHpzxA8kAJYfk +q8ARkh85miD324F6cGsMgT58JGL99Hy8qaVKkSasg5v5Pm15rHU67euS+MqRa2MC +kkfWOce8o4UxzZjZu2U2S6ouWm6vkqu0uL4Jbw4h -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_int.pem b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_int.pem index 4bd86f26c1..ec740db5c2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_int.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC8TCCAdmgAwIBAgIUM5quT54eGjsaP1cxVhTcjqiPJfwwDQYJKoZIhvcNAQEL +MIIC8TCCAdmgAwIBAgIUV+hLFLhQDihtiT//SIEjiVAMBQ0wDQYJKoZIhvcNAQEL BQAwKTEnMCUGA1UEAwweeHBjc2hlbGwgc2lnbmVkIGFwcHMgdGVzdCByb290MCIY -DzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMBExDzANBgNVBAMMBmlu +DzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMBExDzANBgNVBAMMBmlu dC1DQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1u togGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6 pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqL @@ -9,10 +9,10 @@ KkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3Zlqq fgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3sv Im9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6za GAo17Y0CAwEAAaMlMCMwDAYDVR0TBAUwAwEB/zATBgNVHSUEDDAKBggrBgEFBQcD -AzANBgkqhkiG9w0BAQsFAAOCAQEAIpI7z7FZp6UnFDKATJGWswifLI0xTrN77SS5 -6WfEAAW3sTYAWQ+3ELcCvkoTBrWJU3g/Zo1pIwMeHgBHUUh8rvKAUIKMzGz+O8+L -0NBOC6uYiYPDoeB475FSWCd5aI1rBwLrCWb9FPzX8BmhZPXVzb+wfdNOeWCp05kw -qBoKQPILSMH2ZcARhsPKW8SRZzVsci5vjD9z4viCM0o32nmjuc0yqsS8x87CrjER -l1p/UqcbI7/MnOPdTHDSRKMEWYOwQO4r6FhyUD2SvrdxluD1/EoUIAuFPrcJtRsy -26cFPq/t1Z+rbJUgTiQLdv/fGjOlMZsKiRIUy7hDeDlX2K2sEQ== +AzANBgkqhkiG9w0BAQsFAAOCAQEAQfOf1wz3Oy4RcLmMLknR+4VOvaZsmX2wdG+q +z4pgToc4EVk98B1YghYHaCkTxhD97Js2u7GCEfa/p3+Qr1TfrDxnwYi+jEuariLt +JnqNnaI4klwh5sq0w3+j41+5YacbBHWprmt79OCDnXSKyK5rpwz1HLjuX/7R1TZe +WsNw4vtzaKrimZICF5q91TtKjIOe61k/WiDv8nuJYd7rD5PHEdlOrtq/KLb4gCgV +KQyYCKmYMglIP8AUiY+1F8mEjRY5gh/bGxiaEN9P5XJoqlK5bSuzX+Ceq0bJGi1K +KR5XNNjGmscmeQ8eqQMpP6ho5GAAfFhjH4HA+3rxmLRxr9rYzA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_RSA_ee.pem b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_RSA_ee.pem index e2e7112650..944253d70f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_RSA_ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_RSA_ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC8TCCAdmgAwIBAgIUNXEayt+163+kycsC7tTPdDUnL9EwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIC8TCCAdmgAwIBAgIUQ8k+kAcHomd1BIV2dn9USDyMJ2EwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBExDzANBgNVBAMMBmVlLVJTQTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -9,10 +9,10 @@ V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaM9MDswEwYDVR0lBAww CgYIKwYBBQUHAwMwJAYDVR0RBB0wG4IZb25lQ1JMLXNpZ25lci5tb3ppbGxhLm9y -ZzANBgkqhkiG9w0BAQsFAAOCAQEApALCzRlkc7U5z9b3dyx8gWLh3q9kzsxX+QWv -+rsN16szFZHbMuj+P19FOuvQ5uefciebz+9qiOJX8fxQK6b5T6d7dUev6OLZH2lm -yDwSvd+VbnsI0T4H6vyI1Z1OldrEackr4NRsAM2d9/VeM7/xluP2sWq2vh1TA3rI -9C8WE8U4T0v9V4UlS+Q2kTk1KkLP/A4cB8hFFWDcWGMgjbSfQyFuZ9sdIU8Psr3s -1EmfbHp1p6c3j8AdsM4Z5lMZ3xWCAChGm2uD4NIBvhUPviVFIyrpIpTutD/U0659 -2d9jZ5FBYQLtyHF2/rRq6uH9Ii2IRIHJCzmlS4WpV72Cye5LgA== +ZzANBgkqhkiG9w0BAQsFAAOCAQEAYsSstaLWBEQ1Iis41TruMKeDoKjrKlRe+/vs +Xu+/erNvmKvkfXT8tbyWEZTHdNyHqwkejo3AhM5oHs41U7jYUTMXLjl7Y/6hHjUt +a4RnRrK2pBvV74OGWhuHq+otgS6AVr1JXDeFxG2clSoUw34LT0Bgg2zK1M7FUJj2 +6Vidw4ORQKgLhRKI78sNW/cyXX7aq0nuKBo7Clx4QCNtX6gfUlQOrEL5WMSM12sh +nIQPR2I5eKvr2JR2cw7TnKZlNxd9uimJ+4a65n5ON+TMO4QGXkGx/Kvwk+7zTcZa +Z3FnIkG0NphO3xIJfWaW0VWooJDSRdVwKjyBF92l9+xJmjEppw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_ee.pem b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_ee.pem index a3ff0798bb..f409c84147 100644 --- a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_ee.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICPzCCASegAwIBAgIUWxMp1Cf8Rl6+fSIcLBaPVYEgtLMwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICPzCCASegAwIBAgIUCcfq4I4if9ytdjMglL2z5/jeJXMwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE oWhyQzYrXHsYifN5FUYVocc/tI3uhj4CKRXbYI4lLeS3Ey2ozpjoMVNOapwMCwnI 1jmt6DIG5bqBNHOhH6Mw4F2oyW5Dg/4nhz2pcQO+KIjP8ALwWvcaH93Mg3SqbqnO oz0wOzATBgNVHSUEDDAKBggrBgEFBQcDAzAkBgNVHREEHTAbghlvbmVDUkwtc2ln -bmVyLm1vemlsbGEub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQAcrTwX2xVdP3v5HPPf -tGzZjoyEH3UJLAd0fN5lMwQ7dEp+6BGZlMJJsL/1RjDqicJW/mXto3nxh3WQoaGZ -4v6MOEiCg5eyNqdxYO9uHfYGhFUB97vw/LqNKT+FeFNkotJQ0qibPOnMLersQvJj -1NpHJ5ZBZ69DYCWKhZnDaah8+C78MQY/jyTZYb6RgFI+R0DOcYU8nAN/39HvW1lH -v/EAgryyeQGzfGzCp9FeLh5Y337a+ssSC+e9QAOyq1GiszZjfGSN7US4Jph/bK3c -05cYjk71It8jLxUWG7BsQMQ63jq68FnzoVy84uwbOJHHBSi9supZBXZY1s0mjDQn -q983 +bmVyLm1vemlsbGEub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQB0/TXW6wcZDFFQ82vu +WncHepcMc/KHYhXzucnKypCAa4ssxbTPfztQMceVY1G1SrbQVlopoaqkGieB+U2y +c+j+ziMRmiixw4nwcaBk/FaqnMDuvTaXg4w0Yfy5Esa6gHFAk3QmJKiFraaJ9PL+ +cAd5Bevd9rO/67XRh6SluqEoDY93NKmvl1ZWyK9KfPMvEQLA34nFV2/vG41+Rm/X +sDX9mIwITO4cilQzGlwaPSlhp/+8RPdBRnURtat65/Jnu9UgfVCndJkIbFtSChzJ +F14N5rmjh/cB9wwjFIyg6TBU3uf6zuS8raXS8p1wgJHUSNKgv0pU6m2+4kue/NgM +4iyr -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_no_SAN_ee.pem b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_no_SAN_ee.pem index 4043b4cf65..5486781ab2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_no_SAN_ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_no_SAN_ee.pem @@ -1,14 +1,14 @@ -----BEGIN CERTIFICATE----- -MIICIDCCAQigAwIBAgIUbwqkuCjPVy8mwWxKDcSJGCl4y+4wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICIDCCAQigAwIBAgIUPbotsjFaxKBuulBnC86YuKgQo4cwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBQxEjAQBgNVBAMMCWVlLW5vLVNBTjB2MBAGByqGSM49AgEGBSuB BAAiA2IABKFockM2K1x7GInzeRVGFaHHP7SN7oY+AikV22COJS3ktxMtqM6Y6DFT TmqcDAsJyNY5regyBuW6gTRzoR+jMOBdqMluQ4P+J4c9qXEDviiIz/AC8Fr3Gh/d zIN0qm6pzqMXMBUwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQAD -ggEBABKGcBP6hiCbXC+X70crjD3DdKjqgHIb8jTRN7XwMJSIvy4NWOluvA+5RTrB -tEAUNHIN9vVA1o5FRJU+8Ob8HtsgB1fsAnEhxf+DaTvBgWOZP7HdLAU4WTA+l9Lt -1TglXt68VwUvrH5/vbd/TgGmrZVezsCtUS3R9ItlLfAFMDLB1sSHA0aobuBKC/vg -rAApFPVCHiZKtS/LUUjHyWSjwKZV/UcI3/Rj6JRhR5GMhLtmfrk/mzYMK/pGOkaE -JlvlAdD3o20qnnk86XAyelQk0DdUNsZYmmDolrW/hvSzp2/9dNX/UfCZsQWCZQFG -1MT9liLjxM1DUZRHnMOARVi2/fE= +ggEBAEgR1X0PoryNPulXMob6MuI2nW/rLhbQZq1brKmCiOeq/zqEe78ziX0CDJVN +/X2U4Vg0eso5BbRwMyxs6vqpS50Lrc4iUSs7pKBc8oLDTIA13rWmOLZhHzJrwTTL +50lR1s9rF9p1EfjWq8kp9NscINMjITi69ai30AFTeO2f/VLDFJbQu50gTNgiUoaN +YodyPfcTmJBLWkiP1utSGXJl8tYm5C7QKAaS6a92wF+EiSLqplWwGFIwNw2zuC3O +fBD9+6zFDiBTXltopo7KIbzv4t9ug7e+DmG7tKbTXvgOookkaVll1Y1Fgyholxk6 +V+BS/4Re9RdVc0BpeDUx9dXFMEw= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_wrong_key_ee.pem b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_wrong_key_ee.pem index d77ab1a53c..35aef041db 100644 --- a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_wrong_key_ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_onecrl_wrong_key_ee.pem @@ -1,14 +1,14 @@ -----BEGIN CERTIFICATE----- -MIICLDCCARSgAwIBAgIUWfbnrKhEZEyl1dWqQjY/zrX3yEQwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICLDCCARSgAwIBAgIUJV7P51LfMT8inx8V0cc/a8JcJuUwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBcxFTATBgNVBAMMDGVlLXdyb25nLWtleTBZMBMGByqGSM49AgEG CCqGSM49AwEHA0IABE+/u7th4Pj5saYKWayHBOLsBQtCPjz3LpI/LE95S0VcKmnS M0VsNsQRnQcG4A7tyNGTkNeZG3stB6ME6qBKpsCjPTA7MBMGA1UdJQQMMAoGCCsG AQUFBwMDMCQGA1UdEQQdMBuCGW9uZUNSTC1zaWduZXIubW96aWxsYS5vcmcwDQYJ -KoZIhvcNAQELBQADggEBACu+l7hlJeFp7vBHs10eA9hEnQpSHmdm2Nid1h68lZTT -wqMhxLDSoufB3H8miqZHdPY1eTbpRZ5AgeKwmEUToUkU1TnX9IKK2frjtyQTY3Ru -ss1mBszTLTU5wsJHkr4Rcv2sCgciWUHYoqD+2S1hTu4koH8dEsP0dzWDTccc1A3i -kXeBc+XL1WIih3M1dCtAUJtaZ+mBuyKrrjWZxHnY3xZGDZpMvFLReocoe4BumJiJ -MwzVLV/SsNBEDMB5RFO5CjkJKCnzWcZJT/4cO+qbo2nsnjJer7F550VBZr4VR6uu -f/33AuNprmabj/ZhxwVYH27Jx91TfrfZ3owJxxEwqO8= +KoZIhvcNAQELBQADggEBAKCN28a/etnsGJZTHGGGByq0xzGZ1+cqPKD/xDD7lfpP +QdsRTduTHjiBQQJcxAEYBLGj94SaplzU0M2Hrv8rdAle5jSxoGxB5UsJc9+/jz7H +NKb5vFJiZcGLnjffl9A9L/15gA2K/nCkCQ6Tisgty6+TTn7DBBS4jsJNqnn/WUxv +O55fD1ZVh6aJv0eydZq+bCMcWidf5OlpYUCZn+JNZdhFU8u0dDz49ObN78E9GVkC +ujBKjvQ2h46WtClH0cgvu6xB6OTrDn2SlHj8CFt1PU/neyy+z78AfsnOujI+UbcB +Said+GKh7jLhL/XCN8Dj4MH8oFCiQ0C2q89hyeltu9w= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_remote_newtab_ee.pem b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_remote_newtab_ee.pem index 1c46802c42..83d78c109f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_remote_newtab_ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_content_signing/content_signing_remote_newtab_ee.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICUDCCATigAwIBAgIUSwHBBnt3bapa7xaaXjDTfgEY4FQwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIICUDCCATigAwIBAgIUAcmfJgcijwXDbgFRdaJNVydy6FAwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGaW50LUNBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMA0xCzAJBgNVBAMMAmVlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE oWhyQzYrXHsYifN5FUYVocc/tI3uhj4CKRXbYI4lLeS3Ey2ozpjoMVNOapwMCwnI 1jmt6DIG5bqBNHOhH6Mw4F2oyW5Dg/4nhz2pcQO+KIjP8ALwWvcaH93Mg3SqbqnO o04wTDATBgNVHSUEDDAKBggrBgEFBQcDAzA1BgNVHREELjAsgipyZW1vdGVuZXd0 YWIuY29udGVudC1zaWduYXR1cmUubW96aWxsYS5vcmcwDQYJKoZIhvcNAQELBQAD -ggEBAJydcnytq9/oWB9salIOkJTPn+98V9oAaepKjd1TJLu04IU/fYQTYOG/aw3I -hfrfjv/ONlS0jmz1SU3yVVAgE4/an6Kqg9Tza1u5DxYNFwOmj4dmEWR02EJsFa+j -hPMJcn3FR4jQ89Hx2o5ylJX+CJ0ig+MbdzhOsnVKgA8MImh8dZoq50eTu6/N20Kb -DTkylTBUIaCkN5kZHeRdQsejkOv/rvuOcE5oYWtKQoOp58RCto5f6XkkG5H6IpqI -kICzAXS4M3VPOj2gwD+P9txWCCRx5q3m248gfVK5IYdX+DTh7MPJvTUFqjlL4wPO -czFRpAM8ubl3YemaWxLSa04Cnd4= +ggEBAC3JHBMEyPN0gJrlVQTviBXIf20ztCeoJt7YauSKlzmMsQFUx21ZXHNA3f4c +z3yZKD/ZJjWnRfVcb0oFNKGWkPn+pgnTozdmm0p0KQKZZZC2qPMeXOti0COBqq+v +/Au9Bx9aapJOSzHW0wkATGfH2rLb15DwSerW9Dwirmtde91V73KOWKzizesXC2NX +4VJt6YLNoizm8gIC9B/f1FCQ3hSQJzPC+xUi3qfUU9giduucUB0tLHNVVtAXikd/ +fLf+RQV9D9ZO2gWhGQPm+wsrCBK0NE1ihyAWcPvH+YdcMP1CoG2tF5x0YIV7uGXA +Us3KjxH69ipvqPD6JBYXC/+xrNE= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-future-timestamp.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-future-timestamp.example.com.pem index b4713b19d1..6cb4947b79 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-future-timestamp.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-future-timestamp.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIF4jCCBMqgAwIBAgIUC49VkI5SGXCKx9/DILo6AklEjC4wDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIF4TCCBMmgAwIBAgIUId7CPE9I+saoB4SPStViNUB4yUIwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAqMSgwJgYDVQQDDB9jdC1mdXR1cmUtdGltZXN0YW1wLmV4YW1w bGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB /W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRx @@ -8,27 +8,27 @@ CHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMC OosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdm Wqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGz ey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUD -rNoYCjXtjQIDAQABo4IDEjCCAw4wGAYDVR0RBBEwD4INKi5leGFtcGxlLmNvbTCC -AvAGCisGAQQB1nkCBAIEggLgBIIC3ALaAS8AVCIlmPM9NkgFQtrs4Oa5TeFcDu6M -WRTKSNdePEhOgD8AAAFR+nvcAAAABAEBAG6+Ck/RCK+tP7UaUy+qOd1wL2iX9R/Z -9nhYSbB9XazoLhNPgdwT7RgOSfAjnHalYD5x19vAerYtkUoc8K/NIE5MIiPaDB/O -84vRwiBZ2zafG4WRpdMzy82Oj4Glh+pA+jYNz3ORX+sD23e7QBynjdFElN1fH1hV -hOhlsEMJPwZHoZJvr19M+EOsq6Ies9WtSj2+/pxrxaO72aQ08WmCGFzTjfgTrGbo -esp2oEsxlMHE42rO0FViD/pvQmtt7BC2C7Nmwl/3qNbzu5Zk01IflN9OEhSINbIx -92mm44dJ5TT0DIe4xfjXscW36fJk4nyEAbrBSVfCO6SElbLgAo+wnvkAdgAquDBE -M7kU3tLzHkIH8lHBejegkmhS2QgCBvheVzkWKgAAAVH6e9wAAAAEAwBHMEUCIFx1 -UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiEAumhNxgUlGk5SPwO3n8cy -OPajrdcyRCfFi2+H6lRK0esBLwAxCPa23XIYB/AWlYRNhQJWtnGTYIPbvTk0oFBS -UBookgAAAy+WBCQAAAAEAQEAl1mWk/DpWWtZmJh2UlcE7G8R4YXnd4Dl2KorZuvR -96kUeAANzKx5+mhGHGx6nM5QCbpg5sJqw77nbQBT/hisLaTk0h+4a1v0fCHfajaZ -EE0EDJgjRWlWmZ4R+NIj+YaYXLqG95U6ACns6imd3aNe+PfzIU0zY3vAa8Hr4e1Z -r7rqxsucNMTH0yqKt53Q7E3/fFQq18SJgRrTRdCC9qfd9kIBh+3YSMlSVcpGKxrY -B9ELTgixq0Z6Fbdee39XH2vw0tR7QTetDA1akwhsAwArbMc/gGqtN7ZZ/ZdKPniN -J9ES8t8x4B2NFZZCNvwYLB5bGD5ge3kWn18OBEWprRhu1DANBgkqhkiG9w0BAQsF -AAOCAQEARf/pxAKnN7vI7ROd1r4NUmML8Pe0yKhN26doUAxYfV8TwyeIZISP6Hut -c8plIDKbuXxGrUXBoTDW5OXF4iaZBQCS0zbblFWoosBSJPxNy7eBG6dewyz9mBy4 -8OgMdlNziuKAs6C9vQprvJUOZjX76hOHRKj9JErIGJ4gYP+wpbQByK57JlqrPPqP -FBNN7PDiqnIMVnZUGoAlgeXw2a58kB7jwD86LQKxRRtzGbRm+u3lfjiM+uOdvPVT -3PGnEimh38TjBTYolhRuhhCI+vaym9o5uubAI+OtljaP6q9ivfuH8mmIaEwFyRfR -6i4wxieyotiqLb1xwCa/ylsYAAuFBA== +rNoYCjXtjQIDAQABo4IDETCCAw0wGAYDVR0RBBEwD4INKi5leGFtcGxlLmNvbTCC +Au8GCisGAQQB1nkCBAIEggLfBIIC2wLZAS8AVCIlmPM9NkgFQtrs4Oa5TeFcDu6M +WRTKSNdePEhOgD8AAAFR+nvcAAAABAEBAA04NEa7amzJDYYjqbU7o/1Z+JUpkhjy +AnUUwQe/WECCrEd1yOE4y6CMvJpTI4aeB1AKvWVkuwCbuS+pLDhsCrXKH7WhmYCW +FzxMMJcCI7g0gqC0LYUvSUcuR8AHRSbsOoxl9jSq0+TG4Y0EXyA83iW4RfItOEbw +POxeWlziahL7PaN30v91HaO6aUUYHDzmoZDfuw+l6StTxKyBfawK7Fgk4D984Ms8 +DKM2+rdDQcQ9fr9EBNFKLdCtSOWWADOPihIYAz9EJQdZziOPeQlf4FQY/LVmxDzT +JJtNmQpE77bdr8JSvYPMeAdoFqNCYPIoV3jqApzEsJSO1QnpK2y1OFsAdQAquDBE +M7kU3tLzHkIH8lHBejegkmhS2QgCBvheVzkWKgAAAVH6e9wAAAAEAwBGMEQCIFx1 +UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiB7uIqKzXb/ifIKuXZVtPkI +CrHclw1f9XA25AaMriW2yAEvADEI9rbdchgH8BaVhE2FAla2cZNgg9u9OTSgUFJQ +GiiSAAADL5YEJAAAAAQBAQBdvYe1CCsCHz9jbl0JuJz4Zcpk8s/SinwPa2aPRa9z +ijzseH7oVOvDzJ2YxNusGTm+TUaNTYj36Tb4sk0X7es2OXtyj8QZM8DBltpf4ONk +rJ3wxEItylv30HURt94M9cTo4GE4TszrEtDYMTSX+iEkZYbyGynpHowufRdPC5Ha +OyTow7+Y9/NQ0qIoj0NDE9Bm0TXu44aW/LHis8B5vz7f6vJplB1WmFPx2NNcXWa9 +zmv3jL/A68DEHd1ov8PmsPW9rz0B3sIMbucoXQeL2Jz2Z2d4suyslYcPcrWmV6aD +nV31mntJAs3eWsmwDbocIlKUG8AvuhJUS6IDtptZeKabMA0GCSqGSIb3DQEBCwUA +A4IBAQCXTisX1DwO1KCKKCAN+SeOzXA9Wx/p2Cyj6zUlfJ4ksxRBDFq7Kv/noTPW +k8t0jJ2ielpa3y358oJdQp+HqpuV03PThk4pY4jOmOYfNwZ4CJAKIy4ycQ5bcREP +6YhHnxwDfq5dCZ9LcHyY0sr7a0NUCU4LX9yxkB6WuguNuJP44E6wxkPi8ssE7ev5 +N49UkS35zqNoRd+gNQRHZETxMZ3sevFFLgpFZH+FAwt7TDxucY2kRrnTr5H8lQF2 +82v63eKTyQ+qXiw1dDQYaepZJFG48jWNazSM4Wjc0BMgurTklevDgztgFSiMzjs4 +H2jZy/pGKLbzuyGDIm96tmyPcW0/ -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-insufficient-scts.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-insufficient-scts.example.com.pem index c7621b1731..a43513921b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-insufficient-scts.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-insufficient-scts.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIEsTCCA5mgAwIBAgIUC5q1VHZl0Dc/oeoHLepKaxJDkGkwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIEsjCCA5qgAwIBAgIUHUXiWEe0TMRDkNphaHlVVXp0Ja0wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjArMSkwJwYDVQQDDCBjdC1pbnN1ZmZpY2llbnQtc2N0cy5leGFt cGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk @@ -8,21 +8,21 @@ cQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHT AjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3 ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jh s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV -A6zaGAo17Y0CAwEAAaOCAeAwggHcMBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20w -ggG+BgorBgEEAdZ5AgQCBIIBrgSCAaoBqAB1ACq4MEQzuRTe0vMeQgfyUcF6N6CS -aFLZCAIG+F5XORYqAAABUfp73AAAAAQDAEYwRAIgXHVRnxMRUM1dit4go7wGMJH/ -snN1XzFk7P3LQoAKcOYCICUjEyIhezh2BmD11ZK0u8XYhm8omWeyOJ2wq1SGdnaR -AS8AMQj2tt1yGAfwFpWETYUCVrZxk2CD2705NKBQUlAaKJIAAAFR+nvcAAAABAEB -AGhOiWcpqZ8E6iM1YZCL9e82P0/bjy1m/hCVQdKNcfYn9u4kV6xFn8SRrjsaztNe -IJF6zv1B0+jtXI0waOONxbwDoFDwoVoiS01AotLpus5/lK5YcYKvrm5rGe699Huv -hyri1H97Gv5pkTIKxSpOgas0x71TLLe7ZUzRAZTUe5/WEWsG73pxLgJk6aKH6qzY -xGO6p0hsSDYt89MbztfrhPwZvSIRu92kGsXkPFECp9zL0H0kxRZZen1xnFMNRmmB -QQxXSnE7eES0j17hVYbGkJlA2v3v3yXe5g3O6gMRc7yQZoDWgUd46irEqYWdrt2V -AwHcYt7VC2xx+0Z7D1RBQ3EwDQYJKoZIhvcNAQELBQADggEBAD3XJ4XYNZfUxsmh -W4j4Gn2rejW8809+QVIm8Jz8lISVUPyNOMc1HJLGS1INaSfRcD9z1y3rPS1scxWw -HQipMLCJmOjXrxC/TDJ+o0ugJ74xpCYwf9slkYb1ngG924MAVElV521D5oYu9/cY -GW5WwnQatp6a7C3SVdiH+7/a2x+qhapWPQAxCXFYkZnVg/pxrbIrjP05paLynv9m -xIvO8u81ZD4QE8aQQ1/Unx7zRscaKwouOMmxYquMDQBO9fvxVIJ/Mp0c2u7wHltE -JSI1zQBvnKWkKzuiF+Gy8PiZzifqKDar6j1d/KyEjMFOtbnbgNLWVgj1V/FoHwEX -enVR+Po= +A6zaGAo17Y0CAwEAAaOCAeEwggHdMBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20w +ggG/BgorBgEEAdZ5AgQCBIIBrwSCAasBqQB2ACq4MEQzuRTe0vMeQgfyUcF6N6CS +aFLZCAIG+F5XORYqAAABUfp73AAAAAQDAEcwRQIgXHVRnxMRUM1dit4go7wGMJH/ +snN1XzFk7P3LQoAKcOYCIQD/YMLzLScE+rq7mMdwbJY0Zytjhkr9kOu+2JSyv6fo +VgEvADEI9rbdchgH8BaVhE2FAla2cZNgg9u9OTSgUFJQGiiSAAABUfp73AAAAAQB +AQBkFZbX7A94d+AQBLDtE7CnqSmnH2Eyo4apEc7D0E6K8Omy/eULbQT6c8Pdfuoc +RQUcM5LTW9aDX7DfhSRHQ7iaux7y91W9Bnfpzgkx65yCDjbfSiflkKtPx5nNn0db +PsKJrWAT+d7EtBOOuGTwAZjsTrHT5CjxQLOcLPjAJmjb95tZN9EZFenlIRY0yAy8 +pmSzXGJBzAilnnVw0feG5HN/nP/vRb4/oO4/sENgdI/yHnBe4np2Zob/3HaHWNa7 +G5QNIeIqML0ybHVqqQ+Zuu0L+XO/W4HfrtZVU3vl/JV2w/7HfoOBMoybuqZ0PdVB +vYqSzcar1BOmU1nmcYq+L3jhMA0GCSqGSIb3DQEBCwUAA4IBAQA9NlIR7R6ijdiG +VmJ4oTipixbGe4kKffZBaiPzuB6l9ZV5MU6BsaG3HMDciLxh7BYGVFWAUj5GQ51Y +d8p9T76haQEiwq7vBw/2ME+kIupaS3XWmNSdH5dyGXRoH/WqX58roZjIuO5G8qsh +5CNOL/vFeEZYT1KbrWWsaMxc07MAnsRvpKLVXZMNC7OXuk2DpI4VfTu2737y6acP +njuvp2YK/AF/8cwQMnyztf/vNfiRdkjq0mC2K/KXARAthuhlh1lQGFnr9z99m2Ri +a5iWTzHn8w3xzXRLKEWFlviwJfKnkMg+hVVXSxU62eIlDd4DJDuOQZnzldM+/aau +ycLnatmB -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-multiple-from-same-log.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-multiple-from-same-log.example.com.pem index b31fd3e605..27d15d8bfc 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-multiple-from-same-log.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-multiple-from-same-log.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIF6DCCBNCgAwIBAgIUC8DCatF2brTeGWtc+81h/HVmJ2UwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIF6DCCBNCgAwIBAgIUC7rivVKxO5RshDaE7BllzLeuclcwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVjdC1tdWx0aXBsZS1mcm9tLXNhbWUtbG9n LmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohR qESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+Kv @@ -10,25 +10,25 @@ JxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5 Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6 clHEMdUDrNoYCjXtjQIDAQABo4IDEjCCAw4wGAYDVR0RBBEwD4INKi5leGFtcGxl LmNvbTCCAvAGCisGAQQB1nkCBAIEggLgBIIC3ALaAS8AVCIlmPM9NkgFQtrs4Oa5 -TeFcDu6MWRTKSNdePEhOgD8AAAFR+nvcAAAABAEBAAqXn7gZkisCTz8Uo4kQqpJw -YxPWZ2LXM/ktX74leDMN1EnUmyEXGPY5VFmm5jXwf8zzdxvRxF4iX1A8qdGbcP56 -S9zrhkank7/MFRR+OyCDeCbQsN4iVJJs3AVUAdXebRtXmj+FleQTYmhhxWqCAH5Y -GyXFeo778VaWnhm0RJGwJKGX9yZq3vmudOmByNWJt25oDnz2kKUgUsO1oS+dS6mA -7kF68sAdd9fWVvkxkNuNoUBG+4xz17KKWEmHFopXWzoWmVQmV1xdvswkz3NtfSwJ -jBoBlUU8XzpeDnr5R1PhAve0GnZmj2guTfoYZfPImncj/NkmAsxmY/YJwiKDV9gA +TeFcDu6MWRTKSNdePEhOgD8AAAFR+nvcAAAABAEBAFplbFRoPqMLIY4nVde4jUSG +rALNmF6pvcUV103LdxBppv8cEPZf1yoHzpv2N1mi114InY2vlreeVXS5ckU75UIG +FEMoc0i2d5s/JFH5q7xxy8lAH8yaA7n10w+RO5x5NcthEzlNd5JMteA3pXrY/ORB +xS1/zl/dYhXMQ5+PHTqDyQa0Gpp4suNJhsiURghu4WddW6V5OXOVbbyh8T3ycloa +j++/NCGlwLgTzyI5KUrCF9j/YsvsR4c5K0GQ6aku7eSOZBCnpQ6HokFNW3viE7/8 +xke8RYHLzLuIKfV0UytbZFQ1du6iqekWbee8ZpAlTgkeOv8EfY0dPU0reaMwXHsA dgAquDBEM7kU3tLzHkIH8lHBejegkmhS2QgCBvheVzkWKgAAAVH6e9wAAAAEAwBH -MEUCIFx1UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiEA0IdILp10G0yC -B6aZxHslqKIUcu5oV9hk/1Bl6GrrmbcBLwBUIiWY8z02SAVC2uzg5rlN4VwO7oxZ -FMpI1148SE6APwAAAVH6e9wAAAAEAQEACpefuBmSKwJPPxSjiRCqknBjE9ZnYtcz -+S1fviV4Mw3USdSbIRcY9jlUWabmNfB/zPN3G9HEXiJfUDyp0Ztw/npL3OuGRqeT -v8wVFH47IIN4JtCw3iJUkmzcBVQB1d5tG1eaP4WV5BNiaGHFaoIAflgbJcV6jvvx -VpaeGbREkbAkoZf3Jmre+a506YHI1Ym3bmgOfPaQpSBSw7WhL51LqYDuQXrywB13 -19ZW+TGQ242hQEb7jHPXsopYSYcWildbOhaZVCZXXF2+zCTPc219LAmMGgGVRTxf -Ol4OevlHU+EC97QadmaPaC5N+hhl88iadyP82SYCzGZj9gnCIoNX2DANBgkqhkiG -9w0BAQsFAAOCAQEATEddBVhtBDx42ZCLvR8jZ/CWjhpQwYohpp8xItMwOhHKD1or -choIBwcDBl3jmBl2WV5VPf5iQL36sKAIjPytrOtC/SJZfLKh7OunFbkjxau833Ad -3eS9TEuuEQiTitOEyGYy59Qq7kfK+hoxIS5Amio/KtBZTNHbOWcNxdYZCMVPIieK -62veocmpHSG95uN6o2dvlCF2ktuxIEJbbuu6/HLgFWNm07Z4zbBYURZuJSbhvyKh -U0j7sFsUltEUl+ha1uav9ttl5mFgOo6XaaKdSZZXiN1AuSpoYG9Jiyqh1D0gR4eu -hE4gZ9jVxQWyJFbkeNH5HnTOr+itrHEaIUlWYw== +MEUCIFx1UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiEAyG8WGLU3YlGR +RIRIM+W7bf6JCA5ZJtgnbL3Ih6zMsK8BLwBUIiWY8z02SAVC2uzg5rlN4VwO7oxZ +FMpI1148SE6APwAAAVH6e9wAAAAEAQEAWmVsVGg+owshjidV17iNRIasAs2YXqm9 +xRXXTct3EGmm/xwQ9l/XKgfOm/Y3WaLXXgidja+Wt55VdLlyRTvlQgYUQyhzSLZ3 +mz8kUfmrvHHLyUAfzJoDufXTD5E7nHk1y2ETOU13kky14Deletj85EHFLX/OX91i +FcxDn48dOoPJBrQamniy40mGyJRGCG7hZ11bpXk5c5VtvKHxPfJyWhqP7780IaXA +uBPPIjkpSsIX2P9iy+xHhzkrQZDpqS7t5I5kEKelDoeiQU1be+ITv/zGR7xFgcvM +u4gp9XRTK1tkVDV27qKp6RZt57xmkCVOCR46/wR9jR09TSt5ozBcezANBgkqhkiG +9w0BAQsFAAOCAQEAs2NqhOX7U23i3V/E3ig+8E0I7usOcqgvNFAcnlNSs0vVhqGk +YYNNJvO+TRVBhe6oKsCql9SFttmCf+o5gGtENWv+lnpP3llczx9aKhajbIo9lnzs +Du0QjeRMiJXu8tSs1dkie4SyqSqE791RBdqB9A1uww8K6REQs1rtiEFYl2ngSbeK +ZKE7ugtADZSEtiC5qlDcu26KewRjdon9phb7fWtVIRyR7DjC7+YEG+nE0HuPSPZf +pBTDgPUO+QcOScJ75XYdmQB/6iHZjIBXKdlRZZ80FyqNgketOxpvHvyTIWsUHu92 +8bWmOW6XKWjAVUPScSsyZb3OlbcKC8m1ePW2Lg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-1.sct b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-1.sct index 276699d163..62ad62e5e1 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-1.sct and b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-1.sct differ diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-2.sct b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-2.sct index ea69b076e0..c69274156d 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-2.sct and b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered-2.sct differ diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered.example.com.pem index 0d98d5e170..9bdd916127 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tampered.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4jCCAcqgAwIBAgIUT8uagFj8f9yhEGmU4AYwLUoE2BswDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC4jCCAcqgAwIBAgIUHTrCGhC/ClewY59ATWe70p5epIUwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdjdC10YW1wZXJlZC5leGFtcGxlLmNvbTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 @@ -9,10 +9,10 @@ Dw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7 EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C AwEAAaMcMBowGAYDVR0RBBEwD4INKi5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsF -AAOCAQEAObFbgzgq9plTZF4eIHc/YRn5Da7m+kR+GuZIY8wGAgd7WvwpUxzAgrhi -BWO8b1lQUgEfxWdW9UF/cw1fuRACD9yAyD96JPhz+KLi/FwIEI757xh065hkvacj -OJoyF3qImeT+qOIIK41Q+LgBkhzPtcqlrm3WioQYgmwIDrr3nLDnGMM+m4P/RMOT -8D+oFsC6gr+xyV4GKPGJEqRD4MTwGi6Ahy7SnuDuCXKXpZK67Y2n7Nn93iZO6zmr -2lowlEZaUemGTToRUlJB/Dm9wPy0cmXbkLmhulIO+n5U1B6tBiTuzWjgElS9Ctm9 -ZPQSWTN38gbhWuqx4Q9wvM0Jkl4DIg== +AAOCAQEAgwI90EqfNOFpz9E4brtJ2IH0tJbHPgzdcmndFQmazfrWHTC0I4mMCpG+ +htdTHsTDd8GF5QlIRFMeXUBni+UUCFeFOpvOSC9fo15GGa3r6MG4ISLs0OHcIBec +rTBkwpPHCIfqkPLykC4CsRnNJ57eAvrjiY4znyR1CTK9UMD7Z6jxyVb/w1i8uvkw +gPLdsuHpBTnlf21UpHT5oIknjHOlxVHSRcz/CBJlUuanlWjHCUyXVLQcED+t3mST +Uew/0tDYzRJti8SU84ZMnERIieTFpYyy/mYHKxJ9az4jRVsBsJ6hpvO4NvF3jam+ +n8q+OVRuDzzGuannrXGB5kdN02uaeQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tiled-valid.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tiled-valid.example.com.pem index 136b452b7f..8b338dcdba 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-tiled-valid.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-tiled-valid.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIF5DCCBMygAwIBAgIUP3KLbWosq2FCywjXdDA1XbC+nDwwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIF5TCCBM2gAwIBAgIUa+BUsfUwwqRLVgVlQikCG31eMmkwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAlMSMwIQYDVQQDDBpjdC10aWxlZC12YWxpZC5leGFtcGxlLmNv bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogG NhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqn @@ -8,27 +8,27 @@ RYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHu p3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQ Lzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p 47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo1 -7Y0CAwEAAaOCAxkwggMVMBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20wggL3Bgor -BgEEAdZ5AgQCBIIC5wSCAuMC4QEvAFQiJZjzPTZIBULa7ODmuU3hXA7ujFkUykjX -XjxIToA/AAABUfp73AAAAAQBAQAALIMC7EavxgcnG0KQ1oI04Fd6zyILG9/Q66xx -7NuyWUq8qM0nrwgEoIoFEB7A1//K02sLpZzlxZalZIyZYtLt6dR6MpyzNDkUJ+MZ -5PYyxEthyUwa49DWZYDJpAH9efDXiZ5O/Bna8ccjm/GhzPa62G7eYJL7ZS43RjL1 -/Vtyhsao/yn3WODjul0KBIptI7tKQCGe91JKuF/oYQgezrM1IeTZkhSh1Gq7RQnO -IVL4KcK37YCg46PfXMh0d8W+gTTtVlN76zTprpItVKzZP1+ajhKpqATHrRxFJLlW -WTw8vD3HtuEbiO+3+MAa/OLtR01XVQ396swzDp3ONSWq5Q9pAHUAKrgwRDO5FN7S -8x5CB/JRwXo3oJJoUtkIAgb4Xlc5FioAAAFR+nvcAAAABAMARjBEAiBcdVGfExFQ -zV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw5gIgddM4fNhrkPVjZ6GcaJZMf+l6tdxI -e9lGDYqVuVJs01sBNwDozPphfcZL0ti0omwrD/V2cfHmfeBvi5Vh8lUte5QDmgAA -AVH6e9wAAAgAAAWEIcqWUwQBAQA/onhf1tBqAxVo/cJFJ5VkiMGXYZp+ioZFZDkA -YbQ1kPhCLFC2C2d208ClrCWJtH8HTdf559AeDSIOU+qrPBfN1YdM3gNRpZVuHH1Z -WEK58G/fFw+ts4uYhSeNP1+xJk3v7LCA4jMO9iRUBtzaCCY9bJdHO2DsviK/9GAz -OaJoDRN2aEGbyxLRyxnVgUVXnVXNAnGRd/HANJ1LUeal+puuC7QyK/yUDmNul6Dx -f9MrYsqYhK6zsqKn6OLFpNE3MVZlUbeLqccZqk13fFyczhDZxq6Gj4c/IxC5Lo5E -Fv43WXmtpbhj97VhEVig9fLP123piCucJgCSeG3YUEQ5KZ/PMA0GCSqGSIb3DQEB -CwUAA4IBAQA2DHXDiThts4DhHNIc5ogAgbfgl/v4ZsS4wdeIU7leVGdLuTKYB6YD -GnOeN601t/3GZlOJhlBWYCXAK7jYhEKoue4ASR+Vi9yOCLk+xCH4aOAJaH+H1czF -GekU07hzD76HPzDPtCIJdnHVQb55jPtx1UE6Xv1RNQr2VlNK3zwEMh+iRqsIikVl -N8ro0lRvNsU+fO9itsUxN5jfwSYSRhJ0W4ViMZol7LKChyFAsQr+Rt6SECGygU6E -tSpIu3j8+dElsoE+lm71qEaC91zfzxMGZYa59r9qSMVUtBHSxQk5WJT3X3EPXito -h07+EY9L6bOQPvgOyCj+8hthnR1pREYS +7Y0CAwEAAaOCAxowggMWMBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20wggL4Bgor +BgEEAdZ5AgQCBIIC6ASCAuQC4gEvAFQiJZjzPTZIBULa7ODmuU3hXA7ujFkUykjX +XjxIToA/AAABUfp73AAAAAQBAQCJabucDWdKUJvzuE80Np7eZUCW2ZbLR3l/jX+N +o9R0I7QhVmvugafYV3Hy2yjAJUXIBCAFq/MKlSfbFGfg3aR7h1Y31zdaF7YMb3kF +1yvv7dmoxmF+ELqjmKALZBoLWq66uvOKrSfXfWo256tlc30FPAHQjisFxkw7LeJO +eZbuIIVBHMnyX/sVeDaIlXysiFVDrXs0c0Bv0vn+E7kiPScZfEAzW4tmN5ursFIy +PFR2CnzcpsQTr62nl1th2qteaQ3bb/kARlJk2cmFdWFhDs7NR4JVJ5cedknYyH5X +cximwIlAArlHSL/Angeuo51gqHwOdGPfdTfr/BfOLL3mpilFAHYAKrgwRDO5FN7S +8x5CB/JRwXo3oJJoUtkIAgb4Xlc5FioAAAFR+nvcAAAABAMARzBFAiBcdVGfExFQ +zV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw5gIhAJZLBL70dv/nqol8uqJmab2wTrSz +tGQVeFOuTEbraKzRATcA6Mz6YX3GS9LYtKJsKw/1dnHx5n3gb4uVYfJVLXuUA5oA +AAFR+nvcAAAIAAAFhCHKllMEAQEAgLcoyQ3a159aRMB5gZkQ3vZQu7V9c+geuNPa +HqRfubtFYQU9PFuyaGf0WoxFuN38f0f7vhvCZ8mDnC3yj8DnoEx3gMfwtSRTWQHk +k0KSC61wlz3OI6Lf/B9uN8cw9cLSodBoyB6lDUGSlq3wz03+YXHHcCwospoZ8nwv +iiPo0N11M1IJYThYrpv270YIVjlTpln4TjmUKsIaB+JQgXWrzqjKmBxX/CkHQ6ul +Z/0rjVzBv8R1OjETk8MIlyB51N7Vb018Pek7AKo8M5QiwC2YHxhd4a55QfbTCMGC +//VaWYIvw1zMNocF6UKDPgZtqpzG04BHp502eDm4TYMfVpGISzANBgkqhkiG9w0B +AQsFAAOCAQEAR0KdN8iwoqCH+F8HL+vmlDXc2p/gGoRAHDS07bRi/cMlWFiWPfgp +iWVbXzuPDqZFHU3vYcmrZhi/MFlnnU/G5cRxPFRcJ8BPzNlnLb86PYYDSXTpiLsD +tdnwdMK7f1axuXjaNxlCznoQYjWh4hre9lzUjkPkO8l9kjtOxypSUnXQu96zLhnl +GrLe26P6NkUNagupy3za7USCi4Gej6nxFMH8Cou7mXdjPZMTWzf1DvgETOCFAwX7 +lrPnJgl5GQ2u8C9H0FE1iI05krYaeNHGVb2Cq+4g5/ECEYPoTq9a75l7SeSngQEd +jSTJxocud+zZajmigOfMIvcYUKVD3ieiLg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-unknown-log.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-unknown-log.example.com.pem index c490e29519..6013c91349 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-unknown-log.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-unknown-log.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIFRDCCBCygAwIBAgIUY2oEngrE+NwSUbbsiJqsYeDsLgswDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIFRTCCBC2gAwIBAgIUG4/k+n+iibx5ZgMTEJsAirIw46YwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAlMSMwIQYDVQQDDBpjdC11bmtub3duLWxvZy5leGFtcGxlLmNv bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogG NhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqn @@ -8,24 +8,24 @@ RYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHu p3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQ Lzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p 47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo1 -7Y0CAwEAAaOCAnkwggJ1MBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20wggJXBgor -BgEEAdZ5AgQCBIICRwSCAkMCQQEvAFQiJZjzPTZIBULa7ODmuU3hXA7ujFkUykjX -XjxIToA/AAABUfp73AAAAAQBAQAR0QytDb4Ap6FukaCOvFn2AvpNaxHNEpbgQdE2 -ND/3l8XG9fL0oLZeVht3j9YFls0XWWxeadYFq1v1MqIplWUwCqhaDTS5wa1LHqbC -LFxyjmJSdQGYtwcm+z3HYLxMupYeBLS1RXhC2dBg6ZxCBAFpfwVDV2BS+tkMotRT -/ZB8LYfm1ipR+KAv9wkO+cAcvEvVzX0qeLkqk5hurwoncZorDFW3VSgyOAZTte6T -LzvQ2FJbYkZRJUNhgK6piAj6IJ2RKDShnC+aE/fHjjxReHVTMq0g3Qr1sZ7gMkJv -1Xd9Nt/oRpsQYnjdr8D+Wsbpgctfr7CWELmawCIe3GGlVGvoAHYAKrgwRDO5FN7S +7Y0CAwEAAaOCAnowggJ2MBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20wggJYBgor +BgEEAdZ5AgQCBIICSASCAkQCQgEvAFQiJZjzPTZIBULa7ODmuU3hXA7ujFkUykjX +XjxIToA/AAABUfp73AAAAAQBAQCoorL4v69VDwyEYimAete5jKzdDsKvcwpHOdKm +0fRqi5wdqSIlqtjUyg1ThMC9+XY1INML8dcW12u50qjaqHUmb/2EcVi0qgrtTafI +yahbYk163rEmiW56AUt79egtYw05BfFb7JuJ51Hf5A4eCRWn2DA8u34/A7G1bse+ +i2CKmRucCKti2P1kffZsX/nTj4e/Fa2Ch883T0upGRhuenLxPELeVap/PHrh5TJe +HxVC5+KwYeArMjiztQgpbw3k/7GoVeimSaZUbd5qmk27JJE1j2KUdqcjrLGYebZ8 +ueRyUe1fomiI4kTitSo1ONLfP50Myegzbi+dEQm6gyVCRHJaAHYAKrgwRDO5FN7S 8x5CB/JRwXo3oJJoUtkIAgb4Xlc5FioAAAFR+nvcAAAABAMARzBFAiBcdVGfExFQ -zV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw5gIhAOz7sGgcHJLmrVBpACKbm214gMny -bhZqMqiwhtGq+R8vAJYAzXkXTRhLFnhJd6/HDruMins0z+2fuxg+i6a4e9MJANIA -AAFR+nvcAAAABAMAZzBlAjEA7QYnPqFoOlS02BpDdIRIljzmPr6BFwPs1z1y8KJU -BlnU7EVG6FbnXmVVt5Op9wDzAjBpbEA/nvjlfkt6oj2fdbPbRqx9x3q0uceQXFE7 -47dgbDEIXzsBiSiteqp5Ql/5ncYwDQYJKoZIhvcNAQELBQADggEBAEGVFSUWfhNS -ElciqZ4qxGmQCFejSw+9D1kzB9h4RTKktbFgmw9jeq9g/w2JUa9/detBuOYxW2Xh -ZOMt8aMr/KC4gTSCMN2ovoDTE8Krgr4Brga8XueSFQfvM5o/iAwPp2HBKVB8+FpI -oCzTsjY5BwWHXOiU+5GjdM0rAa3epQNmT8QVS+FeiCKz57iK3UwZI3wA6ivq9ilL -QzXwQKBxH8QpQPApwGeeGVLduVKyuSUKWG9XiHEIr6HllSKed46kDIyAMkk7Av2J -KOFkPDzFmV+qjeB3EN6wg1U3ccJbOHoZlClHx/jyrSztcCJNiRC2IcKn3vBb9rLR -L5c9XL63HpA= +zV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw5gIhAKUxU/HmabPud/RzHLU7msT2kc62 +iGdFqyuH0YqCReJuAJcAzXkXTRhLFnhJd6/HDruMins0z+2fuxg+i6a4e9MJANIA +AAFR+nvcAAAABAMAaDBmAjEA7QYnPqFoOlS02BpDdIRIljzmPr6BFwPs1z1y8KJU +BlnU7EVG6FbnXmVVt5Op9wDzAjEAuZvQO+69a4EqQct2T3/XNZr38qeLUdxdzSoh +yzj3fF54El39EGCOvdHaQB8IqpRMMA0GCSqGSIb3DQEBCwUAA4IBAQBxeaa3fzfc +MnYQi0mVcy2pMOkiyNa2Q0coKi+9hKRPIohG9Dddl2rHdnSBtjUBtt15cEJrfZPE +Q9nkGCUC6nRUH0id4cGJaDsTCMxik0P3gOMLtUpP2k1xux+sn0VRQ+iJdiIKkTh+ +QJ53O6Apaf4lUUwPu5F/WYX685u8ruudphcf6gUeP87ldgyH3zQ4s9UQoER900pj +vmFJM/ZTOfBmSgLXevZYRE57ACi9fMjkGD/IXnj3sctl7EtM9jovygo4Hk4yjSpw +Cg7fMKIIzO2PU8WhrNlQgE+KKaDDNEZuD9p5MBh0tU+L8TUVU0Wtt2xTrb7lZXB1 +WDb3zi3AJNht -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-valid.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-valid.example.com.pem index 244823c694..5c1ff3d006 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-valid.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-valid.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIF1jCCBL6gAwIBAgIUSeo2f0oefqdtYDf8pvIKLordkccwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIF1jCCBL6gAwIBAgIUXbGoRYaM4tTmEBD8Rd2zxFn7KBcwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAfMR0wGwYDVQQDDBRjdC12YWxpZC5leGFtcGxlLmNvbTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk @@ -10,25 +10,25 @@ JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd 7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEA AaOCAxEwggMNMBgGA1UdEQQRMA+CDSouZXhhbXBsZS5jb20wggLvBgorBgEEAdZ5 AgQCBIIC3wSCAtsC2QEvAFQiJZjzPTZIBULa7ODmuU3hXA7ujFkUykjXXjxIToA/ -AAABUfp73AAAAAQBAQBIf7w3v3HlFGInN+dk9OrUuqVzO7NtaS4Pf/AgcKWF10uE -deTGBt0DhWZRyijPkuVjtZJECH6qxg9yjXRbTM2t4fjpFObE94fIkZEMWVrFKZPY -G07lya4QG9w8iI7ywvDdaxFBcTYODAMlQb17nkRv5Tvmskx/WFf07U5SgpwVY5if -g3muRtVuGLx6oOVf5N3rM8GDshzpv3E/m1I1cyuAlPlxtmZDEMevXPb40Tx0UeNs -VrEa9YZDk2rZlqE6S8jU+eQ04O1R5iVXKo93+Ln2jULo3dQQYoTDr5aG2ZlvheNg -Ykl6Mbjh3QPPHopAoj6BC0nh8tCeEtJ5MDEz5vShAHUAKrgwRDO5FN7S8x5CB/JR +AAABUfp73AAAAAQBAQCrGB1BCi/hfOyVF7+Td/8+yutgkpHbH22ggsObRbIKukSl +KDFiPLopZ48CKCKFVvakI76c6GXsOrKyEdIpYnP8slsNpsMn1drlsWmOakckhhe1 +hSTpPrKxkjYF0/2QfQ0K4C5700H2nBt5+lJylqtuXHwXxNopLYS6czEPw24DLOFx +dLQe3WH91WOTl9Kz3r9F8+qpNhm/MK7VsXikG4zNAldN1y9Mh3pM6pkAHzxP2Woi +7y+xjtDo7Gxke3tTNCCMiWGfC/T27YUg91ZVfvLblFLEZl5owfQ0DyTfiImX9x8R +opIGVp6insk9lG2WRK7YhRF6pU1bBqpzCBCF5pF7AHUAKrgwRDO5FN7S8x5CB/JR wXo3oJJoUtkIAgb4Xlc5FioAAAFR+nvcAAAABAMARjBEAiBcdVGfExFQzV2K3iCj -vAYwkf+yc3VfMWTs/ctCgApw5gIgA1FUANncD4CBeLNR7LBMfC6l6bOEzj6pVLay -w+OnZ/4BLwAxCPa23XIYB/AWlYRNhQJWtnGTYIPbvTk0oFBSUBookgAAAVH6e9wA -AAAEAQEApJc/hMApkbMu44wh5A8B9/iSXfi9VywQpXfRd3EXwPqEl74Fn8XrnXuI -aLW9Tnjy77Ojr1LvUf42QBIMf0dlJpO0rwOFEYS0Q5lB+zZ7E/pOdfzoGjWt9V69 -pqGuk0jKHw9QaRtuFKUOxPOLoo1vnjSVgXkaWHIZTw+ewxcKwb9XWrOdgW845DSS -fiXRBd6lM+N+EGthjzuWEttWSDscHsOtyxeCeug46023BUAxjBQQalEQBKsBpE3Z -1R7ZTcCgcPGAIvch+tEH2C4UEUYO1SajtoLtS4Y/gyjFIfjPSeglMQ3nArykDsUA -Bo3tHI16CpHdzhqnPcH4jupCflODmzANBgkqhkiG9w0BAQsFAAOCAQEACj2p761U -+w+4aQBglKKL3OOp1l7h80nOBW/SJgY7n4KbbRGL6jVVSQPpWgSNC0AstEh6vm/S -lGMD/wosf+NqDc26SERyWFzwQ5rn0id+Dg5Hdc2daS2Fr5smi/xsBAnqk1+jnsQA -tFSGXB4LyPTkjod3nb3Hy3HSqCBnbeXBDHHY0aQyYMEIrWMWAgxoPgTProWYMQCf -zuk96FcZy786c71FO3HyAb+0bTy7ExY3WQPCxyeEooRVZ/1SuM7s0Z4jHVW2qkTH -Y5OCG/gmObzIBHoi6BKZOneHsRIjVpr/RIm3pR3v9pPfbSLjRM3Zex/JyGt03WKH -ywm0fW4UcabTDw== +vAYwkf+yc3VfMWTs/ctCgApw5gIgHQ9Vd6w4AMja98yiIUm4n1Ahl4lsdATMIh4W +UJYMaGEBLwAxCPa23XIYB/AWlYRNhQJWtnGTYIPbvTk0oFBSUBookgAAAVH6e9wA +AAAEAQEAWsLuP4kPyiHkWk4syCqBhiUP04rKdsPu9N48nKnbXT3EHCAwD4hG9J7l +y9njFZNpuzrTE+zkIRwCVT1+kJ/G9+E9wNV2TVWDAjQgBUn982BSkufo3vow6R7k +jYxXhPhcSC0QWDHq5RltkJ6X5UxBSwYeiTGYJl3ywfDLIQ/t35pYCyf1Co5wV2zy +yM/jeNPk4POHwKWSP6LOxK1ga5C2SM+JPhu7NpRBQqWKtzxUZFezN6qUyG2DY/Qz +owyGXT/HoCLX19ytU4QuBSmEJZGHodh2b0d4O4X8DekcQUwnrdt1xPwXXm2VJPXA +0TwIpUccpc6iW98f7xnDIlFztiBO0DANBgkqhkiG9w0BAQsFAAOCAQEAQUMTi78c +JaxERdj0T6SmX5jnR9s+8LvJDSd5Ox+99GOw93x1uFYBA5nn1g87xEsgKWounc8/ ++Zc+QazvgcPLQszw/aao+mATXSd1mtmGjXzmVYK8olxdKvrymau9Y+DUKSQEQct+ +IrvxTTFOjzCxHWxK4XoLA0eKDyYMoroOTaageUsOCWgE4fPlN3w0rPnktm2TBHCU +QWjbWbDiv9zJr4VKFZXIuk35sMSlUEWHt5iSEIe9tdAUC/NpDB4lLZsr8Qf6ejGc +las+1XkYDS/DGuTE6+7yGOKrdNQhq+H5IPxzPwg3dqv2OkmI5esUoo/1skzH7cfG +/vlGuL4ILy9KOA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-1.sct b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-1.sct index 04f0948fb6..2774ac962e 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-1.sct and b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-1.sct differ diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-2.sct b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-2.sct index 1c64394b20..b1b7c72a5f 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-2.sct and b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp-2.sct differ diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp.example.com.pem index 06cfd6538c..3dc56f769a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-ocsp.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4jCCAcqgAwIBAgIUIWtyqqWfQFtLK/y2kEzKt+kACgYwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC4jCCAcqgAwIBAgIUCzjTMn5BLXF1Z82XkQa6PiP647AwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdjdC12aWEtb2NzcC5leGFtcGxlLmNvbTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 @@ -9,10 +9,10 @@ Dw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7 EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C AwEAAaMcMBowGAYDVR0RBBEwD4INKi5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsF -AAOCAQEAGCCCcP4f4qHqRqpFkUfONapB39l8MNVM23CThlAiNYJRinqhIWGuC5W0 -oBqSrkn1u96JwhFUVrXS6Zkch+5Kq24CD5Ins+EBJW0CwbUXrn7IRaecM869G9Sb -3dBPV5NTvLH/kjG89k69qgzvM1JyJHM0wr1g5aXEcgZ1Ps5ZcHPdP5wDOmKcWjUK -we9AWyq5xEvc7rDUS6Cqq7yfOhSJsMY5LIIpA1z86UI35Us+cDWSCvfpiFrDl0cG -wPcvw86AmEog5Wzcp6zV6foSf7HUqe+F+F2kv8fuocqyDmmBbBS2DLdjSY9Akpgw -sUkjJhoFxQpo5YbYWryBwr//uUHVNA== +AAOCAQEAoS5GUqRsT9a5B0cFQHG/uBgbTX3DPCKF7pDvDIosM5QQZYTxUQF47g21 +y+XE1slaP9ta1sL11TfJ5IP7BvpWduh1GAAiNKdeYyTeF08R9aI/xHUV+/Aajl8r +6/dnfIPLkJDpuCZeY1UkmhAd0RQDAiLW49YBCltibkqB4GmkK1GYWR0Zi23SX1Az +crOJbpY76lUiX3B8X1JKiQSLARGJpZFGf4xDNCi5kkK19Qw5wWS4K1Q3lTXZYnYY +CBKH2/6pOQqU5xmMmiRU/sOsaHI+bl8N7Erv2flmYKlHi2VA2e4qZtRA/oW/7WKY +Ki1EqokjPS+Ua8ko8yVUclV6o6/Jbg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-1.sct b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-1.sct index 86d261bc70..a1647f94f8 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-1.sct and b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-1.sct differ diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-2.sct b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-2.sct index c40c5d670b..d0a2cb248f 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-2.sct and b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls-2.sct differ diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls.example.com.pem index 5eb3ad0456..84ca04c50c 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/ct-via-tls.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4TCCAcmgAwIBAgIUAayaXOf+wacKyFEVnzQwSVa9rHYwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC4TCCAcmgAwIBAgIUeXSV8sDPaRkCM7fYKKXJUZTmyvowDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAhMR8wHQYDVQQDDBZjdC12aWEtdGxzLmV4YW1wbGUuY29tMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08 E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc @@ -9,10 +9,10 @@ DY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQ gAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqV YR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQID AQABoxwwGjAYBgNVHREEETAPgg0qLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUA -A4IBAQCuylcZtyYiylgxhWK+HjTmeaQ/UoZad2/kfHARU3mbRZJ5XPaJkJldA2Cu -gD/H6zwbmHO2deJhNF1NGG19Iq95RFa+sGd3h9ei4bJOXuVob83ERCgioSeDzH73 -TGpQ/gs0fGPj7VA2+WUeRutGIszsyeA3C1hUqXT5Vp07KKrgkZ1e/aNqGQIQVgQG -s6mlIKlKsWoDu0yF9ZZUxFuMAtZobggLQz/4SJXv5YJf5HYu7vU4DfkQ+KxAUpVm -0UciAQl+7uTNTsHilKYkO6SmEufNrfgpRQ5IyW3d4MXere3TfCLBU7m3iSlIQfCq -TGuaE1jgYqLrdk0ZFlaA2eLw312I +A4IBAQBPJU7njFQn+LBObR5zsm8h2mX957W3iXZ189upIYZ5pYJuXfQKgpf4cL1A +E3cKzG1fWEBFMSYrRAixpt0mYeR8bU2F9C49V2Qn6mbQJJDluJ6XJvKrWy89vS4s +gObfsFgIpU7Rgo4rnRtIuhrYlozkrbtoLc0c7c2HdHjPZqkeOIswzvM3Z8vbKSzZ +LGi6NeFPeuaAL3q/oE20doJ6PFXel2ycFky9cfp1I073CP/Dx9QcufgoNpqq9Ehq +098z40NnP1q9OAA7SUWlTuthOJz2AWgrt4MVyj+3l9tczUsFtV4F/l1emSbbkrbJ +yf8H4VeseKAsXM93ntcWgmxQzMJC -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/default-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ct/default-ee.pem index 59a8e992ee..3ea8610041 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/default-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDiTCCAnGgAwIBAgIUdYXDu3hW/Iu4CxcN3TvEwaRVzY4wDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDiTCCAnGgAwIBAgIUHawh1VjXAIDCge7OJCxPJVTlw+swDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9UZXN0IEVuZC1lbnRpdHkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D @@ -12,10 +12,10 @@ gccwgZAGA1UdEQSBiDCBhYIJbG9jYWxob3N0gg0qLmV4YW1wbGUuY29tghUqLnBp bm5pbmcuZXhhbXBsZS5jb22CKCouaW5jbHVkZS1zdWJkb21haW5zLnBpbm5pbmcu ZXhhbXBsZS5jb22CKCouZXhjbHVkZS1zdWJkb21haW5zLnBpbm5pbmcuZXhhbXBs ZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxo -b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBCI3rJYgO98nOqQtwpJWJXTsiI -QHtWuP+IwVNr7gKPavy18qcgMkgLufCc7EEP3/I1UKcRjhoNawEWG5SFWs2xDDKm -dJrLBdBqxIF5YAkA/qx2Po4XTh8P9codzaPU+rJ2PGhHZRPCB6D9sIloUGXUKAvq -RRkGE1RTKojUxO4Xu5xQbVPGpKTx72hKLRl0FtvqKbZMV6MQFwbTiEeQx8B/KpI3 -OnxQ3roD+UaMYSvHGrcod983Yw4fqCCZKzNbdiqwJFylULqYrKXbH/RU71qeStXt -Co04Zo96avbIjDTT2etQHy3vYF3Rq77fBScw4KI1Ak2CvbD04jcCoUQgZrzM +b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBU6uKb5khzoLGqg2P5Vt1dsD4x +w3OeEWQH6YFB/MzIAeq/zKPNUsN6icxHVWiJbA5bAYYmJLcOKcfsfDi02+cJSS0w +Pj5zJmSLDRPbvlN5XGlKVRdG9au6elW6axvMtYpH08nSVcmEQxGbUJu+KGQdDBsL +XmRqydFMQWd8MqWnZCukHUnCfzbzjNtqW0BuFwUTU7nFn0qbm5wZZlS6GTbiR7d5 +l+XzcTDdiva2hnLzuK/riwgBu8A3Rfzw67SjdhSxioEqEA8iWYd72YjXp7n2/izY +FArJq3NG4RyxWpNt4DtyOLLY02B8JNG269qmyMpmIXrAsjgGbEgQ5NsheWx8 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/no-ct.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/no-ct.example.com.pem index fd18af1370..51ede6b45c 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/no-ct.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/no-ct.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC3DCCAcSgAwIBAgIUS5pjOwybtVillpZA/oW+oYS+1ggwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC3DCCAcSgAwIBAgIUfUzkxPGs7JhVReTiyUwAT8CGDPgwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAcMRowGAYDVQQDDBFuby1jdC5leGFtcGxlLmNvbTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMF1xlJmCZ93CCpnkfG4dsN/XOU4sGxK zSKxy9RvplraKt1ByMJJisSjs8H2FIf0G2mJQb2ApRw8EgJExYSkxEgzBeUTjAEG @@ -9,10 +9,10 @@ KVp/ccW+ZmkdKy3+yElEWQvFo+pJ/ZOx11NAXxdzdpmVhmYlR5ftQmkIiAgRQiBp mIpD/uSM5oeB3SK2ppzSg3UTH5MrEozihvp9JRwGKtJ+8Bbxh83VToMrNbiTD3S6 kKqLx2FnJCqx/W1iFA0YxMC4xo/DdIRXMkrX3obmVS8dHhkdcSFo07sCAwEAAaMc MBowGAYDVR0RBBEwD4INKi5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEA -uSacFnOxpsrvxsuMf80C4ZoExPFzP5QaXikEKQVsLuOoSz/sMKmppdBF1JHG7SBK -UAmeFBs+50BYIcb25uQc9uph+Uv44DLXA49SPOq2cu8fgZSJDB17HydlnPjULdt9 -syakyXKV/FjNbhwctsc1RoxxKvIaFwKiHcBjeJ6xEK0z9QWcHaPH0qwdq+AKzecl -EeuuzmaMsRaIyRrLSvYbWcC3sY2htcLcdw7KxixQgc/l9W0RAxE7hCqgPURe31Dc -HAYB19ro3acZGBoW0DBbGgrHIgbzR+Z7VcqKf1j4E0bhofvw9nbGtn0XJnB79Rx0 -bHoqGjC1F9WhWhuojb1Hcg== +VGBGWxySFXCu1Iiqwq3fqON9nlnOyUpwCWFd8yp/wMshzwSIxGua8+9jFXHxWUgS +HVAY1jP83f+r+vRpHvb1fczNaE0/Jh1Kqlz6r3oEW4/pfvzfrIuo9Jj2MgM4n1yg +2Ka1HGzrviVe+Cee9osn+qwMGSbDv84Uu3+5H7QrySDTiCyWvocRtpq5mNGShv0H +Pb5KybpwfwAMz2LYKkSz9NBDJeI9Nbzn/9CsI69Eb1cwdsdEVwCnFksspTwykLdh +glryeGm8CkjG1ibUygCCN2kL8sb8UhLDZYsV6W7TU5c27253XIAFPyKupACXg+Gx +gwFWypT+IU+7keJnWo9JOw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/sub.ct-unknown-log.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/sub.ct-unknown-log.example.com.pem index fe6c571856..c5cf1203fe 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/sub.ct-unknown-log.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/sub.ct-unknown-log.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC+DCCAeCgAwIBAgIUY8jRowbI07WGDZDKZWi7FVukwKswDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC+DCCAeCgAwIBAgIUHTY7/ThGG4pt0sC8eRRpw8yJdCEwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjApMScwJQYDVQQDDB5zdWIuY3QtdW5rbm93bi1sb2cuZXhhbXBs ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9 braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEI @@ -9,10 +9,10 @@ iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Za qn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7 LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs 2hgKNe2NAgMBAAGjKzApMCcGA1UdEQQgMB6CHCouY3QtdW5rbm93bi1sb2cuZXhh -bXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAKDBolYPL5qFQWyooOg92TRxYzkJ -d4Yudlp3lhZDBFFuhYNn2dHw0b2XQbf55Fr0gRv0uGmhCue8PmUBgOz+4nfHfX35 -zDosBXJ0U8AX94Gm83nxrn/Lo4SRzuzbJfHOMFxGnqLx+jd0D/toJ9V01Q+F+pIi -FnX9EDlnpSz12KjfyRlzAl1hNEPHqhiHuFZFD+Qz/TLBczK6rlHe0htxIGyE5IEm -doNMP/lwZk+ZiO0PscRx4yieE34LSOt+WctGCgs88+9ohQ6npQs6kVNnxZrLSBzH -5D07nTU0ftD9B/YGcUKyQJ4lyUhP7na9F0wTqa9cJJrI/a6f87vyVYsmnl0= +bXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBADAV+hW4Ts6GLu1UaW22a94gwvQU +2Ynp2belYLofcio/FTUkFs/KDiyVBN1YDIR/eDYwl9hw1f+iu0crb8//qDOZo940 +s8OC3gAJhnU4RQVCljXJKgqlJjJt+JhAoOC5cPB2eiZkwb6WvQT/RlK93jNanGWH +mdHdjFnKGAj3YqbLqzGIBWJKP7Y6400YqRg+j/nDOKaRjVoRnhoYypdZK56VThWc +jDj1cOErNAMPgYIbo93lsqIXdqCyCaQcwP6ta+fGf0OCeUmcR62GF1sQfRkA3ocd +s5zzIxvQ70qWm7MJmOj8mlqQxXJMgxyfMC+LwLS1YXw9uFEhQ+eCwa2VGQU= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/sub.no-ct.example.com.pem b/icecat/security/manager/ssl/tests/unit/test_ct/sub.no-ct.example.com.pem index 1688f4b192..b844e7282e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/sub.no-ct.example.com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/sub.no-ct.example.com.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC5jCCAc6gAwIBAgIUX6zUGzxAMm8hWHuly7G+VkaX65cwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC5jCCAc6gAwIBAgIUHeegLH5saKgJJFWyEeN5hnOazYMwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAgMR4wHAYDVQQDDBVzdWIubm8tY3QuZXhhbXBsZS5jb20wggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT 2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzV @@ -9,10 +9,10 @@ jf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCA BiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVh He4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMB AAGjIjAgMB4GA1UdEQQXMBWCEyoubm8tY3QuZXhhbXBsZS5jb20wDQYJKoZIhvcN -AQELBQADggEBAGlsFI5T5UTU/DcU0gDL3O+IjZ6W9DxyDNL+HfKQBsR/TGgJjbaZ -k3B7VYz2JSSWtxLQzL48vkITDfCxDjv6QLza2eqkwe7Q25eIvHdaWu2jcfIyol++ -CP75xMBgdaDNYFiJtiL8AaeHghKUX1duut8I5GhDIDWXPZOEqXuFukgDJ7LYF0gm -dL5CjXPdNNaGG7PokxRD5InYumaAxVN/CvIbNpbJpERL4OQVrNoRcJRMxrxpVHdi -relNqQyxcCT0xiyNnTsUD5+74P0zO+QirJ6g8eGC4ZqpUyiewsRIlju7z1B31xOZ -pqeRsc/v3kJKO040IwzXJdTZR166PPgmnoU= +AQELBQADggEBACETNPbA/UNwHCmz2fHJEH4vIQ7Rq/FVfLmD5x7+Ps1xh2EMOx7b +il1Po3YHZRN7s+M3TKPxLDuvNU1kEiGKTZ2j7YmFIz3P3/EeSpu1kplv0+PEQwJf +QTIC5FkRoLXdVpejno0iaEzpdmTYA7iu74FVAmjSMVpsjPNk3l4YUKqjMnaLltJV +av0NfFILHHhSVDE6LEhoQkDdNt5H6TZD00LG/P8kM3FvukvUgkvUbv4IPbMIBClB +QsAO7+BjglnSbXmo7IwQvWBcKasZUPmBZDjeYCu5q7YJxh/g26S+3LTITM82GavW +jILg7EWy5pt9v2tuDtHzXRxpeNR2LNVuR/Y= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ct/test-ca.pem b/icecat/security/manager/ssl/tests/unit/test_ct/test-ca.pem index 31293e3935..85309686f5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ct/test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ct/test-ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0zCCAbugAwIBAgIURzyIa5PAntODcZ4AzhgZzl3zjrMwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC0zCCAbugAwIBAgIUbRl0jsaZB1HOw2TSFqJE/hUf4x8wDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjASMRAwDgYDVQQDDAdUZXN0IENBMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,11 +8,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRME -BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAsNXVPjJr+as4 -PdX/PpdTdvDW/TZYh43G89gxgG805XHqCDDfksSOM7sc0CbNNkX69FSz3C1Xds2k -Bqn0t4UHaCyQy7a5/vs1qes1T/GP6PscfATNgnrWqU8NyuZWv5Y0vwWKSL3AwFaF -OGJnLGQlIN+4BczHdWFwgUQYj8R1gAXLJWEYtbg3j5lQA8k74DkHYcu8hT0l6UPn -qwuw+nw332pkt4+8p2Hvb9+idEPOFcStkeOHIOSbRihWPHiVl8Jcr9b7m3r2uBL6 -z8vk7+vtf25hgW6oKoq5kBld+ttTSKOk5UvEGjEqyJA3ATnaMxTFXmX8MSugXIy7 -jCpW3BKLzg== +BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAHldkZY/n8EPM +hmKw7mLxMd66agv+HCe46PCv75LkAPh3CS7ovLFuU5C8IJUNMMRT2NXOtXwm/COb +bMPqk/5+jRnBxkCdRCEerIp6tPBmcxci+bGZFdI+Xnq+/4vf9gcISphlrfCukbve +7t/WNPIXMfu4yZnkMdQsoYWi2dE02GZNuaGj1oHTdWVgN/nRWtCo/cApupRN77GV +nN1uE1fB07PQU75meGwsQOu6HMgVz2kQD9nZhfaisSJlGElYUGZmE2ySPr+OhTmT +zHFD2cq6WQGCyWCH8cZY2a5pylOsG4auHwKCgbdSELMnIkUtWtmjGa6/2duQKOcr +XHn6ZozclA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/default-ee.pem b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/default-ee.pem index 82a793531c..ff6b329345 100644 --- a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/default-ee.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICSDCCATCgAwIBAgIUHwRHgKNo/CU3Zb+54T/Z5FBiZWswDQYJKoZIhvcNAQEL +MIICSDCCATCgAwIBAgIULf+IP/hwDqaImH0p0tYI6pLTBhUwDQYJKoZIhvcNAQEL BQAwLDEqMCgGA1UEAwwhZGVsZWdhdGVkLWNyZWRlbnRpYWwtaW50ZXJtZWRpYXRl -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMBUxEzARBgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMBUxEzARBgNVBAMM CmRlZmF1bHQtZWUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARPv7u7YeD4+bGm ClmshwTi7AULQj489y6SPyxPeUtFXCpp0jNFbDbEEZ0HBuAO7cjRk5DXmRt7LQej BOqgSqbAo0AwPjATBgNVHSUEDDAKBggrBgEFBQcDATAnBgNVHREEIDAeghxzdGFu -ZGFyZC1lbmFibGVkLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCXCJo0 -WUnapVfHhcAvnz/4kYXNKOakG6uxaDuIwsiDUWMVYuGgBARb7fvTx9JFF9dqHAWB -kDrQBqovAmaP8NkGqSnjIsgw01Yg307L63YvsBZjrowdfpT1k7qQUxOsFv19TWNW -wO+yZxTumWr396WXdEHyYQZu0YiCCsXspzHKzLnaM28wcLwrkdJ5ZSmblB5u6gDo -GLUr0rgAkL5PyjpJRTf6gZ2q8AY+CRKsShtfb+SOp1LPGV9iuwTrCG2pMAusH5nG -QprTE9zFLTCtDp0sKY+oXxlZeJIU+SxXvnpisaOKpc/bh0/GsuQm5Ohen4y8fNbo -yTklN3Fcs57Te8pc +ZGFyZC1lbmFibGVkLmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQACYxNx +0++KHvVCVurrQUNmUeEBKcdWmAtN2DptzVPlJzYk/xavkIPkgLQWGSoqnm04QIho +Q+YrrXjoVbQtn0ebDhUJN/BeZvjt7labMxDpT8NOM6zGHTiQCklElqXqHL2I30lz +3qqAv27vfMU0kDHWb0Dh1HD8xtC6nJ6Extd3xPkSJAwO4W524ouZUsRn5CmA5Mo7 +jAge9CB9LjUwHgDuMAVUWwSyu8a96SA06dz3QhJXk7o+Yf3XF4KLyET9eWyBe3/6 +cSKtYQKNh7i3/O/xRuRXLe48LAUBMB4le7Q5o5GFlJd0jgPvDAUKjgemkEFRGqWW +2XwO4BZh0oQCpwf8 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/delegated-ee.pem b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/delegated-ee.pem index 40298ee46a..a9f31c4642 100644 --- a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/delegated-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/delegated-ee.pem @@ -1,16 +1,16 @@ -----BEGIN CERTIFICATE----- -MIICiTCCAXGgAwIBAgIUeYLmJWHcO0IklTEt7Q71VsdekUkwDQYJKoZIhvcNAQEL +MIICiTCCAXGgAwIBAgIUESTE9H3AnNFJFB0DS49griaW0g8wDQYJKoZIhvcNAQEL BQAwLDEqMCgGA1UEAwwhZGVsZWdhdGVkLWNyZWRlbnRpYWwtaW50ZXJtZWRpYXRl -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMBcxFTATBgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMBcxFTATBgNVBAMM DGRlbGVnYXRlZC1lZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE+/u7th4Pj5 saYKWayHBOLsBQtCPjz3LpI/LE95S0VcKmnSM0VsNsQRnQcG4A7tyNGTkNeZG3st B6ME6qBKpsCjfzB9MBMGA1UdJQQMMAoGCCsGAQUFBwMBMAsGA1UdDwQEAwIFoDBI BgNVHREEQTA/gh1kZWxlZ2F0ZWQtZW5hYmxlZC5leGFtcGxlLmNvbYIeZGVsZWdh dGVkLWRpc2FibGVkLmV4YW1wbGUuY29tMA8GCSsGAQQBgtpLLAQCBQAwDQYJKoZI -hvcNAQELBQADggEBADJiAM3yd87Uzs7f0b7sldNn7bMANGTAh+DVi+g2G2Jw45SO -JYsJP3+w0ARj/pXmyCSCCBvqTl2Mahjks1QAAEt5hkRq3LTHuo7Ov5Zy7xBOOYTG -ty0FmYJcSa2Bz6j6GVM6DXPwRdhLQeDTBJAFZXn9ItDRxC8Q7T63F7EoNIx6GV6K -W4JVOk2yzp7pD9EjMY51L8Rkz/2A34aJBcyrOoRiZXYCLiV8Wuxg5em3ObduNbZ8 -fEBLjwY07XFAheUsyCBLCEUPM7eLXzo/MPcAMnLVnXZpIyVka5ASC261V8oNQrXS -fl5DuzZXypQGgsWRO1pelH8EMr7FAK0F57wCBks= +hvcNAQELBQADggEBAEk1pl2n0kqtKaivacanMurKZ7Z/4r7awA0nM1fU467MjMeh +U0I9z9JwpslR6cVd7Qq5mGxRL6S06UPIEB0U9rEPZ9+t9q3nyxmpMnWs4Z3NxJIa +ga5ko3LlOfAq1MscWzbTjklbR35cBiquo03Gy+KFuV9nfjsYgw7qpNF+u8vfIsDo +mcWWehS8QKLaMBOEPhYefmQduWWLtb7ZtnBAPblIgB/M22dyKrV7/4CL2YNSTE4Z +3aFVyyMyr/Maxwi6dwSvV7EqAGPxObF9L8m7c9wAOpibA/3XmhZVEVzkVsqf8LIb +Sf3mufIc09c/hDUTQ70j1G6qqs7WmMibq74yDAU= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-ca.pem b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-ca.pem index 7ccc4905fe..da119f3f70 100644 --- a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-ca.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC8zCCAdugAwIBAgIUZwDzmYEFFg8NQaUUu65LB+CTCxQwDQYJKoZIhvcNAQEL -BQAwIjEgMB4GA1UEAwwXZGVsZWdhdGVkLWNyZWRlbnRpYWwtY2EwIhgPMjAyNDEx -MjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowIjEgMB4GA1UEAwwXZGVsZWdhdGVk +MIIC8zCCAdugAwIBAgIUbQJqBjscYyh6xc3gHwdMmNZVl94wDQYJKoZIhvcNAQEL +BQAwIjEgMB4GA1UEAwwXZGVsZWdhdGVkLWNyZWRlbnRpYWwtY2EwIhgPMjAyMzEx +MjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowIjEgMB4GA1UEAwwXZGVsZWdhdGVk LWNyZWRlbnRpYWwtY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6 iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr 4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP @@ -9,10 +9,10 @@ iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr Q+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ 77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5J I/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQD -AgEGMA0GCSqGSIb3DQEBCwUAA4IBAQCmiDpo3o+SxyNf3Ky19vmgx/11wnPn73zG -YGWVEZ/+3eEvhitX0FwwaGE/zd3Peb7k9m2FAWnTaVwvw0bsNWj0El+tHkAAQyMh -hHMqXre9rwDfkB+ve0fhjGIi5NzrXGOCBe8sDpLkyRmZ91Ik9Fa2KOwYbQhTYSLn -bDV05m0Z6gt3wQEgXqLNrYeRF5QwHKnKGeqNDZVmf4bnBW92/EIAuqYmbKljRkOe -U08hH5XevwvqGWe0/ToQoNX8OEhlLgBBDEDfeOr2+BiZi+KPhPSlpGH6fHjHXaOW -phEtY2wYVBQ+rchq/KSzw1XUHL4X6DVvm14VvX6ETAI6cc0qY66c +AgEGMA0GCSqGSIb3DQEBCwUAA4IBAQAG/KxNvVGNNV6SD84GSDlXbgNxqcmc/PHR +Nv2V3tSb8NodJl5TxKp216DT4y+L57INYVM5fBxiFSnWaO6SK8CvK/8EKKjAWPCx +dWcZFG9Zxg41ha0V9jDPc/NXutnldWreTPEqqBkHn4+7pWdFB0Duo2YKK4w03a4I +EX98VYtKKxll6QPIeSuENcweA6O6VbanRXIGMafdurYmnqkH7UbzAWu/NRJXmy2h +wdgZgYMh7mRqmpA19iJkn7qHxxxhZL3He1b+BROudXWcZOixAi9K0TzAk70LSQI5 +Te7B8CSVJzeE2ANAd0XQqmJAC/4IEHKX8eA0nLpiBhCPPiFx3ack -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-int.pem b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-int.pem index 734b2c62d4..463caab263 100644 --- a/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_delegated_credentials/test-int.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC/TCCAeWgAwIBAgIUUX2jYUA8BxYc1GtHf1ngjG/3SCIwDQYJKoZIhvcNAQEL -BQAwIjEgMB4GA1UEAwwXZGVsZWdhdGVkLWNyZWRlbnRpYWwtY2EwIhgPMjAyNDEx -MjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowLDEqMCgGA1UEAwwhZGVsZWdhdGVk +MIIC/TCCAeWgAwIBAgIUG8Mfk3cXo3AIEM3pJVlZ2TIF9TkwDQYJKoZIhvcNAQEL +BQAwIjEgMB4GA1UEAwwXZGVsZWdhdGVkLWNyZWRlbnRpYWwtY2EwIhgPMjAyMzEx +MjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowLDEqMCgGA1UEAwwhZGVsZWdhdGVk LWNyZWRlbnRpYWwtaW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf vbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTb @@ -9,11 +9,11 @@ uUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3S O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR 3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv 5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRMEBTADAQH/ -MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAmDelrgLA7Q95bq6fzCKT -tliG4tx27mJmhIOVZ+c/R5VlGdtUHKRoVC4I+FCzeQP2trgVOlUP7V/HpM/9mCxW -6EFgF3RX85OTJb9XpBg7bnVU42aOdiWKwv19+zGs5ufDL6+EUxU7qvTnVJMPgNEM -3bhPa43Dilg+8ca49QDQbtogs+bscR7R4nCbNCACqff/X3KO4VQABJ00z/e1/FTA -wIUbPGhZwNMMTuvMp4SuMXl2WfuT1DFqTNNFqyt8ke7IyfuFITpyWkTIliu+M7Nf -JZerQc6pQ8MDuGOHMoyIGbLEXnYvRRAzxFgf0Ed3AaK/qNPRIocz8voCto3btpXh -mw== +MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAbUKp+v+bSbupqhcQUzzt +mCWLOeUE8eYJsMzhNmpAp1JIvkS0aDCyByhHjwQOJ8ChYsd6HkeCt7/9uShEKgCM +LVyKuCkYDv0IIMOc565cJYv1REe1NjsRFoSbo19EpxiqpD0QDgEmT0FgKcHmf9nR +OQeQ+85sNNj6EDUvbkIG5mjus/HAtbA5sqgE4AHiUO8MOkoOzg1GUiYYtNr4n07o +3JPfUKSwa9FbBBOnagdaTnmXUkT7gNZYk+NThvUxwxEUx7pkFFWI+SXjJtPdoDS0 +YcjXRX3bSRInPUXqyQX03g01p4OsLPKkxsQ1UkhjBJe41ZE8YVKRZiYaeSkpkB1t +jA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/default-ee.pem b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/default-ee.pem index 3ddcff14fd..fa27777d36 100644 --- a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/default-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4DCCAcigAwIBAgIUYSYf1LmiWBTFMxsWtGDks8/n6y4wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZWNoLWNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIC4DCCAcigAwIBAgIUc0GDShofdnwxsqHytsAEK1zyekUwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZWNoLWNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBgxFjAUBgNVBAMMDWVjaC1wdWJsaWMtZWUwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVo V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p @@ -9,10 +9,10 @@ fbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZh W7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EI TjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjJTAjMCEG A1UdEQQaMBiCFmVjaC1wdWJsaWMuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQAD -ggEBAD3wXNMG0gCOCs6Lovpf/B7yCKiqvORaMLdhnAtpsZ//l1Q+7sU6CrGwWKqw -BuIVyjGs8516o8+YvmLCLePmYTp9oC/v0k/KWtkw0o9GzF1vgoGEwGG8LSkchKyE -mPfYG++oCku/QnbywdpDQ+GcPsYamzoYUg2mkEWcW30ztlp2tVAuy9FR0sBtV/Sb -prl3hU1QKebRiviz1DiyjM7FO+WdhrYdYcR7HYbW+ndKuD+AtDqG5D7b5z5v55aC -7DE5xLWvIMsrzmxZgsu0DVktg+sTqcLtBfyQIAJntdp0pmjM6dx7W31Lc35GX6uB -qQk9cLJ+R3QxpXATuETs/zOzXa8= +ggEBAEFfCIdjDF8JRy7pDNvc+8Ud+c54enikdOnGmrz2zMJg2QBsA2WycF2DxQmm +gufUyf/hYjJcFmHx2qGv7ZHDvEQCiH8QBVAl/K43KujrPNHYyWQJCwFbalkp5xWS +bJB0xWvvyAXwuMoqEH8ajPj+61TKvlImtrG+7W4Ov8Aaas2n3FaRAQ0TcXuE03IO +vS8iISjf3m2NADC49g88HZY5jyAd4gTclSbjA68xOIUv34ArGZ5Dl77NwWjIdFEN +IWGB5n67GvdONJ6zRb8Cy+Fwzcl4sv9+8g5VvbdKKV1vL+ATTnExIqHmdp7T+0Gv +AedUTpIyke3R4ob5hu1GTDd7udI= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/private-ee.pem b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/private-ee.pem index fad6b261ae..2b0261a805 100644 --- a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/private-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/private-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4jCCAcqgAwIBAgIUDS43kHMRo3MP5AMEbPQFh9D5m7wwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZWNoLWNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIC4jCCAcqgAwIBAgIUERT5DYHB3nTsBPGC4dqMZtrGXugwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZWNoLWNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBkxFzAVBgNVBAMMDmVjaC1wcml2YXRlLWVlMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1 aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/we @@ -9,10 +9,10 @@ pH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62W YVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauR CE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoyYwJDAi BgNVHREEGzAZghdlY2gtcHJpdmF0ZS5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsF -AAOCAQEAT2JTFqHGM6mZ2h8vML3vxf8esluoR0Z/WWmj+EkiBs4eAAe1TqNPpECL -PXO86wlpBDjtF5ontNH6rkM+vMg0opOU2qp46Ag1o121yl1tLf8xfx9fLbbYwor2 -RiMEqHUPCU2+yp7mahUBwJrqxmclwlGN1Wc+CXFa/WYrlSmjRAa89dfxsk9g4nY/ -Jy5mkH0C8iPuz0RFa+Nq+YoHzDd4PMGYx6vJDenSWxQPCHuHHdATbDiLXmtkUWcT -yxJUfj/PGe1AvRYNrONzfXnzPY2YHQr8Wt1zZgVIffO7KwZuUpPH5Qmhe7yipdOc -PqVAlLqoDDNBgPDsJjwNIrbA+g34Fw== +AAOCAQEAA0Mj/GtpV+QDP3J2SE9nDSTtCP/fLitSglSlMlEd+p4marER4q8cK1Ob +Uwx/FyjXe11x5jXbQDUss5Fje4Eews6956nxYh9H/wuHqHuRRnJG7uqA57Yjvfiw +Da1fCodqBmrYcZtB70zXegbRBnSI8fenJJvrOHLKiiwn2ZXWF9FCa671MCrf/1rB +7edvTe1bvT/X2JIvb1NH3P32lT10k13HLIOYRYgskEuNraQMKPm/zcRpmW8ZhbSH +7TwTlp9eO4VoegI6ssJkT9ytpglh5kMNw8xgi3qOjZW4Q/9aPeI0oouT++438oM9 +fXjFpGMT9RYir/wGu6dt4K6RKWe3mQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/selfsigned.pem b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/selfsigned.pem index 48a816e38a..734c8c7f20 100644 --- a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/selfsigned.pem +++ b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/selfsigned.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDAzCCAeugAwIBAgIUazaxQ9WLaMpvJYPpaQc6HJZ8riAwDQYJKoZIhvcNAQEL +MIIDAzCCAeugAwIBAgIUQeOkcvEX+qiheVdjEIZp6/pbrsMwDQYJKoZIhvcNAQEL BQAwJjEkMCIGA1UEAwwbU2VsZi1zaWduZWQgVGVzdCBFbmQtZW50aXR5MCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCYxJDAiBgNVBAMMG1NlbGYt +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCYxJDAiBgNVBAMMG1NlbGYt c2lnbmVkIFRlc3QgRW5kLWVudGl0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72x nAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lM @@ -9,11 +9,11 @@ wmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF 4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20 yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xx j5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMlMCMwIQYDVR0RBBowGIIWc2Vs -ZnNpZ25lZC5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAbflke1ajiRwW -60dkYrQoa9nIP99ZG869x0cXcpXQhAyoH1UaQjLZl8MG82Q6qWX/UfCNvx6S6fhx -BTJlJhLfN6/NR0NwrV7Szeh/lRPLt71vHN2rd9h6cRHbkuWJi33ppZeN41MEVRS0 -vkVSgP2w1Mvp15pDaLBHc7E0Tq7sulqFx1pI4/hAsz1mTJFuaWwLV8CnYkhIVvYA -cgO55fq4h2GS7fmvymd1xGqk/nKlJjIJSuSsqIMkHi5kaeO9K7rO9ia1kK9jGJrb -xy/yUI/WLUql0rToaYybq3JtM74VFGbKQpEvsIP7R2iKS/r/YdRtmjlwRPxS/wdR -5SnUPIV5GA== +ZnNpZ25lZC5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAMmKAqOaYo9PO +4BruyO+PHe3HxtlMMaYEtEBbI3v3CP8yiTMechF4tkjUrsu4KdquCYqjz3Bmlhs2 +EihUcmrrfh42zp6c0lo7pt1nuGFrpXKkZ3jjJtaBMsJUKVqCxlZY4zTMJ1j5Yb1r +6xW6yKP8GQQvuR/T9/EiiCvIO03EeSRBukWuwBNNTQo/AwQY+yjQTO3Nw3zV+kLs +C6rLhMudaXHNvN19dYgJ/Iuc7j7+nA09dapgMZaMVtfA8LTPdJjdGMxBtMWvOmS7 +96PupH2lrgTa4Ey9b3XYIe0xp8U4KAzCqYfhyc9uXqGIPwinuveL4KEA1GfYjc36 +8WN6YWh1bw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/test-ca.pem b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/test-ca.pem index 87f1aa7b66..0a65de06eb 100644 --- a/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_encrypted_client_hello/test-ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC0TCCAbmgAwIBAgIUPVSY4dFeT+GCKydPT0Aar3LOALowDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZWNoLWNhMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIC0TCCAbmgAwIBAgIUFWed7V6sHZy6ucpofIO6hMixo7QwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZWNoLWNhMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBExDzANBgNVBAMMBmVjaC1jYTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -8,11 +8,11 @@ w0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCx V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMdMBswDAYDVR0TBAUw -AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAHlj6nxl3ccVkcYa -rgCNEoVlVOPuk/Dy8ZsxHPOSYNePLgTFSC2BH4kXObni1Htu8vysaDjdQuwzoso4 -jVKO/Zfa6QJ7tCA4D89pclZCj5tQav0x2IZ/VAR0Ry3hOrGhN8Rpxp8IepAkmcfJ -OcYBHVRGVKujRrbiheh/UmMDq/YG91AvLJEGTWiFZF/Ad2JzszrlgjnjheZr4SPA -JRTqBLDucjMuimzIqvdJb+St4MGecxl6Xg2a/kj3p2Ko1qujweqpVr00RbEvVSXY -UP3ZG+sEPf/niIwapRXM4pEc3946TdsF5qpsgoxy+woZxItTKsuOIwBB39XmgrOp -233dG60= +AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAG8OknOBFKH/ZkxO +UjJfiC6/SDIoTjeZ/YjgjDdDQAppG3eWZf5S8R0H3iH328MmSeHJr4po28P+0Ucg +gIScQ+AKadvvFKsSitV3MiOttObDMcNuZ4OHmiIGY5ZOtIpWRj040NeXRh0Qy5YT +20gasUyvDV1OKW0wkhXo2vC+JverE+jiirmHwJT3Wq7u3FcoxmpQM+cpgWHNOZaI +GvTUHxqLBzdPS/p7L9F8aVUbPbfp9cg1TYe3CObJyWAS8xFEJu/5hk/txHrqN0DX +/D7pKE9rxcavpgYQ8Fq1TisQ8YOzCygv3xhDLm9KQRS0u6/lMV7hhIw4FIfghq3b +/aSvoto= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-ee.pem index f91ea56445..eacc985f14 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDVzCCAj+gAwIBAgIUN3WrkVRKKErhKKicpsdBg+CjW+kwDQYJKoZIhvcNAQEL -BQAwIDEeMBwGA1UEAwwVYW55UG9saWN5LWVlLXBhdGgtaW50MCIYDzIwMjQxMTI3 -MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMB8xHTAbBgNVBAMMFGFueVBvbGljeS1l +MIIDVzCCAj+gAwIBAgIUNaWk6jUuum0gYDUve8ddUPXJgngwDQYJKoZIhvcNAQEL +BQAwIDEeMBwGA1UEAwwVYW55UG9saWN5LWVlLXBhdGgtaW50MCIYDzIwMjMxMTI4 +MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMB8xHTAbBgNVBAMMFGFueVBvbGljeS1l ZS1wYXRoLWVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESO FtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVr amRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWka @@ -11,10 +11,10 @@ aOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHE MdUDrNoYCjXtjQIDAQABo4GFMIGCME0GCCsGAQUFBwEBBEEwPzA9BggrBgEFBQcw AYYxaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L2FueVBvbGljeS1lZS1wYXRo LWVlLzARBgNVHSAECjAIMAYGBFUdIAAwHgYDVR0RBBcwFYITZXYtdGVzdC5leGFt -cGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEATXSpI+qFtuDsvrzPIPwU24yHx6ws -6voHzl/h5OFof5R7V4vykZIvXYMQ09BM6v48WPBGzwpkXTZInsy86g0Hq6Hqbocu -Nt3pKQohfEbs5it3ndcbfY2nIRuY+W5FeHzxwxZT3qEHbguEX5FX/UXil3WuWteI -skxF7qTH/4vVR6iMsMdkfY73Lnyck+8LUG8Og4uYBBv/PFg5usV0i7aO2NyU2ss1 -yKchQURd9KubovjflO/DPAherH0Qqt5K0IAGi3WNwUqJy6WAUgvtUqKMrKUj03i4 -TcDsG8zjJTs7Ol/jYkuEbGP0eihEvJ2C5WwyDDJTm5psiLirqQJkMX3g6Q== +cGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAQDGVNtW4Q8zUkz92ZGd1QA41Tv3F +sx6XpjE/3EPA/c9+rcQeWPbNZdoZVoGIRR/crn3Ob6haWmbINIKf/BJjB1FLPuLx +hXJS9x+7JzcHYpMsf4E2lrZix2fSFS/IVLB2Bh7pJ6kgpFQ6tGDne5a6sAqMU87T +hVFptN98z5gQazFX6hgKWXpPv8TLjinsxUakfzNBEfRM1WjfUQI1ACxF/g6eUPN8 +dtXkOasKKB4+y/n65uP3IT0I6odGo+TXd6K8jjxGvbT8M2mJfWGSfj3aO2r1yKBQ +L1Pw2hRw5MUal5M4KqQVRp97/Nol/ozmWSr0Fxp0GB1qV8iJN0HwLWvhAA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-int.pem index 16cb0322e2..fd9721dac7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-ee-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDRDCCAiygAwIBAgIUUV9lmm8fQetqdxkgOZPmVR8CrDIwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDRDCCAiygAwIBAgIUSzdX6QvbDHpv/bkfseyg8oNAb5QwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCAxHjAcBgNVBAMMFWFueVBvbGljeS1lZS1wYXRoLWludDCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk @@ -11,10 +11,10 @@ JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd AaOBgDB+MAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGME4GCCsGAQUFBwEBBEIw QDA+BggrBgEFBQcwAYYyaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L2FueVBv bGljeS1lZS1wYXRoLWludC8wEQYDVR0gBAowCDAGBgRVHSAAMA0GCSqGSIb3DQEB -CwUAA4IBAQCbTiSqjq+bk8DPPZUyxYpbmI6nyQlYtdBG9s3omROwwPlxZ+TcoYM1 -SjlhDATGNTWEJQr/gsLJB9opG5+Ei2qt6mibYtc0EMjTMkoyf411iR2AhaeO8PSc -VXZZD7vjKZSxIdG1jfLP2bgojiqdubUzmZtcZ6ckq/SNg9e/ehQ1hj84J9SvlEQv -V9A432XQjZ+fyVRNwzxyn/pihYKmBNa9SE8dI06Q/OTQFO2NyCuymJawUWiHCYPI -5dzMSNaj2lurHxhxody5BCUMFEG/mhVcEOFwbNGxejUK4vqQWXP+P+0UqYAfEuGZ -Ut/Gzxr/JJZU3MmVRWRDbsOPTWeBvm7M +CwUAA4IBAQAR/BO5nlP6K1N33l29veAEKeqOGjOlg8qr0U6J6kodsclCbA5QJsS1 +kH0E1SkrHau9Sk3qxHst6/j6QLfJyo2DoGs3aRDzL06P4n1Q9Qu1j1CTueuNAYpw +uZFmIloJNwwtMhfymFtgAHEp2ZA712voIxQjRaOGVXO42Q4TFXNZx5ZB9Upts4s0 +MtA6awbSkcjQHC7Nr6Sb/cgGG9GTKs70Hed6X7eVTRQ5eVbTmnl9EaBlb0rPToWo +6WaDB2C6Di8YxCktKYPUiR1T/2Yto1Nh7b6X+WTpMrKRxxDiiFqJA7rku25G+y0E +h3eLBuC5ECvGiDC0Zg5fY4MD8eqaQvXJ -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-ee.pem index e3a93d4ff9..817fab30b1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDaDCCAlCgAwIBAgIUDaIpH1CEMVx1Pz5t8To1th76WfMwDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWYW55UG9saWN5LWludC1wYXRoLWludDAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAgMR4wHAYDVQQDDBVhbnlQb2xpY3kt +MIIDaDCCAlCgAwIBAgIUJd6o9U58N2rwM6rJWF9OpmoJmZowDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWYW55UG9saWN5LWludC1wYXRoLWludDAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAgMR4wHAYDVQQDDBVhbnlQb2xpY3kt aW50LXBhdGgtZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a dWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6t @@ -11,11 +11,11 @@ Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjgZQwgZEwTgYIKwYBBQUHAQEEQjBAMD4GCCsGAQUF BzABhjJodHRwOi8vd3d3LmV4YW1wbGUuY29tOjg4ODgvYW55UG9saWN5LWludC1w YXRoLWVlLzAfBgNVHSAEGDAWMBQGEisGAQQB60mFGoUahRoBg3QJATAeBgNVHREE -FzAVghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCzRtoH -6b2iMBQ+aozZvxqzX0yoGfQRWPsAfTrdkVhWpBTAzK7yiyCl+HYw82CrIVbPWl6L -BqeE0LhFLtibgMWdiYWAmdmCWlUGnHzuPT/Bu6FGglDd7QUOoHF/coY9eG4zD25c -PUd5BzXGWSIACb8LaOgdJWcu8eVNnSMtkRzf1CxEl+jbxzRdxQIJk5jbzbI+p0Rj -B7R1AQObHFiEbd2I2HHgEHJNMjTMqKhBm1lRfB3ZnWm6PYXyNoTSuY/bQvGEdnYg -6yBwHeT1lXBFUT8U1A3J/AnGvz/AS4rdDlKaMStM3O/PqeyI3O3xWXs7fdp5ziX6 -/FaX2b1UGMIJ/uOr +FzAVghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBIDdMy +B2g0BnPAP9R4GzC0XwiX/y4a8mUUI1VdV9LkjwlGiNqGFyrkN5veKbwb9lwmyUfK +vOGBxrnzj5JitaQW2Iyk7wUAcyDYSmFhXRCZXx1MOIOUUrMtDNP8XRCOIwB9nbru +MfZzZAbaIt6LuLWEng/ICUQMeBcN35tA83beS8CHMkYsA4PsDMOi2TkDQ/sg8lF0 +NQIvK6UU89B5Pk4mD8xu4XDPtZLSaKx2SK2UEtOk7zUZ9+5WVoEqWT0/EZ3hR1RL +/VR9MyWzA7fh0pDlm6S/zNMm16bbchz1I2+cgOf0YEl5U8F2VAbKbkiiVHElF5dy +dpa4C87QVuy7J5G5 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-int.pem index 27d7f8bbc0..689237e60c 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/anyPolicy-int-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDRjCCAi6gAwIBAgIUTeIyS5Espt0WpNqtN8JInhiWHLwwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDRjCCAi6gAwIBAgIUF4EFZ6aKo8MIxypioraMdRXjqqcwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCExHzAdBgNVBAMMFmFueVBvbGljeS1pbnQtcGF0aC1pbnQwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT 2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzV @@ -11,10 +11,10 @@ He4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMB AAGjgYEwfzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjBPBggrBgEFBQcBAQRD MEEwPwYIKwYBBQUHMAGGM2h0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4OC9hbnlQ b2xpY3ktaW50LXBhdGgtaW50LzARBgNVHSAECjAIMAYGBFUdIAAwDQYJKoZIhvcN -AQELBQADggEBAI+hEL1KQ0ZHYFYwm7GVMmPyRrwdtBGvAD++hvVJbWMBFOFfzXlY -gcz1Em+zT0t1rXrm3gX52TFOcEcFhIbXEUTfktHHsoupoZm8dFrh6PZl6Lipmt6q -kofF5OzeOkCsY0TCAkcs/rNp4kPN8AHyrKBFNf+4xupmp0utNzPCLSvTRKyXFlu9 -Om7znHwDE6PTszhBoM/Z4/E7WihfuX8nzI8WWTv9NxauIl8jIofa2anO1fAOPVSI -NRr/bAFJKlHoNvwX7mUBmAqHMp7BoUf9cnFBL0tJfeIaeutMWJvJkhRq9vS+alKH -6HWgRBtb7I/ZkuO+aBRsmeRrFXUZDPZnzYA= +AQELBQADggEBAJc4DIQQrrWo2w0bexduuoIGX1hnegChORWOzfHzsOZ4nuysc3oF +k29A3dMDJhYoZA4A5YTMul5xrJI2v+ZH09hXBxUNiOedVb4HhRv0BJoPMbMbg4xb +t1OrErTFJbNUMJvL4/vtWt78dp0NiyhDZSKxDfVgEqB2F6s4IcrMT0YRO4ZaRc28 +rgSq+r5kus0fePl6kOpKPd+rcJilqKZeheO7TAcdjiAhEkn96Wbzew4dIQ7A1R/e +MjBM8NO66qU9Z3Uwyj9fGH1GAoITXfF8a+Vtq095BtYh7s9H7gTBlfPl4bt1wB2v +yNyAsgI90qXMsgeVTOxC6mLDy0HZJ9FhBe4= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-ee.pem index cfeb85d071..ade28b3332 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIUXyeCk7zeN4tEmYOwF9fE+0YENJAwDQYJKoZIhvcNAQEL +MIIDxTCCAq2gAwIBAgIUQbxWuZ584rJhVidqUS5vVIDplqowDQYJKoZIhvcNAQEL BQAwPTE7MDkGA1UEAwwyY2FiZm9ydW0tYW5kLXRlc3Qtb2lkLWVlLWNhYmZvcnVt -LW9pZC1pbnQtcGF0aC1pbnQwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +LW9pZC1pbnQtcGF0aC1pbnQwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowPDE6MDgGA1UEAwwxY2FiZm9ydW0tYW5kLXRlc3Qtb2lkLWVlLWNhYmZv cnVtLW9pZC1pbnQtcGF0aC1lZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAab @@ -13,11 +13,11 @@ Mbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaOBuTCBtjBqBggrBgEFBQcBAQReMFww WgYIKwYBBQUHMAGGTmh0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4OC9jYWJmb3J1 bS1hbmQtdGVzdC1vaWQtZWUtY2FiZm9ydW0tb2lkLWludC1wYXRoLWVlLzAoBgNV HSAEITAfMAcGBWeBDAEBMBQGEisGAQQB60mFGoUahRoBg3QJATAeBgNVHREEFzAV -ghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBLrG+7PFJL -14mIqczcmdI/WdcmvXVRq9XsY+jv6f1rjJgstwqCW7PVaUUXYji+qsD7C0Lm0ziQ -H0r349bkAqPgHcEFLOtRsQU0NehTmeEq4rzXFM/YBk8FZHLB9iQKdEdCj97RH19J -5NgMne4NPH2iO/svTNhwCicHdXA9o0sF5kzbtWH+Y3aoCtFC0u7H/LpKu4tb6vNp -vPMoS5MCAAL8eskNQdNPHgkDPmMGB38hYVTca900SJ1Jhm6NRqQg9rLsnRuqXxZT -G6P74lC8PQttz9huITkamKKmadAqd4C+e1eN6hKM1B+HBLSwLoWngVCZBZ4fS8gB -h56iT4aHv9NB +ghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQALm+qiu0qx +m47dF9wRY5G4m8tE9GAwLJgfPrOINMoG5Niq3myjWuiiApUoiYxESdkrIp7vEoY4 +1eNdyK9vWM8kWV3ymFnKLmxmQoA9eliCSIa3LjZd1fAIqdYz4y/mUFxkkL1mkQVW +3/CUVo96aNwmsbL/PQMFc09lSt0762v+6xG4J8YQTbhY5vX5btHHkYmejiTXmHBp +GTHLi93E/gqPIxbpWn/YdzTSaz8LcsglTgmQAH6yU2wyQuEiAoQWRflRYtN5RhkL +tToKr1cc48bK5t6vvFGvAP53+7WuRc3nwzVVuF3gyVKJV26i32OzLq6k2Z1Bo2Yw +Jxm08xktzpm9 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-int.pem index a35ef233a0..7e6f7951ce 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-cabforum-oid-int-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDgDCCAmigAwIBAgIUMwN6pWT7jAHkgPudLBO1dBZYOy0wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDgDCCAmigAwIBAgIUMeIdCKL2zu9+v5qhC+xvUNvTkxAwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMD0xOzA5BgNVBAMMMmNhYmZvcnVtLWFuZC10ZXN0LW9pZC1lZS1j YWJmb3J1bS1vaWQtaW50LXBhdGgtaW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf @@ -12,10 +12,10 @@ O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR Af8wCwYDVR0PBAQDAgEGMGsGCCsGAQUFBwEBBF8wXTBbBggrBgEFBQcwAYZPaHR0 cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L2NhYmZvcnVtLWFuZC10ZXN0LW9pZC1l ZS1jYWJmb3J1bS1vaWQtaW50LXBhdGgtaW50LzASBgNVHSAECzAJMAcGBWeBDAEB -MA0GCSqGSIb3DQEBCwUAA4IBAQAJ0Z2pMImOWw6k5JzlbNIRPbJtp+mXC+3gvxag -2NwrxKmTCzaN1ZrLIzG6atswRZiijxtpF+ux1mFAk8tT3Q3DDPXEdsClefkrx1aI -F99IxEgynSEq4Ma44y3y7nPUmgfke+XlBG06HG5MmMFctT6Q3X0P7Ksa5pbVt8F2 -ybDZk+A9lYtsvXRx9maBoDwSyQeazwCyfFhZf8PspxqdP5s3m2Cmhott1dn8LK5u -RsgZXNsyLI8lTs1NyZKrUSLW5qlEoxLP5bfuTvhxebjtyNqbPlrfcFwobcsIm6zx -CCC4S15Zje8MtPuD2vDMIOX00vhgOEKo4LqcGHRjK+jITdt4 +MA0GCSqGSIb3DQEBCwUAA4IBAQADmM1IvvSrj5L1JC7gHl+mdGYr/vFqUmr3zyVz +fHNy76cC177kVy8x+XgcPfzaG/utZFItpqlMyqMCWj7H8AZrjejc0vMLNy8GBZu5 +1n9Mx8cGC8elUSJu3lTCIcKK9Y4i4kmbyAZzF29b9HVuL7KY509h5fwrxK1fDfy9 +ty3hqXpl4Evo3P9t1EiZt9RAMXNp8w1Kg7hVZIJwShArRvI14Sj2Fpldb/ZMTiF7 +Lfzt7GCZ3yMKZ2rolwFtZn1A6yQn/2jAfjbhuD8BB81Klkl8+L6keMDhw25xeGnq +EmVHR1C7qzhDUe/6QNemwyXCaBUci2qDXvJnFIegT1uIDRNk -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-ee.pem index 7bd7f88b70..7fffc69ab1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIUMxTe+pq9wtkh/iKJzGpi+faxpjwwDQYJKoZIhvcNAQEL +MIIDkjCCAnqgAwIBAgIUY+iosCXF3pX4WJqVGBlszQlGWVcwDQYJKoZIhvcNAQEL BQAwLDEqMCgGA1UEAwwhY2FiZm9ydW0tYW5kLXRlc3Qtb2lkLWVlLXBhdGgtaW50 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCsxKTAnBgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCsxKTAnBgNVBAMM IGNhYmZvcnVtLWFuZC10ZXN0LW9pZC1lZS1wYXRoLWVlMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -12,11 +12,11 @@ yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GoMIGlMFkG CCsGAQUFBwEBBE0wSzBJBggrBgEFBQcwAYY9aHR0cDovL3d3dy5leGFtcGxlLmNv bTo4ODg4L2NhYmZvcnVtLWFuZC10ZXN0LW9pZC1lZS1wYXRoLWVlLzAoBgNVHSAE ITAfMAcGBWeBDAEBMBQGEisGAQQB60mFGoUahRoBg3QJATAeBgNVHREEFzAVghNl -di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBMoLg80k8A3R14 -jetQAkib+OVaUl5Okh9q8lWpvenCdVhMWTsE//wm7GPswp5TKzH/3rSNPBQiPVXp -KzdrVe3hf5Okqk0uly/ZRS7u5adMTcHT70QCK7HVy1QCGzKJ3d5Fa5Q9S6kGYcpS -B3bzHGfTxVrxiLECeUcVJCl0feCVC1YUV3OKVRUXfWZYnHmH9C//ujqWBUBuNKqz -azYZU9IeOUCiJEdH35SSDf9ucHsLl1+SwHP3V6HqrTk/w9SWfrOmuqV9i/elQgB2 -xhlp5oj0VPTb3g8g3Fy4W4g7HGbsDEqHAvxblwIzk4P8uuRLlhhQ1w4eEstMtCQH -Zt1HyEuv +di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBSX/wHzbNciLhJ +0ZodANTws41GYjMUS/P97J7BSPJ4Ew8qGu2d1UF00Ik/PLWl+L1Cnw68/97ztofR +LuWaaQWZPtqz18fSnid5IIO0DV02EhPzk87vDefG+i3xSHJYbce58Eyho7ttgPmw +OymzuwfLAn+tTVNrP8kOfYIRmzBBRWS/nLvI20jFX+8M/z2Fn3SzrN5/2nH3yWq8 +0hXG3uMjjb8G1sSMn8er0B1EwuSMBP6iAtGiOKJpD+HgZAGdBHwQwmnWV4FjniTy +8O1w2tgEFjvmOUWdnM+p+5trm06t3MGpJ8aOsXJVpjkublqL6W1HGwT/Q8NOCNv8 +ns2cMDhY -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-int.pem index c4974cca7e..336cd8ab91 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-and-test-oid-ee-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDXTCCAkWgAwIBAgIUUV7JK5S2pEvGknISJWqLEqiUsykwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDXTCCAkWgAwIBAgIUZc7qBBww+CPZV3Spdpt/7DEm3AwwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCwxKjAoBgNVBAMMIWNhYmZvcnVtLWFuZC10ZXN0LW9pZC1lZS1w YXRoLWludDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk @@ -11,11 +11,11 @@ s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV A6zaGAo17Y0CAwEAAaOBjTCBijAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjBa BggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAGGPmh0dHA6Ly93d3cuZXhhbXBsZS5j b206ODg4OC9jYWJmb3J1bS1hbmQtdGVzdC1vaWQtZWUtcGF0aC1pbnQvMBEGA1Ud -IAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQsFAAOCAQEAFl74agyYP9W2BUpOX7zG -nw3/9HFVpoxaUhZ1NDqaXTimWinAzNtAEiPJRLyq2HJPjSsqsX28T8WUwz9/zsve -+ZzHLiQDLt+XSWI6LncC+GRnJhcHe8iiG7TqKx9dsp77adzIHs0daVoiVcvNDYBB -zv4fFqyq2+ketReMcwmpZWSK5VezVdX9mOYUvLUatSD3meTV0tMhVGb9UwTxiAL2 -ghPhE1WLmPGDXxE6zO/zjwLVtLmAHwbey4ZK5Jk6+HLpcNyv60lz6wjouQrdZzUx -WwZmDQXRviwJW2Q7/0SNeF6SVovGx6Y15hDgUv0tFfuoJU9Z0Xv19fBlvkuhn+Lz -Zg== +IAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQsFAAOCAQEAlJYLG7wONvPYP03lYix2 +le5CMJajkvt5mzzg0eQwUISgo5kIG2ZLxQXvG+DeRPUX3NuRvXOGYD/Mb96bRY+G +mOiD9vkS4tw7wiTyFhcvqccNHPVcSALAlv3FhmnWmWl5STSrJ/fMZlG3bO8FrtPQ +5u7ARrRGATOpPqQT9qk6keYJxDQaRVpcTYBUBZKH4R08xa8vI1B7ShJf/jSHB3gK +PM7qGuFluXiEjh7KjHXmVqH0t3zov0esl6H5BOepzDHmNVi5KdPTblZu3rBfXNmG +kDKVWI1rbD7AXey9+xi5wXMcVwAfwP/nsdZcupZT6wP1VretgjBh3uwi6WSbrCaf +7A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-ee.pem index 70b9559a39..bf0b3e9693 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDWDCCAkCgAwIBAgIUdwIlWcbBdkd7+0ShvMiu4bthqIIwDQYJKoZIhvcNAQEL -BQAwIDEeMBwGA1UEAwwVY2FiZm9ydW0tb2lkLXBhdGgtaW50MCIYDzIwMjQxMTI3 -MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMB8xHTAbBgNVBAMMFGNhYmZvcnVtLW9p +MIIDWDCCAkCgAwIBAgIUC9HiI2EGWfoTr8R5bUtGHNWOB38wDQYJKoZIhvcNAQEL +BQAwIDEeMBwGA1UEAwwVY2FiZm9ydW0tb2lkLXBhdGgtaW50MCIYDzIwMjMxMTI4 +MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMB8xHTAbBgNVBAMMFGNhYmZvcnVtLW9p ZC1wYXRoLWVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESO FtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVr amRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWka @@ -11,10 +11,10 @@ aOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHE MdUDrNoYCjXtjQIDAQABo4GGMIGDME0GCCsGAQUFBwEBBEEwPzA9BggrBgEFBQcw AYYxaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L2NhYmZvcnVtLW9pZC1wYXRo LWVlLzASBgNVHSAECzAJMAcGBWeBDAEBMB4GA1UdEQQXMBWCE2V2LXRlc3QuZXhh -bXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAH8B993spESJxyJhYLgcgScW9f72 -zysmFLxkxGsJIPvs3YlNHuxnSqDBJyOfjLzhy2f0N/FwY55ABqw+570zHZZvosca -SYJlhNXZ0mg9GNupvbJx1JVDvvVrsXWPEvzXyYSm9Z6OPnqSSRrIK399WPUW7Blb -CHj2ppNuNRVaEkM9VjaZpe8ZSoP9Pz1PkvamKfz47K6fR58wKLqP60CyijygJ6qa -kT2IlUeXZN/OT85FkmV0QCnUP+qw3XZEsnD6gQ+4OPXpNNuCGAwGMCB0lVuo50Hs -R+lSLanFwBOMUzCS7vax0DE9wFubALtlJk5pgy55zXGbL+UcDyYhG54ivpU= +bXBsZS5jb20wDQYJKoZIhvcNAQELBQADggEBAJXniLtGAubFppvc5MVcDBRo60NM +bMOIMClWxQwLPMz9yQJ/ahiYo1aQqnZFHnWKTD4tBQATBp9Bja/n7BfAqMR5FtTp +0pLC8mnv/hIEP2uw/ONulyYXEILMmD56X7AnYVjAFaReF1D38NW/YEb5CO8s19/W +e8E22S/tv3ujhEeriDTHOebDCEDKniijOSjEYw3yeRHT+Hn/2QDX5gIwtzOsr2pu +M3hzYTmdlUfSyxBekqIC04mkO4RZJb/PmtD24mGoWtX3bUg9vv5cDlWGYRj+9R1R +Cy1FJiYN94zn9rRa5XVyUU+5bpybU4513D8lab7wj9LPMEWoCRrtzmWd5Dc= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-int.pem index ee67334e13..442129a54e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/cabforum-oid-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDRTCCAi2gAwIBAgIUKcHqjQJi+B1NF+Bha4fgS+YMXqcwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDRTCCAi2gAwIBAgIUF5SDwOrPvJbk93tUfmmp9+u5qTUwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCAxHjAcBgNVBAMMFWNhYmZvcnVtLW9pZC1wYXRoLWludDCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk @@ -11,10 +11,10 @@ JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd AaOBgTB/MAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGME4GCCsGAQUFBwEBBEIw QDA+BggrBgEFBQcwAYYyaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L2NhYmZv cnVtLW9pZC1wYXRoLWludC8wEgYDVR0gBAswCTAHBgVngQwBATANBgkqhkiG9w0B -AQsFAAOCAQEAn0DPkizL406anmvMHCijmxGzfpShkugUCcuUWYMFWvOKm0HxDH8o -P7LuthvSwUvdCEHlw2zG/AQsXJ2PQQ/4vz4YxABkpYH+EFVX6G1SvKejgX2eDuuN -TmsMRRvkw3AKaaz4PXG4LVz7fCip6lqZZTVZ2ey6zZnDB2Y+2ogaY6O00v2fNqf6 -AoETxfi8on3gh6u1AZCy003ToTPtCn1yqFTu77n2lhRDXY4fuszF5nlb8k4SGFU0 -ILVPY8qjPaWTKsKcqhqBM0S1v8Y905A9yvup2NvGsyE2yBTNzF4dmeQtcB1tw8Oq -hdx08JXB/f8orcx9vbBP9wrceMPmTIj9Bw== +AQsFAAOCAQEAWgJZzzTJOyVyu3CabM51UFWCOB4PXYfN5U2Kx8Om6KfmkOjoHIsX +8wgorkINz1PTwb57wXQGlo7MXkaixCSkjH4q+dKj+z1GbiLh5PrVbY5bJmvez/S3 +YpCDaBF9flsGZvgzgzqf4WA7XAYHDGoQvyd9sMQeZpRT3sgW/u6+4FQGVJ/wZOPU +eLp8wcckDJd8tfxbVmTbf/HdqO19+Qvvw64nMTudMYv4Q88/KneOXY309fEY9Lun +Dp/LSfeyKmmQPgt0osyh9rOSn+sU+RAYlxKIQFAw/am1RrIodo0WvBfg5L1IdeEv +QC5/k3F6qML/d+EwQ8KDU+0y6Se2v3p/zw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-ee.pem index c4778c4c10..6e0c3da29e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDEDCCAfigAwIBAgIUE7pAiduh9YGDr5tu4/3x4YtKs0MwDQYJKoZIhvcNAQEL -BQAwHjEcMBoGA1UEAwwTbm8tb2NzcC1lZS1wYXRoLWludDAiGA8yMDI0MTEyNzAw -MDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAdMRswGQYDVQQDDBJuby1vY3NwLWVlLXBh +MIIDEDCCAfigAwIBAgIUcVmF0Gr9wpB2TM8dWT9bd5CphWUwDQYJKoZIhvcNAQEL +BQAwHjEcMBoGA1UEAwwTbm8tb2NzcC1lZS1wYXRoLWludDAiGA8yMDIzMTEyODAw +MDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAdMRswGQYDVQQDDBJuby1vY3NwLWVlLXBh dGgtZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9 braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEI eqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6 @@ -10,10 +10,10 @@ qn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7 LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs 2hgKNe2NAgMBAAGjQzBBMB8GA1UdIAQYMBYwFAYSKwYBBAHrSYUahRqFGgGDdAkB MB4GA1UdEQQXMBWCE2V2LXRlc3QuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQAD -ggEBAIRYbYPEtt4XK9Ziylal/397JZZ8IZxMQzbGq++QKyi6x5xCLB7Ycok2gyyS -+wxrc3LvfqnVmEuer1kp39kqhVLxh96eQlTNyEROjbvNzS4JLq9fzG+gVcNKdHSQ -BHDDRQO11c76QJtx2QjOCkNJxEvx3iBUcoC14/96bf87FCBnRbhxGy4YN2g1dKdm -5RbGnVjNugU7VQNUFsBvzyyjAZox/0K+lezVBMoqlshW+oZkpBMGdRRitc4NJEmS -mEfoWC33AYEx6OroBW07xs326LU9HelGWXDSfDNwrOasoEBhm2DqxF1fFo/rsTPs -YrbrdkfgsPi/jBA+M99XS5fp8dE= +ggEBAJkE33/tUX9mr4O9PwFd2PKmHs/Buq3IbObUuvifIX8a3zoZh0lhxjtswH+q +omDxYMxDp8fUSgCAqySmbfpKR6utsJVIOZsw+krApLoz3UNGCPeII9ElNahdeEJf +umlu8Qi4yM4A4q6IjzwvifIf8o1q/qBo8fqd+OB+KQlsxNKlV1nnu2/2MLKMZI9x +gmmNNYIfySt5sZdAXKAssr8dJdLemFp7BVEP/Tw2+rnSMNywV0buG3NYdv1HoRio +AtdZKVRPY3zys9YougA0L4KOani7vqZOXXF62Gt1BqO9LtLMTMYGkDDXZCU3CdpI +dTJc6NHRx62Z7MvRdZpAx5Ng+Pk= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-int.pem index 62f878b4b1..7df1daae59 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-ee-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDPzCCAiegAwIBAgIUJ8GJx7QMebSNZMYlGrY80lOZ4VIwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDPzCCAiegAwIBAgIUV7j/YFmiiW6Pnzou+WPzdkKnvMIwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMB4xHDAaBgNVBAMME25vLW9jc3AtZWUtcGF0aC1pbnQwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erk NUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwC @@ -11,10 +11,10 @@ HGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m fjB8MAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMEwGCCsGAQUFBwEBBEAwPjA8 BggrBgEFBQcwAYYwaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L25vLW9jc3At ZWUtcGF0aC1pbnQvMBEGA1UdIAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQsFAAOC -AQEAfBLlmgJAO2nfRV/msYBDkJCih/QfGfN157Zui4cSYNuUVh/EtmsR6sT+6eo6 -t4KAymdZ8mzpiYeVcrhBNWBUe+fkLBlkZXAFQZtx3AxjWJDO0/9hfWH7QkvuQGFw -QrzCqoTYAQeTZAkOtIogx3lD9Se5lO4hAXrp5NRDog8U8x33jAyZ42uouSJeVS7o -WObxvYCfcHjU65ygsZI0gqkORlJIZIG7xdTtJq+4TnN5cGGzG+J/y3Fz7qpuN43u -teSQgW+34zKTXQwAfMt+SgcVhm6Wq/bB+9HOHgmwkC3JLsn8M8fGLs3SEWUxsYvb -LUlPkdb1OmRETwKk31FcXzu+VQ== +AQEAgfBn3V0pW2vHZUiT+mzS5IE2HdQq4y7msCI9aj/Wczyeo2i0T5DuBc0etAM2 +Ort+HmIVEMzIvuOhN9rNiQKM8/qYA5cRU3nIRiMfZHSXvEiDV6gtjo/FAE/95Paa +Inw6A9E5HX0NNFQ/ABgupEM6+2cz5jRtg4JN4yXB9iy+Hs3VnUmyoTitinOFjlfU +4tDKMFjx4ybRzNUsPOPNR9w5bs/0FPQDLra0eTiiAKIhjrD/Ud6bwU74njnrbiOC +4UUObzzYdFcE2yCp0tHp59qAOdcfQhEVZL9kf6m9pj4I4A65bzXNDqG8RdeyxfjY +aqqUeypVnJmYpwHGPqDNLyEZSQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-ee.pem index fc748c5725..0bb503d66c 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDYjCCAkqgAwIBAgIUHeeeS2ThGg9UihD0JWlxGc1BNwUwDQYJKoZIhvcNAQEL -BQAwHzEdMBsGA1UEAwwUbm8tb2NzcC1pbnQtcGF0aC1pbnQwIhgPMjAyNDExMjcw -MDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowHjEcMBoGA1UEAwwTbm8tb2NzcC1pbnQt +MIIDYjCCAkqgAwIBAgIUWWV+Z/+mY7AvJoIzGN83woKsiNkwDQYJKoZIhvcNAQEL +BQAwHzEdMBsGA1UEAwwUbm8tb2NzcC1pbnQtcGF0aC1pbnQwIhgPMjAyMzExMjgw +MDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowHjEcMBoGA1UEAwwTbm8tb2NzcC1pbnQt cGF0aC1lZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk cQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHT @@ -11,11 +11,11 @@ s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV A6zaGAo17Y0CAwEAAaOBkjCBjzBMBggrBgEFBQcBAQRAMD4wPAYIKwYBBQUHMAGG MGh0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4OC9uby1vY3NwLWludC1wYXRoLWVl LzAfBgNVHSAEGDAWMBQGEisGAQQB60mFGoUahRoBg3QJATAeBgNVHREEFzAVghNl -di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCUefzHdDGrjDyj -83apssnC3Gs/KysKlXJ4+lRSouZGygCcVdVZC2G7nSymKDKqhfcJCqmKHOeDLPkz -j3F+NihyO6bynga5E6U6GQpDnlvlA4CH+1HXG4ozQMFQsnSvqh7KwPf3R52Gwkys -anj9X3by+YA+vRAn+CDfG0tm93EmzqIWuD2uwimateRfrXngoEHR362Xjh5+JJcg -NpK3GQ43kuGkknLGzvq2pGFXC9eiafxbgsuZBZCYOmx6Ewhgt4juzqvgx3dBp6Xh -Rc7mYdjMu2yTXxhDCxMSXMaPppfPaRnpNALRBn5jV/IHMVrceACOIR5utYzCMIPi -fz9DMgcz +di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAfzCij5eIIrQgY ++zFyJ03dDDpC9bJmPUtpGhK3duKpr5CpZzdq7oJQHC89aKZYyA3lWTvJlNRRxmfL +G8jPn2Ioi7RvoIcODVmtBQ0A3d+wydYexVXNzWMTpf9Ux9iiTFVGb1BdO4Nzh5vp +G2YWSWoMKnrPOjzGefDo0PwDA+HJTNm/yrZYYQPVUTGnhLiHa1t6jsJKzNQK8T64 +xEzvg3sfvv8TR+EhfE4ca61XcXHvmEhBvkABoZEMZDZcTWOtkv+zx4+lIt6Jmyq/ +4f/1lPJsKmz+QYr6GIhrO3T7zDeepYTwyI0/ngeuacPxTTYHccfxEnza+y8XFxnF +rJdS8qfG -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-int.pem index 050032992b..d082e51ead 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/no-ocsp-int-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC8jCCAdqgAwIBAgIUNRdFOj8MkgAug4yqw7h8rDlRyZswDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIC8jCCAdqgAwIBAgIUI5r+zazfXffYDUNTOn4o+grHAnowDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMB8xHTAbBgNVBAMMFG5vLW9jc3AtaW50LXBhdGgtaW50MIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq 5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SSc @@ -9,10 +9,10 @@ ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYk zBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3u JtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQAB ozAwLjAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjARBgNVHSAECjAIMAYGBFUd -IAAwDQYJKoZIhvcNAQELBQADggEBAGUidLOcauST3K0d4DE9/hdgfvkEgbTlGaKB -R4Id3k5TmK50JSdTvqkxxXoS+UFscyTCy++jms41Zym4Aweqw6jOXJvqJyGJ5ybg -CpYsXCsGtneTUBI9wv4iNhEOJRhkVe+3UhdCbnJAE6qz8iTux9cqKGj/rSY1Q6pc -lkGuulOSUnXLt3AdejWH23BeW43t9uWxALqnFMTmMnsVrQEsfkgF7Yw5Li+ft5S8 -SFY6vhM6sxOkEwWUS8WEEev/aiaiAx6BR6vqWnirooZY4UfqvRiD9SRmjqBrDdhx -cCuUrBt6FFvU+ot9UYcN1uHnicOc/cc52xjjODUDob7GL7FXYk0= +IAAwDQYJKoZIhvcNAQELBQADggEBAE7GFUJAOu/NmD4H28N7H9yRQPQyTU94ooyj +6A4/kre0IqkLVv4rs5x1COGIkHhjbIequE8Jo3z1THX+Xl0zjyUGvpC+rSKHBJGz +gX5d6U0RG5n9KLsKGdFYkHM0cm63JcQaOpmLZ0B7YZ5HApYquvGOiFSS7xmi7fH5 +VUgqd07bXy+czMSdjPelvXT7wbEqvb5Fqq7OsLoDJ3V/cCA5Bxu2m2sqJ9qDBuWk +Nxk67exQDALsAuqboifGq47BHt/wMb1x63ChU7awD9fHaRmWeBYKfETO6Vs953eH +gUyoVSY7XE254P6nCijOx5dyGZ8vhlz23t++7/N30Q8ZFHNuw+w= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-ee.pem index 1f7023f460..14c755e995 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDYjCCAkqgAwIBAgIUH3mofliqyKJ2rRxWpTI/XeiXMCswDQYJKoZIhvcNAQEL -BQAwHzEdMBsGA1UEAwwUbm9uLWV2LXJvb3QtcGF0aC1pbnQwIhgPMjAyNDExMjcw -MDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowHjEcMBoGA1UEAwwTbm9uLWV2LXJvb3Qt +MIIDYjCCAkqgAwIBAgIUa0G4xoFgE0b4Yo44vO6lNxOSEIMwDQYJKoZIhvcNAQEL +BQAwHzEdMBsGA1UEAwwUbm9uLWV2LXJvb3QtcGF0aC1pbnQwIhgPMjAyMzExMjgw +MDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowHjEcMBoGA1UEAwwTbm9uLWV2LXJvb3Qt cGF0aC1lZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk cQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHT @@ -11,11 +11,11 @@ s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV A6zaGAo17Y0CAwEAAaOBkjCBjzBMBggrBgEFBQcBAQRAMD4wPAYIKwYBBQUHMAGG MGh0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4OC9ub24tZXYtcm9vdC1wYXRoLWVl LzAfBgNVHSAEGDAWMBQGEisGAQQB60mFGoUahRoBg3QJATAeBgNVHREEFzAVghNl -di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCCamcSwR6dXu7J -ANqUM0JHSYxGl/nKAyoaYbQx9a/1Z4kEYzg6+2WEXoPsrDig+FulCcg4V6DnTUcp -a8Onjz+I7Jugzn0G0fDx3PoE13rf41cdkW+I/MFYceqgISnTxk5M4kPrcAAyJ/Gh -QaaHu9JjAiauJUYRevXW5O1ss4mC73/Zl4pe78pkg8E/pgecLBtBzleORhjiwZOL -2L2tPqiqvK2Ozxn3RZFG25Bhvn4fGM/udS3lPNQ7mBc9BO0bT9VIExQrH/t740YB -PyYmztHmgj1HgaoLXMN881qcmoPSLo8nGVm1s1BMYGNCLjQlqcxX489hAPTIypE0 -uwXfAm9d +di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQB84tmFkWEVXzt5 +AuLgR5s7JDrBXwzvN1Z8HlFklU8cte7r45N+YyMQMp6abOxT7bV8I8HXJ1PXdmxq +6LLN04mMZUnDsU4gRyC7gBy3bYiGEmEG4fITBUy4mH676Scm60Nzx9ohi6Y4jMJK +E46pICH4GzIvHfiiz+8TW5xCOHiC2nrcRk/9pqNcMVkgWlXQY1tn02MyxY7arO0u +zhu9H/kVptiFJvKxvk38Bjvcrto+1L+EeVO9w28RPpoUwN4/WMNoHdifmF/lMG+H +w/knqJOU146E45sVvXmOTj5a589EKrsYnhUfJo7vgddAW0yMDzsbLBpPjHPFjjXL +QoqOaokE -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-int.pem index 1788c272fc..ebfd46c1aa 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-ev-root-path-int.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDSDCCAjCgAwIBAgIUD6qHY5bJrJnF3YETEtSLjWPT5kMwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNbm9uLWV2cm9vdC1jYTAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAfMR0wGwYDVQQDDBRub24tZXYtcm9vdC1wYXRoLWlu +MIIDSDCCAjCgAwIBAgIUa/RnEqm5ksD9a95MGBMMAS5fGCQwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNbm9uLWV2cm9vdC1jYTAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAfMR0wGwYDVQQDDBRub24tZXYtcm9vdC1wYXRoLWlu dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogG NhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqn RYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHu @@ -11,10 +11,10 @@ Lzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p 7Y0CAwEAAaN/MH0wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwTQYIKwYBBQUH AQEEQTA/MD0GCCsGAQUFBzABhjFodHRwOi8vd3d3LmV4YW1wbGUuY29tOjg4ODgv bm9uLWV2LXJvb3QtcGF0aC1pbnQvMBEGA1UdIAQKMAgwBgYEVR0gADANBgkqhkiG -9w0BAQsFAAOCAQEATfzJT5qG84YZEiFuQWJmElnGbSbAO5KpFrk3i4tBIJebgQys -BqjPzqc13+XGYZTJ4RfyF7fTx/lgTRD8JxFoYZhIgkkogws8SXJU/7eMKl++u6nH -JW5lUDb5Iqhs+1pOaHiRI05IUYML+aGAOA84U3TbMZxnhjojRCo+J7btGp3c+aqL -sHodTk/3bQxjcFDCfu2q65omEodm09DeeYcKTb+u/k6OsVcrsaetQ+IumDi2W5bC -aDyHXLA4DEeijDwrsiVX8xcyMWvUOV3hbagx1yC5lxO2wJA2gY5WrRabU/KK7qkP -F/SWaPbEUNq+wewSnl/mhJ/bQn2J5NfTSNiVww== +9w0BAQsFAAOCAQEAjownqXERMgHzrRvHGknZhdJEwKpPynmRFb2EgUn4tGNfzi5v +VoV23tWLZVraImu1HruXAQvtw6Use/YcidNfFQ9mUmfJklb7UmioWaYGEtPAdUl+ +Ppu3yoc3qRxB2amyhoCCcYxSUNKaZOLSqFugpcN3OvFFac5OsINHs5ZJbNSIQUUU +EcNPuYoEs1GulOHwORD9HjnyF92MAuHf6gsFHkJtF21t+74sMAAVC4ry8raM16Pe +XsnITwDJ3Rgd5CUW8AlO5+fpuBF8asJCNKxbph2VftJnfIlOSt08D0qP/OuOSruC +nQaGVTzl200bK/JTRLBemXjM6j+nf9zoTOsFVA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-evroot-ca.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-evroot-ca.pem index 1e7c88f66c..89bd08a29b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-evroot-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/non-evroot-ca.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC3zCCAcegAwIBAgIUH6AiRTYY0EoJT7+5q67ovZIoJLIwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNbm9uLWV2cm9vdC1jYTAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1ub24tZXZyb290LWNhMIIBIjAN +MIIC3zCCAcegAwIBAgIUI+8Fow+gNxi3rEH3rVt2BF1GmWMwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNbm9uLWV2cm9vdC1jYTAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1ub24tZXZyb290LWNhMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq 5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SSc An7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39 @@ -9,10 +9,10 @@ ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYk zBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3u JtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQAB ox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOC -AQEAOarfSQMqBq1lfTfl2MzaZwhDuQgDCvJljQRcclmYevzhWSmCSSD/ecFaEtS7 -i9Z8Nr49ZNmnH1pFU7v/bJvmEaIpI0iGWP1QJazaoMJWM5obMm08q7ARKdSGp+qn -0mbkOQk+RJHO3oOg6tiua+RKTOQe5Svu8xx3maYpoOiHDa5t2qcaHk62F1dZQHl7 -rl6uzfGkgliUSTBAFWKXMgCmSDYai1IobdSzQaW9nz0Ty7Y5Gaq2V3F780vxbHOl -nA7RiJ3/X6dnqvJOZcKFZ159x4unuS1l8QA6Chi9nVaLY3DBy0IXf/Efg3OSF2nw -QIwKGSIC0RlBClzxiHFaJRrtSA== +AQEArxqMZKdhIryJiOT+w623yPwOdeG77n8wYX5NVHFzAMv4E7oqUCZyKQiI5E3L +0GuBs+oQGPJj4C8Izq18cHFJtz/Jb7hPAjcOAXhiteH4/Wtu9SsI4q3D1jkflf+P +1fWi/KzeTLwGgpOGQDmGwx6ENFarD2VNkDIZeTMZm/lSwfarjIwJrX4WCCyJfDnb +ZUW+qgMXakGhvomP4coUKbtFVuSrK4/S+Npz9wAd23ibt/aq2on/5SwNtviJTIJl +oTqJIWq4W+5Tj5LKcZGZUtTSKh40o+KOjCV4+cqFp+Tk/y7HH3DsnT1lPY+5FspA +NBvBX7tIH987bHHgmwrNFf0Udg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-ee.pem index 8c0414e58d..d18429408b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDgDCCAmigAwIBAgIUMcMy1UO9rz1fz5YgHv/WkWR7JmMwDQYJKoZIhvcNAQEL +MIIDgDCCAmigAwIBAgIUWRgmDpIt7Vq+ylftmCz2R0jmSIgwDQYJKoZIhvcNAQEL BQAwJjEkMCIGA1UEAwwbcmV2ZXJzZS1vcmRlci1vaWRzLXBhdGgtaW50MCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCUxIzAhBgNVBAMMGnJldmVy +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCUxIzAhBgNVBAMMGnJldmVy c2Utb3JkZXItb2lkcy1wYXRoLWVlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGc BptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzC @@ -12,10 +12,10 @@ mRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GiMIGfMFMGCCsGAQUFBwEBBEcw RTBDBggrBgEFBQcwAYY3aHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L3JldmVy c2Utb3JkZXItb2lkcy1wYXRoLWVlLzAoBgNVHSAEITAfMAcGBWeBDAEBMBQGEisG AQQB60mFGoUahRoBg3QJATAeBgNVHREEFzAVghNldi10ZXN0LmV4YW1wbGUuY29t -MA0GCSqGSIb3DQEBCwUAA4IBAQAUuycFk6cm0wGCsmyZBn1yxVvS+DxEmbDcZb0Y -Wsy5wI1b1CS2AwrtxriYuGmN5kfpdsQkhrddnsjbRvjPRyPG64GnomLj3vVGBtSH -4EYBudDxzLZ3H/GwKRf5zl7WM40x7ODu7fx4DTUHE1cP7jUyICB4MalvFsKP/dTR -ZnDXuKvvpo1H1zr0s3013uvSzr51SDWXkfwM4Pp2qxg56gGDP253ob/B5xwGiHoO -n/z49HBvMjln/X0KNfFGVbCk2wShLDnSZWXb+K33yWa9P4BTSovFSqnencNacRQh -wYOk0XNlc4zBUWBokOipqYBoKQOPTr1969IESGTwJdiArIUb +MA0GCSqGSIb3DQEBCwUAA4IBAQA1xGfQuETwEqDfExZujKfNCK0tlaEFbeexAoUx +jmQGLV5HtTA9+vLr/2ohEKbaR5v9bGMKjIz8dwQ1xPnmywzhfhFd16HTEimzO0GX +EYYAlGkM4ccuIYNSld+7Rj6Ld97oYqHkEbIJwVBGKI2774ZmqFW95ChYWHVUPCf6 +08uz6RTwaPwlYbDFXsNHh5iyN5CMZFck9a4yb9jBui9L5Wnvb2wGzvKH7fd8FFOH +djpPrmSnJNzcF8YEn1dtPfFFTP/hGhLbxwXGK1zDGtSh1rhEEIuoXgep8IgrT+54 +mSWZvfukPQ6161kOOKb0kKjft3heXsKQnBC0CGhBPZUwZC1Q -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-int.pem index 2e83135c5c..627f4875a6 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/reverse-order-oids-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDaDCCAlCgAwIBAgIUH96EbvG3XDhHbdGI2y51jNPQyAgwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDaDCCAlCgAwIBAgIUKQmd1KyVQnxb5kKkTupR3N5Dnj8wDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCYxJDAiBgNVBAMMG3JldmVyc2Utb3JkZXItb2lkcy1wYXRoLWlu dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogG NhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqn @@ -11,11 +11,11 @@ Lzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p 7Y0CAwEAAaOBnjCBmzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjBUBggrBgEF BQcBAQRIMEYwRAYIKwYBBQUHMAGGOGh0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4 OC9yZXZlcnNlLW9yZGVyLW9pZHMtcGF0aC1pbnQvMCgGA1UdIAQhMB8wFAYSKwYB -BAHrSYUahRqFGgGDdAkBMAcGBWeBDAEBMA0GCSqGSIb3DQEBCwUAA4IBAQAWgSnn -HtX/RRJD9rlXf009ZJyy35LZlh6Etk3muja/9EHESVlgzeJfH+BYcpbgwQGhikDw -5qf/p4Ylx+l5rl+h6Puz90dVVHlZc0dsB+nO6vGgso/rR6+JTPmeAdKPIq4/rgVZ -o11BPgbUrXvW2E3iBkDbjZkqqMTmfNvWeoEk3IIdFuLnZTSU98XpcADmNxOKaFVn -q6QQZ1T1U289xgC1CcL9tWFJsXfT6/8cy4zm9ZDpm97vuszvcZC8rxhKZLM4qHj2 -jZVbkXOLIOMGmkr7o+AaqV6mLPupQ8NsDktHtgh6QrCSQ8VtDi6Pq7R25hthds8R -jtzhdr33QEnaQ9Zi +BAHrSYUahRqFGgGDdAkBMAcGBWeBDAEBMA0GCSqGSIb3DQEBCwUAA4IBAQCaKi9P +IVAVo5v/XK6hcroU2SsG6JHu3IN5Corh8bkEW2Vd4ljqp8xaVhR6oaSOiXz7gOw9 +/jVMXcLMBVKlrA0C2D2saZ//047q6+Vx9N6MIE30O27TasPJlzHSz8qYe7LlMFa3 +M9lJXFuu127vnavaCd+XQYhwU1ejgY0y8rR7n6gvhVjS/ZtXe/ZkOAcAlt/NsB6D +MPNyIjNCIiVO7IdDaT3iWhRpAWCo4lE/cRf/Ye/K22xvJ+h7Oe0blrmFmY9z/SQv +DVtTrR4lcLNt6LwSR9EX0IzJz2sCEaJFDgMormF/YfeftvUWp3p5A8sVUYkMPsqI +xq3YonrSZJfEFXjq -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-ee.pem index 6e93c57728..d5cb0acaaa 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIUUT8zkAsK4/PvNf5LVMGx3ZkVUbUwDQYJKoZIhvcNAQEL +MIIDxTCCAq2gAwIBAgIUG3goylGD4GCItaGXG5lG4qghd3kwDQYJKoZIhvcNAQEL BQAwPTE7MDkGA1UEAwwydGVzdC1hbmQtY2FiZm9ydW0tb2lkLWVlLWNhYmZvcnVt -LW9pZC1pbnQtcGF0aC1pbnQwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +LW9pZC1pbnQtcGF0aC1pbnQwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowPDE6MDgGA1UEAwwxdGVzdC1hbmQtY2FiZm9ydW0tb2lkLWVlLWNhYmZv cnVtLW9pZC1pbnQtcGF0aC1lZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAab @@ -13,11 +13,11 @@ Mbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaOBuTCBtjBqBggrBgEFBQcBAQReMFww WgYIKwYBBQUHMAGGTmh0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4OC90ZXN0LWFu ZC1jYWJmb3J1bS1vaWQtZWUtY2FiZm9ydW0tb2lkLWludC1wYXRoLWVlLzAoBgNV HSAEITAfMBQGEisGAQQB60mFGoUahRoBg3QJATAHBgVngQwBATAeBgNVHREEFzAV -ghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBI3qfKZGCb -Yrdbh1JVNS2DBB9+/CO/Oa5GAEo/LAqVFbisj5XKsht3yoyIZ0z1xgVBTq0m+6xb -uBIlg60rZvZUhDFla2tUDt0pCvQSPvTwo7gceJaXmAc33mjYkNj6+mMxUXEcERqN -myXHtNqpvHupaVGKktBDa1ZaVJafaIWdjKmQjK5p0S9mgUm1whwwfF1dAhjZrWNa -uYjUeKIKaczG5INgaIzJktncSla3BD6g+9Wlfsk6iSfcY2ZUIw+krX3ZPMSPYiD7 -U29sQcoD4xht7qp8OfNaGcD9R49JBuKSNlSFhqda9LjRiRrzK1dCWedjK/0bpnuq -752LSyppHCtR +ghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBzkdfX5WFT +vrwdiolAjXP0uvvD332KF8qciI2KQofvk+siOEzQHsesBTLhdxCKP90kAYQtS3tN +Dsb0+rje0GrLHrVFqe1Sjao4o6RcTXpfKmZ5hIugro//Nep/Ii2ZQSfBqYtBux2d +1s1tcEo4VsxuifOckZAk7eI7KAea7Ucr6/02kY8emCqM1A2urNwKSruyTevHsdwk +yD1JLutalA9KB5qfhQ90rqM3JsKYzzMm1XoZ3+9/sdWNClF24yT7F6zZnaKVXBG9 +QN/FWw5qn3mKAnSNtY9qMPKSuFf2FyOTr/V7HDyqvGdvUtX0cM1BO7vr1BJBhRaO +FrNLcboK6dE/ -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-int.pem index 6511ab79ee..c9603099d3 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-cabforum-oid-int-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDgDCCAmigAwIBAgIUQ7t9/Nz7rDtiPCFE9gTX4YTVEx8wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDgDCCAmigAwIBAgIUXfnkOGa48saiJhQMzWx8gvBmMpYwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMD0xOzA5BgNVBAMMMnRlc3QtYW5kLWNhYmZvcnVtLW9pZC1lZS1j YWJmb3J1bS1vaWQtaW50LXBhdGgtaW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4Ngf @@ -12,10 +12,10 @@ O8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR Af8wCwYDVR0PBAQDAgEGMGsGCCsGAQUFBwEBBF8wXTBbBggrBgEFBQcwAYZPaHR0 cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L3Rlc3QtYW5kLWNhYmZvcnVtLW9pZC1l ZS1jYWJmb3J1bS1vaWQtaW50LXBhdGgtaW50LzASBgNVHSAECzAJMAcGBWeBDAEB -MA0GCSqGSIb3DQEBCwUAA4IBAQB27gwQzsjWf3kjx6mC6e++urdOMLYrlKv0Ovnr -uNSJFkP06HxCA6dyvqe0N05EaZjpAlA+NwvFlU8gbTcX/Fn3aW3v7mF5eyc9IdoV -8Aqk6RBKXnkp4BYuZIlEZJ1GHJOLGHQECz8RVFdlnzKVX8B084jJPOwFFzh9/8U+ -a/9h/MGbzFExKcRjXE8/sZlRQhHwd/85ObBj3aYiL9QiG1CtEHkoYnq6iIus65ic -+CoP/zsPw/2DWuPpTofx6kSCw1alzlTyjojUWmziD8nEK2m+k+QXgBAodkyov1XM -IYYlyno5r18OB6EA1g4nESweUyl5EEBRuDBhnAw7lZdnG2Rj +MA0GCSqGSIb3DQEBCwUAA4IBAQBQn6Vrnbo7Tb+YUxSeRR5YxxCNAPxj9fvGQ1cN +WvRtpddcbul4aTMys6xAGywm4Gp33H9ZE1cLcUjIx0q8ysxHrhMM+RCT51kQaLeX +upSOnVbVB+DRNq4AIKNjd3EIvTD/uSW5+tTGuJs3vSjadEK4rWwtR6Gt1zXZlNO5 +dQbnpAnubTU8H/oHYAq44569HAeVGgteiFULXeniFUjdfrPwdUjkzEikVpWpS3x9 +tt6CaX4KmzsXSfTxmh8Mhiu5YQx4c6LWzWq8JGLdqwNtANt/Oraj3mdZKDeHuUco +iiz+fmWvfd3V7f63Ev8Nr/ygRyI3RGL8w1Rqg6WOJr61FYLh -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-ee.pem index 4511f76cec..590b93529f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIUXSw1HQ3gig6M1sTDu1l8k+I4B7gwDQYJKoZIhvcNAQEL +MIIDkjCCAnqgAwIBAgIUO8gP9jmUfw4F7JS0Sma517odP18wDQYJKoZIhvcNAQEL BQAwLDEqMCgGA1UEAwwhdGVzdC1hbmQtY2FiZm9ydW0tb2lkLWVlLXBhdGgtaW50 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCsxKTAnBgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCsxKTAnBgNVBAMM IHRlc3QtYW5kLWNhYmZvcnVtLW9pZC1lZS1wYXRoLWVlMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -12,11 +12,11 @@ yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GoMIGlMFkG CCsGAQUFBwEBBE0wSzBJBggrBgEFBQcwAYY9aHR0cDovL3d3dy5leGFtcGxlLmNv bTo4ODg4L3Rlc3QtYW5kLWNhYmZvcnVtLW9pZC1lZS1wYXRoLWVlLzAoBgNVHSAE ITAfMBQGEisGAQQB60mFGoUahRoBg3QJATAHBgVngQwBATAeBgNVHREEFzAVghNl -di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQA9Ggpz/bSO7ZOd -BD2wAQDipsJ2xmPdjORvLejqjO/OMazFU2z4M1L+6kXuK09IjmWmbRSwq7uduLDe -VyNG5dyYq8tg7xGnY1BdXR+8Iwpimz9U7oQnwS3TbKxrpHtgDSEWOMH6R/llauqY -vl9s956/NMVGyOYBLg1U4q+EwJe8N7ngOsNdfL4jg+NqybaxJKw7Vk67lfGGdUif -EkZUqKqDWKGBlQXyh64MemOBa6GfnwUtsXd3cPp+d3GmsMOIjzlpWjSQN+3Yq61t -ZUn1VGUqAcKfGnkj8dz6LVmf/R/DQIaXhBKbmuduZq+IBXzgbgaYFfGYVmxLYJ9b -wVLV0P1u +di10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCdC+5pMPeGogV0 +4xkhlIFeZlSfsR4GUTkgWJ0DjtbcG4XCOoSc3Fumm1vKkeUn5xZ2GI3ZX0m1uEHF +HMTRRRvZ7EUmgzqCM8Cw1y1d5BZdhYuMtemq8cZIV3136ohJxR2IppyZhLZgjIvW +FW2SNOJrcEVmeSZ89eI6uuNDy88V5jbxWARL+RBP17q8BhbkYD+XkclU3/3tiS3X +KtDybH937sF+zK5YIxSUQb5HsVJm8FnSMthVvTlpGhAUDEgEDGhAcNViisCgsgVL +uXfkgPpGL3sG+N95VlV2/wFW3Z3vl4rbVctmxTTwGBDQk5efMUgAMPmnjX2p3yX0 +ZG4/2bPR -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-int.pem index c614a94472..1612ce9f9f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-and-cabforum-oid-ee-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDXTCCAkWgAwIBAgIUa3mCFwimGU1/e+kU/ybWxqTjyK8wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDXTCCAkWgAwIBAgIUMVWwmMiGQePDK1FfaxS37aKX/7QwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCwxKjAoBgNVBAMMIXRlc3QtYW5kLWNhYmZvcnVtLW9pZC1lZS1w YXRoLWludDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk @@ -11,11 +11,11 @@ s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV A6zaGAo17Y0CAwEAAaOBjTCBijAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjBa BggrBgEFBQcBAQROMEwwSgYIKwYBBQUHMAGGPmh0dHA6Ly93d3cuZXhhbXBsZS5j b206ODg4OC90ZXN0LWFuZC1jYWJmb3J1bS1vaWQtZWUtcGF0aC1pbnQvMBEGA1Ud -IAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQsFAAOCAQEAZradr70X42r+tjphJ24i -Ih4QMLSescvNVyaxFnQIXmVxmH/6MXC0QtzWR/TzyyWLkZIvv0dR+8oZu2OvjpiR -cjp6LPYMHUeUIJYDANaR7CLZ4l6sYvyfX1W3qdOLm5cA889O7g7vupvMgx6zcLuL -LGPMJjXM0ZXXLc8cgz/qfB5T3fcRawrerxCNSGpLLdusoMxMgs/N+n8tMrP2jSD4 -kECxgrGcWDVNLj0VONaLJbJScQQE6/Icl6gNpUzCLwrUeTeF+V8cyEu75ZUetP1h -uu5lxWr2UQh0XWtP9h7WIs0R+sjxgrZIjkt8brl6Fft9jXTgCeAIZePqBt5jJaV5 -Gw== +IAQKMAgwBgYEVR0gADANBgkqhkiG9w0BAQsFAAOCAQEAj3Jlg8/Jb/4Dd+c2SKR1 +s9L/gKqud1dZfTbdomT5+x8LOSbK/qw1PYxdPIyLKvOd2ZuInK/9i1auPk8FupUX +DCkPOoZlJwpg5YvHK512y8wHXjOQvxPanBjsCyow/OD4H06UrILSbjeadKSNm/rs +Yp5U65ML2lmo94PzSdQh31Sn2GeSpReXgw+s04SlwXlQ60Q/6dlZXjuRRgEOm9If +M1ixbc+J9L25k/NMtThR5a17Jye14J97OJgFKmKFx2UGU3yVcrhJApALEcQkn3lX +YZDE05nawhDuAKDuWmgm331yJhtrQUH2f8Wqx1FXeEP0tnLgziCqlKK2hCwbRfmK +JA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-ee.pem index fd549f0676..79e49c0568 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDlTCCAn2gAwIBAgIUK9PRqlVod+6OLh9VdB8SJ81CO94wDQYJKoZIhvcNAQEL +MIIDlTCCAn2gAwIBAgIUL9MKgUTLgQofWbrIES/zUocfyOEwDQYJKoZIhvcNAQEL BQAwMDEuMCwGA1UEAwwldGVzdC1vaWQtZWUtY2FiZm9ydW0tb2lkLWludC1wYXRo -LWludDAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAvMS0wKwYD +LWludDAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAvMS0wKwYD VQQDDCR0ZXN0LW9pZC1lZS1jYWJmb3J1bS1vaWQtaW50LXBhdGgtZWUwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erk NUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwC @@ -12,11 +12,11 @@ HGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m gaMwgaAwXQYIKwYBBQUHAQEEUTBPME0GCCsGAQUFBzABhkFodHRwOi8vd3d3LmV4 YW1wbGUuY29tOjg4ODgvdGVzdC1vaWQtZWUtY2FiZm9ydW0tb2lkLWludC1wYXRo LWVlLzAfBgNVHSAEGDAWMBQGEisGAQQB60mFGoUahRoBg3QJATAeBgNVHREEFzAV -ghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAvefId5X/j -8LXfG8LAosSFOXfoQaKDGISp0nGjFuBdi6+cCC6ErVN9WCaVC1MAQnkilbOxqRvz -Ys2QLpuDOsAitoPCp+YLGwoyFgIUtRbZW20nxM7eJbII2ypWnC7+DpJyVTOKSg/f -o/eyJuV+UtV6XgoDJye/iuCBpXwlqYcauLNwVtNjTtDntMUlGVz7zjPxuLi12np9 -w7zYlXJ9Fhjd6mJPWM6L3m3coVH4mWBDObnzk3zm/0erpW/+AzEKK3xXCxnePlN8 -KLgYEHEiREWconJBYhqTHCid3QNU2aTVeUy+M5hlwiGSQ/sRCuzkVrkEAvl9b4ZJ -F9VMxdLuPfqu +ghNldi10ZXN0LmV4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQApmrNyHcjH +e98//Np7MbyoGfia9CqHs3ypa6jNsTcUED/mqfe1xMWvEYdVOLsTyDFkwhbzjv2k +LBtzt5mW40v32DX6whLfIW0p/UeFQoIRGSAHlJXkg41TW0Qs9YIIQCmApiuil1u3 +r+3+uaVgRqqGDdF+Z+bHEPEAxd4asY0iJW+7pwUb0KDDs6MKl+MHaDv5vb6s7ejM +oe+gxBYUDVEH/As6azbm/epbDIHLWEZz7jsPdrxMtmE0PvBGQbtdggWZvzc9CW6C +x4mCqGKNQ9NJykC0wSVfOM/hyKI5J9C3L8e6hwlMN85S+o8BEGyfOHSj0OavTxrh +NNIfAatKP9jN -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-int.pem index ba6e65c1b4..3f421b928e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-ee-cabforum-oid-int-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDZjCCAk6gAwIBAgIUDbzePCEjWSjE6fzITB92t4HkYZMwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDZjCCAk6gAwIBAgIUS5oWegCkjt/yURdidqAWVxPGUYEwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMDAxLjAsBgNVBAMMJXRlc3Qtb2lkLWVlLWNhYmZvcnVtLW9pZC1p bnQtcGF0aC1pbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a @@ -11,11 +11,11 @@ Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjgZIwgY8wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMC AQYwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzABhkJodHRwOi8vd3d3LmV4YW1w bGUuY29tOjg4ODgvdGVzdC1vaWQtZWUtY2FiZm9ydW0tb2lkLWludC1wYXRoLWlu -dC8wEgYDVR0gBAswCTAHBgVngQwBATANBgkqhkiG9w0BAQsFAAOCAQEAf7jKweT9 -7H+v9QBGx/aNc1fllxgEPN2aDWkbdPZYgV/Ose5Z8D6LM/NQ67LGVUOSQSxeJ9oD -flKg2v4C32FSLByrhwQhJCxKpdhme1gdYERMPbouuEawAPYYs7IpEXyk+tRY/+eK -12mac9KZi++tu8VMLiDAGZgH1ufJFdhb0y2qHAXgT2PtcnFwrhLFLW9xWLAF04Uj -zvqLFJJDjkeIgAkQ0kHKNtaY6rJvSe1dwU9oMVM3Y2X951OA8HPaJDl8gJxlKGIK -+IlHC6y3O6tJHIlQ0yrCfFMW7Oa/YOrGvu+KU8J2ziCh0Klxx2PoPFWwGmC3yZq9 -Hzy7NPEBWUjwvQ== +dC8wEgYDVR0gBAswCTAHBgVngQwBATANBgkqhkiG9w0BAQsFAAOCAQEAUMjVFzkT +srkMZmVVR1Qj0XiWqYxVnIzP199U0UBEIlV7N2pUiMcGJ/F673+sKOOda7awWb0t +EZqDsAc5f2heaujysCilE+PdzXQGxP4BeqwwcmzoQxpl8ES0Y21KX/s+9Vc8q/tK +zakQECqjrIJN6QZb3Cr3U/QlBTPRvlUd4iDBrRMdqg/9exm1Ovr9YY725U3TTnXe +sWlZTG7YseOB4AtxJ9l1SnXZeHxJwyswz25+npl/WVg0JM5Rbp+yquWfNjV1KpBD +GcveT9HeUmDloCJymhmQtpM01nfzL2cmkLXUsFWacuNAbGtCasBsZinxSc/qmRbk +8XryqRFhyFcC0w== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-ee.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-ee.pem index 22112a9012..73818c24ee 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDWTCCAkGgAwIBAgIUc3LslSbtaciiIZeLQ60V7NCjvYswDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRdGVzdC1vaWQtcGF0aC1pbnQwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowGzEZMBcGA1UEAwwQdGVzdC1vaWQtcGF0aC1l +MIIDWTCCAkGgAwIBAgIUYWKSZEm8DuQc78PjzLKalbrdkAowDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRdGVzdC1vaWQtcGF0aC1pbnQwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowGzEZMBcGA1UEAwwQdGVzdC1vaWQtcGF0aC1l ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogG NhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqn RYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHu @@ -11,10 +11,10 @@ Lzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p 7Y0CAwEAAaOBjzCBjDBJBggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAGGLWh0dHA6 Ly93d3cuZXhhbXBsZS5jb206ODg4OC90ZXN0LW9pZC1wYXRoLWVlLzAfBgNVHSAE GDAWMBQGEisGAQQB60mFGoUahRoBg3QJATAeBgNVHREEFzAVghNldi10ZXN0LmV4 -YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBnf5rwmZ28+fvCN9rotRnw/rM9 -AW1lCp7bYklVHB3AkZTMDaixxGaST1z0a3kWb4LfkuKXJ0jaGaNy81UIAVeF4d+k -ZPLRIHvnxpTIZU12RoSOQChu2xlPu1pJsjNeAlHFa7XLyhxBPAxydprr0Q9ZkMen -3pCj0HOanXpc2xLTfH6yZzrcgDYSHrHn3rGj+0FOzkjI+XNH4QJ1G4Uyevg5iF6v -ceizfmItzGUvC0kvZPSbuGDI4D7C2z8XmVfVy0K8ZeuuPsFbBMoyKhoWO/fiiNjV -INMFN3dwdZfO7Y1jQlM8i0+5a1X8dBcKSBG1RqEAlN3AGWcEBItY3fkrRFdy +YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQArgL3XCd6m8vI3OU6gPWqJHHcB +XBRiHoWfdxcuiGhC2YaxcgVr7upXz+V6Fu+1hK6q5K3G3L9eMkAcnoIEs9SRjRFd +bpEEqXDeT+Nvr7apPdLPsaoGPEOtlsp1qKHGXBx5A2v4ofFd0sFt/IHJ0M6FLcX0 +74s+LTxY2Mooj8i563hzn/Uxt5VjnGEuiK8a0iu9ferBmMBhaS/VPS8S/u8zS8XZ +KGZQynruWUsIdwLkgMG65z2ppucA29irXw09evtD/G07Q2L4ud0YpXUTzgo04Yya +QcFKPE9Gh8luHedbZ8LrOMV37MDHN5HMA+OANwukiPteWKcfxzEA2W7AYvpH -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-int.pem b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-int.pem index 07d9489c5d..d3908242ab 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ev_certs/test-oid-path-int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDSzCCAjOgAwIBAgIUXwqKkxHB8XeluPvdtsO+2oAcfIkwDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDSzCCAjOgAwIBAgIUN3PyXMkg0gMw9C80v2vSVSkM1D4wDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMBwxGjAYBgNVBAMMEXRlc3Qtb2lkLXBhdGgtaW50MIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVK tOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7N @@ -11,10 +11,10 @@ nauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GL MIGIMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMEoGCCsGAQUFBwEBBD4wPDA6 BggrBgEFBQcwAYYuaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L3Rlc3Qtb2lk LXBhdGgtaW50LzAfBgNVHSAEGDAWMBQGEisGAQQB60mFGoUahRoBg3QJATANBgkq -hkiG9w0BAQsFAAOCAQEAM6L2wBkHfYghPyekuJbaZo5dDAd3kt3uZoSz91vNB2sa -BvZ5gqBTkt6yqFZcP+uwCaXU7Cam7DAFDnp+dGvuti+iivZB28mBy2YVvGokgzOf -M6nuzOwNxdK+tH3IxS3ouK0xWlYIAUebqtzKmu4Uk2KQbUh0/j3scYzSc7m4KFmi -jhttkBtLCJPuSnvrdqsdZXUxobBJ6R6W40Wcpf+EtL77b27qTmLq6O59WVSQtdk0 -0SFZvdIJ8FIH8jMdpT8v/EoT/0d2m092f3koF5c0naUkv+Do4se1YOJesFKzsvsF -G+KVeDlZt32gR9HXTIyCIzDtW9a8/YY5ctvjzLNhvw== +hkiG9w0BAQsFAAOCAQEAeTnJINIdf8h+vzq6jZPtCbrD2ZeCO6X5/miLzetxzjQg +l3C4BeONo95CSSVLDi3gY9cxxqqxLuGJVZkAoYbFbJayker7XTEmSXKfDxaoe2UL +Z6kf2m4Ih4+SriG0q5uV1gRCQg8zNzrUVGGf1nsTsOz0LCooDWvz5z+1cmOmb19K +9aLGjyCdLIToUapwKTcLox2RxJnh8Kn2TxrOPDPrR+1nifjnjwADtJTKgMCfMMaZ ++Uz3iDQP8kV35id2JIkRYEU75Ypr2J+pLmFIW3w2u2a+V+dHoo9f77KVuwtr3ftC +/e0nnR+nPpB2SdbExz3MUL0hprk4SEFLe4plSULj2w== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_faulty_server/default-ee.pem b/icecat/security/manager/ssl/tests/unit/test_faulty_server/default-ee.pem index 325a33edf8..73cea1f30a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_faulty_server/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_faulty_server/default-ee.pem @@ -1,14 +1,14 @@ -----BEGIN CERTIFICATE----- -MIICMjCCARqgAwIBAgIUNUz6wr1iwrqZCecg+JzZ9jEC+GQwDQYJKoZIhvcNAQEL +MIICMjCCARqgAwIBAgIUCclJVeqEAhr+ro8lfNVUDXhAtF0wDQYJKoZIhvcNAQEL BQAwJTEjMCEGA1UEAwwaZmF1bHR5LXNlcnZlci1pbnRlcm1lZGlhdGUwIhgPMjAy -NDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowFTETMBEGA1UEAwwKZGVmYXVs +MzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowFTETMBEGA1UEAwwKZGVmYXVs dC1lZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE+/u7th4Pj5saYKWayHBOLs BQtCPjz3LpI/LE95S0VcKmnSM0VsNsQRnQcG4A7tyNGTkNeZG3stB6ME6qBKpsCj MTAvMBMGA1UdJQQMMAoGCCsGAQUFBwMBMBgGA1UdEQQRMA+CDSouZXhhbXBsZS5j -b20wDQYJKoZIhvcNAQELBQADggEBAANp0C7sqlqJW4NrIVy8m4AyrhvBXOXb7LFJ -5zSpPg0nU3i3L/c8y0Hrgidrb5Nkla9jLRqKVl59An3y187tAATL/fUWlUj/KYAM -oHG+12diyS0tF/raljg+SQnS4wDoCPerdpdi9QMr54PWDxUS7u1L2yGWCouM/BYx -2FLBviaNeeFR2QwDgaOwal6UP1usAksbPRmrqHnUPUN2VRQplx10LxqNeDhrH7qf -/Q2gk0JxDkEh+h5YDFWswRac07ddH+4spiFle5jHBSkWrEMGy1QJlywVxsmHykV9 -h7M1c0MLyCN+phMV0gNBDH5w+gnHJ3ZT79sXJ31Y3Q/QB0IXL+M= +b20wDQYJKoZIhvcNAQELBQADggEBAIMIBxReKH0pHum4EfXTvwXEfbhp7FWyQYM6 +YAGRKBqVpDR1h85de0JN78VRciuKABycZfdIH+xsSWLPfvGYDiQ2iqmgphjQRGPy +DZglGO7e/DU+zi17GqxcT5VlE3wjIF0FTptffnlsUONXiacPZWo4OONBBho/qOLA +VeRhAcuXEoUch9mnF0QyXIG+lBPPX6HKo4JqlroFXzeLbWAbajMx94zWlOP6/8wS +bM96RN+XPi2k516PJfqpt7KwmC2kFstFtMzXMivBa/OVUcDNkKP9GfpZQttKFBaG +i7BGVKDiRqeDgM92dJdnp5sQI+MROOPVfesV85sFkckrhRC76iY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_faulty_server/no-san-ee.pem b/icecat/security/manager/ssl/tests/unit/test_faulty_server/no-san-ee.pem index 33426e8f27..8405a73507 100644 --- a/icecat/security/manager/ssl/tests/unit/test_faulty_server/no-san-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_faulty_server/no-san-ee.pem @@ -1,14 +1,14 @@ -----BEGIN CERTIFICATE----- -MIICFjCB/6ADAgECAhRxi8zy30l3WrMqQCryaTm1QNWxfzANBgkqhkiG9w0BAQsF -ADAlMSMwIQYDVQQDDBpmYXVsdHktc2VydmVyLWludGVybWVkaWF0ZTAiGA8yMDI0 -MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAUMRIwEAYDVQQDDAluby1zYW4t +MIICFjCB/6ADAgECAhRRLeJzReV+0pquLtxG1I58D33I1TANBgkqhkiG9w0BAQsF +ADAlMSMwIQYDVQQDDBpmYXVsdHktc2VydmVyLWludGVybWVkaWF0ZTAiGA8yMDIz +MTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAUMRIwEAYDVQQDDAluby1zYW4t ZWUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARPv7u7YeD4+bGmClmshwTi7AUL Qj489y6SPyxPeUtFXCpp0jNFbDbEEZ0HBuAO7cjRk5DXmRt7LQejBOqgSqbAoxcw -FTATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAoBEruZus -EyZ40+dMr25+QZmjwg4dcdvy2nogiTmrne6To9GBXcmriqglvJSwqyIUk0WzBHk2 -qIGrunrcehtwMoO9+qyrGQD+prQmL8tznKFT6w8W0F72WCfkcf0z/4c5ZNC+vYvR -AvCZth5jtbjrb6iFN1V0xwpfJ4dJsQiHr5oxOIaiAgiMuxQiReN3HindDvoMp8fZ -hLezsPLNobUB4/FRewmOIG0/8ZxYsC7YOYo00OwxQ8cfOAx4NsD0Rzeu0up1uWWe -YdrlsyQ+QW6YDPi4tb3aYCWfy0OO4mCR/wYeMM0H+q3JSmbgJpXFWDnCJl/Rwxzv -40x5rr1uI9HqmA== +FTATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAQEAfIQhQ8Rl +TsfOZLFHIQJ2CrIkLyjSGAPViK62grr36heHs2fjTxVB8KMmOt+w1U7uH0so5ARN +mraaZmqdLfQVfdbT5nOxF1JSeVdGRMP7aBh7+4fGtZbMOYd2EDqCWkjApBEwg4rP +kTJGgIkpi8qhO2Sidxc7obusHZDa6WEXnzYzpaBMj6clUUyZ5LwrTROaLKRjOYT2 ++EekRX4KWqd6oYWIUdxJksLi5RFtEM1H806QZBunL5GFco4rynT0Ou0i9dxd7W+R +q7sN2OkZ5A1OQSRLCimOfwNCj6yADs0M8BZ+8/Ole1aTjkt5b16Tqvtr7hFsZ5zI +cgPhcpVuc9LBeQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-ca.pem b/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-ca.pem index 8a39505200..72e923a028 100644 --- a/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-ca.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5TCCAc2gAwIBAgIUF1mchVX1lXgMdvDF5tPUYm+8VikwDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQZmF1bHR5LXNlcnZlci1jYTAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjAbMRkwFwYDVQQDDBBmYXVsdHktc2VydmVyLWNh +MIIC5TCCAc2gAwIBAgIUCyjlglAlwISkzjm2icTqDJy2rdAwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQZmF1bHR5LXNlcnZlci1jYTAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjAbMRkwFwYDVQQDDBBmYXVsdHktc2VydmVyLWNh MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2 ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdF h/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6n @@ -9,10 +9,10 @@ cOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAv OnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2nj tIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXt jQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0B -AQsFAAOCAQEADo9hq9AJYqyQPvHkQOqQlTPcPJileGoPMwRpX6jwzEZvh9nJOWhl -bwnCp+6nzEhqV9uNSMcsA9/CaZE5kQXudVSW4zT3BRRjKuD+Mp4iJbQuIjeBzPUb -NfdOqvMVz1BI1sI8zpygkUqMVGYDYzxJ2ddKxsjQFQanBoTabJr7O+OSmSqk0M8e -ECf8E15krSLqMu5mXBp7+T0xw+Z1OSRexaWRvSpxAShTLlIqggUxyBDY+8+Twn5B -GRBP9rDit4a/DDLqRd1MBOZLr2mBBvdBaUI/yy3avlxyXULVD0gEggAXjnPDUO8u -d2LDYJlCD9JRm1DkgzCKthMqwSD4UIvBCQ== +AQsFAAOCAQEAE5GHp9zZIc7PmoFVMAYDlvRXfjlHfg6eljMTnS/Nm1vAl3bwzLEl +hhhN4W27rkWqRtZOMqJPRr87jQ6JYiOR1UxiXtbqxffnRoVwoUQO4b1M1TaIkZev +1XooZON5ZorUC/1X8svtg95egH7XXVp0kBW+4wF8k2zmGr53kh3SYS28TiruTVe2 +n+tZOAQrXWB3KaauIG5l9oSfsvG9K9NcNOb+qJiGtCp3uGbAXur8rlpf3Su07VUt +/ci3DA6ndJIPriFhVrbXxNh2nYto9a2tnaVfMDY5ZwUhU8BZWPfnPNiGK+oAfxLP +2QGtAvgHcMriAKSgqQnSTkbPPc1eNpzdhw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-int.pem b/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-int.pem index 5b80b5669c..cd6c428dfa 100644 --- a/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_faulty_server/test-int.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC7zCCAdegAwIBAgIUG8k66hDhmvem6HOWZ/nD+1ZFHvQwDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQZmF1bHR5LXNlcnZlci1jYTAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBpmYXVsdHktc2VydmVyLWlu +MIIC7zCCAdegAwIBAgIUXe3ymhNxbaUymJwc0olwtNHjlhQwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQZmF1bHR5LXNlcnZlci1jYTAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBpmYXVsdHktc2VydmVyLWlu dGVybWVkaWF0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahE jhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1 a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1p @@ -9,10 +9,10 @@ GrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW 2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcO p2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJR xDHVA6zaGAo17Y0CAwEAAaMdMBswDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYw -DQYJKoZIhvcNAQELBQADggEBABO4C0VfkNMXhyonUwlAOAcOoOeeu0IaXLniQ1kV -fWUQ9mP/PrfwY2dGkQNj9tmjwp7BntOU4+W5imSk3DsUrShmj29lPrNDqOVhW7uj -DwI9Mfy8she0LJm970hxgQs/e2R7qebe0/z/rluXJ0JaoKzhEFbmEumMkyTV6+aX -M/wKBpTzO0/l6iZFELvqT24JRdQTpHIHQ+3cRHd/zPn3LaYVXiF/r1RD0XWH/r88 -xsjCSFtQfOVaQVLX5XN5FOnZnYk8mXJjwMh3BxJlqJyCAr24iTWzzjYfPenQv806 -8k5cqoz+wHLAlxGv+jXpYwBOjKPsd3itERQvdG/nTdVEsyc= +DQYJKoZIhvcNAQELBQADggEBADjpGTPYyhjGy2gzkDRppVGjrefJHMT0tLlC67oK ++mIMJowpWrqxa1M5n8ng+WzyXVGwwtmGCQlola2q5bU8cPkMbouSNizDQg/Oit2a +QWaxMI3Fpgbl8dB9r8zcVqNLO/DXPrrPpO7MZGGdTYYqvN6hnFrHYDwnQoWmY3kO +mOQdwGrwJoGBkzuDZDGxKFNtVUvw4cpcSTT3+jRQ61Ld+byHm6UlaU712zSCm7TA +uJ8AuWUy8oXcmpi2l4WguypJ9dGSqG+itMLBqqD8TZxKPMs+m8kNXo8FweK8/LNu +ylkUEmJjqFHWHTsETBdE95KxNJWi4l4M/w9e+BxLD1VxcnE= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem index dab3dd5ce3..5570b7518d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICvDCCAaSgAwIBAgIUTUupUtmMbsYRT4XBtVWnWIRg3SUwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICvDCCAaSgAwIBAgIUd6iXiXqeaIsQG9wGf1dl9WwuYAEwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDTELMAkGA1UEAwwCY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwG m24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJr @@ -8,10 +8,10 @@ bA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4 SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3 /K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+Z FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEDAOMAwGA1UdEwQFMAMBAf8wDQYJ -KoZIhvcNAQELBQADggEBAFPh8NrIpfVhiORLCkS5AMm2kfpGpEYl1OrsZc3sYIjy -zlOu8yCuVjJUC3vBkVXLPxs6Bc/3duZNMENC8rZ7b3zDE2OB10Ez/AITaS/oFP7M -wIAn06qQFI3hvIw8UFlHedf+1dC38xltJXe4iCOnGimhHnYCauUfuDwcwvzuEVvJ -36SWJTkB7XWJg/ZUp6qR1Owyp5OR1tL+EuASNHFVPaXqq8UHB0DE7jPVihTB8OJQ -zVyFchUmjVMIAZd0mqtQffy6buqjG2TdF3WKWZO2q7FUX1pMwF030M5M7Zlq4NW2 -bHPu0UeUb2D7oCd+dunSQcb0ioqT+UWCxfZqN9H3Krs= +KoZIhvcNAQELBQADggEBADWQkJKjU4FMRfyIq+ORMMyxdwUvBITqkUsFt9dALUvZ +qZL0tmuDPVOzTjhQKsCdvw7g5q1R1QViaQbZx1lBSnfmJzOfprkO2GEkGNE7J5AN +0G2zG2OafjkLCiJtoHSwE/cQbYoVpmxyXsSU0oL8eUEicbos5kIaxDWd01qCqIiG +W51tD0/kTh8L+eoShAwTxaUho5CBqezvsCJO9iDnBIr9S4hM8HlgdaweaVTHLAJG +sIySa9pFb194KL5mdxr/DqtEzgDQ7ErCqCyGxEmIedIcZxb9oZzRSbdn5U5D7mVM +b7UJvQKObQkK2I37T6hpGZIIGjgQXVXd/YbyDMUpOms= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem index 9e0f750ed3..7f6a5e1ce2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-no-eku.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5zCCAc+gAwIBAgIUL1QKa0sRzZ50NqwZqS6oXOXBqZEwDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRaW50LWJhZC1rdS1uby1la3UwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowHzEdMBsGA1UEAwwUZWUtaW50LWJhZC1rdS1u +MIIC5zCCAc+gAwIBAgIUPS43Rd9VsZ9Jy/CdjU4C7XW/ND4wDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRaW50LWJhZC1rdS1uby1la3UwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowHzEdMBsGA1UEAwwUZWUtaW50LWJhZC1rdS1u by1la3UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9 braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEI eqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6 @@ -9,10 +9,10 @@ iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Za qn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7 LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs 2hgKNe2NAgMBAAGjGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgP4MA0GCSqGSIb3 -DQEBCwUAA4IBAQBUuhKv/AOD0eoIxabkt1ki2utVPTJ1RCzXo51vXm2uTP6AbLQD -w6TQG5F7+ICz/7RTOM+ExIPj0cIHHxh7ic/16zhO28QBxQe5QHFR3V1f8XEPm+EE -KF1nxi7JvG0E8JXc4bo5o434p2vSCDFMPUZnQbxEfVKSRGzN+MaBTc21n2YtxLon -9654VF5mQsAlBEeg+9lxiBIrpU9b3Xp+wgpn/Ji+fOjJZx3G8BmWIoE5prXAXmrD -Bb+JUZtd2xnL7h1OiM2V+DSwbOPBXq6T/6ZynAZcVGUyR2OZdhN37nsnuHjH1/S2 -tOeuNiwB/cELkNnviJucVbXIdvgNMw8RwANV +DQEBCwUAA4IBAQA5YXl3EayfJTz/5rflbAtXu3ST16Xk7FbBr0+j5I/B2JUgckbD +lyfH3vOoqek1ooXgYFvm5bpeOHlHJNlxAhgpbZTLXdlTpnR676iss+OItyEywkRP +zCllvd6++gYnmmYuJZJLx22OZZkjA/wqg0Awo1bk2pbpTR/7rpKFsMHpcHE/8z1W +TtZUS73/8gVurcHMXuadkYnkRDoJkr2P6sk7C/RYWzZ6bjrx6YDxLkyMSrkqh7D6 +cblKy69iXzp2ZmIkwclBHSQuxicpmbuPiq2TtpObeyAbeIcjasUPEruajR73Kza1 +jbz0tuMnYTyXJwl+fePFP46xXcb/BkOhu942 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem index c121797773..ba4f5d2147 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-bad-ku-server-eku.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC7zCCAdegAwIBAgIUNzffQEI4xnOzV79auoj7kPeNpwIwDQYJKoZIhvcNAQEL -BQAwIDEeMBwGA1UEAwwVaW50LWJhZC1rdS1zZXJ2ZXItZWt1MCIYDzIwMjQxMTI3 -MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGVlLWludC1iYWQt +MIIC7zCCAdegAwIBAgIUbaUxDRz/7nD/OX7vOeNYYGJini4wDQYJKoZIhvcNAQEL +BQAwIDEeMBwGA1UEAwwVaW50LWJhZC1rdS1zZXJ2ZXItZWt1MCIYDzIwMjMxMTI4 +MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGVlLWludC1iYWQt a3Utc2VydmVyLWVrdTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqI UahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvi r1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/x @@ -9,10 +9,10 @@ fq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD 7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnv uRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj +nJRxDHVA6zaGAo17Y0CAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCA/gw -DQYJKoZIhvcNAQELBQADggEBACICj1CNHDEFP0Qycf7zJXRfVP/W/JhoRtirdKJ/ -e6FV1TAoUWSNP3tHrH68knQs+JV61MNgV0DJ51+Ls4/ZuwopGAclN0+ynG7PDLHj -HeOEXeieS6IP8Pb2g//kkWHnt7ctLoSZm1TfFssxBm6cioZ53KlAUvweNKgI6q4B -lORZabjU90WR7/fxNmNqfup0jdd6/3mjR1TOVzp8jcL3ZnoEm+KL6xjWL4YXD3NJ -1onQ5/2BGhqcJl4ZCFinDKJDj/C2bBqPvFOc24adVoav8IJlseQR4vcO7bPOz4fD -nm7d5Ih1gVICayozJ8zKWzPgQLBQ8RMrpjmx0ruMRKh37VY= +DQYJKoZIhvcNAQELBQADggEBAAvT+g3ekslj5l5ttKDkeTr7K7yaCeB4Z5uUrWXU +c4v+LU83yH6YRnk5NGWX0ESuc5HvntlYWW6WbLiptStF0lilmRtwuXh/ABT4mQrY +Hc+BlmIUvRslPSxR7z+lRIEJEDQLiXBjZDzy+WhyBXNnTX7ZNxK7c8CHmjXVqs0o +1Z0a+4MgAof6EmwhW4BlWn+o/L/tlJ/1ZqhGGxuzhd8u0ZLCLgRlB9YzLZMzdmHi +qnOQDzgB97bWyCEH/VnvpVziL8fbxS2Fd3mL24xf36c5saTHwsuoJhOX0qtNKhGn +zh3p9UfDUv/iAVYmUvAqdtEaF0wMzFTKWvGVw1FphKr2RbE= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem index 37ec91af4f..c79231f16f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-cA-FALSE-asserts-keyCertSign.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDBTCCAe2gAwIBAgIUI/h4T+as7PW2KTKgGwiNfZHwipwwDQYJKoZIhvcNAQEL +MIIDBTCCAe2gAwIBAgIUDaa3PpcuFJOReQniDR65iOuoKn4wDQYJKoZIhvcNAQEL BQAwKzEpMCcGA1UEAwwgaW50LWNBLUZBTFNFLWFzc2VydHMta2V5Q2VydFNpZ24w -IhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowLjEsMCoGA1UEAwwj +IhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowLjEsMCoGA1UEAwwj ZWUtaW50LWNBLUZBTFNFLWFzc2VydHMta2V5Q2VydFNpZ24wggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVo V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p @@ -9,11 +9,11 @@ V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p fbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZh W7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EI TjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjGjAYMAkG -A1UdEwQCMAAwCwYDVR0PBAQDAgP4MA0GCSqGSIb3DQEBCwUAA4IBAQBWnM2cY5AX -j26ABJ/M3Fzwz3XS40FY6iLoV80/+B3sUI5V3A0ycs7hqFXohzp9bUU6z3ttTb3t -gIDiDwcoYw04BsSADUWI+mcSW3C7Bm6TaClobn4isLG81s2phWym18IJOL512L9v -SKicO/XMKySgUxJMuyWemgI0vOw0OXC9dsxKtIbMKgEmW0fpHUYi3oPqXQoTPGeO -fs+wGepOuXVDi47p6SCD1YyY8CZ6Y/KtQ3Kf+dnNcoephjJjMm2INWABK6hOpTnM -dNLTwMB7ZvWxoQBHF2DYfahpvEiCVtZ5s0ZvGdXENKi9o72XkKJIkbGdRACBb3HQ -cUphpA35OcFt +A1UdEwQCMAAwCwYDVR0PBAQDAgP4MA0GCSqGSIb3DQEBCwUAA4IBAQA4xbgNFTfP +V9BYuktzgynnNU+WRFfDdsufSLLGQdfbZZcgR61M/Uwq4eSxeiLvM/LXLdUrhQcn +r9ibNo6q4wEkqpQjUkqCRI3ozHinsHq2Fpw0DRAA3IBtPB4aABwOWaLn6WcgHLGM +us+Rcj1KsffZZBhTJV/dAY9od2PQYt56n4FlMV2XXDB9bAPPSdWJ8oSKvBIyV8Zj +QUq0neKDzSTh8N/HHggFSJH9dpOLlza0iO5DKnaTKdBtkHy32KCM7sjMsbfqlhaI +2tPsndYyYMUxMZGXdCeenZ0vLNS47VVP7kBS0Cn43qD3ecoPdP4GZvm0WNOaj8AD +83+Qc7c/OzNN -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem index d775234b27..b76ff8baa2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth-invalid.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC9zCCAd+gAwIBAgIUfyQHXtyaUn3SwDDGp3kxXHFfdc4wDQYJKoZIhvcNAQEL -BQAwJDEiMCAGA1UEAwwZaW50LWxpbWl0ZWQtZGVwdGgtaW52YWxpZDAiGA8yMDI0 -MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAnMSUwIwYDVQQDDBxlZS1pbnQt +MIIC9zCCAd+gAwIBAgIUAYozIwE8x4CAuNNuJTKubgKVlmkwDQYJKoZIhvcNAQEL +BQAwJDEiMCAGA1UEAwwZaW50LWxpbWl0ZWQtZGVwdGgtaW52YWxpZDAiGA8yMDIz +MTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAnMSUwIwYDVQQDDBxlZS1pbnQt bGltaXRlZC1kZXB0aC1pbnZhbGlkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGc BptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzC @@ -9,10 +9,10 @@ a2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8Xg uEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK 9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGP mRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoxowGDAJBgNVHRMEAjAAMAsGA1Ud -DwQEAwID+DANBgkqhkiG9w0BAQsFAAOCAQEABpIjSAYiLK1TIxIsM7zUMwnntRgf -FMyY8dVMLRzgA7jT2nf/+Z7yv+yaWBITNZA4sOfGVAIGaCjiJJV5XFQXsGijTdUA -pcgCGADTmcmbOH/yt2cDrbbJmBN+d/GscjBC68CjexZMdXOYSt/TXICK+TNBYf8w -5uTpnS7H5YdlnOPUF7dSFfvP29nh7Y3cd34wcoD1XXwxBlq/adkkY1bNzGpQD6t9 -WWgshYcsaSWibpEbfcNb4ElGReczePIz8ev3gF81qIW2By3iudPhIYY3wq0PFqlL -b1W3fU7VtPAUpzFJAwntSpa88cSVVXIoTvtrZCZs8SSPpugU+gkhVgg/LQ== +DwQEAwID+DANBgkqhkiG9w0BAQsFAAOCAQEASI1Y33uYrLTs0jB6BYN+L4fPfbAM +0bI1pIBPba4qEsMY/UUZsqdbDaOL0A/5f1VZR4jGzeiI6ldZke5e52hJORdR+4n5 +io07WDI7jKnW8T/zFRV+RJ12kxiWCR+v40Phll5o69FZDTLloD3xpQ6yJNIG85cT +LMMGwOolBvJaCntXP7GOp4G3vo9NWsCXbCKCF54zKF2eSCuQkw/U3bAm4svHoWgq +lTt5Fut7pihLDbLAfGcMt9paRP7TMGy+QzcwsKDMG9NqkhpEeLzutyqP5W0cCywA +M9KKELLDANLOZyARCb5XH8K0YUsi78nMNuTG8SPhrUPi8tcwiroD0HLZiA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem index 3161c5b33d..6dfb7c4adc 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-limited-depth.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5zCCAc+gAwIBAgIUdWNraKsIbb+xvuaQ1NETsBgioiQwDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRaW50LWxpbWl0ZWQtZGVwdGgwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowHzEdMBsGA1UEAwwUZWUtaW50LWxpbWl0ZWQt +MIIC5zCCAc+gAwIBAgIUZTfA5m1Bp1gB6lPRVv6bpmky7gwwDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRaW50LWxpbWl0ZWQtZGVwdGgwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowHzEdMBsGA1UEAwwUZWUtaW50LWxpbWl0ZWQt ZGVwdGgwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9 braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEI eqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6 @@ -9,10 +9,10 @@ iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Za qn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7 LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs 2hgKNe2NAgMBAAGjGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgP4MA0GCSqGSIb3 -DQEBCwUAA4IBAQCsJ77VIIhLrcg01TIjLvJSVdVJrLXEFZgr1awRbNaTfBoKP9lN -qJITur9NpFP7Rvs5nxSUYNU4t0oL7cCsxZGuJS6LzjzxmbFrhFAu+N1tzsTg2Aw9 -NKchgqJ6Zf3CtR5Tb9+BVnjZcpo17yGNmvnOuYoYkU88j2L9UxvjCFljgr4oV8bd -r5AaWJMxcWMyih7nHh7VcpbUKrv81PInFpDue47p8z1ujZGjGie995P1YpAtNKQt -08MYnuiyCAhcTp5O/Q/TJNQkxO8tJTHNZxwKuX8oX4THnjfZN03WcAFMWW+w09PR -jaWHuJZV1+qflLEbM5V73NkVE/zpcQyaSB/G +DQEBCwUAA4IBAQClsgLl6t8FBgzt6GDgSga8+IkRHnzAV+J/es1aZLiaeeEh5MMZ +mGqA/azCQO+YaeShY2tDchWpiMRVqzvGwkUwyIxGODPx8R0ZfV2RC1WRb1VD1nzA +2WT+wfZ5h+ztB22Um+lsZVMVLN1sUH7rpA7MmvJi3t/BsPxLTry87XtoEkuhSLVd +k+HihaBLFw6xA9zmA9nVd1E3Y5FubM14yVxzE9nhvMYOASKSXARUqHPmhJv9ouOw +VUNiFjNFoVC90FA1uJCjOuIMMz+E2mnVbgGjaI38R0sg4nodigN+uLAdUy8otk7s +Z8atTJMOrJrD9X7/MdZ04Q93dBv35M/fTJ4r -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem index 86b64336ec..0462e812e2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-extensions.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5zCCAc+gAwIBAgIUaWDVKmWoDSBiH3WZmcFXz+Z7g+YwDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRaW50LW5vLWV4dGVuc2lvbnMwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowHzEdMBsGA1UEAwwUZWUtaW50LW5vLWV4dGVu +MIIC5zCCAc+gAwIBAgIUQbThwYDCGqGQnt69PlqhHLCF8gAwDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRaW50LW5vLWV4dGVuc2lvbnMwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowHzEdMBsGA1UEAwwUZWUtaW50LW5vLWV4dGVu c2lvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9 braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEI eqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6 @@ -9,10 +9,10 @@ iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Za qn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7 LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs 2hgKNe2NAgMBAAGjGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgP4MA0GCSqGSIb3 -DQEBCwUAA4IBAQBcGsxgCVrqy2LqPnwK0AJibi6hk6Q4dbOonvUY/jm35EcP8Dbt -GiyRIWb5lvKIDnDMRSZT4LsZBbCukaIP65sFlPIwAsEnfpy2cPr2L34UyOu/Wm9C -3TqS6KlcZRB0BkseQdbKUyJSb5PD6T7/2eNOIVBhM4VftSlLI3Q88ZrApLuq23/W -uRg6mKhmx4xQtZU8hYD3024Jt0spEB2ieASRpjiLi17e/tjNY2pbP8Vop9iwUdkS -iA+3ajs8aypDotIxkyf+WTL3/TJWgj53PZhPzrOQVA8g1cnuRZqSpHVPSrd5UlRH -JWFgwls0njD7Nf3YiT3nSCJLz97WThd48krE +DQEBCwUAA4IBAQAgZq+BdeWlGGmMPhVvPSoY50yI90q4L6EBN3MK60Xu8CP4I4Gb +vIMGtTWlLmQURLGrVDl1EeBsg3C/eO05hxqp2n0atyvF/3ew2EspXtv1Lr1YvciJ +ucgOSsnVeZByXdDvejXM6nnoqo70DvQ0YSP49nmHjyUK6OrXI3SjQGK/v7UMLUlZ +0fmcBUkuhW7tsU2szX/YUaVo7hMDDoPPbGJaDM3V9iUG+1bg/vJvlHcJ7tBihzUU +tb0Qg//HbE9/uVJ9WwRNE0w4ZEVlRPSwkh6V1xpEMvwOplH74a0kPCvReDTSvSwi +HlIusQ4KQ8Ii3BcI8lp5Et5gOOYqNXHhN7oM -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem index 8da1aea887..888306b07b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-no-eku.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5TCCAc2gAwIBAgIUJcCcwaKrXKwgnjIsZXQr+Py3mGIwDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQaW50LW5vLWt1LW5vLWVrdTAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjAeMRwwGgYDVQQDDBNlZS1pbnQtbm8ta3Utbm8t +MIIC5TCCAc2gAwIBAgIUSe60GaU6D/n3oX3uVYaV5ZA2HsMwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQaW50LW5vLWt1LW5vLWVrdTAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjAeMRwwGgYDVQQDDBNlZS1pbnQtbm8ta3Utbm8t ZWt1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62 iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHql WqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosq @@ -9,10 +9,10 @@ Qe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8i b2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoY CjXtjQIDAQABoxowGDAJBgNVHRMEAjAAMAsGA1UdDwQEAwID+DANBgkqhkiG9w0B -AQsFAAOCAQEAGTH2Q2kGEsBWBCCSFotToC662osRS5j5TxEzGRikj21VWlOb1jWE -UhECYzXMaFDgVxMLPKFR40j3OQldR7RJgRUKdTXX6zoFuNn6jSF3kYdEOSQQKwmX -Zctcksl3fhSvjBZdqWqbsTABL2eri1R7gvXIRH6cZPRiLvt7qvPJoSXbgWK87JSV -MIKNBXZfOwFWlqpzUGmYhk8UGC901EQEiqVluDCmFwVbczhq8jrIrFyLfNPGZ2zr -VXcYF2eV6bmycs2J+yAHS01Y1chjrW4fBjmthdBYIlxarFgCvZI1OftU8jq/uwE9 -BdgKpEZIrwiEXwM8afo6moGcE4liJIZMxQ== +AQsFAAOCAQEAQj+HMNyxlyQTrltFGVk2xGMdjWIyOauKqrvFAfF53NMbd8OF0MiE +1zCfGJw/o6I8P7191bG+GocOjkM3X0xEp5KI6JCaIjVzBepiqPq20nb/VnSwQLEL +z1m4CXL9dVOW8fPw6ctUE0707FEc0qODnRmW+Lippa3U754kVSZYw9zaddsKqgit +Dht8hljOBYEB2VXrqlovCLWwDm0d1Q44XkXt8rRs0lIlhqHOL6jnSk44uHihAk83 +oxI4cced8dWWdvbufh1+0SWIK0tR/kVscdyPw7AU8SMTnOkpAcV+CO7CEv/Vx3tf +NYIXk/qiGJcJeP65UvyMLhzTpJ5MgmlSqg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem index 2b63d1ee83..16f4a60ed9 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-no-ku-server-eku.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC7TCCAdWgAwIBAgIUA07hO0NugzFzXQ7WjL2rtdrYEiowDQYJKoZIhvcNAQEL -BQAwHzEdMBsGA1UEAwwUaW50LW5vLWt1LXNlcnZlci1la3UwIhgPMjAyNDExMjcw -MDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowIjEgMB4GA1UEAwwXZWUtaW50LW5vLWt1 +MIIC7TCCAdWgAwIBAgIUE9nvLeiUyWGwTXGDVW0Xf8AqTrwwDQYJKoZIhvcNAQEL +BQAwHzEdMBsGA1UEAwwUaW50LW5vLWt1LXNlcnZlci1la3UwIhgPMjAyMzExMjgw +MDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowIjEgMB4GA1UEAwwXZWUtaW50LW5vLWt1 LXNlcnZlci1la3UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGo RI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9a dWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6t @@ -9,10 +9,10 @@ aRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8n FthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kX Dqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/py UcQx1QOs2hgKNe2NAgMBAAGjGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgP4MA0G -CSqGSIb3DQEBCwUAA4IBAQAjewXjthh45mCj7IOGGP2FfclvlOqXC7pqzivYP2tc -EhALIKR1flJweAxsykRsqnHQQ9WmhVLQ/mGsZ7JTi3V6PdSgzPXGm5pQvo3tjK5v -H7oCQcaqLgG7fSdKH1ymJitHNk9kGHCycAUUwQDYHYPkgefo3EwMn9TF7IwJgJEp -NXESJGsuOQq1NzmM7Sr/vebJOhifCsySsAM7zzXbr1d/VuYQBJcCNwkexgh5Kse0 -LDgQKayViNS478u0sSSofvyFNHGPNM36jEitXAC7celYjWvRoh4uuMBSeWiVAoKj -bKmZk94EWlJ5LAdanst25qbCouIQMrS4zKpEiGPA2e2o +CSqGSIb3DQEBCwUAA4IBAQCxXGu05Aqkr3eJmnZ0L+GTodu/cmSjCBN6+mdMmQ4B +2lfTBQ4ZwEHvGuQM2Gh5j6QnnZA//Bq0U2Z2lll5H2WKM/Pl/h3cwN31QPt3j5on +6ojRRy8bJhRpZTBW1g5Z/nr98jeyqlbvtOwmVL8becXlCuhoXuJlU8TSmlx3gczs +nZY15b7HVmUZjBbsORbdR1zchbL0SqGQL29n2vlu8zdBkrWgoj0sFDslYicMMqsJ +U61XGGdI0bSlctDsydPwrKfgLyC1DJbHNQRH+zfkRm+EZOk7z9wbxNiLb19JhfpC +wbxdVIJoNgBcvF27kfQVwtNmbXw7Fe0hVhtCA5yhOxsP -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem index 47c7ba97da..da148465f1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-not-a-ca.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC3TCCAcWgAwIBAgIUHwnKEOOkSPMqLYxwQUZ0zuj15PkwDQYJKoZIhvcNAQEL -BQAwFzEVMBMGA1UEAwwMaW50LW5vdC1hLWNhMCIYDzIwMjQxMTI3MDAwMDAwWhgP -MjAyNzAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD2VlLWludC1ub3QtYS1jYTCCASIw +MIIC3TCCAcWgAwIBAgIUYw/aGK2gyiNsI8RO2A1vFd/bfkIwDQYJKoZIhvcNAQEL +BQAwFzEVMBMGA1UEAwwMaW50LW5vdC1hLWNhMCIYDzIwMjMxMTI4MDAwMDAwWhgP +MjAyNjAyMDUwMDAwMDBaMBoxGDAWBgNVBAMMD2VlLWludC1ub3QtYS1jYTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk nAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N @@ -9,10 +9,10 @@ nAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd 7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEA AaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCA/gwDQYJKoZIhvcNAQELBQADggEB -AEvpxN5USRY2i+Y/d58OYgGQDo6QJPODb7MQ0ISSHMAQeXpVN4fAC+/40QHoc6Tf -LO8IKL5wPntV58IcX6QShkg219k9+/gK9AykbcmxMqDrvzR3Hud1MVXqY0YfiO7J -/QTzTjMFleUrPXfZSEYSoXdera341IhLc/YU7cOtNeno8CnG+wWT609W3oneB9Kj -1Gz4tYPLYZPJUO8L9apQuqnpMOteFbJ59atJF9ErqfZ5zOUIMI2IPCOPtiIO7Ksm -nZrAsyncqEgmwRosmuGHKq6tcBwhrrqzYKbfrDzTHp6uaczZ1Hm7dq6gFbicX6qD -+7HCsz+Tf91WAz/dJamTmS4= +AGpT8GPZJbpEVC6KriXuVhvsJvySz3+cpljy2up263KxWxBuxBz+s9dsFB4420Ib +GQRbLxp4RBATBXcKlUjXSKhx66uQlgTuNol/EkOIK5bwA3S+FublK/zYcaGnUsv/ +434x/JMnAnVqsKqiZ74VdwS4AXtLJL+z8jlhKSf8YuTWKjuuijCEw2iW8HadWUZe +QCgPIOiVsc546CKJcP10E5zMHD1LkA2Jtro2xEvZGedEjquSkY2nP2FRZF7LbG9U +fX8kN+YuhlLj6UOZ7xi+2XQuavsAhG0UWFoJEgrswf5SbyDk+r05EFhYJpj0hjCW +dfapjIjV5Ivgt0i3MzudsVM= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem index 935753b59d..6bd2ae3db3 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-no-eku.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC6zCCAdOgAwIBAgIUYZ2sisxQk/dlfgTSteZyrGMA3cYwDQYJKoZIhvcNAQEL -BQAwHjEcMBoGA1UEAwwTaW50LXZhbGlkLWt1LW5vLWVrdTAiGA8yMDI0MTEyNzAw -MDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAhMR8wHQYDVQQDDBZlZS1pbnQtdmFsaWQt +MIIC6zCCAdOgAwIBAgIUGRIn1igNK2mYEtVUkVbnPcgB9LYwDQYJKoZIhvcNAQEL +BQAwHjEcMBoGA1UEAwwTaW50LXZhbGlkLWt1LW5vLWVrdTAiGA8yMDIzMTEyODAw +MDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAhMR8wHQYDVQQDDBZlZS1pbnQtdmFsaWQt a3Utbm8tZWt1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESO FtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVr amRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWka @@ -9,10 +9,10 @@ sdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbY VbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6n aOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHE MdUDrNoYCjXtjQIDAQABoxowGDAJBgNVHRMEAjAAMAsGA1UdDwQEAwID+DANBgkq -hkiG9w0BAQsFAAOCAQEAcpMng/32wu1AIYuDCurtVd/0/lHMjOjjOW34sHhKksnh -1eOXYWbO2+FRWep/lDLh4Kteh4Et10GyiBh/X2DeUNDKwETvkDYKpyf6R/JYGKgc -8tk1JUKrJXLv16NlSjjenQHKsIbKdgVzxpJMOShJH3lq/liy9bHtwRdIrB4IJ/kn -ikwSx36Lr1515tSP9JzgP1I5HsDvc1kYM6ns2acZ2kTA6OnvPmbkZochQM9SKGEe -wBxrPS+r7QcljfI4CCF+hV98eru9SXw9uqjqnpswbXyWE7TFhiClJ6dzBT9NjcIc -UeE545UtjWg/+ZBjfmT0UZoXP8tJW+17dW7gkjqC7w== +hkiG9w0BAQsFAAOCAQEAHKkAD4PNaVN79ME909gqDWr0wpNvUHtmtZHKeyqUwk2a +1cnikgmX3d+34vMvDPBTLlvx0c/Stbcy1CuzI1F+z+szrKxz7l3ujpoTJ2RRYikU +fGChADSp8nR+8GQAhxqybF7A+Nldas5Qhhk4bX9cWy28usD8Sft1HomjUACneY3T +ILlzcgfHo0gqCktwY5saKrWRJwLNiOBxHpyf1AJX0PePgmaWO50et6NQRqWcDa5D +mzYqEBWHSGhuSwUqFAn59KGKTpt35zFE3gJ9IrcdiwqTuctNzKyGNspadFUTLSg0 +C7yCf9QFEs/j3r/YT39EfTN79idAdOxAGeYdsCYJpQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem index 98d9a1c5b7..aebbcd3037 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/ee-int-valid-ku-server-eku.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC8zCCAdugAwIBAgIUNawjvFoUzWX2OIhZEMxNJBGDsJ4wDQYJKoZIhvcNAQEL -BQAwIjEgMB4GA1UEAwwXaW50LXZhbGlkLWt1LXNlcnZlci1la3UwIhgPMjAyNDEx -MjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowJTEjMCEGA1UEAwwaZWUtaW50LXZh +MIIC8zCCAdugAwIBAgIUW91n/D2W+8jDug3KaRG53OKw20EwDQYJKoZIhvcNAQEL +BQAwIjEgMB4GA1UEAwwXaW50LXZhbGlkLWt1LXNlcnZlci1la3UwIhgPMjAyMzEx +MjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowJTEjMCEGA1UEAwwaZWUtaW50LXZh bGlkLWt1LXNlcnZlci1la3UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24a hvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7t @@ -9,10 +9,10 @@ FYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+o N9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0d JdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4 s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQD -AgP4MA0GCSqGSIb3DQEBCwUAA4IBAQBkY90Nzm7Q1zma7aYja2D7KPKTa0FI08sZ -b19P0RtaKwgF2tjmYL48QIn74ZcYCM2clM0TUOtB3TbmkxO3pL3uDsXZaG6NG1VR -ejJtDmx94HD4wBwLIO/GHcooZHtMp9c8qAQmIAbraxswbXr9OKHWGYFlYcs7T82g -Ce+fVBBlZaomcXcjEYN7wTjxPmddGEun1iVXYMlJlZizFcmPJxHNaeo0QKjAh7Tb -WH5Bu/vZCBPRboQpu5azC+oDZWuo9O/l+2M2POOvBK5A8hYBv9j/KwrNnjp+zJLk -dGbSOPCPIXWLXQ43GpkFfEU4vXAurwmzPIZILL78F2Hx+B9O1WvI +AgP4MA0GCSqGSIb3DQEBCwUAA4IBAQAVQ4hXMEh+IgBJH8DHFJTaIfZpNgFcAXXl +n1ErKzfXK4IW7wE3bifVUQa/gfbZvnJkJPtKaDrGHoboNiSBiOg7gk7+oL6JVtOf +c6S1PsNl8NvLqBRXoiCtAjd8Dy1rJG4XoxokkXonbQfBbCGCF620y86f5W66bOhE +z6ib2nk27gQoW2hbQqXKSdxYJAWjA1FmPNEuxf3HtjCiebfOpSuVUEjYdoT6LMGi +BHScVJoT1TfeGpBbeM5MrrCuDTRfnVikE8Pp4iX8kLwpxCZHI5o+ld2Q0VxXUUFJ +sdgzTvTZQx32/2Jj9jVSC/J2DTHu8BqwBOw98jiR5QqHaT+Ehp6J -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem index 79a6fa99bc..04bc3f9952 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-no-eku.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC2DCCAcCgAwIBAgIUM/6GE21jLKJAHeklGPIxjPjcBwIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC2DCCAcCgAwIBAgIUDVlWxe1tEXBpFd7eS4Q3JQ67YdcwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowHDEaMBgGA1UEAwwRaW50LWJhZC1rdS1uby1la3UwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVo V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p @@ -8,11 +8,11 @@ V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p fbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZh W7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EI TjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwG -A1UdEwQFMAMBAf8wCwYDVR0PBAQDAgH6MA0GCSqGSIb3DQEBCwUAA4IBAQA1P++Y -5JrdtKIAx7PRdY7C35meFqK5SCswItlw9KfHgkmY0TGbpnKkqXG/3ufv8rUjoWkn -9eu+CiI1Q84flNiigMjruHX00ro0e8clCmfyE1JRCZHg5X0UEYVJld7+lt4TCOyK -OmJabNFG3BS/CGowIC34YRmjZBB/fDC8FuJ6fgHTgGSBqIxB/4xGPJj8pDEy+Zwx -1YY81yvhHfpNRlC5gN4RwkHUIfxbSAmRBzWDp7JosTrf1kilpiHNP9SFeuPv3J+4 -rXtu98aH2MxZT8ZQO2ZUy7i6h62PQLx1qiuuYy8+AVw1udlOffM4dkGrYinogttz -Tsx324EzJkPC2Gnq +A1UdEwQFMAMBAf8wCwYDVR0PBAQDAgH6MA0GCSqGSIb3DQEBCwUAA4IBAQAIs/fS +lQ8Q2cnkBPX6/M3VLsgfy1MnYNOlI3OoJl4Qn3rB1UvPH98FRNy+VapwItpXpTIg +bHArvlXNe8OZvR330yg9OiO0kNPdv3Wwql26FzebA74LjaYf9xnh5bwumq0xdn0b +luHZPw+IGM2XcFESKyz1aSKqXFAS/1ujWyO/FaPPkG+SqPt5r0KxIG59Is+HU+8r +RIPdpJKclQuaGEVrkjteJg3/1UFW8EpoeWYU6SJdk2RXfuV2ZfGAD1eU2+qSJBxq +2hl6Mx0iPSeU6GaX0nO1/u4tacrEiKzbVvYXSwjqtotE69p4q576J0W9CYUHjCaW +mTn521Yag70TsLvX -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem index 945ec4e4e2..9530fa1b06 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-bad-ku-server-eku.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC+zCCAeOgAwIBAgIUYdNEC49ifEyqiwfeXP/VxERm7PYwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC+zCCAeOgAwIBAgIUU+lcIKG04ZxQLpnaZ4NLObj7JYgwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowIDEeMBwGA1UEAwwVaW50LWJhZC1rdS1zZXJ2ZXItZWt1MIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVK tOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7N @@ -9,10 +9,10 @@ sCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxs l62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYl nauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABozww OjAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIB+jAdBgNVHSUEFjAUBggrBgEFBQcD -AQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAJKTWc7gFiAvvPVGgMsmlbVc -vpikmeptZ8yLCnVNTYRpM+5vN9fyqRChlvV3EvdzbWVJq3sHRooUNw2fRzOcM+qX -wMfPFBJMIhgfTG/VzUaRT/IhW3hznefrtjyh/mzIjbtHtYcxofNygDDsh8JOYcgF -m/VD1b6/qjdPJuHJ8H6GPzH4G5a9N6CEYLmUsUNL2uKExQhpUsh0h9hA+y2LBCqt -CNShdpfcs2E1XbAsuBnohmGq56KTVx7QmMcGk+AL9wZciqf80eH/6MH7ICN4K7eL -BZgAW/ChLhQdVqV80Cn6Mg107ap9BFMjDYbXAui3byILuDcVxGvh400Pz1N6t4k= +AQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAJ8lwqmC36gNC2J+sLuCyrAZ +HjXXp4ftwERT36wwtbKLpuwLEjxnSEnIQBtNsM0ACohfAbVbX9G3+m7Q3CePfNvd +KQwC8pQS39lt4nLHPbtjwEfbfPbA0IWCLIQk3hen/Txql2wA6oqBH62X5rFaeiBD +ybhnI+OwonsyD4+mR+BMkeAt7vqeoQWZsWhlLrkCPU7MKlXsyMp+GYnH6M2Zsf0y +yCVTXjV166nf2pMgfeVuywW4zbKP5vpzHUYemwyHgY5I6zueUmN5tfnBiNUAiZ8A +AeicxtnfKI0BqF45lztQV8LelP4cD1+njvH9E2xQbx1EqGYrfawvUAPHjCcpMYM= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem index cc677818c8..5a220491d5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-cA-FALSE-asserts-keyCertSign.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC5DCCAcygAwIBAgIUG24kp923WmUdZ3SYpfs1KfLEQ+QwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC5DCCAcygAwIBAgIUNU5dJjU/PbYlMNhusvlu4Odhb4UwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowKzEpMCcGA1UEAwwgaW50LWNBLUZBTFNFLWFzc2VydHMta2V5Q2VydFNp Z24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braI BjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVa @@ -9,10 +9,10 @@ p0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB kC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJv aeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgK Ne2NAgMBAAGjGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgH+MA0GCSqGSIb3DQEB -CwUAA4IBAQBZ06BNH//CY24QgNZ1BzJ2QqF3tfpwi3Cpv3RsXD3PNjvBSO64C3oi -fa1Sr240+IQIZPMJ9uUa/FYQOFuZtAmsd73ZEcviWPK7vUMQ6A+OcpZUoVMbWcDh -itf5V9cI0sbT6QzdTg6cThuHcmr1Cs2TnZwhGS7jnlaPjWD7dZJPLgwRoxTty0LQ -Ab0cmQJdA28Hx3X4l7K9nSklV0iV6ePRjQzkRF5PovrOp92Mujqif2ZOrfg63KCz -Z9RXWvBlCUl3HclW9cs4sgrxtxbpKvDyBUO8zZNb5NPg13zDf/dpUXpAf1FIWd6+ -HqVM4vzS20WzlyZRPrD/204ITOVAMLLI +CwUAA4IBAQC132VsGfws62BpxNKAPx7moDMvF2SCxGdaz2C/h42BJdmy99Vd2KSt +YZXvqI9LsywdC5SS51ougiU1xAYzwCPCVGy8htNznSePqE5kucGLXK8+v7Qn0DYY +m74G4uRoUA6q4+oTEa27hlB0zKHx3AYNrRAHKuBA63oEhuZd5W7mR16FVkHrDfH/ +aHrMJKWnHGWB3j48XAulPobjtou1HZW3vdaGyAeonzxDaZS8QPRo3e9yzeSgz/UT +bPkm8YW4I4aVjBjrw2uvskK/2kZr6vthMcc0R05QXRHdbSc6hQUdZp1Cf9ZKclgv +v8FRRMhvBSPJAJp25RjrI9KMIZk0UP+M -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem index 2d242aa431..db3d5c7a45 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth-invalid.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC4jCCAcqgAwIBAgIUJdt1lRNJ583FcifeFk4HcowgUN8wDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRaW50LWxpbWl0ZWQtZGVwdGgwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowJDEiMCAGA1UEAwwZaW50LWxpbWl0ZWQtZGVw +MIIC4jCCAcqgAwIBAgIUQXpXpq744uHTroPW1zLnQCaWluAwDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRaW50LWxpbWl0ZWQtZGVwdGgwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowJDEiMCAGA1UEAwwZaW50LWxpbWl0ZWQtZGVw dGgtaW52YWxpZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahE jhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1 a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1p @@ -9,10 +9,10 @@ GrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW 2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcO p2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJR xDHVA6zaGAo17Y0CAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsF -AAOCAQEAMP+irigvu/mBHiHO7sk8ZqkL6V40Po29gUYxSRFPNAQvBhXigp+FuDQW -AdbVqN88GjU4C0B+xjoDeUq4zGLJxtyeQKgHV60nm8fhRRtZTib+duPRiRDJPMdj -P7UJKc9qrSgsiU7Hdr39RkDAWwXGXosUdpwgi8iCi3i+i1Qoe8JT76Gdbg71GoVW -uFT60cQYBNIeGZZ2pQuMAWIsKCQ4xOSmaHDEcr0U+/JzMueYfptBXSrtNA5isbWm -Jxc59uy8lFLJJ6ff2INs1zxM1dD7n3iShMo4jClNQDzijoDod5LAzim3JYnWUT/g -WrWJJMIeKLXKYpw/Kz7eBIj1siNuYw== +AAOCAQEANDqRvD8ACOcBJ/OraC1T5okLccYXRBnkY+b3qYakJ/L7JhbVlbFX/0no +6YuoXMGTJZdG0TjPO6B6Sod8wtvQmhHrhNLOa2OYzrO7uPHyOeZ5KjOF7v71ssEu +KFdn+CDsFuazO1tBldNdA6pE0uPIZGDbbpmNGRbDjh+vTLO/ERu14Cx/g3y4XCi7 +zr2PrjIiwGPMRltd71986gVZwL6K8ocqTrs93lUi1N5PK0U96oOky4EY/h4ybbRj +37+g8wCHLM0RafMCW76nZJjgiV9AVtpE2SapKL4wY+zA3jyw2ZihLWUoBdAluHvW +hraOScXy2j2C/Ww4J6DRvrP09I3rtw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem index d05b749024..8497904af8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-limited-depth.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICzjCCAbagAwIBAgIUAfGlmGW/bWS2qKF35x4T2QaLuIQwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICzjCCAbagAwIBAgIURVGMNpuDmR6E029tuw9DDUF1KnIwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowHDEaMBgGA1UEAwwRaW50LWxpbWl0ZWQtZGVwdGgwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVo V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p @@ -8,11 +8,11 @@ V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p fbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZh W7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EI TjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjEzARMA8G -A1UdEwQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBACeovDYANmsl5SWH9Hed -4Qp1K5R8gsCN+qP9b1xFpZKD+qAeliRBXxyDCsRRWM5e3JCjJfvdtRvfIHXkzt9R -WY8FqXnR8NyzvgJw5TTpkx2Cg3dNBDCfxaHLAC4uM7aKtZaScflkUtoXcF40bsxp -a2P8XVeGvBcBJWBXisrLqN1IdH+PVsv7vGbDrkCy39J49sMHDJCKX8FiLtp2zlV+ -7ZrHfSDDo/BkBPVYKk2NY3ZHBfmZyK3jlfTsXH0jICxnMyqPdafORBNlIFSRYBcl -RJs0zI3a3Wm8tShvbgJA+734ZaUMYsCd7r2aWheVL2UZyZIC3Vj6+VpqLwR7ImdX -obA= +A1UdEwQIMAYBAf8CAQAwDQYJKoZIhvcNAQELBQADggEBACDZksYuZsJDilPWdpI3 +yyef67zOphctzlhP/9Rdp8O0S0dr09rshFuXeHaQWQoeTrNkR398/t3Tj16atlvJ +iJF1ymiYIbSLuN/smoMExsKNEXI3pThlnjQldaGp9z1PjKlLZy01nkXcIiyr+FED +u2iO9yd62hE6dSqa1MVjg+640zp6YDvlfOjOSqguqSKkU4dlk5qSTBFTi2VzHjA5 +xXx6U78dboNZL0QtOUPiNgkhUA2jE8XjmV1G8a/X9B6/pjnmwmCVy8dLfnbf3URY +N0zMDajB4t9QvuGVunyUyx+dSJHIroTUt9hQkM0J1mSNWMI4KAOIQtLJb1tRunCE +u7c= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem index 53204ddb51..174e524578 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-extensions.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICuTCCAaGgAwIBAgIUIxDPmLz2LqnLp2YVaKBSHDrx/m0wDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICuTCCAaGgAwIBAgIUEcz7NCk7Djr0F4FgQ7wnfCnOJQswDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowHDEaMBgGA1UEAwwRaW50LW5vLWV4dGVuc2lvbnMwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVo V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p @@ -8,10 +8,10 @@ V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p fbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZh W7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EI TjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZI -hvcNAQELBQADggEBAAdNrBDGyYL8NN37wUjzkEr3yN8aC9jNp/iA4cSQP2yIz241 -NuIAjrGecnswqALb9shdP6C5iIBQkfl6x1z+YzOd7dY++JR6ceyZmQPn//i4LkjB -7bQGzJZ9erZbBRp7tqbQwXR0lWHtu/X4tNcHX/2A9rKMI+unm9VTnP6jH5Bl/OJJ -OdKPtuqKw34dwRKL2TH8IccCDIWVbCNZ1SJPFBEoR+VAYAN6dy9soJinBX9jl1AS -cA+iTBB18MszFdMXr4kRyogFtR4CryCpQcsXhsQVbZh8RJi6d5iEoBi72PHf997t -2ZkHk0jUTbpU49RLfh4nD4WAQQtOhcwZdR1qsG8= +hvcNAQELBQADggEBAFs8AKmbwKE5CPZHwHyn52pM8SObAHnxuJd9Og2cbcWIxtWx +j/ZeWjk95eV8aVyY4NFUEUiQ8f+5HM346Bx9k3DYPyEzXEiSyAuuPUHiaCTRLePW +/DuE322MbJFxEpEA2KQRmEbHemHb17eRZopDRFrmCkx6QwslEO+wZ7YOp/M6+KAi +KXqZp+USgO0pM4luWuWTrsP2AK6IOiLGgwJ/q5AtnhYUZpKGWaY6rljljFvkSIb7 +IZBsmUxStAKDzU33YgmjhpKk5yqxpx8bWHRnsbQqnhuury2bqa40Jws/NBtQsGf4 +7ZDxPTmHieXqH+EGldUhSOkv5qOxkVnchSXvm0g= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem index 2be30c02b1..f9ac799628 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-no-eku.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyjCCAbKgAwIBAgIUGbZjJB2eaaWQDOE/O6bIBGiWiQYwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyjCCAbKgAwIBAgIUKRm18mr9mp9HtMqry5si+zj3B0swDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowGzEZMBcGA1UEAwwQaW50LW5vLWt1LW5vLWVrdTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhX bCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQ @@ -8,10 +8,10 @@ OCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9 uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFb t+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhO NsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMQMA4wDAYD -VR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEACOvTsXa9/9Emx+4AcaJhnhzy -+iS60vfF6I+YnlN22kqlEVby5MFbUCXRDraNvxTBc/7yRfxML+DcfkRfKuzu8bKf -+1Mi7NUs75mMaMKuQZ8D3MV6y0etKb/lpnKf6rsRLCFVOc0s2w6oDDRI2rOSW9dD -SMTwNcgg7fKSJrTTFc4eDbpmiv3JCCzr6IvwlVIAnX/pb+XHThxN7vHeutRkgIGW -9LdRy2vhCIdcg4+ySnjMroAJqpIQisyG9qc3nM+a8SnvSDVQSo0GtL5Qf3eooTCI -DDu5380FYn0lWqGcaCcruG+TGquzO0a8F/xemPlEecQucYUDnRrhtYTLItTZdw== +VR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAgpYOptvVaSaHW7hn7GA+Dq6S +44Dc0K6T0I6/8vQ3MkPiKsB6XdAmJsGf+yyLd+eg4c5quk3dCid7tlMPjdDCnmhI +s+FnJmSsz/LkioSfQtzQPWAVAbLK/NCE01jMfvq3sO7dbzt+1SKohxMwR2KvjVPb +B3OmXvQ0cXKgZiagPOVRALqQD/31d7qi9Z2CxWm7BfWBJGFz93CXW+0kCZUmfF2Z +NwHrHlP2xNq+sLolYqv61lgj05UEWOUCc/BFI5h+BTdsofIgOvHLS7qkzTKwYu0J +VyMr73o8lh39x66KKYotkwJQEmBEGx37X90pLqHMTTW0Eg2rytYEG/Z3k43rwQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem index 9d7377f30f..15dc6d26b5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-no-ku-server-eku.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC7TCCAdWgAwIBAgIUey2aZU7NEAprnrtTSZNwYaoSJZIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC7TCCAdWgAwIBAgIUBRsvGPpdq7rJaIiu9eCZR2gu5kQwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowHzEdMBsGA1UEAwwUaW50LW5vLWt1LXNlcnZlci1la3UwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D @@ -9,10 +9,10 @@ JJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyX rZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWd q5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjLzAt MAwGA1UdEwQFMAMBAf8wHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0G -CSqGSIb3DQEBCwUAA4IBAQCypcV+D1t/o7RdEBY8havjdJT2s31HXRc382E+x+Qk -xO/RBy86/a23X91apPKxN0qGNy8nQwrgr/KkiIOE2jmbQj/HS8DpmTSLsqJ3EJ53 -W81huz8XjFscFraWPsQ8lbEAe3XJm3fWBti6iMk2kJdPPrvAvWTDQ0wqOMD2m1we -LVzmT4x+Mogg/Xg6FaicaKiX/wY2NwN84f4V9SuzJFhHRSEn+8dX266zn0RU5onZ -9ReFhV2/foyhDs5Fc/tkGBOVhq0gJjPOOBJKwrxuzfbJCl0xj0M8WMmpQlBpCWGZ -ubm0Ojj6kNuqdIeFAzkJZoxCBU8Rdj89F7mS45Wf/Hv5 +CSqGSIb3DQEBCwUAA4IBAQC2lSDNnqiU5zzY6Rdzi3/MskJLYeEh2LZA5uW/PLKQ +XfLjaTqAj+7AvADu8hgaCzkUSTyUsZVHCp9WBvAKoKsF6x8ou3ADcirjArOAzj/N +CQ3EpfsfSeSzhz+e4VILRa8m5sw58ZBUI5aOlwmlLcHLpRyTDs94SEyXnonyULxG +KPwh3sdzfD+bUDt2DU5r42VHkr/8oGviUMQWPKSJLULjzq/qQn7bI4U66UAqaaO9 +LUamErafudngLLC5ddeHSWcoyqZhU9hTMcWMAGydqMyT3ZOyoxBUhnqyEAbaojVe +AIqJET6GQqNqybctf4Hpty37IdoGbYAnLuXD8PqWIvpu -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem index 5eb8d21b95..8c5ad15568 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-not-a-ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICwzCCAaugAwIBAgIUBXR4qXEX4gJB3PiJz9/MjNOGwCIwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICwzCCAaugAwIBAgIUeSEgP0oUvmkHrbpv1cIREJNKFqwwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowFzEVMBMGA1UEAwwMaW50LW5vdC1hLWNhMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -8,10 +8,10 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABow0wCzAJBgNVHRME -AjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBEP9o8TX/1LgqjMSJka3/7nxNWIU+80IN/ -jUzShjvp4ESq3Rs1yZq3qr6gjEsQngw/Xbvv/SP9scNhv7+SSOC/BmN8ldSuaQMr -3ZLOXUp4i3dGONWsovQA44VKsVj5iimIk2V+rNEJMLbOeZPy21FuLAu7wABhL5L0 -MVeVpaY4GMuHnM4MxOmn6+mBqp2M6mnbtxkLypF26EhHCSlE4lTI6CJmr3lhlaJ6 -903Q/COZYugfANNpezG1HPqcc7bBCVjfpd4RcQGxCMQy+nZfiDlfqhilhMyrzAU1 -9eKRd0fhNIQ09Ni3yDxUV0GzDMZVqkTmQw/Fd1NdbnqNSp/OoAja +AjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAgTYsg+qdcNYZJX71HNL9ZQc0nobxZ/osF +B5V0S2CZzpmy3oR9tc6Nl6TZTdD9euEX8F1L5VU+R7ZF4exyPJdtZ8jxINk/7dw6 +ctti+35yygo768WquTriE4ERc4U/njNwmFtlPfurcXnFVwlbJjFOgpzHg/NJr2zT +nmER73jkIPj8rEWeFTcFAUvXtNp1aNZy9EmLZJToVw5wIPXWzk4TWBYtIDNNSbT+ +LCIJ9KK0pa+bZUO44Ruw12z+3TLmnD2Q+e0j9vvUJzvSqC6dx09pqLsRH+gvD8Hr +LNN1SUi5NmvVQzH6dSAD9nfIi9C+nMrHyrg0pgiKyu3nI5qvaaGm -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem index 9026905bbb..9f3ae5f5ae 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-no-eku.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC2jCCAcKgAwIBAgIUPWy26XJHJk3LWxb2q7PLCZ6t0mswDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC2jCCAcKgAwIBAgIUL7iqRX4TvqbMkCDUBXvCRej1HuQwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowHjEcMBoGA1UEAwwTaW50LXZhbGlkLWt1LW5vLWVrdTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs 9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8 @@ -8,11 +8,11 @@ HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7Ak kqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJet lmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2r kQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMdMBsw -DAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQELBQADggEBACXi -G2QvZeR9XBNVdezyyQPe2iIGuFi6NJ4xokMnyKCY4Aw1QvR9OJyyf50VvUoaOkl5 -o7vhblTq1jenlm6xYInYpYnj3BTbRLCvVRQ0is5xFE0ApMk8rMcf22FQGq8CMVYm -F3jBSyQ2Ev8Ziv7ScMAhxxFPcwpaLldxl8RSb87QrGcxunp9v6zBAQGYqrBjniTX -oeCtDQUScGKMfgm08LN7RUIAOSGx796stU4LViI9Aw03NSt+/uSKZuoG8ZSs02Ch -PytGfzV9olU/yiVr5sK0djSzWLsfJbB7ivowTfzfW6YgznvaHuGZw6L24wQXNiVU -DPvXk15koVgg6VTNXRw= +DAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAgQwDQYJKoZIhvcNAQELBQADggEBAJji +w1b1nGoIX6rSJKPDwUPBGDqF6aaftIzpgcFJM7hvXZjTkEF7XkGcfd8/Imf7GgIj +daH8dZ2/Ol3mHcW8QwAqrCmAkN0LxuNekSVOK2hUrtdpi+MjVn0Y/x+pq6UOenoo +vL9WBjYxzSxXWOE8M/Gy+WbxDYGsH5Ehu7oaFcXopX2+PhrLMZwQp7kd+LaG7D5f +ijnPLQXHY/2QRebwuODVuT3Gej0TPZ0TFyubk3vxs690mFLfRSlmu/07d39KTUzu +mlNrozctl9JWmitTREkEs0e3wBE2Uz+O5gV7qUH9/3paXq19oAWPEfboUyBCyRSk +KJxjpOMU8xt4pJ82dvo= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem index 41efef2530..bc6f6656d1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_basic_usage_constraints/int-valid-ku-server-eku.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC/TCCAeWgAwIBAgIUG6uRDiuWgrfij7ltW2oy0iAF3DEwDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIIC/TCCAeWgAwIBAgIUEW9OhboQVXuZT3qCN+UeYJB2VAMwDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowIjEgMB4GA1UEAwwXaW50LXZhbGlkLWt1LXNlcnZlci1la3UwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erk NUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwC @@ -9,11 +9,11 @@ CyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTM HGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m 1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGj PDA6MAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgIEMB0GA1UdJQQWMBQGCCsGAQUF -BwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEASVReV1S8okH7ZtW2ZSuZ -QLHajgVg9RWAKvqMaxWDTDAOwLhat/w1rB8gdgWm92qnD3odI/YRaGE30t+K9Kp5 -h2RpXjCIAPfjI01uO5PO3HTFDw0GLMxrZFQOJuVJihnZ/fxMQaQX5uLwukvoO9Iv -nA/9WdhtX1j0voBtPIATP+tRaRp0mPfWFaNuW7vv/8JxINkjNCjQuikd3mhlbujO -hHXsP7cNzzPsv5M9zTbFGiOdi/mWqWGbDD0MIyj7DSVUgU1b6W0bFA6DsILA7c6C -UVwjVb1gGIiKHJyacAif9Imf3wkz7i30o9vy/i2a5ss8kMGTkZSfphM7TewXs2yp -Sw== +BwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEAbHUJCNxhvMhBERams39a +is0JAxSDyvEHdq6gGaRd/Qus+sAlDztrqoVCWKQZt3u93ddE5O/om7m5YolZ+SD4 +MbrVLtK3UApMNGnkyDxBjWjPqSxY4iZ/8g0J5EXRzC6MqUTgIVxo11V6GcIkLdmv +CJ9X9H0T8tkXUu4XiVFa1YwZqobhfwyTTvmzNrODMsYDXck9DkIMtWAyVFbJp47u +kgOthFvWEUfg8YIOLmL4JNp4dEtlxoUkkVEwrN2bRn/5sejTbmAlb+AHAfgCWlgt +yb30wLExuhaQj/lxGbP3RmqvVYZ/sokCLz6FXoJkRwRGpJaSe88fF8d/XuaXnWT4 +mg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/default-ee.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/default-ee.pem index 30997fe41a..67c2e98cfc 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/default-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIUX2FEDRO58iXdRl33gyrh4FGmtgkwDQYJKoZIhvcNAQEL +MIIDDDCCAfSgAwIBAgIUf2NeUHOnCqIv/VUCHGNSBG1JS8AwDQYJKoZIhvcNAQEL BQAwLzEtMCsGA1UEAwwkaW50ZXJtZWRpYXRlLXByZWxvYWRpbmctaW50ZXJtZWRp -YXRlMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMBkxFzAVBgNV +YXRlMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMBkxFzAVBgNV BAMMDmVlLmV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptu Gobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO @@ -10,10 +10,10 @@ qDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/yt HSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcx uLP+SSP6clHEMdUDrNoYCjXtjQIDAQABozIwMDATBgNVHSUEDDAKBggrBgEFBQcD ATAZBgNVHREEEjAQgg5lZS5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEA -lAQK/95aFuZPD5H50h3Ak96+zoSHe/gCj5ipC2rfus9sA9We0fB8gGqWQ65N1UmT -Rm1XUVF1kUbAOnSrIaZ7L4/7du6Q8ts2NA1nj44jfUu2wmED1GOUENSov+SblQq+ -zNcFwHSKpkhg9olHlTcm2zYdrT6o7Wk8jkzHTLbLftkxwWyWN/qJFebAyAyCbRLG -YfhewlWuetl5ockaQUXfDStVMz2l3J9rksscc4R7h4FOI2HPy1xwAhn3XmFpIcuu -GfrJ/r43RWHrULNyr0xREE7JBTna5VsL9qDhyd9oxJolI4TKU0tL5w+44hheDjCq -6e5C1Gx4T+ahbbjcDRRhsA== +Z2PMiKqNjKwAiYDySnv6B4W1m/xI5+r8EkqvMHwDWQdbPPeA/ILhH272pScN9j1L +Gy1PnRA3jPgT5noiBtQx/M891BBdcWMGBf1Tv0Lw/Tt7004YsyqQQUIJ8sfyXVNo +PSWRDsQy36qLJDgZo62mkur0wWEIjDrpnftiVVkspLR6IE8cTx6GQdcnqOk2zhVh +KW9yDG1nQCQRJjPiwTe5jnyPINyypreOUZSTNcJku2BcP9UWSbapnbeXKeML9hJl +ehD9Jt+6xRCLMSSGcegj7RqEv93M/Yxw/QTHWA43dbCS4anNiky61x5ExXvCrTEJ +CNOob+EcZR/6RDzU9rd9vQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/ee2.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/ee2.pem index 8e0176ad88..836708b097 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/ee2.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/ee2.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC5zCCAc+gAwIBAgIUK2VJnbUk+KvWCqk860kAtJQvt7EwDQYJKoZIhvcNAQEL +MIIC5zCCAc+gAwIBAgIUI8vKVU7mxFU8SBFrLykVLnsWwP0wDQYJKoZIhvcNAQEL BQAwMDEuMCwGA1UEAwwlaW50ZXJtZWRpYXRlLXByZWxvYWRpbmctaW50ZXJtZWRp -YXRlMjAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAOMQwwCgYD +YXRlMjAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAOMQwwCgYD VQQDDANlZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W 1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtq ZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx @@ -9,10 +9,10 @@ ZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx t2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo 4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx 1QOs2hgKNe2NAgMBAAGjFzAVMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3 -DQEBCwUAA4IBAQCunhVEio1iSFbVbxSYorDGUZc/EjE5t4eJ2pkTCIpd+f8v5uMR -97iZ1r7lEe1yL09yMsTyWnvzpMLwH0zGh/SgNYMiSYc6KOmjnJDksmdvD3nWdyJ6 -L8sglIm1xt8ARGpZVLZvITa75oPLy7dSMsmpVJmdvufBt2pch8QTiJNggpgX7LUQ -en/TaGrEDBns6wEI19oLCKoH3nM0Pq3jQM7UgEjQ66rFc6HUKh2JjkQAGosTPW+V -6d7bKr7xqcUAyeBw1rbMnR4rT7ymo89NLqRtUiTeTyGrzzR7FtxoKMfbrrQ8EZOP -wvAuLSgozVWfMUGjjwFc7mHqoOdTRISOsqz/ +DQEBCwUAA4IBAQBAAA5XARutjbNR+lj3du3K7z4k6gjTNvR5jM9YlnoOMlqIoP+g +ORIynQ3teRqVPhoIw+SHxXWYV1ZWHiPqO615DmosKqScBChYoTLgz3Qa2rqmnstu +w8w4mmihGcA2GGPcIuJLw5IfXnaEgqdR9ts2GlLRVOxK2njb68G91Zs6o0axMDK6 +GXiI6tomSmZqd/OM5E/FESm6vU2g4syqDRvdg2u7NHZ6PlxTB1mUOsI9RqG8FugR +KWTkxWVXlKbQ4tSrwoRCoDesxNUim6qDLFu4SQVCsya93/wVxIiGGFAfEKaSVjA/ +xvx82DoDuWmpiKOeT1QBKF0TCBAHwcvO2PLf -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int.pem index ef129c4bfc..88edf5cf78 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDAzCCAeugAwIBAgIUdcXOLGK3z58ij9em+xzmKcDjalkwDQYJKoZIhvcNAQEL +MIIDAzCCAeugAwIBAgIUXwi17guhYitXIOfsiU4p+BHCfAEwDQYJKoZIhvcNAQEL BQAwJTEjMCEGA1UEAwwaaW50ZXJtZWRpYXRlLXByZWxvYWRpbmctY2EwIhgPMjAy -NDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowLzEtMCsGA1UEAwwkaW50ZXJt +MzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowLzEtMCsGA1UEAwwkaW50ZXJt ZWRpYXRlLXByZWxvYWRpbmctaW50ZXJtZWRpYXRlMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -9,11 +9,11 @@ qyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5 kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRME -BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAPlfwbtWKXyDz -Vy5hFih9UWOc9jnsDLleL0FOrrH37DkYwv7VDKyBzt3DuutVMCg1dX+QQ9vV3KQY -vsi62HTPUwi2UYbxuDDjgbn+bD5R2fvEy9NCBgYDUZhiI7xyqU9NEJliPQzNXGXk -q8iFBhc4xVMeQ9MHzMofR6Elid5mhUN9oQXyHE2Pc6H+iQhuoVWxh2clLL+tlHIf -tq+z1fzkZ+laOAdsthkHC47b69hLzAWQPwhKpOwaktgufJ3e18vmyjMJG9V2tlBg -fiJCetHKTCHw4O0NEgfxu+8BALDDqDKbo5fnfw9/EPQZFSwR8vKs6iCQT01hoSWC -B+ImWMO+og== +BTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAlXfY6FJbHg72 +OqGmHjVKNSFVlrEup2eLnh8k/CSu+OIzFI67OP4gorHgnNlOOookOk3rWdq2BVu2 +bIK8thx1G8IOp0gGT34ym6loQZrBIaSybdpskfZyzU03anbNx4DQ7TTh3WAmwinU +SqS6e3jk61pwxU9x3f1td6qiEqPIxHSEkh0S+QDihMXqvZAyhn01IJVvpoH4KQ41 +EmXkydtZOR77iDW6DloFJeDbZMRgJ+VL6K0R2qcl6pasYndGYvDvR6+RWsCQVxC4 +Mu8xAk3zr93hc/ghGNU90QI7aTGkMj3ql7aPfMTrcgt4cMAuQkHh8O7q4XL2obbk +rNOo+Ux6Mw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int2.pem b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int2.pem index 636c623e1e..59a5ccd35c 100644 --- a/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int2.pem +++ b/icecat/security/manager/ssl/tests/unit/test_intermediate_preloads/int2.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDBTCCAe2gAwIBAgIUUX+9Wm+6Yxs2mgOznCN8jOIDQoswDQYJKoZIhvcNAQEL +MIIDBTCCAe2gAwIBAgIUT5PXF6e/s+qk5FIXcj1rU41tV7kwDQYJKoZIhvcNAQEL BQAwJjEkMCIGA1UEAwwbaW50ZXJtZWRpYXRlLXByZWxvYWRpbmctY2EyMCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMDAxLjAsBgNVBAMMJWludGVy +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMDAxLjAsBgNVBAMMJWludGVy bWVkaWF0ZS1wcmVsb2FkaW5nLWludGVybWVkaWF0ZTIwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wk e8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0Dgg @@ -9,11 +9,11 @@ KZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmI YXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7fi lhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbL HCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1Ud -EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQAKrhCxmEWB -S6sP45rCwUvC3gHlJ6iaaDxkTczpFCN5tiOR/KMCyNfRqpc9OKdc7ZlLydUOBBr+ -lXZ+LpQDTRzZDQUBzmNYNcQZlo/VCIkNOxhxl/l2L+06zfacYwR1jj9I1Rf/QGk3 -Ch89GkVol7FTlfZ+1d3pqzSkgZtuYqj/kgUDvDcyEJrltYgF7chwaZ4JekYEi5EM -Fp8A7OEFfstc0/aIKbl0FDZefmBacYofM8RLhvu6HbKFmkVdzH5Au5sXBoLUK6e7 -ykLAVN8+MGch0jkZPKSOzxr8TXyFEpo1OUo6UOC1p3oDt2SJdG31kFMcaEJuQAtr -HdCK4TPRx2fo +EwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQANA69M4uBI +D+X/+bAM8JCeVt6cEe9A846Rg8YQnGni5uPtV1n2WbF7vSAqP5OkgDceRjdDJ5bf +nLKIFbmCCthFGQtJs5buVH97u/bjzqI1Ft9URbYgLFH9peAxna1/Jg+d9iPzRAAt +w4aX8F7jv6An49A9ThfeUsaSykysKQiB9VI9324iUQRMiAmMph/IPJcbq6Oxlf3/ +AtkU2DkhyEEGBO0PKGLtLZvNzf6Ty8AgtBMuwMoB4p+OXkUDMuNVGwViKUE+ZetW +zTevu9phSyGVWlDsbzpAA9GBq/KA8VFOiMxcKTLMz069jYZdQ5udqnnP2EdXd+6y +Dc1QVTtK34sW -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1016-int_rsa_1024-root_rsa_1024.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1016-int_rsa_1024-root_rsa_1024.pem index 0a7ac49d54..62c51628b4 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1016-int_rsa_1024-root_rsa_1024.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1016-int_rsa_1024-root_rsa_1024.pem @@ -1,13 +1,13 @@ -----BEGIN CERTIFICATE----- -MIIB4DCCAUmgAwIBAgIUCYfiInH4OzXE7agh5y6x2hPyzZYwDQYJKoZIhvcNAQEL +MIIB4DCCAUmgAwIBAgIUBwhIE2+jlybV/X5+vJBaATn4rqUwDQYJKoZIhvcNAQEL BQAwJTEjMCEGA1UEAwwaaW50X3JzYV8xMDI0LXJvb3RfcnNhXzEwMjQwIhgPMjAy -NDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowMTEvMC0GA1UEAwwmZWVfcnNh +MzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowMTEvMC0GA1UEAwwmZWVfcnNh XzEwMTYtaW50X3JzYV8xMDI0LXJvb3RfcnNhXzEwMjQwgZ4wDQYJKoZIhvcNAQEB BQADgYwAMIGIAoGAANKbsS+4T93NKbOlGctmxDuNj4vlRbp5OEzmY+0D33WZFgDr kgeQ0lMM7OVE25mnHwWJaj7SBxZVNKqZBX5HxH47yBrab6HhLjcmi1BGpVJo+drX zLSF2BouGdUNTwtoVKyvbXvmnZoIMTbhWvqPU8HIyE/GB3J53Q5V1zaaW90CAwEA -ATANBgkqhkiG9w0BAQsFAAOBgQCmJjOoKgAPrKZwEmif6iUvojiKjp+A7wU4M21D -mAUQGU2Vyrw+YsE3y25EdozmLagkcj3d7b0WcATsRugm6dmTI+7RnVHE/BPDx+Pz -f0Qgv7b1VvMQ5Mc/c485imxGO9WUO8Pf4L6g4bhy9yioftQsYWiuAMG5n9+MXQkU -NBpf6w== +ATANBgkqhkiG9w0BAQsFAAOBgQCmKQ5BrQt86j1oFfF9h+3nNnlcMsd15S6DCtnH +zBtjMq0zdK71MyNFYknEbGeWTVvjymASs+0LoSbld5BpJi0u1W3hGO9Hz6ce/TfD +01OU/PXWHh3gu0ach2DwF3O+3TcLqF5AOQznuKVUhccVMsi6anM+H6P0ZnIZ58j7 +TLfTPg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1016-root_rsa_1024.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1016-root_rsa_1024.pem index a93a32791d..b326aac190 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1016-root_rsa_1024.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1016-root_rsa_1024.pem @@ -1,13 +1,13 @@ -----BEGIN CERTIFICATE----- -MIIB4DCCAUqgAwIBAgIUe7XVy7ExVy+j1aXh/IVF3zgDnKMwDQYJKoZIhvcNAQEL +MIIB4DCCAUqgAwIBAgIUXTpnuK+wIp1zN+y4E3BXgm7grS8wDQYJKoZIhvcNAQEL BQAwJTEjMCEGA1UEAwwaaW50X3JzYV8xMDE2LXJvb3RfcnNhXzEwMjQwIhgPMjAy -NDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowMTEvMC0GA1UEAwwmZWVfcnNh +MzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowMTEvMC0GA1UEAwwmZWVfcnNh XzEwMjQtaW50X3JzYV8xMDE2LXJvb3RfcnNhXzEwMjQwgZ8wDQYJKoZIhvcNAQEB BQADgY0AMIGJAoGBANOpdEAQHrqMXflQPm+TXrUv/rPr6dDcXKzib5c8qUy8DZwx 1mwMATvOnILQ1IAyjfBftrzXmQpTEt2uYVKtbuYcjBvdhmPGi9NiJKmIKueOifVW 39vm9R2mESy/wnyKSTNrQa/bdTIbUrJKc0TRNI5kY1GlUcdXHM2guP419hp1AgMB -AAEwDQYJKoZIhvcNAQELBQADgYAAgoT3/FwnvXSCBlCpROWNUkg+BZw5odHMi0hs -lYTESbNC5x2A0F8CMnKGAMpoy4TyyRcgKG63jbse9MeY3AlJqhdDFS2Y14SKIEJ7 -UI2yaCO+KtqcIerbhClrOQizAfxEabUVwDYKF38SKKkfC/yk2cl2XOOjPtZc/fOr -iE380A== +AAEwDQYJKoZIhvcNAQELBQADgYAAsMQcWd4H1A4dxsdhRtsgeqs7BPaGjKyNDFAU +1ro1zgHVkuUReMtTxLH1xJszjvkKWVHIP83DH4M439BS+oC3rcEDTrVDchdIsDQy +eorKyqkLRNe8eam4zmdIpA5WAOPUugwM88Outjsa6frdn3/XWK4AoTY1Y2QgRxBG +91/n4Q== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1016.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1016.pem index b97cdca008..e835b25005 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1016.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1016.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICRjCCAa+gAwIBAgIUXb9ekyv1ypo50Udelb2KsC2h2dcwDQYJKoZIhvcNAQEL +MIICRjCCAa+gAwIBAgIUdwi2mm46DWHGEh4kAhQ3V8xLbEUwDQYJKoZIhvcNAQEL BQAwJTEjMCEGA1UEAwwaaW50X3JzYV8xMDI0LXJvb3RfcnNhXzEwMTYwIhgPMjAy -NDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowEjEQMA4GA1UEAwwHcnNhMTAy +MzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowEjEQMA4GA1UEAwwHcnNhMTAy NDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogG NhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqn RYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHu p3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQ Lzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p 47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo1 -7Y0CAwEAATANBgkqhkiG9w0BAQsFAAOBgQDA6xSVOyTJzJEE04L14/ZE/hcljlBX -9UFGHKn6wgG9l6+/QuptmW2QpXAT3GX7p83YB4uUYPFFLaQRRhoDLJ9xDju1xYzX -sDL+HUekiIounV5kKEOM86N3laErkAFMYjtuelfF20AukeBH3hXT3YEDAsOklSR+ -yTQR1+c9Ftj20g== +7Y0CAwEAATANBgkqhkiG9w0BAQsFAAOBgQB6NyPPPlx5HkxO6YNYMVR2NvV0mcc2 +n4x57/Tqcq4WuGsEPAg2qeSVsdFFUW8/ejNmMThqvlOP6vc0HMVifmILp4f3SY2Y +VjkN5mNPYDYQXooIux4ZuF4HKwKvoUtZaT+oa7GDdLMCUAAcw5rWa2vJAbhNmZpL +6ZNGGx53qm2GKg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1024.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1024.pem index d9407a2b7f..11d627e354 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1024.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1024.pem @@ -1,13 +1,13 @@ -----BEGIN CERTIFICATE----- -MIIB4TCCAUqgAwIBAgIUYwSu5p3QRPCXOcSK32clC9Arl00wDQYJKoZIhvcNAQEL +MIIB4TCCAUqgAwIBAgIUT0G/4l9SWiWWfMxVrcvKc/I1vLMwDQYJKoZIhvcNAQEL BQAwJTEjMCEGA1UEAwwaaW50X3JzYV8xMDI0LXJvb3RfcnNhXzEwMjQwIhgPMjAy -NDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowMTEvMC0GA1UEAwwmZWVfcnNh +MzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowMTEvMC0GA1UEAwwmZWVfcnNh XzEwMjQtaW50X3JzYV8xMDI0LXJvb3RfcnNhXzEwMjQwgZ8wDQYJKoZIhvcNAQEB BQADgY0AMIGJAoGBANOpdEAQHrqMXflQPm+TXrUv/rPr6dDcXKzib5c8qUy8DZwx 1mwMATvOnILQ1IAyjfBftrzXmQpTEt2uYVKtbuYcjBvdhmPGi9NiJKmIKueOifVW 39vm9R2mESy/wnyKSTNrQa/bdTIbUrJKc0TRNI5kY1GlUcdXHM2guP419hp1AgMB -AAEwDQYJKoZIhvcNAQELBQADgYEAk6lIreo739yIxj7+hJtlCZJVNUM6DblTB8Ri -9d7SeorOPNesdiZ3A5IizHUasyKJoWkbUbE0Lk/hclwbEJAmyKcNKLAIjB0jevOW -glMUj1kUce7jtDvvCjvytLzGwg3ptXZVp2vp8vTLfSqQaDDUZOa3bDBJ/X2f4i6M -GLKL1h0= +AAEwDQYJKoZIhvcNAQELBQADgYEAQzYlPMXTqUx/l8B9r3LNR2/K3Da2Of/JKHgK +iYeeMpyJcLrKWOrzvlxrwArIuUQ/oNMufSK9BO/ZIeerGR/5X3pt6S1G+mjfBMxS +mHMejxFXALPo8Fc059LIJXYaGfhbhMmekd+GC5Co+TJCjhvfdXLDNit+zG6qJknT ++gDiX/4= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_rsa_2048.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_rsa_2048.pem index 8643c5953e..27104bd5d1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_rsa_2048.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_rsa_2048.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBXDCCAQOgAwIBAgIUFQtE1brGA+6e45UlFinhbRIrsZ4wCgYIKoZIzj0EAwIw +MIIBXDCCAQOgAwIBAgIUa6dHOz7wVeyTeTKoJXYyxh+DdtcwCgYIKoZIzj0EAwIw KjEoMCYGA1UEAwwfaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9yc2FfMjA0ODAiGA8y -MDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjA7MTkwNwYDVQQDDDBlZV9z +MDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjA7MTkwNwYDVQQDDDBlZV9z ZWNwMjI0cjFfMjI0LWludF9zZWNwMjU2cjFfMjU2LXJvb3RfcnNhXzIwNDgwTTAQ BgcqhkjOPQIBBgUrgQQAIQM5AARmjXLMpv1qGzVXtTZhBNhECOy2N/COjIa7/4LM 6I8AZtevY8Mpi6N3NIoSArA7N/1rH/QVqjEeMAoGCCqGSM49BAMCA0cAMEQCIFx1 -UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiABMaAs1bzpF0gRXH/WQ/TW -dQCUO8fW/IRcljTS42oAlg== +UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiAEGaMxNWNy7xlJpb93CidU +6qj71UaeltZ7natBnkVCFw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_secp256r1_256.pem index 64b97e3465..93408b69f7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp224r1_224-int_secp256r1_256-root_secp256r1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBZzCCAQ2gAwIBAgIUQXPxylAdM+PxqISJY4w1Bidd72AwCgYIKoZIzj0EAwIw +MIIBZzCCAQ2gAwIBAgIUVZn5Rq3DtaBegBl+3DsZzBAKf/gwCgYIKoZIzj0EAwIw LzEtMCsGA1UEAwwkaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjU2cjFfMjU2 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM NWVlX3NlY3AyMjRyMV8yMjQtaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjU2 cjFfMjU2ME0wEAYHKoZIzj0CAQYFK4EEACEDOQAEZo1yzKb9ahs1V7U2YQTYRAjs tjfwjoyGu/+CzOiPAGbXr2PDKYujdzSKEgKwOzf9ax/0FaoxHjAKBggqhkjOPQQD -AgNIADBFAiBcdVGfExFQzV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw5gIhAKaNNiS2 -UuiPSZWo//oqIBU8+wOn47aBKzzN4m1wr3YJ +AgNIADBFAiBcdVGfExFQzV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw5gIhAL66heou +cRPi+ev6a+/GdTPcecO3p3Y3pB8sOqTTq22F -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256k1_256-int_secp256r1_256-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256k1_256-int_secp256r1_256-root_secp256r1_256.pem index 47c576aa8c..585fbf2e87 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256k1_256-int_secp256r1_256-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256k1_256-int_secp256r1_256-root_secp256r1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBcDCCARagAwIBAgIUF1b4nm5RDs2zfH3BVMyrbOZ8fn4wCgYIKoZIzj0EAwIw +MIIBbzCCARagAwIBAgIUCYMal4f9SpaPcKI5GLAitYKBxdAwCgYIKoZIzj0EAwIw LzEtMCsGA1UEAwwkaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjU2cjFfMjU2 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM NWVlX3NlY3AyNTZrMV8yNTYtaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjU2 cjFfMjU2MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAENe58conY/veoav5dpm2Lwuu2 qFQ/0v6tCJ9FznrND6ZDgqlQDEHa13D/1LURv0tJLrEjiADDLE92xzo/MpTnxTAK -BggqhkjOPQQDAgNIADBFAiBcdVGfExFQzV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw -5gIhANH1BZfaGS+g4TA44QKYsl5Wv/D1NL93EW2NIWVziVV0 +BggqhkjOPQQDAgNHADBEAiBcdVGfExFQzV2K3iCjvAYwkf+yc3VfMWTs/ctCgApw +5gIgF2oqZzcOd05hQOhwOx3FmgqbJyosbK87o14rdT4Mjac= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_rsa_1016-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_rsa_1016-root_secp256r1_256.pem index 0b8ce1f896..1124ebb0a5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_rsa_1016-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_rsa_1016-root_secp256r1_256.pem @@ -1,11 +1,11 @@ -----BEGIN CERTIFICATE----- -MIIBqDCCARKgAwIBAgIUXWWq6rhj0Rq0u/4us9SgPYjL0/gwDQYJKoZIhvcNAQEL +MIIBqDCCARKgAwIBAgIUc3BnJ6TdEvb2ayXoCpBlHXp92oYwDQYJKoZIhvcNAQEL BQAwKjEoMCYGA1UEAwwfaW50X3JzYV8xMDE2LXJvb3Rfc2VjcDI1NnIxXzI1NjAi -GA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjA7MTkwNwYDVQQDDDBl +GA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjA7MTkwNwYDVQQDDDBl ZV9zZWNwMjU2cjFfMjU2LWludF9yc2FfMTAxNi1yb290X3NlY3AyNTZyMV8yNTYw WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARPv7u7YeD4+bGmClmshwTi7AULQj48 9y6SPyxPeUtFXCpp0jNFbDbEEZ0HBuAO7cjRk5DXmRt7LQejBOqgSqbAMA0GCSqG -SIb3DQEBCwUAA4GAADDdbm8m0UUaYlFkz6GgHH0dFvO8KKrwW4fKxSQGArBfglFh -nxmQh0j5uamevlBGH1f8ROjX9x/ViAPff+saieZIbLTYkaFpi0pG3SQ7YUEa20rm -T1HrE3gs4hnkg6HZh7NoNtre5a67eE9pmV0qie9EBMjpSjfX2+BiDNjTEtM= +SIb3DQEBCwUAA4GAAL4jq2Jnoul11Ece7pwF01C1PwLOfMvcwTMcfKxJOXOehJE2 +abjLRClQMMqpXyW8q4a8hEI0HGs3SFB/ukaz6mlafFHk59aSvhDS+8ijShDhsJqC +lLhVln76/fkvCUB3xGO2GAT1N77d0hLBop/jcx2k9HOlKdQvLOV6nFQgdns= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp224r1_224-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp224r1_224-root_secp256r1_256.pem index 1a1fdfe95a..e37e9ca3d4 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp224r1_224-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp224r1_224-root_secp256r1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBazCCARmgAwIBAgIUO7h/492QcIGrZXJIVxAIHyhkVcQwCgYIKoZIzj0EAwIw +MIIBbDCCARmgAwIBAgIUKYWnUYFR6N7+p/ZmdrvE3dK3VIcwCgYIKoZIzj0EAwIw LzEtMCsGA1UEAwwkaW50X3NlY3AyMjRyMV8yMjQtcm9vdF9zZWNwMjU2cjFfMjU2 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM NWVlX3NlY3AyNTZyMV8yNTYtaW50X3NlY3AyMjRyMV8yMjQtcm9vdF9zZWNwMjU2 cjFfMjU2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAET7+7u2Hg+PmxpgpZrIcE 4uwFC0I+PPcukj8sT3lLRVwqadIzRWw2xBGdBwbgDu3I0ZOQ15kbey0HowTqoEqm -wDAKBggqhkjOPQQDAgNAADA9Ah0Amjxv8EbbcPJV9S/WmFIc1y28BSBjT5W2S7JS -VAIcAYOLVwd5RMgd7DQ/T+jCrz86ahMZvKPDLs2qzA== +wDAKBggqhkjOPQQDAgNBADA+Ah0Amjxv8EbbcPJV9S/WmFIc1y28BSBjT5W2S7JS +VAIdAInBZp62yGlhsAgXtHd6pRDtKZi9G2vklGcKiT0= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp224r1_224.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp224r1_224.pem index 9a95696619..6151bf326f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp224r1_224.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp224r1_224.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBczCCARmgAwIBAgIUT909CQnE8TZ6lhBI98sAMn1hVYIwCgYIKoZIzj0EAwIw +MIIBczCCARmgAwIBAgIULetpe+rKizZplgXepLg1AVb9PVYwCgYIKoZIzj0EAwIw LzEtMCsGA1UEAwwkaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjI0cjFfMjI0 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM NWVlX3NlY3AyNTZyMV8yNTYtaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjI0 cjFfMjI0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAET7+7u2Hg+PmxpgpZrIcE 4uwFC0I+PPcukj8sT3lLRVwqadIzRWw2xBGdBwbgDu3I0ZOQ15kbey0HowTqoEqm wDAKBggqhkjOPQQDAgNIADBFAiBcdVGfExFQzV2K3iCjvAYwkf+yc3VfMWTs/ctC -gApw5gIhAO/vMeISZaWL3+8bQiGmHKoW8AEGG09lZ1THu0l2olqP +gApw5gIhAIX7tHVdtRxfl1In2XEUwLxnEE9yLjeyeFT90J1R1J/y -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp256k1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp256k1_256.pem index 87cc261eeb..12e3b83b43 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp256k1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp256r1_256-int_secp256r1_256-root_secp256k1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBczCCARmgAwIBAgIUac8KffRSk8HUZfLhZIwrfOvJleAwCgYIKoZIzj0EAwIw +MIIBcjCCARmgAwIBAgIUG+VW2+Pm/N8BosOHC27EanWzFJowCgYIKoZIzj0EAwIw LzEtMCsGA1UEAwwkaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjU2azFfMjU2 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM NWVlX3NlY3AyNTZyMV8yNTYtaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9zZWNwMjU2 azFfMjU2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAET7+7u2Hg+PmxpgpZrIcE 4uwFC0I+PPcukj8sT3lLRVwqadIzRWw2xBGdBwbgDu3I0ZOQ15kbey0HowTqoEqm -wDAKBggqhkjOPQQDAgNIADBFAiBcdVGfExFQzV2K3iCjvAYwkf+yc3VfMWTs/ctC -gApw5gIhAJik2kK0ulU/BR4C+HEQz7OQzcYqaVIBzOTpnL3bTMgd +wDAKBggqhkjOPQQDAgNHADBEAiBcdVGfExFQzV2K3iCjvAYwkf+yc3VfMWTs/ctC +gApw5gIgO3M4zkU2mPqfJHRkukwqMqxyRKpPgBtFWUNy+N2apeE= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp384r1_384-int_secp256r1_256-root_rsa_2048.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp384r1_384-int_secp256r1_256-root_rsa_2048.pem index e107476060..48eaf62770 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp384r1_384-int_secp256r1_256-root_rsa_2048.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp384r1_384-int_secp256r1_256-root_rsa_2048.pem @@ -1,11 +1,11 @@ -----BEGIN CERTIFICATE----- -MIIBhTCCASygAwIBAgIUN2uE4zgq/iySzMq9qJac1r4K8YgwCgYIKoZIzj0EAwIw +MIIBhjCCASygAwIBAgIUcdm89/A8mLQ8+niczw+Ft03yWpcwCgYIKoZIzj0EAwIw KjEoMCYGA1UEAwwfaW50X3NlY3AyNTZyMV8yNTYtcm9vdF9yc2FfMjA0ODAiGA8y -MDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjA7MTkwNwYDVQQDDDBlZV9z +MDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjA7MTkwNwYDVQQDDDBlZV9z ZWNwMzg0cjFfMzg0LWludF9zZWNwMjU2cjFfMjU2LXJvb3RfcnNhXzIwNDgwdjAQ BgcqhkjOPQIBBgUrgQQAIgNiAAShaHJDNitcexiJ83kVRhWhxz+0je6GPgIpFdtg jiUt5LcTLajOmOgxU05qnAwLCcjWOa3oMgbluoE0c6EfozDgXajJbkOD/ieHPalx -A74oiM/wAvBa9xof3cyDdKpuqc4wCgYIKoZIzj0EAwIDRwAwRAIgXHVRnxMRUM1d -it4go7wGMJH/snN1XzFk7P3LQoAKcOYCICavO/Kn1xHRZzta0QJCAsL31sAZOCnj -lkYqG+mQVIe0 +A74oiM/wAvBa9xof3cyDdKpuqc4wCgYIKoZIzj0EAwIDSAAwRQIgXHVRnxMRUM1d +it4go7wGMJH/snN1XzFk7P3LQoAKcOYCIQDVgbWlk5bQFmpCfAaiu2o5RjQmUgm5 +U8zqrYgCBBWmJA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp521r1_521-int_secp384r1_384-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp521r1_521-int_secp384r1_384-root_secp256r1_256.pem index 8692a3e68d..f475109096 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp521r1_521-int_secp384r1_384-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/ee_secp521r1_521-int_secp384r1_384-root_secp256r1_256.pem @@ -1,12 +1,12 @@ -----BEGIN CERTIFICATE----- -MIIB1zCCAVygAwIBAgIUVQEfU9zXVgF2Zi85mRSJKJOuZfMwCgYIKoZIzj0EAwIw +MIIB1zCCAVygAwIBAgIUQ71LUQlST7zMjsbhpGK/fyiJxt4wCgYIKoZIzj0EAwIw LzEtMCsGA1UEAwwkaW50X3NlY3AzODRyMV8zODQtcm9vdF9zZWNwMjU2cjFfMjU2 -MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM +MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEAxPjA8BgNVBAMM NWVlX3NlY3A1MjFyMV81MjEtaW50X3NlY3AzODRyMV8zODQtcm9vdF9zZWNwMjU2 cjFfMjU2MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBTNycrMR5QQlrycxmdS7C f1l3NPpmxit5L4jFGdbTfw0W6hxIOhgnoBC5Eo46CAcMoz719Xg1t8G6JR9sw1Id xCsBBlNFGYG0RdND7tN4KjXWz/D/SE9aiD0gnxuQQrcmcDVosvMm4YuDO92KoHND krzRlQHhDWmKefU+EeCiK90qrZAwCgYIKoZIzj0EAwIDaQAwZgIxAO0GJz6haDpU -tNgaQ3SESJY85j6+gRcD7Nc9cvCiVAZZ1OxFRuhW515lVbeTqfcA8wIxAM9pfqrX -5d0W5NWIaHjGFfjnmIrn4WLCqs6WcklKYnQWjvrvjeZ7ycpYSKw0H7mgbw== +tNgaQ3SESJY85j6+gRcD7Nc9cvCiVAZZ1OxFRuhW515lVbeTqfcA8wIxAMhDmtvH +zCl1MH/lR8YYCnzOIDPlaILQRMmH4Ani+T04zojTWuhZN4iNZV31DQ+n/A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_rsa_1024.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_rsa_1024.pem index 0198ab1969..5aa1ab65bc 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_rsa_1024.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_rsa_1024.pem @@ -1,13 +1,13 @@ -----BEGIN CERTIFICATE----- -MIIB5jCCAU+gAwIBAgIUGwn5E4OM9BZ2AlUwWHBvwBo65iowDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAyNDAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBppbnRfcnNhXzEwMTYtcm9vdF9y +MIIB5jCCAU+gAwIBAgIUdf5MQy/RUy9RsbcsFZUAuUbfpXAwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAyNDAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBppbnRfcnNhXzEwMTYtcm9vdF9y c2FfMTAyNDCBnjANBgkqhkiG9w0BAQEFAAOBjAAwgYgCgYAA0puxL7hP3c0ps6UZ y2bEO42Pi+VFunk4TOZj7QPfdZkWAOuSB5DSUwzs5UTbmacfBYlqPtIHFlU0qpkF fkfEfjvIGtpvoeEuNyaLUEalUmj52tfMtIXYGi4Z1Q1PC2hUrK9te+admggxNuFa +o9TwcjIT8YHcnndDlXXNppb3QIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1Ud -DwQEAwIBBjANBgkqhkiG9w0BAQsFAAOBgQCXomWMW6je8G4P8HFkfF6mgHR2e1dD -aOoLNVRIAkAh1qPqXvpiVpoYQEOEYdLyn06qhXHLjT0VdyOWHR866gUqHys9hDwJ -QQkxIa4omCeA3utUlG1rWNb4e19XiZgNuyMvdStvSqBr0dWNpwgnIBJl5A6rrRvA -iy7S+yxR/Db2nw== +DwQEAwIBBjANBgkqhkiG9w0BAQsFAAOBgQCJeQcX18UreqbhE/UE8s9IJ59RtbMd +KPe4zXXx1whOE84+CFS4WPcj93sIXFE4kfKBlcYmekQAV/pprlurD6Hil9GrP4sW +8o8+vaL/u4o1ZIAwq4u8ccANuYaDTnT0RncAEXDFNc8kCX9fb0VIBvs2r33Ruifk +SWECiSU1/cN3tA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_secp256r1_256.pem index f491dfec0e..cc101d9a55 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_secp256r1_256.pem @@ -1,12 +1,12 @@ -----BEGIN CERTIFICATE----- -MIIBrzCCAVagAwIBAgIUV9DRFSnsPCQxtMmyHLwQfJYYbEwwCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMCoxKDAmBgNVBAMMH2ludF9yc2FfMTAxNi1yb290 +MIIBrzCCAVagAwIBAgIUb99quEVPIizUNfdTMVJLYI+hirAwCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMCoxKDAmBgNVBAMMH2ludF9yc2FfMTAxNi1yb290 X3NlY3AyNTZyMV8yNTYwgZ4wDQYJKoZIhvcNAQEBBQADgYwAMIGIAoGAANKbsS+4 T93NKbOlGctmxDuNj4vlRbp5OEzmY+0D33WZFgDrkgeQ0lMM7OVE25mnHwWJaj7S BxZVNKqZBX5HxH47yBrab6HhLjcmi1BGpVJo+drXzLSF2BouGdUNTwtoVKyvbXvm nZoIMTbhWvqPU8HIyE/GB3J53Q5V1zaaW90CAwEAAaMdMBswDAYDVR0TBAUwAwEB /zALBgNVHQ8EBAMCAQYwCgYIKoZIzj0EAwIDRwAwRAIgXHVRnxMRUM1dit4go7wG -MJH/snN1XzFk7P3LQoAKcOYCIH7vqUpkGSUntYqXE7KGvcYrb4EFaTNVVl3b7ILQ -u6W0 +MJH/snN1XzFk7P3LQoAKcOYCIFLdcACzDSgDwzAWTtNvyJPxB6OsZWC2yUGEC8/5 +bRKb -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1016.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1016.pem index 3a410d1389..fef60e85b3 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1016.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1016.pem @@ -1,13 +1,13 @@ -----BEGIN CERTIFICATE----- -MIIB5jCCAVCgAwIBAgIUf1QNP1JR9OJJABy6IWwo1qvGdFYwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAxNjAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBppbnRfcnNhXzEwMjQtcm9vdF9y +MIIB5jCCAVCgAwIBAgIUQeeFjD/GjmIV/GJm6KKYfekDfugwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAxNjAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBppbnRfcnNhXzEwMjQtcm9vdF9y c2FfMTAxNjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA06l0QBAeuoxd+VA+ b5NetS/+s+vp0NxcrOJvlzypTLwNnDHWbAwBO86cgtDUgDKN8F+2vNeZClMS3a5h Uq1u5hyMG92GY8aL02IkqYgq546J9Vbf2+b1HaYRLL/CfIpJM2tBr9t1MhtSskpz RNE0jmRjUaVRx1cczaC4/jX2GnUCAwEAAaMdMBswDAYDVR0TBAUwAwEB/zALBgNV -HQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADgYAAq5A4TyskFWUEctdZoA6OnODX0thW -9aQ+yj8Snfg7uZElQJINzj+wxrvmMCvWmhI6b743pp7TIMiRgdyUS3ggOuXRf2iS -CbSkP2webEUGOFC+ojqSQjWvY4dL4T/ybqKRAl5LkufZOG9QYBBGG9hNNwvnIoGe -ssFspKE9xWW8PA== +HQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADgYAAb5YUsO9jxaAF8gl5uu7b8yWCB2DO +ZTxgm2Gt49qh9fH5JvxPkk3LSp2ZEhs2q1UA93dx7/o6bk4zDP25e1thMkHcGac1 +Dz+y3rb6rEKj0pDzBD28B8ZvSyZf+c7qnME3De/6SHAJtilN7nSkP9gUY2wMlRD8 ++DhY+I7DvkMVnQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1024.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1024.pem index 9315babbe6..f5dd57b2b5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1024.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1024.pem @@ -1,13 +1,13 @@ -----BEGIN CERTIFICATE----- -MIIB5zCCAVCgAwIBAgIUB79FN4d4Vx/0wxw4njKQAtBEsjQwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAyNDAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBppbnRfcnNhXzEwMjQtcm9vdF9y +MIIB5zCCAVCgAwIBAgIUJ8oAhuPA76mWhm0E+APQGdSH3VQwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAyNDAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAlMSMwIQYDVQQDDBppbnRfcnNhXzEwMjQtcm9vdF9y c2FfMTAyNDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA06l0QBAeuoxd+VA+ b5NetS/+s+vp0NxcrOJvlzypTLwNnDHWbAwBO86cgtDUgDKN8F+2vNeZClMS3a5h Uq1u5hyMG92GY8aL02IkqYgq546J9Vbf2+b1HaYRLL/CfIpJM2tBr9t1MhtSskpz RNE0jmRjUaVRx1cczaC4/jX2GnUCAwEAAaMdMBswDAYDVR0TBAUwAwEB/zALBgNV -HQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADgYEAzFADcWsYM5/pcqhTT2kwMi8/TzR4 -S8cYPe2EusBV+nJ/2ymDf+KzF+XvV6nc12e1qpbvsGlPMpEQoDD5/gFsHAnh7VYV -WZpei9YwfCar02HHiCjOU52mNw+hweaKmRn6VA/yfY2tKma45+R1MXNgA98F0YbG -Fb2ebWI2DUuDQBE= +HQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADgYEAr5z3eMscPxv+hxcSgD1AA4eDI3qj +ReGes7HCAxdmnrsE4d5NpGXEZT03iUfab0xg6n0dLixgMxZcTWDAudTK5hnMLu2W +3FeWWg+CDt8LMO8iMyINVEsouFiQ1hAYRF34x4dqwKFhBa/8G0Tfx+AMJmJjb+mE +DK630vF3kRLmpv4= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp224r1_224-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp224r1_224-root_secp256r1_256.pem index 49fef7311b..26964f59d5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp224r1_224-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp224r1_224-root_secp256r1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBYzCCAQmgAwIBAgIUK63aFajNJyBNiUnnV4G/siUCpW8wCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjI0cjFfMjI0 +MIIBYzCCAQmgAwIBAgIUcS2VgZFB6XhcdiQ0U/I7WOlDeSwwCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjI0cjFfMjI0 LXJvb3Rfc2VjcDI1NnIxXzI1NjBNMBAGByqGSM49AgEGBSuBBAAhAzkABGaNcsym /WobNVe1NmEE2EQI7LY38I6Mhrv/gszojwBm169jwymLo3c0ihICsDs3/Wsf9BWq MR6jHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoGCCqGSM49BAMCA0gA -MEUCIFx1UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiEAt/PNNWAaNUrf -bdosQal1E/6RxDR2u4ynz57Wesz1Mv8= +MEUCIFx1UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiEA5vTxoY0rrAjK +sa3pWbXeGWP9Zh6OV8c5PSyLBkLmvww= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_rsa_2048.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_rsa_2048.pem index 20a704df2e..2774bffc73 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_rsa_2048.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_rsa_2048.pem @@ -1,14 +1,14 @@ -----BEGIN CERTIFICATE----- -MIICJjCCAQ6gAwIBAgIUM6YQ/EbGV0RLV4sIXuxgSQGXVwcwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMjA0ODAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAqMSgwJgYDVQQDDB9pbnRfc2VjcDI1NnIxXzI1Ni1y +MIICJjCCAQ6gAwIBAgIUT9IlEXhdtMb7sAzKXMTlZMZFgFAwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMjA0ODAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAqMSgwJgYDVQQDDB9pbnRfc2VjcDI1NnIxXzI1Ni1y b290X3JzYV8yMDQ4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAET7+7u2Hg+Pmx pgpZrIcE4uwFC0I+PPcukj8sT3lLRVwqadIzRWw2xBGdBwbgDu3I0ZOQ15kbey0H owTqoEqmwKMdMBswDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcN -AQELBQADggEBAEnRi89ZBQHEzmYj+RT5NPjhadtw55+ZO4djcddopA/6nbAEq+wI -V3biM2WD5P28/Kz9oFpf4i/ONWULu6gNlvySDqFXUKRc3oTSMPN05yyUG918GJMR -bkwZev77QxNLn8oqK4b7H4a27sNrnfaE7L3tgdLNj3knOUuBI3bN7YjaxZymMdos -K4MH1xIZQZPsCpzRStmwFwRdGMXqfQzQxEhZw48Y9QbvcF20gAb15UGVyeHGzWaR -DERMr/GyzGrS0IoKn7rG9+Dk1IoItGL3O07MoyzWS9kG0ddnoLtbOX2s4dgDHmdQ -IKRUD28JKAxwE0P6+r2fWuVyd219TKrQmpQ= +AQELBQADggEBAA4i22CJt5ta5N2G+SEk+SYHuD0bnLVx8TEvZTIwnp91yYywbvMz +s1Oi4wq+nZRw1BUfaf+MU+Bcv2FAM3f6Jco5Q1daY2ggNahahohA2EiuV+3tQe1/ +muN+7Zin+25HgHUlI3nGyfjO0LbbC7NCGP/VthM+htP8Z8zVpq1PLQxW8uaNp/Ki +hdIVXehn86qco2pMCZMzsU1T6K/Fby4B7BU2I+qnXlYwaOoVm6gNAosM0HwpcWoz ++YhaTyWdu6btChWUITOdxOpi1cN4VAVyF6sPeyMZXoi+OoKTEaFDhpuOzn4dF1ap +ADZbzRVqDSYN/pok537wEPnuA+u7ypuLbCs= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp224r1_224.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp224r1_224.pem index 8b8a7a27a0..d7c686e621 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp224r1_224.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp224r1_224.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBaDCCARWgAwIBAgIUAwhaRoCf3v2YwFZALg1p8TerqzMwCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjI0cjFfMjI0MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjU2cjFfMjU2 +MIIBZzCCARWgAwIBAgIUP347nYeoJHOTbFt4VjrYinX38RMwCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjI0cjFfMjI0MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjU2cjFfMjU2 LXJvb3Rfc2VjcDIyNHIxXzIyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE+/ u7th4Pj5saYKWayHBOLsBQtCPjz3LpI/LE95S0VcKmnSM0VsNsQRnQcG4A7tyNGT kNeZG3stB6ME6qBKpsCjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoG -CCqGSM49BAMCA0EAMD4CHQCaPG/wRttw8lX1L9aYUhzXLbwFIGNPlbZLslJUAh0A -1zGjvhIvSJNox2wTyWuJBn8MeA6iORgKuKy09Q== +CCqGSM49BAMCA0AAMD0CHQCaPG/wRttw8lX1L9aYUhzXLbwFIGNPlbZLslJUAhwx +VKC26dvtqkBLcXjVRbNXlmp3DRtQ68VeEs5E -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256k1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256k1_256.pem index aea56c185c..92033de85f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256k1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256k1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBbzCCARWgAwIBAgIUa55QPsmd8KnWy4YcxgTUAf0b0wIwCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2azFfMjU2MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjU2cjFfMjU2 +MIIBbzCCARWgAwIBAgIUIX/voITWPLk6MLMZVjIWvo76fuUwCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2azFfMjU2MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjU2cjFfMjU2 LXJvb3Rfc2VjcDI1NmsxXzI1NjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE+/ u7th4Pj5saYKWayHBOLsBQtCPjz3LpI/LE95S0VcKmnSM0VsNsQRnQcG4A7tyNGT kNeZG3stB6ME6qBKpsCjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoG CCqGSM49BAMCA0gAMEUCIFuwodUwyOUnIR4KN5ZCSrU7y4iz4/1EWRdHm5kWKi8d -AiEAtupoOPhNaisT09c53LtOKSqoeteNmN0AUyxTfER/wHY= +AiEA2LkceKPJ2qAUd8/0ySLSthB0WmXTIZv+UpUAPJ+P5mA= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256r1_256.pem index 2c8be2054e..278389e36e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp256r1_256-root_secp256r1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBbjCCARWgAwIBAgIUafVdIv5Wx/j1yvKORLmKpI0ee+gwCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjU2cjFfMjU2 +MIIBbzCCARWgAwIBAgIUNzgR83h3Xdpvh+mc338QLP569+YwCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMjU2cjFfMjU2 LXJvb3Rfc2VjcDI1NnIxXzI1NjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE+/ u7th4Pj5saYKWayHBOLsBQtCPjz3LpI/LE95S0VcKmnSM0VsNsQRnQcG4A7tyNGT kNeZG3stB6ME6qBKpsCjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoG -CCqGSM49BAMCA0cAMEQCIFx1UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDm -AiBMlPQOCsYARW2udv03Nze8RDYNCsA79tYB8IoECAMkyQ== +CCqGSM49BAMCA0gAMEUCIFx1UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDm +AiEAiHC18PB0OSIjlIoMJyBSPCC3UYdigT8KJI3wYFsBVjY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp384r1_384-root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp384r1_384-root_secp256r1_256.pem index 0345733377..f02680a7d5 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp384r1_384-root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/int_secp384r1_384-root_secp256r1_256.pem @@ -1,11 +1,11 @@ -----BEGIN CERTIFICATE----- -MIIBjDCCATKgAwIBAgIUVfyBYhB2nApXQEGjJRIxS5FEbXYwCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMzg0cjFfMzg0 +MIIBizCCATKgAwIBAgIUHzeEs5qEc3VZDYOKwtrnUgdH5vkwCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMC8xLTArBgNVBAMMJGludF9zZWNwMzg0cjFfMzg0 LXJvb3Rfc2VjcDI1NnIxXzI1NjB2MBAGByqGSM49AgEGBSuBBAAiA2IABKFockM2 K1x7GInzeRVGFaHHP7SN7oY+AikV22COJS3ktxMtqM6Y6DFTTmqcDAsJyNY5regy BuW6gTRzoR+jMOBdqMluQ4P+J4c9qXEDviiIz/AC8Fr3Gh/dzIN0qm6pzqMdMBsw -DAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwCgYIKoZIzj0EAwIDSAAwRQIgXHVR -nxMRUM1dit4go7wGMJH/snN1XzFk7P3LQoAKcOYCIQD7YBl2Nf4AFTPf2nVfCI0X -hZ3dJ4UXfp0CdSvTwd6wIA== +DAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwCgYIKoZIzj0EAwIDRwAwRAIgXHVR +nxMRUM1dit4go7wGMJH/snN1XzFk7P3LQoAKcOYCIF7n+MlPu+VkpeG9Rt6Ko3o5 ++eRyE/LgU4F919vHnnob -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1016.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1016.pem index 038dde0dce..3370b62f72 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1016.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1016.pem @@ -1,12 +1,12 @@ -----BEGIN CERTIFICATE----- -MIIB2DCCAUKgAwIBAgIUNTR7G3cErkEXoKBIUwTrcKN0zKQwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAxNjAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1yb290X3JzYV8xMDE2MIGeMA0G +MIIB2DCCAUKgAwIBAgIUZ0lRFDOQFWvSB9qLhNqK9tJ3lYkwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAxNjAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1yb290X3JzYV8xMDE2MIGeMA0G CSqGSIb3DQEBAQUAA4GMADCBiAKBgADSm7EvuE/dzSmzpRnLZsQ7jY+L5UW6eThM 5mPtA991mRYA65IHkNJTDOzlRNuZpx8FiWo+0gcWVTSqmQV+R8R+O8ga2m+h4S43 JotQRqVSaPna18y0hdgaLhnVDU8LaFSsr2175p2aCDE24Vr6j1PByMhPxgdyed0O Vdc2mlvdAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqG -SIb3DQEBCwUAA4GAAID5Gw+ezYIvlTAUWkrHMwt7lqNXpRp/BUV0AXMittZNBKyJ -xoydp5C/CrE//KWcNxrcHNCITAdQvO42UDOya+b0HnlAwdMm2iyqDqfpa05HHnsz -SSWkst5yWWuuO1yWwOvHtdudjzvu4AGVkf0wWUNsChgstqeBNai/Gxy33hc= +SIb3DQEBCwUAA4GAAHu5DYGuUmUsL8RGfKhpHVoXYLrrFeVHgGYgd79pNKaRgbhB +AljAndR48459tdlMLCPwYLyKjc1fokBxEBgy/xNGYwE/qiUTt2iPwl/3E7LEcgg4 +yKh8Vq9LCCyzonMPdLy4pyQcyqODldJnY5GvSvBm3LGXfkZX2F7AMrWIX4E= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1024.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1024.pem index e97fae4c9b..5a5257b744 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1024.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_1024.pem @@ -1,12 +1,12 @@ -----BEGIN CERTIFICATE----- -MIIB2jCCAUOgAwIBAgIUUVIpbNqePZ+8yEHoqIPrLXRcru4wDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAyNDAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1yb290X3JzYV8xMDI0MIGfMA0G +MIIB2jCCAUOgAwIBAgIUETJh6L2CYO8EE8FWQljdk5J74lEwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMTAyNDAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1yb290X3JzYV8xMDI0MIGfMA0G CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTqXRAEB66jF35UD5vk161L/6z6+nQ3Fys 4m+XPKlMvA2cMdZsDAE7zpyC0NSAMo3wX7a815kKUxLdrmFSrW7mHIwb3YZjxovT YiSpiCrnjon1Vt/b5vUdphEsv8J8ikkza0Gv23UyG1KySnNE0TSOZGNRpVHHVxzN oLj+NfYadQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkq -hkiG9w0BAQsFAAOBgQCK6eOhs12Syjr1c5qdlM6Sad7VcT29Y/Zy38n9kbo0hz/Z -B4aLZVznxrPzBVKzl0k1kpfteJuuJoX9dFNbmFhQajBGRn2gMJXTKXtADbfdHG1x -zXF07GSxn5D3TGJTtJzR4IcHSJxgfihpylZIVUolDklnlqeucPYakRRHeTkINA== +hkiG9w0BAQsFAAOBgQDL69ZPYRqbVR30UPLDA8q0lJeOzfic5DUm7HSg1BQbTZ2t +tP8JTq82kq3hf2nKNks8Phncn9MUfcxtQqTumSAcdaLD9GYJn8aAEU7FVT3rBtKJ +KnroYZIQk1tTLdTJNwQiPhrhb4cjPz/AVoysTmd5mCYfA54iq3rq7f+IA8RFUw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_2048.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_2048.pem index 15fb97252e..1258876c2d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_2048.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/root_rsa_2048.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC3zCCAcegAwIBAgIUa6ONouBQjX1ZWBcWeEvZW+EbIPIwDQYJKoZIhvcNAQEL -BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMjA0ODAiGA8yMDI0MTEyNzAwMDAwMFoY -DzIwMjcwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1yb290X3JzYV8yMDQ4MIIBIjAN +MIIC3zCCAcegAwIBAgIUb+8Akcb9XswY8g/v0HL40Agu1uUwDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNcm9vdF9yc2FfMjA0ODAiGA8yMDIzMTEyODAwMDAwMFoY +DzIwMjYwMjA1MDAwMDAwWjAYMRYwFAYDVQQDDA1yb290X3JzYV8yMDQ4MIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq 5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SSc An7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39 @@ -9,10 +9,10 @@ ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYk zBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3u JtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQAB ox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOC -AQEABJ9yHJ2r+bk5oDP1yLrmWyt15JiNzPBX2ShBYyXzv4STNVee38kLK79zY0i2 -LZD3oY6CqtuLaRFVP8t9gMhXXDx/8YCK2ybv+2Cwz+ZcY2ugHRixpDt6411/U/Nl -sbXxuqd67zNe/ULpQvyYuR8Io3BwoC9eFaTivP8dtwgimHsfimr8uMFjdd8WEpwJ -EiJWXWxLAxaZceUhTFDQ1LKCF+vb5djFBZOfbeJEJdiYT6yskhYcMItOJRBKu6UR -kkymomgQbV6ZaqfRaGjaakyAp/aX2k1yBT6V5cS3bkGLn3jhjI4N61RNGCeVic4Q -F0tEK7mVwk+XZDEmcj5Ybv+1fw== +AQEAkmb1hURNpeLFePtIjpNsP+vInKAhs9GEmOqGiCYuDCEI6u6NMNlIDNN6Zzrs +NV633nYyJ8akAsBp9QB8I+YsMw8juBunMFlULFLBFaYBQotJ9mDRgoY6TgcV8Kp2 +zcSKA5LmeO5E5PosqJs2b8TPvX9vH3cNsVqMeN+HURX5p01wHfYewutFP7H2Un/+ +HS0GB7OanjR9A/Gq/82YUnxgH6ocUB/7rsfWV950xcNVoJ9DkC7tQgWJ/XEOT4Hi +moobPh/+5WU8lOxE8zCRYTBZQKQAkHlfq3XX3DcI5Y0WGsqVi51Y5TiCqZ91Wogd +vdl+kIot2R3grEl9F5YkQXBi7Q== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp224r1_224.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp224r1_224.pem index b3d0d5f887..da48c55bad 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp224r1_224.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp224r1_224.pem @@ -1,9 +1,9 @@ -----BEGIN CERTIFICATE----- -MIIBSDCB96ADAgECAhRZUvtAw2pKMBLlAQmnv/Hrkrtr7TAKBggqhkjOPQQDAjAd -MRswGQYDVQQDDBJyb290X3NlY3AyMjRyMV8yMjQwIhgPMjAyNDExMjcwMDAwMDBa -GA8yMDI3MDIwNTAwMDAwMFowHTEbMBkGA1UEAwwScm9vdF9zZWNwMjI0cjFfMjI0 +MIIBSTCB96ADAgECAhQfy9g7Wie0zRJaEQhg7ihoolYcSzAKBggqhkjOPQQDAjAd +MRswGQYDVQQDDBJyb290X3NlY3AyMjRyMV8yMjQwIhgPMjAyMzExMjgwMDAwMDBa +GA8yMDI2MDIwNTAwMDAwMFowHTEbMBkGA1UEAwwScm9vdF9zZWNwMjI0cjFfMjI0 ME0wEAYHKoZIzj0CAQYFK4EEACEDOQAEZo1yzKb9ahs1V7U2YQTYRAjstjfwjoyG u/+CzOiPAGbXr2PDKYujdzSKEgKwOzf9ax/0FaoxHqMdMBswDAYDVR0TBAUwAwEB -/zALBgNVHQ8EBAMCAQYwCgYIKoZIzj0EAwIDQAAwPQIdAJo8b/BG23DyVfUv1phS -HNctvAUgY0+VtkuyUlQCHE8KF5fmnFZDnlBQjMtLKefxvEpadKhBYlauYsc= +/zALBgNVHQ8EBAMCAQYwCgYIKoZIzj0EAwIDQQAwPgIdAJo8b/BG23DyVfUv1phS +HNctvAUgY0+VtkuyUlQCHQCNusgwS5IYCGxsx+ClElyjEb+yppZfHl/U82oq -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256k1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256k1_256.pem index 688bc6dead..9adee743a8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256k1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256k1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBWjCCAQCgAwIBAgIUN4U5bSELAT3tO/52u78jRUefzXMwCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2azFfMjU2MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMB0xGzAZBgNVBAMMEnJvb3Rfc2VjcDI1NmsxXzI1 +MIIBWTCCAQCgAwIBAgIUQdSkK/cWgbYmm+ed4EgmfQnn4XowCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2azFfMjU2MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMB0xGzAZBgNVBAMMEnJvb3Rfc2VjcDI1NmsxXzI1 NjBWMBAGByqGSM49AgEGBSuBBAAKA0IABDXufHKJ2P73qGr+XaZti8LrtqhUP9L+ rQifRc56zQ+mQ4KpUAxB2tdw/9S1Eb9LSS6xI4gAwyxPdsc6PzKU58WjHTAbMAwG -A1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIFuwodUw -yOUnIR4KN5ZCSrU7y4iz4/1EWRdHm5kWKi8dAiEAhL2fALDoQFMbqH1J5MhBqxG7 -s6BebxILspTJ38trV6E= +A1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoGCCqGSM49BAMCA0cAMEQCIFuwodUw +yOUnIR4KN5ZCSrU7y4iz4/1EWRdHm5kWKi8dAiAUVi4Og3BjjXy1OaoapGyMCsdU +VSlhDt4Cs+Aj03ePFw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256r1_256.pem b/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256r1_256.pem index c63fb9769f..da8c86e5d0 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256r1_256.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize/root_secp256r1_256.pem @@ -1,10 +1,10 @@ -----BEGIN CERTIFICATE----- -MIIBXTCCAQOgAwIBAgIUI+/eY8R89cgibBSxK21cfqgWARgwCgYIKoZIzj0EAwIw -HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjQxMTI3MDAwMDAw -WhgPMjAyNzAyMDUwMDAwMDBaMB0xGzAZBgNVBAMMEnJvb3Rfc2VjcDI1NnIxXzI1 +MIIBXTCCAQOgAwIBAgIUU8mDRuCXUx/1N5ZbqwO08z3thrQwCgYIKoZIzj0EAwIw +HTEbMBkGA1UEAwwScm9vdF9zZWNwMjU2cjFfMjU2MCIYDzIwMjMxMTI4MDAwMDAw +WhgPMjAyNjAyMDUwMDAwMDBaMB0xGzAZBgNVBAMMEnJvb3Rfc2VjcDI1NnIxXzI1 NjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE+/u7th4Pj5saYKWayHBOLsBQtC Pjz3LpI/LE95S0VcKmnSM0VsNsQRnQcG4A7tyNGTkNeZG3stB6ME6qBKpsCjHTAb MAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMAoGCCqGSM49BAMCA0gAMEUCIFx1 -UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiEAl3KhbxnM3illT1U+1Znk -MgqJ9ZXZVZUKxrqIbkyyyF0= +UZ8TEVDNXYreIKO8BjCR/7JzdV8xZOz9y0KACnDmAiEA8YdoZp0la4put1QFyRON +D73entWqnhnk7bLPLK/nZwQ= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2040-ev_int_rsa_2048-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2040-ev_int_rsa_2048-evroot.pem index c566b15110..65e4df5601 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2040-ev_int_rsa_2048-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2040-ev_int_rsa_2048-evroot.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIUdRwm+3sp7XTTuLYZ3c1qCe9uu+MwDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWZXZfaW50X3JzYV8yMDQ4LWV2cm9vdDAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVldl9lZV9yc2Ff +MIIDZzCCAk+gAwIBAgIULc3PA5DgNWuYrNth//ZRvTHTyb4wDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWZXZfaW50X3JzYV8yMDQ4LWV2cm9vdDAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVldl9lZV9yc2Ff MjA0MC1ldl9pbnRfcnNhXzIwNDgtZXZyb290MIIBITANBgkqhkiG9w0BAQEFAAOC AQ4AMIIBCQKCAQAAusBlL9+8AFWIL/uurO7Ij6LQg8KX3V1AZk3T2Q9S+aoCvYpQ +6FuD9mRh470dfmzUNn44+sqvXF84yewl4hTHxPfjj5OO51ha7ikHlMG7tJHIWMW @@ -11,11 +11,11 @@ pURgflP8aFx6Vf1EqB1BQravUepvps6lKWWi6MXYTzygJNb7ubAFuWUc5dny7PQO 1ASYGp/8AmNuMRsJXGMyoMh9w5JxtVUUgXdLAgMBAAGjgYQwgYEwXgYIKwYBBQUH AQEEUjBQME4GCCsGAQUFBzABhkJodHRwOi8vd3d3LmV4YW1wbGUuY29tOjg4ODgv ZXZfZWVfcnNhXzIwNDAtZXZfaW50X3JzYV8yMDQ4LWV2cm9vdC8wHwYDVR0gBBgw -FjAUBhIrBgEEAetJhRqFGoUaAYN0CQEwDQYJKoZIhvcNAQELBQADggEBAAjGDBik -yZ28yU2JXWBxJ+uG/NY6xoXRJ8N+e3eEXWP4KaMn6Q9MIOjYrA1Ce8Co2uOJg1MN -Ocp8ka1cBNX5ymaIK0b7SrA2oZ6PcSt9R1Q29pA8plGE55Tu5wGt96jr+s+FdI6I -Ur8UR66DZIJIX+TYflMKh9JobMVTndqJXplOEYlvQFyo2ptW2EOTVdx5bQ7TTdKi -ROvLTyDv5h7R4ysdtCtsVR2cB//yrcU16Kwv4ZDqFYLGQggPEcF0LuvYsVKI8bCd -a6yNLAamOgf7MliJwV1A4wP4/3I8q4h7s+SMWyef11xwsa7y8DBT4q0F+L2w9N3W -ws6h785CwhG9RKI= +FjAUBhIrBgEEAetJhRqFGoUaAYN0CQEwDQYJKoZIhvcNAQELBQADggEBAFp2/uHk +kKVLF3k6UYMyRWflho4KF5RJKYJuDNzb4PR1D1ekbJStS2w429IQUsjllZyVCwvk +I5UYaFPi9E8vAUzoKzb8Yu06kiixRxzjg8tFe4MY7QPKtnMlJ1Uv3oa++k2+z86m +C3qjQsF8w9ZB7ohQP1YNf3A3A9z+q2+g+JKrZxgNKIcRqBg1yCqg/8UMZ0MoQ9Z3 +UXyZ1lIzK99wf51c5O9RGFB2Nbn29Bq016Ey867OPi2beCPHh4iHPNjfVa5hvBz3 +ol8VO2mss03drxZFDJaKfD+L74G+rqXkzdNQv0Wn7PjO65oAEfKxyXeg7KsvAfCR +PuSCj0p1j0HIDoM= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2040-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2040-evroot.pem index f5543da186..570ca81118 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2040-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2040-evroot.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDZzCCAlCgAwIBAgIUdeaa2X7jpukMwmOeHHz0VAOfQxAwDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWZXZfaW50X3JzYV8yMDQwLWV2cm9vdDAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVldl9lZV9yc2Ff +MIIDZzCCAlCgAwIBAgIUcwQivIKifH+H0CbI5ik5r452tEAwDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWZXZfaW50X3JzYV8yMDQwLWV2cm9vdDAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVldl9lZV9yc2Ff MjA0OC1ldl9pbnRfcnNhXzIwNDAtZXZyb290MIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo 4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDD @@ -11,11 +11,11 @@ owyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/ Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GEMIGBMF4GCCsGAQUF BwEBBFIwUDBOBggrBgEFBQcwAYZCaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4 L2V2X2VlX3JzYV8yMDQ4LWV2X2ludF9yc2FfMjA0MC1ldnJvb3QvMB8GA1UdIAQY -MBYwFAYSKwYBBAHrSYUahRqFGgGDdAkBMA0GCSqGSIb3DQEBCwUAA4IBAAADcvre -20SPgqgmrshFOXjf3PnBCTXnPf8vOSHIhB+Xgs1OlmciJ2RiqHC5xqhQAst3Wd0s -QX555XA/bRwOsvsLjDpkKu3leZq+61pQLoYqdgosclZtzcpz5INhq2qxN0ut764h -fSmSJRUB/Ir7Obd2TW87FMHucKTZ8qDySmCN4njIEnmeO2C8bmOG8ry5xYXXDJJY -prP7bv5JGpGwtZmiB5PILpyF2yK0pCAfgvtu33LnH3x7BxGferjIzAmfQTe3FkvH -VIDFHcNVqrofLGDgZZpqGRbqk50w6V/4nDUC/Yk+nvKXIz7ENOm1lQ0Hdf6+VUwY -DYiZ4YE1KBJWXpE= +MBYwFAYSKwYBBAHrSYUahRqFGgGDdAkBMA0GCSqGSIb3DQEBCwUAA4IBAABt2Ec8 +3t4QtOytl3S561GV+MHrAcM/oZGzDJNe/xPAdAPYlNVeQL6QD1pvkYqCCgZfETnl +lpCgzHBOJFeNEYoov+VvJ2vyo5EMJ4YpSVmxEAVzWD+Tk6lkeEK94vTVAFoAnTPP +ceCod+JqMOEyKwhMtMSinSnYrP6/qFrZGY6gZFsTw6QUfPSpeJkA8LZOvuCg5JfO +nZZDGO6ah0aHenjs9/PX7oNmfUnRoRg9dCGtz+PQgCB8ztacHCZDRZaWWW9SnSPJ +tsbMWsM6zK4SeMrL978UXLQrUfMzvbbEvIW9nwsyiXspZfi+/7LhUD2aLWLK2o03 +LRe/Qtj1c2rTUrQ= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-ev_root_rsa_2040.pem b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-ev_root_rsa_2040.pem index 58a067ce8a..07b0cb8d59 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-ev_root_rsa_2040.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-ev_root_rsa_2040.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDhjCCAm6gAwIBAgIUUxarkhz3XFMGwErbQ+5p3FAmn14wDQYJKoZIhvcNAQEL +MIIDhjCCAm6gAwIBAgIUG3tI2oXm+aDqcizWWz9swrw1mfAwDQYJKoZIhvcNAQEL BQAwKzEpMCcGA1UEAwwgZXZfaW50X3JzYV8yMDQ4LWV2X3Jvb3RfcnNhXzIwNDAw -IhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAwMDAwMFowOjE4MDYGA1UEAwwv +IhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAwMDAwMFowOjE4MDYGA1UEAwwv ZXZfZWVfcnNhXzIwNDgtZXZfaW50X3JzYV8yMDQ4LWV2X3Jvb3RfcnNhXzIwNDAw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQ PTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH @@ -12,10 +12,10 @@ ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2N AgMBAAGjgY4wgYswaAYIKwYBBQUHAQEEXDBaMFgGCCsGAQUFBzABhkxodHRwOi8v d3d3LmV4YW1wbGUuY29tOjg4ODgvZXZfZWVfcnNhXzIwNDgtZXZfaW50X3JzYV8y MDQ4LWV2X3Jvb3RfcnNhXzIwNDAvMB8GA1UdIAQYMBYwFAYSKwYBBAHrSYUahRqF -GgGDdAkBMA0GCSqGSIb3DQEBCwUAA4IBAQAMInNiMCmTpB8AsEl38oHM1s/YqHRo -wF2TVxVfeHQbfWFexjN/haN7g3MtiShCc4LoWBLvm3vhnH+khrz5SB3GJyeEr9UC -DqcLvgpDXxj8sGNtqNzeGaF9UmoVA4IXZ3j26Z1O0oTj6KlY3XN52c9Vg8ZYDm73 -32LYD82ee4xs9ITwwa6iMGZLFKcFp0SQLMYOWl0eV9jcSgD0OvBoC1iC1kQIFFnj -6Wr7/ww/cTKPDMHvDnH97IGfDMzZr7Ej1P2pop+FwF9scI54p/vP0tEWh022LMzW -F2qzb8sHeeNsZ7dkVv7ZZI+bKIiTsmSp+TYxD+mGHIe98l2YmTsxXB5W +GgGDdAkBMA0GCSqGSIb3DQEBCwUAA4IBAQAB9kiuqc7lXxSlnGfIbti2jX4b2qRN +olGP8l+alOnxolqGyW6G1EfNt0GvYTeBQ/uaMAvtuwqvqSBJ+r/ESJaJ7FJifVz+ +B5bN2mnWOW7qkSOaRz+ljlWkC6lMxpEOpYGLb0z4Dp+PGo0N/UCLuFZuXemdgXa6 +lsmQHOM2bv/GmJGIThcjo5aUO15NhraflJ7r2aRDriHl61Ygr+QlDsqlUEs28Jxd +D8TF4+/d6eqyeCApQIqPkV70KLjxUNr9bAQR1O6b0O8cBIzuvasX176UL5WXEnTa +dOii8k75bS+4wX18i618riXfTAGRlQEcgoxPDl+T3I6iXeUGaa3AKjBF -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-evroot.pem index c90d572d7d..5f3257528e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_ee_rsa_2048-ev_int_rsa_2048-evroot.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDaDCCAlCgAwIBAgIUIaZYSDw8p4F+ZDLi/oQTdQZ+2SAwDQYJKoZIhvcNAQEL -BQAwITEfMB0GA1UEAwwWZXZfaW50X3JzYV8yMDQ4LWV2cm9vdDAiGA8yMDI0MTEy -NzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVldl9lZV9yc2Ff +MIIDaDCCAlCgAwIBAgIUE4ZNwWEaFTXeUVffo0pUh/mtxA0wDQYJKoZIhvcNAQEL +BQAwITEfMB0GA1UEAwwWZXZfaW50X3JzYV8yMDQ4LWV2cm9vdDAiGA8yMDIzMTEy +ODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAwMS4wLAYDVQQDDCVldl9lZV9yc2Ff MjA0OC1ldl9pbnRfcnNhXzIwNDgtZXZyb290MIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo 4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDD @@ -11,11 +11,11 @@ owyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/ Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GEMIGBMF4GCCsGAQUF BwEBBFIwUDBOBggrBgEFBQcwAYZCaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4 L2V2X2VlX3JzYV8yMDQ4LWV2X2ludF9yc2FfMjA0OC1ldnJvb3QvMB8GA1UdIAQY -MBYwFAYSKwYBBAHrSYUahRqFGgGDdAkBMA0GCSqGSIb3DQEBCwUAA4IBAQCnDXv7 -sEyYYD8P6pbPIHagVqdChwd3oFLLc1Erbgdd4hX7GWNIHg7ULzYq3HSUPPBhWKnR -9THtn53CxPVDdYxMtrJTwc+2OMWbpAgoSXsY6Nm+JqZDi1SejgSpepxKUk1tyDC6 -Uqbt2nXMKTGZJVQaKRU7L+vcA1TwuTfP+bgQPJI4B/9KgsUS+fffLQAlIeHtMen7 -7esBpbV2NJ4tG+qKOHkPR7KFvyJPR+EUJsruf5VjsDH5mzaJJLDv5WNsLJzk2wrd -XpNmF2QzeB8PDXVctR/Iz/2kvMVKlN0y+evLgJm08gMKYIYZH8bbrL7+TcFgsRQt -mwzwMIQ9SxfjcqaQ +MBYwFAYSKwYBBAHrSYUahRqFGgGDdAkBMA0GCSqGSIb3DQEBCwUAA4IBAQBDJYB8 +kpWaSBIegxWDwVIoJ6XGBR1vi1ZRgHQ9LhdInc+jDdz4dKsXFbKubcImwux7N1HL +Jje26wlEZRC/TyA2WKcfT4Hgz5460fcTrNFkwljxQQxvW/9KUXUIRjwSDXIy7l+h +B1g5DLjSnjKzQ0/GraTmnYDhUjSDfMlJIvnpe+zzXCyb3cIpVGM0z6ejkXt2WH6G +JBSK/NspAP/lrLcpD186PjxFD8LOIX4uxtdhGERcEzk+sbT3NbBmPXScrXV+ie8p +ItI3CvJJgpGod4fpxY9z+zagi01qKSgMNP1p1XbbngW5o/HFgAYpqK/QzzPsvcp2 +CbsMNGSp8eb4IVQj -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2040-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2040-evroot.pem index 70b9a11991..7f826ecceb 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2040-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2040-evroot.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIUWcYO+hB03JcvNQjJnogUNtL7wD8wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDVDCCAjygAwIBAgIUR2BYcY6TJAJ2CLIF5D6vQeyGdhcwDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCExHzAdBgNVBAMMFmV2X2ludF9yc2FfMjA0MC1ldnJvb3QwggEh MA0GCSqGSIb3DQEBAQUAA4IBDgAwggEJAoIBAAC6wGUv37wAVYgv+66s7siPotCD wpfdXUBmTdPZD1L5qgK9ilD7oW4P2ZGHjvR1+bNQ2fjj6yq9cXzjJ7CXiFMfE9+O @@ -11,10 +11,10 @@ PKAk1vu5sAW5ZRzl2fLs9A7UBJgan/wCY24xGwlcYzKgyH3DknG1VRSBd0sCAwEA AaOBkDCBjTAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjBPBggrBgEFBQcBAQRD MEEwPwYIKwYBBQUHMAGGM2h0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4OC9ldl9p bnRfcnNhXzIwNDAtZXZyb290LzAfBgNVHSAEGDAWMBQGEisGAQQB60mFGoUahRoB -g3QJATANBgkqhkiG9w0BAQsFAAOCAQEAWEUic6eaF00zDkZ6GYrlDn3orTeL9qYy -uecB87pL4pHo6nyE0Mc9w0jjLi9hJNkutkmJL5bo7vq5BdCc7FV9HdrnvYmG6PBg -2HSauBGvzCqm5spb1EDP4Pd7ISyZX5DcUicZ27dwkuZMSCDfLms5V9SHnYbBB/u0 -5WTFnb5Be5j8qS0HMtNYU+PQQn2VNCU8jysXRuYKhcp/DFJeBZOCUdl8kM31ESEp -Re4oDMutQT2cuBVyqI5zRq35ipKhJqXKaACs91fh4aTL3eZWN4fLBkHrIu97jECL -oeEuoMhg8c/d747QKw2ADF8gZdp9NLWPd1+zUsPs67ULsKMP7JlPYw== +g3QJATANBgkqhkiG9w0BAQsFAAOCAQEAWE2k/uEohRHynYIcaPOvwWVU14w1JFAu +l3cbA9pL+Q/lYQKf3/03I7KMFG7xODb3v+UoMdT9F3YHbe+BY3qO4Z8edQbx7CFK +dmoBBFQPww605HrJQABWy1k9E6FSYAQa/ekb8HE5wEfqKrdTBenKmhsq9KCZaOY3 +HsRAr8dxS9hJPb7GSV42TQmyVlHR/ktiBTA6Ie1hi0l8o/OBqORYazvDPT5pxugP +5RgBtkFrL+ORxemM+FLhIcK6nA1oGDiO4H/65wi0LEtYCefxu5oXQrVrh0kfVaI7 +2s+VdtwO29W/IUVaRnAWStUt67T9OJufbo8R3Unjm7vnYogzKse/kA== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-ev_root_rsa_2040.pem b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-ev_root_rsa_2040.pem index c457027708..d4c80bf0d0 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-ev_root_rsa_2040.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-ev_root_rsa_2040.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDcjCCAlugAwIBAgIUacaHt86/9InARkJ8YK78ihVP6aAwDQYJKoZIhvcNAQEL -BQAwGzEZMBcGA1UEAwwQZXZfcm9vdF9yc2FfMjA0MDAiGA8yMDI0MTEyNzAwMDAw -MFoYDzIwMjcwMjA1MDAwMDAwWjArMSkwJwYDVQQDDCBldl9pbnRfcnNhXzIwNDgt +MIIDcjCCAlugAwIBAgIURS/T5dnQlNF2lnayn0ynqSCQ/YwwDQYJKoZIhvcNAQEL +BQAwGzEZMBcGA1UEAwwQZXZfcm9vdF9yc2FfMjA0MDAiGA8yMDIzMTEyODAwMDAw +MFoYDzIwMjYwMjA1MDAwMDAwWjArMSkwJwYDVQQDDCBldl9pbnRfcnNhXzIwNDgt ZXZfcm9vdF9yc2FfMjA0MDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG 8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0V @@ -12,10 +12,10 @@ gg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g3 DwQEAwIBBjBZBggrBgEFBQcBAQRNMEswSQYIKwYBBQUHMAGGPWh0dHA6Ly93d3cu ZXhhbXBsZS5jb206ODg4OC9ldl9pbnRfcnNhXzIwNDgtZXZfcm9vdF9yc2FfMjA0 MC8wHwYDVR0gBBgwFjAUBhIrBgEEAetJhRqFGoUaAYN0CQEwDQYJKoZIhvcNAQEL -BQADggEAAMWE1MCMsekRftdM1QRhkyNu7197ddt6pCzVw/HTljbVPH+qxFRjT6FE -/XqhvHQHJZscdG700GNgFbqCiVvEYsAl/I9U+zRWRZrXvDZZCAb27U996IBwH0n8 -aLAF46Avr/E0AzRmLcL/sTNcXaP4Y1e8GwzfJ0wDhy56gMmWb/unYsa8yZ/cxDIB -Izo0lfWOcv9tYjA5ojQxzbCahUHx11ZhgSwdGkH5SnFqyExhnkSkTFvsTMVdvQMK -nYjEwEKdLRX0i0M3C392pFk8lrplGTzCbpDPfbm079abO3yXjugmQ+sGgUvtGrjI -LjQTS7nhtO+NkQyU9ej3wgOWCvAdxw== +BQADggEAACa9/3WpdR+wgcfNPgA3Ide64g09DCffDDlK+c0dmEo4txKI2QZWDUnr +/zN8zEzKvv244C5X45EfpEnFjCoPotvEpJib1jy7yjTOyY5twIGF9Wiw0mAbLOkY +rWRfcp+n4xQWe6CFzJAhtfVS17xAqYXK5nKpfBgix7Mb5HX3E9O+aYp+/6CF0vef +NjxSSNaILePgjZGW6d63B+CJW7eyB4beJZ3Euhj4v+090ykeIqkG4GTwroHWYwmK +YOySo3NrqCYoqdbqtToBDXsXIHtGLz1p2A+PMtKwKYrR8Tvc4MuTN97/o8KFbZf4 +/arfRRiibMQhMo8n7kt2S9TYkm1MXQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-evroot.pem index ad8a1de334..c8e59cc966 100644 --- a/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_keysize_ev/ev_int_rsa_2048-evroot.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDVTCCAj2gAwIBAgIUAaFrmHDyX7HRX18mKxfbbg/IokowDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAy +MIIDVTCCAj2gAwIBAgIURd/VWQ2h7MCI2HoyJ/0kQFqR/TswDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAy MDUwMDAwMDBaMCExHzAdBgNVBAMMFmV2X2ludF9yc2FfMjA0OC1ldnJvb3QwggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT 2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzV @@ -11,10 +11,10 @@ He4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMB AAGjgZAwgY0wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwTwYIKwYBBQUHAQEE QzBBMD8GCCsGAQUFBzABhjNodHRwOi8vd3d3LmV4YW1wbGUuY29tOjg4ODgvZXZf aW50X3JzYV8yMDQ4LWV2cm9vdC8wHwYDVR0gBBgwFjAUBhIrBgEEAetJhRqFGoUa -AYN0CQEwDQYJKoZIhvcNAQELBQADggEBAI1jiKctT2WSjWWC59/kQpDZUD2gvYoa -lVTIu844UiyL71C/d2v4xr0HdO4dka6D9k48846XK7zosRXqmVmFfy4PzdFSvYP+ -NtSGdspryd2xvFkx1vfZbmif5pDdPm+cCfajUCdrZrMEzQC62nhG3EOujv6dFaPd -Slktl+77+moYl0Dog90DyJ2LeAXq3S7nUDfXILdnGyj24oW7fMeinsHLD4mMLl3x -oM8DSqf/u5RPXp7H59cV7t65MREITeKB+3itxIJTSBNAtyx3Upaa8FGHWLWSfUvU -Zq4M+iAZXu9jmW37LZVYh7IKSoHu+7zzMMY4cd2OkrZ1sG5Tj8238Zw= +AYN0CQEwDQYJKoZIhvcNAQELBQADggEBAAuVYtrQtdTXOdzoTKtgAsH3lFOr/J9A +tdVDydS7idFQLJ0xLVVXSvxB1XJf6c8oPSwH//U+j3X4I2rbdw3fA7RqweOvN13o +rAMcAkawD1FS89d7ekGfYVkPgPNRQLbaJL7KDxKDPzMEWFSqJroCv1hAcMXjhfcB +kgL3z9gnAOaDnuRrsgEZX8uDiS1xoJ3CScqj1pRR9AHXP6FXClV56x85c5pZoZoi +7MUcKuNAO6h0QQ6I9gHbnykJ7zTYYAI5M/k/F2+ljhUNqgpYJahrcubnOgN6X6Sp +YLrsjlZuuAuntbi72oie5L/y3qKJ5w/o5QErNIWkDr7s6PDP3c86uwM= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_missing_intermediate/missing-intermediate.pem b/icecat/security/manager/ssl/tests/unit/test_missing_intermediate/missing-intermediate.pem index fa3809bfc0..de4a339b54 100644 --- a/icecat/security/manager/ssl/tests/unit/test_missing_intermediate/missing-intermediate.pem +++ b/icecat/security/manager/ssl/tests/unit/test_missing_intermediate/missing-intermediate.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4DCCAcigAwIBAgIUd/VyPORF+Ljj45q4h6BbUG5SuPYwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIC4DCCAcigAwIBAgIUI+F16gxwOugX8R/dRjXPFHfBGrIwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAfMR0wGwYDVQQDDBRNaXNzaW5nIEludGVybWVkaWF0ZTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ 6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUk @@ -9,10 +9,10 @@ nAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N JMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd 7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEA AaMdMBswDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQAD -ggEBALNrGlu62FAlc4WQe71QcE7cE9PlvE2hy/ocG3gc2S5ByDdlHTcSkbV38jmz -BLPq69fsAX1snAdVciFSLLEJbormjkegDKXgc74FGh2RrGhee/DZtLwO5Auk3iy2 -7pDY/bZAEseyZRYaF1pCzmy5wpTVrRRaJ8h8dAk+nBT3yfar0+mAcuQCec02PX6s -8FvemG6a7l6jA0k9MglHhgdh/DAb84LCGkwiUY9G31eDBrnpKxsCDaoshxaTurfC -7OlOB7lrHTsSFVquqPEGvRPr+px/nCihLl5q3QQUtDNlQDjQgkNsrI5BuWvkfZLC -0wGUGmnxyHd5n77tjLxx1PD2sJ0= +ggEBABIxu3EHhG4hJHQa6sES+99kdm1n2thR8PDOnSfJqxZnsOeWGYpIKKqDB0IO +qF3vp/vwFtZPFtd8aq1A5FJGGaxDWreXHUDRTjz3pzjOecR4AeuI7XrJDYMZ+jCK +NCMDge5aUXjPUjATn0MrYt8lUtkUjo6DjSlTOJUNFlmPBxT2uRN666zBrad3bFjY +iPoJyF/5F4HHF8ltE7DdbG30rCeiyDvwlHGyy5Cfk2MiKyHBQgg+lKrRn3hkCsGo +nZF28/5QZLf6qn4TMbCofeb+fYrDTJYX4P1GOEOwCHEwPm/ZJ25rAJO4BwqGJ+XK +Tkz9uth7EM11T8CExMrrrpADeDU= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissallowed.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissallowed.pem index a4387f4a8b..7638c40d3b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissallowed.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissallowed.pem @@ -1,9 +1,9 @@ -----BEGIN CERTIFICATE----- -MIIDVzCCAj+gAwIBAgIUfbTjR/kolgqjBsNYyBMNqoSQd5AwDQYJKoZIhvcNAQEL +MIIDVzCCAj+gAwIBAgIUTwVVDO7LCGrgLna5YHwdpLUf9uEwDQYJKoZIhvcNAQEL BQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBh cmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMF SUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEExCzAJBgNVBAYTAlVTMQsw +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEExCzAJBgNVBAYTAlVTMQsw CQYDVQQIDAJDQTEMMAoGA1UECgwDRm9vMRcwFQYDVQQDDA5mb28uZXhhbXBsZS5m cjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogG NhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqn @@ -11,10 +11,10 @@ RYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHTAjqLKkHu p3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQ Lzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p 47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo1 -7Y0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAFsByj5A0qlNUZCRwzSJbnnd8hES9 -5i5hzXtsjhysEk9lM5wmUKiPTlVAs29KQp+uXTzp1/Hmq6WxTe0+nKfwtWbWf1u0 -ANGiiEt0XEMfDb3xx8QAoqXKhlNeD3XzGMba0GfFi+vgL9kUbdISH0GUNuBOkkwZ -gl1LgVSQ0J6JwLseTeBrBpO1FxyIuDSOcX9u+KHT37WD/5Q7Pdr/jO31uybdKf3k -EqIgCz/7sJEOgBYJPLTlSKYis3/sRMxUNP5RWkSH5UrzXpylB57SiPZNz+IFPBya -kq1oAEmNFnxUrVNf31CRHK+t/vIdDXvoIh1dA2BnpxMGeV3/v8bMe6V1Rg== +7Y0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAevxs/Q5YrWyZqJuU3uFaRNI2qs4G +bWFqd971rPkorOgNQrfutffTysTAPEYcoHYLOJQMrLbD6TdI6gP9F6aqS3zUb+4I +HCU+H4txaVZehdGRYBp3CIcMOxKb/cCtrt9YBFVV2B2JVs+xk6r4LllEMPA6nlUE +e1x0fwM10zhzufdXXYP1/fD3NHuTNvEAscP+88Q3HZAVNEIVVNC28QeUKRgOShzG +XHzdNdSZnwnylyF972rznGm2lma7/htT+WSYqZ03SbFxf2bU+dFFx+ua9GlDDUZr +yi7JM6oRlvi8WdINaS1cPtERdhPcnJrxCjjp9tO9TwePjfji+Vt1p5Xpug== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissblocked.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissblocked.pem index 6ca305837d..becf75cf56 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissblocked.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/NameConstraints.dcissblocked.pem @@ -1,9 +1,9 @@ -----BEGIN CERTIFICATE----- -MIIDWDCCAkCgAwIBAgIUAUepKg1JC7NWFdp9+m+SNUl6I8swDQYJKoZIhvcNAQEL +MIIDWDCCAkCgAwIBAgIUa/ZkjaYOPbMgjn5A30+EYJ5O4hswDQYJKoZIhvcNAQEL BQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBh cmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMF SUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMEIxCzAJBgNVBAYTAlVTMQsw +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMEIxCzAJBgNVBAYTAlVTMQsw CQYDVQQIDAJDQTEMMAoGA1UECgwDRm9vMRgwFgYDVQQDDA9mb28uZXhhbXBsZS5j b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braI BjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVa @@ -11,10 +11,10 @@ p0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB 7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4C kC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJv aeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgK -Ne2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBABrsG+z1qLG7bxQwE7upVhzUsP1K -YxFlIoE1NS8UZUlbGs/ATlGC/iEAGj90GCtBC9ZQF9xQuUICRv42U0gHbXaLRRtz -uhC76H0kEHOwS24rRp8HY4u2bFpTFmAT8U6aOVfgP/Y4a23XAl4cVaQXEDNKq3FP -M76fZNbaf4OIjebB2sYEQk1kbkFIdlxRHlfVckE7VOMvIiqYLNseMX8RKOuyjhVK -uZNcl+dxlTMh2EaeXoeFeY5a2XTzWjQOMuD7gABMbigzvgRMK/AaHVGlouYJq+15 -AAJjhowerZiS7DBy7eTmTfU7jrIiwRiBhmuXJ8Of/kZa+qit+ylTpGQ4ses= +Ne2NAgMBAAEwDQYJKoZIhvcNAQELBQADggEBADBNLaK3romEI7ET3Ie+7AyL4wIQ +nM8HSO0eyrVHXTykSYloKoFe9n7IsIEBVtOLTUOxoGY1sx2JZyNHyRUWrs06Avoi +QECdCURddH4B1bkJBG8R1VjQqiOYyd3nFL1UKd7QmvqKkZdSOiYg+IaxL6ITUzRX +1TJmLdlh95jGZo7EOIaOwOoqTR1r/tfhWV9kVIpXEUIgXUCyLFKMP/NJ2ndL+DOU +j80JaqVWcHLG7n40O3S0XkI5DuTOfP2hJLCmiodWeKYudkJSsMcx5QF11PGJKV6D +y9EjILFxqxwsMzpkgkkmHPlWDb64HFIL3za8S7p5EUwbNdyS7/+v3ZaDqEY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ca-example-com-permitted.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ca-example-com-permitted.pem index dda7021a07..75d8e1482d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ca-example-com-permitted.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ca-example-com-permitted.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDETCCAfmgAwIBAgIUFz6mf+WCTlDFxq3MX8c4jR6a78wwDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY2EtZXhhbXBsZS1jb20tcGVybWl0dGVkMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGNhLWV4YW1w +MIIDETCCAfmgAwIBAgIUJ4xIaIGb66H8ldQjmUAk7L2XFtEwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY2EtZXhhbXBsZS1jb20tcGVybWl0dGVkMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGNhLWV4YW1w bGUtY29tLXBlcm1pdHRlZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG 8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0V @@ -10,10 +10,10 @@ gg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g3 0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz /kkj+nJRxDHVA6zaGAo17Y0CAwEAAaM5MDcwDAYDVR0TBAUwAwEB/zALBgNVHQ8E BAMCAQYwGgYDVR0eBBMwEaAPMA2CC2V4YW1wbGUuY29tMA0GCSqGSIb3DQEBCwUA -A4IBAQB8hNPRyTq63quJMPC43FYGQIR46zqYqDk279k0Q4e2oA7o8QSwYpB1EMuE -CnSqTblx+5atjfV5pNKkE2A5wcbzwqiKIzK4L7N8eL2VQSgP+ay3DhupcwfmiHXW -j+i31n8YIMOkCZCPOSYnZ/RCDEhRwBH5yMCgW142Izz/az2+6Y+F0CzJKq2BV7WD -R+RnHYGqWspXR4BL/4RWdoYf5TotWCaZq+uNK2A+EzDMcKe/gtvSPurH9WCixaSj -E0YgIDoVrxbToRZ4dheI9a0vD8dOAiRvIaA9UMCYYkoucKLmJ4zdNDLDerQSZ2z4 -CEBguHHVTxEggdaPuRcq3YAvPBqL +A4IBAQAsL3rDyaSntekq4gz1j8qrJAugGE92xAy5xOXqMudMxpCKzHXltV2B20zB +u0sKG9ACm6z+19vZEL9Fgkk2Wm/9yvt1G/wJc2G8XDG4UHUXHfpZkTNFg24CX2Wf +kXOdOzplCDsl0jn+1849QFC8YH0AZI8MgtUbF0WyOj/rl8n0i4Gk4qD8lkUKKyfi +MadQGjX33ha7BukAjpnh1cy1mf1PMn1datWPbeBmPi5KgpYn66idOMTOqMY4u/30 +XMm3MsE3/CoicLvmUbITFRdEsiCc498jmQDMYvsd93IdZZyWEySiG7WPf75B1xSG +NE17SDsiXe7tvxUM4qufnbhXfeQr -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/dciss.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/dciss.pem index 19ac4e2447..04a6e14f78 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/dciss.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/dciss.pem @@ -1,9 +1,9 @@ -----BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIUJW6javLPzGju5fbdAGNPmx6N0qwwDQYJKoZIhvcNAQEL +MIIDuzCCAqOgAwIBAgIUHWtV8VnesP0zobTEDezkMbdmXS4wDQYJKoZIhvcNAQEL BQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBh cmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NTSTEOMAwGA1UEAxMF SUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMCIYDzIw -MjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMIGFMQswCQYDVQQGEwJGUjEP +MjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMIGFMQswCQYDVQQGEwJGUjEP MA0GA1UECBMGRnJhbmNlMQ4wDAYDVQQHEwVQYXJpczEQMA4GA1UEChMHUE0vU0dE TjEOMAwGA1UECxMFRENTU0kxDjAMBgNVBAMTBUlHQy9BMSMwIQYJKoZIhvcNAQkB FhRpZ2NhQHNnZG4ucG0uZ291di5mcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC @@ -13,10 +13,10 @@ wmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF 4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20 yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xx j5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMdMBswDAYDVR0TBAUwAwEB/zAL -BgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAAi2jk5Da87D4LCXNU299Jnb -7/neiyQHf8BCTQZyIC7YVznNAH2/qVQH8W3uyXRr1XCWFcN1ai4SS4/DbfHL558i -n0ErFYRI5VbjC593Fi9aiuxoviF5kmlOyvYhdc4wIBRJfH+eIL4wCfARCAwuIQYy -oM2U51FPEW86wEIX8zPikpcPU+BnxyoVf+xKoccBNoNjCDzr3TfXK4BDisHoS9ho -5EtrWlLciI1pHeqUgr2MJWlauDYYkOvSmpizDW8Bc5x2jPurPQBDo2H5GqXT9cMp -D1atC/PRRUxH9hk9xIzqsIv5eqUh7MDobgaqx28o41XQD38Q/rnda6y173tNOcM= +BgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKqG4kU8thb03l8l/h0NbL1s +OOlJAVhB1L2GoijxUo5UO8nGArPuJ1B0R8DZUj8lc7teOVmVdrKZ+xJVFm19FJV7 +WkMSWT727SkSwafFpIJ/213gk3z6EFxL1t6N58DnaK1sJPNWKp5GtqRaKyhUSVzU ++F9x7Te1olq4PeM7shZbHd+H0bNCY7QeEwisjEaRUMOj8mnGyZ1BO7YyxRNuQGzf +aBmdPvnrVwEGG8OOOgVWKjH8NXzmqjXwKyWnH7TkjZXPsyLOgmL+mXYoy5CaaxXp +FM3MY9erBCjoY4sLSGlLSFQdG6BMnGWGvjeJFK+35YFhKE/JMGkHEpJ9Uf9qgrU= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com-and-org.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com-and-org.pem index c385d4b981..104225ad7f 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com-and-org.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com-and-org.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC/jCCAeagAwIBAgIUW1IquZdd1LVEkTgPy2x6w5pm8cswDQYJKoZIhvcNAQEL -BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDI0 -MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAhMR8wHQYDVQQDDBZlZS1leGFt +MIIC/jCCAeagAwIBAgIUO1DRztHDSpKEH0iYvWHbD5U6bhYwDQYJKoZIhvcNAQEL +BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDIz +MTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAhMR8wHQYDVQQDDBZlZS1leGFt cGxlLWNvbS1hbmQtb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA uohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGoby a+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWC @@ -9,11 +9,11 @@ D/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfT iEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXT Ce+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+ SSP6clHEMdUDrNoYCjXtjQIDAQABoycwJTAjBgNVHREEHDAaggtleGFtcGxlLmNv -bYILZXhhbXBsZS5vcmcwDQYJKoZIhvcNAQELBQADggEBAHYMikxb2k9/XfpQDhmQ -285Pq3Z2Ze8rLIEEy2aJaSP37yP3n17wJiBC6CasI+ngqgD+GV4OJojnHdTRI/Re -8dTLpR9zTk10PbS/iAsOlqgynuU5D6eohdLOBA+4nJ5l+mZcODNyfFVtF2rJjRMS -WheEusDZRDNTVldx+wSRE0/gtK2XHft8P4WlCUPnhM9FAErnrjB0lw/DKTdvHml7 -LGKopJgK5/sCcohcsYm6VOiBC687LbxOba23UaWu668mGnoMp0Bz4djN+ql+/Nhb -xHCxadx1Y1rtTWxcTDBddI5j6aVqVmpOW6BxJ5DDBsNf2SVhxNOyctViw2nQJbMD -7wM= +bYILZXhhbXBsZS5vcmcwDQYJKoZIhvcNAQELBQADggEBADzszU2fEfyTJXReAZkT +Zvie6f2d6djMFjgJUEezXCFxyNzFUdZWjLX/fmEPvizWOl+csdolp6YR1V6xdg4B +0Na7K+2q5cNmK9pTs1aK17uPyHT2qSOrBg8ueEbHYarjOsGViWD9Bq0pJ9fIe2ID +dSK7+0UGB480w1gtr5JQEEKjguIEZYgMQ4E5TprGtwHhg+thQkJhBceIp6KUTyph +VU+E6e7/idVZ2vfinI+3kQT3XclUBrTjFyswpJP7WDoI/p1owBDgldNU+yu0klU2 +px/NUlXuJjkTZUKaZKw6N1vbp/PEGflJPGbO5T2WvjgxMQwQv/gcN/pb8J/yi0Va +s0k= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com.pem index 743bf4e689..b1e9a206a1 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-com.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC6TCCAdGgAwIBAgIUQUbVewggjHbOdJw5h6UGL+rQbkwwDQYJKoZIhvcNAQEL -BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDI0 -MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAZMRcwFQYDVQQDDA5lZS1leGFt +MIIC6TCCAdGgAwIBAgIUHaiS/q9d2y2WZmaLAPHODbW7D7UwDQYJKoZIhvcNAQEL +BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDIz +MTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAZMRcwFQYDVQQDDA5lZS1leGFt cGxlLWNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk cQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHT @@ -9,10 +9,10 @@ AjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3 ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jh s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV A6zaGAo17Y0CAwEAAaMaMBgwFgYDVR0RBA8wDYILZXhhbXBsZS5jb20wDQYJKoZI -hvcNAQELBQADggEBAEgd30IrJB8JrfRfowVVHcz9aHsztDurjXMr13Q+SIIEfpHl -rF5ca2S+FgI/LZPtL4g+7BkcQn3wZAvcEQBpETOM8RN5khK0Q3lB+g1X0/tpl81H -IvbukmvUWA/2Q8dpN5q4aNRsi+5OqxFlYiuitrIzQR+NRsET6XY1m0us/qB8JT/M -x5IelNbkbrNlcmbB9DXeLVyNwpwFfAMJU5utish2S2W6xXpmHRrNjIyAb9aqiUDJ -qpCQXfYaN/mrs+zF0FqaQKCIM/YX184alvKK9n3A0w8L2eiA66rXtVWLEVOl5w/X -m4XCThmh5a7969jhlyZKcmAfH0W76JbxBdywV7k= +hvcNAQELBQADggEBAIJb4g23EwodngDynr9AwcGglWtGH/rvOV1IQqjyba463Ilx +THAOSmODqUMaNyv4O/ee+IpzJkasMucXolNhnhZJ49AaWiYQYRb8xCCOQ2u8DlkI +9zB/81A/fQDOccrNlh2XYSpG2ku/Vo8wAONbYbEBUuSqOSlvKkw0UhEB9FGpaGQZ +T6RzblgDgGxZyL3mytDRWnZBUUXddZ69A+mr+Pslx4ORoCRmy1qbwWcvmXVC/Asc +HKweX4YtEdrAgZ+40m8pLBhOD+sxoNsonhaoZL8YSgfwtlCwEXRnBy8iEf8D/D5B +aGIDc5ecsHwPzHX7EuSilsGuOPp/Ujkjuy6jZ24= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-org.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-org.pem index 9d54387df1..3634e0f000 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-org.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-org.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC6TCCAdGgAwIBAgIUfU0Dpa1VgNDhyk2mW/oi2KQaWMIwDQYJKoZIhvcNAQEL -BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDI0 -MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAZMRcwFQYDVQQDDA5lZS1leGFt +MIIC6TCCAdGgAwIBAgIUbai5jioT0XpSJp/U+nvDG0alWCIwDQYJKoZIhvcNAQEL +BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDIz +MTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAZMRcwFQYDVQQDDA5lZS1leGFt cGxlLW9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk cQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHT @@ -9,10 +9,10 @@ AjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3 ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jh s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV A6zaGAo17Y0CAwEAAaMaMBgwFgYDVR0RBA8wDYILZXhhbXBsZS5vcmcwDQYJKoZI -hvcNAQELBQADggEBABYqjaE5kbxExzhbRaCrQBoJ4iwqEqed00M76/1sBHOweDYO -X07DeR3SGoJ4AHulL7YLVx6J3/Cs9TZ7iGn4EKfTemhEJspBpLvAWUIEzfX9IYD3 -v/bbaSEuiJYHwdaO16iW353Gj5dQyUa3b1KK13fl555FwGOybuU65PLY4O8FDPlY -153G+v4Iouz3OyZAPDwotl36ocRvlXmU3/Yd/VNkqywKIAbQnkwSTM+nd+o8aBFO -1wo5ZIhOZOGeGiHYx32U60wc0gs0KRqBaIs9IohckmYu/aCO95W2usQnzYLRAKdq -OVfGWGCk78eYMiRRRrCxNVJCnN+DzwLChd19UzM= +hvcNAQELBQADggEBAGWOPjHKLuMUQz3RSf8evjcaKTTPIBs6HUixwAcrfwACnHzR +XeYhIsactH7LMEVt4Qy5GRR+Ljaa1SXfOugv/NHXxRrJoYGWzUQ1vPt2Px+swWtF +PY8DMbsge1iCzpVPL/r+BG9EIk3/gFAZ9WT8F8sQgO+eMayRxo1HR2NSXHEvbSBB +A861QIqDD7idV6l0GXk5GfzuVqew67UP3MnJKzNsz9Iu8O0F3rXpRUyEICQjw9FK +stuGvTczLb4Bk38gV3DtBasVcXtO9HvBcXeFYpAP74f6Juc2sG4aL/AWaxFdlKQR +w/wN1AqpDrIXVRrrYHKHLQsXqnh0Z1cj5n/CMzA= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-test.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-test.pem index 8d01381ee5..f0286c794e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-test.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/ee-example-test.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC6zCCAdOgAwIBAgIUUa/c8yn19UeE/UWPamcf6gKqrlAwDQYJKoZIhvcNAQEL -BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDI0 -MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9lZS1leGFt +MIIC6zCCAdOgAwIBAgIUGe8xbuPT0YD0riawY21Qh5E8iNwwDQYJKoZIhvcNAQEL +BQAwJDEiMCAGA1UEAwwZaW50LWV4YW1wbGUtb3JnLXBlcm1pdHRlZDAiGA8yMDIz +MTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9lZS1leGFt cGxlLXRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W 1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtq ZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx @@ -9,10 +9,10 @@ ZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7tFYIP8X6taRqx t2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo 4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx 1QOs2hgKNe2NAgMBAAGjGzAZMBcGA1UdEQQQMA6CDGV4YW1wbGUudGVzdDANBgkq -hkiG9w0BAQsFAAOCAQEAk6bAiXaOCv7IPX6RsCBXKzVdeKnEFaJRm32H7Q0hmRfk -7sWLW3VFWJ9G3ZZg/9yFI+Ni5zdyP1N7XDsCudAAZBCIQsAAyYcLpK3cFS+Rhy9n -nl9qme9OosXM8s2RFme4dGVA5bPGPWnsmnhxaZq+fMkFT0Drn3h0lubp3bhboJvk -rfPEIu7fyl+x5YusEQdRHZUFkXzYQwnleBnq9GKGbqMNg852SAm/mYIyHblcvB/k -5dHoqqyvTvRnb/1at8y7S8xe464T7oL6LKrxNoMv+TlOUsnXwSzEYls+9Z0vhAwT -zeAKGoAqaWuv4DfdRhzsch/2uhw81fQ/ZXDeRSoIEQ== +hkiG9w0BAQsFAAOCAQEAJ1ggesNAWu6IxIiQAhI+ARgQ689uTPylyZaKNKt4npVk +MSzFtWlFigndN7SDA0vVSketxxBgiG6v+8b+9eQDB8PLgrwqxnQTrcxXo/yMUPgv +GtFdc8BZpFhitfcS8FVvx5HoK5w5JhT2qedktYdTbVML4YlY5s32QThdNv9NrIId +DEirIlQO4GomvpG1T311LDLtea/rEp2MGnvEK8PpYfgFyqn+d8Zqz65Q8GyhRjNp +7mC1gZb0ZqDgNociWep5hdhxIpZJMrigwsuxi5MI4p2U+HuT/B9aiKvTyJsL+25s +dAwKN2bsLEOpgOfHzCZoiTSxqIQFB6nG4KHIvMjGhg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_name_constraints/int-example-org-permitted.pem b/icecat/security/manager/ssl/tests/unit/test_name_constraints/int-example-org-permitted.pem index 10365f07d4..faad804e6e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_name_constraints/int-example-org-permitted.pem +++ b/icecat/security/manager/ssl/tests/unit/test_name_constraints/int-example-org-permitted.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDEjCCAfqgAwIBAgIUHYr4iqgDCP/8gKMFEu4QiqvhkiAwDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY2EtZXhhbXBsZS1jb20tcGVybWl0dGVkMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCQxIjAgBgNVBAMMGWludC1leGFt +MIIDEjCCAfqgAwIBAgIUA8sgb1P9CJO/T6XP6JOw1O31T70wDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY2EtZXhhbXBsZS1jb20tcGVybWl0dGVkMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCQxIjAgBgNVBAMMGWludC1leGFt cGxlLW9yZy1wZXJtaXR0ZWQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwGm24a hvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJrbA7t @@ -10,10 +10,10 @@ N9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3/K0d JdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+ZFzG4 s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjOTA3MAwGA1UdEwQFMAMBAf8wCwYDVR0P BAQDAgEGMBoGA1UdHgQTMBGgDzANggtleGFtcGxlLm9yZzANBgkqhkiG9w0BAQsF -AAOCAQEAL15ZeqcLXPP+aZlQv2ovWc7RnVs9GeCy5/qayNqCRuo3Q2l0hkIFCt5d -et3uOrcemqwwPOUcm5AhrkdutLf3jhPTjhMaECmpEwoxUsQLeSyV9MZ3uRLjZMQf -ZLvc8JJ1cTTwVFLQT5Wv7oIfy4ABPhNoy10KdJBFxMDflFPnqC9mcdTdtlM98EwU -UupDx2iHJUUM2N1XcEWDkxY1F/9/j+uesZII1pdfp9jno250spUoJys4Q5eJXCeL -YzZXbF69EFUgpJbyZDj/YlfAXjn3w4m6REeI9eoMTcZcw1N4K+CaRqmA1UIpj6UP -JuBQ+K930VMZRDcJHWugGJa82Bxw+w== +AAOCAQEAdDrhvPyVzPJXkgYon7QjjR1mImkvAGJm3pAYFtAH1MYfm7EabUs+BdIe +/SsYlW1MH7kvIbcwOoPPp6uUyyYxYHeACTB8Lf2VbUrPC3L7jcEbuhWSSMhthQlK +CMRS0O54T1jNc/LAMzOmchWFc3ws2LiV553oBx7mQhLNnD1lIxkAEIsUWeh/Vzeq +lBoZfUxPl0WOs0cb7TpWrLUyTLIBI+tKXwUxz0Bs+cB2Ib4nh0ZqNoLvTmxzv7L2 +KSZnhSP7PoRewsIJTd4XsqkQaEo/fOkH/zfqlSqi+DhqTAADlyP9Ycp0bukcyHd0 +Z9eY5iknEzyj9sGFAeKoHGm6XYLpRw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/bad-scheme.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/bad-scheme.pem index e25ba0f441..e819004e2e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/bad-scheme.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/bad-scheme.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC5jCCAc6gAwIBAgIUdUuYMjY/PmL4W9OO8g3jEf3vozAwDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC5jCCAc6gAwIBAgIUc5HDdiPVDnoKn8ZiYIx6HJs9+vYwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBUxEzARBgNVBAMMCmJhZC1zY2hlbWUwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -9,10 +9,10 @@ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjMTAvMC0GCCsGAQUF BwEBBCEwHzAdBggrBgEFBQcwAYYRL3d3dy5leGFtcGxlLmNvbS8wDQYJKoZIhvcN -AQELBQADggEBAHl2QXb94+T7Qgm1NHQY/nSWYqcrDh5OU+Sxw62GnTvMjaxlqcqa -hekFO1ehhhdjppFCORf8H+qLprSj53/csnvPU4WbNGVPLFCglWQ65BseLRNtDKvy -NM7WpnpNo+cUG6Q8FjtwZbJu3xlW4GJbkmxg3KOP9eWy1C84sDSHjjWY9Zr+D/02 -uPsX9w6Wm16NxPS6d1v/gSJKcg43NCqtvw7yyg2jdKhppQkgUWc3esw56FCPDmys -VCQ3TsJeZxHLnFgTPHenCIuAHR6BcvxHR9muKStjdm98DNdPiRTefRNT6/gqnhmj -P/AEg2yIR7y0qurClpX9F5qRBs9UWoRncfc= +AQELBQADggEBAFl+1Hvpv4RH/WlY2+SpJetovopPqwuLh9PwdNb6aNraxj7wXc50 +CGNJvM0YYN6vjPkmcPhWpn+smDqOOtNCPb0saEL6Bv8a2i3Nnd5hbVrXQN8BBonv +BhufiUc5SwxhyXruVWwGmMIyNfkOsFmRSWGHsVHWrgdrhpCv7MaYUxCRfu6oekAo +lSTPONefigvy4IT8wc93HzDzq2NnJaKY+tUMrCQt8bG8DQdxBfhxGk+kJR7/nNzh +Qm3+vY3odt6LJOfrRLc1Y/41omZtGjnegNDiyA10SYHZKo8Pn9cpotJ2C7nVfzm1 +Dhtyn4QxSMB0stu2Yl+ZihGQG90iwUTNS1c= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ca.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ca.pem index edc024bb36..622c7d0cfb 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ca.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ca.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyTCCAbGgAwIBAgIUGfWoHSEIf8ed7z6XNbA2TtZwIDswDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyTCCAbGgAwIBAgIUeVGYvro9xACWBBysfldy31Jb8s4wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDTELMAkGA1UEAwwCY2EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg2B+9sZwG m24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ5Nu5TMJr @@ -8,10 +8,10 @@ bA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQsVeQPdI7xeC4 SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGjDJHdtMr3 /K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8Wiy/l8Y+Z FzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYD -VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBnI+Z5c7lp68dHkt49cEVl9zL8 -pfvJmMfkqKrqWFLLwzEE4XhPB28KhrWyjZ70mRy5ZlUVz8epahKCUOwjsl+tbX/d -11OGQFNeiLs9NN1Fm+bo5qvVujBT2iWSOn9B2jhavBU3lgci1UXPohaTzrAoJdbw -e+NDIADPmKpMvn5LCil6wLqTU3U70ju/PSQQgrJjRLpS/4Dpdy1lRAfQDpO1gwKh -2G3Yf9UDYPFBK9zh5g/aDocxJQWPd22Un7Q48gj8AGHR+Q6WibMs4SLnJ7L9croj -i3MpWbg5CMYdtK1PYtXnxKzVyG2vWIMA4vz0HyVpxiU5nJxHKLEuyioflBa4 +VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQBMCB1kCu9bCII7vqFfTQ9e7gLr +47TngY8hEbe4I5mmPJbeePGlWj+ZC/cnHIlI7yfW05YMdbiAVUc57s3aRvNEJ4Lm +3pJSv8an0yeEEl+8ecr4WfbRPjRtrUv5RxotPrjJf2ri8nGNE++bYKdWCcsSiWO2 +qu2omyqHC9lFp+n4ZUmv/F9DVjMxobfhNMxYRi7NsFUq8VPKp67BVxFmDnaxat6T +XeJ/vE7UjXiGIJ2SnZMCtXV6YENangjxFSZAq+oBIdqweLNzYFC7T+GJASt1dYqI +vJuNVMFOPWoFTe1yLSKCajKMhqmkxsIpEZhf5Sto/YJ2PiwRF9oK/JOTh57r -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/empty-scheme-url.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/empty-scheme-url.pem index 0ed1aa140d..f9b5ea7ed3 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/empty-scheme-url.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/empty-scheme-url.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC8zCCAdugAwIBAgIUfZLVE1+/3x976IPIXR1574MWIyAwDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC8zCCAdugAwIBAgIUTQpfXq9k9L5QPm4SykNX4Qji+TYwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBsxGTAXBgNVBAMMEGVtcHR5LXNjaGVtZS11cmwwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVo V2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p @@ -9,10 +9,10 @@ fbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZh W7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EI TjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjODA2MDQG CCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYOi8vd3d3LmV4YW1wbGUuY29tOjg4 -ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQCTm5BISV1pAYcj6flo0uZ30JZFOKr7qNij -OV0pu8LNrmE7zIlymQZHnuaFnpOXC+fWF3D91vVCeDnJsAPNn6bABa6wOFQ7NtYB -JxQNE73rty9EG3E/HHR2d5pJCH+Ma3vNj+GQahtUAZR65Q5WYPMYhOVD/zChFu4/ -CG7/NDTwGCEAkVnYVDWjf5eSLtQ4QEbzSXjo9h2xrLOCpsXi8GTK6XLbRC5a7+5T -ITmEKM30SGhew5o2wdONjliuWXpwY8kGnUbaVxzA7vPWOjHutp1gkb2Y+nBpm+51 -29We0QvahcBKghzMDqFtEHD9SoUf4ScMcElaolZe0f71PT6TuMF4 +ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQCoVSErQXFo5UxV/vaeW9HCFSR3R40d8DEv +5sd05YdeUMh3C1eB9xt0qG1pBqg9lpQfBQF+GJzbmGdBVsrNJ2rSWIDWnfJ9Sgj1 +B5b4Cf/1QGXDYNrR+NYpBBMB7Mc5N9nRmIWd11r9ysv25fsmw567qZ7xpRiF7VOX +idfLqAi4PrMwls5c8dSPO4pEmvxOxUJrjE0h1N2n1qmdasD9jZbSDtwAtlX5RvJp +GuwvARR6/k87hC+FQEjSXVlmtcJGZPFvcjJ9hJEl3sOIy1Wo1bCkG9cveWuGbCJL +iHfIh+wD0S52ICvMm/RqrXzdhKjcqOBCSr77JJyKvVkcgXGJA8NC -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ftp-url.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ftp-url.pem index 70c4234bd3..b5ff8b437a 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ftp-url.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/ftp-url.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC7TCCAdWgAwIBAgIUe2kwRIq0l34yhtR0E2k/gi4iG9MwDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC7TCCAdWgAwIBAgIUdyoTktHIz6dhHftZ9EWMKKwiQhwwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBIxEDAOBgNVBAMMB2Z0cC11cmwwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HHJajg 2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOrIMNJ @@ -9,10 +9,10 @@ PdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLAdTGj DJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQELL8W iy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjOzA5MDcGCCsGAQUFBwEB BCswKTAnBggrBgEFBQcwAYYbZnRwOi8vd3d3LmV4YW1wbGUuY29tOjg4ODgvMA0G -CSqGSIb3DQEBCwUAA4IBAQAzl49oyrE9XYhkq1KzbtkEYt+9C/t5mnwiQDydXd6x -K17IM70NIlS/HF4lIRQXa5e5z/q+A8UYswVzSQJxmGqCH+zMKHON+13sKWqyCE/A -iSnCsBtZeQ/dn7QUBhwqBgyjwO1UfNMEs8LVcKIcnSb/Jy7L4FziMPb2iKeKqow+ -NpnRwlJy/vnuvqsxdPsqpqnhngwVvEHjInY4NE16ZaZyjdW1KPVSLLvZbc3W8R4K -ftdi+aQibSxFLjH6ocDSRoqx798/eoOlcYTfp3q3n/A+ia1DlO9aFVFOu9BJuI8F -4xguwewaBejhEJ14qOtpcnUhx672F7bG7nmaRLjFGBXz +CSqGSIb3DQEBCwUAA4IBAQAYNhrnendEBbHFkU5hu8XjDRtlN78eqYnrTj61Kfv6 +D00lEgSt14IsIY4GG1l8HJsi9hqTiIYQ1nupdMyOGS1TSUDzBpOjcxJ8kxJR3Ubx +fbcrR5PBs6hmv47XOBP0bYiYu9dOKxBRiKiJuDXwSOS8xCbmY+Ce2RMfxYNXx04q +HIWL82/IOIjZn/y0MKhQPsOXiwg+XqKYArEKu2j5rlby9kAyjHPws/6JJB9Ud8gm +IVcC6UoVIGNOziKkn/2yy5T+WG1hs0Gssd+KDBqFFBylibjpO1mNEJ++tezWLoFo +TO6O3Ir4wgZ6cFuv5vFKogblMJ9CEyzeNopDhkaj3cfP -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/hTTp-url.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/hTTp-url.pem index 92d5ae9a91..79a4e0a42b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/hTTp-url.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/hTTp-url.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC9zCCAd+gAwIBAgIUFxB1WfpEnr3444QhP34bA8IgPCowDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC9zCCAd+gAwIBAgIUH+jlAWnq6yIkstJFABelRd/5vqgwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBMxETAPBgNVBAMMCGhUVHAtdXJsMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo 4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDD @@ -9,10 +9,10 @@ kD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUx owyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/ Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo0QwQjBABggrBgEFBQcB AQQ0MDIwMAYIKwYBBQUHMAGGJGhUVHA6Ly93d3cuZXhhbXBsZS5jb206ODg4OC9o -VFRwLXVybDANBgkqhkiG9w0BAQsFAAOCAQEAp0YdTTaGh1ibKEutw9sY47qgW8TW -FDmIXH/o7k/9+rGMXtPbWaCUTBG86518+cx733Rm647uayvmOKIdpC/DrF+b/0RF -wNpVEXCjsxVXU0AGOyDCbbNzMVyPvWJSdg4pUfAcYsH6TTLQ8WWvMfQGdh5EIbjf -czxGal3tW9PBEzqph6RfJ7fTmFocbEfi73/v6bysMy0PktfN+hoYrWtiropqQtSv -wngItUGDHyc1g6T3f7GvtMuMJ3285I/HrRP3d/dfa5jV26Rd+UEQfXQrW5YTnTDJ -uLET5bNBieNcQy8ykcA9a2jTgUMSevxw7ekEntKwy09k8rLwAboJi6KfHw== +VFRwLXVybDANBgkqhkiG9w0BAQsFAAOCAQEArQkjDjGtO95J448sMxSBwspx5dQD +I9eG0p/3jPtAgGEeduLfEXyv9ZkPmpHVtLY5Ccoj7D7w2jg9MCc6Mzu2/elUgdxB +kXRn7YPAIf8QOPbZq/mWBkhU9jG192tDyKDfMdrI9ySiZW2LxOp3KSAsGqwwLnY7 +UqwDfGORGuuFzcodMK2wZhcvdrMM22RsR2HmmchZZ7veMLc8Yxu6OQdGhJmnYK3/ +XW95hOzwYBQ2h50ZG66uh6B2B4Pu6oYJ6B5wYGhFgA9CA6VEGmN3dgV6ffBowwkt +8iehKR49pBh+JAr08obB3QSeGgLd+cEH6CogvuzLwIxRqDZD5PdJHX+okg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/https-url.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/https-url.pem index 17ec7c494d..d81e213f2d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/https-url.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/https-url.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC+jCCAeKgAwIBAgIUL+SapTXkgtPCgTho+ZpaVtvSWBowDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC+jCCAeKgAwIBAgIUc16m1LiiRRqnV3iIIc1PW78V3WcwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBQxEjAQBgNVBAMMCWh0dHBzLXVybDCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -9,10 +9,10 @@ V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaNGMEQwQgYIKwYBBQUH AQEENjA0MDIGCCsGAQUFBzABhiZodHRwczovL3d3dy5leGFtcGxlLmNvbTo4ODg4 -L2h0dHBzLXVybDANBgkqhkiG9w0BAQsFAAOCAQEAJD8i52LNCvDReYmuevOo3lk4 -XYepG9JIqTEOsxxoSZ/X2wr21geApZ3vO7+9NoFXgkbUEQb5Pbk43UGufy6ZE7Ll -LOhtEJGG0066DV17iDt5fI37d350EqUsDOZ5fuOohaZo6RCPNKo6YsmQwKKx503+ -S652VIJd0KMTedFuwhy1qibatqsrzwCE4fZwgaDR9yvjyZ6Fc6kWc0aQT7VVZZ0y -9ZoPbcnXmwIJiDYo4ZngDxMMVGrYPMYAz8YXHLwWbxAIBjLkI8gySXz2XSH+AquB -n1i3LMvREuTZNOoeKTdzzrVAUXV1wyZxPkaFTuJuQJyyTHOUhWixrk1x4wCSPg== +L2h0dHBzLXVybDANBgkqhkiG9w0BAQsFAAOCAQEAVPEonVM7fhL4lmCpSTlsl+5O +GhmMdlKXB4Bvjlcty0KuRy/w3vBDBFO4TDZU8q8V4YrJTbeTfH2zvuZuet8E2PqN +LBjL1u2IN3HCbyqQ58llwV8ee51iOpxPUxRGATwv+5Zz01+gEibqZ+7itcYmO2aD +yiQkjnmkzOQrgxGCIA+rt/MUJ9aHrxsxPtuKsCD8FQhYAV9fr5jz9Du+gdr306ZJ +nr9Lw4VULFk2EJ0cyqY6SQ1VFk/BAnkCO0KWPvlFgOF86DmVXNq1FY/HyOSaYIE+ +gZpVWj8THdPac6tyLHXx6v5TYjAscsERKbKFM/9bsru3/h/7DuQk8vYEOObPrw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/int.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/int.pem index 3f2fe45097..f4faf747a8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyjCCAbKgAwIBAgIUXUR7IXs87DerZvTrKcX7gJ/bUYowDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyjCCAbKgAwIBAgIUFcJmHn9QiScZ2S5ajqrcQvsyEw0wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDjEMMAoGA1UEAwwDaW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGc BptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzC @@ -8,10 +8,10 @@ a2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8Xg uEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK 9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGP mRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsG -A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEARpSzjjrFYQrK4WJ7tddhq2Pz -TQlRF2gWhC3eHwfXtn8GSHF/8dxKYTesK5xVpS8xy4L6X5ty+9i8pQMsUiRvXAXG -2/ZpooSWaVeoK8FyST+SEP65c5o+bGPmLCxQsKRBJtCS91USHKQ/Zn+NCvlJsjLm -wbBsUhN/58iohXTE178lIrlB5nU50VawS0/iUSIj+/FXaEIQPzbwh+UBicavWW5h -Ad+KETsdmp84IGuLz4rg/33Q8MU9Qv6HB1JX24uDoE0oGyWdCUS4UxJEze4COgVQ -CvK4pfhr/L3ti0dGvrIW+VgWtySkwZkndfhNiNxHSz2lITrIzdmWuvGvIB6Y5g== +A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEACY9zWDpxa1WuMa6lYsrEnjR9 +0CWNdt0DZxaEZgEMGapsjGYtupZBtnMOm24He+H0GpyuLi+dSIkl/MK5tqbYm5+/ +X/7/E7xD6Zy+1eu4R9xhPllbKCNwKXaG7THv7XOABKGeNn+NonZPNBdcynLoas+p +6aFzf8hRltjwWgDViBFmwX6RKTVkkQET3D+mAHwITYMwKAd4TbRVLJ6NZVM/r55h +/GyCNxUiw9ISdTBGabvVx7P6kpLeHdO11gMwazQrqkpeFIASDNJXK/msGT9bgWx5 +KRBtVDnQ++7Z5JIUsqTzWWG1GriJa6nzZqUEiB2cYMKmSROpQbFuFb+EBCia6g== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/negative-port.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/negative-port.pem index f9939e8def..6de25c7ba4 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/negative-port.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/negative-port.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC8jCCAdqgAwIBAgIUGdpTBNosroeHMpr5z8AJZ13GQVYwDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC8jCCAdqgAwIBAgIUS2uzxVShG0uNLO5erStc5X5XRa0wDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBgxFjAUBgNVBAMMDW5lZ2F0aXZlLXBvcnQwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wk e8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0Dgg @@ -9,10 +9,10 @@ YXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7fi lhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbL HCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjOjA4MDYGCCsG AQUFBwEBBCowKDAmBggrBgEFBQcwAYYaaHR0cDovL3d3dy5leGFtcGxlLmNvbTot -MS8wDQYJKoZIhvcNAQELBQADggEBAHvOG5VefsZJsh0a+5qfMGBV+fjNiksRoBsn -xw+C2VJdKNgNCKlWfWbvwxt3ZPCnlK+ao12xOBmoyBiCeyuhuKYPnDO5YfYdQbeO -r5kp+cdEtOkehM3roN4OPmxbK/ida3AXcUrOQkuQvCIpoGpd92txXGgDniznIcA0 -XbvMZ/8elmJXACGJqA3d3KKn02jaBa+viHJU+etlq7G6PQr32hdqBmeKuBpXQR0I -LPj+uMCDIsGPXSxPy/fH40KFsXh5ycqTaOYN7WZ1/+oZJPhjdpYgCWipfAi9RLvb -cFCMSIu2tuduoxj8OmQDyVHQ0PBS7Yrr7ut425yVOP2aVFup3uI= +MS8wDQYJKoZIhvcNAQELBQADggEBACMPXH+dxoyH6qiYoibYamlYrVNClU6d19zb +JiAWNq54Df+tVAAAHkrt1J+mxPc5j52O1SMpDlc+7Gd/b6jHeK84RRtOBFWDYkke +VRzikeEpYeBcHI8wLBxO0qGLJE23OWjgomDMsgITAoUJgZp/IZi1m4pKEVoXifYc +aah5DDnvD1QPZ/Rj7SVrFklx19djIE/u9Ouya8zjppiGVMounOdibkYtTf7ivmyF +DE/QzfvMFO+QvEkW7RbeaDM8rslF0CAMSUoaFD9Fcs0vBe4wPvOe3nHAO8FM22aH +FhA/iC3gZYC4Y6dmiwfXSPhBzjr8Jx7gEacApYxrPfaKk6cg0/o= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-host-url.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-host-url.pem index 30366544ca..702a74d265 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-host-url.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-host-url.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC4zCCAcugAwIBAgIUV9X6xumeNAPhcauvTWVdFj90DEUwDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC4zCCAcugAwIBAgIUe1l28WeWykfJgx1ET4eRNF5ytgowDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBYxFDASBgNVBAMMC25vLWhvc3QtdXJsMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -9,10 +9,10 @@ kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABoy0wKzApBggrBgEF BQcBAQQdMBswGQYIKwYBBQUHMAGGDWh0dHA6Ly86ODg4OC8wDQYJKoZIhvcNAQEL -BQADggEBAGh4opgmZFv9hJvR9Bz/P3ug3VPwWRIz4KI+tLKOBUY+TXz1ISBDZJ4b -5W1VolbqiiCZ5B2KirbcNPN1+hFzHUdUkLnJLFWW1prV1bsSxG032BFIpQiQjE7d -/UaoYjmZpVfYFabpzj77YPIpQjKLDg0pzG84SRUdIsi2Gmr5ZVW9N6pm/2VhUPfA -TWaBeGBHSGVrgH0IKPk8K+Zq15Na8gxPB6FwKCNT6O6N/RRShU8P7Pa+dilO3esv -VhZF/bpHnbPuUCTKNGbPI7hlBpf+YWiSJax6ZmM4adTWVPyj4QFObE2Bibn47y3l -1qfdTbZOmcP/MvRN0u57OHAnXbOjn8M= +BQADggEBADv+jsJqbSIEHOkn54jUK4MRoPVrMKn31S5krXurSZTDm4//Xw98MqI3 +pmHjT3gNUxZd3o+Lo7xx61ygcLEn+mFvFEDmgz5yw419+9e3PpLhCXj6egXEDW4K +fQLHFB4Z3IOR18rwlVhWwDeVnsoc6R1vx0omtwDP6HEiBPYJNQWijwuUWJds/sIX +20vLU+5v+Tl0tiaMIMKXyzc8cNQNpvdd0By4ScKiJeASWGm+OFIW3lzUWHxhWCoS +Iu8mv62x/Xui33IS4Aiqh99g+eCCy9p8AOhrnCg3u1qwaXkkO+0uACaLud5gJylM +Ikj8AsgemuAxuwv1AYI7zR4y30slb/8= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-path-url.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-path-url.pem index 118655b901..d6f19308b2 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-path-url.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-path-url.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC8TCCAdmgAwIBAgIUG4VH6O2zRzXJsO8nLn9LOb3lHYswDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC8TCCAdmgAwIBAgIUM4cUxAoSP4LGfrZoMIiVHTzc57owDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBYxFDASBgNVBAMMC25vLXBhdGgtdXJsMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -9,10 +9,10 @@ kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYS wHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwk BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABozswOTA3BggrBgEF BQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly93d3cuZXhhbXBsZS5jb206ODg4 -ODANBgkqhkiG9w0BAQsFAAOCAQEAIXs7b3EMhEq3EeLgkXIDSW+Mlgd15BeZWpaQ -drnPnZm03p+YXiK2DqD62OFFsJMzwk8sFkGo7Ugqb31ip5Fb3GnAF+dxZHImo2zT -zrhS3laWf7oUVnjq2UeFNqww95KvmY1zrpg5zh2wiFU43wXH4uqCk/I8T08sc4xx -Yblvl7MyXUlNnP3Q/zt0qGN9cE6SI2DZsjduw4OCPuFR7YPl9RsLqxoB/b+k+vXC -SW+QmAK2dq0XL0zB9PuN96aM2f+aEoumq7x5ow7w6So6gPTDmSbu6J6mMFRgeoP9 -+GBp65vrxVGwW0ibvzJPETVVfFQXpQgFZZ1p7N+1pGJaaVkrTg== +ODANBgkqhkiG9w0BAQsFAAOCAQEAAcmqPVRQOacM2DzvRV5OWpwc1FYDHXI4sr+d +ahTSrw93hcQuhFfo5CEntC/E33CByOAVrz/G3GZx0ftGDL64mssUqMueLUX+Uw9o +8pHv9UTtUkrf+bXzFIamaYiZmJegv8EZkf99fQRd1HR1IvEuPPlyb+Zdhk7xswx5 +pgDUj3kLgLXqNuweBP1gYLX49OKEzoZ3iO7AhZReFgsMwvgR1/ngWoHKbYc2F2XD +mktmwm9BgTZHMi9/ydAZzkOkZ5zWSrkXAxFPGsGyp+bWRA0stHXw63bXUfWSdUep +hezoDbR++WEfmOB9Dp/SEvYCpQiTwmIgGDk8xPQrUKqzLkWu/A== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-host-port.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-host-port.pem index d78fa190f7..a3b9044956 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-host-port.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-host-port.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC3zCCAcegAwIBAgIUUacqk8RCpnd5ml0OSyILKPZ/Bh8wDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC3zCCAcegAwIBAgIUIxbn9xW4XQ9+EJJrn05dmF7qbCEwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMB4xHDAaBgNVBAMME25vLXNjaGVtZS1ob3N0LXBvcnQwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D @@ -9,10 +9,10 @@ JJKkfbmIYXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyX rZZhW7filhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWd q5EITjbLHCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjITAf MB0GCCsGAQUFBwEBBBEwDzANBggrBgEFBQcwAYYBLzANBgkqhkiG9w0BAQsFAAOC -AQEAZ5yTOtp0orchCKadKSE8vk17nGUTmJcTa6mFEnZPkUdDV83GPfP/j6dlaac/ -bIgAz9u6QMViqQhLgF8RcEIPrHCw7S/o0EGzmpaODy9vF2s0wgDJBY8z1PlMxtC0 -4ZNZZK5S6pl/NGiUQI5JKx+bUGNGFmtTdQzydFzkNY71+ghK96WVgvjhfl7wUer4 -xD6KjEBsI7jq1Sor+CmcmHwf8ZR6xxlDTsmy1Ip1gJ/RO2U9cvARBE94QRyesVGk -O+tH4LYsVB1xHWPlk9doiSnhgMD6tUC1xikWtYGGPErXUq126LcPeSp4mpFBJ2jt -/4igopJFknP9UpqBk+pNtg5INQ== +AQEAfGhU9A1IrQxVH9U1VTWTqXx+LCSIWTuZic3yN4xyb3CM2XHnzXFDyH0WDg2m +AgmNHOPbvS6EQBPd1o0aZ3uztxCp8Eo0wuHLDJaujaNVk3TvwmU3k0VK4Aer5Nca +UrvvtBTuPfETfGVzAmi0945Rrb+gsnNO67zy6+nzLPNJc5RiFzN5BCDOUStjOx+o +UZV9pGlXEzqgLCcWn4v0hkrF9FGP8Rhj6RasxmGxL1EcQdtaYAiGiJ5oHNsU2RWW +x9TTGeg6IiuY0tibDIEg8wSw2QHR0ZzCA/BOHQV+Rp61jv46d+M5B286AsgiOCIS +A11On1WwcW/0uPQqf95f7R0C/w== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-url.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-url.pem index 13bd01f523..b894b205bf 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-url.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/no-scheme-url.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC7TCCAdWgAwIBAgIUTczXgyARISdWD3tSeNyg4r+5QW0wDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC7TCCAdWgAwIBAgIUd/ArQ8TKHrvvuH9YkZXda9aoAmswDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBgxFjAUBgNVBAMMDW5vLXNjaGVtZS11cmwwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wk e8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0Dgg @@ -9,10 +9,10 @@ YXmQsVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7fi lhLAdTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbL HCQELL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAGjNTAzMDEGCCsG AQUFBwEBBCUwIzAhBggrBgEFBQcwAYYVd3d3LmV4YW1wbGUuY29tOjg4ODgvMA0G -CSqGSIb3DQEBCwUAA4IBAQCxSDPke9o1Hfjti1tPUiZiyeBsFTe3ChEGKWSIzA3D -RZScdrhf7YaMpyfd6ECA1G4ifmrT2nyh15vo1xF60x9EFE+yZhZ0fRpG6xXu87QO -y678FTYAw9NG/0JkouLQf6LDGKUaR94KTKIwH7zZ6BD17zHYDqRldocqSIao+kXx -VKWt1coblJIBqCcX6LrPGYAzqCYuDjizKhYoLydli3mWfWC0D9JnC3WsBqphbWJf -ExKYCP0I9ES9YeY6pyvPoIpV3DLHbyRES7KGmBURbC2RUY7TJOBUXUa4dzUxYSx3 -uKnth5CumbueUmNQZopgezfJ/5BqdbqWh3hueDatz4Ja +CSqGSIb3DQEBCwUAA4IBAQAkPXmNAmefhBzt3iqxdToYkNoll64kKJS3a+QgEPdq +xcQq6X3Nr8IMIQh0mcDiA1I5K+z9kcXkTWl/UcmYA3NvAE93BDj73ot99PF6B+U1 +zu3/5BxCKD34Sg93TRYdSB/3daUPpvwiiQiKLqIuBzKNaD9KchDfB0whnIh8ZcqX +DR2d5+J4Su7h3aQz7twm1SnnEkTLdHZb+M5JhKuxpVR6WHrUo8qHiMCJcRbh9MN1 +5nZFEnbMRBHrKs0WLJhj5K2V4zR3JD7+BOau2sa30mfO9rfDxlic44Mmct2Ermut +0uKt0+jxrkIuDAnRBvjRLMq3p1TE1loHgC23gZe8jOZE -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/unknown-scheme.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/unknown-scheme.pem index 4fd27e324c..14a107d93e 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/unknown-scheme.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/unknown-scheme.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC7zCCAdegAwIBAgIUcYo9494FHsOobrqh3M9PgDMCvE4wDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC7zCCAdegAwIBAgIUM7V8I7UM3UbL4/XL3UHjCvkm/vQwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBkxFzAVBgNVBAMMDnVua25vd24tc2NoZW1lMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -9,10 +9,10 @@ iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu3 4pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42 yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABozYwNDAyBggr BgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFnR0cDovL3d3dy5leGFtcGxlLmNvbS8w -DQYJKoZIhvcNAQELBQADggEBAHlZkiTRSSNVzdslbwLsimU2mwyrBSUkO4EISLLP -U4kjnHtJzXTVjTM3/3cRNC+V63UMCb2Hy56O9MDWHuukF3ejpRtA7sUGT539bOPc -5fiS/K1IkLBVgnff30rNTuGPA/Ij5QqThXABYSxbhEfZL1YpxgNxwwZjYNA1FFDI -RKWTeGR2aIVO6tSYdwu7Q6OzMa/xmUwJtVtGIbEU75WsT97gqCYY4w1+sQz8T+78 -qZ0lKFqvNeopZYd56k49JF2HReo5j/MQ4QDEBMMDifDuXOFAlb93ORuHt88R6Iuk -qUdh3a2FlGQm/1pCcgaM38tGOrO/SvuDWbfx4tI2Ik17Esk= +DQYJKoZIhvcNAQELBQADggEBABMwUbpDjzKYJ21MgXUjYccY35WMSwVyyYV57pYg +fXkeWDwOayEsdjtcMZhjMSpuH7Rr+0AHzSMOREc35az/Y0RV2xe5AxkVA01HVFe5 +MEOrZ5FOj6MS3AVV4qaKeHYtJnT7QnonrRb2DJPsApHBRGhu2H8LWLxsjW/CJQ0a +dKpfvZCLQFK6ew4AgcZWDmxu5s1/3nsRhuFBXybtDd1kPPd0mhfAUHWvFUJPI8w0 +PL28nt5qH2Dw7Qd/WCOYhhptrgnGIAgMJGAUj8gS7V+W6pgN8cSigtFHH/b9Fq6q +4gXW5Z553kStcHen26fVC22X/JxrImfvj583jxgpT9XW6wA= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/user-pass.pem b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/user-pass.pem index a1ff7d5a78..2284410787 100644 --- a/icecat/security/manager/ssl/tests/unit/test_ocsp_url/user-pass.pem +++ b/icecat/security/manager/ssl/tests/unit/test_ocsp_url/user-pass.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIC+jCCAeKgAwIBAgIUY/ucbcjcE/hHkZTCD7EQ2MxyeRcwDQYJKoZIhvcNAQEL -BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUw +MIIC+jCCAeKgAwIBAgIUR/AMUWTRcb6BKzX8I/2z4+UJiIQwDQYJKoZIhvcNAQEL +BQAwDjEMMAoGA1UEAwwDaW50MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUw MDAwMDBaMBQxEjAQBgNVBAMMCXVzZXItcGFzczCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wccl qODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sg @@ -9,10 +9,10 @@ V5A90jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1 MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQs vxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaNGMEQwQgYIKwYBBQUH AQEENjA0MDIGCCsGAQUFBzABhiZodHRwOi8vdXNlcjpwYXNzQHd3dy5leGFtcGxl -LmNvbTo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEARBh1XLHjm8q7vmekD42v3n3Z -Oc+cH7h4gZpP2V7Rzd+vOWa3HojTyT/v+vyMwRyiQbLr93klqe5QDNbMlWlN9nnV -sojQcN5w+N42qusewe5dlrqc1/1EXGnjOuboyy6NjbYQZppbeH+cEF8NvFPNfPsp -+9Nxesb8ImHMkeahgDCxFuWc5ayTWLc3V9SdqyNTXjy31sA/9yV2knxb54XbiHKs -YfaFc0qF5+0kxXhTPjiUGwyGjoEUkGIElfQC5jmxtUhmvMt0C7Vk1LsYvTsXH/d2 -88KvD9mvcRLdVPST0kKpb+5p8pn13Da+NBgSrBwXyMj8qRwAGB3z11DQTC1Iew== +LmNvbTo4ODg4LzANBgkqhkiG9w0BAQsFAAOCAQEAE93QuQQTRUJZXwlR7lUX713h +WWzMRz+0bP7E6Tb3Lv5GNmZhR4akXaUa4120JNSUjJr46xDmvAx7M+4erOascVdV +QSfLDMQ/p0ozru7SJKtNlA6KciuQOV0vrUL1oWaikExAW0i5VxY/lA5DfLlXNQWF +rm4pJsGBhvG1flU3n0OMKw13QMeEiwmRq2Tjdw8h4jHeVK2NrM1SvjTDCb3Ifwl7 +kH0wjSNNKjUuLPbK/5KAs59WeKNPIE4L+wkXthmiIzt+PcUgUdetCCQE1t4x5mcd +xLpwWPrhH+lsCB4V4VIVQDZJVlpIlTGnSI14Cxiqp2UvqPHwGvusSYdqjdxaEg== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt-serial-2.pem b/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt-serial-2.pem index 03e8746853..4fdd3ca5af 100644 --- a/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt-serial-2.pem +++ b/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt-serial-2.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- MIICyTCCAbGgAwIBAgIBHzANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDDBFUZXN0 -IEludGVybWVkaWF0ZTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAw +IEludGVybWVkaWF0ZTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAw WjAwMS4wLAYDVQQDDCVBbm90aGVyIEVFIFJldm9rZWQgYnkgcmV2b2NhdGlvbnMu dHh0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62 iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHql @@ -8,10 +8,10 @@ WqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosq Qe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8i b2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoY -CjXtjQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCJWgl/0ATPqr3L1Q1H5cU8eH5u -MW2tqDagGEwB7vxGhOU46GKx0pryGszUxPyHloB7zQCI0AK/1AhqzMz3Tv9ZAGR1 -uJgmLUbKQ2DikdvAWEGxgxAJEHHIZI5EU/4OJrjLqPnNpOp0AphDB8Iji0DUxfnm -4xyl7rHFcMv7HMYreR8MxZHJ1z9tPWNeEgQUO3TsRzb4XE/tHpiNkKwgE2PDA7A+ -xwlPPwLvD2qMhjAUFKFqhuZHSjBDNByIQcUJMOOVp/HhjzrOgJcXgE0zjH/oQhTO -hUIzGz1m/k/+HN1M4N4w98s+r+gYH+qIbZGuwCjhjIolQJF6ytmx/J8uoVvX +CjXtjQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCrDskgybYDlOHP839ANmR2epD8 +IhVN2N3kBdM6xK59M/GDGjYuuhOftkW9YGOuclbYyI2kyTpIjlEr3SAJ7TWt4pu0 +5aMM42Ac3Fz9eLq6i/1M6GNRx/RApJ9eVv7NIgcG8KHMga9yhUeiS9A3FD7cDsWl +rp2/95UYi25IUu+VD8rqHrbRVTAuag/VwYeG1w4OrRkhhQxeT9558xoJRtssKzRP +qOwab7FAu0PC28+HasU10Oq6i0xeEDTnvRjBV10SkjAn9THJZX9EUHy2facc6dpX +UGuQaFpjUKkPhF4A47/M7PEk7cghiGzmGHtd2QrAImMrBgKfMlfYq4WiXfOU -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt.pem b/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt.pem index e1bf0390d3..9fdd16d226 100644 --- a/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt.pem +++ b/icecat/security/manager/ssl/tests/unit/test_onecrl/another-ee-revoked-by-revocations-txt.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- MIICyTCCAbGgAwIBAgIBTjANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDDBFUZXN0 -IEludGVybWVkaWF0ZTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAw +IEludGVybWVkaWF0ZTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAw WjAwMS4wLAYDVQQDDCVBbm90aGVyIEVFIFJldm9rZWQgYnkgcmV2b2NhdGlvbnMu dHh0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62 iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHql @@ -8,10 +8,10 @@ WqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosq Qe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8i b2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoY -CjXtjQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAig9ytLcg7iAYqPS166UhE647w -wY0Bavok7t4X59/9XqmjMuXma9CtQgdNr04vYR/MfBoiCTkoVuEIeb1bhex7kpZs -/JetJW1MDTTqXauIqJrY02jxW1xVMRynqSXkhoDk5ubwOOH6gaTU6BaOxBI9b5XH -ZrX3zG5JxdmFGLhHk0c6s25v/Ildz4SaRdQ/gAY1TxS7X5peXr9+1PxcWldY2yHQ -+BFXymX+FLz+5yjcOBo5Anh150YpRZEZ+28wSbHI/EyiotW82vdTwfFRlF1kFNHt -gdELgi3ighj1www48w+di+2S5MdR7D91iroLFgt8bZNijWrLuzz5fAGN7gtc +CjXtjQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQA3P9oCTh6I42F231YhkKSY2Pty +7a8RsagRyFqo5CP55dAuNghBciXprCbu1JmsPtYLuqe9WYFsON5/QM10gPf29GsT +gepEBMAgjXaVO2Tmwvx/dXsWSUyCKnpZNthU1kFkK9Ud+87L0q0dyxuaXTzrpWxY +bJI1jinmxncYX2euI7EpdgvX0vb8T4o4jzWorBh04z0w/GkiWrgShHWowGDFaZhp +vEwzQ9kMJFr/u3ybSGAQuoz73u1TuUEBJK/buuO7RMFMcKgsYfPf4gDNrqdQJSaS +LfUkkXHqRyZVBumi5xqYeWAOjuOih2evU6OnoxGabHC97ne4Gzn7vk45DQi3 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-revocations-txt.pem b/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-revocations-txt.pem index ee5477c9d6..3158bb3c25 100644 --- a/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-revocations-txt.pem +++ b/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-revocations-txt.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- MIICtzCCAZ+gAwIBAgIBKjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdUZXN0 -IENBMCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCgxJjAkBgNV +IENBMCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCgxJjAkBgNV BAMMHUVFIFJldm9rZWQgYnkgcmV2b2NhdGlvbnMudHh0MIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFds JHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4 @@ -8,10 +8,10 @@ ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25 iGF5kLFXkD3SO8XguEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu3 4pYSwHUxowyR3bTK9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42 yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABMA0GCSqGSIb3 -DQEBCwUAA4IBAQA27CtHouAWb6WdjhDCs3T3bCzkGzdHbWMuG5F7dwIgLFat8hkG -RpZ7ZKhD31mlDXxzJg8rlf8Cb0u+Bry7X38UcBHqTH4LtdM0wfZEXcrbkS45jLHF -ZUGxw9UBhD6j102DVoBWBjFfKFIZYdQwopnRzzrOL5PlNh6P0G8rgLymc4Pt1AQl -SmDg4QijCk8E2sdg7hslCfJfd5QbuaNoKH3lJYKcN5ps8yH6i5jpZT8F28uE2Co6 -UcG14q6O385niYBA8ukiG6u3BsTK0AZ0l61JqJw8nJtNUgaEbSbjC/Hcd353qWSe -7iJNhwvO8uKqbnEpfIJ8d5+H2wX30JDLzLZ+ +DQEBCwUAA4IBAQAv3dfR8xad3E3sh975E0qCRMWOMde+GwPe/N8Cmpj0sDvdjUr9 +hO7nhh/Rn829zsEtnKS2jwLqUUFunqWLvAcYtp7py7ZvrmoqdR4Plk1HybrwYTbg +A0dWkluw0J+r0vsAjD48EBc/weZc+slgfImoHlQocnt/SVOC9Zvmiv+b4ZxtjzF9 +a/q3TsnW89TvufJOwtX8ENnI3I+1A1GKhX0tWCMjXJd+e1MK4m6uzg+NncjAYfxG +b8rf5RWZwl/VCOkNcLGwouhDj4goKmDsjHzZgIrM5lxlYCCwV4H/xi+dkRqzItTB +oFI5ddVf3TQWcaFNv9YYuv+PF+MDIm/DIBBE -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-subject-and-pubkey.pem b/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-subject-and-pubkey.pem index 19b2831e40..6206b6eca6 100644 --- a/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-subject-and-pubkey.pem +++ b/icecat/security/manager/ssl/tests/unit/test_onecrl/ee-revoked-by-subject-and-pubkey.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICzTCCAbWgAwIBAgIUdY9sZedUpb3TPnBu3B04KldOS5AwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIICzTCCAbWgAwIBAgIUU4rjDEVnk1dpNQ6sCuqys0Aj7bcwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjArMSkwJwYDVQQDDCBFRSBSZXZva2VkIEJ5IFN1YmplY3QgYW5k IFB1YktleTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbW Qf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pk @@ -8,11 +8,11 @@ cQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1pGrHT AjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW2FW3 ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jh s3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHV -A6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAGHATBzlGcN8HFk9nYfH9 -zbyA2OmR2r4n4RHnqqNoRLCrGdyY8LpwjXmkFOGgKd6o2MjbS8pbRbWOWzyyRGpK -s11kVPfc2z6NmUAKJkD+tSsqoCI3Y5MMjre/3OAUb3Arfl/mx1i5xeSBajdyRnD3 -PCYUiJrHnjrXzTEsAo25Rqu5vJdDrokNfe6kdH+Qqi2R99qkFQYVc3doFZg3X3fk -i5Qa+yJB+YI7PLb9gt1J94QULxfnemJcCxDGHedMPKexkVkZnCKW+QPYxRPLReSI -on1XENC8lZ9zh5mXVwIcP433cCecmhZVi7IbJVC4JKU2Gt6ox+1ACWWkA5mD97ys -Fw== +A6zaGAo17Y0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAeWxsyNkqbsaNrNOHs/MO +UFINKGuSTc2ogX8cb6fUc7UoSuSC3x7n9E2us/RraVqVzl9l59HoIccYhMbCjmaV +vW0uODlyw+q6q5+OskQyVeEQXne1CIH/PGewqzjHgm1J7ljlHqEvC6eMUEKAi8mj +6U2Oev1L/FAX6i/WC+l3Gzy6HxT8BxU8eXjpBZdXuoBZ9AbX/agyaTHOFxn51Mot +VSVEHeMOQjIRdUKqZb22pGYvdbTQ0ug0va5AOMwW25BHUkKEpmFFLViOOXSAv7Iq +2OKTb2KFEAM/svxMoybfvUvq+NpPQHu6ua4LJVSoBEEvw48ugGwePE1azFIBhX7f +uQ== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_onecrl/same-issuer-ee.pem b/icecat/security/manager/ssl/tests/unit/test_onecrl/same-issuer-ee.pem index c7aa4b8a95..13b39c9b1c 100644 --- a/icecat/security/manager/ssl/tests/unit/test_onecrl/same-issuer-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_onecrl/same-issuer-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDITCCAgmgAwIBAgIUN/Zu4mAqugBKZAS8AVTZz7pbexMwDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDITCCAgmgAwIBAgIUS5Z54J0pnETVDjLIFdiT5+OFKMYwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAiMSAwHgYDVQQDDBdBbm90aGVyIFRlc3QgRW5kLWVudGl0eTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9 PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3 @@ -10,10 +10,10 @@ EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SK lWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0C AwEAAaNbMFkwIwYDVR0RBBwwGoIJbG9jYWxob3N0gg0qLmV4YW1wbGUuY29tMDIG CCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYWaHR0cDovL2xvY2FsaG9zdDo4ODg4 -LzANBgkqhkiG9w0BAQsFAAOCAQEAUpxKeocCTHV/SJ/yRB4ce/EPWKDismTaQTJd -vzRDwddNlRyzXmBSyTw2iEsdYf9D619+G4NAr3UYPdcEcnEt5eRnWisv++IevWyA -OMhnpo+dTe5dD8RsI2f67VIV29+m2WNW9/PI82mDC+M+knPGEA1RurFmJm+Gq8fX -hR2TI2dil2vQm+aegqHGYeSgkXwEQ1HGnWWgKWYg53whHlg97iMMHrAaM0zpvHDW -BOI1KLHVGKmapAUEVukHl+QX77k5vexSGgTVGlCPAHchMFvlZTbZJPg7KXjEYA2P -m9JxNiTN901QCzqf5Hz2y+vqs4YxmO31koUh37bT0AVpg4PwNw== +LzANBgkqhkiG9w0BAQsFAAOCAQEAYxBzWTY2ZOwrbocV4Pum/eJj68ys07/HRMDP +ZAsV4wOGs1hth0icZFrwQRgD2tImcTQcKisblPPH6X07Y3TPdGEA71WiZFyM4qBM +ym9z+jc/s149AJzIfY6eNoUj2VOCE+rn1/sWzpf00jahUQ9oZMXY3U3Pv8qjdbIu +PDdB1IpAT5mXXUzA1M3SvIk1UI/XmMLYaFl6nb+Jrh2Ejx3fJ5XSveoiwyZI8sAK +MO6C6a0lUSXQhrMW7h/yu6LBVgB1foYVZEcb/ZE3gVmyilHdjSr8+McCIieYY8Ku +X5GV6lP1MUxH0IPOIWMSuHVZ7DQDMqqhL7CTKz1QGrHJEp4Czw== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_onecrl/test-int-ee.pem b/icecat/security/manager/ssl/tests/unit/test_onecrl/test-int-ee.pem index 6219e8ce0f..27f4e50c2d 100644 --- a/icecat/security/manager/ssl/tests/unit/test_onecrl/test-int-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_onecrl/test-int-ee.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIC6jCCAdKgAwIBAgIUJxK4lyTuLaUZSizHsOnLVv46BGswDQYJKoZIhvcNAQEL -BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyNDExMjcwMDAw -MDBaGA8yMDI3MDIwNTAwMDAwMFowJDEiMCAGA1UEAwwZRUUgaXNzdWVkIGJ5IGlu +MIIC6jCCAdKgAwIBAgIUF670Vapn3u3tuN6QAudX+aHArIwwDQYJKoZIhvcNAQEL +BQAwHDEaMBgGA1UEAwwRVGVzdCBJbnRlcm1lZGlhdGUwIhgPMjAyMzExMjgwMDAw +MDBaGA8yMDI2MDIwNTAwMDAwMFowJDEiMCAGA1UEAwwZRUUgaXNzdWVkIGJ5IGlu dGVybWVkaWF0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqIUahE jhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72xnAabbhqG8mvir1p1 a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lMwmtsDu0Vgg/xfq1p @@ -9,10 +9,10 @@ GrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF4LhIH6g304hD7ycW 2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20yvf8rR0l0wnvuRcO p2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xxj5kXMbiz/kkj+nJR xDHVA6zaGAo17Y0CAwEAAaMYMBYwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA0GCSqG -SIb3DQEBCwUAA4IBAQBlMSUdI8v8sQoeseQ1hHiKB1sPPJm7i+9HRHp49o64tBIj -V7zpBBn6t9/kq7+E+7Xn81gZHU8p3wrNeM5dLiGKUirUotKP1+JdrfiSlvP0ibSR -LBIK8QnPEAcZtddvr0Hkhqc3nNOAU3QTxYZQ0Kl8dPsjpnucSUBtl5XO52q5oUw1 -g+7Lt8+F4HARY0Vc9wDXvtpGM3OyUppA4PCuOmzTniI3IDrn+D/EHkjZvOYmIB61 -rzeXBJtNhSk0TgBFzWA4J68Impc9L3A7PPCGe7ha5dCRJpxw5dsA7RtCYL/5F9WF -6vc45Cp3pKnKX/xV3hbFBgUdo7zT8tkRijfpTob6 +SIb3DQEBCwUAA4IBAQAioc8D1Ke5YLvHYM4oFTjmUPRgdOX/usala4dD5ILUa167 +NgL8hKEpd+8fotczNfgcf58RscLTIrATeL2M3R2X+COrvhfvsJC6+AXfamwQJ1KO +cG3N7dVG8AsNEVznJOpHs4XLbpsLQJBeOiLZDxDW1m9yKWUZrba7PJd10QYcuxQW +hWE4ifzoJZCG+zhTjO4DzLw/RCw6BqPT3eICuDj5aEyOEUC6PZUoxftY6/ZsIyjN +S9fetwyok/LSWQ7y5W4FIyFKuey72XdAOLkugziqVTW7i6Uu2rRlXKxQQ4HUUm5C +g1JnN3GhT4RqeiTHlLT1RLayzk+NfB4D52cOQDhc -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_sanctions/default-ee.pem b/icecat/security/manager/ssl/tests/unit/test_sanctions/default-ee.pem index 59a8e992ee..3ea8610041 100644 --- a/icecat/security/manager/ssl/tests/unit/test_sanctions/default-ee.pem +++ b/icecat/security/manager/ssl/tests/unit/test_sanctions/default-ee.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIIDiTCCAnGgAwIBAgIUdYXDu3hW/Iu4CxcN3TvEwaRVzY4wDQYJKoZIhvcNAQEL -BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcw +MIIDiTCCAnGgAwIBAgIUHawh1VjXAIDCge7OJCxPJVTlw+swDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHVGVzdCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYw MjA1MDAwMDAwWjAaMRgwFgYDVQQDDA9UZXN0IEVuZC1lbnRpdHkwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq0 7PVoV2wke8HHJajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D @@ -12,10 +12,10 @@ gccwgZAGA1UdEQSBiDCBhYIJbG9jYWxob3N0gg0qLmV4YW1wbGUuY29tghUqLnBp bm5pbmcuZXhhbXBsZS5jb22CKCouaW5jbHVkZS1zdWJkb21haW5zLnBpbm5pbmcu ZXhhbXBsZS5jb22CKCouZXhjbHVkZS1zdWJkb21haW5zLnBpbm5pbmcuZXhhbXBs ZS5jb20wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzABhhZodHRwOi8vbG9jYWxo -b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBCI3rJYgO98nOqQtwpJWJXTsiI -QHtWuP+IwVNr7gKPavy18qcgMkgLufCc7EEP3/I1UKcRjhoNawEWG5SFWs2xDDKm -dJrLBdBqxIF5YAkA/qx2Po4XTh8P9codzaPU+rJ2PGhHZRPCB6D9sIloUGXUKAvq -RRkGE1RTKojUxO4Xu5xQbVPGpKTx72hKLRl0FtvqKbZMV6MQFwbTiEeQx8B/KpI3 -OnxQ3roD+UaMYSvHGrcod983Yw4fqCCZKzNbdiqwJFylULqYrKXbH/RU71qeStXt -Co04Zo96avbIjDTT2etQHy3vYF3Rq77fBScw4KI1Ak2CvbD04jcCoUQgZrzM +b3N0Ojg4ODgvMA0GCSqGSIb3DQEBCwUAA4IBAQBU6uKb5khzoLGqg2P5Vt1dsD4x +w3OeEWQH6YFB/MzIAeq/zKPNUsN6icxHVWiJbA5bAYYmJLcOKcfsfDi02+cJSS0w +Pj5zJmSLDRPbvlN5XGlKVRdG9au6elW6axvMtYpH08nSVcmEQxGbUJu+KGQdDBsL +XmRqydFMQWd8MqWnZCukHUnCfzbzjNtqW0BuFwUTU7nFn0qbm5wZZlS6GTbiR7d5 +l+XzcTDdiva2hnLzuK/riwgBu8A3Rfzw67SjdhSxioEqEA8iWYd72YjXp7n2/izY +FArJq3NG4RyxWpNt4DtyOLLY02B8JNG269qmyMpmIXrAsjgGbEgQ5NsheWx8 -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca1.pem b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca1.pem index f01507644b..76b41ef865 100644 --- a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca1.pem +++ b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca1.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- MIICzjCCAbagAwIBAgIBATANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDDA5TZWxm -LVNpZ25lZCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAZ +LVNpZ25lZCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAZ MRcwFQYDVQQDDA5TZWxmLVNpZ25lZCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODY H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk @@ -8,11 +8,11 @@ H72xnAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk 0jvF4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMM kd20yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaL L+Xxj5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMdMBswDAYDVR0TBAUwAwEB -/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAIucpMKElAiYJm8Aak+V -749ZQChevJeejALbVnPKMRCtI08xemda/cLJM+4kHws06dIU3jY9mEImX40Yx+lQ -FPQxJqqwH93Jqo2MyIO2DS3tW1EuPXdWuZjRctW/hQAKKPTo0+bIJB+xCDj3Udds -ZOuj75mofvJ563H7KFRDc8IYVmGeS38g8D4gVkKQEWMyOFiZFU50ko0m7t9G9vBS -F8RmXqptaaxTLjNwmH9cNAODre6Jbd+Vvj/pvuQ2sa+mmAIMIxhDqDjOsBKi238A -srls+MEf2uFAb7Cz9bCKVMnwVP5bNIpOAlJL+nwiaVsPCLNwCvDOls+hwNrhxSYd -2nE= +/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBABtEvdbP162Yy9UqTlW3 +lmNI01WmzeJiaC60HUmVVXOVJh6njEaTRVD/WR9OutJv0IVH5vUg6yHOM3MoEJSs +jJ4zVJVJwNiC3OxSJgnyvC49MIVvEh0U+3e+LoTupkyWCs9lRYwXmuRWvhuNXHrn +w1ehCsuWqmIqMi79749R38JpvcDHRmKMpzGRCSI8N3ET2FHn/PnlBGjtE4UcRSTW +Qq4fUczVoAO3BUQXo4JD+kI68IZfvlPL+COPilV1yRVvU/1onToh0zU4x7otaRx/ +YeaWFtFjkVVN1j61t9iX+X2j8IJjZ00BKrZfq9J6DqcNoX9+JkZRuo2Mf0qVgfY9 +c70= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca2.pem b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca2.pem index 0ebe175b51..7bf5245764 100644 --- a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca2.pem +++ b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ca2.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- MIICzjCCAbagAwIBAgIBAjANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDDA5TZWxm -LVNpZ25lZCBDQTAiGA8yMDI0MTEyNzAwMDAwMFoYDzIwMjcwMjA1MDAwMDAwWjAZ +LVNpZ25lZCBDQTAiGA8yMDIzMTEyODAwMDAwMFoYDzIwMjYwMjA1MDAwMDAwWjAZ MRcwFQYDVQQDDA5TZWxmLVNpZ25lZCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMF1xlJmCZ93CCpnkfG4dsN/XOU4sGxKzSKxy9RvplraKt1ByMJJ isSjs8H2FIf0G2mJQb2ApRw8EgJExYSkxEgzBeUTjAEGzwi+moYnYLrmoujzbyPF @@ -8,11 +8,11 @@ isSjs8H2FIf0G2mJQb2ApRw8EgJExYSkxEgzBeUTjAEGzwi+moYnYLrmoujzbyPF WQvFo+pJ/ZOx11NAXxdzdpmVhmYlR5ftQmkIiAgRQiBpmIpD/uSM5oeB3SK2ppzS g3UTH5MrEozihvp9JRwGKtJ+8Bbxh83VToMrNbiTD3S6kKqLx2FnJCqx/W1iFA0Y xMC4xo/DdIRXMkrX3obmVS8dHhkdcSFo07sCAwEAAaMdMBswDAYDVR0TBAUwAwEB -/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBACbn6JK+6gFRn08EfeZH -LJJv3CgsMxLJF9h80cjuFD3wkkX1RlOteAFm5xMpICTLo9xF8CbQWqxiosuFSg5P -eprsh72iyCLfXFtyCtY0h/NJ32ozCOzuc8wEgABKydD6f3qVeJ52Ygo0Yz0wRgJE -qT0F06ubBnHc1RSsG0+fidna2UuaprjVnWVJcL10qrc4Z3eYEEHHjS50zVvhez/r -kPUES/JqXtfE1uEKH1bK3UFRsz+albmSAN9Qjq7OxkkuFHSbxtg2TVyr4IYrVaEM -ynfMQQQjt7/iu9+j9xO4ZMb5nYscSAaI+r53RUjXXaPopmzcuoVE7Hdv2cEZxTLS -HyE= +/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAJKS/Ps5bSIFewhk+nH3 +V3KoIKHQap9g8Ba9BqB3641nxjlrSRHCkpcLLLM578y+Aqflj/hFiaf9057J9LyX +hJZBr3R9I49/qifyeV1kt6hsY1TubrKc174m8ReOPM2SKNz44cIBXclcNPczx1J9 +z7uSXjyCElXKuA1HYjNkQt7DvJDr/U+T+sIAhkFSCHaNRvHP4D3u0Utjbh/sRSel +GGUVHuy8Xk4lX/5Ha7l2mxEdEImpQBWGP7jvaH5gbWPAs4Ci5nwM1W/KyzNWduhb +qQZ7aC7zwu6o09P4MKg8M7COXPCC0GnXzqlCHGeIuvFaysWzddB6U/xHXq3Ch9VV +tKU= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee1.pem b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee1.pem index ce4ee1bf75..2dab6db806 100644 --- a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee1.pem +++ b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee1.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- MIICszCCAZugAwIBAgIBATANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBTZWxm -LVNpZ25lZCBDZXJ0MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +LVNpZ25lZCBDZXJ0MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBsxGTAXBgNVBAMMEFNlbGYtU2lnbmVkIENlcnQwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQC6iFGoRI4W1kH9braIBjYQPTwT2erkNUq07PVoV2wke8HH Jajg2B+9sZwGm24ahvJr4q9adWtqZHEIeqVap0WH9xzVJJwCfs1D/B5p0DggKZOr @@ -8,10 +8,10 @@ IMNJ5Nu5TMJrbA7tFYIP8X6taRqx0wI6iypB7qdw4A8Njf1mCyuwJJKkfbmIYXmQ sVeQPdI7xeC4SB+oN9OIQ+8nFthVt2Zaqn4CkC86exCABiTMHGyXrZZhW7filhLA dTGjDJHdtMr3/K0dJdMJ77kXDqdo4bN7LyJvaeO0ipVhHe4m1iWdq5EITjbLHCQE LL8Wiy/l8Y+ZFzG4s/5JI/pyUcQx1QOs2hgKNe2NAgMBAAEwDQYJKoZIhvcNAQEL -BQADggEBAG/GYhNIbygBtBAR2uLoE39AiBrXSM9SzaW3nD8ikdNFmaF6b2gb0Zn/ -jKuqeiH+sLibjSY0UMtRILZ3Msrt/lAVeNr+NKDMzmHJsANkBweprXu+Iwocnv17 -43fv/z3KPg8nJoBbfYVFPfGksUbYpe8jCXDoofA4f+WcNjeTFS0bY9QaiFjoPbaA -Zb8G4hnEo/48k4VV/1sk9/+5j1fYu0ztmis6lE/Lb60XSfol//i5UggKg3q4zZ2k -TkIUJdeUVEzcHN5t3/BWvrKloDDyiu0T6bzyvZaovyzYmd9NpAAw+2j49cfy3KfQ -MBwhhPgOTDQ5pp2CtCQYqaZ0ZPK71jE= +BQADggEBAAZXkMrqk6Lidpr+e05xQd56Y+6CQMZj2BkX8rdwblzRc7LJnRDp611y +7vS0gipTg8x3rHkhPH+Xbtsnjxy4GSaDo+jI0qOTC9YzeeCRN70KQ2H5nD0J+aPj +lfJCKIsMqYFPM6LxKQ3zHgRqHLCGzC0HJIAklvtsyN8sIUNv7fq0/QDnB+3YQmUb +uYaDF3BPGGGOX0poAY9pvdXZKpHYOpHsDExknj9Ld0JVEdA4lwg7oiX3xX/9gMLx +tS42swP2lqYzrhmqAntWA9yL6FMLKFUO1ezhDrG6SwBsNwImg3Dg3T6+ZfMcZ9lI +7Gnu/YzDSoRbp53R6PWfu0pCEhhsyD0= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee2.pem b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee2.pem index aec3ef8a40..fb6f1e0d20 100644 --- a/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee2.pem +++ b/icecat/security/manager/ssl/tests/unit/test_self_signed_certs/ee2.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- MIICszCCAZugAwIBAgIBAjANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQDDBBTZWxm -LVNpZ25lZCBDZXJ0MCIYDzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBa +LVNpZ25lZCBDZXJ0MCIYDzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBa MBsxGTAXBgNVBAMMEFNlbGYtU2lnbmVkIENlcnQwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQDBdcZSZgmfdwgqZ5HxuHbDf1zlOLBsSs0iscvUb6Za2ird QcjCSYrEo7PB9hSH9BtpiUG9gKUcPBICRMWEpMRIMwXlE4wBBs8IvpqGJ2C65qLo @@ -8,10 +8,10 @@ QcjCSYrEo7PB9hSH9BtpiUG9gKUcPBICRMWEpMRIMwXlE4wBBs8IvpqGJ2C65qLo /shJRFkLxaPqSf2TsddTQF8Xc3aZlYZmJUeX7UJpCIgIEUIgaZiKQ/7kjOaHgd0i tqac0oN1Ex+TKxKM4ob6fSUcBirSfvAW8YfN1U6DKzW4kw90upCqi8dhZyQqsf1t YhQNGMTAuMaPw3SEVzJK196G5lUvHR4ZHXEhaNO7AgMBAAEwDQYJKoZIhvcNAQEL -BQADggEBAL0K5ncVQWajsgnkc2DR7wg0xrsfvb+laoH+edwCnS4uznHk6m8eYVhp -2YHeQVtYK8K9TC/UtvyvbtoBM9gG/TujDPxh0AcwJg3W7VD0IpfEB7WKbG9HXulX -J8XPrbi4S6RMsPtNyhQhj8xVW2Hgi35IOapYyKMHaw4Gp553nas7YVJyQ+z8nz6e -d3gxJhfJHu85sowL423jvm+JN1MYJG03UsJxAihtxUVV/fURkbVOsziy+QmGUsot -NYmuo5BIpxTh/IB/DQzlWiiDhe21SO+C1zV2jhEOzrNuQmoQaXHIX1QTnO7OHNv3 -d3pP419EeuZ5+xwXioUDZW4ZOX0hkUc= +BQADggEBABW6zDg5Mh0XhN+U0oNK35dChWrw73mXoLorSV4ypbUkLCQMv2age0Kh +XAPPHQ59MjFR8NYKkjZu16vyNtO2MW2HXrQkJfuhbZqqL6PVUw1GmGVk639g5mgc +Xk3jgIpxHv9HSaK2nPPkRp9F+oKA7+IMWyXOGaRXRm1OB1FkdF6ugAXmyisLOKMJ +1c3R4BiseCQX8fNeTglnaaAnLH8gxUcyGBm5hXIae6QcKCKEyTBK6Hk3m5SCl54H +rhnl6E9Q1+yHx218B2qwsF4Hnd7+ZLXQUrofXWvIVlIkQX9Rea95Z20FeQxz5ico +2vzGlu7kbtBX7amJ9V26X1B5Enxir8I= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/alternate-root.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/alternate-root.zip index 56934069bd..13b1ad3a33 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/alternate-root.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/alternate-root.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1-256.zip index 2f6db1db7f..48dad7869a 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1.zip index 73f2d31ddc..eab36613a3 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-256.zip index 45ab9504e4..77a216d2a8 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1-256_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1-256.zip index 96bf9223b8..90ead54967 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1.zip index 7c2ec96726..e0d2922454 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-256.zip index 88d1391142..002d72a204 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-1_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1-256.zip index 063ec1a89f..31fd3f9a2a 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1.zip index c2a224f151..8afa915bc5 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-256.zip index d9c9d012e3..1ac21437fc 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1-256_sf-256_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1-256.zip index 4008cd8503..b12910d7d3 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1.zip index 545fb53085..461fb52ba0 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-256.zip index 628a8c5f69..8287ba86f2 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1-256_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1-256.zip index a388345f4b..fa63ba639c 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1.zip index 43f0753a64..617c305972 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-256.zip index 31b7c04c58..e213a8a3e4 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-1_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1-256.zip index f7947cb3fb..9ad021856e 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1.zip index ac74ed81ce..cc34b76d02 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-256.zip index 4c7bc3efa7..56fe293afc 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-1_sf-256_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1-256.zip index e211ba9b05..01ab62937c 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1.zip index bc2bab2385..2dd572cb56 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-256.zip index 5f696e0e35..68fe2c2544 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1-256_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1-256.zip index b9a78d4077..6f58e305e4 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1.zip index f8bc4757fd..367aac413d 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-256.zip index 58caa25bd7..8a7889631e 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-1_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1-256.zip index 8c3c729705..505447e5c8 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1.zip index 0f67e070db..2504eeddb3 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-1.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-256.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-256.zip index 3bf389a640..ec35947701 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-256.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/app_mf-256_sf-256_p7-256.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/big_manifest.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/big_manifest.zip index 85f2b470a9..49a8733c71 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/big_manifest.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/big_manifest.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_int_signed_with_pkcs7.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_int_signed_with_pkcs7.zip index 5e026fc836..19306bd764 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_int_signed_with_pkcs7.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_int_signed_with_pkcs7.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_multiple_signed_with_pkcs7.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_multiple_signed_with_pkcs7.zip index 8d392eda1f..6eb539d512 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_multiple_signed_with_pkcs7.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_multiple_signed_with_pkcs7.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_signed_with_pkcs7.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_signed_with_pkcs7.zip index 0bed9323a7..fed575fe0d 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_signed_with_pkcs7.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_signed_with_pkcs7.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_tampered_good_pkcs7.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_tampered_good_pkcs7.zip index a37f87f2bb..83321400a6 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_tampered_good_pkcs7.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/cose_tampered_good_pkcs7.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/empty_signerInfos.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/empty_signerInfos.zip index efb2b7287b..dc0a8aa3ad 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/empty_signerInfos.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/empty_signerInfos.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/huge_manifest.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/huge_manifest.zip index a9a40becef..efae129ce7 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/huge_manifest.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/huge_manifest.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_multiple_signed.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_multiple_signed.zip index fbc5b2b134..b214767e63 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_multiple_signed.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_multiple_signed.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_signed.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_signed.zip index 470e4203ec..e68da3c3a2 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_signed.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/only_cose_signed.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/unknown_issuer_app.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/unknown_issuer_app.zip index 2e39c88c5d..640f080bf4 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/unknown_issuer_app.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/unknown_issuer_app.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/unsigned_app.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/unsigned_app.zip index d5e8082c86..b0d37939f9 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/unsigned_app.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/unsigned_app.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_expired.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_expired.zip index d12fd9a75c..dcd11f119f 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_expired.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_expired.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_not_yet_valid.zip b/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_not_yet_valid.zip index 09cb3604a6..1cc1a275d3 100644 Binary files a/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_not_yet_valid.zip and b/icecat/security/manager/ssl/tests/unit/test_signed_apps/validity_not_yet_valid.zip differ diff --git a/icecat/security/manager/ssl/tests/unit/test_trust_anchors/int.pem b/icecat/security/manager/ssl/tests/unit/test_trust_anchors/int.pem index 3f2fe45097..f4faf747a8 100644 --- a/icecat/security/manager/ssl/tests/unit/test_trust_anchors/int.pem +++ b/icecat/security/manager/ssl/tests/unit/test_trust_anchors/int.pem @@ -1,6 +1,6 @@ -----BEGIN CERTIFICATE----- -MIICyjCCAbKgAwIBAgIUXUR7IXs87DerZvTrKcX7gJ/bUYowDQYJKoZIhvcNAQEL -BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyNDExMjcwMDAwMDBaGA8yMDI3MDIwNTAw +MIICyjCCAbKgAwIBAgIUFcJmHn9QiScZ2S5ajqrcQvsyEw0wDQYJKoZIhvcNAQEL +BQAwDTELMAkGA1UEAwwCY2EwIhgPMjAyMzExMjgwMDAwMDBaGA8yMDI2MDIwNTAw MDAwMFowDjEMMAoGA1UEAwwDaW50MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGc BptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmTqyDDSeTbuUzC @@ -8,10 +8,10 @@ a2wO7RWCD/F+rWkasdMCOosqQe6ncOAPDY39ZgsrsCSSpH25iGF5kLFXkD3SO8Xg uEgfqDfTiEPvJxbYVbdmWqp+ApAvOnsQgAYkzBxsl62WYVu34pYSwHUxowyR3bTK 9/ytHSXTCe+5Fw6naOGzey8ib2njtIqVYR3uJtYlnauRCE42yxwkBCy/Fosv5fGP mRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABox0wGzAMBgNVHRMEBTADAQH/MAsG -A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEARpSzjjrFYQrK4WJ7tddhq2Pz -TQlRF2gWhC3eHwfXtn8GSHF/8dxKYTesK5xVpS8xy4L6X5ty+9i8pQMsUiRvXAXG -2/ZpooSWaVeoK8FyST+SEP65c5o+bGPmLCxQsKRBJtCS91USHKQ/Zn+NCvlJsjLm -wbBsUhN/58iohXTE178lIrlB5nU50VawS0/iUSIj+/FXaEIQPzbwh+UBicavWW5h -Ad+KETsdmp84IGuLz4rg/33Q8MU9Qv6HB1JX24uDoE0oGyWdCUS4UxJEze4COgVQ -CvK4pfhr/L3ti0dGvrIW+VgWtySkwZkndfhNiNxHSz2lITrIzdmWuvGvIB6Y5g== +A1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEACY9zWDpxa1WuMa6lYsrEnjR9 +0CWNdt0DZxaEZgEMGapsjGYtupZBtnMOm24He+H0GpyuLi+dSIkl/MK5tqbYm5+/ +X/7/E7xD6Zy+1eu4R9xhPllbKCNwKXaG7THv7XOABKGeNn+NonZPNBdcynLoas+p +6aFzf8hRltjwWgDViBFmwX6RKTVkkQET3D+mAHwITYMwKAd4TbRVLJ6NZVM/r55h +/GyCNxUiw9ISdTBGabvVx7P6kpLeHdO11gMwazQrqkpeFIASDNJXK/msGT9bgWx5 +KRBtVDnQ++7Z5JIUsqTzWWG1GriJa6nzZqUEiB2cYMKmSROpQbFuFb+EBCia6g== -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_27_months-ev_int_60_months-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_27_months-ev_int_60_months-evroot.pem index 82b2c7444a..82fbdf098b 100644 --- a/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_27_months-ev_int_60_months-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_27_months-ev_int_60_months-evroot.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIUL2mo5+eFJ4iFyzvFijvJ2Zc9IMEwDQYJKoZIhvcNAQEL -BQAwIjEgMB4GA1UEAwwXZXZfaW50XzYwX21vbnRocy1ldnJvb3QwIhgPMjAyNDEx -MTUxMjAwMDBaGA8yMDI3MDIxNjEyMDAwMFowMjEwMC4GA1UEAwwnZXZfZWVfMjdf +MIIDbTCCAlWgAwIBAgIUD2vdxDMMDSqPKK7EQ2OwkMZmIEwwDQYJKoZIhvcNAQEL +BQAwIjEgMB4GA1UEAwwXZXZfaW50XzYwX21vbnRocy1ldnJvb3QwIhgPMjAyMzEx +MTYxMjAwMDBaGA8yMDI2MDIxNjEyMDAwMFowMjEwMC4GA1UEAwwnZXZfZWVfMjdf bW9udGhzLWV2X2ludF82MF9tb250aHMtZXZyb290MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -12,10 +12,10 @@ BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GGMIGDMGAGCCsG AQUFBwEBBFQwUjBQBggrBgEFBQcwAYZEaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4 ODg4L2V2X2VlXzI3X21vbnRocy1ldl9pbnRfNjBfbW9udGhzLWV2cm9vdC8wHwYD VR0gBBgwFjAUBhIrBgEEAetJhRqFGoUaAYN0CQEwDQYJKoZIhvcNAQELBQADggEB -AJUt4shHaxPEn9e7FKW8YC6R8V45+8FH4ePo/YgQrdIXcKoJ5fbpZ7/t4ypBsfWP -R4DAdAheKb7S8xmQrunJ9MDBzrFxJahgMMoMZqMpCKvN8MDALYosXCbguAIKgFbj -46NLLlIhFoIT9nHXR/wWu01krT6Il+MUFor3Zu6kKesACTs023IdCq6TvajnBJ7K -ZBfNkL2xdlU02Jz7woyi2G4Wd9RTGXUr6jkmCNbGeOeUcY3nN/JDfeqP7ckJTAsy -Qf/DkS2TReN80zyyamKS7/gXb+d5Qg18Mzv2uWkRA2aZA7DdbP+IwHdplzK5Wkef -w3Ps99iz8/8mcL9nwiijI7s= +AGTVM1R4Isc6PId61yhAFabYGthDGqv8AShWOXtIY1Tt/Secb7iZRNuEL1BZHx9N +0Eoh6vov3LMP1Nrl4H63gv74+pBNf48pKeQXVv4HbJk0Sfzg4ndSAgXtWhF5c6P2 +TWbgGHQwu8opiCXh/i1XPERclMnc4i/Rl4NZWwvVpGv61oPDGHe0t/41/OIlJ91A +pe62XK2x+8FFCsNiYo035yc6PtTU8M8EhCUy/MSwwRD5gPqIhKURI+yCJZpMBXJb +n9Hhg450e+HaIlC9Mh9pBcTQ7xRNm+iZ1tnGR5CNcpEI2b3DR4gchn6030WhvW17 +pwK0SCR4A7O3VvQiju5IWdg= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_28_months-ev_int_60_months-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_28_months-ev_int_60_months-evroot.pem index d1318ff14d..53cbaaa5c7 100644 --- a/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_28_months-ev_int_60_months-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_validity/ev_ee_28_months-ev_int_60_months-evroot.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIUJcxTPRTX52YblvEVFtEtVBzHgowwDQYJKoZIhvcNAQEL -BQAwIjEgMB4GA1UEAwwXZXZfaW50XzYwX21vbnRocy1ldnJvb3QwIhgPMjAyNDEw -MzEwMDAwMDBaGA8yMDI3MDMwNDAwMDAwMFowMjEwMC4GA1UEAwwnZXZfZWVfMjhf +MIIDbTCCAlWgAwIBAgIUN65xAJ8cvFhi0AfoJLEOdKxGk6QwDQYJKoZIhvcNAQEL +BQAwIjEgMB4GA1UEAwwXZXZfaW50XzYwX21vbnRocy1ldnJvb3QwIhgPMjAyMzEx +MDEwMDAwMDBaGA8yMDI2MDMwNDAwMDAwMFowMjEwMC4GA1UEAwwnZXZfZWVfMjhf bW9udGhzLWV2X2ludF82MF9tb250aHMtZXZyb290MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08E9nq5DVKtOz1aFdsJHvB xyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc1SScAn7NQ/weadA4ICmT @@ -12,10 +12,10 @@ BCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQIDAQABo4GGMIGDMGAGCCsG AQUFBwEBBFQwUjBQBggrBgEFBQcwAYZEaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4 ODg4L2V2X2VlXzI4X21vbnRocy1ldl9pbnRfNjBfbW9udGhzLWV2cm9vdC8wHwYD VR0gBBgwFjAUBhIrBgEEAetJhRqFGoUaAYN0CQEwDQYJKoZIhvcNAQELBQADggEB -AGahqCxatFtBydwpznZTHjHTa8Rk/9+wubievBJutLWNsvMZSOZsMPmuAOqVZt6X -58BCuTpquP6PWf20pMYC1K9vyqfkps3K8zLNZ00kbhSSsrkK208vSrkgrJb6RlJY -SlPDVXvPkXmvVBDH3WDrgKbgDDTgICKJO4LXuBnSducV0JHAmLOlJGb5aCWyV4kk -+ypQ0gJvLGTB6M3oYfWizk+gAlmUYYyvyiU7I7xrjLpnL5C/spqJ0A1nqkl0Ckk3 -hZzC1qdWFDzllcPYVl7vu9DBFksUk+Us7tgqOgrtbgBWKCl1Fa7nG/akNV+/SpzT -dBvM3UQLPfCpTC7KbFh0zr8= +ABP741kSLguyZE/XvMV7Z5ZVP1MBuN6PrnavTRHSRwbSI96DxqCdjvwKXSQPPb3N +izEwKZWgjqU0oGanIveAKZNKnp54PtkBIlkNpZF94wiNlg3pxPcq9k7tzt0k+k3Q +2qb6XiOTcQG7SyedE4jcSgPSHQJDZP1ZnF56gXYNZnu56QSDhGrnAwM93wM+HF2J +kSySg/7TLCtG1pXv6JvU3Ups4KP66oSOh83N7DiFOqIMoPyhUTt8//JNap9I5eVL +tFIe0M0WGRhV97pdAUJwwNZK7dfJ0dCO4lKJl2RDC7qt4FUgebiO80X7nyy05Ss/ +UY5LGYUQn2BSAb+BVGlVPiY= -----END CERTIFICATE----- diff --git a/icecat/security/manager/ssl/tests/unit/test_validity/ev_int_60_months-evroot.pem b/icecat/security/manager/ssl/tests/unit/test_validity/ev_int_60_months-evroot.pem index 7d8797696a..d1f3ba3186 100644 --- a/icecat/security/manager/ssl/tests/unit/test_validity/ev_int_60_months-evroot.pem +++ b/icecat/security/manager/ssl/tests/unit/test_validity/ev_int_60_months-evroot.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDVzCCAj+gAwIBAgIUVX3U4DbzEgQZHiQIuKJZfKFhDq4wDQYJKoZIhvcNAQEL -BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjMwNzAzMTIwMDAwWhgPMjAyODA3 -MDExMjAwMDBaMCIxIDAeBgNVBAMMF2V2X2ludF82MF9tb250aHMtZXZyb290MIIB +MIIDVzCCAj+gAwIBAgIUIw9Qp8SdBBI2z9ML/txWJ253aG0wDQYJKoZIhvcNAQEL +BQAwETEPMA0GA1UEAwwGZXZyb290MCIYDzIwMjIwNzAzMTIwMDAwWhgPMjAyNzA3 +MDIxMjAwMDBaMCIxIDAeBgNVBAMMF2V2X2ludF82MF9tb250aHMtZXZyb290MIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuohRqESOFtZB/W62iAY2ED08 E9nq5DVKtOz1aFdsJHvBxyWo4NgfvbGcBptuGobya+KvWnVramRxCHqlWqdFh/cc 1SScAn7NQ/weadA4ICmTqyDDSeTbuUzCa2wO7RWCD/F+rWkasdMCOosqQe6ncOAP @@ -11,10 +11,10 @@ YR3uJtYlnauRCE42yxwkBCy/Fosv5fGPmRcxuLP+SSP6clHEMdUDrNoYCjXtjQID AQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMFAGCCsGAQUFBwEB BEQwQjBABggrBgEFBQcwAYY0aHR0cDovL3d3dy5leGFtcGxlLmNvbTo4ODg4L2V2 X2ludF82MF9tb250aHMtZXZyb290LzAfBgNVHSAEGDAWMBQGEisGAQQB60mFGoUa -hRoBg3QJATANBgkqhkiG9w0BAQsFAAOCAQEAomGD1DiXMTbztqYjNk4gED2BZ5Jr -K1Paz8Augc9u71teaTovfd2eNfUihN3ECKcwolk/mL4AJzN65clPJxjhtLrF2cFb -LsKfR1NOKsA90l5OtFO4uonNIozb6A4CmjwBms5bOv+YeU5KC6YBv9mZ6Xfp/BNZ -2IKmyUKDgEpYVhWycuWkzG1ow20jLQvLOjEc1fOPH4Wp/aFEii1kNd2EdsLaZfi+ -NGwkXo9T9pWXKZYjzNMHvYPS2f4/9CleBDFAj4AN2H0Hqdq3sTOk7kVD9a4Nx8dI -jFHVUCNdnGyEduIGL9WB/h66AqK5YlIQO8zfIBP26ncj/lyxLyMS8ngd9g== +hRoBg3QJATANBgkqhkiG9w0BAQsFAAOCAQEAR2hZ0/yUAEIXcbfGCFOyvxP6cpRK +/6xftWh6IgGpcbZ1vpBAiTSbTKTFcgW9/lK+fRPpH4JrGMXjRiRnfT4JscP4e/cV +1vsWagVFcTAf3m5HqcLT+IJ7FbJANVl4myG36ceOgTNAJ/31e3VucCzhULgh1VaJ +ZL96kwIyTUsQHkPkPhtwrRZ5bhSo79Hysab3bmtI+qZKSxjrdD+zmpaY2GoInF3T +luqRj9dnhALoomRLjyBExBjyh9vN2vVOM8XH3IeQttvFqhUMMO0sSv7R+LHsulj6 +X2Cd9+00QJGueX235+/rWwX1stRZtoNnoH/ZpT/U2GE04xw52NecLbajew== -----END CERTIFICATE----- diff --git a/icecat/security/manager/tools/PreloadedHPKPins.json b/icecat/security/manager/tools/PreloadedHPKPins.json index 5f6fd4e27f..1ed39056fe 100644 --- a/icecat/security/manager/tools/PreloadedHPKPins.json +++ b/icecat/security/manager/tools/PreloadedHPKPins.json @@ -26,19 +26,23 @@ { "chromium_data" : { - "cert_file_url": "https://raw.githubusercontent.com/chromium/chromium/refs/heads/main/net/http/transport_security_state_static.pins", - "json_file_url": "https://raw.githubusercontent.com/chromium/chromium/refs/heads/main/net/http/transport_security_state_static_pins.json", + "cert_file_url": "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/net/http/transport_security_state_static.pins?format=TEXT", + "json_file_url": "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/net/http/transport_security_state_static_pins.json?format=TEXT", "substitute_pinsets": { // Use the larger google_root_pems pinset instead of google "google": "google_root_pems" }, "production_pinsets": [ - "google_root_pems" + "google_root_pems", + "facebook", + "ncsccs" ], "production_domains": [ // Chrome's test domains. "pinningtest.appspot.com", - "pinning-test.badssl.com" + "pinning-test.badssl.com", + // SpiderOak + "spideroak.com" ], "exclude_domains" : [] }, @@ -81,6 +85,11 @@ { "name": "google_root_pems", "sha256_hashes": [ + "AffirmTrust Commercial", + "AffirmTrust Networking", + "AffirmTrust Premium", + "AffirmTrust Premium ECC", + "Baltimore CyberTrust Root", "Comodo AAA Services root", "COMODO Certification Authority", "COMODO ECC Certification Authority", @@ -93,6 +102,10 @@ "DigiCert Global Root G3", "DigiCert High Assurance EV Root CA", "DigiCert Trusted Root G4", + "Entrust Root Certification Authority", + "Entrust Root Certification Authority - EC1", + "Entrust Root Certification Authority - G2", + "Entrust.net Premium 2048 Secure Server CA", "GlobalSign ECC Root CA - R4", "GlobalSign ECC Root CA - R5", "GlobalSign Root CA", diff --git a/icecat/security/manager/tools/log_list.json b/icecat/security/manager/tools/log_list.json index f3af9497d6..d556a00a03 100644 --- a/icecat/security/manager/tools/log_list.json +++ b/icecat/security/manager/tools/log_list.json @@ -1,6 +1,6 @@ { - "version": "85.43", - "log_list_timestamp": "2026-04-12T13:36:12Z", + "version": "76.4", + "log_list_timestamp": "2025-11-30T12:54:31Z", "operators": [ { "name": "Google", @@ -8,6 +8,22 @@ "google-ct-logs@googlegroups.com" ], "logs": [ + { + "description": "Google 'Argon2025h2' log", + "log_id": "EvFONL1TckyEBhnDjz96E/jntWKHiJxtMAWE6+WGJjo=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr+TzlCzfpie1/rJhgxnIITojqKk9VK+8MZoc08HjtsLzD8e5yjsdeWVhIiWCVk6Y6KomKTYeKGBv6xVu93zQug==", + "url": "https://ct.googleapis.com/logs/us1/argon2025h2/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2023-11-26T12:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "Google 'Argon2026h1' log", "log_id": "DleUvPOuqT4zGyyZB7P3kN+bwj1xMiXdIaklrGHFTiE=", @@ -47,8 +63,8 @@ "url": "https://ct.googleapis.com/logs/us1/argon2027h1/", "mmd": 86400, "state": { - "usable": { - "timestamp": "2025-12-28T00:30:00Z" + "qualified": { + "timestamp": "2025-10-18T00:30:00Z" } }, "temporal_interval": { @@ -56,6 +72,22 @@ "end_exclusive": "2027-07-01T00:00:00Z" } }, + { + "description": "Google 'Xenon2025h2' log", + "log_id": "3dzKNJXX4RYF55Uy+sef+D0cUN/bADoUEnYKLKy7yCo=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa+Cv7QZ8Pe/ZDuRYSwTYKkeZkIl6uTaldcgEuMviqiu1aJ2IKaKlz84rmhWboD6dlByyt0ryUexA7WJHpANJhg==", + "url": "https://ct.googleapis.com/logs/eu1/xenon2025h2/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2023-11-26T12:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "Google 'Xenon2026h1' log", "log_id": "lpdkv1VYl633Q4doNwhCd+nwOtX2pPM2bkakPw/KqcY=", @@ -95,8 +127,8 @@ "url": "https://ct.googleapis.com/logs/eu1/xenon2027h1/", "mmd": 86400, "state": { - "usable": { - "timestamp": "2025-12-28T00:30:00Z" + "qualified": { + "timestamp": "2025-10-18T00:30:00Z" } }, "temporal_interval": { @@ -113,6 +145,22 @@ "ct-logs@cloudflare.com" ], "logs": [ + { + "description": "Cloudflare 'Nimbus2025'", + "log_id": "zPsPaoVxCWX+lZtTzumyfCLphVwNl422qX5UwP5MDbA=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGoAaFRkZI3m0+qB5jo3VwdzCtZaSfpTgw34UfAoNLUaonRuxQWUMX5jEWhd5gVtKFEHsr6ldDqsSGXHNQ++7lw==", + "url": "https://ct.cloudflare.com/logs/nimbus2025/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2023-12-19T07:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-01-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "Cloudflare 'Nimbus2026'", "log_id": "yzj3FYl8hKFEX1vB3fvJbvKaWc1HCmkFhbDLFMMUWOc=", @@ -154,6 +202,54 @@ "ctops@digicert.com" ], "logs": [ + { + "description": "DigiCert Yeti2025 Log", + "log_id": "fVkeEuF4KnscYWd8Xv340IdcFKBOlZ65Ay/ZDowuebg=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE35UAXhDBAfc34xB00f+yypDtMplfDDn+odETEazRs3OTIMITPEy1elKGhj3jlSR82JGYSDvw8N8h8bCBWlklQw==", + "url": "https://yeti2025.ct.digicert.com/log/", + "mmd": 86400, + "state": { + "retired": { + "timestamp": "2025-07-24T00:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-01-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, + { + "description": "DigiCert Nessie2025 Log", + "log_id": "5tIxY0B3jMEQQQbXcbnOwdJA9paEhvu6hzId/R43jlA=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8vDwp4uBLgk5O59C2jhEX7TM7Ta72EN/FklXhwR/pQE09+hoP7d4H2BmLWeadYC3U6eF1byrRwZV27XfiKFvOA==", + "url": "https://nessie2025.ct.digicert.com/log/", + "mmd": 86400, + "state": { + "retired": { + "timestamp": "2025-04-15T23:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-01-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, + { + "description": "DigiCert 'Wyvern2025h2' Log", + "log_id": "7TxL1ugGwqSiAFfbyyTiOAHfUS/txIbFcA8g3bc+P+A=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4NtB7+QEvctrLkzM8WzeQVh//pT2evZg7Yt2cqOiHDETMjWh8gjSaMU0p1YIHGPeleKBaZeNHqi3ZlEldU14Lg==", + "url": "https://wyvern.ct.digicert.com/2025h2/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2024-08-29T03:09:43Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-07T00:00:00Z" + } + }, { "description": "DigiCert 'Wyvern2026h1'", "log_id": "ZBHEbKQS7KeJHKICLgC8q08oB9QeNSer6v7VA8l9zfA=", @@ -193,8 +289,8 @@ "url": "https://wyvern.ct.digicert.com/2027h1/", "mmd": 86400, "state": { - "usable": { - "timestamp": "2025-12-20T18:00:00Z" + "qualified": { + "timestamp": "2025-10-10T18:00:00Z" } }, "temporal_interval": { @@ -209,8 +305,8 @@ "url": "https://wyvern.ct.digicert.com/2027h2/", "mmd": 86400, "state": { - "usable": { - "timestamp": "2025-12-20T18:00:00Z" + "qualified": { + "timestamp": "2025-10-10T18:00:00Z" } }, "temporal_interval": { @@ -218,6 +314,22 @@ "end_exclusive": "2028-01-01T00:00:00Z" } }, + { + "description": "DigiCert 'Sphinx2025h2' Log", + "log_id": "pELFBklgYVSPD9TqnPt6LSZFTYepfy/fRVn2J086hFQ=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQYxQE1SxGQW3f0ogbqN1Y8o09Mx06jI7tosDFKhSfzKHXlmeD6sYnilstXJ3GidUhV3BeySoNOPNiM7UUBu+aQ==", + "url": "https://sphinx.ct.digicert.com/2025h2/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2024-08-29T03:09:43Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-07T00:00:00Z" + } + }, { "description": "DigiCert 'Sphinx2026h1'", "log_id": "SZybad4dfOz8Nt7Nh2SmuFuvCoeAGdFVUvvp6ynd+MM=", @@ -257,8 +369,8 @@ "url": "https://sphinx.ct.digicert.com/2027h1/", "mmd": 86400, "state": { - "usable": { - "timestamp": "2025-12-20T18:00:00Z" + "qualified": { + "timestamp": "2025-10-10T18:00:00Z" } }, "temporal_interval": { @@ -273,8 +385,8 @@ "url": "https://sphinx.ct.digicert.com/2027h2/", "mmd": 86400, "state": { - "usable": { - "timestamp": "2025-12-20T18:00:00Z" + "qualified": { + "timestamp": "2025-10-10T18:00:00Z" } }, "temporal_interval": { @@ -291,6 +403,46 @@ "ctops@sectigo.com" ], "logs": [ + { + "description": "Sectigo 'Sabre2025h2'", + "log_id": "GgT/SdBUHUCv9qDDv/HYxGcvTuzuI0BomGsXQC7ciX0=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhRMRLXvzk4HkuXzZZDvntYOZZnlZR2pCXta9Yy63kUuuvFbExW4JoNdkGsjBr4mL9VjYuut7g1Lp9OClzc2SzA==", + "url": "https://sabre2025h2.ct.sectigo.com/", + "mmd": 86400, + "state": { + "readonly": { + "timestamp": "2025-09-18T17:20:00Z", + "final_tree_head": { + "sha256_root_hash": "eJj4IHvdYpljVsW/YCery+QsSRHbuYBME7H912a5P2Y=", + "tree_size": 1213760846 + } + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, + { + "description": "Sectigo 'Mammoth2025h2'", + "log_id": "rxgaKNaMo+CpikycZ6sJ+Lu8IrquvLE4o6Gd0/m2Aw0=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiOLHs9c3o5HXs8XaB1EEK4HtwkQ7daDmZeFKuhuxnKkqhDEprh2L8TOfEi6QsRVnZqB8C1tif2yaajCbaAIWbw==", + "url": "https://mammoth2025h2.ct.sectigo.com/", + "mmd": 86400, + "state": { + "readonly": { + "timestamp": "2025-08-29T20:40:00Z", + "final_tree_head": { + "sha256_root_hash": "aLJ1GqZiobxICL7qQFPCZzdkjU/TKvnA/CIVqU+LDy4=", + "tree_size": 865235446 + } + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "Sectigo 'Mammoth2026h1'", "log_id": "JS+Uwisp6W6fQRpyBytpXFtS/5epDSVAu/zcUexN7gs=", @@ -371,6 +523,22 @@ "end_exclusive": "2027-01-01T00:00:00Z" } }, + { + "description": "Sectigo 'Elephant2025h2'", + "log_id": "DR28iUTp9QBVQtctPhRMzEMIKrbqHpTf1wZlfS6G8wE=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OlLeGW2qUZGUoQERydw3GlayEO3ZK3418zThY1tDYr85ASme6ZOL/2DXyOXw8RCwVsKhRbOqMEOxW4Q2p4KQg==", + "url": "https://elephant2025h2.ct.sectigo.com/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2025-07-22T01:33:20Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "Sectigo 'Elephant2026h1'", "log_id": "0W6ppWgHfmY1oD83pd28A6U8QRIU1IgY9ekxsyPLlQQ=", @@ -435,6 +603,22 @@ "end_exclusive": "2028-01-01T00:00:00Z" } }, + { + "description": "Sectigo 'Tiger2025h2'", + "log_id": "XKV30pt/i69Bntjsq/tty67DhTcC1XRvF02tPJNKqWo=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFUl5keBbWVckXMv6WSWToTeGwi9DSNCI2WZlIENBkA/zADmmS58w33/f0JhC2KEkWS+4T7/bYOXv4dDNzzrExg==", + "url": "https://tiger2025h2.ct.sectigo.com/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2025-09-18T23:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "Sectigo 'Tiger2026h1'", "log_id": "FoMtq/CpJQ8P8DqlRf/Iv8gj0IdL9gQpJ/jnHzMT9fo=", @@ -508,6 +692,22 @@ "sre@letsencrypt.org" ], "logs": [ + { + "description": "Let's Encrypt 'Oak2025h2'", + "log_id": "DeHyMCvTDcFAYhIJ6lUu/Ed0fLHX6TDvDkIetH5OqjQ=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXYwB63GyNLkS9L1vqKNnP10+jrW+lldthxg090fY4eG40Xg1RvANWqrJ5GVydc9u8H3cYZp9LNfkAmqrr2NqQ==", + "url": "https://oak.ct.letsencrypt.org/2025h2/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2023-11-26T12:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-06-20T00:00:00Z", + "end_exclusive": "2026-01-20T00:00:00Z" + } + }, { "description": "Let's Encrypt 'Oak2026h1'", "log_id": "GYbUxyiqb/66A294Kk0BkarOLXIxD67OXXBBLSVMx9Q=", @@ -515,8 +715,8 @@ "url": "https://oak.ct.letsencrypt.org/2026h1/", "mmd": 86400, "state": { - "retired": { - "timestamp": "2026-02-28T00:00:00Z" + "usable": { + "timestamp": "2024-11-04T00:00:00Z" } }, "temporal_interval": { @@ -531,8 +731,8 @@ "url": "https://oak.ct.letsencrypt.org/2026h2/", "mmd": 86400, "state": { - "retired": { - "timestamp": "2026-02-28T00:00:00Z" + "usable": { + "timestamp": "2024-11-04T00:00:00Z" } }, "temporal_interval": { @@ -542,6 +742,23 @@ } ], "tiled_logs": [ + { + "description": "Let's Encrypt 'Sycamore2025h2d'", + "log_id": "W/beU/H7+sSaGFl0aUWhpqconV5wpg9IRQ5Ya7mucrg=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERI8grd3rsuE95/3Rk/Jn9rGBrpcvDqD6Y5Ooz1E+xABGl3w6JLdFHfzSFZvEFX/Goar6nbzQHtV75ud4R0Iafg==", + "submission_url": "https://log.sycamore.ct.letsencrypt.org/2025h2d/", + "monitoring_url": "https://mon.sycamore.ct.letsencrypt.org/2025h2d/", + "mmd": 60, + "state": { + "usable": { + "timestamp": "2025-11-27T03:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-06-19T00:00:00Z", + "end_exclusive": "2025-12-18T00:00:00Z" + } + }, { "description": "Let's Encrypt 'Sycamore2026h1'", "log_id": "pcl4kl1XRheChw3YiWYLXFVki30AQPLsB2hR0YhpGfc=", @@ -610,6 +827,23 @@ "end_exclusive": "2027-12-16T00:00:00Z" } }, + { + "description": "Let's Encrypt 'Willow2025h2d'", + "log_id": "5NAXdhyRORG+9HOWrNjSRljCT7WTtRvqxVknYuiFPBU=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElX78WOZsrDp7/LDFvsGytclanWhJ2oEwdgytKo21ZrCzbJ6raFAmZ1bMFh4B/0+e1aWtfhG2wgCM2ex/aDgZuA==", + "submission_url": "https://log.willow.ct.letsencrypt.org/2025h2d/", + "monitoring_url": "https://mon.willow.ct.letsencrypt.org/2025h2d/", + "mmd": 60, + "state": { + "usable": { + "timestamp": "2025-11-27T03:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-06-18T00:00:00Z", + "end_exclusive": "2025-12-17T00:00:00Z" + } + }, { "description": "Let's Encrypt 'Willow2026h1'", "log_id": "4yON8o2iiOCq4Kzw+pDJhfC2v/XSpSewAfwcRFjEtug=", @@ -686,6 +920,38 @@ "trustasia-ct-logs@trustasia.com" ], "logs": [ + { + "description": "TrustAsia Log2025a", + "log_id": "KOKBOP2DIUXpqdaqdTdtg3eohRKzwH9yQUgh3L3pjGY=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcOWxpAl5K534o6DfGO+VXQNse6GRqbiAfexcAgjibi98MnC9loRfpmLpZbV8kFi6ItX59WlUt6iUTjIJriYRTQ==", + "url": "https://ct2025-a.trustasia.com/log2025a/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2023-11-26T12:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-01-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, + { + "description": "TrustAsia Log2025b", + "log_id": "KCyL3YEP+QkSCs4W1uDsIBvqgqOkrxnZ7/tZ6D/cQmg=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqqCL22cUXZeJHQiNBtfBlI6w+kxG1VMIeCsEU2zz3rHRU0DakFfmGp48xwO4vS+pz+h7XuFLYOU4Q2CXwVsvZQ==", + "url": "https://ct2025-b.trustasia.com/log2025b/", + "mmd": 86400, + "state": { + "usable": { + "timestamp": "2023-11-26T12:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-01-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "TrustAsia 'log2026a'", "log_id": "dNudWPfUfp39eHoWKpkcGM9pjafHKZGMmhiwRQ26RLw=", @@ -725,8 +991,8 @@ "url": "https://hetu2027.trustasia.com/hetu2027/", "mmd": 86400, "state": { - "usable": { - "timestamp": "2025-12-28T00:30:00Z" + "qualified": { + "timestamp": "2025-10-18T00:30:00Z" } }, "temporal_interval": { @@ -735,25 +1001,7 @@ } } ], - "tiled_logs": [ - { - "description": "TrustAsia Luoshu2027", - "log_id": "VzRIzG4dLA3JS2nyh9Hv5IPHolxQxTILuzrep29usEE=", - "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEumSYzy6dUQlwTckPzKMKApMRinqxHIBlLfmrvx1SdMH1RTACi1wb1V18ss8YjlaC7Pch2OQa8OfRevub4Y9BDQ==", - "submission_url": "https://luoshu2027.trustasia.com/luoshu2027/", - "monitoring_url": "https://luoshu2027.trustasia.com/luoshu2027/", - "mmd": 60, - "state": { - "usable": { - "timestamp": "2026-02-11T18:30:00Z" - } - }, - "temporal_interval": { - "start_inclusive": "2026-12-24T00:00:00Z", - "end_exclusive": "2028-01-08T00:00:00Z" - } - } - ] + "tiled_logs": [] }, { "name": "Geomys", @@ -779,6 +1027,23 @@ } ], "tiled_logs": [ + { + "description": "Geomys 'Tuscolo2025h2'", + "log_id": "750EQi4gtDIQJ1TfUtJRRgJ/hEwH/YZeySLub86fe7w=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEK9d4GGtzbkwwsYpEtvnU9KKgZr67MsGlB7mnF8DW9bHnngHzPzXPbdo7n+FyCwSDYqEHbal1Z0CCVyZD6wQ/ow==", + "submission_url": "https://tuscolo2025h2.sunlight.geomys.org/", + "monitoring_url": "https://tuscolo2025h2.skylight.geomys.org/", + "mmd": 60, + "state": { + "usable": { + "timestamp": "2025-08-31T07:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "Geomys 'Tuscolo2026h1'", "log_id": "cX6V88I4im2x44RJPTHhWqliCHYtQgDgBQzQZ7WmYeI=", @@ -873,6 +1138,23 @@ } ], "tiled_logs": [ + { + "description": "IPng Networks 'Halloumi2025h2'", + "log_id": "+3xjpo0eBq3Qg4ibuNQyHLJFROv2/mlyKRkuOD5ebiM=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqJxSnCcMhWikCFeWo1RiplGaVEZL5Vn4KEJYZM97Ro5XuTg4h6+n807utfPS7qqpLv5me/ddlpKFGoFfkMBrAQ==", + "submission_url": "https://halloumi2025h2.log.ct.ipng.ch/", + "monitoring_url": "https://halloumi2025h2.mon.ct.ipng.ch/", + "mmd": 60, + "state": { + "qualified": { + "timestamp": "2025-10-07T18:30:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "IPng Networks 'Halloumi2026h1'", "log_id": "fz035/iSPY5xZb6w0+q+5yoivkbAy4TEFtTkuYJky8I=", @@ -881,8 +1163,8 @@ "monitoring_url": "https://halloumi2026h1.mon.ct.ipng.ch/", "mmd": 60, "state": { - "usable": { - "timestamp": "2025-12-17T18:30:00Z" + "qualified": { + "timestamp": "2025-10-07T18:30:00Z" } }, "temporal_interval": { @@ -898,8 +1180,8 @@ "monitoring_url": "https://halloumi2026h2a.mon.ct.ipng.ch/", "mmd": 60, "state": { - "usable": { - "timestamp": "2026-01-01T07:30:00Z" + "qualified": { + "timestamp": "2025-10-22T07:30:00Z" } }, "temporal_interval": { @@ -915,8 +1197,8 @@ "monitoring_url": "https://halloumi2027h1.mon.ct.ipng.ch/", "mmd": 60, "state": { - "usable": { - "timestamp": "2025-12-17T18:30:00Z" + "qualified": { + "timestamp": "2025-10-07T18:30:00Z" } }, "temporal_interval": { @@ -932,8 +1214,8 @@ "monitoring_url": "https://halloumi2027h2.mon.ct.ipng.ch/", "mmd": 60, "state": { - "usable": { - "timestamp": "2025-12-17T18:30:00Z" + "qualified": { + "timestamp": "2025-10-07T18:30:00Z" } }, "temporal_interval": { @@ -941,6 +1223,23 @@ "end_exclusive": "2028-01-01T00:00:00Z" } }, + { + "description": "IPng Networks 'Gouda2025h2'", + "log_id": "GoudanQ8ze1gH3O9MJcIHbyuxKYTnJKwtUDDE3sg7AU=", + "key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpHiP24MNo8pgt5RNoawsvGIwSaVEKNqdzYCUXtMu0MM15t63d26eDUDz+nkQjACuRo4LRJcyia7I0anEdNH9wA==", + "submission_url": "https://gouda2025h2.log.ct.ipng.ch/", + "monitoring_url": "https://gouda2025h2.mon.ct.ipng.ch/", + "mmd": 60, + "state": { + "usable": { + "timestamp": "2025-11-27T03:00:00Z" + } + }, + "temporal_interval": { + "start_inclusive": "2025-07-01T00:00:00Z", + "end_exclusive": "2026-01-01T00:00:00Z" + } + }, { "description": "IPng Networks 'Gouda2026h1'", "log_id": "GoudaUpXmMiZoMqIvfSPwLRWYMzDYA0fcfRp/8fRrKM=", diff --git a/icecat/security/nss/TAG-INFO b/icecat/security/nss/TAG-INFO deleted file mode 100644 index 1d6a11e506..0000000000 --- a/icecat/security/nss/TAG-INFO +++ /dev/null @@ -1 +0,0 @@ -NSS_3_112_5_RTM \ No newline at end of file diff --git a/icecat/security/nss/cpputil/nss_scoped_ptrs.h b/icecat/security/nss/cpputil/nss_scoped_ptrs.h index 45f32332f8..db3429908a 100644 --- a/icecat/security/nss/cpputil/nss_scoped_ptrs.h +++ b/icecat/security/nss/cpputil/nss_scoped_ptrs.h @@ -56,15 +56,6 @@ struct ScopedDelete { void operator()(SEC_PKCS12DecoderContext* dcx) { SEC_PKCS12DecoderFinish(dcx); } - void operator()(SEC_PKCS7DecoderContext* dcx) { - SEC_PKCS7ContentInfo* cinfo = SEC_PKCS7DecoderFinish(dcx); - if (cinfo) { - SEC_PKCS7DestroyContentInfo(cinfo); - } - } - void operator()(SEC_PKCS7ContentInfo* cinfo) { - SEC_PKCS7DestroyContentInfo(cinfo); - } void operator()(NSSInitContext* init) { NSS_ShutdownContext(init); } }; @@ -105,8 +96,6 @@ SCOPED(SECKEYPrivateKeyList); SCOPED(SECKEYPublicKey); SCOPED(SECMODModule); SCOPED(SEC_PKCS12DecoderContext); -SCOPED(SEC_PKCS7DecoderContext); -SCOPED(SEC_PKCS7ContentInfo); #undef SCOPED diff --git a/icecat/security/nss/doc/rst/releases/index.rst b/icecat/security/nss/doc/rst/releases/index.rst index bb81de412a..31e44f9c7f 100644 --- a/icecat/security/nss/doc/rst/releases/index.rst +++ b/icecat/security/nss/doc/rst/releases/index.rst @@ -8,7 +8,6 @@ Release Notes :glob: :hidden: - nss_3_112_3.rst nss_3_112_2.rst nss_3_112_1.rst nss_3_112.rst @@ -92,6 +91,6 @@ Release Notes **NSS 3.112** is the latest version of NSS. Complete release notes are available here: :ref:`mozilla_projects_nss_nss_3_112_release_notes` - **NSS 3.112.3 (ESR)** is the latest ESR version of NSS. - Complete release notes are available here: :ref:`mozilla_projects_nss_nss_3_112_3_release_notes` + **NSS 3.112.2 (ESR)** is the latest ESR version of NSS. + Complete release notes are available here: :ref:`mozilla_projects_nss_nss_3_112_2_release_notes` diff --git a/icecat/security/nss/doc/rst/releases/nss_3_112_3.rst b/icecat/security/nss/doc/rst/releases/nss_3_112_3.rst deleted file mode 100644 index b1823390ce..0000000000 --- a/icecat/security/nss/doc/rst/releases/nss_3_112_3.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. _mozilla_projects_nss_nss_3_112_3_release_notes: - -NSS 3.112.3 release notes -======================== - -`Introduction <#introduction>`__ --------------------------------- - -.. container:: - - Network Security Services (NSS) 3.112.3 was released on *3 October 2025**. - -`Distribution Information <#distribution_information>`__ --------------------------------------------------------- - -.. container:: - - The HG tag is NSS_3_112_3_RTM. NSS 3.112.3 requires NSPR 4.36 or newer. - - NSS 3.112.3 source distributions are available on ftp.mozilla.org for secure HTTPS download: - - - Source tarballs: - https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_112_3_RTM/src/ - - Other releases are available :ref:`mozilla_projects_nss_releases`. - -.. _changes_in_nss_3.112.3: - -`Changes in NSS 3.112.3 <#changes_in_nss_3.112.3>`__ ------------------------------------------------------------------- - -.. container:: - - - Bug 2009552 - avoid integer overflow in platform-independent ghash - diff --git a/icecat/security/nss/doc/rst/releases/nss_3_112_4.rst b/icecat/security/nss/doc/rst/releases/nss_3_112_4.rst deleted file mode 100644 index bcba968fd4..0000000000 --- a/icecat/security/nss/doc/rst/releases/nss_3_112_4.rst +++ /dev/null @@ -1,52 +0,0 @@ -.. _mozilla_projects_nss_nss_3_112_4_release_notes: - -NSS 3.112.4 release notes -======================== - -`Introduction <#introduction>`__ --------------------------------- - -.. container:: - - Network Security Services (NSS) 3.112.4 was released on *13 April 2026**. - -`Distribution Information <#distribution_information>`__ --------------------------------------------------------- - -.. container:: - - The HG tag is NSS_3_112_4_RTM. NSS 3.112.4 requires NSPR 4.36 or newer. - - NSS 3.112.4 source distributions are available on ftp.mozilla.org for secure HTTPS download: - - - Source tarballs: - https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_112_4_RTM/src/ - - Other releases are available :ref:`mozilla_projects_nss_releases`. - -.. _changes_in_nss_3.112.4: - -`Changes in NSS 3.112.4 <#changes_in_nss_3.112.4>`__ ------------------------------------------------------------------- - -.. container:: - - - Bug 2030135 - improve error handling in PK11_ImportPrivateKeyInfoAndReturnKey. - - Bug 2029752 - Improving the allocation of S/MIME DecryptSymKey. - - Bug 2029462 - store email on subject cache_entry in NSS trust domain. - - Bug 2029425 - Heap use-after-free in cert_VerifyCertChainOld via dangling certsList[] entry on NameConstraints violation. - - Bug 2029323 - Improve size calculations in CMS content buffering. - - Bug 2028001 - avoid integer overflow while escaping RFC822 Names. - - Bug 2027378 - Reject excessively large ASN.1 SEQUENCE OF in quickder. - - Bug 2027365 - Deep copy profile data in CERT_FindSMimeProfile. - - Bug 2027345 - Improve input validation in DSAU signature decoding. - - Bug 2026311 - avoid integer overflow in RSA_EMSAEncodePSS. - - Bug 2019357 - RSA_EMSAEncodePSS should validate the length of mHash. - - Bug 2026156 - Add a maximum cert uncompressed len and tests. - - Bug 2026089 - Clarify extension negotiation mechanism for TLS Handshakes. - - Bug 2023209 - ensure permittedSubtrees don't match wildcards that could be outside the permitted tree. - - Bug 2023207 - Fix integer underflow in tls13_AEAD when ciphertext is shorter than tag. - - Bug 2019224 - Remove invalid PORT_Free(). - - Bug 1964722 - free digest objects in SEC_PKCS7DecoderFinish if they haven't already been freed. - - Bug 1935995 - make ss->ssl3.hs.cookie an owned-copy of the cookie. - diff --git a/icecat/security/nss/doc/rst/releases/nss_3_112_5.rst b/icecat/security/nss/doc/rst/releases/nss_3_112_5.rst deleted file mode 100644 index e83b497729..0000000000 --- a/icecat/security/nss/doc/rst/releases/nss_3_112_5.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _mozilla_projects_nss_nss_3_112_5_release_notes: - -NSS 3.112.5 release notes -========================= - -`Introduction <#introduction>`__ --------------------------------- - -.. container:: - - Network Security Services (NSS) 3.112.5 was released on *23 April 2026*. - -`Distribution Information <#distribution_information>`__ --------------------------------------------------------- - -.. container:: - - The HG tag is NSS_3_112_5_RTM. NSS 3.112.5 requires NSPR 4.38.2 or newer. - - NSS 3.112.5 source distributions are available on ftp.mozilla.org for secure HTTPS download: - - - Source tarballs: - https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_112_5_RTM/src/ - - Other releases are available :ref:`mozilla_projects_nss_releases`. - -.. _changes_in_nss_3.112.5: - -`Changes in NSS 3.112.5 <#changes_in_nss_3.112.5>`__ ------------------------------------------------------------------- - -.. container:: - - - Bug 2033783 - reject DTLS 1.3 Server Hello after HVR without capping ss->vrange.max. - - Bug 2034185 - update to version 2.84 of builtins module. - diff --git a/icecat/security/nss/gtests/der_gtest/der_gtest.gyp b/icecat/security/nss/gtests/der_gtest/der_gtest.gyp index 686ed4d071..c169b648ea 100644 --- a/icecat/security/nss/gtests/der_gtest/der_gtest.gyp +++ b/icecat/security/nss/gtests/der_gtest/der_gtest.gyp @@ -14,7 +14,6 @@ 'der_getint_unittest.cc', 'der_quickder_unittest.cc', 'p12_import_unittest.cc', - 'p7_import_unittest.cc', 'secasn1decode_unittest.cc', '<(DEPTH)/gtests/common/gtests.cc' ], diff --git a/icecat/security/nss/gtests/der_gtest/p12_import_unittest.cc b/icecat/security/nss/gtests/der_gtest/p12_import_unittest.cc index abb9208a89..31020231a0 100644 --- a/icecat/security/nss/gtests/der_gtest/p12_import_unittest.cc +++ b/icecat/security/nss/gtests/der_gtest/p12_import_unittest.cc @@ -231,13 +231,6 @@ static const uint8_t cert_p12[] = { 0x51, 0x04, 0x08, 0xa1, 0x52, 0xdd, 0x64, 0x46, 0xe9, 0x9e, 0x3e, 0x02, 0x02, 0x08, 0x00}; -unsigned char leak_p12[] = { - 0x30, 0x82, 0x20, 0x20, 0x02, 0x01, 0xff, 0x30, 0x82, 0x09, 0x20, 0x06, - 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x50, - 0x30, 0x3f, 0x02, 0x01, 0x20, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, - 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, 0x30, 0x20, 0x06, 0x09, - 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01}; - class PK12ImportTest : public ::testing::Test {}; TEST_F(PK12ImportTest, ImportPK12With2P7) { @@ -255,20 +248,4 @@ TEST_F(PK12ImportTest, ImportPK12With2P7) { ASSERT_EQ(SECFailure, rv); } -TEST_F(PK12ImportTest, FailsToImportButShouldNotLeak) { - SECItem password = {siBuffer, nullptr, 0}; - ScopedPK11SlotInfo slot(PK11_GetInternalSlot()); - ScopedSEC_PKCS12DecoderContext dcx( - SEC_PKCS12DecoderStart(&password, slot.get(), nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr)); - ASSERT_TRUE(dcx); - SECStatus rv = SEC_PKCS12DecoderUpdate( - dcx.get(), const_cast(leak_p12), sizeof(leak_p12)); - ASSERT_EQ(SECSuccess, rv); - rv = SEC_PKCS12DecoderVerify(dcx.get()); - // This is not a valid PKCS12 file, so a failing return value is expected. - // However, the implementation shouldn't leak memory as a result. - ASSERT_EQ(SECFailure, rv); -} - } // namespace nss_test diff --git a/icecat/security/nss/gtests/der_gtest/p7_import_unittest.cc b/icecat/security/nss/gtests/der_gtest/p7_import_unittest.cc deleted file mode 100644 index 92fa90ea8e..0000000000 --- a/icecat/security/nss/gtests/der_gtest/p7_import_unittest.cc +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=2 et sw=2 tw=80: */ -/* 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 "nss.h" -#include "secpkcs7.h" - -#include "gtest/gtest.h" -#include "nss_scoped_ptrs.h" - -namespace nss_test { - -// This is an invalid PKCS7 message. Among other things, it contains some -// unknown hash OIDs. This should fail to parse, but it should be safe to try. -static const uint8_t p7_with_unknown_hashes[] = { - 0x30, 0x4d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, - 0x02, 0xa0, 0x40, 0x30, 0x3e, 0x02, 0x01, 0x20, 0x31, 0x27, 0x30, 0x0b, - 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05, 0x30, - 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05, - 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, - 0x04, 0x30, 0x10, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, - 0x07, 0x01, 0xa0, 0x03, 0x04, 0x01, 0x00}; - -// This is an invalid PKCS7 message. It contains multiple hash OIDs (that's not -// what makes it invalid). When it fails to parse, the associated digest data -// structures should be freed correctly. -static const uint8_t p7_with_multiple_hashes[] = { - 0x30, 0x4d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, - 0x02, 0xa0, 0x40, 0x30, 0x3e, 0x02, 0x01, 0x20, 0x31, 0x27, 0x30, 0x0b, - 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x30, - 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, - 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, - 0x04, 0x30, 0x10, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, - 0x07, 0x01, 0xa0, 0x03, 0x04, 0x01, 0x00}; - -class P7ImportTest : public ::testing::Test {}; - -TEST_F(P7ImportTest, FailSafeWithUnknownHashes) { - ScopedSEC_PKCS7DecoderContext dcx(SEC_PKCS7DecoderStart( - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr)); - ASSERT_TRUE(dcx); - SECStatus rv = SEC_PKCS7DecoderUpdate( - dcx.get(), reinterpret_cast(p7_with_unknown_hashes), - sizeof(p7_with_unknown_hashes)); - ASSERT_EQ(SECFailure, rv); -} - -TEST_F(P7ImportTest, NoLeakWithMultipleHashes) { - ScopedSEC_PKCS7DecoderContext dcx(SEC_PKCS7DecoderStart( - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr)); - ASSERT_TRUE(dcx); - SECStatus rv = SEC_PKCS7DecoderUpdate( - dcx.get(), reinterpret_cast(p7_with_multiple_hashes), - sizeof(p7_with_multiple_hashes)); - ASSERT_EQ(SECFailure, rv); -} - -} // namespace nss_test diff --git a/icecat/security/nss/gtests/mozpkix_gtest/pkixnames_tests.cpp b/icecat/security/nss/gtests/mozpkix_gtest/pkixnames_tests.cpp index be52ea9123..998c29f601 100644 --- a/icecat/security/nss/gtests/mozpkix_gtest/pkixnames_tests.cpp +++ b/icecat/security/nss/gtests/mozpkix_gtest/pkixnames_tests.cpp @@ -2132,45 +2132,6 @@ static const NameConstraintParams NAME_CONSTRAINT_PARAMS[] = Result::ERROR_BAD_DER, Result::ERROR_BAD_DER }, - // Wildcard SANs have subtle outcomes. - { ByteString(), DNSName("*.example.com"), - GeneralSubtree(DNSName(".example.com")), - Success, - Result::ERROR_CERT_NOT_IN_NAME_SPACE - }, - { ByteString(), DNSName("*.example.com"), - GeneralSubtree(DNSName("example.com")), - Success, - Result::ERROR_CERT_NOT_IN_NAME_SPACE - }, - // A certificate with a wildcard SAN entry like `*.example.com` can't be - // issued by a CA with a DNSName name constraint entry like `foo.example.com` - // in either the permitted or excluded subtrees. If in the permitted subtree, - // the certificate would be valid for `bar.example.com`, which would violate - // the constraint. If in the excluded subtree, the certificate would be valid - // for `foo.example.com`, which would violate the constraint. - { ByteString(), DNSName("*.example.com"), - GeneralSubtree(DNSName("foo.example.com")), - Result::ERROR_CERT_NOT_IN_NAME_SPACE, - Result::ERROR_CERT_NOT_IN_NAME_SPACE - }, - { ByteString(), DNSName("*.foo.example.com"), - GeneralSubtree(DNSName("example.com")), - Success, - Result::ERROR_CERT_NOT_IN_NAME_SPACE - }, - { ByteString(), DNSName("*.example.com"), - GeneralSubtree(DNSName("foo.example.org")), - Result::ERROR_CERT_NOT_IN_NAME_SPACE, - Success - }, - // `*invalid.example.com` is an invalid presented DNSID. - { ByteString(), DNSName("*invalid.example.com"), - GeneralSubtree(DNSName("invalid.example.com")), - Result::ERROR_BAD_DER, - Result::ERROR_BAD_DER - }, - ///////////////////////////////////////////////////////////////////////////// // Basic IP Address constraints (non-CN-ID) diff --git a/icecat/security/nss/gtests/ssl_gtest/ssl_certificate_compression_unittest.cc b/icecat/security/nss/gtests/ssl_gtest/ssl_certificate_compression_unittest.cc index 39dcc70418..985d1a52b1 100644 --- a/icecat/security/nss/gtests/ssl_gtest/ssl_certificate_compression_unittest.cc +++ b/icecat/security/nss/gtests/ssl_gtest/ssl_certificate_compression_unittest.cc @@ -272,25 +272,6 @@ static SECStatus SimpleXorWithDifferentValueDecode(const SECItem* input, return SECSuccess; } -/* Decode function that does NOT check input->len != outputLen (unlike - * SimpleXorCertCompDecode). It always sets receivedOutputLen = outputLen and - * returns SECSuccess, bypassing the actualCertLen != decodedCertLen fallback - * so that only the explicit uncompressed_length bounds check blocks an - * oversized allocation. */ -static int called_count = 0; -static SECStatus PermissiveXorCertCompDecode(const SECItem* input, - uint8_t* output, size_t outputLen, - size_t* receivedOutputLen) { - called_count++; - size_t copy = PR_MIN(input->len, outputLen); - PORT_Memcpy(output, input->data, copy); - for (size_t i = 0; i < copy; i++) { - output[i] ^= 0x55; - } - *receivedOutputLen = outputLen; - return SECSuccess; -} - /* These tests are checking the behaviour * using the different compression algorithms. * @@ -519,6 +500,8 @@ TEST_F(TlsConnectStreamTls13, EXPECT_TRUE(SSLInt_ExtensionNegotiated(server_->ssl_fd(), ssl_certificate_compression_xtn)); + EXPECT_TRUE(SSLInt_ExtensionNegotiated(client_->ssl_fd(), + ssl_certificate_compression_xtn)); uint16_t certCompressionAlg = filterExtension->getCertCompressionAlg(); EXPECT_EQ(certCompressionAlg, serverPreferableAlg.id); @@ -981,56 +964,6 @@ static SECStatus SimpleXorCertCompEncode_returns_buffer_size_0( * } CompressedCertificate; */ -/* Overwrites the uncompressed_length field of a CompressedCertificate message - * with an arbitrary uint24 value, enabling precise boundary-value testing. */ -class TLSCompressedCertUncompressedLenSetter : public TlsRecordFilter { - public: - TLSCompressedCertUncompressedLenSetter(const std::shared_ptr& a, - uint32_t len) - : TlsRecordFilter(a), len_(len) { - EnableDecryption(); - } - - protected: - PacketFilter::Action FilterRecord(const TlsRecordHeader& header, - const DataBuffer& record, size_t* offset, - DataBuffer* output) override { - uint8_t inner_content_type; - DataBuffer plaintext; - uint16_t protection_epoch = 0; - TlsRecordHeader out_header(header); - - if (!Unprotect(header, record, &protection_epoch, &inner_content_type, - &plaintext, &out_header)) { - return KEEP; - } - - uint64_t skip = - findPointerToHandshakeType(plaintext, ssl_hs_compressed_certificate); - if (skip >= plaintext.len() || - plaintext.data()[skip] != ssl_hs_compressed_certificate) { - return KEEP; - } - - /* uncompressed_length is a uint24 at offset 6 from the HandshakeType byte. - */ - plaintext.Write(skip + 6, len_, 3); - - DataBuffer ciphertext; - bool ok = Protect(spec(protection_epoch), out_header, inner_content_type, - plaintext, &ciphertext, &out_header); - EXPECT_TRUE(ok); - if (!ok) { - return KEEP; - } - *offset = out_header.Write(output, *offset, ciphertext); - return CHANGE; - } - - private: - uint32_t len_; -}; - TEST_F(TlsConnectStreamTls13, CertificateCompression_CompressionFunctionCreatesABufferOfSize0) { ConfigureVersion(SSL_LIBRARY_VERSION_TLS_1_3); @@ -1281,47 +1214,6 @@ TEST_F(TlsConnectStreamTls13, client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CERTIFICATE); } -/* Boundary test for the 100KB uncompressed_length cap. - * At limit (100KB): passes bounds check, Certificate parser sees trailing - * zeros and fires illegal_parameter (tls13con.c:4362) — proves the bounds - * check did not trigger. - * One over (100KB+1): caught by the bounds check (tls13con.c:4220) and fires - * bad_certificate. */ -TEST_F(TlsConnectStreamTls13, CertificateCompression_UncompressedLenBoundary) { - SSLCertificateCompressionAlgorithm t = {0xff01, "test function", - SimpleXorCertCompEncode, - PermissiveXorCertCompDecode}; - - auto run = [&](uint32_t len, uint8_t expected_alert, bool expect_decoded) { - called_count = 0; - Reset(); - EnsureTlsSetup(); - MakeTlsFilter(server_, len); - EXPECT_EQ(SECSuccess, - SSLExp_SetCertificateCompressionAlgorithm(server_->ssl_fd(), t)); - EXPECT_EQ(SECSuccess, - SSLExp_SetCertificateCompressionAlgorithm(client_->ssl_fd(), t)); - ExpectAlert(client_, expected_alert); - StartConnect(); - client_->SetServerKeyBits(server_->server_key_bits()); - client_->Handshake(); - server_->Handshake(); - ASSERT_TRUE_WAIT((client_->state() != TlsAgent::STATE_CONNECTING), 5000); - ASSERT_EQ(TlsAgent::STATE_ERROR, client_->state()); - client_->ExpectSendAlert(kTlsAlertCloseNotify); - server_->ExpectReceiveAlert(kTlsAlertCloseNotify); - client_->CheckErrorCode(SSL_ERROR_RX_MALFORMED_CERTIFICATE); - if (expect_decoded) { - EXPECT_EQ(called_count, 1); - } else { - EXPECT_EQ(0, called_count); - } - }; - - run(100 * 1024, kTlsAlertIllegalParameter, true); - run(100 * 1024 + 1, kTlsAlertBadCertificate, false); -} - TEST_F(TlsConnectStreamTls13, CertificateCompression_ReceivedCertificateTooLong) { EnsureTlsSetup(); @@ -1499,6 +1391,8 @@ TEST_F(TlsConnectStreamTls13, CertificateCompression_PostAuth) { server_->ReadBytes(50); EXPECT_EQ(1U, called); + EXPECT_TRUE(SSLInt_ExtensionNegotiated(client_->ssl_fd(), + ssl_certificate_compression_xtn)); SendReceive(60); client_->CheckClientAuthCompleted(); @@ -1575,6 +1469,8 @@ TEST_F(TlsConnectStreamTls13, server_->ReadBytes(50); EXPECT_EQ(1U, called); + EXPECT_TRUE(SSLInt_ExtensionNegotiated(client_->ssl_fd(), + ssl_certificate_compression_xtn)); SendReceive(60); client_->CheckClientAuthCompleted(); diff --git a/icecat/security/nss/lib/certdb/alg1485.c b/icecat/security/nss/lib/certdb/alg1485.c index 6c471152c9..6f543b259e 100644 --- a/icecat/security/nss/lib/certdb/alg1485.c +++ b/icecat/security/nss/lib/certdb/alg1485.c @@ -1400,13 +1400,13 @@ appendItemToBuf(char* dest, SECItem* src, PRUint32* pRemaining) if (dest && src && src->data && src->len && src->data[0]) { PRUint32 len = src->len; PRUint32 i; - PRUint64 reqLen = (PRUint64)len + 1; + PRUint32 reqLen = len + 1; /* are there any embedded control characters ? */ for (i = 0; i < len; i++) { if (NEEDS_HEX_ESCAPE(src->data[i])) reqLen += 2; } - if (*pRemaining >= reqLen) { + if (*pRemaining > reqLen) { for (i = 0; i < len; ++i) { PRUint8 c = src->data[i]; if (NEEDS_HEX_ESCAPE(c)) { @@ -1422,7 +1422,7 @@ appendItemToBuf(char* dest, SECItem* src, PRUint32* pRemaining) } } *dest++ = '\0'; - *pRemaining -= (PRUint32)reqLen; + *pRemaining -= reqLen; } } return dest; @@ -1440,7 +1440,7 @@ cert_GetCertificateEmailAddresses(CERTCertificate* cert) char* pBuf = NULL; PORTCheapArenaPool tmpArena; PRUint32 maxLen = 0; - PRUint32 finalLen = 0; + PRInt32 finalLen = 0; SECStatus rv; SECItem subAltName; diff --git a/icecat/security/nss/lib/certdb/stanpcertdb.c b/icecat/security/nss/lib/certdb/stanpcertdb.c index e9eac5b208..55007517ea 100644 --- a/icecat/security/nss/lib/certdb/stanpcertdb.c +++ b/icecat/security/nss/lib/certdb/stanpcertdb.c @@ -1045,15 +1045,10 @@ CERT_FindSMimeProfile(CERTCertificate *cert) nssSMIMEProfile *stanProfile; stanProfile = nssCryptoContext_FindSMIMEProfileForCertificate(cc, c); if (stanProfile) { - if (stanProfile->profileData) { - rvItem = - SECITEM_AllocItem(NULL, NULL, - stanProfile->profileData->size); - if (rvItem) { - PORT_Memcpy(rvItem->data, - stanProfile->profileData->data, - stanProfile->profileData->size); - } + rvItem = + SECITEM_AllocItem(NULL, NULL, stanProfile->profileData->size); + if (rvItem) { + rvItem->data = stanProfile->profileData->data; } nssSMIMEProfile_Destroy(stanProfile); } diff --git a/icecat/security/nss/lib/certhigh/certvfy.c b/icecat/security/nss/lib/certhigh/certvfy.c index abc95d247e..f50b1df97f 100644 --- a/icecat/security/nss/lib/certhigh/certvfy.c +++ b/icecat/security/nss/lib/certhigh/certvfy.c @@ -736,7 +736,7 @@ cert_VerifyCertChainOld(CERTCertDBHandle *handle, CERTCertificate *cert, certsList = tmpCertsList; } for (i = 0; i < subjectNameListLen; i++) { - certsList[namesCount + i] = CERT_DupCertificate(subjectCert); + certsList[namesCount + i] = subjectCert; } namesCount += subjectNameListLen; namesList = cert_CombineNamesLists(namesList, subjectNameList); @@ -993,11 +993,6 @@ loser: rv = SECFailure; done: if (certsList != NULL) { - for (int i = 0; i < namesCount; i++) { - if (certsList[i]) { - CERT_DestroyCertificate(certsList[i]); - } - } PORT_Free(certsList); } if (issuerCert) { diff --git a/icecat/security/nss/lib/ckfw/builtins/certdata.txt b/icecat/security/nss/lib/ckfw/builtins/certdata.txt index 150f746b62..82fca6c761 100644 --- a/icecat/security/nss/lib/ckfw/builtins/certdata.txt +++ b/icecat/security/nss/lib/ckfw/builtins/certdata.txt @@ -371,6 +371,140 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE +# +# Certificate "Baltimore CyberTrust Root" +# +# Issuer: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Serial Number: 33554617 (0x20000b9) +# Subject: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Not Valid Before: Fri May 12 18:46:00 2000 +# Not Valid After : Mon May 12 23:59:00 2025 +# Fingerprint (SHA-256): 16:AF:57:A9:F6:76:B0:AB:12:60:95:AA:5E:BA:DE:F2:2A:B3:11:19:D6:44:AC:95:CD:4B:93:DB:F3:F2:6A:EB +# Fingerprint (SHA1): D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Baltimore CyberTrust Root" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061 +\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155 +\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171 +\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004 +\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142 +\145\162\124\162\165\163\164\040\122\157\157\164 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061 +\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155 +\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171 +\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004 +\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142 +\145\162\124\162\165\163\164\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\002\000\000\271 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\167\060\202\002\137\240\003\002\001\002\002\004\002 +\000\000\271\060\015\006\011\052\206\110\206\367\015\001\001\005 +\005\000\060\132\061\013\060\011\006\003\125\004\006\023\002\111 +\105\061\022\060\020\006\003\125\004\012\023\011\102\141\154\164 +\151\155\157\162\145\061\023\060\021\006\003\125\004\013\023\012 +\103\171\142\145\162\124\162\165\163\164\061\042\060\040\006\003 +\125\004\003\023\031\102\141\154\164\151\155\157\162\145\040\103 +\171\142\145\162\124\162\165\163\164\040\122\157\157\164\060\036 +\027\015\060\060\060\065\061\062\061\070\064\066\060\060\132\027 +\015\062\065\060\065\061\062\062\063\065\071\060\060\132\060\132 +\061\013\060\011\006\003\125\004\006\023\002\111\105\061\022\060 +\020\006\003\125\004\012\023\011\102\141\154\164\151\155\157\162 +\145\061\023\060\021\006\003\125\004\013\023\012\103\171\142\145 +\162\124\162\165\163\164\061\042\060\040\006\003\125\004\003\023 +\031\102\141\154\164\151\155\157\162\145\040\103\171\142\145\162 +\124\162\165\163\164\040\122\157\157\164\060\202\001\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001 +\017\000\060\202\001\012\002\202\001\001\000\243\004\273\042\253 +\230\075\127\350\046\162\232\265\171\324\051\342\341\350\225\200 +\261\260\343\133\216\053\051\232\144\337\241\135\355\260\011\005 +\155\333\050\056\316\142\242\142\376\264\210\332\022\353\070\353 +\041\235\300\101\053\001\122\173\210\167\323\034\217\307\272\271 +\210\265\152\011\347\163\350\021\100\247\321\314\312\142\215\055 +\345\217\013\246\120\322\250\120\303\050\352\365\253\045\207\212 +\232\226\034\251\147\270\077\014\325\367\371\122\023\057\302\033 +\325\160\160\360\217\300\022\312\006\313\232\341\331\312\063\172 +\167\326\370\354\271\361\150\104\102\110\023\322\300\302\244\256 +\136\140\376\266\246\005\374\264\335\007\131\002\324\131\030\230 +\143\365\245\143\340\220\014\175\135\262\006\172\363\205\352\353 +\324\003\256\136\204\076\137\377\025\355\151\274\371\071\066\162 +\165\317\167\122\115\363\311\220\054\271\075\345\311\043\123\077 +\037\044\230\041\134\007\231\051\275\306\072\354\347\156\206\072 +\153\227\164\143\063\275\150\030\061\360\170\215\166\277\374\236 +\216\135\052\206\247\115\220\334\047\032\071\002\003\001\000\001 +\243\105\060\103\060\035\006\003\125\035\016\004\026\004\024\345 +\235\131\060\202\107\130\314\254\372\010\124\066\206\173\072\265 +\004\115\360\060\022\006\003\125\035\023\001\001\377\004\010\060 +\006\001\001\377\002\001\003\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\006\060\015\006\011\052\206\110\206\367 +\015\001\001\005\005\000\003\202\001\001\000\205\014\135\216\344 +\157\121\150\102\005\240\335\273\117\047\045\204\003\275\367\144 +\375\055\327\060\343\244\020\027\353\332\051\051\266\171\077\166 +\366\031\023\043\270\020\012\371\130\244\324\141\160\275\004\141 +\152\022\212\027\325\012\275\305\274\060\174\326\351\014\045\215 +\206\100\117\354\314\243\176\070\306\067\021\117\355\335\150\061 +\216\114\322\263\001\164\356\276\165\136\007\110\032\177\160\377 +\026\134\204\300\171\205\270\005\375\177\276\145\021\243\017\300 +\002\264\370\122\067\071\004\325\251\061\172\030\277\240\052\364 +\022\231\367\243\105\202\343\074\136\365\235\236\265\310\236\174 +\056\310\244\236\116\010\024\113\155\375\160\155\153\032\143\275 +\144\346\037\267\316\360\362\237\056\273\033\267\362\120\210\163 +\222\302\342\343\026\215\232\062\002\253\216\030\335\351\020\021 +\356\176\065\253\220\257\076\060\224\172\320\063\075\247\145\017 +\365\374\216\236\142\317\107\104\054\001\135\273\035\265\062\322 +\107\322\070\056\320\376\201\334\062\152\036\265\356\074\325\374 +\347\201\035\031\303\044\102\352\143\071\251 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Baltimore CyberTrust Root" +# Issuer: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Serial Number: 33554617 (0x20000b9) +# Subject: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Not Valid Before: Fri May 12 18:46:00 2000 +# Not Valid After : Mon May 12 23:59:00 2025 +# Fingerprint (SHA-256): 16:AF:57:A9:F6:76:B0:AB:12:60:95:AA:5E:BA:DE:F2:2A:B3:11:19:D6:44:AC:95:CD:4B:93:DB:F3:F2:6A:EB +# Fingerprint (SHA1): D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Baltimore CyberTrust Root" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\324\336\040\320\136\146\374\123\376\032\120\210\054\170\333\050 +\122\312\344\164 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\254\266\224\245\234\027\340\327\221\122\233\261\227\006\246\344 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061 +\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155 +\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171 +\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004 +\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142 +\145\162\124\162\165\163\164\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\002\000\000\271 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + # # Certificate "Entrust Root Certification Authority" # @@ -3189,10 +3323,7 @@ CKA_VALUE MULTILINE_OCTAL \201\370\021\234 END CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -# For Server Distrust After: Tue Apr 15 23:59:59 2025 -CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL -\062\065\060\064\061\065\062\063\065\071\065\071\132 -END +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE # Trust for "ePKI Root Certification Authority" @@ -5239,6 +5370,175 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE +# +# Certificate "Explicitly Distrust DigiNotar Root CA" +# +# Issuer: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Serial Number:0f:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff +# Subject: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Not Valid Before: Fri Jul 27 17:19:37 2007 +# Not Valid After : Mon Mar 31 18:19:22 2025 +# Fingerprint (MD5): 0A:A4:D5:CC:BA:B4:FB:A3:59:E3:E6:01:DD:53:D9:4E +# Fingerprint (SHA1): C1:77:CB:4B:E0:B4:26:8E:F5:C7:CF:45:99:22:B9:B0:CE:BA:21:2F +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Explicitly Distrust DigiNotar Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157 +\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151 +\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061 +\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021 +\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156 +\154 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157 +\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151 +\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061 +\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021 +\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156 +\154 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\017\377\377\377\377\377\377\377\377\377\377\377\377\377 +\377\377 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\212\060\202\003\162\240\003\002\001\002\002\020\017 +\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\137 +\061\013\060\011\006\003\125\004\006\023\002\116\114\061\022\060 +\020\006\003\125\004\012\023\011\104\151\147\151\116\157\164\141 +\162\061\032\060\030\006\003\125\004\003\023\021\104\151\147\151 +\116\157\164\141\162\040\122\157\157\164\040\103\101\061\040\060 +\036\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156 +\146\157\100\144\151\147\151\156\157\164\141\162\056\156\154\060 +\036\027\015\060\067\060\067\062\067\061\067\061\071\063\067\132 +\027\015\062\065\060\063\063\061\061\070\061\071\062\062\132\060 +\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061\022 +\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157\164 +\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151\147 +\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061\040 +\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021\151 +\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156\154 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\254\260\130\301\000\275\330\041\010\013\053\232\376\156\126 +\060\005\237\033\167\220\020\101\134\303\015\207\021\167\216\201 +\361\312\174\351\214\152\355\070\164\065\273\332\337\371\273\300 +\011\067\264\226\163\201\175\063\032\230\071\367\223\157\225\177 +\075\271\261\165\207\272\121\110\350\213\160\076\225\004\305\330 +\266\303\026\331\210\260\261\207\035\160\332\206\264\017\024\213 +\172\317\020\321\164\066\242\022\173\167\206\112\171\346\173\337 +\002\021\150\245\116\206\256\064\130\233\044\023\170\126\042\045 +\036\001\213\113\121\161\373\202\314\131\226\151\210\132\150\123 +\305\271\015\002\067\313\113\274\146\112\220\176\052\013\005\007 +\355\026\137\125\220\165\330\106\311\033\203\342\010\276\361\043 +\314\231\035\326\052\017\203\040\025\130\047\202\056\372\342\042 +\302\111\261\271\001\201\152\235\155\235\100\167\150\166\116\041 +\052\155\204\100\205\116\166\231\174\202\363\363\267\002\131\324 +\046\001\033\216\337\255\123\006\321\256\030\335\342\262\072\313 +\327\210\070\216\254\133\051\271\031\323\230\371\030\003\317\110 +\202\206\146\013\033\151\017\311\353\070\210\172\046\032\005\114 +\222\327\044\324\226\362\254\122\055\243\107\325\122\366\077\376 +\316\204\006\160\246\252\076\242\362\266\126\064\030\127\242\344 +\201\155\347\312\360\152\323\307\221\153\002\203\101\174\025\357 +\153\232\144\136\343\320\074\345\261\353\173\135\206\373\313\346 +\167\111\315\243\145\334\367\271\234\270\344\013\137\223\317\314 +\060\032\062\034\316\034\143\225\245\371\352\341\164\213\236\351 +\053\251\060\173\240\030\037\016\030\013\345\133\251\323\321\154 +\036\007\147\217\221\113\251\212\274\322\146\252\223\001\210\262 +\221\372\061\134\325\246\301\122\010\011\315\012\143\242\323\042 +\246\350\241\331\071\006\227\365\156\215\002\220\214\024\173\077 +\200\315\033\234\272\304\130\162\043\257\266\126\237\306\172\102 +\063\051\007\077\202\311\346\037\005\015\315\114\050\066\213\323 +\310\076\034\306\210\357\136\356\211\144\351\035\353\332\211\176 +\062\246\151\321\335\314\210\237\321\320\311\146\041\334\006\147 +\305\224\172\232\155\142\114\175\314\340\144\200\262\236\107\216 +\243\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125 +\035\016\004\026\004\024\210\150\277\340\216\065\304\073\070\153 +\142\367\050\073\204\201\310\014\327\115\060\015\006\011\052\206 +\110\206\367\015\001\001\005\005\000\003\202\002\001\000\073\002 +\215\313\074\060\350\156\240\255\362\163\263\137\236\045\023\004 +\005\323\366\343\213\273\013\171\316\123\336\344\226\305\321\257 +\163\274\325\303\320\100\125\174\100\177\315\033\137\011\325\362 +\174\237\150\035\273\135\316\172\071\302\214\326\230\173\305\203 +\125\250\325\175\100\312\340\036\367\211\136\143\135\241\023\302 +\135\212\266\212\174\000\363\043\303\355\205\137\161\166\360\150 +\143\252\105\041\071\110\141\170\066\334\361\103\223\324\045\307 +\362\200\145\341\123\002\165\121\374\172\072\357\067\253\204\050 +\127\014\330\324\324\231\126\154\343\242\376\131\204\264\061\350 +\063\370\144\224\224\121\227\253\071\305\113\355\332\335\200\013 +\157\174\051\015\304\216\212\162\015\347\123\024\262\140\101\075 +\204\221\061\150\075\047\104\333\345\336\364\372\143\105\310\114 +\076\230\365\077\101\272\116\313\067\015\272\146\230\361\335\313 +\237\134\367\124\066\202\153\054\274\023\141\227\102\370\170\273 +\314\310\242\237\312\360\150\275\153\035\262\337\215\157\007\235 +\332\216\147\307\107\036\312\271\277\052\102\221\267\143\123\146 +\361\102\243\341\364\132\115\130\153\265\344\244\063\255\134\160 +\035\334\340\362\353\163\024\221\232\003\301\352\000\145\274\007 +\374\317\022\021\042\054\256\240\275\072\340\242\052\330\131\351 +\051\323\030\065\244\254\021\137\031\265\265\033\377\042\112\134 +\306\172\344\027\357\040\251\247\364\077\255\212\247\232\004\045 +\235\016\312\067\346\120\375\214\102\051\004\232\354\271\317\113 +\162\275\342\010\066\257\043\057\142\345\312\001\323\160\333\174 +\202\043\054\026\061\014\306\066\007\220\172\261\037\147\130\304 +\073\130\131\211\260\214\214\120\263\330\206\313\150\243\304\012 +\347\151\113\040\316\301\036\126\113\225\251\043\150\330\060\330 +\303\353\260\125\121\315\345\375\053\270\365\273\021\237\123\124 +\366\064\031\214\171\011\066\312\141\027\045\027\013\202\230\163 +\014\167\164\303\325\015\307\250\022\114\307\247\124\161\107\056 +\054\032\175\311\343\053\073\110\336\047\204\247\143\066\263\175 +\217\240\144\071\044\015\075\173\207\257\146\134\164\033\113\163 +\262\345\214\360\206\231\270\345\305\337\204\301\267\353 +END + +# Trust for Certificate "Explicitly Distrust DigiNotar Root CA" +# Issuer: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Serial Number:0f:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff +# Subject: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Not Valid Before: Fri Jul 27 17:19:37 2007 +# Not Valid After : Mon Mar 31 18:19:22 2025 +# Fingerprint (MD5): 0A:A4:D5:CC:BA:B4:FB:A3:59:E3:E6:01:DD:53:D9:4E +# Fingerprint (SHA1): C1:77:CB:4B:E0:B4:26:8E:F5:C7:CF:45:99:22:B9:B0:CE:BA:21:2F +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Explicitly Distrust DigiNotar Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\301\167\313\113\340\264\046\216\365\307\317\105\231\042\271\260 +\316\272\041\057 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\012\244\325\314\272\264\373\243\131\343\346\001\335\123\331\116 +END +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157 +\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151 +\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061 +\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021 +\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156 +\154 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\017\377\377\377\377\377\377\377\377\377\377\377\377\377 +\377\377 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_NOT_TRUSTED +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_NOT_TRUSTED +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_NOT_TRUSTED +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + # # Certificate "Security Communication RootCA2" # @@ -23196,6 +23496,557 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE +# +# Certificate "CommScope Public Trust ECC Root-01" +# +# Issuer: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Serial Number:43:70:82:77:cf:4d:5d:34:f1:ca:ae:32:2f:37:f7:f4:7f:75:a0:9e +# Subject: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:35:43 2021 +# Not Valid After : Sat Apr 28 17:35:42 2046 +# Fingerprint (SHA-256): 11:43:7C:DA:7B:B4:5E:41:36:5F:45:B3:9A:38:98:6B:0D:E0:0D:EF:34:8E:0C:7B:B0:87:36:33:80:0B:C3:8B +# Fingerprint (SHA1): 07:86:C0:D8:DD:8E:C0:80:98:06:98:D0:58:7A:EF:DE:A6:CC:A2:5D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-01" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\103\160\202\167\317\115\135\064\361\312\256\062\057\067 +\367\364\177\165\240\236 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\035\060\202\001\243\240\003\002\001\002\002\024\103 +\160\202\167\317\115\135\064\361\312\256\062\057\067\367\364\177 +\165\240\236\060\012\006\010\052\206\110\316\075\004\003\003\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061\060 +\036\027\015\062\061\060\064\062\070\061\067\063\065\064\063\132 +\027\015\064\066\060\064\062\070\061\067\063\065\064\062\132\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\113\066\351\256\127\136\250\160\327 +\320\217\164\142\167\303\136\172\252\345\266\242\361\170\375\002 +\176\127\335\221\171\234\154\271\122\210\124\274\057\004\276\270 +\315\366\020\321\051\354\265\320\240\303\360\211\160\031\273\121 +\145\305\103\234\303\233\143\235\040\203\076\006\013\246\102\104 +\205\021\247\112\072\055\351\326\150\057\110\116\123\053\007\077 +\115\275\271\254\167\071\127\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003 +\125\035\016\004\026\004\024\216\007\142\300\120\335\306\031\006 +\000\106\164\004\367\363\256\175\165\115\060\060\012\006\010\052 +\206\110\316\075\004\003\003\003\150\000\060\145\002\061\000\234 +\063\337\101\343\043\250\102\066\046\227\065\134\173\353\333\113 +\370\252\213\163\125\025\134\254\170\051\017\272\041\330\304\240 +\330\321\003\335\155\321\071\075\304\223\140\322\343\162\262\002 +\060\174\305\176\210\323\120\365\036\045\350\372\116\165\346\130 +\226\244\065\137\033\145\352\141\232\160\043\265\015\243\233\222 +\122\157\151\240\214\215\112\320\356\213\016\313\107\216\320\215 +\021 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust ECC Root-01" +# Issuer: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Serial Number:43:70:82:77:cf:4d:5d:34:f1:ca:ae:32:2f:37:f7:f4:7f:75:a0:9e +# Subject: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:35:43 2021 +# Not Valid After : Sat Apr 28 17:35:42 2046 +# Fingerprint (SHA-256): 11:43:7C:DA:7B:B4:5E:41:36:5F:45:B3:9A:38:98:6B:0D:E0:0D:EF:34:8E:0C:7B:B0:87:36:33:80:0B:C3:8B +# Fingerprint (SHA1): 07:86:C0:D8:DD:8E:C0:80:98:06:98:D0:58:7A:EF:DE:A6:CC:A2:5D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-01" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\007\206\300\330\335\216\300\200\230\006\230\320\130\172\357\336 +\246\314\242\135 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\072\100\247\374\003\214\234\070\171\057\072\242\154\266\012\026 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\103\160\202\167\317\115\135\064\361\312\256\062\057\067 +\367\364\177\165\240\236 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CommScope Public Trust ECC Root-02" +# +# Issuer: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Serial Number:28:fd:99:60:41:47:a6:01:3a:ca:14:7b:1f:ef:f9:68:08:83:5d:7d +# Subject: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:44:54 2021 +# Not Valid After : Sat Apr 28 17:44:53 2046 +# Fingerprint (SHA-256): 2F:FB:7F:81:3B:BB:B3:C8:9A:B4:E8:16:2D:0F:16:D7:15:09:A8:30:CC:9D:73:C2:62:E5:14:08:75:D1:AD:4A +# Fingerprint (SHA1): 3C:3F:EF:57:0F:FE:65:93:86:9E:A0:FE:B0:F6:ED:8E:D1:13:C7:E5 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-02" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\050\375\231\140\101\107\246\001\072\312\024\173\037\357 +\371\150\010\203\135\175 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\034\060\202\001\243\240\003\002\001\002\002\024\050 +\375\231\140\101\107\246\001\072\312\024\173\037\357\371\150\010 +\203\135\175\060\012\006\010\052\206\110\316\075\004\003\003\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062\060 +\036\027\015\062\061\060\064\062\070\061\067\064\064\065\064\132 +\027\015\064\066\060\064\062\070\061\067\064\064\065\063\132\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\170\060\201\350\143\036\345\353\161 +\121\017\367\007\007\312\071\231\174\116\325\017\314\060\060\013 +\217\146\223\076\317\275\305\206\275\371\261\267\264\076\264\007 +\310\363\226\061\363\355\244\117\370\243\116\215\051\025\130\270 +\325\157\177\356\154\042\265\260\257\110\105\012\275\250\111\224 +\277\204\103\260\333\204\112\003\043\031\147\152\157\301\156\274 +\006\071\067\321\210\042\367\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003 +\125\035\016\004\026\004\024\346\030\165\377\357\140\336\204\244 +\365\106\307\336\112\125\343\062\066\171\365\060\012\006\010\052 +\206\110\316\075\004\003\003\003\147\000\060\144\002\060\046\163 +\111\172\266\253\346\111\364\175\122\077\324\101\004\256\200\103 +\203\145\165\271\205\200\070\073\326\157\344\223\206\253\217\347 +\211\310\177\233\176\153\012\022\125\141\252\021\340\171\002\060 +\167\350\061\161\254\074\161\003\326\204\046\036\024\270\363\073 +\073\336\355\131\374\153\114\060\177\131\316\105\351\163\140\025 +\232\114\360\346\136\045\042\025\155\302\207\131\320\262\216\152 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust ECC Root-02" +# Issuer: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Serial Number:28:fd:99:60:41:47:a6:01:3a:ca:14:7b:1f:ef:f9:68:08:83:5d:7d +# Subject: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:44:54 2021 +# Not Valid After : Sat Apr 28 17:44:53 2046 +# Fingerprint (SHA-256): 2F:FB:7F:81:3B:BB:B3:C8:9A:B4:E8:16:2D:0F:16:D7:15:09:A8:30:CC:9D:73:C2:62:E5:14:08:75:D1:AD:4A +# Fingerprint (SHA1): 3C:3F:EF:57:0F:FE:65:93:86:9E:A0:FE:B0:F6:ED:8E:D1:13:C7:E5 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-02" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\074\077\357\127\017\376\145\223\206\236\240\376\260\366\355\216 +\321\023\307\345 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\131\260\104\325\145\115\270\134\125\031\222\002\266\321\224\262 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\050\375\231\140\101\107\246\001\072\312\024\173\037\357 +\371\150\010\203\135\175 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CommScope Public Trust RSA Root-01" +# +# Issuer: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Serial Number:3e:03:49:81:75:16:74:31:8e:4c:ab:d5:c5:90:29:96:c5:39:10:dd +# Subject: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 16:45:54 2021 +# Not Valid After : Sat Apr 28 16:45:53 2046 +# Fingerprint (SHA-256): 02:BD:F9:6E:2A:45:DD:9B:F1:8F:C7:E1:DB:DF:21:A0:37:9B:A3:C9:C2:61:03:44:CF:D8:D6:06:FE:C1:ED:81 +# Fingerprint (SHA1): 6D:0A:5F:F7:B4:23:06:B4:85:B3:B7:97:64:FC:AC:75:F5:33:F2:93 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-01" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\076\003\111\201\165\026\164\061\216\114\253\325\305\220 +\051\226\305\071\020\335 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\154\060\202\003\124\240\003\002\001\002\002\024\076 +\003\111\201\165\026\164\061\216\114\253\325\305\220\051\226\305 +\071\020\335\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\061\060\036\027\015\062\061\060\064\062\070\061\066\064\065 +\065\064\132\027\015\064\066\060\064\062\070\061\066\064\065\065 +\063\132\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\061\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\260\110\145\243\015\035\102\343\221\155\235\204\244 +\141\226\022\302\355\303\332\043\064\031\166\366\352\375\125\132 +\366\125\001\123\017\362\314\214\227\117\271\120\313\263\001\104 +\126\226\375\233\050\354\173\164\013\347\102\153\125\316\311\141 +\262\350\255\100\074\272\271\101\012\005\117\033\046\205\217\103 +\265\100\265\205\321\324\161\334\203\101\363\366\105\307\200\242 +\204\120\227\106\316\240\014\304\140\126\004\035\007\133\106\245 +\016\262\113\244\016\245\174\356\370\324\142\003\271\223\152\212 +\024\270\160\370\056\202\106\070\043\016\164\307\153\101\267\320 +\051\243\235\200\260\176\167\223\143\102\373\064\203\073\163\243 +\132\041\066\353\107\372\030\027\331\272\146\302\223\244\217\374 +\135\244\255\374\120\152\225\254\274\044\063\321\275\210\177\206 +\365\365\262\163\052\217\174\257\010\362\032\230\077\251\201\145 +\077\301\214\211\305\226\060\232\012\317\364\324\310\064\355\235 +\057\274\215\070\206\123\356\227\237\251\262\143\224\027\215\017 +\334\146\052\174\122\121\165\313\231\216\350\075\134\277\236\073 +\050\215\203\002\017\251\237\162\342\054\053\263\334\146\227\000 +\100\320\244\124\216\233\135\173\105\066\046\326\162\103\353\317 +\300\352\015\334\316\022\346\175\070\237\005\047\250\227\076\351 +\121\306\154\005\050\301\002\017\351\030\155\354\275\234\006\324 +\247\111\364\124\005\153\154\060\361\353\003\325\352\075\152\166 +\302\313\032\050\111\115\177\144\340\372\053\332\163\203\201\377 +\221\003\275\224\273\344\270\216\234\062\143\315\237\273\150\201 +\261\204\133\257\066\277\167\356\035\177\367\111\233\122\354\322 +\167\132\175\221\235\115\302\071\055\344\272\202\370\157\362\116 +\036\017\116\346\077\131\245\043\334\075\207\250\050\130\050\321 +\361\033\066\333\117\304\377\341\214\133\162\214\307\046\003\047 +\243\071\012\001\252\300\262\061\140\203\042\241\117\022\011\001 +\021\257\064\324\317\327\256\142\323\005\007\264\061\165\340\015 +\155\127\117\151\207\371\127\251\272\025\366\310\122\155\241\313 +\234\037\345\374\170\250\065\232\237\101\024\316\245\264\316\224 +\010\034\011\255\126\345\332\266\111\232\112\352\143\030\123\234 +\054\056\303\002\003\001\000\001\243\102\060\100\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006 +\003\125\035\016\004\026\004\024\067\135\246\232\164\062\302\302 +\371\307\246\025\020\131\270\344\375\345\270\155\060\015\006\011 +\052\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000 +\257\247\317\336\377\340\275\102\215\115\345\042\226\337\150\352 +\175\115\052\175\320\255\075\026\134\103\347\175\300\206\350\172 +\065\143\361\314\201\310\306\013\350\056\122\065\244\246\111\220 +\143\121\254\064\254\005\073\127\000\351\323\142\323\331\051\325 +\124\276\034\020\221\234\262\155\376\131\375\171\367\352\126\320 +\236\150\124\102\217\046\122\342\114\337\057\227\246\057\322\007 +\230\250\363\140\135\113\232\130\127\210\357\202\345\372\257\154 +\201\113\222\217\100\232\223\106\131\313\137\170\026\261\147\076 +\102\013\337\050\331\260\255\230\040\276\103\174\321\136\032\011 +\027\044\215\173\135\225\351\253\301\140\253\133\030\144\200\373 +\255\340\006\175\035\312\131\270\363\170\051\147\306\126\035\257 +\266\265\164\052\166\241\077\373\165\060\237\224\136\073\245\140 +\363\313\134\014\342\016\311\140\370\311\037\026\212\046\335\347 +\047\177\353\045\246\212\275\270\055\066\020\232\261\130\115\232 +\150\117\140\124\345\366\106\023\216\210\254\274\041\102\022\255 +\306\112\211\175\233\301\330\055\351\226\003\364\242\164\014\274 +\000\035\277\326\067\045\147\264\162\213\257\205\275\352\052\003 +\217\314\373\074\104\044\202\342\001\245\013\131\266\064\215\062 +\013\022\015\353\047\302\375\101\327\100\074\162\106\051\300\214 +\352\272\017\361\006\223\056\367\234\250\364\140\076\243\361\070 +\136\216\023\301\263\072\227\207\077\222\312\170\251\034\257\320 +\260\033\046\036\276\160\354\172\365\063\230\352\134\377\053\013 +\004\116\103\335\143\176\016\247\116\170\003\225\076\324\055\060 +\225\021\020\050\056\277\240\002\076\377\136\131\323\005\016\225 +\137\123\105\357\153\207\325\110\315\026\246\226\203\341\337\263 +\006\363\301\024\333\247\354\034\213\135\220\220\015\162\121\347 +\141\371\024\312\257\203\217\277\257\261\012\131\135\334\134\327 +\344\226\255\133\140\035\332\256\227\262\071\331\006\365\166\000 +\023\370\150\114\041\260\065\304\334\125\262\311\301\101\132\034 +\211\300\214\157\164\240\153\063\115\265\001\050\375\255\255\211 +\027\073\246\232\204\274\353\214\352\304\161\044\250\272\051\371 +\010\262\047\126\065\062\137\352\071\373\061\232\325\031\314\360 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust RSA Root-01" +# Issuer: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Serial Number:3e:03:49:81:75:16:74:31:8e:4c:ab:d5:c5:90:29:96:c5:39:10:dd +# Subject: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 16:45:54 2021 +# Not Valid After : Sat Apr 28 16:45:53 2046 +# Fingerprint (SHA-256): 02:BD:F9:6E:2A:45:DD:9B:F1:8F:C7:E1:DB:DF:21:A0:37:9B:A3:C9:C2:61:03:44:CF:D8:D6:06:FE:C1:ED:81 +# Fingerprint (SHA1): 6D:0A:5F:F7:B4:23:06:B4:85:B3:B7:97:64:FC:AC:75:F5:33:F2:93 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-01" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\155\012\137\367\264\043\006\264\205\263\267\227\144\374\254\165 +\365\063\362\223 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\016\264\025\274\207\143\135\135\002\163\324\046\070\150\163\330 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\076\003\111\201\165\026\164\061\216\114\253\325\305\220 +\051\226\305\071\020\335 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CommScope Public Trust RSA Root-02" +# +# Issuer: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Serial Number:54:16:bf:3b:7e:39:95:71:8d:d1:aa:00:a5:86:0d:2b:8f:7a:05:4e +# Subject: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:16:43 2021 +# Not Valid After : Sat Apr 28 17:16:42 2046 +# Fingerprint (SHA-256): FF:E9:43:D7:93:42:4B:4F:7C:44:0C:1C:3D:64:8D:53:63:F3:4B:82:DC:87:AA:7A:9F:11:8F:C5:DE:E1:01:F1 +# Fingerprint (SHA1): EA:B0:E2:52:1B:89:93:4C:11:68:F2:D8:9A:AC:22:4C:A3:8A:57:AE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-02" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\124\026\277\073\176\071\225\161\215\321\252\000\245\206 +\015\053\217\172\005\116 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\154\060\202\003\124\240\003\002\001\002\002\024\124 +\026\277\073\176\071\225\161\215\321\252\000\245\206\015\053\217 +\172\005\116\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\062\060\036\027\015\062\061\060\064\062\070\061\067\061\066 +\064\063\132\027\015\064\066\060\064\062\070\061\067\061\066\064 +\062\132\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\062\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\341\372\016\373\150\000\022\310\115\325\254\042\304 +\065\001\073\305\124\345\131\166\143\245\177\353\301\304\152\230 +\275\062\215\027\200\353\135\272\321\142\075\045\043\031\065\024 +\351\177\211\247\033\142\074\326\120\347\064\225\003\062\261\264 +\223\042\075\247\342\261\355\346\173\116\056\207\233\015\063\165 +\012\336\252\065\347\176\345\066\230\242\256\045\236\225\263\062 +\226\244\053\130\036\357\077\376\142\064\110\121\321\264\215\102 +\255\140\332\111\152\225\160\335\322\000\342\314\127\143\002\173 +\226\335\111\227\133\222\116\225\323\371\313\051\037\030\112\370 +\001\052\322\143\011\156\044\351\211\322\345\307\042\114\334\163 +\206\107\000\252\015\210\216\256\205\175\112\351\273\063\117\016 +\122\160\235\225\343\174\155\226\133\055\075\137\241\203\106\135 +\266\343\045\270\174\247\031\200\034\352\145\103\334\221\171\066 +\054\164\174\362\147\006\311\211\311\333\277\332\150\277\043\355 +\334\153\255\050\203\171\057\354\070\245\015\067\001\147\047\232 +\351\063\331\063\137\067\241\305\360\253\075\372\170\260\347\054 +\237\366\076\237\140\340\357\110\351\220\105\036\005\121\170\032 +\054\022\054\134\050\254\015\242\043\236\064\217\005\346\242\063 +\316\021\167\023\324\016\244\036\102\037\206\315\160\376\331\056 +\025\075\035\273\270\362\123\127\333\314\306\164\051\234\030\263 +\066\165\070\056\017\124\241\370\222\037\211\226\117\273\324\356 +\235\351\073\066\102\265\012\073\052\324\144\171\066\020\341\371 +\221\003\053\173\040\124\315\015\031\032\310\101\062\064\321\260 +\231\341\220\036\001\100\066\265\267\372\251\345\167\165\244\042 +\201\135\260\213\344\047\022\017\124\210\306\333\205\164\346\267 +\300\327\246\051\372\333\336\363\223\227\047\004\125\057\012\157 +\067\305\075\023\257\012\000\251\054\213\034\201\050\327\357\206 +\061\251\256\362\156\270\312\152\054\124\107\330\052\210\056\257 +\301\007\020\170\254\021\242\057\102\360\067\305\362\270\126\335 +\016\142\055\316\055\126\176\125\362\247\104\366\053\062\364\043 +\250\107\350\324\052\001\170\317\152\303\067\250\236\145\322\054 +\345\372\272\063\301\006\104\366\346\317\245\015\247\146\010\064 +\212\054\363\002\003\001\000\001\243\102\060\100\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006 +\003\125\035\016\004\026\004\024\107\320\347\261\042\377\235\054 +\365\331\127\140\263\261\261\160\225\357\141\172\060\015\006\011 +\052\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000 +\206\151\261\115\057\351\237\117\042\223\150\216\344\041\231\243 +\316\105\123\033\163\104\123\000\201\141\315\061\343\010\272\201 +\050\050\172\222\271\266\250\310\103\236\307\023\046\115\302\330 +\345\125\234\222\135\120\330\302\053\333\376\346\250\227\317\122 +\072\044\303\145\144\134\107\061\243\145\065\023\303\223\271\367 +\371\121\227\273\244\360\142\207\305\326\006\323\227\203\040\251 +\176\273\266\041\302\245\015\204\000\341\362\047\020\203\272\335 +\003\201\325\335\150\303\146\020\310\321\166\264\263\157\051\236 +\000\371\302\051\365\261\223\031\122\151\032\054\114\240\213\340 +\025\232\061\057\323\210\225\131\156\345\304\263\120\310\024\010 +\112\233\213\023\203\261\244\162\262\073\166\063\101\334\334\252 +\246\007\157\035\044\022\237\310\166\275\057\331\216\364\054\356 +\267\322\070\020\044\066\121\057\343\134\135\201\041\247\332\273 +\116\377\346\007\250\376\271\015\047\154\273\160\132\125\172\023 +\351\361\052\111\151\307\137\207\127\114\103\171\155\072\145\351 +\060\134\101\356\353\167\245\163\022\210\350\277\175\256\345\304 +\250\037\015\216\034\155\120\002\117\046\030\103\336\217\125\205 +\261\013\067\005\140\311\125\071\022\004\241\052\317\161\026\237 +\066\121\111\277\160\073\236\147\234\373\173\171\311\071\034\170 +\254\167\221\124\232\270\165\012\201\122\227\343\146\141\153\355 +\076\070\036\226\141\125\341\221\124\214\355\214\044\037\201\311 +\020\232\163\231\053\026\116\162\000\077\124\033\370\215\272\213 +\347\024\326\266\105\117\140\354\226\256\303\057\002\116\135\235 +\226\111\162\000\262\253\165\134\017\150\133\035\145\302\137\063 +\017\036\017\360\073\206\365\260\116\273\234\367\352\045\005\334 +\255\242\233\113\027\001\276\102\337\065\041\035\255\253\256\364 +\277\256\037\033\323\342\073\374\263\162\163\034\233\050\220\211 +\023\075\035\301\000\107\011\226\232\070\033\335\261\317\015\302 +\264\104\363\226\225\316\062\072\217\064\234\340\027\307\136\316 +\256\015\333\207\070\345\077\133\375\233\031\341\061\101\172\160 +\252\043\153\001\341\105\114\315\224\316\073\236\055\347\210\002 +\042\364\156\350\310\354\326\074\363\271\262\327\167\172\254\173 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust RSA Root-02" +# Issuer: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Serial Number:54:16:bf:3b:7e:39:95:71:8d:d1:aa:00:a5:86:0d:2b:8f:7a:05:4e +# Subject: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:16:43 2021 +# Not Valid After : Sat Apr 28 17:16:42 2046 +# Fingerprint (SHA-256): FF:E9:43:D7:93:42:4B:4F:7C:44:0C:1C:3D:64:8D:53:63:F3:4B:82:DC:87:AA:7A:9F:11:8F:C5:DE:E1:01:F1 +# Fingerprint (SHA1): EA:B0:E2:52:1B:89:93:4C:11:68:F2:D8:9A:AC:22:4C:A3:8A:57:AE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-02" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\352\260\342\122\033\211\223\114\021\150\362\330\232\254\042\114 +\243\212\127\256 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\341\051\371\142\173\166\342\226\155\363\324\327\017\256\037\252 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\124\026\277\073\176\071\225\161\215\321\252\000\245\206 +\015\053\217\172\005\116 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + # # Certificate "D-Trust SBR Root CA 1 2022" # @@ -25120,576 +25971,6 @@ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE -# -# Certificate "TrustAsia SMIME ECC Root CA" -# -# Issuer: CN=TrustAsia SMIME ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:5a:c2:f8:29:4f:e3:7d:c5:5e:1d:18:6f:3b:93:20:1f:ff:7b:ba:2d -# Subject: CN=TrustAsia SMIME ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:41:59 2024 -# Not Valid After : Sun May 15 05:41:58 2044 -# Fingerprint (SHA-256): 43:64:72:C1:00:9A:32:5C:54:F1:A5:BB:B5:46:8A:7B:AE:EC:CB:E0:5D:E5:F0:99:CB:70:D3:FE:41:E1:3C:16 -# Fingerprint (SHA1): 8C:0D:AA:FE:13:FA:59:F2:DB:9D:0C:97:DA:12:A2:45:1A:02:13:54 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia SMIME ECC Root CA" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\023 -\033\124\162\165\163\164\101\163\151\141\040\123\115\111\115\105 -\040\105\103\103\040\122\157\157\164\040\103\101 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\023 -\033\124\162\165\163\164\101\163\151\141\040\123\115\111\115\105 -\040\105\103\103\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\132\302\370\051\117\343\175\305\136\035\030\157\073\223 -\040\037\377\173\272\055 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\002\066\060\202\001\273\240\003\002\001\002\002\024\132 -\302\370\051\117\343\175\305\136\035\030\157\073\223\040\037\377 -\173\272\055\060\012\006\010\052\206\110\316\075\004\003\003\060 -\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061\045 -\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101\163 -\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163\054 -\040\111\156\143\056\061\044\060\042\006\003\125\004\003\023\033 -\124\162\165\163\164\101\163\151\141\040\123\115\111\115\105\040 -\105\103\103\040\122\157\157\164\040\103\101\060\036\027\015\062 -\064\060\065\061\065\060\065\064\061\065\071\132\027\015\064\064 -\060\065\061\065\060\065\064\061\065\070\132\060\132\061\013\060 -\011\006\003\125\004\006\023\002\103\116\061\045\060\043\006\003 -\125\004\012\023\034\124\162\165\163\164\101\163\151\141\040\124 -\145\143\150\156\157\154\157\147\151\145\163\054\040\111\156\143 -\056\061\044\060\042\006\003\125\004\003\023\033\124\162\165\163 -\164\101\163\151\141\040\123\115\111\115\105\040\105\103\103\040 -\122\157\157\164\040\103\101\060\166\060\020\006\007\052\206\110 -\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\315 -\331\373\047\275\151\354\206\311\220\103\261\160\027\224\247\311 -\167\043\072\077\043\145\323\034\243\035\036\102\124\040\353\320 -\102\273\131\271\213\254\362\206\215\113\216\035\252\226\042\043 -\071\166\155\222\233\353\042\313\172\103\242\163\375\163\113\302 -\045\017\052\261\151\306\377\105\337\251\074\225\200\273\251\036 -\112\223\057\354\034\035\210\364\021\222\067\237\067\230\162\243 -\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060 -\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\061 -\147\346\162\262\015\346\042\240\254\317\176\042\247\131\062\343 -\146\043\245\060\016\006\003\125\035\017\001\001\377\004\004\003 -\002\001\006\060\012\006\010\052\206\110\316\075\004\003\003\003 -\151\000\060\146\002\061\000\335\072\114\215\244\306\177\355\275 -\245\306\117\076\375\061\113\050\326\212\126\337\145\026\167\207 -\115\373\272\062\010\201\340\236\063\110\213\237\224\206\357\001 -\053\224\346\214\326\324\216\002\061\000\237\201\234\260\046\375 -\053\326\362\365\161\204\236\250\307\212\214\326\130\021\122\265 -\270\004\313\314\161\165\143\342\306\031\070\331\155\154\031\161 -\244\026\031\041\223\272\006\104\050\154 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "TrustAsia SMIME ECC Root CA" -# Issuer: CN=TrustAsia SMIME ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:5a:c2:f8:29:4f:e3:7d:c5:5e:1d:18:6f:3b:93:20:1f:ff:7b:ba:2d -# Subject: CN=TrustAsia SMIME ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:41:59 2024 -# Not Valid After : Sun May 15 05:41:58 2044 -# Fingerprint (SHA-256): 43:64:72:C1:00:9A:32:5C:54:F1:A5:BB:B5:46:8A:7B:AE:EC:CB:E0:5D:E5:F0:99:CB:70:D3:FE:41:E1:3C:16 -# Fingerprint (SHA1): 8C:0D:AA:FE:13:FA:59:F2:DB:9D:0C:97:DA:12:A2:45:1A:02:13:54 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia SMIME ECC Root CA" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\214\015\252\376\023\372\131\362\333\235\014\227\332\022\242\105 -\032\002\023\124 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\225\175\377\225\115\114\152\373\215\014\017\317\102\333\357\040 -END -CKA_ISSUER MULTILINE_OCTAL -\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\023 -\033\124\162\165\163\164\101\163\151\141\040\123\115\111\115\105 -\040\105\103\103\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\132\302\370\051\117\343\175\305\136\035\030\157\073\223 -\040\037\377\173\272\055 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "TrustAsia SMIME RSA Root CA" -# -# Issuer: CN=TrustAsia SMIME RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:5a:ee:71:df:de:0c:57:85:b5:bb:36:22:d7:b8:76:46:02:73:ca:ff -# Subject: CN=TrustAsia SMIME RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:42:01 2024 -# Not Valid After : Sun May 15 05:42:00 2044 -# Fingerprint (SHA-256): C7:79:6B:EB:62:C1:01:BB:14:3D:26:2A:7C:96:A0:C6:16:81:83:22:3E:F5:0D:69:96:32:D8:6E:03:B8:CC:9B -# Fingerprint (SHA1): 8C:69:21:7C:CE:49:73:36:5A:5C:EF:2B:B0:86:97:50:E3:E3:33:65 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia SMIME RSA Root CA" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\023 -\033\124\162\165\163\164\101\163\151\141\040\123\115\111\115\105 -\040\122\123\101\040\122\157\157\164\040\103\101 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\023 -\033\124\162\165\163\164\101\163\151\141\040\123\115\111\115\105 -\040\122\123\101\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\132\356\161\337\336\014\127\205\265\273\066\042\327\270 -\166\106\002\163\312\377 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\204\060\202\003\154\240\003\002\001\002\002\024\132 -\356\161\337\336\014\127\205\265\273\066\042\327\270\166\106\002 -\163\312\377\060\015\006\011\052\206\110\206\367\015\001\001\014 -\005\000\060\132\061\013\060\011\006\003\125\004\006\023\002\103 -\116\061\045\060\043\006\003\125\004\012\023\034\124\162\165\163 -\164\101\163\151\141\040\124\145\143\150\156\157\154\157\147\151 -\145\163\054\040\111\156\143\056\061\044\060\042\006\003\125\004 -\003\023\033\124\162\165\163\164\101\163\151\141\040\123\115\111 -\115\105\040\122\123\101\040\122\157\157\164\040\103\101\060\036 -\027\015\062\064\060\065\061\065\060\065\064\062\060\061\132\027 -\015\064\064\060\065\061\065\060\065\064\062\060\060\132\060\132 -\061\013\060\011\006\003\125\004\006\023\002\103\116\061\045\060 -\043\006\003\125\004\012\023\034\124\162\165\163\164\101\163\151 -\141\040\124\145\143\150\156\157\154\157\147\151\145\163\054\040 -\111\156\143\056\061\044\060\042\006\003\125\004\003\023\033\124 -\162\165\163\164\101\163\151\141\040\123\115\111\115\105\040\122 -\123\101\040\122\157\157\164\040\103\101\060\202\002\042\060\015 -\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 -\017\000\060\202\002\012\002\202\002\001\000\230\225\234\255\074 -\131\163\323\223\166\246\110\124\246\034\210\162\114\115\341\202 -\377\032\023\037\120\336\214\331\220\102\321\274\231\323\067\243 -\327\161\072\312\335\136\033\220\141\102\156\217\100\001\163\175 -\037\061\272\324\035\156\004\322\252\220\204\112\063\012\104\237 -\132\031\037\264\156\055\150\374\257\300\237\112\020\022\277\076 -\202\302\202\260\057\347\220\157\220\144\020\203\354\354\066\224 -\014\174\117\340\002\015\075\207\171\102\115\000\345\060\256\160 -\037\025\375\372\317\122\045\066\115\171\040\273\361\020\230\340 -\140\207\311\365\170\014\042\355\002\346\021\154\361\233\132\221 -\021\164\206\320\376\170\222\226\004\303\230\357\306\160\257\251 -\220\252\026\366\042\355\330\372\106\050\161\342\311\010\300\120 -\274\166\243\272\055\226\362\021\371\244\275\020\126\370\047\155 -\053\113\144\210\334\027\135\317\000\010\212\222\256\032\314\022 -\327\337\360\020\050\363\315\072\352\072\022\214\033\347\141\011 -\103\152\344\070\351\376\164\071\333\315\012\073\303\117\123\326 -\256\161\325\070\203\207\037\316\347\114\363\021\125\207\337\267 -\257\367\353\032\206\020\155\250\355\110\335\062\320\333\252\052 -\013\162\167\051\167\375\172\350\077\170\040\052\150\276\336\157 -\010\346\265\205\107\200\067\371\161\226\213\245\230\126\227\174 -\021\145\026\216\324\316\330\047\324\371\132\305\247\215\273\321 -\067\015\245\253\145\135\332\164\223\210\136\333\165\366\177\233 -\302\232\261\155\010\002\014\230\112\273\315\060\257\166\065\002 -\205\126\043\121\011\100\011\005\367\360\075\036\302\310\172\032 -\272\305\101\025\271\015\166\264\264\244\270\105\375\215\243\073 -\075\003\052\315\263\225\177\064\173\335\241\117\331\072\377\047 -\365\015\302\001\234\377\131\165\132\032\311\347\322\375\177\117 -\017\265\376\015\074\346\240\326\373\265\166\134\264\060\115\020 -\077\376\342\353\132\016\261\117\117\120\176\010\063\002\221\127 -\062\111\211\247\100\020\120\027\153\237\143\272\262\262\126\230 -\166\364\377\162\351\004\234\324\247\114\117\366\072\037\132\124 -\061\157\313\272\062\255\370\155\257\105\307\173\143\104\337\302 -\375\170\350\112\212\260\164\165\026\336\217\002\003\001\000\001 -\243\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005 -\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024 -\200\032\252\103\301\311\177\213\032\226\105\274\075\273\153\110 -\122\154\133\253\060\016\006\003\125\035\017\001\001\377\004\004 -\003\002\001\006\060\015\006\011\052\206\110\206\367\015\001\001 -\014\005\000\003\202\002\001\000\052\165\201\241\202\040\352\177 -\126\256\011\060\227\020\170\364\331\100\024\122\244\356\152\177 -\360\011\050\326\020\143\340\116\173\311\061\307\010\245\027\353 -\257\206\342\227\007\117\251\016\242\205\314\355\244\200\201\035 -\132\123\006\074\114\032\251\267\204\206\317\174\365\205\012\160 -\231\320\355\066\221\215\347\167\056\316\204\234\050\206\055\045 -\065\214\114\001\346\175\333\141\135\342\167\204\323\001\321\142 -\335\014\242\012\144\244\374\360\355\072\110\362\071\354\065\326 -\241\172\027\161\354\323\322\354\270\046\373\255\025\160\126\112 -\317\144\300\271\140\133\367\346\315\240\302\003\053\371\262\345 -\332\272\245\067\034\330\215\332\171\164\052\147\344\242\172\307 -\054\215\245\301\152\201\154\314\365\251\071\152\042\175\242\342 -\010\315\351\223\333\272\313\037\165\167\236\367\230\257\024\344 -\073\240\114\247\162\347\265\136\123\111\314\377\222\127\361\131 -\053\011\272\351\122\223\300\017\105\013\141\326\154\131\163\013 -\330\371\001\057\332\003\117\067\034\364\337\203\136\013\101\240 -\261\174\071\000\241\154\320\330\264\221\162\053\033\077\242\232 -\321\304\337\053\325\310\225\175\204\315\166\033\334\344\044\306 -\077\025\042\075\205\247\102\053\355\176\161\131\141\110\302\075 -\221\143\100\174\051\263\200\026\012\045\374\030\140\016\123\255 -\016\052\316\374\101\072\315\261\344\152\153\314\071\155\310\115 -\145\270\252\223\210\170\156\017\002\213\340\226\216\164\037\320 -\176\341\164\267\366\201\152\344\043\254\216\375\217\065\035\232 -\161\012\117\052\125\057\376\030\301\000\367\173\110\212\145\257 -\157\010\035\103\347\132\270\037\244\350\003\353\375\114\265\264 -\223\250\061\336\103\235\022\275\347\351\244\322\337\157\374\157 -\106\243\357\061\116\215\027\253\033\251\340\370\251\064\126\241 -\016\347\164\354\250\207\205\330\167\065\113\215\076\156\162\174 -\110\314\037\162\263\161\164\324\044\206\274\310\300\343\171\024 -\001\316\331\372\201\306\134\263\371\135\014\070\276\316\362\216 -\215\137\075\045\341\121\071\043\250\352\000\216\004\263\277\162 -\240\302\272\203\373\315\244\227\165\040\232\277\247\120\342\335 -\255\054\037\364\077\243\310\061 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "TrustAsia SMIME RSA Root CA" -# Issuer: CN=TrustAsia SMIME RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:5a:ee:71:df:de:0c:57:85:b5:bb:36:22:d7:b8:76:46:02:73:ca:ff -# Subject: CN=TrustAsia SMIME RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:42:01 2024 -# Not Valid After : Sun May 15 05:42:00 2044 -# Fingerprint (SHA-256): C7:79:6B:EB:62:C1:01:BB:14:3D:26:2A:7C:96:A0:C6:16:81:83:22:3E:F5:0D:69:96:32:D8:6E:03:B8:CC:9B -# Fingerprint (SHA1): 8C:69:21:7C:CE:49:73:36:5A:5C:EF:2B:B0:86:97:50:E3:E3:33:65 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia SMIME RSA Root CA" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\214\151\041\174\316\111\163\066\132\134\357\053\260\206\227\120 -\343\343\063\145 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\151\206\230\353\337\305\241\132\301\244\153\324\074\243\373\266 -END -CKA_ISSUER MULTILINE_OCTAL -\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\023 -\033\124\162\165\163\164\101\163\151\141\040\123\115\111\115\105 -\040\122\123\101\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\132\356\161\337\336\014\127\205\265\273\066\042\327\270 -\166\106\002\163\312\377 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "TrustAsia TLS ECC Root CA" -# -# Issuer: CN=TrustAsia TLS ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:36:74:e1:4d:7c:65:13:c9:ac:83:55:25:a0:3e:52:7e:2f:50:68:c7 -# Subject: CN=TrustAsia TLS ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:41:56 2024 -# Not Valid After : Sun May 15 05:41:55 2044 -# Fingerprint (SHA-256): C0:07:6B:9E:F0:53:1F:B1:A6:56:D6:7C:4E:BE:97:CD:5D:BA:A4:1E:F4:45:98:AC:C2:48:98:78:C9:2D:87:11 -# Fingerprint (SHA1): B5:EC:39:F3:A1:66:37:AE:C3:05:94:57:E2:BE:11:BE:B7:A1:7F:36 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia TLS ECC Root CA" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\042\060\040\006\003\125\004\003\023 -\031\124\162\165\163\164\101\163\151\141\040\124\114\123\040\105 -\103\103\040\122\157\157\164\040\103\101 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\042\060\040\006\003\125\004\003\023 -\031\124\162\165\163\164\101\163\151\141\040\124\114\123\040\105 -\103\103\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\066\164\341\115\174\145\023\311\254\203\125\045\240\076 -\122\176\057\120\150\307 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\002\061\060\202\001\267\240\003\002\001\002\002\024\066 -\164\341\115\174\145\023\311\254\203\125\045\240\076\122\176\057 -\120\150\307\060\012\006\010\052\206\110\316\075\004\003\003\060 -\130\061\013\060\011\006\003\125\004\006\023\002\103\116\061\045 -\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101\163 -\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163\054 -\040\111\156\143\056\061\042\060\040\006\003\125\004\003\023\031 -\124\162\165\163\164\101\163\151\141\040\124\114\123\040\105\103 -\103\040\122\157\157\164\040\103\101\060\036\027\015\062\064\060 -\065\061\065\060\065\064\061\065\066\132\027\015\064\064\060\065 -\061\065\060\065\064\061\065\065\132\060\130\061\013\060\011\006 -\003\125\004\006\023\002\103\116\061\045\060\043\006\003\125\004 -\012\023\034\124\162\165\163\164\101\163\151\141\040\124\145\143 -\150\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061 -\042\060\040\006\003\125\004\003\023\031\124\162\165\163\164\101 -\163\151\141\040\124\114\123\040\105\103\103\040\122\157\157\164 -\040\103\101\060\166\060\020\006\007\052\206\110\316\075\002\001 -\006\005\053\201\004\000\042\003\142\000\004\270\177\245\133\077 -\001\076\175\360\210\155\256\051\230\341\233\134\123\231\333\367 -\010\377\325\152\340\216\313\104\246\360\301\214\275\117\324\316 -\324\210\123\350\136\127\327\116\276\054\077\363\022\247\000\351 -\202\343\052\133\062\174\113\233\024\051\236\370\055\203\265\353 -\216\061\111\075\046\141\351\035\162\213\211\266\012\273\234\063 -\065\017\332\354\336\251\112\037\311\063\261\243\102\060\100\060 -\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 -\060\035\006\003\125\035\016\004\026\004\024\054\205\123\273\261 -\103\315\062\352\236\243\207\376\242\230\250\246\223\351\020\060 -\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060 -\012\006\010\052\206\110\316\075\004\003\003\003\150\000\060\145 -\002\060\124\107\327\303\055\141\206\110\364\171\132\125\015\065 -\057\137\015\366\147\154\167\100\032\106\347\370\150\133\116\047 -\035\270\230\175\177\223\277\010\115\304\332\105\060\241\017\136 -\112\170\002\061\000\243\221\207\362\021\063\203\303\301\212\221 -\072\114\053\120\261\275\042\224\135\065\211\163\203\305\233\031 -\376\264\241\351\324\241\146\266\001\245\066\371\330\150\141\050 -\267\164\341\242\061 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "TrustAsia TLS ECC Root CA" -# Issuer: CN=TrustAsia TLS ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:36:74:e1:4d:7c:65:13:c9:ac:83:55:25:a0:3e:52:7e:2f:50:68:c7 -# Subject: CN=TrustAsia TLS ECC Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:41:56 2024 -# Not Valid After : Sun May 15 05:41:55 2044 -# Fingerprint (SHA-256): C0:07:6B:9E:F0:53:1F:B1:A6:56:D6:7C:4E:BE:97:CD:5D:BA:A4:1E:F4:45:98:AC:C2:48:98:78:C9:2D:87:11 -# Fingerprint (SHA1): B5:EC:39:F3:A1:66:37:AE:C3:05:94:57:E2:BE:11:BE:B7:A1:7F:36 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia TLS ECC Root CA" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\265\354\071\363\241\146\067\256\303\005\224\127\342\276\021\276 -\267\241\177\066 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\011\110\004\167\322\374\145\223\161\146\261\021\225\117\006\214 -END -CKA_ISSUER MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\042\060\040\006\003\125\004\003\023 -\031\124\162\165\163\164\101\163\151\141\040\124\114\123\040\105 -\103\103\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\066\164\341\115\174\145\023\311\254\203\125\045\240\076 -\122\176\057\120\150\307 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "TrustAsia TLS RSA Root CA" -# -# Issuer: CN=TrustAsia TLS RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:1c:18:d8:cf:e5:53:3f:22:35:46:53:54:24:3c:6c:47:d1:5c:4a:9c -# Subject: CN=TrustAsia TLS RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:41:57 2024 -# Not Valid After : Sun May 15 05:41:56 2044 -# Fingerprint (SHA-256): 06:C0:8D:7D:AF:D8:76:97:1E:B1:12:4F:E6:7F:84:7E:C0:C7:A1:58:D3:EA:53:CB:E9:40:E2:EA:97:91:F4:C3 -# Fingerprint (SHA1): A5:46:50:C5:62:EA:95:9A:1A:A7:04:6F:17:58:C7:29:53:3D:03:FA -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia TLS RSA Root CA" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\042\060\040\006\003\125\004\003\023 -\031\124\162\165\163\164\101\163\151\141\040\124\114\123\040\122 -\123\101\040\122\157\157\164\040\103\101 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\042\060\040\006\003\125\004\003\023 -\031\124\162\165\163\164\101\163\151\141\040\124\114\123\040\122 -\123\101\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\034\030\330\317\345\123\077\042\065\106\123\124\044\074 -\154\107\321\134\112\234 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\200\060\202\003\150\240\003\002\001\002\002\024\034 -\030\330\317\345\123\077\042\065\106\123\124\044\074\154\107\321 -\134\112\234\060\015\006\011\052\206\110\206\367\015\001\001\014 -\005\000\060\130\061\013\060\011\006\003\125\004\006\023\002\103 -\116\061\045\060\043\006\003\125\004\012\023\034\124\162\165\163 -\164\101\163\151\141\040\124\145\143\150\156\157\154\157\147\151 -\145\163\054\040\111\156\143\056\061\042\060\040\006\003\125\004 -\003\023\031\124\162\165\163\164\101\163\151\141\040\124\114\123 -\040\122\123\101\040\122\157\157\164\040\103\101\060\036\027\015 -\062\064\060\065\061\065\060\065\064\061\065\067\132\027\015\064 -\064\060\065\061\065\060\065\064\061\065\066\132\060\130\061\013 -\060\011\006\003\125\004\006\023\002\103\116\061\045\060\043\006 -\003\125\004\012\023\034\124\162\165\163\164\101\163\151\141\040 -\124\145\143\150\156\157\154\157\147\151\145\163\054\040\111\156 -\143\056\061\042\060\040\006\003\125\004\003\023\031\124\162\165 -\163\164\101\163\151\141\040\124\114\123\040\122\123\101\040\122 -\157\157\164\040\103\101\060\202\002\042\060\015\006\011\052\206 -\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 -\002\012\002\202\002\001\000\303\026\270\033\152\244\104\163\345 -\326\116\364\271\317\133\013\301\321\232\201\365\143\260\217\103 -\301\273\010\132\032\172\341\007\166\046\037\217\151\126\276\376 -\066\140\320\014\203\315\224\352\347\305\055\134\057\005\026\002 -\236\012\250\057\345\140\046\124\226\370\230\100\035\254\256\235 -\164\147\057\124\373\224\143\230\343\046\112\203\306\225\266\011 -\103\120\315\015\175\336\104\016\140\022\117\133\065\275\277\231 -\070\155\175\154\332\342\150\163\037\371\061\245\031\020\163\005 -\052\303\062\031\205\352\064\252\335\102\036\060\215\077\236\265 -\036\141\325\157\275\000\162\162\255\022\077\252\246\111\163\362 -\206\025\225\014\020\137\121\144\316\377\167\270\311\155\254\345 -\325\230\361\231\056\154\343\311\104\371\265\103\047\010\115\366 -\176\336\104\171\273\262\214\034\332\323\113\154\056\326\303\170 -\267\114\325\244\344\332\334\212\216\016\377\017\303\246\140\046 -\050\317\066\277\372\127\012\354\133\077\351\060\026\173\304\333 -\304\324\144\240\060\373\345\375\035\161\222\335\051\217\101\130 -\336\000\255\072\375\075\174\032\250\261\027\360\116\064\170\130 -\045\326\205\041\353\171\035\320\334\253\317\142\074\260\307\227 -\213\326\320\237\323\376\074\336\305\343\374\072\203\160\204\041 -\035\011\302\241\374\273\050\041\145\123\140\172\220\155\226\070 -\133\377\361\327\172\133\155\323\311\160\111\112\272\035\072\320 -\120\332\062\040\031\344\213\077\353\325\026\046\067\074\373\165 -\236\260\007\160\270\024\140\167\334\366\017\134\122\012\274\135 -\155\215\121\012\332\305\030\310\233\155\334\260\203\263\177\243 -\116\170\114\230\045\253\362\176\056\040\136\202\025\246\326\330 -\217\254\345\315\062\206\310\371\344\332\211\342\073\076\223\305 -\023\152\377\307\367\030\374\147\265\357\030\054\124\253\100\323 -\154\115\355\305\310\267\070\117\144\304\224\114\117\240\315\256 -\245\306\047\045\165\047\155\306\332\234\216\260\005\231\325\050 -\021\305\041\324\270\374\307\226\253\112\144\131\141\153\023\374 -\113\314\222\246\017\244\121\277\016\130\220\331\202\203\071\246 -\137\263\372\156\222\263\315\063\016\205\250\361\051\323\253\131 -\255\326\333\336\324\053\201\002\003\001\000\001\243\102\060\100 -\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 -\377\060\035\006\003\125\035\016\004\026\004\024\270\007\221\171 -\134\006\364\106\375\173\131\312\132\046\221\247\105\053\370\123 -\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006 -\060\015\006\011\052\206\110\206\367\015\001\001\014\005\000\003 -\202\002\001\000\041\233\152\005\040\135\030\026\247\022\244\367 -\107\077\315\312\073\256\216\300\202\316\334\110\045\170\027\154 -\340\340\160\304\326\226\331\331\366\277\172\234\023\273\123\225 -\222\377\317\222\340\363\305\047\065\127\250\073\242\031\353\370 -\212\243\004\336\151\213\344\074\074\275\345\257\320\022\033\345 -\211\153\163\233\157\045\002\113\220\202\257\100\302\255\272\232 -\140\044\132\201\115\005\030\243\342\063\171\172\013\037\223\355 -\354\071\112\365\023\004\354\215\164\235\201\012\250\157\350\166 -\376\213\117\053\151\022\206\012\064\066\335\202\233\157\117\340 -\163\335\111\177\050\076\311\073\243\127\004\330\223\331\074\051 -\333\022\020\150\341\304\211\270\006\040\347\033\172\274\261\223 -\141\232\031\100\021\265\152\205\127\001\361\266\132\055\046\163 -\047\226\371\271\077\133\320\210\235\344\240\375\272\116\225\011 -\203\177\167\334\121\005\224\235\040\161\166\261\354\372\211\265 -\234\056\205\361\271\133\044\132\261\011\253\332\312\032\007\315 -\206\337\333\151\333\264\110\030\000\055\274\242\304\211\105\043 -\245\016\341\104\145\076\212\301\152\060\035\342\140\370\072\252 -\207\011\102\271\201\222\334\045\210\230\211\361\174\065\361\142 -\312\356\171\370\031\057\376\137\370\333\207\316\352\250\017\014 -\246\350\013\240\074\340\153\224\230\234\177\255\006\346\034\352 -\102\020\137\342\046\025\074\067\071\367\327\274\356\270\345\357 -\003\356\275\042\373\050\206\064\130\304\132\177\141\242\170\017 -\136\363\312\235\274\033\074\247\310\055\366\247\042\021\312\003 -\330\347\147\012\212\016\313\065\216\064\071\330\310\352\215\237 -\144\340\067\260\154\327\305\217\301\220\141\046\333\044\214\036 -\112\300\210\337\065\220\316\077\002\364\144\141\336\307\310\007 -\225\336\062\030\072\217\242\102\100\044\345\326\063\135\174\256 -\357\261\115\117\324\127\220\065\152\334\256\004\227\111\211\064 -\227\056\060\004\347\230\367\333\013\001\220\301\037\012\077\370 -\302\376\116\372\333\232\163\163\026\274\005\270\171\330\131\257 -\006\347\077\147\070\071\261\174\253\224\340\051\024\246\050\362 -\337\155\342\232\333\124\103\370\107\130\243\135\164\025\234\301 -\253\260\307\064 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "TrustAsia TLS RSA Root CA" -# Issuer: CN=TrustAsia TLS RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Serial Number:1c:18:d8:cf:e5:53:3f:22:35:46:53:54:24:3c:6c:47:d1:5c:4a:9c -# Subject: CN=TrustAsia TLS RSA Root CA,O="TrustAsia Technologies, Inc.",C=CN -# Not Valid Before: Wed May 15 05:41:57 2024 -# Not Valid After : Sun May 15 05:41:56 2044 -# Fingerprint (SHA-256): 06:C0:8D:7D:AF:D8:76:97:1E:B1:12:4F:E6:7F:84:7E:C0:C7:A1:58:D3:EA:53:CB:E9:40:E2:EA:97:91:F4:C3 -# Fingerprint (SHA1): A5:46:50:C5:62:EA:95:9A:1A:A7:04:6F:17:58:C7:29:53:3D:03:FA -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "TrustAsia TLS RSA Root CA" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\245\106\120\305\142\352\225\232\032\247\004\157\027\130\307\051 -\123\075\003\372 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\073\236\303\206\017\064\074\153\305\106\304\216\035\347\031\022 -END -CKA_ISSUER MULTILINE_OCTAL -\060\130\061\013\060\011\006\003\125\004\006\023\002\103\116\061 -\045\060\043\006\003\125\004\012\023\034\124\162\165\163\164\101 -\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 -\054\040\111\156\143\056\061\042\060\040\006\003\125\004\003\023 -\031\124\162\165\163\164\101\163\151\141\040\124\114\123\040\122 -\123\101\040\122\157\157\164\040\103\101 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\034\030\330\317\345\123\077\042\065\106\123\124\044\074 -\154\107\321\134\112\234 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - # # Certificate "D-TRUST EV Root CA 2 2023" # @@ -25857,1031 +26138,3 @@ CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "SwissSign RSA SMIME Root CA 2022 - 1" -# -# Issuer: CN=SwissSign RSA SMIME Root CA 2022 - 1,O=SwissSign AG,C=CH -# Serial Number:46:0e:d4:01:71:90:a0:1a:83:2c:4a:42:10:28:15:d2:61:1b:ad:32 -# Subject: CN=SwissSign RSA SMIME Root CA 2022 - 1,O=SwissSign AG,C=CH -# Not Valid Before: Wed Jun 08 10:53:13 2022 -# Not Valid After : Sat Jun 08 10:53:13 2047 -# Fingerprint (SHA-256): 9A:12:C3:92:BF:E5:78:91:A0:C5:45:30:9D:4D:9F:D5:67:E4:80:CB:61:3D:63:42:27:8B:19:5C:79:A7:93:1F -# Fingerprint (SHA1): 14:D7:65:62:74:10:50:47:9F:8B:32:C6:86:8A:18:FA:E1:19:99:B0 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "SwissSign RSA SMIME Root CA 2022 - 1" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\123\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\055\060\053\006\003\125\004\003\023 -\044\123\167\151\163\163\123\151\147\156\040\122\123\101\040\123 -\115\111\115\105\040\122\157\157\164\040\103\101\040\062\060\062 -\062\040\055\040\061 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\123\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\055\060\053\006\003\125\004\003\023 -\044\123\167\151\163\163\123\151\147\156\040\122\123\101\040\123 -\115\111\115\105\040\122\157\157\164\040\103\101\040\062\060\062 -\062\040\055\040\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\106\016\324\001\161\220\240\032\203\054\112\102\020\050 -\025\322\141\033\255\062 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\227\060\202\003\177\240\003\002\001\002\002\024\106 -\016\324\001\161\220\240\032\203\054\112\102\020\050\025\322\141 -\033\255\062\060\015\006\011\052\206\110\206\367\015\001\001\013 -\005\000\060\123\061\013\060\011\006\003\125\004\006\023\002\103 -\110\061\025\060\023\006\003\125\004\012\023\014\123\167\151\163 -\163\123\151\147\156\040\101\107\061\055\060\053\006\003\125\004 -\003\023\044\123\167\151\163\163\123\151\147\156\040\122\123\101 -\040\123\115\111\115\105\040\122\157\157\164\040\103\101\040\062 -\060\062\062\040\055\040\061\060\036\027\015\062\062\060\066\060 -\070\061\060\065\063\061\063\132\027\015\064\067\060\066\060\070 -\061\060\065\063\061\063\132\060\123\061\013\060\011\006\003\125 -\004\006\023\002\103\110\061\025\060\023\006\003\125\004\012\023 -\014\123\167\151\163\163\123\151\147\156\040\101\107\061\055\060 -\053\006\003\125\004\003\023\044\123\167\151\163\163\123\151\147 -\156\040\122\123\101\040\123\115\111\115\105\040\122\157\157\164 -\040\103\101\040\062\060\062\062\040\055\040\061\060\202\002\042 -\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 -\202\002\017\000\060\202\002\012\002\202\002\001\000\324\373\372 -\077\206\242\231\160\011\072\311\326\241\116\001\316\106\265\055 -\044\110\015\105\351\254\311\032\327\062\200\244\346\323\312\326 -\362\051\067\354\232\054\326\201\316\346\033\235\261\017\101\337 -\130\323\137\252\240\171\131\013\214\255\371\305\371\034\373\303 -\351\065\100\164\303\301\014\313\147\373\234\136\014\043\371\320 -\057\372\114\202\105\034\265\365\037\370\031\156\332\223\267\116 -\150\203\176\142\055\035\214\225\037\160\331\316\132\214\041\135 -\250\276\010\251\126\155\331\367\271\220\231\307\073\327\275\236 -\056\311\147\127\056\041\316\360\062\203\373\004\001\371\267\202 -\104\015\262\313\172\011\241\110\076\117\300\013\152\033\033\354 -\317\035\236\177\006\220\254\050\005\013\250\346\124\073\242\247 -\054\071\023\231\250\373\064\353\365\360\275\001\330\210\021\310 -\256\272\031\002\111\002\334\212\054\264\275\141\140\354\235\170 -\134\152\213\057\027\206\136\362\117\223\000\153\135\305\262\251 -\245\030\352\346\155\176\127\005\373\007\374\274\174\241\103\261 -\146\034\250\147\373\253\067\366\252\252\270\172\101\367\071\325 -\214\237\256\162\066\047\344\142\306\103\231\361\241\101\351\377 -\211\237\017\111\257\311\024\006\027\047\144\071\015\245\264\052 -\133\354\074\373\237\305\137\306\073\135\046\031\362\204\051\270 -\225\104\011\122\375\154\060\320\142\217\050\245\201\226\053\224 -\057\046\165\344\011\214\012\337\070\363\176\135\070\216\202\232 -\214\334\236\256\316\022\102\072\042\362\065\215\117\322\032\310 -\111\063\013\372\066\077\377\054\153\152\040\161\114\315\255\020 -\077\151\062\204\216\134\356\123\210\104\342\335\314\003\060\222 -\206\171\220\052\113\165\373\122\142\304\364\157\115\367\333\043 -\241\030\335\105\123\027\232\143\044\110\211\042\315\176\233\001 -\034\200\050\003\217\133\053\372\037\343\174\031\275\346\217\261 -\100\166\240\362\307\067\262\062\224\020\062\315\247\023\227\361 -\073\054\172\064\042\173\164\072\100\342\257\202\370\301\301\170 -\374\137\344\065\177\300\364\114\360\114\262\352\207\003\162\045 -\131\203\052\010\244\121\336\317\356\250\347\350\100\077\210\360 -\066\253\011\116\330\240\250\177\363\341\011\333\271\002\003\001 -\000\001\243\143\060\141\060\017\006\003\125\035\023\001\001\377 -\004\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001 -\377\004\004\003\002\001\006\060\037\006\003\125\035\043\004\030 -\060\026\200\024\314\056\255\211\214\203\343\100\243\045\151\245 -\352\222\175\322\067\072\307\306\060\035\006\003\125\035\016\004 -\026\004\024\314\056\255\211\214\203\343\100\243\045\151\245\352 -\222\175\322\067\072\307\306\060\015\006\011\052\206\110\206\367 -\015\001\001\013\005\000\003\202\002\001\000\000\007\146\026\245 -\355\307\271\277\274\310\221\255\130\355\136\022\005\263\366\106 -\233\173\344\204\020\057\007\261\132\136\062\156\155\000\360\136 -\307\232\142\071\207\115\344\074\363\276\366\272\152\123\154\204 -\155\007\324\141\312\147\146\276\233\076\105\060\235\121\322\327 -\132\102\256\235\222\016\043\253\320\025\224\076\250\232\312\233 -\355\301\302\137\041\243\231\200\374\271\246\141\016\120\200\200 -\047\307\350\175\240\324\224\172\230\003\347\356\102\213\363\122 -\120\134\357\276\260\166\132\034\011\241\277\203\300\036\166\145 -\320\045\101\133\151\221\223\167\371\214\113\360\054\333\233\006 -\000\027\203\372\132\224\264\206\211\357\274\012\013\022\370\006 -\115\322\163\342\221\070\135\271\152\113\117\247\257\332\046\045 -\222\043\032\174\037\047\015\221\204\357\027\162\366\106\353\153 -\073\067\251\324\325\232\143\272\136\171\214\052\265\233\242\064 -\265\314\226\047\371\171\010\074\177\155\340\377\174\334\305\046 -\257\303\241\172\151\026\335\207\065\163\306\153\061\153\126\001 -\055\117\231\331\356\312\341\320\203\336\266\205\347\026\370\321 -\256\063\110\373\032\317\135\137\212\204\141\164\007\157\031\260 -\121\041\262\241\004\261\173\123\217\357\242\105\255\037\230\335 -\371\152\004\154\252\066\305\257\214\352\051\111\112\347\377\127 -\263\306\074\021\111\030\027\346\146\205\341\350\043\362\213\016 -\074\223\304\077\166\116\176\142\242\051\313\026\060\336\054\151 -\257\221\247\342\127\345\063\114\277\330\216\007\242\177\241\065 -\106\151\112\250\040\051\377\353\336\040\225\131\261\256\115\060 -\153\330\232\264\003\037\302\070\344\040\325\016\326\032\060\114 -\150\234\214\340\355\241\017\216\102\135\353\200\052\022\171\246 -\027\027\264\225\052\216\064\221\247\275\321\254\250\032\103\041 -\213\336\357\340\254\106\045\145\012\306\053\241\233\076\042\350 -\030\070\265\046\366\054\312\010\040\336\060\321\255\124\375\334 -\110\025\237\315\247\101\327\067\070\205\060\117\022\210\103\064 -\203\327\052\115\324\000\127\134\345\312\360\335\341\222\050\053 -\030\165\275\107\244\102\023\351\126\132\215\112\136\316\016\165 -\065\200\163\031\017\054\051\213\273\225\270 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "SwissSign RSA SMIME Root CA 2022 - 1" -# Issuer: CN=SwissSign RSA SMIME Root CA 2022 - 1,O=SwissSign AG,C=CH -# Serial Number:46:0e:d4:01:71:90:a0:1a:83:2c:4a:42:10:28:15:d2:61:1b:ad:32 -# Subject: CN=SwissSign RSA SMIME Root CA 2022 - 1,O=SwissSign AG,C=CH -# Not Valid Before: Wed Jun 08 10:53:13 2022 -# Not Valid After : Sat Jun 08 10:53:13 2047 -# Fingerprint (SHA-256): 9A:12:C3:92:BF:E5:78:91:A0:C5:45:30:9D:4D:9F:D5:67:E4:80:CB:61:3D:63:42:27:8B:19:5C:79:A7:93:1F -# Fingerprint (SHA1): 14:D7:65:62:74:10:50:47:9F:8B:32:C6:86:8A:18:FA:E1:19:99:B0 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "SwissSign RSA SMIME Root CA 2022 - 1" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\024\327\145\142\164\020\120\107\237\213\062\306\206\212\030\372 -\341\031\231\260 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\232\063\065\330\302\042\023\366\370\153\226\000\022\032\110\141 -END -CKA_ISSUER MULTILINE_OCTAL -\060\123\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\055\060\053\006\003\125\004\003\023 -\044\123\167\151\163\163\123\151\147\156\040\122\123\101\040\123 -\115\111\115\105\040\122\157\157\164\040\103\101\040\062\060\062 -\062\040\055\040\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\106\016\324\001\161\220\240\032\203\054\112\102\020\050 -\025\322\141\033\255\062 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "SwissSign RSA TLS Root CA 2022 - 1" -# -# Issuer: CN=SwissSign RSA TLS Root CA 2022 - 1,O=SwissSign AG,C=CH -# Serial Number:43:fa:0c:5f:4e:1b:80:18:44:ef:d1:b4:4f:35:1f:44:f4:80:ed:cb -# Subject: CN=SwissSign RSA TLS Root CA 2022 - 1,O=SwissSign AG,C=CH -# Not Valid Before: Wed Jun 08 11:08:22 2022 -# Not Valid After : Sat Jun 08 11:08:22 2047 -# Fingerprint (SHA-256): 19:31:44:F4:31:E0:FD:DB:74:07:17:D4:DE:92:6A:57:11:33:88:4B:43:60:D3:0E:27:29:13:CB:E6:60:CE:41 -# Fingerprint (SHA1): 81:34:0A:BE:4C:CD:CE:CC:E7:7D:CC:8A:D4:57:E2:45:A0:77:5D:CE -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "SwissSign RSA TLS Root CA 2022 - 1" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\121\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\053\060\051\006\003\125\004\003\023 -\042\123\167\151\163\163\123\151\147\156\040\122\123\101\040\124 -\114\123\040\122\157\157\164\040\103\101\040\062\060\062\062\040 -\055\040\061 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\121\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\053\060\051\006\003\125\004\003\023 -\042\123\167\151\163\163\123\151\147\156\040\122\123\101\040\124 -\114\123\040\122\157\157\164\040\103\101\040\062\060\062\062\040 -\055\040\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\103\372\014\137\116\033\200\030\104\357\321\264\117\065 -\037\104\364\200\355\313 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\223\060\202\003\173\240\003\002\001\002\002\024\103 -\372\014\137\116\033\200\030\104\357\321\264\117\065\037\104\364 -\200\355\313\060\015\006\011\052\206\110\206\367\015\001\001\013 -\005\000\060\121\061\013\060\011\006\003\125\004\006\023\002\103 -\110\061\025\060\023\006\003\125\004\012\023\014\123\167\151\163 -\163\123\151\147\156\040\101\107\061\053\060\051\006\003\125\004 -\003\023\042\123\167\151\163\163\123\151\147\156\040\122\123\101 -\040\124\114\123\040\122\157\157\164\040\103\101\040\062\060\062 -\062\040\055\040\061\060\036\027\015\062\062\060\066\060\070\061 -\061\060\070\062\062\132\027\015\064\067\060\066\060\070\061\061 -\060\070\062\062\132\060\121\061\013\060\011\006\003\125\004\006 -\023\002\103\110\061\025\060\023\006\003\125\004\012\023\014\123 -\167\151\163\163\123\151\147\156\040\101\107\061\053\060\051\006 -\003\125\004\003\023\042\123\167\151\163\163\123\151\147\156\040 -\122\123\101\040\124\114\123\040\122\157\157\164\040\103\101\040 -\062\060\062\062\040\055\040\061\060\202\002\042\060\015\006\011 -\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 -\060\202\002\012\002\202\002\001\000\313\052\150\342\013\303\127 -\274\065\143\274\160\245\073\363\214\074\116\127\226\156\303\116 -\066\244\366\002\312\036\252\256\270\336\250\257\035\166\332\272 -\065\320\221\160\007\337\263\006\362\212\362\056\125\121\173\273 -\054\044\313\177\222\046\200\243\264\224\366\202\241\244\350\372 -\165\035\131\363\007\152\141\144\342\306\214\225\257\243\273\216 -\157\126\317\161\314\136\201\141\015\155\362\253\002\056\244\227 -\345\161\374\212\260\221\040\133\234\164\122\155\256\025\047\131 -\170\362\011\312\145\016\177\313\364\353\347\334\251\114\167\366 -\053\026\004\225\256\234\161\245\077\052\332\101\102\347\074\204 -\020\364\341\075\214\153\342\053\221\107\125\117\270\126\276\105 -\336\042\121\115\116\050\331\137\031\101\006\217\016\115\006\340 -\160\100\043\001\152\344\313\023\233\163\254\115\024\110\222\055 -\376\155\247\370\207\153\171\165\341\276\020\261\252\210\100\131 -\124\327\317\304\320\233\104\263\070\151\144\214\201\321\043\176 -\252\071\074\073\017\237\112\173\202\312\153\157\312\042\076\061 -\320\260\320\052\034\222\212\217\330\031\234\107\344\076\014\271 -\302\315\276\101\014\370\244\107\005\333\301\027\060\070\072\151 -\334\315\303\151\043\375\232\017\002\316\020\152\316\312\370\271 -\051\243\066\211\206\256\013\300\117\143\271\006\131\111\136\016 -\301\151\263\012\363\167\176\056\235\214\263\047\230\322\231\215 -\045\247\037\206\263\246\124\160\070\374\175\135\350\117\203\014 -\321\223\345\022\344\124\332\076\362\255\072\336\076\074\105\360 -\050\017\006\271\341\333\227\173\231\105\236\335\376\225\131\004 -\057\165\077\323\256\211\231\206\254\024\264\250\204\372\310\135 -\073\033\130\223\301\027\224\125\310\013\343\202\171\204\237\363 -\000\204\064\356\334\061\325\217\362\372\117\226\114\006\252\170 -\373\336\144\242\043\315\037\076\305\214\274\067\124\016\273\132 -\162\125\357\310\133\265\162\370\170\337\067\040\114\127\221\163 -\222\163\254\030\167\103\202\040\151\354\351\254\051\106\345\013 -\116\370\067\163\211\226\212\034\155\275\357\276\330\266\364\312 -\300\375\107\360\256\013\130\040\305\310\035\066\256\227\215\120 -\203\046\044\051\367\235\073\017\005\002\003\001\000\001\243\143 -\060\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003 -\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003 -\002\001\006\060\037\006\003\125\035\043\004\030\060\026\200\024 -\157\216\142\213\223\103\260\341\100\366\247\303\375\361\017\270 -\017\025\070\245\060\035\006\003\125\035\016\004\026\004\024\157 -\216\142\213\223\103\260\341\100\366\247\303\375\361\017\270\017 -\025\070\245\060\015\006\011\052\206\110\206\367\015\001\001\013 -\005\000\003\202\002\001\000\254\054\051\101\175\372\134\365\032 -\225\030\277\054\251\212\251\044\124\165\365\270\100\253\313\250 -\044\121\053\030\077\143\251\256\230\126\053\005\103\042\243\267 -\327\106\236\300\052\022\075\216\226\226\100\337\014\063\213\153 -\067\221\072\225\273\071\051\155\300\002\154\212\224\013\007\002 -\115\030\076\373\373\173\365\166\075\233\366\136\060\006\130\063 -\036\252\170\325\346\124\004\072\262\202\011\215\316\026\063\131 -\105\050\361\245\243\227\016\103\043\375\013\040\200\220\377\343 -\046\317\270\144\221\345\005\217\023\240\166\015\327\067\014\020 -\210\226\364\076\276\225\275\361\303\175\360\243\303\171\107\013 -\134\222\025\143\355\122\165\212\347\106\151\313\121\125\013\052 -\114\365\362\144\117\251\134\377\147\062\216\125\055\062\202\034 -\200\057\152\221\370\313\274\176\030\242\046\250\056\243\123\050 -\207\355\127\345\145\172\116\000\112\133\116\123\311\142\066\275 -\302\216\133\353\314\156\047\201\030\131\213\104\143\237\325\014 -\145\364\051\145\177\221\054\345\177\176\350\211\317\217\040\313 -\155\007\102\021\121\046\062\212\056\072\107\023\270\215\275\107 -\015\011\360\026\244\355\226\206\056\031\330\276\214\072\350\105 -\056\021\272\256\132\347\271\277\261\314\217\340\240\377\270\263 -\321\205\173\171\146\243\071\265\073\146\330\100\276\317\267\147 -\213\110\311\031\045\125\374\275\215\317\136\332\116\246\362\151 -\316\375\177\114\167\320\301\106\065\230\134\043\233\002\105\103 -\224\132\335\274\107\255\042\376\272\136\057\221\051\051\206\173 -\041\336\156\144\267\313\015\217\067\133\243\010\152\353\364\335 -\002\217\120\003\002\261\270\067\150\226\120\353\270\137\324\050 -\212\245\042\014\212\204\360\131\056\325\067\321\141\345\102\163 -\130\052\201\367\166\333\342\342\115\015\137\366\267\276\005\264 -\256\116\015\336\026\075\003\201\263\046\136\113\270\113\000\317 -\377\214\027\272\154\140\055\047\207\067\044\346\172\140\057\265 -\323\203\004\252\117\103\165\242\301\203\262\047\230\053\261\016 -\200\272\300\205\136\102\271\337\261\140\221\323\353\030\176\160 -\170\256\166\203\276\161\132\320\220\343\312\301\026\045\147\112 -\360\266\173\272\341\234\331 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "SwissSign RSA TLS Root CA 2022 - 1" -# Issuer: CN=SwissSign RSA TLS Root CA 2022 - 1,O=SwissSign AG,C=CH -# Serial Number:43:fa:0c:5f:4e:1b:80:18:44:ef:d1:b4:4f:35:1f:44:f4:80:ed:cb -# Subject: CN=SwissSign RSA TLS Root CA 2022 - 1,O=SwissSign AG,C=CH -# Not Valid Before: Wed Jun 08 11:08:22 2022 -# Not Valid After : Sat Jun 08 11:08:22 2047 -# Fingerprint (SHA-256): 19:31:44:F4:31:E0:FD:DB:74:07:17:D4:DE:92:6A:57:11:33:88:4B:43:60:D3:0E:27:29:13:CB:E6:60:CE:41 -# Fingerprint (SHA1): 81:34:0A:BE:4C:CD:CE:CC:E7:7D:CC:8A:D4:57:E2:45:A0:77:5D:CE -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "SwissSign RSA TLS Root CA 2022 - 1" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\201\064\012\276\114\315\316\314\347\175\314\212\324\127\342\105 -\240\167\135\316 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\026\056\344\031\166\201\205\272\216\221\130\361\025\357\162\071 -END -CKA_ISSUER MULTILINE_OCTAL -\060\121\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 -\151\147\156\040\101\107\061\053\060\051\006\003\125\004\003\023 -\042\123\167\151\163\163\123\151\147\156\040\122\123\101\040\124 -\114\123\040\122\157\157\164\040\103\101\040\062\060\062\062\040 -\055\040\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\024\103\372\014\137\116\033\200\030\104\357\321\264\117\065 -\037\104\364\200\355\313 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "OISTE Client Root ECC G1" -# -# Issuer: CN=OISTE Client Root ECC G1,O=OISTE Foundation,C=CH -# Serial Number:54:ec:97:d6:8b:b4:c4:0b:21:6e:0e:b2:d0:53:c8:7a -# Subject: CN=OISTE Client Root ECC G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:31:40 2023 -# Not Valid After : Sun May 24 14:31:39 2048 -# Fingerprint (SHA-256): D9:A3:24:85:A8:CC:A8:55:39:CE:F1:2F:FF:FF:71:13:78:A1:78:51:D7:3D:A2:73:2A:B4:30:2D:76:3B:D6:2B -# Fingerprint (SHA1): C0:2B:13:F9:1D:77:56:ED:6C:92:83:F1:86:DF:2A:D5:1E:6E:F2:BC -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Client Root ECC G1" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\103\154\151\145\156 -\164\040\122\157\157\164\040\105\103\103\040\107\061 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\103\154\151\145\156 -\164\040\122\157\157\164\040\105\103\103\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\124\354\227\326\213\264\304\013\041\156\016\262\320\123 -\310\172 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\002\064\060\202\001\272\240\003\002\001\002\002\020\124 -\354\227\326\213\264\304\013\041\156\016\262\320\123\310\172\060 -\012\006\010\052\206\110\316\075\004\003\003\060\113\061\013\060 -\011\006\003\125\004\006\023\002\103\110\061\031\060\027\006\003 -\125\004\012\014\020\117\111\123\124\105\040\106\157\165\156\144 -\141\164\151\157\156\061\041\060\037\006\003\125\004\003\014\030 -\117\111\123\124\105\040\103\154\151\145\156\164\040\122\157\157 -\164\040\105\103\103\040\107\061\060\036\027\015\062\063\060\065 -\063\061\061\064\063\061\064\060\132\027\015\064\070\060\065\062 -\064\061\064\063\061\063\071\132\060\113\061\013\060\011\006\003 -\125\004\006\023\002\103\110\061\031\060\027\006\003\125\004\012 -\014\020\117\111\123\124\105\040\106\157\165\156\144\141\164\151 -\157\156\061\041\060\037\006\003\125\004\003\014\030\117\111\123 -\124\105\040\103\154\151\145\156\164\040\122\157\157\164\040\105 -\103\103\040\107\061\060\166\060\020\006\007\052\206\110\316\075 -\002\001\006\005\053\201\004\000\042\003\142\000\004\210\116\150 -\037\311\236\276\072\004\133\025\303\065\364\314\120\305\010\255 -\070\156\250\074\322\002\272\314\253\045\375\165\100\375\147\031 -\237\033\012\135\366\313\026\173\371\134\036\202\334\025\104\324 -\234\074\155\141\223\105\364\117\317\142\271\337\076\123\215\232 -\324\112\336\210\252\013\246\361\324\141\326\036\164\325\030\262 -\305\115\114\357\200\173\354\015\353\203\071\124\226\243\143\060 -\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 -\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024\231 -\127\073\071\261\055\000\214\041\146\214\225\151\234\155\165\354 -\214\077\372\060\035\006\003\125\035\016\004\026\004\024\231\127 -\073\071\261\055\000\214\041\146\214\225\151\234\155\165\354\214 -\077\372\060\016\006\003\125\035\017\001\001\377\004\004\003\002 -\001\206\060\012\006\010\052\206\110\316\075\004\003\003\003\150 -\000\060\145\002\061\000\226\377\344\202\116\026\042\133\240\205 -\030\074\075\072\217\040\006\010\045\347\365\221\066\031\255\173 -\264\337\133\146\022\067\163\160\355\315\005\050\007\136\010\316 -\015\102\137\031\221\002\002\060\147\111\207\256\006\101\035\040 -\323\061\246\252\046\067\361\047\212\141\015\376\232\006\103\247 -\056\236\046\107\243\062\030\213\350\136\120\005\361\260\172\110 -\166\336\333\241\142\112\272\167 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "OISTE Client Root ECC G1" -# Issuer: CN=OISTE Client Root ECC G1,O=OISTE Foundation,C=CH -# Serial Number:54:ec:97:d6:8b:b4:c4:0b:21:6e:0e:b2:d0:53:c8:7a -# Subject: CN=OISTE Client Root ECC G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:31:40 2023 -# Not Valid After : Sun May 24 14:31:39 2048 -# Fingerprint (SHA-256): D9:A3:24:85:A8:CC:A8:55:39:CE:F1:2F:FF:FF:71:13:78:A1:78:51:D7:3D:A2:73:2A:B4:30:2D:76:3B:D6:2B -# Fingerprint (SHA1): C0:2B:13:F9:1D:77:56:ED:6C:92:83:F1:86:DF:2A:D5:1E:6E:F2:BC -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Client Root ECC G1" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\300\053\023\371\035\167\126\355\154\222\203\361\206\337\052\325 -\036\156\362\274 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\121\257\341\070\170\021\354\345\310\237\135\233\065\362\114\054 -END -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\103\154\151\145\156 -\164\040\122\157\157\164\040\105\103\103\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\124\354\227\326\213\264\304\013\041\156\016\262\320\123 -\310\172 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "OISTE Client Root RSA G1" -# -# Issuer: CN=OISTE Client Root RSA G1,O=OISTE Foundation,C=CH -# Serial Number:34:17:6f:59:01:88:1b:aa:a5:dd:c8:48:bb:b4:3b:73 -# Subject: CN=OISTE Client Root RSA G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:23:29 2023 -# Not Valid After : Sun May 24 14:23:28 2048 -# Fingerprint (SHA-256): D0:2A:0F:99:4A:86:8C:66:39:5F:2E:7A:88:0D:F5:09:BD:0C:29:C9:6D:E1:60:15:A0:FD:50:1E:DA:4F:96:A9 -# Fingerprint (SHA1): BD:A8:13:20:E0:BF:97:ED:A2:8E:9E:18:5F:F2:D5:FE:E5:2B:13:D5 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Client Root RSA G1" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\103\154\151\145\156 -\164\040\122\157\157\164\040\122\123\101\040\107\061 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\103\154\151\145\156 -\164\040\122\157\157\164\040\122\123\101\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\064\027\157\131\001\210\033\252\245\335\310\110\273\264 -\073\163 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\203\060\202\003\153\240\003\002\001\002\002\020\064 -\027\157\131\001\210\033\252\245\335\310\110\273\264\073\163\060 -\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\113 -\061\013\060\011\006\003\125\004\006\023\002\103\110\061\031\060 -\027\006\003\125\004\012\014\020\117\111\123\124\105\040\106\157 -\165\156\144\141\164\151\157\156\061\041\060\037\006\003\125\004 -\003\014\030\117\111\123\124\105\040\103\154\151\145\156\164\040 -\122\157\157\164\040\122\123\101\040\107\061\060\036\027\015\062 -\063\060\065\063\061\061\064\062\063\062\071\132\027\015\064\070 -\060\065\062\064\061\064\062\063\062\070\132\060\113\061\013\060 -\011\006\003\125\004\006\023\002\103\110\061\031\060\027\006\003 -\125\004\012\014\020\117\111\123\124\105\040\106\157\165\156\144 -\141\164\151\157\156\061\041\060\037\006\003\125\004\003\014\030 -\117\111\123\124\105\040\103\154\151\145\156\164\040\122\157\157 -\164\040\122\123\101\040\107\061\060\202\002\042\060\015\006\011 -\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 -\060\202\002\012\002\202\002\001\000\272\117\376\376\124\023\265 -\204\074\274\340\323\061\361\035\156\334\304\123\161\372\344\071 -\121\103\166\175\222\037\201\177\000\153\101\302\346\332\334\030 -\115\154\027\131\160\011\063\142\354\151\210\055\260\335\131\371 -\141\140\140\126\361\266\264\357\353\207\320\023\376\303\317\157 -\217\176\071\130\121\263\211\002\216\124\225\036\042\137\253\050 -\005\103\047\370\105\364\011\102\046\224\376\275\023\170\273\221 -\362\020\020\234\015\147\174\332\144\040\353\172\060\032\272\110 -\015\170\124\052\231\061\064\253\313\246\152\347\014\147\071\146 -\244\046\250\047\050\347\363\346\074\163\344\053\314\157\061\056 -\023\164\141\313\150\346\322\063\316\122\274\176\145\044\132\041 -\201\061\103\252\262\234\321\030\347\141\074\122\257\200\211\351 -\064\106\336\371\115\231\132\155\035\275\306\045\321\223\125\216 -\370\047\222\103\072\214\225\105\100\343\211\030\247\206\301\131 -\230\312\333\046\034\023\300\214\201\271\230\260\255\151\255\156 -\030\343\173\142\101\365\255\066\376\013\264\173\040\137\237\251 -\156\371\231\202\022\122\322\212\304\124\170\264\174\367\101\233 -\003\347\007\136\263\302\271\111\144\147\222\026\304\140\220\016 -\260\202\175\063\255\320\066\352\321\166\153\174\210\107\230\254 -\033\371\264\120\214\141\201\151\330\061\363\215\372\076\362\365 -\113\257\316\303\035\357\137\050\033\353\030\326\240\130\122\062 -\276\102\157\315\111\227\042\301\160\271\323\343\140\117\336\203 -\202\240\116\060\275\163\123\302\275\027\375\240\300\230\217\352 -\016\027\007\346\103\225\040\116\333\021\250\371\343\323\270\047 -\107\014\047\333\022\353\201\125\314\165\333\237\323\027\103\304 -\373\353\212\050\155\351\257\104\120\132\103\373\361\071\342\223 -\120\317\230\374\104\226\130\070\245\245\355\105\303\122\102\005 -\247\357\345\074\244\254\075\347\326\251\126\005\252\260\303\247 -\031\344\345\075\327\127\104\155\224\021\037\312\160\310\374\271 -\114\314\101\132\203\164\123\220\170\317\326\324\056\117\261\252 -\115\056\365\321\010\133\072\144\357\310\247\250\172\141\354\354 -\246\325\210\116\266\124\324\130\221\302\045\144\221\274\012\024 -\075\222\024\232\265\013\006\351\057\002\003\001\000\001\243\143 -\060\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003 -\001\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024 -\051\202\045\065\012\072\276\222\053\344\011\003\344\354\217\215 -\070\162\071\313\060\035\006\003\125\035\016\004\026\004\024\051 -\202\045\065\012\072\276\222\053\344\011\003\344\354\217\215\070 -\162\071\313\060\016\006\003\125\035\017\001\001\377\004\004\003 -\002\001\206\060\015\006\011\052\206\110\206\367\015\001\001\014 -\005\000\003\202\002\001\000\155\043\206\302\377\365\340\310\300 -\125\212\140\061\314\227\103\107\160\103\323\343\354\122\372\323 -\302\236\373\211\062\032\312\106\223\117\004\227\053\333\320\234 -\204\015\225\007\102\124\376\357\151\041\337\222\003\056\217\067 -\041\043\167\251\167\067\154\240\304\256\234\247\130\071\112\025 -\227\142\106\203\121\040\355\077\302\243\361\303\142\047\320\254 -\023\036\376\074\122\035\220\325\143\361\251\136\352\177\347\347 -\353\226\132\121\354\324\251\033\343\014\224\146\254\313\210\222 -\111\276\163\134\212\340\152\274\246\201\315\263\134\324\043\222 -\310\115\371\040\214\160\224\113\150\155\362\217\036\154\065\367 -\350\137\324\327\275\040\067\122\146\377\053\273\111\146\267\161 -\250\054\137\163\017\007\222\347\116\137\245\006\333\311\212\074 -\227\305\102\352\175\017\201\033\127\353\236\014\017\377\243\047 -\040\111\123\246\263\072\114\313\155\060\065\332\362\360\232\376 -\120\337\155\134\044\075\115\167\152\175\206\137\114\320\341\246 -\264\256\004\023\001\220\361\200\150\204\007\224\202\007\203\353 -\221\345\223\016\165\221\256\243\043\040\111\144\324\272\071\226 -\127\160\356\125\064\050\174\326\257\312\251\236\346\311\001\311 -\007\301\320\104\261\200\264\121\120\252\217\366\234\345\147\163 -\320\033\352\203\065\027\057\120\306\336\126\307\273\243\003\313 -\342\241\030\350\370\316\121\006\243\322\003\100\141\032\247\147 -\127\203\374\321\022\271\050\252\332\116\153\325\234\330\205\067 -\332\275\042\327\064\131\234\032\246\316\170\326\224\170\007\006 -\017\261\223\041\240\111\307\020\236\012\256\121\167\032\371\161 -\220\303\255\230\017\212\051\152\140\001\252\117\255\040\003\055 -\152\216\243\013\152\326\375\223\014\212\141\313\275\050\361\137 -\161\375\270\063\071\326\112\361\366\262\150\122\076\145\217\103 -\235\201\044\044\366\050\114\065\247\375\063\012\245\170\301\004 -\037\354\111\152\304\256\325\104\026\246\247\215\177\332\041\226 -\076\250\272\026\147\324\251\241\347\302\232\370\020\331\073\232 -\356\150\366\057\000\356\313\273\146\215\042\070\206\364\277\137 -\170\251\310\240\035\132\273\165\120\371\122\013\017\035\002\054 -\024\032\363\207\152\167\363 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "OISTE Client Root RSA G1" -# Issuer: CN=OISTE Client Root RSA G1,O=OISTE Foundation,C=CH -# Serial Number:34:17:6f:59:01:88:1b:aa:a5:dd:c8:48:bb:b4:3b:73 -# Subject: CN=OISTE Client Root RSA G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:23:29 2023 -# Not Valid After : Sun May 24 14:23:28 2048 -# Fingerprint (SHA-256): D0:2A:0F:99:4A:86:8C:66:39:5F:2E:7A:88:0D:F5:09:BD:0C:29:C9:6D:E1:60:15:A0:FD:50:1E:DA:4F:96:A9 -# Fingerprint (SHA1): BD:A8:13:20:E0:BF:97:ED:A2:8E:9E:18:5F:F2:D5:FE:E5:2B:13:D5 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Client Root RSA G1" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\275\250\023\040\340\277\227\355\242\216\236\030\137\362\325\376 -\345\053\023\325 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\232\033\325\012\267\026\352\272\241\212\331\361\036\015\371\023 -END -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\103\154\151\145\156 -\164\040\122\157\157\164\040\122\123\101\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\064\027\157\131\001\210\033\252\245\335\310\110\273\264 -\073\163 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "OISTE Server Root ECC G1" -# -# Issuer: CN=OISTE Server Root ECC G1,O=OISTE Foundation,C=CH -# Serial Number:23:f9:c3:d6:35:af:8f:28:4b:1f:f0:54:ea:7e:97:9d -# Subject: CN=OISTE Server Root ECC G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:42:28 2023 -# Not Valid After : Sun May 24 14:42:27 2048 -# Fingerprint (SHA-256): EE:C9:97:C0:C3:0F:21:6F:7E:3B:8B:30:7D:2B:AE:42:41:2D:75:3F:C8:21:9D:AF:D1:52:0B:25:72:85:0F:49 -# Fingerprint (SHA1): 3B:F6:8B:09:AE:2A:92:7B:BA:E3:8D:3F:11:95:D9:E6:44:0C:45:E2 -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Server Root ECC G1" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\123\145\162\166\145 -\162\040\122\157\157\164\040\105\103\103\040\107\061 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\123\145\162\166\145 -\162\040\122\157\157\164\040\105\103\103\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\043\371\303\326\065\257\217\050\113\037\360\124\352\176 -\227\235 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\002\065\060\202\001\272\240\003\002\001\002\002\020\043 -\371\303\326\065\257\217\050\113\037\360\124\352\176\227\235\060 -\012\006\010\052\206\110\316\075\004\003\003\060\113\061\013\060 -\011\006\003\125\004\006\023\002\103\110\061\031\060\027\006\003 -\125\004\012\014\020\117\111\123\124\105\040\106\157\165\156\144 -\141\164\151\157\156\061\041\060\037\006\003\125\004\003\014\030 -\117\111\123\124\105\040\123\145\162\166\145\162\040\122\157\157 -\164\040\105\103\103\040\107\061\060\036\027\015\062\063\060\065 -\063\061\061\064\064\062\062\070\132\027\015\064\070\060\065\062 -\064\061\064\064\062\062\067\132\060\113\061\013\060\011\006\003 -\125\004\006\023\002\103\110\061\031\060\027\006\003\125\004\012 -\014\020\117\111\123\124\105\040\106\157\165\156\144\141\164\151 -\157\156\061\041\060\037\006\003\125\004\003\014\030\117\111\123 -\124\105\040\123\145\162\166\145\162\040\122\157\157\164\040\105 -\103\103\040\107\061\060\166\060\020\006\007\052\206\110\316\075 -\002\001\006\005\053\201\004\000\042\003\142\000\004\027\057\372 -\022\274\254\030\363\012\364\104\326\166\102\236\263\350\037\267 -\171\251\130\266\370\145\321\072\041\117\250\353\243\276\244\062 -\162\363\266\001\311\053\375\167\205\156\123\335\255\352\252\056 -\045\222\266\351\041\021\250\257\265\114\013\363\226\140\232\073 -\347\352\032\170\056\264\075\345\050\336\034\200\272\134\156\015 -\333\031\245\343\077\234\052\270\100\113\335\346\117\243\143\060 -\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 -\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024\067 -\115\210\145\317\374\075\212\325\243\361\111\300\116\014\020\157 -\102\264\234\060\035\006\003\125\035\016\004\026\004\024\067\115 -\210\145\317\374\075\212\325\243\361\111\300\116\014\020\157\102 -\264\234\060\016\006\003\125\035\017\001\001\377\004\004\003\002 -\001\206\060\012\006\010\052\206\110\316\075\004\003\003\003\151 -\000\060\146\002\061\000\251\052\060\035\320\302\237\220\121\121 -\100\076\225\124\041\315\026\146\367\123\154\010\026\071\320\022 -\174\177\143\033\337\343\070\000\071\331\055\123\040\105\013\034 -\140\147\061\103\045\355\002\061\000\222\211\256\351\134\142\203 -\142\141\371\055\127\253\126\271\021\335\045\276\152\116\112\032 -\202\153\334\317\323\274\112\263\074\327\056\233\333\370\050\151 -\274\153\055\354\061\241\072\343\127 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "OISTE Server Root ECC G1" -# Issuer: CN=OISTE Server Root ECC G1,O=OISTE Foundation,C=CH -# Serial Number:23:f9:c3:d6:35:af:8f:28:4b:1f:f0:54:ea:7e:97:9d -# Subject: CN=OISTE Server Root ECC G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:42:28 2023 -# Not Valid After : Sun May 24 14:42:27 2048 -# Fingerprint (SHA-256): EE:C9:97:C0:C3:0F:21:6F:7E:3B:8B:30:7D:2B:AE:42:41:2D:75:3F:C8:21:9D:AF:D1:52:0B:25:72:85:0F:49 -# Fingerprint (SHA1): 3B:F6:8B:09:AE:2A:92:7B:BA:E3:8D:3F:11:95:D9:E6:44:0C:45:E2 -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Server Root ECC G1" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\073\366\213\011\256\052\222\173\272\343\215\077\021\225\331\346 -\104\014\105\342 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\102\247\322\065\256\002\222\333\031\166\010\336\057\005\264\324 -END -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\123\145\162\166\145 -\162\040\122\157\157\164\040\105\103\103\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\043\371\303\326\065\257\217\050\113\037\360\124\352\176 -\227\235 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "OISTE Server Root RSA G1" -# -# Issuer: CN=OISTE Server Root RSA G1,O=OISTE Foundation,C=CH -# Serial Number:55:a5:d9:67:94:28:c6:ed:0c:fa:27:dd:5b:01:4d:18 -# Subject: CN=OISTE Server Root RSA G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:37:16 2023 -# Not Valid After : Sun May 24 14:37:15 2048 -# Fingerprint (SHA-256): 9A:E3:62:32:A5:18:9F:FD:DB:35:3D:FD:26:52:0C:01:53:95:D2:27:77:DA:C5:9D:B5:7B:98:C0:89:A6:51:E6 -# Fingerprint (SHA1): F7:00:34:25:94:88:68:31:E4:34:87:3F:70:FE:86:B3:86:9F:F0:6E -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Server Root RSA G1" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\123\145\162\166\145 -\162\040\122\157\157\164\040\122\123\101\040\107\061 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\123\145\162\166\145 -\162\040\122\157\157\164\040\122\123\101\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\125\245\331\147\224\050\306\355\014\372\047\335\133\001 -\115\030 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\005\203\060\202\003\153\240\003\002\001\002\002\020\125 -\245\331\147\224\050\306\355\014\372\047\335\133\001\115\030\060 -\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\113 -\061\013\060\011\006\003\125\004\006\023\002\103\110\061\031\060 -\027\006\003\125\004\012\014\020\117\111\123\124\105\040\106\157 -\165\156\144\141\164\151\157\156\061\041\060\037\006\003\125\004 -\003\014\030\117\111\123\124\105\040\123\145\162\166\145\162\040 -\122\157\157\164\040\122\123\101\040\107\061\060\036\027\015\062 -\063\060\065\063\061\061\064\063\067\061\066\132\027\015\064\070 -\060\065\062\064\061\064\063\067\061\065\132\060\113\061\013\060 -\011\006\003\125\004\006\023\002\103\110\061\031\060\027\006\003 -\125\004\012\014\020\117\111\123\124\105\040\106\157\165\156\144 -\141\164\151\157\156\061\041\060\037\006\003\125\004\003\014\030 -\117\111\123\124\105\040\123\145\162\166\145\162\040\122\157\157 -\164\040\122\123\101\040\107\061\060\202\002\042\060\015\006\011 -\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 -\060\202\002\012\002\202\002\001\000\252\256\364\253\202\317\373 -\345\067\013\347\325\226\255\220\350\113\051\334\125\140\343\314 -\274\263\274\055\222\271\344\243\172\361\201\264\236\162\162\103 -\337\077\253\013\046\264\356\173\032\151\373\050\320\162\134\112 -\155\151\231\360\143\036\014\322\261\377\326\214\064\320\356\333 -\254\110\271\352\260\024\216\330\007\251\044\230\335\351\011\276 -\250\042\033\131\071\321\047\207\334\034\315\370\373\263\353\351 -\223\170\355\017\316\067\174\046\167\156\241\330\054\041\114\344 -\212\117\307\023\074\156\307\325\023\227\262\250\333\044\151\203 -\126\323\151\313\202\022\273\235\033\362\370\064\362\230\053\052 -\216\004\147\366\343\207\241\035\255\156\316\066\164\016\136\063 -\073\313\333\121\227\224\152\225\074\316\030\132\156\113\306\374 -\007\217\056\032\271\112\367\144\064\051\334\246\215\120\341\215 -\213\113\345\110\033\156\056\200\020\077\344\237\033\145\077\021 -\264\352\127\151\237\264\000\353\205\044\231\044\365\041\235\227 -\252\373\064\177\002\153\025\220\255\273\236\132\031\177\244\214 -\330\372\155\050\374\070\307\343\114\255\152\316\331\116\223\222 -\216\314\014\147\277\013\113\226\316\146\147\123\150\313\027\021 -\216\131\367\254\234\033\271\216\150\104\267\030\257\346\345\017 -\145\334\225\011\260\223\022\265\037\076\224\245\307\210\165\041 -\261\336\011\044\052\114\342\274\354\114\147\107\302\051\210\271 -\012\272\371\301\164\316\214\030\046\145\332\367\157\306\214\173 -\150\134\013\356\143\300\136\113\361\116\314\237\057\017\341\350 -\232\172\223\361\340\310\333\277\047\346\145\051\173\066\340\063 -\025\163\362\235\153\204\010\150\053\066\007\053\047\314\170\330 -\152\207\016\107\164\364\252\240\023\135\144\176\364\333\024\256 -\373\072\344\057\301\145\343\271\172\100\154\360\006\267\173\050 -\233\327\341\137\070\163\224\254\331\160\223\055\334\204\257\106 -\034\242\172\054\077\201\046\102\347\324\330\305\154\204\146\021 -\213\167\153\124\034\243\265\330\020\360\256\051\367\147\010\210 -\027\134\270\227\171\317\352\053\052\356\130\063\345\155\351\051 -\252\145\001\015\202\023\354\045\013\135\054\100\162\025\051\323 -\220\054\367\032\103\325\152\360\151\002\003\001\000\001\243\143 -\060\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003 -\001\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024 -\362\311\301\017\015\143\000\273\354\105\016\112\037\265\261\263 -\066\315\016\215\060\035\006\003\125\035\016\004\026\004\024\362 -\311\301\017\015\143\000\273\354\105\016\112\037\265\261\263\066 -\315\016\215\060\016\006\003\125\035\017\001\001\377\004\004\003 -\002\001\206\060\015\006\011\052\206\110\206\367\015\001\001\014 -\005\000\003\202\002\001\000\064\147\171\262\072\306\345\075\367 -\043\162\271\011\357\222\255\047\037\240\116\012\262\365\332\027 -\014\242\205\322\176\222\121\375\025\145\327\134\153\144\026\356 -\212\105\312\014\103\066\104\065\331\177\376\171\072\034\350\306 -\344\075\153\167\324\041\020\343\366\363\040\116\251\276\211\363 -\034\234\251\337\274\060\072\027\321\062\103\320\252\212\162\034 -\121\050\114\335\066\310\344\055\147\175\221\207\034\235\274\374 -\253\050\226\136\141\134\270\042\063\030\110\026\120\352\312\057 -\351\245\111\334\177\074\244\031\274\066\255\222\342\271\364\113 -\325\353\010\255\347\170\376\027\300\135\207\167\350\147\167\117 -\000\146\257\364\261\003\072\276\022\174\101\065\345\364\246\033 -\107\213\313\171\367\326\277\027\156\116\145\360\370\332\127\301 -\224\201\345\172\126\015\273\106\177\157\221\375\175\346\027\344 -\201\047\273\005\210\126\335\040\245\367\230\055\221\031\151\061 -\137\233\060\362\231\255\162\100\226\314\330\167\146\233\264\325 -\016\262\020\376\024\252\303\200\161\235\075\215\350\175\024\154 -\141\144\206\106\246\327\124\305\266\327\220\026\106\245\205\312 -\236\072\343\346\023\026\266\025\043\314\251\051\122\375\000\306 -\366\220\216\126\217\211\010\335\226\252\346\323\152\251\206\065 -\366\325\105\170\102\112\106\374\003\310\136\330\146\366\105\145 -\044\264\276\207\173\125\040\235\367\235\265\052\374\271\142\031 -\313\154\073\257\323\155\070\154\253\173\246\036\215\374\351\236 -\376\153\025\271\333\202\232\313\230\337\163\241\220\240\240\305 -\340\350\001\250\243\024\234\310\301\232\254\025\120\063\215\355 -\174\052\213\163\225\100\103\046\374\201\244\052\137\071\220\267 -\047\313\121\167\370\226\223\036\317\362\167\175\037\106\223\242 -\131\036\225\104\305\055\165\144\260\326\371\340\074\151\352\004 -\265\034\013\342\106\104\115\103\073\227\111\161\021\275\044\266 -\302\255\162\124\006\376\153\030\371\167\333\051\054\122\236\155 -\167\173\142\375\017\115\216\230\062\060\060\161\022\326\045\065 -\343\237\370\157\234\265\353\152\033\255\352\020\323\226\026\162 -\006\041\045\306\114\274\217\160\273\014\344\136\042\203\055\322 -\276\376\205\133\264\344\275 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "OISTE Server Root RSA G1" -# Issuer: CN=OISTE Server Root RSA G1,O=OISTE Foundation,C=CH -# Serial Number:55:a5:d9:67:94:28:c6:ed:0c:fa:27:dd:5b:01:4d:18 -# Subject: CN=OISTE Server Root RSA G1,O=OISTE Foundation,C=CH -# Not Valid Before: Wed May 31 14:37:16 2023 -# Not Valid After : Sun May 24 14:37:15 2048 -# Fingerprint (SHA-256): 9A:E3:62:32:A5:18:9F:FD:DB:35:3D:FD:26:52:0C:01:53:95:D2:27:77:DA:C5:9D:B5:7B:98:C0:89:A6:51:E6 -# Fingerprint (SHA1): F7:00:34:25:94:88:68:31:E4:34:87:3F:70:FE:86:B3:86:9F:F0:6E -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "OISTE Server Root RSA G1" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\367\000\064\045\224\210\150\061\344\064\207\077\160\376\206\263 -\206\237\360\156 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\043\247\236\324\160\270\271\024\127\101\212\176\104\131\342\150 -END -CKA_ISSUER MULTILINE_OCTAL -\060\113\061\013\060\011\006\003\125\004\006\023\002\103\110\061 -\031\060\027\006\003\125\004\012\014\020\117\111\123\124\105\040 -\106\157\165\156\144\141\164\151\157\156\061\041\060\037\006\003 -\125\004\003\014\030\117\111\123\124\105\040\123\145\162\166\145 -\162\040\122\157\157\164\040\122\123\101\040\107\061 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\020\125\245\331\147\224\050\306\355\014\372\047\335\133\001 -\115\030 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE - -# -# Certificate "e-Szigno TLS Root CA 2023" -# -# Issuer: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU -# Serial Number:00:e8:6f:18:7b:d6:39:6b:98:4a:49:98:0a -# Subject: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU -# Not Valid Before: Mon Jul 17 14:00:00 2023 -# Not Valid After : Sat Jul 17 14:00:00 2038 -# Fingerprint (SHA-256): B4:91:41:50:2D:00:66:3D:74:0F:2E:7E:C3:40:C5:28:00:96:26:66:12:1A:36:D0:9C:F7:DD:2B:90:38:4F:B4 -# Fingerprint (SHA1): 6F:9A:D5:D5:DF:E8:2C:EB:BE:37:07:EE:4F:4F:52:58:29:41:D1:FE -CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "e-Szigno TLS Root CA 2023" -CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 -CKA_SUBJECT MULTILINE_OCTAL -\060\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061 -\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145 -\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143 -\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003 -\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064 -\064\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055 -\123\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040 -\103\101\040\062\060\062\063 -END -CKA_ID UTF8 "0" -CKA_ISSUER MULTILINE_OCTAL -\060\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061 -\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145 -\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143 -\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003 -\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064 -\064\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055 -\123\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040 -\103\101\040\062\060\062\063 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\015\000\350\157\030\173\326\071\153\230\112\111\230\012 -END -CKA_VALUE MULTILINE_OCTAL -\060\202\002\317\060\202\002\061\240\003\002\001\002\002\015\000 -\350\157\030\173\326\071\153\230\112\111\230\012\060\012\006\010 -\052\206\110\316\075\004\003\004\060\165\061\013\060\011\006\003 -\125\004\006\023\002\110\125\061\021\060\017\006\003\125\004\007 -\014\010\102\165\144\141\160\145\163\164\061\026\060\024\006\003 -\125\004\012\014\015\115\151\143\162\157\163\145\143\040\114\164 -\144\056\061\027\060\025\006\003\125\004\141\014\016\126\101\124 -\110\125\055\062\063\065\070\064\064\071\067\061\042\060\040\006 -\003\125\004\003\014\031\145\055\123\172\151\147\156\157\040\124 -\114\123\040\122\157\157\164\040\103\101\040\062\060\062\063\060 -\036\027\015\062\063\060\067\061\067\061\064\060\060\060\060\132 -\027\015\063\070\060\067\061\067\061\064\060\060\060\060\132\060 -\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061\021 -\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145\163 -\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143\162 -\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003\125 -\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064\064 -\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055\123 -\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040\103 -\101\040\062\060\062\063\060\201\233\060\020\006\007\052\206\110 -\316\075\002\001\006\005\053\201\004\000\043\003\201\206\000\004 -\000\150\017\337\242\174\074\252\164\210\141\012\215\302\114\245 -\001\042\024\324\367\140\167\102\234\012\070\140\241\214\147\076 -\263\143\351\372\221\260\213\113\346\071\337\002\302\060\001\122 -\000\277\337\214\355\131\255\062\145\253\011\131\120\265\031\302 -\150\034\000\340\005\137\332\120\046\034\303\254\004\042\305\072 -\115\357\351\127\130\066\243\301\031\123\020\012\321\315\077\357 -\113\065\032\103\217\102\023\114\271\054\032\234\276\060\266\304 -\336\334\113\235\344\244\074\313\056\331\255\337\337\175\011\337 -\056\222\377\241\243\143\060\141\060\017\006\003\125\035\023\001 -\001\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017 -\001\001\377\004\004\003\002\001\006\060\035\006\003\125\035\016 -\004\026\004\024\131\204\002\142\132\106\170\365\135\334\217\012 -\020\050\043\334\325\326\373\105\060\037\006\003\125\035\043\004 -\030\060\026\200\024\131\204\002\142\132\106\170\365\135\334\217 -\012\020\050\043\334\325\326\373\105\060\012\006\010\052\206\110 -\316\075\004\003\004\003\201\213\000\060\201\207\002\102\001\055 -\332\256\365\056\170\266\146\270\237\266\160\177\146\164\317\354 -\216\174\376\300\001\171\232\316\122\002\347\303\321\014\172\155 -\313\265\136\356\027\244\233\333\004\166\356\051\051\350\257\373 -\255\254\122\364\327\053\326\167\204\020\275\305\322\050\150\064 -\002\101\065\166\132\165\363\222\206\010\365\262\036\012\366\145 -\013\332\166\307\122\377\013\036\200\160\042\060\303\063\333\030 -\355\204\327\213\354\355\323\250\143\201\265\126\174\107\307\126 -\060\224\150\163\153\322\056\251\271\331\054\034\051\275\014\272 -\271\145\213 -END -CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE -CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE -CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE - -# Trust for "e-Szigno TLS Root CA 2023" -# Issuer: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU -# Serial Number:00:e8:6f:18:7b:d6:39:6b:98:4a:49:98:0a -# Subject: CN=e-Szigno TLS Root CA 2023,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU -# Not Valid Before: Mon Jul 17 14:00:00 2023 -# Not Valid After : Sat Jul 17 14:00:00 2038 -# Fingerprint (SHA-256): B4:91:41:50:2D:00:66:3D:74:0F:2E:7E:C3:40:C5:28:00:96:26:66:12:1A:36:D0:9C:F7:DD:2B:90:38:4F:B4 -# Fingerprint (SHA1): 6F:9A:D5:D5:DF:E8:2C:EB:BE:37:07:EE:4F:4F:52:58:29:41:D1:FE -CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST -CKA_TOKEN CK_BBOOL CK_TRUE -CKA_PRIVATE CK_BBOOL CK_FALSE -CKA_MODIFIABLE CK_BBOOL CK_FALSE -CKA_LABEL UTF8 "e-Szigno TLS Root CA 2023" -CKA_CERT_SHA1_HASH MULTILINE_OCTAL -\157\232\325\325\337\350\054\353\276\067\007\356\117\117\122\130 -\051\101\321\376 -END -CKA_CERT_MD5_HASH MULTILINE_OCTAL -\152\351\231\164\245\332\136\361\331\056\362\310\321\206\213\161 -END -CKA_ISSUER MULTILINE_OCTAL -\060\165\061\013\060\011\006\003\125\004\006\023\002\110\125\061 -\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145 -\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143 -\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003 -\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064 -\064\071\067\061\042\060\040\006\003\125\004\003\014\031\145\055 -\123\172\151\147\156\157\040\124\114\123\040\122\157\157\164\040 -\103\101\040\062\060\062\063 -END -CKA_SERIAL_NUMBER MULTILINE_OCTAL -\002\015\000\350\157\030\173\326\071\153\230\112\111\230\012 -END -CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR -CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST -CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE diff --git a/icecat/security/nss/lib/ckfw/builtins/nssckbi.h b/icecat/security/nss/lib/ckfw/builtins/nssckbi.h index e75ccf4ccf..fdaf066a02 100644 --- a/icecat/security/nss/lib/ckfw/builtins/nssckbi.h +++ b/icecat/security/nss/lib/ckfw/builtins/nssckbi.h @@ -46,8 +46,8 @@ * It's recommend to switch back to 0 after having reached version 98/99. */ #define NSS_BUILTINS_LIBRARY_VERSION_MAJOR 2 -#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 84 -#define NSS_BUILTINS_LIBRARY_VERSION "2.84" +#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 76 +#define NSS_BUILTINS_LIBRARY_VERSION "2.76" /* These version numbers detail the semantic changes to the ckfw engine. */ #define NSS_BUILTINS_HARDWARE_VERSION_MAJOR 1 diff --git a/icecat/security/nss/lib/cryptohi/dsautil.c b/icecat/security/nss/lib/cryptohi/dsautil.c index 7b4c0a8517..08ff1111bb 100644 --- a/icecat/security/nss/lib/cryptohi/dsautil.c +++ b/icecat/security/nss/lib/cryptohi/dsautil.c @@ -72,18 +72,19 @@ DSAU_ConvertSignedToFixedUnsigned(SECItem *dest, SECItem *src) unsigned char *pDst = dest->data; unsigned int cntSrc = src->len; unsigned int cntDst = dest->len; + int zCount = cntDst - cntSrc; - if (cntSrc <= cntDst) { - unsigned int zCount = cntDst - cntSrc; + if (zCount > 0) { PORT_Memset(pDst, 0, zCount); PORT_Memcpy(pDst + zCount, pSrc, cntSrc); return SECSuccess; } - /* Source is longer than destination: extra leading bytes must be zero. */ - unsigned int extra = cntSrc - cntDst; - while (extra--) { - if (*pSrc++ != 0) - goto loser; + if (zCount <= 0) { + /* Source is longer than destination. Check for leading zeros. */ + while (zCount++ < 0) { + if (*pSrc++ != 0) + goto loser; + } } PORT_Memcpy(pDst, pSrc, cntDst); return SECSuccess; @@ -189,12 +190,6 @@ common_DecodeDerSig(const SECItem *item, unsigned int len) if (status != SECSuccess) goto loser; - /* A valid DER INTEGER for r or s is at most len+1 bytes (len bytes of - ** magnitude plus at most one leading zero sign byte). Reject anything - ** larger before attempting the conversion to avoid pathological inputs. */ - if (sig.r.len > len + 1 || sig.s.len > len + 1) - goto loser; - /* Convert sig.r and sig.s from variable length signed integers to ** fixed length unsigned integers. */ diff --git a/icecat/security/nss/lib/freebl/blapii.h b/icecat/security/nss/lib/freebl/blapii.h index 53282c6643..f54a740ef8 100644 --- a/icecat/security/nss/lib/freebl/blapii.h +++ b/icecat/security/nss/lib/freebl/blapii.h @@ -88,7 +88,6 @@ RSA_EMSAEncodePSS(unsigned char *em, unsigned int emLen, unsigned int emBits, const unsigned char *mHash, - unsigned int mHashLen, HASH_HashType hashAlg, HASH_HashType maskHashAlg, const unsigned char *salt, diff --git a/icecat/security/nss/lib/freebl/gcm.c b/icecat/security/nss/lib/freebl/gcm.c index 0d558d499e..a2f63a6a8f 100644 --- a/icecat/security/nss/lib/freebl/gcm.c +++ b/icecat/security/nss/lib/freebl/gcm.c @@ -357,7 +357,7 @@ gcmHash_Update(gcmHashContext *ghash, const unsigned char *buf, unsigned int blocks; SECStatus rv; - ghash->cLen += ((uint64_t)len * PR_BITS_PER_BYTE); + ghash->cLen += (len * PR_BITS_PER_BYTE); /* first deal with the current buffer of data. Try to fill it out so * we can hash it */ diff --git a/icecat/security/nss/lib/freebl/rsa_blind.c b/icecat/security/nss/lib/freebl/rsa_blind.c index e8518c2753..daa869e7ed 100644 --- a/icecat/security/nss/lib/freebl/rsa_blind.c +++ b/icecat/security/nss/lib/freebl/rsa_blind.c @@ -200,8 +200,7 @@ RSABlinding_Blind(HASH_HashType hashAlg, PRUint8* blindedMsg, size_t blindedMsgL goto cleanup; } - rv = RSA_EMSAEncodePSS(encoded_msg, pkS->modulus.len, bit_len_n, msgHash, - sizeof(msgHash), hashAlg, hashAlg, salt, saltLen); + rv = RSA_EMSAEncodePSS(encoded_msg, pkS->modulus.len, bit_len_n, msgHash, hashAlg, hashAlg, salt, saltLen); /* 2. If EMSA-PSS-ENCODE raises an error, raise the error and stop. */ if (rv != SECSuccess) { diff --git a/icecat/security/nss/lib/freebl/rsapkcs.c b/icecat/security/nss/lib/freebl/rsapkcs.c index a8d9ebae18..7f7186489a 100644 --- a/icecat/security/nss/lib/freebl/rsapkcs.c +++ b/icecat/security/nss/lib/freebl/rsapkcs.c @@ -1239,7 +1239,6 @@ RSA_EMSAEncodePSS(unsigned char *em, unsigned int emLen, unsigned int emBits, const unsigned char *mHash, - unsigned int mHashLen, HASH_HashType hashAlg, HASH_HashType maskHashAlg, const unsigned char *salt, @@ -1253,22 +1252,14 @@ RSA_EMSAEncodePSS(unsigned char *em, SECStatus rv; hash = HASH_GetRawHashObject(hashAlg); - PORT_Assert(hash); - - if (mHashLen < hash->length) { - PORT_SetError(SEC_ERROR_INVALID_ARGS); - return SECFailure; - } + dbMaskLen = emLen - hash->length - 1; /* Step 3 */ - if ((saltLen > emLen) || - (hash->length + 2 > emLen - saltLen)) { + if (emLen < hash->length + saltLen + 2) { PORT_SetError(SEC_ERROR_OUTPUT_LEN); return SECFailure; } - dbMaskLen = emLen - hash->length - 1; - /* Step 4 */ if (salt == NULL) { rv = RNG_GenerateGlobalRandomBytes(&em[dbMaskLen - saltLen], saltLen); @@ -1345,17 +1336,15 @@ emsa_pss_verify(const unsigned char *mHash, SECStatus rv; hash = HASH_GetRawHashObject(hashAlg); + dbMaskLen = emLen - hash->length - 1; /* Step 3 + 4 */ - if ((saltLen > emLen) || - (hash->length + 2 > emLen - saltLen) || + if ((emLen < (hash->length + saltLen + 2)) || (em[emLen - 1] != 0xbc)) { PORT_SetError(SEC_ERROR_BAD_SIGNATURE); return SECFailure; } - dbMaskLen = emLen - hash->length - 1; - /* Step 6 */ zeroBits = 8 * emLen - emBits; if (em[0] >> (8 - zeroBits)) { @@ -1469,7 +1458,7 @@ RSA_SignPSS(RSAPrivateKey *key, emLen--; em++; } - rv = RSA_EMSAEncodePSS(em, emLen, modulusBits - 1, input, inputLen, hashAlg, + rv = RSA_EMSAEncodePSS(em, emLen, modulusBits - 1, input, hashAlg, maskHashAlg, salt, saltLength); if (rv != SECSuccess) goto done; diff --git a/icecat/security/nss/lib/mozpkix/lib/pkixnames.cpp b/icecat/security/nss/lib/mozpkix/lib/pkixnames.cpp index 3cd56a1f76..8204afc747 100644 --- a/icecat/security/nss/lib/mozpkix/lib/pkixnames.cpp +++ b/icecat/security/nss/lib/mozpkix/lib/pkixnames.cpp @@ -172,12 +172,6 @@ enum class IDRole NameConstraint = 2, }; -enum class NameConstraintsSubtrees : uint8_t -{ - permittedSubtrees = der::CONSTRUCTED | der::CONTEXT_SPECIFIC | 0, - excludedSubtrees = der::CONSTRUCTED | der::CONTEXT_SPECIFIC | 1 -}; - enum class AllowWildcards { No = 0, Yes = 1 }; // DNSName constraints implicitly allow subdomain matching when there is no @@ -190,22 +184,16 @@ enum class AllowDotlessSubdomainMatches { No = 0, Yes = 1 }; bool IsValidDNSID(Input hostname, IDRole idRole, AllowWildcards allowWildcards); -// `subtreesType` is relevant only when `referenceDNSIDRole` is -// `IDRole::NameConstraint`. Result MatchPresentedDNSIDWithReferenceDNSID( Input presentedDNSID, AllowWildcards allowWildcards, AllowDotlessSubdomainMatches allowDotlessSubdomainMatches, IDRole referenceDNSIDRole, - /*optional*/ const NameConstraintsSubtrees* subtreesType, Input referenceDNSID, /*out*/ bool& matches); -// `subtreesType` is relevant only when `referenceDNSIDRole` is -// `IDRole::NameConstraint`. Result MatchPresentedRFC822NameWithReferenceRFC822Name( Input presentedRFC822Name, IDRole referenceRFC822NameRole, - /*optional*/ const NameConstraintsSubtrees* subtreesType, Input referenceRFC822Name, /*out*/ bool& matches); } // namespace @@ -224,7 +212,7 @@ MatchPresentedDNSIDWithReferenceDNSID(Input presentedDNSID, return MatchPresentedDNSIDWithReferenceDNSID( presentedDNSID, AllowWildcards::Yes, AllowDotlessSubdomainMatches::Yes, IDRole::ReferenceID, - nullptr, referenceDNSID, matches); + referenceDNSID, matches); } // Verify that the given end-entity cert, which is assumed to have been already @@ -743,7 +731,7 @@ MatchPresentedIDWithReferenceID(GeneralNameType presentedIDType, rv = MatchPresentedDNSIDWithReferenceDNSID( presentedID, AllowWildcards::Yes, AllowDotlessSubdomainMatches::Yes, IDRole::ReferenceID, - nullptr, referenceID, foundMatch); + referenceID, foundMatch); break; case GeneralNameType::iPAddress: @@ -753,7 +741,7 @@ MatchPresentedIDWithReferenceID(GeneralNameType presentedIDType, case GeneralNameType::rfc822Name: rv = MatchPresentedRFC822NameWithReferenceRFC822Name( - presentedID, IDRole::ReferenceID, nullptr, referenceID, foundMatch); + presentedID, IDRole::ReferenceID, referenceID, foundMatch); break; case GeneralNameType::directoryName: @@ -779,16 +767,20 @@ MatchPresentedIDWithReferenceID(GeneralNameType presentedIDType, return Success; } +enum class NameConstraintsSubtrees : uint8_t +{ + permittedSubtrees = der::CONSTRUCTED | der::CONTEXT_SPECIFIC | 0, + excludedSubtrees = der::CONSTRUCTED | der::CONTEXT_SPECIFIC | 1 +}; + Result CheckPresentedIDConformsToNameConstraintsSubtrees( GeneralNameType presentedIDType, Input presentedID, Reader& nameConstraints, NameConstraintsSubtrees subtreesType); - Result MatchPresentedIPAddressWithConstraint(Input presentedID, Input iPAddressConstraint, /*out*/ bool& foundMatch); - Result MatchPresentedDirectoryNameWithConstraint( NameConstraintsSubtrees subtreesType, Input presentedID, Input directoryNameConstraint, /*out*/ bool& matches); @@ -894,7 +886,7 @@ CheckPresentedIDConformsToNameConstraintsSubtrees( rv = MatchPresentedDNSIDWithReferenceDNSID( presentedID, AllowWildcards::Yes, AllowDotlessSubdomainMatches::Yes, IDRole::NameConstraint, - &subtreesType, base, matches); + base, matches); if (rv != Success) { return rv; } @@ -919,7 +911,7 @@ CheckPresentedIDConformsToNameConstraintsSubtrees( case GeneralNameType::rfc822Name: rv = MatchPresentedRFC822NameWithReferenceRFC822Name( - presentedID, IDRole::NameConstraint, &subtreesType, base, matches); + presentedID, IDRole::NameConstraint, base, matches); if (rv != Success) { return rv; } @@ -1102,7 +1094,6 @@ MatchPresentedDNSIDWithReferenceDNSID( AllowWildcards allowWildcards, AllowDotlessSubdomainMatches allowDotlessSubdomainMatches, IDRole referenceDNSIDRole, - /*optional*/ const NameConstraintsSubtrees* subtreesType, Input referenceDNSID, /*out*/ bool& matches) { @@ -1193,28 +1184,18 @@ MatchPresentedDNSIDWithReferenceDNSID( return NotReached("Skipping '*' failed", Result::FATAL_ERROR_LIBRARY_FAILURE); } - // For the permittedSubtrees of a name constraint, wildcard presented - // DNSIDs of the form `*.example.com` only match if the name constraint is - // of the form `.example.com` or `example.com`. To put it another way, a - // permittedSubtrees of `foo.example.com` does not match a wildcard - // presented DNSID of `*.example.com`, because in that case, the - // certificate could be valid for `bar.example.com`, which does not match - // the name constraint. - if (referenceDNSIDRole != IDRole::NameConstraint || - (subtreesType && *subtreesType != NameConstraintsSubtrees::permittedSubtrees)) { - do { - // This will happen if reference is a single, relative label - if (reference.AtEnd()) { - matches = false; - return Success; - } - uint8_t referenceByte; - if (reference.Read(referenceByte) != Success) { - return NotReached("invalid reference ID", - Result::FATAL_ERROR_INVALID_ARGS); - } - } while (!reference.Peek('.')); - } + do { + // This will happen if reference is a single, relative label + if (reference.AtEnd()) { + matches = false; + return Success; + } + uint8_t referenceByte; + if (reference.Read(referenceByte) != Success) { + return NotReached("invalid reference ID", + Result::FATAL_ERROR_INVALID_ARGS); + } + } while (!reference.Peek('.')); } for (;;) { @@ -1571,13 +1552,11 @@ IsValidRFC822Name(Input input) } } -// `subtreesType` is relevant only when `referenceRFC822NameRole` is -// `IDRole::NameConstraint`. Result -MatchPresentedRFC822NameWithReferenceRFC822Name( - Input presentedRFC822Name, IDRole referenceRFC822NameRole, - /*optional*/ const NameConstraintsSubtrees* subtreesType, - Input referenceRFC822Name, /*out*/ bool& matches) +MatchPresentedRFC822NameWithReferenceRFC822Name(Input presentedRFC822Name, + IDRole referenceRFC822NameRole, + Input referenceRFC822Name, + /*out*/ bool& matches) { if (!IsValidRFC822Name(presentedRFC822Name)) { return Result::ERROR_BAD_DER; @@ -1620,7 +1599,6 @@ MatchPresentedRFC822NameWithReferenceRFC822Name( return MatchPresentedDNSIDWithReferenceDNSID( presentedDNSID, AllowWildcards::No, AllowDotlessSubdomainMatches::No, IDRole::NameConstraint, - subtreesType, referenceRFC822Name, matches); } } diff --git a/icecat/security/nss/lib/nss/nss.h b/icecat/security/nss/lib/nss/nss.h index 6857d97601..377218f56c 100644 --- a/icecat/security/nss/lib/nss/nss.h +++ b/icecat/security/nss/lib/nss/nss.h @@ -22,10 +22,10 @@ * The format of the version string should be * ".[.[.]][ ][ ]" */ -#define NSS_VERSION "3.112.5" _NSS_CUSTOMIZED +#define NSS_VERSION "3.112.2" _NSS_CUSTOMIZED #define NSS_VMAJOR 3 #define NSS_VMINOR 112 -#define NSS_VPATCH 5 +#define NSS_VPATCH 2 #define NSS_VBUILD 0 #define NSS_BETA PR_FALSE diff --git a/icecat/security/nss/lib/pk11wrap/pk11pk12.c b/icecat/security/nss/lib/pk11wrap/pk11pk12.c index 0f06d9fd72..01b1cbbe70 100644 --- a/icecat/security/nss/lib/pk11wrap/pk11pk12.c +++ b/icecat/security/nss/lib/pk11wrap/pk11pk12.c @@ -733,15 +733,12 @@ PK11_ImportPrivateKeyInfoAndReturnKey(PK11SlotInfo *slot, rv = PK11_ImportAndReturnPrivateKey(slot, lpk, nickname, publicValue, isPerm, isPrivate, keyUsage, privk, wincx); - if (rv != SECSuccess) { - goto loser; - } - PORT_FreeArena(arena, PR_TRUE); - return SECSuccess; - loser: - PORT_FreeArena(arena, PR_TRUE); - return SECFailure; + if (arena != NULL) { + PORT_FreeArena(arena, PR_TRUE); + } + + return rv; } SECStatus diff --git a/icecat/security/nss/lib/pkcs7/p7decode.c b/icecat/security/nss/lib/pkcs7/p7decode.c index 90a53ec427..8498c5de72 100644 --- a/icecat/security/nss/lib/pkcs7/p7decode.c +++ b/icecat/security/nss/lib/pkcs7/p7decode.c @@ -230,8 +230,6 @@ sec_pkcs7_decoder_start_digests(SEC_PKCS7DecoderContext *p7dcx, int depth, { int i, digcnt; - p7dcx->worker.digcnt = 0; - if (digestalgs == NULL) return SECSuccess; @@ -259,6 +257,7 @@ sec_pkcs7_decoder_start_digests(SEC_PKCS7DecoderContext *p7dcx, int depth, } p7dcx->worker.depth = depth; + p7dcx->worker.digcnt = 0; /* * Create a digest context for each algorithm. @@ -278,6 +277,7 @@ sec_pkcs7_decoder_start_digests(SEC_PKCS7DecoderContext *p7dcx, int depth, * but we cannot know that until later. */ if (digobj == NULL) { + p7dcx->worker.digcnt--; continue; } @@ -306,19 +306,25 @@ sec_pkcs7_decoder_finish_digests(SEC_PKCS7DecoderContext *p7dcx, PLArenaPool *poolp, SECItem ***digestsp) { + struct sec_pkcs7_decoder_worker *worker; + const SECHashObject *digobj; + void *digcx; + SECItem **digests, *digest; + int i; + void *mark; + /* * XXX Handling nested contents would mean that there is a chain * of workers -- one per each level of content. The following * would want to find the last worker in the chain. */ - struct sec_pkcs7_decoder_worker *worker = &(p7dcx->worker); + worker = &(p7dcx->worker); /* * If no digests, then we have nothing to do. */ - if (worker->digcnt == 0) { + if (worker->digcnt == 0) return SECSuccess; - } /* * No matter what happens after this, we want to stop filtering. @@ -334,46 +340,46 @@ sec_pkcs7_decoder_finish_digests(SEC_PKCS7DecoderContext *p7dcx, * was digested. */ if (!worker->saw_contents) { - for (int i = 0; i < worker->digcnt; i++) { - void *digcx = worker->digcxs[i]; - const SECHashObject *digobj = worker->digobjs[i]; + for (i = 0; i < worker->digcnt; i++) { + digcx = worker->digcxs[i]; + digobj = worker->digobjs[i]; (*digobj->destroy)(digcx, PR_TRUE); } - worker->digcnt = 0; return SECSuccess; } - void *mark = PORT_ArenaMark(poolp); + mark = PORT_ArenaMark(poolp); /* * Close out each digest context, saving digest away. */ - SECItem **digests = - (SECItem **)PORT_ArenaZAlloc(poolp, (worker->digcnt + 1) * sizeof(SECItem *)); - if (digests == NULL) { + digests = + (SECItem **)PORT_ArenaAlloc(poolp, (worker->digcnt + 1) * sizeof(SECItem *)); + digest = (SECItem *)PORT_ArenaAlloc(poolp, worker->digcnt * sizeof(SECItem)); + if (digests == NULL || digest == NULL) { p7dcx->error = PORT_GetError(); PORT_ArenaRelease(poolp, mark); return SECFailure; } - for (int i = 0; i < worker->digcnt; i++) { - const SECHashObject *digobj = worker->digobjs[i]; - digests[i] = SECITEM_AllocItem(poolp, NULL, digobj->length); - if (!digests[i]) { + for (i = 0; i < worker->digcnt; i++, digest++) { + digcx = worker->digcxs[i]; + digobj = worker->digobjs[i]; + + digest->data = (unsigned char *)PORT_ArenaAlloc(poolp, digobj->length); + if (digest->data == NULL) { p7dcx->error = PORT_GetError(); PORT_ArenaRelease(poolp, mark); return SECFailure; } - } - for (int i = 0; i < worker->digcnt; i++) { - void *digcx = worker->digcxs[i]; - const SECHashObject *digobj = worker->digobjs[i]; - - (*digobj->end)(digcx, digests[i]->data, &(digests[i]->len), digests[i]->len); + digest->len = digobj->length; + (*digobj->end)(digcx, digest->data, &(digest->len), digest->len); (*digobj->destroy)(digcx, PR_TRUE); + + digests[i] = digest; } - worker->digcnt = 0; + digests[i] = NULL; *digestsp = digests; PORT_ArenaUnmark(poolp, mark); @@ -1078,13 +1084,6 @@ SEC_PKCS7DecoderFinish(SEC_PKCS7DecoderContext *p7dcx) if (p7dcx->worker.decryptobj) { sec_PKCS7DestroyDecryptObject(p7dcx->worker.decryptobj); } - for (int i = 0; i < p7dcx->worker.digcnt; i++) { - void *digcx = p7dcx->worker.digcxs[i]; - const SECHashObject *digobj = p7dcx->worker.digobjs[i]; - (*digobj->destroy)(digcx, PR_TRUE); - } - p7dcx->worker.digcnt = 0; - PORT_FreeArena(p7dcx->tmp_poolp, PR_FALSE); PORT_Free(p7dcx); return cinfo; diff --git a/icecat/security/nss/lib/pki/tdcache.c b/icecat/security/nss/lib/pki/tdcache.c index 1b4a9ba0e7..9aac9ceaca 100644 --- a/icecat/security/nss/lib/pki/tdcache.c +++ b/icecat/security/nss/lib/pki/tdcache.c @@ -91,7 +91,6 @@ struct cache_entry_str { PRTime lastHit; NSSArena *arena; NSSUTF8 *nickname; - NSSASCII7 *email; }; typedef struct cache_entry_str cache_entry; @@ -230,7 +229,6 @@ remove_subject_entry( NSSCertificate *cert, nssList **subjectList, NSSUTF8 **nickname, - NSSASCII7 **email, NSSArena **arena) { PRStatus nssrv; @@ -244,7 +242,6 @@ remove_subject_entry( nssList_Remove(ce->entry.list, cert); *subjectList = ce->entry.list; *nickname = ce->nickname; - *email = ce->email; *arena = ce->arena; nssrv = PR_SUCCESS; #ifdef DEBUG_CACHE @@ -279,34 +276,35 @@ remove_nickname_entry( static PRStatus remove_email_entry( nssTDCertificateCache *cache, - NSSASCII7 *email, + NSSCertificate *cert, nssList *subjectList) { PRStatus nssrv = PR_FAILURE; cache_entry *ce; - if (email) { - ce = (cache_entry *)nssHash_Lookup(cache->email, email); + /* Find the subject list in the email hash */ + if (cert->email) { + ce = (cache_entry *)nssHash_Lookup(cache->email, cert->email); if (ce) { nssList *subjects = ce->entry.list; /* Remove the subject list from the email hash */ if (subjects) { nssList_Remove(subjects, subjectList); #ifdef DEBUG_CACHE - PR_LOG(s_log, PR_LOG_DEBUG, - ("removed subject list for email %s", email)); + log_item_dump("removed subject list", &cert->subject); + PR_LOG(s_log, PR_LOG_DEBUG, ("for email %s", cert->email)); #endif if (nssList_Count(subjects) == 0) { /* No more subject lists for email, delete list and * remove hash entry */ (void)nssList_Destroy(subjects); - nssHash_Remove(cache->email, email); + nssHash_Remove(cache->email, cert->email); /* there are no entries left for this address, free space * used for email entries */ nssArena_Destroy(ce->arena); #ifdef DEBUG_CACHE - PR_LOG(s_log, PR_LOG_DEBUG, ("removed email %s", email)); + PR_LOG(s_log, PR_LOG_DEBUG, ("removed email %s", cert->email)); #endif } } @@ -325,7 +323,6 @@ nssTrustDomain_RemoveCertFromCacheLOCKED( cache_entry *ce; NSSArena *arena; NSSUTF8 *nickname = NULL; - NSSASCII7 *email = NULL; #ifdef DEBUG_CACHE log_cert_ref("attempt to remove cert", cert); @@ -342,10 +339,10 @@ nssTrustDomain_RemoveCertFromCacheLOCKED( } (void)remove_issuer_and_serial_entry(td->cache, cert); (void)remove_subject_entry(td->cache, cert, &subjectList, - &nickname, &email, &arena); + &nickname, &arena); if (nssList_Count(subjectList) == 0) { (void)remove_nickname_entry(td->cache, nickname, subjectList); - (void)remove_email_entry(td->cache, email, subjectList); + (void)remove_email_entry(td->cache, cert, subjectList); (void)nssList_Destroy(subjectList); nssHash_Remove(td->cache->subject, &cert->subject); /* there are no entries left for this subject, free the space used @@ -540,9 +537,6 @@ add_subject_entry( if (nickname) { ce->nickname = nssUTF8_Duplicate(nickname, arena); } - if (cert->email) { - ce->email = nssUTF8_Duplicate(cert->email, arena); - } nssList_SetSortFunction(list, nssCertificate_SubjectListSort); /* Add the cert entry to this list of subjects */ nssrv = nssList_AddUnique(list, cert); @@ -716,7 +710,6 @@ add_cert_to_cache( PRUint32 added = 0; cache_entry *ce; NSSCertificate *rvCert = NULL; - NSSASCII7 *email = NULL; NSSUTF8 *certNickname = nssCertificate_GetNickname(cert, NULL); /* Set cc->trust and cc->nssCertificate before taking td->cache->lock. @@ -824,13 +817,13 @@ loser: } if (added >= 2) { (void)remove_subject_entry(td->cache, cert, &subjectList, - &certNickname, &email, &arena); + &certNickname, &arena); } if (added == 3 || added == 5) { (void)remove_nickname_entry(td->cache, certNickname, subjectList); } if (added >= 4) { - (void)remove_email_entry(td->cache, email, subjectList); + (void)remove_email_entry(td->cache, cert, subjectList); } if (subjectList) { nssHash_Remove(td->cache->subject, &cert->subject); diff --git a/icecat/security/nss/lib/smime/cmsdecode.c b/icecat/security/nss/lib/smime/cmsdecode.c index a9d6cd0a48..2416ec9ee7 100644 --- a/icecat/security/nss/lib/smime/cmsdecode.c +++ b/icecat/security/nss/lib/smime/cmsdecode.c @@ -322,6 +322,7 @@ nss_cms_before_data(NSSCMSDecoderContext *p7dcx) loser: if (mark) PORT_ArenaRelease(poolp, mark); + PORT_Free(childp7dcx); p7dcx->childp7dcx = NULL; return SECFailure; } @@ -554,19 +555,8 @@ nss_cms_decoder_work_data(NSSCMSDecoderContext *p7dcx, SECItem *dataItem = &decoderData->data; offset = dataItem->len; - /* Reject if accumulated size would exceed unsigned int storage. */ - if (len > (unsigned long)(PR_UINT32_MAX - dataItem->len)) { - p7dcx->error = SEC_ERROR_INPUT_LEN; - goto loser; - } if (dataItem->len + len > decoderData->totalBufferSize) { - /* Use size_t to avoid truncating the 64-bit sum to int. - * Double to amortize repeated reallocations across chunks. */ - size_t needLen = (size_t)dataItem->len + len; - /* Only double if the result still fits in unsigned int. */ - if (needLen <= PR_UINT32_MAX / 2) { - needLen *= 2; - } + int needLen = (dataItem->len + len) * 2; dest = (unsigned char *) PORT_ArenaAlloc(p7dcx->cmsg->poolp, needLen); if (dest == NULL) { @@ -577,7 +567,7 @@ nss_cms_decoder_work_data(NSSCMSDecoderContext *p7dcx, if (dataItem->len) { PORT_Memcpy(dest, dataItem->data, dataItem->len); } - decoderData->totalBufferSize = (unsigned int)needLen; + decoderData->totalBufferSize = needLen; dataItem->data = dest; } diff --git a/icecat/security/nss/lib/smime/cmspubkey.c b/icecat/security/nss/lib/smime/cmspubkey.c index 72f5d7280f..5ff8306dc9 100644 --- a/icecat/security/nss/lib/smime/cmspubkey.c +++ b/icecat/security/nss/lib/smime/cmspubkey.c @@ -566,7 +566,6 @@ NSS_CMSUtil_DecryptSymKey_ECDH(SECKEYPrivateKey *privkey, SECItem *encKey, SECStatus rv; PORT_Memset(&keyWrapAlg, 0, sizeof(SECAlgorithmID)); - PORT_Memset(&originatorpublickey, 0, sizeof(SECKEYPublicKey)); PORT_Assert(bulkalgtag != SEC_OID_UNKNOWN); target = PK11_AlgtagToMechanism(bulkalgtag); diff --git a/icecat/security/nss/lib/softoken/softkver.h b/icecat/security/nss/lib/softoken/softkver.h index a102b221fd..5a147647b3 100644 --- a/icecat/security/nss/lib/softoken/softkver.h +++ b/icecat/security/nss/lib/softoken/softkver.h @@ -17,10 +17,10 @@ * The format of the version string should be * ".[.[.]][ ][ ]" */ -#define SOFTOKEN_VERSION "3.112.5" SOFTOKEN_ECC_STRING +#define SOFTOKEN_VERSION "3.112.2" SOFTOKEN_ECC_STRING #define SOFTOKEN_VMAJOR 3 #define SOFTOKEN_VMINOR 112 -#define SOFTOKEN_VPATCH 5 +#define SOFTOKEN_VPATCH 2 #define SOFTOKEN_VBUILD 0 #define SOFTOKEN_BETA PR_FALSE diff --git a/icecat/security/nss/lib/ssl/dtlscon.c b/icecat/security/nss/lib/ssl/dtlscon.c index 4a5c5f7310..e0b5e295e3 100644 --- a/icecat/security/nss/lib/ssl/dtlscon.c +++ b/icecat/security/nss/lib/ssl/dtlscon.c @@ -1101,7 +1101,7 @@ dtls_HandleHelloVerifyRequest(sslSocket *ss, PRUint8 *b, PRUint32 length) { int errCode = SSL_ERROR_RX_MALFORMED_HELLO_VERIFY_REQUEST; SECStatus rv; - SSL3ProtocolVersion version; + SSL3ProtocolVersion temp; SSL3AlertDescription desc = illegal_parameter; SSL_TRC(3, ("%d: SSL3[%d]: handle hello_verify_request handshake", @@ -1130,29 +1130,22 @@ dtls_HandleHelloVerifyRequest(sslSocket *ss, PRUint8 *b, PRUint32 length) * Therefore we do not do anything to enforce a match, just * read and check that this value is sane. */ - rv = ssl_ClientReadVersion(ss, &b, &length, &version); + rv = ssl_ClientReadVersion(ss, &b, &length, &temp); if (rv != SECSuccess) { goto loser; /* alert has been sent */ } - /* Read the cookie. */ - SECItem cookie; - rv = ssl3_ConsumeHandshakeVariable(ss, &cookie, 1, &b, &length); + /* Read the cookie. + * IMPORTANT: The value of ss->ssl3.hs.cookie is only valid while the + * HelloVerifyRequest message remains valid. */ + rv = ssl3_ConsumeHandshakeVariable(ss, &ss->ssl3.hs.cookie, 1, &b, &length); if (rv != SECSuccess) { goto loser; /* alert has been sent */ } - if (cookie.len > DTLS_COOKIE_BYTES) { + if (ss->ssl3.hs.cookie.len > DTLS_COOKIE_BYTES) { desc = decode_error; goto alert_loser; /* malformed. */ } - PORT_Assert(!ss->ssl3.hs.cookie.data && !ss->ssl3.hs.cookie.len); - SECITEM_FreeItem(&ss->ssl3.hs.cookie, PR_FALSE); - rv = SECITEM_CopyItem(NULL, &ss->ssl3.hs.cookie, &cookie); - if (rv != SECSuccess) { - goto loser; - } - - ss->ssl3.hs.dtlsReceivedHVR = PR_TRUE; ssl_GetXmitBufLock(ss); /*******************************/ @@ -1161,8 +1154,6 @@ dtls_HandleHelloVerifyRequest(sslSocket *ss, PRUint8 *b, PRUint32 length) ssl_ReleaseXmitBufLock(ss); /*******************************/ - SECITEM_FreeItem(&ss->ssl3.hs.cookie, PR_FALSE); - if (rv == SECSuccess) return rv; diff --git a/icecat/security/nss/lib/ssl/ssl3con.c b/icecat/security/nss/lib/ssl/ssl3con.c index eae27c0cac..65b8c6335f 100644 --- a/icecat/security/nss/lib/ssl/ssl3con.c +++ b/icecat/security/nss/lib/ssl/ssl3con.c @@ -7201,15 +7201,6 @@ ssl3_HandleServerHello(sslSocket *ss, PRUint8 *b, PRUint32 length) goto alert_loser; } - /* A server that sent HelloVerifyRequest is DTLS 1.2 or earlier; - * reject a subsequent TLS 1.3 ServerHello as illegal. */ - if (ss->ssl3.hs.dtlsReceivedHVR && - ss->version >= SSL_LIBRARY_VERSION_TLS_1_3) { - desc = illegal_parameter; - errCode = SSL_ERROR_RX_MALFORMED_SERVER_HELLO; - goto alert_loser; - } - /* There are three situations in which the server must pick * TLS 1.3. * @@ -13926,8 +13917,6 @@ ssl3_InitState(sslSocket *ss) sizeof(ss->ssl3.hs.newSessionTicket)); ss->ssl3.hs.zeroRttState = ssl_0rtt_none; - - ss->ssl3.hs.dtlsReceivedHVR = PR_FALSE; return SECSuccess; } @@ -14277,7 +14266,6 @@ ssl3_DestroySSL3Info(sslSocket *ss) SECITEM_FreeItem(&ss->ssl3.hs.newSessionTicket.ticket, PR_FALSE); SECITEM_FreeItem(&ss->ssl3.hs.srvVirtName, PR_FALSE); SECITEM_FreeItem(&ss->ssl3.hs.fakeSid, PR_FALSE); - SECITEM_FreeItem(&ss->ssl3.hs.cookie, PR_FALSE); /* Destroy the DTLS data */ if (IS_DTLS(ss)) { diff --git a/icecat/security/nss/lib/ssl/ssl3ext.c b/icecat/security/nss/lib/ssl/ssl3ext.c index ee35196996..30b6289da7 100644 --- a/icecat/security/nss/lib/ssl/ssl3ext.c +++ b/icecat/security/nss/lib/ssl/ssl3ext.c @@ -336,26 +336,6 @@ ssl3_ExtensionAdvertised(const sslSocket *ss, PRUint16 ex_type) xtnData->numAdvertised, ex_type); } -void -ssl3_RecordExtensionNegotiated(const sslSocket *ss, TLSExtensionData *xtnData, - PRUint16 ex_type) -{ - /* Record that an extension was negotiated during a full TLS handshake. - * This function must NOT be used to track extensions carried in - * post-handshake messages (e.g. CertificateRequest during PHA); - * their negotiation state should instead be stored in dedicated fields on - * TLSExtensionData or sslSocket (e.g. xtnData->compressionAlg for - * certificate compression). */ - PORT_Assert(!ss->firstHsDone || - ss->opt.enableRenegotiation != SSL_RENEGOTIATE_NEVER); - PORT_Assert(!arrayContainsExtension(xtnData->negotiated, - xtnData->numNegotiated, ex_type)); - PORT_Assert(xtnData->numNegotiated < SSL_MAX_EXTENSIONS); - if (xtnData->numNegotiated < SSL_MAX_EXTENSIONS) { - xtnData->negotiated[xtnData->numNegotiated++] = ex_type; - } -} - PRBool ssl3_ExtensionAdvertisedClientHelloInner(const sslSocket *ss, PRUint16 ex_type) { diff --git a/icecat/security/nss/lib/ssl/ssl3ext.h b/icecat/security/nss/lib/ssl/ssl3ext.h index 9b3b5d2041..6176bd5c9e 100644 --- a/icecat/security/nss/lib/ssl/ssl3ext.h +++ b/icecat/security/nss/lib/ssl/ssl3ext.h @@ -175,9 +175,6 @@ void ssl3_ResetExtensionData(TLSExtensionData *xtnData, const sslSocket *ss); PRBool ssl3_ExtensionNegotiated(const sslSocket *ss, PRUint16 ex_type); PRBool ssl3_ExtensionAdvertised(const sslSocket *ss, PRUint16 ex_type); -void ssl3_RecordExtensionNegotiated(const sslSocket *ss, - TLSExtensionData *xtnData, - PRUint16 ex_type); SECStatus ssl3_RegisterExtensionSender(const sslSocket *ss, TLSExtensionData *xtnData, diff --git a/icecat/security/nss/lib/ssl/ssl3exthandle.c b/icecat/security/nss/lib/ssl/ssl3exthandle.c index 9e2acd1d22..cafddd81fd 100644 --- a/icecat/security/nss/lib/ssl/ssl3exthandle.c +++ b/icecat/security/nss/lib/ssl/ssl3exthandle.c @@ -165,7 +165,7 @@ ssl3_HandleServerNameXtn(const sslSocket *ss, TLSExtensionData *xtnData, ssl3_FreeSniNameArray(xtnData); xtnData->sniNameArr = names; xtnData->sniNameArrSize = 1; - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_server_name_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_server_name_xtn; } return SECSuccess; @@ -345,7 +345,7 @@ ssl3_SelectAppProtocol(const sslSocket *ss, TLSExtensionData *xtnData, } xtnData->nextProtoState = SSL_NEXT_PROTO_NEGOTIATED; - ssl3_RecordExtensionNegotiated(ss, xtnData, extension); + xtnData->negotiated[xtnData->numNegotiated++] = extension; return SECITEM_CopyItem(NULL, &xtnData->nextProto, &result); } @@ -447,7 +447,7 @@ ssl3_ClientHandleAppProtoXtn(const sslSocket *ss, TLSExtensionData *xtnData, SECITEM_FreeItem(&xtnData->nextProto, PR_FALSE); xtnData->nextProtoState = SSL_NEXT_PROTO_SELECTED; - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_app_layer_protocol_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_app_layer_protocol_xtn; return SECITEM_CopyItem(NULL, &xtnData->nextProto, &protocol_name); } @@ -528,7 +528,7 @@ ssl3_ServerHandleStatusRequestXtn(const sslSocket *ss, TLSExtensionData *xtnData PORT_Assert(ss->sec.isServer); /* remember that we got this extension. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_cert_status_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_cert_status_xtn; if (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3) { sender = tls13_ServerSendStatusRequestXtn; @@ -606,7 +606,7 @@ ssl3_ClientHandleStatusRequestXtn(const sslSocket *ss, TLSExtensionData *xtnData } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_cert_status_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_cert_status_xtn; return SECSuccess; } @@ -859,7 +859,7 @@ ssl3_ClientHandleSessionTicketXtn(const sslSocket *ss, TLSExtensionData *xtnData } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_session_ticket_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_session_ticket_xtn; return SECSuccess; } @@ -1309,7 +1309,7 @@ ssl3_ServerHandleSessionTicketXtn(const sslSocket *ss, TLSExtensionData *xtnData } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_session_ticket_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_session_ticket_xtn; /* Parse the received ticket sent in by the client. We are * lenient about some parse errors, falling back to a fullshake @@ -1387,7 +1387,7 @@ ssl3_HandleRenegotiationInfoXtn(const sslSocket *ss, TLSExtensionData *xtnData, /* remember that we got this extension and it was correct. */ CONST_CAST(sslSocket, ss) ->peerRequestedProtection = 1; - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_renegotiation_info_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_renegotiation_info_xtn; if (ss->sec.isServer) { /* prepare to send back the appropriate response */ rv = ssl3_RegisterExtensionSender(ss, xtnData, @@ -1522,7 +1522,7 @@ ssl3_ClientHandleUseSRTPXtn(const sslSocket *ss, TLSExtensionData *xtnData, } /* OK, this looks fine. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_use_srtp_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_use_srtp_xtn; xtnData->dtlsSRTPCipherSuite = cipher; return SECSuccess; } @@ -1593,7 +1593,7 @@ ssl3_ServerHandleUseSRTPXtn(const sslSocket *ss, TLSExtensionData *xtnData, /* OK, we have a valid cipher and we've selected it */ xtnData->dtlsSRTPCipherSuite = cipher; - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_use_srtp_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_use_srtp_xtn; return ssl3_RegisterExtensionSender(ss, xtnData, ssl_use_srtp_xtn, @@ -1639,12 +1639,8 @@ ssl3_HandleSigAlgsXtn(const sslSocket *ss, TLSExtensionData *xtnData, return SECFailure; } - /* Keep track of negotiated extensions. Only the server consumes this - * entry; on the client, skipping prevents numNegotiated overflow - * during repeated post-handshake CertificateRequests. */ - if (ss->sec.isServer) { - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_signature_algorithms_xtn); - } + /* Keep track of negotiated extensions. */ + xtnData->negotiated[xtnData->numNegotiated++] = ssl_signature_algorithms_xtn; return SECSuccess; } @@ -1715,7 +1711,7 @@ ssl3_HandleExtendedMasterSecretXtn(const sslSocket *ss, TLSExtensionData *xtnDat SSL_GETPID(), ss->fd)); /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_extended_master_secret_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_extended_master_secret_xtn; if (ss->sec.isServer) { return ssl3_RegisterExtensionSender(ss, xtnData, @@ -1762,7 +1758,7 @@ ssl3_ClientHandleSignedCertTimestampXtn(const sslSocket *ss, TLSExtensionData *x } *scts = *data; /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_signed_cert_timestamp_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_signed_cert_timestamp_xtn; return SECSuccess; } @@ -1798,7 +1794,7 @@ ssl3_ServerHandleSignedCertTimestampXtn(const sslSocket *ss, return SECFailure; } - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_signed_cert_timestamp_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_signed_cert_timestamp_xtn; PORT_Assert(ss->sec.isServer); return ssl3_RegisterExtensionSender(ss, xtnData, ssl_signed_cert_timestamp_xtn, @@ -1938,7 +1934,7 @@ ssl_HandleSupportedGroupsXtn(const sslSocket *ss, TLSExtensionData *xtnData, } /* Remember that we negotiated this extension. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_supported_groups_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_supported_groups_xtn; return SECSuccess; } @@ -1979,7 +1975,7 @@ ssl_HandleRecordSizeLimitXtn(const sslSocket *ss, TLSExtensionData *xtnData, /* We can't enforce the maximum on a server. But we do need to ensure * that we don't apply a limit that is too large. */ xtnData->recordSizeLimit = PR_MIN(maxLimit, limit); - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_record_size_limit_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_record_size_limit_xtn; return SECSuccess; } diff --git a/icecat/security/nss/lib/ssl/sslimpl.h b/icecat/security/nss/lib/ssl/sslimpl.h index 6380b9493b..7ecbb581f4 100644 --- a/icecat/security/nss/lib/ssl/sslimpl.h +++ b/icecat/security/nss/lib/ssl/sslimpl.h @@ -760,8 +760,6 @@ typedef struct SSL3HandshakeStateStr { * on server.*/ PRBool helloRetry; /* True if HelloRetryRequest has been sent * or received. */ - PRBool dtlsReceivedHVR; /* True if a DTLS HelloVerifyRequest was - * received. */ PRBool receivedCcs; /* A server received ChangeCipherSpec * before the handshake started. */ PRBool rejectCcs; /* Excessive ChangeCipherSpecs are rejected. */ diff --git a/icecat/security/nss/lib/ssl/tls13con.c b/icecat/security/nss/lib/ssl/tls13con.c index 30cd9217ed..c489b2b108 100644 --- a/icecat/security/nss/lib/ssl/tls13con.c +++ b/icecat/security/nss/lib/ssl/tls13con.c @@ -3031,7 +3031,6 @@ tls13_HandleHelloRetryRequest(sslSocket *ss, const PRUint8 *savedMsg, rv = ssl3_HandleParsedExtensions(ss, ssl_hs_hello_retry_request); ssl3_DestroyRemoteExtensions(&ss->ssl3.hs.remoteExtensions); if (rv != SECSuccess) { - SECITEM_FreeItem(&ss->ssl3.hs.cookie, PR_FALSE); return SECFailure; /* Error code set below */ } rv = tls13_MaybeHandleEchSignal(ss, savedMsg, savedLength, PR_TRUE); @@ -3065,12 +3064,10 @@ tls13_HandleHelloRetryRequest(sslSocket *ss, const PRUint8 *savedMsg, } ssl_ReleaseXmitBufLock(ss); - SECITEM_FreeItem(&ss->ssl3.hs.cookie, PR_FALSE); return SECSuccess; loser: ssl_ReleaseXmitBufLock(ss); - SECITEM_FreeItem(&ss->ssl3.hs.cookie, PR_FALSE); return SECFailure; } @@ -4063,20 +4060,6 @@ tls13_HandleCertificateDecode(sslSocket *ss, PRUint8 *b, PRUint32 length) return SECFailure; } - /* Cap the decompressed size to prevent memory exhaustion. The wire field - * is a uint24 (max 16MB) but the CompressedCertificate path bypasses the - * 128KB cap applied to regular handshake messages. 100KB matches the limit - * enforced by OpenSSL and BoringSSL. */ -#define MAX_CERT_UNCOMPRESSED_LEN (100 * 1024) - if (decodedCertLen > MAX_CERT_UNCOMPRESSED_LEN) { - SSL_TRC(50, ("%d: TLS13[%d]: %s uncompressed_length %u exceeds limit %u", - SSL_GETPID(), ss->fd, SSL_ROLE(ss), - decodedCertLen, MAX_CERT_UNCOMPRESSED_LEN)); - FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CERTIFICATE, bad_certificate); - return SECFailure; - } -#undef MAX_CERT_UNCOMPRESSED_LEN - /* opaque compressed_certificate_message<1..2^24-1>; */ PRUint32 compressedCertLen = 0; rv = ssl3_ConsumeHandshakeNumber(ss, &compressedCertLen, 3, &b, &length); @@ -5006,10 +4989,6 @@ tls13_AEAD(PK11Context *context, PRBool decrypt, PORT_Memcpy(ivOut, ivIn, ivLen); } if (decrypt) { - if (inLen < tagLen) { - PORT_SetError(SEC_ERROR_INPUT_LEN); - return SECFailure; - } inLen = inLen - tagLen; tag = (unsigned char *)in + inLen; /* tag is const on decrypt, but returned on encrypt */ diff --git a/icecat/security/nss/lib/ssl/tls13ech.c b/icecat/security/nss/lib/ssl/tls13ech.c index f966f19403..397d80b0a1 100644 --- a/icecat/security/nss/lib/ssl/tls13ech.c +++ b/icecat/security/nss/lib/ssl/tls13ech.c @@ -2442,7 +2442,7 @@ tls13_MaybeHandleEchSignal(sslSocket *ss, const PRUint8 *sh, PRUint32 shLen, PRB PORT_SetError(SSL_ERROR_BAD_2ND_CLIENT_HELLO); return SECFailure; } - ssl3_RecordExtensionNegotiated(ss, &ss->xtnData, ssl_tls13_encrypted_client_hello_xtn); + ss->xtnData.negotiated[ss->xtnData.numNegotiated++] = ssl_tls13_encrypted_client_hello_xtn; /* Only overwrite client_random with client_inner_random if CHInner was * succesfully used for handshake (NOT if HRR is received). */ diff --git a/icecat/security/nss/lib/ssl/tls13exthandle.c b/icecat/security/nss/lib/ssl/tls13exthandle.c index dbb3e5ac03..5508069b4e 100644 --- a/icecat/security/nss/lib/ssl/tls13exthandle.c +++ b/icecat/security/nss/lib/ssl/tls13exthandle.c @@ -446,7 +446,8 @@ tls13_ServerHandleKeyShareXtn(const sslSocket *ss, TLSExtensionData *xtnData, } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_key_share_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = + ssl_tls13_key_share_xtn; return SECSuccess; @@ -745,7 +746,7 @@ tls13_ServerHandlePreSharedKeyXtn(const sslSocket *ss, TLSExtensionData *xtnData return SECSuccess; } - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_pre_shared_key_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_tls13_pre_shared_key_xtn; return SECSuccess; alert_loser: @@ -815,7 +816,7 @@ tls13_ClientHandlePreSharedKeyXtn(const sslSocket *ss, TLSExtensionData *xtnData } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_pre_shared_key_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_tls13_pre_shared_key_xtn; xtnData->selectedPsk = candidate; return SECSuccess; @@ -859,7 +860,7 @@ tls13_ServerHandleEarlyDataXtn(const sslSocket *ss, TLSExtensionData *xtnData, return SECFailure; } - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_early_data_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_tls13_early_data_xtn; return SECSuccess; } @@ -884,7 +885,7 @@ tls13_ClientHandleEarlyDataXtn(const sslSocket *ss, TLSExtensionData *xtnData, } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_early_data_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_tls13_early_data_xtn; return SECSuccess; } @@ -1035,27 +1036,20 @@ tls13_ClientHandleHrrCookie(const sslSocket *ss, TLSExtensionData *xtnData, PORT_Assert(ss->vrange.max >= SSL_LIBRARY_VERSION_TLS_1_3); - SECItem cookie; + /* IMPORTANT: this is only valid while the HelloRetryRequest is still valid. */ rv = ssl3_ExtConsumeHandshakeVariable( - ss, &cookie, 2, + ss, &CONST_CAST(sslSocket, ss)->ssl3.hs.cookie, 2, &data->data, &data->len); if (rv != SECSuccess) { PORT_SetError(SSL_ERROR_RX_MALFORMED_HELLO_RETRY_REQUEST); return SECFailure; } - if (!cookie.len || data->len) { + if (!ss->ssl3.hs.cookie.len || data->len) { ssl3_ExtSendAlert(ss, alert_fatal, decode_error); PORT_SetError(SSL_ERROR_RX_MALFORMED_HELLO_RETRY_REQUEST); return SECFailure; } - PORT_Assert(!ss->ssl3.hs.cookie.data && !ss->ssl3.hs.cookie.len); - SECITEM_FreeItem(&CONST_CAST(sslSocket, ss)->ssl3.hs.cookie, PR_FALSE); - rv = SECITEM_CopyItem(NULL, &CONST_CAST(sslSocket, ss)->ssl3.hs.cookie, &cookie); - if (rv != SECSuccess) { - return SECFailure; - } - return SECSuccess; } @@ -1107,7 +1101,7 @@ tls13_ServerHandleCookieXtn(const sslSocket *ss, TLSExtensionData *xtnData, } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_cookie_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_tls13_cookie_xtn; return SECSuccess; } @@ -1144,7 +1138,7 @@ tls13_ServerHandlePostHandshakeAuthXtn(const sslSocket *ss, * NST immediately following the client Finished. */ if (!IS_DTLS(ss)) { /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_post_handshake_auth_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_tls13_post_handshake_auth_xtn; } return SECSuccess; @@ -1215,7 +1209,8 @@ tls13_ServerHandlePskModesXtn(const sslSocket *ss, TLSExtensionData *xtnData, } /* Keep track of negotiated extensions. */ - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_psk_key_exchange_modes_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = + ssl_tls13_psk_key_exchange_modes_xtn; return SECSuccess; } @@ -1559,7 +1554,8 @@ tls13_ClientHandleDelegatedCredentialsXtn(const sslSocket *ss, } xtnData->peerDelegCred = dc; - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_delegated_credentials_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = + ssl_delegated_credentials_xtn; return SECSuccess; alert_loser: ssl3_ExtSendAlert(ss, alert_fatal, illegal_parameter); @@ -1623,7 +1619,8 @@ tls13_ServerHandleDelegatedCredentialsXtn(const sslSocket *ss, /* Keep track of negotiated extensions. */ xtnData->peerRequestedDelegCred = PR_TRUE; - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_delegated_credentials_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = + ssl_delegated_credentials_xtn; return ssl3_RegisterExtensionSender( ss, xtnData, ssl_delegated_credentials_xtn, @@ -1712,7 +1709,7 @@ tls13_ServerHandleInnerEchXtn(const sslSocket *ss, TLSExtensionData *xtnData, } xtnData->ech->receivedInnerXtn = PR_TRUE; - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_tls13_encrypted_client_hello_xtn); + xtnData->negotiated[xtnData->numNegotiated++] = ssl_tls13_encrypted_client_hello_xtn; return SECSuccess; alert_loser: @@ -1998,9 +1995,7 @@ ssl3_HandleCertificateCompressionXtn(const sslSocket *ss, for (int j = 0; j < ss->ssl3.supportedCertCompressionAlgorithmsCount; j++) { if (ss->ssl3.supportedCertCompressionAlgorithms[j].id == alg) { xtnData->compressionAlg = alg; - if (ss->sec.isServer) { - ssl3_RecordExtensionNegotiated(ss, xtnData, ssl_certificate_compression_xtn); - } + xtnData->negotiated[xtnData->numNegotiated++] = ssl_certificate_compression_xtn; algFound = SECSuccess; break; } diff --git a/icecat/security/nss/lib/util/nssutil.h b/icecat/security/nss/lib/util/nssutil.h index ef42f85525..4b80c210bd 100644 --- a/icecat/security/nss/lib/util/nssutil.h +++ b/icecat/security/nss/lib/util/nssutil.h @@ -19,10 +19,10 @@ * The format of the version string should be * ".[.[.]][ ]" */ -#define NSSUTIL_VERSION "3.112.5" +#define NSSUTIL_VERSION "3.112.2" #define NSSUTIL_VMAJOR 3 #define NSSUTIL_VMINOR 112 -#define NSSUTIL_VPATCH 5 +#define NSSUTIL_VPATCH 2 #define NSSUTIL_VBUILD 0 #define NSSUTIL_BETA PR_FALSE diff --git a/icecat/security/nss/lib/util/quickder.c b/icecat/security/nss/lib/util/quickder.c index 384c6bd1cb..86f0fae2dc 100644 --- a/icecat/security/nss/lib/util/quickder.c +++ b/icecat/security/nss/lib/util/quickder.c @@ -522,18 +522,11 @@ DecodeGroup(void* dest, } } while ((SECSuccess == rv) && (counter.len)); - /* Limit entry data to 1 GiB. */ - if (SECSuccess == rv && subTemplate->size && - totalEntries > ((size_t)1 << 30) / subTemplate->size) { - PORT_SetError(SEC_ERROR_BAD_DER); - rv = SECFailure; - } - if (SECSuccess == rv) { /* allocate room for pointer array and entries */ /* we want to allocate the array even if there is 0 entry */ entries = (void**)PORT_ArenaZAlloc(arena, sizeof(void*) * (totalEntries + 1) + /* the extra one is for NULL termination */ - (size_t)subTemplate->size * totalEntries); + subTemplate->size * totalEntries); if (entries) { entries[totalEntries] = NULL; /* terminate the array */ @@ -547,7 +540,7 @@ DecodeGroup(void* dest, PRUint32 entriesIndex = 0; for (entriesIndex = 0; entriesIndex < totalEntries; entriesIndex++) { entries[entriesIndex] = - (char*)entriesData + ((size_t)subTemplate->size * entriesIndex); + (char*)entriesData + (subTemplate->size * entriesIndex); } } } diff --git a/icecat/security/nss/moz.yaml b/icecat/security/nss/moz.yaml index 0b6bf9e220..621871ea1c 100644 --- a/icecat/security/nss/moz.yaml +++ b/icecat/security/nss/moz.yaml @@ -9,8 +9,8 @@ origin: description: nss url: https://hg-edge.mozilla.org/projects/nss - release: fddd54c0fb1444c710f442c872de3af8eaa9aec9 (2026-04-23T19:27:46Z). - revision: fddd54c0fb1444c710f442c872de3af8eaa9aec9 + release: ea8a7bf26efdf7cb8b5fc8a02f0c779404509277 (2025-10-03T12:46:03Z). + revision: ea8a7bf26efdf7cb8b5fc8a02f0c779404509277 license: MPL-2.0 license-file: COPYING diff --git a/icecat/security/sandbox/common/test/SandboxTestingChildTests.h b/icecat/security/sandbox/common/test/SandboxTestingChildTests.h index 25853dfb96..0ff0238154 100644 --- a/icecat/security/sandbox/common/test/SandboxTestingChildTests.h +++ b/icecat/security/sandbox/common/test/SandboxTestingChildTests.h @@ -74,16 +74,6 @@ namespace ApplicationServices { # ifndef MREMAP_DONTUNMAP # define MREMAP_DONTUNMAP 4 # endif -// -// This constant is ancient, but the kernel header for it conflicts -// with glibc's fcntl.h: -# ifndef F_LINUX_SPECIFIC_BASE -# define F_LINUX_SPECIFIC_BASE 1024 -# endif -// Added in 6.10: -# ifndef F_DUPFD_QUERY -# define F_DUPFD_QUERY (F_LINUX_SPECIFIC_BASE + 3) -# endif #endif constexpr bool kIsDebug = @@ -153,23 +143,6 @@ static void RunGenericTests(SandboxTestingChild* child, bool aIsGMP = false) { MOZ_RELEASE_ASSERT(flags & O_NONBLOCK); } } - - if (!aIsGMP) { - constexpr auto name = "fcntl_dupfd_query"_ns; - int rv = fcntl(0, F_DUPFD_QUERY, 0); - // Expected: - // * success with rv == 1 (new kernel) - // * failure with EINVAL (old kernel) - // Rejected: - // * failure with ENOSYS or any other error - // * success with rv == 0 (shouldn't be possible) - MOZ_RELEASE_ASSERT(rv != 0); - if (rv > 0) { - child->PosixTest(name, true, 0); - } else { // (rv < 0), errno unchanged since fcntl - child->PosixTest(name, false, errno, Some(EINVAL)); - } - } #endif // XP_LINUX } diff --git a/icecat/security/sandbox/linux/SandboxFilter.cpp b/icecat/security/sandbox/linux/SandboxFilter.cpp index 802af4d310..8eb4359e14 100644 --- a/icecat/security/sandbox/linux/SandboxFilter.cpp +++ b/icecat/security/sandbox/linux/SandboxFilter.cpp @@ -118,13 +118,6 @@ static_assert(MADV_GUARD_INSTALL == 102); static_assert(MADV_GUARD_REMOVE == 103); #endif -// Added in 6.10 -#ifndef F_DUPFD_QUERY -# define F_DUPFD_QUERY (F_LINUX_SPECIFIC_BASE + 3) -#else -static_assert(F_DUPFD_QUERY == (F_LINUX_SPECIFIC_BASE + 3)); -#endif - // To avoid visual confusion between "ifdef ANDROID" and "ifndef ANDROID": #ifndef ANDROID # define DESKTOP @@ -1107,9 +1100,6 @@ class SandboxPolicyCommon : public SandboxPolicyBase { #endif // Not much different from other forms of dup(), and commonly used. .Case(F_DUPFD_CLOEXEC, Allow()) - // Used by Mesa, generally useful, and harmless: tests if - // two file descriptors refer to the same file description. - .Case(F_DUPFD_QUERY, Allow()) .Default(SandboxPolicyBase::EvaluateSyscall(sysno)); } diff --git a/icecat/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp b/icecat/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp index 999601df0f..0d668b4229 100644 --- a/icecat/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp +++ b/icecat/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp @@ -400,34 +400,34 @@ static void AddLLVMProfilePathDirectoryToPolicy( #undef WSTRING static void EnsureAppLockerAccess(sandbox::TargetPolicy* aPolicy) { - // At USER_LIMITED and above AppLocker is not blocked. - if (aPolicy->GetLockdownTokenLevel() >= sandbox::USER_LIMITED) { - return; - } - - // The ntdll check SaferpIsV2PolicyPresent reads from this key. - auto result = aPolicy->AddRule( - sandbox::TargetPolicy::SUBSYS_REGISTRY, - sandbox::TargetPolicy::REG_ALLOW_READONLY, - LR"(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\GP\)"); - if (sandbox::SBOX_ALL_OK != result) { - NS_ERROR(R"(Failed to add rule for Srp\GP.)"); - LOG_E(R"(Failed (ResultCode %d) to add read access to Srp\GP)", result); - } - - // When AppLocker is deployed via Mobile Device Management, without this - // rule SaferpIsV2PolicyPresent silently fails to detect AppLocker, causing - // the AppLocker check to be bypassed entirely. - AddCachedWindowsDirRule(aPolicy, sandbox::TargetPolicy::FILES_ALLOW_READONLY, - FOLDERID_System, uR"(\AppLocker\MDM)"_ns); - - // Read access to this device is required to make the AppLocker ioctl call. - result = aPolicy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES, - sandbox::TargetPolicy::FILES_ALLOW_READONLY, - LR"(\Device\SrpDevice)"); - if (sandbox::SBOX_ALL_OK != result) { - NS_ERROR("Failed to add rule for SrpDevice."); - LOG_E("Failed (ResultCode %d) to add read access to SrpDevice", result); + if (aPolicy->GetLockdownTokenLevel() < sandbox::USER_LIMITED) { + // The following rules are to allow DLLs to be loaded when the token level + // blocks access to AppLocker. If the sandbox does not allow access to the + // DLL or the AppLocker rules specifically block it, then it will not load. + auto result = aPolicy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES, + sandbox::TargetPolicy::FILES_ALLOW_READONLY, + L"\\Device\\SrpDevice"); + if (sandbox::SBOX_ALL_OK != result) { + NS_ERROR("Failed to add rule for SrpDevice."); + LOG_E("Failed (ResultCode %d) to add read access to SrpDevice", result); + } + result = aPolicy->AddRule( + sandbox::TargetPolicy::SUBSYS_REGISTRY, + sandbox::TargetPolicy::REG_ALLOW_READONLY, + L"HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Srp\\GP\\"); + if (sandbox::SBOX_ALL_OK != result) { + NS_ERROR("Failed to add rule for Srp\\GP."); + LOG_E("Failed (ResultCode %d) to add read access to Srp\\GP", result); + } + // On certain Windows versions there is a double slash before GP. + result = aPolicy->AddRule( + sandbox::TargetPolicy::SUBSYS_REGISTRY, + sandbox::TargetPolicy::REG_ALLOW_READONLY, + L"HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Srp\\\\GP\\"); + if (sandbox::SBOX_ALL_OK != result) { + NS_ERROR("Failed to add rule for Srp\\\\GP."); + LOG_E("Failed (ResultCode %d) to add read access to Srp\\\\GP", result); + } } } @@ -460,36 +460,19 @@ Result SandboxBroker::LaunchApp( "Setting the reduced set of flags should always succeed"); } - sandbox::MitigationFlags delayedMitigations = - mPolicy->GetDelayedProcessMitigations(); - - // Only prefer loading from the system directory as a delayed mitigation, and - // always enable this delayed mitigation. This means that: - // - if the launcher or browser process chose to apply the mitigation, child - // processes will have it enabled at startup automatically anyway; - // - even if the launcher or browser process chose not to apply the - // mitigation, at least sandboxed child processes will run with the - // mitigation once the sandbox starts (by this time, they will already - // have loaded the Visual C++ runtime DLLs, so these are no longer a - // concern; also, although some sandboxed child processes can start new - // processes, they never start new *IceCat* processes). - // Refer to EnablePreferLoadFromSystem32IfCompatible for more details. - MOZ_ASSERT(!(mPolicy->GetProcessMitigations() & - sandbox::MITIGATION_IMAGE_LOAD_PREFER_SYS32)); - delayedMitigations |= sandbox::MITIGATION_IMAGE_LOAD_PREFER_SYS32; - // Bug 1936749: MpDetours.dll injection is incompatible with ACG. constexpr sandbox::MitigationFlags kDynamicCodeFlags = sandbox::MITIGATION_DYNAMIC_CODE_DISABLE | sandbox::MITIGATION_DYNAMIC_CODE_DISABLE_WITH_OPT_OUT; + sandbox::MitigationFlags delayedMitigations = + mPolicy->GetDelayedProcessMitigations(); if ((delayedMitigations & kDynamicCodeFlags) && ::GetModuleHandleW(L"MpDetours.dll")) { delayedMitigations &= ~kDynamicCodeFlags; + SANDBOX_SUCCEED_OR_CRASH( + mPolicy->SetDelayedProcessMitigations(delayedMitigations)); } - SANDBOX_SUCCEED_OR_CRASH( - mPolicy->SetDelayedProcessMitigations(delayedMitigations)); - EnsureAppLockerAccess(mPolicy); // If logging enabled, set up the policy. @@ -1109,7 +1092,8 @@ void SandboxBroker::SetSecurityLevelForContentProcess(int32_t aSandboxLevel, sandbox::MITIGATION_SEHOP | sandbox::MITIGATION_DEP_NO_ATL_THUNK | sandbox::MITIGATION_DEP | sandbox::MITIGATION_EXTENSION_POINT_DISABLE | sandbox::MITIGATION_IMAGE_LOAD_NO_REMOTE | - sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL; + sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL | + sandbox::MITIGATION_IMAGE_LOAD_PREFER_SYS32; #if defined(_M_ARM64) // Disable CFG on older versions of ARM64 Windows to avoid a crash in COM. @@ -1407,7 +1391,8 @@ bool SandboxBroker::SetSecurityLevelForRDDProcess() { sandbox::MITIGATION_DEP_NO_ATL_THUNK | sandbox::MITIGATION_DEP | sandbox::MITIGATION_NONSYSTEM_FONT_DISABLE | sandbox::MITIGATION_IMAGE_LOAD_NO_REMOTE | - sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL; + sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL | + sandbox::MITIGATION_IMAGE_LOAD_PREFER_SYS32; if (StaticPrefs::security_sandbox_rdd_shadow_stack_enabled()) { mitigations |= sandbox::MITIGATION_CET_COMPAT_MODE; @@ -1495,7 +1480,8 @@ bool SandboxBroker::SetSecurityLevelForSocketProcess() { sandbox::MITIGATION_DEP_NO_ATL_THUNK | sandbox::MITIGATION_DEP | sandbox::MITIGATION_NONSYSTEM_FONT_DISABLE | sandbox::MITIGATION_IMAGE_LOAD_NO_REMOTE | - sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL; + sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL | + sandbox::MITIGATION_IMAGE_LOAD_PREFER_SYS32; if (StaticPrefs::security_sandbox_socket_shadow_stack_enabled()) { mitigations |= sandbox::MITIGATION_CET_COMPAT_MODE; @@ -1567,6 +1553,7 @@ struct UtilitySandboxProps { sandbox::MITIGATION_NONSYSTEM_FONT_DISABLE | sandbox::MITIGATION_IMAGE_LOAD_NO_REMOTE | sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL | + sandbox::MITIGATION_IMAGE_LOAD_PREFER_SYS32 | sandbox::MITIGATION_CET_COMPAT_MODE; sandbox::MitigationFlags mDelayedMitigations = diff --git a/icecat/services/settings/dumps/blocklists/addons-bloomfilters.json b/icecat/services/settings/dumps/blocklists/addons-bloomfilters.json index 7dc31ef948..2227ea22bd 100644 --- a/icecat/services/settings/dumps/blocklists/addons-bloomfilters.json +++ b/icecat/services/settings/dumps/blocklists/addons-bloomfilters.json @@ -5,7531 +5,4867 @@ "blocked": [], "unblocked": [], "softblocked": [ - "sendurl@runa-dte.cl:1.2.6", - "sendurl@runa-dte.cl:1.2.5", - "sendurl@runa-dte.cl:1.2.4", - "proxy-mode-toggle@vmkspv.github.io:1.0.0" + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.7.1130", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.8.1130", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.9.1130", + "MUC3-Dashboard-Pack@example.com:1.1", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.0.1201", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.6.1130", + "musicplayer@extension.org:0.1", + "{93bbfa08-7772-457b-be7d-b0cdb0f53564}:1.5.1", + "seer-ratings-overlay-gk@example.com:1.0.0", + "{6683972e-10d4-44a4-90f8-ce51722cc1cd}:1.5.27.2", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.1.1201", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.2.1201", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.4.1201", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.3.1201", + "@traceq-browser-extension.invictolabs:1.0" ] }, - "schema": 1776040598218, + "schema": 1764555357486, "key_format": "{guid}:{version}", - "stash_time": 1776062106995, - "id": "5d5d7704-53e0-4ccf-aa36-bb13c0595177", - "last_modified": 1776062193033 + "stash_time": 1764570906433, + "id": "3969e33a-b900-493c-a5c2-5fcf631afa88", + "last_modified": 1764570990070 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "sciencedirect-bibtex-inline@example.com:1.0.0", - "flash@coffeeandfunc.com:0.9.6", - "flash@coffeeandfunc.com:0.9.4", - "{d0be5df1-d9d2-4f2c-b700-6a7111d604af}:1.0", - "{d0be5df1-d9d2-4f2c-b700-6a7111d604af}:2.0", - "IceCatExtension@TGPFilter:1.0", - "{03044fa0-9503-42bd-95b7-cec8b1e32402}:1.0", - "meutema_1776026877036@exportado:1.0", - "nifty-temu-scraper2@nifty.codes:3.1.6", - "nifty-taobao-scraper@nifty.codes:3.1.0", - "nifty-spotify-scraper@nifty.codes:3.1.0", - "nifty-skyscanner-scraper@nifty.codes:3.1.0", - "nifty-skyscanner-scraper@nifty.codes:3.1.3", - "nifty-shopee-scraper@nifty.codes:3.1.0", - "nifty-shopee-scraper@nifty.codes:3.1.2", - "nifty-shopee-scraper@nifty.codes:3.1.4", - "nifty-shein-scraper@nifty.codes:3.1.0", - "nifty-shein-scraper@nifty.codes:3.1.2", - "nifty-shein-scraper@nifty.codes:3.1.3", - "nifty-rightmove-scraper@nifty.codes:3.1.0", - "nifty-rightmove-scraper@nifty.codes:3.1.2", - "nifty-rightmove-scraper@nifty.codes:3.1.3", - "nifty-pinterest-scraper@nifty.codes:3.1.0", - "nifty-pinterest-scraper@nifty.codes:3.1.2", - "nifty-patreon-scraper@nifty.codes:3.1.0", - "nifty-patreon-scraper@nifty.codes:3.1.2", - "nifty-patreon-scraper@nifty.codes:3.1.3", - "nifty-mercari-scraper@nifty.codes:3.1.0", - "nifty-mercari-scraper@nifty.codes:3.1.2", - "nifty-mercari-scraper@nifty.codes:3.1.3", - "nifty-mercari-scraper@nifty.codes:3.1.4", - "nifty-meetup-scraper@nifty.codes:3.1.0", - "nifty-meetup-scraper@nifty.codes:3.1.2", - "nifty-meetup-scraper@nifty.codes:3.1.3", - "nifty-meetup-scraper@nifty.codes:3.1.4", - "nifty-lazada-scraper@nifty.codes:3.1.0", - "nifty-lazada-scraper@nifty.codes:3.1.2", - "nifty-lazada-scraper@nifty.codes:3.1.3", - "nifty-lazada-scraper@nifty.codes:3.1.4", - "nifty-instagram-scraper@nifty.codes:3.1.0", - "nifty-instagram-scraper@nifty.codes:3.1.2", - "nifty-instagram-scraper@nifty.codes:3.1.3", - "nifty-instagram-scraper@nifty.codes:3.1.4", - "nifty-gumroad-scraper@nifty.codes:3.1.0", - "nifty-gumroad-scraper@nifty.codes:3.1.2", - "nifty-gumroad-scraper@nifty.codes:3.1.3", - "nifty-gumroad-scraper@nifty.codes:3.1.4", - "nifty-grailed-scraper@nifty.codes:3.1.0", - "nifty-grailed-scraper@nifty.codes:3.1.2", - "nifty-grailed-scraper@nifty.codes:3.1.3", - "nifty-grailed-scraper@nifty.codes:3.1.4", - "nifty-glassdoor-scraper@nifty.codes:3.1.0", - "nifty-glassdoor-scraper@nifty.codes:3.1.2", - "nifty-glassdoor-scraper@nifty.codes:3.1.3", - "nifty-glassdoor-scraper@nifty.codes:3.1.4", - "nifty-fbmarketplace-scraper@nifty.codes:3.1.0", - "nifty-fbmarketplace-scraper@nifty.codes:3.1.2", - "nifty-fbmarketplace-scraper@nifty.codes:3.1.3", - "nifty-fbmarketplace-scraper@nifty.codes:3.1.4", - "nifty-ebay-scraper@nifty.codes:3.1.0", - "nifty-ebay-scraper@nifty.codes:3.1.2", - "nifty-ebay-scraper@nifty.codes:3.1.3", - "nifty-ebay-scraper@nifty.codes:3.1.4", - "nifty-doordash-scraper@nifty.codes:3.1.0", - "nifty-doordash-scraper@nifty.codes:3.1.2", - "nifty-doordash-scraper@nifty.codes:3.1.3", - "nifty-doordash-scraper@nifty.codes:3.1.4", - "nifty-depop-scraper@nifty.codes:3.1.0", - "nifty-depop-scraper@nifty.codes:3.1.2", - "nifty-depop-scraper@nifty.codes:3.1.3", - "nifty-depop-scraper@nifty.codes:3.1.4", - "nifty-booking-scraper@nifty.codes:3.1.0", - "nifty-booking-scraper@nifty.codes:3.1.2", - "nifty-booking-scraper@nifty.codes:3.1.3", - "nifty-booking-scraper@nifty.codes:3.1.4", - "nifty-bluesky-scraper@nifty.codes:3.1.0", - "nifty-bluesky-scraper@nifty.codes:3.1.2", - "nifty-bluesky-scraper@nifty.codes:3.1.3", - "nifty-bluesky-scraper@nifty.codes:3.1.4", - "nifty-bizbuysell-scraper@nifty.codes:3.1.0", - "nifty-bizbuysell-scraper@nifty.codes:3.1.2", - "nifty-bizbuysell-scraper@nifty.codes:3.1.3", - "nifty-bizbuysell-scraper@nifty.codes:3.1.4", - "nifty-bestbuy-scraper@nifty.codes:3.1.0", - "nifty-bestbuy-scraper@nifty.codes:3.1.2", - "nifty-bestbuy-scraper@nifty.codes:3.1.3", - "nifty-bestbuy-scraper@nifty.codes:3.1.4", - "nifty-asos-scraper@nifty.codes:3.1.0", - "nifty-asos-scraper@nifty.codes:3.1.2", - "nifty-asos-scraper@nifty.codes:3.1.3", - "nifty-asos-scraper@nifty.codes:3.1.4", - "nifty-aliexpress-scraper@nifty.codes:3.1.0", - "nifty-aliexpress-scraper@nifty.codes:3.1.2", - "nifty-aliexpress-scraper@nifty.codes:3.1.3", - "nifty-aliexpress-scraper@nifty.codes:3.1.4", - "nifty-alibaba-scraper@nifty.codes:3.1.0", - "nifty-alibaba-scraper@nifty.codes:3.1.2", - "nifty-alibaba-scraper@nifty.codes:3.1.3", - "nifty-alibaba-scraper@nifty.codes:3.1.4", - "nifty-airbnb-scraper@nifty.codes:3.1.0", - "nifty-airbnb-scraper@nifty.codes:3.1.3", - "nifty-airbnb-scraper@nifty.codes:3.1.4", - "nifty-airbnb-scraper@nifty.codes:3.1.5" + "cybernotes-sidebar@0xbasinas:0.3.0", + "@grip.security.internal:0.0.2", + "{90e41842-755d-40e0-9136-3224ee21b36d}:0.1", + "mosa.albedre3@gmail.com:2.1", + "{a8f133d7-f5a5-4041-9fa0-56b1eeaa844e}:1.0.0", + "{a8f133d7-f5a5-4041-9fa0-56b1eeaa844e}:1.1.0", + "{a8f133d7-f5a5-4041-9fa0-56b1eeaa844e}:1.1.3", + "{a8f133d7-f5a5-4041-9fa0-56b1eeaa844e}:1.1.4", + "mosa.albedre9@gmail.com:2.0", + "mosa.albedre9@gmail.com:2.1", + "mosa.albedre9@gmail.com:2.2", + "{a8f133d7-f5a5-4041-9fa0-56b1eeaa844e}:1.1.5", + "luminous-ttv@dvdandroid:0.9.0.0", + "ip-decrement-tool-final@zynek.net:1.3", + "ip-decrement-tool-final@zynek.net:1.2", + "ip-decrement-tool-final@zynek.net:1.1" ] }, - "schema": 1776018997909, + "schema": 1764527792475, "key_format": "{guid}:{version}", - "stash_time": 1776040506566, - "id": "13768afd-7d18-4da4-a7f3-5d550ace7d2f", - "last_modified": 1776040597866 + "stash_time": 1764549305549, + "id": "7f202470-9589-4e71-968a-ff3cbb5f7bc3", + "last_modified": 1764549379668 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{cb94cdd4-bba6-4a9c-bba7-fec3e95da457}:1.0", - "chatgpt-navigator@example.com:1.0", - "@ip-all-inn:1.5.2", - "{fd9b4135-7909-4410-b7fc-bbaf9ac1bbf5}:1.0", - "videofit@extension:1.0.0", - "videofit@extension:2.0.0", - "calculadora-simples@example.com:1.5", - "calculadora-simples@example.com:1.2", - "sldkfjbnvdsjbnkdlsjfbnkdslfjbnsdklfjbns@lkdfjbn:3.9.17.1", - "{dd97d42c-6560-4fb2-8db4-bf340824fde0}:2.9.1", - "{dd97d42c-6560-4fb2-8db4-bf340824fde0}:2.9.2", - "native-messaging@suiryc:1.3.8", - "cs2-ipa@cs2ipa.extension:1.5.1", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.10", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.9", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.8", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.6", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.3", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.2", - "lms-smart-lesson-planner@addon:4.19", - "vidava@vidava.ai:1.0", - "gmail-multi-manager@icecat-addon:1.0.0", - "tiktok-gesture-control@addon.local:1.0" + "linkedin-focus@nhrdev.com:1.1", + "linkedin-focus@nhrdev.com:1.0.0", + "koszyk-wspoldzielony-allegro@nicramu:1.5", + "{9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d}:2.3" ] }, - "schema": 1775997382559, + "schema": 1764506194358, "key_format": "{guid}:{version}", - "stash_time": 1776018906512, - "id": "a18aa4ef-de2b-4049-af96-c3ee913521ed", - "last_modified": 1776018997581 + "stash_time": 1764527706180, + "id": "9ce257ab-427f-4c13-b320-4b98e8baa7a9", + "last_modified": 1764527792169 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "hsgallery@bitbooster.de:0.1", - "hsgallery@bitbooster.de:1.0", - "hslinkcollector@bitbooster.de:0.1", - "hslinkcollector@bitbooster.de:1.0", - "{6a01fc63-7c63-43ef-8a0e-b6251f70a40d}:20240810.4", - "{6a01fc63-7c63-43ef-8a0e-b6251f70a40d}:20260412", - "{6a01fc63-7c63-43ef-8a0e-b6251f70a40d}:20260412.2", - "addtocal@mooo.local:1.0.0", - "{9a8c2345-5678-4321-8765-ab1234567890}:1.5", - "extension@atpassport.net:0.2.0", - "{15798aec-c23d-4bb8-955b-fa0a4ce31ce4}:1.0", - "{15798aec-c23d-4bb8-955b-fa0a4ce31ce4}:2.0", - "proton-mail-checker@bolausson:1.3.37", - "url-modifier@urlmodifier:1.1.0", - "reels-blocker@icecat:1.0" + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.2.1130", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.3.1130", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.4.1130", + "{5384b886-08a8-11f0-9f4f-af7f4c6512f7}:1.0.0", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.0.1130", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.1.1130", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.5.1130", + "castify@example.com:1.0.0", + "{61666688-dbb8-4d1f-8df6-65d76960a788}:0.1", + "offline-2fa-generator@agentie.marketing:1.1.0" ] }, - "schema": 1775975781354, + "schema": 1764484591554, "key_format": "{guid}:{version}", - "stash_time": 1775997305577, - "id": "a856b246-e5fe-4c25-afeb-7f74311a4aaa", - "last_modified": 1775997382256 + "stash_time": 1764506106460, + "id": "efde9278-47bc-413b-8404-266d9c46a6e5", + "last_modified": 1764506194257 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "sp1fff@chfarsidenewtab:2.0", - "cs2-ipa@cs2ipa.extension:1.3.3", - "cs2-ipa@cs2ipa.extension:1.4.3", - "exporttomarkdown@example.com:1.0.0", - "exporttomarkdown@example.com:1.0.1", - "exporttomarkdown@example.com:1.0.2", - "exporttomarkdown@example.com:1.0.3", - "exporttomarkdown@example.com:1.0.4", - "exporttomarkdown@example.com:1.0.5", - "exporttomarkdown@example.com:1.0.6", - "aerocity@startpage.local:1.2", - "{e18ffb18-8d6f-4dfe-a336-b0af49a6ca8b}:26.4.12", - "{bf4fdda1-d772-4dea-bf89-0e9d6b0f66ce}:1.0.0", - "pulltab-fullscreen@local:1.3" + "{68ef0948-5c86-49f8-8161-dd4082ad9607}:1.0", + "{68ef0948-5c86-49f8-8161-dd4082ad9607}:4.2", + "@kudos-reminder:1.0", + "bypass-redirect@example.com:1.0" ] }, - "schema": 1775954181021, + "schema": 1764468938917, "key_format": "{guid}:{version}", - "stash_time": 1775975705211, - "id": "3a26ce23-c883-4dbc-98c4-4741c29c5216", - "last_modified": 1775975780906 + "stash_time": 1764484507159, + "id": "bb89f001-7306-4ec7-8675-f1768ce6a50a", + "last_modified": 1764484591323 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "Android@bravenhancer.com:22.6.9", - "enhancer@goldenfox.com:22.6.9", - "testpilot@rabbitxone.com:5.3", - "6584fweokrfioefde@gee-apps.com:1.0", - "noble-quetzal-airtm-android@noblequetzal.local:1.0.0", - "noble-quetzal-airtm-android@noblequetzal.local:1.6.0", - "noble-quetzal-airtm-android@noblequetzal.local:1.6.1", - "noble-quetzal-airtm-android@noblequetzal.local:1.6.2", - "noble-quetzal-airtm-android@noblequetzal.local:1.6.3", - "noble-quetzal-airtm-android@noblequetzal.local:1.7.0", - "noble-quetzal-airtm-android@noblequetzal.local:1.7.1", - "noble-quetzal-airtm-android@noblequetzal.local:1.7.3", - "idm_download_organizer@hamzae.com:1.0", - "idm_download_organizer@hamzae.com:1.1", - "idm_download_organizer@hamzae.com:1.2", - "idm_download_organizer@hamzae.com:1.3", - "{3d720eef-a7c5-4577-bc0b-6323fd436173}:1.0.0", - "{3d720eef-a7c5-4577-bc0b-6323fd436173}:1.0.1", - "kickalert@segelferd:1.9.4", - "{3d720eef-a7c5-4577-bc0b-6323fd436173}:1.0.3" + "hysec-fleet-parser@hysec.org:3.0.0", + "linkshare@example.com:1.0.0", + "youtube-scheduler@yourdomain.com:1.0", + "youtube-scheduler@yourdomain.com:1.1", + "youtube-scheduler@yourdomain.com:1.2", + "Android@bravenhancer.com:20.4.5", + "yt-dlp-sender@example.com:0.2", + "enhancer@goldenfox.com:20.4.5", + "Android@bravenhancer.com:20.4.7", + "enhancer@goldenfox.com:20.4.7", + "kinozal-template@yourdomain:1.0", + "kinozal-template@yourdomain:1.1", + "kinozal-template@yourdomain:1.2", + "{82c31999-6f24-4c2c-a9ce-4afe9b1e4a6c}:1.0", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.12.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.17.1129" ] }, - "schema": 1775932580651, + "schema": 1764441384369, "key_format": "{guid}:{version}", - "stash_time": 1775954105334, - "id": "756a54c8-249c-409d-8151-77bd245c7e7c", - "last_modified": 1775954180576 + "stash_time": 1764462906841, + "id": "7cd35189-072c-4019-b814-07dbd614761e", + "last_modified": 1764462988045 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "kura@meshpeak.net:0.1.0", - "kura@meshpeak.net:0.2.0", - "kura@muraoka.dev:0.1.0", - "dmm-doujin-enhancer@example.com:1.5.3", - "dmm-doujin-enhancer@example.com:1.5.2", - "dmm-doujin-enhancer@example.com:1.5.1", - "corretor.app.onlinetechsolucoes@gmail.com:1.0.2", - "corretor.app.onlinetechsolucoes@gmail.com:1.0.3", - "contact@vantly.fr:1.2.1", - "{6ea53a1a-2edc-4073-871a-62404084508d}:1.0", - "{6ea53a1a-2edc-4073-871a-62404084508d}:1.1", - "{6ea53a1a-2edc-4073-871a-62404084508d}:1.2", - "{6ea53a1a-2edc-4073-871a-62404084508d}:1.3", - "favory@sp4ce.pw:4.0.0.6", - "favory@sp4ce.pw:4.0.0.8", - "favory@sp4ce.pw:4.0.0.9", - "favory@sp4ce.pw:4.0.1", - "favory@sp4ce.pw:4.0.2", - "folded@uintptr:0.9.0", - "favory@sp4ce.pw:4.0.3", - "favory@sp4ce.pw:4.0.4", - "{1052fd8f-f278-4c57-8045-217169233803}:1.0.0", - "{1052fd8f-f278-4c57-8045-217169233803}:1.0.1", - "{1052fd8f-f278-4c57-8045-217169233803}:1.0.2", - "{1052fd8f-f278-4c57-8045-217169233803}:2.0.0", - "{1052fd8f-f278-4c57-8045-217169233803}:2.0.1", - "save-to-ikbenjaap@ikbenjaap.com:1.0", - "{bd5e74d8-66e8-4bdb-9a05-bc370a326051}:1.0.0", - "{bd5e74d8-66e8-4bdb-9a05-bc370a326051}:1.0.1", - "{bd5e74d8-66e8-4bdb-9a05-bc370a326051}:1.0.2", - "mini-virtual-keyboard@localdev:1.0", - "{b7bb95b4-216d-4497-ab67-f124b183ec8f}:0", - "paperyoga@lezdu.it:1.1", - "image-link-collector@bitbooster.de:1.1", - "image-link-collector@bitbooster.de:1.2", - "gallery-dl-post-opener@bitbooster.de:1.0", - "hsgallery-dl@holger:1.0", - "{aa17c962-543c-4723-9a40-e593e8ef5345}:1.0", - "{aa17c962-543c-4723-9a40-e593e8ef5345}:2.0", - "kindle-sync-extension@readshape.com:1.0.0", - "kindle-sync-extension@readshape.com:1.0.1", - "kindle-sync-extension@readshape.com:1.1.0", - "focus-redirect@local.dev:1.0" + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.14.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.15.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.16.1129", + "dashboardplus@starlight-symposium.neocities.org:1.9.2", + "messenger.tabpop@fluke667.me:0.1", + "tabpop@fluke667.me:0.2", + "tabpop@fluke667.me:0.4", + "track-package@example.com:1.0.3", + "{95decd0f-9660-4820-90a4-46400c25d2dd}:1.0", + "{95decd0f-9660-4820-90a4-46400c25d2dd}:2.0" ] }, - "schema": 1775910991620, + "schema": 1764419781181, "key_format": "{guid}:{version}", - "stash_time": 1775932505170, - "id": "6e0fff79-3028-4c6a-8d2f-54839f2ad4f8", - "last_modified": 1775932580364 + "stash_time": 1764441306580, + "id": "9be75452-6ee0-4d47-93c4-f1fe069440f6", + "last_modified": 1764441384204 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "ticket-helper@talal-jalal.local:0.2.3", - "mylittletiger@antlm.com:1.0.0", - "mylittletiger@antlm.com:1.0.1", - "{e78c4eeb-fddf-4b69-b069-d91e473f6084}:1.0", - "{e78c4eeb-fddf-4b69-b069-d91e473f6084}:1.0.1", - "fargam-helper@example.com:1.0.11", - "littletiger@antlm.com:1.0.2", - "mycutelittletiger@antlm.com:1.0.1", - "{465a0545-afc2-4d6c-a60e-7dd1c1b7d242}:1.0", - "xenontranslate@xenonium:1", - "{e18ffb18-8d6f-4dfe-a336-b0af49a6ca8b}:26.4.10", - "slim-tab-dash@extrakits.example:5.23.18", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.3", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.4", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.5", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.6", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.7", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.8", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.9", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.10", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.11", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.12", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.13", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:0.1.14", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:1.0.0", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:1.1.0", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:1.1.1", - "{955787d0-eb12-4903-86bc-0f8c49545c68}:1.1.2" + "{da8b830c-53dd-4d0e-88c7-522fcc0f6bc1}:4.0", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.11.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.7.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.8.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.9.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.10.1129", + "{5cc1d8c1-e443-4816-bd41-4da2c6760088}:1.0", + "{c2c88180-2036-496d-855e-4248ac18c8f8}:1.0", + "{15320dea-72e0-4817-97a5-ce7c785da9fe}:1.0", + "{db516bc3-963f-45ef-886f-8f3896dc8a94}:1.0", + "{36117922-a298-46f1-aa20-3ba4ca8cd81f}:1.0", + "{bc918d90-d8b4-4e4b-ae01-7637223abd00}:1.0", + "{cd762133-0135-41d7-9e36-d4c7ebc3884a}:1.0", + "{cd762133-0135-41d7-9e36-d4c7ebc3884a}:2.0", + "{f6076090-0f37-4ffa-a237-49ae4197b755}:1.0", + "{f7fc0e48-557a-4eaf-9ea9-f8bd781481eb}:1.0", + "{b0c463a3-d77c-485e-8c38-c57d3978e94a}:1.0", + "{d81d243d-d115-467b-b5ea-fe97146d323a}:1.0", + "{d81d243d-d115-467b-b5ea-fe97146d323a}:2.0", + "{d81d243d-d115-467b-b5ea-fe97146d323a}:3.0", + "{d81d243d-d115-467b-b5ea-fe97146d323a}:4.0", + "{80c0ecff-1625-4d2a-a26b-fcae20c0f737}:1.3.2", + "{03b9bb3e-5a01-439c-ab4a-58f0e30bc236}:3.6.1", + "Android@bravenhancer.com:20.4.3", + "enhancer@goldenfox.com:20.4.3", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.13.1129", + "modify-http-headers-2@devu:1.0.0", + "modify-http-headers-2@devu:1.0.1", + "modify-cookie-expiration@devu:1.0.0", + "modify-cookie-expiration@devu:1.1.0" ] }, - "schema": 1775889385994, + "schema": 1764398185121, "key_format": "{guid}:{version}", - "stash_time": 1775910906931, - "id": "85040588-7399-4cc8-b6dd-f46cdde8aa48", - "last_modified": 1775910991363 + "stash_time": 1764419705597, + "id": "15543df9-723f-4550-9ddb-f2f568798b88", + "last_modified": 1764419780977 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{87ab702d-53a2-49ef-813f-4ef05b96e2b7}:0.1.0", - "{20fa8528-587f-483d-9186-3a6dea23f8f4}:1.0", - "kemono-checker@pietrouni.com:1.2.0", - "claude-usage-monitor@extension:1.1.0", - "claude-usage-monitor@extension:1.2.0" + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.1", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.4", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.5", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.1128", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.11280", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.11281", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.11283", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.0.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.1.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.2.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.3.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.5.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.4.1129", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.6.1129", + "copy-address-as-markdown-link-extension@swierk.me:1.0.0", + "{32aaa43c-2884-40af-af82-3220d100547e}:1.2", + "etsy-scraper@tinnguyendev.com:1.0", + "{a8c047e2-ca24-40df-9ae7-0c6321e84c50}:1.0", + "{a8c047e2-ca24-40df-9ae7-0c6321e84c50}:1.0.1", + "{a8c047e2-ca24-40df-9ae7-0c6321e84c50}:1.0.2", + "{a8c047e2-ca24-40df-9ae7-0c6321e84c50}:1.0.3", + "dashboardplus@starlight-symposium.neocities.org:1.9.0", + "dashboardplus@starlight-symposium.neocities.org:1.8.4", + "dashboardplus@starlight-symposium.neocities.org:1.8.3", + "dashboardplus@starlight-symposium.neocities.org:1.8.2", + "dashboardplus@starlight-symposium.neocities.org:1.8.1", + "dashboardplus@starlight-symposium.neocities.org:1.9.1", + "dashboardplus@starlight-symposium.neocities.org:1.8.0", + "dashboardplus@starlight-symposium.neocities.org:1.7.3", + "dashboardplus@starlight-symposium.neocities.org:1.7.2", + "dashboardplus@starlight-symposium.neocities.org:1.7.0", + "dashboardplus@starlight-symposium.neocities.org:1.6.0", + "dashboardplus@starlight-symposium.neocities.org:1.5.3", + "dashboardplus@starlight-symposium.neocities.org:1.7.1", + "dashboardplus@starlight-symposium.neocities.org:1.5.2", + "dashboardplus@starlight-symposium.neocities.org:1.5.1", + "dashboardplus@starlight-symposium.neocities.org:1.5.0", + "dashboardplus@starlight-symposium.neocities.org:1.4.4", + "dashboardplus@starlight-symposium.neocities.org:1.4.3", + "dashboardplus@starlight-symposium.neocities.org:1.4.2", + "dashboardplus@starlight-symposium.neocities.org:1.4.1", + "dashboardplus@starlight-symposium.neocities.org:1.4.0", + "dashboardplus@starlight-symposium.neocities.org:1.3.3", + "dashboardplus@starlight-symposium.neocities.org:1.3.2", + "dashboardplus@starlight-symposium.neocities.org:1.3.1", + "dashboardplus@starlight-symposium.neocities.org:1.2.3", + "dashboardplus@starlight-symposium.neocities.org:1.2.4", + "dashboardplus@starlight-symposium.neocities.org:1.2.2", + "dashboardplus@starlight-symposium.neocities.org:1.2.1", + "dashboardplus@starlight-symposium.neocities.org:1.2.0", + "dashboardplus@starlight-symposium.neocities.org:1.1.0", + "dashboardplus@starlight-symposium.neocities.org:1.0.1", + "dashboardplus@starlight-symposium.neocities.org:1.0", + "dashboardplus@starlight-symposium.neocities.org:1.3.0" ] }, - "schema": 1775867781535, + "schema": 1764382538733, "key_format": "{guid}:{version}", - "stash_time": 1775889305687, - "id": "54b55482-8f5f-42a6-a76c-447ec05a233b", - "last_modified": 1775889385692 + "stash_time": 1764398105973, + "id": "18be5ff1-950e-4a51-8149-0eb95440e70b", + "last_modified": 1764398184829 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{f8357cbc-dc57-4ed7-a07d-236d899d4100}:1.0", - "{f8357cbc-dc57-4ed7-a07d-236d899d4100}:2.0", - "{da447f4f-1e2f-482e-ad1a-cb63f0862566}:2.1.2", - "phishguard@forensics.local:2.9.37", - "{34f46c90-8190-4bae-a2da-617fb8484aa0}:9.3.1", - "{a9624e24-088d-497d-a669-784623fc8a6b}:1.1.7", - "{d9a9052d-63be-46c7-bb23-c2cd0423684c}:5.0.0", - "{d9a9052d-63be-46c7-bb23-c2cd0423684c}:5.0.2", - "{d9a9052d-63be-46c7-bb23-c2cd0423684c}:5.0.3", - "{d9a9052d-63be-46c7-bb23-c2cd0423684c}:5.0.4", - "{d9a9052d-63be-46c7-bb23-c2cd0423684c}:5.0.5", - "{d9a9052d-63be-46c7-bb23-c2cd0423684c}:5.0.6", - "{d9a9052d-63be-46c7-bb23-c2cd0423684c}:5.0.7", - "{036478a5-e97c-4a41-b33f-6a2f91a0f485}:1.2.0", - "youtube-timestamp@local:1.0", - "youtube-timestamp@local:1.1", - "youtube-timestamp@local:2.3", - "moz-addon-prod-bysonik@7tv.app:3.1.20", - "{11e95233-7595-4ad7-9054-3bdb7bd876a3}:1.0.0", - "{11e95233-7595-4ad7-9054-3bdb7bd876a3}:1.0.1", - "{11e95233-7595-4ad7-9054-3bdb7bd876a3}:1.0.2", - "noble-quetzal-airtm-android@noblequetzal.local:1.5.0", - "noble-quetzal-airtm-android@noblequetzal.local:1.4.1", - "noble-quetzal-airtm-android@noblequetzal.local:1.4.0", - "noble-quetzal-airtm-android@noblequetzal.local:1.3.7", - "noble-quetzal-airtm-android@noblequetzal.local:1.3.6", - "noble-quetzal-airtm-android@noblequetzal.local:1.3.4", - "noble-quetzal-airtm-android@noblequetzal.local:1.3.3", - "noble-quetzal-airtm-android@noblequetzal.local:1.3.2", - "noble-quetzal-airtm-android@noblequetzal.local:1.3.1", - "noble-quetzal-airtm-android@noblequetzal.local:1.2.9", - "noble-quetzal-airtm-android@noblequetzal.local:1.2.8", - "noble-quetzal-airtm-android@noblequetzal.local:1.2.7", - "noble-quetzal-airtm-android@noblequetzal.local:1.2.4", - "noble-quetzal-airtm-android@noblequetzal.local:1.2.2", - "noble-quetzal-airtm-android@noblequetzal.local:1.2.1", - "musictools@stroumbakis.com:1.0.12", - "subtitles-downloader@subtiltee.com:2.6.8", - "octopus@xploit.us:11.12.4", - "cb0911f9-0d4c-4210-a70d-fa40b98b9ed0@m3u8-sniffer:2.4", - "m3u8-sniffer@recorder:2.4", - "yarsulikmusic@gmail.com:3.1", - "yarsulikmusic@gmail.com:3.0" + "nlfgmdembofgodcemomfeimamihoknip@chrome-store-foxified--1895366015:18.1.17.2203", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.4", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.5", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.0", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.2.3", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.2.4", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.2.5", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.2.6", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.2.7", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.2.8", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.2.9", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.1", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.2", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.3", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.7", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.8", + "{bb4108bb-c106-417d-b1ac-f9d58daa6c38}:1.3.9", + "jellyfin-imdb-folder-namer@agroqirax.io:1.1", + "{dc5f5d17-0a0b-4576-b146-e92e5df164ac}:1.0.0" ] }, - "schema": 1775846184499, + "schema": 1764354980106, "key_format": "{guid}:{version}", - "stash_time": 1775867705590, - "id": "bff6358f-4caa-4a61-aedb-971647241695", - "last_modified": 1775867781081 + "stash_time": 1764376508425, + "id": "93e0b854-0855-4679-b61d-41d266581372", + "last_modified": 1764376599958 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "product-price-sorter@example.com:1.0.0", + "product-price-sorter@example.com:1.0.1", + "{0d31c76b-ac9d-43d8-9438-e98895e9b208}:1.0", + "@insightshub_sinrefresh:1.0", + "@insightshub:1.0", + "{21582b0f-8441-4108-89ae-7ea688f905e5}:1.0" + ] + }, + "schema": 1764333393975, + "key_format": "{guid}:{version}", + "stash_time": 1764354905516, + "id": "d1174336-33ff-4c13-b0df-2f0b3def9898", + "last_modified": 1764354979919 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "worklogcreator@bujacek.sk:0.1", + "worklogcreator@bujacek.sk:0.1.1", + "worklogcreator@bujacek.sk:0.1.2", + "worklogcreator@bujacek.sk:0.1.3", + "worklogcreator@bujacek.sk:0.1.4", + "{ff967d43-43fc-48d0-9048-173d6041bfd1}:1.0.0", + "{ff967d43-43fc-48d0-9048-173d6041bfd1}:1.0.1", + "{ff967d43-43fc-48d0-9048-173d6041bfd1}:1.0.2", + "{ff967d43-43fc-48d0-9048-173d6041bfd1}:1.0.3", + "{ff967d43-43fc-48d0-9048-173d6041bfd1}:1.0.4", + "{ff967d43-43fc-48d0-9048-173d6041bfd1}:1.0.5", + "{ff967d43-43fc-48d0-9048-173d6041bfd1}:1.0.6", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.2", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.3", + "{0b4c096d-ffdd-40c6-822d-cb0e62f07108}:1.0.0", + "{ff40d649-ffc9-49ee-bed7-24144d2ed0b2}:0.0.2", + "{0f1948f1-0165-461e-bacd-db2fae5f5bee}:1.0", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.1", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.2alpha1", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.2alpha2", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.2alpha3", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.3alpha1", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.3alpha2", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.3", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.4", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.5", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.6", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.6local", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.7", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.8", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.9", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.10", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.11", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.12", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.13", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.14", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.15", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.16", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.17", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.18", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.21", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.22", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.23", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.24", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.25", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.26", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.27", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.28", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.29", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.30", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.31", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.32", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.33", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.34", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.35", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.36", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.37", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.38", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.39", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.40", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.41", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.42", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.43", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.44", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.45", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.46", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.47", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.48", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.49", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.50", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.51", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.0.52", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.0", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.1", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.2", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.3", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.4", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.5", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.6", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.7", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.8", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.9", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.10", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.11", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.12", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.13", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.14", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.15", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.16", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.17", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.18", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.19", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.20", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.1.21", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.163", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.164", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.165", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.166", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.167", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.168", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.169", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.170", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.171", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.172", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.173", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.174", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.175", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.176", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.1", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.2", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:0.2.3", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.4", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.5", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.6", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.7", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.8", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.9", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.10", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.11", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.12", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.13", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.14", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.15", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.16", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.17", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.21", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.22", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.23", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.24", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.25", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.26", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.27", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.28", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.29", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.30", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.31", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.32", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.33", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.34", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.35", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.36", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.37", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.38", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.39", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.40", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.41", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.42", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.43", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.44", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.45", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.46", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.47", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.48", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.49", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.50", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.51", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.52", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.53", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.54", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.55", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.56", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.57", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.58", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.59", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.60", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.61", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.62", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.63", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.0", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.73", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.79", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.81", + "{30a330bd-39ee-4479-8b17-54ae7a7eb42f}:2.0.82", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:0.1.2", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:0.1.6", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:0.1.17", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:2.0.0", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:2.1.2", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:2.1.3", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:2.1.4", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:2.2.1", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:2.2.6", + "{3bd180da-2e97-409c-8ecc-ad59c9f1754e}:2.3.0", + "sergiu@graphlings.co:1.0", + "sergiu@graphlings.co:1.1" + ] + }, + "schema": 1764311792360, + "key_format": "{guid}:{version}", + "stash_time": 1764333306297, + "id": "83a08916-42f8-4a6b-9518-f3790e49398b", + "last_modified": 1764333393796 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{8bf611c0-379e-4580-b2c9-935a52a426b4}:1.0", + "timer-open@example.com:1.0", + "@Youtube-Playlist-Save-Button:1.0" + ] + }, + "schema": 1764296145305, + "key_format": "{guid}:{version}", + "stash_time": 1764311707141, + "id": "f17ba3eb-ad83-4f32-b9ac-dd847ca01830", + "last_modified": 1764311792191 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "ragbot@jsteurer.de:1.0", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b70}:1.0.0", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b70}:1.0.1", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b70}:1.0.2", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b70}:1.0.3", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b70}:1.0.4", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b70}:1.0.5", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b70}:1.0.6", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.1", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.2", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.3", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.4", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.5", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.6", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.7", + "faster-pull-request-gotestingspace@gmail.com:0.0.0.8", + "videoframecapture@example.com:1.0", + "transaction@guardianchain.app:3.1", + "transaction@guardianchain.app:5.0", + "transaction@guardianchain.app:6.0", + "transaction-v7@guardianchain.app:7.0", + "transaction-v5@guardianchain.app:6.4", + "transaction-v4@guardianchain.app:6.2", + "transaction-debug@guardianchain.app:6.1", + "transaction@guardianchain:2.9", + "guardianchain@crazy.com:6.2", + "tmo-cascade-redirect@personal-use.com:1.0", + "Android@bravenhancer.com:20.4.0", + "enhancer@goldenfox.com:20.4.0", + "tabpocket@mechanikadesign.com:0.1.3", + "{a38d6aab-d0c7-4a0f-8dae-388a72de389c}:0.1.3", + "feedback@mechanikadesign.com:0.1.2", + "Android@bravenhancer.com:20.4.2", + "enhancer@goldenfox.com:20.4.2" + ] + }, + "schema": 1764268595567, + "key_format": "{guid}:{version}", + "stash_time": 1764290105228, + "id": "49412d5c-9211-4ec4-a3f0-d2eb71a620ff", + "last_modified": 1764290182588 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "nobody@nobody.nb:1.0", + "nobody@nobody.nb:1.1", + "myfasttheme@local.test:1.0", + "{753c8baf-ca01-48ba-80ca-371aec8a034a}:0.0.1", + "@Auto-Refresh-Extension:1.4", + "405984679@qq.com:2.0", + "93bc012a-dedd-4e40-bb34-b5888524346c@ac2000:1.1", + "93bc012a-dedd-4e40-bb34-b5888524346c@ac2000:1.0", + "93bc002a-dedd-4e40-bb24-b5888524346c@ac2000:1.0", + "93bc002a-dedd-4e40-bb24-b5888524346c@ac2000:1.1", + "{57bd0ce0-30ba-4507-afde-4780c4e47c11}:1.0", + "support@mechanikadesign.com:0.1.1", + "support@mechanikadesign.com:0.1.0", + "support@mechanikadesign.com:1.0.0" + ] + }, + "schema": 1764246994468, + "key_format": "{guid}:{version}", + "stash_time": 1764268506620, + "id": "2426f005-855c-45f8-99d0-4fa48248f879", + "last_modified": 1764268595453 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{5e594c8b-f823-4c11-bc83-b1cf4ec79a07}:2.2", + "{5e594c8b-f823-4c11-bc83-b1cf4ec79a07}:12.0", + "{5e594c8b-f823-4c11-bc83-b1cf4ec79a07}:13", + "{a08e22d5-4675-48bc-8efa-6d0c39e8e001}:13.0", + "{a08e22d5-4675-48bc-8efa-6d0c39e8e001}:12.0", + "{a08e22d5-4675-48bc-8efa-6d0c39e8e001}:13.1", + "{a08e22d5-4675-48bc-8efa-6d0c39e8e001}:13.2", + "timer-open-page@example.com:1.0", + "{ea2ad5bc-e458-414d-8565-5cfe9f7cf1b3}:1.20.1.23", + "{ea2ad5bc-e458-414d-8565-5cfe9f7cf1b3}:1.20.1.30", + "{c452ae16-8cd7-4cde-8f40-3183f3894b71}:1.0", + "chronio-url-saver@chronioapp.com:1.1.0", + "chronio-url-saver@chronioapp.com:1.0", + "table-copy-ff@example.com:1.0", + "areumsec@pranaywajjala.com:1.0.1" + ] + }, + "schema": 1764225396658, + "key_format": "{guid}:{version}", + "stash_time": 1764246907060, + "id": "fa47de9c-eb95-43b8-874c-36286c6b3050", + "last_modified": 1764246994245 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{3e5960dc-ad94-418f-9361-9a7b3c73e673}:1.0", + "{86bc8e20-4af2-4b0f-90a5-687b38b85507}:1.0.0", + "{4aaca136-fc9d-4854-9067-a92aabeccd0f}:1.0", + "{41b0127b-c011-48a9-9972-fd604e871352}:1.0", + "yt-twitch-chat-toggle@mkeefeus.github.io:1.0.0", + "{5d0a58cd-5832-495f-b7ac-c01c6616711b}:1.0", + "{455aed2e-eb0a-488d-8596-f5519bfb1de0}:1.0", + "{8a267792-1b0f-484a-a20f-8f8da4e55762}:1.0", + "{59f27ff8-ae64-4bac-bffa-3d23eb37cc72}:1.0", + "{2a105022-8940-4d1b-bf54-5436f65be5bd}:1.0", + "readinshort@example.com:1.0", + "readinshort@example.com:1.0.1", + "readinshort@example.com:1.0.2", + "readinshort@example.com:1.1.3", + "{9a038b53-2e56-4d03-b7d6-39238c63a78e}:1.0", + "@giseo-helper:1.0", + "{0b3e6b2d-e11a-43b3-8d01-bc6faaca7133}:2.2.6" + ] + }, + "schema": 1764209743671, + "key_format": "{guid}:{version}", + "stash_time": 1764225307037, + "id": "fcdba844-e8eb-485d-ab66-b5762d6f827d", + "last_modified": 1764225396546 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{e2d103a3-e83f-4124-96d3-136174ef8186}:1.0", + "bigecpfecdjhlpajhopjadjdhaimabfi@chrome-store-foxified--1958145764:1.0.2", + "{1c4f3789-c316-47a9-8c08-4550697f9e71}:1.0.0", + "{1c4f3789-c316-47a9-8c08-4550697f9e71}:1.0.1", + "{1c4f3789-c316-47a9-8c08-4550697f9e71}:1.0.2", + "{1c4f3789-c316-47a9-8c08-4550697f9e71}:1.0.3", + "nlfgmdembofgodcemomfeimamihoknip@chrome-store-foxified--1958145764:18.2.16.2048", + "{7f3a9c2b-4d8e-4f1a-b5c6-9e2d1a8f4b7c}:1.0.0", + "makusi-quiz@example.com:0.2.0", + "{1e0c178e-4df0-47cc-854a-09a182359494}:3.9.1", + "{1e0c178e-4df0-47cc-854a-09a182359494}:1.0", + "enhancementsuite@e926.net:0.1", + "enhancementsuite@e926.net:0.2", + "enhancementsuite@e926.net:1.0", + "enhancementsuite@e926.net:2.0", + "enhancementsuite@e926.net:3.0", + "tabmaster@yourdomain.com:1.0.0", + "{2222b75f-a2c4-436e-9fe3-2781b986b864}:1.0.0", + "hide-blur-overlay@my-site:3.0" + ] + }, + "schema": 1764182192875, + "key_format": "{guid}:{version}", + "stash_time": 1764203705613, + "id": "2ecb0a26-1867-4d7c-947d-71df46ca33d6", + "last_modified": 1764203779770 }, { "stash": { "blocked": [ - "taskpilot@taskpilot.com:1.1", - "richard.hall20021965bs@outlook.com:1.2" + "mark.carter20111960ds@outlook.com:1.0.1" ], "unblocked": [], "softblocked": [ - "yanima-shiki-integration-unlisted1@example.com:2.5.1", - "miata-hunter-63ecd7c9@nanaimo.extension:1.5", - "miata-hunter-b17bf592@nanaimo.extension:1.3", - "miata-hunter-bc@personal.extension:1.3", - "miata-hunter@local:1.0", - "tiktok-live-share---like---developer-4e6145c08f7b@example.com:1.0", - "tiktok-live-share---like---developer-4e6145c08f7b@example.com:1.2", - "tiktok-live-share---like---developer-4e6145c08f7b@example.com:1.3", - "tiktok-live-share---like---developer-4e6145c08f7b@example.com:1.4", - "tiktok-live-share---like---developer-4e6145c08f7b@example.com:1.5", - "tiktok-live-share---like---developer-4e6145c08f7b@example.com:1.6", - "{9bbc366a-b286-4308-bce6-1b1d6c0132a9}:1.5.8", - "{c894ea03-ee1a-43cd-8c2e-c5385c3d6229}:2.5.13", - "{026c2012-f51a-48f8-bb39-9ba8bb541c1c}:1.5.2", - "better-roblox-badges@sleezzi.fr:1.0.7", - "owa-opener@copperascovetx.gov:1.0.5", - "test-module@titou.fr.nf:2.9", - "{e42ca9c5-a33d-4d69-a89f-577bf0b36e61}:0.5.1", - "testpilot@rabbitxone.com:5.2", - "{b5ac1f84-b880-442e-9e5e-807b798673be}:1.0", - "youtube-subs-to-videos@local:1.0", - "{51633b43-dda2-4993-a568-7125f160e598}:0.2.1", - "{51633b43-dda2-4993-a568-7125f160e598}:0.2.2", - "moz-addon-prod-notwitchtv@7tv.app:3.0.9", - "{44e5c973-c556-4dbc-93dd-b44788a568a1}:1.0", - "{44e5c973-c556-4dbc-93dd-b44788a568a1}:1.1", - "{44e5c973-c556-4dbc-93dd-b44788a568a1}:1.2", - "{44e5c973-c556-4dbc-93dd-b44788a568a1}:1.3" + "@duplicate_tab_button:0.4", + "comment-lesson@theller.posteo.de:1.4.2", + "{a7da4615-2637-4ab1-87df-5399c6b80857}:1.0", + "ItsTits@PeppaPig.knorr:1.0", + "ItsTits@PeppaPig.knorr:1.1", + "{c32bffe6-165c-462e-b33c-9b3de2eb0fdc}:1.0", + "{c32bffe6-165c-462e-b33c-9b3de2eb0fdc}:1.1resigned1", + "{e2b544cd-537a-458a-89c4-6048839be2aa}:1.0", + "{fab5e35f-f80e-4ab9-b473-a0a4093a9031}:1.1", + "addontest918@testexample.com:0.0.1", + "magnolia@12.34:4.2.5.2", + "mosa.albedre3@gmail.com:2.0" ] }, - "schema": 1775824582566, + "schema": 1764160592167, "key_format": "{guid}:{version}", - "stash_time": 1775846107545, - "id": "97c48161-da17-47ed-9699-1f402fe90cb4", - "last_modified": 1775846184229 + "stash_time": 1764182107747, + "id": "302e31ab-98e3-4860-ae7f-4f7fba8ba550", + "last_modified": 1764182192367 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "cardinal@codeword.info:1.0.0", + "youtube-link-extractor@fast.com:1.0", + "info@cdn0x12.dev:1.1.0", + "info@cdn0x12.dev:1.0.1", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.1.0", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.9", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.8", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.7", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.6", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.5", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.1", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.2", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.3", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.0.4", + "Android@bravenhancer.com:20.3.7", + "enhancer@goldenfox.com:20.3.7", + "93bc002a-dddd-4e40-bb24-b5888524346c@ac2000:1.0", + "93bb002a-dddd-4e40-bb24-b5888524346c@ac2000:1.0", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.1.1", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.1.2", + "{a3e0b7bc-fba7-4451-a380-bee22a7254c9}:1.1.3", + "cloudtalk-click-to-call@cloudtalk.io:5.1.4", + "{9243aeff-7a72-4abe-a7a7-2c547b32b2dd}:5.33" + ] + }, + "schema": 1764138980253, + "key_format": "{guid}:{version}", + "stash_time": 1764160505430, + "id": "5292a077-558a-412b-a683-fd9f8fba1d50", + "last_modified": 1764160583657 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "ltvpn@org:1.0.3", + "ltvpn@org:1.0.3.1", + "ltvpn@org:1.0.3.2" + ] + }, + "schema": 1764123343024, + "key_format": "{guid}:{version}", + "stash_time": 1764138905096, + "id": "f3e788de-c0ee-417e-8867-954f0b113e4d", + "last_modified": 1764138980024 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{d6f8c7e0-9a1b-4c3d-8e2f-5a6b7c8d9e0f}:0.8.0", + "aws-role-switcher@example.com:0.2.0", + "@utilitator:0.0.2", + "dangs-youtube-advert-blocker@example.com:6", + "dangs-youtube-advert-blocker@example.com:51", + "prompt-pilot@example.com:1.0", + "conrep-content-capture@conrep.com:1.0.0", + "tubearchivist-hr@srinivas.gs:1.0.0", + "tubearchivist-hr@srinivas.gs:2.0.0", + "tubearchivist-hr@srinivas.gs:3.0.0" + ] + }, + "schema": 1764095785506, + "key_format": "{guid}:{version}", + "stash_time": 1764117305614, + "id": "4f3418ff-fb0b-41e7-93c4-426c9efa1ca4", + "last_modified": 1764117384224 }, { "stash": { "blocked": [ - "{b0aad83c-24c6-484b-ac91-9afae1f1358c}:1.3.1", - "{b0aad83c-24c6-484b-ac91-9afae1f1358c}:1.4.0", - "{2a56b6f5-8905-4670-9adc-4fafadfc171c}:1.3", - "{2a56b6f5-8905-4670-9adc-4fafadfc171c}:2.1.6", - "{35d84706-f9b0-4015-95c1-0ba93125f008}:1.2", - "{35d84706-f9b0-4015-95c1-0ba93125f008}:7777773.1.1", - "{419924a7-6095-476e-9ef8-fdad4a3e8794}:1.1", - "{419924a7-6095-476e-9ef8-fdad4a3e8794}:6.0.0", - "{a56b1237-2585-4212-aed0-b5894cc5721e}:1.1", - "{a56b1237-2585-4212-aed0-b5894cc5721e}:7.5.6", - "{b90d85d2-5f4f-488f-aa72-e4e803280f34}:1.3", - "{b90d85d2-5f4f-488f-aa72-e4e803280f34}:99992.3.0", - "{cf05ddf3-6dbc-4ac6-8e9e-659818fb949a}:1.3", - "{cf05ddf3-6dbc-4ac6-8e9e-659818fb949a}:8.5.3", - "requestblocker-w7c4x9m1@privax.net:1.0", - "requestblocker-w7c4x9m1@privax.net:143.10.10", - "{8a2efbc0-c994-4c6a-b114-cb2ed9179875}:1.3.0", - "{9b054de4-9134-43e2-9f55-662672169cf3}:1.2.0", - "{2f9e2a64-9d04-4232-a518-258ceb9a9677}:1.1.0", - "bright-tool-map@quickext.example:7.25.5", - "bright-tool-map@quickext.example:8.25.6" + "{d94ea2b2-c7ca-4f15-8912-f9fb294e4203}:1.0.0" + ], + "unblocked": [], + "softblocked": [ + "google-hk-blocker@your-email.com:1.0", + "google-hk-blocker@your-email.com:1.1", + "@yt-declutterer:1.0", + "Android@bravenhancer.com:20.2.5", + "enhancer@goldenfox.com:20.2.5", + "Android@bravenhancer.com:20.3.2", + "enhancer@goldenfox.com:20.3.2", + "enhancer@goldenfox.com:20.3.3", + "Android@bravenhancer.com:20.3.3", + "Android@bravenhancer.com:20.3.5", + "enhancer@goldenfox.com:20.3.5", + "calmness@lazarrew.dev:1.1" + ] + }, + "schema": 1764083616514, + "key_format": "{guid}:{version}", + "stash_time": 1764095705569, + "id": "18f70ee2-f6a6-489f-b299-22da488aa6fc", + "last_modified": 1764095785352 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "mbniclmhobmnbdlbpiphghaielnnpgdp@chrome-store-foxified--36396496:6.2.4", + "{916b0889-b6a3-4b30-9d68-ae6b8f7347bf}:1.0", + "{76dad2bc-1688-49c8-b155-c4fc1f7ac3ea}:1.0", + "{3c0083f5-a41a-49f7-9741-8ce675bc9b5e}:1.0.2", + "voicepresso-password-manager@voicepresso.com:1.4.2", + "k6341332@gmail.com:1.4", + "{d20e6c2b-801f-41bb-916f-1070afa26c36}:1.0" + ] + }, + "schema": 1764036945560, + "key_format": "{guid}:{version}", + "stash_time": 1764074106250, + "id": "0b6af3d2-ef62-4a74-abfc-cd7c6765696b", + "last_modified": 1764074189669 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "text-expander@yourdomain.com:3.2.2", + "text-expander@yourdomain.com:3.2.0" + ] + }, + "schema": 1764017147571, + "key_format": "{guid}:{version}", + "stash_time": 1764030906369, + "id": "47ad3917-7fac-42ec-8751-7f6b5b519ac5", + "last_modified": 1764030987393 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{a6d48860-51cf-42e4-9c63-6c2469ad66b0}:1.0", + "{7f174d0f-3352-43cf-b1e1-e18ca697b44c}:0.0.2", + "{7f174d0f-3352-43cf-b1e1-e18ca697b44c}:0.0.2.1", + "{7f174d0f-3352-43cf-b1e1-e18ca697b44c}:0.0.3", + "{7f174d0f-3352-43cf-b1e1-e18ca697b44c}:0.0.4", + "snigelmailen@snigelmailen.se:1.0", + "snigelmailen@snigelmailen.se:1.1", + "{e6691303-419f-4a63-b2c0-e446a0fc5b69}:1.1", + "bulletbase@pushbullet.extension:1.0.2", + "{88a8281f-b6a4-45f3-bc63-3e1b9d352e46}:1.2.4", + "homepage-personalizzata@user.xpi:5.2" + ] + }, + "schema": 1764000964038, + "key_format": "{guid}:{version}", + "stash_time": 1764009307478, + "id": "f7726510-ab71-4e86-b73b-e2190ab61a7b", + "last_modified": 1764009397357 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "lurkandloiter@github.com:1.0", + "lurkandloiter@github.com:1.1", + "lurkandloiter@github.com:2.0", + "bb6ab812-6c86-4791-a115-44c1cb3ccc90@ac2000:1.0", + "93bb002a-dddd-4e40-bb24-b5888524346b@ac2000:1.0", + "zero@zero.com:1.0", + "zero@zero.com:1.0.1", + "zero@zero.com:1.0.2", + "zero@zero.com:1.0.3", + "zero@zero.com:1.0.4", + "zero@zero.com:1.0.5", + "zero@zero.com:1.0.6", + "zero@zero.com:1.0.7", + "zero@zero.com:1.0.8", + "zero@zero.com:1.0.9", + "zero@zero.com:1.0.10", + "zero@zero.com:1.0.11", + "zero@zero.com:1.0.12", + "zero@zero.com:1.0.13", + "zero@zero.com:1.0.14", + "zero@zero.com:1.0.15", + "zero@zero.com:1.0.16", + "zero@zero.com:1.0.17", + "zero@zero.com:1.0.18", + "zero@zero.com:1.1.0", + "zero@zero.com:1.1.1", + "zero@zero.com:1.1.2", + "zero@zero.com:1.1.3", + "zero@zero.com:1.1.4", + "zero@zero.com:1.1.5", + "mymoviedb@zero.com:1.0", + "mymoviedb@zero.com:1.0.1", + "mymoviedb@zero.com:1.0.2", + "mymoviedb@zero.com:1.0.3", + "mymoviedb@zero.com:1.0.4", + "mymoviedb@zero.com:2.0.0", + "mymoviedb@zero.com:2.0.1", + "mymoviedb@zero.com:2.0.2", + "mymoviedb@zero.com:2.0.3", + "mymoviedb@zero.com:2.1.1", + "mymoviedb@zero.com:2.1.2", + "mymoviedb@zero.com:2.1.4", + "mymoviedb@zero.com:2.1.5", + "mymoviedb@zero.com:2.1.6", + "mymoviedb@zero.com:2.1.7", + "{42d8bc8a-1a4f-4bd3-97dc-bc3282093f60}:1.0", + "@alea-sesame-time-enhanced:2.8.0", + "{97b42b04-a5b4-4323-95ed-b40b78bb0ab7}:2.2.1", + "propsync@propverse:1.0.3", + "propsync@propverse:1.0.0", + "propsync@propverse:1.0.1", + "propsync@propverse-live:1.0.2" + ] + }, + "schema": 1763966194762, + "key_format": "{guid}:{version}", + "stash_time": 1763987705301, + "id": "b6dfb10c-775e-4bbe-adc6-c208f3c74377", + "last_modified": 1763987781981 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "strava-feed-filter-inc21@github.com:2.3.2", + "@calm-media-downloader:1.0", + "@calm-media-downloader:1.1", + "@calm-media-downloader:1.1.1", + "{0f0f343a-f745-4aec-bc04-632d07becfb4}:1.0" + ] + }, + "schema": 1763950542381, + "key_format": "{guid}:{version}", + "stash_time": 1763966106883, + "id": "5317be85-10b1-4db1-a33b-a78639e3c4ba", + "last_modified": 1763966194407 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "autofullscreen-v2@bruno.tv:2.1", + "autofullscreen@bruno.tv:1.0", + "{36b7f7b8-92cd-4fe0-a53e-3f86d90a6c3c}:12.8.1", + "@basketfi-ppg-column:1.0", + "{665608c0-9d3a-4cfe-a5b6-1740104c952b}:1.0", + "rickroll@unknown.com:1.0", + "minimal-snippet-runner@example:3.1.0", + "youtube-levelup@tn3w:1.0.1", + "{a8f4c9e2-7b3d-4f1a-9c8e-2d5f6a1b3c4e}:2.3.2", + "rms-addon@micromax.com.au:1.0.8" + ] + }, + "schema": 1763922987816, + "key_format": "{guid}:{version}", + "stash_time": 1763944505369, + "id": "a46b84a7-0cb1-4bf3-92c1-5e968e3b20e4", + "last_modified": 1763944579488 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "Android@bravenhancer.com:20.2.0", + "enhancer@goldenfox.com:20.1.8", + "k6341332@gmail.com:1.6", + "send-to-qbittorrent@example.com:1.3.0", + "send-to-qbittorrent-dynamicpaths@dareeo.hu:1.3.0", + "msp2-extension@cbkdz:1.0.13", + "msp2-extension@cbkdz:1.0.17", + "msp2-extension@cbkdz:1.0.14", + "msp2-extension@cbkdz:1.0.11", + "msp2-extension@cbkdz:1.0.12", + "msp2-extension@cbkdz:1.0.6", + "msp2-extension@cbkdz:1.0.5", + "msp2-extension@cbkdz:1.0.8", + "msp2-extension@cbkdz:1.0.4", + "msp2-extension@cbkdz:1.0.18", + "msp2-extension@cbkdz:1.0.15", + "msp2-extension@cbkdz:1.0.3", + "msp2-extension@cbkdz:1.0.19", + "msp2-extension@cbkdz:1.0.20", + "k6341332@gmail.com:1.1", + "insta-auto@veromento.com:2.1", + "magrid-startpage@magrid.com:1.7.3", + "k6341332@gmail.com:1.2", + "k6341332@gmail.com:1.3", + "msp2-extension@cbkdz:1.0.21", + "minimal-snippet-runner@example:2.4.5", + "msp2-extension@cbkdz:1.0.1", + "msp2-extension@cbkdz:1.0.23", + "msp2-extension@cbkdz:1.0.22", + "msp2-extension@cbkdz:1.0.24", + "instagram-progressbar@example.com:1.0" + ] + }, + "schema": 1763901381271, + "key_format": "{guid}:{version}", + "stash_time": 1763922905973, + "id": "50fdcf24-fc43-42c7-b3c1-6a0fce3ff640", + "last_modified": 1763922987622 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "positionner-rouleau@sid.dev:1.0", + "@cuRRyX:1.0.1", + "play-on-house-system@example.com:0.4", + "rg@fmaes.com:1.3", + "Android@bravenhancer.com:20.1.9" + ] + }, + "schema": 1763879789801, + "key_format": "{guid}:{version}", + "stash_time": 1763901304946, + "id": "fdd482f2-cb5d-4f44-92e5-da2301b58b6a", + "last_modified": 1763901381014 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "easyvista-login-addon@luma.local:1.4.0", + "{8f3a6c2d-9b4e-4f7a-b8d1-3c5e9a2f6b7d}:1.0.0" + ] + }, + "schema": 1763864140577, + "key_format": "{guid}:{version}", + "stash_time": 1763879706312, + "id": "4a461e74-2015-408c-ae25-69079ba06582", + "last_modified": 1763879789595 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{0fe7b3a9-18c9-4aca-8dfb-3c39b521b0f8}:1.0", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:5.9.9.8", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:6.0.0.7", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:6.0.0.6", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:6.0.0.5", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:6.0.0.4", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:6.0.0.3", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:6.0.0.2", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:6.0.0.1", + "{e78ea5c1-6253-4ae2-bbb6-dc4ee5aa0054}:5.9.9.9", + "Android@bravenhancer.com:20.1.7", + "enhancer@goldenfox.com:20.1.7", + "Android@bravenhancer.com:20.1.8", + "itsreal-free@jouwdomein.com:2.5.0", + "itsreal-free@jouwdomein.com:1.0", + "itsreal-free@jouwdomein.com:1.2", + "itsreal-free@jouwdomein.com:1.5", + "itsreal-free@jouwdomein.com:1.7", + "itsreal-free@jouwdomein.com:1.8", + "itsreal-free@jouwdomein.com:1.9", + "itsreal-free@jouwdomein.com:1.10", + "itsreal-free@jouwdomein.com:1.11", + "itsreal-free@jouwdomein.com:2.0.0", + "itsreal-free@jouwdomein.com:2.2.0", + "itsreal-free@jouwdomein.com:2.3.0", + "itsreal-free@jouwdomein.com:2.4.0", + "itsreal-free@jouwdomein.com:2.4.1", + "itsreal-free@jouwdomein.com:2.4.2", + "instagram-media-downloader@accounts.firefox.com.kitten217.simplelogin.com:1.0.0", + "instagram-media-downloader@accounts.firefox.com.kitten217.simplelogin.com:1.1.0", + "instagram-media-downloader@accounts.firefox.com.kitten217.simplelogin.com:1.2.0", + "noreplygcheater@gmail.com:1.25.11.2", + "{96b8aaaf-61c1-47e2-8221-5423896b8721}:1.0", + "{7fd68200-300f-480b-8244-8437e57ef58f}:1.0", + "{7fd68200-300f-480b-8244-8437e57ef58f}:1.1", + "chinesepod-filter-mobile@example.com:1.2" + ] + }, + "schema": 1763836588333, + "key_format": "{guid}:{version}", + "stash_time": 1763858106053, + "id": "8a39a523-24dd-4e67-8e53-009887be5c0a", + "last_modified": 1763858191942 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{413e73f4-7407-4948-b6be-e2d7c0daaaf6}:1.0", + "my-prompt-jumper@local-user:1.5", + "autofill-cesi@exemple.com:1.0", + "Android@bravenhancer.com:20.1.5", + "enhancer@goldenfox.com:20.1.5", + "@M-Plugin.Fx-test:4.0.0", + "@M-Plugin.Fx-test:4.0.1" + ] + }, + "schema": 1763814992307, + "key_format": "{guid}:{version}", + "stash_time": 1763836506601, + "id": "fa23c462-586f-4cff-996d-17f16f14ea09", + "last_modified": 1763836588106 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{8d09f69e-4796-4286-b792-f575dc72be7c}:0.1.0", + "matt-pro-translations@extension:1.0", + "{e1141423-b1b6-4358-b7a5-06f61703bf8e}:1.0", + "{e1141423-b1b6-4358-b7a5-06f61703bf8e}:1.1", + "hoaxchecker@dontbehoaxed.net:1.0", + "hoaxchecker@dontbehoaxed.net:1.1", + "hoaxchecker@dontbehoaxed.net:1.2", + "{4137fa1a-958c-436d-bdad-ab7e4373f777}:1.0", + "tab-unloader-fork@js:2025.1.2", + "{042349e9-a9c1-418f-999e-8ffa69725767}:1.0" + ] + }, + "schema": 1763793390507, + "key_format": "{guid}:{version}", + "stash_time": 1763814906515, + "id": "11a61ccb-c299-4fd4-9a59-60eff68bef00", + "last_modified": 1763814992130 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "chatgpt-diagram-renderer@enzo:1.0.1", + "{6216583e-537f-4eec-b8fe-51373a4daf87}:1.0", + "v2tabsalpha@soulhotel.net:0.1", + "v2tabsalpha@soulhotel.net:0.1.1" + ] + }, + "schema": 1763777742631, + "key_format": "{guid}:{version}", + "stash_time": 1763793306393, + "id": "18bef4bb-f8e1-4499-a6a9-c534667b5523", + "last_modified": 1763793390316 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "jackett@local:1.4", + "jackett@local:1.0", + "jackett@local:1.2", + "jackett@local:1.5", + "Android@bravenhancer.com:20.1.4", + "enhancer@goldenfox.com:20.1.4", + "{df1bc263-b49b-4f70-912b-86f513379ab5}:1.0" + ] + }, + "schema": 1763750189766, + "key_format": "{guid}:{version}", + "stash_time": 1763771706014, + "id": "a221b255-06bd-4670-b3a8-1e16623d245e", + "last_modified": 1763771787376 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "dreamflore-protection@votreemail.com:1.0", + "dreamflore-protection@votreemail.com:1.2", + "dreamflore-protection@votreemail.com:1.3", + "alldebrid-magnet-uploader@test.com:2.1", + "alldebrid-magnet-uploader@test.com:2.0", + "admin@pepeizqdeals.com:0.2", + "admin@pepeizqdeals.com:0.3", + "admin@pepeizqdeals.com:0.6", + "admin@pepeizqdeals.com:0.10", + "yahoo-realtime-filter@example.com:2.1", + "digg-toolbar-noamo@giggity:1.4.1", + "jackett@local:1.1" + ] + }, + "schema": 1763746842355, + "key_format": "{guid}:{version}", + "stash_time": 1763750106417, + "id": "9e0b40f4-740c-455d-bf51-8e6070c6272e", + "last_modified": 1763750189516 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{0ce913ad-da64-4b44-b611-92eeb822608b}:1.0", + "case-analyzer@ibm:1.0.0", + "abwlfazl.musavi@gmail.com:2.3.5", + "{c07d6030-854c-4789-a605-1234567890ab}:3.4.0", + "wykop-anty-ciotodron@dodatek:1.3", + "{c07d6030-854c-4789-a605-1234567890ab}:3.3.0" + ] + }, + "schema": 1763706980555, + "key_format": "{guid}:{version}", + "stash_time": 1763728506951, + "id": "ed8fff72-7074-408e-a47e-2debaa402c45", + "last_modified": 1763728590860 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{d91fd58f-32fc-463e-95b9-a01babac6173}:1.0", + "abwlfazl.musavi@gmail.com:2.2", + "abwlfazl.musavi@gmail.com:2.3", + "abwlfazl.musavi@gmail.com:2.0", + "abwlfazl.musavi@gmail.com:2.3.1", + "{d397d53a-5a91-4a30-8de4-bc8613396637}:1.0", + "abwlfazl.musavi@gmail.com:2.3.2", + "color_code_tab_groups@luascfl:1.0.0", + "color_code_tab_groups@luascfl:1.0.1", + "color_code_tab_groups@luascfl:1.0.2", + "{28eaaf58-0e26-468f-9ae1-a8f1016ef95b}:1.0", + "tab-group-shortcut@luascfl:1.0.0", + "{61896442-aaba-403f-954e-7535cdd47e3b}:1.0" + ] + }, + "schema": 1763691341863, + "key_format": "{guid}:{version}", + "stash_time": 1763706905292, + "id": "1868d680-884e-4289-86b1-c32e49253d43", + "last_modified": 1763706980337 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "g-like-hotkey@private-dev.org:1.0", + "g-like-hotkey@private-dev.org:1.1", + "browse@bgrove.com:4.3.1.8", + "browse@bgrove.com:4.3.1.9", + "multi-autocomplete-helper@example.com:1.0.0", + "{67cabb1a-818f-498a-9271-956cb4b4dc63}:1.0.4", + "{67cabb1a-818f-498a-9271-956cb4b4dc63}:1.0.3", + "@tab-archive.hasanemre.ayyildiz:1.0.0", + "@tab-archive.hasanemre.ayyildiz:1.0.1", + "thisis.kashakov@gmail.com:3.3.23" + ] + }, + "schema": 1763663788949, + "key_format": "{guid}:{version}", + "stash_time": 1763685305370, + "id": "6fef790c-08ba-45b0-a0da-e8db12582cff", + "last_modified": 1763685379170 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "kinozalhelper@elektrikis.id.lv:3.5.2", + "procure@integrate.com:1.4", + "procure@integrate.com:1.4.1", + "webclipper@0xbasinas.dev:0.1.0", + "y05@yuqidata.com:1.0", + "y05@yuqidata.com:1.22", + "y05@yuqidata.com:1.41", + "y05@yuqidata.com:1.43", + "y05@yuqidata.com:1.44", + "y05@yuqidata.com:1.45", + "y05@yuqidata.com:1.46", + "y05@yuqidata.com:1.47", + "y05@yuqidata.com:1.48", + "y05@yuqidata.com:1.49", + "alldebrid-magnet-uploader@example.com:1.2", + "wdssss@bgegeg:1.0", + "{7954b6c0-1595-4d16-96c7-93a738fdaa02}:5.0.0", + "{61366c2b-37db-4311-ac04-96554462b0a5}:5.0.0", + "antyciotodron@wykop.pl:2.0", + "ydiaz@hiredexperts.com:1.0", + "ydiaz@hiredexperts.com:1.0.1", + "antyciotodron@wykop.pl:2.1", + "{10C91BAC-3FC5-11EE-91D1-9D987634574E}:4.3.6", + "magnolia@12.34:4.2.4.8" + ] + }, + "schema": 1763642179605, + "key_format": "{guid}:{version}", + "stash_time": 1763663705811, + "id": "5812f821-7c14-4f02-b8c8-04776f218906", + "last_modified": 1763663788689 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "bubblepop@developer:0.3", + "Android@bravenhancer.com:20.1.2", + "enhancer@goldenfox.com:20.1.2", + "Android@bravenhancer.com:20.1.3", + "enhancer@goldenfox.com:20.1.3", + "{c8fbfe20-5905-4de2-8500-8a19a3b9c59b}:0.0.1", + "{57c3f4e7-dab1-4ede-b695-92d9cea05b8f}:1.0.0", + "{5da1a17d-44e3-4d64-964c-5c1b3f3b01f7}:4.0" + ] + }, + "schema": 1763620580000, + "key_format": "{guid}:{version}", + "stash_time": 1763642105285, + "id": "a4216467-1dec-45d3-af16-ede8ea81b743", + "last_modified": 1763642179399 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "google-classic-search@example.com:1.3", + "pubpeer-cookie-injector@example.com:1.0.1", + "studpidaddon@jmenbalance.fr:0.1" + ] + }, + "schema": 1763604943597, + "key_format": "{guid}:{version}", + "stash_time": 1763620505625, + "id": "f1bcc80e-e73c-41f7-96df-926e2d151642", + "last_modified": 1763620579779 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{eb6884bd-baa3-46c9-8638-57dede47b8c8}:2.8", + "diy-youtube-not-interested@example.com:0.1", + "diy-youtube-not-interested@example.com:0.2", + "{317b5ed3-5e76-46d6-999c-dc10520f3eea}:1.0", + "{51bbbf12-d259-4019-82ee-1ef5b7b85288}:1.0", + "{81404bfd-4b89-4b61-bd67-d7cd9d5f3b90}:1.0", + "{c53432bc-a88b-4671-ba7b-ef1254e7bf13}:1.0", + "{df8b8708-4ccd-4064-b98b-db5ecd2e88c0}:1.0", + "{0d0730fa-0706-47f8-8cec-834f0a708ba9}:1.0", + "{44a7902b-f6c1-483f-b4df-6c9e9cd18e84}:1.0", + "{6a53583b-f0ba-4779-a503-ef74c4bb9970}:1.0", + "alldebrid-magnet-uploader@example.com:1.0", + "alldebrid-magnet-uploader@example.com:1.1", + "page-drawing-extension@mete:1.1", + "page-drawing-extension@mete:1.2" + ] + }, + "schema": 1763577397762, + "key_format": "{guid}:{version}", + "stash_time": 1763598905171, + "id": "df2e4e21-a3de-4bf5-9a1a-e85716420ffa", + "last_modified": 1763598981134 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{e6290c04-fee7-4bce-ba4e-efa9fed1c73e}:1.0", + "{c6547964-46d5-4a0d-900b-b50aa2600d57}:0.1.2", + "{66a0b77f-7080-4a2f-aa4d-a4ab49723c20}:2.0.0", + "{cfd3c5c2-31ec-55ff-a28e-df38357d02d9}:2.5", + "mynotes@example.com:2.0.0", + "{c6547964-46d5-4a0d-900b-b50aa2600d57}:0.2.0", + "notes@notes.notes:3.0.0", + "hidesuggestions@example.com:1.0", + "{6a2a4738-8654-450b-b068-801e909d052e}:1.0", + "firepage@example.com:1.1", + "x-to-fixvx@example.com:1.1", + "msp2-userscript-manager@dolo.local:1.0.1", + "plutotwo-2025@dolo.local:2025.2.2", + "plutotwo-2025@dolo.local:2025.2.7" + ] + }, + "schema": 1763555781416, + "key_format": "{guid}:{version}", + "stash_time": 1763577306313, + "id": "1399f935-31f7-4fba-807c-4bc0b2b6b25c", + "last_modified": 1763577397495 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "VueCrack-IceCat-2025@Niemi.com:1.4", + "VueCrack-IceCat-2025@Niemi.com:1.4.1", + "{3e944c0a-2e3b-4d82-b144-7f022b67ef50}:1.0.0", + "{3e944c0a-2e3b-4d82-b144-7f022b67ef50}:1.1.0", + "@Extension.HotPocket.BTHLabs:25.11.19.0", + "@Extension.HotPocket.BTHLabs:25.9.12", + "@Extension.HotPocket.BTHLabs:25.11.12", + "@Extension.HotPocket.BTHLabs:25.11.18", + "anydesk-connect@example:1.1.0", + "booth-searcher@cosmoluv.dev:4.0.0", + "booth-searcher@cosmoluv.dev:4.0.1", + "booth-searcher@cosmoluv.dev:4.0.2", + "booth-searcher@cosmoluv.dev:4.0.4", + "booth-searcher@cosmoluv.dev:4.1.3", + "booth-searcher@cosmoluv.dev:4.1.4", + "booth-searcher@cosmoluv.dev:4.1.5" + ] + }, + "schema": 1763534190496, + "key_format": "{guid}:{version}", + "stash_time": 1763555705239, + "id": "53a56cca-1d7d-44ea-a348-b59e507e6173", + "last_modified": 1763555781245 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "favory@sp4ce.pw:1.1.6", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.7", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.8", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.9", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.10", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.11", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.12", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.13", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.14", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.15", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.17", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.18", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:1.1.19", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.0.0", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.1.2", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.2.0", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.3.0", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.4.0", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.5.0", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.6.0", + "{d783f67c-4dea-4d64-bfc2-1d4a6057babe}:2.6.1", + "ntfy-monitor@benkhouya.com:1.0", + "ntfy-monitor@benkhouya.com:1.1", + "ntfy-monitor@benkhouya.com:1.2", + "ntfy-monitor@benkhouya.com:1.3", + "multiopen@example.com:3.8" + ] + }, + "schema": 1763518541233, + "key_format": "{guid}:{version}", + "stash_time": 1763534106238, + "id": "71a439b1-ac92-40f6-93fd-4c0218dc1bc7", + "last_modified": 1763534190313 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "audio-speed-pitch@castledking.com:1.0.1", + "{0e744615-ab4e-429a-917c-ec4b1399ac60}:1.0", + "{425cb0d4-c395-46ef-a226-a440a4a814fd}:1.0", + "{425cb0d4-c395-46ef-a226-a440a4a814fd}:1.0.1", + "{86f539bd-bd1e-49c3-8de0-f1ce87edead1}:1.0" + ] + }, + "schema": 1763490979616, + "key_format": "{guid}:{version}", + "stash_time": 1763512505361, + "id": "22aa9a55-3d26-4a47-b211-1935eccc20c3", + "last_modified": 1763512579172 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{b0c8f7b1-3015-4bcf-6159-97b1855cc1d9}:13.3.0", + "download-filter@ilfa.local:1.0.0", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.9", + "logzio-validator@form3.tech:1.0.1.0", + "{2b925d8d-404d-488c-8369-17ca6628c771}:1.0.6" + ] + }, + "schema": 1763469386492, + "key_format": "{guid}:{version}", + "stash_time": 1763490905661, + "id": "2bc9df5a-e3d6-4db0-954b-64663fd035c2", + "last_modified": 1763490979451 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "vidmoldsa@local:1.2", + "moodle-interceptor@example.com:2.0", + "u8061@example.jp:1.0", + "u8061@example.jp:1.0.1", + "{888e71e2-eb4d-4d74-a82c-6ae72291f6d6}:1.9.4", + "{c7cc7ff5-7b3b-41be-bcf4-10490c2e6c8f}:8.2.4", + "{295f26bd-f3b1-4746-98b3-71de626e29bb}:8.2.4", + "{5654a40f-b055-411e-a667-9231a33a1ee0}:8.2.3", + "{e88942a7-0e4d-4620-95fd-b394c07d0fd4}:8.2.3", + "rezervasyon@local.addon:1.0.0", + "{bdb69adc-1b60-4bc5-a59e-c6f3bad5553c}:8.2.2", + "{43038b21-76ee-4e85-b970-50cab769a6db}:8.2.4", + "@adwaita:1.0", + "{cdf9c9e3-50fe-4056-a0c6-4df438ce0e04}:1.0", + "{036eb51a-613b-4a1f-8c4f-5344b3bcd539}:1.0", + "{a3c2f04d-bbc6-47e6-be41-86c3c74c9841}:1.0", + "{ecbbce55-68a7-45cf-a82d-5cb5d212da08}:1.0", + "{fdccb55d-4b45-4706-90d2-1501397725cd}:1.0", + "{351764ab-45f9-49e3-b4dd-416a4797867f}:1.0", + "{5e9e93c6-d37d-49af-ba2e-aa4d7833a518}:1.0", + "{1f7a4640-fba0-4df6-bd30-015487f7547c}:1.0", + "{942d64bd-2f8e-4776-a0dc-669df66ab0fc}:1.0", + "{4768bd5c-41a6-4708-8942-1394b68855b6}:1.0", + "{6c35f942-2536-4a81-adc3-291af179a70f}:1.0", + "{f4e2879e-a91b-4709-a320-932d2d2ec059}:1.0", + "{6a8cf876-26ff-471a-b2fd-15836f3a7f06}:1.0", + "search-trakt@example.com:1.0", + "stockmanager@gmx.de:2024.1014", + "stockmanager@gmx.de:2025.1000", + "stockmanager@gmx.de:2025.1001", + "stockmanager@gmx.de:2025.1002", + "stockmanager@gmx.de:2025.1003", + "stockmanager@gmx.de:2025.1004", + "cronometro-icono@example.com:1.6", + "open-selected-url@local:1.0", + "{ee3d5c7c-da48-418e-904b-b363b122b354}:3" + ] + }, + "schema": 1763432147484, + "key_format": "{guid}:{version}", + "stash_time": 1763469305627, + "id": "204fcdba-5034-4590-9477-2fba312ccfbc", + "last_modified": 1763469386060 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{f78142df-87db-4eab-8c7a-39835597174d}:1.0", + "asus-router-button@hellwig.me:1.5", + "{8a6a7ac6-9681-414e-b423-6dac03100e08}:1.0" + ] + }, + "schema": 1763404579814, + "key_format": "{guid}:{version}", + "stash_time": 1763426107309, + "id": "73b4b1bb-1d1f-4f52-bab7-f8e32e81fb28", + "last_modified": 1763426194927 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{d0b40768-bc5a-4621-9c4f-6bb8c0a6f7dd}:1.0", + "epsonprinter-button@hellwig.me:1.3", + "epsonprinter-button@hellwig.me:1.2", + "{290a6948-1b8f-44ad-aa1a-576a60069482}:2.8.0.1", + "{290a6948-1b8f-44ad-aa1a-576a60069482}:2.8.0.2", + "{9d5d842c-55eb-4e34-a71e-f41c38daef24}:1.0.0", + "{edfc63b3-fc9b-4b6b-b9bf-4561ad548044}:2.2.0", + "luisfdzlatofski@gmail.com:5.1", + "zero-homepage@tuemail.com:1.1", + "{9d7b266a-9484-42d3-a1ef-ec87ee4fa0e1}:1.3.6", + "{c55e7447-eb41-400b-8b22-6bb01a662444}:1.0", + "{c55e7447-eb41-400b-8b22-6bb01a662444}:2.0", + "{5b30c63c-fa83-4c6f-b588-318c1b3962c7}:1.0", + "{12de4081-11c3-4eb0-93ec-fc577b33b1e4}:1.1", + "{0f130809-3203-4ef4-885d-e5d1da906bbb}:1.0", + "{7c8e0b42-6c46-46dd-81d3-b92f022f297f}:1.0", + "{5cb7a47b-6dc3-45f4-a010-274847f3f85f}:1.0", + "{c779c854-100e-475c-804d-f43c3c28656f}:5.33", + "{670483ed-98cc-4f4a-8710-8b8305a615ad}:5.33", + "oabphaconndgibllomdcjbfdghcmenci@chrome-store-foxified-527448872:1.2.15" + ] + }, + "schema": 1763382987234, + "key_format": "{guid}:{version}", + "stash_time": 1763404505139, + "id": "c7740301-f565-4cd2-97c7-963e72945aed", + "last_modified": 1763404579537 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "Butaaa.inbox@gmail.com:1.1.0", + "Butaaa.inbox@gmail.com:1.2.2", + "Butaaa.inbox@gmail.com:1.2.3", + "brouf@example.com:1.2", + "{2d2d2c57-39c9-48bb-b8ae-b7656296b12d}:1.0", + "Butaaa.inbox@gmail.com:1.2.4", + "r9gvj86m0s@Manual_CRXInstaller:5.3.0", + "r9gvj86m0s@Manual_CRXInstaller:5.3.1", + "r9gvj86m0s@Manual_CRXInstaller:5.3.2", + "r9gvj86m0s@Manual_CRXInstaller:5.3.3", + "magnetar@wanxing.com:5.3.0", + "magnetar@example.com:5.3.0", + "magnetar@yourdomain.com:5.3.0", + "container-782-warning@logistik3.local:1.0", + "{8f9c9f60-4d4a-4c6b-9b3c-2d7a9f6b1e23}:2.1.0", + "{51c0848e-9d21-4587-9f88-c14eacd5ff9a}:1.2.1.7", + "site-time-limit@hasizume.local:1.0" + ] + }, + "schema": 1763361380297, + "key_format": "{guid}:{version}", + "stash_time": 1763382905714, + "id": "7e7cf991-e037-46e9-8ca4-4d4252ae36f8", + "last_modified": 1763382987052 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{0769574b-9140-4c7e-a239-0733619d3819}:1.0", + "{d1a75c5d-0961-41ff-8212-f72056233ab9}:2.0", + "{d1a75c5d-0961-41ff-8212-f72056233ab9}:1.0", + "{d1a75c5d-0961-41ff-8212-f72056233ab9}:3.0", + "{11f0065a-3664-4380-82a3-db944b6f090d}:1.0", + "twitch-vod-unmute@example.com:1.1.4", + "{db272844-ce14-4416-8e70-cc2a7360c299}:1.0", + "{815d24fc-4654-42d9-bcbc-1d39f3985e1d}:1.0", + "{815d24fc-4654-42d9-bcbc-1d39f3985e1d}:2.0", + "{815d24fc-4654-42d9-bcbc-1d39f3985e1d}:3.0", + "{815d24fc-4654-42d9-bcbc-1d39f3985e1d}:4.0", + "vidmoly-helpera54fed@local:1.2", + "vidmoly-dsa@local:1.2", + "multiopen@example.com:3.3", + "multiopen@example.com:3.7" + ] + }, + "schema": 1763345743233, + "key_format": "{guid}:{version}", + "stash_time": 1763361305255, + "id": "ec39eb6c-43e4-4da6-a123-f70fc96fc7ce", + "last_modified": 1763361380116 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "brouf@example.com:1.1", + "muc3-dashboard@example.com:1.0", + "muc3-dashboard@example.com:1.1", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.1", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.2", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.3", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.3.1", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.3.2", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.3.3", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.3.4", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.3.5", + "{702a8852-33bf-4a11-aed0-b76437c3ae2b}:0.3.6", + "favory@sp4ce.pw:1.1.5", + "{6102d8aa-4450-474a-8aaa-a2980ee0492b}:1.0" + ] + }, + "schema": 1763318178876, + "key_format": "{guid}:{version}", + "stash_time": 1763339707956, + "id": "7294d09a-f9a8-44a4-afc1-2f0856ee336f", + "last_modified": 1763339794926 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "f0xss@example.com:1.1", + "f0xss@example.com:1.0", + "f0xss@example.com:1", + "autofill-modern@example.com:1.3", + "{64346286-3e63-48bc-a80b-5f1d00c9da3b}:1.0", + "{c5f5c4ac-8b37-49a3-9687-f86859324544}:1.0", + "{c5f5c4ac-8b37-49a3-9687-f86859324544}:1.0.1", + "{c5f5c4ac-8b37-49a3-9687-f86859324544}:1.0.2", + "{c5f5c4ac-8b37-49a3-9687-f86859324544}:1.0.3" + ] + }, + "schema": 1763296579722, + "key_format": "{guid}:{version}", + "stash_time": 1763318105210, + "id": "3de9626e-492d-40ce-be09-16fd7b1d746c", + "last_modified": 1763318178708 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{7fa78dfb-aad9-4cf6-9804-ae4dd759a252}:1.0", + "{c4bf14c6-bc23-4803-8306-155a0295dce5}:1.0", + "addon-e9e52831@local:1.0", + "favory@sp4ce.pw:1.0.9", + "favory@sp4ce.pw:1.1.0", + "favory@sp4ce.pw:1.1.1", + "favory@sp4ce.pw:1.1.2", + "favory@sp4ce.pw:1.1.3", + "favory@sp4ce.pw:1.1.4" + ] + }, + "schema": 1763274982644, + "key_format": "{guid}:{version}", + "stash_time": 1763296505171, + "id": "ec74b17c-b1bc-4bc8-b33b-64b0bc770665", + "last_modified": 1763296579419 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{f37944d2-0050-4e10-a36b-e573ebfb8800}:1.0.7", + "manhuaseriesdownloader.python@example.com:7.0", + "manhuaseriesdownloader.python@example.com:7.1", + "manhuaseriesdownloader.python@example.com:7.2", + "astian-privacy@astian.org:1.1.0.1", + "astian-privacy@astian.org:2.0", + "astian-privacy@astian.org:2.0.1", + "astian-privacy@astian.org:2.0.2", + "astian-privacy@astian.org:2.0.3", + "manhuaseriesdownloader.python@example.com:7.3", + "multiopen@example.com:3.5", + "multiopen@example.com:3.6" + ] + }, + "schema": 1763259345837, + "key_format": "{guid}:{version}", + "stash_time": 1763274904946, + "id": "068066c1-7af1-4ee3-bac3-a7761747153f", + "last_modified": 1763274982480 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "Android@bravenhancer.com:20.0.5", + "enhancer@goldenfox.com:20.0.5", + "{8aaee12b-5764-4012-a93b-cdee7fb1136e}:1.7", + "yt-long-playlist@example.com:1.0.0", + "yt-long-playlist@example.com:1.9.0", + "coin-counter@example:1.1.1", + "{bbb0df11-b3d0-4423-8100-393ed4458ce3}:1.2.4resigned1", + "antiusonly@extension:1.1.0" + ] + }, + "schema": 1763231779104, + "key_format": "{guid}:{version}", + "stash_time": 1763253304864, + "id": "630bcc25-aa51-4b6c-9358-5aade2051945", + "last_modified": 1763253379167 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{86022c6f-35b6-4542-ac2d-739566632970}:0.8.2", + "{f9f70ceb-7676-42c5-9b71-08e1512796bb}:0.8.2", + "eklv@example.com:1.0", + "i-just-want-to-install-new-version-of-extension@pleasework.com:1.9.12", + "ff-tabunloader@smell.flowers:2" + ] + }, + "schema": 1763210189424, + "key_format": "{guid}:{version}", + "stash_time": 1763231705357, + "id": "5bd226e7-ae1a-4f9f-8942-6ff50b1e2a41", + "last_modified": 1763231778846 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{3682952e-46db-469a-82a1-3102296766da}:1.0", + "playlist-viewer-fix@your-username.com:1.0", + "playlist-viewer-fix@your-username.com:1.1", + "{1830e313-1cb6-4b77-8a50-26a25b88dccc}:1.0", + "playlist-viewer-fix@your-username.com:1.2" + ] + }, + "schema": 1763188583383, + "key_format": "{guid}:{version}", + "stash_time": 1763210106286, + "id": "6ed0e9e8-f928-4efd-890d-7720fe61e004", + "last_modified": 1763210189208 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "calculator@digitalvoivode.com:1.0", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.8" + ] + }, + "schema": 1763172957207, + "key_format": "{guid}:{version}", + "stash_time": 1763188505407, + "id": "128e9953-04d3-4826-9388-ee4f94e37e2d", + "last_modified": 1763188583205 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "easyform@example.com:1.1.1", + "easyform@example.com:1.0.0", + "easyform@example.com:1.1.0", + "easyform@example.com:1.1.2", + "asus-router-button@example.com:1.0", + "remove-container-piano@example.com:1.0.0", + "@lenti-ff:0.0.9", + "@lenti-ff:0.0.7-fix", + "{3f08b2a9-9d17-4c42-9a2f-92a207bbd001}:1.1", + "{4bff6036-064e-4903-bcfc-5ef4001f4cae}:2.1.1" + ] + }, + "schema": 1763145380190, + "key_format": "{guid}:{version}", + "stash_time": 1763166905238, + "id": "9194c170-0a5b-4e5b-9ab4-a6e5ee4d4e73", + "last_modified": 1763166981903 + }, + { + "stash": { + "blocked": [ + "{4f309a6b-6b94-46dd-b787-570b2278e8cd}:1.0", + "{4b0eaee9-bcbf-46d0-be5e-3e7527815cd6}:1.0", + "{182ace6e-df11-462e-b015-7a1647281503}:1.0" + ], + "unblocked": [], + "softblocked": [ + "bitbucket-diff-scanner@newfold.com:1.0", + "{3b476c81-ee34-4c7c-9aeb-8b1dd4f4e97c}:1.0", + "qrtracker@qrtracker.io:1.1.4", + "qrtracker@qrtracker.io:1.1.5", + "qrtracker@qrtracker.io:1.1.6", + "intellidraft@example.com:1.0.0", + "{8C23CBC2-EB21-4075-99F5-8F548C1927B2}:2.1", + "{8C23CBC2-EB21-4075-99F5-8F548C1927B2}:2.2", + "{8C23CBC2-EB21-4075-99F5-8F548C1927B2}:3.0", + "{8C23CBC2-EB21-4075-99F5-8F548C1927B2}:2.0", + "{8C23CBC2-EB21-4075-99F5-8F548C1927B2}:1.0", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.7", + "{ea5d9ee8-8e36-42bf-b325-5d7c549f35f2}:1.0", + "{81dce488-6b41-4754-ae71-ff1f7854119a}:1.0" + ] + }, + "schema": 1763123788106, + "key_format": "{guid}:{version}", + "stash_time": 1763145305728, + "id": "25d37504-1170-4a5f-b1b6-9dc168146dc9", + "last_modified": 1763145379980 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "@ublacklist.local:8.12.0", + "@ublacklist.local:9.0.2", + "oci-ocid-redirector@OneViewSearch:1.0.0" + ] + }, + "schema": 1763102193154, + "key_format": "{guid}:{version}", + "stash_time": 1763123706088, + "id": "258d5c5e-b247-4ce8-bde6-a4e0838ba08f", + "last_modified": 1763123787993 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "alfonsodaniello@blu.it:0.1.3", + "alfonsodaniello@blu.it:0.1.2", + "alfonsodaniello@blu.it:0.1.1", + "alfonsodaniello@blu.it:0.1.0", + "jira-gitlab-mr-links@limonkufu.com:1.1", + "remove-tweet-view-count@murilocarrijosilva.com:1.0", + "tensor-art-downloader-a3eb989bf6544ba5@local:2.0", + "tensor-art-downloader-4db542ff@local:2.0", + "tensor-art-downloader@example.com:2.0" + ] + }, + "schema": 1763086546752, + "key_format": "{guid}:{version}", + "stash_time": 1763102106300, + "id": "5c4a8f60-6290-4e60-b27d-78587dc02128", + "last_modified": 1763102192943 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "kinozalhelper@elektrikis.id.lv:3.4.0", + "customtab@deividcode.com:3.0.8", + "kinozalhelper@elektrikis.id.lv:3.3.0", + "{05089092-ac99-419b-9b5c-94940cc6197e}:1.2", + "{05089092-ac99-419b-9b5c-94940cc6197e}:1.31", + "hide-collection-only-ebay@icecat.ecc.im:1.5.2.1" + ] + }, + "schema": 1763058989668, + "key_format": "{guid}:{version}", + "stash_time": 1763080505211, + "id": "5c738569-0bb2-4461-b278-f0ef648130f7", + "last_modified": 1763080579887 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "novel-downloader@RighteousW.com:1.0.0", + "derpi-numbers@example.com:1.0", + "derpi-numbers@example.com:1.1", + "epreuveSantorin@santorin.com:1.1", + "netskope-isolation-management@yourdomain.com:1.0", + "{52c96c2c-df1a-45c3-b5e5-ec5d4111ce8d}:241029.1", + "visibilityblocker@example.com:1.0", + "egas.torres@gmail.com:2.2" + ] + }, + "schema": 1763037391746, + "key_format": "{guid}:{version}", + "stash_time": 1763058906327, + "id": "f9deef85-a8b4-4069-91dd-dc28c585556e", + "last_modified": 1763058989481 + }, + { + "stash": { + "blocked": [ + "{f350fb55-0f0f-455b-a250-84ecd8e9c1c2}:1.0.5", + "{f350fb55-0f0f-455b-a250-84ecd8e9c1c2}:1.5", + "{f350fb55-0f0f-455b-a250-84ecd8e9c1c2}:1.6", + "{f350fb55-0f0f-455b-a250-84ecd8e9c1c2}:1.7" + ], + "unblocked": [], + "softblocked": [ + "{7ace9190-33ca-4ebe-bd61-6bca5ddf4cb5}:0.1", + "jiojiojohn@gmail.com:3.0.2" + ] + }, + "schema": 1763015790096, + "key_format": "{guid}:{version}", + "stash_time": 1763037306207, + "id": "b1aa0939-6a5f-434a-8836-0da13a368cd4", + "last_modified": 1763037391626 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "elpump99-photo@elpump.xyz:1.0", + "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.1", + "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.2", + "Android@bravenhancer.com:20.0.3", + "Android@bravenhancer.com:20.0.2", + "Android@bravenhancer.com:20.0.4A", + "enhancer@goldenfox.com:20.0.2", + "alqrt@angel.lab:3.1", + "alqrt@angel.lab:2.3", + "alqrt@angel.lab:2.1", + "alqrt@angel.lab:2.4", + "pdf-coretax-hanim@local:3.0", + "pdf-coretax-hanim@local:3.1", + "pdf-coretax-hanim@local:3.2", + "pdf-coretax-hanim@local:3.3", + "pdf-coretax-hanim@local:3.4", + "pdf-coretax-hanim@local:3.6", + "addon-manager@luascfl:1.51" + ] + }, + "schema": 1763000149841, + "key_format": "{guid}:{version}", + "stash_time": 1763015706319, + "id": "62686962-9329-490a-a749-4714ecef371b", + "last_modified": 1763015789873 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "jajca-jajca-jajca@fuckyou.com:2.3", + "ai-text-icecat@someguy.com:1.0.7", + "ai-text-icecat@someguy.com:1.0.8", + "session-grid-manager-fork@local:7.1.1", + "session-grid-manager-fork@local:7.1.1.2", + "session-grid-manager-fork@local:7.1.1.4", + "session-grid-manager-fork@local:7.1.1.6", + "@Soluna.Sytonic:1.0", + "@Soluna.Sytonic:1.1", + "addon-manager@luascfl:1.49", + "addon-manager@luascfl:1.48", + "lastfm-artwork-helper@chr1sx:1.0.9", + "addon-manager@luascfl:1.50" + ] + }, + "schema": 1762972591329, + "key_format": "{guid}:{version}", + "stash_time": 1762994106450, + "id": "196932a5-7ffa-4564-ba2a-eb0798e059b1", + "last_modified": 1762994193413 + }, + { + "stash": { + "blocked": [ + "{9df92641-0061-4227-aaa7-e4c6febaa798}:2.3.1", + "{af1e9aff-ca42-4ce3-a7fd-e6e84ca2cee7}:1.8.2", + "{335e1052-ed10-4edd-a811-6c6698ee598d}:1.7" + ], + "unblocked": [], + "softblocked": [ + "Android@bravenhancer.com:20.0.1", + "enhancer@goldenfox.com:20.0.1", + "{3cb0155f-44ef-4c3d-954f-f15c24ddb4fc}:0.6.90", + "{f8d65c88-f4b7-4fd3-8ad8-b4d06093dc99}:1.8.2", + "{cd3cc4a9-4555-4b4d-945b-d807a2c879c4}:1.6.4", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.3.0", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.3.1", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.3.2", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.3.7", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.3.8", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.3.9", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.1", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.2", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.3", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.4", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.5", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.6", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.7", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.8", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.4.9", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.0", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.1", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.2", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.3", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.4", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.5", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.6", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.7", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.5.8", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.6.0", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.6.1", + "{4cc31d29-6afb-4ab2-bf48-2fed7d5463a8}:1.6.2", + "{d0b936ab-1790-421b-90f6-e4dba22de87f}:1.1", + "{d0b936ab-1790-421b-90f6-e4dba22de87f}:1.0", + "{947b4bbf-939a-4977-94f0-7ea2c62c0dff}:1.0", + "{498f3c92-4207-4e8d-af20-269a9cbcc3eb}:0.1", + "{9f8cb3b3-93ff-418e-8064-ccbd57ab935d}:0.1", + "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.0", + "edfjfgjklednkencfhnokmkajbgfhpon@chrome-store-foxified--520432627:0.0.4", + "{a64b02c2-169e-438b-bcd2-6f3a0897c0e8}:3.6", + "bcefgmhpbmghjcenbklchobmogjhaagl@chrome-store-foxified--520432627:0.3.5", + "gbbnddjfcllebfcnihfgmdplgaiejepc@chrome-store-foxified--520432627:1.0", + "ifmhoabcaeehkljcfclfiieohkohdgbb@chrome-store-foxified--520432627:21.1.0", + "gmbgaklkmjakoegficnlkhebmhkjfich@chrome-store-foxified--520432627:2.11", + "ndhinffkekpekljifjkkkkkhopnjodja@chrome-store-foxified--520432627:35", + "nicokganngdkmjiejngaacdlllkdpikn@chrome-store-foxified--520432627:0.1.1", + "kbhfoiaobflocffnclkigpkeoagheimn@chrome-store-foxified--520432627:2.1.1", + "mgijmajocgfcbeboacabfgobmjgjcoja@chrome-store-foxified--520432627:4.0.8", + "kdfieneakcjfaiglcfcgkidlkmlijjnh@chrome-store-foxified--520432627:2.0.7", + "pjnfggphgdjblhfjaphkjhfpiiekbbej@chrome-store-foxified--520432627:0.6.6.2", + "kjacjjdnoddnpbbcjilcajfhhbdhkpgk@chrome-store-foxified--520432627:3.8.2", + "nolijncfnkgaikbjbdaogikpmpbdcdef@chrome-store-foxified--520432627:2.6.1", + "likjafohlgffamccflcidmedfongmkee@chrome-store-foxified--520432627:0.1.2", + "oopaipoegcoodhcemiefhoeaneholpfj@chrome-store-foxified--520432627:2.1.2", + "kmmpkhpajpecmpdmmbpjmkmcmfdahkcj@chrome-store-foxified--520432627:2.9.44", + "emalgedpdlghbkikiaeocoblajamonoh@chrome-store-foxified--520432627:1.8.6", + "mclkkofklkfljcocdinagocijmpgbhab@chrome-store-foxified--520432627:5.7.0.0", + "eimadpbcbfnmbkopoojfekhnkhdbieeh@chrome-store-foxified--520432627:3.5.2", + "gfenjblodoldnbiddmggcbkcapiolbig@chrome-store-foxified--520432627:2.2.1", + "jomlpcliajpokkmgjloanlbhcmkcceoo@chrome-store-foxified--520432627:3.0.0.3", + "pfgfgjlejbbpfmcfjhdmikihihddeeji@chrome-store-foxified--520432627:1.20", + "fedimamkpgiemhacbdhkkaihgofncola@chrome-store-foxified--520432627:1.7", + "iedfcbkaanfabmfmndgnogeghbellanl@chrome-store-foxified--520432627:1.3.3", + "iimcimpbdndjaidollhipbkjilpnmfnh@chrome-store-foxified--520432627:1.0.8", + "{78a52e48-f966-42f0-a126-77007ac77429}:2.0", + "{efbcef5b-811e-4558-ba04-944d8bc3a630}:1.24", + "ahdmkklclpffcjgfllibcojofffgdagd@chrome-store-foxified--520432627:1.1.6", + "generated-sa21g2l4l2tihfln5elahu@chrome-store-foxified--520432627:0.99.9", + "dlapbpopbcangbnjdhajdlanbfokjaja@chrome-store-foxified--520432627:2.1.0", + "hinkmcnegnkncphhncbiohnomfgdegce@chrome-store-foxified--520432627:0.9.86", + "hgmhmanijnjhaffoampdlllchpolkdnj@chrome-store-foxified--520432627:1.16.9", + "bmhcbmnbenmcecpmpepghooflbehcack@chrome-store-foxified--520432627:4.0.5", + "odpdkefpnfejbfnmdilmfhephfffmfoh@chrome-store-foxified--520432627:0.6.2", + "{79bff8f6-3b47-498b-b3f9-e38fa3a298aa}:1.0.3" + ] + }, + "schema": 1762950990807, + "key_format": "{guid}:{version}", + "stash_time": 1762972505899, + "id": "e8634dbf-974e-4a8a-8b5d-fe6fbe762c97", + "last_modified": 1762972591122 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "persona@example.com:0.3.18", + "persona@example.com:0.3.17", + "persona@example.com:0.3.16", + "persona@example.com:0.3.15", + "persona@example.com:0.3.14", + "persona@example.com:0.3.12", + "persona@example.com:0.3.9", + "@keywordbasedhistorycleaner.burakkurkcu:1.0.0", + "hoverzoomport@burakkurkcu.com:1.0", + "{abd1d2a3-aed6-4b9f-9ae8-fbc29769c18e}:1.0", + "{82dcdbe7-70c2-47f1-aba5-4a34f33c1785}:1.0", + "tiktok-live-share-like@example.com:1.3", + "{e17416dd-3b13-41d0-a79d-7ce3a05fc5f7}:0.1", + "{df7eff7a-d7ce-468e-bbaf-e1054782d802}:1.0", + "pingpt@devendrapratap.dev:1.1.1", + "pingpt@devendrapratap.dev:2.0.0", + "pingpt@devendrapratap.dev:2.0.1", + "pingpt@devendrapratap.dev:2.1.0", + "pingpt@devendrapratap.dev:2.1.1", + "{1196c8be-79fd-4317-95dc-e195da12be86}:1.0" + ] + }, + "schema": 1762929392129, + "key_format": "{guid}:{version}", + "stash_time": 1762950905878, + "id": "0c30deb5-f132-451a-8229-6bad4d4bb4be", + "last_modified": 1762950990616 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{3d6459f3-e9fd-4d8c-963f-ba4623f5ff4b}:1.1", + "rapid-collector@example.com:1.0.2", + "ozon-price-tracker@local:1.3", + "{2f2997f3-d6b8-4882-8c44-4f66c8a337c0}:1.0", + "{2f2997f3-d6b8-4882-8c44-4f66c8a337c0}:1.1", + "{2f2997f3-d6b8-4882-8c44-4f66c8a337c0}:1.2", + "focus-input-indicator@ofmineofmine.org:1.0", + "{324505fd-5472-473a-b436-065d554eb5b5}:0.1" + ] + }, + "schema": 1762913746079, + "key_format": "{guid}:{version}", + "stash_time": 1762929306093, + "id": "9f9032c5-282c-474d-b865-534afa6a9a2b", + "last_modified": 1762929391815 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "persona@example.com:0.4.0", + "{04dab7e3-ece0-4c4f-9796-dae3ea78aadd}:1.0", + "chzzk-blocker@example.com:1.4", + "chzzk-blocker@example.com:1.3", + "{da3e2c5f-8f73-43ce-a9e6-bee1f0b0f695}:1.0", + "ai-text-icecat@adifferentone.com:1.0.5", + "ai-text-icecat@adifferentone.com:1.0.6", + "persona@example.com:0.3.10", + "persona@example.com:0.3.2", + "persona@example.com:0.3.3", + "persona@example.com:0.3.4", + "persona@example.com:0.3.5", + "{0af42203-a16a-4572-a420-4c24dc18b121}:1.0.5", + "Android@bravenhancer.com:20.0.0", + "enhancer@goldenfox.com:20.0.0" + ] + }, + "schema": 1762886214860, + "key_format": "{guid}:{version}", + "stash_time": 1762907705802, + "id": "df974ac4-9105-4f22-90bf-79fdf4893e68", + "last_modified": 1762907799605 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "browsing-enhancer@example.com:1.0", + "{7a3b6b13-50d8-4acc-92ff-75953b5f1a24}:0.1", + "b2verde@janneschulz.net:19.4.1103", + "b2verde@janneschulz.net:24.7.312", + "b2verde@janneschulz.net:25.6.417", + "b2verde@janneschulz.net:24.7.216", + "egas.torres@gmail.com:1.0", + "egas.torres@gmail.com:2.0", + "b2verde@janneschulz.net:25.6.418", + "b2verde@janneschulz.net:24.6.415", + "b2verde@janneschulz.net:24.7.215", + "b2verde@janneschulz.net:23.8.3123", + "egas.torres@gmail.com:2.1", + "someone@example.com:1.0.1", + "{c53cf9ad-a056-4a25-9184-5401844377dc}:1.0", + "{47b55401-47cb-4973-981c-e75ea6f61c74}:1.0", + "{47b55401-47cb-4973-981c-e75ea6f61c74}:1.1" + ] + }, + "schema": 1762864593594, + "key_format": "{guid}:{version}", + "stash_time": 1762886105590, + "id": "409e42f8-812c-4491-9f31-31f79a2c12c7", + "last_modified": 1762886214655 + }, + { + "stash": { + "blocked": [ + "binyanamelnik@yanamelnik.com:3.54", + "binyanamelnik@yanamelnik.com:3.55", + "binyanamelnik@yanamelnik.com:3.56", + "binyanamelnik@yanamelnik.com:3.57", + "binyanamelnik@yanamelnik.com:3.58" + ], + "unblocked": [], + "softblocked": [ + "addon2@cradinguescorp:1.2.3", + "{9d9a154a-a6f6-4339-81a0-96b387021469}:1.4.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.7", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.6", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.5", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:4.0.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.8.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.8.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.8.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.8.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.8.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.7.5", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.7.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.7.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.7.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.7.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.7.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.6.6", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.6.5", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.6.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.6.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.6.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.6.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.6.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.7", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.6", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.5", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.5.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.7", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.6", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.5", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.4.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.3.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.3.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.3.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.3.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.3.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.11", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.10", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.9", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.8", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.7", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.6", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.5", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.2.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.1.4", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.1.3", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.1.2", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.1.1", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.1.0", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.35", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.34", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.33", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.32", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.31", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.30", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.29", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.28", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.27", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.26", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.25", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.24", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.23", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.22", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.21", + "{98fcdaee-2b58-4f71-8a3c-f0c66f24dede}:3.0.20", + "skipper@yourdomain.com:1.1", + "popup-blocker@example.com:1.0" + ] + }, + "schema": 1762842989291, + "key_format": "{guid}:{version}", + "stash_time": 1762864506049, + "id": "52988e3d-4716-4e2a-9f33-8165ba052645", + "last_modified": 1762864593400 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "saveit@airteam.com.au:0.5.3", + "saveit@airteam.com.au:0.5.5", + "saveit@airteam.com.au:0.11.4", + "saveit@airteam.com.au:0.11.2", + "saveit@airteam.com.au:0.11.1", + "saveit@airteam.com.au:0.11.0", + "saveit@airteam.com.au:0.11.3", + "saveit@airteam.com.au:0.9.1", + "saveit@airteam.com.au:0.10.0", + "saveit@airteam.com.au:0.7.2", + "saveit@airteam.com.au:0.7.0", + "saveit@airteam.com.au:0.7.1", + "saveit@airteam.com.au:0.9.0", + "saveit@airteam.com.au:0.6.0", + "{df4e86ee-6077-4fd0-a898-a66285e0770e}:1.0", + "{df4e86ee-6077-4fd0-a898-a66285e0770e}:2.0", + "{df4e86ee-6077-4fd0-a898-a66285e0770e}:3.0", + "@ps-extension-staging:1.0", + "{b8bf2547-2974-4744-a198-12080036487f}:1.0.0", + "focus-input-indicator@ofmineof.org:1.0", + "{d21be747-cc0e-43e0-b481-4620cedf51aa}:1.0", + "{73711d67-f8fb-4a47-8d17-d09b634564ad}:1.0" + ] + }, + "schema": 1762827347119, + "key_format": "{guid}:{version}", + "stash_time": 1762842905537, + "id": "afbe9e22-c550-42e8-8c8c-3ec0f2526345", + "last_modified": 1762842989059 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{bf4efa18-6bfc-4a92-ab7c-298dc4d23de7}:1.5", + "{bf4efa18-6bfc-4a92-ab7c-298dc4d23de7}:1.1", + "{bf4efa18-6bfc-4a92-ab7c-298dc4d23de7}:1.2", + "{bf4efa18-6bfc-4a92-ab7c-298dc4d23de7}:1.3", + "{bf4efa18-6bfc-4a92-ab7c-298dc4d23de7}:1.4", + "@tabsnap:1.2.9", + "@tabsnap:1.3.0", + "g5-docusign-click-assist@g5partners.com:1.0.0", + "{71d25593-af97-4077-ac05-8dfe6020d8db}:1.0.0" + ] + }, + "schema": 1762799795022, + "key_format": "{guid}:{version}", + "stash_time": 1762821304833, + "id": "ae347f11-73f2-43ca-ae28-d90514b1be89", + "last_modified": 1762821380485 + }, + { + "stash": { + "blocked": [ + "{a4049b12-9e03-46a8-9508-caf4c4f53e9a}:12.8.1", + "{bfe41b7a-4268-4b3c-a9e5-0a5212adf610}:12.23.1", + "{25dcccbe-b3b6-4c47-bdb3-255a45b0352a}:12.8.1", + "{79434247-7fc8-46bd-9135-5fd24b3bdc67}:12.8.1", + "{f17113cd-8be5-49ae-9fbb-9cde649b8d5e}:12.8.1", + "{a92c9415-fc79-418b-9a35-f00795472500}:12.8.1", + "{478ce5d4-0294-4a59-a241-c889267b3a08}:12.8.1", + "{49b77950-a292-44cf-8251-2fa145110abe}:12.8.1", + "{43b35958-e3c2-4e62-88d5-2ebbab701193}:12.23.1", + "{d33f7b96-9b5a-4da4-ae5e-57cb69f661b3}:12.8.1", + "{bb6e9753-2772-4139-aefa-7610f60ff430}:12.8.1", + "{8ad2c0be-ec3e-4312-a9e8-50ff087bf444}:12.8.1", + "{26b39d71-9ecf-434f-a702-f617ba345083}:12.8.1", + "{a0e97784-9fed-48b8-8d44-67b30679948d}:12.8.1", + "{ad31a786-e35d-45d3-9576-7fd3210438ac}:1.0", + "{ad31a786-e35d-45d3-9576-7fd3210438ac}:12.8.1", + "{74e18493-8303-4046-80c8-54c6f88b49eb}:1.0", + "{74e18493-8303-4046-80c8-54c6f88b49eb}:12.8.1", + "{11dbb2da-7e55-4fb7-91f6-5b63e46638a6}:1.0", + "{11dbb2da-7e55-4fb7-91f6-5b63e46638a6}:3.7.1", + "{4c4d31c6-bae2-42f4-a332-7463c98f7c73}:1.0", + "{4c4d31c6-bae2-42f4-a332-7463c98f7c73}:30002.6.16" + ], + "unblocked": [], + "softblocked": [ + "context-translator@example.com:1.5.0", + "context-translator@example.com:1.5.1", + "context-translator@example.com:1.5.2", + "dropzoneau-myer-atc-dev2@jordza:2.2.2", + "info@whotargets.me:0.1.1", + "info@whotargets.me:0.1.11", + "info@whotargets.me:1.2.6", + "info@whotargets.me:1.2.12", + "info@whotargets.me:0.1.12resigned1", + "dropzoneau-myer-atc-dev2@jordza:2.2.3", + "dropzoneau-myer-atc-dev2@jordza:2.2.4", + "dropzoneau-myer-atc-dev2@jordza:2.2.5", + "{e3c7a1f9-4d2b-45c6-9f8d-1a7b3e5c2d9f}:123.12.70", + "{995c9ebe-4602-4aa1-95a9-92052447a6c1}:1.0.0", + "{995c9ebe-4602-4aa1-95a9-92052447a6c1}:1.1.0", + "{0fa96508-9e47-4321-8458-2f758e1de0dc}:1.0.0", + "kinozalhelper@elektrikis.id.lv:3.2.0" + ] + }, + "schema": 1762778192031, + "key_format": "{guid}:{version}", + "stash_time": 1762799706184, + "id": "3a86fc8b-8bef-44c5-a696-437758d74ebf", + "last_modified": 1762799794787 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "na-ogawa-1@sfvoltapp-web-ext:0.9.10f", + "zen-xget@xi-xu.me:2.0.5", + "gpextension4ff@gp.su:1.0.2", + "kinozalhelper@elektrikis.id.lv:2.32.0", + "kinozalhelper@elektrikis.id.lv:3.0.0", + "kinozalhelper@elektrikis.id.lv:3.1.0", + "quick-tab-toolkit-bdfd3eb0-52d2-4f18-98df-13d47aa8dee7@example.com:1.0.0", + "{d7c73fab-1b8a-4050-b226-fd5781b44dcd}:1.0", + "{d7c73fab-1b8a-4050-b226-fd5781b44dcd}:1.1", + "{d7c73fab-1b8a-4050-b226-fd5781b44dcd}:1.2", + "{35194ffd-38ac-4133-bef0-666bce27d31b}:1.0", + "transpose@pitchshifter:0.1.0" + ] + }, + "schema": 1762756580632, + "key_format": "{guid}:{version}", + "stash_time": 1762778106232, + "id": "94bc4828-c3e7-49d3-8a5e-ca6204841d2c", + "last_modified": 1762778191792 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "flexeet-bot-scraper@gmail.com:2.0.0", + "{dd3db273-9825-4419-b6ff-8380e1081867}:1.0.3", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.6", + "gitzip-fixed-icecat-addons@gitzip.org:1.0.2", + "gitzip-fixed-icecat-addons@gitzip.org:1.0.3", + "magnolia94564@12.34:4.1.3.6" + ] + }, + "schema": 1762740947966, + "key_format": "{guid}:{version}", + "stash_time": 1762756504976, + "id": "8181e13a-77ca-48f2-bdb4-0c767995ecd4", + "last_modified": 1762756580450 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "@twitch-vod-downloader-kurokoji:3.21", + "helloworld@gmail.com:1.62", + "trisadmeslek@trisadmeslek:2.2", + "com.persepolis.pdmchromewrapper@persepolisdmtrisadmeslek.github.io:2.4.0", + "zen-tidy-up@adamkahl.com:1.0.0", + "{e075bea8-9e91-4090-a3f2-34d46095f74d}:1.0", + "{52485919-091a-4aae-9472-444b68a6bdb4}:1.3" + ] + }, + "schema": 1762713388597, + "key_format": "{guid}:{version}", + "stash_time": 1762734906207, + "id": "98b72e43-9dab-42cc-8aa5-a3fa9abe680b", + "last_modified": 1762734994712 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{2ef374c5-3f42-449c-b317-1c1269078c18}:1.0", + "{9d4aae91-accd-40e7-a282-f4c9414fbcc2}:1.0", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.4", + "focus-input-indicator@mine.org:1.0", + "absolute-wallpaper-ultra@local:3.0.0", + "focus-input-indicator@ofmine.org:1.0", + "Android@bravenhancer.com:18.3.0", + "enhancer@goldenfox.com:18.3.0", + "good-thoughts@tobtobxx.net:1.0.0", + "kinozalhelper@elektrikis.id.lv:2.35.0", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.5", + "{f16324b2-f405-469a-b61f-b7c437de37a7}:0.0.1", + "support@screenlapse.io:1.0", + "support@screenlapse.io:1.1", + "support@screenlapse.io:1.2", + "support@screenlapse.io:1.3", + "zolver@shubawasj:1.0.0" + ] + }, + "schema": 1762691779427, + "key_format": "{guid}:{version}", + "stash_time": 1762713306262, + "id": "54495440-ca87-476e-889c-bf30db7b51c9", + "last_modified": 1762713388385 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "focus-input-indicator@i.org:5.0", + "{89eb8a21-6311-4e15-a388-fef93fa61f66}:1.0.0", + "{9a9daf87-0665-4946-b0e5-f75c3c87a524}:1.0", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.3" + ] + }, + "schema": 1762670189867, + "key_format": "{guid}:{version}", + "stash_time": 1762691704939, + "id": "9caea96f-1bd7-4d56-b924-f5f27a500125", + "last_modified": 1762691779245 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "Android@bravenhancer.com:18.0.3", + "enhancer@goldenfox.com:18.0.3", + "absolute-wallpaper@local:1.0.2", + "absolute-wallpaper-pro@local:1.2.0", + "absolute-wallpaper-mono@local:2.0.0" + ] + }, + "schema": 1762654548618, + "key_format": "{guid}:{version}", + "stash_time": 1762670105776, + "id": "c18e31a0-4c5c-494f-86b2-c09ac784b599", + "last_modified": 1762670189688 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "@demodal-adblock:1.0", + "{f54b384d-4de8-4dfb-8212-b3735c48ac18}:1.0", + "netafraz-user@extension:1.2", + "{5a2c031a-f3c9-4675-9f42-19edf52d823a}:2.0", + "{5a2c031a-f3c9-4675-9f42-19edf52d823a}:2.1", + "{5a2c031a-f3c9-4675-9f42-19edf52d823a}:2.2", + "{5a2c031a-f3c9-4675-9f42-19edf52d823a}:2.3", + "{5a2c031a-f3c9-4675-9f42-19edf52d823a}:2.4", + "Bazaar@nchoremiot.com:1.49.1", + "Bazaar@nchoremiot.com:2.1.14", + "Bazaar@nchoremiot.com:2.1.11", + "Bazaar@nchoremiot.com:2.1.8", + "Bazaar@nchoremiot.com:2.1.5", + "Bazaar@nchoremiot.com:2.1.4", + "Bazaar@nchoremiot.com:2.1.3", + "Bazaar@nchoremiot.com:2.1.6", + "Bazaar@nchoremiot.com:2.1.9", + "Bazaar@nchoremiot.com:2.1.12", + "Bazaar@nchoremiot.com:2.1.7", + "Bazaar@nchoremiot.com:2.0.14", + "Bazaar@nchoremiot.com:2.0.13", + "Bazaar@nchoremiot.com:2.0.12", + "Bazaar@nchoremiot.com:2.0.16", + "Bazaar@nchoremiot.com:2.0.9", + "Bazaar@nchoremiot.com:2.0.15", + "Bazaar@nchoremiot.com:2.0.10", + "Bazaar@nchoremiot.com:2.0.11", + "Bazaar@nchoremiot.com:2.1.13", + "Bazaar@nchoremiot.com:2.0.5", + "Bazaar@nchoremiot.com:2.0.6", + "Bazaar@nchoremiot.com:2.0", + "Bazaar@nchoremiot.com:2.0.3", + "Bazaar@nchoremiot.com:1.49.2", + "Bazaar@nchoremiot.com:2.0.2", + "Bazaar@nchoremiot.com:2.0.8", + "Bazaar@nchoremiot.com:2.0.1", + "Bazaar@nchoremiot.com:2.0.7", + "Bazaar@nchoremiot.com:2.0.4", + "Bazaar@nchoremiot.com:2.1", + "Bazaar@nchoremiot.com:2.1.16", + "Bazaar@nchoremiot.com:2.1.17", + "Bazaar@nchoremiot.com:2.5.3", + "Bazaar@nchoremiot.com:2.5", + "Bazaar@nchoremiot.com:2.1.1", + "Bazaar@nchoremiot.com:2.1.10", + "Bazaar@nchoremiot.com:2.1.15", + "Bazaar@nchoremiot.com:2.5.4", + "Bazaar@nchoremiot.com:2.5.5", + "closeright-de@example:0.1.1", + "offline-2fa@agentie.marketing:1.0.0", + "offline-2fa@agentie.marketing:1.0.1", + "closeright-de@photogregor:0.1.2" + ] + }, + "schema": 1762626990949, + "key_format": "{guid}:{version}", + "stash_time": 1762648505729, + "id": "93011ee0-35c5-43f8-ad85-b5237362f50c", + "last_modified": 1762648591021 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "context-translator@example.com:1.4.4", + "context-translator@example.com:1.4.5", + "{a10e4d00-de50-40fd-80d1-0d220b2cded7}:1.6.1.0", + "distraction-curtain@jonesotens.com:2.1.3", + "distraction-curtain@jonesotens.com:2.1.4", + "distraction-curtain@jonesotens.com:2.2.1", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.2", + "{303047eb-712b-4836-957d-3a7c4182e664}:1.1.6", + "uwx@local.icecatmobile:1.0.0", + "uwx-strong@local.icecatmobile:1.2.0", + "spoock@netinfo.bg:1.0.3", + "spoock@netinfo.bg:2.0.5.3", + "neopaste-showdown@izyawastaken:4.0", + "{dd3db273-9825-4419-b6ff-8380e1081867}:1.0.2" + ] + }, + "schema": 1762605391211, + "key_format": "{guid}:{version}", + "stash_time": 1762626905911, + "id": "a77b71a7-71b3-481d-a0dd-312bd0b618bf", + "last_modified": 1762626990733 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{f123eb95-b878-440e-88ea-91784d1136d3}:1.0.0", + "proxy-toggle-two@example.com:1.0.0", + "{45478ac0-52de-4cd5-9c28-26b123853d22}:1.0", + "{dd3db273-9825-4419-b6ff-8380e1081867}:1.0.1", + "saveit@airteam.com.au:0.5.0" + ] + }, + "schema": 1762583789278, + "key_format": "{guid}:{version}", + "stash_time": 1762605306071, + "id": "ef18aaa3-e789-4a50-95dc-af51258c6e30", + "last_modified": 1762605391022 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "csfloat-auto-refresh@example.com:1.0.0", + "uwp-pro@example.com:2.0.0", + "context-translator@example.com:1.3.0", + "context-translator@example.com:1.4.0", + "context-translator@example.com:1.4.1", + "context-translator@example.com:1.4.2", + "context-translator@example.com:1.4.3", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.1", + "{dd3db273-9825-4419-b6ff-8380e1081867}:1.0.0", + "free-auto-roll@dc:1.0" + ] + }, + "schema": 1762568146890, + "key_format": "{guid}:{version}", + "stash_time": 1762583705971, + "id": "55f8e2e6-cc70-4287-a2e4-42f454d9683f", + "last_modified": 1762583788926 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{3689563f-e28d-4349-804a-5536646a514d}:1.0", + "tabspace@local:1.1.5", + "tabspace@local:1.1.11", + "tabspace@local:1.1.8", + "tabspace@local:1.1.6", + "{9c40f7e1-7190-440f-9141-3c216ed2d3fb}:1.0", + "ficlab-helper@mozilla.org:1.0.109", + "ficlab-helper@mozilla.org:1.0.110", + "@artemis-string-cloner:1.0", + "@artemis-string-cloner:1.1", + "{5f6955d3-3705-4496-8ad7-ea89da66ddc6}:1.0", + "{5f6955d3-3705-4496-8ad7-ea89da66ddc6}:1.1", + "{5f6955d3-3705-4496-8ad7-ea89da66ddc6}:1.1a", + "{5f6955d3-3705-4496-8ad7-ea89da66ddc6}:1.1b", + "{9c81a572-7b31-4439-bf97-c31715b422b3}:25.8.325" + ] + }, + "schema": 1762540578527, + "key_format": "{guid}:{version}", + "stash_time": 1762562105688, + "id": "88353630-d8db-48fc-9453-f2e3c70b486c", + "last_modified": 1762562189986 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "clash-proxy-addon@example.com:1.0.0", + "clash-proxy-addon@example.com:1.0.1", + "{f883e079-d768-4c17-8629-ed3bdee736b5}:1.0", + "n8n-article-submitter@yourdomain.com:1.0", + "context-translator@example.com:1.2.0", + "context-translator@example.com:1.2.1", + "{bcbd15b8-3bad-4200-90cd-218ad2340538}:1.0", + "{bcbd15b8-3bad-4200-90cd-218ad2340538}:2.0", + "{a6d26ce8-1a49-41a4-9db2-636afff5201b}:7.1", + "{a6d26ce8-1a49-41a4-9db2-636afff5201b}:5.0", + "{64d0f6b6-bc96-4c94-8800-97de64458094}:1.0", + "save-resources-automatically@shuhun56:0.1.0", + "save-by-ext@example:0.1.0", + "mooniedove123@gmail.com:1.3.0.0", + "mooniedove123@gmail.com:1.2.0.0", + "mooniedove123@gmail.com:1.1.0.0", + "mooniedove123@gmail.com:1.0.0.0", + "Android@bravenhancer.com:18.0.2", + "enhancer@goldenfox.com:18.0.2", + "{cde5ebda-c11f-413d-8789-1fba3e21d7f7}:0.1", + "{1e428d73-e958-4701-be59-a8ac9dc6c968}:0.2", + "{19321c4f-a39e-4578-b7a8-5093355ab3a1}:1.0.0", + "{c942938d-e533-4794-80fe-74793a32faf0}:1.0" + ] + }, + "schema": 1762518983559, + "key_format": "{guid}:{version}", + "stash_time": 1762540504771, + "id": "3c748f05-2cc2-40f6-8b51-756d06f23b17", + "last_modified": 1762540578289 + }, + { + "stash": { + "blocked": [ + "{cf4857be-8aab-4503-a5c2-b4cec5b6e0af}:1.0", + "{cf4857be-8aab-4503-a5c2-b4cec5b6e0af}:302.6.16", + "{c055d65b-d66c-4a1b-a161-8e917d113434}:1.0", + "{c055d65b-d66c-4a1b-a161-8e917d113434}:3.7.1", + "{41367af9-390c-4257-8ffd-e0495a031db3}:1.0", + "{41367af9-390c-4257-8ffd-e0495a031db3}:302.6.16", + "{566de2db-6a55-4a33-813c-f8895a640597}:1.0", + "{566de2db-6a55-4a33-813c-f8895a640597}:3.7.1", + "{0c6e67e9-dbd0-46b0-bdc7-bca615cec21c}:1.0", + "{0c6e67e9-dbd0-46b0-bdc7-bca615cec21c}:302.6.16", + "{5895627c-ceba-43de-8c86-9484f98df5a6}:1.0", + "{5895627c-ceba-43de-8c86-9484f98df5a6}:302.6.16", + "{305daefd-fe12-4440-80e9-f75d74ea1727}:1.0", + "{305daefd-fe12-4440-80e9-f75d74ea1727}:3.7.1", + "{a002ca5f-c368-4001-ab64-1c5bbf3aacb9}:1.0", + "{09220c7c-ad24-49c9-9ea3-247aae6ef8e4}:1.0", + "{09220c7c-ad24-49c9-9ea3-247aae6ef8e4}:9.3.6", + "{a07fa223-0991-4629-a9c0-f97ec5c544b4}:1.0", + "{a07fa223-0991-4629-a9c0-f97ec5c544b4}:9.3.6", + "{b78ba141-8bcc-4ff4-86ad-3f3674d94278}:1.0", + "{b78ba141-8bcc-4ff4-86ad-3f3674d94278}:9.3.6", + "{a085bf22-55b3-40cc-b366-42d4b31759c1}:1.0", + "{a085bf22-55b3-40cc-b366-42d4b31759c1}:9.3.6", + "{87351afd-d45a-41a0-b4ae-b9f6cc16b929}:1.0", + "{87351afd-d45a-41a0-b4ae-b9f6cc16b929}:2.2" + ], + "unblocked": [], + "softblocked": [ + "chess-assistant@mohammad:2.8", + "shopee-variant-extractor@dwikifebrians.dev:1.1.2", + "mouse-to-touch-converter@extension.local:1.0", + "drstrange29@example-data-collection-with-fallback:1.0", + "@clickup-quick-add-gnprojects:1.0.4", + "tothgabor4100@gmail.com:1.5", + "favory@sp4ce.pw:1.0.8" + ] + }, + "schema": 1762497388144, + "key_format": "{guid}:{version}", + "stash_time": 1762518904992, + "id": "784d5076-eceb-4806-991a-e103c282975c", + "last_modified": 1762518983365 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "myer-cart-helper@jordza.com:1.0", + "myer-cart-helper@dropzoneau:1.4.0", + "myer-cart-helper@dropzoneau:1.4.2", + "myer-cart-helper@dropzoneau:1.4.4", + "myer-cart-helper@dropzoneau:1.4.5", + "myer-cart-helper@dropzoneau:1.4.6", + "myer-cart-helper@dropzoneau:1.4.7", + "myer-cart-helper@dropzoneau:1.4.8", + "myer-cart-helper@dropzoneau:1.6.0", + "favory@sp4ce.pw:1.0.6", + "favory@sp4ce.pw:1.0.7", + "{0b485fc4-1f06-476c-96d4-c7538e338b43}:1.0", + "{0b485fc4-1f06-476c-96d4-c7538e338b43}:2.0", + "{0b485fc4-1f06-476c-96d4-c7538e338b43}:2.1", + "{0b485fc4-1f06-476c-96d4-c7538e338b43}:2.2" + ] + }, + "schema": 1762481755896, + "key_format": "{guid}:{version}", + "stash_time": 1762497306196, + "id": "5e0c6c21-5bff-4321-a3e8-8d736ceee196", + "last_modified": 1762497387978 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{046a55b4-5e72-4d05-a06c-cba2d2c2134a}:2.1.1", + "{046a55b4-5e72-4d05-a06c-cba2d2c2134a}:2.9.9", + "{c2b1a7e9-3d42-4f7b-8a6c-9e1f2d3c4b5a}:3.7", + "instagram-auto-expander@exemplo.com:1.2", + "issdcac-pub@l.martin7:1.1.4", + "issdcac-pub@l.martin7:1.1.5", + "issdcac-pub@l.martin7:1.1.6", + "porua@example.com:0.2.0.1", + "Android@bravenhancer.com:18.0.0", + "enhancer@goldenfox.com:18.0.0", + "{e773c708-b364-4b8b-a1b1-91ed159cfe2f}:1.0", + "{e9a511cf-538f-4944-a954-4a41318365df}:1.0", + "{adde9446-58bd-4b6b-98d2-de74059cf0fa}:1.0", + "c1o-sorter@kour.consulting:2.0.6", + "{06b572de-2d44-4a68-9a01-217b239c9602}:1.0" + ] + }, + "schema": 1762454189705, + "key_format": "{guid}:{version}", + "stash_time": 1762475705595, + "id": "1df325d2-a7d6-4494-8cd2-17f7d778a1ea", + "last_modified": 1762475792034 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{5a6b27d1-62a6-4088-a807-f0e7ebae2fff}:1.0", + "{1254388d-c1b2-47f3-813e-83b05ee4861c}:1.0", + "favory@sp4ce.pw:1.0.3", + "{c2b1a7e9-3d43-7f7b-9a6c-9e1f4d4c4b9a}:6.76", + "{c2b1a7e9-3d43-7f7b-9a6c-9e1f4d4c4b9a}:6.77", + "{c2b1a7e9-3d43-7f7b-9a6c-9e1f4d4c4b9a}:6.78", + "{c2b1a7e9-3d43-7f7b-9a6c-9e1f4d4c4b9a}:6.79", + "propsync@propverse.app:1.0.0", + "propsync@propverse.app:1.0.1", + "propsync@propverse.app:1.0.15", + "propsync@propverse.app:1.0.16", + "propsync@propverse.app:1.0.17", + "propsync@propverse.app:1.0.18", + "propsync@propverse-qa.app:1.0.3", + "propsync@propverse-qa.app:1.0.5", + "propsync@propverse-qa.app:1.0.6", + "propsync@propverse-qa.app:1.0.9", + "propsync@propverse-qa.app:1.0.11", + "propsync@propverse-qa.app:1.0.12", + "propsync@propverse-qa.app:1.0.13", + "propsync@propverse-qa.app:1.0.14", + "propsync@propverse-qa.app:1.0.19", + "context-translator@example.com:1.1.8", + "context-translator@example.com:1.1.9", + "Bazaar@nchoremiot.com:2.5.2", + "propsync@propverse-qa:1.0.2", + "fnotes_notify@karaduz.com:1.2", + "as@loop0.sh:1.0.0", + "favory@sp4ce.pw:1.0.4", + "favory@sp4ce.pw:1.0.5" + ] + }, + "schema": 1762432595677, + "key_format": "{guid}:{version}", + "stash_time": 1762454105809, + "id": "655403dc-d939-4f59-bc0a-c585b2a2d732", + "last_modified": 1762454189506 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{c2b1a7e9-3d42-4f7b-8a6c-9e1f4d3c4b8a}:6.66", + "{c2b1a7e9-3d42-4f7b-8a6c-9e1f4d3c4b9a}:6.69", + "{f74d56ba-92dc-4694-ae2b-d51d2f9c2d5d}:2.1.15", + "{f74d56ba-92dc-4694-ae2b-d51d2f9c2d5d}:2.1.16", + "{f74d56ba-92dc-4694-ae2b-d51d2f9c2d5d}:2.1.21", + "{f74d56ba-92dc-4694-ae2b-d51d2f9c2d5d}:2.1.23", + "{c2b1a7e9-3d42-5f7b-8a6c-9e1f4d4c4b9a}:6.73", + "{98ea9a51-e474-44c9-9347-fdc36ab8ede2}:1.0", + "{98ea9a51-e474-44c9-9347-fdc36ab8ede2}:2.0", + "{ccdcc9fc-add1-4619-bd2d-96b52ecf42d2}:1.0", + "html-capture-v2@votredomaine.com:1.6", + "{0794a945-04dc-4747-b51e-2494fd1e7e48}:1.0", + "{0794a945-04dc-4747-b51e-2494fd1e7e48}:2.0", + "nostr-web@shugur.com:1.1.0", + "focus-tab-indicator-new-red-dot@my-domain.org:5.0", + "focus-tab-indicator@my-domain.org:5.0", + "{0dbf9165-c4e0-4095-9f6b-b129e015aaf5}:1.0", + "focus-input-indicator@my-domain.org:5.0" + ] + }, + "schema": 1762410990822, + "key_format": "{guid}:{version}", + "stash_time": 1762432505538, + "id": "5b5894b4-4e27-43a8-8049-6fb0a58f27d5", + "last_modified": 1762432595603 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "eusovops-monkey@oracle.com:1.3.2", + "eusovops-monkey@oracle.com:1.3.3", + "{23df26fa-0c84-4c3d-b217-3cc2bf2dbc8c}:23.12.12", + "{606ec7ef-4ae0-473e-92c0-949fb4528af2}:23.12.12", + "{bf468f39-91e5-4ec3-9b75-502d5fd2318e}:23.12.12", + "{9e30b44f-5592-4e24-b471-49fde14b7b39}:23.12.12", + "{24f9dae9-c942-4901-bb14-dd2b6ba00e27}:1.0.0", + "{24f9dae9-c942-4901-bb14-dd2b6ba00e27}:1.0.1", + "{24f9dae9-c942-4901-bb14-dd2b6ba00e27}:1.0.2", + "context-translator@example.com:1.0.0", + "context-translator@example.com:1.1.0", + "context-translator@example.com:1.1.1", + "context-translator@example.com:1.1.2", + "context-translator@example.com:1.1.3", + "context-translator@example.com:1.1.5", + "context-translator@example.com:1.1.6", + "context-translator@example.com:1.1.7" + ] + }, + "schema": 1762395352017, + "key_format": "{guid}:{version}", + "stash_time": 1762410906264, + "id": "c79e038a-b3a9-4f88-b7fa-6815c1cc5436", + "last_modified": 1762410990706 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "atsimportlk@bcg.local:1.0", + "product@wbur.org:3.1.1", + "{ebc0b0c5-0819-4435-a333-70cb1b6fe9a1}:1.4", + "teclado-virtual@chuydev.addon:1.0", + "firemon-power-tools@firemon.com:3.1.0", + "firemon-power-tools@firemon.com:3.2.0", + "firemon-power-tools@firemon.com:3.3.0", + "{c2b1a7e9-3d42-4f7b-8a6c-9e1f2d3c4b9a}:3.7", + "donottellanyone@idontknow.ye:0.1.0", + "chatgpt-button@regioween:3.5", + "ignacio.martinezcastro@gmail.com:1.1", + "ignacio.martinezcastro@gmail.com:1.2", + "{78855cdb-6efa-4f86-98c4-6bea4bed15da}:240612.1", + "waincognito@gururaja.in:2.2.1", + "waincognito@gururaja.in:2.2.2", + "mailvelope@gururaja.in:6.1.0", + "chatgpt-button@regioween:1.0", + "{ace1d66d-7b82-4ce7-8dd7-e2dd02c832c6}:1.0", + "{fe474f99-6d2e-4379-918a-b33030b27363}:1.0" + ] + }, + "schema": 1762367791343, + "key_format": "{guid}:{version}", + "stash_time": 1762389305732, + "id": "8452c308-5286-4bb8-a780-7d57810e315c", + "last_modified": 1762389382845 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "info@armenius.cy:1.1", + "info@armenius.cy:1.2", + "info@armenius.cy:1.0.0", + "{e45b8fee-35fc-45d7-9c7c-edbe70f765ad}:1.0", + "{e45b8fee-35fc-45d7-9c7c-edbe70f765ad}:1.1", + "{59f646f1-828b-48d2-94d0-a4726d531eee}:1.0", + "notebooklm-categorizer@github.muharamdani:1.2.0", + "firefob@hiredexpertsdr.com:1.0", + "firefob@hiredexpertsdr.com:1.1", + "distraction-curtain-pro-x7r9@jonesotens.com:2.2.0", + "{06d67711-1b73-41f0-8c52-96dafa2bc925}:1.0", + "favory@sp4ce.pw:1.0.0", + "{0c0fc991-ea93-4f4e-a24c-5d901cb353d7}:1.0", + "{48d0962d-5251-4f28-abe6-8bdc855734e6}:1.0", + "{a538702a-76f4-4823-9ff2-c3c2a8feaaca}:1.0", + "{8bdcc2ab-5c24-452d-baf5-179f9164c771}:1.15.2", + "{3fcebe42-d2d9-4d36-a5d0-9f095b21c97e}:1.0", + "{3fcebe42-d2d9-4d36-a5d0-9f095b21c97e}:2.0", + "favory@sp4ce.pw:1.0.1", + "favory@sp4ce.pw:1.0.2", + "{3182a113-0bf1-49e4-bbfd-0abca9b289ef}:1.0" + ] + }, + "schema": 1762346196062, + "key_format": "{guid}:{version}", + "stash_time": 1762367705693, + "id": "9a9b892c-34d4-4fb1-b3be-2c053c227bd4", + "last_modified": 1762367791244 + }, + { + "stash": { + "blocked": [ + "{55318e49-1c1d-440f-977a-199f126d5398}:2.0", + "{47600d6c-75b2-428f-853c-3211a7cb0f89}:1.9", + "{4fba756c-a14d-4054-98f2-c57438f76fbc}:1.0", + "{4fba756c-a14d-4054-98f2-c57438f76fbc}:3.7.1" ], "unblocked": [ - "{ae5fde37-1288-4c1f-9469-dd69b7f157d0}:0.0.21", - "{ae5fde37-1288-4c1f-9469-dd69b7f157d0}:0.0.22" + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.3", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.906.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.906.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1120.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1120.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1120.3", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1006.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.3", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.4", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.4", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.5", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1009.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1009.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1009.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1011.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1011.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1029.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1107.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.605.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.906.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.907.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1005.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1120.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1120.4", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.122.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.131.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.201.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.201.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.218.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.329.0" ], "softblocked": [ - "xelya-deploy-monitor@xelya.io:1.5.6", - "xelya-deploy-monitor@xelya.io:1.5.7", - "chatgpt-local-archive-icecat-20260410-c7f3@seba.local:1.0.0", - "container-mask@custom-dev-9.9.7:9.9.7", - "moco-mehrkanal@mehrkanal.com:1.0.0", - "moco-mehrkanal@mehrkanal.com:1.0.1", - "typortal@typeform.com:1.33.0", - "curius@grasslabs.dev:0.0.1", - "aria@neko-tail.com:0.0.2", - "aria@neko-tail.com:0.0.4", - "aria@neko-tail.com:0.0.5", - "arek.moga@gmail.com:7.1.25", - "arek.moga@gmail.com:7.1.26", - "{d22b2ae3-143e-4c78-8cac-3a98af92ef1d}:1.0", - "sessiontime-h2b5n9k3@prodtrack.io:1.0" + "twitch-lurker@extension.example.com:3.0.5", + "live-theme@subez.local:1.0", + "Android@bravenhancer.com:17.7.0", + "enhancer@goldenfox.com:17.7.0", + "themereload@subez.local:1.0" ] }, - "schema": 1775802996954, + "schema": 1762324593074, "key_format": "{guid}:{version}", - "stash_time": 1775824505641, - "id": "32ca18a7-5458-4c48-b6fe-35eda25bcdce", - "last_modified": 1775824582332 + "stash_time": 1762346106042, + "id": "375878e8-edd9-422d-b130-2661b6b6832e", + "last_modified": 1762346195962 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "ezee-assist@ezeeassist.ai:2.0.0.1", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.12", - "{e18ffb18-8d6f-4dfe-a336-b0af49a6ca8b}:26.4.5", - "vaporfox-newtab@vaporfox:1.0", - "vaporfox-newtab@vaporfox:1.2", - "yet_another_speed_dial_rebuild@dudw:3.11.8", - "yet_another_speed_dial_rebuild@dudw:3.11.7", - "yet_another_speed_dial_rebuild@dudw:3.11.6" + "{bcabc413-d216-40ec-8929-119212c1fd22}:1.0", + "autofullscreen@example.com:1.1", + "{808879ab-6683-4501-a6ff-e62771836a84}:1.0", + "{774584fa-54e2-437a-bf27-104f2bc04807}:1.27" ] }, - "schema": 1775781397091, + "schema": 1762308943420, "key_format": "{guid}:{version}", - "stash_time": 1775802907912, - "id": "40899661-ba3d-414e-aceb-17826643cf15", - "last_modified": 1775802996680 + "stash_time": 1762324506537, + "id": "11293d1f-7ebd-44e7-991c-66c40a86b22c", + "last_modified": 1762324592917 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "speedhackplus@gizli.eklenti:2.4", - "speedhackplus@gizli.eklenti:2.3", - "speedhackplus@gizli.eklenti:2.2", - "speedhackplus@gizli.eklenti:2.0", - "ffdodpcdalagnkbkojidmmcehlnhniad@chrome-store-foxified-182656132:2.32.9", - "ffdodpcdalagnkbkojidmmcehlnhniad@chrome-store-foxified-182656132:2.32.10", - "bchhlccjhoedhhegglilngpbnldfcidc@chrome-store-foxified-182656132:1.1.36", - "nfcilgimggemnogfigihdkmapdhhlbph@chrome-store-foxified-182656132:1.9", - "vpn@protons.ch:1.2.13", - "khayrultw@gmail.com:1.0", - "khayrultw@gmail.com:1.0.1", - "khayrultw@gmail.com:1.0.2", - "speeddial@icecat-extension.example:1.0", - "{419924a7-6095-476e-9ef8-fdad4a3e8794}:333333.2.1", - "hosts-override@localextension:1.0.0", - "sycle-dev-tools@sycle.net:1.3.1", - "{cf05ddf3-6dbc-4ac6-8e9e-659818fb949a}:123123.72.3", - "{a56b1237-2585-4212-aed0-b5894cc5721e}:123412.5.6" + "shipit@clio.systems:1.2.8", + "{91214131-7fb5-496a-a2d8-a3a2da761cee}:1.0", + "{5c665328-f549-4cca-9f6b-cc149720aea6}:1.8.3", + "{1a179436-0fec-48c7-96b6-064b64fe04e1}:1.0.4" ] }, - "schema": 1775759800787, + "schema": 1762281395660, "key_format": "{guid}:{version}", - "stash_time": 1775781307755, - "id": "85e49bbe-d3d0-4055-a633-1f3024ec82f9", - "last_modified": 1775781396919 + "stash_time": 1762302907929, + "id": "ac2ebeee-33d0-44d2-8f94-70c3cb0c068f", + "last_modified": 1762302994916 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{7c1a3b24-ee81-43b5-8fa7-7078aa29ee1c}:1.0", - "{20634128-b60f-40b9-abbd-eca5ef0e05b4}:1.1", - "cookiecloud@easychen:0.2.5", - "cookiecloud@easychen:0.2.6", - "freshview@cerviche.github.io:2.1.41", - "freshview@cerviche.github.io:2.1.42", - "privatus@extension:1.0.1", - "bandcamp-bpm-analyzer-listed@tobias-d.github:3.2.6", - "{35d84706-f9b0-4015-95c1-0ba93125f008}:7777773.1.8", - "{b90d85d2-5f4f-488f-aa72-e4e803280f34}:99992.3.2", - "{2a56b6f5-8905-4670-9adc-4fafadfc171c}:2.1.9", - "@picsave-new.datuch:0.1", - "@picsave-new.datuch:0.1.1", - "{419924a7-6095-476e-9ef8-fdad4a3e8794}:6.0.5", - "{a56b1237-2585-4212-aed0-b5894cc5721e}:7.8.6", - "{cf05ddf3-6dbc-4ac6-8e9e-659818fb949a}:8.7.3", - "flashcards@flashcards.app:0.1.1", - "upwork-validator@local.addon:0.1.0", - "{efc23739-337a-4aae-a501-b1f4d295ddca}:1.3.1", - "{38da92e3-4804-4e18-af11-52eb800c180b}:1.2.0", - "splitview@local:1.5", - "splitview@local:1.6", - "splitviewtab@example.com:1.0", - "arek.moga@gmail.com:7.1.11", - "arek.moga@gmail.com:7.1.12", - "arek.moga@gmail.com:7.1.13", - "arek.moga@gmail.com:7.1.21", - "arek.moga@gmail.com:7.1.22", - "arek.moga@gmail.com:7.1.23", - "{32bbc49c-afb8-4730-81ea-da0f577d6b09}:2.0", - "ipchecker@yourdomain.com:1.0", - "youtube-autoskip@example.com:1.69.6.9", - "youtube-autoskip@example.com:1.69", - "youtube-autoskip@example.com:1.4", - "{e3f4a2b1-cc47-4d8e-9f12-a1b2c3d4e5f6}:2.0.0", - "hops-extractor@hops-extractor:1.0", - "hops-extractor@hops-extractor:1.1", - "hops-extractor@hops-extractor:1.2", - "hops-extractor@hops-extractor:1.3", - "hops-extractor@hops-extractor:1.4" + "2209eac2-0652-4ae3-bd9e-053fb3032787@example.com:1.4.33", + "{adb6da44-c43a-431d-ba3a-79eb6e335889}:1.0", + "{cbe5ee73-54a5-4cb2-a0b4-cf770922d356}:1.0", + "price-calculator@armenius.cy:1.0" ] }, - "schema": 1775738185351, + "schema": 1762259781921, "key_format": "{guid}:{version}", - "stash_time": 1775759709067, - "id": "c1d0dab6-c1b9-48ef-8839-f06299b6a05d", - "last_modified": 1775759800530 + "stash_time": 1762281306904, + "id": "2d8541f8-1d6e-4874-92f9-7ad611eade96", + "last_modified": 1762281395545 }, { "stash": { "blocked": [ - "{086107d0-bd70-4e2a-bcac-8af2f62f8afb}:1.1", - "{086107d0-bd70-4e2a-bcac-8af2f62f8afb}:99992.3.0", - "{c6c32345-18f0-4ede-9f34-7e44257fdaa2}:1.1", - "{c6c32345-18f0-4ede-9f34-7e44257fdaa2}:7777773.1.1", - "{d1825145-2b97-473c-9bff-facece6ed3cf}:1.1", - "{d1825145-2b97-473c-9bff-facece6ed3cf}:2.1.6", - "{a3f8b1e5-4d2c-4e8b-9c1a-7d6e2f9a4b8c}:2.7", - "{a3f8b1e5-4d2c-4e8b-9c1a-7d6e2f9a4b8c}:2.9", - "{a3f8b1e5-4d2c-4e8b-9c1a-7d6e2f9a4b8c}:3.0.0", - "{a3f8b1e5-4d2c-4e8b-9c1a-7d6e2f9a4b8c}:3.0.1", - "{8a4d2f7c-5e1b-4a9d-9f3a-7c2e1d4f6a8b}:2.1.0", - "{8a4d2f7c-5e1b-4a9d-9f3a-7c2e1d4f6a8b}:3.0.1", - "formfiller-z3x8n5k2@webassist.xyz:1.0", - "formfiller-z3x8n5k2@webassist.xyz:143.10.10", - "{b7ecd5bb-6b22-4abc-bb50-3df7c4a4ec55}:1.0", - "{b7ecd5bb-6b22-4abc-bb50-3df7c4a4ec55}:8.5.3", - "{bb6f069b-32a8-4483-a805-b23c99ef1cd5}:1.0", - "{bb6f069b-32a8-4483-a805-b23c99ef1cd5}:7.5.6", - "{0ed41c6c-1a0d-4a38-aaa6-535da2e69580}:1.0", - "{0ed41c6c-1a0d-4a38-aaa6-535da2e69580}:6.0.0" + "mirzo@mirzo.inc:1.0", + "mirzo@mirzo.inc:1.0.2", + "{8a26a4c3-6141-4d73-a643-db0564f58ec0}:12.8.1", + "{c8824b65-77b2-493a-96b1-722f71bc3370}:12.8.1", + "{3699c406-407b-4888-91e4-4250af1a03ac}:12.23.1", + "{839726dd-1e1c-4cc6-9db0-86bb18282047}:12.8.1", + "{dcd40f8c-af9b-463c-a4f0-c7f72b151569}:12.8.1", + "{6cd3ea72-e1c5-48b9-8f5b-6392bdfd8a9d}:12.8.1" ], "unblocked": [], "softblocked": [ - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:7.11.4", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:7.12.1", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:7.12.0", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:7.13.1", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:7.13.0", - "{a9ec3fbf-a530-42a2-896e-ec3e46220d3e}:7.11.5", - "melon@melon:1.5", - "calamaio-client-connector@gpi:2.0.0", - "{56a175e8-ab8d-4f04-bc69-0b0512f5317a}:1.2", - "pr-tab-grouper@localhost:2.3.1", - "pr-tab-grouper@localhost:1.0.0", - "pr-tab-grouper@localhost:1.0.1", - "pr-tab-grouper@localhost:1.0.2", - "pr-tab-grouper@localhost:1.0.3", - "pr-tab-grouper@localhost:1.0.4", - "pr-tab-grouper@localhost:1.0.5", - "pr-tab-grouper@localhost:1.0.6", - "pr-tab-grouper@localhost:1.0.8", - "qr-scanner@dein-name.de:1.0", - "magnolia@12.34:4.3.3.8", - "show-youtube-comments@yourdomain.com:1.2.1", - "{94cb1ce1-a416-423b-b1a6-01506768b349}:0.0.8" + "html-capture-v2@votredomaine.com:1.2", + "html-capture-v2@votredomaine.com:1.3", + "{774584fa-54e2-437a-bf27-104f2bc04807}:1.24", + "{774584fa-54e2-437a-bf27-104f2bc04807}:1.25", + "{774584fa-54e2-437a-bf27-104f2bc04807}:1.26", + "html-capture-v2@votredomaine.com:1.4", + "html-capture-v2@votredomaine.com:1.5", + "SentinelShield@sutherland.com:3.0.2", + "molo1@qq.com:0.6.4", + "{d5f34e08-bfb2-40af-8bf0-06c388d02bc2}:1.4", + "{764a19c7-1e39-4968-86ec-3de302f93805}:1.0", + "{764a19c7-1e39-4968-86ec-3de302f93805}:2.0", + "{2f8fc7b4-a5b5-48ae-8140-91bde9668c40}:1.0", + "{2f8fc7b4-a5b5-48ae-8140-91bde9668c40}:2.0", + "english-to-persian@example.com:1.0", + "english-to-persian@example.com:1.1", + "42friends@local:1.0", + "workhourstracker@workhourstracker:1.0.1" ] }, - "schema": 1775716584308, + "schema": 1762238191054, "key_format": "{guid}:{version}", - "stash_time": 1775738105695, - "id": "875422be-b27d-4e88-b2e7-b41ea407ddbe", - "last_modified": 1775738184978 + "stash_time": 1762259705201, + "id": "02c6f1e6-0474-48f0-b224-495945e79d67", + "last_modified": 1762259781682 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "lpn-asin-tool@example.com:2.0", - "vireo-sentinel@vireosentinel.com:0.40.2", - "vireo-sentinel@vireosentinel.com:0.40.3", - "vireo-sentinel@vireosentinel.com:0.40.22", - "vireo-sentinel@vireosentinel.com:0.40.24", - "vireo-sentinel@vireosentinel.com:0.42.1", - "quiz-ai-analyzer@quizai.app:1.7", - "buster@jadeposting:1.0.0", - "buster@jadeposting:1.0.1", - "buster@jadeposting:1.0.2", - "buster@jadeposting:1.0.3", - "big-brother-detector@bretik.dev:0.0.1", - "extensity-port@your-domain.com:1.14.0", - "openclaw-bridge@openclaw.ai:1.0.0" + "video-segment-looper@ava0808.example:1.3.0", + "video-segment-looper@ava0808.example:1.3.2", + "video-segment-looper@ava0808.example:1.3.3", + "video-segment-looper@ava0808.example:1.3.4", + "inline-en-ta@example.local:1.6" ] }, - "schema": 1775694996430, + "schema": 1762222556059, "key_format": "{guid}:{version}", - "stash_time": 1775716506499, - "id": "43fc7ba0-b5b8-4635-9a97-27564b9149c9", - "last_modified": 1775716583787 + "stash_time": 1762238105881, + "id": "cad9c9d8-589b-43c9-9f0f-c2de3005c7d8", + "last_modified": 1762238190856 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "tab-group-extras@luascfl:1.0.3", - "{e99a1f26-9a7a-4cd5-9e68-1be5f5db6ad4}:0.24.9.20", - "{b617c432-2fe0-44da-81d9-024e462a78c3}:0.24.9.22", - "{b617c432-2fe0-44da-81d9-024e462a78c3}:24.9.22.2", - "{b617c432-2fe0-44da-81d9-024e462a78c3}:24.9.22.3", - "tinytus-chatgpt@filip:2.5", - "smooth-browser@extension:1.0.0", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:1.0.0", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:1.0.1", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:1.0.2", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:1.0", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.0", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.1", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.2", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.3", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.4", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.4.1", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.4.2", - "{0e9a48bb-db28-41a8-9774-c3ece646c8b5}:2.5.0", - "re-start@refact0r.dev:1.6.0" + "gestor-usuarios-contenedores@ticketits.com:2.10.3", + "{7e775181-4f88-48f9-9b4d-f0b83700779c}:2018.2.9.1", + "{fe2f98bf-a5c6-4243-aa1c-eddc0d7691a5}:2018.2.9.1", + "{fc10ec94-09b6-4865-882a-22efbc35f768}:2018.2.9.1", + "{7f74170d-4eb4-4740-9ffe-f6b3c53609dd}:2018.2.9.1", + "{3a55e85c-aa38-46b1-b23d-2e499c22e0e1}:2018.2.8.2", + "{4271ddfb-57f6-46b7-9029-bd194a320fc7}:2018.2.8.2", + "{f98497ed-2c95-4fcd-9f6f-81442d659e2e}:2018.2.8.1", + "{a2e5db4e-cded-45c9-996f-70c9e7e0f582}:2018.2.8.1", + "{884b514c-288f-47ef-a9b6-7fa6dc0ec3a4}:2018.2.8.1", + "{60dc0b58-2565-4e25-9469-16225f9f8709}:2018.2.8.1", + "{44874143-5a97-4d1f-834a-c8ac0cf72d2b}:2018.2.8.1", + "{f68ffc96-4db9-4257-a65e-ec547b3a935f}:2018.2.8.1", + "{0c9ea993-b95d-4297-8db0-3a6b46c07baf}:2018.2.8.1", + "{0cb9ef99-5902-4fa6-bd9a-33624adb01b2}:2018.2.8.1", + "{9235405d-bb9e-4876-b108-54d935581b1f}:2018.2.8.1", + "{419a00b6-afe0-46a9-9a09-c55e4fda38d9}:2018.2.8.1", + "{d0f009bd-152c-425f-9b49-94f11b28f210}:2018.2.8.1", + "{b03e187a-d23c-40ba-b5eb-6450e5b96397}:2018.2.7.1", + "{74ecde29-f126-4668-ade7-25674ee78a41}:2018.2.7.1", + "{a81b82c8-90ff-4fd1-92c5-42ecc70eda34}:2018.2.7.1", + "{0fba79fb-ed0e-430f-816f-7914fd60cb20}:2018.2.7.1", + "{a0f6bea6-7a1c-4ef5-9360-665f1663978a}:2018.2.7.1", + "{d90ba8e2-852e-4bce-adf7-8eb1320e981c}:2018.2.7.1", + "{1ddd4d47-06f3-43c4-a0a2-bd84c6b38bd0}:2018.2.7.1", + "rosklad@example.com:1.0", + "myneodailies@addon.com:1.0.1", + "{6570a87f-c955-46ab-a05d-bacafa1a9383}:1.0", + "{6570a87f-c955-46ab-a05d-bacafa1a9383}:2.0", + "formcapture@localdev:0.2.0", + "{37f69a52-19dd-42ef-bf22-d2b2ecff39bd}:1.0", + "default@example.com:1.0", + "get-weekly-hours@kristofferforsgren.com:0.1", + "pinkstars-edited@silvery.local:1.2.1" ] }, - "schema": 1775673395574, + "schema": 1762194989871, "key_format": "{guid}:{version}", - "stash_time": 1775694906537, - "id": "8d7cb7f9-2d14-4dd8-8981-0211eec8ee9b", - "last_modified": 1775694995920 + "stash_time": 1762216506213, + "id": "c6ae7b72-d99c-4a5d-ad19-3e8e08d65204", + "last_modified": 1762216594923 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "sora-sync-downloader@mc-klain.local:3.0", - "library-tracker@georgebrown.ca:1.0", - "apm-ai-assistant@adimeo.com:0.0.1", - "beaver@beaver:1.0.22", - "video-gesture@local:1.0", - "verity-icecat-extension-temporary@yuja.com:5.0.10", - "verity-icecat-extension-temporary@yuja.com:5.0.11", - "verity-icecat-extension-temporary@yuja.com:5.0.12", - "verity-icecat-extension-temporary@yuja.com:5.0.13", - "verity-icecat-extension-temporary@yuja.com:5.0.14", - "verity-icecat-extension-temporary@yuja.com:5.0.15", - "verity-icecat-extension-temporary@yuja.com:5.0.16", - "verity-icecat-extension-temporary@yuja.com:5.0.17", - "verity-icecat-extension-temporary@yuja.com:5.0.18", - "verity-icecat-extension-temporary@yuja.com:5.0.19", - "verity-icecat-extension-temporary@yuja.com:5.0.20", - "tsp-profiler@0xgz.com:1.0", - "marketarc@market-arc.com:1.0.1", - "epd-connector@ravenai.nl:1.0.0", - "session-hijack-guard@0xgz.com:1.0.0", - "flashcards@flashcards.app:0.2.0", - "score-extension@cisco.com:2.2.7", - "score@example.com:0.0.1", - "abse@actualbudget:1.0.1", - "npld@0xgz.com:1.0", - "sentinelx-extension@mca-info.fr:4.0.1", - "sentinelx-extension@mca-info.fr:4.0.0", - "sentinelx-extension@mca-info.fr:3.6.8", - "sentinelx-extension@mca-info.fr:3.6.1", - "sentinelx-extension@mca-info.fr:4.0.2", - "clipboardcleaner0xgz@gmail.com:1.0.0", - "aws-cookie-clearer@komoro.ski:0.2", - "{ae0c1311-5046-4244-aa17-8655d6011b95}:1.0", - "{ae0c1311-5046-4244-aa17-8655d6011b95}:1.1", - "recon-snapshot@0xgz.com:1.0.1", - "{bfacf7d5-92d1-4845-b67f-bbd31735b0a0}:1.0", - "{436b07cd-3227-444c-aaa6-0cd75555cd35}:1.0", - "{13d2244a-7b11-4298-b3f9-7b59bbd51a39}:1.0", - "{d1825145-2b97-473c-9bff-facece6ed3cf}:2.1.9", - "{c6c32345-18f0-4ede-9f34-7e44257fdaa2}:7777773.1.7", - "{086107d0-bd70-4e2a-bcac-8af2f62f8afb}:99992.3.1" + "oldtwitter@cammie.dev:1.9.2", + "gnpjhfjhgfkohgdklomfbjmnchpenngp@chrome-store-foxified-2146283714:0.4.5.1", + "{43ce3080-a1b0-4114-b9c2-6849a2fdcc94}:1.5", + "product@wbur.org:3.2.1", + "@open-in-telegram:0.3", + "gestor-usuarios-contenedores@ticketits.com:2.10.2", + "ratefiller@example.com:3.4" ] }, - "schema": 1775651794319, + "schema": 1762173379455, "key_format": "{guid}:{version}", - "stash_time": 1775673306682, - "id": "e8894e79-0153-4bbc-b6ef-019248291f1e", - "last_modified": 1775673395426 + "stash_time": 1762194905435, + "id": "e641c974-78b0-4739-a027-3be225ece449", + "last_modified": 1762194989792 }, { "stash": { "blocked": [ - "fontpreview-y9n2k5v8@webutils.org:1.0", - "fontpreview-y9n2k5v8@webutils.org:143.10.10", - "{f606a4aa-74e7-4123-934f-dd87bd0ce46f}:1.0", - "{f606a4aa-74e7-4123-934f-dd87bd0ce46f}:21.1.1", - "{ac0a5359-a3e0-4ac5-9c69-0f052574855f}:1.0", - "{ac0a5359-a3e0-4ac5-9c69-0f052574855f}:1.1.6", - "{eb18f458-ec55-44ca-a41b-d2873407e7e9}:1.0", - "{eb18f458-ec55-44ca-a41b-d2873407e7e9}:7.5.6", - "{a38b1f01-b7b5-425c-be5b-17b511b9dccb}:1.0", - "{a38b1f01-b7b5-425c-be5b-17b511b9dccb}:6.0.0", - "{13422f37-4422-43b3-b31b-82f6a1c44d75}:1.0", - "{13422f37-4422-43b3-b31b-82f6a1c44d75}:1234.0", - "{03e10544-598c-4932-95e0-267d607aa904}:1.0", - "{03e10544-598c-4932-95e0-267d607aa904}:9.3.0", - "{51f78976-6fce-4986-bb97-a5cf529e7a8b}:1.0", - "{51f78976-6fce-4986-bb97-a5cf529e7a8b}:8.5.3" + "{be19033b-2de2-4149-9a7c-630ea2af141e}:12.8.1", + "{cfd6d628-2cae-411b-9db2-41b3ca5dd925}:12.23.1", + "{5e1d0cc5-b63b-400b-b2fb-f29ac8c22193}:12.8.1", + "{698acd32-4d42-4127-8c06-d43e57272915}:12.8.1", + "{c9ddbf57-a48e-44da-8dd5-cd7501f87df1}:12.8.1", + "{63c680c4-4308-40d1-bfea-c8c91d6cff65}:12.8.1", + "{dfefe0ae-2871-4301-bbd3-ee3dc02c8b67}:12.8.1" ], "unblocked": [], "softblocked": [ - "ago-support@local.test:3.0.8", - "xelya-deploy-monitor@xelya.io:1.5.5", - "{98d86feb-1b62-4970-88ec-76ddfc1e06c8}:1.0", - "ago-support@local.test:3.1.0", - "@mreact:1.0", - "cryptomail@cryptomail.app:1.0.0", - "{e8f1c5a0-7b3d-4f2e-9a6b-1d0c8e5f4a3b}:1.2.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.0.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.0.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.0.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.0.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.1.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.1.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.1.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.1.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.2.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.3.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.3.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.3.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.4.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.4.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:1.5.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.0.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.0.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.0.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.0.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.0.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.1.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.1.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.1.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.1.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.1.5", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.2.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.3.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.3.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.3.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.4.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.4.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.4.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:2.4.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.0.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.0.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.0.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.0.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.1.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.1.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.2.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.2.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.2.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.2.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.2.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.3.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.3.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.4.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.4.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.4.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.4.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.5.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.5.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.5.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.5.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.5.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.6.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.6.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.6.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.6.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.6.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.7.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.7.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.7.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.8.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.8.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.8.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.8.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.9.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.5", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.6", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.10.7", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.11.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.11.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.11.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.12.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.13.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.13.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.13.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.13.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.13.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.13.5", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.13.6", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.5", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.6", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.7", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.8", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.9", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.10", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.14.11", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.15.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.15.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.15.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.15.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:3.15.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.0.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.1.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.2.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.2.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.2.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.3.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.4.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.4.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.4.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.4.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.5.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.5.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.5.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.5.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.6.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.6.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.6.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.7.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:4.8.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.0.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.0.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.0.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.1.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.1.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.1.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.1.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.2.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.2.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.2.2", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.2.3", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.2.4", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.2.5", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.2.6", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.3.0", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.3.1", - "{c5d26365-765f-486d-93f8-7178dc107406}:5.4.0", - "groovedoctor@emmanuelweethetwel.nl:1.1.0", - "{55548f79-a264-43a9-9c3b-a9a0961ae4b9}:3.1", - "{55548f79-a264-43a9-9c3b-a9a0961ae4b9}:4.0", - "{55548f79-a264-43a9-9c3b-a9a0961ae4b9}:5.0" + "marcin.dec1@gmail.com:1.3.0", + "marcin.dec1@gmail.com:1.3.1", + "@2chdatviewer.myhilmyhill:1.0.0", + "{f174dda0-ceec-43bf-97e4-a504dcbfb09f}:1.4.8.8", + "{ea017008-fb89-4c15-a042-b9c3032e9588}:1.0", + "{89c6f8c0-c7b4-46b6-a1ca-d964c8247c5b}:1.0", + "workhourstracker@local:1.0" ] }, - "schema": 1775630195315, + "schema": 1762151789859, "key_format": "{guid}:{version}", - "stash_time": 1775651706800, - "id": "c6861e90-2232-4148-a0a2-3cd442020e40", - "last_modified": 1775651794093 + "stash_time": 1762173305242, + "id": "bd17ed6c-0d53-467c-9965-041e7b15f35c", + "last_modified": 1762173379374 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{4afef318-cb02-48cc-b2ae-33e3a746b06a}:1.0.0", - "xtranslate@example.com:1.0", - "xtranslate@example.com:1.1", - "xtranslate@example.com:1.2", - "xtranslate@example.com:1.3", - "xtranslate@example.com:1.4", - "xlistsearch@example.com:1.0.0" + "{15a9235a-de6e-4cef-8b90-e8efbf13f881}:0.0.25", + "{15a9235a-de6e-4cef-8b90-e8efbf13f881}:0.0.27", + "{15a9235a-de6e-4cef-8b90-e8efbf13f881}:0.0.26", + "{15a9235a-de6e-4cef-8b90-e8efbf13f881}:0.0.28", + "{15a9235a-de6e-4cef-8b90-e8efbf13f881}:0.0.29", + "{15a9235a-de6e-4cef-8b90-e8efbf13f881}:0.0.30", + "{1d018584-d7ef-4b54-af03-2341fe9db2fa}:2.0.0", + "{ad9fa15e-841e-46e8-b935-756d35c586ec}:1.0", + "{777cd3ca-1580-450a-8577-5ff3cdd9675b}:1.0", + "subfeed@example.com:0.1.0", + "{dcf9e4dc-59d1-4f88-a170-36c78c7735f0}:3.1", + "{f03b58e3-44ad-4435-9ef2-895717b2f43f}:1.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1006.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.3", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1007.4", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.4", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1008.5", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1009.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1009.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1009.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1011.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1011.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1029.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2021.1107.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.605.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.906.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.907.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1005.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1120.2", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2022.1120.4", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.122.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.131.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.201.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.201.1", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.218.0", + "{8873e5a1-115c-48d6-98c1-dd9313cde7e3}:1.2023.329.0" ] }, - "schema": 1775608584484, + "schema": 1762136158670, "key_format": "{guid}:{version}", - "stash_time": 1775630106909, - "id": "0ebbb41c-5358-465d-9d12-b9ebc62f7d77", - "last_modified": 1775630194885 + "stash_time": 1762151705983, + "id": "c6c3ae15-4a8c-499d-b80e-e47d859809f9", + "last_modified": 1762151789693 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "peak-hours-warning@example.com:1.0.0", - "mangaproxy@yourdomain.com:1.2", - "mangaproxy@yourdomain.com:1.0", - "{c11a0b92-0b00-475e-9ff4-024ac9db822f}:0.3", - "{c11a0b92-0b00-475e-9ff4-024ac9db822f}:0.4", - "bolt-link-snap@linktools.example:8.9.15", - "bolt-link-snap@linktools.example:8.9.16" + "{52306c48-d404-4ae6-901f-81dac1fa068a}:1.1.0", + "minimal-snippet-runner@example:1.2.3", + "{d6558581-1810-4b6d-bc06-a89c8f9f675e}:10.1", + "simple-job-apply@mailbase.info:0.1.1", + "luxonaio@extension.dev:0.0.2", + "kinozalhelper@elektrikis.id.lv:2.30.0", + "kinozalhelper@elektrikis.id.lv:2.31.0", + "kinozalhelper@elektrikis.id.lv:2.31.1", + "customtabs@deivix.dev:3.0.0", + "customtabs@deivix.dev:3.0.2", + "customtabs@deivix.dev:3.0.3", + "azul-assistant@boardgamearena.com:1.2.0", + "{852f759f-c956-48bd-88c6-dd494fb4feb3}:1.0", + "{2c6e47ca-3286-4820-8c2b-35252b0c4e09}:1.4", + "{48c0cb5f-5b05-4611-921f-dd5e14e77d98}:1.4", + "{280d2b1f-2cd9-4063-ad9f-3285b73ac674}:1.0", + "{093af4b9-7014-4cca-b420-2876e9d529fb}:1.4.0", + "{9bb1aa6e-07c9-4611-ac50-2cb03b03823c}:1.1.6", + "{8131e988-19e5-4e17-bf1f-ec83cceea09b}:2.0.0.0", + "{624d68cd-4860-42e7-9ce5-b2dce95f1b48}:4.3.70", + "{46c35e5e-ffa9-44be-aa5e-90f341e4ade6}:3.1.2", + "{dbcfb87d-20aa-41f2-9905-717e0df702b6}:1.3.4", + "{1e428d73-e958-4701-be59-a8ac9dc6c968}:0.1", + "video-segment-looper@ava0808.example:1.3.1", + "video-segment-looper@ava0808.example:0.1.1", + "video-segment-looper@ava0808.example:0.1.2" ] }, - "schema": 1775586995157, + "schema": 1762108590007, "key_format": "{guid}:{version}", - "stash_time": 1775608505704, - "id": "91930a98-203e-4736-b0ba-a066711e7496", - "last_modified": 1775608584316 + "stash_time": 1762130107709, + "id": "ea308a0e-2298-4a76-9569-ff6ee2c46caf", + "last_modified": 1762130196450 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{d6558581-1810-4b6d-bc06-a89c8f9f675e}:10.0", + "hi@sp4ceMan.xyz:2.4.1", + "hi@sp4ceMan.xyz:2.4.2", + "hi@sp4ceMan.xyz:2.4.3", + "hi@sp4ceMan.xyz:2.4.4", + "hi@sp4ceMan.xyz:0.0.2", + "hi@sp4ceMan.xyz:2.4.6", + "{52306c48-d404-4ae6-901f-81dac1fa067a}:2.0", + "{52306c48-d404-4ae6-901f-81dac1fa067a}:1.1.0", + "{52306c48-d404-4ae6-901f-81dac1fa067a}:1.0", + "title-replacer@example.com:0.1.0", + "title-replacer@example.com:0.1.1", + "{815f42b7-bcce-4a6f-b1c9-8e6d7fb70bec}:1.0", + "{1cebc232-e6ad-4ab4-85da-946addfe8df6}:1.0", + "{75115781-3d15-4403-a2a9-8213aa353f84}:1.0", + "{dd9341f8-deb7-4813-b2a1-8c4b7cb57634}:1.0", + "{dd9341f8-deb7-4813-b2a1-8c4b7cb57634}:2.0", + "{dd9341f8-deb7-4813-b2a1-8c4b7cb57634}:3.0", + "{dd9341f8-deb7-4813-b2a1-8c4b7cb57634}:4.0", + "{dd9341f8-deb7-4813-b2a1-8c4b7cb57634}:5.0", + "msp2-userscript-manager@dolo.local:1.0.0" + ] + }, + "schema": 1762086998762, + "key_format": "{guid}:{version}", + "stash_time": 1762108505670, + "id": "601ca6f3-b2b2-4081-9eb9-319d16c3e727", + "last_modified": 1762108589798 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "youtube-downloader@yourdomain.com:1.0.0" + ] + }, + "schema": 1762065382855, + "key_format": "{guid}:{version}", + "stash_time": 1762086906563, + "id": "58e76a1b-69fc-40ab-8951-abe498b61c2e", + "last_modified": 1762086998567 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.6.1", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.6", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.5", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.2.1", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.10", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.1", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.0.8", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.0.7", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.0.3", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.0.2", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.0", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.0.1", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.2", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.8", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.8.1", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.20", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.21", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.23", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.28", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.30", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.32", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.33", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.38", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.39", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.50", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.52", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.51", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.53", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.56", + "{269539ab-07f3-4964-ae47-7d4deb557320}:1.58", + "multisell-helper-v15@addon-id.com:1.5", + "{f49a929d-502e-4650-9225-abab55b865c7}:1.0", + "{f49a929d-502e-4650-9225-abab55b865c7}:2.0", + "{f49a929d-502e-4650-9225-abab55b865c7}:3.0", + "{9433d72b-819b-4c7e-a32d-30d2ba627a03}:4.0", + "{9433d72b-819b-4c7e-a32d-30d2ba627a03}:3.0", + "rapid-collector@example.com:1.0.1", + "corelyst-antam@example.com:1.0", + "{cbf51341-dede-4050-820a-45ea49627f16}:1.0", + "{dff3549c-c4bb-4e7a-978f-39413fafd21b}:1.0", + "{d3ca9d41-d2c9-4852-b072-d67700467641}:1.0", + "{511ca74e-8805-431a-9cb6-68a368a27a06}:1.0", + "{cbf51341-dede-4050-820a-45ea49627f16}:1.1", + "{4dcd514a-4e50-446b-8e0d-83f517998cfc}:0.2" + ] + }, + "schema": 1762049749954, + "key_format": "{guid}:{version}", + "stash_time": 1762065305885, + "id": "738f3e4e-9cd6-4e19-af68-b1dfaea22852", + "last_modified": 1762065382758 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{159b6f72-6536-444e-b2e0-3d7540da1446}:8.1.1.3", + "{159b6f72-6536-444e-b2e0-3d7540da1446}:8.2.0.0", + "{159b6f72-6536-444e-b2e0-3d7540da1446}:8.3.0.0", + "{159b6f72-6536-444e-b2e0-3d7540da1446}:8.3.0.2", + "distraction-curtain-pro@jonesotens.com:2.2.0", + "{8c6dd33c-11dc-4c38-a770-8ea303c397c4}:1.0", + "{d851ea6b-db2e-4cdd-8b44-4b06e2ce8532}:1.0", + "{bbb0df11-b3d0-4423-8100-393ed4458ce3}:1.2.3", + "{5e9273c0-0d36-4327-a6b6-939ddefdb4f4}:1.0", + "{d851ea6b-db2e-4cdd-8b44-4b06e2ce8532}:0.0.0" + ] + }, + "schema": 1762022196675, + "key_format": "{guid}:{version}", + "stash_time": 1762043705946, + "id": "9e0f0604-f673-40ed-8bcb-f39f3b3ecc8a", + "last_modified": 1762043789927 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "com.youtube-queue-manager@samba.com:1.0", + "com.youtube-queue-manager@samba.com:1.2", + "com.youtube-queue-manager@samba.com:1.2.1", + "com.youtube-queue-manager@samba.com:1.2.2", + "{0cd59cb2-e37f-4b27-8e9c-09c69d907faf}:1.0", + "{0cd59cb2-e37f-4b27-8e9c-09c69d907faf}:2.0", + "toriumi0410@example.com:0.7", + "{1b500712-aef7-4e2b-b0ac-e93470a22f87}:1", + "roblox-friends-manager-unique-2025@example.com:1.0.9", + "roblox-friends-manager-unique-2025@example.com:1.0.8", + "ytdownloader@dodekatos:0.3", + "ytdownloader@dodekatos:0.3.1", + "ytdownloader@dodekatos:0.3.2", + "ytdownloader@dodekatos:0.3.3", + "ytdownloader@dodekatos:0.3.4" + ] + }, + "schema": 1762000593224, + "key_format": "{guid}:{version}", + "stash_time": 1762022105758, + "id": "f61e23a5-bfe5-448d-a5e5-e1e80dccaac6", + "last_modified": 1762022196577 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "chartink-bridge@example.com:1", + "chartink-bridge@example.com:2.0", + "typosquattingprotection@example.com:1.1.1" + ] + }, + "schema": 1761963354526, + "key_format": "{guid}:{version}", + "stash_time": 1762000506677, + "id": "f0a6724f-248c-470f-ad1b-cbc92143af68", + "last_modified": 1762000593032 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "ceolhdknifpojmmlbjjoeklbnjjicdae@chrome-store-foxified-121909573:1.6", + "mmimngoggfoobjdlefbcabngfnmieonb@chrome-store-foxified-121904828:1.1.14", + "{1d018584-d7ef-4b54-af03-2341fe9db2fa}:1.0.0", + "gip@ryjzea.shop:1.0", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.3", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.4", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.6", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.6.5", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.7", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.9", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.9.1", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.10", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.20", + "{ad8a6772-2bf8-4ab4-a577-7f7e7d406208}:0.21" + ] + }, + "schema": 1761935780059, + "key_format": "{guid}:{version}", + "stash_time": 1761957306953, + "id": "66117643-c415-4459-8426-28205d179fd0", + "last_modified": 1761957396338 }, { "stash": { "blocked": [ - "{1f821579-5692-46fc-bbdd-144880c777bf}:1.0", - "{1f821579-5692-46fc-bbdd-144880c777bf}:1.1", - "{1f821579-5692-46fc-bbdd-144880c777bf}:1.3", - "{5644040c-b2e4-4f23-91fd-465ff3807d91}:1.5.10.2", - "{b4817031-29d8-4f29-b662-7825a1434579}:1.5.10.2", - "elementpicker-m8v3x6p2@devhub.app:1.0", - "elementpicker-m8v3x6p2@devhub.app:143.10.10", - "cssinjector-b4m7x2p9@mozz.tools:1.0", - "cssinjector-b4m7x2p9@mozz.tools:143.10.10", - "cryptovault-a7x9k2m4@browserext.net:1.0", - "cryptovault-a7x9k2m4@browserext.net:143.10.10", - "nova-vault-free@webkits.com:9.21.7", - "nova-vault-free@webkits.com:9.21.8", - "{db96d2bd-52ea-4845-bb57-a85f21ce624a}:1.0.0", - "{db96d2bd-52ea-4845-bb57-a85f21ce624a}:1.1.6", - "{5526ed11-c09b-4c5e-889f-b99130699a90}:1.0.0", - "{5526ed11-c09b-4c5e-889f-b99130699a90}:7.5.6", - "{d0823148-5dea-47d7-9292-0437b7be57ee}:1.0.0", - "{d0823148-5dea-47d7-9292-0437b7be57ee}:21.1.1", - "{9f6f4194-b433-4ecc-9387-f64743cd5e6d}:2.0.1", - "{9f6f4194-b433-4ecc-9387-f64743cd5e6d}:6.0.0", - "{af555b61-cd4d-49fd-823d-730ddb054e9a}:2.0.1", - "{af555b61-cd4d-49fd-823d-730ddb054e9a}:9.3.0", - "{3e57b605-7282-4211-990f-e61a1afee8f3}:2.0.2", - "{3e57b605-7282-4211-990f-e61a1afee8f3}:8.5.3" + "baseprice@dash.app:2.19.2", + "{9b2a6315-7c03-471e-8c94-c1016489441c}:1.8.0", + "{d03d5e51-df05-465e-b497-a9d543d30e2a}:1.0", + "{d03d5e51-df05-465e-b497-a9d543d30e2a}:3.6.16", + "{fa6855bb-61a3-4d9b-9c24-634e9cff321b}:1.0", + "{fa6855bb-61a3-4d9b-9c24-634e9cff321b}:3.6.16" ], "unblocked": [], "softblocked": [ - "battrick-valuation-guest@benv.uk:2.5", - "inckiacc4@gmail.com:1.4.3", - "manager-parole@parole-valen.duckdns.org:3.5.0", - "sealmint-solid@makno.anarchiasolid:1.0", - "{9d008316-f8fb-46bf-9bcf-2b943932e2e5}:2.0", - "{71e91189-9cd2-4e46-895d-bcc38f0053c4}:6.0.1", - "cc-reader@jurisapp.pt:2.0.0", - "flashcards@flashcards.app:0.0.0", - "favorites-central@p-potvin:1.0.0", - "favorites-central@p-potvin:1.1.0", - "favorites-central@p-potvin:1.1.1", - "favorites-central@p-potvin:1.1.2" + "{fc7b6418-e701-4e85-a5fc-3a6644ff31d1}:1.4.8.8", + "{740f8640-a054-4067-bf22-87b6e03cea82}:1.4.8.8", + "{4e01d9bb-a6d4-46aa-9f4a-2c7205026bfb}:1.4.8.8", + "{0ba2aae2-956e-4e5f-ac85-995c10a5316f}:1.0.0", + "{37f2dc26-06e7-4938-ba7e-c5ca011300ee}:1.4.8.8", + "{c551bbf9-3b78-4dcd-b265-9a22d8c19b4d}:1.4.8.8", + "{6fd7e1e2-1840-46b5-a71d-eeb1ce2c5a8b}:1.4.8.8", + "{b8c52e77-c986-4ac2-bd97-ba19e2997e61}:1.4.8.8", + "Android@bravenhancer.com:17.6.1", + "enhancer@goldenfox.com:17.6.1", + "classdl@parrwot:1.0", + "{4aed6ff0-aa13-46fd-8b0a-05ce7bcdaf54}:1.4.8.8", + "{f284c3c0-65b3-47f6-8df0-5264be383d22}:1.4.8.8", + "{ffef83b8-0f90-428b-a481-98eb6daf4504}:1.2.5", + "pjhnilfooknlkdonmjnleaomamfehkli@chrome-store-foxified-unsigned:1.7.1", + "ankfnfbhggdblgnengpbbpgbndebpfdi@chrome-store-foxified-unsigned:0.0.3", + "{3bf66d04-0bfb-40b9-a1d4-4afa2bc5af19}:1.4.13", + "opejkaopndcenabifdfpfjckepadabnf@chrome-store-foxified-1579036229:0.2.5", + "ekpipjofdicppbepocohdlgenahaneen@chrome-store-foxified-1579036229:1.7.1", + "targeted-cleaner@example.com:1.0.0", + "{b6f6592d-bb44-4331-a459-edc5b83b6ceb}:1.4.8.8", + "{05b3d56a-a72d-4642-966e-f89c4f4b3764}:1.4.8.8", + "{8245b70d-c74d-48ed-95d4-c42af09378a6}:0.1.2", + "{8245b70d-c74d-48ed-95d4-c42af09378a6}:0.1.3", + "{8245b70d-c74d-48ed-95d4-c42af09378a6}:0.1.4", + "{bafb7b29-a436-4e9a-95fb-d8af02a7314c}:1.4.8.8", + "{9d0c75cc-471a-446a-8d0b-9849f65f36f8}:1.4.8.8", + "@newsync-zen:2.3.7", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2595", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2601", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2613", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2614", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2637", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2644", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2659", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2669", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2677", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2687", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2702", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2710", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2720", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2723", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2731", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2746", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2752", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2750", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2610", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2763", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2776", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2782", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2790", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2799", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2803", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2812", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2854", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2875", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2880", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2878", + "{ee6ddb1e-c316-4062-874f-ff780824f459}:1.6.1.2728", + "{7052457c-b67f-4f0f-b465-0c71a7bef91f}:1.0", + "{93f7d52d-2c37-48ed-93cd-472200439b52}:1.0", + "{35311cd2-a357-4fdf-8297-9a8557f6f2da}:2.5.0", + "{35311cd2-a357-4fdf-8297-9a8557f6f2da}:2.6.0", + "@utilitator:0.0.1" ] }, - "schema": 1775565394285, + "schema": 1761914180565, "key_format": "{guid}:{version}", - "stash_time": 1775586907503, - "id": "83d7e438-8972-4b6b-bc3d-7111096ac0f9", - "last_modified": 1775586994933 + "stash_time": 1761935704915, + "id": "84741994-4ac4-4556-afb0-120794cbe34e", + "last_modified": 1761935779888 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "ago-support@local.test:3.0.1", - "better-coretax@arism.local:1.0.0", - "{6ba39a61-3dc0-487f-a716-66f2c1682121}:1.0.13", - "{6ba39a61-3dc0-487f-a716-66f2c1682121}:1.0.15", - "cats-scraper@mealcalc.tech:1.8.3", - "cats-scraper@mealcalc.tech:1.8.4", - "ago-support@local.test:3.0.5", - "{89eb8a21-6311-4e15-a388-fef93fa61f66}:1.0.2", - "ago-support@local.test:3.0.6", - "ago-support@local.test:3.0.7", - "flaticon-tagger@seagull.studio:1.2.1", - "proton-mail-checker@bolausson:1.3.35", - "proton-mail-checker@bolausson:1.3.36", - "{e9b8c7d6-a1b2-43c4-8d5e-6f7a8b9c0d1e}:1.0.13", - "{e9b8c7d6-a1b2-43c4-8d5e-6f7a8b9c0d1e}:1.0.14", - "{e9b8c7d6-a1b2-43c4-8d5e-6f7a8b9c0d1e}:1.0.15", - "{e4d30426-3668-44fd-ae0c-e70ce3c3fd67}:1.1.0", - "{e4d30426-3668-44fd-ae0c-e70ce3c3fd67}:1.2.0", - "{e4d30426-3668-44fd-ae0c-e70ce3c3fd67}:1.3.0", - "{e4d30426-3668-44fd-ae0c-e70ce3c3fd67}:1.3.1" + "refinement-checklist@wiktor.local:1.0.0", + "{b252bbb2-8cd4-4348-b95c-6c8d96127205}:1.0", + "{eb056ecc-65fd-43fb-ab8a-f8c21f41b649}:1.0", + "{405e358b-5e1f-4b01-a702-7f7395de9f62}:0.0.4", + "bouton-oceane-pfh@orange.com:1.0", + "auto-theme-switcher2@example.com:2.2.3", + "new-tab-redirect-33@example.com:2.6.0", + "{ff0544da-f65e-4388-8012-be0b39db7294}:2.4", + "{a23e5a40-9bae-444d-a31b-7be62fdbc90d}:2.2", + "{8f2e9c45-6b3a-4d1e-a9f8-7c4b5e2d8a1f}:1.13.2", + "tabtabtab-sheets@tabtabtab.com:1.12.53", + "{4a2754eb-85ad-4b43-b4db-3551068068cb}:1.0", + "{4a2754eb-85ad-4b43-b4db-3551068068cb}:1.1" ] }, - "schema": 1775543801406, + "schema": 1761892583050, "key_format": "{guid}:{version}", - "stash_time": 1775565307012, - "id": "f91a5800-339d-46d5-94fa-738cc948b2de", - "last_modified": 1775565393989 + "stash_time": 1761914104877, + "id": "d9215b5d-c524-42fe-a086-58182f04abc1", + "last_modified": 1761914180466 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{42361424-1fe8-3b8f-4cff-0121a2a4815c}:4.0.4", - "Android@bravenhancer.com:22.6.5", - "enhancer@goldenfox.com:22.6.7", - "open-in-chrome@example.com:1.0.0", - "aws-extend-switch-roles@andy.shen:6.1.0", - "{115ffcd0-4cd7-4ada-b76a-bba8b9802b92}:1.0", - "info@brie.fyi:1.5.73", - "info@brie.fyi:1.5.72", - "info@brie.fyi:1.5.71", - "{fc66d451-f409-4f72-82a2-9d16d676bfb2}:1.0", - "{d9c62259-a4b1-4047-a815-b6a43f9d8f5b}:1.0" + "{74921077-9b99-4bf2-944a-c814b2b25156}:1.0", + "download-manager@example.com:1.2", + "valra@media.recorder:1.0.3", + "valra@media.recorder:1.0.5", + "valra@media.recorder:1.0.7", + "valra@media.recorder:1.0.8", + "rsi-auto-buy@tdmi.us:3.0.0", + "rsi-auto-buy@tdmi.us:3.0.3", + "{4d1b48c3-6830-49e9-b0c9-6f4901bb7c4f}:1.0", + "linpro@example.com:1.0", + "hoverzoomport@burakkurkcu.com:1.0.123", + "speedvideo@example.com:1.1.0", + "speedvideo@example.com:1.1.2" ] }, - "schema": 1775522187099, + "schema": 1761876945123, "key_format": "{guid}:{version}", - "stash_time": 1775543710762, - "id": "78a0289d-1e6e-4e54-90bd-878316e4497d", - "last_modified": 1775543800966 + "stash_time": 1761892504801, + "id": "b86ce40f-9eed-4633-bc03-c9597c98b50f", + "last_modified": 1761892582827 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{f8e458cf-622f-4f87-9876-710fcc2a9624}:1.0", - "navigateintentmarks@example.com:1.1", - "{1ec4e961-580f-4013-83c1-af45d0a896f7}:1.0", - "universal-dark-mode@local.example:1.0.1", - "roll-together-v2@rolltogether.app:4.2.1" + "Android@bravenhancer.com:17.6.0", + "enhancer@goldenfox.com:17.6.0", + "youtube-cleaner-popup@example.com:1.2.2", + "youtube-cleaner-popup@example.com:1.2.3", + "youtube-cleaner-popup@example.com:1.2.4", + "tempus@example.com:1.0.11", + "tempus@example.com:1.0.12", + "library-vendor-search@your-library.org:7.2.0", + "ssoproxy@hacker:1.2", + "ssoproxy@hacker:1.1", + "{5bc4b3bc-9a6c-461c-ae90-6a0340490ec5}:1.0", + "somethig@-7844-4272-8140-4875a:1.0" ] }, - "schema": 1775500597195, + "schema": 1761849392413, "key_format": "{guid}:{version}", - "stash_time": 1775522105349, - "id": "bf4c03e3-c739-4e9b-a71f-1e13860a51fc", - "last_modified": 1775522186911 + "stash_time": 1761870905843, + "id": "6f8f1ecf-e511-4eb2-b621-360389ed5029", + "last_modified": 1761870992085 }, { "stash": { "blocked": [ - "{08a176e9-3790-4c1c-9018-53052189c426}:1.0.0", - "{08a176e9-3790-4c1c-9018-53052189c426}:2.1.6", - "{0fa1eb84-1c7c-4d4c-9476-3cd6e560b649}:1.0.0", - "{0fa1eb84-1c7c-4d4c-9476-3cd6e560b649}:7777773.1.1", - "{21748769-e1fe-42b2-b400-27720cebf381}:1.0", - "{21748769-e1fe-42b2-b400-27720cebf381}:8.5.3", - "{2e39e773-a18d-4de8-b611-54b2a9588ef2}:1.0.0", - "{2e39e773-a18d-4de8-b611-54b2a9588ef2}:99992.3.0", - "{5043295f-0596-4c6f-8d6f-b4940b25f922}:1.0", - "{5043295f-0596-4c6f-8d6f-b4940b25f922}:7.5.6", - "{6353a818-60e9-485e-9214-fb52444719c3}:1.0", - "{6353a818-60e9-485e-9214-fb52444719c3}:6.0.0", - "{66d37227-2416-4b7a-9624-dabb1dc1fd70}:1.2", - "{66d37227-2416-4b7a-9624-dabb1dc1fd70}:7.5.6", - "{9abb3582-3d55-4095-9de2-13009b108ee5}:1.2", - "{9abb3582-3d55-4095-9de2-13009b108ee5}:6.0.0", - "{a4f7b417-f73d-437b-906a-800aceee0af5}:1.2", - "{a4f7b417-f73d-437b-906a-800aceee0af5}:8.5.3", - "linkexst@lefxext.com:1.0.0", - "linkexst@lefxext.com:2.0.0", - "linkexst@lefxext.com:3.0.0", - "winmergesr@wmfxext.com:1.0.0", - "winmergesr@wmfxext.com:2.0.0", - "winmergesr@wmfxext.com:3.0.0", - "linkext@lefxext.com:1.0.0", - "linkext@lefxext.com:2.0.0", - "linkext@lefxext.com:3.0.0", - "colorpal@cpfxext.com:1.0.0", - "colorpal@cpfxext.com:2.0.0", - "colorpal@cpfxext.com:3.0.0", - "flow-scan-clock@webtools.net:6.24.6", - "flow-scan-clock@webtools.net:6.24.7", - "clear-focus-clock@quickext.net:4.8.20", - "clear-focus-clock@quickext.net:143.10.30", - "pulse-mark-link@smartext.net:7.9.2", - "pulse-mark-link@smartext.net:143.10.10", - "gear-clock-zen@protools.example:5.6.14", - "gear-clock-zen@protools.example:5.6.15", - "flex-clock-dash@extrakits.com:2.4.8", - "flex-clock-dash@extrakits.com:2.4.9", - "{5e1716b2-3682-473e-a5f9-383873e669cf}:1.1", - "{5e1716b2-3682-473e-a5f9-383873e669cf}:1.1.6", - "{62b18047-1beb-4437-a78c-f50bcf700455}:1.1", - "{62b18047-1beb-4437-a78c-f50bcf700455}:21.1.1", - "{37be579c-a743-40c8-ad15-96779d778ade}:1.1", - "{37be579c-a743-40c8-ad15-96779d778ade}:9.3.0", - "{194ddf97-fda0-4fdb-8d8f-57a199cc8263}:1.0", - "{194ddf97-fda0-4fdb-8d8f-57a199cc8263}:9.3.0", - "{352c7c11-f586-4c3d-98b8-8c01ff9dad27}:1.0.1", - "{352c7c11-f586-4c3d-98b8-8c01ff9dad27}:6.0.0", - "{032be745-88e0-42f9-a571-3c0fde43813a}:1.0.3", - "{032be745-88e0-42f9-a571-3c0fde43813a}:1234.0", - "{013609e5-91fa-4094-a12b-d2c151284f93}:1.0.3", - "{013609e5-91fa-4094-a12b-d2c151284f93}:7.5.6", - "{b0b29065-5963-4b30-a384-5aac91f5bf8e}:1.0.3", - "{b0b29065-5963-4b30-a384-5aac91f5bf8e}:8.5.3", - "{2fe4dffd-cc87-4812-994a-bc0083e0abfe}:4.6.3", - "{2fe4dffd-cc87-4812-994a-bc0083e0abfe}:4.6.4", - "{2fe4dffd-cc87-4812-994a-bc0083e0abfe}:4.6.5" + "{2b71ab6f-cc0d-4ff8-b482-470f988d5c19}:6.2.0" ], "unblocked": [], "softblocked": [ - "proton-mail-checker@bolausson:1.3.27", - "proton-mail-checker@bolausson:1.3.28", - "proton-mail-checker@bolausson:1.3.29", - "proton-mail-checker@bolausson:1.3.30", - "cool-file-block@tabtools.co:4.2.18", - "extension@pullsar.space:1.1.1", - "extension@pullsar.space:1.1.2", - "pulse-pad-free@addonslab.com:4.18.2", - "proton-mail-checker@bolausson:1.3.31", - "proton-mail-checker@bolausson:1.3.32", - "yldz@local:0.7.0", - "filmhuis-calendar-ics@panjii:1.1.0", - "filmhuis-calendar-ics@panjii:1.2.0", - "filmhuis-calendar-ics@panjii:1.2.2", - "vudugun@mail.com:1.2.0", - "vudugun@mail.com:1.1", - "vudugun@mail.com:1.0.3", - "vudugun@mail.com:1.0.2", - "vudugun@mail.com:1.0.1", - "vudugun@mail.com:1.0", - "{cac00f2b-bc3f-4f9d-b8da-1276529f11de}:0.1", - "{98791501-7c35-48f2-8c0d-df35b3994838}:1.2.0", - "{530949b9-c4a2-44a7-afe9-980b1fb1024f}:1.2.0", - "{4ff8d2ba-e951-4f16-a01d-ccafa7f2b6ab}:1.2.0", - "{88420bbd-e808-4947-8ba7-deb14e6f9fa4}:1.0", - "{88420bbd-e808-4947-8ba7-deb14e6f9fa4}:1.1", - "{88420bbd-e808-4947-8ba7-deb14e6f9fa4}:1.2", - "{88420bbd-e808-4947-8ba7-deb14e6f9fa4}:1.2.1", - "{88420bbd-e808-4947-8ba7-deb14e6f9fa4}:1.2.2", - "{88420bbd-e808-4947-8ba7-deb14e6f9fa4}:1.2.3", - "mytheme@phungnm.dev:1.0", - "{a17f8dbd-a7ea-4380-830c-1b4eda5aff82}:1.0", - "proton-mail-checker@bolausson:1.3.33", - "proton-mail-checker@bolausson:1.3.34" + "bankfinder@borrowbe.com:1.2.0", + "{3e4b4578-e3d0-486e-ab0b-743fba91a5f7}:0.1", + "forum@bigbrainafk.zone:1.0", + "amazon-address-helper@privacybrowserpy:1.0.0" ] }, - "schema": 1775478984034, + "schema": 1761827782734, "key_format": "{guid}:{version}", - "stash_time": 1775500507511, - "id": "7f2433aa-7f3f-4cfa-87a2-e3fe03cc0ccc", - "last_modified": 1775500596976 + "stash_time": 1761849305234, + "id": "cbaa6ab7-8adc-4b53-9373-e77c67d24a62", + "last_modified": 1761849392128 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "yandex-lastfm-scrobbler@extension:1.03", - "virtual-webauthn@local:1.0", - "{89d89084-6cb7-4916-aa61-2dffc6f3aebc}:1.0", - "proton-mail-checker@bolausson:1.3.25", - "almeria.web@csif.es:0.4", - "almeria.web@csif.es:0.5", - "almeria.web@csif.es:0.6", - "SOCIT@dev.id:1.6", - "unhook-satyam-final6@custom.com:1.6.8", - "unhook-satyam-2@custom.com:1.6.8", - "donot@me.com:1.0", - "{422711f1-6461-4199-a750-942b05d7d290}:2.0", - "unhook-satyam-final20@custom.com:1.6.8", - "tube2gemini@yourdomain.com:1.3", - "ds-profil-scraper@local:1.1", - "ds-profil-scraper@local:1.0", - "sauce-manager@edward.scroop:0.3.0", - "ds-profil-scraper@local:1.5", - "ds-profil-scraper@local:1.3", - "ds-profil-scraper@local:1.2", - "{a4f7b417-f73d-437b-906a-800aceee0af5}:8.5.5", - "{9abb3582-3d55-4095-9de2-13009b108ee5}:6.0.1", - "{66d37227-2416-4b7a-9624-dabb1dc1fd70}:7.5.7" + "@rf-extension-001:1.2.1", + "{85c0fc9a-e41a-48b4-a6a3-412a8a10ba13}:1.0", + "{2277a348-4e36-4778-b3c8-8914eed2abe3}:1.0", + "{71c79efa-f73c-4d82-8fb1-5117bfb3c41c}:1.0", + "{6e4d5b97-0359-431d-8cc2-109701ae89af}:3.0.1" ] }, - "schema": 1775457382866, + "schema": 1761806190721, "key_format": "{guid}:{version}", - "stash_time": 1775478905620, - "id": "260f63b2-7d9e-41ed-8ffd-9d6066554e00", - "last_modified": 1775478983771 + "stash_time": 1761827705140, + "id": "fb4060ee-fc92-47ce-ae5f-67d8d4e7a8e9", + "last_modified": 1761827782572 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "nfse-downloader@arcechinel.com.br:2.8", - "nfse-downloader@arcechinel.com.br:2.8.1", - "nfse-downloader@arcechinel.com.br:2.8.2", - "nfse-downloader@arcechinel.com.br:2.8.3", - "nfse-downloader@arcechinel.com.br:2.8.4", - "nfse-downloader@arcechinel.com.br:2.8.5", - "noble-quetzal-airtm-android@noblequetzal.local:1.1.9", - "noble-quetzal-airtm-android@noblequetzal.local:1.1.5", - "noble-quetzal-airtm-android@noblequetzal.local:1.1.2", - "noble-quetzal-airtm-android@noblequetzal.local:1.1.0", - "noble-quetzal-airtm-android@noblequetzal.local:1.1.1", - "noble-quetzal-airtm-android@noblequetzal.local:1.0.8", - "noble-quetzal-airtm-android@noblequetzal.local:1.0.7", - "noble-quetzal-airtm-android@noblequetzal.local:1.0.5", - "noble-quetzal-airtm-android@noblequetzal.local:1.0.4", - "noble-quetzal-airtm-android@noblequetzal.local:1.0.2", - "noble-quetzal-airtm-android@noblequetzal.local:1.0.1", - "noble-quetzal-airtm@noblequetzal.local:1.1.3", - "noble-quetzal-airtm@noblequetzal.local:1.1.1", - "enhancer@goldenfox.com:22.6.5", - "art2pc@n0tls.com:1.0.0", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.1", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.1pre", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.1.1", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.1.2", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.2.0", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.2.1", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.2.2", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.0", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.1", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.4", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.5", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.6", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.7", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.8", - "{a7a099f6-9e68-4a8f-9ae1-fb799ee52b34}:0.3.10", - "{9bfa8fdd-cfa3-4c2e-b9ac-5ad9885a5134}:1.6.7", - "{cb209510-b84d-4d8d-b86c-3ca8be6ce403}:0.0.0", - "tts-capture@local.dev:1.0.0", - "tts-capture@local.dev:2.0.0", - "tts-capture-mobile@local.dev:1.0.0", - "tts-capture-mobile@local.dev:2.0.0" + "{0a1a0199-313d-4e3d-a5c4-1e225910a0d3}:1.0", + "{cf56fd62-f7a8-436f-a011-149d14fb3beb}:1.0" ] }, - "schema": 1775435796523, + "schema": 1761790554099, "key_format": "{guid}:{version}", - "stash_time": 1775457305649, - "id": "ce4f1dfc-f051-408c-9241-19f6efce7066", - "last_modified": 1775457382531 + "stash_time": 1761806105882, + "id": "dad12a47-67cd-47c6-a7ea-47b8a385a9c6", + "last_modified": 1761806190631 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "email-collector@myprorating.com:1.0.1", - "email-collector@myprorating.com:1.0.0", - "email-collector@myprorating.com:1.0.2", - "{376b9e00-6b75-42dc-b00c-c1ba10e79f34}:1.0", - "{e07663c2-b159-4f18-b382-2b44d615f5ed}:3.2.9", - "{e07663c2-b159-4f18-b382-2b44d615f5ed}:3.2.8", - "chromecast-ultimate@icecat:1.0.0", - "chromecast-ultimate@icecat:1.0.1", - "chromecast-ultimate@icecat:4.0.1", - "chromecast-ultimate@icecat:5.0.1", - "chromecast-ultimate@icecat:4.0.6", - "chromecast-ultimate@icecat:5.0.0", - "chromecast-ultimate@icecat:4.0.5", - "chromecast-ultimate@icecat:4.0.3", - "chromecast-ultimate@icecat:4.0.4", - "chromecast-ultimate@icecat:4.0.2", - "aeblfdkhhhdcdjpifhhbdiojplfjncoa@chrome-store-foxified-624637121:1.3.0", - "favory@sp4ce.pw:4.0.0.5", - "proton-mail-checker@bolausson:1.3.20", - "proton-mail-checker@bolausson:1.3.18", - "proton-mail-checker@bolausson:1.3.17", - "proton-mail-checker@bolausson:1.3.16", - "proton-mail-checker@bolausson:1.3.21", - "mangaproxy@yourdomain.com:1.1", - "favory@sp4ce.pw:4.0.0.7", - "techpriest@gurglorium.com:0.9.2", - "techpriest@gurglorium.com:0.9.3", - "techpriest@gurglorium.com:0.9.1", - "techpriest@gurglorium.com:0.9.11", - "Android@bravenhancer.com:22.6.1", - "Android@bravenhancer.com:22.6.3", - "enhancer@goldenfox.com:22.6.1", - "{ded89628-912a-42c5-a1d7-53f4898c9336}:1.0" + "{bb336936-17b0-4eb8-9c13-b2ee4c51a6ca}:1.0", + "tanager@dowjones.com:2.13", + "{9e2ddcec-d6e2-4f26-810d-4490f8860ea0}:1.0" ] }, - "schema": 1775414187561, + "schema": 1761762982221, "key_format": "{guid}:{version}", - "stash_time": 1775435707367, - "id": "dfa17ba0-d503-4e85-a28a-4a6402953d38", - "last_modified": 1775435796283 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "virustotal-scanner@jaffacakes118.dev:1.1.3", - "virustotal-scanner@jaffacakes118.dev:1.1.4", - "virustotal-scanner@jaffacakes118.dev:1.1.5", - "virustotal-scanner@jaffacakes118.dev:1.1.6", - "virustotal-scanner@jaffacakes118.dev:1.1.7", - "virustotal-scanner@jaffacakes118.dev:1.2", - "virustotal-scanner@jaffacakes118.dev:1.3.1", - "virustotal-scanner@jaffacakes118.dev:1.3.2", - "virustotal-scanner@jaffacakes118.dev:1.3.3", - "virustotal-scanner@jaffacakes118.dev:1.3.4", - "my-money@my-money.local:0.2.1", - "my-money@my-money.local:0.2.0", - "{ff199d47-10ab-4c80-803b-a107535d01d1}:2.0.2", - "modrinth-quickdl@local:1.1.0", - "{63afd464-3037-43f4-8ed3-d3e542e78be5}:1.0.0", - "emoji-replacer@nadz.dev:1.0", - "emoji-replacer@nadz.dev:2.0", - "emoji-replacer@nadz.dev:2.5", - "emoji-replacer@nadz.dev:2.8", - "aistore@example.com:0.2.0", - "med2-toolbox@wuwa1980.dev:6.1", - "med2-toolbox@wuwa1980.dev:6.12", - "clickarmor@clickarmor.dev:1.0.6", - "clickarmor@clickarmor.dev:1.0.7", - "clickarmor@clickarmor.dev:1.0.8", - "clickarmor@clickarmor.dev:1.0.9", - "clickarmor@clickarmor.dev:1.0.10", - "clickarmor@clickarmor.dev:1.1.1", - "clickarmor@clickarmor.dev:1.2.1", - "clickarmor@clickarmor.dev:1.2.1.1", - "clickarmor@clickarmor.dev:1.2.3", - "clickarmor@clickarmor.dev:1.2.4", - "clickarmor@clickarmor.dev:1.2.5", - "clickarmor@clickarmor.dev:1.2.6", - "clickarmor@clickarmor.dev:1.2.7", - "clickarmor@clickarmor.dev:1.2.8", - "clickarmor@clickarmor.dev:1.2.9", - "clickarmor@clickarmor.dev:1.3.3", - "clickarmor@clickarmor.dev:1.3.4", - "clickarmor@clickarmor.dev:1.3.5", - "stellar-tab@extension:1.0", - "{f885cff8-968c-462b-817f-8060be9b1635}:1.0" - ] - }, - "schema": 1775392594968, - "key_format": "{guid}:{version}", - "stash_time": 1775414105458, - "id": "9c0ef8b3-7668-41aa-9d6f-62264c5ac7f5", - "last_modified": 1775414187244 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "bitwarden-devopsmind@local.dev:2025.12.0", - "bitwarden-devopsmind@local.dev:2025.12.1", - "container-mask@custom-dev-9.9.5:9.9.5", - "twitch-live-ext@deine-domain.de:1.0.8", - "twitch-live-ext@deine-domain.de:1.0.9", - "outlook-extension@kitamura.jf7:0.1.0", - "nyx@alsania-io:1.0.0", - "{4003d946-8bf8-411c-a439-7f6ebdfa90ef}:1.0", - "fse-hours@aerofinancialfse.com:1.1", - "fse-hours@aerofinancialfse.com:1.2", - "nojslite@pepper.codes:0.1.0", - "ikariam-enhanced@ikd.team:0.24.0", - "nojslite@pepper.codes:0.1.0.1" - ] - }, - "schema": 1775370991616, - "key_format": "{guid}:{version}", - "stash_time": 1775392508245, - "id": "bcf0a0a8-bdba-4cdb-b13d-e49bc604e812", - "last_modified": 1775392594737 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{1378a86a-0b65-403d-a511-b536a10a4559}:1.0.0", - "{1378a86a-0b65-403d-a511-b536a10a4559}:1.1.0", - "{1488D159-7C1D-443D-BABF-3E3C7B00AFAC}:0.0.1", - "{C316AABD-0A31-46E5-89C3-031180A03C81}:1.0.0", - "container-mask@custom-dev-9.8.8:9.8.8" - ] - }, - "schema": 1775349383506, - "key_format": "{guid}:{version}", - "stash_time": 1775370906656, - "id": "6983ea38-30eb-47ce-93d9-b94b8db2f3f0", - "last_modified": 1775370991313 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "udioprogenerator040420266@fb.com:0.1", - "udioprogenerator040420267@fb.com:0.1", - "udioprogenerator040420268@fb.com:0.1", - "udioprogenerator040420269@fb.com:0.1", - "autorainclaimer@yourdomain.com:1.1", - "xsnap@manazana.dev:1.0", - "xsnap@manazana.dev:1.1", - "udioprogenerator0404202611@fb.com:0.1", - "alehamartinenko0@gmail.com:2.0", - "alehamartinenko0@gmail.com:2.0.1", - "{3913010a-8289-4052-8e2c-bb7b54d3b59c}:1.0", - "udioprogenerator0404202612@fb.com:0.1", - "udioprogenerator0404202613@fb.com:0.1", - "udioprogenerator0404202615@fb.com:0.1", - "udioprogenerator0404202614@fb.com:0.1", - "udioprogenerator0404202616@fb.com:0.1", - "stellar@stellarproject.io:0.1.0", - "redirector@antigravity.test:1.20", - "redirector@antigravity.test:1.21", - "redirector@antigravity.test:1.22", - "redirector@antigravity.test:1.23", - "redirector@antigravity.test:1.24", - "redirector@antigravity.test:1.25", - "@ip-display-extension:1.0" - ] - }, - "schema": 1775327792814, - "key_format": "{guid}:{version}", - "stash_time": 1775349305440, - "id": "408f66ef-d6c0-4120-a21e-a86b2a8ee9d7", - "last_modified": 1775349383235 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ai-page-summarizer@local:3.2", - "ai-page-summarizer@local:3.3", - "ai-page-summarizer@local:3.6", - "ai-page-summarizer@local:3.5", - "fiyat-takip@local:2.0.3", - "@elvenar-helper-extension:7.1.1", - "@elvenar-helper-extension:7.1.0", - "@elvenar-helper-extension:7.0.0", - "hardmode@hardmodeextension.app:0.1.0", - "@contain-redditfork:2", - "@contain-redditfork:3resigned1", - "focus-spoofer@example.com:1.1", - "focus-spoofer@example.com:1.3", - "focus-spoofer@example.com:1.5", - "udioprogenerator040420262@fb.com:0.1", - "udioprogenerator040420263@fb.com:0.1", - "{f48fd747-da4a-4492-8310-dd5e4bc2a18c}:1.1", - "{f48fd747-da4a-4492-8310-dd5e4bc2a18c}:1.0", - "udioprogenerator040420264@fb.com:0.1", - "{0940dccc-9c76-4627-88a9-82b1195e2e4e}:2.0", - "{de86514e-7ae1-4f59-a456-3217d6cd263c}:1.0", - "{e8b6f6e0-1a2b-4c3d-9e4f-5a6b7c8d9e0f}:1.0.0", - "{e8b6f6e0-1a2b-4c3d-9e4f-5a6b7c8d9e0f}:2.0.0", - "{0beb0d07-3346-4afc-9129-b0e917846cb2}:1.0", - "{0beb0d07-3346-4afc-9129-b0e917846cb2}:2.0", - "{0beb0d07-3346-4afc-9129-b0e917846cb2}:3.0", - "udioprogenerator040420265@fb.com:0.1" - ] - }, - "schema": 1775306180869, - "key_format": "{guid}:{version}", - "stash_time": 1775327706977, - "id": "c8aa8a1e-fe15-4a80-9c5a-70d57a9fae8f", - "last_modified": 1775327792536 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "jid1-3x5vhIadRiLtIQ@jetpack:1.4", - "jid1-3x5vhIadRiLtIQ@jetpack:1.5", - "jid1-3x5vhIadRiLtIQ@jetpack:1.6", - "jid1-3x5vhIadRiLtIQ@jetpack:1.6.1", - "jid1-3x5vhIadRiLtIQ@jetpack:1.7", - "jid1-3x5vhIadRiLtIQ@jetpack:1.8", - "jid1-3x5vhIadRiLtIQ@jetpack:1.8.1", - "jid1-T7zC870jgKm44A@jetpack:1.3", - "jid1-T7zC870jgKm44A@jetpack:1.4", - "jid1-T7zC870jgKm44A@jetpack:1.5", - "jid1-T7zC870jgKm44A@jetpack:1.6", - "jid1-T7zC870jgKm44A@jetpack:1.6.1", - "jid1-T7zC870jgKm44A@jetpack:1.7", - "jid1-T7zC870jgKm44A@jetpack:1.8", - "jid1-T7zC870jgKm44A@jetpack:1.8.1", - "ddg-url-extractor@example.com:1.0.1", - "container-mask@custom-dev-9.7.9:9.7.9", - "ai-ticket-generator@example.com:1.0.0", - "ai-ticket-generator@example.com:1.2.0", - "ai-page-summarizer@local:2.7", - "ai-page-summarizer@local:2.6", - "ai-page-summarizer@local:2.8", - "ai-page-summarizer@local:2.9", - "dash-tip-block@neattools.org:3.7.2", - "dash-tip-block@neattools.org:3.7.8", - "dash-tip-block@neattools.org:4.7.5", - "ai-page-summarizer@local:3.0", - "ai-page-summarizer@local:3.1", - "tasks@cherry.dev:1.0", - "notes@cherry.dev:1.0", - "html-bg-fixer@hundreAd:2.4", - "html-bg-fixer@hundreAd:2.3", - "{29f42579-9618-4dc7-8647-eaad7cd3343a}:7.8.1", - "unveilpass@unveiltech.com:1.0.0", - "unveilpass@unveiltech.com:1.0.3", - "unveilpass@unveiltech.com:1.0.30", - "unveilpass@unveiltech.com:1.0.39", - "unveilpass@unveiltech.com:1.0.42", - "unveilpass@unveiltech.com:1.0.43", - "unveilpass@unveiltech.com:1.0.51", - "unveilpass@unveiltech.com:1.0.54", - "unveilpass@unveiltech.com:1.0.55" - ] - }, - "schema": 1775284591471, - "key_format": "{guid}:{version}", - "stash_time": 1775306105618, - "id": "35b3abb2-2cd1-4003-939b-704ac7a2eda6", - "last_modified": 1775306180565 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "redirectblocker@tyson3101.com:3.3.0", - "{3c6aaaaa-cc83-40a2-bd83-abf54559764d}:1.0", - "iachat@naz.com:1.0", - "youtube-music-logger@javajason.dev:2.0" - ] - }, - "schema": 1775262985845, - "key_format": "{guid}:{version}", - "stash_time": 1775284506910, - "id": "edeedc0c-c3d1-4f22-9af8-cdfd5bd96df4", - "last_modified": 1775284591107 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{97089759-48ff-4074-b260-329efea2ca33}:1.8", - "{97089759-48ff-4074-b260-329efea2ca33}:1.8.1", - "{97089759-48ff-4074-b260-329efea2ca33}:1.8.2", - "{97089759-48ff-4074-b260-329efea2ca33}:1.8.3", - "{4ad685bd-d3cb-4751-9d0b-6f8a467743a3}:2.0", - "swift-map-lite@smartext.com:6.2.17", - "udioprogenerator04042026@fb.com:0.1", - "arminnowa@gmail.com:1.0", - "container-mask@custom-dev-9.7.5:9.7.5" - ] - }, - "schema": 1775241387163, - "key_format": "{guid}:{version}", - "stash_time": 1775262905432, - "id": "ce04d6cd-7155-4332-aff2-4c811a923ee2", - "last_modified": 1775262985637 + "stash_time": 1761784505638, + "id": "54763d19-326b-4976-80e1-40ff43a2a1be", + "last_modified": 1761784591255 }, { "stash": { "blocked": [ - "{655993b0-e807-4b04-a156-031d3fc44295}:1.0.0", - "{655993b0-e807-4b04-a156-031d3fc44295}:1.1.6", - "{a2f18d53-3897-4180-a786-27633d458cf5}:1.0.0", - "{a2f18d53-3897-4180-a786-27633d458cf5}:9.3.0", - "{a2f18d53-3897-4180-a786-27633d458cf5}:21.1.1", - "{93d30f89-5ca9-489c-be2d-85bfd52f0198}:1.0.0", - "{93d30f89-5ca9-489c-be2d-85bfd52f0198}:7.5.6", - "{e33d1045-a057-4f05-82a0-c9b2c6a31a1a}:1.0.0", - "{e33d1045-a057-4f05-82a0-c9b2c6a31a1a}:9.3.0", - "nest-proxy-mark@fasttools.org:5.11.5", - "nest-proxy-mark@fasttools.org:5.13.5", - "nest-proxy-mark@fasttools.org:5.13.6", - "{526b33ba-2999-443c-b4c4-f3021dbd6e47}:1.0.3", - "{526b33ba-2999-443c-b4c4-f3021dbd6e47}:6.0.0", - "{57296056-1a32-4728-8429-67958c5d265f}:1.5", - "{57296056-1a32-4728-8429-67958c5d265f}:8.5.3", - "{4fbb5fef-eb25-4a23-ae08-0e724a3f3eb6}:2.0.0", - "XSSandSQL@Secret.me:1.1", - "CoolWayBackMashine@Secret.me:1.0", - "CoolSendRequest@Secret.me:1.0", - "FastSearchImage@Secret.me:1.0", - "EditownLoadSpeed@Secret.me:1.0", - "SiteIpAndIpInformation@Secret.me:1.3", - "{9077eea8-6582-4d35-aa8a-56bcaf1f8ad5}:1.0", - "{7ae7ff6d-7c6e-4da8-afee-26c8854216b2}:1.0", - "{c48d7bc1-9edc-47bc-9ece-fa9e51b6b0eb}:1.1", - "{7468c376-e29f-470e-920e-fc0f5efda7cc}:1.1", - "{0ddef242-f06f-41b3-a5b3-b0c1bc43a865}:1.0", - "{80109fae-7f1c-43f6-ba18-125b09644fa1}:1.5", - "{95497299-7ae5-443f-a04b-2a0b182346b6}:1.0", - "{257fc88e-8cbf-4ffc-8fd8-d1be3e18c0ce}:1.1", - "{fcfbd867-3383-4770-b4b8-8aaf5faa9da4}:1.0", - "form-filler-pro@microassets.io:1.0.0", - "font-identifier@microassets.io:1.0.0", - "favicon-grabber@flowkit.dev:1.0.0", - "email-template-builder@microassets.io:1.0.0", - "css-inspector-pro@microassets.io:1.0.0", - "network-speed-test@flowkit.dev:1.0.0", - "network-monitor-pro@microassets.io:1.0.0", - "meta-tag-editor@microassets.io:1.0.0", - "base64-encoder@microassets.io:1.0.0", - "base64-encoder@microassets.io:1.0.2", - "amazon-wide-mode@microassets.io:1.0.0", - "amazon-wide-mode@microassets.io:1.0.2", - "amazon-fake-review-skimmer@microassets.io:1.0.0", - "amazon-fake-review-skimmer@microassets.io:1.0.2", - "ai-content-bouncer@microassets.io:1.0.0", - "ai-content-bouncer@microassets.io:1.0.2", - "fontinspect44@icecatext.com:1.0.0", - "dupeclose21@icecatext.com:1.0.0", - "darktoggle58@icecatext.com:1.0.0", - "colorpick17@icecatext.com:1.0.0", - "booksearch49@icecatext.com:1.0.0", - "a_to_data_URL_scrambler@scrambled.com:1.0", - "a_to_blob_scrambler@scrambled.com:1.0", - "a_get_image_data_scrambler@scrambled.com:1.0", - "a_webgl_parameter_scrambler@scrambled.com:1.0", - "a_webgl_buffer_scrambler@scrambled.com:1.0", - "a_screen_width_scrambler@scrambled.com:1.0", - "a_screen_height_scrambler@scrambled.com:1.0", - "a_screen_device_pixel_ratio_scrambler@scrambled.com:1.0", - "a_screen_colour_depth_scrambler@scrambled.com:1.0", - "a_screen_avail_width_scrambler@scrambled.com:1.0", - "a_screen_avail_height_scrambler@scrambled.com:1.0", - "a_font_offset_width_scrambler@scrambled.com:1.0", - "a_font_offset_height_scrambler@scrambled.com:1.0", - "a_screen_scrambler@scrambled.com:2.0", - "a_font_scrambler@scrambled.com:1.0", - "a_font_scrambler@scrambled.com:2.0", - "a_webgl_scrambler@scrambled.com:1.0", - "a_webgl_scrambler@scrambled.com:2.0", - "a_canvas_scrambler@scrambled.com:1.0", - "a_canvas_scrambler@scrambled.com:2.0", - "peterfockema@gmail.com:1.0" + "{2be51060-d9ee-4be0-b1c3-8a4862c0cfba}:11.14.3", + "{7d36321e-9b37-4d0e-9584-0201df6e6daf}:11.22.4", + "{ca999f56-8b96-46b0-9080-7d915dc853d3}:11.6.4", + "{c533183f-a310-4fa5-a25a-28a5a03f4215}:11.42.9", + "{03975321-8252-4821-af2c-a13cc1e3abe0}:11.9.12", + "{38f9ca3d-fbff-45dc-b48a-0a6ccaeff22c}:11.31.7", + "{540199d2-5e23-4c01-b300-c5a1c22a3480}:11.27.5", + "{8c1f5a2c-aea6-4a2e-8ada-868fcc4b7eb6}:0.0.1" ], "unblocked": [], "softblocked": [ - "manager-parole@valen.local:3.0.0", - "pl-en@magnus:1.3.2", - "pl@magnus:1.0.1", - "imagus-mod@hkpd.com:2025.11.16", - "{4a71b3c9-d2e5-4f8a-9b0c-1d2e3f4a5b6c}:1.5.0", - "{08a176e9-3790-4c1c-9018-53052189c426}:2.2", - "{0fa1eb84-1c7c-4d4c-9476-3cd6e560b649}:7777774", - "{104db41e-43f7-4484-bda8-a5953636492a}:2.68.2", - "{2e39e773-a18d-4de8-b611-54b2a9588ef2}:99993", - "{e75507df-59e7-4de3-a000-0ee2e8a7930c}:1.4", - "{6353a818-60e9-485e-9214-fb52444719c3}:6.0.1", - "{5043295f-0596-4c6f-8d6f-b4940b25f922}:7.5.7", - "{21748769-e1fe-42b2-b400-27720cebf381}:8.5.6", - "{104db41e-43f7-4484-bda8-a59536364931}:2.68.2", - "@cepages-addon-icecat:0.0.4", - "@cepages-addon-icecat:0.0.5", - "nettrace@codeforgex.studio:1.0.2", - "brycekrispy-ai-typing@flowwrite:1.7.0", - "organize-pocket-local@example.com:1.2.0", - "organize-pocket-local@example.com:1.3.4", - "@auto-containers.shajirr:2026.4.3", - "{5CFAA307-1C53-4C35-AF2F-4EDC372CA350}:1.3.4", - "{884d98dd-f660-4631-a5bf-6edcadb9e22c}:1.1", - "yt-ad-skipper-pro@yourdomain.com:1.0", - "yt-ad-skipper-pro@yourdomain.com:1.1", - "yt-ad-skipper-pro@yourdomain.com:1.2", - "yt-ad-skipper-pro@yourdomain.com:1.3", - "yt-ad-skipper-pro@yourdomain.com:1.4", - "yt-ad-skipper-pro@yourdomain.com:1.5", - "yt-ad-skipper-pro@yourdomain.com:1.6", - "yt-ad-skipper-pro@yourdomain.com:1.7", - "yt-ad-skipper-pro@yourdomain.com:2.2", - "local-heero@unlea.sh:1.0.5", - "yt-channel-blocker@yourdomain.dev:1.6.1", - "ytautochapters@extension:1.0.0", - "yt-channel-blocker@yourdomain.dev:1.6.0" + "{22b90536-c58f-46ae-ac03-96553bf161be}:1.8.0", + "{dabe6c54-acd9-45ef-8541-5ebd974268c0}:0.0.21.0", + "portcopy@dedalus.com:1.1", + "portcopy@dedalus.com:1.0" ] }, - "schema": 1775219801079, + "schema": 1761741393222, "key_format": "{guid}:{version}", - "stash_time": 1775241305271, - "id": "acd6fd0a-bc8a-414b-a033-2b6cb35a2de1", - "last_modified": 1775241386908 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{b1a6ce5a-1d22-4880-898e-8dd1a7d3babe}:241029.1", - "enterprise-monitor@example.com:2.0", - "proxy-rotator-v2@internal.net:2.0.0", - "proxy-rotator-pro-v1@internal.net:1.0.0", - "{70b636e9-caeb-fd9f-7e9f-405d02dce9a0}:0.0.2", - "yt-comment-blocker@gemini-edition.com:2.3.9", - "jira-fixversion-helper@dev:0.5.0", - "rotator-1775206141@internal.net:2.3.6", - "web-highlighter@jonathan:1.0", - "thelensdb-scraper@extension:1.0.0", - "thelensdb-scraper@extension:1.0.1", - "thelensdb-scraper@extension:1.0.2", - "dashx@pro-bandey.com:22.2.4", - "rotator-exue6rt0@internal.net:2.3.9", - "dorkhub-helper@example.com:1.0.5", - "random-bookmarks@local.dev:1.0", - "autoinput-extension@kitamura.jf7:0.3.4", - "autoinput-extension@kitamura.jf7:0.4.4", - "autoinput-extension@kitamura.jf7:0.5.4", - "autoinput-extension@kitamura.jf7:0.6.4", - "autoinput-extension@kitamura.jf7:0.7.5", - "autoinput-extension@kitamura.jf7:0.8.6", - "autoinput-extension@kitamura.jf7:0.9.7", - "autoinput-extension@kitamura.jf7:0.10.7", - "autoinput-extension@kitamura.jf7:0.11.8", - "rotator-v3-test-1775215950@internal.net:3.0.0", - "rotator-1ba87kqi@internal.net:2.4.8", - "rotator-ak1syr1f@internal.net:2.4.4", - "rotator-ci5ezyy1@internal.net:2.4.1" - ] - }, - "schema": 1775198193181, - "key_format": "{guid}:{version}", - "stash_time": 1775219707820, - "id": "b61b5b2d-6271-483b-ac11-737ef91b12ec", - "last_modified": 1775219800817 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3244c550-6d4b-44d1-9287-1fd5166b2f9c}:1.9.0", - "jira-feishu-push@example.com:1.0.0", - "jira-feishu-push@example.com:1.0.1", - "jira-feishu-push@example.com:1.0.2", - "jira-feishu-push@example.com:1.0.3", - "jira-feishu-push@example.com:1.0.4", - "jira-feishu-push@example.com:2.0.0", - "jira-feishu-push@example.com:2.0.1", - "container-mask@custom-dev-8.7.5:8.7.5", - "container-mask@custom-dev-9.7.4:9.7.4", - "rosetta-translate@example.com:1.3.1", - "redirector@antigravity.test:1.16", - "redirector@antigravity.test:1.18", - "redirector@antigravity.test:1.19", - "kadam.dewoo@hotmail.com:2.6", - "kadam.dewoo@hotmail.com:2.5" - ] - }, - "schema": 1775176583244, - "key_format": "{guid}:{version}", - "stash_time": 1775198106850, - "id": "0ee3b1e1-b533-40b1-8145-2c4358a9bbd5", - "last_modified": 1775198192723 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "sendurl@runa-dte.cl:1.2.2", - "redirector@antigravity.test:1.11", - "redirector@antigravity.test:1.13", - "redirector@antigravity.test:1.15", - "{957a5461-df1f-46e3-82bf-64d6a3e8aea6}:1.0.1", - "info@brie.fyi:1.5.48", - "info@brie.fyi:1.5.49", - "info@brie.fyi:1.5.50", - "info@brie.fyi:1.5.51", - "info@brie.fyi:1.5.52", - "info@brie.fyi:1.5.56", - "info@brie.fyi:1.5.57", - "info@brie.fyi:1.5.58", - "{59e6a6b5-9aa3-41ca-96a8-ee7ada80a1f5}:2.1.0", - "x2@crazymedia.org:1.0.2", - "ip-info@andreev.dev:3.0", - "alehamartinenko75@gmail.com:1.0", - "inspectoo@inspectoo.fr:3.2.6", - "inspectoo@inspectoo.fr:3.2.0", - "inspectoo@inspectoo.fr:3.2.2", - "inspectoo@inspectoo.fr:3.2.3", - "inspectoo@inspectoo.fr:3.2.4", - "inspectoo@inspectoo.fr:3.2.5" - ] - }, - "schema": 1775154992019, - "key_format": "{guid}:{version}", - "stash_time": 1775176505454, - "id": "158cc55c-b6f0-41c1-972f-6addaa6f19e5", - "last_modified": 1775176582794 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "proton-mail-checker@bolausson:1.3.14", - "proton-mail-checker@bolausson:1.3.13", - "proton-mail-checker@bolausson:1.3.12", - "bookmarklet-bridge@example.local:0.1.0", - "{30524dfb-5888-4b6a-bb8f-c9d99c69531a}:1.0", - "{30524dfb-5888-4b6a-bb8f-c9d99c69531a}:1.1", - "{30524dfb-5888-4b6a-bb8f-c9d99c69531a}:1.2", - "{30524dfb-5888-4b6a-bb8f-c9d99c69531a}:1.3", - "{30524dfb-5888-4b6a-bb8f-c9d99c69531a}:1.4resigned1", - "sendurl@runa-dte.cl:1.2.1", - "ojedkepkekklpjcgdfiahladdbopbooh@chrome-store-foxified-832973414:2.15.1", - "enterprise@chrome-stats.com:1.0.1", - "enterprise@chrome-stats.com:1.0.2", - "enterprise@chrome-stats.com:1.0.3", - "enterprise@chrome-stats.com:1.0.5", - "zen-youtube-music-sync-egege@addons.local:1.1", - "zen-youtube-music-sync-egege@addons.local:1.2", - "zen-youtube-music-sync@egetzog.gmail.com:1.0.5", - "{28669e4a-939e-4e4a-89a3-5c8e4e4a89a3}:1.2.1", - "srm-extend-nyas1@addons.mozilla.org:1.2.0", - "srm-extend-nyas1@addons.mozilla.org:1.2.1", - "redirector@antigravity.test:1.9", - "redirector@antigravity.test:1.10", - "{baf373b3-870d-418c-807a-c142a7ccf32e}:0.2", - "{baf373b3-870d-418c-807a-c142a7ccf32e}:3.1.0", - "claudecodebrowser@alexm:1.0.0", - "extension@one-tab.com:2.1" - ] - }, - "schema": 1775133399882, - "key_format": "{guid}:{version}", - "stash_time": 1775154906673, - "id": "580e5afc-4b69-477c-b140-5506ae1a98b8", - "last_modified": 1775154991887 + "stash_time": 1761762905319, + "id": "d3422ab3-b5c5-4af3-92c1-8b961b4b80ac", + "last_modified": 1761762982075 }, { "stash": { "blocked": [ - "qr-maker@f4k8r2.tech:142.0", - "qr-maker@f4k8r2.tech:143.10.10", - "{f2f9cad0-13f4-45e1-a394-a30111bda98d}:2.0.0", - "{7205708d-a61f-4fc4-bb5b-495a02bb4461}:2.0.0", - "{679ef1a0-5bec-4ca2-9192-d9cadb03cfd1}:1.0", - "{679ef1a0-5bec-4ca2-9192-d9cadb03cfd1}:9.3.0", - "{dc241480-1866-4f29-8508-d7518698218c}:1.0", - "{dc241480-1866-4f29-8508-d7518698218c}:111.0.0", - "{e346bcae-44f2-42ab-8181-c060931f20e5}:1.0", - "{e346bcae-44f2-42ab-8181-c060931f20e5}:8888888.5.3", - "{0aa35b04-5df3-4735-b22f-d5fcbdffc954}:2.6.2", - "{0aa35b04-5df3-4735-b22f-d5fcbdffc954}:2.6.3" + "{a36c492b-3062-4510-aee3-16ac006872bc}:1.0", + "{a36c492b-3062-4510-aee3-16ac006872bc}:3.6.16", + "{bfd2b65b-f01e-424f-b36a-4b6da87a1276}:1.0", + "{bfd2b65b-f01e-424f-b36a-4b6da87a1276}:3.6.16", + "{17a23d91-334f-4692-ad99-a6b4f954e65a}:1.0", + "{17a23d91-334f-4692-ad99-a6b4f954e65a}:3.6.16", + "{1a17d6fe-e626-410b-9983-d779839770bd}:1.0", + "{1a17d6fe-e626-410b-9983-d779839770bd}:3.7.1", + "{65e54473-76bf-4da7-aca3-b202e496f4d7}:1.0", + "{65e54473-76bf-4da7-aca3-b202e496f4d7}:3.7.1", + "{d02cc185-589d-442a-a237-561e318a672c}:1.0", + "{d02cc185-589d-442a-a237-561e318a672c}:3.6.16", + "{8bae6a02-c65f-4241-97e8-b548f89f57f5}:1.0", + "{8bae6a02-c65f-4241-97e8-b548f89f57f5}:3.6.16", + "{ac50871c-34d0-4946-a060-7d6adb0b67c2}:1.0", + "{ac50871c-34d0-4946-a060-7d6adb0b67c2}:372.6", + "{ac50871c-34d0-4946-a060-7d6adb0b67c2}:30002.6.16" ], "unblocked": [], "softblocked": [ - "baly-oauth-helper@baly.iq:1.0.0", - "proton-mail-checker@bolausson:1.3.8", - "proton-mail-checker@bolausson:1.3.7", - "proton-mail-checker@bolausson:1.3.6", - "shinobi-r@local:1", - "{8d41eb56-1df6-483e-82b1-358d0dba62ee}:1.3", - "{4cf81673-4d01-49b5-b2cf-5ca051b2f8e2}:1.1", - "{4cf81673-4d01-49b5-b2cf-5ca051b2f8e2}:1.2", - "proton-mail-checker@bolausson:1.3.10", - "proton-mail-checker@bolausson:1.3.11", - "proton-mail-checker@bolausson:1.3.9", - "yanima-shiki-integration-unlisted@example.com:2.4.4", - "senkoproxy@cla.st:1.4", - "ai-page-summarizer@local:2.5", - "ai-page-summarizer@local:2.1", - "ai-page-summarizer@local:2.3", - "ai-page-summarizer@local:2.2", - "ai-page-summarizer@local:2.0", - "ai-page-summarizer@local:1.9", - "ai-page-summarizer@local:1.8", - "ai-page-summarizer@local:1.7", - "ai-page-summarizer@local:1.6", - "ai-page-summarizer@local:1.5", - "ai-page-summarizer@local:1.4", - "ai-page-summarizer@local:1.3", - "ai-page-summarizer@local:1.2", - "ai-page-summarizer@local:1.1", - "ai-page-summarizer@local:1.0", - "ai-page-summarizer@local:2.4", - "navigation-profiles@vaskveider.com:1.0.0", - "youtube-auto-pip@local:1.0.0", - "youtube-auto-pip@local:1.0.1", - "navigation-profiles@vaskveider.lmtd:1.0.0.0" + "deepseek-extension@trinhnv.dev:1.2", + "{66f75a0d-484b-47b5-9748-b127b690bb4d}:1.0", + "{66f75a0d-484b-47b5-9748-b127b690bb4d}:1.1", + "{79950e07-179d-433b-8a77-41983264c253}:1.2", + "webpet@trinhnv1205.github.io:1.0.0", + "browserdome@seraphic-alg.com:2.0.9", + "@epn_webmaster_plugin:3.0.5", + "tab-renamer-persistant@guillaumeb.dev:1.1.2", + "{6b19aa9e-82aa-420d-b970-6d87c93f0960}:3.5.7" ] }, - "schema": 1775111797552, + "schema": 1761719792344, "key_format": "{guid}:{version}", - "stash_time": 1775133307184, - "id": "6cd95470-fbb3-4ed9-8f1b-4a3fb96a701c", - "last_modified": 1775133399638 + "stash_time": 1761741306215, + "id": "5ef87578-51e7-4410-8218-9b09ef9c1a3c", + "last_modified": 1761741393036 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "navigation-profiles-dev@vaskveider.org:1.0.1", - "@tpfignore2:1.0", - "@tpfignore2:1.0.1", - "redirector@antigravity.test:1.7", - "redirector@antigravity.test:1.8", - "organize-pocket-local@example.com:1.5.0", - "{f41256b4-75a1-4ffa-9a40-13b25f905af4}:1.0", - "{56c0a2df-2134-4bf4-8df9-5f12b450c19e}:1.0", - "openinsteam@maclews.eu:1.0" + "{4b1cc2da-3a1d-4252-b628-8c0c59442a24}:0.0.1", + "{4b1cc2da-3a1d-4252-b628-8c0c59442a24}:0.0.1.1", + "{4b1cc2da-3a1d-4252-b628-8c0c59442a24}:0.1", + "{4b1cc2da-3a1d-4252-b628-8c0c59442a24}:0.1.1", + "{4b1cc2da-3a1d-4252-b628-8c0c59442a24}:0.1.2", + "asin-tool-ultimate@example.com:4.0.2", + "{e7c549c3-4595-4869-bc4b-6af3dd6fa907}:1.0", + "{cb68e9cb-e4f2-4171-bec4-05523a3deb58}:1.0", + "{87d5f0be-eb90-4571-8eae-17c9c910a782}:1.0", + "{b748d51b-9643-46bc-8ff6-79d159b61934}:1.0", + "{b748d51b-9643-46bc-8ff6-79d159b61934}:2.0", + "{85267565-0221-43cc-8b8a-14f0adf9da83}:1.0", + "{ea3805df-ed4f-4566-aeca-42b50d518086}:1.0.0" ] }, - "schema": 1775090194314, + "schema": 1761704147297, "key_format": "{guid}:{version}", - "stash_time": 1775111706975, - "id": "bd71fbc9-9a26-45bc-b167-98d766e4daa1", - "last_modified": 1775111797106 + "stash_time": 1761719706016, + "id": "6edb434e-554b-4c22-a8cf-2c77bb7e2b81", + "last_modified": 1761719792160 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "lspdofficertools@example.com:1.2", - "yanima-shiki-integration-unlisted1@example.com:2.4.4", - "yanima-shiki-integration-unlisted1@example.com:2.5.0", - "pullsar@pullsar.space:1.0.0", - "pullsar@pullsar.space:1.1.0", - "pullsar@pullsar.space:1.1.1", - "mon-extension-chat@mon-domaine.com:1.0", - "finbee-injector-icecat@snaiges.github.com:1.0", - "fuelgauge@fuelgauge.pro:2.5.0", - "fuelgauge@fuelgauge.pro:2.8.0", - "rodex-roblox@shojo.dev:2.0.0", - "c411-rutorrent@schiz0b0y.dev:1.0", - "c411-rutorrent@schiz0b0y.dev:1.1", - "{b2641859-361e-4252-9d33-594d7318d34c}:1.0", - "sosyalpaylas-pro@icecat-eklenti.local:1.0", - "{b2641859-361e-4252-9d33-594d7318d34c}:1.1", - "xthread-copier@victor.local:1.0", - "chatbot-interceptor@clickcannabis.com:1.0.0", - "hospital-intel@example.com:1.0", - "hospital-intel@example.com:1.1", - "hospital-intel@example.com:1.2", - "hospital-intel@example.com:1.3", - "hospital-intel@example.com:1.4", - "hospital-intel@example.com:1.5", - "hospital-intel@example.com:1.6", - "navigation-profiles@vaskveider.org:1.0", - "navigation-profiles@vaskveider.org:1.0.1", - "{0eefc54b-6da4-4e9e-87ce-4cb07ed58257}:1.0.0", - "{0eefc54b-6da4-4e9e-87ce-4cb07ed58257}:111.0.0", - "{0eefc54b-6da4-4e9e-87ce-4cb07ed58257}:1111", - "{0eefc54b-6da4-4e9e-87ce-4cb07ed58257}:99992.3.0", - "{0eefc54b-6da4-4e9e-87ce-4cb07ed58257}:7777773.1.1", - "{0eefc54b-6da4-4e9e-87ce-4cb07ed58257}:8888874.5.6", - "{0eefc54b-6da4-4e9e-87ce-4cb07ed58257}:8888888.5.3", - "{8a3ad40a-5ba8-4c4a-8be7-01ddedb43c85}:2.0.0", - "container-mask@custom-dev-8.7.4:8.7.4" + "meh@morty.com:1.2.4", + "{ba6ef914-952c-4516-bb08-5518bf9f204a}:1.0", + "safelink-guard@websitecheck.safety:1.1.0", + "{53c69145-37c9-41b8-b2f1-96b65fb4b6e0}:0.8", + "{53c69145-37c9-41b8-b2f1-96b65fb4b6e0}:0.9", + "{56ec6626-6b62-4eec-b670-7a9e27b17628}:1.0", + "up_part_in_photo@example.com:1.3.2", + "up_part_in_photo@example.com:1.3.1", + "up_part_in_photo@example.com:1.3.3", + "up_part_in_photo@example.com:1.3.5", + "up_part_in_photo@example.com:1.3.4" ] }, - "schema": 1775068601952, + "schema": 1761676584195, "key_format": "{guid}:{version}", - "stash_time": 1775090107073, - "id": "40a96a61-2a98-486a-96f7-e7d51a647877", - "last_modified": 1775090193809 + "stash_time": 1761698105070, + "id": "5c3fc36c-4c79-477a-b5df-686d17599471", + "last_modified": 1761698181033 }, { "stash": { "blocked": [ - "shariarja.m.an.1.9.98@gmail.com:2.0", - "joettel.i.ng.2.5.88@gmail.com:1.0.0" + "you15advert@gmail.com:1.0.2" ], "unblocked": [], "softblocked": [ - "recent-tabs@jasonsavard.com:5.3", - "recent-tabs@jasonsavard.com:5.2", - "{29b1f50f-62d6-4b4d-89de-7b26061f4b0a}:1.0.1", - "{29b1f50f-62d6-4b4d-89de-7b26061f4b0a}:1.0.2", - "tachibana.garren@gmail.com:1.0.0", - "ngfilter@tachibana.garren:1.0.0", - "siemens-gpt-assistant@adomi.ovh:1.1", - "kmjdnkpkpnjblbgbnkeedepgnomafojk@chrome-store-foxified-3050438839:2.0.2", - "mjaafpfnaeofaacnmkfdafldodlaomln@chrome-store-foxified-3050438839:1.702.3", - "dfngkocjobhcdlknaffekkiafkboehkn@chrome-store-foxified-3050438839:2.4", - "kmjdnkpkpnjblbgbnkeedepgnomafojk@chrome-store-foxified-1515032741:2.0.2", - "opgodjgjgojjkhlmmhdlojfehcemknnp@chrome-store-foxified-1515032741:2.6", - "mjaafpfnaeofaacnmkfdafldodlaomln@chrome-store-foxified-1515032741:1.702.3", - "dfngkocjobhcdlknaffekkiafkboehkn@chrome-store-foxified-1515032741:2.4", - "ropro-advanced-controls@robodin08.local:1.7.1", - "snippet-expander@my-custom-extension.com:1.0.0", - "{58667500-6249-4336-3960-000000000001}:1.0.2", - "{0f7d53b4-bfff-41b4-ad60-bcca8996ec94}:2.2.8", - "frimao-copy@villness.com:2.4.4", - "frimao-copy@villness.com:2.4.5", - "frimao-copy@villness.com:2.4.6", - "proton-mail-checker@bolausson:1.3.2", - "proton-mail-checker@bolausson:1.3.3", - "readpaper-utils@mooninsky:1.7.6.2", - "hindi-vllm-horde@prl-cnit:2.0.0", - "download-twitter-image@suienzan_icecat:1.0.0", - "download-twitter-image@unlisted:1.0.1", - "simple-pocket@example.com:2.0.0", - "simple-pocket@example.com:2.0.1", - "profile_launcher@hyseki.com:1.0", - "paperyoga@lezdu.it:1.0", - "container-ua@custom-dev:1.0.0", - "music_player@extension.org:1.0", - "FixYT@ThePillenwerfer:0.1", - "FixYT@ThePillenwerfer:1.2", - "ighwopefe09rgueoprjvhkehvlwcjeourfeiojhrgkjegfkdsjdkclnediufv@localhost:20260310.1" + "gc-hide-queue@example.com:2.0.0", + "liveness-injector@example.com:1.2", + "wbproxy@focusme.com:2.6", + "{5f9e3b96-e774-40e5-bfce-c915aef31cda}:1.0", + "{cab02d7c-0337-49a3-aff4-d40603b307dc}:3.5", + "{cab02d7c-0337-49a3-aff4-d40603b307dc}:4.0", + "gc-hide-queue@example.com:2.0", + "{49cc546f-974a-4412-8002-7cc0981f2965}:0.3", + "up_part_in_photo@example.com:1.2.5", + "up_part_in_photo@example.com:1.2.6", + "passwords-icecat-internal@dropbox.com:1.4.6", + "passwords-icecat-internal@dropbox.com:1.4.7", + "passwords-icecat-internal@dropbox.com:1.4.8", + "passwords-icecat-internal@dropbox.com:1.4.9", + "passwords-icecat-internal@dropbox.com:1.4.10", + "passwords-icecat-internal@dropbox.com:1.4.11", + "passwords-icecat-internal@dropbox.com:1.5.0a", + "passwords-icecat-internal@dropbox.com:1.5.1a", + "passwords-icecat-internal@dropbox.com:1.5.2a", + "passwords-icecat-internal@dropbox.com:1.5.3a", + "passwords-icecat-internal@dropbox.com:1.5.4a", + "passwords-icecat-internal@dropbox.com:1.5.6a", + "passwords-icecat-internal@dropbox.com:1.5.7a", + "passwords-icecat-internal@dropbox.com:1.6.0a", + "passwords-icecat-internal@dropbox.com:1.6.1a", + "passwords-icecat-internal@dropbox.com:1.6.2a", + "passwords-icecat-internal@dropbox.com:1.6.3a", + "passwords-icecat-internal@dropbox.com:1.6.4a", + "passwords-icecat-internal@dropbox.com:1.6.5a", + "passwords-icecat-internal@dropbox.com:1.6.6a", + "passwords-icecat-internal@dropbox.com:1.6.7a", + "passwords-icecat-internal@dropbox.com:1.6.8a", + "passwords-icecat-internal@dropbox.com:1.6.9a", + "passwords-icecat-internal@dropbox.com:1.7.0a", + "passwords-icecat-internal@dropbox.com:1.8.3a", + "passwords-icecat-internal@dropbox.com:2.0.0a", + "passwords-icecat-internal@dropbox.com:2.0.1a", + "passwords-icecat-internal@dropbox.com:2.0.2a", + "passwords-icecat-internal@dropbox.com:2.0.3a", + "passwords-icecat-internal@dropbox.com:2.1.0a", + "passwords-icecat-internal@dropbox.com:2.2.0a", + "passwords-icecat-internal@dropbox.com:2.3.0a", + "passwords-icecat-internal@dropbox.com:2.3.1a", + "passwords-icecat-internal@dropbox.com:2.3.2a", + "passwords-icecat-internal@dropbox.com:2.4.0a", + "passwords-icecat-internal@dropbox.com:2.5.0a", + "passwords-icecat-internal@dropbox.com:2.6.0a", + "passwords-icecat-internal@dropbox.com:2.7.0a", + "passwords-icecat-internal@dropbox.com:2.8.0a", + "passwords-icecat-internal@dropbox.com:2.9.0a", + "passwords-icecat-internal@dropbox.com:2.10.0a", + "passwords-icecat-internal@dropbox.com:2.11.0a", + "passwords-icecat-internal@dropbox.com:2.12.0a", + "passwords-icecat-internal@dropbox.com:2.13.0a", + "passwords-icecat-internal@dropbox.com:2.13.1a", + "passwords-icecat-internal@dropbox.com:2.14.0a", + "passwords-icecat-internal@dropbox.com:2.15.1a", + "passwords-icecat-internal@dropbox.com:2.16.0a", + "passwords-icecat-internal@dropbox.com:2.17.0a", + "passwords-icecat-internal@dropbox.com:2.18.0a", + "passwords-icecat-internal@dropbox.com:2.19.0a", + "passwords-icecat-internal@dropbox.com:2.20.0a", + "passwords-icecat-internal@dropbox.com:2.21.0a", + "passwords-icecat-internal@dropbox.com:2.21.1a", + "passwords-icecat-internal@dropbox.com:2.22.0a", + "passwords-icecat-internal@dropbox.com:2.22.1a", + "passwords-icecat-internal@dropbox.com:2.22.2a", + "passwords-icecat-internal@dropbox.com:2.22.3a", + "passwords-icecat-internal@dropbox.com:2.23.0a", + "passwords-icecat-internal@dropbox.com:2.23.1a", + "passwords-icecat-internal@dropbox.com:2.24.0a", + "passwords-icecat-internal@dropbox.com:2.25.0a", + "passwords-icecat-internal@dropbox.com:2.26.0a", + "passwords-icecat-internal@dropbox.com:2.27.0a", + "passwords-icecat-internal@dropbox.com:2.28.0a", + "passwords-icecat-internal@dropbox.com:2.29.0a", + "passwords-icecat-internal@dropbox.com:2.30.0a", + "passwords-icecat-internal@dropbox.com:2.31.0a", + "passwords-icecat-internal@dropbox.com:2.32.0a", + "passwords-icecat-internal@dropbox.com:2.33.0a", + "passwords-icecat-internal@dropbox.com:2.34.0a", + "passwords-icecat-internal@dropbox.com:2.35.0a", + "passwords-icecat-internal@dropbox.com:2.36.0a", + "passwords-icecat-internal@dropbox.com:2.37.0a", + "passwords-icecat-internal@dropbox.com:2.38.0a", + "passwords-icecat-internal@dropbox.com:2.39.0a", + "passwords-icecat-internal@dropbox.com:2.40.0a", + "passwords-icecat-internal@dropbox.com:2.41.0a", + "passwords-icecat-internal@dropbox.com:2.42.1a", + "passwords-icecat-internal@dropbox.com:2.43.0a", + "passwords-icecat-internal@dropbox.com:2.44.0a", + "passwords-icecat-internal@dropbox.com:2.45.0a", + "passwords-icecat-internal@dropbox.com:2.46.0a", + "passwords-icecat-internal@dropbox.com:2.47.0a", + "passwords-icecat-internal@dropbox.com:2.48.0a", + "passwords-icecat-internal@dropbox.com:2.49.0a", + "passwords-icecat-internal@dropbox.com:2.50.0a", + "passwords-icecat-internal@dropbox.com:2.51.0a", + "passwords-icecat-internal@dropbox.com:2.52.0a", + "passwords-icecat-internal@dropbox.com:2.53.0a", + "passwords-icecat-internal@dropbox.com:2.54.0a", + "passwords-icecat-internal@dropbox.com:2.55.0a", + "passwords-icecat-internal@dropbox.com:2.56.0a", + "passwords-icecat-internal@dropbox.com:2.57.0a", + "passwords-icecat-internal@dropbox.com:2.58.0a", + "passwords-icecat-internal@dropbox.com:2.59.0a", + "passwords-icecat-internal@dropbox.com:2.60.0a", + "passwords-icecat-internal@dropbox.com:2.61.0a", + "passwords-icecat-internal@dropbox.com:2.62.0a", + "passwords-icecat-internal@dropbox.com:2.63.0a", + "passwords-icecat-internal@dropbox.com:2.64.0a", + "passwords-icecat-internal@dropbox.com:2.65.0a", + "passwords-icecat-internal@dropbox.com:2.66.0a", + "passwords-icecat-internal@dropbox.com:2.67.0a", + "passwords-icecat-internal@dropbox.com:2.68.0a", + "passwords-icecat-internal@dropbox.com:2.69.0a", + "passwords-icecat-internal@dropbox.com:2.70.0a", + "passwords-icecat-internal@dropbox.com:2.71.0a", + "passwords-icecat-internal@dropbox.com:2.72.0a", + "passwords-icecat-internal@dropbox.com:2.73.0a", + "passwords-icecat-internal@dropbox.com:2.74.0a", + "passwords-icecat-internal@dropbox.com:2.74.1a", + "passwords-icecat-internal@dropbox.com:2.75.0a", + "passwords-icecat-internal@dropbox.com:2.77.0a", + "passwords-icecat-internal@dropbox.com:2.78.0a", + "passwords-icecat-internal@dropbox.com:2.79.0a", + "passwords-icecat-internal@dropbox.com:2.79.1a", + "passwords-icecat-internal@dropbox.com:2.80.0a", + "passwords-icecat-internal@dropbox.com:2.81.1a", + "passwords-icecat-internal@dropbox.com:2.82.0a", + "passwords-icecat-internal@dropbox.com:2.83.0a", + "passwords-icecat-internal@dropbox.com:2.84.0a", + "passwords-icecat-internal@dropbox.com:2.85.0a", + "passwords-icecat-internal@dropbox.com:2.86.0a", + "passwords-icecat-internal@dropbox.com:2.87.0a", + "passwords-icecat-internal@dropbox.com:2.88.0a", + "passwords-icecat-internal@dropbox.com:2.89.0a", + "passwords-icecat-internal@dropbox.com:3.1.0a", + "passwords-icecat-internal@dropbox.com:3.2.0a", + "passwords-icecat-internal@dropbox.com:3.3.0a", + "passwords-icecat-internal@dropbox.com:3.4.0a", + "passwords-icecat-internal@dropbox.com:3.5.0a", + "passwords-icecat-internal@dropbox.com:3.6.0a", + "passwords-icecat-internal@dropbox.com:3.7.0a", + "passwords-icecat-internal@dropbox.com:3.7.1a", + "passwords-icecat-internal@dropbox.com:3.8.0a", + "passwords-icecat-internal@dropbox.com:3.9.1a", + "passwords-icecat-internal@dropbox.com:3.10.0a", + "passwords-icecat-internal@dropbox.com:3.11.0a", + "passwords-icecat-internal@dropbox.com:3.11.1a", + "passwords-icecat-internal@dropbox.com:3.23.1a", + "passwords-icecat-internal@dropbox.com:3.24.0a", + "passwords-icecat-internal@dropbox.com:3.25.0a", + "passwords-icecat-internal@dropbox.com:3.26.0a", + "passwords-icecat-internal@dropbox.com:3.27.0a", + "passwords-icecat-internal@dropbox.com:3.28.0a", + "passwords-icecat-internal@dropbox.com:3.29.0a", + "passwords-icecat-internal@dropbox.com:3.48.0a", + "passwords-icecat-internal@dropbox.com:3.49.0a", + "passwords-icecat-internal@dropbox.com:3.49.1a", + "passwords-icecat-internal@dropbox.com:3.50.0a", + "passwords-icecat-internal@dropbox.com:3.51.0a", + "passwords-icecat-internal@dropbox.com:3.52.0a", + "{b35b357b-2ec2-4787-8322-81f2bb07fcf2}:1.0", + "{b35b357b-2ec2-4787-8322-81f2bb07fcf2}:1.0.9", + "up_part_in_photo@example.com:1.3.0", + "up_part_in_photo@example.com:1.2.9", + "up_part_in_photo@example.com:1.2.8", + "up_part_in_photo@example.com:1.2.7", + "yout-ube@yout-ube.com:1.0", + "{31605771-de87-4f28-a438-99d5c601a452}:1.0.0", + "{ad8f2a2e-8e95-4c44-abaf-434a5964519d}:2.0" ] }, - "schema": 1775046995721, + "schema": 1761667014041, "key_format": "{guid}:{version}", - "stash_time": 1775068506687, - "id": "a15db654-b4e8-4705-84cf-25bb79853fff", - "last_modified": 1775068601662 + "stash_time": 1761676504960, + "id": "976463f1-15f0-41c5-be12-0ee911ca8e3b", + "last_modified": 1761676584007 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{61c62bfd-7d40-4018-ab33-562bd934dc88}:2.0", + "easySelection@item.com.jp:1.0", + "recording-extensions@skyatt.net:1.0", + "info@bwipholdings.com:1.0", + "appeffectimageeditor@gmail.com:1.0.0", + "appeffectexportsketch@gmail.com:1.0.0", + "appeffectchangeimagebg@gmail.com:1.0.0", + "{228dd49d-2881-4b73-a929-157834beb301}:1.0", + "{92832850-d381-435f-93ef-d5167fc9ee96}:1.0", + "kknd828044@qq.com:1.33", + "gourmand@spikedmind121.com:0.195", + "gourmand@spikedmind121.com:0.196", + "gourmand@spikedmind121.com:0.197", + "gourmand@spikedmind121.com:0.198", + "open-chromium@ayan.aprotechnologies.com:1.1", + "myer-cart-helper@dropzoneau:1.4.1" + ] + }, + "schema": 1761633392251, + "key_format": "{guid}:{version}", + "stash_time": 1761654905067, + "id": "208b3df1-2598-4d21-b49b-2ca0d46c8373", + "last_modified": 1761654985540 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "fnotes@karaduz.com:1.0", + "fnotes@karaduz.com:1.1", + "apple-binaural-retuner@hzp.co:1.1.3", + "speed-accelerator@baryofrzn.com:3.0.0", + "speeda.ccelerator@hotmail.com:3.0.0", + "{61c62bfd-7d40-4018-ab33-562bd934dc88}:1.0", + "{61c62bfd-7d40-4018-ab33-562bd934dc88}:1.5" + ] + }, + "schema": 1761617755933, + "key_format": "{guid}:{version}", + "stash_time": 1761633306424, + "id": "fd5505ff-6fcb-4f4b-918a-120196141c43", + "last_modified": 1761633392064 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{49cc546f-974a-4412-8002-7cc0981f2965}:0.1", + "playtv@extension.com:1.0.3", + "playtv@extension.com:1.0.6", + "playtv@extension.com:1.0.8", + "playtv@extension.com:1.0.10", + "playtv@extension.com:1.0.11", + "playtv@extension.com:1.0.13", + "api_koper@translator:1.0", + "{9b547e46-7007-4e0c-895a-0488204535b8}:1.2", + "{090d49dc-eee9-4c3f-b60f-3e09dcf3ff92}:1.0.2", + "site-monitor@fullyaccountable.com:1.0", + "site-monitor@fullyaccountable.com:1.1", + "site-monitor@fullyaccountable.com:1.2", + "site-monitor@fullyaccountable.com:1.3" + ] + }, + "schema": 1761590181129, + "key_format": "{guid}:{version}", + "stash_time": 1761611704983, + "id": "cee3639f-da51-4e76-a386-d5e6f60c70af", + "last_modified": 1761611780671 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "FfoxSearchOr@autogex.lan:1.5", + "Android@bravenhancer.com:17.4.5", + "enhancer@goldenfox.com:17.4.5", + "vyshnavp1@localextension:2.1", + "vyshnavp1@localextension:2.0", + "Android@bravenhancer.com:17.5.0", + "enhancer@goldenfox.com:17.5.0", + "{b53f32c7-7315-4df1-822f-0f07e4de24c3}:1.1.2", + "llama.ytb@gmail.com:4.2.0.0", + "llama.ytb@gmail.com:1.0.0", + "llama.ytb@gmail.com:3.1.1", + "llama.ytb@gmail.com:1.0", + "{b53f32c7-7315-4df1-822f-0f07e4de24c3}:1.1.3", + "llama.ytb@gmail.com:1.5.0", + "{c053417a-8ffb-48b4-9980-53b27418e51b}:1.0.0", + "{3349b114-96e9-4369-89cd-34cf40958938}:1.0", + "facebookfeedhider@extension.sunlessjo:1.0.0", + "beeper-support-extension@beeper.com:1.0.21", + "tontracker-exporter@example.com:1.0" + ] + }, + "schema": 1761568590237, + "key_format": "{guid}:{version}", + "stash_time": 1761590105136, + "id": "a9d669e5-0906-44f1-a239-bce8e82f0a72", + "last_modified": 1761590180996 }, { "stash": { "blocked": [ - "brandon.perez25091969na@outlook.com:1.9", - "asciiart-p3q8n1v9@devtool.dev:1.0", - "asciiart-p3q8n1v9@devtool.dev:143.10.30", - "timer-stopwatch@m7h3q6.cc:142.0", - "timer-stopwatch@m7h3q6.cc:143.10.10", - "{c346f2dc-74c6-4fc1-bc20-a955e0061166}:4.8.2", - "{c346f2dc-74c6-4fc1-bc20-a955e0061166}:4.8.3", - "{c346f2dc-74c6-4fc1-bc20-a955e0061166}:4.8.4" + "{382a0f11-6812-42d5-b45b-fd53a6ca3f1c}:11.31.7", + "{5d03f7d5-dac6-44a7-88b5-83588713bc30}:11.9.12", + "{e73baca8-bca2-49f5-a283-8f4e253bdcfa}:11.27.5", + "{f53d9a8d-316a-4ba0-8c8d-db0ceebc9330}:11.14.3", + "{c72dcdd7-82be-4e60-ac41-475be1fc56b4}:11.22.4", + "{4a557238-3ffc-40d6-bfbe-10d5ceb28192}:11.6.4", + "{a7fea0ab-56fb-4cef-9d5b-dbc31e998f6c}:11.42.9", + "gemxrp-viewer@gemviev.com:0.2.4", + "gemxrp-viewer@gemviev.com:0.2.5" ], "unblocked": [], "softblocked": [ - "custom-newtab-pro@hesip.local:1.0.1", - "proton-mail-checker@bolausson:1.3.0", - "proton-mail-checker@bolausson:1.3.1", - "fr24-to-simbrief@aussiematt95.github.com:1.0", - "fr24-to-simbrief@aussiematt95.github.com:1.0.1", - "fr24-to-simbrief@aussiematt95.github.com:1.0.2", - "fr24-to-simbrief@aussiematt95.github.com:1.0.3", - "fr24-to-simbrief@aussiematt95.github.com:1.0.4", - "fr24-to-simbrief@aussiematt95.github.com:1.0.5", - "fr24-to-simbrief@aussiematt95.github.com:1.0.6", - "fr24-to-simbrief@aussiematt95.github.com:1.0.7", - "fr24-to-simbrief@aussiematt95.github.com:1.0.8", - "fr24-to-simbrief@aussiematt95.github.com:1.0.8.1", - "fr24-to-simbrief@aussiematt95.github.com:1.1.0", - "hololyzer-dark-mode@example.com:1.0", - "hololyzer-dark-mode@example.com:2.0", - "creatio.quick.feed.replies@earthlink.iq:1.0", - "jira-time-log@local:1.0.2", - "kinolenta@aprelteam.su:1.0", - "kinolenta@aprelteam.su:1.1", - "kinolenta@aprelteam.su:1.2.0", - "Gesturefy@mod:2.1.6", - "Gesturefy@mod:3.1.2", - "Gesturefy@mod:3.1.2.1", - "Gesturefy@mod:3.2.5", - "Gesturefy@mod:3.2.6", - "datavault@local:1.0.1", - "datavault@local:1.0.0", - "{9d1f059c-cada-4111-9696-41a62d64e3bc}:0.17.9" + "truckersmp-improved@1.18.5-version:1.18.5", + "focus-panorama-view@local:1.0", + "focus-panorama-view@local:2.0.2", + "focus-panorama-view@local:2.0.4", + "{982424ad-2c2f-412f-9dd7-40826d11de25}:1.0", + "vmie-a-full-bookmark-editor@example.com:1.9", + "{03a7964d-c6fc-4a2c-a2bd-ffc1dd76906f}:0.1.0", + "vine-monitor@danielemancini.local:1.7.3", + "vine-monitor@danielemancini.local:1.7.4", + "vine-monitor@danielemancini.local:1.7.6", + "context-translator@bike-mazzell:1.0.4", + "{935acab6-93ad-4ac2-95d2-87433d5f66cf}:1.0", + "plutotwo-2025@dolo.local:2025.2", + "plutotwo-2025@dolo.local:2025.2.1", + "clip-a-frame@hangyi.top:1.0.1" ] }, - "schema": 1775025397863, + "schema": 1761546993107, "key_format": "{guid}:{version}", - "stash_time": 1775046907404, - "id": "26f57ecd-5b9b-4226-a656-8cf3183726e4", - "last_modified": 1775046995506 + "stash_time": 1761568505958, + "id": "85a4bcef-4418-4142-9563-6e5718d30363", + "last_modified": 1761568590063 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "simple-hello-world@example.com:1.2.0", - "yanima-shiki-integration-unlisted1@example.com:2.5.4", - "openguessrblind@limitfinity:1.0.0", - "{82a0bd6c-8b2e-4202-817a-d675c1202700}:1.0", - "{82a0bd6c-8b2e-4202-817a-d675c1202700}:2.0", - "{b37aaba1-7695-4001-97d6-8ba5fd12c0f5}:1.0", - "read_frog@0x64.in:1.22.0", - "smarteligibility-test-amber@axora.ai:2.1.0" + "tabraef3@yahoo.com:1.0", + "tabraef@mozilla.org:1.0", + "ytdraef@mozilla.org:1.1", + "{ff8f6ab6-62b1-4d37-91f5-fa45ce79c8b9}:1.0" ] }, - "schema": 1775003799074, + "schema": 1761531350020, "key_format": "{guid}:{version}", - "stash_time": 1775025306876, - "id": "fd820ffd-0e4b-4aa5-9aaa-ad4c96bb58ee", - "last_modified": 1775025397598 + "stash_time": 1761546905697, + "id": "db7a0760-279c-446a-b139-3c69db7e41b5", + "last_modified": 1761546992964 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "hero-dev@amazon.com:1.0.0", - "{b3e97b5a-44ac-41f5-ab11-3580dd8249f0}:1.1.1", - "{b3e97b5a-44ac-41f5-ab11-3580dd8249f0}:1.1.2", - "{0a75d802-9aed-41e7-8daa-24c067386e82}:8.12.12.22", - "Android@bravenhancer.com:22.5.5", - "enhancer@goldenfox.com:22.5.5", - "cookie-isolator@extension:2.1.5", - "sendurl@runa-dte.cl:1.2.0", - "cookie-isolator@extension:2.1.4", - "lupamoodle@fmesasc:1.6.0", - "redirector@antigravity.test:1.6", - "tabconductor@antigravity.test:1.0.4", - "tabconductor@antigravity.test:1.0.7", - "tabconductor@antigravity.test:1.0.8", - "scrollanchor@antigravity.test:1.0.7", - "scrollanchor@antigravity.test:1.0.8", - "snipstash@antigravity.test:1.0.0", - "snipstash@antigravity.test:1.1.0", - "snipstash@antigravity.test:1.2.0", - "amazon_enterprise_access@amazon:2.0.0.0", - "{6e162813-aa0d-40ea-945b-7e8bab9a15fd}:1.0" + "safe-history-blocker@example.com:2.5", + "loretomawaka@gmail.com:0.1.1", + "loretomawaka@gmail.com:0.2.0", + "chita-autofill@example.com:3.2", + "chita-autofill@example.com:3.3", + "chita-autofill@example.com:3.5", + "CookieAutoDeleteFork@xample.com:3.8.3" ] }, - "schema": 1774982195755, + "schema": 1761503779188, "key_format": "{guid}:{version}", - "stash_time": 1775003707253, - "id": "fdf92a8e-72ed-4901-a2de-201b094acef5", - "last_modified": 1775003798853 + "stash_time": 1761525306723, + "id": "4f2affb1-681f-47e5-923d-4472d6007124", + "last_modified": 1761525398992 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.1", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.2", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.6", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.7", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.8", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.9", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.10", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.11", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.12", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.13", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.14", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.15", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.16", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.17", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.18", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.19", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.20", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.21", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.22", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.24", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.25", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.26", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.5.27", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.6.1", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.6.3", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.6.4", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.6.7", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.7.3", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.7.4", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.0", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.1", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.2", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.3", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.4", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.5", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.7", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.9", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.8.10", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.10.0", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.0", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.2", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.4", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.8", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.9", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.10", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.13", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.14", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.15", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.16", - "{bcb1e569-53ab-4475-868f-42062864eaa9}:11.11.17", - "{67ab1450-21b4-48f7-b375-9a32f218177d}:1.0", - "{8be129a8-091f-454b-913b-9246c4d4ad20}:1.0", - "phishkitchen-qr@cofensepdc.com:1.0.0", - "unisport-pro@example.com:1.3.1.1", - "webrootsecurewebextensions@webroot.com:1.2.0.58", - "webrootsecurewebextensions@webroot.com:1.2.0.62", - "movie-ratings@extension.local:1.0.0", - "movie-ratings@extension.local:1.0.1", - "movie-ratings@extension.local:1.0.2", - "movie-ratings@extension.local:1.0.3", - "movie-ratings@extension.local:1.0.4", - "movie-ratings@extension.local:1.0.5", - "movie-ratings@extension.local:1.0.6", - "movie-ratings@extension.local:1.0.7", - "movie-ratings@extension.local:1.0.8", - "movie-ratings@extension.local:1.0.9", - "movie-ratings@extension.local:1.0.10", - "movie-ratings@extension.local:1.0.11", - "movie-ratings@extension.local:1.0.12", - "movie-ratings@extension.local:1.0.13", - "movie-ratings@extension.local:1.1.0", - "movie-ratings@extension.local:1.2.0", - "movie-ratings@extension.local:1.2.1", - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.7", - "docebo-silencer@transmedics:1.0", - "docebo-silencer@transmedics:1.1", - "eapw-wiki-enhancements@ewd-data:1.0", - "@smart-video-audio-download:2.1.18", - "macmdnlopncdoehmjhfenfblflnohoen@chrome-store-foxified-112476551:1.4", - "geminiexportpro@local-dev.com:1.1.0", - "foxus-private-notes@evaldas:1.1", - "foxus-private-notes@evaldas:1.2", - "foxus-private-notes@evaldas:1.3", - "ai-chat-project-exporter@dougg0k:1.0.11", - "decluttr@getdecluttr.app:0.2.0" + "test@babydog.de:1.0.0", + "test@babydog.de:1.0.1", + "auto-tab-grouper@milchhahn.github.io:1.0.2", + "auto-tab-grouper@milchhahn.github.io:1.0.1", + "auto-tab-grouper@milchhahn.github.io:1.0.0", + "{68610514-6995-4256-a283-156f33d6b484}:1.0", + "kancolletimerx@Kai2:1.7.1", + "auto-tab-grouper@milchhahn.github.io:1.0.3", + "auto-tab-grouper@milchhahn.github.io:1.0.4", + "{6e927075-6723-4fcc-a697-82acececa1e5}:1.0", + "{e56e8dbb-3bb0-42bd-8094-83660dd3c68b}:1.0", + "{e56e8dbb-3bb0-42bd-8094-83660dd3c68b}:2.0", + "{e56e8dbb-3bb0-42bd-8094-83660dd3c68b}:3.0", + "{e56e8dbb-3bb0-42bd-8094-83660dd3c68b}:4.0", + "chatgpt-extended@theriojunior.dev:1.0", + "chatgpt-extended@theriojunior.dev:1.1", + "contextsearch.help@gmail.com:5.3.0", + "contextsearch.help@gmail.com:5.3.2", + "contextsearch.help@gmail.com:5.3.3", + "contextsearch.help@gmail.com:5.3.5", + "contextsearch.help@gmail.com:6.0.7", + "contextsearch.help@gmail.com:6.1.1", + "contextsearch.help@gmail.com:6.1.2", + "contextsearch.help@gmail.com:6.1.3", + "contextsearch.help@gmail.com:6.1.4", + "contextsearch.help@gmail.com:6.1.5", + "contextsearch.help@gmail.com:6.1.7", + "contextsearch.help@gmail.com:6.1.8", + "contextsearch.help@gmail.com:6.1.9", + "contextsearch.help@gmail.com:6.2.0", + "contextsearch.help@gmail.com:6.2.1", + "contextsearch.help@gmail.com:6.2.2", + "contextsearch.help@gmail.com:6.2.4", + "contextsearch.help@gmail.com:6.2.5", + "contextsearch.help@gmail.com:6.3.0", + "contextsearch.help@gmail.com:6.3.1" ] }, - "schema": 1774960597707, + "schema": 1761482185885, "key_format": "{guid}:{version}", - "stash_time": 1774982106993, - "id": "cf349b9f-a2e1-4aa4-9f70-68752334edcd", - "last_modified": 1774982195541 + "stash_time": 1761503704913, + "id": "fec18c72-66c3-4192-9ab4-1d29e49dc4e4", + "last_modified": 1761503779018 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{b65fdc63-3ee2-49e2-8fe7-f84f1a2a2cbd}:1.1", + "{478c616c-bc01-4ac6-bf97-c2c9cf54781b}:1.0", + "{478c616c-bc01-4ac6-bf97-c2c9cf54781b}:1.1", + "{478c616c-bc01-4ac6-bf97-c2c9cf54781b}:1.2", + "{b36050e5-871a-4266-af8b-1ca220420a45}:1.0", + "{2ce542fa-2992-46ad-8fc1-5c3b1a4cc51b}:1.0", + "{2ce542fa-2992-46ad-8fc1-5c3b1a4cc51b}:1.1", + "pxdownloader-android-public@example.com:0.19.1", + "pxdownloader-android-public@example.com:0.19.2", + "pxdownloader-android-public@example.com:0.19.3", + "pxdownloader-android-public@example.com:0.19.4", + "pxdownloader-android-public@example.com:0.19.5", + "{2934c318-5cb4-4669-af72-8e23fb248027}:1.0", + "{85d37e48-df6d-40be-98bf-f492004fe364}:1.0", + "anubisblocker@llia.nekoweb.org:1.3.2", + "anubisblocker@llia.nekoweb.org:1.4.0", + "anubisblocker@llia.nekoweb.org:1.4.1", + "anubisblocker@llia.nekoweb.org:1.4.1.1", + "anubisblocker@llia.nekoweb.org:1.4.3", + "anubisblocker@llia.nekoweb.org:1.4.3.1", + "anubisblocker@llia.nekoweb.org:1.4.3.2", + "anubisblocker@llia.nekoweb.org:1.4.3.3", + "{36cf233d-1355-45aa-8398-03e39b545803}:1.0", + "{babb12df-56f0-4300-8934-cc26043f0f79}:1.0", + "contact@fixyourstartup.com:0.2.20", + "contact@fixyourstartup.com:1.1.0", + "contact@fixyourstartup.com:1.1.1", + "sponsorBlockerBETA@spotsponsorblock.org:1.0" + ] + }, + "schema": 1761460592206, + "key_format": "{guid}:{version}", + "stash_time": 1761482104803, + "id": "4bdbe957-4511-4bfb-a4e1-2e4cf0f67d0f", + "last_modified": 1761482185700 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{8dc8483c-96a3-4ed7-a286-8fadfb5e7b1e}:1.0.0", + "nestle2796@nestle2796.com:1.0", + "blackedfy@felipe.com:0.1", + "{6c17f6f9-294d-4569-9f4c-86e27954f0f6}:1.0" + ] + }, + "schema": 1761444959094, + "key_format": "{guid}:{version}", + "stash_time": 1761460505883, + "id": "73ae2a57-437a-460a-b7fc-ca0d8083c71e", + "last_modified": 1761460592027 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "cs2trader@dejan:3.4.2", + "{e0607319-33b8-4d2d-a48d-6264cd497f2c}:1.0", + "{a0528a48-361a-4a8b-85c1-051c5fa01d46}:1.0", + "{61659b35-8c65-468c-9283-998267a88dfd}:0.0.1" + ] + }, + "schema": 1761417396148, + "key_format": "{guid}:{version}", + "stash_time": 1761438906017, + "id": "5c6b6fe2-c03a-4082-a52f-8af51f29b898", + "last_modified": 1761438991377 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{49cc546f-974a-4412-8002-7cc0981f2965}:3.9", + "{9d8ced5a-078c-4cbd-bdd3-81f041bc2e65}:1.0" + ] + }, + "schema": 1761395788488, + "key_format": "{guid}:{version}", + "stash_time": 1761417306142, + "id": "7e94e1a5-fcf5-4007-b41c-8dc66b70995b", + "last_modified": 1761417396017 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{b2c3d4e5-f6a7-8901-bcde-f23456789012}:1.9", + "context-lens-icecat@iniyankanmani.github.io:0.1", + "context-lens-icecat@iniyankanmani.github.io:0.1.1", + "mail@skyifx.de:20251025", + "mail@skyifx.de:1.5", + "mail@skyifx.de:1.6", + "mail@skyifx.de:1.7", + "mail@skyifx.de:1.8", + "mail@skyifx.de:1.9", + "recovery-autofill@yourdomain.com:1.0.0", + "mail@skyifx.de:20251025.2", + "Zcx009060@163.com:2.0", + "{7642ce99-eb08-4863-a800-3caf07a86c5f}:1.0", + "coki-extractor@example.com:1.9", + "coki-extractor@example.com:1.10" + ] + }, + "schema": 1761374197559, + "key_format": "{guid}:{version}", + "stash_time": 1761395705165, + "id": "0b0af319-83db-42ee-bfc1-d6227b456343", + "last_modified": 1761395788188 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "sideread@example.com:1.0.0", + "{ae65545b-dc79-4b5e-9df9-d40e72d74069}:1.0.0", + "{3b85fab0-dc16-4512-912e-fa527ae23ebd}:1.11", + "{3b85fab0-dc16-4512-912e-fa527ae23ebd}:1.12", + "{3b85fab0-dc16-4512-912e-fa527ae23ebd}:1.12.1", + "readeck@readeck.com:2.5.3", + "readeck@readeck.com:2.5.2", + "readeck@readeck.com:2.5.1", + "readeck@readeck.com:2.5.0" + ] + }, + "schema": 1761358549185, + "key_format": "{guid}:{version}", + "stash_time": 1761374105636, + "id": "64c30cd1-fda8-4c5e-b4bc-93f4680c3e88", + "last_modified": 1761374197392 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "kinozalhelper@elektrikis.id.lv:2.26.0", + "kinozalhelper@elektrikis.id.lv:2.26.1", + "kinozalhelper@elektrikis.id.lv:2.26.2", + "kinozalhelper@elektrikis.id.lv:2.27.0", + "kinozalhelper@elektrikis.id.lv:2.27.1", + "kinozalhelper@elektrikis.id.lv:2.28.0", + "manual-proxy-setter@yourname:2.0", + "manual-proxy-setter@yourname:1.9", + "{8a015f8b-a1c2-4c5a-801e-9f5228ed3852}:1.0", + "{3b24c36e-3ad0-44cb-8e00-a2b827d93cbc}:1.0", + "{0b2eb769-7b48-4ca5-8eb0-938749372c91}:1.1", + "{df9a4c0a-a3e4-4b7e-b64e-06146ee63226}:1.0", + "{df9a4c0a-a3e4-4b7e-b64e-06146ee63226}:1.1", + "{562437b9-259c-4652-b1cb-95f204f0ac1b}:1.0" + ] + }, + "schema": 1761330984065, + "key_format": "{guid}:{version}", + "stash_time": 1761352505536, + "id": "bb98f6c2-3466-4d02-b394-d1ba3810980c", + "last_modified": 1761352587390 }, { "stash": { "blocked": [ - "{20206a5e-66c7-46a3-b820-9e1866ebb05a}:1.1", - "{6386e8b1-e54f-4357-925a-8cc13395c5d0}:1.1", - "{6386e8b1-e54f-4357-925a-8cc13395c5d0}:1.2", - "{6386e8b1-e54f-4357-925a-8cc13395c5d0}:11.0.0", - "{aeb2198e-dc01-4fdc-b338-a81b6a30a749}:1.1", - "{aeb2198e-dc01-4fdc-b338-a81b6a30a749}:11.0.0" + "{d5a02ff7-2425-4ab5-9d21-13d02655ec09}:2.10", + "{32a2f844-81c8-465a-9299-cdf7ab4ba978}:1.0", + "{32a2f844-81c8-465a-9299-cdf7ab4ba978}:372.6" ], "unblocked": [], "softblocked": [ - "ikea-uk-autofill-2.00@yourdomain.local:2.0", - "proton-mail-checker@bolausson:1.1.17", - "proton-mail-checker@bolausson:1.1.18", - "proton-mail-checker@bolausson:1.1.19", - "proton-mail-checker@bolausson:1.1.21", - "{003bd454-3d2b-4ea0-8059-6a6e36ed4322}:1.0.0", - "{003bd454-3d2b-4ea0-8059-6a6e36ed4322}:1.0.0.1", - "{003bd454-3d2b-4ea0-8059-6a6e36ed4322}:1.0.0.2", - "orange-dark@orange.com:1.0", - "{87c67e89-f6a6-4d42-8b16-ecd4c360024b}:1.0", - "{5f31c899-2264-468d-8b3b-c1f0474bed29}:1.0", - "mynotesatking-interactive@local.dev:1.0", - "github-markdown-tables@local:1.0.0", - "lobbydog_extension@javahippie.net:1.0.0", - "claude-usage-badge@local:1.0", - "ado-active-comments-filter@local:1.0" + "4f67d0aa0a2447d4870970367b660753@pleasantpasswords.com:1.80.99", + "rentgen@internet-czas-dzialac.pl:0.2.0", + "testORX@test.com:1.0", + "testORX@test.com:1.1", + "testORedirectX@test.com:1.0" ] }, - "schema": 1774938996445, + "schema": 1761309390694, "key_format": "{guid}:{version}", - "stash_time": 1774960506762, - "id": "4f554533-7909-461d-bf5b-0f8978f4384a", - "last_modified": 1774960597500 + "stash_time": 1761330905331, + "id": "a166dc6e-c684-446e-82a7-ef3058fd1493", + "last_modified": 1761330983981 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "lockd@74k1.sh:1.0.0", - "lockd@74k1.sh:1.0.1", - "lockd@74k1.sh:1.0.2", - "lockd@74k1.sh:1.1.0", - "lockd@74k1.sh:1.1.1", - "lockd@74k1.sh:1.2.0", - "lockd@74k1.sh:1.2.1", - "{7adc56c5-a572-4f64-9422-64cd174ff29a}:1.0", - "xelya-deploy-monitor@xelya.io:1.5.3", - "xelya-deploy-monitor@xelya.io:1.5.4", - "{6a0f4baa-11d5-4626-a97e-f8944606c03d}:2.0", - "ynew--timer@example.com:1.5", - "ynew--timer@example.com:1.4", - "ynew--timer@example.com:1.3", - "miao.jr.life@outlook.com:0.9.5", - "aaaamynew--timer@example.com:1.2", - "timer-link-opener@example.com:1.0", - "timer-link-opener@example.com:1.1" + "animepahe@helper:1.2" ] }, - "schema": 1774917394790, + "schema": 1761287785663, "key_format": "{guid}:{version}", - "stash_time": 1774938906957, - "id": "6e8243f6-48a8-427e-aceb-a185381b647d", - "last_modified": 1774938996306 + "stash_time": 1761309305288, + "id": "d7af9b73-bf93-43d0-8e31-47ba489031be", + "last_modified": 1761309390619 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "ikea-autofill-1.0@yourdomain.local:1.0", - "xelya-deploy-monitor@xelya.io:1.5.1", - "xelya-deploy-monitor@xelya.io:1.5.2", - "cronos-extension@cronos.dev:1.0.5", - "{d7c93b2d-5bf9-41ec-b2a1-2a19fee76126}:2.0.0", - "{ed012e23-827e-443f-90fb-0d22f8ddfd7b}:121", - "vivenciasventec@gmail.com:1.0", - "{e6773859-81a3-413e-8884-efa512148f62}:1.0", - "{e6773859-81a3-413e-8884-efa512148f62}:2.0", - "quincys-manga-translator@quincy.com:1.0" + "{e4ae7994-2f1b-4ab5-a3a8-ea64b3c757c6}:0.8", + "fusionada-cerrar-pestanas-v18@ejemplo.com:1.8" ] }, - "schema": 1774895791699, + "schema": 1761272154580, "key_format": "{guid}:{version}", - "stash_time": 1774917307604, - "id": "4a47d062-49b3-46c0-84ba-a2f583e2cea5", - "last_modified": 1774917394535 + "stash_time": 1761287705066, + "id": "4a47c4a1-a801-4ca3-ade1-fcc3e773bd89", + "last_modified": 1761287785591 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "{6b6739ea-901b-41fb-8d16-ced0298b3e46}:1.1.4", - "toytique@toytique.be:1.4.22", - "toytique@toytique.be:1.4.21", - "toytique@toytique.be:1.4.20", - "toytique@toytique.be:1.4.19", - "toytique@toytique.be:1.4.18", - "toytique@toytique.be:1.4.16", - "toytique@toytique.be:1.4.15", - "toytique@toytique.be:1.4.17", - "xelya-deploy-monitor@xelya.io:1.5.0", - "{e75507df-59e7-4de3-a000-0ee2e8a7930b}:1.4", - "{111cf42d-8893-4fd8-8986-4d2e91edbbc5}:0.2", - "{fe5b20e4-6f85-4816-bdcd-504a4d9130ee}:1.0", - "{9969fec5-92d1-48fa-a44e-130df28702cb}:1.0", - "{29209932-d5dd-4f0f-9907-38c37b80b85b}:1.0", - "clickarmor@clickarmor.dev:1.3.2", - "clickarmor@clickarmor.dev:1.3.1", - "{1524e030-24b0-4c07-ad63-29d8002b4ec6}:2.35.0", - "Saneaki@saneaki.net:1.7", - "{c2ab844c-55f1-4f46-bfd9-83b868dcd0b9}:1.0", - "mstickets@mesuresystems.com:1.0", - "cs2-ipa@cs2ipa.extension:1.2.1", - "cs2-ipa@cs2ipa.extension:1.3.1", - "{339d423b-daac-4fc9-81ab-f36f90bf575c}:1.0", - "{3cb56e28-ab11-4f88-beb5-511ddbcd93ea}:1.1.5", - "aria2-integrate-icecat@extension:1.0.0", - "audiocatch@yourdomain.com:1.0", - "audiocatch@yourdomain.com:1.1", - "{b3db236b-c2ee-4b5c-9c37-11baab8a70c0}:1.0.0", - "ikea-autofill@yourdomain.local:1.1" + "test-finder@example.com:1.1.9", + "test-finder@example.com:1.1.12", + "test-finder@example.com:1.2.1", + "test-finder@example.com:1.3.0", + "sushi@example.com:1.1", + "{c20b6fb2-39a3-45d8-b888-b93f95686504}:1.0.1", + "{469feb89-9219-4ae7-ae29-ce3fc8475727}:1.0", + "{8b815474-8129-4626-a322-2023f000f57d}:1.0", + "{47db32af-abcd-4eca-a019-bd06a9817429}:1.0", + "{fa13f1a3-f919-4025-a063-8f2a00cc7549}:3.0", + "{bc411284-fd56-4a06-9081-c1dc42585a4e}:1.0" ] - }, - "schema": 1774874194523, - "key_format": "{guid}:{version}", - "stash_time": 1774895706778, - "id": "285f09c2-8e6c-4a73-bc60-be240774da51", - "last_modified": 1774895791532 - }, - { - "stash": { - "blocked": [ - "{0c6228d4-38c1-403b-9222-9416fd48a1a1}:1.0.0", - "{0c6228d4-38c1-403b-9222-9416fd48a1a1}:12.0", - "{cf59882a-468a-445e-8979-9a8f344eb697}:1.0.0", - "{cf59882a-468a-445e-8979-9a8f344eb697}:19.0", - "tab-manager-pro@x7k9m2.dev:142.0", - "tab-manager-pro@x7k9m2.dev:142.40.30", - "{10e62ac9-70e1-4d4f-b5f3-c0d356f96d11}:1.0.0", - "{10e62ac9-70e1-4d4f-b5f3-c0d356f96d11}:100101.0.1", - "{3c18a807-5eb1-43f6-ba9c-7ba2f4bb492c}:1.0", - "{3c18a807-5eb1-43f6-ba9c-7ba2f4bb492c}:1.1", - "{3c18a807-5eb1-43f6-ba9c-7ba2f4bb492c}:3.1.3", - "{3c18a807-5eb1-43f6-ba9c-7ba2f4bb492c}:11.0.0", - "{3c18a807-5eb1-43f6-ba9c-7ba2f4bb492c}:22.1", - "{3c18a807-5eb1-43f6-ba9c-7ba2f4bb492c}:77.1", - "{15074d3a-4825-4591-8dd6-bd6b519408d0}:1.0", - "{15074d3a-4825-4591-8dd6-bd6b519408d0}:33.5.3", - "{15074d3a-4825-4591-8dd6-bd6b519408d0}:44.0", - "{14ef8f53-fd1c-4c64-bf02-1851b182cf3c}:1.0", - "{14ef8f53-fd1c-4c64-bf02-1851b182cf3c}:11.0.0", - "{ba0a7c95-d11b-42cd-b5c0-2fe14451a53f}:1.7", - "{ba0a7c95-d11b-42cd-b5c0-2fe14451a53f}:1.8", - "{523c8816-9517-4dba-9ab9-f9bb5880d045}:3.1.8", - "{523c8816-9517-4dba-9ab9-f9bb5880d045}:3.1.9", - "{26bcb76f-42f1-40c2-88ab-ada6c88768d8}:5.1.3", - "{26bcb76f-42f1-40c2-88ab-ada6c88768d8}:5.1.14", - "live-us-football-scores@scorelivesus.com:4.12.9", - "{d00a030c-dc8d-486a-ba4c-067b1670175d}:1.0", - "{d00a030c-dc8d-486a-ba4c-067b1670175d}:31.15.4", - "{6932cea7-acab-45f3-8afd-2b4afc065b83}:1.1", - "{6932cea7-acab-45f3-8afd-2b4afc065b83}:106.0.1", - "{f909bd25-460b-423f-89fc-03ea7472592f}:1.0", - "slushAPP@outlook.com:2.1.5", - "clicker10_2@gmail.com:1.0", - "clicker10_1@gmail.com:1.0", - "{92d6ea9e-ebad-400d-b1b1-9dc9277b2ff2}:1.0", - "{16c04327-7ba7-4856-a70f-0fdad3cbfe22}:1.0", - "{34222326-eddf-49c3-bd31-8f3af43e28a8}:1.0", - "{4de383b0-900e-4b8c-874d-1cb788236ac1}:1.5", - "{06c6268f-fc42-4209-a099-de592067edd1}:1.1", - "{37fac786-e9dc-4b13-90f8-07df877658f7}:0.2.1", - "{2b665607-0837-413b-82e3-38a2444eb9e8}:2.2.3", - "{1e49de0c-1e36-42d1-b833-0d4705ce5c77}:1.3.7", - "{a39cbbfc-3ee2-4916-94f9-fa08a8013226}:3.4.2.0", - "{80581b74-21ff-4dcb-a846-f13f8037d6dc}:0.1.7", - "{5cbe5a1d-4ce1-40ef-9bf7-aae944d8cfdb}:1.4.1", - "{b7701cb1-6572-44a6-bd5e-2f4fbbcbbc49}:1.2.0", - "{ee888eb8-27b0-490d-93c0-939a2874411a}:2026.3.23", - "{3045fc91-260f-4451-b55c-85e610b0868c}:1.1.4", - "{cc9c0a4f-7b04-428f-91a9-d229534cced1}:2.2.0", - "{407f807e-eb80-4ac2-bcb1-cc077d98bfd4}:2.0.5", - "{73b6f5c5-9103-4d73-9507-036b286b3d28}:0.3.0", - "{4f201645-fa61-4e52-8a29-42fca4fb8778}:1.0", - "{eb186dfb-f41d-4903-966e-58f6c7fadfd2}:1.0" - ], - "unblocked": [], - "softblocked": [ - "itvx-autofill@yourdomain.local:1.1", - "universal-scraper@local-dev:1.0", - "universal-scraper@local-dev:1.0.1", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.3", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.8", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.9", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.11", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.10", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.12", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.13", - "ukihunter@github.com:1.0.1", - "mater-purissima-shield@example.com:1.0.0", - "mater-purissima-shield@example.com:1.0.1", - "souzamilhas@extension.icecat:10.1.0.1485", - "{5c9354e6-9c11-4cd6-97a5-dcd0f6727f31}:1.0" - ] - }, - "schema": 1774852592568, - "key_format": "{guid}:{version}", - "stash_time": 1774874107128, - "id": "2780f9fd-ae42-49dd-ba21-c3202607ac9b", - "last_modified": 1774874194294 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{ca9190dd-986b-4338-be8e-8a79cba20491}:1.0.0", - "{ca9190dd-986b-4338-be8e-8a79cba20491}:1.0.1", - "antidebug-breaker@browserplug.local:3.0.4", - "tab-guardian@example.com:1.3.7", - "chartai@livewellmedical.ca:1.0.0", - "chartai@livewellmedical.ca:1.0.1", - "chartai@livewellmedical.ca:1.0.2", - "chartai@livewellmedical.ca:1.0.3", - "chartai@livewellmedical.ca:1.0.4", - "chartai@livewellmedical.ca:1.0.5", - "chartai@livewellmedical.ca:1.0.6", - "aria2-integrate@extension:1.0.0" - ] - }, - "schema": 1774830992177, - "key_format": "{guid}:{version}", - "stash_time": 1774852506843, - "id": "57294baa-ab1d-42e3-8d22-b0e44d52153e", - "last_modified": 1774852592354 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "gmngpagflejjoblmmamaonmnkghjmebh@chrome-store-foxified--1624070162:2.3.7", - "noaneddfkdjfnfdakjjmocngnfkfehhd@chrome-store-foxified--1624070162:4.1.2", - "okmepbglpjobecobbkeodgdnpcfnjldc@chrome-store-foxified--1624070162:1.6.1", - "{a685065d-4f22-423a-ba57-76022aed8144}:0.2.8", - "{a685065d-4f22-423a-ba57-76022aed8144}:0.2.9resigned1", - "kontenmanager@gmx.de:2026.0.4.0", - "kontenmanager@gmx.de:2026.0.4.1", - "kontenmanager@gmx.de:2026.0.4.2", - "personal-test-img-downloader@extension.local:1.0.3", - "proton-mail-checker@bolausson:1.1.14", - "{19b1ce41-2ac9-4dc0-942f-4aaa0f6ddffb}:1.0", - "{7dec58ba-dcb2-4efb-8201-fd1e0eacd836}:1.0", - "linkedin-suggested-posts-remover@valerian.dtdg.fr:1.0.0", - "linkedin-suggested-posts-remover@valerian.dtdg.fr:1.0.1", - "{a8ea2335-200b-4292-8106-c68bcd50e834}:2.0", - "melon@melon:1.4", - "proton-mail-checker@bolausson:1.1.15", - "proton-mail-checker@bolausson:1.1.16", - "{4f24bc7f-144e-41bf-b836-94419eed4a5e}:1.0", - "local-search@jeff486wet:1.0", - "local-search@jeff486wet:1.1" - ] - }, - "schema": 1774809391662, - "key_format": "{guid}:{version}", - "stash_time": 1774830906798, - "id": "69a81e4f-dda1-43ef-a60c-e61d05e0bf01", - "last_modified": 1774830991929 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "michaelzuraw123@gmail.com:1.0", - "{6b6739ea-901b-41fb-8d16-ced0298b3e46}:1.1.3", - "wa-number-checker@checknumber.ai:0.0.1", - "arden4@wurkang.com:2.0.0", - "autofill-orbit-yourchewyplace@2024:1.0", - "autofill-orbit@local:1.0", - "autofill-universal@local:1.0", - "Android@bravenhancer.com:22.4.5", - "enhancer@goldenfox.com:22.4.5", - "Microshit@stockman50:0.0.6", - "kindle2pdfapp@gmail.com:1.0.5", - "{ba176907-666b-4301-949f-a5498efa6910}:1.0", - "kiosk_controller_light@teacher.com:1.0", - "tasalo@tasalo.app:0.1.0", - "biblioweb.barcode@localdomain58-1.com:1.1.3", - "biblioweb.barcode@localdomain.com:1.0.0", - "biblioweb.barcode@localdomain.com:1.1.2", - "kiosk_controller_light@teacher.com:1.1", - "proton-mail-checker@bolausson:1.1.12", - "proton-mail-checker@bolausson:1.1.13" - ] - }, - "schema": 1774787794462, - "key_format": "{guid}:{version}", - "stash_time": 1774809307263, - "id": "09caaadc-bab1-4c84-a5ef-7520b31e66c7", - "last_modified": 1774809391367 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{190d130f-4ee8-46a4-9c80-70a8164ec3af}:1.0", - "atom@escorp.dynamics:0.0.1", - "atom@escorp.dynamics:0.0.2", - "atom@escorp.dynamics:0.0.3", - "atom@escorp.dynamics:0.0.4", - "atom@escorp.dynamics:0.0.5", - "atom@escorp.dynamics:0.0.6", - "atom@escorp.dynamics:0.0.7", - "atom@escorp.dynamics:0.0.8", - "atom@escorp.dynamics:0.0.9", - "atom@escorp.dynamics:0.0.10", - "atom@escorp.dynamics:0.0.11", - "atom@escorp.dynamics:0.0.12", - "escorp-automation@escorp.local:0.1.0", - "speed-dial-v2@gt.org:1.0.1", - "speed-dial-v2@gt.org:1.0.2", - "speed-dial-v2@gt.org:1.0.3", - "speed-dial-v2@gt.org:1.0.4", - "gemini-link-analyzer-pro@yourdomain.com:1.2", - "{c6bd1ff8-e4b8-4281-bfd9-8abdfa524421}:1.0", - "youtube-fixer@lomanto.cc:1.0", - "youtube-fixer@lomanto.cc:1.1", - "arcana@ankerlab.de:1.0.0" - ] - }, - "schema": 1774766194832, - "key_format": "{guid}:{version}", - "stash_time": 1774787707298, - "id": "2333c0d6-75ab-4e15-a81a-98d0e8a606f6", - "last_modified": 1774787794240 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{be69632f-eb0e-425b-a8a0-e2ac993856ad}:1.0", - "dns-check@irfani.dev:1.0.2", - "dns-check@irfani.dev:1.0.3", - "dns-check@irfani.dev:2.2.6", - "{9f24a14d-1577-43a0-86f8-2e95a0ad96e0}:1.0", - "{3b2404ab-3049-458f-9d4c-f943de5ad21f}:1.0", - "{72b47e84-4de9-40e4-a9bf-0f142d794282}:1.0", - "respectful-reaction-button@gongahkia.dev:2.1.0", - "nectar-smart-sender-android-dev@celran.local:0.1.0", - "adman-ext@adman.com:0.6.3" - ] - }, - "schema": 1774744592409, - "key_format": "{guid}:{version}", - "stash_time": 1774766106463, - "id": "6a305459-eb35-46f0-b5dc-c221b4c765d3", - "last_modified": 1774766194625 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{fa55a5ec-ddd9-45d3-93d4-b38777cd32ca}:1.0", - "{5fb5b4a4-6485-4e28-bd6d-62837f0c7340}:2025.7.30", - "cookie-isolator@extension:2.0.5", - "cookie-isolator@extension:2.0.3", - "cookie-isolator@extension:2.0.2", - "funpay-auto-rais@example.com:1.1.0", - "speed-dial@gt.org:1.0.0", - "cookie-isolator@extension:2.1.1", - "cookie-isolator@extension:2.1.0", - "cookie-isolator@extension:2.0.8", - "cookie-isolator@extension:2.0.6", - "cookie-isolator@extension:2.0.1", - "cookie-isolator@extension:2.0.0", - "{44628ace-0d3c-4b4b-a523-0464c57201a7}:1.0", - "{44628ace-0d3c-4b4b-a523-0464c57201a7}:1.1", - "{a7c9e2f1-83b4-4d6a-b5f0-9f1c7d3a8b62}:1.5" - ] - }, - "schema": 1774722986199, - "key_format": "{guid}:{version}", - "stash_time": 1774744506516, - "id": "94aa838e-c686-4164-bc1a-f9006aa95e74", - "last_modified": 1774744592211 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "crosspoint-reader@xteink:1.0.3", - "jt-power-tools@king0light.ai:4.0.4", - "jt-power-tools@king0light.ai:4.03", - "promedico-helper-dev@degrotedokter:1.8.1.2", - "promedico-helper-dev@degrotedokter:1.8.1.1", - "promedico-helper-dev@degrotedokter:1.8.1", - "favory@sp4ce.pw:4.0.0.4", - "{19f5a1d0-ab2b-4bc7-8c63-1572b7cda578}:0.0.2", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:7.0", - "chatgpt-markdown-exporter@example.com:1.0", - "chatgpt-markdown-exporter@example.com:1.1", - "cs2-ipa@cs2ipa.extension:1.1.1", - "cs2-ipa@cs2ipa.extension:1.1.0", - "ai-analyzer@analyzer.plus:1.2.0", - "ai-analyzer@analyzer.plus:1.3.0", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:7.0.1", - "export-domain@ffminus:1.0.0" - ] - }, - "schema": 1774701394376, - "key_format": "{guid}:{version}", - "stash_time": 1774722906058, - "id": "e809eb09-cc58-40c9-b625-3203a9e95169", - "last_modified": 1774722986078 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{06c3fcc0-aa1d-4e9e-a6ee-6ed41f8502bc}:1.0", - "{6fa22361-a688-4341-a195-5c6ff257c9e4}:1.5.1", - "wall-ai-pro@protection.icecat:2.3.3", - "{80ee7cfd-6e60-48c2-8b61-83f505b6c37a}:0.2", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:6.7", - "mj-ultimate-82@majapahlevi.local:8.2", - "{29f08ecf-b667-48cc-957d-7ac6bdca35a7}:3.8.1", - "dark-ai-gen8@sage-pilot.com:8.2", - "ultimate@majapahlevi.local:8.3", - "{badadf39-8379-45f9-ad98-2b0543054686}:1.0.11", - "youtube-levelup@tn3w:1.3.9.1", - "manga-preloader-pro@arab-readers.net:6", - "shield-privacy@shield-extension.com:1.0.0", - "promedico-helper@degrotedokter:1.1.0", - "promedico-helper@degrotedokter:1.1.1", - "promedico-helper@degrotedokter:1.1.2", - "promedico-helper@degrotedokter:1.1.3", - "promedico-helper@degrotedokter:1.1.4", - "promedico-helper@degrotedokter:1.1.5", - "promedico-helper@degrotedokter:1.1.6", - "promedico-helper@degrotedokter:1.1.7", - "promedico-helper@degrotedokter:1.1.9", - "promedico-helper@degrotedokter:1.2", - "promedico-helper@degrotedokter:1.2.1", - "promedico-helper@degrotedokter:1.2.2", - "promedico-helper@degrotedokter:1.3", - "promedico-helper@degrotedokter:1.3.1", - "promedico-helper@degrotedokter:1.3.4", - "promedico-helper@degrotedokter:1.3.5", - "promedico-helper@degrotedokter:1.3.655", - "promedico-helper@degrotedokter:1.3.656", - "promedico-helper@degrotedokter:1.3.658", - "promedico-helper@degrotedokter:1.3.659", - "promedico-helper@degrotedokter:1.3.660", - "promedico-helper@degrotedokter:1.3.661", - "promedico-helper@degrotedokter:1.3.662", - "promedico-helper@degrotedokter:1.3.663", - "promedico-helper@degrotedokter:1.3.664", - "promedico-helper@degrotedokter:1.3.665", - "promedico-helper@degrotedokter:1.3.666", - "promedico-helper@degrotedokter:1.4", - "promedico-helper@degrotedokter:1.4.1", - "promedico-helper@degrotedokter:1.5", - "promedico-helper@degrotedokter:1.6", - "promedico-helper@degrotedokter:1.6.1", - "promedico-helper@degrotedokter:1.6.2", - "promedico-helper@degrotedokter:1.6.3", - "promedico-helper@degrotedokter:1.6.4", - "promedico-helper@degrotedokter:1.7", - "promedico-helper@degrotedokter:1.7.1", - "promedico-helper@degrotedokter:1.7.1.1", - "promedico-helper@degrotedokter:1.7.1.2", - "promedico-helper@degrotedokter:1.7.1.3", - "promedico-helper@degrotedokter:1.7.1.4", - "promedico-helper@degrotedokter:1.7.1.5", - "promedico-helper@degrotedokter:1.7.1.6", - "promedico-helper@degrotedokter:1.7.2", - "promedico-helper@degrotedokter:1.7.3.1", - "promedico-helper@degrotedokter:1.7.4", - "promedico-helper@degrotedokter:1.8" - ] - }, - "schema": 1774679794527, - "key_format": "{guid}:{version}", - "stash_time": 1774701306496, - "id": "2c7603a0-e66e-4882-895c-8017033db649", - "last_modified": 1774701394182 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3942991c-83a9-494d-94e2-73a9c849ff94}:241029.1", - "{d935e25d-ba99-4e65-961c-40bf2986b585}:1.1", - "sendurl@runa-dte.cl:1.1.7", - "extension@laterbag.app:1.2.0", - "sendurl@runa-dte.cl:1.1.8", - "odfmimo@gmail.com:1.0", - "sendurl@runa-dte.cl:1.1.9", - "pokemonkin@manual-sniper.local:2.0", - "pokemonkin@manual-sniper.local:2.1.0", - "pokemonkin@manual-sniper.local:3.0.1", - "cloudbeds-helper@yourdomain.com:1.0.0", - "{cbecf433-b46d-480c-81ff-18698975a214}:1.0" - ] - }, - "schema": 1774658198616, - "key_format": "{guid}:{version}", - "stash_time": 1774679706253, - "id": "46b48b01-39ad-4de7-a415-fc07ba93d2b4", - "last_modified": 1774679794327 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ip-lookup@extension:1.0", - "snow-autofill@extension:3.8.0", - "{cf59882a-468a-445e-8979-9a8f344eb697}:56543230", - "{1dbebc3b-e9e9-4bcd-8596-93af38c0d08b}:1.0", - "{fff98d6d-7019-4869-bda2-5cc83ab58f7a}:1.0", - "link-cleaner-redirects@local:1.0.1", - "kimai-time-tracker@icecat-addon:1.0.1.2", - "{81a3f49f-615f-40ec-8955-29957b1e7cd0}:1.0", - "{81a3f49f-615f-40ec-8955-29957b1e7cd0}:2.0", - "{9b339cc3-57ad-4e59-9397-923e4b20316a}:1.0", - "{9b339cc3-57ad-4e59-9397-923e4b20316a}:1.1", - "{9b339cc3-57ad-4e59-9397-923e4b20316a}:1.2", - "mirsal@noon:1.1.1", - "mirsal@noon:1.2.1", - "home-sweet-home@extension.icecat:1.16.3" - ] - }, - "schema": 1774636597910, - "key_format": "{guid}:{version}", - "stash_time": 1774658107290, - "id": "460f664b-08b5-44f3-9dd9-592fc89f8e3f", - "last_modified": 1774658198174 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{bafecbbe-1b7a-4837-b23e-c01d999c5942}:0.2", - "{94454c16-9dcd-495c-a059-24ca36a81d32}:0.2", - "browser-cli@browser-cli:0.1.0", - "{107edad7-6cd1-42fa-b657-a670180da3c7}:2.2.8", - "proton-mail-checker@bolausson:1.1.9", - "proton-mail-checker@bolausson:1.1.10", - "proton-mail-checker@bolausson:1.1.11", - "live-lineups@yourdomain.com:3.0", - "reliant-reddit@esswhyy.dev:1.0", - "yt-safe-place-mr2026@mathis-roediger:1.2", - "{e8f1b2c3-4d5a-6f7e-8a9b-0c1d2e3f4a5b}:1.2", - "magnolia@12.34:4.3.3.2", - "booky@bookmark-ai.com:0.3.2", - "tabcloser@local:1.0", - "tabcloser@local:1.0.1", - "{0c6228d4-38c1-403b-9222-9416fd48a1a1}:100102.0.1", - "{cf59882a-468a-445e-8979-9a8f344eb697}:100102.0.1" - ] - }, - "schema": 1774614998170, - "key_format": "{guid}:{version}", - "stash_time": 1774636508404, - "id": "5c63267d-1aa1-43f3-8c1a-e18ada778850", - "last_modified": 1774636597600 - }, - { - "stash": { - "blocked": [ - "ElizabethBrooks5653@outlook.com:1.2", - "dark-toggle@t3v7m9.co:142.0", - "dark-toggle@t3v7m9.co:143.10.10", - "dark-toggle@t3v7m9.co:143.10.40", - "color-picker@v9m3k7.app:142.0", - "color-picker@v9m3k7.app:142.50.20", - "{2529ae60-42ae-469f-b08f-95cf1a3c1658}:5.8.2", - "{2529ae60-42ae-469f-b08f-95cf1a3c1658}:5.8.3", - "david.wilson19031973xau@outlook.com:1.7" - ], - "unblocked": [], - "softblocked": [ - "something@something.com:1.6.7", - "something@something.com:1.6.8", - "rrr-agent@rrr.dev:1.0.6", - "{7f966ba5-2826-4ac8-8964-f6ab6d38ddd2}:0.1.0", - "{7f966ba5-2826-4ac8-8964-f6ab6d38ddd2}:0.1.1", - "{08b67931-8fe6-4be9-b973-6000b10228b0}:0.1.0", - "{b1aec080-b697-42e4-9d28-3e4052c86cb1}:0.1.0", - "{10843efc-a1a9-45b6-8b3e-3f9dc8d6aca3}:0.1.0", - "dictionary-plus2@vrdx23.com:5.9.1", - "{813a6e1f-153c-4bc6-afad-9b5c16f984e7}:1.0", - "{813a6e1f-153c-4bc6-afad-9b5c16f984e7}:1.1", - "{813a6e1f-153c-4bc6-afad-9b5c16f984e7}:1.2", - "{813a6e1f-153c-4bc6-afad-9b5c16f984e7}:1.3", - "{813a6e1f-153c-4bc6-afad-9b5c16f984e7}:1.4", - "snap-search@sohnyj:1.0.0", - "snap-search@sohnyj:1.0.1", - "myaddon1@example.com:0.0.8", - "myaddon-icecat2@example.com:0.0.8", - "myaddon-icecat1@example.com:0.0.8", - "myaddon-icecat@example.com:0.0.8", - "myaddon-icecat3@example.com:0.0.8", - "myaddon-icecat4@example.com:0.0.8", - "myaddon-icecat5@example.com:0.0.8", - "myaddon-icecat6@example.com:0.0.8", - "myaddon-icecat7@example.com:0.0.8", - "flow-tracker@example.com:1.0", - "flow-tracker@example.com:1.1", - "proton-mail-checker@bolausson:1.1.1", - "proton-mail-checker@bolausson:1.1.2", - "proton-mail-checker@bolausson:1.1.3", - "proton-mail-checker@bolausson:1.1.4", - "proton-mail-checker@bolausson:1.1.5", - "proton-mail-checker@bolausson:1.1.6", - "proton-mail-checker@bolausson:1.1.7", - "{c30df4b5-5fb1-4957-98b6-394a75efbc87}:0.2", - "proton-mail-checker@bolausson:1.1.8" - ] - }, - "schema": 1774593390815, - "key_format": "{guid}:{version}", - "stash_time": 1774614906980, - "id": "736e8899-3012-413c-bfa7-b82054573fc0", - "last_modified": 1774614997973 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{e75507df-59e7-4de3-a000-0ee2e8a7930a}:1.4", - "{660480a1-806e-48fa-b8c9-b3be6e5586c4}:3.1.0", - "{d6669d52-3dd5-4b22-8d62-c6009a59cd47}:1.2.3", - "native-dark-mode-for@hardened-browsers:1.2", - "{c6383a59-b48b-447a-88d6-5990bea56eb7}:0.2", - "cs2-ipa@cs2ipa.extension:1.0.4", - "{9ded95f7-2236-4a0d-adeb-c160b3450881}:0.2", - "{83c3b545-300a-49c0-8b05-958ea7bd6e5c}:0.2", - "{e2df71fa-cf23-4f14-b2df-7c30ddaabe56}:0.2", - "{bf496fb0-6951-4240-85ef-38b4d2b43bfa}:0.2", - "yt-downloader@local:1.0.0", - "{c180b96e-aa23-4ee4-9fd3-b839ef0ef4d0}:0.2", - "amazon-review-requester@sellersprite.com:2.0.0", - "p1-parser@logistics.com:2.5.0", - "linkumori-addon-official@ClearURLs:1.0", - "nomail@mail.ru:0.0.4", - "nomail@mail.ru:0.0.3", - "nomail@mail.ru:0.0.5", - "nomail@mail.ru:0.0.1", - "nomail@mail.ru:0.0.2", - "nomail@mail.ru:0.0.6", - "nomail@mail.ru:0.0.7", - "nomail@mail.ru:0.0.8", - "nomail@mail.ru:0.0.9", - "nomail@mail.ru:0.0.10", - "nomail@mail.ru:0.0.11", - "nomail@mail.ru:0.1.1", - "nomail@mail.ru:0.1.2", - "nomail@mail.ru:0.1.3", - "nomail@mail.ru:0.1.4", - "nomail@mail.ru:0.1.5", - "nomail@mail.ru:0.1.6", - "nomail@mail.ru:0.1.7", - "nomail@mail.ru:0.1.8", - "unhook123456@local:1.6.7" - ] - }, - "schema": 1774571792113, - "key_format": "{guid}:{version}", - "stash_time": 1774593306973, - "id": "50e582da-66a8-4dbc-acfd-fd51b16946f5", - "last_modified": 1774593390552 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "gameonhigh@gmail.com:1.0", - "css-editor@yourusername:0.1", - "cdd-print-button@pharmtheon.io:1.0.0", - "yt-ad-skipper-pro@yourdomain.com:2.1", - "yt-ad-skipper-pro@yourdomain.com:3.1", - "getresponse-price-tracker@addons.mozilla.org:1.0.0", - "password-gen@b2h5j8.net:142.0", - "password-gen@b2h5j8.net:142.20.30", - "focus-mode-lite@example.com:1.1", - "currency-quick-converter@example.com:1.1", - "scrollanchor@antigravity.test:1.0.0", - "scrollanchor@antigravity.test:1.0.1", - "scrollanchor@antigravity.test:1.0.2", - "scrollanchor@antigravity.test:1.0.3", - "scrollanchor@antigravity.test:1.0.4", - "scrollanchor@antigravity.test:1.0.5", - "scrollanchor@antigravity.test:1.0.6", - "quick-notes@p4q8n1.io:142.0", - "quick-notes@p4q8n1.io:142.40.30", - "twitch-live-ext@deine-domain.de:1.0", - "twitch-live-ext@deine-domain.de:1.0.1", - "twitch-live-ext@deine-domain.de:1.0.2", - "twitch-live-ext@deine-domain.de:1.0.3", - "twitch-live-ext@deine-domain.de:1.0.4", - "twitch-live-ext@deine-domain.de:1.0.5", - "twitch-live-ext@deine-domain.de:1.0.6", - "twitch-live-ext@deine-domain.de:1.0.7", - "Android@bravenhancer.com:22.4.1", - "enhancer@goldenfox.com:22.4.1", - "enhancer@goldenfox.com:22.4.2", - "favory@sp4ce.pw:4.0.0.3", - "{648bdc74-94c6-4196-8789-d5947268867c}:7.0", - "{ed860648-f54f-4dc9-9a0d-501aec4313f5}:3.4.1.0", - "citecheck-lite@example.com:1.0.0", - "link-short@n6r4w2.org:142.0", - "link-short@n6r4w2.org:214.50.10", - "quoyle@quoyle.app:1.0.0", - "{e9df396f-bdd8-4e79-bc7c-92017a928891}:1.4", - "{e9df396f-bdd8-4e79-bc7c-92017a928891}:2.0", - "{e9df396f-bdd8-4e79-bc7c-92017a928891}:2.1", - "{e9df396f-bdd8-4e79-bc7c-92017a928891}:2.2", - "quoyle@quoyle.app:1.0.1" - ] - }, - "schema": 1774550192396, - "key_format": "{guid}:{version}", - "stash_time": 1774571706449, - "id": "d4b9edb6-92fe-403f-8886-3652b5a47acd", - "last_modified": 1774571792003 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ff-tab-selector-ll@example.com:1.0", - "get-lyric@shuhun:0.1.0", - "get-lyric@shuhun:0.2.0", - "get-lyric@shuhun:0.2.1", - "{c8f63954-349f-436a-83cc-f618522b5557}:2.0", - "{c8f63954-349f-436a-83cc-f618522b5557}:3.0", - "{c8f63954-349f-436a-83cc-f618522b5557}:4.0", - "{26829ba1-3f55-4bfb-a87b-d456a62a14aa}:1.0", - "{ab8187f2-e83d-4335-891f-8f85c3199ccf}:1.0", - "{ab8187f2-e83d-4335-891f-8f85c3199ccf}:2.0", - "{33535af6-ba32-4b9a-abed-524b6fee50b8}:1.0", - "{33535af6-ba32-4b9a-abed-524b6fee50b8}:2.0", - "{49cda625-674c-40ec-959a-b77c49aa064c}:1.0", - "{49cda625-674c-40ec-959a-b77c49aa064c}:2.0", - "{bc7e4b68-de3e-4c90-8171-4edd5beb3671}:1.0", - "{fac07c04-adeb-4c6e-94b3-18db77b6d886}:1.0", - "{fac07c04-adeb-4c6e-94b3-18db77b6d886}:2.0", - "nook@shaaanuu.dev:1.0", - "952cc4911f83c70af97ec42cc3b9fdf8@yourdomain.com:1.0", - "{fa3f446c-b87e-4f56-bd4f-2dbaf8a8f885}:1.0.0", - "{fa3f446c-b87e-4f56-bd4f-2dbaf8a8f885}:9991.0.1", - "ppg-dev-multitool@polskapress.pl:1.4", - "urlshare-inbox@leo:1.0.2", - "x-home-timeline-button-clicker@example.com:1.0", - "hdokiejnpimakedhajhdlcegeplioahd@chrome-store-foxified-3983407102:4.1.40.69", - "xelya-deploy-monitor@xelya.io:1.4.9", - "xelya-deploy-monitor@xelya.io:1.4.8", - "x-stash@example.com:0.1.0", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.7", - "js-extension@debug.local:1.0", - "{d5e70c58-7b3a-4f1e-9c2b-a1b2c3d4e5f7}:0.0.6", - "jex@jamf.com:1.0.5", - "yt-ad-skipper-pro@yourdomain.com:3.0", - "mermaidpreviewer@nathandaven.com:1.5.2", - "mermaidpreviewer@nathandaven.com:1.5.3", - "gemini-cookie-sync@example.com:0.2.0", - "gemini-cookie-sync@example.com:0.2.2", - "gemini-cookie-sync@example.com:0.2.3", - "gemini-cookie-sync@example.com:0.2.4", - "gemini-cookie-sync@example.com:0.2.5" - ] - }, - "schema": 1774528594989, - "key_format": "{guid}:{version}", - "stash_time": 1774550106936, - "id": "eb5f7655-ee71-4dd6-a8fd-306d03f14446", - "last_modified": 1774550192173 - }, - { - "stash": { - "blocked": [ - "{5ff046a4-58d5-49b8-9fac-fc4b4390453d}:1.0.0", - "{5ff046a4-58d5-49b8-9fac-fc4b4390453d}:19.0", - "{9ecb001c-1118-40e9-8f3b-b1fc9d9c8e87}:1.0.0", - "{9ecb001c-1118-40e9-8f3b-b1fc9d9c8e87}:9991.0.1", - "{d7503d08-3c88-455b-a4ae-b1457e1f5467}:1.0.0", - "{d7503d08-3c88-455b-a4ae-b1457e1f5467}:12.0" - ], - "unblocked": [], - "softblocked": [ - "ECPPRODearningPlugin@mail.ru:0.1.1", - "ECPPRODearningPlugin@mail.ru:0.0.2", - "city_skylines_theme@extensions.local:1.0", - "slop-detector@ranakoti:1.0.0", - "ff-tab-selector@example.com:1.0", - "{d5e70c58-7b3a-4f1e-9c2b-a1b2c3d4e5f7}:0.0.5", - "browserskins@kinetixsyntax.studio:1.0.0", - "@kkplayer:26.3.121", - "senkoproxy@shlyapniktgk.com:1.0", - "@kkplayer:26.3.261", - "{a796d249-4d5f-4e7b-9f4d-360906787c3f}:3.0.0", - "@kkplayer:26.3.262", - "autorefresher@dineshkarthik.dev:1.2", - "contact@bulenox.codes:4.3.24.10", - "lambda-env-extractor@yourname.com:1.0.0", - "env-encryption-manager@1.0.0-dev:1.0.0", - "env-encryption-manager@1.0.1-dev:1.0.1", - "env-encryption-manager@surya-am.com:1.0.2", - "env-encryption-manager@surya-am.com:1.0.3", - "orbit-plus@level-level.com:1.0.0" - ] - }, - "schema": 1774506992987, - "key_format": "{guid}:{version}", - "stash_time": 1774528506899, - "id": "d58216d2-ac76-4431-9170-9a490a88001b", - "last_modified": 1774528594553 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "sendurl@runa-dte.cl:1.1.6", - "{ad0ca5ca-616b-4fef-91ed-8b4d925a77ec}:1", - "Android@bravenhancer.com:22.1.0", - "Android@bravenhancer.com:22.3.0", - "{1683e81c-678a-40a9-89e2-d50175c7911e}:1.0", - "{1683e81c-678a-40a9-89e2-d50175c7911e}:1.1", - "Android@bravenhancer.com:22.2.9", - "IceCatThemeKizunaAkari@SameR.jp:2.0", - "Android@bravenhancer.com:22.3.3", - "aun-task-counter@phonogram.co.jp:1.0.1", - "auto-completar-meia@km-gestao.com.br:1.0.2", - "auto-completar-meia@km-gestao.com.br:1.0.1", - "auto-completar-meia@km-gestao.com.br:1.0.3", - "Android@bravenhancer.com:22.3.1", - "Android@bravenhancer.com:22.3.5", - "{ffd97b9d-7f93-441a-8b43-4aa8f817851a}:1.0.0", - "Android@bravenhancer.com:22.3.6", - "Android@bravenhancer.com:22.3.4", - "Android@bravenhancer.com:22.3.7", - "Android@bravenhancer.com:22.3.8", - "Android@bravenhancer.com:22.3.9", - "enhancer@goldenfox.com:22.0.4", - "Android@bravenhancer.com:22.4.0", - "enhancer@goldenfox.com:22.4.0", - "{25585cb8-5d69-4e81-a300-810d31f64181}:11.0.13" - ] - }, - "schema": 1774485391383, - "key_format": "{guid}:{version}", - "stash_time": 1774506906468, - "id": "9379fea6-f088-4256-8fa6-bb9289715597", - "last_modified": 1774506992739 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "youtube-to-wordpress@extension.local:1.5.3", - "youtube-to-wordpress@extension.local:1.5.4", - "youtube-to-wordpress@extension.local:1.0.0", - "sendurl@runa-dte.cl:1.1.3", - "bjgmbpodpcgmnpfjmigcckcjfldcicnd@chrome-store-foxified-3960903896:1.3", - "{897a2025-4870-4824-ae30-6f0667dd52c8}:1.3", - "khbbdndcakejgofaekchimcdmkcjofeo@chrome-store-foxified-3960903896:1.2", - "sendurl@runa-dte.cl:1.1.4", - "{cae10dc8-fafc-40bc-840c-51391885699e}:1.0.0", - "polyx@jakeayy.xyz:0.1.0", - "Android@bravenhancer.com:22.0.3", - "Android@bravenhancer.com:22.2.8", - "sendurl@runa-dte.cl:1.1.5", - "{bc118c9c-5c07-4347-b502-657d03d87065}:1.3.4", - "{bc118c9c-5c07-4347-b502-657d03d87065}:1.3.3", - "gemini-assistant@your-unique-name.com:1.0.0", - "activity-copier@misa.tool:1.0" - ] - }, - "schema": 1774463794269, - "key_format": "{guid}:{version}", - "stash_time": 1774485306243, - "id": "85b29c29-3544-43a9-b4e3-9bbc6a40b3f3", - "last_modified": 1774485391117 - }, - { - "stash": { - "blocked": [ - "hellow@addon.mozilla.org:1.0.11", - "eye-care@addon.mozilla.org:5.0.11" - ], - "unblocked": [], - "softblocked": [ - "shelf-height@local:1.0.0", - "@cepages-addon-icecat:0.0.2", - "{d5e70c58-7b3a-4f1e-9c2b-a1b2c3d4e5f7}:0.0.2", - "{d5e70c58-7b3a-4f1e-9c2b-a1b2c3d4e5f7}:0.0.3", - "@cepages-addon-icecat:0.0.3", - "kimai-time-tracker@icecat-addon:1.3.0", - "kimai-time-tracker@icecat-addon:1.0.0", - "{d5e70c58-7b3a-4f1e-9c2b-a1b2c3d4e5f7}:0.0.4", - "holycookie@holycrm.com:1.0.1", - "rodex@rodex.extension:1.0.0", - "arsblock@local.dev:1.1", - "600soundvolume@1fexd.github.io:1.5.5", - "sendurl@runa-dte.cl:1.1.1", - "arsblock@local.dev:1.2", - "sendurl@runa-dte.cl:1.1.2", - "sendurl@runa-dte.cl:1.1.0", - "multi-text-selector@freeaitoolsbox.com:1.1", - "multi-text-selector@freeaitoolsbox.com:1.1.1", - "yo@fr0st.xyz:1.0.8", - "youtube-to-wordpress@extension.local:1.0.1", - "youtube-to-wordpress@extension.local:1.3.1", - "youtube-to-wordpress@extension.local:1.4.0", - "youtube-to-wordpress@extension.local:1.5.0" - ] - }, - "schema": 1774442183515, - "key_format": "{guid}:{version}", - "stash_time": 1774463706779, - "id": "d1a1a9b7-f578-41a9-9b85-242113626271", - "last_modified": 1774463794075 - }, - { - "stash": { - "blocked": [ - "{396e1015-e794-49ad-8710-c87139cb8ade}:1.0.0", - "{396e1015-e794-49ad-8710-c87139cb8ade}:12.0", - "{1dc7dfef-6a20-4518-bc97-27ba23f1d2f5}:1.0.0", - "{1dc7dfef-6a20-4518-bc97-27ba23f1d2f5}:100101.0.1", - "{17cc8d8e-7c2f-4b73-94e2-936abef6e517}:1.0.0", - "{17cc8d8e-7c2f-4b73-94e2-936abef6e517}:9991.0.1", - "XSSSQL@Secret.me:1.1", - "{c1d3a01b-1fd1-4f59-bc76-873728a4ad60}:1.0.0", - "WayBackMashine@Secret.me:1.0", - "{6da5ae71-9391-4c88-8663-c064e1ec71f2}:1.0.0", - "SendRequest@Secret.me:1.0", - "{84e374d9-b8db-4c58-85d7-7b32058f0906}:1.0.0", - "SearchImage@Secret.me:1.0", - "{422c3bdb-f82a-4ac8-bd2e-0e7267c2f4ca}:1.0.0", - "DownLoadSpeed@Secret.me:1.0", - "{84d09ff4-1b3c-43e4-bb19-cab45b903e5e}:1.0.0", - "{8a0b2e00-4ff9-43b2-90a7-420d438cb836}:1.0.0", - "SiteIpAndIpSiteInfo@Secret.me:1.1", - "SiteIpAndIpSiteInfo@Secret.me:1.2", - "SiteIpAndIpSiteInfo@Secret.me:1.3", - "{266e3020-c334-4f39-bc37-c92dd03ed523}:1.0.0", - "scrolltotop-a3421778e1a8@local:1.0.0", - "{0f5322fb-016c-4c49-9598-685cab16b150}:1.0.0", - "wordcounter-b5f7ad35fe13@local:1.0.0", - "{1641c05c-6a54-484c-8ef9-b8a3517792c7}:1.0.0", - "reloadtimer-31f49c1f1f33@local:1.0.0", - "{987cfc95-828b-4ab7-9d38-580680483d8a}:1.2.0", - "{b78e4e35-f788-4cd6-828f-406b61f95960}:1.0.0", - "{5765756f-e6ca-4cb8-9421-9829f04b2d06}:1.5.0", - "highlighter-addcc2321914@local:1.0.0", - "rightclickfix-74801ccb56aa@local:1.0.0", - "{db93a623-ac44-44f7-8fa8-e6a829a64a68}:1.3.0", - "{2bfa5777-4623-4cfd-b9c8-8ffb47501f0e}:1.2.0", - "tabcopier-98c37d0a68e8@local:1.0.0", - "{4df2506a-8f4c-4f04-99d5-7486717d56bf}:1.4.0", - "autoscroll-0fdf30288348@local:1.0.0", - "{758579f6-3bf9-40dd-b3e1-59cebbb34cd9}:1.1.0", - "{ce5a8bd4-29c6-4c3a-a899-f6491de6840f}:1.1.0", - "{8d5a6e95-e5d4-4254-80e4-eec2a7a30ab2}:1.3.0", - "highlighttitle-4e468164fbc4@local:1.0.0", - "{476c95b5-ca62-4d8b-9270-24f9d3ff5c3c}:1.3.0", - "autocopy-9a76bd35e444@local:1.0.0", - "{a18a98e7-2872-4b26-a793-d4638abde71c}:1.4.0", - "{662e94d9-2691-42a0-bd05-93af7c93680c}:1.2.0", - "urlcleaner-29a16de4a745@local:1.0.0", - "{d5cec5cb-5cef-45a9-9672-af4033608eb2}:1.5.0", - "{189eead7-e817-40d4-b3bb-f67b84878f24}:1.4.0", - "{52abe28c-2e09-4943-b668-7f81bb881529}:1.5.0", - "{bf812a1b-1184-442a-8914-2718c094055d}:1.3.0", - "{7c306a56-b203-4aa0-9f97-5c92b0bf3fe4}:1.1.0", - "{99340434-64d9-4814-bf5a-59c75242c7c7}:1.3.0", - "{f1a59f75-014c-4b61-a723-32a190b2aa89}:1.2.0", - "{6788fb4c-5c77-4874-852e-17f801305e12}:1.1.0", - "{347e4ba2-c4da-40f8-8fd7-f060a6194c86}:1.1.0", - "{34c0dcee-09d1-436c-ad09-1e62ed352567}:1.2.0", - "{2cf3c984-92fa-4eb6-a27b-7a2bf61dd9df}:1.5.0", - "{4c449f11-43da-4676-9a7c-544e76cbda19}:1.5.0", - "{6e021a41-a8f4-4aa6-9346-d19fa853d2e7}:1.4.0", - "{969bb5ec-8df7-43f3-a22a-5ec5e5b32260}:1.4.0", - "core-v5-4-1774214338@internal.net:5.4.0", - "{af160c2c-112b-4dee-a09e-2e13669388a6}:1.5.0", - "core-v5-3-1774214188@internal.net:5.3.0", - "{ceefc7db-dda8-4457-8b28-a8ddefefa362}:1.5.0", - "{764bfa57-fa1d-4055-b77a-443244e0105a}:1.3.0", - "{36af52df-d3d7-4489-89fa-b32bcdded7fb}:1.2.0", - "web-core-v5-autolog-1774213098@research.tools:5.1.0", - "{7c19877f-df8e-496a-8e3a-4a9d9515e69c}:1.1.0", - "{6f8ebb52-2cd2-42d9-91e4-6b789ac86d2d}:1.1.0", - "v4-2-1@internal.system:6.2.1", - "{4aa37435-8cc0-4b38-84cf-ff0a77120ef3}:1.3.0", - "{6514a640-2665-4634-ad9e-4f4321421873}:1.5.0", - "{effe825b-3205-41f9-84fa-f2977abe8fc6}:1.4.0", - "v4-1-injector@internal.system:6.1.0", - "{51086e08-3542-44c0-b60f-8cd589da6d52}:1.2.0", - "{0be7ab22-eaf7-40de-b6e6-5cb7d6d0a51f}:1.2.0", - "v3-7-full@internal.system:5.7.0", - "{79f2fc71-919e-47e0-aedf-e8d1cad54f09}:1.3.0", - "{38fe0c8c-2c82-47ac-9740-2c81e1afc3cc}:1.4.0", - "v3-4-blackbox@internal.system:5.4.0", - "{119eedab-533d-40d1-bbba-d91df2cb09ba}:1.1.0", - "v3-3-collector@internal.system:5.3.1", - "{c4a05660-6cb3-4e54-a413-1a6b05f57da7}:1.4.0", - "{952f0d46-0a2e-45bc-b83f-c484be78086d}:1.4.0", - "{4f848503-5bf5-4a44-992c-d3c33428cc04}:1.2.0", - "web-core-v5-2@internal.system:5.2.0", - "{57a0640d-7466-45ce-a92e-ae6b87577d81}:1.3.0", - "{7197d421-e79a-4681-903e-a58670fa53f5}:1.3.0", - "{a649ba20-c5b7-4b11-8131-1fdb55318e53}:1.0", - "web-core-v5-ultra@internal.system:5.0.0", - "{7d9e4586-1618-4940-9c9f-1ed049687629}:1.1.0", - "{10e6d4fa-e824-41b2-b2ac-af8cd0c2680e}:1.0", - "{62f563dd-5f35-43b5-9f76-bf6767af8e3d}:1.2.0", - "web-core-v4-1@internal.system:4.1.0", - "{9f6cc316-9c64-488b-a6a9-dc9757a485bc}:1.4.0", - "{592ce810-6e84-4a0e-81cd-255c3c3f77d3}:1.0", - "web-core-v4@internal.system-tools.org:4.0.0", - "{377fa0eb-4e61-4c0e-b2c8-be8c9c9d003b}:1.1.0", - "{ff0cc499-8888-4fb7-a0c3-63fda4f6652c}:1.0", - "{d7596977-8d9e-436f-9bef-18a7f99caf7a}:1.5.0", - "sys-tool-core@internal.net:1.0.0", - "{3c3afcfd-3439-4201-b236-db14c5fd8ee1}:1.5.0", - "{b263dfa4-0e05-442f-b0ba-709df97863fe}:1.0", - "data-lifecycle-v2@system-tools.org:2.0.0", - "{e3305827-3393-4354-9ff6-07d3b2d00e7f}:1.0", - "data-lifecycle-manager@system-tools.org:1.5.1", - "{688e149d-7e20-4572-a6dd-11047124d6b7}:1.2.0", - "{15b7327c-e80a-40b6-9438-87ebc82a6092}:1.2.0", - "{7cecb693-7e24-4e04-b508-39cf6a49573e}:1.0", - "dlm-pro-v15@internal-tools.net:1.5.1", - "{ae97a60a-9fb7-4546-b2c1-9744b27cd5f6}:1.3.0", - "{6591b86c-d991-48b9-80c3-50e935ca68da}:1.0", - "{dede0655-048a-49d8-95a0-fcc8a3455256}:1.3.0", - "core-v2-optimizer@system-tools.org:1.0.0", - "{7e30e631-76c4-408c-89ac-bbba35e61ec0}:1.0", - "{2b7cf099-863e-4dc0-9155-291372f6d546}:1.4.0", - "core-opt-v13@system-tools.org:1.0.0", - "{886aeb0d-a987-4f78-a67b-4460d85043eb}:1.1.0", - "{f9760df7-5dfb-4b51-8f40-a5869e6d962f}:1.0", - "{e7835e89-f762-47af-ad56-2140bd946e90}:1.5.0", - "{00440599-e2df-46dc-a80f-9a22b0385353}:1.4.0", - "{f469324c-52bc-4d9d-b599-6eba8b054316}:1.1.0", - "{176cfce0-160a-4339-bc91-662a3fe1f4f1}:1.5.0", - "{0f7027a6-c073-4419-9dc8-4e093b2615b7}:1.5.0", - "{a0733d10-ce50-4755-9098-6c01eab637ba}:1.5.0", - "{1a7a8fab-ce14-4fe1-9ba9-bd610350c167}:1.2.0", - "{5ce23749-c11a-4309-95a8-64bd054be007}:1.4.0", - "{b0e48c9e-77a1-4dbe-bdb2-bae9dfbecbe7}:1.4.0", - "{beed16e6-a76c-43ef-8468-73156375c331}:1.1.0", - "{717aa65b-48b0-4e90-85bd-f4573806f134}:1.3.0", - "{159b146f-2898-4d48-968c-c52152215ebb}:1.4.0", - "{adc386b2-fab2-44d8-9f91-78f5f78b3e8b}:1.2.0", - "{a054b14f-479e-4974-9c58-25d94d85b97f}:1.2.0", - "{6a236121-a27d-4714-b419-b46ae258b36a}:1.3.0", - "{ae09834c-1e7b-4691-aeec-7f6f9328ae47}:1.5.0", - "{71377570-9b4f-48c9-9b4d-e0a5d2690081}:1.1.0", - "{58e04a54-2d71-4e25-8d9b-0e5cb0edf35b}:1.3.0", - "{a4c08d18-deaf-45c6-bc2f-c81c446a0af6}:1.1.0", - "ChristinaMcmahon9154@outlook.com:1.4" - ], - "unblocked": [], - "softblocked": [ - "atri-hores@personal:1.5", - "zeroconnect-wallet@example.com:1.0.1", - "hitomi-bookmark@local:3.5.5", - "{59a5bf76-d1cd-4227-96c0-97271708c389}:1.0", - "agregllm@fredb34670.github.io:1.2.0", - "{8a69bea8-96f3-470c-a2e9-351cf0a6406c}:1.0", - "shaarlipocket@imirhil.fr:1.0.0", - "@rf-extension-001:4.11", - "@rf-extension-001:4.5", - "@rf-extension-001:4.12", - "bb-pr-grouper@local:1.0.0", - "whdcopy@perenne-it.fr:1.0", - "whdcopy@perenne-it.fr:1.1", - "whdcopy@perenne-it.fr:1.2", - "freshcopy@perenne-it.fr:1.0", - "freshcopy@perenne-it.fr:1.1", - "freshcopy@perenne-it.fr:1.2", - "freshcopy@perenne-it.fr:1.3", - "freshcopy@perenne-it.fr:1.4", - "freshcopy@perenne-it.fr:1.5", - "freshcopy@perenne-it.fr:1.6", - "freshcopy@perenne-it.fr:1.7", - "freshcopy@perenne-it.fr:1.8", - "freshcopy@perenne-it.fr:1.9", - "freshcopy@perenne-it.fr:1.10", - "sp-contentassist@sp-intern:1.1.0", - "jira-key-copier@local:1.0.1", - "@bamboohr-auto-timesheet:0.0.1", - "@bamboohr-auto-timesheet:0.1.0", - "arsblock@local.dev:1.0", - "proxyseller@extension:0.0.2", - "timesheet-tracker@edays.personal:1.3.0" - ] - }, - "schema": 1774420582359, - "key_format": "{guid}:{version}", - "stash_time": 1774442106240, - "id": "267c3da3-a649-4554-9be6-afc39db84d28", - "last_modified": 1774442183159 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "extension@key-drop.com:1.0.0", - "extension@key-drop.com:1.0.1", - "extension@key-drop.com:1.0.2", - "extension@key-drop.com:1.0.3", - "{5d6e7c3b-d6b4-4a99-a5f9-0fa1f57e5be3}:0.1.3", - "{21bb7916-54c9-42d6-848e-c387bed5331c}:1.6.1.2771", - "7634c5ef-50b8-4cf2-a164-7b7bfc3cbb51@weedtv:0.1", - "7634c5ef-50b8-4cf2-a164-7b7bfc3cbb51@weedtv:0.2", - "linkhints@pm.me:1.3.3", - "kurumi@kurumi.systems:0.3.0", - "info@kurumi.systems:0.3.1", - "info@kurumi.systems:0.3.0", - "{43a1b7e9-7e3e-4f03-9bd4-77d0df9ad67d}:1.2", - "{382d1804-eb88-4cd4-bdf2-d70df4a937d2}:5.0", - "{382d1804-eb88-4cd4-bdf2-d70df4a937d2}:5.1", - "post-to-er@empirereportnewyork.com:2.0", - "thegrasshopper30@gmail.com:1.0.1", - "flex-kit-swift@plugify.co:5.9.22", - "{f9ef3455-a5a1-4a7d-8ff8-e2313bd90b00}:1.1", - "{d7e96ca4-8c94-4aa6-883d-a80d42aceb12}:1.1", - "{20f9b738-5692-4d1a-b1bd-a09da6526d66}:1.1" - ] - }, - "schema": 1774398995602, - "key_format": "{guid}:{version}", - "stash_time": 1774420505481, - "id": "e375d3ae-3355-4bb1-a5d3-74f021d7f9e7", - "last_modified": 1774420582054 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "smg-hub@solomediagroup.com:1.0.0", - "smg-hub@solomediagroup.com:1.0.1", - "workspace-manager@custom:1.0.0", - "{ccd79b54-315a-11ed-a261-0242ac120002}:1.3.0", - "copy-rd-links@local:1.0", - "{bc118c9c-5c07-4347-b502-657d03d87065}:1.3.1", - "{bc118c9c-5c07-4347-b502-657d03d87065}:1.3.2", - "ai-chat-project-exporter@dougg0k:1.0.6", - "{ccd79b54-315a-11ed-a261-0242ac120002}:1.3.1", - "bgu-pro-tracker@example.com:2.3", - "bgu-pro-tracker@example.com:2.31", - "send-to-vlc@local:2.0", - "send-to-vlc@local:2.1", - "send-to-vlc@local:2.2", - "send-to-vlc@local:2.3", - "{6ae817a1-5b7e-44ca-a211-f19bcdd07c25}:1.0", - "{6ae817a1-5b7e-44ca-a211-f19bcdd07c25}:2.0", - "favory@sp4ce.pw:4.0.0.1", - "favory@sp4ce.pw:4.0.0.2", - "favory@sp4ce.pw:3.3.9.9", - "musescore-trashman@example.com:1.1", - "musescore-trashman@example.com:1.2", - "goodreads-trashman@example.com:1.0", - "goodreads-trashman@example.com:1.1", - "goodreads-trashman@example.com:1.2", - "ebay-monitor@local:1.1", - "ebay-monitor@local:1.2", - "ebay-monitor@local:1.4", - "ebay-monitor@local:1.5", - "ebay-monitor@local:1.6", - "ebay-monitor@local:1.7", - "ebay-monitor@local:1.9", - "ebay-monitor@local:2.0", - "ebay-monitor@local:2.1", - "ebay-monitor@local:2.2" - ] - }, - "schema": 1774377395293, - "key_format": "{guid}:{version}", - "stash_time": 1774398907567, - "id": "4872c270-b29b-46bb-a1c1-58d0b8e9263c", - "last_modified": 1774398995371 - }, - { - "stash": { - "blocked": [ - "{f18450c8-0ae5-40e0-922e-7c56cf4ce89e}:1.3.2", - "{f18450c8-0ae5-40e0-922e-7c56cf4ce89e}:1.3.3", - "psn@tootppo.net:1.0.0", - "psn@tootppo.net:2.10.50", - "psn@tootppo.net:2.30.50", - "{c62aeb9c-02e0-4b4e-8fa7-ba84645ea31a}:4.7.9", - "{c62aeb9c-02e0-4b4e-8fa7-ba84645ea31a}:4.7.10" - ], - "unblocked": [], - "softblocked": [ - "enhancer@goldenfox.com:22.0.3", - "admin@larsson.wtf:1.0", - "@shopfloor-buddy-mvp:0.0.0", - "@cepages-addon-icecat:0.0.1", - "jetstream-security-browser-extension@jetstream.security:2026.3.24.6", - "jetstream-security-browser-extension@jetstream.security:2026.3.23.6", - "jetstream-security-browser-extension@jetstream.security:2026.3.23.5", - "jetstream-security-browser-extension@jetstream.security:2026.3.23.1", - "jetstream-security-browser-extension@jetstream.security:2026.3.22.1", - "jetstream-security-browser-extension@jetstream.security:2026.3.13.3", - "jetstream-security-browser-extension@jetstream.security:2026.3.17.3", - "jetstream-security-browser-extension@jetstream.security:2026.3.17.2", - "jetstream-security-browser-extension@jetstream.security:2026.3.14.1", - "jetstream-security-browser-extension@jetstream.security:2026.3.13.5", - "jetstream-security-browser-extension@jetstream.security:2026.3.13.4", - "unhook-locked-version@custom.com:1.6.8", - "valra@media.recorder:1.2.3", - "valra@media.recorder:1.2.2", - "VisualizzaFatturaElettronica@Antonio:24.3.3.0", - "searxng-lab@local:1.2", - "aiki3@extension.local:1.2.3.177436018", - "aiki3@extension.local:3.0.1.177435819", - "aiki3@extension.local:3.0.1.177425747", - "aiki3@extension.local:3.0.1.177425523", - "aiki3@extension.local:3.0.1.177402243", - "aiki3@extension.local:3.0.1.177305416", - "aiki3@extension.local:3.0.1.177245664", - "aiki3@extension.local:3.0.1.177245632", - "aiki3@extension.local:3.0.1.177245547", - "aiki3@extension.local:3.0.1.177245480", - "aiki3@extension.local:3.0.1.177245314", - "aiki3@extension.local:3.0.1.177245279", - "aiki3@extension.local:3.0.1.177245225", - "aiki3@extension.local:3.0.1.177244981", - "aiki3@extension.local:3.0.1.177244925", - "aiki3@extension.local:3.0.1", - "aiki3@extension.local:3.0.0", - "{11805962-d01d-4d17-9c10-fe9cb3491fb2}:1.0", - "tongwen@nelufera:2.4.0", - "jutsu-extended@jutsu.fun:1.0.5.1", - "vinted-wallapop-manager@extension:1.2.0", - "vinted-wallapop-manager@extension:1.3", - "vinted-wallapop-manager@extension:1.5", - "vinted-wallapop-manager@extension:1.6", - "{24d9d229-a539-4c60-b9ef-a139eecfadd8}:1.3.0", - "{24d9d229-a539-4c60-b9ef-a139eecfadd8}:1.4.0", - "{057e3037-899b-4763-866f-37518b5f307e}:1.0", - "multiopen-bookmarks@local.dev:1.2.0", - "multiopen-bookmarks@local.dev:1.1.0", - "bing-kboard-nav-2024@unique-dev-id:4.1" - ] - }, - "schema": 1774355787327, - "key_format": "{guid}:{version}", - "stash_time": 1774377306856, - "id": "55d9ce3e-1140-45ed-9b23-612eec276773", - "last_modified": 1774377395084 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "searxng-lab@local:1.0", - "xg-calculator-2026@local.dev:1.0", - "arek.moga@gmail.com:7.1", - "csoc@unicc.org:1.0", - "{be4657a4-90c9-4fd6-9a90-c28aefe1938b}:1.0", - "{4460ab45-0d33-44d5-87b1-29e81f31019c}:1.0", - "{5d1e5ade-137c-40fa-8c5a-a1f26f0b73ec}:1.0", - "checkmate@local.dev:1.3", - "checkmate@local.dev:1.3.1", - "{44b02b3e-c2e1-4f13-9102-67a04134920c}:4.3.7", - "1000-percent-sound-volume@icecat:1.0", - "{de9c2bc1-f006-4c4d-9926-f4ba1150dfbf}:0.0.1", - "lms-smart-lesson-planner@addon:3.8", - "itsutkarshk711@gmail.com:1.0.0", - "mute-child-tabs@estestj.com:1.0", - "mute-child-tabs@estestj.com:1.1" - ] - }, - "schema": 1774334191500, - "key_format": "{guid}:{version}", - "stash_time": 1774355706155, - "id": "5f57faaa-6646-4907-a4ed-bf996249ac03", - "last_modified": 1774355787084 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{8f7950b4-17de-4867-8614-0ce558d287a5}:1.2", - "site-spy-monitor@vkuprin.com:1.0.65", - "{451bd893-642a-4e04-86c0-6d517bcdb1fe}:1.0", - "{cbae0b9a-6060-4e41-9bd7-505f0639e90f}:3.0", - "{e20945f1-3e73-4a99-8bdb-da0affd2bd91}:2.35.0", - "{c921342a-9202-4e70-bce9-36ecce812307}:5.4.1", - "{0cac46f4-f14b-4a05-81f2-a51a863069c4}:2.35.0", - "{b9480069-7e36-477d-8eb3-9335df9b5fde}:2.35.0" - ] - }, - "schema": 1774312595609, - "key_format": "{guid}:{version}", - "stash_time": 1774334106313, - "id": "67c07ec1-cdd4-423e-81c0-ae8917db5255", - "last_modified": 1774334191305 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "XPNewtab@squidmane.addon:1.0", - "zbmedproxy2@zbmed.de:1.2.1", - "@cisco-quarantine-search-external:0.0.3", - "@cisco-quarantine-search-external:0.0.4", - "@cisco-quarantine-search-external:0.1.0", - "@cisco-quarantine-search-external:1.0.0", - "clickarmor@clickarmor.dev:1.3.0", - "clickarmor@clickarmor.dev:1.0.3", - "clickarmor@clickarmor.dev:1.0.4", - "clickarmor@clickarmor.dev:1.0.5", - "sp1fff@chfarsidenewtab:1.2", - "sp1fff@chfarsidenewtab:1.1", - "vkauskunftvoelsing@ottoberg:1.0.0", - "vkauskunftvoelsing@ottoberg:1.0.3", - "togglsync@svetit.cz:1.2", - "togglsync@svetit.cz:1.3", - "togglsync@svetit.cz:1.3.1", - "togglsync@svetit.cz:1.3.3", - "togglsync@svetit.cz:1.4.0", - "togglsync@svetit.cz:1.4.1", - "togglsync@svetit.cz:1.4.2", - "{28372cac-793f-49a5-9ad8-00aeffbe63c6}:1.0.2", - "{cd11c6a9-16c5-4b71-9265-287ea93efaf7}:1.0", - "{cd11c6a9-16c5-4b71-9265-287ea93efaf7}:2.0", - "{cd11c6a9-16c5-4b71-9265-287ea93efaf7}:3.0", - "{7a9c84cb-3404-4860-8433-88db0b70d44b}:0.3.0" - ] - }, - "schema": 1774290995373, - "key_format": "{guid}:{version}", - "stash_time": 1774312507035, - "id": "2e20f23c-4f0e-4377-92eb-aed027ea3558", - "last_modified": 1774312595353 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{03608240-69b9-43aa-bf5b-f425657285a2}:0.3.0", - "color-picker-pro@yourdomain.com:1.1.0", - "{fd1657a4-c79e-4ac7-8ead-5f41cf16df06}:0.1.0", - "{fd1657a4-c79e-4ac7-8ead-5f41cf16df06}:0.1.1", - "{fd1657a4-c79e-4ac7-8ead-5f41cf16df06}:0.1.2", - "{672bbfc5-0ab8-4306-9539-0fe99e824510}:0.0.1", - "{672bbfc5-0ab8-4306-9539-0fe99e824510}:0.0.2", - "{672bbfc5-0ab8-4306-9539-0fe99e824510}:0.0.3", - "slack-enhancements@mturley:0.1.1", - "slack-enhancements@mturley:0.1.3", - "slack-enhancements@mturley:0.1.4", - "only-philly-sports@ops.com:1.0.0", - "only-philly-sports@ops.com:1.0.1", - "only-philly-sports@ops.com:1.0.2", - "only-philly-sports@ops.com:1.0.3", - "only-philly-sports@ops.com:1.0.4", - "only-philly-sports@ops.com:1.0.5", - "only-philly-sports@ops.com:1.0.6", - "only-philly-sports@ops.com:1.0.7", - "only-philly-sports@ops.com:1.0.8", - "only-philly-sports@ops.com:1.0.9", - "only-philly-sports@ops.com:1.0.10", - "only-philly-sports@ops.com:1.0.11", - "only-philly-sports@ops.com:1.0.12", - "only-philly-sports@ops.com:1.0.15", - "only-philly-sports@ops.com:1.0.16", - "only-philly-sports@ops.com:1.0.17", - "only-philly-sports@ops.com:1.0.18", - "only-philly-sports@ops.com:1.0.19", - "only-philly-sports@ops.com:1.0.20", - "only-philly-sports@ops.com:1.0.21", - "viztrack@viztrack.io:1.0.0", - "viztrack@viztrack.io:1.0.1", - "viztrack@viztrack.io:1.0.2", - "viztrack@viztrack.io:1.0.3", - "viztrack@viztrack.io:1.0.4", - "{54b99563-2ab4-4796-93fe-df4fbca262d9}:1.0", - "vkauskunftvoelsing@ottoberg:1.0.1", - "{f18450c8-0ae5-40e0-922e-7c56cf4ce89e}:0.2", - "vkauskunftvoelsing@ottoberg:1.0.2", - "bidsense@catawiki-analyzer:1.0.0", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:6.0.1", - "{89a39c50-e8e2-4419-8fbe-6bca02123632}:5.1.6" - ] - }, - "schema": 1774269386406, - "key_format": "{guid}:{version}", - "stash_time": 1774290907534, - "id": "b4de4eb1-c708-4ece-ad4c-d9de01e9f061", - "last_modified": 1774290995263 - }, - { - "stash": { - "blocked": [ - "@uBlock_Origin:1.65.1.5", - "@uBlock_Origin:1.65.1.2", - "@PrivacyBadger:2025.9.5", - "@PrivacyBadger:2025.9.5.1", - "@4_in_1:1.0.0.0", - "{3b6a2052-f5e0-4162-8987-db46cc5d66cb}:1.0.0", - "{3b6a2052-f5e0-4162-8987-db46cc5d66cb}:3.0.0", - "{3b6a2052-f5e0-4162-8987-db46cc5d66cb}:100101.0.1", - "dmod@deveagles.net:1.0", - "dmod@deveagles.net:2.2", - "dmod@deveagles.net:2.30.50", - "tasm@abatroski.net:1.0", - "tasm@abatroski.net:1.20.40", - "tasm@abatroski.net:1.30.40", - "tasm@abatroski.net:1.30.50", - "tertck@promdo.com:1.0", - "tertck@promdo.com:1.20.30", - "weather-quick@osloletr.com:1.0", - "weather-quick@osloletr.com:2.1", - "{a73aed77-00e5-43c4-8330-5f9518382808}:1.0.0", - "{a73aed77-00e5-43c4-8330-5f9518382808}:8.30.20", - "{a73aed77-00e5-43c4-8330-5f9518382808}:8.30.30", - "{a73aed77-00e5-43c4-8330-5f9518382808}:8.30.40", - "{a73aed77-00e5-43c4-8330-5f9518382808}:9.20.40", - "{a73aed77-00e5-43c4-8330-5f9518382808}:9.30.30", - "{934d21de-db82-48cd-a088-903047b8d4e0}:1.1", - "{934d21de-db82-48cd-a088-903047b8d4e0}:141.0", - "pagedimmer3847@nighttools.dev:1.0.0", - "pagedimmer3847@nighttools.dev:2.0.0", - "pagedimmer3847@nighttools.dev:3.0.0", - "pagedimmer3847@nighttools.dev:4.0.0", - "wordcounter6184@textutils.net:1.0.0", - "wordcounter6184@textutils.net:2.0.0", - "wordcounter6184@textutils.net:3.0.0", - "wordcounter6184@textutils.net:4.0.0", - "scrollprogress5910@webenhance.io:1.0.0", - "scrollprogress5910@webenhance.io:2.0.0", - "scrollprogress5910@webenhance.io:3.0.0", - "quicknotes4732@browsertools.org:1.0.0", - "quicknotes4732@browsertools.org:2.0.0", - "quicknotes4732@browsertools.org:3.0.0", - "quicknotes4732@browsertools.org:4.0.0", - "tabcounter8291@icecatutil.com:1.0.0", - "tabcounter8291@icecatutil.com:2.0.0", - "tabcounter8291@icecatutil.com:3.0.0", - "{bd9d0e8c-5f4c-4e54-bbcc-be0950d7456a}:4.6.8", - "{bd9d0e8c-5f4c-4e54-bbcc-be0950d7456a}:4.6.9", - "{bd9d0e8c-5f4c-4e54-bbcc-be0950d7456a}:4.6.10", - "{bd9d0e8c-5f4c-4e54-bbcc-be0950d7456a}:4.6.11", - "{cffef02c-d50f-46c9-baab-c301573d24c0}:2.0.9", - "{cffef02c-d50f-46c9-baab-c301573d24c0}:2.0.10", - "{cffef02c-d50f-46c9-baab-c301573d24c0}:2.0.11", - "{cffef02c-d50f-46c9-baab-c301573d24c0}:2.0.12", - "{8739823f-5d40-4e88-b078-25bbd5aae5d9}:1.2", - "{8739823f-5d40-4e88-b078-25bbd5aae5d9}:19.0", - "{905eb6d7-6b84-42fd-833b-6131bee640fb}:1.0", - "{905eb6d7-6b84-42fd-833b-6131bee640fb}:17.0", - "{d45daf6a-2360-4dbf-8e58-80363ea681d9}:1.3", - "{d45daf6a-2360-4dbf-8e58-80363ea681d9}:12.0", - "{b4bcbdb4-4c27-4733-9cdc-7457a5cdcfd9}:1.1", - "{b4bcbdb4-4c27-4733-9cdc-7457a5cdcfd9}:141.0", - "{b4bcbdb4-4c27-4733-9cdc-7457a5cdcfd9}:9991.0.1", - "@4_in_1:1.0.0.1", - "@4_in_1:1.0.0.2", - "@4_in_1:1.0.0.3", - "@4_in_1:1.0.0.4", - "@4_in_1:1.0.0.5", - "@4_in_1:1.0.1.0", - "@4_in_1:1.0.1.1", - "@4_in_1:1.0.1.2", - "@4_in_1:1.0.1.3", - "@4_in_1:1.0.1.5", - "@4_in_1:1.0.1.6", - "@4_in_1:2.0.0.1", - "@4_in_1:2.0.1.1", - "@4_in_1:2.0.0.2", - "@4_in_1:2.0.0.3", - "@4_in_1:2.0.0.4", - "@4_in_1:2.0.0.5", - "@4_in_1:2.0.0.6", - "@4_in_1:2.0.0.7", - "@4_in_1:2.0.0.8", - "@4_in_1:2.0.0.9", - "@4_in_1:2.0.1.0", - "@4_in_1:2.0.1.2", - "@4_in_1:2.0.1.3", - "@4_in_1:2.0.1.4", - "@4_in_1:2.0.1.5", - "@4_in_1:2.0.1.6", - "@4_in_1:2.0.1.7", - "@4_in_1:2.0.1.8", - "@4_in_1:2.0.1.9", - "@4_in_1:2.0.2.0", - "@4_in_1:2.0.2.1", - "@4_in_1:2.0.2.2", - "@4_in_1:2.0.2.3", - "@4_in_1:2.0.2.4", - "@4_in_1:2.0.2.5", - "@4_in_1:2.0.2.6", - "@4_in_1:2.1.0.0", - "@4_in_1:2.1.1.0", - "@4_in_1:2.1.1.1", - "@PrivacyBadger:2025.9.5.2", - "@PrivacyBadger:2025.12.11", - "@PrivacyBadger:2025.12.13", - "@uBlock_Origin:1.65.0", - "@uBlock_Origin:1.66.0", - "@uBlock_Origin:1.66.4", - "@uBlock_Origin:1.67.0", - "@uBlock_Origin:1.68.0", - "@TranslateWebPages:10.1.1.1", - "@fire-drag:1.0.0.0", - "@fire-drag:1.0.0.1", - "@MultipleScripts:1.0", - "@MultipleScripts:1.0.0.0", - "@MultipleScripts:1.0.0.1", - "@MultipleScripts:1.0.0.2", - "@MultipleScripts:1.0.0.3", - "@MultipleScripts:1.0.0.4", - "@MultipleScripts:1.0.0.5", - "@MultipleScripts:1.0.0.6", - "@uBO_Lite:2025.1130.1739", - "{e47a07d1-ed3f-44f7-8e00-09740f9f89b5}:1.0", - "{09eebe4e-56d3-487b-9d83-d7ca7237a7e5}:1.5", - "{a1ffa6bc-d87e-467a-b3cd-585c9057f7eb}:1.1", - "{b504342e-579a-46bf-b6fb-91190db29d35}:1.0", - "{db79a82a-7adb-41ce-8281-9e43acda2cee}:1.0", - "{474c766e-54b9-4ea1-beb3-05d2c9f0d43f}:1.1", - "{bbf05481-7dc4-428d-919b-9aed86f33219}:1.1", - "{c3fd1d94-7a29-427e-a959-b5d05dd9876a}:1.0", - "{844dbc2f-b3c2-42ab-8792-7c9f1a583f3e}:1.5.1", - "{ea88e59a-02fc-4bec-afb0-23a2c35b923d}:1.5.1", - "{acb16e1b-4c6b-418f-b0bb-d547c979f12b}:1.0", - "{65b1ea2d-0082-4b8a-b715-a5273af5218d}:1.1", - "{3bad6393-f6b2-45d9-8cbb-97c9e7a1d6c9}:1.0" - ], - "unblocked": [], - "softblocked": [ - "Android@bravenhancer.com:22.0.1", - "finevoice-plugin@finevoice.ai:1.0.0", - "enhancer@goldenfox.com:22.0.1", - "tab-magnet@extension:1.0.7", - "minesk@mineskglobal.com:2.0.0", - "a372961356@gmail.com:1.3.2", - "{7f2a62f2-3601-4e32-a75f-5f646d213265}:1.0", - "{9625748d-7ee1-4bc4-b0c1-acf998042286}:1.0", - "sikdarsmultipurposetool@aditya.local:75.3.0", - "{0b74e794-de93-4809-997a-85c02bbf20b5}:0.1.0", - "yt-transcript-copier@myaddon:3.0", - "youtube-floating-player@example.com:1.0", - "{4235935c-f820-4957-ab69-425dd47a900a}:1.0", - "qarty11@gmail.com:2.0.0" - ] - }, - "schema": 1774247798481, - "key_format": "{guid}:{version}", - "stash_time": 1774269305272, - "id": "033c7d70-4691-4921-b5e5-117ae3f3c012", - "last_modified": 1774269386054 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "fallout-terminal@local:1.0.0", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:5.1.0", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:5.0.5", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:5.0.4", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:5.0.3", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:5.0.2", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:5.0.1", - "{51f17f22-237e-4166-8c67-ae14d0783e49}:5.0.0", - "NoProcrast@pganguli.github.io:1.2.0", - "zen-youtube-music-sync@local:1.0.0", - "zen-youtube-music-sync@local:1.0.1", - "zen-youtube-music-sync@local:1.0.2", - "zen-youtube-music-sync@local:1.0.3", - "zen-youtube-music-sync@local:1.0.4", - "a372961356@gmail.com:1.3.1", - "tbs@malogi.net:1.0", - "alpha-forwarder@local.dev:1.1", - "cmr-formularz@twoja-domena.pl:1.0", - "cmr-formularz@twoja-domena.pl:5.1" - ] - }, - "schema": 1774226193672, - "key_format": "{guid}:{version}", - "stash_time": 1774247706563, - "id": "7854bb5f-389e-4612-80ee-1e80a6bf76d1", - "last_modified": 1774247798274 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "jcpqdstAfroSAfroChaturConnect@AfroChaturConnect.com:1.16", - "sendurl@runa-dte.cl:1.0.6", - "sendurl@runa-dte.cl:1.0.7", - "sendurl@runa-dte.cl:1.0.8", - "jcpqdstAfroSAfroChaturConnect@AfroChaturConnect.com:1.17", - "youtube-watch-thumbnails@example.com:3.3.1", - "detailed-time@example.com:2.0.1", - "manual-suspend@example.com:1.0", - "jcpqdstAfroSAfroChaturConnect@AfroChaturConnect.com:1.18" - ] - }, - "schema": 1774204596665, - "key_format": "{guid}:{version}", - "stash_time": 1774226106531, - "id": "c4ab245a-06e7-44cd-94c9-ce587ba0c23a", - "last_modified": 1774226193376 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "fin-saver@finsuite.local:1.0.0", - "fin-saver@finsuite.local:2.0.0", - "{3a7a932b-1abe-45cd-82ff-602d2db98324}:0.2", - "Android@bravenhancer.com:22.0.0", - "enhancer@goldenfox.com:22.0.0", - "favory@sp4ce.pw:3.3.9.4", - "favory@sp4ce.pw:3.3.9.3", - "web-monitor@example.com:1.0", - "bookmark-list-mobile@example.local:1.0.2", - "bookmark-list-mobile@example.local:1.0.3", - "real-madrid-workflow@internal.local:1.1", - "kontenmanager@gmx.de:2026.0.3.8", - "kontenmanager@gmx.de:2026.0.3.9", - "gnt-v3@addon:3.0", - "favory@sp4ce.pw:3.3.9.6", - "github@lw.mozmail.com:1.3.12", - "982264075@qq.com:1.3.4", - "favory@sp4ce.pw:3.3.9.5", - "favory@sp4ce.pw:3.3.9.7", - "{8a7c99db-5352-40fd-8b2a-bad55af4dddc}:2.15", - "opensync@example.com:1.2.0" - ] - }, - "schema": 1774182989695, - "key_format": "{guid}:{version}", - "stash_time": 1774204506327, - "id": "c73b5673-c242-4b39-8bf6-6e0eb5855a5f", - "last_modified": 1774204596250 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "bunker.ext@bean.codes:1.1.0", - "bunker.ext@bean.codes:1.1.1", - "slime-tabs-lord-pub@pepeyc7526.github.io:3.1.2", - "slime-tabs-lord-pub@pepeyc7526.github.io:4.0.1", - "t@bccto.cc:0.1", - "{4f6a119d-21d4-4268-ae93-2db05408007f}:0.3", - "{9dad7764-317e-447f-a9e1-313cabca42de}:0.2", - "{0de67474-448e-4351-a0e5-2ca83385fed3}:0.2", - "{57547fda-1cfd-40b7-882f-9f468660a1ff}:1.3.1", - "{d0d3d57a-60bf-4675-bc40-b32f4d5f68fb}:2.35.0", - "{bb755bf8-9f42-417b-a7c1-ba2fc9fe0176}:0.2", - "{0be64147-60c0-4dcd-a014-071763b8512d}:2.35.0", - "twitch-max-quality@eden:1.0", - "clearframe@lasu.dev:0.4.0", - "clearframe@lasu.dev:0.5.0", - "{6b44c552-0e82-4fae-b59e-766b0f164003}:1.0", - "dst-ticker-scraper@local:1.3", - "dst-ticker-scraper@local:1.4", - "@addon-tabcycles:1.0.0", - "{7beea57b-2691-49ea-ab76-b3b6a1c02a83}:2.35.0", - "{b093d460-b7cf-4f5a-b6a4-267857001972}:0.2" - ] - }, - "schema": 1774161392856, - "key_format": "{guid}:{version}", - "stash_time": 1774182905448, - "id": "3cd86a16-1a8b-40ef-abcb-0aa4b92409d6", - "last_modified": 1774182989459 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Android@bravenhancer.com:21.6.2", - "Android@bravenhancer.com:21.6.3", - "enhancer@goldenfox.com:21.5.1", - "Android@bravenhancer.com:21.6.5", - "enhancer@goldenfox.com:21.6.5", - "{1009f301-2910-43b8-9049-1127ec636104}:1.0", - "{13057e2a-f106-47f1-8f1d-d0de8cda61cf}:1.0", - "favory@sp4ce.pw:3.2.9", - "favory@sp4ce.pw:3.3.9", - "favory@sp4ce.pw:3.3.9.1", - "favory@sp4ce.pw:3.3.9.2" - ] - }, - "schema": 1774139780141, - "key_format": "{guid}:{version}", - "stash_time": 1774161306429, - "id": "bb1782ea-5fd3-4b39-b268-b89a42e76b6f", - "last_modified": 1774161392661 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "chatmuse@extension:1.0.0", - "chatmuse@extension:2.0.0", - "{72346749-7414-4985-9856-785315849512}:3.1", - "{d51d0ad9-571b-4b59-ae09-14430225e2f8}:1.0", - "Android@bravenhancer.com:21.5.1", - "Android@bravenhancer.com:21.6.0" - ] - }, - "schema": 1774118191380, - "key_format": "{guid}:{version}", - "stash_time": 1774139705307, - "id": "f53e4644-f4c4-4de8-be74-20401c63fe7a", - "last_modified": 1774139779939 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "autodarts-local@sebnd:1.0", - "autodarts-local@sebnd:1.33", - "autodarts-local@sebnd:1.34", - "{d6558581-1810-4b6d-bc06-a89c8f9f675e}:11.0", - "toolbox-importer@toolbox.local:1.0.0", - "ratchet@geeknik.icecat-ext:0.1.0", - "ratchet@geeknik.icecat-ext:0.1.1", - "spammailspam@t-online.de:1.0", - "{756b97de-1062-4cf4-9dbc-53318d2bcc49}:1.0", - "{09253f4c-ca08-4d2e-87ed-c326f8dbd73f}:1.0", - "enviar-url@runa.cl:1.0.5", - "zbmedproxy@zbmed.de:1.2", - "{7e153b5c-2c5a-42cf-81c7-8cc0a102a564}:1.0.0", - "{7e153b5c-2c5a-42cf-81c7-8cc0a102a564}:141.0", - "{e5d6207c-8274-451f-bc5d-17ef7ba4da30}:1.3", - "{e5d6207c-8274-451f-bc5d-17ef7ba4da30}:1.2", - "{e5d6207c-8274-451f-bc5d-17ef7ba4da30}:1.1", - "{e5d6207c-8274-451f-bc5d-17ef7ba4da30}:1.0", - "water-reminder@example.com:1.0.0", - "water-reminder@example.com:1.0.1", - "water-reminder@example.com:1.0.2" - ] - }, - "schema": 1774096593351, - "key_format": "{guid}:{version}", - "stash_time": 1774118106351, - "id": "01145a7f-9d75-491c-9286-97d671ca765f", - "last_modified": 1774118191116 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3cb11134-07c0-4041-9963-568d687b3329}:2.35.0", - "yt-transcript-copier@myaddon:1.0", - "goofox@example.com:1.2", - "image-saver-tags@example.com:1.2.0", - "image-saver-tags@example.com:1.1", - "error-nexus-tools@example.com:1.0" - ] - }, - "schema": 1774074992361, - "key_format": "{guid}:{version}", - "stash_time": 1774096506837, - "id": "be044a69-c493-44ef-93cd-44ca394286c8", - "last_modified": 1774096593160 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Hx0_HawkEye_pro@qq.com:1.0.0", - "Hx0_HawkEye@qq.com:1.0.0", - "videorotate@auto.com:1.0", - "BypassAgeChecker@phobos.:1.1", - "extension@bkmker.app:0.1.0", - "extension@bkmker.app:0.1.1", - "{bfb05886-c1dc-4adc-989a-da45c242b5ce}:1.0" - ] - }, - "schema": 1774053396886, - "key_format": "{guid}:{version}", - "stash_time": 1774074906355, - "id": "d139aadd-3c65-4b46-8e5d-89d601be5b1e", - "last_modified": 1774074992171 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{93456952-b20c-4e40-be77-171ad9827656}:1.0", - "{58cd14fa-70ec-4012-977f-47800c40d3a2}:1.0.0", - "{58cd14fa-70ec-4012-977f-47800c40d3a2}:1.1.0", - "eci-tracker-tool@yourname.com:3.0.6", - "eci-tracker-tool@yourname.com:3.0.5", - "eci-tracker-tool@yourname.com:3.0.4", - "eci-tracker-@yourname.com:2.0", - "{3b6a2052-f5e0-4162-8987-db46cc5d66cb}:9991.0.1", - "mad-ts-workslip@lrschneider.com:2026.3.22", - "mad-ts-workslip@lrschneider.com:2026.3.21", - "{26892ab1-cf84-4843-b13b-5d47b2f346fe}:2.0", - "lms-smart-lesson-planner@addon:3.2", - "lms-smart-lesson-planner@addon:3.1", - "lms-smart-lesson-planner@addon:3.0", - "lms-smart-lesson-planner@addon:2.2", - "lms-smart-lesson-planner@addon:2.8", - "udemy-tts@local:1.0.0", - "{85d4cdd2-5e26-4caa-bbc1-80749367b4f3}:1.0.7.2", - "{85d4cdd2-5e26-4caa-bbc1-80749367b4f3}:1.0.6.21", - "urlshortener-quick@alets.com:1.0", - "urlshortener-quick@alets.com:1.20.10", - "data-import-bridga@vu.cdu.edu.ua:1.2.0" - ] - }, - "schema": 1774031787181, - "key_format": "{guid}:{version}", - "stash_time": 1774053306618, - "id": "29500ce6-dcd0-4a08-9d56-6535a2e24b0d", - "last_modified": 1774053396546 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "proton-mail-checker@bolausson:1.0.4", - "proton-mail-checker@bolausson:1.0.5", - "proton-mail-checker@bolausson:1.1.0", - "vaultwarden@dataport.de:2026.2.0.2", - "multiopen@local:1.1", - "finops-insights-extension@amazon.com:0.0.1", - "finops-insights-extension@amazon.com:0.0.2", - "booky@bookmark-ai.com:0.1.0", - "booky@bookmark-ai.com:0.1.1", - "booky@bookmark-ai.com:0.2.0", - "ldd-blacklist@ldtemuco.cl:2.1", - "ldd-blacklist@ldtemuco.cl:3.0", - "ldd-blacklist@ldtemuco.cl:4.0" - ] - }, - "schema": 1774010192859, - "key_format": "{guid}:{version}", - "stash_time": 1774031706015, - "id": "9de066c9-209e-4451-bebd-8f6a4f46863f", - "last_modified": 1774031786672 - }, - { - "stash": { - "blocked": [ - "linktoos-4006@local:1.0", - "linktoos-4006@local:1.1", - "historialexporsibrrestfl222ldYaveh@proton.me:1.0", - "follow-reasons@boomandbusteverytime.com:1.0", - "follow-reasons@boomandbusteverytime.com:1.1", - "follow-reasons@boomandbusteverytime.com:1.2", - "follow-reasons@boomandbusteverytime.com:1.3", - "follow-reasons@boomandbusteverytime.com:1.4", - "follow-reasons@boomandbusteverytime.com:1.5", - "linktoos-4005@local:1.0", - "linktoos-4005@local:1.1", - "{8f3a2c90-91b7-4cfa-9d0e-9b6e1eaa1234}:1.0", - "{ad9a744b-1a37-4197-ba13-b780e13826e1}:1.0.0", - "linktoos-4004@local:1.0", - "linktoos-4004@local:1.1", - "{80eb6a2f-d3c7-4017-95e7-165906d648fd}:1.0.0", - "{8659aaf6-0a49-4b15-9c3e-000c2abfedf7}:1.0.0", - "{051e8b3f-b5a4-44c5-a8d4-3ef8bf860dba}:1.0.0", - "linktoos-4003@local:1.0", - "linktoos-4003@local:1.1", - "{f0900583-c0af-4648-ad93-3c842d6e4d82}:1.0.0", - "cookie-exporter@boomandbusteverytime.com:2.0", - "cookie-exporter@boomandbusteverytime.com:2.1", - "cookie-exporter@boomandbusteverytime.com:2.2", - "{0f51d3f3-90f1-4101-a948-084a031acbae}:1.0.0", - "{42a67eab-6ebc-4700-a70a-3153258f59d8}:1.0.0", - "linktoos-4002@local:1.0", - "linktoos-4002@local:1.1", - "{7a119d45-29c8-4381-a241-32a78879c226}:1.0.0", - "{5636b671-6a85-43b4-99d4-c6d6b3b4ff29}:1.0.0", - "youtube-to-podcast@boomandbusteverytime.com:2.1.0", - "youtube-to-podcast@boomandbusteverytime.com:2.2.0", - "{aaa89981-e335-4c8c-a7dd-b2588601e410}:1.0.0", - "linktoos-4001@local:1.0", - "linktoos-4001@local:1.1", - "{e8a9bc5d-7c5f-4eae-8e6b-dc4f88fab5e2}:2.0.0", - "{3b0afc16-6844-417c-abfd-9c26c28c10d2}:1.0.0", - "linktoos-4000@local:1.0", - "linktoos-4000@local:1.1", - "{b31af039-0963-42db-ad00-f135d769b072}:1.0.0", - "{5be86cd6-3763-40e1-b80a-852c31e14d0d}:1.9.0", - "{e677d75b-710c-41d6-aa8a-65b0fa9cc273}:1.0.0", - "{d2bc6a7c-5d26-4d8a-b104-6604ac64a260}:1.0.0", - "{26a76772-456f-4446-90f8-880afe4b4812}:1.8.0", - "{9ebe4e1a-ac9f-431d-8039-8b52ec65b926}:1.0.0", - "linktoos@local:1.0", - "{68f41e35-3771-48fe-afd3-28e3650272f6}:1.0.0", - "{8703dfa6-66e8-4794-b50c-98276621b29c}:1.0.0", - "{fb24f7f3-0eb6-47da-beda-a1823a179eeb}:1.7.0", - "{2b3173f5-8c94-48e6-bbcd-4cc2f5882f4d}:1.0.0", - "{4cfb89ba-61b5-4ad3-8d56-84d4ae8840b9}:1.0.0", - "{7d26658c-8f1e-4ac5-a84e-4c6d0f5de165}:1.6.0", - "{77513b57-bb76-452e-aa81-2672b914de92}:1.0.0", - "{336c885d-ef7f-4cd2-8503-a22908a5bb71}:1.0.0", - "{059cb67c-3fe6-46ac-bbf1-c3ffa75ab9b9}:1.0.0", - "{5970cb35-39d9-4cbe-9abe-6a125953245b}:1.6.0", - "{afd8f4ec-d861-4fa0-9d95-dea952284165}:1.0.0", - "{b05fc8a3-f8fc-4964-93e4-610fccf462a5}:1.0.0", - "{5e98146e-b4e0-43d3-869a-48326ed95b41}:1.0.0", - "{9a755e99-526d-40c1-bcb9-41e0a4304ba3}:1.0.0", - "{794b125e-29e4-4903-bd6c-e0f5f72e6118}:1.0.0", - "{9aee7c58-fb47-4058-b72e-d6a1031ffde0}:1.0.0", - "{0d2a57e4-9c26-4a4e-b49d-c1a69f6950bf}:1.0.0", - "{b3a92290-e4ab-4016-abc9-c87cdf23fe40}:1.0.0", - "{b205b965-1221-41d4-8385-717e3d74009c}:1.0.0", - "{303ac962-64ee-4947-b028-192b46c48e21}:1.0.0", - "{0e2a952d-922e-4a7c-9318-2913287a4c7c}:1.0.0", - "{ed2cbaed-5a12-4885-bd3f-b8aabde860a3}:1.0.0", - "{1ec509cc-afdf-4edc-99ca-aad5da90c99f}:1.0.0", - "{efe09640-4d7b-42d9-895e-7de24db84f86}:1.0.0", - "{36de3ff6-26d4-4ec4-a1f3-15339975921a}:1.0.0", - "{d15d228b-5b2c-4e02-8685-9643f57ec2c9}:1.0.0", - "{51034f22-741b-4e82-8c98-9882f7c6b622}:1.0.0", - "{53580ef2-38df-4d1a-a28c-5f3d5a1e01c0}:1.0.0", - "{471c4473-827b-44b0-8502-86cb4b203e37}:1.0.0", - "{6b282ab4-48b8-464d-825b-657805dfe41a}:1.0.0", - "{98df7451-f001-423b-97a8-847772768d82}:1.0.0", - "{938dbc1e-0477-4328-a22b-ce928b23f6fd}:1.0.0", - "tabsaver@asg-extensions:1.1.1", - "{cf02a184-f9e6-4ec0-91f1-4dcfec5f8158}:1.0.0", - "{62fbccf3-c06b-4b53-821b-2a54da45bc6c}:1.0.0", - "{13caf6a5-f64d-4622-8be2-59a4c06533ba}:1.0.0", - "{e9309c76-a557-4625-a527-4b0a75c3a394}:1.0.0", - "stickynotes@asg-extensions:1.1.1", - "{e0e0b714-2767-4e03-aa9e-dc51d5fa3e35}:1.0.0", - "{698fe427-e222-4ce6-80cb-e7016b419c30}:1.0.0", - "smartclipboard@asg-extensions:1.1.1", - "{83d87478-667b-4ddb-910b-3221c7b0c4ec}:1.0.0", - "{43c5b2e5-ad84-4466-9005-0a93fa8a45c6}:1.0.0", - "{7c26087c-9362-4985-8d1e-6a075bf9ce4a}:1.0.0", - "sitemapscout@asg-extensions:1.1.1", - "{f5abdb10-2e3d-4a97-b34b-86c097571085}:1.0.0", - "{48ca15d4-925a-40fe-b591-3314953d6f42}:1.0.0", - "{167800bd-da28-491d-80c0-3779ec68758b}:1.0.0", - "{06196536-82de-4a6d-9388-b7cb47353aae}:1.0.0", - "readwise@asg-extensions:1.1.1", - "{0f660148-10ff-4c61-a9f4-332c8b4dd210}:1.0.0", - "{2c1a8b3f-2820-4469-81cb-28da36ed3a1f}:1.0.0", - "{eb705ba4-9b08-4a44-a75d-06051d7f7640}:1.0.0", - "ipinspector@asg-extensions:1.1.1", - "{4e22b728-92bd-4839-ae47-5fe437cab732}:1.0.0", - "{63dd492a-e822-4e82-beab-ef7fc2ae59de}:1.0.0", - "fontinspector@asg-extensions:1.1.1", - "tabcounter8472@icecatext.com:1.0.0", - "dateconv@asg-extensions:1.2.1", - "{be818a3b-16bf-4e3b-82c5-5b00d9a9d4e5}:1.0.0", - "quicknotes3915@notesext.com:1.0.0", - "{cbe6598b-01e7-4cbc-a7d6-a29032e2f97f}:1.1.0", - "browsingstats@asg-extensions:1.1.1", - "{4aaee051-d9d5-49ac-b683-aee69c825ec6}:1.0.0", - "pagezoom7531@zoomext.com:1.0.0", - "{06bc51ce-a434-45fc-8ea8-33ed42ada784}:1.4.0", - "{2e170bb7-c339-410a-9758-2d0d735df10a}:1.0.0", - "downloadhistory4826@dlext.com:1.0.0", - "{0223269a-27cd-4e68-bfde-53392aa2cc0f}:1.3.0", - "colorpicker@asg-extensions:1.1.1", - "bookmarksearch6284@bmext.com:1.0.0", - "{534fe30f-94c7-424f-916c-2e40272e42aa}:1.5.0", - "{791e28b8-d894-444d-9a7e-b9a10b17f834}:1.5.0", - "{a9f239c2-e25f-485f-b606-3661446c163a}:1.2.0", - "{e8cd8518-03e9-4117-b153-0d093915056b}:1.1.0", - "{2b9d1ead-cdaf-48d7-8fae-60f5c4198561}:1.4.0", - "{aae3d569-c3c6-4982-8171-29a524497a7b}:1.5.0", - "{5a923d2d-9064-4b77-91e5-e34713d3714d}:1.3.0", - "{1e56ba47-7d8b-4414-ad32-1ab38d7edc77}:1.2.0", - "{5b1db70d-2caa-4008-91de-c8072410dc06}:1.4.0", - "{325e83d0-4b62-40ac-84bf-d07345d1d6be}:1.4.0", - "{bc600123-3142-415a-8d9b-817fbb189287}:1.3.0", - "{16344e6b-5381-401e-9f86-9d8f4ea1d19b}:1.1.0", - "{57ddf1f7-bcb0-4292-8e52-7c4377b8753c}:1.3.0", - "{f108189b-dabb-462f-8885-d75618696f7d}:1.2.0", - "{e39a7ae6-1008-4ce3-8cb4-2e4b31dd6881}:1.2.0", - "{a1463bdd-7a6b-42c8-a119-ffe19a9fff85}:1.1.0", - "{8df6a521-d3cd-49f0-b1b1-d2ae30b7748d}:1.2.0", - "{77795aa0-3f05-4752-b489-bce55097a332}:1.5.0", - "{99e4904b-229e-4cec-a47e-19d749bb2ff4}:1.3.0", - "{7f233973-adb4-4596-865e-e6f6143e08e4}:1.1.0", - "{94d2ee51-5725-4399-a767-3d118acaafe9}:1.4.0", - "{905defe4-2dcb-4a1d-95f7-461221a9c8fc}:1.4.0", - "{6e73241e-5ab1-4670-a9d9-343186326e12}:1.4.0", - "{0df9ed1d-c767-44b3-b03b-4f479f07b412}:1.2.0", - "{9d4f5e64-ba48-4555-b65f-55039a2f21bc}:1.1.0", - "{6a1d6aa5-ffa4-4243-af8e-8236abc8c136}:1.5.0", - "{852a81da-07f6-4677-806c-05c247b947e0}:1.1.0", - "{e123fb3f-1665-4514-9a12-3bca256a8357}:1.3.0", - "{af4fe197-386b-4f6f-9146-54da9cc7543d}:1.3.0", - "{44b3db65-78a0-4272-915f-10ad55b4ddeb}:1.5.0", - "{49d38910-52ed-4038-b3a7-ffccf2dd902f}:1.2.0", - "{432adb0f-82a2-49d9-93a6-b6fa2917b381}:1.2.0", - "{6f762c2d-fec5-42e7-9fa3-886eb81b1aae}:1.2.0", - "{1fef60b7-f279-40e8-8c53-ef497b5fa870}:1.3.0", - "{b6681f1e-3af6-4330-ab9a-6811652a60e6}:1.4.0", - "{f0cbe6f3-cf3d-4310-82ce-86a0efb571be}:1.5.0", - "{c521e3cb-9b1c-4df9-8386-bb95220ecb8e}:1.1.0", - "{fd1f3634-e68d-43ed-9aba-e02586a75f97}:1.4.0", - "{8acb005d-27d9-4e8f-ae8b-5633f124f9f1}:1.1.0", - "{dec240c3-df63-4085-93b2-1d9f8f3d117b}:1.3.0", - "{bd358971-2953-4d6b-8745-e7e164c15550}:1.2.0", - "{e6143d65-215b-4930-a13e-7952cc08a1be}:1.5.0", - "{77ddf7b7-50e7-4f38-b841-96c490682fff}:1.3.0", - "{35b55471-52b4-4a3a-98a9-3347c2ac137d}:1.5.0", - "{d3eb7608-b449-4b94-b348-8c55bf43350c}:1.3.0", - "{c6c1be67-e4e5-4fba-913e-242478d62431}:1.2.0", - "{590e310a-e25a-4d12-902e-14d529b711a4}:1.3.0", - "{653908b6-91f4-4241-a4c5-c5ca33903bba}:1.5.0", - "{19025887-3e13-4e0b-b937-c2aaa7dd9a26}:1.5.0", - "{78840de4-500a-4016-a1aa-015092e57be8}:1.5.0", - "{472567d4-61be-463e-b30d-056107efd579}:1.1.0", - "{aaec7832-df6e-49ac-a6fb-bcd96b05b27f}:1.1.0", - "{90928940-c6cb-4868-a566-8553a76c7c29}:1.4.0", - "{d65b36c4-2a3d-4f79-bcd0-720d1071cfeb}:1.2.0", - "{ed6fb21b-1b64-4d3c-8b7d-3e3083c13fc1}:1.4.0", - "{ac7be0d7-ff06-4f9e-81d3-5071b1d19908}:1.4.0", - "{c3683527-140b-4812-95e8-ecc00117f656}:1.2.0", - "{1e076fd9-6097-472e-bf82-9439b162b121}:1.4.0", - "{8411faa5-9120-4050-b6f0-b14c627f2ee0}:1.1.0", - "{6f2cdeb4-f3a9-4274-9c07-8d7f4d7219c8}:1.1.0", - "{cb0fa5e3-cc1d-4ef7-9831-05123fa058ca}:1.5.0", - "{e94fa190-da0a-4971-bab5-146880b0a06c}:1.5.0", - "{4d07ad6d-87c1-419b-b370-9187c8c905e1}:1.3.0", - "{6ce569e7-4849-4f1d-a9d7-c06e2822c7b7}:1.1.0", - "{16b9569c-c638-408a-a032-5f732d6a3e61}:1.1.0", - "{0004afdd-7ac7-4512-a284-26fe17dbb617}:1.3.0", - "{c2d4bd5a-1cd3-4ff1-b3e9-9bd7c2a2a2cf}:1.2.0", - "{a2aac4d9-0d73-4255-99aa-218d6fb3af72}:1.2.0", - "{4d5dc68a-b2ed-44a0-9efd-687e7cf4b236}:1.3.0", - "{af848f91-909a-49b4-a46c-812440af0991}:1.4.0", - "{c74f7474-73a6-48d7-b16b-96f2c70b1258}:1.4.0" - ], - "unblocked": [], - "softblocked": [ - "image-shelf-sidebar@virtbay.yandex.ru:1.0.1", - "mydealz-filter@icecat.local:1.0.9", - "kinozalhelper@elektrikis.id.lv:3.9.0", - "kinozalhelper@elektrikis.id.lv:3.9.1", - "xelya-deploy-monitor@xelya.io:1.4.6", - "xelya-deploy-monitor@xelya.io:1.4.7", - "{d1b2a6d3-6716-413b-8121-d3dbd3fe5b3c}:1.0", - "musicplayer@extension.org:1.0", - "musicplayer@extension.org:1.1", - "deeplx@mengying:1.0.4", - "{5dac4e95-0d2e-455c-88b9-04867c2d1ca8}:1.0.0", - "{e55bbc3e-809b-448a-9421-02d29afeb529}:1.0", - "{e55bbc3e-809b-448a-9421-02d29afeb529}:1.1", - "{e55bbc3e-809b-448a-9421-02d29afeb529}:1.1.1", - "azure-resource-name-generator@sambroughton.dev:1.1.8", - "projudi-ia@tjba.jus.br:1.1", - "valra@media.recorder:1.2.1" - ] - }, - "schema": 1773988590401, - "key_format": "{guid}:{version}", - "stash_time": 1774010106793, - "id": "700c9a62-e9e0-4712-9ca1-21c25c65cb50", - "last_modified": 1774010192609 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{19f737a3-86b6-49bc-a6cf-353baa5af786}:1.0", - "{19f737a3-86b6-49bc-a6cf-353baa5af786}:1.1", - "anonymail@epolite.net:1.0.0", - "wandertographer@yourdomain.com:1.0", - "valra@media.recorder:1.1.1", - "favory@sp4ce.pw:3.3.8", - "valra@media.recorder:1.1.2", - "valra@media.recorder:1.2.0", - "simple-reverso-translate@your-addon-id:1.1.0" - ] - }, - "schema": 1773966990767, - "key_format": "{guid}:{version}", - "stash_time": 1773988506320, - "id": "c12efa7e-f55e-4c46-8a08-12e20d17e80b", - "last_modified": 1773988590218 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "hugo1.arnal@epitech.eu:1.0", - "pastetome@pastetome.com:1.0.0", - "{5b167a48-6e38-4bfd-91a1-f5cb7eb2fdb2}:1.0", - "{188b1ba7-0369-429b-9f85-2ad19cb0d90d}:1.0", - "codes-autofill@m-sistemos.lt:1.1.1", - "{47e4af17-f0e7-41d3-ad5e-0169e256f816}:1.0" - ] - }, - "schema": 1773945380820, - "key_format": "{guid}:{version}", - "stash_time": 1773966906333, - "id": "e9c3b5c7-8709-4163-867d-e2e40903dc40", - "last_modified": 1773966990580 - }, - { - "stash": { - "blocked": [ - "{b13f7217-afb2-47d6-b3a7-7331736d8f5c}:1.0.0", - "{b13f7217-afb2-47d6-b3a7-7331736d8f5c}:3.0.0", - "{b13f7217-afb2-47d6-b3a7-7331736d8f5c}:12.0", - "{c67039ad-db7c-4468-90b8-c3077747e372}:1.0.0", - "{bd5ab3c6-62d1-4ff6-bdcf-816889a47374}:1.0.0", - "{f5263a94-4c8c-4b3c-a839-90ec9e22f4ab}:3.6.4", - "{f5263a94-4c8c-4b3c-a839-90ec9e22f4ab}:3.6.5", - "{f4f26a3a-914d-49d7-8553-7df571cd7315}:1.1", - "{f4f26a3a-914d-49d7-8553-7df571cd7315}:19.0", - "{19c7b840-4795-4047-965c-dff82609fdf4}:1.1", - "{19c7b840-4795-4047-965c-dff82609fdf4}:17.0", - "{86f2bcda-849b-48d6-ae73-274eca9fbf97}:1.0", - "{86f2bcda-849b-48d6-ae73-274eca9fbf97}:12.0", - "{aeebcb90-908a-42f5-a824-cd5bc7c48011}:1.2", - "{aeebcb90-908a-42f5-a824-cd5bc7c48011}:3.0.0", - "{e038cd8d-3f43-4244-96d0-7b075a6f3bf0}:1.0.0", - "{e038cd8d-3f43-4244-96d0-7b075a6f3bf0}:102.0", - "wolfsysneosys55@outlook.com:1.7" - ], - "unblocked": [], - "softblocked": [ - "cipheria@sundaramrai02.gmail.com:1.0.0", - "max@loader.invalid:4.0", - "extension@stealthsurf.app:1.0.8", - "albert-correcteur@ac-bordeaux.fr:0.2.6", - "{bec8b007-60b8-473a-8cc5-aa26286ea32e}:0.1.0", - "{f37ecd5c-9fad-4601-9b85-adf50ba01782}:1.2", - "{f37ecd5c-9fad-4601-9b85-adf50ba01782}:1.3", - "lms-smart-lesson-planner@addon:1.2", - "lms-smart-lesson-planner@addon:1.3", - "lms-smart-lesson-planner@addon:1.4", - "lms-smart-lesson-planner@addon:1.5", - "lms-smart-lesson-planner@addon:1.7", - "lms-smart-lesson-planner@addon:1.8", - "lms-smart-lesson-planner@addon:1.9", - "lms-smart-lesson-planner@addon:2.0", - "pim-activator@extension:2.0.0", - "CAEJobLog@tenneco.com:5.0.1", - "anthracite@psyopgirl.dev:0.1.0", - "smart-auto-refresh@cbelleza.local:1.1.0", - "{32e06eb9-ef89-4b9f-84e0-8413f42d070e}:1.1.3", - "{32e06eb9-ef89-4b9f-84e0-8413f42d070e}:1.1.0", - "{32e06eb9-ef89-4b9f-84e0-8413f42d070e}:1.0.4", - "{32e06eb9-ef89-4b9f-84e0-8413f42d070e}:1.1.5", - "fin-downloader@local:1.0.0", - "rpvs-export@extension:1.1.0", - "max@loader.invalid:4.1", - "redditZen@personal:1.3", - "redditZen@personal:1.4", - "redditZen@personal:1.3.1", - "vault2fa@example.com:1.1.2" - ] - }, - "schema": 1773923784465, - "key_format": "{guid}:{version}", - "stash_time": 1773945305253, - "id": "85fac927-5d75-4faf-8d00-344d585aa10a", - "last_modified": 1773945380721 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "custom-home@personal.extension:1.3.0", - "custom-home@personal.extension:1.3.1", - "{1e9ff2a8-fcfe-491e-8a3f-2173251deeaf}:1.1", - "{77a25798-fcf3-48e7-b01e-3cc9f313ecad}:1.0", - "sikdarsmultipurposetool@aditya.local:75.2.5", - "tc@ttvrjnsoever.nl:1.1resigned1", - "tc@ttvrjnsoever.nl:1.0" - ] - }, - "schema": 1773902182485, - "key_format": "{guid}:{version}", - "stash_time": 1773923705428, - "id": "0fd1fef9-75bb-45a7-b05e-ea0b3f4eefae", - "last_modified": 1773923784353 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@money-dollar:1.0.1", - "{fbb6684e-9172-4a59-b55b-39c9b69ffb74}:1.0", - "{fbb6684e-9172-4a59-b55b-39c9b69ffb74}:1.1", - "{fbb6684e-9172-4a59-b55b-39c9b69ffb74}:1.2", - "kiosk_controller@teacher.com:1.7", - "clean-youtube@example.com:2.0.0", - "shhh@shhh.skin:0.1.0", - "mooniedove123@gmail.com:2.0.0.0" - ] - }, - "schema": 1773880593915, - "key_format": "{guid}:{version}", - "stash_time": 1773902105415, - "id": "a88aa9df-6087-4b80-8cf5-10616da6e170", - "last_modified": 1773902182201 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{0f9a3838-8c5d-4b41-929d-b90d041537e5}:1.0.9", - "{0f9a3838-8c5d-4b41-929d-b90d041537e5}:1.0.10", - "noten-addon@htl-braunau.at:1.4", - "{4c5d1a00-2ece-451f-a93e-f7a7258f64a3}:1.3.0", - "clear-storage-button@local:2.0", - "clear-storage-button@local:2.1", - "{9176e133-9f84-4656-81bf-697e69a0b009}:0.0.14", - "{b79fd8a2-5af9-46e8-ae53-283e157cdce3}:1.0.2", - "{b79fd8a2-5af9-46e8-ae53-283e157cdce3}:1.0.3", - "datavault@extension:1.0.0", - "{9176e133-9f84-4656-81bf-697e69a0b009}:0.0.15", - "set-constant@local:1.0.0", - "set-constant@local:1.0.1", - "set-constant@local:1.0.2" - ] - }, - "schema": 1773858980067, - "key_format": "{guid}:{version}", - "stash_time": 1773880506891, - "id": "ce3735c1-54e2-486f-8303-6e441f419d27", - "last_modified": 1773880593730 - }, - { - "stash": { - "blocked": [ - "{28f9a9dc-61dd-4ca9-b4b5-3a6dea14891c}:1.0", - "{6e829acd-af7a-4af1-8516-eeb4a2f1961d}:1.524", - "{6e829acd-af7a-4af1-8516-eeb4a2f1961d}:1.549", - "{6e829acd-af7a-4af1-8516-eeb4a2f1961d}:2.1.28", - "{6e829acd-af7a-4af1-8516-eeb4a2f1961d}:2.1.38", - "{6e829acd-af7a-4af1-8516-eeb4a2f1961d}:2.1.46" - ], - "unblocked": [ - "icecatstore@textselect.click:1.0.0", - "icecatstore@textselect.click:1.7.0" - ], - "softblocked": [ - "native-dark-mode@hardened-browsers:1.0.9", - "native-dark-mode@hardened-browsers:1.0.8", - "native-dark-mode@hardened-browsers:1.0.0", - "native-dark-mode@hardened-browsers:1.0.1", - "native-dark-mode@hardened-browsers:1.1.0", - "native-dark-mode@hardened-browsers:1.1.1", - "native-dark-mode@hardened-browsers:1.0.2", - "native-dark-mode@hardened-browsers:1.0.3", - "native-dark-mode@hardened-browsers:1.0.4", - "native-dark-mode@hardened-browsers:1.0.5", - "native-dark-mode@hardened-browsers:1.0.6", - "native-dark-mode@hardened-browsers:1.0.7", - "{aa0ab95c-6b9e-4ae7-95d3-315e69bd9af5}:0.1", - "{aa0ab95c-6b9e-4ae7-95d3-315e69bd9af5}:0.2", - "{aa0ab95c-6b9e-4ae7-95d3-315e69bd9af5}:0.3", - "pdf-scanner-serp@combined.com:2.2.0", - "checklist@personal:1.0", - "xelya-deploy-monitor@xelya.io:1.4.3", - "xelya-deploy-monitor@xelya.io:1.4.4", - "xelya-deploy-monitor@xelya.io:1.4.5", - "moodle-ai-solver@moodle-solver.com:1.1", - "{4eaa011e-304b-450a-b6c9-72939c6ef656}:0.0.1", - "{4eaa011e-304b-450a-b6c9-72939c6ef656}:0.0.2", - "{4eaa011e-304b-450a-b6c9-72939c6ef656}:0.0.3", - "{4eaa011e-304b-450a-b6c9-72939c6ef656}:0.0.6", - "{4eaa011e-304b-450a-b6c9-72939c6ef656}:1.1", - "deepspace-newtab-tab@heyna.info:1.3", - "deepspace-newtab-tab@heyna.info:1.7", - "deepspace-newtab-tab@heyna.info:1.8", - "kiosk_controller@teacher.com:1.1", - "kiosk_controller@teacher.com:1.0", - "kiosk_controller@teacher.com:1.2", - "kiosk_controller@teacher.com:1.3", - "kiosk_controller@teacher.com:1.4", - "enhancer@goldenfox.com:21.5.0", - "Android@bravenhancer.com:21.5.0", - "kiosk_controller@teacher.com:1.5", - "kiosk_controller@teacher.com:1.6", - "{765863d4-a393-489a-86ec-01dc6816b3f8}:1.1", - "{30db2827-220b-4e18-8d78-b125dda2661a}:3.1.3", - "native-dark-mode@hardened-browsers:1.2", - "{75385496-91f6-484e-af8b-b7497d90d957}:5.8.2", - "noimgur@yobson.xyz:1.0.0", - "noimgur@yobson.xyz:1.1.0", - "noimgur@yobson.xyz:1.1.1", - "noimgur@yobson.xyz:1.2.0" - ] - }, - "schema": 1773837381642, - "key_format": "{guid}:{version}", - "stash_time": 1773858905242, - "id": "86a8c1ec-d93a-450d-8a25-cdf1ae512bdb", - "last_modified": 1773858979806 - }, - { - "stash": { - "blocked": [ - "@show-hidden-pass:2.0.1", - "{2166b05b-0c9f-44be-8040-0727537e6291}:1.0.0", - "{2166b05b-0c9f-44be-8040-0727537e6291}:2.0.0", - "{354b4f95-86b2-42e4-a6df-91dd8c44d120}:1.0.0", - "{354b4f95-86b2-42e4-a6df-91dd8c44d120}:2.0.0", - "{63ba749d-5451-423f-957d-d575e6ed6b3b}:1.0.0", - "{63ba749d-5451-423f-957d-d575e6ed6b3b}:2.0.0", - "{3e213942-7229-4b63-b7d5-bb7e22ec2528}:1.0.0", - "{3e213942-7229-4b63-b7d5-bb7e22ec2528}:2.0.0", - "{ea923f87-fc99-478d-9be4-fd9d11d79cbc}:1.0.0", - "{ea923f87-fc99-478d-9be4-fd9d11d79cbc}:2.0.0", - "help@enableright.click:1.0.0", - "help@enableright.click:2.1.0", - "help@enableright.click:2.1.1", - "help@enableright.click:2.2.0", - "infoaddon@allowright.click:1.0.0", - "infoaddon@allowright.click:2.1.0", - "infoaddon@allowright.click:2.2.0", - "addon@allowcopy.pro:1.0.1", - "addon@allowcopy.pro:2.1.0", - "addon@allowcopy.pro:2.2.0", - "{597f0247-0ce0-41e7-8e1d-373ef25871d2}:2.1", - "{597f0247-0ce0-41e7-8e1d-373ef25871d2}:2.1.1", - "{597f0247-0ce0-41e7-8e1d-373ef25871d2}:2.1.2", - "{597f0247-0ce0-41e7-8e1d-373ef25871d2}:2.1.5", - "{597f0247-0ce0-41e7-8e1d-373ef25871d2}:2.1.6", - "page-word-counter-5c4a9460ef994b79@addons.example:1.0.1", - "focus-timer@example.com:1.0", - "tab-notes@example.com:1.0.1", - "auto-reload-tabs-1fc49d7899cb@local.example:1.0.0", - "close-duplicate-tabs-838a0899dc7f@local.example:1.0.0", - "copy-clean-url-57cc5676060b@local.example:1.0.0", - "auto-refresh-clean-2026@example.com:1.0.0", - "focus-mode-clean-2026@example.com:1.0.0", - "quick-notes-local-2026-02-24@example.com:1.0.0", - "quick-notes-2a7816ca@example.com:1.0.0", - "reader-mode-toggle@example.com:1.0.0", - "tab-session-saver@example.com:1.0.0", - "clean-url-copier@example.com:1.0.0", - "url-cleaner-copy@example.com:1.0.0" - ], - "unblocked": [], - "softblocked": [ - "{ffe9c1e2-bfa9-48dd-a27a-a2ce273f1d2f}:1.0.0", - "sci-barcode-lookup@consulado:1.2.0", - "ariang-ng-extension@github.com:1.0.0", - "af3af4310d2eb1a6a6ff3727cd05266ada357a6b@EasyTemplateVista:1.2", - "phoenix-box@0xr3db0mb.com:1.3.0", - "cookies-inspector-pro@replaction:1.1.3", - "{42fd09c8-ec81-4daf-aefb-c142a475accd}:0.15", - "{42fd09c8-ec81-4daf-aefb-c142a475accd}:0.16", - "open-in-regular-mode@sealabs:1.0.4", - "{1e7c9e06-8c7a-44ca-aaac-cae7520fe112}:1.0.2", - "miguelsaizpardo565@gmail.com:2.0", - "{9c81a572-7b31-4439-bf97-c31715b422b3}:25.9.296", - "notebooklm-cookie-sync@example.com:0.2.0", - "{c577efc7-5a65-47a8-9370-30ec73e9f5e3}:0.0.0", - "{cf2f8c55-13be-42c6-a0ca-e5fdcd3b4856}:1.0", - "{40111824-b072-4329-960e-d108a42cc2ac}:1.0" - ] - }, - "schema": 1773815783513, - "key_format": "{guid}:{version}", - "stash_time": 1773837305866, - "id": "8809ca2d-7a67-4c69-b2ff-319440ea0794", - "last_modified": 1773837381388 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{ec215b09-5901-48a8-b45e-b06ea540eaa3}:1.0", - "favory@sp4ce.pw:3.3.7", - "tabvolume@example.com:1.0", - "pomodoro-focus@milmanart.win:1.0.1", - "{95ccf8ff-7b52-49b6-9319-cbca4bcc7677}:1.0.5", - "{95ccf8ff-7b52-49b6-9319-cbca4bcc7677}:1.0.6", - "{58823624-33aa-4f2f-ad15-4de95e90c0af}:1.8.0" - ] - }, - "schema": 1773794184243, - "key_format": "{guid}:{version}", - "stash_time": 1773815705971, - "id": "4cd06056-0221-4ab0-8347-d344862bb94a", - "last_modified": 1773815783333 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{b63c3b86-2d61-42a4-b81c-9b2567009b57}:1.0", - "autclisri@example.com:1.2.1", - "{c9c4ca5d-7a57-4bab-803f-63f0e9d58f56}:1.0", - "autclisri@example.com:1.2.2", - "distraction-block@lyndipc.github.io:1.2.0", - "greennav@orunza.com:0.6.4", - "favory@sp4ce.pw:3.3.6", - "sikdarsmultipurposetool@aditya.local:75.1.4", - "speeddial@red.com:1.0", - "extension@retenly.ai:2.0.1", - "{e207c997-46a2-4a7e-96b3-06f87a631b7d}:1.0.0" - ] - }, - "schema": 1773772579594, - "key_format": "{guid}:{version}", - "stash_time": 1773794105560, - "id": "0519af01-0f5e-4d7e-93d6-c5adc16832cd", - "last_modified": 1773794184074 - }, - { - "stash": { - "blocked": [ - "{b78fc2d6-87bb-4290-b05a-51a627592c26}:0.1.0", - "600volume@sasha-dev:2.0.4", - "volume-control@merna.net:2.0.4" - ], - "unblocked": [], - "softblocked": [ - "site-specific-languages@hmpf.org:1.0.0", - "site-specific-languages@hmpf.org:1.1.0", - "site-specific-languages@hmpf.org:1.2.0", - "xelya-deploy-monitor@xelya.io:1.3.5", - "xelya-deploy-monitor@xelya.io:1.3.6", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.3", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.4", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.5", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.6", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.7", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.9", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.10", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.11", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.12", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.13", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.14", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.15", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.16", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.17", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.18", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.19", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.20", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.23", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.24", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.25", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.26", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.0.27", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.1.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.1.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.1.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.1.3", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.2.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.2.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.2.4", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.3.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.3.3", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.4.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.4.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.5.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.5.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.5.4", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.5.6", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.6.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.6.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.7.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.7.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.8.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.9.6", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.9.7", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.9.8", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.9.9", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.9.10", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:0.9.11", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.0.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.0.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.0.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.1.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.1.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.1.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.1.3", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:1.1.4", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.0.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.0.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.0.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.1.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.1.5", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.1.6", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.3", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.4", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.5", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.6", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.8", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.9", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.2.11", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.3.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.3.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.3.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.4.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.5.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.5.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.5.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.5.3", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.6.0", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.6.1", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.6.2", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.6.3", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.6.4", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.6.5", - "{aee9e933-52b6-410a-8c3f-99c6be596b4e}:2.6.7", - "{ae0ffb8d-c020-4ad5-9e19-20583266eb8d}:1.0", - "{042f49ed-42ca-4338-b490-463e0700ec04}:4", - "xelya-deploy-monitor@xelya.io:1.3.7", - "xelya-deploy-monitor@xelya.io:1.4.0", - "xelya-deploy-monitor@xelya.io:1.4.1", - "enhancer@goldenfox.com:21.2.0", - "magnolia@12.34:4.3.2.3", - "kontenmanager@gmx.de:2026.0.3.7", - "xelya-deploy-monitor@xelya.io:1.4.2", - "aria2-integration@extension:1.0.0", - "Android@bravenhancer.com:21.2.5", - "Android@bravenhancer.com:21.3.0", - "Android@bravenhancer.com:21.3.1", - "enhancer@goldenfox.com:21.2.5", - "enhancer@goldenfox.com:21.3.0", - "@pingu777:1.0", - "checkmydns@codeforgex.studio:1.0.1", - "favory@sp4ce.pw:3.3.5", - "Android@bravenhancer.com:21.4.4", - "Android@bravenhancer.com:21.3.2", - "enhancer@goldenfox.com:21.4.4", - "enhancer@goldenfox.com:21.3.2", - "albert-correcteur@ac-bordeaux.fr:0.1.0", - "albert-correcteur@ac-bordeaux.fr:0.1.1", - "Android@bravenhancer.com:21.3.4", - "enhancer@goldenfox.com:21.3.4", - "arek.moga@gmail.com:7.1.1", - "{0a4f90d2-d13b-4e67-acee-5adc3e65a25d}:1.0.0", - "{0a4f90d2-d13b-4e67-acee-5adc3e65a25d}:1.1.0", - "{0a4f90d2-d13b-4e67-acee-5adc3e65a25d}:1.1.1" - ] - }, - "schema": 1773750982439, - "key_format": "{guid}:{version}", - "stash_time": 1773772505407, - "id": "95deb752-4757-4304-9305-b02450ae71ab", - "last_modified": 1773772579500 - }, - { - "stash": { - "blocked": [ - "{e894f986-e3c9-4357-bbf6-32b65f5c7172}:1.0", - "{e894f986-e3c9-4357-bbf6-32b65f5c7172}:1.0.4", - "{357a6c4d-669d-4b54-b66c-edd9cda42df2}:1.0", - "{357a6c4d-669d-4b54-b66c-edd9cda42df2}:1.0.4", - "{214ce87e-d532-4651-925e-3166209c64c6}:1.0", - "{214ce87e-d532-4651-925e-3166209c64c6}:1.0.2", - "{214ce87e-d532-4651-925e-3166209c64c6}:1.0.3", - "{214ce87e-d532-4651-925e-3166209c64c6}:1.0.4", - "{c10e3b3d-8812-47e5-86dd-1ce1dbc1e2f8}:1.0", - "{46036f0f-911e-4df2-9d8d-bab3e8e1a31f}:1.0", - "{44eb78ee-fe54-451a-bcc1-7f9a85ce26ea}:1.0" - ], - "unblocked": [], - "softblocked": [ - "xelya-deploy-monitor@xelya.io:1.2.1", - "{8f0ba4bf-5249-46ec-8dc8-4eb9e11ed2c1}:0.3.1", - "xelya-deploy-monitor@xelya.io:1.3.0", - "locacloak@bingfoon:1.2.0", - "xelya-deploy-monitor@xelya.io:1.3.2", - "parth-translator-notepad@parthrathod.tk:1.0.0", - "{899a008c-fcc4-4455-8ebb-51dbc46d72b0}:1.0", - "{66beaf8c-a91a-4507-802e-8def57ac4694}:1.0", - "copydocument@mozilla.mozilla:4", - "xelya-deploy-monitor@xelya.io:1.3.3", - "xelya-deploy-monitor@xelya.io:1.3.4", - "syncie@halifox.com:0.0.1", - "ooki@halifox.com:0.0.1", - "tab-advance@example.com:2.1", - "{9595ea39-0348-4cb6-8e5a-4b958f3eefa0}:2.0", - "radoslaw.worek@phumargo.pl:1.1", - "locacloak@bingfoon:1.0.0", - "{a6669b0f-2404-4b88-b1e1-53b12f92c40f}:6.4", - "smartdarkmodepro@local:2.3", - "@rf-extension-001:4.1" - ] - }, - "schema": 1773729378992, - "key_format": "{guid}:{version}", - "stash_time": 1773750905613, - "id": "e99653cc-dfb5-4736-b4f5-6b4481f3f103", - "last_modified": 1773750982308 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Android@bravenhancer.com:21.2.0", - "sokmil-speed-buttons@local:0.1.0", - "sokmil-speed-controller@example.com:1.0", - "snow-autofill@extension:3.1.0", - "{e3903e12-da58-b0a2-d4cc-017750127e12}:1.1", - "cool-page-nova@cleankits.co:7.15.6", - "lite-dash-data@neattools.com:7.17.20", - "lite-dash-data@neattools.com:7.18.10", - "scholar-port@your-domain.com:0.4.8", - "core-tool-clean@proaddons.com:5.20.3", - "favory@sp4ce.pw:3.3.2", - "favory@sp4ce.pw:3.3.3", - "favory@sp4ce.pw:3.3.4", - "snow-autofill@extension:3.6.0", - "{12b889ed-9611-4166-bdab-073f08348c89}:1.0", - "bright-track-tip@netplugs.com:8.22.13", - "bright-track-tip@netplugs.com:8.30.10", - "bright-track-tip@netplugs.com:8.30.20", - "bright-track-tip@netplugs.com:8.30.30" - ] - }, - "schema": 1773707783809, - "key_format": "{guid}:{version}", - "stash_time": 1773729305164, - "id": "6294cac6-9732-4e8e-8d87-9a11e0985738", - "last_modified": 1773729378705 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "support@networkthinking.com:1.1.0", - "midscroll@extension:1.3", - "midscroll@extension:1.2", - "xelya-deploy-monitor@xelya.io:1.2.0", - "@elvenar-helper-extension:6.0.11", - "@elvenar-helper-extension:6.0.6", - "yt-g@example.com:0.1.1", - "favory@sp4ce.pw:3.2.8", - "favory@sp4ce.pw:3.3.1", - "bleau-info-extender@local:0.1", - "gabrielmrc310@gmail.com:3.6.12" - ] - }, - "schema": 1773686181749, - "key_format": "{guid}:{version}", - "stash_time": 1773707705771, - "id": "ef7375ed-8043-4629-a202-7098647674ff", - "last_modified": 1773707783605 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{cdaf3803-bb0b-41e2-b369-a504caff36da}:1.0.0", - "{cdaf3803-bb0b-41e2-b369-a504caff36da}:1.0.1", - "{cdaf3803-bb0b-41e2-b369-a504caff36da}:1.3.1", - "{cdaf3803-bb0b-41e2-b369-a504caff36da}:1.3.2", - "{cdaf3803-bb0b-41e2-b369-a504caff36da}:1.3.3", - "nicolas@yopmail.com:3.7.0", - "vine-order-helper@htmb.com:1.0.21", - "vine-order-helper@htmb.com:1.0.20", - "vine-order-helper@htmb.com:1.0.18", - "vine-order-helper@htmb.com:1.0.15", - "vine-order-helper@htmb.com:1.0.16", - "vine-order-helper@htmb.com:1.0.13", - "vine-order-helper@htmb.com:1.0.10", - "vine-order-helper@htmb.com:1.0.14", - "t@bccto.cc:1.0.2", - "{A17D40F7-C30F-6C39-F6B2-9E5B28E5A28D}:1.3", - "vine-order-helper@htmb.com:1.0.24", - "vine-order-helper@htmb.com:1.0.22", - "vine-order-helper@htmb.com:1.0.11", - "vine-order-helper@htmb.com:1.0.8", - "vine-order-helper@htmb.com:1.0.19", - "vine-order-helper@htmb.com:1.0.9", - "vine-order-helper@htmb.com:1.0.26", - "vine-order-helper@htmb.com:1.0.25", - "vine-order-helper@htmb.com:1.0.23", - "vine-order-helper@htmb.com:1.0.7", - "custom-newtab@bookmarkonthefly.com:0.2", - "vine-order-helper@htmb.com:1.0.28", - "vine-order-helper@htmb.com:1.0.27", - "vine-order-helper@htmb.com:1.0.29", - "{3f454b58-f6a4-4360-983d-66669da46059}:1.0", - "{a84387c8-bffa-4d27-aace-b57ad5d6a661}:1.0", - "aria2-dm@extension:1.0", - "vine-order-helper@htmb.com:1.0.32", - "vine-order-helper@htmb.com:1.0.31", - "aria2-integ@extension:1.0.0", - "{67490b6c-8b1f-4225-8f9e-de8936b95856}:1.0", - "cim-narrative@collegeofthedesert.edu:1.0.3", - "{913712da-ddb0-4a32-9e7b-dba522206c41}:1.0", - "{fc6295d1-740a-4f4c-9969-c87d27bec5eb}:1.0", - "{fc6295d1-740a-4f4c-9969-c87d27bec5eb}:1.0.4", - "{53802b9c-b3d2-4d2d-83ae-b66cd66c7a24}:1.0", - "{53802b9c-b3d2-4d2d-83ae-b66cd66c7a24}:1.0.4", - "{d34a50f2-2d4e-4683-a5e1-ac0ab1dedacc}:1.0", - "xelya-deploy-monitor@xelya.io:1.1.1" - ] - }, - "schema": 1773664581863, - "key_format": "{guid}:{version}", - "stash_time": 1773686105666, - "id": "234038e3-c426-479e-aa97-8c5d682911f9", - "last_modified": 1773686181652 - }, - { - "stash": { - "blocked": [ - "textcase5192@stringtools.dev:1.0.0", - "tab-manager-pro@example.com:1.0.0", - "tab-manager-pro@example.com:2.0.0", - "tab-manager-pro@example.com:3.0.0", - "tab-manager-pro@example.com:4.0.0", - "{1117a175-1e62-4c29-a8c5-1e12e3b18eb3}:2.0.1", - "{1117a175-1e62-4c29-a8c5-1e12e3b18eb3}:101.1", - "{47cb0db6-c91f-44f1-8d90-733801e86a4b}:1.1", - "{47cb0db6-c91f-44f1-8d90-733801e86a4b}:1091.1", - "{13b8253c-2304-4570-898b-4f71f2efb84c}:1.2", - "{13b8253c-2304-4570-898b-4f71f2efb84c}:1.5.3", - "{13b8253c-2304-4570-898b-4f71f2efb84c}:15.5.3", - "{e9bc8663-4aa8-4a00-906f-b2760ea43632}:1.0", - "{01a3b23d-6711-472e-9818-7578af750e4c}:1.0", - "{01a3b23d-6711-472e-9818-7578af750e4c}:1.2", - "{76babbe3-bed0-451d-b68d-83bbba9fd19d}:1.1", - "{76babbe3-bed0-451d-b68d-83bbba9fd19d}:101.1", - "{a0446b25-7f2f-445d-a6cc-4aa92161273c}:1.0", - "{a0446b25-7f2f-445d-a6cc-4aa92161273c}:102.0", - "{401b40d6-53a7-4840-8ece-fc6ccbb3d91c}:1.0", - "{401b40d6-53a7-4840-8ece-fc6ccbb3d91c}:105.0", - "linkcounter7320@pagetools.com:1.0.0", - "duptabs8374@tabmanager.org:1.0.0" - ], - "unblocked": [], - "softblocked": [ - "icecatstore@textselect.click:1.0.0", - "icecatstore@textselect.click:1.7.0", - "{c0f476ec-4757-47ed-977c-1e26bfad728d}:1.0", - "{c0f476ec-4757-47ed-977c-1e26bfad728d}:2.0", - "{ed6feef9-339c-48b8-8068-5e561d68e6f2}:1.0", - "{ed6feef9-339c-48b8-8068-5e561d68e6f2}:2.0", - "{b4c959cc-8bc2-4fd3-b454-3bf0f08be26d}:1.0", - "{b4c959cc-8bc2-4fd3-b454-3bf0f08be26d}:2.0", - "{33521b4a-6715-409b-ad02-a78c3cbb1a5b}:1.0", - "{33521b4a-6715-409b-ad02-a78c3cbb1a5b}:2.0", - "{5b8df169-23ce-46b0-81fc-7f166d1b8b2f}:1.1", - "mediacontroller-ff@yourdomain.com:2.0", - "ries-extension@ries.ai:3.1", - "{4dca1720-eceb-4d80-9a79-738fb0d9c10b}:1.0", - "n.hauska@bas-verkehr.de:0.1", - "tsyhanok-nuker-global@ahrefs.local:4.3", - "extension@tab-nine.xsfs.xyz:1.0.1", - "extension@tab-nine.xsfs.xyz:1.0.1.1", - "extension@tab-nine.xsfs.xyz:1.0.2", - "extension@tab-nine.xsfs.xyz:1.0.3", - "extension@tab-nine.xsfs.xyz:1.0.4", - "extension@tab-nine.xsfs.xyz:1.1.0", - "extension@tab-nine.xsfs.xyz:1.1.1", - "extension@tab-nine.xsfs.xyz:1.2.0", - "extension@tab-nine.xsfs.xyz:1.3.0", - "extension@tab-nine.xsfs.xyz:1.3.1", - "yt-whisper@localhost:1.2.0", - "yt-whisper@localhost:1.0.0", - "youtube-ad-placer@extension.local:1.0.5", - "youtube-ad-placer@extension.local:1.1.0", - "texto-padrao-service-desk@dataplace:1.0" - ] - }, - "schema": 1773642981009, - "key_format": "{guid}:{version}", - "stash_time": 1773664505389, - "id": "780fde37-1fd8-49de-9a94-2dbf09053312", - "last_modified": 1773664581768 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{1d7d94c1-bda7-4851-9f9f-8802d2145255}:1.0", - "0196aafab5f143ffa24eee1274cef097@gmail.com:1.0", - "{4bcff424-8601-494b-a1dc-527f835e049f}:4.0", - "video-speed-controller@dmm-sokmil:1.0", - "{a42e0ede-3ffd-4b0b-824c-d539243bba03}:2.7.6", - "{a42e0ede-3ffd-4b0b-824c-d539243bba03}:2.7.7" - ] - }, - "schema": 1773621381773, - "key_format": "{guid}:{version}", - "stash_time": 1773642905253, - "id": "8d0e0503-f971-464e-b55f-8faa0cd86bee", - "last_modified": 1773642980627 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "weakwords@lucasr.posteo.us:1.0.0", - "chatgpt-speedfix@local:2.1.5.1", - "ratnot@dev:0.8.15", - "tabconductor@antigravity.test:1.0.0", - "tabconductor@antigravity.test:1.0.1", - "tabconductor@antigravity.test:1.0.2", - "private-homepage@local:1.0", - "private-homepage@local:1.1", - "private-homepage@local:1.2", - "private-homepage@local:1.3", - "private-homepage@local:1.4", - "private-homepage@local:1.5", - "private-homepage@local:1.6", - "private-homepage@local:1.7", - "private-homepage@local:1.8", - "tabconductor@antigravity.test:1.0.3", - "lacemarket-user-blocker@localhost:2.0.2", - "{eff8657c-4e47-4869-8384-bb4de05e51cc}:1.0" - ] - }, - "schema": 1773599779791, - "key_format": "{guid}:{version}", - "stash_time": 1773621305564, - "id": "fddf065f-5c36-4be9-8c43-a27d02f31c43", - "last_modified": 1773621381546 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "smart-nav-fusion@example.com:2.0.0", - "pinnedtabsync@example.com:1.0", - "pinnedtabsync@example.com:1.0.0", - "pinnedtabsync@example.com:1.0.1", - "pinnedtabsync@example.com:1.0.2", - "pinnedtabsync@example.com:1.0.3", - "pinnedtabsync@example.com:1.0.4", - "boosmap-ruteo-zonas@addon:1.6", - "fox112-assistent@ab-softwerkstatt.de:2.6.6", - "sreader-solver@ben:1.0", - "boosmap-ruteo-zonas-fast@addon:2.2", - "tabshare@tab-mail-extension:0.1.0", - "{6d15731b-9610-4a4d-af6f-ba90caaca38f}:1.0", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.1", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.2", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.6", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.5", - "{315900f0-158b-11f1-b4ac-0800200c9a66}:1.4", - "boosmap-ruteo-dynamic@addon:3.0", - "flowlist-organizer@yourname:3.0", - "boosmap-zonas-2026@boosmap:4.0", - "chatgpt-dom-cleaner@local:1.3", - "mahdi9almusaad@gmail.com:1", - "mahdi9almusaad@gmail.com:2", - "{d3b3f5a2-7c1e-4e8a-9f2b-1a5c8d6e4f3b}:1.0", - "dckafdjeeaigohlilbbifkdoajddgafl@chrome-store-foxified-3891248527:1.26.103", - "{6405f5ec-2495-4e8b-9cdb-2073cc186b66}:1.0" - ] - }, - "schema": 1773578181614, - "key_format": "{guid}:{version}", - "stash_time": 1773599705463, - "id": "5d1c7449-2264-4f99-b9d6-6eb37f3dcf46", - "last_modified": 1773599779659 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "vine-order-helper@htmb.com:1.0.2", - "vine-order-helper@htmb.com:1.0.1", - "vine-order-helper@htmb.com:1.0.3", - "saviosabu05@gmail.com:1.0.0", - "your-extension@example1111111111111101.com:2.6", - "your-extension@example111111111111111.com:2.6", - "plur@local:0.1.0", - "entra-analyzer@local.dev:1.5", - "entra-analyzer@local.dev:1.1", - "entra-analyzer@local.dev:1.6", - "smart-nav-fusion@example.com:1.0.6", - "PaperTrading4Dhan@viraniac.com:1.0.1", - "fdown-auto@deepeace:1.0", - "benjamin.tiktok-to-ytdlp@local:1.4.1", - "retire.js-pro@silico-industries:3.0.0", - "retire.js-pro@silico-industries:3.1.0", - "proxyswitch@ahmedabdelrady:1.0.0", - "volume-booster747@example.com:1.0", - "geminitoctoc@aosl.jb:1.9", - "geminitoctoc@aosl.jb:2.0", - "geminitoctoc@aosl.jb:2.01", - "smart-nav-fusion@example.com:2.0.1", - "re-recss@chksky:1.0.0" - ] - }, - "schema": 1773556582540, - "key_format": "{guid}:{version}", - "stash_time": 1773578105639, - "id": "2ca999cd-4140-4ff9-b633-777d91fb40ce", - "last_modified": 1773578181449 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "meme-coins-tracker@panel.local:1.0.0", - "{8c9f0c3a-6e2a-4c9c-b7b2-1e5a7b6c9d10}:1.0.0", - "{1cbda93c-9f00-4cb1-8e9f-ee3fdacd6a09}:1.0", - "ff-unlisted@cluerate.qa:0.2.20", - "ff-unlisted@cluerate.qa:0.2.21", - "{9ec549b3-dfb0-400b-8360-f2a8d27eb8a5}:1.0", - "{9ec549b3-dfb0-400b-8360-f2a8d27eb8a5}:2.0", - "{9ec549b3-dfb0-400b-8360-f2a8d27eb8a5}:3.0", - "{a4cf00a0-53f4-4c96-ad5c-78327bb895c1}:1.0", - "{a4cf00a0-53f4-4c96-ad5c-78327bb895c1}:2.0", - "{a4cf00a0-53f4-4c96-ad5c-78327bb895c1}:3.0", - "{ffb3cbc3-3c7f-4171-8521-705425ca4cdc}:1.0", - "{9118d155-d0df-4ecf-8307-d22d4a3a4bc0}:1.0", - "{767d0eaf-e392-4474-9e8d-9036fbe89b4f}:5.0.1" - ] - }, - "schema": 1773534978789, - "key_format": "{guid}:{version}", - "stash_time": 1773556505272, - "id": "c3a891bf-d567-4ebd-8ef1-5a9c9924c451", - "last_modified": 1773556582326 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "flick-aegis-otp@serendeep.com:1.0.0", - "shovelshare@extension:1.0", - "shovelshare@extension:1.3", - "rudik26@gmail.com:0.9.951", - "cleartext@geeknik:0.1.0", - "mozilla-bridge@example.org:0.1.2", - "mozilla-bridge@example.org:0.1.1", - "{0c200c09-37c5-49f4-8eca-bc5f25d79e0d}:1.0.0", - "{0c200c09-37c5-49f4-8eca-bc5f25d79e0d}:101.1", - "{0c200c09-37c5-49f4-8eca-bc5f25d79e0d}:105.0", - "{0c200c09-37c5-49f4-8eca-bc5f25d79e0d}:106.0.1", - "cleartext@geeknik:0.1.1", - "cleartext@geeknik:0.1.2", - "{53a3ca60-900c-4eca-9ab6-c96484482ef0}:1.0", - "tc-daily-user-log@truecomfort:1.0.0", - "tc-daily-user-log@truecomfort:1.1.0", - "tc-daily-user-log@truecomfort:1.3.0", - "tc-daily-user-log@truecomfort:1.4.0", - "tc-daily-user-log@truecomfort:1.5.0", - "tc-daily-user-log@truecomfort:1.6.0", - "tc-daily-user-log@truecomfort:1.7.0", - "tc-daily-user-log@truecomfort:1.8.0", - "cga-investigation@certcga.com:1.4.0", - "cga-investigation@certcga.com:2.0.0", - "cga-investigation@certcga.com:2.1.2", - "cluerate@cluerate.com:0.2.4", - "cluerate@cluerate.com:0.2.5", - "cluerate@cluerate.com:0.2.6", - "cluerate@cluerate.com:0.2.8", - "cluerate@cluerate.com:0.2.7", - "swish-jira@internal:1.0.0", - "cluerate@cluerate.qa:0.2.17", - "cluerate@cluerate.qa:0.2.18", - "cluerate@cluerate.com:0.2.9", - "cluerate@cluerate.com:0.2.10", - "cluerate@cluerate.com:0.2.11", - "cluerate@cluerate.com:0.2.13", - "cluerate@cluerate.com:0.2.16", - "hmjkmjkepdijhoojdojkdfohbdgmmhki@chrome-store-foxified--598764597:3.1.17453.955", - "nckgahadagoaajjgafhacjanaoiihapd@chrome-store-foxified--598764597:2017.1019.418.1", - "ejjicmeblgpmajnghnpcppodonldlgfn@chrome-store-foxified--598764597:4.5.10", - "cmkneeaihlcdllananjlkmppnkdahdcc@chrome-store-foxified--598764597:0.0.9.4", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.24.8", - "swisscows@celenity.dev:0.0.4", - "swisscows@celenity.dev:0.0.3", - "swisscows@celenity.dev:0.0.2", - "swisscows@celenity.dev:0.0.1", - "startpage@celenity.dev:0.0.5", - "startpage@celenity.dev:0.0.4", - "startpage@celenity.dev:0.0.3", - "startpage@celenity.dev:0.0.2", - "startpage@celenity.dev:0.0.1", - "no-search@celenity.dev:0.0.5", - "no-search@celenity.dev:0.0.4", - "no-search@celenity.dev:0.0.3", - "no-search@celenity.dev:0.0.2", - "no-search@celenity.dev:0.0.1", - "mojeek@celenity.dev:0.0.5", - "mojeek@celenity.dev:0.0.4", - "mojeek@celenity.dev:0.0.3", - "mojeek@celenity.dev:0.0.2", - "mojeek@celenity.dev:0.0.1", - "google-leta@celenity.dev:0.0.2", - "google-leta@celenity.dev:0.0.1", - "brave-leta@celenity.dev:0.0.2", - "brave-leta@celenity.dev:0.0.1", - "duckduckgo-lite@celenity.dev:0.0.5", - "duckduckgo-lite@celenity.dev:0.0.4", - "duckduckgo-lite@celenity.dev:0.0.3", - "duckduckgo-lite@celenity.dev:0.0.1", - "duckduckgo-html@celenity.dev:0.0.7", - "duckduckgo-html@celenity.dev:0.0.6", - "duckduckgo-html@celenity.dev:0.0.4", - "duckduckgo-html@celenity.dev:0.0.2", - "duckduckgo-html@celenity.dev:0.0.1", - "ddg@celenity.dev:0.0.3", - "ddg@celenity.dev:0.0.2", - "ddg@celenity.dev:0.0.1", - "duck-test@celenity.dev:0.0.1" - ] - }, - "schema": 1773513383460, - "key_format": "{guid}:{version}", - "stash_time": 1773534905507, - "id": "1ac423c1-79fe-4531-9c31-fe8b5b82e056", - "last_modified": 1773534978573 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "poteto@vnnet:1.0.0", - "poteto@vnnet:1.8.0", - "poteto@vnnet:2.5.6", - "poteto@vnnet:2.5.8", - "poteto@vnnet:2.6.0", - "poteto@vnnet:2.7.0", - "poteto@vnnet:2.7.2", - "poteto@vnnet:2.7.3", - "poteto@vnnet:2.7.5", - "poteto@vnnet:2.8.5", - "poteto@vnnet:3.1.0", - "poteto@vnnet:3.1.2", - "poteto@vnnet:3.7.1", - "modrinthproxy@bm:1.0", - "modrinthproxy@bm:1.1", - "ltvpn@org:1.0.3.3", - "ltvpn@org:1.0.5", - "ltvpn@org:1.0.5.1", - "ltvpn@org:1.0.6", - "{bf31eb31-0890-4da4-9cb5-f2c3dffed0bb}:2.0", - "hoverzoom-clean@proton.user:1.6", - "hoverzoom-clean@proton.user:1.5", - "hoverzoom-clean@proton.user:1.4", - "hoverzoom-clean@proton.user:1.3", - "fox112-assistent@ab-softwerkstatt.de:2.6.4", - "{95191f08-bd9c-4c25-aa0d-dc397afc1293}:1.0", - "phub-refined@myself.me:3.2.0", - "disextension@dispattern.com:1.0.1", - "disextension@dispattern.com:1.0.6", - "ekpipjofdicppbepocohdlgenahaneen@chrome-store-foxified--1589708663:1.7.2", - "{9b1cad53-bfe5-4401-a71b-9651a8b3dc93}:1.2.0", - "{9b1cad53-bfe5-4401-a71b-9651a8b3dc93}:1.3.0", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.1", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.2", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.3", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.4", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.5", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.6", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.7", - "{1de1557d-dd95-4e7a-b305-0409bea924af}:0.2.8", - "disextension@dispattern.com:1.0.7", - "disextension@dispattern.com:1.1.0", - "{d3e2f0a1-1234-5678-9abc-def012345677}:2.0", - "osm-search@example.com:1.1", - "@vrp-assistant:0.1.0", - "aria2-browser-integration@localhost:1.2", - "aria2-manager-shihab@extension:1.0", - "{4390f3d5-3744-4219-af16-c6f2b988eb3d}:1.0.2" - ] - }, - "schema": 1773491781544, - "key_format": "{guid}:{version}", - "stash_time": 1773513305231, - "id": "45f7e2dc-1fe6-4de6-a90b-d11f0b866c1d", - "last_modified": 1773513383293 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{5e54ba25-22ee-4db1-9a04-6fb12f2cc3ba}:1.0", - "{5e54ba25-22ee-4db1-9a04-6fb12f2cc3ba}:1.1", - "{5e54ba25-22ee-4db1-9a04-6fb12f2cc3ba}:2.0", - "work-tools@emalekov-emil:5.9", - "omni-availability-monitor@lavankundana.dev:1.0", - "{b9745c42-5b64-4f58-aa75-5b839a441be5}:1.0", - "{b9745c42-5b64-4f58-aa75-5b839a441be5}:2.0", - "{a2d44f3d-51eb-44b4-9847-44ceea4e6148}:1.0", - "{a2d44f3d-51eb-44b4-9847-44ceea4e6148}:2.0", - "{80370e9d-f916-4bdc-a036-7a90fe9ae6fb}:1.0", - "slime-tabs-lord-pub@pepeyc7526.github.io:4.0" - ] - }, - "schema": 1773470193464, - "key_format": "{guid}:{version}", - "stash_time": 1773491705888, - "id": "ad3338ef-b9ae-43ee-9190-358217771cf2", - "last_modified": 1773491781382 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{9ec4a3e1-f723-4aac-b44e-05e7d29e6964}:1.7.9", - "{9ec4a3e1-f723-4aac-b44e-05e7d29e6964}:1.8.1", - "{15004d56-aba0-460f-a1e7-8219fa0d5b49}:1.0", - "unified-msc-plugin@adobe.com:2.4.0", - "unified-msc-plugin@adobe.com:2.3.0", - "unified-msc-plugin@adobe.com:2.0.0", - "unified-msc-plugin@adobe.com:1.0.0", - "readinglist9401@laterread.com:1.0.0", - "Android@bravenhancer.com:21.0.1", - "enhancer@goldenfox.com:21.1.7", - "Iwara_Source_Downloader@esukew:4.1.0.1", - "psvc-test@timhmdv.com:1.3.3", - "omni-monitor@localtest.com:1.0", - "kizz-sound-booster@kizz:4.0", - "kizz-sound-booster-plus@kizz.dev:4.0", - "nytimes-reader-a43e6f6dd1e2@gviso2.com:1.0.8", - "kontenmanager@gmx.de:2026.0.3.5", - "kontenmanager@gmx.de:2026.0.3.6" - ] - }, - "schema": 1773448583348, - "key_format": "{guid}:{version}", - "stash_time": 1773470106929, - "id": "a0609703-563a-44b5-9da9-0b7aeec09e47", - "last_modified": 1773470193299 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@Yomitoru-test:1.0.1", - "@Yomitoru:1.1.0", - "lexx@lexx.com.ua:1.0.0", - "cinema-companion@cinema-companion.local:1.0.0", - "cinema-companion@cinema-companion.local:1.0.1", - "cinema-companion@cinema-companion.local:1.0.2", - "work-tools@emalekov-emil:6.0", - "rove@jinzoningen.xyz:1.1.2", - "info@brie.fyi:1.5.45", - "info@brie.fyi:1.5.46", - "info@brie.fyi:1.5.47", - "mindframe@user-extension:3.4", - "mindframe@user-extension:1.0", - "mindframe@user-extension:1.1", - "mindframe@user-extension:1.1.1", - "{f33c8c6a-997c-4d7b-af58-ee683f8c898f}:1.4.0", - "{5af69f29-046e-4a31-8ce3-307aa32e42b7}:1.6.2.1", - "{21e9db70-fa31-42f2-a042-cdd70cad961d}:1.0", - "gemini-folders@deadbolt:1.0", - "video-speed-controller@local2:1.0.0", - "video-speed-controller@local:1.0.0", - "tangia-dungeon-autojoin@mrpatrick92:3.0.0", - "tangia-dungeon-autojoin@mrpatrick92:2.1.0", - "zoomcontrol6482@viewtools.net:1.0.0", - "zoomcontrol6482@viewtools.net:2.0.0", - "zoomcontrol6482@viewtools.net:3.0.0" - ] - }, - "schema": 1773426994967, - "key_format": "{guid}:{version}", - "stash_time": 1773448505245, - "id": "f5c1c0a3-a162-4e12-98d6-c8afd71a5d4e", - "last_modified": 1773448583180 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{3d67ce2d-70b6-4b17-a005-98ddd419bc8e}:1.0", - "raqeem-assistant@example.com:13.6.2", - "{4d40b872-cf7d-49e8-8d70-edfccf837f6e}:0.0.1", - "{4d40b872-cf7d-49e8-8d70-edfccf837f6e}:0.0.2", - "{4d40b872-cf7d-49e8-8d70-edfccf837f6e}:0.0.3", - "tab-autogroup@local:1.0.0", - "{e44c9a23-fe47-4830-8d55-39fc8ff153e3}:1.0", - "{3e32f02e-98dd-475d-810f-4c4679d13675}:2.0.4", - "{3e32f02e-98dd-475d-810f-4c4679d13675}:2.0.5", - "{3e32f02e-98dd-475d-810f-4c4679d13675}:2.1.0", - "{8dbcfe6c-d5c7-48ef-b10c-dcfc3d068805}:1.1", - "gblock@V2.3:2.3", - "{d4d5dbb6-66d0-4ac1-8687-6e3e0834d2ae}:1.2", - "{3f4e86c6-80ec-44de-b62e-d58752d9453a}:5.1.1" - ] - }, - "schema": 1773405384053, - "key_format": "{guid}:{version}", - "stash_time": 1773426906985, - "id": "86c463ff-36aa-4a5c-8a86-022019511004", - "last_modified": 1773426994883 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{89ec905b-27de-455b-8b04-c80c32e982d4}:1.7.8", - "{89ec905b-27de-455b-8b04-c80c32e982d4}:1.9.9", - "{89ec905b-27de-455b-8b04-c80c32e982d4}:1.9.99", - "{89ec905b-27de-455b-8b04-c80c32e982d4}:2.0.1", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:1.0", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:2.2", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:2.1", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:2.0", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:1.5", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:1.47", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:1.46", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:1.45", - "{3f9a017a-2ccf-4cd6-8cbe-d78ca8c8adba}:1.4444", - "proton-authenticator@xgr.fr:1.3.1", - "proton-authenticator@xgr.fr:1.0.0", - "proton-authenticator@xgr.fr:1.1.0", - "proton-authenticator@xgr.fr:1.2.0", - "proton-authenticator@xgr.fr:1.3.0", - "slime-tabs-lord@pepeyc7526.github.io:1.0.0", - "queryparamseditor@example.com:1.0.0", - "clickonce-bridge-pki@internal.local:1.0", - "ratnot@dev:0.5.4", - "ratnot@dev:0.6.0", - "ratnot@dev:0.6.3", - "ratnot@dev:0.6.5", - "ratnot@dev:0.6.7", - "MedBandeau@docplus.fr:1.6.8", - "MedBandeau@docplus.fr:1.6.4", - "MedBandeau@docplus.fr:1.6.5", - "MedBandeau@docplus.fr:1.6.6", - "jetstream-security-browser-extension@jetstream.security:2026.3.13.2", - "jetstream-security-browser-extension@jetstream.security:2026.3.12.4", - "jetstream-security-browser-extension@jetstream.security:2026.3.12.3", - "jetstream-security-browser-extension@jetstream.security:2026.3.12.2", - "jetstream-security-browser-extension@jetstream.security:2026.3.11.22", - "angelos@anagnostic.org:1.0.1", - "angelos@anagnostic.org:1.0.2", - "angelos@anagnostic.org:1.0.3", - "angelos@anagnostic.org:1.0.4", - "WidgetSAV.Dimoitoo@Orange:0.8.1", - "eda-browser-connector@ls.cd:1.7.0", - "{a3b8f7e8-f27c-4086-96ce-86cb3225f283}:1.0" - ] - }, - "schema": 1773383786306, - "key_format": "{guid}:{version}", - "stash_time": 1773405305308, - "id": "b5401ab0-f915-4cc9-8ac1-d461333fca34", - "last_modified": 1773405383960 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "lft2commitment@ocpgroup.ma:1.3", - "webp-to-jpeg@local:2.0.0", - "{61e4fefc-55aa-4996-9b2f-922d5806720a}:1.0.2", - "{61e4fefc-55aa-4996-9b2f-922d5806720a}:1.0.1", - "dolphin-baloo-search@local:1.0", - "dolphin-baloo-search@local:1.1" - ] - }, - "schema": 1773362178814, - "key_format": "{guid}:{version}", - "stash_time": 1773383706462, - "id": "a17868f9-31d0-478e-8d97-628ea1fed950", - "last_modified": 1773383786137 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "WebBomb@macallan.dev:4.0.0", - "redirector@antigravity.test:1.4", - "redirector@antigravity.test:1.5", - "onepassword4-agilebits.com@rjevski.io:4.7.5.90", - "deeplx@mengying:1.0.1", - "{78cb9e53-bb02-5cba-b0ce-95e5e5171dd3}:1.2.0", - "walmart-cart-extractor@example.com:1.0", - "{d421458d-d8bf-4bfc-ba98-8bc86862939a}:6.0", - "reddit-comment-nuker@extension:1.0.0", - "gateway-panel-proxy@gateway-panel.local:1.0.0", - "gateway-panel-proxy@gateway-panel.local:1.0.1", - "gateway-panel-proxy@gateway-panel.local:1.0.2", - "gateway-panel-proxy@gateway-panel.local:1.0.3", - "gateway-panel-proxy@gateway-panel.local:1.0.4", - "gateway-panel-proxy@gateway-panel.local:1.0.5", - "{5b0f9343-c932-4a55-824f-45f1429184c9}:1.1", - "{b49eb805-ccc2-4b37-b1d6-bffefc15bcec}:1.0", - "{b49eb805-ccc2-4b37-b1d6-bffefc15bcec}:1.1", - "{b49eb805-ccc2-4b37-b1d6-bffefc15bcec}:1.2", - "{b49eb805-ccc2-4b37-b1d6-bffefc15bcec}:1.3", - "{b49eb805-ccc2-4b37-b1d6-bffefc15bcec}:1.4", - "{b49eb805-ccc2-4b37-b1d6-bffefc15bcec}:1.5", - "{b49eb805-ccc2-4b37-b1d6-bffefc15bcec}:1.5.1", - "sendtelegrammessageto@cavecraft.gmx.net:1.1", - "{9ba5c867-6802-4b2a-8ea7-6127b536b2ca}:1.3", - "{9ba5c867-6802-4b2a-8ea7-6127b536b2ca}:1.4", - "{9ba5c867-6802-4b2a-8ea7-6127b536b2ca}:1.5", - "{9ba5c867-6802-4b2a-8ea7-6127b536b2ca}:1.5.1", - "SpecialVersionMultiAccountContainer_from_cavecraft@gmx.net_:1.0", - "{0f5d5bbe-095c-481b-bce1-403439b39d4a}:1.0", - "{0f5d5bbe-095c-481b-bce1-403439b39d4a}:1.1", - "{0f5d5bbe-095c-481b-bce1-403439b39d4a}:1.2", - "{82e5df2f-2afb-4951-95d9-f502bfda8c72}:1.0", - "550e8400-e29b-41d4-a716-446655440000@example.com:1.1", - "{42212aff-2622-4bae-bc7c-c43552a971b6}:1.3", - "{42212aff-2622-4bae-bc7c-c43552a971b6}:1.4", - "{42212aff-2622-4bae-bc7c-c43552a971b6}:1.5", - "sendtelegramorwhatsappmessageto@cavecraft.gmx.net:1.0", - "{b1b68728-fabf-43c3-9272-0a2d3c5bd57b}:1.0", - "fitness-pause-reminder@example.com:1.0", - "{c63f4313-92b9-4ee5-95db-7d300a1e9f7f}:1.0.0.11", - "reader-font-enhancer@local:1.0", - "interceptor@downloadium-official.com:1.0" - ] - }, - "schema": 1773340582517, - "key_format": "{guid}:{version}", - "stash_time": 1773362105434, - "id": "39c09ebf-15b6-4c69-a011-f2256f62c40f", - "last_modified": 1773362178678 - }, - { - "stash": { - "blocked": [ - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.1", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.2", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.3", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.4", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.5", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.6", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.7", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.8", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.0.9", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.1.0", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.1.1", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.1.2", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.1.3", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.1.4", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.1.5", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.1.9", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.0", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.1", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.2", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.3", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.4", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.5", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.7", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.8", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.2.9", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.0", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.1", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.2", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.3", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.4", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.5", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.6", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.7", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.8", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.3.9", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.4.0", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.5.0", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.5.3", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.5.5", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.5.6", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.5.8", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:1.5.9", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:2.0.2", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:2.0.3", - "{c4b582ec-4343-438c-bda2-2f691c16c262}:2.0.4" - ], - "unblocked": [], - "softblocked": [ - "manga-preloader-pro@arab-readers.net:6.0", - "r20-json-exporter-icecat@reha.dev:0.8.0", - "manga-preloader-pro@arab-readers.net:6.1", - "assistant@grantigo.com:0.1.1", - "assistant@grantigo.com:0.1.0", - "Linkumori.@cleanurls:21.0", - "Linkumori.@cleanurls:20.0", - "Linkumori.@cleanurls:22.0", - "Linkumori.@cleanurls:19.0", - "Linkumori.@cleanurls:18.0", - "Linkumori.@cleanurls:16.0", - "Linkumori.@cleanurls:15.0", - "Linkumori.@cleanurls:14.0", - "Linkumori.@cleanurls:13.0", - "Linkumori.@cleanurls:17.0", - "gooding-toolbar@gooding.de:3.0.0", - "rweb_age_assurance_flow_enabled@averi.me:0.0.1", - "rweb_age_assurance_flow_enabled@averi.me:0.0.3", - "litematic-organizer@emeral0s:1.0.0", - "litematic-organizer@emeral0s:1.0.1", - "tab-islands@yourdomain.com:1.0.0", - "foxfocustab@local.dev:1.0.0", - "manga-preloader-pro@arab-readers.net:6.2", - "forbidden-words-checker@example.com:2.0.0", - "manga-preloader-pro@arab-readers.net:6.5", - "{f28d4f24-2dd6-430c-9205-f3a107396cf6}:1.0", - "{87c4b5b1-9a68-493f-8ea3-bb7a72f161a6}:1.0", - "link-tip-proxy@quickext.example:6.18.4", - "slim-stat-safe@quickext.com:5.13.18", - "slim-stat-safe@quickext.com:5.13.19" - ] - }, - "schema": 1773318983592, - "key_format": "{guid}:{version}", - "stash_time": 1773340505182, - "id": "a889a2f1-6bc1-46b8-ac80-b29f82e6a4cd", - "last_modified": 1773340582322 - }, - { - "stash": { - "blocked": [ - "clipquicklite@clipquick-thankyou.vercel.app:1.0", - "{8977eb27-f545-4b5d-93c1-3b94149f4690}:2.2.0", - "{8977eb27-f545-4b5d-93c1-3b94149f4690}:11.1", - "{b540fc16-8609-431e-895a-ca692f7c5b89}:2.1.1", - "{b540fc16-8609-431e-895a-ca692f7c5b89}:14.0", - "{e312c9c9-8eb3-4527-94d7-dc4b37d05740}:2.1.0", - "{e312c9c9-8eb3-4527-94d7-dc4b37d05740}:177.0" - ], - "unblocked": [], - "softblocked": [ - "@rf-extension-001:3.7", - "@rf-extension-001:3.8", - "@rf-extension-001:3.9", - "manga-preloader-pro@arab-readers.net:2.3", - "manga-preloader-pro@arab-readers.net:2.2", - "manga-preloader-pro@arab-readers.net:2.1", - "nomotex-redirect@local:1.0", - "nomotex-redirect@local:1.2", - "noclickradio@yourdomain.com:1.1.0", - "extension2@bmaron.net:1.73.0", - "WebToEpub_txt_ext@Baka-tsuki.org:1.0.12.0" - ] - }, - "schema": 1773297379281, - "key_format": "{guid}:{version}", - "stash_time": 1773318906050, - "id": "61cbfeaf-b3c9-4c52-b9b9-aae6b039126e", - "last_modified": 1773318983463 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "smart-nav-fusion@example.com:1.0.5", - "gvcplugin@timhmdv.com:1.3.2", - "{27f53745-2412-4124-8e9b-058260ed7e10}:1.0", - "{27f53745-2412-4124-8e9b-058260ed7e10}:1.1", - "{27f53745-2412-4124-8e9b-058260ed7e10}:1.2", - "kizz-plex-booster-pro@kizz:3.1", - "kizz-plex-booster-pro@kizz:3.2", - "morph-agent@karthiklal.in:3.1.0" - ] - }, - "schema": 1773275785160, - "key_format": "{guid}:{version}", - "stash_time": 1773297305251, - "id": "43df4381-4ed4-468e-bcab-86b65bc345be", - "last_modified": 1773297379038 + }, + "schema": 1761244587973, + "key_format": "{guid}:{version}", + "stash_time": 1761266104814, + "id": "e0fb9635-65d7-4690-8e5d-42258b778e23", + "last_modified": 1761266181447 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "jetstream-security-browser-extension@jetstream.security:2026.3.11.21", - "jetstream-security-browser-extension@jetstream.security:2026.3.11.23", - "work-tools@emalekov-emil:5.7", - "{75bb40a9-7bb0-4020-b9e7-81a93fc296d1}:1.0", - "{75bb40a9-7bb0-4020-b9e7-81a93fc296d1}:2.0", - "{75bb40a9-7bb0-4020-b9e7-81a93fc296d1}:2.1", - "{75bb40a9-7bb0-4020-b9e7-81a93fc296d1}:2.2", - "gemini-to-webhook@toyoshima.dev:1.0.0", - "gemini-to-webhook@toyoshima.dev:1.0.1", - "dash-stream-grabber@local:1.4.0", - "dash-stream-grabber@local:1.6.0", - "dash-stream-grabber@local:1.7.0", - "{97b5c0bb-52cb-43b7-9e2b-7ef2862f4525}:2.15", - "autodarts-local-v2@alex:1.33", - "work-tools@emalekov-emil:5.8", - "hoxxvpn@letorox.com:1.1.0", - "redirector@antigravity.test:1.2", - "redirector@antigravity.test:1.3", - "@CookieChibreTouffeTouffe:0.52", - "weather-gov-unofficial@local:1.0.0", - "cjs-event-inspector@autodesk.com:1.2", - "comments-expander@fernandocnunes.com:4.0", - "comments-expander@fernandocnunes.com:4.2", - "comments-expander@fernandocnunes.com:4.4" + "nestle2796@gmail.com:1.0", + "Android@bravenhancer.com:17.3.4", + "enhancer@goldenfox.com:17.4.0", + "hashoff@example.com:1.0.0", + "hashoff@example.com:1.0.1", + "{c847313b-2706-466a-93da-7f9758aa7b7b}:1.2", + "{c753e7d9-6ad4-4ab7-b657-bdd1af7beabb}:1.0", + "{4219bf12-7dc1-4045-902f-372b011e45c6}:1.0", + "{70aa51b1-ce12-4e58-ba4b-a63fe443f354}:1.0", + "{6c1e9ade-9b2a-4eb8-a897-7061b9b612d8}:1.0", + "context-translator@bike-mazzell:1.0.2", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.15", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.6", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.5", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.3", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.2", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.1", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.0", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.10", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.9", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.8", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.7", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.6", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.5", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.4", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.1", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.0.0", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.11.5", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.11.4", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.11.3", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.11.2", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.5", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.6", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.4", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.2", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.8", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.1", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.9", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.0", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.15", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.3", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.9", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.11", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.8", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.12", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.11", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.13", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.9", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.10", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.8", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.5", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.1.7", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.7", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.11.1", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.10", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.7", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.24", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:3.2.12", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.11.0", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.14", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.6", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.0", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.25", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.27", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.28", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.26", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.23", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.21", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.22", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.1", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.20", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.19", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.17", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.16", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.9.18", + "{6bc05d80-9050-4bbd-a3bd-8619d4a88073}:2.10.2", + "{fb328200-6670-464c-b5c1-a1bcfa0f2ff1}:1.0", + "{c790c94e-70bf-4be0-8823-0395cee5dcdf}:1.0", + "{5e9784d5-2b96-4bc6-9ca5-4a93ca470919}:1.0", + "{a769c189-7f11-4fbc-a54d-12b0219de887}:1.0", + "{3726b61e-2fdb-4536-982f-e1f24183cf73}:1.0", + "{04254ae9-283d-4b54-8f86-286a23e96cad}:1.0", + "{62404676-5ddc-4e11-9f86-257bf16186a1}:1.0", + "test@yourdomain.com:1.0.0" + ] + }, + "schema": 1761222979698, + "key_format": "{guid}:{version}", + "stash_time": 1761244505419, + "id": "aa8925da-2330-4d24-a48e-b232e189a721", + "last_modified": 1761244587866 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "hi@sp4ceMan.xyz:2.3.9", + "hi@sp4ceMan.xyz:2.4.0", + "{2fe34fec-53fc-480c-9040-912a437c47b1}:1.1", + "websitesnotes@saveriomorelli.com:4.5.2", + "websitesnotes@saveriomorelli.com:4.5.3", + "websitesnotes@saveriomorelli.com:4.5.2.3", + "websitesnotes@saveriomorelli.com:4.5.2.2", + "websitesnotes@saveriomorelli.com:4.5.2.1" + ] + }, + "schema": 1761201386098, + "key_format": "{guid}:{version}", + "stash_time": 1761222904839, + "id": "3644e7e7-9669-4f62-b857-b9b9b3f23571", + "last_modified": 1761222979637 + }, + { + "stash": { + "blocked": [], + "unblocked": [], + "softblocked": [ + "{ce9ffe2f-ddc3-4e16-bef2-2537599c017c}:1.0", + "{ce9ffe2f-ddc3-4e16-bef2-2537599c017c}:2.0", + "{b3218f0d-71ea-44cc-b18c-916dbb2990cd}:1.0", + "{b3218f0d-71ea-44cc-b18c-916dbb2990cd}:2.0", + "{bdd02061-a669-4e16-8573-d75496d42767}:1.0", + "{bdd02061-a669-4e16-8573-d75496d42767}:1.1", + "{bdd02061-a669-4e16-8573-d75496d42767}:2.0", + "{40707e0e-27db-4769-8af8-21e4a4e41180}:1.0", + "{40707e0e-27db-4769-8af8-21e4a4e41180}:2.0", + "{3c0f33dd-3d03-4be5-a0a7-60083d979e4f}:1.0", + "{3c0f33dd-3d03-4be5-a0a7-60083d979e4f}:2.0", + "{865e591c-a50b-463b-9949-bad41c59080c}:1.0", + "{865e591c-a50b-463b-9949-bad41c59080c}:2.0", + "{992a4c6b-19c1-40ac-ab54-48282e11721e}:1.0", + "{992a4c6b-19c1-40ac-ab54-48282e11721e}:2.0", + "{aaeb138a-fe8b-4a44-9e12-10d48a06f4f7}:1.0", + "{aaeb138a-fe8b-4a44-9e12-10d48a06f4f7}:2.0", + "GRADIUS_DLP@bluemoonsoft.com:8.4.0", + "GRADIUS_DLP@bluemoonsoft.com:8.3.3", + "rapid-collector@example.com:1.0.0", + "zapelm@example.com:0.1.0", + "limes_pinker0u@icloud.com:1.4" ] }, - "schema": 1773254181779, + "schema": 1761185752145, "key_format": "{guid}:{version}", - "stash_time": 1773275705266, - "id": "13184ea8-54db-45c9-ab45-54ef4a289449", - "last_modified": 1773275784920 - }, - { - "stash": { - "blocked": [ - "{e1d7f3c5-5b0d-3c9e-8f5b-1a6f05dfe5cd}:1.4.3", - "{1da9dcfd-5725-243e-b95a-bc5fd81b7ae8}:1.1", - "{2b027387-5c86-2e99-9340-4f3b0e0b77aa}:1.0", - "{e1d7f5c2-7b0d-3c9e-8f5b-1a6f05dfe5cd}:1.4.3", - "{2b027389-2c85-7e99-9340-4f3b0e0b77aa}:1.0", - "{e1d7f3c2-8b0d-3c9e-8f5b-1a6f05dfe5cd}:1.4.3", - "{2b027387-5c85-7e99-9340-4f3b0e0b77aa}:1.0", - "{e1d7f3c3-9b0d-3c9e-8f5b-1a6f05dfe5cd}:1.4.3", - "{1da9dcfd-5729-343e-b95a-bc5fd81b7ae8}:1.1", - "{2b027387-5c87-6e99-9340-4f3b0e0b77aa}:1.0", - "{e1d7f3c3-5b0d-2c9e-8f5b-1a6f05dfe5cd}:1.4.3", - "{1da9dcfd-5529-543e-b95a-bc5fd81b7ae8}:1.1", - "{2b027387-5c89-5e99-9340-4f3b0e0b77aa}:1.0", - "{e1d7f3c3-5b0d-2c3e-8f5b-1a6f05dfe5cd}:1.4.3", - "{1da9dcfd-5525-243e-b95a-bc5fd81b7ae8}:1.1", - "{2b027387-1c39-5e99-9340-4f3b0e0b77aa}:1.0", - "{e1d7f3c5-8b0d-2c3e-8f5b-1a6f05dfe5cd}:1.4.3", - "{2b027387-1c35-3e99-9340-4f3b0e0b77aa}:1.0", - "{2b027387-1c38-3e91-9340-4f3b0e0b77aa}:1.0", - "{e1d7f3c0-5b0d-2c3e-8f5b-1a6f05dfe5cd}:1.4.3", - "{2b027387-1c32-6e91-9340-4f3b0e0b77aa}:1.0", - "ewingscott2806@outlook.com:1.0", - "{da35dad8-f912-4c74-8f64-c4e6e6d62610}:1.0.1", - "{da35dad8-f912-4c74-8f64-c4e6e6d62610}:1.1.2", - "{da35dad8-f912-4c74-8f64-c4e6e6d62610}:3.2", - "{da35dad8-f912-4c74-8f64-c4e6e6d62610}:4.0.4" - ], - "unblocked": [], - "softblocked": [ - "tabmit@thm.link:1.0.1.1", - "smart-nav-fusion@example.com:1.0.3", - "smart-nav-fusion@example.com:1.0.4", - "@rf-extension-001:2.0", - "@rf-extension-001:2.1", - "@rf-extension-001:3.0", - "@rf-extension-001:3.6", - "@rf-extension-001:3.3", - "@rf-extension-001:3.2.2", - "@rf-extension-001:3.1", - "@rf-extension-001:3.2.1", - "@rf-extension-001:3.5", - "@rf-extension-001:2.5", - "@rf-extension-001:2.2", - "grok-page-analyzer@local:1.0.0", - "grok-page-analyzer@local:1.0.1", - "grok-page-analyzer@local:1.1.1", - "grok-page-analyzer@local:1.2.0", - "grok-page-analyzer@local:1.2.1", - "grok-page-analyzer@local:1.3.0", - "tablens@local:2.1.0", - "tablens@local:2.2.0", - "tablens@local:2.3.0", - "tablens@local:2.3.1", - "tablens@local:2.3.2", - "tablens@local:2.4.0", - "tab-stereo-swap@waya:1.0", - "jcpqdstAfroSAfroMonitorIA@AfroMonitorIA.com:1.12", - "{9f7581c9-1021-4ed0-8ff3-6fb36c3f4642}:1.0", - "kbogdan@dwa.ovh:1.0", - "kbogdan@dwa.ovh:1.1", - "vis-kbogdan@dwa.ovh:1.0.1", - "vis-kbogdan@dwa.ovh:1.0.2", - "@icecatvis:1.0.0", - "{bc37c417-4bd9-4859-afcf-c588c94577a9}:1.0", - "{bc37c417-4bd9-4859-afcf-c588c94577a9}:4.0", - "{ab473c1e-2002-4db8-b85d-50dab45806b5}:4.19.3", - "kiosquepdf@perso.extension:1.7", - "casb-extension@iboss.com:1.0.0", - "casb-extension@iboss.com:1.0.21", - "stork@intel471.com:0.0.5", - "jetstream-security-browser-extension@jetstream.security:2026.3.11.15", - "jetstream-security-browser-extension@jetstream.security:2026.3.11.17", - "jetstream-security-browser-extension@jetstream.security:2026.3.11.19", - "{d02474d0-7e77-4fe2-81e9-09d0a8d9721e}:1.0", - "{9f561d6b-6b70-4ce0-9352-436e4176ac6c}:1.0", - "fmaykot@gmail.com:0.1.1" - ] - }, - "schema": 1773232582942, - "key_format": "{guid}:{version}", - "stash_time": 1773254105856, - "id": "6af6fa96-0720-451b-bacd-c047ab21fa3c", - "last_modified": 1773254181558 - }, - { - "stash": { - "blocked": [ - "{e5f641c9-a0a0-4289-972d-aa944b9d7c8c}:4.0.1", - "{e5f641c9-a0a0-4289-972d-aa944b9d7c8c}:4.0.2", - "{9480bda2-7551-4c85-a2c3-7ebf1c29c604}:1.0", - "{9480bda2-7551-4c85-a2c3-7ebf1c29c604}:12.0" - ], - "unblocked": [], - "softblocked": [ - "r11-osms-extension@nsfocus.com:1.0.5", - "maliciousurldetector@local:2.0", - "r11-osms-extension1@nsfocus.com:1.0.5", - "open-in-regular-mode@icecatmobile-extension:1.0.0", - "open-in-regular-mode@icecatmobile-extension:1.0.1", - "retire.js-pro-test@silico-industries:3.0.0", - "r11-osms-extension2@nsfocus.com:1.0.5", - "r11-osms-extension2@nsfocus.com:1.0.6", - "r11-osms-extension2@nsfocus.com:1.0.7", - "jira-ticket-creator@example.com:1.0.0", - "{c711b6ba-21a6-4551-abe8-3751a2e7d853}:1.0.2", - "{f321195d-c1b1-4241-8575-805a38c46c6d}:1.0", - "agl_2002@yahoo.es:2.0", - "agl_2002@yahoo.es:3.0", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.3", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.4", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.5", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.6", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.7", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.7.1", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.7.2", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.7.3", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.7.4", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.7.5", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.7.6", - "{6a71987b-fce3-4a81-a66f-1e058341a723}:0.8.0", - "{abbf120b-a853-4fbd-a139-7e7dcc2d3e86}:3.0", - "{abbf120b-a853-4fbd-a139-7e7dcc2d3e86}:4.0", - "{fbbf0a22-1575-406b-b25b-19a996c7fb4f}:1.1", - "{fbbf0a22-1575-406b-b25b-19a996c7fb4f}:1.12", - "{fbbf0a22-1575-406b-b25b-19a996c7fb4f}:1.13", - "{fbbf0a22-1575-406b-b25b-19a996c7fb4f}:1.14", - "{fbbf0a22-1575-406b-b25b-19a996c7fb4f}:1.15", - "{fbbf0a22-1575-406b-b25b-19a996c7fb4f}:1.17", - "tenm.a.te.s.0.3.0@gmail.com:1.0.0", - "follow.c.ow.s.1.41@gmail.com:1.0.0", - "lawanalongo.r.ia.3.37.5@gmail.com:2.0", - "nukyachingchow.d.hu.r.y1.0@gmail.com:2.0", - "mdrajumiy.a.mi.y.a0.6@gmail.com:2.0", - "darkmode@theme.toggle:1.0.0", - "vained.e.lg.e.nio@gmail.com:1.0", - "instapaper-lite@example.com:1.0", - "{1a890ea8-1b2e-4a1d-bba7-e7418ba32348}:1.0.0", - "rovalra-roblox-improveds@roblox.com:2.3.1.8", - "rovalra-roblox-improveds@roblox.com:2.3.1.9", - "{d1610f27-1505-2bd2-bca0-383a1342e2f5}:1.0", - "{7415a978-529f-4f5f-8d34-002c48d7c230}:1.0", - "{4966b2a8-d843-42f5-b803-933ac44832a2}:1.3", - "{5e3b2b4e-0e4e-46cb-8f60-f7e78f020d1f}:1.0.0", - "m8leannaholtzvtt7948@hotmail.com:1.0", - "{5b4f1d28-6d47-4418-a485-81454af8afa5}:1.3", - "zotero-connector-demo@example.com:1.0.0", - "{94c9c8f5-f49f-457b-9e0c-1617d800eaa4}:1.0", - "{ff558c82-0dba-4873-bb0c-e9d800d14fa7}:1.3", - "{a842e565-574d-4510-9a50-894d9bf9f42d}:1.0", - "{9a2177cd-a3bb-4df5-adaf-7b2130ec2558}:1.0", - "{694b92e4-67ac-47f7-91a5-eb6b7fb0e086}:1.3", - "{e84bb930-8f7c-4e37-a27a-3124ed1da959}:1.1", - "{5ff867f0-9cd9-499d-97db-83831da5ef09}:1.1", - "{f93fc7b1-72b5-40a9-8796-171536a5b80b}:1.1", - "{e734610c-2a4a-4a93-b639-f75ac1021c0e}:1.0", - "{16c4843a-f6ea-4791-a2e5-6cc0878d88f1}:3.2.2", - "{de8e3d50-f6b0-47ce-b4b7-d30705fdfebd}:1.3", - "{35190187-7d37-4dd8-89e7-99ac5cf523de}:1.3", - "{f694ca81-1d3b-4cb8-abe8-c6e62784381c}:1.0.0", - "{cf2af8f3-154c-4f44-90e1-62ebf0f1920f}:17.1", - "{74c67e89-d5d3-49f3-ae54-61c896df9056}:1.0", - "{4c9f93a7-1a5e-4e42-8b8d-cec1e1c5df91}:1.0", - "{cd56a2e8-41cb-4614-a24a-981a22241429}:1.0", - "{d1d0eb3c-69cf-406c-87c2-63431c409420}:1.0", - "{7556bb38-a4e6-4d28-9a90-85624f65c198}:1.3", - "{584066b7-b55b-4b37-93c5-19c28622d725}:1.0.0", - "etexctgvuygj@gmail.com:1.0", - "etexctgvuygj@gmail.com:100012.1.2", - "{50d36ee7-e1b6-4bb1-83bb-0029d20162ee}:1.0", - "{d6a1376f-fc6d-4e16-ab55-3507dc8eb90e}:1.0", - "{d1a14d77-81f4-4fd7-bcf5-181169f98a01}:1.3.2", - "{4fb1ddbf-123b-475e-8804-7e9fc5c3e3b8}:1.0", - "{56ef427b-e116-4be0-a067-4f89c82d06f6}:1.0", - "{502265fa-89a0-4168-9ee5-d66c47d794c0}:1.3", - "{442a75b3-4b38-4f06-a3dc-422a59404095}:1.0", - "{531d5cbb-b623-48b4-8e16-1c063b32404d}:1.3", - "translate-access@example.com:1.0", - "{5ebed567-c506-47e0-9097-b862c46fb52a}:1.0", - "{2daca86b-faa6-42a7-8770-06372ebf6e5a}:1.3", - "{4d341281-3dc3-4e67-a95a-01d66a688c58}:1.3", - "{2de539a5-4cb5-43e1-9d27-7b135b015a5a}:1.0", - "{2e51cfe9-67ce-4dc7-bca6-40770b37dadd}:1.0", - "{689b7cd6-1ca0-4191-9b7e-ee38fa92596f}:20.21", - "{b79f9d0d-d0cf-4376-a0a6-f6a89d5a6023}:1.17.5", - "{78494894-95d9-4d39-89ed-d9c266a1a73d}:1.0", - "{4104dd51-5610-49c5-bd8e-1dffffaa8a36}:2.2.6", - "{5937c215-bc17-4e16-9016-a697275b63d9}:1.2", - "{7bb6a1a3-20a5-46bf-9223-69ba6b172f76}:1.6.6", - "{fc590778-0707-4985-9fa5-3af8e966869e}:1.2.5", - "{83bf0333-6848-4579-896d-abebc9691c47}:8.12.2", - "hoangthiennhan2005@gmail.com:1.0", - "{73eecc15-a4b1-4795-a1db-d12dec808b1d}:0.1.6", - "{1a40da5b-cfad-49bd-a001-683e6ab28128}:0.5.6", - "{bd366185-92e4-4eca-a28e-2ff4b59c1764}:1.0.2", - "{73a0d6ac-2f68-4276-8396-4d59733c7901}:0.0.160", - "{48d6a9ae-d443-42ab-956e-e4c496096684}:0.0.7", - "{ae966e16-eed5-4759-80ae-f9eb69d32832}:1.1.3", - "grokrealai@elon.org:1.0", - "grokrealai@elon.org:1.1", - "grokrealai@elon.org:1.11", - "grokrealai@elon.org:1.15", - "grokrealai@elon.org:1.16", - "grokrealai@elon.org:1.161", - "{e0a84eeb-ffab-4082-afa9-a9ca3118bcdc}:0.2.12", - "{8100aa11-82eb-4cda-9d1f-0f08028e6821}:0.5rc2", - "{6eb46f14-89b8-4d71-86d9-05ee12508f5b}:3.0.5", - "{4a9c7767-8f5c-4729-8f66-c046b2ec1ceb}:1.0", - "{4a9c7767-8f5c-4729-8f66-c046b2ec1ceb}:4.0", - "{4a9c7767-8f5c-4729-8f66-c046b2ec1ceb}:5.0", - "{4077aa9d-b853-4913-8e32-27ef408d4c82}:3.0.3", - "{6ed01012-2f59-4180-9934-5e58bc55dafd}:1.0", - "{45cc0274-de6a-4abc-b53f-6e99e538c269}:1.0", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:1.0.4", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:1.0.5", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:1.0.6", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:1.0.8", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:1.2.0", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.0.0", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.1.0", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.2.0", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.2.1", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.2.2", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.3.0", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.3.2", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.3.3", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.3.4", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.3.5", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.4.0", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.4.1", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.4.2", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.4.3", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.4.4", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.4.6", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.4.7", - "{c21fc023-a8aa-4109-bdf3-65238b8f2731}:2.5.0", - "{7e0dede5-c720-43a5-b2c3-b026a840a8d1}:0.9.3", - "{c180dd8b-ae49-41c1-8642-25ab4ed27083}:1.0", - "{4a61c54d-d17b-4be7-b0eb-8170d86bc733}:11.1", - "{7917c4c9-c063-437a-9d29-99dc986689ff}:1.0.4.4", - "{91388be6-03b9-4863-89a5-72e1138ea0eb}:1.0", - "{e4db92bc-3213-493d-bd9e-5ff2afc73da6}:1.4.45", - "{7917c4c9-c062-427a-9d29-15dc676686ef}:1.0.4.4", - "{9876f136-351a-4791-8c72-9effb048e085}:1.2.0", - "save-extension@omnivore.app:0.1.14", - "save-extension@omnivore.app:0.1.18", - "save-extension@omnivore.app:0.1.24", - "save-extension@omnivore.app:0.1.26", - "save-extension@omnivore.app:0.1.28", - "save-extension@omnivore.app:2.0.1", - "save-extension@omnivore.app:2.0.2", - "save-extension@omnivore.app:2.0.4", - "save-extension@omnivore.app:2.2.0", - "save-extension@omnivore.app:2.2.1", - "save-extension@omnivore.app:2.4.0", - "save-extension@omnivore.app:2.4.4", - "save-extension@omnivore.app:2.6.1", - "save-extension@omnivore.app:2.6.2", - "save-extension@omnivore.app:2.8.9", - "save-extension@omnivore.app:2.10.0", - "{53cad060-05d9-4064-a562-69532daddc84}:1.0", - "{53cad060-05d9-4064-a562-69532daddc84}:1.2", - "{53cad060-05d9-4064-a562-69532daddc84}:1.3", - "{53cad060-05d9-4064-a562-69532daddc84}:1.4", - "{53cad060-05d9-4064-a562-69532daddc84}:1.5", - "{53cad060-05d9-4064-a562-69532daddc84}:1.6", - "{53cad060-05d9-4064-a562-69532daddc84}:1.7", - "{53cad060-05d9-4064-a562-69532daddc84}:1.8", - "{53cad060-05d9-4064-a562-69532daddc84}:1.9", - "{53cad060-05d9-4064-a562-69532daddc84}:2.0", - "{53cad060-05d9-4064-a562-69532daddc84}:2.1", - "{53cad060-05d9-4064-a562-69532daddc84}:2.2", - "{53cad060-05d9-4064-a562-69532daddc84}:2.3", - "{53cad060-05d9-4064-a562-69532daddc84}:2.4", - "{53cad060-05d9-4064-a562-69532daddc84}:2.5", - "{53cad060-05d9-4064-a562-69532daddc84}:2.6", - "{53cad060-05d9-4064-a562-69532daddc84}:2.7", - "{53cad060-05d9-4064-a562-69532daddc84}:2.9", - "{53cad060-05d9-4064-a562-69532daddc84}:3.0", - "{53cad060-05d9-4064-a562-69532daddc84}:3.1", - "{53cad060-05d9-4064-a562-69532daddc84}:3.2", - "{53cad060-05d9-4064-a562-69532daddc84}:3.3", - "{53cad060-05d9-4064-a562-69532daddc84}:3.4", - "{53cad060-05d9-4064-a562-69532daddc84}:3.5", - "{53cad060-05d9-4064-a562-69532daddc84}:3.6", - "{53cad060-05d9-4064-a562-69532daddc84}:3.7", - "{53cad060-05d9-4064-a562-69532daddc84}:3.8", - "{53cad060-05d9-4064-a562-69532daddc84}:3.9", - "{53cad060-05d9-4064-a562-69532daddc84}:4.0", - "{53cad060-05d9-4064-a562-69532daddc84}:4.1", - "{53cad060-05d9-4064-a562-69532daddc84}:4.2", - "{53cad060-05d9-4064-a562-69532daddc84}:4.3", - "{53cad060-05d9-4064-a562-69532daddc84}:4.4", - "{53cad060-05d9-4064-a562-69532daddc84}:4.5", - "{53cad060-05d9-4064-a562-69532daddc84}:4.6", - "{53cad060-05d9-4064-a562-69532daddc84}:4.7", - "{53cad060-05d9-4064-a562-69532daddc84}:4.8", - "{53cad060-05d9-4064-a562-69532daddc84}:4.9", - "{53cad060-05d9-4064-a562-69532daddc84}:5.0", - "{53cad060-05d9-4064-a562-69532daddc84}:5.1", - "{53cad060-05d9-4064-a562-69532daddc84}:5.2", - "{53cad060-05d9-4064-a562-69532daddc84}:5.3", - "{53cad060-05d9-4064-a562-69532daddc84}:5.4", - "{53cad060-05d9-4064-a562-69532daddc84}:5.5", - "{53cad060-05d9-4064-a562-69532daddc84}:5.6", - "{53cad060-05d9-4064-a562-69532daddc84}:5.7", - "{53cad060-05d9-4064-a562-69532daddc84}:5.8", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.1", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.2", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.3", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.4", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.5", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.6", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.8", - "{53cad060-05d9-4064-a562-69532daddc84}:5.9.9", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.1", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.2", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.3", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.4", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.5", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.6", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.7", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.8", - "{53cad060-05d9-4064-a562-69532daddc84}:6.0.9", - "{53cad060-05d9-4064-a562-69532daddc84}:6.1.0", - "{53cad060-05d9-4064-a562-69532daddc84}:6.1.1", - "{53cad060-05d9-4064-a562-69532daddc84}:6.1.2", - "{53cad060-05d9-4064-a562-69532daddc84}:6.1.3", - "{53cad060-05d9-4064-a562-69532daddc84}:6.1.4", - "{53cad060-05d9-4064-a562-69532daddc84}:6.1.5", - "google-ua-search@avtoforex.ru:1.0", - "google-ua-search@avtoforex.ru:1.1", - "google-ru-search@avtoforex.ru:1.0", - "google-ru-search@avtoforex.ru:1.1", - "debug@ninja-cookie.com:0.2.4", - "debug@ninja-cookie.com:0.2.6", - "debug@ninja-cookie.com:0.2.7", - "debug@ninja-cookie.com:0.4.0", - "debug@ninja-cookie.com:0.5.2beta", - "debug@ninja-cookie.com:0.5.2", - "debug@ninja-cookie.com:0.5.3", - "debug@ninja-cookie.com:0.5.4", - "debug@ninja-cookie.com:0.5.5", - "debug@ninja-cookie.com:0.5.6", - "debug@ninja-cookie.com:0.6.0", - "debug@ninja-cookie.com:0.6.1", - "debug@ninja-cookie.com:0.6.2", - "debug@ninja-cookie.com:0.6.3", - "debug@ninja-cookie.com:0.7.0", - "{1b3439ed-00f6-4d28-b7f6-587a109e167f}:1.1", - "{1b3439ed-00f6-4d28-b7f6-587a109e167f}:1.2", - "{429214d0-ba0a-42e0-b09b-6c7dfb829e66}:1.0", - "{429214d0-ba0a-42e0-b09b-6c7dfb829e66}:2.0", - "{8c3335ad-053d-472c-8dbd-b7f318a2e545}:1.0", - "{8c3335ad-053d-472c-8dbd-b7f318a2e545}:2.0", - "{cfcb8fdd-e517-4bf3-990f-45ccd31a3ea3}:1.0", - "{cfcb8fdd-e517-4bf3-990f-45ccd31a3ea3}:2.0", - "{059befdf-8453-432b-b308-13347f60e482}:1.0.0", - "{059befdf-8453-432b-b308-13347f60e482}:1.0.1", - "{059befdf-8453-432b-b308-13347f60e482}:1.0.3", - "{059befdf-8453-432b-b308-13347f60e482}:1.0.4resigned1", - "emailthis@emailthis.me:1.0.6", - "emailthis@emailthis.me:1.1.0", - "emailthis@emailthis.me:1.2.1", - "emailthis@emailthis.me:1.5.0", - "emailthis@emailthis.me:2.0.0", - "emailthis@emailthis.me:2.1.0", - "emailthis@emailthis.me:2.5.0", - "emailthis@emailthis.me:2.5.1", - "emailthis@emailthis.me:2.5.2", - "emailthis@emailthis.me:2.5.3", - "emailthis@emailthis.me:2.5.4", - "emailthis@emailthis.me:2.5.5", - "emailthis@emailthis.me:2.6", - "emailthis@emailthis.me:2.6.1", - "emailthis@emailthis.me:2.6.2", - "@detrumpify:1.1.15", - "@detrumpify:1.1.25", - "@detrumpify:1.1.31", - "@detrumpify:1.1.33", - "@detrumpify:1.1.37", - "@detrumpify:1.1.39", - "@detrumpify:1.1.41", - "@detrumpify:1.2.1", - "@detrumpify:1.2.5", - "@detrumpify:1.2.6", - "@detrumpify:1.2.7", - "@detrumpify:1.2.10", - "@detrumpify:1.2.11", - "@detrumpify:1.2.12", - "@detrumpify:1.2.13resigned1", - "@detrumpify:1.4.0", - "@detrumpify:1.4.1", - "@detrumpify:1.4.2", - "qrscaner@laobubu.net:1.2.3", - "qrscaner@laobubu.net:1.2.4resigned1", - "{af0b21e9-d1e3-4964-80f2-34c55178e20f}:1.0.901", - "{a75e6a54-6a05-4dae-bffd-31e183a57a0f}:1.0", - "{dd7b7605-77e8-4d09-93fc-34efea12e12f}:1.0.0", - "{0aad18d9-ec25-4f39-acca-d9d21ecbc7a1}:1.0.1", - "{2c899d0c-2c21-12df-301c-91cf23cc73af}:1.3.0", - "{7e6d7094-cc01-49c0-a39c-8365f891ce59}:1.0", - "{ae5fbfa7-de4b-4a69-9146-fec7a60a7afd}:1.0", - "{f86db7e3-ac2b-44ae-a7eb-139e0233ffb1}:1.0", - "{62a93546-9a5f-4091-b3e2-aaaece2f02d8}:1.0", - "{346e9088-3f42-46d6-99b3-8df3e53af856}:1.0", - "{cd53cd35-78ab-4281-9e71-24c1088fa857}:1.0", - "{35c02bd3-532a-5303-3129-c1e5ba8065a2}:0.1.7", - "{1a3dbd16-6378-48ed-92ad-7bc58c80bec6}:1.0", - "{8c68f1d7-6ae5-42f4-977d-29a81c50b8b4}:1.0", - "{b5498e71-9960-4a4e-962c-ae75bcb65656}:1.0", - "{73908e0d-e48b-4002-80e6-096648257dd7}:1.0", - "{bc738228-baf0-4515-8cbc-a13cc3dedf5d}:1.0", - "{61f4c600-1e4f-438b-8972-858cc2c85eb4}:1.0", - "{860336fe-de91-4f5c-a609-9631759b3b21}:1.1", - "{5c3e5d0f-4202-4f1a-8295-e350bc439a58}:1.1", - "{93883955-d749-48ad-95af-5d421570d074}:1.0", - "{572b9c4a-5c5c-484b-8134-be987c845f2c}:4.10.8", - "{6dce0583-b36f-4b46-85ea-d47a11607f65}:1.0", - "{daa169ee-e59a-4681-ad52-27f3c22faaa6}:1.0", - "{c39221f3-a66b-4e5f-b0f6-a5add63ae20a}:1.0", - "textsnippet@local:1.0.0", - "{161dd607-49e9-493f-9c0e-d2e3203088df}:0.0.2", - "{a4bdbeea-b386-4d3d-b7a3-d071836107e7}:1.0.4", - "{a4bdbeea-b386-4d3d-b7a3-d071836107e7}:2.0.4", - "{459beb97-fda1-496f-a76c-4e23da23c73a}:0.5.10", - "{8c28dee9-2411-4c04-8b38-a4738c87d599}:3.2.5", - "{dbb4871f-a0c9-4719-96fe-576f4b285bee}:1.0", - "word_counter@addon.dev:1.0", - "text_highlighter@addon.dev:1.0", - "tab_organizer@addon.dev:1.0", - "scroll_to_top@addon.dev:1.0", - "screenshot_saver@addon.dev:1.0", - "quick_translator@addon.dev:1.0", - "link_collector@addon.dev:1.0", - "dark_mode_toggler@addon.dev:1.0", - "copy_all_images@addon.dev:1.0", - "auto_refresh@addon.dev:1.0", - "liquidrechner@vape-laden.de:1.0", - "video_downloader@addon.dev:1.0", - "price_tracker@addon.dev:1.0", - "page_saver@addon.dev:1.0", - "form_autofill@addon.dev:1.0", - "dom_reader@addon.dev:1.0", - "auto_clicker@addon.dev:1.0", - "ad_blocker@addon.dev:1.0", - "{d0a6ae5a-c8f8-46b6-8c78-3c3cbd8dc721}:1.9", - "{e1a36dd4-8154-441b-93f2-d54f9b4b1cf1}:1.0.3", - "{13182346-f2de-4679-ad53-0aa6501096d7}:1.3", - "{b6e1002c-2f2d-451d-bc9f-ac9384d269d4}:1.1.3", - "{beb69697-e473-4890-81d4-a8d7fa04663a}:0.0.4", - "{11326f80-490e-43e7-999c-9971f1916cbc}:2.2", - "{0f809676-9559-4d52-97d6-4a108d6bd172}:17.1", - "{813fa099-989f-4a31-8859-27b7ea30e194}:9.0.0", - "{117309d7-d06b-479b-8219-0f1d613844f0}:0.3.6", - "{202caebd-c34f-4575-88b0-76f215928615}:3.4.0", - "{7dd178ee-4a1e-4901-9531-0a44dae8c5c8}:1.0", - "{b2df2358-0233-49f6-9d88-0612a1042c43}:0.4.4", - "{0ec2f240-c789-46be-a520-e32752e9102d}:1.2.2", - "{94ab377d-196e-4777-9df3-619791bbcd27}:1.1", - "{e9ac6eca-a3e4-4a66-9790-4d5c3a73a0d1}:1.0", - "{976140d2-ddb3-10bb-1625-bc6d5480e820}:6.6.0", - "{d783f75c-4d96-404b-9670-4497d4c58625}:1.3", - "{97174c54-3567-445a-9e8f-68ff52aac088}:2.6.14", - "{e8cba98a-845a-4e8b-8eef-58e725d843c1}:1.3", - "{7536cf64-c87c-40bc-97b1-9b6bb4b9e7f0}:1.0", - "{0e684e3c-d549-408a-9550-91575bd01166}:1.1", - "hello@juicysearch.com:1.0", - "{197be075-cb1a-4e94-bcd8-4469e88b46cb}:1.0", - "{f65b5119-7bb5-41d0-9539-ef28c09ede4e}:1.0", - "{8235d0cb-84f5-4bb3-a8c5-f7fb573547a8}:1.0", - "{ca911399-18d6-437f-86e4-b457b5888eeb}:3.0.5", - "{15fde5ed-825b-4934-bf7a-00e1b17258a9}:0.3.0", - "{ef17f45a-45d8-48e2-a756-c1aacb32980b}:1.2.2", - "{d5737b5b-cc4c-4bc9-bf42-a18f15efb106}:20.21", - "{d371b7fd-77b5-437a-9bde-72d67fa81cad}:1.1", - "{20763523-d836-42ae-96a0-487b3985979a}:1.2.0", - "{73048ab9-7b71-4c0d-81d8-a8cf75221626}:3.2.0", - "{fc1746d7-d76f-42a0-a0b5-87e2ba5b155d}:1.1.6", - "{569d32da-df21-49f1-be37-0649237866b3}:0.0.4", - "{027c0f65-43fa-4b69-863a-18af6b57930a}:0.3.1", - "{c4c835ad-9ba7-4084-83f6-119c7ff1950b}:1.0", - "{4b5bc216-47e9-4ab4-9ca8-2405a3cf5316}:1.0", - "{f182a358-eb6b-42cc-bb3f-db5a3cffc12d}:1.0", - "{8696ede8-88d9-423d-84fc-f9f555e12ace}:1.0.0", - "{d862fb52-1d01-42a0-ba98-0f29d974b98a}:1.0", - "{b20380d1-7f0a-4d9b-a70f-9fef15fba238}:1.0", - "{2e137d48-0dab-4d33-8bd2-40b7f7a2f502}:1.0", - "{68480e4c-f1d2-44d6-8e70-b60533db98fe}:2.11.7", - "{a599c3ad-9835-4279-80b9-a9ae3b572809}:3.0", - "{db0a53ac-6b15-4cdb-a79d-a449fd630ba6}:4.0", - "{736ed245-4282-4e8b-9ff2-88a1a618afae}:1.0", - "{e05c2fc0-6bcd-4a2f-84c5-a6bff5be36a0}:1.0", - "{e05c2fc0-6bcd-4a2f-84c5-a6bff5be36a0}:2.0", - "{76269c3c-3f1c-4c8a-8f3a-2ad84ec521fe}:1.0", - "{76269c3c-3f1c-4c8a-8f3a-2ad84ec521fe}:2.0", - "{76269c3c-3f1c-4c8a-8f3a-2ad84ec521fe}:3.0", - "{76269c3c-3f1c-4c8a-8f3a-2ad84ec521fe}:4.0", - "{76269c3c-3f1c-4c8a-8f3a-2ad84ec521fe}:5.0", - "{0a5e0dd4-bd84-46f2-a51b-82af5910ddab}:1.0", - "{0a5e0dd4-bd84-46f2-a51b-82af5910ddab}:2.0", - "{43d9c736-6749-4207-a641-f6b2c2b8ce2b}:1.0", - "{43d9c736-6749-4207-a641-f6b2c2b8ce2b}:2.0", - "{4146fab4-22cd-4133-848b-89cceb8ee567}:1.0", - "{4146fab4-22cd-4133-848b-89cceb8ee567}:2.0", - "{bed64216-6b0c-4f65-99bc-58d22d96979e}:1.2.0", - "{756ddd25-369f-4cb6-825a-fb6530e97c62}:20.21", - "{8dace71d-2cdd-4b48-b5e7-54311bd25e2c}:0.5.2", - "{df262384-a57e-485e-9673-37bd7b29558a}:1.3.9", - "{6fcdeb3c-9886-4a1d-a17a-e892d5b5272a}:2.2.3", - "{8ec9ebcf-a4c8-4db4-b6f2-1996ab8b152b}:1.0", - "{58f41af7-c4e1-41d8-b4d4-5c7dcfb0cbda}:1.0", - "{4c67b73d-a68f-4158-aed5-27fa85601d85}:1.0", - "{c69fd7c4-9486-4438-ab19-55591ea1d389}:1.0", - "{b4eaeb3b-df45-4545-8f43-56c8b7fab873}:1.0", - "{df447403-1ea5-4a66-853c-0d9319ee7c90}:1.0", - "{1a76435d-1ebe-4285-bbba-64e6b8d37102}:1.0", - "{593dd77b-a88f-4bf1-babe-86b8fb2107fa}:1.0", - "{6569a0ba-63a9-4100-bae8-66d951951675}:1.0", - "{6569a0ba-63a9-4100-bae8-66d951951675}:1.1", - "{6569a0ba-63a9-4100-bae8-66d951951675}:1.2", - "{8c835d25-b168-43c2-ae82-8cf14d06583e}:1.0", - "{98f2ab26-0215-47c2-90d7-7b391eaa42ce}:1.0", - "{a0c9222a-ff53-4384-9688-75ef2341640a}:0.1.2", - "{0c16450f-57ea-48d2-9379-927d6cb1cf8e}:1.2.0", - "{1675109c-6702-42da-bcf2-d624058f460b}:1.0.4", - "{017328fc-da0d-1b06-aada-21db237f6b8c}:1.2.9", - "{758c1c8c-d910-458a-9684-6eabaa79305c}:1.0", - "{037328fc-da0d-1b06-aada-28db297f3b8c}:1.2.9", - "{66931440-6270-4599-a496-9f645c636248}:1.1.0", - "{227ed318-ee70-43b4-b451-553f8f74aeb9}:1.0", - "{370ed4e3-ac1a-4f4e-9527-81d86425581f}:1.0", - "{fc2c4b4b-4e41-43e8-b2d0-3f25f170c0b6}:1.0", - "{026fd124-9e18-4a36-b9bf-9be7e2b2aa81}:1.1.1", - "{026fd124-9e18-4a36-b9bf-9be7e2b2aa81}:1.2.1", - "{621a3f94-7d24-4cf9-99d7-f6a614af1d8c}:1.0", - "{38181aff-35f9-493a-94d7-a6ba6053ca06}:1.0", - "{97af8556-2913-4689-9073-dc3bdea5a3ee}:1.0", - "{0dd042f3-383b-4cbc-9fe4-0edc8391ba2f}:1.0", - "{c032597d-6f1b-4a1a-b087-c6da7263ff06}:5.0", - "{98c0209b-54e5-4044-a866-fe3b4a505b34}:1.0", - "{2ccdd7b9-df4c-40da-bd34-d96f2d5daf42}:1.0", - "{a5c6dd05-b2bf-406d-ab89-1126d6ac2706}:1.0", - "{1413d780-c6f3-48c9-a1f9-6f77bf7a79f7}:1.0", - "{c311f0fa-20aa-4aa9-8187-2d72c482e32c}:1.0", - "{cdecc213-ff28-404c-8b6c-5eac4bf42f59}:1.0", - "{7220e740-7a03-4ff3-8d9f-c3664d02ab82}:1.0", - "{a2fd25fd-95c5-455c-8bbf-bb8dfc1cc838}:1.0", - "{cf1c6bc9-056a-4367-9d62-593062b7ce3e}:1.0", - "google-ukraine-search@avtoforex.ru:1.0", - "google-russian-search@avtoforex.ru:1.0", - "{b42001d2-ed90-4d36-88ad-4a4b8262a1fb}:1.0", - "{da520567-c5b0-4496-8317-698c96778f52}:1.0", - "{eefb374b-ea77-47a1-bb1b-bd5758569056}:1.0", - "{fc947fe5-ee9b-4642-8837-c40cc00d60c0}:1.0", - "{b9ddfa6d-fb38-47a6-8cf2-8d1044540a1f}:1.0", - "{b9ddfa6d-fb38-47a6-8cf2-8d1044540a1f}:2.0", - "{9f5315ab-8d78-4f25-a135-e2d93840596f}:1.0", - "{9f5315ab-8d78-4f25-a135-e2d93840596f}:2.0", - "{b3c1725e-d1e2-4859-ae6d-74aa91ff2e86}:1.0", - "{b3c1725e-d1e2-4859-ae6d-74aa91ff2e86}:2.0", - "{a40223e3-b109-4414-a210-a02b8273fabf}:1.0", - "{a40223e3-b109-4414-a210-a02b8273fabf}:2.0", - "{79c7699f-33d0-4b2e-b9c9-b51c395be8cd}:1.0", - "{79c7699f-33d0-4b2e-b9c9-b51c395be8cd}:2.0", - "{57308a02-d0fd-4596-8bad-1f7f4b766337}:1.0", - "{57308a02-d0fd-4596-8bad-1f7f4b766337}:2.0", - "{ef3dccb3-68cb-4760-8b29-8c3f21b5a207}:1.0", - "{ef3dccb3-68cb-4760-8b29-8c3f21b5a207}:2.0", - "{72f79675-3bd3-4920-afdd-281fb38b371e}:1.0", - "{72f79675-3bd3-4920-afdd-281fb38b371e}:2.0", - "{40c27e0d-9095-4231-bf2c-f614deee1d92}:1.0", - "{40c27e0d-9095-4231-bf2c-f614deee1d92}:2.0", - "{a1d620ba-020b-4946-8aa7-3348da741853}:1.0", - "{a1d620ba-020b-4946-8aa7-3348da741853}:2.0", - "{ec9860af-b219-4c8f-b19f-5039ed3af057}:1.0", - "{ec9860af-b219-4c8f-b19f-5039ed3af057}:2.0", - "{4688de68-87c3-4f53-abbf-8a4036c02a45}:1.0", - "{4688de68-87c3-4f53-abbf-8a4036c02a45}:2.0", - "{6bdc68ad-0487-4329-8269-74d1f76ed2c8}:1.0", - "{6bdc68ad-0487-4329-8269-74d1f76ed2c8}:2.0", - "extension@tokentrace.ai:0.2.0" - ] - }, - "schema": 1773210981190, - "key_format": "{guid}:{version}", - "stash_time": 1773232505366, - "id": "36815198-fa0b-4085-8742-ce36f59d6b2d", - "last_modified": 1773232582756 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{648bdc74-94c6-4196-8789-d5947268867c}:6.4", - "{648bdc74-94c6-4196-8789-d5947268867c}:6.3", - "{648bdc74-94c6-4196-8789-d5947268867c}:6.2", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.3", - "jcpqdstAfroSAfroMonitorIA@AfroMonitorIA.com:1.10", - "jcpqdstAfroSAfroMonitorIA@AfroMonitorIA.com:1.11", - "{648bdc74-94c6-4196-8789-d5947268867c}:6.5", - "fc-automation@your-domain.com:1.0.0", - "ighwopefe09rgueoprjvhkehvlwcjeourfeiojhrgkjegfkdsjdkclnediufv@netflix.com:1.3", - "redirector@antigravity.test:1.1", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.0", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.1.1", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.2", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.2.1", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.2.2", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.2.3", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.2.4", - "{4b206acb-c849-4621-98eb-17514c8ee814}:1.3.1" - ] - }, - "schema": 1773189384048, - "key_format": "{guid}:{version}", - "stash_time": 1773210905426, - "id": "fa6769e4-cb66-4209-8528-b7f23bac369f", - "last_modified": 1773210981015 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "redirector@antigravity.test:1.0", - "ig2@softgarden.com:1.1", - "{648bdc74-94c6-4196-8789-d5947268867c}:6.0", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.8", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.7", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.6", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.5", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.4", - "{648bdc74-94c6-4196-8789-d5947268867c}:5.9", - "{648bdc74-94c6-4196-8789-d5947268867c}:6.1" - ] - }, - "schema": 1773167793961, - "key_format": "{guid}:{version}", - "stash_time": 1773189305894, - "id": "abf0604c-3572-48e6-a0bd-fbe543947a92", - "last_modified": 1773189383806 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{f5a9c8d2-1b3e-4f7a-9c0d-2e8b4a6f1c3d}:1.0.0", - "{f5a9c8d2-1b3e-4f7a-9c0d-2e8b4a6f1c3d}:1.1", - "{79875c40-ed9d-481a-a274-929daf40717d}:3.2.1", - "foxyflag@zeneka.org:1.0.0", - "camcookie@addon:1.0.0", - "camcookie@addon:1.1.0", - "{a1b2c3d4-e5f6-7890-abcd-ef1234569000}:1.0.32", - "site-specific-locales@hmpf.org:1.0.0", - "totp@mo:1.2.11", - "{84df0e81-9114-4f04-b73a-2fb009304f11}:2.0", - "gblock@V2.2:2.2", - "{1d2907cc-29ff-43b1-a385-be481f6a0f1d}:1.0", - "testlakshitha.k@koreanspa.lk:3.2", - "camcookie-internet@addon:2.0.0" - ] - }, - "schema": 1773146203926, - "key_format": "{guid}:{version}", - "stash_time": 1773167706441, - "id": "f5402580-136f-4e2d-bdc5-6f81f43e970f", - "last_modified": 1773167793738 - }, - { - "stash": { - "blocked": [ - "{6d8a7c1b-9e2f-4c3d-8a0b-56789abcdef0}:1.2.1", - "live-football-scores@live-scores.com:1.0.0", - "live-football-scores@live-scores.com:1.3.0", - "live-football-scores@live-scores.com:1.4.5", - "{61e29143-5399-4f66-ba2a-2cc3e5f8c91b}:1.1.2", - "{61e29143-5399-4f66-ba2a-2cc3e5f8c91b}:1.8.0", - "promptvault-ai@local:1.0.0", - "promptvault-ai@local:1.3.0" - ], - "unblocked": [], - "softblocked": [ - "keepteamsawake@samvdb.dev:1.0.2", - "evetting-autofill@syafiq:1.0.2", - "arek.moga@gmail.com:6.9.998", - "arek.moga@gmail.com:6.9.7", - "r11-osms-extension@example.com:1.0.5", - "abcdra.localchosht.interceptor@example.com:1.1", - "{3e6d89e9-a95a-4fd8-b6e2-9d2fbef694df}:3.2", - "yt-list-view@local:1.2.5", - "beamng-manager-bridge@local:0.1.0", - "beamng-manager-bridge@local:0.1.1", - "beamng-manager-bridge@local:0.1.2", - "pl-en@magnus:1.3.1", - "pl@magnus:1.0.0" - ] - }, - "schema": 1773124592909, - "key_format": "{guid}:{version}", - "stash_time": 1773146107304, - "id": "909c6348-a306-41f0-bc6a-bb7e7e669d00", - "last_modified": 1773146203757 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{c8c4532b-56b9-4cbd-8dcd-ff2ddc333f34}:1.0", - "{caeb485e-8070-4520-8262-8ef288a3e35f}:5.12" - ] - }, - "schema": 1773102982579, - "key_format": "{guid}:{version}", - "stash_time": 1773124506304, - "id": "27d51109-3f2e-4e11-978d-43993e39d8e6", - "last_modified": 1773124592745 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "image-downloader@ozler365:16.0", - "{a24981ef-d744-48a9-b72c-92d93e6fdc59}:1.0.1", - "ton-extension@local:0.7.1", - "imap-mail-notifier@moz-addon.com:1.0", - "imap-mail-notifier@mzf-addon-self.com:1.0", - "enhancer@goldenfox.com:21.1.5" - ] - }, - "schema": 1773081398515, - "key_format": "{guid}:{version}", - "stash_time": 1773102905994, - "id": "bfc6cbe9-8d90-471d-9e6c-34766c14ea0f", - "last_modified": 1773102982384 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "support@astec.de:0.2", - "support@astec.de:0.1", - "arek.moga@gmail.com:6.9.99", - "recup-cairn@ekvidi:0.5", - "recup-cairn@ekvidi:0.6", - "recup-cairn@ekvidi:0.7", - "recup-cairn@ekvidi:0.8", - "recup-cairn@ekvidi:0.8.1", - "recup-cairn@ekvidi:0.8.2", - "regis-browser-history@ekvidi:0.1", - "regis-browser-history@ekvidi:0.2", - "regis-browser-history@ekvidi:0.3", - "regis-browser-bookmark@ekvidi:0.1", - "regis-browser-bookmark@ekvidi:0.2", - "admin@grossegger.com:2.20.1.1", - "{b88626de-9de8-445f-8ccf-1d6ea2177b00}:2.15.0", - "{fbb9ebcc-eaae-4a16-81d0-1ae0546418d3}:2.15.0", - "__newtabpageWork@vitaliy.com:2025.6.15", - "umpa@wac.it:1.3.0", - "kontenmanager@gmx.de:2026.0.3.2", - "kontenmanager@gmx.de:2026.0.3.3", - "kontenmanager@gmx.de:2026.0.3.4", - "fb-link-finder@hocgiahd:2.0", - "fb-link-finder@hocgiahd:2.1", - "znuny-scheduler@extension:1.3", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.2", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.3", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.4", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.5", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.6", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.7", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.8resigned1", - "{a39f3865-747c-4281-8efc-b609f869b6e8}:1.9", - "arbeitszeit@fiori-extension:1.0.11", - "arbeitszeit@fiori-extension:1.0.10", - "arbeitszeit@fiori-extension:1.0.5", - "arbeitszeit@fiori-extension:1.0.6", - "arbeitszeit@fiori-extension:1.0.7", - "arbeitszeit@fiori-extension:1.0.8", - "neurai-sign@neuraiproject.org:0.7.2", - "{cf973959-6dc8-4f27-b708-1273f75d81c3}:1.0", - "{cf973959-6dc8-4f27-b708-1273f75d81c3}:2.0", - "chzzk-auto-log-power@personal.extension:1.2", - "{fa2aefc7-8f1d-45f5-a565-2e752d256937}:1.0", - "gitlab-mr-manager@ds-in.net:1.2.1", - "gitlab-mr-manager-v2@ds-in.net:1.2.1" - ] - }, - "schema": 1773059783495, - "key_format": "{guid}:{version}", - "stash_time": 1773081306821, - "id": "5fe260b7-d5c1-43af-b0cb-96159627ebe1", - "last_modified": 1773081398348 - }, - { - "stash": { - "blocked": [ - "Michaelvwzmbtvkro0@gmail.com:1.0", - "safe-kids-guard@safekidsprotection.com:12.34.4", - "safe-kids-guard@safekidsprotection.com:12.34.5", - "{115f6ebb-5ae1-440c-a36a-6d802477c174}:1.0.4", - "{115f6ebb-5ae1-440c-a36a-6d802477c174}:109.0.1", - "{a3533a30-fbb7-4e7a-8e0a-ea218b72b110}:1.2", - "{a3533a30-fbb7-4e7a-8e0a-ea218b72b110}:11.0", - "{858d3893-eaa3-40f1-bbe8-64d8313badb5}:1.0", - "{858d3893-eaa3-40f1-bbe8-64d8313badb5}:101.1", - "{d72054b0-6a75-415f-81fc-2b82b1fc8538}:1.7", - "{d72054b0-6a75-415f-81fc-2b82b1fc8538}:301.1.3", - "{9166a86e-cb9e-4130-badb-5bb9ea7e1f4a}:1.1.2", - "{9166a86e-cb9e-4130-badb-5bb9ea7e1f4a}:10.5.3", - "{eb56ed2c-2294-4b93-b250-e06e0d765ec4}:1.0", - "{eb56ed2c-2294-4b93-b250-e06e0d765ec4}:33.1", - "{bdca7478-a0c0-447f-a7fb-59583e9aff25}:1.4", - "{bdca7478-a0c0-447f-a7fb-59583e9aff25}:292.1", - "{c39c0688-9a2f-462e-8ca0-fc8bdd17714b}:1.1", - "{c39c0688-9a2f-462e-8ca0-fc8bdd17714b}:101.9", - "{3e856751-9a4f-419e-8ca0-f10374892062}:1.0", - "{3e856751-9a4f-419e-8ca0-f10374892062}:201.1", - "open-stat-block@tabtools.com:4.23.20", - "quick-move@yourdomain.com:1.0", - "dose-highlighter@yourdomain.com:1.0", - "move-refills@yourdomain.com:1.0", - "simple-hover@yourdomain.com:1.3.3", - "quick-schedule@yourdomain.com:1.2", - "@okx-qol:0.1" - ], - "unblocked": [], - "softblocked": [ - "{bb62e244-a5d9-4693-8ce4-4dbb907f0070}:1.0", - "{bb62e244-a5d9-4693-8ce4-4dbb907f0070}:2.0", - "e4a9f6f4-fcbb-41a5-bc9b-2fde1f49549c@concentric.ai:1.4.17", - "{55334281-1803-444b-914b-731e1809fc7a}:2.1", - "arek.moga@gmail.com:6.9.993", - "arek.moga@gmail.com:6.9.994", - "xdownloader@local.dev:1.4.1", - "arek.moga@gmail.com:6.9.996", - "arek.moga@gmail.com:6.9.995", - "earthlink-ticket-helper@earthlink.local:0.2.2", - "arek.moga@gmail.com:6.9.997", - "youtube-ui-fix@example.com:1.5", - "rektcaptcha-solver@local.addon:0.1.0", - "{b58044e3-bb0b-4d16-9394-4b7de4c2b41f}:1.20", - "leboncoin-export@local:1.0.0.260681006", - "lamevacerca@jlj.com:1.1", - "jacks-linkwarden@local:1.0.0", - "extrator-oitchau@hagliberto.local:9.6.0" - ] - }, - "schema": 1773038186964, - "key_format": "{guid}:{version}", - "stash_time": 1773059705368, - "id": "75389511-f21f-4882-8a43-e499fe9c934f", - "last_modified": 1773059783252 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "job2cv@jbscan.local:0.0.2", - "cluerate@cluerate.local:0.2.4", - "backlog-notifier@example.com:1.0.0", - "backlog-notifier@example.com:1.1.0" - ] - }, - "schema": 1773016580499, - "key_format": "{guid}:{version}", - "stash_time": 1773038105720, - "id": "12a6a3e9-7bdb-413b-8f12-01fe06c5a45e", - "last_modified": 1773038186695 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "secure-password-manager-pro@smashballoon.fr:1.0.0", - "secure-password-manager-pro@smashballoon.fr:2.0.0", - "secure-password-manager-pro@smashballoon.fr:2.0.1", - "invidious-redirect-jbonjean@github.com:1.9.1", - "{655ac2bb-948a-4add-99dd-bcd9fb26aa94}:1.0.0", - "{655ac2bb-948a-4add-99dd-bcd9fb26aa94}:1.0.1", - "{655ac2bb-948a-4add-99dd-bcd9fb26aa94}:1.0.2", - "{655ac2bb-948a-4add-99dd-bcd9fb26aa94}:1.0.3", - "{655ac2bb-948a-4add-99dd-bcd9fb26aa94}:1.0.4", - "{655ac2bb-948a-4add-99dd-bcd9fb26aa94}:1.0.5", - "arek.moga@gmail.com:6.9.94", - "weglot_omnitools@weglot.com:1.3", - "arek.moga@gmail.com:6.9.95", - "arek.moga@gmail.com:6.9.96", - "arek.moga@gmail.com:6.9.98", - "arek.moga@gmail.com:6.9.93", - "arek.moga@gmail.com:6.9.991", - "send-to-paperless-ngx@am9zZWY.de:1.1.2", - "send-to-paperless-ngx@am9zZWY.de:1.1.1", - "send-to-paperless-ngx@am9zZWY.de:1.1.0", - "send-to-paperless-ngx@am9zZWY.de:1.0", - "leboncoin-snapshot@local:1.0.0", - "leboncoin-snapshot@local:1.0.0.260672102", - "arek.moga@gmail.com:6.9.992", - "locale-switcher@local:1.0.0.260672300", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.23.4", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.23.7", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.24.7" - ] - }, - "schema": 1772994992827, - "key_format": "{guid}:{version}", - "stash_time": 1773016505912, - "id": "dc93a0a7-dbd0-48a3-a7ff-d63235311533", - "last_modified": 1773016580327 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "trainline-booking-remover@example.com:1.0.0", - "trainline-booking-remover@example.com:1.0.2", - "trainline-booking-remover@example.com:1.0.3", - "arek.moga@gmail.com:6.9.5", - "cheese-knife-cqc@combined:2.11.6.3", - "arek.moga@gmail.com:6.9.6", - "easyeda-downloader@joeshade.local:0.1.1", - "xpath-automator@extension:0.0.7", - "taba11y@qualityisking.co.uk:2.0", - "taba11y@qualityisking.co.uk:1.82", - "bdk-analises@bdk:4.0", - "pure-black-theme@example.com:1.0", - "pure-black-theme@example.com:1.1", - "xpathautomator@extension:0.0.7", - "arek.moga@gmail.com:6.9.8", - "arek.moga@gmail.com:6.9.9", - "arek.moga@gmail.com:6.9.91", - "{551e58b2-2a92-4711-ad5f-240db18599b3}:1.0", - "arek.moga@gmail.com:6.9.92", - "{5a898e4e-6b5c-4acf-9e29-4c791d3b5f2e}:0.13.6", - "imagefocus@basti.dev:1.0.0", - "imagefocus@basti.dev:1.0.1", - "ael2022@outlook.com:1.0" - ] - }, - "schema": 1772973382699, - "key_format": "{guid}:{version}", - "stash_time": 1772994905563, - "id": "71c47d60-1044-441f-9948-a080e4fc4909", - "last_modified": 1772994992647 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "icecat-youtube-slowdown-witch-shifter@ovasyle.com:1.5.1", - "arek.moga@gmail.com:6.9.1", - "chordify-clean@iwltechnology.github.io:1.1", - "cgm-wyszukiwarka@example.com:5.9.25", - "cgm-wyszukiwarka@example.com:5.9.24", - "cgm-wyszukiwarka@example.com:5.9.23", - "cgm-wyszukiwarka@example.com:5.9.20", - "cgm-wyszukiwarka@example.com:5.9.18", - "cgm-wyszukiwarka@example.com:5.9.17", - "cgm-wyszukiwarka@example.com:5.9.16", - "cgm-wyszukiwarka@example.com:5.9.15", - "cgm-wyszukiwarka@example.com:5.9.11", - "cgm-wyszukiwarka@example.com:5.9.10", - "cgm-wyszukiwarka@example.com:5.9.9", - "cgm-wyszukiwarka@example.com:5.9.8", - "cgm-wyszukiwarka@example.com:5.9.6", - "cgm-wyszukiwarka@example.com:5.9.5", - "cgm-wyszukiwarka@example.com:5.9.3", - "cgm-wyszukiwarka@example.com:5.9.1", - "cgm-wyszukiwarka@example.com:5.8.19", - "cgm-wyszukiwarka@example.com:5.8.18", - "cgm-wyszukiwarka@example.com:5.8.16", - "cgm-wyszukiwarka@example.com:3.4", - "cgm-wyszukiwarka@example.com:4.1", - "cgm-wyszukiwarka@example.com:4.2", - "cgm-wyszukiwarka@example.com:4.5", - "cgm-wyszukiwarka@example.com:4.11", - "cgm-wyszukiwarka@example.com:5.6", - "cgm-wyszukiwarka@example.com:5.7", - "cgm-wyszukiwarka@example.com:5.8.1", - "cgm-wyszukiwarka@example.com:5.8.4", - "cgm-wyszukiwarka@example.com:5.8.5", - "cgm-wyszukiwarka@example.com:5.8.7", - "cgm-wyszukiwarka@example.com:5.8.8", - "cgm-wyszukiwarka@example.com:5.8.9", - "cgm-wyszukiwarka@example.com:5.8.11", - "{f520d61f-63b0-4ade-afb8-95d35b17a7c2}:1.0", - "cgm-wyszukiwarka@example.com:5.9.26", - "{a1b2c3d4-e5f6-7890-abcd-ef1234569000}:1.0.21", - "arek.moga@gmail.com:6.9.3" - ] - }, - "schema": 1772951782212, - "key_format": "{guid}:{version}", - "stash_time": 1772973305276, - "id": "e3ef06eb-e454-434c-b39e-20f4c75f51e4", - "last_modified": 1772973382499 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "ytdlp-sizer@example.com:0.1.0", - "ytdlp-sizer@example.com:0.2.0", - "volume-control@balkanflavourr.icecat:1.0", - "volume-control@balkanflavourr.icecat:1.1", - "volume-control@balkanflavourr.icecat:1.2", - "youtube-quick-block@mehdi.extension:2.0", - "favory@sp4ce.pw:3.2.6", - "favory@sp4ce.pw:3.2.7", - "Linkumori.@cleanurls:10.0", - "Linkumori.@cleanurls:11.0", - "Linkumori.@cleanurls:12.0" - ] - }, - "schema": 1772930182678, - "key_format": "{guid}:{version}", - "stash_time": 1772951705687, - "id": "831090b1-f30d-4906-b1fb-b21bec65ff79", - "last_modified": 1772951782061 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "bgp-tools-context-search_personal@local.extension:1.0", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.23.1", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.23.2", - "arek.moasdga@gmail.com:3.1", - "enhancer@goldenfox.com:21.1.0", - "chzzk-personal-mod-new1@myself:1.5.0", - "info@brie.fyi:1.5.44", - "info@brie.fyi:1.5.41", - "info@brie.fyi:1.5.4", - "quiptabaddon@thelongwells.com:0.1", - "arek.moasdga@gmail.com:3.2", - "arek.moga@gmail.com:3.3", - "zentabsorter@yourdomain.com:1.0", - "zentabsorter@yourdomain.com:1.1", - "zentabsorter@yourdomain.com:1.2", - "zentabsorter@yourdomain.com:1.4", - "zentabsorter@yourdomain.com:1.5", - "zentabsorter@yourdomain.com:1.5.1", - "zentabsorter@yourdomain.com:1.7", - "zentabsorter@yourdomain.com:2.0", - "zentabsorter@yourdomain.com:2.2", - "zentabsorter@yourdomain.com:2.4", - "zentabsorter@yourdomain.com:2.6", - "zentabsorter@yourdomain.com:2.7", - "zen-tab-search@extension.example:1.0", - "zen-tab-search@extension.example:1.1", - "zen-tab-search@extension.example:1.2", - "zen-tab-search@extension.example:1.3", - "zen-tab-search@extension.example:1.5", - "zen-tab-search@extension.example:1.6", - "zen-tab-search@extension.example:1.7", - "zen-tab-search@extension.example:1.8", - "zen-tab-search@extension.example:1.9", - "zen-tab-search@extension.example:1.91", - "zen-tab-search@extension.example:1.92", - "zen-tab-search@extension.example:1.93", - "zen-tab-search@extension.example:1.94", - "zen-tab-sorter@example.com:1.2", - "arek.moga@gmail.com:3.4", - "{5f5a005a-6ec5-4461-9c8d-c2d4fb826244}:1.0", - "{5f5a005a-6ec5-4461-9c8d-c2d4fb826244}:1.1", - "{5f5a005a-6ec5-4461-9c8d-c2d4fb826244}:1.2", - "ev-toolbox@picktheodds.app:7.3.3", - "ev-toolbox@picktheodds.app:7.0.0", - "nuhuh-blocker@example.com:2.0" - ] - }, - "schema": 1772908579511, - "key_format": "{guid}:{version}", - "stash_time": 1772930105491, - "id": "cfa826a4-aa27-4bd3-b7ce-f6bcd0640dda", - "last_modified": 1772930182521 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "@social-automation-poc:0.1.0", - "@social-automation-poc:0.1.1", - "{2ac3943a-1381-4496-b7a5-b10b6121f4a2}:1.0.0", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.6", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.7", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.8", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.9", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.15.1", - "{8c739e61-4665-4b27-892a-383aea9c7c77}:1.8.2", - "{6733a00c-d723-417d-abe1-4725aa77410f}:1.4.6" - ] - }, - "schema": 1772886993622, - "key_format": "{guid}:{version}", - "stash_time": 1772908505642, - "id": "c4fc3a2e-e069-4060-bb5d-3e2ac9f4cb1e", - "last_modified": 1772908579313 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "elevenlabs-worker-v3-simple-android@local:3.0.6", - "shopee-chat-grabber@antigravity.ai:1.4.1", - "screen-timer-v1-x92k@yourname.com:1.1.1", - "kunci-order-automation@mftkhlrizal22.gmail:1.9.0", - "jason@stefanostem:1.1.0", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.4", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.1.2", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.1.1", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.1", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.6", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.8", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.9", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.10", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.11", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.13", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.15", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.2.16", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.1", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.2", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.91", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.5", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.4", - "{51eb174c-cea7-4cdf-804a-65083e692ad1}:0.3.3", - "site-spy-monitor@vkuprin.com:1.0.59" - ] - }, - "schema": 1772865383599, - "key_format": "{guid}:{version}", - "stash_time": 1772886906859, - "id": "631ab8f8-2b83-45dc-9625-c5730da72e49", - "last_modified": 1772886993466 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{7c7038b0-6f45-4a8f-bc05-8aed4598765e}:2.5", - "jcpqdstAfroSAfroMonitorIA@AfroMonitorIA.com:1.3", - "jcpqdstAfroSAfroMonitorIA@AfroMonitorIA.com:1.5", - "jcpqdstAfroSAfroMonitorIA@AfroMonitorIA.com:1.7", - "{64807ac5-de2d-4f7f-8bac-da6e1e935a1b}:2.5", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.4", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.5", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.6", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.7", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.8", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.9", - "copy-image-video-utils@example.com:1.7", - "espn-gamescore-ts@example.com:1.1", - "espn-gamescore-ts@example.com:1.2", - "stream-check@panda-bro-use:1.4.0", - "stream-check@panda-bro-use:1.3.0", - "stream-check@panda-bro-use:1.2.3", - "stream-check@panda-bro-use:1.2.1", - "stream-check@panda-bro-use:1.2.0", - "stream-check@panda-bro-use:1.1.1", - "stream-check@panda-bro-use:1.1.0", - "stream-check@panda-bro-use:1.0.1", - "stream-check@panda-bro-use:1.0.0", - "stream-check@panda-bro-use:1.5.1", - "copy-image-video-utils@example.com:1.8", - "cgm-wyszukiwarka@example.com:4.3" - ] - }, - "schema": 1772843780100, - "key_format": "{guid}:{version}", - "stash_time": 1772865305411, - "id": "b25dfb15-7efe-4614-882f-4e89c4a16531", - "last_modified": 1772865383357 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{0a6d324b-1f0d-4088-886a-f205f4c9b435}:1.0", - "{0a6d324b-1f0d-4088-886a-f205f4c9b435}:109.0.1", - "{96be4546-31ba-4326-ad55-164e8fbfb77f}:1.0", - "{96be4546-31ba-4326-ad55-164e8fbfb77f}:301.1.3", - "v@f:1.26.0", - "odoo_toolbox@thcl-saju:0.0.3", - "odoo_toolbox@thcl-saju:0.0.2", - "odoo_toolbox@thcl-saju:0.0.1", - "{e5292467-a0c9-4854-982b-6a12aaf21609}:2026.3.6", - "{a1b2c3d4-e5f6-7890-abcd-ef1234569000}:1.1.6", - "property-extension@bridgify.io:1.1.0", - "{a1b2c3d4-e5f6-7890-abcd-ef1234569000}:1.0.17", - "arek.moga@gmail.com:2.7", - "@aspire-scripts:0.49.0", - "@aspire-scripts:0.28.0", - "@aspire-scripts:0.30.0", - "@aspire-scripts:0.31.0", - "@aspire-scripts:0.33.0", - "@aspire-scripts:0.39.0", - "@aspire-scripts:0.41.0", - "@aspire-scripts:0.43.0", - "@aspire-scripts:0.44.0", - "@aspire-scripts:0.46.0", - "@aspire-scripts:0.47.0", - "favory@sp4ce.pw:3.2.5", - "favory@sp4ce.pw:3.2.3", - "favory@sp4ce.pw:3.2.2", - "hdwd_gst@protonmail.com:2025.0.1", - "hdwd_gst@protonmail.com:2025.0.2", - "hdwd_gst@protonmail.com:2025.0.3", - "manga-tracker@olympus.local:2.0.0", - "manga-tracker@olympus.local:1.0.0", - "chrome-checker@dotfiles:1.0.0" - ] - }, - "schema": 1772822189722, - "key_format": "{guid}:{version}", - "stash_time": 1772843705238, - "id": "3095e240-1162-4b90-8d3c-83cdb72c2f87", - "last_modified": 1772843779927 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "Linkumori.@cleanurls:8.0", - "Linkumori.@cleanurls:7.0", - "simple-inch-converter@example.com:1.0", - "ycsupknows@yandex-team.ru:0.75", - "ycsupknows@yandex-team.ru:0.75.2", - "ycsupknows@yandex-team.ru:0.75.3", - "ycsupknows@yandex-team.ru:0.75.4", - "ycsupknows@yandex-team.ru:0.75.5", - "ycsupknows@yandex-team.ru:0.75.6", - "support@ai-prompt-saver.com:1.0.3", - "chzzk-personal-mod-new1@myself:1.4.5", - "shortless-youtube@shortless-yt:1.0.2", - "shortless-youtube@shortless-yt:1.0.1", - "{1ce070d4-71f8-4a12-ba2b-a8319fae505a}:1.0", - "{1ce070d4-71f8-4a12-ba2b-a8319fae505a}:1.0.1", - "{1ce070d4-71f8-4a12-ba2b-a8319fae505a}:1.0.2", - "{1ce070d4-71f8-4a12-ba2b-a8319fae505a}:1.1.0", - "{1ce070d4-71f8-4a12-ba2b-a8319fae505a}:1.1.1", - "{4d96d300-1064-44b0-95f0-eb5b0b0230b4}:2.2.6", - "{3aead9aa-6e1a-4a52-aa0b-ebc920ffef74}:1.3", - "magnolia@12.34:4.3.1.5", - "adlir@drp.dev:1.0.1", - "yanima-shiki-integration-unlisted1@example.com:2.2.7", - "yanima-shiki-integration-unlisted@example.com:2.4.3", - "ibspread@peponidas:1.3", - "zipit@blintix.store:1.0", - "{a225173a-2e34-4f8c-aa66-eda505a84c8b}:1.0", - "{246944ad-4f74-432e-9fd8-400825e3c1cd}:1.0", - "Linkumori.@cleanurls:6.0", - "Linkumori.@cleanurls:5.0", - "Linkumori.@cleanurls:4.0", - "Linkumori.@cleanurls:3.0", - "Linkumori.@cleanurls:2.0", - "Linkumori.@cleanurls:1.0", - "{a1b2c3d4-e5f6-4a8b-9c0d-1e2f3a4b5c67}:1.0.4", - "{2ec0b22d-60c8-4f22-8c25-75229ddcf820}:1.0", - "{2ec0b22d-60c8-4f22-8c25-75229ddcf820}:292.1", - "{5a35af29-8259-43dc-8348-09e89b175027}:1.0", - "{5a35af29-8259-43dc-8348-09e89b175027}:10.5.3" - ] - }, - "schema": 1772800579742, - "key_format": "{guid}:{version}", - "stash_time": 1772822106219, - "id": "9fa5df01-5f0f-4c3d-9b35-cada0ac0dd41", - "last_modified": 1772822189442 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{a09a7ef6-4ca4-4db3-8ec5-ece20940982d}:1.0.0", - "kyp@kyp.ai:2025.12.202", - "autologin@ch-poitiers.fr:1.0.18", - "apk-autosign-addon@my-tools.com:1.1.7", - "apk-autosign-addon@my-tools.com:1.1.5", - "yt-studio-translator@personal:5.0.0", - "yt-feed-cleaner-pro@yourdomain.com:1.0", - "hilkjcfodmbdgpadbpehimibheopoccb@chrome-store-foxified--1326387116:2.2.1", - "nlhjgcligpbnjphflfdbmabbmjidnmek@chrome-store-foxified--1326387116:2.3.6", - "{35243ff2-16ac-4dfd-a98f-a44bd53a8f73}:1.0", - "{4be28afe-6a02-4f19-86ed-64a8ec94ba61}:1.0", - "{29f153be-ef9d-4f30-877b-edf6655b8ef2}:1.0", - "{538dff9b-18f9-4c67-81e7-5cf178b475a5}:1.0", - "{c11ecef1-9d2b-4c6d-a269-9aadbb907fdc}:1.0", - "abjcfabbhafbcdfjoecdgepllmpfceif@chrome-store-foxified--1326387116:7.3.0.7", - "{2657c5a8-59b4-41ef-88a9-5bf80a2b3985}:1.0", - "{2ecf406d-8e9a-49f6-a651-6eae485bfdf8}:1.0", - "pixiv-fast-r18@hinat.local:1.0.0", - "extrator-oitchau@hagliberto.local:9.5.5", - "extrator-oitchau@hagliberto.local:9.5.6", - "extrator-oitchau@hagliberto.local:9.5.7", - "idlenote@yourdomain.com:1.0.0", - "Linkumori.@cleanurls:9.0", - "extrator-oitchau@hagliberto.local:9.5.9" - ] - }, - "schema": 1772778980969, - "key_format": "{guid}:{version}", - "stash_time": 1772800505218, - "id": "e2599cf1-b000-4c1d-a8e5-d060a4100d49", - "last_modified": 1772800579573 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "chatgpt-summary-assistant@geeknik-labs.com:1.4.9", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.1", - "chatgpt-summary-assistant@geeknik-labs.com:1.5.0.2", - "convo-tracker@efficera.com:1.0.0", - "extrator-oitchau@hagliberto.local:9.4.9", - "extrator-oitchau@hagliberto.local:9.5.1", - "extrator-oitchau@hagliberto.local:9.5.0", - "extrator-oitchau@hagliberto.local:9.4.8", - "extrator-oitchau@hagliberto.local:9.4.7", - "extrator-oitchau@hagliberto.local:9.4.6", - "extrator-oitchau@hagliberto.local:9.4.5", - "extrator-oitchau@hagliberto.local:9.4.4", - "extrator-oitchau@hagliberto.local:9.4.3", - "extrator-oitchau@hagliberto.local:9.4.2", - "extrator-oitchau@hagliberto.local:9.4.1", - "extrator-oitchau@hagliberto.local:9.4.0", - "extrator-oitchau@hagliberto.local:9.3.2", - "extrator-oitchau@hagliberto.local:9.3.1", - "extrator-oitchau@hagliberto.local:9.3.0", - "extrator-oitchau@hagliberto.local:9.2.1", - "extrator-oitchau@hagliberto.local:9.2.0", - "extrator-oitchau@hagliberto.local:9.1.4", - "extrator-oitchau@hagliberto.local:9.1.3", - "extrator-oitchau@hagliberto.local:9.1.2", - "extrator-oitchau@hagliberto.local:9.1.1", - "extrator-oitchau@hagliberto.local:9.1.0", - "extrator-oitchau@hagliberto.local:9.0.9", - "extrator-oitchau@hagliberto.local:9.0.8", - "extrator-oitchau@hagliberto.local:9.0.7", - "extrator-oitchau@hagliberto.local:9.0.6", - "extrator-oitchau@hagliberto.local:9.0.5", - "extrator-oitchau@hagliberto.local:9.0.3", - "extrator-oitchau@hagliberto.local:9.0.2", - "extrator-oitchau@hagliberto.local:9.0.1", - "extrator-oitchau@hagliberto.local:9.0.0", - "extrator-oitchau@hagliberto.local:8.9.0", - "extrator-oitchau@hagliberto.local:3.1.1", - "extrator-oitchau@hagliberto.local:3.1", - "extrator-oitchau@hagliberto.local:9.5.3", - "extrator-oitchau@hagliberto.local:9.5.2", - "extrator-oitchau@hagliberto.local:9.5.4", - "youtube-multisave-plus@local:2.0" - ] - }, - "schema": 1772757381338, - "key_format": "{guid}:{version}", - "stash_time": 1772778905277, - "id": "689e2157-fa18-4ca5-8d45-13352252af99", - "last_modified": 1772778980802 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "arizona-helper-sakai@your-domain.com:10.0.4", - "ne-arizona-helper-sakai@your-domain.com:10.0.4", - "{2477b346-beb1-47c8-b77a-793034399d02}:1.0", - "@hn-ai-podcast.duckdns.org:0.1.4", - "@hn-ai-podcast.duckdns.org:0.1.5", - "jira-scrum-voting@extension:2.2.0", - "zlam@zlam.net:1.0", - "b11ceb7f-afa1-423f-92e4-1a6e2079b60b@zlam.net:1.1", - "{6ab1a57b-2b1c-4c8f-a397-49ce2937d723}:6.14", - "{6ab1a57b-2b1c-4c8f-a397-49ce2937d723}:6.131", - "simple-proxy@fetch-simple-extension:1.0", - "{efa95ef6-7beb-431b-9cfd-3ab8b585c9f9}:1.0" - ] - }, - "schema": 1772735793287, - "key_format": "{guid}:{version}", - "stash_time": 1772757305151, - "id": "262a2ed0-edb7-4349-8e1a-3cad2f3a59fb", - "last_modified": 1772757381191 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "my-extensions@mahendrakalkura:1.0", - "cookie-bridge-importer@vyfs.local:0.1.0", - "cookie-bridge-importer@vyfs.local:0.1.1", - "cookie-bridge-importer@vyfs.local:0.1.2", - "{057c097b-9af6-44c7-b317-a656b9fe6c03}:1.0", - "{f4bced0d-8b1e-41eb-8969-9587ee83cbd6}:1.0", - "{e15682dd-a5a2-4edd-ac11-17eb2f15ea8f}:1.0", - "{e15682dd-a5a2-4edd-ac11-17eb2f15ea8f}:2.0", - "smart-ai-boost-pageload@local:0.1.0", - "vol-at-helper@darkatek.local:1.28", - "vol-at-helper@darkatek.local:1.32", - "secure-download-monitor@hugoraymond:1.5", - "youtube-mobile-forcer@kip.com:1.0", - "info@brie.fyi:1.5.3", - "youtube-playlist-search@itznotme:1.0.0", - "youtube-playlist-search@itznotme:1.0.1" - ] - }, - "schema": 1772714195084, - "key_format": "{guid}:{version}", - "stash_time": 1772735707436, - "id": "80657d3d-2587-44ab-bf48-79bb0c2911e0", - "last_modified": 1772735793128 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "tabments@icefla.me:0.1.0", - "tabments@icefla.me:0.1.1resigned1", - "ccngopikhladacgddbdeegepaenkfkkm@chrome-store-foxified-265276020:0.0.13", - "tumblr-bookmark-highlighter@galli.local:1.2.0", - "nomotex-redirect@local:1.1", - "chzzk-personal-mod-new1@myself:1.3.7", - "chzzk-personal-mod-new1@myself:1.3.6", - "lulzhang@amazon.com:1.0", - "virtual-shopping-cart@local:2.0", - "{026a55b4-5e72-4d01-a06c-cba2dfcc134a}:1.0", - "zakat-annaqdayn@smartaccountant:3.9", - "atomshot@atomshot.de:1.4.1" - ] - }, - "schema": 1772692593504, - "key_format": "{guid}:{version}", - "stash_time": 1772714107035, - "id": "cda0a2ea-bdd1-4ef9-b3b1-d424908eb7a5", - "last_modified": 1772714194942 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "quicknav@opkarghadu.com:1.0.0", - "bmkdgglkocfpfmlpfmldpmebkceelhif@chrome-store-foxified-418480265:1.5", - "{d2c31a3c-fe48-498e-a171-169f8da2be1d}:1.0", - "{242f0c7f-f54f-42e6-880a-2f3f08e26403}:1.0", - "webmacs@xiaobing-huang.github.io:0.8.0", - "tfs-extension@indragroup.com:1.0.0", - "tfs-extension@indragroup.com:1.1.1", - "veo3-captcha-token-worker@nhungoc.me:1.0.0", - "chzzk-personal-mod-new1@myself:1.4.3", - "utm-koha-offline2@anda.com:0.4.21", - "{3c6bf0cc-2a32-42fb-4593-0d33104fdcaf}:4", - "{3e6f0a5f-e0d3-4af3-8e8c-99794045215a}:4.89", - "{c0fe88db-527d-4133-afcd-c8c9f783073d}:9.4", - "{62727b2a-3e80-4970-9fed-2c6ff16513d7}:12.5", - "{638f30e7-dcb9-4db9-861c-d16653f2290d}:5.87", - "{638f30e7-dcb9-4db9-861c-d16653f2290d}:8.83", - "{8ade639e-b730-42a4-935c-cba168560714}:9.85", - "{c8a18f63-aa10-4b6c-96cc-ee51943d6e3e}:3.75", - "things-quick-entry@example.com:0.3.0" - ] - }, - "schema": 1772671002028, - "key_format": "{guid}:{version}", - "stash_time": 1772692506576, - "id": "83a0f25a-6f39-424f-922f-e512dcb7da85", - "last_modified": 1772692593264 - }, - { - "stash": { - "blocked": [], - "unblocked": [], - "softblocked": [ - "{0dd165db-3990-4458-a6ce-6bb7a2ab3834}:1.0.4", - "{0dd165db-3990-4458-a6ce-6bb7a2ab3834}:1.0.5", - "{5ca15dd1-0914-405e-bd61-b47818b8763d}:1.0.1", - "{5ca15dd1-0914-405e-bd61-b47818b8763d}:1.0.2", - "{5ca15dd1-0914-405e-bd61-b47818b8763d}:1.0.3", - "bookmark-nextcloud-sync@ronnib.org:0.4.0", - "bookmark-nextcloud-sync@ronnib.org:0.5.0", - "bookmark-nextcloud-sync@ronnib.org:0.6.0", - "bookmark-nextcloud-sync@ronnib.org:0.7.0", - "bookmark-nextcloud-sync@ronnib.org:0.11.0", - "{ed0c96cb-228c-41d5-b1aa-8900b3e4bce7}:1.0", - "chzzk-personal-mod-new@myself:1.3.3", - "imap-mail-notifier@mf-addon.com:1.0" - ] - }, - "schema": 1772649394711, - "key_format": "{guid}:{version}", - "stash_time": 1772670906855, - "id": "a4502d49-a6df-494c-ba5e-7f296973166c", - "last_modified": 1772671001874 + "stash_time": 1761201304786, + "id": "d0d78b66-568a-4ed1-bc28-ce8bece3aba1", + "last_modified": 1761201385904 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "sikker@mailinblack.com:1.16.3", - "wrt-arai-extension@arai.co.jp:1.0.0", - "wrt-arai-extension@arai.co.jp:1.0.1", - "proxy-switcher@hoge.fuga.example.com:1.0.0", - "safesearch@superantispyware.com:1.1.1", - "safesearch@mycleanpc.com:1.1.1", - "safesearch@webscanner.pro:1.1.0", - "safesearch@webscanner.pro:1.1.1", - "safesearch@getmydrivers.com:1.1.1", - "safesearch@iolo.com:1.1.1", - "newtab-extension@example.com:1.1.5", - "ezyvet-hover@yourdomain.local:1.2", - "quickschedule@internal:1.0", - "egnyte-cookie-manager@migration-app:1.8", - "fetchix-extension@IzsakiRobi.com:1.0", - "leech-downloader-private@ostricks.com:1.0", - "gblock@V2.1:2.1", - "scribd-downloader@example.com:1.0.0", - "bilel.zouyed@gmail.com:1.3", - "bilel.zouyed@gmail.com:1.1", - "{44dad229-f4ee-4427-ab41-74589c1fa0a7}:2.0.2" - ] - }, - "schema": 1772627798874, - "key_format": "{guid}:{version}", - "stash_time": 1772649307415, - "id": "26ccb0ee-ed84-4e89-b719-2d4c8c213a80", - "last_modified": 1772649394638 - }, - { - "stash": { - "blocked": [ - "huacifanyijisu@baidu.com:1.2.11", - "{f120ab65-78f8-4a09-ae90-c3f1e9ababf1}:3.14.3", - "{f120ab65-78f8-4a09-ae90-c3f1e9ababf1}:3.14.4", - "{667b413e-7962-4664-95be-84740e6a76c3}:2.9.99", - "{667b413e-7962-4664-95be-84740e6a76c3}:3.9.99", - "{667b413e-7962-4664-95be-84740e6a76c3}:4.9.99", - "{667b413e-7962-4664-95be-84740e6a76c3}:5.0.9", - "{667b413e-7962-4664-95be-84740e6a76c3}:5.1.9", - "{667b413e-7962-4664-95be-84740e6a76c3}:5.2.9", - "{667b413e-7962-4664-95be-84740e6a76c3}:5.2.91", - "{667b413e-7962-4664-95be-84740e6a76c3}:5.2.92" - ], - "unblocked": [], - "softblocked": [ - "{c6d8c561-cb96-453f-91db-048aeb68ae76}:1.0", - "simpledm-extension@yourdomain.com:1.0", - "saga-shopify-bridge@example.com:1.0.0", - "nofap-shield@extension:1.0.0", - "glue@myurbanjungle.com:1.0.0", - "newsletter-addon@gfz.de:1.0.0", - "newsletter-addon@gfz.de:1.0.1", - "{ac1dd4a4-b950-4506-9db3-54c68949337c}:1.1", - "{ac1dd4a4-b950-4506-9db3-54c68949337c}:1.2", - "{ac1dd4a4-b950-4506-9db3-54c68949337c}:1.3", - "{ac1dd4a4-b950-4506-9db3-54c68949337c}:1.4", - "{ac1dd4a4-b950-4506-9db3-54c68949337c}:1.6", - "quick-switch-role@example.com:0.2.0", - "{391f4302-db77-4fca-b31b-553f7c77100d}:1.0.0", - "{391f4302-db77-4fca-b31b-553f7c77100d}:1.1.0", - "{391f4302-db77-4fca-b31b-553f7c77100d}:2.0.0", - "{ea8db1ed-286d-4adc-83af-f1d3ffa86164}:1.0.1", - "{ea8db1ed-286d-4adc-83af-f1d3ffa86164}:1.0.2" + "codeforces-random@example.com:1.1", + "framesyncfix1@example.com:1.1", + "{cd2e1220-2eae-4352-a288-887076fa3d81}:0.0.0.44" ] }, - "schema": 1772606191145, + "schema": 1761158194919, "key_format": "{guid}:{version}", - "stash_time": 1772627706852, - "id": "9b2fc501-7b14-49de-a293-4733da8fa6c9", - "last_modified": 1772627798711 + "stash_time": 1761179705816, + "id": "c7f135d8-c322-410c-88f9-5bd7f07c5aa3", + "last_modified": 1761179796505 }, { "stash": { "blocked": [], "unblocked": [], "softblocked": [ - "proxy-switcher-app@unique-id:1.1", - "{6f30e9c3-9ea6-45e2-99d6-d01180c74775}:1.0", - "VogueRunwayViewer@TejaML:1.4.0", - "nostr-wot@dandelionlabs.io:0.1.1", - "nostr-wot@dandelionlabs.io:0.1.2", - "nostr-wot@dandelionlabs.io:0.2.1", - "nostr-wot@dandelionlabs.io:0.2.2" + "{e235ba73-2401-42a5-aeb6-71a160f685c4}:3.0", + "{e235ba73-2401-42a5-aeb6-71a160f685c4}:2.0", + "{fcc86649-f50b-450f-badd-460b6b088d1d}:1.0", + "{f077fa5e-b4ff-4096-8453-7aa73cc58f16}:1.0", + "{f077fa5e-b4ff-4096-8453-7aa73cc58f16}:1.1", + "{f077fa5e-b4ff-4096-8453-7aa73cc58f16}:1.2resigned1", + "{dac5a9ac-f8a9-40f4-83a9-1230992b3a47}:1.0", + "{dac5a9ac-f8a9-40f4-83a9-1230992b3a47}:1.1", + "{3d18d585-28d4-4325-970b-239b95a540b8}:1.0", + "{3d18d585-28d4-4325-970b-239b95a540b8}:2.0", + "{3d18d585-28d4-4325-970b-239b95a540b8}:2.1", + "{7c387a84-d5f5-454d-9167-30751f5ee479}:0.3.1", + "{3f1ca6e4-36c2-407a-a065-9b77e95b1606}:0.1.5", + "{3f1ca6e4-36c2-407a-a065-9b77e95b1606}:0.2.0", + "{3f1ca6e4-36c2-407a-a065-9b77e95b1606}:0.0.0", + "peridot5xg@gemmail.homeworld.com:1.0" ] }, - "schema": 1772584766759, + "schema": 1761136765041, "key_format": "{guid}:{version}", - "stash_time": 1772606106521, - "id": "4a3c7058-4567-4f5b-ae9d-6fe495d8cc50", - "last_modified": 1772606190948 + "stash_time": 1761158105550, + "id": "6655497c-9c7d-4135-975f-7932044cd9ab", + "last_modified": 1761158194786 }, { - "schema": 1772584712183, + "schema": 1761136684090, "attachment": { - "hash": "ba518030bb058a7d14a3e1ac2218599992f3196aa6ea99199170289763e2ca84", - "size": 180796, + "hash": "28e2bd1cb9fcffa3faadce2a5b2761d8f265228fb2c4c928562e036c4d0b8a40", + "size": 168025, "filename": "filter.bin", - "location": "staging/addons-bloomfilters/261790b5-1813-4a25-9fe1-5b4c19cf1279.bin", + "location": "staging/addons-bloomfilters/c822e299-0946-4495-8029-75da320ffad8.bin", "mimetype": "application/octet-stream" }, "key_format": "{guid}:{version}", "attachment_type": "softblocks-bloomfilter-base", - "generation_time": 1772584506789, - "id": "9de13b9e-c148-4385-ad60-9c940536a3b2", - "last_modified": 1772584766602 + "generation_time": 1761136506115, + "id": "2d1f9360-d595-44c8-8cf3-06a0fbc10ad3", + "last_modified": 1761136764914 }, { - "schema": 1772562997137, + "schema": 1761114998230, "attachment": { - "hash": "ee96783e3e744f929e69179eada1f1d1db54586c3ab2139198b557f06f12deca", - "size": 882382, + "hash": "16c1f18aeb946ff2ba6ffda52c973c2622a5c8f2f2a2f3af9f2988da2473f474", + "size": 869873, "filename": "filter.bin", - "location": "staging/addons-bloomfilters/dcd6006c-59c5-4924-9d61-671a4df6aafa.bin", + "location": "staging/addons-bloomfilters/96baa783-89e1-4682-8833-d3437117f669.bin", "mimetype": "application/octet-stream" }, "key_format": "{guid}:{version}", "attachment_type": "bloomfilter-base", - "generation_time": 1772584506789, - "id": "064d7fc5-9b6c-4ce4-81f4-9b0c74c7c32b", - "last_modified": 1772584766600 + "generation_time": 1761136506115, + "id": "7a5532a9-4878-4a91-aa61-bb59bc4f4864", + "last_modified": 1761136764909 } ], - "timestamp": 1776062193033 + "timestamp": 1764570990070 } diff --git a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin index a8c89d68fd..26154c1b67 100644 Binary files a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin and b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin differ diff --git a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json index 1d42c20829..0311db6883 100644 --- a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json +++ b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/addons-mlbf.bin.meta.json @@ -1 +1 @@ -{"schema":1772562997137,"attachment":{"hash":"ee96783e3e744f929e69179eada1f1d1db54586c3ab2139198b557f06f12deca","size":882382,"filename":"filter.bin","location":"staging/addons-bloomfilters/dcd6006c-59c5-4924-9d61-671a4df6aafa.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"bloomfilter-base","generation_time":1772584506789,"id":"064d7fc5-9b6c-4ce4-81f4-9b0c74c7c32b","last_modified":1772584766600} \ No newline at end of file +{"schema":1761114998230,"attachment":{"hash":"16c1f18aeb946ff2ba6ffda52c973c2622a5c8f2f2a2f3af9f2988da2473f474","size":869873,"filename":"filter.bin","location":"staging/addons-bloomfilters/96baa783-89e1-4682-8833-d3437117f669.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"bloomfilter-base","generation_time":1761136506115,"id":"7a5532a9-4878-4a91-aa61-bb59bc4f4864","last_modified":1761136764909} \ No newline at end of file diff --git a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin index fac8454733..ef2eb2033e 100644 Binary files a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin and b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin differ diff --git a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json index 359373841e..fc82dfdec8 100644 --- a/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json +++ b/icecat/services/settings/dumps/blocklists/addons-bloomfilters/softblocks-addons-mlbf.bin.meta.json @@ -1 +1 @@ -{"schema":1772584712183,"attachment":{"hash":"ba518030bb058a7d14a3e1ac2218599992f3196aa6ea99199170289763e2ca84","size":180796,"filename":"filter.bin","location":"staging/addons-bloomfilters/261790b5-1813-4a25-9fe1-5b4c19cf1279.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"softblocks-bloomfilter-base","generation_time":1772584506789,"id":"9de13b9e-c148-4385-ad60-9c940536a3b2","last_modified":1772584766602} \ No newline at end of file +{"schema":1761136684090,"attachment":{"hash":"28e2bd1cb9fcffa3faadce2a5b2761d8f265228fb2c4c928562e036c4d0b8a40","size":168025,"filename":"filter.bin","location":"staging/addons-bloomfilters/c822e299-0946-4495-8029-75da320ffad8.bin","mimetype":"application/octet-stream"},"key_format":"{guid}:{version}","attachment_type":"softblocks-bloomfilter-base","generation_time":1761136506115,"id":"2d1f9360-d595-44c8-8cf3-06a0fbc10ad3","last_modified":1761136764914} \ No newline at end of file diff --git a/icecat/services/settings/dumps/blocklists/gfx.json b/icecat/services/settings/dumps/blocklists/gfx.json index 411b8394f2..a1343115f6 100644 --- a/icecat/services/settings/dumps/blocklists/gfx.json +++ b/icecat/services/settings/dumps/blocklists/gfx.json @@ -1,31 +1,5 @@ { "data": [ - { - "os": "Linux", - "schema": 1755909310311, - "vendor": "", - "details": { - "bug": "1979007", - "name": "Mesa crash compiling certain shaders" - }, - "devices": [], - "enabled": true, - "feature": "WEBGPU", - "hardware": "", - "driverVendor": "mesa/all", - "versionRange": { - "maxVersion": "143.0", - "minVersion": "" - }, - "driverVersion": "25.0.4", - "featureStatus": "BLOCKED_DRIVER_VERSION", - "windowProtocol": "", - "driverVersionMax": "", - "desktopEnvironment": "", - "driverVersionComparator": "LESS_THAN", - "id": "e3e5622a-0a29-4a73-bd49-c3c2de8ec1bc", - "last_modified": 1771613837993 - }, { "os": "WINNT 10.0", "schema": 1748268762353, @@ -1609,5 +1583,5 @@ "last_modified": 1480349134090 } ], - "timestamp": 1771613837993 + "timestamp": 1748485472559 } diff --git a/icecat/services/settings/dumps/main/devtools-compatibility-browsers.json b/icecat/services/settings/dumps/main/devtools-compatibility-browsers.json index 325bd9bcae..b7d883bdac 100644 --- a/icecat/services/settings/dumps/main/devtools-compatibility-browsers.json +++ b/icecat/services/settings/dumps/main/devtools-compatibility-browsers.json @@ -1,355 +1,346 @@ { "data": [ - { - "name": "WebView Android", - "schema": 1775865904693, - "status": "planned", - "version": "150", - "browserid": "webview_android", - "id": "1f7a5c82-8b4a-4eaf-97b6-19f24fe55272", - "last_modified": 1776062852042 - }, - { - "name": "Opera", - "schema": 1775865904345, - "status": "nightly", - "version": "132", - "browserid": "opera", - "id": "46931762-b7ab-4c08-b5e6-8c898504cfa9", - "last_modified": 1776062852039 - }, - { - "name": "Opera", - "schema": 1775865904282, - "status": "beta", - "version": "131", - "browserid": "opera", - "id": "77898b2a-df6e-4e54-85a8-0301df45c2f0", - "last_modified": 1776062852036 - }, - { - "name": "Opera", - "schema": 1775865904214, - "status": "current", - "version": "130", - "browserid": "opera", - "id": "d480fdbc-d8c7-4128-8864-307b15979f29", - "last_modified": 1776062852033 - }, - { - "name": "Chrome Android", - "schema": 1775865903888, - "status": "planned", - "version": "150", - "browserid": "chrome_android", - "id": "525b02bb-1782-4be7-af3d-a871bd0dc689", - "last_modified": 1776062852030 - }, - { - "name": "Chrome", - "schema": 1775865903486, - "status": "planned", - "version": "150", - "browserid": "chrome", - "id": "36357b2a-c063-4a43-a807-349cf909608b", - "last_modified": 1776062852027 - }, - { - "name": "WebView Android", - "schema": 1775865904624, - "status": "nightly", - "version": "149", - "browserid": "webview_android", - "id": "ed3ff7b7-dfb0-4141-a35d-85d16c22ed86", - "last_modified": 1776062852023 - }, - { - "name": "Chrome Android", - "schema": 1775865903806, - "status": "nightly", - "version": "149", - "browserid": "chrome_android", - "id": "c583ee97-ecf9-4bd8-9f22-93d626c24fa0", - "last_modified": 1776062852021 - }, - { - "name": "Chrome", - "schema": 1775865903408, - "status": "nightly", - "version": "149", - "browserid": "chrome", - "id": "dff5f94c-b1be-416a-91e6-f0fa2dbffb45", - "last_modified": 1776062852019 - }, - { - "name": "WebView Android", - "schema": 1775865904555, - "status": "beta", - "version": "148", - "browserid": "webview_android", - "id": "cbf9e9ca-4167-4f09-981c-186bfba8ed1e", - "last_modified": 1776062852016 - }, - { - "name": "Chrome Android", - "schema": 1775865903725, - "status": "beta", - "version": "148", - "browserid": "chrome_android", - "id": "1dc1d001-8ed2-43a5-b41d-589130d0ac7d", - "last_modified": 1776062852014 - }, - { - "name": "Chrome", - "schema": 1775865903331, - "status": "beta", - "version": "148", - "browserid": "chrome", - "id": "a57c427c-57e9-4856-9dae-f515117478d7", - "last_modified": 1776062852011 - }, - { - "name": "Chrome", - "schema": 1775865903258, - "status": "current", - "version": "147", - "browserid": "chrome", - "id": "cddd3506-4f9c-42cf-b551-ca28c2533e9a", - "last_modified": 1776062852009 - }, - { - "name": "Chrome Android", - "schema": 1775865903646, - "status": "current", - "version": "147", - "browserid": "chrome_android", - "id": "aa7ba8b7-3135-4450-ab5f-5f8d956f1f13", - "last_modified": 1776062852006 - }, - { - "name": "WebView Android", - "schema": 1775865904485, - "status": "current", - "version": "147", - "browserid": "webview_android", - "id": "18d9eac7-8ed6-40c8-a888-315758fbd983", - "last_modified": 1776062852002 - }, - { - "name": "Safari on iOS", - "schema": 1775261103550, - "status": "beta", - "version": "26.5", - "browserid": "safari_ios", - "id": "37c52f59-c4bb-4707-bb06-d1cac9172203", - "last_modified": 1775555173744 - }, - { - "name": "Safari", - "schema": 1774915210779, - "status": "beta", - "version": "26.5", - "browserid": "safari", - "id": "310ab08d-64fb-4d47-a298-e35f262acf72", - "last_modified": 1775555173741 - }, - { - "name": "WebView on iOS", - "schema": 1775261103619, - "status": "beta", - "version": "26.5", - "browserid": "webview_ios", - "id": "c4306576-8892-4f28-adb6-39f0325e9be9", - "last_modified": 1775555173738 - }, - { - "name": "IceCat", - "schema": 1774656303688, - "status": "planned", - "version": "152", - "browserid": "icecat", - "id": "28f0d2ac-ebeb-4324-a581-bdc945184379", - "last_modified": 1775555173736 - }, - { - "name": "IceCat for Android", - "schema": 1774656304005, - "status": "planned", - "version": "152", - "browserid": "icecat_android", - "id": "d4acf283-6f99-4aff-a937-827c0f6ba719", - "last_modified": 1775555173733 - }, - { - "name": "IceCat", - "schema": 1774656303627, - "status": "nightly", - "version": "151", - "browserid": "icecat", - "id": "ca23dbaa-20c7-4027-9de8-63ec380b2f6e", - "last_modified": 1775555173729 - }, - { - "name": "IceCat for Android", - "schema": 1774656303946, - "status": "nightly", - "version": "151", - "browserid": "icecat_android", - "id": "cded3e3a-4e7e-4627-80fb-fae915ebc9a0", - "last_modified": 1775555173727 - }, - { - "name": "WebView on iOS", - "schema": 1774656304413, - "status": "current", - "version": "26.4", - "browserid": "webview_ios", - "id": "d3803d9b-d96b-4c3b-9ed9-1ef5d4639858", - "last_modified": 1775555173720 - }, - { - "name": "Safari", - "schema": 1774656304135, - "status": "current", - "version": "26.4", - "browserid": "safari", - "id": "79285f6d-a28c-459d-8265-7044f2066d5b", - "last_modified": 1775555173717 - }, - { - "name": "Safari on iOS", - "schema": 1774656304272, - "status": "current", - "version": "26.4", - "browserid": "safari_ios", - "id": "0b19a21d-8494-4a35-8875-bf1905f5893a", - "last_modified": 1775555173715 - }, - { - "name": "IceCat for Android", - "schema": 1774656303880, - "status": "beta", - "version": "150", - "browserid": "icecat_android", - "id": "dc9812c3-bdb8-4dcc-880f-67b25f794628", - "last_modified": 1775555173712 - }, - { - "name": "IceCat", - "schema": 1774656303557, - "status": "beta", - "version": "150", - "browserid": "icecat", - "id": "4f1039d1-5e0c-44de-9180-1f46dae6028c", - "last_modified": 1775555173710 - }, - { - "name": "IceCat for Android", - "schema": 1774656303821, - "status": "current", - "version": "149", - "browserid": "icecat_android", - "id": "78dc5472-36f7-465d-92c2-3d2ff5d7c323", - "last_modified": 1775555173708 - }, - { - "name": "IceCat", - "schema": 1774656303492, - "status": "current", - "version": "149", - "browserid": "icecat", - "id": "2154c26d-3d7d-4ddc-a6ec-de10aeaba65f", - "last_modified": 1775555173705 - }, - { - "name": "Edge", - "schema": 1774051505179, - "status": "planned", - "version": "149", - "browserid": "edge", - "id": "ecc3ce4e-9c4f-49c9-aabd-ddb600ade94b", - "last_modified": 1774245712490 - }, { "name": "Bun", - "schema": 1774051504876, + "schema": 1762992304400, "status": "current", - "version": "1.3.11", + "version": "1.3.2", "browserid": "bun", - "id": "3de3e137-fe20-463e-8732-f39b6e0c1be1", - "last_modified": 1774245712488 + "id": "5034aa5c-d78a-4a4a-ade2-d9aaef93a941", + "last_modified": 1763038623318 }, { - "name": "Edge", - "schema": 1774051505120, - "status": "nightly", + "name": "IceCat", + "schema": 1762992304751, + "status": "planned", "version": "148", - "browserid": "edge", - "id": "25d5ebbc-8734-46b8-881c-949b2912533e", - "last_modified": 1774245712484 + "browserid": "icecat", + "id": "4ebdb515-56c0-4aae-bf80-631df396b3c5", + "last_modified": 1763038623314 }, { - "name": "Edge", - "schema": 1774051505056, - "status": "beta", + "name": "IceCat for Android", + "schema": 1762992305101, + "status": "planned", + "version": "148", + "browserid": "icecat_android", + "id": "5e1afc2d-b301-49b8-9052-0d0ceed8d7a3", + "last_modified": 1763038623310 + }, + { + "name": "IceCat for Android", + "schema": 1762992305037, + "status": "nightly", "version": "147", - "browserid": "edge", - "id": "08fe74cc-038a-4801-9f25-82fbd6468297", - "last_modified": 1774245712482 + "browserid": "icecat_android", + "id": "6d4ac1b5-fae6-4cf0-8966-3833c78d2d6d", + "last_modified": 1763038623304 + }, + { + "name": "IceCat", + "schema": 1762992304683, + "status": "nightly", + "version": "147", + "browserid": "icecat", + "id": "da813114-57b4-435c-831e-4fc28589a55c", + "last_modified": 1763038623300 + }, + { + "name": "IceCat for Android", + "schema": 1762992304970, + "status": "beta", + "version": "146", + "browserid": "icecat_android", + "id": "b8de7d68-78f0-49a8-ae02-2b807c2a40d0", + "last_modified": 1763038623295 + }, + { + "name": "IceCat", + "schema": 1762992304614, + "status": "beta", + "version": "146", + "browserid": "icecat", + "id": "db1e42f6-cbd7-4a17-a388-2190ad554abf", + "last_modified": 1763038623291 + }, + { + "name": "IceCat for Android", + "schema": 1762992304900, + "status": "current", + "version": "145", + "browserid": "icecat_android", + "id": "546eaac9-d444-4f9f-a403-b97a76646211", + "last_modified": 1763038623283 + }, + { + "name": "IceCat", + "schema": 1762992304541, + "status": "current", + "version": "145", + "browserid": "icecat", + "id": "04fc0708-9123-4914-a491-ca13f20285e6", + "last_modified": 1763038623278 + }, + { + "name": "Safari on iOS", + "schema": 1762387504104, + "status": "beta", + "version": "26.2", + "browserid": "safari_ios", + "id": "2eb9ac0d-f4bf-4cdf-83a1-49dc43362039", + "last_modified": 1762424892978 + }, + { + "name": "Safari", + "schema": 1762387503881, + "status": "beta", + "version": "26.2", + "browserid": "safari", + "id": "8982e715-0fe8-485b-a68f-582f3420cf8c", + "last_modified": 1762424892974 }, { "name": "Edge", - "schema": 1774051504999, - "status": "current", - "version": "146", + "schema": 1762387503671, + "status": "planned", + "version": "145", "browserid": "edge", - "id": "71070e67-3067-4271-acef-cf0bd7a4f555", - "last_modified": 1774245712480 + "id": "40684037-f3dc-4106-b1f7-91bd4fa18a32", + "last_modified": 1762424892971 }, { - "name": "Opera Android", - "schema": 1773446703952, - "status": "current", - "version": "96", - "browserid": "opera_android", - "id": "dc01df05-453f-4d2f-b7d2-337a2670e91a", - "last_modified": 1773641281298 + "name": "WebView on iOS", + "schema": 1762387504304, + "status": "beta", + "version": "26.2", + "browserid": "webview_ios", + "id": "0ec79789-21e6-4251-9728-07edaa787a52", + "last_modified": 1762424892967 }, { - "name": "Quest Browser", - "schema": 1773446703816, - "status": "current", - "version": "42.0", - "browserid": "oculus", - "id": "77a75ca3-9282-4e9d-8789-bb7d771ea350", - "last_modified": 1773641281295 + "name": "Opera", + "schema": 1761955503268, + "status": "nightly", + "version": "125", + "browserid": "opera", + "id": "5bdc65b2-ee44-4f2a-b776-54b9ffe1147f", + "last_modified": 1762424892963 }, { - "name": "Deno", - "schema": 1772064304810, - "status": "current", - "version": "2.7", - "browserid": "deno", - "id": "34c49207-86e7-4cda-af22-c005f1dc2847", - "last_modified": 1772094719547 + "name": "Edge", + "schema": 1762387503603, + "status": "nightly", + "version": "144", + "browserid": "edge", + "id": "64945ca2-8c7c-4d04-8a37-dd304f2e93ce", + "last_modified": 1762424892958 }, { - "name": "Samsung Internet", - "schema": 1764979504820, + "name": "Edge", + "schema": 1762387503533, + "status": "beta", + "version": "143", + "browserid": "edge", + "id": "5fbdfe94-de4c-4bfe-b789-246f64a7f4b6", + "last_modified": 1762424892954 + }, + { + "name": "Opera", + "schema": 1761955503193, + "status": "beta", + "version": "124", + "browserid": "opera", + "id": "b74063d3-65d7-45b2-afc1-d30123fc2999", + "last_modified": 1762424892950 + }, + { + "name": "Opera", + "schema": 1761955503117, "status": "current", - "version": "29.0", - "browserid": "samsunginternet_android", - "id": "c30b100b-baa9-418f-b196-11e2cc06c7ad", - "last_modified": 1765180094055 + "version": "123", + "browserid": "opera", + "id": "847fc43b-579e-4b26-a1fa-cb978ec0438b", + "last_modified": 1762424892945 + }, + { + "name": "WebView on iOS", + "schema": 1762387504245, + "status": "current", + "version": "26.1", + "browserid": "webview_ios", + "id": "715b8853-603d-4ca8-a18c-3e24169f8895", + "last_modified": 1762424892941 + }, + { + "name": "Safari", + "schema": 1762387503809, + "status": "current", + "version": "26.1", + "browserid": "safari", + "id": "4e69de42-b3b9-4a6e-a764-3038552d0ecb", + "last_modified": 1762424892936 + }, + { + "name": "Safari on iOS", + "schema": 1762387504034, + "status": "current", + "version": "26.1", + "browserid": "safari_ios", + "id": "c67d6870-269b-4aa5-9a1b-03662a4b5771", + "last_modified": 1762424892932 + }, + { + "name": "Edge", + "schema": 1762387503452, + "status": "current", + "version": "142", + "browserid": "edge", + "id": "7d644a9d-4167-44d0-b58a-165beedf43e5", + "last_modified": 1762424892927 }, { "name": "Node.js", - "schema": 1764115503977, + "schema": 1761696314245, "status": "current", - "version": "25.2.0", + "version": "24.7.0", "browserid": "nodejs", - "id": "72793b48-82fb-4674-9659-b51e661cb10b", - "last_modified": 1764597259381 + "id": "91237d21-1b61-4fa2-8a8e-7d6237471e87", + "last_modified": 1761724372882 + }, + { + "name": "WebView Android", + "schema": 1761696314562, + "status": "planned", + "version": "145", + "browserid": "webview_android", + "id": "51da2d32-d596-43de-8dea-bb19b07b2bf0", + "last_modified": 1761724372878 + }, + { + "name": "Chrome", + "schema": 1761696313807, + "status": "planned", + "version": "145", + "browserid": "chrome", + "id": "1bcd114b-13e9-428b-9d54-bd2d993aa5bb", + "last_modified": 1761724372875 + }, + { + "name": "Chrome Android", + "schema": 1761696314122, + "status": "planned", + "version": "145", + "browserid": "chrome_android", + "id": "4363f23f-12a8-40d5-aedb-9c90514c368c", + "last_modified": 1761724372871 + }, + { + "name": "WebView Android", + "schema": 1761696314499, + "status": "nightly", + "version": "144", + "browserid": "webview_android", + "id": "336a5fe9-5846-4e9d-9039-be3d1d82f97f", + "last_modified": 1761724372867 + }, + { + "name": "Chrome", + "schema": 1761696313747, + "status": "nightly", + "version": "144", + "browserid": "chrome", + "id": "445d8b56-0300-4c6b-8e1f-0d1ab3f45500", + "last_modified": 1761724372864 + }, + { + "name": "Chrome Android", + "schema": 1761696314057, + "status": "nightly", + "version": "144", + "browserid": "chrome_android", + "id": "196eb3bc-6b04-4a4e-875f-b46ff5d5e6da", + "last_modified": 1761724372861 + }, + { + "name": "Chrome", + "schema": 1761696313690, + "status": "beta", + "version": "143", + "browserid": "chrome", + "id": "d18f46a3-d6bd-4291-8088-27feea84ca76", + "last_modified": 1761724372857 + }, + { + "name": "WebView Android", + "schema": 1761696314379, + "status": "current", + "version": "142", + "browserid": "webview_android", + "id": "d1917e2a-614b-4b6c-8bb4-683132e1fd64", + "last_modified": 1761724372851 + }, + { + "name": "Chrome", + "schema": 1761696313619, + "status": "current", + "version": "142", + "browserid": "chrome", + "id": "80f03197-a17b-4032-ba47-0e81e04ffce2", + "last_modified": 1761724372848 + }, + { + "name": "WebView Android", + "schema": 1761696314437, + "status": "beta", + "version": "143", + "browserid": "webview_android", + "id": "c0345eaf-8f79-42e7-9d5d-a16f48e6761f", + "last_modified": 1761724372841 + }, + { + "name": "Chrome Android", + "schema": 1761696313996, + "status": "beta", + "version": "143", + "browserid": "chrome_android", + "id": "88163a1b-c1ef-4699-a50e-bd33a32ea075", + "last_modified": 1761724372838 + }, + { + "name": "Chrome Android", + "schema": 1761696313933, + "status": "current", + "version": "142", + "browserid": "chrome_android", + "id": "0b5cf19b-6816-4a96-aeb8-de25f776b025", + "last_modified": 1761724372834 + }, + { + "name": "Opera Android", + "schema": 1760141104124, + "status": "current", + "version": "92", + "browserid": "opera_android", + "id": "2d5b3e9f-ae53-4833-adac-d2fdb3267611", + "last_modified": 1760336031485 + }, + { + "name": "Samsung Internet", + "schema": 1759889746802, + "status": "beta", + "version": "29.0", + "browserid": "samsunginternet_android", + "id": "c30b100b-baa9-418f-b196-11e2cc06c7ad", + "last_modified": 1759989898794 + }, + { + "name": "Deno", + "schema": 1759363503600, + "status": "current", + "version": "2.5.0", + "browserid": "deno", + "id": "a44dce57-9592-4b86-bd9c-cdf6223e7e75", + "last_modified": 1759390855835 }, { "name": "IceCat for Android", @@ -369,6 +360,15 @@ "id": "9949da65-f6be-41f4-9c9d-73bc27b4d2a0", "last_modified": 1754642891013 }, + { + "name": "Samsung Internet", + "schema": 1749254703179, + "status": "current", + "version": "28.0", + "browserid": "samsunginternet_android", + "id": "d85a7f04-256c-4b3c-a633-29d0b2a19f18", + "last_modified": 1749550693720 + }, { "name": "Node.js", "schema": 1734480302872, @@ -377,7 +377,16 @@ "browserid": "nodejs", "id": "5ba3aee3-2875-4a2c-938c-0f1f43e28488", "last_modified": 1735832995466 + }, + { + "name": "Quest Browser", + "schema": 1665650596430, + "status": "current", + "version": "23.0", + "browserid": "oculus", + "id": "371ced3b-8ff1-4540-a230-bc1827964bda", + "last_modified": 1665656484764 } ], - "timestamp": 1776062852042 + "timestamp": 1763038623318 } diff --git a/icecat/services/settings/dumps/main/devtools-devices.json b/icecat/services/settings/dumps/main/devtools-devices.json index 2de049b293..30b2362048 100644 --- a/icecat/services/settings/dumps/main/devtools-devices.json +++ b/icecat/services/settings/dumps/main/devtools-devices.json @@ -1,266 +1,5 @@ { "data": [ - { - "name": "iPhone 16 Pro Max", - "type": "phones", - "touch": true, - "width": 440, - "height": 956, - "schema": 1773213674077, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "60bf279b-4854-4399-8d4f-41c5f5ef4948", - "last_modified": 1773214792526 - }, - { - "name": "Pixel 8 / 9 (Chrome)", - "type": "phones", - "touch": true, - "width": 412, - "height": 915, - "schema": 1773213683874, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 14; Pixel 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "2.625", - "id": "ab1be6d4-808a-4600-881d-0496509272f4", - "last_modified": 1773214792523 - }, - { - "name": "Pixel 8 / 9 (IceCat)", - "type": "phones", - "touch": true, - "width": 412, - "height": 915, - "schema": 1773213685943, - "featured": true, - "userAgent": "Mozilla/5.0 (Android 14; Mobile; rv:148.0) Gecko/148.0 IceCat/148.0", - "pixelRatio": "2.625", - "id": "8c93fab6-33b6-4e3a-97ed-ac4eb33292ce", - "last_modified": 1773214792520 - }, - { - "name": "iPhone 17 Pro Max", - "type": "phones", - "touch": true, - "width": 440, - "height": 956, - "schema": 1773213672208, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "3b2953fc-dfff-4bfe-afbd-ca66fc02f481", - "last_modified": 1773214792517 - }, - { - "name": "iPhone Air", - "type": "phones", - "touch": true, - "width": 420, - "height": 921, - "schema": 1773213670567, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "7c7d3a26-145f-48ae-b045-9c44c2851913", - "last_modified": 1773214792514 - }, - { - "name": "iPhone 15 / 16 Pro", - "type": "phones", - "touch": true, - "width": 402, - "height": 874, - "schema": 1773213676777, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "a0fe6375-e30b-4e69-9897-5e03d356584e", - "last_modified": 1773214792512 - }, - { - "name": "iPhone 14 / 15 / 16 Plus", - "type": "phones", - "touch": true, - "width": 430, - "height": 932, - "schema": 1773213681352, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "bbd54a2b-ff7f-4505-9c80-c6d07156857c", - "last_modified": 1773214792509 - }, - { - "name": "iPhone 14 / 15 / 16", - "type": "phones", - "touch": true, - "width": 393, - "height": 852, - "schema": 1773213648738, - "featured": true, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "fefcdce1-fd5f-4e91-adb8-afb426d4b381", - "last_modified": 1773214792506 - }, - { - "name": "iPad (10th / 11th gen)", - "type": "tablets", - "touch": true, - "width": 820, - "height": 1180, - "schema": 1773213632719, - "featured": true, - "userAgent": "Mozilla/5.0 (iPad; CPU OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "2", - "id": "995c3d3e-de30-4694-b0ad-ae168d7748b2", - "last_modified": 1773214792503 - }, - { - "name": "iPad Mini (6th gen)", - "type": "tablets", - "touch": true, - "width": 744, - "height": 1133, - "schema": 1773213591154, - "featured": true, - "userAgent": "Mozilla/5.0 (iPad; CPU OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "2", - "id": "d71215ba-1fd5-47a3-ac83-f207260cff5d", - "last_modified": 1773214792500 - }, - { - "name": "Galaxy S25 Ultra", - "type": "phones", - "touch": true, - "width": 412, - "height": 915, - "schema": 1773213687923, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-S938B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "3", - "id": "55817bdf-9f22-43e9-9048-410223431c6c", - "last_modified": 1773214792497 - }, - { - "name": "iPad Pro 11-inch (M4)", - "type": "tablets", - "touch": true, - "width": 834, - "height": 1210, - "schema": 1773213627220, - "featured": true, - "userAgent": "Mozilla/5.0 (iPad; CPU OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "2", - "id": "4b0e448d-42ec-4649-b4ea-4a56201758f9", - "last_modified": 1773214792494 - }, - { - "name": "Galaxy Tab S9+", - "type": "tablets", - "touch": true, - "width": 800, - "height": 1280, - "schema": 1773213644124, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-X810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36", - "pixelRatio": "2.5", - "id": "af961865-b68e-4744-9447-4377c86368c3", - "last_modified": 1773214792491 - }, - { - "name": "iPhone 17 / 17 Pro", - "type": "phones", - "touch": true, - "width": 402, - "height": 874, - "schema": 1773213668473, - "featured": true, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "7ec46e68-aa0a-4a35-9f6c-1d8b25feb51b", - "last_modified": 1773214792488 - }, - { - "name": "Galaxy S25", - "type": "phones", - "touch": true, - "width": 360, - "height": 780, - "schema": 1773213695712, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-S931B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "3", - "id": "63fb2b49-1db5-4550-aa60-9d3ecf29f5b5", - "last_modified": 1773214792485 - }, - { - "name": "Galaxy S25+", - "type": "phones", - "touch": true, - "width": 384, - "height": 854, - "schema": 1773213690339, - "featured": false, - "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-S936B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "3", - "id": "d90048ce-5c16-4c32-a5e8-7d4425f2e351", - "last_modified": 1773214792482 - }, - { - "name": "Galaxy Tab S9", - "type": "tablets", - "touch": true, - "width": 712, - "height": 1138, - "schema": 1773213646393, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-X710) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36", - "pixelRatio": "2.5", - "id": "1ff6a27f-9076-4061-9a03-3b7c3b657fed", - "last_modified": 1773214792479 - }, - { - "name": "Galaxy Tab S9 Ultra", - "type": "tablets", - "touch": true, - "width": 960, - "height": 1848, - "schema": 1773213641275, - "featured": false, - "userAgent": "Mozilla/5.0 (Linux; Android 14; SM-X910) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36", - "pixelRatio": "2.5", - "id": "9b56a044-2986-47b2-a159-b0714e86a367", - "last_modified": 1773214792477 - }, - { - "name": "iPad Pro 13-inch (M4)", - "type": "tablets", - "touch": true, - "width": 1032, - "height": 1376, - "schema": 1773213629977, - "featured": false, - "userAgent": "Mozilla/5.0 (iPad; CPU OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1", - "pixelRatio": "2", - "id": "df12aa5d-5519-4954-b957-b8ed0815e9d0", - "last_modified": 1773214792474 - }, - { - "os": "", - "name": "Laptop with HiDPI screen", - "type": "laptops", - "touch": false, - "width": 1440, - "height": 900, - "schema": 1773152892018, - "featured": true, - "userAgent": "", - "pixelRatio": "2", - "id": "194d32f6-88a8-451e-87a4-99e91b5426e0", - "last_modified": 1773214792470 - }, { "os": "custom", "name": "1080p Full HD Television", @@ -268,40 +7,12 @@ "touch": false, "width": 1920, "height": 1080, - "schema": 1773152386973, - "featured": true, + "schema": 1653402055990, + "featured": false, "userAgent": "", "pixelRatio": "1", "id": "fdc3221b-38e3-40a6-8497-6a9259a8d6b4", - "last_modified": 1773214792468 - }, - { - "os": "iOS", - "name": "iPad Pro 11-inch (old)", - "type": "tablets", - "touch": true, - "width": 834, - "height": 1194, - "schema": 1773152937073, - "featured": false, - "userAgent": "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - "pixelRatio": "2", - "id": "d3be568b-b9fb-4995-809e-9464b8e2a820", - "last_modified": 1773214792466 - }, - { - "os": "iOS", - "name": "iPad Pro 12.9-inch (old)", - "type": "tablets", - "touch": true, - "width": 1024, - "height": 1366, - "schema": 1773152935590, - "featured": false, - "userAgent": "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - "pixelRatio": "2", - "id": "95a71660-3141-4bd0-ae24-d5b49504c3f7", - "last_modified": 1773214792464 + "last_modified": 1653469171354 }, { "os": "custom", @@ -310,12 +21,12 @@ "touch": false, "width": 3840, "height": 2160, - "schema": 1773152793884, - "featured": true, + "schema": 1653402055166, + "featured": false, "userAgent": "", "pixelRatio": "1", "id": "3c1e2dbc-a9c3-4302-9d14-5c01f56f8dba", - "last_modified": 1773214792462 + "last_modified": 1653469171351 }, { "os": "", @@ -324,12 +35,12 @@ "touch": false, "width": 1280, "height": 800, - "schema": 1773152889465, - "featured": true, + "schema": 1653402054240, + "featured": false, "userAgent": "", "pixelRatio": "1", "id": "77794a97-2c31-4a76-be20-897a1b91e534", - "last_modified": 1773214792460 + "last_modified": 1653469171347 }, { "os": "", @@ -338,208 +49,26 @@ "touch": true, "width": 1280, "height": 950, - "schema": 1773152886133, - "featured": true, + "schema": 1653402053431, + "featured": false, "userAgent": "", "pixelRatio": "1", "id": "9a1e862c-2cf0-493b-8755-9d8702b8cdbd", - "last_modified": 1773214792456 + "last_modified": 1653469171344 }, { "os": "", - "name": "iPad", - "type": "tablets", - "touch": true, - "width": 810, - "height": 1080, - "schema": 1773152834942, + "name": "Laptop with HiDPI screen", + "type": "laptops", + "touch": false, + "width": 1440, + "height": 900, + "schema": 1653402052509, "featured": false, - "userAgent": "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", + "userAgent": "", "pixelRatio": "2", - "id": "dc9416b1-958f-4711-8b13-ccc4871efba0", - "last_modified": 1773214792454 - }, - { - "os": "iOS", - "name": "iPhone 12/13 mini", - "type": "phones", - "touch": true, - "width": 375, - "height": 812, - "schema": 1773152929547, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "1fdbcd95-65b2-407b-b289-38195d966295", - "last_modified": 1773214792452 - }, - { - "os": "iOS", - "name": "iPhone 12/13 + Pro", - "type": "phones", - "touch": true, - "width": 390, - "height": 844, - "schema": 1773152925787, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "b00248a3-cb9c-47c6-ae45-b22462094974", - "last_modified": 1773214792447 - }, - { - "os": "iOS", - "name": "iPhone 12/13 Pro Max", - "type": "phones", - "touch": true, - "width": 428, - "height": 926, - "schema": 1773152924050, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "2352b72f-c2bf-4cdf-9635-219c4b59414f", - "last_modified": 1773214792445 - }, - { - "os": "iOS", - "name": "iPhone 11 Pro Max", - "type": "phones", - "touch": true, - "width": 414, - "height": 896, - "schema": 1773152934160, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "6cd66c7f-6dcb-4aeb-951a-52204be9b33d", - "last_modified": 1773214792443 - }, - { - "os": "iOS", - "name": "iPhone SE", - "type": "phones", - "touch": true, - "width": 375, - "height": 667, - "schema": 1773152908127, - "featured": true, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", - "pixelRatio": "2", - "id": "1a568a84-e52e-45f1-a30f-f66bec3f99f8", - "last_modified": 1773214792441 - }, - { - "os": "iOS", - "name": "iPhone 11 Pro", - "type": "phones", - "touch": true, - "width": 375, - "height": 812, - "schema": 1773152932330, - "featured": false, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", - "pixelRatio": "3", - "id": "c46bde65-07b8-41a0-98f7-bea4a3802074", - "last_modified": 1773214792439 - }, - { - "os": "iOS", - "name": "iPhone XR/11", - "type": "phones", - "touch": true, - "width": 414, - "height": 896, - "schema": 1773152905704, - "featured": true, - "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/12.0 Mobile/15A372 Safari/604.1", - "pixelRatio": "2", - "id": "e0fb4908-066e-4753-bfa8-9a70d6c61832", - "last_modified": 1773214792436 - }, - { - "os": "", - "name": "Pixel 5", - "type": "phones", - "touch": true, - "width": 393, - "height": 851, - "schema": 1773152844514, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "2.75", - "id": "8fb63fed-70f1-4be2-8630-00a3a3297ae1", - "last_modified": 1773214792432 - }, - { - "os": "Android", - "name": "Galaxy S20", - "type": "phones", - "touch": true, - "width": 360, - "height": 800, - "schema": 1773152807984, - "featured": false, - "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "4", - "id": "fa90254c-1024-49a0-9ff5-5b7abcd1839a", - "last_modified": 1773214792409 - }, - { - "os": "Android", - "name": "Galaxy S9/S9+", - "type": "phones", - "touch": true, - "width": 360, - "height": 740, - "schema": 1773152820591, - "featured": false, - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/109.0.0.0 Mobile Safari/537.36", - "pixelRatio": "4", - "id": "c1202c45-5e1b-4210-83cc-f6ad0370ddc0", - "last_modified": 1773214792404 - }, - { - "os": "Android", - "name": "Galaxy S20+", - "type": "phones", - "touch": true, - "width": 384, - "height": 854, - "schema": 1773152811603, - "featured": false, - "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "3.75", - "id": "952f7ed0-e9aa-452f-af8f-99409ef382cc", - "last_modified": 1773214792397 - }, - { - "os": "Android", - "name": "Galaxy S10/S10+", - "type": "phones", - "touch": true, - "width": 360, - "height": 760, - "schema": 1773152804867, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/146.0.0.0 Mobile Safari/537.36", - "pixelRatio": "4", - "id": "2ddff760-91c4-4983-ba9b-681fa36b69fb", - "last_modified": 1773214792395 - }, - { - "os": "Android", - "name": "Galaxy Note 9", - "type": "phones", - "touch": true, - "width": 414, - "height": 846, - "schema": 1773152800247, - "featured": true, - "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/109.0.0.0 Mobile Safari/537.36", - "pixelRatio": "3.5", - "id": "cc89dcde-38dc-47cc-895d-6558b9d02f54", - "last_modified": 1773214792388 + "id": "194d32f6-88a8-451e-87a4-99e91b5426e0", + "last_modified": 1653469171341 }, { "os": "iOS", @@ -583,6 +112,146 @@ "id": "0f41a7a2-6916-423a-b64a-047d0680a2a3", "last_modified": 1653469171331 }, + { + "os": "iOS", + "name": "iPad Pro (11-inch)", + "type": "tablets", + "touch": true, + "width": 834, + "height": 1194, + "schema": 1653402049176, + "featured": false, + "userAgent": "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", + "pixelRatio": "2", + "id": "d3be568b-b9fb-4995-809e-9464b8e2a820", + "last_modified": 1653469171328 + }, + { + "os": "iOS", + "name": "iPad Pro (12.9-inch)", + "type": "tablets", + "touch": true, + "width": 1024, + "height": 1366, + "schema": 1653402048304, + "featured": false, + "userAgent": "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", + "pixelRatio": "2", + "id": "95a71660-3141-4bd0-ae24-d5b49504c3f7", + "last_modified": 1653469171325 + }, + { + "os": "", + "name": "Nexus 10", + "type": "tablets", + "touch": true, + "width": 800, + "height": 1280, + "schema": 1653402047489, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36", + "pixelRatio": "2", + "id": "38fcf855-b796-4e11-9565-0cfc0e11d21e", + "last_modified": 1653469171322 + }, + { + "os": "", + "name": "iPad", + "type": "tablets", + "touch": true, + "width": 810, + "height": 1080, + "schema": 1653402046688, + "featured": true, + "userAgent": "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", + "pixelRatio": "2", + "id": "dc9416b1-958f-4711-8b13-ccc4871efba0", + "last_modified": 1653469171319 + }, + { + "os": "iOS", + "name": "iPhone 12/13 mini", + "type": "phones", + "touch": true, + "width": 375, + "height": 812, + "schema": 1653402045852, + "featured": true, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", + "pixelRatio": "3", + "id": "1fdbcd95-65b2-407b-b289-38195d966295", + "last_modified": 1653469171316 + }, + { + "os": "", + "name": "Kindle Fire HDX", + "type": "tablets", + "touch": true, + "width": 800, + "height": 1280, + "schema": 1653402045017, + "featured": true, + "userAgent": "Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true", + "pixelRatio": "2", + "id": "b1bd6309-985f-42b6-a52c-9a7bc1ed17db", + "last_modified": 1653469171313 + }, + { + "os": "iOS", + "name": "iPhone 12/13 + Pro", + "type": "phones", + "touch": true, + "width": 390, + "height": 844, + "schema": 1653402044074, + "featured": true, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", + "pixelRatio": "3", + "id": "b00248a3-cb9c-47c6-ae45-b22462094974", + "last_modified": 1653469171310 + }, + { + "os": "iOS", + "name": "iPhone 12/13 Pro Max", + "type": "phones", + "touch": true, + "width": 428, + "height": 926, + "schema": 1653402043230, + "featured": true, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", + "pixelRatio": "3", + "id": "2352b72f-c2bf-4cdf-9635-219c4b59414f", + "last_modified": 1653469171307 + }, + { + "os": "iOS", + "name": "iPhone 11 Pro Max", + "type": "phones", + "touch": true, + "width": 414, + "height": 896, + "schema": 1653402042024, + "featured": true, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", + "pixelRatio": "3", + "id": "6cd66c7f-6dcb-4aeb-951a-52204be9b33d", + "last_modified": 1653469171304 + }, + { + "os": "iOS", + "name": "iPhone SE 2nd gen", + "type": "phones", + "touch": true, + "width": 375, + "height": 667, + "schema": 1653402041203, + "featured": true, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", + "pixelRatio": "2", + "id": "1a568a84-e52e-45f1-a30f-f66bec3f99f8", + "last_modified": 1653469171301 + }, { "os": "iOS", "name": "iPhone XS Max", @@ -597,6 +266,48 @@ "id": "09f6a69f-7d40-469f-a052-dbee6f260889", "last_modified": 1653469171298 }, + { + "os": "iOS", + "name": "iPhone 11 Pro", + "type": "phones", + "touch": true, + "width": 375, + "height": 812, + "schema": 1653402039442, + "featured": true, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1", + "pixelRatio": "3", + "id": "c46bde65-07b8-41a0-98f7-bea4a3802074", + "last_modified": 1653469171295 + }, + { + "os": "iOS", + "name": "iPhone XR/11", + "type": "phones", + "touch": true, + "width": 414, + "height": 896, + "schema": 1653402038431, + "featured": false, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/12.0 Mobile/15A372 Safari/604.1", + "pixelRatio": "2", + "id": "e0fb4908-066e-4753-bfa8-9a70d6c61832", + "last_modified": 1653469171291 + }, + { + "os": "iOS", + "name": "iPhone 6/7/8 Plus", + "type": "phones", + "touch": true, + "width": 414, + "height": 736, + "schema": 1653402037544, + "featured": false, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1", + "pixelRatio": "3", + "id": "a163f231-2560-4e5e-b88c-e5b2aecb2944", + "last_modified": 1653469171288 + }, { "os": "iOS", "name": "iPhone X/XS", @@ -610,7 +321,315 @@ "pixelRatio": "3", "id": "2375f7f9-e2b0-42d1-8a97-e5fe2dbdc8f0", "last_modified": 1653469171285 + }, + { + "os": "", + "name": "Pixel 5", + "type": "phones", + "touch": true, + "width": 393, + "height": 851, + "schema": 1653402035842, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36", + "pixelRatio": "2.75", + "id": "8fb63fed-70f1-4be2-8630-00a3a3297ae1", + "last_modified": 1653469171282 + }, + { + "os": "iOS", + "name": "iPhone 6/7/8", + "type": "phones", + "touch": true, + "width": 375, + "height": 667, + "schema": 1653402034968, + "featured": false, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1", + "pixelRatio": "2", + "id": "fd20c21d-2cf7-45bb-89c2-123f123242b1", + "last_modified": 1653469171279 + }, + { + "os": "iOS", + "name": "iPhone 5/SE", + "type": "phones", + "touch": true, + "width": 320, + "height": 568, + "schema": 1653402034037, + "featured": false, + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1", + "pixelRatio": "2", + "id": "8aa68ae4-1515-466a-86ca-a4b544189863", + "last_modified": 1653469171276 + }, + { + "os": "KaiOS", + "name": "Nokia 8110 4G", + "type": "phones", + "touch": true, + "width": 240, + "height": 320, + "schema": 1653402033208, + "featured": false, + "userAgent": "Mozilla/5.0 (Mobile; Nokia 8110 4G; rv:48.0) Gecko/48.0 IceCat/48.0 KAIOS/2.5", + "pixelRatio": "1", + "id": "50677b6f-ffb3-4714-b0d0-f5621dec5d51", + "last_modified": 1653469171273 + }, + { + "os": "", + "name": "Pixel 2", + "type": "phones", + "touch": true, + "width": 411, + "height": 731, + "schema": 1653402032349, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "2.625", + "id": "9d07cebc-4d40-45cc-8e94-6385c1f24dd0", + "last_modified": 1653469171270 + }, + { + "os": "", + "name": "Pixel 2 XL", + "type": "phones", + "touch": true, + "width": 411, + "height": 823, + "schema": 1653402031510, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "3.5", + "id": "5cf20040-4d25-42e2-a4d8-c6b83927ec84", + "last_modified": 1653469171267 + }, + { + "os": "", + "name": "Nexus 5X", + "type": "phones", + "touch": true, + "width": 412, + "height": 732, + "schema": 1653402030677, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "2.625", + "id": "33c1bdd3-892b-441c-8168-dc2d82bc1c61", + "last_modified": 1653469171264 + }, + { + "os": "", + "name": "Nexus 6P", + "type": "phones", + "touch": true, + "width": 412, + "height": 732, + "schema": 1653402029836, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "3.5", + "id": "378c650b-331d-430d-bd13-d6fcab803bfe", + "last_modified": 1653469171261 + }, + { + "os": "", + "name": "LG Optimus L70", + "type": "phones", + "touch": true, + "width": 384, + "height": 640, + "schema": 1653402029013, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "1.25", + "id": "9d0f9ec1-5e69-489e-a1d9-27dbd4a7a583", + "last_modified": 1653469171258 + }, + { + "os": "", + "name": "Microsoft Lumia 950", + "type": "phones", + "touch": true, + "width": 360, + "height": 640, + "schema": 1653402028123, + "featured": false, + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263", + "pixelRatio": "4", + "id": "21498efe-cd28-40b9-85ce-7468d159d674", + "last_modified": 1653469171255 + }, + { + "os": "Android", + "name": "Galaxy Note 20 Ultra", + "type": "phones", + "touch": true, + "width": 412, + "height": 883, + "schema": 1653402027292, + "featured": true, + "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36", + "pixelRatio": "3.5", + "id": "54044ca7-882c-4372-bd5b-250f746f558d", + "last_modified": 1653469171252 + }, + { + "os": "Android", + "name": "Galaxy S20", + "type": "phones", + "touch": true, + "width": 360, + "height": 800, + "schema": 1653402026421, + "featured": true, + "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36", + "pixelRatio": "4", + "id": "fa90254c-1024-49a0-9ff5-5b7abcd1839a", + "last_modified": 1653469171248 + }, + { + "os": "Android", + "name": "Galaxy S20 Ultra", + "type": "phones", + "touch": true, + "width": 412, + "height": 915, + "schema": 1653402025526, + "featured": true, + "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36", + "pixelRatio": "3.5", + "id": "74de352e-4de2-4df7-939b-44007425ceaa", + "last_modified": 1653469171245 + }, + { + "os": "Android", + "name": "Galaxy S20+", + "type": "phones", + "touch": true, + "width": 384, + "height": 854, + "schema": 1653402024581, + "featured": true, + "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36", + "pixelRatio": "3.75", + "id": "952f7ed0-e9aa-452f-af8f-99409ef382cc", + "last_modified": 1653469171242 + }, + { + "os": "Android", + "name": "Galaxy S10/S10+", + "type": "phones", + "touch": false, + "width": 360, + "height": 760, + "schema": 1653402023695, + "featured": true, + "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36", + "pixelRatio": "4", + "id": "2ddff760-91c4-4983-ba9b-681fa36b69fb", + "last_modified": 1653469171239 + }, + { + "os": "", + "name": "Galaxy S5", + "type": "phones", + "touch": true, + "width": 360, + "height": 640, + "schema": 1653402022022, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "3", + "id": "8644e66e-6369-4470-84e6-8376622a7e4d", + "last_modified": 1653469171236 + }, + { + "os": "", + "name": "Galaxy Note 3", + "type": "phones", + "touch": true, + "width": 360, + "height": 640, + "schema": 1653402021138, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", + "pixelRatio": "3", + "id": "185a17fe-82a5-45bb-b745-9b532e608baf", + "last_modified": 1653469171233 + }, + { + "os": "Android", + "name": "Galaxy Note 9", + "type": "phones", + "touch": true, + "width": 414, + "height": 846, + "schema": 1653402020220, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "3.5", + "id": "cc89dcde-38dc-47cc-895d-6558b9d02f54", + "last_modified": 1653469171230 + }, + { + "os": "", + "name": "Microsoft Lumia 550", + "type": "phones", + "touch": true, + "width": 360, + "height": 640, + "schema": 1653402019422, + "featured": false, + "userAgent": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263", + "pixelRatio": "2", + "id": "b447bc92-6bef-4ac3-b56c-102a725d508c", + "last_modified": 1653469171227 + }, + { + "os": "Android", + "name": "Galaxy S9/S9+", + "type": "phones", + "touch": true, + "width": 360, + "height": 740, + "schema": 1653402018618, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/67.0.3396.87 Mobile Safari/537.36", + "pixelRatio": "4", + "id": "c1202c45-5e1b-4210-83cc-f6ad0370ddc0", + "last_modified": 1653469171224 + }, + { + "os": "Android", + "name": "Galaxy Note 20", + "type": "phones", + "touch": true, + "width": 412, + "height": 915, + "schema": 1653402017748, + "featured": true, + "userAgent": "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36", + "pixelRatio": "2.625", + "id": "8f0f0507-ce41-40e8-b4bc-b569dd4fec13", + "last_modified": 1653469171221 + }, + { + "os": "", + "name": "Nexus 7", + "type": "tablets", + "touch": true, + "width": 600, + "height": 960, + "schema": 1653401612907, + "featured": false, + "userAgent": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36", + "pixelRatio": "2", + "id": "470c91dc-2239-4718-a6e9-7c018cf870f1", + "last_modified": 1653469171218 } ], - "timestamp": 1773214792526 + "timestamp": 1653469171354 } diff --git a/icecat/services/settings/dumps/main/password-rules.json b/icecat/services/settings/dumps/main/password-rules.json index 75f4eb8817..92a1e32be8 100644 --- a/icecat/services/settings/dumps/main/password-rules.json +++ b/icecat/services/settings/dumps/main/password-rules.json @@ -1,203 +1,5 @@ { "data": [ - { - "Domain": "bkvenergy.com", - "password-rules": "minlength: 8; maxlength: 12; required: upper; required: lower; required: digit; required: [-~!@#$%^&*()_=+,<.> ];", - "id": "79120746-e8f2-4ff2-b18e-730f72e35156", - "last_modified": 1764684322196 - }, - { - "Domain": "sjwaterhub.com", - "password-rules": "minlength: 8; maxlength: 30; required: digit, lower, upper; allowed: [!#%&*.];", - "id": "ad4dc632-7790-42cf-a798-12a1fabf4585", - "last_modified": 1764684322192 - }, - { - "Domain": "promozoneapp.nmlottery.com", - "password-rules": "minlength: 6; maxlength: 16; required: lower; required: upper; required: digit; allowed: special;", - "id": "b84b78b1-6f59-4b63-813f-ac1965568c72", - "last_modified": 1764684322188 - }, - { - "Domain": "mypatientvisit.com", - "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [!#$%&*+.;?@^_~];", - "id": "5eb5ee14-8f2c-4397-afa9-bd59fc79f4df", - "last_modified": 1764684322177 - }, - { - "Domain": "mybam.bcbsnm.com", - "password-rules": "minlength: 8; maxlength: 64; max-consecutive: 2; required: lower; required: upper; required: digit; allowed: [!#$%&()*@[^{}~];", - "id": "21a8ea3d-676d-409a-9dc5-8a3ec72d7d9a", - "last_modified": 1764684322173 - }, - { - "Domain": "id.westfield.com", - "password-rules": "minlength: 9; maxlength: 20; required: lower; required: upper; required: digit; required: [!\"#&'()*,./:;?@[\\^_`{|}~];", - "id": "37ac075d-294f-4c68-b5ae-63324992786b", - "last_modified": 1764684322169 - }, - { - "Domain": "id.nfpa.org", - "password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; required: [-\"^#$%&'()*+:=@[_|{}~]];", - "id": "9bf8d9d2-ffa4-4bf6-8b3c-aa3ed98b1114", - "last_modified": 1764684322166 - }, - { - "Domain": "cardcash.com", - "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [!$%&*?@];", - "id": "ed380255-5637-4a0a-9336-54e743632071", - "last_modified": 1764684322162 - }, - { - "Domain": "auth.zennioptical.com", - "password-rules": "minlength: 8; maxlength: 14; required: lower; required: upper; required: digit; allowed: special;", - "id": "c5e8a7c1-e20c-4d60-b411-6f2cadf75d35", - "last_modified": 1764684322157 - }, - { - "Domain": "app8menu.com", - "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [@$!%*?&];", - "id": "332895b3-7ed5-4353-abfa-2540cd218959", - "last_modified": 1764684322153 - }, - { - "Domain": "publix.com", - "password-rules": "minlength: 8; maxlength: 28; required: upper; required: lower; allowed: digit,[!#$%*@^];", - "id": "2f716ab9-e74b-4c12-9c49-0cb6a2e819f7", - "last_modified": 1764684322149 - }, - { - "Domain": "themovingportal.co.uk", - "password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; allowed: [-@#$%^&*_+={}|\\:',?/'~\" ();.[]];", - "id": "b5cdfe1b-6582-42e2-ae6a-70abf3cff53e", - "last_modified": 1764684322146 - }, - { - "Domain": "ticketweb.com", - "password-rules": "minlength: 12; maxlength: 15;", - "id": "71bd6187-4ebe-4be4-8f82-617a8baebd0a", - "last_modified": 1764684322142 - }, - { - "Domain": "act.org", - "password-rules": "minlength: 8; maxlength: 64; required: lower; required: upper; required: digit; required: [!#$%&*@^];", - "id": "444e2e0f-e423-4702-8f27-2cea28fd97c4", - "last_modified": 1764684322138 - }, - { - "Domain": "yeti.com", - "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [#$%*];", - "id": "a14cc11d-9f16-4c0c-aa7e-ca4010d38967", - "last_modified": 1764684322135 - }, - { - "Domain": "vons.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "427bb481-ac5e-463c-b164-e2e2d9a6eb94", - "last_modified": 1764684322131 - }, - { - "Domain": "tomthumb.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "5790bfe5-d80f-4067-b47d-967b6219e307", - "last_modified": 1764684322128 - }, - { - "Domain": "starmarket.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "de0a163b-0538-402a-9a4b-08da580bb03a", - "last_modified": 1764684322124 - }, - { - "Domain": "shaws.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "c98a263c-08ab-4f5b-bdce-4c4d4a6bae1a", - "last_modified": 1764684322120 - }, - { - "Domain": "savemart.com", - "password-rules": "minlength: 8; maxlength: 12; required: digit; required: upper,lower; required: [!#$%&@]; allowed: ascii-printable;", - "id": "124261a6-9926-4d4c-ab98-b1bf2bde81b1", - "last_modified": 1764684322117 - }, - { - "Domain": "safeway.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "e32a0925-07e7-47c6-af3c-0791d873cc7e", - "last_modified": 1764684322113 - }, - { - "Domain": "randalls.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "bf4996a5-4556-4ba3-968d-af8143f4f22c", - "last_modified": 1764684322109 - }, - { - "Domain": "pavilions.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "2c15e93c-4780-4775-80c8-08c66f9f756f", - "last_modified": 1764684322106 - }, - { - "Domain": "kingsfoodmarkets.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "68647a6b-179b-4742-86a2-1cbfcd4c564d", - "last_modified": 1764684322102 - }, - { - "Domain": "jewelosco.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "488c6089-7e00-4081-a207-7baefa5cd259", - "last_modified": 1764684322048 - }, - { - "Domain": "haggen.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "8de06c6c-e07f-446a-8b25-f8129cf1c717", - "last_modified": 1764684322044 - }, - { - "Domain": "carrsqc.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "42f897e7-1106-47e9-b294-128fd45488e4", - "last_modified": 1764684322039 - }, - { - "Domain": "balduccis.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "359e538d-f52d-4662-ba4e-f65c28abb210", - "last_modified": 1764684322035 - }, - { - "Domain": "andronicos.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "982e3235-9d92-4d01-894c-6b81298e4b53", - "last_modified": 1764684322032 - }, - { - "Domain": "albertsons.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "42346b95-1942-4a8b-9d3d-e4bc87804718", - "last_modified": 1764684322028 - }, - { - "Domain": "acmemarkets.com", - "password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;", - "id": "69b79395-9801-4295-808c-a811ccd76a2f", - "last_modified": 1764684322024 - }, - { - "Domain": "ea.com", - "password-rules": "minlength: 8; maxlength: 64; required: lower; required: upper; required: digit; allowed: special;", - "id": "925e748f-9880-4af9-b5a1-fb28e5c1c7e7", - "last_modified": 1764684322019 - }, - { - "Domain": "hetzner.com", - "password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [-^!$%/()=?+#.,;:~*@{}_&[]];", - "id": "a27316a5-29c1-468f-b046-655637fe7fc6", - "last_modified": 1764684322014 - }, { "Domain": "nekochat.cn", "password-rules": "minlength: 8; maxlength: 15; required: lower; required: upper; required: digit;", @@ -1584,6 +1386,12 @@ "id": "2a635fd0-1a69-40e7-90dd-ed0ec396b384", "last_modified": 1624479577265 }, + { + "Domain": "ea.com", + "password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; allowed: special;", + "id": "925e748f-9880-4af9-b5a1-fb28e5c1c7e7", + "last_modified": 1624479577260 + }, { "Domain": "easycoop.com", "password-rules": "minlength: 8; required: upper; required: special; allowed: lower, digit;", @@ -1740,6 +1548,12 @@ "id": "e804c8d8-8d33-463a-b228-c2fbdcad663d", "last_modified": 1624479577129 }, + { + "Domain": "hetzner.com", + "password-rules": "minlength: 8; required: lower; required: upper; required: digit, special;", + "id": "a27316a5-29c1-468f-b046-655637fe7fc6", + "last_modified": 1624479577124 + }, { "Domain": "hilton.com", "password-rules": "minlength: 8; maxlength: 32; required: lower; required: upper; required: digit;", @@ -2419,5 +2233,5 @@ "last_modified": 1624479576629 } ], - "timestamp": 1764684322196 + "timestamp": 1743683182607 } diff --git a/icecat/services/settings/dumps/main/remote-permissions.json b/icecat/services/settings/dumps/main/remote-permissions.json index 1f98763a8e..7c18ac7c86 100644 --- a/icecat/services/settings/dumps/main/remote-permissions.json +++ b/icecat/services/settings/dumps/main/remote-permissions.json @@ -1,4 +1,13 @@ { - "data": [], - "timestamp": 1771411876459 + "data": [ + { + "type": "https-only-load-insecure", + "origin": "http://rough-subsequent-message.glitch.me", + "schema": 1733820446033, + "capability": 10, + "id": "9f6e573e-d615-4538-8d22-dcb9f33e5a06", + "last_modified": 1733839156202 + } + ], + "timestamp": 1733839156202 } diff --git a/icecat/services/settings/dumps/main/search-config-icons.json b/icecat/services/settings/dumps/main/search-config-icons.json index 9aaea009ed..e82bea6cc0 100644 --- a/icecat/services/settings/dumps/main/search-config-icons.json +++ b/icecat/services/settings/dumps/main/search-config-icons.json @@ -1,73 +1,5 @@ { "data": [ - { - "schema": 1773705608175, - "imageSize": 16, - "attachment": { - "hash": "b9aeff79e16d2db1b53574ceacae0149bc3c5b5d6b6dcd3542a1d7034ed64b70", - "size": 1717, - "filename": "startpage-16.svg", - "location": "main-workspace/search-config-icons/a2a88863-029c-4197-8a1c-fee311fc1aae.svg", - "mimetype": "image/svg+xml" - }, - "engineIdentifiers": [ - "startpage" - ], - "filter_expression": "env.appinfo.OS != \"iOS\"", - "id": "acae3d3c-b09e-47f0-a9e5-57980d21fc4a", - "last_modified": 1774879272191 - }, - { - "schema": 1771977606099, - "imageSize": 96, - "attachment": { - "hash": "04dc1979cf7b962c95ca5c2b009208035017f1fb4128eabd7c775f6f49fb96ca", - "size": 4488, - "filename": "logo_googleg_gradient_round_color_1x_web_96dp.png", - "location": "main-workspace/search-config-icons/32165abf-ea41-426e-be93-d5e408f06aae.png", - "mimetype": "image/png" - }, - "engineIdentifiers": [ - "google" - ], - "filter_expression": "env.appinfo.OS == \"iOS\" || env.appinfo.OS == \"Android\"", - "id": "7edaf4fe-a8a0-432b-86d2-bf75ebe80851", - "last_modified": 1772466505212 - }, - { - "schema": 1771342005440, - "imageSize": 16, - "attachment": { - "hash": "1658dba5cc1e8acdee34d58496f90e7473375a2012f3a6147bb16777add1c581", - "size": 6478, - "filename": "duckduckgo.pdf", - "location": "main-workspace/search-config-icons/b9f8a8d5-3086-4b98-90f5-a29f577e3014.pdf", - "mimetype": "application/pdf" - }, - "engineIdentifiers": [ - "ddg" - ], - "filter_expression": "env.appinfo.OS == \"iOS\"", - "id": "b50c3e3d-7bd0-4118-856f-19b26b21d01f", - "last_modified": 1771343611639 - }, - { - "schema": 1771200005877, - "imageSize": 16, - "attachment": { - "hash": "6df9691adea0a28299e4392ae2eeb9816182f3bcb2e1820700ab918a3b98bc0c", - "size": 3197, - "filename": "duckduckgo.svg", - "location": "main-workspace/search-config-icons/e668474b-ca25-49f8-b555-d32f7b57c0b7.svg", - "mimetype": "image/svg+xml" - }, - "engineIdentifiers": [ - "ddg" - ], - "filter_expression": "env.appinfo.OS != \"iOS\"", - "id": "a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3", - "last_modified": 1771343611635 - }, { "schema": 1762992360903, "imageSize": 16, @@ -236,6 +168,23 @@ "id": "6644f26f-28ea-4222-929d-5d43a02dae05", "last_modified": 1744118264964 }, + { + "schema": 1743687938695, + "imageSize": 96, + "attachment": { + "hash": "3426b5100a6bdb45f8039f0c71a6b68193750ba7bae5b36e5ed31b2b7f372cda", + "size": 1357, + "filename": "azerdict_mobile.png", + "location": "main-workspace/search-config-icons/1229ffe4-7a6f-46d7-b664-5596df0aa730.png", + "mimetype": "image/png" + }, + "engineIdentifiers": [ + "azerdict" + ], + "filter_expression": "env.appinfo.OS == \"iOS\" || env.appinfo.OS == \"Android\"", + "id": "95ed201d-4ab8-4cb8-831d-454f53cab0f8", + "last_modified": 1744118264962 + }, { "schema": 1743687936599, "imageSize": 96, @@ -508,6 +457,23 @@ "id": "71f41a0c-5b70-4116-b30f-e62089083522", "last_modified": 1744118264921 }, + { + "schema": 1743687930970, + "imageSize": 96, + "attachment": { + "hash": "27541cb376bdda829a6cf9cefd13da112728881e3daa4ac3c1178d4ce15f1e8b", + "size": 1571, + "filename": "google_mobile.png", + "location": "main-workspace/search-config-icons/d9917c97-4593-4596-8ef0-cf0635e8aa36.png", + "mimetype": "image/png" + }, + "engineIdentifiers": [ + "google" + ], + "filter_expression": "env.appinfo.OS == \"iOS\" || env.appinfo.OS == \"Android\"", + "id": "7edaf4fe-a8a0-432b-86d2-bf75ebe80851", + "last_modified": 1744118264918 + }, { "schema": 1743687923256, "imageSize": 96, @@ -1057,6 +1023,22 @@ "id": "70fdd651-6c50-b7bb-09ec-7e85da259173", "last_modified": 1744118264847 }, + { + "schema": 1743687735700, + "imageSize": 16, + "attachment": { + "hash": "d994f806b1e4225b50be5ab681b2cecf845cc216a19a432d878cea3cb815bafd", + "size": 2799, + "filename": "ddg-16-icecat.ico", + "location": "main-workspace/search-config-icons/c6ae7df5-0396-4892-b76a-b35a00044a13.ico", + "mimetype": "image/x-icon" + }, + "engineIdentifiers": [ + "ddg" + ], + "id": "a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3", + "last_modified": 1744118264845 + }, { "schema": 1743687839798, "imageSize": 16, @@ -1157,6 +1139,23 @@ "id": "5ded611d-44b2-dc46-fd67-fb116888d75d", "last_modified": 1744118264833 }, + { + "schema": 1743687843227, + "imageSize": 16, + "attachment": { + "hash": "24daa27a3234d01b5add42e027b0a34000d0ab47c17fe3924c2ca267b7b61c19", + "size": 5430, + "filename": "azerdict-16-icecat.ico", + "location": "main-workspace/search-config-icons/4d6f988d-8905-4aa7-aeea-5b04a6197767.ico", + "mimetype": "image/x-icon" + }, + "engineIdentifiers": [ + "azerdict" + ], + "filter_expression": "env.appinfo.OS != \"iOS\" && env.appinfo.OS != \"Android\"", + "id": "7bbe6c5c-fdb8-2845-a4f4-e1382e708a0e", + "last_modified": 1744118264831 + }, { "schema": 1743687843968, "imageSize": 16, @@ -1207,5 +1206,5 @@ "last_modified": 1744118264825 } ], - "timestamp": 1774879272191 + "timestamp": 1763049497744 } diff --git a/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3 b/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3 index c0ef45f014..3ad20825c1 100644 Binary files a/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3 and b/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3 differ diff --git a/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json b/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json index df6fd5a975..6d03f86bca 100644 --- a/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json +++ b/icecat/services/settings/dumps/main/search-config-icons/a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3.meta.json @@ -1 +1 @@ -{"schema":1771200005877,"imageSize":16,"attachment":{"hash":"6df9691adea0a28299e4392ae2eeb9816182f3bcb2e1820700ab918a3b98bc0c","size":3197,"filename":"duckduckgo.svg","location":"main-workspace/search-config-icons/e668474b-ca25-49f8-b555-d32f7b57c0b7.svg","mimetype":"image/svg+xml"},"engineIdentifiers":["ddg"],"filter_expression":"env.appinfo.OS != \"iOS\"","id":"a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3","last_modified":1771343611635} \ No newline at end of file +{"schema":1743687735700,"imageSize":16,"attachment":{"hash":"d994f806b1e4225b50be5ab681b2cecf845cc216a19a432d878cea3cb815bafd","size":2799,"filename":"ddg-16-icecat.ico","location":"main-workspace/search-config-icons/c6ae7df5-0396-4892-b76a-b35a00044a13.ico","mimetype":"image/x-icon"},"engineIdentifiers":["ddg"],"id":"a06dc3fd-4bdb-41f3-2ebc-4cbed06a9bd3","last_modified":1744118264845} \ No newline at end of file diff --git a/icecat/services/settings/dumps/main/search-config-v2.json b/icecat/services/settings/dumps/main/search-config-v2.json index dc2f8f777d..1bb4ace61f 100644 --- a/icecat/services/settings/dumps/main/search-config-v2.json +++ b/icecat/services/settings/dumps/main/search-config-v2.json @@ -4287,7 +4287,7 @@ }, "id": "04e99a38-13ee-47d8-8aa4-64482b3dea99", "identifier": "ddg", - "last_modified": 1779, + "last_modified": 1767, "recordType": "engine", "schema": 1718698362015, "variants": [ @@ -4301,7 +4301,7 @@ { "globalDefault": "ddg", "id": "f3891684-2348-4e7a-9765-0c5d2d0ab1b9", - "last_modified": 1778, + "last_modified": 1766, "recordType": "defaultEngines", "schema": 1702901837584, "specificDefaults": [] diff --git a/icecat/services/settings/dumps/main/search-telemetry-v2.json b/icecat/services/settings/dumps/main/search-telemetry-v2.json index b7e680dced..01fe4ccc20 100644 --- a/icecat/services/settings/dumps/main/search-telemetry-v2.json +++ b/icecat/services/settings/dumps/main/search-telemetry-v2.json @@ -1,21 +1,19 @@ { "data": [ { - "schema": 1774280721627, + "isSPA": true, + "schema": 1756952145762, "subframes": [], "components": [ { - "type": "ad_carousel", + "type": "ad_image_row", "included": { "parent": { - "selector": ".adsMvCarousel" - }, - "related": { - "selector": ".cr" + "selector": "[data-testid='pam.container']" }, "children": [ { - "selector": ".pa_item", + "selector": "[data-slide-index]", "countChildren": true } ] @@ -23,35 +21,10 @@ }, { "type": "ad_link", - "excluded": { + "included": { "parent": { - "selector": "aside" + "selector": "[data-testid='adResult']" } - }, - "included": { - "parent": { - "selector": ".sb_adTA" - }, - "children": [ - { - "type": "ad_sitelink", - "selector": ".b_vlist2col" - } - ] - } - }, - { - "type": "ad_sidebar", - "included": { - "parent": { - "selector": "aside" - }, - "children": [ - { - "selector": ".pa_item, .sb_adTA", - "countChildren": true - } - ] } }, { @@ -59,52 +32,14 @@ "topDown": true, "included": { "parent": { - "selector": "form#sb_form" + "selector": "._1zdrb._1cR1n" }, "related": { - "selector": "#sw_as" + "selector": "#search-suggestions" }, "children": [ { - "selector": "input[name='q']" - } - ] - } - }, - { - "type": "cookie_banner", - "topDown": true, - "included": { - "parent": { - "selector": "div#bnp_cookie_banner" - }, - "children": [ - { - "selector": "button#bnp_btn_accept", - "eventListeners": [ - { - "action": "clicked_accept", - "eventType": "click" - } - ] - }, - { - "selector": "button#bnp_btn_reject", - "eventListeners": [ - { - "action": "clicked_reject", - "eventType": "click" - } - ] - }, - { - "selector": "a#bnp_btn_preference", - "eventListeners": [ - { - "action": "clicked_more_options", - "eventType": "click" - } - ] + "selector": "input[type='search']" } ] } @@ -115,122 +50,89 @@ } ], "shoppingTab": { - "regexp": "^/shop?", - "selector": "#b-scopeListItem-shop a" + "regexp": "t=shopping", + "selector": "[data-testid='shoppingNavItem']", + "inspectRegexpInSERP": true }, "taggedCodes": [ - "MOZ2", - "MOZ4", - "MOZ5", - "MOZA", - "MOZB", - "MOZD", - "MOZE", - "MOZI", - "MOZL", - "MOZM", - "MOZO", - "MOZR", - "MOZT", - "MOZW", - "MOZX", - "MZABT", - "MZCP", - "MZTOF", - "MZSL01", - "MZSL02", - "MZSL03" + "ff_android", + "ff_ios", + "brz-moz", + "icecatqwant" ], - "telemetryId": "bing", + "telemetryId": "qwant", "organicCodes": [], - "codeParamName": "pc", + "codeParamName": "client", + "pageTypeParam": { + "keys": [ + "t" + ], + "pageTypes": [ + { + "name": "web", + "target": "default_tab", + "values": [ + "web" + ], + "enabled": true, + "isDefault": true + }, + { + "name": "images", + "values": [ + "images" + ], + "enabled": false + }, + { + "name": "videos", + "values": [ + "videos" + ], + "enabled": false + }, + { + "name": "news", + "values": [ + "news" + ], + "enabled": false + }, + { + "name": "shopping", + "target": "shopping_tab", + "values": [ + "shopping" + ], + "enabled": true + } + ], + "enableSPAHandling": true + }, "queryParamName": "q", - "followOnCookies": [ - { - "host": "www.bing.com", - "name": "_SS", - "codeParamName": "PC", - "extraCodePrefixes": [], - "extraCodeParamName": "" - }, - { - "host": "www.bing.com", - "name": "SRCHS", - "codeParamName": "PC", - "extraCodePrefixes": [], - "extraCodeParamName": "" - }, - { - "host": "cn.bing.com", - "name": "_SS", - "codeParamName": "PC", - "extraCodePrefixes": [], - "extraCodeParamName": "" - }, - { - "host": "cn.bing.com", - "name": "SRCHS", - "codeParamName": "PC", - "extraCodePrefixes": [], - "extraCodeParamName": "" - } - ], "queryParamNames": [ "q" ], - "domainExtraction": { - "ads": [ - { - "method": "textContent", - "selectors": "#b_results .b_ad .b_attribution cite, .adsMvCarousel cite, aside cite" - } - ], - "nonAds": [ - { - "method": "textContent", - "selectors": "#b_results .b_algo .b_attribution cite" - } - ] - }, - "searchPageRegexp": "^https://(?:cn|www)\\.bing\\.com/search", - "nonAdsLinkRegexps": [ - "^https://(?:cn|www).bing.com/ck/a" - ], + "searchPageRegexp": "^https://www\\.qwant\\.com/", + "filter_expression": "env.version|versionCompare(\"124.0a1\")>=0", "searchPageMatches": [ - "https://(?:cn|www).bing.com/search*" - ], - "impressionAttributes": [ - { - "key": "is_shopping_page", - "url": { - "regexp": "^/shop?" - } - }, - { - "key": "shopping_tab_displayed", - "element": { - "selector": "#b-scopeListItem-shop a", - "component": { - "type": "shopping_tab", - "countImpressions": true - } - } - }, - { - "key": "has_ai_summary", - "element": { - "selector": "#b_wpt_container_ml,.gs_aidisc,#copans_container" - } - } + "https://www.qwant.com/*" ], + "followOnParamNames": [], + "defaultPageQueryParam": { + "key": "t", + "value": "web" + }, "extraAdServersRegexps": [ - "^https://(?:cn|www)\\.bing\\.com/acli?c?k" + "^https://www\\.bing\\.com/acli?c?k", + "^https://api\\.qwant\\.com/v3/r/", + "^https://fdn\\.qwant\\.com/v3/r/" ], - "id": "e1eec461-f1f3-40de-b94b-3b670b78108c", - "last_modified": 1774283138114 + "id": "19c434a3-d173-4871-9743-290ac92a3f6b", + "last_modified": 1757010621729 }, { - "schema": 1773964810753, + "schema": 1754878540963, "subframes": [], "components": [ { @@ -299,15 +201,6 @@ ] } }, - { - "type": "refined_search_buttons", - "topDown": true, - "included": { - "parent": { - "selector": "a.nPDzT" - } - } - }, { "type": "ad_link", "excluded": { @@ -533,32 +426,6 @@ "ved", "ei" ], - "impressionAttributes": [ - { - "key": "is_shopping_page", - "url": { - "regexp": "&udm=28" - } - }, - { - "key": "shopping_tab_displayed", - "element": { - "regexp": "&udm=28", - "selector": "div[role='navigation'] a", - "component": { - "type": "shopping_tab", - "countImpressions": true - }, - "attributeName": "href" - } - }, - { - "key": "has_ai_summary", - "element": { - "selector": ".OZ9ddf.WAUd4" - } - } - ], "extraAdServersRegexps": [ "^https?://www\\.google(?:adservices)?\\.com/(?:pagead/)?aclk" ], @@ -566,10 +433,10 @@ "url" ], "id": "635a3325-1995-42d6-be09-dbe4b2a95453", - "last_modified": 1774283138111 + "last_modified": 1754960964129 }, { - "schema": 1774280720537, + "schema": 1753236937989, "subframes": [], "components": [ { @@ -769,52 +636,30 @@ "hy", "hz" ], - "impressionAttributes": [ - { - "key": "is_shopping_page", - "url": { - "regexp": "&ia=shopping&iax=shopping|&iax=shopping&ia=shopping" - } - }, - { - "key": "shopping_tab_displayed", - "element": { - "selector": "nav > ul > li > a[href*='ia=shopping']", - "component": { - "type": "shopping_tab", - "countImpressions": true - } - } - }, - { - "key": "has_ai_summary", - "element": { - "selector": ".zHmKXya03lRu_br7aWAj" - } - } - ], "extraAdServersRegexps": [ "^https://duckduckgo.com/y\\.js?.*ad_provider\\=", "^https://www\\.amazon\\.(?:[a-z.]{2,24}).*(?:tag=duckduckgo-)", "^https://links\\.duckduckgo\\.com/m\\.js\\?dsl=1" ], "id": "9dfd626b-26f2-4913-9d0a-27db6cb7d8ca", - "last_modified": 1774283138108 + "last_modified": 1753289524079 }, { - "isSPA": true, - "schema": 1774280719091, + "schema": 1751854531997, "subframes": [], "components": [ { - "type": "ad_image_row", + "type": "ad_carousel", "included": { "parent": { - "selector": "[data-testid='pam.container']" + "selector": ".adsMvCarousel" + }, + "related": { + "selector": ".cr" }, "children": [ { - "selector": "[data-slide-index]", + "selector": ".pa_item", "countChildren": true } ] @@ -822,10 +667,35 @@ }, { "type": "ad_link", + "excluded": { + "parent": { + "selector": "aside" + } + }, "included": { "parent": { - "selector": "[data-testid='adResult']" - } + "selector": ".sb_adTA" + }, + "children": [ + { + "type": "ad_sitelink", + "selector": ".b_vlist2col" + } + ] + } + }, + { + "type": "ad_sidebar", + "included": { + "parent": { + "selector": "aside" + }, + "children": [ + { + "selector": ".pa_item, .sb_adTA", + "countChildren": true + } + ] } }, { @@ -833,14 +703,52 @@ "topDown": true, "included": { "parent": { - "selector": "._1zdrb._1cR1n" + "selector": "form#sb_form" }, "related": { - "selector": "#search-suggestions" + "selector": "#sw_as" }, "children": [ { - "selector": "input[type='search']" + "selector": "input[name='q']" + } + ] + } + }, + { + "type": "cookie_banner", + "topDown": true, + "included": { + "parent": { + "selector": "div#bnp_cookie_banner" + }, + "children": [ + { + "selector": "button#bnp_btn_accept", + "eventListeners": [ + { + "action": "clicked_accept", + "eventType": "click" + } + ] + }, + { + "selector": "button#bnp_btn_reject", + "eventListeners": [ + { + "action": "clicked_reject", + "eventType": "click" + } + ] + }, + { + "selector": "a#bnp_btn_preference", + "eventListeners": [ + { + "action": "clicked_more_options", + "eventType": "click" + } + ] } ] } @@ -851,147 +759,98 @@ } ], "shoppingTab": { - "regexp": "t=shopping", - "selector": "[data-testid='shoppingNavItem']", - "inspectRegexpInSERP": true + "regexp": "^/shop?", + "selector": "#b-scopeListItem-shop a" }, "taggedCodes": [ - "ff_android", - "ff_ios", - "brz-moz", - "icecatqwant" + "MOZ2", + "MOZ4", + "MOZ5", + "MOZA", + "MOZB", + "MOZD", + "MOZE", + "MOZI", + "MOZL", + "MOZM", + "MOZO", + "MOZR", + "MOZT", + "MOZW", + "MOZX", + "MZABT", + "MZCP", + "MZTOF", + "MZSL01", + "MZSL02", + "MZSL03" ], - "telemetryId": "qwant", + "telemetryId": "bing", "organicCodes": [], - "codeParamName": "client", - "pageTypeParam": { - "keys": [ - "t" - ], - "pageTypes": [ - { - "name": "web", - "target": "default_tab", - "values": [ - "web" - ], - "enabled": true, - "isDefault": true - }, - { - "name": "images", - "values": [ - "images" - ], - "enabled": false - }, - { - "name": "videos", - "values": [ - "videos" - ], - "enabled": false - }, - { - "name": "news", - "values": [ - "news" - ], - "enabled": false - }, - { - "name": "shopping", - "target": "shopping_tab", - "values": [ - "shopping" - ], - "enabled": true - } - ], - "enableSPAHandling": true - }, + "codeParamName": "pc", "queryParamName": "q", + "followOnCookies": [ + { + "host": "www.bing.com", + "name": "_SS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + }, + { + "host": "www.bing.com", + "name": "SRCHS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + }, + { + "host": "cn.bing.com", + "name": "_SS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + }, + { + "host": "cn.bing.com", + "name": "SRCHS", + "codeParamName": "PC", + "extraCodePrefixes": [], + "extraCodeParamName": "" + } + ], "queryParamNames": [ "q" ], - "searchPageRegexp": "^https://www\\.qwant\\.com/", - "filter_expression": "env.version|versionCompare(\"124.0a1\")>=0", - "searchPageMatches": [ - "https://www.qwant.com/*" - ], - "followOnParamNames": [], - "impressionAttributes": [ - { - "key": "is_shopping_page", - "url": { - "regexp": "t=shopping" + "domainExtraction": { + "ads": [ + { + "method": "textContent", + "selectors": "#b_results .b_ad .b_attribution cite, .adsMvCarousel cite, aside cite" } - }, - { - "key": "shopping_tab_displayed", - "element": { - "regexp": "t=shopping", - "selector": "[data-testid='shoppingNavItem']", - "component": { - "type": "shopping_tab", - "countImpressions": true - }, - "attributeName": "href" + ], + "nonAds": [ + { + "method": "textContent", + "selectors": "#b_results .b_algo .b_attribution cite" } - }, - { - "key": "has_ai_summary", - "value": "false" - } - ], - "defaultPageQueryParam": { - "key": "t", - "value": "web" + ] }, - "extraAdServersRegexps": [ - "^https://www\\.bing\\.com/acli?c?k", - "^https://api\\.qwant\\.com/v3/r/", - "^https://fdn\\.qwant\\.com/v3/r/" + "searchPageRegexp": "^https://(?:cn|www)\\.bing\\.com/search", + "nonAdsLinkRegexps": [ + "^https://(?:cn|www).bing.com/ck/a" ], - "id": "19c434a3-d173-4871-9743-290ac92a3f6b", - "last_modified": 1774283138106 - }, - { - "schema": 1774280723741, - "subframes": [], - "taggedCodes": [ - "monline_dg", - "monline_3_dg", - "monline_4_dg", - "monline_7_dg" - ], - "telemetryId": "baidu", - "organicCodes": [], - "codeParamName": "tn", - "queryParamName": "wd", - "queryParamNames": [ - "wd", - "word" - ], - "searchPageRegexp": "^https://(?:m|www)\\.baidu\\.com/(?:s|baidu)", "searchPageMatches": [ - "https://m.baidu.com/s*", - "https://m.baidu.com/baidu*", - "https://www.baidu.com/s*", - "https://www.baidu.com/baidu*" + "https://(?:cn|www).bing.com/search*" ], - "followOnParamNames": [ - "oq" - ], - "impressionAttributes": [], "extraAdServersRegexps": [ - "^https?://www\\.baidu\\.com/baidu\\.php?" + "^https://(?:cn|www)\\.bing\\.com/acli?c?k" ], - "id": "19c434a3-d173-4871-9743-290ac92a3f6a", - "last_modified": 1774283138103 + "id": "e1eec461-f1f3-40de-b94b-3b670b78108c", + "last_modified": 1751891587705 }, { - "schema": 1774280722696, + "schema": 1750817732643, "subframes": [ { "regexp": "^https://syndicatedsearch\\.goog/afs/ads", @@ -1075,38 +934,47 @@ "https://www.ecosia.org/*" ], "expectedOrganicCodes": [], - "impressionAttributes": [ - { - "key": "is_shopping_page", - "url": { - "regexp": "/shopping?" - } - }, - { - "key": "shopping_tab_displayed", - "element": { - "regexp": "/shopping?", - "selector": "nav li[data-test-id='search-navigation-item-shopping'] a", - "component": { - "type": "shopping_tab", - "countImpressions": true - }, - "attributeName": "href" - } - }, - { - "key": "has_ai_summary", - "value": "false" - } - ], "extraAdServersRegexps": [ "^https://www\\.bing\\.com/acli?c?k", "^https://syndicatedsearch\\.goog/aclk\\?", "^https://www\\.googleadservices\\.com/pagead/aclk\\?" ], "id": "9a487171-3a06-4647-8866-36250ec84f3a", - "last_modified": 1774283138101 + "last_modified": 1750880107190 + }, + { + "schema": 1741189702306, + "subframes": [], + "taggedCodes": [ + "monline_dg", + "monline_3_dg", + "monline_4_dg", + "monline_7_dg" + ], + "telemetryId": "baidu", + "organicCodes": [], + "codeParamName": "tn", + "queryParamName": "wd", + "queryParamNames": [ + "wd", + "word" + ], + "searchPageRegexp": "^https://(?:m|www)\\.baidu\\.com/(?:s|baidu)", + "searchPageMatches": [ + "https://m.baidu.com/s*", + "https://m.baidu.com/baidu*", + "https://www.baidu.com/s*", + "https://www.baidu.com/baidu*" + ], + "followOnParamNames": [ + "oq" + ], + "extraAdServersRegexps": [ + "^https?://www\\.baidu\\.com/baidu\\.php?" + ], + "id": "19c434a3-d173-4871-9743-290ac92a3f6a", + "last_modified": 1741781945955 } ], - "timestamp": 1774283138114 + "timestamp": 1757010621729 } diff --git a/icecat/services/settings/dumps/main/urlbar-persisted-search-terms.json b/icecat/services/settings/dumps/main/urlbar-persisted-search-terms.json index 4cc054cd56..2ed69dd1a7 100644 --- a/icecat/services/settings/dumps/main/urlbar-persisted-search-terms.json +++ b/icecat/services/settings/dumps/main/urlbar-persisted-search-terms.json @@ -1,31 +1,5 @@ { "data": [ - { - "schema": 1774483206927, - "providerId": "google", - "excludeParams": [ - { - "key": "udm", - "values": [] - }, - { - "key": "tbm", - "values": [] - } - ], - "includeParams": [], - "searchPageRegexp": "^https://www\\.google\\.[^/]+/search\\b", - "filter_expression": "env.version|versionCompare(\"148.0a1\")>=0", - "id": "1a479a17-f8cf-4ce1-9086-41d1f3ef7b69", - "last_modified": 1775078290693 - }, - { - "schema": 1773705620356, - "providerId": "bing", - "searchPageRegexp": "^https://www\\.bing\\.com\\/search\\b", - "id": "eb97a1c7-112c-4d61-bcc0-07feaaac4643", - "last_modified": 1773858354866 - }, { "schema": 1719398671127, "providerId": "qwant", @@ -70,5 +44,5 @@ "last_modified": 1719927826946 } ], - "timestamp": 1775078290693 + "timestamp": 1719927826949 } diff --git a/icecat/services/settings/dumps/main/websites-with-shared-credential-backends.json b/icecat/services/settings/dumps/main/websites-with-shared-credential-backends.json index c1356dac32..535a198579 100644 --- a/icecat/services/settings/dumps/main/websites-with-shared-credential-backends.json +++ b/icecat/services/settings/dumps/main/websites-with-shared-credential-backends.json @@ -19,23 +19,6 @@ "americanairlines.com", "americanairlines.jp" ], - [ - "acmemarkets.com", - "albertsons.com", - "andronicos.com", - "balduccis.com", - "carrsqc.com", - "haggen.com", - "jewelosco.com", - "kingsfoodmarkets.com", - "pavilions.com", - "randalls.com", - "safeway.com", - "shaws.com", - "starmarket.com", - "tomthumb.com", - "vons.com" - ], [ "aetna.com", "banneraetna.myplanportal.com" @@ -101,10 +84,17 @@ "airnewzealand.com.au" ], [ - "albertsonsmarket.com", - "amigosunited.com", - "marketstreetunited.com", - "unitedsupermarkets.com" + "albertsons.com", + "acmemarkets.com", + "carrsqc.com", + "jewelosco.com", + "pavilions.com", + "randalls.com", + "safeway.com", + "shaws.com", + "starmarket.com", + "tomthumb.com", + "vons.com" ], [ "alelo.com.br", @@ -240,10 +230,6 @@ "braze.com", "braze.eu" ], - [ - "candyrect.com", - "nekochat.cn" - ], [ "capitalone.com", "capitalone360.com" @@ -256,12 +242,6 @@ "centralfcu.org", "centralfcu.com" ], - [ - "check24.at", - "check24.com", - "check24.de", - "check24.es" - ], [ "citi.com", "citibank.com", @@ -330,10 +310,6 @@ "docusign.com", "docusign.net" ], - [ - "dq.com", - "dairyqueen.com" - ], [ "drivethrucards.com", "drivethrucomics.com", @@ -380,8 +356,6 @@ ], [ "epicgames.com", - "fortnite.com", - "twinmotion.com", "unrealengine.com" ], [ @@ -448,17 +422,6 @@ "foursquare.com", "swarmapp.com" ], - [ - "gamefaqs.com", - "gamefaqs.gamespot.com" - ], - [ - "gamepedia.com", - "wikia.com", - "wikia.org", - "wikicities.com", - "fandom.com" - ], [ "gazduire.com.ro", "gazduire.net", @@ -473,10 +436,6 @@ "gogoair.com", "gogoinflight.com" ], - [ - "hawaiianairlines.com", - "alaskaair.com" - ], [ "hbo.com", "hbomax.com", @@ -502,8 +461,7 @@ ], [ "instagram.com", - "threads.net", - "threads.com" + "threads.net" ], [ "intuit.com", @@ -522,14 +480,6 @@ "kcls.overdrive.com", "kcls.org" ], - [ - "keypointcu.com", - "kpcu.com" - ], - [ - "koboldpress.com", - "labyrinth.talesofthevaliant.com" - ], [ "letsdeel.com", "deel.com" @@ -619,10 +569,6 @@ "minecraft.net", "mojang.com" ], - [ - "monarch.com", - "monarchmoney.com" - ], [ "moneybird.nl", "moneybird.de", @@ -683,11 +629,6 @@ "overstock.com", "bedbathandbeyond.com" ], - [ - "padmapper.com", - "zumper.com", - "zumperrentals.com" - ], [ "parkmobile.us", "parkmobile.io" @@ -760,11 +701,6 @@ "redis.com", "redislabs.com" ], - [ - "rekordbox.com", - "pioneerdj.com", - "community.pioneerdj.com" - ], [ "rocketaccount.com", "rocketmortgage.com" @@ -881,7 +817,6 @@ ], [ "turkishairlines.com", - "tkwifi.net", "thy.com" ], [ @@ -1009,8 +944,8 @@ ] ], "id": "8c3d4151-8e68-4bb3-a3fd-babf4aba2cdc", - "last_modified": 1764684432032 + "last_modified": 1738775297137 } ], - "timestamp": 1764684432032 + "timestamp": 1738775297137 } diff --git a/icecat/services/settings/dumps/monitor/changes b/icecat/services/settings/dumps/monitor/changes index 849d6360a5..9263501e92 100644 --- a/icecat/services/settings/dumps/monitor/changes +++ b/icecat/services/settings/dumps/monitor/changes @@ -1,17 +1,122 @@ { "changes": [ { - "last_modified": 1775836622756, - "bucket": "security-state", - "collection": "intermediates" + "last_modified": 1719927826949, + "bucket": "main", + "collection": "urlbar-persisted-search-terms" }, { - "last_modified": 1774556199388, - "bucket": "security-state", - "collection": "onecrl" + "last_modified": 1544035467383, + "bucket": "main", + "collection": "sites-classification" }, { - "last_modified": 1771613837993, + "last_modified": 0, + "bucket": "main", + "collection": "search-config-overrides-v2" + }, + { + "last_modified": 1761148716130, + "bucket": "main", + "collection": "translations-models" + }, + { + "last_modified": 1739471652383, + "bucket": "main", + "collection": "url-classifier-skip-urls" + }, + { + "last_modified": 1744749743529, + "bucket": "main", + "collection": "search-default-override-allowlist" + }, + { + "last_modified": 1749069444811, + "bucket": "main", + "collection": "translations-wasm" + }, + { + "last_modified": 1725526980846, + "bucket": "main", + "collection": "cookie-banner-rules-list" + }, + { + "last_modified": 1726769128879, + "bucket": "main", + "collection": "url-parser-default-unknown-schemes-interventions" + }, + { + "last_modified": 1633983928590, + "bucket": "main", + "collection": "top-sites" + }, + { + "last_modified": 1733839156202, + "bucket": "main", + "collection": "remote-permissions" + }, + { + "last_modified": 1757010621729, + "bucket": "main", + "collection": "search-telemetry-v2" + }, + { + "last_modified": 1763038623318, + "bucket": "main", + "collection": "devtools-compatibility-browsers" + }, + { + "last_modified": 1653469171354, + "bucket": "main", + "collection": "devtools-devices" + }, + { + "last_modified": 1674595048726, + "bucket": "main", + "collection": "password-recipes" + }, + { + "last_modified": 1763049497744, + "bucket": "main", + "collection": "search-config-icons" + }, + { + "last_modified": 1605801189258, + "bucket": "main", + "collection": "hijack-blocklists" + }, + { + "last_modified": 1738775297137, + "bucket": "main", + "collection": "websites-with-shared-credential-backends" + }, + { + "last_modified": 1743683182607, + "bucket": "main", + "collection": "password-rules" + }, + { + "last_modified": 1745933974542, + "bucket": "main", + "collection": "search-config-v2" + }, + { + "last_modified": 1751018358372, + "bucket": "main", + "collection": "moz-essential-domain-fallbacks" + }, + { + "last_modified": 1564511755134, + "bucket": "main", + "collection": "anti-tracking-url-decoration" + }, + { + "last_modified": 1673270322227, + "bucket": "main", + "collection": "language-dictionaries" + }, + { + "last_modified": 1748485472559, "bucket": "blocklists", "collection": "gfx" }, @@ -21,125 +126,20 @@ "collection": "addons" }, { - "last_modified": 1776062193033, + "last_modified": 1764570990070, "bucket": "blocklists", "collection": "addons-bloomfilters" }, { - "last_modified": 1564511755134, - "bucket": "main", - "collection": "anti-tracking-url-decoration" + "last_modified": 1764082622611, + "bucket": "security-state", + "collection": "intermediates" }, { - "last_modified": 1726769128879, - "bucket": "main", - "collection": "url-parser-default-unknown-schemes-interventions" - }, - { - "last_modified": 0, - "bucket": "main", - "collection": "search-config-overrides-v2" - }, - { - "last_modified": 1544035467383, - "bucket": "main", - "collection": "sites-classification" - }, - { - "last_modified": 1745933974542, - "bucket": "main", - "collection": "search-config-v2" - }, - { - "last_modified": 1633983928590, - "bucket": "main", - "collection": "top-sites" - }, - { - "last_modified": 1775078290693, - "bucket": "main", - "collection": "urlbar-persisted-search-terms" - }, - { - "last_modified": 1725526980846, - "bucket": "main", - "collection": "cookie-banner-rules-list" - }, - { - "last_modified": 1749069444811, - "bucket": "main", - "collection": "translations-wasm" - }, - { - "last_modified": 1673270322227, - "bucket": "main", - "collection": "language-dictionaries" - }, - { - "last_modified": 1739471652383, - "bucket": "main", - "collection": "url-classifier-skip-urls" - }, - { - "last_modified": 1751018358372, - "bucket": "main", - "collection": "moz-essential-domain-fallbacks" - }, - { - "last_modified": 1774283138114, - "bucket": "main", - "collection": "search-telemetry-v2" - }, - { - "last_modified": 1764684432032, - "bucket": "main", - "collection": "websites-with-shared-credential-backends" - }, - { - "last_modified": 1674595048726, - "bucket": "main", - "collection": "password-recipes" - }, - { - "last_modified": 1744749743529, - "bucket": "main", - "collection": "search-default-override-allowlist" - }, - { - "last_modified": 1773214792526, - "bucket": "main", - "collection": "devtools-devices" - }, - { - "last_modified": 0, - "bucket": "main", - "collection": "remote-permissions" - }, - { - "last_modified": 1774879272191, - "bucket": "main", - "collection": "search-config-icons" - }, - { - "last_modified": 1761148716130, - "bucket": "main", - "collection": "translations-models" - }, - { - "last_modified": 1764684322196, - "bucket": "main", - "collection": "password-rules" - }, - { - "last_modified": 1605801189258, - "bucket": "main", - "collection": "hijack-blocklists" - }, - { - "last_modified": 1776062852042, - "bucket": "main", - "collection": "devtools-compatibility-browsers" + "last_modified": 1759512219332, + "bucket": "security-state", + "collection": "onecrl" } ], - "timestamp": 1778 + "timestamp": 1766 } \ No newline at end of file diff --git a/icecat/services/settings/dumps/security-state/intermediates.json b/icecat/services/settings/dumps/security-state/intermediates.json index cb401bfe18..308a2a8254 100644 --- a/icecat/services/settings/dumps/security-state/intermediates.json +++ b/icecat/services/settings/dumps/security-state/intermediates.json @@ -1,3346 +1,5 @@ { "data": [ - { - "schema": 1775833161373, - "derHash": "mhVw6CEd5xP86y3Ep3KKvhmUozpMpipPgdT3UR3p21A=", - "attachment": { - "hash": "09625147dcb554f09923cccede00578597175b9d1b8a2cbc6c94d5c7da65943f", - "size": 2068, - "filename": "_vcu3bLdrl-2pV1S4cenN7_yGMcAZ-qj1zlA9EwLUqw=.pem", - "location": "security-state-staging/intermediates/5db30d9b-ab7d-48c7-9559-d9769bf37286.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8e4af3f4-07db-4bf7-9122-81486d9b2890", - "last_modified": 1775836622756 - }, - { - "schema": 1775012105575, - "derHash": "cgvU2iGvina571P9AerSJ2AflROzM43gbJl8pohJLTQ=", - "attachment": { - "hash": "5a3d49d4344eafa351f15b261301709d4a204955fb59385855783d159a8b3bcc", - "size": 1979, - "filename": "ape1HIIZ6T5d7GS61YBs3rD4NVvkfnVwELcCRW4Bqv0=.pem", - "location": "security-state-staging/intermediates/8aea17ab-2eaa-4046-8c0e-c145877f23a0.pem", - "mimetype": "application/x-pem-file" - }, - "id": "21f5a836-b455-4f4e-94c5-2b4241a3d72f", - "last_modified": 1775015828685 - }, - { - "schema": 1775012104722, - "derHash": "MUL5nTWNm1AOXN0t/49xmozOz1iWUjNISFIsyoB9CAc=", - "attachment": { - "hash": "9ce0a589d152892ad4eb37fcfce39ef460fca939530497544587e4346695c67b", - "size": 1183, - "filename": "oC-voZLIy4HLE0FVT5wFtxzKKokLDRKY1oNkfJYe-98=.pem", - "location": "security-state-staging/intermediates/2fda55d9-aab2-4ada-8729-2804f28b234f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9c388e53-8bbf-4e58-bdad-06ed80b811e6", - "last_modified": 1775015828681 - }, - { - "schema": 1775012103853, - "derHash": "YMJmbaXiMyFw4dO/zZW/jJptTmNHPzqLu4z0Kz+fA4o=", - "attachment": { - "hash": "50e43d8c3f71ec3eee0a37984cf059a6262dd57ae9ff595c414fc337931245e2", - "size": 1983, - "filename": "ape1HIIZ6T5d7GS61YBs3rD4NVvkfnVwELcCRW4Bqv0=.pem", - "location": "security-state-staging/intermediates/9e73bcb6-ff56-4a97-b357-6bd34c72708d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c2ba95d1-22a1-4d7e-9b1e-8cd25f4561a8", - "last_modified": 1775015828676 - }, - { - "schema": 1774839566079, - "derHash": "L+kVsTV132oKi+tQGLYhIHEWqRwd334zuUWR+sPyNiY=", - "attachment": { - "hash": "4f127c4233a9101689368449c0025753a357e2b30e495953dce748ac23bcb4e5", - "size": 1618, - "filename": "nTfkqYnqs4gtEWBS_ItYRGcCy1k3JuRgTDeVlAxxA-I=.pem", - "location": "security-state-staging/intermediates/1b0d4b91-04ad-4f01-879f-e367d736c812.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b5253e0b-76dc-4f20-83c2-7c077b7fc8ab", - "last_modified": 1774843022513 - }, - { - "schema": 1774839565218, - "derHash": "JjwYSPEBxNxsHTD8R0RhAYG5VqTWJMMFBf6LLr7+rQs=", - "attachment": { - "hash": "3ba617943c0a0ac91ca02303c19f3553242e26eea65b6ec51205b4861a6ecbc2", - "size": 2203, - "filename": "51PN2fE0E8fKnNqCli-MDOXtE9FlcxKVSvUmfrLLfHk=.pem", - "location": "security-state-staging/intermediates/b710492b-1b40-4836-a5ee-73b38345f189.pem", - "mimetype": "application/x-pem-file" - }, - "id": "5086b037-baf3-47eb-b9c2-d0908b72906c", - "last_modified": 1774843022509 - }, - { - "schema": 1774839564338, - "derHash": "j/+4Ae+NIq44n3xYxVDj04n31FbrGyXAznqf5YSjiAQ=", - "attachment": { - "hash": "c11561e2d98806065b1037695b8fdbdae99bc7154d121e40f010e741bcd540c2", - "size": 2381, - "filename": "3LnPAebFSkQKRToZaB0Z4luRvWRpsFAPvCM0EYIXY-w=.pem", - "location": "security-state-staging/intermediates/dd30b12f-a521-463b-9ed0-d69dc19daf13.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ac64c0c2-c266-40a2-8651-203f35766993", - "last_modified": 1774843022506 - }, - { - "schema": 1774839563494, - "derHash": "hUS7bnO8NySr4AMVCfFvvqSKQ7h+YSkdTbQJgxLoZho=", - "attachment": { - "hash": "3a0979157e0f63ad072da56ccd05629954ea12d199313f3c9c788f14dc0c45d5", - "size": 2381, - "filename": "qin3sUBfFTBdUOjWawJQDx3pdUx1ahG0DN5-alAiims=.pem", - "location": "security-state-staging/intermediates/34e7d2a7-768d-49c9-9688-37114c0be202.pem", - "mimetype": "application/x-pem-file" - }, - "id": "71c687be-a812-4538-bc91-712c082e9ad3", - "last_modified": 1774843022503 - }, - { - "schema": 1774839562514, - "derHash": "tBFXEXDkVysCDnx5m2+iYMISUSmNmg7KwS0Mrf5atGc=", - "attachment": { - "hash": "d199420190cbc02f3ad05b432136b23753c2c4f5c7477e3aa7997d96ce7d4caf", - "size": 2381, - "filename": "k-feF4mrx1LOTkxBk_pU2KcdD9TyVgG2TlSPKu1--Vs=.pem", - "location": "security-state-staging/intermediates/dc7f6474-4b57-4ef3-883b-dd3efacdc9e8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9f8abdbe-48ee-4382-9cd3-c808c07df177", - "last_modified": 1774843022500 - }, - { - "schema": 1774537167635, - "derHash": "tWRizDsHfbNumebumJkvb3cSgOHyxwRod6K/tXX5gMM=", - "attachment": { - "hash": "e1ba9bde972d50841989cad6214a82407acac6723c48c680179081b3e8d13572", - "size": 1211, - "filename": "QmfmEZOKMCSNCo76MUoMqXBJELPzPieICN7H7Rt9_bY=.pem", - "location": "security-state-staging/intermediates/c32aaa01-41ef-4142-83cc-c93aa8234f11.pem", - "mimetype": "application/x-pem-file" - }, - "id": "68920eda-5e84-468b-9c49-ef3328c1435d", - "last_modified": 1774540622867 - }, - { - "schema": 1774537166747, - "derHash": "NH9DUQ3hU11Ybuhi0CmcqnVmL9VeNcvfjiMavhozenY=", - "attachment": { - "hash": "04919ea7a453d04e91d841ef11179afbfb794aecfd1d2371cfb52e514d15bb7d", - "size": 2227, - "filename": "uS-9acfZeG6v1Kc6KBPUyew1BpCmbecvayVHStbHPFM=.pem", - "location": "security-state-staging/intermediates/43a14661-831d-4240-b884-26a635eb41bd.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4f8139a3-9ffa-4790-a159-3fdecf79535b", - "last_modified": 1774540622863 - }, - { - "schema": 1774537165900, - "derHash": "lJxZlpPDvl2yke7el61p4AxjK1tQVAghhcNg19bM5zc=", - "attachment": { - "hash": "4d009254753e30af8ee272de746a80f286a81abf0bee748e84e07e1b18af182e", - "size": 2223, - "filename": "XiSnrVCBUFzw-XzQ1O2q6Q3kzxZFNr839tx0M2NYr_M=.pem", - "location": "security-state-staging/intermediates/4b2ce371-2540-4622-909d-fc302fb3c2e5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9b01fe1f-5aa6-4934-be42-4885ce278369", - "last_modified": 1774540622860 - }, - { - "schema": 1774537165086, - "derHash": "j4wMWEZG+1Xh70K/HHiGwVdLSqJaqW5ha2oWvC7eH6E=", - "attachment": { - "hash": "f6c790d50f999e2ca788147e8fa04c81827bf045e2031dddc2873d836ce69abb", - "size": 2227, - "filename": "L8InkWngZ9c62OLXr4bIhLyKyaaxKsDNrhpCw5XHPog=.pem", - "location": "security-state-staging/intermediates/6b309c53-5001-4022-abb8-c62e2eb86f75.pem", - "mimetype": "application/x-pem-file" - }, - "id": "83d8b806-40eb-486a-9192-caa5b6864e59", - "last_modified": 1774540622857 - }, - { - "schema": 1774537164238, - "derHash": "LzyOy+IVftZ1bJNxhgLXTii9TqBDQNha5ry+tYQezik=", - "attachment": { - "hash": "b999fff58ad8a01f87303fdbf387ffe2e908ff2cbd6101ccb3ff664ad0a99471", - "size": 2223, - "filename": "q5VWj0cOvFCs9E4y24Khc0EPrjRq2NMM2AAcy7mZJnY=.pem", - "location": "security-state-staging/intermediates/0c69910a-1056-4b6e-a992-3200228c572d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0564262f-43b6-460f-9d54-8e66d608d31a", - "last_modified": 1774540622854 - }, - { - "schema": 1774537163404, - "derHash": "HA45AY4yj8i7/zX1mTKH0JNNxE70MR9EYirVvwc1GrQ=", - "attachment": { - "hash": "b615afaa1d2347e741aaff40532628f32fe6c6a45b3bde95bcaf380f3eb1f058", - "size": 1211, - "filename": "UmbWx5Q-xQ-XNQmthXd2WrdYe90ISOCFt1UVQHdQJc4=.pem", - "location": "security-state-staging/intermediates/ca406bbd-d08d-4228-bed2-e63252510b25.pem", - "mimetype": "application/x-pem-file" - }, - "id": "97722896-bd33-4951-9562-b3c0ed39a9b7", - "last_modified": 1774540622851 - }, - { - "schema": 1774537161581, - "derHash": "87Xe5gNU808RcfY2p2cVPE7CpAgooTGoTV+gxCuHmKQ=", - "attachment": { - "hash": "108ab348547297ebd08b76a3cd9618e37db6cd18504af2bba132caf2d62272da", - "size": 1211, - "filename": "n7hDO7kmTyPDfTRqy8j-iiSjDEOGIK3OwmTa3M6bPU8=.pem", - "location": "security-state-staging/intermediates/407e02b4-5ea5-4757-b17d-f1286eb6c893.pem", - "mimetype": "application/x-pem-file" - }, - "id": "127bfeb9-4043-4313-9eee-7e3897b482c1", - "last_modified": 1774540622848 - }, - { - "schema": 1774537160745, - "derHash": "nbmxe2RRY5b0PcwDEclQ67wL3F9sjGhU1wTOjDu/lTc=", - "attachment": { - "hash": "9a031995ae6edb03d9eddbefa345470e2ef4f73cd4d1cc5f6a1d6cae5e897e2c", - "size": 2223, - "filename": "D0Hbg52GdF5j948K84ufWwwyf2laKJFrVgN0v6w4qyc=.pem", - "location": "security-state-staging/intermediates/d1c5223d-b23b-40e9-a0fb-239c3ec8e2ed.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d149d0fe-0927-4f3a-b3b1-cb4466af0ad8", - "last_modified": 1774540622844 - }, - { - "schema": 1774537159836, - "derHash": "CQ4tY5h7uqEIlFwDNkbGbo9JY/gCHLvQmyjtA8UY8V0=", - "attachment": { - "hash": "1fd0adafe3626c5552a1bd711a31e4771fcf6ba50465eaad2e09a5bd8e51d811", - "size": 2223, - "filename": "_afCgUksmMTJlpCQSN7g2Ztq92tr9vJMAGSd2u3c-2E=.pem", - "location": "security-state-staging/intermediates/f316e3de-7e92-4fd2-a8f2-48823166a67f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7b6d604f-da64-4956-9ba8-ef320767a339", - "last_modified": 1774540622841 - }, - { - "schema": 1774537158981, - "derHash": "lvjBHSfReqMPYDkEmWL+emE3Ueys01vghURug+SmxxU=", - "attachment": { - "hash": "7c6b20589b3e35476c459adf74a221fb2d0241fd565422ff49e51c189f72ee2c", - "size": 1211, - "filename": "EHXD4myN-2MrM-IynQeU7_1jgYeeymnT6kYKTvpkbpU=.pem", - "location": "security-state-staging/intermediates/123bd016-e01b-472d-9236-fdef1003a048.pem", - "mimetype": "application/x-pem-file" - }, - "id": "5152ad1e-5355-488c-8984-f0efd5e78077", - "last_modified": 1774540622838 - }, - { - "schema": 1774537157978, - "derHash": "hGV0oPGqNYcyZ3iVv847kVZX4SsPRCg/zGuP9eExZnw=", - "attachment": { - "hash": "d919bf8e33589b8e40186d8f10404efa161c7abc8f53d6b9518aee79fa91f973", - "size": 1207, - "filename": "gTWJCRcyOA0K6tgUJ2Lrj6HVbcMFSbqwalwLhja789E=.pem", - "location": "security-state-staging/intermediates/ad3d9108-98b2-4f3f-a617-d79662451262.pem", - "mimetype": "application/x-pem-file" - }, - "id": "40d15d9c-194f-4733-a6c3-497ff71da925", - "last_modified": 1774540622835 - }, - { - "schema": 1774537162569, - "derHash": "qCdgfIh1VWlCwEYh4AsvT7vCTXLRuiFXMn6U21uIIuk=", - "attachment": { - "hash": "a7c60c40deb5ea433c5c7ebb5e4bdd06a47eec41d946a73fea7d2331fd22f39b", - "size": 1207, - "filename": "khm_-KphnPlXjmlGYOIskARrZpM8Wv4aciNlPkQqoU8=.pem", - "location": "security-state-staging/intermediates/26b06ae5-e167-4030-8ebc-5ca3e53932f5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c184f4b5-f1c6-42a3-8751-9e8a8123c101", - "last_modified": 1774540622831 - }, - { - "schema": 1774407026782, - "derHash": "rSqtrKiX3qIriJ3bOBFDBJrZl1wIGbSTUNYhkBk1img=", - "attachment": { - "hash": "7be77c4f3a6cc94534290a06c3ae1d8a9f22ce5095d33688274eb4fe4edd3fcc", - "size": 1284, - "filename": "8HooqDIb6deYivaIrjMnbSVm5PnKzs4Mum9cD1-2Ntw=.pem", - "location": "security-state-staging/intermediates/29d315aa-8a9c-430e-b1e6-e9a5572ed701.pem", - "mimetype": "application/x-pem-file" - }, - "id": "3a9de97b-7cf0-4772-b306-320cb0e1680b", - "last_modified": 1774407422891 - }, - { - "schema": 1774407025946, - "derHash": "y7pa+7fkk8LR7fuzsWI5S/zsA0WmbcGhZ7ID1TT7wV8=", - "attachment": { - "hash": "86752cefd9de3fd54a98ff4f261081c6debb15d084dbe4d5c42373df0cfa15b8", - "size": 1293, - "filename": "BrDTQv-ioWNZeYFnvfqDY6CWpQ7tPtfBtFCPsRg8oYY=.pem", - "location": "security-state-staging/intermediates/d183a535-9322-4d15-99cd-6f53c256ac39.pem", - "mimetype": "application/x-pem-file" - }, - "id": "51ae5324-7cb5-4022-b86c-043c7f87f3cb", - "last_modified": 1774407422888 - }, - { - "schema": 1774407025123, - "derHash": "OZzG09QbgfWCE5JEtrXY8J6V5XEDCmJ3+PQFGy4Xr2Y=", - "attachment": { - "hash": "8e60682a9a574f1d0a0dabe96f711fa45d6d6016e7756e0910b1cde625bcb1a5", - "size": 2231, - "filename": "m_Imq6VCxWXMJpEVLT-9ogjW5uJ1aMCuHE4z1IoRiEU=.pem", - "location": "security-state-staging/intermediates/b7bdf584-9ff1-422c-811b-f043e7dd9f41.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1b4d2c0e-b206-458d-8a88-d4937d94c07d", - "last_modified": 1774407422885 - }, - { - "schema": 1774407024250, - "derHash": "E2I9tZlclps7VabgrntutbiqwUUvZJSH80Tvkg/8ilo=", - "attachment": { - "hash": "13744fb9bdff4996f470d2a114595cd545ae2375059c952724b438530df06e0b", - "size": 2223, - "filename": "8n8ZPo-I2Z5L6S3BZ9izqIsRIWQMxNnHyN1-ni6rQHI=.pem", - "location": "security-state-staging/intermediates/ce0fdc77-55e9-49a7-9289-8ae811ec58c6.pem", - "mimetype": "application/x-pem-file" - }, - "id": "636a61c3-f9ec-4476-a211-a75bd63203e0", - "last_modified": 1774407422881 - }, - { - "schema": 1774407023409, - "derHash": "NTKM2p8U/rYqwMyu4bEBAf1vRK3YWlExHqF0/TYfRhM=", - "attachment": { - "hash": "09e6690e366888699b9f80cc1725cb1faaf65069be6e9032e0abb58d3a595242", - "size": 1508, - "filename": "R0h5AKG-ue4IzLwRFqjsVfRUtjiZQxnwUbmEAjztZCM=.pem", - "location": "security-state-staging/intermediates/c67cf489-4f63-4db7-8885-5d9a6cc4ee5b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7c9b4915-0290-44dc-a053-0be5cdd18711", - "last_modified": 1774407422878 - }, - { - "schema": 1774407022553, - "derHash": "V+c4UI+jsIIR/v8ejTUVCamNXJVf35c1k8fzwHUSXsA=", - "attachment": { - "hash": "b2e71f249b94efd07a8940e42fbc77ed9531c1065d3ae633939f704ad6de8873", - "size": 2223, - "filename": "bFHloLclSSUUIxBjXQqRVR91E9WcAO_iGbibOQ51bdw=.pem", - "location": "security-state-staging/intermediates/fbe09e70-b825-4f11-a3e9-b6c6d7cfb518.pem", - "mimetype": "application/x-pem-file" - }, - "id": "78d9eeb5-c11b-40ae-b3ef-e495db9c1299", - "last_modified": 1774407422875 - }, - { - "schema": 1774407021673, - "derHash": "JD9YYT4dH0XeSC/Xe/V7uhyS/3WWy8PgIEUEmVQfK9s=", - "attachment": { - "hash": "dcf1a61851c369c11ca2dbb606e5e639acd8fea1a25f385adff5edae49b7a4fb", - "size": 1284, - "filename": "g7Po5gl2edguSn1UNZLvQt_Ua-vBFH8qeWx8NfsPz-A=.pem", - "location": "security-state-staging/intermediates/df46379e-e1c9-42d3-87cd-36e67fa1fca6.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c64f19a0-bd6e-4fd0-8662-d4f73af0ebb0", - "last_modified": 1774407422871 - }, - { - "schema": 1774321167312, - "derHash": "PnhD+fe1rbfYVy4+mtuQNh480OdmvMdAODD1vqDfJkM=", - "attachment": { - "hash": "626411fa1a1a96145370b856759aa04362d6b29227bf2a8bc1f1b270867c158a", - "size": 1333, - "filename": "ZcmQIw3T5sstVqoLKtlSp-iGIreyBs6HuHoKvalPSbw=.pem", - "location": "security-state-staging/intermediates/5c22466d-6c50-46d9-aeb5-8a49e5106d5b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e04d4e38-55e1-4185-9024-7c8a07e7f90f", - "last_modified": 1774324622561 - }, - { - "schema": 1774321166456, - "derHash": "x24j36ABS4habe2ObWTCla9Jkdx4csGviw/vUn4mOSk=", - "attachment": { - "hash": "f6bed434abd9cba4cb6c693afa5bc3610a074c2273836781b76d16121e42e2a3", - "size": 2483, - "filename": "DTHIAtHLOR6FmYnWT0BO8a7y7EPc0Efk6Xg5Q2TZgcQ=.pem", - "location": "security-state-staging/intermediates/4c021cd3-ee89-4bf0-aea7-1bae269d28c8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "749cc566-3960-4751-99c3-38dd313dd8ed", - "last_modified": 1774324622559 - }, - { - "schema": 1774321165467, - "derHash": "IIK2QbStfyCozufx+4VXHqRhIi/pM9/y+yRu1ax+raI=", - "attachment": { - "hash": "8334eb6e646f5086918552fdc4c9e388fc154ba3a73f5ec6b734d151cdd4dcd1", - "size": 2483, - "filename": "A8ZEgZnEvlP5roifoh8jSSc6XIssihwe4GegJOQMMgc=.pem", - "location": "security-state-staging/intermediates/e82e926a-6890-44f9-bef0-bd26a51cba97.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ea3b6bb6-b87f-4a32-af61-934b7372d338", - "last_modified": 1774324622556 - }, - { - "schema": 1774015158385, - "derHash": "YwbEkfnRzs7e9GQg4ChgGSLAEG3QtIphp0VPntOM1kk=", - "attachment": { - "hash": "89366bf6af4cebfb752560bbf9f7e1f2ca1f9153fcbd19fbc49b9816c121dd49", - "size": 2032, - "filename": "DgXpuyOGnraJ3FaDnc7EdaOudfprULxaSXg2DL5nMyM=.pem", - "location": "security-state-staging/intermediates/cebee1ae-3936-45a5-8ea0-fe7b583cf983.pem", - "mimetype": "application/x-pem-file" - }, - "id": "2146715a-52f4-4edb-94b4-057974931912", - "last_modified": 1774018622682 - }, - { - "schema": 1774015157426, - "derHash": "Tc5aAXuz2BrPgj6BWqvLg3Uq0+KIOzWd9Ck1371JcHU=", - "attachment": { - "hash": "5e009485a7b2968bb39bd0b751c8e4b621bdc23f8e1ec2064b7970c7e0e5835a", - "size": 1447, - "filename": "6rDeWkZBkBCwGy1VVT_BEaqCtD2Tle3-rqqMduatGZU=.pem", - "location": "security-state-staging/intermediates/b6f4b5cb-5485-435e-81a0-86517fe7cbdf.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d4aa25dd-629d-4e5b-9980-52f0a4a3020e", - "last_modified": 1774018622678 - }, - { - "schema": 1773367181131, - "derHash": "O6M9yJ8SKjyt2VVQJiQFLjd88FnRwsUZgnD2lAB4aJE=", - "attachment": { - "hash": "ce44e01f9d42b3f07086f64fb49f81ab2504f8d64b76e5b1cc767fe4a53996a4", - "size": 2308, - "filename": "Vg5vaW2eCBdS_Akm21T2JDEWoJUPIC4sRA4M-C4GySM=.pem", - "location": "security-state-staging/intermediates/e9190052-a81e-4a3a-957d-c65ceb9d1aa8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "47c925fd-f5fa-4abe-bea1-3d3de291ac00", - "last_modified": 1773370622277 - }, - { - "schema": 1772204356196, - "derHash": "L32O6rcRFs28V0stlD0iQD07iybjx6vbaPLYy0nC0N8=", - "attachment": { - "hash": "803ed7b182b12329c799b62cabd2eb36e41333356efdf6eb8641aed41d3da4ee", - "size": 2036, - "filename": "VkRKnOagK-3W_ofnoWZOo8bMC79g0KAY3Xf75t__Zrw=.pem", - "location": "security-state-staging/intermediates/7aa6b7cb-3605-49ed-a247-410ae98ae836.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8960852e-3ca8-4d36-bb3e-3d8eea2a20b9", - "last_modified": 1772207822600 - }, - { - "schema": 1772204355378, - "derHash": "QilSwrxYpGca9eissm7/pVUy9AUe6I8/GtAZ/H8rhyI=", - "attachment": { - "hash": "ad486bc8e489167c806c2bdf389605f76ae8d86a306cf30f18589d053b0966e5", - "size": 2036, - "filename": "kBJcqqIaBGWVEKNjZF2uTYqwmmwbsHP162iQT_SCFXU=.pem", - "location": "security-state-staging/intermediates/b1b5ba33-fd79-4f2e-a21f-1a7853e5a13b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "f7f3ab52-809a-4d83-886b-685c924f83c3", - "last_modified": 1772207822597 - }, - { - "schema": 1772204357009, - "derHash": "m2nG7NpVk8RVFhMHOh1WVj76NCut8+eUvQPV3P+XBXw=", - "attachment": { - "hash": "75d90a10d5acdca3d93926a340d4109ad44f1a459399d1dc084515e5bddda836", - "size": 2036, - "filename": "R3Jrcj-fmdhRjoJU-GsaLSrVeSQQS4IHoQWnjSeWatM=.pem", - "location": "security-state-staging/intermediates/62e30670-5d39-457b-a84d-cf9f8dcd8894.pem", - "mimetype": "application/x-pem-file" - }, - "id": "bedb829c-2982-407f-851a-a742f59e0e0e", - "last_modified": 1772207822594 - }, - { - "schema": 1772117600510, - "derHash": "+2QWQ7oguWOM7JmHkxQCCOd3DYcSXb9JrKcS7h5RZlI=", - "attachment": { - "hash": "ff306aa61efd4a1cc80b2852c7e8bf5611caf8ab147677a6f037852c33fa9df8", - "size": 1341, - "filename": "1DndgPHjvFyeXxPov_eoiH353Bw-Gddq9wyPjZhe7yI=.pem", - "location": "security-state-staging/intermediates/d0e61b22-7774-4acc-84bb-ddaa3b63d64e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "aafeffbf-26f0-4dad-9050-e65b5a5f7f63", - "last_modified": 1772117822795 - }, - { - "schema": 1772117598957, - "derHash": "evK1ZEyf0NHnP1gEfc8PU0bGVRqE1hpJ+8ZLWVrOxy8=", - "attachment": { - "hash": "d6ee6304ee7f22592f8f3141604bb77be5d44f42c722035e019b1bf7b7456951", - "size": 1037, - "filename": "muxyP5uc2y-9UqKqr6vb6FY0Ua8xHVZ_kWbaHnVKP1g=.pem", - "location": "security-state-staging/intermediates/2ad630e3-48c5-4af3-93e4-43e98ae3685d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "abb9b4a0-f78d-4325-a774-708ecb68e8f9", - "last_modified": 1772117822792 - }, - { - "schema": 1772117597370, - "derHash": "TZ1fUrvibbQZaYpMfdwmj77zoHkVpxLwlH+q6W+5LpM=", - "attachment": { - "hash": "a92222a5871e9d1ae46f5969a84e6d62ece3046880499d40fcf402496e8f7b56", - "size": 1028, - "filename": "VhkpYPIc6hzxBoJXf7ce0tr4mtJzcH-if3jwCKixZ6g=.pem", - "location": "security-state-staging/intermediates/65f1cde4-20cc-4582-b659-20654baf1190.pem", - "mimetype": "application/x-pem-file" - }, - "id": "f9aa80ce-db28-40a5-96f0-da7ce9de3a84", - "last_modified": 1772117822788 - }, - { - "schema": 1772117598155, - "derHash": "FpITkGSKwMvSvycCaZI2o587YEijXS8Ik92QRYg5EMg=", - "attachment": { - "hash": "815f62bc8d32b8c60378c1913fa0035657e203c3af9481c6796bdb16a7f645ad", - "size": 1922, - "filename": "uWThQdOlXK4YDqahqNSil94m8RgzxnNWnRlvtTOphxA=.pem", - "location": "security-state-staging/intermediates/0b042652-e9f9-4cba-b364-442c1f0efc8f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ad7e5f86-ee96-4374-bb97-21807d99e929", - "last_modified": 1772117822785 - }, - { - "schema": 1772117601594, - "derHash": "6vnfMtpYAKCjgE608BBnMwMMyMKu2+DlsOvQNKfOhAI=", - "attachment": { - "hash": "862c6c1c16268af8c86bd3aa500df2519e49c915106bc2cb2e16c028f5685ccc", - "size": 2223, - "filename": "7SbSm5tp-nv0elU7DurirLhezt3rqb8JMk4dhjv5SGA=.pem", - "location": "security-state-staging/intermediates/bc2bd4de-bafe-4bde-909c-6bf7403566a6.pem", - "mimetype": "application/x-pem-file" - }, - "id": "77fd2e6c-7902-4a33-8314-de405c09568c", - "last_modified": 1772117822781 - }, - { - "schema": 1772117599742, - "derHash": "5bAndcFDAJCmZFBQLDqRquEmTCWC/uV8nlz5zk2UwH0=", - "attachment": { - "hash": "b378118522deae61293b4e6996354f4911b80b8641ab3bd09203646f071c1d41", - "size": 2215, - "filename": "cjBeGGAKtsiP6OE7bsrFy5mG5g8DFxb8yONCo-0BCAo=.pem", - "location": "security-state-staging/intermediates/a82507cc-42ee-4bbf-9d90-26caa00de748.pem", - "mimetype": "application/x-pem-file" - }, - "id": "52d70d92-158c-457e-9683-ecff284c29d5", - "last_modified": 1772117822778 - }, - { - "schema": 1771768749930, - "derHash": "oYeK5ubQLuqhAZmSTew5itKFz+LjkEtfZo2SWiOkVhw=", - "attachment": { - "hash": "893a4d20222ae4567a894f680f4a8a467166ffb158619bab2d03392e41e7c93a", - "size": 1435, - "filename": "G_ANXI8TwJTdF-AFBM8IiIUPEv0Gf6H5LA_b9guG4yE=.pem", - "location": "security-state-staging/intermediates/fa48ee6c-24a6-4de1-b16d-3485ae61235f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "35dffd53-6ce4-4895-92bb-7792543efc50", - "last_modified": 1771772222966 - }, - { - "schema": 1771768749532, - "derHash": "CNSGhe+Ex3C0QfY2XXB7HHqik64v16oVmiRFE4DGATQ=", - "attachment": { - "hash": "b5710b9fd19897b7b7e53eb516f56a40e69cd92cbd117618e75f9aafa5777f14", - "size": 1394, - "filename": "G_ANXI8TwJTdF-AFBM8IiIUPEv0Gf6H5LA_b9guG4yE=.pem", - "location": "security-state-staging/intermediates/7c07651c-3899-4ad5-92d2-a584c57b6ce2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "087ae332-ea97-4552-a159-b91d16abeefb", - "last_modified": 1771772222963 - }, - { - "schema": 1771768749044, - "derHash": "Kiq7gbaiMYb5LVt+IftZMUZ6zh971K5Dlb9MS4wCZGg=", - "attachment": { - "hash": "eaec4fbe33c87de727b7117cefd947bafe6015ce3108359dd6f8e46afdd3027d", - "size": 2125, - "filename": "K89VOmb1cJAN3TK6bf4ezAbJGC1mLcG2Dh97dnwr3VQ=.pem", - "location": "security-state-staging/intermediates/2a0242bf-de50-4c50-95ee-f0dc490a89de.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e58a2fdf-2322-4806-bc7b-c65a94b9f827", - "last_modified": 1771772222959 - }, - { - "schema": 1771768748599, - "derHash": "3B5O3ys1zIEelnRE+10TvAF9x+hlJ++KWjUQnsFKHPM=", - "attachment": { - "hash": "567b78b6fe938997e9cd01da9ff2e02d0ef2c19f317f3e127c7016a5ecfe9190", - "size": 2560, - "filename": "K89VOmb1cJAN3TK6bf4ezAbJGC1mLcG2Dh97dnwr3VQ=.pem", - "location": "security-state-staging/intermediates/931e3924-506f-4fc6-ab52-399480c2a20a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e12c2e9a-21d7-4c96-be95-0bcbf5059e82", - "last_modified": 1771772222955 - }, - { - "schema": 1771379968391, - "derHash": "WoTJQFTTQNZQopmF75e7OWNS4hWu1sCzPKf/3TvV0qI=", - "attachment": { - "hash": "f5c50b1eb05ddcd12e58d62bf14a7146c9ee6abac9c4e0a2212437d6fd8e8953", - "size": 2117, - "filename": "lscl7HdjRMUHcclcvnvcvSKZWwmFafcnrjiw69_1v34=.pem", - "location": "security-state-staging/intermediates/fddcb40d-f6ae-4904-8cb7-88b549e1dafa.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ace4dd76-442c-4c76-974c-5ac891a58682", - "last_modified": 1771383422979 - }, - { - "schema": 1771379965723, - "derHash": "51aP5uEjMfT9feYdpMdVnQ+OsZKiGNR0GjunUYQzODg=", - "attachment": { - "hash": "f8c33bd58a32b518142cb47da0926304d2b8096ce761756c169ab85bd3d80f64", - "size": 1240, - "filename": "4CVMf83CZeLw-KQo2rt1q0rgObSHLWL17lfwh31aikE=.pem", - "location": "security-state-staging/intermediates/f24003fe-b187-4755-a466-458ebb0f836f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7edf4436-5892-4600-99fb-78b1a33970f1", - "last_modified": 1771383422976 - }, - { - "schema": 1771379965378, - "derHash": "3nZ3kuhwvTLzMQKfyJ3CTFP535cNxw8eowzynbP5S6k=", - "attachment": { - "hash": "c0b032efd97cd47e0efabd0f5d8bd4720a0fca0e37964e02ab742d864b3caf89", - "size": 2389, - "filename": "qkIW3ICnKZrm3ghES-osWI3Ic2MevFY8B3bYOhth484=.pem", - "location": "security-state-staging/intermediates/5a4f2508-a489-40d3-9f02-7f45d76118d3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "dd409a00-a1af-4b42-8583-3c85cba072ea", - "last_modified": 1771383422973 - }, - { - "schema": 1771379964710, - "derHash": "rAq5Y7tfPaBfvIaH+YwrbqC7SZ5hGMGpE2sbx8PHGms=", - "attachment": { - "hash": "85c8ec5dd9e2aef22c301709411a40ca34de77ae66cdf3a22ea4e351f5965835", - "size": 2251, - "filename": "eXySzCsBWDIfmGF01cwDJgdAdt8Hj7D429qgL2aN-zU=.pem", - "location": "security-state-staging/intermediates/d9247ff2-7bc9-4ef6-8166-f5c67625e10e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1402c685-cdd6-44a6-8266-776c14665fca", - "last_modified": 1771383422970 - }, - { - "schema": 1771379964366, - "derHash": "xyxLWFIu4DS0mibugivE1nyNNIdWxbs3O2ote4Ial7A=", - "attachment": { - "hash": "a721f1048a1c36969e590a89b5cbb931052a3753f58f736d8b549c43c754d98b", - "size": 1589, - "filename": "cF3R63OIukWEa-CFv_Qt8-pZMFGw0GJvU8Eyyk5mZ5o=.pem", - "location": "security-state-staging/intermediates/b19ed43a-a60e-4451-a671-e3b0cef7fe27.pem", - "mimetype": "application/x-pem-file" - }, - "id": "3c27391f-4099-40b6-9e88-e14e8e5ca623", - "last_modified": 1771383422967 - }, - { - "schema": 1771379965044, - "derHash": "QvVuls2IsTwpJY/NwSEwQKvwxC6ilnKZGuw/NzTO0FY=", - "attachment": { - "hash": "992da64bc371d43747582630e5718b9feed9aab05de221c8937bc749a9b4d257", - "size": 1288, - "filename": "KaLohbfxUFEfj4AAh3ZqZy1OO8w6lhcloTTUbDlQ1_8=.pem", - "location": "security-state-staging/intermediates/6b38209e-11e5-495b-b201-88e4909f0f0b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "59c65fd3-bcbe-4935-9656-288009ec3e42", - "last_modified": 1771383422964 - }, - { - "schema": 1771379963956, - "derHash": "bmLL4+QqQcUEBbPi8aRCV2gyZ4VhhK+cAhEgcKyDaTY=", - "attachment": { - "hash": "b720fd52f7eed374b2c5902c55a3d185a8cd84a9b4fada7958cae32b764e4368", - "size": 1358, - "filename": "3hiWxsgsNSgIwyt2ATwgEYbkxoaBEZb10lFKzoR0-ig=.pem", - "location": "security-state-staging/intermediates/8c53a125-d841-4456-a399-4ad32207f472.pem", - "mimetype": "application/x-pem-file" - }, - "id": "134cf729-a94f-4962-bc7c-52f5035d50b7", - "last_modified": 1771383422961 - }, - { - "schema": 1771379967393, - "derHash": "sqvoRnJUhpXBEf+anW2NVeq6vy/DEdAuz4apPNf842E=", - "attachment": { - "hash": "2e9bd11efa10a24c1f71b10974c425490c6cdde5b667e0404c370512ceba3f5f", - "size": 2735, - "filename": "2u51ydhEqPz47YDSUGLPhLr_3tztYtyPBoMwPRSn4oE=.pem", - "location": "security-state-staging/intermediates/2c62f714-6d74-4506-b31b-052ba9a512de.pem", - "mimetype": "application/x-pem-file" - }, - "id": "968e580c-33af-4783-85e8-7dfd0f74ee8b", - "last_modified": 1771383422958 - }, - { - "schema": 1771379963223, - "derHash": "grz8SCzBn3Hm+Y9KAnYW69ptRwltQIszYWDRwO+LmVo=", - "attachment": { - "hash": "be2855dfafa17fa34f957c9cd98474432312ca28992d830b04826c21f38436ed", - "size": 943, - "filename": "ppiiCCS-BOR6GjPE-kiHMb6SAR8jox6QDiyibJwqz84=.pem", - "location": "security-state-staging/intermediates/5d51f31f-d90b-433d-a8b1-bec382d5d6bb.pem", - "mimetype": "application/x-pem-file" - }, - "id": "49fc9288-5fe6-4e70-89f3-99dbfac3a942", - "last_modified": 1771383422955 - }, - { - "schema": 1771379967070, - "derHash": "PiRk1FYvtEEPIMXGbIEsUr+77zEFnOVe9b2zcDOGqnQ=", - "attachment": { - "hash": "88bf23c08ef982fb2b635d421cb8fb243d2256368f1538331134cb66a43a4c58", - "size": 2487, - "filename": "mb9PIWST2qCtIPFSyDuWAoIpd8kXC82e6Up-oC_dMEE=.pem", - "location": "security-state-staging/intermediates/791c65ba-7539-4ba2-bb51-59fdf054ca87.pem", - "mimetype": "application/x-pem-file" - }, - "id": "febfffdd-290d-4fb3-9e00-2fc97ebcced5", - "last_modified": 1771383422953 - }, - { - "schema": 1771379969418, - "derHash": "qonEZunQaILA2q9yvg8PvP58HvKqrRkGQMStRPVRfzQ=", - "attachment": { - "hash": "faa26183cd8190e64a0334a9d0bc1653de74cdfe0addd4bd510ee4563a0b2664", - "size": 1561, - "filename": "Am8KjiB_BfHxcttxPcItD0PI_w1pckqm-saoOT32JQg=.pem", - "location": "security-state-staging/intermediates/26d148b1-25f9-426d-86ac-552394e9054c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "418173ef-88fe-4d97-958c-1e0da945563b", - "last_modified": 1771383422949 - }, - { - "schema": 1771379962907, - "derHash": "AntO7Di0a/1rXD4Cjwki0mjTZ2mL0V4B970IHsNsg2k=", - "attachment": { - "hash": "43815e0dd51ad3fed90f05972d041324bb9ac7f08a046b02ccaeca155efaeb2b", - "size": 2385, - "filename": "H5EVCD_uxlealMCAU1-wGF4zJArdCQoPKU6hLVSzqpc=.pem", - "location": "security-state-staging/intermediates/c20cb8ea-23ac-4b50-857d-1b277b556e29.pem", - "mimetype": "application/x-pem-file" - }, - "id": "877a531e-de20-41cd-9cfd-634fb6c00d08", - "last_modified": 1771383422946 - }, - { - "schema": 1771379963612, - "derHash": "QcWHprrAFDKX0O3F1SK1fNiy0aDUkTobU0qfmoZmhTY=", - "attachment": { - "hash": "24156b9598ad35535b0337940e471028d5b803e9cb36f193fef797f7809e61ed", - "size": 1240, - "filename": "uk4MGW5v2CSjKpfebWgba_KPHp3sM46cWd4ytRuFTcQ=.pem", - "location": "security-state-staging/intermediates/d9a4c4ea-07e8-4d7b-891d-6551622a0482.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9a3dcc6c-c8a7-4e2a-8f52-9e5d4f5f8ae4", - "last_modified": 1771383422943 - }, - { - "schema": 1771379962557, - "derHash": "TY60k4Dscqyf3yH+HG2y6UkMdr6t0fe1KMPM0nLI/ig=", - "attachment": { - "hash": "b66664c300d9d856dd6eef13fa063334f34d358466c922d8c47b40ad0c0b0e44", - "size": 2024, - "filename": "49lIjSAnHwOuVWuOR-RTuElzQhgXaCC3y9iz_nrQN2I=.pem", - "location": "security-state-staging/intermediates/a1e1ab11-d197-4b36-98e1-2f6a6e99b177.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4e872b26-5f8b-4e33-8f96-ff9df8c5859a", - "last_modified": 1771383422940 - }, - { - "schema": 1771379962211, - "derHash": "3gKeQPa7hR2kuATGUSHYU1CE/faztH3ffpS05GpsNDc=", - "attachment": { - "hash": "d0f2c8e9295eb4ea9792068f25164c00c9b913fcedb9db3ba134031bda6cb40a", - "size": 2365, - "filename": "iLwUAXho_6xcMDa1cMgLPi8TIgspLxA1PxRIpsxJt4s=.pem", - "location": "security-state-staging/intermediates/2274bdfb-9c77-4301-b638-98493655bb32.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ad62ce47-53e1-4b53-959f-816ac126ac0a", - "last_modified": 1771383422937 - }, - { - "schema": 1771379966052, - "derHash": "ojctBkMelxY2Xu7UfsAgNRSX0YL8wDjkV+WBaKA8rAc=", - "attachment": { - "hash": "811b937bdd4efe14766de088a75aac2318834e7ed0ee67c1290ec555f140db87", - "size": 943, - "filename": "brzvtCELCIZUo4sD_qPX0ccRtPsd3DY6RfmxpOU9oB4=.pem", - "location": "security-state-staging/intermediates/2536f44b-4a3c-4e6a-a439-241cfc2f45e5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a746c5f1-d7e1-48e6-b0fe-c1b6fe3eb028", - "last_modified": 1771383422934 - }, - { - "schema": 1771379961819, - "derHash": "rXRxHjawTUBYhFAnhOQxs3AFaIbzjktMvIDcOnBSDmY=", - "attachment": { - "hash": "5f6db70c1c139d138f32546ecfa64d0ff883b7f7f50ebac7bc48402c5e661c3c", - "size": 1565, - "filename": "eNzAzWt9Of2amgClv4NtB_Yi23H4BoVIN0l2LkH2C3E=.pem", - "location": "security-state-staging/intermediates/b05ad0bf-feac-42d0-89c8-38749ed22b48.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1e82b623-2e35-4076-b2b4-9066eeddf6de", - "last_modified": 1771383422931 - }, - { - "schema": 1771379960767, - "derHash": "3MTqZ+G0bC0AdFBG8/vzEVpOgZuSrue5Kg+NugeWz5o=", - "attachment": { - "hash": "bcfd5bae16b714413183943a3eea9c1171d5c14f5d2ac0f81a1c6c124caeef19", - "size": 2288, - "filename": "uNTFkYMpAkhXFadzPws2J6iLVX44ue38H6LKC6alh3A=.pem", - "location": "security-state-staging/intermediates/f98d0469-4125-4c86-b13c-e7b483b4f6b4.pem", - "mimetype": "application/x-pem-file" - }, - "id": "38347b31-124d-409a-87a7-38e518c0c4bf", - "last_modified": 1771383422928 - }, - { - "schema": 1771379968735, - "derHash": "DrvfFG5j9w+qWSfujlNG6clsXw2b3TISsE7WaHF5h00=", - "attachment": { - "hash": "bbdd4921a8930b33ba74748b849b85b781995c1df4ff5eb07b3e4a285a958904", - "size": 2093, - "filename": "B_ap-qAli0QgK_GmwkqkWS5Ta20el3pYN4MTgORZMjo=.pem", - "location": "security-state-staging/intermediates/50bab50b-b900-4a47-942f-669aeeba3991.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8ce8ad40-50a5-4e6d-abb4-4723b903f756", - "last_modified": 1771383422925 - }, - { - "schema": 1771379960421, - "derHash": "oNFSOgv2Y1UOuQgem93toSgU+VcLdpfZXfLqU9T/deM=", - "attachment": { - "hash": "ee5666095b0adbea4d0fc0e22f86c954e59f68c2eb5a347a7c6c3eaf8db0a25f", - "size": 1410, - "filename": "zJax49jXNWVm12ouj-dVmlW_r0Zw4NbjfsoCxV3-blM=.pem", - "location": "security-state-staging/intermediates/d587e297-86e3-4e52-869a-c57abe4f63f6.pem", - "mimetype": "application/x-pem-file" - }, - "id": "324d9a22-f6f1-4344-ab91-3200e0d6ce0f", - "last_modified": 1771383422922 - }, - { - "schema": 1771379961444, - "derHash": "br/5Jyl6WzqvXq5nIlLDalFYRz+lu/DilQjVUoNY+Ds=", - "attachment": { - "hash": "5acc2bf7218df8cadd8d0ec9b02fccd5215c889fa33ab81589567f0ffc63db95", - "size": 2735, - "filename": "SbUYe80N5PUD3jhsoas-Cerx4jAWMp_rKd6dCI-gu5o=.pem", - "location": "security-state-staging/intermediates/cef62925-0c09-40b7-ab06-50de468f5186.pem", - "mimetype": "application/x-pem-file" - }, - "id": "dd108fda-2511-4d91-813c-fc2e18a3f77b", - "last_modified": 1771383422919 - }, - { - "schema": 1771379960049, - "derHash": "KgFVMaXzpM5Ym9hTxx3QaVhzIvV02Fycm5+d+PhsB14=", - "attachment": { - "hash": "55fd7cdb607d62d8b1e1502661056767eac9a992e199601d101161e96d67bbfd", - "size": 2272, - "filename": "MV3IyrkNFIBvx9PowOoHv2BarAqZ3RsECQExDLC8gdA=.pem", - "location": "security-state-staging/intermediates/e8becf1c-fdb6-4a1a-bd91-c1c5e0126731.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e03fa1c0-c411-401b-a6bf-a12f0188413a", - "last_modified": 1771383422916 - }, - { - "schema": 1771379959702, - "derHash": "ekO8d0fQYz+9kP+QDJJCQXwCfb3KBa9y2ppw41GNvi4=", - "attachment": { - "hash": "e95dd2c507b22712af6f40859500a2ff8c8404bfbaeb26afe7fb02fc4ebf3aa3", - "size": 2247, - "filename": "Y1e_3DqsL_yWI4RIaJ4OfhLEW5JiJoNKFVF1AxFqkiA=.pem", - "location": "security-state-staging/intermediates/624914fd-9b4c-42b8-9d2e-dfca7c80eb40.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c4738353-87a6-454e-ba2d-3f1409a4ec2b", - "last_modified": 1771383422912 - }, - { - "schema": 1771379961097, - "derHash": "AWTXzq5buQnCcq8VH/RLEXeum0fZQkuU8dlVjDCTTRk=", - "attachment": { - "hash": "00eab85c78a2098afd3ca8451d462b40b763b7267c9d126dd0b0e1cc7cece87a", - "size": 1240, - "filename": "Sd01PcK5GaN3BkURfQ5gwWEV59G8JZ7v5zSwDqQ0_l8=.pem", - "location": "security-state-staging/intermediates/4656f5d6-4de9-434e-9b9f-7b892bc84fa7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "fe2f0eb0-0fbf-4434-9fb9-7fb1f42db2a2", - "last_modified": 1771383422909 - }, - { - "schema": 1771379959362, - "derHash": "tFq44HkCXfl4NTWnIIYhKcmy0iZyub6N/nzS7aM/YqM=", - "attachment": { - "hash": "241dd49681f820011509f861857c1b1f839342dae9b9f76cc64c2df4856a72fb", - "size": 2426, - "filename": "OvNIbrbxKMoTb8GYIG1BTn9lwQ0YYroiOhks5fB5qEw=.pem", - "location": "security-state-staging/intermediates/56650953-6928-4ef0-a8c1-13a6b550a2e5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "36406b21-9d10-4554-a6ad-cd8fb0ea79bf", - "last_modified": 1771383422906 - }, - { - "schema": 1771379958610, - "derHash": "LOO+crv1btsXCVtgPtTYKAsIGzggQ0FUaALBQnuyQ18=", - "attachment": { - "hash": "afc258e86e09c37825e2de569bea1329869357e5f9cd9b08a2892c173479be8b", - "size": 1565, - "filename": "CWwJGEh4OA8IRMxg2K3Zt_qM9sJ80TjsA9B7YMpvutU=.pem", - "location": "security-state-staging/intermediates/5dd85422-3d67-4831-94bc-8c84060faf3f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "32a9b3eb-fcc3-486f-b357-0b9f73397fa5", - "last_modified": 1771383422903 - }, - { - "schema": 1771379957758, - "derHash": "yZ9SrPkCKkSjf1s6bCcPjFRTY7MLgaByZJh857sb+GU=", - "attachment": { - "hash": "acd4d614b98e48d90dffa83a191e6f4ff1c64fc270e277fb8201f1b04bd14e54", - "size": 2223, - "filename": "DvsDTnebtr-qMNzm5ZKkdsj2njoPettzSoSoZ7KFFVU=.pem", - "location": "security-state-staging/intermediates/e8af9453-7607-4bf9-8cc3-c29c0c3d98b2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "2d3690f9-c6df-470d-904a-f646155d6edf", - "last_modified": 1771383422900 - }, - { - "schema": 1771379958239, - "derHash": "2OJppusIy8M3rWV4xyE1eHSEyZ0vsIzO0CnoBr4QQPw=", - "attachment": { - "hash": "ed3ea6d09c5ea1ee4aff94776f7636c5caa4a1f898b7cf38a7a51186ce041b2e", - "size": 1362, - "filename": "A0W8sBH3jBrKa3ukj8kse0jYSSeQM5e5tb8obnMQvak=.pem", - "location": "security-state-staging/intermediates/0b176f29-4c30-4f89-899a-df7c0a33c89c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "6de339fb-c8aa-46b2-8d3b-b0336aae52d9", - "last_modified": 1771383422896 - }, - { - "schema": 1771379958978, - "derHash": "qRqkXHm5nzq6ecxnfSvdRiO1Sj0DWzdoEQnX44ugLmw=", - "attachment": { - "hash": "ad3b03e3ad99c904a1f84f06c2bef0f7591df4e115471bc648803eda48bb2abf", - "size": 1114, - "filename": "CDlUKmOe_VJz-xHAWD4rTyxmJyTk6Ov6LaEobP-GgSc=.pem", - "location": "security-state-staging/intermediates/212cc45c-2d61-41a7-b295-baf70870c47f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "06d56226-3393-41ee-9fef-1805be9015d2", - "last_modified": 1771383422893 - }, - { - "schema": 1771379995448, - "derHash": "jMNOEcFnBFgkreYcSQemRA7bLEOY6ZwRKoWdZh+OK8c=", - "attachment": { - "hash": "a013c9348417f4076dc717cab4baf557d42e0c77d49f5a42c13f09fafee4a167", - "size": 1634, - "filename": "zUIraRNo-4JoAYA7ROeWjARtIoN4rIEbCpfCRQT6N6A=.pem", - "location": "security-state-staging/intermediates/fb539179-3a9e-409c-b816-b1ff9c2e9fcb.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b15c1982-02da-42fc-8b9e-f65441b163a5", - "last_modified": 1771383422890 - }, - { - "schema": 1771379995124, - "derHash": "JZ/wljoGZb9A2S4F6VuWDMtCPb0RdIKuZHvH/V9c5kQ=", - "attachment": { - "hash": "bf962f1cb23a7d0f480631f980003b0f8a4954d3fc8a536096b85009bf10f4f7", - "size": 1268, - "filename": "Sqfg55kB0nCelHUOmKAT5k3L3CGcI73qNrCvquxPEtk=.pem", - "location": "security-state-staging/intermediates/a7ebba07-aa5e-4e11-a3dd-8e3fe29c9913.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9f9df346-b0fb-4675-8b3e-3e24e715a4c8", - "last_modified": 1771383422886 - }, - { - "schema": 1771379994810, - "derHash": "RtGy9G+VlBC9AgFwLLMwd6nDT1yyP5ds3Y0yiYmwSyc=", - "attachment": { - "hash": "3ea63dc4a507eb387f96400817f15526526c7689c329daa32bc3b7dbfe5e99e5", - "size": 1114, - "filename": "rIFtvsDVcqaV01KeZLiAe4bkDXjdYYIEA8JYpUI5ZSk=.pem", - "location": "security-state-staging/intermediates/1e0725c8-0d33-4925-8b1a-bcd9cb054609.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a10f288b-d071-4599-a4d7-a3f580d70d8f", - "last_modified": 1771383422883 - }, - { - "schema": 1771379994492, - "derHash": "BObeomG4cg4FJenaIyghADUr3rwRnPw9vYEsPWiivN0=", - "attachment": { - "hash": "3d6e89e33678a67ec6eddaceb18b70cadc759bfe633e7ef09cb8626f20fb4fa9", - "size": 1219, - "filename": "7vXeSnRXvLXvl9B1zzN_yCCeS8JHPs9oESfufaAZTPo=.pem", - "location": "security-state-staging/intermediates/2fd11858-a029-4e16-af02-25b825af97f4.pem", - "mimetype": "application/x-pem-file" - }, - "id": "78063c24-1c04-47fa-a180-3a917548f47c", - "last_modified": 1771383422880 - }, - { - "schema": 1771379994137, - "derHash": "LAtV3z5vJrQTPNBK57emLx3O/Uwn59c6MMsl2RR4bpg=", - "attachment": { - "hash": "7d32a81b7be56d2a93def670e5276bf92d603edb237cdc7a5091e142b3945039", - "size": 1223, - "filename": "YmkZngLgE644SL3H_7nkRhQ7T-xLsXz5ZtXbk0Skr8c=.pem", - "location": "security-state-staging/intermediates/b1a32551-f394-4e3d-ac11-6d9e82429532.pem", - "mimetype": "application/x-pem-file" - }, - "id": "fe9c9028-3bb1-4f7c-b2e9-eda5a4f6aaaa", - "last_modified": 1771383422877 - }, - { - "schema": 1771379993828, - "derHash": "sm6zEPj68O9bDQtxqmXsBQ+jreKRNPtDirZEAoj6bmc=", - "attachment": { - "hash": "c9fd1a02e33e6fb6aa966212b051bc01d9763d43207f96cd14bd4d2ab77caf5e", - "size": 1666, - "filename": "3mc_12C2pwvtV5JjfcxLmbbWYQSbj9yqSWLXKfZcMUw=.pem", - "location": "security-state-staging/intermediates/3f6fcb85-590a-4394-a50b-fcd97767f005.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c9c51e92-10a6-4cca-9541-da41d90ac859", - "last_modified": 1771383422874 - }, - { - "schema": 1771379995845, - "derHash": "F4Mtu0j2CbcionUH8dMn3gYtf3uFtxMl2N2ZsZ+1utQ=", - "attachment": { - "hash": "9ec9aad5d1e702532463d40db23f5be46e95a5ccaff14959865f2e44ccb6c9f0", - "size": 2402, - "filename": "Flwt639e1YxmeZ5xDPUdZ4HnKJP9cnEbsIwp5s3EQ24=.pem", - "location": "security-state-staging/intermediates/a3301551-1077-4f09-ae3b-ad23de390f2d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "3d692efa-1190-491d-b508-0af0027cd69e", - "last_modified": 1771383422870 - }, - { - "schema": 1771379993506, - "derHash": "efH1q2l96/GV9bfaZflTmWgu2uuAEVudQqauXi+piAI=", - "attachment": { - "hash": "9c4047b27b1b439594f0eb24b088e1d1ed2f32b8eaf4ad49dd4d2745b8add3f5", - "size": 1683, - "filename": "jzqM6_58ozsPRvxUzg0hzjM-GcfwhTbU_G0TCDvL7hU=.pem", - "location": "security-state-staging/intermediates/16a959a4-49f3-4646-92e5-b802f00c45d8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "6575940e-5533-4443-8372-8f2af2beef1a", - "last_modified": 1771383422867 - }, - { - "schema": 1771379993182, - "derHash": "TM8XwMjBwQ1YduxeMoD+jRNN82rt2ERCibmQvDdB508=", - "attachment": { - "hash": "b3e4e383491cfa05a6e5858dc73ac1a4018938ed5c15a0d37c708311bd252227", - "size": 2251, - "filename": "xpW9XED3U765P2UyAqPWNU7eDdISlf2JSghpvjZnU-Y=.pem", - "location": "security-state-staging/intermediates/68a64f82-d604-43b4-8026-02e02c53fce5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9bc7351a-ded3-4f2d-802b-a0d70173eaf0", - "last_modified": 1771383422828 - }, - { - "schema": 1771379992530, - "derHash": "ekrZ4bot+wj3UqEkAy9wWIaAYumEF4ViPrQTZ4OlP/w=", - "attachment": { - "hash": "2a78aadf6f57056bfccf06216d6b005477a6b8793f3e6943e836155836bd973f", - "size": 2406, - "filename": "1H6MGjLPtFRyYFlSo4Ass0f3mCO8NV0eF1V3MxXc924=.pem", - "location": "security-state-staging/intermediates/80eb7e77-68b2-42be-bf4a-9acedbb841bc.pem", - "mimetype": "application/x-pem-file" - }, - "id": "35bcb1ea-2846-467b-b6cc-4cbcf281cf8b", - "last_modified": 1771383422822 - }, - { - "schema": 1771379992196, - "derHash": "Qy7CXw0o3pAG2Xv3UvF7uyzUH2aZM/ywctmhFI0CYfM=", - "attachment": { - "hash": "09abd3ce43cb10535c1dbf00e2d354e1b1e921828615c6982c1fa1db5a151f0a", - "size": 1240, - "filename": "XAZgorFkkQ2P9YnBjhRVLp4Owjfc7-LLc21BpIEfgaA=.pem", - "location": "security-state-staging/intermediates/1dd3c44c-9465-47c9-8bff-5e0f3d290f6b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e5c3997e-7d81-4ff8-82cd-a90511c6f3ff", - "last_modified": 1771383422818 - }, - { - "schema": 1771379991866, - "derHash": "M+ik7UiTB2DOGtei1E8HmyL2YAUnU5dhCeb8dHUlUr0=", - "attachment": { - "hash": "8f0250802a5effb55f9283f5becfe9736b17e0bdec2123b985d6c547798bc239", - "size": 1666, - "filename": "cJhQtqu9DZRLxNRS1bDaM1E3d1GuJZmxfwKcfb-Gx3Y=.pem", - "location": "security-state-staging/intermediates/f0bfd948-80b0-4d75-af2a-161c54c45eb5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "20e07f1c-5ea2-48ac-bc5c-7ec23af00183", - "last_modified": 1771383422815 - }, - { - "schema": 1771379991526, - "derHash": "y1oYJ9VYOMBPnoyMFSyocRsCZ0WjJVQSowFz3KsqZho=", - "attachment": { - "hash": "ce5bd3e2951358c84a12dcf2bcd4e0d149f73cf46a70df65c66d76ae5ef3d0a2", - "size": 2296, - "filename": "yRmVmPrLlhj3dAnVv7nNCg1zdplb7nal2Hzc13XePY4=.pem", - "location": "security-state-staging/intermediates/132b7093-60c7-4ba5-a6a1-62834fa14ca7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "6713e8ef-a26f-458a-a846-29ce2b707b6a", - "last_modified": 1771383422812 - }, - { - "schema": 1771379990558, - "derHash": "NVAMtjuNl2lSjWXYciD1HAaYB6WVrL8vtuyjj74KS9I=", - "attachment": { - "hash": "cc59ea718c21367a79aaa22728515f599df383a45bf89dbc219bca9d78633c41", - "size": 1743, - "filename": "UaqofZhLVZrGnpKfiIoCLYMuCJ_026CkErUQG8pLx5k=.pem", - "location": "security-state-staging/intermediates/dea02186-3609-4baa-b138-595090a0bfe3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "f268c95b-86ca-4b2f-bff3-2e6bad53ae4b", - "last_modified": 1771383422809 - }, - { - "schema": 1771379991200, - "derHash": "j9FqF5lE1dHUIK8JQF7aer8qnHQog+jC+J4NkK+vdUs=", - "attachment": { - "hash": "fbb63f349bcc5868c551877141aadf4dc7c5f336ecd9ff3349ae89d79806d799", - "size": 2438, - "filename": "2ldsefSfkTU7GGXfz4iYiPnOUDkbKiYdUaPGd2du8EQ=.pem", - "location": "security-state-staging/intermediates/c0bb384e-20d2-43c2-be9b-9dfe230ff201.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0477a59c-990e-4d35-9dc7-25ca046895fa", - "last_modified": 1771383422806 - }, - { - "schema": 1771379989556, - "derHash": "BCfqPLSntMsgXnensWbTMr7bjo70abxeiDFpyNCsh20=", - "attachment": { - "hash": "ddd283a64a05b7e4bbfe12c4be1dc2765fc1358bd6c784e4d0d23dbe17f8c3ab", - "size": 2389, - "filename": "NFVoOCgWiNHJZ9Q9E3Khu684knciLwPhAXsYs0ih8A4=.pem", - "location": "security-state-staging/intermediates/c4e7e68b-5acc-4857-8135-abba734afbdb.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1f3cee53-6b61-4074-a232-ad53998ac104", - "last_modified": 1771383422803 - }, - { - "schema": 1771379990883, - "derHash": "D7bOgJCdGa/uaojJWenpqmRmcVvOBcZEn+tTCghtrxQ=", - "attachment": { - "hash": "384493a25bd899d9fdf55deb2a362135f4ec8be8dc34518f6004cef3e417556c", - "size": 1691, - "filename": "uG3aQXLPd55q_z1RlGHWJQcDYD5HzCoVUz8Q5eD3Rlw=.pem", - "location": "security-state-staging/intermediates/a2c31b74-0c89-4d4b-ae16-73e4bc598ad5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "f9fdb1c5-6699-4177-a7be-7273ffc5abfe", - "last_modified": 1771383422800 - }, - { - "schema": 1771379988889, - "derHash": "mwZU8I35Amy7Q6LFi/9pDQ30+qormKPl8nQWaG/v42U=", - "attachment": { - "hash": "300318eb560f5419bd1da2eb245b196acb832c20b32c1f3b99d610ec399759b4", - "size": 2247, - "filename": "fX1V-PXAqi-aQpeuWycCLadcGJmTtllg0ag7g2tVQOI=.pem", - "location": "security-state-staging/intermediates/631a720b-b766-4af2-9417-9fd4192d0749.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b2473971-e94b-4053-9653-c8854a0130c8", - "last_modified": 1771383422796 - }, - { - "schema": 1771379987559, - "derHash": "aEsR5Wq3JQK3XayhzQCePdS+qzrB/kSJAtJydmzKeX4=", - "attachment": { - "hash": "27b4c6b8a513f582f5dd6490f6ecdf6e32556438289ccc0aaea497c239797aa6", - "size": 2414, - "filename": "J2FvJRuRs99qJBtFhUpdsKexvt0Topb1ystnCurEYOU=.pem", - "location": "security-state-staging/intermediates/eb8f8922-d13d-43de-8853-a1f3ad96db33.pem", - "mimetype": "application/x-pem-file" - }, - "id": "be1a6f43-1879-4527-a14c-bb2a9b3d7dec", - "last_modified": 1771383422793 - }, - { - "schema": 1771379990219, - "derHash": "PxNZfTNV00G9CTKK7lZ9f04ALZkZuYb5li2v8ZfqddE=", - "attachment": { - "hash": "04c73ad51bafa758c3dbc488b0e8f6f0e0fa4e27b9bce09e183127000f900eaa", - "size": 2418, - "filename": "zrUpja649ZJ5SAtGACyJ93Vcw6FpUUsRuBC-_BlaANg=.pem", - "location": "security-state-staging/intermediates/63f39623-6fe4-4871-a38a-32ae174c9f79.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4be71ce5-17e2-4f76-ab62-5c43e9851395", - "last_modified": 1771383422790 - }, - { - "schema": 1771379989883, - "derHash": "14SkMoBMLVN7moJrt4CmNiqeArvL4t24z6ARoLcLPDc=", - "attachment": { - "hash": "8da10f330ce7018b3031fc125fe995ba53883c147b91d640f7f5f26850356ab3", - "size": 1565, - "filename": "T3ywVO1SacoB2HDkbkO1ELzPMPsEd-2SkThhG3dSBqo=.pem", - "location": "security-state-staging/intermediates/2ff19f1a-5b1c-4547-ae09-f8acce13b57e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1de78446-2d59-4b8b-81ff-10c9fc2aa258", - "last_modified": 1771383422787 - }, - { - "schema": 1771379987227, - "derHash": "6nolJV0RH8POTLj6vjrfnCe75tsgP5VQZrq0xacfPQg=", - "attachment": { - "hash": "9568baefb8411a028dc05ec341faa71fcd221a891d9de47b93d8532aaf3928ed", - "size": 2735, - "filename": "X0Ebh9Ff3DxzDz3NGauSLFLiPe8BsycRjoZbV-sFQ8Q=.pem", - "location": "security-state-staging/intermediates/13d4a337-4685-403b-8b60-9371802510e7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "791a80f8-e035-43ec-a7e9-cde05fe4bf00", - "last_modified": 1771383422784 - }, - { - "schema": 1771379989210, - "derHash": "iFRRMHpKvymLsordeT7HgmYpsFfsp55vUdxR9CzWSi0=", - "attachment": { - "hash": "930dc80a782fb09fe93279e40c917800babbd8d6be7fd0cdc9b11c7d6832db84", - "size": 2735, - "filename": "zfGiLN69N9BwX-PZGRinYY9IGrhN0lfxkStqQ1RATVo=.pem", - "location": "security-state-staging/intermediates/bf9f0f3c-f468-4b3f-a410-28d2da88c2ed.pem", - "mimetype": "application/x-pem-file" - }, - "id": "5263ae6b-9677-4bcb-8afc-f3536017c002", - "last_modified": 1771383422781 - }, - { - "schema": 1771379988262, - "derHash": "mLiWYlwMIwre7D6yz2qtUAHs+RVqaGROgjdM5YM7wls=", - "attachment": { - "hash": "5694e806638c951bddc8effc55278bb34d5dcd8b6e1dc5a775c1e5db895df054", - "size": 1240, - "filename": "Q7_6GdbvZRRR9oQeAZkx6W9vLq7_KKtLbxzkV23icXs=.pem", - "location": "security-state-staging/intermediates/8cced59b-0566-49d2-8269-3e494df436f6.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4f8d6d85-5dec-40d5-916d-ad0920979940", - "last_modified": 1771383422778 - }, - { - "schema": 1771379988596, - "derHash": "aNCy6Mhb8Am02zmsi14vqOH9n9HlAocE6pKIx+Ryqus=", - "attachment": { - "hash": "7ee8d9739388c554cf3b1e8c694adbfcc8987281bc7d6e0e3f70e444d02785f6", - "size": 1406, - "filename": "x-B4VfwG1Q5TkeQLpvUFHvsaT9cd8FIf8sfKwgA4sCE=.pem", - "location": "security-state-staging/intermediates/2e947c12-379f-4679-bdc9-f1e34f485a29.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c36e6c31-dc82-4aab-941d-2a1abccf4f1a", - "last_modified": 1771383422775 - }, - { - "schema": 1771379987930, - "derHash": "KRgE7IZoN81a9fTWUvHcx5vsYi1Pm/SHDl5NhjnfOtQ=", - "attachment": { - "hash": "26998de74e03fb8f528d539de9a5495eb28542a841efc18bc4b2b5868215ab7e", - "size": 2414, - "filename": "jHhw1-HFXQ8G1320mEPvrwFzcbfij0pxJB_xdG8Epfw=.pem", - "location": "security-state-staging/intermediates/527cb15e-ee0f-459c-99b2-c1eaef58a3cd.pem", - "mimetype": "application/x-pem-file" - }, - "id": "43a09a06-e0fa-4fdc-9dee-064f835033cb", - "last_modified": 1771383422771 - }, - { - "schema": 1771379986759, - "derHash": "w7wrSA+xoatNC6HtbHtT4JZEcEVzNiCZGjLWeY13qiA=", - "attachment": { - "hash": "8d922980c0e8472065e5cf39cdf3318b0317f82164d26f7bf0e59730f6ba6169", - "size": 2389, - "filename": "GpQuOSW4CYlrSykajNLnvF8dUzqlI7g1Oy3zd7Dwrb4=.pem", - "location": "security-state-staging/intermediates/e3ab3320-fcb1-458d-9604-8d96876c0dc3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ef0197a8-341e-41f0-9918-aafa42d1ef07", - "last_modified": 1771383422768 - }, - { - "schema": 1771379986451, - "derHash": "DhC93udRLb156/C09I/u18g8K9PdgXZVZfT/EQt7+kI=", - "attachment": { - "hash": "e3d590ab4b71fbd20183713733b3253b32ef24a73382153319f8916fc66d3c1d", - "size": 1678, - "filename": "VfKdH3KeIRG8iIljlHEf2ck5OXG4Z8_yf2AOohCgqgk=.pem", - "location": "security-state-staging/intermediates/993bd805-030a-4868-8cf6-e98571af36a9.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1fed061a-dd83-418f-813d-b6118005d1d3", - "last_modified": 1771383422765 - }, - { - "schema": 1771379985774, - "derHash": "FlWjBPCA4FocubKekfmp0ZIuJxqGRetycPRjvDszIGM=", - "attachment": { - "hash": "c17b52d3f91072b235e9ccb8c1ebcb994df91e61083ea77a96b01db22df8d732", - "size": 2247, - "filename": "nHSwYpMcnfzgQILJAOh465gd_zOHDb3EjY8n6v7TfHU=.pem", - "location": "security-state-staging/intermediates/2709a165-4723-46f6-b2b4-b355575dc322.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d9822534-f9b5-4ab6-bb1d-f00dfcb8024e", - "last_modified": 1771383422761 - }, - { - "schema": 1771379985105, - "derHash": "YBKTyiCwmgMpXRliVsaVP/nrqBHbjjzhQEE8G//pqGk=", - "attachment": { - "hash": "98c05c3829d90c10dc917b2cce8e171d89d2621e2a69fdf4104f2ca5c4e1d9b5", - "size": 2434, - "filename": "CyFyC5Hw5FxD8ufLGF9VLrfeftRrKsFy7jm1CEFxCm8=.pem", - "location": "security-state-staging/intermediates/4a0af95b-966a-4652-9c70-5ba2f0c72e5c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a9515604-48fb-4d4c-be99-c15d9bd21f9f", - "last_modified": 1771383422758 - }, - { - "schema": 1771379984472, - "derHash": "x5C0cShEfsC2DyK/y3ldccMm3ZEO4Sy7TMWoYZHrkbw=", - "attachment": { - "hash": "8d48a4abde2999b864fb9607b6e2b43144a92714cdf63de21b44d83e923ae297", - "size": 1687, - "filename": "nKWcsYrc-y5I8vLf1VGByjbt-Hnasjl-9h8lNKJytoE=.pem", - "location": "security-state-staging/intermediates/067c9a6a-f08a-4da6-891c-b0de7c14fce0.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c52220a2-469c-41fe-a3ae-bfd56e105c37", - "last_modified": 1771383422755 - }, - { - "schema": 1771379986083, - "derHash": "2SgN2gH83+IIlVzH++8nw5CcCgXSwuJOJ9uzPDvliJw=", - "attachment": { - "hash": "a05c98d6ba1c4be9033691b6dd1760a89160635ef4b2d8c00f46c2258daa769b", - "size": 2735, - "filename": "3ZJfwY_ISI6EQzcyfKng-JukvwIBOzjzkcHvWQT0ZP8=.pem", - "location": "security-state-staging/intermediates/578acce7-fb1f-4051-82a1-33f3ba8c64c0.pem", - "mimetype": "application/x-pem-file" - }, - "id": "04226bf3-deff-48e3-affd-7c16f4defe83", - "last_modified": 1771383422751 - }, - { - "schema": 1771379984152, - "derHash": "z02Mk5M8CeFFdCnd3oFOiLzo25yuWvF1ZgpxQsMZ3ag=", - "attachment": { - "hash": "667f53cf14a7e43bae9795cd2627a976b76afe1412f4242f47d617cc91979f38", - "size": 1228, - "filename": "r9I3Mo-W78ewr2cC0pnZbFy-hU7rjjH7EYmZrNvHRO0=.pem", - "location": "security-state-staging/intermediates/429c3458-2d5b-4c02-9bf1-52535707f5ff.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c16e3788-4462-49bd-b062-57558294a96c", - "last_modified": 1771383422748 - }, - { - "schema": 1771379985458, - "derHash": "E5SWNNmc1v1qqAvANP76zOsZaf7vmGWGcT7NuwV1jT8=", - "attachment": { - "hash": "7ee77869171db942343af7e2174cdfdff91ecb9e29b3b4b230f5922758d62ee8", - "size": 1743, - "filename": "LoMHBotttiDko50Gi13uXW71eIy7LAttI-rYT8wXF4w=.pem", - "location": "security-state-staging/intermediates/a79d8d26-4837-41c0-be36-65c5dc06e3e8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "af7306fb-d9a1-466e-9915-d9cc4fa67e0a", - "last_modified": 1771383422745 - }, - { - "schema": 1771379983835, - "derHash": "fo+RQRm7EJDWIEkI5a4fQL4kwUkc19XPtqk2GMvAD9k=", - "attachment": { - "hash": "ac692c130dd61ad078ca128601e56417964e4f3c303740c7446aef653a0bf756", - "size": 2036, - "filename": "H92PKGXpuffyCKbwBGAY4e4XY990BbquJeNZ072shzw=.pem", - "location": "security-state-staging/intermediates/b3b15e04-4480-43b9-a9dc-2c328d58cfaf.pem", - "mimetype": "application/x-pem-file" - }, - "id": "972d9299-89a4-49bc-85c9-3f9503af5276", - "last_modified": 1771383422742 - }, - { - "schema": 1771379983499, - "derHash": "UjYaaryDXnrUs3XyFlBVMDFp3en760+q9YjtUy3cLcs=", - "attachment": { - "hash": "35b36a9618f2d048fa059e8588e2dbbc7d6fef31ac651d648efbd38794182522", - "size": 2418, - "filename": "kmBKIXcjXHoTMVlkFNqDMCKPx_0QGnujvMIlY8VhvsM=.pem", - "location": "security-state-staging/intermediates/d400bfd7-eccc-4c50-91e9-abb5ecb008d5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "60c55d84-573d-42d3-acf8-c746ad8f6936", - "last_modified": 1771383422739 - }, - { - "schema": 1771379983155, - "derHash": "vDiZOqFLSZMYd2I9lek5T2wa4tMtxf7C6Lcln+2ZzSQ=", - "attachment": { - "hash": "8182d8576fdba44d232cfa5fc670ae228c0d69d1a2887df3ace7f7cba270263d", - "size": 1033, - "filename": "20csvVYyg5k6NOC9v8jgIhQ3dQ286VrYn2fYB1UFkKM=.pem", - "location": "security-state-staging/intermediates/cff5970e-c900-439d-802e-cf46c32ebbf7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c8349142-ad94-4ab5-a758-a90af1a89cd9", - "last_modified": 1771383422736 - }, - { - "schema": 1771379982833, - "derHash": "NSCr/FpMJVjIm/kO4pGB0ZUYzKbQpXptxWj08HyJ+N0=", - "attachment": { - "hash": "9201459b1d136a5af19b04e346805cbd45c445c23888ad0758fe032fe73233b9", - "size": 2434, - "filename": "MPznOZcyiDmZpfN4ptp5ESc6L5j4QTDQfDwltgjwahg=.pem", - "location": "security-state-staging/intermediates/902238bb-a6da-4029-b10e-7f81aa587954.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e9d4a26c-70eb-4523-8db9-324a2537c83c", - "last_modified": 1771383422732 - }, - { - "schema": 1771379982506, - "derHash": "l2WN6MaN+pis4eUCimPVShqukRs+IUcQdsaFDNCMurQ=", - "attachment": { - "hash": "22f29dcd0b1b4fdc9ab1dc87dd80a29791a78c4a3eecefc52885d7aa5ac2d7ac", - "size": 943, - "filename": "s_tdAOmUzd8syaTuqfgGvFcn6DzA5Cmb-Vby1ST-U3Y=.pem", - "location": "security-state-staging/intermediates/647d94e0-f2cd-4ccc-87ab-a340952dfee5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "27ce4ec9-faec-4da7-985e-342705f8c569", - "last_modified": 1771383422729 - }, - { - "schema": 1771379981512, - "derHash": "qcMif7HLvRdZk474cY/fg1wPi2pUaSi7C0eCpXDO1OU=", - "attachment": { - "hash": "03b7de7112e211867da0497964a9c25cf4720535d449f24f6043c5de7c34e65d", - "size": 1028, - "filename": "k-O0hWIR8ZPru-0NSbk93eqewSIKEq2fG_PSsKJWu9o=.pem", - "location": "security-state-staging/intermediates/5a53138e-e54b-4e82-bcaa-64fa84473ed6.pem", - "mimetype": "application/x-pem-file" - }, - "id": "db1cb90d-6b74-4c54-b3ad-4d79beddc907", - "last_modified": 1771383422726 - }, - { - "schema": 1771379984787, - "derHash": "FrdLM1xvmAHPxJnjnMKS9tE8UZG+hxJiJkA4GdpK0hM=", - "attachment": { - "hash": "56bc8cfcc0f90ffd2faafea6aeb09f0c397cd3475bdc32003dccb11be672234f", - "size": 2735, - "filename": "4Wb5rmDbKtG4UXE6N8Ba-D_3Tvmo-yey3MX92i7q9_g=.pem", - "location": "security-state-staging/intermediates/7da8c359-d05e-4844-aef7-b3c4cdc526b3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4ea2114f-e7e0-44ab-b435-d67cfd37a3eb", - "last_modified": 1771383422723 - }, - { - "schema": 1771379980861, - "derHash": "NqUrxaUcqQ3xihuv+SmCMBWCpUwrvk+NYY2W0ugwpQE=", - "attachment": { - "hash": "d53c4d844d6eed5385654e75a1641e4d35ea19089d443cedeb31ba9d0af33416", - "size": 1589, - "filename": "-lUwtVWZNBXYbXTU_w5L8kAuWjoL1vvnEnYfTdhaxLw=.pem", - "location": "security-state-staging/intermediates/1fa5966a-a20c-4036-ab46-eaa14b68e5db.pem", - "mimetype": "application/x-pem-file" - }, - "id": "6011c98f-2180-4f46-9250-ca108f680e08", - "last_modified": 1771383422720 - }, - { - "schema": 1771379981180, - "derHash": "FesKdcZzq/vc0vr8AoI8kf5svDbgB4hELIdU1yvsNxc=", - "attachment": { - "hash": "6e79684a22734ca75ec32f3adf0f864295161310bce94980a2608da91fbdd285", - "size": 1678, - "filename": "GI75anSEdkuHj05mreE0Sd9jE6dVqUIzzXRHHlZBVbI=.pem", - "location": "security-state-staging/intermediates/7b4e3ba4-11a8-4bc1-b911-398ac1b37b7f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "16d3ee99-b6af-45e8-9618-e6a3f3f5f0dd", - "last_modified": 1771383422717 - }, - { - "schema": 1771379981847, - "derHash": "mkcWh0BPtcOqpbIYBHoyVaQZl8hbaqgAn0w9vv56kpk=", - "attachment": { - "hash": "b11733f10844b48f5d0b5ba52e491f75c212da2b32551f2fa8f07421fa61a706", - "size": 1114, - "filename": "dkqTHI0prqQCUR4E_lTiPK8i202FKVTJGAy6OdoQH38=.pem", - "location": "security-state-staging/intermediates/5b94a3ca-67a7-4ea6-bed1-b78818f3e1e3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1088447e-c2b9-4664-a5ed-a9e76668347e", - "last_modified": 1771383422714 - }, - { - "schema": 1771379980228, - "derHash": "4HKzDX9bi88AgOUdbMd2V2cHLbIxnpuxzT0CoIaJh1A=", - "attachment": { - "hash": "3e49cdaef402d06e6d76e1e8dad5e688adc3aa54b853d1fd3e757f71e43d40e6", - "size": 2385, - "filename": "wmkLa_Nak2Tml3NexjC_2dLNWQQOOQimZ2UWjjKCsE4=.pem", - "location": "security-state-staging/intermediates/6b5da76e-a192-4b31-aded-78170fdfa9c5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "bb17ce7f-412e-4566-9353-9c40cfba1573", - "last_modified": 1771383422711 - }, - { - "schema": 1771379979901, - "derHash": "RbOUKVnXT4tUamq0dASvxKWDrV+m/9iagnoqeFIvZv0=", - "attachment": { - "hash": "af185f38466afb996869c18435f4d0d732d48159ee9b8921b868dd2cd2ad668c", - "size": 2385, - "filename": "n3t8p3z1tTr8J7q5sknewofsFtqfzhZMc9d1GeyAzdU=.pem", - "location": "security-state-staging/intermediates/2db2eb28-2cf9-4dab-892f-80808cb1a430.pem", - "mimetype": "application/x-pem-file" - }, - "id": "3136212b-5350-49c2-9e23-5487a349c16d", - "last_modified": 1771383422708 - }, - { - "schema": 1771379979578, - "derHash": "c4YY2dTDT53/lXICVe+QQP/HxMUgMwlDjhDm9JWUYrY=", - "attachment": { - "hash": "277b712342d44ee58974abdce73d8ac9784febb2fd95df6387cec93ea90fdf94", - "size": 1618, - "filename": "bBYnwvq00NUAq9ce-GxbeF2ObcNW4heyEn9_9e35fcs=.pem", - "location": "security-state-staging/intermediates/f81407bc-5a71-4e1c-8124-2df61e2886a8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "eb785ee0-d99f-47dd-87e2-79eae00a15c8", - "last_modified": 1771383422705 - }, - { - "schema": 1771379982176, - "derHash": "ONiV9RBbwlRYIsF6JET0sOo9KY0sFaOClqpylaPYXOk=", - "attachment": { - "hash": "c36f0fa14c17094eeb82f3c5241cac4dd5d612da357ae70348ef0c070758237a", - "size": 2735, - "filename": "k8hnGa94Ch68AfKVLqnpxVyUQg-KzClS6foKRac9HI8=.pem", - "location": "security-state-staging/intermediates/65fd4f23-294f-4b6a-b409-534b6fb52077.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0c40f1d4-e03a-4a07-82ce-4bd625d8f0c2", - "last_modified": 1771383422702 - }, - { - "schema": 1771379979246, - "derHash": "YcEGcIOuBE7x1knOWQu/CdnXOeAl2o0ZX3HPqtbrrmk=", - "attachment": { - "hash": "00f7896c16a21188e61de02a8277feaa52a4b1ce711c256892645e3a7a78fd28", - "size": 1479, - "filename": "6p1mBoam4p5pkVPKIbd2jwQWyu5AebEnipX-25eoiRg=.pem", - "location": "security-state-staging/intermediates/11ec07a6-c733-4ab7-b6fc-fa8be004d22b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9ba61080-1d78-4020-950d-24dafb131ccd", - "last_modified": 1771383422699 - }, - { - "schema": 1771379978874, - "derHash": "ml7s7px9iYvYHcO/Bm2vau+42xxZZ2IG0r/daCMSxvY=", - "attachment": { - "hash": "5ab0596aa7dd3f7d6cf1c6d2df754c46aa3f5872ff617e4f9336bde88379619b", - "size": 1634, - "filename": "S0mHTmqv2QhJEfy5vyPVERSnyMEliJzdC8RXduOjhAs=.pem", - "location": "security-state-staging/intermediates/2bc4bc0c-cb0d-4e84-b59e-7c7b2097a3d6.pem", - "mimetype": "application/x-pem-file" - }, - "id": "3ba4100b-f575-48f6-8db1-3dcffd501328", - "last_modified": 1771383422695 - }, - { - "schema": 1771379978236, - "derHash": "BokcNKLkaHxjCymFDMn21F3tOUkc+HfHJGtuxjNYeiw=", - "attachment": { - "hash": "8eb45318e303af3596eb97f9d325e40d6b4511597d531be9e67c274e69e63bfb", - "size": 2300, - "filename": "RLK-VYBqChLzg7iocWa8zHtEOxWqLPNruKmUxmDc240=.pem", - "location": "security-state-staging/intermediates/30a3eb5a-f22e-4953-a0fc-d59cf1bf9570.pem", - "mimetype": "application/x-pem-file" - }, - "id": "14b40b7e-6bca-4ee0-b86c-4356c41ea187", - "last_modified": 1771383422692 - }, - { - "schema": 1771379977885, - "derHash": "sMv6adjU9ljPdhwrDPc7hKkAIu9bl3sT4G7EK5E94fE=", - "attachment": { - "hash": "b4ee003eee3fc610e4835b003541bf3d65a3d3956ab387f4cfb116e9cd1fa2b8", - "size": 2198, - "filename": "MeWIGkdV9dZNGmIIdnBqg4b4KkKimFVeNe5D6hvgcag=.pem", - "location": "security-state-staging/intermediates/7c50286f-c82d-4163-a16f-95d0b66759da.pem", - "mimetype": "application/x-pem-file" - }, - "id": "81616b3d-a476-4199-beef-50c7789b7b52", - "last_modified": 1771383422689 - }, - { - "schema": 1771379975947, - "derHash": "R90oHd9cdBC29XIswWwRd3a++NUunqoitATsALU+dvs=", - "attachment": { - "hash": "dd79d22cb4f98cfce10bad9b7958ae63f26d9afadb8e29854a89db90c0f4668f", - "size": 1085, - "filename": "kMsL7-GflngfmtZwdcPM3VVUWDVVYJpH22quwb_yjIs=.pem", - "location": "security-state-staging/intermediates/6aad13cb-b473-4330-819d-49334c1ff0e5.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1cf0139a-9757-4094-8921-48044ec6433d", - "last_modified": 1771383422686 - }, - { - "schema": 1771379978563, - "derHash": "q88RlomUQdZAcBRRiWOho/omsiotyRcQhEWFgZiQzEs=", - "attachment": { - "hash": "6b3c6686456a6fda4a2753437445c76e290d2deee622a5f5f560a9dcd0b40de1", - "size": 2198, - "filename": "EqXxmjkQSAcKwvb7qcJKH3gFGWWAYBrIKC4PmXpg_8I=.pem", - "location": "security-state-staging/intermediates/2cc3729a-5fa3-4feb-a526-97971fb06606.pem", - "mimetype": "application/x-pem-file" - }, - "id": "14d72c59-648b-43ef-a302-cb412fcf4eb3", - "last_modified": 1771383422683 - }, - { - "schema": 1771379976598, - "derHash": "aeSqLEKVitq8SxcaQcLZ57LrfJF3L71LXvschFzVL68=", - "attachment": { - "hash": "4d8f1483e951110155040c1dd6d210d47ce05994c9c6e270674663b8969f2225", - "size": 1134, - "filename": "NeN7Ibyh_EFluoZE27OfNSDLpVsqzCOtSIe0YDz2GSA=.pem", - "location": "security-state-staging/intermediates/6abbff79-df40-4e42-997e-abcc89f6b55e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "19749e5b-7bbe-4982-9c36-5ce78eac1b14", - "last_modified": 1771383422681 - }, - { - "schema": 1771379976269, - "derHash": "sikuhyodhCeBpIIL3B9luDN4paQ62hfWFi+4Hc1mHBM=", - "attachment": { - "hash": "4c1ee1ca5a18db9ba14309f3624718e8ae21c2a520cfd1b7121eb11c151ca308", - "size": 2198, - "filename": "yFeATIFLAXx7ujs9W0scIAaSjghWb6PDB9fGZGY6QG4=.pem", - "location": "security-state-staging/intermediates/6f97c49f-f4a7-4c10-b6be-7618585b38f8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8d7cac36-b1a9-44e0-acdc-05ca53793003", - "last_modified": 1771383422678 - }, - { - "schema": 1771379980552, - "derHash": "NU/PxhYqDuIgXb72iTHngDPs6dEl4IJOSbrr+C390Wc=", - "attachment": { - "hash": "324604ce7c1feb1281d395804fd405d53c1027c74aaaa93ab18d05f841ca2630", - "size": 1707, - "filename": "SM-CBbHgVoJj8KYqNoXbUd-IGEbfvpomZR5lGHQ3qng=.pem", - "location": "security-state-staging/intermediates/1d700c47-4aae-4229-86ac-0a1e3c1e9975.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a1037f56-a4be-469e-a78c-3a78bd51426b", - "last_modified": 1771383422675 - }, - { - "schema": 1771379977570, - "derHash": "73nIMnvrUeeztNvM3vI5/ONnseCdNaeEBwAKAnC8Iy4=", - "attachment": { - "hash": "60b58dfebaeb37d8282a5fe4c55f8ecc13194dce0468491fc66dca6426ed710b", - "size": 1033, - "filename": "DODYlOw1YgI8bPcnuXFI9i9QMRxVosSWM5aicSDVIts=.pem", - "location": "security-state-staging/intermediates/b99a777b-c766-4694-b807-89ec855f79cf.pem", - "mimetype": "application/x-pem-file" - }, - "id": "32109fb8-6e3d-4e95-bb9d-dc376434c2f8", - "last_modified": 1771383422671 - }, - { - "schema": 1771379977245, - "derHash": "anqThhmCtmQAFxCg79BMinL2oj4lKygJEXl+C/G9kBI=", - "attachment": { - "hash": "ae9efa40db4b71178bc0137964beb7be28798b717fe6dbb73d0cfdb7fa662747", - "size": 2389, - "filename": "hCk1EDW6kLoU7z9644yjVIBgWgKWqmwmPGqbJruaSOE=.pem", - "location": "security-state-staging/intermediates/305bcb88-6039-40bd-9ea4-2587e176fd28.pem", - "mimetype": "application/x-pem-file" - }, - "id": "88e27f21-fb6f-4c7b-b20d-e701c8e72f3b", - "last_modified": 1771383422668 - }, - { - "schema": 1771379975299, - "derHash": "L7qP6RVBUEmqlChXy1MTf/09nlpHsntXgtq5tNp9Yk0=", - "attachment": { - "hash": "41ecc5811611c2cca06c08009be39d0f651319e8cea2f6913a6d81897be776be", - "size": 1423, - "filename": "A97Lx6chFTH9FkG_Io5Uc5oemCnN0d8O2NjR9d-Pr0w=.pem", - "location": "security-state-staging/intermediates/931676aa-a10f-4d64-a829-dc7d47f76b01.pem", - "mimetype": "application/x-pem-file" - }, - "id": "5b8df835-4884-49de-bb53-a5fa73b758ce", - "last_modified": 1771383422666 - }, - { - "schema": 1771379973992, - "derHash": "I4uFoAmcZblwR31XJPGh1HXOUFjP/k76hzOJm9uGPEc=", - "attachment": { - "hash": "a0c5bb445d758ba24adbc4880ebe15d0f8c801569c22fbd765377d74700dcc61", - "size": 1743, - "filename": "nWN7PSep5XDQdge5zK24CnCRXHr3KvzhKEGxsdqCX9E=.pem", - "location": "security-state-staging/intermediates/776f2d9a-982d-4020-ba4b-3cb8e09531cf.pem", - "mimetype": "application/x-pem-file" - }, - "id": "845c9ac8-9afb-4027-ad0e-640b6e9b36bb", - "last_modified": 1771383422662 - }, - { - "schema": 1771379976919, - "derHash": "umoMEXDhxzI4YHSbXnsO02WXXY/JB0CxXXD4Q6I5SUI=", - "attachment": { - "hash": "66b49fd854d0f3af5d909f8ce76dcf4b94b573305dd98b683cde0582e3dfb8c4", - "size": 1674, - "filename": "yFzqzO6UfU8CG8Xw6hrhKs8Wc7kjwaPPHpMW5A4WT3k=.pem", - "location": "security-state-staging/intermediates/2129f6a6-ef75-46fd-9bb2-ef0bf8b4b7a7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ac240406-f5bf-4d10-abf2-b247a4bf30db", - "last_modified": 1771383422658 - }, - { - "schema": 1771379974974, - "derHash": "iC2ZJPxpoAV01UwrtAFIJaHBxx+h0COMrIZf4KpK1gs=", - "attachment": { - "hash": "ab53a1e5c27f5f6e4e2e49e2ac6388a33e0bc97bac2b42fe31df98e7d3e4a838", - "size": 1256, - "filename": "0OaRfyv9xBiWEH4CyltV9tyS3rru9FZZlGJ5tPMNyMU=.pem", - "location": "security-state-staging/intermediates/d3e94720-0c5c-44e0-8d4b-9502900c717c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c43d85dd-4164-4e39-804d-25c75966aae2", - "last_modified": 1771383422655 - }, - { - "schema": 1771379974656, - "derHash": "ins0yOgu+ztbQWZxIwcp+tLiYnk4P7KZPtKSC9biEkE=", - "attachment": { - "hash": "4fcd07b73d9c600826e9521c621bfae670c2ce714f8d47e6d4083f101addeced", - "size": 1589, - "filename": "JfqbRDsGVJr7ytdGMjljQQR_pDP4BPgzTMx9ECN2FqM=.pem", - "location": "security-state-staging/intermediates/d818592f-28c4-47b7-b8dc-35116c93268a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b0fc5eef-d836-4979-b7f2-313b85e20fe8", - "last_modified": 1771383422651 - }, - { - "schema": 1771379972677, - "derHash": "mbRlt9NouAB3d5YFBp+npO2ejruqJnHz1PDRUJeZbiY=", - "attachment": { - "hash": "76dd75324fc48fd22f541177fa561c38becd7c43413d4b6f94de97449054c9d5", - "size": 1167, - "filename": "RUk9ApNsf6_8MohPiGIlF8MTRna21nwTq07I50OayuI=.pem", - "location": "security-state-staging/intermediates/0c8113c9-10fb-4b61-a846-56c760740cd8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "64d5a915-dcce-46a9-991c-52dc125fe7fb", - "last_modified": 1771383422648 - }, - { - "schema": 1771379973002, - "derHash": "2volTgFz8P15OpLs/fLHLFPqWnYac7ejOUxJGC6pCTM=", - "attachment": { - "hash": "32be25c955c428e18b0f8b2080848e278dd1b2b569c2423560a54d7cc5bf467c", - "size": 2418, - "filename": "9oTbeoyc51T5hpEYNExiDNg5jEig0O1YWRRLdwSH1Ww=.pem", - "location": "security-state-staging/intermediates/d41a9201-a6b1-4c7d-9011-d343d3becf59.pem", - "mimetype": "application/x-pem-file" - }, - "id": "afa46d13-8c9a-472d-b797-39b348596cd8", - "last_modified": 1771383422645 - }, - { - "schema": 1771379974329, - "derHash": "CQM/4jmW/kpZxMD1I9JWDjHf5MF9jqFAPUKalx9L1lo=", - "attachment": { - "hash": "0e6c76a6d70346ff239c0a9320d8ebda8b750ae57610ff62a44fb8e221319a31", - "size": 1861, - "filename": "zACNb3_D6r-GIH58_Q4EDalNSChXFVVFbUJICvq7SIQ=.pem", - "location": "security-state-staging/intermediates/90bc7209-b051-4ab2-8c2b-c51d485b4bba.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0f66724e-98a9-44e7-8c94-dd60f9bb8825", - "last_modified": 1771383422642 - }, - { - "schema": 1771379973660, - "derHash": "rI6p8odP02ij53ixoLFl7omNublofBftzcdpCKtYyCw=", - "attachment": { - "hash": "cfbc344dba91ca1312e9772d692fb858c7f9dc0ea785479a2b7c953dde4db142", - "size": 2735, - "filename": "Cgcdqp4tWwaW_5zVT0SzM3JVarwR9qZzaApjgFqeVic=.pem", - "location": "security-state-staging/intermediates/6c3cf5fb-cc05-410d-99b4-fa2c6613ed9a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "08e10a8b-d57a-4afe-8410-9447fff099e5", - "last_modified": 1771383422639 - }, - { - "schema": 1771379972015, - "derHash": "GglDxzSNzfAIwLlSpPZ2xu5AN9un+3BAuseVUPodpDk=", - "attachment": { - "hash": "5729ff035324c5b82c9e668bd47d780e1ee30d6ae2225a49cd678848bf1c3a86", - "size": 2223, - "filename": "V4IVjamHbgaAlsPpLjDvaYFU3O0cyg_yDYp5Gsu0FBU=.pem", - "location": "security-state-staging/intermediates/d417e95b-63cf-4157-9a6a-7385e445ee8e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8522554d-0be4-4c0e-a96b-4e8ad0c3628a", - "last_modified": 1771383422635 - }, - { - "schema": 1771379973334, - "derHash": "J7EivB2+EsiLGsvrwzAwvbzPTeck7I6CJmUT0Hl8CXo=", - "attachment": { - "hash": "b338ce796179f7c9e1669f21db89ba38e6d802665c827f5477d4b6aa8bb02830", - "size": 1589, - "filename": "eme_r3vqgVcNCluW5G00Myp2ijiTqbC5G5BSf8yrYyQ=.pem", - "location": "security-state-staging/intermediates/16a1778d-5d7f-4777-96fd-9e6449437a9e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "df52b22c-e692-4ee7-9448-ed69a003537f", - "last_modified": 1771383422629 - }, - { - "schema": 1771379970358, - "derHash": "9kJBjk0MY97Hhclg76aLp0XziFF0TvgfIly4kwUxTVA=", - "attachment": { - "hash": "a6ba61ac5f4cc0f9765d5d0f0def7f6c14969571829df90422bff82e1730c78b", - "size": 2259, - "filename": "bxL2hYprHPwXRcMzTOZMDGOgJ8V36UngBYWMNmpyTUA=.pem", - "location": "security-state-staging/intermediates/7622f33c-25b1-46df-bf9b-647608a8e145.pem", - "mimetype": "application/x-pem-file" - }, - "id": "09daf9f2-bea7-411f-ab3c-48d25cb13e50", - "last_modified": 1771383422625 - }, - { - "schema": 1771379971333, - "derHash": "0lzjSMBt/WXY11G7lPr3ETgg/VNf4UcaKC7HOPP8PL8=", - "attachment": { - "hash": "8c5fc1ffbcbe945c5bc9edf5c78af24196227fa4b3c38d342c024dea4c126a3a", - "size": 2296, - "filename": "XK8OIERzO3nVyMmHf2cJIqjdt5oqIvfnQjDOF2-l4Qg=.pem", - "location": "security-state-staging/intermediates/7f4c6ce3-5ec1-4134-a774-de3c49c912e4.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ac752a5f-8df5-4b3e-b28b-020c806628da", - "last_modified": 1771383422622 - }, - { - "schema": 1771379971698, - "derHash": "SJbVH2U3pTJicsQSvHWZDhXU9ezcKUbBl3aSO44WnpM=", - "attachment": { - "hash": "ec2d1c00faf5ba5d5ab3bae323232abba2bece80686ba37834bd5ae51bbd7810", - "size": 1272, - "filename": "L_kLDivRAInBNQCoy4a-6QJ_enHxKhwHSqB7uKCOJyQ=.pem", - "location": "security-state-staging/intermediates/5c6c1b74-20c4-40f1-a8bf-737ec71c571b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4887edec-f03d-45c5-a644-eb6078ee119e", - "last_modified": 1771383422619 - }, - { - "schema": 1771379970048, - "derHash": "u6mP/GotWtJRs0vGYy09qIlVy0b0ofTfRDmApL+ShF8=", - "attachment": { - "hash": "20051b3ab7966ddc2160eee3a41f195c9d431a4dcf6625a1a019d134c37e1fff", - "size": 1240, - "filename": "JXw4MdzGvSa_0WGYWJU0Y2A1l_qMYDIqEV-nkd6oj7k=.pem", - "location": "security-state-staging/intermediates/7c61ecff-cd20-40bc-ac2f-af4c7d169e86.pem", - "mimetype": "application/x-pem-file" - }, - "id": "52ccd9e0-2708-47af-a222-32032e7fa96e", - "last_modified": 1771383422616 - }, - { - "schema": 1771379970682, - "derHash": "gswzaJMd/J7LOSfrvaz6BDZt1D2B8TQ/62G7jlnm69Y=", - "attachment": { - "hash": "b444c910bf3dd7b82e10b22a6e4c2ba75aa23ac94e67e7452c74e1c434e45d73", - "size": 1223, - "filename": "dycfMVcBMPrF2An0cognBEUprKzbPMXLRSanz5UqEFs=.pem", - "location": "security-state-staging/intermediates/592bcad7-f0e2-41b3-a37b-d37948d48833.pem", - "mimetype": "application/x-pem-file" - }, - "id": "edd995a1-1cb8-4551-a061-563a0e14a405", - "last_modified": 1771383422612 - }, - { - "schema": 1771379975634, - "derHash": "ugo9pwb0fawanDPE7h5Nhrcm70jnDUMZ88lJ7Gc6GXU=", - "attachment": { - "hash": "14fa0656ed370b4cceb3389f77c47cc8cfc4650ddefd837fe5edd795a7a81a29", - "size": 1268, - "filename": "-NsgwtB2JJlnvuqR7CfJVKXUBYY-DtEjHDuMfx-_x_8=.pem", - "location": "security-state-staging/intermediates/1d62eaa6-0b72-4c9a-bf44-0e12731535a2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0eac052b-9e2a-4bb9-a12a-ace76cce35f5", - "last_modified": 1771383422609 - }, - { - "schema": 1771379972344, - "derHash": "vwYuEsi78uZoWDH+AAyvZzQuIlqKJJGHzDlTs41A3gQ=", - "attachment": { - "hash": "928290e9ff0a6fdb13d69fd699a58726926ab613cf3bb6382755b63cf6c1a0a6", - "size": 2288, - "filename": "pbnDROwxL9imiYDtQcKHL4D07MvFyHJGsfaj_hTH-uw=.pem", - "location": "security-state-staging/intermediates/d5cb88f6-ab79-4a84-b6a1-acb9c2a27e7a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c744a8f0-1872-43fc-9015-05a049d85e4a", - "last_modified": 1771383422605 - }, - { - "schema": 1771379969742, - "derHash": "m/lJZ3fRRCXtAIbBuywHB7YqYcGUxRYuTwdjev8Wa3Y=", - "attachment": { - "hash": "ce3ed3382cfca8726ebcc664e631bed0756c90bb7140cddbdd109b12175fdab5", - "size": 1475, - "filename": "qNR-DwyanLNyMurMwcUpVijQXK6JlGydxz7b2CNJx5k=.pem", - "location": "security-state-staging/intermediates/64a9757f-6821-4998-8391-93e886bfc3d4.pem", - "mimetype": "application/x-pem-file" - }, - "id": "043673c0-2dcc-4d60-a0cb-72870654df47", - "last_modified": 1771383422601 - }, - { - "schema": 1771379969094, - "derHash": "BwUxODzNEA0+nNlk2weqXoRaBoby6uO8imJ7GCBXsfE=", - "attachment": { - "hash": "7be2ec04c8313dc05a7e0bef9687e9b6f04e6acceb8e83e4058ae0bf0657219d", - "size": 1845, - "filename": "rBTvvFbWGhKxAPrEAJ1x8vttBOVCvRznd5h2iXt2ATs=.pem", - "location": "security-state-staging/intermediates/3c662276-06ab-41fd-9e98-7f62e8a9292d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "fac428bc-587e-4ff1-aa76-12cb56318c09", - "last_modified": 1771383422598 - }, - { - "schema": 1771379968064, - "derHash": "QsSszRLE9ZWXkl4aCKepAQJghUOAkwjVDsQn4Ri6FJM=", - "attachment": { - "hash": "72fea14b9ffcfa4f1e0441659c75e24b1009c989c12d803dafadfc564cc49d3c", - "size": 1240, - "filename": "6-1kdcLC2A_LGZ8_6N1uazzmC3frFdTkLD3sDG9bUQU=.pem", - "location": "security-state-staging/intermediates/7dd49628-5f8a-4bec-b990-7587dbca3652.pem", - "mimetype": "application/x-pem-file" - }, - "id": "837f320b-227e-428f-a9a3-5b0e0432e91d", - "last_modified": 1771383422594 - }, - { - "schema": 1771379967747, - "derHash": "gp7ERLi+Pf0tAwoNnnodDdKjwsMl05WJwnrJoGW655M=", - "attachment": { - "hash": "57a9f43ae4685ba6cd3340fc5df5d9cc62fc87d515002117e45655bcf89f48c5", - "size": 2389, - "filename": "BNs7fd9oOx1LW2T-dDo6jYw9cfDDOdfcJbND5mWp61s=.pem", - "location": "security-state-staging/intermediates/9c690d57-fbec-4576-8de3-8da555be5c6c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "694f1fab-4ad0-4553-8b15-06ab37e5c43f", - "last_modified": 1771383422591 - }, - { - "schema": 1771379966734, - "derHash": "y24VFlrIAumz+ZPxbCXUH06Bwh695xrhsBKsAL+cfD8=", - "attachment": { - "hash": "459970883fc352239ad716d7d060fd5a51fa5c6074fa3159f2e04396c932a2f6", - "size": 1240, - "filename": "Y-zv7kMdSVI7wRNsTnLQIGpHcIbK9gbNXPAlaGwQnPg=.pem", - "location": "security-state-staging/intermediates/8dd8f3e0-c16d-4718-ad7a-6a4afce7cb66.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4c6dc31b-440b-4e03-af78-fee3cff48334", - "last_modified": 1771383422588 - }, - { - "schema": 1771379966392, - "derHash": "CTAySz2BfTBrbgHGIFtWo6yFYUL9Wq4WbvZRYGYN7lw=", - "attachment": { - "hash": "aa93c5aa22b29ce0c7d808ca05f66df4d0d1aab0bcc4933aee5665d5fdad937e", - "size": 1341, - "filename": "_ncZ3HouvLRtNt5ZFDDcHwFPU_mYB2kGhIqRLifv6Hw=.pem", - "location": "security-state-staging/intermediates/fc89e283-33f9-4c1a-b8d1-7f04490f869a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a6620b67-80d5-410e-a8a6-1d2409e6e175", - "last_modified": 1771383422584 - }, - { - "schema": 1770951563706, - "derHash": "J95m81UlB4lZnRgTfFShkZpZp3N/FjTOk13TyomMUQE=", - "attachment": { - "hash": "c6a821c49549d3d0a212e0d80f1a114f8868d6d00553aa1769b6baaa1d2b7d33", - "size": 2365, - "filename": "ifIhhY4YqY2Y47aU09eL78SOQ8W3jPmeitCDJzdda2w=.pem", - "location": "security-state-staging/intermediates/73396c6e-dc7c-43b0-822c-fa06ddfe949e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "29a6d935-58c3-4cae-a9ab-15497e7e192e", - "last_modified": 1770955022893 - }, - { - "schema": 1770908356840, - "derHash": "ed5k95Dm38emWwtbsNxO8KyDX5kUx6JeRFVnAoLB5zo=", - "attachment": { - "hash": "7cfe0887289fd9572c86d193925150dd8edc39125b435cd8e7367af59d846b3a", - "size": 2341, - "filename": "EDI37rCmRgulXkBqxUI9v317hNXYN5Zcr5jt7Pkr6m0=.pem", - "location": "security-state-staging/intermediates/c2b611bc-5252-4670-960f-1103cfa46a75.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e0ab0310-530e-4396-947e-6a31da1e6ac4", - "last_modified": 1770911822928 - }, - { - "schema": 1770865154972, - "derHash": "DOKzm3aEPwnhlkmdx7Oio+Xcgm5KVPMCNaFLUvWVIbE=", - "attachment": { - "hash": "f6bf81e749b371a812e4fbaecf76781d3e09277238fcfb5a41673552d66173a2", - "size": 2337, - "filename": "1ZaJoWqzewPwQVOhLgQHTpwD14n70X2nY0YY3swGABk=.pem", - "location": "security-state-staging/intermediates/6abea456-a92c-42bc-919a-e9360dc91de8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "191cd413-0baf-4ab1-8bf1-9a6e68c07491", - "last_modified": 1770868622863 - }, - { - "schema": 1770865154562, - "derHash": "GfaRLf5khIEF3AUkvz3JSMJaa4++5sOZvkTyxkIayP8=", - "attachment": { - "hash": "fde12ed105701df52dd28bdab6818081ab61e18e4a19de9fb89016b9f1e17831", - "size": 2008, - "filename": "DGJQh2zTEg_XHtt3gOGNq5O_yox9NZ2K8gB4qhE1g5s=.pem", - "location": "security-state-staging/intermediates/a3a82c52-3210-43cf-87cf-d15b629d2032.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4a971961-529a-4772-81b6-dc39f790d6a9", - "last_modified": 1770868622860 - }, - { - "schema": 1770818370681, - "derHash": "8jhDcck+soQWb9B6NPIR+qaXtvwg1NMfeo5KMoPKP/E=", - "attachment": { - "hash": "280d7fcee3e9800b860efa79105544e3bbb388958240bca6739d31b40a075fbd", - "size": 1699, - "filename": "FIJQeSulVkzcOTq--FPehpPD7ZpzwJIUo-9DuJKQ7jE=.pem", - "location": "security-state-staging/intermediates/a8b121aa-29b0-4e6e-8b08-a7a51a84ddd9.pem", - "mimetype": "application/x-pem-file" - }, - "id": "454b914d-0928-400d-910e-62a96ba24f71", - "last_modified": 1770821822835 - }, - { - "schema": 1770818370241, - "derHash": "UEBLCBETI8aR4WlXN1VuSvzcyH6t0ixVA7bQM5Kq3d8=", - "attachment": { - "hash": "66f1606b9afe636f8f64e12af52e9a7c20e2ec1a91a18ffe74ed9e23cecb1f42", - "size": 2280, - "filename": "I-sFpWHh9UxHLORoVozF1a_U4fohTGmX9grDc85ZVXo=.pem", - "location": "security-state-staging/intermediates/84e957df-a2d5-487c-bfd3-950fedfd2306.pem", - "mimetype": "application/x-pem-file" - }, - "id": "81efb19f-a00a-452b-8257-203a1d3b9705", - "last_modified": 1770821822832 - }, - { - "schema": 1770260354511, - "derHash": "LWUUTYqDMeioEuzfJHGVYVtr1Vtko/k5lWPI/LnWfKY=", - "attachment": { - "hash": "683799a83d38269d7ec2753c7d559d11e30ac6fa14c31b2c9c5b92d8ebcd0913", - "size": 2207, - "filename": "UUZM_kU1agaKzHCD_azFnyK134LJq_4IVFpf61Tnmr4=.pem", - "location": "security-state-staging/intermediates/bf8a0d3f-19f1-4958-8486-1238f1be5667.pem", - "mimetype": "application/x-pem-file" - }, - "id": "75d50414-871b-4ace-aaa7-fd26cec6d61e", - "last_modified": 1770263823953 - }, - { - "schema": 1770260352280, - "derHash": "CrvXQJ8GhDU+geHf9cEEY0eMgV25kFQY3FS1jIIyouI=", - "attachment": { - "hash": "4f21a32b073337eaf7b4881c361ba2b5adf25a88d88ee91a0d54f54302c9f44e", - "size": 1171, - "filename": "3RLQ9kWewyANm0lDd673BjAn05BvY3sYa26f6LFK_BU=.pem", - "location": "security-state-staging/intermediates/87eabb23-4097-4753-a685-519dbc587126.pem", - "mimetype": "application/x-pem-file" - }, - "id": "18dc2bae-213e-43e8-8107-620a8b257e17", - "last_modified": 1770263823950 - }, - { - "schema": 1770260353858, - "derHash": "6m7QvwDQx+nxQ9hPVw4pLdHWMfkSnZYb4uyOzGf8+7k=", - "attachment": { - "hash": "fffa6ae09d7f71ea8d9ae8057aac8a4b43a8fb38358cd8a2b141781001ee2325", - "size": 1228, - "filename": "4AaY_wfcL1gMl5JI3i6fOGp-2SqDUmXvTU3iPR_LlE0=.pem", - "location": "security-state-staging/intermediates/a61bd54e-6857-4558-86f1-24cbbb204228.pem", - "mimetype": "application/x-pem-file" - }, - "id": "6018b79a-0e24-4d09-a7fe-ca1f1ea7e3bc", - "last_modified": 1770263823947 - }, - { - "schema": 1770260352617, - "derHash": "135TL8ouU2s9IAawrC7+yy8SnWY9lHX4eiWNjeXjlV0=", - "attachment": { - "hash": "7b43a063a34821a0b66d8fcbfced87b8702039276797333adf0753d30b4a59f0", - "size": 1199, - "filename": "otXvH-CXH-kHkNE2FCYW28bImoPMJHyqFuLj9rf2eeg=.pem", - "location": "security-state-staging/intermediates/c21e65dd-e3d9-48f7-bc81-ba3e50d1f8d1.pem", - "mimetype": "application/x-pem-file" - }, - "id": "5f5c6d27-853d-425c-800d-482638a27e78", - "last_modified": 1770263823944 - }, - { - "schema": 1770260353231, - "derHash": "eWnY8M+MNp34LTGNgtTi2f3tlYQvo9elSLllK3J0n2o=", - "attachment": { - "hash": "70ea0db9b6f8b34f0e5bc55bf9cf9762b0439e7f1f530d51c6820315db632009", - "size": 1215, - "filename": "3d-0QcyFRlg9HJiWt710bxm339c3rM9bxtyOysS7Sks=.pem", - "location": "security-state-staging/intermediates/2c269e92-d3a0-4c91-8251-88634bcb36b7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8c1951d1-ba37-42d6-9d26-268e8be1eb84", - "last_modified": 1770263823941 - }, - { - "schema": 1770260351313, - "derHash": "HDokAuIg8Y3Hv4EvdTGDvk9Z4Kgwt35lzA5XCNPvFuI=", - "attachment": { - "hash": "6d82ef84f9c7fcc288b0d18f8ba79a927597c0f9d447d122fc161f4a08b8cbfd", - "size": 1175, - "filename": "jIPCyaqyK2YP2FQIBrUbOQC4hB_KBc7AGt5sx-dXkc4=.pem", - "location": "security-state-staging/intermediates/0228a926-1a93-43d9-8e81-4b5f34d16a7c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "3a171894-046d-4812-928b-0ad5c073297e", - "last_modified": 1770263823938 - }, - { - "schema": 1770260350662, - "derHash": "3MPy2seURjug7hSdwzdKEw6CU8f3Y9m4OpNsVytwd7E=", - "attachment": { - "hash": "e0a31f2b6af8882d9a850f4655346362b2c4fec708f5290f48bba10aa66e8bc5", - "size": 2239, - "filename": "OtY4jKC4HkQaXdxUXAwXWTlTcWoS2jiz2KoYyH516lw=.pem", - "location": "security-state-staging/intermediates/25a525d9-e1d9-443b-b2ce-d20c4e818e6a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "54a525ec-fad3-4cc1-b4c8-cd6a40f81f7d", - "last_modified": 1770263823935 - }, - { - "schema": 1770260352923, - "derHash": "JAzvXRX1eVwGwdRb6DQlvROE0T7MI2/WFEBE16IZMW8=", - "attachment": { - "hash": "9bccabfc7c17235c0a35531f4cf2bcb83c871a41c437aeb9f6a9412b850db76a", - "size": 1203, - "filename": "GTwj8KgvAk3fMOhcOXZxLN2AONP4zFu12bxmC_02CNI=.pem", - "location": "security-state-staging/intermediates/50615268-1955-4929-a584-b037bd81e812.pem", - "mimetype": "application/x-pem-file" - }, - "id": "89bb325f-888c-4d15-8a4a-f65a69148228", - "last_modified": 1770263823932 - }, - { - "schema": 1770260349683, - "derHash": "AWgtouaoeEaNCkd3Firr4yM9xpNbBm9x9IbVZyN14fE=", - "attachment": { - "hash": "6fbfdf92fbd72f425f3df73cff2037914e314dc16e53f081ebc03eedfda08baf", - "size": 1183, - "filename": "nHlNFrIaUP8sll9wo6s4beebmlE1ws9ktxtBqD9Squo=.pem", - "location": "security-state-staging/intermediates/abde9a57-3e97-4d11-a5e9-4241fcb7b841.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7ea70616-63ce-4806-b4cb-3b13e85b6049", - "last_modified": 1770263823930 - }, - { - "schema": 1770260350335, - "derHash": "pwHtudZbzwe7cgsPJPqO9rCqd9urYhfOKCPC3RX21L0=", - "attachment": { - "hash": "ff4aee3b67f69f0de38d88d41671aff7acd8e4b87267aef4827fa9ce5e77a0c6", - "size": 2235, - "filename": "bHU5Kf9aAaPwOtLWh8KVGdayx7zgn3KEH_8BzrQIFUQ=.pem", - "location": "security-state-staging/intermediates/af06fb32-6d43-4bc9-8121-00a20bf162e8.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a7539a5d-51ca-43b0-8282-ba29d124257e", - "last_modified": 1770263823926 - }, - { - "schema": 1770260354188, - "derHash": "M94IBk+0TFlPxdLoBSzueA2WHaQ4BKp31Dy6n+U/kEs=", - "attachment": { - "hash": "3f90136e59485a49312ab0a4051b354deec9a246f97999241e27b2b9005ff975", - "size": 2239, - "filename": "trbUKkdxsqIFIfdazZNBYBBIL_Bph7eJJawQoMp_YX0=.pem", - "location": "security-state-staging/intermediates/973493b7-1e20-4d71-9b36-72eb300871b9.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c2b0c60b-3865-4367-b3f0-b3743509a778", - "last_modified": 1770263823923 - }, - { - "schema": 1770260349363, - "derHash": "GnuheEdjzmNpSsVAWoDS3y/2ik8N5Jz/W0QUtQh5Y44=", - "attachment": { - "hash": "67895be08df26c285a32d66e8bd98debc1612b71a1f151b22ae8c3b43bbeced5", - "size": 1171, - "filename": "1Jbov9prjutcQNPZVRVM1JeO0LNz_OjpZgNepJjJB48=.pem", - "location": "security-state-staging/intermediates/6a575b36-0e24-4886-b5f6-e130bbd2dfbc.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7b4aca40-a36b-4636-9619-5e615588421f", - "last_modified": 1770263823920 - }, - { - "schema": 1770260353539, - "derHash": "67Fe1XUWZmA1w0PD6y1J9rnvhbwg/BJCV1mi/MuuIoc=", - "attachment": { - "hash": "afa0ac788e44e8ba0182d68a94e0b49db4a024eed702a67d13fc80608a90f8fe", - "size": 2190, - "filename": "MuwvjiZoczM96iEilU29R5wJ00TxF4sX0u-4HE1t54w=.pem", - "location": "security-state-staging/intermediates/4c19739d-c136-46c4-b723-82d3c5bda0a9.pem", - "mimetype": "application/x-pem-file" - }, - "id": "426c1b65-9933-4360-ac7b-fbba900b8c8b", - "last_modified": 1770263823917 - }, - { - "schema": 1770260349038, - "derHash": "0RVahWUXQfBHPNHHVEBevynE49z9o47Dck5FQ8XRp/E=", - "attachment": { - "hash": "4217d3fd007637764ed9e6471c692cc83090e6d3a6744a00c9d19a51f2b90eb1", - "size": 2203, - "filename": "Axj_bixoV2Q-mnjb-hZr-KZBJoWyL8Z_I9kXngv5l2A=.pem", - "location": "security-state-staging/intermediates/6961712f-296e-412a-bd72-792432ae03e3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "88cb1cd7-08f0-4051-9976-35ff8b86422a", - "last_modified": 1770263823914 - }, - { - "schema": 1770260348703, - "derHash": "VfzMAUgXJATOyyHgpGkNECav1l37eCUTrE9+fiKjT3s=", - "attachment": { - "hash": "bd38abec987956a53ac517bc9f1520fbd6fcff592b1b592e48829046312d00b2", - "size": 2182, - "filename": "amDysS4xcf_-2YD8yGGkKDv9SZz-UsnBBB3b-O9Xztg=.pem", - "location": "security-state-staging/intermediates/54cfd7cc-713b-48f8-b712-af597ed570f7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "39f7d5f5-bdac-4e5f-8a0a-85b2dc3b2824", - "last_modified": 1770263823911 - }, - { - "schema": 1770260348064, - "derHash": "E11rNLJHFX11jVvTly4VRSyNBufxkNkKA0kS/lSfr2o=", - "attachment": { - "hash": "ed7cb512ed4238f32f4eac4da8689680e842295eeab79613f27fafa066a0d9ff", - "size": 2182, - "filename": "XoMC-uD8lr-vebvxuzrn3ItwJWIL-BY6l3J1DE_YloM=.pem", - "location": "security-state-staging/intermediates/25fb1f46-6610-4ef3-a9db-df2d8267ae17.pem", - "mimetype": "application/x-pem-file" - }, - "id": "01cc4cbf-26c4-42b2-a312-792c2a1676c9", - "last_modified": 1770263823907 - }, - { - "schema": 1770260347758, - "derHash": "m5p0jbGI4tEG3ajw1MZLmTd60Eyk7BlUNLZHmqVNOL8=", - "attachment": { - "hash": "c477aba82d90cbe404980b1daac54038782b35b7088e51affb49ea4e6546c5ee", - "size": 2190, - "filename": "pVa7dzSYCh0ucDIApxz5gRYAkMKJFPZ7-Ntkk-jUjYk=.pem", - "location": "security-state-staging/intermediates/0be1bc2c-a3e3-4c2a-a360-e1d640fcdcfa.pem", - "mimetype": "application/x-pem-file" - }, - "id": "68c2c9cb-78f0-4c1e-ab28-7a1024e38488", - "last_modified": 1770263823904 - }, - { - "schema": 1770260351963, - "derHash": "PlAolQ0FIQwm5xExthh4H5wnZgu7Qp1hrRY8NH35LoE=", - "attachment": { - "hash": "45f6ed648f6fb81408743996c5b64ac72ff0944f985c73634b61b824ce9f21a6", - "size": 1191, - "filename": "1mRo0q8qO-s09sMELvLhESKttBUb8amQbu4K3jj4f9s=.pem", - "location": "security-state-staging/intermediates/8cc403be-9682-488c-bf71-129da1b2943a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "49fa24bc-b9ff-49ae-9e62-7e90a98d6f11", - "last_modified": 1770263823901 - }, - { - "schema": 1770260351632, - "derHash": "82mip/HPOr0bX4xovFKLSXbOXketnEtK6Qrp9pB4tM4=", - "attachment": { - "hash": "47c78e15f1db1af6aa041c32b878f04671cb8d87ebaff28b7cd3a0313d59ae42", - "size": 2231, - "filename": "_G-SqrdbzHSfXJvcJRdfvvibHYU7ls9xVa5-Zc7M72k=.pem", - "location": "security-state-staging/intermediates/2b9c4d25-96ef-42f8-857d-f44b9e289487.pem", - "mimetype": "application/x-pem-file" - }, - "id": "bd4a4a78-f205-4d04-9040-5a55e043e144", - "last_modified": 1770263823898 - }, - { - "schema": 1770260350003, - "derHash": "4VM+oq0eW0l+0WhDQ4C3ag+OuAqmJrRaAPytKUuevWM=", - "attachment": { - "hash": "a0bda336acebcf5462bdd08c759a13a157d86dbae0e8d130cf306f7792599d99", - "size": 2190, - "filename": "goouhc59iAPkFjOxUcGe_COBRVrKheE7Dxa8tpagjJI=.pem", - "location": "security-state-staging/intermediates/012b7470-6840-4f9c-8443-b746b0b0a37d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7c4e2f13-ec96-4150-99f5-77d7af585e76", - "last_modified": 1770263823895 - }, - { - "schema": 1770260347455, - "derHash": "WNizv5j4yLZvrHJWrsgsSouY+HuqkM7SCwpgfBgNbQQ=", - "attachment": { - "hash": "12646374466aa3b52b7624cdea76148fc7d0463f64bb2fca94c356bef262dc2c", - "size": 2215, - "filename": "i3vOXdSdOuu3nQopRbCc5p0TWOYV6A68Lebtbn8gNi4=.pem", - "location": "security-state-staging/intermediates/635dfa1c-4e35-429d-b8d0-246b3143a85c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "74c036de-b77e-44ab-baf8-092385dcfa97", - "last_modified": 1770263823892 - }, - { - "schema": 1770260346073, - "derHash": "sKSilETMy3kx7sQ9CEmMlVIw33PIcHAjh4ICkQ6u0j4=", - "attachment": { - "hash": "d82c9915ae7465af071e3de38b9c096c37dca3dc24213aa6bc2795ec08fa1a61", - "size": 2223, - "filename": "XtISPDvN3y7tky-qm5oBK-oOttMphMLjUATeJYqsLsM=.pem", - "location": "security-state-staging/intermediates/7081076e-ed03-477c-b6e9-bb77ed760b3c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "3f699b4d-82c6-49be-9026-af79c4557460", - "last_modified": 1770263823889 - }, - { - "schema": 1770260346422, - "derHash": "yxm1dz15QBveXe+nDKe3aCiEqO5hdmo+tqyx3ysiskg=", - "attachment": { - "hash": "6452faade6e5f29ebd582bf1e0322dbc1d41de281c294f255e722194ce71865b", - "size": 1179, - "filename": "e3IEaOGpsLZEaLwLdopvxxhE-s-GEhULFKHNOqFLL2o=.pem", - "location": "security-state-staging/intermediates/821b00f7-d459-4dcd-b0c1-fa7df124bb38.pem", - "mimetype": "application/x-pem-file" - }, - "id": "23c70c08-38e0-4755-88b1-234190f0dc3b", - "last_modified": 1770263823886 - }, - { - "schema": 1770260350984, - "derHash": "xeEYpnCzaduCqKV7p/7J0wmHm2OTqqtWTtkp069qQXU=", - "attachment": { - "hash": "1e165f69ab6c9783d320486bbcd1489499d3ba093f327795494e3c7b093faaa9", - "size": 2186, - "filename": "xp_gBIdSM5-upTveW7FmyK2dd82PC0w5w4SmQQb-ZyI=.pem", - "location": "security-state-staging/intermediates/c6ebc652-aeed-43ee-9024-ac9b46c7e03d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b84eb155-27f1-40d9-9c1d-0f5c2980beeb", - "last_modified": 1770263823883 - }, - { - "schema": 1770260346745, - "derHash": "9lm1nVv+wG34a+LXl41VylQP5gPnJX67dAKAZIr1w+8=", - "attachment": { - "hash": "ef18e3bc5c8dddddc12d436064bafb5b7e856c0449ad7d5f6d9d15cc84236bc9", - "size": 2231, - "filename": "gfibX5nuI-Hm7HZds9vo9bA-AEB7sgyncXXjDto_ynE=.pem", - "location": "security-state-staging/intermediates/fa19693c-2f7a-46b9-8d1c-8130f2011bf3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "f75d397e-28c0-4d86-bc37-6e5edf11d587", - "last_modified": 1770263823880 - }, - { - "schema": 1770260345723, - "derHash": "73FHtwMaz3lC3XSVSd0/2aVkuRazJd+p4lXrueFq7us=", - "attachment": { - "hash": "6e78d81e09c467e43c41fc7364fb9cbe9173e0bb08887c43d752a3963d87a222", - "size": 2194, - "filename": "3ji_3lo22xj3Xz58hIc00vbGhdUMIexotMNqTtnvOlM=.pem", - "location": "security-state-staging/intermediates/9bb7340b-47da-4aa3-b21f-d2c3bc759f49.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a2563ccb-5107-4c6b-967c-8de16647b74d", - "last_modified": 1770263823877 - }, - { - "schema": 1770260345374, - "derHash": "VpQ8GejrGWj8/eIU4QM/24FvdqSFn1PWYIMlALnUfSw=", - "attachment": { - "hash": "943b4faff132d93f172c98122ce643f095d345b0b66e9c69bd15b28d2db6e8b0", - "size": 2215, - "filename": "-boaqkskanpKUT6MH1nqr58TygAKTj6AIQjLkLNeUSU=.pem", - "location": "security-state-staging/intermediates/971c7198-137c-430f-9bd1-617ef0220059.pem", - "mimetype": "application/x-pem-file" - }, - "id": "52284127-6f64-495f-8d93-f392ab26819d", - "last_modified": 1770263823874 - }, - { - "schema": 1770260344698, - "derHash": "h7JZX6VyOjNRlZahkIHL5YNoaq7aj6Dz4gtlWzIXLmY=", - "attachment": { - "hash": "75b68590a4ea8319a47e8ad94e42e706aa4ff166780576661fc13c15f64fa3d1", - "size": 2215, - "filename": "lr5Do0p61T5Kzos3Ro3KaP3-6Jyk_zdVdRdLhhssXFY=.pem", - "location": "security-state-staging/intermediates/9852681c-a788-4ac4-ac5d-40816300d49e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "25ea02d3-d7de-4d36-8b5f-1942999676d8", - "last_modified": 1770263823871 - }, - { - "schema": 1770260344380, - "derHash": "4xXOdHfAzhh0xInwJ7sB3c+619BnuULxHkx27lm3LBM=", - "attachment": { - "hash": "fea02a544ac0dde25f201543315a43494933b19e1a455973e8779317d50014da", - "size": 1215, - "filename": "aR2lLJTtuXsfatNGx6c7M-Trg7y2r57G_lkZc_eWeTM=.pem", - "location": "security-state-staging/intermediates/c7985456-0360-484b-98cb-e7641593aca2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c0733549-e92a-4620-b23c-514296abffff", - "last_modified": 1770263823869 - }, - { - "schema": 1770260343707, - "derHash": "ibE/8+qBtlC/cvhQJp1qxrukm1CRoT9vfOPzHAtCbfg=", - "attachment": { - "hash": "60648f145bf38277b4b0ccd07d340860acf0271b1c5c7ee45d1a32d1ca4f3382", - "size": 1179, - "filename": "-8mGUcqBvYAxvPfubMrZ8drOCEqXUjhfIWvJFNXLqY4=.pem", - "location": "security-state-staging/intermediates/9e351f28-3ec1-440f-9aba-424452600654.pem", - "mimetype": "application/x-pem-file" - }, - "id": "702de9fc-9297-44f0-83d6-4d3606ae06ea", - "last_modified": 1770263823866 - }, - { - "schema": 1770260348389, - "derHash": "pJ1f0gMSidMtoIrBI24wKX44ruGF1f2A703TxKJJIT0=", - "attachment": { - "hash": "1996af958c0eb581215d427610dc6f83a30f78b1fbc115b87a8156f2a65c333f", - "size": 2211, - "filename": "BRXoyi6_sJAF0jWqRzDF3TpFYEzRnyGZYWIUZKcXI2U=.pem", - "location": "security-state-staging/intermediates/55d31cde-3e01-4f20-afd2-d9065cb88f94.pem", - "mimetype": "application/x-pem-file" - }, - "id": "778b50dc-11dc-406a-a24c-c6856e7a34e0", - "last_modified": 1770263823863 - }, - { - "schema": 1770260343363, - "derHash": "OPWeKdnrQCpyfu9W1GMDh2mzxp7UY9Eb1FDgVxO6gpA=", - "attachment": { - "hash": "6656d41f8e83f6940b422f3c6322cf70bf3b1a9a49c958b551f183228c33cf6a", - "size": 1171, - "filename": "-qTsUtnyJHtSxv5x6fVVKKX0J66nB0aZ0q1L8oEhcGI=.pem", - "location": "security-state-staging/intermediates/25955be0-f3d0-451c-96a3-7d6bae6d486c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d10d87b6-c941-457f-90ce-249fd8757501", - "last_modified": 1770263823860 - }, - { - "schema": 1770260341737, - "derHash": "010gqEiHvvL/YWSRG/sKQkZHW5QCLhrawn2MogL4gF4=", - "attachment": { - "hash": "2baf998bb03214372907d9bac28a1f68a34aac245dc8a84d76ec27811a694565", - "size": 2227, - "filename": "T5uQsDvUYtZeClTTXDsu1gEqaFDr5a9GJRNR7XX8Ehk=.pem", - "location": "security-state-staging/intermediates/f83deebf-8812-4d69-be76-7d17961e28ea.pem", - "mimetype": "application/x-pem-file" - }, - "id": "c15750ca-952b-4511-8e3b-ae14f1569dcb", - "last_modified": 1770263823857 - }, - { - "schema": 1770260342915, - "derHash": "4EUOlcItmswfIQ30XTlmMSIBpDDntKmeCHk2Viyh9Qw=", - "attachment": { - "hash": "e8be781b424bf37945096a86c997b215caf0af9afe03173a6ffb73fda0d3849d", - "size": 1203, - "filename": "vGWHDv3c5uWX9MstccpRyk3qE3Ggzc4VBMI00QaToQE=.pem", - "location": "security-state-staging/intermediates/ed56412a-226a-4b45-b7d2-2fc5a6abb015.pem", - "mimetype": "application/x-pem-file" - }, - "id": "38151805-f6d6-4160-bb3c-659a7e00d86f", - "last_modified": 1770263823854 - }, - { - "schema": 1770260342557, - "derHash": "FOOgeNHHavzzr2+qA//qJSuxu/BlEgNYPGCcnI43fpQ=", - "attachment": { - "hash": "7831d6b59ad703b8884e985587daddbd36ac6cccc47917ae3fa35c8a5789deea", - "size": 2190, - "filename": "XYqmklODCl2vxPaypkHqwgijTEmFUkywwn7wEBCGTEI=.pem", - "location": "security-state-staging/intermediates/91cbb78f-fbb6-478f-befd-32b74d2a971c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "5907e963-a927-4ff3-a767-d1fcb4bbc15b", - "last_modified": 1770263823851 - }, - { - "schema": 1770260345035, - "derHash": "IBV1G7kf4yF+2xZ7YBXDEmOmiGDYt/FpyjAu9W3attU=", - "attachment": { - "hash": "8e9bb51f1c4673ac0f1e626de0dbae7dd42c52262d9da61a6149c16e09e640e7", - "size": 1223, - "filename": "c_lAS_0MVqS7WjKq5s-FtVdR0AE5geDQhSnOKaUnwCk=.pem", - "location": "security-state-staging/intermediates/50fd0429-81a2-4a65-abd6-f76b892095aa.pem", - "mimetype": "application/x-pem-file" - }, - "id": "f28ad1a2-21e6-4df7-bbb2-a89510dd758b", - "last_modified": 1770263823848 - }, - { - "schema": 1770260341358, - "derHash": "vcUWT02OJhXxMGU/eDf6RbB4edA/mIcNIDorzCnGtAY=", - "attachment": { - "hash": "7e58dbec8998e0cbe4eff372ef9e21645ae3f0d586d4e695a99901ad8c6a7a74", - "size": 2190, - "filename": "x5IsyPP7hjmPsbV6IT4Mly6r0ti5-yf7ayEHilPHPyU=.pem", - "location": "security-state-staging/intermediates/e6837cfe-3e17-46da-87e6-902ad5e196ce.pem", - "mimetype": "application/x-pem-file" - }, - "id": "bfd3797f-1568-4a78-9913-0e329986bf59", - "last_modified": 1770263823845 - }, - { - "schema": 1770260347067, - "derHash": "08j58ZVoCldM/ISCgiLN/vnuJNH+Y6uhABXKbs+/ukY=", - "attachment": { - "hash": "b9617b133039ec8da979c5e69cf2e0f5389548b66efdd839f6af571b76193fa4", - "size": 1215, - "filename": "wrLyo4CzGSQfCr2_rJdM0DY4-tzOEaHzlhPXRX18VaM=.pem", - "location": "security-state-staging/intermediates/1fa0708e-d157-4a22-b1df-7909b58aad77.pem", - "mimetype": "application/x-pem-file" - }, - "id": "48233e9d-de28-44df-b2d5-6b47ce16ffb5", - "last_modified": 1770263823842 - }, - { - "schema": 1770260342226, - "derHash": "e9KIAbQOMhqjxGxpj68MEq3TzAmMg4a0X4sucuKxN3Y=", - "attachment": { - "hash": "878bc2b0689688bd49c0ca20784b858a0635bf70291bf08aab447f0fbee2c5df", - "size": 2186, - "filename": "H3RCGb0NBFU_JkpfAdJ-gYoQB49YNP9JoUyOesAerVo=.pem", - "location": "security-state-staging/intermediates/94222fbb-ae28-49cd-b00a-fafe44a077d4.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d7a737be-ddd5-4106-aed4-bf5fe42eda6c", - "last_modified": 1770263823839 - }, - { - "schema": 1770260344046, - "derHash": "08VbkzaQYbDMuqdPgUK9KjVw6gPCnBw4lTKV+BX5lJs=", - "attachment": { - "hash": "05008c0e70cd9f11687c687b3c1e997aa29b70767a7d134dd1d1fbe692e8c2d9", - "size": 1223, - "filename": "BN549JsuFrMxQBMTu0Rmb75e2HM0fxAipHgnBimbxHM=.pem", - "location": "security-state-staging/intermediates/291805ae-d0d9-46ee-a971-99f980a89b09.pem", - "mimetype": "application/x-pem-file" - }, - "id": "fef15513-ac0c-4798-a82b-235a161703b5", - "last_modified": 1770263823836 - }, - { - "schema": 1770173946190, - "derHash": "nkEV/XDiMX4Vv4EVUmEGQ7MoGKAwSqPJdoWnZGVJMmE=", - "attachment": { - "hash": "0e73085f4091e039043f2f1ae104177395e53e74772b9a72d93045c2dd68bfdb", - "size": 1305, - "filename": "FfstIBJRQL_OSddFhkXVXxYXvlwpeV4N5QyzQSOMer4=.pem", - "location": "security-state-staging/intermediates/831b7078-63f3-481b-98e4-1499266941b2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b8486d25-1446-4158-b6e6-6d81ef56ead4", - "last_modified": 1770177422952 - }, - { - "schema": 1770173945736, - "derHash": "mLLIeBE4TgUmTjXAIM++I0aiWismuLTG7oiEizJWajA=", - "attachment": { - "hash": "651ba1c9968449dc76f1f5bfb9b1093f7ff450e49f687773ca8de0bd57c815b6", - "size": 1650, - "filename": "oNRtzFjExN5uD8qKkd5K8_Mbe1QZHVTf6hadoVpXatI=.pem", - "location": "security-state-staging/intermediates/19e02e49-3323-4ba1-bef8-f62dfa09faf2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "85a68e2f-d038-457e-9794-13ff032fb908", - "last_modified": 1770177422948 - }, - { - "schema": 1770173945296, - "derHash": "L0GeMuVK86P5u8nM8LnTrrPZltJ823iRNA2xM42j22U=", - "attachment": { - "hash": "b9ff354f6a625fbce1377e8fd7901935f195194a8f1ddae1242f8fe6821d1b88", - "size": 1293, - "filename": "FfstIBJRQL_OSddFhkXVXxYXvlwpeV4N5QyzQSOMer4=.pem", - "location": "security-state-staging/intermediates/a6572133-4c2f-45dc-99ab-6754e811f528.pem", - "mimetype": "application/x-pem-file" - }, - "id": "89241246-cbe7-47d8-9e58-9af68d8ebd44", - "last_modified": 1770177422944 - }, - { - "schema": 1770173944860, - "derHash": "B2swEV5DD3xY67wbeezOVncE2ao9oV9QYIVaiA4jcVU=", - "attachment": { - "hash": "345f4213a491bc58f23b58a27a12159a65382d487beeb348045df1c54993209f", - "size": 1297, - "filename": "XxwXFeAhoV94cB2wpw1cfCsPS8BPvJevCyCobm4QKxg=.pem", - "location": "security-state-staging/intermediates/3e7dd7a1-5e07-4077-b7f4-a3e7b681546b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b5379534-3caa-4476-9890-aac03d65c6a4", - "last_modified": 1770177422940 - }, - { - "schema": 1770173944292, - "derHash": "byZczh81CBftiIyaB86NEX5mRwkIlJccQFwNcuyVnVw=", - "attachment": { - "hash": "d0bd90f7abfe775753a131f93fecd3dfe1a4936f6d5342a4c0139594271aa192", - "size": 1297, - "filename": "CBpKKUYnWuYNjyn6A4C6-fbIOhB5kbX1rkHpBJ-7g0Y=.pem", - "location": "security-state-staging/intermediates/a3b73de8-0f85-437e-a90c-f77bb437f990.pem", - "mimetype": "application/x-pem-file" - }, - "id": "4677ba90-816c-49c0-8760-978e145e3132", - "last_modified": 1770177422936 - }, - { - "schema": 1770173943922, - "derHash": "Zj5l606xUqgmahv0dRCLc6vJC8itmLWL4WI0soEnl5Y=", - "attachment": { - "hash": "89488336b7bb8719ba65c8f324930edc218241fdf65c4ab88ca4340351ebc980", - "size": 1280, - "filename": "CBpKKUYnWuYNjyn6A4C6-fbIOhB5kbX1rkHpBJ-7g0Y=.pem", - "location": "security-state-staging/intermediates/1f9dd4e8-146f-4e32-a2be-99ae227b8c9e.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d0dab428-03fb-4b08-86dd-b41a1c9acb4c", - "last_modified": 1770177422932 - }, - { - "schema": 1770173946535, - "derHash": "m57idwSi3zQGOr3WTCuIKGHdh4haMShAXrXt4Lcz0FM=", - "attachment": { - "hash": "4f33227fb595ac7903949f088d4e96f9df3641f439d2c21674399ededb9b30b2", - "size": 1280, - "filename": "XxwXFeAhoV94cB2wpw1cfCsPS8BPvJevCyCobm4QKxg=.pem", - "location": "security-state-staging/intermediates/68f6b444-9eb6-4e69-9d41-f817c27010f7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "099f992f-a2a3-4646-ac6c-8f45135469fb", - "last_modified": 1770177422928 - }, - { - "schema": 1769741962217, - "derHash": "0bKOoPkz1vHGL4ojk8yx4JRtgg2mRdJhF6T+j/hOuWg=", - "attachment": { - "hash": "0ff3aabb3fa10de0aef4f09218ce93bb3242b626b3c12ec1f5187952959aa0cf", - "size": 1955, - "filename": "QzBxP9Ky7j6CCboVdNV8IRHRoSv98velgRMOg-q-1FU=.pem", - "location": "security-state-staging/intermediates/27ecfb5a-df14-4585-980f-dbc57707788c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "95fe32c4-e8ae-44cc-a3cc-514e5652fd90", - "last_modified": 1769745422761 - }, - { - "schema": 1769176761006, - "derHash": "8hvvkd3bs1RNRFq3/0SBSVRYI6xifvvcrCvG+COsOMQ=", - "attachment": { - "hash": "e60727aa060f593431e5109643c15041e3f2c9d66b7865b3f7c3308742c86eb8", - "size": 2337, - "filename": "G6NjfcFmFAa5DouUTqNGb3I5tG34kmES3evs_0ubJ68=.pem", - "location": "security-state-staging/intermediates/285a6ec4-86cf-4354-954c-3dfc01d129fb.pem", - "mimetype": "application/x-pem-file" - }, - "id": "092070ff-8130-4d66-b022-7148b6caad9e", - "last_modified": 1769180223013 - }, - { - "schema": 1769176761445, - "derHash": "Dkm+29CTQdZG62XO6fLx7myPiL6qkGl5pJ0WFvycA+o=", - "attachment": { - "hash": "a662a9224bacaa2641160835f87fc703286eadbb41ef5d24369d5bfb21dd83af", - "size": 2337, - "filename": "-4NfwLvI-oS2XMvCOK-SvLyI3uhHOqTdnARBHdcqvtE=.pem", - "location": "security-state-staging/intermediates/fc3fddfe-2b57-41d8-ba7b-1b432e21ea96.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0e674220-6699-43ca-8001-a4eca2d9263b", - "last_modified": 1769180223009 - }, - { - "schema": 1769093950641, - "derHash": "vONuj1sYH5F321yMap1lqzqLBHGwYwEkzYGdzizFqBA=", - "attachment": { - "hash": "45c1c778a3c9bdd13b880a2f6c725dfc0877a30b121eb3c6b445e8143f4908a8", - "size": 2316, - "filename": "cb0w3yogRd_igofVAeLVSkNbKJAgeZkY1VnOMxazUsw=.pem", - "location": "security-state-staging/intermediates/e330ba41-aa6a-4eff-a491-10a95796ea3a.pem", - "mimetype": "application/x-pem-file" - }, - "id": "6b08449c-305a-4bb1-a85e-41d0efa2a0b8", - "last_modified": 1769097422826 - }, - { - "schema": 1769093950992, - "derHash": "foSN4Zj4fj40rJVvl68TOgpEJ3a0gaKXjwUU++utpRE=", - "attachment": { - "hash": "9b1ac8332a842635fc0392f80fcfa82b932cae715cb74c008ea87058246c64f3", - "size": 2353, - "filename": "p2-MWizDQ6cp4NKEOJSQg0t9lVXxgEtRFGkZAZahr0M=.pem", - "location": "security-state-staging/intermediates/80a95000-50ee-431c-9d4f-3933b6493f6c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "a6639fea-299a-4c16-b474-40ba9ca14b40", - "last_modified": 1769097422823 - }, - { - "schema": 1769093948817, - "derHash": "ggqcpUSg7jm+Z/5sl+F6DE/1Dwf/VF1BuccphcJZ174=", - "attachment": { - "hash": "a46580c7a64699fa79413ac64c07a102bcfe2e1f19f31cbf4a8ecbf42b3a6723", - "size": 1199, - "filename": "gIfkkmUYj6inWM9zvDkVasbEGGl7xKHe1Wop_RsNuIA=.pem", - "location": "security-state-staging/intermediates/0c6ab184-6c48-4c39-bce9-8df19aafb154.pem", - "mimetype": "application/x-pem-file" - }, - "id": "09dc0de1-098f-426c-aded-738e75d907c7", - "last_modified": 1769097422819 - }, - { - "schema": 1769093948478, - "derHash": "OX0CBbUcS8jib6EPs7IRQblXOKNaps1m9Hz3FC3giyM=", - "attachment": { - "hash": "839027013d6601da4e4e94593dff98c212cc7506c292b2740bf423dfa1bc39e6", - "size": 2333, - "filename": "Wn3B1wgIuU5ROfzQY2uSCL2l2__IQLmKeNpI86EbEwc=.pem", - "location": "security-state-staging/intermediates/1d00496c-d308-4173-b667-628c159fd613.pem", - "mimetype": "application/x-pem-file" - }, - "id": "2d30be85-04c4-4819-9c82-35b8c1f652ad", - "last_modified": 1769097422816 - }, - { - "schema": 1769093949178, - "derHash": "UWqmZdvUiYjj8M2aZw+JFz6Cmt/jj2B6BRPGaDwrm5U=", - "attachment": { - "hash": "36a309fcebf72a353a77a209c46fa4e478cfd0c4cd008a8fd11dce6e3b088383", - "size": 1642, - "filename": "254RMZQXerxWgTVLLRIaXmH7PMV2_3teQRwosizLT1g=.pem", - "location": "security-state-staging/intermediates/2263944b-50fb-4c1d-bf9a-67dc484c0850.pem", - "mimetype": "application/x-pem-file" - }, - "id": "e98aa366-4196-46ed-a885-3f548c527067", - "last_modified": 1769097422812 - }, - { - "schema": 1769093948095, - "derHash": "nvlJZLRFFhp+aTgMvKAAGspGaBjlAZrI9/damtqRD/M=", - "attachment": { - "hash": "9a9b9976b74b9e0bc815dee47a42967c930407d54b4e354a52349eef42cd5dab", - "size": 1183, - "filename": "C81x2ukxXCPiWxz5uhbF6no1xEtYVHYIOthg17hSb68=.pem", - "location": "security-state-staging/intermediates/76a1a184-b2ab-4c99-bcbe-ab2752118fa7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "af29496c-3c23-4a78-870b-22843fc78db4", - "last_modified": 1769097422808 - }, - { - "schema": 1769093951361, - "derHash": "HzYfJ+jLIk7XBJhzCujIVThU7DPvBPPKI66IAfV6tbs=", - "attachment": { - "hash": "2cb0c190e25fa2203a58bc0ad002919f4e9e9055f3bc7753cf4c40d25f460114", - "size": 1171, - "filename": "NV0E23_KoLwAdaHoXWQNFo5yXkTNk_7HCe1aZif0b-M=.pem", - "location": "security-state-staging/intermediates/58af1233-8e7e-4559-b3ec-195e3a931c09.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d2d3061d-f8de-41ea-a9d3-151cbc18f5ce", - "last_modified": 1769097422805 - }, - { - "schema": 1769093947664, - "derHash": "xahOyRS7+lqYDsrn3j0+CVjAlKvyD8je6qux6r5nA9M=", - "attachment": { - "hash": "c8f77f7df4540cc724ea9c90582f1805517bcd141f3a213142c83644ef12131c", - "size": 2316, - "filename": "9qwxgRCRdd-eyg7dWzYyN0lhA9crNgwS9W_XJ0J52zQ=.pem", - "location": "security-state-staging/intermediates/26201583-a939-4469-a8b0-31c538b72b8b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b985983e-1171-45f7-ac73-793a460dda2a", - "last_modified": 1769097422801 - }, - { - "schema": 1769093946847, - "derHash": "J/B27hBjZoZfVrQwQvc12WssXoPGj5NnkXY5yt/tzRY=", - "attachment": { - "hash": "ed39343be275be6c523926ee2657edaa0a01cfe49e6d03af303b0be2cb312cfd", - "size": 1199, - "filename": "KjmokaXYLfPmrVW80Zxh795ATJW8ARApF9Cl24Rn-n8=.pem", - "location": "security-state-staging/intermediates/f617d98c-2811-4668-aee5-7e502c366c49.pem", - "mimetype": "application/x-pem-file" - }, - "id": "91839ab5-fc52-4328-989b-0f57e6598e0e", - "last_modified": 1769097422798 - }, - { - "schema": 1769093950275, - "derHash": "v4Zi5PqyGMgknLx+ojWISV77q10oV8vhhAc0eUVG0oA=", - "attachment": { - "hash": "bfbc2342361c9cbd9d3df24991fc8d865ca4c933f160e46e3c548e794254ded0", - "size": 1646, - "filename": "khhi51ieBCCIMOL740DkWuWQJMleGaoLyswmUAZl_rc=.pem", - "location": "security-state-staging/intermediates/64763dbd-9304-4492-9939-de65d50b806d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "04fb6192-70c9-4c76-bac1-f2c482b0707e", - "last_modified": 1769097422794 - }, - { - "schema": 1769093949907, - "derHash": "ioQ1b51PKL4ye5/y8GNr375SZg0BPEI57b58zX1533E=", - "attachment": { - "hash": "329563b8d6d89416102d6acfa799d3a252cdc77de8e6866762cc1f2eff6c0c38", - "size": 2316, - "filename": "bPTGQo-pdGYsVATN6gsse1MEfUopK26n-2SKy_nxl_I=.pem", - "location": "security-state-staging/intermediates/d5723363-ddac-48c0-95e1-3dfc6e73c977.pem", - "mimetype": "application/x-pem-file" - }, - "id": "53ea60ba-ee6b-4c18-95fc-4aae51ff777d", - "last_modified": 1769097422790 - }, - { - "schema": 1769093949542, - "derHash": "i8RzZsDoKiSe4ah2mBO3v9ZxjSU91ppsS0vnaTNi8ek=", - "attachment": { - "hash": "9c6544b311b276eea59673bab49d316e9a41de4a758954561a2b03a6fdf0dc24", - "size": 1642, - "filename": "B8FIHpMFu6hhMAwnZUTqBt8xyIZtSxOJXssJEJIXs4Y=.pem", - "location": "security-state-staging/intermediates/452451a0-c570-4880-bac9-2f5ac201801b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "11192969-c76a-471f-92a8-46e2cd56738a", - "last_modified": 1769097422787 - }, - { - "schema": 1769093947280, - "derHash": "dueFbDz7jze75lG0KgXMFEq6WQF2FuKBnRltfH4vg/U=", - "attachment": { - "hash": "bc8f805618c0b0c6ad55c006add9b74a59d4c706f5cfeba7cc60a9d08e43347c", - "size": 1167, - "filename": "dl2pcO6LrN7CYGCAb8bGQgWezNkdIihMS6bf7W0ZvJ4=.pem", - "location": "security-state-staging/intermediates/4fb28ecf-43cd-45da-8e5b-4aee6f6c6464.pem", - "mimetype": "application/x-pem-file" - }, - "id": "093d57b2-513a-40ff-acf0-1c038d547c1e", - "last_modified": 1769097422783 - }, - { - "schema": 1769047142759, - "derHash": "ZL6yAtS/vdx9DY56sc08JfsX9KwDG4O3XuG/U9t9Q0E=", - "attachment": { - "hash": "71fa2d9e5258704b41942abbe7cedc20cb82fb45fb8e0e7b503676014f187cd7", - "size": 1605, - "filename": "NIdnza073SiyuN1TUa7DDGjOxc1p0nbfOCfbxPWAZGQ=.pem", - "location": "security-state-staging/intermediates/2a97c97f-67f1-4022-abda-a5cd69681ae3.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8e42f261-60a4-4e1f-93ca-ff8dfa43d976", - "last_modified": 1769050622808 - }, - { - "schema": 1769047143088, - "derHash": "onL1b4RP2fiXn/+MPLGGIUVMsVukGfxEJ4JLe80tKbY=", - "attachment": { - "hash": "8de50911ed902000996ab329cfb94453a341071c5112d751a1e0a0f976e58b57", - "size": 1601, - "filename": "oyD01TTXvpfBro3QSZc1vIlcMjrdLTiL_M9mLCPX-Zo=.pem", - "location": "security-state-staging/intermediates/3fba9fb8-ad72-4f18-8849-68be6ad06a99.pem", - "mimetype": "application/x-pem-file" - }, - "id": "fd58e467-add1-42e2-ab9e-432e601b0d80", - "last_modified": 1769050622804 - }, - { - "schema": 1768964321488, - "derHash": "xp2wGpIBDMA27rxbMSaPC+vZtm9JEF8a2W+PplMPMbA=", - "attachment": { - "hash": "cc996ecb373018f29adea29e7a2cc875ff4353c20f4dd974eff865df3b9c3223", - "size": 2369, - "filename": "G-7JXNe_Sc4C5F_UtnPsgDVM4p8pTDINxhP4Rg8TuGU=.pem", - "location": "security-state-staging/intermediates/5d7e32e0-e6f5-4d60-8888-3f307e80156f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "13629b49-eb41-4008-ab2a-7254d770e84f", - "last_modified": 1768967822859 - }, - { - "schema": 1768964320769, - "derHash": "U9VrYCL7+8cs2axnBhZdiqFiH9mOBHxKj2Klja0rLHI=", - "attachment": { - "hash": "319cdc917a126e28ac4cffc426504e4ae4a5f1d599ba4e59da353ce47a4f8e63", - "size": 2333, - "filename": "fqCCHqOmm5BhdvT0GPZ4Fp-riZ6zL3IiwQ1Y93ZYuII=.pem", - "location": "security-state-staging/intermediates/4f897d5d-6bd5-46f9-995f-aab2aafe7a9b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ea8ab2fd-ecdf-48aa-bc88-8536ff29b6f0", - "last_modified": 1768967822856 - }, - { - "schema": 1768964321820, - "derHash": "Q24LepENBF59h6AKMg1m16STXTwl7pBsppztInqyy/U=", - "attachment": { - "hash": "9a5ebeba744356ea20d80248d871234274401c0fa0c0c60699d0e7e86836f1c8", - "size": 1179, - "filename": "gE3vlkxheut7NKU8V6v46S797VrG7MFgdv8H17Q1MIM=.pem", - "location": "security-state-staging/intermediates/7f455a47-bf33-4cd3-b2e1-61b322755710.pem", - "mimetype": "application/x-pem-file" - }, - "id": "d3ba91e4-075c-47f6-82d9-e99aabef0eb1", - "last_modified": 1768967822852 - }, - { - "schema": 1768964321127, - "derHash": "7BGOuL0bjszw+Mquwb25zXrUlfdWuUpY0JvsYlEOtnk=", - "attachment": { - "hash": "89ff0c3e3886b40042282242e2965e953aa86e3ace445b53973687fcb65946e0", - "size": 2333, - "filename": "NVy97oJCu3FjrB0ef5FTBY4LoDK6l1QR3MbcloC22b4=.pem", - "location": "security-state-staging/intermediates/4faafb83-4912-4e1d-a4bf-fddc87207091.pem", - "mimetype": "application/x-pem-file" - }, - "id": "6c12f4d9-2b74-46af-ba93-783de41fae1b", - "last_modified": 1768967822848 - }, - { - "schema": 1768273154955, - "derHash": "2a5e0nycZIUpbIminSIvSrK8fuylHsyNLXoj/pwRUdo=", - "attachment": { - "hash": "059dd45e41662bd6d6939dcbb2af55358348f3d3c1050336c5c0e0f912d25605", - "size": 1666, - "filename": "8ca6Zwz8iOTfUpc8rkIPCgid1HQUT-WAbEIAZOFZEik=.pem", - "location": "security-state-staging/intermediates/1e5dcdd6-aeb1-4f95-9e18-0a156ba6d071.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b0dcb2f7-d22d-470b-8a2c-1bada67ce5ad", - "last_modified": 1768276622970 - }, - { - "schema": 1766545151547, - "derHash": "apoq8tf6rOXigX6DmIJ6FAa+5xHdtxjntVlXeqTBK18=", - "attachment": { - "hash": "4d3692ac441d7c3f075664f508fa72eb6b12c6d921e6f20d39970029ba654f46", - "size": 1999, - "filename": "D2CK5YkrtH6dJajHxLR-P6JOnCIlK4TORS4_07BmMA8=.pem", - "location": "security-state-staging/intermediates/bb6e2bb1-edcc-45e5-856e-f125101628b4.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1f0679b5-b285-43cb-af3b-c9c91f566f52", - "last_modified": 1766548622587 - }, - { - "schema": 1766545150870, - "derHash": "QdmJ/zITleggScLpWry9ecbMIHti+fGCdL3ixy+DQdY=", - "attachment": { - "hash": "3061d1494d2670d64c2b8d2a3b20753446cb3cd16a58e3fc20901e6221952cac", - "size": 1999, - "filename": "DaH-BZQc0vDvzDnwIYWQow8VlNFoJSPHT4EqvAUJlno=.pem", - "location": "security-state-staging/intermediates/6a972243-c1ca-4f56-afd5-dd541badc509.pem", - "mimetype": "application/x-pem-file" - }, - "id": "fe8783cf-bfbf-4942-9459-d38873cd3849", - "last_modified": 1766548622584 - }, - { - "schema": 1766545150516, - "derHash": "N0yqtHIYFqTzgBMA7Wzl1k8VVPkXjZQLTnMGvJPSty4=", - "attachment": { - "hash": "1b6f61ae529e45efc2b08a2c5e354ea73a4eabadec9784b615de5a52b19a07d9", - "size": 1999, - "filename": "FZ9pybbuyn9HhpGR1NPthWsnzkVhQmQzQLyshe2YYQI=.pem", - "location": "security-state-staging/intermediates/82cdb7b6-b69c-4f50-8707-fd6ef2e45fe0.pem", - "mimetype": "application/x-pem-file" - }, - "id": "2aaafebe-5bd9-4295-94b0-781f94ed876a", - "last_modified": 1766548622581 - }, - { - "schema": 1766545151205, - "derHash": "06hD1NyS613xJ+ZGwvUO6ANFJ0fYycbU/bn3yyBgxbc=", - "attachment": { - "hash": "fc501019fa6c2cc3194e8494997361d37dfa2930d979f1a004ec5c96912d8699", - "size": 1999, - "filename": "XztAsecQzzxu1jUv1WbLy4I-Rd8k920eS6JthbhBF7w=.pem", - "location": "security-state-staging/intermediates/c6cfe955-4314-42e4-aa56-147d1a1c1a9c.pem", - "mimetype": "application/x-pem-file" - }, - "id": "db7338eb-337f-4678-90d0-017f070ea48e", - "last_modified": 1766548622575 - }, - { - "schema": 1766545150040, - "derHash": "yvAIQqcvlpblPCnyxeehudcaPi8MMdi5QGlNWdzO9kM=", - "attachment": { - "hash": "c9ddd15d4575624c6480bca5f1621f558809f3d159392240ee373ec1a9c58712", - "size": 1199, - "filename": "p4UlhI-4INdk1HPs8-QdeU9xFTzIwh8tuwVaVcuoAdg=.pem", - "location": "security-state-staging/intermediates/8b0827bc-68a0-4177-adc6-dd30594c243f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ef0d45b4-04df-431a-ae55-a2db91a67de2", - "last_modified": 1766548622572 - }, - { - "schema": 1766545149681, - "derHash": "x3KGXm+eCneLDoZESiH7ZUf3oF4WnM/Fv+oFMX4PX2k=", - "attachment": { - "hash": "cea5d7631fdb975eaab8abcdeafa6dc8b875ef4ddd5d629506adc68836863859", - "size": 1195, - "filename": "W-Umw3HYfIOzV9bxKzoWQcUfT5Ssj5St0SlQgxYWXVI=.pem", - "location": "security-state-staging/intermediates/2ed1e716-f4b6-4b37-a11b-871ac84e2585.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9a5e2215-2d9b-4b78-b8c9-5cdbc6a6e04a", - "last_modified": 1766548622569 - }, - { - "schema": 1766199553968, - "derHash": "uNBo3GxmB5p1Zp5VsOo+Zv7xBHOUcer8PRZ6aBlyNPY=", - "attachment": { - "hash": "2721d976197c0971feb3b2aa3fe7ab4116f5b873f7762c1b903bed71f274889e", - "size": 2194, - "filename": "fNZ8JI9p2D_C-bsB3LH3rWejY9BGBDeW0JhMOiMfa7A=.pem", - "location": "security-state-staging/intermediates/4538ae28-7ee7-4f9f-9b25-494e072ba946.pem", - "mimetype": "application/x-pem-file" - }, - "id": "1d3479b6-a941-456d-aa49-38d4829fed8f", - "last_modified": 1766203022761 - }, - { - "schema": 1766199553271, - "derHash": "RppWJMvxJcKbHHOqTQXUsr9PhAC11WnppMpVSrTE+vU=", - "attachment": { - "hash": "b0eb06ac30b4d1952a31af513c2b2b13be71d0993ac06a3c9d45b32bfdeffd05", - "size": 1540, - "filename": "G_ANXI8TwJTdF-AFBM8IiIUPEv0Gf6H5LA_b9guG4yE=.pem", - "location": "security-state-staging/intermediates/55a07545-3406-49c7-b4c2-75ab41e736be.pem", - "mimetype": "application/x-pem-file" - }, - "id": "11abffc6-86d0-4dca-8c39-d6a546d872d0", - "last_modified": 1766203022758 - }, - { - "schema": 1766199552928, - "derHash": "Mn7JOVXJFFJhsIfG/F6sinEmK/JWjo0298L+29GxB3o=", - "attachment": { - "hash": "fce6d2adb30e15ecebfc251a25aa18fd326eb2f5bd8def6cdf2c4051fc40d421", - "size": 2308, - "filename": "IcENwofaRhqQc2PcjyjgcuebC1DnPogY1Yfis0DLQJM=.pem", - "location": "security-state-staging/intermediates/1b91e146-c5f2-40c0-8110-19742cfc72f7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "40ee61ef-0bc5-4ea9-8718-4888ecf4305e", - "last_modified": 1766203022755 - }, - { - "schema": 1766199553624, - "derHash": "Gx3gaZDNCzBeLhJIBhA7Gtz/xJnyElBNx39I3QrWIgk=", - "attachment": { - "hash": "8790a12a03afdc57bfe66ff20ba236054617d0d5509f56709ce442cdb4e42a18", - "size": 2121, - "filename": "K89VOmb1cJAN3TK6bf4ezAbJGC1mLcG2Dh97dnwr3VQ=.pem", - "location": "security-state-staging/intermediates/8d7d0493-30e8-4926-b826-971a2e8d1ac7.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b85f75ad-679d-4d04-9406-289abb01f97e", - "last_modified": 1766203022751 - }, - { - "schema": 1766127551521, - "derHash": "s+hkZ9F4886+Eec5/CFp5MeFkHjsY/tAMYmB7zpOqyY=", - "attachment": { - "hash": "c09aff236ce4f0c0fdbedb011c055253734d85ee01f4731d866797babaed2236", - "size": 2182, - "filename": "0cRTd-vc1hjNFlHcLgLCHXUeWqn80bNDH_bs9qMTSPo=.pem", - "location": "security-state-staging/intermediates/1c94507f-bac7-453c-806d-0ac393641919.pem", - "mimetype": "application/x-pem-file" - }, - "id": "9d7646ec-f495-4a54-9a7d-de78added679", - "last_modified": 1766131022600 - }, - { - "schema": 1766026758172, - "derHash": "f+tvjJyEekSeC3AjhsIxmqEZHzjfAtA75ks/GuGXH5Q=", - "attachment": { - "hash": "fc4fafa94f5576c91b52ab38126ac5805910dcc29ff3f249ef2d66fe90c05f9e", - "size": 1297, - "filename": "cC948ZGRQqa4jzUFhFrPLMQ23ZJtoLcISSak2FyC1W4=.pem", - "location": "security-state-staging/intermediates/83d1c892-5314-4a26-959e-afc240dad367.pem", - "mimetype": "application/x-pem-file" - }, - "id": "199298d3-8252-408f-9699-40b091ffc5e8", - "last_modified": 1766030226231 - }, - { - "schema": 1765983546338, - "derHash": "mZPRgykq/EFlq80nK0RUMhRZGDrHtBkROVAzcrzMKKk=", - "attachment": { - "hash": "5cf3c0bfdc7b17d1ae7c3fc1d0bdbf35f10b3fb606b2c8ef50bbfd593549bf92", - "size": 1297, - "filename": "IlYqx6aK68NNdqzDPc346Xl199h2mbiAnsDRwDf7z8s=.pem", - "location": "security-state-staging/intermediates/654d91da-ac76-4cc4-8bfa-d4543598ce45.pem", - "mimetype": "application/x-pem-file" - }, - "id": "0f01296d-e0bc-4d08-944c-1020c8cbb5d0", - "last_modified": 1765987022922 - }, - { - "schema": 1765378748973, - "derHash": "opLN9ZkF/DABbCITHW8uSXRJ8VWgWiNMzsDgQhcb9w8=", - "attachment": { - "hash": "f07935f4dd9d0401863201b99d4893058b39b12c95ba433db82609dd649063d0", - "size": 2353, - "filename": "KsO_2ZCPae5nBbHkbrZGSJnspMLVD2HOwMOS6QlrN4g=.pem", - "location": "security-state-staging/intermediates/ea5c0f11-b67b-46e4-9200-4af33ec21a4d.pem", - "mimetype": "application/x-pem-file" - }, - "id": "8521464e-e102-4a3b-a482-86bf2c3362e2", - "last_modified": 1765382227673 - }, - { - "schema": 1765378748122, - "derHash": "ayJ+6IUPsRNHiouDWm4Dpus/tRkb+5qynYguppulCU0=", - "attachment": { - "hash": "d7c8880d2f6429c7a21df0c8f3510fa82b5385199bb840fcad3bf9417328e59d", - "size": 2345, - "filename": "wlNHZlPQ35zQrKv-RbxnwroHj_ZkxaY4wZ8DGQgvT-I=.pem", - "location": "security-state-staging/intermediates/c86a6fc0-65c7-446f-9506-2647e2f12975.pem", - "mimetype": "application/x-pem-file" - }, - "id": "13f87e5a-265e-4cac-8b2e-a1ebbd86b510", - "last_modified": 1765382227670 - }, - { - "schema": 1765378748571, - "derHash": "Rbxq6V5AerXlav3+7jjO2OlqaskDKtTRIsWstGvcMxI=", - "attachment": { - "hash": "bf21ea3106c8f4a2a5b4422ad54953b4fc54c7dca51ff6dd27b4a9d1994c73b1", - "size": 2361, - "filename": "Q-K2ZHTOJDK_ZL8mtXILZ6yfL-_txpYibcmmr4NWCxs=.pem", - "location": "security-state-staging/intermediates/89ea1551-1a9d-48a7-828c-6dc72e19fb6f.pem", - "mimetype": "application/x-pem-file" - }, - "id": "7545285f-f72e-4009-96a2-d914b8c774e0", - "last_modified": 1765382227667 - }, - { - "schema": 1765378749325, - "derHash": "d1f+MpjzmwusToMNb5jIKOend4DkhcAZWIZOfSSz29E=", - "attachment": { - "hash": "ad54f34781fb85b2cd469c50615b2c8e3113ecfd3e455e3b0f2184b5cd5c158b", - "size": 2345, - "filename": "E1-Hcf9n73xmMa2cczt-v4_p_6OrrN37lruLhCWKP_M=.pem", - "location": "security-state-staging/intermediates/c9dca64c-83dd-4afa-8d5c-e90dc9aa09f2.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b6a3c2b1-7236-4ec8-b4c2-b4dea64ce8e8", - "last_modified": 1765382227663 - }, - { - "schema": 1764817156198, - "derHash": "UZX54oPqjcINa5RkglkXZ5bUrTVDgqOBkFh9aPSNfVk=", - "attachment": { - "hash": "8341b7d535e19bb68109cb0754993e2a65157a98766d1dd8200dbe0e7dddd7a4", - "size": 1975, - "filename": "mySUJCQH0F8sT4UxrtcCo1T-VVJTTxIgq1eyf5wqbAs=.pem", - "location": "security-state-staging/intermediates/524f95da-7ef2-4502-ae2d-7459647fbbbd.pem", - "mimetype": "application/x-pem-file" - }, - "id": "ceaa59dc-8c7b-4c28-bd1c-672a598df7d6", - "last_modified": 1764820622846 - }, - { - "schema": 1764817155820, - "derHash": "BVQINDyz1IIwcsHf6Zrgme1PIDxq6T+6J+O2ZjSemEA=", - "attachment": { - "hash": "08ac715e2de25cd98032acfff7dfeb2604a7f81c433b069cf9f21a9cc1db8caf", - "size": 1134, - "filename": "-75kUEGD589mEpNjiQnoCeQPpBYDqWPrDlC3xwJuUtM=.pem", - "location": "security-state-staging/intermediates/899f5a14-a885-4a61-92d7-a8c58bf087ce.pem", - "mimetype": "application/x-pem-file" - }, - "id": "deb3bf93-0ada-463c-8f8c-5e88174c72ec", - "last_modified": 1764820622843 - }, - { - "schema": 1764817155443, - "derHash": "lEVHbTmJdKDGem0QJKCr/y1OBKCNtFW3zk4PpY0Wpak=", - "attachment": { - "hash": "efe5e2b32dd394d042fe6f4f9bd9591e829f415bdce3909bee87cb987aecff42", - "size": 1134, - "filename": "cjGARjmhkHouKDtiSoO33a4uOH7XEfeIO5iVcVsVbb8=.pem", - "location": "security-state-staging/intermediates/c9e4af62-30a3-4642-bf36-30c4435f9f3b.pem", - "mimetype": "application/x-pem-file" - }, - "id": "68c4032e-2562-4fc8-b778-5f31bca2d5ce", - "last_modified": 1764820622840 - }, - { - "schema": 1764817155036, - "derHash": "ocpRNACZtZTaw0vz3+DCchaIWl7CfsvDoJC+/vHLpj0=", - "attachment": { - "hash": "d69af697f9048ffcc18d359faab125a10f91f7aa10a573d0e31b810b12a8cc44", - "size": 1975, - "filename": "KKESdmQ_GK7Py9tAgDGG9Nw7M1gODAg5fAHThb7syWs=.pem", - "location": "security-state-staging/intermediates/d27ef6a3-58fb-447a-8dbe-30c726218faa.pem", - "mimetype": "application/x-pem-file" - }, - "id": "870f7e56-f650-479b-bf33-f593e36ba7e4", - "last_modified": 1764820622837 - }, - { - "schema": 1764601145271, - "derHash": "mZd78coyP6lgR+faX5O9bL8XAQ1tj7zgMJHs55yFfvo=", - "attachment": { - "hash": "2f39906c9b7687906afb73588a223b73d3bb40c543cf27bcdbf0ed00be872ad3", - "size": 1845, - "filename": "joBG7EysAVpQfODS0BVKS0Do5CsxZc-lRlcUNREtF-U=.pem", - "location": "security-state-staging/intermediates/46076939-8285-409a-a567-12a82a184141.pem", - "mimetype": "application/x-pem-file" - }, - "id": "b18518de-0065-4318-a36f-348417e3f421", - "last_modified": 1764604622418 - }, { "schema": 1764079149622, "derHash": "Vx5SHl4igQ0zuxo5mRFD6eZM2NrpfWWTGxlOGa7oHoY=", @@ -4602,6 +1261,84 @@ "id": "9cbf8c9f-fbfe-48d5-9093-985dc67c890f", "last_modified": 1758207422549 }, + { + "schema": 1758160708985, + "derHash": "3tN03HKQTcyvt9zYQp1FpqrauAKP18cMsaC9U/4MzG4=", + "attachment": { + "hash": "427051eccc12bab26b4f51984f14c2607d838e6ea8b2a6d7d8712f4fe43b3698", + "size": 1983, + "filename": "D2CK5YkrtH6dJajHxLR-P6JOnCIlK4TORS4_07BmMA8=.pem", + "location": "security-state-staging/intermediates/cc37b897-3e87-4928-a2b7-4ce0dbf878b9.pem", + "mimetype": "application/x-pem-file" + }, + "id": "42a4536f-beb6-4e59-a050-8f16a5f86c7c", + "last_modified": 1758164222352 + }, + { + "schema": 1758160706850, + "derHash": "ZP5H4SVgg82qH+F6stPZZZGfrZz+BjpFqF9iSH+IBH4=", + "attachment": { + "hash": "5ba7dc0e4bc3a9dd6bce5ce67f6e115938322c2b80721762122fd61b79939dc1", + "size": 1983, + "filename": "XztAsecQzzxu1jUv1WbLy4I-Rd8k920eS6JthbhBF7w=.pem", + "location": "security-state-staging/intermediates/eee75da5-942e-4f97-9724-648f356e204f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "58e87456-ff48-4bdb-93fb-921b0597bdec", + "last_modified": 1758164222349 + }, + { + "schema": 1758160704561, + "derHash": "OcSS0G7RFQ01/OrPDfKND7YbugcqNKpOgk1r4zmn6yM=", + "attachment": { + "hash": "0a74b252ae573b8304b0aad8428a663f9275e03f4cb9cba2cccee8ec08b4aba4", + "size": 1183, + "filename": "p4UlhI-4INdk1HPs8-QdeU9xFTzIwh8tuwVaVcuoAdg=.pem", + "location": "security-state-staging/intermediates/90a52681-a664-4b0b-a541-7d67ab6c1dd3.pem", + "mimetype": "application/x-pem-file" + }, + "id": "a3d15496-e378-49c7-8790-45c9c9f812a0", + "last_modified": 1758164222346 + }, + { + "schema": 1758160703406, + "derHash": "O/urlNhXPPVQHocnODMXLuOyGE///ZuVo5BvxN062lA=", + "attachment": { + "hash": "fdda814851a4ed81c64b8bfeaed7d5c9505c034fd77b6d854c5fdde229d14d18", + "size": 1187, + "filename": "W-Umw3HYfIOzV9bxKzoWQcUfT5Ssj5St0SlQgxYWXVI=.pem", + "location": "security-state-staging/intermediates/b0753169-5164-4f30-9989-367d74d19f47.pem", + "mimetype": "application/x-pem-file" + }, + "id": "fddb52ad-fed9-4959-81ce-ad596f6f13fa", + "last_modified": 1758164222343 + }, + { + "schema": 1758160707928, + "derHash": "bshc2T5ae0yuWIGMsClqgLOyOsjXJo5IiC5TcA8VRKg=", + "attachment": { + "hash": "ba50b22194f9ebbf045331226f576f6e59a445b3783be031139d7d9be6fd5bfa", + "size": 1983, + "filename": "DaH-BZQc0vDvzDnwIYWQow8VlNFoJSPHT4EqvAUJlno=.pem", + "location": "security-state-staging/intermediates/26ee575c-092f-47c4-b9c8-2a974f4c0555.pem", + "mimetype": "application/x-pem-file" + }, + "id": "b35d2e89-d70d-4741-9a27-b42718d99b33", + "last_modified": 1758164222341 + }, + { + "schema": 1758160705792, + "derHash": "PtP4Z5gC4Kvu2ziKkB2vYZtvKzT2km3M//ITlRc1EXg=", + "attachment": { + "hash": "b2ee39528b217b0b6a6e809b831ba4b5b2efdf7b0deabdc0191a1b9973b85d38", + "size": 1983, + "filename": "FZ9pybbuyn9HhpGR1NPthWsnzkVhQmQzQLyshe2YYQI=.pem", + "location": "security-state-staging/intermediates/fa792f43-68b5-4a82-ae42-5752193cca67.pem", + "mimetype": "application/x-pem-file" + }, + "id": "ce3c1d70-a893-4f7d-b4f1-4096a0717930", + "last_modified": 1758164222337 + }, { "schema": 1757037509106, "derHash": "LXtbQp+AwPCgMqAFH2lqD40LmJgOcfbyROrGNnvEyRc=", @@ -6201,6 +2938,84 @@ "id": "b01d6f54-8501-4470-a2c4-9cc297d6c8a5", "last_modified": 1748789822362 }, + { + "schema": 1748613468911, + "derHash": "aIaMMybttIZShO4SOqy6mO5jS9wotEPbsjSISnu326U=", + "attachment": { + "hash": "46aba2c3a09d43f58213046d0d24b8d72909214f6a12ef536b9ac464675df479", + "size": 6606, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/c08e74d4-41bc-4c0b-a013-178b2df71ef1.pem", + "mimetype": "application/x-pem-file" + }, + "id": "c7ce988b-e290-4807-8114-6aa381e488a9", + "last_modified": 1748617022274 + }, + { + "schema": 1748613467301, + "derHash": "6RWMavVojPz5iQIGxDBhyB+n/AfQjiiifAaMWAc6aZo=", + "attachment": { + "hash": "1c1d5e8241267136da3705fd506b169c5463a9f343d488c2a0acdfa960cd309a", + "size": 2052, + "filename": "Wd8xe_qfTwq3ylFNd3IpaqLHZbh2ZNCLluVzmeNkcpw=.pem", + "location": "security-state-staging/intermediates/ca542134-7f2e-4fc9-87c9-eb7ee23cfafe.pem", + "mimetype": "application/x-pem-file" + }, + "id": "40452622-9d6c-48be-a106-e5d3ee4f391f", + "last_modified": 1748617022269 + }, + { + "schema": 1748613466523, + "derHash": "eQ7EKFBKYfJz5Pz3/9TVaZHtwC1EAvu9iRThSfonjB0=", + "attachment": { + "hash": "ecbc00b9ed43a432b55c42a94d0badca176de123a863ece1d8ce7b12662a4bcc", + "size": 6525, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/f87ebe56-1386-4b95-bd23-bfee25cef01e.pem", + "mimetype": "application/x-pem-file" + }, + "id": "469e1a5a-e758-4920-8eb8-b2a517a0baf2", + "last_modified": 1748617022265 + }, + { + "schema": 1748613468135, + "derHash": "TJE9BPtJXcNhGVUtYGj3uYke/kA0Tp5cHpEy9luu/38=", + "attachment": { + "hash": "b47f4335ae3edbdca967deaae2958f757fb4beb22b0a4d4f432579ebf498efd3", + "size": 2032, + "filename": "Wd8xe_qfTwq3ylFNd3IpaqLHZbh2ZNCLluVzmeNkcpw=.pem", + "location": "security-state-staging/intermediates/e1622bfc-91ea-4673-97d1-1b831a7c362f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "065468f3-9699-44a0-a94a-9dbe23482932", + "last_modified": 1748617022260 + }, + { + "schema": 1748613465743, + "derHash": "MjIq4uMadDC+HWwEvYyr+9JAx00snb6CeA2x8/c2YKY=", + "attachment": { + "hash": "1e96c83a685ed5ee76287c49fd81f3a8b5725ab6459929b3bcfbdfe275bac468", + "size": 6480, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/43790604-9e8f-4964-882d-4abfd11191ba.pem", + "mimetype": "application/x-pem-file" + }, + "id": "02655d38-e49e-4724-95ee-7106b411ae85", + "last_modified": 1748617022256 + }, + { + "schema": 1748613464898, + "derHash": "xrPG3kW8irklU2od8L7N6cQivhoGujkUJ1jB7MVYaA4=", + "attachment": { + "hash": "7838c760cb523cdd55efe81c53ee4c5a1ee9702379e1fdc610be0d4c52a1a332", + "size": 1999, + "filename": "LgbK4fwgsgDm-3SFV6RES-yTF9__LkFRZp4PeUTwqeA=.pem", + "location": "security-state-staging/intermediates/b6ca3b07-7c7f-41bf-8627-51e8624a2754.pem", + "mimetype": "application/x-pem-file" + }, + "id": "8535d081-5cb2-412d-8452-365fba55e282", + "last_modified": 1748617022249 + }, { "schema": 1748570266149, "derHash": "QYuXFAxxBYoJ6TOwidDVaD4xM81fclSPbBWhdXm6J9s=", @@ -7098,6 +3913,19 @@ "id": "0407a720-fd3a-42e1-8bc5-3d0b76b9fb77", "last_modified": 1746241022416 }, + { + "schema": 1746237471711, + "derHash": "5MJd4bKFs8RTWO8SWDoap42xSNDSlPh5gzlFH8GRBUI=", + "attachment": { + "hash": "af2ac1842bb829ca9f75e5079396b52aa006be0b38f1e1d43148c637bea74185", + "size": 2231, + "filename": "I-sFpWHh9UxHLORoVozF1a_U4fohTGmX9grDc85ZVXo=.pem", + "location": "security-state-staging/intermediates/35690fa6-ed77-4100-9e44-b9036bbf5093.pem", + "mimetype": "application/x-pem-file" + }, + "id": "8adcefe4-c9de-475d-8ac5-9d120964ad59", + "last_modified": 1746241022413 + }, { "schema": 1746237467974, "derHash": "0K62bvNkmnP6H4oDF9tUxhJXp/ShTRESvnQrXrY/ZiI=", @@ -7111,6 +3939,19 @@ "id": "41fb17c6-1cfc-4c8e-bd9f-7318e020d440", "last_modified": 1746241022410 }, + { + "schema": 1746237469455, + "derHash": "jtb6R7FNx5yF7VxM4sZ7Ly+W0rkFRpDyi/Lf6aV3DfA=", + "attachment": { + "hash": "72f08da06f749d5374d51d1fd088168e36dcaf2c60d8627befc64746d0e3d330", + "size": 1650, + "filename": "FIJQeSulVkzcOTq--FPehpPD7ZpzwJIUo-9DuJKQ7jE=.pem", + "location": "security-state-staging/intermediates/e1ee3fad-ec55-4f2b-91f9-076b3d7898ed.pem", + "mimetype": "application/x-pem-file" + }, + "id": "6ffcd987-f874-454e-b0ee-2f83ea4381bc", + "last_modified": 1746241022407 + }, { "schema": 1746237468678, "derHash": "fNE7i55RvW6uARbX+J4/Ieqjq6KiCZeyYGo9zFeOcpU=", @@ -7618,6 +4459,175 @@ "id": "4d7b0ec7-5dd5-41b1-bd08-88a8d6ccf034", "last_modified": 1741186622485 }, + { + "schema": 1741140177817, + "derHash": "sSaq0cF87p7vDyztwGvGeG8Z5IoHmSn5PBOrSMow7GA=", + "attachment": { + "hash": "edf306f6f952343d543d0af41e661c584403f747999969bc18f8b1ccda6fb4c8", + "size": 2389, + "filename": "qN8rR_SrX_av7kFrTMVDVwaxjS_4hPqCLCRFxpTtb5Q=.pem", + "location": "security-state-staging/intermediates/59a611c9-4b83-4c5e-95ba-80a710a6b9ee.pem", + "mimetype": "application/x-pem-file" + }, + "id": "e56de645-0e77-4288-82dc-17779820850e", + "last_modified": 1741143422606 + }, + { + "schema": 1741140179009, + "derHash": "k7/3kSXwPzK6V6bx5e+vVwXSeKcsBXsqbGbh8QOrpRc=", + "attachment": { + "hash": "8dd471f03a5b4a597db1af1278bfc22154de935bb005541ea401904f526f488a", + "size": 1938, + "filename": "IcYSvmprje0VWfElFd6SUFdp4DNb-MCaGuOBZb_2KAQ=.pem", + "location": "security-state-staging/intermediates/a381c02a-aa81-40e9-95e2-d86ba088a792.pem", + "mimetype": "application/x-pem-file" + }, + "id": "a96ec436-97e9-4715-bc1b-f2c8039a7af1", + "last_modified": 1741143422566 + }, + { + "schema": 1741140178098, + "derHash": "U6GAjHWjF1U6HDsPCKGGpzhE8uljU9WKZmFnqixhRwA=", + "attachment": { + "hash": "eac15617652412a3c8acf7c69910838a0c31f631516be8a0ae52fd9f3cce4540", + "size": 1171, + "filename": "eU_y-se_vOLREyjkV6bagqYCfnm6kFtJKdJR5e1kLdE=.pem", + "location": "security-state-staging/intermediates/414c0875-aeca-4329-9da5-171d7446d986.pem", + "mimetype": "application/x-pem-file" + }, + "id": "a39f6bb6-8b20-4ccb-be95-b3545cf62aef", + "last_modified": 1741143422563 + }, + { + "schema": 1741140178670, + "derHash": "oEPk9znEb5gk4g8ESC8s5CpYFp5JTMzSwVtfVIcxWEc=", + "attachment": { + "hash": "0070ea144778d74a3ab9dc79a3bdc03c90782078637691dbd8b753775f0e97ab", + "size": 1256, + "filename": "-rZ-oHIli9vnhBFMFcYVGzPZZxsF4ERt7_lei07lDuw=.pem", + "location": "security-state-staging/intermediates/5258eee2-7414-4695-92c1-36d77fc9bbe1.pem", + "mimetype": "application/x-pem-file" + }, + "id": "4cde832a-8ec7-4f34-9fb0-cd7567f098d1", + "last_modified": 1741143422561 + }, + { + "schema": 1741140177210, + "derHash": "l3NoTNwz9YC6EyaiV9clzUfthLWCmxxYEU+BHDPWjxY=", + "attachment": { + "hash": "b61bc83974131c411ed8e86d3dfa472d5b91f66771ce7bf03ec015bce30ab9a7", + "size": 1272, + "filename": "DYR2DhKa5SMc14tHtLCWRtUvPpyyR_0pVTUVukSP8p0=.pem", + "location": "security-state-staging/intermediates/cbcb30f8-7506-44ce-8d24-96efe98807bf.pem", + "mimetype": "application/x-pem-file" + }, + "id": "cda85266-aef2-4a67-8c1d-b196a2fc22a6", + "last_modified": 1741143422558 + }, + { + "schema": 1741140177536, + "derHash": "anBOe/PbZ9vQp0vYEP6SLnei1FmyU9d89Lb4jqD25M8=", + "attachment": { + "hash": "4100ce66641fc8fc07c33da597304b54e51d4edf8e24155bd0a279a3870f93ff", + "size": 1268, + "filename": "MOwm_EBNdpPSyfQ09hchNe0-Z70aQEtVSPDJ_pnnM3o=.pem", + "location": "security-state-staging/intermediates/988b33a0-4184-47c2-8569-1652f8ab0052.pem", + "mimetype": "application/x-pem-file" + }, + "id": "fc924ceb-1596-4cd2-b7ea-0e35e045e0c2", + "last_modified": 1741143422555 + }, + { + "schema": 1741140176937, + "derHash": "V5xTuQYgRsPzmn1gMG46jhuhtujm6HhkRaJHkvxnG9g=", + "attachment": { + "hash": "4775ff17e0b7ab8e525df62af9f4d65a1c11db3ecafcc6626433e5ec96c9d980", + "size": 1175, + "filename": "sb30K4I7uzqo_QL-q4wvnJWAEF4-Gl6dBGBCCh8-HTQ=.pem", + "location": "security-state-staging/intermediates/17328567-ddb5-441d-b448-cd56d4ab948f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "d92dd827-d6f8-4b5c-a9c4-8ce9b512d07a", + "last_modified": 1741143422552 + }, + { + "schema": 1741140178379, + "derHash": "VFqs1X/A8k6SGBhT+K2OUR2SYk/ag1k7iekx/O6C7Wo=", + "attachment": { + "hash": "13a26f578dc277483d7a6bfb72e73fd4a2d44ed2ef5b06a53f8ce2ae67884bf8", + "size": 2389, + "filename": "fyZyqtes4hr_Js-31ur7RaqtzKx_9XdFRhk-U5Q01xI=.pem", + "location": "security-state-staging/intermediates/b88a622d-5c25-4e3d-997b-66495864f3b5.pem", + "mimetype": "application/x-pem-file" + }, + "id": "6f32c998-6a1f-4c05-a86a-48d4b56724bc", + "last_modified": 1741143422549 + }, + { + "schema": 1741140179601, + "derHash": "A/wEwuLeNRcQRq1PSBsuFq9PAp5kg8azhF0fOD8tG7w=", + "attachment": { + "hash": "a29b6b53cac7f0166140e041a851a314d527b6de1b638e116a0f49684a2e194e", + "size": 1256, + "filename": "ape6p3oIAZVhR41FnMCWB2mnh-kr9fvHezQzpRikqnA=.pem", + "location": "security-state-staging/intermediates/86d0032b-9c67-4d1a-a79b-13c44106df50.pem", + "mimetype": "application/x-pem-file" + }, + "id": "cfdd4747-222e-408f-8b9c-4cb8663f969f", + "last_modified": 1741143422546 + }, + { + "schema": 1741140176210, + "derHash": "T4eTU/aYzoOctXtvMVvSJ4F7Eqrt+PrFcfJq/OAb5Ow=", + "attachment": { + "hash": "daa8decc88f6d02a73734cc8f87869a6842e616c51d102eb947075658190e965", + "size": 2377, + "filename": "0EOItVFXahnEajPdwY_-b7gAvody7qA8W4fGMjp4kSk=.pem", + "location": "security-state-staging/intermediates/503a00b8-4539-4b67-a7b5-c148ce41e24a.pem", + "mimetype": "application/x-pem-file" + }, + "id": "fa8cd2e7-de4a-46dd-b185-156b458de041", + "last_modified": 1741143422543 + }, + { + "schema": 1741140176544, + "derHash": "L8qd56Bla58mVcjJAwZLfupHhaQPsnB+HWOUaC63aZg=", + "attachment": { + "hash": "e8ad03247e7bcdd90146ff1554fdf388de994ef0eb4afdd54ca2fb14444a2fe1", + "size": 2377, + "filename": "U7HGgAgBh4Lofe8dGF4EgFNdDyu4HBUlE5wwOeXTL7c=.pem", + "location": "security-state-staging/intermediates/2b7f3a6b-17a3-48fb-9dae-0e4b928b1f15.pem", + "mimetype": "application/x-pem-file" + }, + "id": "c810fb90-6d7f-4520-9038-6f8e35a9e5de", + "last_modified": 1741143422541 + }, + { + "schema": 1741140175889, + "derHash": "p1DZhLzchvlRN97E8/coxN6QYVdM5+zTpUl4DDgUrmc=", + "attachment": { + "hash": "48ff891435d1f59042294ec99b526373df713216e849700742bd3a9934b28d59", + "size": 1187, + "filename": "eERytU_4t0FVL8cKrC9Me74LzTj0t2X_E3YndZfxiIU=.pem", + "location": "security-state-staging/intermediates/250f3d01-eb02-4d23-bc70-e5126f56318f.pem", + "mimetype": "application/x-pem-file" + }, + "id": "f4e28aa6-6ab9-4d68-8b97-81ce6555871d", + "last_modified": 1741143422538 + }, + { + "schema": 1741140175502, + "derHash": "eEvIWa2NYaUKkUw1fBS4KBTW9uPccT343Ri9nzfexAg=", + "attachment": { + "hash": "3b2da0067cd3b8eeb4ce30c3f1d3d7d8d620f3e7c5e7961832b47e9137f52c98", + "size": 1187, + "filename": "R4eNv-z6u0Kzayeo1NdZJIMfLbF1SaVPQfhNPQIDBD4=.pem", + "location": "security-state-staging/intermediates/3ec0c307-c7ce-4a40-bbb3-6b208467ea77.pem", + "mimetype": "application/x-pem-file" + }, + "id": "d7a83066-5695-4efe-94d9-3a1eb190c867", + "last_modified": 1741143422535 + }, { "schema": 1741010569850, "derHash": "yaXBqISMP+iV6jLbqkvt682r9oM0aebqnLkOFW7x8J0=", @@ -9295,6 +6305,19 @@ "id": "b37cc301-772e-441f-8c6c-85b12ba9b5db", "last_modified": 1731121022786 }, + { + "schema": 1730512973922, + "derHash": "w/UyZTfbZHfE17+DD/W0AaetspcHcCrdmOYkYfnuZ8c=", + "attachment": { + "hash": "66204606f48f4d64852dfeafea80c931e263b5d2ddf848a32bb2aac645db49b9", + "size": 2121, + "filename": "9KHBUPq6ebBeKneFHv9zzZWFrSbp-bgeU8hOqlDN0gU=.pem", + "location": "security-state-staging/intermediates/2091c2d2-995d-4aca-86f1-23f3cd638875.pem", + "mimetype": "application/x-pem-file" + }, + "id": "522fe9b6-dfdc-4feb-ad9b-73ff5bd717bb", + "last_modified": 1730516222536 + }, { "schema": 1730491372697, "derHash": "oNYJp+PENOh4qaHBvQZbjc8zqn7+4bEbx1zOXloEIIA=", @@ -9650,6 +6673,24 @@ "id": "8936d1eb-6881-4dc1-9eb9-d51707108789", "last_modified": 1727449022563 }, + { + "schema": 1727359367325, + "derHash": "bM9Sdls7NbR2Aw8W7OJCedyH/BDMeEvA4EkZ6QTSVAc=", + "subject": "CN=Subordinate Advanced ECC CA G2,O=SECOM Trust Systems CO.\\,LTD.,C=JP", + "subjectDN": "MF0xCzAJBgNVBAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TdWJvcmRpbmF0ZSBBZHZhbmNlZCBFQ0MgQ0EgRzI=", + "whitelist": false, + "attachment": { + "hash": "1f86e575d4badad207a0f3a6d945fd0a75f7001bf3b2eb598c09ffa897636816", + "size": 1589, + "filename": "1b-hdhDYKpJwO40m1GtAqNkn5luo7V8AYgKzz-dZ_YY=.pem", + "location": "security-state-staging/intermediates/103d1694-af42-4002-bb50-386dd04d3b97.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "1b+hdhDYKpJwO40m1GtAqNkn5luo7V8AYgKzz+dZ/YY=", + "crlite_enrolled": false, + "id": "51754853-e8ce-49b0-a434-0a99c06e12e2", + "last_modified": 1727362622546 + }, { "schema": 1727100175330, "derHash": "MJQCV5IDmmivblU2hkEL2rfA1KNrkITLpkIC411uu90=", @@ -10190,6 +7231,24 @@ "id": "42e65582-bc47-411f-8a83-18f6157fd458", "last_modified": 1724961422704 }, + { + "schema": 1724961272729, + "derHash": "lLlJaZt0Nosn+tFNHu8fKqKtasJDmaJDmTmLAT/7lgE=", + "subject": "CN=VikingCloud TWG TLS DV CA\\, Level 1,O=Viking Cloud\\, Inc.,C=US", + "subjectDN": "MFcxCzAJBgNVBAYTAlVTMRswGQYDVQQKExJWaWtpbmcgQ2xvdWQsIEluYy4xKzApBgNVBAMTIlZpa2luZ0Nsb3VkIFRXRyBUTFMgRFYgQ0EsIExldmVsIDE=", + "whitelist": false, + "attachment": { + "hash": "cedcb40a8be3992992b074e838425a2fda9bed4b7f8e6594ce2b0487e990cedb", + "size": 2438, + "filename": "9Am3q5dmFVqFOADU-ARAtYsn186LNjSE0aQ6FCm6v3E=.pem", + "location": "security-state-staging/intermediates/9e24dc77-f6e4-4d6c-a609-1f41c7c37c2b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "9Am3q5dmFVqFOADU+ARAtYsn186LNjSE0aQ6FCm6v3E=", + "crlite_enrolled": false, + "id": "cc4a41d8-3987-460a-ae26-55f0b28d2dcb", + "last_modified": 1724961422702 + }, { "schema": 1724961268625, "derHash": "Q+37LHyT5j1lZtJA65xpz/XA1cmWxKybzJznWCjDub4=", @@ -10424,6 +7483,78 @@ "id": "4bd872f6-57a0-4199-b912-bd91ea605fc6", "last_modified": 1721872623502 }, + { + "schema": 1721314066965, + "derHash": "F3cfaUf6NHJ4bTpEta3iqsupraIDujHr1L2M66/OSUo=", + "subject": "CN=NETLOCK TLS Qualified EV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU", + "subjectDN": "MHoxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMSgwJgYDVQQDDB9ORVRMT0NLIFRMUyBRdWFsaWZpZWQgRVYgRUNDIENBMRcwFQYDVQRhDA5WQVRIVS0xMjIwMTUyMQ==", + "whitelist": false, + "attachment": { + "hash": "c9ece95860512e413eb8e22277dcad84c1d4ea14021af9ac7e7716b861cb07fc", + "size": 1622, + "filename": "8hGei3i00u2h5PvrbQEWCXLIaozLXkbULtTHvZ-3QZg=.pem", + "location": "security-state-staging/intermediates/61dcf76f-a95b-4f56-b986-2147acdca2ae.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "8hGei3i00u2h5PvrbQEWCXLIaozLXkbULtTHvZ+3QZg=", + "crlite_enrolled": false, + "id": "cbb6e3e5-aef1-4dbd-9969-ee713e54f56f", + "last_modified": 1721314623022 + }, + { + "schema": 1721314066604, + "derHash": "ABJ5uUndhnDxrm2kB5E7cm9hrveKL/GcLaOVIrMdwMc=", + "subject": "CN=NETLOCK TLS DV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU", + "subjectDN": "MHAxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMR4wHAYDVQQDDBVORVRMT0NLIFRMUyBEViBFQ0MgQ0ExFzAVBgNVBGEMDlZBVEhVLTEyMjAxNTIx", + "whitelist": false, + "attachment": { + "hash": "3b6ba905027ab376f8a0d1dc686ac229d8f8c842a00fb4de31f37a87ec39469b", + "size": 1609, + "filename": "li0YuffRNQ1XEOF7VTuJakr96zJ_ALD7q_pshmkp7mU=.pem", + "location": "security-state-staging/intermediates/1cd4921a-91a9-442f-afba-b1891d75cbcf.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "li0YuffRNQ1XEOF7VTuJakr96zJ/ALD7q/pshmkp7mU=", + "crlite_enrolled": false, + "id": "82b342ce-a491-4a61-966c-d18c2dfb17a9", + "last_modified": 1721314623019 + }, + { + "schema": 1721249267434, + "derHash": "83562S7OoS8wdQHBJrPi1t4sdBfT4bctJgacE3DniJQ=", + "subject": "CN=NETLOCK TLS EV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU", + "subjectDN": "MHAxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMR4wHAYDVQQDDBVORVRMT0NLIFRMUyBFViBFQ0MgQ0ExFzAVBgNVBGEMDlZBVEhVLTEyMjAxNTIx", + "whitelist": false, + "attachment": { + "hash": "6cec58bc428099e4938b4ed602a712431dbb35289dc6c5637c2fd4085f1a4506", + "size": 1609, + "filename": "cbddOej5UNOOv4KN9cNSXUsA1PNl6KujuXDCLRgBnFg=.pem", + "location": "security-state-staging/intermediates/46b3b865-76a2-4411-94a8-2ab122ecabcf.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "cbddOej5UNOOv4KN9cNSXUsA1PNl6KujuXDCLRgBnFg=", + "crlite_enrolled": false, + "id": "5069295a-97e9-45cf-8b62-e71284a97699", + "last_modified": 1721249822940 + }, + { + "schema": 1721249267110, + "derHash": "0OuQhAHzMkJgJjSv1RmRU2s616qQFYb960lV/lGw5Bk=", + "subject": "CN=NETLOCK TLS OV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU", + "subjectDN": "MHAxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMR4wHAYDVQQDDBVORVRMT0NLIFRMUyBPViBFQ0MgQ0ExFzAVBgNVBGEMDlZBVEhVLTEyMjAxNTIx", + "whitelist": false, + "attachment": { + "hash": "c88e2b1e7410dd323a5bc34a7c3f85bd4affb345950c976b16e9db704ef4aac9", + "size": 1609, + "filename": "i16I9ip2k2JwWRaZXmFeIeiS2KzOYhrChFGnUDooIl0=.pem", + "location": "security-state-staging/intermediates/4c2b366d-3949-4dd1-b8aa-a6cacea9a11f.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "i16I9ip2k2JwWRaZXmFeIeiS2KzOYhrChFGnUDooIl0=", + "crlite_enrolled": false, + "id": "ad955f30-a150-4a7e-8606-f8be1f785134", + "last_modified": 1721249822937 + }, { "schema": 1721227673766, "derHash": "t3bf8AeekKa/aJc4DUDWzwyA/obmWgbg3wLVgah3BeI=", @@ -12386,6 +9517,222 @@ "id": "57b18913-6deb-4a87-b1e2-3379aeecfc35", "last_modified": 1705982223073 }, + { + "schema": 1705503186346, + "derHash": "BOgIYDvkayU0Vi494jf0rnq+K14xQdjexHCoIjcNPbc=", + "subject": "CN=GlobalSign Atlas E46 EV TLS CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIEU0NiBFViBUTFMgQ0EgMjAyNCBRMg==", + "whitelist": false, + "attachment": { + "hash": "3536d13c9902bfb62e34f8554dc470da81f30b5c0fd377fec2bf2ba505ec29c7", + "size": 1199, + "filename": "660nVcvNRcFsR3s7oHScFMybbR6KiQzPeKvSK--DK_k=.pem", + "location": "security-state-staging/intermediates/e8b772ed-1da9-4055-a9a2-9c31cd486a1d.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "660nVcvNRcFsR3s7oHScFMybbR6KiQzPeKvSK++DK/k=", + "crlite_enrolled": false, + "id": "e6083412-2f4f-451a-874b-5a62037d7f8a", + "last_modified": 1705503423155 + }, + { + "schema": 1705503185461, + "derHash": "TeYXXzsPyjciFZ27waeNDElfbtryMwQKr8JVmIjBdqU=", + "subject": "CN=GlobalSign Atlas R3 OV TLS CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAyMDI0IFEy", + "whitelist": false, + "attachment": { + "hash": "97421ca04b528adadb2bbdf3bc52173447be4eda67b9f4108d27b36bf946b337", + "size": 1642, + "filename": "X5G5wFKv3dVearZKW5IcSCUd4PodgUWV3pEScHg27Cw=.pem", + "location": "security-state-staging/intermediates/a0d2ec79-24e8-4f5c-ad15-87901c0d4a05.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "X5G5wFKv3dVearZKW5IcSCUd4PodgUWV3pEScHg27Cw=", + "crlite_enrolled": false, + "id": "a977f162-c8b1-41f2-b9e4-8b906e543559", + "last_modified": 1705503423152 + }, + { + "schema": 1705503185156, + "derHash": "0+cioFIOcvdW/em93z1WSfaoWkDKvcyTf3dwCnxF4vw=", + "subject": "CN=GlobalSign Atlas ECCR5 DV TLS CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIFRMUyBDQSAyMDI0IFEy", + "whitelist": false, + "attachment": { + "hash": "0a96038c9db62e0ed417b812459719d29b8655948ad62ac1a47684eab7e06c9a", + "size": 1199, + "filename": "2L1kc7V6u1WOJipF5zt2aOWEIvM_mpQgRFouJxsVPqM=.pem", + "location": "security-state-staging/intermediates/4d0c782c-a2d9-401c-a679-dbde994e9764.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "2L1kc7V6u1WOJipF5zt2aOWEIvM/mpQgRFouJxsVPqM=", + "crlite_enrolled": false, + "id": "8d4f98e5-d355-45af-b9b0-c7fa7664889f", + "last_modified": 1705503423149 + }, + { + "schema": 1705503184874, + "derHash": "q0N8awz3bf4+1wAXQ2gKFRabjYiuwAqfcabCgkro/0E=", + "subject": "CN=GlobalSign Atlas R3 OV ACME CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIE9WIEFDTUUgQ0EgMjAyNCBRMg==", + "whitelist": false, + "attachment": { + "hash": "910bf03cdf3fa3ae1c6d6d0e6fc94c87191aa74efcf445b57e3233a2cfa17c40", + "size": 1642, + "filename": "sTITjdyzbufqQcFMCyTHS_F6AxlzIWMLyJM8V8Bk_T4=.pem", + "location": "security-state-staging/intermediates/5b0e8b09-8b61-4587-8e16-ec4ffb6b7125.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "sTITjdyzbufqQcFMCyTHS/F6AxlzIWMLyJM8V8Bk/T4=", + "crlite_enrolled": false, + "id": "eebd2808-c11c-42f2-a774-8c3603f2a033", + "last_modified": 1705503423147 + }, + { + "schema": 1705503184603, + "derHash": "O3TYFdCt2LpBKjdmyAXk8R+UaUO+jxip0Ze1JvtCBrw=", + "subject": "CN=GlobalSign Atlas ECCR5 DV ACME CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IERWIEFDTUUgQ0EgMjAyNCBRMg==", + "whitelist": false, + "attachment": { + "hash": "f43a7319419277da02713d279b13c9c47c4b2c27cf274950950e869a2a80fdd2", + "size": 1199, + "filename": "Tqawg980bEmVmlcprDRzsWCQaVSSAyhXqTZKLixoUJY=.pem", + "location": "security-state-staging/intermediates/75bf6801-9feb-4ef7-a8ff-8ca9a44efb83.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Tqawg980bEmVmlcprDRzsWCQaVSSAyhXqTZKLixoUJY=", + "crlite_enrolled": false, + "id": "2c45c42f-5c83-4ab5-8e5f-a29a5186bdb1", + "last_modified": 1705503423144 + }, + { + "schema": 1705503184291, + "derHash": "zhGwCtONMJLmGASIZdKLXugtNn1ylt2DOJgYxVx32j4=", + "subject": "CN=GlobalSign Atlas R3 AlphaSSL CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFoxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTAwLgYDVQQDEydHbG9iYWxTaWduIEF0bGFzIFIzIEFscGhhU1NMIENBIDIwMjQgUTI=", + "whitelist": false, + "attachment": { + "hash": "2549757a47de6df222ba832a4e2dc80ddc101798aecca4ba08115212fbefb8ea", + "size": 1646, + "filename": "9c92ps9ViIvqXXEV20RON5_nuySPkzdOhK2H-pSFAMo=.pem", + "location": "security-state-staging/intermediates/8848d0fc-3773-482e-b90b-9b0e8793a0c9.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "9c92ps9ViIvqXXEV20RON5/nuySPkzdOhK2H+pSFAMo=", + "crlite_enrolled": false, + "id": "54348587-ce92-452b-af71-eea27d062170", + "last_modified": 1705503423142 + }, + { + "schema": 1705503185739, + "derHash": "U/Ly08L5UlVUB7i7dwEiKcKk5H9zy0UTLclfbO3UOW8=", + "subject": "CN=GlobalSign Atlas R3 DV ACME CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFIzIERWIEFDTUUgQ0EgMjAyNCBRMg==", + "whitelist": false, + "attachment": { + "hash": "7c02bd82b20db1ffcb06f5729b3f0a33e97dfd07279714141f1f7922f46816b3", + "size": 1642, + "filename": "FqaePH4NiGiiiCLz2DJLzJLm1kRkah4MGHua8wvYqdQ=.pem", + "location": "security-state-staging/intermediates/4df6fb56-e304-4c87-9919-0e50bcf8d887.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "FqaePH4NiGiiiCLz2DJLzJLm1kRkah4MGHua8wvYqdQ=", + "crlite_enrolled": false, + "id": "21f97b0d-72c0-437a-9741-f1fbd8f04bd2", + "last_modified": 1705503423139 + }, + { + "schema": 1705503183954, + "derHash": "meY7Gp5MMkZkApw0AnXjCMYQGMvC6EzY6iNmVC6qMJw=", + "subject": "CN=GlobalSign Atlas ECCR5 OV TLS CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFsxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTEwLwYDVQQDEyhHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIFRMUyBDQSAyMDI0IFEy", + "whitelist": false, + "attachment": { + "hash": "311cc1bba7123536e422149dbead2358daf0ac44b490f73530151d2f01a23cbe", + "size": 1199, + "filename": "TllTpSwnffvffqGBbCRqwBy-Y5hzCrkbySiflulE_PA=.pem", + "location": "security-state-staging/intermediates/9f00d1ae-c133-495d-96d0-628305873ab1.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "TllTpSwnffvffqGBbCRqwBy+Y5hzCrkbySiflulE/PA=", + "crlite_enrolled": false, + "id": "72c8b3ce-4055-4ae8-817f-119b691b2d87", + "last_modified": 1705503423137 + }, + { + "schema": 1705503183024, + "derHash": "DmxS8W/05adTLvOad2cpnw4oTMLGtkcTwfuoggmMXfU=", + "subject": "CN=GlobalSign Atlas ECCR5 OV ACME CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTIwMAYDVQQDEylHbG9iYWxTaWduIEF0bGFzIEVDQ1I1IE9WIEFDTUUgQ0EgMjAyNCBRMg==", + "whitelist": false, + "attachment": { + "hash": "d3bbde30e424be7fa55d0b64376efcd2c0b7e91ad4bb18e37d73a9039d1ccdc0", + "size": 1199, + "filename": "mwOXezCyOlYUkGDPtQ1qCaweeHsWLUN-TwW2E3CCkX0=.pem", + "location": "security-state-staging/intermediates/20e730f2-8925-4c16-ab19-78935db805dd.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "mwOXezCyOlYUkGDPtQ1qCaweeHsWLUN+TwW2E3CCkX0=", + "crlite_enrolled": false, + "id": "b48c7f1b-a756-4e92-83e4-e6f07074f699", + "last_modified": 1705503423134 + }, + { + "schema": 1705503183660, + "derHash": "1YFqf9X6GNPgxEx4Jz+oVr4KOpk0KIJnY+OogIYxGYY=", + "subject": "CN=GlobalSign Atlas R46 EV TLS CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFkxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS8wLQYDVQQDEyZHbG9iYWxTaWduIEF0bGFzIFI0NiBFViBUTFMgQ0EgMjAyNCBRMg==", + "whitelist": false, + "attachment": { + "hash": "25cf51c651ba51648dc30752317d3087872de9fe09f47fe666561ecc041e6578", + "size": 2345, + "filename": "r6Epwm7CLuojciskFB3GG7NjyZ764bd_d0-TRHGz-0Q=.pem", + "location": "security-state-staging/intermediates/cc45e7df-a37a-4b92-8ba4-59e1a3d6d3ff.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "r6Epwm7CLuojciskFB3GG7NjyZ764bd/d0+TRHGz+0Q=", + "crlite_enrolled": false, + "id": "91436012-4de3-47ae-ab28-3d365774ad8f", + "last_modified": 1705503423131 + }, + { + "schema": 1705503183372, + "derHash": "kd3cuVyCWFo9hkX2Zc57i2BlafaUHTO9ndozil721MI=", + "subject": "CN=GlobalSign Atlas R6 EV TLS CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFI2IEVWIFRMUyBDQSAyMDI0IFEy", + "whitelist": false, + "attachment": { + "hash": "414b7347871b9c265c22269427a1dd2358873f023cf2bdd96bf3935afdb4db31", + "size": 2353, + "filename": "8YpzQ5_S0kZObvnXnzFciK6491At9Pgmj8U9tMfTfLU=.pem", + "location": "security-state-staging/intermediates/935f48c1-a48e-4ce1-8733-b31354e1edba.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "8YpzQ5/S0kZObvnXnzFciK6491At9Pgmj8U9tMfTfLU=", + "crlite_enrolled": false, + "id": "ca348f59-2062-4859-b472-05d853b03fdc", + "last_modified": 1705503423129 + }, + { + "schema": 1705503186030, + "derHash": "HSBE4nvcRBHKP6NA0ILBzDKxNmNH1AY+iYRjr6w//wY=", + "subject": "CN=GlobalSign Atlas R3 DV TLS CA 2024 Q2,O=GlobalSign nv-sa,C=BE", + "subjectDN": "MFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIERWIFRMUyBDQSAyMDI0IFEy", + "whitelist": false, + "attachment": { + "hash": "2546a507b0a7567c5e95eede4e0d04fedc7bee333865b42e75f2061ff57338d8", + "size": 1642, + "filename": "Q8EnsLk8vTIWNzmsmTAWeaot9K_dGpLZbJMW-qEIQHE=.pem", + "location": "security-state-staging/intermediates/ec6453f9-5bf8-4ee9-8e17-c79cc8cb0c54.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Q8EnsLk8vTIWNzmsmTAWeaot9K/dGpLZbJMW+qEIQHE=", + "crlite_enrolled": false, + "id": "f96ed8cd-a04a-4851-9925-344181aeed2a", + "last_modified": 1705503423126 + }, { "schema": 1704923284170, "derHash": "u2FAiu2fUwsuwFReU7osjr6qV9mXZEfbFmPO1GAM1rc=", @@ -13358,6 +10705,78 @@ "id": "f3a57b4b-1087-4064-afdc-fd3d8fd73b7b", "last_modified": 1693407423723 }, + { + "schema": 1693342092773, + "derHash": "snT+vm68cYZsM58Bitkz581oBbQ7/ebSGNwhFHFp12s=", + "subject": "CN=e-Szigno Online SSL CA 2017,O=Microsec Ltd.,L=Budapest,C=HU", + "subjectDN": "MHcxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJDAiBgNVBAMMG2UtU3ppZ25vIE9ubGluZSBTU0wgQ0EgMjAxNw==", + "whitelist": false, + "attachment": { + "hash": "72bc4f35ba6c3e85f36f856880dc364ba08e1ce42b81244f1ebf53e8514a8d5f", + "size": 1435, + "filename": "G_JwHP_ydSe7pufWcUyNckBrxBbnQ6Kmqw_OFPPiQI0=.pem", + "location": "security-state-staging/intermediates/9cda4ca9-3689-48fd-af2c-640bd25284ff.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "G/JwHP/ydSe7pufWcUyNckBrxBbnQ6Kmqw/OFPPiQI0=", + "crlite_enrolled": false, + "id": "df7a20cf-df80-4bde-8483-7d48af559d55", + "last_modified": 1693342624041 + }, + { + "schema": 1693342093437, + "derHash": "F0TXMTT5XOkWrevub3V0LEeTaGi2TSoMFi7xMpAPDuQ=", + "subject": "CN=e-Szigno Class3 SSL CA 2017,O=Microsec Ltd.,L=Budapest,C=HU", + "subjectDN": "MHcxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJDAiBgNVBAMMG2UtU3ppZ25vIENsYXNzMyBTU0wgQ0EgMjAxNw==", + "whitelist": false, + "attachment": { + "hash": "f875b715f8027d390ccd47c7e62fa9a8cb805078002c5447fead8ec98441abbd", + "size": 1435, + "filename": "69Duo3nmlQnUEvqzlU27qTDaDY9K1yN0wfdopIs9Y7s=.pem", + "location": "security-state-staging/intermediates/1986ba70-a9d5-4c04-9f62-2c8f532bde42.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "69Duo3nmlQnUEvqzlU27qTDaDY9K1yN0wfdopIs9Y7s=", + "crlite_enrolled": false, + "id": "0b79b1b7-45eb-4167-b5a4-52c77a4ae693", + "last_modified": 1693342624038 + }, + { + "schema": 1693342093097, + "derHash": "/Y4MjMzbuuTB8HwkjRH+u7D7PaDNDYlKioDYBKjTmn0=", + "subject": "CN=e-Szigno Class2 SSL CA 2017,O=Microsec Ltd.,L=Budapest,C=HU", + "subjectDN": "MHcxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJDAiBgNVBAMMG2UtU3ppZ25vIENsYXNzMiBTU0wgQ0EgMjAxNw==", + "whitelist": false, + "attachment": { + "hash": "eb233f6d83b210e52823cdff3145fe53c2632e2cf95904c5ac6d29368eb61943", + "size": 1435, + "filename": "HGXB7TIfcoLqLINF3LJD2A9t3V4VdHjcBv6LboViQMo=.pem", + "location": "security-state-staging/intermediates/36fd2d27-8c24-4aee-9ba5-feccce9483d5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "HGXB7TIfcoLqLINF3LJD2A9t3V4VdHjcBv6LboViQMo=", + "crlite_enrolled": false, + "id": "c2701cd6-d220-4744-a18b-3a3b323259ee", + "last_modified": 1693342624035 + }, + { + "schema": 1693342092400, + "derHash": "akjnNKxvBnFAySitu8xEkkadQW3i08mnoZfWI3DqwOI=", + "subject": "CN=e-Szigno Qualified TLS CA 2018,O=Microsec Ltd.,L=Budapest,C=HU", + "subjectDN": "MHoxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJzAlBgNVBAMMHmUtU3ppZ25vIFF1YWxpZmllZCBUTFMgQ0EgMjAxOA==", + "whitelist": false, + "attachment": { + "hash": "acb85909161220196625771f857155f74f662f21acb6efeab36c92266013233a", + "size": 1439, + "filename": "qd9EIyfp7CEtbkxafeyYAuC_8wQBWqGZflkLznwnuyc=.pem", + "location": "security-state-staging/intermediates/86baa78d-dbf7-44c9-b002-1a204379bad6.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "qd9EIyfp7CEtbkxafeyYAuC/8wQBWqGZflkLznwnuyc=", + "crlite_enrolled": false, + "id": "9cf88ec1-23c0-487b-9991-3fc43bbf71c0", + "last_modified": 1693342624031 + }, { "schema": 1693104479614, "derHash": "8BBP8XJ0YI8aGKHh6r+OaKUfUAqH4u+iLstiJ2P+9M8=", @@ -14618,6 +12037,60 @@ "id": "ddc97932-2e16-48d1-84b0-3815961ddf1f", "last_modified": 1691204223383 }, + { + "schema": 1690296478698, + "derHash": "oRXsDXPC6KuxiDE0+i3w2YXnQYgWBKQIKQfXBeJAfHI=", + "subject": "CN=e-Szigno Qualified TLS CA 2023,O=Microsec Ltd.,L=Budapest,C=HU", + "subjectDN": "MHoxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJzAlBgNVBAMMHmUtU3ppZ25vIFF1YWxpZmllZCBUTFMgQ0EgMjAyMw==", + "whitelist": false, + "attachment": { + "hash": "e5582687d546ac85a09c343f23ce9764cbc06e78844654f61940dde5034b145f", + "size": 1439, + "filename": "FfstIBJRQL_OSddFhkXVXxYXvlwpeV4N5QyzQSOMer4=.pem", + "location": "security-state-staging/intermediates/c3eaa351-c45f-4c58-b312-1a214832f8b5.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "FfstIBJRQL/OSddFhkXVXxYXvlwpeV4N5QyzQSOMer4=", + "crlite_enrolled": false, + "id": "da49e20c-b2f2-4d31-b07b-1064e96e3b70", + "last_modified": 1690297023211 + }, + { + "schema": 1690296478406, + "derHash": "wEww5A3X6WmC+GBuvvNVSOXG9PeSpSpReM8koOn9c5Y=", + "subject": "CN=e-Szigno DV TLS CA 2023,O=Microsec Ltd.,L=Budapest,C=HU", + "subjectDN": "MHMxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxIDAeBgNVBAMMF2UtU3ppZ25vIERWIFRMUyBDQSAyMDIz", + "whitelist": false, + "attachment": { + "hash": "e024d6f71f79e22a937ce5712dfbf1c17be250937f7a1a1b7aaa69d96607e27b", + "size": 1431, + "filename": "XxwXFeAhoV94cB2wpw1cfCsPS8BPvJevCyCobm4QKxg=.pem", + "location": "security-state-staging/intermediates/6e6e1fde-6155-4773-b392-6ee7800fcbdc.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "XxwXFeAhoV94cB2wpw1cfCsPS8BPvJevCyCobm4QKxg=", + "crlite_enrolled": false, + "id": "0d228708-baa8-45e3-a4ea-0bce48f43f86", + "last_modified": 1690297023208 + }, + { + "schema": 1690296478088, + "derHash": "EtRTenVH/2PDaSNiKiga/+lIESDbeBd2qvmBofm2aNg=", + "subject": "CN=e-Szigno OV TLS CA 2023,O=Microsec Ltd.,L=Budapest,C=HU", + "subjectDN": "MHMxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxIDAeBgNVBAMMF2UtU3ppZ25vIE9WIFRMUyBDQSAyMDIz", + "whitelist": false, + "attachment": { + "hash": "ab5bf3cb8d3a60923137ac8e379030e9e4208f811155f11e65307099425c5d04", + "size": 1431, + "filename": "CBpKKUYnWuYNjyn6A4C6-fbIOhB5kbX1rkHpBJ-7g0Y=.pem", + "location": "security-state-staging/intermediates/0052bd62-f25b-4c75-b5e2-123cf02b80fe.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "CBpKKUYnWuYNjyn6A4C6+fbIOhB5kbX1rkHpBJ+7g0Y=", + "crlite_enrolled": false, + "id": "a206224b-c943-44b0-b74e-3c4bfb484c15", + "last_modified": 1690297023205 + }, { "schema": 1689929282855, "derHash": "5G+yp1CXo0XUJG3PRKENqnHZ/Q6/q2G6Z+bbhO5bbKs=", @@ -16814,6 +14287,24 @@ "id": "d4028f7a-433e-4118-9af5-f556af86871c", "last_modified": 1666727875274 }, + { + "schema": 1666727409802, + "derHash": "Vtpu/vHVBBNMcu7cOuRKp/oRuEiCDb+qhsqONdYO2wQ=", + "subject": "CN=FujiSSL Public Validation Authority - G3,O=SECOM Trust Systems CO.\\,LTD.,C=JP", + "subjectDN": "MGcxCzAJBgNVBAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMTEwLwYDVQQDEyhGdWppU1NMIFB1YmxpYyBWYWxpZGF0aW9uIEF1dGhvcml0eSAtIEcz", + "whitelist": false, + "attachment": { + "hash": "bbb89301ab3ea4fd79d1448f5c852927551328811eee186c33c831d20d5e0ae0", + "size": 1674, + "filename": "dzjq2willdWoAe9M1lz4AuLGmmFYgxAD2zYIXMhbzjo=.pem", + "location": "security-state-staging/intermediates/f2374571-0b80-42e0-8883-fda71075451e.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "dzjq2willdWoAe9M1lz4AuLGmmFYgxAD2zYIXMhbzjo=", + "crlite_enrolled": false, + "id": "77918a2e-3fdb-4dcf-8e32-cbe1b39f74f4", + "last_modified": 1666727875260 + }, { "schema": 1666727335669, "derHash": "NEe3S15QClSZg/os7XOlZC5qrseIKVRhWEN99m10Nbg=", @@ -17084,6 +14575,24 @@ "id": "5ec3f078-2414-46ca-aaf8-e9630ae2109a", "last_modified": 1666727874812 }, + { + "schema": 1666727388343, + "derHash": "ppxZlm67zf7H9P8CiMhv9gNW+nhgIIuTtDoJWwYAzB4=", + "subject": "CN=nazwaSSL,OU=http://nazwa.pl,O=nazwa.pl sp. z o.o.,C=PL", + "subjectDN": "MFgxCzAJBgNVBAYTAlBMMRwwGgYDVQQKDBNuYXp3YS5wbCBzcC4geiBvLm8uMRgwFgYDVQQLDA9odHRwOi8vbmF6d2EucGwxETAPBgNVBAMMCG5hendhU1NM", + "whitelist": false, + "attachment": { + "hash": "882b6da025cdfc61d89e03806a350163dfdfc251470ff6e5f8433ca8370adea9", + "size": 1605, + "filename": "AW6U8qPqk114rfl2sAhiEim2Pf0mq_Rb_BeWSlVAiP4=.pem", + "location": "security-state-staging/intermediates/4a692d29-8a7d-4aa6-b0fa-426ad6f59300.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "AW6U8qPqk114rfl2sAhiEim2Pf0mq/Rb/BeWSlVAiP4=", + "crlite_enrolled": false, + "id": "bbeb9d9e-3dd2-4546-8c96-d7fc9be4f2e6", + "last_modified": 1666727874798 + }, { "schema": 1666727382505, "derHash": "6sJBwEQKNoMBETgzNrwgysdAnCD26I1PhPSCe+kZ4zg=", @@ -17894,6 +15403,24 @@ "id": "681d294f-17d7-400e-a4ca-507ee1d90a50", "last_modified": 1666727873590 }, + { + "schema": 1666727415821, + "derHash": "lW/5zJFIdNnK+WVbzLaWwb5Jolv5KNXEHA9TlaE12Lg=", + "subject": "CN=Telekom Security DV RSA CA 21,O=Deutsche Telekom Security GmbH,C=DE", + "subjectDN": "MF4xCzAJBgNVBAYTAkRFMScwJQYDVQQKDB5EZXV0c2NoZSBUZWxla29tIFNlY3VyaXR5IEdtYkgxJjAkBgNVBAMMHVRlbGVrb20gU2VjdXJpdHkgRFYgUlNBIENBIDIx", + "whitelist": false, + "attachment": { + "hash": "acb3894c8cbada20f584e21eba9807c60116c18b1ffb053f0d45638c7fbade05", + "size": 1752, + "filename": "xKFly8BVCDp0QQH2za-7ZzsqYFz305rqc0YqMPtU7Uw=.pem", + "location": "security-state-staging/intermediates/5cc07929-0f31-444c-9904-7e3f405702e3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "xKFly8BVCDp0QQH2za+7ZzsqYFz305rqc0YqMPtU7Uw=", + "crlite_enrolled": false, + "id": "1c1cd633-821a-4775-9051-53aaf439c3b3", + "last_modified": 1666727873576 + }, { "schema": 1666727372257, "derHash": "SB5YKiBqfXBAzNoXzyXTSXhaKrlO11UqslTc04sDLsA=", @@ -18488,6 +16015,24 @@ "id": "42115fab-f048-4a66-92be-15d909da568b", "last_modified": 1666727872798 }, + { + "schema": 1666727452311, + "derHash": "I7zV16lqUTqYHq0nk25ZqAKKgHvXKGBBj2i1VaKRFnA=", + "subject": "CN=Certigna Identity CA,OU=0002 48146308100036,O=DHIMYOTIS,C=FR", + "subjectDN": "MIGCMQswCQYDVQQGEwJGUjESMBAGA1UECgwJREhJTVlPVElTMRwwGgYDVQQLDBMwMDAyIDQ4MTQ2MzA4MTAwMDM2MSIwIAYDVQRhDBlOVFJGUi0wMDAyIDQ4MTQ2MzA4MTAwMDM2MR0wGwYDVQQDDBRDZXJ0aWduYSBJZGVudGl0eSBDQQ==", + "whitelist": false, + "attachment": { + "hash": "211c9fabe3b82a58caaded8a0e4fe51f77d8506e143103dc3f8db31704cb7e6e", + "size": 2178, + "filename": "lwJkDQYtogkGJEFJMX5DjskCXh2W7dNBRH_eJZlWjWo=.pem", + "location": "security-state-staging/intermediates/00c1f21f-a695-478a-9e33-19d48f9525d8.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "lwJkDQYtogkGJEFJMX5DjskCXh2W7dNBRH/eJZlWjWo=", + "crlite_enrolled": false, + "id": "f695b618-333e-4759-a681-19c5f52aeb16", + "last_modified": 1666727872784 + }, { "schema": 1666727400274, "derHash": "HMNYpt+gp2u1RwZg1487JfI8zWOVZn5JzPyCAdo9GS0=", @@ -19082,6 +16627,24 @@ "id": "1f394e59-5d02-4846-a6c1-db9ef28d0213", "last_modified": 1666727872042 }, + { + "schema": 1666727333802, + "derHash": "XEUjNNnJyaLqQsx3pxZeF5XunYTrcMt4S0fqnZKlgtk=", + "subject": "CN=Soluti CA - DV,O=SOLUTI - SOLUCOES EM NEGOCIOS INTELIGENTES S/A,C=BR", + "subjectDN": "MF8xCzAJBgNVBAYTAkJSMTcwNQYDVQQKEy5TT0xVVEkgLSBTT0xVQ09FUyBFTSBORUdPQ0lPUyBJTlRFTElHRU5URVMgUy9BMRcwFQYDVQQDEw5Tb2x1dGkgQ0EgLSBEVg==", + "whitelist": false, + "attachment": { + "hash": "8265936e7b87a7845ad3792c1bfbde5b8469f44276f048e773d7d306888e920a", + "size": 1756, + "filename": "kAzMeuwjUBWfPL5YEYfQG9qK_ABDxl0BMvPtzwEPN7E=.pem", + "location": "security-state-staging/intermediates/8d6429a5-772d-4666-be02-ba8282f7be70.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "kAzMeuwjUBWfPL5YEYfQG9qK/ABDxl0BMvPtzwEPN7E=", + "crlite_enrolled": false, + "id": "513590d9-2a18-481c-b691-bf785c25086b", + "last_modified": 1666727872015 + }, { "schema": 1666727379438, "derHash": "vLwYxGO2HzoDOxDHSXTtiiwyivzWejONmHFQajUVQZ8=", @@ -19298,6 +16861,24 @@ "id": "9bfb32bb-d95f-4440-a86b-01e4010249cf", "last_modified": 1666727871648 }, + { + "schema": 1666727391920, + "derHash": "Efukp+5XnHDh1X+fm2qMIJ4SGcTx04Rvg//OdOnl4s4=", + "subject": "CN=Soluti CA - EV,O=SOLUTI - SOLUCOES EM NEGOCIOS INTELIGENTES S/A,C=BR", + "subjectDN": "MF8xCzAJBgNVBAYTAkJSMTcwNQYDVQQKEy5TT0xVVEkgLSBTT0xVQ09FUyBFTSBORUdPQ0lPUyBJTlRFTElHRU5URVMgUy9BMRcwFQYDVQQDEw5Tb2x1dGkgQ0EgLSBFVg==", + "whitelist": false, + "attachment": { + "hash": "b45919819e02ad79724a514eaf858e77f666b1352e04efbd7b970ef878509a6a", + "size": 1776, + "filename": "Z6aApIGWlcMWZHFtBmP1FgZhyLKarTalSo0g5-EeG0U=.pem", + "location": "security-state-staging/intermediates/b2a82526-2d56-4d6f-82ed-ec715bf0fbe2.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "Z6aApIGWlcMWZHFtBmP1FgZhyLKarTalSo0g5+EeG0U=", + "crlite_enrolled": false, + "id": "2c989aad-c7f6-46c5-b0e4-6b645ccbe43f", + "last_modified": 1666727871621 + }, { "schema": 1666727333970, "derHash": "8RRGn7gHeBM6H3Dk2DOO2rl91CzrjswByvtw1rh98R4=", @@ -20018,6 +17599,24 @@ "id": "4a6655ab-9a9a-43db-bb34-1602419c8ed9", "last_modified": 1666727870728 }, + { + "schema": 1666727440773, + "derHash": "q3SxQRrSPiIn+4iiqTBKGkWlxIQLNjXxA2pG6DdCeaw=", + "subject": "CN=Soluti CA - OV,O=SOLUTI - SOLUCOES EM NEGOCIOS INTELIGENTES S/A,C=BR", + "subjectDN": "MF8xCzAJBgNVBAYTAkJSMTcwNQYDVQQKEy5TT0xVVEkgLSBTT0xVQ09FUyBFTSBORUdPQ0lPUyBJTlRFTElHRU5URVMgUy9BMRcwFQYDVQQDEw5Tb2x1dGkgQ0EgLSBPVg==", + "whitelist": false, + "attachment": { + "hash": "1289ff9c033377f8edc9f2ded9318205d7263d8c7040b70ff2db68630eaac699", + "size": 1776, + "filename": "rCbpz2JPbnICZtM69Lt2eclqdTss0Mj0Z4ejXMF1nD4=.pem", + "location": "security-state-staging/intermediates/1bbff038-8596-4d1c-aea4-d0a5730155a8.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "rCbpz2JPbnICZtM69Lt2eclqdTss0Mj0Z4ejXMF1nD4=", + "crlite_enrolled": false, + "id": "bd39f78d-03b0-4fc6-9992-3728009c0be9", + "last_modified": 1666727870647 + }, { "schema": 1666727420998, "derHash": "yAJfn8Zf38lbPKjMeGe5pYe1J3lzlXkXRj/IE9C2Jak=", @@ -20954,6 +18553,24 @@ "id": "d340c468-a715-4aa3-a149-c150973125ed", "last_modified": 1666727869444 }, + { + "schema": 1666727411011, + "derHash": "co2vQG/ans1NVV3BLyfWfW3kRSRpVGShIGaSAPILKEs=", + "subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT", + "subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex", + "whitelist": false, + "attachment": { + "hash": "ff3a99bc1b4b533a0133498e18b56144ddeaaae3dfb43cf3c18b178f16a864a6", + "size": 6127, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/f92cd274-a6c5-4692-89d8-bb79a6ff2229.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=", + "crlite_enrolled": false, + "id": "fbd44422-0d3b-47de-9e7b-2a8f647897eb", + "last_modified": 1666727869413 + }, { "schema": 1666727367726, "derHash": "N/0pxwHWl3mY8gUVPqikwumWNU3wctSYTcXYsfdaK2E=", @@ -20972,6 +18589,24 @@ "id": "47f9f4d2-4baa-40bb-9b5b-aa8cefeea36f", "last_modified": 1666727869399 }, + { + "schema": 1666727395775, + "derHash": "0HC/AZz7pGyNNBTW/o19IQd/NUXC/oOePSUPMk43xas=", + "subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT", + "subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex", + "whitelist": false, + "attachment": { + "hash": "acd4d6d8a473c1fc0d659c79901ef8ffbd4acdcd519a73233aa6ae62e6eafbda", + "size": 6208, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/995cf1f7-a18a-4753-a7dd-edadaef3dfe1.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=", + "crlite_enrolled": false, + "id": "d5a2518e-b5a8-4ddb-bf31-9b97ea3416f9", + "last_modified": 1666727869386 + }, { "schema": 1666727382024, "derHash": "lItxEa9C9UbVec/1ziveyCE03ZkUhCvdsMUocutgTjk=", @@ -20990,6 +18625,24 @@ "id": "6430f852-d358-4b1a-b2c9-577cf8cf4f97", "last_modified": 1666727869373 }, + { + "schema": 1666727357771, + "derHash": "knHKfojO0l7R0fjgivoDsR0f4S7RElWFraUBJD4srAk=", + "subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT", + "subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex", + "whitelist": false, + "attachment": { + "hash": "134d08513f86579b09ea4693ac4d3685f5fc88e012db239d7b017feecbf3f87e", + "size": 6306, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/f3792909-e805-46b5-a4d0-bb3979399b7b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=", + "crlite_enrolled": false, + "id": "07f2dc33-3379-48ad-b352-dc3a300c8197", + "last_modified": 1666727869330 + }, { "schema": 1666727444337, "derHash": "g5Tj0H780el+psuiFMOgVcF92afr+N3gAg/N23byhlM=", @@ -21044,6 +18697,24 @@ "id": "f18dd59f-ebc7-4e0d-9963-60e432ae1d44", "last_modified": 1666727869270 }, + { + "schema": 1666727413717, + "derHash": "YBjw3/qk1I9rNj29iVtD1yBpH5ZY49lAcn+xSZ1SUAU=", + "subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT", + "subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex", + "whitelist": false, + "attachment": { + "hash": "2ce5754aafd954d566863872c84b5b09cc520df3b7c3fcdf3f3109c176f7236f", + "size": 6204, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/71d7de8a-96d4-4d28-95c1-ddd904ad7b95.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=", + "crlite_enrolled": false, + "id": "f311d986-6d46-4d1e-87fe-52110484e044", + "last_modified": 1666727869243 + }, { "schema": 1666727453330, "derHash": "TpO8rdXU6VMxrjYt+cYGbMp/lCqP3k0+4BHeNAdPWEA=", @@ -21062,6 +18733,24 @@ "id": "31daf90c-ae6a-4df7-9505-d52c9abded80", "last_modified": 1666727869229 }, + { + "schema": 1666727368224, + "derHash": "RkiQCwQnJiirey2C3fdM1beNd/hlLVu/KCS7ZN0Xhlk=", + "subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT", + "subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex", + "whitelist": false, + "attachment": { + "hash": "db3cb445b73014519c03c7c1b234573a3cf1ba480f778be153e10d2069492dc1", + "size": 6383, + "filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem", + "location": "security-state-staging/intermediates/6f6d6bc0-5ac7-497e-b77d-50b85aeaad14.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=", + "crlite_enrolled": false, + "id": "ec340448-450e-44bb-9a1b-f58c6fa4661e", + "last_modified": 1666727869203 + }, { "schema": 1666727406308, "derHash": "mKDDuhiZJYWV0E8V0TTFcy6GS3VcZIpI0cF/CiYO9ac=", @@ -22538,6 +20227,24 @@ "id": "4627074c-5b10-4a84-93b4-b84a6d421f42", "last_modified": 1666727867498 }, + { + "schema": 1666727385276, + "derHash": "vbeqKPFk5LwV1pIHM7Ij7ZjlUiCj5W87Hs/QTofTC3E=", + "subject": "CN=InCommon ECC Server CA,OU=InCommon,O=Internet2,L=Ann Arbor,ST=MI,C=US", + "subjectDN": "MHYxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNSTESMBAGA1UEBxMJQW5uIEFyYm9yMRIwEAYDVQQKEwlJbnRlcm5ldDIxETAPBgNVBAsTCEluQ29tbW9uMR8wHQYDVQQDExZJbkNvbW1vbiBFQ0MgU2VydmVyIENB", + "whitelist": false, + "attachment": { + "hash": "6ba40ddb17a0c5e550d03cf27b415658441db787e87cc7efbaeacbe40e7954dd", + "size": 1293, + "filename": "8Ped1-_2NPqUB2Q-UJri8oBJaaIrldtkbw8LmkGTkrE=.pem", + "location": "security-state-staging/intermediates/b23bebad-6d65-4274-8012-f0cc243b967d.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "8Ped1+/2NPqUB2Q+UJri8oBJaaIrldtkbw8LmkGTkrE=", + "crlite_enrolled": false, + "id": "d876197d-e674-4e0b-8d72-41091e4b2fb3", + "last_modified": 1666727867454 + }, { "schema": 1666727366065, "derHash": "51WunELBMV8n3NBkUcar4LxqrW7dwuVjXPxJGBktNEw=", @@ -26084,6 +23791,24 @@ "id": "261d2a7a-7e13-4ffd-bf3e-4dbe09c11bc8", "last_modified": 1663786626447 }, + { + "schema": 1663786372899, + "derHash": "a+fQTiD/wo8ZjKiPwMNkR4T9FWkDvweBMPuWTAJY26A=", + "subject": "CN=United Parcel Service\\, Inc. RSA OV CA,O=United Parcel Service\\, Inc.,L=Atlanta,ST=GA,C=US", + "subjectDN": "MIGCMQswCQYDVQQGEwJVUzELMAkGA1UECBMCR0ExEDAOBgNVBAcTB0F0bGFudGExJDAiBgNVBAoTG1VuaXRlZCBQYXJjZWwgU2VydmljZSwgSW5jLjEuMCwGA1UEAxMlVW5pdGVkIFBhcmNlbCBTZXJ2aWNlLCBJbmMuIFJTQSBPViBDQQ==", + "whitelist": false, + "attachment": { + "hash": "5f2f917f15eb321eb42931857ac7ab983a47c6ee7bd3ae860d471c9af6b89cb5", + "size": 2142, + "filename": "SwXmbcFTOEV-82sxJhAl0R-uGVTqV9eWCnYAM12xQYs=.pem", + "location": "security-state-staging/intermediates/4ae82de2-f623-4295-9237-d34d5d6630b1.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "SwXmbcFTOEV+82sxJhAl0R+uGVTqV9eWCnYAM12xQYs=", + "crlite_enrolled": false, + "id": "b2a58c9b-ce5d-4635-94ac-0b3d767ad225", + "last_modified": 1663786626419 + }, { "schema": 1663786379170, "derHash": "X6SbNsctA+QtqkMCUA1kbJSMh6w27TDMPb3bviTGRjM=", @@ -28874,6 +26599,60 @@ "id": "cc20f2ed-b23f-45b9-b4f9-1aaffc1a93b7", "last_modified": 1656032223524 }, + { + "schema": 1655189537975, + "derHash": "Du8FvaeELqhdHZgSSV78VhKDuqkNFDHFed1h9+2SaaE=", + "subject": "CN=Viking Cloud Organization Validation CA\\, Level 1,O=Viking Cloud\\, Inc.,C=US", + "subjectDN": "MGUxCzAJBgNVBAYTAlVTMRswGQYDVQQKExJWaWtpbmcgQ2xvdWQsIEluYy4xOTA3BgNVBAMTMFZpa2luZyBDbG91ZCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMQ==", + "whitelist": false, + "attachment": { + "hash": "006d8c79464234dbd24dd5a3685784e0002a510529a17a45c586e2ffdbfabd36", + "size": 1605, + "filename": "unLMj_QBNe_Q7to-eIcm3DJAgrMoPWPkEwFZMsbRY7k=.pem", + "location": "security-state-staging/intermediates/6745493c-4ee2-43be-b7a9-f05026fe3760.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "unLMj/QBNe/Q7to+eIcm3DJAgrMoPWPkEwFZMsbRY7k=", + "crlite_enrolled": false, + "id": "e59c2c37-90bb-440b-8396-b716e868dd84", + "last_modified": 1655189822967 + }, + { + "schema": 1655189537137, + "derHash": "OGrZZdokgSAW7T8BHyES39WRaT2r6z0OYbEUX1+dEhc=", + "subject": "CN=Viking Cloud Domain Validation CA\\, Level 1,O=Viking Cloud\\, Inc.,C=US", + "subjectDN": "MF8xCzAJBgNVBAYTAlVTMRswGQYDVQQKExJWaWtpbmcgQ2xvdWQsIEluYy4xMzAxBgNVBAMTKlZpa2luZyBDbG91ZCBEb21haW4gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMQ==", + "whitelist": false, + "attachment": { + "hash": "098935eae4896b90a68d29bc952ccfd67b8c3dd84203ffcb2ac77db9abae8adb", + "size": 1585, + "filename": "junHeKNTWfpbz93WVSLN_XeDp-DEZkJSqMzt00XxYBA=.pem", + "location": "security-state-staging/intermediates/482b11d7-dab4-4f06-8578-b1e78997ed3a.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "junHeKNTWfpbz93WVSLN/XeDp+DEZkJSqMzt00XxYBA=", + "crlite_enrolled": false, + "id": "459a3e96-9edd-4b67-a702-416676d676b7", + "last_modified": 1655189822960 + }, + { + "schema": 1655189536211, + "derHash": "ELYI5T4PP0RDKjK5Bs11MAFzasi/6Q7ToIR98oXi2Xc=", + "subject": "CN=Viking Cloud Extended Validation CA\\, Level 1,O=Viking Cloud\\, Inc.,C=US", + "subjectDN": "MGExCzAJBgNVBAYTAlVTMRswGQYDVQQKExJWaWtpbmcgQ2xvdWQsIEluYy4xNTAzBgNVBAMTLFZpa2luZyBDbG91ZCBFeHRlbmRlZCBWYWxpZGF0aW9uIENBLCBMZXZlbCAx", + "whitelist": false, + "attachment": { + "hash": "6ec99683dce9696b64633a066f22f6b0706a0ecb071f4e7b9410380d74da608c", + "size": 1601, + "filename": "iaX3F_DBxteIvZKYoTUXBd_2bVXGONmIkaeGjVNPR2w=.pem", + "location": "security-state-staging/intermediates/df82cc9d-4f57-40e8-af0e-c60132ffa421.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "iaX3F/DBxteIvZKYoTUXBd/2bVXGONmIkaeGjVNPR2w=", + "crlite_enrolled": false, + "id": "0f04579c-51bb-474a-b50c-f4fb19248d2b", + "last_modified": 1655189822953 + }, { "schema": 1654825724896, "derHash": "WVPN/qO+2zfjDeiJw/bQbgAHUqMF4OD8b1RP7iSLMlo=", @@ -29000,6 +26779,24 @@ "id": "90e8d1ea-a147-43dc-b502-164677314799", "last_modified": 1654804623143 }, + { + "schema": 1652539714356, + "derHash": "NyuPTOc77fyIcYxAe7az5tj5p5vpVxkNDnEBx7DvmjI=", + "subject": "CN=NetLock Expressz (Class C) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU", + "subjectDN": "MIGqMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE4MDYGA1UEAwwvTmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFuw7pzw610dsOhbnlraWFkw7M=", + "whitelist": false, + "attachment": { + "hash": "96ba448b3b21c633bd5e293f4383a8b88b67e802476a48d48ba20ffa8359a5ce", + "size": 2182, + "filename": "KS2adY6eMaWNhbLW6JREO3Oo34Qy_UvmA5f-f4ROpYw=.pem", + "location": "security-state-staging/intermediates/6380c544-10af-435b-ae2d-adad842694a3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "KS2adY6eMaWNhbLW6JREO3Oo34Qy/UvmA5f+f4ROpYw=", + "crlite_enrolled": false, + "id": "522256d0-e9e9-44e9-b35d-221ddf453cad", + "last_modified": 1652540238996 + }, { "schema": 1651243731947, "derHash": "UscwCUvRr5jslRBbbVjwm78ICoZh/vA8Xn4xwccao54=", @@ -29198,6 +26995,24 @@ "id": "cfdbbcaf-8ad7-44df-988e-6b0c1d3a6ef0", "last_modified": 1650920239252 }, + { + "schema": 1650919756111, + "derHash": "uCIQzend6g4UvimvZH5LMvlu0qnvGqW6qcxks4tsAco=", + "subject": "OU=AC RAIZ FNMT-RCM,O=FNMT-RCM,C=ES", + "subjectDN": "MDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTQ==", + "whitelist": false, + "attachment": { + "hash": "dda828b4a97c8a8f24d378bef318af5d144be4d873ff73ba3f07303c1c298e49", + "size": 1971, + "filename": "L8VmekuaJnjtasatJUZfy_YJS_zZUECXx6j6R63l6Ig=.pem", + "location": "security-state-staging/intermediates/c8065d4f-f7f0-4e26-aa22-7e982bf06bba.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "L8VmekuaJnjtasatJUZfy/YJS/zZUECXx6j6R63l6Ig=", + "crlite_enrolled": false, + "id": "752044c7-55ec-4fd9-a0fa-6bd6b3db2f27", + "last_modified": 1650920239183 + }, { "schema": 1650919749373, "derHash": "VD2bf8KmRxzYT8pSws9hWd+D6/zYjYsIta8/iHN/UuY=", @@ -29576,6 +27391,24 @@ "id": "2dea51d4-7fea-4eb2-a507-7fa4ef9b5e26", "last_modified": 1646513861656 }, + { + "schema": 1645577291579, + "derHash": "GKvW6cqQe7NnVNDARuu1Ddm5XVJ4JNlYGjG3UPz9uu8=", + "subject": "CN=Trustwave Global ECDSA P-256 Organization Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGgMUkwRwYDVQQDE0BUcnVzdHdhdmUgR2xvYmFsIEVDRFNBIFAtMjU2IE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUw==", + "whitelist": false, + "attachment": { + "hash": "f16bdfde574887cdf9b20fdd1a1ad5e789c2d8b5094a68dc63225d64c51f2d50", + "size": 1329, + "filename": "lZMwN7CwdUNqVdEULuLxoCtwEIC9qGjWWMelIDRtDNU=.pem", + "location": "security-state-staging/intermediates/f98637f3-11ed-494f-aad4-f51ad1b477b3.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "lZMwN7CwdUNqVdEULuLxoCtwEIC9qGjWWMelIDRtDNU=", + "crlite_enrolled": false, + "id": "016e2b15-da30-4cb5-bab8-4f10f76d1605", + "last_modified": 1645578269083 + }, { "schema": 1645577292935, "derHash": "fixTc5fnuNmyTYfzBMluoFekB84R0LZtmbpLiiK7EWc=", @@ -29612,6 +27445,24 @@ "id": "83e46e54-0c13-4858-814f-2640b229bd01", "last_modified": 1645578269031 }, + { + "schema": 1645577313138, + "derHash": "h9QhabJpNVHKIFzPF/BvbmZR9yGM1tJmB79bpN0vJvI=", + "subject": "CN=Trustwave Global ECDSA P-384 Organization Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGgMUkwRwYDVQQDE0BUcnVzdHdhdmUgR2xvYmFsIEVDRFNBIFAtMzg0IE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUw==", + "whitelist": false, + "attachment": { + "hash": "8cd0dbed89841d6b6854301f7eecbbdcd40ac73d8c8347c1ea8a577a05c10603", + "size": 1410, + "filename": "91i1mhKwhcz0SKoJ9CzM_9ohVagG6cKG9Z_i4Ts1FFk=.pem", + "location": "security-state-staging/intermediates/cff3b717-e049-4d5a-b487-ceec8ee7788d.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "91i1mhKwhcz0SKoJ9CzM/9ohVagG6cKG9Z/i4Ts1FFk=", + "crlite_enrolled": false, + "id": "d8f2f8d9-847b-449d-bb14-d59326e690d7", + "last_modified": 1645578268916 + }, { "schema": 1645577327799, "derHash": "kfGc5QPJ/n/5WH2O++9zFarud9wtFFJhJkk7Stb+gB8=", @@ -29630,6 +27481,24 @@ "id": "3a455bca-8194-4d00-928c-1fc33a8869f5", "last_modified": 1645578268786 }, + { + "schema": 1645577339845, + "derHash": "ttVvPdJqyETlfIv+kFT1cGE1CpCJS5nNmBHppUX8hMU=", + "subject": "CN=SwissSign RSA SMIME Root CA 2021 - 1,O=SwissSign AG,C=CH", + "subjectDN": "MFMxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxLTArBgNVBAMTJFN3aXNzU2lnbiBSU0EgU01JTUUgUm9vdCBDQSAyMDIxIC0gMQ==", + "whitelist": false, + "attachment": { + "hash": "7644498aff67a69e26a420c7e76e4649ead3a8bb2f20c592db5c9cd2b4412601", + "size": 1991, + "filename": "HKpRHDLoh8f2rEFEWyjA0ZeopKTbs4zV87Xess-HD4U=.pem", + "location": "security-state-staging/intermediates/d4bebbe8-5c5d-4a42-9a8c-6b64a9a76314.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "HKpRHDLoh8f2rEFEWyjA0ZeopKTbs4zV87Xess+HD4U=", + "crlite_enrolled": false, + "id": "303a3d11-64e5-4b50-83d5-660aa76829be", + "last_modified": 1645578268688 + }, { "schema": 1645577343844, "derHash": "2+LWPb33b3G6YxNU4W7JfBbgFnkqo7nMnSjFgsrUick=", @@ -29666,6 +27535,60 @@ "id": "33b42f4a-4bff-4abf-b03a-d77a07dfc454", "last_modified": 1645578268393 }, + { + "schema": 1645577379076, + "derHash": "LmPcG+z0J/mQK0neYzD9Po7r+IsU5lOzui431OSICWU=", + "subject": "CN=Trustwave Global Organization Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGUMT0wOwYDVQQDEzRUcnVzdHdhdmUgR2xvYmFsIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUw==", + "whitelist": false, + "attachment": { + "hash": "9d9bb0ca6a8a59110e9ecd8714e94894e0be5886e46f9c4e5265ffa83dcece40", + "size": 2519, + "filename": "z4qrcPL95VQXuiBgseJjj0x2uKXj6NQcTxtcnoGWFyk=.pem", + "location": "security-state-staging/intermediates/8771cde1-4865-436b-bb56-6604a726f4bc.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "z4qrcPL95VQXuiBgseJjj0x2uKXj6NQcTxtcnoGWFyk=", + "crlite_enrolled": false, + "id": "42a123e8-d13a-40c4-8e1c-70f3ac954774", + "last_modified": 1645578268382 + }, + { + "schema": 1645577384467, + "derHash": "KfjhBN845hK/T1BTZbXQsLIN1OickIMGSE64N0weZtg=", + "subject": "CN=Trustwave Global ECDSA P-384 Extended Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGcMUUwQwYDVQQDEzxUcnVzdHdhdmUgR2xvYmFsIEVDRFNBIFAtMzg0IEV4dGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjEQMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT", + "whitelist": false, + "attachment": { + "hash": "53f8122b5a0fa5136d24ba312f1f8c41061bd774427e22f6d2a5e4fababcd5ea", + "size": 1406, + "filename": "dzssfumpi3rcJekwfVNUyE16SoxSUQ6SRbv3ubi21iE=.pem", + "location": "security-state-staging/intermediates/4704d8d9-40ac-48ab-a268-592fab67683c.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "dzssfumpi3rcJekwfVNUyE16SoxSUQ6SRbv3ubi21iE=", + "crlite_enrolled": false, + "id": "be725aa6-a968-4291-bcd7-93ee080e586d", + "last_modified": 1645578268342 + }, + { + "schema": 1645577387026, + "derHash": "Z4LG6a2/khbiaDBtRjM/vGdL3t+GtnvndweeLA42iI4=", + "subject": "CN=Trustwave Global Domain Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGOMTcwNQYDVQQDEy5UcnVzdHdhdmUgR2xvYmFsIERvbWFpbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUw==", + "whitelist": false, + "attachment": { + "hash": "a1aae690e4bc653bc8dd049d0014c8bdf294c1327ae51c6f40d11e8b728cdee3", + "size": 2499, + "filename": "N8k0xQNnFdJBZpSXQ6W9OldaDSJ59X-kFQNRrNSN8Cw=.pem", + "location": "security-state-staging/intermediates/18b0f7cb-0da9-422a-b8b0-edf3ba36821b.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "N8k0xQNnFdJBZpSXQ6W9OldaDSJ59X+kFQNRrNSN8Cw=", + "crlite_enrolled": false, + "id": "d477a580-6e24-46a9-a2c7-4c09077650a5", + "last_modified": 1645578268322 + }, { "schema": 1645577388356, "derHash": "Nk3yXMiPb7AgLALNm46gLf6KwCNB7/Wp3/xb4VntWZE=", @@ -29702,6 +27625,24 @@ "id": "c84acf1d-eee2-4a4b-9797-e68042bc1ed6", "last_modified": 1645578268229 }, + { + "schema": 1645577412454, + "derHash": "GGJqO3IREo1WNGnGVFV9E8k2bX/OyLlNtPCqfgWUQEE=", + "subject": "CN=Trustwave Global Extended Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGQMTkwNwYDVQQDEzBUcnVzdHdhdmUgR2xvYmFsIEV4dGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjEQMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT", + "whitelist": false, + "attachment": { + "hash": "4e61dd89fb06d5da14f5a4b0f7a2328cd7ab2dea6544a50ea59b3e7d59167e32", + "size": 2515, + "filename": "V3f1xGezL0zYaRJqAhBzSKsvj3vEMlp9KGBwnV4be38=.pem", + "location": "security-state-staging/intermediates/01a8f648-ea7e-430b-a212-50aaa75a5e54.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "V3f1xGezL0zYaRJqAhBzSKsvj3vEMlp9KGBwnV4be38=", + "crlite_enrolled": false, + "id": "f5515d37-9357-413c-a858-036df41b70fd", + "last_modified": 1645578268128 + }, { "schema": 1645577420440, "derHash": "gpj8QnBMTtd0tNsxBSkmC1JKkHUlKh0Ks44G8bmoNJk=", @@ -29936,6 +27877,24 @@ "id": "ec1245af-ec52-405d-8a7f-67e52e819d5b", "last_modified": 1645578266982 }, + { + "schema": 1645577572043, + "derHash": "J1vwBG4CcBeLE7Z+TbFQoQGXy3H5oGH602s9dmOf4YY=", + "subject": "CN=Trustwave Global ECDSA P-256 Extended Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGcMUUwQwYDVQQDEzxUcnVzdHdhdmUgR2xvYmFsIEVDRFNBIFAtMjU2IEV4dGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjEQMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT", + "whitelist": false, + "attachment": { + "hash": "b39b1eb52f8d651482f3d14bd9a033de3982f3cc3fa825ba761d2fefa3a11981", + "size": 1325, + "filename": "YzpgcYxSKDnEVZ3T3h2obh9WsI9ICItWbAqh4SyCprA=.pem", + "location": "security-state-staging/intermediates/e8727b1e-db90-43a1-896d-acfa3849475f.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "YzpgcYxSKDnEVZ3T3h2obh9WsI9ICItWbAqh4SyCprA=", + "crlite_enrolled": false, + "id": "327d0c33-3441-43da-a81a-797c08caae1b", + "last_modified": 1645578266923 + }, { "schema": 1645577573413, "derHash": "UOJ/kOtq9JWw5u62VcyJREwn08lbaCP6AqvclfFjauE=", @@ -29954,6 +27913,24 @@ "id": "fcef12c5-b871-4941-ab0c-8348d333a4e4", "last_modified": 1645578266913 }, + { + "schema": 1645577577654, + "derHash": "9i41qtNF+yU4Y8/A5lgjrNPn8IRtGbgybXCceRmiLX4=", + "subject": "CN=Trustwave Global ECDSA P-256 Domain Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGaMUMwQQYDVQQDEzpUcnVzdHdhdmUgR2xvYmFsIEVDRFNBIFAtMjU2IERvbWFpbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUw==", + "whitelist": false, + "attachment": { + "hash": "ce8879da72592af4bbeefb13d2c925ca1eed8e33ca17d960a29ad9ae0835124d", + "size": 1305, + "filename": "a-5FBlZcydYwIUikW5fVH6MjJzVRhdPbb586imNLagE=.pem", + "location": "security-state-staging/intermediates/62d82876-f314-4cd8-b5af-54a36e786129.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "a+5FBlZcydYwIUikW5fVH6MjJzVRhdPbb586imNLagE=", + "crlite_enrolled": false, + "id": "d5bf85e2-a4bf-45b9-9b11-ab887c49e96d", + "last_modified": 1645578266884 + }, { "schema": 1645577581818, "derHash": "BrtWd3HEJpFMGaY47cGACPWQG5KBSpd0v+iBW6t+puk=", @@ -30026,6 +28003,24 @@ "id": "d4e5f3f5-705e-4bbd-a60d-297d4ab5c2cd", "last_modified": 1645578266606 }, + { + "schema": 1645577615835, + "derHash": "xj35YY+69IZiuhKr6HshLPd3wnpEag+lVdep0ZEUjtc=", + "subject": "CN=Trustwave Global ECDSA P-384 Domain Validation CA\\, Level 1,O=Trustwave Holdings\\, Inc.,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGaMUMwQQYDVQQDEzpUcnVzdHdhdmUgR2xvYmFsIEVDRFNBIFAtMzg0IERvbWFpbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUw==", + "whitelist": false, + "attachment": { + "hash": "e81cc0a883e6e41a009a5d876bc62528cd6b26b1edd7421071b6ff434dca6265", + "size": 1390, + "filename": "NIbNiw79lRjCX7hAKe6oYePjjaaAQ9l_zvmwptYjCgg=.pem", + "location": "security-state-staging/intermediates/805d4e01-06d3-4cd4-9e90-5d413167243c.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "NIbNiw79lRjCX7hAKe6oYePjjaaAQ9l/zvmwptYjCgg=", + "crlite_enrolled": false, + "id": "15c61ec9-5b89-4812-8240-d6bf15fa38dd", + "last_modified": 1645578266596 + }, { "schema": 1645577625212, "derHash": "Euom9u7v7HarhZJUVAOriFFbAOJ12YiHE0B6hvxcf9c=", @@ -31214,6 +29209,24 @@ "id": "60de9866-3e99-4374-b830-17ad74f56f75", "last_modified": 1576536533289 }, + { + "schema": 1576535711746, + "derHash": "k1BhvlLI6ojANLOa39UiuzFMv1ME5acGRzXdvaMkKq8=", + "subject": "CN=Certigna Entity Code Signing CA,OU=0002 48146308100036,O=DHIMYOTIS,C=FR", + "subjectDN": "MIGIMQswCQYDVQQGEwJGUjESMBAGA1UECgwJREhJTVlPVElTMRwwGgYDVQQLDBMwMDAyIDQ4MTQ2MzA4MTAwMDM2MR0wGwYDVQRhDBROVFJGUi00ODE0NjMwODEwMDAzNjEoMCYGA1UEAwwfQ2VydGlnbmEgRW50aXR5IENvZGUgU2lnbmluZyBDQQ==", + "whitelist": false, + "attachment": { + "hash": "dfa52fac8680622c2c208aa337be1f107052398f893cb8cdaa1bc8ee0c3c1f93", + "size": 2186, + "filename": "u3ZvFIlkZqOQDQbj9Abh3WXDOESr4pASOdoob9Oo2YI=.pem", + "location": "security-state-staging/intermediates/a34d09dc-c1e9-4b35-bb0f-0c7ee3e64ad8.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "u3ZvFIlkZqOQDQbj9Abh3WXDOESr4pASOdoob9Oo2YI=", + "crlite_enrolled": false, + "id": "90283279-5bef-4526-8705-37883c1dc2bc", + "last_modified": 1576536533281 + }, { "schema": 1576535685544, "derHash": "Rcsdh0ywO9XFtuB5yPwp5RUh7lYoSGMBlkpB+Uuln4g=", @@ -31754,6 +29767,24 @@ "id": "16682234-e483-4e72-9b5a-9a6efd36c796", "last_modified": 1562108393755 }, + { + "schema": 1562108349322, + "derHash": "XmCWWARGGTCsJ7bb40RWeerkExwir7iK96z2oZF7Wro=", + "subject": "CN=SecureTrust Domain Validation CA\\, Level 1,O=SecureTrust,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MHwxMjAwBgNVBAMTKVNlY3VyZVRydXN0IERvbWFpbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMRQwEgYDVQQKEwtTZWN1cmVUcnVzdDEQMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT", + "whitelist": false, + "attachment": { + "hash": "808680a0c2b3da12440074c2cecf8ba7b7a50796c469c901bf2bae7963658f5d", + "size": 1618, + "filename": "3MJ7kgH4AG-ip6CMzIBTeYe9X-9dSxFjCbnEIuYJlWA=.pem", + "location": "security-state-staging/intermediates/cfd0f4ac-b77c-4563-aeb5-243676326507.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "3MJ7kgH4AG+ip6CMzIBTeYe9X+9dSxFjCbnEIuYJlWA=", + "crlite_enrolled": false, + "id": "9bc337d9-2ebf-4b9a-a405-087a0a528af3", + "last_modified": 1562108350078 + }, { "schema": 1562108339272, "derHash": "GPzgkvo93kVUIjrnmwxJmiD0EUw2MHnSPY6v3JZzk2k=", @@ -32474,6 +30505,24 @@ "id": "b84bfc47-4590-4d6c-b85e-ceb5465f3c63", "last_modified": 1562023857605 }, + { + "schema": 1562023819546, + "derHash": "u2YddQxTFmGBgHpomP1GQGXOWSmJhq1m2db//LvUc4o=", + "subject": "CN=NetLock Expressz Eat. (Class C Legal) Tanúsítványkiadó,OU=Tanúsítványkiadók (Certification Services),O=NetLock Kft.,L=Budapest,C=HU", + "subjectDN": "MIG1MQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTFDMEEGA1UEAww6TmV0TG9jayBFeHByZXNzeiBFYXQuIChDbGFzcyBDIExlZ2FsKSBUYW7DunPDrXR2w6FueWtpYWTDsw==", + "whitelist": false, + "attachment": { + "hash": "cf7c4f8886152f1548287e1f1314115b3db7ea5a596a43daa585a1a0e2f9e79c", + "size": 2198, + "filename": "-QUSW1ozNhu9biYeUP4qycv4BLZu3JGAci7jNGIo4PI=.pem", + "location": "security-state-staging/intermediates/408172d6-6f39-4e21-9ed3-d79b6dd424a4.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "+QUSW1ozNhu9biYeUP4qycv4BLZu3JGAci7jNGIo4PI=", + "crlite_enrolled": false, + "id": "9ccfdb3e-9fe2-4d0c-a088-5e0ba1450d2e", + "last_modified": 1562023820285 + }, { "schema": 1559867684823, "derHash": "9nIr5ErNrltaizsLSvn0v15fvDlhz1JsvZdp0cbhSFk=", @@ -32528,6 +30577,42 @@ "id": "312fdb56-c1ae-466b-92aa-cce0b03303a3", "last_modified": 1559867029341 }, + { + "schema": 1559866984705, + "derHash": "EdkzDRojmFCN1Q0wlOsosbRJANmSj4wisl73p4G9tAM=", + "subject": "CN=SecureTrust Organization Validation CA\\, Level 1,O=SecureTrust,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MIGCMTgwNgYDVQQDEy9TZWN1cmVUcnVzdCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUw==", + "whitelist": false, + "attachment": { + "hash": "2fbb26d89a7df4499089ee4d2d7d54042f375261e865316c51caa6ea3d367c5f", + "size": 1642, + "filename": "naxobvdvRxrUbxomHwj81l5L4m0vZobqUIuxo5hwUQY=.pem", + "location": "security-state-staging/intermediates/db3a6f95-518e-4c87-a822-e3be67b873a0.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "naxobvdvRxrUbxomHwj81l5L4m0vZobqUIuxo5hwUQY=", + "crlite_enrolled": false, + "id": "0446d2af-40a8-49d1-b3fe-9e83881afe72", + "last_modified": 1559866985488 + }, + { + "schema": 1559866972593, + "derHash": "3SM1XGHVmXBCMARyl5XK73ev2zl2enlXQNTgTLYVipk=", + "subject": "CN=SecureTrust Extended Validation CA\\, Level 1,O=SecureTrust,L=Chicago,ST=Illinois,C=US", + "subjectDN": "MH4xNDAyBgNVBAMTK1NlY3VyZVRydXN0IEV4dGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExFDASBgNVBAoTC1NlY3VyZVRydXN0MRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVM=", + "whitelist": false, + "attachment": { + "hash": "d0105c5ecad0b2ab41480518899e2653e240f06b4a8927ca3d5283c60f63c72e", + "size": 1634, + "filename": "DfrsmfuM5QjUozBeqZ75qybJwEDwRIG64DTyM3Kx5Wg=.pem", + "location": "security-state-staging/intermediates/b46f9bc3-cb55-4302-b52b-e519808c0128.pem", + "mimetype": "application/x-pem-file" + }, + "pubKeyHash": "DfrsmfuM5QjUozBeqZ75qybJwEDwRIG64DTyM3Kx5Wg=", + "crlite_enrolled": false, + "id": "110bade2-6494-40e6-869c-71f45a348718", + "last_modified": 1559866973381 + }, { "schema": 1559866925659, "derHash": "PUUR0KgKqUmm2ZslOhc0cXl8RFkYemMp5zbDfLVJPkY=", @@ -32583,5 +30668,5 @@ "last_modified": 1559865884636 } ], - "timestamp": 1775836622756 + "timestamp": 1764082622611 } diff --git a/icecat/services/settings/dumps/security-state/onecrl.json b/icecat/services/settings/dumps/security-state/onecrl.json index 2553a8dfe0..9e190deca5 100644 --- a/icecat/services/settings/dumps/security-state/onecrl.json +++ b/icecat/services/settings/dumps/security-state/onecrl.json @@ -1,995 +1,5 @@ { "data": [ - { - "schema": 1773334942432, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2022912", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "ME0xCzAJBgNVBAYTAkNOMREwDwYDVQQKEwhVbmlUcnVzdDErMCkGA1UEAxMiVW5pVHJ1c3QgR2xvYmFsIFRMUyBSU0EgUm9vdCBDQSBSMQ==", - "serialNumber": "al735VviUH4QdUeyT9xDUA==", - "id": "6eea1b20-43fc-43a1-b2c7-c8aa04322194", - "last_modified": 1774556199388 - }, - { - "schema": 1773334942363, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2022912", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "ME0xCzAJBgNVBAYTAkNOMREwDwYDVQQKEwhVbmlUcnVzdDErMCkGA1UEAxMiVW5pVHJ1c3QgR2xvYmFsIFRMUyBFQ0MgUm9vdCBDQSBSMg==", - "serialNumber": "d1PLgIujvMDZUu8CSN8p1w==", - "id": "49be7e0c-8bdb-4892-b80f-c48e8930f6a5", - "last_modified": 1774556199385 - }, - { - "schema": 1773334942292, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2022912", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "ME0xCzAJBgNVBAYTAkNOMREwDwYDVQQKEwhVbmlUcnVzdDErMCkGA1UEAxMiVW5pVHJ1c3QgR2xvYmFsIFRMUyBSU0EgUm9vdCBDQSBSMQ==", - "serialNumber": "KwA3PBmKPkXTYMbiw/N+2Q==", - "id": "fbd21948-1fb9-42e2-a7cf-9dd3a9c66832", - "last_modified": 1774556199382 - }, - { - "schema": 1773334942222, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2022912", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "ME0xCzAJBgNVBAYTAkNOMREwDwYDVQQKEwhVbmlUcnVzdDErMCkGA1UEAxMiVW5pVHJ1c3QgR2xvYmFsIFRMUyBFQ0MgUm9vdCBDQSBSMg==", - "serialNumber": "QSesyhEsgEJJ7ytP0Grw4w==", - "id": "5aee5cda-d283-465d-9b63-d03824d9afef", - "last_modified": 1774556199379 - }, - { - "schema": 1773334942153, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2022912", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "ME0xCzAJBgNVBAYTAkNOMREwDwYDVQQKEwhVbmlUcnVzdDErMCkGA1UEAxMiVW5pVHJ1c3QgR2xvYmFsIFRMUyBFQ0MgUm9vdCBDQSBSMg==", - "serialNumber": "X+CO4UV3HELJrdgoOeqoPg==", - "id": "1ea836d8-ae1a-4d4d-9ec8-c3ef4fd75011", - "last_modified": 1774556199375 - }, - { - "schema": 1773176482723, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2022912", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "ME0xCzAJBgNVBAYTAkNOMREwDwYDVQQKEwhVbmlUcnVzdDErMCkGA1UEAxMiVW5pVHJ1c3QgR2xvYmFsIFRMUyBSU0EgUm9vdCBDQSBSMQ==", - "serialNumber": "Rz7QaUBcRh0/yc2BLpIg6Q==", - "id": "1a8a8a84-806b-45d9-8da8-61cbb0f7429e", - "last_modified": 1774556199371 - }, - { - "schema": 1772730084371, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "B2ucg6b4FtsH3oHvdda6+OqAPQ==", - "id": "3fa5d871-aa9d-46a7-899b-f82772627720", - "last_modified": 1773176482130 - }, - { - "schema": 1772730084235, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "B2ucg6JA/oqzDY6JXR9EfRaZDg==", - "id": "28cefc70-9de5-4a09-831e-81729c16eaef", - "last_modified": 1773176482127 - }, - { - "schema": 1772730084172, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2ai1fBBIQ5lNrNeeKGM+Xw==", - "id": "29a2171a-a9fd-4402-9131-8ba059b838fe", - "last_modified": 1773176482124 - }, - { - "schema": 1772730083536, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcy", - "serialNumber": "AaZld+J1VXXU7dpfBudB0Q==", - "id": "e89735d3-60f0-4dad-a636-f8ac92c09447", - "last_modified": 1773176482121 - }, - { - "schema": 1772730083979, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7PRWyar3Jx5b6bomzyYxNQ==", - "id": "a7dca5ea-9f6c-46bf-beea-a5f8483c815a", - "last_modified": 1773176482118 - }, - { - "schema": 1772730084107, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0Ex", - "serialNumber": "Ha+qSSooDU1v+mrd/Ps6Gg==", - "id": "ba8531f9-89b2-4752-8cdd-e652ae13515f", - "last_modified": 1773176482115 - }, - { - "schema": 1772730083468, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "B2ucg6SsqK9YHL7yMsrRQqc1GQ==", - "id": "37512d33-c7ee-4e76-842a-5cde60b43fbc", - "last_modified": 1773176482112 - }, - { - "schema": 1772730084043, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2Z+zsYDCgQIDFKLRx2QAFw==", - "id": "fe12c8a4-8b90-4ce5-9b4d-15edbf96968f", - "last_modified": 1773176482109 - }, - { - "schema": 1772730083400, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7O/uJ1d8GqOmKIhygAmWPg==", - "id": "888b9cf5-39f5-40f6-9cea-f5ebda9c85cd", - "last_modified": 1773176482106 - }, - { - "schema": 1772730083916, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "BvHsAOMeRtNBsrJjPOSA2RX4HQ==", - "id": "cd5f9d79-2c1a-4b94-a911-db6d9bc22263", - "last_modified": 1773176482103 - }, - { - "schema": 1772730083274, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "B86XxXooxXtcn/xT/mnoY524cg==", - "id": "4eb0fa0a-a4e7-45d2-8916-5c0127fd7a31", - "last_modified": 1773176482100 - }, - { - "schema": 1772730083852, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcy", - "serialNumber": "DEC5yVgiSzQckSw0xXQhNQ==", - "id": "5cb98242-a42f-4330-be2b-b823f4fae484", - "last_modified": 1773176482096 - }, - { - "schema": 1772730083209, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7Prm7+p972ff2sCVlVPUfA==", - "id": "89a9e73b-4a87-4893-abbc-4cd2e8c8a508", - "last_modified": 1773176482093 - }, - { - "schema": 1772730083787, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2a9TFCOEe4X7Z3kyqvgFCA==", - "id": "4907e686-3539-4055-9179-81bbafc03fbb", - "last_modified": 1773176482090 - }, - { - "schema": 1772730083144, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "B+4kqcRFi595vPmAiJZZh4Kkcg==", - "id": "2cad0147-dec1-4262-9aba-dd6e3e48ad4b", - "last_modified": 1773176482087 - }, - { - "schema": 1772730083725, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7PjVv/k+7JORqA0kmUxDeg==", - "id": "f2f98999-bc8d-4f4a-97e8-16cd5150e81e", - "last_modified": 1773176482084 - }, - { - "schema": 1772730083077, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7PV/OGPYzIdBnLffScEImA==", - "id": "f60986ba-3fc7-467b-8256-4569b880603d", - "last_modified": 1773176482082 - }, - { - "schema": 1772730083663, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2bB6F8xTdhV4EziaKTCkSg==", - "id": "e2e8794a-865c-4291-9831-945b7ae1e9b9", - "last_modified": 1773176482079 - }, - { - "schema": 1772730083009, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7QVJ20Qy+V6LoDydeERuqQ==", - "id": "399bbccf-127e-4b3a-a2d2-90d570892b2f", - "last_modified": 1773176482076 - }, - { - "schema": 1772730083600, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290", - "serialNumber": "Ys78cA/jymCz1R/xYtykAA==", - "id": "30ef4ced-a185-41f5-b7cd-e3fbd3bb9f73", - "last_modified": 1773176482073 - }, - { - "schema": 1772730082942, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2anY4pg375C+r1ncZVG+1g==", - "id": "a85d7da0-0ef1-43fd-aa5f-7068bef78517", - "last_modified": 1773176482070 - }, - { - "schema": 1772730082881, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2aIKN5fNh46z2qQdCGgK9w==", - "id": "3912ff98-0da1-4ed0-b9a0-9c9198ff0a80", - "last_modified": 1773176482067 - }, - { - "schema": 1772730082813, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7QH6L6w4jtEcBFFJWRzYCQ==", - "id": "76ebc3a1-a492-436a-9667-0060417cb04e", - "last_modified": 1773176482065 - }, - { - "schema": 1772730082747, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEoxCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlJZGVuVHJ1c3QxJzAlBgNVBAMTHklkZW5UcnVzdCBDb21tZXJjaWFsIFJvb3QgQ0EgMQ==", - "serialNumber": "QAGb/EhCgjTt7kyZ4DVwcw==", - "id": "5bfe446a-3b07-4528-9947-6c71309e0f77", - "last_modified": 1773176482062 - }, - { - "schema": 1772730082110, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2a0wRlzyJpfyRrEB7JKVOw==", - "id": "9e561212-efd1-49b4-bf0a-c2e3518726cc", - "last_modified": 1773176482059 - }, - { - "schema": 1772730083337, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEoxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEZMBcGA1UEAxMQU2VjdXJlIEdsb2JhbCBDQQ==", - "serialNumber": "B84Y7QvRKaXPdVB+mseTZiYMsQ==", - "id": "9f6a92d5-b5a5-4bad-8d18-d5724e3f2f70", - "last_modified": 1773176482057 - }, - { - "schema": 1772730082683, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7QDUWFev7Z5AOBgKway6Dw==", - "id": "60b74d69-6af4-46ce-af19-8fb738924bf0", - "last_modified": 1773176482054 - }, - { - "schema": 1772730082619, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjg=", - "serialNumber": "KVRY2r9KOuPj9KiZnUi1+w==", - "id": "63ba0051-999e-4c2b-97f3-2722e3edc251", - "last_modified": 1773176482051 - }, - { - "schema": 1772730081976, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcy", - "serialNumber": "DqtytilGRQxi3mksgmUEig==", - "id": "19d0daab-b90e-4c87-b58f-491329aa7a37", - "last_modified": 1773176482048 - }, - { - "schema": 1772730082555, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2aaXA67+XTfRiFjHQCawBA==", - "id": "2bdd7f09-b7dc-4330-889e-fbe14a40de0d", - "last_modified": 1773176482046 - }, - { - "schema": 1772730081912, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "BvHsAOgLG6+YcKfEtsvkAaMtaA==", - "id": "4ff1a4c7-881a-4157-b174-2ca7572807dc", - "last_modified": 1773176482043 - }, - { - "schema": 1772730082432, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290", - "serialNumber": "Y4BRgr8jIN737Jqu+5ZMYQ==", - "id": "f9f97c1b-2599-45ae-864e-4466efaa0479", - "last_modified": 1773176482040 - }, - { - "schema": 1772730081783, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcy", - "serialNumber": "D1utO40+B9VZUpt8+2owsA==", - "id": "53d9308c-0df2-476a-95af-4f06e4b8d253", - "last_modified": 1773176482037 - }, - { - "schema": 1772730082368, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "Bs6C2aMxWUUwAGeBgpOH5A28tg==", - "id": "a628842e-a826-4f93-864c-99cd700c2244", - "last_modified": 1773176482035 - }, - { - "schema": 1772730081716, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcz", - "serialNumber": "DD0vCSCddtgbKfyz7qZsBg==", - "id": "014c42ba-912f-46df-8b5f-0278cc6a1c5a", - "last_modified": 1773176482032 - }, - { - "schema": 1772730082305, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcz", - "serialNumber": "BQIrjwl3Vp2CLLC0t01VVQ==", - "id": "aff9c1ef-c3a4-4bec-a095-a0b279c5bf28", - "last_modified": 1773176482030 - }, - { - "schema": 1772730084297, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MF0xCzAJBgNVBAYTAkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTI=", - "serialNumber": "IrmxVPM8Xl4A", - "id": "e3dc6f6e-c52b-42eb-a471-c8f619ff5abc", - "last_modified": 1773176482027 - }, - { - "schema": 1772730084434, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcz", - "serialNumber": "CVC73isHuL+kTrA9gXTlqA==", - "id": "cde32e79-d7f8-4d47-893e-10fc2a6b937f", - "last_modified": 1773176482024 - }, - { - "schema": 1772730082495, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B7wLSv6C8BfbeWakWJpWCzmMoQ==", - "id": "d410d8bf-1ef7-482f-b9b7-4e3f2624513b", - "last_modified": 1773176482022 - }, - { - "schema": 1772730081848, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7Qh8cutTPgzaCEOnnNS/DA==", - "id": "9cf29ddd-d9e5-44c8-aac0-1d697e3f75e7", - "last_modified": 1773176482019 - }, - { - "schema": 1772730082045, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7PwLM3LzPhkGx78hhw6bOA==", - "id": "20027978-644e-4e59-a298-c77f1911910d", - "last_modified": 1773176482016 - }, - { - "schema": 1772730082241, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGRMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7QdaGAznKn40Rv6hc+HnSQ==", - "id": "5676b04e-a292-4580-b578-1579a88391e3", - "last_modified": 1773176482013 - }, - { - "schema": 1772668809487, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MEgxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdTZWN1cmVUcnVzdCBDb3Jwb3JhdGlvbjEXMBUGA1UEAxMOU2VjdXJlVHJ1c3QgQ0E=", - "serialNumber": "BvHsAOWOmt03LIcdJYQ/2rhS2Q==", - "id": "a04e78b9-e2c4-4ed3-9252-108866661ebe", - "last_modified": 1773176482010 - }, - { - "schema": 1772730082176, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2021383", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "B84Y7P7EGrNNMtTIcPGdoWOXsg==", - "id": "d6065aab-b2ef-461c-8fa2-403db738ebbd", - "last_modified": 1773176482007 - }, - { - "schema": 1764954051281, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "AJFZN56em7HZgckLifaauTo=", - "id": "09f13136-0183-4582-be09-38b0dec73c60", - "last_modified": 1765387587348 - }, - { - "schema": 1764954051205, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIEVDQyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "AN+yROlloEAqqg4G6aHdFk8=", - "id": "c7a3bd39-ee1d-4675-9e99-e954502bc6ef", - "last_modified": 1765387587342 - }, - { - "schema": 1764954051050, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MDcxFDASBgNVBAoMC1RlbGlhU29uZXJhMR8wHQYDVQQDDBZUZWxpYVNvbmVyYSBSb290IENBIHYx", - "serialNumber": "TEYq9tv794BPhMF8/qlytg==", - "id": "159440cb-b6c1-4a3b-abb1-463a4a8e00a6", - "last_modified": 1765387587336 - }, - { - "schema": 1764954050974, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGCMQswCQYDVQQGEwJERTErMCkGA1UECgwiVC1TeXN0ZW1zIEVudGVycHJpc2UgU2VydmljZXMgR21iSDEfMB0GA1UECwwWVC1TeXN0ZW1zIFRydXN0IENlbnRlcjElMCMGA1UEAwwcVC1UZWxlU2VjIEdsb2JhbFJvb3QgQ2xhc3MgMg==", - "serialNumber": "DQhC23luw5lX4cFe2MeDxw==", - "id": "73149904-bb79-44a5-9b14-eebb7c1ee93f", - "last_modified": 1765387587331 - }, - { - "schema": 1764954050730, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGCMQswCQYDVQQGEwJERTErMCkGA1UECgwiVC1TeXN0ZW1zIEVudGVycHJpc2UgU2VydmljZXMgR21iSDEfMB0GA1UECwwWVC1TeXN0ZW1zIFRydXN0IENlbnRlcjElMCMGA1UEAwwcVC1UZWxlU2VjIEdsb2JhbFJvb3QgQ2xhc3MgMg==", - "serialNumber": "Ks7V+RxC8r+Ri1uAk6jAJA==", - "id": "3b08fe4c-94d3-41e5-bb12-7b4ac1499c76", - "last_modified": 1765387587326 - }, - { - "schema": 1764954050510, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==", - "serialNumber": "SYgCH6U1+Go=", - "id": "92434599-a653-47af-aac7-e8a1f40242d6", - "last_modified": 1765387587321 - }, - { - "schema": 1764954050815, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIEVDQyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "WyXOaQfEJlVm0zkMmalUrQ==", - "id": "7cfc413a-e855-4723-afd4-5d77984fdb40", - "last_modified": 1765387587316 - }, - { - "schema": 1764954050436, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==", - "serialNumber": "bHGKodaE7KY=", - "id": "1e09c558-f654-4e08-95d4-a9d0ed05bc5d", - "last_modified": 1765387587311 - }, - { - "schema": 1764954050282, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "AOiuT82x88HxRnXSU5rusCc=", - "id": "7885b8f0-842b-445f-9849-e6be71654fba", - "last_modified": 1765387587306 - }, - { - "schema": 1764954051362, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==", - "serialNumber": "JBwXCyRk4Bg=", - "id": "9b0b6908-be23-450a-9b16-78cb603c53ae", - "last_modified": 1765387587300 - }, - { - "schema": 1764954050656, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGMxCzAJBgNVBAYTAkRFMScwJQYDVQQKDB5EZXV0c2NoZSBUZWxla29tIFNlY3VyaXR5IEdtYkgxKzApBgNVBAMMIlRlbGVrb20gU2VjdXJpdHkgVExTIEVDQyBSb290IDIwMjA=", - "serialNumber": "H7KN4bwqtn0heoLQH+Ikfg==", - "id": "d803458c-98bd-4269-9a47-6da26c059d1f", - "last_modified": 1765387587295 - }, - { - "schema": 1764900945407, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIEVDQyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "d80mOd5SbH9F5w2RaqvnRg==", - "id": "bceaddea-4834-4c20-bc0d-f9ff865df807", - "last_modified": 1765387587290 - }, - { - "schema": 1764954051131, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGMxCzAJBgNVBAYTAkRFMScwJQYDVQQKDB5EZXV0c2NoZSBUZWxla29tIFNlY3VyaXR5IEdtYkgxKzApBgNVBAMMIlRlbGVrb20gU2VjdXJpdHkgVExTIFJTQSBSb290IDIwMjM=", - "serialNumber": "EohvAEWvDUpPBmzprCXgAA==", - "id": "a87e2e5c-8215-43e0-adb1-8a13121ff595", - "last_modified": 1765387587285 - }, - { - "schema": 1764954050584, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==", - "serialNumber": "SYGm41PP2qU=", - "id": "26ade970-ec10-4be1-b857-ba2e83cd9456", - "last_modified": 1765387587280 - }, - { - "schema": 1764954050363, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==", - "serialNumber": "C6LQHcvLd3borGUJesElQQ==", - "id": "53f31f8b-61e9-4a6e-8a53-3a723fe17256", - "last_modified": 1765387587274 - }, - { - "schema": 1764954050892, - "details": { - "bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418", - "who": "", - "why": "", - "name": "", - "created": "" - }, - "enabled": false, - "issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==", - "serialNumber": "ZyDvubBx51s=", - "id": "c9c582ba-71f1-4147-9a1b-95e48cdaaa5a", - "last_modified": 1765387587268 - }, { "schema": 1759112148984, "details": { @@ -26984,5 +25994,5 @@ "last_modified": 1480349158647 } ], - "timestamp": 1774556199388 + "timestamp": 1759512219332 } diff --git a/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_ee.pem b/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_ee.pem index 9392129f62..ec7e8cfbc4 100644 --- a/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_ee.pem +++ b/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_ee.pem @@ -1,16 +1,16 @@ -----BEGIN CERTIFICATE----- -MIICdTCCAV2gAwIBAgIUdVZo8xeazUY3Fzm6cy61HaSjFJUwDQYJKoZIhvcNAQEL -BQAwIzEhMB8GA1UEAwwYY29sbGVjdGlvbi1zaWduZXItaW50LUNBMCIYDzIwMjQx -MTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCYxJDAiBgNVBAMMG2NvbGxlY3Rp +MIICdTCCAV2gAwIBAgIUbXzg/G5ipgJ5tKN9ukipBk2IUXkwDQYJKoZIhvcNAQEL +BQAwIzEhMB8GA1UEAwwYY29sbGVjdGlvbi1zaWduZXItaW50LUNBMCIYDzIwMjMx +MTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCYxJDAiBgNVBAMMG2NvbGxlY3Rp b24tc2lnbmVyLWVlLWludC1DQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABKFockM2 K1x7GInzeRVGFaHHP7SN7oY+AikV22COJS3ktxMtqM6Y6DFTTmqcDAsJyNY5regy BuW6gTRzoR+jMOBdqMluQ4P+J4c9qXEDviiIz/AC8Fr3Gh/dzIN0qm6pzqNIMEYw EwYDVR0lBAwwCgYIKwYBBQUHAwMwLwYDVR0RBCgwJoIkb25lY3JsLmNvbnRlbnQt -c2lnbmF0dXJlLm1vemlsbGEub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQBVHMPKgXKX -EVVTDRw8lF0MQBHUPA2+4f9JDsaq5AexGpFqfDzFobrzZnzKQyaODeoalhASraWs -GvhXrXFeSkSLqNpw657JXuIvVOULJjr2h9uA9N837KgFosvLLIIoKs1zeXG0LSYy -NSJBSme+n8ETV2d8RJ/w575rhnheDz6GcVH0hduvQR0g7dg8ZMtdfi16sjKaJRup -coH4N8t4YhLqM4PyrEATZyTEW5jOCKCb91FWgPu0ovfQz+t3jjS7TPpUa3IYJS8V -eFUHXUAXFFgD0xCl7P/V+kopWSijZHT8mwnPfn2z9EmV5ijioIsw2MF+FACkPWa1 -o2NzujCdDAEl +c2lnbmF0dXJlLm1vemlsbGEub3JnMA0GCSqGSIb3DQEBCwUAA4IBAQBfMRUvveE4 +wqVBKt1Ajuxod2l/EJW1sIKmqmwd9yU7tI/3KtdXhyL5ug4fEGxzghpvMDwnEO5e +2FQ4E/LFKPMv1hbT13YXrLtI9iRd/7S3BYWQOefnz3a8mLM0RCtZVGIgdS1v7e7q +5YR6Mpdt2Mu0EfP9WGtfS5VlflNwoUz5aZiA+SOVjEJCvGgOQspvQBDRlEBsXhUv +xcMLJv2iTlNRD9fea/N7vvq7OMzPATTYVEpdHlr2IDbHtUY5h0HwQ3DEWW1WRX9j +t8CcSsMwKczrTrQyV5tdxRJq8RVX60kadXz8r/YxGUQGjfL/VMhzxBM1ki36zbpN +QhZpQTjqUTXO -----END CERTIFICATE----- diff --git a/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_int.pem b/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_int.pem index de3c2ff3ce..3eec0ca4b6 100644 --- a/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_int.pem +++ b/icecat/services/settings/test/unit/test_remote_settings_signatures/collection_signing_int.pem @@ -1,7 +1,7 @@ -----BEGIN CERTIFICATE----- -MIIDAzCCAeugAwIBAgIUf3MHKqXo3U9dG7tkPLy8t7D+1o4wDQYJKoZIhvcNAQEL +MIIDAzCCAeugAwIBAgIUU6xCphqN3iKULXo0PQtWqX+FQ+swDQYJKoZIhvcNAQEL BQAwKTEnMCUGA1UEAwweeHBjc2hlbGwgc2lnbmVkIGFwcHMgdGVzdCByb290MCIY -DzIwMjQxMTI3MDAwMDAwWhgPMjAyNzAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGNv +DzIwMjMxMTI4MDAwMDAwWhgPMjAyNjAyMDUwMDAwMDBaMCMxITAfBgNVBAMMGGNv bGxlY3Rpb24tc2lnbmVyLWludC1DQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALqIUahEjhbWQf1utogGNhA9PBPZ6uQ1SrTs9WhXbCR7wcclqODYH72x nAabbhqG8mvir1p1a2pkcQh6pVqnRYf3HNUknAJ+zUP8HmnQOCApk6sgw0nk27lM @@ -9,11 +9,11 @@ wmtsDu0Vgg/xfq1pGrHTAjqLKkHup3DgDw2N/WYLK7AkkqR9uYhheZCxV5A90jvF 4LhIH6g304hD7ycW2FW3ZlqqfgKQLzp7EIAGJMwcbJetlmFbt+KWEsB1MaMMkd20 yvf8rR0l0wnvuRcOp2jhs3svIm9p47SKlWEd7ibWJZ2rkQhONsscJAQsvxaLL+Xx j5kXMbiz/kkj+nJRxDHVA6zaGAo17Y0CAwEAAaMlMCMwDAYDVR0TBAUwAwEB/zAT -BgNVHSUEDDAKBggrBgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAQEAjJAZX8SZOh1H -xLqKHgt2EiFloIW3k3aAnTFQPAEUp+IBXjJdA8cFzEDSHo0dTr8jBhR8V1gwy8+Z -1i6loA0rgJUdDhUP24SqbfsdF6kcltlBfjR4lBfbZq0BClMiNDL2ZOQS4neF15fN -WXUv2UE9ooKNUjgIzXHbU/ykbwTKB7Bmsh+r5CYs9LMNF5P/QDAlDNwvZglxiyyq -61fi06lnBXff0zObSdV/8Wm0PQyHEBfNY3L94wuIFxGsX0YngO7CCtaIFIeymzob -8SvH4W0vfeqYzDFM4PfgFbDs4KnAzJS+WwWq2HRDsHMZTDZVVXVA61LXYhFEOam1 -ASCDwhnClA== +BgNVHSUEDDAKBggrBgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAQEAKaU0inEN1Tog +clZXU+EAN/VaWtZLApxkWoyD6zvhAKIH7/6aow2lP+1goBKZfhrBkC79sGOZB36b +FYrHfKKptN7WY6R7XfeeSUmNc+lswn5H1fLtlLMBaPHTdJhwW6qSegAuCG2NMaGZ +Y1Fdz/93ZnKfmNy3b7L/9/wuAoKLEP48s/ioX+f7zGDdTq9NF8jGGZIsY8o+1n9+ +ycvFQzQU5x7JsZ/X/JjX1AOFE/vgK7da3p3f/6w/xLYGt+3i8bezUtnITQHZGtKz +JpEZVl/78XXHbovtK5wkqYnrEaBgLbs7v6EK/6glHxkss4T3AU+b8JeBBsSWcESx +GLsGAnT9Eg== -----END CERTIFICATE----- diff --git a/icecat/servo/components/style/custom_properties.rs b/icecat/servo/components/style/custom_properties.rs index 2d04211ad6..2c2a585ebc 100644 --- a/icecat/servo/components/style/custom_properties.rs +++ b/icecat/servo/components/style/custom_properties.rs @@ -467,9 +467,6 @@ pub enum DeferFontRelativeCustomPropertyResolution { #[derive(Clone, Debug, MallocSizeOf, PartialEq, ToShmem)] struct VariableFallback { - // NOTE(emilio): We don't track fallback end, because we rely on the missing closing - // parenthesis, if any, to be inserted, which means that we can rely on our end being - // reference.end - 1. start: num::NonZeroUsize, first_token_type: TokenSerializationType, last_token_type: TokenSerializationType, @@ -741,23 +738,23 @@ fn parse_declaration_value_block<'i, 't>( } macro_rules! nested { - ($closing:expr) => {{ - let mut inner_end_position = None; - let result = input.parse_nested_block(|input| { - let result = parse_declaration_value_block( + () => { + input.parse_nested_block(|input| { + parse_declaration_value_block( input, input_start, references, missing_closing_characters, - )?; - inner_end_position = Some(input.position()); - Ok(result) - })?; - if inner_end_position.unwrap() == input.position() { - missing_closing_characters.push_str($closing); + ) + })? + }; + } + macro_rules! check_closed { + ($closing:expr) => { + if !input.slice_from(token_start).ends_with($closing) { + missing_closing_characters.push_str($closing) } - result - }}; + }; } if let Some(index) = prev_reference_index.take() { references.refs[index].next_token_type = serialization_type; @@ -797,7 +794,6 @@ fn parse_declaration_value_block<'i, 't>( let is_var = name.eq_ignore_ascii_case("var"); if is_var || name.eq_ignore_ascii_case("env") { let our_ref_index = references.refs.len(); - let mut input_end_position = None; let fallback = input.parse_nested_block(|input| { // TODO(emilio): For env() this should be per spec, but no other browser does // that, see https://github.com/w3c/csswg-drafts/issues/3262. @@ -853,7 +849,6 @@ fn parse_declaration_value_block<'i, 't>( first_token_type: first, last_token_type: last, }); - input_end_position = Some(input.position()); } else { let state = input.state(); // We still need to consume the rest of the potentially-unclosed @@ -865,14 +860,11 @@ fn parse_declaration_value_block<'i, 't>( references, missing_closing_characters, )?; - input_end_position = Some(input.position()); input.reset(&state); } Ok(fallback) })?; - if input_end_position.unwrap() == input.position() { - missing_closing_characters.push_str(")"); - } + check_closed!(")"); prev_reference_index = Some(our_ref_index); let reference = &mut references.refs[our_ref_index]; reference.end = input.position().byte_index() - input_start.byte_index() + @@ -884,17 +876,21 @@ fn parse_declaration_value_block<'i, 't>( references.any_env = true; } } else { - nested!(")"); + nested!(); + check_closed!(")"); } }, Token::ParenthesisBlock => { - nested!(")"); + nested!(); + check_closed!(")"); }, Token::CurlyBracketBlock => { - nested!("}"); + nested!(); + check_closed!("}"); }, Token::SquareBracketBlock => { - nested!("]"); + nested!(); + check_closed!("]"); }, Token::QuotedString(_) => { let token_slice = input.slice_from(token_start); @@ -923,8 +919,8 @@ fn parse_declaration_value_block<'i, 't>( // (Unescaped U+FFFD would also work, but removing the backslash is annoying.) missing_closing_characters.push_str("�") } - if is_unquoted_url && !input.slice_from(token_start).ends_with(")") { - missing_closing_characters.push_str(")"); + if is_unquoted_url { + check_closed!(")"); } }, _ => {}, diff --git a/icecat/servo/components/style/values/specified/calc.rs b/icecat/servo/components/style/values/specified/calc.rs index f3471f0d42..79a79b701e 100644 --- a/icecat/servo/components/style/values/specified/calc.rs +++ b/icecat/servo/components/style/values/specified/calc.rs @@ -456,9 +456,6 @@ impl generic::CalcNodeLeaf for Leaf { (&Length(ref one), &Length(ref other)) => { return Ok(Leaf::Length(one.try_op(other, op)?)); }, - (&ColorComponent(..), &ColorComponent(..)) => { - return Err(()); - }, _ => { match *other { Number(..) | Percentage(..) | Angle(..) | Time(..) | Length(..) | diff --git a/icecat/sourcestamp.txt b/icecat/sourcestamp.txt index a3a3c5bda0..889f338375 100644 --- a/icecat/sourcestamp.txt +++ b/icecat/sourcestamp.txt @@ -1,2 +1,2 @@ -20260427105827 -https://hg.mozilla.org/releases/mozilla-esr140/rev/a24e9e115e02794f72dab9ef6081244403b0183a +20251201132345 +https://hg.mozilla.org/releases/mozilla-esr140/rev/18556c0b079c839f4d15597a57b0f048fdadcedd diff --git a/icecat/taskcluster/config.yml b/icecat/taskcluster/config.yml index 5aaba9893a..cad2113509 100644 --- a/icecat/taskcluster/config.yml +++ b/icecat/taskcluster/config.yml @@ -191,7 +191,7 @@ treeherder: 'Boot': 'Bootstrap' 'Attr-L10n': 'Build Attribution' 'android-l10n': 'Import strings from android-l10n repo' - 'updt-tst': 'Test updates to release from older icecat versions' + 'update-test': 'Test updates to release from older icecat versions' # The below symbols are from icecat-android (fenix/focus/android-components) 'buildconfig': 'Make sure the content of .buildconfig.yml matches what gradle knows about its projects' @@ -643,36 +643,11 @@ taskgraph: workers: aliases: - b-linux-gcp: + b-linux.*: provisioner: '{trust-domain}-{level}' implementation: docker-worker os: linux - worker-type: b-linux - b-linux-gcp-aarch64: - provisioner: '{trust-domain}-{level}' - implementation: docker-worker - os: linux - worker-type: b-linux-aarch64 - b-linux-kvm-gcp: - provisioner: '{trust-domain}-{level}' - implementation: docker-worker - os: linux - worker-type: b-linux-kvm - b-linux-medium-gcp: - provisioner: '{trust-domain}-{level}' - implementation: docker-worker - os: linux - worker-type: b-linux-medium - b-linux-large-gcp: - provisioner: '{trust-domain}-{level}' - implementation: docker-worker - os: linux - worker-type: b-linux-large - b-linux-xlarge-gcp: - provisioner: '{trust-domain}-{level}' - implementation: docker-worker - os: linux - worker-type: b-linux-xlarge + worker-type: '{alias}' b-win2012: provisioner: '{trust-domain}-{level}' implementation: generic-worker @@ -702,12 +677,12 @@ workers: provisioner: '{trust-domain}-{level}' implementation: docker-worker os: linux - worker-type: images + worker-type: '{alias}' images-gcp-aarch64: provisioner: '{trust-domain}-{level}' implementation: docker-worker os: linux - worker-type: images-aarch64 + worker-type: '{alias}' addon: provisioner: scriptworker-k8s implementation: push-addons @@ -863,6 +838,16 @@ workers: implementation: docker-worker os: linux worker-type: '{alias}' + t-linux(-large|-xlarge|-xlarge-source): + provisioner: '{trust-domain}-t' + implementation: docker-worker + os: linux + worker-type: '{alias}-gcp' + t-linux(-large|-xlarge|-xlarge-source)-noscratch: + provisioner: '{trust-domain}-t' + implementation: docker-worker + os: linux + worker-type: '{alias}-gcp' t-linux-kvm: provisioner: '{trust-domain}-t' implementation: docker-worker @@ -998,7 +983,7 @@ workers: provisioner: '{trust-domain}-t' implementation: docker-worker os: linux - worker-type: misc + worker-type: misc-gcp mac-signing: diff --git a/icecat/taskcluster/docker/debian-raw/Dockerfile b/icecat/taskcluster/docker/debian-raw/Dockerfile index eecedcce47..e124c72c35 100644 --- a/icecat/taskcluster/docker/debian-raw/Dockerfile +++ b/icecat/taskcluster/docker/debian-raw/Dockerfile @@ -69,16 +69,7 @@ RUN apt-get update && \ apt-get install python3-minimal libpython3-stdlib; \ echo 'dir::bin::methods::http "/usr/local/sbin/snapshot-hack.py";' >> /etc/apt/apt.conf.d/99taskcluster; \ fi && \ + apt-get dist-upgrade && \ apt-get install \ apt-transport-https \ - ca-certificates && \ - if [ -n "$SNAPSHOT" -a -f /etc/apt/sources.list.d/ubuntu.sources ]; then \ - echo "APT::Snapshot \"$SNAPSHOT\";" > /etc/apt/apt.conf.d/99snapshot && \ - ( echo 'Package: *'; \ - echo 'Pin: origin "snapshot.ubuntu.com"'; \ - echo 'Pin-Priority: 1001'; \ - ) > /etc/apt/preferences.d/90snapshot && \ - downgrades=--allow-downgrades && \ - apt-get update; fi && \ - apt-get dist-upgrade ${downgrades} && \ - rm -f /etc/apt/preferences.d/90snapshot + ca-certificates diff --git a/icecat/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js b/icecat/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js index 09f329ca82..69de23155e 100644 --- a/icecat/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js +++ b/icecat/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js @@ -121,7 +121,15 @@ function download(filename) { ); } - return req.responseText; + let resultDecoded; + try { + resultDecoded = atob(req.responseText); + } catch (e) { + throw new Error( + "ERROR: could not decode data as base64 from '" + filename + "': " + e + ); + } + return resultDecoded; } function downloadAsJson(filename) { diff --git a/icecat/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js b/icecat/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js index 4ed0a518d5..1245d55352 100644 --- a/icecat/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js +++ b/icecat/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js @@ -17,7 +17,7 @@ const { FileUtils } = ChromeUtils.importESModule( ); const SOURCE = - "https://raw.githubusercontent.com/chromium/chromium/main/net/http/transport_security_state_static.json"; + "https://chromium.googlesource.com/chromium/src/+/refs/heads/main/net/http/transport_security_state_static.json?format=TEXT"; const TOOL_SOURCE = "https://hg.mozilla.org/mozilla-central/file/default/taskcluster/docker/periodic-updates/scripts/getHSTSPreloadList.js"; const OUTPUT = "nsSTSPreloadList.inc"; @@ -52,8 +52,17 @@ async function download() { } let text = await resp.text(); + let resultDecoded; + try { + resultDecoded = atob(text); + } catch (e) { + throw new Error( + "ERROR: could not decode data as base64 from '" + SOURCE + "': " + e + ); + } + // we have to filter out '//' comments, while not mangling the json - let result = text.replace(/^(\s*)?\/\/[^\n]*\n/gm, ""); + let result = resultDecoded.replace(/^(\s*)?\/\/[^\n]*\n/gm, ""); let data = null; try { data = JSON.parse(result); diff --git a/icecat/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh b/icecat/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh index 26275751ac..1c1cd197ad 100755 --- a/icecat/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh +++ b/icecat/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh @@ -13,7 +13,7 @@ Usage: $(basename "$0") [-p product] # Use archive.m.o instead of the taskcluster index to get xpcshell [--use-ftp-builds] # Use git rather than hg. Using git does not currently support cloning (use - # --skip-clone as well). + # --skip-repo as well). [--use-git] # One (or more) of the following actions must be specified. --hsts | --hpkp | --remote-settings | --suffix-list | --mobile-experiments | --ct-logs @@ -407,18 +407,9 @@ function compare_remote_settings_files { # 1. List remote settings collections from server. echo "INFO: fetch remote settings list from server" - changes_lines="$( - ${WGET} -O- \ - "${REMOTE_SETTINGS_SERVER}/buckets/monitor/collections/changes/changeset?_expected=0" | - ${JQ} -r '.changes[] | .bucket+"/"+.collection+"/"+(.last_modified|tostring)' - )" - line_count="$(printf '%s\n' "${changes_lines}" | wc -l | xargs)" - if [ "${line_count}" -le 1 ]; then - echo "ERROR: no changes pulled from server" >&2 - exit 15 - fi - - # 2. For each entry ${bucket, collection, last_modified} + ${WGET} -qO- "${REMOTE_SETTINGS_SERVER}/buckets/monitor/collections/changes/records" |\ + ${JQ} -r '.data[] | .bucket+"/"+.collection+"/"+(.last_modified|tostring)' |\ + # 2. For each entry ${bucket, collection, last_modified} while IFS="/" read -r bucket collection last_modified; do # 3. Check to see if the collection exists in the dump directory of the repository, @@ -476,7 +467,7 @@ function compare_remote_settings_files { else ${HG} --cwd "${TOPSRCDIR}" purge services/settings/dumps/main/search-config-icons fi - done <<< "${changes_lines}" + done echo "INFO: diffing old/new remote settings dumps..." create_repo_diff "${REMOTE_SETTINGS_DIR}" "${REMOTE_SETTINGS_DIFF_ARTIFACT}" diff --git a/icecat/taskcluster/docker/recipes/ubuntu2404-test-system-setup-base.sh b/icecat/taskcluster/docker/recipes/ubuntu2404-test-system-setup-base.sh index cb46adb2e3..e3ae7e2910 100644 --- a/icecat/taskcluster/docker/recipes/ubuntu2404-test-system-setup-base.sh +++ b/icecat/taskcluster/docker/recipes/ubuntu2404-test-system-setup-base.sh @@ -7,6 +7,14 @@ test "$(whoami)" == 'root' # We do want to install recommended packages. sed -i /APT::Install-Recommends/d /etc/apt/apt.conf.d/99taskcluster +apt-get update && apt-get install ubuntu-dbgsym-keyring + +cat > /etc/apt/sources.list.d/ddebs.list <- - ./mach update-test - worker-type: - by-test-platform: - windows11-64-24h2-shippable: win11-64-24h2 - windows10-64-2009-shippable-qr: win10-64-2009 - macosx1500-aarch64-shippable: t-osx-1500-m4 - macosx1470-64-shippable: t-osx-1400-r8 - macosx1015-64-shippable-qr: t-osx-1015-r8 - linux.*: t-linux-docker - -tasks: - update-test-locale-fx: - shipping-phase: promote - test-platforms: - - windows11-64-24h2-shippable - - windows10-64-2009-shippable-qr - - macosx1500-aarch64-shippable - - macosx1470-64-shippable - - macosx1015-64-shippable-qr - - update-test-linux-docker-locale-fx: - shipping-phase: promote - worker: - artifacts: - - type: directory - path: /builds/worker/artifacts/update-test - name: public/update-test - env: - UPLOAD_DIR: /builds/worker/artifacts - VERSION_LOG_FILENAME: update-test-version-info.log - run: - command: >- - . $HOME/scripts/xvfb.sh && start_xvfb '1600x1200x24' 0 && ./mach update-test - test-platforms: - - linux2404-64-shippable - - update-test-source-version-fx: - shipping-phase: promote - test-platforms: - - windows11-64-24h2-shippable - - windows10-64-2009-shippable-qr - - macosx1500-aarch64-shippable - - macosx1470-64-shippable - - macosx1015-64-shippable-qr - - update-test-linux-docker-source-version-fx: - shipping-phase: promote - worker: - artifacts: - - type: directory - path: /builds/worker/artifacts/update-test - name: public/update-test - env: - UPLOAD_DIR: /builds/worker/artifacts - VERSION_LOG_FILENAME: update-test-version-info.log - run: - command: >- - . $HOME/scripts/xvfb.sh && start_xvfb '1600x1200x24' 0 && ./mach update-test - test-platforms: - - linux2404-64-shippable - - update-test-fx-bkg: - shipping-phase: promote - run: - command: >- - ./mach update-test --test-type Background - test-platforms: - - windows11-64-24h2-shippable - - windows10-64-2009-shippable-qr - - macosx1500-aarch64-shippable - - macosx1470-64-shippable - - macosx1015-64-shippable-qr - - update-test-linux-docker-fx-bkg: - shipping-phase: promote - worker: - artifacts: - - type: directory - path: /builds/worker/artifacts/update-test - name: public/update-test - env: - UPLOAD_DIR: /builds/worker/artifacts - VERSION_LOG_FILENAME: update-test-version-info.log - run: - command: >- - . $HOME/scripts/xvfb.sh && start_xvfb '1600x1200x24' 0 && ./mach update-test --test-type Background - test-platforms: - - linux2404-64-shippable - - update-test-push-locale-fx: - run-on-releases: [release, esr140] - shipping-phase: push - test-platforms: - - windows11-64-24h2-shippable - - macosx1500-aarch64-shippable - - update-test-linux-docker-push-locale-fx: - run-on-releases: [release, esr140] - shipping-phase: push - worker-type: t-linux-docker - worker: - artifacts: - - type: directory - path: /builds/worker/artifacts/update-test - name: public/update-test - env: - UPLOAD_DIR: /builds/worker/artifacts - VERSION_LOG_FILENAME: update-test-version-info.log - run: - command: >- - . $HOME/scripts/xvfb.sh && start_xvfb '1600x1200x24' 0 && ./mach update-test - test-platforms: - - linux2404-64-shippable diff --git a/icecat/taskcluster/kinds/update/kind.yml b/icecat/taskcluster/kinds/update/kind.yml new file mode 100644 index 0000000000..13741365fb --- /dev/null +++ b/icecat/taskcluster/kinds/update/kind.yml @@ -0,0 +1,68 @@ +# 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/. +--- +loader: taskgraph.loader.transform:loader + +kind-dependencies: + - toolchain + +transforms: + - gecko_taskgraph.transforms.job:transforms + - gecko_taskgraph.transforms.task:transforms + +task-defaults: + treeherder: + kind: other + tier: 2 + worker: + max-run-time: 10800 + artifacts: [] + +tasks: + windows2012-64-icecat: + worker-type: win11-64-24h2-source + description: Test updates on Win64 + run-on-projects: [] + treeherder: + symbol: update-test(icecat) + platform: windows2012-64/opt + index: + product: icecat + job-name: update-test-win64 + run: + using: run-task + cwd: "{checkout}" + command: >- + ./mach update-test + + macosx64-icecat: + worker-type: t-osx-1500-m4 + description: Test updates on macOS + run-on-projects: [] + treeherder: + symbol: update-test(icecat) + platform: macosx/opt + index: + product: icecat + job-name: update-test-macOS + run: + using: run-task + cwd: "{checkout}" + command: >- + ./mach update-test + + linux64-icecat: + worker-type: t-linux-xlarge-source + worker: + docker-image: {in-tree: ubuntu2404-test} + description: Test updates on Linux + run-on-projects: [] + treeherder: + symbol: update-test(icecat) + platform: linux64/opt + run: + using: run-task + cwd: "{checkout}" + command: >- + . $HOME/scripts/xvfb.sh && start_xvfb '1600x1200x24' 0 && ./mach update-test diff --git a/icecat/taskcluster/scripts/misc/build-mingw32-nsis.sh b/icecat/taskcluster/scripts/misc/build-mingw32-nsis.sh index 738b699dc4..85b3bd61ce 100755 --- a/icecat/taskcluster/scripts/misc/build-mingw32-nsis.sh +++ b/icecat/taskcluster/scripts/misc/build-mingw32-nsis.sh @@ -28,7 +28,7 @@ ln -s i686-w64-mingw32-clang++ $MOZ_FETCHES_DIR/clang/bin/i686-w64-mingw32-g++ # -------------- -cd zlib-1.3.2 +cd zlib-1.3.1 make -f win32/Makefile.gcc PREFIX=i686-w64-mingw32- cd ../nsis-3.07-src @@ -54,7 +54,7 @@ scons \ CC="clang --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \ CXX="clang++ --sysroot $MOZ_FETCHES_DIR/sysroot-x86_64-linux-gnu" \ XGCC_W32_PREFIX=i686-w64-mingw32- \ - ZLIB_W32=../zlib-1.3.2 \ + ZLIB_W32=../zlib-1.3.1 \ SKIPUTILS="NSIS Menu,Makensisw" \ PREFIX_DEST=$INSTALL_DIR/ \ PREFIX_BIN=bin \ diff --git a/icecat/taskcluster/test/params/me-promote-icecat.yml b/icecat/taskcluster/test/params/me-promote-icecat.yml index 6aa4516a4f..aac9b50f93 100644 --- a/icecat/taskcluster/test/params/me-promote-icecat.yml +++ b/icecat/taskcluster/test/params/me-promote-icecat.yml @@ -1,2331 +1,1949 @@ -android_perftest_backstop: true -app_version: 140.7.0 +app_version: 115.5.0 backstop: true base_ref: default base_repository: https://hg.mozilla.org/mozilla-unified -base_rev: edaa4f77d7756862c1d5734e0529a73ebeda9596 -build_date: 1767719101 +base_rev: 78a0edacb31faeacf8d1606c7ee7408a269cdb22 +build_date: 1699890876 build_number: 1 do_not_optimize: [] existing_tasks: - build-linux-asan-fuzzing/opt: YPLAOT2FTEO1ekB7evVjpQ - build-linux-fuzzing/debug: LRc8ftL6QGilIDO3iVpUgw - build-linux-shippable/opt: X-6lzaS0Q66MX3a02hxqsg - build-linux-shippable/opt-upload-symbols: AQObllRXQFKBNvV0u7PakA - build-linux/debug: MUjfIWyASWCRW7LQ6XtfuQ - build-linux/debug-upload-symbols: eo1NH0znQX-2XFAzLySl0A - build-linux64-aarch64-shippable/opt: IbcPW4eMSRmRhOlIcCFCAw - build-linux64-aarch64-shippable/opt-upload-symbols: KTKyCSceTV-GVDNtENkPDA - build-linux64-asan-fuzzing-afl/opt: SQAulxCMSmGu1mZe96W3bA - build-linux64-asan-fuzzing-nyx/opt: b9_sxdV1RXWk-5mmkmg8cQ - build-linux64-asan-fuzzing/noopt: PbWCFCYqSg66dpZEYKs75Q - build-linux64-asan-fuzzing/opt: FurYSAa4Tvu7Hk2EnTKJ1Q - build-linux64-asan/debug: YEl1GNEpSyCwjtJtxTv-Qw - build-linux64-asan/opt: IPP357QdSa-qS9GRyzwFkg - build-linux64-base-toolchains-clang/debug: Lr5UU58tQV2lrDOVNJwEfA - build-linux64-base-toolchains/debug: EL9l3qJRTjSaOPAS6Q7w7g - build-linux64-fuzzing-afl/debug: XoJ1EeRyQxexCP5Z0eWt5g - build-linux64-fuzzing-noopt/debug: Tl-916WSQhW0dxJJBSVg-w - build-linux64-fuzzing/debug: f_vwSPCwQV2yoGRHJ16F2A - build-linux64-shippable/opt: Xs3CDBJFQ2mHuhsZ8HlAbw - build-linux64-shippable/opt-upload-symbols: ZDRabpbERFGzOnR65R792A - build-linux64-tsan-fuzzing/opt: ONCNPVTaTtuTx_Wlt1Mo5w - build-linux64-tsan/opt: VRsxCkwyRlCGtF38RIOFTQ - build-linux64/debug: Tk9mFKYMQUC1c5ibxydm7Q - build-linux64/debug-upload-symbols: BQqoPN4TRSCv1_ZU2Q9rLA - build-mac-notarization-macosx64-shippable/opt: aAG25-cvS-yGRSjK-LzFyg - build-mac-signing-macosx64-aarch64/debug: UXdWvHRFSri-gBMz-9WonA - build-mac-signing-macosx64-shippable/opt: RP5HLm0USp68cLczNmVrxw - build-mac-signing-macosx64/debug: IpUan5bNTvalkg4R3v7--g - build-macosx64-aarch64-asan-fuzzing/opt: bluIC8CpQRGCCz6VnVzqhA - build-macosx64-aarch64-fuzzing/debug: H7O8dWH4Q7-gkDWLnsYiug - build-macosx64-aarch64-fuzzing/debug-upload-symbols: DZ1h9OSFTnuznmriXUdcwg - build-macosx64-aarch64-shippable/opt: dcv0bjSdSfuhY5OGF2qf3g - build-macosx64-aarch64-shippable/opt-upload-symbols: ejYUyLPaRi62omd_AuP-6Q - build-macosx64-aarch64/debug: XG1F6KaJTJmi9WOcjH58ow - build-macosx64-aarch64/debug-upload-symbols: MNOplo51Qe6lGk_Yl_QArw - build-macosx64-asan-fuzzing/opt: dKTicd8SRVql7ZNdpFQVsQ - build-macosx64-fuzzing/debug: foi847GSS3esbZELB6L0fA - build-macosx64-fuzzing/debug-upload-symbols: Hy4nWtkiQyWdR_mwxEsE6Q - build-macosx64-shippable/opt: LAqGQmytTECvmVD8Hqpu5Q - build-macosx64-x64-shippable/opt: BPvUnTf7R4mJIkQ2Gf3tAA - build-macosx64-x64-shippable/opt-upload-symbols: SDaCgUokSvCqwHqpnHWvpA - build-macosx64/debug: PTtFqHarTVGJuntMT6vk_w - build-macosx64/debug-upload-symbols: B80QlVDKRQWdsJJHkB9FUg - build-signing-linux-shippable/opt: GJ-JCRkjQM2kT18e8IX1Sg - build-signing-linux64-aarch64-shippable/opt: P8h9Y1GOScmheLX6kLhb8g - build-signing-linux64-shippable/opt: cYkdSiizRK-hemFL97xZBQ - build-signing-win32-shippable/opt: ZbIVQ7fzSAyZ8-5lZt49fA - build-signing-win32/debug: DjL5kDOiQ4WHdUfV6iATfw - build-signing-win64-aarch64-shippable/opt: QwbQV7axSyibiZcpxekKNA - build-signing-win64-shippable/opt: YO2eEqELQwSMEREuvTIINA - build-signing-win64/debug: R-wuEg75Q5SModIrEG_5Dw - build-win32-mingwclang/debug: IMhVw1tQQnqCo6m19L2Ijg - build-win32-mingwclang/opt: MnYn6y34TKahJjtFszKHuA - build-win32-shippable/opt: Xv4RO1mcRv2bZgjB_BpvNw - build-win32-shippable/opt-upload-symbols: B9x86UvlT765t7VV8SlNiQ - build-win32/debug: fkAY7PnaQv2N3LDS36LQNA - build-win32/debug-upload-symbols: ewbDHEdvSB2Bad3m2-seVw - build-win64-aarch64-shippable/opt: IM8L4btDRKe1CbuUG-pm3g - build-win64-aarch64-shippable/opt-upload-symbols: FI7aJBViSQadvwzi1a3yfA - build-win64-aarch64/debug: VyM6j9raTouI1DQFWwp-fw - build-win64-aarch64/debug-upload-symbols: LfahMtCtTb6tbNFTYtAVSg - build-win64-asan-fuzzing/opt: VyEUxXeIT0ushOaz39T_4g - build-win64-asan/debug: F0T4MOOaQgqobrqb5AUgeQ - build-win64-asan/opt: RKb2Z602SHab-rsnkbhLgw - build-win64-mingwclang/debug: FlrfDnkwQ9Ot9g6Cd-tb-A - build-win64-mingwclang/opt: d0h8AjFJQvCPgVyjh95QNA - build-win64-shippable/opt: NQz2A4bgSqqMgLwUidyeOA - build-win64-shippable/opt-upload-symbols: b6kqSt6oQyKaJEMP7uL0rA - build-win64/debug: cK3CL20XS2iYZs8UWFzSdg - build-win64/debug-upload-symbols: Q7qlQk7LQU6-C5v6XQf-Nw - docker-image-android-build: b01HccfTQRm5O1UsvXekNQ - docker-image-android-components: euUx8cOmRKy2RbJ9j-wHLQ - docker-image-android-ui-tests: F0gigxdpRXaKE7holer8mQ - docker-image-condprof: Td9aVPqyShu6i1K4xMEaCA - docker-image-custom-car-android: Emcqh4HURMKpYBPgspX10w - docker-image-custom-car-linux: HNLurrDBR8GjXXSoRpdlrA - docker-image-custom-v8: eOAmvCE5QqG1fAqWGKnoXQ - docker-image-deb12-toolchain-build: CmQdHzZFSvCrzcW2-VsSMA - docker-image-debian12-amd64-build: ZQJQweU7S9m15MWIFM95Sg - docker-image-debian12-base: WfQW44k6SSCLfK5HQq6uGA - docker-image-debian12-flatpak: XEByQFhnSXKwBC5bOBJibw - docker-image-debian12-packages: dm7g72qRQlm_WvA_g3pLlA - docker-image-debian12-raw: bglgZSthQAaC74dyatIXPg - docker-image-debian12-repackage: MvW_Y_YESQikelt9jPEoYA - docker-image-debian12-rpm-repackage: JABt2X7RT3WIl8wmWqWHAQ - docker-image-debian8-i386-packages: cs5ZXZyCRjCMNGEc7s3MZQ - docker-image-debian8-i386-raw: DtvElGG6TV2hJHvmanGVAQ - docker-image-debian8-packages: Ra_hpRcATvmeHdozgjFyVg - docker-image-debian8-raw: XpW-T8hiQIKdjxPsVkEFRg - docker-image-decision: Z_W2kxVNS9qbmGE1IEbYVA - docker-image-diffoscope: JGy0fIOYRFOzwg2srd32ig - docker-image-fetch: JjnWSB70RMqOJh0JHTXpog - docker-image-fetch-more: Y_6fKaNRR_O5lzyrQ9P8KQ - docker-image-funsize-update-generator: EqViNA2VTDW2hH5fOX6V4w - docker-image-gdb-test: FUkq7hnHTXGsBfTC0BD18A - docker-image-image_builder: SHOJVzvwSp-wZglY3aSimw - docker-image-image_builder_arm64: B4Ze6V5MTUq64HfRRtUh4Q - docker-image-index-task: MOKM2P-AQgiFpKPou2B20A - docker-image-lint: QkfQgPCTRyiaEzs7djPnZg - docker-image-partner-repack: RDRR9DH3TUGR7BRpFUG5CQ - docker-image-periodic-updates: WYbeV8O9TC23XhjfpM6G6w - docker-image-push-to-try: QXra6_PGRCeZPtp6YCOTyg - docker-image-sentry: csgHxrGaRkWh2JJDJIOGuQ - docker-image-snap-build-core22: QI4x9P6dT9S1-ETo12dCrA - docker-image-snap-build-core24: O_h9Gy3aSvK3X2X6mbfLrw - docker-image-static-analysis-build: MqGtgGf1SjurJNsPtf0YSQ - docker-image-system-symbols-linux-scraper: U9ozB8GTSc2lvMhOwCzA2g - docker-image-system-symbols-mac: FBZakzfHStW6CW93btmNRQ - docker-image-system-symbols-win: KEfh6xz8RmKwaBWqh7m4zQ - docker-image-system-symbols-win-gfx: cXGxKjdGTsehmhJMcKx2nQ - docker-image-ubuntu1804-base: It_m8Xv8QlqbNkcq8npAeQ - docker-image-ubuntu1804-build-python: W6_o5CtnTDS-tWwm_3720g - docker-image-ubuntu1804-build-python-wheels: LiMKK3keTA2ftYCAl9LI9g - docker-image-ubuntu1804-i386-packages: X84UPktiT_CJrfQzhrUP1g - docker-image-ubuntu1804-i386-raw: AT5OGbD9QyadMY9WeyVFWA - docker-image-ubuntu1804-packages: MV8y-ukpSzyLEYtcq49Xrg - docker-image-ubuntu1804-raw: M5hoTpBLTzODCCq5Kln1vQ - docker-image-ubuntu1804-test: Xlj-dY0pQdK4VRicxCsiPg - docker-image-ubuntu1804-test-base: V6A0JpF4T5KK2D1mzPC1kg - docker-image-ubuntu2004-base: TYS5C50QQ8yPn0paltov5A - docker-image-ubuntu2004-packages: cuYa3Gn7RbCG6Lt4MEpdzg - docker-image-ubuntu2004-raw: UgVf6HmvRE-MWfp8TV5GfQ - docker-image-ubuntu2204-arm64-base: cdpMVpTyTcavFXic5plTcA - docker-image-ubuntu2204-arm64-build-python: UE4PVyaQQzOTc2i9EBjRWw - docker-image-ubuntu2204-arm64-packages: aRZkn9F3Ts6PUimk7TkYGg - docker-image-ubuntu2204-arm64-raw: A8Phm4QZS6ylylcAbpkhuQ - docker-image-ubuntu2204-base: HpbV56QgTKmvF2EgKnTLIA - docker-image-ubuntu2204-build-python-wheels: Okx1wpvLQRWu0W4hBrWidA - docker-image-ubuntu2204-packages: L4EgEg_wT-iZcsnmndmOWQ - docker-image-ubuntu2204-raw: d-AcrhFIRKe4N8vu4K89wA - docker-image-ubuntu2404-arm64-base: f9ssGBsgQDe8dR-43nMzNw - docker-image-ubuntu2404-arm64-packages: JkDhFZT2RMyXc_5u3-M3WA - docker-image-ubuntu2404-arm64-raw: OtXf_flOSIiu-XOiCBhejA - docker-image-ubuntu2404-arm64-test: RuRDCFC8SiWw1jkns1xk3Q - docker-image-ubuntu2404-arm64-test-base: Jnc9mJ8ZQLWvyIN1aU8L3A - docker-image-ubuntu2404-base: YuXrA9GQTlebFLgDVM4BEA - docker-image-ubuntu2404-build-python-wheels: b2XsawT3SH2M8OGiMNq1uQ - docker-image-ubuntu2404-packages: CefqfGKKTQ2jKQvKfFMdSA - docker-image-ubuntu2404-raw: WLzg8xoLTdWgKikLWzsuFQ - docker-image-ubuntu2404-test: Nz0d7dQCRwq6AgjyWkyc0Q - docker-image-ubuntu2404-test-base: C2Ri3aowQQmTB4PJJQoa3Q - docker-image-update-verify: U12UYzyDQcu5DIVJcqQPzw - docker-image-updatebot: QB1MdYfXSSiEd-QxfjNgTA - docker-image-valgrind-build: dpOqQQisTEiCRnbMcLJt0Q - docker-image-webrender: Qx74rUtYSCamURar9k6Rfw - fetch-7zz: T2BKX7jbQlOTHTfpqUyf4g - fetch-afl-plus-plus-4.0: OAgnoo_iQJGlr63ToR00pQ - fetch-binutils-2.31.1: DmER26UZTAe4VZ19L0lEQg - fetch-binutils-2.41: A25-JKBtT66IUoKAW52Fjg - fetch-bomutils: T91Ee3K_Rbiu6Hi6BwQ-yA - fetch-cabextract: FonPgpw9QR2hfOk5uynMvA - fetch-cargo-vet: IJR0q8WqTf6j1ZquXTVVSw - fetch-cbindgen: Mdoi3fYKS0eoVmrNS43-5A - fetch-cbindgen-0.27.0: aVSpvwdGRAyPn6NbjV8HoQ - fetch-cctools-port: A-t2B7-iSYeSHnS86aGnRA - fetch-chromium-depot-tools: RT0wxkUgQtShj0qxiTPNfg - fetch-clang-14: VSj4FRk3T7afmcDjgNsOlA - fetch-clang-19: RaEtKEwoS3y2kW4eCAa3mg - fetch-clang-20: Qn6oA_V6Szed1j5-U-veKA - fetch-clang-8.0: MeOCt3p6RgGclOLwIl9L1g - fetch-cmake: cU8-PULHT5upD5zA1ERVgw - fetch-cpython-3.11.7: fAcei8wwRTuLFMGoAlD4zg - fetch-cpython-3.11.7.exe: b4kYaMVcSBCv_7G02sYxmw - fetch-cpython-3.8.10: YmLZOwiCRwe-iG3grizEuw - fetch-cpython-3.8.10.exe: HApoYEMaSn6I6sEcghhRYA - fetch-dbus-python-1.2.18: RtpFtnLsSqq2ZCr1jrg64A - fetch-dbus-python-1.3.2: VEDFHjskSCGg8mUtm5gdzQ - fetch-dump-syms: aOO-JbTIRByOSsLgrpLwKw - fetch-dxc-src: SSuBaeP_T2SlSbja6XrHrw - fetch-icecat-addons: eY43l8-fSnepoAWb3sGIbA - fetch-fix-stacks: FHZs1BC5RI-dWAC9eBFwzA - fetch-fxc2: a3fyQlqhSIy1WUkfaEPcwA - fetch-gcc-11.4.0: cTZ_OTu-RXqj1WRNKVai1Q - fetch-gcc-8.5.0: NUiq5fgmTi-c66ccwbjlWQ - fetch-gcc-9.5.0: KKKEdpaWQJSsd5qtcduVtQ - fetch-gmp-6.1.0: PP265G9URlmEV4Tz8ml1GQ - fetch-gn: PgcGz9AvQ1OpP4rj3yuVFg - fetch-gnumake: HpRGXmrFQi6M7hHEkK8Kow - fetch-grcov: CeGVZv3lTxeoqGPsp6uNNA - fetch-hfsplus-tools: aKMy4WODQ6uDRnupaaXY8Q - fetch-isl-0.16.1: bXfNaj6aS7m5giQEjc0YuA - fetch-jdk-8-linux64: VdDh9-fjTsuG8MJ2CqsEaA - fetch-ldid: PhvCa89nSoaHOQSG7cGP-A - fetch-libdmg-hfsplus: SnVm-7q-TISQJ4qtq6CbUQ - fetch-libtapi: ROnMd5m6QyyqNHQbSR7TUQ - fetch-libxml2: OSmIUM9dSJOdTm16sdxhjA - fetch-llvm-mingw: GfcnxQdTT6yRm7t1dSGAlw - fetch-macosx64-cmake: Lk9c02zsRvOzTh7ZDMT7WA - fetch-macosx64-ninja: GJXTEcJ3TBKMzH3VeV4iNg - fetch-makecab: DtE8ROvTQ7GFPDJfraMxsA - fetch-mingw-w64: DdcW5OyjSiWUCoyN_l9blw - fetch-mozilla-pdf.js: N7nX3fpSQuyIYJqhQbd-rg - fetch-mpc-1.0.3: aGsmIJ4dRI-WCNVUPcglQg - fetch-mpfr-3.1.4: KWesIGhCTUeKYPWkLu75vQ - fetch-msix-packaging: WTTHd-mETpqBgS71Q5G0lw - fetch-nasm-2.14.02: RmV-0rgJQmi1kyFwugzXzA - fetch-nasm-2.16.03: A7K13w6XQ32Yd5ByjHDpXg - fetch-nodejs-12-linux64: Yon7l1u_R7CII-t2cOffbg - fetch-nodejs-22-linux64-arm64: QMoVkSg5RQu_McShF-ASJA - fetch-nodejs-22-macosx64: Q6tS5m3wR82rSHqnWVphJg - fetch-nodejs-22-macosx64-arm64: ftIelx-6QaieL_synauVUQ - fetch-nodejs-22-source: Gl5piWAERuiq9FgbGzCpFA - fetch-nodejs-22-win32: UYNK7ijdSoeEbQy6uSMvQQ - fetch-nodejs-22-win64: V-SLQW8GSRaFRnt4ywcL3A - fetch-nsis-3.07: CPS0m6ljRIO_bH_TXfX1jg - fetch-nsis-3.07-win: fTUvbGzRTjKBT1BkzrDLEw - fetch-ort.jsep.wasm: Utobyfo6Qo6IY9Bm5T8C2Q - fetch-pkgconf: O1DtweCRREWpCcWxWDniSA - fetch-python-dbusmock-0.32.2: cXeNbNljRd-lO4a8CQATzA - fetch-rust-1.81.0: T8S_OdK5RiKjXFg1bcYEZw - fetch-rust-minidump: fYvmsS47RO69aMykxBBYow - fetch-rust-size: MB9XIF7fQF-tc9Gni4-O_w - fetch-sccache: ZiDZncZ3RYy34kfXomSvsw - fetch-sonatype-nexus: F9yxvqZjTAayrMBwsPZAeQ - fetch-translations.esen.lex: H_FbC1lLSMeWia2cxmNL8g - fetch-translations.esen.model: QHCrqg2LSZKG93snq9s5Xw - fetch-translations.esen.vocab: MLwEj92oQ8G8CByM-9LRbQ - fetch-translations.inference: B46Me3iMS2u_IwYlQTXk9Q - fetch-upx-3.95-win: dtB_tZumSUax0mmMNdxv7Q - fetch-uv: FlTNOcKKQxKtWwd-XONDgA - fetch-wasi-sdk: Gq5OC-ixSS2673o6-NeCfQ - fetch-wasi-sdk-11: Yvoa2dPNRqmI27JicB1tag - fetch-win64-ninja: VrDuxADhQgiugUMbBjIiAQ - fetch-winchecksec: Hjxg1tpFRCyyqM1pDVRWrQ - fetch-windows-rs: ZQ6ctHb-Qcm55C3X5KkMHw - fetch-wine: QlgCKCDcSzu_AnjJxdMOkw - fetch-wix-3.14.0: HpkuCv-nRsOxR3Cz8GwafQ - fetch-xar: bzjznAGSQHapfs6I_g4MGQ - fetch-xz-5.4.4: U2Cfrq1gSgSWoi1BOUHp2w - fetch-zlib-1.3.1: E7JkeNrAReKrjlRwyW4Ekg - fuzzing-grizzly-linux32-debug: dPnICSURQLq9GNCfwo5yfQ - fuzzing-grizzly-linux32-opt: O2cHKBUfTNiiw8MT4fHGkA - fuzzing-grizzly-linux64-debug: UlquLjjUQAmhlCy_i2Pr9A - fuzzing-grizzly-linux64-opt: DwMRY3lpTIGzyLRbOQ_52A - fuzzing-grizzly-linux64-tsan: MTywfwpJSZqft4fIJzKEIg - fuzzing-grizzly-osx-aarch64-debug: Pdr7HLtlT4W0t-iV69RllQ - fuzzing-grizzly-osx-aarch64-opt: e_lutKnKRIGkam6aG-ufPg - fuzzing-grizzly-osx-debug: e_atw2P8TxCc4qeH3ZMr7Q - fuzzing-grizzly-osx-opt: Qia4FnliQ7CPV1HY-9j_NQ - fuzzing-grizzly-windows64-opt: QLiDNH9VQsaToGyR4Y7PEg - generate-profile-linux-shippable/opt: cTO4zpUTTSGjRQSWouUXlQ - generate-profile-linux64-shippable/opt: MU40_Bh-SpaonWrH1rMZnQ - generate-profile-macosx64-aarch64-shippable/opt: T27MtDtLSp-7UM1RIhONjw - generate-profile-macosx64-shippable/opt: J_fCmu-JQ-W4kaPAnytKrg - generate-profile-win32-shippable/opt: MTbg0ZK9TCSTTYpNVeMIjA - generate-profile-win64-aarch64-shippable/opt: VfxmR51LQXia1qkC4RGCDA - generate-profile-win64-shippable/opt: a3Z8dCBzTYKi-Gj2ib4Zog - hazard-linux64-haz/debug: fowX-sg3Rqm-Tyucg3L7pw - instrumented-build-linux-shippable/opt: JV6BoHPKT46CPPS6UXU8YQ - instrumented-build-linux64-shippable/opt: PK3jAVlVTSO-dAkW85vb5g - instrumented-build-macosx64-aarch64-shippable/opt: XFD9mmFLQE65gyFxJu2e1Q - instrumented-build-macosx64-shippable/opt: VXzog711RUSpQtQLEhJI0g - instrumented-build-win32-shippable/opt: Mg0BlJXxTO2gWJnXZYrcJA - instrumented-build-win64-aarch64-shippable/opt: WQwrmfbMSjOnaqMPh9ZB5A - instrumented-build-win64-shippable/opt: ZH8N_0WqSr6k_atvB7BlmA - packages-deb12-mercurial: ATSDrlHTRXmRCuxGDzkNTA - packages-deb12-python-zstandard: PGm7C6p0T8-SbxTTtBblig - packages-deb12-valgrind: KbXFbm03Q5eTFzsO9m-dSg - packages-deb8-32-gcc-8: CrHg8i1-SGqdTj-NpDVVyg - packages-deb8-gcc-10: fjMqdls0QBO9M1y7tlnq4A - packages-deb8-gcc-8: bZ8WOgrnS2m4wG77ZT6iUw - packages-deb8-gtk3: AW171dBuSkytt9SfH1-pOQ - packages-ub18-32-libc6: MhEDvzH5RUahbSQ90OKqLg - packages-ub18-libc6: OlR6_SgxTWOCvFHkfBYzkg - packages-ub18-mercurial: BJbWXgFSSiCV0sPucuOd8Q - packages-ub18-pyatspi: KMOvc2JFRFyzUP58lWnh6Q - packages-ub18-pygobject: Js8eM8ZuQBSbyFP_CAPS2g - packages-ub18-python-dbus: KU85JuXNSKG8NIGx2QtrAw - packages-ub18-python-psutil: fDZNxr7UTpmli_mzEP_9Ig - packages-ub18-python-zstandard: eBnMky38R5Gxd3wihGeTZw - packages-ub20-mercurial: GqxIBCKVRlKOo6X9e-8GGg - packages-ub20-python-zstandard: URQ7Uu1TR4WHQp1Z13CHPw - packages-ub22-arm64-mercurial: FqnQoOYxQwS1QMGzuNDKuQ - packages-ub22-arm64-python-zstandard: LzBbpsfpQPGgpZ899IzbUw - packages-ub22-mercurial: XzRVE4AsTkGDFg7slSSmQA - packages-ub22-python-zstandard: cyMtHWRaTOSpCLjeDM2IpQ - packages-ub24-arm64-mercurial: Xn5kY-XmSIKKG2iWBgBs2Q - packages-ub24-arm64-python-zstandard: AIFs8vm6RhKXRSVihTKh_w - packages-ub24-mercurial: dnQVxdTfTze_oQqpsrspCA - packages-ub24-python-zstandard: XULo3NLyToGCJwrM86UJ2g - repackage-linux-shippable/opt: a6tlgH-VTq22sS71VHp7yw - repackage-linux64-aarch64-shippable/opt: Drc5NqttRT6wdDA7rn4WUA - repackage-linux64-shippable/opt: Gj_qY80BRla-MVEqc32Row - repackage-macosx64-aarch64/debug: U-M8qo9HTDG5rkpyX28Xhg - repackage-macosx64-shippable/opt: RRaP7yLTQuWTn9yC5I-bKw - repackage-macosx64/debug: bG_UTRQFS1mZ-32SLunSlQ - repackage-msi-win32-shippable/opt: bzJdrd9wSdu33qaBUuvM6w - repackage-msi-win64-shippable/opt: D-kGeSCFRz6B6_Yuk1ZV5g - repackage-msix-win64/debug: NerpOP6ZQlOGsR9FJbGfSw - repackage-shippable-l10n-msix-win32-shippable/opt: X9Rtf7oQSwazSSP8zCa5MQ - repackage-shippable-l10n-msix-win64-aarch64-shippable/opt: fhUHy-gHQCewZXnvZIc6pA - repackage-shippable-l10n-msix-win64-shippable/opt: P70p805AQUWZ44ESzK4czA - repackage-signing-msi-win32-shippable/opt: c8KzN4ooTPO24Vq51DGtvQ - repackage-signing-msi-win64-shippable/opt: KqePlKTtSsSlFAghV_XzEA - repackage-signing-msix-win64/debug: EO4h1p-5Te2k8NIENajDrw - repackage-signing-shippable-l10n-msix-win32-shippable/opt: UVrDYFoVR1q7NvvYKa6Ssw - repackage-signing-shippable-l10n-msix-win64-aarch64-shippable/opt: eheqaLXdSVKQejraiWt1uA - repackage-signing-shippable-l10n-msix-win64-shippable/opt: EcepTky1R3KiI1jlmyqKZA - repackage-signing-win32-shippable/opt: E5m4wah6T5ysxyYuW0w9Mw - repackage-signing-win64-aarch64-shippable/opt: RVIEKi1uQ_qd6r7c4TC9kA - repackage-signing-win64-shippable/opt: Wh180JmoTeOaNR2wKBUrJA - repackage-win32-shippable/opt: eWK7woTwSt-Ky_wRfCH0Lw - repackage-win64-aarch64-shippable/opt: exVfkjHVRuGoq3D0iOI6hA - repackage-win64-shippable/opt: DoLMVNbORjSKvOmO3DBTJA - shippable-l10n-linux64-shippable-1/opt: Cue1NgiwStiJHKmST3V0Xw - shippable-l10n-linux64-shippable-10/opt: DIrbnM1US1-BIk6xiZw0aA - shippable-l10n-linux64-shippable-11/opt: NJHeFSZWQhKuXV8pf9L-wA - shippable-l10n-linux64-shippable-12/opt: Fv7-Wa0sQCm3c0EewLfJmA - shippable-l10n-linux64-shippable-13/opt: Ol_3VUWhRP2WdLAwzLy4Mg - shippable-l10n-linux64-shippable-14/opt: LXYB9HFKT2q1HTUJ8wzwmA - shippable-l10n-linux64-shippable-15/opt: SdbFQ0AhSLOkfC3fOQhShw - shippable-l10n-linux64-shippable-16/opt: E4RCAIE-S_O7ARg5MbC9VA - shippable-l10n-linux64-shippable-17/opt: aALm7W6uR7aH742NAVCW2g - shippable-l10n-linux64-shippable-18/opt: GcJXVoBfRb2g_GhCJkQaCg - shippable-l10n-linux64-shippable-19/opt: Pds_gp0PQ0Kn5vF8aDt8oQ - shippable-l10n-linux64-shippable-2/opt: coFTjIDZQLGM9Y9Rh4hZvQ - shippable-l10n-linux64-shippable-20/opt: L4dELttERAGI9Fx09XXpmQ - shippable-l10n-linux64-shippable-21/opt: dGqYOOSyTQ-cF_aHZsGB7Q - shippable-l10n-linux64-shippable-3/opt: MmPeW9KyR0u9PG4obtjZPA - shippable-l10n-linux64-shippable-4/opt: CO4C_NCDRIyrUbHH7GuSkw - shippable-l10n-linux64-shippable-5/opt: NEPrNi3KQtCKd9nDdP-C7Q - shippable-l10n-linux64-shippable-6/opt: VNeeBXSIRheJsyrwt1jFUQ - shippable-l10n-linux64-shippable-7/opt: SZtt0USJT8qj8oxF6HRaQQ - shippable-l10n-linux64-shippable-8/opt: I4cgSNVpTM6xTDn6CwJHzQ - shippable-l10n-linux64-shippable-9/opt: VVc5fyp7QMeqkrv32pFZ-Q - shippable-l10n-signing-linux64-shippable-1/opt: cdyoQhUFR-GjIogt2OlDeg - shippable-l10n-signing-linux64-shippable-10/opt: VQRmcdsaQTKJkIKAuweqxg - shippable-l10n-signing-linux64-shippable-11/opt: BQx__0sITt6QR6cng3dNHA - shippable-l10n-signing-linux64-shippable-12/opt: JxkXdvznTnWru4PWIL4CRA - shippable-l10n-signing-linux64-shippable-13/opt: ScDJt8SoQ_6F47MvdoaTmQ - shippable-l10n-signing-linux64-shippable-14/opt: IN0wJO_OSx6T01yoNv-AXA - shippable-l10n-signing-linux64-shippable-15/opt: ABx7TBOhQ0eL8R2Itc_9Gg - shippable-l10n-signing-linux64-shippable-16/opt: Wz2QEoI2R7Swsuno89f1XQ - shippable-l10n-signing-linux64-shippable-17/opt: eTgv0M8mRaWtrmkD9kBy7g - shippable-l10n-signing-linux64-shippable-18/opt: TtDhIAbRRSyI-VnXgMEFfw - shippable-l10n-signing-linux64-shippable-19/opt: Zmka7YAVTfSpQsO7qBbDew - shippable-l10n-signing-linux64-shippable-2/opt: K1po2LGeR96zCe0FL-OmLQ - shippable-l10n-signing-linux64-shippable-20/opt: PaNPYJyURMeIunoc1p0oLQ - shippable-l10n-signing-linux64-shippable-21/opt: BqDDoPrPS3yNXRq2iZ9C2A - shippable-l10n-signing-linux64-shippable-3/opt: e1Vqr9XKSZyS3ZM_mcntXA - shippable-l10n-signing-linux64-shippable-4/opt: Dd3WWBXhS0OheF-DgWdNyg - shippable-l10n-signing-linux64-shippable-5/opt: Fz9lUBEVTH6TlcykwxnX6Q - shippable-l10n-signing-linux64-shippable-6/opt: b33KvsZiQfmqmN_U4s0Tiw - shippable-l10n-signing-linux64-shippable-7/opt: Pe7enQuhR9ywlhKRkkYc6A - shippable-l10n-signing-linux64-shippable-8/opt: YZPAuybMRGWjj2szt0T5_Q - shippable-l10n-signing-linux64-shippable-9/opt: ItplyXpuTfCRC6ymAdT4vg - source-test-mozlint-clang-format: IOtRXCXaSGGy6Bo7H8qO1g - source-test-mozlint-codespell: SVEKinrHTFqKkguzjv9uaQ - source-test-mozlint-file-perm: Fp8ri34USsCPezWTRBWVsg - source-test-mozlint-file-whitespace: S0KPnIcCSuOMub7yoqAg6Q - source-test-mozlint-license: KbW8H_O2QkaNjsP4s2bf4Q - source-test-mozlint-lintpref: QeVeR5BITdOiwbVZ77ddQA - source-test-mozlint-mingw-cap: ERsm_XI8SACTXudLfd-lGg - source-test-mozlint-mscom-init: ejXzxCeTSVitJaoPzdvu0Q - source-test-mozlint-rejected-words: Qh8qVmWmSQa-ulFHiHnK-Q - source-test-mozlint-trojan-source: PfXbVEUHS8-w_fJLMZlqWg - source-test-mozlint-yaml: aslxREd_QWuxURZLhUGTDw - source-test-puppeteer-puppeteer-1: CAnjL0AmTpKgZTwJtqyIHg - source-test-puppeteer-puppeteer-2: EtYgBRfmRfKvlBfd7MWfSA - source-test-python-mozbuild-linux1804-64/opt-py3: ZeOuUis-Qh6LFmFpqdz7-g - source-test-python-mozbuild-macosx1470-64/opt-py3: Yo66fmM6RaOMA3XH3bLvxQ - source-test-python-mozbuild-windows11-64/opt-py3: aHHtJIT8Tv6HR19KtNvagQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-1: BnU-ddL7SDKN0kVrXlUImA - test-linux1804-32-shippable-qr/opt-web-platform-tests-10: bhlh4YliToWp8is2yRshHQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-2: UGx4m3AwSK6ISIft2yHouQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-3: D4lUJBK8Sniww-fJ0LLEFQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-4: cEMeZDGaQ1OdxVPOog3ryg - test-linux1804-32-shippable-qr/opt-web-platform-tests-5: X01KpyCJTVm1urEEOaaFqA - test-linux1804-32-shippable-qr/opt-web-platform-tests-6: ObqO2stxSjOEerfhpKu23w - test-linux1804-32-shippable-qr/opt-web-platform-tests-7: dytYIMQwQ3uAo7EOTm0glA - test-linux1804-32-shippable-qr/opt-web-platform-tests-8: EFKNSXy4SLedR03TVllBpA - test-linux1804-32-shippable-qr/opt-web-platform-tests-9: bWmm-ru0SdOLWnapCvBb_Q - test-linux1804-32-shippable-qr/opt-web-platform-tests-eme: WJoEp5KFRJGCPDudp_DfMA - test-linux1804-32-shippable-qr/opt-web-platform-tests-pb: cEjLq4-cT_SKYVcG1hsXWg - test-linux1804-32-shippable-qr/opt-web-platform-tests-webcodecs: DznhGgYKROmxWEA-XaE0kA - test-linux1804-64-asan-qr/opt-cppunittest-1proc: IJ9PKhunTzKSBozbZ-3cXQ - test-linux1804-64-asan-qr/opt-crashtest: AXKEOFNkSJK8X26TjbABZA - test-linux1804-64-asan-qr/opt-crashtest-swr: cjgAhUEuSxiq1H4xeVsWsQ - test-linux1804-64-asan-qr/opt-icecat-ui-functional: CVZs-sYkRhuyeA05EGtVgg - test-linux1804-64-asan-qr/opt-gtest-1proc: WbyIFsvGSACD0z41rhq8Pw - test-linux1804-64-asan-qr/opt-marionette-1: AZamaRGRQZih1V6U6m2mfQ - test-linux1804-64-asan-qr/opt-marionette-2: MF41I2pgSY6Ey_zQPx_WTg - test-linux1804-64-asan-qr/opt-marionette-unittest: GE6PnSsMS3SOrERQeoEnRg - test-linux1804-64-asan-qr/opt-mochitest-a11y-1proc: SRHXNO9SRHWzt0K5QkkgRw - test-linux1804-64-asan-qr/opt-mochitest-browser-a11y-1: KHe0r-4qQRmE-EXn4B1qGA - test-linux1804-64-asan-qr/opt-mochitest-browser-a11y-2: YJsR4XBKTZaOWViHyjIxrA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-1: XBiPFn9vQWS8vdctrpPFDQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-10: fS5ONweISgqotXkHH-2hiw - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-11: cdBEJjK4TYeHF239fHbEEg - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-12: NW6S1Z7bThij87VeNsfeAQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-13: RbEVZhZtT26IAG_IlIShGA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-14: I8zjLflfQ0Cl0jYxdcNt7g - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-15: cnzjJ2JGQDSA4gB6RwufNQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-16: PyRjHn1_TquQe4vPD1eTow - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-2: d5uvjXuOTTaMTJSJvoMDVA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-3: amv5chlFQPKP8aCwuPlnIg - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-4: ZY1-SLVOSpybUfYaLtZmhQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-5: L-uNaUiXRuGXA9uPRaw4zA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-6: bDm4mhtsTd6dJygmL3QN7A - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-7: D2Mq-ehDSj6i1jeUGqQ8oQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-8: Wd9r0d3nTZK7_cXXZ-jIIQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-9: EODl5rS_T9GVR-KSj-9Ahw - test-linux1804-64-asan-qr/opt-mochitest-browser-media: LjLVhsonSsuVe2HcCEdLRw - test-linux1804-64-asan-qr/opt-mochitest-browser-translations: K5cL-UgITBGLPSuBl2D1WQ - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-1: De2EyLwyT1SJYJky3ZrH3A - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-2: dY8o8KeLQfuM6v4z9BvwVQ - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-3: JvmTKkhXRrO4pem_-DQTEA - test-linux1804-64-asan-qr/opt-mochitest-chrome-gpu-1proc: XW6iyq1mS72GhNnOSaQE4w - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-1: RtbXbwcPRCKo__wzlgYFxA - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-2: JIEWu2yxT2mnF_4Q8PFlkg - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-3: Esp0hkVeT_mOU_yocO3_xQ - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-4: QTL-uhznSemhHlabH-xESw - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-5: BBtg8FohS_SjwpezE7Dwcw - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-6: I4S3L983QBKw3zE-Nf_KfA - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-7: HI61ycpOR--pqi8b6j7Wig - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-8: DTHzj-TiTZynMew8vP0Ung - test-linux1804-64-asan-qr/opt-mochitest-media-1: TPq28mE6TUODrjK3_0DQGA - test-linux1804-64-asan-qr/opt-mochitest-media-2: UCKb-gzRSZyMVjBCGkV4hQ - test-linux1804-64-asan-qr/opt-mochitest-media-nogpu-1: YQ38dhJrTDe2MVTK6C13Kw - test-linux1804-64-asan-qr/opt-mochitest-media-nogpu-2: D8KbHRwJT7aQ7n_UdPaMTA - test-linux1804-64-asan-qr/opt-mochitest-media-spi-1: WSzpCOvFRACp4idt_Un3bQ - test-linux1804-64-asan-qr/opt-mochitest-media-spi-2: AwpYR2hYSiu1zfPP9DsNpA - test-linux1804-64-asan-qr/opt-mochitest-plain-1: cfGWqyuhTCSGrsfItau2fw - test-linux1804-64-asan-qr/opt-mochitest-plain-10: d9U3wO0zR0-bcfH0mjeqgg - test-linux1804-64-asan-qr/opt-mochitest-plain-2: cl9uQTaFTBiV9qu38rDgig - test-linux1804-64-asan-qr/opt-mochitest-plain-3: P8pW9-y7SX6J_PawXVzBJg - test-linux1804-64-asan-qr/opt-mochitest-plain-4: OC0lbGZPQkO1bHdaR5MfeQ - test-linux1804-64-asan-qr/opt-mochitest-plain-5: EhBoJzKGTHyEv1OeWOotBg - test-linux1804-64-asan-qr/opt-mochitest-plain-6: fnVvUEeaSnidVQdJC3Nf6Q - test-linux1804-64-asan-qr/opt-mochitest-plain-7: AO-QMAN9QjmZHqbqkNT5pg - test-linux1804-64-asan-qr/opt-mochitest-plain-8: GA1uBQULTsKQ3asofddTPg - test-linux1804-64-asan-qr/opt-mochitest-plain-9: cGmb41DlQ_WgXbx9p_8POg - test-linux1804-64-asan-qr/opt-mochitest-plain-gpu: UrxYjojeQHyzoOmFK0vgmQ - test-linux1804-64-asan-qr/opt-mochitest-remote: bnSuznaxTlig3B75qDYmTA - test-linux1804-64-asan-qr/opt-mochitest-webgl1-core: IuY_8AG1Q2udxPthP5ow5w - test-linux1804-64-asan-qr/opt-mochitest-webgl1-ext: GS8ZZPu0Q1CzZrN6N9uv1g - test-linux1804-64-asan-qr/opt-mochitest-webgl2-core: MXVxUCV6QUOiuj8BGoGg7w - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-1: ECAHgzP9Q02Eu-XdRuY6ww - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-2: CN8fUGthSyCc4YP-PGatSA - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-3: bfX5x87WSq6Ea4UjFSviIQ - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-4: KpEU5_LKSDixk_G41YhywQ - test-linux1804-64-asan-qr/opt-reftest-swr-1: CRu4Gl4bT0q4SjyZ8NO23A - test-linux1804-64-asan-qr/opt-reftest-swr-2: dE8quLGwR9C0L2jCEtqEAg - test-linux1804-64-asan-qr/opt-reftest-swr-3: N6Ntx52jQ0G-BT-BnSWltg - test-linux1804-64-asan-qr/opt-reftest-swr-4: fX27_8BPTyS1YWdYb3p-8Q - test-linux1804-64-asan-qr/opt-reftest-swr-5: VZ0QA9w8Sd6Yr6fYDqlMOQ - test-linux1804-64-asan-qr/opt-reftest-swr-6: f8q4LqiJTqiA4Ze6hrG9mQ - test-linux1804-64-asan-qr/opt-reftest-swr-7: eqE2qHApQvG-uKdRLGi_6A - test-linux1804-64-asan-qr/opt-reftest-swr-8: VhPpuI3RRuGmOakPPBzPXw - test-linux1804-64-asan-qr/opt-telemetry-tests-client: b5IcvN_JQTuCm82WUMuZ-g - test-linux1804-64-asan-qr/opt-web-platform-tests-1: OBP35xafSfCxebqWWBpeXA - test-linux1804-64-asan-qr/opt-web-platform-tests-10: cMY9ucBSQKabvRuuhZPV2w - test-linux1804-64-asan-qr/opt-web-platform-tests-11: CP3dFg6xQQKKxJrCJnQPOw - test-linux1804-64-asan-qr/opt-web-platform-tests-12: SkKT4m0DTBqynWSxQ5dlJA - test-linux1804-64-asan-qr/opt-web-platform-tests-13: aCmHFFrnSSy_B0I3I_O1cg - test-linux1804-64-asan-qr/opt-web-platform-tests-14: d8qqQoo4QAmg9LHxyh_ZnQ - test-linux1804-64-asan-qr/opt-web-platform-tests-15: B48NZBsqSiOxC36MrcLuQw - test-linux1804-64-asan-qr/opt-web-platform-tests-16: XYXPKJGSQZu8PP-FEieqIw - test-linux1804-64-asan-qr/opt-web-platform-tests-17: Pyt5lSx1Q0OoFY7J2G2a9A - test-linux1804-64-asan-qr/opt-web-platform-tests-18: LySChIRPQ2SGMptvABLAew - test-linux1804-64-asan-qr/opt-web-platform-tests-19: PR-XvHcgQ5KWJbzE-hDiSQ - test-linux1804-64-asan-qr/opt-web-platform-tests-2: aHgO3vJ3SaqO3w5E1iTo-Q - test-linux1804-64-asan-qr/opt-web-platform-tests-20: CqG-BlJZQE68DQdSmeXt4w - test-linux1804-64-asan-qr/opt-web-platform-tests-21: BTOjYTPsR_yKVixYJZfJRg - test-linux1804-64-asan-qr/opt-web-platform-tests-22: Gwk9knzBTJ6P1wPHf0D9gg - test-linux1804-64-asan-qr/opt-web-platform-tests-3: TjqJWycDSs2oBcUK0kL9Ow - test-linux1804-64-asan-qr/opt-web-platform-tests-4: EScWWDwxSveyHB4WHqkEkw - test-linux1804-64-asan-qr/opt-web-platform-tests-5: LPnQfOUDSEGQe8H42OIwmA - test-linux1804-64-asan-qr/opt-web-platform-tests-6: JQFm88kBTvGXwgzM3mVRlg - test-linux1804-64-asan-qr/opt-web-platform-tests-7: QywvsZWERR6gtDN1sLJtYA - test-linux1804-64-asan-qr/opt-web-platform-tests-8: Keg_ushiRByLN3vpM-KHRQ - test-linux1804-64-asan-qr/opt-web-platform-tests-9: Tr7l0a5yRT6rZZ5Y6MqoFg - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-1: EFo4JlbaSX-Lq3XvAFdHIQ - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-2: a665XEOlSP2gWayXs567og - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-3: H0yxKo9RSte6ypPpWO_4xw - test-linux1804-64-asan-qr/opt-web-platform-tests-crashtest: YWp4B2WkTl62SdfNJ5nidQ - test-linux1804-64-asan-qr/opt-web-platform-tests-eme: IBWuDrhFST6zvm1HaP1hFQ - test-linux1804-64-asan-qr/opt-web-platform-tests-pb: ePrioGh6R0GtYOWAtk8XfA - test-linux1804-64-asan-qr/opt-web-platform-tests-print-reftest: TvRAIzKyQYmqrDNksC5Cpw - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-1: S3TqS9VlT7a_KpO49ujx0g - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-2: FVCZbG8lT4yAngpxE00DvQ - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-3: NzyBs9xMQYmxvUVyJAYBbA - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-4: RmOmq8yjSI2WHRAmrrVyZg - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-5: PRdp3VmQRxO1AsmpgYpWUg - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-6: YX0UoHQlTeSnDHptu3pr_w - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-1: OkOxEgwgSMScyQ228n9iow - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-2: ZRHeRSjuTteD8d9lWZR43Q - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-3: f6Uxsrc9R7yboroE7S3_wg - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-4: MDzzHAsmSbyGgtHv81Vh0g - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-5: Lt3uv7p4QEm2Fu7q_t482w - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-1: Y-3kmgKVSbe8lOvb5R2doA - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-2: d4asqfphSfarE4OXGoKY6A - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-3: BfTxMfcGTcCoC9Uvi1AlHg - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-4: C2Y_6mGHRZGSJ2a0VQQUJw - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-5: KRXm35rnSBmHom1mB-c_cQ - test-linux1804-64-asan-qr/opt-web-platform-tests-webcodecs: NiDSlYk2QEy_zCLFuRUKeg - test-linux1804-64-asan-qr/opt-xpcshell-1: OTgPbkESQNqaYmQehBx1rQ - test-linux1804-64-asan-qr/opt-xpcshell-2: WT6aw0KxRyiCjKJG2ZbQpA - test-linux1804-64-asan-qr/opt-xpcshell-3: Z9LsSRdTRfGlRuI1XnVZ7A - test-linux1804-64-asan-qr/opt-xpcshell-4: SBJ1NOsdQLeMEUZrpFQWNw - test-linux1804-64-qr/debug-cppunittest-1proc: MGru4JDbSyy6MyD-9li92A - test-linux1804-64-qr/debug-crashtest: SFRbJVgjSGyigTS3d3H0Iw - test-linux1804-64-qr/debug-crashtest-ioi: PBIIlJ9zQ7KX3arLs6Vm9A - test-linux1804-64-qr/debug-crashtest-swr: NXD8pKoGRSKONat4GyZ-aQ - test-linux1804-64-qr/debug-icecat-ui-functional: FewcQrsgR0uX9i-1Yn5VIg - test-linux1804-64-qr/debug-gtest-1proc: DWGjt5_4SCOyKir-hPQ1ew - test-linux1804-64-qr/debug-gtest-ioi: WFOb6WiIRC-VsyqSLLLzyw - test-linux1804-64-qr/debug-marionette: J0oDjsOPSMaBPi4Q3g1qqA - test-linux1804-64-qr/debug-marionette-ioi: WH7bn5_RQ4Gbg6DwQ2xzmw - test-linux1804-64-qr/debug-marionette-swr: BIck2ZmJR7it-h6NQ7GlTg - test-linux1804-64-qr/debug-marionette-unittest: VQ75B0ZuRtWzMANA7362UA - test-linux1804-64-qr/debug-marionette-unittest-swr: R7M6LgqMQ_m8lHQRGZUStA - test-linux1804-64-qr/debug-mochitest-a11y-1proc: M91gC7P6QOmvNJ_oLadm2w - test-linux1804-64-qr/debug-mochitest-a11y-swr-1proc: TD7JC6JnSou-j0idwqBikg - test-linux1804-64-qr/debug-mochitest-browser-a11y: ERSLtOJVQumS7IIJH1_IUg - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-1: D4KTkQRJRc-GJKOaIAikHA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-10: DOrPz76_RUe-Ojs6YDZnoQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-11: b39pv2TzQ8iokMw5FJdn7Q - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-12: f21BzDXMQkmxcQjeXdke0g - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-13: REIyS79pQJ2BUoKMrcnHvw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-14: bLj13AcCSxOtE7IXxMMWwA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-15: Wjp0qgpFSfq7SESXetGZhQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-16: ClZ83cShRB2t9XARKaEVLQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-2: cMrlfG29S7KFtC6sRB3DlA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-3: baLGP4ZPS8-AVApo00EFtw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-4: X4-m3fFESye9DTeUlPVxDg - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-5: NtoYW0GQTuKxUedQQFal6Q - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-6: CsfX2-rdQWmpRB6Dgjsraw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-7: C3Zxm5euQXyTUcJDZQ6miQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-8: Xht38F7YSCu2lB0PaWO68g - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-9: cicfxAsyQCWWPC3eOWyYrw - test-linux1804-64-qr/debug-mochitest-browser-media: GvobJL42RlK8T-d2_kBWZQ - test-linux1804-64-qr/debug-mochitest-browser-translations: NBiPSTGOTI6WdzGo5-N3Jg - test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: SRu2Ob8lSnu1zLBPrU_-zw - test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: EiWn39CzToSgmsyoGnO34g - test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: brSNOKBtTBG3txD8x04R1Q - test-linux1804-64-qr/debug-mochitest-chrome-gpu-1proc: bZrS3j8HQaiGaqPLX0eVYg - test-linux1804-64-qr/debug-mochitest-chrome-gpu-swr-1proc: STtZ38AOQ7-RguOD_jQ3RQ - test-linux1804-64-qr/debug-mochitest-chrome-ioi: M3xIF-R_S5iVsjwdrgAFwQ - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-1: Xm4u30iQSly7vSlzbMOgRw - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-2: FLR-drYfTWCMUKyH7vVIqA - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-3: WmW--AdqRc6Ery885IsLug - test-linux1804-64-qr/debug-mochitest-devtools-chrome-1: Cw5fRxnWRF6K2cMUAlmwxA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-10: JlHZreoXSsuVCX5NTw44UQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-11: XJTZUTQzS0yNMaCc9Fp4ww - test-linux1804-64-qr/debug-mochitest-devtools-chrome-12: Y_bpaddiSTuBe-lovF35Hw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-13: Z-MnmQxJQqC0h3CcNx9TtQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-14: IGWatsQBReWHNO17w-tgjA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-2: UHavfQR1QpirvVvJ6AVLfg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-3: OCoZHBKnQU-2MKVOk6MwGA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-4: SxB0M-caT3SaP51le48G9w - test-linux1804-64-qr/debug-mochitest-devtools-chrome-5: OSRMZd1wSc2LUBQtqt0NfQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-6: YepPnqLoRBaL7lfpLfZgOQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-7: ZmgWg4ZRRFqn9Oa557VJPw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-8: Klle_0gcT5KVaKOxR_eD8A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-9: Z1pCbKMdSkmKO6KHbBhTew - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-1: fjPwqjHRQrOrB7tiskC5qQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-10: bL8vA--tTl2DTMiwU9UfzA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-11: XFyTBrkWSzOIwAWvNfShEw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-12: NVXd5N13QveYEWXZh05c-A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-13: c2TQFhEARz2xdcnIj35TCg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-14: WCX7_yopSLaaaXoi6Dc3ag - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-2: Cl0trn4nQ6eCLz6rzW4W-A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-3: VKBnwJtgQ2qbyCwzuzO1aQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-4: Kd8Wf1mWRoKTpGj61f7iWg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-5: CPWv0E02TaqSEGm4FT8ALg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-6: JLOuQ-U3TOWSAW2QlvAqPg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-7: F9P3iRtEQdyH9DulrJFFLg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-8: VjHdNNoiQyuDsrZz-7cNlA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-9: U_w-2FFxQxqOyJdZL8tK5A - test-linux1804-64-qr/debug-mochitest-media-1: VlXJprY4T-mFa35QNso4Sg - test-linux1804-64-qr/debug-mochitest-media-2: UyDiztMGScGVVAWSrvtkrA - test-linux1804-64-qr/debug-mochitest-media-3: ZsNvzbeAQhaykXT8_DFvmQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-1: OkbyZaDuRbi56MIugH92mQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-2: Lqv7ZYU-T2yN37VY9uWPNQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-3: cpsXud4mS9mYoni1K_XEAw - test-linux1804-64-qr/debug-mochitest-media-spi-1: VODBgRmkRY-I2xKUMPXRsQ - test-linux1804-64-qr/debug-mochitest-media-spi-2: Q4B1x2T7RQ-e6m_I_dKL6A - test-linux1804-64-qr/debug-mochitest-media-spi-3: Nm53ZyK3RTqlIBBTeL2gWQ - test-linux1804-64-qr/debug-mochitest-plain-1: SO7en9R6Sx-i5iJ_BhbdXw - test-linux1804-64-qr/debug-mochitest-plain-10: MvnXcOTSRyeQYI53DoYXCQ - test-linux1804-64-qr/debug-mochitest-plain-11: K3hLlGKyTPehVxV4IzSJuQ - test-linux1804-64-qr/debug-mochitest-plain-12: E_GUF1BzTWWmBKUKlSHOuQ - test-linux1804-64-qr/debug-mochitest-plain-13: KvToZNpdRm27x8bNAsjT6w - test-linux1804-64-qr/debug-mochitest-plain-14: UCiTXcEPSvGO1IEtBHWBQQ - test-linux1804-64-qr/debug-mochitest-plain-15: AEsSLF7ATWSwMe7xf4iibQ - test-linux1804-64-qr/debug-mochitest-plain-16: Vjmd2rmvQD6zlfBqwqSLKQ - test-linux1804-64-qr/debug-mochitest-plain-2: MxL1tN_TTrSojZABLs0uYA - test-linux1804-64-qr/debug-mochitest-plain-3: E7EYGTqWQTqoJsD8-RB_vw - test-linux1804-64-qr/debug-mochitest-plain-4: dmLV3PbTSX6HnkTB9PjwQw - test-linux1804-64-qr/debug-mochitest-plain-5: fzsMsSpTQJi3Xe7hrs0YZA - test-linux1804-64-qr/debug-mochitest-plain-6: HcGVO2vKSUW8MhUMevsmKw - test-linux1804-64-qr/debug-mochitest-plain-7: DzR3cmOORAiNwNPVOjnO0A - test-linux1804-64-qr/debug-mochitest-plain-8: V6__2cerThy0FqosIWLgAg - test-linux1804-64-qr/debug-mochitest-plain-9: RMoeV1RbRd62q3BqHGmrmQ - test-linux1804-64-qr/debug-mochitest-plain-gpu: BKEPXv7ITcaucj_s5el2DQ - test-linux1804-64-qr/debug-mochitest-plain-gpu-swr: f80APx-OTsSkfdITKyNK6w - test-linux1804-64-qr/debug-mochitest-plain-http2-1: bBvMUydbRBK1pmS3ySLWxQ - test-linux1804-64-qr/debug-mochitest-plain-http2-10: MHy1UsKTQxqb4vna-QjE7Q - test-linux1804-64-qr/debug-mochitest-plain-http2-11: GsZzmEbiQ3uz1hAOXtVeUw - test-linux1804-64-qr/debug-mochitest-plain-http2-12: dokM-ASHT8CWuB25VeGc0Q - test-linux1804-64-qr/debug-mochitest-plain-http2-13: Ld252SyqRO6K4ha73Td6ow - test-linux1804-64-qr/debug-mochitest-plain-http2-14: WUXK6jSAQRmqkbTNoHFHEA - test-linux1804-64-qr/debug-mochitest-plain-http2-15: I7Lf_8IjTz2rkp5VoMMxrw - test-linux1804-64-qr/debug-mochitest-plain-http2-16: BEwqltfaTAmDfJ2ywMUviw - test-linux1804-64-qr/debug-mochitest-plain-http2-2: F7jfnNbiSCKPL-97W9rrfw - test-linux1804-64-qr/debug-mochitest-plain-http2-3: dMNsJzN2Rx6tGLVVIPnfFA - test-linux1804-64-qr/debug-mochitest-plain-http2-4: StKIh4zOSg-CaLKMOg66LQ - test-linux1804-64-qr/debug-mochitest-plain-http2-5: Dz-ozs25RySvCt7xHvuiNw - test-linux1804-64-qr/debug-mochitest-plain-http2-6: ciKrF852QuWr7RzG1pTpSQ - test-linux1804-64-qr/debug-mochitest-plain-http2-7: aDGFs8ANRpiBkq_O46lyxA - test-linux1804-64-qr/debug-mochitest-plain-http2-8: HbQaApiKSQSPM5-kj8bH4Q - test-linux1804-64-qr/debug-mochitest-plain-http2-9: bxa0STsFTcS5_kg_t76RFA - test-linux1804-64-qr/debug-mochitest-plain-http3-1: d1rdFCWSRmGAJdmMtBExpQ - test-linux1804-64-qr/debug-mochitest-plain-http3-10: I4OR6jNHTvWWtSB9d_4ePQ - test-linux1804-64-qr/debug-mochitest-plain-http3-11: KREj0b_eQDaeTTDd6ha0sA - test-linux1804-64-qr/debug-mochitest-plain-http3-12: Yyz7JpSyRJykBC5o0f5v6w - test-linux1804-64-qr/debug-mochitest-plain-http3-13: dLBZh2kXR7mtcsZ1M67opQ - test-linux1804-64-qr/debug-mochitest-plain-http3-14: eDBtyol-Q4O3vjkMaoH6jQ - test-linux1804-64-qr/debug-mochitest-plain-http3-15: SSz_5qvrQNi9Sqno-AgCDw - test-linux1804-64-qr/debug-mochitest-plain-http3-16: KScj4CxuSUOOyzrq_WaItA - test-linux1804-64-qr/debug-mochitest-plain-http3-2: IPGhkysNTLK4st5tG2_imA - test-linux1804-64-qr/debug-mochitest-plain-http3-3: QIfwQRQGTeSYFf41E0GdGA - test-linux1804-64-qr/debug-mochitest-plain-http3-4: eds3psdGTM2IOpd18VVDrw - test-linux1804-64-qr/debug-mochitest-plain-http3-5: DTJqupg5Q6mXh8sDIR601w - test-linux1804-64-qr/debug-mochitest-plain-http3-6: K_n1NSPYTKG55_NJlQ0pAg - test-linux1804-64-qr/debug-mochitest-plain-http3-7: Rnqy2r3qRFql6gbB-KuZdw - test-linux1804-64-qr/debug-mochitest-plain-http3-8: QNHkKuFeTie4LaP01ECJOw - test-linux1804-64-qr/debug-mochitest-plain-http3-9: csa1zMg8SCa1LyESjJgFbQ - test-linux1804-64-qr/debug-mochitest-plain-ioi: OXssbm3wRK-3OZy7mtKRYA - test-linux1804-64-qr/debug-mochitest-remote: bBMqaeQpTPezQi682TLiMw - test-linux1804-64-qr/debug-mochitest-webgl1-core: WrubNWvgRg2rbMY9lzJOzg - test-linux1804-64-qr/debug-mochitest-webgl1-core-swr: fM5y9qraSFCS03EdM7XaFA - test-linux1804-64-qr/debug-mochitest-webgl1-ext: KT9TpvlQR92_bZNQRPd3ew - test-linux1804-64-qr/debug-mochitest-webgl1-ext-swr: DY1SZVumS4W19W7VpxuqDw - test-linux1804-64-qr/debug-mochitest-webgl2-core: Gju445ShS_6pB5P-FC3s_Q - test-linux1804-64-qr/debug-mochitest-webgl2-core-swr: C3xTl358QSaA1hmp5LanLQ - test-linux1804-64-qr/debug-mochitest-webgl2-ext-1: Ot0g-hSNQF2YEWIFEg93qw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-2: LhpF1p79SNSsp1wZyLSYpA - test-linux1804-64-qr/debug-mochitest-webgl2-ext-3: I8tiahd4QV2wAOppKQK4nw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-4: Lxyagr28Q0KReYObBMyPCg - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-1: CE7nwzCcS46FJenhx0pVTw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-2: IeBhYi6YTB6OgRC_TdmAhA - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-3: WsAJHLK8RUWIWU6zK4Bq0A - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-4: N2OE-SqhQ0qKi3RTPkV0ng - test-linux1804-64-qr/debug-reftest-1: ORO-YxeWQ6u6DshQrcZn0A - test-linux1804-64-qr/debug-reftest-2: eZK4NT6zSfqaBHCTOBt8Ew - test-linux1804-64-qr/debug-reftest-3: WBZrHJSUTEWT-NY7-IW-sw - test-linux1804-64-qr/debug-reftest-4: f_HTxFdzQ2qGdaAJr8ft9g - test-linux1804-64-qr/debug-reftest-5: GL7zEmg8SeO8AY9kWGJ-8A - test-linux1804-64-qr/debug-reftest-6: Fcn_K-lbQIGIiJIez6aGOw - test-linux1804-64-qr/debug-reftest-7: EcmG73wqT-O2VogiZTAVMA - test-linux1804-64-qr/debug-reftest-8: AC-lWme0SoaXzodH5Udr_A - test-linux1804-64-qr/debug-reftest-nogpu-1: NunQZvjxRMueL6VZXzhs8w - test-linux1804-64-qr/debug-reftest-nogpu-2: Iqjxl3j7RZKJGAXfup_Jvg - test-linux1804-64-qr/debug-reftest-nogpu-3: DGlTnJYJTbyGrtVjPgen0g - test-linux1804-64-qr/debug-reftest-nogpu-4: HR18tPQXRiefAF8xhZ0PyA - test-linux1804-64-qr/debug-reftest-nogpu-5: KckTf1n-QcCWBAMYbfhAGg - test-linux1804-64-qr/debug-reftest-nogpu-6: At51U8YDTpWGOHfC4ZE4RA - test-linux1804-64-qr/debug-reftest-nogpu-7: Oy5xU-r-SUuCZX4yWvSJzA - test-linux1804-64-qr/debug-reftest-nogpu-8: ERWewBp9T425FOZqH2rUPA - test-linux1804-64-qr/debug-reftest-s-1: SnpFrzHnQV-TQ-0ikq1Pvw - test-linux1804-64-qr/debug-reftest-s-2: bUqEEY_qSWOlmr-C_CYCxQ - test-linux1804-64-qr/debug-reftest-s-3: clG3VY0PQT-_YXCZVRLDbQ - test-linux1804-64-qr/debug-reftest-s-4: EptoSFIFTjaV6AOqcRv7-Q - test-linux1804-64-qr/debug-reftest-s-5: Q-NaFBDmQz6ghTRCSFjeDg - test-linux1804-64-qr/debug-reftest-s-6: eRpqp4BeRhCGCsQ0EYc8Ig - test-linux1804-64-qr/debug-reftest-s-7: D7MBz0mWTNKCJL9r_CEtJA - test-linux1804-64-qr/debug-reftest-s-8: NcafSxLATJSxGjm7OX_43Q - test-linux1804-64-qr/debug-reftest-swr-1: ZuEb8JqeTS6iiHNOYKy7Rw - test-linux1804-64-qr/debug-reftest-swr-2: OxGvyxpeTw-go0dvCB5HIw - test-linux1804-64-qr/debug-reftest-swr-3: FnFsv6hDRA6DtbHRSGOihQ - test-linux1804-64-qr/debug-reftest-swr-4: AhyU_b01QaSiHwYzN0OD7Q - test-linux1804-64-qr/debug-reftest-swr-5: OfZSZ31vTXSlEm13x81Mxw - test-linux1804-64-qr/debug-reftest-swr-6: F30zB_-jSjKTQ-eUkmx-Jg - test-linux1804-64-qr/debug-reftest-swr-7: GTU96U8YTrygQK68o6T5LA - test-linux1804-64-qr/debug-reftest-swr-8: Wi_UjvrlQ8yv0IIzbnC_uQ - test-linux1804-64-qr/debug-telemetry-tests-client: Ap_cRHMARDGc8F75Pjy6CQ - test-linux1804-64-qr/debug-web-platform-tests-1: DfQy2AiWRzC4Mx7f9fth2A - test-linux1804-64-qr/debug-web-platform-tests-10: TI7vVJ-mRVag5NNc7JwKfA - test-linux1804-64-qr/debug-web-platform-tests-11: cWdYDIkuT9WO22rF7QY-8A - test-linux1804-64-qr/debug-web-platform-tests-12: TaGICJIXTCWVBshvrbBaPA - test-linux1804-64-qr/debug-web-platform-tests-13: Q7qck7kdRaiIyps1SkGfpw - test-linux1804-64-qr/debug-web-platform-tests-14: AhAnSFrCSYaDOt_0LHM2lA - test-linux1804-64-qr/debug-web-platform-tests-15: T0m5w7djRreFvh3W9TisGA - test-linux1804-64-qr/debug-web-platform-tests-16: TKzA_V6QQGSqtX7z5JQANA - test-linux1804-64-qr/debug-web-platform-tests-2: BcQ0_m4QQQewGM5qQdQUDw - test-linux1804-64-qr/debug-web-platform-tests-3: eO17ExVPTfGoj8Nw9IKSgw - test-linux1804-64-qr/debug-web-platform-tests-4: Tb8Ozv0gScmcXiYNpSRotg - test-linux1804-64-qr/debug-web-platform-tests-5: O5xPlUIjTM-d8yr0u48Nxg - test-linux1804-64-qr/debug-web-platform-tests-6: e1iFqYrGT1GyyImQPjn3cQ - test-linux1804-64-qr/debug-web-platform-tests-7: dh49P3JpSBmJ9W1DrqpAiw - test-linux1804-64-qr/debug-web-platform-tests-8: WBu3ZhpnSwqp5nH1lf1JQQ - test-linux1804-64-qr/debug-web-platform-tests-9: GzsGCuQnQcOnodyPSZrX0Q - test-linux1804-64-qr/debug-web-platform-tests-canvas-1: IQkbmeoDS96K6gstNx7_kw - test-linux1804-64-qr/debug-web-platform-tests-canvas-2: NC5aS6OxSYGzfZmXVhA8bA - test-linux1804-64-qr/debug-web-platform-tests-crashtest: duO-GaHTTSmPv2BRf9pmJw - test-linux1804-64-qr/debug-web-platform-tests-crashtest-swr: EMFaaVybTHu_vs61D8vOhg - test-linux1804-64-qr/debug-web-platform-tests-eme: QzNOPXj1SzmBSwtDUgyo8A - test-linux1804-64-qr/debug-web-platform-tests-ioi: IIfnQra3TC29eYPDDOtEhg - test-linux1804-64-qr/debug-web-platform-tests-pb: SQavglTwQuK8KuJpOKjw_w - test-linux1804-64-qr/debug-web-platform-tests-pb-ioi: CG2b1Dj6TlCOfAbJlD5xpQ - test-linux1804-64-qr/debug-web-platform-tests-print-reftest: Ro66zjrES2SwdQyGb96GjA - test-linux1804-64-qr/debug-web-platform-tests-print-reftest-swr: H3nafxwnTUmk7kUpPuEvBA - test-linux1804-64-qr/debug-web-platform-tests-reftest-1: KS7ls1pUR5GaCONgPySqAg - test-linux1804-64-qr/debug-web-platform-tests-reftest-2: N-UUNxjdTO27W7aHc2wkFg - test-linux1804-64-qr/debug-web-platform-tests-reftest-3: H-SUghiBRye83F9Y8EMeZQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-4: BLZpb8jMRT-IFNare-4d0A - test-linux1804-64-qr/debug-web-platform-tests-reftest-5: bb5UQayRRfGhLMyrHXSYiQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-6: NfFo6at_Q5-0repEF8CkJg - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-1: DT0CNRFSQ7GtQZNY0-yG0Q - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-2: P42MaKYOSVmqeUL_NvRZOQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-3: Vu_DrFg7QtmDdbeBP5J3fA - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-4: FOmsiMnGTbu5tPK4AX4VtQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-5: UmFoU1xISce_JFeNHal-hA - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-6: KMVDXWJBT9K3TFf8mdVrBg - test-linux1804-64-qr/debug-web-platform-tests-wdspec-1: Do7GjyANQ_CT12FXzulSzg - test-linux1804-64-qr/debug-web-platform-tests-wdspec-2: LhnXRXOuRQGZ4chLzFVY-A - test-linux1804-64-qr/debug-web-platform-tests-wdspec-3: c9VxTsw7SGqMvmbFZqlbfw - test-linux1804-64-qr/debug-web-platform-tests-wdspec-4: Mf0Z-tOCTBC79yy7oRvtcQ - test-linux1804-64-qr/debug-web-platform-tests-wdspec-5: D-MNGJlSTjWEnhFgqpCj0Q - test-linux1804-64-qr/debug-web-platform-tests-wdspec-6: STpipcJmQJSQnm0yg5JCiA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-1: CAyVkprgQpSl-67FmJfCUA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-2: G6VqvtLTRc6bSyK5bP3jqA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-3: dP-y2jd5S7WMegiaeLYWFw - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-4: ZEUmRHLjQeW6wLB6KL5vog - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-5: NoUVdezjQUC8ew-BehlJ7A - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-6: epTqK6MpSHOX1Y3AVDF9VA - test-linux1804-64-qr/debug-web-platform-tests-webcodecs: J2aHR1cmRWGC8nrdHGV-qg - test-linux1804-64-qr/debug-xpcshell-1: a3VFYUm4TXimKQW_JDLMcQ - test-linux1804-64-qr/debug-xpcshell-2: F_jfXWTBT2aoiP1jR9n2og - test-linux1804-64-qr/debug-xpcshell-3: fM9D6W4DQ1WIwpxkBe9SEQ - test-linux1804-64-qr/debug-xpcshell-4: dzzYdL0OQlGGFQy-pshJaQ - test-linux1804-64-qr/debug-xpcshell-ioi: Q0CzXz9VQkuwoB9PyyTBGg - test-linux1804-64-shippable-qr/opt-cppunittest-1proc: TFMZzrDnSiOAT7ATKfUzPA - test-linux1804-64-shippable-qr/opt-crashtest: crQ3vybUSeCW4weTKLRtcw - test-linux1804-64-shippable-qr/opt-crashtest-ioi: GKqidZKcRAWpRELhOzpxcA - test-linux1804-64-shippable-qr/opt-icecat-ui-functional: GsaaKGHSROaLiFgbiNf9IQ - test-linux1804-64-shippable-qr/opt-gtest-1proc: OYXLHpFVQd61tJG992xzBw - test-linux1804-64-shippable-qr/opt-gtest-ioi: ctMO7sU-QgCuQEnNZ8VsQA - test-linux1804-64-shippable-qr/opt-marionette: GbUcgVSTRmOF3-pJhuxOyA - test-linux1804-64-shippable-qr/opt-marionette-headless: NlN16TSaTzWpZz5BhJ8C2A - test-linux1804-64-shippable-qr/opt-marionette-ioi: CswzeQpiQQKIFferluvJzw - test-linux1804-64-shippable-qr/opt-marionette-unittest: XAWQRRDSR--EQ7YrtJXfvg - test-linux1804-64-shippable-qr/opt-marionette-unittest-headless: Ap__68kKQoqe1KomS5wnLQ - test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: EQPslHmRQ9ikc_fEHVE6Qw - test-linux1804-64-shippable-qr/opt-mochitest-browser-a11y: Fu2pDs1WTq-eVrPc4PMNbg - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-1: XJOPQF70SaSy61LvJijgaQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-2: FFM_ew9RSES0z61_pe422Q - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-3: YV37dy38TPyvoZy1sIcuxA - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-4: HHnyngmqQWOjwjYzEmi6wg - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-5: GhOnNRtHQtyDEq-6LdAaiw - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-6: Z3h8s4DLSoyAXyxi4FYYTQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-7: HRbXFmWGQmGJwNGmGlfjDQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-8: FkR17wuMTBu-xX8hA8_PKA - test-linux1804-64-shippable-qr/opt-mochitest-browser-media: aTzeji9TRGia9Ud8VZYlyQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-translations: RaewiY9HSWaD349GBUmj-g - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: L3jQ97HLS2a-QIDHw64zzg - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: RlUaApzjQuqsNTH4Rhd-VA - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: UiW4AggDThOyNNfjZh8BVQ - test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: dA9YXZaITX60cY_-Mm0KHQ - test-linux1804-64-shippable-qr/opt-mochitest-chrome-ioi: Xbj8y7R-RHK2_I2UUhB97g - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-1: cld7_-fgRJi0DzG9Uqyozw - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-2: VEQ686tlS-6cSKsoMpiXgw - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-3: dOyCTzX_TXe2FOqtndSuEg - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-4: S3GavKezSlWqswNmxNL1QQ - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-5: Rwb39MbbQTO-4xmnRwzjwQ - test-linux1804-64-shippable-qr/opt-mochitest-media-1: eSLQSnc_TQ69sunL5j3VLg - test-linux1804-64-shippable-qr/opt-mochitest-media-2: Ogg3KggFSsOYtUqz6ZtGZQ - test-linux1804-64-shippable-qr/opt-mochitest-media-nogpu-1: ICZyHBBMR3S1EpXLVNy1QQ - test-linux1804-64-shippable-qr/opt-mochitest-media-nogpu-2: fXZaL3VTSmOwvx3w8sk3Gg - test-linux1804-64-shippable-qr/opt-mochitest-media-spi-1: ekF5SOWuTESd5C4cm97XeA - test-linux1804-64-shippable-qr/opt-mochitest-media-spi-2: JUa2qiKASVu74pcBJp_KIA - test-linux1804-64-shippable-qr/opt-mochitest-plain-1: RTBLlCJjRBKDFRIklulghA - test-linux1804-64-shippable-qr/opt-mochitest-plain-2: btTy9weMQ5G27bqAeHBQ6A - test-linux1804-64-shippable-qr/opt-mochitest-plain-3: VhnTSQHcRA6Bsq3dWvImQQ - test-linux1804-64-shippable-qr/opt-mochitest-plain-4: InIWtYrRTXyx1opThu8Tew - test-linux1804-64-shippable-qr/opt-mochitest-plain-5: C5Sbc7vnQn6LL2_VDtMG0Q - test-linux1804-64-shippable-qr/opt-mochitest-plain-6: DUlUR3hSTHq1VARzh11pRw - test-linux1804-64-shippable-qr/opt-mochitest-plain-7: RtLxkBoOR2-A57BLxN_FLw - test-linux1804-64-shippable-qr/opt-mochitest-plain-8: F8OPMM1DSNKboNSY-y9-kg - test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu: WORMsqRVRZWbGfI3xS652g - test-linux1804-64-shippable-qr/opt-mochitest-plain-ioi: bSowmc0RT4-VhCmNLF-igw - test-linux1804-64-shippable-qr/opt-mochitest-remote: Op5cozQZQgSVqhfPJr5sBA - test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core: AVNjxHo1R-6VUWFKHP7oow - test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext: GWNVOxZeTWG62z222JKWgg - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core: XdVOqH4YRL6Nx3-qIHuieg - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-1: aTAJf6fySDeAdXtc1lUdkA - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-2: e6rAroJVQSGhK1loHmVCFA - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-3: RB74H1wjQr6qsy1eldfZ2A - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-4: BbiQ0u53QIe0AhbU6MOi2Q - test-linux1804-64-shippable-qr/opt-reftest-1: TPQrmCvYSXWt7vPnzHknKQ - test-linux1804-64-shippable-qr/opt-reftest-2: cOxnoWhCTRiVDwcdOtjJrA - test-linux1804-64-shippable-qr/opt-reftest-3: Br_shjLxQ0iA3PjkJ9NSdw - test-linux1804-64-shippable-qr/opt-reftest-4: Mtk7PqveTGiKFaryb-CD2g - test-linux1804-64-shippable-qr/opt-reftest-5: PdRrY1LrQw2udS9oPcrjPQ - test-linux1804-64-shippable-qr/opt-reftest-nogpu-1: ONycFqpKR1CD4imjwwRlGw - test-linux1804-64-shippable-qr/opt-reftest-nogpu-2: bnsTTZMTTwmjIZZAZW-yGg - test-linux1804-64-shippable-qr/opt-reftest-nogpu-3: L56iNcPkSSeXHiUNvA-SwA - test-linux1804-64-shippable-qr/opt-reftest-nogpu-4: Q-rCa6zuR92YzqvNibYJ4w - test-linux1804-64-shippable-qr/opt-reftest-nogpu-5: bk5ajt-YTNS-JsqQBKD6Mg - test-linux1804-64-shippable-qr/opt-telemetry-tests-client: KzU1XAetTWmyDhM0vZMq0A - test-linux1804-64-shippable-qr/opt-web-platform-tests-1: W7JFeeNoQzmbkPuRqR8elA - test-linux1804-64-shippable-qr/opt-web-platform-tests-10: RCOu530gT3u6n0kHv07HGQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-2: Dwi3s3VPR8-WYP4FINTwcA - test-linux1804-64-shippable-qr/opt-web-platform-tests-3: Ay_ymMQKQi-zYqOrBbzVmQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-4: ImsBbldlQFCz3ouMSjTcmg - test-linux1804-64-shippable-qr/opt-web-platform-tests-5: Pma2_8d2RceDD33MDHgofA - test-linux1804-64-shippable-qr/opt-web-platform-tests-6: dem-U3rGQqiV_YMi_UHm5A - test-linux1804-64-shippable-qr/opt-web-platform-tests-7: KXe-SK__Q46o2ogSTAgfgw - test-linux1804-64-shippable-qr/opt-web-platform-tests-8: Q9D10FkbQSWju2esFxiq4g - test-linux1804-64-shippable-qr/opt-web-platform-tests-9: XzHW2Q0eRGiXhmjrlU4R2g - test-linux1804-64-shippable-qr/opt-web-platform-tests-canvas: adYGk3jDTeSUDBKkwE_fsQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest: YIMq7mtPSrSuvclLVK5stA - test-linux1804-64-shippable-qr/opt-web-platform-tests-eme: ANLoey-9TcKcYdPzvoWJGQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-ioi: Cx5CcZ7jTNGnD6EtglTpxg - test-linux1804-64-shippable-qr/opt-web-platform-tests-pb: TlO2D8oRRX21hgUzai6IZw - test-linux1804-64-shippable-qr/opt-web-platform-tests-pb-ioi: fM6t87ZfQpuzKqPVdHwnRQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest: aQwYOsrbSYmRsduM0IdBFA - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1: DB-6D-QfQb6aTMvtKQPp1g - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2: dDYaKWLiT-WfY5Z4jJAq1Q - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3: SUQ01S4TTW-JxdGfqixl3A - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4: R-cj1yJ4QnSOvpZihAsQCw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1: U0_FL7kDTliCJqan6FRzEw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2: JktSWr9qSS6PmB94Dug2pA - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3: COoW7OydSK25_6XJDTQFJw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-4: Xwvm_sSLTbmEGENr1j-z-A - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-5: BVAhMqdCQuSUOuIianvqZg - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: Pp7xt0CaQsOJt9Ch6AcqRQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: R-FxhqVWTx6UB9SSFZTmew - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: ayfSln0OR3WvzgZxK3tdjw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-4: KusllYZ5RVWeVRIF9JMt0g - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-5: fL5Mkps1TRm3ZJIR90Mx_A - test-linux1804-64-shippable-qr/opt-web-platform-tests-webcodecs: IIZcmsyGS8ia0CxOY0KRIw - test-linux1804-64-shippable-qr/opt-xpcshell-1: IfySS7VyQmST0L0skoNe_g - test-linux1804-64-shippable-qr/opt-xpcshell-2: KaBThN7YSrCHlxsGGNyVrA - test-linux1804-64-shippable-qr/opt-xpcshell-ioi: dE3GZtiISJ-FwG-YfbFEbw - test-linux1804-64-tsan-qr/opt-cppunittest-1proc: Es0fJs_1SWSvZluTLeswRw - test-linux1804-64-tsan-qr/opt-crashtest-1: NSLiUWHuSmmPlLZCKvN_Lg - test-linux1804-64-tsan-qr/opt-crashtest-2: Nvh8BTKdQZy21GcThxjzrQ - test-linux1804-64-tsan-qr/opt-crashtest-3: aD2YDuV5RSCZ7v-K6JMhpw - test-linux1804-64-tsan-qr/opt-crashtest-4: BIYODUviR4eKwYVE4WHhwA - test-linux1804-64-tsan-qr/opt-crashtest-swr-1: QI5qO3y6RxuGryJi9_-PCQ - test-linux1804-64-tsan-qr/opt-crashtest-swr-2: cnG_ko1QTU2AeruS6W6yhQ - test-linux1804-64-tsan-qr/opt-crashtest-swr-3: U46cqy72S1G6Z0WaJlexDA - test-linux1804-64-tsan-qr/opt-crashtest-swr-4: SmoFjPvNSruTDNsV0IFZjw - test-linux1804-64-tsan-qr/opt-icecat-ui-functional: fqqP94HjTaCUsm0QPInEAg - test-linux1804-64-tsan-qr/opt-gtest-1proc: L3cJROOkToW3QW_-EvTG9Q - test-linux1804-64-tsan-qr/opt-marionette-1: ZbwzvHR3TUGLb7asyNRleg - test-linux1804-64-tsan-qr/opt-marionette-2: eM9rkrk0TsWyFQorfgr9UA - test-linux1804-64-tsan-qr/opt-marionette-unittest: IdlRmxbMQwaua9v2w9kD0Q - test-linux1804-64-tsan-qr/opt-mochitest-a11y-1proc: cIVGOKsRQ-GpMA4vE6rs8w - test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-1: IbXV4RwAQgu-P6ZXLJAzEg - test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-2: FBT43356QcSi1wMC9LCkvA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-1: P5LeI1gMRaixvGBMNhoJIg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-10: aFndVb9HQIGp2sU1OgGCNA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-11: QJXL4u3vR0Wokeoar2JaXA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-12: OqWHjjq4Qc2x5Hj0NOD7Pw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-13: eBFvW0AuTeOhipBDOqILmQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-14: C9Nd8Vr3Tx2PXqWMrkj1tA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-15: YYpC9WTkSgu3jc-4wndTzA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-16: ZoIXCi0ZS7KEx6k0uz-8FQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-17: EMythfQPSKKLnCkVPGMRGQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-18: HhJbn9mQQ3qDKJ0WlsiYvw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-19: Aa3UXItTQ-WP1UTm-hoXPQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-2: AZmpPPS2T_SqmA7JI3Bxyw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-20: eWcSdmiTRNGaVfZrkkCivg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-21: Q1M198iJTeWFvssZ1IRNnA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-22: RC31cxY2RtqZ4bEY3YRPKQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-23: ZJ4jpiBTSEqls_Z1AzkQ-A - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-24: SUDQmkdPQZybtFszQB67qQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-25: ejlEZ2vHTM-BR3QG0Gltzw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-26: cYNrNINQRLGATQ0P5oL0XQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-27: JjDvjQB2SHKS4TRAupQFSg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-28: DrNkEODKQsKgSSUNXQwGyw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-29: JN_SvO5nRDWawLxKTfmizA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-3: YdqztO_bT8iMcv14g8k70w - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-30: bYRNxseURVa4d9A3HCEYPA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-31: TwVPT_nfTYCigb9CZOwjlg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-32: RUOlnzFiQ7-coHDunsm6_A - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-4: cTpk-JvtSKKT2QpZx2k5Yg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-5: CZn2LElkTOOhyHeo6dIxCQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-6: NmBVaw5BSoaN-EIfsTRExA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-7: dHaizgd0TMOChMcMdusxLQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-8: GxMYsvozQUaymUINWDQC1w - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-9: aGbbKk12SH-yOc42z4BDFA - test-linux1804-64-tsan-qr/opt-mochitest-browser-media: ZHYsUP-tTv-gUeFai_GHKA - test-linux1804-64-tsan-qr/opt-mochitest-browser-translations: A10WJq7MS4CtBiRo48n-9A - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-1: Sbf_LEoiRNqyzYJV1aVG4Q - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-2: BJVQArbXRy2pdLWUScmTXw - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-3: ez1xmKnLTTevjBSTRd2EhA - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-4: ekCb1_oiRd2I5mDu0L30Gw - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-5: EbmsaRHZQvmWhUzLQjx_hg - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-6: AxaFC_1QSQWMBsQthiznng - test-linux1804-64-tsan-qr/opt-mochitest-chrome-gpu-1proc: ep2kPwJ9RPWJWVSfZH-9iQ - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-1: a8sT2K9GSyiOcTTurqF9lg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-10: X35rBcfWT2u0oQbAAYi9Lg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-11: aeu2cftSQ06s7ZgSi_dufg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-12: b3Y6GHHXTpCDLJ4zT67Wtw - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-13: bfWee2BgRLCwLWXTND7NwA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-14: ftY3CcLnT1eLgZX0pVyZ2w - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-15: DV-IIEanT8iE_5gjXbG-Og - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-16: Cii3288PQGi0IqtyDxjhgA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-2: C9dtJXPzTI2DABuXZxeXZQ - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-3: ZJPGcdP9QOG24JkiyLhbVw - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-4: HLQr5c9LR7O19h6X8MB3aA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-5: D9CGtjlmTXmGr-aSi-ZHRg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-6: LfvlU4hgRk-9oIGz1Yny9A - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-7: OqsRINSvTJKgKLneop3G_A - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-8: dbfRwKHvTKa_jcoUSfGt0g - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-9: NwfkrflRS_6dQ1fOSRthow - test-linux1804-64-tsan-qr/opt-mochitest-media-1: aqNBjMGaQNiJDYYsYyF71w - test-linux1804-64-tsan-qr/opt-mochitest-media-2: dmnixghpQx64VIuUZgJMIA - test-linux1804-64-tsan-qr/opt-mochitest-media-3: MYZsdMIhR3G7WZbrIiMcBA - test-linux1804-64-tsan-qr/opt-mochitest-media-4: ZH7WSBUuTw2BnQra7_UB-Q - test-linux1804-64-tsan-qr/opt-mochitest-media-5: WrWh1621TEiC_rtw2rKSRw - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-1: eo4xIyFYSs2Ws7qo5UwcSA - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-2: RBaL1fpNTDOXpswoV3hULg - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-3: Qz7XW6oqRTOdfVE2LPYrCg - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-4: dwCLWkN6RbKuf3AFYFy9JA - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-5: HQyZ2f6wRjWftXtlAFCncg - test-linux1804-64-tsan-qr/opt-mochitest-plain-1: b8Vya2arT26UPFOT__bFNA - test-linux1804-64-tsan-qr/opt-mochitest-plain-10: DzY-JuoKQQm2NB5La5fm9A - test-linux1804-64-tsan-qr/opt-mochitest-plain-11: CFhgA1QxTPKoJNxnyEhdXw - test-linux1804-64-tsan-qr/opt-mochitest-plain-12: Rv94eL0LSB-aZ7I1N_yIvQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-13: OjRdPtAmRmOjUAAHSiz-ig - test-linux1804-64-tsan-qr/opt-mochitest-plain-14: AATfTuwMSWuacQURHHrVGw - test-linux1804-64-tsan-qr/opt-mochitest-plain-15: U1MYfZxYSZOFwxzcdXV0uQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-16: MUqi3x8jQ7WwI3WUKPS8Ew - test-linux1804-64-tsan-qr/opt-mochitest-plain-17: GCzgvSe3QNeX6r0KNvKxjw - test-linux1804-64-tsan-qr/opt-mochitest-plain-18: N_wSqJajR1y98kRPapf2iQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-19: QusPWKO_T-mSkEOvOLtJwA - test-linux1804-64-tsan-qr/opt-mochitest-plain-2: HwhR6hT1TemfWShgTPK6Nw - test-linux1804-64-tsan-qr/opt-mochitest-plain-20: EPwfUKIfRIe7N4vMXmrNdQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-3: VzvC7SvcR6OsxJ7CLnyftA - test-linux1804-64-tsan-qr/opt-mochitest-plain-4: SIawDvAsSyqDftF-lT0Z5g - test-linux1804-64-tsan-qr/opt-mochitest-plain-5: OfVbHVdxRHiqewrbaNYMbQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-6: MmULNhDlRNOvxBBXEsVTzQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-7: OgAwKJZpTw2VD5gGJCFsIw - test-linux1804-64-tsan-qr/opt-mochitest-plain-8: OoocqXg6TdG-2C1CtCln2w - test-linux1804-64-tsan-qr/opt-mochitest-plain-9: XVtHRy4GQfCVoA3t19wqlw - test-linux1804-64-tsan-qr/opt-mochitest-plain-gpu: WtX1c6IpQ7SKRbr_C_U9FQ - test-linux1804-64-tsan-qr/opt-mochitest-remote: KN7g1cLETayXgsW-Mosecw - test-linux1804-64-tsan-qr/opt-reftest-1: XRT0o-0pRYafSmzfDt7Wxg - test-linux1804-64-tsan-qr/opt-reftest-10: LpozwxUoSlG1rTP2IcpY8A - test-linux1804-64-tsan-qr/opt-reftest-11: QY1SZk8NRhGw-n4MlsWALg - test-linux1804-64-tsan-qr/opt-reftest-12: RNuR3YqST0ag5xcU4n4AmQ - test-linux1804-64-tsan-qr/opt-reftest-13: Z9WKiNhRRTy-CfmAeRUI-A - test-linux1804-64-tsan-qr/opt-reftest-14: N5aeYFR7TH-2X0DhQGz0VQ - test-linux1804-64-tsan-qr/opt-reftest-15: E8DygEs5Tqi7W-3DWKNmQQ - test-linux1804-64-tsan-qr/opt-reftest-16: SYal1wJhQhOnfwwJ9rs95g - test-linux1804-64-tsan-qr/opt-reftest-2: Vs7lDumGTVujzUurK2EPhw - test-linux1804-64-tsan-qr/opt-reftest-3: ciCANP_8RmabnmlmxdevVQ - test-linux1804-64-tsan-qr/opt-reftest-4: J-hI1NE7RZu7zZMOPEQv9g - test-linux1804-64-tsan-qr/opt-reftest-5: U_RhZQ3zSUapXJXNrQi-vA - test-linux1804-64-tsan-qr/opt-reftest-6: UeJaFScxRve7hiDP6RSS-Q - test-linux1804-64-tsan-qr/opt-reftest-7: Moc7_GZtTpGsTpTLUEHpqg - test-linux1804-64-tsan-qr/opt-reftest-8: arixZe6ERmmJsuBEzemEaw - test-linux1804-64-tsan-qr/opt-reftest-9: IjEBYNhgT52CXtjsVYlzVA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-1: EQ6H_3FlQlCnXa5oz1iK_w - test-linux1804-64-tsan-qr/opt-reftest-nogpu-10: TxMI5tO_RRy-yNUYvMI0pQ - test-linux1804-64-tsan-qr/opt-reftest-nogpu-11: KEv0FAVyRouwBSvQclJx6g - test-linux1804-64-tsan-qr/opt-reftest-nogpu-12: GuDCrH2UTNCR7lJ7BeOKgA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-13: MAeKaRfrQi6o5V3lpRsxug - test-linux1804-64-tsan-qr/opt-reftest-nogpu-14: Wmnmgm2-TKSaWp5TnerL8A - test-linux1804-64-tsan-qr/opt-reftest-nogpu-15: Lz6zRKRvQ6O0Nw4KkNHZkA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-16: IL6-wbVGSpyJkDcsx8k8vg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-2: SikgsGoOSk2B-CQIBdVUyQ - test-linux1804-64-tsan-qr/opt-reftest-nogpu-3: LO2ukHuxTSiSwkxsnJRy5g - test-linux1804-64-tsan-qr/opt-reftest-nogpu-4: IZe7c3mfQliYr4_qDRMJ9A - test-linux1804-64-tsan-qr/opt-reftest-nogpu-5: G_Z7LuJ_Qs-Rru7zNtjGow - test-linux1804-64-tsan-qr/opt-reftest-nogpu-6: cJgwXefcTWizTypZ-rERHg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-7: Tp-TU9VWT2uYH3vA68iHmg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-8: Ico1AzHjR8GtcFpbuwTqYA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-9: dCsLSqQwSDG4EkhXJDl48w - test-linux1804-64-tsan-qr/opt-reftest-swr-1: HkT1cUfMSwmQHlIQTxNuNQ - test-linux1804-64-tsan-qr/opt-reftest-swr-10: GJvoIW-FQLaLLO8NkTJTiw - test-linux1804-64-tsan-qr/opt-reftest-swr-11: XT9qsb7HRAuCQweKknGmsQ - test-linux1804-64-tsan-qr/opt-reftest-swr-12: IAtGP_G0QTOE0bbYDnjhbQ - test-linux1804-64-tsan-qr/opt-reftest-swr-13: AXTZPf1gRUmJ-uLCR2vFOg - test-linux1804-64-tsan-qr/opt-reftest-swr-14: HxWa1whzSeWWaB24C7cpOA - test-linux1804-64-tsan-qr/opt-reftest-swr-15: UKBKee-6TPy9dKAjVOo52Q - test-linux1804-64-tsan-qr/opt-reftest-swr-16: CjSZOnvMSPafaXVrh7zaXw - test-linux1804-64-tsan-qr/opt-reftest-swr-2: NuWUZeCFTM6ADZmes99V5A - test-linux1804-64-tsan-qr/opt-reftest-swr-3: aojBOcoNRumpKYqgHnnrjQ - test-linux1804-64-tsan-qr/opt-reftest-swr-4: Yx-cBLeNSo-lW2Tgsu2qOA - test-linux1804-64-tsan-qr/opt-reftest-swr-5: LVNT2oDQQtmndZhIEencyQ - test-linux1804-64-tsan-qr/opt-reftest-swr-6: DGzdQ5L0R5Oq_hs8LN_TnQ - test-linux1804-64-tsan-qr/opt-reftest-swr-7: FfwbIRPxTfeoU8-kKiOz_Q - test-linux1804-64-tsan-qr/opt-reftest-swr-8: ZpwtPSJzRF6pHixxaXH-tA - test-linux1804-64-tsan-qr/opt-reftest-swr-9: G33Q094NQ1eiITFvU1ybdQ - test-linux1804-64-tsan-qr/opt-telemetry-tests-client: GKPCrIdbTB-7rU-hC4HrCA - test-linux1804-64-tsan-qr/opt-web-platform-tests-1: aa0JT53bQ2GP-O3BqyA5vw - test-linux1804-64-tsan-qr/opt-web-platform-tests-10: HZUJqdeBSTid3S5i3A4bEg - test-linux1804-64-tsan-qr/opt-web-platform-tests-11: UvkIOk6UT-6xioWhlmGo7g - test-linux1804-64-tsan-qr/opt-web-platform-tests-12: PxWRQ3dbTceTKftveBkthQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-13: BAVCa0QTQua9WWtPggQbcA - test-linux1804-64-tsan-qr/opt-web-platform-tests-14: Ucfk3GX8QI25ISd-Jzxh0g - test-linux1804-64-tsan-qr/opt-web-platform-tests-15: W050qERYQ2a2MFPDw2x3GA - test-linux1804-64-tsan-qr/opt-web-platform-tests-16: LQyP4XwIRHymYRc-L2BOaw - test-linux1804-64-tsan-qr/opt-web-platform-tests-17: GUSQcQ22RqO35NNt4IGNQg - test-linux1804-64-tsan-qr/opt-web-platform-tests-18: SIhboOTTSx6x7XGqM_nliw - test-linux1804-64-tsan-qr/opt-web-platform-tests-19: OQTLKfiyS4WfVmj2SdlOvA - test-linux1804-64-tsan-qr/opt-web-platform-tests-2: XGzo4TTMQjqH8QUsdOtiSg - test-linux1804-64-tsan-qr/opt-web-platform-tests-20: ELhYbhLmSp-m9DTMyT3vRg - test-linux1804-64-tsan-qr/opt-web-platform-tests-21: MrbIWXCSSj25RF9HOmDxOw - test-linux1804-64-tsan-qr/opt-web-platform-tests-22: UHc8l6qGRAuxcewqPE_aFg - test-linux1804-64-tsan-qr/opt-web-platform-tests-23: FUyZNj5mTCSZLzSKoeA21w - test-linux1804-64-tsan-qr/opt-web-platform-tests-24: CZpV9pbhTKCt-bjJBCKoPQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-25: WJVNqH-KSKC3gTUkZXjuEQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-26: OXn62e-BQ1yAXgpluzNkiw - test-linux1804-64-tsan-qr/opt-web-platform-tests-27: N3l0YlVpQumlVfv3uRAtMQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-28: JEMEvCEFRcCbR4l4xSPHtg - test-linux1804-64-tsan-qr/opt-web-platform-tests-29: VkGIRwqsQ9-X4hzwm9w58g - test-linux1804-64-tsan-qr/opt-web-platform-tests-3: UnIH1ggcTxyS5xHGTbwUoA - test-linux1804-64-tsan-qr/opt-web-platform-tests-30: RocLJIPCSMOrZJz7xYpKcg - test-linux1804-64-tsan-qr/opt-web-platform-tests-31: a3CTbZK-QHOSQW7fioLFgA - test-linux1804-64-tsan-qr/opt-web-platform-tests-32: FFNtODFYQHiUd5SOwJYDGA - test-linux1804-64-tsan-qr/opt-web-platform-tests-4: Jm47LVEQTEKj4CfUMs5Kgw - test-linux1804-64-tsan-qr/opt-web-platform-tests-5: Tm1rUPSKTPOEFZzSc95t1g - test-linux1804-64-tsan-qr/opt-web-platform-tests-6: BIf6649NSniLswRXvGYgeA - test-linux1804-64-tsan-qr/opt-web-platform-tests-7: JkZDQpzNQn6hCPR4S9MKug - test-linux1804-64-tsan-qr/opt-web-platform-tests-8: Mc9Dx2zSSVWGS9DhXfITpw - test-linux1804-64-tsan-qr/opt-web-platform-tests-9: VERqXymGROqAV4FhQ8Bk8Q - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-1: MrOszuwqRwu2Sq2qWkbE8Q - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-2: CNVHwObYS_KaoJKqRAP_9g - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-3: Swz7qwr0R2KifUoditLVBA - test-linux1804-64-tsan-qr/opt-web-platform-tests-crashtest: FElM47-5TUK4Gp9w14Ab4w - test-linux1804-64-tsan-qr/opt-web-platform-tests-eme: KNATNL6jRAS8G38Sz7QNEQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-pb: edAJNe-5Rhafhgjleg-uhw - test-linux1804-64-tsan-qr/opt-web-platform-tests-print-reftest: KMPYj3DSQwmkhRQVz-HsnQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-1: LgxLRpdjRFmHyfPVu9XuPA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-10: ZFnwIpaPR2C-cIlJ1LPk9g - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-11: NpqCrF66SweUaJQkac4SbQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-12: WBE2kFHSTuuWyizOkNu0xg - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-13: Xbzx-N1lRpWy6uuH2eMMSA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-14: Hds5xzxdQCWCtm3PbzcIqQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-15: dGKjLFOETRKIiUQ5fD1xOg - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-16: AUt8XVZmQHCrslSYqF4_iQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-2: GIOp_6qtTMGdR2CzQ1T5qQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-3: Ib9DEXKISvKIeIbT0Ar2Qw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-4: erOEhcZOT_iexaQp5pFalw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-5: Hix5BhGaR_WFqe3hMrcSsQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-6: SiCCxoGVQRq_bXFwUJQiXA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-7: LFdOg2f1TJerPJmAcf1WcQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-8: ekIcVAWASnOJRv4i6j-kjw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-9: f0s6NvSAR2WUm7R6wgs8aQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-1: W1qrOGjLT4i_NSPNkwWD4A - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-2: e2nY4I79SyWg7wQkYl-org - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-3: PT25SWjrQRKqESu7JgNFAw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-4: bGslJuekQOS3UdeAJ9Eqmw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-5: PLXZ5sMQSKej8mbN_Q-U0g - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-6: S6DOUc2ySqCLWKSWSvTYvw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-7: NJsxsUDQSEyu_CA5PTKJVg - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-8: P6hSN-9_Qb6UpFDrO_omoA - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-1: FSju-oT1QsunK1rDyw1A8w - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-2: cHaiHX0IQaKrylYxh0e1lQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-3: P3id6q2UT6mGQer0CfWUfA - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-4: eMSJTKTaQOmseshXEAJNvw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-5: B6hEIyX8Szmmx2H_B2DauQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-6: S6PjqDpyRSCCQj9zTrsgQw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-7: ZCVk2qdGQPCzhxNYuOthxQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-8: OqhBGIy9TgmCb1kB6mZjFg - test-linux1804-64-tsan-qr/opt-web-platform-tests-webcodecs: Da1XSRdsT5u_abhtfxAEEQ - test-linux1804-64-tsan-qr/opt-xpcshell-1: MyLzZIL1Sc-ytoPvzwn83g - test-linux1804-64-tsan-qr/opt-xpcshell-10: fp0OdvZKTFOYXOSqRrlK1g - test-linux1804-64-tsan-qr/opt-xpcshell-2: Ns_TDtWkT-ewyUifbvBzaA - test-linux1804-64-tsan-qr/opt-xpcshell-3: ZIJW_N_QS_6BTuI3Ali_Ag - test-linux1804-64-tsan-qr/opt-xpcshell-4: bBXYWEM3SJmLMzVa7y6IpA - test-linux1804-64-tsan-qr/opt-xpcshell-5: O6n_yGzZSBu3Q0GP8NGOtQ - test-linux1804-64-tsan-qr/opt-xpcshell-6: PtJE27tpTo6agX5B1gfmKQ - test-linux1804-64-tsan-qr/opt-xpcshell-7: cDfsADcmSDaS5Z_lo4A5kg - test-linux1804-64-tsan-qr/opt-xpcshell-8: OwziidTFSy-3jULh7shmBQ - test-linux1804-64-tsan-qr/opt-xpcshell-9: c5nCKdKgR_CyR8w806GhXw - test-linux2204-64-wayland-shippable/opt-cppunittest-1proc: J1p9A9bFQVydIJd_RC7wlA - test-linux2204-64-wayland-shippable/opt-crashtest: GqmBG3StSuWpA9lgamZUKA - test-linux2204-64-wayland-shippable/opt-icecat-ui-functional: N-PNbuEoQtCjfQ87IZBkNA - test-linux2204-64-wayland-shippable/opt-mochitest-a11y-1proc: AmB-ZTLiTdmNrZizDl84yA - test-linux2204-64-wayland-shippable/opt-mochitest-browser-media: FnHIxF1FTO-a1e1mVeL70g - test-linux2204-64-wayland-shippable/opt-mochitest-browser-translations: dM-SXWITThCL6AO_894PKA - test-linux2204-64-wayland-shippable/opt-mochitest-chrome-gpu-1proc: PKHY6ztSTMKtZ7z65OGKrQ - test-linux2204-64-wayland-shippable/opt-mochitest-plain-1: ZU16V-pDQvuw7zLuJ0GEaQ - test-linux2204-64-wayland-shippable/opt-mochitest-plain-2: JXW7eudIRralngGJrd91iw - test-linux2204-64-wayland-shippable/opt-mochitest-plain-3: WRB3rfFmQHiuutG2FkXQNA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-4: BWBTRAXMQeKMxxn7-mdLyA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-5: f_45mdfxR-On77ZCJp1MBg - test-linux2204-64-wayland-shippable/opt-mochitest-plain-6: WpBDtC6GTtKEv0g6ZblMxA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-7: SQyoHiL_RlCQc0WgBTt02Q - test-linux2204-64-wayland-shippable/opt-mochitest-plain-8: fsBhvdlNTe-ur7iTwsQ5Ig - test-linux2204-64-wayland-shippable/opt-mochitest-plain-gpu: HgQ1cjBlRAyI5jOs2ASYFQ - test-linux2204-64-wayland-shippable/opt-mochitest-remote: KJ0mMmmvSF-OS98lJIH0Uw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl1-core: YV9bV8UGRLOdoCYvUCVNNA - test-linux2204-64-wayland-shippable/opt-mochitest-webgl1-ext: YmteotQATiS-oVZicZkRXw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-1: Cy2yKYINSoGTdMQVHsFahw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-2: GA2-TEwAS_Kli4PuofRRzQ - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-3: KpPDqpOFTz2NjLIOgClacw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-4: ZHq0bhE5QW67nkwRysxGKg - test-linux2204-64-wayland-shippable/opt-telemetry-tests-client: PJ8z0LPFRBGkscQ7U13q5g - test-linux2204-64-wayland-shippable/opt-web-platform-tests-crashtest: akutljoDRACCkVeAEca3gA - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-1: G7z7NwmNRAiYZQWCJGuFgQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-2: G9ryZS0RTM21iT8i-vPkpQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-3: BqRYKbAyRrCoVJKN0WRemw - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-4: cUPskFAQSw-1N22gGMhRJQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-5: QpJdt-0_Qk-Zf50JW52Mng - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-1: dOtA0rn4QL6wlZzsfWcEJg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-2: Y67N3EmHSZmtcfUYWN0KQg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-3: f8A0qcCfRuW9qKPCD3Eu_Q - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-4: VxhjrJ_kQbyzMoqhtzRKEg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-5: baHboWqDTRi953xAjsL_WQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-webcodecs: UoJSy0J2QPKlS91um7Uvdw - test-linux2204-64-wayland/debug-cppunittest-1proc: AyQq-S9wQhaMGqShcQfdMw - test-linux2204-64-wayland/debug-icecat-ui-functional: Ita8j52uQN2TAmjaSKUBgA - test-linux2204-64-wayland/debug-mochitest-a11y-1proc: CATOk57-Su2kggkI9ofjBQ - test-linux2204-64-wayland/debug-mochitest-browser-media: Y9weoKoHTXKhK4LdnOTk8A - test-linux2204-64-wayland/debug-mochitest-browser-translations: XkDKYnoNTCuCUKclmma_fQ - test-linux2204-64-wayland/debug-mochitest-chrome-gpu-1proc: RV3k674YQWSHsi7GMGlSoA - test-linux2204-64-wayland/debug-mochitest-plain-1: PXExMJT8Sya31zJp5pkJ4A - test-linux2204-64-wayland/debug-mochitest-plain-10: MHbMg07kSEqxJxtCwCOb-w - test-linux2204-64-wayland/debug-mochitest-plain-11: Wrmj9bYZSkuEcRXyakWa6A - test-linux2204-64-wayland/debug-mochitest-plain-12: ZWDeZ0OZSaK80hg-MTAIng - test-linux2204-64-wayland/debug-mochitest-plain-13: HPiWuqygTKixpLUEz603wA - test-linux2204-64-wayland/debug-mochitest-plain-14: N2E1uVjSQJOTCDp48BuRdA - test-linux2204-64-wayland/debug-mochitest-plain-15: ZaWhmmhKS3KhFjIoJdB4xA - test-linux2204-64-wayland/debug-mochitest-plain-16: HJKQRLXpQlmQAy1E4NYJlA - test-linux2204-64-wayland/debug-mochitest-plain-2: Gv2f5OsKQ2iROr1OeZKLIg - test-linux2204-64-wayland/debug-mochitest-plain-3: fb6iTplURXyIVOwM48D6ew - test-linux2204-64-wayland/debug-mochitest-plain-4: L_e9KFt5T9qbgtk90wiRvw - test-linux2204-64-wayland/debug-mochitest-plain-5: GKeBBSNcTPqA3pX6dC_5CA - test-linux2204-64-wayland/debug-mochitest-plain-6: Xbj2wToIT4uxrOITV7SflA - test-linux2204-64-wayland/debug-mochitest-plain-7: J6QN59F-Qzq69U60slwJOw - test-linux2204-64-wayland/debug-mochitest-plain-8: R20pR2Z-SZGD4neqhxJwcA - test-linux2204-64-wayland/debug-mochitest-plain-9: EyQnoEFbRCu-1ROwqd-HLg - test-linux2204-64-wayland/debug-mochitest-plain-gpu: fwa7Avq7TMimCDOmxaoF1A - test-linux2204-64-wayland/debug-mochitest-remote: QlxZByxERZitop2diy_efg - test-linux2204-64-wayland/debug-mochitest-webgl1-core: W_NJ5_IeSrqZksDIvoY-RQ - test-linux2204-64-wayland/debug-mochitest-webgl1-ext: RdxbDGE_TuyjhM81wqHuTQ - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-1: OI8-q2j7QwK8txylOu1Gkw - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-2: aTvKL-F4Tg23FtzG0JLv5w - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-3: XpWNQgkkT1qT29uDiJfXcw - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-4: OjFmHjhzRFCnRMZ0Iq7_tA - test-linux2204-64-wayland/debug-telemetry-tests-client: U1soooMJTAi3GgVutpWSqg - test-linux2204-64-wayland/debug-web-platform-tests-crashtest: PXjbQXMQQcOw2Mk9DfYPcw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-1: bDvszWxZTX2V1y7NdMyVRw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-2: eSGnEsg_QTC8K3zLSGwLvQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-3: DIl6EHMORcyplxEpmfvDBQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-4: CBk0ySMKTSS6O47r401Kuw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-5: IFeJVEi3RhChWztOZtFEGw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-6: RD9CPdOFRzysZciwCtWz9Q - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-1: A-rOaWEdQCu0hctrf8sj8g - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-2: ElPRSi7sTemyiYpnN0CNRA - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-3: BUAtKMQzQpCFrT6_qIVulQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-4: ZQuuRbwzTPaKmL9iYnMQQQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-5: cCmRPJK6RY2PAWo_A5n_KA - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-6: dXutih7hTzWfTcZlwGzIfw - test-linux2204-64-wayland/debug-web-platform-tests-webcodecs: V8u0KQJwQyqe9a_hDu9XOg - test-macosx1015-64-qr/debug-cppunittest-1proc: XP3CUfbEQlCtPKnw6YU7yg - test-macosx1015-64-qr/debug-crashtest: PF4RmHSnQmenXJTg-2qH-w - test-macosx1015-64-qr/debug-crashtest-ioi: KsVleiSuQY2u7QlOeBsjVA - test-macosx1015-64-qr/debug-crashtest-swr: bPhSvpCFSHGMCTXIP2T7og - test-macosx1015-64-qr/debug-mochitest-browser-chrome-1: Mhokm979Rdek52uVHrmR-A - test-macosx1015-64-qr/debug-mochitest-browser-chrome-10: dUEhy1AeS52D-7OmGoB8BQ - test-macosx1015-64-qr/debug-mochitest-browser-chrome-11: alHW-FUfR5ClpbhP0QMeYg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-12: Yods_YbYT7iWehTXDfB1Tg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-2: e5IQIHBhSPWdE3_lFdiBsg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-3: E29rRsN2SoKfNEWIugkKRg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-4: C13QK-ydT_S8P3QaTLkLvA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-5: LgXPJjSZSDykNIKMdS3h5Q - test-macosx1015-64-qr/debug-mochitest-browser-chrome-6: N2ZG5YbhSkCH6d4J63zhWg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-7: IsvIt_lbSBqI1xAZc1SQgA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-8: AIQ8uwaGS26FHtNleBCwYA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-9: Tm4SXSnMRpm6h3w67IQnBg - test-macosx1015-64-qr/debug-mochitest-media-1: QIpnmwKjQc-aShrqBvgqLQ - test-macosx1015-64-qr/debug-mochitest-media-2: AWzVjqtYRZmPzHJNyFuHrQ - test-macosx1015-64-qr/debug-mochitest-media-spi-1: HbipiBQSRMWQV2iEd559xQ - test-macosx1015-64-qr/debug-mochitest-media-spi-2: R4dk5hxKQDaZIQ3T3x8qrw - test-macosx1015-64-qr/debug-mochitest-webgl1-core: TcbKgCUGRqCQlKz-C-NuIg - test-macosx1015-64-qr/debug-mochitest-webgl1-ext: B5z21vLDT02sW4BIxXoWxQ - test-macosx1015-64-qr/debug-mochitest-webgl2-core: EYulm87oRduBx_jmUgC2Ew - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-1: P9-ekwWiTuGMUOXrG_zNIg - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-2: BLL74ghrRpqO0bq3e948vA - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-3: LapbT7qIQiukpYg66su2ug - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-4: S4kav91JRG2U2h_jOUrPAQ - test-macosx1015-64-qr/debug-xpcshell-1: PjONvbQNTtq_lykhwm2vjg - test-macosx1015-64-qr/debug-xpcshell-2: O8ipcFchTw-MoXk7ux-Brg - test-macosx1015-64-qr/debug-xpcshell-ioi: Pcv04TZlSF-wzSfGzQX3cA - test-macosx1015-64-shippable-qr/opt-cppunittest-1proc: dRqVTFf8R7qDBhOrg_6RMA - test-macosx1015-64-shippable-qr/opt-crashtest: FUc9YLZ5R22kPh46mUY73A - test-macosx1015-64-shippable-qr/opt-crashtest-ioi: FlRnWaMcQom0zU5L7Exfrw - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-1: Z2u5b0O7SlKPOsE35WegSg - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-10: BH-JKVEfRva0_6fBgUla_A - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-2: QJ9xRhzmSqqJIk6QIgXXIg - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-3: Q4ckEfKYTcqyhmQxMXwwEA - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-4: cA_781g_TQihFdsscNY9dw - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-5: CNtuPWGNTOi3Ye77TC_How - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-6: Hitr-oh5QJy3GDI-c7C18A - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-7: IJOt4djUSnOgW5DClpIEWA - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-8: EK8AqJH-RiOFecUYLMeIwQ - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-9: SBp_BmlwRByEAPImulKRWg - test-macosx1015-64-shippable-qr/opt-mochitest-media: aDRUeTtdStK45itiW0jcIA - test-macosx1015-64-shippable-qr/opt-mochitest-media-spi: AglzIkkfQCOcXl6iJKrvGw - test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-core: YWfCnEw2SjSLX62LghPUYQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-ext: ERIG7W1kTrKTmGyHHkOJ0Q - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-core: PTeTZAUTTKCZotUUyuqXsA - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-1: GF359bv-SO6CfXThhDxh2Q - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-2: CGmRFPelSYex_p02HpmhdQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-3: V-vZStDMThazltKtqcWNJQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-4: KWr4d0i2RQKgDRewYuZ6eA - test-macosx1015-64-shippable-qr/opt-xpcshell-1: NHsVfyDyTfqqceZ1AkjEJA - test-macosx1015-64-shippable-qr/opt-xpcshell-2: AtSeGNR7QmK0hv6k_T1yjA - test-macosx1015-64-shippable-qr/opt-xpcshell-ioi: UBs1ZJ2MTmKK40DmFhj6Zw - test-macosx1470-64-shippable/opt-cppunittest-1proc: OAE5V5yUTOCEM7DtCEwTvQ - test-macosx1470-64-shippable/opt-crashtest: fHxod8WqR8ukDesgQZ6bWQ - test-macosx1470-64-shippable/opt-crashtest-ioi: QEtUwuXkSjOoHM4p1nZ0Fw - test-macosx1470-64-shippable/opt-icecat-ui-functional: Plew-c2LQVGitDWjSTK2bQ - test-macosx1470-64-shippable/opt-gtest-1proc: F8VX2e4-RYee6Cq3XF5Wew - test-macosx1470-64-shippable/opt-gtest-ioi: McJsqtj1Rja-i7rIp00Ybg - test-macosx1470-64-shippable/opt-marionette: E9hRpNvgTv27Xb2j2vE5gg - test-macosx1470-64-shippable/opt-marionette-ioi: MY5YPAwyQB-x-LHAUyYt0g - test-macosx1470-64-shippable/opt-marionette-unittest: HdC8iw7wS9S8evELHKIVhQ - test-macosx1470-64-shippable/opt-mochitest-a11y-1proc: b-BTMcVmQWqPU2ILwY6fuA - test-macosx1470-64-shippable/opt-mochitest-browser-a11y: KR59ARoZQCmWYjERg6H9aA - test-macosx1470-64-shippable/opt-mochitest-browser-media: f5M3_2jTSjyD0Gb5_Mjsow - test-macosx1470-64-shippable/opt-mochitest-browser-translations: MLI2A6a_SY-pC8lFVeVH2w - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-1: E8LlJaDKTRadRX4-8QvXTQ - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-2: ZRFIR6MkQGWhJ2IX6ki2rg - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-3: Hk21X4iiRJKBs43Bdm3F2Q - test-macosx1470-64-shippable/opt-mochitest-chrome-gpu-1proc: UDdmgGCbS6-BapTDG1oK8Q - test-macosx1470-64-shippable/opt-mochitest-chrome-ioi: II9Le-NBRQWc2SOyPokEIQ - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-1: JwX-6v7jQziwRpM8PRcUzw - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-2: G1Ge0-w0TRSydmdzGC0EpQ - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-3: LEbYKX1iSKyO7C-DrDEtmA - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-4: Pm-GVJfUQlmMP4AFGnc89A - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-5: GakAQL-WRuSSZ2FGkv_TPw - test-macosx1470-64-shippable/opt-mochitest-media-spi: buETLG5UQhq9a_tbgE9DDw - test-macosx1470-64-shippable/opt-mochitest-plain-1: QYxbDDpVSKupRcQ878bHQg - test-macosx1470-64-shippable/opt-mochitest-plain-2: JnY2ATb3RYe287GSsCPRWA - test-macosx1470-64-shippable/opt-mochitest-plain-3: Jv5rc9wVR7-i6ObCK_oqfg - test-macosx1470-64-shippable/opt-mochitest-plain-4: Q9AZxIZMS9SahHb2sG3WhA - test-macosx1470-64-shippable/opt-mochitest-plain-5: QPCdsx77TZqbN14rJXEC0Q - test-macosx1470-64-shippable/opt-mochitest-plain-gpu: C1ImcaXXRFW88fnnLtvK2A - test-macosx1470-64-shippable/opt-mochitest-plain-ioi: FcCMovGmSw63ITzldijppA - test-macosx1470-64-shippable/opt-mochitest-remote: ME_gUIpERguhX7iunL9DWw - test-macosx1470-64-shippable/opt-mochitest-webgl1-core: C61EjVUQTGSQSYuYVwOl8A - test-macosx1470-64-shippable/opt-mochitest-webgl1-ext: JQO7_83yTRy9HaOVapv3aw - test-macosx1470-64-shippable/opt-mochitest-webgl2-core: DUEW4qquQXCgBGY9KKEzzQ - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-1: BZ0Oeza8Tqq2Ey_l0nWczw - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-2: O5njsb43Su6rOLLnSGh0Jg - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-3: G_h0pLe1T82Q2OOj3aLUYw - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-4: ZJlgvBZ0R_ieUFY5iGmt1w - test-macosx1470-64-shippable/opt-reftest-1: GXHsZFNPRvKV9EouXIuFwQ - test-macosx1470-64-shippable/opt-reftest-2: S93MbDJUSMyxnNtx7cBD8g - test-macosx1470-64-shippable/opt-reftest-3: Q9n12M5jT8mdSmMeJSgQpw - test-macosx1470-64-shippable/opt-telemetry-tests-client: DpNo040lSwmLmTFbYkq9rg - test-macosx1470-64-shippable/opt-web-platform-tests-1: SQFEDFFJQ8eI9M0xn-7b6A - test-macosx1470-64-shippable/opt-web-platform-tests-10: K9sFaUShQRudzQyAWlETCg - test-macosx1470-64-shippable/opt-web-platform-tests-2: fskTbx8hRJGuYC0nXxUS8A - test-macosx1470-64-shippable/opt-web-platform-tests-3: S2F2s7DGTVmEkZK-TFSEFA - test-macosx1470-64-shippable/opt-web-platform-tests-4: O03R1CfNTZiS-U9N-dijEA - test-macosx1470-64-shippable/opt-web-platform-tests-5: R84cvwzIS5eGeTiR2uhIwA - test-macosx1470-64-shippable/opt-web-platform-tests-6: I5GMs88lQeiBw9C-KH3lRw - test-macosx1470-64-shippable/opt-web-platform-tests-7: GcXPrB4fRqWsiBSMGnOWxw - test-macosx1470-64-shippable/opt-web-platform-tests-8: D6UfVbrcRgW66ekJaxTWHg - test-macosx1470-64-shippable/opt-web-platform-tests-9: cbHkUriMSMi66xxCS8oasQ - test-macosx1470-64-shippable/opt-web-platform-tests-canvas: SAjdGnb7Sr-4gE5wELhydQ - test-macosx1470-64-shippable/opt-web-platform-tests-crashtest: bZmGERB_Q6SR1WxvfS-xbg - test-macosx1470-64-shippable/opt-web-platform-tests-eme: M3hytLTGSxKufsTcUjQmRw - test-macosx1470-64-shippable/opt-web-platform-tests-ioi: TS_PV2c7Rv20WJxKS40ZlA - test-macosx1470-64-shippable/opt-web-platform-tests-pb: ej4Y5JgaRyKgSlrxFn_X0Q - test-macosx1470-64-shippable/opt-web-platform-tests-pb-ioi: TBMmES9HQwmQuWaYzaha-Q - test-macosx1470-64-shippable/opt-web-platform-tests-print-reftest: PYXqlk_nR9q31qq4cWXv-g - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-1: XhGBxDFQQZSzUmz1mtNOcA - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-2: ErI-JGtoRUOgW8V0MVbPBg - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-3: eoBnbvegSSm5lg-v5DTGHQ - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-4: L7d5w6FATMqcCDdlo_CojA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-1: Mpw_m796RX22rlRvDtAFWg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-2: F82Wa--eQEayH8u-0Vo4Qg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-3: CZMZAuVkRICcQ6mWvq_5qw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-4: K0wO22NWQpyDFyDNV8vcbw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-5: PIPWl_j7QBuycTNl6aOmjA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-1: JeJUlrxzRQerTlkEd3-wYg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-2: D4PwFUgVTvaF6JMwzDUmsw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-3: JSxZ4XBTR2OnIXQ2uOyFgA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-4: TKlzBGoiSnCzn67cVmPMMQ - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-5: DuiiWtFDRnCe-pf7fwUAUw - test-macosx1470-64-shippable/opt-web-platform-tests-webcodecs: GUDGrt5yRvS1JLfYycMi3g - test-macosx1470-64-shippable/opt-xpcshell-1: EI3l-Q02QAa3VmE8OpLonw - test-macosx1470-64-shippable/opt-xpcshell-2: FSgas5EBRnau2UXFsHKLzw - test-macosx1470-64-shippable/opt-xpcshell-ioi: Bk3lhT9bSjuHhtYBstaQaw - test-macosx1470-64/debug-cppunittest-1proc: aqTK-QpzTrOKQ1k0_6K66g - test-macosx1470-64/debug-crashtest: JhE8MSuIQ56v1GH3ZvKfvg - test-macosx1470-64/debug-crashtest-ioi: EAH3F2FsTQG_C2rB61GJxg - test-macosx1470-64/debug-crashtest-swr: YEwS5DZ3TWylbhcZ9-tu-w - test-macosx1470-64/debug-icecat-ui-functional: GBORd1rcSp2NkyIOI_ccxA - test-macosx1470-64/debug-gtest-1proc: aafGdy7CTL6SIFeZV-Qeyg - test-macosx1470-64/debug-gtest-ioi: MeXDXjuCSuW6CdwieCXV2A - test-macosx1470-64/debug-marionette: X804mPPsTW6-uNJ_I_831w - test-macosx1470-64/debug-marionette-ioi: Zk0x4x4qToSLUXrOav00NQ - test-macosx1470-64/debug-marionette-swr: BQaCwe6gQSeuVbP6auAARw - test-macosx1470-64/debug-marionette-unittest: NanznSLsTl2eaKXmBJgrsg - test-macosx1470-64/debug-marionette-unittest-swr: JSLGkkw1Tf-s9-yZaiJuiA - test-macosx1470-64/debug-mochitest-a11y-1proc: BxggIn2gQI-ujB4yqo3PJg - test-macosx1470-64/debug-mochitest-browser-a11y: TCECJTCIR-qeKdAwNCX7nQ - test-macosx1470-64/debug-mochitest-browser-media: OF7ViSHQS2yFEl368241vA - test-macosx1470-64/debug-mochitest-browser-translations: NlmCUCVgS4mV9WSrcoyuqg - test-macosx1470-64/debug-mochitest-chrome-1proc-1: T9A7esMOSdSwmAJcgrPRmA - test-macosx1470-64/debug-mochitest-chrome-1proc-2: AWLWkqiTQkq2OPMR3ongxQ - test-macosx1470-64/debug-mochitest-chrome-1proc-3: Tv168Qa_S9eJvYzDCmT9pg - test-macosx1470-64/debug-mochitest-chrome-gpu-1proc: Q-LHB014Q6WAVY4yWb1HNQ - test-macosx1470-64/debug-mochitest-chrome-ioi: IujR0sc6SgSpdSzRSgdKIw - test-macosx1470-64/debug-mochitest-devtools-chrome-1: KXtXxM-8S0ePAhWhO8vr1A - test-macosx1470-64/debug-mochitest-devtools-chrome-2: amVFR9ZUR9WbbTHt_Dig8A - test-macosx1470-64/debug-mochitest-devtools-chrome-3: YEjJk5_6QsK50V-G02phHQ - test-macosx1470-64/debug-mochitest-devtools-chrome-4: C0EjhGcAQA6MZbL1Z8OM8w - test-macosx1470-64/debug-mochitest-devtools-chrome-5: PEj8qeamRhqRiZapkxkkJw - test-macosx1470-64/debug-mochitest-devtools-chrome-6: Ud9KoRjVRV22S1Oow_f7BQ - test-macosx1470-64/debug-mochitest-devtools-chrome-7: Sf9Eq0JfT3a3dKnfDzg5Qg - test-macosx1470-64/debug-mochitest-devtools-chrome-8: OGijaQeiQ52WWEPmHFtEmg - test-macosx1470-64/debug-mochitest-media-spi-1: NdTaW6JzQeCJ1pMHr5Z_1Q - test-macosx1470-64/debug-mochitest-media-spi-2: U4QFbBBiQmuWpHLvWp4v7w - test-macosx1470-64/debug-mochitest-plain-1: UaNisTinQi2a-l-XKCcYlA - test-macosx1470-64/debug-mochitest-plain-2: GWOdS4gZRRi0rjzuSCIVBA - test-macosx1470-64/debug-mochitest-plain-3: IW4IeAuNTiWI9bLFIkfIQA - test-macosx1470-64/debug-mochitest-plain-4: VPKtCcYaRlqT5KuXy94hQg - test-macosx1470-64/debug-mochitest-plain-5: el16JNSGQMyDqP4HGICiYA - test-macosx1470-64/debug-mochitest-plain-gpu: SETSuZ8tSAayu5k4U6CN8A - test-macosx1470-64/debug-mochitest-plain-ioi: c4lUO8iPTvapWW3zSOKBcQ - test-macosx1470-64/debug-mochitest-remote: cCoRttGiRqOJ0_b9BMIeWg - test-macosx1470-64/debug-mochitest-webgl1-core: DfJLmCuUTZaIgvmI-2BfFw - test-macosx1470-64/debug-mochitest-webgl1-ext: IJmKxueDR2maraXhZE9nmg - test-macosx1470-64/debug-mochitest-webgl2-core: GFcz2aNOQpuV-kI7kekYwQ - test-macosx1470-64/debug-mochitest-webgl2-ext-1: VZuo9RaYTMmhhrj4RdxRJw - test-macosx1470-64/debug-mochitest-webgl2-ext-2: TiCX0Zs2RpaFcnhMTsx5VA - test-macosx1470-64/debug-mochitest-webgl2-ext-3: c9tq2bPGT46P6uDQi3c_nw - test-macosx1470-64/debug-mochitest-webgl2-ext-4: KZLmyQNFTGmYY38iukR-Ww - test-macosx1470-64/debug-reftest-1: aDManJzaQHWq4pjmVmrYPg - test-macosx1470-64/debug-reftest-2: F9arW-u5Sk6ZE-WxEojgmw - test-macosx1470-64/debug-reftest-3: B3JGco_fQUqzFVoK27Jcjw - test-macosx1470-64/debug-reftest-4: Uw_XGD99S1S4Vm1fQVRYQg - test-macosx1470-64/debug-reftest-5: KkKImCGsSIGRz1UvdJSIBw - test-macosx1470-64/debug-reftest-6: S9bd7AG8Tw2bcU3W0uH67w - test-macosx1470-64/debug-reftest-swr-1: BI5ze1o4Qi6hpJ2o0PBa1A - test-macosx1470-64/debug-reftest-swr-2: cjPrpcNOQJKbkpC2jcjwxQ - test-macosx1470-64/debug-reftest-swr-3: D1mG5gXjQC2kLN0PqlumyA - test-macosx1470-64/debug-reftest-swr-4: ZcZoAifqSD6EMhak8UHHpw - test-macosx1470-64/debug-reftest-swr-5: DL-QR74BQQOM7WciDi8hVQ - test-macosx1470-64/debug-reftest-swr-6: ZICHgwTAQLqaFxhbh1l1XQ - test-macosx1470-64/debug-telemetry-tests-client: Qwr-n7SFSFuAYTcsGXiblg - test-macosx1470-64/debug-web-platform-tests-1: A1Na7pcQTw6a_hoqGLCkCg - test-macosx1470-64/debug-web-platform-tests-10: XfMLJ4v9S8ybZCk7h2JqMQ - test-macosx1470-64/debug-web-platform-tests-11: de4WQ4P6TWiBCRhyDx65BA - test-macosx1470-64/debug-web-platform-tests-12: UxSMTLc-RByD9Y5KNoAR6w - test-macosx1470-64/debug-web-platform-tests-13: dNUkWX9mT9C_15S5sfP7ng - test-macosx1470-64/debug-web-platform-tests-14: cIcKSmZsTEW5R6_--DlrIA - test-macosx1470-64/debug-web-platform-tests-15: RueaFqAMSdiQBUM8xvRG8w - test-macosx1470-64/debug-web-platform-tests-16: fb0njdPRT6iRYcTHnn0ixw - test-macosx1470-64/debug-web-platform-tests-17: QD21QoNeS-6rd0zAugOsfw - test-macosx1470-64/debug-web-platform-tests-18: BCU69ybxRHWbZqvYubshNw - test-macosx1470-64/debug-web-platform-tests-2: UsFJa1vvSyOc4VFiehIdMg - test-macosx1470-64/debug-web-platform-tests-3: LvpxMrrfTgSSIiRwAnpWIg - test-macosx1470-64/debug-web-platform-tests-4: SKZo7fQ2S-uPLuybmAPBgA - test-macosx1470-64/debug-web-platform-tests-5: OdFhtK6lRkOTmTuskDQUrA - test-macosx1470-64/debug-web-platform-tests-6: HTP85PZYQjKokrOnYaYtCA - test-macosx1470-64/debug-web-platform-tests-7: dCO-h059QbOQ5RUvU5ImkA - test-macosx1470-64/debug-web-platform-tests-8: CcK1ihJzTl-g505EkzkAGA - test-macosx1470-64/debug-web-platform-tests-9: E8OysAxESKOnpKAhr9PiMQ - test-macosx1470-64/debug-web-platform-tests-canvas: ZGD6A5uuQZSIFqLwSyFjhw - test-macosx1470-64/debug-web-platform-tests-crashtest: XpS6v9FFR_yVMzxSYIiKMw - test-macosx1470-64/debug-web-platform-tests-crashtest-swr: dqm9h6HQQx6ZEw3SVZygwQ - test-macosx1470-64/debug-web-platform-tests-eme: CVM1WcImR3W9X3JjPJocLg - test-macosx1470-64/debug-web-platform-tests-ioi: GHkJ7SczToSKvCNrqqZcaA - test-macosx1470-64/debug-web-platform-tests-pb: c8dfGmpiTcuQItr1aoArpQ - test-macosx1470-64/debug-web-platform-tests-pb-ioi: ZSyK03KWSCqKIsUgIw6Cew - test-macosx1470-64/debug-web-platform-tests-print-reftest: eaFizwnKQNi-M5WSqdLN6Q - test-macosx1470-64/debug-web-platform-tests-reftest-1: QIfZmwx8Q6KuqV53BretTw - test-macosx1470-64/debug-web-platform-tests-reftest-2: NnIgZ1l-TA6udUKlxQdYlQ - test-macosx1470-64/debug-web-platform-tests-reftest-3: V4qYSSlxQv24GxB39VwTlw - test-macosx1470-64/debug-web-platform-tests-reftest-4: Q_cxGC0uSwK0O759quZdEw - test-macosx1470-64/debug-web-platform-tests-reftest-5: KNN2epNnS9GyScwWShXsmQ - test-macosx1470-64/debug-web-platform-tests-reftest-6: OPW-vEFmRT-phJ7VTEtokA - test-macosx1470-64/debug-web-platform-tests-wdspec-1: da-0By9nRDaDmZJCdCQAKg - test-macosx1470-64/debug-web-platform-tests-wdspec-2: ExDIsVaXTU2Bb_xVASzRMA - test-macosx1470-64/debug-web-platform-tests-wdspec-3: H91ZFAG_RdSRrYCAr7cZeQ - test-macosx1470-64/debug-web-platform-tests-wdspec-4: A22cD1YLRVqM88BSFu2tUA - test-macosx1470-64/debug-web-platform-tests-wdspec-5: D_D7AY0FTaG4PEFHLleYJw - test-macosx1470-64/debug-web-platform-tests-wdspec-6: OVOAcieYRhC9lgtUWEI_Lw - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-1: WJ1-J3CVS-2sHztim4gaTA - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-2: ZsnmUecRT6mAIZksObfpDg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-3: RxeK3ebtTw-dwYpe0vQdfg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-4: U6dZeQygR0e5sgv3YqmCow - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-5: TxYDDS6AQM6rSwdyWpmvrg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-6: GJc4bYfMTA2eLjFDmAYw9g - test-macosx1470-64/debug-web-platform-tests-webcodecs: bdMWbKTbQkGml7RzCu2wEA - test-macosx1470-64/debug-xpcshell-1: d4K5l2thS62gvRVBhyVfRQ - test-macosx1470-64/debug-xpcshell-2: dvPBXS5gQSKfWxAm3xvyhg - test-macosx1470-64/debug-xpcshell-ioi: QAo9yXvOSISJM5qhnlgDnw - test-macosx1500-aarch64-shippable/opt-crashtest: XUtPGEOiSv2rwfla6H-U_w - test-macosx1500-aarch64-shippable/opt-crashtest-ioi: EtTdoNTpTI6scH83R-gkUg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y: Q3YVz9IkQoamwS4fYb4KDQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-1: D_XGKycURgeWpELuwaS4dA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-10: Taz7SU6DQaCDZ4Qt_7Zgpg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-2: C3F1hdHeSlO9JDCsWjh6XQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3: Ys6FpZoaTbuBDXzREv8WVQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-4: Kp-cDcPUSJGdaMjtI1aUJw - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-5: Co41Oi5jSMmhiAj3iuQKYQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-6: b4e6SE3WQ5-IxS2wa91Hyw - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-7: ZA2rm5_rQr2lesQOmycotg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-8: PjDwPNlUSi27c5e5Ia_LDA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-9: A7iEmkCgRZ2IndyVUtRsbA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-media: eobwuHzuSLGwwcD8Sy-Ksg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-translations: L1oDKd1mSuuPp_c5zbvdTg - test-macosx1500-aarch64-shippable/opt-mochitest-chrome-gpu-1proc: cSkfNevtQE2iWg1zfrkiYA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl1-core: JbKE-tgaRjGYb6_i3chqEA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl1-ext: YgHvfcgZRqC0Q0UWqCKbKA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-core: RDC30pLrQteTLWkRevVcHQ - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-1: CD4tWZ67Q_m-TH2z2tjk_g - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-2: dVCP3uNyR5yu8x0mVZ1CgA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-3: TBXk0YcOSqaw96R8tC7zMA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-4: YKesTYaZRj-ODKHdK5UoZw - test-macosx1500-aarch64-shippable/opt-reftest-1: WK2Sd5cQSrSEQHECbsUMgQ - test-macosx1500-aarch64-shippable/opt-reftest-2: YaYlc7AFSmu1mAtK-AC_xw - test-macosx1500-aarch64-shippable/opt-reftest-3: eqXxE19eRmmWoWidoRQ6og - test-macosx1500-aarch64-shippable/opt-reftest-4: SkQ3lSNxR0KeY4CnTlvbNw - test-macosx1500-aarch64-shippable/opt-reftest-5: Uxh09kOeS321lzxLiolPTA - test-macosx1500-aarch64-shippable/opt-reftest-6: DY7RmtvCTLibZTDr22vhMg - test-macosx1500-aarch64-shippable/opt-reftest-7: DFOhB5RHS4StLUGUCGf22w - test-macosx1500-aarch64-shippable/opt-reftest-8: P1WIGAVDSQi-t_CJWBKHkw - test-macosx1500-aarch64-shippable/opt-web-platform-tests-eme: Pmo0qviAQVexG_myb5zXMQ - test-macosx1500-aarch64-shippable/opt-web-platform-tests-webcodecs: RnBy4dHOTr63st48pNd5Iw - test-macosx1500-aarch64-shippable/opt-xpcshell-1: WEoU-ns1S0-t-1tgUKSq4g - test-macosx1500-aarch64-shippable/opt-xpcshell-2: UuiERZSPQv22DRaVIoxYMA - test-macosx1500-aarch64-shippable/opt-xpcshell-ioi: eNZysvVLSrGSAt-5b1k7Tg - test-macosx1500-aarch64/debug-cppunittest-1proc: blzfqOfaR4uweVku4ZsH_g - test-windows10-64-2009-qr/debug-cppunittest-1proc: a4OLa7VxRquglRpi77MTPQ - test-windows10-64-2009-qr/debug-gtest-1proc: Sj2qJFS2SfGf5GfwosBzag - test-windows10-64-2009-qr/debug-gtest-ioi: FvVlfiRrQxGJO2SY5w40fA - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-1: B-H-tXmISh-pHEyMMjMTEw - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-2: FrIgjvt4T8i8XoLgHrWxNQ - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-3: UzGEl0ZdRWyMjba8MGKx2Q - test-windows10-64-2009-qr/debug-mochitest-chrome-gpu-1proc: f4YadnmsTqSLqB7mpJhCTQ - test-windows10-64-2009-qr/debug-mochitest-chrome-ioi: RGLPbAFaTPyNnEFvT3ycCA - test-windows10-64-2009-qr/debug-mochitest-plain-1: NIBvCwM3QRenoh5QHZ2fYQ - test-windows10-64-2009-qr/debug-mochitest-plain-2: VnvOIvjDTzipMOa0Q5ApgA - test-windows10-64-2009-qr/debug-mochitest-plain-3: FfEYW4VWSG-xxN5xxZxFhg - test-windows10-64-2009-qr/debug-mochitest-plain-4: GB0z0uiPT4CIltfX1dP7sQ - test-windows10-64-2009-qr/debug-mochitest-plain-5: N6PPabYiTHORhBSz68eX3w - test-windows10-64-2009-qr/debug-mochitest-plain-6: c4K1sDgDS_uinzK5Q9mIDw - test-windows10-64-2009-qr/debug-mochitest-plain-7: E2zLdclNSTGl90akQx1mWw - test-windows10-64-2009-qr/debug-mochitest-plain-8: WSx660G4SEGrVOc0Fw_94g - test-windows10-64-2009-qr/debug-mochitest-plain-gpu: WDng6A-eRliMTZX_5EanPw - test-windows10-64-2009-qr/debug-mochitest-plain-ioi: chFtECkaSdCT4tn89harWQ - test-windows10-64-2009-qr/debug-xpcshell-1: XsiU8xO0Tum2rBn41NkuKA - test-windows10-64-2009-qr/debug-xpcshell-2: GO8GcJasRV-tmRiteYzzXw - test-windows10-64-2009-qr/debug-xpcshell-3: S6ortWozSrWaCwhOEaDFxw - test-windows10-64-2009-qr/debug-xpcshell-4: J40dnn4EShiETQKU0x1DFA - test-windows10-64-2009-qr/debug-xpcshell-ioi: QOQXClkpRhqcRN_XzgeJgQ - test-windows10-64-2009-shippable-qr/opt-cppunittest-1proc: K1umEra5SduaJmN1Eu8uCw - test-windows10-64-2009-shippable-qr/opt-gtest-1proc: fIEbG4dtSzGoxQVjs0MxFg - test-windows10-64-2009-shippable-qr/opt-gtest-ioi: GDJfSHvdRvqSk1xh4m4Z3w - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: AMQzlSdZRCu_lCNuaJOd9A - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: MYiMzRSuQOmQHWZSj4rkkg - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: L-LzYFrbQ0eQXbiJJcpe_w - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: BxvSZVlZTYW-JLKqT_T92g - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-ioi: MM0eHtn3Syqn4QJAFj6FXw - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-1: MxUIJoujSJiJP4m6QVVjaQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-2: ORiLz5bQRpi3F4W9M9t-aQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-3: LVbZ294CTWmbJ4RFwsuEwQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-4: CUfNxIxlSM2HhrAHmNqTLw - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-5: WflPESbRSeGCB2-q9reB1Q - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-gpu: BwYz10zQQNi5EUGIzfIpeQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-ioi: Ldcuj97iRxKRhnlYvFpyVA - test-windows10-64-2009-shippable-qr/opt-xpcshell-1: UnHCRLfQS7WBmDofxsOB8w - test-windows10-64-2009-shippable-qr/opt-xpcshell-2: HvXHT1_HSyOB04w1m4TUJA - test-windows10-64-2009-shippable-qr/opt-xpcshell-3: G_i_DcO8TBuGIXRBaT92lg - test-windows10-64-2009-shippable-qr/opt-xpcshell-4: Yq8OqeW8R0KH14LnF4MY1A - test-windows10-64-2009-shippable-qr/opt-xpcshell-ioi: VZbn7Zy2Spefk1AjHA9NRw - test-windows11-32-24h2-mingwclang/debug-cppunittest-1proc: BexxFeGrS7-TCKl78u1g2g - test-windows11-32-24h2-mingwclang/debug-icecat-ui-functional: SDPsfqHORom4ImHtDA3F1w - test-windows11-32-24h2-mingwclang/debug-mochitest-a11y-1proc: Mbo2S_94SleOTnRws-94lQ - test-windows11-32-24h2-mingwclang/debug-mochitest-chrome-gpu-1proc: CM_3nc8EQeGe-LCHwfa8og - test-windows11-32-24h2-mingwclang/debug-mochitest-plain-gpu: NzYW0BzaTNWZdsnzTw_o0A - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl1-core: JQYC7vtUTeiH0NmZMW0p1Q - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl1-ext: TIQ9GcbfTAW3V_lLSK4i_w - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-core: CZL0lZcQSvKFTRfe69vCdQ - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-1: LXZAzIUES3qO8KnqCwc4Tw - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-2: C2YkjDEhTnGF_IQGmfneUw - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-3: dpuAD6DsT0WzTTdrlp27-Q - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-4: LEL9wkfSQ6CZvjKJTMfssg - test-windows11-32-24h2-mingwclang/debug-telemetry-tests-client: ZLl5WMJ_TPmQHUFvUJSBsA - test-windows11-32-24h2-mingwclang/opt-cppunittest-1proc: dGNXw093SD2vGhGUALEWRA - test-windows11-32-24h2-mingwclang/opt-mochitest-chrome-gpu-1proc: El0VRKdETA2vHVhzLp6Q0g - test-windows11-32-24h2-mingwclang/opt-mochitest-plain-gpu: SbH0hcDHSnKxpqpl0bllOQ - test-windows11-32-24h2-shippable/opt-cppunittest-1proc: X2Yd1PHaQs2NbE_c7aHDNA - test-windows11-32-24h2-shippable/opt-crashtest: O2WgnO2XS4KYRiAIS6dDaQ - test-windows11-32-24h2-shippable/opt-icecat-ui-functional: YzzmmcQqTCerpxTIafdJxQ - test-windows11-32-24h2-shippable/opt-gtest-1proc: Aw7gRVi8QsiCGoDWcBXzmA - test-windows11-32-24h2-shippable/opt-marionette: culTuNyaRDaZOkZTwjUs4Q - test-windows11-32-24h2-shippable/opt-marionette-unittest: cxdIOrkDRQuyuY_zSPNb0w - test-windows11-32-24h2-shippable/opt-mochitest-a11y-1proc: FQGfQKpYTa6YFWC85HW6TA - test-windows11-32-24h2-shippable/opt-mochitest-browser-a11y: OB2ePcBgSYqfvCzr_fXKUg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-1: ERa2XiJsT7SBx6l-YRoeTg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-10: BIyOImuKR7CXWeg0kGPfuw - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-2: MRxKqTYOQxqOr1Dl7RRfFg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-3: Hh57P6w8TgeGp8PymLWO0A - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-4: B5fdIumSQgWqpgmmZeUAyQ - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-5: JPTwMAX8RlSIqgDl0puQ2Q - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-6: IcIvMivaQOepoR6ZUNilIQ - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-7: T6td8CMDRjSlfSwCce60Pg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-8: cQg9RwjfTcat7dVnf-pZ6w - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-9: TyJ59SjtRTeLp7NzedfipA - test-windows11-32-24h2-shippable/opt-mochitest-browser-media: TNmOSYrIT6-PIJ0x_S5YbQ - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-1: amO5JZfATtagbkI35ncJOw - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-2: BAP_0rOwQ_-kM_ffozraDg - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-3: D34Ub3KIRfubtt1xCEAt1w - test-windows11-32-24h2-shippable/opt-mochitest-media: DAq4yvqVR-6eq1iu86wJbQ - test-windows11-32-24h2-shippable/opt-mochitest-media-nogpu: G8PJxfRaTDiqZioA32yWzA - test-windows11-32-24h2-shippable/opt-mochitest-media-spi: FohtoBskSXuYfCu-4mEJkg - test-windows11-32-24h2-shippable/opt-reftest-1: cQl3BgGHQ16CKUHab9NJ1Q - test-windows11-32-24h2-shippable/opt-reftest-2: YdA0G3VXQ2uDUPxTcnL77A - test-windows11-32-24h2-shippable/opt-reftest-3: fuQWl-iqRjOYgIv4ux_JLw - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-1: L1H5MTIGQom3oK0mlnOARA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-2: L1SaYde4T4qEGSS-IzbM-A - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-3: W4TwUAFKRVKqiBoLAWUbWA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-1: I_5StOcgRcy5_0boVJEwPQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-2: cJhf7cfrRWO8Dcg1DbYMLw - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-3: c-iXKDU6TNKBlmqeTsbdTA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-1: HN7xN9ZzSqCO_hwEsP4Tdg - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-2: QsyPyz_4RLaQBqeOFulgWQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-3: VZ4-S1DQSj2jebGw_ll-gQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-1: aXysiyMLR_af_vv8liQxag - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-2: YOhY-pSGTEKdeQnKMqTn1g - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-3: YiFE-BWBScWZSHLF4dteSw - test-windows11-32-24h2-shippable/opt-web-platform-tests-1: SkI3j1xERs2tV_aXt1FN8Q - test-windows11-32-24h2-shippable/opt-web-platform-tests-10: LhR_QsquR_SuecNUc6a5gw - test-windows11-32-24h2-shippable/opt-web-platform-tests-11: OK209PxfTPu0qAOfp4KIXw - test-windows11-32-24h2-shippable/opt-web-platform-tests-12: Cm1w8p1XTUqCDajUQJI_pg - test-windows11-32-24h2-shippable/opt-web-platform-tests-2: bLC1rBIqTPatM5HSRovnhg - test-windows11-32-24h2-shippable/opt-web-platform-tests-3: f8Ye-asaRryUZDJQbGxeVA - test-windows11-32-24h2-shippable/opt-web-platform-tests-4: BkPPjyvcSB2gJ2WAeVjVEg - test-windows11-32-24h2-shippable/opt-web-platform-tests-5: CGpbY0-fSk60xrIkLZKKEw - test-windows11-32-24h2-shippable/opt-web-platform-tests-6: Q2L7mrlJQoiCQ9crlinYdQ - test-windows11-32-24h2-shippable/opt-web-platform-tests-7: B8WVZw9mS2Cma9xzoqZZcw - test-windows11-32-24h2-shippable/opt-web-platform-tests-8: M35he-cPQDeWFbO6ZEnHWQ - test-windows11-32-24h2-shippable/opt-web-platform-tests-9: dN6oAd37RLCQMDmwJ8O7mA - test-windows11-32-24h2-shippable/opt-web-platform-tests-crashtest: SzwPXr_mQM24fP5k3p8xRw - test-windows11-32-24h2-shippable/opt-web-platform-tests-pb: EwByfxGzQQ-KQDRcTE5ctg - test-windows11-32-24h2-shippable/opt-xpcshell-1: PvWUpnydS1eaPYLttPeaqQ - test-windows11-32-24h2-shippable/opt-xpcshell-2: f3CyvmA9TJq5NQjoWGQMIA - test-windows11-32-24h2-shippable/opt-xpcshell-3: WtAYkPFfQbCViSbrIliiZw - test-windows11-32-24h2-shippable/opt-xpcshell-4: VB5TzucjQM-8L9UQbfeUBg - test-windows11-32-24h2/debug-cppunittest-1proc: Xu6uSwYYQWK51BY5ra4ZYg - test-windows11-32-24h2/debug-crashtest: TJyPxo6yTGayblKxtQA7IA - test-windows11-32-24h2/debug-icecat-ui-functional: GLSKspYZQbG9rKgmjylPiw - test-windows11-32-24h2/debug-gtest-1proc: DpZD6-G0RUKen5ulxwQH0Q - test-windows11-32-24h2/debug-marionette: Zcj3hy7XQnOJbdg_Gq1B4Q - test-windows11-32-24h2/debug-marionette-swr: bBf_Z0IlQaCDODJcGRcXyg - test-windows11-32-24h2/debug-marionette-unittest: N2CYXxYWRRmnfNdxcQDe9w - test-windows11-32-24h2/debug-marionette-unittest-swr: aSkcd4rESGaPMb8bNKJP9w - test-windows11-32-24h2/debug-mochitest-a11y-1proc: dFYUXCxkRzmsrk3pbCtOhQ - test-windows11-32-24h2/debug-mochitest-browser-a11y: Go6Yn_gXTJ21T24LYiYAdQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-1: PS79Ai5rRNeZXl7G5CeLZA - test-windows11-32-24h2/debug-mochitest-browser-chrome-10: c9drNsiYS8qU05teL5AgwQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-11: DoMcYMwhS1m7D9vm0ALXVA - test-windows11-32-24h2/debug-mochitest-browser-chrome-12: NFZsB118Snyf4LElMzOQyQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-2: YnYIB7ffQimtolg-XemZuQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-3: Y-PzpRjARkGBMmFB7Dhrcw - test-windows11-32-24h2/debug-mochitest-browser-chrome-4: eldtovzARlu6pyl_2546UQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-5: Xhr7hG7UQOG21e7zBvtnQA - test-windows11-32-24h2/debug-mochitest-browser-chrome-6: Z7FUgVgYSA2bkTll_NrXGA - test-windows11-32-24h2/debug-mochitest-browser-chrome-7: Ixm3H4sKRpSIoQ_5ctEDtg - test-windows11-32-24h2/debug-mochitest-browser-chrome-8: XO6zqpR0SLSKTufQHrdsjw - test-windows11-32-24h2/debug-mochitest-browser-chrome-9: NZz_SsrcSEKOuHIAwpDS6w - test-windows11-32-24h2/debug-mochitest-browser-media: b7I1R9fwRy2L-1nNM09T9g - test-windows11-32-24h2/debug-mochitest-chrome-1proc-1: TxjzG7NKSB2bg_fMFj-oaQ - test-windows11-32-24h2/debug-mochitest-chrome-1proc-2: F0r28wRcSi2v21IeJVeazw - test-windows11-32-24h2/debug-mochitest-chrome-1proc-3: ekgtUp0qRZCNaMqWnOQalQ - test-windows11-32-24h2/debug-mochitest-media-1: CJw960WtTzqeOJq7oymuVA - test-windows11-32-24h2/debug-mochitest-media-2: W83OMOvKQkuga3l_BNB1_w - test-windows11-32-24h2/debug-mochitest-media-nogpu-1: Cj0Own04TtC8OODC_tRhJg - test-windows11-32-24h2/debug-mochitest-media-nogpu-2: cNtMSFPETL640e2tsu7UiA - test-windows11-32-24h2/debug-mochitest-media-spi-1: Mv2oxyubT5aBK2daqia5Tw - test-windows11-32-24h2/debug-mochitest-media-spi-2: cjKObmZiTDyV_8upqokZzg - test-windows11-32-24h2/debug-reftest-1: ege_YNZVRMKDyG3hpgPFEQ - test-windows11-32-24h2/debug-reftest-2: S_TNBIeUTL60ZY2KAdVhTQ - test-windows11-32-24h2/debug-reftest-3: Uavk7EKlRz2NR1RyRSCLiA - test-windows11-32-24h2/debug-reftest-4: dFvI_PhrQkaj7iUNHiVz3A - test-windows11-32-24h2/debug-reftest-5: KEP1qDzTTvO3zWMeCyYtUg - test-windows11-32-24h2/debug-reftest-6: Km75VZvwSKS6-Mvtt8A58g - test-windows11-32-24h2/debug-reftest-wr-dc0-1: H4OSnMR0QXyObEu3XpPpWQ - test-windows11-32-24h2/debug-reftest-wr-dc0-2: Z0M5mEQkRwOO_GeLAvPrzw - test-windows11-32-24h2/debug-reftest-wr-dc0-3: NoAZzE8vRDiumXKK1lLS1A - test-windows11-32-24h2/debug-reftest-wr-dc0-4: E_4y4m9QSfW6DY8v1BkeZg - test-windows11-32-24h2/debug-reftest-wr-dc0-5: PUmm1f14TZe5G-VpBMA-Yg - test-windows11-32-24h2/debug-reftest-wr-dc0-6: PsvWZqMpTZinte0gaizjaQ - test-windows11-32-24h2/debug-reftest-wr-dc1-p-1: atIBNRrvRpezSOHpRjCjbQ - test-windows11-32-24h2/debug-reftest-wr-dc1-p-2: EF4NoO8rRw2YTFUiG2Zw6g - test-windows11-32-24h2/debug-reftest-wr-dc1-p-3: IrF6YtyXTdGYV4XMA8lPjA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-4: ewzB9cBrRyCQgOuT1ln3LA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-5: KLD2QII6Qv2in2o4i0ylGA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-6: TKPPTJBtTQWxQ3T3ewoESw - test-windows11-32-24h2/debug-reftest-wr-dc2-o-1: ZqBUBHObRWmV53Soew1boA - test-windows11-32-24h2/debug-reftest-wr-dc2-o-2: GzfhIDhgRLyvUCHtqAX-YQ - test-windows11-32-24h2/debug-reftest-wr-dc2-o-3: UzKPVnlJSKe5Guekmaz9Gw - test-windows11-32-24h2/debug-reftest-wr-dc2-o-4: Rb5F9ZbUQvGfTSQOzml-yQ - test-windows11-32-24h2/debug-reftest-wr-dc2-o-5: HL4tNk70So2OOWenrfRkcg - test-windows11-32-24h2/debug-reftest-wr-dc2-o-6: O46QMpE2RqK1oGYLP5tm9w - test-windows11-32-24h2/debug-reftest-wr-dc3-c-1: VKEmFSunRbuOArkMu6CzqA - test-windows11-32-24h2/debug-reftest-wr-dc3-c-2: CLSdLUYNSHG5n_cxZnWF6Q - test-windows11-32-24h2/debug-reftest-wr-dc3-c-3: dGS2oDddSOChS4OTbecP0A - test-windows11-32-24h2/debug-reftest-wr-dc3-c-4: Qssh4VFYRSSBxhQAv23yDQ - test-windows11-32-24h2/debug-reftest-wr-dc3-c-5: AwSQ4wk8QkqD5_AJ1blxHQ - test-windows11-32-24h2/debug-reftest-wr-dc3-c-6: JZaxe9f9QWueQl4GVakgEg - test-windows11-32-24h2/debug-web-platform-tests-1: Bho1aHzoQNqaOJufgvNMsg - test-windows11-32-24h2/debug-web-platform-tests-10: A1mSYr-KQS61tQJhdGN8wA - test-windows11-32-24h2/debug-web-platform-tests-11: N-ea8CYGTYucTmeDl4qELg - test-windows11-32-24h2/debug-web-platform-tests-12: fTgordRCSia2PUVRaGNu5Q - test-windows11-32-24h2/debug-web-platform-tests-13: C8__NZ6WTtOsCo0OzOHmug - test-windows11-32-24h2/debug-web-platform-tests-14: cgRuFQ52TIuPYYmVPtt0Xw - test-windows11-32-24h2/debug-web-platform-tests-15: A6pZtMSFTTGgRmVzNPiYDg - test-windows11-32-24h2/debug-web-platform-tests-16: NsGw2r-qTQ2uB7h4VILuJg - test-windows11-32-24h2/debug-web-platform-tests-2: KQq-2DscTl2mWfrKgSwxDg - test-windows11-32-24h2/debug-web-platform-tests-3: QfsYfif8TjmLQT1DKl5uHw - test-windows11-32-24h2/debug-web-platform-tests-4: MsJ4203-R-W6cdFomUU4zQ - test-windows11-32-24h2/debug-web-platform-tests-5: afMhY17zRpqkr8te374yJg - test-windows11-32-24h2/debug-web-platform-tests-6: eNAID7YUT4-SYDlWPWidYQ - test-windows11-32-24h2/debug-web-platform-tests-7: LoQGEs5yQUiTjuWpzVYKpg - test-windows11-32-24h2/debug-web-platform-tests-8: cV8kEEvPRZG2Ed1CknWsww - test-windows11-32-24h2/debug-web-platform-tests-9: EL8NxIFNRQKvNBPt0dLhBQ - test-windows11-32-24h2/debug-web-platform-tests-crashtest: Gw9J8RDhTbS2Rn8eBswPLA - test-windows11-32-24h2/debug-web-platform-tests-pb: CkZ_NH_5ROypD72387DdvA - test-windows11-32-24h2/debug-xpcshell-1: RWSDcXGgSqqA9B80Ds_97g - test-windows11-32-24h2/debug-xpcshell-2: B_6lOdapTv2342XIoWMdzQ - test-windows11-32-24h2/debug-xpcshell-3: CUtvT3c_RBKVE8Ais0L3PA - test-windows11-32-24h2/debug-xpcshell-4: AFoTHql3QkCnnQ6qHARFhg - test-windows11-64-24h2-asan/opt-cppunittest-1proc: VRBaAC6iR1eoIYGG_RjW8w - test-windows11-64-24h2-asan/opt-crashtest: R9GJLEosS-GpXigp0MLWvA - test-windows11-64-24h2-asan/opt-crashtest-swr: HZ7ugjgrQdquw0cgUDM2Zw - test-windows11-64-24h2-asan/opt-icecat-ui-functional: UNJxaVYKQ9qEbELmDQh4wA - test-windows11-64-24h2-asan/opt-gtest-1proc: da4A4Fj3T8GQoRa5GORalA - test-windows11-64-24h2-asan/opt-marionette-1: RY1f10FQR0GoSa4WMzjLOw - test-windows11-64-24h2-asan/opt-marionette-2: Wb3M_HBiTOiRwdimrCXD_A - test-windows11-64-24h2-asan/opt-marionette-unittest: dq-c572jT0uhffEBmDSEBw - test-windows11-64-24h2-asan/opt-mochitest-a11y-1proc: f3MvQxMrQ4W60IrLi2gO2g - test-windows11-64-24h2-asan/opt-mochitest-browser-a11y-1: X1EmifHpT2-WxHD8ES_YTA - test-windows11-64-24h2-asan/opt-mochitest-browser-a11y-2: eXhtD_v-SuuCZhNi1Xnf-w - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-1: aypuGfLtRvCFEINV7Vdrtw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-10: eDNSzd5OTXCZ_mP17u7wAQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-11: c18eKVvnSKOaZA3G8-ZdTA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-12: JxtFPVBxTyiOm462PPu6TQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-13: OwbP1VO-Q2-aeg3LTJ2Wzw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-14: aWgz7IboSE2qFdut0TwfyA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-15: DA4ItLgkQxKrwEthIhuPWw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-16: GGZj8QbHSFSOKd9K5KOMYw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-2: faDq00Z_ThGdtrjVFb7iXg - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-3: W0dDo7FVRZG1O48aTUDQLQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-4: KIkX_sxMTZGDSfkx2RlIaA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-5: Hv6LhfvcQVKP3MJb_sohhA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-6: Y4cmx5yZSyy4hnQvS2Nk-A - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-7: YKFI2pGyRMCfgT6Y0II9yA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-8: Iq7zFgUkSe-7TWvSQaErxg - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-9: PxbHKpPFTxCCAQ3K9PBkAg - test-windows11-64-24h2-asan/opt-mochitest-browser-media: FrNikchhTLa8EJatCOZw_Q - test-windows11-64-24h2-asan/opt-mochitest-browser-translations: XB9ci_0RRZaS4ysbn3LIrw - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-1: fwwUtjRqQseWJU-w5_xoIA - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-2: fHmsg_VjQsSYeBjIKweXGg - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-3: XnAGDg9QQUaub6fYaYSd-g - test-windows11-64-24h2-asan/opt-mochitest-chrome-gpu-1proc: QjmHSqwfQH-gyzadvXF-eg - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-1: M4M4pBVzTFaa-8vAntNq7Q - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-2: WjraNRMwSX6j4bGLS6X4wQ - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-3: DfbtL_IMQP2Kh4np_24QGw - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-4: IILazIKkTwilt2kMw8IHNA - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-5: A6_HLrgSRhqcr5l6VeXhgA - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-6: Y42BAFgETQqJ70WRgW8ReQ - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-7: OQTKbV5zReykX8SdwgBmfg - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-8: SDitm-mUTTuAH956jDgfEg - test-windows11-64-24h2-asan/opt-mochitest-media-1: JBXubPx7S2SWSOJ3_c2OmA - test-windows11-64-24h2-asan/opt-mochitest-media-2: cx4j1YvFSO2vi4uMkL5UvQ - test-windows11-64-24h2-asan/opt-mochitest-media-nogpu-1: MBZmvwZyRzaWa4CDlYspOQ - test-windows11-64-24h2-asan/opt-mochitest-media-nogpu-2: avtabCo0TzegcAn4wjcYPg - test-windows11-64-24h2-asan/opt-mochitest-plain-1: M9n8qfdIR82CVRN46z-EkA - test-windows11-64-24h2-asan/opt-mochitest-plain-10: PS5VpXHDRgak8qsQEbth1g - test-windows11-64-24h2-asan/opt-mochitest-plain-2: TFFJpr3xSKCfNPP9pqAT-g - test-windows11-64-24h2-asan/opt-mochitest-plain-3: CmDOVlqDQHmhF3brHGT6GA - test-windows11-64-24h2-asan/opt-mochitest-plain-4: IgPU3wwETnKFnc_YijRZfg - test-windows11-64-24h2-asan/opt-mochitest-plain-5: MnV7BG7hQ6iJS1M2OuuBeA - test-windows11-64-24h2-asan/opt-mochitest-plain-6: X_C9qq4hT_SyyuJNEV6Zxw - test-windows11-64-24h2-asan/opt-mochitest-plain-7: D4kN2qZDSuOAa2nWGHqz1w - test-windows11-64-24h2-asan/opt-mochitest-plain-8: XWwowDzXSGGbd4Ye2SxpBA - test-windows11-64-24h2-asan/opt-mochitest-plain-9: RtHiYgB8QeW4EXWcgIfPag - test-windows11-64-24h2-asan/opt-mochitest-plain-gpu: FYyIStnfRGi2ujltJ0Mxbg - test-windows11-64-24h2-asan/opt-mochitest-remote: RfNpwDtTSECVkDMAUPdLHA - test-windows11-64-24h2-asan/opt-mochitest-webgl1-core: XIFKogElQtuozY6LgpLh8g - test-windows11-64-24h2-asan/opt-mochitest-webgl1-ext: FKgNUcqTSBqwtdNzHifiWw - test-windows11-64-24h2-asan/opt-mochitest-webgl2-core: CTubus5hRpCeKP2sQ4KiEQ - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-1: M6kyAEQjROOhtELgbfxWtw - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-2: SYQZ2peFQmWhnRlU-mtW5Q - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-3: FZm0PgNLR02t-iVhZmfNTQ - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-4: DyILPdkERTqwJsNnJqMnPQ - test-windows11-64-24h2-asan/opt-reftest-1: BWgR2WhlSqiQY5cc_FZZ6w - test-windows11-64-24h2-asan/opt-reftest-2: H2mXGerFQ6eBKfmCV5GQNg - test-windows11-64-24h2-asan/opt-reftest-3: dMwCOkStTl2A038ObpIhew - test-windows11-64-24h2-asan/opt-reftest-swr-1: KWxU31QKQkiLlQBt1vobyQ - test-windows11-64-24h2-asan/opt-reftest-swr-2: H8iWAlFnRaqxNPLa43bOwg - test-windows11-64-24h2-asan/opt-reftest-swr-3: XCkav1CPQvGs7yqBCkibsA - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-1: B5H-00A-TVK5zRvLrNnJuw - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-2: AcT3F9ctRlyJgBobuBGd4Q - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-3: d_2RdYR-RHaAzF9ZhR4beQ - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-1: dlKNH4t7R5mvzeu2je1rsw - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-2: XEM2VAmtSracRE6fb85VkA - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-3: BqgoGwkyQ52wDwftR5-wYg - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-1: ANcf11LhRBS2-MUe6PGCKg - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-2: dnyUL98uR2qUZnhqvygVFw - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-3: X0O7TWVkSe6v81ZaAtZJYQ - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-1: VkPTBwFJRSyqT6Lb1RJYOA - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-2: Bqv-coBtRA6X2bibXtElbA - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-3: a2C9LxIhTB-eT5HfdGOV0A - test-windows11-64-24h2-asan/opt-telemetry-tests-client: XidnwOPUSEuiFTltSOwayw - test-windows11-64-24h2-mingwclang/debug-cppunittest-1proc: W0_q5sF6T-mmwfW9i3jc_A - test-windows11-64-24h2-mingwclang/debug-icecat-ui-functional: Nr6uyhp4QFm0D2n5OHq3MQ - test-windows11-64-24h2-mingwclang/debug-mochitest-a11y-1proc: MZBstEsRSE2Xx4UAcel6wg - test-windows11-64-24h2-mingwclang/debug-mochitest-chrome-gpu-1proc: CprNnrRoTQmBUpGr3tXrOw - test-windows11-64-24h2-mingwclang/debug-mochitest-plain-gpu: CqBseYlcTb-kGZjXQbZmVg - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl1-core: Kd560CjiTdC_ee9AApJoJQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl1-ext: YF8xoTf7R1qpQPs0ZHOFwQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-core: Fp-radosS5eGG-yjcdn-tw - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-1: QZRlc9c8Ty-Iqi-ONYSF3A - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-2: C1EXgX_zT5a3p5ejPj04XQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-3: BqI3abE2Spudd2SgiL_ZKA - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-4: QmPIdYABQQ6AzuOzJIQkMQ - test-windows11-64-24h2-mingwclang/debug-reftest-1: W7yvVgFGRhaT7Mj03D0wQQ - test-windows11-64-24h2-mingwclang/debug-reftest-2: cFsUh4h0Qr6azHA_x9sSSQ - test-windows11-64-24h2-mingwclang/debug-reftest-3: YQDwwlUbS5udt2-3TyZf0Q - test-windows11-64-24h2-mingwclang/debug-reftest-4: W1ZcDOlPSPy79c0aOo0-6w - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-1: Z9x622rmRJmIQdODDjRyOQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-2: TGL5ElnTSKmF5ikGFeOGVQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-3: DHo0QJz2Qi247Zxe0qJ-NA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-4: azGc2_-5TsWmwwx6sDX5oA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-1: J0ntONNuQH2wAbU8CU8EOQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-2: Rq1fRAJrQeyonpsC0KtuOw - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-3: dLWsMaTgTWm0gcZ95DwoOg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-4: RBxCopxlQWaVxayTY54r3Q - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-1: FXMWHc7cQN2BYtH3ebVOeg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-2: ZZNluyYXSCu6ALSGGsA99w - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-3: KNlBilhGSwu76R4-2av_ig - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-4: NgaE9BewSYO4p4oPx1G7gg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-1: co5yY8IyQlSSfJyxpZ5U6A - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-2: d4MHVj0LRwWLPCl_DRRZpg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-3: C7iMoJhvS2eMZoD7FvV4DA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-4: S430qccTTtCFjLPG40h7Hw - test-windows11-64-24h2-mingwclang/debug-telemetry-tests-client: I_jtdaTRS1ii5hNXPhnTNA - test-windows11-64-24h2-mingwclang/opt-cppunittest-1proc: AhHbmRkhTFG88iMl256RFg - test-windows11-64-24h2-mingwclang/opt-mochitest-chrome-gpu-1proc: MOJMIf04SjmieaIRT_nrdg - test-windows11-64-24h2-mingwclang/opt-mochitest-plain-gpu: dcu2oTajTIeUxX85OU8zdg - test-windows11-64-24h2-shippable/opt-cppunittest-1proc: Uvn-ZdGmTMyXai2W6PzBBw - test-windows11-64-24h2-shippable/opt-crashtest: PEHyrFabR-qNJjqx__FGAw - test-windows11-64-24h2-shippable/opt-crashtest-ioi: RXOuaePYQAWqO_BM_UC8KA - test-windows11-64-24h2-shippable/opt-icecat-ui-functional: WGx1RakFR3e6W33MFnCwZA - test-windows11-64-24h2-shippable/opt-gtest-1proc: fgij7lg8TkudSAjieJm4kg - test-windows11-64-24h2-shippable/opt-gtest-ioi: T68Ck-4LQ4SZaB225NXa2Q - test-windows11-64-24h2-shippable/opt-marionette: B0OJ43ieRw2UOCsSZl8tcA - test-windows11-64-24h2-shippable/opt-marionette-ioi: KcknrHk4SgWSTDyHwX-OOA - test-windows11-64-24h2-shippable/opt-marionette-unittest: cUg6KV7oRlKb1JMPFQMvEA - test-windows11-64-24h2-shippable/opt-mochitest-a11y-1proc: ISsrcfxjQG-g2M3OVNtv_w - test-windows11-64-24h2-shippable/opt-mochitest-browser-a11y: JiryUd2sQNiNbfdxOEYQqA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-1: Y1c6_g2iRga9nsXoSKHFsg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-10: VSx6t2hsR9iVisDVxgGmYA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-2: Cl1QN_92QkK5cz3Gnop_mw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-3: FMdGwJDFTYGm6ThJ8Fkk4w - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-4: DXVC3xHzScu-Ieu6XgCfFg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-5: ZafWC1LHRuK2G19JRk2SVA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-6: E6rNiKRUQ4SjhCu8QAwohw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-7: agIKfxbfSVWgFt0lwY4C3A - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-8: PoePZ6T2Td-hCRsp2CmpDg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-9: QKoNpYEfQRyQbbfV0b9lqA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-1: WiYZCNa3RKSIgKqoINhKRg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-2: TWl3Df_JSl-eBIl-_Aj-pg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-3: N53NlaihQSGv7IyukHtQ_A - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-4: ChCFJxp_SVmgHO-aScRKeA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-5: FxfZxGa1SCC-wX9x-jHFDA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-6: AyLaIZlNRFe0DpeXdJocUw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-7: Ynt8Lu3VSGesUWQ4BmBwOw - test-windows11-64-24h2-shippable/opt-mochitest-browser-media: akQvZ-9KR4-WlMAFKxFxvw - test-windows11-64-24h2-shippable/opt-mochitest-browser-translations: O3iWBMFORymckJnIFwgk9w - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-1: W9CxEvqsTi68DqWzikCnLA - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-2: Yf0Cq-A_RiSI8AtnE_hvtQ - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-3: M04q8RAZRVuJyHxlrgCMJA - test-windows11-64-24h2-shippable/opt-mochitest-chrome-gpu-1proc: fLli2sOrQharIM-WypL_4Q - test-windows11-64-24h2-shippable/opt-mochitest-chrome-ioi: fHt2vtdtRJ68r3r8xQoglg - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-1: Cq9i05u2RQeK0O8j9DCWpQ - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-2: OaXarZMERdm3cEJq6T4Z9A - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-3: duxHJGdZRyafxX7h-DxdnA - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-4: JFUQoJN1QxC7I9-neU3TIQ - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-5: ANAy6tAGR4icVV1VP3BLtw - test-windows11-64-24h2-shippable/opt-mochitest-media: YA-77GdPTmWl6ef_Qau-uw - test-windows11-64-24h2-shippable/opt-mochitest-media-msix: QW58_T9CR7C0S8awgN72ag - test-windows11-64-24h2-shippable/opt-mochitest-media-nogpu: H9h6GBvxRuWdyXpyku2NRQ - test-windows11-64-24h2-shippable/opt-mochitest-media-spi: Q5IxZvxUQvCOO9SYge5yJA - test-windows11-64-24h2-shippable/opt-mochitest-plain-1: biXP-v1XSom3kTF3OPK5WQ - test-windows11-64-24h2-shippable/opt-mochitest-plain-2: NRKAzTgqRsuwO6oFSSqtyw - test-windows11-64-24h2-shippable/opt-mochitest-plain-3: AtBRJm_ZQviMu2gm9VfokA - test-windows11-64-24h2-shippable/opt-mochitest-plain-4: GKv-KEiRR6yhLnzgeezD2w - test-windows11-64-24h2-shippable/opt-mochitest-plain-5: edSBHkXNRK2cluJaQHm1Bg - test-windows11-64-24h2-shippable/opt-mochitest-plain-gpu: Q44MzYBAQ3uJ72ERSJFTVQ - test-windows11-64-24h2-shippable/opt-mochitest-plain-ioi: NmHJrx2-RFiLPlC7DSKHlg - test-windows11-64-24h2-shippable/opt-mochitest-remote: KrrCJrUvS1uwYVkJU9JpCw - test-windows11-64-24h2-shippable/opt-mochitest-webgl1-core: Y5k_4FqlTh2j4sBDtIKQ7Q - test-windows11-64-24h2-shippable/opt-mochitest-webgl1-ext: eHXJJ1BXSxKNgL9djmgAcw - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-core: Fx3v3WdSQIO7axlSdAUQtA - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-1: Xm7TSLHTRbWOYfSha2GA7w - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-2: LGRKO0S7Sy-EZWaROBK8rg - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-3: QiryeivlTliH9jYRA36SXQ - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-4: DCXHp_HSTDG0cafgQg288g - test-windows11-64-24h2-shippable/opt-reftest-1: cFs8q8dPTyuax9KHTrHkww - test-windows11-64-24h2-shippable/opt-reftest-2: L7oJIDcVQ7OorgkDQUdVzg - test-windows11-64-24h2-shippable/opt-reftest-3: YW0q_10YRCmkUGf7Hwx08A - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-1: A-AwWiD-QLW0S4UwkWjiyA - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-2: f5mFpV2RQHy5E7L8EANbAA - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-3: SlOMX8BRQCuIShsBE2tfCg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-1: FbMM6k-SSW2PlEb-HTUMAw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-2: BIAhvMbMSNyavt0K77xkEg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-3: D00CrsCiRjyJ-rFYXFMpOg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-1: V0Qa2vBCQYqQOXkQtJHfgw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-2: P7Xvv-w8TQe9Z5kmKkQSUw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-3: ZW3INPNHSbSKbdELXGWDKg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-1: fVD6lx8YRIWBp4_MAUk05w - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-2: AuDVsvPcTGSObXOP6ag4Aw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-3: ZICx6e3eRrCRwiW10BBkQQ - test-windows11-64-24h2-shippable/opt-telemetry-tests-client: Dd4kdImeRHWwucovqMJ5vA - test-windows11-64-24h2-shippable/opt-web-platform-tests-1: PuuYpp4gSe291EGdSuWVCg - test-windows11-64-24h2-shippable/opt-web-platform-tests-10: JGaqxEHbQyKBCxg-GTNaUQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-2: EYJFPXsxRy2aB787-7KTtw - test-windows11-64-24h2-shippable/opt-web-platform-tests-3: R29Xk5CmSLGJn_kDPBctcg - test-windows11-64-24h2-shippable/opt-web-platform-tests-4: LBTkdQEcQhCeu1Ym_EMG4g - test-windows11-64-24h2-shippable/opt-web-platform-tests-5: I3EkiJEzS0aK_lF5BtefjA - test-windows11-64-24h2-shippable/opt-web-platform-tests-6: Jjwwfo4WR3C0k11YfDkA9Q - test-windows11-64-24h2-shippable/opt-web-platform-tests-7: P9KMl-hcRPKc7mTt5A-BXA - test-windows11-64-24h2-shippable/opt-web-platform-tests-8: XCE73pKeS5yWn39851VQMw - test-windows11-64-24h2-shippable/opt-web-platform-tests-9: bLImsPXqTOOoQxfmX-4iBg - test-windows11-64-24h2-shippable/opt-web-platform-tests-canvas-1: X3x6bZk3QR6KkLVuECh9_w - test-windows11-64-24h2-shippable/opt-web-platform-tests-canvas-2: Y9XC8--sSfmykkyOWmONeg - test-windows11-64-24h2-shippable/opt-web-platform-tests-crashtest: fzxDFdrbQ6mR6z6jN7h_dg - test-windows11-64-24h2-shippable/opt-web-platform-tests-ioi: JlW-FKlaTHq6LjrNVvjLeA - test-windows11-64-24h2-shippable/opt-web-platform-tests-pb: CIEtmmS5TfG9ET72YfHcJA - test-windows11-64-24h2-shippable/opt-web-platform-tests-pb-ioi: fM0-DcviRPq6J2D0pwmyOQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-print-reftest: Jz4dGvBtSWmP9y2eGuCtag - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-1: AuO-g2abS9mEzA7RPeD3Ow - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-2: R5WHcu-KSRK0VpYLyi7aGQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-3: eAXC1EmTSu6AkgFrSfNHZw - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-4: a8ogHKuMSb-HbTbWYAKG_g - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-1: f6eai1_qRjatWwuRJMMshQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-2: WqLqjPpzQdifm3QMiwDb5w - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-3: XbxOZKjpSDKSwI5y-qKQZA - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-4: cA9aplaKTaSAQjhmkkUWCg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-5: Mqbj12aTTvmc_XDdYK9sxg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-1: EVuOxLtbTYKJMs7bdA4nxg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-2: KtWYvcrcRVSa4iplE1lSOg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-3: QBs5M_35SDysjhFx_lqrhw - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-4: AwvB1Z34Qn66glozMT6sfA - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-5: SUSf0KgDSNCdK26Bcv3HYw - test-windows11-64-24h2-shippable/opt-web-platform-tests-webcodecs: f-minQuAQlK8448RMa3mJg - test-windows11-64-24h2-shippable/opt-xpcshell-1: APT6340MT2maY7TfeVkPcg - test-windows11-64-24h2-shippable/opt-xpcshell-2: fdDf8uKxRleHrfZt8bU_aQ - test-windows11-64-24h2-shippable/opt-xpcshell-3: ZVu8fZ_mRQ-Donrz-Iw_Hw - test-windows11-64-24h2-shippable/opt-xpcshell-4: SImNWEf6SKq2i6ZAAvGlBg - test-windows11-64-24h2-shippable/opt-xpcshell-ioi: Y91gyt4bRSuIIKmAKdMGJw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-1: ead2W4m1R_qfhiKCZfjquQ - test-windows11-64-24h2-shippable/opt-xpcshell-msix-2: VLFyzwmhTVms7oBydoYLIw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-3: DpKRXJ3NQwWTAnPBBDr7Iw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-4: V2QBb8qzQyCsnj80qYN2RQ - test-windows11-64-24h2/debug-cppunittest-1proc: XXi949BKR5yGWbFJei4Wig - test-windows11-64-24h2/debug-crashtest: FG9j8qbIStayS2FknSRaDA - test-windows11-64-24h2/debug-crashtest-ioi: LrJeJJhVRYSCg1mWY47xOQ - test-windows11-64-24h2/debug-crashtest-swr: dR-27GxTS9iC-I3WjPW0NQ - test-windows11-64-24h2/debug-icecat-ui-functional: XFYxiCZTSdynBb1utjTHJQ - test-windows11-64-24h2/debug-gtest-1proc: SO1NRRidQriDX1RGQ_fD4A - test-windows11-64-24h2/debug-gtest-ioi: UwfK29bgSHaXug3nf35WSA - test-windows11-64-24h2/debug-marionette: fN12CWncSh-vjjOoNFORdg - test-windows11-64-24h2/debug-marionette-ioi: YlJGmQMvTnGb39BMHNrYHw - test-windows11-64-24h2/debug-marionette-swr: BFRf33hbSEalF27V1V9CbQ - test-windows11-64-24h2/debug-marionette-unittest: NiuYuU-WTaSmvptpQK3rlA - test-windows11-64-24h2/debug-marionette-unittest-swr: eqw2M8lNS4G-ObErS8Jexg - test-windows11-64-24h2/debug-mochitest-a11y-1proc: eqciCUL7SRCxnISmKGlzYg - test-windows11-64-24h2/debug-mochitest-browser-a11y: BWmlDDVoTmme2yDNDIb9ow - test-windows11-64-24h2/debug-mochitest-browser-chrome-1: ApV7uQK1R82JoxWoNDzdDg - test-windows11-64-24h2/debug-mochitest-browser-chrome-10: HNWP5x-KT1S0J_IWdyk-bg - test-windows11-64-24h2/debug-mochitest-browser-chrome-11: Jlh4oRjRS_SUzDY727CDRg - test-windows11-64-24h2/debug-mochitest-browser-chrome-12: MpiWQPXrTBK0GRoq0CBwhQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-2: WZ0-1sujSjWEMwsta1ynNQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-3: KLaqQQePQbS8UBcae227rw - test-windows11-64-24h2/debug-mochitest-browser-chrome-4: Nadz7W6eTie_wA25ofI10Q - test-windows11-64-24h2/debug-mochitest-browser-chrome-5: I2fRHjzrTmGfsLQ5m3e_CQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-6: TlIwpvOrQD6ZN2TOqQQyXw - test-windows11-64-24h2/debug-mochitest-browser-chrome-7: VxRxeOaQRritxT_wQyD2-Q - test-windows11-64-24h2/debug-mochitest-browser-chrome-8: VNVytDi5TnWAY3P8Rj4Clw - test-windows11-64-24h2/debug-mochitest-browser-chrome-9: PcfA8R3tRd6pO4cJfMTXJg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-1: SR7lbGwqQ4atR9ND3QRrmQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-10: DGY6-U2pRNesykujbSbr_w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-11: YvXZFUWvTN6tlnx7ABHlQw - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-12: BNiE6qQcS-G-_qeDR5rmNQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-13: aqNed-rcTF2uRDWT59UpOA - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-14: LVSlThHyS8q2S7ChqAS0jQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-15: NWmEmrl1SjuzTnEoiDuFjg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-16: ZyGVf7YGQ3afnSZK-QtHpQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-2: UbvThbXZSVSBCWcnuwuCPg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-3: cqqdb9dlTJ2ddLU_SAaz5w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-4: ey0crdFkRQ2SuQGRIk7wuQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-5: HrQALJb1RWWPW_KIIfpY-A - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-6: WYLr1Zz_RBmiD_oo0nBZ4w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-7: BfqrLND5Rz-koLZOxNq7Eg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-8: R8boj3H8RrSvTOeYLc0ceQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-9: KHd5eHUqRQCtHxooDAQcnA - test-windows11-64-24h2/debug-mochitest-browser-media: U66Kx7OlRXKxEJxAstModg - test-windows11-64-24h2/debug-mochitest-browser-translations: P7j6CNrEShuBjewfv7w0Iw - test-windows11-64-24h2/debug-mochitest-chrome-1proc-1: fqPyZJq3SQqArEtJnL5knA - test-windows11-64-24h2/debug-mochitest-chrome-1proc-2: GKqyigWGRNWMTPkH0suRpQ - test-windows11-64-24h2/debug-mochitest-chrome-1proc-3: ebYKwIszSLaZGgs5o3Nx1A - test-windows11-64-24h2/debug-mochitest-chrome-gpu-1proc: VMVxY0z2SfO8XNgJHNys2Q - test-windows11-64-24h2/debug-mochitest-chrome-ioi: INR2UyQTR7KjSywM615_pg - test-windows11-64-24h2/debug-mochitest-devtools-chrome-1: GyYmmlRmTwOuFK3dgSPyHA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-2: JP2nh7KFS625Y7rJ01ZSLQ - test-windows11-64-24h2/debug-mochitest-devtools-chrome-3: CBJDQrbIQ_WZvcS-yyLixA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-4: Q-pDBlyaRQuDAbA-qH2oww - test-windows11-64-24h2/debug-mochitest-devtools-chrome-5: JZebg0W1QMGbfFrC8CAO4Q - test-windows11-64-24h2/debug-mochitest-devtools-chrome-6: dbP0jUL2RtGTHmV2yX9NBA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-7: Hp2Kg6eVTP6mgWRD3DoxKQ - test-windows11-64-24h2/debug-mochitest-devtools-chrome-8: LQkEK_4tSWWvz1OZlDPkyg - test-windows11-64-24h2/debug-mochitest-media-1: UgfTpgjiR9OPMPHN9h5KBg - test-windows11-64-24h2/debug-mochitest-media-2: HcnSinpARd-6Pta3dGUBuw - test-windows11-64-24h2/debug-mochitest-media-nogpu-1: Tt9o-BZdTQC5jqquY7NI9g - test-windows11-64-24h2/debug-mochitest-media-nogpu-2: GHy3MOODQuCpNfLQcbriSQ - test-windows11-64-24h2/debug-mochitest-media-spi-1: A40sjFXuRgu_izS2vE_0EQ - test-windows11-64-24h2/debug-mochitest-media-spi-2: CRktdtRKSzy4UNP7HV7dGg - test-windows11-64-24h2/debug-mochitest-plain-1: VAnyyNu-TYKIwyByR8H7Dw - test-windows11-64-24h2/debug-mochitest-plain-2: ZdOZobMSQrmklCBWfs1dEQ - test-windows11-64-24h2/debug-mochitest-plain-3: alX74lFqSUqJDSa3YlGUxA - test-windows11-64-24h2/debug-mochitest-plain-4: cFOJ4ZZ7RvGCMAqZxTPAYw - test-windows11-64-24h2/debug-mochitest-plain-5: Fgst50SVR2SQ4b5AOaSvxw - test-windows11-64-24h2/debug-mochitest-plain-6: RnB-2MvnQquhKYXyPk71Mg - test-windows11-64-24h2/debug-mochitest-plain-7: eBdx4Z9ASIGVzeC9xYXOgQ - test-windows11-64-24h2/debug-mochitest-plain-8: TAmlo9zBS2y3G3djRFC7-Q - test-windows11-64-24h2/debug-mochitest-plain-gpu: AFW7DC16TMK1w07SK7O0Rg - test-windows11-64-24h2/debug-mochitest-plain-ioi: Pj46Rn0mSUCuQ8iAKIEFHw - test-windows11-64-24h2/debug-mochitest-remote: aiXH5zsETWqEOi1VAgEszQ - test-windows11-64-24h2/debug-mochitest-webgl1-core: O7Sdqvb6Rb6VtjjcDoXhTQ - test-windows11-64-24h2/debug-mochitest-webgl1-ext: GZ2ImEk6TMCLvKZXe92-7Q - test-windows11-64-24h2/debug-mochitest-webgl2-core: ClUDrklLRryXB-6Y5A409w - test-windows11-64-24h2/debug-mochitest-webgl2-ext-1: O46-oMBlSOeE-AOa9NHSLA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-2: FQecePkLRnG3DQYMac-EuA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-3: LXGWryarSemmkeNB1o0QuA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-4: ZwNoN_1XTTCs03DXIXhMXQ - test-windows11-64-24h2/debug-reftest-1: LPrBIxvRRC27VRTcY2uJJw - test-windows11-64-24h2/debug-reftest-2: MkNUE_OKSle-t4ZV41_P9w - test-windows11-64-24h2/debug-reftest-3: NbRUMIYFSVeDCPiqaQooUQ - test-windows11-64-24h2/debug-reftest-4: YZhEhIF9QqSmfzkBoc9V9A - test-windows11-64-24h2/debug-reftest-wr-dc0-1: JKaWq-_XS6eyfPmS_B2unA - test-windows11-64-24h2/debug-reftest-wr-dc0-2: CmjaS81nSyyXlr9MjGz4hw - test-windows11-64-24h2/debug-reftest-wr-dc0-3: ShfPrPNuTi2wlpFbvdf2pQ - test-windows11-64-24h2/debug-reftest-wr-dc0-4: TJ4c15wDTzSC8zBJO0o_Dg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-1: HQ-0GDRZTQ-lm9tzsuvokg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-2: YOgK-d7rQHuIvLfbusQfrg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-3: UjH91RPVTtOppiwwB9oJHA - test-windows11-64-24h2/debug-reftest-wr-dc1-p-4: Vd1_bkxKQ5eB0TP_VHMeZQ - test-windows11-64-24h2/debug-reftest-wr-dc2-o-1: NI2I71EpQHSfTVu5LbEIgg - test-windows11-64-24h2/debug-reftest-wr-dc2-o-2: d70XD09uTlGFt6EY5j-vTw - test-windows11-64-24h2/debug-reftest-wr-dc2-o-3: WE7ktORiTnKeLTCsJ_U4tQ - test-windows11-64-24h2/debug-reftest-wr-dc2-o-4: L4Id6Cj_Tguo3aJRXRgaMg - test-windows11-64-24h2/debug-reftest-wr-dc3-c-1: I9uPB45yRo2Nx1USj5ybrw - test-windows11-64-24h2/debug-reftest-wr-dc3-c-2: OHFNwLphSceUAqPNehp4YA - test-windows11-64-24h2/debug-reftest-wr-dc3-c-3: eB6Mu2ReT62rnPoDuoImvw - test-windows11-64-24h2/debug-reftest-wr-dc3-c-4: ds1NFxf5TaCnNRIcDMnWeQ - test-windows11-64-24h2/debug-telemetry-tests-client: HFMwwR5STmOTKV3Bm81fVA - test-windows11-64-24h2/debug-web-platform-tests-1: N7AhPUneRWCJguVarcD2RA - test-windows11-64-24h2/debug-web-platform-tests-10: Ce-j8jjjRmGtvKKuQIF1Pg - test-windows11-64-24h2/debug-web-platform-tests-11: f3pGiclDSHabmDWAkdtG3A - test-windows11-64-24h2/debug-web-platform-tests-12: Ax7M5Ee6RIW07f-kdpGUdQ - test-windows11-64-24h2/debug-web-platform-tests-13: Z_MdhdZzSkegfmOnJ3mQLg - test-windows11-64-24h2/debug-web-platform-tests-14: DLMDuZ5NQleHvJVTol6tEg - test-windows11-64-24h2/debug-web-platform-tests-15: MIzDi-nqSWKgk59uFB-uOQ - test-windows11-64-24h2/debug-web-platform-tests-16: T1vt1uxmSoiBqpd76q4-AA - test-windows11-64-24h2/debug-web-platform-tests-2: C30sWAKBRO2cNz_TQOo2cQ - test-windows11-64-24h2/debug-web-platform-tests-3: esCOdvNqQ_WEiYx_PpPSKw - test-windows11-64-24h2/debug-web-platform-tests-4: JDS1lT4YRp62AMr8mdGB6A - test-windows11-64-24h2/debug-web-platform-tests-5: BGtKdmD-ShG2NiDofvZmmQ - test-windows11-64-24h2/debug-web-platform-tests-6: Ucj8AcwWQQ-ebT8KHW0EYw - test-windows11-64-24h2/debug-web-platform-tests-7: A7GX4lbATzGrPYD9IgpB9w - test-windows11-64-24h2/debug-web-platform-tests-8: TnYl06HQS4-QjNwkSUHtbA - test-windows11-64-24h2/debug-web-platform-tests-9: HproeM09QJOZwFA79k-ieA - test-windows11-64-24h2/debug-web-platform-tests-canvas-1: HTVUJ9MAS8q3TF9objeuyA - test-windows11-64-24h2/debug-web-platform-tests-canvas-2: L6okNkY7TJCpaa4gDP54qw - test-windows11-64-24h2/debug-web-platform-tests-crashtest: ORXqIqFDSTafcHQovqwlWA - test-windows11-64-24h2/debug-web-platform-tests-crashtest-swr: Qm4oFO0NRv2gZjMZcNpCcA - test-windows11-64-24h2/debug-web-platform-tests-ioi: Fg5UfFXvTJ6E-gzG8cAAmw - test-windows11-64-24h2/debug-web-platform-tests-pb: BNCRsFQXRomMicCfHzpTmw - test-windows11-64-24h2/debug-web-platform-tests-pb-ioi: cC53PPFKSYmyN6O74zUZLw - test-windows11-64-24h2/debug-web-platform-tests-print-reftest: ev9ouES4Q1OX3wN8iKAohQ - test-windows11-64-24h2/debug-web-platform-tests-print-reftest-swr: ZhTYF_pOQpe8xASRGWjRiA - test-windows11-64-24h2/debug-web-platform-tests-reftest-1: TEvSj5rDSN-4LOGKtDX1vw - test-windows11-64-24h2/debug-web-platform-tests-reftest-2: Yz6py4zsRR-HyXijfk4mHg - test-windows11-64-24h2/debug-web-platform-tests-reftest-3: SZX9y8rWTWKunkoM8xrE4Q - test-windows11-64-24h2/debug-web-platform-tests-reftest-4: KtT8ONuTRL6JEHXocFjRZw - test-windows11-64-24h2/debug-web-platform-tests-reftest-5: ZjWBeWNLQ9isFZYXm5xOYA - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-1: Rx2FQV2iSE-BKm-MdbXekg - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-2: ek__pvFbRxC4NUncWRyV1Q - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-3: YGy8WtajRuGVUR_CI3TqEw - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-4: aUUdjJ8fQtK-bbTFQ0LZVw - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-5: VU_SPNWWTwuK_SnCEG9ofg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-1: Q-q6atobR_aUDIPCZnye6w - test-windows11-64-24h2/debug-web-platform-tests-wdspec-2: IPN5RNQvRD-2a1F8R7QpTw - test-windows11-64-24h2/debug-web-platform-tests-wdspec-3: SBojeRjCTga2tq6lvwqqpw - test-windows11-64-24h2/debug-web-platform-tests-wdspec-4: DjARrBbcQQSIPPelRXm9sg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-5: YAigvfCNTzaF2-P7cEIzZQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-6: fpKaaK0QTe6UZeDd3EL6Xg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-1: An87Ky2cRa2yW14BjUAZdg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-2: Gk9gbFgwSZeceR_Q5UWAsA - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-3: Y3mkdz3xQLqMIocCrSjQxQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-4: MBZEMtLATyS-SKJAbypXuQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-5: I8XCz0XhQ9ms9hz29EJ9kg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-6: JMfrP0tiRT26ODoBsfPO_w - test-windows11-64-24h2/debug-web-platform-tests-webcodecs: a-TKE4uZScq_pJXYuLp7Dw - test-windows11-64-24h2/debug-xpcshell-1: XI0PfTDXQtOhQAoxBw3PhQ - test-windows11-64-24h2/debug-xpcshell-2: dph0GbrjQEu1cGFci4kXjg - test-windows11-64-24h2/debug-xpcshell-3: BZXQ5DfkQfm06av_IAtVPg - test-windows11-64-24h2/debug-xpcshell-4: V7Dg-R7mSh2Ij9-YOMrARg - test-windows11-64-24h2/debug-xpcshell-ioi: SWwMrOQgTvKv3benCdyB0g - test-windows11-64-24h2/debug-xpcshell-msix-1: Iy3Kud59RAy7GwlggyT4Sg - test-windows11-64-24h2/debug-xpcshell-msix-2: Q-ESz-AHSiWOTJyRLEozRg - test-windows11-64-24h2/debug-xpcshell-msix-3: SJAo9oMJTUOYFAwApBNpYg - test-windows11-64-24h2/debug-xpcshell-msix-4: CcfsVHqJTP-lbTrCedkbSw - toolchain-aboutwelcome-node-modules: Cv8OiVoaTryK9kZ6J4a4sg - toolchain-android-aarch64-compiler-rt-19: f5y75iVDTbmJVbYivOMAcA - toolchain-android-aarch64-compiler-rt-20: HGsdL6VQTsyrfIAUVDAXuw - toolchain-android-aarch64-libunwind-19: WvgZaHl4SWKZx-Jo2XRQRg - toolchain-android-aarch64-libunwind-20: et9109lPQIayuABq74pPAg - toolchain-android-arm-compiler-rt-19: MLapYE4VS-CgTZngebpxrg - toolchain-android-arm-compiler-rt-20: AerOtzuZSxynhwhYOgj9SQ - toolchain-android-arm-libunwind-19: OukWrr_uQoK6LCFDDluC1A - toolchain-android-arm-libunwind-20: cCrAQusqT_mFaYaPWG22pQ - toolchain-android-x64-compiler-rt-19: M_G6OrrISA20lJIIC6-D7A - toolchain-android-x64-compiler-rt-20: KDy6fNC4QH6brpPlRTlXuw - toolchain-android-x64-libunwind-19: MyUTrkqRQ8KwfqfyL3-gKQ - toolchain-android-x64-libunwind-20: KPIwDkHDTE-S0lo1aVmVSQ - toolchain-android-x86-compiler-rt-19: K6O_f94ZTpmrWO4jiEAHbw - toolchain-android-x86-compiler-rt-20: QmarLiwESxy5SbEvTdx9pg - toolchain-android-x86-libunwind-19: XqU_RftjSa-D3tZCHAmOkQ - toolchain-android-x86-libunwind-20: OGF4JfQfSDW2j33EY9xUXA - toolchain-asrouter-node-modules: Hn3KjXlyRLyV2cs1kTFpRA - toolchain-browsertime: C0UGNz6DQ0aeuYboEKjehA - toolchain-clang-dist-toolchain: e5saFzP4RJqzvqVx540iPg - toolchain-eslint-plugin-mozilla: XtjwE50jRpKOUyLuKLiaWA - toolchain-linux-python-dbusmock: b9wxef4zScq1clD51HqhHw - toolchain-linux32-llvm-symbolizer-19: GBg0-kgqR2iSTr5Ea-RsVQ - toolchain-linux32-toolchain-sysroot: JsDi0JmrRYe3HheYK7gYmA - toolchain-linux64-1804-dbus-python: OzAN2nmAQXSqVyr9g2D8jA - toolchain-linux64-2204-dbus-python: Ule2MRopSWivXhVNxc_Dsg - toolchain-linux64-2404-dbus-python: XuQMuI0tS3uHCNQUtLAQJg - toolchain-linux64-7zz: BZ2Ih7lET8aCvZ__YOQATQ - toolchain-linux64-aarch64-cbindgen: Hxxzen9nTnaRoLVKNfsdEw - toolchain-linux64-aarch64-clang-19: BEdas_P7TxiqSv9TALytMg - toolchain-linux64-aarch64-clang-19-raw: WPEefJ-GQ4SsxnJK8yr_MQ - toolchain-linux64-aarch64-clang-20: ZS1aF5OSR5y2MZtiO-sJYQ - toolchain-linux64-aarch64-clang-20-raw: IedPWrHJTqa8eXGbWzFvVQ - toolchain-linux64-aarch64-compiler-rt-19: R0bXLXFsQNWVfKG3kGsJcQ - toolchain-linux64-aarch64-compiler-rt-20: NL9NY0jXRKmlTM-6yrjNHg - toolchain-linux64-aarch64-libxml2: cQFHCvxSTHO0sOomw3Tlvg - toolchain-linux64-aarch64-node-22: DP3KwqlCTRe_AIf3JXv4lA - toolchain-linux64-aarch64-pkgconf: AR8-5Ky4SjiviUPxAEdFgw - toolchain-linux64-aarch64-python-3.11: VouNT6ufTNO2AliOBs-3YA - toolchain-linux64-aarch64-python-3.8: SxqKgEH_TrCBZaTmKAXygQ - toolchain-linux64-aarch64-toolchain-sysroot: eXBOGDyvRnewN08SicQcoA - toolchain-linux64-afl-instrumentation-4.0: flqPYV0fRIWKJTYsP6kChw - toolchain-linux64-android-avd-arm64-repack: ZFBnQrbRSQCHUQ0cSDUlwg - toolchain-linux64-android-avd-x86_64-repack: Dx0qUF8xTeidwZEVThcb2A - toolchain-linux64-android-gradle-dependencies: DFhjdzGsS1ajPw-ChS_M8Q - toolchain-linux64-android-ndk-linux-repack: XJsow5fAS2uOF0ai7EAExA - toolchain-linux64-android-sdk-linux-repack: YSqz5DVhQ-Odf9MKIgruWw - toolchain-linux64-binutils: AE13zHZ5Q5Cm2oVYc70kfg - toolchain-linux64-binutils-2.31.1: FL4qpQQ2TUyu5TxNJos8WQ - toolchain-linux64-breakpad-injector: DXHIcMoyRACx-vydOEY97w - toolchain-linux64-cabextract: CLtImnx0Q1qp_Ei4VNl7Dw - toolchain-linux64-cargo-vet: NU_wahE6TK-tPaNAzh5djg - toolchain-linux64-cbindgen: KFNkFQAjR1ekTqLqC4gmAw - toolchain-linux64-cbindgen-base: AJ3psz0oS0abVz_GTGhCiQ - toolchain-linux64-cctools-port: VFZ_ZETYSRmc295nb1bWLg - toolchain-linux64-clang-14: U3kOXJ7JQNGRsXG76Sflww - toolchain-linux64-clang-14-stage1: HClh21wvTXm7KNgVQ6qpGg - toolchain-linux64-clang-19: bhZ3JCyzTnK63PkS4U6Mtw - toolchain-linux64-clang-19-mingw-x64: fmhgX-CzQaC_9VnxLsNqTw - toolchain-linux64-clang-19-mingw-x86: F_l5xZjST4GhIRjoL_7fwQ - toolchain-linux64-clang-19-profile: OwR5xakhS-2BMhmGPHUb7w - toolchain-linux64-clang-19-raw: BAwoYaawR_y7k1kZsAjMMg - toolchain-linux64-clang-19-stage1: RTdP4bLQRkey0Ak_SlcQpg - toolchain-linux64-clang-20: GwRd4ZCWS9-Lk6Tb3HM_WA - toolchain-linux64-clang-20-profile: K6tiyNMSSYqo2CO7E0fUIQ - toolchain-linux64-clang-20-raw: cN_BZxSeS2CjyWkml1o97Q - toolchain-linux64-clang-20-stage1: V0V6uWGxSsuhvuiaQ1esFg - toolchain-linux64-clang-8.0: FShqmxsdQfapSC46JPslbQ - toolchain-linux64-clang-8.0-raw: NDockJdIR2q0EHqEUu05xA - toolchain-linux64-clang-tidy: eBWKd1gjTeqdxm3vZ5xSbA - toolchain-linux64-dump_syms: XBDimUnyQYG9EjVnZeMuvA - toolchain-linux64-fix-stacks: BmNwpRY_S2m2-4Dbm8WVTg - toolchain-linux64-gcc-11: GhptQbYXSB-XrZmx48jPJg - toolchain-linux64-gcc-8: T-dXO0-xT4SWA2NrzQu6jQ - toolchain-linux64-gcc-9: ENHlRNULQQKd_czDeAs8eA - toolchain-linux64-gcc-sixgill: VXChpelgQ0yLbdp0LhkpRA - toolchain-linux64-geckodriver: NgueRfXzTQiov3QgeM2X6g - toolchain-linux64-gn: dP1LE5yCQKSvDbin9rOZtQ - toolchain-linux64-hfsplus: EugTx5sWQEKW2wz0E9E-ew - toolchain-linux64-jdk-repack: ceXdzuLGQMmuCbm1nkpdGQ - toolchain-linux64-libdmg: WLvW1hVHTXKvGZO3rpIDsQ - toolchain-linux64-libxml2: EDo3svkjTHygWONM9Xau4Q - toolchain-linux64-llvm-symbolizer-19: RPhZmYSxTbSEMN8kYs1qpw - toolchain-linux64-makecab: IqhkT1JqRVmbvQEX9o3w-w - toolchain-linux64-mar-tools: CBO3Jx8MQFCk9VIRY5Boww - toolchain-linux64-mingw-fxc2-x86: ErVfv9C3RbONrmSDUB53lw - toolchain-linux64-mingw32-nsis: bw8jzAtLSpKcVL_LAVAFkA - toolchain-linux64-minidump-stackwalk: daZwKH1bQwONpHuczgTMJg - toolchain-linux64-mkbom: K5OJzM1KQV2jEj41vJC_Ew - toolchain-linux64-msix-packaging: TUWVet-3TzCnV88QmAp13Q - toolchain-linux64-nasm: QNMTA_a7RQmt3TG2slxMhw - toolchain-linux64-nasm-2.14.02: GGM18_oUTBG-CrIVNhf6yw - toolchain-linux64-node-12: QKCz54L7R9yIAYcXKYs3Xw - toolchain-linux64-node-22: FkGeKjmsTKa3g-aahnPByw - toolchain-linux64-pkgconf: b555-teRSx2LPcPpjdWaNQ - toolchain-linux64-python-3.11: R2rug4s-Tw-0bf2w5wL-8w - toolchain-linux64-python-3.8: RIIoknTgQzO7BaiTRJpohw - toolchain-linux64-rust-1.81-dev: bB_LKTrtSCW5QJI5PNTWEw - toolchain-linux64-rust-1.82: SoW3v-ZHSNqlimMGK_XxLQ - toolchain-linux64-rust-1.83: LZ8roHfkR7y5ODuiWlOsAQ - toolchain-linux64-rust-1.86: NHqHhruISoW_x1f4q-AiTg - toolchain-linux64-rust-cross-1.86: MMMFUmSdSHSCBJcsDBUobQ - toolchain-linux64-rust-macos-1.83: QS5dVULcSUGRi0gZos8I1Q - toolchain-linux64-rust-macos-1.86: PYaijO2_QwycCAewx-cC5g - toolchain-linux64-rust-size: cTWUiNnlSYO_jyfS0CHRxg - toolchain-linux64-rust-static-1.86: GYcmzxhYQ06rV_o75HwCPw - toolchain-linux64-rust-windows-1.83: UFoatDejSmueK0IaayadPg - toolchain-linux64-rust-windows-1.86: IB23a_chS7WG9ChVXJWKrg - toolchain-linux64-sccache: aGOg07hGRF216JnJ7H0zLw - toolchain-linux64-toolchain-sysroot: LRcVtG8ZSnW94FpLJU62Mg - toolchain-linux64-toolchain-sysroot-gcc10: WbV0YRW1TZKUcIQ7AAIEPg - toolchain-linux64-upx: MvT0WEpMSIyE5K5qGVRNxQ - toolchain-linux64-uv: IF7p1tiATcyf2If6OUymRA - toolchain-linux64-winchecksec: NpiOWoShTrSKPwrNgMss0Q - toolchain-linux64-wine: GZQVnljMRMWs_zt0cyz_Jg - toolchain-linux64-x64-compiler-rt-19: dviPrWreS3Kg4qla5FTBKA - toolchain-linux64-x64-compiler-rt-20: V6TqRH8LT3S2HoDkZ0ZVwg - toolchain-linux64-x86-compiler-rt-19: Y_oe4-7eQHWrZDuxVRNHlA - toolchain-linux64-x86-compiler-rt-20: dbA1EgTWS1eCUm6JWt0Wgw - toolchain-linux64-xar: dzrzMlhSSU2rLtDORB6WZg - toolchain-linux64-zucchini-bin: aGHDNfz_SYGScu5tp6z7Gw - toolchain-macosx64-aarch64-cargo-vet: CkNWCsHFSsG9UqftOvZGoA - toolchain-macosx64-aarch64-cbindgen: bWSqEiGKQFq5FMZyCbghhA - toolchain-macosx64-aarch64-clang-19: PgIv4w1PTZC43DG6GiDW7Q - toolchain-macosx64-aarch64-clang-19-profile: H2Zw95S9SKS3hUJ7xYk-Lw - toolchain-macosx64-aarch64-clang-19-raw: C_-v0l6YRgyDTcJwJtZlcw - toolchain-macosx64-aarch64-clang-19-stage2: YHNeOIlsT_-nFHL40tBmOQ - toolchain-macosx64-aarch64-clang-20: TVD75ZGcSm6OP877YMB7Ew - toolchain-macosx64-aarch64-clang-20-profile: EgnzA4INRNejEhtIBqIs-w - toolchain-macosx64-aarch64-clang-20-raw: fqo4yX0NSNWoqVoRhGy7Dw - toolchain-macosx64-aarch64-clang-20-stage2: NeblKSKIS7WKlI6Ct4R7yA - toolchain-macosx64-aarch64-clang-tidy: VCRe82vUSfOQhH5vjFhxcw - toolchain-macosx64-aarch64-compiler-rt-19: drsC-OAUTtCxeh0QqSxjWg - toolchain-macosx64-aarch64-compiler-rt-20: BAjsGX9yTAqNTlV59EQj4A - toolchain-macosx64-aarch64-dump_syms: deaJm9FJSHu03HhPuUYEsg - toolchain-macosx64-aarch64-fix-stacks: EENXfDy5T2aIuT6fsoCKPQ - toolchain-macosx64-aarch64-llvm-symbolizer-19: Kj6vlmzwRSW4voyufuuzkw - toolchain-macosx64-aarch64-minidump-stackwalk: FtJVyCyAS6qUkilk5ZyLwQ - toolchain-macosx64-aarch64-nasm: Ade4n4kOTc-IXi2Gwq04iw - toolchain-macosx64-aarch64-node-22: dXl-7tSKRr2cPg941azyQQ - toolchain-macosx64-aarch64-pkgconf: EQL1yDBqSSu5KAUYXtVcVA - toolchain-macosx64-aarch64-sccache: UkUkrymEQVGhW4kYQkdkxg - toolchain-macosx64-aarch64-uv: ZYaqQj0WS2mcIFww_xATzw - toolchain-macosx64-cargo-vet: LR0rDgMaQoSsyyB5KwgopQ - toolchain-macosx64-cbindgen: eFuYfqtzS8y9_i0BX-ABGA - toolchain-macosx64-clang-14-raw: TwTYzELmS56cFgLGMFbNpA - toolchain-macosx64-clang-19: TH-mq6NdRCeBpPBy0DoDEw - toolchain-macosx64-clang-19-profile: ambNS0S1QMiBY5aAUgIBAw - toolchain-macosx64-clang-19-raw: Z66viM8xQaK1XV_uqc_41Q - toolchain-macosx64-clang-19-stage2: eJD_KhM9Ssy9LnnJTp34mg - toolchain-macosx64-clang-20: BVTDwH0zTIKs-UWbhiDUyQ - toolchain-macosx64-clang-20-profile: Qwyet8weQVe-vNfhpVlcwA - toolchain-macosx64-clang-20-raw: R0yptG_ZTy23ISP7X95a0A - toolchain-macosx64-clang-20-stage2: CaJ6zLH5SlWFl2kwVOdZ0w - toolchain-macosx64-clang-tidy: byWhdastSd-wKGGK2liL2Q - toolchain-macosx64-dump_syms: SVzOy9eDRbSGfAcS2A3PxQ - toolchain-macosx64-fix-stacks: cMJ0_LfxSSexeIpnKCFv-w - toolchain-macosx64-geckodriver: H3JwpndAQmSh2_zExBwBfQ - toolchain-macosx64-gn: H_jGh321QhWFOPVkkZOEpw - toolchain-macosx64-llvm-symbolizer-19: PCbxqGUxT5q-kFp4HZFyaw - toolchain-macosx64-minidump-stackwalk: LZiPoe2mQCyaVzhG5ICSMA - toolchain-macosx64-nasm: LvPMEhYaTeiQRTYDR0pYJQ - toolchain-macosx64-node-22: b8fK_EjOT9-VrvgI2iIWFA - toolchain-macosx64-pkgconf: DjtgtdH7R6iit_QTCKwBRQ - toolchain-macosx64-python-3.11: fPWH26xtSten4kAaJ56L7g - toolchain-macosx64-python-3.8: fOheRbtyS0CXza_j8FVJjQ - toolchain-macosx64-rust-1.86: KeNYfozWSRGWerFu6Rr5Qg - toolchain-macosx64-sccache: DG86BgLOQp23QHOaBzX7-A - toolchain-macosx64-sdk-13.3: LBr3hugCROK-rhgsREfmFw - toolchain-macosx64-sdk-15.4: GJlf3AJATzOe5dFaSd9BiA - toolchain-macosx64-sdk-15.5: RLhk28ulTxmCFblsX4PmoA - toolchain-macosx64-uv: PcW9z8C4RdmdTG7SNePaYA - toolchain-macosx64-x64-compiler-rt-19: DJSeSNOTRQOgRLC5I5mGcg - toolchain-macosx64-x64-compiler-rt-20: dzvSjt60R2-wCCGIuGdzEg - toolchain-macosx64-xz: RwQudxINS6SqkaKmTnAEFw - toolchain-mingw32-rust-1.86: aEmne3D0SXi6HlZsKY4ejg - toolchain-newtab-node-modules: NIgJw15VRvKxx7rpofeH8g - toolchain-node-modules: K-KGvXeqTv-q-Ug2_9XJYg - toolchain-nsis: GBOrAZWyTJaAt2HCgVro_g - toolchain-rustc-dist-toolchain: E4oOfnbDSjyA9ErbJrRwQg - toolchain-stylelint-plugin-mozilla: arDTRsRfRses7FJjp4UPCQ - toolchain-sysroot-aarch64-linux-gnu: UfK82MaNSIO7pSqrmWB68Q - toolchain-sysroot-i686-linux-gnu: acymADRKRn6EXo7j2ufszw - toolchain-sysroot-wasm32-wasi-clang-19: P0hlFTLnT3qa5z50KjYGkw - toolchain-sysroot-wasm32-wasi-clang-20: CtCfdamrQK6WfO-VoPYRiA - toolchain-sysroot-wasm32-wasi-clang-8.0: WQ7_ZAH2SluOOnwdQpsO5w - toolchain-sysroot-x86_64-linux-gnu: Xf_AdHqjSd-OXsONpuOFYA - toolchain-sysroot-x86_64-linux-gnu-x11: KcQXF5ohRLKBYZ9gLBxXAg - toolchain-talos-pdfs: JT0pqE_DSUmx2cuODcf7kQ - toolchain-wasm32-wasi-compiler-rt-19: CJx_wybsQ2Om55xBRsHKFw - toolchain-wasm32-wasi-compiler-rt-20: ZLqAlxYhSD2jtXYEI5x81g - toolchain-wasm32-wasi-compiler-rt-8.0: aVWuONUWSPqH8nLtn8GIXA - toolchain-win32-compiler-rt-19: G8JbUuNKQ5GP5GS4JbkpsQ - toolchain-win32-compiler-rt-20: aJ8JHG1vSb66ogBh4XLAJw - toolchain-win32-fix-stacks: FxVHWnWZQZ6ywSdkUYvPDw - toolchain-win32-minidump-stackwalk: aTLCNnL-RVW3asaJKfmkyQ - toolchain-win32-node-22: HZBKlq8mSICEjsFrRliqcA - toolchain-win64-aarch64-cbindgen: FWv9BS_aREC_dbu_xJZOpQ - toolchain-win64-aarch64-clang-19: I1WakFQwSfqvinb_vF7wOg - toolchain-win64-aarch64-clang-19-raw: J_ZJ9lmzQuO8gKGPtJ0pxA - toolchain-win64-aarch64-clang-20: ddP6lKSNQJOeC3Ur8mRKXg - toolchain-win64-aarch64-clang-20-raw: LaG3m2kSRHCRjE2iV1bEsQ - toolchain-win64-aarch64-clang-tidy: YxKDYAqHT6um-twKYVGvcw - toolchain-win64-aarch64-compiler-rt-19: QBB2qstmSyuVqMgifIB_xg - toolchain-win64-aarch64-compiler-rt-20: AIl5Gf_nTLyTmCSq5qoaQw - toolchain-win64-aarch64-dxc: L5I_N1zMT82EzDobmzJjNQ - toolchain-win64-aarch64-libxml2: DXFVwymyTcyiPv2T4CfR6w - toolchain-win64-aarch64-mozmake: FuozNVm_S2yz8nL9zKTqLQ - toolchain-win64-aarch64-uv: N7pAlGSCQ-qeERWPtWhhxA - toolchain-win64-aarch64-vs2022: cNAqxrA0SLiljBsJY58p5Q - toolchain-win64-cargo-vet: VK7wZIy7T8eJWWMicEvgng - toolchain-win64-cbindgen: fSLkghzWSk2hyoP2meJglQ - toolchain-win64-clang-19: ZVyF12YmRz29tTrbEtKhWg - toolchain-win64-clang-19-profile: VimfqwnqTt-qKQGEtRYu_Q - toolchain-win64-clang-19-raw: Attwa1MzS4yBd_PAal1Iew - toolchain-win64-clang-19-stage2: WamZKSpaSf-Sk4xUf0qRbg - toolchain-win64-clang-20: UmeD8brcTeeZxpbVPwST6g - toolchain-win64-clang-20-profile: T_vX2e_PTcCUCKZIzHgNxQ - toolchain-win64-clang-20-raw: MKkxtQsJRvuKp6l1uJ9Szw - toolchain-win64-clang-20-stage2: Nc7dmlLkRm-VXqw-ivSU-Q - toolchain-win64-clang-tidy: Ap4NLUqRQwum0-JJ6yGV6A - toolchain-win64-cmake: HdVnY6FYTRufZ1yU9kvlsg - toolchain-win64-compiler-rt-19: Diypigw1QWiM1BqWtiNYdA - toolchain-win64-compiler-rt-20: BifjFRoOQK-RPr5CoXU74g - toolchain-win64-dump_syms: aI0dSSJORWC9rntH7AqUAw - toolchain-win64-dxc: FGQpxFvoSoOoKDYY88JB-A - toolchain-win64-fix-stacks: EfkanMCiR-mJoyjLBr8ZBA - toolchain-win64-geckodriver: AcEoI6TSQxqBqQ6A1KZd7g - toolchain-win64-gn: BzK2E_WIQmOMF72aEUl23A - toolchain-win64-grcov: HbUNkW3xQnelxikYoKz0cQ - toolchain-win64-libxml2: EuzTDzUBRxm4XRCMZv4ffA - toolchain-win64-llvm-symbolizer-19: Tg4PpcoqQ_mSJZbVcC6TfQ - toolchain-win64-minidump-stackwalk: UkiUZQDuRT-MQkIhYXktMQ - toolchain-win64-mozmake: B1tRmvriTdyo-V7tWhbDhg - toolchain-win64-nasm: ORTXxXV3RQOef4PkOnmKjg - toolchain-win64-node-22: bd_dHR19STWdK0ICZ0QhOw - toolchain-win64-pkgconf: IEbbWN0jRtqEW8K9qKlXtg - toolchain-win64-python-3.11: LyKFnI5rQcmYVScSm5brww - toolchain-win64-python-3.8: Eoy9gS_9Q5yyIqTxWrMyXw - toolchain-win64-rust-1.83: fwJsreDAQZOBGvjfBjBG0g - toolchain-win64-rust-1.86: L-JB51K4T26sa7IlCodl6Q - toolchain-win64-rust-size: HHN4UoEaRE-baEQKne12uw - toolchain-win64-sccache: FOE1EeNISLmpXrbrAzHrsA - toolchain-win64-uv: MJbXDvNoR4C2OPLs6kc0WQ - toolchain-win64-vs2022: S2Mdsj_eS7az9PgN1mAxjA - toolchain-win64-vs2022-car: P2oH7lxQQAi2s7mI1CU_kA - toolchain-win64-winchecksec: MWdkLe8CSa-Xs8w0_RBOWA - toolchain-windows-rs: du4qySbiT-O1muylCuUNkw - toolchain-wrench-deps: J57TpIuIQ6mnpD33rFaMtQ - upload-generated-sources-dummy-icecat-macosx64-shippable: VmNIfn-kTLqMlaFhIBIypA - upload-generated-sources-linux-shippable/opt: S4vvVyQHTDmr2tL4T2MrXw - upload-generated-sources-linux64-aarch64-shippable/opt: IqinBKqoQIqqx4QTCyzt1w - upload-generated-sources-linux64-shippable/opt: R6I3Nh6ORSCP-11RrjS_eg - upload-generated-sources-macosx64-aarch64-shippable/opt: H-6MExunTkqdWO-ehEJ3ng - upload-generated-sources-macosx64-x64-shippable/opt: IIH3ZklzR5icQrSN7YzgBQ - upload-generated-sources-win32-shippable/opt: P5s3YwlyRymL_GX5B2j4OA - upload-generated-sources-win64-aarch64-shippable/opt: aLCBduKbTnO62dfB3Ha9_g - upload-generated-sources-win64-shippable/opt: DSv0Z3tWRgewOdiAYzOGpQ - upload-symbols-dummy-icecat-macosx64-shippable: HJovZ5baTGaX55EEO2dvgg - valgrind-linux64-valgrind-qr/opt-swr: YUqbSn7gTDKItjwzeTnBXg + build-linux-asan-fuzzing/opt: SeuwhSbtTVCrQgzAUWAxeA + build-linux-fuzzing/debug: NexysKhtQQCrWNJ7NPYnjQ + build-linux-shippable/opt: D5LaQhbqQcCVikQJvop5sg + build-linux-shippable/opt-upload-symbols: GEs73p7NQhuYlQG9QroW1g + build-linux/debug: KCU21ohUTtO6TOwymmcI0Q + build-linux/debug-upload-symbols: QGF_WOvNTuqMaXPen3shpg + build-linux64-asan-fuzzing-nyx/opt: EWUgakWjTZulhNrXJlO03A + build-linux64-asan-fuzzing/noopt: COuaEbXOTRyy15UGVLt19Q + build-linux64-asan-fuzzing/opt: PHPoDShZRvyIg1TmWFidDw + build-linux64-asan/debug: U0r--LG6SSqPZUXUallxwA + build-linux64-asan/opt: CXWqLgyCREqbEdPAHQibeg + build-linux64-base-toolchains-clang/debug: L4Ksyu8PRsakrzhLyuKLow + build-linux64-base-toolchains/debug: ZGjr_rWfQ8KGujnGH94lpg + build-linux64-fuzzing-noopt/debug: fbp_qSoYRya4nSCPqgZo8w + build-linux64-fuzzing/debug: fIQ-fU7jQLWIYAoE4pp5tA + build-linux64-shippable/opt: HMQpLM5wTDCiCHyCWp_CQA + build-linux64-shippable/opt-upload-symbols: Ag5sW7S9SYO2sEzUYR85iA + build-linux64-tsan-fuzzing/opt: dc5wE7EyRPWkxq4VPanoeQ + build-linux64-tsan/opt: HHGhIcK0SSKPsa8b6npohA + build-linux64/debug: HSSnCK9kTYasd28o2obejA + build-linux64/debug-upload-symbols: KTHnfB2tSWyGoE-Zj_0b-w + build-mac-notarization-macosx64-shippable/opt: ZTRWjld_TkiYm4GbPWJ1Qw + build-mac-signing-macosx64-shippable/opt: aHlzsNehSZSOuLwF6J_Elg + build-mac-signing-macosx64/debug: B9JBXRcHQOmyKkzt4iHwcQ + build-macosx64-aarch64-asan-fuzzing/opt: WKDzjKsFS_uPCUh45Cx8JQ + build-macosx64-aarch64-fuzzing/debug: Mwj6V5-mRIy0bIAPhzME8w + build-macosx64-aarch64-fuzzing/debug-upload-symbols: bq8BWIsURRuNVY0SGT1XJw + build-macosx64-aarch64-shippable/opt: Grf5sZpKQzmThO5rx8VDRA + build-macosx64-aarch64-shippable/opt-upload-symbols: EmzZWYRzQdOyTYzJecymrw + build-macosx64-asan-fuzzing/opt: beeHuCvkTSy9plYSILMTsw + build-macosx64-fuzzing/debug: ch8hlQVpS9OiSNhIcd07zQ + build-macosx64-fuzzing/debug-upload-symbols: LEVQlwk1RTKR-HqLFAk5eA + build-macosx64-shippable/opt: DfriLGXzRwWnrqK8KV1cpA + build-macosx64-x64-shippable/opt: KGtOxyOcT6aKfN1PZgRX3A + build-macosx64-x64-shippable/opt-upload-symbols: ZqvJStsQQKmCBVo-j_fejw + build-macosx64/debug: OFr87C6cRO66319RiR3cQA + build-macosx64/debug-upload-symbols: MDpfTL-RTKC_jXLZ2h_eDg + build-signing-linux-shippable/opt: epak00_zT_iLFWhzJKGJig + build-signing-linux64-shippable/opt: UByCJoK9RXGPkftfuVkpjQ + build-signing-win32-shippable/opt: K_IXw6tTQMikrC8iusAxdg + build-signing-win32/debug: SWw28V7OTy6I0gz8IZZfLQ + build-signing-win64-aarch64-shippable/opt: NImKMeUkSvuL8ckiZBTTbw + build-signing-win64-shippable/opt: HGz3BKFYTwerrjfC3cvNSA + build-signing-win64/debug: Vl66ngaaTcGDtD5tBizQ-A + build-win32-mingwclang/debug: eAE2g4Q0SvCk_6TffMdL-g + build-win32-mingwclang/opt: KUvC4ElNRgOSyaw2Hphe4w + build-win32-shippable/opt: K8_SPszNTkqFdNrUomQ4Hg + build-win32-shippable/opt-upload-symbols: EAZupIyeS1-TPAXA_GEarA + build-win32/debug: fmb4BUX7Q-uOPfcs0Bvtzg + build-win32/debug-upload-symbols: KGVeHthkQ6qgQczQijtCTg + build-win32/opt: IwleSbpqTfSuXVDiMjlw3w + build-win64-aarch64-eme/opt: GrZRv7RpSuefyMsq2vV_8w + build-win64-aarch64-shippable-no-eme/opt: XW4z-mV2SsGFQM2B4vzQgA + build-win64-aarch64-shippable-no-eme/opt-upload-symbols: d_I1eEEoTRqgIPeZI21J3g + build-win64-aarch64-shippable/opt: WfdsuKDlSh-h4nF1fhbtSw + build-win64-aarch64-shippable/opt-upload-symbols: aTvqQoCwRNypEkfF7nP5Zg + build-win64-aarch64/debug: ZF9SlL-BTsekGe6u80Pedg + build-win64-aarch64/debug-upload-symbols: PlXMpTs5R9mmLs1UsLquCw + build-win64-aarch64/opt: D_VW5anrT06uAMQIOg-RZg + build-win64-asan-fuzzing/opt: OoBi3ZitRxOTJbGvmw7OgA + build-win64-asan/debug: fgqF7KrZQz2i1CWkjSXfuw + build-win64-asan/opt: UWVbyCf7SGi8IRSfELmbkQ + build-win64-mingwclang/debug: XoY4q91yQOSKXDIGYW6W-A + build-win64-mingwclang/opt: Oe-9jPeYTLmGUqKl2VgQ2Q + build-win64-shippable/opt: SBZpqb_aTfWPfSRsQezD0g + build-win64-shippable/opt-upload-symbols: D1snplLFQYGrPdc6DGDXtg + build-win64/debug: JNYS1Lz6TXWdJJnGkSbgBA + build-win64/debug-upload-symbols: cbZkIFHRRLOEhwVA1BxKwg + diff-artifact-win64-aarch64-eme-validation: ADD0uXNJQ_iKnB7iC6_DOg + docker-image-android-build: LpxTeGk_QsaRdwAc4NqXbg + docker-image-condprof: RyVVLNIzSyWuqdswYDFa6g + docker-image-custom-car-linux: Svfv8eaBQRq_5hkPjcEUmw + docker-image-custom-v8: YsU8AkNkTYWs-gcxQYwU7g + docker-image-deb11-toolchain-build: TpetzDY_QHiUkG0FDcXrUw + docker-image-debian11-amd64-build: ebGkHWgVQxS-kF2GCuGPIQ + docker-image-debian11-base: IbXTakKdQfqi7jsTKdKo4g + docker-image-debian11-packages: NbtCjy4LRwip7FFEpZeIdA + docker-image-debian11-raw: Y-__5kGfTJam6qcyFXgk0w + docker-image-debian11-repackage: MBniWVI7QjSJt42qB-HWyA + docker-image-debian8-i386-packages: NEIw7A0qR8SJvv8WvdOqIA + docker-image-debian8-i386-raw: T8qZfqSTSNa4KPfp1j75Ww + docker-image-debian8-packages: IVnmyaxbToSvbgn8QmMFUg + docker-image-debian8-raw: TNiaNLncSH-2A0g6RKTLEg + docker-image-decision: JYoOLOrEQMCDeQ6rLo2JYw + docker-image-diffoscope: SKBazspeSX2z9a8s_y50ig + docker-image-fetch: ZJPm519oQyCmgteY6cOQ9Q + docker-image-icecat-flatpak: OM774m1cT0Wqy7Q87lqHLA + docker-image-icecat-snap: YmvNSMSfQWW3YG6x_Fcdbg + docker-image-funsize-update-generator: H14MbupWQoyjX2KXVFC7Cg + docker-image-gdb-test: WdZGFUBiTzyn5er0FJQUvw + docker-image-image_builder: MWRymupRSheUkuqIQwF8TA + docker-image-index-task: VIneOK4VRXGrcEmrEpleSA + docker-image-lint: Eeq8v2PJSbSivC61RBNaKg + docker-image-partner-repack: dWuSsRGgQASrrUUuy6SECA + docker-image-periodic-updates: XHugZ4MORyS_tZ2JuR_57A + docker-image-push-to-try: RjfJZLsfQJC0N6s9COPwTg + docker-image-sentry: UNHHsSOiTPyh2UIvfYyKnQ + docker-image-static-analysis-build: PnI26NxSQAOmG7NEROZzJw + docker-image-system-symbols-linux-scraper: HOupv5yoTKmMJqeMW31aFw + docker-image-system-symbols-mac: LnVHNZkdR_CAWouA141PwA + docker-image-system-symbols-win: NhiFCR2-QWqq1IfQHe_gRg + docker-image-ubuntu1804-base: KATF20G5SLOxKZ-9-Er0wA + docker-image-ubuntu1804-i386-packages: Dakk3qN1Q4GjXOsPUhk1nA + docker-image-ubuntu1804-i386-raw: XA_oUxFXRTSQ1EvmDGFkSw + docker-image-ubuntu1804-packages: Jr0fxIJnSmu3ZaRTz9oF7w + docker-image-ubuntu1804-raw: Fyx2nDcYTg2M231ZcL03UQ + docker-image-ubuntu1804-test: SfINLyQOTquveJV9O7YKDQ + docker-image-ubuntu1804-test-base: V0wWtDPIT927FniwmWVdfw + docker-image-ubuntu2004-base: NFe_iEGoSCS2F_LbYKvdNA + docker-image-ubuntu2004-packages: alSLN0VkRFSFnwf4qAvkig + docker-image-ubuntu2004-raw: Hacmx9CIQZq9wTR_0k7JOg + docker-image-update-verify: BCpoSWIqRe6CWV4KQkaSxA + docker-image-updatebot: eoJoqnQMQJi8as-x6JB1fQ + docker-image-valgrind-build: EQ69ibXNR3eZC7zvuu2fFQ + docker-image-webrender: H73T2utFRPKNCJYQKLoyqg + fetch-afl-2.5: dDLfrg52RNq82L-R7gh7UQ + fetch-android-ndk-rs: RlrZuvBETXW70s2gU4OHQQ + fetch-binutils-2.31.1: VuM4lv42T129BRsNoLlxSQ + fetch-binutils-2.36.1: ByA_wQrLSRecv9wsNxNvKg + fetch-bomutils: ThI-yuH7Sbai-ykwH000SQ + fetch-cargo-vet: f129L9oaTnmolGvke4dU2g + fetch-cbindgen-0.24.3: HpSr2rYxQTOSfeF5Yk5wRg + fetch-cctools-port: fH5bHUvMSEOKqRgcuC8MMA + fetch-clang-14: UCTFRtW9RJGjJD26W8NLQw + fetch-clang-16: PkJC2FcORo2by0TFEbdKiw + fetch-clang-7.0: IqMLKeAJR5eS8CtSg62Bfw + fetch-cmake: EDz-bhWqRai0Ke2oG3OwmQ + fetch-cpython-3.7.15: DYjrGxXVTXWnZEPx8P8B_Q + fetch-cpython-3.8.10: frS4H2j6S6-BjUeHrWPKQw + fetch-cpython-3.8.10.exe: CTbe-k2SSZeCWMk-o3Hrbg + fetch-dump-syms: cSP5DD9WS2u6d0urMVko6g + fetch-fix-stacks: K0lhfcfhQgKSW1XqDcoqAg + fetch-fxc2: Og99vG8zSvqATrJ475SyIg + fetch-gcc-8.5.0: MN_MWSxZT0CDzAsge_M-xA + fetch-gcc-9.5.0: MV71AtSJRZGVpPx_Wn3CpQ + fetch-gmp-6.1.0: HVLmHPdESnecmWMfzpngVA + fetch-gn: BtZfqBlOR0an-X2-CDtlzQ + fetch-gnumake: EnFlPtwZTg6KTpCnizAK-A + fetch-hfsplus-tools: d48tzJY1SOqF532M5poVJA + fetch-isl-0.16.1: QjbiBOZwTq-Ixs-5ZElX7w + fetch-ldid: KcCRwrZiQwO-Hv2JObw2mg + fetch-libdmg-hfsplus: PuW3Yc2_RcaM4JyinWk-kQ + fetch-libtapi: JhTPdkvRS9i7DIFH0Z_HtQ + fetch-llvm-mingw: MrfJe8U6Ta6KB6mvahuK5Q + fetch-makecab: USA4T1YSQjKc_uJCFwLTPQ + fetch-mingw-w64: Zx9szLuJTN-uVYpKEMIR7g + fetch-mpc-1.0.3: QNa4xolWSsKEhs53fma5Dw + fetch-mpfr-3.1.4: HtQWDve6SPy5Q-zaQaK0eA + fetch-msix-packaging: eKeNCZYpRP-e4PC0jmTrUw + fetch-nasm-2.14.02: f588w5qrSwS7nrTxrGdCqg + fetch-nasm-2.15.05: GKANxKq6S5qm93A_uHDu4g + fetch-ninja: MPXdEaLsSSmjh2uFjXSIdw + fetch-nodejs-12-linux64: WkFwb3-bTfK3NE2h_GefgQ + fetch-nodejs-12-macosx64: fKyyoKN3RlS9lmLaggLMNA + fetch-nodejs-12-win32: VEa4D1NMSk2O0JhH4n5pjA + fetch-nodejs-12-win64: ZR9yNbf7S-SvF1814cGXqA + fetch-nodejs-16-linux64: akIE5r6dQQWn-ovFx8JMtQ + fetch-nodejs-16-macosx64: SxnrHF9uQvi3oT7Us1N0tg + fetch-nodejs-16-macosx64-arm64: R1GrkKvuReCFhYgtZpTASg + fetch-nodejs-16-win32: GYHloKAQT_WBjXiDFL_3Qg + fetch-nodejs-16-win64: LJzydlw3Qg-9qJ1pruka1A + fetch-nsis-3.07: LiDuUpM_TguSosRvce61FQ + fetch-nsis-3.07-win: N1nR7Q9NTG659jIcOuDAXA + fetch-pkgconf: M-l_vjyVSpy4A3c4StbIQw + fetch-rust-1.69.0: A9sE0vehQyWxlle7pSB8Ig + fetch-rust-minidump: D6ce6KWARx2WoJ-qYOyHiQ + fetch-rust-size: Gp6GAye6Q2OjiyjZzY-dYg + fetch-sccache: aSQbFP5dSm2ilnm7KNNCjQ + fetch-upx-3.95-win: eHqPJkDcTwaBJ33C66L88g + fetch-wasi-sdk: XaseNINmTImQFMWk2yWDDQ + fetch-winchecksec: Lj4bDparQFKNB0NVnq_vZg + fetch-wine: PfhSZZF2Tsue4lqnzaVt9Q + fetch-wix-3.14.0: fQbbtuqtREi9d_Fr7jUbpA + fetch-xar: cx8fg6g_TLCyb3haAHVW4Q + fetch-zlib-1.2.13: eL_f1GRaQvqRiGyafHGZrg + fuzzing-python: PuRefW2zSiOkr1HoWZfXGQ + generate-profile-linux-shippable/opt: FwdlHX-VSiqJLwjslx_QdA + generate-profile-linux64-shippable/opt: OEXhs0YzS5yoPKUkuARNqA + generate-profile-macosx64-shippable/opt: XSd9RDNnTgmLna4xrhhSrA + generate-profile-win32-shippable/opt: JOofZe-pS6OwzHd86aTzEA + generate-profile-win64-shippable/opt: PkpZX47oSWW8eBQWHf-izQ + hazard-linux64-haz/debug: U5_icpIBRbasgPhPRnNzwQ + instrumented-build-linux-shippable/opt: eiVB-QhfTHmI0jZt5bkbJw + instrumented-build-linux64-shippable/opt: JtBaU1jKRvSDSArpwkv-Xw + instrumented-build-macosx64-shippable/opt: XgrWMJyvReCdm1uKC0crZw + instrumented-build-win32-shippable/opt: GcIGrHqTT8evRAtFXmO8eQ + instrumented-build-win64-shippable/opt: H3DSCOzERu2TB87vQmk-LQ + packages-deb11-cmake: Uv8i0OZtQzm7oBj291Ke4Q + packages-deb11-mercurial: bP2b8fXaTmitAEtWUJmOyg + packages-deb11-python-zstandard: WOYJHh4rTpaZjYawCuSH4Q + packages-deb11-valgrind: bPcu-zKYTMO2kzwLWvEhuQ + packages-deb8-32-gcc-8: QcCs85N2RSS_C4xsxKoBLw + packages-deb8-gcc-8: RyJ7rDycSy2_eWStcLlrbg + packages-deb8-gtk3: dtS0lNFkRweVt7rK5hWSbQ + packages-ub18-32-libc6: X0n4kRzXRgCX-cntxtZtUQ + packages-ub18-libc6: QfYgqhnAR3icWQHfI-RQ3A + packages-ub18-mercurial: Dy2O5OZvTmSHL0eq7BFFXg + packages-ub18-python-psutil: CxcTlF6dRe2bu5ppxLpLdA + packages-ub18-python-zstandard: AqYNqjmTQuaMordsE2gqjQ + packages-ub20-mercurial: FgZinnq1TXSatmKOZfwY8Q + packages-ub20-python-zstandard: XGAqmtKBR2afSz5FFaccbA + repackage-linux-shippable/opt: cqL7FABGSi-i_RueIwu2yA + repackage-linux64-shippable/opt: cIGy1dMDRCe0RW5gurkaeQ + repackage-macosx64-shippable/opt: eI-wq-IYRa6oT-oXiTPRdQ + repackage-macosx64/debug: UiHbDIkJTzu-vaITaWdGbg + repackage-msi-win32-shippable/opt: duN6m4O_TJanFTImB-utrA + repackage-msi-win64-shippable/opt: aK37UAjAQjC1fl3JEArb6w + repackage-msix-win64/debug: YTbeETG7TzyAATsPNjn3oQ + repackage-shippable-l10n-msix-win32-shippable/opt: DSGjG-a_QFWiODgSt5hT6A + repackage-shippable-l10n-msix-win64-shippable/opt: NddAB2TDT22xCpYmAjI91Q + repackage-signing-msi-win32-shippable/opt: ct_KAxlUT3We5ytogUyijg + repackage-signing-msi-win64-shippable/opt: NvWc7g99T5Ko1oU2zPihXw + repackage-signing-msix-win64/debug: f_9YbH4xQWSJfzceo5pNog + repackage-signing-shippable-l10n-msix-win32-shippable/opt: HBay9vdqQjm6pYEzSD8axw + repackage-signing-shippable-l10n-msix-win64-shippable/opt: W9NAQXs5Syu_hZLH3AiXpg + repackage-signing-win32-shippable/opt: D5cGUTBHQ-WXhv1YhSZ0zA + repackage-signing-win64-aarch64-shippable/opt: HO5UFPKqR56AfXbvBvlmSw + repackage-signing-win64-shippable/opt: QNG3tk8DTwyXHueaAtSF9w + repackage-win32-shippable/opt: MYc8d3oBTjSUqmAaKSfuMw + repackage-win64-aarch64-shippable/opt: PhwO-BmVSRezkZsIjk0Mhg + repackage-win64-shippable/opt: P6nD-gtqQeinZ_HRN__GLg + shippable-l10n-linux64-shippable-1/opt: NO-ldAUhRv-pgIOttZjAeQ + shippable-l10n-linux64-shippable-10/opt: N05JVVQyQMKAy610DGe_1w + shippable-l10n-linux64-shippable-11/opt: Gay9gVzHSFimR90AXNyu1A + shippable-l10n-linux64-shippable-12/opt: cJn1NaRUQg6tCY-NbbCpNw + shippable-l10n-linux64-shippable-13/opt: boe9sKPqSWGfQlP6PD_pfg + shippable-l10n-linux64-shippable-14/opt: L9vKDfaySp6bndlih0XdjA + shippable-l10n-linux64-shippable-15/opt: JifxQv67RC6ZKCXbnSXXxg + shippable-l10n-linux64-shippable-16/opt: Oa4qeqWWRgaRP0K2Cp0YTg + shippable-l10n-linux64-shippable-17/opt: GIUDmDMsTQqADKecEPtiiQ + shippable-l10n-linux64-shippable-18/opt: XsPBdi--Qgiv9-HRttUqPA + shippable-l10n-linux64-shippable-19/opt: bk6KnvV7QYesBr5VP0N_-Q + shippable-l10n-linux64-shippable-2/opt: SpGeEaM9Q--wxWPK24Xi6Q + shippable-l10n-linux64-shippable-20/opt: FJOu1_qPS7OFw25exPVLhw + shippable-l10n-linux64-shippable-3/opt: HWYdH4yXQW2L6Bnckvc0kQ + shippable-l10n-linux64-shippable-4/opt: ceMge9qPTlCBe478dTMV2w + shippable-l10n-linux64-shippable-5/opt: DJvRnlG6TSOCTAkRNJrYKA + shippable-l10n-linux64-shippable-6/opt: Yr9zgyjFQV2mnRcWekM3rQ + shippable-l10n-linux64-shippable-7/opt: MLkQZDW9QAKmzpIBXSOKzw + shippable-l10n-linux64-shippable-8/opt: YrFYgP3NT-yPGmitqdm6Aw + shippable-l10n-linux64-shippable-9/opt: Ca9TurHyQWeTbhmlpzdxEQ + shippable-l10n-signing-linux64-shippable-1/opt: Lnwx0rUjT7WdoaV4cW8hhg + shippable-l10n-signing-linux64-shippable-10/opt: Kgu3g-HwRZyp182DjrxQjQ + shippable-l10n-signing-linux64-shippable-11/opt: RCtp2688Rq2M09HyGQnF-g + shippable-l10n-signing-linux64-shippable-12/opt: Uzna_N_4QcG7viVtxWMI_Q + shippable-l10n-signing-linux64-shippable-13/opt: ANd5-nLkRb2tT46M4dmdyA + shippable-l10n-signing-linux64-shippable-14/opt: PFV6RYguQiCjm8mz7I_Trg + shippable-l10n-signing-linux64-shippable-15/opt: FXRp-QA9SJWPmHc8iJAzjw + shippable-l10n-signing-linux64-shippable-16/opt: cpqrx4RhSp2D05S0Lg5IpA + shippable-l10n-signing-linux64-shippable-17/opt: FDTyGGxjRbmKGuwbbE8qvg + shippable-l10n-signing-linux64-shippable-18/opt: bKYHGAx5TQ65JmxDh0hBCA + shippable-l10n-signing-linux64-shippable-19/opt: cZjak_ZNSACsYBvpcbLddg + shippable-l10n-signing-linux64-shippable-2/opt: G5w9JO80R-SIkEWm78N7bQ + shippable-l10n-signing-linux64-shippable-20/opt: HZs_PqY8TgW-0M-0A-rtQg + shippable-l10n-signing-linux64-shippable-3/opt: JLcvtfYnQBqgZofGq4Q40A + shippable-l10n-signing-linux64-shippable-4/opt: NPMgOyjgT7q6QrqzF9olZA + shippable-l10n-signing-linux64-shippable-5/opt: CnhBVlj9RZWA69dXD1jjow + shippable-l10n-signing-linux64-shippable-6/opt: XXSMJ2ceQwqXhJ8DabkLVw + shippable-l10n-signing-linux64-shippable-7/opt: PzQHNG05QcSesz6zu0c7_A + shippable-l10n-signing-linux64-shippable-8/opt: Ize68pcmS9C12kUoCROj4w + shippable-l10n-signing-linux64-shippable-9/opt: JyR84fGISCmfnrkfTm-_jQ + source-test-mozlint-eslint: a6JgqPQ2SwSsXappsVCk1g + source-test-puppeteer-puppeteer: BmJ5xpQSRCSjW18Ct56wvA + source-test-puppeteer-puppeteer-with-bidi: Ox0-HRkNQn6lFuJXUDs7AA + test-linux1804-32-shippable-qr/opt-web-platform-tests-1: cQFeTndpTAiQG0BVifJIdw + test-linux1804-32-shippable-qr/opt-web-platform-tests-10: XZM8ml17TX2GhMd5aHmT8Q + test-linux1804-32-shippable-qr/opt-web-platform-tests-2: LA9UX7YCQw2Nk7n9VzriKg + test-linux1804-32-shippable-qr/opt-web-platform-tests-3: X2gN78llTkmBQltRQQMYTA + test-linux1804-32-shippable-qr/opt-web-platform-tests-4: Fes3Lj_YQWuYMB7HndV5TA + test-linux1804-32-shippable-qr/opt-web-platform-tests-5: PAZYrRNtR4ulYFJAPUFiLA + test-linux1804-32-shippable-qr/opt-web-platform-tests-6: dXVhPiPKTZysAtA011FHTw + test-linux1804-32-shippable-qr/opt-web-platform-tests-7: PZLifyYURoiqczqxN-ORkw + test-linux1804-32-shippable-qr/opt-web-platform-tests-8: cy6o58PYQtmgtX4jYKVyPA + test-linux1804-32-shippable-qr/opt-web-platform-tests-9: Xy1wO5UxTn-IkW0G1PzlUQ + test-linux1804-64-asan-qr/opt-cppunit-1proc: NFyRt71zRK-UwSkEeAnQaQ + test-linux1804-64-asan-qr/opt-crashtest: cYycQBWpSBmVRD0KiN-iFw + test-linux1804-64-asan-qr/opt-crashtest-swr: fw20xJSiQLaXRU_o-T7wxg + test-linux1804-64-asan-qr/opt-icecat-ui-functional: NIf3tKEAQfuzxGfbCch-iw + test-linux1804-64-asan-qr/opt-gtest-1proc: UVKDdxNgRwK4LpD4GIGMlQ + test-linux1804-64-asan-qr/opt-marionette: PVje8YFXSaK1cs0PMV0KAg + test-linux1804-64-asan-qr/opt-mochitest-a11y-1proc: NtbMa7PzQr60h9GjsRDgWA + test-linux1804-64-asan-qr/opt-mochitest-browser-a11y: I5qrO8q-SRCq98hP2TgDRg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-1: QYve0CDOQGi04XAbceb4cQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-10: Dyf2nrrSTQWIR-a0foZ_cw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-11: fBVkKV2rQqGAlLR_pFi_tg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-12: VI6rn9LYQUK8hLOmduTAKQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-13: UJWEf12FQTCN0IVwYVpPsQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-14: Q284c_xRTuekd_UbmH4zsQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-15: SsOGAlpIRhWM5GDY-6eQSA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-16: bxVtbUWQR3yn7UuAdtw6zQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-2: fl_f1owoSAK-XVJQlKy2qg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-3: fRbvTpISQeOAQu02GopkRA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-4: GIgez8-fQYqAqimYYTj7jg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-5: eTnLq3t9RMCtkRr7jiWTOw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-6: CZYXYJmUQWmjrdseaATmXA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-7: NrheYt8MTX-DQcdx-wT_cw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-8: NjkC5FmwTauq8DeMrIdoAQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-9: Hp0lxZfWTqqJDIOcmkXoww + test-linux1804-64-asan-qr/opt-mochitest-browser-media: XErx6ErbRgC2LzoFVsdI2g + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-1: JPFH1RfnT7eYbEEDGIUfjA + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-2: P7I73M2IRYKCaBPzS9dZUg + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-3: IEttNseKSF26JazvkEMtQw + test-linux1804-64-asan-qr/opt-mochitest-chrome-gpu-1proc: U4j6aOzRSimPSWVTUfjjzQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-1: aOL7t971Q0az4ufDcEgVlg + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-2: DZ-bx6wSTfixLEDJhAV6iw + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-3: DJQaddCoT6uE-rvdQlIyjA + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-4: LBPkHRRBQ0GgOrNg3JWbbQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-5: MovhSH6NT2qt1-GmXxCjfQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-6: Xf4XlnHsSYuGeAGLtPPA3g + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-7: byFHoXifSKue_-88grM6Hw + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-8: PNc-skiETUaCF9KjU0HHQg + test-linux1804-64-asan-qr/opt-mochitest-media-1: YrHGw9HCShus3z0YtzBHHg + test-linux1804-64-asan-qr/opt-mochitest-media-2: YygK4vw1SvW_lGtKTeaxTg + test-linux1804-64-asan-qr/opt-mochitest-media-spi-1: QrzVtZHqTWqYkXwynywtzw + test-linux1804-64-asan-qr/opt-mochitest-media-spi-2: VXieUaS0RhqVpGBfuZxR5w + test-linux1804-64-asan-qr/opt-mochitest-plain-1: LsO1hX7aSa-Xsxibu-5rkw + test-linux1804-64-asan-qr/opt-mochitest-plain-2: SyhytcIXQwaBH4fFvvxgdQ + test-linux1804-64-asan-qr/opt-mochitest-plain-3: beVSfd7pTKKW1OpybY1Azw + test-linux1804-64-asan-qr/opt-mochitest-plain-4: WcIvHcQXRtuODe_jQ6oe7g + test-linux1804-64-asan-qr/opt-mochitest-plain-5: VB6SyTIpQO6Rta5RgbwDZA + test-linux1804-64-asan-qr/opt-mochitest-plain-gpu: SWdbGr7qQ2eE6pfgZapUQQ + test-linux1804-64-asan-qr/opt-mochitest-remote: LIhq4wzOSz2QDWaJLX31Bg + test-linux1804-64-asan-qr/opt-mochitest-webgl1-core: WM0N4yDxQgmRiHNOzTEYqw + test-linux1804-64-asan-qr/opt-mochitest-webgl1-ext: HB43ARpORXC2SkpYFG1vVA + test-linux1804-64-asan-qr/opt-mochitest-webgl2-core: cHZVmMKGStGXyeiFCP2aew + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-1: QNjtpq3eSTW5GbEOHmF0Bw + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-2: UYiWxXgjSGuGfF0FB05TmQ + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-3: ILW-ESGsRXi168FQGUz_Tg + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-4: RzCEAWoDSLaeJc6VY8hj5A + test-linux1804-64-asan-qr/opt-reftest-1: AMwP-rl5QTOj7fR6w2ALiA + test-linux1804-64-asan-qr/opt-reftest-2: G8qcnuQ9RWmX-GcTBY4MfQ + test-linux1804-64-asan-qr/opt-reftest-3: JPA13xYWTxW7B8arhBSGAg + test-linux1804-64-asan-qr/opt-reftest-4: aw_QRnqjR2SqwOb1RqsBrQ + test-linux1804-64-asan-qr/opt-reftest-5: JPOvViWfQNuUIIDiDE7rDw + test-linux1804-64-asan-qr/opt-reftest-6: JBdbOeBSQmuVohXZqQ4xxw + test-linux1804-64-asan-qr/opt-reftest-7: MgPbyirRTcqvILtv7wsTbg + test-linux1804-64-asan-qr/opt-reftest-8: YenEXKw5THG1jVa6ULh6Fg + test-linux1804-64-asan-qr/opt-reftest-swr-1: ZLXZzwh4SmKeNvuWeT-6Qw + test-linux1804-64-asan-qr/opt-reftest-swr-2: DowUlP1iSUacbHrIYseLAQ + test-linux1804-64-asan-qr/opt-reftest-swr-3: Mwz5QW8HQ4SsD5zzINAh0w + test-linux1804-64-asan-qr/opt-reftest-swr-4: Zju43PzCScC0ak09U8rJFg + test-linux1804-64-asan-qr/opt-reftest-swr-5: JqQA4UdhTCuXmH3nSARxAw + test-linux1804-64-asan-qr/opt-reftest-swr-6: Y32spLLTT5KrSFCQWvFz5A + test-linux1804-64-asan-qr/opt-reftest-swr-7: bnMghHS2TRSdq_Fe71M31Q + test-linux1804-64-asan-qr/opt-reftest-swr-8: WNFQgoy9SaOILThYxBXAUQ + test-linux1804-64-asan-qr/opt-telemetry-tests-client: Ei_43929T3G5yOFzs26EZQ + test-linux1804-64-asan-qr/opt-web-platform-tests-1: VHlInl5KT8equh1V35Oi9w + test-linux1804-64-asan-qr/opt-web-platform-tests-10: R6jPl2USSjSkBtvtc8-IaA + test-linux1804-64-asan-qr/opt-web-platform-tests-11: dDpEpLBUTlmr8Bl2h7idZw + test-linux1804-64-asan-qr/opt-web-platform-tests-12: URdw76UIRkesS_UlbWg1QQ + test-linux1804-64-asan-qr/opt-web-platform-tests-13: FJyN4aIHRdyKECfnlWWFOg + test-linux1804-64-asan-qr/opt-web-platform-tests-14: SoRVJ30vQ3K38nbZi2b5Dw + test-linux1804-64-asan-qr/opt-web-platform-tests-15: di_nNNojS0qJtDFyOh17Fw + test-linux1804-64-asan-qr/opt-web-platform-tests-16: A4F61KpYSBaW5kxqNbw7PA + test-linux1804-64-asan-qr/opt-web-platform-tests-17: erxXXlshQxuKWqpuDhAdBw + test-linux1804-64-asan-qr/opt-web-platform-tests-18: PCzRs57mSiudidoGWte2IA + test-linux1804-64-asan-qr/opt-web-platform-tests-19: OammIfnhQ3GwxXTx3DL2OQ + test-linux1804-64-asan-qr/opt-web-platform-tests-2: NegDnTe1Sy6DHiRoU3YEzg + test-linux1804-64-asan-qr/opt-web-platform-tests-20: buQk3DgvQNCmLwlRcUMblw + test-linux1804-64-asan-qr/opt-web-platform-tests-21: Gh7o_GzGRVCKkpylk83GJg + test-linux1804-64-asan-qr/opt-web-platform-tests-22: U_mIpER2QLuIvSDsItygPQ + test-linux1804-64-asan-qr/opt-web-platform-tests-3: eBg0qDrzRcGv0qE6AaftPA + test-linux1804-64-asan-qr/opt-web-platform-tests-4: S8sXmXJCTZuLE3mZIiEtSA + test-linux1804-64-asan-qr/opt-web-platform-tests-5: d7-PFFKiSuy0yPIP5cvjEA + test-linux1804-64-asan-qr/opt-web-platform-tests-6: bpzRPhn_TqeL6PAWX5xXwg + test-linux1804-64-asan-qr/opt-web-platform-tests-7: O4EnWXu4QnuMvPy-AaFQ5g + test-linux1804-64-asan-qr/opt-web-platform-tests-8: dHJrTUlKR1CiV_WFAqF48A + test-linux1804-64-asan-qr/opt-web-platform-tests-9: D3xLT1bCTA-hTlTcbavQCQ + test-linux1804-64-asan-qr/opt-web-platform-tests-crashtest: R6OU16WfS-2jati3LfIRSg + test-linux1804-64-asan-qr/opt-web-platform-tests-print-reftest: NcPfbQ6jRTSPaswGVGc25w + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-1: fNGd8gb7S3SAmOu1aLRnAQ + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-2: SboBshc7Rka0GbDM0GXwyw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-3: eE04RC2kTOagzwJJTsFJQw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-4: TRZEHdIOQMKb0cv_kIAOeA + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-5: aTfP2kH6QQmvYbElxRCaMw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-6: S_bAr50xQvCjLQ2CJVlKCg + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-1: BpGD-WtxQjOj2df3vW46Lw + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-2: cc8NrKzlQ5e6byTHG5gGjg + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-3: O5kiKNEXQXy3O_rVE06L6Q + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-1: UFt7HmJvSXOHbJzJUdhkTA + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-2: Yeb7yL3HSaiwHR0j-qK6QA + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-3: D9kurO8MQXeGpd8hEzME9w + test-linux1804-64-asan-qr/opt-xpcshell-1: QJoR2XeBQUq4iBt4qkg89Q + test-linux1804-64-asan-qr/opt-xpcshell-2: YY9um_5KScerURjYrAlWSg + test-linux1804-64-asan-qr/opt-xpcshell-3: DLrNlao7RBOU2Lp8qXYLGQ + test-linux1804-64-asan-qr/opt-xpcshell-4: OmBFVu_rT-qGNKWnvOVoig + test-linux1804-64-qr/debug-cppunit-1proc: B_TwdeRURGGDGZbsFnwaew + test-linux1804-64-qr/debug-crashtest: SpWOocK8R8yry4WUhegKdQ + test-linux1804-64-qr/debug-crashtest-swr: FGDZIeu7T9icNbULzLNUcA + test-linux1804-64-qr/debug-icecat-ui-functional: LdtKQuOxSz2UxjHoubliLw + test-linux1804-64-qr/debug-gtest-1proc: AmBpIbywS1uVuY1EzoT8WA + test-linux1804-64-qr/debug-marionette: ZIVPikgzR4qoRj__Vjr9Pw + test-linux1804-64-qr/debug-marionette-swr: JJkUOGJ5Te2XHxvsnSgGdw + test-linux1804-64-qr/debug-mochitest-a11y-1proc: QNhApjqlQlSXj0B_a_PCjA + test-linux1804-64-qr/debug-mochitest-a11y-swr-1proc: MlJCEDR1QiS-NmJd9ZYL4Q + test-linux1804-64-qr/debug-mochitest-browser-a11y: e9ZoEv7dQM23isfpq1mLSw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-1: b14NApdAQs6ksyvLAh4mFQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-10: dYl1YzeORAGUUnGtiZ61JA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-11: SLq6WIOVQ-SpoFs0OYNQxg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-12: AX-j0Q_ZRx28SFpbgIeeMw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-13: Qo-3LI9uTneWhlE0z1t4Jg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-14: IDRniRe8SgWRYrHhoqVDkw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-15: aMl-r7XaQ8mnMfulRk5EzQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-16: HvzSZjUKSzWVbumplsx-YQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-2: T1JEqDcYQBuYFHoOOl6n6g + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-3: Vc6u2Q5iR3uT6NQcPTWVKQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-4: QhRM2vy8RZGnckw7UmUD7w + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-5: cbHa0aCDQEONOXDqDsNgqA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-6: fVJ68O4OQCik_3fAN8XYWA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-7: bjSDeBfTRUeCYmvOCoy7Rg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-8: f_37jxo7RkqPCuQ5zSFAxw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-9: W4bMG_sxSZ2J_wKwufsEHg + test-linux1804-64-qr/debug-mochitest-browser-media: CckPg2FtSsavXkEyAJH3Cg + test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: du48kZqxSDmKxmxyfZ4U7Q + test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: dVbFxL3LTtCepKfLHUDk3w + test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: CbI0vB5nQMqH_SK6pkLiCA + test-linux1804-64-qr/debug-mochitest-chrome-gpu-1proc: C2P1Z1sKS7282uS06mthHw + test-linux1804-64-qr/debug-mochitest-chrome-gpu-swr-1proc: cP73RHx_TpCkhoR_1BF2uA + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-1: fDWVa6EET-2AoHrKCxJXTQ + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-2: Y9p5E_20RiyydzZn0b1s5A + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-3: YXpdlc71Qm29unUYeXXsQg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-1: ApS4Kpm7Snm_TakUTarFww + test-linux1804-64-qr/debug-mochitest-devtools-chrome-10: TFjnRyHeTzqPQxUapXYZ2g + test-linux1804-64-qr/debug-mochitest-devtools-chrome-11: JvWc62RLQwKU69Lo7xN0lw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-12: B0KTyGxiRMCYom0rZ9zG2A + test-linux1804-64-qr/debug-mochitest-devtools-chrome-2: fLCjSLqXT0urMZh23tczmw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-3: XZC8KN6jR6ClSBtc_Iythw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-4: eakxxZUzS1yJPhv_h2aLsw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-5: awa-mAz0RIKtnGFbT5ItuA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-6: LZCFJ74SSZizV0ac7EdSMg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-7: LzJ-OshfS--6Mnl-raaNhg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-8: bf9WYEMUQGi_8bcOvt8g4Q + test-linux1804-64-qr/debug-mochitest-devtools-chrome-9: LAVrPc7xTain8CPbiKZFYQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-1: O4iGaBI_SYqwfsVrM6Dp1Q + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-10: Mbm862YSRqG5pp9O_Tx4SA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-11: DciNoljBQj2PnbdXFMdqMQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-12: T_yOAKnrSF-N4vsyADr4eg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-2: GHkw6AdTQeeZNPXIojJo8w + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-3: MMKAbMiCRounZX4FPevBOA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-4: aAYF0gF2ROae5ex_iyTQCQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-5: Y07BcNdYQ7yDqXM6SjiOyg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-6: DCxEvr2wQbCrzdDKPOIjhQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-7: XDh0vxr2RKSh63sxj3BoBg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-8: QpqOORMaR9eDd_m_ZNew3g + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-9: Q20hZUY2RY2UeFla9gS2EA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-1: GNc68yQBRR2ihK339u8XVw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-10: AhKCpD1qR7CJt1wjbsXuzg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-11: fpOzLduhT7igSqPKn0lhGQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-12: b75beJrmTnydnjvHDb03KA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-2: eSkzMJtBQaKzadkex8jsHQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-3: Uyp6G324QmankHCwlS87ZA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-4: WHfdovQ-Tpqtg51dvvGtIw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-5: Krfk9LANSh2vmlJKjkO9zA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-6: d5bqVCmpT8qd7IwSrH-iAg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-7: VFhm3wHeRpKTBf46ASC1xg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-8: cIRnG8RcSdWgvpAGnjmpGg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-9: U7iyUFzIQ56KBJ3VnEH8Xw + test-linux1804-64-qr/debug-mochitest-media-1: WvyO_PupTZ-DmTSXrquDuA + test-linux1804-64-qr/debug-mochitest-media-2: ZHiWaEu2RHy2g8tVlQho6Q + test-linux1804-64-qr/debug-mochitest-media-3: YsRpAX7hQoOcFpeasK9NYg + test-linux1804-64-qr/debug-mochitest-media-spi-1: M-P9rcnqQ7eNYSIUHjA2SA + test-linux1804-64-qr/debug-mochitest-media-spi-2: XpqBjHKqQSSpgKWZ2m755w + test-linux1804-64-qr/debug-mochitest-media-spi-3: FsSvhWDUSZ-wcAQq9qfR9w + test-linux1804-64-qr/debug-mochitest-plain-1: CHt6W57SSuCiqenGBvLfCg + test-linux1804-64-qr/debug-mochitest-plain-10: OK0CMrpxRd2shZszWvyY3w + test-linux1804-64-qr/debug-mochitest-plain-11: JQCNKDyyR1yxBDGnYxo8ug + test-linux1804-64-qr/debug-mochitest-plain-12: SaDd4FtRRXyJLwtYfY1qlg + test-linux1804-64-qr/debug-mochitest-plain-13: EtrTvhHcTM-Zv2E83lzW_Q + test-linux1804-64-qr/debug-mochitest-plain-14: TPF1dhDZSf-BURNZqq7yuQ + test-linux1804-64-qr/debug-mochitest-plain-15: YjEbSjIlSamkR3BInro_uQ + test-linux1804-64-qr/debug-mochitest-plain-16: eViT9yFtQTKng0aPoqrLOg + test-linux1804-64-qr/debug-mochitest-plain-2: YkeNjPIIR7yLfQ23KbBPdg + test-linux1804-64-qr/debug-mochitest-plain-3: bGqmCQzOSb2tZ3Y4i9cDrw + test-linux1804-64-qr/debug-mochitest-plain-4: A4_w9jLTRMCERlvSeP-mog + test-linux1804-64-qr/debug-mochitest-plain-5: XFkPE2k9TeaO76MfKVHKAw + test-linux1804-64-qr/debug-mochitest-plain-6: FAbvFdpwS7SOdnh4WV1JIQ + test-linux1804-64-qr/debug-mochitest-plain-7: TSA7t_OsT7OXpmFwHRcvuQ + test-linux1804-64-qr/debug-mochitest-plain-8: cOLurrdPSXil6nXtFX1nuw + test-linux1804-64-qr/debug-mochitest-plain-9: aONy8gifSB2L-GedmEjzHQ + test-linux1804-64-qr/debug-mochitest-plain-gpu: G8xaWFHxTda-se0btupkVQ + test-linux1804-64-qr/debug-mochitest-plain-gpu-swr: EzvUORhjQsiBDdBdC7SWFA + test-linux1804-64-qr/debug-mochitest-plain-http3-1: S_0nZ72-T1aeC2mwb9yKOg + test-linux1804-64-qr/debug-mochitest-plain-http3-10: O3niv7JTRQaJ2pZefjkd6g + test-linux1804-64-qr/debug-mochitest-plain-http3-11: ZjFx4IO9SSOLITU9yYH1og + test-linux1804-64-qr/debug-mochitest-plain-http3-12: S1YYN2rWQKmkdkijdKzB7w + test-linux1804-64-qr/debug-mochitest-plain-http3-13: WWL2ngIIQlKP-97MaG_mTw + test-linux1804-64-qr/debug-mochitest-plain-http3-14: UIL16BuCT3SY0kqavtzPTA + test-linux1804-64-qr/debug-mochitest-plain-http3-15: an93x4GgSOG3IsNhIIGIUw + test-linux1804-64-qr/debug-mochitest-plain-http3-16: UVTIZeZ5SM2nW9Smwvic1w + test-linux1804-64-qr/debug-mochitest-plain-http3-2: cR9vf131SK-ep_OcoKyphQ + test-linux1804-64-qr/debug-mochitest-plain-http3-3: e8RdhVKXTymnwyMNAUwDOw + test-linux1804-64-qr/debug-mochitest-plain-http3-4: QihMwghsSgOTsrfmHIL0UA + test-linux1804-64-qr/debug-mochitest-plain-http3-5: UAYsVDlkRS-KqFQNgq2yCA + test-linux1804-64-qr/debug-mochitest-plain-http3-6: VDsIml_vSnmWY45QAlavjQ + test-linux1804-64-qr/debug-mochitest-plain-http3-7: a50a5oVITKS_q2dFSEUkyQ + test-linux1804-64-qr/debug-mochitest-plain-http3-8: EJWVB6M_T6yOJiAjZMvWew + test-linux1804-64-qr/debug-mochitest-plain-http3-9: ZfMjUUDyRs2QhxuLydj3cg + test-linux1804-64-qr/debug-mochitest-plain-swr-1: VqObIwweSfWYvEXcMAANBA + test-linux1804-64-qr/debug-mochitest-plain-swr-10: VVMb3mUHRruGq6IOI-LAgw + test-linux1804-64-qr/debug-mochitest-plain-swr-11: GPSN53N9S5yTQpD5SO6uMA + test-linux1804-64-qr/debug-mochitest-plain-swr-12: OrtV2N6ZQV6kNxRIOsOoow + test-linux1804-64-qr/debug-mochitest-plain-swr-13: cFQSVXyLQhiZOLHhUrrk3A + test-linux1804-64-qr/debug-mochitest-plain-swr-14: TxDs9Jd1RDaiXQ3Nxa2Zxw + test-linux1804-64-qr/debug-mochitest-plain-swr-15: fsF4wWmJTsSUd8SY7oxWyA + test-linux1804-64-qr/debug-mochitest-plain-swr-16: cVyLF2_JSzi9wbmv4pl4Qg + test-linux1804-64-qr/debug-mochitest-plain-swr-2: Hnl048IzSqe73Uqood2Uig + test-linux1804-64-qr/debug-mochitest-plain-swr-3: GU59a5zrSUWj4E32D7mQTA + test-linux1804-64-qr/debug-mochitest-plain-swr-4: SxdXuIG4R5ahy63aPa2HFw + test-linux1804-64-qr/debug-mochitest-plain-swr-5: JXQTygvpRCCjpn-FkPKZVA + test-linux1804-64-qr/debug-mochitest-plain-swr-6: JUjCTOh5Q2eyihYdStpwBg + test-linux1804-64-qr/debug-mochitest-plain-swr-7: WgmA3TRbRA25epAi2D4e2w + test-linux1804-64-qr/debug-mochitest-plain-swr-8: WiguP3pkT6irPSKvF5n5BQ + test-linux1804-64-qr/debug-mochitest-plain-swr-9: OPTGcEdQSGeex0o3EO40lg + test-linux1804-64-qr/debug-mochitest-remote: OL-zdkNrQP-QoZL-DdablQ + test-linux1804-64-qr/debug-mochitest-remote-swr: UU_01vMdRSiphoPT6lEG4Q + test-linux1804-64-qr/debug-mochitest-webgl1-core: ZABVlT3QSdy1tt-PmnncuA + test-linux1804-64-qr/debug-mochitest-webgl1-core-swr: SJXbxmPqQzKptbO7hFpJQA + test-linux1804-64-qr/debug-mochitest-webgl1-ext: NipQe0qRRb644IVF9fJRRg + test-linux1804-64-qr/debug-mochitest-webgl1-ext-swr: TUUwzlFcReuXpAeNf17ZUA + test-linux1804-64-qr/debug-mochitest-webgl2-core: XGO1UBzVRjWZhEuTiffesQ + test-linux1804-64-qr/debug-mochitest-webgl2-core-swr: P5ob2nf2SNCCy7sbbXOA7Q + test-linux1804-64-qr/debug-mochitest-webgl2-ext-1: JOCVHphPTumlnaXEZlgq7g + test-linux1804-64-qr/debug-mochitest-webgl2-ext-2: LkI27uqhRGS4FGFP0IMwUg + test-linux1804-64-qr/debug-mochitest-webgl2-ext-3: EOkEY4gOQ2y1Ld8J3iWTtA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-4: FbW0duZeTyaVjyTxJuXkLQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-1: DtThvUPbSAe-QVmdFC_S2w + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-2: DJit90OUTiWvFGzgjwszpA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-3: ZeDmMapgRLqVwT8wwBLKKQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-4: LEZDwHbdQCyO7Ilm-CVa5Q + test-linux1804-64-qr/debug-reftest-1: fpGRBu5oTSiS-tPiN1OoTQ + test-linux1804-64-qr/debug-reftest-2: WRaXSaavS8WRBb7--w8bKg + test-linux1804-64-qr/debug-reftest-3: ULW4RCZ-RLWX3BgNvVZIFw + test-linux1804-64-qr/debug-reftest-4: Gs9i0n76S4KBazpJyWaDzg + test-linux1804-64-qr/debug-reftest-5: YRJMBzQHSw6y4XmimBAmXw + test-linux1804-64-qr/debug-reftest-6: V1Cju_8JTWmGoymR6z3P7g + test-linux1804-64-qr/debug-reftest-7: LCV2nI9uRuWQJn0Pt4fFCg + test-linux1804-64-qr/debug-reftest-8: LOIX7MwkTmy3G5maIq0RLA + test-linux1804-64-qr/debug-reftest-swr-1: csMcavtrQmukY8Ehjc3O-g + test-linux1804-64-qr/debug-reftest-swr-2: Ev0GmFlcR9iJcbj8hjdbeA + test-linux1804-64-qr/debug-reftest-swr-3: PdLn-W65TeSRRb85oCfmBA + test-linux1804-64-qr/debug-reftest-swr-4: AesAkqIqRUGLj21u0w67Gw + test-linux1804-64-qr/debug-reftest-swr-5: DM3U_NAbSaugbNpVrXqvVA + test-linux1804-64-qr/debug-reftest-swr-6: PkvLP2AkRWaUUnAICYHgvA + test-linux1804-64-qr/debug-reftest-swr-7: QXRFhs44QryuvgVA9WoFAw + test-linux1804-64-qr/debug-reftest-swr-8: a2ZT3WcFQSOmbR45_QWi2g + test-linux1804-64-qr/debug-telemetry-tests-client: VU9GPPkDQK6OCn8wUW0EKQ + test-linux1804-64-qr/debug-web-platform-tests-1: G7Z5tIdNS-y6fvOGR0V2zw + test-linux1804-64-qr/debug-web-platform-tests-10: TsKiUvMaQrKsdwK9NAzDOg + test-linux1804-64-qr/debug-web-platform-tests-11: PgOC-GkiRCqEBEDDWIJqCA + test-linux1804-64-qr/debug-web-platform-tests-12: Z8iuM_dCTB23j3BZHyb0fw + test-linux1804-64-qr/debug-web-platform-tests-13: S6BRpnZjSWyeIFvNaJoiZg + test-linux1804-64-qr/debug-web-platform-tests-14: ehYGWqcFQy-xXB69sJKO4g + test-linux1804-64-qr/debug-web-platform-tests-15: e6LiZrPjTeeuPLs6zJGI4Q + test-linux1804-64-qr/debug-web-platform-tests-16: UNXB4YDYRr2M8rO1_ZLWEg + test-linux1804-64-qr/debug-web-platform-tests-2: HwodacuFT4OYqnw7IWJbig + test-linux1804-64-qr/debug-web-platform-tests-3: TuVgG795QbqQ3wYaeHBZHw + test-linux1804-64-qr/debug-web-platform-tests-4: aEoP_XitTvWUWioZoH3MjA + test-linux1804-64-qr/debug-web-platform-tests-5: T5S_ImlLQgmdUVAj3lnVcw + test-linux1804-64-qr/debug-web-platform-tests-6: QiaQmJodQ4iKxSlpiVY_MQ + test-linux1804-64-qr/debug-web-platform-tests-7: LQeA879STuunCFO-AtqMqg + test-linux1804-64-qr/debug-web-platform-tests-8: aCtRv2INQKmKVhHW9ra1Tw + test-linux1804-64-qr/debug-web-platform-tests-9: Fdmd5KSVQJK_88-sC2WBSQ + test-linux1804-64-qr/debug-web-platform-tests-crashtest: IFgYsbcyQ46tdUwEA-TQXQ + test-linux1804-64-qr/debug-web-platform-tests-crashtest-swr: MFnd-cULSYqNVTmh0RSIsg + test-linux1804-64-qr/debug-web-platform-tests-print-reftest: b2nWGivlTCaSY1qObfYu_A + test-linux1804-64-qr/debug-web-platform-tests-print-reftest-swr: fQTh9zH3S-CN4PewigPEzA + test-linux1804-64-qr/debug-web-platform-tests-reftest-1: WXHdJ-b0Ry6ME94X1in94A + test-linux1804-64-qr/debug-web-platform-tests-reftest-2: Kwz2GwgDQIiQQhB9LrcApw + test-linux1804-64-qr/debug-web-platform-tests-reftest-3: IybppHgiTB2pmoKXgMglwg + test-linux1804-64-qr/debug-web-platform-tests-reftest-4: IF36a22MSvm0zmnK_YyBlw + test-linux1804-64-qr/debug-web-platform-tests-reftest-5: G8Gx2A-iRgSxicXfioJYSg + test-linux1804-64-qr/debug-web-platform-tests-reftest-6: X-5s4Th1TxS2RWSl29P2dg + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-1: aBnD60w7TUmh8FPPty1nmQ + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-2: bb8krd0XT56lTS2BnOiZMw + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-3: eoqEk5siTieeRLtuj9HRnA + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-4: TjSCDaJgTuabAO2Wf4y9Dg + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-5: F4vGs3heTsSNi15t0cLqow + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-6: XpMHmXOcSPqGjQbWkQCRjA + test-linux1804-64-qr/debug-web-platform-tests-swr-1: eb-1gbUPQj6X0OkiT3DnSQ + test-linux1804-64-qr/debug-web-platform-tests-swr-10: S_m4LAngT1S-0nGCR0JWsA + test-linux1804-64-qr/debug-web-platform-tests-swr-11: ZklpA-mmTP6Vky0nARfnxA + test-linux1804-64-qr/debug-web-platform-tests-swr-12: b1Xv2F82RM-e_XIH470vOQ + test-linux1804-64-qr/debug-web-platform-tests-swr-13: Me0LxIjvR-qTx_KNnEspTg + test-linux1804-64-qr/debug-web-platform-tests-swr-14: Ib5pgZsCQ0OsNHOggLWirw + test-linux1804-64-qr/debug-web-platform-tests-swr-15: SDIySI15S9-vOG2BI_jI9A + test-linux1804-64-qr/debug-web-platform-tests-swr-16: ajF-51LeTU6w2keTeVgN3A + test-linux1804-64-qr/debug-web-platform-tests-swr-2: SxwR_qSYTLqTC1Fgj_TXcw + test-linux1804-64-qr/debug-web-platform-tests-swr-3: D8kafLPOSkG4i8X9_LEe1w + test-linux1804-64-qr/debug-web-platform-tests-swr-4: I5VMhlkWT0W-YJBUWZELiQ + test-linux1804-64-qr/debug-web-platform-tests-swr-5: IjN-051eTLKts3V7ZeI7aA + test-linux1804-64-qr/debug-web-platform-tests-swr-6: C6jn8Hd8TWa-rqN3rIPoLw + test-linux1804-64-qr/debug-web-platform-tests-swr-7: GgPz9lpPRae454mzsKi6AA + test-linux1804-64-qr/debug-web-platform-tests-swr-8: IrDwA_rMRhWeNR_LvtPERA + test-linux1804-64-qr/debug-web-platform-tests-swr-9: P3Qcoo3sSRqghFh_GHyTKw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-1: I_jBYoh6RHeITQwWEyT9Ww + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-10: a1GoA8FdQQGDInQYK9lIVw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-11: UGJyLfK6Tliq_ZicRkYMrA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-12: I054DRtbQIat49YY1E3R-Q + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-13: ffSJD8tFS2SXBU1HgonUjA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-14: VhtjkYEGSdGyzXcu3MBcBg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-15: X00ZpyOCR3WXguTCUMPzjQ + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-16: bjCaxOS7Sh6aONPV28v0tA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-2: JxkDkAbsQYe1wuGs4SKtrA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-3: bpQEEyiuSiG9awiH2KA9iA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-4: JRy5rUQ0Smi3s5EoUD8hnQ + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-5: JZJ8yQDMRsGW1vp9h2ZhRw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-6: YLxrTyQqSwmlIvo_802yCg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-7: JNR34W-jTQyZgusshCX6GA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-8: aWl3SpZ-T6uTk6zlnOZ1Hg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-9: VW0o4bqvTXCsqF2drXpYoA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-1: Xl-OPVbnTo-MP10N7FoJQA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-2: Nrqo_AgiRSGd_cBneA5i3w + test-linux1804-64-qr/debug-web-platform-tests-wdspec-3: IPseSKSaRy-r50sb34LXaQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-1: RstqACQWTp6iM0BZiE9ApQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-2: JeFfKs_SRISIt8tCC84DFg + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-3: ejQ7WOWlRjW1J4jAgpVkRw + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-1: awKSHt5MRaqV3TW3G6EBXA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-2: TvuPLc3-SQiDr9zk8nrzOA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-3: Do5K0VKKRVWE_90vcSScwg + test-linux1804-64-qr/debug-xpcshell-1: Iyc7aeQrSfa52de4Bw9XpA + test-linux1804-64-qr/debug-xpcshell-2: dn1SLs6hTieoCiim9OkOsA + test-linux1804-64-qr/debug-xpcshell-3: dvgyY1WSS9Sfr8PQzA7RUQ + test-linux1804-64-qr/debug-xpcshell-4: d65CY9PkScuZV7wpBueQJw + test-linux1804-64-shippable-qr/opt-cppunit-1proc: fGDVkfH2SKSjq7JFC4PNZw + test-linux1804-64-shippable-qr/opt-crashtest: bts8QprJTmWdMeP00AzBbg + test-linux1804-64-shippable-qr/opt-icecat-ui-functional: Oc5keNJ5RimOzoX5QPnvYA + test-linux1804-64-shippable-qr/opt-gtest-1proc: HQGtOap0SVW60TqZokkuLg + test-linux1804-64-shippable-qr/opt-marionette: CaArIYDcT3-8L3NhuxIk-Q + test-linux1804-64-shippable-qr/opt-marionette-headless: BV6MQBWHTAeAf8HdCoSztw + test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: NWgP7JJSTpCtPgP5ulFphw + test-linux1804-64-shippable-qr/opt-mochitest-browser-a11y: KOxsIj8TQJ6sua9aMK-m3A + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-1: XDhxGBdISMOUc5Q3nirgEA + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-2: VJ2i0S-lSjOtdzjWnLEBfw + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-3: WAk4peKVQQSr36lVz4a0Ag + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-4: W5j_jZQHRE23AXD9-nfJJg + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-5: OjMCcFXURXesOrwXNb9Q5g + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-6: VtgFS7ZuSFCgKGtNVoiG5Q + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-7: FGXbdegKT4K-1gg1PHFLAg + test-linux1804-64-shippable-qr/opt-mochitest-browser-media: KrDykprIQ9OEGJ9sDxNAwA + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: RBoCD3M3RcOenlWM4snySw + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: a1Rlcq-MSve6cYp0V3iBKg + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: Y61OzZFJRcinEnRYyEW17A + test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: VCWkcrkcTMeltmKhiqzyvg + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-1: YBuqNx4dQii0QbN-LqkMgw + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-2: BG9EYc7QT9KbYfrs5zBbFA + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-3: YcIOHocjR0ag-J_XCCmjow + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-4: AoRspCL9R6-9WZaLXyHQwQ + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-5: ZC2WrzmzSO2H8uJ_yaM7Ig + test-linux1804-64-shippable-qr/opt-mochitest-media-1: bdOqbmr7SiKPYvqmo_0-rQ + test-linux1804-64-shippable-qr/opt-mochitest-media-2: GWLDuCvARg-W2f-mccAMgw + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-1: PrxOyLqbRJGd1nvvYuDQrw + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-2: c9C8fUFxQpGoZk96xxciuQ + test-linux1804-64-shippable-qr/opt-mochitest-plain-1: M-QQsUjMQLCBFRZWvH_hAw + test-linux1804-64-shippable-qr/opt-mochitest-plain-2: EaeXgFySSCe1-lBxtHkpxQ + test-linux1804-64-shippable-qr/opt-mochitest-plain-3: cX17h8rcQSqWBAPRCQMWmg + test-linux1804-64-shippable-qr/opt-mochitest-plain-4: Ntqo8JqTSRCPJxd5No1v4g + test-linux1804-64-shippable-qr/opt-mochitest-plain-5: YOX6WJ-BTYO7fck7x2V3Rw + test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu: b3Ak4xchS1e20xs9fdukmg + test-linux1804-64-shippable-qr/opt-mochitest-remote: InP5kt0GTEKUP_e-Fc3g8w + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core: Yi9bUEvSR7Wd6SyOGH3Iow + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext: UsNDXfYVQhanzMsFiLqmUw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core: WQu748n2QNeCIwNsi_C5Xg + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-1: Cq0R0PgnQySRy8_8LaYMFw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-2: deNzSIDCRNCK5rEiz7QU3g + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-3: VL8TdwMIQtup6qTBWGVY0g + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-4: UZ2lA_egTCG91bFcBQMGGQ + test-linux1804-64-shippable-qr/opt-reftest-1: Y-4EwvsRS3qn53JOH0icmA + test-linux1804-64-shippable-qr/opt-reftest-2: QsY0t5SURDaD7JsOrL-6cw + test-linux1804-64-shippable-qr/opt-reftest-3: CtJEhtoYRg6TNuBxIffGoQ + test-linux1804-64-shippable-qr/opt-reftest-4: Q1CLQK2fThafRylXPxdXwA + test-linux1804-64-shippable-qr/opt-reftest-5: GdgleKBCRpygtbd5EyQsYg + test-linux1804-64-shippable-qr/opt-reftest-6: FTOmYz9RSw-w-izNFIp8_w + test-linux1804-64-shippable-qr/opt-reftest-7: fQLB5_SeSTOvEMRcgWkAYQ + test-linux1804-64-shippable-qr/opt-reftest-8: N0KWZwB7SEqPDeNDtLci3A + test-linux1804-64-shippable-qr/opt-telemetry-tests-client: W--1trQbTR2NHPTxSpBgAw + test-linux1804-64-shippable-qr/opt-web-platform-tests-1: aLU9phiNSzqtCiInQSQOOA + test-linux1804-64-shippable-qr/opt-web-platform-tests-10: GGlzjnZFScS0C7RW3aQD8A + test-linux1804-64-shippable-qr/opt-web-platform-tests-2: ZJWDmdylSo-iKEmCwGTscw + test-linux1804-64-shippable-qr/opt-web-platform-tests-3: WpDIe685TzeRFAPNDXQ5CA + test-linux1804-64-shippable-qr/opt-web-platform-tests-4: eDkIKPeIQoKnGoxqNoE_jg + test-linux1804-64-shippable-qr/opt-web-platform-tests-5: CuB_4-K0RUuHpuU2jrcqTQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-6: M2OA8ZiYRvSUYOjXQfuKIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-7: IsQ0DV4rQheswfP2vfCC8g + test-linux1804-64-shippable-qr/opt-web-platform-tests-8: HP1Yw7v1Q_abNRm-mZhMmw + test-linux1804-64-shippable-qr/opt-web-platform-tests-9: VzLBebzAQNSU_1_xjSUz_w + test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest: Mu-pqZTJQVqf4Z6lzzhwNg + test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest: E14bJMwzTJa4iNOEsP1WIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1: PlqaMULOQ6OCug0hiAaLyw + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2: ImaWFqlMSnSM815B7QmwAQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3: I-0vmBghSjeacdfVPG3cEg + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4: fV5h5K3JRZa0_roRaPRwew + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1: dU_4lxrLTKuaUuEQmiKVVw + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2: SYfNN-ZGSaamXfYJeU_41A + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3: UEgKLZXDT_WubjWBQASccw + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: BjoGlKKOS6qgg43kZjNQ-w + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: fBsZ3Hl6RqS19LX4ebFY1w + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: XU0LATHeSr22cFKB2Kbanw + test-linux1804-64-shippable-qr/opt-xpcshell-1: Hhq83W_mTFShoY8wCdS5vg + test-linux1804-64-shippable-qr/opt-xpcshell-2: VDyM5lIDSry3ofQUdTEhiw + test-linux1804-64-tsan-qr/opt-cppunit-1proc: O59b2c75RyWzvs3rIYLyCQ + test-linux1804-64-tsan-qr/opt-crashtest-1: aeMwYM28TkOtR34vjQAwuw + test-linux1804-64-tsan-qr/opt-crashtest-10: UuU6P0j6T42ijXK51hWmFw + test-linux1804-64-tsan-qr/opt-crashtest-11: IpedHlnHTCaYgx7fRW4NQg + test-linux1804-64-tsan-qr/opt-crashtest-12: cFgY-prnRl63GA_4ZSqbng + test-linux1804-64-tsan-qr/opt-crashtest-13: Jt4ItLpLT4SbyLEMRyY8nQ + test-linux1804-64-tsan-qr/opt-crashtest-14: c4MORfzHSLmrxNCsEZq4Qw + test-linux1804-64-tsan-qr/opt-crashtest-15: CQCwJ70gQROj7SgJf2ZDHA + test-linux1804-64-tsan-qr/opt-crashtest-16: bADvN2tGRbqGFHKxPjSaZA + test-linux1804-64-tsan-qr/opt-crashtest-17: EHi8_wrgSG206PhpZm2stA + test-linux1804-64-tsan-qr/opt-crashtest-18: KDEcwHRTRZ2o-p8EQJ525w + test-linux1804-64-tsan-qr/opt-crashtest-19: HjN379jFQhmWg4GC-l-sXw + test-linux1804-64-tsan-qr/opt-crashtest-2: B7I6W3TSRbO7JT9Vj4q6ZQ + test-linux1804-64-tsan-qr/opt-crashtest-20: dCQDqnTKRjG31YMmORbZlw + test-linux1804-64-tsan-qr/opt-crashtest-21: JpNIKawPQ9i8a7vwHN7dtA + test-linux1804-64-tsan-qr/opt-crashtest-22: GmDK0K3XQk2Hp-GM5YpbvA + test-linux1804-64-tsan-qr/opt-crashtest-23: IOlLTE52QqqMciMccsxzyw + test-linux1804-64-tsan-qr/opt-crashtest-24: JDMcUCmHQ6Wp84cckMbdkg + test-linux1804-64-tsan-qr/opt-crashtest-25: bl4EhgdISZGfGotuyqKYbw + test-linux1804-64-tsan-qr/opt-crashtest-26: MNmI56qhRhO5oQQu8-Wpjg + test-linux1804-64-tsan-qr/opt-crashtest-27: bdgVfQ8YQPO7xTPJZEWL4g + test-linux1804-64-tsan-qr/opt-crashtest-28: UFIBLidzQz2BHpQX4GXDQg + test-linux1804-64-tsan-qr/opt-crashtest-29: I3ze2RJ_S1SQ3PUmpPl1aQ + test-linux1804-64-tsan-qr/opt-crashtest-3: Bjm5id_eTvqi2CTa74cWRg + test-linux1804-64-tsan-qr/opt-crashtest-30: IRVyghjOTny5HyLGB4TjPQ + test-linux1804-64-tsan-qr/opt-crashtest-31: QUQdXiq-RaaBBrNc4VMv1g + test-linux1804-64-tsan-qr/opt-crashtest-32: Z6J1tgMdROKwmt17EhIoDw + test-linux1804-64-tsan-qr/opt-crashtest-4: drJJPQxHQoeiRWvPG8LoFw + test-linux1804-64-tsan-qr/opt-crashtest-5: UgfjS8xYRwO1gDF4F1kbIw + test-linux1804-64-tsan-qr/opt-crashtest-6: UzYxhujTSTamKEQsvcMyAg + test-linux1804-64-tsan-qr/opt-crashtest-7: Ewh30O1HTYG6L2GF1vfhBw + test-linux1804-64-tsan-qr/opt-crashtest-8: V-fx37lRRDmDq38gZlrBog + test-linux1804-64-tsan-qr/opt-crashtest-9: IPuflh2mR0S717wwGpC1Cw + test-linux1804-64-tsan-qr/opt-crashtest-swr-1: LFjWXqjJQ7SUd4KkQnSyxA + test-linux1804-64-tsan-qr/opt-crashtest-swr-10: RAbokOOVSR62bLx2xCzm6w + test-linux1804-64-tsan-qr/opt-crashtest-swr-11: OjE32F30T-iImaNErwPOXw + test-linux1804-64-tsan-qr/opt-crashtest-swr-12: PPvBesdARu-PnlQo6h1Ltg + test-linux1804-64-tsan-qr/opt-crashtest-swr-13: HsgilTdHQOKgr2wbWz2sYg + test-linux1804-64-tsan-qr/opt-crashtest-swr-14: bsJE4srnTBmxIDraDvEGbQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-15: ZeNbPC9hSiSE8cc5SwKB9w + test-linux1804-64-tsan-qr/opt-crashtest-swr-16: G-70QCZAQP2Th2JqCgM70A + test-linux1804-64-tsan-qr/opt-crashtest-swr-17: fwLFaghqSPGxJVYgkc-MOA + test-linux1804-64-tsan-qr/opt-crashtest-swr-18: FJ_u-GpsSnqRAe1d87Bilw + test-linux1804-64-tsan-qr/opt-crashtest-swr-19: YzghSYvLQae3IbtLjpE6eQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-2: UgkWoA0FTSaO-r4E03Xueg + test-linux1804-64-tsan-qr/opt-crashtest-swr-20: f3v8WKU6Rh-gqXkr1uxXBA + test-linux1804-64-tsan-qr/opt-crashtest-swr-21: awxFppGESEOCZZvQiZl5WA + test-linux1804-64-tsan-qr/opt-crashtest-swr-22: NSrSk2rXSvyE8MQMH-hjSQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-23: PGtlVvd3QKefq4anuWvf_Q + test-linux1804-64-tsan-qr/opt-crashtest-swr-24: DvPC7FBHToe24xUv0S_2SQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-25: G0hNueDyQZGd-jPoz4IgOA + test-linux1804-64-tsan-qr/opt-crashtest-swr-26: GY3q_lcKR8OjTS-x7Eyd9g + test-linux1804-64-tsan-qr/opt-crashtest-swr-27: YKD2Rxc7Qh-_nCSXSuDSqg + test-linux1804-64-tsan-qr/opt-crashtest-swr-28: bdINsHrNQa-0xBaKoeNWFw + test-linux1804-64-tsan-qr/opt-crashtest-swr-29: VfGA9b3dRoqW4gRz6eRfuA + test-linux1804-64-tsan-qr/opt-crashtest-swr-3: Gh-kaArYRmKaH5fQiQqFEQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-30: fTUsa3-nQLiUndSe3J7_bA + test-linux1804-64-tsan-qr/opt-crashtest-swr-31: cDVkbFstRiKzCaMHDJqWTg + test-linux1804-64-tsan-qr/opt-crashtest-swr-32: TlsHsrxWQaGC7sui_nSlYQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-4: UjqDeNAcQq6apJhN4PJi5A + test-linux1804-64-tsan-qr/opt-crashtest-swr-5: RyPFNt9RTF2vS0bsNTG8FQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-6: IcihUw-vT5mXpk-MsojXxg + test-linux1804-64-tsan-qr/opt-crashtest-swr-7: bXKY-BHVQdy-lbVidrasHQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-8: CeFf-O2xTnOobiGPOHyA0g + test-linux1804-64-tsan-qr/opt-crashtest-swr-9: BuzMnnljS8uy2m3GDCN7TA + test-linux1804-64-tsan-qr/opt-icecat-ui-functional: Y-6dRBOEQY2NePRsjZJiHg + test-linux1804-64-tsan-qr/opt-mochitest-a11y-1proc: aB3UPhRLSk2gweLPPZrWMw + test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-1: Vc9TK2zKT-Gxk-twBl-b6w + test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-2: aL1sZURmSyS8MRUS1X-cSg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-1: CEBJS6-YREuXTp9pv1oXeg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-10: GmupOCr1T_CE5mX9CHrjvg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-11: E9SB82wyRBObwiR_J_OTyA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-12: S9eLWpyrR0ugRsKGrbYcvA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-13: OCZCPT5QQh-ewHsle38nTA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-14: fBGclqNqTCG1tf7Ff8q-FA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-15: FHoXlDJYTpehwdKeX-8OYA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-16: O_NxYFd3TACGyLU1ptX3UA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-17: LO9UFcVySEq1rx6KmYgaoQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-18: UIPIIQhJQuq8CJDBV1eXuQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-19: QTKtzdMBTP68j8k9v4Ky5A + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-2: ItkZc8m2RTCgcX2D0M0AZQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-20: Miydwhb2Rv2NdsNazeYRGw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-21: NClgBoMLQMCj9dJ7wT1Dvw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-22: Af1N7fdoSXyXCuYsWynexQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-23: GWQy4k_BQT2GLgtLw-0BvQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-24: bxIu_7loSlOwCFy8JYtxGw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-25: bMWYeAdOSomtlEV8wb2krg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-26: JUKyxpnBTXe0Y1poWa-d1Q + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-27: HogFA8F4TauuCNxjduhL-w + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-28: Y807F_GgTd6jH0h5xvoiBA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-29: BxaXfqa9TOqXwKdEvmpCZw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-3: XB0iT_DaSSmI3RIN25CFiw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-30: A3gC3Vt9QMuIdEVMZcFqxw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-31: DMDdhyfTT_-QJY10AHYqRw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-32: LJ0j8Cc5QU-ktrO-jgll1A + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-4: CVoQ9BVeSVuy5XEu6y7Kaw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-5: XaIDfVuaQM-S9qEWeg8Gmg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-6: QTt10hVeTwOB8zt4c0ypNg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-7: ZNrXIOcdRH2kajlQCCExNQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-8: FO1OvhpQQt-6ajB_tNnnpA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-9: YbG6wo5nQzqsbPnFjF7PmQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-media: Bu-Ic8K3RT2QIVmtksAmSg + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-1: FuwgBRiqT-q3hyxOEiNuDw + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-2: GMGXcZw4Sxq3UgnqZ5djFQ + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-3: S2VZfPdrSOKWKtbMOL4T9g + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-4: QuPN7GIaSLGDdiogXhheIw + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-5: FB7LO9TuQqSEvgAoYz-J8Q + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-6: MUXj0_K6QGyc-PfKA-kSjg + test-linux1804-64-tsan-qr/opt-mochitest-chrome-gpu-1proc: eVftuoH2RHu9_lpI5ifZgQ + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-1: QkliPd1rSPyEPIGwg36hbg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-10: dAsUOhUvTbCBn0ajpA-Rag + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-11: eNH57RaaSGG5uXAQN5IlCA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-12: cRlrSMPiQ3SheyaoDeiuaA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-13: R-TV48WVT6GDOB02vrQ1NA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-14: fmW8VBA2RteDIDFq1o28fA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-15: Kv16unu2QzaJ8YGunfGy7w + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-16: fBXNmY4UTV60h63VStp8Yg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-2: Q5NPl37rRJOJIdk7d4-tPg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-3: QnRdQHKoTM-lTHSmBFTuYg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-4: TPLA5vdgT-u6isLSsvs4qQ + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-5: dt1-OVdSTeKUJZGBidRV8w + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-6: B-IyA1ZCTh-y9zcNg0nAoA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-7: PQXKUTfYQvWUXCuPU1m3Hw + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-8: RLiYQ_zjQ7WJ3vZ54goSPw + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-9: cpja0lC_Tq242ovQS6bqhg + test-linux1804-64-tsan-qr/opt-mochitest-plain-1: WoitlyRVT3GgxScLocFghQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-10: H0J1mtyJSJWg5w1QB2922w + test-linux1804-64-tsan-qr/opt-mochitest-plain-11: Ds8zhJh2TXqzgi73X1MHug + test-linux1804-64-tsan-qr/opt-mochitest-plain-12: cTZbhDaKSpeA6uHEK4_YtA + test-linux1804-64-tsan-qr/opt-mochitest-plain-13: Jukk4U6BQ2SN0sOmkN9dDw + test-linux1804-64-tsan-qr/opt-mochitest-plain-14: YcRuvxtgRB2t3_rlo6KTGA + test-linux1804-64-tsan-qr/opt-mochitest-plain-15: O4u9uW-oS4WHG3U34avZPQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-16: f3IRJSBkR3WwYqgoVrFKAg + test-linux1804-64-tsan-qr/opt-mochitest-plain-17: NQx59fl9TzqI20lgsTVU5w + test-linux1804-64-tsan-qr/opt-mochitest-plain-18: WhH0QPaASVawPvZAQgp-mg + test-linux1804-64-tsan-qr/opt-mochitest-plain-19: av8jegFOTOSC2LesTgTmrw + test-linux1804-64-tsan-qr/opt-mochitest-plain-2: F6HBZWytR0aEKbV5Efn0gw + test-linux1804-64-tsan-qr/opt-mochitest-plain-20: BkSK7c9lSy6HGvKRB7-ctA + test-linux1804-64-tsan-qr/opt-mochitest-plain-3: HlGPYtFdTSa2sjgr5BsYNw + test-linux1804-64-tsan-qr/opt-mochitest-plain-4: O6G5FWQXQBWggPT_9CdnUQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-5: PO6lISa7TG2ALOf4qzU6Tw + test-linux1804-64-tsan-qr/opt-mochitest-plain-6: XNHgxQ6mQ36naWDNuSAE5w + test-linux1804-64-tsan-qr/opt-mochitest-plain-7: bl8NNu5JShOaRfSkjtCBmg + test-linux1804-64-tsan-qr/opt-mochitest-plain-8: PcxsA20pTJesBl2xLLbItA + test-linux1804-64-tsan-qr/opt-mochitest-plain-9: YzBBAe0HSkuSfGaJd_rVJg + test-linux1804-64-tsan-qr/opt-mochitest-plain-gpu: ZqxLQ2D8QrqERXhmQw0j6w + test-linux1804-64-tsan-qr/opt-mochitest-remote: dxoIB151T1CIPexhdMZDQg + test-linux1804-64-tsan-qr/opt-reftest-1: apy9Xf4uQhWz313Y_Cd01A + test-linux1804-64-tsan-qr/opt-reftest-10: CGVT3Q_tQvOEAKGMywiXPg + test-linux1804-64-tsan-qr/opt-reftest-11: NsofnNCaRJmqMUjBSxGOpw + test-linux1804-64-tsan-qr/opt-reftest-12: Cj-BP1NATKGXlUQXgVFIEw + test-linux1804-64-tsan-qr/opt-reftest-13: eK_bWNwMTWKR5pLPvpDKKA + test-linux1804-64-tsan-qr/opt-reftest-14: XMZHuWajSU-9skZzymGnvw + test-linux1804-64-tsan-qr/opt-reftest-15: Dn3sEXnJRfSBYD0TyJe9Ww + test-linux1804-64-tsan-qr/opt-reftest-16: be7VMbUGTBeKEy2SRphaXg + test-linux1804-64-tsan-qr/opt-reftest-17: XAEfhMxYQL2h0pzgqrsn8Q + test-linux1804-64-tsan-qr/opt-reftest-18: W7vWDyggQ8KxaQtiPPRL6Q + test-linux1804-64-tsan-qr/opt-reftest-19: MwMs8eP-R7SdVvfPaJOWiQ + test-linux1804-64-tsan-qr/opt-reftest-2: Eizd0rA1QxyKIH5cvjkSUA + test-linux1804-64-tsan-qr/opt-reftest-20: QDn1xcfHTlansWkvbVjSSg + test-linux1804-64-tsan-qr/opt-reftest-21: PvoYi4MET3CoR6oLQjjbvw + test-linux1804-64-tsan-qr/opt-reftest-22: CetindFGTtCGhLqPU-c_2A + test-linux1804-64-tsan-qr/opt-reftest-23: a2PycrGKQZKMrnkW6A86Jg + test-linux1804-64-tsan-qr/opt-reftest-24: B8r0eG5eTK-wJUz3Bsg7Tw + test-linux1804-64-tsan-qr/opt-reftest-25: YCz3nhxiTsyve0dd_BQW0Q + test-linux1804-64-tsan-qr/opt-reftest-26: ZQn8NhiXR3KVKeTwtWGg4g + test-linux1804-64-tsan-qr/opt-reftest-27: fRwmix16Toqt3wef4x8jKA + test-linux1804-64-tsan-qr/opt-reftest-28: XOHpo_buTNmuENICO4qynA + test-linux1804-64-tsan-qr/opt-reftest-29: ZOma35ccTSmY6_a81YnHrA + test-linux1804-64-tsan-qr/opt-reftest-3: bt8YwkSpRv-QQfk8WlYiiA + test-linux1804-64-tsan-qr/opt-reftest-30: XaedyYVwSZ6MSE8yoWtRww + test-linux1804-64-tsan-qr/opt-reftest-31: KZTKinoHTLa67arCI64mHQ + test-linux1804-64-tsan-qr/opt-reftest-32: ZtSHPx19Q2W5p8Q2h0rNOQ + test-linux1804-64-tsan-qr/opt-reftest-4: PEYwPUnmSn-rbdLLvqV8qw + test-linux1804-64-tsan-qr/opt-reftest-5: Mq17GDksTnOOf-qfS9FH8w + test-linux1804-64-tsan-qr/opt-reftest-6: Hr3qoYfDQq-tISokAUNGrw + test-linux1804-64-tsan-qr/opt-reftest-7: fDupYs3VRruHdL20As_HVA + test-linux1804-64-tsan-qr/opt-reftest-8: LfqDidutT82b2jtb43mBWw + test-linux1804-64-tsan-qr/opt-reftest-9: eFip0ztlQQ-WXe-hOjIg1g + test-linux1804-64-tsan-qr/opt-reftest-swr-1: OuSrKpR7RWGov-4j89tC5g + test-linux1804-64-tsan-qr/opt-reftest-swr-10: eU0AStz8T4yKTc8MgB3gMw + test-linux1804-64-tsan-qr/opt-reftest-swr-11: UWEigh22S5mHN6T0SLXBsA + test-linux1804-64-tsan-qr/opt-reftest-swr-12: E5TmmNx3S-Oxtlxab1ZThw + test-linux1804-64-tsan-qr/opt-reftest-swr-13: EZvJ23oiQdqpTDXrGalLtg + test-linux1804-64-tsan-qr/opt-reftest-swr-14: UocCOvtxTh6dsFUMVnx2Hg + test-linux1804-64-tsan-qr/opt-reftest-swr-15: bVLVYI3bR5m1v8ntDl3-Fg + test-linux1804-64-tsan-qr/opt-reftest-swr-16: QZMpW9veSK2KiMKpHUOTig + test-linux1804-64-tsan-qr/opt-reftest-swr-17: c6Q4EcIkRZGjTs3RpCS26Q + test-linux1804-64-tsan-qr/opt-reftest-swr-18: QkSfBSdwQnS9zY6bhzxLwA + test-linux1804-64-tsan-qr/opt-reftest-swr-19: CL0c2fS1QjGVwGhJY1gxpQ + test-linux1804-64-tsan-qr/opt-reftest-swr-2: GVw5tfN9QdW-szR8ck9JIA + test-linux1804-64-tsan-qr/opt-reftest-swr-20: NhaNgFXfSKiNULCvCY-2zQ + test-linux1804-64-tsan-qr/opt-reftest-swr-21: W5QmCVDEQbOwX9b3D2QDrg + test-linux1804-64-tsan-qr/opt-reftest-swr-22: XSmMQ3MhQJm4P-eQgDHAiw + test-linux1804-64-tsan-qr/opt-reftest-swr-23: YHRTboerRHSw18O3-Ao_-w + test-linux1804-64-tsan-qr/opt-reftest-swr-24: HyW4bsl8QWOoSpTupOBPZg + test-linux1804-64-tsan-qr/opt-reftest-swr-25: FaqhoZ2kQoynEsVtLCXy2g + test-linux1804-64-tsan-qr/opt-reftest-swr-26: XPrBYplhTP-liXEhs-IaMA + test-linux1804-64-tsan-qr/opt-reftest-swr-27: eG5ni7wWT1Sab8ncsRQrAA + test-linux1804-64-tsan-qr/opt-reftest-swr-28: a8wc-n1sRquiipKtj9bYHg + test-linux1804-64-tsan-qr/opt-reftest-swr-29: DGZNxBoCTiyuoSteAIcJOg + test-linux1804-64-tsan-qr/opt-reftest-swr-3: SHQOl5oZR5qYGSUgWyRQtA + test-linux1804-64-tsan-qr/opt-reftest-swr-30: ILlUx29_R5qU4K20WoYH8w + test-linux1804-64-tsan-qr/opt-reftest-swr-31: JLXe8ypnQBS975kREE-0pw + test-linux1804-64-tsan-qr/opt-reftest-swr-32: H-DFb3cDSXGV5yT08og93g + test-linux1804-64-tsan-qr/opt-reftest-swr-4: bVhygEU5QhC6yjwztvenqg + test-linux1804-64-tsan-qr/opt-reftest-swr-5: Oq2xTu4QTWaPRbaMebUkJw + test-linux1804-64-tsan-qr/opt-reftest-swr-6: VnRD8SVWSv6DA24cgsLm4A + test-linux1804-64-tsan-qr/opt-reftest-swr-7: InJXH9YuSmOdFD1JirRlEQ + test-linux1804-64-tsan-qr/opt-reftest-swr-8: U_M7upTjS1iluaPeVHXFNg + test-linux1804-64-tsan-qr/opt-reftest-swr-9: GZqy31FmQv696-wSj-TI2Q + test-linux1804-64-tsan-qr/opt-telemetry-tests-client: SsLTR8NhR4iaWLKTBfEFlQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-1: QwxzGVpwTV6huxhSatLsHQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-10: LDXe0Z5SSlq--CKEj3ZmHg + test-linux1804-64-tsan-qr/opt-web-platform-tests-11: LyPW3JmPRqady6vyhzKWJA + test-linux1804-64-tsan-qr/opt-web-platform-tests-12: GNQ_yIGuTdebELp13bBTNA + test-linux1804-64-tsan-qr/opt-web-platform-tests-13: POU22p0kToKaL_WvmT410w + test-linux1804-64-tsan-qr/opt-web-platform-tests-14: ZEKgE-CATSORjAGYo6foTg + test-linux1804-64-tsan-qr/opt-web-platform-tests-15: LjXif5ptRGexX06GdKaxCw + test-linux1804-64-tsan-qr/opt-web-platform-tests-16: AEM4tOtoTpeGQ5_iiXT35g + test-linux1804-64-tsan-qr/opt-web-platform-tests-17: EE_LRefTQL21b37HIxU7kQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-18: O8e-KV76TNSAiLRMlpjWEQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-19: GvK7wQNSTq2H0O8KnxI2_A + test-linux1804-64-tsan-qr/opt-web-platform-tests-2: PeqqbhU9TTumrWU5pu7uTA + test-linux1804-64-tsan-qr/opt-web-platform-tests-20: d8geRmRsRCW8dmADq1IaZQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-21: BFFbgQfmQfC0G6bzitls4g + test-linux1804-64-tsan-qr/opt-web-platform-tests-22: NjZd5QdJS52-v5Jf63hoqQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-23: WdavIMKSSc6rmdP7feCbQA + test-linux1804-64-tsan-qr/opt-web-platform-tests-24: FmBMuRa9R76yvOjdBksiqw + test-linux1804-64-tsan-qr/opt-web-platform-tests-25: GUEO6oj_RV2tZS3i1XORuA + test-linux1804-64-tsan-qr/opt-web-platform-tests-26: cFkPyWw3QEOP5Qcsuo9j6A + test-linux1804-64-tsan-qr/opt-web-platform-tests-27: HMFbgBEgTQay0tXXxdc1SA + test-linux1804-64-tsan-qr/opt-web-platform-tests-28: Im1buX5GRxKzFq1CXCZNCg + test-linux1804-64-tsan-qr/opt-web-platform-tests-29: Q6ibgfuRTwGCbWe4x-DiOQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-3: eZUXrJ7jSfimCXdK6pLd6g + test-linux1804-64-tsan-qr/opt-web-platform-tests-30: Tm6NlzybQrCtmPXIkknt2Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-31: NvjctxrjQ5ON_fFPRcWtmA + test-linux1804-64-tsan-qr/opt-web-platform-tests-32: CnyAat36QDKYsf54jvZc_w + test-linux1804-64-tsan-qr/opt-web-platform-tests-4: dEyX6AJSSKe96C2417wjHg + test-linux1804-64-tsan-qr/opt-web-platform-tests-5: Gxpz0OaGTEuAm1S8v3AUQQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-6: Gw5e8cnYRLGTi-Kms8SbDQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-7: Uc55jHt4TUqGZFAGJZGdVg + test-linux1804-64-tsan-qr/opt-web-platform-tests-8: Y77XcfRuSxyhpF1-fgA8UQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-9: EvAaBEEMQly5KMxmsS1Dcg + test-linux1804-64-tsan-qr/opt-web-platform-tests-crashtest: Hy7pfNU1TyWlFT5UFjrWlA + test-linux1804-64-tsan-qr/opt-web-platform-tests-print-reftest: NYf2uPReQDuY4RGuD5mj5Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-1: AmRCJyn5SSu4MKtO_19pFw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-10: KP41sYkwRVyBHutcSvEHww + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-11: R6wwip0xSkqX-37IrUT0Uw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-12: ZmPPYUqJTAa-XxLTYyy_3g + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-13: S1T-XcrbS4WFgZeE93ZDxQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-14: QSyyzkf7Qr-dxDjFww3c4g + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-15: OufQ_HiiRuKfSmx6CoHumw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-16: NfFupmnUR2Wnr_RRu8yE8w + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-2: Dm3lNJGSTt6wd4HMSU9bdA + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-3: FegDmHZGT9iDZyIwIxfF6A + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-4: KHzE8g6eRbyxwC58xXyTtw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-5: cTTWAAhORm-YnklsglrXfQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-6: H-LGQeA4SqSZDZqspMDe1A + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-7: MEvytbiuTpKGpyOlm6Y1XA + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-8: AlRhLSuVRNOdJ8FB6kYE6Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-9: SwhhsRbhStCeZxSyOVD87w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-1: b3pdT_0XQ4-2mSlZhr9Ccg + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-2: BbxIwbGaQqa0hQbJoX6G8g + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-3: K_slGXPIQ0W9CF3leyxbxA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-4: Kzd9cDraRnijMtCHcfUnuA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-5: ONvedRvlS4awPR_OpVIw8w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-6: EtOy5ABgQSuHTL3J-mvY-w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-7: VhnxWYJ-QieNtzbdql2LAA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-8: ATNObfl3QiCX1ItN7fwSpg + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-1: PmBwZBthTp-KRHOzj9AiwQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-2: apSV_TSoREiqhYuLf22huw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-3: VltVOFGzQACdSQwROWqpKA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-4: ThH3F1crSaW5xxRrVkQa_Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-5: XJwQx9XwRLuO_M0QMv_nPw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-6: GARa4O0SSU6ZLrD-LpfNVw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-7: L9klzU7-RgOGGX99-JHtKA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-8: JmoC-2MHRLWfM50TCQknGA + test-linux1804-64-tsan-qr/opt-xpcshell-1: PX_BtE6GRkOHk4IPBxi8VA + test-linux1804-64-tsan-qr/opt-xpcshell-2: LqFx-4AGTwuQxAWd9sy7UA + test-linux1804-64-tsan-qr/opt-xpcshell-3: dp6NyDhZSEKANMRM445BHA + test-linux1804-64-tsan-qr/opt-xpcshell-4: MBAGxK4HRL--Sk5DtFWaPQ + test-linux1804-64-tsan-qr/opt-xpcshell-5: eqKAZfhjTsGM1yy4O6f2fw + test-linux1804-64-tsan-qr/opt-xpcshell-6: TJO6dnizQ-CKAScb3mGzdg + test-linux1804-64-tsan-qr/opt-xpcshell-7: AUqoxX6XRESNgoIu5dtUEw + test-linux1804-64-tsan-qr/opt-xpcshell-8: chBCzCGuQoS9ngKkB25ogA + test-macosx1015-64-qr/debug-cppunit-1proc: cathZtSHQDeNSo8XbRLGIw + test-macosx1015-64-qr/debug-crashtest: Yf2uI8k5TZqFfczxQp-_zQ + test-macosx1015-64-qr/debug-crashtest-swr: PwN8LfjBQIiferiA0PPWlA + test-macosx1015-64-qr/debug-icecat-ui-functional: BjCz0IoFT_uppliyo5ejAQ + test-macosx1015-64-qr/debug-gtest-1proc: CFB2Z5BsRbakMoKRbL052Q + test-macosx1015-64-qr/debug-marionette: FAzQP_b5RwCYzIARrKDYqg + test-macosx1015-64-qr/debug-marionette-swr: Gd21A-FHR3uqU1zvtpvbbw + test-macosx1015-64-qr/debug-mochitest-a11y-1proc: UBaSEbn-Soq9M0IB5HM_Qg + test-macosx1015-64-qr/debug-mochitest-browser-a11y: S3gt8dLxQKqCsNLn6GO3KQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-1: e3AUtgFxTV-RJm0MAbrAEQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-2: AVJJFjlIQK-jUcPmi1JBWQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-3: OWcv4HZiQ1iNn5Zvc5hziw + test-macosx1015-64-qr/debug-mochitest-browser-chrome-4: fs6PWnm9QryKwoxj092cMg + test-macosx1015-64-qr/debug-mochitest-browser-chrome-5: cvSxbXAzQRmjD2Gs5uT1og + test-macosx1015-64-qr/debug-mochitest-browser-chrome-6: CFFja-NQTOez6H7vDjlMfQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-7: Uns2HGRpReGjFR8GSvNktQ + test-macosx1015-64-qr/debug-mochitest-browser-media: X1wefVS7RTmj964pkC4icQ + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-1: PKBI5STWSU-Y1Y-dcaTY3A + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-2: YoQXqXaPQjq2zgsgf5BM2w + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-3: Vx7YNdgCSBW-wcOQK8jx5g + test-macosx1015-64-qr/debug-mochitest-chrome-gpu-1proc: SqLjV6fSQiahtY4PfaQzug + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-1: CeyYJWAXQLO2a3u_62D7XQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-2: I2qDV70hSSemYup0UD6ZHg + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-3: IUkXnbDrRlmsxt2bNfZBHg + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-4: TMI3Tyg6S_SuWmM1srcWUQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-5: Jhhe61SnQIic_mkN2aOP-A + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-6: IlVXSRCrSBqlCB-LMp1o9A + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-7: cIOtjI92TBKjnhbAq4XdxQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-8: fWLvg4NcS06VZ_KHTQ_bmQ + test-macosx1015-64-qr/debug-mochitest-media-1: WjoWFbjYTTCaJsOKvXaF4Q + test-macosx1015-64-qr/debug-mochitest-media-2: UtElOglzQoqSmSbTVDaNFw + test-macosx1015-64-qr/debug-mochitest-media-spi-1: URLWsLTMR1SDEdcLE_YZpQ + test-macosx1015-64-qr/debug-mochitest-media-spi-2: DGhKQmhiRImhsLMMzWcx2w + test-macosx1015-64-qr/debug-mochitest-plain-1: GVij-SftRgmEhE58_7a00Q + test-macosx1015-64-qr/debug-mochitest-plain-2: X56RF5VtQTaB_NetpZNZrw + test-macosx1015-64-qr/debug-mochitest-plain-3: acKqvIO8QduVzSCZoCuDrw + test-macosx1015-64-qr/debug-mochitest-plain-4: MSADRKmnQ2eHiKn3ZMy58w + test-macosx1015-64-qr/debug-mochitest-plain-5: BAFYn8FuRGGNa4XDDKIbXQ + test-macosx1015-64-qr/debug-mochitest-plain-gpu: SPuVzGPZQXS14RQvi_nJ0g + test-macosx1015-64-qr/debug-mochitest-remote: CxDo23VJQDOlCdFmI-R4pA + test-macosx1015-64-qr/debug-mochitest-webgl1-core: R4mV7CDqRrGl3vK7bI0WtA + test-macosx1015-64-qr/debug-mochitest-webgl1-ext: ZToIFK4mT8m_fWv5fQVIBw + test-macosx1015-64-qr/debug-mochitest-webgl2-core: IuCo2NETScGBRq1gBUBSug + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-1: amyj2GbIRFOaWocSRd5nJA + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-2: Uz54S4NpQ6ef9cBng1Davw + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-3: Xh0doBKhTgmAe4x-WYM68A + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-4: NAgF-XHvSQGaNfkZJk_BMg + test-macosx1015-64-qr/debug-reftest-1: TaiRJlXpQSypq7rJu_znOA + test-macosx1015-64-qr/debug-reftest-2: J7kMyZFvThudBwbsC_5vUQ + test-macosx1015-64-qr/debug-reftest-3: VlrlTJcaQJCnYMydsgH5Xg + test-macosx1015-64-qr/debug-reftest-4: edktZ-zeQvqzYAJg-9BRSw + test-macosx1015-64-qr/debug-reftest-5: c0FQ8v0rTEe9onTeCQCfVA + test-macosx1015-64-qr/debug-reftest-6: bx9LwBk1T5izHFpDuftlaw + test-macosx1015-64-qr/debug-reftest-swr-1: fJ-2wECaRAKu2cKVVc22sQ + test-macosx1015-64-qr/debug-reftest-swr-2: fmzEDOV_SSCrZqTm9mzvhg + test-macosx1015-64-qr/debug-reftest-swr-3: cTX9_TykSz-fbQrlUooAfA + test-macosx1015-64-qr/debug-reftest-swr-4: bSyHQShJQoacWcMkLgGkMw + test-macosx1015-64-qr/debug-reftest-swr-5: NWw1VjYqT0GebiS-mcDVBQ + test-macosx1015-64-qr/debug-reftest-swr-6: L66twFr5QPOsT0Ttt5Gr1A + test-macosx1015-64-qr/debug-telemetry-tests-client: e6WE3XdQRCe4d6ObAbAEcQ + test-macosx1015-64-qr/debug-web-platform-tests-1: TGGs4sMZTwiuYYm_5kBy4w + test-macosx1015-64-qr/debug-web-platform-tests-10: HB9dP-gSQy-9X-Bu2Cn56g + test-macosx1015-64-qr/debug-web-platform-tests-11: F1S5fmiLS926wuI8k7lAgg + test-macosx1015-64-qr/debug-web-platform-tests-12: G0TxgFNhSPigi7xKcnGdvg + test-macosx1015-64-qr/debug-web-platform-tests-13: FyPHga6ISoGCfVFNzOu5Ng + test-macosx1015-64-qr/debug-web-platform-tests-14: FN_NMv1ZRC-gg2Jq83ivOg + test-macosx1015-64-qr/debug-web-platform-tests-15: HpZOfcmOT8WvWBxnFDlBdA + test-macosx1015-64-qr/debug-web-platform-tests-16: WvieOW2IRha09bDifvBWoQ + test-macosx1015-64-qr/debug-web-platform-tests-17: MIUf7W3HQ72E12INfEfZ6A + test-macosx1015-64-qr/debug-web-platform-tests-18: TABkyLEcTKeUPkl3LzJvvw + test-macosx1015-64-qr/debug-web-platform-tests-2: B-yNenKUR8yErOoDBdyDBg + test-macosx1015-64-qr/debug-web-platform-tests-3: VZ3BWRHFTuexuKR4zMhbOQ + test-macosx1015-64-qr/debug-web-platform-tests-4: SdfKfDVlSqiaN4PTx-jl5g + test-macosx1015-64-qr/debug-web-platform-tests-5: R5hgONTbSLCR2kDI-E5iyg + test-macosx1015-64-qr/debug-web-platform-tests-6: EpdHa7NVT9W1HETLR2tb2g + test-macosx1015-64-qr/debug-web-platform-tests-7: aF7nVmTtQWCE5d1mPmc55A + test-macosx1015-64-qr/debug-web-platform-tests-8: K9kziwI_TSWl3JhYn11anw + test-macosx1015-64-qr/debug-web-platform-tests-9: PzYAoZQ7RGW2nUQ21I29cg + test-macosx1015-64-qr/debug-web-platform-tests-crashtest: HNd-Om_RQ_iXJSgL6xw75w + test-macosx1015-64-qr/debug-web-platform-tests-crashtest-swr: AGDbTyRwRoq22cqYyjWDVQ + test-macosx1015-64-qr/debug-web-platform-tests-print-reftest: AVIJXxlgTcqKsC4RB3TF8Q + test-macosx1015-64-qr/debug-web-platform-tests-reftest-1: F2g6XW2AQmK2f3n0cTzB0Q + test-macosx1015-64-qr/debug-web-platform-tests-reftest-2: brnRWhSKT82gPVjfky280g + test-macosx1015-64-qr/debug-web-platform-tests-reftest-3: RuzHWeykSpe02Lbpc7Q39A + test-macosx1015-64-qr/debug-web-platform-tests-reftest-4: TMhYO1MIQx-RVfBIMCo8Cw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-1: DPhQvdd0SUeMlHF2XuVsGA + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-2: EBKHGziyR-2r8pvZP0pvvw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-3: ELeuP06nQVKYWZZcujrERg + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-1: PSUO28KEQhi5fuxwxYlV7w + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-2: Scvzh_KqTFa1810k3soBLw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-3: IbV-cq4fS0GzmEnTRq2IRw + test-macosx1015-64-qr/debug-xpcshell-1: SYq8xSADSD2rchOE1wxyYA + test-macosx1015-64-qr/debug-xpcshell-2: bxz6HwovRsauydAeczCRrA + test-macosx1015-64-shippable-qr/opt-cppunit-1proc: B6HInIseTNKgSdZ2Ps1LVg + test-macosx1015-64-shippable-qr/opt-crashtest: CiYTbP30Sj2JJmnvPrUx3w + test-macosx1015-64-shippable-qr/opt-icecat-ui-functional: V80wgUlvT4uF1HpyQD26Rg + test-macosx1015-64-shippable-qr/opt-gtest-1proc: fX_Kkq_3SmeqJxNJtDoFjw + test-macosx1015-64-shippable-qr/opt-marionette: BBCnVoOYSQO9p1oA4_lPog + test-macosx1015-64-shippable-qr/opt-mochitest-a11y-1proc: fvA9Y3LhTY6wk9Hq0OMloA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-a11y: d2L9aroLQdauWDyzli_zaA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-1: fcssjF4dTCab6AtDxnDgFg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-2: cukdc3ejS7mPEUMuf8VJLA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-3: VWcPNKOtSSmSIHze1SV6Yw + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-4: YtdQcHnbROuWyAzh8Ofzxg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-5: H6BEVYkvSDOj-G83zNOVXg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-6: HrhJ-9X2RmmzLuAjFntKUA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-7: GWx3n2_HQc2EdJxFRVyUDw + test-macosx1015-64-shippable-qr/opt-mochitest-browser-media: Po31MBi1SZWjD8qZqabDGQ + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-1: BGoKI1RrQqycLAUFbXET_A + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-2: PrLapc3uSEOCvTu4dwtWIw + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-3: O7S4OVLXRviYa3RETqm2_A + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: X9DSgfuZQSu3Y8RIOKucQQ + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-1: ETL8M6HDQ7q8zINqSStWnA + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-2: ChnATJAORvW-aQyIKjdVVg + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-3: dGHf8WYlRPGkw5qXEfwIsw + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-4: IXKKUa7CRUC9R7MjedpGPw + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-5: L2ciCGt4RYKURmmQoOnQwQ + test-macosx1015-64-shippable-qr/opt-mochitest-media: HSwMaYylTuCMoz4C2-jn_A + test-macosx1015-64-shippable-qr/opt-mochitest-media-spi: MMj-KffaSkOpM-U2DtFqJg + test-macosx1015-64-shippable-qr/opt-mochitest-plain-1: N-uLoWChRiuy5TvMc4laVQ + test-macosx1015-64-shippable-qr/opt-mochitest-plain-2: EtwfmoclT5StJHHq4Tag-Q + test-macosx1015-64-shippable-qr/opt-mochitest-plain-3: Uts9_F9GTxCUgKQlV9e92A + test-macosx1015-64-shippable-qr/opt-mochitest-plain-4: CjWjn5yLR5mzYwhJt2GWqQ + test-macosx1015-64-shippable-qr/opt-mochitest-plain-5: fXNT0YMsSMi2CPzcqM50xw + test-macosx1015-64-shippable-qr/opt-mochitest-plain-gpu: Qux5G90kSV6FEk5cdf32XQ + test-macosx1015-64-shippable-qr/opt-mochitest-remote: GlsnJljyR8i0U6TcHgDCdg + test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-core: bHaAcyVFRq-UAbQ0Q7MCVQ + test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-ext: Z5F4ybaGR-ewrQ68vU2OBg + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-core: XJAkIB2oQ0WfKltt5kMNtA + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-1: Stw0EMTDQjORYcl95w5iFA + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-2: Ci0T8wwLRlavNp26tdi98w + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-3: GUl-Zty5S0Kk6Q-2L89M1w + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-4: Sy9OetNjTzKn1ZAmjNtYig + test-macosx1015-64-shippable-qr/opt-reftest-1: II-3__SZREqh8_OxLVWZQg + test-macosx1015-64-shippable-qr/opt-reftest-2: ZlkGyUa3TGWay4YTloi7gg + test-macosx1015-64-shippable-qr/opt-reftest-3: YO8MeZUPTu27_t4rSq5T8g + test-macosx1015-64-shippable-qr/opt-telemetry-tests-client: V3h2Vj7gS0qsgZTyFKVQnw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-1: RzOPB6m6RkqAtjYy0gRGZA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-10: ELlwRF82R2SoWk4V29jXoA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-2: Oa1WXdFnRXWbX4X_71relg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-3: THbyBieOSb2a0MEJdIuU4g + test-macosx1015-64-shippable-qr/opt-web-platform-tests-4: W-OsdRpOQNWwzuEbBj5dTQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-5: ScNWSsJ5Q12FPlAZrd5r3w + test-macosx1015-64-shippable-qr/opt-web-platform-tests-6: bNvgKWTvTj-tChbOBCp8IA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-7: Nczz4we6SoujbQeYIUhNQA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-8: Snd9SONXQHmp4XtPMGxbxw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-9: YbQVrreOSHmhWrW0LjlvVw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-crashtest: evh0KEyDQ4ShtpjGOppiTA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-print-reftest: UYPVlpzDRcWB0DIYv4DN2g + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-1: TLe6HWe5RtqGPZ8xtQ_xkg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-2: FveZUU2nTLK-K0DyMb1rwQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-3: a3B-mqkDSMKmT4XrpcGcRA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-4: SPXxCqLNS8mU3g0djJkhLA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-1: VUTflE8mTeeG9kMETFtJVg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-2: FjDo4jUrSlWi_WZ_geKyKQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-3: Xrg2uUEqSFqr4yaezMsNNw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: KGiIMAgKSUGIcucB2t1Jxg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: Lcdpsu85TXixuhrnOUWNtA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: OJhUzTA4TF2ocrrUfqKkdg + test-macosx1015-64-shippable-qr/opt-xpcshell-1: cM0mkZkrTeuwBvxAThio7g + test-macosx1015-64-shippable-qr/opt-xpcshell-2: BfTrFr7OR2eAv_DKXJV8_w + test-macosx1100-64-shippable-qr/opt-crashtest: ARTj1FdvSOaFUUjgF18dUA + test-macosx1100-64-shippable-qr/opt-mochitest-browser-a11y: Rr8TwjR4ShmTCGutRPUyPw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-1: YHnCOnrpQZCIax0-0p-xNw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-2: ZME3148ET5efwqKAYwDVHw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-3: GgddI3hQSg6EdYeebR4pXQ + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-4: YuhYTeCNT6GSRdtGgBRj8A + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-5: NgGjgrtGT1um1wS-uHhOhQ + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-6: Hx_R9GXtSp-jx-mTRMluKw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-7: Sy7qFbLXQEytj3XDk0_cTA + test-macosx1100-64-shippable-qr/opt-mochitest-browser-media: UHvQ8ZaCR7OMH0YOZgOTEw + test-macosx1100-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: YGVXBYmERCCgHNfApPvzaA + test-macosx1100-64-shippable-qr/opt-mochitest-media: Df1yxGFgTPyrfQGD70j9Nw + test-macosx1100-64-shippable-qr/opt-mochitest-media-spi: fbo1dweSQ86WM5LRSDcXCA + test-macosx1100-64-shippable-qr/opt-mochitest-webgl1-core: GieYjRI2QreokrNl1h-JNA + test-macosx1100-64-shippable-qr/opt-mochitest-webgl1-ext: N9cqasAKTRegSl258wyY5g + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-core: ObozWp0KTruwuLCvvy7sOQ + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-1: LPoAG8N1RreYCIy2HUngIQ + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-2: TzG7bl9ES0G-1_5ulSkwCg + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-3: Z7BpSKAFR3mJ0Dt7E1KU2g + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-4: KanjidoFQvmtcLLi8Y-Lfw + test-macosx1100-64-shippable-qr/opt-reftest-1: E9uXzFYcQteNMshmYFnwLA + test-macosx1100-64-shippable-qr/opt-reftest-2: eAFCODveRgCpn6To9U0QtA + test-macosx1100-64-shippable-qr/opt-reftest-3: ON8d1OUoR2GJiNqUwvtRSQ + test-macosx1100-64-shippable-qr/opt-reftest-4: QeA5DWq-Slq4OYli5VEOVA + test-macosx1100-64-shippable-qr/opt-reftest-5: KPxr6XOsQ-q27YxMiCBtsw + test-macosx1100-64-shippable-qr/opt-reftest-6: biPfFGVeQ-uXum3jRCWnjA + test-macosx1100-64-shippable-qr/opt-reftest-7: A_43jc3sRV-QcfJc5hMINw + test-macosx1100-64-shippable-qr/opt-reftest-8: WeecU9gyRIGpuMPTtObGvw + test-macosx1100-64-shippable-qr/opt-xpcshell-1: VaYy4OevTRyQQaxTMvXXYQ + test-macosx1100-64-shippable-qr/opt-xpcshell-2: cMSZ3oiRRCymjyr3W4FSSQ + test-windows10-64-2009-qr/debug-cppunit-1proc: Hp2qb8W-TcWcxVQZoWCENA + test-windows10-64-2009-qr/debug-gtest-1proc: IOOc_KfNTB2_ellUOvv4Hw + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-1: cYIMSwmAQliewCyZsxAMPA + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-2: EmPX9aLoSSCExfhmAXbacA + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-3: MHIZN5TBQgK5MCsVIspS5g + test-windows10-64-2009-qr/debug-mochitest-chrome-gpu-1proc: JjNWzFC4QJadiesp9jSS7w + test-windows10-64-2009-qr/debug-mochitest-plain-1: XyCQPg8DQMiWG1WH-F_YPA + test-windows10-64-2009-qr/debug-mochitest-plain-2: ZPiFCs3oTgqAT5y6UIaMiQ + test-windows10-64-2009-qr/debug-mochitest-plain-3: OjzHfaUOSVuYVs11uf431Q + test-windows10-64-2009-qr/debug-mochitest-plain-4: Wh8fSsPnT8O4SJZO5G2b6A + test-windows10-64-2009-qr/debug-mochitest-plain-5: JWjnmf0ERCecV6S96c9PPQ + test-windows10-64-2009-qr/debug-mochitest-plain-gpu: TMHKJ_7hRcakUK1sDGLHaw + test-windows10-64-2009-qr/debug-xpcshell-1: PCORmn1WSTivUxy2W0UUPg + test-windows10-64-2009-qr/debug-xpcshell-2: G6MH1WdkTvO7ZIP9DlLcBA + test-windows10-64-2009-qr/debug-xpcshell-3: eB-4yFTJQxqQbajrMQOInQ + test-windows10-64-2009-qr/debug-xpcshell-4: Ab2hXB66Tkyd8NSdmV1K-w + test-windows10-64-2009-shippable-qr/opt-cppunit-1proc: HQOND5ILS4CwO0lxPbsraQ + test-windows10-64-2009-shippable-qr/opt-gtest-1proc: Eb8LxntxRLiFckXxj75XDA + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: OH6yKM1YQAmeusxvSJkd8g + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: d7VMtnfaSaCBTTREer0oJA + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: enex2MGaQ5qZO7GYi9RL2A + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: Fec5aBiTQjGkp-RiSJgm1g + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-1: JPZLDbMMRiiESyyFIE7GYw + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-2: Y6SYUSLeQq2OcWMG9LuC4w + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-3: e7UtOb9CTqOTV2Es_ppF5w + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-4: XXjFDrspSluCC4pnD031TQ + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-5: LVmFMkZHS7OHD8-bFNLwfg + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-gpu: LzifIO8aRzae3y8TUHfmMA + test-windows10-64-2009-shippable-qr/opt-xpcshell-1: FwP0pQgbT9qwQxamzkU2Ag + test-windows10-64-2009-shippable-qr/opt-xpcshell-2: bs8RlnGKTOebtoPHGHt_4A + test-windows10-64-2009-shippable-qr/opt-xpcshell-3: Iaz8KBXKSIewrvj-gVicdg + test-windows10-64-2009-shippable-qr/opt-xpcshell-4: EB3_1-07RV6KJJ1qAeyRDg + test-windows11-32-2009-mingwclang-qr/debug-cppunit-1proc: MOexkxzUQ3q6-y8z9sBZpA + test-windows11-32-2009-mingwclang-qr/debug-icecat-ui-functional: fEk2jUkqTzyLH0o1MYqoQA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-a11y-1proc: RIjB2kQnTJyb1q14YZQ2NA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-chrome-gpu-1proc: HcbWBmHsSpyhG8y_YtOVpg + test-windows11-32-2009-mingwclang-qr/debug-mochitest-plain-gpu: SoioSVTCRrCHcicK6GeIzg + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl1-core: ROAHp97dRNG8jpKIHLLjSA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl1-ext: VCx9DJR0QsSsctuaXyoI1Q + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-core: aBUwAcP0SJmP8kyi7uCrIQ + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-1: O_zeJZspT5-iYmly0iX9XA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-2: PcV_IM7-R_K7PZsRCQen0Q + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-3: W9nWGxzoQgGCY7U3ZZVbpw + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-4: CwlSFgRSS0GG17xYtceEJQ + test-windows11-32-2009-mingwclang-qr/debug-telemetry-tests-client: CAn19OWqRZyNH7XIpFldDw + test-windows11-32-2009-mingwclang-qr/opt-cppunit-1proc: BoSOS6tCRqGeM9RfacqvCw + test-windows11-32-2009-mingwclang-qr/opt-mochitest-chrome-gpu-1proc: OHyz5LDnTE6srwFBfk5UaA + test-windows11-32-2009-mingwclang-qr/opt-mochitest-plain-gpu: WSYia__XRve832vWUDU-6w + test-windows11-32-2009-qr/debug-cppunit-1proc: E65nQqPMSgiUQjaJj8skhA + test-windows11-32-2009-qr/debug-crashtest: ODQx8p_DT1eLi7J5fc04cA + test-windows11-32-2009-qr/debug-icecat-ui-functional: d5n2sDjwQdGwnv8GYZH2CQ + test-windows11-32-2009-qr/debug-gtest-1proc: BYjSeQ41Szq4POUMfRVu0A + test-windows11-32-2009-qr/debug-marionette: LRiZvHDgQkyiV_MaRfKQNg + test-windows11-32-2009-qr/debug-marionette-swr: CkGiqlaHR36StNB786JsOQ + test-windows11-32-2009-qr/debug-mochitest-a11y-1proc: M6iQxvUoSxe4MyPhJqQDLw + test-windows11-32-2009-qr/debug-mochitest-browser-a11y: MXrQoGZ2SX6bozvp-VlV1g + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-1: G3Bo6GSDRrK8GsOiRDVA7w + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-2: NEfYR5psSwicqiY8HmaZDw + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-3: HI7JAJfBS1es-IygnjCuXQ + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-4: GaIs2IBmQ-e6Vx57AJRuXw + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-5: KC5I4n1_SbiIJPdWpzJS0g + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-6: MMXvkopoSDu-V4oRhF19zQ + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-7: cC69dUWJSuu-biQ7wGSTmw + test-windows11-32-2009-qr/debug-mochitest-browser-media: VUslue0tQAKma9LGoAmLdg + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-1: coWwUCm7QJONMWL2LukwGg + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-2: Kcmwuc-hREediUKGJpEeeA + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-3: bMBrOKviSPuqVjZd7IYoyA + test-windows11-32-2009-qr/debug-mochitest-chrome-gpu-1proc: PbWlIH2WQN6Mu0CWJJA1rQ + test-windows11-32-2009-qr/debug-mochitest-media-1: Awdl8ZAXRIyryoZybnVoJA + test-windows11-32-2009-qr/debug-mochitest-media-2: PzhWpd3hTvWuw8Yg_80IvA + test-windows11-32-2009-qr/debug-mochitest-media-spi-1: LmVcSRyFRJmb5VltlKXv0Q + test-windows11-32-2009-qr/debug-mochitest-media-spi-2: craSLkIlRSOc7erna__hqw + test-windows11-32-2009-qr/debug-mochitest-plain-1: S2xjIClCSsih4IRYq0mwsw + test-windows11-32-2009-qr/debug-mochitest-plain-2: IU5NqKr1RXa_EcWbrS1FsA + test-windows11-32-2009-qr/debug-mochitest-plain-3: X8P33JZSQVergkgmP-jW9A + test-windows11-32-2009-qr/debug-mochitest-plain-4: NVDIcvOhR1m8ChQjF_Wktg + test-windows11-32-2009-qr/debug-mochitest-plain-5: GZ71O_NISDW-6KS7851QhQ + test-windows11-32-2009-qr/debug-mochitest-plain-gpu: cITTCbXMRRCHtH14rJ3WYw + test-windows11-32-2009-qr/debug-mochitest-remote: VpbJ1FK5RkS3g80ZdRXy3Q + test-windows11-32-2009-qr/debug-reftest-1: eEqiq8oOTCmEJFEabGMG4w + test-windows11-32-2009-qr/debug-reftest-2: I0KWFX4rRuG89Z2dZg2VYg + test-windows11-32-2009-qr/debug-reftest-3: Ho7f2W87Rq2-16JcX8ZmTg + test-windows11-32-2009-qr/debug-reftest-4: Ia17r0xvSMuScNIzBqDQfA + test-windows11-32-2009-qr/debug-reftest-5: Tu3xAdswSMOj_XLkhGIv6w + test-windows11-32-2009-qr/debug-reftest-6: BjnqUmG6RwKOlgBHwM_9ug + test-windows11-32-2009-qr/debug-reftest-wr-dc0-1: dAtyUh-NSBylA41eeH5VaQ + test-windows11-32-2009-qr/debug-reftest-wr-dc0-2: UmlZcPG7TOmJWi_J_pqibw + test-windows11-32-2009-qr/debug-reftest-wr-dc0-3: MkD2Ydj-Q16oUO0OhkGq9Q + test-windows11-32-2009-qr/debug-reftest-wr-dc0-4: U6u7yxvdSZmLO-PBnIQkEQ + test-windows11-32-2009-qr/debug-reftest-wr-dc0-5: agI57GZCSFiONpMeA3majw + test-windows11-32-2009-qr/debug-reftest-wr-dc0-6: YfTWNedVT5eD6hefcwBqFA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-1: JxXvHFr5QM6MKJd6qiuThg + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-2: e4T1z0FwR0GA3EbXRsPFPA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-3: MoQOOaQPSuiVCAi-gpB3jw + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-4: TT9pwVuOQXSyi9AeBo0mOQ + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-5: KJtSCuY5Qmaf4VIQxglysA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-6: TyxvYTXKTpq_rqI_XpIvdg + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-1: KUeYIPQuTE2NuMSQNS6RlQ + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-2: TnV3L2xRRyKTSq8vISBXbg + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-3: fSholjK9RomZYZ8UtuO_pQ + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-4: FNJqZtUwQiynPwj84qCG1A + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-5: GDPVd_ZMRmGzlCFuey-uWA + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-6: Wz3tVJo8RzKK3Tl63kjn5A + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-1: ctBEv0lUQau9ZQ1zU4fZ0g + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-2: D5IzfdYHTlGDsY1XPY-vug + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-3: Qi5nnrNoRp2083xHVcSi9Q + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-4: YuAvBqLzQDOUwsO2FLxrQw + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-5: MUDACnkYSeOiYNQf4ZzQaA + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-6: Zz6xj9KESQWalRqK4i0cwg + test-windows11-32-2009-qr/debug-telemetry-tests-client: WKJNLPtIRAK_bdg1xHr5rg + test-windows11-32-2009-qr/debug-web-platform-tests-1: Gh6YfZ4hT5KUt6H4lsraEw + test-windows11-32-2009-qr/debug-web-platform-tests-10: POpwONSJQ1ydf690LL-mIw + test-windows11-32-2009-qr/debug-web-platform-tests-11: adAEw82gSIieK5de81L4CQ + test-windows11-32-2009-qr/debug-web-platform-tests-12: Vkz6BjUJQW-c4Up8HVhO3g + test-windows11-32-2009-qr/debug-web-platform-tests-13: UHbvRp88RiyPpYsrsgChAg + test-windows11-32-2009-qr/debug-web-platform-tests-14: XSmLFWCES-mU559ISMGPjQ + test-windows11-32-2009-qr/debug-web-platform-tests-15: K9f6DOu_QKiV_3jKzIQJuQ + test-windows11-32-2009-qr/debug-web-platform-tests-16: R4h7HfGfS0GmLSFtjWG9WA + test-windows11-32-2009-qr/debug-web-platform-tests-2: c1GsHAwWSxe_wB5cnjO5qA + test-windows11-32-2009-qr/debug-web-platform-tests-3: HWnFok_-QfiaYxt02USpuw + test-windows11-32-2009-qr/debug-web-platform-tests-4: bwx47kywQlC_szAAtHYMZg + test-windows11-32-2009-qr/debug-web-platform-tests-5: P5JMyY6QTjKEWPpok-DVDw + test-windows11-32-2009-qr/debug-web-platform-tests-6: bmQpmuUURiiQLHlmylzR-g + test-windows11-32-2009-qr/debug-web-platform-tests-7: C3GKACMOR3yf5b-Fcfx0hQ + test-windows11-32-2009-qr/debug-web-platform-tests-8: JJVxidw9SwiONBTTSmy3yw + test-windows11-32-2009-qr/debug-web-platform-tests-9: AF4_T6tQRl6159smzQVtNQ + test-windows11-32-2009-qr/debug-web-platform-tests-crashtest: IJpXpU4dRH-gZCziC7nxJw + test-windows11-32-2009-qr/debug-web-platform-tests-print-reftest: XuHTQCW5SI6a4F_mIhfcGQ + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-1: F9klWPjZQSCQ_KL7ZMJpdg + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-2: AUldPXeTTha6QtKIcH0GDg + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-3: HtAsQhPSRBOzUfhivdUsEA + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-4: SnvtyZFfRiWGiv4pBNutvw + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-1: UsprC0JTQQCAS79t4hcrQg + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-2: KtFiSvQIR5qsZ5-4Tpcoyg + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-3: alsrBkMwTwiLUUtokm0iww + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-1: IjIUGwHqSi6VpruAP_MP8w + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-2: Hpkrec33QnyhbQquhh9lZQ + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-3: b1sJ8-F1TYyd0M8CZstdng + test-windows11-32-2009-qr/debug-xpcshell-1: LJjKCpz3QQiHj95sqjBfhw + test-windows11-32-2009-qr/debug-xpcshell-2: U3uQCcmvSW23Uvg28tOYyQ + test-windows11-32-2009-qr/debug-xpcshell-3: C5IFaf7VQwiqpdHw3mOUFw + test-windows11-32-2009-qr/debug-xpcshell-4: DXqdiOZIQ9W02W8X3XKt2Q + test-windows11-32-2009-shippable-qr/opt-cppunit-1proc: FDoFq76hQVaNauNXCbmVEA + test-windows11-32-2009-shippable-qr/opt-crashtest: Gr4bhKIHRg-1A7yhisfWKw + test-windows11-32-2009-shippable-qr/opt-icecat-ui-functional: SYiI3xdeTauiZOLh1dxpog + test-windows11-32-2009-shippable-qr/opt-gtest-1proc: FTJ-3SkrRpm6E6YJyzhrsQ + test-windows11-32-2009-shippable-qr/opt-marionette: Expc7E1STj26DC0eHvVhzw + test-windows11-32-2009-shippable-qr/opt-mochitest-a11y-1proc: HXCVnH0kRAeROMXcBnlsMg + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-1: FaaFvkZTQ86FAsawTu5ybw + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-2: MjZlbhT5TuWD7xqjJUpXyw + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-3: RkPq_aswTUWQmLE-KhDFKg + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: XUa83PL-Svymht0LHnHBlA + test-windows11-32-2009-shippable-qr/opt-mochitest-media: RwR73rGcTp2TKfrhLFvJ1A + test-windows11-32-2009-shippable-qr/opt-mochitest-media-spi: NZ9eS6UsQcqrWOc_4Vir1Q + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-1: EpGli_dxTcCV4sYax_WR3Q + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-2: VRUpLIhfT3agyC_m1QMgpw + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-3: LQaTsvRkT9GC6tFhgMAkiA + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-4: XwvCV9GlTk23nMC1NTNLyA + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-5: OLzZd8sJQK6-N4pn8_6dXQ + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-gpu: Ce_ewaGLSiCsPtdIUkZk8Q + test-windows11-32-2009-shippable-qr/opt-mochitest-remote: Fm3TfgNJRESVPxlomU7WJQ + test-windows11-32-2009-shippable-qr/opt-reftest-1: P6zJbUQTRjGBFsH4vFeinQ + test-windows11-32-2009-shippable-qr/opt-reftest-2: A8w0HKOfRdGjyHVW_u6Omg + test-windows11-32-2009-shippable-qr/opt-reftest-3: T4fHnL8qT9WCWDmI7nsIVw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-1: P6tK0IJcTDmFW_RFrA1Hrg + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-2: WwtfPptFRTum2UNZQkiA4w + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-3: M3cwnQWTTHqRFZt1yaWCtw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-1: BGeIKVo4QPWCGGl2sp3EjQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-2: cBVcBLTcTf27RnKObSQVdQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-3: JMMfA7tORGGXEax6ny0A-A + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-1: XXOas_F5RlmZYGk-izRbCw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-2: A3HeM1DjSn6P2LLJs1J8kQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-3: YlJWGqi9R5e9JcmCpdPGiA + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-1: E-t0A42hTByXoPZ0hCN50g + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-2: QqhNo30iRJivd3ul6XvFYw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-3: fWdwFH7oQ0qolIsohzCL6A + test-windows11-32-2009-shippable-qr/opt-telemetry-tests-client: BXA5oY6oQl-9-YAqztPQrQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-1: FW0tix_IRWmjhJHZOPZCpQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-10: IkO03U_OTLufyFZ1jdYgjw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-11: ZaMhUgKkRZmtMOiUYL5zNg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-12: NOKkN93ARcuDesZmuw5yJg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-2: SwL2eOiIQsGcQAUg-dsZBg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-3: LH1ri4K5TIWk9aPzbivOpQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-4: JgOk_P7wRIa_SSbJKnw-iQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-5: dgTVoxuFQ7eOt6quq2Y65g + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-6: cQRhKgmqSCijMKcLtbBCbg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-7: Om9mjphMQXqrUj6qc9V3-w + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-8: SMJlx2yHTsyFwissqh-bAA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-9: W3GMrA6RTjOcMzf6o6JvnQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-crashtest: VA_OBpLTRbSiM4bYWQFzig + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-print-reftest: GswAtwoISfO0FzXD2nFs1A + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-1: aMDReOI-RdmDusgQlandnA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-2: A138goyCTUuXTkI83PUyUw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-3: X6zpiovPT7ifOlfj_g-Auw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-4: CyoIdymxQMSHXMtXjULIfA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-1: UtJGt6wFTcmBtABORB_yiQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-2: KkulTtFIQcWC6JYPGCq7FA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-3: OIu-Ai8tSbW9g2OaEuDAeg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-1: TJgyWom_RviovIGNBTZigg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-2: KJVt7DOcRo6Wo7J4GbWnfg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-3: K1IWRyugScy8w8sv0k8s8w + test-windows11-64-2009-asan-qr/opt-cppunit-1proc: MBJUF5rBQU-kNPBVqFjpLg + test-windows11-64-2009-asan-qr/opt-crashtest: XUc9phptQ2yxgws-GlV-lw + test-windows11-64-2009-asan-qr/opt-crashtest-swr: YcDKrF5kS2G3kFYkAXvlxg + test-windows11-64-2009-asan-qr/opt-icecat-ui-functional: HQ6JqD2FRJep9jq-4akPNA + test-windows11-64-2009-asan-qr/opt-gtest-1proc: FfDlxUEwTTOLPZ6Q8d3pWw + test-windows11-64-2009-asan-qr/opt-marionette: ABrrUHvsTFyttGFq2zt4nw + test-windows11-64-2009-asan-qr/opt-mochitest-a11y-1proc: ZoUGmaNGQM-eSuzWi72-2A + test-windows11-64-2009-asan-qr/opt-mochitest-browser-a11y: VThrCSTuRkKxJaHdE8QRDg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-1: C0bQYp-uSiSO_cXHytNoUg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-10: QQjuIkUVTXaf1_HnFRktFA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-11: Cx9SzPhQQxeD4fRV3zWLww + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-12: er8Le2gkTKiWrDmu9eX94Q + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-13: bxEiWUaXSo20G_mQW7am_w + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-14: YomC2HwbRl-8QHPC9s5wmg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-2: O6lTCE9YTRKv9FktnNkfnA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-3: JfZz5sUJTnGo0Ku069O3SA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-4: X7Pn6UNaRXeIoCoGPrCpKw + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-5: cZ770RhMRqy322U1aw1FCQ + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-6: AQJuDELCRESNDXq3y10ylA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-7: Kex2ckuRQd2TnWqef6Cwyg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-8: Zib0iK34TyWoUmXdVRTqwA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-9: FzLBTqL4Rc25X8SzXq8Cpw + test-windows11-64-2009-asan-qr/opt-mochitest-browser-media: AkFtIMXYRoy0Ac2yTCppJA + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-1: RAznv7JhQTiJuZIg2pQeZg + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-2: AmK9Xen9RpWbvifOFQG9hQ + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-3: DJ7o-gUQSjmp5R_CHpDRLg + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-gpu-1proc: JZNkLetGSVmE4WWp1tyE1A + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-1: fAaLJLOSSuGztfhES0pE5A + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-2: dYGqPm6YSUitTaO9VcifEg + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-3: KnFbaKKzRO-MVBja7ry5SQ + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-4: aSM2yUYCThOa-lq6LoxI8g + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-5: dLiN8jvmSIWLqpeGjNGbYg + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-6: AK1FlurHTOOW15GnJlPqOA + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-7: ZaLqS91tRjuGG72npBg2wQ + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-8: SsqzcOpxReWmPNFkXz4nJA + test-windows11-64-2009-asan-qr/opt-mochitest-media-1: MZhij9adRkaEJXH7XO1wHA + test-windows11-64-2009-asan-qr/opt-mochitest-media-2: CLVDQh7IRAe91p5kBE2CeQ + test-windows11-64-2009-asan-qr/opt-mochitest-media-spi-1: Vm1dW2SdTUKHTLmeK_iLTw + test-windows11-64-2009-asan-qr/opt-mochitest-media-spi-2: eex0qyq4Sw-nJRKgfuRgSw + test-windows11-64-2009-asan-qr/opt-mochitest-plain-1: J-YE0pGjTiaj4k5joWA9Ow + test-windows11-64-2009-asan-qr/opt-mochitest-plain-2: S6SUvH6eRXW2zlORUXkqIA + test-windows11-64-2009-asan-qr/opt-mochitest-plain-3: M3He8nuaSjmLw7bCsCXjXg + test-windows11-64-2009-asan-qr/opt-mochitest-plain-4: H-N_r7JZRtWuF8p78yjRRQ + test-windows11-64-2009-asan-qr/opt-mochitest-plain-5: UNmbsjotSNeD8UOpohTojg + test-windows11-64-2009-asan-qr/opt-mochitest-plain-gpu: LsUspQ7eTDmYudZCy3sepA + test-windows11-64-2009-asan-qr/opt-mochitest-remote: Z-jCGx_dRjiQlmuJC9N7fw + test-windows11-64-2009-asan-qr/opt-mochitest-webgl1-core: fApLljdKQhOhXCM1NL54cA + test-windows11-64-2009-asan-qr/opt-mochitest-webgl1-ext: UXWJmbutQAmTQdyrxyzPKw + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-core: BdLdX2ywSsuJ5pk7hnS1Fg + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-1: B4hGE99yS1S7vpYGIFdFpg + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-2: KnEpBI0PQ764YoPAf6LBZA + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-3: fnkS0KUGSu25d11K8IwHkQ + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-4: UtD22HGkSG-wndt06l9Bww + test-windows11-64-2009-asan-qr/opt-reftest-1: JkatQrBFSVqEH19qoQvmWg + test-windows11-64-2009-asan-qr/opt-reftest-2: J6jmmYjMTFO5ue6I4UGhWQ + test-windows11-64-2009-asan-qr/opt-reftest-3: XTgdf2-bSSevBcZW12aIHA + test-windows11-64-2009-asan-qr/opt-reftest-swr-1: GG52klBHTP23QRr2lWfwjA + test-windows11-64-2009-asan-qr/opt-reftest-swr-2: Rv1k9hQTRJK7Qn-gTXgRfw + test-windows11-64-2009-asan-qr/opt-reftest-swr-3: B-1lXLt9QtuglAOHADL53g + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-1: LzLYptFSR8KQXocaiZBoTA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-2: F6FTIn3tQYemAPAswpxgCw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-3: V73UoeG6Rbua1xvZBKChYA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-1: fqcRUWqwQvKdQgZXU_Txyg + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-2: A3nQi3sgTBmIbpPT5yqkkw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-3: HNKq_LfARjGIXFpv0mrYhg + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-1: WeGnHBFSRbyjt8Rw2Z4ItA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-2: c3NW5VeiSOa6sfnOx4gDGw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-3: D45ymiXHSv29Yy_XtfFIfw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-1: YdO91d3lTfGDvFgr3a8xLA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-2: I_m7Onw5TjOd5Sj2dukA1g + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-3: FjTQ_Mu3TxGQPwpYRgOskg + test-windows11-64-2009-asan-qr/opt-telemetry-tests-client: M_zYrWYWSMuTASbOrP367Q + test-windows11-64-2009-mingwclang-qr/debug-cppunit-1proc: QI1XChXPTXa5gy2TmqRUjg + test-windows11-64-2009-mingwclang-qr/debug-icecat-ui-functional: fNinfUl3R6aEfxihHZOfhQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-a11y-1proc: FZ7KsI61QDmnLCOaQiS0gQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-chrome-gpu-1proc: RTvAdIL0QjmkpgmTgqhLow + test-windows11-64-2009-mingwclang-qr/debug-mochitest-plain-gpu: CWXkuY9HRFi8dqrh7S9Vxg + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl1-core: EGXKHLEAR5yO-ovNTno5Mw + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl1-ext: HGa6UYmbSKiRjdVtCtyVbQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-core: YeEIxyKfQJSBCOy2zGKkPA + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-1: Z52lvUZSQtq2Dt7csAssUQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-2: V4BRVmn8SkmZNQhzpxj3_g + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-3: CZB8xa2aT-yof7PmOjjSyA + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-4: E0bm5cFRRfCJuVDgaJy7fg + test-windows11-64-2009-mingwclang-qr/debug-reftest-1: fw-m5jPXTy6V1YlruSrBBA + test-windows11-64-2009-mingwclang-qr/debug-reftest-2: ESPjRrwYQd-liRIUmcZfbA + test-windows11-64-2009-mingwclang-qr/debug-reftest-3: K-2RXUVoQ-mF89r4gHV4Ww + test-windows11-64-2009-mingwclang-qr/debug-reftest-4: G94nrgtQToaCD69nCUU93Q + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-1: DOfMFJTIRwmMJTzZdekfZA + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-2: L4zpyGHFRA2kI1h4Xm5_Fg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-3: I9BzIdaZR1utBFzb72Mnbw + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-4: ZkKYc0W4TWq_44NA5XwjZg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-1: RVhoTP2RTiWOeKcDhT5muQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-2: DFzvHvudS7iQbi9KI22SGA + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-3: YtfW15fASEKlBWMTofBhMg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-4: LHQ90iHySIi3NuVhWRikag + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-1: fUuJ8BDEQ4ulFPxwJ7FniQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-2: fiE0MnbmR-e-PAQcb9Kp8Q + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-3: RuFFWdNjQc2Y_s0PWHd02A + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-4: R7XixN9gTX67MQPGxp3lkg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-1: Pv_xkorGTqu9qoTQkCOKPw + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-2: J3owyjloRbSkwA2WLDZ2jQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-3: ZJEJ98tASJi2HRtW1aTY-g + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-4: SaLTNU5bQ7qYJx6sTDjMXg + test-windows11-64-2009-mingwclang-qr/debug-telemetry-tests-client: P1cK6ZJXTG2mPMsQPwoxQg + test-windows11-64-2009-mingwclang-qr/opt-cppunit-1proc: GlenOagXQnm-ULW7lAf4MQ + test-windows11-64-2009-mingwclang-qr/opt-mochitest-chrome-gpu-1proc: Wr71vS4nStOWtZtKtjQCSg + test-windows11-64-2009-mingwclang-qr/opt-mochitest-plain-gpu: Uc3E0a64SquB211raUSSNA + test-windows11-64-2009-qr/debug-cppunit-1proc: X2ZPD6uyTFSSeqUMwNWRUA + test-windows11-64-2009-qr/debug-crashtest: WUtBZ7N6SHqGaSn_yQYExA + test-windows11-64-2009-qr/debug-crashtest-swr: Q2GjROlYTeaZRp5iGbUrsA + test-windows11-64-2009-qr/debug-icecat-ui-functional: CercUizNTJafWfJHzRLOKA + test-windows11-64-2009-qr/debug-gtest-1proc: XmOI8SwJSBe32f9k6AHeUQ + test-windows11-64-2009-qr/debug-marionette: UoMfMXynRrK6uO_Xn_QRNw + test-windows11-64-2009-qr/debug-marionette-swr: CV_yKaZQT1ydfVi2SeNQrw + test-windows11-64-2009-qr/debug-mochitest-a11y-1proc: PkThpJ2ASnKVRqdatxUWNg + test-windows11-64-2009-qr/debug-mochitest-browser-a11y: V2i9HFIPTwWgI9Uj_DPjWg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-1: B8P370okTiOfifi-yWdx6A + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-2: A8ekPy-lRKaOCSIL7gN9tQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-3: B-CWf-G4SUao8Fs-0E0r-w + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-4: D1bf-x45RaqtHQd24D4xOg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-5: E9hUdPVzTdypTsPuKX8V1A + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-6: bZPMlNDSSt69DD9JieAClg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-7: Ionl-_fbRgCrlJEtj-ZLWg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-1: FyQeToBOS_am60MafEcZhg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-2: E7XYdhirSkmX_oJ06yamwQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-3: eIdiFyyTRMq12e3Uv8XXew + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-4: eJGb3rCeT86xIxmxBz0znQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-5: cRaxGVxaQSC4asuy9EPYfA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-6: G1reXMDPRx-rHh434D219Q + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-7: RvAW1T40S9abrKNzBuiqMA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-1: QoO-Buz8RZOJEpD_Jxf8dw + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-2: SPs83-yTTRC2SakoSRvSNg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-3: Z9W2QgQOQh2HznTECKkEKQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-4: aWK7xs_IRDGWQ86xd4oGgA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-5: I5iCNahVSXufjk0kI9-6QQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-6: a7wDT6XyRISqo5LUH5IJsA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-7: ZK0m7AtHRzSyS3DVX7eY9A + test-windows11-64-2009-qr/debug-mochitest-browser-media: Xn3G6021Tvamk8_FFiD1HQ + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-1: Zra-MhcyQOCQEKuiz6L0wg + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-2: aKJ9r4X_QX-wR12k6SZzgg + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-3: Lzne2QJRQ--h9thMwGz-yQ + test-windows11-64-2009-qr/debug-mochitest-chrome-gpu-1proc: SjP1_U87R-OTe2Lz5eE6KA + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-1: KR2Z-LspTxOT7FNy1Iwfkg + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-2: C7aSmqpnQZWK1LwG2wWI8Q + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-3: HXYmI9L3Sh-xp6zOz5XSOA + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-4: Y4QPKgldRmuxFGGEfcGjnQ + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-5: Eo-RvHmTSEGSnO87kWEcVQ + test-windows11-64-2009-qr/debug-mochitest-media-1: V1xLTUolQK24i8F_s-kTDA + test-windows11-64-2009-qr/debug-mochitest-media-2: GA8Q153vTE6vKK5aJJj3Zg + test-windows11-64-2009-qr/debug-mochitest-media-spi-1: Ax7cmHzzRJWOIQYkBbeUVw + test-windows11-64-2009-qr/debug-mochitest-media-spi-2: bIzc1Fs7T0-dp1LAqfvUjQ + test-windows11-64-2009-qr/debug-mochitest-plain-1: Df7iQVfWQXC0QSEEJyxiMQ + test-windows11-64-2009-qr/debug-mochitest-plain-2: LCGn125KR8ezEOvs5HFqkw + test-windows11-64-2009-qr/debug-mochitest-plain-3: NCZvX5DzR4ukreAq6KOg7g + test-windows11-64-2009-qr/debug-mochitest-plain-4: DyJz8TR5S82z569NGXyyhA + test-windows11-64-2009-qr/debug-mochitest-plain-5: Pd8QTkJ4SiG5apem1YD0nw + test-windows11-64-2009-qr/debug-mochitest-plain-gpu: YxXCfcW_T0mXmsjRLB-Bsg + test-windows11-64-2009-qr/debug-mochitest-remote: KOVf4RIoRn6miS7IkE5BXQ + test-windows11-64-2009-qr/debug-mochitest-webgl1-core: JRmF7uApSdyGrTKv-H3cFQ + test-windows11-64-2009-qr/debug-mochitest-webgl1-ext: CzG84yjXSFOqLm68AVqTng + test-windows11-64-2009-qr/debug-mochitest-webgl2-core: FYfcdyRHRMikGjFQGbApqQ + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-1: XC2Qtd1ITfyyZn_gsz2L0Q + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-2: D86ua2MQTf6ydHaIAGJAuQ + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-3: dVUKloAHQbmHyi59jOb1qg + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-4: cfAp-IB8QbeyajuGtraGUw + test-windows11-64-2009-qr/debug-reftest-1: W9NYzltUT3OtToHbjpH5LA + test-windows11-64-2009-qr/debug-reftest-2: N9YVErPkQtecliDyUe_sDQ + test-windows11-64-2009-qr/debug-reftest-3: NIfEB0RkSAWP6owSYufJCw + test-windows11-64-2009-qr/debug-reftest-4: HlNSlm_zQu2JQGQl2Kw1Sg + test-windows11-64-2009-qr/debug-reftest-wr-dc0-1: UbCQMd0_SDSL8RiN5HwK7w + test-windows11-64-2009-qr/debug-reftest-wr-dc0-2: SM-MiHw2S4-RZMMJD8dHtg + test-windows11-64-2009-qr/debug-reftest-wr-dc0-3: GhzLrPkKR0WE2oeReqjFng + test-windows11-64-2009-qr/debug-reftest-wr-dc0-4: PCSyX1MvQzSTqtV6FxIq0w + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-1: Bvi71A5QTzO4V23HQxcoZg + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-2: T0uTHWMBR1KmgQpaPVCKLQ + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-3: Np8xrkgjSPydI22xZEhiwQ + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-4: TNwBgL0eQzWvHEl4UxV2jg + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-1: dk02Lv3PSHyqy8CD2p2g9g + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-2: JM96GKgtQ96VEi_dfBkrSA + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-3: exZeAjOeSrunhjRx4ARQjw + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-4: S_TnnMcURiOm6MselddyPw + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-1: T58hJElYR4S9WPoM2jQsBg + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-2: PnWJbETpQtWiiL4TLl52kQ + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-3: fD7flVkUQCuB7s01kfNQxA + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-4: Rz4R4AL0SJ2hOEq9LpptaQ + test-windows11-64-2009-qr/debug-telemetry-tests-client: TJBf2aa1Tt6a5cGeCpRVbQ + test-windows11-64-2009-qr/debug-web-platform-tests-1: RmCO2nuSQCGELnvJyVktbg + test-windows11-64-2009-qr/debug-web-platform-tests-10: E1Ab1T4KT_SIzRgrFGgReQ + test-windows11-64-2009-qr/debug-web-platform-tests-11: K5X8Z2t1SbuadqUHqDL6GQ + test-windows11-64-2009-qr/debug-web-platform-tests-12: clKEWzivQsWU3eEw2BtjAQ + test-windows11-64-2009-qr/debug-web-platform-tests-13: BcCylHqESYiH9eLekncEOA + test-windows11-64-2009-qr/debug-web-platform-tests-14: FkV7jkamRK6XAhLGfYQTKQ + test-windows11-64-2009-qr/debug-web-platform-tests-15: ZsGPcW_kTG6pL2njGhdMAQ + test-windows11-64-2009-qr/debug-web-platform-tests-16: eTg0QEHzRKin-r1bp_YGGg + test-windows11-64-2009-qr/debug-web-platform-tests-2: J9BUH76YSIuzZMF7IkK6RQ + test-windows11-64-2009-qr/debug-web-platform-tests-3: UzsgO0bPREGcHA9sZqrulA + test-windows11-64-2009-qr/debug-web-platform-tests-4: ceazOca3Swy2HZGTMKnFBg + test-windows11-64-2009-qr/debug-web-platform-tests-5: FTblluTYT4ianm_dh5ESow + test-windows11-64-2009-qr/debug-web-platform-tests-6: U0vErpRZRFiyexwkAF7Gtw + test-windows11-64-2009-qr/debug-web-platform-tests-7: OMOrCXkHRfCTWE3AksJsjQ + test-windows11-64-2009-qr/debug-web-platform-tests-8: EjCvpAmGT8arQJM34Oycxw + test-windows11-64-2009-qr/debug-web-platform-tests-9: K8LIVXSuSKuteUhUr7ZU9w + test-windows11-64-2009-qr/debug-web-platform-tests-crashtest: IvrPgqxJQjGQxrrirwRXIA + test-windows11-64-2009-qr/debug-web-platform-tests-crashtest-swr: Xla1BV8xSVKmAI62Ty52BA + test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest: CN28Gv_GT-eqMLAA_Y5wqw + test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest-swr: Dhba9lbhSZ-TquYHc1K24A + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-1: Eo-TBRnhTtujULRhUWmKMQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-2: e49IVyW6QdGRI53HqNA97Q + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-3: bVkwLcoBT1-f0E45Gs33WQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-4: PyBu8lnrSsypdBx7alMC5Q + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-1: S0053AbmSoeWi8i7agUzSA + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-2: ciYihb9SR6ybBmX8b2xNyg + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-3: Pj4pBAyYQp-_eMydIA_dTQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-4: X45N5SuUSmqO4_AV6h8Dcg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-1: VoHlM_02TWybzF9Y_5B7Gg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-10: dGNhbDCJQQKlCEqqXi1U-A + test-windows11-64-2009-qr/debug-web-platform-tests-swr-11: e0ql1LzRQyO_VWy0tk-ing + test-windows11-64-2009-qr/debug-web-platform-tests-swr-12: JAZy8sDCR9CDiSEpot8iUg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-13: OxxgvuHAQqOT5Cm-Z67XMQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-14: XqPrrmoDS967BLFyWbfR9Q + test-windows11-64-2009-qr/debug-web-platform-tests-swr-15: LgQtirteQhienNRHq40jnA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-16: EUFJwEgZRNKHwABcSXgSaA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-2: RX8rCYgLQ9yq1thmTB1hfg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-3: dv54DywUQDex0TdD_DZVmw + test-windows11-64-2009-qr/debug-web-platform-tests-swr-4: fNQ8QRjgRwKSsBl-lRZbHQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-5: Z27VYSoVS2W81hrz7cqlaA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-6: czz7a1WOSK69OcBKclZZFA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-7: PicFrnw-THuq_MkBYbpdFQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-8: UuahSzq2TGG7hS5nQYArdQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-9: F-S7JZ0HQCW6EWVsM6ZUOA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-1: ERcOVdrSQDmf7DPvnuRzkQ + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-2: FF7vRqmEQ_iNZ0OA9xFTWA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-3: Nnm6ungPS7SbVdgo0BJDlQ + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-1: Hs1OJRLeQHOMCUvzlr3efw + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-2: OCA3v-b-Tke0AEwTfj3QcA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-3: LuwsaqyGR5aQ2dUW4e-OUg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-1: NVCdUw9kR9uxrTszi1wpcg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-2: BN1Zea8FSGuuRPiWAqULvg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-3: MtkXIT0yTLKvErrrJetiag + test-windows11-64-2009-qr/debug-xpcshell-1: S9pmDvS2RhqvypSwz5P3XA + test-windows11-64-2009-qr/debug-xpcshell-2: VEA8-5v0SbuYQAmYreQJJQ + test-windows11-64-2009-qr/debug-xpcshell-3: Ac1se9XlQRi0x802dbhlGQ + test-windows11-64-2009-qr/debug-xpcshell-4: K2yK0-IyQIm8o-uRx0j-YQ + test-windows11-64-2009-qr/debug-xpcshell-msix-1: KjpllrqGRyqXZ4EY92EaFg + test-windows11-64-2009-qr/debug-xpcshell-msix-2: f8wCgNVUTuGt0feyTcjuCQ + test-windows11-64-2009-qr/debug-xpcshell-msix-3: Nf5-nRXgS-yTQ6v2gdRl_A + test-windows11-64-2009-qr/debug-xpcshell-msix-4: GFvY_5tUT5--_XrL4PbSfA + test-windows11-64-2009-shippable-qr/opt-cppunit-1proc: U9X3CRwXT_yHj80kqGQz9A + test-windows11-64-2009-shippable-qr/opt-crashtest: KoukseNXRnyiVB8Kdla26A + test-windows11-64-2009-shippable-qr/opt-icecat-ui-functional: EWYjhvG3QCae8gqUrWtwJg + test-windows11-64-2009-shippable-qr/opt-gtest-1proc: cxDH9O4GQeyqwtjp7ysSMg + test-windows11-64-2009-shippable-qr/opt-marionette: AvvDjnH2SIyEjyfCijbpPg + test-windows11-64-2009-shippable-qr/opt-mochitest-a11y-1proc: Dy9Dq6qSQ_Gmd56Ey7k-ng + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-a11y: MNqH0mYqSy2X_hmb4OV7OQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-1: Wsdqeo1CSHu0qq_-uxD5hg + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-2: VOBuHp1USsW4h0KQYJscaw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-3: Gi-apfLfTC6DSekxt0-Iig + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-4: Ttxgao9EQsSAC3NT4QjFkQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-5: XQPDpQvVQCefAAaT87F4Jw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-6: VAkwv1OlQX6SgPkdVIQ_zA + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-7: JMn526lpTL-DZa8NVzhaXQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-1: JB7bUdn5QAqMNyO-K_F7DQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-2: bFoDenhDTU6SID8TB1ZQkA + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-3: RZblCiINS_un0kvTaGxMcw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-4: Fh9Oki15QcuZsXkCZp4jlQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-5: a4csWwvlS9mF0h2HOGjjxg + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-6: MXKUxvc0QbGYZh8Rm27zTQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-7: cBs0ckrSSEScW_vwH8B5JQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-media: b9HP4IM9T1GsoTJ0zyztyA + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: fvOj-tf7QMmJJAMPjGiZvw + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: Gggjok2IQfOd7004eijLKg + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: ISXaaRQEQQ2MOa7ZYQKJvQ + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: d5IXw1SlTdyfg97cdPP0qQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-1: Y-KXWPPESbSGhlDq1Sr1KQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-2: LPCKvBgSQVy5n-nGefHT0g + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-3: CMYr8y-BQp66aKSkWYdeMw + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-4: ArfQv6V2Tu219ZuSGspkaQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-5: fLPcAX7cRHCKG-qk825moQ + test-windows11-64-2009-shippable-qr/opt-mochitest-media: BC5voC46RTCjmo0Lc9WzDw + test-windows11-64-2009-shippable-qr/opt-mochitest-media-msix: Hd2NWcZ-R0un4DRlJ8ZdJw + test-windows11-64-2009-shippable-qr/opt-mochitest-media-spi: SIuIalVbQVapcz04LJsPMA + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-1: ENlANS4OQo-KCnuIxOpeeg + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-2: ChGSrzYgQBGy9xGHaOT18A + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-3: cSiBdUB2R6KEyY5j8vy76g + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-4: P05zaL1yS7michgVsmF5aQ + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-5: ek7aSFmnQiCaEvoPAHcbqA + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-gpu: UWyropaQR9yCXtE9O92TSw + test-windows11-64-2009-shippable-qr/opt-mochitest-remote: KinlLYobRQOHRcSvEKLEAw + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl1-core: S7Jzpr6_Q4WxjFmwCoUKoA + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl1-ext: VXqQwgfCSm2ACa69d_zU_A + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-core: I9xrpIpBRpG8er3ilFKoYg + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-1: TKtWG8s8SLaC5SDUG_uBrA + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-2: B1wVu-M_SWG7DYftFd8i8A + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-3: NpkoIo5rQByGh59-QSSQ2w + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-4: Rk2IThKwT46ndB8wxPyLVA + test-windows11-64-2009-shippable-qr/opt-reftest-1: FFYZHi9EQiec6zKMwzcF8g + test-windows11-64-2009-shippable-qr/opt-reftest-2: AkfLvIuOSN6a1yershXBxw + test-windows11-64-2009-shippable-qr/opt-reftest-3: HY1aHNYKTOmqwmxBeKLKIw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-1: FIMTcBDETtKS4ITMLtzDJw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-2: F_LVaghNT4-k14fcSyhTqQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-3: f39ZD8uuQTu7W93DoiQt9g + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-1: CDzrApEBQxSHhEnnP9MXcA + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-2: OR2PVP3fTo6JaVEmu9ZlFQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-3: eZtHNmptSSmkOl8f_Q0AQQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-1: eN10iDonTuS7JuNNzreOlQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-2: AAoL2b9lQuuwYK9INlZ1Vg + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-3: HYtQNvF3TyuDmIctM-wN1g + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-1: dDFyTuTqRhyzHQXeyb7Rig + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-2: VXVRCSyAS92-6Gjpu6Wyaw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-3: bhe0gNDFQ-q6Vs4GQcE0jg + test-windows11-64-2009-shippable-qr/opt-telemetry-tests-client: Bj5TH5rrQreu322_Zv-rcw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-1: OnbKASXeT6G4Q-B571_Wmg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-10: JrQd2fbMRJ2IeMyfq_AYNw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-2: UP77zw6QQnarBaF0AUJ4qQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-3: V3ocmUv_SnCQo01bOyZo8g + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-4: ekrM8HgDQ224P78YBj7pSQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-5: Tj5GgKE-RxWTyR1oiGogOA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-6: A1fDKgHASlazYYA3IF-Hnw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-7: cgpo-vszSI2QOaycuPP6mA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-8: W2SFjsdXS6y1dkuKg4Rkrg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-9: eGalbpIvS3e1um40xURoQQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-crashtest: Y2kt-ZINSCWi5az5NtStZg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-print-reftest: TaNUFlU0Q02oLlXPwQZ3IQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-1: PLTPjNOwSK2trkVS6z0FIQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-2: BenxxAGRS0eSTzkDS450KA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-3: bEuTlvKEQBmGioPLUS3H8w + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-4: E5LHdDApRKm7D6NqYDfyWA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-1: L-3soRDLQlioMxMh5zymbg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-2: EOajuGFOSNKlsQ-xVZs5Og + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-3: YgmgAayfSY2hxYotzBSw3Q + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-1: YYwNm0CORe2vT4qINbLp3g + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-2: G1MEiu1uRfKf-ucJ9xGM5Q + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-3: Eu-HdMW7QP6yTXMouXgmUg + test-windows11-64-2009-shippable-qr/opt-xpcshell-1: Potf1NwoRxqKbUMB8Z1X8w + test-windows11-64-2009-shippable-qr/opt-xpcshell-2: QJggIGENQKax6DxIVBL1oA + test-windows11-64-2009-shippable-qr/opt-xpcshell-3: ZNn5CCSMTFug4WAeXJKr5g + test-windows11-64-2009-shippable-qr/opt-xpcshell-4: TkrrZJ7qTL-1HzurR5vb0w + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-1: R2mvGBI9T5WZIiMdl8tLUQ + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-2: SYj1QB75ScGS_s_ylEL8Yw + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-3: cJswenEyS9eINDpWFmIcZQ + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-4: MpSsKUHmQUaTkTOnclKvwA + test-windows7-32-shippable-qr/opt-cppunit-1proc: FEoFH6GqQOeFb2i4K_HgNQ + test-windows7-32-shippable-qr/opt-crashtest: My2oIG_sRvi4j7gCoAEQ3g + test-windows7-32-shippable-qr/opt-gtest-1proc: baTxmZDAR9ya2BGgRvHeTg + test-windows7-32-shippable-qr/opt-mochitest-browser-a11y: LaDMZQe9Rh-DcYIU_R79Ig + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-1: RiNjldESRsKXLOdefV-TDQ + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-10: boyttOSpSwSayfMMQakTsw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-11: fGi8z2-5S-mWvAHqCNNKmA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-12: Gd4BzSG8QH-qjObxw4HovA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-13: AquWAqCAT8S8QAHlPaYr2w + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-14: ZuULVHN8SWCXj0PGxLm8jg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-15: M92tOlz3Q0qu_N-CzzKK1A + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-16: aZAO7t6OR7iN65PW0wGD-A + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-17: cFNUKAYnQFC9VE4eiZbfsg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-18: aDvHzd_zRxWBK4wMh694aA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-19: KkOI8fjPSeOF9RJeTW37dQ + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-2: ZxHmqYRhT56NlqRiK_xBwg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-20: T-bwcr1VQTGpmj85ZRaTBw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-3: VDiY5yQ3TvyDSpknQwwqYA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-4: Fmu51t4YTvGoZ0OyuHuQsw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-5: VZUhV8jpRA2mRRUwinVcAw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-6: dHYtszafQqqi2HlWgBqAHA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-7: C-t7zEzOR0uFfSwqRhsgqA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-8: GYF26zchSiuo4QCwL8ht_g + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-9: FvMLB5xkSAy5jMaYmYfztg + test-windows7-32-shippable-qr/opt-mochitest-browser-media: OpItrOWuSUq8yF_vpfgIVg + test-windows7-32-shippable-qr/opt-mochitest-media-1: c3-O4oojQreEVjvnvPhX1g + test-windows7-32-shippable-qr/opt-mochitest-media-2: SAvLytEhT0-he584SpOYhw + test-windows7-32-shippable-qr/opt-xpcshell-1: O1rC-RewTw2ybVT9fSwQog + test-windows7-32-shippable-qr/opt-xpcshell-2: IxUSvj9US9Ol6NL0idHhCA + test-windows7-32-shippable-qr/opt-xpcshell-3: E6i7f2C2RSKC7ka176JEJA + test-windows7-32-shippable-qr/opt-xpcshell-4: Y0A6bCWCTP27T-jXZZcarQ + toolchain-android-aarch64-compiler-rt-16: TnRn-vFRSjyTs9Z-49534A + toolchain-android-aarch64-libunwind-16: Kri8UT1sTgmFNc0-USHjaQ + toolchain-android-arm-compiler-rt-16: NOzBONyeTaGGNd85Q9I-Ug + toolchain-android-arm-libunwind-16: JBZIolMrQ1et-WeyzeCXIQ + toolchain-android-x64-compiler-rt-16: VogJ2fY4TZKNJn1MYjwDXw + toolchain-android-x64-libunwind-16: QZOnAeWsTb6X7EXcMwkalQ + toolchain-android-x86-compiler-rt-16: LPmITGXjRwmk6RRqBPYorg + toolchain-android-x86-libunwind-16: aveX0gGbT3ydLB3mX5w2ag + toolchain-clang-dist-toolchain: clDGBrRFQ5qmfKNFpZ5jMg + toolchain-linux32-llvm-symbolizer-16: b00sSguDR1afiiWpzmKnCg + toolchain-linux32-toolchain-sysroot: WaiGPfSGSHmmU8c_HVEtsA + toolchain-linux64-aarch64-compiler-rt-16: Vx3Q69CrQ9q9aZ8DFw1VzA + toolchain-linux64-afl-instrumentation-2.5: A7_BN3M7TdO8-TxHR_OsJA + toolchain-linux64-android-avd-arm-repack: PNIDJ1eBRuebxCzdXIifWw + toolchain-linux64-android-avd-arm64-repack: cJxzEwTQRAWYadCb7W8OdQ + toolchain-linux64-android-avd-x86_64-repack: KR2dbYiBTyuunZj35eHVhg + toolchain-linux64-android-ndk-linux-repack: Q-JQhzdHQnmCqr54qFFojQ + toolchain-linux64-binutils: f81_nol8QbyHT-nUi07Eng + toolchain-linux64-binutils-2.31.1: FIVVjEl0SqKtVoIHhy9FTg + toolchain-linux64-breakpad-injector: HSvQKDT9Q7mGQGg73Ymd_w + toolchain-linux64-cargo-vet: LwvUfYIbQDe7wm1eEddOMQ + toolchain-linux64-cbindgen: FWhvCgYCR-G0bseThl5WJw + toolchain-linux64-cctools-port: W6CI9YSQShOY0a770Pq5ag + toolchain-linux64-clang-14: E9ae4CgOTfGZ_Jb8-Hhu3Q + toolchain-linux64-clang-14-stage1: EB1yU-1LSgaBxiKvzSJm4A + toolchain-linux64-clang-16: SV8vfdZaQ1-9JIVdCfEVxQ + toolchain-linux64-clang-16-mingw-x64: elZRAG9bSNuk5ApDEEHWQw + toolchain-linux64-clang-16-mingw-x86: KXP7oFpYT8OAXfY2WkFJww + toolchain-linux64-clang-16-profile: AaGLhKD3RnuXBkGxJBSG2A + toolchain-linux64-clang-16-raw: ask8A5KWTRCNqdcKC_EXLA + toolchain-linux64-clang-16-stage1: chmo8KG3QmCDkhy6erRP1g + toolchain-linux64-clang-7.0: DW8AzwsfRJG8NChP1X64bA + toolchain-linux64-clang-tidy: KUiB0U9ISHGniWK27haWLQ + toolchain-linux64-dump_syms: T1X_znpaTeuEMQDquKSjHA + toolchain-linux64-fix-stacks: MaNpREDWQi2jbqnK1qK9dw + toolchain-linux64-gcc-8: U26qLaJBQVa43aFD2btkzA + toolchain-linux64-gcc-9: K8pyi0ROS6CbdQbamdVDJg + toolchain-linux64-gcc-sixgill: DKKz3ufMRDqIYKfNZQjaow + toolchain-linux64-geckodriver: ezE2RLOLSf-1Z2WbdOGWJQ + toolchain-linux64-gn: ZPb84fQIT36Y9YLHsjHQWQ + toolchain-linux64-hfsplus: FhnREwoEQRmaL4OPg3sTXQ + toolchain-linux64-jdk-repack: XfMjSXDNRQ6NiTCyZCs07w + toolchain-linux64-libdmg: GL-BW8EoTVeVELvQvC-tWg + toolchain-linux64-llvm-symbolizer-16: KEr5RWW0Rte7AEOEDlPt0Q + toolchain-linux64-makecab: Ecr2GzsvRs676_49QnJrXQ + toolchain-linux64-mar-tools: CvNcaWoEQeCTsam6ARQ5kQ + toolchain-linux64-mingw-fxc2-x86: VH-7wA-ESKO6YTmB_cDK-Q + toolchain-linux64-mingw32-nsis: IYfjlGWeT8eQJOU584utHw + toolchain-linux64-minidump-stackwalk: UIRI49TWSkqCij-ucNeMoA + toolchain-linux64-mkbom: IJkWYdlURFKMkXo_tV8ScQ + toolchain-linux64-msix-packaging: PBItAfqbSsaF9vUGb2V57g + toolchain-linux64-nasm: JR09ov6XTzyBhKfUYiRSXg + toolchain-linux64-nasm-2.14.02: Fh1tjrVFSACoWSFs97f1rg + toolchain-linux64-node-12: VO_ycfGaT9SRsORPojFO1Q + toolchain-linux64-node-16: cQz1GGE6SLqbyjtWcyVTfQ + toolchain-linux64-pkgconf: b6-JQsdYTfar6MidVlLvvA + toolchain-linux64-python-3.7: O-wLDeOUT62C5KB8GrWGbA + toolchain-linux64-python-3.8: OhvgmPMSTlmIB5vVFmJy3A + toolchain-linux64-rust-1.65: VocVZTiMSKeGj59hSb2h6A + toolchain-linux64-rust-1.66: IaoVp3RoSwa_zIhy9HrIKg + toolchain-linux64-rust-1.69: FyKgFNcQQzW3jNtY1JYLkw + toolchain-linux64-rust-cross-1.69: eS75a2khQK6WSgdxpUWqFg + toolchain-linux64-rust-dev: E0pm-NMsSeCfQtvI_CwLZA + toolchain-linux64-rust-macos-1.65: dxaGSMehSiWHNUCoeFLASw + toolchain-linux64-rust-macos-1.69: MuEniHfFRteYZUVav0ecUg + toolchain-linux64-rust-size: W1Q7SSbcS76k2VW-gEyUlg + toolchain-linux64-rust-static-1.69: FSy6OIjwQdepNWIZKe6seg + toolchain-linux64-rust-windows-1.65: fJBOmPxTSSW2vLKVbsSZPQ + toolchain-linux64-rust-windows-1.69: F2EVBkvjT1yh50DmuNQKKA + toolchain-linux64-sccache: T-oI2iWRQ-CEE2fjTu6x1w + toolchain-linux64-toolchain-sysroot: JqOMSlqpR--el-NDF7SPbA + toolchain-linux64-upx: ILEygdkIQT6f5x77p15iFw + toolchain-linux64-winchecksec: fKhj283KSpy8tLLqz0SjMw + toolchain-linux64-wine: YF1iG3ynTxWXtilE4CfzQw + toolchain-linux64-x64-compiler-rt-16: VPQTxhhKRsqMULYxX1fDwg + toolchain-linux64-x86-compiler-rt-16: GcpY6FueQ0CuyrKJNdZjtw + toolchain-linux64-xar: YWldEboJTOm0_jXus7XQ0A + toolchain-macosx64-aarch64-cargo-vet: YhvITXBGRCqfEcIpD_BFEw + toolchain-macosx64-aarch64-cbindgen: HqQOKaIETMGz55LGQps1CA + toolchain-macosx64-aarch64-clang-16: GW4ZYvkHSRqnu95v8T_pGA + toolchain-macosx64-aarch64-clang-16-raw: Ecahw-P5Th2jD58GZxTVsQ + toolchain-macosx64-aarch64-clang-tidy: Y4h7coNTTn68aWYKbYJQgw + toolchain-macosx64-aarch64-compiler-rt-16: F_N9rkYxReeITfDxAd75gw + toolchain-macosx64-aarch64-dump_syms: OTryxKiBQvOwV_B-WWr8hA + toolchain-macosx64-aarch64-fix-stacks: QV7g3rY0SwKL1sB8kUU52g + toolchain-macosx64-aarch64-llvm-symbolizer-16: SlzCCE8eTLmQLDhpVzkuwg + toolchain-macosx64-aarch64-minidump-stackwalk: KkdQNNAkR1icyiUvN0M9xA + toolchain-macosx64-aarch64-nasm: feIcqKupQ_aNIhP6tgwhKg + toolchain-macosx64-aarch64-node-16: LITsE7xeS_y5VsbPwkAMjw + toolchain-macosx64-aarch64-pkgconf: QnWkafJ1QkmZkEuZ36FtPw + toolchain-macosx64-aarch64-sccache: a06ZaTzMTdixu6blf8lRmA + toolchain-macosx64-cargo-vet: GrmCDj7YSPShuqLh2AunRQ + toolchain-macosx64-cbindgen: V7ZHGAToRHiwbcoD9GqxEg + toolchain-macosx64-clang-14-raw: T_YsKzIfTH68r1tcOa3KpQ + toolchain-macosx64-clang-16: V7TB8Iy3TfCLfNh8RdumsA + toolchain-macosx64-clang-16-raw: dnnF_CX-RmewfspAUSJhdA + toolchain-macosx64-clang-tidy: KIes-BT1Sx-Yvkk4SDcFxw + toolchain-macosx64-dump_syms: Af6X6RAUTM-rFTEHlbEHKw + toolchain-macosx64-fix-stacks: WApGFdMtRfiBbUGliFBwBA + toolchain-macosx64-geckodriver: CHIpVtcHR2SulcA9x8hyRA + toolchain-macosx64-gn: RwhEqYaPRv6jYesXLYSOmQ + toolchain-macosx64-llvm-symbolizer-16: WvYTPKn7QD2B4f67-WiEDA + toolchain-macosx64-minidump-stackwalk: HuE597bmSQixubRlB8Q_9g + toolchain-macosx64-nasm: Ys6AZwKIQCWjJNQyfPa6UQ + toolchain-macosx64-node-12: Yk6rFXVZREmr7uAvr3cjtw + toolchain-macosx64-node-16: PMDzcVpAQN-aYw3lH3W5dw + toolchain-macosx64-pkgconf: T43w-ZejQXueoli_zja5Qg + toolchain-macosx64-python-3.8: MO3JSICrQkimC19_Swjvsw + toolchain-macosx64-rust-1.69: ZxMSkeQqS96rYlWdZLqK7g + toolchain-macosx64-sccache: DYliNQFCTHq8lfXWgn1pHA + toolchain-macosx64-sdk-13.3: DNhf822QTySWGHDFYsVSGw + toolchain-macosx64-x64-compiler-rt-16: TXjhyQfuTgSntl9MTNHrcA + toolchain-mingw32-rust-1.69: dtzgpHrRSm2FUA1FJflWJg + toolchain-nsis: JxKU35oFTma3EMcG_EYnyw + toolchain-rustc-dist-toolchain: QV0WDz3oSFWH4TRoJIeXrg + toolchain-sysroot-aarch64-linux-gnu: RtJwU-DKT32I7pBN3peMQA + toolchain-sysroot-i686-linux-gnu: KwF6AxgEQcKzXPhyxstCDg + toolchain-sysroot-wasm32-wasi-clang-16: ZXE0-McYT92-BxLId9zW7A + toolchain-sysroot-x86_64-linux-gnu: D_9V5RIyS9KIvoCrOQWyYg + toolchain-sysroot-x86_64-linux-gnu-x11: NuK4Oe-gRw288dFz5IEvyw + toolchain-wasm32-wasi-compiler-rt-16: c4gREoTzQzGnKZs4w3QohA + toolchain-win32-compiler-rt-16: VSHMsFA3TUO51_Vo98qfuA + toolchain-win32-fix-stacks: KwexEuJNSOK23g75PrxQCw + toolchain-win32-geckodriver: TSyvxm-CQjS4DeS7ctkfrQ + toolchain-win32-minidump-stackwalk: CunvhBLuRZuJ7sVfRbu-Gw + toolchain-win32-node-12: bt3T58anQ5itxXXu6bgyFQ + toolchain-win32-node-16: JGCCaok9QCi123Fa7L8FYQ + toolchain-win64-cargo-vet: JPr-zZ24SIuo32r7m8r5qA + toolchain-win64-cbindgen: Rfgyq2hJRR6ReAO44v2x0A + toolchain-win64-clang-16: TJMva_GNQDaAo18nlbSPkg + toolchain-win64-clang-16-raw: MHflS_gBSBWIUyJZblRAww + toolchain-win64-clang-16-stage1: fhAX5RkhQBikPujPb47oHA + toolchain-win64-clang-tidy: ChZIaUwxSaSP4lLrWJVtaQ + toolchain-win64-compiler-rt-16: P_7GyhmxS-y9P7sJB0Mv_Q + toolchain-win64-dump_syms: BnD57hEsRFyvgD9F_0KA5A + toolchain-win64-fix-stacks: IhwrPuWWSLC7oKx1Zyjq1g + toolchain-win64-geckodriver: c1SzOsazR7ugk9zQKQrPcA + toolchain-win64-gn: Y8M9IoHPQLutBV4oYhofzg + toolchain-win64-llvm-symbolizer-16: Gk3vQ8pkTiuAD4S6MJhHZA + toolchain-win64-minidump-stackwalk: e4IDvnPNQVqXnqwYQQreHw + toolchain-win64-mozmake: BPR86nQjQg-QcGI7-I_YeQ + toolchain-win64-nasm: BpUJuvjFQIarzt8U7r9z6g + toolchain-win64-node-12: VmAz87fmQWqA0STyxtSIcA + toolchain-win64-node-16: Q1URtR6dTHK2ObZRny5ikg + toolchain-win64-pkgconf: QnCs2mz6TA-p_6bfiATf6g + toolchain-win64-python-3.8: faBX13RcTTykGOZS7e5eSw + toolchain-win64-rust-1.69: FdFfARQTQVa61OIAAV1_Xg + toolchain-win64-sccache: djlshxVFQiGgnHbkRYu2xA + toolchain-win64-vs2019: Id_zrn5KTrWOZFIh1NS0VQ + toolchain-win64-vs2022: Bi85TCWMQWe363eCnVLKzg + toolchain-win64-winchecksec: Q1v5wqr3TyyhIpPSCdkIJA + toolchain-wrench-deps: KAOPKeu9QRaSQtWcvZVBjg + upload-generated-sources-dummy-icecat-macosx64-shippable: R04Lt8RPTmCsrS4Fs0pyOQ + upload-generated-sources-linux-shippable/opt: BOenJRrQR16zincslSDG8A + upload-generated-sources-linux64-shippable/opt: KkJiwFjzRTONanWcxRZMXA + upload-generated-sources-macosx64-aarch64-shippable/opt: Ea05qe4nQh-0flvldV8yoQ + upload-generated-sources-macosx64-x64-shippable/opt: bczPTAxETvm89DSAX1hphg + upload-generated-sources-win32-shippable/opt: FJ-RgGbvSqmRFZ-mnM3xjg + upload-generated-sources-win64-aarch64-shippable/opt: I_gveu3DQE-OOxUwdZw8eg + upload-generated-sources-win64-shippable/opt: UiEYunBAQ4qYJYYDpXlzlw + upload-symbols-dummy-icecat-macosx64-shippable: I3TP3buuSMaKKXpRCvELtg + valgrind-linux64-valgrind-qr/opt-swr: X-5Guhz8SYqI8x-V1xuxhg files_changed: - - dom/base/TimeoutManager.cpp - - dom/base/TimeoutManager.h - - dom/workers/WorkerPrivate.cpp - - dom/workers/WorkerPrivate.h - - dom/workers/WorkerScope.cpp - - modules/libpref/init/StaticPrefList.yaml + - dom/html/HTMLDetailsElement.cpp + - gfx/thebes/gfxUserFontSet.cpp filters: - target_tasks_method -head_git_rev: 73462f0ff623648c49b17892d06fab955d6a6ee1 -head_ref: 82e96a128bf5e3e7dd6e5180c9528f623ba5e0f7 -head_repository: https://hg.mozilla.org/releases/mozilla-esr140 -head_rev: 82e96a128bf5e3e7dd6e5180c9528f623ba5e0f7 +head_ref: 8a02a7c43f1eddfd18926f0266d188b4f359c0aa +head_repository: https://hg.mozilla.org/releases/mozilla-esr115 +head_rev: 8a02a7c43f1eddfd18926f0266d188b4f359c0aa head_tag: '' hg_branch: default level: '3' message: '' -moz_build_date: '20260106170501' -next_version: 140.7.1esr +moz_build_date: '20231113155436' +next_version: 115.5.1esr optimize_strategies: null optimize_target_tasks: true owner: user@example.com phabricator_diff: null -project: mozilla-esr140 -pushdate: 1767719101 -pushlog_id: '425' +project: mozilla-esr115 +pushdate: 1699890876 +pushlog_id: '162' release_enable_emefree: false -release_enable_partner_attribution: false +release_enable_partner_attribution: true release_enable_partner_repack: true -release_eta: '2026-01-13T14:00:35.136Z' +release_eta: '2023-11-21T14:00:00.000Z' release_history: {} release_partner_build_number: 1 release_partner_config: @@ -2349,7 +1967,7 @@ release_partner_config: upload_to_candidates: 'true' release_partners: null release_product: icecat -release_type: esr140 +release_type: esr115 repository_type: hg required_signoffs: [] signoff_urls: {} @@ -2359,4 +1977,4 @@ test_manifest_loader: default try_mode: null try_options: null try_task_config: {} -version: 140.7.0esr +version: 115.5.0esr diff --git a/icecat/taskcluster/test/params/me-push-icecat.yml b/icecat/taskcluster/test/params/me-push-icecat.yml index b5ad960d39..af248e8393 100644 --- a/icecat/taskcluster/test/params/me-push-icecat.yml +++ b/icecat/taskcluster/test/params/me-push-icecat.yml @@ -1,10035 +1,7961 @@ -android_perftest_backstop: true -app_version: 140.7.0 +app_version: 115.5.0 backstop: true base_ref: default base_repository: https://hg.mozilla.org/mozilla-unified -base_rev: edaa4f77d7756862c1d5734e0529a73ebeda9596 -build_date: 1767719101 +base_rev: 78a0edacb31faeacf8d1606c7ee7408a269cdb22 +build_date: 1699890876 build_number: 1 do_not_optimize: [] existing_tasks: - attribution-macosx64-ach-shippable/opt: EAZGnumNRgO-udW4MBU2uQ - attribution-macosx64-af-shippable/opt: YJRgeMwXQeetx-46UcU02Q - attribution-macosx64-an-shippable/opt: YreFloW7TWOF7EGTsCL2ug - attribution-macosx64-ar-shippable/opt: JligST8kSiikvllR9-4pTQ - attribution-macosx64-ast-shippable/opt: FeOioVbxRK6wzhw2J9QNcw - attribution-macosx64-az-shippable/opt: ZYap8bfzQV2EIs1w7adGww - attribution-macosx64-be-shippable/opt: CkOQ1Pb9TyWI-s47qV8XiA - attribution-macosx64-bg-shippable/opt: ND-P4hq_SxmnytaGmL4Jaw - attribution-macosx64-bn-shippable/opt: eLmUA4uRS_6fCKe-t7dTPA - attribution-macosx64-br-shippable/opt: Lg68Hc-ETLiwyg4HCJZInQ - attribution-macosx64-bs-shippable/opt: CiBl8nfpSTKe9h5MEuNCMA - attribution-macosx64-ca-shippable/opt: Krt362xtQnSLGJ_IaGjRPw - attribution-macosx64-ca-valencia-shippable/opt: a_dCleJYTYeaPbWwGu-nDw - attribution-macosx64-cak-shippable/opt: JjxvOfXmQvySsFYZZVvjFw - attribution-macosx64-cs-shippable/opt: U3urUkSpTZyUzI7Oa37gTA - attribution-macosx64-cy-shippable/opt: Oo6kwBfYSJmxFnz8KaUs5A - attribution-macosx64-da-shippable/opt: Ws7p58wRQyGyU3RoxCVmnw - attribution-macosx64-de-shippable/opt: SfGnLYKGS_SjVR-ORgjJVA - attribution-macosx64-dsb-shippable/opt: Wwdr6Du_RaG4wilEaJKaeQ - attribution-macosx64-el-shippable/opt: L3L7GsFlSlm55quKuguxbA - attribution-macosx64-en-CA-shippable/opt: YdOck_SzQ7u27j5ur0O0Kw - attribution-macosx64-en-GB-shippable/opt: QkjAalbuQrKfyHNH7iHdbA - attribution-macosx64-eo-shippable/opt: WU612YBrR-KI9CYLVZYZSg - attribution-macosx64-es-AR-shippable/opt: O6YkwuEVQlma2Yz7RRfVhw - attribution-macosx64-es-CL-shippable/opt: UUGyreWwQFOWplpzLaqf3g - attribution-macosx64-es-ES-shippable/opt: YfSsg1lpQm-h9x78FGzmvw - attribution-macosx64-es-MX-shippable/opt: DHd5-s-JSVawOVf3_LdNMQ - attribution-macosx64-et-shippable/opt: WWXsO_06R0qWk5Eh3Y0s4w - attribution-macosx64-eu-shippable/opt: esAkFobFScyUng-dg1mi2Q - attribution-macosx64-fa-shippable/opt: fvUrUtjzTsK8xQ3T4VDrRw - attribution-macosx64-ff-shippable/opt: dGT3wHXMQD6ILcgIVtBWXQ - attribution-macosx64-fi-shippable/opt: Sf_pL_uMQZeRJcLETN8myg - attribution-macosx64-fr-shippable/opt: eOffq-FNQKO4p3tpDmpIEA - attribution-macosx64-fur-shippable/opt: UdbIKU3wS6ugHy-3xy3e1w - attribution-macosx64-fy-NL-shippable/opt: fyGC3FXNREWjj5MIsomEow - attribution-macosx64-ga-IE-shippable/opt: ZytP_qKrRl60ZbLTCd7kOA - attribution-macosx64-gd-shippable/opt: DpJB-iPlQ0ydJKBmndCs7A - attribution-macosx64-gl-shippable/opt: NrjecjbhQ6aC3vxLj0SA1g - attribution-macosx64-gn-shippable/opt: PyXY_FThTfme19c02B4BfA - attribution-macosx64-gu-IN-shippable/opt: XRXhRQLARKapV4iRwxHdpA - attribution-macosx64-he-shippable/opt: L0XcDoqLQK6HqJU3VvA_Mg - attribution-macosx64-hi-IN-shippable/opt: IX_GFHwxRfKDJpgrHYbE1Q - attribution-macosx64-hr-shippable/opt: S4f77ByvR0qw-lyzIVSCQw - attribution-macosx64-hsb-shippable/opt: CcQlrxknT-a1Q5_AbiEvuA - attribution-macosx64-hu-shippable/opt: JRCewt-iTaaULBeO1zgcmQ - attribution-macosx64-hy-AM-shippable/opt: OY0EqMxfQjW55KvR_TEMZg - attribution-macosx64-ia-shippable/opt: VKk-kP4DStOs0TKrkwJGLQ - attribution-macosx64-id-shippable/opt: LYEBsX4RTG2CbmzvauOvhw - attribution-macosx64-is-shippable/opt: Hxfg6JB7SyKVsK0Li0K3Zg - attribution-macosx64-it-shippable/opt: cv3yzPnYQfmvaqo0dGZnMA - attribution-macosx64-ja-JP-mac-shippable/opt: SEqkugUbS8aVFaHq0h2N1g - attribution-macosx64-ka-shippable/opt: MFzwfEnUQJaV8gNVpKKQjw - attribution-macosx64-kab-shippable/opt: J_ElXlcLTn6oPHNiH1M0wg - attribution-macosx64-kk-shippable/opt: XWCpDX4JRYGskO4qTi85kg - attribution-macosx64-km-shippable/opt: OD7-PiZFRvWWpnjN-bzikw - attribution-macosx64-kn-shippable/opt: b1FbL3alSk-1pw1udHhZ2w - attribution-macosx64-ko-shippable/opt: RT0FkRQVSveHh99rHt2UDA - attribution-macosx64-lij-shippable/opt: BWiAKZqyRR--hy7FxS6TMA - attribution-macosx64-lt-shippable/opt: SGH2XXTiQw2nlxLaPjJuQw - attribution-macosx64-lv-shippable/opt: JZstZKXWSdeC2SLu7rRJxA - attribution-macosx64-mk-shippable/opt: HEJlAYk_SNufBkNBG5myVg - attribution-macosx64-mr-shippable/opt: LAzP6sfuRGuiRZpMtSEouQ - attribution-macosx64-ms-shippable/opt: F_Wp_14YRbaTR3mzzYlbww - attribution-macosx64-my-shippable/opt: dP-qQFq8RueIWCoiDBGO4Q - attribution-macosx64-nb-NO-shippable/opt: EtLNryCNTBKujVm4ue__4A - attribution-macosx64-ne-NP-shippable/opt: MO8xVfWYT-SxmJ1fyBdByg - attribution-macosx64-nl-shippable/opt: UQqI470hRkeCX7a7D8mexA - attribution-macosx64-nn-NO-shippable/opt: bXUb23TRS46QVvStoHHRAA - attribution-macosx64-oc-shippable/opt: EIn8fHOQSdeN8OpTzZmQAA - attribution-macosx64-pa-IN-shippable/opt: MifQORBrRtuiDcxK61Tnpg - attribution-macosx64-pl-shippable/opt: SrVcnhFMReqaXjFjWPhIRA - attribution-macosx64-pt-BR-shippable/opt: d0MylWtySCCLFgXj-ewn5w - attribution-macosx64-pt-PT-shippable/opt: DHetk3eETaOJzF8kVslxmA - attribution-macosx64-rm-shippable/opt: HXgbJtRNRsK1PRhwVfiFgA - attribution-macosx64-ro-shippable/opt: OgacB3P7Rw2avsmEmWFZnw - attribution-macosx64-ru-shippable/opt: efvfDBeARKyNym-rRH-NFQ - attribution-macosx64-sat-shippable/opt: X84Bn6aFSxuAsO2YyRyEtQ - attribution-macosx64-sc-shippable/opt: Mc3V5WGlQ4Ki4tIA38zang - attribution-macosx64-sco-shippable/opt: aBO8sgTnTUKj3QgSSylJ0w - attribution-macosx64-shippable/opt: O1_cUhGhRXa--_WIWpmcjg - attribution-macosx64-si-shippable/opt: awIVhtr2SXCCsnIdsMx_BQ - attribution-macosx64-sk-shippable/opt: SFctMPrmR8e5oZUOCKVa4A - attribution-macosx64-skr-shippable/opt: WjzhQV0KR5ygASuIs5vwnA - attribution-macosx64-sl-shippable/opt: UQP5StqDSrCmuGxqKYBLzw - attribution-macosx64-son-shippable/opt: RLDeUIcSS_qvxPkMmNYDcA - attribution-macosx64-sq-shippable/opt: IfZj3jw9Qfi90Lx2hGdgVQ - attribution-macosx64-sr-shippable/opt: dVhSHURuQcyGOo90JfGuyg - attribution-macosx64-sv-SE-shippable/opt: f9eL1USyTnGt2PfsCBmqdw - attribution-macosx64-szl-shippable/opt: VVLVi40gSpewWZEWTopsnw - attribution-macosx64-ta-shippable/opt: Fql-bjmQT-eUUFay5PbP6Q - attribution-macosx64-te-shippable/opt: bH6KBou4S7qXoPG7-rT_Pg - attribution-macosx64-tg-shippable/opt: Yfl0YgkqT6-n0HwVkc7ANQ - attribution-macosx64-th-shippable/opt: VviREx_3QqKDmZJNfuKK2A - attribution-macosx64-tl-shippable/opt: cLLhU9QyRfKiqF3uZ_XWJA - attribution-macosx64-tr-shippable/opt: NkQiQHzUTLmLaxoJ_aoYrA - attribution-macosx64-trs-shippable/opt: UIcnIV_fRHOMxC8c28PNpA - attribution-macosx64-uk-shippable/opt: Jzbt-v45RpShm-3MXUdcEQ - attribution-macosx64-ur-shippable/opt: J01t8J_QTeG4xZk2FX7JwQ - attribution-macosx64-uz-shippable/opt: UfvYu66VTXCAbYBv5jmU6A - attribution-macosx64-vi-shippable/opt: dL32AaPLQzCJlUZMuhZ_vw - attribution-macosx64-xh-shippable/opt: BIdl-zl9QbiWLTQ1PbatNw - attribution-macosx64-zh-CN-shippable/opt: BqskPf8PSa6i6Qnfcrib0g - attribution-macosx64-zh-TW-shippable/opt: PXiMoY_XS2WXIczbl9rUTQ - attribution-win32-ach-shippable/opt: GxA2Mi2zS52CCPjtkd3pMQ - attribution-win32-af-shippable/opt: SJPTlbHBTFmBR_dSoFSdUQ - attribution-win32-an-shippable/opt: GiFI69cYSfeMu628SFUKwg - attribution-win32-ar-shippable/opt: Ux5wgpV5Q1eY70YgvLVsRQ - attribution-win32-ast-shippable/opt: cIIOxt1KRBm6obpbc2-D9Q - attribution-win32-az-shippable/opt: AFZ4o8VtR9S3V-nsrZqz5w - attribution-win32-be-shippable/opt: L5IsZJs9Q8KLC-4AoIyr1A - attribution-win32-bg-shippable/opt: KGISjVOrQFeSVfxRKw8EMQ - attribution-win32-bn-shippable/opt: MV5qP_1gRg2R6CZevUW6Zw - attribution-win32-br-shippable/opt: bb3_IQ9cTou_hhebLY1WSg - attribution-win32-bs-shippable/opt: EV-AMg0BTi6riCqoFry2SQ - attribution-win32-ca-shippable/opt: D0P4sQMvQbO2YGLKjZeXDw - attribution-win32-ca-valencia-shippable/opt: JAXcCr2xTzejp8JVG45Oow - attribution-win32-cak-shippable/opt: atvZmvitTZm2H64DvBrB8w - attribution-win32-cs-shippable/opt: TRhdmyYETbKKLxylkDCkVQ - attribution-win32-cy-shippable/opt: OYS2PU9VRDKRbTdxjY9WLQ - attribution-win32-da-shippable/opt: M6wLwIoyTVivEBXLNG9GOw - attribution-win32-de-shippable/opt: AfVKAE0YTZeywJUxHDBasw - attribution-win32-dsb-shippable/opt: BK8dBzFiTTu84tu2dHV1RQ - attribution-win32-el-shippable/opt: MkqWlm8yQvaLSuUCXMwsKA - attribution-win32-en-CA-shippable/opt: LRhT5xHeSrKuSNIxRr24BQ - attribution-win32-en-GB-shippable/opt: JryE8jnTQD-1sE00Xajv7A - attribution-win32-eo-shippable/opt: TEyBvLuUTR2U1E78HySjIQ - attribution-win32-es-AR-shippable/opt: EKTI63hETmCHZNeJ7S5rsQ - attribution-win32-es-CL-shippable/opt: Gvvhh_0IRDStOWQXhVC1xg - attribution-win32-es-ES-shippable/opt: Z6q4Jxe8QiWFryt_LeI5yw - attribution-win32-es-MX-shippable/opt: XEa3nZieRT6siiV0DYgRVQ - attribution-win32-et-shippable/opt: Bog6fBUPSfqbBmog125I7Q - attribution-win32-eu-shippable/opt: RZyUiXfIR0Sz3lpeqPRr3Q - attribution-win32-fa-shippable/opt: PcmLiH6nRZWvoZdg3sPDwQ - attribution-win32-ff-shippable/opt: XVw2KNh7SiKWHLZCBFejtA - attribution-win32-fi-shippable/opt: K9XR9slWR9GDgGFfsXvD-A - attribution-win32-fr-shippable/opt: P35MoI_JT7qLqYFqMOs0Vw - attribution-win32-fur-shippable/opt: C6bnkq1hTNG4E9x9WiEsnA - attribution-win32-fy-NL-shippable/opt: aDTFMZcPQbihKqALfPOeGQ - attribution-win32-ga-IE-shippable/opt: PbricnK3TKSdDSd-zPYe6w - attribution-win32-gd-shippable/opt: XfYue2wkSQq-OR9zpOp1OA - attribution-win32-gl-shippable/opt: fKvolzu8RS6mWBXI1Eue8g - attribution-win32-gn-shippable/opt: I4ou8FtgRQimwcL7Hd8Qhg - attribution-win32-gu-IN-shippable/opt: BPDs4A76T16lUkNf6gC3RA - attribution-win32-he-shippable/opt: AN2efKhXTXm1zn0GV27HcA - attribution-win32-hi-IN-shippable/opt: fSp53OhtTPWI8N-hBDrJ7w - attribution-win32-hr-shippable/opt: cOA7HbtMTOSh5zX5O9jGcg - attribution-win32-hsb-shippable/opt: SgnbG-L7SrCFKCGu5NpZQA - attribution-win32-hu-shippable/opt: Ur4DBmFTRgu6lATrQ5lWCA - attribution-win32-hy-AM-shippable/opt: Ny2yg-y8T4axINZ-ppiROA - attribution-win32-ia-shippable/opt: HVfGpkR9Q-i_PCg3k2f4TQ - attribution-win32-id-shippable/opt: K79089T-RcGKyeIBBA2csA - attribution-win32-is-shippable/opt: ZZotGLVeSTSO39X2Ml-FBA - attribution-win32-it-shippable/opt: UeF9tPhiT_2-VYfEbw-4wA - attribution-win32-ja-shippable/opt: WhqLGLQqTuKbRQurqGFn7Q - attribution-win32-ka-shippable/opt: Khy7_mQjQ4-N8_WUef0Qyw - attribution-win32-kab-shippable/opt: faj48lD9R4SYR6fF02x3rQ - attribution-win32-kk-shippable/opt: eoIgKJsrQA2TLpYfNtcUfA - attribution-win32-km-shippable/opt: bt7q2yqHTeWpCQ51jz7GvA - attribution-win32-kn-shippable/opt: ISvSiNWHQBCLKP6BHpPfTA - attribution-win32-ko-shippable/opt: VolJ4BSwRXeeL5svev3nJQ - attribution-win32-lij-shippable/opt: B2-5WSi5QtmwdQO1_o7HdQ - attribution-win32-lt-shippable/opt: Wv_AcUX0QCqCJZWr_y0ynw - attribution-win32-lv-shippable/opt: d5OqWBmhTzyeXlwFIKjCnA - attribution-win32-mk-shippable/opt: ZCbm6u54Sh-S1Tw8Re7cjg - attribution-win32-mr-shippable/opt: SuHcmUdDTKGoylRoiNCxzg - attribution-win32-ms-shippable/opt: VpRsVY9VTyyNmx56cCk7xg - attribution-win32-my-shippable/opt: Re045h2xQRCdpwoNt0czeA - attribution-win32-nb-NO-shippable/opt: Z_C6jzAXQ1mreq44Gpah0w - attribution-win32-ne-NP-shippable/opt: J20HhXfzQnKQdZO_ndcctQ - attribution-win32-nl-shippable/opt: G9IvTCDcS7GEwzAvMIDe7g - attribution-win32-nn-NO-shippable/opt: LFgaR9jVSWKYuZlQ-E5K0w - attribution-win32-oc-shippable/opt: Yr9AaIuhRduRIcRhm_2_Qw - attribution-win32-pa-IN-shippable/opt: K1CbgvHZTEiR3RcEqVvzVg - attribution-win32-pl-shippable/opt: dMLvqqLNSfKwecaOcMeBJw - attribution-win32-pt-BR-shippable/opt: O6m7CKkETEKgr-ju4Tg3cQ - attribution-win32-pt-PT-shippable/opt: KZVCACewTGC44w3DXhg0dA - attribution-win32-rm-shippable/opt: SRwV-rxISLCIQ_HfD2nlgw - attribution-win32-ro-shippable/opt: EDsuyWz5RY24BAByEEbLhw - attribution-win32-ru-shippable/opt: a4u9Ssj-QZ-jvF39xksWkw - attribution-win32-sat-shippable/opt: FH2VaLDqRPWTfSESdo-JyQ - attribution-win32-sc-shippable/opt: P2zVXowqRBakrS3dxWkAEQ - attribution-win32-sco-shippable/opt: POFMqgAMSx-k9cg980l0IA - attribution-win32-shippable/opt: R_6cE6qNQtS3S5kSVeVHpQ - attribution-win32-si-shippable/opt: b68TfSgnTriMi-K-Jt_mqw - attribution-win32-sk-shippable/opt: DirwdCYzSdKV9STtm5c8QA - attribution-win32-skr-shippable/opt: bkR6E314QuyB2Bb4QB8t8Q - attribution-win32-sl-shippable/opt: HXAy-lBCSfGr1FgNgJDToA - attribution-win32-son-shippable/opt: cDvjz4biQR6WHBWz-dR5aA - attribution-win32-sq-shippable/opt: XvGlGFmOQsi2sFxYNdssxQ - attribution-win32-sr-shippable/opt: Qm0I6n29Qfqy6ezZsV164A - attribution-win32-sv-SE-shippable/opt: KtgbqgQpRMybl2onIYw9zg - attribution-win32-szl-shippable/opt: GWtFsYlwSSGwOFef9_LpJw - attribution-win32-ta-shippable/opt: Vuh2PV13Qm62ARmKmdjaWA - attribution-win32-te-shippable/opt: MUkGx0NHSriOBeybroUTKQ - attribution-win32-tg-shippable/opt: LIA9ktG2SCOWNWiu6ikWFA - attribution-win32-th-shippable/opt: AoZ-LkN1RuGzz5kUO7wFwg - attribution-win32-tl-shippable/opt: XSKL2NGETMi7l6U0Nm3zTA - attribution-win32-tr-shippable/opt: WtYjo4G3SQSyW_jNMsl6GQ - attribution-win32-trs-shippable/opt: PNwDltJOQm2h4hNIKTLB-g - attribution-win32-uk-shippable/opt: HFROehAbSoymMKN1MOmf7Q - attribution-win32-ur-shippable/opt: SI-coLPrSLCfzWPmAynV8w - attribution-win32-uz-shippable/opt: QuozRj5CRXmmC1xyytIjsg - attribution-win32-vi-shippable/opt: QyMsxXBHTaea5dM2CYcBVg - attribution-win32-xh-shippable/opt: Gk2N5xoeTKivdZsoXAATuA - attribution-win32-zh-CN-shippable/opt: U-t7w4o9QE66v16xI0MDWg - attribution-win32-zh-TW-shippable/opt: U0HXrRPbQKGt9REBeTNvRA - attribution-win64-aarch64-ach-shippable/opt: Aidc4p_8QvSUC2vEZc1R5g - attribution-win64-aarch64-af-shippable/opt: BAU2SHebRlC5BqwPI0CL9A - attribution-win64-aarch64-an-shippable/opt: DGTFJgecTU-4PUOWjXKL6g - attribution-win64-aarch64-ar-shippable/opt: KY999NgnT2CfxP8NuaSTLA - attribution-win64-aarch64-ast-shippable/opt: e2Bv4dMqTN6MUrDzO7edrw - attribution-win64-aarch64-az-shippable/opt: fqDyqj85SEq48YfQ4Mk6lw - attribution-win64-aarch64-be-shippable/opt: J0pQDXyoScSpbVAdOUEfeA - attribution-win64-aarch64-bg-shippable/opt: e-C31BJWQQm5aab_pPIJgw - attribution-win64-aarch64-bn-shippable/opt: BurEdndtSKmMBmj1Tduu2w - attribution-win64-aarch64-br-shippable/opt: QBIWCiNDS5G7PsgjOQtrGw - attribution-win64-aarch64-bs-shippable/opt: BuEFcYoUSGeNxEGc9Cjgcw - attribution-win64-aarch64-ca-shippable/opt: ElXOIvsHSj2N8zPhMRPF8A - attribution-win64-aarch64-ca-valencia-shippable/opt: B9Rslnt0RqSI_2-bWm6cjw - attribution-win64-aarch64-cak-shippable/opt: emu9FnaLQqyByygcNBy1hg - attribution-win64-aarch64-cs-shippable/opt: VKFJ5137Soq_Auf0AN3HVw - attribution-win64-aarch64-cy-shippable/opt: Hll1ioXcRU-Xgdkm2oF5uw - attribution-win64-aarch64-da-shippable/opt: MblGIcvrSUO48RaAb1YwSw - attribution-win64-aarch64-de-shippable/opt: NNrIjdfeT9eWruotMF-Xow - attribution-win64-aarch64-dsb-shippable/opt: A6ulyNcWRxWg-jI-h_8o-A - attribution-win64-aarch64-el-shippable/opt: W6V5vW4DSKyDEZvX3y-KFg - attribution-win64-aarch64-en-CA-shippable/opt: RXyKeFGMQNetEAINVcD13w - attribution-win64-aarch64-en-GB-shippable/opt: DkayeWegR4yH8LKkBRBnbg - attribution-win64-aarch64-eo-shippable/opt: dEZkpSWsRSqkXBjvt36P9w - attribution-win64-aarch64-es-AR-shippable/opt: InRTXtsbTWelQncPNVu61Q - attribution-win64-aarch64-es-CL-shippable/opt: UaotgDt5To2njBqhA-KKaw - attribution-win64-aarch64-es-ES-shippable/opt: IjRlgcr2SGqFLKLlrf6hXA - attribution-win64-aarch64-es-MX-shippable/opt: J5XK2uwjT3GFQ6FwKgTuIQ - attribution-win64-aarch64-et-shippable/opt: A-onW1hLTs-TOVJ9O9x6-g - attribution-win64-aarch64-eu-shippable/opt: J14l-phkTVuz1ku9u3f5OQ - attribution-win64-aarch64-fa-shippable/opt: DUHrTnpNRmaY5YScs_qPpw - attribution-win64-aarch64-ff-shippable/opt: M-Ue2q9VQbGnMBhPj12ciQ - attribution-win64-aarch64-fi-shippable/opt: e6AXVCHbRZuofdgaDXPB6g - attribution-win64-aarch64-fr-shippable/opt: CGkkEKZBSB6Zvhq5efBXqA - attribution-win64-aarch64-fur-shippable/opt: ZgWRTHUJRIuMBNJzD4jv_g - attribution-win64-aarch64-fy-NL-shippable/opt: G5vDXnQWQYusVOG-5lRe6Q - attribution-win64-aarch64-ga-IE-shippable/opt: FSzLYMDIRS2f-7uPqPcNsQ - attribution-win64-aarch64-gd-shippable/opt: EU49mWezR4SzNjCWvNirKw - attribution-win64-aarch64-gl-shippable/opt: D8IIv7C1Tju58BJfXoklOQ - attribution-win64-aarch64-gn-shippable/opt: FXLbgFv_RemVvrcr3vwm3Q - attribution-win64-aarch64-gu-IN-shippable/opt: Bo3COi4bQh6KcY0Yrh3TEg - attribution-win64-aarch64-he-shippable/opt: Lsp2-H0KSza7a-JH25ye9g - attribution-win64-aarch64-hi-IN-shippable/opt: NBJQA4-dSo6IqflY8JFI-g - attribution-win64-aarch64-hr-shippable/opt: VrpBLx8sS-eZH4tgDjG1zg - attribution-win64-aarch64-hsb-shippable/opt: MzKzyNhcTMmpNEaf9_ahig - attribution-win64-aarch64-hu-shippable/opt: ITWs6hjLSW-gERrSOAruWg - attribution-win64-aarch64-hy-AM-shippable/opt: LF1zL6q4SUi5kNwf2kP3PA - attribution-win64-aarch64-ia-shippable/opt: R8n-I2tBSqemNt1Ajno74A - attribution-win64-aarch64-id-shippable/opt: JyoouBNcR7mee2HwqL72SQ - attribution-win64-aarch64-is-shippable/opt: a0T9eN-YRj2Uy5Z40_NS_w - attribution-win64-aarch64-it-shippable/opt: J91QZRDvRvG8e9fEX_tS0A - attribution-win64-aarch64-ja-shippable/opt: Ush5YdFkR72TP_rmvzUM4A - attribution-win64-aarch64-ka-shippable/opt: Y4y-VXSNSJ-mb8f_ZMcFhw - attribution-win64-aarch64-kab-shippable/opt: DXBoR0YrS2u-kUM5iRI4lQ - attribution-win64-aarch64-kk-shippable/opt: Lo9AVisJRL-YRXDRioyV3Q - attribution-win64-aarch64-km-shippable/opt: OdyoHUa_S_KJcJXddKnSBw - attribution-win64-aarch64-kn-shippable/opt: aLFB7KbjR7yi1s5k_nOdzA - attribution-win64-aarch64-ko-shippable/opt: ORZvkdUaRVSu54yYY_6bJw - attribution-win64-aarch64-lij-shippable/opt: A0rvocBRSyCThp6iw1TEmA - attribution-win64-aarch64-lt-shippable/opt: GZ0hSrilQJGoJ1OB1p-EEA - attribution-win64-aarch64-lv-shippable/opt: QtZiF0cjTxO7MZ2cV_Du-w - attribution-win64-aarch64-mk-shippable/opt: a6U2TcxERoCmBN_WTWku6g - attribution-win64-aarch64-mr-shippable/opt: Kc0yrhvGSkCbvkNt1DK3yw - attribution-win64-aarch64-ms-shippable/opt: bwgIYzvlR6W4ykxMsi7Euw - attribution-win64-aarch64-my-shippable/opt: UQXUYhtQQiiyg_ZIUmobRg - attribution-win64-aarch64-nb-NO-shippable/opt: Kvt4mq21SyKZco7dzKc2XQ - attribution-win64-aarch64-ne-NP-shippable/opt: Uo7g49dSRP-AlIb2MO6EQg - attribution-win64-aarch64-nl-shippable/opt: GLFPgdu9QuezpZ0IHFbTPA - attribution-win64-aarch64-nn-NO-shippable/opt: OzTdd5D6Sgu0d-cs33kS2w - attribution-win64-aarch64-oc-shippable/opt: aAnWceUIQlqm3MYdIf_hHA - attribution-win64-aarch64-pa-IN-shippable/opt: GyIRRJQtSd-8tU67EO2lAA - attribution-win64-aarch64-pl-shippable/opt: ZSvaK-EiSYyfAbf1fDGFfA - attribution-win64-aarch64-pt-BR-shippable/opt: TD3x5yjOSN2VYU8zfMNTLg - attribution-win64-aarch64-pt-PT-shippable/opt: YiPbmVbbR_2HKpFayuM5dg - attribution-win64-aarch64-rm-shippable/opt: WCusj_EeT6OwFTuco4C0cw - attribution-win64-aarch64-ro-shippable/opt: GKT-G_3zSuiJsym9FZlkBw - attribution-win64-aarch64-ru-shippable/opt: GZZ-xxx2QLW4I9VvzgLVOg - attribution-win64-aarch64-sat-shippable/opt: G6-ndv4JTxCrgvyxqBQupQ - attribution-win64-aarch64-sc-shippable/opt: CqBx7-RXSOyJtgfHuV2J5g - attribution-win64-aarch64-sco-shippable/opt: dafJSzEsQmWqSsv3o2WUrA - attribution-win64-aarch64-shippable/opt: LvtioEp8TtaeXJTrY25Rxw - attribution-win64-aarch64-si-shippable/opt: fSbuMnhdSJ2fOr4lUfA74w - attribution-win64-aarch64-sk-shippable/opt: JbtWteNtSQa4T9duRFrgoQ - attribution-win64-aarch64-skr-shippable/opt: XN3oxiqoSXymhWEkJQuM4g - attribution-win64-aarch64-sl-shippable/opt: FwMc5cqYTg2jHhdtThJDsg - attribution-win64-aarch64-son-shippable/opt: MdyAwAeGSrCUOtyzqGTdyw - attribution-win64-aarch64-sq-shippable/opt: WTdYGTiMSqq8qV1JZHn8VQ - attribution-win64-aarch64-sr-shippable/opt: Y2fkqdoTScChF5oyIrmfwQ - attribution-win64-aarch64-sv-SE-shippable/opt: RScPdj-eRCio4_lwVfjtLQ - attribution-win64-aarch64-szl-shippable/opt: TtU3tHiGSs-uXHOPyF3x2A - attribution-win64-aarch64-ta-shippable/opt: QUVfUoaCSSia296YtOvIVA - attribution-win64-aarch64-te-shippable/opt: BYApeOEbRIS6TVvrWhZOCg - attribution-win64-aarch64-tg-shippable/opt: Wfsi5nSgQa-AyLJy1hUR_Q - attribution-win64-aarch64-th-shippable/opt: DmPUv1hbSlOpbDtgPOX3mQ - attribution-win64-aarch64-tl-shippable/opt: Kdpevd7ySgGpLBd9p2J-tA - attribution-win64-aarch64-tr-shippable/opt: OeUqY6PKQKasCm3B9hraFA - attribution-win64-aarch64-trs-shippable/opt: Y3qrjsRiSRu1K4buF4VlSg - attribution-win64-aarch64-uk-shippable/opt: aKxflWjRR7m-g-nDiI6BhQ - attribution-win64-aarch64-ur-shippable/opt: dV7Vy_04RgOHTYC6mKgtlw - attribution-win64-aarch64-uz-shippable/opt: Q4s5BAswRmO1IDn3bVo9BQ - attribution-win64-aarch64-vi-shippable/opt: K__evU_XTMm3H0vh4Yz3dA - attribution-win64-aarch64-xh-shippable/opt: X4k_hlOsSnS8FZybqKILoQ - attribution-win64-aarch64-zh-CN-shippable/opt: FCMOp6c-SeyR0Yj24P01-w - attribution-win64-aarch64-zh-TW-shippable/opt: aS7u4_6IQwG2BBi3jUcWiw - attribution-win64-ach-shippable/opt: RL9VqT2VRHSiv8OymtbxYQ - attribution-win64-af-shippable/opt: KvjpZ6qjRI6Vr9MgPjRZ2Q - attribution-win64-an-shippable/opt: AXTubz8gS1O9UXWM-weFLg - attribution-win64-ar-shippable/opt: VT1AAVjWTY-mZUZ2-hQSWg - attribution-win64-ast-shippable/opt: IUOP7i4bQtmQmsni84UwGg - attribution-win64-az-shippable/opt: UViQz-rJR-CQnZLXH7DMbQ - attribution-win64-be-shippable/opt: ISdh6_n8RKetxVyMej1nSg - attribution-win64-bg-shippable/opt: a3HRZEPvRyKRqQsncxDXvQ - attribution-win64-bn-shippable/opt: DCTqXHeIRJWowUumb0T9Gg - attribution-win64-br-shippable/opt: OQbG2fCwRgmCnP8mikI6FQ - attribution-win64-bs-shippable/opt: G3tTFG6DTXa78PmS4764cg - attribution-win64-ca-shippable/opt: an62LybSRHyUoqzNUYhwVg - attribution-win64-ca-valencia-shippable/opt: AE-_Lc_GT66MhFz5s6T4sQ - attribution-win64-cak-shippable/opt: BDDFzO1oSWqStQPrnV-U3g - attribution-win64-cs-shippable/opt: Kuf4_2JYSSG15thZNd-r0Q - attribution-win64-cy-shippable/opt: Hip-yEVeRVyxWrrjAb_0xQ - attribution-win64-da-shippable/opt: SZ_ARYDYSm67ioRZGYItTg - attribution-win64-de-shippable/opt: AhbeNUFoTMqmfnSo16Lwrg - attribution-win64-dsb-shippable/opt: J4bZd2bOR4uy9sEVD_v6ww - attribution-win64-el-shippable/opt: LuVe6RpeQ7y-7N-Q3JVZtA - attribution-win64-en-CA-shippable/opt: DbxJL_cUQz2dmUtABAe0gQ - attribution-win64-en-GB-shippable/opt: S3avEe7FT3CcicA_z-ZdzA - attribution-win64-eo-shippable/opt: RrEj1xPHTiCCRetAM3YMLw - attribution-win64-es-AR-shippable/opt: KEmairsQT5igZqml1iM-Yg - attribution-win64-es-CL-shippable/opt: IBd8AtTbR9-U1wONuPsWUw - attribution-win64-es-ES-shippable/opt: FUJVg_XwRc-4ctBwqp60kA - attribution-win64-es-MX-shippable/opt: UinLJGeZTcaZuScm5b7ZZw - attribution-win64-et-shippable/opt: Zco7Q0BIRu-kA5FoIGu2bw - attribution-win64-eu-shippable/opt: Hk_qIe2oTtm4Vu1H0qCIKg - attribution-win64-fa-shippable/opt: Pxgo9JVaRNy17sIxSohJRA - attribution-win64-ff-shippable/opt: BXyrRhfoR_eXnq5pv9DujA - attribution-win64-fi-shippable/opt: Ql4uyR2tQ2O53sameT0xYQ - attribution-win64-fr-shippable/opt: VmL4DQkESEeZd3ZqZ2t5-Q - attribution-win64-fur-shippable/opt: RIbpOzAnRL-PnyCMN3Em1g - attribution-win64-fy-NL-shippable/opt: ENI2SS73QqmVGVne_cdwUA - attribution-win64-ga-IE-shippable/opt: d4w30Ee5RMKFWQHRErEHWA - attribution-win64-gd-shippable/opt: QC8I_fW_TDqsP-ejrTCmBQ - attribution-win64-gl-shippable/opt: d2pvBwZfRPapWR5EAG8mXg - attribution-win64-gn-shippable/opt: QUZ13UqfQPSgPbk1vKm0gA - attribution-win64-gu-IN-shippable/opt: L2L9Xr7XSmmswKqNQdW9XA - attribution-win64-he-shippable/opt: TLBwvl6jQBmlflmlkgSuvQ - attribution-win64-hi-IN-shippable/opt: T9GmgUvjSKqe52EYwKVjsw - attribution-win64-hr-shippable/opt: fKgZISmITG-uO4GlqV4ZzA - attribution-win64-hsb-shippable/opt: Hq-zdhCuSkekRyk_ecvYvw - attribution-win64-hu-shippable/opt: OyQF4ft2QLeKDtP3Ucy9oA - attribution-win64-hy-AM-shippable/opt: IPvf_xjLT5mwsWSKyIoP8A - attribution-win64-ia-shippable/opt: atJ2sHsdTsCeY23g7ER1dw - attribution-win64-id-shippable/opt: VC45D5klRhOlkXv16J0aBg - attribution-win64-is-shippable/opt: PS5IiFrYS4uG5Pw67SnqSA - attribution-win64-it-shippable/opt: J3_DMxWES_ao1JIbUhA4hg - attribution-win64-ja-shippable/opt: OH8kP6vsR8WffnfK7zpQ7g - attribution-win64-ka-shippable/opt: LAnaeYGUT0mUuazeECkzrw - attribution-win64-kab-shippable/opt: culoBF6nSBKZmDHfgJTA0w - attribution-win64-kk-shippable/opt: H77lsVfBTVyf6BeezG9exQ - attribution-win64-km-shippable/opt: Ng_r6Q1vR8-Pgj2FN48okQ - attribution-win64-kn-shippable/opt: OopsY0x7Qceju0RaXZVIvQ - attribution-win64-ko-shippable/opt: CNG5pYRTRdyzYI-f4Y02xg - attribution-win64-lij-shippable/opt: WrRdbj3dTAOIOjXbad1tEA - attribution-win64-lt-shippable/opt: fPt-qSY3TYGPiOODCN-2LA - attribution-win64-lv-shippable/opt: YUNo9H4LSNmMCTLW2hlw8w - attribution-win64-mk-shippable/opt: NOnE-la3TqKcdbCWENd_Lg - attribution-win64-mr-shippable/opt: VYG0w8PGQHubl_vxZ9mgxg - attribution-win64-ms-shippable/opt: G-1NakcZSI-xEIwTYJkNPw - attribution-win64-my-shippable/opt: IqlVhvzbSPKO75nJZ0dqVA - attribution-win64-nb-NO-shippable/opt: NX9AlAejT9K1_Tq_4jDXqg - attribution-win64-ne-NP-shippable/opt: NRkzjBtkTbGFfdAPgzM2iA - attribution-win64-nl-shippable/opt: Urv-L-9mQiKdrkHd6c7Giw - attribution-win64-nn-NO-shippable/opt: MVx3FEmcQc2cp57EMFZv8w - attribution-win64-oc-shippable/opt: IZ8vCJUcRcyblcBCq7drBg - attribution-win64-pa-IN-shippable/opt: MyPf6sZLQLev6ckElHeKBw - attribution-win64-pl-shippable/opt: S_GJOeASTnKyjfj3MDTnYQ - attribution-win64-pt-BR-shippable/opt: RFByffchRuuiHhLriqKIcQ - attribution-win64-pt-PT-shippable/opt: b04I9-2YRQ6-Cnil3ItIYw - attribution-win64-rm-shippable/opt: PAQ4j59RRBCRDLzS0CSnug - attribution-win64-ro-shippable/opt: fiXHF4GkT7-kZOlW9Vvl9A - attribution-win64-ru-shippable/opt: e5wAVfS7QduRqogd2DD3ng - attribution-win64-sat-shippable/opt: RxPyChmDRi6En7trRVxqTg - attribution-win64-sc-shippable/opt: ck6RW4tCSlKE-1X3kaY0Wg - attribution-win64-sco-shippable/opt: XlbNtFddS6iuHKET6eqjuQ - attribution-win64-shippable/opt: U5aVqkbLQyWRukHe3OvH-A - attribution-win64-si-shippable/opt: LeAqU2IlSKWtSsJ5N7i5Xg - attribution-win64-sk-shippable/opt: FcWT7LfmT9uSxGNj2tCn4g - attribution-win64-skr-shippable/opt: ZO0dHD3pSX-oy27RgmKhqQ - attribution-win64-sl-shippable/opt: Xy55p647Rcq-VJYRb1DIvg - attribution-win64-son-shippable/opt: aoS2mQ1RQGiz7VSBSDWVMA - attribution-win64-sq-shippable/opt: EbdlA9ShQCOWKdLdXB-kGA - attribution-win64-sr-shippable/opt: Zg_EPKR8S_WT3SLYnOUwyQ - attribution-win64-sv-SE-shippable/opt: PeybWSf3SZqxjNZeAb6C0g - attribution-win64-szl-shippable/opt: U8b7zetMQnyxfahgHedBSQ - attribution-win64-ta-shippable/opt: e3zlmOI5TkSBTD6qRhtSmA - attribution-win64-te-shippable/opt: YME5XncJTumJ6tgRO_xZKQ - attribution-win64-tg-shippable/opt: Xvg-lcRQRymF9adbcw-Olg - attribution-win64-th-shippable/opt: VRhYZpjJRQSY0WE2iUCJDA - attribution-win64-tl-shippable/opt: QxLNKZigR2e14CLO50F_HQ - attribution-win64-tr-shippable/opt: N_oPkpu1Sl291Flku9QUQA - attribution-win64-trs-shippable/opt: XZuuV7LxRCG3NGU6DIfiKQ - attribution-win64-uk-shippable/opt: GZ_oSJfBSA2UGsgmyx5Q7g - attribution-win64-ur-shippable/opt: Howu9RV-QEKxtUdWSLLxDA - attribution-win64-uz-shippable/opt: ZtaNagQLR2C56t3RTGY9xw - attribution-win64-vi-shippable/opt: SjYmuDo9Qf6UibeJ3PZeNA - attribution-win64-xh-shippable/opt: RdDFCjHhRkyHiESjIyaJ5g - attribution-win64-zh-CN-shippable/opt: GXwIzqdFQ2KnJiipXk6pUQ - attribution-win64-zh-TW-shippable/opt: AmURzNNCTSiNf2jIOoh9UQ - balrog-ach-linux-shippable/opt: IFjJvsl7RHu11VdiN8aayw - balrog-ach-linux64-aarch64-shippable/opt: YE9CS_SZSVqy7xkJjK0Tqw - balrog-ach-linux64-shippable/opt: QV0YEiG6TZOdGs_xDJZ7sg - balrog-ach-macosx64-shippable/opt: NF8cxpHORJ6-CcLUm87J2A - balrog-ach-win32-shippable/opt: R0NLjjcRRgG8Jn30tQGFiw - balrog-ach-win64-aarch64-shippable/opt: GjyWwnAQTz2TJAnr5K_OSA - balrog-ach-win64-shippable/opt: I3SZtzx7Qp-ZAeX9Jc-qwQ - balrog-af-linux-shippable/opt: GHX0X-74QnCydFGqXo_Q4A - balrog-af-linux64-aarch64-shippable/opt: EPjztoT2SVq1RvSR8DJsYQ - balrog-af-linux64-shippable/opt: Hb0dNyM3TJmZVBckogLoXg - balrog-af-macosx64-shippable/opt: es58qzeKSu-SwKDU3RGhcA - balrog-af-win32-shippable/opt: YdT-4IAzS6KGk5TNDojuzw - balrog-af-win64-aarch64-shippable/opt: W8sJo9xcRz--ezSCC8abTQ - balrog-af-win64-shippable/opt: JDzEbk7DT-6L2js0dmkZzQ - balrog-an-linux-shippable/opt: JHDnDqWZS7iSpQmsZy5ttA - balrog-an-linux64-aarch64-shippable/opt: OzzXM7rNSnKoYSmfL5g8wQ - balrog-an-linux64-shippable/opt: UOzASLK8SzOWsMk0qyluNw - balrog-an-macosx64-shippable/opt: YipQbHu4Td-2rnzpCvazCw - balrog-an-win32-shippable/opt: XXSoZQXKQzaz6Swx-T6zKQ - balrog-an-win64-aarch64-shippable/opt: EhjdjipGSXe_eaFgJc-VFA - balrog-an-win64-shippable/opt: fv-ApLYuTU2AwYsoK1Hv9Q - balrog-ar-linux-shippable/opt: D6SLlWq_SVOP8eVkqYbjXA - balrog-ar-linux64-aarch64-shippable/opt: bud0fmWkTyKRT9tvqIFqNg - balrog-ar-linux64-shippable/opt: Yr5YHDtJQduQn3qPMOwpxQ - balrog-ar-macosx64-shippable/opt: N2Oh2VreR5WLqVDEDu5VxA - balrog-ar-win32-shippable/opt: Jl6MHTNYTtC-IHxO9lLgyw - balrog-ar-win64-aarch64-shippable/opt: ZvLytnZuSxevqHNOdotnsA - balrog-ar-win64-shippable/opt: XJ46W5l6QdqTSK6qXnwNIQ - balrog-ast-linux-shippable/opt: V5KsMwxGT7a-YcMb10uMYg - balrog-ast-linux64-aarch64-shippable/opt: cATRFCmGQ5CYxL8P_xo-TQ - balrog-ast-linux64-shippable/opt: dVEjl-PhRD6KTiMRMAmXYQ - balrog-ast-macosx64-shippable/opt: RKpBMC7HSX6-LAfAjjUbMQ - balrog-ast-win32-shippable/opt: Vp8L0vCTR22qY7Zr6GVjKA - balrog-ast-win64-aarch64-shippable/opt: DABRDVU7SZCZeTT8S0fF0A - balrog-ast-win64-shippable/opt: Z_fJ8x3qTT6WOiagNqXVUQ - balrog-az-linux-shippable/opt: PqWyHZyeSIqKNPvBqMPJjw - balrog-az-linux64-aarch64-shippable/opt: EM0511udR4yQN-M5WjbAJg - balrog-az-linux64-shippable/opt: UAcolyGERYiFco0O_x__NA - balrog-az-macosx64-shippable/opt: Rl3xLq_pSvOZstehBrA3LA - balrog-az-win32-shippable/opt: CgtFHDV-QqC4yxDjPps08A - balrog-az-win64-aarch64-shippable/opt: DZTTgIzDRXm-eIuLVxFmpw - balrog-az-win64-shippable/opt: Bpd75ynMRhuubxciTLNHcw - balrog-be-linux-shippable/opt: OGeLSNjwRf6_s3o3_MJE2A - balrog-be-linux64-aarch64-shippable/opt: dtbyuEOvTki8TnwTvfpgVg - balrog-be-linux64-shippable/opt: X2IVPf9pQgKD7spzIZzCrg - balrog-be-macosx64-shippable/opt: dtSwSMdbRRCq064dn09MIQ - balrog-be-win32-shippable/opt: PXaeo7OKQZGcfecpi1UJNA - balrog-be-win64-aarch64-shippable/opt: AINMMH5OTtmqu7zSyIf3tQ - balrog-be-win64-shippable/opt: NJDz0W6vQGazmbRKZVfSXA - balrog-bg-linux-shippable/opt: argtIg9JQZKLelJVAcjv6Q - balrog-bg-linux64-aarch64-shippable/opt: d2VazCxUS7WwHptiRb1uoA - balrog-bg-linux64-shippable/opt: ED3cpoAYRsqUHdIZQY_Pdw - balrog-bg-macosx64-shippable/opt: Qav2xa6ZRFyQNEJgyCVzkw - balrog-bg-win32-shippable/opt: LLjWBnF6Rx6Kau03Pjq1rg - balrog-bg-win64-aarch64-shippable/opt: Fyu2s94xQS6YYWDl-w95qQ - balrog-bg-win64-shippable/opt: Hd7rYXhaQO-oRfa_UAuxAQ - balrog-bn-linux-shippable/opt: X6Ssnj6VR3yYieYtTotVwQ - balrog-bn-linux64-aarch64-shippable/opt: H5QBMcjiRH62XaFAZtAxXg - balrog-bn-linux64-shippable/opt: RJpYmJhcRKusePVdt9-rVw - balrog-bn-macosx64-shippable/opt: Yi-gZl4RQ9alWbpS-pl3TQ - balrog-bn-win32-shippable/opt: KSrO_JpUTLmwUuY1pzU4vw - balrog-bn-win64-aarch64-shippable/opt: VTvVRjikSQmBv3G8fSkvow - balrog-bn-win64-shippable/opt: ZB7l-3IYTBOp46mbhl_fFQ - balrog-br-linux-shippable/opt: DBZatlZxT2Gk_CV6KV6KDA - balrog-br-linux64-aarch64-shippable/opt: JWkcM-GrQ7e8omCwWdOE-A - balrog-br-linux64-shippable/opt: VaWdB1EDQX-3MwEr7JxMow - balrog-br-macosx64-shippable/opt: fNekyv_hQU-1jm8Pa6aymg - balrog-br-win32-shippable/opt: T96T2a2RRlWI-oKmd78KcA - balrog-br-win64-aarch64-shippable/opt: X0YQHF-RQS262g6tB3CeYQ - balrog-br-win64-shippable/opt: H9uyGqKoRr2gldQB3ZGsUA - balrog-bs-linux-shippable/opt: YuPSXPuXSdG7uMu7IoxhIw - balrog-bs-linux64-aarch64-shippable/opt: QujkXK92RPWFf-_tV33MpQ - balrog-bs-linux64-shippable/opt: RrOHPohISTOgPzGZrM_3NA - balrog-bs-macosx64-shippable/opt: Y9GgzlYgS7-hKSkmV4dUGQ - balrog-bs-win32-shippable/opt: X8TD1BwtTIWTd_NzWTGISQ - balrog-bs-win64-aarch64-shippable/opt: XE0KldIeSHSSodN6RzXScA - balrog-bs-win64-shippable/opt: IXjaAk4UQway_WUMAJdWuQ - balrog-ca-linux-shippable/opt: EOpmhCHLT-u_YD4-baDMvA - balrog-ca-linux64-aarch64-shippable/opt: J5DbP46OQKeYvpgT_LJiKg - balrog-ca-linux64-shippable/opt: OTMl1u3ASReAqvU4I8rm-g - balrog-ca-macosx64-shippable/opt: Ga7vokErRtijQKF_vEEcug - balrog-ca-valencia-linux-shippable/opt: MTcjvVM9RYuCLI62XoHrtQ - balrog-ca-valencia-linux64-aarch64-shippable/opt: LlCZVK-8R8yx_149cujAOQ - balrog-ca-valencia-linux64-shippable/opt: XgAxDTZhQpmL7lxQlbuTeA - balrog-ca-valencia-macosx64-shippable/opt: HrtUhO2nQ1iWpndYrU7acg - balrog-ca-valencia-win32-shippable/opt: KMaMuGXTS-eYmAdhAfEzeA - balrog-ca-valencia-win64-aarch64-shippable/opt: XHqq5TfyRH2mxtzZ6C4v4g - balrog-ca-valencia-win64-shippable/opt: cOUhyoaJRXiYzw2cqq0SyA - balrog-ca-win32-shippable/opt: O_xSTlRwSuSNWvttfybWqA - balrog-ca-win64-aarch64-shippable/opt: D6IbxCUKTYmigZxxdlzupg - balrog-ca-win64-shippable/opt: RcxHaxqNScmDZGUMi2Wq4g - balrog-cak-linux-shippable/opt: Mnf1sYDbSFewBmj-_-TnVQ - balrog-cak-linux64-aarch64-shippable/opt: eg-UhwFZTISvS9vYMD8lYQ - balrog-cak-linux64-shippable/opt: ckroKLd5Rj69WBq7H-yz5Q - balrog-cak-macosx64-shippable/opt: bw_vgpArQgq2Lxk180opvQ - balrog-cak-win32-shippable/opt: P9EqxAtpROGb_wb1SEZl-g - balrog-cak-win64-aarch64-shippable/opt: SzIYn3Q7TPeLKBSw09Iccg - balrog-cak-win64-shippable/opt: L1eMDmfBSfeO-Wj3DfXRRA - balrog-cs-linux-shippable/opt: FBz8OI3USdu_zCWn_WcRqg - balrog-cs-linux64-aarch64-shippable/opt: d5IxzYSsQbmxJ6GGsaYT-w - balrog-cs-linux64-shippable/opt: KkWXs9DUSC6LYGxX7JzILQ - balrog-cs-macosx64-shippable/opt: BtJxCvnJRTS45aL2KtTvOw - balrog-cs-win32-shippable/opt: Zz5isSzqRYyCg0izE9tMGg - balrog-cs-win64-aarch64-shippable/opt: ZLEKXKSPTQiOY7Fo5tl8gA - balrog-cs-win64-shippable/opt: OvJtQgikQaidPq_MfdjwWg - balrog-cy-linux-shippable/opt: QJcuLRGXTES5g3BQlSx6Lg - balrog-cy-linux64-aarch64-shippable/opt: Jc2NsSXHQESSIDy4djxd_Q - balrog-cy-linux64-shippable/opt: H_RlSODuQPudlGaVOPtBEQ - balrog-cy-macosx64-shippable/opt: LN_2BWn7S5O-8haGOGX8cA - balrog-cy-win32-shippable/opt: RJau4ggbQjS0cyON3jN14w - balrog-cy-win64-aarch64-shippable/opt: T5OhR15HRnSJ-09oL8m3hg - balrog-cy-win64-shippable/opt: Mw5OZwIZR-CKwCc9eF-imA - balrog-da-linux-shippable/opt: cdqqVZRCSBi_bphgRuiz2Q - balrog-da-linux64-aarch64-shippable/opt: L01n_Xl1RGiqF_P5LEoMhw - balrog-da-linux64-shippable/opt: Q-XRe89rScaI3_M-wdyM-w - balrog-da-macosx64-shippable/opt: YKL2sf_kSSSlNkIiCAw4VA - balrog-da-win32-shippable/opt: Zi4EsW7kTdq7FFwkFU8JGA - balrog-da-win64-aarch64-shippable/opt: MEA-QbPNQfqH8ZeIBbPT0A - balrog-da-win64-shippable/opt: LnTsGUj5RNqUfyQZfe3WmA - balrog-de-linux-shippable/opt: Lc_Q2BX_SSyiM0mCZuWHxQ - balrog-de-linux64-aarch64-shippable/opt: EO2GIJ8MTgegyn7ZDIxW3g - balrog-de-linux64-shippable/opt: NA0oecOWQu61AzX-FWjXxA - balrog-de-macosx64-shippable/opt: KGQWnoQnSi-BXpWVc23Dng - balrog-de-win32-shippable/opt: Q1EiSMLDSr27rpwdHymSXg - balrog-de-win64-aarch64-shippable/opt: W3UVR5PERcmJxREe_Fh-HA - balrog-de-win64-shippable/opt: bjOmVgSLRyWTEkszer9QVQ - balrog-dsb-linux-shippable/opt: cLkiesSKT1GlBDhzX4-ckQ - balrog-dsb-linux64-aarch64-shippable/opt: MhEHnE5sSpuRf_ODN6yfdA - balrog-dsb-linux64-shippable/opt: OR_VEzwcSNaylm49ntgCEQ - balrog-dsb-macosx64-shippable/opt: Jfz12cscS_KePOYxcCdkFw - balrog-dsb-win32-shippable/opt: DSh7VFRWTRy6tTVx4DWsrQ - balrog-dsb-win64-aarch64-shippable/opt: HwKJvEd1Q_Gny_EVq2SxDA - balrog-dsb-win64-shippable/opt: bMdA4U4RR3C-zfuyJpABhg - balrog-el-linux-shippable/opt: CaEHr0eESzGftZGl-0vzrA - balrog-el-linux64-aarch64-shippable/opt: KSJiOCcMR7uyT6WUHftDDA - balrog-el-linux64-shippable/opt: T4NFYC_dTA25WJkFCWnEzQ - balrog-el-macosx64-shippable/opt: IOjQ_qt_Q92KtHIfhDEr_A - balrog-el-win32-shippable/opt: EiUqhrMyTOi9HYhf89BbYg - balrog-el-win64-aarch64-shippable/opt: Z5BbCX7aS9yH-9O4USS-Bg - balrog-el-win64-shippable/opt: PSS0SLzHTwGCT8quk9Kftg - balrog-en-CA-linux-shippable/opt: Ry5msB02Th6E2wGFqw9gGQ - balrog-en-CA-linux64-aarch64-shippable/opt: IRsSfzi8RrOiYjQXznZzew - balrog-en-CA-linux64-shippable/opt: eeRS3-fESme-QSLgF-ZJrw - balrog-en-CA-macosx64-shippable/opt: fw3bHaqZT6-Pl4EqCTXv2g - balrog-en-CA-win32-shippable/opt: XJXOrml8SPWwgOjMaMp4Gw - balrog-en-CA-win64-aarch64-shippable/opt: LooapkSbQPy9spRiXQ7iTQ - balrog-en-CA-win64-shippable/opt: Jp4okv4xT8a5td_21MRdDA - balrog-en-GB-linux-shippable/opt: XKj_uuejSiGFbAOIuuPVPQ - balrog-en-GB-linux64-aarch64-shippable/opt: ePjZLcLRTSKGMi5_K-mUsA - balrog-en-GB-linux64-shippable/opt: SW0F5W7KR-eKnnA1qQwUcQ - balrog-en-GB-macosx64-shippable/opt: NoGb1WDiRq-lK6d5Um0vLw - balrog-en-GB-win32-shippable/opt: IXoq8J5OTUOWIUC0krgLsQ - balrog-en-GB-win64-aarch64-shippable/opt: LUiZFeuKSQm1hJXSiCZACQ - balrog-en-GB-win64-shippable/opt: ffXxTgl7TEuXFkRcbQr2Tg - balrog-eo-linux-shippable/opt: GfDgA47uT6GIn1V5J7Focg - balrog-eo-linux64-aarch64-shippable/opt: BLHRLC8JQXqWjxNoANZvMg - balrog-eo-linux64-shippable/opt: NXfga-0aTKqdhB4FX4pNBA - balrog-eo-macosx64-shippable/opt: NDabI8T_RSizz4FIYKu8EA - balrog-eo-win32-shippable/opt: fd8yNklUR-ur33NdNWHEIQ - balrog-eo-win64-aarch64-shippable/opt: d6bLfwW9RfWidDNTst4TdA - balrog-eo-win64-shippable/opt: MWfr62yUSjyysiBRZr8STA - balrog-es-AR-linux-shippable/opt: UWaNPxcgQke9PnxhQD2xzg - balrog-es-AR-linux64-aarch64-shippable/opt: ex6BrHWbT9a9JY96faPG0w - balrog-es-AR-linux64-shippable/opt: FmlIWjLQSx6P4CjFbjxMsg - balrog-es-AR-macosx64-shippable/opt: QOjCOTn9SpWx9jtWDA2Zcg - balrog-es-AR-win32-shippable/opt: Y0O3HcnJQcq3Y7wYuVlqtw - balrog-es-AR-win64-aarch64-shippable/opt: B3EPpfWaSGaP_C13EmWalg - balrog-es-AR-win64-shippable/opt: XFIRlaf3R6u6yzHAFIP0UQ - balrog-es-CL-linux-shippable/opt: DQaphSgpSY-2CCb6Pdny9Q - balrog-es-CL-linux64-aarch64-shippable/opt: VS5d6p1dTKy4a65Ovhk5kg - balrog-es-CL-linux64-shippable/opt: PV2iRdJ2QQ6k95l2_DjVWQ - balrog-es-CL-macosx64-shippable/opt: DReM7Sl-QleCUUw_bQ0RHw - balrog-es-CL-win32-shippable/opt: SXIyGD6hTeK5LkY6nyCU3w - balrog-es-CL-win64-aarch64-shippable/opt: L4mLvQUCStCUxj9eOpfetw - balrog-es-CL-win64-shippable/opt: Tefm0sr_QpKA4yzbBGCmbg - balrog-es-ES-linux-shippable/opt: Zo-LabD9T0qB98OzZQKuSg - balrog-es-ES-linux64-aarch64-shippable/opt: G4x0cNPISGe4twuEV_e4Pw - balrog-es-ES-linux64-shippable/opt: P1Zh-TARS7-rfn79G276eg - balrog-es-ES-macosx64-shippable/opt: Ko3onRqiQiGA3u0F0vf4IA - balrog-es-ES-win32-shippable/opt: dIidYnbnTImmcjFejtS8CQ - balrog-es-ES-win64-aarch64-shippable/opt: S52ht_wFSpmPxSTNBmNqcg - balrog-es-ES-win64-shippable/opt: SiB_bEkIRhyj5RMcG_FqTA - balrog-es-MX-linux-shippable/opt: ZDZcOHJ2QLeKjE8KcYDCRw - balrog-es-MX-linux64-aarch64-shippable/opt: XAQxnZBSRR6rMm4vct0pzA - balrog-es-MX-linux64-shippable/opt: JtX8UCb3TYagi52mDJfRIg - balrog-es-MX-macosx64-shippable/opt: H1M3nZBJRpykJsC7gQhTgQ - balrog-es-MX-win32-shippable/opt: R_LhfDJfTKmW9Q6n8HXXPQ - balrog-es-MX-win64-aarch64-shippable/opt: VVoDQEAoRMaLnmaH4Pig3g - balrog-es-MX-win64-shippable/opt: SlEtD8SYSSiA7wTFzUtWEw - balrog-et-linux-shippable/opt: FoiwllRZTw-T1xrWwSOnnQ - balrog-et-linux64-aarch64-shippable/opt: f0No2MOuRrSD8YUOtCgdmg - balrog-et-linux64-shippable/opt: UPod1vriSQCprtmMpkTKng - balrog-et-macosx64-shippable/opt: P7yoWEP0Rzu2p47fe5i2ug - balrog-et-win32-shippable/opt: DaGd47KXQLi_1X8v_wRAPw - balrog-et-win64-aarch64-shippable/opt: fMzc_DrPT9-yBxedymcZKw - balrog-et-win64-shippable/opt: O-jBSZM5QoWMPRS849ursA - balrog-eu-linux-shippable/opt: BVxnPe3iRlCLtJcsJktYHw - balrog-eu-linux64-aarch64-shippable/opt: VpQ6Hej5REy6Ka2yAaRTXQ - balrog-eu-linux64-shippable/opt: AOrJyGONRs-RM4yBSVt7Ww - balrog-eu-macosx64-shippable/opt: ZogFKm3-Rey0Lw44qemmaw - balrog-eu-win32-shippable/opt: eyF7P8yFRNa6MoMiSixrOA - balrog-eu-win64-aarch64-shippable/opt: C8rjzFB-SvWoorCmkZz09w - balrog-eu-win64-shippable/opt: NBbku8vQSZGTIhb2i73LwA - balrog-fa-linux-shippable/opt: PcbJewOYS2yH0Azw9YUeWg - balrog-fa-linux64-aarch64-shippable/opt: SVmtpASwThC2yw41pVVpOw - balrog-fa-linux64-shippable/opt: QaYegwfcTF2QzWs6euTTwg - balrog-fa-macosx64-shippable/opt: MU1q36ywQH-Up2FZRI2EKw - balrog-fa-win32-shippable/opt: BGpkKqPaR32IIyS16M5N-g - balrog-fa-win64-aarch64-shippable/opt: OZGTefMaR8CiUzbBW3yMjg - balrog-fa-win64-shippable/opt: LRmARc_YRySpZqzAUJKUaw - balrog-ff-linux-shippable/opt: fMdZxwJTQbySZXWIXbGI1A - balrog-ff-linux64-aarch64-shippable/opt: c0T1TDHDSSOBH0F1Jy-oSg - balrog-ff-linux64-shippable/opt: NypWex8vSKGs3fesuvOZvA - balrog-ff-macosx64-shippable/opt: VpY12PatTYyCp5pdy199Ew - balrog-ff-win32-shippable/opt: Sd1mcA6hTTe4bDMD6WZ4-Q - balrog-ff-win64-aarch64-shippable/opt: Hto8-lZiRvGeKXrzb2p7zw - balrog-ff-win64-shippable/opt: Bjuz87vXTDORSYk9r9wigg - balrog-fi-linux-shippable/opt: DntmdxdORU60ZNULei2XPg - balrog-fi-linux64-aarch64-shippable/opt: Y_L6f1osS9idjTWfaw3ElA - balrog-fi-linux64-shippable/opt: Ju1t-W4xSBiT8nnycef0Jw - balrog-fi-macosx64-shippable/opt: YhLWujVHRGqBqb2RwSZ30Q - balrog-fi-win32-shippable/opt: TC5wLbGiSw6xRnCSNgLjuw - balrog-fi-win64-aarch64-shippable/opt: b3DroDGORu2tGEdZgJArog - balrog-fi-win64-shippable/opt: NCtIB9Z1RKaJM1YAfEWZDA - balrog-fr-linux-shippable/opt: AdS30gjUTdGDUWErJR6Inw - balrog-fr-linux64-aarch64-shippable/opt: VUfApVurRH6xRnv5K5g3Ig - balrog-fr-linux64-shippable/opt: fN-2-A6uTw2yz91bWijz7w - balrog-fr-macosx64-shippable/opt: K_6TcgA6SlCPZ5KLRti2Wg - balrog-fr-win32-shippable/opt: IiFGHUzaRMCHNBqx76EZYg - balrog-fr-win64-aarch64-shippable/opt: CmTa_xyZSvavjJ1bNH2AOw - balrog-fr-win64-shippable/opt: NIBX3dI-R2OTpLzdyng2ww - balrog-fur-linux-shippable/opt: Wugx5QLyTCe6GJmlf9TKYQ - balrog-fur-linux64-aarch64-shippable/opt: c4-6jArhReqRtWRBIpEwNg - balrog-fur-linux64-shippable/opt: L70GJQV4TK-owBeXi6llfw - balrog-fur-macosx64-shippable/opt: eSe4OMgKTYS0G9lPwObKjg - balrog-fur-win32-shippable/opt: AyoIv_i-ROyJum7qiOVj1w - balrog-fur-win64-aarch64-shippable/opt: XKKMTVZlS8W9U3AELaBAww - balrog-fur-win64-shippable/opt: U8roOuglQQyMbufxCCAvig - balrog-fy-NL-linux-shippable/opt: JxhlNfDmSBajjDN9gi1LFQ - balrog-fy-NL-linux64-aarch64-shippable/opt: fkAUCPaTQF6AT8V__25eIg - balrog-fy-NL-linux64-shippable/opt: I6dU69qzQcWdd6DFwdFlEw - balrog-fy-NL-macosx64-shippable/opt: TeOrx05LSPyO-TPOTQJyKw - balrog-fy-NL-win32-shippable/opt: CN6r7CIISTKYLueXCGdqvg - balrog-fy-NL-win64-aarch64-shippable/opt: f3kQ33nVShiPE3ArYDFivQ - balrog-fy-NL-win64-shippable/opt: YvHgeb4aQQ-x0OqVM_bZKQ - balrog-ga-IE-linux-shippable/opt: Q7Y_uatCSfmx5KA_a18gzQ - balrog-ga-IE-linux64-aarch64-shippable/opt: ZDEyeHAbTJaHDAyBfNlXvA - balrog-ga-IE-linux64-shippable/opt: acAL3lzSS7ifjOdrNgKxLA - balrog-ga-IE-macosx64-shippable/opt: VXCIpK3nRqi6dmebno6yzw - balrog-ga-IE-win32-shippable/opt: e-ZagpoQSiSyAVkaTtL4fA - balrog-ga-IE-win64-aarch64-shippable/opt: RbXHdsOzTtCxj5ScVu_hfw - balrog-ga-IE-win64-shippable/opt: HN8vwtbiRAObadUL21a-yw - balrog-gd-linux-shippable/opt: VNodUE9vRjqJqu97qelPUw - balrog-gd-linux64-aarch64-shippable/opt: AmL5hI-vQlGkXJidc8NPQA - balrog-gd-linux64-shippable/opt: M7oWGI8oTNqU8xkwIm6Srg - balrog-gd-macosx64-shippable/opt: EA2LX-EbRpGw_gy7L-OVcQ - balrog-gd-win32-shippable/opt: Xcm7XOsBT9KvHZQ6qOJvdQ - balrog-gd-win64-aarch64-shippable/opt: fY6t0dNmSNqO13bLHodrXg - balrog-gd-win64-shippable/opt: KDB9_oxIQg-LVjkr9BB5KQ - balrog-gl-linux-shippable/opt: AqKo9x2uQtePyoE1Ya_2PA - balrog-gl-linux64-aarch64-shippable/opt: QCoZoYQKTyqZpvHOqqGE-Q - balrog-gl-linux64-shippable/opt: WHlKdTnWT8KDWkYxqjrmWQ - balrog-gl-macosx64-shippable/opt: agOGRJvsSoqgVGWQOKuycw - balrog-gl-win32-shippable/opt: DVJOX3uHRtqwTvZ49slsnw - balrog-gl-win64-aarch64-shippable/opt: XVAopVE2Ts-K_XYBM1SSyA - balrog-gl-win64-shippable/opt: AIPRo7EsTsC0l34aZ22GyQ - balrog-gn-linux-shippable/opt: G3Wpm_gGQPSVcNKepAnwQw - balrog-gn-linux64-aarch64-shippable/opt: Bk5Of0DAQBiXI31ZNC35dA - balrog-gn-linux64-shippable/opt: C_nbIQcOTa2XrAlT7mewYA - balrog-gn-macosx64-shippable/opt: A7D_MPj1Qeaagt290ZE1ZQ - balrog-gn-win32-shippable/opt: RLuAbmfFS7qdpqX-9LwzdA - balrog-gn-win64-aarch64-shippable/opt: SliIurCYQJCFaLZZ_NTCbQ - balrog-gn-win64-shippable/opt: YjlZNAT8TMq1reqM-Tg4Tg - balrog-gu-IN-linux-shippable/opt: A4vxPP-VSb-PL9AerNaAJw - balrog-gu-IN-linux64-aarch64-shippable/opt: UMAqFMgpTgeiR2HOG36iLw - balrog-gu-IN-linux64-shippable/opt: L8-hJ_CfRseguJXSu6VlMw - balrog-gu-IN-macosx64-shippable/opt: AdxIGuSHSri9G4VJol1qjw - balrog-gu-IN-win32-shippable/opt: avr1R7qlR8-h63fTgldTow - balrog-gu-IN-win64-aarch64-shippable/opt: EYu-ukuoRGyvS-lwCvZs4Q - balrog-gu-IN-win64-shippable/opt: PpEMXcdKS6yR0W7p4cs0Fg - balrog-he-linux-shippable/opt: TB0hsJcHQsaqfZuUE9lkuQ - balrog-he-linux64-aarch64-shippable/opt: BLpQKC6yRuaM72OAxMQ-Rw - balrog-he-linux64-shippable/opt: dQ6-h7Q_TRyqyrgptNby3w - balrog-he-macosx64-shippable/opt: Ow-syfuOQSGZl4EFgO33wA - balrog-he-win32-shippable/opt: VcYAr_37SA2LUeNrXQyN2A - balrog-he-win64-aarch64-shippable/opt: FDGwXbFCTn61CeBxWHmd6w - balrog-he-win64-shippable/opt: AiSIeQynQxaF61VH7Y2N5Q - balrog-hi-IN-linux-shippable/opt: N_HNnRIPQ5qw1OiakGs1aw - balrog-hi-IN-linux64-aarch64-shippable/opt: NDF5NDAXRwmqcRcAcyDD0A - balrog-hi-IN-linux64-shippable/opt: eWC7MqEEQkuAXuwpscZcOA - balrog-hi-IN-macosx64-shippable/opt: bB3syQGaRVC3f5zBbgCfJA - balrog-hi-IN-win32-shippable/opt: W4DV69sUTxmLpiVfWtOfEA - balrog-hi-IN-win64-aarch64-shippable/opt: HBUkYTNpQhSO6HbIUe75Xw - balrog-hi-IN-win64-shippable/opt: T8DFNGL8TY2c68dQTDT60A - balrog-hr-linux-shippable/opt: Xw1B5R-dQaSe5CBl9FYL4Q - balrog-hr-linux64-aarch64-shippable/opt: exHzSvoIToKnILb8t3JcCQ - balrog-hr-linux64-shippable/opt: JVJKgNKoT-KIG3enQu-_iw - balrog-hr-macosx64-shippable/opt: GdnjtBB6RtOH_AyRMneBpw - balrog-hr-win32-shippable/opt: EHkZ1hcJQ2yBL8rVrtuzHw - balrog-hr-win64-aarch64-shippable/opt: VrEcA4vZTdeTOSkQgjoCFg - balrog-hr-win64-shippable/opt: Dq55BRq-TEWbimqI9DuN7A - balrog-hsb-linux-shippable/opt: XYPnWT-VSMGsO80GwUXZEw - balrog-hsb-linux64-aarch64-shippable/opt: HDL3UrRtQki_ZJMnNDkcfQ - balrog-hsb-linux64-shippable/opt: N60UBpGnRgqW6PIi6TOHcw - balrog-hsb-macosx64-shippable/opt: D77LsnTmTxyqh6TkXhz6rQ - balrog-hsb-win32-shippable/opt: evTb5XBeTZWMkBI_PuB_vQ - balrog-hsb-win64-aarch64-shippable/opt: PNrjR46LQzONWiAPJ7aXsA - balrog-hsb-win64-shippable/opt: RIcVQl4jT7eYwcDlmw2QkA - balrog-hu-linux-shippable/opt: Pwhp5h71Sxa8OAzKUAjVJg - balrog-hu-linux64-aarch64-shippable/opt: KOc-Fc7KSASw0dFldFn6xQ - balrog-hu-linux64-shippable/opt: TfhNHeRgQYSvVhPLzp7sAw - balrog-hu-macosx64-shippable/opt: fIlVI8a5SmCe-wTWQM0Nuw - balrog-hu-win32-shippable/opt: aiL5jA0nTPmJdX-zb2elbQ - balrog-hu-win64-aarch64-shippable/opt: fZllMAvSSDORNaNWPzfYWw - balrog-hu-win64-shippable/opt: F4j6H4ZyRf6ggRlemSoizg - balrog-hy-AM-linux-shippable/opt: AByadhQnSZyQ3SL7668ctA - balrog-hy-AM-linux64-aarch64-shippable/opt: EHOQMRV6SXmbhJD3uF9Ajg - balrog-hy-AM-linux64-shippable/opt: QziuzhK7Q8-UVdrCWmzijw - balrog-hy-AM-macosx64-shippable/opt: QPKpJURxTE6IKN8Q6TPrdA - balrog-hy-AM-win32-shippable/opt: IFGGJeHbSMuouumwQwe4aw - balrog-hy-AM-win64-aarch64-shippable/opt: Hq7QQlQQTbGD8UEKBydc7A - balrog-hy-AM-win64-shippable/opt: V-Vfny1USUOHM-NYNEf5vg - balrog-ia-linux-shippable/opt: BBXDENSlSS-_98TOEx6dIw - balrog-ia-linux64-aarch64-shippable/opt: Xd2FpRjwQx619H08rC5jZQ - balrog-ia-linux64-shippable/opt: CygbqMR4TyCX-GgqrsmrGw - balrog-ia-macosx64-shippable/opt: FR8mShjCRqu2yyW2AioYaA - balrog-ia-win32-shippable/opt: Za3Me5_sRsyRXysLi25L7A - balrog-ia-win64-aarch64-shippable/opt: XAeThFdZTsOrKAiklXJAdA - balrog-ia-win64-shippable/opt: FaIx0rFGSlC_k1O3mUalvw - balrog-id-linux-shippable/opt: Di7a45zZR-uCWB7OXEXagg - balrog-id-linux64-aarch64-shippable/opt: JFBEI37HQ1qfgBc_uamVPQ - balrog-id-linux64-shippable/opt: Z4PAcwNlR8mB-wDV--91Wg - balrog-id-macosx64-shippable/opt: BBjEcI4LRq2boRjjA3k7qg - balrog-id-win32-shippable/opt: BFEKmlWXR0WSb9TopnWDFA - balrog-id-win64-aarch64-shippable/opt: TaB0ikNaRCiJDXYu-RDeHw - balrog-id-win64-shippable/opt: JWAK3S47QgenFt-QmE16ug - balrog-is-linux-shippable/opt: H9eQeUoDS4qsSvVowi-qYQ - balrog-is-linux64-aarch64-shippable/opt: SYLZF3XkTVSgFTOtXcBz3w - balrog-is-linux64-shippable/opt: WfR_MCGOSA6apUaMaj-Bcw - balrog-is-macosx64-shippable/opt: YjUvY2ANS0O27dgvuJhtyA - balrog-is-win32-shippable/opt: bytMgS5LRb6j-pY5vfw3gg - balrog-is-win64-aarch64-shippable/opt: IBOVuywrQcmiGUfcMFfQ5w - balrog-is-win64-shippable/opt: DwqN1hyNSamvbWJsINc_4w - balrog-it-linux-shippable/opt: LmU31GngR2Oy49_9BHSpOw - balrog-it-linux64-aarch64-shippable/opt: XnPWjynFQLChoDnQd7FQ-Q - balrog-it-linux64-shippable/opt: dufC6Z7PQ5eBb0BIwHl1Nw - balrog-it-macosx64-shippable/opt: U2k-n5D7RIuzX6UCgC4pSw - balrog-it-win32-shippable/opt: aa0He9y8SdyXjab5tmh-zA - balrog-it-win64-aarch64-shippable/opt: CkbjGDidRYC7SwhF_LO-ug - balrog-it-win64-shippable/opt: YudjeG0IS4mPOwOQ0RWZlw - balrog-ja-JP-mac-macosx64-shippable/opt: GFzS69UgTG6iCMQ2sVMPNg - balrog-ja-linux-shippable/opt: G9ka2wFWRN2WvtgNE_OvDg - balrog-ja-linux64-aarch64-shippable/opt: d-BjwCEVRfGvvm_cIwkaAw - balrog-ja-linux64-shippable/opt: P932LUkmS8aUQEA8Hn2xOA - balrog-ja-win32-shippable/opt: TrBeFQqSQkeQf-l8z2t30Q - balrog-ja-win64-aarch64-shippable/opt: PoMMNJZeSYGROBsLsukA1A - balrog-ja-win64-shippable/opt: XxiKFaKER_qM6aAOnZ1daw - balrog-ka-linux-shippable/opt: Isu-CQTBTx6c1VVn0AZjwQ - balrog-ka-linux64-aarch64-shippable/opt: S6_5pGNYTtCCdZ2iia8dOA - balrog-ka-linux64-shippable/opt: XdBzqb2QQPKNCB3tUv5tXA - balrog-ka-macosx64-shippable/opt: epH981MlQ9uRZ3EQQMuZdA - balrog-ka-win32-shippable/opt: CDBosiVoQGCPDZ8GRI01hw - balrog-ka-win64-aarch64-shippable/opt: WCY-C5wVSqqpXsQiyGyk0Q - balrog-ka-win64-shippable/opt: bIek0Qx_R3WpmQZ_-uKrhQ - balrog-kab-linux-shippable/opt: O7y0Jk5kQhqh07uHs_0dwQ - balrog-kab-linux64-aarch64-shippable/opt: EUfono8aTqyYNYUG_M05dw - balrog-kab-linux64-shippable/opt: CETV36uAQEGlqiEfSicvcA - balrog-kab-macosx64-shippable/opt: fp3mYkJiQyOzyTWTGwEBRA - balrog-kab-win32-shippable/opt: KaiZQPMGSe2GfwniXqL6Yw - balrog-kab-win64-aarch64-shippable/opt: JB0XTJw9RAmHEsHjhmTK6g - balrog-kab-win64-shippable/opt: UDrLcDDGSySgHy1Iu269GA - balrog-kk-linux-shippable/opt: X5d8RUGdTyiNH4AsmuJvRw - balrog-kk-linux64-aarch64-shippable/opt: LyIlLj7sRgyNEEqu-4PlFw - balrog-kk-linux64-shippable/opt: EUt72ctLSNyTLfKvP4La5A - balrog-kk-macosx64-shippable/opt: AonW16B8QXyw7PlQ9BMo0Q - balrog-kk-win32-shippable/opt: d8uC3nRcReaqtlNj_dEYlA - balrog-kk-win64-aarch64-shippable/opt: WIxQErm9R92r-Y4bCer_BQ - balrog-kk-win64-shippable/opt: D_Lcc9VWRaS1Mno9fnsVnA - balrog-km-linux-shippable/opt: fo1KVrO5ROSG6kho81F1YQ - balrog-km-linux64-aarch64-shippable/opt: CODE0KioTB2i-hvZBptLlg - balrog-km-linux64-shippable/opt: QpUk9PZWTAqCqVLHxVBLTQ - balrog-km-macosx64-shippable/opt: AeP63wRNQVGIowbjdPjY9A - balrog-km-win32-shippable/opt: e33k9md7Qvyd7nLAjeHRhA - balrog-km-win64-aarch64-shippable/opt: WHDjp3VbQVKSzmrHoaXkew - balrog-km-win64-shippable/opt: Br-WfwYtTI26IajvtbL-wA - balrog-kn-linux-shippable/opt: JiVFiHJ_TS2Jktn_xZccHA - balrog-kn-linux64-aarch64-shippable/opt: MaFPtwyHTrOB3M-HZpUMcA - balrog-kn-linux64-shippable/opt: HToBWUbjSSmfRBqqGWQNaw - balrog-kn-macosx64-shippable/opt: My_Z5CE_RXeG4a1pRwRhtQ - balrog-kn-win32-shippable/opt: DxSHFjs9STexQSUhVPioOw - balrog-kn-win64-aarch64-shippable/opt: J9pXL4zMT5KnCLJBrSRqLg - balrog-kn-win64-shippable/opt: M1iT0mULRJ-j71BNcEZTSA - balrog-ko-linux-shippable/opt: TqoFRn7mRR2BtYcIGmFKug - balrog-ko-linux64-aarch64-shippable/opt: Qh3dEBkySVWfezjynrMcrw - balrog-ko-linux64-shippable/opt: fZy0013ERa6qWY9JwKWHnQ - balrog-ko-macosx64-shippable/opt: KwBRtG4dTHWjFk4shmQ6JA - balrog-ko-win32-shippable/opt: Wg2qgH9zQS2Ydv0KVRq_2A - balrog-ko-win64-aarch64-shippable/opt: L_oYOUoySfSztqWNGe6kWA - balrog-ko-win64-shippable/opt: Os6979zIQvGezFyk1fSMDw - balrog-lij-linux-shippable/opt: HSgf_pxHRqW9Vm8PJM-K9g - balrog-lij-linux64-aarch64-shippable/opt: S_BGxbxQTfKFksSN7vL2tA - balrog-lij-linux64-shippable/opt: CWIL-G84RfOD3qYsKr0UoQ - balrog-lij-macosx64-shippable/opt: Gnm3tLu2QYqLmlPuaidzbA - balrog-lij-win32-shippable/opt: DdO9zd04SLyy_yLIregLBQ - balrog-lij-win64-aarch64-shippable/opt: aFi7TQEDQMGwUSygfBpEsg - balrog-lij-win64-shippable/opt: OK0XWYTLRxSDontdTsPoTw - balrog-linux-shippable/opt: EpHk7GIZS1yrqn3j3KgiHw - balrog-linux64-aarch64-shippable/opt: U-7-tmYHQMOEFn5O910eZg - balrog-linux64-shippable/opt: a-J00ZanR7yyn6LCu24G-w - balrog-lt-linux-shippable/opt: dnW3T7kCQgm3DBkl35Pv7A - balrog-lt-linux64-aarch64-shippable/opt: fJWpD51iSJaprr7IWUt8yQ - balrog-lt-linux64-shippable/opt: bC5HRe8vT4O8pt3hqekhXw - balrog-lt-macosx64-shippable/opt: Ej6EX9GOSK2ys1bQHGT0hQ - balrog-lt-win32-shippable/opt: b3E94LuGR-Oy2MI4kD5Yow - balrog-lt-win64-aarch64-shippable/opt: Q18Pt0SHSveAjj-W0UsWbQ - balrog-lt-win64-shippable/opt: WFvh9V9PSACnzPCEsbpIoA - balrog-lv-linux-shippable/opt: LooSzSmCQ1GWSJjKj5HNdQ - balrog-lv-linux64-aarch64-shippable/opt: SkQatgFtTxq-AmTThARWdg - balrog-lv-linux64-shippable/opt: L8bCxvkRTQSvnFMkFrMcPg - balrog-lv-macosx64-shippable/opt: Zeu35nrdSwyiWdOxHg_YSQ - balrog-lv-win32-shippable/opt: CmqhVo4xSqCCUwx-NJJEGA - balrog-lv-win64-aarch64-shippable/opt: XCR-KT68RkqYjpkhutJPtQ - balrog-lv-win64-shippable/opt: FOvcSB66TA-yzP0tmcynaQ - balrog-macosx64-shippable/opt: Yzwiff-2T7mq_o2BMPMZTQ - balrog-mk-linux-shippable/opt: So06Q35BTjW4Pz-1F2pSKA - balrog-mk-linux64-aarch64-shippable/opt: MEWxvZUpTeuRUIFjo0bcOQ - balrog-mk-linux64-shippable/opt: foKa4SjCTzCPWF7XQgWt1Q - balrog-mk-macosx64-shippable/opt: c93p6EIhQvus3yoeS_OrBA - balrog-mk-win32-shippable/opt: SAomKex0Q46E88Eh6xkL6w - balrog-mk-win64-aarch64-shippable/opt: JLkrlpybRwWsHOD4QQo6Gw - balrog-mk-win64-shippable/opt: CoyCV1OQTo6zJCJZOYPYxw - balrog-mr-linux-shippable/opt: AMFTB_fgSqCAuFSl8H-0oQ - balrog-mr-linux64-aarch64-shippable/opt: eDjyEPGOREGswD64NWrq6A - balrog-mr-linux64-shippable/opt: BX8caK4wT4iqr-qZh0EVtQ - balrog-mr-macosx64-shippable/opt: d8l7cCM5RO25H0Ph2b7Kww - balrog-mr-win32-shippable/opt: VHTo8WEWSTuKzxdJ2e2K9g - balrog-mr-win64-aarch64-shippable/opt: Wm521n6sSIGymHE3OMzjWA - balrog-mr-win64-shippable/opt: CyJTpmJIR4WvVwer0hVpJQ - balrog-ms-linux-shippable/opt: SvbfhW7qRUCmuCpAfxvtKA - balrog-ms-linux64-aarch64-shippable/opt: CWULsrXdQ5KghZYbvkBLRQ - balrog-ms-linux64-shippable/opt: eQ7eA_-LQsmwOiQ2PCBfIA - balrog-ms-macosx64-shippable/opt: aAsKL459Qc60gXnh_R1fOg - balrog-ms-win32-shippable/opt: Uu_NrsZfRmGUMuQdjc_j_Q - balrog-ms-win64-aarch64-shippable/opt: TB_e_VANTZWZTGuagLFqBA - balrog-ms-win64-shippable/opt: aQq_7v4pQnq5QKfelUIcxg - balrog-my-linux-shippable/opt: RyeXAwBzTdO6edWQtCxiJg - balrog-my-linux64-aarch64-shippable/opt: PHx0dUQYS0GvjMs9P8MwSA - balrog-my-linux64-shippable/opt: bB--uSxFSD619NETSv1T0A - balrog-my-macosx64-shippable/opt: eL_OYX4YTKKzLTGWoHzURA - balrog-my-win32-shippable/opt: RsorznbtT0i45RJTWSYF0w - balrog-my-win64-aarch64-shippable/opt: Z8fITHQLQhSw-XFeY4Rsqg - balrog-my-win64-shippable/opt: W4bqf9mbTySVQ8a4rTrQZg - balrog-nb-NO-linux-shippable/opt: SOx5G54jSs-r6wbnFlPEDQ - balrog-nb-NO-linux64-aarch64-shippable/opt: YK9Z7sItSWyjcSk8uMxOTQ - balrog-nb-NO-linux64-shippable/opt: ZE_g_jrPQ9OxPKhyp0AzYw - balrog-nb-NO-macosx64-shippable/opt: eGMBR9yGQDKIU8_HIRgWeQ - balrog-nb-NO-win32-shippable/opt: CMnK6OIZTb6nUa5-_2fFtw - balrog-nb-NO-win64-aarch64-shippable/opt: Nb-wtlsPTeaiw09CiyQ5qA - balrog-nb-NO-win64-shippable/opt: WCT86dEwTymialMdNFf5jA - balrog-ne-NP-linux-shippable/opt: LIf24g-RQhiM1MGj9s7aIw - balrog-ne-NP-linux64-aarch64-shippable/opt: TTTKFcUdSsyOnu7R9NrUhA - balrog-ne-NP-linux64-shippable/opt: b7X2E-daTQmkeB-1CrSg6g - balrog-ne-NP-macosx64-shippable/opt: LqajPAKQRpiHlR8uSq8NHQ - balrog-ne-NP-win32-shippable/opt: Sbiuefc5S1eCG9FVO3gUSA - balrog-ne-NP-win64-aarch64-shippable/opt: VtHqIIvPRK2MQA_IN2ZSug - balrog-ne-NP-win64-shippable/opt: UxhGkFQnQpmf8x_C3QsNog - balrog-nl-linux-shippable/opt: PClY03fqS2ShSfGO0bbdig - balrog-nl-linux64-aarch64-shippable/opt: ef2U4jSHTqO9vcPWjTknfA - balrog-nl-linux64-shippable/opt: PEaOgTldR7imVuUR6iq_tA - balrog-nl-macosx64-shippable/opt: IXs1AF_vQSqUefW3W6kUkg - balrog-nl-win32-shippable/opt: UyHKEZPyQlu31ou297tDcw - balrog-nl-win64-aarch64-shippable/opt: LWk1pqFLS3SdXcTTJWq7Pw - balrog-nl-win64-shippable/opt: BulBzZAUSY2iXOqBoobsOQ - balrog-nn-NO-linux-shippable/opt: L-i7F7hJQR-D1lmYH1l00g - balrog-nn-NO-linux64-aarch64-shippable/opt: Ljvz7ErPRVqwX34f_AHMMg - balrog-nn-NO-linux64-shippable/opt: MtLXAOcjRnGIxEG-ojrajg - balrog-nn-NO-macosx64-shippable/opt: Ge_Px4OFQPqqnVmP1mkrjg - balrog-nn-NO-win32-shippable/opt: D1WhCqlyRPiOdd5aaXYrKw - balrog-nn-NO-win64-aarch64-shippable/opt: Q9qJjImRSZi2bAId6CsFew - balrog-nn-NO-win64-shippable/opt: M8Lxx5dBRK-TNRn5BOciwA - balrog-oc-linux-shippable/opt: f3Z-NXboSb2I1xRiztosDw - balrog-oc-linux64-aarch64-shippable/opt: Ud7aV-0ETjmUK-_bcVFIog - balrog-oc-linux64-shippable/opt: NRvudwFIQu2EMiZCV5A3CA - balrog-oc-macosx64-shippable/opt: Tu6DRrrjQ5yIcdJFYTd94w - balrog-oc-win32-shippable/opt: POujK-tfRMS1K09l0x9_3Q - balrog-oc-win64-aarch64-shippable/opt: E5RxiU7GRnmbAki8Vhl5OQ - balrog-oc-win64-shippable/opt: An6oNSEPRc-houdojApP6w - balrog-pa-IN-linux-shippable/opt: KDqOU-EqQ5earZS3L13hVA - balrog-pa-IN-linux64-aarch64-shippable/opt: KmNSTznSS4SXLC9AQhbQiA - balrog-pa-IN-linux64-shippable/opt: UwylSiW2S9i0ntXheK0jdw - balrog-pa-IN-macosx64-shippable/opt: Y5gihwFgSSC4HbJt4zZgAA - balrog-pa-IN-win32-shippable/opt: LmTHURIcTlSLOXQgHzb2hA - balrog-pa-IN-win64-aarch64-shippable/opt: KX8QWVsDTsaAcF1pBaXirQ - balrog-pa-IN-win64-shippable/opt: exPebRooS2-MgqNBOSGDKw - balrog-pl-linux-shippable/opt: DjVpXQ_kSQCrfxZFWmW2nA - balrog-pl-linux64-aarch64-shippable/opt: D_UWUMhHT8qlZqKs3aKHWA - balrog-pl-linux64-shippable/opt: PFkkY9vQSsuyl_VjWaZn5Q - balrog-pl-macosx64-shippable/opt: Tll-cw1gQbKSaL6qsx2N_Q - balrog-pl-win32-shippable/opt: fLDJPsRIRuGnkx3XcR-hkg - balrog-pl-win64-aarch64-shippable/opt: GBawT_EwQwSHhLj_GBaerw - balrog-pl-win64-shippable/opt: WzA1iOSpQGu6rUofmbjIYg - balrog-pt-BR-linux-shippable/opt: OUj-acTTRpCe9Iy5zlphcw - balrog-pt-BR-linux64-aarch64-shippable/opt: OvmCKA3CTs-1mMiuzuASDQ - balrog-pt-BR-linux64-shippable/opt: CCZv10zER4yyvMu5Jr2qGA - balrog-pt-BR-macosx64-shippable/opt: a42oXmqKQ9K0iAA_PkBbnA - balrog-pt-BR-win32-shippable/opt: TmTW_WQ3QF68oQ8Ov7c41A - balrog-pt-BR-win64-aarch64-shippable/opt: fiiOvOr1QAW-TpzacKaiWQ - balrog-pt-BR-win64-shippable/opt: Qs3cVGW8QuuLBBJYoK6bQg - balrog-pt-PT-linux-shippable/opt: L3xcghMkRzGxbMr3JRG83w - balrog-pt-PT-linux64-aarch64-shippable/opt: LUjPrbfJQNykY1hepZUJGQ - balrog-pt-PT-linux64-shippable/opt: STeX6slJSoGWeTor_rIqhw - balrog-pt-PT-macosx64-shippable/opt: d4X9UY1cR027K6aAKT3_ng - balrog-pt-PT-win32-shippable/opt: WZObdNyXSsCjo7aYWgxXEQ - balrog-pt-PT-win64-aarch64-shippable/opt: Skm__ybXQ0ecJmmWXLFm_A - balrog-pt-PT-win64-shippable/opt: A1niIEIvSJaVLIKZwksYwA - balrog-rm-linux-shippable/opt: J-yO1wCeSWufT46DZ_8s5w - balrog-rm-linux64-aarch64-shippable/opt: MC-WulPHTQWtFIOYKqNrWA - balrog-rm-linux64-shippable/opt: CcGQe0nDTFmyOnmYPI4Mtg - balrog-rm-macosx64-shippable/opt: bXKSxb7mQp6mYUnoZjdZEA - balrog-rm-win32-shippable/opt: eJXqO9hKQZ2nmFL-fMG9Kw - balrog-rm-win64-aarch64-shippable/opt: PI31BLBlQMepOJuNsSuecg - balrog-rm-win64-shippable/opt: Qu95sXNjTbikiCAM6wQ-Pw - balrog-ro-linux-shippable/opt: FEkeN4VYReWLPnmPaG8IHg - balrog-ro-linux64-aarch64-shippable/opt: TKiGeWS8SUuHcoYtkWh9jA - balrog-ro-linux64-shippable/opt: INFp4isQTwy7vzsMlIL7jA - balrog-ro-macosx64-shippable/opt: HW0puSswSnaIsP6KVC6ktA - balrog-ro-win32-shippable/opt: Yqg268e9Rx-li46pADgORQ - balrog-ro-win64-aarch64-shippable/opt: PaAn9nRHS2uDPmVfMJg0Ow - balrog-ro-win64-shippable/opt: PhA0Ac4lSQGkHQyQ3FE0dg - balrog-ru-linux-shippable/opt: CuIwYpyiQmade_FgqG9gew - balrog-ru-linux64-aarch64-shippable/opt: YejU5iE_TNqTNjm_ld8lPQ - balrog-ru-linux64-shippable/opt: Ghe6SLJxQuKoOqAq4Lnd-Q - balrog-ru-macosx64-shippable/opt: TojcSqmpQ0idip8_wz3_Zw - balrog-ru-win32-shippable/opt: LK4YtFbaQeisbSOTkiFJ7w - balrog-ru-win64-aarch64-shippable/opt: KGP5c5yFQfa-lG3gvKjyBw - balrog-ru-win64-shippable/opt: X36OBJDGRCCCXWxpIvQzVA - balrog-sat-linux-shippable/opt: TT538LcZRFitbp8Ai5P7Wg - balrog-sat-linux64-aarch64-shippable/opt: FgVNdnq2SMemlJhttBuDeg - balrog-sat-linux64-shippable/opt: DGxj_MSzQ_O5NTLSJZsNAA - balrog-sat-macosx64-shippable/opt: HHjbf6qZR62jS5_q8lRlCg - balrog-sat-win32-shippable/opt: ZRmwwMMBT022ib-uHOOeCw - balrog-sat-win64-aarch64-shippable/opt: T3tO1VbASUmKAS6qkUqCUg - balrog-sat-win64-shippable/opt: dx4GJO4kTJ2lZUAO5kq-qA - balrog-sc-linux-shippable/opt: MXGND2M-SJKKhNrKjxNoCg - balrog-sc-linux64-aarch64-shippable/opt: NquW_krVR96uVzAGbdlxhA - balrog-sc-linux64-shippable/opt: IDzD2kieQm61LYeWX8XluA - balrog-sc-macosx64-shippable/opt: SklOheRMT1C-PvqTh4aI6g - balrog-sc-win32-shippable/opt: dhJ8l5OeSxaPTlK5V2cWpg - balrog-sc-win64-aarch64-shippable/opt: Un2H-e6YSdiqRIzFlz9xiA - balrog-sc-win64-shippable/opt: dBlcfEtHTJykBsNN7gDtNw - balrog-sco-linux-shippable/opt: AYdAJJNqQJSC3X89K7TYZQ - balrog-sco-linux64-aarch64-shippable/opt: Zz90zY3vTE-G3vwxOVOBpA - balrog-sco-linux64-shippable/opt: HVewtMXvSsW4ua-b0zW_PA - balrog-sco-macosx64-shippable/opt: PRkajtdESfS76u1HS5WWJA - balrog-sco-win32-shippable/opt: UF9dzdapTbSA71U5TK-5FA - balrog-sco-win64-aarch64-shippable/opt: CdEwIfEtTGGnteWcE-eOvw - balrog-sco-win64-shippable/opt: PIKdU50FQISGW_UYu84T6g - balrog-si-linux-shippable/opt: AcVKOJMMSZunEGvkr5DlSQ - balrog-si-linux64-aarch64-shippable/opt: HSAQJEoOSDuADuRy1mAMgg - balrog-si-linux64-shippable/opt: Vsqx4sHvSCKY1O1P4zHtmA - balrog-si-macosx64-shippable/opt: RjeIpxZ1RQq671r48dO2VQ - balrog-si-win32-shippable/opt: U5-V109ARKqkRvkBTHAQFw - balrog-si-win64-aarch64-shippable/opt: B8rT14z1RWin0oCB8gHTTA - balrog-si-win64-shippable/opt: ZLM-0Z0PR_-80SxR8mfA2A - balrog-sk-linux-shippable/opt: DOw-Qc1GQeaHBeZy_NmCXQ - balrog-sk-linux64-aarch64-shippable/opt: JTqc2YLuSEmwI3OBWP26nQ - balrog-sk-linux64-shippable/opt: PULUjDKkQ1ul49AOyCmJGQ - balrog-sk-macosx64-shippable/opt: WV3TyESIQl2LobRPXxHWog - balrog-sk-win32-shippable/opt: Dp_DmthsToqz0TshyFlWkw - balrog-sk-win64-aarch64-shippable/opt: f88ElkC4RzSwreVhMx7QSA - balrog-sk-win64-shippable/opt: QnB1WZhqQvCQl8FUzVQTlg - balrog-skr-linux-shippable/opt: CvoSz2A2S4Ox3QpBsfnAbw - balrog-skr-linux64-aarch64-shippable/opt: HFG7mmfgRHqoFE8V34frTQ - balrog-skr-linux64-shippable/opt: MUIscQrhQ422O55MY6VcSA - balrog-skr-macosx64-shippable/opt: L8uctu2pQQqB_qbK4o6WdA - balrog-skr-win32-shippable/opt: dLGeYzPTSsSFGDtn7qwaGA - balrog-skr-win64-aarch64-shippable/opt: dBN1A8PpQD6zzkjLT8GfNQ - balrog-skr-win64-shippable/opt: EOiFW4gVQaOoiavPfcBHpg - balrog-sl-linux-shippable/opt: cE2hcrzfRc20wzi2ObHH2Q - balrog-sl-linux64-aarch64-shippable/opt: Zf0fStvTRDm08hWIwML7FA - balrog-sl-linux64-shippable/opt: PGdgaqetTEOESC-wG_xmcA - balrog-sl-macosx64-shippable/opt: KaN055EyT3KW2sJ5K0Xn_w - balrog-sl-win32-shippable/opt: Lov-7QoFSQ6hZk7HgSXXUQ - balrog-sl-win64-aarch64-shippable/opt: G6qX3uoyTYSPry5KnUJzJw - balrog-sl-win64-shippable/opt: TB7tkoZOQlGOljnGYkxoJQ - balrog-son-linux-shippable/opt: fr-H2CUASyG4-gwnrFkgWA - balrog-son-linux64-aarch64-shippable/opt: AAv0B1BXT_myhbo1le1DzQ - balrog-son-linux64-shippable/opt: KDBToCQaQDu-zl2bwfDLIg - balrog-son-macosx64-shippable/opt: Ev6uonx7SLqISo7srRStpQ - balrog-son-win32-shippable/opt: ZzDtiiKuSgK8oIb4CDP0Tg - balrog-son-win64-aarch64-shippable/opt: eulYMQubQUWYJDBktSQgrQ - balrog-son-win64-shippable/opt: aJaDux7WQuiPP5n8p8hFHA - balrog-sq-linux-shippable/opt: NMaL0XgRSZK3qoHFJV-igQ - balrog-sq-linux64-aarch64-shippable/opt: MnxjuwJRS_6wr5RKjJK7tQ - balrog-sq-linux64-shippable/opt: esa6LGyWSJqhVGFUQ7qJ-g - balrog-sq-macosx64-shippable/opt: EgNoRe8FTbqneKaNBits3w - balrog-sq-win32-shippable/opt: ABMMp_g5SLSLfyNBj1r00w - balrog-sq-win64-aarch64-shippable/opt: FY1BbmLbRMW7e0GhdiSi_g - balrog-sq-win64-shippable/opt: eds6t2AzQoSl72EOBB1cgw - balrog-sr-linux-shippable/opt: LcF__474ScmHgdwpwUg6_g - balrog-sr-linux64-aarch64-shippable/opt: CP64ovX0T8625nOP1PCrrw - balrog-sr-linux64-shippable/opt: KgACb58iRsuezOntMj_yZw - balrog-sr-macosx64-shippable/opt: JoLEtkieQwu9EN9d8FjpsA - balrog-sr-win32-shippable/opt: bO68dCRRRTiS-gjhibc1qQ - balrog-sr-win64-aarch64-shippable/opt: CAbLaEfpTD6fPScym4adtQ - balrog-sr-win64-shippable/opt: VYLBVoxQRSWpXoMCwPJJJA - balrog-sv-SE-linux-shippable/opt: NEo69S92R6iAonxNkQLpaA - balrog-sv-SE-linux64-aarch64-shippable/opt: WpMCpLBURhuowHpG5QkVWQ - balrog-sv-SE-linux64-shippable/opt: cSYrvEhRR6m0hSb484_H3Q - balrog-sv-SE-macosx64-shippable/opt: B60wMMbqQoevuXt8m1btpw - balrog-sv-SE-win32-shippable/opt: SbzYQUlUQbmJKDhnMxOy5w - balrog-sv-SE-win64-aarch64-shippable/opt: Y2jZ1iESTuCohP6nSDf6MA - balrog-sv-SE-win64-shippable/opt: Qlnq6-MeQ5ukfCfBkVbbWw - balrog-szl-linux-shippable/opt: Wc7kr9ZdRNezDypGYyuYhA - balrog-szl-linux64-aarch64-shippable/opt: QERoTeGwQ_6G3TvYTzBXXg - balrog-szl-linux64-shippable/opt: UJ1N2Xx8QjmGs5U1gZHZag - balrog-szl-macosx64-shippable/opt: WUWcwzX7R2a8pXd7L-VRWg - balrog-szl-win32-shippable/opt: LsALfRSHR12qC183xaR8Zg - balrog-szl-win64-aarch64-shippable/opt: ORYN63r1SB6coV0EdwDSCQ - balrog-szl-win64-shippable/opt: cXOnXQIXR_umU2ZDG16M1A - balrog-ta-linux-shippable/opt: LcPc1gFSTtijktWokcOmQA - balrog-ta-linux64-aarch64-shippable/opt: VCKbHV7NQsGJmZSoqeBYsQ - balrog-ta-linux64-shippable/opt: eyu1TTsTSV-GI1-bxOzX4w - balrog-ta-macosx64-shippable/opt: OYP2roEZQPaKpaJQllXXvA - balrog-ta-win32-shippable/opt: EtdQc-coSBGLThdz88XQ5w - balrog-ta-win64-aarch64-shippable/opt: aDWNsXLxRaapqHNJC-72cg - balrog-ta-win64-shippable/opt: BcWZd3t8Qg68mP-l7au38Q - balrog-te-linux-shippable/opt: VOwOTKzbQqiyTAzNIrSRsw - balrog-te-linux64-aarch64-shippable/opt: Ywhdqu00TO-BLbBUa_fAAw - balrog-te-linux64-shippable/opt: Zqwx84RbRySrAE9kYcLQpg - balrog-te-macosx64-shippable/opt: RWtpa8TKQGS7HUSqffA4eA - balrog-te-win32-shippable/opt: Dob8bnMFTd-3U9bonup_uw - balrog-te-win64-aarch64-shippable/opt: MjqCG6U2RuKz4Ommn8AAtQ - balrog-te-win64-shippable/opt: I0fOgbTVRyW3oQn4A_vD1Q - balrog-tg-linux-shippable/opt: XSZt8fc2QCK2L5aL_F15WQ - balrog-tg-linux64-aarch64-shippable/opt: XmOGQ6ypR3qtypZ45La4Wg - balrog-tg-linux64-shippable/opt: XvxR8FCASsKfy03f2UrB0Q - balrog-tg-macosx64-shippable/opt: SjmGLdy7Qr2dpLKvBlmaew - balrog-tg-win32-shippable/opt: B9HSmgk1SLux72ZloMYTlA - balrog-tg-win64-aarch64-shippable/opt: evlnN9I2SDuYbJ8GNZFPiQ - balrog-tg-win64-shippable/opt: KiZ4abmsQV6op_fWN7INAg - balrog-th-linux-shippable/opt: fr-DBtG9S-qI0UBdF-3nQg - balrog-th-linux64-aarch64-shippable/opt: Dj4Qm14BTSq9mqTfOKHUvw - balrog-th-linux64-shippable/opt: P7WVH84YTwGnYxjWMGzJRw - balrog-th-macosx64-shippable/opt: DdQUpXmnSf2kQsCmgo8v6g - balrog-th-win32-shippable/opt: IJCw3N5bS2Sl-RMacJZjhg - balrog-th-win64-aarch64-shippable/opt: IZbvKBceRGWkSeKfF8AGpA - balrog-th-win64-shippable/opt: f88U-bgfT_Cez8B0hfgRgQ - balrog-tl-linux-shippable/opt: GMYVIUoISRSLvgvYYqIX2g - balrog-tl-linux64-aarch64-shippable/opt: U4l46rumT7uiKwxfJoX_Ag - balrog-tl-linux64-shippable/opt: BdmW0KScQ0S6q7JXB_X5hA - balrog-tl-macosx64-shippable/opt: BQx9YsOmQRis1Y7JhAAL0A - balrog-tl-win32-shippable/opt: SxJChsvDQEK6M_k3KgcL5w - balrog-tl-win64-aarch64-shippable/opt: H7qmRXOPQ5OY43EaG2tQPw - balrog-tl-win64-shippable/opt: blZIhVWfSB2f50AMjccSmA - balrog-tr-linux-shippable/opt: PoQuN8tKSo6D7VwzSc2U5w - balrog-tr-linux64-aarch64-shippable/opt: OBBD_T41T7airISZJAZbqg - balrog-tr-linux64-shippable/opt: JzuGu7GjTOSoLQrOpiEJZg - balrog-tr-macosx64-shippable/opt: XV3tKly5SzS1SjsHMptcQQ - balrog-tr-win32-shippable/opt: N7UK07TfSjWpkMbpwAyShg - balrog-tr-win64-aarch64-shippable/opt: aOAqjltVR0eA9Ie0c2RZsw - balrog-tr-win64-shippable/opt: FoMcs3APQNCA6MEVHTi2qg - balrog-trs-linux-shippable/opt: J09bfwmgRM6AYX6OGNW8jg - balrog-trs-linux64-aarch64-shippable/opt: FibNgrQ3QsyjJ-ZpXtj0nw - balrog-trs-linux64-shippable/opt: AiiOtuKfQcKreuVg60me4w - balrog-trs-macosx64-shippable/opt: RnRksSBzTaa5VYxj8NIwVw - balrog-trs-win32-shippable/opt: DoYM2Kv7QMGQMN6Hd9jbeQ - balrog-trs-win64-aarch64-shippable/opt: XD4PogaGQ42jqSyN3aQ7zg - balrog-trs-win64-shippable/opt: CPLlUL4-T3m1Dto326qMuQ - balrog-uk-linux-shippable/opt: L0BIygvrSSqJrNiF-QO7bA - balrog-uk-linux64-aarch64-shippable/opt: frmw-VC6TK2mXdS__rxiPw - balrog-uk-linux64-shippable/opt: TIpjZVQxQEa8e3JPI2L_gA - balrog-uk-macosx64-shippable/opt: S2g5EloFRsWNhIZaVuMV2w - balrog-uk-win32-shippable/opt: LfrniBYeQuOn7C6-mx5rIQ - balrog-uk-win64-aarch64-shippable/opt: Xu15iqA7RWiRShRJq2m9qw - balrog-uk-win64-shippable/opt: Blld9OvUQhm6Vjkb8DG9hw - balrog-ur-linux-shippable/opt: W_Mhr1dwRQqStr4vckAMew - balrog-ur-linux64-aarch64-shippable/opt: fF05n_ZlTkuo0_EeHwfvXA - balrog-ur-linux64-shippable/opt: UG2ApOt9RzqBRTy_6yQ77Q - balrog-ur-macosx64-shippable/opt: XmF06DmSTnmCxbLYl3pBaQ - balrog-ur-win32-shippable/opt: D9v2ur-dR9ClydhwaC9IVg - balrog-ur-win64-aarch64-shippable/opt: IzrkrG94S4KjS99Vt360xA - balrog-ur-win64-shippable/opt: fpFyOlowQuWPyTwYo4CEVw - balrog-uz-linux-shippable/opt: M0oDfAYzSWSWTcUUU1T1nw - balrog-uz-linux64-aarch64-shippable/opt: YPWkfTPsS2ysdioJGgczDg - balrog-uz-linux64-shippable/opt: XuLCddnbQc2HC05aVk71Rw - balrog-uz-macosx64-shippable/opt: Rh8dP9EXQ86chYVPS1UqpQ - balrog-uz-win32-shippable/opt: fpg0Nj1HQQal_El3AiwsLg - balrog-uz-win64-aarch64-shippable/opt: SC-9h5SxRlyBW2eB8Fi_RA - balrog-uz-win64-shippable/opt: OOmwEuduSXmLtEmkCy09Hg - balrog-vi-linux-shippable/opt: Dvr25WVDRWG3Bmpqtb8WFg - balrog-vi-linux64-aarch64-shippable/opt: fvubNwsqTV2E1AU1JEa6lg - balrog-vi-linux64-shippable/opt: ViKirAoEQ5-QVvsBCMrS7w - balrog-vi-macosx64-shippable/opt: Yifk9JvlQkWeeBQAJhAsBA - balrog-vi-win32-shippable/opt: eTFMJYDJQVOmJ1W2BqO9Cw - balrog-vi-win64-aarch64-shippable/opt: PLSh-M86T2G7jasFouNd5g - balrog-vi-win64-shippable/opt: e3HSxq9SSG2eSLlPjviJEA - balrog-win32-shippable/opt: fdH6X4v_SCyJpMPpbdXQfA - balrog-win64-aarch64-shippable/opt: Wyjq9NPqQVClDItSaXXSDA - balrog-win64-shippable/opt: ejsTX0ufQMm8xeOB_0dcCQ - balrog-xh-linux-shippable/opt: d4LNMD6XQP-76mz7l1vFoA - balrog-xh-linux64-aarch64-shippable/opt: DklQMPA_QGGXlG4HniNMLA - balrog-xh-linux64-shippable/opt: YSUBwPGtQ4mtnfU68ZszDw - balrog-xh-macosx64-shippable/opt: CEXGgp_xRoKV36vgI-3m6A - balrog-xh-win32-shippable/opt: L_mGIt6BTjK2lK30659wvA - balrog-xh-win64-aarch64-shippable/opt: V1n_iS4VSWSYtn5v_BGaaA - balrog-xh-win64-shippable/opt: UFmN-FlsQNqMohF_KinPIw - balrog-zh-CN-linux-shippable/opt: UvqNQ5JGQMaspV5el2o1qw - balrog-zh-CN-linux64-aarch64-shippable/opt: BI3nNUzaRHGx7HDwf9F6TA - balrog-zh-CN-linux64-shippable/opt: HHOtZHF-R3SuXkz6rw3vYA - balrog-zh-CN-macosx64-shippable/opt: emufztUIT6a-6wsjeFQZUg - balrog-zh-CN-win32-shippable/opt: f1QJuTQoQ2GGJlmTPM3cMA - balrog-zh-CN-win64-aarch64-shippable/opt: W3sol8e_RCqtz0lp4RgVGQ - balrog-zh-CN-win64-shippable/opt: b4eEbSt3RnKBOg_pEjdXqA - balrog-zh-TW-linux-shippable/opt: FiU8De0_QJa0QYRrB0ug0g - balrog-zh-TW-linux64-aarch64-shippable/opt: C8DJCN01Qy21DpXq4Z-NXA - balrog-zh-TW-linux64-shippable/opt: HTP6rMOWTTmM9lIpN2whFw - balrog-zh-TW-macosx64-shippable/opt: U5VV7k00QN-VFwJhnXvyyw - balrog-zh-TW-win32-shippable/opt: M4hcIMReQ7asuUcDDKFzwg - balrog-zh-TW-win64-aarch64-shippable/opt: dItQ-WBBTe6zV46ip33VDA - balrog-zh-TW-win64-shippable/opt: aZTzhHGDSoePitjEo0hmtw - beetmover-checksums-ach-linux-shippable/opt: Ma82oTq3TDOaI770IzV40A - beetmover-checksums-ach-linux64-aarch64-shippable/opt: HCK9w_sZS9yJUbCv9xY-bA - beetmover-checksums-ach-linux64-shippable/opt: d_PnrDa8TJawHb1riw_xIA - beetmover-checksums-ach-macosx64-shippable/opt: J6C-k1ZfQjGDPbCMUBK1bw - beetmover-checksums-ach-win32-shippable/opt: QyZ23B8hTkiTVxEUC-yLMQ - beetmover-checksums-ach-win64-aarch64-shippable/opt: Bvs_xUoYRyO25EfL3LZwCQ - beetmover-checksums-ach-win64-shippable/opt: aQY6KMBHRhOvWYOFj5fZ-Q - beetmover-checksums-af-linux-shippable/opt: eA4RuJPiQKewPbjTCJ9CpQ - beetmover-checksums-af-linux64-aarch64-shippable/opt: UTk8egHeQeuHu-wlLxWQYQ - beetmover-checksums-af-linux64-shippable/opt: XJWmXNFcRPugLqcCC2fhrw - beetmover-checksums-af-macosx64-shippable/opt: MrNyQ-r_RWO05u2ZeQ5glQ - beetmover-checksums-af-win32-shippable/opt: WwbzjodJQp6jjogolhP88Q - beetmover-checksums-af-win64-aarch64-shippable/opt: MxVX7wY2Skq54408j7yrZQ - beetmover-checksums-af-win64-shippable/opt: ZDy3NwMoQNWj0qIIjipt7A - beetmover-checksums-an-linux-shippable/opt: S8yAA1zZRPKo-Mr0Y5AXNA - beetmover-checksums-an-linux64-aarch64-shippable/opt: RHMaHVidSNKhM-ixFXXT0A - beetmover-checksums-an-linux64-shippable/opt: Ja30GDO8SaG_Kc5EuHqDlg - beetmover-checksums-an-macosx64-shippable/opt: JLDfJbyrTVayqafY0H8Nrw - beetmover-checksums-an-win32-shippable/opt: OpfwsZA9QR2aoyvnJ4iTlQ - beetmover-checksums-an-win64-aarch64-shippable/opt: HeLghXSbQQq-H_fhKCOeCw - beetmover-checksums-an-win64-shippable/opt: bG2abPg_QrqFWydM3H8QQA - beetmover-checksums-ar-linux-shippable/opt: XQtTHwgbSVO2a5Mtr8vPww - beetmover-checksums-ar-linux64-aarch64-shippable/opt: eYE9nEbqQICN7e7S0iuR2A - beetmover-checksums-ar-linux64-shippable/opt: S2TRWQ7cQKeY24ABEDjSnA - beetmover-checksums-ar-macosx64-shippable/opt: CToEJzw5TeynGftybgsqZg - beetmover-checksums-ar-win32-shippable/opt: PSwMpi55Q6OLcqwspDZHGg - beetmover-checksums-ar-win64-aarch64-shippable/opt: SSq_tWwlSKi0jYplZxxz6w - beetmover-checksums-ar-win64-shippable/opt: ZcU9TPzgQX2tYWpaWCE0ww - beetmover-checksums-ast-linux-shippable/opt: fUJW0ioFRSiu1sMJOPcLig - beetmover-checksums-ast-linux64-aarch64-shippable/opt: CquAJY5sQEGR4o5fCb1CeQ - beetmover-checksums-ast-linux64-shippable/opt: dT2k_huEQiGqwzLG6UaeKw - beetmover-checksums-ast-macosx64-shippable/opt: aYw9vrNjQCGYOwHJue6U2g - beetmover-checksums-ast-win32-shippable/opt: Jj7DkyLgTWuIV4yskGz_dA - beetmover-checksums-ast-win64-aarch64-shippable/opt: Bk6cn--GQXKnA5ZGguF8uw - beetmover-checksums-ast-win64-shippable/opt: T2zkKRzxRky739hfHJ9JAg - beetmover-checksums-az-linux-shippable/opt: ByZASN0eS5iC7F-Y_Gs0Ig - beetmover-checksums-az-linux64-aarch64-shippable/opt: Cgbr18ufRHScIziXdP6ayQ - beetmover-checksums-az-linux64-shippable/opt: Asw2jQsXSd-3UmGxtI7MXg - beetmover-checksums-az-macosx64-shippable/opt: D3SmH4K0QNWAeaW748x6ow - beetmover-checksums-az-win32-shippable/opt: T6KxhjcaTZ69PGiff8uh5Q - beetmover-checksums-az-win64-aarch64-shippable/opt: NJHycOjsQ6KxD2Vj7GhSmA - beetmover-checksums-az-win64-shippable/opt: LrSGe5TCSQOiXpCe_433Aw - beetmover-checksums-be-linux-shippable/opt: cOnNp3l9S_ejKMRbZ1ZB8w - beetmover-checksums-be-linux64-aarch64-shippable/opt: MN0qxXiOS3Swq-gdzJN0VA - beetmover-checksums-be-linux64-shippable/opt: Pk2V2x-nRraxB12SeoVaUw - beetmover-checksums-be-macosx64-shippable/opt: CJaOQrn2RIiEs4hUsu_7Vw - beetmover-checksums-be-win32-shippable/opt: KAHbD6E3Qqe8x2wEX99s-w - beetmover-checksums-be-win64-aarch64-shippable/opt: OfzAjNj9TyKQZIVCferTMQ - beetmover-checksums-be-win64-shippable/opt: WtjPPXanRM2ihBY_cpWRNA - beetmover-checksums-bg-linux-shippable/opt: NaxZgzdVRsyo-nLxy8uyOQ - beetmover-checksums-bg-linux64-aarch64-shippable/opt: BFRMzdUtQEyV9B1pnetKwA - beetmover-checksums-bg-linux64-shippable/opt: UmJSNRGwTFOLx3mToFNa_w - beetmover-checksums-bg-macosx64-shippable/opt: bqjFqfM3QcKwZ06CLEFgEQ - beetmover-checksums-bg-win32-shippable/opt: YbwPPAmaTbCaSGclrbSWXQ - beetmover-checksums-bg-win64-aarch64-shippable/opt: NnuOW-WmSbW8VegPr3Na5w - beetmover-checksums-bg-win64-shippable/opt: PrYP5jMdRySpubhjIicg8Q - beetmover-checksums-bn-linux-shippable/opt: AIbc_gWfS8idfPshRL2GHA - beetmover-checksums-bn-linux64-aarch64-shippable/opt: RBPs9gdKQnG2DAoAWEhfow - beetmover-checksums-bn-linux64-shippable/opt: IzwGY3oQTOqFA-1jzUpKlA - beetmover-checksums-bn-macosx64-shippable/opt: VDc_TzC6TfS7DO_nmhubVw - beetmover-checksums-bn-win32-shippable/opt: P9sgLM62SlGByOo8LoyaNQ - beetmover-checksums-bn-win64-aarch64-shippable/opt: XQKNzW1qRkuqpAd-dJfH8Q - beetmover-checksums-bn-win64-shippable/opt: JrjD3V0qTmutCYKtiGeMRA - beetmover-checksums-br-linux-shippable/opt: OIVVxGSPSHuo1fCrmvblMg - beetmover-checksums-br-linux64-aarch64-shippable/opt: do7eWhD1Qg6uL1odB2qFBA - beetmover-checksums-br-linux64-shippable/opt: D-CQgoNuQP-Wj4A9gHvImw - beetmover-checksums-br-macosx64-shippable/opt: U6XSiod7QySEzwAVIBtEUw - beetmover-checksums-br-win32-shippable/opt: XCqwYTEpRP-d9EQ8dsiJBg - beetmover-checksums-br-win64-aarch64-shippable/opt: V-KKM9udSK2CfX800bA_tQ - beetmover-checksums-br-win64-shippable/opt: P-Be5Zm6RaaVzQOaWWkh2w - beetmover-checksums-bs-linux-shippable/opt: DuICqbqSQC6ITgTvgwhVag - beetmover-checksums-bs-linux64-aarch64-shippable/opt: Yt8hqXrYRxmNIbm7qymlSw - beetmover-checksums-bs-linux64-shippable/opt: WMldQX4ESrK9blZT8Sju9Q - beetmover-checksums-bs-macosx64-shippable/opt: QHYtnWgrQDikbaCKuQoWJQ - beetmover-checksums-bs-win32-shippable/opt: AUyhi1BqT0WdK9ZfPITnwg - beetmover-checksums-bs-win64-aarch64-shippable/opt: TBSDtEkGSvalSehJC2pI5A - beetmover-checksums-bs-win64-shippable/opt: emvoOFRaQGWPWDiai_Cheg - beetmover-checksums-ca-linux-shippable/opt: V6T1vBxTR1i-Ciz0M30dkQ - beetmover-checksums-ca-linux64-aarch64-shippable/opt: LrMae1pzQW2stPIHNd6AKw - beetmover-checksums-ca-linux64-shippable/opt: FLHRsNMAR1SqN1R6bH3NNg - beetmover-checksums-ca-macosx64-shippable/opt: SlqM_CMwTG6y6UQw_N4ddw - beetmover-checksums-ca-valencia-linux-shippable/opt: PGgQbRioSXCUg5-CxsN_vQ - beetmover-checksums-ca-valencia-linux64-aarch64-shippable/opt: VpEFYF4cTHy4XgaxW6xm-w - beetmover-checksums-ca-valencia-linux64-shippable/opt: F6XqBfACRmaCdpBkAys6ug - beetmover-checksums-ca-valencia-macosx64-shippable/opt: R_hiYOkOSBa9OSMqh4exIw - beetmover-checksums-ca-valencia-win32-shippable/opt: bqFnssOgQoWPMldZXLZOFA - beetmover-checksums-ca-valencia-win64-aarch64-shippable/opt: OLk6PVmZSU67WcdpmLQ1xg - beetmover-checksums-ca-valencia-win64-shippable/opt: fA4GdJgkSwSwTUCfMj83NA - beetmover-checksums-ca-win32-shippable/opt: TZzb6IPBSEq2lPto8ldK_A - beetmover-checksums-ca-win64-aarch64-shippable/opt: CUiQYs1_Tv-GQIvD_CW3Gg - beetmover-checksums-ca-win64-shippable/opt: FWE0LdH-QFicip1HORmOUA - beetmover-checksums-cak-linux-shippable/opt: EaE5zYEkT96mj2b0r5bypg - beetmover-checksums-cak-linux64-aarch64-shippable/opt: emj7EoiiScCoDGyN9kDmkg - beetmover-checksums-cak-linux64-shippable/opt: GbLfP2DTQr2p78bBw1EKPg - beetmover-checksums-cak-macosx64-shippable/opt: UmQHkBxdRJycPYyJ-WbNDQ - beetmover-checksums-cak-win32-shippable/opt: Wxl0J_cOQES1-_VnwND0Rg - beetmover-checksums-cak-win64-aarch64-shippable/opt: J2UE5U2sSS-cHUJR2XpZLw - beetmover-checksums-cak-win64-shippable/opt: H-ff6jMcSuSOSKVXhlsMfg - beetmover-checksums-cs-linux-shippable/opt: P1aNkg4GT9Ko7r51EJkWxQ - beetmover-checksums-cs-linux64-aarch64-shippable/opt: WbiBC5hPTomuShhiS2Uo_A - beetmover-checksums-cs-linux64-shippable/opt: ffOJlO_qTIm2_qtQhyFi4w - beetmover-checksums-cs-macosx64-shippable/opt: IIWJLJ8YR4aXx5RpnVFXgw - beetmover-checksums-cs-win32-shippable/opt: AQhBF6xfTK2tSb3_tjdRXQ - beetmover-checksums-cs-win64-aarch64-shippable/opt: B4uSSNu2TkO9D9CiWAu25g - beetmover-checksums-cs-win64-shippable/opt: Dkv42ezsQ8ScObw3ft7IaA - beetmover-checksums-cy-linux-shippable/opt: AN3qMRYFQvWKMo6CD1JWdg - beetmover-checksums-cy-linux64-aarch64-shippable/opt: B9bG0RrQTHu1MBHUtxvhGw - beetmover-checksums-cy-linux64-shippable/opt: Z3F1JAdDQoqz0Z1w99sGPQ - beetmover-checksums-cy-macosx64-shippable/opt: VvOQk7-YQ2KjP5_sHOYayQ - beetmover-checksums-cy-win32-shippable/opt: fZLCqiI6QuCF18OqeomKjg - beetmover-checksums-cy-win64-aarch64-shippable/opt: Coy3YjHyRsOXWaxBJZIMBg - beetmover-checksums-cy-win64-shippable/opt: V3LxUhUPRMelpXgSo5dPmA - beetmover-checksums-da-linux-shippable/opt: aYa-Lx6qRfmPW_3XliuxYQ - beetmover-checksums-da-linux64-aarch64-shippable/opt: Cp815FdyRi6-fPMWD9Jwpw - beetmover-checksums-da-linux64-shippable/opt: BFuikzTeTNOKrAP77wKmIA - beetmover-checksums-da-macosx64-shippable/opt: cruKVcQjS7y524oeczwYFw - beetmover-checksums-da-win32-shippable/opt: Gzzrqt6sR7W9iTPQ_c0g2Q - beetmover-checksums-da-win64-aarch64-shippable/opt: LGLFZlGeTvOqIAwKs1sXKg - beetmover-checksums-da-win64-shippable/opt: ADeqLy29Smipk-bRD1Pm-w - beetmover-checksums-de-linux-shippable/opt: EOh1i7DIQWKRzw0Nvof7dA - beetmover-checksums-de-linux64-aarch64-shippable/opt: CNJa3lMBQ3mic_b60EmGfA - beetmover-checksums-de-linux64-shippable/opt: fyM72gUCSPqr-xAFKgE_RQ - beetmover-checksums-de-macosx64-shippable/opt: Atv8ACJkQO6SB08sRDxo9w - beetmover-checksums-de-win32-shippable/opt: CaQlBHKkTsWQTiPALOciWw - beetmover-checksums-de-win64-aarch64-shippable/opt: QjsfJ0-5R-C8xN-1jJ0MRA - beetmover-checksums-de-win64-shippable/opt: dTqLsYHRTaqaIxucFfPBUQ - beetmover-checksums-dsb-linux-shippable/opt: fgCVrs0_RbKsfIpCnSHWzQ - beetmover-checksums-dsb-linux64-aarch64-shippable/opt: Fs04VxlET8yu6okSuKA6rw - beetmover-checksums-dsb-linux64-shippable/opt: UDtRkZrkRJeXkE_QFQZzmA - beetmover-checksums-dsb-macosx64-shippable/opt: AyH9UtUpRTCQCNgtDGEqlQ - beetmover-checksums-dsb-win32-shippable/opt: J3NpYtpRSLWy9-z604IpNQ - beetmover-checksums-dsb-win64-aarch64-shippable/opt: Cls_arYwRAmySJCXoN4-rQ - beetmover-checksums-dsb-win64-shippable/opt: fj6iZmV2QsGppRG7RuhnXw - beetmover-checksums-el-linux-shippable/opt: GBeZ5Lq-SfeimMUcVq-ctg - beetmover-checksums-el-linux64-aarch64-shippable/opt: GJYsFiKiQJmVehKziBmtMg - beetmover-checksums-el-linux64-shippable/opt: S3ArY6R9R6WaX2HtdATdwQ - beetmover-checksums-el-macosx64-shippable/opt: NItwyoq4TL2-Ni5-i-rgbA - beetmover-checksums-el-win32-shippable/opt: ZO2kbyCaS6igmAnb7yQv1g - beetmover-checksums-el-win64-aarch64-shippable/opt: W31Y5BFrQYWofWu03H5x2g - beetmover-checksums-el-win64-shippable/opt: KCHuPlYgRvGhc7EjQUf55g - beetmover-checksums-en-CA-linux-shippable/opt: SZTJj-3oQ9ag70gEnhZqwQ - beetmover-checksums-en-CA-linux64-aarch64-shippable/opt: MtvJckj4SjKT5v5wKODbjw - beetmover-checksums-en-CA-linux64-shippable/opt: V16oVOp6S6O03UmKYT92VQ - beetmover-checksums-en-CA-macosx64-shippable/opt: WxIdFDWVTfe4LVAlrf8cig - beetmover-checksums-en-CA-win32-shippable/opt: Gza0cYXWSb2WOdFrK2YGpA - beetmover-checksums-en-CA-win64-aarch64-shippable/opt: bxphhlO0To68o_OOLSQEkw - beetmover-checksums-en-CA-win64-shippable/opt: dbYgz8KsS-Wh1nAJ3WNK0g - beetmover-checksums-en-GB-linux-shippable/opt: aCwEEuRMQM2_OrTXAwqUlw - beetmover-checksums-en-GB-linux64-aarch64-shippable/opt: B0JzGPOUSf2aLxCyKv_ZdA - beetmover-checksums-en-GB-linux64-shippable/opt: aJYHYMy3RjKLJxiNaHJRKw - beetmover-checksums-en-GB-macosx64-shippable/opt: Zfpl0cnLQM-2BDeiIw3qsw - beetmover-checksums-en-GB-win32-shippable/opt: Ys6_PlQWRNmk8uZqM3jPAQ - beetmover-checksums-en-GB-win64-aarch64-shippable/opt: A5-i3oFBQIC8IZ6nFP0wyw - beetmover-checksums-en-GB-win64-shippable/opt: VvoYamqLQlGrFsKEm-soVw - beetmover-checksums-eo-linux-shippable/opt: bq0_XP8NRTGXhwOCDXMD8A - beetmover-checksums-eo-linux64-aarch64-shippable/opt: MERlnfLFS0OU6UNADg-IzQ - beetmover-checksums-eo-linux64-shippable/opt: SEjz8OAOQCSMadNhhcqNAQ - beetmover-checksums-eo-macosx64-shippable/opt: HYR__DXgTfGTWQ_MzLZjtQ - beetmover-checksums-eo-win32-shippable/opt: To804AdhSP6lP5TnnQhmpA - beetmover-checksums-eo-win64-aarch64-shippable/opt: UJpyhHI6Qhyuv45QtOplxw - beetmover-checksums-eo-win64-shippable/opt: HwWdNFZjS9mqay5dbsqnXA - beetmover-checksums-es-AR-linux-shippable/opt: HNuCsld2S-KhBRdBegwSUQ - beetmover-checksums-es-AR-linux64-aarch64-shippable/opt: VsCMGkY0RzqPeDS-aQw9Mg - beetmover-checksums-es-AR-linux64-shippable/opt: c5mDgyZFQcSISwZ6aQgOAw - beetmover-checksums-es-AR-macosx64-shippable/opt: a7F3B2E8RKCFqSVkVwaVZA - beetmover-checksums-es-AR-win32-shippable/opt: Yu97pqVVT-21lOL1Vp9d0w - beetmover-checksums-es-AR-win64-aarch64-shippable/opt: dP9xZzxZSe-Ch-GtAEv7BA - beetmover-checksums-es-AR-win64-shippable/opt: Y_lqR9UuRx28vzvYNXm4Ww - beetmover-checksums-es-CL-linux-shippable/opt: d30WLnC0TOSOeLCCwPwT7w - beetmover-checksums-es-CL-linux64-aarch64-shippable/opt: VvjuMmYuT-u0W9SltbPijw - beetmover-checksums-es-CL-linux64-shippable/opt: VyoEVDIPQGKEsNYTHegpxg - beetmover-checksums-es-CL-macosx64-shippable/opt: BoE8rh1USD6grcMYLTxswg - beetmover-checksums-es-CL-win32-shippable/opt: E-3RLFFrQFGQIrttKR9Q5w - beetmover-checksums-es-CL-win64-aarch64-shippable/opt: MnpB6ORwTTyG1q0o0BpdQA - beetmover-checksums-es-CL-win64-shippable/opt: IoeVxTAkTFuOqEguMbZqqQ - beetmover-checksums-es-ES-linux-shippable/opt: Bzv9ZijtRseEMAyfPR3GgQ - beetmover-checksums-es-ES-linux64-aarch64-shippable/opt: fZPElEWZTUyp-1pYA1rGnw - beetmover-checksums-es-ES-linux64-shippable/opt: dImAa2ZrRLCQ-9-5kINxOg - beetmover-checksums-es-ES-macosx64-shippable/opt: J0yaMHCZQ72pgtAn8f1sjw - beetmover-checksums-es-ES-win32-shippable/opt: ayNE3OGpTfOEXGEImyWl9Q - beetmover-checksums-es-ES-win64-aarch64-shippable/opt: d5lxNCWERxaI68ucB-_Ygg - beetmover-checksums-es-ES-win64-shippable/opt: FKIRXE2_Qu-HVixez0muzg - beetmover-checksums-es-MX-linux-shippable/opt: XCQpER9OTqGFX_mMlwmtHg - beetmover-checksums-es-MX-linux64-aarch64-shippable/opt: Ht4Rk_HQSW6gDh-nAz1b-A - beetmover-checksums-es-MX-linux64-shippable/opt: UWurpZ5qQQe6uYHBzTw71A - beetmover-checksums-es-MX-macosx64-shippable/opt: GJxuZ7NSS3ms4Gaoyhxmtg - beetmover-checksums-es-MX-win32-shippable/opt: B6er-A2FSM-RVNrcL4Pd6g - beetmover-checksums-es-MX-win64-aarch64-shippable/opt: IKEL5a4lR8GoJlb8IR7Lrw - beetmover-checksums-es-MX-win64-shippable/opt: TjX-V9icRriuVo6VC5odUw - beetmover-checksums-et-linux-shippable/opt: YTkPKKReTqCfdlOnazW7vA - beetmover-checksums-et-linux64-aarch64-shippable/opt: d4we6sQRRNGO_QOFYQlsbQ - beetmover-checksums-et-linux64-shippable/opt: Qfaw4KRCTeK8B3_7TDHjlw - beetmover-checksums-et-macosx64-shippable/opt: Gk1mdqboTBCH2WP6b1OrOQ - beetmover-checksums-et-win32-shippable/opt: aFkpWt4SStSB2g9paxgztg - beetmover-checksums-et-win64-aarch64-shippable/opt: FgQ_3C1nTPqll3xdEWsfxA - beetmover-checksums-et-win64-shippable/opt: KqhFyHW2R2ug1g5ru5Frtw - beetmover-checksums-eu-linux-shippable/opt: Ocqs8ZXbRn68wDnq9VHSzg - beetmover-checksums-eu-linux64-aarch64-shippable/opt: RgbSgNQNSeyKT5XRTDqxvQ - beetmover-checksums-eu-linux64-shippable/opt: R-4MWJATRlehnbHNdYhu6w - beetmover-checksums-eu-macosx64-shippable/opt: arX73RmaSO2E6q3j4aHTjQ - beetmover-checksums-eu-win32-shippable/opt: ZdztZeEcTEO-hTAStCetSg - beetmover-checksums-eu-win64-aarch64-shippable/opt: Y5EJWR22QEmZ8LW3FuWrgg - beetmover-checksums-eu-win64-shippable/opt: Ywf7BSuUSLa50ArN2IqsYw - beetmover-checksums-fa-linux-shippable/opt: G-vwaGEBR6-xJ4PlK66l1w - beetmover-checksums-fa-linux64-aarch64-shippable/opt: bVnxQJsPQHqNxTdEdg2H4g - beetmover-checksums-fa-linux64-shippable/opt: CchkTgtkRwWFlKnzg_zLrQ - beetmover-checksums-fa-macosx64-shippable/opt: MdLAWdM4T6mAj6_l_iGmDw - beetmover-checksums-fa-win32-shippable/opt: OSVSjx1WQxSLxeyDDFkBEg - beetmover-checksums-fa-win64-aarch64-shippable/opt: Wb9r2UL-RRuIre7e7qkNJQ - beetmover-checksums-fa-win64-shippable/opt: A5jGU2_fSc-QekjSTtdBPA - beetmover-checksums-ff-linux-shippable/opt: axdo9nCYSN6k36Tmk-FwkA - beetmover-checksums-ff-linux64-aarch64-shippable/opt: aS8huMO3T5itDyV0OSKOIg - beetmover-checksums-ff-linux64-shippable/opt: Ln2upsD_RqadEEZjDODU4Q - beetmover-checksums-ff-macosx64-shippable/opt: TrDvpxQlStCxYUIrWtvHgQ - beetmover-checksums-ff-win32-shippable/opt: UoKokVNER8CYxn13FUeEHA - beetmover-checksums-ff-win64-aarch64-shippable/opt: VuLit0sjTn2cF1TjMarxXg - beetmover-checksums-ff-win64-shippable/opt: XA8uD1vKTK6QrdYJouXlaw - beetmover-checksums-fi-linux-shippable/opt: HqTbSv1GQE2ev-fJ1zRUKA - beetmover-checksums-fi-linux64-aarch64-shippable/opt: AfDwlNftQaS_Txe0-Gnx-A - beetmover-checksums-fi-linux64-shippable/opt: VBKRTVawThOVP87KrLqj-w - beetmover-checksums-fi-macosx64-shippable/opt: JciFSFKnQiy7bHqPn0_Fig - beetmover-checksums-fi-win32-shippable/opt: dqWBS4kyQ_e4cGp3kNLnLQ - beetmover-checksums-fi-win64-aarch64-shippable/opt: fndva5mBRqil6mIDkdALOQ - beetmover-checksums-fi-win64-shippable/opt: dwJY4EVQQli_llWaBuRS9Q - beetmover-checksums-fr-linux-shippable/opt: C-XUIBY0S--ucwJALLyXDA - beetmover-checksums-fr-linux64-aarch64-shippable/opt: esy7_4gzSpWRnTm6UHTKgA - beetmover-checksums-fr-linux64-shippable/opt: PTzHwF2iSyahOSchGzOHCw - beetmover-checksums-fr-macosx64-shippable/opt: btosay_0TjaCmyp7JSVECw - beetmover-checksums-fr-win32-shippable/opt: IrvvaqurQ3Otv_vU_vyBlg - beetmover-checksums-fr-win64-aarch64-shippable/opt: Ycf6BlCzS1KSS6ohRlVXFA - beetmover-checksums-fr-win64-shippable/opt: C9sA8lK6TKylPouNfv8U3w - beetmover-checksums-fur-linux-shippable/opt: YkDkNDZLR5yhhQWXHWYOeQ - beetmover-checksums-fur-linux64-aarch64-shippable/opt: Ie-75mh6SN-8U0VqU9RpXA - beetmover-checksums-fur-linux64-shippable/opt: S-guempCReiufE3hn80CLA - beetmover-checksums-fur-macosx64-shippable/opt: YiauDMo4R1KwMG6fYKMeww - beetmover-checksums-fur-win32-shippable/opt: FZR4OjJZT_egwgtN4JbxRg - beetmover-checksums-fur-win64-aarch64-shippable/opt: IZTiXikxT1qJ6-Wny_hbhw - beetmover-checksums-fur-win64-shippable/opt: IDP1coEuTxmerYTR9T_12A - beetmover-checksums-fy-NL-linux-shippable/opt: BfIGFV_ESom5C1qgg6nw7A - beetmover-checksums-fy-NL-linux64-aarch64-shippable/opt: YE-ztoISRj6dAJCIJsLnug - beetmover-checksums-fy-NL-linux64-shippable/opt: Fs3rTzOfRf6XxtKGpEsFCg - beetmover-checksums-fy-NL-macosx64-shippable/opt: bw9ankOMTXGjpuWO-0vDIQ - beetmover-checksums-fy-NL-win32-shippable/opt: JC8JxlwQQUiM7ei88sk25A - beetmover-checksums-fy-NL-win64-aarch64-shippable/opt: Piv_UqkERyqBkMXdlnkoLw - beetmover-checksums-fy-NL-win64-shippable/opt: MIEgfM4wR-2v4P1Y2rABMg - beetmover-checksums-ga-IE-linux-shippable/opt: aCVsfWXtRCuyffVQFk_63g - beetmover-checksums-ga-IE-linux64-aarch64-shippable/opt: RgzWojdwTWe2RoH9gnEarA - beetmover-checksums-ga-IE-linux64-shippable/opt: a71taCk-T2O1pbYvHFnZOg - beetmover-checksums-ga-IE-macosx64-shippable/opt: IyL13LYsSMWR4Qb-eTduBQ - beetmover-checksums-ga-IE-win32-shippable/opt: R0kMS3dzT0SSYfuiPyDcUA - beetmover-checksums-ga-IE-win64-aarch64-shippable/opt: f1-vG3kHSiOPM5-_m0-SkA - beetmover-checksums-ga-IE-win64-shippable/opt: R31T4SmxSKOUtMAReuWuiA - beetmover-checksums-gd-linux-shippable/opt: arlhQRy7TQWRsulyCWQluQ - beetmover-checksums-gd-linux64-aarch64-shippable/opt: ZU6w2n4QRn-6JIGkYClTlA - beetmover-checksums-gd-linux64-shippable/opt: O2CH4xH-QxCfDtay72O9dA - beetmover-checksums-gd-macosx64-shippable/opt: IUMRwBc8SlK5mlYJcfjUFw - beetmover-checksums-gd-win32-shippable/opt: R7sHtkO8RTWdKTTbvnd-ng - beetmover-checksums-gd-win64-aarch64-shippable/opt: VD6hYsEQQHaOxN7uY34lWw - beetmover-checksums-gd-win64-shippable/opt: exkEn2HaSou90_s42qtK0g - beetmover-checksums-gl-linux-shippable/opt: Dy6-0TqUQ1GesRIj_fAbGA - beetmover-checksums-gl-linux64-aarch64-shippable/opt: fKq91DDNS0-cu3TTI-dJxA - beetmover-checksums-gl-linux64-shippable/opt: Afv9hIpFTBS8LtvoYBMOxQ - beetmover-checksums-gl-macosx64-shippable/opt: TzYzMjcHR3W14AgA_YlLOQ - beetmover-checksums-gl-win32-shippable/opt: CLakGY7sT5qXQF_RETAjSQ - beetmover-checksums-gl-win64-aarch64-shippable/opt: WMnHZp-aQsyK1qwdHjpz0A - beetmover-checksums-gl-win64-shippable/opt: FAKtXVsXT3OTSNVbZsgcSg - beetmover-checksums-gn-linux-shippable/opt: A8u-3TXgQDypf49CShM64A - beetmover-checksums-gn-linux64-aarch64-shippable/opt: SnYhg-3rSVyQRb70Huz3Dw - beetmover-checksums-gn-linux64-shippable/opt: NOEQcWF1RaiNS5ubk3vurQ - beetmover-checksums-gn-macosx64-shippable/opt: J2PRi-StQguuxQ3WBq4tgA - beetmover-checksums-gn-win32-shippable/opt: a2NMp7apTse0QbSIyWJsNA - beetmover-checksums-gn-win64-aarch64-shippable/opt: GHn4xic7RMOUMYE6Av0YKA - beetmover-checksums-gn-win64-shippable/opt: Z3hgBchuRySOYphiGFJ66w - beetmover-checksums-gu-IN-linux-shippable/opt: f1KWPf3ARDytpML4tte5GA - beetmover-checksums-gu-IN-linux64-aarch64-shippable/opt: SOJP8dM1TQqgtYZK2m47ZQ - beetmover-checksums-gu-IN-linux64-shippable/opt: f75egxN0QlOreaS5NBhBHg - beetmover-checksums-gu-IN-macosx64-shippable/opt: MDflNvSfQqSAYF6AVLCaRA - beetmover-checksums-gu-IN-win32-shippable/opt: Ugr1wRRrQD2_n5vax27ECQ - beetmover-checksums-gu-IN-win64-aarch64-shippable/opt: B5NzDFewTi68j3j3I_cHjQ - beetmover-checksums-gu-IN-win64-shippable/opt: Iv6n0izCT0yG1Ew_ME_KFg - beetmover-checksums-he-linux-shippable/opt: ZtoGgpJKTQG4nVqLNxlegw - beetmover-checksums-he-linux64-aarch64-shippable/opt: DXTBkVTKTQiF8XR7S_NsYA - beetmover-checksums-he-linux64-shippable/opt: ToYba9IaSqq_LHFum25eeg - beetmover-checksums-he-macosx64-shippable/opt: YQfLzRddRP-AH87siCdtTg - beetmover-checksums-he-win32-shippable/opt: R2lh29ttRWeNv1d3CFSKDw - beetmover-checksums-he-win64-aarch64-shippable/opt: UZz0feDQQ-2VvdZHdzf_jg - beetmover-checksums-he-win64-shippable/opt: AW4ybUOrQC6h61qdK43_Vw - beetmover-checksums-hi-IN-linux-shippable/opt: GwJDXd9zTg2pKw9ppsocXQ - beetmover-checksums-hi-IN-linux64-aarch64-shippable/opt: AQI27RUZRuiXg9r665FsjQ - beetmover-checksums-hi-IN-linux64-shippable/opt: DB_lr-8vRHef7voFxAes5Q - beetmover-checksums-hi-IN-macosx64-shippable/opt: S6t5Yo--R9apxg0DOQOFTA - beetmover-checksums-hi-IN-win32-shippable/opt: Yr2YjsnfSne1QalZ3kwwAA - beetmover-checksums-hi-IN-win64-aarch64-shippable/opt: fY0WFJrCST213_Pv-ozQQw - beetmover-checksums-hi-IN-win64-shippable/opt: DecqiCHiRMyMTMPFy9nREA - beetmover-checksums-hr-linux-shippable/opt: SsYkqjxLQ5yDCL8vVSV_FA - beetmover-checksums-hr-linux64-aarch64-shippable/opt: R8VMxKk6SiOgItjgmc84Cw - beetmover-checksums-hr-linux64-shippable/opt: RiMpnYKFR8uXKvzgKaMxIg - beetmover-checksums-hr-macosx64-shippable/opt: G7CfVsF8SlKAXbnBfcdbeg - beetmover-checksums-hr-win32-shippable/opt: Qh42ccnrR-maOr7XJyMrwQ - beetmover-checksums-hr-win64-aarch64-shippable/opt: MULEqRoUTGSPbmt8Sr7htg - beetmover-checksums-hr-win64-shippable/opt: H8D6TQAnS8atR_X9EJYDGw - beetmover-checksums-hsb-linux-shippable/opt: Bi2UCySKQBGH3knWbuYUdw - beetmover-checksums-hsb-linux64-aarch64-shippable/opt: IIL79EuyT_eqTuK_u9PC7g - beetmover-checksums-hsb-linux64-shippable/opt: C3TfdxZ1TC-_ylrUcBXcnw - beetmover-checksums-hsb-macosx64-shippable/opt: AlwEM3KRQY6ZdsE3snlzPA - beetmover-checksums-hsb-win32-shippable/opt: QKe536TvQ1Ko1RyX9XqSbw - beetmover-checksums-hsb-win64-aarch64-shippable/opt: PQ_tvvp8TIaclVnF6u9xcw - beetmover-checksums-hsb-win64-shippable/opt: PO9zb3iZT8KwkCxpSKwl0w - beetmover-checksums-hu-linux-shippable/opt: Pu1zrn2bQmCqTu7XplGymQ - beetmover-checksums-hu-linux64-aarch64-shippable/opt: ERyRvOZfQBWSeWho3rh_tA - beetmover-checksums-hu-linux64-shippable/opt: e1zPz7YGRSu4vPa1T2ib0w - beetmover-checksums-hu-macosx64-shippable/opt: QI6NRSf4Q8K0ZRUjKRsizg - beetmover-checksums-hu-win32-shippable/opt: WTl9QAu7QrC13XD49ogJeQ - beetmover-checksums-hu-win64-aarch64-shippable/opt: YNvmuP5PQl20qnW0ulOiMA - beetmover-checksums-hu-win64-shippable/opt: dgGnaNBrQ4SNOGIkge7jXQ - beetmover-checksums-hy-AM-linux-shippable/opt: LpK0myBVR46GJv8B3Oladg - beetmover-checksums-hy-AM-linux64-aarch64-shippable/opt: Tf6IK2oER8iX5wtd7kUPkw - beetmover-checksums-hy-AM-linux64-shippable/opt: LpQLJV_9QUidvYZpNBh-bw - beetmover-checksums-hy-AM-macosx64-shippable/opt: VodafSNnRZS05M3UibPnCw - beetmover-checksums-hy-AM-win32-shippable/opt: RS43F7XiR4O8PuKujJJTzg - beetmover-checksums-hy-AM-win64-aarch64-shippable/opt: PNYSPcgCSzmRqEtGMwrIxQ - beetmover-checksums-hy-AM-win64-shippable/opt: C8t4zNu8QEi8qQr9syKBmw - beetmover-checksums-ia-linux-shippable/opt: I8lmgYNeQbavTsTt3waywg - beetmover-checksums-ia-linux64-aarch64-shippable/opt: XNg1qN1lQaunHggSXaa0oQ - beetmover-checksums-ia-linux64-shippable/opt: Di2C4OUjRn-YuSz4XbiXbQ - beetmover-checksums-ia-macosx64-shippable/opt: OMAwaY2hTR69uf55N6PuTA - beetmover-checksums-ia-win32-shippable/opt: drmXDdRiTVKproQWD87n1A - beetmover-checksums-ia-win64-aarch64-shippable/opt: Qy_QSIiURFqGAaMBkWnI4w - beetmover-checksums-ia-win64-shippable/opt: DuplQY9PR-G80gfIe3bRuQ - beetmover-checksums-id-linux-shippable/opt: SJI_Qyt6QbKvzzoabdIiPw - beetmover-checksums-id-linux64-aarch64-shippable/opt: BkSyUiB4SkugJtPgOzecHw - beetmover-checksums-id-linux64-shippable/opt: FMRPEgveSbquLt_5nFmH3A - beetmover-checksums-id-macosx64-shippable/opt: LQapm-o0RtmxipeQ_OGzvA - beetmover-checksums-id-win32-shippable/opt: Y6RQ_ncsS6qiEIaiVl-z_Q - beetmover-checksums-id-win64-aarch64-shippable/opt: JcVqsVQ1RIaWzJC7mTFr1g - beetmover-checksums-id-win64-shippable/opt: d4LiJM8fSsiWBVMwvfdK_g - beetmover-checksums-is-linux-shippable/opt: L7BqP2a0S8WP3-o4fLohRQ - beetmover-checksums-is-linux64-aarch64-shippable/opt: dh9-CCzATFywgL06iphu8w - beetmover-checksums-is-linux64-shippable/opt: DgrPlNxBT4KCZpsaumP9AQ - beetmover-checksums-is-macosx64-shippable/opt: Vffi8fnySUm9zGE8xuxeDg - beetmover-checksums-is-win32-shippable/opt: KdXbF4NFQJ2cUwR77DBNWw - beetmover-checksums-is-win64-aarch64-shippable/opt: EGqMkHFhTWKXHbrMhQqdPQ - beetmover-checksums-is-win64-shippable/opt: YaXd9wD6SMSq1qHWYV5QFg - beetmover-checksums-it-linux-shippable/opt: TlzEUitbS4WfpLtw_IXCoA - beetmover-checksums-it-linux64-aarch64-shippable/opt: Hqz50KvqSF-FslhZGVs1QA - beetmover-checksums-it-linux64-shippable/opt: NM5C-UROQeiMi4geh107ow - beetmover-checksums-it-macosx64-shippable/opt: WmSUwGdWS62AxSA-o2Q_7w - beetmover-checksums-it-win32-shippable/opt: TbDaWhrWR9qzUqqO7GfS2A - beetmover-checksums-it-win64-aarch64-shippable/opt: GEsWY2MESguud7UXoSW0KA - beetmover-checksums-it-win64-shippable/opt: Vjtcd-klR0qI8S-poUJGuA - beetmover-checksums-ja-JP-mac-macosx64-shippable/opt: PfbyGv5cTziPNl8siUwlaQ - beetmover-checksums-ja-linux-shippable/opt: Ns4ikSOSSDO-R_2DVYxqjA - beetmover-checksums-ja-linux64-aarch64-shippable/opt: G9lTEP3aRHmdjkyZGqRiSQ - beetmover-checksums-ja-linux64-shippable/opt: O-A7Rc82TUyePbWHQUXmBw - beetmover-checksums-ja-win32-shippable/opt: QjZ8lrA2ThG8Pw3niCF-5A - beetmover-checksums-ja-win64-aarch64-shippable/opt: bL2tSbqJT862Mk6eIv0K3A - beetmover-checksums-ja-win64-shippable/opt: W-F8LdTMS8GP0ZhzRYs8sg - beetmover-checksums-ka-linux-shippable/opt: FlcWYH7kRQaWmvdbi1pHtA - beetmover-checksums-ka-linux64-aarch64-shippable/opt: Vod2pwdHQ_2DPyjvUCFF0A - beetmover-checksums-ka-linux64-shippable/opt: IG0lw0mPTrGOp2pAbL1DCA - beetmover-checksums-ka-macosx64-shippable/opt: B_AmHrNTSlWgiKb5B2MiiQ - beetmover-checksums-ka-win32-shippable/opt: CO_B2Wm5SR2GVo0TH4IovA - beetmover-checksums-ka-win64-aarch64-shippable/opt: HG6s3wHqS_i2z-jiSu7wUA - beetmover-checksums-ka-win64-shippable/opt: N932rHH0SFuomEItG72QPw - beetmover-checksums-kab-linux-shippable/opt: ar1y2pBbS4-vmSwDahMK1A - beetmover-checksums-kab-linux64-aarch64-shippable/opt: VXGF5K19TSutWEHP1zKuuA - beetmover-checksums-kab-linux64-shippable/opt: PCr98PBwTciNxPmoKSbxDQ - beetmover-checksums-kab-macosx64-shippable/opt: UOR-766TQVuwaOLM22SCXA - beetmover-checksums-kab-win32-shippable/opt: Og8sIV1vT_CbgplDqvRgMA - beetmover-checksums-kab-win64-aarch64-shippable/opt: Yf3jNJ1eQk27JYoOYAJWrA - beetmover-checksums-kab-win64-shippable/opt: QDQCLcweTw6snKvAsOzgrQ - beetmover-checksums-kk-linux-shippable/opt: brZizVSyQPCkIZlWkzkTfg - beetmover-checksums-kk-linux64-aarch64-shippable/opt: a45jG3tTQgO1qzgqFycayQ - beetmover-checksums-kk-linux64-shippable/opt: eatMeOKcSaS67llGD9GUXw - beetmover-checksums-kk-macosx64-shippable/opt: OLKnFWPwRImnRbnDmEmvkQ - beetmover-checksums-kk-win32-shippable/opt: MzuNPQbJQEenpV34OilaRg - beetmover-checksums-kk-win64-aarch64-shippable/opt: J0GXvxEQSJm3gMj0vzwo5Q - beetmover-checksums-kk-win64-shippable/opt: MTV0a9yaSNeOCIMGNgCBBA - beetmover-checksums-km-linux-shippable/opt: JnZ7_v4tSoaSrIZUyx1-FA - beetmover-checksums-km-linux64-aarch64-shippable/opt: PM1ZYQ2oSvadtJb5thQjwQ - beetmover-checksums-km-linux64-shippable/opt: AbO85PJzREqLJcLKn-pG7Q - beetmover-checksums-km-macosx64-shippable/opt: Jq6JqHw1SU2MiXwS1ebaww - beetmover-checksums-km-win32-shippable/opt: a4RfMaX-SLquWYY0ySG4BQ - beetmover-checksums-km-win64-aarch64-shippable/opt: M3-jYXXhRuOhbg0VNh6LuA - beetmover-checksums-km-win64-shippable/opt: BiSjP-R6TjK66MABvtuO6A - beetmover-checksums-kn-linux-shippable/opt: S5NwEs3ySjeno0uqjEYWgg - beetmover-checksums-kn-linux64-aarch64-shippable/opt: d5YMAY2pR8W_RIs-BQb5ig - beetmover-checksums-kn-linux64-shippable/opt: VHN06qu-T6KHzZdQIb9m3A - beetmover-checksums-kn-macosx64-shippable/opt: YQP_yXJ-RsW_P4Up-vGT3Q - beetmover-checksums-kn-win32-shippable/opt: YeUw3g1kQDOUF-upmXua8g - beetmover-checksums-kn-win64-aarch64-shippable/opt: Ljwq_wW0QruVi4-QA3IMKA - beetmover-checksums-kn-win64-shippable/opt: bm5iJK0GRym1PUeGeOOXEA - beetmover-checksums-ko-linux-shippable/opt: di7SAT_iQPKivty8ibBHdA - beetmover-checksums-ko-linux64-aarch64-shippable/opt: AxQeJ98SQFKs49_eBqVwFw - beetmover-checksums-ko-linux64-shippable/opt: FEWp6XCBRC-Zsyk2RYbGnA - beetmover-checksums-ko-macosx64-shippable/opt: VI32PD-GQhucyORp45ux7w - beetmover-checksums-ko-win32-shippable/opt: CDA8TCRwTVebyf-DVd0htw - beetmover-checksums-ko-win64-aarch64-shippable/opt: DNzkWimGQ8yaqctbWFjGJQ - beetmover-checksums-ko-win64-shippable/opt: K5OJRpxqS9iQLt3h_krgEQ - beetmover-checksums-lij-linux-shippable/opt: fdP2cAb7SiKokGKVQN_67w - beetmover-checksums-lij-linux64-aarch64-shippable/opt: FDbamgN-S7qRTvmAtyrE_g - beetmover-checksums-lij-linux64-shippable/opt: e2thsKj0RX-2mJKXO627nw - beetmover-checksums-lij-macosx64-shippable/opt: bUWnvsV9SV2988o3QDcYSQ - beetmover-checksums-lij-win32-shippable/opt: CCsiXB-aT_W2Vz0i0QZLnQ - beetmover-checksums-lij-win64-aarch64-shippable/opt: HS84memlTWalxOFf01s14g - beetmover-checksums-lij-win64-shippable/opt: EaGjOAtvTdqUGv8wWEKRfA - beetmover-checksums-linux-shippable/opt: CE8bXRW8SqS-EZfcJvQraA - beetmover-checksums-linux64-aarch64-shippable/opt: IkBjO4BQRJiAJnJNnk7NuA - beetmover-checksums-linux64-shippable/opt: CKXaRYlKQfu_-5x5hZ4fdw - beetmover-checksums-lt-linux-shippable/opt: ZX6CxBjjSjeGAc6GfolhQg - beetmover-checksums-lt-linux64-aarch64-shippable/opt: d9PVAKe1Q0yTmAoOSsc7-A - beetmover-checksums-lt-linux64-shippable/opt: ed6Bj85GTyW5ueH0w67sAw - beetmover-checksums-lt-macosx64-shippable/opt: d43Jhq47T82Ch79T45brIA - beetmover-checksums-lt-win32-shippable/opt: cNKLWIN9SC6Vji46Y50ZEA - beetmover-checksums-lt-win64-aarch64-shippable/opt: fDRRB42IRmKPCHylU5cM8Q - beetmover-checksums-lt-win64-shippable/opt: EpmP-qXbQKOu1IGMfs4zJQ - beetmover-checksums-lv-linux-shippable/opt: cDqZkJMGTUOSnx975zptAg - beetmover-checksums-lv-linux64-aarch64-shippable/opt: ACoDi1zpR6-m5QhcIf7tcg - beetmover-checksums-lv-linux64-shippable/opt: ROPOdprOSsO0jeud_aq4Nw - beetmover-checksums-lv-macosx64-shippable/opt: Xexc7fKGRhGsmxclGo3JwA - beetmover-checksums-lv-win32-shippable/opt: Y_eOlLKOQWmHJYcGPlskwQ - beetmover-checksums-lv-win64-aarch64-shippable/opt: MRORlRVYTx2rmFKEdIfaqw - beetmover-checksums-lv-win64-shippable/opt: FFHwgqbBRYmCEvzpPH6Weg - beetmover-checksums-macosx64-shippable/opt: OVsLnOsaTpWuLRiZrKde3Q - beetmover-checksums-mk-linux-shippable/opt: Zbbrk_LyRleORBLN-YZvAA - beetmover-checksums-mk-linux64-aarch64-shippable/opt: DbzeGdzbQ7-RdmJ23FYOvA - beetmover-checksums-mk-linux64-shippable/opt: JVtW9v1kRLuCTyplIXbl-A - beetmover-checksums-mk-macosx64-shippable/opt: O4UWa3PmTXa7gnnZ0jmEGg - beetmover-checksums-mk-win32-shippable/opt: FBgf1Y82QVqv-mY1kOAWSw - beetmover-checksums-mk-win64-aarch64-shippable/opt: P5EBJbK_S7G27XUHtGXp0g - beetmover-checksums-mk-win64-shippable/opt: HRif1qMNRmqWYMc1yeVU5g - beetmover-checksums-mr-linux-shippable/opt: fqXAbnHZTQWNUAY5tBj1Kg - beetmover-checksums-mr-linux64-aarch64-shippable/opt: MC-nuFESSm2uOMWca1YArw - beetmover-checksums-mr-linux64-shippable/opt: O2YaLwLTS42M6jgfypw3Uw - beetmover-checksums-mr-macosx64-shippable/opt: B_bSxdirTCmcMqDLJ872xA - beetmover-checksums-mr-win32-shippable/opt: TeyMRfLCToKb9Ip3vXzOEg - beetmover-checksums-mr-win64-aarch64-shippable/opt: QW4O6QrxRBukXg4tMQtAeg - beetmover-checksums-mr-win64-shippable/opt: C3wAyEanQeyqZIqX2xVKkg - beetmover-checksums-ms-linux-shippable/opt: Wzcx4S5HTBG3GQdZJvTsVQ - beetmover-checksums-ms-linux64-aarch64-shippable/opt: WWi6EGJRQFezCHbvJSVEUw - beetmover-checksums-ms-linux64-shippable/opt: HQcbF4xTTpyCAIUeKwiyFA - beetmover-checksums-ms-macosx64-shippable/opt: fXraRoLAQAeE55JLOlGOiw - beetmover-checksums-ms-win32-shippable/opt: Dojz8hsnRvGkS3YoxQq8kg - beetmover-checksums-ms-win64-aarch64-shippable/opt: HMBLntJHRsiIwrRMJa4hkQ - beetmover-checksums-ms-win64-shippable/opt: LnPoPsmvSCKgEzO_pE9-fA - beetmover-checksums-my-linux-shippable/opt: SnuJMrRZRZKXTjdxlB3JCQ - beetmover-checksums-my-linux64-aarch64-shippable/opt: OH-ZxWDSR2SYN0kMZFVfIg - beetmover-checksums-my-linux64-shippable/opt: OTooLTAATc2khK7M2VXanw - beetmover-checksums-my-macosx64-shippable/opt: QEkVsLa3TbSEdqN7Eu9V9g - beetmover-checksums-my-win32-shippable/opt: YRafw91JSh2ezCLOIAOkyQ - beetmover-checksums-my-win64-aarch64-shippable/opt: fZK-bFAyR9Oj27V8xQsodQ - beetmover-checksums-my-win64-shippable/opt: QqdlMpQ-Sp2MK8M5jpYTuQ - beetmover-checksums-nb-NO-linux-shippable/opt: WcmmI6oNTPKzfSr8X9iiGA - beetmover-checksums-nb-NO-linux64-aarch64-shippable/opt: b95nlxwZSpuhm4NLEYn0wg - beetmover-checksums-nb-NO-linux64-shippable/opt: H1Dm9YBQS0iWMToTTBwmcA - beetmover-checksums-nb-NO-macosx64-shippable/opt: d7wet_kLScWr4pC7cIIoYg - beetmover-checksums-nb-NO-win32-shippable/opt: QfgYfBGuRkWB9DfKsP_DeA - beetmover-checksums-nb-NO-win64-aarch64-shippable/opt: KKzTZvPMTuOklee-75-u7A - beetmover-checksums-nb-NO-win64-shippable/opt: ANVusQ51TPyDUjCaKO8bcA - beetmover-checksums-ne-NP-linux-shippable/opt: MN5g7tzQQyq9pPYrlXiE3Q - beetmover-checksums-ne-NP-linux64-aarch64-shippable/opt: V2oRr0BNSIyGd4H4yXLJcg - beetmover-checksums-ne-NP-linux64-shippable/opt: CRFfKZz_RZmA4jP1xfipaA - beetmover-checksums-ne-NP-macosx64-shippable/opt: L5Wl6_QbQC-J9wXq1sHdRA - beetmover-checksums-ne-NP-win32-shippable/opt: TsKMY5oXS7OEtX6qTDWmDA - beetmover-checksums-ne-NP-win64-aarch64-shippable/opt: NQVQSGMVTpqG25QVgxatLw - beetmover-checksums-ne-NP-win64-shippable/opt: IbfpYEnVSgO0hzhwplYasg - beetmover-checksums-nl-linux-shippable/opt: HY_rPFSGRGSGAnbRBujQiA - beetmover-checksums-nl-linux64-aarch64-shippable/opt: CUaw8oh-TGa-CuAA7_wtxQ - beetmover-checksums-nl-linux64-shippable/opt: AxUKtfHcTRmjXgWGJBLSig - beetmover-checksums-nl-macosx64-shippable/opt: GFX6l1v_Smq6qllsJaDu8Q - beetmover-checksums-nl-win32-shippable/opt: HwIwF4FfTs2JangA7Pmz9Q - beetmover-checksums-nl-win64-aarch64-shippable/opt: J6bryWZ2SsWyZBKYb220EA - beetmover-checksums-nl-win64-shippable/opt: fw75FkWWQ-2zuh5OJQ-jpw - beetmover-checksums-nn-NO-linux-shippable/opt: f27Jmu2ESKCYxWQ_VZhKHw - beetmover-checksums-nn-NO-linux64-aarch64-shippable/opt: JxUxIsPjTSqY6xC3R25b4A - beetmover-checksums-nn-NO-linux64-shippable/opt: X5JO51beQ7-C9bQ0vFkWYQ - beetmover-checksums-nn-NO-macosx64-shippable/opt: aiM3QZcIQhWNAjBUEiMKeQ - beetmover-checksums-nn-NO-win32-shippable/opt: XzfTIcpdTTO5l3VVbhuhtA - beetmover-checksums-nn-NO-win64-aarch64-shippable/opt: X_saYqPHRtePrGg8x9VXLg - beetmover-checksums-nn-NO-win64-shippable/opt: cH-7cO5tQbGDkQWsia1asQ - beetmover-checksums-oc-linux-shippable/opt: TEzpkGAoSa2ruCakNRjI4A - beetmover-checksums-oc-linux64-aarch64-shippable/opt: eXdaATKcRZW5BH0gbb77tw - beetmover-checksums-oc-linux64-shippable/opt: Co9QcV8IQ7-jqGgZVo0NYw - beetmover-checksums-oc-macosx64-shippable/opt: CcFeHVy6RLWwvuRQwX4t0g - beetmover-checksums-oc-win32-shippable/opt: JylCsGViRiun0J0e3HpMMA - beetmover-checksums-oc-win64-aarch64-shippable/opt: B8Tf2gFlSsOS-yybwRPX2A - beetmover-checksums-oc-win64-shippable/opt: b33TFUZdQRuNMqxOK0ITjw - beetmover-checksums-pa-IN-linux-shippable/opt: D83G6fJATFqYtH4sFi6jBg - beetmover-checksums-pa-IN-linux64-aarch64-shippable/opt: Kd2BK6YzQiGYC-dU2rbxag - beetmover-checksums-pa-IN-linux64-shippable/opt: eRzI88fDSCuy-T_lJhRsWA - beetmover-checksums-pa-IN-macosx64-shippable/opt: LQnhq1ckSVqvgmzmFRtKgQ - beetmover-checksums-pa-IN-win32-shippable/opt: DGH0G-nJTAGOj3iBTBrupA - beetmover-checksums-pa-IN-win64-aarch64-shippable/opt: bJyRKsVQRQyB5XAtErFykw - beetmover-checksums-pa-IN-win64-shippable/opt: Ls-vuW5-QAWHA0RX_o-rsQ - beetmover-checksums-pl-linux-shippable/opt: Y7g-ztvdTSaH_WDX5UrIGQ - beetmover-checksums-pl-linux64-aarch64-shippable/opt: HASognjbSauWIwaYdV4wNA - beetmover-checksums-pl-linux64-shippable/opt: GVLU4OZhTaOq3nqTdzHL2w - beetmover-checksums-pl-macosx64-shippable/opt: b3svJ76IReCYoRHyj95vvg - beetmover-checksums-pl-win32-shippable/opt: fc5dR-dHRcC2qg9aXyx_Xg - beetmover-checksums-pl-win64-aarch64-shippable/opt: STWu4uEGS-ChFsGe-mfhVg - beetmover-checksums-pl-win64-shippable/opt: e68o6SzOTaeSmT90AJ16Sg - beetmover-checksums-pt-BR-linux-shippable/opt: bGH1S3sRSDCcGf2detSqIA - beetmover-checksums-pt-BR-linux64-aarch64-shippable/opt: eVKvQMM9Qoee3bXzYwKbjg - beetmover-checksums-pt-BR-linux64-shippable/opt: eGuUpUArSluycVTfOSW9DQ - beetmover-checksums-pt-BR-macosx64-shippable/opt: GuOKs1f3SsmzWghLo771Ww - beetmover-checksums-pt-BR-win32-shippable/opt: JxbXEmlWSMmc4y5VQusodQ - beetmover-checksums-pt-BR-win64-aarch64-shippable/opt: XgRzb7yWSDmARVOLNFfXxQ - beetmover-checksums-pt-BR-win64-shippable/opt: VaNfp4vxStiJq04z6sk6vg - beetmover-checksums-pt-PT-linux-shippable/opt: fr3QDUZjRWCZZ1zm8-xS5w - beetmover-checksums-pt-PT-linux64-aarch64-shippable/opt: f0jYsgBGQ1uRriIvmHfqHw - beetmover-checksums-pt-PT-linux64-shippable/opt: fwNXnKtCSHCVW4SW6ubXpQ - beetmover-checksums-pt-PT-macosx64-shippable/opt: IUZ4GrK1R22a-6GgKVArCQ - beetmover-checksums-pt-PT-win32-shippable/opt: eyD48XQVSyy6YBWcEVR7Jg - beetmover-checksums-pt-PT-win64-aarch64-shippable/opt: MgoWcSFpS6C7hdsER2yy3g - beetmover-checksums-pt-PT-win64-shippable/opt: DrzULzfYQiKhEdkSwEHcrA - beetmover-checksums-rm-linux-shippable/opt: Oi3xef1qT7eMEpD-e57AfQ - beetmover-checksums-rm-linux64-aarch64-shippable/opt: dMq7bZMiT7q7dIA5QdnITA - beetmover-checksums-rm-linux64-shippable/opt: Qx5YxSH3TXSNyPGJxCqD_Q - beetmover-checksums-rm-macosx64-shippable/opt: CqR1CZFARcmQlflopLHnog - beetmover-checksums-rm-win32-shippable/opt: MoDLU0rlTk-udAFX0UnNzw - beetmover-checksums-rm-win64-aarch64-shippable/opt: P0E3jW7DRhmP94yq6uJF8A - beetmover-checksums-rm-win64-shippable/opt: SF4dk0RqRV60XP9w-CcIiQ - beetmover-checksums-ro-linux-shippable/opt: Abk3kEcGSXWzvL8JB_M-Lg - beetmover-checksums-ro-linux64-aarch64-shippable/opt: OLWvtuDuQEOehEfxW6llRw - beetmover-checksums-ro-linux64-shippable/opt: ZfnYbUCyRr686Qef1UX8rQ - beetmover-checksums-ro-macosx64-shippable/opt: KO3LJvPORQuoUZtL88YGyQ - beetmover-checksums-ro-win32-shippable/opt: f3Od74P_QjKRX3Qq6LuWYQ - beetmover-checksums-ro-win64-aarch64-shippable/opt: Wk1jmIBtRf2497lWTdlRow - beetmover-checksums-ro-win64-shippable/opt: E5O4MD37R3WKSf5Q2NosMQ - beetmover-checksums-ru-linux-shippable/opt: TTJB2-YgRYGPPvLLwFH0PA - beetmover-checksums-ru-linux64-aarch64-shippable/opt: Ri_7W5O-QzKN1C3nqD7EaQ - beetmover-checksums-ru-linux64-shippable/opt: Pkoc6JSbRiGyJGwKMAofxQ - beetmover-checksums-ru-macosx64-shippable/opt: T8J0YqtwTgisSTNhmIoqKg - beetmover-checksums-ru-win32-shippable/opt: VOeN9BlDSWeM8LyHLU67mQ - beetmover-checksums-ru-win64-aarch64-shippable/opt: ZZdp4dEYSwCKKoHslb2PLQ - beetmover-checksums-ru-win64-shippable/opt: JyxqZ4HIRl6YoLGG5HiSWw - beetmover-checksums-sat-linux-shippable/opt: G8TE9OBKSu6-Z3R88HIulQ - beetmover-checksums-sat-linux64-aarch64-shippable/opt: Ibuj-cMzQUWf2O5C64kY2g - beetmover-checksums-sat-linux64-shippable/opt: fJYeN7CNSCGpxEcgV9FxOw - beetmover-checksums-sat-macosx64-shippable/opt: Ya0TPGaCRF6f38qnFN-rUA - beetmover-checksums-sat-win32-shippable/opt: YF5bIEC9T7aJPNdRN-i9eQ - beetmover-checksums-sat-win64-aarch64-shippable/opt: C3FbrZwcQKqnONARMGluLg - beetmover-checksums-sat-win64-shippable/opt: cYD3Tw6DRg-lZal_SaBu0Q - beetmover-checksums-sc-linux-shippable/opt: R8uzKGzGQIOUWugEiIIuTA - beetmover-checksums-sc-linux64-aarch64-shippable/opt: UBGIufVYTXWtXCdZgzcHBQ - beetmover-checksums-sc-linux64-shippable/opt: N5vY14VCTYSwP4SFlnkdpA - beetmover-checksums-sc-macosx64-shippable/opt: SXiELIvpR9CqDo3YMdOiXA - beetmover-checksums-sc-win32-shippable/opt: URF1VeDNQJKCWSW--wteXQ - beetmover-checksums-sc-win64-aarch64-shippable/opt: O_e0rwgTRmmrfrRvTbQvCg - beetmover-checksums-sc-win64-shippable/opt: XX-mT2ZQRX-0yUovndFykA - beetmover-checksums-sco-linux-shippable/opt: K9mtltEcRVCrQM7JiE3VYQ - beetmover-checksums-sco-linux64-aarch64-shippable/opt: d8SpTko3SzCykOzt-InhHQ - beetmover-checksums-sco-linux64-shippable/opt: cnGj6sQQRRehj3G9dNLK8A - beetmover-checksums-sco-macosx64-shippable/opt: LBnpMDAhQnS1qRtoF2rCXA - beetmover-checksums-sco-win32-shippable/opt: GA7igOA5ThGiDIBg642dZw - beetmover-checksums-sco-win64-aarch64-shippable/opt: a-qp5zOjSmCLkoBzaDnrRg - beetmover-checksums-sco-win64-shippable/opt: P_tQlLMIQNauLCPk-2GvuQ - beetmover-checksums-si-linux-shippable/opt: Nt62fzSlS6-5j0q0aqXuUA - beetmover-checksums-si-linux64-aarch64-shippable/opt: BUC7lD99TxiNyk5MrWWY1A - beetmover-checksums-si-linux64-shippable/opt: IwBj-IbIQFGgJPT3IZnhew - beetmover-checksums-si-macosx64-shippable/opt: EgMhDNITR76nzjWx2dxUlQ - beetmover-checksums-si-win32-shippable/opt: d0AIxegGSJKdo6m1KRLZ0g - beetmover-checksums-si-win64-aarch64-shippable/opt: Zn-Tw3vxSayzDzMoE7IlMA - beetmover-checksums-si-win64-shippable/opt: DhHw-gc1Q-eOgvPm2IT9Ug - beetmover-checksums-sk-linux-shippable/opt: YlReS_dDRUezTVRPN7mNWA - beetmover-checksums-sk-linux64-aarch64-shippable/opt: X1EdEPPMSaiMFbofab0hCw - beetmover-checksums-sk-linux64-shippable/opt: D5tAKsxbQsKIpXeHEyb3Fw - beetmover-checksums-sk-macosx64-shippable/opt: TVIm-2pJRWCXWF9sHpcB6w - beetmover-checksums-sk-win32-shippable/opt: JcaYtFPfSsmO2qh_se_sgQ - beetmover-checksums-sk-win64-aarch64-shippable/opt: U4mBDVEeRQ6UY9N_wbNGFQ - beetmover-checksums-sk-win64-shippable/opt: KbvgY-mHTp2ogay4mq9VlQ - beetmover-checksums-skr-linux-shippable/opt: dH7MRvZGTKGzTRYJas8grw - beetmover-checksums-skr-linux64-aarch64-shippable/opt: DnPsDxrLRl-9cEQEelye9A - beetmover-checksums-skr-linux64-shippable/opt: PGqE_a8hTYKgIjcWxwBCvw - beetmover-checksums-skr-macosx64-shippable/opt: bHla_AkBRIW4RlN7-KoDLw - beetmover-checksums-skr-win32-shippable/opt: Nwk56gUQQO-GFZczFVzW4A - beetmover-checksums-skr-win64-aarch64-shippable/opt: GdeGJQl6S96D4vRn8B3C5w - beetmover-checksums-skr-win64-shippable/opt: KX_recqESOGfLIxB5cXu0w - beetmover-checksums-sl-linux-shippable/opt: PWkmjXbBTZmC-UosV7PFag - beetmover-checksums-sl-linux64-aarch64-shippable/opt: GSaD70rwTn2GqFh7w11b-A - beetmover-checksums-sl-linux64-shippable/opt: YBomttiQRrqHwXknq8AOAQ - beetmover-checksums-sl-macosx64-shippable/opt: KB_f0R2wSbmdpyTFeAJogQ - beetmover-checksums-sl-win32-shippable/opt: KNGI1HnvTvuH1fn2O0LLxQ - beetmover-checksums-sl-win64-aarch64-shippable/opt: Z-68UxicTnivaGK6VjJ-DA - beetmover-checksums-sl-win64-shippable/opt: AfhnWfvwSRGx4q0yUnRRbg - beetmover-checksums-son-linux-shippable/opt: DtPYalOZT4-PPzCS5i5nFg - beetmover-checksums-son-linux64-aarch64-shippable/opt: HZqB6ttvS9Ge88HsTwEBSQ - beetmover-checksums-son-linux64-shippable/opt: f2iPLu4SQHKszCdbOCxDmw - beetmover-checksums-son-macosx64-shippable/opt: DMcXKETBTDWlo9vpMdbcAg - beetmover-checksums-son-win32-shippable/opt: RZEZ3fwDRFmhOU1vGCFTIQ - beetmover-checksums-son-win64-aarch64-shippable/opt: D0xJUH4VSyCfoZDik6f8pQ - beetmover-checksums-son-win64-shippable/opt: TXvE9ad1RtuhgX6b21mmzw - beetmover-checksums-sq-linux-shippable/opt: V0qpLNlpTfaiq9EMaMfNpQ - beetmover-checksums-sq-linux64-aarch64-shippable/opt: cWdyag-pSJiZRxeQFLkIYA - beetmover-checksums-sq-linux64-shippable/opt: KZhQjMoJQF2qiwGHzctnbQ - beetmover-checksums-sq-macosx64-shippable/opt: AL14bQlkQYqD7mVsi_W0ZA - beetmover-checksums-sq-win32-shippable/opt: JKBb5uGRQLKNKij8FE0iTA - beetmover-checksums-sq-win64-aarch64-shippable/opt: CVYeB03uSdmdPseQ25wKxA - beetmover-checksums-sq-win64-shippable/opt: I5PQiAlPTcOAeRknjKCyvw - beetmover-checksums-sr-linux-shippable/opt: f3GwDr5lSbaV0D03E5_ztA - beetmover-checksums-sr-linux64-aarch64-shippable/opt: WvpT8UP9S2-Fe2PM1OHufA - beetmover-checksums-sr-linux64-shippable/opt: Cx-pREc_SEWFu9aWuBWOYQ - beetmover-checksums-sr-macosx64-shippable/opt: QiokAFL2Roi3_mMxHyRAjw - beetmover-checksums-sr-win32-shippable/opt: CMI-iPZ-S5eAZSCHIk8heg - beetmover-checksums-sr-win64-aarch64-shippable/opt: JFdnKNt_TOmFYeRx5hjONA - beetmover-checksums-sr-win64-shippable/opt: avuDlySQQLeN7mwI_y2sJA - beetmover-checksums-sv-SE-linux-shippable/opt: W6EQ09_2QZ-xw5yCBdQEag - beetmover-checksums-sv-SE-linux64-aarch64-shippable/opt: XUczs_-7S0iEmDG4PtDuZg - beetmover-checksums-sv-SE-linux64-shippable/opt: fRI1xpjeQ3qw3FHlWO6gcg - beetmover-checksums-sv-SE-macosx64-shippable/opt: e2A0g-ogQ2yZEeLyCWAYCw - beetmover-checksums-sv-SE-win32-shippable/opt: e8B_8YH5SPywmLw8r8sI8A - beetmover-checksums-sv-SE-win64-aarch64-shippable/opt: WYVq4PYbQya1RBcnYaU2CA - beetmover-checksums-sv-SE-win64-shippable/opt: B4R5QHzQQLeNnHIK22m3BQ - beetmover-checksums-szl-linux-shippable/opt: K6CN9kQLQOuS6l6RV8MMXA - beetmover-checksums-szl-linux64-aarch64-shippable/opt: fBo7PPRmRlGPN0OCiwC5zQ - beetmover-checksums-szl-linux64-shippable/opt: QKhB1IuRSi6vkYa2NTvRXg - beetmover-checksums-szl-macosx64-shippable/opt: SHaA4yVcQOGUbbL5gYj55g - beetmover-checksums-szl-win32-shippable/opt: NnxganasQFSvgG-N7YaAAA - beetmover-checksums-szl-win64-aarch64-shippable/opt: d3y_t8FnT6iluheWVd7ykg - beetmover-checksums-szl-win64-shippable/opt: CADYyGcOT4ukl6vJfhPXIA - beetmover-checksums-ta-linux-shippable/opt: VgajcmLRQ226GdUX09Ra7Q - beetmover-checksums-ta-linux64-aarch64-shippable/opt: Ajt-nXyvQFiNKzWw8pQu5g - beetmover-checksums-ta-linux64-shippable/opt: W_HUM3yfQFK5cpj6oh_1ug - beetmover-checksums-ta-macosx64-shippable/opt: QYQcYdBZRViFeP2NUdIV7Q - beetmover-checksums-ta-win32-shippable/opt: P8NYwtNQR8Gepi0T69pv9Q - beetmover-checksums-ta-win64-aarch64-shippable/opt: fGrzvgMWR-i4zL7H_7C0-w - beetmover-checksums-ta-win64-shippable/opt: bsH5tja9SJyqlWamywzu1Q - beetmover-checksums-te-linux-shippable/opt: ZJMchA1uSvWxbTArRcIFVg - beetmover-checksums-te-linux64-aarch64-shippable/opt: KMMzDkniTKeSexRi-YDS1g - beetmover-checksums-te-linux64-shippable/opt: FPdgnPBLQcq5RxcxUjeEfw - beetmover-checksums-te-macosx64-shippable/opt: MVTgLY6tT-6JmbE1QRrMbg - beetmover-checksums-te-win32-shippable/opt: LPBLmX3qTgCHyhDkmUN_8Q - beetmover-checksums-te-win64-aarch64-shippable/opt: bGZzjLnsTy2qT8R5s_lekg - beetmover-checksums-te-win64-shippable/opt: SdalPGirQ6axhqSlu0gwUw - beetmover-checksums-tg-linux-shippable/opt: bkzf7zrKQ3aDlPOiSieI3w - beetmover-checksums-tg-linux64-aarch64-shippable/opt: az92z7oiR-6Esbaxk4_wCA - beetmover-checksums-tg-linux64-shippable/opt: Zp8A7hgXRO-g2NwmdFWigg - beetmover-checksums-tg-macosx64-shippable/opt: Urx0hLGFSguhzhTBP8VnVA - beetmover-checksums-tg-win32-shippable/opt: T-BtO_NETVKt18SFJzdkHQ - beetmover-checksums-tg-win64-aarch64-shippable/opt: NZij6ZjxSBqq-rqMqAXGUA - beetmover-checksums-tg-win64-shippable/opt: Icd-P4lwR5WHAmHS3Q7QdQ - beetmover-checksums-th-linux-shippable/opt: c4AoKbZZQHyhdjuP7J3arw - beetmover-checksums-th-linux64-aarch64-shippable/opt: P9QLyUxITimbdn0s8RfQcA - beetmover-checksums-th-linux64-shippable/opt: AslRPBSpTQ2eZ5_54oYIrw - beetmover-checksums-th-macosx64-shippable/opt: LxlLOyqdSvSkcEw-YL4x-Q - beetmover-checksums-th-win32-shippable/opt: ZEKDHonqSqWWTF6kQyjDZw - beetmover-checksums-th-win64-aarch64-shippable/opt: MiAhlmSXQfmGoxXK42o_Gw - beetmover-checksums-th-win64-shippable/opt: Vn21SG-nTUqS5dawU76nlQ - beetmover-checksums-tl-linux-shippable/opt: Dy992LzWSxWr73qX8eGsOQ - beetmover-checksums-tl-linux64-aarch64-shippable/opt: emVaqrOTSP-WMKNVNFDgXA - beetmover-checksums-tl-linux64-shippable/opt: HXOn5PW1SH-PQP0sRczVWg - beetmover-checksums-tl-macosx64-shippable/opt: ddClLY2CR2qh8Rvd2mOs2w - beetmover-checksums-tl-win32-shippable/opt: MdPAIs5KQOml97MxED4h4Q - beetmover-checksums-tl-win64-aarch64-shippable/opt: WVgzNlUFRRKwecKxlsBZrg - beetmover-checksums-tl-win64-shippable/opt: PuXelnNJSWi5kzObMOZSNA - beetmover-checksums-tr-linux-shippable/opt: SFc644hnSm2bKI4lQbhjOQ - beetmover-checksums-tr-linux64-aarch64-shippable/opt: Cx3RfIpYSnim_MT5MsNqaA - beetmover-checksums-tr-linux64-shippable/opt: MPY5hnIcQQSJASIPdSdrng - beetmover-checksums-tr-macosx64-shippable/opt: YvqVmdRPS7KaRuD1nAykuA - beetmover-checksums-tr-win32-shippable/opt: AY4pTC53QgmUNmLqHIwSDA - beetmover-checksums-tr-win64-aarch64-shippable/opt: Be7znpFSSNCJkEBmwn0GBw - beetmover-checksums-tr-win64-shippable/opt: ce_tYvnhQ-mMMiBOG0BmDA - beetmover-checksums-trs-linux-shippable/opt: M6W7gWdKTy-Uiw7jbkMMLw - beetmover-checksums-trs-linux64-aarch64-shippable/opt: KBVfi_4nR8OjDmGV2mKAiQ - beetmover-checksums-trs-linux64-shippable/opt: dJyWmO38SgGjWwA2SvCM0g - beetmover-checksums-trs-macosx64-shippable/opt: X57vTVvBQwSKV-tpe-CWVw - beetmover-checksums-trs-win32-shippable/opt: ZdMmK6n8ST-1q1K92ilUBw - beetmover-checksums-trs-win64-aarch64-shippable/opt: A7SSCdMoSvWoKmp34grluA - beetmover-checksums-trs-win64-shippable/opt: fMLAB9wqT_OHk-c7u7jVdA - beetmover-checksums-uk-linux-shippable/opt: aAZtxUxMQxqymUzAivcDgA - beetmover-checksums-uk-linux64-aarch64-shippable/opt: aGjRGeTaRGiRnlSVLSl5nw - beetmover-checksums-uk-linux64-shippable/opt: Rr2huMogTYO8VmZQmmLq0g - beetmover-checksums-uk-macosx64-shippable/opt: SFM-pVzsS-SXgcIrqo4rwg - beetmover-checksums-uk-win32-shippable/opt: SUq7jxqnQS-umWDJzn4W_A - beetmover-checksums-uk-win64-aarch64-shippable/opt: ORuQ6nGiQW6aacYa0D_D7Q - beetmover-checksums-uk-win64-shippable/opt: AMGhIw9FTrOnzmhAzKtIWQ - beetmover-checksums-ur-linux-shippable/opt: fcmuNj7RQf-sx2FvEogH8A - beetmover-checksums-ur-linux64-aarch64-shippable/opt: eFIHkf46RguEh7Xw7j_EOg - beetmover-checksums-ur-linux64-shippable/opt: AivuGcvJRYSVF7_5hrTdeA - beetmover-checksums-ur-macosx64-shippable/opt: IPOE3j_IS5-qBRzIGeXbGA - beetmover-checksums-ur-win32-shippable/opt: MS2NGnC2QWO8vlWX_RzuGg - beetmover-checksums-ur-win64-aarch64-shippable/opt: NmV5gDhyS12mZfUQdYvfBg - beetmover-checksums-ur-win64-shippable/opt: ZdXXFdaiT6WIsuRy-gXhNQ - beetmover-checksums-uz-linux-shippable/opt: UlzP4KNlTcKzCMOGCKHhHQ - beetmover-checksums-uz-linux64-aarch64-shippable/opt: FF9iUQpCSpK7SxzSrDDd6w - beetmover-checksums-uz-linux64-shippable/opt: Fc8BQxi1TX6VQSyaRMu_qQ - beetmover-checksums-uz-macosx64-shippable/opt: Xi_BXyUfTlCNw_wo0dtZzg - beetmover-checksums-uz-win32-shippable/opt: PtwSdgoFRom9JiJLfUZ66A - beetmover-checksums-uz-win64-aarch64-shippable/opt: c0Rowy_DRu6r4Vo9gEBAEQ - beetmover-checksums-uz-win64-shippable/opt: Lko7OwDSSYi3zdpmW-sBTQ - beetmover-checksums-vi-linux-shippable/opt: MH1teNAiQjexAN8grwuBYw - beetmover-checksums-vi-linux64-aarch64-shippable/opt: dRNa2nzXR1Ot0jHImz3E1A - beetmover-checksums-vi-linux64-shippable/opt: CSGi_912TLGWmm_fV6CYvg - beetmover-checksums-vi-macosx64-shippable/opt: NP1-RZOZTLqbkW66NXZWFg - beetmover-checksums-vi-win32-shippable/opt: G5ZF6LhRTrK9vfQs1Udr1g - beetmover-checksums-vi-win64-aarch64-shippable/opt: BE1AEVKrRGaFT1nyuVhzig - beetmover-checksums-vi-win64-shippable/opt: QV0iIgjGRjCZl4yZivqn9Q - beetmover-checksums-win32-shippable/opt: SrARZ3-sRC-cOdwb71IY1A - beetmover-checksums-win64-aarch64-shippable/opt: PFdVVx83QY-Y3_AhZv8euQ - beetmover-checksums-win64-shippable/opt: W7MCkxJyQL2Vpuf0DO5BIA - beetmover-checksums-xh-linux-shippable/opt: FzCSPfNCSey5M--fVhS9Ow - beetmover-checksums-xh-linux64-aarch64-shippable/opt: b093l65lTSuyVi-7kHvOyA - beetmover-checksums-xh-linux64-shippable/opt: btHmgFnNTImIePn7wW7CPw - beetmover-checksums-xh-macosx64-shippable/opt: CPFDvdP2SSqHEDOHtOyk3g - beetmover-checksums-xh-win32-shippable/opt: RCfPhh-7QWOeRnQ6XVONpA - beetmover-checksums-xh-win64-aarch64-shippable/opt: WasZnBAmSiurJdBSjLwnsw - beetmover-checksums-xh-win64-shippable/opt: KxmjaPKfTdaqU1E4Y6UEXA - beetmover-checksums-zh-CN-linux-shippable/opt: TuuejPWmQGq-XYXHbxQn1w - beetmover-checksums-zh-CN-linux64-aarch64-shippable/opt: ES6hHyFjTrSlcVtcFYPhzA - beetmover-checksums-zh-CN-linux64-shippable/opt: GmpKTm-aRMiU7xP84zTVXA - beetmover-checksums-zh-CN-macosx64-shippable/opt: RRCS75TWR2aGcoj-8U2E3w - beetmover-checksums-zh-CN-win32-shippable/opt: NrZCvMc4TJ2DlfR-aWYVog - beetmover-checksums-zh-CN-win64-aarch64-shippable/opt: Kub1Ep5BRi-9noUaO0bCPw - beetmover-checksums-zh-CN-win64-shippable/opt: M1k50Eo4QwaNo8m3S3KVTg - beetmover-checksums-zh-TW-linux-shippable/opt: EGD9XqijT3-BsDOPKdmbKA - beetmover-checksums-zh-TW-linux64-aarch64-shippable/opt: bZoO9BTLQEqzojfBfXQg4g - beetmover-checksums-zh-TW-linux64-shippable/opt: chWCY5S-TLuCkKdUc3Si1w - beetmover-checksums-zh-TW-macosx64-shippable/opt: Pp7iIY9kSKWMLkPES1AOTg - beetmover-checksums-zh-TW-win32-shippable/opt: NIY2zIEzS6m3ox_J_E4OhQ - beetmover-checksums-zh-TW-win64-aarch64-shippable/opt: BmHrskDnS2am9imNdznzuA - beetmover-checksums-zh-TW-win64-shippable/opt: CpYaneHHTXCaRUXMesduWg - beetmover-repackage-ach-linux-shippable/opt: MQiiqpONSJqzMyRNgBo7vA - beetmover-repackage-ach-linux64-aarch64-shippable/opt: CCjyHpa3QxOQFdFJN_Ig0Q - beetmover-repackage-ach-linux64-shippable/opt: DSaVePsGTPWn9fXpOFvKTA - beetmover-repackage-ach-macosx64-shippable/opt: Y92F-vPET3qn_qxPpOC3gw - beetmover-repackage-ach-win32-shippable/opt: Xnd5M-l4T6Gi-SFlNHY4vw - beetmover-repackage-ach-win64-aarch64-shippable/opt: KuDspkTIRomhflg1CBNDjw - beetmover-repackage-ach-win64-shippable/opt: cxkxwKSBRfynYSuP7BRdUg - beetmover-repackage-af-linux-shippable/opt: RJVvFoqlTI6f58cuWrrH3A - beetmover-repackage-af-linux64-aarch64-shippable/opt: M3Z_PpwxRDWlYg1nAFoi8Q - beetmover-repackage-af-linux64-shippable/opt: Meo1d3EASK22QMhqA38ubA - beetmover-repackage-af-macosx64-shippable/opt: G-orlYlzSo2GnqA6WZch8Q - beetmover-repackage-af-win32-shippable/opt: avgZKHAyR2W2jEKIRkZkyw - beetmover-repackage-af-win64-aarch64-shippable/opt: RxT1DYYuQq-jHMxOohOs4w - beetmover-repackage-af-win64-shippable/opt: ZUTCvN9kQR617pkSGeZ-uQ - beetmover-repackage-an-linux-shippable/opt: J2qMapTLTiy5k8JAioCz3Q - beetmover-repackage-an-linux64-aarch64-shippable/opt: GSFuzdyGQtW_0ywiin_fYg - beetmover-repackage-an-linux64-shippable/opt: LvAxi2dHQHqdOzTAmHPOtg - beetmover-repackage-an-macosx64-shippable/opt: KoLPjnUyTyKdJx74jpLU7g - beetmover-repackage-an-win32-shippable/opt: JNNLMCgJRZilHXnR_WE2aQ - beetmover-repackage-an-win64-aarch64-shippable/opt: Cqe14qtYS5KjXNmOOc7VOg - beetmover-repackage-an-win64-shippable/opt: EJbxvjI6Qh60D5UrtFIqQw - beetmover-repackage-ar-linux-shippable/opt: X6YlEZ3GQHqymA5BZ3eOeQ - beetmover-repackage-ar-linux64-aarch64-shippable/opt: HiAwBKlATIucSeni0plmng - beetmover-repackage-ar-linux64-shippable/opt: H-NTczR-R4SDelU969bwpg - beetmover-repackage-ar-macosx64-shippable/opt: X-CJjKL3QSC0pNZn2aeGTw - beetmover-repackage-ar-win32-shippable/opt: RReMlHxSRcGjBB8Qx5hYng - beetmover-repackage-ar-win64-aarch64-shippable/opt: YYKdhiHWQfOTLWAAiV2TsQ - beetmover-repackage-ar-win64-shippable/opt: BrLVPlf8RHOxDBh_g8djbA - beetmover-repackage-ast-linux-shippable/opt: TdMVR_fTQlWKp3GZ3PlJkA - beetmover-repackage-ast-linux64-aarch64-shippable/opt: EHGPaD3WRCeU_9KN1z7j_w - beetmover-repackage-ast-linux64-shippable/opt: G7aEF3ujQWCgGc1EeuzB0g - beetmover-repackage-ast-macosx64-shippable/opt: emX1eeEQSfmCbiViYfAsuQ - beetmover-repackage-ast-win32-shippable/opt: N7lruTrXRuaRsZb2axC5vw - beetmover-repackage-ast-win64-aarch64-shippable/opt: MjKs8g3ZQqmdLBp_u0QuRw - beetmover-repackage-ast-win64-shippable/opt: KE6l9uMlRAuHYeELsruKzQ - beetmover-repackage-az-linux-shippable/opt: UrBUJLGVSqiAQNrfqRyWeg - beetmover-repackage-az-linux64-aarch64-shippable/opt: Ue7VNQC3Qku6sNsQeIgGJQ - beetmover-repackage-az-linux64-shippable/opt: Ea8EAAX9RgucMLd2B3LdjA - beetmover-repackage-az-macosx64-shippable/opt: fwCPcuFUQUW-D4sQNokruA - beetmover-repackage-az-win32-shippable/opt: V_VkiS--TeSfiySRpFrR6Q - beetmover-repackage-az-win64-aarch64-shippable/opt: c5tP8MI3S52AazUnii3w0Q - beetmover-repackage-az-win64-shippable/opt: BA6mpOVwQASahn4xAnTeyA - beetmover-repackage-be-linux-shippable/opt: RU4x0hpdTRSOT50qyhtwyg - beetmover-repackage-be-linux64-aarch64-shippable/opt: X3oZLQ7eQQq_sEO1uP1Ozg - beetmover-repackage-be-linux64-shippable/opt: SYG9KyhvSzayzeTWNUg8JA - beetmover-repackage-be-macosx64-shippable/opt: RjOoo8FrSveZ7kvCuyk_Iw - beetmover-repackage-be-win32-shippable/opt: Ri81xAfDRzKRCvZeqrtXVA - beetmover-repackage-be-win64-aarch64-shippable/opt: Yazr0aCQSby9JYTpmq5wag - beetmover-repackage-be-win64-shippable/opt: CFI61HAOTTm2cLbPKAzgtg - beetmover-repackage-bg-linux-shippable/opt: EQ4nfFJTROWhjcOynQgxgQ - beetmover-repackage-bg-linux64-aarch64-shippable/opt: aOkGqlI3RIWGAGUBOD7HpA - beetmover-repackage-bg-linux64-shippable/opt: Cwa9ArcJQweehWlnAIdvsA - beetmover-repackage-bg-macosx64-shippable/opt: RC7VtBm3Tya5g3DKa7DllA - beetmover-repackage-bg-win32-shippable/opt: JgfqTRMzQzWQVhh4AosLMQ - beetmover-repackage-bg-win64-aarch64-shippable/opt: INsKSf1JRu2ESmUDUqN1rg - beetmover-repackage-bg-win64-shippable/opt: fIB7FuaES4WQmU-yOsUOjQ - beetmover-repackage-bn-linux-shippable/opt: ZfbOPeIOSWGwCtGN1Vkv3g - beetmover-repackage-bn-linux64-aarch64-shippable/opt: RlfkyMM4SOma-5YuoeE2xQ - beetmover-repackage-bn-linux64-shippable/opt: JExJtak-T8OnZY2KZ4MlzA - beetmover-repackage-bn-macosx64-shippable/opt: M4S2zIFsShK_sT82q7yorA - beetmover-repackage-bn-win32-shippable/opt: A7c9IauFTmODbFKXt344zg - beetmover-repackage-bn-win64-aarch64-shippable/opt: H0Ip28jaQkmvbIEOc6hOcg - beetmover-repackage-bn-win64-shippable/opt: Uq19Pxt6RCa1Kmk2cf324A - beetmover-repackage-br-linux-shippable/opt: DPYMjB7-TWei1wIYvgDEjQ - beetmover-repackage-br-linux64-aarch64-shippable/opt: HAG3XcZzQp2kPo04E4CbKg - beetmover-repackage-br-linux64-shippable/opt: Z-DRrNa6SZu1WinIHaU1Ow - beetmover-repackage-br-macosx64-shippable/opt: K8a4Qh-OSQq5BtTsDOm9NQ - beetmover-repackage-br-win32-shippable/opt: BPJur8kcQmmKmfNk2-nmUQ - beetmover-repackage-br-win64-aarch64-shippable/opt: JlJ6F0p4SCGayZYWF6sZPA - beetmover-repackage-br-win64-shippable/opt: FO7PO6PyTn-ekYnoVTJ23Q - beetmover-repackage-bs-linux-shippable/opt: KR67BwhLS62HxFBbC9SJlA - beetmover-repackage-bs-linux64-aarch64-shippable/opt: KKfoc3PUTGyv9RbVl-TJgA - beetmover-repackage-bs-linux64-shippable/opt: Y76laMC5QPOtA1qSsMFa5g - beetmover-repackage-bs-macosx64-shippable/opt: GAos8FbHRNmbvtYnBw1ACw - beetmover-repackage-bs-win32-shippable/opt: PF2VJzKkR-WjJt6VdBlTDQ - beetmover-repackage-bs-win64-aarch64-shippable/opt: SboanWOuTrCGd0y6sH2OCg - beetmover-repackage-bs-win64-shippable/opt: CKtz3T4tTmurl_1OpBYQ3g - beetmover-repackage-ca-linux-shippable/opt: JXegIFDUROS1jvA6EF5skw - beetmover-repackage-ca-linux64-aarch64-shippable/opt: Uf_6FO13RI6RZ6rcr0wvQQ - beetmover-repackage-ca-linux64-shippable/opt: VgBqrH1ISlaDmvxC6ZHWrw - beetmover-repackage-ca-macosx64-shippable/opt: Fnrmd2ScSNKpRdfC88IS2g - beetmover-repackage-ca-valencia-linux-shippable/opt: Z6Hw3eVYTRSsqPtwiNCwrA - beetmover-repackage-ca-valencia-linux64-aarch64-shippable/opt: fZ-XnQtuTm-4E0GnAu4HjQ - beetmover-repackage-ca-valencia-linux64-shippable/opt: ZgJf_cv4RjWFnnTUoOF9BQ - beetmover-repackage-ca-valencia-macosx64-shippable/opt: Sjy1LJr1QOa6pI1XzHRtbw - beetmover-repackage-ca-valencia-win32-shippable/opt: Dp2-x27cQXab6r6vTpHZIw - beetmover-repackage-ca-valencia-win64-aarch64-shippable/opt: OGlfU03WQLCBkJFg6OzQjA - beetmover-repackage-ca-valencia-win64-shippable/opt: JXTMqDnpQzy3u4wKlrtJCA - beetmover-repackage-ca-win32-shippable/opt: AzLBwI1IQu2o_k5O6M14KA - beetmover-repackage-ca-win64-aarch64-shippable/opt: dBFokfmpSTWMn5c44yH59Q - beetmover-repackage-ca-win64-shippable/opt: apOp8qgzQsS_9N5aHjJLgw - beetmover-repackage-cak-linux-shippable/opt: SQ51n3S2S6SgUMVdtPlrHg - beetmover-repackage-cak-linux64-aarch64-shippable/opt: U_V7RSZtRuqHy-MOe9fbpw - beetmover-repackage-cak-linux64-shippable/opt: epdPmukXTZugDE9sSzwupQ - beetmover-repackage-cak-macosx64-shippable/opt: B3X5k_PRT1uCeKvpQMrcfg - beetmover-repackage-cak-win32-shippable/opt: TUDDILDoRIi0uP_HWajrOw - beetmover-repackage-cak-win64-aarch64-shippable/opt: RFnroeesRfCb29qsf5BQtg - beetmover-repackage-cak-win64-shippable/opt: ZfBBbiQxSjeLiN4oa3avfQ - beetmover-repackage-cs-linux-shippable/opt: H3xM5l8DRr-6pxcPhE8fTQ - beetmover-repackage-cs-linux64-aarch64-shippable/opt: U-bR8HzGRya_fM3wJ6EQtw - beetmover-repackage-cs-linux64-shippable/opt: TqkvVw2IQGG7r-5_KpfkYw - beetmover-repackage-cs-macosx64-shippable/opt: NRGs6llaTjiCB1CQ8_Dlng - beetmover-repackage-cs-win32-shippable/opt: QdaLlsHpSKGJuL0d8BpfNw - beetmover-repackage-cs-win64-aarch64-shippable/opt: D2pFGXDxQy2xAqU_NjMQyw - beetmover-repackage-cs-win64-shippable/opt: Uxe7g4HbTrKZyM-6vbWTJw - beetmover-repackage-cy-linux-shippable/opt: IXDN3t_YTgqmIqXy_VQu_w - beetmover-repackage-cy-linux64-aarch64-shippable/opt: HlA60-nGSxOkI1Zeh-H3Pw - beetmover-repackage-cy-linux64-shippable/opt: B9KFW502ReaNDRkARoX9Sg - beetmover-repackage-cy-macosx64-shippable/opt: OgwjTpvhTNWJOrYvL03Qsg - beetmover-repackage-cy-win32-shippable/opt: YtBXF4KNQ3-J2vJvyyX18g - beetmover-repackage-cy-win64-aarch64-shippable/opt: W6VIbGsBQ2m5u-AWa4j6Jg - beetmover-repackage-cy-win64-shippable/opt: V5x-IY84S1OdkMiJY5wTsQ - beetmover-repackage-da-linux-shippable/opt: ZY3svpjBSrCFjCx8tC6xgw - beetmover-repackage-da-linux64-aarch64-shippable/opt: L53k29shQA-g4-JNRmrRlQ - beetmover-repackage-da-linux64-shippable/opt: Txw-aeI-TD-s6P8gLw4KuQ - beetmover-repackage-da-macosx64-shippable/opt: apD9MnjHSRWV7mbEY3IYRQ - beetmover-repackage-da-win32-shippable/opt: KsnbD0GTTkayC7ieR3h7Bw - beetmover-repackage-da-win64-aarch64-shippable/opt: GjM1N3rSS026qmnNdt5WlQ - beetmover-repackage-da-win64-shippable/opt: Z-xWHljDTSeF6LUyRD8tbw - beetmover-repackage-de-linux-shippable/opt: M2lJlLoYTte7cHpLh6NIUw - beetmover-repackage-de-linux64-aarch64-shippable/opt: MgdI38cyR9CRxTOWcDvFGw - beetmover-repackage-de-linux64-shippable/opt: KYjRYmotR4KwNhIrT_8n3A - beetmover-repackage-de-macosx64-shippable/opt: AP2PRAtAQp-vQZoltfKlFg - beetmover-repackage-de-win32-shippable/opt: GeYxrxAAQg2AE2NzoaNJjg - beetmover-repackage-de-win64-aarch64-shippable/opt: O-pI96vBRD64x-1-ZcBmSg - beetmover-repackage-de-win64-shippable/opt: SOGxv2JxToOOV4VWiHf7Rw - beetmover-repackage-dsb-linux-shippable/opt: Ijt9TTSBTBeR1XnTebyxtQ - beetmover-repackage-dsb-linux64-aarch64-shippable/opt: FXSFuM3gSMSwc3VSSgHDsg - beetmover-repackage-dsb-linux64-shippable/opt: Rfe4u69_RgycOKx0_u4zoA - beetmover-repackage-dsb-macosx64-shippable/opt: AKAnggFISRGkMHKqeBrruA - beetmover-repackage-dsb-win32-shippable/opt: PTygjzWVTL-NTkFChqLIZA - beetmover-repackage-dsb-win64-aarch64-shippable/opt: BHQ1q5WkSNS2XTLi3fmIPQ - beetmover-repackage-dsb-win64-shippable/opt: H3hzFX-uSqiYaw889VzJsg - beetmover-repackage-el-linux-shippable/opt: WrMHT9dKQV2Ou3UHskP0PQ - beetmover-repackage-el-linux64-aarch64-shippable/opt: QmvaPJkxRP-H0D-IJttrmQ - beetmover-repackage-el-linux64-shippable/opt: cAryYqNyT3CmjJBK9WjIYQ - beetmover-repackage-el-macosx64-shippable/opt: TZrbCm-DQDeQub59Ws2Ylg - beetmover-repackage-el-win32-shippable/opt: XSodxyX6T0yD-DAUYL-uOA - beetmover-repackage-el-win64-aarch64-shippable/opt: KqiUpTV2TbCXcq0VAgkokA - beetmover-repackage-el-win64-shippable/opt: J3ALOXsdQq-uetOceVyWfg - beetmover-repackage-en-CA-linux-shippable/opt: OEZK8LYzR_aoUc9nnCZe8A - beetmover-repackage-en-CA-linux64-aarch64-shippable/opt: R_vN6fKNRvqQx_Pyc0yi5Q - beetmover-repackage-en-CA-linux64-shippable/opt: CNXYHNgCTTOi_AHCCGlr4w - beetmover-repackage-en-CA-macosx64-shippable/opt: IQuTcoXWR728OeMDMU7omA - beetmover-repackage-en-CA-win32-shippable/opt: Gf69pfH6SFujIinZ6Qt6ng - beetmover-repackage-en-CA-win64-aarch64-shippable/opt: ay2NCHzkRcqiovifQ7FKfQ - beetmover-repackage-en-CA-win64-shippable/opt: LLOEoVOOT924pLI2bD9h4w - beetmover-repackage-en-GB-linux-shippable/opt: AsNac_eHRMKyNUZqX2GeDw - beetmover-repackage-en-GB-linux64-aarch64-shippable/opt: Zrv8WbC_Qf6yrrmP5x-NYw - beetmover-repackage-en-GB-linux64-shippable/opt: FK0sVcBgRqKFc5AcfgY7eg - beetmover-repackage-en-GB-macosx64-shippable/opt: BciCZvh4REefnn5AoAQBTw - beetmover-repackage-en-GB-win32-shippable/opt: WU05d0wHTWu59xGjfZ4sJw - beetmover-repackage-en-GB-win64-aarch64-shippable/opt: Yo3Q1WnsTvGLGjqoLgtdfA - beetmover-repackage-en-GB-win64-shippable/opt: I-CI2BX0Qc6qyDmseaJnZw - beetmover-repackage-eo-linux-shippable/opt: DSn3eb-GQVeAPMp9u-gFFA - beetmover-repackage-eo-linux64-aarch64-shippable/opt: X6nk2tabTF6DOsBq58vrog - beetmover-repackage-eo-linux64-shippable/opt: It_I5fNQQcaHDUBzb8d9yg - beetmover-repackage-eo-macosx64-shippable/opt: BOqIgiDyRl-_Bz2a_JVjSw - beetmover-repackage-eo-win32-shippable/opt: dfUsnMGbQvOkGRZugiQhww - beetmover-repackage-eo-win64-aarch64-shippable/opt: Atz_RRiaQuC8ac8_L1acKg - beetmover-repackage-eo-win64-shippable/opt: R9hj_Y6lSOOTIfs_TtowLg - beetmover-repackage-es-AR-linux-shippable/opt: O9qdETm6TJq5c7jiJ-8SmA - beetmover-repackage-es-AR-linux64-aarch64-shippable/opt: L19HqJzGSq2mciIFd_aJgA - beetmover-repackage-es-AR-linux64-shippable/opt: doIec_4BSkioqQm6YTztZg - beetmover-repackage-es-AR-macosx64-shippable/opt: KTT-7ufTSrevp4ew8JhdqA - beetmover-repackage-es-AR-win32-shippable/opt: DGucmO1qT0GKe8DJ4Xts0Q - beetmover-repackage-es-AR-win64-aarch64-shippable/opt: W_XAbqE5QJSN39F6mpoL7w - beetmover-repackage-es-AR-win64-shippable/opt: OyKh4iDAQFSMXjGZe4x86g - beetmover-repackage-es-CL-linux-shippable/opt: aK6rENb8QN6FaHrj7l0V8Q - beetmover-repackage-es-CL-linux64-aarch64-shippable/opt: arQv1u1gTMGilVVOmwp-EA - beetmover-repackage-es-CL-linux64-shippable/opt: AQUp6-hSQFu4CGmiLa1lgA - beetmover-repackage-es-CL-macosx64-shippable/opt: SB_9a1PwTEWe8-tZHs-17w - beetmover-repackage-es-CL-win32-shippable/opt: G9pSDpPuStuyMv48CYLD4g - beetmover-repackage-es-CL-win64-aarch64-shippable/opt: fg2xEbr3RZ6hC_x-Cnq44w - beetmover-repackage-es-CL-win64-shippable/opt: VD_F48lxTHmsg5lS3qbJLQ - beetmover-repackage-es-ES-linux-shippable/opt: MOBecJ2BTgy80jQ-mMu71Q - beetmover-repackage-es-ES-linux64-aarch64-shippable/opt: BdsaSmy4R3W5x1hemRonAg - beetmover-repackage-es-ES-linux64-shippable/opt: P46W1YGIR-6eycyih1gumw - beetmover-repackage-es-ES-macosx64-shippable/opt: SLNk6VQsQqWKFw9OPZqq4g - beetmover-repackage-es-ES-win32-shippable/opt: Jx9TY-iMRuGFPJmp5w-DlQ - beetmover-repackage-es-ES-win64-aarch64-shippable/opt: axujiYDoTnuf_v_sY1hcSw - beetmover-repackage-es-ES-win64-shippable/opt: Uhkk_4QVREa37I6G-Q0vhw - beetmover-repackage-es-MX-linux-shippable/opt: cRjbgIQhR--jzZX-mvz7Qw - beetmover-repackage-es-MX-linux64-aarch64-shippable/opt: MQK6YTMWQ4mOPG88jtDiQw - beetmover-repackage-es-MX-linux64-shippable/opt: c9x_KVXpT8GpDW1JgI_8vQ - beetmover-repackage-es-MX-macosx64-shippable/opt: O7Jjg0nvTrWq9J2MiXDosA - beetmover-repackage-es-MX-win32-shippable/opt: WiFjvbvhSVaNy1ufyW4uZg - beetmover-repackage-es-MX-win64-aarch64-shippable/opt: S08wluLWQS25vhk594lGTg - beetmover-repackage-es-MX-win64-shippable/opt: YjhdmD6XQJuEtBEuPk38dg - beetmover-repackage-et-linux-shippable/opt: aER4NCyHSryTWdoLUPVRAg - beetmover-repackage-et-linux64-aarch64-shippable/opt: JmMF3FEUSFehQklbftsZiQ - beetmover-repackage-et-linux64-shippable/opt: CZT_dfjkQ86GhZbRkaFEOQ - beetmover-repackage-et-macosx64-shippable/opt: HfSvfMWWQpaolm6wy1Kc9Q - beetmover-repackage-et-win32-shippable/opt: JEb3FujkRN6OEUuP6iG1mQ - beetmover-repackage-et-win64-aarch64-shippable/opt: ZK1VdfHdRiSwdazf3-1L3g - beetmover-repackage-et-win64-shippable/opt: Uhlj32dkQTyVojW9nn_uKg - beetmover-repackage-eu-linux-shippable/opt: PuJhS1mAQ_qT1btXc8qxIQ - beetmover-repackage-eu-linux64-aarch64-shippable/opt: I1hG-0LORCmBrPyGRNINtg - beetmover-repackage-eu-linux64-shippable/opt: Mz3WVSPkSd607VHo_Il4Jw - beetmover-repackage-eu-macosx64-shippable/opt: YBmtJcmJT8GlkC8rgsW5CA - beetmover-repackage-eu-win32-shippable/opt: PH5PkYhBT6KDvO9cPJXJxA - beetmover-repackage-eu-win64-aarch64-shippable/opt: ej3tYqEaQnOpR2g5oHNDhQ - beetmover-repackage-eu-win64-shippable/opt: ds-zIWKRSICuqtGdgsDQsw - beetmover-repackage-fa-linux-shippable/opt: FGDKdF0pRVy5tS120zGQjA - beetmover-repackage-fa-linux64-aarch64-shippable/opt: MSRwret5SeCVxTfMuWUEUA - beetmover-repackage-fa-linux64-shippable/opt: MLmkbx1hTne8IWEKvH17ng - beetmover-repackage-fa-macosx64-shippable/opt: MIloe-TLTe2Ae5VuW1rVpw - beetmover-repackage-fa-win32-shippable/opt: M_TpRyDKSF2DRFL3HMyQNg - beetmover-repackage-fa-win64-aarch64-shippable/opt: FnRWPSNwTuSNwopQ0Zhvvw - beetmover-repackage-fa-win64-shippable/opt: JbrU53t6TNqZExZD2N_FTg - beetmover-repackage-ff-linux-shippable/opt: Ww5e2V6tSQKHnyuQhbsZ7g - beetmover-repackage-ff-linux64-aarch64-shippable/opt: bzJreIKBSymp4oRtVu0kTg - beetmover-repackage-ff-linux64-shippable/opt: eSkmWreNTbaM1XcZMsri1Q - beetmover-repackage-ff-macosx64-shippable/opt: P5e2SpOpSlCU_INCDHgRrg - beetmover-repackage-ff-win32-shippable/opt: Zm49imzCRpyjDUkv2qI9vw - beetmover-repackage-ff-win64-aarch64-shippable/opt: SGgEiVhgQhq6xFb-Zq4Rlg - beetmover-repackage-ff-win64-shippable/opt: FXa6qeJLRYK8TKcrlzovew - beetmover-repackage-fi-linux-shippable/opt: Bf3M6hHfSOeHNwm4ru49qA - beetmover-repackage-fi-linux64-aarch64-shippable/opt: Lu85Ur3mQHWQE-dTd5gVoQ - beetmover-repackage-fi-linux64-shippable/opt: Cu2t3Iq3QQiWk2uKrcZC5g - beetmover-repackage-fi-macosx64-shippable/opt: JvUV2h6ZRF-iVQ-Anhef4A - beetmover-repackage-fi-win32-shippable/opt: GfLBflGgS-C07uAP7U0lrw - beetmover-repackage-fi-win64-aarch64-shippable/opt: Dy-Z5uJQQR-RINDtkd_nvQ - beetmover-repackage-fi-win64-shippable/opt: Gy0powfzQga35wgZEaFFxQ - beetmover-repackage-fr-linux-shippable/opt: MRASSTXIQ1OvCVsj2TQ8Wg - beetmover-repackage-fr-linux64-aarch64-shippable/opt: f_1SUOkVRumjrtclsgmWaw - beetmover-repackage-fr-linux64-shippable/opt: OvDJhNFKSZmX5FCmAvWAHA - beetmover-repackage-fr-macosx64-shippable/opt: Qd1kwUfSSzOp2trb460fMg - beetmover-repackage-fr-win32-shippable/opt: Fu9PGIhmT5Ch7QZoRHLhng - beetmover-repackage-fr-win64-aarch64-shippable/opt: DGTZ5bsdQOWp-QbvKPvNhA - beetmover-repackage-fr-win64-shippable/opt: AVLM5xBNRfiNg_Q6UNN4ww - beetmover-repackage-fur-linux-shippable/opt: DpuXUIYiRea9W_3vX9xxjw - beetmover-repackage-fur-linux64-aarch64-shippable/opt: Ui3HF_uNTEiQlqGyac_QvA - beetmover-repackage-fur-linux64-shippable/opt: WxFvl1ynQSq1nmmQXpbkjg - beetmover-repackage-fur-macosx64-shippable/opt: VnUernMnTrmFAVEiFXzKiw - beetmover-repackage-fur-win32-shippable/opt: d4HuFG6jRSq-h2q6YVlTNw - beetmover-repackage-fur-win64-aarch64-shippable/opt: H3L4yIpoTDmAyacC5H29og - beetmover-repackage-fur-win64-shippable/opt: MIwxSdZwRwWlepx44fohpg - beetmover-repackage-fy-NL-linux-shippable/opt: XqGPDZbJSf6A3AVZJV1LMw - beetmover-repackage-fy-NL-linux64-aarch64-shippable/opt: RyUqdJReRFyiM3i44h-DkA - beetmover-repackage-fy-NL-linux64-shippable/opt: eNBf26w_TqqVlpBugYpvMA - beetmover-repackage-fy-NL-macosx64-shippable/opt: FmqkpMSlQRWwen5xd1CI3Q - beetmover-repackage-fy-NL-win32-shippable/opt: ZFi7zuFuQp2RU1ajmQEhEw - beetmover-repackage-fy-NL-win64-aarch64-shippable/opt: V_WQig6RQu2fx9QVSLh7MQ - beetmover-repackage-fy-NL-win64-shippable/opt: HbdivEl6RWeaDsA3lHPVGQ - beetmover-repackage-ga-IE-linux-shippable/opt: QJVPdD7MRT2VI5WxsdYhqQ - beetmover-repackage-ga-IE-linux64-aarch64-shippable/opt: SMu8ZjIAS4Kqaj-Uws6C5A - beetmover-repackage-ga-IE-linux64-shippable/opt: cNxEYcJBSuOCEWEff6YnTA - beetmover-repackage-ga-IE-macosx64-shippable/opt: SRvoBkmKSDGHJ0eNvXUVoA - beetmover-repackage-ga-IE-win32-shippable/opt: Wp0BCyW3Qi69AUJ0vAJj0A - beetmover-repackage-ga-IE-win64-aarch64-shippable/opt: SdwNReOCSeSEeiMavcXoXA - beetmover-repackage-ga-IE-win64-shippable/opt: CNsEcMFFR1KXD5iqGkmUwA - beetmover-repackage-gd-linux-shippable/opt: PiMQDx7PTM2lfkDx2nIeOQ - beetmover-repackage-gd-linux64-aarch64-shippable/opt: GBfn0_5NRcShWgMK74d6eQ - beetmover-repackage-gd-linux64-shippable/opt: K3poGVSVSguzHMpKXCreTg - beetmover-repackage-gd-macosx64-shippable/opt: Bx9ml84AQJqybYBi5tC2mw - beetmover-repackage-gd-win32-shippable/opt: JUmq8_npSOGRkU8PaObIew - beetmover-repackage-gd-win64-aarch64-shippable/opt: H-EaOFH8Qyi0eP4AcQeYLQ - beetmover-repackage-gd-win64-shippable/opt: Pe9mv101TcmKqRQG4JAtPA - beetmover-repackage-gl-linux-shippable/opt: NgD9Hz0ZTaWmiPhwJG-C2Q - beetmover-repackage-gl-linux64-aarch64-shippable/opt: Lzg7moaNSBK4mE01DUnwWA - beetmover-repackage-gl-linux64-shippable/opt: bbaUd24aRsKNpp6CLB2jYQ - beetmover-repackage-gl-macosx64-shippable/opt: IdLZs-T4TrStKHlDg2eP5Q - beetmover-repackage-gl-win32-shippable/opt: GoOWRuhNSAy-JPYyUqD8Fw - beetmover-repackage-gl-win64-aarch64-shippable/opt: Ng51W31PQdSzQIYf14-AlQ - beetmover-repackage-gl-win64-shippable/opt: QY3EYM6_RCaLmb0wup7x4w - beetmover-repackage-gn-linux-shippable/opt: JcTape3YSru_CJgieOXmKg - beetmover-repackage-gn-linux64-aarch64-shippable/opt: YrPEfUwnS8iPOp-U4_LGgw - beetmover-repackage-gn-linux64-shippable/opt: AkcvRhPaT4q0wxwY-8YGWw - beetmover-repackage-gn-macosx64-shippable/opt: HhTPL3m-T5yNJ_yOGl8Fjg - beetmover-repackage-gn-win32-shippable/opt: KpSNwYX2RpqWdYPg7RZdgw - beetmover-repackage-gn-win64-aarch64-shippable/opt: bIm2S2kOQISPfey7hBeupQ - beetmover-repackage-gn-win64-shippable/opt: CF3YXjK0RNSutJ5IBgF8DQ - beetmover-repackage-gu-IN-linux-shippable/opt: XoGIxfVCReilMRW1oK8FNw - beetmover-repackage-gu-IN-linux64-aarch64-shippable/opt: dz9xoDFfSd23IzWjIa0S7w - beetmover-repackage-gu-IN-linux64-shippable/opt: Mwn6ofnnT12spBev4EnI-Q - beetmover-repackage-gu-IN-macosx64-shippable/opt: QKv84OQBSAGIiuzPo3tJxQ - beetmover-repackage-gu-IN-win32-shippable/opt: FxGfaXHJTB-dS9uQANKwQA - beetmover-repackage-gu-IN-win64-aarch64-shippable/opt: KJ17FXgkS96igIaZWBPOxA - beetmover-repackage-gu-IN-win64-shippable/opt: QlgoVNQgQ6CsFahSxJzY8g - beetmover-repackage-he-linux-shippable/opt: WcXXgqtXS7KHkrQQfNL2aA - beetmover-repackage-he-linux64-aarch64-shippable/opt: RdBOUawvRdybAmOdkHZtuQ - beetmover-repackage-he-linux64-shippable/opt: aO0a0zCNSSGvRqFHpPUCdA - beetmover-repackage-he-macosx64-shippable/opt: IuxmwpFCQVSwRmHTZULbYw - beetmover-repackage-he-win32-shippable/opt: Ga0rSg_gTiCXcv-hfPpjNg - beetmover-repackage-he-win64-aarch64-shippable/opt: HWoArw7lT_aosTle0J6NwA - beetmover-repackage-he-win64-shippable/opt: FZJ_n5dhSYq9rMZUiRzKsg - beetmover-repackage-hi-IN-linux-shippable/opt: fm20u0w8RHu8Xjkns_0ABQ - beetmover-repackage-hi-IN-linux64-aarch64-shippable/opt: UQy71O8fQ9m3R_dKaZPqAA - beetmover-repackage-hi-IN-linux64-shippable/opt: C62ac-VgSQ271eMXIU8JSQ - beetmover-repackage-hi-IN-macosx64-shippable/opt: B-uWQcXWQ6uL_n4wBf23iA - beetmover-repackage-hi-IN-win32-shippable/opt: Y6BIQw-9SH6qlTPN1pD11g - beetmover-repackage-hi-IN-win64-aarch64-shippable/opt: Kz7VAdVSTBOUooypxxpf4w - beetmover-repackage-hi-IN-win64-shippable/opt: PaWcqegtQQmSRKoswCzvpA - beetmover-repackage-hr-linux-shippable/opt: IAoFpyicRjeOsIADOul7gw - beetmover-repackage-hr-linux64-aarch64-shippable/opt: cpF4s6V_Qmuj4MEHwMZ9CQ - beetmover-repackage-hr-linux64-shippable/opt: L9hCgMpMTQKIYPMj65NegA - beetmover-repackage-hr-macosx64-shippable/opt: T4vgdxPeTJqutQ0Z7IL75A - beetmover-repackage-hr-win32-shippable/opt: AZ9X4r6yQV-DQQCqiacrag - beetmover-repackage-hr-win64-aarch64-shippable/opt: FgQh9rC0Sa-9ffLTYmpbcw - beetmover-repackage-hr-win64-shippable/opt: W1NedlfWRFO3cDZHlRhqyw - beetmover-repackage-hsb-linux-shippable/opt: XWID_vhaQa2h_gXVq-85Nw - beetmover-repackage-hsb-linux64-aarch64-shippable/opt: bG2HEigjQHGn5_ZNWW5mlA - beetmover-repackage-hsb-linux64-shippable/opt: GgEZ84buQZCCpf9jVzwJtw - beetmover-repackage-hsb-macosx64-shippable/opt: W6JHrhPES_KFWgizybsqDw - beetmover-repackage-hsb-win32-shippable/opt: P7fruRxdSZKc24g2pwMwNA - beetmover-repackage-hsb-win64-aarch64-shippable/opt: NV1pb14ETfSCKNSNw63UXA - beetmover-repackage-hsb-win64-shippable/opt: Ub_FmTu5T5uM2ObTIGONqA - beetmover-repackage-hu-linux-shippable/opt: F8CqbKp5QyCrRb7Th41_Pw - beetmover-repackage-hu-linux64-aarch64-shippable/opt: bFzaUDNMTA2lH78XvXlhNg - beetmover-repackage-hu-linux64-shippable/opt: dxHNF7UJSJuA6rtcHhS1pw - beetmover-repackage-hu-macosx64-shippable/opt: MF6HJh2LRbC8Y6pEnDjlXA - beetmover-repackage-hu-win32-shippable/opt: Jo1M0ETRTZyesWXcylL0eQ - beetmover-repackage-hu-win64-aarch64-shippable/opt: EFRdyMyWQUSprdSdzaCC3A - beetmover-repackage-hu-win64-shippable/opt: Fb4Ub_IsTs20dYbHbehRew - beetmover-repackage-hy-AM-linux-shippable/opt: DKFK9bbGRqOIJeT48DqJ2g - beetmover-repackage-hy-AM-linux64-aarch64-shippable/opt: NszdVWyqSTubmrnAQF-z9w - beetmover-repackage-hy-AM-linux64-shippable/opt: Cmo0glfORDeullurmjvjbA - beetmover-repackage-hy-AM-macosx64-shippable/opt: ZYCJQbORTBuLGpT0YSBf8g - beetmover-repackage-hy-AM-win32-shippable/opt: FxwlvDDTQN6bqH8IpJTlxQ - beetmover-repackage-hy-AM-win64-aarch64-shippable/opt: IsDM7EZgSGixSSZHKmpCcQ - beetmover-repackage-hy-AM-win64-shippable/opt: FMZczRiORsSVCf-YUN7U7g - beetmover-repackage-ia-linux-shippable/opt: RH40hXKTS_-5z0AMBNtETg - beetmover-repackage-ia-linux64-aarch64-shippable/opt: De2u82FBS-mLu6-vysTe0g - beetmover-repackage-ia-linux64-shippable/opt: F4YbsjWsRsW3KdicVta-Eg - beetmover-repackage-ia-macosx64-shippable/opt: e-7Z0pVnSk-5KsNAYndUow - beetmover-repackage-ia-win32-shippable/opt: FjtbeP6MRNqnHadGYF6aBA - beetmover-repackage-ia-win64-aarch64-shippable/opt: DMrfX7nlTOWbfD8ZP1OqUg - beetmover-repackage-ia-win64-shippable/opt: RJua_HbuSRqy_S6eHuARgw - beetmover-repackage-id-linux-shippable/opt: AFZiwWGkSB6he858Eecphg - beetmover-repackage-id-linux64-aarch64-shippable/opt: aKZpIaJ8QpqAF55hg-q73g - beetmover-repackage-id-linux64-shippable/opt: LicecvfaTvWGOpwjQMSBaA - beetmover-repackage-id-macosx64-shippable/opt: LcFKlXA4QEGB8veNbpT07g - beetmover-repackage-id-win32-shippable/opt: GiBDmgFVRbSkJWwKyrSnZQ - beetmover-repackage-id-win64-aarch64-shippable/opt: Y9GQZ8bbSXe4JW1qs5YIlQ - beetmover-repackage-id-win64-shippable/opt: JMPRX8BXQWmrEY5bDphgzg - beetmover-repackage-is-linux-shippable/opt: SOBTLb-cQs-JkpFEPPJ3Cg - beetmover-repackage-is-linux64-aarch64-shippable/opt: CERz_aM1RlqNYl0pBNRo0g - beetmover-repackage-is-linux64-shippable/opt: H-UI8alvTGedScTfNpFlSQ - beetmover-repackage-is-macosx64-shippable/opt: A0KMcW7CSC-w248-04A0lQ - beetmover-repackage-is-win32-shippable/opt: d4u6-yB2QBGqUs5UdjTsNA - beetmover-repackage-is-win64-aarch64-shippable/opt: MRagTvAiRnarnIdXw4izqQ - beetmover-repackage-is-win64-shippable/opt: ESs_4UJ4TyS2XCvq4j9gVw - beetmover-repackage-it-linux-shippable/opt: dHU0AikiQoK2QaSiL9ILuA - beetmover-repackage-it-linux64-aarch64-shippable/opt: VLm_ig_nSMursEjWfbIDMw - beetmover-repackage-it-linux64-shippable/opt: TTjyVdkwR6SSq8iyo8ksXQ - beetmover-repackage-it-macosx64-shippable/opt: YH_AMESVRV-veR64FQDnHA - beetmover-repackage-it-win32-shippable/opt: RSxZz53DQWGq_iGEhgyTGQ - beetmover-repackage-it-win64-aarch64-shippable/opt: G08XqWEXQb6RfUg2qJ8xHg - beetmover-repackage-it-win64-shippable/opt: cZPq8JokRWCponMgU4q3zg - beetmover-repackage-ja-JP-mac-macosx64-shippable/opt: amofdkWPShepmJfk2L6oAg - beetmover-repackage-ja-linux-shippable/opt: GqU0xRpvT4SiZSauy3Z4XA - beetmover-repackage-ja-linux64-aarch64-shippable/opt: epftHFlVRBWRZDVzzNgPSg - beetmover-repackage-ja-linux64-shippable/opt: HBh0MAShTiOH8fXQNr9V9w - beetmover-repackage-ja-win32-shippable/opt: F_hAdNfbRTi1p9vpErU8nA - beetmover-repackage-ja-win64-aarch64-shippable/opt: DhM4sFGpTr6PKKjP_lJAKQ - beetmover-repackage-ja-win64-shippable/opt: RvR9tYFyQGCvRZ1914gYUQ - beetmover-repackage-ka-linux-shippable/opt: HkFS4B87Sby3wxTSWKlg-w - beetmover-repackage-ka-linux64-aarch64-shippable/opt: IBhxOxHtTdKMExrnt0wxpA - beetmover-repackage-ka-linux64-shippable/opt: d13uXmlvTJmB4rRFasi5vQ - beetmover-repackage-ka-macosx64-shippable/opt: RBfNHWo7QuaI2d6OKnRTKw - beetmover-repackage-ka-win32-shippable/opt: E-SPFa0QTh28wWzEkmpdMg - beetmover-repackage-ka-win64-aarch64-shippable/opt: BvF88re_RzqP1AyeF7CC-Q - beetmover-repackage-ka-win64-shippable/opt: YlP1F9ZpQn-fXdiYibVacw - beetmover-repackage-kab-linux-shippable/opt: DpPo9ZZ5SkOZ5LedIOjjiw - beetmover-repackage-kab-linux64-aarch64-shippable/opt: OG-tk76dRLSUMmZHFv5JYQ - beetmover-repackage-kab-linux64-shippable/opt: WvZVgIQSSh-_6kSVMiN0kg - beetmover-repackage-kab-macosx64-shippable/opt: aMae9TOUQpiAjoh2RdxtNg - beetmover-repackage-kab-win32-shippable/opt: QXOjErdFQjGzwcai-qyWfA - beetmover-repackage-kab-win64-aarch64-shippable/opt: WnzdR4XISRyXj1FDzDskbw - beetmover-repackage-kab-win64-shippable/opt: dQf1NjDgT8S2AQtKH3DGbw - beetmover-repackage-kk-linux-shippable/opt: THa8uhSfQlGzFKqcPNHKqQ - beetmover-repackage-kk-linux64-aarch64-shippable/opt: L1nQ5sP6RoSbuzE90DdAzw - beetmover-repackage-kk-linux64-shippable/opt: U9fo27P4SKKd94m_ImuAXw - beetmover-repackage-kk-macosx64-shippable/opt: NoaF_cWnT5eTLNxqd93jmg - beetmover-repackage-kk-win32-shippable/opt: NBYCRfYUQqaO5XoXQHb_oA - beetmover-repackage-kk-win64-aarch64-shippable/opt: XLZDPqBSQa24u7-JZVZY6A - beetmover-repackage-kk-win64-shippable/opt: FWJpBUeDSJWdtNdmdV7WUw - beetmover-repackage-km-linux-shippable/opt: D1uP_CI0QwaCRHXWZxHMRQ - beetmover-repackage-km-linux64-aarch64-shippable/opt: JPmEdvZaTJKmvZxqjndfCQ - beetmover-repackage-km-linux64-shippable/opt: Ri4QEuarTbmRYcmasqxd5A - beetmover-repackage-km-macosx64-shippable/opt: ai4We10iTvu_0JmC03M2VA - beetmover-repackage-km-win32-shippable/opt: Pm1dJkmlTli1Szr-Qt1ZPA - beetmover-repackage-km-win64-aarch64-shippable/opt: LPUwCjD3R5mkthy_U0A8fg - beetmover-repackage-km-win64-shippable/opt: fiAZXmNrQqq8foByp03u7A - beetmover-repackage-kn-linux-shippable/opt: PMihFKJtSZW4nmT8BmtBrA - beetmover-repackage-kn-linux64-aarch64-shippable/opt: bH0Yq5LeQJCRHK6ymhctjw - beetmover-repackage-kn-linux64-shippable/opt: Iuvyjm9-SsCf3z3KFWoPeg - beetmover-repackage-kn-macosx64-shippable/opt: Gs0l_MUMQPa5R6VCowhYWQ - beetmover-repackage-kn-win32-shippable/opt: UrEuwjv6QJuzTDHWEPY0wg - beetmover-repackage-kn-win64-aarch64-shippable/opt: aT-BXdEzSkq7nlqZW7vPAQ - beetmover-repackage-kn-win64-shippable/opt: EGfLcVRnSmWN9ML0ohNUqw - beetmover-repackage-ko-linux-shippable/opt: WQMSXLuuTdeyev8ymaKPuA - beetmover-repackage-ko-linux64-aarch64-shippable/opt: cPD4RhzHSBiWioEy_nt8nQ - beetmover-repackage-ko-linux64-shippable/opt: NlKPB31FTPy4K5DHrZj-zg - beetmover-repackage-ko-macosx64-shippable/opt: TpM0MAcGThmqgOftXe_bIw - beetmover-repackage-ko-win32-shippable/opt: KQP3N5USS7ucuqgJtsn60w - beetmover-repackage-ko-win64-aarch64-shippable/opt: F_e_hmxmQxyyrogqAHHang - beetmover-repackage-ko-win64-shippable/opt: Ds9Bv3t0SQm7jQyZVBNgTg - beetmover-repackage-lij-linux-shippable/opt: GhCIhqiOTNe0PUWhRc9kZQ - beetmover-repackage-lij-linux64-aarch64-shippable/opt: RaJo0pTdQpGE0wrYgM5y5A - beetmover-repackage-lij-linux64-shippable/opt: Nd3rSfq5S3-Krxdj4e6x1Q - beetmover-repackage-lij-macosx64-shippable/opt: buhuDwjAToapher26MmGYg - beetmover-repackage-lij-win32-shippable/opt: ZBT6BKTmS-intshWxDTFpw - beetmover-repackage-lij-win64-aarch64-shippable/opt: NxfrDaxXRCiFspkBWw6DDQ - beetmover-repackage-lij-win64-shippable/opt: KxIt9Y0oQkWQGQ8QwGNNsw - beetmover-repackage-linux-shippable/opt: eKx15sH2QWG5HCn0_PrcEA - beetmover-repackage-linux64-aarch64-shippable/opt: MEbmnjGZRO-nb2ig0VYW4g - beetmover-repackage-linux64-shippable/opt: BiVWAGKyQvGQY5gcUB2bCg - beetmover-repackage-lt-linux-shippable/opt: dyOSaeEoQvy4-GlLJvUvtQ - beetmover-repackage-lt-linux64-aarch64-shippable/opt: YGkgUfcGT2eimfIB5oiUrg - beetmover-repackage-lt-linux64-shippable/opt: YMwnUWMDTFehibycBspd7A - beetmover-repackage-lt-macosx64-shippable/opt: PnGoWBBlSe6xyBrOSZw5NQ - beetmover-repackage-lt-win32-shippable/opt: F5D9DbXZQg-adTQVJ8rlbw - beetmover-repackage-lt-win64-aarch64-shippable/opt: M7R-llcqTIKloPd_lZwnqg - beetmover-repackage-lt-win64-shippable/opt: cXzPolx9R1-jwKq_lM36uA - beetmover-repackage-lv-linux-shippable/opt: XT1i4FjxRbK81quA6LkFIA - beetmover-repackage-lv-linux64-aarch64-shippable/opt: f4pLT73-Tuy61D4UJil3rQ - beetmover-repackage-lv-linux64-shippable/opt: P0s-LMp3RvqGkgA2vzNsKg - beetmover-repackage-lv-macosx64-shippable/opt: f7BnPkSqS5CLdiM_tfRNxw - beetmover-repackage-lv-win32-shippable/opt: bmP2lM7qT7evMIR9JorDOg - beetmover-repackage-lv-win64-aarch64-shippable/opt: D4kpvUB7TH60VubdDKiuhQ - beetmover-repackage-lv-win64-shippable/opt: CI1SbGz6RiOPQsWXDP8Kww - beetmover-repackage-macosx64-shippable/opt: UrrZk2o6RcifhcPcRqG55A - beetmover-repackage-mk-linux-shippable/opt: XXpno0hbQcGWdLG2pRC6pQ - beetmover-repackage-mk-linux64-aarch64-shippable/opt: FfV5OnqLSYGceF1wlNaX2g - beetmover-repackage-mk-linux64-shippable/opt: HRRrfhe8RfS9eZCnhW390g - beetmover-repackage-mk-macosx64-shippable/opt: E3lPmY3QSZuJABAZ0L5kqg - beetmover-repackage-mk-win32-shippable/opt: dfOjSpCqSUud574OwaSy_Q - beetmover-repackage-mk-win64-aarch64-shippable/opt: em9MbydPRXadyEvfMJhSQg - beetmover-repackage-mk-win64-shippable/opt: Yq6etRAeSuqgzJeWu5G9aA - beetmover-repackage-mr-linux-shippable/opt: aXW2P5JcQF6MjI98TfP6RA - beetmover-repackage-mr-linux64-aarch64-shippable/opt: X84pDk0VRimj94hFu62p6Q - beetmover-repackage-mr-linux64-shippable/opt: CDmDVsdKR3CVXge0TH7uug - beetmover-repackage-mr-macosx64-shippable/opt: PnTouuJ2TQGVnQ5GXp17Gw - beetmover-repackage-mr-win32-shippable/opt: PiDyJH78TiKKv90Xqug3zg - beetmover-repackage-mr-win64-aarch64-shippable/opt: Gk9JgTCZTYOEnX0lxwDm3Q - beetmover-repackage-mr-win64-shippable/opt: AnZ5m8dUSHWugUVf2PTy5Q - beetmover-repackage-ms-linux-shippable/opt: U6LD8BV9TWejKfbXMonZLg - beetmover-repackage-ms-linux64-aarch64-shippable/opt: Ryql4t0TQgeyJ0iSuTQAkQ - beetmover-repackage-ms-linux64-shippable/opt: cfCX_SXDSfmOMiSt1pJU4w - beetmover-repackage-ms-macosx64-shippable/opt: DBJMT_n5Q4KEfo35BLl6-w - beetmover-repackage-ms-win32-shippable/opt: PFA4_N-bSJyfasUqrhSiMA - beetmover-repackage-ms-win64-aarch64-shippable/opt: EbzNlofeRXGquwXN9rQx6w - beetmover-repackage-ms-win64-shippable/opt: C5vOxsK8TceBLytOucWF5w - beetmover-repackage-my-linux-shippable/opt: CgATWnPcRzaQMt5-dWTyXg - beetmover-repackage-my-linux64-aarch64-shippable/opt: Nwr5vSnVTAS8F-s5J97Hgg - beetmover-repackage-my-linux64-shippable/opt: VvedYTuSQXeQeXtvGhCkFA - beetmover-repackage-my-macosx64-shippable/opt: H20fc0PQSMeex8LdDAGyHw - beetmover-repackage-my-win32-shippable/opt: bsubItWxS9ClMVIzJ9f-UQ - beetmover-repackage-my-win64-aarch64-shippable/opt: GzGWcxSsRCWoMgFmrMg1Iw - beetmover-repackage-my-win64-shippable/opt: DpG9j-HDQ02Fsgr0ogA7eg - beetmover-repackage-nb-NO-linux-shippable/opt: eJDi5tWlQ2yQ4h787SP7fQ - beetmover-repackage-nb-NO-linux64-aarch64-shippable/opt: bEGupGmfT6m_U3L7tTmn7A - beetmover-repackage-nb-NO-linux64-shippable/opt: HpF5hhWATd2wxNYD208xRg - beetmover-repackage-nb-NO-macosx64-shippable/opt: NfX5fEHNSTektwpRL1mulw - beetmover-repackage-nb-NO-win32-shippable/opt: TpLDppj_QQONwJ9SjAQWvg - beetmover-repackage-nb-NO-win64-aarch64-shippable/opt: Lxtu1CnaRB-GIO-eVcEYJg - beetmover-repackage-nb-NO-win64-shippable/opt: FVUZkT0ISrCwaW1inu36sA - beetmover-repackage-ne-NP-linux-shippable/opt: Fa4WY5HCRAyHfSx5i4_DOg - beetmover-repackage-ne-NP-linux64-aarch64-shippable/opt: V9g9k_KtTZa1P2AvDRPgfw - beetmover-repackage-ne-NP-linux64-shippable/opt: UfF_EJd8R16k97cRWpGmNA - beetmover-repackage-ne-NP-macosx64-shippable/opt: Tl5hymGtRPumfJAIxhhAdw - beetmover-repackage-ne-NP-win32-shippable/opt: ecMo2rPlRPqXiyduKrnKvg - beetmover-repackage-ne-NP-win64-aarch64-shippable/opt: Bl5LQ35mTkadWtWut24Qcg - beetmover-repackage-ne-NP-win64-shippable/opt: VB_3fX-BRoOs9dWZpUW-oQ - beetmover-repackage-nl-linux-shippable/opt: bBc8rSbGRfeJA2dAyMzyIw - beetmover-repackage-nl-linux64-aarch64-shippable/opt: F06emezUTfCW2jOYS11qBQ - beetmover-repackage-nl-linux64-shippable/opt: GjODJ1Z9Sfu7_8MXl2dXcg - beetmover-repackage-nl-macosx64-shippable/opt: IkDtHcXXSMakjnjTb4Sdaw - beetmover-repackage-nl-win32-shippable/opt: WyxkRcuJQw21yp6ZPLu0UQ - beetmover-repackage-nl-win64-aarch64-shippable/opt: Ui9q9vSHQbmK6Qsm9wq60g - beetmover-repackage-nl-win64-shippable/opt: btyRgGGUSjm1kD5C_poHxg - beetmover-repackage-nn-NO-linux-shippable/opt: cLv9Xa6OQ3GxHhxY31LmOw - beetmover-repackage-nn-NO-linux64-aarch64-shippable/opt: XHo8rScNTbyV-FNAbtNicg - beetmover-repackage-nn-NO-linux64-shippable/opt: Nsu_glj4RoOdIql6ebATvA - beetmover-repackage-nn-NO-macosx64-shippable/opt: Bd_6B3fGQ4a1mwLITZPKaA - beetmover-repackage-nn-NO-win32-shippable/opt: E4mx4y5nRH-wxWUJ_aSGxA - beetmover-repackage-nn-NO-win64-aarch64-shippable/opt: ewt-VwmsTpm9GXNXs3uzaQ - beetmover-repackage-nn-NO-win64-shippable/opt: XTn93XqRRsui4zmrR-rfoQ - beetmover-repackage-oc-linux-shippable/opt: LFB4iYL0QiSW3lwrzdHDBg - beetmover-repackage-oc-linux64-aarch64-shippable/opt: GPU_ZQzTS_2gUfmYe5Qkdg - beetmover-repackage-oc-linux64-shippable/opt: GCTwTfvwRyqFOCF14a9SEg - beetmover-repackage-oc-macosx64-shippable/opt: QKr5-2QJRWuddDohRO9MOQ - beetmover-repackage-oc-win32-shippable/opt: BCcb38kxT_OWf9xO6JTAdg - beetmover-repackage-oc-win64-aarch64-shippable/opt: PcCOzFJgQBqEpRi9APwMaw - beetmover-repackage-oc-win64-shippable/opt: Cd7sGEY_TQqPkVUygElBsg - beetmover-repackage-pa-IN-linux-shippable/opt: HSMdSxfRQricfmPJoqqbng - beetmover-repackage-pa-IN-linux64-aarch64-shippable/opt: PXb1r7ToTTynSKfYZ00fxg - beetmover-repackage-pa-IN-linux64-shippable/opt: ANPspSVaQXGu_0VW3PSU9g - beetmover-repackage-pa-IN-macosx64-shippable/opt: UMvJQ8qhRyu8xhP2YXkmSg - beetmover-repackage-pa-IN-win32-shippable/opt: W-03a0aURSmzDS11NAdcYA - beetmover-repackage-pa-IN-win64-aarch64-shippable/opt: R3CE9L5HQDKUthK5iGj7cQ - beetmover-repackage-pa-IN-win64-shippable/opt: UAr0acqnQ4GCl0KfPS1Osw - beetmover-repackage-pl-linux-shippable/opt: WF0dfX_oQVeX2JiTqnD_QA - beetmover-repackage-pl-linux64-aarch64-shippable/opt: X1y7CyxjTISu_5lwVyzRqA - beetmover-repackage-pl-linux64-shippable/opt: H8ro_727RoS_vH757yZqzw - beetmover-repackage-pl-macosx64-shippable/opt: ephV9MnrRxOOqeIg29rh0A - beetmover-repackage-pl-win32-shippable/opt: Ryonyiw8Q9mduCYo5XNfUg - beetmover-repackage-pl-win64-aarch64-shippable/opt: cngYvTgpQA-H6f4e20A0bA - beetmover-repackage-pl-win64-shippable/opt: If-4WeysReWSlDC2ehI_YA - beetmover-repackage-pt-BR-linux-shippable/opt: GCOjkN-DSGaE0RckBzSTpA - beetmover-repackage-pt-BR-linux64-aarch64-shippable/opt: eHSrmZ0_QkWS0iMawW4SiA - beetmover-repackage-pt-BR-linux64-shippable/opt: ZXIACAEfRPqjKbj1ADlZ4A - beetmover-repackage-pt-BR-macosx64-shippable/opt: J_hD9k_eTfGMuGI_Xmyb6w - beetmover-repackage-pt-BR-win32-shippable/opt: fwvpsfzZRMyWNhmrnnmcWg - beetmover-repackage-pt-BR-win64-aarch64-shippable/opt: ZB-ysLz_Qm-Wea5JslBaIQ - beetmover-repackage-pt-BR-win64-shippable/opt: QAm5KnVxQFSGGukTU8NiTQ - beetmover-repackage-pt-PT-linux-shippable/opt: M8hWVAPfQK25p_LWi6Iw7A - beetmover-repackage-pt-PT-linux64-aarch64-shippable/opt: MPZ2F9r2QqmbhziM1R7RLw - beetmover-repackage-pt-PT-linux64-shippable/opt: b402rCHXSxmMFbQBosc3mQ - beetmover-repackage-pt-PT-macosx64-shippable/opt: W_t3iIYrRH6TMjrF1l15_Q - beetmover-repackage-pt-PT-win32-shippable/opt: JK8_uhisSLmA9muu6sB6Ng - beetmover-repackage-pt-PT-win64-aarch64-shippable/opt: HAKiyzAOR3unU27wNZDing - beetmover-repackage-pt-PT-win64-shippable/opt: LTnkCUyjR_WLmnFGMYXj-A - beetmover-repackage-rm-linux-shippable/opt: Ciz8g25FRnWdCMFJUmQuVA - beetmover-repackage-rm-linux64-aarch64-shippable/opt: bRvIO58PS2ikgubpYpy_-A - beetmover-repackage-rm-linux64-shippable/opt: d4wiSEKkTIazFrad-Di7CA - beetmover-repackage-rm-macosx64-shippable/opt: RLf8fo-zR9-oq5lG5kMCPw - beetmover-repackage-rm-win32-shippable/opt: BBN8ppRmRdq7B5_9qyIt2w - beetmover-repackage-rm-win64-aarch64-shippable/opt: bUxQtD2uQwGD1QfPZCoL-w - beetmover-repackage-rm-win64-shippable/opt: QAvkQjtNTiyY8uKqz6Y51g - beetmover-repackage-ro-linux-shippable/opt: P4BDvtsYT3O8tFJz8mODJA - beetmover-repackage-ro-linux64-aarch64-shippable/opt: HX17tWS6Sx-vZsIOkzCBiw - beetmover-repackage-ro-linux64-shippable/opt: J1o7h8QnQumhiUoafv7afQ - beetmover-repackage-ro-macosx64-shippable/opt: Bfqu04__TYq5LclR4g2XYA - beetmover-repackage-ro-win32-shippable/opt: bX7d2ZYLSwyhu83gsSFlqA - beetmover-repackage-ro-win64-aarch64-shippable/opt: YJC4oWH3TImPAjr_1pVxNQ - beetmover-repackage-ro-win64-shippable/opt: D-rAo9VYRzy1wgI0gE7Khw - beetmover-repackage-ru-linux-shippable/opt: fICFALtpRZ66BZn2efNqSQ - beetmover-repackage-ru-linux64-aarch64-shippable/opt: FSDKArkzQcWbwZUmTkJpKg - beetmover-repackage-ru-linux64-shippable/opt: AjsCJF0qSSu0Qze7I205DA - beetmover-repackage-ru-macosx64-shippable/opt: JZXxMeYNQAeomhZJ8aH5ug - beetmover-repackage-ru-win32-shippable/opt: W90wVgkwSeq5pkUHfX0-8Q - beetmover-repackage-ru-win64-aarch64-shippable/opt: La8zAprtTCq_OmRft16j2g - beetmover-repackage-ru-win64-shippable/opt: Orv3jvE2RVuBpECsqG64KA - beetmover-repackage-sat-linux-shippable/opt: bHHZcKkYScK_YIZ9mUGK5w - beetmover-repackage-sat-linux64-aarch64-shippable/opt: LVD40QOTRbe3APWiWm0G3A - beetmover-repackage-sat-linux64-shippable/opt: WSRs5iRdQpmLcDG-tdBf7Q - beetmover-repackage-sat-macosx64-shippable/opt: fdFFVXs4Tfm_XJzKVZKYDQ - beetmover-repackage-sat-win32-shippable/opt: Pt_sSBtkQzuS8PTil5Fh2A - beetmover-repackage-sat-win64-aarch64-shippable/opt: DnJCFe6cSYilZFPCRxuTzQ - beetmover-repackage-sat-win64-shippable/opt: K1rUwmzJSjCUm9eN9o1gpw - beetmover-repackage-sc-linux-shippable/opt: MXbGZn2yRfKFOVE01cPW6Q - beetmover-repackage-sc-linux64-aarch64-shippable/opt: WLzquaMNRyu__jQiqS51Dg - beetmover-repackage-sc-linux64-shippable/opt: IpkKUQj0RaGtVbyUneq2-g - beetmover-repackage-sc-macosx64-shippable/opt: OAtTl9NFTh2hltbG_OfcVQ - beetmover-repackage-sc-win32-shippable/opt: U2I8Y8WqRkmEKcC4Jk7NiA - beetmover-repackage-sc-win64-aarch64-shippable/opt: T-o6FSX7Ru-Mi-X-dPy0kw - beetmover-repackage-sc-win64-shippable/opt: U_k7aBgNSuaPAek4KEgh8A - beetmover-repackage-sco-linux-shippable/opt: AAj0Bp4zSmi_zj9gUogIng - beetmover-repackage-sco-linux64-aarch64-shippable/opt: FNXwZOUTQq6qxUH6ALt3UA - beetmover-repackage-sco-linux64-shippable/opt: LmyhKlXGQ-WqfVMi7-k7fg - beetmover-repackage-sco-macosx64-shippable/opt: d3WkOEPiTeOMFGKYkeNR0Q - beetmover-repackage-sco-win32-shippable/opt: bZJt4G6EQESamcmJpl2Waw - beetmover-repackage-sco-win64-aarch64-shippable/opt: QtDKDjG_Q2y_ymjWm5ZSug - beetmover-repackage-sco-win64-shippable/opt: ZN1xRrPeQx2iAKwQukGYQA - beetmover-repackage-si-linux-shippable/opt: GNdovPUTTwWn0isybv-ioQ - beetmover-repackage-si-linux64-aarch64-shippable/opt: eH7nXwN_QaOI2DcyepbAEQ - beetmover-repackage-si-linux64-shippable/opt: O7ke_eQRTjin8K_lqQg_hQ - beetmover-repackage-si-macosx64-shippable/opt: P84QUua5Qlu8SC86TinY3g - beetmover-repackage-si-win32-shippable/opt: Y4kweAheRuKPOQX-4PaloQ - beetmover-repackage-si-win64-aarch64-shippable/opt: BaYjdg9cS5ye7L8TjYWs8Q - beetmover-repackage-si-win64-shippable/opt: Sk5ivvPnRlqanAdJ5yewiw - beetmover-repackage-sk-linux-shippable/opt: Zx7OPTx0TXy4kPAn5zNrPw - beetmover-repackage-sk-linux64-aarch64-shippable/opt: KGS8ftZuTheM5AEF2zD7Qw - beetmover-repackage-sk-linux64-shippable/opt: IH1zEhrkReyVmDjFsIMPrw - beetmover-repackage-sk-macosx64-shippable/opt: Yv4Vb9DBR0ODU1FDefHjjQ - beetmover-repackage-sk-win32-shippable/opt: MGnNxi75Ty-cNoNvuC1kDA - beetmover-repackage-sk-win64-aarch64-shippable/opt: Vg0q1e1BRqy9FcWgvDotbg - beetmover-repackage-sk-win64-shippable/opt: YvWJst5xTzOKw7nJIeAeoQ - beetmover-repackage-skr-linux-shippable/opt: fAQ6PkRyROSn9GlpdY_cJg - beetmover-repackage-skr-linux64-aarch64-shippable/opt: fMuMmY3wSWCPMlVSl6Q1bA - beetmover-repackage-skr-linux64-shippable/opt: WnmmT6RnQ8qLi4vH4rgg5A - beetmover-repackage-skr-macosx64-shippable/opt: YZk5z-gWSUiPjABRW7YPJQ - beetmover-repackage-skr-win32-shippable/opt: cJ4aJYHzSF6tUBMzycVW6Q - beetmover-repackage-skr-win64-aarch64-shippable/opt: MbgO9kRTRACm3p8X0k-EUA - beetmover-repackage-skr-win64-shippable/opt: T8KeCHebTE64pDYSqy2qPQ - beetmover-repackage-sl-linux-shippable/opt: K_k4nDtzT1OAUVm0tN55Tw - beetmover-repackage-sl-linux64-aarch64-shippable/opt: GdS9PvdyRWmv3UUFozhQow - beetmover-repackage-sl-linux64-shippable/opt: A8T3bzF_TmqSjlbW8JBsdw - beetmover-repackage-sl-macosx64-shippable/opt: em31V4ygQqS_sOKB4M--RA - beetmover-repackage-sl-win32-shippable/opt: FAEj7S3wRUWDUlb0qQVMHg - beetmover-repackage-sl-win64-aarch64-shippable/opt: UfgXYGHeQxq2VSoAyVrFkQ - beetmover-repackage-sl-win64-shippable/opt: PQj1bb0DQNOz3HEHQPz7eA - beetmover-repackage-son-linux-shippable/opt: X6Uo3NoYTKakM-xN64gMlQ - beetmover-repackage-son-linux64-aarch64-shippable/opt: TRgbhC-tSEOYpB5xpg0LbA - beetmover-repackage-son-linux64-shippable/opt: aaa9aO6MQbu7nwWlCbnfMg - beetmover-repackage-son-macosx64-shippable/opt: S3pHuu9mTgGnLmYPd7uhJw - beetmover-repackage-son-win32-shippable/opt: HsSYaHu9Skm1ad8VSQfQCw - beetmover-repackage-son-win64-aarch64-shippable/opt: a4xK0OtpSXKOcppalby_wQ - beetmover-repackage-son-win64-shippable/opt: PKVbq5mNQ2uLW8CtnsHQBQ - beetmover-repackage-sq-linux-shippable/opt: Ek1TESpyRlWS2MrImprr5Q - beetmover-repackage-sq-linux64-aarch64-shippable/opt: I8MCW55aSCKZ-758INsBiA - beetmover-repackage-sq-linux64-shippable/opt: St8QwDwcQIiwyCcostXFNw - beetmover-repackage-sq-macosx64-shippable/opt: a5PWQVqgQvKxuNA7JHjBiQ - beetmover-repackage-sq-win32-shippable/opt: fE5fSHyUTQi3dIGtXZqQxA - beetmover-repackage-sq-win64-aarch64-shippable/opt: ZbNGGVsjTJuiTySMJkZZGA - beetmover-repackage-sq-win64-shippable/opt: HRPMwUdmQA6bVLFxSS1ysA - beetmover-repackage-sr-linux-shippable/opt: QnWUduDMQVal6ZG3uL6KXA - beetmover-repackage-sr-linux64-aarch64-shippable/opt: QTO7G0sVS16ETqQD0ixF0Q - beetmover-repackage-sr-linux64-shippable/opt: RsEK_n0MSr6LKAJpaEVXcw - beetmover-repackage-sr-macosx64-shippable/opt: OwVTCJkdSaqPboIr3eawKw - beetmover-repackage-sr-win32-shippable/opt: RXS5aW9cRqe0Jdm4BVIK7w - beetmover-repackage-sr-win64-aarch64-shippable/opt: J2C32ARPT4uqvQ0iz4E5KA - beetmover-repackage-sr-win64-shippable/opt: JIJzcTqESeqq9OsK3qNVQg - beetmover-repackage-sv-SE-linux-shippable/opt: WwKjUgMaRjCNyfVW3GMntw - beetmover-repackage-sv-SE-linux64-aarch64-shippable/opt: GGFgBG78RqyJk6upuT2pzA - beetmover-repackage-sv-SE-linux64-shippable/opt: fKQmCu9OR0m7VUMWf-bX6g - beetmover-repackage-sv-SE-macosx64-shippable/opt: KdO0aH-RQw-69qXFHI-fHw - beetmover-repackage-sv-SE-win32-shippable/opt: SGmlpF7rRdyLzgJ8eiWVGw - beetmover-repackage-sv-SE-win64-aarch64-shippable/opt: Fs3nC7NCT3uAdMI2PN6WFQ - beetmover-repackage-sv-SE-win64-shippable/opt: PZ4XdC1DRLG0jAyu3BL97A - beetmover-repackage-szl-linux-shippable/opt: V8nChJzJQOywWxxdQ-ty2A - beetmover-repackage-szl-linux64-aarch64-shippable/opt: ZsNjt4jzRmW-lJmpl9wlQg - beetmover-repackage-szl-linux64-shippable/opt: QoPA6J-0QTq2U2qEVOzx7w - beetmover-repackage-szl-macosx64-shippable/opt: G7XdTyCbTLqAVVsvJ2Sjug - beetmover-repackage-szl-win32-shippable/opt: S9y0s7FyShyk51cCwodpug - beetmover-repackage-szl-win64-aarch64-shippable/opt: GqWyZ67QRe-8WmQ6fK8zkQ - beetmover-repackage-szl-win64-shippable/opt: R5tX1WznT0W0UrsL7hHXzA - beetmover-repackage-ta-linux-shippable/opt: YYkXQZFlQZ6krDyKFUNaWQ - beetmover-repackage-ta-linux64-aarch64-shippable/opt: RD-cm3ywQbq7mVRVueep0g - beetmover-repackage-ta-linux64-shippable/opt: E20BWezCS2-c5H6SHZXFvA - beetmover-repackage-ta-macosx64-shippable/opt: P4czWDl6TVy4NLWZy3y_iQ - beetmover-repackage-ta-win32-shippable/opt: Mfn9q_4sTq2pA5zPhdTd7A - beetmover-repackage-ta-win64-aarch64-shippable/opt: VPI_8vDrROOiyo6iAV5JkQ - beetmover-repackage-ta-win64-shippable/opt: CdIfQZnwRFmUOpXENhhuaQ - beetmover-repackage-te-linux-shippable/opt: TpfbenmwTia-i4Cx_cLcow - beetmover-repackage-te-linux64-aarch64-shippable/opt: Wi021dnHQmGLo3XMvS7yUg - beetmover-repackage-te-linux64-shippable/opt: Olhas-1jQAGZHs-7EjYZ8w - beetmover-repackage-te-macosx64-shippable/opt: B8ZRkJaARYq3YK50NrVrMA - beetmover-repackage-te-win32-shippable/opt: NL3gEETkRw6u43QBrQ-_lw - beetmover-repackage-te-win64-aarch64-shippable/opt: VHbCT_UoSLGRy91TjmWKmA - beetmover-repackage-te-win64-shippable/opt: Nno2M5crT2qlXo-WLndvBA - beetmover-repackage-tg-linux-shippable/opt: aauulrMGQbSb4YWq3IIX8w - beetmover-repackage-tg-linux64-aarch64-shippable/opt: HP5DiaUKRVG6NuelwOOkmA - beetmover-repackage-tg-linux64-shippable/opt: X0qT_GihTXytlGv-OA6Erw - beetmover-repackage-tg-macosx64-shippable/opt: DrPo-NbJRCK0GI-_--98_g - beetmover-repackage-tg-win32-shippable/opt: WdaDY0oRQGWNfCfASm9neA - beetmover-repackage-tg-win64-aarch64-shippable/opt: UI0DYHZDS7OTXdqYfs3GPw - beetmover-repackage-tg-win64-shippable/opt: Eaqua5fLQl27RJF6mqD-9A - beetmover-repackage-th-linux-shippable/opt: TCjsY6ZcQzStgbeRU9duIw - beetmover-repackage-th-linux64-aarch64-shippable/opt: V87PvPm7TGmA9yyb8vipHw - beetmover-repackage-th-linux64-shippable/opt: fksy9YMvQRGeaB8EWYS-2A - beetmover-repackage-th-macosx64-shippable/opt: PlAeIQpORueglAxWK_g4Ow - beetmover-repackage-th-win32-shippable/opt: aFaUtcAzT1yDrHD_6nR_vg - beetmover-repackage-th-win64-aarch64-shippable/opt: JWr1OKd0TjKYBlu3NLWyOw - beetmover-repackage-th-win64-shippable/opt: WopDGnlsTv-AkDgwz5A46A - beetmover-repackage-tl-linux-shippable/opt: L1rklxYxT0i2NiuHNLZKdg - beetmover-repackage-tl-linux64-aarch64-shippable/opt: FcuJCKGUQ_SanvezGT3NjA - beetmover-repackage-tl-linux64-shippable/opt: d9Mcn3MkQUyipJXy8LnoEQ - beetmover-repackage-tl-macosx64-shippable/opt: fOVbgkDxRI2URsrjgZDTsw - beetmover-repackage-tl-win32-shippable/opt: bfzfCFIeTQ6YA-MT_anviQ - beetmover-repackage-tl-win64-aarch64-shippable/opt: MwDNyvFMT3aCQzupHHWspw - beetmover-repackage-tl-win64-shippable/opt: GgWjcIwNQz6NZDRfXzcS3w - beetmover-repackage-tr-linux-shippable/opt: CQwXjur7TyCWtF04aXndQg - beetmover-repackage-tr-linux64-aarch64-shippable/opt: ORpP_xOoRry1YddU69yThA - beetmover-repackage-tr-linux64-shippable/opt: fqERKE_CQT-VOuZibrUO-w - beetmover-repackage-tr-macosx64-shippable/opt: LYRlmDj4RiqhNzt3kDBPEg - beetmover-repackage-tr-win32-shippable/opt: dV35WplfSQi_UVUVNFUbVA - beetmover-repackage-tr-win64-aarch64-shippable/opt: eQ2Md_-RRwOlIpn_UqesuQ - beetmover-repackage-tr-win64-shippable/opt: JQl-bzfySPi0bg48H8b-lw - beetmover-repackage-trs-linux-shippable/opt: MUO2LiVNQAaRLqP6oP1Zxg - beetmover-repackage-trs-linux64-aarch64-shippable/opt: LdpwSQv3S3q44pFlo2jwOg - beetmover-repackage-trs-linux64-shippable/opt: ddO0UB0gR5uWul2i0G8vUA - beetmover-repackage-trs-macosx64-shippable/opt: B7InMRPjS-q02rWQFXTDbg - beetmover-repackage-trs-win32-shippable/opt: AKmM2w1aSLWp3zF-BERtIQ - beetmover-repackage-trs-win64-aarch64-shippable/opt: V2D0-227Q0updS1XIfAF-Q - beetmover-repackage-trs-win64-shippable/opt: FGsCpDn5TCKg_VjHGP8Q4Q - beetmover-repackage-uk-linux-shippable/opt: J9kZbu5BQ3ilukm5WBn-Pg - beetmover-repackage-uk-linux64-aarch64-shippable/opt: LbLd2EHxTfCdJ-fDVvr5gw - beetmover-repackage-uk-linux64-shippable/opt: NW-FK43YTWaZfHjGY5wWIw - beetmover-repackage-uk-macosx64-shippable/opt: OuTUQu5jQL2mDiQi8kS2mA - beetmover-repackage-uk-win32-shippable/opt: KwuZWB7JSBWGL1koJj1L1Q - beetmover-repackage-uk-win64-aarch64-shippable/opt: IVrBpm6gQeS59U2nxUf_aw - beetmover-repackage-uk-win64-shippable/opt: bdUZEFqhSgqb9X9U2XtfVg - beetmover-repackage-ur-linux-shippable/opt: U47Ar-FfS1eHHcAJalwDAQ - beetmover-repackage-ur-linux64-aarch64-shippable/opt: OczgTFlQQv2H4pgVmqpS_w - beetmover-repackage-ur-linux64-shippable/opt: J2MfoXKHT2qa8R2J4vLA2Q - beetmover-repackage-ur-macosx64-shippable/opt: QFLKxBXgQI-oXvE_W3CIMQ - beetmover-repackage-ur-win32-shippable/opt: bHAIqvGBTEOCjxELONxvRA - beetmover-repackage-ur-win64-aarch64-shippable/opt: Aa_Wk0NtTpGxnF1tCrR8rA - beetmover-repackage-ur-win64-shippable/opt: ZIa6jQ4IQYu3_ib4Sa5vfA - beetmover-repackage-uz-linux-shippable/opt: eVpBDIvfT3WK4eBNKue-1Q - beetmover-repackage-uz-linux64-aarch64-shippable/opt: QGpkmHWpQMG8DXMTDah3vA - beetmover-repackage-uz-linux64-shippable/opt: eTHtPm2EQ4G8Srt9gLqRrg - beetmover-repackage-uz-macosx64-shippable/opt: bHcl-KihRiy-HhmekLcVtg - beetmover-repackage-uz-win32-shippable/opt: EK__X6XmRCe3CRM15MnFsA - beetmover-repackage-uz-win64-aarch64-shippable/opt: CxykZfo8TmeiJ-wRO1fzzg - beetmover-repackage-uz-win64-shippable/opt: Yoliaw1AS2WafvuNGqlSsA - beetmover-repackage-vi-linux-shippable/opt: BT6tfhDgTUCnAegy3SDbkQ - beetmover-repackage-vi-linux64-aarch64-shippable/opt: ahDgTymzQZqlrwFtlPzlQA - beetmover-repackage-vi-linux64-shippable/opt: Rvei44QMTwa3ZEKK_F3iow - beetmover-repackage-vi-macosx64-shippable/opt: bs9wvTuRTK6rn26zP0C1hw - beetmover-repackage-vi-win32-shippable/opt: NTG7bgbtRgekUYJJ8UukYw - beetmover-repackage-vi-win64-aarch64-shippable/opt: QIW647ndT96sahfrX0bYcw - beetmover-repackage-vi-win64-shippable/opt: WBSvjLw0Tdap5Wr88kFXag - beetmover-repackage-win32-shippable/opt: M8AbuTUzSKms9WmApfkfNA - beetmover-repackage-win64-aarch64-shippable/opt: ee15HeDEQWqapV3yBQdwBw - beetmover-repackage-win64-shippable/opt: CKAnRS-oQmy4TrKzqw6SDA - beetmover-repackage-xh-linux-shippable/opt: We2YzIMlRbWKRplQ4GVghw - beetmover-repackage-xh-linux64-aarch64-shippable/opt: abWHPfe_QWiGi-gcJDj6Dg - beetmover-repackage-xh-linux64-shippable/opt: EHGEATHwQS6Y-LoNoLs8iw - beetmover-repackage-xh-macosx64-shippable/opt: finOoYwwRueDnNZvApItpA - beetmover-repackage-xh-win32-shippable/opt: DpAcCDRdR0q3Wz_Dib2wjw - beetmover-repackage-xh-win64-aarch64-shippable/opt: cs4AXCIBSly7FNvjoyOIMw - beetmover-repackage-xh-win64-shippable/opt: cJg4-oPmTj29C0vOX9b6Ng - beetmover-repackage-zh-CN-linux-shippable/opt: dAJXTUDNQ0yS-oXvtS8tBw - beetmover-repackage-zh-CN-linux64-aarch64-shippable/opt: U9tkI8Z0Tziu7Xippg83OA - beetmover-repackage-zh-CN-linux64-shippable/opt: J559AkKwRm20TXr3_TJaOg - beetmover-repackage-zh-CN-macosx64-shippable/opt: TxWjco9TQbewBTBAxVladA - beetmover-repackage-zh-CN-win32-shippable/opt: Ql8YGTCKSkiDr7xnIq8pjg - beetmover-repackage-zh-CN-win64-aarch64-shippable/opt: YGE21Q1WSvioUJewkxuWrw - beetmover-repackage-zh-CN-win64-shippable/opt: PnkZpctvRdGftCNv6kCkhg - beetmover-repackage-zh-TW-linux-shippable/opt: eR6LBiuzSo6MtQaEDhfPEw - beetmover-repackage-zh-TW-linux64-aarch64-shippable/opt: firv4M91QtuNwjCilqjCMw - beetmover-repackage-zh-TW-linux64-shippable/opt: Lmi0zIoiRVGx0hDb92Lxgg - beetmover-repackage-zh-TW-macosx64-shippable/opt: baagsNM1ReSS8xkV2I5i7A - beetmover-repackage-zh-TW-win32-shippable/opt: Znq6qjgoQ1KaMXTVZWqE7Q - beetmover-repackage-zh-TW-win64-aarch64-shippable/opt: e-PLAypAQIaB5UGEBJvtGA - beetmover-repackage-zh-TW-win64-shippable/opt: Jk2wK03lTRmaR_ytYOLHOQ - beetmover-source-icecat-source/opt: bVdYuy_cSUKU7qMGuZc7dw - build-linux-asan-fuzzing/opt: YPLAOT2FTEO1ekB7evVjpQ - build-linux-fuzzing/debug: LRc8ftL6QGilIDO3iVpUgw - build-linux-shippable/opt: X-6lzaS0Q66MX3a02hxqsg - build-linux-shippable/opt-upload-symbols: AQObllRXQFKBNvV0u7PakA - build-linux/debug: MUjfIWyASWCRW7LQ6XtfuQ - build-linux/debug-upload-symbols: eo1NH0znQX-2XFAzLySl0A - build-linux64-aarch64-shippable/opt: IbcPW4eMSRmRhOlIcCFCAw - build-linux64-aarch64-shippable/opt-upload-symbols: KTKyCSceTV-GVDNtENkPDA - build-linux64-asan-fuzzing-afl/opt: SQAulxCMSmGu1mZe96W3bA - build-linux64-asan-fuzzing-nyx/opt: b9_sxdV1RXWk-5mmkmg8cQ - build-linux64-asan-fuzzing/noopt: PbWCFCYqSg66dpZEYKs75Q - build-linux64-asan-fuzzing/opt: FurYSAa4Tvu7Hk2EnTKJ1Q - build-linux64-asan/debug: YEl1GNEpSyCwjtJtxTv-Qw - build-linux64-asan/opt: IPP357QdSa-qS9GRyzwFkg - build-linux64-base-toolchains-clang/debug: Lr5UU58tQV2lrDOVNJwEfA - build-linux64-base-toolchains/debug: EL9l3qJRTjSaOPAS6Q7w7g - build-linux64-fuzzing-afl/debug: XoJ1EeRyQxexCP5Z0eWt5g - build-linux64-fuzzing-noopt/debug: Tl-916WSQhW0dxJJBSVg-w - build-linux64-fuzzing/debug: f_vwSPCwQV2yoGRHJ16F2A - build-linux64-shippable/opt: Xs3CDBJFQ2mHuhsZ8HlAbw - build-linux64-shippable/opt-upload-symbols: ZDRabpbERFGzOnR65R792A - build-linux64-tsan-fuzzing/opt: ONCNPVTaTtuTx_Wlt1Mo5w - build-linux64-tsan/opt: VRsxCkwyRlCGtF38RIOFTQ - build-linux64/debug: Tk9mFKYMQUC1c5ibxydm7Q - build-linux64/debug-upload-symbols: BQqoPN4TRSCv1_ZU2Q9rLA - build-mac-notarization-macosx64-shippable/opt: aAG25-cvS-yGRSjK-LzFyg - build-mac-signing-macosx64-aarch64/debug: UXdWvHRFSri-gBMz-9WonA - build-mac-signing-macosx64-shippable/opt: RP5HLm0USp68cLczNmVrxw - build-mac-signing-macosx64/debug: IpUan5bNTvalkg4R3v7--g - build-macosx64-aarch64-asan-fuzzing/opt: bluIC8CpQRGCCz6VnVzqhA - build-macosx64-aarch64-fuzzing/debug: H7O8dWH4Q7-gkDWLnsYiug - build-macosx64-aarch64-fuzzing/debug-upload-symbols: DZ1h9OSFTnuznmriXUdcwg - build-macosx64-aarch64-shippable/opt: dcv0bjSdSfuhY5OGF2qf3g - build-macosx64-aarch64-shippable/opt-upload-symbols: ejYUyLPaRi62omd_AuP-6Q - build-macosx64-aarch64/debug: XG1F6KaJTJmi9WOcjH58ow - build-macosx64-aarch64/debug-upload-symbols: MNOplo51Qe6lGk_Yl_QArw - build-macosx64-asan-fuzzing/opt: dKTicd8SRVql7ZNdpFQVsQ - build-macosx64-fuzzing/debug: foi847GSS3esbZELB6L0fA - build-macosx64-fuzzing/debug-upload-symbols: Hy4nWtkiQyWdR_mwxEsE6Q - build-macosx64-shippable/opt: LAqGQmytTECvmVD8Hqpu5Q - build-macosx64-x64-shippable/opt: BPvUnTf7R4mJIkQ2Gf3tAA - build-macosx64-x64-shippable/opt-upload-symbols: SDaCgUokSvCqwHqpnHWvpA - build-macosx64/debug: PTtFqHarTVGJuntMT6vk_w - build-macosx64/debug-upload-symbols: B80QlVDKRQWdsJJHkB9FUg - build-signing-linux-shippable/opt: GJ-JCRkjQM2kT18e8IX1Sg - build-signing-linux64-aarch64-shippable/opt: P8h9Y1GOScmheLX6kLhb8g - build-signing-linux64-shippable/opt: cYkdSiizRK-hemFL97xZBQ - build-signing-win32-shippable/opt: ZbIVQ7fzSAyZ8-5lZt49fA - build-signing-win32/debug: DjL5kDOiQ4WHdUfV6iATfw - build-signing-win64-aarch64-shippable/opt: QwbQV7axSyibiZcpxekKNA - build-signing-win64-shippable/opt: YO2eEqELQwSMEREuvTIINA - build-signing-win64/debug: R-wuEg75Q5SModIrEG_5Dw - build-win32-mingwclang/debug: IMhVw1tQQnqCo6m19L2Ijg - build-win32-mingwclang/opt: MnYn6y34TKahJjtFszKHuA - build-win32-shippable/opt: Xv4RO1mcRv2bZgjB_BpvNw - build-win32-shippable/opt-upload-symbols: B9x86UvlT765t7VV8SlNiQ - build-win32/debug: fkAY7PnaQv2N3LDS36LQNA - build-win32/debug-upload-symbols: ewbDHEdvSB2Bad3m2-seVw - build-win64-aarch64-shippable/opt: IM8L4btDRKe1CbuUG-pm3g - build-win64-aarch64-shippable/opt-upload-symbols: FI7aJBViSQadvwzi1a3yfA - build-win64-aarch64/debug: VyM6j9raTouI1DQFWwp-fw - build-win64-aarch64/debug-upload-symbols: LfahMtCtTb6tbNFTYtAVSg - build-win64-asan-fuzzing/opt: VyEUxXeIT0ushOaz39T_4g - build-win64-asan/debug: F0T4MOOaQgqobrqb5AUgeQ - build-win64-asan/opt: RKb2Z602SHab-rsnkbhLgw - build-win64-mingwclang/debug: FlrfDnkwQ9Ot9g6Cd-tb-A - build-win64-mingwclang/opt: d0h8AjFJQvCPgVyjh95QNA - build-win64-shippable/opt: NQz2A4bgSqqMgLwUidyeOA - build-win64-shippable/opt-upload-symbols: b6kqSt6oQyKaJEMP7uL0rA - build-win64/debug: cK3CL20XS2iYZs8UWFzSdg - build-win64/debug-upload-symbols: Q7qlQk7LQU6-C5v6XQf-Nw - docker-image-android-build: b01HccfTQRm5O1UsvXekNQ - docker-image-android-components: euUx8cOmRKy2RbJ9j-wHLQ - docker-image-android-ui-tests: F0gigxdpRXaKE7holer8mQ - docker-image-condprof: Td9aVPqyShu6i1K4xMEaCA - docker-image-custom-car-android: Emcqh4HURMKpYBPgspX10w - docker-image-custom-car-linux: HNLurrDBR8GjXXSoRpdlrA - docker-image-custom-v8: eOAmvCE5QqG1fAqWGKnoXQ - docker-image-deb12-toolchain-build: CmQdHzZFSvCrzcW2-VsSMA - docker-image-debian12-amd64-build: ZQJQweU7S9m15MWIFM95Sg - docker-image-debian12-base: WfQW44k6SSCLfK5HQq6uGA - docker-image-debian12-flatpak: XEByQFhnSXKwBC5bOBJibw - docker-image-debian12-packages: dm7g72qRQlm_WvA_g3pLlA - docker-image-debian12-raw: bglgZSthQAaC74dyatIXPg - docker-image-debian12-repackage: MvW_Y_YESQikelt9jPEoYA - docker-image-debian12-rpm-repackage: JABt2X7RT3WIl8wmWqWHAQ - docker-image-debian8-i386-packages: cs5ZXZyCRjCMNGEc7s3MZQ - docker-image-debian8-i386-raw: DtvElGG6TV2hJHvmanGVAQ - docker-image-debian8-packages: Ra_hpRcATvmeHdozgjFyVg - docker-image-debian8-raw: XpW-T8hiQIKdjxPsVkEFRg - docker-image-decision: Z_W2kxVNS9qbmGE1IEbYVA - docker-image-diffoscope: JGy0fIOYRFOzwg2srd32ig - docker-image-fetch: JjnWSB70RMqOJh0JHTXpog - docker-image-fetch-more: Y_6fKaNRR_O5lzyrQ9P8KQ - docker-image-funsize-update-generator: EqViNA2VTDW2hH5fOX6V4w - docker-image-gdb-test: FUkq7hnHTXGsBfTC0BD18A - docker-image-image_builder: SHOJVzvwSp-wZglY3aSimw - docker-image-image_builder_arm64: B4Ze6V5MTUq64HfRRtUh4Q - docker-image-index-task: MOKM2P-AQgiFpKPou2B20A - docker-image-lint: QkfQgPCTRyiaEzs7djPnZg - docker-image-partner-repack: RDRR9DH3TUGR7BRpFUG5CQ - docker-image-periodic-updates: WYbeV8O9TC23XhjfpM6G6w - docker-image-push-to-try: QXra6_PGRCeZPtp6YCOTyg - docker-image-sentry: csgHxrGaRkWh2JJDJIOGuQ - docker-image-snap-build-core22: QI4x9P6dT9S1-ETo12dCrA - docker-image-snap-build-core24: O_h9Gy3aSvK3X2X6mbfLrw - docker-image-static-analysis-build: MqGtgGf1SjurJNsPtf0YSQ - docker-image-system-symbols-linux-scraper: U9ozB8GTSc2lvMhOwCzA2g - docker-image-system-symbols-mac: FBZakzfHStW6CW93btmNRQ - docker-image-system-symbols-win: KEfh6xz8RmKwaBWqh7m4zQ - docker-image-system-symbols-win-gfx: cXGxKjdGTsehmhJMcKx2nQ - docker-image-ubuntu1804-base: It_m8Xv8QlqbNkcq8npAeQ - docker-image-ubuntu1804-build-python: W6_o5CtnTDS-tWwm_3720g - docker-image-ubuntu1804-build-python-wheels: LiMKK3keTA2ftYCAl9LI9g - docker-image-ubuntu1804-i386-packages: X84UPktiT_CJrfQzhrUP1g - docker-image-ubuntu1804-i386-raw: AT5OGbD9QyadMY9WeyVFWA - docker-image-ubuntu1804-packages: MV8y-ukpSzyLEYtcq49Xrg - docker-image-ubuntu1804-raw: M5hoTpBLTzODCCq5Kln1vQ - docker-image-ubuntu1804-test: Xlj-dY0pQdK4VRicxCsiPg - docker-image-ubuntu1804-test-base: V6A0JpF4T5KK2D1mzPC1kg - docker-image-ubuntu2004-base: TYS5C50QQ8yPn0paltov5A - docker-image-ubuntu2004-packages: cuYa3Gn7RbCG6Lt4MEpdzg - docker-image-ubuntu2004-raw: UgVf6HmvRE-MWfp8TV5GfQ - docker-image-ubuntu2204-arm64-base: cdpMVpTyTcavFXic5plTcA - docker-image-ubuntu2204-arm64-build-python: UE4PVyaQQzOTc2i9EBjRWw - docker-image-ubuntu2204-arm64-packages: aRZkn9F3Ts6PUimk7TkYGg - docker-image-ubuntu2204-arm64-raw: A8Phm4QZS6ylylcAbpkhuQ - docker-image-ubuntu2204-base: HpbV56QgTKmvF2EgKnTLIA - docker-image-ubuntu2204-build-python-wheels: Okx1wpvLQRWu0W4hBrWidA - docker-image-ubuntu2204-packages: L4EgEg_wT-iZcsnmndmOWQ - docker-image-ubuntu2204-raw: d-AcrhFIRKe4N8vu4K89wA - docker-image-ubuntu2404-arm64-base: f9ssGBsgQDe8dR-43nMzNw - docker-image-ubuntu2404-arm64-packages: JkDhFZT2RMyXc_5u3-M3WA - docker-image-ubuntu2404-arm64-raw: OtXf_flOSIiu-XOiCBhejA - docker-image-ubuntu2404-arm64-test: RuRDCFC8SiWw1jkns1xk3Q - docker-image-ubuntu2404-arm64-test-base: Jnc9mJ8ZQLWvyIN1aU8L3A - docker-image-ubuntu2404-base: YuXrA9GQTlebFLgDVM4BEA - docker-image-ubuntu2404-build-python-wheels: b2XsawT3SH2M8OGiMNq1uQ - docker-image-ubuntu2404-packages: CefqfGKKTQ2jKQvKfFMdSA - docker-image-ubuntu2404-raw: WLzg8xoLTdWgKikLWzsuFQ - docker-image-ubuntu2404-test: Nz0d7dQCRwq6AgjyWkyc0Q - docker-image-ubuntu2404-test-base: C2Ri3aowQQmTB4PJJQoa3Q - docker-image-update-verify: U12UYzyDQcu5DIVJcqQPzw - docker-image-updatebot: QB1MdYfXSSiEd-QxfjNgTA - docker-image-valgrind-build: dpOqQQisTEiCRnbMcLJt0Q - docker-image-webrender: Qx74rUtYSCamURar9k6Rfw - fetch-7zz: T2BKX7jbQlOTHTfpqUyf4g - fetch-afl-plus-plus-4.0: OAgnoo_iQJGlr63ToR00pQ - fetch-binutils-2.31.1: DmER26UZTAe4VZ19L0lEQg - fetch-binutils-2.41: A25-JKBtT66IUoKAW52Fjg - fetch-bomutils: T91Ee3K_Rbiu6Hi6BwQ-yA - fetch-cabextract: FonPgpw9QR2hfOk5uynMvA - fetch-cargo-vet: IJR0q8WqTf6j1ZquXTVVSw - fetch-cbindgen: Mdoi3fYKS0eoVmrNS43-5A - fetch-cbindgen-0.27.0: aVSpvwdGRAyPn6NbjV8HoQ - fetch-cctools-port: A-t2B7-iSYeSHnS86aGnRA - fetch-chromium-depot-tools: RT0wxkUgQtShj0qxiTPNfg - fetch-clang-14: VSj4FRk3T7afmcDjgNsOlA - fetch-clang-19: RaEtKEwoS3y2kW4eCAa3mg - fetch-clang-20: Qn6oA_V6Szed1j5-U-veKA - fetch-clang-8.0: MeOCt3p6RgGclOLwIl9L1g - fetch-cmake: cU8-PULHT5upD5zA1ERVgw - fetch-cpython-3.11.7: fAcei8wwRTuLFMGoAlD4zg - fetch-cpython-3.11.7.exe: b4kYaMVcSBCv_7G02sYxmw - fetch-cpython-3.8.10: YmLZOwiCRwe-iG3grizEuw - fetch-cpython-3.8.10.exe: HApoYEMaSn6I6sEcghhRYA - fetch-dbus-python-1.2.18: RtpFtnLsSqq2ZCr1jrg64A - fetch-dbus-python-1.3.2: VEDFHjskSCGg8mUtm5gdzQ - fetch-dump-syms: aOO-JbTIRByOSsLgrpLwKw - fetch-dxc-src: SSuBaeP_T2SlSbja6XrHrw - fetch-icecat-addons: eY43l8-fSnepoAWb3sGIbA - fetch-fix-stacks: FHZs1BC5RI-dWAC9eBFwzA - fetch-fxc2: a3fyQlqhSIy1WUkfaEPcwA - fetch-gcc-11.4.0: cTZ_OTu-RXqj1WRNKVai1Q - fetch-gcc-8.5.0: NUiq5fgmTi-c66ccwbjlWQ - fetch-gcc-9.5.0: KKKEdpaWQJSsd5qtcduVtQ - fetch-gmp-6.1.0: PP265G9URlmEV4Tz8ml1GQ - fetch-gn: PgcGz9AvQ1OpP4rj3yuVFg - fetch-gnumake: HpRGXmrFQi6M7hHEkK8Kow - fetch-grcov: CeGVZv3lTxeoqGPsp6uNNA - fetch-hfsplus-tools: aKMy4WODQ6uDRnupaaXY8Q - fetch-isl-0.16.1: bXfNaj6aS7m5giQEjc0YuA - fetch-jdk-8-linux64: VdDh9-fjTsuG8MJ2CqsEaA - fetch-ldid: PhvCa89nSoaHOQSG7cGP-A - fetch-libdmg-hfsplus: SnVm-7q-TISQJ4qtq6CbUQ - fetch-libtapi: ROnMd5m6QyyqNHQbSR7TUQ - fetch-libxml2: OSmIUM9dSJOdTm16sdxhjA - fetch-llvm-mingw: GfcnxQdTT6yRm7t1dSGAlw - fetch-macosx64-cmake: Lk9c02zsRvOzTh7ZDMT7WA - fetch-macosx64-ninja: GJXTEcJ3TBKMzH3VeV4iNg - fetch-makecab: DtE8ROvTQ7GFPDJfraMxsA - fetch-mingw-w64: DdcW5OyjSiWUCoyN_l9blw - fetch-mozilla-pdf.js: N7nX3fpSQuyIYJqhQbd-rg - fetch-mpc-1.0.3: aGsmIJ4dRI-WCNVUPcglQg - fetch-mpfr-3.1.4: KWesIGhCTUeKYPWkLu75vQ - fetch-msix-packaging: WTTHd-mETpqBgS71Q5G0lw - fetch-nasm-2.14.02: RmV-0rgJQmi1kyFwugzXzA - fetch-nasm-2.16.03: A7K13w6XQ32Yd5ByjHDpXg - fetch-nodejs-12-linux64: Yon7l1u_R7CII-t2cOffbg - fetch-nodejs-22-linux64-arm64: QMoVkSg5RQu_McShF-ASJA - fetch-nodejs-22-macosx64: Q6tS5m3wR82rSHqnWVphJg - fetch-nodejs-22-macosx64-arm64: ftIelx-6QaieL_synauVUQ - fetch-nodejs-22-source: Gl5piWAERuiq9FgbGzCpFA - fetch-nodejs-22-win32: UYNK7ijdSoeEbQy6uSMvQQ - fetch-nodejs-22-win64: V-SLQW8GSRaFRnt4ywcL3A - fetch-nsis-3.07: CPS0m6ljRIO_bH_TXfX1jg - fetch-nsis-3.07-win: fTUvbGzRTjKBT1BkzrDLEw - fetch-ort.jsep.wasm: Utobyfo6Qo6IY9Bm5T8C2Q - fetch-pkgconf: O1DtweCRREWpCcWxWDniSA - fetch-python-dbusmock-0.32.2: cXeNbNljRd-lO4a8CQATzA - fetch-rust-1.81.0: T8S_OdK5RiKjXFg1bcYEZw - fetch-rust-minidump: fYvmsS47RO69aMykxBBYow - fetch-rust-size: MB9XIF7fQF-tc9Gni4-O_w - fetch-sccache: ZiDZncZ3RYy34kfXomSvsw - fetch-sonatype-nexus: F9yxvqZjTAayrMBwsPZAeQ - fetch-translations.esen.lex: H_FbC1lLSMeWia2cxmNL8g - fetch-translations.esen.model: QHCrqg2LSZKG93snq9s5Xw - fetch-translations.esen.vocab: MLwEj92oQ8G8CByM-9LRbQ - fetch-translations.inference: B46Me3iMS2u_IwYlQTXk9Q - fetch-upx-3.95-win: dtB_tZumSUax0mmMNdxv7Q - fetch-uv: FlTNOcKKQxKtWwd-XONDgA - fetch-wasi-sdk: Gq5OC-ixSS2673o6-NeCfQ - fetch-wasi-sdk-11: Yvoa2dPNRqmI27JicB1tag - fetch-win64-ninja: VrDuxADhQgiugUMbBjIiAQ - fetch-winchecksec: Hjxg1tpFRCyyqM1pDVRWrQ - fetch-windows-rs: ZQ6ctHb-Qcm55C3X5KkMHw - fetch-wine: QlgCKCDcSzu_AnjJxdMOkw - fetch-wix-3.14.0: HpkuCv-nRsOxR3Cz8GwafQ - fetch-xar: bzjznAGSQHapfs6I_g4MGQ - fetch-xz-5.4.4: U2Cfrq1gSgSWoi1BOUHp2w - fetch-zlib-1.3.1: E7JkeNrAReKrjlRwyW4Ekg - fuzzing-grizzly-linux32-debug: dPnICSURQLq9GNCfwo5yfQ - fuzzing-grizzly-linux32-opt: O2cHKBUfTNiiw8MT4fHGkA - fuzzing-grizzly-linux64-debug: UlquLjjUQAmhlCy_i2Pr9A - fuzzing-grizzly-linux64-opt: DwMRY3lpTIGzyLRbOQ_52A - fuzzing-grizzly-linux64-tsan: MTywfwpJSZqft4fIJzKEIg - fuzzing-grizzly-osx-aarch64-debug: Pdr7HLtlT4W0t-iV69RllQ - fuzzing-grizzly-osx-aarch64-opt: e_lutKnKRIGkam6aG-ufPg - fuzzing-grizzly-osx-debug: e_atw2P8TxCc4qeH3ZMr7Q - fuzzing-grizzly-osx-opt: Qia4FnliQ7CPV1HY-9j_NQ - fuzzing-grizzly-windows64-opt: QLiDNH9VQsaToGyR4Y7PEg - generate-profile-linux-shippable/opt: cTO4zpUTTSGjRQSWouUXlQ - generate-profile-linux64-shippable/opt: MU40_Bh-SpaonWrH1rMZnQ - generate-profile-macosx64-aarch64-shippable/opt: T27MtDtLSp-7UM1RIhONjw - generate-profile-macosx64-shippable/opt: J_fCmu-JQ-W4kaPAnytKrg - generate-profile-win32-shippable/opt: MTbg0ZK9TCSTTYpNVeMIjA - generate-profile-win64-aarch64-shippable/opt: VfxmR51LQXia1qkC4RGCDA - generate-profile-win64-shippable/opt: a3Z8dCBzTYKi-Gj2ib4Zog - hazard-linux64-haz/debug: fowX-sg3Rqm-Tyucg3L7pw - instrumented-build-linux-shippable/opt: JV6BoHPKT46CPPS6UXU8YQ - instrumented-build-linux64-shippable/opt: PK3jAVlVTSO-dAkW85vb5g - instrumented-build-macosx64-aarch64-shippable/opt: XFD9mmFLQE65gyFxJu2e1Q - instrumented-build-macosx64-shippable/opt: VXzog711RUSpQtQLEhJI0g - instrumented-build-win32-shippable/opt: Mg0BlJXxTO2gWJnXZYrcJA - instrumented-build-win64-aarch64-shippable/opt: WQwrmfbMSjOnaqMPh9ZB5A - instrumented-build-win64-shippable/opt: ZH8N_0WqSr6k_atvB7BlmA - mar-signing-l10n-ach-linux-shippable/opt: UUAk-2aKSzGSQhwRGEFuTA - mar-signing-l10n-ach-linux64-aarch64-shippable/opt: cqUmzNI6RCCgZo3h3E51Sw - mar-signing-l10n-ach-linux64-shippable/opt: Zo7z_2LaQPyTpvUHw35rgQ - mar-signing-l10n-ach-macosx64-shippable/opt: YaeYWC1ySiC2oqpT_-zcPQ - mar-signing-l10n-ach-win32-shippable/opt: ZWl18-xdTNaPfm2usoguEw - mar-signing-l10n-ach-win64-aarch64-shippable/opt: O-z1-fMSSh-bVw7UhqrrOQ - mar-signing-l10n-ach-win64-shippable/opt: bS7o85pKSeWWpI1PdwB3sg - mar-signing-l10n-af-linux-shippable/opt: EkpWbOAuR7-CggYa6kLLAQ - mar-signing-l10n-af-linux64-aarch64-shippable/opt: fRZdhbVvTxCTGpNC6eR2mw - mar-signing-l10n-af-linux64-shippable/opt: ZsRgSsfCTG6UuKUzcbXTsw - mar-signing-l10n-af-macosx64-shippable/opt: alepR_VuQbqOIVIKUCsRdg - mar-signing-l10n-af-win32-shippable/opt: VZAJC9V5TBycS8B2eRbzMQ - mar-signing-l10n-af-win64-aarch64-shippable/opt: ZJ8YEIp_QG2PwNovwnhY6A - mar-signing-l10n-af-win64-shippable/opt: N5knHLiPTCmN2sSt1lFIQg - mar-signing-l10n-an-linux-shippable/opt: L-9jj2CVRM6ZcIjnYFLCaA - mar-signing-l10n-an-linux64-aarch64-shippable/opt: XcFdrGQHRuiZ7j983RyETA - mar-signing-l10n-an-linux64-shippable/opt: Uit8dnjlQkCmkjkij_N_iw - mar-signing-l10n-an-macosx64-shippable/opt: WtYVMWyJQuigEWK6bhvkKg - mar-signing-l10n-an-win32-shippable/opt: M5kA8kfFSPSm5s99SXF38g - mar-signing-l10n-an-win64-aarch64-shippable/opt: Y4sllYKGTCmaXUnHupmfuQ - mar-signing-l10n-an-win64-shippable/opt: eaWpqnRiTFWALERTIJrRNw - mar-signing-l10n-ar-linux-shippable/opt: OZRlwWp6Qli3pc9Rw2fddw - mar-signing-l10n-ar-linux64-aarch64-shippable/opt: fogtuLdNSUGNtTlOMWAFYg - mar-signing-l10n-ar-linux64-shippable/opt: cz8-yZxBRwyxkQE66HUHTg - mar-signing-l10n-ar-macosx64-shippable/opt: fc6-uhnxRmCZJmVxQXX28g - mar-signing-l10n-ar-win32-shippable/opt: J27Ukq9hT-2quMcYL1H3pw - mar-signing-l10n-ar-win64-aarch64-shippable/opt: Uw7o0NxtQjKCeX6oliTGtw - mar-signing-l10n-ar-win64-shippable/opt: K9069GSwRSK37CuPJ57uuA - mar-signing-l10n-ast-linux-shippable/opt: Hm4aZVMPQXOV9ysh4QfeSQ - mar-signing-l10n-ast-linux64-aarch64-shippable/opt: fdDqrk60TfutZGsMLphziA - mar-signing-l10n-ast-linux64-shippable/opt: Uo5kiWRrSIStR-XaVoRU-g - mar-signing-l10n-ast-macosx64-shippable/opt: UZhT6R03S0WrF0QsBhyMCw - mar-signing-l10n-ast-win32-shippable/opt: b7bG5IqhRyiQkY9t6AlNYg - mar-signing-l10n-ast-win64-aarch64-shippable/opt: MVgVkIXTR2eHzKOwpVoKFg - mar-signing-l10n-ast-win64-shippable/opt: UI06m6u5Tied2UcWpVmxsQ - mar-signing-l10n-az-linux-shippable/opt: QXl1MBhOSBOzy7KogKNASg - mar-signing-l10n-az-linux64-aarch64-shippable/opt: CZqExy2PQtWTTA6Hb2qB5g - mar-signing-l10n-az-linux64-shippable/opt: HGl8G6OISjC8TKMzzFy-cw - mar-signing-l10n-az-macosx64-shippable/opt: aXS768N2SUyJ1H9z7oH8uQ - mar-signing-l10n-az-win32-shippable/opt: cavS12lNTW2gaN5OfBxU2Q - mar-signing-l10n-az-win64-aarch64-shippable/opt: JqYGLrnCTxCL-u0nuNkWDQ - mar-signing-l10n-az-win64-shippable/opt: VvJ7XvEgSba50nqbc_0qmQ - mar-signing-l10n-be-linux-shippable/opt: T6ywdMHGSce-ZYufAtPjRQ - mar-signing-l10n-be-linux64-aarch64-shippable/opt: eN-775Y3TROCmOia0HO0KA - mar-signing-l10n-be-linux64-shippable/opt: ak31_PJFSwqJ7_M4XRiwhg - mar-signing-l10n-be-macosx64-shippable/opt: KVMD0Q39QuSZE0asEdNjoA - mar-signing-l10n-be-win32-shippable/opt: XdoKTqIuQNCc6GXvjMMivw - mar-signing-l10n-be-win64-aarch64-shippable/opt: W_j0bv0JR6CxpoaUq2w8oQ - mar-signing-l10n-be-win64-shippable/opt: Watmq7MOTSWnYAPHSURDBA - mar-signing-l10n-bg-linux-shippable/opt: WYxMy6emRQmIADz4fMfQyA - mar-signing-l10n-bg-linux64-aarch64-shippable/opt: AyvehEA0RVKaxo1rmv55jA - mar-signing-l10n-bg-linux64-shippable/opt: dt4TgYLuRniCTp8NHe-_7A - mar-signing-l10n-bg-macosx64-shippable/opt: SbSrmUx-TM2Ru6Nml6qbQg - mar-signing-l10n-bg-win32-shippable/opt: CPyajFWgTqiFbRqArmjgEQ - mar-signing-l10n-bg-win64-aarch64-shippable/opt: LGEH3xoBSImU9tJdrmBCuw - mar-signing-l10n-bg-win64-shippable/opt: JFA5pAUsR5O563SnrR_XTQ - mar-signing-l10n-bn-linux-shippable/opt: LBeUcLiVQsC3NwRQMB4b0A - mar-signing-l10n-bn-linux64-aarch64-shippable/opt: cR68rV2qQimZAVCArMuTOQ - mar-signing-l10n-bn-linux64-shippable/opt: XzgPAlnWSDOBwD0xfv03hg - mar-signing-l10n-bn-macosx64-shippable/opt: EqoAnZnrQry-SQhZbC-1QQ - mar-signing-l10n-bn-win32-shippable/opt: akjyqUgCTYeUts0BHtX8YQ - mar-signing-l10n-bn-win64-aarch64-shippable/opt: Oir2Y6Z3Slmcq9jlTcSQeg - mar-signing-l10n-bn-win64-shippable/opt: b9mk9z0lTc650GxzWuBUvA - mar-signing-l10n-br-linux-shippable/opt: S_VhIUPJTeOSk80NZkwLAA - mar-signing-l10n-br-linux64-aarch64-shippable/opt: QwC_eVBpQS6KdXFegs324g - mar-signing-l10n-br-linux64-shippable/opt: BvyMsynURBWBYH4GqwS8gg - mar-signing-l10n-br-macosx64-shippable/opt: Mue15RTnSKyPXk52QR983w - mar-signing-l10n-br-win32-shippable/opt: cRch175CTvWAt1ZAG8ajLQ - mar-signing-l10n-br-win64-aarch64-shippable/opt: apPp75XjTAyCUQbbszot4g - mar-signing-l10n-br-win64-shippable/opt: Ls_-QtR6TV20YDk40yGoSg - mar-signing-l10n-bs-linux-shippable/opt: c_1WyUYrSDq_wMnuLP0fBg - mar-signing-l10n-bs-linux64-aarch64-shippable/opt: dYhDMReKQYSGBk6ZGws-zQ - mar-signing-l10n-bs-linux64-shippable/opt: VQW7d--VRFe9mmoXB4anFg - mar-signing-l10n-bs-macosx64-shippable/opt: ZrsBPXCGTUaOGJ2NoBxenQ - mar-signing-l10n-bs-win32-shippable/opt: IlX1TM6_RneaUUN_UJ7Zzw - mar-signing-l10n-bs-win64-aarch64-shippable/opt: Bl7Dr4zZSWqd7fMvHvu6TQ - mar-signing-l10n-bs-win64-shippable/opt: Zqk1qLJgQLe0aziWdks-VA - mar-signing-l10n-ca-linux-shippable/opt: GXdG974sRLanuinKL3ElGA - mar-signing-l10n-ca-linux64-aarch64-shippable/opt: GczRVMgmS_O_qCCMFkp9fg - mar-signing-l10n-ca-linux64-shippable/opt: Xg29VtgLRKCqjgLsNUy-Bw - mar-signing-l10n-ca-macosx64-shippable/opt: Fufc6R76SYKv640QRbh0Cw - mar-signing-l10n-ca-valencia-linux-shippable/opt: Onx2EGaDTgeuAdCt02Hikg - mar-signing-l10n-ca-valencia-linux64-aarch64-shippable/opt: G7fH6Hh8S9ieKPb1BWOTGw - mar-signing-l10n-ca-valencia-linux64-shippable/opt: MM55lYBkRW-rzUXPx5o0Eg - mar-signing-l10n-ca-valencia-macosx64-shippable/opt: YHNNPrDRQPa8cOS55Xdaxw - mar-signing-l10n-ca-valencia-win32-shippable/opt: MvJh47GlR4Osxgwtd1rABg - mar-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: EmvX2yenT8SRr3QWu42r_Q - mar-signing-l10n-ca-valencia-win64-shippable/opt: CqCo9b9zQsOSTJ_rgiw2dg - mar-signing-l10n-ca-win32-shippable/opt: FL6Xe_daQbaVFOyfNJQ2dw - mar-signing-l10n-ca-win64-aarch64-shippable/opt: TAaWyF3pQmu8b7vZAEC3GQ - mar-signing-l10n-ca-win64-shippable/opt: AATXF0oSTaGYBCMASGD92g - mar-signing-l10n-cak-linux-shippable/opt: VpPbY74oS3SucAiBxN2fYw - mar-signing-l10n-cak-linux64-aarch64-shippable/opt: Gqb32LunRi2Dpi9ZGIPcUA - mar-signing-l10n-cak-linux64-shippable/opt: Pqw65fESTt2QsMCHBTHSpw - mar-signing-l10n-cak-macosx64-shippable/opt: Yat5LM_TR4GDA0l5RHzMGg - mar-signing-l10n-cak-win32-shippable/opt: SHVzFCffRc2FZWWtFALDcA - mar-signing-l10n-cak-win64-aarch64-shippable/opt: CVAKk-biTFiH8sqLOjRFGA - mar-signing-l10n-cak-win64-shippable/opt: ds3h1AZIQZihOwInxEGAjQ - mar-signing-l10n-cs-linux-shippable/opt: HvRbz5hGTCqGxDWPL-0Pww - mar-signing-l10n-cs-linux64-aarch64-shippable/opt: KJAFN12uQEa8WSPCmG4ZBw - mar-signing-l10n-cs-linux64-shippable/opt: JqHc3BYoSZK7u3rp5rs3kw - mar-signing-l10n-cs-macosx64-shippable/opt: NUIMUK5_QbaXBhUBDyemog - mar-signing-l10n-cs-win32-shippable/opt: VTq0LU0WT12s6Xg7yca_qQ - mar-signing-l10n-cs-win64-aarch64-shippable/opt: Q3t8wDOGTISQ6wupqZmkJQ - mar-signing-l10n-cs-win64-shippable/opt: cs19ZL6CRmmNoTo5nuzSAA - mar-signing-l10n-cy-linux-shippable/opt: H2tHWs46RsG6RPALb_zzDw - mar-signing-l10n-cy-linux64-aarch64-shippable/opt: NG92BbzVRmCtbdRSZknQ3g - mar-signing-l10n-cy-linux64-shippable/opt: dJ8MRLdfS4KHypQL-H3Cng - mar-signing-l10n-cy-macosx64-shippable/opt: OKuRHPejRGKg9_wvQJfG4g - mar-signing-l10n-cy-win32-shippable/opt: YjzOqTXsSmaJ_xKmbg9Sqg - mar-signing-l10n-cy-win64-aarch64-shippable/opt: ddKkwL__SQ-EbMH2zhl4Bg - mar-signing-l10n-cy-win64-shippable/opt: K-RSk4fFRvO9Dor5nZrJiw - mar-signing-l10n-da-linux-shippable/opt: FUUt6rNlQJiUbmkH-nF9YQ - mar-signing-l10n-da-linux64-aarch64-shippable/opt: aW6OjLY6RUCGAXFkM5hDxg - mar-signing-l10n-da-linux64-shippable/opt: Xx3-MxdWS4aGLIk9iRh04w - mar-signing-l10n-da-macosx64-shippable/opt: WGRu4jlsQyGBXag6nG8NAA - mar-signing-l10n-da-win32-shippable/opt: Gf1r2LM3Qv22XKTimfPrHg - mar-signing-l10n-da-win64-aarch64-shippable/opt: KPZhbxm2Tv--ePGFNrRyFA - mar-signing-l10n-da-win64-shippable/opt: eQ-4BR3mQTaCFjML-NVbQg - mar-signing-l10n-de-linux-shippable/opt: L9Zvr27lSOSTqmAs3mS1cw - mar-signing-l10n-de-linux64-aarch64-shippable/opt: OW4MTALJRHy1-IyI5GtoSw - mar-signing-l10n-de-linux64-shippable/opt: dvFIrlh3Tae_Nb33VcOz6Q - mar-signing-l10n-de-macosx64-shippable/opt: WW33ZExvTQKGGC5n7p9wdQ - mar-signing-l10n-de-win32-shippable/opt: VlpPCjYbSnu7tRtfLVej6A - mar-signing-l10n-de-win64-aarch64-shippable/opt: UI7vTcieSbajzDw96sd1sg - mar-signing-l10n-de-win64-shippable/opt: DHwB9A-RSwGFvdK6RQYmCQ - mar-signing-l10n-dsb-linux-shippable/opt: Wo2ffAtFSjyOe5VHuz0zcA - mar-signing-l10n-dsb-linux64-aarch64-shippable/opt: E5zSxQmcTeSTcUl2mA8xLw - mar-signing-l10n-dsb-linux64-shippable/opt: MnPiu_njRA-jEJPNBEUFOQ - mar-signing-l10n-dsb-macosx64-shippable/opt: f1oLvyCSRNqRVDmzdbuD7A - mar-signing-l10n-dsb-win32-shippable/opt: NoUd_EjARZWK1ykZLeKaWw - mar-signing-l10n-dsb-win64-aarch64-shippable/opt: XzTPE9szR_6Mt9jOxsLEhA - mar-signing-l10n-dsb-win64-shippable/opt: YJ67m1w2QHaQ5ND74Uo6rg - mar-signing-l10n-el-linux-shippable/opt: E_pp1e7VR9qnAnf3CckaXQ - mar-signing-l10n-el-linux64-aarch64-shippable/opt: dGOfRbrbQP6P_KqMqZBcYQ - mar-signing-l10n-el-linux64-shippable/opt: VDLXRFmhQMKCipILIH27pg - mar-signing-l10n-el-macosx64-shippable/opt: ZNQOpF8VTmCIj3Btk4_Yng - mar-signing-l10n-el-win32-shippable/opt: Ke3aiyD5QL2Qnsj1xAmIxA - mar-signing-l10n-el-win64-aarch64-shippable/opt: cbylzn3fRqqzUEbKscPeOg - mar-signing-l10n-el-win64-shippable/opt: fZ4aOjiwQgWJLUr3ovTU5g - mar-signing-l10n-en-CA-linux-shippable/opt: DCnVJ8DlSCGqx9iUK8YtYQ - mar-signing-l10n-en-CA-linux64-aarch64-shippable/opt: be5qwiDpT7isrqtwz2LCJQ - mar-signing-l10n-en-CA-linux64-shippable/opt: N6bh6Xi2QxWSKw9Hl375yA - mar-signing-l10n-en-CA-macosx64-shippable/opt: K7tpoerCQsOfQW0HtFMYtQ - mar-signing-l10n-en-CA-win32-shippable/opt: cPOlvSEZRW6pcXUxu35Pew - mar-signing-l10n-en-CA-win64-aarch64-shippable/opt: Nd3eCVhAQG-tEQapGGN6hA - mar-signing-l10n-en-CA-win64-shippable/opt: VX5bdXLyQXGSf1y62oEl6A - mar-signing-l10n-en-GB-linux-shippable/opt: fRDXkYL6Qka1hAmCJwlhJQ - mar-signing-l10n-en-GB-linux64-aarch64-shippable/opt: C1aKZ3nuR4CS2acjACCM0w - mar-signing-l10n-en-GB-linux64-shippable/opt: fNOnkIfIRZOPulclehXJTw - mar-signing-l10n-en-GB-macosx64-shippable/opt: dfild_vPRk6Qpm-II5yOXQ - mar-signing-l10n-en-GB-win32-shippable/opt: B_NdJ3G5SFG9cUacViscjQ - mar-signing-l10n-en-GB-win64-aarch64-shippable/opt: R9Cfha2UT7O74vqJCVsLfg - mar-signing-l10n-en-GB-win64-shippable/opt: MFt8CMg0T4ipSsT0E9NObA - mar-signing-l10n-eo-linux-shippable/opt: UZgcxFvLQnip_lMJT5kDoQ - mar-signing-l10n-eo-linux64-aarch64-shippable/opt: Vnj2oN3tTiibQoWQYcB_OQ - mar-signing-l10n-eo-linux64-shippable/opt: ID4TpL_3T8mpDXhVbzKe-Q - mar-signing-l10n-eo-macosx64-shippable/opt: bmDofRpVTOmu9L-K_1FMTQ - mar-signing-l10n-eo-win32-shippable/opt: Yt6KFbHZTmCZU0PyMC-2dg - mar-signing-l10n-eo-win64-aarch64-shippable/opt: f3W-Cob4Tnu--zZX3klC0A - mar-signing-l10n-eo-win64-shippable/opt: daMIYnvnSoueWmMbztoPfQ - mar-signing-l10n-es-AR-linux-shippable/opt: cQGR2vnGSLq0QIn3CRlCEg - mar-signing-l10n-es-AR-linux64-aarch64-shippable/opt: ONwUdTpKS16_kMyjU7TvjA - mar-signing-l10n-es-AR-linux64-shippable/opt: LTmJBcxNQfSYieZQCEDD4A - mar-signing-l10n-es-AR-macosx64-shippable/opt: DzmBWQXUTmSeaiS0TbVeGg - mar-signing-l10n-es-AR-win32-shippable/opt: f1S3ExOvRHKoNL27JiJ3pA - mar-signing-l10n-es-AR-win64-aarch64-shippable/opt: LRUionsaS7eR6MhzuAAgog - mar-signing-l10n-es-AR-win64-shippable/opt: Lr3IOH6LRfu_UXrdx5Iygg - mar-signing-l10n-es-CL-linux-shippable/opt: U4Jq4AynRnWSApGuxs5x6g - mar-signing-l10n-es-CL-linux64-aarch64-shippable/opt: ZPAPRAUmSVmSRDSkH5ngWQ - mar-signing-l10n-es-CL-linux64-shippable/opt: UquqZPtXSqW9V7hYxukwQQ - mar-signing-l10n-es-CL-macosx64-shippable/opt: Y9BGTgvzTHeLEE692TC5IQ - mar-signing-l10n-es-CL-win32-shippable/opt: d62iEeyWTh6i4n8Fm_D1-Q - mar-signing-l10n-es-CL-win64-aarch64-shippable/opt: VSIMj7QSQH-XzeeqNi6rew - mar-signing-l10n-es-CL-win64-shippable/opt: Nk5tTTMwRYSU2LTTlMAW_w - mar-signing-l10n-es-ES-linux-shippable/opt: PYw-py6fTi63Ppblr3RdOg - mar-signing-l10n-es-ES-linux64-aarch64-shippable/opt: OhapL0tZSKGmSPfosi4nMw - mar-signing-l10n-es-ES-linux64-shippable/opt: XWQNd9wKS2-mXORrq6TMKQ - mar-signing-l10n-es-ES-macosx64-shippable/opt: JTcpxXahQBWdLbpaEU8APQ - mar-signing-l10n-es-ES-win32-shippable/opt: TZcd_ljbSmqitSW6tyLofg - mar-signing-l10n-es-ES-win64-aarch64-shippable/opt: PWL1oRXUScGX0RKgPSsYPw - mar-signing-l10n-es-ES-win64-shippable/opt: SPJmF2YpSguIfAZicD4sdg - mar-signing-l10n-es-MX-linux-shippable/opt: fgiBK6lkSpGnRXvGegG_tg - mar-signing-l10n-es-MX-linux64-aarch64-shippable/opt: A75oKd7MT8OGouxbO2t-Yg - mar-signing-l10n-es-MX-linux64-shippable/opt: QaqDC6urTZmZS86GvDntXQ - mar-signing-l10n-es-MX-macosx64-shippable/opt: cg6LoboaTZqAtwFP1-RhvQ - mar-signing-l10n-es-MX-win32-shippable/opt: NduGK4SOQlmrSV-R2s_FYQ - mar-signing-l10n-es-MX-win64-aarch64-shippable/opt: a1l8rkwtSaOqV0v4NuY3cg - mar-signing-l10n-es-MX-win64-shippable/opt: c18W15eiTeGJH4wa_U8s0w - mar-signing-l10n-et-linux-shippable/opt: SWZt_18cTpaeDbFBKoDV-A - mar-signing-l10n-et-linux64-aarch64-shippable/opt: KW_TLcqZT3CQD2V7FYbuPA - mar-signing-l10n-et-linux64-shippable/opt: eWWC9qb5QK2cjfYNTarB2g - mar-signing-l10n-et-macosx64-shippable/opt: Tl3B8gEgQ9uS-DUqRxvRmg - mar-signing-l10n-et-win32-shippable/opt: NO0GIAwlSvCQmbXk-OzRHA - mar-signing-l10n-et-win64-aarch64-shippable/opt: Fg4q7FQLTRCuzQngu1PFwQ - mar-signing-l10n-et-win64-shippable/opt: IAPRqdHLSamvPO0dUOsS2w - mar-signing-l10n-eu-linux-shippable/opt: R98dj1MASWCgqW6GNTqhpg - mar-signing-l10n-eu-linux64-aarch64-shippable/opt: Akpj4AkHRt-5YLZF8xKymQ - mar-signing-l10n-eu-linux64-shippable/opt: CfTmLoi5TnqsfpfP02V0yQ - mar-signing-l10n-eu-macosx64-shippable/opt: Hlnb03dfR5e4VyxHfrX0HQ - mar-signing-l10n-eu-win32-shippable/opt: CIGAUsUtSrqty2ar-8fbzg - mar-signing-l10n-eu-win64-aarch64-shippable/opt: fIuYphq7TtC5XyP7VBC6Wg - mar-signing-l10n-eu-win64-shippable/opt: NskWOZfsTYiqVrIhptDMJw - mar-signing-l10n-fa-linux-shippable/opt: L_Txjf-KT0ODd-E56O3jlQ - mar-signing-l10n-fa-linux64-aarch64-shippable/opt: GYTiKJiWQ1W-oylR6oEyGA - mar-signing-l10n-fa-linux64-shippable/opt: R8dt6_EESwOJMoExtYGzwA - mar-signing-l10n-fa-macosx64-shippable/opt: Kzt4t9xGSJmnhEgt6eg9TQ - mar-signing-l10n-fa-win32-shippable/opt: GttzifNsTsuEF9Rhwzq09A - mar-signing-l10n-fa-win64-aarch64-shippable/opt: G2i9s6JCRD-ZT5TCwOTo5A - mar-signing-l10n-fa-win64-shippable/opt: Hd0s2G_PR0yUu2u4451pXQ - mar-signing-l10n-ff-linux-shippable/opt: G91RLYK0R-KYjbkqBCvEpQ - mar-signing-l10n-ff-linux64-aarch64-shippable/opt: JCWl6gjpQKSwAvZti21G1w - mar-signing-l10n-ff-linux64-shippable/opt: RcvwcCJHTpay31qtxHAqSA - mar-signing-l10n-ff-macosx64-shippable/opt: C4gC99IqQOSaJPI3stOLbA - mar-signing-l10n-ff-win32-shippable/opt: Dgq8rwBnS9WvcKKVTdad_A - mar-signing-l10n-ff-win64-aarch64-shippable/opt: IHoALUGSQFKIbEB_Hv9ohw - mar-signing-l10n-ff-win64-shippable/opt: RuhXkOCpQPidva9vULz2fA - mar-signing-l10n-fi-linux-shippable/opt: XGD5N3FcRSOwoK2QCP_O6g - mar-signing-l10n-fi-linux64-aarch64-shippable/opt: R3Jy4CPhQzGK8M2oaE0grA - mar-signing-l10n-fi-linux64-shippable/opt: aLHdYtQUTKy-fJ8GyfDtTQ - mar-signing-l10n-fi-macosx64-shippable/opt: NVSLjGkuRzGm24-_FIG28A - mar-signing-l10n-fi-win32-shippable/opt: PYPfy1rkQcalmezoIqfnhQ - mar-signing-l10n-fi-win64-aarch64-shippable/opt: Pixk2OsmSzq1sBbmLVNwsA - mar-signing-l10n-fi-win64-shippable/opt: ax1OlgJGQl6jTPNNcQc_yg - mar-signing-l10n-fr-linux-shippable/opt: AMwAXOD6TF6M2l3BUNISoQ - mar-signing-l10n-fr-linux64-aarch64-shippable/opt: fYxW7IdYS7quke0_Ow46rg - mar-signing-l10n-fr-linux64-shippable/opt: LVLmlErVQy6gDxLKG7Xf0g - mar-signing-l10n-fr-macosx64-shippable/opt: Lbp6-kWaQsmTa1duQkzRXA - mar-signing-l10n-fr-win32-shippable/opt: UesO9-zBSa6d-7zB7Ixb0A - mar-signing-l10n-fr-win64-aarch64-shippable/opt: ayWUanILRauTpvlf7BLFoA - mar-signing-l10n-fr-win64-shippable/opt: BpXiHClORbi_l38nslXD_A - mar-signing-l10n-fur-linux-shippable/opt: fDfyuJaJQVqgTiNzRKbv0Q - mar-signing-l10n-fur-linux64-aarch64-shippable/opt: PZLQVqIiT5yoCTM4-2QdNg - mar-signing-l10n-fur-linux64-shippable/opt: Qb3SITLvTXajLm3MgDaovA - mar-signing-l10n-fur-macosx64-shippable/opt: AbUkqn2CSwi7jmkOMQaKYA - mar-signing-l10n-fur-win32-shippable/opt: VShA23HdSzeilRLJqR7VOQ - mar-signing-l10n-fur-win64-aarch64-shippable/opt: DzamCbuiTvq-UMoj3535OA - mar-signing-l10n-fur-win64-shippable/opt: NA1lxcGETS2DwJ2tBglwbw - mar-signing-l10n-fy-NL-linux-shippable/opt: KH0-Y05bShOk3XhtA4KOtw - mar-signing-l10n-fy-NL-linux64-aarch64-shippable/opt: NdeofKBzRRe9IV0l3uXQwg - mar-signing-l10n-fy-NL-linux64-shippable/opt: ZNpsc1XAQMaDDrJg7IR8Cg - mar-signing-l10n-fy-NL-macosx64-shippable/opt: WVl0TsOLSPqSVmJk_OE0rA - mar-signing-l10n-fy-NL-win32-shippable/opt: SKHHvOgSSLqLsE8yTGF1qQ - mar-signing-l10n-fy-NL-win64-aarch64-shippable/opt: Un2JhFrRQpKgDKhkm37t9A - mar-signing-l10n-fy-NL-win64-shippable/opt: I92fUWI3SBGN9aPLTCP-7w - mar-signing-l10n-ga-IE-linux-shippable/opt: ENZH5gBSQEq0Eh6ZrAkqYA - mar-signing-l10n-ga-IE-linux64-aarch64-shippable/opt: QR50jSPFRhGmhMxgyeVsnQ - mar-signing-l10n-ga-IE-linux64-shippable/opt: UBFOKG58SAK49WpqZWFzRw - mar-signing-l10n-ga-IE-macosx64-shippable/opt: LVWZJotoQ9uxah3AtV4RDg - mar-signing-l10n-ga-IE-win32-shippable/opt: NISrCmCsT5WrQFKkTFnRoA - mar-signing-l10n-ga-IE-win64-aarch64-shippable/opt: Wc9WZvCFRe2jgIFCKtsOVw - mar-signing-l10n-ga-IE-win64-shippable/opt: fZvRnIBXTX2BdvytHSDrfQ - mar-signing-l10n-gd-linux-shippable/opt: FU1WRGFnTVObOZ-w2eQd1Q - mar-signing-l10n-gd-linux64-aarch64-shippable/opt: KyKtZz7ZQVao1Q4ctQz6ag - mar-signing-l10n-gd-linux64-shippable/opt: QoLF10i_QXuG2kYaw8c0Cg - mar-signing-l10n-gd-macosx64-shippable/opt: dsd7VzhgSEulGISTtJ-iCQ - mar-signing-l10n-gd-win32-shippable/opt: cYrCBHkDTJazgnGyejOUgA - mar-signing-l10n-gd-win64-aarch64-shippable/opt: aui1KkyZTqqJP0ifPWDOjw - mar-signing-l10n-gd-win64-shippable/opt: Uzz1GMfLTsCnuol4yD8y0w - mar-signing-l10n-gl-linux-shippable/opt: LTCzc-L0Qy2JSFumtPFL-w - mar-signing-l10n-gl-linux64-aarch64-shippable/opt: cCVrWm7SSx6izcESaDOXRA - mar-signing-l10n-gl-linux64-shippable/opt: bGU4OZKVToiC6Kk9AsO_nw - mar-signing-l10n-gl-macosx64-shippable/opt: cNX3K2U_Q0qMOzxbqkB_Qg - mar-signing-l10n-gl-win32-shippable/opt: XryniHolTAS_Pb0O4X8lTA - mar-signing-l10n-gl-win64-aarch64-shippable/opt: Bb7UoEjfREWwm_4dsXoB1g - mar-signing-l10n-gl-win64-shippable/opt: bPs-glKsTwKT299Db8scFg - mar-signing-l10n-gn-linux-shippable/opt: C6VuWh6KQLWzj5_Nz9qv2Q - mar-signing-l10n-gn-linux64-aarch64-shippable/opt: Bn9EIxFrTvy4hfd-iLXZjg - mar-signing-l10n-gn-linux64-shippable/opt: JtoosAWsQumQIuanPGiPNQ - mar-signing-l10n-gn-macosx64-shippable/opt: ICpAnSvtTHuJ6fNueLWlfA - mar-signing-l10n-gn-win32-shippable/opt: Vg38E0IATeSzS6iIGkyXxg - mar-signing-l10n-gn-win64-aarch64-shippable/opt: RQG8wHOhSnOjfxk_LmuveQ - mar-signing-l10n-gn-win64-shippable/opt: S0ZDrN-tRc2wAIROvrzxhA - mar-signing-l10n-gu-IN-linux-shippable/opt: ZpVpDVU9R-OoOxuZwfb6tg - mar-signing-l10n-gu-IN-linux64-aarch64-shippable/opt: Fy30gvZNRYyK44Bp1J0MQQ - mar-signing-l10n-gu-IN-linux64-shippable/opt: WiElbeaRQtiD-jTmuktX0g - mar-signing-l10n-gu-IN-macosx64-shippable/opt: TDTKx7BSQL6O10eM2DSChw - mar-signing-l10n-gu-IN-win32-shippable/opt: aeMngYFRSB66pXirwulReQ - mar-signing-l10n-gu-IN-win64-aarch64-shippable/opt: fRK542AkRGmF4o7f7xdH2Q - mar-signing-l10n-gu-IN-win64-shippable/opt: GF6Z7lXVTQCWy5CN1EvZLA - mar-signing-l10n-he-linux-shippable/opt: VoZ8bnIeSw2Qhm4OxLN0Ng - mar-signing-l10n-he-linux64-aarch64-shippable/opt: cqlWLsYvRkSeBzZJqVgGlg - mar-signing-l10n-he-linux64-shippable/opt: belZwkZTR9ugtvvgDSeqbA - mar-signing-l10n-he-macosx64-shippable/opt: B2-37aE4QSaCEIjxlEEcrg - mar-signing-l10n-he-win32-shippable/opt: Fkpbb4iKRSO_8ZiJy5BrEg - mar-signing-l10n-he-win64-aarch64-shippable/opt: QQCBKs99Rq6uVcz8XnJrbA - mar-signing-l10n-he-win64-shippable/opt: do850-rfQKOxgUJgvzahtg - mar-signing-l10n-hi-IN-linux-shippable/opt: eJOgj7aKQ7WCE6fAus5M8A - mar-signing-l10n-hi-IN-linux64-aarch64-shippable/opt: VhC8y7udTae5yb7tQWdsxA - mar-signing-l10n-hi-IN-linux64-shippable/opt: Rt4sT94FTd6tiiIqFqbO1Q - mar-signing-l10n-hi-IN-macosx64-shippable/opt: R8Ql1FWiQ8yr7DAoN91SOA - mar-signing-l10n-hi-IN-win32-shippable/opt: Od5BuOHUSMOnLPdTFnOvoA - mar-signing-l10n-hi-IN-win64-aarch64-shippable/opt: dAUPWpbaQrCkgpMMOmF11Q - mar-signing-l10n-hi-IN-win64-shippable/opt: QVDSw5r5RdmTrB9tLAfYeA - mar-signing-l10n-hr-linux-shippable/opt: LUWwv1A6Rh2zql10UfZKIA - mar-signing-l10n-hr-linux64-aarch64-shippable/opt: PMJJCgaMTvqSXPcrl1nCSw - mar-signing-l10n-hr-linux64-shippable/opt: IfRlwDohTYmyW1CpKmsenw - mar-signing-l10n-hr-macosx64-shippable/opt: FJAndf7MTZW6Y1pex4fe5w - mar-signing-l10n-hr-win32-shippable/opt: LZ6Nom4kS2eIzWB2T_h0Pg - mar-signing-l10n-hr-win64-aarch64-shippable/opt: es8B06j1QCmyZHjoeofIVg - mar-signing-l10n-hr-win64-shippable/opt: CC1C68kXQk-eQ9RbGZHaHQ - mar-signing-l10n-hsb-linux-shippable/opt: I0Ab7p-oSYC94QRUatyDpQ - mar-signing-l10n-hsb-linux64-aarch64-shippable/opt: RQAt3JgMRFGZQMCAw_lUFQ - mar-signing-l10n-hsb-linux64-shippable/opt: JNsXd62DTjqLR99VAEwQZA - mar-signing-l10n-hsb-macosx64-shippable/opt: VF-blS9MQv2wwM0JHLWXcA - mar-signing-l10n-hsb-win32-shippable/opt: NKZDoDaIQNCUlS7JahTlpQ - mar-signing-l10n-hsb-win64-aarch64-shippable/opt: ICv03DpSTPiI7NNuKLjhGQ - mar-signing-l10n-hsb-win64-shippable/opt: YdrAuX5nTp-LAjoqAmdTOw - mar-signing-l10n-hu-linux-shippable/opt: ed1Fej2hSkKpHu8tvhxPHw - mar-signing-l10n-hu-linux64-aarch64-shippable/opt: br52lUd9SX6Z_5dLZ0DFwQ - mar-signing-l10n-hu-linux64-shippable/opt: RstkwLUKQEK1MMUjWnKwpw - mar-signing-l10n-hu-macosx64-shippable/opt: RcftqDjVQcGIryLifMbssw - mar-signing-l10n-hu-win32-shippable/opt: XoqB-h5lSdK7o7a9dyO8xg - mar-signing-l10n-hu-win64-aarch64-shippable/opt: PbbSFfgLSnqP4DTvyeVv7A - mar-signing-l10n-hu-win64-shippable/opt: JaOpHlJ4ToO3W_uU-SRZFQ - mar-signing-l10n-hy-AM-linux-shippable/opt: LbcjvwoaRMWUp3g9abY-tA - mar-signing-l10n-hy-AM-linux64-aarch64-shippable/opt: T1_C0Nq4T0ecgMnvbqWtSw - mar-signing-l10n-hy-AM-linux64-shippable/opt: YziQ6CaOR_GIb1ScOFnfIg - mar-signing-l10n-hy-AM-macosx64-shippable/opt: Q31ETRP5RCWyDx2AYov15Q - mar-signing-l10n-hy-AM-win32-shippable/opt: NMwt9YwoRFiwSX-iJkRJRQ - mar-signing-l10n-hy-AM-win64-aarch64-shippable/opt: KvDrGaHvT222YPHjvG50CQ - mar-signing-l10n-hy-AM-win64-shippable/opt: HJpP91XVTsqXQ-H3WjnLkg - mar-signing-l10n-ia-linux-shippable/opt: CZTdCB0lQRaOezMiRNu0Vw - mar-signing-l10n-ia-linux64-aarch64-shippable/opt: XeF_Gp5MQS-Q2ygmhyMhsg - mar-signing-l10n-ia-linux64-shippable/opt: dN80weCLTkeMp978lolPIw - mar-signing-l10n-ia-macosx64-shippable/opt: MTJRancsQx2FKjYmrT6E_Q - mar-signing-l10n-ia-win32-shippable/opt: ByNKNcqqQBW48ab6PEd-nw - mar-signing-l10n-ia-win64-aarch64-shippable/opt: TiHqCZqiQxSpnd_Oewi06g - mar-signing-l10n-ia-win64-shippable/opt: DdaFhV3hTESDJt1PzKBsvg - mar-signing-l10n-id-linux-shippable/opt: JGFCbfEHSN25ttq5D0su5Q - mar-signing-l10n-id-linux64-aarch64-shippable/opt: bcjgQA0XTdm7u8ChyoJNbw - mar-signing-l10n-id-linux64-shippable/opt: HFzvc5n_TyOyUw6Lt95X6w - mar-signing-l10n-id-macosx64-shippable/opt: CoFT0t6oT8erqw9RPxbx9g - mar-signing-l10n-id-win32-shippable/opt: E5YFG9ugRneQ561yL7YhMQ - mar-signing-l10n-id-win64-aarch64-shippable/opt: Aevz7HAIQYivn_IYbycEnA - mar-signing-l10n-id-win64-shippable/opt: V8rfbKp0QkGp6yDKkMbgzQ - mar-signing-l10n-is-linux-shippable/opt: fKFiGhIlR7aic9aAz923-g - mar-signing-l10n-is-linux64-aarch64-shippable/opt: QOkgM-nGRKOVZuaMwqFxPg - mar-signing-l10n-is-linux64-shippable/opt: GdZa_PDbRKS6mkp_AcUXDA - mar-signing-l10n-is-macosx64-shippable/opt: HYUk_xr7QTGCYygo7aXdwg - mar-signing-l10n-is-win32-shippable/opt: Rs5EUl2QTt-98GSxpT7Eow - mar-signing-l10n-is-win64-aarch64-shippable/opt: cNqZyNRTSrSdzKQjvW0zyA - mar-signing-l10n-is-win64-shippable/opt: EnjtOfXORiKa5TiQDxr_CA - mar-signing-l10n-it-linux-shippable/opt: QQ3CV6lKQMeENtL-mDRK7g - mar-signing-l10n-it-linux64-aarch64-shippable/opt: fhmzatM6S7WHU_q5m-iMbw - mar-signing-l10n-it-linux64-shippable/opt: TCMXS9u5R4u5JTlbIaD_QA - mar-signing-l10n-it-macosx64-shippable/opt: A9PFArFFSTmt1TJvQ7pNmw - mar-signing-l10n-it-win32-shippable/opt: LTRQ8WeMS5uFko8LdNu3bw - mar-signing-l10n-it-win64-aarch64-shippable/opt: Hx-8WKCRR_SjpJ-yNyTs7g - mar-signing-l10n-it-win64-shippable/opt: GOjjbKFtS_CNeliwJda0vg - mar-signing-l10n-ja-JP-mac-macosx64-shippable/opt: CDcjt1A-RS6qor1rT_cT6Q - mar-signing-l10n-ja-linux-shippable/opt: Kj2uwEDSQVi1ERzUiSLD6g - mar-signing-l10n-ja-linux64-aarch64-shippable/opt: GXaACCB8QC687t62wQNDng - mar-signing-l10n-ja-linux64-shippable/opt: Zvy3ZovVTrqOjtCrPxy4ag - mar-signing-l10n-ja-win32-shippable/opt: d9YnnxVsQGaDow-OqEhggw - mar-signing-l10n-ja-win64-aarch64-shippable/opt: AdU6GjyNQOqWmeHW2Gu9bw - mar-signing-l10n-ja-win64-shippable/opt: Q-wy88qtQH-6rqZDSCV70A - mar-signing-l10n-ka-linux-shippable/opt: ODLYlthXREez78JdjwlV-A - mar-signing-l10n-ka-linux64-aarch64-shippable/opt: ePU9-HYsQj6wKX5B9Q8LFg - mar-signing-l10n-ka-linux64-shippable/opt: PwAMJVDAQN6KhBT8bWjWEQ - mar-signing-l10n-ka-macosx64-shippable/opt: NJs-jJYBTjeV35URwi3f3A - mar-signing-l10n-ka-win32-shippable/opt: LljlQyCxTW-yTQpDgPGLDg - mar-signing-l10n-ka-win64-aarch64-shippable/opt: LO9bE55fRmS8E8J3YPHOdQ - mar-signing-l10n-ka-win64-shippable/opt: b527S2TTTyKwG_Bvgwj3BA - mar-signing-l10n-kab-linux-shippable/opt: JgP2eAM4SaW9B66o45V9QA - mar-signing-l10n-kab-linux64-aarch64-shippable/opt: L11EH2FpT2CFiIOp93T2ug - mar-signing-l10n-kab-linux64-shippable/opt: NVfJdWnJQy-MvqHQiADRnw - mar-signing-l10n-kab-macosx64-shippable/opt: Bq5BjBCFQQGVw3WMoZQ9cg - mar-signing-l10n-kab-win32-shippable/opt: N40SIXk6TpS188pjqvlADQ - mar-signing-l10n-kab-win64-aarch64-shippable/opt: GNqT_-8SRNOAQDC9GLGyYw - mar-signing-l10n-kab-win64-shippable/opt: FSegUADHR9izsjijFf_IOg - mar-signing-l10n-kk-linux-shippable/opt: eHhvqXPESSK7GOsZ0gu5Lw - mar-signing-l10n-kk-linux64-aarch64-shippable/opt: Mk43gMefQ6-cNUt8hYirvQ - mar-signing-l10n-kk-linux64-shippable/opt: Aa84Ee2DSDSwoZZ9b496Tg - mar-signing-l10n-kk-macosx64-shippable/opt: MK-ASe61TESbjbk8RxwBog - mar-signing-l10n-kk-win32-shippable/opt: OqpvBKgsQxadFe-vViJ9Bg - mar-signing-l10n-kk-win64-aarch64-shippable/opt: Su8Eo9-TQ8qbOxQLhw6pXw - mar-signing-l10n-kk-win64-shippable/opt: BPwD1brxSieOoMz9QBF6_g - mar-signing-l10n-km-linux-shippable/opt: H8rKrchVR9Ozwc6VhGtmIQ - mar-signing-l10n-km-linux64-aarch64-shippable/opt: JLAxxIsRSoWvn8tCZYQdtw - mar-signing-l10n-km-linux64-shippable/opt: fk3BXM2MTay0on4S6tlwCw - mar-signing-l10n-km-macosx64-shippable/opt: cksuSqHuSnC2GYUEoT-n3w - mar-signing-l10n-km-win32-shippable/opt: OMLnbUYBR36k7sQlxaz90w - mar-signing-l10n-km-win64-aarch64-shippable/opt: XDr5Xp_dTQyrmKLpSS7rIA - mar-signing-l10n-km-win64-shippable/opt: VUndoc9STLusbgtqBtF-hw - mar-signing-l10n-kn-linux-shippable/opt: Vi2O-a1GQC-Md2V6lQBGkg - mar-signing-l10n-kn-linux64-aarch64-shippable/opt: dg0BCzFCRviE1KObPH8H1w - mar-signing-l10n-kn-linux64-shippable/opt: PHAcbV8RQ4eNmyxTzoOMPA - mar-signing-l10n-kn-macosx64-shippable/opt: RVzvgwWlTmCjMwS-csm-jg - mar-signing-l10n-kn-win32-shippable/opt: V8W9V1WcRH6mhLgKLAl1ag - mar-signing-l10n-kn-win64-aarch64-shippable/opt: SCmEGBW0TqGziK77Pm9_jg - mar-signing-l10n-kn-win64-shippable/opt: AqqJmVvgRC2BEZjYno9kjw - mar-signing-l10n-ko-linux-shippable/opt: Ai_dSWmYQ0qoTitV2Yleuw - mar-signing-l10n-ko-linux64-aarch64-shippable/opt: AoKnOIp8QRKVVAtt0Z-NFQ - mar-signing-l10n-ko-linux64-shippable/opt: cOGKfIi3Qti6V2lRJhyjbA - mar-signing-l10n-ko-macosx64-shippable/opt: SrTM6aPoQ-KO38akCIZZ5w - mar-signing-l10n-ko-win32-shippable/opt: G5jwbdCPTam0F248mv3Oug - mar-signing-l10n-ko-win64-aarch64-shippable/opt: US3w1hvzQeqiYcdAYyqrpQ - mar-signing-l10n-ko-win64-shippable/opt: fzhKIIrhRF-cHWYCAB6krw - mar-signing-l10n-lij-linux-shippable/opt: XXeEGqtVSdWvql9GyHp67Q - mar-signing-l10n-lij-linux64-aarch64-shippable/opt: B3l1_EODRRuId8nLJnbQdQ - mar-signing-l10n-lij-linux64-shippable/opt: Xjp7uGJyTF6p1mRUR_pauQ - mar-signing-l10n-lij-macosx64-shippable/opt: OGPny-IKRM-yNc5Ne-c51w - mar-signing-l10n-lij-win32-shippable/opt: OK3Kbh8bT2OnchTnMd883Q - mar-signing-l10n-lij-win64-aarch64-shippable/opt: diIRCM4nTre5cyyLd6yByQ - mar-signing-l10n-lij-win64-shippable/opt: R_wQP2QVST-enOC86XNJ8g - mar-signing-l10n-lt-linux-shippable/opt: AS9MfRjNTPiFnzysXUqgDQ - mar-signing-l10n-lt-linux64-aarch64-shippable/opt: MwybZT9hRqe0G4ppQKNb_Q - mar-signing-l10n-lt-linux64-shippable/opt: JPDPE4DpQye6Im6SKD9uaA - mar-signing-l10n-lt-macosx64-shippable/opt: AaylNVifQeqknfnVZpVwHA - mar-signing-l10n-lt-win32-shippable/opt: acvoM2a1QIyPkf0KJkI0FQ - mar-signing-l10n-lt-win64-aarch64-shippable/opt: PAQZR9XXSUy9hMz202fWHA - mar-signing-l10n-lt-win64-shippable/opt: JdjnJ0iFQIyx1yUKt4VJfg - mar-signing-l10n-lv-linux-shippable/opt: PJKRg3zhT4uZK8JFWPRZIA - mar-signing-l10n-lv-linux64-aarch64-shippable/opt: ZLZ3j5c5QAK3fCL15mmZAw - mar-signing-l10n-lv-linux64-shippable/opt: c8IMsmAGQVW5EVNlrC1VXA - mar-signing-l10n-lv-macosx64-shippable/opt: WuLNUBDgSFCmAO8ui7Mjww - mar-signing-l10n-lv-win32-shippable/opt: T-WMGMxbQcuRWtJ9dJ-Abg - mar-signing-l10n-lv-win64-aarch64-shippable/opt: b5CL1vWKQUGi3uA_L6mgIw - mar-signing-l10n-lv-win64-shippable/opt: H4ZeKYLCSfiEg2I5BDVzsg - mar-signing-l10n-mk-linux-shippable/opt: M_6e27xXTz-6sTx_ehmstw - mar-signing-l10n-mk-linux64-aarch64-shippable/opt: FKj3tI34QuWALQZlgFbmsQ - mar-signing-l10n-mk-linux64-shippable/opt: L50rq6s6QnmzI82H9nIiZQ - mar-signing-l10n-mk-macosx64-shippable/opt: eByXDNDnR1Olvbo_yoXa-w - mar-signing-l10n-mk-win32-shippable/opt: aqdW7K0MQraCGT32KJOkWw - mar-signing-l10n-mk-win64-aarch64-shippable/opt: IR-Lot-tRM-NReq-E0EUhA - mar-signing-l10n-mk-win64-shippable/opt: fXNdH5ZqTGCr9QHloP1c3Q - mar-signing-l10n-mr-linux-shippable/opt: ewFWGEXaT6iVmBLRQ7Rpmg - mar-signing-l10n-mr-linux64-aarch64-shippable/opt: Tc6TJOP0Q9OxoIdB9fFU5w - mar-signing-l10n-mr-linux64-shippable/opt: JeLPxoXcS0e8LFh6c1i4Bw - mar-signing-l10n-mr-macosx64-shippable/opt: Qp9hOMNvToyzwxNT_ydM-g - mar-signing-l10n-mr-win32-shippable/opt: XMPDJl4QQs6Vfp4tXufZkw - mar-signing-l10n-mr-win64-aarch64-shippable/opt: EalVZK6USVGLbv2pdzS7jQ - mar-signing-l10n-mr-win64-shippable/opt: ewbtRzyKSFmwuC3fbZ3Urw - mar-signing-l10n-ms-linux-shippable/opt: Kh0sTTViT-eYcqsGyYCRCg - mar-signing-l10n-ms-linux64-aarch64-shippable/opt: XozxEDQATRq9djVWEVGO0Q - mar-signing-l10n-ms-linux64-shippable/opt: Tmk7KIo7QTOMcpI-JwmK4w - mar-signing-l10n-ms-macosx64-shippable/opt: dHACFELXRWWZNa8asKj8XQ - mar-signing-l10n-ms-win32-shippable/opt: a-GAMZqbTJGNN7N8kKtmRA - mar-signing-l10n-ms-win64-aarch64-shippable/opt: W3EoTa-uRmWrdm4mx-dibA - mar-signing-l10n-ms-win64-shippable/opt: YHtUN-poRBylR66Al9NG8g - mar-signing-l10n-my-linux-shippable/opt: EutgpuoCQHihsFpLY_VyFQ - mar-signing-l10n-my-linux64-aarch64-shippable/opt: R9QF3eKrQsWncdbgij77iQ - mar-signing-l10n-my-linux64-shippable/opt: elHIEfU0SHS6xyXgZ0eWcQ - mar-signing-l10n-my-macosx64-shippable/opt: MDcIIHMtT4GglfJWsHcExQ - mar-signing-l10n-my-win32-shippable/opt: HuWbxnV2RCOrK8a5jUtdfA - mar-signing-l10n-my-win64-aarch64-shippable/opt: D92WzBJJRbWkPBVc5Nhl7A - mar-signing-l10n-my-win64-shippable/opt: TLtZnsSpQ0ujDQXIK24FOA - mar-signing-l10n-nb-NO-linux-shippable/opt: YD3ZXNhxRwCJ_a2wHwLm6w - mar-signing-l10n-nb-NO-linux64-aarch64-shippable/opt: CcW5eKSSS7STwCNa7r7ZkQ - mar-signing-l10n-nb-NO-linux64-shippable/opt: S5bLkTuuQMCTdNsa9qVApw - mar-signing-l10n-nb-NO-macosx64-shippable/opt: C2YeI4bzRV6XlLXeDFBexQ - mar-signing-l10n-nb-NO-win32-shippable/opt: YE47Y4BSTgWPR3jOLl48fQ - mar-signing-l10n-nb-NO-win64-aarch64-shippable/opt: GjaHu3UjSJKc4dUsbIn5TA - mar-signing-l10n-nb-NO-win64-shippable/opt: Amq3dshIScqNgODXBP57Dg - mar-signing-l10n-ne-NP-linux-shippable/opt: DuxrxbBZQdCj2d_uHlHOgQ - mar-signing-l10n-ne-NP-linux64-aarch64-shippable/opt: EQXT-pzbTb-Sa22c-Ei0zw - mar-signing-l10n-ne-NP-linux64-shippable/opt: VsXs8jQWTdWbdDVW904-bg - mar-signing-l10n-ne-NP-macosx64-shippable/opt: ar4Jn4CKRECL3dy_ctxp4Q - mar-signing-l10n-ne-NP-win32-shippable/opt: WP4UuWllTwCHe5vtL8MXvw - mar-signing-l10n-ne-NP-win64-aarch64-shippable/opt: MnZZVD_dRomzvcgCQ8jhqQ - mar-signing-l10n-ne-NP-win64-shippable/opt: cjz1a-AaRmWZFi2fU9UVCw - mar-signing-l10n-nl-linux-shippable/opt: eUiSaVPvS0GswGEoXY4vrA - mar-signing-l10n-nl-linux64-aarch64-shippable/opt: LnR55sPETWK8JGEluwCtlQ - mar-signing-l10n-nl-linux64-shippable/opt: TvxzWQIyR62mQ9ltCyr7Aw - mar-signing-l10n-nl-macosx64-shippable/opt: GOStUVx6RKql2lKweeS0sQ - mar-signing-l10n-nl-win32-shippable/opt: Z2P4qm2vRjGIfGOUq1H0lg - mar-signing-l10n-nl-win64-aarch64-shippable/opt: Dx0SYU58QmKyP-13wun26A - mar-signing-l10n-nl-win64-shippable/opt: DBhQhTltQKyMZ2TI2IfPPQ - mar-signing-l10n-nn-NO-linux-shippable/opt: Rvd0jcksS6i_d0oHlL93Mw - mar-signing-l10n-nn-NO-linux64-aarch64-shippable/opt: HoPhW3jgQ5WO3ydmeFBRQw - mar-signing-l10n-nn-NO-linux64-shippable/opt: XntZawdsQxufRRXAgWjGFg - mar-signing-l10n-nn-NO-macosx64-shippable/opt: H4XTf2T2SV-WL7w_n5LQCg - mar-signing-l10n-nn-NO-win32-shippable/opt: FE0I8saFRXWPOHtl_WwQFA - mar-signing-l10n-nn-NO-win64-aarch64-shippable/opt: d8ZXZtWMS6ucZwPIGFm6Yg - mar-signing-l10n-nn-NO-win64-shippable/opt: BwQJRKBXSTWCqV6tY9mwTg - mar-signing-l10n-oc-linux-shippable/opt: WjdpT4qtQQWwtc4K1I8_xg - mar-signing-l10n-oc-linux64-aarch64-shippable/opt: TdooyyUSQS6CFH8qDWmoOQ - mar-signing-l10n-oc-linux64-shippable/opt: PXY1qT9WStWHgfZ1Kp90qQ - mar-signing-l10n-oc-macosx64-shippable/opt: BTsf2p2hRt-wvb8idEQaHw - mar-signing-l10n-oc-win32-shippable/opt: cfTHUggwTIe9RDs3oa4z7w - mar-signing-l10n-oc-win64-aarch64-shippable/opt: NqpTWWajTbSWJ_gd2L4Mfg - mar-signing-l10n-oc-win64-shippable/opt: cYoUOJEnTcCztTuiCYCEXQ - mar-signing-l10n-pa-IN-linux-shippable/opt: dURv-mmMTgGSX02kRpk4RQ - mar-signing-l10n-pa-IN-linux64-aarch64-shippable/opt: OJ25ThMvTN6PIaWby0RZXQ - mar-signing-l10n-pa-IN-linux64-shippable/opt: KlKVNm2iTLi9RzV6S0xYPg - mar-signing-l10n-pa-IN-macosx64-shippable/opt: CAS2HVNHRpmQnuiIGRVYyg - mar-signing-l10n-pa-IN-win32-shippable/opt: LRDfE9QYSk2VXPgHbTqrQQ - mar-signing-l10n-pa-IN-win64-aarch64-shippable/opt: Z0cJG4GNR32mW3_JcgAtiw - mar-signing-l10n-pa-IN-win64-shippable/opt: NEkbVfUySXGelMVrF4kgNw - mar-signing-l10n-pl-linux-shippable/opt: ThJ_Ix8PTE-Tq2Nzs-qzpg - mar-signing-l10n-pl-linux64-aarch64-shippable/opt: N0Nj7KkzRTuqTgGl-YCy6A - mar-signing-l10n-pl-linux64-shippable/opt: DXFG7H5TS3qRvvlL620Bdg - mar-signing-l10n-pl-macosx64-shippable/opt: Wz1KddHfQFWH9lIoZn3fkA - mar-signing-l10n-pl-win32-shippable/opt: JCaNhNeuQWO5ap2fyk0GRA - mar-signing-l10n-pl-win64-aarch64-shippable/opt: IWH3XiQvT96JnuUmP_e1ww - mar-signing-l10n-pl-win64-shippable/opt: Rj8stGmoTRWhmkrqiXGOdw - mar-signing-l10n-pt-BR-linux-shippable/opt: Az7SVA5GTvOvwDkixjm8KQ - mar-signing-l10n-pt-BR-linux64-aarch64-shippable/opt: abur33x1Rq-BafKKfHi4-w - mar-signing-l10n-pt-BR-linux64-shippable/opt: X2zJ_gSgSWeqr04gVCTMrg - mar-signing-l10n-pt-BR-macosx64-shippable/opt: Pqu2hCl7TH6fQzL1ez8OcQ - mar-signing-l10n-pt-BR-win32-shippable/opt: P_bVmE93QfmaQuSfNlu2_A - mar-signing-l10n-pt-BR-win64-aarch64-shippable/opt: OdADP0FeQxapFWubn9IS7w - mar-signing-l10n-pt-BR-win64-shippable/opt: VJ0T-9enTeCG9qKwznphiQ - mar-signing-l10n-pt-PT-linux-shippable/opt: Xb2ZVp5BRImCt6sjWgBk7w - mar-signing-l10n-pt-PT-linux64-aarch64-shippable/opt: B9UD4ig9TQmw9bZwGE8S3A - mar-signing-l10n-pt-PT-linux64-shippable/opt: W1QvXc90RLmx3Sb6AdZCaA - mar-signing-l10n-pt-PT-macosx64-shippable/opt: UHSAlBbpQR2-cW3fVv0nFw - mar-signing-l10n-pt-PT-win32-shippable/opt: A_hqzulsRj2FSHDGEbDVDw - mar-signing-l10n-pt-PT-win64-aarch64-shippable/opt: BiOTBMX6Qj-rc34MGkVMrA - mar-signing-l10n-pt-PT-win64-shippable/opt: dDpv45uFTpuxFtGpBDjScw - mar-signing-l10n-rm-linux-shippable/opt: Ochwc5S_TQG3SraDG9cnjw - mar-signing-l10n-rm-linux64-aarch64-shippable/opt: LlC45n_VT5OJ9G9q-sVcsQ - mar-signing-l10n-rm-linux64-shippable/opt: eUnszpO4QSOfpmLvt1Qq2Q - mar-signing-l10n-rm-macosx64-shippable/opt: CMo4a5ccSg6yCTkIS7R3bQ - mar-signing-l10n-rm-win32-shippable/opt: Z-eoofh4TyGOAelrd6VKLA - mar-signing-l10n-rm-win64-aarch64-shippable/opt: UUIZ9_iCQe2lTUGsrLArqA - mar-signing-l10n-rm-win64-shippable/opt: FIrt0lT0TuyUyg9dPkTSHw - mar-signing-l10n-ro-linux-shippable/opt: KiS5s5DnTNuBje-LHavrfQ - mar-signing-l10n-ro-linux64-aarch64-shippable/opt: bUlPVB7HQyGFl4hEJTdUzw - mar-signing-l10n-ro-linux64-shippable/opt: cFVP0zhhTNeZXu3-ChgveQ - mar-signing-l10n-ro-macosx64-shippable/opt: Ql8uZAZrRriqYvZZ_Tad4g - mar-signing-l10n-ro-win32-shippable/opt: diSPJPkISzKfAo0ByfYINA - mar-signing-l10n-ro-win64-aarch64-shippable/opt: MFl6S99dQsaTYLQjNk4YPw - mar-signing-l10n-ro-win64-shippable/opt: WdS9kIoYQ0ugGR5pxSJpww - mar-signing-l10n-ru-linux-shippable/opt: TKT0LAwzR_6_V9eteSVZsA - mar-signing-l10n-ru-linux64-aarch64-shippable/opt: XJJhT-rFTKuQ4M55NKJRIA - mar-signing-l10n-ru-linux64-shippable/opt: NLHrWOCiQXqS6qFH53U4kA - mar-signing-l10n-ru-macosx64-shippable/opt: Kjx6WNpFTV6e98z1ttAUxw - mar-signing-l10n-ru-win32-shippable/opt: b7gom-NtSPqTTBHjW1SGrQ - mar-signing-l10n-ru-win64-aarch64-shippable/opt: Y_2CZllmSN2Pv4KZTyOUbg - mar-signing-l10n-ru-win64-shippable/opt: DiP9S-bSRZCaJX8IzQRNNQ - mar-signing-l10n-sat-linux-shippable/opt: TUBGneYbQwG3LGRFXuvfbw - mar-signing-l10n-sat-linux64-aarch64-shippable/opt: Q3E6odOdTiGVUnSAtdjs4Q - mar-signing-l10n-sat-linux64-shippable/opt: Vnta9X3iSXySSbPBninMxg - mar-signing-l10n-sat-macosx64-shippable/opt: W4cANCsWQq-UylzgBdeoFg - mar-signing-l10n-sat-win32-shippable/opt: LgMosTsRTS2Gckm1ucYqrg - mar-signing-l10n-sat-win64-aarch64-shippable/opt: QjtIvINDRn20cuy8Lx3X2A - mar-signing-l10n-sat-win64-shippable/opt: cnIbzoaPSa-_9iBNGuUX_A - mar-signing-l10n-sc-linux-shippable/opt: DAxfLFXTQwW_oNbONLk4LQ - mar-signing-l10n-sc-linux64-aarch64-shippable/opt: e-Z7zONzRe6sPxafgEXQYA - mar-signing-l10n-sc-linux64-shippable/opt: IbPmz8qCQ9ezRZOx9EzyyA - mar-signing-l10n-sc-macosx64-shippable/opt: RG4XkUNsQvWG3PNdT5KWXg - mar-signing-l10n-sc-win32-shippable/opt: FOknFqn7QlKdDdhJgPxzLA - mar-signing-l10n-sc-win64-aarch64-shippable/opt: XDHrR5WnROanoe8TwZy2Dg - mar-signing-l10n-sc-win64-shippable/opt: KdtDLYIXSaSPFrF543eZzA - mar-signing-l10n-sco-linux-shippable/opt: Ngp-9W49RdS-S-Gz15VNcQ - mar-signing-l10n-sco-linux64-aarch64-shippable/opt: OPjb67xbSxqTOg4OSnfX0g - mar-signing-l10n-sco-linux64-shippable/opt: MMe9H3XcRCyV4dpC5Rjwng - mar-signing-l10n-sco-macosx64-shippable/opt: XhhxtpPbQhagHbsArtlqCQ - mar-signing-l10n-sco-win32-shippable/opt: au1hh7aBQrmvpKiqVMWH4Q - mar-signing-l10n-sco-win64-aarch64-shippable/opt: ffhpVWMYTxiNhpgsaHhDvQ - mar-signing-l10n-sco-win64-shippable/opt: XpGOAsDXQPmKbJwjVeyd5g - mar-signing-l10n-si-linux-shippable/opt: ZXuqeuG1Timk1ndL9CdHEA - mar-signing-l10n-si-linux64-aarch64-shippable/opt: Ldm8_qh7Tmar_jkpBEbwLQ - mar-signing-l10n-si-linux64-shippable/opt: A5GNOODWTg-V1xFqe_83Og - mar-signing-l10n-si-macosx64-shippable/opt: Ht7KDysrQjyGyEeBxAhajg - mar-signing-l10n-si-win32-shippable/opt: MiJ0tuTFToq7k0ONhN0S5A - mar-signing-l10n-si-win64-aarch64-shippable/opt: UjYGxeFRSguQV41IJv-lmg - mar-signing-l10n-si-win64-shippable/opt: b93iJ0dwSK6ErCD3jlR8gQ - mar-signing-l10n-sk-linux-shippable/opt: azsqRlV-TB2T2uvptz5Knw - mar-signing-l10n-sk-linux64-aarch64-shippable/opt: UDYGLagsTbWjqk1bq9EqoQ - mar-signing-l10n-sk-linux64-shippable/opt: HX9YOFjLQ9ORbqNSDiMmdQ - mar-signing-l10n-sk-macosx64-shippable/opt: cWTqH9w2SxiugPa5o-rfPA - mar-signing-l10n-sk-win32-shippable/opt: LODRM8TpTnyC64VKKwlF9A - mar-signing-l10n-sk-win64-aarch64-shippable/opt: OqLBK3bbS7WICIQ2boU77Q - mar-signing-l10n-sk-win64-shippable/opt: B_g3Z8HSRrqPMVd-36Awfg - mar-signing-l10n-skr-linux-shippable/opt: J0X4gAxoQBKL3qvWnaPaQA - mar-signing-l10n-skr-linux64-aarch64-shippable/opt: bYMEn51WSxu1IeDHESDxsA - mar-signing-l10n-skr-linux64-shippable/opt: KC1b9Q4CT_y8VWyeRRv3qA - mar-signing-l10n-skr-macosx64-shippable/opt: Gq1OqENkRbe8D9gyREBBJQ - mar-signing-l10n-skr-win32-shippable/opt: SDcDsb2DR1mbtA-jJ2r79A - mar-signing-l10n-skr-win64-aarch64-shippable/opt: SmPIe1ffSMGCZGqSjXVwiw - mar-signing-l10n-skr-win64-shippable/opt: IcL76P2sRfWyiuyf6FHJ0g - mar-signing-l10n-sl-linux-shippable/opt: GtkjY9ZFQlO6tTYwYjXQcg - mar-signing-l10n-sl-linux64-aarch64-shippable/opt: fAdeSZjFR_Gaqbak_nyJwA - mar-signing-l10n-sl-linux64-shippable/opt: ECpsfptfTVCaPpWns8BDBQ - mar-signing-l10n-sl-macosx64-shippable/opt: FfjhB5iJQfSq5p_wcWG2aQ - mar-signing-l10n-sl-win32-shippable/opt: ejTVO40hRmmmzgZQohT-VA - mar-signing-l10n-sl-win64-aarch64-shippable/opt: Qx6bvf-lRUyRAB3PxZExIQ - mar-signing-l10n-sl-win64-shippable/opt: CmrV75pVRwO4dbVQ5B_MeA - mar-signing-l10n-son-linux-shippable/opt: aB2G59QbTLatI8o08WbomQ - mar-signing-l10n-son-linux64-aarch64-shippable/opt: Bvt_hyJkReuVhU8DlcYP8g - mar-signing-l10n-son-linux64-shippable/opt: UKcf4pYxSG-04tEdVy2hSQ - mar-signing-l10n-son-macosx64-shippable/opt: S5k__Vy4RjyLbff4bXTuig - mar-signing-l10n-son-win32-shippable/opt: S5Nlru1NSfeMmcf2q5hQmg - mar-signing-l10n-son-win64-aarch64-shippable/opt: MsEvmv-qQ5GDf0sanDyQcw - mar-signing-l10n-son-win64-shippable/opt: LtW6g1PvRr6L1X1Cb8Iqsw - mar-signing-l10n-sq-linux-shippable/opt: V218gzDGSP2qK37prSXHxQ - mar-signing-l10n-sq-linux64-aarch64-shippable/opt: QX2u00yHT1meZWaOzv4iEQ - mar-signing-l10n-sq-linux64-shippable/opt: Ytb_U9aOTYKAEWUHko7b_g - mar-signing-l10n-sq-macosx64-shippable/opt: ffsTU-tHRQuW7WuToFMhXQ - mar-signing-l10n-sq-win32-shippable/opt: FGzvKNQWRKSctZi3ZJehVg - mar-signing-l10n-sq-win64-aarch64-shippable/opt: Spxjeo0PRjuiSFlQ4ZfYAw - mar-signing-l10n-sq-win64-shippable/opt: EOpIWR91SMOuGMylzA-RVg - mar-signing-l10n-sr-linux-shippable/opt: PLHnd3i3QOGnGZemOxgNnQ - mar-signing-l10n-sr-linux64-aarch64-shippable/opt: AcZvusS0Q9WMTF16c1SIag - mar-signing-l10n-sr-linux64-shippable/opt: X8HwbAWXQ5yH7Rk2hRFscQ - mar-signing-l10n-sr-macosx64-shippable/opt: Y_4kUU7YQKCi96LpGoX6ZA - mar-signing-l10n-sr-win32-shippable/opt: EL--jA_TSt-Ni-OVrtVcRg - mar-signing-l10n-sr-win64-aarch64-shippable/opt: F5y_dQlDSD-VXnDLCoFlgw - mar-signing-l10n-sr-win64-shippable/opt: fhC8Cd0RTrCB2XzPFHms5g - mar-signing-l10n-sv-SE-linux-shippable/opt: AuGwqlnUS5u7-BGakUKKvA - mar-signing-l10n-sv-SE-linux64-aarch64-shippable/opt: e0ZgpxJETE6NObkgLlXDfw - mar-signing-l10n-sv-SE-linux64-shippable/opt: NcII2nG3TDiivez5d7dQ7w - mar-signing-l10n-sv-SE-macosx64-shippable/opt: JkKOdYGuRj62aBLWpBLd4w - mar-signing-l10n-sv-SE-win32-shippable/opt: ZrAyWtBzRJ23MO9qzDM7PA - mar-signing-l10n-sv-SE-win64-aarch64-shippable/opt: WuRCgZFGTXCQki96_aCy4Q - mar-signing-l10n-sv-SE-win64-shippable/opt: dHhXx-jCQUWWgEXLsbjCRQ - mar-signing-l10n-szl-linux-shippable/opt: FiP-oJxnRP6aznWoser0vA - mar-signing-l10n-szl-linux64-aarch64-shippable/opt: c1YznTeiTUCTUnfbdXF8TQ - mar-signing-l10n-szl-linux64-shippable/opt: EFrexRBiSkiLJE961hBsvQ - mar-signing-l10n-szl-macosx64-shippable/opt: ejbVfR3ERi68D3QqbtLeDA - mar-signing-l10n-szl-win32-shippable/opt: dQxUGub8QCSavHtN3Ncx1w - mar-signing-l10n-szl-win64-aarch64-shippable/opt: Qa3EuZ1JTZyeULaijIebDQ - mar-signing-l10n-szl-win64-shippable/opt: f_osFngpSieQ7PpPkVhBuQ - mar-signing-l10n-ta-linux-shippable/opt: MAGr6N0HTxi5MuPmP68o1A - mar-signing-l10n-ta-linux64-aarch64-shippable/opt: B_uOsA3vQmKhoPNx8pP7Fw - mar-signing-l10n-ta-linux64-shippable/opt: eRA5kPbKQeCnlQwl0Q19fA - mar-signing-l10n-ta-macosx64-shippable/opt: IU9JWWVOSAm-8k2imLhAYw - mar-signing-l10n-ta-win32-shippable/opt: Y4IeOgPJQPm7vyDCH-UXLA - mar-signing-l10n-ta-win64-aarch64-shippable/opt: bEI1t73IS4qbdlxnr8U-vw - mar-signing-l10n-ta-win64-shippable/opt: VqnhoxjMT_OOG9WAICQyJw - mar-signing-l10n-te-linux-shippable/opt: C7-4OeR5Q5e0hZ2IMEykbA - mar-signing-l10n-te-linux64-aarch64-shippable/opt: SKv_1oDHTsGVMsD1ABpzvQ - mar-signing-l10n-te-linux64-shippable/opt: G7r1fL-KQdaIZAR07czWFA - mar-signing-l10n-te-macosx64-shippable/opt: J1wcz4iYRd-jki2OC1W0UQ - mar-signing-l10n-te-win32-shippable/opt: FJ5X4_UNS0qvsX3CAALdGQ - mar-signing-l10n-te-win64-aarch64-shippable/opt: b78P32YbQKeUDCcltbE78Q - mar-signing-l10n-te-win64-shippable/opt: eaGu0jOYRM2jQK1U7yIi7w - mar-signing-l10n-tg-linux-shippable/opt: Gci92K0wT1-zTkl0ZjcH6Q - mar-signing-l10n-tg-linux64-aarch64-shippable/opt: FkRoftH7R4y9LVqLjW7c4g - mar-signing-l10n-tg-linux64-shippable/opt: VbJ-rjw4RrOQtaIydBQCyQ - mar-signing-l10n-tg-macosx64-shippable/opt: c4PhwXRMR6ytZ8XgtRSpew - mar-signing-l10n-tg-win32-shippable/opt: KHkJNbcnSD-ZQjUaWAAHKw - mar-signing-l10n-tg-win64-aarch64-shippable/opt: SHuM_AaWT8uR7cNybgM3Yg - mar-signing-l10n-tg-win64-shippable/opt: ZjbpvPuMRN6mtgVBssRRhg - mar-signing-l10n-th-linux-shippable/opt: eZege5vMSPGSYGUnxaMtdw - mar-signing-l10n-th-linux64-aarch64-shippable/opt: VbbUZq0YTq6ZMw5EBpT8HA - mar-signing-l10n-th-linux64-shippable/opt: Yhg5AoBHR7yGlHpIeiIIvw - mar-signing-l10n-th-macosx64-shippable/opt: Xh_s3xi1TJqpGMLPuITi9g - mar-signing-l10n-th-win32-shippable/opt: VqCiybqPRxCT9qUTgdoTKQ - mar-signing-l10n-th-win64-aarch64-shippable/opt: fKAYfoeLRiKxM7_L1FE-YA - mar-signing-l10n-th-win64-shippable/opt: RN5MO3YBSVG4VccMOf6yWw - mar-signing-l10n-tl-linux-shippable/opt: KQXd8LOfSICQi_8ifQqHsQ - mar-signing-l10n-tl-linux64-aarch64-shippable/opt: JAQVnRNxSiqy3VQCRZc_pA - mar-signing-l10n-tl-linux64-shippable/opt: HSp3ceknTN6sqHXRjaWhjA - mar-signing-l10n-tl-macosx64-shippable/opt: RZCMxZebTA2jf2986kbAoA - mar-signing-l10n-tl-win32-shippable/opt: XyhJhro6QvyYLZoqYK9JCw - mar-signing-l10n-tl-win64-aarch64-shippable/opt: QTZTvvqXSGSmQWJW8_Qiuw - mar-signing-l10n-tl-win64-shippable/opt: DbaG0oJ2TrWzzh6cC9A4NQ - mar-signing-l10n-tr-linux-shippable/opt: JmfRr_7UR6aG1aESXK4JcA - mar-signing-l10n-tr-linux64-aarch64-shippable/opt: Mtar10eqQDqWoMGBK3bnzA - mar-signing-l10n-tr-linux64-shippable/opt: ewNcIup1RyOdPe61xFSMmw - mar-signing-l10n-tr-macosx64-shippable/opt: TQkmj7IwQaO2JW1Fcb7qjQ - mar-signing-l10n-tr-win32-shippable/opt: V7IABcMqT8i3Kqxhtb4NrQ - mar-signing-l10n-tr-win64-aarch64-shippable/opt: fXbuBxNrSjK1-B-OWbBGWg - mar-signing-l10n-tr-win64-shippable/opt: OIfn101aT622s5BoAjRetg - mar-signing-l10n-trs-linux-shippable/opt: L-jl8zkxT8GS8s9pC8tSNA - mar-signing-l10n-trs-linux64-aarch64-shippable/opt: B372KYzlS2mF1s8rrYDD1A - mar-signing-l10n-trs-linux64-shippable/opt: dY6FJpDnTXK-E966jX-grw - mar-signing-l10n-trs-macosx64-shippable/opt: H2EG2yzWQlGSxgNavM-2lQ - mar-signing-l10n-trs-win32-shippable/opt: IPZ7iG9-RIi75hSrEZXECg - mar-signing-l10n-trs-win64-aarch64-shippable/opt: VWcaJcbIT5K-xMj-CJJs8A - mar-signing-l10n-trs-win64-shippable/opt: DLjlM7HiRAq2XzPGUxNnwg - mar-signing-l10n-uk-linux-shippable/opt: M8ovdbTdRJmIIdoPt82lAA - mar-signing-l10n-uk-linux64-aarch64-shippable/opt: MxwoCs2ARwqxiRx28B_T0g - mar-signing-l10n-uk-linux64-shippable/opt: eZn8QMiLSAK-ulpnRyl1Tg - mar-signing-l10n-uk-macosx64-shippable/opt: Z0riGOiPSTCn3Rp_Hj57pA - mar-signing-l10n-uk-win32-shippable/opt: G9i0Y3HtRmueqQLL9D-sNQ - mar-signing-l10n-uk-win64-aarch64-shippable/opt: VwkgaGQFRLWbJtBDEaaxCQ - mar-signing-l10n-uk-win64-shippable/opt: F_Vi1cEkTIS-O7MYvuN1SA - mar-signing-l10n-ur-linux-shippable/opt: HiuSj7wlQMCVmsbDdW4klw - mar-signing-l10n-ur-linux64-aarch64-shippable/opt: ZuM9yKPsTCKYYHUI6YOLkg - mar-signing-l10n-ur-linux64-shippable/opt: D-t8zHu6SE-ugtvJRzWVKg - mar-signing-l10n-ur-macosx64-shippable/opt: fzyhZ3fdR66ZIyDLuM-Ohg - mar-signing-l10n-ur-win32-shippable/opt: RQKuXDxjQ7mLRI6klmoXIg - mar-signing-l10n-ur-win64-aarch64-shippable/opt: f9M9ysIeQj2KmNw2dgPblw - mar-signing-l10n-ur-win64-shippable/opt: aanvg_uaQLmjIzqrTSeLSg - mar-signing-l10n-uz-linux-shippable/opt: IN94SzeGTPisIJdmSG4Ejg - mar-signing-l10n-uz-linux64-aarch64-shippable/opt: InrfbaIMThmr2Lg2zPFmJw - mar-signing-l10n-uz-linux64-shippable/opt: IwbvxFHMSk-vmZtDdlFmYg - mar-signing-l10n-uz-macosx64-shippable/opt: f9XZ3vsZRgalsi_7aBHNug - mar-signing-l10n-uz-win32-shippable/opt: bdolyl6xQnaQBHv-ug71tw - mar-signing-l10n-uz-win64-aarch64-shippable/opt: egXqKc9IS1qB8o8Ws2fqMQ - mar-signing-l10n-uz-win64-shippable/opt: P2zdznwrRYiWpVGgt2znnA - mar-signing-l10n-vi-linux-shippable/opt: Hb1qiDfaTtmqn_bVTJV7UQ - mar-signing-l10n-vi-linux64-aarch64-shippable/opt: GhwNVGilQ4eRfrh_lP_Wjw - mar-signing-l10n-vi-linux64-shippable/opt: exb4W2N9QZumSBaIVBgacg - mar-signing-l10n-vi-macosx64-shippable/opt: WIKj6F1KSfepkh40LSXuww - mar-signing-l10n-vi-win32-shippable/opt: CITrdP44S_ebPBc6ER_B2g - mar-signing-l10n-vi-win64-aarch64-shippable/opt: doAAbh_wSh6BafPuTPzssQ - mar-signing-l10n-vi-win64-shippable/opt: SduAbO22Sk2VqjDAR6_cmw - mar-signing-l10n-xh-linux-shippable/opt: FjgMuW7ASWa-ozkmo-WVIA - mar-signing-l10n-xh-linux64-aarch64-shippable/opt: KQMEdHfcRf-Hc3lbruWr4Q - mar-signing-l10n-xh-linux64-shippable/opt: M2dvHjPRR4Cuav6baQVA9g - mar-signing-l10n-xh-macosx64-shippable/opt: QJDSc9wRRla2813VWNEM5Q - mar-signing-l10n-xh-win32-shippable/opt: ApQP9tzHT-qB6gWInjoKjQ - mar-signing-l10n-xh-win64-aarch64-shippable/opt: Rn1AGSRjTHaqHPKqnzq5FA - mar-signing-l10n-xh-win64-shippable/opt: DSVKcut-SXKnh0yLOLLAtQ - mar-signing-l10n-zh-CN-linux-shippable/opt: SGYwoYGnSZmBNqqVp85WGw - mar-signing-l10n-zh-CN-linux64-aarch64-shippable/opt: PmT298D0Q02KqDblUEejnQ - mar-signing-l10n-zh-CN-linux64-shippable/opt: ImVxUAHXQoCyvnYFXdg7eQ - mar-signing-l10n-zh-CN-macosx64-shippable/opt: GEJyDC2MS5mlIWfWODSQVA - mar-signing-l10n-zh-CN-win32-shippable/opt: Fc3Bh8WHS3emjU2IEFcDwQ - mar-signing-l10n-zh-CN-win64-aarch64-shippable/opt: PfS6_QY9SFWqXjhrlDFbNA - mar-signing-l10n-zh-CN-win64-shippable/opt: NDYjqzFuThWPITk7LJF60A - mar-signing-l10n-zh-TW-linux-shippable/opt: Ff4WSP4OQkyS8Hzw06pN2g - mar-signing-l10n-zh-TW-linux64-aarch64-shippable/opt: ey1fRPLJR-GydZXTaD-ZPg - mar-signing-l10n-zh-TW-linux64-shippable/opt: fLaFquHURPGODCBqycd0_g - mar-signing-l10n-zh-TW-macosx64-shippable/opt: QE47mJNKQE6yrUo1TJdXDQ - mar-signing-l10n-zh-TW-win32-shippable/opt: MffJg760QP-ixXaBHiCSYA - mar-signing-l10n-zh-TW-win64-aarch64-shippable/opt: Q9UNFAKxRZWZ7bwNXNrJtg - mar-signing-l10n-zh-TW-win64-shippable/opt: Bc-6JKbAQECX6wt8fIBrtw - mar-signing-linux-shippable/opt: VPWATd8ISG6zU-T8nW8Zgw - mar-signing-linux64-aarch64-shippable/opt: RcSke5Z0SLmbbAWuSd2aeA - mar-signing-linux64-shippable/opt: Ekawq8XnT7yB4_SU1akp2g - mar-signing-macosx64-shippable/opt: RmvEyzq7RlqFUoDenmtR1A - mar-signing-win32-shippable/opt: W-0L09N4Tg2fEN6etQIC3Q - mar-signing-win64-aarch64-shippable/opt: X_HMmbUbTdK93Sq-p4-3Hw - mar-signing-win64-shippable/opt: SnFKysFxQgK5cieJMYS4CQ - packages-deb12-mercurial: ATSDrlHTRXmRCuxGDzkNTA - packages-deb12-python-zstandard: PGm7C6p0T8-SbxTTtBblig - packages-deb12-valgrind: KbXFbm03Q5eTFzsO9m-dSg - packages-deb8-32-gcc-8: CrHg8i1-SGqdTj-NpDVVyg - packages-deb8-gcc-10: fjMqdls0QBO9M1y7tlnq4A - packages-deb8-gcc-8: bZ8WOgrnS2m4wG77ZT6iUw - packages-deb8-gtk3: AW171dBuSkytt9SfH1-pOQ - packages-ub18-32-libc6: MhEDvzH5RUahbSQ90OKqLg - packages-ub18-libc6: OlR6_SgxTWOCvFHkfBYzkg - packages-ub18-mercurial: BJbWXgFSSiCV0sPucuOd8Q - packages-ub18-pyatspi: KMOvc2JFRFyzUP58lWnh6Q - packages-ub18-pygobject: Js8eM8ZuQBSbyFP_CAPS2g - packages-ub18-python-dbus: KU85JuXNSKG8NIGx2QtrAw - packages-ub18-python-psutil: fDZNxr7UTpmli_mzEP_9Ig - packages-ub18-python-zstandard: eBnMky38R5Gxd3wihGeTZw - packages-ub20-mercurial: GqxIBCKVRlKOo6X9e-8GGg - packages-ub20-python-zstandard: URQ7Uu1TR4WHQp1Z13CHPw - packages-ub22-arm64-mercurial: FqnQoOYxQwS1QMGzuNDKuQ - packages-ub22-arm64-python-zstandard: LzBbpsfpQPGgpZ899IzbUw - packages-ub22-mercurial: XzRVE4AsTkGDFg7slSSmQA - packages-ub22-python-zstandard: cyMtHWRaTOSpCLjeDM2IpQ - packages-ub24-arm64-mercurial: Xn5kY-XmSIKKG2iWBgBs2Q - packages-ub24-arm64-python-zstandard: AIFs8vm6RhKXRSVihTKh_w - packages-ub24-mercurial: dnQVxdTfTze_oQqpsrspCA - packages-ub24-python-zstandard: XULo3NLyToGCJwrM86UJ2g - partials-ach-linux-shippable/opt: WfvXh3OUR1m3z26BRKuRgA - partials-ach-linux64-aarch64-shippable/opt: epE09hb4RR-DCzWHezD5Wg - partials-ach-linux64-shippable/opt: LXWdb_dRRxe1UlmuQH9A9w - partials-ach-macosx64-shippable/opt: AJWEEgLsQ8uv3sB1bpgCaQ - partials-ach-win32-shippable/opt: QHOj_bAeTFePQZnzb6zEbA - partials-ach-win64-aarch64-shippable/opt: aP8hIikNStWABewwZ5HHwg - partials-ach-win64-shippable/opt: AhU6YcsqSuqHt2UC4Dniww - partials-af-linux-shippable/opt: CPooCdGSQtiespRyuBGgiw - partials-af-linux64-aarch64-shippable/opt: ZriKeTNPSAa3mP7v8sfw9A - partials-af-linux64-shippable/opt: NCwEP5LjTgGugcgE5Qrb7Q - partials-af-macosx64-shippable/opt: eXtfDrASQXyARPzCvbg_2Q - partials-af-win32-shippable/opt: FSXJknarQHaJyzZ0WTmHfQ - partials-af-win64-aarch64-shippable/opt: a89ipeNvQmKcG6BcW2OjdQ - partials-af-win64-shippable/opt: K5N68Wk-TwOU45YUBygWEg - partials-an-linux-shippable/opt: U7dsj9XkSLGBaOihawZg6A - partials-an-linux64-aarch64-shippable/opt: JeTEOdR0S9eXI9UkcOWGlw - partials-an-linux64-shippable/opt: RkEB5cH8Q1i_KlMPJ1eRwQ - partials-an-macosx64-shippable/opt: eYgmXSEHTE6Qoj_QC4tIaQ - partials-an-win32-shippable/opt: anJp0-ptSQmAj41QumlnJg - partials-an-win64-aarch64-shippable/opt: TrH2Xz3ETG-NuO7VLUMzvg - partials-an-win64-shippable/opt: KTH-kJFzRc-MNVGoxmhG8A - partials-ar-linux-shippable/opt: Qeiomcl4TFSaYzf2QpxAqQ - partials-ar-linux64-aarch64-shippable/opt: JY4CHPCDR8SVxxIN3jmnUw - partials-ar-linux64-shippable/opt: QsgEpOv_StKLUmjJHsYSAQ - partials-ar-macosx64-shippable/opt: a91RYn7MTUmlcgIr8hxgUA - partials-ar-win32-shippable/opt: XMSUJRSWSNWS-uDgFRPjug - partials-ar-win64-aarch64-shippable/opt: KXNgBzVIRk-smfWDri6kdg - partials-ar-win64-shippable/opt: TpnMmwkHTe6r2ZGtG8o3bA - partials-ast-linux-shippable/opt: dzHjkZHoRSq7KXyzhIRm8Q - partials-ast-linux64-aarch64-shippable/opt: Ny1ClmYQRkSrcG-yLYs0Hw - partials-ast-linux64-shippable/opt: c-sazMZoT_Ssl6f8aBPrPg - partials-ast-macosx64-shippable/opt: cSxVqlllRxOcylwqMP5xVQ - partials-ast-win32-shippable/opt: W8YwPhR0ReSJMOOj2A-Qkw - partials-ast-win64-aarch64-shippable/opt: HcMRSCM4QXy9ImkRRyQsiw - partials-ast-win64-shippable/opt: S0VSiQ3ySbCn7oc15dtU1g - partials-az-linux-shippable/opt: GUS2drkERSey1Uqaowu6GQ - partials-az-linux64-aarch64-shippable/opt: ARxgoACYS9eL1RRXNLntZA - partials-az-linux64-shippable/opt: PTdy9JzTRnm3963Iv83BbQ - partials-az-macosx64-shippable/opt: S-YF9P7JRtWxkjRzOFz_kg - partials-az-win32-shippable/opt: TPPT9IVcS8OwFGtMvblbIw - partials-az-win64-aarch64-shippable/opt: P2vK8eT-Ss63sAjBq2EOSQ - partials-az-win64-shippable/opt: ZDug9kV2SCGaXe4rmUTCxw - partials-be-linux-shippable/opt: T0UsEFM6RIeQRYe5vSNCIg - partials-be-linux64-aarch64-shippable/opt: UrL1dd5xTnWdCJ2hKSCoqQ - partials-be-linux64-shippable/opt: WdMDmPQRQauqMfrqZIgBlg - partials-be-macosx64-shippable/opt: fnofTVQfT3CqTaNX5DkKIQ - partials-be-win32-shippable/opt: ZTjPF-4fQ2atmamtDWImsw - partials-be-win64-aarch64-shippable/opt: C1rsLZ_FTziYt6GpqAdHdQ - partials-be-win64-shippable/opt: G1lAr0UTRpS5u9L1B6xwtQ - partials-bg-linux-shippable/opt: KUhc75cPS6CIO7CEImwYcA - partials-bg-linux64-aarch64-shippable/opt: ROnjr98pQeCBSPSL_toNTQ - partials-bg-linux64-shippable/opt: eX7P7LM0RXq_dnQmyndRSA - partials-bg-macosx64-shippable/opt: DiRZLURbRd2uA-oDxLmvBA - partials-bg-win32-shippable/opt: G7c-AfNFT2eENxB67GrvAg - partials-bg-win64-aarch64-shippable/opt: BwYijWrbSsODNUmr5nqsDQ - partials-bg-win64-shippable/opt: BYQUJ_laQbyDslKQrQ6maw - partials-bn-linux-shippable/opt: c0UhmHRrQau3Pjne1QzYyA - partials-bn-linux64-aarch64-shippable/opt: I_ecadhEQrWQZpfFTohBEw - partials-bn-linux64-shippable/opt: E0P5wz75SoWrmvBKALWuDQ - partials-bn-macosx64-shippable/opt: E0k4pgcBQAKaOxuFraRPig - partials-bn-win32-shippable/opt: BY8e4X-WQgO4ZDeYQ3ycrA - partials-bn-win64-aarch64-shippable/opt: f0_Ff7M8Q_GmvritCyYsMA - partials-bn-win64-shippable/opt: T89f0eyoTvSVBxCFJuciSw - partials-br-linux-shippable/opt: YvBoKE_URoGn6kf7V0yZTg - partials-br-linux64-aarch64-shippable/opt: IKfTUsmpQnqwNWK9ifqS_Q - partials-br-linux64-shippable/opt: dOYr-SpNSZG0Reiu0WuGVQ - partials-br-macosx64-shippable/opt: eAZhx3JeS_2BSLdQeHf8KQ - partials-br-win32-shippable/opt: MMWkv2t0Rie633GfT7X1HQ - partials-br-win64-aarch64-shippable/opt: Nup9nNGDSLCk7FiGAcsvWg - partials-br-win64-shippable/opt: N24rTbTZSIeAdHuxXLp8Ow - partials-bs-linux-shippable/opt: Sp44_0NUS6mh9ZzFjfOMxA - partials-bs-linux64-aarch64-shippable/opt: f3cOcMhMSeCxixTqxIHpqw - partials-bs-linux64-shippable/opt: Elm7qzVORVeu8foWZRM5DQ - partials-bs-macosx64-shippable/opt: VvmhPPtHR4SE4-GD-bgkmQ - partials-bs-win32-shippable/opt: JEDlWibSTNqgztLMusGGnQ - partials-bs-win64-aarch64-shippable/opt: RgLQLr8HRgyvWbRj9qGnAg - partials-bs-win64-shippable/opt: SvYngMbKRTSgyb0i1NiGyQ - partials-ca-linux-shippable/opt: GmMEss4fRYi7CwQnMpaMmg - partials-ca-linux64-aarch64-shippable/opt: A_5ZR4S1T1-qtq1uhpESRA - partials-ca-linux64-shippable/opt: d1g4IElMTvS0ZleVN6Aiew - partials-ca-macosx64-shippable/opt: UQsF_MHqRauVWHbyYIfLTQ - partials-ca-valencia-linux-shippable/opt: BC3rlAnNQKCw4JGWnYmRcA - partials-ca-valencia-linux64-aarch64-shippable/opt: fsZ0XBh3Tk-pm1Q1ug1KPA - partials-ca-valencia-linux64-shippable/opt: MX5RYTUDQsuaKpSMlLt4WA - partials-ca-valencia-macosx64-shippable/opt: ESQFZVecTB2HEkVHF7mKvQ - partials-ca-valencia-win32-shippable/opt: YO4qLc7eTki16eA_wZGMfQ - partials-ca-valencia-win64-aarch64-shippable/opt: XzIokSbvR765E0lMkQuljg - partials-ca-valencia-win64-shippable/opt: NNNW8i3sTnCVU0gf88Qz4Q - partials-ca-win32-shippable/opt: c_c0Me-hRHOxNzitvLoWDQ - partials-ca-win64-aarch64-shippable/opt: fyHT7TsSRxegqmcCK4W6kA - partials-ca-win64-shippable/opt: LW1wwGzqS8eIOALgcGFuhg - partials-cak-linux-shippable/opt: IEolWDitTzq-1O07K6lwwA - partials-cak-linux64-aarch64-shippable/opt: JL1_KK4JRZOQyh6Ipy-tkQ - partials-cak-linux64-shippable/opt: PSHra6cATFC9bvLdatWUNA - partials-cak-macosx64-shippable/opt: R1sHfH4jRWWPZX2xpYQvpA - partials-cak-win32-shippable/opt: I0GFF7ImSUWHBDvWIvrAzw - partials-cak-win64-aarch64-shippable/opt: UabUi41JSESGyemQIiJy7g - partials-cak-win64-shippable/opt: NgbFfYQcSTO4r8DY3uX8ug - partials-cs-linux-shippable/opt: EqdqTm1lQE-wlSPoqtGT-A - partials-cs-linux64-aarch64-shippable/opt: c7oZOp2FTsGyIUWedGcU7g - partials-cs-linux64-shippable/opt: XrtoS4NxRtyDy0PcRUygRA - partials-cs-macosx64-shippable/opt: Hfy6o8JaTWqsEQRi9OaNng - partials-cs-win32-shippable/opt: RkzKl3khSHCZc8Mab62keQ - partials-cs-win64-aarch64-shippable/opt: dYIViG48SfGjxFJK0HZ4qw - partials-cs-win64-shippable/opt: aCSQs2CKRWG9SbZ7LgShJA - partials-cy-linux-shippable/opt: IDvF5u8LQeO12v5dl2q_aA - partials-cy-linux64-aarch64-shippable/opt: TL4FeQ4TRCC5SlIR3UJ48w - partials-cy-linux64-shippable/opt: UEPKjrLgTNKA2fa-Z_RYOg - partials-cy-macosx64-shippable/opt: POcyU_T8TI-_aDNypbMd_A - partials-cy-win32-shippable/opt: EH45PHfVSFmgzKLffzHF4A - partials-cy-win64-aarch64-shippable/opt: SfLXYOs7S9uJwxEN4HO01Q - partials-cy-win64-shippable/opt: IvX8zBBPQYOvI-MQ6zjq-w - partials-da-linux-shippable/opt: T_s2cXSKT6asJLIFLJOJDg - partials-da-linux64-aarch64-shippable/opt: Bqx6m733Q1S3Yxi3NycFYQ - partials-da-linux64-shippable/opt: WI9DDSnnQI6ILyPkPv5TaQ - partials-da-macosx64-shippable/opt: JhlT8pwgTjGDs5ZtNrHZhA - partials-da-win32-shippable/opt: Os-unKVSSG-5v6U9tiomAg - partials-da-win64-aarch64-shippable/opt: Fad0l2BQQ2SZSlVvOjMhhQ - partials-da-win64-shippable/opt: d1geZYCFTeCqWiHjoaL5lA - partials-de-linux-shippable/opt: Zm8AoTxZTWySHfEpiodZpg - partials-de-linux64-aarch64-shippable/opt: MbUveRvLSLm8EajEA7xPjw - partials-de-linux64-shippable/opt: IXvOZ0XiRbuFQFKZQyID4A - partials-de-macosx64-shippable/opt: Bbj3X274T0ilb2adaTxNag - partials-de-win32-shippable/opt: Jvr2tBZ6SgeVtW1AVYmjOQ - partials-de-win64-aarch64-shippable/opt: EP2hEPyeRbK3g7ldb_Gyew - partials-de-win64-shippable/opt: Cpv7BZHtTk-YLLL57MflFg - partials-dsb-linux-shippable/opt: PkL63OfVRDCDtFeFzGPS7A - partials-dsb-linux64-aarch64-shippable/opt: SwTdJoKqTp2sUzWMRo21ZA - partials-dsb-linux64-shippable/opt: EmVxI5HHRMmjZsEpvw2mlA - partials-dsb-macosx64-shippable/opt: ftWAek6YTlu7t13vc08H8g - partials-dsb-win32-shippable/opt: E3dvnou9RSSxdPCijd4DZg - partials-dsb-win64-aarch64-shippable/opt: IDzwt3YqQVapPnI3_EtQSQ - partials-dsb-win64-shippable/opt: NKPC9q_JT4avD6BsmqLXlQ - partials-el-linux-shippable/opt: af7eEx6TTuWY6XnfV7Fqrw - partials-el-linux64-aarch64-shippable/opt: QBuez6sJQ7WF8ZP3LXG22Q - partials-el-linux64-shippable/opt: Oc433GBmQNOPxoWLBWQh7Q - partials-el-macosx64-shippable/opt: UW5bqdb4QN20IRRyl9-Idw - partials-el-win32-shippable/opt: fCOxxa6nQpym03hDfOh48A - partials-el-win64-aarch64-shippable/opt: ClMSBsAFRP217kS85zRmgg - partials-el-win64-shippable/opt: BG_fVK2ZSh2cmcJShgvvZA - partials-en-CA-linux-shippable/opt: XnVdf3-bRf-fBIlhFZMFhw - partials-en-CA-linux64-aarch64-shippable/opt: XCyxR_tJRwmcvE-CPqdCmg - partials-en-CA-linux64-shippable/opt: ZtsMSb2kQTin6odIU2rLaA - partials-en-CA-macosx64-shippable/opt: Dr5EBeoISuir9Nljl4rLsQ - partials-en-CA-win32-shippable/opt: bymVEMq4TDi8d4h9w6hmyw - partials-en-CA-win64-aarch64-shippable/opt: VrPRjCoHTXu9HsMGqTTYUw - partials-en-CA-win64-shippable/opt: SNzy4yb6QC2oqMNHMHcyMw - partials-en-GB-linux-shippable/opt: CY5Wr4G4RzSXZcaS0Q0w8Q - partials-en-GB-linux64-aarch64-shippable/opt: cDPznoewQ4WoaaK2Zx0LVg - partials-en-GB-linux64-shippable/opt: GRI_Xuv-RHuU7wD5dvRVhg - partials-en-GB-macosx64-shippable/opt: aSmiXm_jSe6OCE52JjDHfg - partials-en-GB-win32-shippable/opt: YRxJS33nRuyzJuz4EJEm5A - partials-en-GB-win64-aarch64-shippable/opt: DXIm1aKiQCKM7GWTE-o5tQ - partials-en-GB-win64-shippable/opt: Xr9PE1gTRDmDWEh6fkXNHQ - partials-eo-linux-shippable/opt: B7U3nbz7QiqskVBc-CWiMA - partials-eo-linux64-aarch64-shippable/opt: FNUYYDpbSaOtW9lqP6hwAA - partials-eo-linux64-shippable/opt: VfmFwD3WToKOz6A8ht-u8Q - partials-eo-macosx64-shippable/opt: IziMd4imR52mqpQMCh8xYQ - partials-eo-win32-shippable/opt: NYGhyXl2Si6rbxb1ry867g - partials-eo-win64-aarch64-shippable/opt: dEqRXRrZS_-trXzQvEvbjA - partials-eo-win64-shippable/opt: RR673y2CTsCiRx4q-krXhA - partials-es-AR-linux-shippable/opt: ciwirBDyQWmCR4wdjTUK5Q - partials-es-AR-linux64-aarch64-shippable/opt: dLyOWDJQQQWyDTeZ2lq0WQ - partials-es-AR-linux64-shippable/opt: SvCmIWxLSU2ec0DsgynmWA - partials-es-AR-macosx64-shippable/opt: fJRmkGSbQtiPBbo9qwK2PA - partials-es-AR-win32-shippable/opt: QUizKDymTdygVbdIsovmpw - partials-es-AR-win64-aarch64-shippable/opt: e7w6YHUNRpSbWzGjSGyvYw - partials-es-AR-win64-shippable/opt: UAnEalbFRcWTpQzRiAhm7g - partials-es-CL-linux-shippable/opt: bNgG0oGpTGC4QPFfl6Tv-A - partials-es-CL-linux64-aarch64-shippable/opt: XLUVBhwvSRixncTBJ3YWBA - partials-es-CL-linux64-shippable/opt: H7bwmkEXSA-6WOLcmhhdPQ - partials-es-CL-macosx64-shippable/opt: KMiVJtwcQWG3--EOPs_cng - partials-es-CL-win32-shippable/opt: CmgnSxrTQmG_fBEqEw-dmw - partials-es-CL-win64-aarch64-shippable/opt: JHdMWQhvSnajzjaL4Y6tfQ - partials-es-CL-win64-shippable/opt: fYAGjc5SSByQ2DaSMD9GgQ - partials-es-ES-linux-shippable/opt: MWNT2id0QSKWiFPhXwL8BQ - partials-es-ES-linux64-aarch64-shippable/opt: d0p7bXbvSe6vSBQkR-nfVQ - partials-es-ES-linux64-shippable/opt: F6rIG1NbTTC3ZCGV0hxieQ - partials-es-ES-macosx64-shippable/opt: e5PXbBC9TnW1i1phhrP-AA - partials-es-ES-win32-shippable/opt: CLjC1mTzRMqsYUcvSVSlPA - partials-es-ES-win64-aarch64-shippable/opt: N-lPz29BS4mkatrIqEFGHQ - partials-es-ES-win64-shippable/opt: QAnkwvtAQC2x-11iyaCZ3w - partials-es-MX-linux-shippable/opt: TFKCtqGeQV6ldsFNqYqwrQ - partials-es-MX-linux64-aarch64-shippable/opt: GVkQwI1PTbSKzVozKXcPZQ - partials-es-MX-linux64-shippable/opt: JWHfmH6BTEyhVIji--mFPA - partials-es-MX-macosx64-shippable/opt: UNLwsyNBTzmzmSzSNvJijA - partials-es-MX-win32-shippable/opt: DTiJ8cOxQR6fU6fkRMLCxQ - partials-es-MX-win64-aarch64-shippable/opt: DADmSP0RS_G12RnYfTN8zQ - partials-es-MX-win64-shippable/opt: OwR_rMpkSpWBtzr7_wrlWw - partials-et-linux-shippable/opt: Dj4muvyITy6ldIdp27oVwA - partials-et-linux64-aarch64-shippable/opt: KXJ7NKvzQ9m-zDbC-8S1MA - partials-et-linux64-shippable/opt: aK1qdsp3SqmMUQ4ZXyoj9Q - partials-et-macosx64-shippable/opt: XLK0jRk6SeuEKEjikIcJ9w - partials-et-win32-shippable/opt: WIE47dy8THuWBFfUfiw2OA - partials-et-win64-aarch64-shippable/opt: O-FEUIIMQyyGIz9Ua0UIbA - partials-et-win64-shippable/opt: dWg9nADkQ6CKgYRamSmFmg - partials-eu-linux-shippable/opt: cZ0SiQxXShaIKETbK9LoEg - partials-eu-linux64-aarch64-shippable/opt: arPoyKMGTnCYd-bgM965jg - partials-eu-linux64-shippable/opt: DtlkM0rFSWqfZfwuTnjOXw - partials-eu-macosx64-shippable/opt: P-F3Lxy7Samp7YKUjnRjrQ - partials-eu-win32-shippable/opt: LTC8HQIGQam2yYFSIghyXg - partials-eu-win64-aarch64-shippable/opt: L1qXfR60TdGTghlR6ShL3w - partials-eu-win64-shippable/opt: Lg2w0_YjQyWNmhz3dlhlUQ - partials-fa-linux-shippable/opt: CWcBiXjiSea7axeBRe0iyQ - partials-fa-linux64-aarch64-shippable/opt: ZR-buUZAQzKfreytJ3Xcrw - partials-fa-linux64-shippable/opt: amTvll3ySj62O_C7PXZadw - partials-fa-macosx64-shippable/opt: X3XCJU8jQnO8orWDIKWE0w - partials-fa-win32-shippable/opt: Y84xuFjeRf6JEiNvzTm-lg - partials-fa-win64-aarch64-shippable/opt: Fr1Y4SU3QUC5ldCPzZ5-8g - partials-fa-win64-shippable/opt: GjzNXGEBQ_i21tF15nLO5A - partials-ff-linux-shippable/opt: Z0P_0a4NRNaPJDhOxzRBaw - partials-ff-linux64-aarch64-shippable/opt: djkMnr9MR_C1X3RaexAblw - partials-ff-linux64-shippable/opt: al6JodRLRFGbAIihHGspKw - partials-ff-macosx64-shippable/opt: OmjzQtRKTAKcrHun6xaC4g - partials-ff-win32-shippable/opt: afrqjNr0RHqDapOepsJ95w - partials-ff-win64-aarch64-shippable/opt: V4pL-3eWTACdqxGIJEtDbQ - partials-ff-win64-shippable/opt: KGb9Qs0YSgSO_kJv4YDCMA - partials-fi-linux-shippable/opt: Z-rtvNS-TDqtvtUdf5eW3g - partials-fi-linux64-aarch64-shippable/opt: M0gik3YHRTufnxyenv8uUg - partials-fi-linux64-shippable/opt: K5T6IzjbQaqSJ4cCXulyLA - partials-fi-macosx64-shippable/opt: ZsDy_ZOaQKKi1zyXA2dOLQ - partials-fi-win32-shippable/opt: KZ9bI3lJQG2trY0IH0bM0g - partials-fi-win64-aarch64-shippable/opt: DUC6kjQxQayc4RqxVOQlNA - partials-fi-win64-shippable/opt: YjzN23P5RFybc02EezClQA - partials-fr-linux-shippable/opt: Itu3oChsTJywCq2SIwKmZQ - partials-fr-linux64-aarch64-shippable/opt: aDZzOYsRQS2m7RR4qYp1wA - partials-fr-linux64-shippable/opt: JdJm9su4QCa3m1cxdyhqLA - partials-fr-macosx64-shippable/opt: aOksW3EmTIuGmEuK6Db0eA - partials-fr-win32-shippable/opt: FfezmDTRROiG0wgTtfhJ4A - partials-fr-win64-aarch64-shippable/opt: deWtZSbxTm-gofGMSqgukw - partials-fr-win64-shippable/opt: VGq68ib1QM-ZCNB4IvpLBw - partials-fur-linux-shippable/opt: eluDwGAiTlWUaZzM5niY5Q - partials-fur-linux64-aarch64-shippable/opt: dZyLF-PqTPG9iHHtw324rg - partials-fur-linux64-shippable/opt: Mkn9rhnRTz66rELOus002A - partials-fur-macosx64-shippable/opt: MwO3OUYLRlyzdsG7cHIRYg - partials-fur-win32-shippable/opt: R-8bgv3LRZqt-a3mASGzaw - partials-fur-win64-aarch64-shippable/opt: SgbvgOa7Tny7lPVLCH3aLA - partials-fur-win64-shippable/opt: TKMtDpq4Sf6ZjDChxhTjjw - partials-fy-NL-linux-shippable/opt: TMTHXsw7QzOH2h0S_7YcTA - partials-fy-NL-linux64-aarch64-shippable/opt: JP8fcfySSb-pE09PiCdxyw - partials-fy-NL-linux64-shippable/opt: JpGccDkYRCCgSk0AxzGiZw - partials-fy-NL-macosx64-shippable/opt: RlOELqbtTzalKEv-OstPmA - partials-fy-NL-win32-shippable/opt: DxK8e66WQgWbIUahtDVFFw - partials-fy-NL-win64-aarch64-shippable/opt: CfE_6x8mTp2RicVg2Lq31g - partials-fy-NL-win64-shippable/opt: dK4FaTeQTiGS3j0PXLF3aw - partials-ga-IE-linux-shippable/opt: QQfDFtXQQnSzwlx7qYNl-Q - partials-ga-IE-linux64-aarch64-shippable/opt: PXvl_jMVSx6bKLfwktJtaA - partials-ga-IE-linux64-shippable/opt: apWb5etaTge_Ltw2htY5Kg - partials-ga-IE-macosx64-shippable/opt: G6B5WAdoRCWbJGrL3vzGsQ - partials-ga-IE-win32-shippable/opt: eoUdOn3rSW6VpCW_UgiMyQ - partials-ga-IE-win64-aarch64-shippable/opt: bYXeC4IVSJKNJcCuDfZotg - partials-ga-IE-win64-shippable/opt: FMABI0PcTvWujbrbbsKTMg - partials-gd-linux-shippable/opt: RZkTri7HQSOWSowUxzpD3Q - partials-gd-linux64-aarch64-shippable/opt: ZpNCfeACSKqUdiTfkLwOQg - partials-gd-linux64-shippable/opt: FLArvl4OTaK7Q4M7T3vK9w - partials-gd-macosx64-shippable/opt: bzd_vX_VTPeIeIiGt2bk9A - partials-gd-win32-shippable/opt: XEXDY9x2QjSky-1TadzBTA - partials-gd-win64-aarch64-shippable/opt: GD2GcVOXRGKBks9H-chwCg - partials-gd-win64-shippable/opt: Dn1RHlknRc29RUZOG5YYrA - partials-gl-linux-shippable/opt: BJT43G4nT3GUbFQUfEDfQg - partials-gl-linux64-aarch64-shippable/opt: RZZelidfTh-GEB-Xo3OQLA - partials-gl-linux64-shippable/opt: DeHOvzceSuOYtUfjFiyqJQ - partials-gl-macosx64-shippable/opt: a3nHHUT0RvyL1HzftFKtYQ - partials-gl-win32-shippable/opt: B27vY_xCSxysqwu-wkKyqg - partials-gl-win64-aarch64-shippable/opt: Xfzme2IORFihP6WsJN49Mg - partials-gl-win64-shippable/opt: PBe-8LBrQ9yRGmKex_4Uvw - partials-gn-linux-shippable/opt: SjuwY7QKTSaJkhCaaSHAxw - partials-gn-linux64-aarch64-shippable/opt: PAeHNy8IRAauXRm3iWi2Gg - partials-gn-linux64-shippable/opt: Y0H-1WQaQqGSGrb6E6nx-w - partials-gn-macosx64-shippable/opt: WwW1rQS9SiOTnwpjAYXCpQ - partials-gn-win32-shippable/opt: VzwpLFDNSgWaDx7P5suTUw - partials-gn-win64-aarch64-shippable/opt: PdF2Nx_aQbq5ngrUMPsvcg - partials-gn-win64-shippable/opt: YbOHFf0QRO217etJGcO6HA - partials-gu-IN-linux-shippable/opt: LOr6IyMNTeiaR4yDTUmBTw - partials-gu-IN-linux64-aarch64-shippable/opt: feoIFR87SAOi_LKves70lw - partials-gu-IN-linux64-shippable/opt: VWC0gL21QUaRdlREcNjsxA - partials-gu-IN-macosx64-shippable/opt: Do3bGajbTSG925KNqrg32g - partials-gu-IN-win32-shippable/opt: ZemZHdPhT2yPJVk49NOZTA - partials-gu-IN-win64-aarch64-shippable/opt: RVRixcwGQ-Kk8IUXkt9XXg - partials-gu-IN-win64-shippable/opt: d2MxHNQ5R9uS-FJ98XR76w - partials-he-linux-shippable/opt: Fnz5QqotS5ilZQj9SHiY1w - partials-he-linux64-aarch64-shippable/opt: c8cApzGiRUO0L4iztoVq4A - partials-he-linux64-shippable/opt: DamAg-lBSdaT5jcIF7FYKw - partials-he-macosx64-shippable/opt: FdU5rQobT-yOj6qrQVb4lA - partials-he-win32-shippable/opt: U7gtyl1ZRne-thZugkk_1g - partials-he-win64-aarch64-shippable/opt: Zy_4WfsNTrOXmue7HbeU5w - partials-he-win64-shippable/opt: fjX_ZcbfSkOiNn-0C422Tg - partials-hi-IN-linux-shippable/opt: c004cMqvSvCbJYq_EOvZ9A - partials-hi-IN-linux64-aarch64-shippable/opt: OkWs6SJGT-W7Vnz6GjhxSg - partials-hi-IN-linux64-shippable/opt: QFcPy6KMSd-Ia-vaH9WPbw - partials-hi-IN-macosx64-shippable/opt: dG5KJfRMRrqhL-VnqyWYiQ - partials-hi-IN-win32-shippable/opt: VSIu7KKkSMOiIBASU-sR2g - partials-hi-IN-win64-aarch64-shippable/opt: T8EiNPk-QyuZONOwaJGcAg - partials-hi-IN-win64-shippable/opt: MWLUbtR7QWKo6v_5L5C-bw - partials-hr-linux-shippable/opt: TuC_uyoLT-q8arRcDOSlUA - partials-hr-linux64-aarch64-shippable/opt: O-PaW9CfS0utIpbVztyuvw - partials-hr-linux64-shippable/opt: MSb-1hpHSSqEtFqkjtClFw - partials-hr-macosx64-shippable/opt: Dc40i88ZSx22DxonjaU0mw - partials-hr-win32-shippable/opt: EWlktPaARNW7bQJQhzNXrg - partials-hr-win64-aarch64-shippable/opt: Hiz5E3esQpuLifinlECTEQ - partials-hr-win64-shippable/opt: Ee7kCVkJQwmESYlMMpApmQ - partials-hsb-linux-shippable/opt: P5z0-tiXTReGW2wpF3kT6g - partials-hsb-linux64-aarch64-shippable/opt: K0T6EQdAS6iGKxzZRY4PaA - partials-hsb-linux64-shippable/opt: HascAL1FTjCApuQMVEb7HA - partials-hsb-macosx64-shippable/opt: XMBQnuuvTcCrce3MZ6_G2A - partials-hsb-win32-shippable/opt: BiON9EV7Sq6tJ7D7GY8-tw - partials-hsb-win64-aarch64-shippable/opt: DQTYeUjSSPK3bQgYgZZ3EA - partials-hsb-win64-shippable/opt: G2qzup50Q3mOJ0lzt05zkA - partials-hu-linux-shippable/opt: DJwHghohSe202ewCRhrGaA - partials-hu-linux64-aarch64-shippable/opt: dRMpwfdyQQSiKU1ClHC7Uw - partials-hu-linux64-shippable/opt: YzJSQf8GQG-uePQALHOFCA - partials-hu-macosx64-shippable/opt: DO6RBSK7TVO8OHJ7ddW1qA - partials-hu-win32-shippable/opt: ahzlbDUPS5KGedzxfUyC4w - partials-hu-win64-aarch64-shippable/opt: biHx5JFJTbij_J-V1zmtMg - partials-hu-win64-shippable/opt: QWJuKjUPSx-L81U7EG7PiA - partials-hy-AM-linux-shippable/opt: d198EykFT0KkHdssZm2kig - partials-hy-AM-linux64-aarch64-shippable/opt: XWHjszVqSUKSx9ulz0DY0w - partials-hy-AM-linux64-shippable/opt: Mqy4ArgGQm-LBaNrysK1YQ - partials-hy-AM-macosx64-shippable/opt: HMLQLK7RQOmtrb-2ajlH-g - partials-hy-AM-win32-shippable/opt: LyVd8WOMR4ynDKEh8jbrYQ - partials-hy-AM-win64-aarch64-shippable/opt: dxNZIXMFREaSu_Xilg4BcA - partials-hy-AM-win64-shippable/opt: RUGgsqgaQuGnFiS7F7jEEQ - partials-ia-linux-shippable/opt: JYQVCil3ROKMGlwlMSG28Q - partials-ia-linux64-aarch64-shippable/opt: amuls37YSv640PqMqvU0CQ - partials-ia-linux64-shippable/opt: KF5BvaAeSdGF_ykT_ts03A - partials-ia-macosx64-shippable/opt: Dc1nCBRHTYKDVcihejxwwg - partials-ia-win32-shippable/opt: f_VSdiFeRwq-kQmbgl2BxA - partials-ia-win64-aarch64-shippable/opt: djaKINdpSjmlDSoeNq6rVQ - partials-ia-win64-shippable/opt: fLEF4pxTTTew66ouArb8_g - partials-id-linux-shippable/opt: fgkFg76dRMeSm1i_vP-wTg - partials-id-linux64-aarch64-shippable/opt: ayPjyhnzS2q47Efo8uw7qw - partials-id-linux64-shippable/opt: Otdl7aClThean36WNDHZkQ - partials-id-macosx64-shippable/opt: BujgkQvBQpagp4z8yhB_Sw - partials-id-win32-shippable/opt: R1EOoW-DS9CCIsXwoGyn6Q - partials-id-win64-aarch64-shippable/opt: ITnUKxjTQdG5ml4avVQ90A - partials-id-win64-shippable/opt: VTOVRW9MT5-s4Ggpm_Rncw - partials-is-linux-shippable/opt: MuwkQVaeSQmlLgWyPzseNQ - partials-is-linux64-aarch64-shippable/opt: FQJClhCzRN2NMY6xXPoOJw - partials-is-linux64-shippable/opt: daRhF7C5SvK96gupBk7Z3A - partials-is-macosx64-shippable/opt: K_svJvG4RQa5AJZaZt1ANQ - partials-is-win32-shippable/opt: SZSDzhunQ5yuGh-XbOBY8Q - partials-is-win64-aarch64-shippable/opt: eCH1Yqm8QRKK9n4DZD0hqA - partials-is-win64-shippable/opt: MpTwDj53RXia4lVwqLnI5Q - partials-it-linux-shippable/opt: FoyZHXL_QPSbO_FfDFiYUQ - partials-it-linux64-aarch64-shippable/opt: KqmiDjurR7yV0pOvDDB96Q - partials-it-linux64-shippable/opt: X-0aiL6nTUywU-f7246VnA - partials-it-macosx64-shippable/opt: D-n839bFRKandfSw7CjoPg - partials-it-win32-shippable/opt: ZZCDLvVZSIKED_v1eg3bsQ - partials-it-win64-aarch64-shippable/opt: CUl2mTZXQ6WT2PyPqMFIFg - partials-it-win64-shippable/opt: bS6z4faZTialtBwoIb746Q - partials-ja-JP-mac-macosx64-shippable/opt: IKHU5awWTOmG_c9lL9IV4w - partials-ja-linux-shippable/opt: KSvbRVPpQxC0WC1RjBpgeg - partials-ja-linux64-aarch64-shippable/opt: EUVoLICxT6u2YlTtvanHMw - partials-ja-linux64-shippable/opt: I0BqSXqqR1i7jv79-8QbWA - partials-ja-win32-shippable/opt: TTQKWn8iT36doMQ_61TnFQ - partials-ja-win64-aarch64-shippable/opt: ee0yXJSqSkefyrwd3K1T6g - partials-ja-win64-shippable/opt: Y6rkTOnETOyBbAJ7VloynA - partials-ka-linux-shippable/opt: MyRNqSiBQzSbZR5VgZYxwg - partials-ka-linux64-aarch64-shippable/opt: M-lW5vu0R9iyP7MBeL30aw - partials-ka-linux64-shippable/opt: SgBsBvTdTiWWYgs7COcGvA - partials-ka-macosx64-shippable/opt: bpCEukw0Q1qE-WMwAzDkOg - partials-ka-win32-shippable/opt: FQ650MNhTmqbKeQ-48aEug - partials-ka-win64-aarch64-shippable/opt: S4GfCjvzSM2YAUWtBp9lOg - partials-ka-win64-shippable/opt: HJg2ihkPQMeEKIH-UrLjwQ - partials-kab-linux-shippable/opt: KhTaI8BQRqWGoASpJEXcAQ - partials-kab-linux64-aarch64-shippable/opt: WM4Qt1t1TO2B-80zIx1lLQ - partials-kab-linux64-shippable/opt: eF7PSZ-MTuWh51FB-06UqA - partials-kab-macosx64-shippable/opt: DjNEMgyHRCqbh5ixd6cYgA - partials-kab-win32-shippable/opt: X1ttbS8SQEetq6aBhRJN2A - partials-kab-win64-aarch64-shippable/opt: aWW4JM06S0W7Yv2k9QU85Q - partials-kab-win64-shippable/opt: fKdQMvd8TAKy0Bk4F4YIkQ - partials-kk-linux-shippable/opt: LaXn8CEXSL2ErxocQz-RSQ - partials-kk-linux64-aarch64-shippable/opt: Y940DVqISuaD6u_ExwLs9g - partials-kk-linux64-shippable/opt: PmUoYcNlRTyBHDYOsmZNQw - partials-kk-macosx64-shippable/opt: ftly0BbOT4S_-WiP7-ts-A - partials-kk-win32-shippable/opt: dM_ao5vmR-GK1lVBb7D84Q - partials-kk-win64-aarch64-shippable/opt: YpAuz447RamP-Mbtpdsy9Q - partials-kk-win64-shippable/opt: YT5SYhwASK2LXZQhgwC3aw - partials-km-linux-shippable/opt: DmKiV4IBTfCPfILb61ZbvQ - partials-km-linux64-aarch64-shippable/opt: Yw12sDd3QhucaixQHzAsNw - partials-km-linux64-shippable/opt: HUSPL9rnR-Grq6nx8lPEsA - partials-km-macosx64-shippable/opt: GE5Oe6HLTdKxBCHuXDbUrw - partials-km-win32-shippable/opt: R1Gw65zIQjyq0ZRh3zbJCg - partials-km-win64-aarch64-shippable/opt: QIN5hIddRkSKS88dcWl9bA - partials-km-win64-shippable/opt: OFY7gKzLRbGpHgLyjl-Q8g - partials-kn-linux-shippable/opt: aMiadzI-Q3aDQF-pIrseSQ - partials-kn-linux64-aarch64-shippable/opt: RtWj7Kj3RFiOpSxJ_nX8IA - partials-kn-linux64-shippable/opt: To76gj51QiOiGmXIxyp5lQ - partials-kn-macosx64-shippable/opt: auk8QM76QBCWOimwbNcV1A - partials-kn-win32-shippable/opt: BXN__jRGQNKrjb-cwf2JjQ - partials-kn-win64-aarch64-shippable/opt: emSDa8BlR5uYKugpsWMuOg - partials-kn-win64-shippable/opt: JU-huzwWSdewicGQ0BsDuA - partials-ko-linux-shippable/opt: D_sq_qHuQmaXH3aZfcfE6w - partials-ko-linux64-aarch64-shippable/opt: IpFm4KiXSRGQKsB5fjAONg - partials-ko-linux64-shippable/opt: QJgsnCIBRuWFliFGqpdCBw - partials-ko-macosx64-shippable/opt: WSIS9C2wR5ybRql85AdeVQ - partials-ko-win32-shippable/opt: Hfnd7xiyR_-TWFFQs4XUAA - partials-ko-win64-aarch64-shippable/opt: frOJkTzpRRKLekV7aFM2eQ - partials-ko-win64-shippable/opt: d9c2mR8TSiq-chFyxDwAhg - partials-lij-linux-shippable/opt: FcQILAHwQY-5IlAwEDoFHQ - partials-lij-linux64-aarch64-shippable/opt: SLQ4-hLkSICvFILT0C8-UQ - partials-lij-linux64-shippable/opt: ELWIVO1zTzO85mB9w9FVSQ - partials-lij-macosx64-shippable/opt: DEdizkYVSpykXtwl0CY5tA - partials-lij-win32-shippable/opt: fnMqDfYPQ8-6BS40KAIpPQ - partials-lij-win64-aarch64-shippable/opt: ChoCVm90Rjyalm6eo2ce-w - partials-lij-win64-shippable/opt: Xh3h8K3JRcmnMF2zpSz8Dw - partials-linux-shippable/opt: XAgt0livS8WyMzz8HIKDMw - partials-linux64-aarch64-shippable/opt: aZM4l60OTJqbpygFzX5vXA - partials-linux64-shippable/opt: WUd5wQaORHuhC7VnUfygZw - partials-lt-linux-shippable/opt: LTuLRiJtSlGHhtD4whPz7Q - partials-lt-linux64-aarch64-shippable/opt: KMGcyaEmQJmjltZ4ANrDng - partials-lt-linux64-shippable/opt: CqreplxKTS2rHDh69NtqHg - partials-lt-macosx64-shippable/opt: IFtvxXG9Tj-bYP8w7IZQkQ - partials-lt-win32-shippable/opt: AlOkl40ySSuwe2NNDkPWpQ - partials-lt-win64-aarch64-shippable/opt: OGlzY-AbTEK4-0s2B3u_pw - partials-lt-win64-shippable/opt: IGhpBsrIQe2KMGjzT6iRqQ - partials-lv-linux-shippable/opt: NsltoNpyRXGI2JMsGHkPxg - partials-lv-linux64-aarch64-shippable/opt: LD_JFnWpSg6geXrtavllkg - partials-lv-linux64-shippable/opt: Guxb09wQTEusmiTaM6W3yQ - partials-lv-macosx64-shippable/opt: KF7s02_rRvK259a_xZKPtg - partials-lv-win32-shippable/opt: VJjZWHFbQx6uJq4Jxn39BQ - partials-lv-win64-aarch64-shippable/opt: c-ckdiRoQdGQuKFPpOhxkQ - partials-lv-win64-shippable/opt: LpWUVel5TzexMOXRGV8WTg - partials-macosx64-shippable/opt: HV7FkXO8RHC5ru58LRWBvA - partials-mk-linux-shippable/opt: Ex-HBqA3S9ylbpXxHctZ9w - partials-mk-linux64-aarch64-shippable/opt: BrBkd6YTSnOYpDTuvBrBJQ - partials-mk-linux64-shippable/opt: CbuuvW2vQEizf6R7Tle6XA - partials-mk-macosx64-shippable/opt: DeC2GpCQQL2x3M0eoZbeUw - partials-mk-win32-shippable/opt: LdCjSYMhTbu62imIGHxsRQ - partials-mk-win64-aarch64-shippable/opt: bF1qunOsT9OEzHyoqfOjUg - partials-mk-win64-shippable/opt: FlVhDAgTQdqzhzEp5RSCpw - partials-mr-linux-shippable/opt: Q9xQ2zmyTO-N49n_rsj-Sg - partials-mr-linux64-aarch64-shippable/opt: B7Rv74YIRA69ftqKm2068A - partials-mr-linux64-shippable/opt: V5UNRuokTfetE-tzBQQC2g - partials-mr-macosx64-shippable/opt: cwlN2gdwT3q-G2oDU4UNww - partials-mr-win32-shippable/opt: PH2vTqf7S7Kt-AqD0sDP6w - partials-mr-win64-aarch64-shippable/opt: TMGd_4SnSVKO8BzkjFhTaQ - partials-mr-win64-shippable/opt: CPmnY995REqgQ4W_pbdkDw - partials-ms-linux-shippable/opt: Dej-MzZoQv62mrRWGLmdYA - partials-ms-linux64-aarch64-shippable/opt: ZPVXlCIoRhyuheyayMOqxw - partials-ms-linux64-shippable/opt: LeuLkVb7SOi4aNlXO3NzjA - partials-ms-macosx64-shippable/opt: HqBu097OQTWAdNDevnbqaQ - partials-ms-win32-shippable/opt: G8Woxfs9R0ix7VSpWGQbdA - partials-ms-win64-aarch64-shippable/opt: JJYIC34UTXi-DccvVXAuEg - partials-ms-win64-shippable/opt: fGfbnh9mQHmefoF6vzNEzA - partials-my-linux-shippable/opt: BV6qMOiYSqmgkTvoJIYhKQ - partials-my-linux64-aarch64-shippable/opt: Yo8EhCg5Rj-fj8LjoDSJFA - partials-my-linux64-shippable/opt: Q-98xrk0SESFbSGoxF9Ckw - partials-my-macosx64-shippable/opt: Dnw6pqQXQzKAa9HVEXMWNA - partials-my-win32-shippable/opt: YLpQElReRGCs3KZp8Iva8w - partials-my-win64-aarch64-shippable/opt: ZPOYNXX9QcyAbe-3DPw0Dw - partials-my-win64-shippable/opt: Rt0DcLv7RySdM0cu_c-Kaw - partials-nb-NO-linux-shippable/opt: GxSZbeSDSpONtuhjH9N6tA - partials-nb-NO-linux64-aarch64-shippable/opt: KoLzv45mSnWi9ghZ5uqrbQ - partials-nb-NO-linux64-shippable/opt: SN_WhgDfRTeSRv09S5vdUA - partials-nb-NO-macosx64-shippable/opt: YGJNIPzDTUCTee5tcYDGhg - partials-nb-NO-win32-shippable/opt: coIVTjZZTxeskdfi5v7ENw - partials-nb-NO-win64-aarch64-shippable/opt: O9H2b_loTLGg-r925foGaw - partials-nb-NO-win64-shippable/opt: PyLWJGV2Tai510aKw40G0w - partials-ne-NP-linux-shippable/opt: X-8YVoddRomDBjBjPkwxHQ - partials-ne-NP-linux64-aarch64-shippable/opt: R1ATRRKTT-uoC0YuX4-66Q - partials-ne-NP-linux64-shippable/opt: NE8qBlqQSneEBBW63c3HaA - partials-ne-NP-macosx64-shippable/opt: JK_4isIXSVSg_vReT0auGQ - partials-ne-NP-win32-shippable/opt: eUvE2yP1TdGDYvKyTFBqTg - partials-ne-NP-win64-aarch64-shippable/opt: DtPGQfvWRxuWarFSYf_QHA - partials-ne-NP-win64-shippable/opt: XbYrZvhGQye7ULtDIMXDEw - partials-nl-linux-shippable/opt: ISozhmGtQk2vOTLQWSg19w - partials-nl-linux64-aarch64-shippable/opt: VCrZq6wLQomw1AQEhdQnBQ - partials-nl-linux64-shippable/opt: W5hoENumSeqF7J1St-RUMg - partials-nl-macosx64-shippable/opt: Y-jGwFRsTF-bR4cXaGsEjA - partials-nl-win32-shippable/opt: GaEFvszYTre-l3F7P_DG0w - partials-nl-win64-aarch64-shippable/opt: WeEb0seCSm-MVNWsJuuybg - partials-nl-win64-shippable/opt: Et_Jy1R3R9ml8jNaYZggPw - partials-nn-NO-linux-shippable/opt: efECbG_ERwagscIYs42Pug - partials-nn-NO-linux64-aarch64-shippable/opt: BygBarHvS4GCaybxNKv5aw - partials-nn-NO-linux64-shippable/opt: UgJD6UxBRbWWyKUQvdU-lw - partials-nn-NO-macosx64-shippable/opt: NmYvtq8KTZa0ry1pzcPrkQ - partials-nn-NO-win32-shippable/opt: RmcHCJ1yRoy036JyG2YCGg - partials-nn-NO-win64-aarch64-shippable/opt: TwLlGwzERQCu6eCmz1qSMA - partials-nn-NO-win64-shippable/opt: X6P3KfBISBeDgKaJgAQ_kQ - partials-oc-linux-shippable/opt: TvAvIAXiTyqY1S7LY5J_eA - partials-oc-linux64-aarch64-shippable/opt: YMHc2HADS3Kw8bYvGzpVeg - partials-oc-linux64-shippable/opt: GhQevsb3SVGEbnhoOp9eYA - partials-oc-macosx64-shippable/opt: JJpE-X3WSRKv8wiVVOvihg - partials-oc-win32-shippable/opt: LllcLpsvS02qdUSbY4MHCQ - partials-oc-win64-aarch64-shippable/opt: KZiyQjO7TCqZUaXinqx2TQ - partials-oc-win64-shippable/opt: REZEWQlfRMqsJhgCzLQjqg - partials-pa-IN-linux-shippable/opt: Bvh0sYF1TcOWEJTmjLxnBA - partials-pa-IN-linux64-aarch64-shippable/opt: f_YnaLgIR4iKXO66ckIrKA - partials-pa-IN-linux64-shippable/opt: EI4Rkj-xSR-I4ZLrjBKyQg - partials-pa-IN-macosx64-shippable/opt: JBsPQCNrScaE1Hhi12pFgg - partials-pa-IN-win32-shippable/opt: ZSd0-kMJQv29UpTMD6--7w - partials-pa-IN-win64-aarch64-shippable/opt: D27e1EdBTxua0D667AEt6g - partials-pa-IN-win64-shippable/opt: PWsoq5WCR-epC8d34cNGQQ - partials-pl-linux-shippable/opt: T5NeZXxjTZqyvf7bCQnSKA - partials-pl-linux64-aarch64-shippable/opt: Il6XpgCfTE2Bn89PxK0grg - partials-pl-linux64-shippable/opt: YcxU0K24TTuc1tS9oeAtpw - partials-pl-macosx64-shippable/opt: f4vV1H4lTyeRFS0MCy6LnA - partials-pl-win32-shippable/opt: Snj3eAYlSyqxA8VAuC8pig - partials-pl-win64-aarch64-shippable/opt: aetHmkoXSeCRjsTmJ8pLXA - partials-pl-win64-shippable/opt: ID6vFXCsTN28viahgzu8-g - partials-pt-BR-linux-shippable/opt: Xi1k8LQsT-qSET2tm5DO1A - partials-pt-BR-linux64-aarch64-shippable/opt: DjqDksg-TYGYZ8X_CYlnyg - partials-pt-BR-linux64-shippable/opt: X4PuTTZyTRK_qclZMTAX7A - partials-pt-BR-macosx64-shippable/opt: IMu6GxFCTmSPka5_dZZrTg - partials-pt-BR-win32-shippable/opt: OWrahA4_RdO_bSg2Z2_97g - partials-pt-BR-win64-aarch64-shippable/opt: e2oC3GPhScW1XHrJs8wqvw - partials-pt-BR-win64-shippable/opt: BuUWwyerQgCVpPNCe2Ju3A - partials-pt-PT-linux-shippable/opt: fR9eunfZR_2f90ODgG1JUQ - partials-pt-PT-linux64-aarch64-shippable/opt: HDWdHmDvSw6jk31dz3b8sQ - partials-pt-PT-linux64-shippable/opt: U9pIwtiESX-96LBYOhRyTQ - partials-pt-PT-macosx64-shippable/opt: QNqJk9m3Qfeec4_dyfEo-g - partials-pt-PT-win32-shippable/opt: dHi9XtphS9uGlzhd423AOA - partials-pt-PT-win64-aarch64-shippable/opt: XzxtzqN7Q96uEI0Lk8C1DA - partials-pt-PT-win64-shippable/opt: bYa3WpjTQGqLETqQ0I7K2g - partials-rm-linux-shippable/opt: cnyneR2JQDCMfjcIAlSxrg - partials-rm-linux64-aarch64-shippable/opt: GnGr-am9ROOwT1LTQF9Itw - partials-rm-linux64-shippable/opt: GCBGKfYFQAiE-R6D8VgDLQ - partials-rm-macosx64-shippable/opt: bket2YfUSpC0VhREkr_7pg - partials-rm-win32-shippable/opt: U13ntBv8TZCcMA9pFjiY0w - partials-rm-win64-aarch64-shippable/opt: VSCY1QNGSGmUlF2KzssWEQ - partials-rm-win64-shippable/opt: CCqHa8yvTOSI7nYuDTZZ6g - partials-ro-linux-shippable/opt: AWG6uERRQqeuvyohoCIcbg - partials-ro-linux64-aarch64-shippable/opt: OoBhCDLlQzSuQW2j5JTe2A - partials-ro-linux64-shippable/opt: ah5iuM0eTxqfW6lsEbrlUg - partials-ro-macosx64-shippable/opt: LGLUJaOJQsaemh7E5mAcfg - partials-ro-win32-shippable/opt: NQfUeDnCQUSmnn2YgIriBQ - partials-ro-win64-aarch64-shippable/opt: cYpow98CQieHZCWlM1OLAw - partials-ro-win64-shippable/opt: BusdTcpNRC6dF3v_qiwbHA - partials-ru-linux-shippable/opt: V08C3MNkTcyM8pcF9nsfZA - partials-ru-linux64-aarch64-shippable/opt: X1HBZcMYQNeEUitExqFjqg - partials-ru-linux64-shippable/opt: BwJJQX52SmW7cv33jsa6iw - partials-ru-macosx64-shippable/opt: Ffazc41uSmmEUigpMhPNhg - partials-ru-win32-shippable/opt: f2FHEBI9RtCQWSZxEJ36Sw - partials-ru-win64-aarch64-shippable/opt: abI6Ejl0RROg0QAa8kOofw - partials-ru-win64-shippable/opt: BoOpRcfIT9W_SjNAOcidcg - partials-sat-linux-shippable/opt: Nol6SSL7SjKNzGWv49e_lw - partials-sat-linux64-aarch64-shippable/opt: dXdYa2IWRAe5NV97RvHFcw - partials-sat-linux64-shippable/opt: YqgueiblSaqEcBCdz6jN4g - partials-sat-macosx64-shippable/opt: PIkQx5B3SiqssMSeg2_EHg - partials-sat-win32-shippable/opt: KmunBR9cTsijnimm3bfK-w - partials-sat-win64-aarch64-shippable/opt: bucvP7iiS42bRENZyZpcow - partials-sat-win64-shippable/opt: R3si5DlTRfmQGeU9jcnPtg - partials-sc-linux-shippable/opt: D9loYRVES6qSTED5JgsdLA - partials-sc-linux64-aarch64-shippable/opt: RglimdzwT7-MTOeQKJyVsA - partials-sc-linux64-shippable/opt: BMsEe_qkQsynoeNzqRRmLg - partials-sc-macosx64-shippable/opt: EmiCO8_KT2CF52jk1JSsoA - partials-sc-win32-shippable/opt: GxG-qdrTRAS4f2BpatbfHA - partials-sc-win64-aarch64-shippable/opt: FyOT10_uS2KN_3_licnjEQ - partials-sc-win64-shippable/opt: RSFpcQLTQvuFPHdsh-KjyQ - partials-sco-linux-shippable/opt: EPcw1RC6SU6K7Ft9SANMcQ - partials-sco-linux64-aarch64-shippable/opt: Hcl5aURDTyq5u69UJ6bnhQ - partials-sco-linux64-shippable/opt: KwjsyLL1QqK77o9xlLvNFQ - partials-sco-macosx64-shippable/opt: R5NG92hvTGK59Xkk0uUw-Q - partials-sco-win32-shippable/opt: OAP1R9MQRyGSV7saVP7tQQ - partials-sco-win64-aarch64-shippable/opt: b21GdpG1ShG2OB8yF9D0-w - partials-sco-win64-shippable/opt: bEL1TTaITq-MDsMA4DktTA - partials-si-linux-shippable/opt: ek5PKJCdSwmoSr8XEmD5dw - partials-si-linux64-aarch64-shippable/opt: CHzMO09wT1W1k_Ga12PLZQ - partials-si-linux64-shippable/opt: DsM-tgUyQbiZVMz40797Zg - partials-si-macosx64-shippable/opt: Y8ybT7eSSTuHPwd6RFMwrA - partials-si-win32-shippable/opt: a_jnsNkKS0m_tYqlyFSLtw - partials-si-win64-aarch64-shippable/opt: TRFyNtryT820_C6DkeJExQ - partials-si-win64-shippable/opt: CLguCUtySJm7WNPoxh1OwQ - partials-signing-ach-linux-shippable/opt: Z-QeIxL2TKKAXROHXZTwLw - partials-signing-ach-linux64-aarch64-shippable/opt: ZQQCZ9i9TAufpyZ4oFZn3Q - partials-signing-ach-linux64-shippable/opt: bHwetmIsS3CO8UIYvkdVhw - partials-signing-ach-macosx64-shippable/opt: Nd0Glt9CQjCIRY-0wNLrNQ - partials-signing-ach-win32-shippable/opt: Rlla88N4Q4OAoimFqhRLEA - partials-signing-ach-win64-aarch64-shippable/opt: UR_Xg8WrSI6BOIXX5A7MlA - partials-signing-ach-win64-shippable/opt: eUfNErI3RPGCH0rot73Zeg - partials-signing-af-linux-shippable/opt: DsvFV_6DR72fQ8vgOEgCmA - partials-signing-af-linux64-aarch64-shippable/opt: clz2CfTrThyCcNtiXl6FuA - partials-signing-af-linux64-shippable/opt: Pdtxgy2DQzuEOM5M5e0Yxg - partials-signing-af-macosx64-shippable/opt: TwgkyCnxQrKp43nE9-yP0w - partials-signing-af-win32-shippable/opt: CAwYaLv5QGCjLhDstCjvfA - partials-signing-af-win64-aarch64-shippable/opt: Rz06Lmw8S_iWF0SSxRwJig - partials-signing-af-win64-shippable/opt: deBOs_IJRPCnNqss5gBndw - partials-signing-an-linux-shippable/opt: KEllbWcMSpC4gHObXLCH7A - partials-signing-an-linux64-aarch64-shippable/opt: MQclB7UQSOGb9tLWzojrLQ - partials-signing-an-linux64-shippable/opt: e0hbhsHlTBuAhsF0zQuMEw - partials-signing-an-macosx64-shippable/opt: Yt3DbGmbRpi1bE1LID4eTg - partials-signing-an-win32-shippable/opt: fRhJLBEjQImd69BR3vvlWw - partials-signing-an-win64-aarch64-shippable/opt: HWeX3VEDT0mO0zZ4CW7BZw - partials-signing-an-win64-shippable/opt: OIWCbnsbQnisHg6lNUYyuQ - partials-signing-ar-linux-shippable/opt: dNJ-5nHbS92Cw-mOUnPLkQ - partials-signing-ar-linux64-aarch64-shippable/opt: BshkdQUvQmao-mgS9uQO9A - partials-signing-ar-linux64-shippable/opt: dN9l9BixS5CIpDa_0zuQ_g - partials-signing-ar-macosx64-shippable/opt: XvgExOKPQIOIj3QWZdNyxw - partials-signing-ar-win32-shippable/opt: W0tTb9njTdqWbupsalW3SA - partials-signing-ar-win64-aarch64-shippable/opt: XOHc_pDmRQalNpXfRmRm6g - partials-signing-ar-win64-shippable/opt: X_WQHtz-TW-p-3jFDLPHVg - partials-signing-ast-linux-shippable/opt: GpHcbSdlRtWelaFTFct_Pw - partials-signing-ast-linux64-aarch64-shippable/opt: cBk8qoIjQsyk1cfvcFpkLg - partials-signing-ast-linux64-shippable/opt: AR3e36rLRMe5br6bEdlQBg - partials-signing-ast-macosx64-shippable/opt: SYV8UR9GRrmn_0MPMur7eA - partials-signing-ast-win32-shippable/opt: CGL9fTVyTiORKj2H8vt2jw - partials-signing-ast-win64-aarch64-shippable/opt: TCCGxMptT9CCmv7Al3q5sQ - partials-signing-ast-win64-shippable/opt: BFQIJcDfSnmAQcSXCgJPbg - partials-signing-az-linux-shippable/opt: CbSdssjkTu69lC-7-hbvcw - partials-signing-az-linux64-aarch64-shippable/opt: PA6kkAbWRjOAXbKYfoB_lw - partials-signing-az-linux64-shippable/opt: HnYCnr8cQZCeKzD2Pq1M5Q - partials-signing-az-macosx64-shippable/opt: D-epULTFSHmXVvWRt0SwPA - partials-signing-az-win32-shippable/opt: QG6AG61NQLGXa7-eCy9o6g - partials-signing-az-win64-aarch64-shippable/opt: VyAA50gqSw-bzOYggk_cCA - partials-signing-az-win64-shippable/opt: ABbvdYt2RDigtae2MJ6Tow - partials-signing-be-linux-shippable/opt: JwKlhkUmSyuZk-8XzGYTQA - partials-signing-be-linux64-aarch64-shippable/opt: AdtnjqEqSnmoNTijPorRug - partials-signing-be-linux64-shippable/opt: V7_CbytlRrmVaoe2RahTRA - partials-signing-be-macosx64-shippable/opt: YK407jbFQI-EDGK2Ic0lvw - partials-signing-be-win32-shippable/opt: A360yh5AQZe0Hzf12cGcJw - partials-signing-be-win64-aarch64-shippable/opt: EwoTsNYjQSW85L0VFFkqiA - partials-signing-be-win64-shippable/opt: OhtY_zKaS_uGYnI0BfpThQ - partials-signing-bg-linux-shippable/opt: dXPJq78ISGutYFt0sQOBIw - partials-signing-bg-linux64-aarch64-shippable/opt: P_-pOdpoTTCRzqtFrtzypw - partials-signing-bg-linux64-shippable/opt: bXfdanDQQ6u6x7cu3lFNGA - partials-signing-bg-macosx64-shippable/opt: W1hmitz8Qci9t-7RqzugVQ - partials-signing-bg-win32-shippable/opt: Zreb5V7xSSmC3oZ_IJUK-A - partials-signing-bg-win64-aarch64-shippable/opt: LgWjLQX9SBipka2FipwTKA - partials-signing-bg-win64-shippable/opt: I-A3nKFQRa6odrGzb-_IUg - partials-signing-bn-linux-shippable/opt: ZOU-LYKZTA20R2FCQYY44A - partials-signing-bn-linux64-aarch64-shippable/opt: EjCY2rGuTLmgdQNvPZHUiQ - partials-signing-bn-linux64-shippable/opt: GjgUpJ-kRJi-7Yy6Nud4gw - partials-signing-bn-macosx64-shippable/opt: Hr3-0h5DRcyby0SHydiQdA - partials-signing-bn-win32-shippable/opt: PhtW3u0ITk2TngzMFF70hw - partials-signing-bn-win64-aarch64-shippable/opt: CmvZgdTlTrScrAzkgrh8_Q - partials-signing-bn-win64-shippable/opt: YtHVyOoHTq2h7DbIFFA7VQ - partials-signing-br-linux-shippable/opt: ShMM6PfQR_-uVr5J5AmADQ - partials-signing-br-linux64-aarch64-shippable/opt: Na9LLMrsSqSRK_zObCN1Mw - partials-signing-br-linux64-shippable/opt: HTMpPLAWRvyte5hXFrZKUg - partials-signing-br-macosx64-shippable/opt: U5ACcSuLRwGQFgdVX-eE4g - partials-signing-br-win32-shippable/opt: Nk8485njTkiRnMYYMJ7-4A - partials-signing-br-win64-aarch64-shippable/opt: PMAqdfXvS1aAj7hKhqCQiA - partials-signing-br-win64-shippable/opt: GfOKGUMNQMm91KifIfFqhg - partials-signing-bs-linux-shippable/opt: Nh5MXnZ7SPetgXcbkdgn_g - partials-signing-bs-linux64-aarch64-shippable/opt: cuMK4dDvTou6GtrtQfMvMg - partials-signing-bs-linux64-shippable/opt: ZwqU98vLRw-PPWbHatVidw - partials-signing-bs-macosx64-shippable/opt: M4_l00LOSc-FELL8cEjkmg - partials-signing-bs-win32-shippable/opt: QH7nBq9MTDCLk_F-MErWhQ - partials-signing-bs-win64-aarch64-shippable/opt: UqTPIubdSyGEf6A2PgcPBQ - partials-signing-bs-win64-shippable/opt: Pdi_EuHXRAiBEjwWHE5ZEA - partials-signing-ca-linux-shippable/opt: Wl-CE55HSNqMx8tHW3ab_w - partials-signing-ca-linux64-aarch64-shippable/opt: bre23W3FSmu_Ue024nupLw - partials-signing-ca-linux64-shippable/opt: EB3GUyw3Sge6v8LuDH6t2w - partials-signing-ca-macosx64-shippable/opt: TiXUh2_ITdKE4zq1Hm6QrQ - partials-signing-ca-valencia-linux-shippable/opt: Sbzmr4A0SpqN3n4io0XDHw - partials-signing-ca-valencia-linux64-aarch64-shippable/opt: JcGluwTDTe2-Wt85wSwKwA - partials-signing-ca-valencia-linux64-shippable/opt: ED9jX4daQ2WbSNb6bufXNw - partials-signing-ca-valencia-macosx64-shippable/opt: PtOUlY5YTlOdnvwDlGF5oA - partials-signing-ca-valencia-win32-shippable/opt: VOwlaNnVQR68A1qFE7GNvA - partials-signing-ca-valencia-win64-aarch64-shippable/opt: ft6WgBOOQMa20ktGesrizQ - partials-signing-ca-valencia-win64-shippable/opt: dQan66BKTdi0H0IrCgqm2Q - partials-signing-ca-win32-shippable/opt: KMss-NLLQnuPlJxmGhSP2w - partials-signing-ca-win64-aarch64-shippable/opt: QtedG1smRKWqtx26OMKCfw - partials-signing-ca-win64-shippable/opt: PpWNQR4FSUe6xs6HYX2ACA - partials-signing-cak-linux-shippable/opt: VrLkzqnuT4KvDkdg3vqwmQ - partials-signing-cak-linux64-aarch64-shippable/opt: QWkWqcwFQg2q_FFlHZh_3w - partials-signing-cak-linux64-shippable/opt: IuLeujGaReGA2vmx1jDnkg - partials-signing-cak-macosx64-shippable/opt: XbXSikV4TD2dyiv6UhXEHA - partials-signing-cak-win32-shippable/opt: CcBcum_wT82iFDa-hNn7PQ - partials-signing-cak-win64-aarch64-shippable/opt: OzKaFj7XRYuW_9fBkWcQpg - partials-signing-cak-win64-shippable/opt: DO5R4Py_S7uVNt6np-XF0g - partials-signing-cs-linux-shippable/opt: JXlMQWnLTg6leCfp1zPNVg - partials-signing-cs-linux64-aarch64-shippable/opt: a1I9Fb13RHm52V-XzL-cFg - partials-signing-cs-linux64-shippable/opt: PBU6jWfiQduALTTTetv0YA - partials-signing-cs-macosx64-shippable/opt: WCVZ7fP6QzS4H93HJPU-Sg - partials-signing-cs-win32-shippable/opt: PT2ghDmTT3SKn9BVps20jA - partials-signing-cs-win64-aarch64-shippable/opt: V7ONyLosR8eoE8ucICW0vQ - partials-signing-cs-win64-shippable/opt: MZ1VbCy4S2KgaC0InyCoIw - partials-signing-cy-linux-shippable/opt: LndP_HjqS2Ktp9qVzTov9Q - partials-signing-cy-linux64-aarch64-shippable/opt: A6Zz2K-YQZ-60BzY2jD04w - partials-signing-cy-linux64-shippable/opt: MEINmM4eQsiRMiuJibHCxw - partials-signing-cy-macosx64-shippable/opt: Zx2H2nfJSSq2wrMSN0hMBA - partials-signing-cy-win32-shippable/opt: Cb7dOh0hR5yCx4Hqk5pD3g - partials-signing-cy-win64-aarch64-shippable/opt: G7qEAgfYSJCUQHMkLnTQ7g - partials-signing-cy-win64-shippable/opt: VT7zLb2ZTrGe9Zb308WvrA - partials-signing-da-linux-shippable/opt: MNy5KPOpQUSJ2XOuNqbL-g - partials-signing-da-linux64-aarch64-shippable/opt: DNlWAQKOQgS33Wg-nrifIw - partials-signing-da-linux64-shippable/opt: UsFLgZNRSDKtLnnlCKPu_A - partials-signing-da-macosx64-shippable/opt: O1CLEkDyRQuz3fz_tCLKvg - partials-signing-da-win32-shippable/opt: G4ynR7buRTu4FF1nT21rvg - partials-signing-da-win64-aarch64-shippable/opt: BwWddCQsSlaYeYluP3GbQw - partials-signing-da-win64-shippable/opt: M_7gWUbsSVKuW9uFA1iL9g - partials-signing-de-linux-shippable/opt: Y56ZETdaQlC0pVmRtVFBKA - partials-signing-de-linux64-aarch64-shippable/opt: E_STXo8kSWOufqvd3JViRg - partials-signing-de-linux64-shippable/opt: VW1R-K1nTxiN11X5jrF8XA - partials-signing-de-macosx64-shippable/opt: A22HcTiUT5Sw7Mpoierw3w - partials-signing-de-win32-shippable/opt: ZfN9FalZQOWbUzgL3MN1JQ - partials-signing-de-win64-aarch64-shippable/opt: TbbDPBKbRfOSKs0tl96aDg - partials-signing-de-win64-shippable/opt: ZbvGo5XLTwyktlQtX8-Ydw - partials-signing-dsb-linux-shippable/opt: Qeu-AxsATLuHib5Xq3tGew - partials-signing-dsb-linux64-aarch64-shippable/opt: L5pYSc6zSEq2g-cufIRY5Q - partials-signing-dsb-linux64-shippable/opt: JhBKKGkSQrO0Z3uRZa5E2Q - partials-signing-dsb-macosx64-shippable/opt: N7pklE4QQwCIPKBYa5zLPA - partials-signing-dsb-win32-shippable/opt: cmdb2EvuRz-rQO-v6MynoA - partials-signing-dsb-win64-aarch64-shippable/opt: XShtjWJVRpOWxFgJ6EtDtg - partials-signing-dsb-win64-shippable/opt: caiQvXGdQFatVRW9HrHl6g - partials-signing-el-linux-shippable/opt: b9MSaICUTJWGwSGGwhMaqQ - partials-signing-el-linux64-aarch64-shippable/opt: Ak8cD0jcTYOw-L_LgqV8Yg - partials-signing-el-linux64-shippable/opt: CMVbrA6-QEasgURiA-nDSQ - partials-signing-el-macosx64-shippable/opt: O2dUPXnBSoKVEgSHoPyWow - partials-signing-el-win32-shippable/opt: FxRhGgD9S0SHMNsvYKbg4w - partials-signing-el-win64-aarch64-shippable/opt: Q3AG16J9TQ2hx2jQllzNrA - partials-signing-el-win64-shippable/opt: X2OIopGKTuqwi-Q4i4t87g - partials-signing-en-CA-linux-shippable/opt: SCU7qa4BQJ281xWCSO3PkA - partials-signing-en-CA-linux64-aarch64-shippable/opt: aDq68EHzRRynFpYZXpX4iw - partials-signing-en-CA-linux64-shippable/opt: ePFYC8EZQB2TztRyKrn5hQ - partials-signing-en-CA-macosx64-shippable/opt: P1blLEvcScuR0lrAQmbtYw - partials-signing-en-CA-win32-shippable/opt: RmRqajglTR2tMbpki5r0bg - partials-signing-en-CA-win64-aarch64-shippable/opt: MHMvwyaAS7iJVkkDXCULtQ - partials-signing-en-CA-win64-shippable/opt: RD7L4Wo4SlekvuSUS4Mo3g - partials-signing-en-GB-linux-shippable/opt: WIGRk5L-SuCvSeJBCk5jWw - partials-signing-en-GB-linux64-aarch64-shippable/opt: EUcOOcdsQC6oazLUqUgvoQ - partials-signing-en-GB-linux64-shippable/opt: FuSLhOqyRpajfiDuat8fCA - partials-signing-en-GB-macosx64-shippable/opt: Qv7Yjp3bRyOUkUoG2yzUsA - partials-signing-en-GB-win32-shippable/opt: KBpyAc8KSJmVTCBF4dB9SQ - partials-signing-en-GB-win64-aarch64-shippable/opt: Y3aLXcXGT8G12aIwzYaF0Q - partials-signing-en-GB-win64-shippable/opt: H0Mm98fmTTuQFxBB8c267A - partials-signing-eo-linux-shippable/opt: AwFR__4NSkWNDbWCzuXRXA - partials-signing-eo-linux64-aarch64-shippable/opt: ImFALUqBSj67VuhxwuuVvA - partials-signing-eo-linux64-shippable/opt: LKLvc3_sQNOg0ObQt9ynwQ - partials-signing-eo-macosx64-shippable/opt: OvrMoSU6RcugvoIRP4VJHQ - partials-signing-eo-win32-shippable/opt: DTCfds1dQFmScHkeuBUyVA - partials-signing-eo-win64-aarch64-shippable/opt: PWDWHFrrSVODQPB2tr_tqQ - partials-signing-eo-win64-shippable/opt: PLcQ5QuPQ4OY1whMmoOUVw - partials-signing-es-AR-linux-shippable/opt: JGCAVt0zRKSj1g1blC0sOw - partials-signing-es-AR-linux64-aarch64-shippable/opt: bWCdonLTT02h2bVSiv6fVg - partials-signing-es-AR-linux64-shippable/opt: Hfw_PVpSREeReuiOHHFH9g - partials-signing-es-AR-macosx64-shippable/opt: DGAOXGZISB6munKYmmUG-w - partials-signing-es-AR-win32-shippable/opt: ELcEWKGUT72jJgMWORz56A - partials-signing-es-AR-win64-aarch64-shippable/opt: f15deHSWS46Zoq0D0pmb_Q - partials-signing-es-AR-win64-shippable/opt: I8e3yYN4QtCbe8ETL59sNA - partials-signing-es-CL-linux-shippable/opt: YPw_sWa8QhOAdjXtTXJSTA - partials-signing-es-CL-linux64-aarch64-shippable/opt: BXxRZjakQQ2MxeE5FcgSIQ - partials-signing-es-CL-linux64-shippable/opt: BlkETyGaQ_-UIjIOZUbjIQ - partials-signing-es-CL-macosx64-shippable/opt: PdtqELdKQKi-ebeCYN1E8Q - partials-signing-es-CL-win32-shippable/opt: Sm2LgjR9QQexzniAk9MNLQ - partials-signing-es-CL-win64-aarch64-shippable/opt: TQL74XydS3-Vy2RnbKIYWQ - partials-signing-es-CL-win64-shippable/opt: Md3D73MYQculVmAeb_z2Zg - partials-signing-es-ES-linux-shippable/opt: YpSQrVURSg2Zu-RxMwnaGA - partials-signing-es-ES-linux64-aarch64-shippable/opt: RnQw0RReTlO76vxzXLOkZg - partials-signing-es-ES-linux64-shippable/opt: VsGx2bkZQlCaG6X8ne4T0Q - partials-signing-es-ES-macosx64-shippable/opt: fA8Kb3DZRPqVxP6aEItkEQ - partials-signing-es-ES-win32-shippable/opt: XY-2u1JoSa-frVp63ESwXQ - partials-signing-es-ES-win64-aarch64-shippable/opt: dOVvHwvPTxObdz1f2K5HIw - partials-signing-es-ES-win64-shippable/opt: bHAoV15MQU6NKy0tYOOopA - partials-signing-es-MX-linux-shippable/opt: X4wVAqGWT-ac4Z1cD7kQtA - partials-signing-es-MX-linux64-aarch64-shippable/opt: VjWVMhutTv-tqwmQ-UiXGQ - partials-signing-es-MX-linux64-shippable/opt: B8J8LUPMTpuYNebVlfEb_A - partials-signing-es-MX-macosx64-shippable/opt: VY4orZVrRd-gG_vtiV7vZA - partials-signing-es-MX-win32-shippable/opt: Jpd1zzD1T4OcH2z2ODmZCQ - partials-signing-es-MX-win64-aarch64-shippable/opt: ZJk938SgSRCuQFe1ohUwzw - partials-signing-es-MX-win64-shippable/opt: SvlGDAjETAO5_G6DZa-0ww - partials-signing-et-linux-shippable/opt: cX3XOZVgQxq4Pyzo-qsnCg - partials-signing-et-linux64-aarch64-shippable/opt: eMOdoYygQhCTmQulyKEPkQ - partials-signing-et-linux64-shippable/opt: NAu9VTlcSzK1KoQjHHWm1g - partials-signing-et-macosx64-shippable/opt: YJVgi5mKQOGQi_PEs4H1pg - partials-signing-et-win32-shippable/opt: A-3G6GumTB-l__m8C81JqQ - partials-signing-et-win64-aarch64-shippable/opt: YIjqLHAuQKGhK1DGHoWf7Q - partials-signing-et-win64-shippable/opt: QBYMhqgSRdOAOpfA8MIqEw - partials-signing-eu-linux-shippable/opt: EQba3c3dTm6dPAnED93KLA - partials-signing-eu-linux64-aarch64-shippable/opt: RPlxC7-_QUSEnAHfC8DnOA - partials-signing-eu-linux64-shippable/opt: cMeE7DOBQ6OfDLCfXgODhg - partials-signing-eu-macosx64-shippable/opt: DUklz2DYR-yPuifyRwFI-w - partials-signing-eu-win32-shippable/opt: XlyKE8b_S6OdBu-U-F2G6g - partials-signing-eu-win64-aarch64-shippable/opt: Np1xXNxYQDuLFurzhT86fw - partials-signing-eu-win64-shippable/opt: FoNdhPckSoO2va20gl3WoA - partials-signing-fa-linux-shippable/opt: QoOf2ZIKTPWzbF2h1k8ahA - partials-signing-fa-linux64-aarch64-shippable/opt: V4zLn8DFS5W7NjfRMt6rTA - partials-signing-fa-linux64-shippable/opt: EeNIksn2QqiGrugEl_wtCA - partials-signing-fa-macosx64-shippable/opt: JFEpcFoCSz6dtrtj_SXGFw - partials-signing-fa-win32-shippable/opt: B2zhWNR9RAeYm92v3MsIgQ - partials-signing-fa-win64-aarch64-shippable/opt: KTxuI_gZSxGANryaDruC2g - partials-signing-fa-win64-shippable/opt: Jeojoe7qSMCRVd_djuG51Q - partials-signing-ff-linux-shippable/opt: ava9S9t3SHK4Pw3ekdyagg - partials-signing-ff-linux64-aarch64-shippable/opt: RzJVNVyuTf2V8oXLJ3Rrdg - partials-signing-ff-linux64-shippable/opt: fKr8Qzo5QfC_V1wydaxcQA - partials-signing-ff-macosx64-shippable/opt: TttvcihZRMKdFkwYxMv7Qw - partials-signing-ff-win32-shippable/opt: FijWp3D-QYSq0td-ei_CsA - partials-signing-ff-win64-aarch64-shippable/opt: ZSqKC4DXQl2qJUkQwM_CyA - partials-signing-ff-win64-shippable/opt: OZZbDRcLQVyGKoS_cidIbw - partials-signing-fi-linux-shippable/opt: NCP1Ynq1Q8ut2qD9WGkjbQ - partials-signing-fi-linux64-aarch64-shippable/opt: SO4rQ5D7QxCnc4tp-y2L0Q - partials-signing-fi-linux64-shippable/opt: AZIc2ekGSxOMOgEsFYKqKA - partials-signing-fi-macosx64-shippable/opt: UlDCMFxuSR-0u8u53-NJMA - partials-signing-fi-win32-shippable/opt: Nd7SM-zbTi2aIkNm2qbe-w - partials-signing-fi-win64-aarch64-shippable/opt: Rehbib3ZRmSL4QFagbvXeQ - partials-signing-fi-win64-shippable/opt: UIqfwzgKRLSP8CVG8LcbWw - partials-signing-fr-linux-shippable/opt: NQ_6eSsgQuSARid_JTAcYQ - partials-signing-fr-linux64-aarch64-shippable/opt: T01sCuYFTVOypMOZyrd_uw - partials-signing-fr-linux64-shippable/opt: TkNamRhJTg2b7kH8wbQ2Kw - partials-signing-fr-macosx64-shippable/opt: MKMRicAsSQCycItdZh3Nug - partials-signing-fr-win32-shippable/opt: aqMBH2zIQLeMqjd8vtIRzw - partials-signing-fr-win64-aarch64-shippable/opt: SitddrWDTa656L51Z7tu-g - partials-signing-fr-win64-shippable/opt: SmTO95eiT4ORbnmdOtyfag - partials-signing-fur-linux-shippable/opt: YfyL0L79Rh6mjSZtKm08TA - partials-signing-fur-linux64-aarch64-shippable/opt: HK0v8WRFQDytBe2Y0j-lTA - partials-signing-fur-linux64-shippable/opt: Ays9Ij8jSWagxDWgweIcXg - partials-signing-fur-macosx64-shippable/opt: ZieAIxeDR6SfOGmA8bWq6Q - partials-signing-fur-win32-shippable/opt: UjRY0caBQmeSfE85G1EwpA - partials-signing-fur-win64-aarch64-shippable/opt: ZHb4-X-TQUGF3ApnT11fwA - partials-signing-fur-win64-shippable/opt: e_rNhe5iQMOXVzqLxD_rJw - partials-signing-fy-NL-linux-shippable/opt: d1d8TvbyS3WQwMM73O6Kaw - partials-signing-fy-NL-linux64-aarch64-shippable/opt: WOr6o4bUScqKdo6rUyKLbw - partials-signing-fy-NL-linux64-shippable/opt: KVEovt_lTBCPoG1tt0V-Dw - partials-signing-fy-NL-macosx64-shippable/opt: XYma2hqrRc6BdviWsH-dAQ - partials-signing-fy-NL-win32-shippable/opt: d_65ESiRRV-4VFI79dQkkA - partials-signing-fy-NL-win64-aarch64-shippable/opt: DfFSI6IUTiuehx9DEe03SA - partials-signing-fy-NL-win64-shippable/opt: TPMu45ijQmie2w5-HvWVMA - partials-signing-ga-IE-linux-shippable/opt: GPAiqGV2S6-zNkpAA7hL9w - partials-signing-ga-IE-linux64-aarch64-shippable/opt: KJebIelTSYSwfSmPLWtZJA - partials-signing-ga-IE-linux64-shippable/opt: eUlLK8QhRu27dcVwgyiuxA - partials-signing-ga-IE-macosx64-shippable/opt: CNsXVsueSuykBubbDRpGjQ - partials-signing-ga-IE-win32-shippable/opt: D31YErvPR8ic_DQCZh0cow - partials-signing-ga-IE-win64-aarch64-shippable/opt: O-d_KP9YR3S1OBoA3KPQMw - partials-signing-ga-IE-win64-shippable/opt: NCgAkNNKTIap4bxiGC3wgg - partials-signing-gd-linux-shippable/opt: SmmjFRsmRFmGnmKrg1CJFg - partials-signing-gd-linux64-aarch64-shippable/opt: Ew-pcOIuQOueSgIGNw9q3A - partials-signing-gd-linux64-shippable/opt: FPB7El76T2mFfAy1sfgjSg - partials-signing-gd-macosx64-shippable/opt: DVazX6cPQbeqAof6x3yZdQ - partials-signing-gd-win32-shippable/opt: MDqBzkv8RJ6vEPoKDX1oEg - partials-signing-gd-win64-aarch64-shippable/opt: H8WOX4zVTk6KUE0uAy3T4g - partials-signing-gd-win64-shippable/opt: TY7c2krrRMyNDGVkrjGoIw - partials-signing-gl-linux-shippable/opt: ZyNqVnjlRrC9woDx3yWf6g - partials-signing-gl-linux64-aarch64-shippable/opt: UGP5GjwmQoG_zXPp65GmjA - partials-signing-gl-linux64-shippable/opt: cm20PgpYTLqyfvBruwsTgQ - partials-signing-gl-macosx64-shippable/opt: KiTM5OoORdWqsF0xPvGHOg - partials-signing-gl-win32-shippable/opt: T0eaF3MRTTitRnZNAgYwiQ - partials-signing-gl-win64-aarch64-shippable/opt: AyKW3JSIQyuKMIZUl98gIQ - partials-signing-gl-win64-shippable/opt: adtC54FgTYyMEDQ2e8_6rw - partials-signing-gn-linux-shippable/opt: VkHX0b0BRvyJKzbMjJgkzA - partials-signing-gn-linux64-aarch64-shippable/opt: XCY98r3ORyismdbDTVOPmQ - partials-signing-gn-linux64-shippable/opt: Cu_v0IpiReig4NDyJVZzXA - partials-signing-gn-macosx64-shippable/opt: EvExQIYDTqeyh3bn2kbJhA - partials-signing-gn-win32-shippable/opt: ZzmbhudXT2izkDLSuB01Ug - partials-signing-gn-win64-aarch64-shippable/opt: UQyrqD7pRz-S8SpItqHNfw - partials-signing-gn-win64-shippable/opt: eEpN_aZ-Td-0FCFeMXjdVw - partials-signing-gu-IN-linux-shippable/opt: afWSX2oxR8GOCQrg8G2tmQ - partials-signing-gu-IN-linux64-aarch64-shippable/opt: IBTCScV-QfKAvs5UECLsug - partials-signing-gu-IN-linux64-shippable/opt: an9uYWOOTRKNBaCSPlzfrw - partials-signing-gu-IN-macosx64-shippable/opt: Xpu9BULJT2utdVvZhNhfrQ - partials-signing-gu-IN-win32-shippable/opt: Tq2m0dvTQL6wg4BVgCJYHg - partials-signing-gu-IN-win64-aarch64-shippable/opt: YWUFQihDTUGmVdme0q1_EA - partials-signing-gu-IN-win64-shippable/opt: U-9CmpLTRrOUwE6vgDL_8g - partials-signing-he-linux-shippable/opt: DI6NC2uRRE-hlp8WcmRadQ - partials-signing-he-linux64-aarch64-shippable/opt: aCzU5y_wTdCovZ6p-6d0WA - partials-signing-he-linux64-shippable/opt: cI35YEh-SLy2RgsRCt6Diw - partials-signing-he-macosx64-shippable/opt: G1fwvKTCQBu9fcRHygPlmA - partials-signing-he-win32-shippable/opt: AyQ_FCxyS4S-9vJvZE4i0Q - partials-signing-he-win64-aarch64-shippable/opt: ZUkMXMtpRoKxG508gH523g - partials-signing-he-win64-shippable/opt: ADzYb3bwRuGHbqdtfiuYuQ - partials-signing-hi-IN-linux-shippable/opt: MGWLVcS2RDaooPE4GNFzAQ - partials-signing-hi-IN-linux64-aarch64-shippable/opt: OEB076FcT4yz4vaJMGev1A - partials-signing-hi-IN-linux64-shippable/opt: Xx1xwTpRS_2W6tB2bjncOA - partials-signing-hi-IN-macosx64-shippable/opt: XpNspiAAQ0St28y8TPd1OA - partials-signing-hi-IN-win32-shippable/opt: Hns8bP9ERLmz-4zi1IJILQ - partials-signing-hi-IN-win64-aarch64-shippable/opt: RLd7ds_aRTWcrWlA70gdjQ - partials-signing-hi-IN-win64-shippable/opt: KIwrezaNT2ypL8lodbpfyw - partials-signing-hr-linux-shippable/opt: dgDt2DQ-T6-5fWIpWFqo9A - partials-signing-hr-linux64-aarch64-shippable/opt: VMSfswxkQcycQ8Dz7UJvLw - partials-signing-hr-linux64-shippable/opt: ZjLN3CggTwGD0rZwHw_8lA - partials-signing-hr-macosx64-shippable/opt: GQ0gNLEmQViKxS1kAtyQYQ - partials-signing-hr-win32-shippable/opt: WyjznGgJQpiqMlDPckA78g - partials-signing-hr-win64-aarch64-shippable/opt: CI_ZAOjwQ0uqz5R82mVkeQ - partials-signing-hr-win64-shippable/opt: CNTfCW-AQ3Skr5xqhhEkDw - partials-signing-hsb-linux-shippable/opt: T1UKuBKLTm2C8b_wsthO1w - partials-signing-hsb-linux64-aarch64-shippable/opt: JFdg3x_uSUawQuR_EQMHpQ - partials-signing-hsb-linux64-shippable/opt: VXYoNRmSQDezcNPjC8DrGw - partials-signing-hsb-macosx64-shippable/opt: FrQZHC6iRtuymDIf8CfkUA - partials-signing-hsb-win32-shippable/opt: MYBW65kqQee2oBgKLMOFig - partials-signing-hsb-win64-aarch64-shippable/opt: CAr__xpvTvewv5hZq_Zb8g - partials-signing-hsb-win64-shippable/opt: S9LKW5KkT7ShKWP6oonVfA - partials-signing-hu-linux-shippable/opt: GgEGwIcvR3ihFcdA6z3zrw - partials-signing-hu-linux64-aarch64-shippable/opt: UzmI_CZ_TBivYAtle6d6KQ - partials-signing-hu-linux64-shippable/opt: P4_Vy49ER3WNKUqRzdk7Ug - partials-signing-hu-macosx64-shippable/opt: eiHcOfipQlWyz9N5Tot5Yw - partials-signing-hu-win32-shippable/opt: LJhCNoU8T92XOIHG4Fr1IQ - partials-signing-hu-win64-aarch64-shippable/opt: DGCrHBMXQu-s0QYQgXSeOQ - partials-signing-hu-win64-shippable/opt: DfjCUZ3BT_qoL4ZxXwtvKQ - partials-signing-hy-AM-linux-shippable/opt: UHNCX1fASLSxPOSS_CKgQw - partials-signing-hy-AM-linux64-aarch64-shippable/opt: ODEZBtKSQIOGTy_zFLcS8g - partials-signing-hy-AM-linux64-shippable/opt: VHcZ0r8JQPewwmTbotZQBA - partials-signing-hy-AM-macosx64-shippable/opt: XxI5HGDkRl68QVseIM_tOA - partials-signing-hy-AM-win32-shippable/opt: ZmoonILETDuuRJ_EFBLyVw - partials-signing-hy-AM-win64-aarch64-shippable/opt: Cd3MdJnyQYKyHLsyfwAYFA - partials-signing-hy-AM-win64-shippable/opt: RqEzCF7lR6OlHa57_sy9NA - partials-signing-ia-linux-shippable/opt: Fid9AfT_Tky5lNjOOQoXkg - partials-signing-ia-linux64-aarch64-shippable/opt: F10bW8-hT7WgrZPMnRVdSg - partials-signing-ia-linux64-shippable/opt: GIwHRNbRQlyYFdszR-32aw - partials-signing-ia-macosx64-shippable/opt: NQjsFISVQy6VGAWq7M03uA - partials-signing-ia-win32-shippable/opt: UNnyl3XQTXyvRwEswaLXFw - partials-signing-ia-win64-aarch64-shippable/opt: GkY6_kvhTlSc5yF8WxjU4A - partials-signing-ia-win64-shippable/opt: MJNGIz0GSAmLoPx8NNvUFA - partials-signing-id-linux-shippable/opt: KvmEs8qlRgqIAKvxNCpZ7A - partials-signing-id-linux64-aarch64-shippable/opt: MHP1qmlKSO69XIUobVcjBg - partials-signing-id-linux64-shippable/opt: XqOV_iqDRFaaXQgGgglZqA - partials-signing-id-macosx64-shippable/opt: JAaaiaRvSHOSUqmT9KGzEA - partials-signing-id-win32-shippable/opt: TXeguKQjRxiRpOqPgU1lQg - partials-signing-id-win64-aarch64-shippable/opt: Y0hHpP7pQuukD0a5jymLlQ - partials-signing-id-win64-shippable/opt: U-5L8k6BRumd1qN_qFKJ0A - partials-signing-is-linux-shippable/opt: RO59GApdQKeBxYiTMDRWoA - partials-signing-is-linux64-aarch64-shippable/opt: LRyvHxiUTii_ZC50u92PsQ - partials-signing-is-linux64-shippable/opt: W7DbMKPaRK2XC2773g1yvQ - partials-signing-is-macosx64-shippable/opt: XPcqJDQMQvq6bzwUSyuRag - partials-signing-is-win32-shippable/opt: IqcL778OTEmDwrWJYO_Dxw - partials-signing-is-win64-aarch64-shippable/opt: XpcMoP1US4S806krQjjI9Q - partials-signing-is-win64-shippable/opt: ZtNSZt5VR0G1j-rzjK6uUA - partials-signing-it-linux-shippable/opt: RxwJQFKkTvmY75MditFelA - partials-signing-it-linux64-aarch64-shippable/opt: QO7div2tQvSgH-lk2YsxWg - partials-signing-it-linux64-shippable/opt: P--KG50NTPOoL08EOuJOxg - partials-signing-it-macosx64-shippable/opt: FA_8p2N1RKOv7qexrHmCgw - partials-signing-it-win32-shippable/opt: UCy82RSTQhCChrFKd-Hd0g - partials-signing-it-win64-aarch64-shippable/opt: cKI2Gu3-TimsHvzkxK8SyA - partials-signing-it-win64-shippable/opt: O15j5DE-Rxu0MaUpIYESzw - partials-signing-ja-JP-mac-macosx64-shippable/opt: NJaYGajCTHKoZdZztKJ6mw - partials-signing-ja-linux-shippable/opt: DCUaTVewR7yasbbh7NWVsQ - partials-signing-ja-linux64-aarch64-shippable/opt: V15E5h4vTkqa7sVbvHx5sQ - partials-signing-ja-linux64-shippable/opt: CuPkP1FOSWGiT6Pv4fSZxQ - partials-signing-ja-win32-shippable/opt: cVa6yQ31RcuiE-solfWlIw - partials-signing-ja-win64-aarch64-shippable/opt: JsGAaoK_SOq4DgleXMRuFQ - partials-signing-ja-win64-shippable/opt: bb_YYfhoS5yrFoqNrWQvSQ - partials-signing-ka-linux-shippable/opt: S1JNZrYPTyGmJkqehXhrdg - partials-signing-ka-linux64-aarch64-shippable/opt: BdDjtTSIRU6GZ9wrdym0Bw - partials-signing-ka-linux64-shippable/opt: TM9msFnBSoGfdqHdp6fllw - partials-signing-ka-macosx64-shippable/opt: BkZe1xA5R2uplFOB3e6_HQ - partials-signing-ka-win32-shippable/opt: H-dWFZ4dRQmufj0l9beQvw - partials-signing-ka-win64-aarch64-shippable/opt: JPQ171K9QDyJFe48ZDOorw - partials-signing-ka-win64-shippable/opt: BwXTC2lSTPKkVLPGWii5KA - partials-signing-kab-linux-shippable/opt: Mwca542OTaSFrJJxhygxCg - partials-signing-kab-linux64-aarch64-shippable/opt: Ylfo9oR-Q3OV4utd2blRxw - partials-signing-kab-linux64-shippable/opt: L4c99RGJRuyp9leePQ96Xw - partials-signing-kab-macosx64-shippable/opt: ZBoJj86ISJKDG5BYHMgZsg - partials-signing-kab-win32-shippable/opt: OI6ell9GTHOKtUzfh699Eg - partials-signing-kab-win64-aarch64-shippable/opt: PCDgpHESSpi3tE44u6THpg - partials-signing-kab-win64-shippable/opt: Ky9i41XnQtWEgnoPsjT-pA - partials-signing-kk-linux-shippable/opt: WnMWpSQYRTWfSrWsx1IfSw - partials-signing-kk-linux64-aarch64-shippable/opt: P6qHEXG9R1-QhElb4DNNew - partials-signing-kk-linux64-shippable/opt: TfuXNiiqRXu29Mjh1-ubJA - partials-signing-kk-macosx64-shippable/opt: FOPS8DRtSe22ZXsu_UTx4w - partials-signing-kk-win32-shippable/opt: e1Dl3X5GRoy3WDCCeAXO-Q - partials-signing-kk-win64-aarch64-shippable/opt: b9ej7bTzSDWoZhVoXeTbWg - partials-signing-kk-win64-shippable/opt: b4GGlyzPQHiKzygHVs98eA - partials-signing-km-linux-shippable/opt: MAzcJFdwSPq2hsLLcLdzdQ - partials-signing-km-linux64-aarch64-shippable/opt: GuQrcmMfR1CC4I2qXORVBQ - partials-signing-km-linux64-shippable/opt: Doc7cafXR-qX2z4vJLUa2w - partials-signing-km-macosx64-shippable/opt: UtU0wsvPTCWJQj2Z1pPHxw - partials-signing-km-win32-shippable/opt: DEv-DPHbS2eQGSeiwWn3jA - partials-signing-km-win64-aarch64-shippable/opt: eLKpdffJQymKBjsJiQ6Icg - partials-signing-km-win64-shippable/opt: aultqnh-R6mpL1hyIpNq5w - partials-signing-kn-linux-shippable/opt: VAiIxN9dTOqcCC00JJJvTA - partials-signing-kn-linux64-aarch64-shippable/opt: ej5J83FpRYWSQ3w2iAoXtA - partials-signing-kn-linux64-shippable/opt: M_VHSPr7TTqrHuq44hZefQ - partials-signing-kn-macosx64-shippable/opt: A6_pZa0RRICDB6ABP64VfA - partials-signing-kn-win32-shippable/opt: Hsjb6VJTQGKYdZwv2jo_aA - partials-signing-kn-win64-aarch64-shippable/opt: WWR7UCw8TAGx3YRuis9PVw - partials-signing-kn-win64-shippable/opt: VI5xBG3zSkeaP7vb79JYvg - partials-signing-ko-linux-shippable/opt: AB-xz9wUR9SJ83rR5a7HXg - partials-signing-ko-linux64-aarch64-shippable/opt: K4Dt3GZiTkq0M6ySXnArMw - partials-signing-ko-linux64-shippable/opt: TXteXfZpR9mhprYpwjQ3bA - partials-signing-ko-macosx64-shippable/opt: CXDSqJ6eQ-6dFEAL-i6eow - partials-signing-ko-win32-shippable/opt: WXQiE71zQmm4NJxe6CDyaA - partials-signing-ko-win64-aarch64-shippable/opt: ON5vr2-JQ0WLEXShSRAoTA - partials-signing-ko-win64-shippable/opt: Yd1PAlytQeCYPJYXj3TTNw - partials-signing-lij-linux-shippable/opt: YGFW45cvS7GtRlHC9eidSw - partials-signing-lij-linux64-aarch64-shippable/opt: BxVNCcGbTgK9-oemla_Vlw - partials-signing-lij-linux64-shippable/opt: dTBOd2aWS_q_n5S1q83ssA - partials-signing-lij-macosx64-shippable/opt: P3_I_8V9RHydx4cvBlSyKA - partials-signing-lij-win32-shippable/opt: VW8vZewMTwuIDYHhHBDajg - partials-signing-lij-win64-aarch64-shippable/opt: WLCMQHJLT6y61laTF_Q0hw - partials-signing-lij-win64-shippable/opt: DYaG60ILQquQtBF0bLS56A - partials-signing-linux-shippable/opt: b2jAsec-R0-wX2g2bDGuVg - partials-signing-linux64-aarch64-shippable/opt: BEnYPEbRQw-Hp5dffFVFaA - partials-signing-linux64-shippable/opt: Fi1QUjZGQomHZlRt0lbjgQ - partials-signing-lt-linux-shippable/opt: Joi_yaWmQbi-o90k-cCZoA - partials-signing-lt-linux64-aarch64-shippable/opt: Z73UdvXORHi8CYmMJ488Sg - partials-signing-lt-linux64-shippable/opt: YYz6KaYbTo2eMwmecy4YeA - partials-signing-lt-macosx64-shippable/opt: VVHqovZZRnCMAOFrZuibCA - partials-signing-lt-win32-shippable/opt: B1HVNQK3Tt-qLlTv3HT2zw - partials-signing-lt-win64-aarch64-shippable/opt: UiwRRMlAThKMD4tTXasxmw - partials-signing-lt-win64-shippable/opt: ZktY19XZRpeK0YUjl3qsrA - partials-signing-lv-linux-shippable/opt: EqGAKLGMSeiYE2vRzuBe4g - partials-signing-lv-linux64-aarch64-shippable/opt: eHNfBhK9RgCJgTFIuQsSXw - partials-signing-lv-linux64-shippable/opt: TT5Nbs4oTkKqdg_qYhfwFw - partials-signing-lv-macosx64-shippable/opt: bFau041YSlu1vx8tdU32Jg - partials-signing-lv-win32-shippable/opt: NvZO3tMQQQK2wms-gIfxrw - partials-signing-lv-win64-aarch64-shippable/opt: IUavbN7MQICn5JksZPqaKA - partials-signing-lv-win64-shippable/opt: QulA7slIQUiwiAcCD_jjBQ - partials-signing-macosx64-shippable/opt: Bh1gOsWlR9eoijhjqwLvAQ - partials-signing-mk-linux-shippable/opt: SChI_ciiT3CTpjjlNSvu7Q - partials-signing-mk-linux64-aarch64-shippable/opt: JUShvKR9TYaKHaLPO3O3vQ - partials-signing-mk-linux64-shippable/opt: ZH8D9VT5TZC1dKmOmG-A4w - partials-signing-mk-macosx64-shippable/opt: KINs-t2TRPWnhAfvkiZRhg - partials-signing-mk-win32-shippable/opt: ND7bw7MhQIKrYvVRINDIVQ - partials-signing-mk-win64-aarch64-shippable/opt: RgwuIZkFRHCD7HqJIY_Byg - partials-signing-mk-win64-shippable/opt: PDnwUhjGSvKWR013uB7w8g - partials-signing-mr-linux-shippable/opt: FgPDdQHASNyPUGha5k7K4Q - partials-signing-mr-linux64-aarch64-shippable/opt: FxNEB-aQSzKR1S5LpxZxAQ - partials-signing-mr-linux64-shippable/opt: ETjVXnRmRuGD3JF74MC7mQ - partials-signing-mr-macosx64-shippable/opt: Kz4776vOSYSh1EgqQB0o4w - partials-signing-mr-win32-shippable/opt: ZD9nv-sURDCzOwbmJALU1Q - partials-signing-mr-win64-aarch64-shippable/opt: cdYcNYwsS1-Tc_427zJl6w - partials-signing-mr-win64-shippable/opt: L9-_dSSoTvGrcY2HsvtrfA - partials-signing-ms-linux-shippable/opt: YTVHHdAqTUS6Sfarv_SYyQ - partials-signing-ms-linux64-aarch64-shippable/opt: OfOg2BZNR5W9fyyCr_8pkQ - partials-signing-ms-linux64-shippable/opt: EC2mh0PsRTuF8a566LdbdA - partials-signing-ms-macosx64-shippable/opt: FQe39Xx-QbOgqvg2MbTjDQ - partials-signing-ms-win32-shippable/opt: bJqdihsvQSqlqBjSdtY_oA - partials-signing-ms-win64-aarch64-shippable/opt: fGwvBzOUR_yQ96R2_-0vFA - partials-signing-ms-win64-shippable/opt: eqtfR77CQu2Yzs4d9bROuw - partials-signing-my-linux-shippable/opt: SobNfhHSTLqw_hCYL9NjHQ - partials-signing-my-linux64-aarch64-shippable/opt: Q_KppP6SRJuEalzLij2B4Q - partials-signing-my-linux64-shippable/opt: R3XtqXzYQ32qKSCmGoKelQ - partials-signing-my-macosx64-shippable/opt: aivLIdrORiyoEGUv5q5aVA - partials-signing-my-win32-shippable/opt: SUDHhftcRma9a9zCOf5TzA - partials-signing-my-win64-aarch64-shippable/opt: eu1STxbUSA2n6kCxd5rMyw - partials-signing-my-win64-shippable/opt: f0PomfBYRfmCVb9GE7-cpQ - partials-signing-nb-NO-linux-shippable/opt: bOXpvLmcQJKFD3EKFOu5HQ - partials-signing-nb-NO-linux64-aarch64-shippable/opt: P_DD9lJgTvub-NYYk6ZFSg - partials-signing-nb-NO-linux64-shippable/opt: HqJl5YdjRbGKl-ju5uq1KQ - partials-signing-nb-NO-macosx64-shippable/opt: MnlJT4VQTd-qS1fneJiUmA - partials-signing-nb-NO-win32-shippable/opt: ItCreTsbTPGXb-ZfrWOQKg - partials-signing-nb-NO-win64-aarch64-shippable/opt: bhykw3ZmTCe9NiTydAgWAw - partials-signing-nb-NO-win64-shippable/opt: JPdloUzbSu6QAsuGp_KteQ - partials-signing-ne-NP-linux-shippable/opt: XeYBizP7QtWyQLHDfN1tLQ - partials-signing-ne-NP-linux64-aarch64-shippable/opt: Hm0CS9fDT-ecWPOqFShdTQ - partials-signing-ne-NP-linux64-shippable/opt: LsaDijSWQBamjLjEhuu8GA - partials-signing-ne-NP-macosx64-shippable/opt: Vvf6hDn0TiK2xgJ6jhTO4A - partials-signing-ne-NP-win32-shippable/opt: XIzmCQpHSCC-6lgPBkmVnA - partials-signing-ne-NP-win64-aarch64-shippable/opt: X-7J3BhLR8y88Xh0yetoMQ - partials-signing-ne-NP-win64-shippable/opt: B2lRlZD5QTmU-mj7mUVzag - partials-signing-nl-linux-shippable/opt: ABQquGzaTeSJqrnGCo5tiA - partials-signing-nl-linux64-aarch64-shippable/opt: fJMb5B4TRzuA-YkpgVUdMA - partials-signing-nl-linux64-shippable/opt: YzHLW1s5Qgq5rcldtOQMpw - partials-signing-nl-macosx64-shippable/opt: Yl4fj9jFR6u7eOVQrqap8w - partials-signing-nl-win32-shippable/opt: aqUCfIXgSUutTAZmlsoHYQ - partials-signing-nl-win64-aarch64-shippable/opt: ZPTeXLEhTHGRiE7HvZyOkA - partials-signing-nl-win64-shippable/opt: bvsOpbE_QfOhjpYENX0lnA - partials-signing-nn-NO-linux-shippable/opt: AnALkVrOTxiuxzDMt096jA - partials-signing-nn-NO-linux64-aarch64-shippable/opt: D0urgTBsRhKQtRmq-f2_yA - partials-signing-nn-NO-linux64-shippable/opt: fKhs-dLnSwmGpIfKRubuJQ - partials-signing-nn-NO-macosx64-shippable/opt: afYqg4yPTMuuaoeOkThs_w - partials-signing-nn-NO-win32-shippable/opt: XzqKwwfdQOuQIOtC_3SAcQ - partials-signing-nn-NO-win64-aarch64-shippable/opt: QXwthLPUR0-MZONqpWU5jw - partials-signing-nn-NO-win64-shippable/opt: CaWY3eYwSCKvX47DD4vdkg - partials-signing-oc-linux-shippable/opt: Q_Cnia78T9KRM2jqXr1RMw - partials-signing-oc-linux64-aarch64-shippable/opt: PuowQW4LTCCQrly-X-9Bxg - partials-signing-oc-linux64-shippable/opt: MT7_rsk6S6KiXT02qkA8uw - partials-signing-oc-macosx64-shippable/opt: DfeAmWIqT1inqJLe3h8BLg - partials-signing-oc-win32-shippable/opt: TSZfrhnYRayB2ewCp8js_w - partials-signing-oc-win64-aarch64-shippable/opt: JL96n4b5T0WuCLdtH3QaQA - partials-signing-oc-win64-shippable/opt: TUnO6pX5QEG9YSIYdrDPUQ - partials-signing-pa-IN-linux-shippable/opt: G3gG2eB5SySEJ19eLEPlCA - partials-signing-pa-IN-linux64-aarch64-shippable/opt: bFednAqVQeeS-fVj7Ww5kA - partials-signing-pa-IN-linux64-shippable/opt: B8D7yD9NSES1Z_3AIrD8Mw - partials-signing-pa-IN-macosx64-shippable/opt: YazVgL9mSj2VmLpBe6sbcA - partials-signing-pa-IN-win32-shippable/opt: N0FgpfTQQdiYNaJRoro6eQ - partials-signing-pa-IN-win64-aarch64-shippable/opt: cIO6AiD8RPG8FDnyOlSafA - partials-signing-pa-IN-win64-shippable/opt: IRri0LmITbS1rA7MgN9Ysw - partials-signing-pl-linux-shippable/opt: HCZmSYLsShu82cpTAn9Uaw - partials-signing-pl-linux64-aarch64-shippable/opt: DlOo1ik3R6WAqwBxzOHhFg - partials-signing-pl-linux64-shippable/opt: T2Yn1Px_QYi90hg6wDVdJQ - partials-signing-pl-macosx64-shippable/opt: Nhycum2tSRWL4a5oJI2xmg - partials-signing-pl-win32-shippable/opt: SHRvt4TaTb64vSb6v3aZuQ - partials-signing-pl-win64-aarch64-shippable/opt: G_w4qJ-STb2c5lo-ajPHwQ - partials-signing-pl-win64-shippable/opt: BypyCF5jST-1v_OPsoqLsA - partials-signing-pt-BR-linux-shippable/opt: bxWiGnCmQ0-5dGtZzaXbqA - partials-signing-pt-BR-linux64-aarch64-shippable/opt: UoKINb9OSqSmKxNUMKJocQ - partials-signing-pt-BR-linux64-shippable/opt: SdB91rlBQYuJQhl8i_zl-w - partials-signing-pt-BR-macosx64-shippable/opt: KU4km5KOT9S15hVlUE7dvQ - partials-signing-pt-BR-win32-shippable/opt: CW7JZQbyTumnu3rv4qfrqg - partials-signing-pt-BR-win64-aarch64-shippable/opt: XQI46RYcRwWo1ZehLAGxGA - partials-signing-pt-BR-win64-shippable/opt: OHMorIMORYyv1qGzUqId8A - partials-signing-pt-PT-linux-shippable/opt: ZYZ8k_hWSmeBE-ohg6oE2Q - partials-signing-pt-PT-linux64-aarch64-shippable/opt: Q1tlkhY8RXqpnehIQl0sqQ - partials-signing-pt-PT-linux64-shippable/opt: bI9A_bh2RoWG_wApqMn6Vg - partials-signing-pt-PT-macosx64-shippable/opt: ExUrDacrSViUtQvdMONudA - partials-signing-pt-PT-win32-shippable/opt: Iaa1MfEDRe6X9bT-2xEUiQ - partials-signing-pt-PT-win64-aarch64-shippable/opt: fJFvR8uWQPeX7weJ7EQHYw - partials-signing-pt-PT-win64-shippable/opt: WMIG8u8dRTGfytGgagLhRA - partials-signing-rm-linux-shippable/opt: f91K0D9KSd-wwyZDGDthAg - partials-signing-rm-linux64-aarch64-shippable/opt: bWqSsPKGTHeIg2417BjaAA - partials-signing-rm-linux64-shippable/opt: E5jMsO5lQva21_6ZzBIp2w - partials-signing-rm-macosx64-shippable/opt: HgI4GdFLSraJmoz9_bW1GA - partials-signing-rm-win32-shippable/opt: am7ldb_RR-awqxSd1Sx2rQ - partials-signing-rm-win64-aarch64-shippable/opt: DwDHegysQzedWHI3J9cpLA - partials-signing-rm-win64-shippable/opt: TsnHutrbTXqh2ggAxMsuJA - partials-signing-ro-linux-shippable/opt: XTKoEEUJQHKEjKrGe_DrXA - partials-signing-ro-linux64-aarch64-shippable/opt: X9IVBdA1RH6Uvbiu6bZ-2g - partials-signing-ro-linux64-shippable/opt: eU7EwY5cTiGhO8xSAQjjgA - partials-signing-ro-macosx64-shippable/opt: DbuJ0H5qTU2HjxAY-Tscbw - partials-signing-ro-win32-shippable/opt: ehtz60dWSMu2EAtYJhVU6g - partials-signing-ro-win64-aarch64-shippable/opt: Y4fu_ZJ6SL6XC-leUYfkuQ - partials-signing-ro-win64-shippable/opt: Gc5hbyyiTVqHHHd96PHT4Q - partials-signing-ru-linux-shippable/opt: JX40qRe1SgiUfmnBGbtuXA - partials-signing-ru-linux64-aarch64-shippable/opt: WiCt-ZlsRemivh9Nb73fKw - partials-signing-ru-linux64-shippable/opt: KsAnlbc3TYKcVBHH6_rpNw - partials-signing-ru-macosx64-shippable/opt: D3j93LcgReCxPD_1T5p9bw - partials-signing-ru-win32-shippable/opt: C8N6Z9hOQFylavtoJZueDQ - partials-signing-ru-win64-aarch64-shippable/opt: d5qp_vk4RWKyiXKNISFV-g - partials-signing-ru-win64-shippable/opt: T06KVQAkQbK5xzzCdc9jAA - partials-signing-sat-linux-shippable/opt: B4usNxheQCCrmUQ7YMWAHQ - partials-signing-sat-linux64-aarch64-shippable/opt: Y4xv5bSeTnG8SuZPTKF44Q - partials-signing-sat-linux64-shippable/opt: XpTOGb3nRSq8fbmR9FP9tQ - partials-signing-sat-macosx64-shippable/opt: ABDbZJNBTsOaVxBDNtDO7w - partials-signing-sat-win32-shippable/opt: d6cQkBgJTBiD7SBGq1hDlQ - partials-signing-sat-win64-aarch64-shippable/opt: IaP7YVR7TF2LnLw4xCU9Ug - partials-signing-sat-win64-shippable/opt: HEBUaC6PRheJQFSHQgsJvQ - partials-signing-sc-linux-shippable/opt: c0t9RcIXR_CNn1Jszp9ddg - partials-signing-sc-linux64-aarch64-shippable/opt: QDQlIXdgSIqT5v2qkZe5jg - partials-signing-sc-linux64-shippable/opt: TZZFoJzCQqyMptCy99jSLA - partials-signing-sc-macosx64-shippable/opt: Ks0zqkTHSjWAk9j1dzam9Q - partials-signing-sc-win32-shippable/opt: FtMdEOT4TICiC_lcmBrenQ - partials-signing-sc-win64-aarch64-shippable/opt: R9DyAQRVQNa4nt5ZDryfNg - partials-signing-sc-win64-shippable/opt: c-JaPIs2QdCYknJKTNGF1g - partials-signing-sco-linux-shippable/opt: BrGJFtu1QRaH4MxdbSRgVA - partials-signing-sco-linux64-aarch64-shippable/opt: U4AXkDhRS3-rIHe0EtFM3g - partials-signing-sco-linux64-shippable/opt: FcyzhEaPRG6jvncacNu0HA - partials-signing-sco-macosx64-shippable/opt: GGHi7RblTH-RFQrBW5AaXg - partials-signing-sco-win32-shippable/opt: Y9tDP9ETS9uzWxz01mNDjQ - partials-signing-sco-win64-aarch64-shippable/opt: RLzQ2fyZRz2SfAJvqYemlw - partials-signing-sco-win64-shippable/opt: aVfdMsB8SYyx4MNEtzzB-A - partials-signing-si-linux-shippable/opt: FMPp00SSRWCcZIVzh0x9-Q - partials-signing-si-linux64-aarch64-shippable/opt: Tv6rKNruSreTLenymX3Hmg - partials-signing-si-linux64-shippable/opt: L6-boDyHSYSzG9_2QZ-74Q - partials-signing-si-macosx64-shippable/opt: DR3x08ZgTBCK9yXawY4qPQ - partials-signing-si-win32-shippable/opt: XdV-sYySQEGvQ2kMyCGwkA - partials-signing-si-win64-aarch64-shippable/opt: D9lSz8pQQiGG__yrBVTY1g - partials-signing-si-win64-shippable/opt: Bv5azUxVR_yQygHbjmOC1g - partials-signing-sk-linux-shippable/opt: CzgY13BlSr2tcxkB6HcU0w - partials-signing-sk-linux64-aarch64-shippable/opt: J90vDChZRUS7y3WH2Hjvyw - partials-signing-sk-linux64-shippable/opt: Wkmbdl91QMCWubZ-M8nKQQ - partials-signing-sk-macosx64-shippable/opt: T9gvLYONQE6aanusIZ7TfA - partials-signing-sk-win32-shippable/opt: VhAkS7M_R0SScTj_mHPPQg - partials-signing-sk-win64-aarch64-shippable/opt: IRYbxy58TX-EMR3zfyC-0Q - partials-signing-sk-win64-shippable/opt: YwLkw635TEiDsXJZBLXeMg - partials-signing-skr-linux-shippable/opt: LuHS1i6GQr-o5Vf2Cc_hew - partials-signing-skr-linux64-aarch64-shippable/opt: AkS1CagZTjmH2ogx4qgODQ - partials-signing-skr-linux64-shippable/opt: NbLB1f8VQLu-pdSIe5nsSg - partials-signing-skr-macosx64-shippable/opt: Fb4E1umsSZGJNXzHdD_vWw - partials-signing-skr-win32-shippable/opt: U3zBnQYCS2KWHiRUwrDptg - partials-signing-skr-win64-aarch64-shippable/opt: Q75aa2RnTCqhTthCRpi40A - partials-signing-skr-win64-shippable/opt: GSALHeCMQmKcTw2xk0kDUA - partials-signing-sl-linux-shippable/opt: ARn0yPKdT9mNEJbLxEtfgg - partials-signing-sl-linux64-aarch64-shippable/opt: Upugn9-vTNSrHrvzQNDpTg - partials-signing-sl-linux64-shippable/opt: X5Od9mMxT9O6ZzQoiKa46g - partials-signing-sl-macosx64-shippable/opt: Qpmj1OgYTEeeTeSqopD15w - partials-signing-sl-win32-shippable/opt: Q5i212iBTDmG_LPfcJU_Xw - partials-signing-sl-win64-aarch64-shippable/opt: XypTlzt8TQuoD_HMQ9hQdw - partials-signing-sl-win64-shippable/opt: D-GVYoyDTE2nAj5e-EroCA - partials-signing-son-linux-shippable/opt: Y__H4X41R2u9P0aLTWElIw - partials-signing-son-linux64-aarch64-shippable/opt: Yo0HM595TduCIdLu2iNwXA - partials-signing-son-linux64-shippable/opt: Xr-Y9uv8QB2FocFzklKy5g - partials-signing-son-macosx64-shippable/opt: Nz8JQ7HPRVyl9qctJdrhfA - partials-signing-son-win32-shippable/opt: QFWdEBa_TvqFgyFbXX8mbA - partials-signing-son-win64-aarch64-shippable/opt: avnWmTRLT2-OIgJeKYLmHA - partials-signing-son-win64-shippable/opt: BpoUY9hbRFGnF4O_l4aehw - partials-signing-sq-linux-shippable/opt: X0KTPB9QQ1afU-2BUZ9KBQ - partials-signing-sq-linux64-aarch64-shippable/opt: cLrGQy6aToia7GVFx8eCAg - partials-signing-sq-linux64-shippable/opt: UWdX82fMTzC20HIAZTGuKA - partials-signing-sq-macosx64-shippable/opt: DO66yaetR1GL_HrbzyIWOA - partials-signing-sq-win32-shippable/opt: HQmF0Y8vQXSyEmsnvavftw - partials-signing-sq-win64-aarch64-shippable/opt: ZWWoDQzgTp6lCaqyfoswMQ - partials-signing-sq-win64-shippable/opt: QaRDFyKPTr6RrCKiYWRSog - partials-signing-sr-linux-shippable/opt: fJZ61UliQAWjqOIRiaMkKw - partials-signing-sr-linux64-aarch64-shippable/opt: G1mh8tabSG-9rhnywNWqvw - partials-signing-sr-linux64-shippable/opt: Yot0xweaQQKT-cLNNZtmAQ - partials-signing-sr-macosx64-shippable/opt: XpfbggyzQyyORAanh30L3A - partials-signing-sr-win32-shippable/opt: L0adjJjLTgyyjiliCkmyCg - partials-signing-sr-win64-aarch64-shippable/opt: IopDL5TTRfCe8KIUqimV5A - partials-signing-sr-win64-shippable/opt: StMU7biVRZWQ6wg838emHA - partials-signing-sv-SE-linux-shippable/opt: KWqCe6nRSbOi2Q3VeNCTUw - partials-signing-sv-SE-linux64-aarch64-shippable/opt: YCQzMQvpQJSLRxK06oQtzg - partials-signing-sv-SE-linux64-shippable/opt: BZLKz2cBQAWka9S4CggMqQ - partials-signing-sv-SE-macosx64-shippable/opt: T91rFefdQUS1uFX-bJq0qw - partials-signing-sv-SE-win32-shippable/opt: GEBxmJuKS1S9Quk5jAD0QA - partials-signing-sv-SE-win64-aarch64-shippable/opt: ZbpfrSowQ-Oz_u7SYiyIPw - partials-signing-sv-SE-win64-shippable/opt: UgC_1dQPSpGcyYWb12F6Rw - partials-signing-szl-linux-shippable/opt: DN8DrdlKQDGb8yg8UvaBfw - partials-signing-szl-linux64-aarch64-shippable/opt: Iu781w75SQ6KwGb6YbyLBw - partials-signing-szl-linux64-shippable/opt: T4riWvwzSV-WHy-q290oDw - partials-signing-szl-macosx64-shippable/opt: J42iJi6qSPq0GhQajbV9sg - partials-signing-szl-win32-shippable/opt: Hwo7pfYqRT2qggQLGOKzPg - partials-signing-szl-win64-aarch64-shippable/opt: fZhw0TGHSZKAq96jSEvbkA - partials-signing-szl-win64-shippable/opt: ZMVgWH3mTuy2YcwsLRMttA - partials-signing-ta-linux-shippable/opt: ZJ_ANyGQRbKZETfpLxAuMg - partials-signing-ta-linux64-aarch64-shippable/opt: VWADvHMuT2C44JuHlGN0MA - partials-signing-ta-linux64-shippable/opt: D8pt_ma2TBSiGZEolXEHuQ - partials-signing-ta-macosx64-shippable/opt: VjQYSc9pSLyfh8Vln_ALKg - partials-signing-ta-win32-shippable/opt: WfgWncvETbiPZcbJyhatXQ - partials-signing-ta-win64-aarch64-shippable/opt: EsZStfdeQ0yJ7J3HX95TrA - partials-signing-ta-win64-shippable/opt: Dc1UWDB_QVmSwiLUl4RdCg - partials-signing-te-linux-shippable/opt: czAQ6pN8SUKYZEzdsh1O2g - partials-signing-te-linux64-aarch64-shippable/opt: fkhJ7VJRQHqI3VG8OIqUfw - partials-signing-te-linux64-shippable/opt: Q6Zg-bJ4RCWFaVqZxLdebQ - partials-signing-te-macosx64-shippable/opt: VBoRUA6VQ0a4ymSxS1FE-A - partials-signing-te-win32-shippable/opt: Nc8Jv42DQVm3FogVoS7Bxw - partials-signing-te-win64-aarch64-shippable/opt: JINPEVOPS5SZMEs9RlRA8w - partials-signing-te-win64-shippable/opt: GYoOxvdcTvycsIsAHWIiFQ - partials-signing-tg-linux-shippable/opt: ZLMfnkp6TK2OQ0o0H7aFjw - partials-signing-tg-linux64-aarch64-shippable/opt: cHBAAjFaQ0WDNtFg-ONbqQ - partials-signing-tg-linux64-shippable/opt: YbqtQw9fSbC_F-hOWPa1Ew - partials-signing-tg-macosx64-shippable/opt: UfQEqF0XR3CVcyRq1aS6-Q - partials-signing-tg-win32-shippable/opt: cFdM5rHVSnSillQgmedAgA - partials-signing-tg-win64-aarch64-shippable/opt: AQ7q-iLvSJWead3zxqmdAQ - partials-signing-tg-win64-shippable/opt: AwEkn_QsR4GhcNvKyFfXKA - partials-signing-th-linux-shippable/opt: TEofZRbjTsSvHfPXOrb3CQ - partials-signing-th-linux64-aarch64-shippable/opt: P91Q80EUTo2yNjPtCweH9g - partials-signing-th-linux64-shippable/opt: Eg5Mns1mTE216erSdWAQzw - partials-signing-th-macosx64-shippable/opt: P7unpdx1QPuujYWb52BI8A - partials-signing-th-win32-shippable/opt: IVUXW6_HSxSVJUE7I3dJ6A - partials-signing-th-win64-aarch64-shippable/opt: W_96GoeWS0Ksmw1hibRplw - partials-signing-th-win64-shippable/opt: C_Xscv6LSH6yQGrC3vQ3rQ - partials-signing-tl-linux-shippable/opt: RTYCRyCqQyeY6AZm5-nx3g - partials-signing-tl-linux64-aarch64-shippable/opt: XNAb66xeRGmv6EKzoMO3lA - partials-signing-tl-linux64-shippable/opt: duXMl0vRRR2thsHqhJmYEA - partials-signing-tl-macosx64-shippable/opt: TbZl6T7JSBCB6tmJv3Lfog - partials-signing-tl-win32-shippable/opt: OFWNTZakQy2LkMLoOTrezA - partials-signing-tl-win64-aarch64-shippable/opt: QELOe0tiRWq4oxn7_r2Q_g - partials-signing-tl-win64-shippable/opt: O2_DOcx4QiefI_t4DnH9Wg - partials-signing-tr-linux-shippable/opt: aK-HKRTHTl29KYNZB7b9CQ - partials-signing-tr-linux64-aarch64-shippable/opt: RWEnEuuzTdu3nph5dcVLZg - partials-signing-tr-linux64-shippable/opt: SrC89Ff8QhS4Tn7nVqeZTA - partials-signing-tr-macosx64-shippable/opt: EpZu7b4ZTVady9lNBFtkSQ - partials-signing-tr-win32-shippable/opt: YT2XeBSEQbabP1Fetg7Ldw - partials-signing-tr-win64-aarch64-shippable/opt: TMNnGf-uRHCbfajZUMZ63w - partials-signing-tr-win64-shippable/opt: WDZtanv2R1uOc-avyQsmQA - partials-signing-trs-linux-shippable/opt: c3iE30SrTVeXN3yl5omF9w - partials-signing-trs-linux64-aarch64-shippable/opt: C-Qu40yARBmsV9BOpokvhw - partials-signing-trs-linux64-shippable/opt: ayuNgbucRayS0y9U4aIcBg - partials-signing-trs-macosx64-shippable/opt: MPHa66a_QkuPr3zmvQpc5w - partials-signing-trs-win32-shippable/opt: VJr2QCuiQXa2W4NEGj32nA - partials-signing-trs-win64-aarch64-shippable/opt: KnlYj2AlSC-jz-luU9Q1og - partials-signing-trs-win64-shippable/opt: YWPcOANIRFiz-K2I04yl1Q - partials-signing-uk-linux-shippable/opt: OTvyBgsbQSizst_bnaTvcQ - partials-signing-uk-linux64-aarch64-shippable/opt: Qh6FBMYZQ9OVLOjgWhOScQ - partials-signing-uk-linux64-shippable/opt: cfrSNziGRj2bBdwOCYHscQ - partials-signing-uk-macosx64-shippable/opt: IhH1XQpPTI2yDscmOeVcow - partials-signing-uk-win32-shippable/opt: OqX-lnFwQdCZ-xd9vHgc7A - partials-signing-uk-win64-aarch64-shippable/opt: LafV9dwTRdi9YiM0TgqpZQ - partials-signing-uk-win64-shippable/opt: K32lKCr5T7e_JkD9YjDOKA - partials-signing-ur-linux-shippable/opt: Vmc4Wpy1TuGSEuoxf1KRhA - partials-signing-ur-linux64-aarch64-shippable/opt: BSK4uZhQSfCuFz-DvhTj2Q - partials-signing-ur-linux64-shippable/opt: G3iImI3AT1C1kzH4TLxJug - partials-signing-ur-macosx64-shippable/opt: Sa5geUpSTWi4PYaRpDHGEA - partials-signing-ur-win32-shippable/opt: KTJg6AKwRPqwIY-D-7uKpw - partials-signing-ur-win64-aarch64-shippable/opt: ZxHFMtk7Qrm9Fd0kMHTWEA - partials-signing-ur-win64-shippable/opt: YU5t4bfIQK23jkvAVN4b3Q - partials-signing-uz-linux-shippable/opt: HBGT3o0zTMelPSwETidk0A - partials-signing-uz-linux64-aarch64-shippable/opt: Vsxk6JXaQgmIdnqIfeVSkw - partials-signing-uz-linux64-shippable/opt: UrHxWgO3SxalIpI6TsgqHg - partials-signing-uz-macosx64-shippable/opt: R0PjBfRGSdyRgt7CxMptAQ - partials-signing-uz-win32-shippable/opt: NgmFLAIETQi5wUghtbaM-A - partials-signing-uz-win64-aarch64-shippable/opt: VljE3Cm-SU64eSZE25RfuA - partials-signing-uz-win64-shippable/opt: aodf_Wk_TGy2srkrmW-dTg - partials-signing-vi-linux-shippable/opt: VQ-CaLIASiSqdlzCjrSv5Q - partials-signing-vi-linux64-aarch64-shippable/opt: ZUfz_zs_TkKOtIbu5JAtug - partials-signing-vi-linux64-shippable/opt: at7-hdKPTcCaa5CFn5S9jw - partials-signing-vi-macosx64-shippable/opt: WL42HtJETPOvfKTlzQE-OQ - partials-signing-vi-win32-shippable/opt: RxI-2bHCS_irM3fKwEobDA - partials-signing-vi-win64-aarch64-shippable/opt: E8C6H5BFSsG8MCWMF9BQ3A - partials-signing-vi-win64-shippable/opt: MptFufNRTJGkEbQoYL5Pbw - partials-signing-win32-shippable/opt: HoyOSB9rRNeEx1nXtxj0Yw - partials-signing-win64-aarch64-shippable/opt: UyHiN3g4ROCNBRpr77yAqQ - partials-signing-win64-shippable/opt: DLqI4nQDTpiKFv5Nm9OyRA - partials-signing-xh-linux-shippable/opt: GZ42GnBMSJWDd7Ov_Cgl4Q - partials-signing-xh-linux64-aarch64-shippable/opt: d8blKdKjTLCRg8k3fsgkjA - partials-signing-xh-linux64-shippable/opt: WdbRA4E6Qi6TGfnr6TCISQ - partials-signing-xh-macosx64-shippable/opt: U94CNmXzSWyHIRL4YdN0Lw - partials-signing-xh-win32-shippable/opt: K4HsTjtsQ4-eDeXeRAyz8Q - partials-signing-xh-win64-aarch64-shippable/opt: YLikAGPXSYyrRYp5fPuMMQ - partials-signing-xh-win64-shippable/opt: IdthiNKsSK6YaLF3U2Q7Yg - partials-signing-zh-CN-linux-shippable/opt: YKdRS7tgQyKcEwdZDLS7ig - partials-signing-zh-CN-linux64-aarch64-shippable/opt: AQI9mp9gSG6V_zP2-VE3KA - partials-signing-zh-CN-linux64-shippable/opt: DSVgq0hRQK69lXP8aii43A - partials-signing-zh-CN-macosx64-shippable/opt: IX5iZi3xSA-4-Ln0XMESRg - partials-signing-zh-CN-win32-shippable/opt: QhKh57JvSzepfzKNjD4vfA - partials-signing-zh-CN-win64-aarch64-shippable/opt: QaqLxN3XT6KHVxrYcnjpEA - partials-signing-zh-CN-win64-shippable/opt: dFa3EnuBT3K6NhD5yhnj6g - partials-signing-zh-TW-linux-shippable/opt: WVtkLMtJSjmZr-IKOVlBNQ - partials-signing-zh-TW-linux64-aarch64-shippable/opt: PFJsA_t2TT2aB33u8gCvIQ - partials-signing-zh-TW-linux64-shippable/opt: NbbpEjbYQBCe9X5t20QRvQ - partials-signing-zh-TW-macosx64-shippable/opt: FtFqskPdQA-Twcdkx7OCjA - partials-signing-zh-TW-win32-shippable/opt: EBzllPPQRdeFRCyl5DmkZg - partials-signing-zh-TW-win64-aarch64-shippable/opt: Ezb2Gv_RQYS1oBpQasB35w - partials-signing-zh-TW-win64-shippable/opt: Q4oO0lKCTaCzktvJ5q3vbA - partials-sk-linux-shippable/opt: P5Zmo95SSZS3E_MjdyMSNA - partials-sk-linux64-aarch64-shippable/opt: I5dUZfVKTpaYkBNGywqeng - partials-sk-linux64-shippable/opt: MjbwXz9aS3eGnyE6XOIEsg - partials-sk-macosx64-shippable/opt: T36T1I-fSzqGcmurt9tfMg - partials-sk-win32-shippable/opt: AhGkkyVpTcOCI1DufVd18w - partials-sk-win64-aarch64-shippable/opt: QeEIWEDuR6OxVqotytriyg - partials-sk-win64-shippable/opt: WyTossreQOOyxuO4FtnauA - partials-skr-linux-shippable/opt: X8Yut0c6QMi-l8nvBmRatQ - partials-skr-linux64-aarch64-shippable/opt: Vf_bl6G7TpeqruZgQJqBrw - partials-skr-linux64-shippable/opt: ByDIVQqpT_-NsAervl75bg - partials-skr-macosx64-shippable/opt: FJqLSCLkS8qPfyty9Ho2uQ - partials-skr-win32-shippable/opt: W7ZqDKWXT7SfYW7Rp1qVSA - partials-skr-win64-aarch64-shippable/opt: KCf5jH3TTaqDmf0wQZURzA - partials-skr-win64-shippable/opt: DPYlI1WvSXClPA0zAVQtiA - partials-sl-linux-shippable/opt: SEG86SQsTZyeWdyfJlgAeA - partials-sl-linux64-aarch64-shippable/opt: YH6ox0ELTLWCVP5YogIoLA - partials-sl-linux64-shippable/opt: bVkYpungQYiq__vT6PcEmQ - partials-sl-macosx64-shippable/opt: KeGIce3SRk-SHLhjJ_294A - partials-sl-win32-shippable/opt: aKuw9pt2Qz2uBrcodRgWsQ - partials-sl-win64-aarch64-shippable/opt: WM9Gv-6ETIWQyFbPA0BFcg - partials-sl-win64-shippable/opt: dPaF_XJXQC-gm8gRznz5Fw - partials-son-linux-shippable/opt: N1LOFVjcRTuEQaUYRlzFIw - partials-son-linux64-aarch64-shippable/opt: C5rqkZLsRnmUwaxTR4pVDg - partials-son-linux64-shippable/opt: eTLNlXc7RLiby4pcTjRA3A - partials-son-macosx64-shippable/opt: Yhw33oyIQtK0xsBi2qf20w - partials-son-win32-shippable/opt: SvWd_BG6ThORdLWe95slYA - partials-son-win64-aarch64-shippable/opt: HdATeeUGQsiI8JJhxT5CNw - partials-son-win64-shippable/opt: RUU25QsdRJeIl7wHdPHoOg - partials-sq-linux-shippable/opt: fVsce6N_RmC4CONQPLopEQ - partials-sq-linux64-aarch64-shippable/opt: NDVlH7zJRVeOb_d1CBjD-Q - partials-sq-linux64-shippable/opt: IU2MVG1QT1SG02Jw6O-5kw - partials-sq-macosx64-shippable/opt: LtJ8H0OQQ26AvknZsOwrYg - partials-sq-win32-shippable/opt: O_R_5fsTQ7Kyk3eDzpp4Mw - partials-sq-win64-aarch64-shippable/opt: M8fkcSnMQg6zCAQiI9PTOA - partials-sq-win64-shippable/opt: NcyVPN5aQYCSeTKAmZLm5w - partials-sr-linux-shippable/opt: e_Wh63oqSSO8EJeAuDpyXQ - partials-sr-linux64-aarch64-shippable/opt: bwigvAgtSCGhwYJaYKc7pw - partials-sr-linux64-shippable/opt: J3jOB5l6S2mxSzWYNouK2Q - partials-sr-macosx64-shippable/opt: Bc3ipuJVQ6G8rAg-QtgStg - partials-sr-win32-shippable/opt: TxAiJ9SoTvm8QDmifTtD7w - partials-sr-win64-aarch64-shippable/opt: aEJrM-rxRXCysBAqB2gB4Q - partials-sr-win64-shippable/opt: EySPx6JxQ9SNY5YwZ5pAhw - partials-sv-SE-linux-shippable/opt: Rw8mB-fvQTK2nAQ8b35WIA - partials-sv-SE-linux64-aarch64-shippable/opt: SgGTU29jRuG3UGMQbobkYQ - partials-sv-SE-linux64-shippable/opt: G0cQYlmlQECpDmR1ygDwxw - partials-sv-SE-macosx64-shippable/opt: Sxhcf-8ITLyj1CGFVnMnLw - partials-sv-SE-win32-shippable/opt: LQFdVwu6SdaWfwdo7HlvbA - partials-sv-SE-win64-aarch64-shippable/opt: f7Z2zmEJQxyPd2cNLzuYBA - partials-sv-SE-win64-shippable/opt: d8UCiyANT5a68MOCb-EYvQ - partials-szl-linux-shippable/opt: Cy6ioe5RQGqT96Xxgi2R8Q - partials-szl-linux64-aarch64-shippable/opt: EzCcqHlGTC2JUQPIYRGvXA - partials-szl-linux64-shippable/opt: b0-oSMcRQr6AUZy1The_ew - partials-szl-macosx64-shippable/opt: RYZl1ScAQm-8R66054UCQQ - partials-szl-win32-shippable/opt: EraW-gMoRjSocKLAZYN4sg - partials-szl-win64-aarch64-shippable/opt: VzuJ30fRQ1awmnC191Vslw - partials-szl-win64-shippable/opt: M5K6WjLcT_aRbEaeAGTTXA - partials-ta-linux-shippable/opt: djFFkx0LRKi7c01ptEeoFQ - partials-ta-linux64-aarch64-shippable/opt: N0LFkqJgQTmxP9cJuxdd1A - partials-ta-linux64-shippable/opt: Tc3W1V7sRMWJzkOA_8pLaQ - partials-ta-macosx64-shippable/opt: dPj44g8uRX-IbeH_SNEW6A - partials-ta-win32-shippable/opt: BkbYKWycQ4CrSUDr9XqtLg - partials-ta-win64-aarch64-shippable/opt: H4Xk7ugST8qiMSXs-GXT-A - partials-ta-win64-shippable/opt: LoB794JNTlG7brJjlRfPtA - partials-te-linux-shippable/opt: FfrIg0OVTXKWGdRZ-zfibQ - partials-te-linux64-aarch64-shippable/opt: dY0JzfK0RGeTw0DGnOkMAQ - partials-te-linux64-shippable/opt: FbXeteDsRq-L4JxKeOIL7g - partials-te-macosx64-shippable/opt: amywsM6CQeKcZgFCsv5pZg - partials-te-win32-shippable/opt: B4kmHoR5Q9SY8kFBP-ZeLw - partials-te-win64-aarch64-shippable/opt: Ru9VtpVeRRa4annS5Vtvzw - partials-te-win64-shippable/opt: CG63lBSzRY6UTQk0CXxGNQ - partials-tg-linux-shippable/opt: JnyRWmG5RFmsS4Ifxa6pPw - partials-tg-linux64-aarch64-shippable/opt: B91XUhUxRkuIm7aM4XGKZQ - partials-tg-linux64-shippable/opt: PoryQRF_Saew3ZPL4ThOFQ - partials-tg-macosx64-shippable/opt: NmgjEYXBToOCLtJj3wMptg - partials-tg-win32-shippable/opt: MVMm5ELnR8WVW0WM05RhCw - partials-tg-win64-aarch64-shippable/opt: CCtH-6kaRGuEHRSzqBWdRQ - partials-tg-win64-shippable/opt: METYsH_JRlu1Dxgr2c4ZZA - partials-th-linux-shippable/opt: CzXt_L5URHa8L-oX0sj7tA - partials-th-linux64-aarch64-shippable/opt: U2IHwPfqTTWZkt29wtBycg - partials-th-linux64-shippable/opt: WXRgKOFFT1K28GaVEqXy9g - partials-th-macosx64-shippable/opt: Hnu6Cq4IRcWqAaNuI1kFmA - partials-th-win32-shippable/opt: MQ3a9WATStKrXQzXyL7mpQ - partials-th-win64-aarch64-shippable/opt: SfQZzf1jSKu8wkhPUOYDIg - partials-th-win64-shippable/opt: UjGXqarXTRuQnuBoFf4Jsw - partials-tl-linux-shippable/opt: fod-AhaURMC-YBv2aXxykw - partials-tl-linux64-aarch64-shippable/opt: dA63iQVUSTiF3BT_nUFSwA - partials-tl-linux64-shippable/opt: S5hl5Mx2QS-0JBwlHC2n9Q - partials-tl-macosx64-shippable/opt: HehlDbMYSOW_9-wDFOS8dg - partials-tl-win32-shippable/opt: P6soArOlTGSWKI--5Sjiwg - partials-tl-win64-aarch64-shippable/opt: dkuHzh0nSBqFL7IXE2sFZg - partials-tl-win64-shippable/opt: XnKdcuEETrK5tmTrWJkPrQ - partials-tr-linux-shippable/opt: WDqDQjRxSceTe-yWsYP0YA - partials-tr-linux64-aarch64-shippable/opt: cvDj7G4HRf2Zf3ufo_Af7w - partials-tr-linux64-shippable/opt: HHzDcx_aRo6spWZ8b9fmrg - partials-tr-macosx64-shippable/opt: DVZWiWbASvO-nLw2barheA - partials-tr-win32-shippable/opt: K1Y78yesQb-JtWkQZCh__Q - partials-tr-win64-aarch64-shippable/opt: MuenH0yWTnuwXoGXF57Gvw - partials-tr-win64-shippable/opt: K7ssxqhBT3id0U_XZnpi4A - partials-trs-linux-shippable/opt: EIwS1FpHTKmfhMyRo8qXiA - partials-trs-linux64-aarch64-shippable/opt: dJVQKWyPRP2FTD5IA9TihA - partials-trs-linux64-shippable/opt: SDf7DzTeQAK0KoAhTyTdNg - partials-trs-macosx64-shippable/opt: WnsbxmVtTJSjZMyctxtuWg - partials-trs-win32-shippable/opt: NCfDC8_iSRaCv7vvWTLFWg - partials-trs-win64-aarch64-shippable/opt: CKsWW1QATSaBgeCi2CrTwQ - partials-trs-win64-shippable/opt: FggQKNgNR_qW6by5oCv1nA - partials-uk-linux-shippable/opt: ACFvZGISQ3iuAtbo52OZHQ - partials-uk-linux64-aarch64-shippable/opt: XEUsnfNiQs-W1yTACvNwNg - partials-uk-linux64-shippable/opt: fJd3HSOLQ6GYqa2YDwDSTA - partials-uk-macosx64-shippable/opt: doK1w5KGS8CmdGGW4g9JSA - partials-uk-win32-shippable/opt: PS0LdAy8RCWe1xM3yNPloQ - partials-uk-win64-aarch64-shippable/opt: CC9GfqkrRNumrLDRKJ0uCg - partials-uk-win64-shippable/opt: dTbJ7C65TfyN7CMoKtdqWA - partials-ur-linux-shippable/opt: E5ku6r6MT6KgRgkehpGZcQ - partials-ur-linux64-aarch64-shippable/opt: eBr-d2CGTsWGcV-4BvezUg - partials-ur-linux64-shippable/opt: O_DS5hvQRLqJAzGrPuTO8w - partials-ur-macosx64-shippable/opt: WSV5UwesR3O4t7sER2dl0A - partials-ur-win32-shippable/opt: OHIdtxPlRtW9tbt3b1qX5g - partials-ur-win64-aarch64-shippable/opt: JZR-M37JQ2CIB8cpusw4Tg - partials-ur-win64-shippable/opt: Etmjz3gST4-hGLD36xQpjw - partials-uz-linux-shippable/opt: D6utZRflRgSiyx47mDo_HA - partials-uz-linux64-aarch64-shippable/opt: adLznt-vSP-s-Trj_LPtUQ - partials-uz-linux64-shippable/opt: Y8d1lNf_QTKtyThjCGJRzw - partials-uz-macosx64-shippable/opt: drErMdOySymcVguT78KYaA - partials-uz-win32-shippable/opt: UaK_d7c7TwyFbecTRuT7Tg - partials-uz-win64-aarch64-shippable/opt: DjLI6PNUS1mJyaBkGlhzhg - partials-uz-win64-shippable/opt: a6l5NDRPR1yHNcq29jXWiA - partials-vi-linux-shippable/opt: adyzoewZSRqx5Rbm-mcbpw - partials-vi-linux64-aarch64-shippable/opt: ErD8aYWHT6eRqtcheVJGlw - partials-vi-linux64-shippable/opt: BRjnZPPYRuyG_-PDIjd8_Q - partials-vi-macosx64-shippable/opt: Ea-8VG61RcmXd6qhIyL5DQ - partials-vi-win32-shippable/opt: RESUGQXdQCiRy_5m5vTL4Q - partials-vi-win64-aarch64-shippable/opt: Wttq4xVnRBmmCYh2aOzj1w - partials-vi-win64-shippable/opt: eRKM0b9iQbKWyIdwJtmB2g - partials-win32-shippable/opt: TvfOGqcVTKWvdw8VYg0urg - partials-win64-aarch64-shippable/opt: TjcKC3OUR3iKyPrzxfUz6w - partials-win64-shippable/opt: fQuW6r9XRAatMfoJxo59QQ - partials-xh-linux-shippable/opt: DLPOWFaGSjipMqwjNkPxNA - partials-xh-linux64-aarch64-shippable/opt: RKJh-ANIS7Wh7UPdsKkrCA - partials-xh-linux64-shippable/opt: VLjOBZIqRUye1HDalWhpxA - partials-xh-macosx64-shippable/opt: BWY037IKTvacdEebY0_vHQ - partials-xh-win32-shippable/opt: KmqoyJReRZSAOLvn3AMmkQ - partials-xh-win64-aarch64-shippable/opt: KwxJhMTuRlOQ_WFGnXzTNg - partials-xh-win64-shippable/opt: KJk8ZSFeTgm0w5YdPShHNw - partials-zh-CN-linux-shippable/opt: RE8xs2a5TRWhjjX4Fxe75w - partials-zh-CN-linux64-aarch64-shippable/opt: bcCqlhz8TV-JAm_QiC1Tfg - partials-zh-CN-linux64-shippable/opt: IdYy41fVQ_W_ykgkVSH9Uw - partials-zh-CN-macosx64-shippable/opt: GlCkVKpuRWK9MeVwZSyr2A - partials-zh-CN-win32-shippable/opt: aCWubT6_TvmZA4Wd6d626g - partials-zh-CN-win64-aarch64-shippable/opt: Ff0hD4P2THWQP-keyNYv-g - partials-zh-CN-win64-shippable/opt: bnYr8ygTSkKNqHMfWj5-0A - partials-zh-TW-linux-shippable/opt: ekJXnDkIRUu1wmHqOnJJdg - partials-zh-TW-linux64-aarch64-shippable/opt: J7C3CK40Sg2vJW911TGljg - partials-zh-TW-linux64-shippable/opt: T_N2eL6SRQW6erllyN1jmQ - partials-zh-TW-macosx64-shippable/opt: au3ozgqCT--Y9f4z0DRcNg - partials-zh-TW-win32-shippable/opt: cz-m5AA2Tna4FMD-kRJ_dQ - partials-zh-TW-win64-aarch64-shippable/opt: FiGOA5mkTUmo-YZXIIO_vw - partials-zh-TW-win64-shippable/opt: XVq1MStqTxGfMYrWjS23tQ - partials-zucchini-ach-linux-shippable/opt: GKICdUgxSKO-g2MRbKrWxg - partials-zucchini-ach-linux64-aarch64-shippable/opt: EJzewboXRbSQLy8FfEnUPw - partials-zucchini-ach-linux64-shippable/opt: FzyneePpR_aCuwUdYLYT1w - partials-zucchini-ach-macosx64-shippable/opt: cvasrzJURe21VGMVtUpHwg - partials-zucchini-ach-win32-shippable/opt: TIB3LbfdTOKBQHG2d-Gv3g - partials-zucchini-ach-win64-aarch64-shippable/opt: R5tiSvs_Ri249wuJE0Je7g - partials-zucchini-ach-win64-shippable/opt: OUlFB3cvT0m9pyJVmu91Fw - partials-zucchini-af-linux-shippable/opt: ELNmBSPzRButIdwlyx9pJA - partials-zucchini-af-linux64-aarch64-shippable/opt: VIYBpcuDT9uV0RonMa6-aQ - partials-zucchini-af-linux64-shippable/opt: Y7PxrzXsS7e65bUVhfMsqQ - partials-zucchini-af-macosx64-shippable/opt: R7E-nUnMQqOzIfLuJh-VPQ - partials-zucchini-af-win32-shippable/opt: ep9qHi_nRU68w8AH3sh8IQ - partials-zucchini-af-win64-aarch64-shippable/opt: BvTW-GFDQoWjGNlq5WYZWg - partials-zucchini-af-win64-shippable/opt: F8b6MphjTsaupVdPe7ok8A - partials-zucchini-an-linux-shippable/opt: cRXEBfaaTmu-8Knf0sEMyw - partials-zucchini-an-linux64-aarch64-shippable/opt: QTQpd2unRfqIVZ8Wx0N3eA - partials-zucchini-an-linux64-shippable/opt: FtoDdLVhSN-yfa3b9BcfOw - partials-zucchini-an-macosx64-shippable/opt: AMVubQfKToahBs0vZA2AfA - partials-zucchini-an-win32-shippable/opt: VPf7H9JuTjqQVYNZUFjguQ - partials-zucchini-an-win64-aarch64-shippable/opt: NF48JsduRNif_12HFhsb1w - partials-zucchini-an-win64-shippable/opt: IIb0gtSFS-my4r5I00LITw - partials-zucchini-ar-linux-shippable/opt: UT-uZi1WSmyqOE6Y9yLctA - partials-zucchini-ar-linux64-aarch64-shippable/opt: RhuJqUanS8mSkzTOdwvG4A - partials-zucchini-ar-linux64-shippable/opt: cpB7ZifJQSK3Sj8sksqWRQ - partials-zucchini-ar-macosx64-shippable/opt: OSoHIdxIT4GORkqYrMGotA - partials-zucchini-ar-win32-shippable/opt: F34gYnmVRimKaW1x0e47tw - partials-zucchini-ar-win64-aarch64-shippable/opt: GuXyr31xTFG1a4so1ZIzPQ - partials-zucchini-ar-win64-shippable/opt: YMw_Keq1RS6rxvIdsq3jTQ - partials-zucchini-ast-linux-shippable/opt: A7dcUHfGQ2aQUQyU0RMerQ - partials-zucchini-ast-linux64-aarch64-shippable/opt: SPM9HY6sRAeW6QYVGDy-9g - partials-zucchini-ast-linux64-shippable/opt: KXBmVDTBQoqD-DP__vtIPQ - partials-zucchini-ast-macosx64-shippable/opt: D1fg3EaWQdGDStS8S9wawA - partials-zucchini-ast-win32-shippable/opt: fdm75FBFRIuvIDWWGKwIyw - partials-zucchini-ast-win64-aarch64-shippable/opt: LQpsAdYyR-qNTmIIor4LkQ - partials-zucchini-ast-win64-shippable/opt: aERy_6TXR6a2Y-yUJofLPw - partials-zucchini-az-linux-shippable/opt: Di5mVeNkQNWtz19rGmvkPQ - partials-zucchini-az-linux64-aarch64-shippable/opt: HHcjci4ySNiwW2CA5HyKmQ - partials-zucchini-az-linux64-shippable/opt: CRokhYO-Qce2iu26v1dT7Q - partials-zucchini-az-macosx64-shippable/opt: RdRB-oeoRLiVMXloCHXKVQ - partials-zucchini-az-win32-shippable/opt: MTxHnx6RST-zEAKU6qHrOg - partials-zucchini-az-win64-aarch64-shippable/opt: TNPH1hsqSoyPIGd5umFlLA - partials-zucchini-az-win64-shippable/opt: EGSGdB-jQISKdojDs091kg - partials-zucchini-be-linux-shippable/opt: XfKoH0pFR0Gb9OfuJMdKZg - partials-zucchini-be-linux64-aarch64-shippable/opt: RnIhx0GoSdittqukbcuu-Q - partials-zucchini-be-linux64-shippable/opt: SmF7bPCQTI-MRhZ9oogYpw - partials-zucchini-be-macosx64-shippable/opt: Zy7UQgN9Rn-rgYv9LbyXDQ - partials-zucchini-be-win32-shippable/opt: QZuMNJ8rRWmCwnCq8DP89w - partials-zucchini-be-win64-aarch64-shippable/opt: PhvUVOlyRBqPEa8ezxeabQ - partials-zucchini-be-win64-shippable/opt: YPshS1p_RGSf3VhQzU6cgg - partials-zucchini-bg-linux-shippable/opt: dF7C9ti2QHqYcHcl1xdc1A - partials-zucchini-bg-linux64-aarch64-shippable/opt: GQJkyU2QRkuePu2uI96ZkA - partials-zucchini-bg-linux64-shippable/opt: KU2I5pkPStS9wRooORkWCw - partials-zucchini-bg-macosx64-shippable/opt: E8aL9IjFTyW_dGufC5Q5MA - partials-zucchini-bg-win32-shippable/opt: fXRppsMWRgusXd-gg_JfIg - partials-zucchini-bg-win64-aarch64-shippable/opt: BxawmSvCTD2qb7yoJAvo-w - partials-zucchini-bg-win64-shippable/opt: XclKfemrR6-TJl1gI8Bx0g - partials-zucchini-bn-linux-shippable/opt: dI21pC54TOSvu5etxkEEqg - partials-zucchini-bn-linux64-aarch64-shippable/opt: YY_0xz9TRpOjuBKalEl6dQ - partials-zucchini-bn-linux64-shippable/opt: N-KdledLRqi305YdxpcdFw - partials-zucchini-bn-macosx64-shippable/opt: eoEy-u8JTM2WFIsOO8qZwA - partials-zucchini-bn-win32-shippable/opt: ZU6KbDTpQUmYGoovtsMAxQ - partials-zucchini-bn-win64-aarch64-shippable/opt: XMmJI8f_Tg2b4bW89nFwzw - partials-zucchini-bn-win64-shippable/opt: ayYlaiZKQ2yggXb8F8DpbQ - partials-zucchini-br-linux-shippable/opt: E06hihsbSim8AcEQrjQJgw - partials-zucchini-br-linux64-aarch64-shippable/opt: QiGCMTqGSxG4NURkt28rPw - partials-zucchini-br-linux64-shippable/opt: OLdWyjthS4ys8COerj7ovw - partials-zucchini-br-macosx64-shippable/opt: Ujh5erg8QTWnNaY3gmdKZw - partials-zucchini-br-win32-shippable/opt: DM68BT5DTS-tHN19p9SBhA - partials-zucchini-br-win64-aarch64-shippable/opt: VJASHebVQdm_6LRqsOkqrw - partials-zucchini-br-win64-shippable/opt: adOtWrIPR9uQEQ888GXu6w - partials-zucchini-bs-linux-shippable/opt: Nvk_h1wdSESZgOImnR9E-A - partials-zucchini-bs-linux64-aarch64-shippable/opt: XBpD5FmIT9Gzo1JHGRufPQ - partials-zucchini-bs-linux64-shippable/opt: I1ryhkOoRTSRnt7yNuBJvg - partials-zucchini-bs-macosx64-shippable/opt: TgaeI8g6RDOAr0XHiUX5Uw - partials-zucchini-bs-win32-shippable/opt: R_jsiS1BS6GD4b6ARPmwjg - partials-zucchini-bs-win64-aarch64-shippable/opt: RWB3Uxy5RGKMa2RIh4hm5g - partials-zucchini-bs-win64-shippable/opt: BO1xAbt9S7K7YHjrMkjoXw - partials-zucchini-ca-linux-shippable/opt: TXfx8kgwSLyQT1hJPw4y6Q - partials-zucchini-ca-linux64-aarch64-shippable/opt: cAEEsiyHSJ-HBd8-XE8ffg - partials-zucchini-ca-linux64-shippable/opt: DPFg0k3IR0-0QlhtUvKtTg - partials-zucchini-ca-macosx64-shippable/opt: WZcB9oNBQpWhkW4zG3jINg - partials-zucchini-ca-valencia-linux-shippable/opt: UB_jE4ggQ0u82DW3Zy7bGg - partials-zucchini-ca-valencia-linux64-aarch64-shippable/opt: Zx4HsQZESsOzMMJ5TN5-IQ - partials-zucchini-ca-valencia-linux64-shippable/opt: M-bedS4iQBySj2fmwC3AsA - partials-zucchini-ca-valencia-macosx64-shippable/opt: Fo8aa_YsSomRKDhWGzzB-A - partials-zucchini-ca-valencia-win32-shippable/opt: baMyKfErRCya7_BSRorOvA - partials-zucchini-ca-valencia-win64-aarch64-shippable/opt: TftL2b_gQvuh0sg9cqwU0A - partials-zucchini-ca-valencia-win64-shippable/opt: NqJS2EM6QryKxjzWtwhiYQ - partials-zucchini-ca-win32-shippable/opt: CcCoklZqSZuzJ6MUiWTB5g - partials-zucchini-ca-win64-aarch64-shippable/opt: Fwv85rqNQyGFnTGWKTo6dQ - partials-zucchini-ca-win64-shippable/opt: KyKF-A67QvqUS15ZliO4hg - partials-zucchini-cak-linux-shippable/opt: HkP1UNdLQ2-KwP47V1RPWg - partials-zucchini-cak-linux64-aarch64-shippable/opt: OY_7u9uWQOyyHW0ZiJTaVA - partials-zucchini-cak-linux64-shippable/opt: HjyB7WXfSV6LFtugNXGmKQ - partials-zucchini-cak-macosx64-shippable/opt: G3BpEL8lSA-4E5s_OT_TKQ - partials-zucchini-cak-win32-shippable/opt: Ye6APH_rSN-m-JJWtb-PMg - partials-zucchini-cak-win64-aarch64-shippable/opt: YOb2Yzn-RGayYC0J2fBmVw - partials-zucchini-cak-win64-shippable/opt: TXZambhvSF2Uc2hFaJquuw - partials-zucchini-cs-linux-shippable/opt: MUcwK2okQWqHU2nXTLJbeQ - partials-zucchini-cs-linux64-aarch64-shippable/opt: OyQRWtMgQWay82hKRi3iYA - partials-zucchini-cs-linux64-shippable/opt: FUqpSDCXTzO9Qi6ulWiD2Q - partials-zucchini-cs-macosx64-shippable/opt: K1pobAkuQGO6WadylEwlpw - partials-zucchini-cs-win32-shippable/opt: Mc6usv-IS_-NKjQDsyfQMA - partials-zucchini-cs-win64-aarch64-shippable/opt: MQMmkImeTAKNl20KfdczpA - partials-zucchini-cs-win64-shippable/opt: d_t-7tl8Rr2SqaQlfjvWGw - partials-zucchini-cy-linux-shippable/opt: Ge7H0yaPQHuc26f1iLPDFw - partials-zucchini-cy-linux64-aarch64-shippable/opt: SCXBBDc7Q_OdRAxy_Glk9g - partials-zucchini-cy-linux64-shippable/opt: GVE4HOUdTHOxfAL7MOH9NQ - partials-zucchini-cy-macosx64-shippable/opt: fkN43JA-Q_-K1mlZZahOZg - partials-zucchini-cy-win32-shippable/opt: Zc0z5XxXRNGEpt8lf_6wJw - partials-zucchini-cy-win64-aarch64-shippable/opt: JQ349GP3Szax26v78ee6hg - partials-zucchini-cy-win64-shippable/opt: fIJCjdsyQrmT5sT6j_PElw - partials-zucchini-da-linux-shippable/opt: PTbmKqySRtORlEzceaPWCQ - partials-zucchini-da-linux64-aarch64-shippable/opt: MG1rdbXPQNi5js_czYz6OA - partials-zucchini-da-linux64-shippable/opt: Gpv1F0ZrTQynYvW9-1_Jkg - partials-zucchini-da-macosx64-shippable/opt: T9q7J8Z0T0-Dpunqju4XAA - partials-zucchini-da-win32-shippable/opt: btublxmRSzO5APLMHqD-Jw - partials-zucchini-da-win64-aarch64-shippable/opt: f_7m2Z72RiOznQWm1L1QXw - partials-zucchini-da-win64-shippable/opt: CQdwYGu2TJSGjm8-Oya4rA - partials-zucchini-de-linux-shippable/opt: JUo60ttvTZ6Hynr2Y3cZ5A - partials-zucchini-de-linux64-aarch64-shippable/opt: PVsvv7NXRRWmc1dPEzQwuA - partials-zucchini-de-linux64-shippable/opt: YU5AZd4vT_KZ1b_DATzENQ - partials-zucchini-de-macosx64-shippable/opt: WEjjMI6YQbyaFSg8jymgBg - partials-zucchini-de-win32-shippable/opt: FLnZY-JTS4ubqAtzh-zajQ - partials-zucchini-de-win64-aarch64-shippable/opt: BMj4VjetQQOaJTpZgAiIhg - partials-zucchini-de-win64-shippable/opt: E7rNewq6RLW4SjxYN9ZOcw - partials-zucchini-dsb-linux-shippable/opt: Yk45YfJbQ6eTFjS3FAB0UQ - partials-zucchini-dsb-linux64-aarch64-shippable/opt: VyUTaruCRxaMkpfViO923A - partials-zucchini-dsb-linux64-shippable/opt: AzM0HlvvQrayivAChzTfcw - partials-zucchini-dsb-macosx64-shippable/opt: HLKYmjnQRVWbtyzImCBdtg - partials-zucchini-dsb-win32-shippable/opt: UVQdwnSYSKmLnBnNiJ5rkw - partials-zucchini-dsb-win64-aarch64-shippable/opt: PSJWG4SsRkCzwWf10VynDw - partials-zucchini-dsb-win64-shippable/opt: a0GIgP0mR9GFOY2Y4QuaKg - partials-zucchini-el-linux-shippable/opt: ZKZEGxy5S9Wg-gpdU4luRQ - partials-zucchini-el-linux64-aarch64-shippable/opt: VFP-Yn-_QX62bP7PfCVSBw - partials-zucchini-el-linux64-shippable/opt: HC71DcT_QfuwLNeNA0QIdg - partials-zucchini-el-macosx64-shippable/opt: f-uHtB_PT6W0lXKKEH-kvQ - partials-zucchini-el-win32-shippable/opt: AqWiWbn8TUizNFnF15XT3A - partials-zucchini-el-win64-aarch64-shippable/opt: L6WuKerYS3iNZW7nU5Ajqw - partials-zucchini-el-win64-shippable/opt: A7MUpcTXQqmzN7EseFnZug - partials-zucchini-en-CA-linux-shippable/opt: NMBgOfLTR2-E2gZrVM8bAw - partials-zucchini-en-CA-linux64-aarch64-shippable/opt: DIhrpzoPT7OL5WjdAaJpCg - partials-zucchini-en-CA-linux64-shippable/opt: Tw3kouf2R3mC0T9OG3HgCQ - partials-zucchini-en-CA-macosx64-shippable/opt: QLyZYB13QjagfUW46G5pQA - partials-zucchini-en-CA-win32-shippable/opt: cL-s-VQfTEiHkXtoIlRdig - partials-zucchini-en-CA-win64-aarch64-shippable/opt: cPR1E9yPTXWnwM4b_88-rg - partials-zucchini-en-CA-win64-shippable/opt: d25n6B10QM6dbxnaFDEFFg - partials-zucchini-en-GB-linux-shippable/opt: QOJlNYOFSEawcj2te9FkpA - partials-zucchini-en-GB-linux64-aarch64-shippable/opt: DwjP6yFpS1iS7sp4u1sxVg - partials-zucchini-en-GB-linux64-shippable/opt: MBbFPOsZQu-eGati7pdVww - partials-zucchini-en-GB-macosx64-shippable/opt: bydpWPwbRzWuID8IesGzDg - partials-zucchini-en-GB-win32-shippable/opt: c8xAb656T8ScljpcZy7wug - partials-zucchini-en-GB-win64-aarch64-shippable/opt: Q_9NnnYKSTa_jgiDM0CKpg - partials-zucchini-en-GB-win64-shippable/opt: GZWpFLxDTd2NyHkWlXp86A - partials-zucchini-eo-linux-shippable/opt: etPX_DgCRDalcR0O6123JA - partials-zucchini-eo-linux64-aarch64-shippable/opt: RbyXzV7uSk24q4SjsrqfzQ - partials-zucchini-eo-linux64-shippable/opt: YVcx247ORcG-VeBolKr8jA - partials-zucchini-eo-macosx64-shippable/opt: DESoKgIdRlO-cQ7KGG4O5Q - partials-zucchini-eo-win32-shippable/opt: Xn35UrG2S36Z9M0QTCKWsA - partials-zucchini-eo-win64-aarch64-shippable/opt: aoyBB29-TXOtH7JVV4r7VA - partials-zucchini-eo-win64-shippable/opt: VvXEYvFmTceGF9_18Fwx2A - partials-zucchini-es-AR-linux-shippable/opt: J1JMh05sSMKr0AHEZFLFeQ - partials-zucchini-es-AR-linux64-aarch64-shippable/opt: c78mr_DHRVCrJUA72yQn3w - partials-zucchini-es-AR-linux64-shippable/opt: IV2HCba4REyu2L0ZIjIRng - partials-zucchini-es-AR-macosx64-shippable/opt: RqqtkkvdT5a0iR-PbhrG3w - partials-zucchini-es-AR-win32-shippable/opt: IpSFKa8GTFKeHB1nAKXaig - partials-zucchini-es-AR-win64-aarch64-shippable/opt: VJNTGMzQRGmO964rShpk7Q - partials-zucchini-es-AR-win64-shippable/opt: ebr6CHUwRP-uHECy65d3sg - partials-zucchini-es-CL-linux-shippable/opt: ZAvcHs8sS2uKsqEspf_Qbg - partials-zucchini-es-CL-linux64-aarch64-shippable/opt: GASYvOPKRS6Vh28tU-yiTQ - partials-zucchini-es-CL-linux64-shippable/opt: af097BSiTZOx9tCbxgpAuA - partials-zucchini-es-CL-macosx64-shippable/opt: MkEV8wkaQJqT1AepkLz_Vg - partials-zucchini-es-CL-win32-shippable/opt: LMFoysHrQeWMN_DMRnxIvw - partials-zucchini-es-CL-win64-aarch64-shippable/opt: UfxpE-1qTIe7Bu_YdL-3sg - partials-zucchini-es-CL-win64-shippable/opt: JcEVYhjfRPC9_OLnOTwNiA - partials-zucchini-es-ES-linux-shippable/opt: AQUJiGQ0Sp643tSR0S31Nw - partials-zucchini-es-ES-linux64-aarch64-shippable/opt: frnE0ecKT7mmxjr1qQOEiQ - partials-zucchini-es-ES-linux64-shippable/opt: Yf7Lyp3RTpKCQXoBBVbfxA - partials-zucchini-es-ES-macosx64-shippable/opt: ZqlQ7QrYQmqaSnaWWuww7w - partials-zucchini-es-ES-win32-shippable/opt: W5C3c44uR32RhTrq9NbC9Q - partials-zucchini-es-ES-win64-aarch64-shippable/opt: aQ7AutwISF2qS0aOSrb84g - partials-zucchini-es-ES-win64-shippable/opt: fEnK_1zERpypkAXNdlzqxA - partials-zucchini-es-MX-linux-shippable/opt: SNAGG0zPRLC3u7zLx4bptA - partials-zucchini-es-MX-linux64-aarch64-shippable/opt: bP22XxXCQ7KVjr8m9X2Glw - partials-zucchini-es-MX-linux64-shippable/opt: bxOBREQXTz2GMwUNbITLTQ - partials-zucchini-es-MX-macosx64-shippable/opt: Et4W-gDAQcWr-ZiVIIPLJQ - partials-zucchini-es-MX-win32-shippable/opt: CTvW2Rh7SWmEC6rNClPrEQ - partials-zucchini-es-MX-win64-aarch64-shippable/opt: f04ceUz1RJ-LB0yFRwdZjQ - partials-zucchini-es-MX-win64-shippable/opt: NbpPIxSqQLOXOkS3fgHA1Q - partials-zucchini-et-linux-shippable/opt: czkIw7hYSX21fgPfI_LN0A - partials-zucchini-et-linux64-aarch64-shippable/opt: XO8vw9ExSEGFPuGfq00Q0Q - partials-zucchini-et-linux64-shippable/opt: Bu0h91BaRFi0T4knzlrIqA - partials-zucchini-et-macosx64-shippable/opt: d3cTZBmQS22IgMyiYlf5Nw - partials-zucchini-et-win32-shippable/opt: NqUQSCN7Tn23VxS3F4KI0Q - partials-zucchini-et-win64-aarch64-shippable/opt: AfyL9Rp8SwqbveokvYzldw - partials-zucchini-et-win64-shippable/opt: DOAgIuseTvuunsUvcS9Egw - partials-zucchini-eu-linux-shippable/opt: Y95masJKS7-1-s0KKugRzw - partials-zucchini-eu-linux64-aarch64-shippable/opt: BSkuNwbcQfWDpwLFT5Q21g - partials-zucchini-eu-linux64-shippable/opt: J68RQKm9Sry0QV6ll5Ac1w - partials-zucchini-eu-macosx64-shippable/opt: L3ddHs89QdSOHv9lH4jRTA - partials-zucchini-eu-win32-shippable/opt: eaikNQhCRACFDD9EBiErfg - partials-zucchini-eu-win64-aarch64-shippable/opt: eOtYiRPMT1CXgcd8TFk1Fg - partials-zucchini-eu-win64-shippable/opt: cGC3awPTQHercf4AAFlq1w - partials-zucchini-fa-linux-shippable/opt: eah3gwV3Q_2Ny4wtjpSjuQ - partials-zucchini-fa-linux64-aarch64-shippable/opt: bcCrY5J8TiOSdmn_v6L-lQ - partials-zucchini-fa-linux64-shippable/opt: czI0PPMRRWKaEDLIuNrgBw - partials-zucchini-fa-macosx64-shippable/opt: elVkNPdmSvCHMVJyElWCXw - partials-zucchini-fa-win32-shippable/opt: f0MxsAHFTN-pu4WQk9SuPA - partials-zucchini-fa-win64-aarch64-shippable/opt: QGSf3W7cTdqTwr5nAhs3nQ - partials-zucchini-fa-win64-shippable/opt: SF6T4sBjQdCKy9_2puOttA - partials-zucchini-ff-linux-shippable/opt: UQlR4A5pRZ276J5U-M6UFg - partials-zucchini-ff-linux64-aarch64-shippable/opt: MX41YrBcTTqhCk--PYRe4A - partials-zucchini-ff-linux64-shippable/opt: R5CB27GKQC603lMUnchfeA - partials-zucchini-ff-macosx64-shippable/opt: YrF8vxoQTIOIYbFTEYLJTQ - partials-zucchini-ff-win32-shippable/opt: bIIIzpGfQwyqxHknCXG1bQ - partials-zucchini-ff-win64-aarch64-shippable/opt: JSYzAsAITHKaQzganuRtQw - partials-zucchini-ff-win64-shippable/opt: VA9BN9gDTieLufP3bpDTBA - partials-zucchini-fi-linux-shippable/opt: Jn-rJcOhTGm0D_T1CxKsaA - partials-zucchini-fi-linux64-aarch64-shippable/opt: QlBmj_EwTl6RitHxda04nw - partials-zucchini-fi-linux64-shippable/opt: EdHaFN3RTeeuf7_q6_S9Vw - partials-zucchini-fi-macosx64-shippable/opt: D-CmhnVrTfymU1nsJ7dcmQ - partials-zucchini-fi-win32-shippable/opt: EUT7YVV9TzGXgP_0vxATUg - partials-zucchini-fi-win64-aarch64-shippable/opt: WnoTFA-dSqqpczcTXVSuOQ - partials-zucchini-fi-win64-shippable/opt: HgcsMb1nQ46mDJew0OXdmQ - partials-zucchini-fr-linux-shippable/opt: dUJsduVCQfeu5JEjLyXTDQ - partials-zucchini-fr-linux64-aarch64-shippable/opt: dIzuegWZQmy5G49JvcZOSw - partials-zucchini-fr-linux64-shippable/opt: eVTqy3AcSx6LgJUxSeGsRw - partials-zucchini-fr-macosx64-shippable/opt: MzLWeeaCTwS06Yg4oZQH1A - partials-zucchini-fr-win32-shippable/opt: D6vtyAiYTvSCiVdQsomOnw - partials-zucchini-fr-win64-aarch64-shippable/opt: J5dxAcPnT9aEYJzatXey5g - partials-zucchini-fr-win64-shippable/opt: aApuJQP0QkihF1tL-5vU1g - partials-zucchini-fur-linux-shippable/opt: WDlBht-0RuWjVeAdVEqJfA - partials-zucchini-fur-linux64-aarch64-shippable/opt: CJSgCcMcSLiSN8yYIjTT3Q - partials-zucchini-fur-linux64-shippable/opt: KjLHyBbGQMCWc3uL8YHJuw - partials-zucchini-fur-macosx64-shippable/opt: Xck2iu2dTBS1TReoqybM5A - partials-zucchini-fur-win32-shippable/opt: bcoNuCY1THqZzmL5GY1isg - partials-zucchini-fur-win64-aarch64-shippable/opt: bARZ3lhPQ_-bdbutC3OMjA - partials-zucchini-fur-win64-shippable/opt: TAtsZ-6GQBmLrQnzDzluiA - partials-zucchini-fy-NL-linux-shippable/opt: BDIjOiOnQwKmPIXe23tHig - partials-zucchini-fy-NL-linux64-aarch64-shippable/opt: J5p-6r7ES8610mxfh9phsw - partials-zucchini-fy-NL-linux64-shippable/opt: Tn2vHWVeQDCLFR73ZRz2iA - partials-zucchini-fy-NL-macosx64-shippable/opt: HWhUhrBpRCG3gzhCzPB-Xg - partials-zucchini-fy-NL-win32-shippable/opt: C8a9_G8pR9CS-vxun7lnOQ - partials-zucchini-fy-NL-win64-aarch64-shippable/opt: YLpxiCXASLmjNpCIhbW32A - partials-zucchini-fy-NL-win64-shippable/opt: PokjPGXwRMqK3kXXs6ixlA - partials-zucchini-ga-IE-linux-shippable/opt: CTbr886ZQGqHwNCONjtHLg - partials-zucchini-ga-IE-linux64-aarch64-shippable/opt: QpTtwZ00TyK9ONRpTzWCkg - partials-zucchini-ga-IE-linux64-shippable/opt: KgKJ4k-9QxqthVFkVFhXVw - partials-zucchini-ga-IE-macosx64-shippable/opt: Qk-Vi4GeTgCulnr_cWL5EA - partials-zucchini-ga-IE-win32-shippable/opt: bnQ2JqvQSM2GOjpZwKcx8A - partials-zucchini-ga-IE-win64-aarch64-shippable/opt: Wc6JCExPTuOSZs3MVnUDwg - partials-zucchini-ga-IE-win64-shippable/opt: Z7DIXc05Rk-YxJfPK_MGiw - partials-zucchini-gd-linux-shippable/opt: Ts5eZ1PQTr-FhNUPfb5wsA - partials-zucchini-gd-linux64-aarch64-shippable/opt: fzr82q4ASqaeAvh57tY2IA - partials-zucchini-gd-linux64-shippable/opt: ZmSLZw6iT8ONSIXgaaragw - partials-zucchini-gd-macosx64-shippable/opt: HFYjTl19T7qHmLRcm7V2Jw - partials-zucchini-gd-win32-shippable/opt: S-miwDgLRoStul4sK-XsJA - partials-zucchini-gd-win64-aarch64-shippable/opt: DzgqsAG-TgO-1JF0D3FLRw - partials-zucchini-gd-win64-shippable/opt: dg_3ZujYRRefpFkufe7PzQ - partials-zucchini-gl-linux-shippable/opt: O1a7v7IzQTioH3js4ThPZw - partials-zucchini-gl-linux64-aarch64-shippable/opt: W4NbB7CLSxeYcunrxpcrhg - partials-zucchini-gl-linux64-shippable/opt: RExzxNBNQdije17OV4jOzQ - partials-zucchini-gl-macosx64-shippable/opt: GN47v0q7TRGALHSKHcvjjw - partials-zucchini-gl-win32-shippable/opt: PkwGR_L2Tr6zal6HXEY1zQ - partials-zucchini-gl-win64-aarch64-shippable/opt: HKi-m0cnSfyyC9BUHpeiyw - partials-zucchini-gl-win64-shippable/opt: VCiA7OU1SyOV1gsPC-CRrA - partials-zucchini-gn-linux-shippable/opt: Hpf9d6ZQTmGrNR7g_Ft-Og - partials-zucchini-gn-linux64-aarch64-shippable/opt: NfYEPXUhSRKY8DNsIOGrAQ - partials-zucchini-gn-linux64-shippable/opt: F0b_d7oxSBus6vTA2nGf7w - partials-zucchini-gn-macosx64-shippable/opt: EOkANqZJSbihQZCfc39xlA - partials-zucchini-gn-win32-shippable/opt: YUcWSIFzQV6YEpncFbl6Yg - partials-zucchini-gn-win64-aarch64-shippable/opt: DPEsRYMRRIiab2S5idxsHg - partials-zucchini-gn-win64-shippable/opt: ddR4ixGnTxy2jVYpjhUd0w - partials-zucchini-gu-IN-linux-shippable/opt: QG9qto-tSKiJkkIp6usSug - partials-zucchini-gu-IN-linux64-aarch64-shippable/opt: Gtxd5wZ0TPi8dKXwB8K1Lg - partials-zucchini-gu-IN-linux64-shippable/opt: IHzYNWyzQ0ibGyYx90SN_Q - partials-zucchini-gu-IN-macosx64-shippable/opt: QPdwGlw2S8e3FnM_LI23Dw - partials-zucchini-gu-IN-win32-shippable/opt: e5CpDMNvTm-6Iz9OmWBokg - partials-zucchini-gu-IN-win64-aarch64-shippable/opt: S1-7lBlKSMiczyqURLHdoA - partials-zucchini-gu-IN-win64-shippable/opt: NJh7smf5RAusw86rVEByLQ - partials-zucchini-he-linux-shippable/opt: SkwdVXcDRdeb4UOpnaXpjw - partials-zucchini-he-linux64-aarch64-shippable/opt: XNS33LKIR4WkRReEOVEGwA - partials-zucchini-he-linux64-shippable/opt: UrZMKgfCS7ixFC1MGKD4aA - partials-zucchini-he-macosx64-shippable/opt: cdPTMchQQESLh7CIq1eDKw - partials-zucchini-he-win32-shippable/opt: N3yr5FaHTC2SPYGBG_vTzQ - partials-zucchini-he-win64-aarch64-shippable/opt: JGe5F7PIQhGzRXb_QyqVAg - partials-zucchini-he-win64-shippable/opt: RDkK71v6QjCK6PLdnlapjg - partials-zucchini-hi-IN-linux-shippable/opt: TEcnYl1HTxCgzuIfF_UCOg - partials-zucchini-hi-IN-linux64-aarch64-shippable/opt: eOVSfydCRfuIGxpq7vHRng - partials-zucchini-hi-IN-linux64-shippable/opt: UFYP1kJjRD-XtPcsA2ySIw - partials-zucchini-hi-IN-macosx64-shippable/opt: X5wrQZseRou-RqHXZK9vSQ - partials-zucchini-hi-IN-win32-shippable/opt: edo0REAuTuKmBuvHjQlgJA - partials-zucchini-hi-IN-win64-aarch64-shippable/opt: dDD3bDZcQces1iOip0lbwA - partials-zucchini-hi-IN-win64-shippable/opt: eKOa6Ev0Tvi2bJNjuKwZhg - partials-zucchini-hr-linux-shippable/opt: VKnmtWCSREaFBzzLQMBw5A - partials-zucchini-hr-linux64-aarch64-shippable/opt: W8XjYzfVQ7y2NjM054HfWw - partials-zucchini-hr-linux64-shippable/opt: f6GjuEvhR6mb8aMxOhuNlA - partials-zucchini-hr-macosx64-shippable/opt: Nu-7vRGGSnCT8m8NB14_eg - partials-zucchini-hr-win32-shippable/opt: IERR1IYEROuy5zJqRKUzaA - partials-zucchini-hr-win64-aarch64-shippable/opt: VtHwKvJ2RHu8BQ3njtWwsA - partials-zucchini-hr-win64-shippable/opt: KSKzTsOqRmask_gWpEZgvA - partials-zucchini-hsb-linux-shippable/opt: HHeaajFXTleQFBB8E5F3WA - partials-zucchini-hsb-linux64-aarch64-shippable/opt: ccaDjzPZRlaMW2eMHUPqHA - partials-zucchini-hsb-linux64-shippable/opt: XK-NtGi8Saa8-t44-kfGvA - partials-zucchini-hsb-macosx64-shippable/opt: bxz5smKoR0WOdbg_NBKfKw - partials-zucchini-hsb-win32-shippable/opt: UuUznJoOQXqquJFo7ehOBQ - partials-zucchini-hsb-win64-aarch64-shippable/opt: OAW0JbuYQAqappC75XAHhg - partials-zucchini-hsb-win64-shippable/opt: a7iZh5P4SZG61QF-1txKqQ - partials-zucchini-hu-linux-shippable/opt: X-xaEiHRTG-oisdboeG-Lg - partials-zucchini-hu-linux64-aarch64-shippable/opt: R8GSFZ3fQK2DDKMHGpKwlg - partials-zucchini-hu-linux64-shippable/opt: FNMLJTiBTFiFI5-b51S9SA - partials-zucchini-hu-macosx64-shippable/opt: WuTyI9C7S4u9ZgB6neRoAQ - partials-zucchini-hu-win32-shippable/opt: LWyl6CngRjC5BMf2xAyPbA - partials-zucchini-hu-win64-aarch64-shippable/opt: D4vxxkwNSyWp-6MzpOGiJw - partials-zucchini-hu-win64-shippable/opt: V_2mhGN9Q4y-hV_w6XJWRQ - partials-zucchini-hy-AM-linux-shippable/opt: WihOzAAIRKKdsqMYU3_DrQ - partials-zucchini-hy-AM-linux64-aarch64-shippable/opt: cjU5-ClUQImZg0dNYuMA1Q - partials-zucchini-hy-AM-linux64-shippable/opt: UCXobd9XQ6ytmaZJpmskNQ - partials-zucchini-hy-AM-macosx64-shippable/opt: QK4FRGWITuOinVR3eS7mCg - partials-zucchini-hy-AM-win32-shippable/opt: JOx6W2U6RR6yEqqZ-YUm7g - partials-zucchini-hy-AM-win64-aarch64-shippable/opt: D-QVEczdQKeCkrAENW91EQ - partials-zucchini-hy-AM-win64-shippable/opt: XYzYMy6rR1qtzAHCZJ5Yuw - partials-zucchini-ia-linux-shippable/opt: cAS6C7TBSe-HuZw-8DMRug - partials-zucchini-ia-linux64-aarch64-shippable/opt: cgyNmdPPQa61md2Md8chZw - partials-zucchini-ia-linux64-shippable/opt: OQnZOjWQR8Cpgizy5lhihQ - partials-zucchini-ia-macosx64-shippable/opt: T1jRmhcVQVaNAQ7YQgRwsw - partials-zucchini-ia-win32-shippable/opt: eK2mS6UjQYKvkiIAQAbg5A - partials-zucchini-ia-win64-aarch64-shippable/opt: A13q8NYiQ4GagRkfp6UvSg - partials-zucchini-ia-win64-shippable/opt: Y0E79O0kRNeQx8zcPGZa3g - partials-zucchini-id-linux-shippable/opt: d_XXranURQ6g3Uid5TiRFw - partials-zucchini-id-linux64-aarch64-shippable/opt: NcQIVHWOS1iRSTmDgtlGwA - partials-zucchini-id-linux64-shippable/opt: TzkBoREiToOwao9GSwBW7w - partials-zucchini-id-macosx64-shippable/opt: LoeC1hglTyqI8vdaDj2eIw - partials-zucchini-id-win32-shippable/opt: HyTa7usXQHaa2zH1Z7Cthg - partials-zucchini-id-win64-aarch64-shippable/opt: ZPfTNnrmT9a_z5XPU0sXjA - partials-zucchini-id-win64-shippable/opt: OhnIOeH7Q1WzJv-LgYnTMw - partials-zucchini-is-linux-shippable/opt: PhzYfSBBTNyLcC-iWcdd7A - partials-zucchini-is-linux64-aarch64-shippable/opt: TZ-aBWJlS_6OPDUyBN0ryQ - partials-zucchini-is-linux64-shippable/opt: XYIbiKvaS6mFbyWBj4qlrQ - partials-zucchini-is-macosx64-shippable/opt: XrwjB_NeS_m-QxRUJQVmww - partials-zucchini-is-win32-shippable/opt: JvaGJRv4Q7mZ1N1fMhHiqw - partials-zucchini-is-win64-aarch64-shippable/opt: dk7cywVPTfui91_1cEB5Pw - partials-zucchini-is-win64-shippable/opt: ae0UQTTEQo6YhRxtL1ZD0g - partials-zucchini-it-linux-shippable/opt: cBI4IlCFQ7KoLM78bT4KVA - partials-zucchini-it-linux64-aarch64-shippable/opt: KvGFlED7QC-AxuonM_fckg - partials-zucchini-it-linux64-shippable/opt: eiBDNd5eTXa5_jMmKB2UGg - partials-zucchini-it-macosx64-shippable/opt: aCsp6jb4S6GmZ4MeTWU81Q - partials-zucchini-it-win32-shippable/opt: AdVhsJPzRW6inaUzJuqJbQ - partials-zucchini-it-win64-aarch64-shippable/opt: IKM9ePl-Q2GQiMHHMYHCdQ - partials-zucchini-it-win64-shippable/opt: I1MubNdJQ4q1-q5AI3lJjQ - partials-zucchini-ja-JP-mac-macosx64-shippable/opt: I90R_RFAS8mM7DqGBFZMNg - partials-zucchini-ja-linux-shippable/opt: NkG2iWfISaWe3RpFHKgCgw - partials-zucchini-ja-linux64-aarch64-shippable/opt: bJh_T3twSnu-naROc-0wSw - partials-zucchini-ja-linux64-shippable/opt: L5y-i1CGQLa3bxk65uowGw - partials-zucchini-ja-win32-shippable/opt: aaf-Msb4QnWj1uB-ZzjdEA - partials-zucchini-ja-win64-aarch64-shippable/opt: K9apyzAxSfuPCNMNWM0yGA - partials-zucchini-ja-win64-shippable/opt: DC8NtKFVT9yLfXtSkMAwmw - partials-zucchini-ka-linux-shippable/opt: NxsXdeA0SKizOTvrC1tGWA - partials-zucchini-ka-linux64-aarch64-shippable/opt: TwW4L1QRSPCN_w2dQVMQkg - partials-zucchini-ka-linux64-shippable/opt: SW54NfvTQbmrobYn3bma_Q - partials-zucchini-ka-macosx64-shippable/opt: cUKOApgWTqKRV5rfco-i6g - partials-zucchini-ka-win32-shippable/opt: GYiHhAzqT8Cbr5tslGJEgQ - partials-zucchini-ka-win64-aarch64-shippable/opt: Oohr344fTeqDHJQEawFGIA - partials-zucchini-ka-win64-shippable/opt: LpgyHWSgR5KglILopnOwMg - partials-zucchini-kab-linux-shippable/opt: Qty1g1W8TG-ADj7Vul5-LA - partials-zucchini-kab-linux64-aarch64-shippable/opt: HY2Pfr1NRM6G_negcImS6w - partials-zucchini-kab-linux64-shippable/opt: VbbxP75VRKCZ-bfoWUSJWg - partials-zucchini-kab-macosx64-shippable/opt: WT9Cc_xDTEGjXNqyzG2Oxg - partials-zucchini-kab-win32-shippable/opt: asJCSd4EQ_e_-xjZly3gmg - partials-zucchini-kab-win64-aarch64-shippable/opt: RySfK1SLQ8ajSs7wQPAVCw - partials-zucchini-kab-win64-shippable/opt: ROne7ZysSuKNqPZDT3Z42w - partials-zucchini-kk-linux-shippable/opt: CBzRyf-0Ru-8OaBS8cJaKA - partials-zucchini-kk-linux64-aarch64-shippable/opt: Sk3tbpbNQz-f5stGM-1_Rg - partials-zucchini-kk-linux64-shippable/opt: f54qZ1EJSWWURHky01U0hw - partials-zucchini-kk-macosx64-shippable/opt: b0mBnfhjQGCTD53JvYB_gQ - partials-zucchini-kk-win32-shippable/opt: eG7AW-I8T2yNspSmjcbd0A - partials-zucchini-kk-win64-aarch64-shippable/opt: c4niGc4tQDqFYqHgf4nfPg - partials-zucchini-kk-win64-shippable/opt: HDiMYV8ySSiR53dYf1BUSw - partials-zucchini-km-linux-shippable/opt: fc3OfAX1QDy4jNVSyyGrZg - partials-zucchini-km-linux64-aarch64-shippable/opt: PQh9VqXeTDusVS2mTMilRA - partials-zucchini-km-linux64-shippable/opt: OGTKeyckRa6ZslH8-YXkwQ - partials-zucchini-km-macosx64-shippable/opt: A6ONJGPvR5OsZ3nwWceEoQ - partials-zucchini-km-win32-shippable/opt: OxKgvgZvSJCkZrld2JrfJA - partials-zucchini-km-win64-aarch64-shippable/opt: U68qp-aFRiykg7KlmZREAA - partials-zucchini-km-win64-shippable/opt: VgmHnDcJSzGEZGfgi67Z2A - partials-zucchini-kn-linux-shippable/opt: BrwCWOaHTginhYgNF1SkYw - partials-zucchini-kn-linux64-aarch64-shippable/opt: Pp0Bwms6T9KfPaXEXmIqZA - partials-zucchini-kn-linux64-shippable/opt: D824g1hmT0OM47PD1y9toQ - partials-zucchini-kn-macosx64-shippable/opt: EW-wME-6TC-h1Iezopcd4g - partials-zucchini-kn-win32-shippable/opt: Aw_n34NVSpemVCBEATOn7w - partials-zucchini-kn-win64-aarch64-shippable/opt: WgAVUptJQ-ii3WN1EMaPZQ - partials-zucchini-kn-win64-shippable/opt: OVWG3WIKS_S0sjtpVxY9KQ - partials-zucchini-ko-linux-shippable/opt: ONem83X0RheYFRDPR55C0Q - partials-zucchini-ko-linux64-aarch64-shippable/opt: c6HyOJkiSAquzCUqpgojJQ - partials-zucchini-ko-linux64-shippable/opt: Yc-ADP40SFOL8TAeYSuzbw - partials-zucchini-ko-macosx64-shippable/opt: ffNJKB0iTsy7WcZNrH_U2w - partials-zucchini-ko-win32-shippable/opt: VJYo9Rw6TaCdyOJhJNup7g - partials-zucchini-ko-win64-aarch64-shippable/opt: VmXh7WRlQEG90EDPg72STA - partials-zucchini-ko-win64-shippable/opt: c4jfHVmwQAyYv1KJ5mva8g - partials-zucchini-lij-linux-shippable/opt: Sx32uoVnTJahKFUQC7_jqw - partials-zucchini-lij-linux64-aarch64-shippable/opt: aPHVddVJT2W1caL7n0-1Ag - partials-zucchini-lij-linux64-shippable/opt: L1HQDkmTReWR1lWrRGsusA - partials-zucchini-lij-macosx64-shippable/opt: VHwJsy_3Q_C1DsRWQBg2ww - partials-zucchini-lij-win32-shippable/opt: GKzvmBPOQQSuRBw8xJMfYA - partials-zucchini-lij-win64-aarch64-shippable/opt: Y2CJhn_xTimDFEK2lMsE5g - partials-zucchini-lij-win64-shippable/opt: Om_kaHnsTeaQ_Vfed3lTdw - partials-zucchini-linux-shippable/opt: BbfVLiE1Tb6d8eX_C2QUeQ - partials-zucchini-linux64-aarch64-shippable/opt: bYmJEZLsQP6X_bDtqKqubA - partials-zucchini-linux64-shippable/opt: KzUAtD7FQn-VqxjWcc6WEA - partials-zucchini-lt-linux-shippable/opt: bvV4YYn3RhG6awXwCCr46g - partials-zucchini-lt-linux64-aarch64-shippable/opt: Tx8kXUmDS9aOufl7YyeKJg - partials-zucchini-lt-linux64-shippable/opt: I5lSOoHCR_CA2JHYflVNhA - partials-zucchini-lt-macosx64-shippable/opt: aUyASOqzT2aJ5Xd4KBFD3g - partials-zucchini-lt-win32-shippable/opt: cyb1jCjDQS2K-TPCGW1YLw - partials-zucchini-lt-win64-aarch64-shippable/opt: Spb1WRptTXeHxWhqfUYl4g - partials-zucchini-lt-win64-shippable/opt: KbDf2dSfSzy1oG1qKDuXzw - partials-zucchini-lv-linux-shippable/opt: QeFjitZyTxq9ehZ_vwmfRg - partials-zucchini-lv-linux64-aarch64-shippable/opt: b8jxwzYKQFSiMX1rBcTqwg - partials-zucchini-lv-linux64-shippable/opt: Cy70zCLRRzS64CjIoTausQ - partials-zucchini-lv-macosx64-shippable/opt: JB6hV79EQX-u4FpbLIBZKg - partials-zucchini-lv-win32-shippable/opt: U9zi7egjRUKt6yC0aBYFaQ - partials-zucchini-lv-win64-aarch64-shippable/opt: bUSr1bs5QCGXPT-hVQLTGw - partials-zucchini-lv-win64-shippable/opt: EOMpWUS7QzmVx-g3ikdi4w - partials-zucchini-macosx64-shippable/opt: al_9fq-eRDyDgn3usEasPQ - partials-zucchini-mk-linux-shippable/opt: b-wVvHg9S_aCAvuWiMlPKA - partials-zucchini-mk-linux64-aarch64-shippable/opt: Dokv2CCkThCMX5Wg7m0y4A - partials-zucchini-mk-linux64-shippable/opt: FkOvT9p-Tx2g_VMfU13YWQ - partials-zucchini-mk-macosx64-shippable/opt: H5L8t9TrR7u3r1xLfZ0OSg - partials-zucchini-mk-win32-shippable/opt: TB0OFeD2Toequo6uyX0oVw - partials-zucchini-mk-win64-aarch64-shippable/opt: AGxZlZ3SStuWlmSCNb1yLw - partials-zucchini-mk-win64-shippable/opt: XRKgBY60TOOlG_0_Hf4AnA - partials-zucchini-mr-linux-shippable/opt: E3ljAg4sQ32zy9pIKDCXvQ - partials-zucchini-mr-linux64-aarch64-shippable/opt: UUJCKv4TTBWoCfRdxy2-Ag - partials-zucchini-mr-linux64-shippable/opt: KRI2MRnYTcOVJZ2j-uzJUw - partials-zucchini-mr-macosx64-shippable/opt: BOJyxUJwTwKjoNRo7-GBvA - partials-zucchini-mr-win32-shippable/opt: du8YJT5rQFqAyutKoNvVvA - partials-zucchini-mr-win64-aarch64-shippable/opt: aS3SpLIJTjKD6pVSb6-5sg - partials-zucchini-mr-win64-shippable/opt: KyGze1AeSeilpo61jz0nNw - partials-zucchini-ms-linux-shippable/opt: OQ__aqP0Q9WUNUE1hI8mow - partials-zucchini-ms-linux64-aarch64-shippable/opt: FGClAhrQQ6--NyYR_fAaXw - partials-zucchini-ms-linux64-shippable/opt: S3i5uHPbROSsiK_nMHEOIw - partials-zucchini-ms-macosx64-shippable/opt: D8FvKzsbQ56JQInCWkJebA - partials-zucchini-ms-win32-shippable/opt: W6EDqkGnSOaXSrzNDQG2fA - partials-zucchini-ms-win64-aarch64-shippable/opt: So7PxGicRSm2HOBHGiJD3A - partials-zucchini-ms-win64-shippable/opt: UvrTc3xFQUu71jKWRf3n2A - partials-zucchini-my-linux-shippable/opt: MfWCNKdbQ5-k6iH55YlJBA - partials-zucchini-my-linux64-aarch64-shippable/opt: QZIULbniSwaGToW94VMauQ - partials-zucchini-my-linux64-shippable/opt: GTkh8vvxSWOJWpuI7wpibA - partials-zucchini-my-macosx64-shippable/opt: Ng7FXEuKRjeJUFZFoSRX9Q - partials-zucchini-my-win32-shippable/opt: WaETNNiyRZKjQXJrvyodxw - partials-zucchini-my-win64-aarch64-shippable/opt: WjgsHumlTmOtTKJJPGVhhw - partials-zucchini-my-win64-shippable/opt: Mpt6qxGDTouHKABLeBmsPg - partials-zucchini-nb-NO-linux-shippable/opt: PDwpWySwQ6G6Kj7zN7Xtig - partials-zucchini-nb-NO-linux64-aarch64-shippable/opt: EJ4gg16eRUqSt-CLcEkgZw - partials-zucchini-nb-NO-linux64-shippable/opt: V_9Un3RXSouNqShgDjtOHg - partials-zucchini-nb-NO-macosx64-shippable/opt: G4kpyBR5TX-3HoncGp9HSg - partials-zucchini-nb-NO-win32-shippable/opt: UrFBuCMsS_6jQuP9XSAyxA - partials-zucchini-nb-NO-win64-aarch64-shippable/opt: G7kAIhhHSReehxAAtXpk0w - partials-zucchini-nb-NO-win64-shippable/opt: VBmrZrtdSrO3wK0HMU81hg - partials-zucchini-ne-NP-linux-shippable/opt: bC-G5XiISQ-JIcwpFjfPyg - partials-zucchini-ne-NP-linux64-aarch64-shippable/opt: bXbg0P2ETtyQCgNtfNmKRw - partials-zucchini-ne-NP-linux64-shippable/opt: IJRUkVaTRD2eLeNDP7Cuxw - partials-zucchini-ne-NP-macosx64-shippable/opt: Peh4JhWUSU2g6Ddxkq_U9g - partials-zucchini-ne-NP-win32-shippable/opt: SEBA1VkITneUmgCX8V-ZHA - partials-zucchini-ne-NP-win64-aarch64-shippable/opt: a8GHwQHeQEG4J2mPSSSWRg - partials-zucchini-ne-NP-win64-shippable/opt: U9MHR6UTQeG0H-LcGiRcnw - partials-zucchini-nl-linux-shippable/opt: BHyM_M41RyqW78tLIXXLDg - partials-zucchini-nl-linux64-aarch64-shippable/opt: WqOZCAnRSbOWgcMW_Pg71g - partials-zucchini-nl-linux64-shippable/opt: Ehpm9HubQJeyTO0kxn2XDA - partials-zucchini-nl-macosx64-shippable/opt: LpgQo_ZiR-iuHDDlQtwO3Q - partials-zucchini-nl-win32-shippable/opt: Rqd9_8ZSQM208hadyl4tBA - partials-zucchini-nl-win64-aarch64-shippable/opt: RaZA0cZFQ8uXpIwuYnCh6Q - partials-zucchini-nl-win64-shippable/opt: Yn3hnX1NRmSLwA8Vku3UEg - partials-zucchini-nn-NO-linux-shippable/opt: NqMAOauARlOtNn3Zz9jvBA - partials-zucchini-nn-NO-linux64-aarch64-shippable/opt: MXAJUtNuSA-ahGaISlKpOg - partials-zucchini-nn-NO-linux64-shippable/opt: W573Zup8TIm3c9JBAfP9lw - partials-zucchini-nn-NO-macosx64-shippable/opt: BeAv70IHR0iWR4AditPEPw - partials-zucchini-nn-NO-win32-shippable/opt: Cd1Pl4CCTH-t0SyHnbO1Ww - partials-zucchini-nn-NO-win64-aarch64-shippable/opt: f0Zy73h3RUG3BN1z2SKn4Q - partials-zucchini-nn-NO-win64-shippable/opt: Rj4cWKUaSseLKQhYfXTOmw - partials-zucchini-oc-linux-shippable/opt: OY6XT7n1Q6KpQ_vPJbOChQ - partials-zucchini-oc-linux64-aarch64-shippable/opt: O135GN66Qxu4Mlz5CkaVfw - partials-zucchini-oc-linux64-shippable/opt: CCgtgYDfQp69aMhjBoGSQw - partials-zucchini-oc-macosx64-shippable/opt: U_ZLX11QT_at9UDsWrwEnQ - partials-zucchini-oc-win32-shippable/opt: GyeeMCSNSnKPKjeEmCM1Kw - partials-zucchini-oc-win64-aarch64-shippable/opt: DyRfALjPSwShKeDgIoDPTg - partials-zucchini-oc-win64-shippable/opt: dc_umLKiS2Oaj-OnJH2mng - partials-zucchini-pa-IN-linux-shippable/opt: YWgEincYQqaQbqQ3h0DxEA - partials-zucchini-pa-IN-linux64-aarch64-shippable/opt: HpbFT34lSgOyf7FIqv-dBw - partials-zucchini-pa-IN-linux64-shippable/opt: CeGt9F6bSm2xQBdziwVlyA - partials-zucchini-pa-IN-macosx64-shippable/opt: PTffFSw3SJCSVng9rEgclg - partials-zucchini-pa-IN-win32-shippable/opt: BGzcFHTqS1yPnhbOZ4O6SA - partials-zucchini-pa-IN-win64-aarch64-shippable/opt: PEccwdbKQwKSj_JqzxQykw - partials-zucchini-pa-IN-win64-shippable/opt: d8DXFgKWS7KBYywOyOnjGA - partials-zucchini-pl-linux-shippable/opt: WCc_lCcxRIqptn38pSvTjg - partials-zucchini-pl-linux64-aarch64-shippable/opt: LMCcWeofRCGYYzCb7lplvQ - partials-zucchini-pl-linux64-shippable/opt: XKmNUu8LSmy3iiTFGWFcvQ - partials-zucchini-pl-macosx64-shippable/opt: GQPaNLUdTZu8nSwz9r7Wmw - partials-zucchini-pl-win32-shippable/opt: ObKPUCMKRGywOqwm15zUMA - partials-zucchini-pl-win64-aarch64-shippable/opt: CzZVVZa0QTCWkWjXCPueiQ - partials-zucchini-pl-win64-shippable/opt: L-ZQlRAbSeakQ0IfyD-BAA - partials-zucchini-pt-BR-linux-shippable/opt: TajUI1l5THKoxhsagyE8jQ - partials-zucchini-pt-BR-linux64-aarch64-shippable/opt: Q09_Xd0_T0OtxoLZnf3Tfg - partials-zucchini-pt-BR-linux64-shippable/opt: ffgiaagmRtKzi8Wxqz1xzw - partials-zucchini-pt-BR-macosx64-shippable/opt: Frv0tMDaTRayovkFruiH3A - partials-zucchini-pt-BR-win32-shippable/opt: eyOpWyynSoKB2Zbs6Itthg - partials-zucchini-pt-BR-win64-aarch64-shippable/opt: Xyu-3302So6R9APJS9punw - partials-zucchini-pt-BR-win64-shippable/opt: BATrC4H1Qam-mPiOYFH2Gg - partials-zucchini-pt-PT-linux-shippable/opt: ZOi82_wXRRG11rKCpkr5nw - partials-zucchini-pt-PT-linux64-aarch64-shippable/opt: AQ_q5uyfTuuwRauje46hlA - partials-zucchini-pt-PT-linux64-shippable/opt: UPI6B3bvTYq57ZpM7VML1Q - partials-zucchini-pt-PT-macosx64-shippable/opt: Lwkq_JlWQRe0FpOl5xvUfg - partials-zucchini-pt-PT-win32-shippable/opt: VNzRqgb0SIau06jE3Q4sOA - partials-zucchini-pt-PT-win64-aarch64-shippable/opt: C829QqyRQo-xqMvf-IQiLg - partials-zucchini-pt-PT-win64-shippable/opt: N272RTbiSp6jZVmXBxVBaA - partials-zucchini-rm-linux-shippable/opt: fV1peTf4RViUJvQ0eEm4Dg - partials-zucchini-rm-linux64-aarch64-shippable/opt: eaEEgcz6Rhusuugsf0V-jg - partials-zucchini-rm-linux64-shippable/opt: HMexM3G7RLuVcOt70RfC8w - partials-zucchini-rm-macosx64-shippable/opt: P5-5NhXjQfCHxK4Es5NRcQ - partials-zucchini-rm-win32-shippable/opt: NZ6srDjaSbeNwb3kKeacoQ - partials-zucchini-rm-win64-aarch64-shippable/opt: L21-cLdFT9CuPRwPAwvbJA - partials-zucchini-rm-win64-shippable/opt: Ko2asA2CS16Boy4o-euzXA - partials-zucchini-ro-linux-shippable/opt: NuWoqlgEQW-qg_FUyujRqA - partials-zucchini-ro-linux64-aarch64-shippable/opt: UDGxKDtUR6yOBKhimjMqHw - partials-zucchini-ro-linux64-shippable/opt: ITwyvw1GTRaNWQZllQrhEw - partials-zucchini-ro-macosx64-shippable/opt: QN83Hu9FQu2uNOTcRIRepw - partials-zucchini-ro-win32-shippable/opt: e8jkXSiaS3eSZwvRmzuKzA - partials-zucchini-ro-win64-aarch64-shippable/opt: GH8o-ignQxiTVXzvIxBhsw - partials-zucchini-ro-win64-shippable/opt: YFGM3971RFm9z4rKNGwYmA - partials-zucchini-ru-linux-shippable/opt: MyvkHyc1RXqcPU42SAACWQ - partials-zucchini-ru-linux64-aarch64-shippable/opt: Q6i4l2EFS-6k480S9ETveQ - partials-zucchini-ru-linux64-shippable/opt: dzCGudNvSC6jPez98yDuSw - partials-zucchini-ru-macosx64-shippable/opt: cCebGEBvQkap1ktqP5-4ig - partials-zucchini-ru-win32-shippable/opt: U6zmUGqPT7iu_Y4A_iLRMA - partials-zucchini-ru-win64-aarch64-shippable/opt: O6L4TxLhTN2Bs60_6x64PA - partials-zucchini-ru-win64-shippable/opt: OzN15RnPQK6xmausrrbTpA - partials-zucchini-sat-linux-shippable/opt: Vdi35dxXRHi8meMPvKS5Yg - partials-zucchini-sat-linux64-aarch64-shippable/opt: XBIPKHXSTMyGjwp7NqDkaA - partials-zucchini-sat-linux64-shippable/opt: FkF_rBGLRQmw-q-Zczi8hg - partials-zucchini-sat-macosx64-shippable/opt: Q5JRHbeNQKS36na9HRIBIw - partials-zucchini-sat-win32-shippable/opt: ZhXUxdklRXqSb4S2B-_RQQ - partials-zucchini-sat-win64-aarch64-shippable/opt: B3rykGJzRuyVGXWdhG9iqw - partials-zucchini-sat-win64-shippable/opt: fTjXg5C9QcGcUlrXNjQh9A - partials-zucchini-sc-linux-shippable/opt: FfhhW9CcRtCd8Bxcsqal4Q - partials-zucchini-sc-linux64-aarch64-shippable/opt: cvyloZORR5aY-qLXL_rRWQ - partials-zucchini-sc-linux64-shippable/opt: byWmJ8m8Txm281jxGZAOVw - partials-zucchini-sc-macosx64-shippable/opt: dDYhHGAIRr6qNA8R5E3i3A - partials-zucchini-sc-win32-shippable/opt: czbP3KqyQHetYEzX-J5BBQ - partials-zucchini-sc-win64-aarch64-shippable/opt: JKkZuOF8TSS259TtuQe1vw - partials-zucchini-sc-win64-shippable/opt: JzhNYlWSQ4qoTWBI2bJQWg - partials-zucchini-sco-linux-shippable/opt: UGoJfR0qRvGhrA8q1MpgYA - partials-zucchini-sco-linux64-aarch64-shippable/opt: EKSDMgveQFGdOxErG0i7Xg - partials-zucchini-sco-linux64-shippable/opt: Hqu_xkUKSXa_n_LApJxGjw - partials-zucchini-sco-macosx64-shippable/opt: C_CM_WWoRPG6kTYRlZKNOg - partials-zucchini-sco-win32-shippable/opt: RxUNldYoSSGxvO2UnLytGA - partials-zucchini-sco-win64-aarch64-shippable/opt: cusiC2YrTyaaW9mC8nII1g - partials-zucchini-sco-win64-shippable/opt: IiqP-F3oRNaIx6X6Xtwumw - partials-zucchini-si-linux-shippable/opt: HcXG1eHgRJC1M0bjfItTUg - partials-zucchini-si-linux64-aarch64-shippable/opt: X51FdQgATDCu54MGSqeuuw - partials-zucchini-si-linux64-shippable/opt: JXH3Dq6hT7K5mmwqWxBYBQ - partials-zucchini-si-macosx64-shippable/opt: drVG5RKCRJywZB1fj83OVA - partials-zucchini-si-win32-shippable/opt: eiT_G-OwSIK8dSl9V6hQLg - partials-zucchini-si-win64-aarch64-shippable/opt: MD2nyeqNQACPx35h5oCBgw - partials-zucchini-si-win64-shippable/opt: YulK4si6SpqPgCXNyAqURw - partials-zucchini-sk-linux-shippable/opt: AedGE3Q2QQSbyiax0X1tug - partials-zucchini-sk-linux64-aarch64-shippable/opt: eN9IDh38RIqo-9D6jOfcoQ - partials-zucchini-sk-linux64-shippable/opt: WWFEarYcR6Wz_ODQlGQp1w - partials-zucchini-sk-macosx64-shippable/opt: KGYaXcxvTduIXfsQ4v2E7g - partials-zucchini-sk-win32-shippable/opt: UUidcQQgRXymEu8GvpCkbQ - partials-zucchini-sk-win64-aarch64-shippable/opt: B5OGaaqNQE2SF9kkzvm4tQ - partials-zucchini-sk-win64-shippable/opt: IOuqza8QTc-9N-N_66qnCA - partials-zucchini-skr-linux-shippable/opt: CMse6ELWQo2d5FSrvHkqkw - partials-zucchini-skr-linux64-aarch64-shippable/opt: c-uNqnAJRqiNxqXxVlvsrw - partials-zucchini-skr-linux64-shippable/opt: GQclyJhORGKJgvm3h7d5DQ - partials-zucchini-skr-macosx64-shippable/opt: TFcGPoRoTP2Z3EZzp6W2nA - partials-zucchini-skr-win32-shippable/opt: GFb31ltNQZ6s720cnP0j9w - partials-zucchini-skr-win64-aarch64-shippable/opt: GhAOjdNKR1WUWuKXA7Ag1Q - partials-zucchini-skr-win64-shippable/opt: SgyXS3scTGWvOOGeqs0Mlg - partials-zucchini-sl-linux-shippable/opt: UClKkeUmQ6Gp4Q2nuRKlyg - partials-zucchini-sl-linux64-aarch64-shippable/opt: e6y5x_EUTiq2TZaVtadfkg - partials-zucchini-sl-linux64-shippable/opt: ehPPhI-XSCGe-rUb3HP2qA - partials-zucchini-sl-macosx64-shippable/opt: CCuYsoVISReMpCFtpPSGHA - partials-zucchini-sl-win32-shippable/opt: W7Ml5wNATkqQWcpDRhUW1A - partials-zucchini-sl-win64-aarch64-shippable/opt: DshKMYpdQ3yiJZZnXUIVew - partials-zucchini-sl-win64-shippable/opt: VQbNyoSWQGWgHVoHBORwjg - partials-zucchini-son-linux-shippable/opt: ZEv5sK_ERtiP1F_beuhvng - partials-zucchini-son-linux64-aarch64-shippable/opt: SaL2VUSkSC2OklgjpG_oYw - partials-zucchini-son-linux64-shippable/opt: AcoMFiJDRk61yaVohtKJhA - partials-zucchini-son-macosx64-shippable/opt: f2JPa_aCRauezPoacDKiFw - partials-zucchini-son-win32-shippable/opt: PXqyLAbNToaiVBwtlWCg-w - partials-zucchini-son-win64-aarch64-shippable/opt: YpreaA6mT2WKSSbSwpzPrA - partials-zucchini-son-win64-shippable/opt: furcddWLQkey1U0RHlpG4w - partials-zucchini-sq-linux-shippable/opt: a3Z-aXWCSs2TTeWGx0__jg - partials-zucchini-sq-linux64-aarch64-shippable/opt: GIHUesRlT5-YXLGQOMzMmg - partials-zucchini-sq-linux64-shippable/opt: UD1yMnVCSf2r1FwTNb6KFg - partials-zucchini-sq-macosx64-shippable/opt: ZvfTAeskSYStnwyp3LFIpQ - partials-zucchini-sq-win32-shippable/opt: KYmeTmM9TLS6c4qyCTLwLg - partials-zucchini-sq-win64-aarch64-shippable/opt: TelpN2x0TuWtEsFmHrF24Q - partials-zucchini-sq-win64-shippable/opt: Mrdyi_ZSQHiV9ibxAMAV6Q - partials-zucchini-sr-linux-shippable/opt: CuyN1WBzR5uFydDDPZd5ng - partials-zucchini-sr-linux64-aarch64-shippable/opt: bVirNja2QzWzO9W0wJ_ZMg - partials-zucchini-sr-linux64-shippable/opt: VrKVQ5fIShKbiiDwL0qLHQ - partials-zucchini-sr-macosx64-shippable/opt: CpKTZ8LkTbiO0RSQV9nLpw - partials-zucchini-sr-win32-shippable/opt: WEfdz1TySuK3clQquQpNcg - partials-zucchini-sr-win64-aarch64-shippable/opt: D3LQgSfRRLWWOgvZ15zGsA - partials-zucchini-sr-win64-shippable/opt: O5J_MXBcQpGDX4LeQaX9dA - partials-zucchini-sv-SE-linux-shippable/opt: N301Gf05S8CEPRIYsurnag - partials-zucchini-sv-SE-linux64-aarch64-shippable/opt: flp6Vc6vR9u92T4hMYGybQ - partials-zucchini-sv-SE-linux64-shippable/opt: f_OVeZqZSc2lDS3-ZckYlw - partials-zucchini-sv-SE-macosx64-shippable/opt: a-I88AOnSpW44djyeSZEJg - partials-zucchini-sv-SE-win32-shippable/opt: ZdlVuFZ6Qo-Hy0TYFMLwDQ - partials-zucchini-sv-SE-win64-aarch64-shippable/opt: KhmCb1xzS3CfGTKgG1zc6A - partials-zucchini-sv-SE-win64-shippable/opt: PLAarnmGQJiG8qY-8orb_A - partials-zucchini-szl-linux-shippable/opt: FU0fjf5FTnemlSshAIcZpg - partials-zucchini-szl-linux64-aarch64-shippable/opt: Bc3Rb_YFSna5iK_pJvXh7w - partials-zucchini-szl-linux64-shippable/opt: cti5ZX-TRy-kQZoUeWu1CA - partials-zucchini-szl-macosx64-shippable/opt: TPoumzabSgeEQVeBwXPawQ - partials-zucchini-szl-win32-shippable/opt: MmUw5HugRCaZ08DWTYtaJg - partials-zucchini-szl-win64-aarch64-shippable/opt: eorgwk7tQgq2mSud67Ankg - partials-zucchini-szl-win64-shippable/opt: M5J3RAdxSfms5fl7PPEang - partials-zucchini-ta-linux-shippable/opt: FtS6vgrHR5ebD6rbmsHMlg - partials-zucchini-ta-linux64-aarch64-shippable/opt: Hiv5P6maTH-DUSvmAAsstA - partials-zucchini-ta-linux64-shippable/opt: FxMLTQlkQYGrHNt6MsD5jw - partials-zucchini-ta-macosx64-shippable/opt: AIRcwVQ9SmySd_u9MXCDvw - partials-zucchini-ta-win32-shippable/opt: QzACMCzETkeYOueumIRWKQ - partials-zucchini-ta-win64-aarch64-shippable/opt: O3EUXCGHSAiYZLzCC6yENQ - partials-zucchini-ta-win64-shippable/opt: bdtz5NtiSVS4xHPKfVI4cg - partials-zucchini-te-linux-shippable/opt: Ap_71AGwRzuZpbN805rYtA - partials-zucchini-te-linux64-aarch64-shippable/opt: YkoPIE47S8-o--xdivd2Tg - partials-zucchini-te-linux64-shippable/opt: aIzoyyCqQgiwX3iqCktEsg - partials-zucchini-te-macosx64-shippable/opt: ES3ejxPpRiWeLqyttpRGVA - partials-zucchini-te-win32-shippable/opt: WuJjIHadS06F5zyQjvCGDw - partials-zucchini-te-win64-aarch64-shippable/opt: OhT64EWKSkKNw2K2VBG6fw - partials-zucchini-te-win64-shippable/opt: AGN4cA10SP-oTne56hqoWg - partials-zucchini-tg-linux-shippable/opt: BRkId7fLQmmuLMto_FYULQ - partials-zucchini-tg-linux64-aarch64-shippable/opt: D6HrUrKaTHeFON9hmOxdbQ - partials-zucchini-tg-linux64-shippable/opt: Ky0FC0UGT8-MwGA0IuWatw - partials-zucchini-tg-macosx64-shippable/opt: FACZsRk-Ty6FJG92P7SoeA - partials-zucchini-tg-win32-shippable/opt: D_dJgVOWTNS2Q40jZdxnDw - partials-zucchini-tg-win64-aarch64-shippable/opt: AcCUOLx4QiW5Cery6rT6UA - partials-zucchini-tg-win64-shippable/opt: R8c0AJnHSVCjV4eQXvzHFw - partials-zucchini-th-linux-shippable/opt: VfBF5KTmTrOKGQKMU9ELyw - partials-zucchini-th-linux64-aarch64-shippable/opt: DnZAAt0XQCWBoYm787fRfA - partials-zucchini-th-linux64-shippable/opt: RkHILUqnRo6XhbmrsjNGTA - partials-zucchini-th-macosx64-shippable/opt: faCwK1HIQQ68rNNMUMj3DQ - partials-zucchini-th-win32-shippable/opt: RYKGFQ0wTR2YdESR8oKWZw - partials-zucchini-th-win64-aarch64-shippable/opt: QWl9rIPASwOOY6vqe3vCIA - partials-zucchini-th-win64-shippable/opt: D9keUQd0Tv6vAX7a4p3bcw - partials-zucchini-tl-linux-shippable/opt: OH1mWGtlQy-AYrm8L4YDLQ - partials-zucchini-tl-linux64-aarch64-shippable/opt: Y7fsZ0JrTO-6PyAKT_GnpA - partials-zucchini-tl-linux64-shippable/opt: Tcs4UgL_QTqGz9cw_b-SFQ - partials-zucchini-tl-macosx64-shippable/opt: OETf6mRkSGqnUibY6LY4Ig - partials-zucchini-tl-win32-shippable/opt: NngJyLxSS-WXiIdNLE4-ZQ - partials-zucchini-tl-win64-aarch64-shippable/opt: Olbm__R9QdyuCsl69B8VEA - partials-zucchini-tl-win64-shippable/opt: D5l4fF2OT8aaMH-UOCduIA - partials-zucchini-tr-linux-shippable/opt: Q_f7Yh1fQHqZXbI0U0Nx1Q - partials-zucchini-tr-linux64-aarch64-shippable/opt: XE9Tbn81QASzkL5vj5iCcQ - partials-zucchini-tr-linux64-shippable/opt: GyUVjkB5T_mQeAYjtM49xg - partials-zucchini-tr-macosx64-shippable/opt: XFxf_fR_Tg2IaRVF8JLbJg - partials-zucchini-tr-win32-shippable/opt: LKO00gTGSKOumSOM9-KNDQ - partials-zucchini-tr-win64-aarch64-shippable/opt: NTMWgw25S5GbTDNpn7sNmg - partials-zucchini-tr-win64-shippable/opt: ZFRGsCeuT4yi7Pjz0eFxFw - partials-zucchini-trs-linux-shippable/opt: LokdQCRVSBek8ZQDjla--g - partials-zucchini-trs-linux64-aarch64-shippable/opt: dQA5jJYhSHmG163Jvqa-UA - partials-zucchini-trs-linux64-shippable/opt: XLYXn3v0ScmcWDsUdQi87g - partials-zucchini-trs-macosx64-shippable/opt: BIXjP9TBQpuIvfax0TvNuQ - partials-zucchini-trs-win32-shippable/opt: drWSDATnSBSjG9jpreJ--A - partials-zucchini-trs-win64-aarch64-shippable/opt: Wakc_KxQTzOx7V1bOmJlig - partials-zucchini-trs-win64-shippable/opt: SVDPVlAGS5OaD9LhYnHVtg - partials-zucchini-uk-linux-shippable/opt: FmPbfLVNQ0-iuuBsjwWvFw - partials-zucchini-uk-linux64-aarch64-shippable/opt: ULRH9WTkTW-Ssq0xoRRzAw - partials-zucchini-uk-linux64-shippable/opt: WTweD13yRymErBlbkPVprg - partials-zucchini-uk-macosx64-shippable/opt: J_wwDPotSduF5Qv00_-1QQ - partials-zucchini-uk-win32-shippable/opt: TVTStCnMRty-Q0cvtaOiUw - partials-zucchini-uk-win64-aarch64-shippable/opt: Y0KaglD3QpmWDIeLbWCPKA - partials-zucchini-uk-win64-shippable/opt: FrE_eXwyS8i6yfaoZUUrBA - partials-zucchini-ur-linux-shippable/opt: WTTXGCh4SEquUk2yW_qrHw - partials-zucchini-ur-linux64-aarch64-shippable/opt: Z_p7Ht80Qc6UE80hHlFVew - partials-zucchini-ur-linux64-shippable/opt: e0opo3oYT-WBZuDE7Qc6-w - partials-zucchini-ur-macosx64-shippable/opt: HcHj0GXiR92wiJL1R07hJw - partials-zucchini-ur-win32-shippable/opt: c1zruw1fQEiMNRiPcJ84Iw - partials-zucchini-ur-win64-aarch64-shippable/opt: KHiPJPgkQveiWYpJOhejXQ - partials-zucchini-ur-win64-shippable/opt: WriboVv6SReE-HuvV40tdQ - partials-zucchini-uz-linux-shippable/opt: D4i9-MBKS2em19s3W_EXTw - partials-zucchini-uz-linux64-aarch64-shippable/opt: NwuY0hUnRUOsLUvs7TLqCw - partials-zucchini-uz-linux64-shippable/opt: TD0juj9vS8WOqbcmRvtbZg - partials-zucchini-uz-macosx64-shippable/opt: M8b3UwzfTtKmV8O8Cpt1sw - partials-zucchini-uz-win32-shippable/opt: UCbL6ZydQ2S-oddHEtHa-Q - partials-zucchini-uz-win64-aarch64-shippable/opt: VexK5mIERPmHwcedWdCJWw - partials-zucchini-uz-win64-shippable/opt: G_NE28lVTe2sjFvPpSWLeg - partials-zucchini-vi-linux-shippable/opt: ZAMxeyuoQCOtm9MeyFgOdg - partials-zucchini-vi-linux64-aarch64-shippable/opt: Nx1PO0qfQMKoVT0XCsJRWw - partials-zucchini-vi-linux64-shippable/opt: Hx-WE9D-STiXQD1aKw7rQg - partials-zucchini-vi-macosx64-shippable/opt: EtB9pv_hSo-jNIRJz5QmTA - partials-zucchini-vi-win32-shippable/opt: Yp9nzhdgS5axGc5HwVt6vg - partials-zucchini-vi-win64-aarch64-shippable/opt: Ew0m_GDrTPWx7sO6k--_rg - partials-zucchini-vi-win64-shippable/opt: UwsOS1RfTNmAvUJnehOzVA - partials-zucchini-win32-shippable/opt: X0h8ubm7SYONu7iXHyHfaQ - partials-zucchini-win64-aarch64-shippable/opt: dUm38hUpR_eneFSVAnvPrQ - partials-zucchini-win64-shippable/opt: WDGbwc5MRG-KdIXubHSFdA - partials-zucchini-xh-linux-shippable/opt: PVjjyzbvQJCLUnk-bq0ZPg - partials-zucchini-xh-linux64-aarch64-shippable/opt: N9xuuxNfQpGnCrdaRrZRJA - partials-zucchini-xh-linux64-shippable/opt: VhaRgCKQRoC6Yvdb7bXBLw - partials-zucchini-xh-macosx64-shippable/opt: EamYq2fYToyHq_xyq-ldKQ - partials-zucchini-xh-win32-shippable/opt: ZnS8P5rNSz-nepa-5PvEkQ - partials-zucchini-xh-win64-aarch64-shippable/opt: Uihf-creQI-BGvn2fME-FQ - partials-zucchini-xh-win64-shippable/opt: bBULmJ30SceAV6Bk7S2FqQ - partials-zucchini-zh-CN-linux-shippable/opt: Yx689K7QRVel0PhWsBnRqA - partials-zucchini-zh-CN-linux64-aarch64-shippable/opt: SM3ihatzRDq4AN41pFSqjw - partials-zucchini-zh-CN-linux64-shippable/opt: WNXW7ZhOQZycCFY-V3jUkg - partials-zucchini-zh-CN-macosx64-shippable/opt: K_o7mB25QaiRgcTAsWAW3Q - partials-zucchini-zh-CN-win32-shippable/opt: X7yelfN-TKiGDuEHKNwO7Q - partials-zucchini-zh-CN-win64-aarch64-shippable/opt: e4FOTTvxRRCiBBxVUOp_Bg - partials-zucchini-zh-CN-win64-shippable/opt: N0QVrJN4S5evfgGZ692iMA - partials-zucchini-zh-TW-linux-shippable/opt: AlF0mpKZRY-8qKtYoOArLA - partials-zucchini-zh-TW-linux64-aarch64-shippable/opt: SVKckv1CSMC2cN5skn-P5w - partials-zucchini-zh-TW-linux64-shippable/opt: Q9ARPjDySz6KJaTmy1xnEg - partials-zucchini-zh-TW-macosx64-shippable/opt: VrUMwnc0QFezzDPEeWp2WA - partials-zucchini-zh-TW-win32-shippable/opt: VYDoY-SQQuubDzhonBt3Jw - partials-zucchini-zh-TW-win64-aarch64-shippable/opt: UQ52bewrTHa7ARkToBwNbg - partials-zucchini-zh-TW-win64-shippable/opt: fkSw7-tMTPuAFKqfCs6pwA - post-balrog-dummy-icecat-linux-shippable-1: ay2Tde8zSzaFuNHYv5ql3g - post-balrog-dummy-icecat-linux64-aarch64-shippable-1: QFMXAlKjSHGVAFP5dz6FvA - post-balrog-dummy-icecat-linux64-shippable-1: RfmZTXcLRim_vxVWOgLsPw - post-balrog-dummy-icecat-macosx64-shippable-1: EiEIqdOLRpa8uV5BNbpCNQ - post-balrog-dummy-icecat-win32-shippable-1: LV26enBbTPaAxry_2EE4lA - post-balrog-dummy-icecat-win64-aarch64-shippable-1: ZT5Kbu9FSe6pmsHYU9RLRQ - post-balrog-dummy-icecat-win64-shippable-1: HZ7_nzdhSk-8Q1DItXfIvA - post-beetmover-checksums-dummy-icecat-promote-1: OaiqLqTUS5CRYsoUJkv6mw - post-beetmover-dummy-icecat-linux-shippable-1: eqqd3EPtRDe02QuIevSJUA - post-beetmover-dummy-icecat-linux64-aarch64-shippable-1: Efyrl2pRTzC_jrJueub7nw - post-beetmover-dummy-icecat-linux64-shippable-1: IQSB_55YRZ-NNSBWlC91vw - post-beetmover-dummy-icecat-macosx64-shippable-1: FgjWm7XdSSKd3uW01l-NvA - post-beetmover-dummy-icecat-win32-shippable-1: dEvTaCE_QZW-lkG3k7nl4Q - post-beetmover-dummy-icecat-win64-aarch64-shippable-1: SEyjDgQcQciJOQRF3MPraw - post-beetmover-dummy-icecat-win64-shippable-1: W9VudjBESmySguvdY_W56w - post-langpack-dummy-icecat-promote-1: DHaqSQoQRTKPb7QOVmcBXA - post-update-verify-dummy-icecat-linux-shippable-1: PUvgq_DBSMeDJGYkeBVrSQ - post-update-verify-dummy-icecat-linux64-aarch64-shippable-1: EkQ40MGgSJq5f16dsYyAeQ - post-update-verify-dummy-icecat-linux64-shippable-1: e_m-Z9frSsqcvJRtnp7_ow - post-update-verify-dummy-icecat-macosx64-shippable-1: DEQFN_wFQYaugdA3skzQ4Q - post-update-verify-dummy-icecat-win32-shippable-1: Ns_2skqrQF6ZA0c5rs887Q - post-update-verify-dummy-icecat-win64-aarch64-shippable-1: eRBQyQukQGyzl-HQ-pSjOA - post-update-verify-dummy-icecat-win64-shippable-1: RxIdCPpJRp-ReGdoMdWGwA - push-langpacks-build-linux64-shippable/opt: fKcUhx5qR_yKWlxCpX4ZWw - push-langpacks-shippable-l10n-linux64-shippable-1/opt: XiOoGQQSRSu6o7eiGDvdbg - push-langpacks-shippable-l10n-linux64-shippable-10/opt: Z6OeNGE4QAyCoLQJNp7b4Q - push-langpacks-shippable-l10n-linux64-shippable-11/opt: Ws88BJh6Rk6txbBStZ3r_w - push-langpacks-shippable-l10n-linux64-shippable-12/opt: bAg_mpekRrCWDh37p3JxsA - push-langpacks-shippable-l10n-linux64-shippable-13/opt: T9HQ6l3lRpi66rEVltGMdQ - push-langpacks-shippable-l10n-linux64-shippable-14/opt: fL3WVRI7QTOZ11OLe981HQ - push-langpacks-shippable-l10n-linux64-shippable-15/opt: VydCSN3HTYKhM6CSIl6OLQ - push-langpacks-shippable-l10n-linux64-shippable-16/opt: DNHf1-xQSmSQVKcTuBLOhg - push-langpacks-shippable-l10n-linux64-shippable-17/opt: TtXVG-81Ql6D1bZyNYvjJA - push-langpacks-shippable-l10n-linux64-shippable-18/opt: Wfx2ojxmT9iNrYKE2Z9SOA - push-langpacks-shippable-l10n-linux64-shippable-19/opt: TM_YDE4YQQCvjwtQqwRvPg - push-langpacks-shippable-l10n-linux64-shippable-2/opt: BoOUdi5rTwufz75oW0Y9OQ - push-langpacks-shippable-l10n-linux64-shippable-20/opt: AfEgUavjQ5qKyTNHlZTmlg - push-langpacks-shippable-l10n-linux64-shippable-21/opt: Hx-5BAfZQLeaiBzDCkeLWw - push-langpacks-shippable-l10n-linux64-shippable-3/opt: M7OPoH0ASMq0UaiTEFsrvw - push-langpacks-shippable-l10n-linux64-shippable-4/opt: Dl_geTg6QQOhizh0TFHzEw - push-langpacks-shippable-l10n-linux64-shippable-5/opt: DbXwATK5QHu7sY0E5abV3w - push-langpacks-shippable-l10n-linux64-shippable-6/opt: PORB_n85TrWvfn-Xg60DdQ - push-langpacks-shippable-l10n-linux64-shippable-7/opt: bxlA28JTQUGpbh4if-GVlw - push-langpacks-shippable-l10n-linux64-shippable-8/opt: OnPYNSSdS72ushJQmlBZTQ - push-langpacks-shippable-l10n-linux64-shippable-9/opt: cvGMPO6QSeOqHfVjhl5Rxg - push-langpacks-shippable-l10n-macosx64-shippable-ja-JP-mac/opt: IFxljHz-SEOKUfvT32umWQ - release-balrog-submit-toplevel-icecat: OlJ74PTuSA2ri8aSek2wUg - release-beetmover-signed-langpacks-checksums-linux-1/opt: AFjnvw9JRqKCZ0OQ991ayQ - release-beetmover-signed-langpacks-checksums-linux-10/opt: DqTUQ_GTQAO9roBwFnU9FQ - release-beetmover-signed-langpacks-checksums-linux-11/opt: cipqfGznTKe4nTYqsImflw - release-beetmover-signed-langpacks-checksums-linux-12/opt: N9A_vCe6SOqchhe2no9DPw - release-beetmover-signed-langpacks-checksums-linux-13/opt: DSA16B2NQX6gasHUhpuW9Q - release-beetmover-signed-langpacks-checksums-linux-14/opt: Amti-4HxSTuA6C62LKa9SQ - release-beetmover-signed-langpacks-checksums-linux-15/opt: Mv61gI2xSbWcevXv4XYWiQ - release-beetmover-signed-langpacks-checksums-linux-16/opt: EZoMkpqmSSigFRfBD9zM_A - release-beetmover-signed-langpacks-checksums-linux-17/opt: dBIHC8u1RcOezsdlLqS-Pg - release-beetmover-signed-langpacks-checksums-linux-18/opt: MbGZF4WjTAeME-Ad2flmRw - release-beetmover-signed-langpacks-checksums-linux-19/opt: Uw4z1aGqQfOafQIxpYxW7w - release-beetmover-signed-langpacks-checksums-linux-2/opt: Ubh5S-A6RtKgdCNakFUXig - release-beetmover-signed-langpacks-checksums-linux-20/opt: Xa0Mrwj3QqKbmil3_pSlQw - release-beetmover-signed-langpacks-checksums-linux-21/opt: FfyKja9rRSqYFLAjaSwTIg - release-beetmover-signed-langpacks-checksums-linux-3/opt: VzSbnHRTQGaEgsdVE7Sojw - release-beetmover-signed-langpacks-checksums-linux-4/opt: Uo4w73tPQjajNgBcSiebKA - release-beetmover-signed-langpacks-checksums-linux-5/opt: UdssSHhKTuiXtNGUllfi9g - release-beetmover-signed-langpacks-checksums-linux-6/opt: aQNxzxAGTCCtAvU0XNJu8A - release-beetmover-signed-langpacks-checksums-linux-7/opt: Mw9HZFgsSyunto9GpBqsJA - release-beetmover-signed-langpacks-checksums-linux-8/opt: L04QOrEsRVehfXFbnRiEpw - release-beetmover-signed-langpacks-checksums-linux-9/opt: EafFuw96SAOZoqhyx-iKjg - release-beetmover-signed-langpacks-checksums-linux/opt: HnJDXCVwS82IWFBcsZcJKw - release-beetmover-signed-langpacks-checksums-linux64-aarch64-1/opt: VgWaLepqQKSrBBGkVS8wyA - release-beetmover-signed-langpacks-checksums-linux64-aarch64-10/opt: BhSyu-YyTui5u4EObXSJ7g - release-beetmover-signed-langpacks-checksums-linux64-aarch64-11/opt: PicR28MsR36IBIpEIScQSg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-12/opt: HJB5IFXXQxyXhPzzOT7Osg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-13/opt: WQEk9FjjQQi0PjiEpszK-g - release-beetmover-signed-langpacks-checksums-linux64-aarch64-14/opt: bDFDWXb-T0G1spIt6aoEBQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-15/opt: OpeEbJX4SbSihriX9ruqtQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-16/opt: Sd-1ipzyQty8YkXD2K2VZQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-17/opt: O7hFRvCBRsKyMPxmnQnvQA - release-beetmover-signed-langpacks-checksums-linux64-aarch64-18/opt: X8yhOzgiSVSEVjRfXSlRug - release-beetmover-signed-langpacks-checksums-linux64-aarch64-19/opt: KZ4Eif70Qdy07QElyccO-Q - release-beetmover-signed-langpacks-checksums-linux64-aarch64-2/opt: KRNXtcxzRteWblpEPjKPSQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-20/opt: XqQR7VX8TTSFN-_tUFxzyw - release-beetmover-signed-langpacks-checksums-linux64-aarch64-21/opt: N2WDTDqjTvGeXV4IvPBmqQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-3/opt: INHynlpZSHS2qIt9DwbyMg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-4/opt: F-CI8v2wSS2ezyhNyF17bw - release-beetmover-signed-langpacks-checksums-linux64-aarch64-5/opt: ZCsQ9-pSSEO5h_toQOLtDg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-6/opt: SEHIdKRNRPGLnOqzfs0QeA - release-beetmover-signed-langpacks-checksums-linux64-aarch64-7/opt: buWlE-iJRh2yZy3Jqr3v9A - release-beetmover-signed-langpacks-checksums-linux64-aarch64-8/opt: Fuvax7o0QkevLgNEvgfHow - release-beetmover-signed-langpacks-checksums-linux64-aarch64-9/opt: N5kHcxxZR2aTwSls1LRWNw - release-beetmover-signed-langpacks-checksums-linux64-aarch64/opt: N8MbtawkQ2KyIKP87xNwOg - release-beetmover-signed-langpacks-checksums-macosx64-1/opt: VWFcu29jRza9OAohHCpkfA - release-beetmover-signed-langpacks-checksums-macosx64-10/opt: DLo-peoPQqmMMdY1oYmEcg - release-beetmover-signed-langpacks-checksums-macosx64-11/opt: UH14neXDQAemg5y0mN8wVg - release-beetmover-signed-langpacks-checksums-macosx64-12/opt: EtYkOmrdS4O1USQTi-Oh-w - release-beetmover-signed-langpacks-checksums-macosx64-13/opt: auxrrCLPT8qpelSDqBFTcw - release-beetmover-signed-langpacks-checksums-macosx64-14/opt: ENRMNxTYSm6Q21NxC1uYZw - release-beetmover-signed-langpacks-checksums-macosx64-15/opt: f-Wzx8J7Q8Khmy-cYJ0TCQ - release-beetmover-signed-langpacks-checksums-macosx64-16/opt: awyKkM0kTiiukRMlfHz6rA - release-beetmover-signed-langpacks-checksums-macosx64-17/opt: OvvX_F3WRZ6sgefcv6XkuQ - release-beetmover-signed-langpacks-checksums-macosx64-18/opt: Zu2nwIRhRwOVZTZWpK3Xpw - release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ZLu0nrr7Q2mZvmmhL_krqA - release-beetmover-signed-langpacks-checksums-macosx64-2/opt: Lqzv9-lIQeKLWoWTkvc1Gg - release-beetmover-signed-langpacks-checksums-macosx64-20/opt: JGrB1-KySaecaesq1pir4Q - release-beetmover-signed-langpacks-checksums-macosx64-21/opt: DY49u2auSEeutEI8AuuR5g - release-beetmover-signed-langpacks-checksums-macosx64-3/opt: H8kzuFfXRomR1uIGNwZf6A - release-beetmover-signed-langpacks-checksums-macosx64-4/opt: MyloEjIhQwuxML6ZUC7AFA - release-beetmover-signed-langpacks-checksums-macosx64-5/opt: HKOdOWtSQ4msPVleHvcATA - release-beetmover-signed-langpacks-checksums-macosx64-6/opt: LAShF9dKQVe_WR-JAJyUCg - release-beetmover-signed-langpacks-checksums-macosx64-7/opt: ajM9KbZLR4isY682sqB1Xw - release-beetmover-signed-langpacks-checksums-macosx64-8/opt: F_218b1WQSCjDx0rgJ9nIA - release-beetmover-signed-langpacks-checksums-macosx64-9/opt: fX4w8TllQsKz8r-SODe2Sw - release-beetmover-signed-langpacks-checksums-macosx64/opt: PiDtCKOzQWaoUhKML9hTbQ - release-beetmover-signed-langpacks-checksums-win32-1/opt: enH3y40sStau3n_J7rnM4g - release-beetmover-signed-langpacks-checksums-win32-10/opt: IHNByM6LTee3YXdhbkjjtA - release-beetmover-signed-langpacks-checksums-win32-11/opt: dDSbV21JQwyloYAMaTNO1Q - release-beetmover-signed-langpacks-checksums-win32-12/opt: H-LuwKLgRR2DWTmBNl--TQ - release-beetmover-signed-langpacks-checksums-win32-13/opt: Y_Bg_yWvSRelLDioDxAYaQ - release-beetmover-signed-langpacks-checksums-win32-14/opt: BaUSnlb2SXCv7D6Er2K7gA - release-beetmover-signed-langpacks-checksums-win32-15/opt: U7QuRmE6QZqGvLa31WDw1w - release-beetmover-signed-langpacks-checksums-win32-16/opt: A-sY-2fnSB2i5QMQaEvv1w - release-beetmover-signed-langpacks-checksums-win32-17/opt: Iz0vPdcVS521dDm4oMxtLA - release-beetmover-signed-langpacks-checksums-win32-18/opt: C40nyNLQQUeBCJMqztEodA - release-beetmover-signed-langpacks-checksums-win32-19/opt: fopgZTCbRT-8CPm3P_TIuA - release-beetmover-signed-langpacks-checksums-win32-2/opt: cE5GrvRRTtaJxKWG96PTaQ - release-beetmover-signed-langpacks-checksums-win32-20/opt: Ix4onRq9RICVDC9Re2AETQ - release-beetmover-signed-langpacks-checksums-win32-21/opt: MuY0DBcES8uhZBJZpyM9bg - release-beetmover-signed-langpacks-checksums-win32-3/opt: BOI5M58aQ6OW2yp9iChfFw - release-beetmover-signed-langpacks-checksums-win32-4/opt: asAn9JsORNSbRlHRCBVELA - release-beetmover-signed-langpacks-checksums-win32-5/opt: f7bHAXsWR6e41f4pHj5y2Q - release-beetmover-signed-langpacks-checksums-win32-6/opt: a3amRU3KRvqvGXEelFjXgQ - release-beetmover-signed-langpacks-checksums-win32-7/opt: XGDaRoqnSmmM8H31ei46fQ - release-beetmover-signed-langpacks-checksums-win32-8/opt: NyC2cEBLRtWRC_Il-rV31g - release-beetmover-signed-langpacks-checksums-win32-9/opt: Sz4rW-HwQ7-dHN26KzsS7w - release-beetmover-signed-langpacks-checksums-win32/opt: YC2FF83CQaG5MW_6dhz1vA - release-beetmover-signed-langpacks-checksums-win64-1/opt: YAhYfhvaQ7edrxegH5YShA - release-beetmover-signed-langpacks-checksums-win64-10/opt: ZdvQEWiIQPiZb9Hkhaw9xw - release-beetmover-signed-langpacks-checksums-win64-11/opt: DrGliKLVS42RsnGCMwpzHw - release-beetmover-signed-langpacks-checksums-win64-12/opt: ZWimtGnTRAGxtCSksSo6fg - release-beetmover-signed-langpacks-checksums-win64-13/opt: Q7LUyCUgSN-lsfsI7KN2hg - release-beetmover-signed-langpacks-checksums-win64-14/opt: ahT8Q8UlQay6fe2W_KPOsg - release-beetmover-signed-langpacks-checksums-win64-15/opt: O-akVw7qREmIgWH35St2Hw - release-beetmover-signed-langpacks-checksums-win64-16/opt: IpsYABuNTRyeZ1lTT4HNFg - release-beetmover-signed-langpacks-checksums-win64-17/opt: czlhKSiFTxaW6LAmdAQJyg - release-beetmover-signed-langpacks-checksums-win64-18/opt: ZAs7DxKLSnqbxdGhKIyA-Q - release-beetmover-signed-langpacks-checksums-win64-19/opt: YHarZJ0-TYqQyq5_wNYI-w - release-beetmover-signed-langpacks-checksums-win64-2/opt: b6HEwSLTQz6jXxkEZxOYhA - release-beetmover-signed-langpacks-checksums-win64-20/opt: AvLqoga8Qsmpr98xwgmgZg - release-beetmover-signed-langpacks-checksums-win64-21/opt: J-8DkGiARVajPhFvgXm7Cw - release-beetmover-signed-langpacks-checksums-win64-3/opt: XSSFUf35SjWM7SkqCj-paQ - release-beetmover-signed-langpacks-checksums-win64-4/opt: XVsLetpXR1mToP8mqoAnTQ - release-beetmover-signed-langpacks-checksums-win64-5/opt: QM9JtiH9SVmMmOQPfWZQkg - release-beetmover-signed-langpacks-checksums-win64-6/opt: DadqQDMLSRSMTAtl1NnpDA - release-beetmover-signed-langpacks-checksums-win64-7/opt: TrSoMR3QRz6UP_BHz6BVNQ - release-beetmover-signed-langpacks-checksums-win64-8/opt: Wlkq6B11QNuJcxVyIVokfw - release-beetmover-signed-langpacks-checksums-win64-9/opt: Kh4tXwkBRzeUImS9IShUXg - release-beetmover-signed-langpacks-checksums-win64/opt: HWrNgwYGQI6esWudwxe_UA - release-beetmover-signed-langpacks-linux-shippable-1/opt: LkXZn5U_RWeY2Hwor5EG9w - release-beetmover-signed-langpacks-linux-shippable-10/opt: XRDMXalnTauWZ3gMZrIOsQ - release-beetmover-signed-langpacks-linux-shippable-11/opt: PUfJRsbHR_2SC3JzHx214Q - release-beetmover-signed-langpacks-linux-shippable-12/opt: fOPbX4SGQaS9XRBmEo_MTA - release-beetmover-signed-langpacks-linux-shippable-13/opt: XsEM470XQhW4-znuOqQBCA - release-beetmover-signed-langpacks-linux-shippable-14/opt: Mn4Yka0UQr-DzzDhr2jjCQ - release-beetmover-signed-langpacks-linux-shippable-15/opt: AYRtL345QiiZ5jYTrH4AxA - release-beetmover-signed-langpacks-linux-shippable-16/opt: EcSF_nXtQwCc5VjK99qArw - release-beetmover-signed-langpacks-linux-shippable-17/opt: dukC8VHDQnOqfMmiovcVew - release-beetmover-signed-langpacks-linux-shippable-18/opt: NpneK-_9QyKRhVwyewgY1A - release-beetmover-signed-langpacks-linux-shippable-19/opt: J-tnhNwWScCfbcK_2j1Yww - release-beetmover-signed-langpacks-linux-shippable-2/opt: e8EJ3rMDTJC0A2ChnjUe1w - release-beetmover-signed-langpacks-linux-shippable-20/opt: G2OXH-NsSoW9xHvYA39Vvw - release-beetmover-signed-langpacks-linux-shippable-21/opt: PgVLNrHmS-SGi84ysv_dmw - release-beetmover-signed-langpacks-linux-shippable-3/opt: SBswuU3GQeuDBvOoYmsG5g - release-beetmover-signed-langpacks-linux-shippable-4/opt: K07p7H8MQF6TSGKdvLqIbw - release-beetmover-signed-langpacks-linux-shippable-5/opt: M7j4K5chS6u6KwBuLNpfdw - release-beetmover-signed-langpacks-linux-shippable-6/opt: Vsjmo15pT8a5S7BpDGvy2Q - release-beetmover-signed-langpacks-linux-shippable-7/opt: fHsbK_AdRWC0Yltz3w3JGQ - release-beetmover-signed-langpacks-linux-shippable-8/opt: Rm2d6u6ZTDSu4Zz4AtoA4Q - release-beetmover-signed-langpacks-linux-shippable-9/opt: Z6y2nz-LTWG90_eRsYFdEw - release-beetmover-signed-langpacks-linux-shippable/opt: DaAOFyTkR9SA91dZNACfjw - release-beetmover-signed-langpacks-linux64-aarch64-shippable-1/opt: KNfBXfLzQJq9WSDS-pOBzw - release-beetmover-signed-langpacks-linux64-aarch64-shippable-10/opt: ESTlaLWrRFGum3ufP6eeZA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-11/opt: KxkRGCKMTEyDkNAJUH467w - release-beetmover-signed-langpacks-linux64-aarch64-shippable-12/opt: PamwR-L2QbyOol-dcmC-1Q - release-beetmover-signed-langpacks-linux64-aarch64-shippable-13/opt: TMhvoYKqQxuYAFTOTVhbuQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-14/opt: VuTWrh3oRZOPiwa7jezSsg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-15/opt: as8nGPvMQoyMN0W7wHZ6RA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-16/opt: NgCqtv_ETxKgVaLclU7MJg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-17/opt: IhKXJO57Qyi5jZAGOUSwAg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-18/opt: JVkwYxa0TmW8PYCkCnWJ2g - release-beetmover-signed-langpacks-linux64-aarch64-shippable-19/opt: MhQMKUm9Tqi9c4rV3mcVYg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-2/opt: X8lEY7FyR4-nG8Ji2K-uHQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-20/opt: SYzFMn8fSkeGYVPhdyDKMQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-21/opt: Ok_1p6y_S7a3OVrMh0TZJw - release-beetmover-signed-langpacks-linux64-aarch64-shippable-3/opt: cw8uehPlTuq2ubLsQVEKdQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-4/opt: IXCcIcHtSYKuxgZQ23P2Wg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-5/opt: aO3SXVRUQq-W3G3RtYiMvA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-6/opt: PA8JqJwLSr6ODSQlC1wl2A - release-beetmover-signed-langpacks-linux64-aarch64-shippable-7/opt: Ou5j6yt3QDuYdLZFcSt1ig - release-beetmover-signed-langpacks-linux64-aarch64-shippable-8/opt: JXguXVerRuSxQ5deq-aJTA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-9/opt: Ie53nYsJRri6Cgp8xWStuw - release-beetmover-signed-langpacks-linux64-aarch64-shippable/opt: RDB-tLoPTxuGl24hQU-2jQ - release-beetmover-signed-langpacks-macosx64-shippable-1/opt: LLF70OT6TwWfu6y-QlkN7w - release-beetmover-signed-langpacks-macosx64-shippable-10/opt: CAqBNbPfQqKIQh4jVNoHlQ - release-beetmover-signed-langpacks-macosx64-shippable-11/opt: QQIocu68RuiNvFNybIwaWw - release-beetmover-signed-langpacks-macosx64-shippable-12/opt: Ue36jrB_SSGXl6OKLVRezw - release-beetmover-signed-langpacks-macosx64-shippable-13/opt: RihxgXPZSUCLGnWg9BVJgw - release-beetmover-signed-langpacks-macosx64-shippable-14/opt: LqOJNOvNRM-csHcpJ6b-oA - release-beetmover-signed-langpacks-macosx64-shippable-15/opt: Gkc67NO_Suux1wYb3e9rqw - release-beetmover-signed-langpacks-macosx64-shippable-16/opt: ZZeejh67QoK7_ESFXNGsvA - release-beetmover-signed-langpacks-macosx64-shippable-17/opt: WzDUjKKrSaiHG1q4b4drKg - release-beetmover-signed-langpacks-macosx64-shippable-18/opt: b3RjuWmuR5yKRZqzCnjyUg - release-beetmover-signed-langpacks-macosx64-shippable-19/opt: ZB2yYo8uTy67rEYL0-h3NA - release-beetmover-signed-langpacks-macosx64-shippable-2/opt: EwCQ5gJGQ-K8NKkEM7roJA - release-beetmover-signed-langpacks-macosx64-shippable-20/opt: TBJW-8dLS_aOqX9WgJyJ3w - release-beetmover-signed-langpacks-macosx64-shippable-21/opt: dI8SHvBdRaGjQPEePt4myw - release-beetmover-signed-langpacks-macosx64-shippable-3/opt: IU8Fh5VaQ8G0feb7Qt84HA - release-beetmover-signed-langpacks-macosx64-shippable-4/opt: CjLkAhd5R-2XSmUMalqR9g - release-beetmover-signed-langpacks-macosx64-shippable-5/opt: BA1k7l3hS1y1cqqM5gU7lw - release-beetmover-signed-langpacks-macosx64-shippable-6/opt: BRPDU5M1R9a_LnXdkrR57A - release-beetmover-signed-langpacks-macosx64-shippable-7/opt: P35M4fduRP6_DALpHACGlw - release-beetmover-signed-langpacks-macosx64-shippable-8/opt: dk-85cjpRs2NimRIDpIjIw - release-beetmover-signed-langpacks-macosx64-shippable-9/opt: GnyzAFdLTX6RMt2fEdYevA - release-beetmover-signed-langpacks-macosx64-shippable/opt: KDY386v4S4KNs5T7atNyvQ - release-beetmover-signed-langpacks-win32-shippable-1/opt: F4LyR2JuR-CwRdTJWUKJZQ - release-beetmover-signed-langpacks-win32-shippable-10/opt: K3Exka2BTP6RrYgeopS8Hw - release-beetmover-signed-langpacks-win32-shippable-11/opt: WS7PklT_SoSB95mpltG_JA - release-beetmover-signed-langpacks-win32-shippable-12/opt: RBaARb8qTUqW1LevFoRwuQ - release-beetmover-signed-langpacks-win32-shippable-13/opt: WNc1Xog5TZCECQle8oKKEQ - release-beetmover-signed-langpacks-win32-shippable-14/opt: exoWjPtiS4Cjv7oxiQBq_w - release-beetmover-signed-langpacks-win32-shippable-15/opt: Es69D4sPTlqkHyhCPme1HQ - release-beetmover-signed-langpacks-win32-shippable-16/opt: c3PZGQHqTPOMEIHT0vegFw - release-beetmover-signed-langpacks-win32-shippable-17/opt: EtMHuiOqRjK6-aTKmLBI3g - release-beetmover-signed-langpacks-win32-shippable-18/opt: Pzi99EMLT46fJi7vd8mXrg - release-beetmover-signed-langpacks-win32-shippable-19/opt: TyLAHrLoQgSZjj94O_0uZw - release-beetmover-signed-langpacks-win32-shippable-2/opt: QOlCWkjlSq6KKXAYf8mW0A - release-beetmover-signed-langpacks-win32-shippable-20/opt: HNjdGBjqSDeYirM8SBqGzw - release-beetmover-signed-langpacks-win32-shippable-21/opt: TZMApbIjRRWNLkHQaM1fZw - release-beetmover-signed-langpacks-win32-shippable-3/opt: VDGu4loXTRGUxAeUmtbK5g - release-beetmover-signed-langpacks-win32-shippable-4/opt: WF-7gBEgRxK5y-YntXJu3A - release-beetmover-signed-langpacks-win32-shippable-5/opt: GWO-TdQXRKml_tRFJG_xIQ - release-beetmover-signed-langpacks-win32-shippable-6/opt: b7B_edMhRZqrP5FlYBAp4Q - release-beetmover-signed-langpacks-win32-shippable-7/opt: Jm2FwWNVR_CP0zUfeOcCvg - release-beetmover-signed-langpacks-win32-shippable-8/opt: USLpH3-sS_inBMdX84fq2A - release-beetmover-signed-langpacks-win32-shippable-9/opt: Vp7f7P__QVedOv37n9asYg - release-beetmover-signed-langpacks-win32-shippable/opt: GDyEEW9fQFWiesmNdt1fNA - release-beetmover-signed-langpacks-win64-shippable-1/opt: CmTA0icZRS-mQWmbvGkLQw - release-beetmover-signed-langpacks-win64-shippable-10/opt: Y_FEZFwHSMGEfh4MXQetIw - release-beetmover-signed-langpacks-win64-shippable-11/opt: BosSuuEGTiW8fE9gYR4sWQ - release-beetmover-signed-langpacks-win64-shippable-12/opt: XvGh0JA9RxWb1DWRJj71Xg - release-beetmover-signed-langpacks-win64-shippable-13/opt: EhDJdMOSScCNry8m-RQnHw - release-beetmover-signed-langpacks-win64-shippable-14/opt: dC1Xd4AOToKApKVBQCIsTQ - release-beetmover-signed-langpacks-win64-shippable-15/opt: F17Bq_enS0O9uklH8mtwdg - release-beetmover-signed-langpacks-win64-shippable-16/opt: YWbprOoKQbOKXWacfDY20g - release-beetmover-signed-langpacks-win64-shippable-17/opt: L3oLJhg5S9OpVzMnKGYSDg - release-beetmover-signed-langpacks-win64-shippable-18/opt: e93oIz-gRHytgo7tC2kxNQ - release-beetmover-signed-langpacks-win64-shippable-19/opt: TmAkNS8MSZ6QWSsQG9xNTA - release-beetmover-signed-langpacks-win64-shippable-2/opt: SJj9xuSfSrSHOIuAAm9kYg - release-beetmover-signed-langpacks-win64-shippable-20/opt: MvxtIufXRPC9VwEtfxtWIA - release-beetmover-signed-langpacks-win64-shippable-21/opt: eYTF4CDkTZukWSa7KyB7hQ - release-beetmover-signed-langpacks-win64-shippable-3/opt: ZDSsGnB3R2S0Wh86Wnz6XQ - release-beetmover-signed-langpacks-win64-shippable-4/opt: VwUjH7ZqReW-05TZo8IvxQ - release-beetmover-signed-langpacks-win64-shippable-5/opt: VNKi51FGQiSA1x17S-BL3g - release-beetmover-signed-langpacks-win64-shippable-6/opt: Enx1fkG_T5KAIihc99KLPg - release-beetmover-signed-langpacks-win64-shippable-7/opt: ZxVXm3MHS0ulnnRptWH47g - release-beetmover-signed-langpacks-win64-shippable-8/opt: XTU3J99uR0i6PMxhHJOFTQ - release-beetmover-signed-langpacks-win64-shippable-9/opt: fqCPeMWbQBeuZhkqkixS4Q - release-beetmover-signed-langpacks-win64-shippable/opt: bpH4fcxrSmCgedx9DajFjw - release-beetmover-source-checksums-icecat-source/opt: AiVzIs_9SAexRvi_3gg4FQ - release-bouncer-sub-icecat: WYJ6LMwmSZqJMJV9RLEZcQ - release-early-tagging-icecat: JmOqwNreTLyJpocLcE0TTQ - release-generate-checksums-icecat: PyCMfgNdRv-sSlF96_OYXw - release-generate-checksums-icecat-beetmover: Aex4zxb1RXiaWjLb2e0xjA - release-generate-checksums-icecat-signing: W0Af-CoBSLewHcVtHfWVdg - release-notify-promote-icecat: SbjIm8kWRx2C-gMH27UYGA - release-notify-started-icecat: c4WldZhUTr-QV4vC3DPMGw - release-partner-repack-beetmover-linux-shippable-mozillaonline-esrOther-zh-CN: TKY8v5b_RyeV_K_UxDrAqA - release-partner-repack-beetmover-linux64-shippable-mozillaonline-esrOther-zh-CN: ZkMLJwShRkSJ8hkPrPDpIg - release-partner-repack-beetmover-macosx64-shippable-mozillaonline-esrOther-zh-CN: C-yWzz2bTyONRvtt3UfSTw - release-partner-repack-beetmover-win32-shippable-mozillaonline-esrWinFull-zh-CN: XIao0z-mR7WwmTlvzZTtdg - release-partner-repack-beetmover-win64-shippable-mozillaonline-esrWinFull-zh-CN: bk2up5igRFGaWLE5_JtiCw - release-partner-repack-chunking-dummy-linux-shippable-mozillaonline-esrOther-zh-CN: fCI-oCVKQtODmfskhosgVQ - release-partner-repack-chunking-dummy-linux64-shippable-mozillaonline-esrOther-zh-CN: T2lPAnqHRpmlI_tKgxq30A - release-partner-repack-linux-shippable: DBcTiyZ1QzWhF7sfNUHyiA - release-partner-repack-linux64-shippable: YQ-M_JJGSfaJ9CSoP_9rBQ - release-partner-repack-mac-notarization-macosx64-shippable-1: I2STa8x3QHafszuw1m3pBw - release-partner-repack-mac-signing-macosx64-shippable-1: DAuY4Q0WQDSQrRR6WAIVwQ - release-partner-repack-macosx64-shippable: UXotC8E0Tp6EF03-3jjn9A - release-partner-repack-repackage-macosx64-shippable-mozillaonline-esrOther-zh-CN: Qb-q73g5R8COAvOYVppZMg - release-partner-repack-repackage-signing-linux-shippable-mozillaonline-esrOther-zh-CN: TNZOlCecQv2iJQaxnC7RCw - release-partner-repack-repackage-signing-linux64-shippable-mozillaonline-esrOther-zh-CN: I_MwG3J7SdC-9SO6B1ncaQ - release-partner-repack-repackage-signing-macosx64-shippable-mozillaonline-esrOther-zh-CN: ArpBzX-kRqO_f4cb50nXEQ - release-partner-repack-repackage-signing-win32-shippable-mozillaonline-esrWinFull-zh-CN: Ah3rJhtxShCY2OkwhZLaeA - release-partner-repack-repackage-signing-win64-shippable-mozillaonline-esrWinFull-zh-CN: Qy2BJXYFTFiC9_I_jj6nsw - release-partner-repack-repackage-win32-shippable-mozillaonline-esrWinFull-zh-CN: U-ryjZqVT1Wm5WHV5IEyjg - release-partner-repack-repackage-win64-shippable-mozillaonline-esrWinFull-zh-CN: P70enjYiQdC0aYI9WvYggQ - release-partner-repack-win32-shippable: PDxjLbiOR8q3DmqRq_0ptw - release-partner-repack-win64-shippable: c4pmW1_8SEuYXCSiJAPZXg - release-source-checksums-signing-icecat-source/opt: G-BJofwvR3uPqhbZmL__BQ - release-source-icecat-source/opt: DUXxr9j0Tnu4vgf2ziAGNg - release-source-signing-icecat-source/opt: Ey7hEPb6QjqrYo7d_vL9yA - release-update-verify-config-icecat-linux: Nuso69GVR7aWWeANTWdGgQ - release-update-verify-config-icecat-linux64: CUha1NCZTDuiZv5bU1LBcg - release-update-verify-config-icecat-linux64-aarch64: H21KXvGCTm-ydF6ec4mY2g - release-update-verify-config-icecat-macosx64: Nc0_CuhlQMuwVo5NfzuEtA - release-update-verify-config-icecat-win32: eqa7-xcXQxO7XRkMaf7h3A - release-update-verify-config-icecat-win64: Z4uGdz-PT46p2Ylc5p0jLA - release-update-verify-config-icecat-win64-aarch64: M-ODcNP3S9mQnaJrKcK8pA - release-update-verify-icecat-linux-1/16: QXdtu7ZMRgSZlwdxzNUgFQ - release-update-verify-icecat-linux-10/16: ZCoOM9zqQQCoMBdSEuPOiQ - release-update-verify-icecat-linux-11/16: X0OPmUFuSZCG9AjJGtSSBg - release-update-verify-icecat-linux-12/16: PLI8CBP4RSWvrKIi-hFZyg - release-update-verify-icecat-linux-13/16: JiQfPoXXTvGFR9GsbT_qkA - release-update-verify-icecat-linux-14/16: RnH09FXiSPWwHE5IMJv9bw - release-update-verify-icecat-linux-15/16: OGWX_0hMTUynsBRKmixxqw - release-update-verify-icecat-linux-16/16: Ix5LuUCWQBiJnKgwK09Rpg - release-update-verify-icecat-linux-2/16: SALtA3xgQGWJMeaU9IkXmw - release-update-verify-icecat-linux-3/16: X_DV-gdYQ_u1GMi-G0xmRw - release-update-verify-icecat-linux-4/16: OcjYbSxzQtiH-hjqMd3kOA - release-update-verify-icecat-linux-5/16: VSuVfzvHTmuQUAU899z24Q - release-update-verify-icecat-linux-6/16: fp7zzCPWSgKSFtWCP9cPlg - release-update-verify-icecat-linux-7/16: QEbsvWgwSuGl2ZR8GKiIdA - release-update-verify-icecat-linux-8/16: Fvr-z8zJQ56RiEH2Afos8g - release-update-verify-icecat-linux-9/16: Gj2AwNo6SIG1WF6HnOuBzg - release-update-verify-icecat-linux64-1/16: TWngrlGDRHeX7mvM2OD_kQ - release-update-verify-icecat-linux64-10/16: S6hS3U9UTCaiPjwBcUO-YA - release-update-verify-icecat-linux64-11/16: HsY1E5huQ8u48qdCj1wYaA - release-update-verify-icecat-linux64-12/16: NuhQcFJHSyy7KjELAEmY6Q - release-update-verify-icecat-linux64-13/16: H11_6M9jR124FBdyCuK1kw - release-update-verify-icecat-linux64-14/16: Jv0_FaDjSZix5jLiwSqYtg - release-update-verify-icecat-linux64-15/16: BeScAkGCRaG0zp9qPKa_xQ - release-update-verify-icecat-linux64-16/16: c6G_0j30RaarLNEFM0aEZw - release-update-verify-icecat-linux64-2/16: VOTuf7AGRi2XvSP-KxBVdg - release-update-verify-icecat-linux64-3/16: Q_P3irKORyi5CfbhBSD_iA - release-update-verify-icecat-linux64-4/16: DUAjl_x7TrSxcWGF71vakA - release-update-verify-icecat-linux64-5/16: ZECOFAC8Ta26PPs1Vu7UjA - release-update-verify-icecat-linux64-6/16: JR0JCP4CTHms-yiDbuyA-w - release-update-verify-icecat-linux64-7/16: cP8LtJbCQFW63byCIS8Khg - release-update-verify-icecat-linux64-8/16: dd7EHrX_SRC2H3dqTFOMSg - release-update-verify-icecat-linux64-9/16: PPjTOB8ATmGFttHVzN39mQ - release-update-verify-icecat-linux64-aarch64-1/16: bxR8TRpFRweGLgw11Lj1fw - release-update-verify-icecat-linux64-aarch64-10/16: WU9rCxsLQmix-t8VhF9LZQ - release-update-verify-icecat-linux64-aarch64-11/16: GiWarx8ATvq3hgpBO4QGsA - release-update-verify-icecat-linux64-aarch64-12/16: HlV7vKrZQUu2W7Eg1O9JHA - release-update-verify-icecat-linux64-aarch64-13/16: HZ6WYxtPTXOCop6dPTSO5Q - release-update-verify-icecat-linux64-aarch64-14/16: SZC20KjpRLmB0J2tfmL2Sw - release-update-verify-icecat-linux64-aarch64-15/16: H6Qmnsr1S_i3XVlRk89uKA - release-update-verify-icecat-linux64-aarch64-16/16: SwuT9hs4SiCDRL80MxwTww - release-update-verify-icecat-linux64-aarch64-2/16: IUF_CqAYToGFCy2jbBDYzw - release-update-verify-icecat-linux64-aarch64-3/16: SoN8_I96TeGtOKXCFLkgZw - release-update-verify-icecat-linux64-aarch64-4/16: CPYrjYYgRtuS7pZ1e5eG9Q - release-update-verify-icecat-linux64-aarch64-5/16: KkSWudXlQVOKbeRGQDoYtg - release-update-verify-icecat-linux64-aarch64-6/16: AzhHF0beS9Sjx0USv2FU0Q - release-update-verify-icecat-linux64-aarch64-7/16: EoU1IvVlRLqNT1GQwu14LA - release-update-verify-icecat-linux64-aarch64-8/16: KLSZvkjOQoyErQ_-Yta_yw - release-update-verify-icecat-linux64-aarch64-9/16: MEfXkrdRSfasebGbYdqEnA - release-update-verify-icecat-macosx64-1/30: OjhRD707Rz6iBZySdRscXA - release-update-verify-icecat-macosx64-10/30: QPt-5NUgQ76t-1VJ8Whdhw - release-update-verify-icecat-macosx64-11/30: RwmISB44SxC4oeLbRdZxBQ - release-update-verify-icecat-macosx64-12/30: M-qWyVOwRUeV77XZlsK2Lg - release-update-verify-icecat-macosx64-13/30: Nz0DgUXnT7KsmQuD4XUQPw - release-update-verify-icecat-macosx64-14/30: Gc0TyvrkR2OSbwwvCtSXIQ - release-update-verify-icecat-macosx64-15/30: Hn1DDulxQMmcfjAfOAceEQ - release-update-verify-icecat-macosx64-16/30: OEa7pAVeTTC932GVX1NH2A - release-update-verify-icecat-macosx64-17/30: HJ60OaO6R8W8YGXf0pXnMA - release-update-verify-icecat-macosx64-18/30: QKRYHd5LTN6rHyOBq_lTqA - release-update-verify-icecat-macosx64-19/30: Wh7x3vQQSNKPdSyGvJiCug - release-update-verify-icecat-macosx64-2/30: H2syViagR56m5My0eLqVBQ - release-update-verify-icecat-macosx64-20/30: HfBV7JPTTsWVOhbfUTXAPw - release-update-verify-icecat-macosx64-21/30: AvPmJhbsSXe0H-3pgtxA8Q - release-update-verify-icecat-macosx64-22/30: b0V5bhMpQhKgL4yVPCGm1A - release-update-verify-icecat-macosx64-23/30: DeZgh3EuTTuFtKBEVpaTFg - release-update-verify-icecat-macosx64-24/30: YM_AEtwqRSO4m8fRdw73qw - release-update-verify-icecat-macosx64-25/30: BdFvxXdrRzaWhVIMkxqxGg - release-update-verify-icecat-macosx64-26/30: EP4ZjiQhRRGp3VlkfM5hUA - release-update-verify-icecat-macosx64-27/30: FTOPjABhSrypUbqP1hnqBg - release-update-verify-icecat-macosx64-28/30: NhYAos86RfO35zRGq9eVfA - release-update-verify-icecat-macosx64-29/30: SXtKb8TASfCCTIS1nIi_Og - release-update-verify-icecat-macosx64-3/30: a_eYswFKQBO2YZV1rrJcuw - release-update-verify-icecat-macosx64-30/30: DJJUWxo-QgG0dmyPsknc3A - release-update-verify-icecat-macosx64-4/30: XN2Pvya0Rne3JcP76WQ2FQ - release-update-verify-icecat-macosx64-5/30: H9dAwMzET8GVBrsKNnpSmQ - release-update-verify-icecat-macosx64-6/30: HZogCup-SJKkNOg94BO0-g - release-update-verify-icecat-macosx64-7/30: P7JbSZvlRP6R72ACOyI62g - release-update-verify-icecat-macosx64-8/30: IRFXGUVJSDWwghHP6ogqfA - release-update-verify-icecat-macosx64-9/30: Ir3O11xmRjeZandbv5DtLw - release-update-verify-icecat-win32-1/16: HZRDPlkgTEW1yQeW3ie6yA - release-update-verify-icecat-win32-10/16: bmpPaH1wSJi_9MUzWMe88g - release-update-verify-icecat-win32-11/16: P8hnOKAySF2c9EWTXGYq0Q - release-update-verify-icecat-win32-12/16: NkYf-0jgSiONB8qB9BjuBQ - release-update-verify-icecat-win32-13/16: WSLpe4goR9m91RdS0qjPHA - release-update-verify-icecat-win32-14/16: LFICw3j-Su-f019FU0B6dw - release-update-verify-icecat-win32-15/16: LSB5bfBaRbatXro-whnh2w - release-update-verify-icecat-win32-16/16: eDbVBI_1TwWc9xIRVF9-nw - release-update-verify-icecat-win32-2/16: ZniypksURjyLt6pKLgIldQ - release-update-verify-icecat-win32-3/16: OCLDfRDzR8GjVqf14S66bA - release-update-verify-icecat-win32-4/16: SX_8cGpKSHy4VGzZOsQBdg - release-update-verify-icecat-win32-5/16: EVlmC_Q6S5KJyKDbBJSj_g - release-update-verify-icecat-win32-6/16: TYeKuPfxRYefTaYvYleMBQ - release-update-verify-icecat-win32-7/16: YRVW2xV2Shy03WSoQkn9RQ - release-update-verify-icecat-win32-8/16: VIpGbSIoR3mLw9NLtywZ2A - release-update-verify-icecat-win32-9/16: egv5yR0MTcOc2DnGdpjieQ - release-update-verify-icecat-win64-1/16: Hjb5_NAZSQmRzo15-BW6hQ - release-update-verify-icecat-win64-10/16: RaIoyTLyQCe0sw18x2Zu3Q - release-update-verify-icecat-win64-11/16: a1SR7ZRBSASbHtbEgPR6sg - release-update-verify-icecat-win64-12/16: HK5A_WUQTiSSoYfo8NWNBA - release-update-verify-icecat-win64-13/16: Wfs3HtFUTc6W0OeUMGS1jA - release-update-verify-icecat-win64-14/16: D8On59dNQyG0QxCnaGinwQ - release-update-verify-icecat-win64-15/16: T9FoEC0wR7OCoxCEQJQGNw - release-update-verify-icecat-win64-16/16: eV8k9xBfTvSOhZ9bZL2qVA - release-update-verify-icecat-win64-2/16: b1kkPu22ThWKefP4A3sHhw - release-update-verify-icecat-win64-3/16: BNcIu-4dQLCVGkL4vPJ6PA - release-update-verify-icecat-win64-4/16: SuPC07JmQJ6nDEt9GkMFRQ - release-update-verify-icecat-win64-5/16: Lmj5O_OqSw6QJWPiQ4MzUA - release-update-verify-icecat-win64-6/16: Oy_jz7tBTcGrCH3VkR5NUA - release-update-verify-icecat-win64-7/16: X6G3MWkXT46gotnwgsr4kA - release-update-verify-icecat-win64-8/16: bE49rYG0QhmEfAQZOSzKjw - release-update-verify-icecat-win64-9/16: VuN3jl_qQ66bHGIOTRFmJA - release-update-verify-icecat-win64-aarch64-1/16: bURQYOMcS9iDtNd2Zu1ojQ - release-update-verify-icecat-win64-aarch64-10/16: czWtok2PSZKfNdkB2KvnhA - release-update-verify-icecat-win64-aarch64-11/16: SC9ooWD8QeqVE7htSN7g-w - release-update-verify-icecat-win64-aarch64-12/16: ZKe5eMOXTz2BGTK3U4FVpQ - release-update-verify-icecat-win64-aarch64-13/16: WSLdODJkTBGdz5SkM5ygRg - release-update-verify-icecat-win64-aarch64-14/16: BQlMnTZqQ9OWEMcyb5RDAQ - release-update-verify-icecat-win64-aarch64-15/16: flOQpiRaQt-JcBkV2lUkoA - release-update-verify-icecat-win64-aarch64-16/16: MH-XErQ7S3OCCfS5knuRPg - release-update-verify-icecat-win64-aarch64-2/16: LopuLdjBSWassEhoCBXW0Q - release-update-verify-icecat-win64-aarch64-3/16: Q9b2SPilReqwdEQSjH5KeQ - release-update-verify-icecat-win64-aarch64-4/16: XJbOtqmKQzuQG3Exrbad5w - release-update-verify-icecat-win64-aarch64-5/16: YCNHokgtSy602kk--3hELA - release-update-verify-icecat-win64-aarch64-6/16: OvryRSzfTqCIo_1zLQUz5A - release-update-verify-icecat-win64-aarch64-7/16: Ov-IPk_ARBCLyGRO_PTrag - release-update-verify-icecat-win64-aarch64-8/16: D_RujYbPTrelIXxy4EwAvw - release-update-verify-icecat-win64-aarch64-9/16: IeYgv82kQ4i6tgqLQUyVIg - repackage-deb-l10n-ach-linux64-shippable/opt: SWK2b5MTTXCGHtb8d9Lu7g - repackage-deb-l10n-af-linux64-shippable/opt: GCTixFsGS0GLgTILeXzRpA - repackage-deb-l10n-an-linux64-shippable/opt: VG7XmvgDTpGBg8QqjuqQAQ - repackage-deb-l10n-ar-linux64-shippable/opt: WkuzIGZARuKvimrbXZwiaQ - repackage-deb-l10n-ast-linux64-shippable/opt: U_Dfa1a1S3y1egOAfmI4oA - repackage-deb-l10n-az-linux64-shippable/opt: EgsG3CdtTMWrV069vnGU_Q - repackage-deb-l10n-be-linux64-shippable/opt: bZPa9K8_RD2bi60ddtnmcA - repackage-deb-l10n-bg-linux64-shippable/opt: crJJVXQBRIW3HEemeM7npg - repackage-deb-l10n-bn-linux64-shippable/opt: EUm3gdyJS_upehW4Oew8NQ - repackage-deb-l10n-br-linux64-shippable/opt: LEz9nQLYTseweMo9c9mslw - repackage-deb-l10n-bs-linux64-shippable/opt: Nh4MDyqeRdSMu-__Bo9RjA - repackage-deb-l10n-ca-linux64-shippable/opt: AFiUr_R-Qz6P7N-jHLz0AQ - repackage-deb-l10n-ca-valencia-linux64-shippable/opt: QmG7NyLpSyeQd6uzEGy9yQ - repackage-deb-l10n-cak-linux64-shippable/opt: X_ow2BcmTUaMGl_6lgBBDQ - repackage-deb-l10n-cs-linux64-shippable/opt: DBhgieCqSfauhhFWotvQzQ - repackage-deb-l10n-cy-linux64-shippable/opt: USwMWu_XTOKD9zxbtobC0g - repackage-deb-l10n-da-linux64-shippable/opt: QnEg3-g3SlWfQIo6-4rSng - repackage-deb-l10n-de-linux64-shippable/opt: FzEI8GLlTEGg_syccFQWIA - repackage-deb-l10n-dsb-linux64-shippable/opt: VFmF_EOjQpC_DjQW497dxw - repackage-deb-l10n-el-linux64-shippable/opt: cEI5_kmzQEymFSOG29WNTg - repackage-deb-l10n-en-CA-linux64-shippable/opt: cyFukl7ETIqUztB0zeFtzg - repackage-deb-l10n-en-GB-linux64-shippable/opt: J_39oRaXT52TQH3JFcOO5w - repackage-deb-l10n-eo-linux64-shippable/opt: Do-Gfj_bQK-THWwrSouI8g - repackage-deb-l10n-es-AR-linux64-shippable/opt: LqOa_N86SRSwjoB9UhugmA - repackage-deb-l10n-es-CL-linux64-shippable/opt: SBEJVk7fQuqF3aajng7Rmg - repackage-deb-l10n-es-ES-linux64-shippable/opt: bkNY6vNVSbCQeUMUxeYhmw - repackage-deb-l10n-es-MX-linux64-shippable/opt: COcqqmQEQZiEeHoXmb2tHw - repackage-deb-l10n-et-linux64-shippable/opt: DB8xxOixSXyZeoyDxtjT8w - repackage-deb-l10n-eu-linux64-shippable/opt: c8OvCxIdSPK6yH24LsI6xg - repackage-deb-l10n-fa-linux64-shippable/opt: P2QYv-WWQSa9ZkWmPYdl8w - repackage-deb-l10n-ff-linux64-shippable/opt: BNLo9bSlRAm3ijcj7l8Zag - repackage-deb-l10n-fi-linux64-shippable/opt: Pfbh926NQ8GjKUys_ogIjQ - repackage-deb-l10n-fr-linux64-shippable/opt: QZjyeQcaQqKNIksFCgmuYg - repackage-deb-l10n-fur-linux64-shippable/opt: dNNAz4lKQziAHI5ugaknFg - repackage-deb-l10n-fy-NL-linux64-shippable/opt: b8wbafuuTCW6iuYhVICNew - repackage-deb-l10n-ga-IE-linux64-shippable/opt: IrTr_BcJSYmBxT--4Oc9Ag - repackage-deb-l10n-gd-linux64-shippable/opt: V0O7rOszSVGq-8ShUWrlvA - repackage-deb-l10n-gl-linux64-shippable/opt: J6ipqK00Q1-77bAUEU8G2A - repackage-deb-l10n-gn-linux64-shippable/opt: RhRr7PMzQcete5fcL1s8ag - repackage-deb-l10n-gu-IN-linux64-shippable/opt: H-sFr83vTHCaW6p5otbrrA - repackage-deb-l10n-he-linux64-shippable/opt: T0822_BcTMGkcKYWw_106g - repackage-deb-l10n-hi-IN-linux64-shippable/opt: B_La3YxtQia2kNDE1EEy3g - repackage-deb-l10n-hr-linux64-shippable/opt: aIaroQVFQNW1jNj8CVPm9g - repackage-deb-l10n-hsb-linux64-shippable/opt: EqeSMFoZSke_SGTnPNLABA - repackage-deb-l10n-hu-linux64-shippable/opt: ch30HfhMSZC5OSf-wkj-Ew - repackage-deb-l10n-hy-AM-linux64-shippable/opt: e4BljbjGSh2IzVJeIRAVgA - repackage-deb-l10n-ia-linux64-shippable/opt: LKtZTVD7QOuArk9K4OE39A - repackage-deb-l10n-id-linux64-shippable/opt: WWR4UWTTTd-anQBT5NKvrg - repackage-deb-l10n-is-linux64-shippable/opt: RRtdz9OcTCSZ0EdLQMgrHA - repackage-deb-l10n-it-linux64-shippable/opt: Rv85BEqBQrOzF-70YEPKIw - repackage-deb-l10n-ja-linux64-shippable/opt: bRrMAFEZSMKLhT3M3O9k5A - repackage-deb-l10n-ka-linux64-shippable/opt: GG8Vt4c0S9qRlA51_Pv_8g - repackage-deb-l10n-kab-linux64-shippable/opt: YNxxM7EKQS2h7uSIFwcDmg - repackage-deb-l10n-kk-linux64-shippable/opt: Otpe3fCoSpePJjyjp5GzfA - repackage-deb-l10n-km-linux64-shippable/opt: P32TdEdiTSeaSq9hZ-_eWQ - repackage-deb-l10n-kn-linux64-shippable/opt: PqA8a_52R4WiEb6kJivB5w - repackage-deb-l10n-ko-linux64-shippable/opt: K5sdCWxkSlyaz6RtLpA7YA - repackage-deb-l10n-lij-linux64-shippable/opt: XCotskQuT_ywqbZ1Fz1IRg - repackage-deb-l10n-lt-linux64-shippable/opt: eq3HqM6lSRWqE6X4w9PJ1w - repackage-deb-l10n-lv-linux64-shippable/opt: Om3w_jhhT3-J_U51aAATKA - repackage-deb-l10n-mk-linux64-shippable/opt: ZRKit2DtSbq-0uAmgKNgPg - repackage-deb-l10n-mr-linux64-shippable/opt: CqayKLTBRJ-3Sr2Npch78Q - repackage-deb-l10n-ms-linux64-shippable/opt: Q6qNTP3gSduBI0Hz3ysQ5A - repackage-deb-l10n-my-linux64-shippable/opt: YfQfwkZdQpCWBQKQEYQfUg - repackage-deb-l10n-nb-NO-linux64-shippable/opt: SytEDn3wRiyb9MqGAAifWg - repackage-deb-l10n-ne-NP-linux64-shippable/opt: HqxLmOvAS-yxsJi_RmENqw - repackage-deb-l10n-nl-linux64-shippable/opt: RD-O7lYyRo2iiboUmRdOeA - repackage-deb-l10n-nn-NO-linux64-shippable/opt: aRwT9ZGLRFqkkW_On6tKow - repackage-deb-l10n-oc-linux64-shippable/opt: V-cJ_Kn6SwaFlzoOdQ5Q8Q - repackage-deb-l10n-pa-IN-linux64-shippable/opt: NO9tVSWkS62zlG7bpN0VnQ - repackage-deb-l10n-pl-linux64-shippable/opt: WBHSek-LTtujJ1ipgaiSUg - repackage-deb-l10n-pt-BR-linux64-shippable/opt: efuaAf8nSp6yUJoFYwqvxA - repackage-deb-l10n-pt-PT-linux64-shippable/opt: ZO9hK-A6RWSrVbfdmiEZJg - repackage-deb-l10n-rm-linux64-shippable/opt: A9AqSjIFRqumuLyC3tf5sg - repackage-deb-l10n-ro-linux64-shippable/opt: CYtABiXcRoiU3_zZL9Q3Qw - repackage-deb-l10n-ru-linux64-shippable/opt: HkpZQQmUSwaw4PAEIr0AHA - repackage-deb-l10n-sat-linux64-shippable/opt: MsuRDA9-TcK05e6ItYPLDw - repackage-deb-l10n-sc-linux64-shippable/opt: b684GqneQx6T7XASrYYijg - repackage-deb-l10n-sco-linux64-shippable/opt: JXxth6bRTOCoxMKB34AWZQ - repackage-deb-l10n-si-linux64-shippable/opt: XG5ylex5Ts2OKFz7Pvj2RA - repackage-deb-l10n-sk-linux64-shippable/opt: KHe2ljFcQviR9clo92HmVQ - repackage-deb-l10n-skr-linux64-shippable/opt: TuB8iDBzTyO2k35CC9niTQ - repackage-deb-l10n-sl-linux64-shippable/opt: Hv8e-fuwStmoybbGHKbHgA - repackage-deb-l10n-son-linux64-shippable/opt: aKP5q_44S_OruEABFn6oTA - repackage-deb-l10n-sq-linux64-shippable/opt: Ryq1jtw0RQGdeGQJA1lz6g - repackage-deb-l10n-sr-linux64-shippable/opt: DkS7rYvaQfqGewvaAJrvwg - repackage-deb-l10n-sv-SE-linux64-shippable/opt: Y_TBncDXQga1NwdzxIzGOw - repackage-deb-l10n-szl-linux64-shippable/opt: Y3aCye6fSSq2-SMXXumrSg - repackage-deb-l10n-ta-linux64-shippable/opt: Nl5Uf1nwQJSSWKJO0I71vQ - repackage-deb-l10n-te-linux64-shippable/opt: eJBusmnJQ12tDixHa21mxw - repackage-deb-l10n-tg-linux64-shippable/opt: R_DIe5C_SwalBbg2FOEAyg - repackage-deb-l10n-th-linux64-shippable/opt: ZFdBKYjuQEyCM2JjlWeMpw - repackage-deb-l10n-tl-linux64-shippable/opt: D3MNT3VnTUiBlPKJ5kCxyg - repackage-deb-l10n-tr-linux64-shippable/opt: Z9rfcwfOR52RYO-aEjxyRA - repackage-deb-l10n-trs-linux64-shippable/opt: IE1c8a9lRUu3pi4bvMOMVg - repackage-deb-l10n-uk-linux64-shippable/opt: CO_ftllPTIq8Bi1x0qeD0w - repackage-deb-l10n-ur-linux64-shippable/opt: DkXCML4cS6CDTlP8vYJOhA - repackage-deb-l10n-uz-linux64-shippable/opt: arEAHFSzRZCIlicS9mMiuQ - repackage-deb-l10n-vi-linux64-shippable/opt: UF6eh338Tz-60PsI_UkbAw - repackage-deb-l10n-xh-linux64-shippable/opt: fA10lvWkRBu5lzYPhfFACQ - repackage-deb-l10n-zh-CN-linux64-shippable/opt: QVIx-TDdQC-S5VxgFtZj5A - repackage-deb-l10n-zh-TW-linux64-shippable/opt: JeWKNHeXTF2qmZUkJ1_ogQ - repackage-deb-linux-shippable/opt: PdNC7eEsQQqpOp-Xo7gYtg - repackage-deb-linux64-aarch64-shippable/opt: D1rmhi-8Q9iY6vyRuxm9jw - repackage-deb-linux64-shippable/opt: fvzRcbP6T2mBiyQudMUcFA - repackage-flatpak-linux64-aarch64-shippable/opt: Z9NacGznS4CDhaPIpRzYqA - repackage-flatpak-linux64-shippable/opt: WdorChWbT0aDmT4RLAH_Fg - repackage-l10n-ach-linux-shippable/opt: V-YJVzEiTQCpRDunD9niSg - repackage-l10n-ach-linux64-aarch64-shippable/opt: cLHgWPziTAWHoiwaooMN0Q - repackage-l10n-ach-linux64-shippable/opt: BIea75ZVTHOBIxirobbhzA - repackage-l10n-ach-macosx64-shippable/opt: QtrXOe91Q4WvQ0NgyjPAbg - repackage-l10n-ach-win32-shippable/opt: SwjCRQYXSWW7xBkNnipwuw - repackage-l10n-ach-win64-aarch64-shippable/opt: XFuxqti6RQ22MhEvRCpksg - repackage-l10n-ach-win64-shippable/opt: Bjb3Tm0hQo-pq2uNXx0SeQ - repackage-l10n-af-linux-shippable/opt: AxF_cP1DSSW6yw-2lR4Cdg - repackage-l10n-af-linux64-aarch64-shippable/opt: X6qFsVyxSrGjHBjkyjmZtw - repackage-l10n-af-linux64-shippable/opt: GTjaSmXCRImdHgHkqEL7MA - repackage-l10n-af-macosx64-shippable/opt: IuLapToKQRODyKxiBePmtA - repackage-l10n-af-win32-shippable/opt: EI--Cy_0TvmKaZTDTDc-Uw - repackage-l10n-af-win64-aarch64-shippable/opt: PPYmP29sRMS3HBvmQgL9PQ - repackage-l10n-af-win64-shippable/opt: LQ9BJwtbSPGUc1jYqkxFfA - repackage-l10n-an-linux-shippable/opt: X2vpwJY5SdyL1zFVgIWtuQ - repackage-l10n-an-linux64-aarch64-shippable/opt: HoGJ8v0cSV2CCAz_dEA_fQ - repackage-l10n-an-linux64-shippable/opt: NHyGNDtITwG6vgXqWI3YrQ - repackage-l10n-an-macosx64-shippable/opt: MLyy2mMnT_m-UDUOHoXeAg - repackage-l10n-an-win32-shippable/opt: PHET7mEcSxuxgngz9_nvmg - repackage-l10n-an-win64-aarch64-shippable/opt: IxNNM4U6R_aFz23tnbjGYw - repackage-l10n-an-win64-shippable/opt: LTdB1HI0TdWYLMt4dLiJdw - repackage-l10n-ar-linux-shippable/opt: dRCEi01jThub_fYxeeYOlg - repackage-l10n-ar-linux64-aarch64-shippable/opt: EtacAQQlQ2aYmJ9Scc2DvQ - repackage-l10n-ar-linux64-shippable/opt: QM1tuwPTQMiXVjSD54gXRg - repackage-l10n-ar-macosx64-shippable/opt: UfLVqUamTGmaF_ZEvt7-3g - repackage-l10n-ar-win32-shippable/opt: QYXijuewTc68qffN6ZgzgQ - repackage-l10n-ar-win64-aarch64-shippable/opt: JpJ5IJujQN2jRPRjnCw66w - repackage-l10n-ar-win64-shippable/opt: Gv5KTnSKSU-id8rfw6mrxg - repackage-l10n-ast-linux-shippable/opt: P7SU1Im1SpWfC8MjSUXsUw - repackage-l10n-ast-linux64-aarch64-shippable/opt: JIxUsgEORMuiT7L_pfhw3Q - repackage-l10n-ast-linux64-shippable/opt: Oh78VcScRAutAAcWFIZneQ - repackage-l10n-ast-macosx64-shippable/opt: KdS9jEPESsO6xf3c8rFuYg - repackage-l10n-ast-win32-shippable/opt: d4xqBMx8RX-q1DKsydqnSg - repackage-l10n-ast-win64-aarch64-shippable/opt: Tu1igk_9RlyA9RbSBZnqlA - repackage-l10n-ast-win64-shippable/opt: MFDbM43OTTKZHdMkjasgPg - repackage-l10n-az-linux-shippable/opt: R3K68GGLRUSU6RP4XnizxA - repackage-l10n-az-linux64-aarch64-shippable/opt: XlGXaf25ScSu3elaJWt68Q - repackage-l10n-az-linux64-shippable/opt: Hf3CIeFYSK2dLSCxK0lwNQ - repackage-l10n-az-macosx64-shippable/opt: CjPLYkouSdGMuGMzu1X6sw - repackage-l10n-az-win32-shippable/opt: ZqUVifGPRLKuWZTAKDT2gw - repackage-l10n-az-win64-aarch64-shippable/opt: EfXn9P16Q66oJPilxyc0eA - repackage-l10n-az-win64-shippable/opt: HZPIBS2YSICAy2OOVA70cA - repackage-l10n-be-linux-shippable/opt: GIFknVUwQQamQ0hywPmEsw - repackage-l10n-be-linux64-aarch64-shippable/opt: Q2bdWx4GRBG7wE_M9TyJ3A - repackage-l10n-be-linux64-shippable/opt: SSTVHjAWT0awtzQoxf9lag - repackage-l10n-be-macosx64-shippable/opt: QrejfK7STSyvgPTMHQCV2w - repackage-l10n-be-win32-shippable/opt: L4igzcrhSK6TwLIj3ge6uQ - repackage-l10n-be-win64-aarch64-shippable/opt: D_lGLmGNSOa52wx8jAJGfw - repackage-l10n-be-win64-shippable/opt: GJRSuDsFSiKEPkKiakkjOQ - repackage-l10n-bg-linux-shippable/opt: d6HSE6IMTl-kv-oM22seCw - repackage-l10n-bg-linux64-aarch64-shippable/opt: YTpmKGsgSAixd2FyngMUDA - repackage-l10n-bg-linux64-shippable/opt: YRpRBcZITzqmf7LBZReFNw - repackage-l10n-bg-macosx64-shippable/opt: cogakjDWQG6YosvYmu0QIA - repackage-l10n-bg-win32-shippable/opt: VTcZ5sB1SaeV5sOD9KL2mQ - repackage-l10n-bg-win64-aarch64-shippable/opt: Lf7CJ3LuTG2PH42n6F1OfQ - repackage-l10n-bg-win64-shippable/opt: BMK9pOqGTjW8N41xTbBpJA - repackage-l10n-bn-linux-shippable/opt: NrpTwdhcStyidXrDH40vYw - repackage-l10n-bn-linux64-aarch64-shippable/opt: eJd6_MSfSWS3aWTMDLQfjA - repackage-l10n-bn-linux64-shippable/opt: Quq2AMDSSNeR_bRjTV_ozQ - repackage-l10n-bn-macosx64-shippable/opt: Aa1lR3u2S86UJK8WVguvGA - repackage-l10n-bn-win32-shippable/opt: PmCEc_c-Si-1Wk1JVvd8Rw - repackage-l10n-bn-win64-aarch64-shippable/opt: U4czMe6vRPGc7PyJ4rDSpw - repackage-l10n-bn-win64-shippable/opt: SuXRmox2QjWmmhQZbnGaww - repackage-l10n-br-linux-shippable/opt: XgPB-IZoQ1-pbfcsCnx-gw - repackage-l10n-br-linux64-aarch64-shippable/opt: er5qwYnRQByi3X2JTVHrsA - repackage-l10n-br-linux64-shippable/opt: ZctxWxbbStaTaqEwjZ8m1Q - repackage-l10n-br-macosx64-shippable/opt: QEMrn9RKQ_W2AoD4h5k8jQ - repackage-l10n-br-win32-shippable/opt: YA-J0dyoRDm3VecNaOYLfg - repackage-l10n-br-win64-aarch64-shippable/opt: XYB5BFRDRXO--u9oNeidvQ - repackage-l10n-br-win64-shippable/opt: CG1euqJbTuSDOy7ENXBxow - repackage-l10n-bs-linux-shippable/opt: Y07tk8NGTneloO_D5rQhjQ - repackage-l10n-bs-linux64-aarch64-shippable/opt: ZECr-KfDQheeOMqhb048Xw - repackage-l10n-bs-linux64-shippable/opt: PRdR_p4dSdybGmUCsU2HvQ - repackage-l10n-bs-macosx64-shippable/opt: WkFe6kL_T5mAF6xQ5O_Dzg - repackage-l10n-bs-win32-shippable/opt: dIYmOSZ9SmeFrLcQIqliDA - repackage-l10n-bs-win64-aarch64-shippable/opt: SJFrpL5ySu2E0VqGTFa9_g - repackage-l10n-bs-win64-shippable/opt: QTIaEtlGSpGAnjaT-qM90w - repackage-l10n-ca-linux-shippable/opt: Wo3pHm8WS4ekJrt_fzoWLQ - repackage-l10n-ca-linux64-aarch64-shippable/opt: durBzyDqSwyHpW44v0l4MQ - repackage-l10n-ca-linux64-shippable/opt: ZUN1_BydQhmm3_iEw_rDwg - repackage-l10n-ca-macosx64-shippable/opt: FxD6Xd3ATZud55TbidZ8tw - repackage-l10n-ca-valencia-linux-shippable/opt: GH83szsyTFWoClzZFmg5tw - repackage-l10n-ca-valencia-linux64-aarch64-shippable/opt: ExyrBj3xSVubj1eMKYc-aQ - repackage-l10n-ca-valencia-linux64-shippable/opt: RjyRS_niSBGH2pUybwltdQ - repackage-l10n-ca-valencia-macosx64-shippable/opt: b2FlM1IhR_CgS_nn0zut8g - repackage-l10n-ca-valencia-win32-shippable/opt: bqdMqFZFQ1G-6kDD8jLknA - repackage-l10n-ca-valencia-win64-aarch64-shippable/opt: SgFAyWu3RYOGEoXsf43RGw - repackage-l10n-ca-valencia-win64-shippable/opt: doDDpBl4SAOS220gse9ueQ - repackage-l10n-ca-win32-shippable/opt: CcOEykfbT0GeVasWc-riWQ - repackage-l10n-ca-win64-aarch64-shippable/opt: U1Bcrb3oSeWSDsj8jlVGYw - repackage-l10n-ca-win64-shippable/opt: ckH7CZXfSOqJxWbQGRx_MQ - repackage-l10n-cak-linux-shippable/opt: eh8ssLtfTVG16VmaBnUVzA - repackage-l10n-cak-linux64-aarch64-shippable/opt: bsVQYwQfRdWGq7uD_UV70g - repackage-l10n-cak-linux64-shippable/opt: DpxOKM2MR1mjgekbSrAjDA - repackage-l10n-cak-macosx64-shippable/opt: WerYBy9tQPuB5JkNMssk_g - repackage-l10n-cak-win32-shippable/opt: APA3kBCyRGCEXhg2YhO_3Q - repackage-l10n-cak-win64-aarch64-shippable/opt: N-LUcrcRTSW_JeS_k30Xrg - repackage-l10n-cak-win64-shippable/opt: Dijl3Dk2SNSfVJkFBCtPUw - repackage-l10n-cs-linux-shippable/opt: anaWad-PT1qfxGBx-epAjA - repackage-l10n-cs-linux64-aarch64-shippable/opt: ArCpywBIQL2ADUHFWHm9tw - repackage-l10n-cs-linux64-shippable/opt: fjtZK85DRyaPBUGzLJtcig - repackage-l10n-cs-macosx64-shippable/opt: K5ZOdX6MQJuSrHRWGGZv-A - repackage-l10n-cs-win32-shippable/opt: KKJicJ0_Qlinv6P5iJpzlA - repackage-l10n-cs-win64-aarch64-shippable/opt: VXwKc68QRCmoM2R5lPw8IA - repackage-l10n-cs-win64-shippable/opt: ekUgrxIzReyOy15POu9qSQ - repackage-l10n-cy-linux-shippable/opt: LXRQV8gBQ0GwEQ3df5Nf6g - repackage-l10n-cy-linux64-aarch64-shippable/opt: UVH8VOCsTRWhJeKksWsebw - repackage-l10n-cy-linux64-shippable/opt: ZTIN18jkTkGbrYAiiTpEzg - repackage-l10n-cy-macosx64-shippable/opt: M6Av91guTbCwdwOfdtBSpA - repackage-l10n-cy-win32-shippable/opt: Kaf0OCTNSsmwsxitvTefHA - repackage-l10n-cy-win64-aarch64-shippable/opt: Y8iIAmJ_TOS0sgvSPBqAtw - repackage-l10n-cy-win64-shippable/opt: aC0qTYVzQYW2-wUxZgyr-A - repackage-l10n-da-linux-shippable/opt: cK5qYgv6QUaetPeM9tgaIQ - repackage-l10n-da-linux64-aarch64-shippable/opt: K4837lVxR3K8m88ui61NTQ - repackage-l10n-da-linux64-shippable/opt: HGtYFrT8QPmDWEsh_POUsg - repackage-l10n-da-macosx64-shippable/opt: J9ssmfStQlO2y5p9KExC_w - repackage-l10n-da-win32-shippable/opt: RDz6q86OQvaaD2tBPRosuA - repackage-l10n-da-win64-aarch64-shippable/opt: aFAR9nduQh23sQeGyJvxoQ - repackage-l10n-da-win64-shippable/opt: Mo371bkFQsOwX0hr4kqw5w - repackage-l10n-de-linux-shippable/opt: b6BXm_f7Qd2hIMjOAXMIeA - repackage-l10n-de-linux64-aarch64-shippable/opt: V-XuZL7yTCydzdA9uJgxmw - repackage-l10n-de-linux64-shippable/opt: JJ4VwrE2TiComRQ9Pxzmxg - repackage-l10n-de-macosx64-shippable/opt: CK0hJpTIRgmRziI0Q5Z_HQ - repackage-l10n-de-win32-shippable/opt: UzK00-6mR3qK1NXrMF8GWQ - repackage-l10n-de-win64-aarch64-shippable/opt: fgya5ROwRSWGo3Rog6FTLQ - repackage-l10n-de-win64-shippable/opt: e4fl51e-SimtwxfDNK5djg - repackage-l10n-dsb-linux-shippable/opt: Xu7woDDYTAWicrby68xLsg - repackage-l10n-dsb-linux64-aarch64-shippable/opt: EKK3MxM4R7iLb1e9mvp_QA - repackage-l10n-dsb-linux64-shippable/opt: OJV3Hqm9Taqmyg1tUU2IFg - repackage-l10n-dsb-macosx64-shippable/opt: QUJp1pNNQQG1fWfe-7pYbg - repackage-l10n-dsb-win32-shippable/opt: Bp8jkf-kTfuu3ggY51qU1g - repackage-l10n-dsb-win64-aarch64-shippable/opt: dw13-rjTQAuZXU5GDT2cow - repackage-l10n-dsb-win64-shippable/opt: YRGkNAAfSJGMely8gcV8qA - repackage-l10n-el-linux-shippable/opt: J7YVpNA6Qfi9B8oQy2CXEw - repackage-l10n-el-linux64-aarch64-shippable/opt: VylI5EecTBa0atLaJoDmLg - repackage-l10n-el-linux64-shippable/opt: fn5kbdywR8iErsaopO4Osg - repackage-l10n-el-macosx64-shippable/opt: OorD4SyRQKmcSmXDTSiOlg - repackage-l10n-el-win32-shippable/opt: IEw5ATRhT_CqQwxwkTZGCg - repackage-l10n-el-win64-aarch64-shippable/opt: PSFf8hSwTFm06gKm5Yo2Tw - repackage-l10n-el-win64-shippable/opt: TRwwFqnJRD6cLCvk88s7Cg - repackage-l10n-en-CA-linux-shippable/opt: PmV4Lt-YROG5sPE4nQxfyQ - repackage-l10n-en-CA-linux64-aarch64-shippable/opt: Ehv-1_wLR4q-mAMMYe1TVw - repackage-l10n-en-CA-linux64-shippable/opt: EWd8xgJ9RfWIrjez5FU1PA - repackage-l10n-en-CA-macosx64-shippable/opt: UHnJNtbOR9icYlCUWx6zhg - repackage-l10n-en-CA-win32-shippable/opt: H6dfuJ_UT6G9Wwct1d9Plw - repackage-l10n-en-CA-win64-aarch64-shippable/opt: Jqdqzy74Rx2Sew5f1IAMrg - repackage-l10n-en-CA-win64-shippable/opt: aq3tY3PTTEqT_vN7yVBANw - repackage-l10n-en-GB-linux-shippable/opt: TQ0hhnDoRd6gh7T2rZQy8w - repackage-l10n-en-GB-linux64-aarch64-shippable/opt: LfSq3zU0Sb2NsOfTM76k2g - repackage-l10n-en-GB-linux64-shippable/opt: aAwXYiaZTvCzhLgOb7MzMw - repackage-l10n-en-GB-macosx64-shippable/opt: Hf0V44qiRniFn-aTn5FJnA - repackage-l10n-en-GB-win32-shippable/opt: BMXfIV3nSv-W6zsyB1e-yw - repackage-l10n-en-GB-win64-aarch64-shippable/opt: P8pKEz4WTWiQRKy3t66wMQ - repackage-l10n-en-GB-win64-shippable/opt: G0ESfRy8QpaNS76uJvAUXg - repackage-l10n-eo-linux-shippable/opt: BVc_WAIqTl-RSfm3KQ3Ybw - repackage-l10n-eo-linux64-aarch64-shippable/opt: X6x5Bp2vSOyDD7hr9XcBUA - repackage-l10n-eo-linux64-shippable/opt: PiLtAeILQ7WQcMnAkZcLPw - repackage-l10n-eo-macosx64-shippable/opt: Zd88W2nBQxWvTlyVPXf9ug - repackage-l10n-eo-win32-shippable/opt: aMerOUwYQhGPkif3fie7pw - repackage-l10n-eo-win64-aarch64-shippable/opt: MkGrRGtzSxe49shRpAPjQQ - repackage-l10n-eo-win64-shippable/opt: JuwSNcg7TB6hQhE3pz2bcQ - repackage-l10n-es-AR-linux-shippable/opt: PFx_JdQ-QcOAKuvtP_A__Q - repackage-l10n-es-AR-linux64-aarch64-shippable/opt: GcbPC0ZkTT-WJmHD55VBug - repackage-l10n-es-AR-linux64-shippable/opt: L94x82dDS463NZvRtJn_Mw - repackage-l10n-es-AR-macosx64-shippable/opt: CptOYQp9Qa610uZBpvxpSA - repackage-l10n-es-AR-win32-shippable/opt: XivO-bWSRX2N2Sd66MVytg - repackage-l10n-es-AR-win64-aarch64-shippable/opt: ANagJKddRAanPB6irqWhDA - repackage-l10n-es-AR-win64-shippable/opt: Wcn7myQgRZSZBRXnT1tu-g - repackage-l10n-es-CL-linux-shippable/opt: KdrOmACXTzuuKcIoXuWRZw - repackage-l10n-es-CL-linux64-aarch64-shippable/opt: WbrBoTpgRg2aeu92PXonpg - repackage-l10n-es-CL-linux64-shippable/opt: Et4e4i8GRmKqWJ_FItneig - repackage-l10n-es-CL-macosx64-shippable/opt: Ov2j_hXcSvqIE84SjURt-A - repackage-l10n-es-CL-win32-shippable/opt: LCP_p6k5TNSEAenKcPeHbA - repackage-l10n-es-CL-win64-aarch64-shippable/opt: WaAsu1gMRJOnXJp4lkfGUg - repackage-l10n-es-CL-win64-shippable/opt: Bs7uEeryQ-iSdi6vVz55Gg - repackage-l10n-es-ES-linux-shippable/opt: CWvDfRJaQ8qf2twd9f8L5Q - repackage-l10n-es-ES-linux64-aarch64-shippable/opt: Et8UJC9xQ1uk0q-xxPZIrQ - repackage-l10n-es-ES-linux64-shippable/opt: C1pgXZEOT3mBNzd2-BBX1Q - repackage-l10n-es-ES-macosx64-shippable/opt: f1ShJpEHRcuLjhMWM6JxjA - repackage-l10n-es-ES-win32-shippable/opt: VbkK0sKcS5atHQsJwDqYbg - repackage-l10n-es-ES-win64-aarch64-shippable/opt: ep-Rd5MQSOmGwurAioRE8g - repackage-l10n-es-ES-win64-shippable/opt: CbbcU9KLS7mwiCWvRtPS9w - repackage-l10n-es-MX-linux-shippable/opt: dkNGD03NSiSzSp5ZQYOECA - repackage-l10n-es-MX-linux64-aarch64-shippable/opt: En3tw8XZSWSORaFuSCEMFg - repackage-l10n-es-MX-linux64-shippable/opt: IvRkeN5RQDuONAaVcXW1Bw - repackage-l10n-es-MX-macosx64-shippable/opt: cdYGsIvIQwyhqazrCHX3iA - repackage-l10n-es-MX-win32-shippable/opt: XHWxRbkTTeqbz0ifaz9v-Q - repackage-l10n-es-MX-win64-aarch64-shippable/opt: YnTY0daySoKHsE5sQ6CgYw - repackage-l10n-es-MX-win64-shippable/opt: XmlmFjJkSYOEky0Ilt787Q - repackage-l10n-et-linux-shippable/opt: MIKi0SK7RuWNN2ZyJRQ_gQ - repackage-l10n-et-linux64-aarch64-shippable/opt: DcJUc5DmRMO-RGXBHwSsUA - repackage-l10n-et-linux64-shippable/opt: MBQHlHCXR5WogjxbygeUHQ - repackage-l10n-et-macosx64-shippable/opt: fMS2bcRsQIG3aDZJWAwiwQ - repackage-l10n-et-win32-shippable/opt: QF8dSq84QO2yUrnWNYUD4Q - repackage-l10n-et-win64-aarch64-shippable/opt: L32a-2NcSmCUGuw6oZZiTw - repackage-l10n-et-win64-shippable/opt: Ev1_x_n8T3m1VO5pyZCFDA - repackage-l10n-eu-linux-shippable/opt: bcFHiGLSQwKMI5JDC0rdnQ - repackage-l10n-eu-linux64-aarch64-shippable/opt: fBZjHCf2QsOc11C0phEbgw - repackage-l10n-eu-linux64-shippable/opt: L-PFSzwgTsOX1hKDL3yQKg - repackage-l10n-eu-macosx64-shippable/opt: HqnaOLSNSpSGpA1J5BaTVA - repackage-l10n-eu-win32-shippable/opt: D_qo1EfrRjiuQqQ5hJyRzA - repackage-l10n-eu-win64-aarch64-shippable/opt: eBT4w3kRS0umRd797y5jSg - repackage-l10n-eu-win64-shippable/opt: eFjeoX3RQmWwLZ5E0SNy_A - repackage-l10n-fa-linux-shippable/opt: VfRX8lGKT26RANGFSubEiA - repackage-l10n-fa-linux64-aarch64-shippable/opt: FxRuY6mMQ0Gi2vqI7faZVQ - repackage-l10n-fa-linux64-shippable/opt: fXjVq-6ESMCm_rlLoRRABw - repackage-l10n-fa-macosx64-shippable/opt: bMrLxEdlRf2y_Vx9a8uLXA - repackage-l10n-fa-win32-shippable/opt: ZNfAlJaKRlu3nZGIdaM1fQ - repackage-l10n-fa-win64-aarch64-shippable/opt: LK_e0_kSQvCTOenyy3sotw - repackage-l10n-fa-win64-shippable/opt: AeN_22STTnSRtQeQXw9HYw - repackage-l10n-ff-linux-shippable/opt: Ou85pHdaQ8OlH2ANV_7Agg - repackage-l10n-ff-linux64-aarch64-shippable/opt: MoaQ7JzdRzWRA7Id-WSM8w - repackage-l10n-ff-linux64-shippable/opt: WXF_1gBzThuOsCR9Jyt4IA - repackage-l10n-ff-macosx64-shippable/opt: H3Evq0OpTMaJR1lwwmdY7A - repackage-l10n-ff-win32-shippable/opt: ElAoMUWRS5Kra6FYXvdZmg - repackage-l10n-ff-win64-aarch64-shippable/opt: KG5Q-XdqQLmmCYk7sS5GpQ - repackage-l10n-ff-win64-shippable/opt: QVmRfiywRXq3gxK0hBvkrw - repackage-l10n-fi-linux-shippable/opt: aVTue_r0Se-p0biqZzSiDg - repackage-l10n-fi-linux64-aarch64-shippable/opt: csm2CkCqSe6A1MWXwJXy_Q - repackage-l10n-fi-linux64-shippable/opt: NJuZ_SdxT3yeskX4bBdvJA - repackage-l10n-fi-macosx64-shippable/opt: exFMf8SSRz68cWwiU_Kiqw - repackage-l10n-fi-win32-shippable/opt: aqjXRYgnQ96xYUmLT71y8A - repackage-l10n-fi-win64-aarch64-shippable/opt: E7M43DtrS_O2iz6LURbdmA - repackage-l10n-fi-win64-shippable/opt: PnYAyol0Ro6kwoX_Y6FBig - repackage-l10n-fr-linux-shippable/opt: Ke08dFV9STCzBJp_vZBFGg - repackage-l10n-fr-linux64-aarch64-shippable/opt: eSLumlcZRfa7vD0MnY5tzg - repackage-l10n-fr-linux64-shippable/opt: f9LLp9bDS0eP3uPll0clgg - repackage-l10n-fr-macosx64-shippable/opt: NIwIe8UgRey3XBvsC5trig - repackage-l10n-fr-win32-shippable/opt: TEPTey2sRFKMvPhnA5ss9w - repackage-l10n-fr-win64-aarch64-shippable/opt: Znggfnu4TTaHWcPs5UurYA - repackage-l10n-fr-win64-shippable/opt: POXerdb5SK-rvurMsCIutw - repackage-l10n-fur-linux-shippable/opt: PKfi5xsnTKWU3owV8sLZYQ - repackage-l10n-fur-linux64-aarch64-shippable/opt: cL5P7ko6RmS8hR5AqPKgMQ - repackage-l10n-fur-linux64-shippable/opt: PdWaE-SYRHSVbLvhLnL-IQ - repackage-l10n-fur-macosx64-shippable/opt: TelY6VJUScWJ7iVAwwH3aw - repackage-l10n-fur-win32-shippable/opt: cPfa1wpxRGeSdKhpWNTJIw - repackage-l10n-fur-win64-aarch64-shippable/opt: GUIPhOyPRuOFe-nRMVZGVg - repackage-l10n-fur-win64-shippable/opt: f2x5kviQSuKl-dcrCWYC1Q - repackage-l10n-fy-NL-linux-shippable/opt: IXrGkGJcS7SGtlc80NxzYQ - repackage-l10n-fy-NL-linux64-aarch64-shippable/opt: FkbYaCMvQ2GP1ycAVJSGAA - repackage-l10n-fy-NL-linux64-shippable/opt: PlW-KskSRPq1O9Pbg5DFQQ - repackage-l10n-fy-NL-macosx64-shippable/opt: EaQVjyy0T9SN2rGLYK7ayw - repackage-l10n-fy-NL-win32-shippable/opt: Aj6dvP-6TlifT-LEPuTFdg - repackage-l10n-fy-NL-win64-aarch64-shippable/opt: a5CY8sLCTcy7_MhCgI7jKw - repackage-l10n-fy-NL-win64-shippable/opt: W2gd270QSYq1DOwEqNEgQg - repackage-l10n-ga-IE-linux-shippable/opt: QIqNStdKSwav2mhedHNJEg - repackage-l10n-ga-IE-linux64-aarch64-shippable/opt: LIyRaegyRQKgaOWWehWMJA - repackage-l10n-ga-IE-linux64-shippable/opt: QfiXHDW1RNOl46mhCdKP-g - repackage-l10n-ga-IE-macosx64-shippable/opt: fzhUR4EySQKJ3ecga8zO9g - repackage-l10n-ga-IE-win32-shippable/opt: JdgzasaFRp2dk3a7_l8QGg - repackage-l10n-ga-IE-win64-aarch64-shippable/opt: JDwPk_THRmKGmGWb4XTHOg - repackage-l10n-ga-IE-win64-shippable/opt: a-CpS-xmTA2JPIE7t-mSyg - repackage-l10n-gd-linux-shippable/opt: HgCa_QOMSXOh-C-oNVIy0w - repackage-l10n-gd-linux64-aarch64-shippable/opt: Hlyat2P_SjqnXgCtreEGSQ - repackage-l10n-gd-linux64-shippable/opt: Z2dTtdbpTUa5HGwr0UGNnw - repackage-l10n-gd-macosx64-shippable/opt: PofMNrAoTXeIggIOyyHehA - repackage-l10n-gd-win32-shippable/opt: Bu0rZGENQd6j8csqqTwwIg - repackage-l10n-gd-win64-aarch64-shippable/opt: Gww8qFxuRV-UVOsEXhB06Q - repackage-l10n-gd-win64-shippable/opt: Ao3F-S0xR8itC0ZRbrjipA - repackage-l10n-gl-linux-shippable/opt: H8XoEIMNRTSDZcH-1RyZZg - repackage-l10n-gl-linux64-aarch64-shippable/opt: dC3pmw6HSgi8DO7UH-g39g - repackage-l10n-gl-linux64-shippable/opt: S4QYESyrRmS5BljnLbuenw - repackage-l10n-gl-macosx64-shippable/opt: TvtIwVuqTEuTD4-74GMe3w - repackage-l10n-gl-win32-shippable/opt: cYh7ejE2SeOzFqo4LqN8eg - repackage-l10n-gl-win64-aarch64-shippable/opt: Jk2n_fr4Qfe1QdAv4VwgRg - repackage-l10n-gl-win64-shippable/opt: IZmoXB4xTe-QghIR66LwvQ - repackage-l10n-gn-linux-shippable/opt: LxBulpM9SJyGhaUrZjSBJA - repackage-l10n-gn-linux64-aarch64-shippable/opt: UpZtOHvTRWmQ1K76R9VYgw - repackage-l10n-gn-linux64-shippable/opt: SBXJzd5MSDuvHPSuwxd7Nw - repackage-l10n-gn-macosx64-shippable/opt: fma7pJkQQDuyaO8SCuLraQ - repackage-l10n-gn-win32-shippable/opt: MDxH0UZ4Q_aPGHSRNd7BfA - repackage-l10n-gn-win64-aarch64-shippable/opt: GoeekwTGS4q3y_DppDZO-g - repackage-l10n-gn-win64-shippable/opt: IxJq_OwYTemk_rSJDTm1Ug - repackage-l10n-gu-IN-linux-shippable/opt: GPNRK4kWS-CDDYg-_q9feQ - repackage-l10n-gu-IN-linux64-aarch64-shippable/opt: M_6N6pFqSIKg2WZ625vK_A - repackage-l10n-gu-IN-linux64-shippable/opt: UyyLlRoPRh-ga4XkGKlcdg - repackage-l10n-gu-IN-macosx64-shippable/opt: Fgnf2eoWQXOiq8q74MvSjA - repackage-l10n-gu-IN-win32-shippable/opt: adOogGqTQh27uVwQl-_ZHg - repackage-l10n-gu-IN-win64-aarch64-shippable/opt: KFlQXoRiSHuVYcaku5NgSw - repackage-l10n-gu-IN-win64-shippable/opt: BkrJe5gaSUOTtfOOMmumGg - repackage-l10n-he-linux-shippable/opt: Fzaz6oQAS1ScdlD4Y0EQTA - repackage-l10n-he-linux64-aarch64-shippable/opt: bGzCoGwZQ0u8P3BfWMBbOQ - repackage-l10n-he-linux64-shippable/opt: WwOsAaB7T7e_kMt0KSvGNQ - repackage-l10n-he-macosx64-shippable/opt: LxucfAFjRNKVWHPsXCDGJw - repackage-l10n-he-win32-shippable/opt: EkJWJskRQ9qkgPaVVrQsiA - repackage-l10n-he-win64-aarch64-shippable/opt: K3PUZfFFRnOcp86TgbSk5w - repackage-l10n-he-win64-shippable/opt: SlmhC3LYQAmztH6tAqxarQ - repackage-l10n-hi-IN-linux-shippable/opt: YFKUmF0pTjmKweD9DPXPSw - repackage-l10n-hi-IN-linux64-aarch64-shippable/opt: TcAEVYcMTviPSuOpKZuOvw - repackage-l10n-hi-IN-linux64-shippable/opt: SXJf85gXQlmnlIixeRp65Q - repackage-l10n-hi-IN-macosx64-shippable/opt: CwCVlEJnQha_0svwiQU0nQ - repackage-l10n-hi-IN-win32-shippable/opt: VsHzFH0KT4ukoDDtrRJJAw - repackage-l10n-hi-IN-win64-aarch64-shippable/opt: BzWMFJLESv2Lua8uq-bvlQ - repackage-l10n-hi-IN-win64-shippable/opt: WwWDGBpOR86idzUQ6StvvQ - repackage-l10n-hr-linux-shippable/opt: Ga_Bq1C_TsyV6XzuLpxRUg - repackage-l10n-hr-linux64-aarch64-shippable/opt: L963NPlOQjC0wlwSd0xUvg - repackage-l10n-hr-linux64-shippable/opt: SCHmCHIVSU6o8una4ItFKQ - repackage-l10n-hr-macosx64-shippable/opt: NQjXSFjLTEqpICz14S9LjA - repackage-l10n-hr-win32-shippable/opt: Y3Aj6_AwRFuK3M3StHt1BA - repackage-l10n-hr-win64-aarch64-shippable/opt: bEt82G-RRja9ToMhCyrukA - repackage-l10n-hr-win64-shippable/opt: L05NtqRlR6Crz8ngrUdM4A - repackage-l10n-hsb-linux-shippable/opt: IvtqF_VpSo2bHLqHu9MKow - repackage-l10n-hsb-linux64-aarch64-shippable/opt: ZIIt1f-KT_madrUboX_KYg - repackage-l10n-hsb-linux64-shippable/opt: K_XaIN1JSImgekHD-BIBlg - repackage-l10n-hsb-macosx64-shippable/opt: Vf3Z_f8BQfuMWtva6OTmZQ - repackage-l10n-hsb-win32-shippable/opt: HoS5qheDQM-1MyY4SwohUg - repackage-l10n-hsb-win64-aarch64-shippable/opt: HMc08_iKS7O1uKbuZKuaMQ - repackage-l10n-hsb-win64-shippable/opt: IfLG6a7pTNC8TW2LeIdPVQ - repackage-l10n-hu-linux-shippable/opt: EjKyc-TpTjSO3yrovDbEaQ - repackage-l10n-hu-linux64-aarch64-shippable/opt: ROqyH60KTLCtv1WUA7vaXg - repackage-l10n-hu-linux64-shippable/opt: OJplNMNdR2-mLR_8ORTpOQ - repackage-l10n-hu-macosx64-shippable/opt: M0H4zkpaT3q1N7FpmzPLjA - repackage-l10n-hu-win32-shippable/opt: ZHF-l78hQjugbymS9H6J_g - repackage-l10n-hu-win64-aarch64-shippable/opt: cHIkW_ptS4eNlI44IEs52g - repackage-l10n-hu-win64-shippable/opt: U7FeS2zcTmG1kiweSCpjqw - repackage-l10n-hy-AM-linux-shippable/opt: DXsIZhnNTdGBAh7iEKPJpQ - repackage-l10n-hy-AM-linux64-aarch64-shippable/opt: GjujIwG2SNCTJPfnzOxjdQ - repackage-l10n-hy-AM-linux64-shippable/opt: MqC0Y1kfTX2J-Hvw9NULeQ - repackage-l10n-hy-AM-macosx64-shippable/opt: Cm1Zj9QbTx2dmxQVAOeqtQ - repackage-l10n-hy-AM-win32-shippable/opt: N5TzgWJEQm-Qhw_s4eelwQ - repackage-l10n-hy-AM-win64-aarch64-shippable/opt: KofNVyijQqSoea3UOW1KUQ - repackage-l10n-hy-AM-win64-shippable/opt: cZ_E-XBQQc-BZcXJBWwjMQ - repackage-l10n-ia-linux-shippable/opt: TpFMZk35QRqYCNefd6pPLA - repackage-l10n-ia-linux64-aarch64-shippable/opt: fQ4W-JG5SNCAoREjGpwftg - repackage-l10n-ia-linux64-shippable/opt: OET_ec2ZQEaaR30SMoazRA - repackage-l10n-ia-macosx64-shippable/opt: BLie0tTjSaGCqZOJj9nd0Q - repackage-l10n-ia-win32-shippable/opt: FwLt8S6nSHupvymwve3tQA - repackage-l10n-ia-win64-aarch64-shippable/opt: B_Niy7X3QrWJbWmX91X5gA - repackage-l10n-ia-win64-shippable/opt: fDfP8TqPS7C1vnlCcchGjA - repackage-l10n-id-linux-shippable/opt: SExJ_3n8Q5OzqLapar6F3A - repackage-l10n-id-linux64-aarch64-shippable/opt: VYmNV-3qShyo2rAJYsiP3w - repackage-l10n-id-linux64-shippable/opt: SE3d3lUOTNyhc9V92KFSoQ - repackage-l10n-id-macosx64-shippable/opt: CnzH-dCaQDa68aQaB8ZrrA - repackage-l10n-id-win32-shippable/opt: fRZ1mfjxQsigYHoGVfoY0A - repackage-l10n-id-win64-aarch64-shippable/opt: PMluufb_QJ6mPK2_uePizg - repackage-l10n-id-win64-shippable/opt: UpIfx4pcQ4SYm5LpKte_8g - repackage-l10n-is-linux-shippable/opt: CmyOJhwoTrWGADMEy5sjtQ - repackage-l10n-is-linux64-aarch64-shippable/opt: OGx3G7XSRhSIKTQO7IiRYg - repackage-l10n-is-linux64-shippable/opt: CYMr6f5rS8ut3R6O_owXVw - repackage-l10n-is-macosx64-shippable/opt: Zn7KwwY0SDWPzwGas579vA - repackage-l10n-is-win32-shippable/opt: OhZow1BMRJy6tk1RHHnrLg - repackage-l10n-is-win64-aarch64-shippable/opt: EBLn5J6MRl-Pyt06lS1DRw - repackage-l10n-is-win64-shippable/opt: HaHrbucBTUG1hC_Ri7HDPw - repackage-l10n-it-linux-shippable/opt: IvqryjUYRqW0g10JDMlZ2Q - repackage-l10n-it-linux64-aarch64-shippable/opt: Gvqm6eXBSiafR-yjmou_DQ - repackage-l10n-it-linux64-shippable/opt: Tfdr8pZCSn6CqNQVMPQx-A - repackage-l10n-it-macosx64-shippable/opt: PIU58WdsSdqa2mvb2A6WRg - repackage-l10n-it-win32-shippable/opt: e5xmBc5uQgKfZeQ4rG8icQ - repackage-l10n-it-win64-aarch64-shippable/opt: LgNGc7BLQPuWTYpqvDqUOQ - repackage-l10n-it-win64-shippable/opt: TgF_NjXSTQSegLcGUuBKLg - repackage-l10n-ja-JP-mac-macosx64-shippable/opt: Z8-96ZyURg6WD5K86vN3OA - repackage-l10n-ja-linux-shippable/opt: KjV2pxQOQQSiAzy8-jztUQ - repackage-l10n-ja-linux64-aarch64-shippable/opt: KU0Ec94-Q3-CAlLysBENVQ - repackage-l10n-ja-linux64-shippable/opt: Gy1pZmvqSkOfymuHOG9jMw - repackage-l10n-ja-win32-shippable/opt: RsfEfa-wR0KBQkrKwyR1zw - repackage-l10n-ja-win64-aarch64-shippable/opt: DusmzrPZRN29bQxrvRbFqw - repackage-l10n-ja-win64-shippable/opt: VumXtbjWR9y_MhBnyUqgLg - repackage-l10n-ka-linux-shippable/opt: Kami49C3SYej_AUzhbaKnQ - repackage-l10n-ka-linux64-aarch64-shippable/opt: MoPoU9XaTzWpj-T26MTQWQ - repackage-l10n-ka-linux64-shippable/opt: dfjF05CDTByv8kaN8mH7ug - repackage-l10n-ka-macosx64-shippable/opt: dcVtu4vyRFS1uNGxgCsvaA - repackage-l10n-ka-win32-shippable/opt: LJQv0_N5T7WTV_y4JfqJ5w - repackage-l10n-ka-win64-aarch64-shippable/opt: P7Ft-7lxSeCtmqxHxUiL6Q - repackage-l10n-ka-win64-shippable/opt: bvkp5nY9Tr-0xsJOVGIvRQ - repackage-l10n-kab-linux-shippable/opt: IjwejzihTGKS5rv98ULumg - repackage-l10n-kab-linux64-aarch64-shippable/opt: JFLIO97hSN2wRu8RmkKBlQ - repackage-l10n-kab-linux64-shippable/opt: IkjdkZn4Roqh5BDZZ8vUZA - repackage-l10n-kab-macosx64-shippable/opt: NyZdUvY8RPO79oBVhNh2Zw - repackage-l10n-kab-win32-shippable/opt: Ulk56xNcTjSCrwPCIJr3Bg - repackage-l10n-kab-win64-aarch64-shippable/opt: VAekUbzbQjmFdtdfnA-RbA - repackage-l10n-kab-win64-shippable/opt: CqHvs1lUQqqXyy9A__-EQw - repackage-l10n-kk-linux-shippable/opt: GxADtMzdQuqirj98bnGGOg - repackage-l10n-kk-linux64-aarch64-shippable/opt: C_9rKo12S-6kkxG1Z_rhnQ - repackage-l10n-kk-linux64-shippable/opt: H2tlkNDjRMubtDKxxoWEFA - repackage-l10n-kk-macosx64-shippable/opt: R-nP6Y3LQwSfoUzc09ADKw - repackage-l10n-kk-win32-shippable/opt: IXzQQ7G5QKKDexIiMkhmMQ - repackage-l10n-kk-win64-aarch64-shippable/opt: BpuTIaDHSeiZvBvPGGVBww - repackage-l10n-kk-win64-shippable/opt: HnM6l0j0SiOxiZ05knqiWg - repackage-l10n-km-linux-shippable/opt: ZzlNXsQESxmGYiW9f4EU1Q - repackage-l10n-km-linux64-aarch64-shippable/opt: QAXJ9YpHTj2V0EE_2LzOMg - repackage-l10n-km-linux64-shippable/opt: Ow0sCKF8Q62Mnvx6Q7cl6g - repackage-l10n-km-macosx64-shippable/opt: Y-u5IeisSK6jgrE7v0KjAA - repackage-l10n-km-win32-shippable/opt: CW-stdM9Q5esxeLk6jQK4g - repackage-l10n-km-win64-aarch64-shippable/opt: UA6R4WaOSBiosO5aWsaEkQ - repackage-l10n-km-win64-shippable/opt: No8APgKuQqmQv-8UF0vmFA - repackage-l10n-kn-linux-shippable/opt: UkkpgEDHRwWhjynVBpXBsg - repackage-l10n-kn-linux64-aarch64-shippable/opt: KNIVv_RrQji5dMq6FXHhJw - repackage-l10n-kn-linux64-shippable/opt: Xd-ZwDWiSoCPM_VRX6BX2Q - repackage-l10n-kn-macosx64-shippable/opt: VMV23pfLRb6l7SiI5aQSDw - repackage-l10n-kn-win32-shippable/opt: f4Mn2PwER2C4i9sKYB64GA - repackage-l10n-kn-win64-aarch64-shippable/opt: ZuO5EtBBQBaL1rlva6Nzrw - repackage-l10n-kn-win64-shippable/opt: drCgSWUgSeSLl2r8nUfAWQ - repackage-l10n-ko-linux-shippable/opt: HTIhYJsuQlyGJ_hShG8pBA - repackage-l10n-ko-linux64-aarch64-shippable/opt: ZkPC2n0mSrOgj4AgvK1wow - repackage-l10n-ko-linux64-shippable/opt: XH7hOrizRGm8qx-njzzFAA - repackage-l10n-ko-macosx64-shippable/opt: StJVarkKTde00jvKCM4NxQ - repackage-l10n-ko-win32-shippable/opt: YlzndowsQxSL5dkALxxLlA - repackage-l10n-ko-win64-aarch64-shippable/opt: OqE5u-yFS4WLpbAQS0BxlA - repackage-l10n-ko-win64-shippable/opt: L-NdS-DqQFe_nw_PWchtew - repackage-l10n-lij-linux-shippable/opt: dN7aY96YR7S2KJBMloH5Dg - repackage-l10n-lij-linux64-aarch64-shippable/opt: UNx4ulDMRx-FRj7abNnrOQ - repackage-l10n-lij-linux64-shippable/opt: J5QONnkET6y9hUiBch-YNQ - repackage-l10n-lij-macosx64-shippable/opt: UqF51kCLSJWUocC-yLHHtQ - repackage-l10n-lij-win32-shippable/opt: cXQ-xKKZQsqdUJgSWD6ivg - repackage-l10n-lij-win64-aarch64-shippable/opt: E4z_39U_Q6eBeXIhuBqH9w - repackage-l10n-lij-win64-shippable/opt: TirVVNI6QTG-r-4ajMe-NQ - repackage-l10n-lt-linux-shippable/opt: GkGNT2JbS7qeDFjYpcGDzA - repackage-l10n-lt-linux64-aarch64-shippable/opt: XUgH0wr9TyCNcNu4b2M-Ag - repackage-l10n-lt-linux64-shippable/opt: XKk3rig3RYulEA4xqrFFOA - repackage-l10n-lt-macosx64-shippable/opt: QSpruIG0RvGGQX0VSMYCzg - repackage-l10n-lt-win32-shippable/opt: Zn1ulKsnRZuWqlKUAzrfZA - repackage-l10n-lt-win64-aarch64-shippable/opt: Fbv7BB5CRW24Jy1eLEt8Sg - repackage-l10n-lt-win64-shippable/opt: NfPCz0NJT_q1TIBw7PRNUg - repackage-l10n-lv-linux-shippable/opt: cmyzNLjLTL-M3fYt9Qm3DA - repackage-l10n-lv-linux64-aarch64-shippable/opt: Gppw_k7XSPudPhyn3vzViw - repackage-l10n-lv-linux64-shippable/opt: YM6BpdEcSseCwsvq4SWhsw - repackage-l10n-lv-macosx64-shippable/opt: Dh1DZYJ0TuWNo1wb5jWm1A - repackage-l10n-lv-win32-shippable/opt: LbSlhcweQ_iGvLSjafe6OA - repackage-l10n-lv-win64-aarch64-shippable/opt: ONUvB61HRfOXh0nqeghNRQ - repackage-l10n-lv-win64-shippable/opt: FvqhSOScSZykJnkRj49y2Q - repackage-l10n-mk-linux-shippable/opt: c_6wSf23TxyZhwJNgwxEkw - repackage-l10n-mk-linux64-aarch64-shippable/opt: dioeNyoPRF-hL8I_4-avDg - repackage-l10n-mk-linux64-shippable/opt: Yg-_TDsrRwKVWVHtQ_tVRg - repackage-l10n-mk-macosx64-shippable/opt: NobYCQayQZqMvOed0f2vcQ - repackage-l10n-mk-win32-shippable/opt: RKIEspvuRQ6uqxB0_PhQMg - repackage-l10n-mk-win64-aarch64-shippable/opt: QCwMluudQKCXOpC25cD5Qg - repackage-l10n-mk-win64-shippable/opt: ILhGZkfdQa6gnSzFMfMgzA - repackage-l10n-mr-linux-shippable/opt: KaIN6vkhRGSaFaPrMvalSg - repackage-l10n-mr-linux64-aarch64-shippable/opt: b4YfkN_JTEyj8O11MrGwAg - repackage-l10n-mr-linux64-shippable/opt: dhZsm7lFT_S9JbI6MBLo7g - repackage-l10n-mr-macosx64-shippable/opt: dML1FEtKQLelIujsYJhv7A - repackage-l10n-mr-win32-shippable/opt: X3pa1fqvRRekcOElMTBn_A - repackage-l10n-mr-win64-aarch64-shippable/opt: Ro62aP-vQXOFZE67AtFuvA - repackage-l10n-mr-win64-shippable/opt: MUxHh9m5Sx6hfoz91dIJAQ - repackage-l10n-ms-linux-shippable/opt: JmzpcHNQQDSxXpOLoPy55A - repackage-l10n-ms-linux64-aarch64-shippable/opt: BC-nh044RmWU4lTwFO0QxQ - repackage-l10n-ms-linux64-shippable/opt: cNfmIhepTR635QSesLZy7Q - repackage-l10n-ms-macosx64-shippable/opt: BDxCqSA5RW2Ztn65CtZKAg - repackage-l10n-ms-win32-shippable/opt: Sp-GtKwnRUC1vhdnQxAqwg - repackage-l10n-ms-win64-aarch64-shippable/opt: f7SQ3roVRZaT-RRlHZSjBA - repackage-l10n-ms-win64-shippable/opt: N4H4oHAYQLanbCo5SOMN_w - repackage-l10n-my-linux-shippable/opt: exMB0K9rSAao97Dutwp9EA - repackage-l10n-my-linux64-aarch64-shippable/opt: OfMfmXipSrKGDrIoSeDieA - repackage-l10n-my-linux64-shippable/opt: JuBdR2JARRCg0nzYtxxXMQ - repackage-l10n-my-macosx64-shippable/opt: NBiSV1jAQ9a58BJgifDuAw - repackage-l10n-my-win32-shippable/opt: ZE7mhkT0RbWDuVdvV-9ssQ - repackage-l10n-my-win64-aarch64-shippable/opt: UrneTjevQ4Swt6bLUzIrfw - repackage-l10n-my-win64-shippable/opt: Dw9muIlxTd6TpbF5PZOgvQ - repackage-l10n-nb-NO-linux-shippable/opt: QbGPXtzSQiGinxzO-M2HZw - repackage-l10n-nb-NO-linux64-aarch64-shippable/opt: fWovq60yR9ulcFAzFSDaZg - repackage-l10n-nb-NO-linux64-shippable/opt: MuSvfGUbRwqEdn3S9wZChg - repackage-l10n-nb-NO-macosx64-shippable/opt: a0aNYkbWSyWnwxB5lJxXUA - repackage-l10n-nb-NO-win32-shippable/opt: CLhg30BeQNawJJmRr9oBfA - repackage-l10n-nb-NO-win64-aarch64-shippable/opt: WyIPT0XFTgizDxCc6Y1rIg - repackage-l10n-nb-NO-win64-shippable/opt: FwU2XX_LQ16Am8rGGQpMMg - repackage-l10n-ne-NP-linux-shippable/opt: AP5X7l2KR0Op8gbrl84G8A - repackage-l10n-ne-NP-linux64-aarch64-shippable/opt: M4Vr7Hw7TOC09AHwo-r4nw - repackage-l10n-ne-NP-linux64-shippable/opt: TolMKebjQl6F4actQcR4ZQ - repackage-l10n-ne-NP-macosx64-shippable/opt: DDjYeqy5TuKPtfNPVt9x6g - repackage-l10n-ne-NP-win32-shippable/opt: aU3T8GvDQ_mJYlpMeXcWFQ - repackage-l10n-ne-NP-win64-aarch64-shippable/opt: Xnaon1EzTUmEyRyLQM9w7Q - repackage-l10n-ne-NP-win64-shippable/opt: PbhDmJ3FQbWj4Jj24KXEtA - repackage-l10n-nl-linux-shippable/opt: TvlXeiYqRjaAfXsnb1e_IA - repackage-l10n-nl-linux64-aarch64-shippable/opt: ManiMdwnT4C-9-l2XS3qXw - repackage-l10n-nl-linux64-shippable/opt: ZMuCf48mTTC00oelOZ72jQ - repackage-l10n-nl-macosx64-shippable/opt: BdtGNUNvR_CKQiOMEdZAMQ - repackage-l10n-nl-win32-shippable/opt: fVlW7VwSSCSOzdPMwUt5BQ - repackage-l10n-nl-win64-aarch64-shippable/opt: K3-CC709QPiC90LO2qB2WQ - repackage-l10n-nl-win64-shippable/opt: T-LCDdaDSn-JI5Ye4pK0pA - repackage-l10n-nn-NO-linux-shippable/opt: fai8fr-8QUCu_I0NMqQokw - repackage-l10n-nn-NO-linux64-aarch64-shippable/opt: HvlupZoRR1mKfN5mnABCbQ - repackage-l10n-nn-NO-linux64-shippable/opt: Bu3xGKsoRb-kgZtBJYriMw - repackage-l10n-nn-NO-macosx64-shippable/opt: EMYmqp_bQVKoCOlbccRbsQ - repackage-l10n-nn-NO-win32-shippable/opt: d1m_t4LgSByvV5VtC_iO4w - repackage-l10n-nn-NO-win64-aarch64-shippable/opt: LqCjrFSJTBy3BlwFPxZj6Q - repackage-l10n-nn-NO-win64-shippable/opt: Z7y2puO1TCCb0FhdLVq7rg - repackage-l10n-oc-linux-shippable/opt: GR0b7gMbS2qd4z-RuofMgg - repackage-l10n-oc-linux64-aarch64-shippable/opt: LtgLOIf6RZ-0owf0nGjAfg - repackage-l10n-oc-linux64-shippable/opt: HA7tiLXAShWrMdAWyrhDrw - repackage-l10n-oc-macosx64-shippable/opt: UAYYQEYJQyGekpU1a-ZamQ - repackage-l10n-oc-win32-shippable/opt: HFy3r-HjQB6FdY7FJ0jImA - repackage-l10n-oc-win64-aarch64-shippable/opt: Q80pitU-R4mCn_N8P2JOPw - repackage-l10n-oc-win64-shippable/opt: Ms6YVNr9RISgMXIupUi5og - repackage-l10n-pa-IN-linux-shippable/opt: PfAUm5qQRT2JnJR5MkNe1Q - repackage-l10n-pa-IN-linux64-aarch64-shippable/opt: TWnZbRDkRVeKD6pMtfdgwg - repackage-l10n-pa-IN-linux64-shippable/opt: JUbpsBqqQ4qa7iNy2h9Suw - repackage-l10n-pa-IN-macosx64-shippable/opt: EO4hK4SGSAKbWiDBU9WHhw - repackage-l10n-pa-IN-win32-shippable/opt: Ki-e4hWSR1up6rgABY4qPw - repackage-l10n-pa-IN-win64-aarch64-shippable/opt: KfxLDjgvRh2sxAuOgIoMdw - repackage-l10n-pa-IN-win64-shippable/opt: W5oMcV0GS228qqf-BayxKA - repackage-l10n-pl-linux-shippable/opt: BwKlrNUoQYujt8y-3zWBOg - repackage-l10n-pl-linux64-aarch64-shippable/opt: Rh2AESfCT8ez0iQ3FCMe6Q - repackage-l10n-pl-linux64-shippable/opt: JDQOEVazQ8K-e-5PjuX6nw - repackage-l10n-pl-macosx64-shippable/opt: UCKjcS3BQFCfwGVlz3BO0g - repackage-l10n-pl-win32-shippable/opt: Y8r6PjUpSeSvIAh_LbV6aA - repackage-l10n-pl-win64-aarch64-shippable/opt: W2WdWay7RKOBr3w_FOjbHQ - repackage-l10n-pl-win64-shippable/opt: CwRI2F25Rmy6qmeB-Qbktg - repackage-l10n-pt-BR-linux-shippable/opt: WpLmiOzfTMGFD9oXm30WJw - repackage-l10n-pt-BR-linux64-aarch64-shippable/opt: WoHBKNp4RFKplJ1nZSBkEA - repackage-l10n-pt-BR-linux64-shippable/opt: eW88zgq8Qd-rmhNQXf81Dw - repackage-l10n-pt-BR-macosx64-shippable/opt: dVV-ZFcVSm6ArueuYzUpYA - repackage-l10n-pt-BR-win32-shippable/opt: FfiNsAXwTC6MqxpmkGYgRw - repackage-l10n-pt-BR-win64-aarch64-shippable/opt: doFxK6eyRUiDc8RqYuCWrg - repackage-l10n-pt-BR-win64-shippable/opt: QJRJdDTuRJyu5CyCEu2WXQ - repackage-l10n-pt-PT-linux-shippable/opt: JWgWs8VASiO00VGcu7t0jg - repackage-l10n-pt-PT-linux64-aarch64-shippable/opt: T068gPI5SM-nkHP4cjx1Vw - repackage-l10n-pt-PT-linux64-shippable/opt: N8PiBgOIR5a35okJVBjyEQ - repackage-l10n-pt-PT-macosx64-shippable/opt: ACd7Y0PGT72YZYADeeldDw - repackage-l10n-pt-PT-win32-shippable/opt: a011p80USp-G1TMnAjubfw - repackage-l10n-pt-PT-win64-aarch64-shippable/opt: NexCd7EzRJWYtqQ70uX0UQ - repackage-l10n-pt-PT-win64-shippable/opt: Ci3EWTqtSKePDfnOJGr7ng - repackage-l10n-rm-linux-shippable/opt: WKoeUJiuQZeJqG9dCNuW6w - repackage-l10n-rm-linux64-aarch64-shippable/opt: IhmOGn9vTP2Xo-n8rpubFQ - repackage-l10n-rm-linux64-shippable/opt: SN2nQ_4jQ6OvD_xVB2unxA - repackage-l10n-rm-macosx64-shippable/opt: aHOrp56iTY6ALMScWawlSg - repackage-l10n-rm-win32-shippable/opt: FIx5DKXXSZ67pzkBvmnWtg - repackage-l10n-rm-win64-aarch64-shippable/opt: b5dPjD9XR9CttU7F6mmDLw - repackage-l10n-rm-win64-shippable/opt: XT3fC1LER4qrjm5dJyvDYw - repackage-l10n-ro-linux-shippable/opt: A4hSa8vqS1KRF3NwfpZaVw - repackage-l10n-ro-linux64-aarch64-shippable/opt: c5puOiQ9S-ab4jG4Ac5DIQ - repackage-l10n-ro-linux64-shippable/opt: WCiO1PAITx6k8TuVpUlsmA - repackage-l10n-ro-macosx64-shippable/opt: SF9WTaYXSn6MQYBQMBCUQQ - repackage-l10n-ro-win32-shippable/opt: Jvt9_sVwTpaEi4mHwOhPgA - repackage-l10n-ro-win64-aarch64-shippable/opt: G-e1eDSzRAujYGTSpQsfiw - repackage-l10n-ro-win64-shippable/opt: KLsX9VxgTe22pfB1my3-ug - repackage-l10n-ru-linux-shippable/opt: OiHrzKIZTJ-lgy2KtDsryQ - repackage-l10n-ru-linux64-aarch64-shippable/opt: RWMAuNQJST-ZHWzOzKMVhw - repackage-l10n-ru-linux64-shippable/opt: O-IW7xYMT92qqzyF5F3rbw - repackage-l10n-ru-macosx64-shippable/opt: WqnWyjWvQS6DkOPFHMgK7A - repackage-l10n-ru-win32-shippable/opt: KieVKpuXSUuyEa3zAUAFCA - repackage-l10n-ru-win64-aarch64-shippable/opt: L7Pl-riKRxa3z7QZIyuOIg - repackage-l10n-ru-win64-shippable/opt: aF1H-aYESFC5dOOzmDY9UQ - repackage-l10n-sat-linux-shippable/opt: E-_fS_5SShiLrih1OGe7ow - repackage-l10n-sat-linux64-aarch64-shippable/opt: LuqkoTpoTHmPpSzwZj9O5A - repackage-l10n-sat-linux64-shippable/opt: cUY4ogS0Rze5_EGIEH7UdA - repackage-l10n-sat-macosx64-shippable/opt: SRybr9LtSIyoB67lXczvng - repackage-l10n-sat-win32-shippable/opt: NQyvRm9nTjO8FX-dMJbiUA - repackage-l10n-sat-win64-aarch64-shippable/opt: aG3uoveuS3GzV0Vvu9cgzg - repackage-l10n-sat-win64-shippable/opt: Y1T7I2mERYGtddGAhMVlBQ - repackage-l10n-sc-linux-shippable/opt: J9Ml5P0kRZq4Fuw817Xfzg - repackage-l10n-sc-linux64-aarch64-shippable/opt: ZGtA-Iy5QLGPtN9Hww0m4w - repackage-l10n-sc-linux64-shippable/opt: bFylCGRmTRaYVWWg6ExtjA - repackage-l10n-sc-macosx64-shippable/opt: VvO93k-7Ta-ZYfI3r0FjMw - repackage-l10n-sc-win32-shippable/opt: IutYM3e4T3uzomUF8he6Jg - repackage-l10n-sc-win64-aarch64-shippable/opt: QDMHyNpiRL6Q6_baKc7ajA - repackage-l10n-sc-win64-shippable/opt: aznEmbEWSeqKowpe9I5_HA - repackage-l10n-sco-linux-shippable/opt: HNkRcE4VSzuIHdNnLsP3SQ - repackage-l10n-sco-linux64-aarch64-shippable/opt: BwUvs6K-Q9e8VgrLx8LnDw - repackage-l10n-sco-linux64-shippable/opt: HSUYaieCSla3DxGY88rCOQ - repackage-l10n-sco-macosx64-shippable/opt: XL5MdxR2S-mgWbMlbtCiNg - repackage-l10n-sco-win32-shippable/opt: XX0GVZoMRdmCGNtzW8nSkA - repackage-l10n-sco-win64-aarch64-shippable/opt: NNzYxJiFRH633fQy61RnHQ - repackage-l10n-sco-win64-shippable/opt: MM-koYgCTiCAYmnu8R5XOg - repackage-l10n-si-linux-shippable/opt: S9K-isM-To2hgsnM9T9oPw - repackage-l10n-si-linux64-aarch64-shippable/opt: EicxSy81R9iLR42YgQ2zhA - repackage-l10n-si-linux64-shippable/opt: YJlHdGUOTwKm15x_LDSxBw - repackage-l10n-si-macosx64-shippable/opt: Nkpy4XUAS2eqrXUUbGBptQ - repackage-l10n-si-win32-shippable/opt: UYUwb8WQT4eOhtHQYSfE1w - repackage-l10n-si-win64-aarch64-shippable/opt: WUlWnyYtRoOUn93VzHY0iw - repackage-l10n-si-win64-shippable/opt: IdMxfR_6R5WcjGYygdHpMA - repackage-l10n-sk-linux-shippable/opt: FOjbAaqoQVuLl0FLF4R7pw - repackage-l10n-sk-linux64-aarch64-shippable/opt: PRg5Q8ovT-ShMJsm70PSRA - repackage-l10n-sk-linux64-shippable/opt: Ey2arjk5Ri2rvgD1Nunuqw - repackage-l10n-sk-macosx64-shippable/opt: fK11P0B2QTaNlD7JqrFJ0A - repackage-l10n-sk-win32-shippable/opt: R7X9AX9zQPm31c_e3G65Jg - repackage-l10n-sk-win64-aarch64-shippable/opt: ZthiHDcHR6GLAtqjINJqXA - repackage-l10n-sk-win64-shippable/opt: Z9WeQYf1QUypVKtsqEfFPw - repackage-l10n-skr-linux-shippable/opt: D-o8X8ygQLijtP3-iAdBVQ - repackage-l10n-skr-linux64-aarch64-shippable/opt: bFkaIVm4S0eW_rAFbEMM9Q - repackage-l10n-skr-linux64-shippable/opt: BuK0avS5TL-tCqZvskctjw - repackage-l10n-skr-macosx64-shippable/opt: eNQi8fx2RuG1k960AxdF6g - repackage-l10n-skr-win32-shippable/opt: BDmbabfzRPKFZw60YU3XQg - repackage-l10n-skr-win64-aarch64-shippable/opt: e3aiIEvjQFy2FiJ6-KMBNg - repackage-l10n-skr-win64-shippable/opt: UCDqtqqWSYOh8mZBYlYrRQ - repackage-l10n-sl-linux-shippable/opt: clEhQiwqRTS0b9XWJFqbtQ - repackage-l10n-sl-linux64-aarch64-shippable/opt: TN4IyV1GRcaIgjAxd-2-Dw - repackage-l10n-sl-linux64-shippable/opt: dxANL2g6Q4ugXRv3heI2Pw - repackage-l10n-sl-macosx64-shippable/opt: GNVKCBRtSg-s95UFwpCqLg - repackage-l10n-sl-win32-shippable/opt: VkgHR6zUS1midfzvWbj95A - repackage-l10n-sl-win64-aarch64-shippable/opt: XzXK1l1mQM2wJf9g6xzUUg - repackage-l10n-sl-win64-shippable/opt: Sl194YHpRh21ZJQSOQIfbw - repackage-l10n-son-linux-shippable/opt: IucLUk2cSfOhqqd4W733Kw - repackage-l10n-son-linux64-aarch64-shippable/opt: FIQGcnirQ7KWN657Q_d7XA - repackage-l10n-son-linux64-shippable/opt: VjNWOTOuTWOi5ZJDoh5kPw - repackage-l10n-son-macosx64-shippable/opt: G_eV072AR1aLCJF1wQYoew - repackage-l10n-son-win32-shippable/opt: GSSq3jbnSGiuQSt3ZSogmw - repackage-l10n-son-win64-aarch64-shippable/opt: UceGwYCwRw6C1IwIxnV3fQ - repackage-l10n-son-win64-shippable/opt: dNuAh7E4R8OqQeRCA3hZkw - repackage-l10n-sq-linux-shippable/opt: E8zXumTiR1-MXPrso592xg - repackage-l10n-sq-linux64-aarch64-shippable/opt: Oi9DW_6wQo6DW8amKAM_TQ - repackage-l10n-sq-linux64-shippable/opt: Yf6iKLunSS6kEMV39SUh1g - repackage-l10n-sq-macosx64-shippable/opt: YVfHnOd9Sg-wDoFwprkXOw - repackage-l10n-sq-win32-shippable/opt: Q-NzxoCvQOyyrNNG15gOSQ - repackage-l10n-sq-win64-aarch64-shippable/opt: JDYVYjQJTCW5u5kdyNh8Nw - repackage-l10n-sq-win64-shippable/opt: eSG1eMISSbic4EujBnlljg - repackage-l10n-sr-linux-shippable/opt: DcpE64cRSLCssppI6v2arg - repackage-l10n-sr-linux64-aarch64-shippable/opt: fXZGpMxxTBO5CJa2N5sxbA - repackage-l10n-sr-linux64-shippable/opt: COmo3ofmQ3K0Qnxib2oZWw - repackage-l10n-sr-macosx64-shippable/opt: d1d1kl9AQsq31pswfVOhZA - repackage-l10n-sr-win32-shippable/opt: Y1esYP76R6ec-dE-EMsh0w - repackage-l10n-sr-win64-aarch64-shippable/opt: XUySN8z3T52BvYLrgu6D7w - repackage-l10n-sr-win64-shippable/opt: BHz78i3tQC-e_G858WZIcw - repackage-l10n-sv-SE-linux-shippable/opt: My25PPhZQMu8-mrFhAHZ8A - repackage-l10n-sv-SE-linux64-aarch64-shippable/opt: cS_8Tf8zQiSf2nimtZ_Zrw - repackage-l10n-sv-SE-linux64-shippable/opt: PArc8wdgQbKmRwAyWCZCWw - repackage-l10n-sv-SE-macosx64-shippable/opt: O7KVXCjWRZ6NSyRSJVhAtA - repackage-l10n-sv-SE-win32-shippable/opt: Y6x4Cvt5Stul_EjS2uJA3Q - repackage-l10n-sv-SE-win64-aarch64-shippable/opt: VxElO_2wQTWQlDqeJFOglQ - repackage-l10n-sv-SE-win64-shippable/opt: QrNHb3LNSo-Il7_xpW--ng - repackage-l10n-szl-linux-shippable/opt: F27CMERXTdO72-25yyZcBA - repackage-l10n-szl-linux64-aarch64-shippable/opt: C3O-WIOmTD-D6Y8Ou6SZ2A - repackage-l10n-szl-linux64-shippable/opt: XW30ayhITNifzKBDeWb-ag - repackage-l10n-szl-macosx64-shippable/opt: Zj9kFPyaRwiIgsuIRicSFw - repackage-l10n-szl-win32-shippable/opt: H93H-VQaSyOgflVVxrpOUA - repackage-l10n-szl-win64-aarch64-shippable/opt: Q-dxEJTmRpen27FKI3ZDrA - repackage-l10n-szl-win64-shippable/opt: H1WmDqgnSEi5g5MTFEldfg - repackage-l10n-ta-linux-shippable/opt: FLokTNSjQTKuniyw3LZ9jg - repackage-l10n-ta-linux64-aarch64-shippable/opt: DQtnQeOVQaa3xfIfFB49BA - repackage-l10n-ta-linux64-shippable/opt: Kvt9ZYJZQQamobY288tNMw - repackage-l10n-ta-macosx64-shippable/opt: R4OC30PIQHq_cKvouRqkiw - repackage-l10n-ta-win32-shippable/opt: RlvHMK99QAuOYOM8coXh2A - repackage-l10n-ta-win64-aarch64-shippable/opt: TZpQTWwuSD635GMrxcqT8Q - repackage-l10n-ta-win64-shippable/opt: N97UAa_qThilxfxgl79aJA - repackage-l10n-te-linux-shippable/opt: Gkf6rRsGRSiCjWb1dEyyCg - repackage-l10n-te-linux64-aarch64-shippable/opt: f3JQHAblS9WauMZ4h8nekA - repackage-l10n-te-linux64-shippable/opt: X_Cio-IHR3GbwZnvQE-p7w - repackage-l10n-te-macosx64-shippable/opt: YSUkpf8QSAOXz-RyEDf8Vg - repackage-l10n-te-win32-shippable/opt: P2hbeA5wQ0ubquhbuaYOpg - repackage-l10n-te-win64-aarch64-shippable/opt: GMmUCBksRVib0uNbKwRuww - repackage-l10n-te-win64-shippable/opt: c-MrOoFoTDmPkwxDbkLlVQ - repackage-l10n-tg-linux-shippable/opt: Cx9D4WuOTfq4E10scdCe6g - repackage-l10n-tg-linux64-aarch64-shippable/opt: AX_BtNvQRCyPbvc5UwwX5Q - repackage-l10n-tg-linux64-shippable/opt: VxITxRE_RAGQkzTDtt0YhQ - repackage-l10n-tg-macosx64-shippable/opt: AagfwUPlTeyRGvZ8oSKksA - repackage-l10n-tg-win32-shippable/opt: EMQ3AiBuRoC_uGISRXRYqA - repackage-l10n-tg-win64-aarch64-shippable/opt: ZC6GP8ArQUiicT-FA-1mJQ - repackage-l10n-tg-win64-shippable/opt: I2IUb4xoSB-ESsvsXSj4GA - repackage-l10n-th-linux-shippable/opt: RkgiM0SkTvCpL0l9rafzvw - repackage-l10n-th-linux64-aarch64-shippable/opt: AubO3O09QE2pyU45BjB9Hw - repackage-l10n-th-linux64-shippable/opt: OEdHN0kgROiACmUWbWuB-Q - repackage-l10n-th-macosx64-shippable/opt: FJ_haoPcTlKr2uU5iB6Axw - repackage-l10n-th-win32-shippable/opt: WNjZHf7LRGeLeXXMv_4NIg - repackage-l10n-th-win64-aarch64-shippable/opt: IN9teeaMSYKzvXFYhhw26A - repackage-l10n-th-win64-shippable/opt: Clq_QDD4RiC1USGvtt2IxQ - repackage-l10n-tl-linux-shippable/opt: cbmUEciHSpCF2XdceMu5zA - repackage-l10n-tl-linux64-aarch64-shippable/opt: QfFh91hwSreR8jTiYgimjQ - repackage-l10n-tl-linux64-shippable/opt: VrnwAh4QTr-ynTtTe9UBiA - repackage-l10n-tl-macosx64-shippable/opt: D_IFWbJrT8eukIHdvtSWFw - repackage-l10n-tl-win32-shippable/opt: Z0wJWsEbRE2XTBuoOyluWA - repackage-l10n-tl-win64-aarch64-shippable/opt: RC41LR48SMaRJ9NybTFqQA - repackage-l10n-tl-win64-shippable/opt: amv98_MsSP20d9GguI_weQ - repackage-l10n-tr-linux-shippable/opt: b2ax1VyrROW50OeZCpC-ww - repackage-l10n-tr-linux64-aarch64-shippable/opt: bf0K8yiWSlmz2POFcViyAg - repackage-l10n-tr-linux64-shippable/opt: XIYX1FoyQNmYKQIxZAubmw - repackage-l10n-tr-macosx64-shippable/opt: Iu0pdRYrRku1ZqHmK9213A - repackage-l10n-tr-win32-shippable/opt: N9A57eOlQ6yxTsvu55F9kQ - repackage-l10n-tr-win64-aarch64-shippable/opt: WvHi_YpeSIuYgQ0HHU7V4g - repackage-l10n-tr-win64-shippable/opt: KA3C0JYMSKew9Ut11f3hcw - repackage-l10n-trs-linux-shippable/opt: DwP71pbORFarKEhhsp_hHg - repackage-l10n-trs-linux64-aarch64-shippable/opt: PeCeIylCTZWaBqCFEDHHpw - repackage-l10n-trs-linux64-shippable/opt: JuStct9YRi6GCO0GyCKQtA - repackage-l10n-trs-macosx64-shippable/opt: S7MigTvCRz-5ku-bvueO8w - repackage-l10n-trs-win32-shippable/opt: WpgmFKXRR8KRuBeFB66vRw - repackage-l10n-trs-win64-aarch64-shippable/opt: FKcrCLa1QImuATtlDumpRg - repackage-l10n-trs-win64-shippable/opt: HB8kAFAuTRupzB6qj03fFA - repackage-l10n-uk-linux-shippable/opt: UbemGgf1TcuMOQLOhB8hGg - repackage-l10n-uk-linux64-aarch64-shippable/opt: Nt0gOI7fSzuRcyFK-KK5Zg - repackage-l10n-uk-linux64-shippable/opt: MuSRj0X4TP6erOz2uPYr4A - repackage-l10n-uk-macosx64-shippable/opt: dQZ6z2y4Semv_I-YiGNtsQ - repackage-l10n-uk-win32-shippable/opt: ZroDx28YQBmTiWZ74ua-Lg - repackage-l10n-uk-win64-aarch64-shippable/opt: bwcQhLfDTv-tuucD8CLn-Q - repackage-l10n-uk-win64-shippable/opt: PrhtJuMsSSWSKxl8Nha2FA - repackage-l10n-ur-linux-shippable/opt: RiwehoE_RK-NZDw8L7eD3w - repackage-l10n-ur-linux64-aarch64-shippable/opt: VmCIM_I4TNGCL8dXOLohUQ - repackage-l10n-ur-linux64-shippable/opt: MLkWeoX0TqqizNP1BxoGBg - repackage-l10n-ur-macosx64-shippable/opt: YRzve8LrS96Evc2iJAaDlQ - repackage-l10n-ur-win32-shippable/opt: Z3TSYwjEROKZbpZ4Z9OnUw - repackage-l10n-ur-win64-aarch64-shippable/opt: S9JxEi6QTIeZxxKjY3wuAA - repackage-l10n-ur-win64-shippable/opt: ZTXn7_GDQ-GHBiMHiudA3g - repackage-l10n-uz-linux-shippable/opt: HsY1aUZ1Qri-M3fJ2tZs6w - repackage-l10n-uz-linux64-aarch64-shippable/opt: DA6vv3NNQ1OvWPnxarMtIQ - repackage-l10n-uz-linux64-shippable/opt: D7KefAbXSBuLqqK805XWjQ - repackage-l10n-uz-macosx64-shippable/opt: LhzD_umETGG7O0AO7VIYbg - repackage-l10n-uz-win32-shippable/opt: Nd0qoM1jSWu-332TtlXiHQ - repackage-l10n-uz-win64-aarch64-shippable/opt: M-ezsHG6SWC8hAJswFkIpQ - repackage-l10n-uz-win64-shippable/opt: ZE6M_RXCQO28deppanLQiA - repackage-l10n-vi-linux-shippable/opt: efCdMZA5TY6pe9QKhVlTLw - repackage-l10n-vi-linux64-aarch64-shippable/opt: Gct3Rb_JRwSHJgzzUy-yuQ - repackage-l10n-vi-linux64-shippable/opt: Gl4rFPwsR9W7qc9y7-h9Kg - repackage-l10n-vi-macosx64-shippable/opt: DZG8d6GyRWGXJ50SgDyUXw - repackage-l10n-vi-win32-shippable/opt: KMpOgVYkQiyAtL4Cwxp2iQ - repackage-l10n-vi-win64-aarch64-shippable/opt: B4maNjl8RVKEDvsKlN8J2Q - repackage-l10n-vi-win64-shippable/opt: VnAdnNYPQIymXGaqhQr45g - repackage-l10n-xh-linux-shippable/opt: Wsmp2fA9RouWHm27qguhEA - repackage-l10n-xh-linux64-aarch64-shippable/opt: bvshPGVkQDuMtk2HEWchQA - repackage-l10n-xh-linux64-shippable/opt: IAO1soUOSymb0fYjUDyxnQ - repackage-l10n-xh-macosx64-shippable/opt: OVYBlBV8RsmODGdd8ggCgw - repackage-l10n-xh-win32-shippable/opt: BfboBGbSQNixiDRsT1LHug - repackage-l10n-xh-win64-aarch64-shippable/opt: Bj1urfjwQV-OTABfWQa1mw - repackage-l10n-xh-win64-shippable/opt: KLuqF8BkQO6876lRS6sGeA - repackage-l10n-zh-CN-linux-shippable/opt: FUfe0G8ZTwiJ58OnZG7ySw - repackage-l10n-zh-CN-linux64-aarch64-shippable/opt: Dz8zsdvuTWentqYnV3Y9Pg - repackage-l10n-zh-CN-linux64-shippable/opt: LX87YCA8QYakikrEpP6p1A - repackage-l10n-zh-CN-macosx64-shippable/opt: bBg7gf-rTCOzeHI-McjpXg - repackage-l10n-zh-CN-win32-shippable/opt: HOMpzliwTUKkMtLo-_BfXg - repackage-l10n-zh-CN-win64-aarch64-shippable/opt: GI2op2NQTDqBzVTtGIUY4g - repackage-l10n-zh-CN-win64-shippable/opt: ZlaCAKnQS1qaaGDU-XtrvA - repackage-l10n-zh-TW-linux-shippable/opt: cBjvzMJjQYC5AkDtB_d44Q - repackage-l10n-zh-TW-linux64-aarch64-shippable/opt: FKVsCaUOQzCCKiZOKpPtbQ - repackage-l10n-zh-TW-linux64-shippable/opt: c1sDtpqdRneAma4v9AZC9A - repackage-l10n-zh-TW-macosx64-shippable/opt: MEAxQsdMT0i9ulS9I-mayw - repackage-l10n-zh-TW-win32-shippable/opt: CsQmySAUQYOLm1nxgdAP7Q - repackage-l10n-zh-TW-win64-aarch64-shippable/opt: UrbbJDRfRs6jjOEpUvlJbA - repackage-l10n-zh-TW-win64-shippable/opt: ZoiNJjwlQvqrU7gbUUIpsA - repackage-linux-shippable/opt: a6tlgH-VTq22sS71VHp7yw - repackage-linux64-aarch64-shippable/opt: Drc5NqttRT6wdDA7rn4WUA - repackage-linux64-shippable/opt: Gj_qY80BRla-MVEqc32Row - repackage-macosx64-aarch64/debug: U-M8qo9HTDG5rkpyX28Xhg - repackage-macosx64-shippable/opt: RRaP7yLTQuWTn9yC5I-bKw - repackage-macosx64/debug: bG_UTRQFS1mZ-32SLunSlQ - repackage-msi-ach-win32-shippable/opt: aEZ7qCsHRyyV1PhNra5tJw - repackage-msi-ach-win64-shippable/opt: C3x-PDprTPGN3uiQkRFeRA - repackage-msi-af-win32-shippable/opt: PEdAiFv-QJWa1kFdxgxycQ - repackage-msi-af-win64-shippable/opt: ZLfHs4AeSKOuePT71H3o-A - repackage-msi-an-win32-shippable/opt: US_BnmNhRsKVPDAcL666SA - repackage-msi-an-win64-shippable/opt: ErSeY8YkSMST5IrSfYzOjA - repackage-msi-ar-win32-shippable/opt: OFRKTWXVS92glJ67BL7KwA - repackage-msi-ar-win64-shippable/opt: Ej_g-0xjSHemOj_g2C_7bQ - repackage-msi-ast-win32-shippable/opt: SfU77Vp4TxyvWVJeKyI_Dw - repackage-msi-ast-win64-shippable/opt: GJze4HUuTpSbymifam_lnw - repackage-msi-az-win32-shippable/opt: KIrzQCl7QYmjWyP8hbnjhw - repackage-msi-az-win64-shippable/opt: LsWH0B4DRmWqiH5vpNyJMg - repackage-msi-be-win32-shippable/opt: TuVXqADMR9i6wJV4BaGa9Q - repackage-msi-be-win64-shippable/opt: GDNGN1hUSIKpqrJetSZIgA - repackage-msi-bg-win32-shippable/opt: bgH2JCHETL-t2uziKGABeg - repackage-msi-bg-win64-shippable/opt: U0JjNl-0RfOVfs4AdvTTaw - repackage-msi-bn-win32-shippable/opt: GGy3GOrkR8W1fT-EB2OT7g - repackage-msi-bn-win64-shippable/opt: VxOLl0yfTQmPqWC1QkgYiA - repackage-msi-br-win32-shippable/opt: JP2ym9K-T4-qyhoh1l45WQ - repackage-msi-br-win64-shippable/opt: GM2z_kTyRi-JXVfgnMBGiQ - repackage-msi-bs-win32-shippable/opt: FQQaOQW3RCSuZLuPzQwmNg - repackage-msi-bs-win64-shippable/opt: IjuV0pP0TnS58fJIM2KuiQ - repackage-msi-ca-valencia-win32-shippable/opt: CCWyu2BMTWybEMkGbejNSw - repackage-msi-ca-valencia-win64-shippable/opt: GR0u2EJ7Sn2MFkVUCz_oWg - repackage-msi-ca-win32-shippable/opt: EgBA_WkIRJ6JCBnODK-qrQ - repackage-msi-ca-win64-shippable/opt: PU3BddTEQ4GBbNmGHcPITw - repackage-msi-cak-win32-shippable/opt: HDJayyViTHWIiro6PrYn-g - repackage-msi-cak-win64-shippable/opt: Iwq4PrIaRFy5rp9aOc7bEA - repackage-msi-cs-win32-shippable/opt: SdY4HPStRgihFGclDdTl8Q - repackage-msi-cs-win64-shippable/opt: GpYkkb6JTUan4uLJJNEtrQ - repackage-msi-cy-win32-shippable/opt: XSM1564FSc6qtmln1dcSsg - repackage-msi-cy-win64-shippable/opt: MtGej6KlTvG-cpDay1qF1Q - repackage-msi-da-win32-shippable/opt: VejX8lfwRZKT_z6RPlQqUQ - repackage-msi-da-win64-shippable/opt: POG8TM_6RwGjIB1Qo2pRgA - repackage-msi-de-win32-shippable/opt: dfdcknV-Rz6NEWiHwqD81Q - repackage-msi-de-win64-shippable/opt: HWp0f-mxTYCQiGqxaRKhlw - repackage-msi-dsb-win32-shippable/opt: LmKT8jthQg6Yu8QAirwHYg - repackage-msi-dsb-win64-shippable/opt: a1cN20_SSemXiHTNDCHhow - repackage-msi-el-win32-shippable/opt: U2UTN8jvSL2w3j4-TIw0DQ - repackage-msi-el-win64-shippable/opt: JHGvYlqASEqBhSiWBOMGiw - repackage-msi-en-CA-win32-shippable/opt: El8CipvPTHWQ3hrBaLUxUQ - repackage-msi-en-CA-win64-shippable/opt: RLDOZOiqTo6yPOgh8TMCeg - repackage-msi-en-GB-win32-shippable/opt: YyhfpeARTJSgTejsAF2Q6Q - repackage-msi-en-GB-win64-shippable/opt: fHGXj6kuTpuFpREkDdHXEQ - repackage-msi-eo-win32-shippable/opt: eqcnY4qHQ4a2dNKwkDh0tw - repackage-msi-eo-win64-shippable/opt: cdxTdSEzSzKagMGiL23yJg - repackage-msi-es-AR-win32-shippable/opt: eyXyKe5cT7-rzcSkIiVFLg - repackage-msi-es-AR-win64-shippable/opt: XwFjhESMRVaKbBxc8onsKA - repackage-msi-es-CL-win32-shippable/opt: ZnBinM2VT0S4n6rNX7kCsQ - repackage-msi-es-CL-win64-shippable/opt: JIRm49KsTCKZx6CgX1ne5g - repackage-msi-es-ES-win32-shippable/opt: IvbBZSvJRwGcfjxgoQ-cLA - repackage-msi-es-ES-win64-shippable/opt: BIRDAlnYTyyGWJ238sBZOA - repackage-msi-es-MX-win32-shippable/opt: ESyLY7XiQ5ih3o24hcZfyg - repackage-msi-es-MX-win64-shippable/opt: P7DjSbLOREyRKZiADdeHrw - repackage-msi-et-win32-shippable/opt: D5RtxBwUSiuRAKsmNJNH5w - repackage-msi-et-win64-shippable/opt: BDnLv03nQbSm-gXHcg9GeQ - repackage-msi-eu-win32-shippable/opt: NtHIGIpkTiq63xFWVWNoew - repackage-msi-eu-win64-shippable/opt: HVePxdDMSPWNSNnOd03feg - repackage-msi-fa-win32-shippable/opt: ZHuFifh-QK6dPXIvhAV8Eg - repackage-msi-fa-win64-shippable/opt: Dk8RSGvpTxiD_HFo_7rAwQ - repackage-msi-ff-win32-shippable/opt: MasiFEzGSN-AamiLF2hWKg - repackage-msi-ff-win64-shippable/opt: ElUMInE4S96K18dUGHqwVQ - repackage-msi-fi-win32-shippable/opt: dOZ0OuTUQd-jf0Q2xoPf-A - repackage-msi-fi-win64-shippable/opt: KB4V09PYSX6SeKYZF5DRyg - repackage-msi-fr-win32-shippable/opt: DFts6g3YQ62gssQVrvaCHg - repackage-msi-fr-win64-shippable/opt: ZowbNkysQvG6gGaoDYkljg - repackage-msi-fur-win32-shippable/opt: Ih2rCsTJTMChys4aGXfObA - repackage-msi-fur-win64-shippable/opt: Z2cvhZCRRda5lO_AhzDemA - repackage-msi-fy-NL-win32-shippable/opt: Jpbn6E4cQVeuJ5nO2BRbKQ - repackage-msi-fy-NL-win64-shippable/opt: Alj4r4XJT_mABdHu1z53SA - repackage-msi-ga-IE-win32-shippable/opt: QXUxrvh_TVuixGYhQkVxPw - repackage-msi-ga-IE-win64-shippable/opt: dI4ZnOzTQ8yCyoRqwxeJFg - repackage-msi-gd-win32-shippable/opt: CeX04HfxSpKRuQG_i7_YvQ - repackage-msi-gd-win64-shippable/opt: Rwl537hBSzOQ6jaMYIVBXg - repackage-msi-gl-win32-shippable/opt: CR4MbSEqQ7-erVSkdp_phw - repackage-msi-gl-win64-shippable/opt: AA--2OlnTd6JSQUaWPAFYg - repackage-msi-gn-win32-shippable/opt: O_rdlN6VT4GTPNKxrx_0fA - repackage-msi-gn-win64-shippable/opt: Vx0QEEdmTfqviucBwgt6VA - repackage-msi-gu-IN-win32-shippable/opt: Gu8OM5S0RECsV6Ss0B2LSg - repackage-msi-gu-IN-win64-shippable/opt: HWcJ8OHYTpyskwjBxISbkA - repackage-msi-he-win32-shippable/opt: EeUaGKbVSIW38iqYww_yYA - repackage-msi-he-win64-shippable/opt: EiV5vfdVRjOgkTDYoB7AHg - repackage-msi-hi-IN-win32-shippable/opt: WzdARKj-QpWnI-qygUOJhQ - repackage-msi-hi-IN-win64-shippable/opt: Vy5zwHDcT3OUJi5y8-Ptrw - repackage-msi-hr-win32-shippable/opt: TeqKE9vYQdm_Y9es3vuw9A - repackage-msi-hr-win64-shippable/opt: Xe_szOqBTxmI0HC6DlqXWg - repackage-msi-hsb-win32-shippable/opt: SHKK_MxzTuCnBMJNEzcKbQ - repackage-msi-hsb-win64-shippable/opt: Bn_a3kjySRiSl0hTfeog-Q - repackage-msi-hu-win32-shippable/opt: dOmzkn_kRWmW5B6Kt5TgvQ - repackage-msi-hu-win64-shippable/opt: BLyI3j_UQYOpcF2I7wMClg - repackage-msi-hy-AM-win32-shippable/opt: KCenOY_TRtOAaq1zEATACg - repackage-msi-hy-AM-win64-shippable/opt: D89_5VyKQOCbtkqmmOCihQ - repackage-msi-ia-win32-shippable/opt: feHSVCahR0SNJNefFi0RFg - repackage-msi-ia-win64-shippable/opt: OMTqCgF6TLCldm5YAxmqJg - repackage-msi-id-win32-shippable/opt: eSG-px8-T6ORh_AkLVDuVQ - repackage-msi-id-win64-shippable/opt: XZg0kzqOToCPtquY5wkrMg - repackage-msi-is-win32-shippable/opt: QVGwFamWQku2ERvht2zndQ - repackage-msi-is-win64-shippable/opt: W43fotyrQUu51EihGJVNCA - repackage-msi-it-win32-shippable/opt: diDSmFvjQNi5z3WL-nAbMQ - repackage-msi-it-win64-shippable/opt: KJPcE6JoR4mXpdukhguK2w - repackage-msi-ja-win32-shippable/opt: aQY6QU-oQWWk4RO9DRf2lA - repackage-msi-ja-win64-shippable/opt: S94GlHrxQeCnfEnPpA-SBQ - repackage-msi-ka-win32-shippable/opt: BfXO_oBoQpmuuRODKZdKJg - repackage-msi-ka-win64-shippable/opt: HCdNwMkLQtahFSomcTEMRw - repackage-msi-kab-win32-shippable/opt: Xz6uuHGpRJOgnlFVNNSSSQ - repackage-msi-kab-win64-shippable/opt: GDfsDtb8Sbq2lSyQMgGhMA - repackage-msi-kk-win32-shippable/opt: KHvNQTGjSvaDUgcPiD6g4g - repackage-msi-kk-win64-shippable/opt: UIFQuOaDT42G16VKAcZnJw - repackage-msi-km-win32-shippable/opt: axFjzLRXRGy88YwaMUwrAQ - repackage-msi-km-win64-shippable/opt: EwHOTl05RNCtnElGq7-m3Q - repackage-msi-kn-win32-shippable/opt: L35h_YscSUW039aeZaznfA - repackage-msi-kn-win64-shippable/opt: SpB-_ewXT_mYVdUYJT3rcQ - repackage-msi-ko-win32-shippable/opt: cxR5cZTbSZ2JAx1uqlFkvg - repackage-msi-ko-win64-shippable/opt: AJ5PhfjpSi6FSdhhmj7CvQ - repackage-msi-lij-win32-shippable/opt: bW0D0QW1QaqEgOLJQ5ycPg - repackage-msi-lij-win64-shippable/opt: FGXMkeNpSIW_TfMIMJsByg - repackage-msi-lt-win32-shippable/opt: IbYexEWRR5OTyulTdsNURA - repackage-msi-lt-win64-shippable/opt: K_40hQvsQVyN_tB4cxsDyg - repackage-msi-lv-win32-shippable/opt: AoB8g_XpSi6veIzyZjNmIg - repackage-msi-lv-win64-shippable/opt: L-xAQiOgTIi_u31EFWZLDQ - repackage-msi-mk-win32-shippable/opt: BldJRtdKSdmDDNhiGPJKIA - repackage-msi-mk-win64-shippable/opt: QM6QjcbpThW-JPypI1P2BA - repackage-msi-mr-win32-shippable/opt: XcOygchWSOaXE3uuBjSbjg - repackage-msi-mr-win64-shippable/opt: WwOqfd4KSUm1QQT0ewqWrw - repackage-msi-ms-win32-shippable/opt: REDJYO8OTuy8id9QvwrV1A - repackage-msi-ms-win64-shippable/opt: WtGBN6jXQjWV3I3tmsxe9w - repackage-msi-my-win32-shippable/opt: NewtAgiMS2GHjW4HuVTQGA - repackage-msi-my-win64-shippable/opt: Rm5Xx_nJSOyy3CGpiB0sZQ - repackage-msi-nb-NO-win32-shippable/opt: DQY7YjTqTDSxaDmuNIpomQ - repackage-msi-nb-NO-win64-shippable/opt: AAmv9CNdQR2j338cKeO3EQ - repackage-msi-ne-NP-win32-shippable/opt: WKMeyZF4TPu9NAVM4T8dLQ - repackage-msi-ne-NP-win64-shippable/opt: ffVrpaXqQFWEGHYm5qejiQ - repackage-msi-nl-win32-shippable/opt: BlEaXikIS2yuzf4W9eA4dw - repackage-msi-nl-win64-shippable/opt: WvI6_WfiQv2fMPvmiCqrew - repackage-msi-nn-NO-win32-shippable/opt: IpMUrbGxQe6AHknBroDlEQ - repackage-msi-nn-NO-win64-shippable/opt: PtSuqN0RTfigIxzuK2MFVg - repackage-msi-oc-win32-shippable/opt: Jlayz7-aT7upuEbN5Z-GYQ - repackage-msi-oc-win64-shippable/opt: OZ8tOdnZT9eQkrIN7ZMzPg - repackage-msi-pa-IN-win32-shippable/opt: TAwvj3o5TMudtCgky4QfhA - repackage-msi-pa-IN-win64-shippable/opt: OFOKQk0-TaqQFp2XlrDtng - repackage-msi-pl-win32-shippable/opt: NXMBk-F3RDauExZv3V7oyg - repackage-msi-pl-win64-shippable/opt: TJa8wZ6NSTSnvUkNnnl1Sw - repackage-msi-pt-BR-win32-shippable/opt: BDpCLzRxSlaOOX_ELQtrxg - repackage-msi-pt-BR-win64-shippable/opt: b3M6Y7v_QGeea-PqEdPdsQ - repackage-msi-pt-PT-win32-shippable/opt: Pf9VNojXQqaOxtWnwsmaiw - repackage-msi-pt-PT-win64-shippable/opt: Cl_8rwyyS2WUvlXJpQ9ZtA - repackage-msi-rm-win32-shippable/opt: HQ0IrgTHTzSPMzaHIMO5Rw - repackage-msi-rm-win64-shippable/opt: HCMi-iD_Tbu3OruLg-3XRw - repackage-msi-ro-win32-shippable/opt: KzWEN2dRSz6w3XI8J3iMnw - repackage-msi-ro-win64-shippable/opt: TOgl2SjxRI2sKH7_DrlqrA - repackage-msi-ru-win32-shippable/opt: KhYRWDreQTqKokPTxDqMFA - repackage-msi-ru-win64-shippable/opt: DVUIdJLXSYGB5MhLyqBkhA - repackage-msi-sat-win32-shippable/opt: FMCTTYZpS7aDSfND9YKE0g - repackage-msi-sat-win64-shippable/opt: cyjdrnxWSp6XuexGVebtew - repackage-msi-sc-win32-shippable/opt: cDDyz5onSQi8zmzYK7p0WQ - repackage-msi-sc-win64-shippable/opt: E3L36QSqQOaBIqfQXV3uHA - repackage-msi-sco-win32-shippable/opt: I7_lVGP4TwOAPwWF85MG_w - repackage-msi-sco-win64-shippable/opt: C1iIqykhSfeDCO49lByn9w - repackage-msi-si-win32-shippable/opt: Zn0MjIipRQ-KTrlcu0USZQ - repackage-msi-si-win64-shippable/opt: ckx8zIKxR9-C7Zy6h9vfGg - repackage-msi-sk-win32-shippable/opt: Y233MfjRRCanvTRaf3SsiQ - repackage-msi-sk-win64-shippable/opt: TWcySl05Q7-mvY5M4vQ7Kg - repackage-msi-skr-win32-shippable/opt: E3NNFAbQQo2Oo-ZBamJOoQ - repackage-msi-skr-win64-shippable/opt: dRXYE8kMTgujuY_fnVsFrQ - repackage-msi-sl-win32-shippable/opt: Paj18rftQiGZ_iAPbhWzdw - repackage-msi-sl-win64-shippable/opt: WQeHdhIaShK4sXQ6703TCg - repackage-msi-son-win32-shippable/opt: JW59eUAWTRacz_iZSAKv3A - repackage-msi-son-win64-shippable/opt: JzYUK15GSvu4q_UWVy2wGA - repackage-msi-sq-win32-shippable/opt: dEwgjpBHSSOP7aI3ewgIow - repackage-msi-sq-win64-shippable/opt: Z690-CGSS12rNwn0cPUJlA - repackage-msi-sr-win32-shippable/opt: YaV3JhT7R-e3oYnBpjJNcg - repackage-msi-sr-win64-shippable/opt: CKi68FSST4iMazP3-R9i0Q - repackage-msi-sv-SE-win32-shippable/opt: ZrHp3AuwSLGqnbqXp7dmDQ - repackage-msi-sv-SE-win64-shippable/opt: ZM4rubBMR8iRHMKZ5zEboA - repackage-msi-szl-win32-shippable/opt: DtlFeBKwThiefe5880f-Bw - repackage-msi-szl-win64-shippable/opt: c2kvUfOYQUarIesbqjB63Q - repackage-msi-ta-win32-shippable/opt: PEtr0jIxT_eoFqRpvMlw9Q - repackage-msi-ta-win64-shippable/opt: Of1baSthQ4eFB4NSUhUIGQ - repackage-msi-te-win32-shippable/opt: OIp5RwffSkaDQ5yNBOZJBA - repackage-msi-te-win64-shippable/opt: amPfVyfEQbqKXpOT7AUorw - repackage-msi-tg-win32-shippable/opt: OPjfKnE7SQm76OAr4RNxvg - repackage-msi-tg-win64-shippable/opt: b9ofkccCShuMPmhzqJQiOQ - repackage-msi-th-win32-shippable/opt: f-1jrQleQwe1tVnh8stKbA - repackage-msi-th-win64-shippable/opt: AxHk7oYKQy6602wPKk1lag - repackage-msi-tl-win32-shippable/opt: H4fjBU3JTHCBYImGSv-oRw - repackage-msi-tl-win64-shippable/opt: GJXsfCAqT5qyfekBq_GDyQ - repackage-msi-tr-win32-shippable/opt: MBXr5FPGQi6VaDOYmjofDA - repackage-msi-tr-win64-shippable/opt: YgOXWcApROSyxMT9nwhkHw - repackage-msi-trs-win32-shippable/opt: HfIsg3znQ8ifaWFTVMHKCQ - repackage-msi-trs-win64-shippable/opt: Idkda9lTRhe0gMnxO7YFbA - repackage-msi-uk-win32-shippable/opt: aMMUVbeBSv-6M036hOYA9Q - repackage-msi-uk-win64-shippable/opt: fp9YRgEoSOy2y_eG2muhTg - repackage-msi-ur-win32-shippable/opt: USbuoG7RSae9dtzeTrUFUQ - repackage-msi-ur-win64-shippable/opt: Zv05TmTWRTqMBaYcPMs1Kw - repackage-msi-uz-win32-shippable/opt: drqyliAERTiL8e4cnmBL0Q - repackage-msi-uz-win64-shippable/opt: TH0qifNoQF2b_pL071rsxw - repackage-msi-vi-win32-shippable/opt: ePTMLarsTlmziiHWDeqjww - repackage-msi-vi-win64-shippable/opt: PmLTdh-wSaaEbBhD1gpcDg - repackage-msi-win32-shippable/opt: bzJdrd9wSdu33qaBUuvM6w - repackage-msi-win64-shippable/opt: D-kGeSCFRz6B6_Yuk1ZV5g - repackage-msi-xh-win32-shippable/opt: Cd6ftVJmR_O6QxLwPexk6g - repackage-msi-xh-win64-shippable/opt: Q44VdProQZ60fKAsbHMuwA - repackage-msi-zh-CN-win32-shippable/opt: dxiWl4y6R5Km0QFtasY6Kw - repackage-msi-zh-CN-win64-shippable/opt: SqfrarsMTmOLqMRi85C27Q - repackage-msi-zh-TW-win32-shippable/opt: SFWZ_6YOQfeovW-m-nUOpw - repackage-msi-zh-TW-win64-shippable/opt: Qha3HoRvQxeByNSrHObGLg - repackage-msix-win64/debug: NerpOP6ZQlOGsR9FJbGfSw - repackage-rpm-linux-shippable/opt: cEapTfHlTcuam6RrYLQs1A - repackage-rpm-linux64-aarch64-shippable/opt: a2xnNObeRQGtQq597srzkw - repackage-rpm-linux64-shippable/opt: QRcexftMQV6zkeB3pkGfGg - repackage-shippable-l10n-msix-win32-shippable/opt: X9Rtf7oQSwazSSP8zCa5MQ - repackage-shippable-l10n-msix-win64-aarch64-shippable/opt: fhUHy-gHQCewZXnvZIc6pA - repackage-shippable-l10n-msix-win64-shippable/opt: P70p805AQUWZ44ESzK4czA - repackage-signing-l10n-ach-win32-shippable/opt: bcmO20tHQ72XEeXw34jkGQ - repackage-signing-l10n-ach-win64-aarch64-shippable/opt: U8u45rnkSV-ZpaSg7mCb3Q - repackage-signing-l10n-ach-win64-shippable/opt: U1YZwBhAQE6TkYRudyvZlg - repackage-signing-l10n-af-win32-shippable/opt: J-ClxhwkSYqOUDoxJYWiFg - repackage-signing-l10n-af-win64-aarch64-shippable/opt: P7s_2gbsRBixIWbJH28Ljw - repackage-signing-l10n-af-win64-shippable/opt: XBqu4yOZTReaNEmwbwr5Zg - repackage-signing-l10n-an-win32-shippable/opt: FfMH1VbZT92oV-R0ud449Q - repackage-signing-l10n-an-win64-aarch64-shippable/opt: TeE2f_aCQ5u3Xz0LYokosA - repackage-signing-l10n-an-win64-shippable/opt: Y_R6_1ngR-SNPZXr-NEdZA - repackage-signing-l10n-ar-win32-shippable/opt: SnqD9nRlRtaLVut9M-vvmw - repackage-signing-l10n-ar-win64-aarch64-shippable/opt: LDbxtmYOTjySPKn3K6hNYw - repackage-signing-l10n-ar-win64-shippable/opt: LQkILV47Q1GRNLDbZYIcYA - repackage-signing-l10n-ast-win32-shippable/opt: LNsaibfuT9-SD8mb_fN5pA - repackage-signing-l10n-ast-win64-aarch64-shippable/opt: YCqR0-j6Q_KrdpKpLhRKfw - repackage-signing-l10n-ast-win64-shippable/opt: OYgajHp5SJO5XogULj6MLg - repackage-signing-l10n-az-win32-shippable/opt: Kyo6p7-zSdyk5fDPmqggng - repackage-signing-l10n-az-win64-aarch64-shippable/opt: WsYCyM0yRFm_RCCMlN_cgw - repackage-signing-l10n-az-win64-shippable/opt: A2vm4_ZtQ7KatycmIcOTIg - repackage-signing-l10n-be-win32-shippable/opt: GWQpANqeQSKo3iuvStco7w - repackage-signing-l10n-be-win64-aarch64-shippable/opt: fzeS6UciRs-iWAePsu_UvQ - repackage-signing-l10n-be-win64-shippable/opt: UOmgYWnfT-yjzTHIdty0zQ - repackage-signing-l10n-bg-win32-shippable/opt: fnG-XXaCSmWSHlpLfiSUdA - repackage-signing-l10n-bg-win64-aarch64-shippable/opt: PunjwgaLSyit0hvNn_4WTw - repackage-signing-l10n-bg-win64-shippable/opt: AbY_lvcWRmGd5imO5i7Dng - repackage-signing-l10n-bn-win32-shippable/opt: KJguMBkKQmeulOgGexnfYg - repackage-signing-l10n-bn-win64-aarch64-shippable/opt: CjGgbQTdTyCcTXuQoHML_Q - repackage-signing-l10n-bn-win64-shippable/opt: cDmpzvQURvasAoSPSdl4xw - repackage-signing-l10n-br-win32-shippable/opt: NuYy1lrKQLaxQ2MdhJD9fQ - repackage-signing-l10n-br-win64-aarch64-shippable/opt: FLjlFn-vR5SbdltF_Ejkng - repackage-signing-l10n-br-win64-shippable/opt: fD9e9Ks9Q6yVTf5ZAGHZCg - repackage-signing-l10n-bs-win32-shippable/opt: GGdRlNQAS5iCcJ7Q6P94Sg - repackage-signing-l10n-bs-win64-aarch64-shippable/opt: P7mOGteTSDeJ0X_cvxGxjA - repackage-signing-l10n-bs-win64-shippable/opt: f72sm1VLQCiVzaJ7lPVXAA - repackage-signing-l10n-ca-valencia-win32-shippable/opt: ChnUkhc0SgqiyX-tcSPMbg - repackage-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: fzymT5gER-iFHw-PKsXHHg - repackage-signing-l10n-ca-valencia-win64-shippable/opt: DhBcihPtSGOuDiLvf6MtMw - repackage-signing-l10n-ca-win32-shippable/opt: QrY9wLy_QCWBeBtfmJq5mw - repackage-signing-l10n-ca-win64-aarch64-shippable/opt: G6nOT7d1Q16OOKg_EMpVcQ - repackage-signing-l10n-ca-win64-shippable/opt: EEgdrPIlTE2w8smEvsECZQ - repackage-signing-l10n-cak-win32-shippable/opt: E615bpV7STi5LMsKbvA6-w - repackage-signing-l10n-cak-win64-aarch64-shippable/opt: GaUZMFdoShC4lUN1l95LIQ - repackage-signing-l10n-cak-win64-shippable/opt: X68Nu2LpTM6Ua3PGdyjrOg - repackage-signing-l10n-cs-win32-shippable/opt: HLw-oiUGS32_NBixGtjuGA - repackage-signing-l10n-cs-win64-aarch64-shippable/opt: EisJ2jakRo-bRfCvl9vYXQ - repackage-signing-l10n-cs-win64-shippable/opt: YOuG4nnLRWSLjfQx6pnYOA - repackage-signing-l10n-cy-win32-shippable/opt: NDGXkm3HT_KAA9CBRD_IMw - repackage-signing-l10n-cy-win64-aarch64-shippable/opt: doatv2hoSweSsT0Cs6ssrA - repackage-signing-l10n-cy-win64-shippable/opt: Fc2m8zj7Q-C1Cj_MeBic2w - repackage-signing-l10n-da-win32-shippable/opt: O_le5TC-Qvu3vwe2U9w3DA - repackage-signing-l10n-da-win64-aarch64-shippable/opt: LLxwwHW8S9mFbJLcTV45fA - repackage-signing-l10n-da-win64-shippable/opt: dWifOJgHS_aL0pU56DoCzQ - repackage-signing-l10n-de-win32-shippable/opt: EI7Ihc7sRYOBHDcOwT8sCA - repackage-signing-l10n-de-win64-aarch64-shippable/opt: ArjC1QOwRr2u6eUg3LtK8A - repackage-signing-l10n-de-win64-shippable/opt: FEJl1SsRTsG_NoQLllZm3Q - repackage-signing-l10n-dsb-win32-shippable/opt: fbB0dKEETemClXlo_W1ECA - repackage-signing-l10n-dsb-win64-aarch64-shippable/opt: eG7z89I0SZGmoz1GWzN9ew - repackage-signing-l10n-dsb-win64-shippable/opt: V0e-kF1ORt2MdjKmKkMwaw - repackage-signing-l10n-el-win32-shippable/opt: PG0_I4KdRvCj4MXyyI5j0g - repackage-signing-l10n-el-win64-aarch64-shippable/opt: HKtiBL1RT3KlsWNLnHcwXA - repackage-signing-l10n-el-win64-shippable/opt: VP4-5t9qTaWU3lbnmteJKg - repackage-signing-l10n-en-CA-win32-shippable/opt: ULvKL1l6R3OMOFx-COJhBA - repackage-signing-l10n-en-CA-win64-aarch64-shippable/opt: I4MpSSANR8-ot3aXmQs4vA - repackage-signing-l10n-en-CA-win64-shippable/opt: AvkuFmgYRdSqcQK43yivEg - repackage-signing-l10n-en-GB-win32-shippable/opt: bPmaW6kiRqqnyB6ACFqvGw - repackage-signing-l10n-en-GB-win64-aarch64-shippable/opt: eP567CUyQXu4OQ2M-ImX_Q - repackage-signing-l10n-en-GB-win64-shippable/opt: XnrN_k0eTleNd4YQhszJDw - repackage-signing-l10n-eo-win32-shippable/opt: No4g5w-CQ_KXFi8j12wx7Q - repackage-signing-l10n-eo-win64-aarch64-shippable/opt: RilP0MR6QTGrVWR4wmc-Hw - repackage-signing-l10n-eo-win64-shippable/opt: WwyC1mJXTMWz3LcWQsR4Og - repackage-signing-l10n-es-AR-win32-shippable/opt: JBTi5CXCTNuV5_bH18-LjA - repackage-signing-l10n-es-AR-win64-aarch64-shippable/opt: U2M_3jc2R7SUlqX5aH5TTA - repackage-signing-l10n-es-AR-win64-shippable/opt: PmWPximdSeGuHzPjPBRf8Q - repackage-signing-l10n-es-CL-win32-shippable/opt: arP2LZ8nQn2idT7r6blT7g - repackage-signing-l10n-es-CL-win64-aarch64-shippable/opt: OYhOWloAR2e_VMRhBw-kNA - repackage-signing-l10n-es-CL-win64-shippable/opt: UjLlK1YBRACBLaMGZ-6Cug - repackage-signing-l10n-es-ES-win32-shippable/opt: bQ2AlBSiRjqHZucdTPWlkw - repackage-signing-l10n-es-ES-win64-aarch64-shippable/opt: D2Gu7344Q-O_j0fx0QPstA - repackage-signing-l10n-es-ES-win64-shippable/opt: BuzL9FyzSFKGyD66FoJ03A - repackage-signing-l10n-es-MX-win32-shippable/opt: bD44DbKVSlypgIOwEEtQ4A - repackage-signing-l10n-es-MX-win64-aarch64-shippable/opt: O4vGOh_AQTmdHGgr1L_TJQ - repackage-signing-l10n-es-MX-win64-shippable/opt: fMkKn-noS8GFGFUq3eSJWA - repackage-signing-l10n-et-win32-shippable/opt: dnYLOjDmSle8OlTAsi5uJQ - repackage-signing-l10n-et-win64-aarch64-shippable/opt: X9LPGqCpTLqZ1GMnbu8Xsg - repackage-signing-l10n-et-win64-shippable/opt: EO9_XleXRzOKnV1WsEVf7g - repackage-signing-l10n-eu-win32-shippable/opt: Ht47MmkZQw-d6FoOHf86Dw - repackage-signing-l10n-eu-win64-aarch64-shippable/opt: O6J2l5lPSoCwR3fUHy7jQQ - repackage-signing-l10n-eu-win64-shippable/opt: WlApRHcrTViqp-hA0VsYvw - repackage-signing-l10n-fa-win32-shippable/opt: b7MMxpCxSuuu9_E1CA-0_w - repackage-signing-l10n-fa-win64-aarch64-shippable/opt: CLhiFBfmQXCY1IKPJqDTSA - repackage-signing-l10n-fa-win64-shippable/opt: WBHwMc1bQXCSjZm1EPGDgA - repackage-signing-l10n-ff-win32-shippable/opt: AWiFeiGOSCqvMnpxhm1Wog - repackage-signing-l10n-ff-win64-aarch64-shippable/opt: OTlMtUz7QE2yObZ_22gXJg - repackage-signing-l10n-ff-win64-shippable/opt: POiewI3UT_yo0ZYIo-QMDg - repackage-signing-l10n-fi-win32-shippable/opt: b1F_S_G9QK2gDx8B8t-90A - repackage-signing-l10n-fi-win64-aarch64-shippable/opt: NDIRMFshToKX9LvH0spAXA - repackage-signing-l10n-fi-win64-shippable/opt: R2LTNsNTRU6Pi4ACDe8Kjg - repackage-signing-l10n-fr-win32-shippable/opt: Yn8IywHdShighGzKORyMGw - repackage-signing-l10n-fr-win64-aarch64-shippable/opt: WRMosq71QJGVaJVwrm9mWg - repackage-signing-l10n-fr-win64-shippable/opt: XRUiWQVITvWllt0_ftPcHg - repackage-signing-l10n-fur-win32-shippable/opt: PdXm528eTee2fOJ8QqfIvg - repackage-signing-l10n-fur-win64-aarch64-shippable/opt: BLvnMwEKReCvuN9hlDDlBQ - repackage-signing-l10n-fur-win64-shippable/opt: ZyecijIoSuyJ3FnNtZxMAw - repackage-signing-l10n-fy-NL-win32-shippable/opt: Mls9g5snR4CSBI-Cw-YPMA - repackage-signing-l10n-fy-NL-win64-aarch64-shippable/opt: dJdCQ84TR52x9uiR882Mtg - repackage-signing-l10n-fy-NL-win64-shippable/opt: L-oyGhIqQ8ufFBdVNPm7PQ - repackage-signing-l10n-ga-IE-win32-shippable/opt: YyEK0GsSQk6x3bxQHpyDfQ - repackage-signing-l10n-ga-IE-win64-aarch64-shippable/opt: bzOqHYQbSviMRP7g5Fe_-w - repackage-signing-l10n-ga-IE-win64-shippable/opt: ff2MjEsqSyKZlOcjOtiXeQ - repackage-signing-l10n-gd-win32-shippable/opt: ablt_ZEJQ5KJstM1-fLUuQ - repackage-signing-l10n-gd-win64-aarch64-shippable/opt: E8QCDgaNQvCdjw0Fs1Aupg - repackage-signing-l10n-gd-win64-shippable/opt: bJdqVWUOQt6P4_TRdx6P4w - repackage-signing-l10n-gl-win32-shippable/opt: RHmGCrlVTMeJAJk5i7-ERw - repackage-signing-l10n-gl-win64-aarch64-shippable/opt: TofF3qVXRl2pTDj12KL_gA - repackage-signing-l10n-gl-win64-shippable/opt: Jxymwoo1Ry2rfNb6Z6m5lQ - repackage-signing-l10n-gn-win32-shippable/opt: TWQJ65HbSYuOluqmNc80Xg - repackage-signing-l10n-gn-win64-aarch64-shippable/opt: brN-RAUnTHOlGuy4GTyjCw - repackage-signing-l10n-gn-win64-shippable/opt: HeIkhVFbQ1WdoAP40TRgeQ - repackage-signing-l10n-gu-IN-win32-shippable/opt: c_wb8w-iR7SUpLj5MjwB2w - repackage-signing-l10n-gu-IN-win64-aarch64-shippable/opt: O1PP6GWSRsOOha2IvjFW5w - repackage-signing-l10n-gu-IN-win64-shippable/opt: ArRF9Jq7R5SxJCXshoFSLw - repackage-signing-l10n-he-win32-shippable/opt: a14w0DUwT4CcWpqfdsNg0Q - repackage-signing-l10n-he-win64-aarch64-shippable/opt: STtTKlXHQNGzY_ACmu9vLw - repackage-signing-l10n-he-win64-shippable/opt: AprffeU1TtOq0jpcSRRXAA - repackage-signing-l10n-hi-IN-win32-shippable/opt: MlsWht1SSd2vfPDPGvskRQ - repackage-signing-l10n-hi-IN-win64-aarch64-shippable/opt: epZEYz2dRvKLkJc6N2-GDA - repackage-signing-l10n-hi-IN-win64-shippable/opt: DgGi_-YHRlSM37CF8KZkZQ - repackage-signing-l10n-hr-win32-shippable/opt: JnW_iZ3WRwKduAbDUIIcxg - repackage-signing-l10n-hr-win64-aarch64-shippable/opt: KCQDStlvR0-N-aGbHpprtA - repackage-signing-l10n-hr-win64-shippable/opt: fwlCshIQQIGHPGOkrY0afw - repackage-signing-l10n-hsb-win32-shippable/opt: KuhdSZiDTBqD5IUiuDRq2g - repackage-signing-l10n-hsb-win64-aarch64-shippable/opt: ep3JPn-dRfSj7Oq-5JgObA - repackage-signing-l10n-hsb-win64-shippable/opt: YbCkwPq9RIG5TqqM-FbmkA - repackage-signing-l10n-hu-win32-shippable/opt: fxK70vJvTXqqDe_k9pdFvg - repackage-signing-l10n-hu-win64-aarch64-shippable/opt: U3xu1FUHQjqxwcphqe0Ifw - repackage-signing-l10n-hu-win64-shippable/opt: fUOjTuNvTPyGORX8rcwnnQ - repackage-signing-l10n-hy-AM-win32-shippable/opt: aaLy6kduRTq_BjB2aPxhZg - repackage-signing-l10n-hy-AM-win64-aarch64-shippable/opt: OK-lMctoTHuhfclbGzhKUQ - repackage-signing-l10n-hy-AM-win64-shippable/opt: W4LdpxlXQO67p-xWFNezWw - repackage-signing-l10n-ia-win32-shippable/opt: D3hJpyMxS5a90ZhS59y4bg - repackage-signing-l10n-ia-win64-aarch64-shippable/opt: bAiMHgreRsCjYZ5TJwq6zQ - repackage-signing-l10n-ia-win64-shippable/opt: RtmVPLtLRsCYlWu5mItGkw - repackage-signing-l10n-id-win32-shippable/opt: cbYqb1l9QiGKuAtOh7_WXQ - repackage-signing-l10n-id-win64-aarch64-shippable/opt: Di-MvgK2QkW7FwilB1dllA - repackage-signing-l10n-id-win64-shippable/opt: absH9_TtTtq35D2P0HMDjA - repackage-signing-l10n-is-win32-shippable/opt: PAY8-e44RHOa2JRyl5HSsA - repackage-signing-l10n-is-win64-aarch64-shippable/opt: ZsKexP0VRm2cbL9fcN_4pg - repackage-signing-l10n-is-win64-shippable/opt: dro2GA_jR8iBfhP2hBTzMw - repackage-signing-l10n-it-win32-shippable/opt: VZvItyXvSU2EpayahMjnSA - repackage-signing-l10n-it-win64-aarch64-shippable/opt: MlqpqpO2QLmfVFbutec7dA - repackage-signing-l10n-it-win64-shippable/opt: EmwMq4SJQa6TZHDZCKLDLg - repackage-signing-l10n-ja-win32-shippable/opt: MRPVov_JSBeStP__ZhSWLQ - repackage-signing-l10n-ja-win64-aarch64-shippable/opt: NauQgjJYQYCdXDmx1dLVpQ - repackage-signing-l10n-ja-win64-shippable/opt: Eee8FJ0tRWe21KLMyn47pg - repackage-signing-l10n-ka-win32-shippable/opt: HsroJuERSJSf3ZnSNwaFIg - repackage-signing-l10n-ka-win64-aarch64-shippable/opt: GLgp2zrwTsC5UzL25zDefw - repackage-signing-l10n-ka-win64-shippable/opt: B201Zi1IS4S2Q3JQQrhkIg - repackage-signing-l10n-kab-win32-shippable/opt: fMAJ_dIdRCiP2EuJ9m6D6g - repackage-signing-l10n-kab-win64-aarch64-shippable/opt: LT3mE0BOTRi-0SAGwo5TUg - repackage-signing-l10n-kab-win64-shippable/opt: FnL3rQZaRFujpCyON45peQ - repackage-signing-l10n-kk-win32-shippable/opt: a3GOyBtMSgCQLMj1oQfm2A - repackage-signing-l10n-kk-win64-aarch64-shippable/opt: NLyydotSRm6Q9nfVLvUvtQ - repackage-signing-l10n-kk-win64-shippable/opt: HNx5BDJ4RcafEv__mMZZmQ - repackage-signing-l10n-km-win32-shippable/opt: TMpROirsS5ehT3yGfjJzKg - repackage-signing-l10n-km-win64-aarch64-shippable/opt: VeUzQaqgQpWP_fTi3oNh5g - repackage-signing-l10n-km-win64-shippable/opt: UhPHOw2xS5uM2W0lQ_UCwg - repackage-signing-l10n-kn-win32-shippable/opt: Xoe1LTyoS3u_wqbst-RF8A - repackage-signing-l10n-kn-win64-aarch64-shippable/opt: IjHtDOGGQsSoeoXlIWZxwA - repackage-signing-l10n-kn-win64-shippable/opt: a94heZQlRSKuS1wO3CNsLA - repackage-signing-l10n-ko-win32-shippable/opt: PLIve-62Smq4NU2lc-ygQA - repackage-signing-l10n-ko-win64-aarch64-shippable/opt: SJgA0qHHSI-2Lb9CnbUfow - repackage-signing-l10n-ko-win64-shippable/opt: bPuOThK9RKm-yxmbLJXqTw - repackage-signing-l10n-lij-win32-shippable/opt: W1Pj-mYaRPatKyYdhPkCYw - repackage-signing-l10n-lij-win64-aarch64-shippable/opt: f_jhNPdNSaC7y5XFpdtC0g - repackage-signing-l10n-lij-win64-shippable/opt: cK31JyIaQYKunpuJq06EEg - repackage-signing-l10n-lt-win32-shippable/opt: EZE4QYQmRNGrUGusuFzFjg - repackage-signing-l10n-lt-win64-aarch64-shippable/opt: X_FYLcq4QIiKLEJCh3C_1Q - repackage-signing-l10n-lt-win64-shippable/opt: BR1U183vTXmNY5_Rdz_PuA - repackage-signing-l10n-lv-win32-shippable/opt: N1JGw6hdTKW5TlWrQXBc9A - repackage-signing-l10n-lv-win64-aarch64-shippable/opt: fQoBCzUSSAGnNOsrNZ_fzw - repackage-signing-l10n-lv-win64-shippable/opt: ZwKZkv3sT72TJWP8AbXyOw - repackage-signing-l10n-mk-win32-shippable/opt: L2Np98j3SRqa2xoVjZ5iOg - repackage-signing-l10n-mk-win64-aarch64-shippable/opt: dpn8eoBwRoWdnGpEhXQiag - repackage-signing-l10n-mk-win64-shippable/opt: ZEZO_SVKQKeZEPCdVdrIuA - repackage-signing-l10n-mr-win32-shippable/opt: cSf-FUfRToG2eB1IxbYY3A - repackage-signing-l10n-mr-win64-aarch64-shippable/opt: J21q0AfPQjqh7533tm1-JA - repackage-signing-l10n-mr-win64-shippable/opt: HSfSq0BySbOe2Ib3n2Glvw - repackage-signing-l10n-ms-win32-shippable/opt: cH_gXKEqQpygcIpVGvl4qA - repackage-signing-l10n-ms-win64-aarch64-shippable/opt: Colv3MVARbGAZWppOrYKKQ - repackage-signing-l10n-ms-win64-shippable/opt: Pi5ddWPiQd2JkDdhE9ETcw - repackage-signing-l10n-my-win32-shippable/opt: CzYKWrn7RZq9nt9Wf-VqUA - repackage-signing-l10n-my-win64-aarch64-shippable/opt: czs9flg4SAaVroEwqltNhg - repackage-signing-l10n-my-win64-shippable/opt: dSTLJMHCQZGVme0u_lPXVg - repackage-signing-l10n-nb-NO-win32-shippable/opt: Z4927ouwQ9e9ORU383iTiw - repackage-signing-l10n-nb-NO-win64-aarch64-shippable/opt: JkBtLJglRsWKBYGBWcS_sg - repackage-signing-l10n-nb-NO-win64-shippable/opt: QA3sFg8pQ3Gbro4lBuRQUw - repackage-signing-l10n-ne-NP-win32-shippable/opt: MCl_p5nCRhSXCD8ToHDPIA - repackage-signing-l10n-ne-NP-win64-aarch64-shippable/opt: Dv0xgXk_Qt6nwvce13eNpQ - repackage-signing-l10n-ne-NP-win64-shippable/opt: SlEis8nnQiaOIf37tNxqRQ - repackage-signing-l10n-nl-win32-shippable/opt: ff3VbnRZTZiBYjVOctD0Zw - repackage-signing-l10n-nl-win64-aarch64-shippable/opt: Zfz6R3BxTJ2yRzvTHJXP8Q - repackage-signing-l10n-nl-win64-shippable/opt: JTbOmYAxQ3WvYhN35JrVYQ - repackage-signing-l10n-nn-NO-win32-shippable/opt: Qr61UnCQQfqn6ukZGrPDDQ - repackage-signing-l10n-nn-NO-win64-aarch64-shippable/opt: AfzGz3ApQNiH0VfJ4VvczA - repackage-signing-l10n-nn-NO-win64-shippable/opt: UvvCrHHZSxGm0scdnM3O3w - repackage-signing-l10n-oc-win32-shippable/opt: YeDEF13FQn-ARDYN_mmJiA - repackage-signing-l10n-oc-win64-aarch64-shippable/opt: WzkyAlJgQWmGhytUIQRR5g - repackage-signing-l10n-oc-win64-shippable/opt: PGvWqMaDQJGmBeDEsr9Zlg - repackage-signing-l10n-pa-IN-win32-shippable/opt: dE15Wi71Qv28E2Vrlymn5Q - repackage-signing-l10n-pa-IN-win64-aarch64-shippable/opt: Rlrq3HMyTtymZHOsvxkFag - repackage-signing-l10n-pa-IN-win64-shippable/opt: PubBCr5wRfaOQjN_OG-6YQ - repackage-signing-l10n-pl-win32-shippable/opt: YJPQLZ3mRmmjCczfmLKUmQ - repackage-signing-l10n-pl-win64-aarch64-shippable/opt: N-yxIlW_SletUgLX3ehLkA - repackage-signing-l10n-pl-win64-shippable/opt: NvH_4iB1TP-hjdXE6p60Ag - repackage-signing-l10n-pt-BR-win32-shippable/opt: fR4yFTaRTL-1DPew_vAevA - repackage-signing-l10n-pt-BR-win64-aarch64-shippable/opt: F7QRCX0XTz-3cQE40uDWxQ - repackage-signing-l10n-pt-BR-win64-shippable/opt: Fl8vWP_6RpSHLSZQrqIWzQ - repackage-signing-l10n-pt-PT-win32-shippable/opt: HjqJ8jMzTgOoHR7f_pUg6g - repackage-signing-l10n-pt-PT-win64-aarch64-shippable/opt: Oia2rJ5sQ_iI3K8tadKMlg - repackage-signing-l10n-pt-PT-win64-shippable/opt: AjlD9noHSWiJqZNxFxYOoA - repackage-signing-l10n-rm-win32-shippable/opt: cNOQ9yazQpGuB92clYw4rw - repackage-signing-l10n-rm-win64-aarch64-shippable/opt: Qf7zjFufSu6KTdTkTs6icw - repackage-signing-l10n-rm-win64-shippable/opt: A9dmaM2ORhiS0Dwm5xpQUg - repackage-signing-l10n-ro-win32-shippable/opt: BGDSGgGUQIStViGccXjDwg - repackage-signing-l10n-ro-win64-aarch64-shippable/opt: Nt0LkNyaQPCx9H8eb0C-bg - repackage-signing-l10n-ro-win64-shippable/opt: PvYJO_STQ8e9NGHbkIKInw - repackage-signing-l10n-ru-win32-shippable/opt: Wa1xH8G_RbefNqr6bR11xA - repackage-signing-l10n-ru-win64-aarch64-shippable/opt: f0hFEBQpTwmIBor43WnFgA - repackage-signing-l10n-ru-win64-shippable/opt: Ht2Bwg9bSrq0MegeZD1XHQ - repackage-signing-l10n-sat-win32-shippable/opt: FUms_KDOQ7CaphcIaFhLqg - repackage-signing-l10n-sat-win64-aarch64-shippable/opt: BDsPR4XqRJCULA-kGsN7Sg - repackage-signing-l10n-sat-win64-shippable/opt: FWMnDJcTQZGGJpNG_0tT8A - repackage-signing-l10n-sc-win32-shippable/opt: WI04vk54QUa93SQXtW8n0Q - repackage-signing-l10n-sc-win64-aarch64-shippable/opt: HwO39PY8R6SUyZNjcd8Bgg - repackage-signing-l10n-sc-win64-shippable/opt: S0gMF2ESTK2VPRypMRVDBg - repackage-signing-l10n-sco-win32-shippable/opt: RGo_YHW2SVCkX8fGAftxxw - repackage-signing-l10n-sco-win64-aarch64-shippable/opt: LmWiu_7BQkK3difovYq1aQ - repackage-signing-l10n-sco-win64-shippable/opt: HNR7216zSsybxj4SjqcUqw - repackage-signing-l10n-si-win32-shippable/opt: NCErJl8bTj2Su2kB_dZ1KQ - repackage-signing-l10n-si-win64-aarch64-shippable/opt: D-SDasgiSJ6MstbqxWR_IQ - repackage-signing-l10n-si-win64-shippable/opt: NMkx74QEQUeshD5q28WMow - repackage-signing-l10n-sk-win32-shippable/opt: dlwV-g3kTEa_uHcXNjIJ9g - repackage-signing-l10n-sk-win64-aarch64-shippable/opt: Jbt3QWy-RU-NT4QYnB9qWg - repackage-signing-l10n-sk-win64-shippable/opt: IbQcLdZFTzKkiy3dnZ7Jlg - repackage-signing-l10n-skr-win32-shippable/opt: C5KKoD60T7qi2v641NLoCw - repackage-signing-l10n-skr-win64-aarch64-shippable/opt: cEPnvUNPQMiRS3sUB_ulJw - repackage-signing-l10n-skr-win64-shippable/opt: AzgKKzSTSsuKkhoWViy1hg - repackage-signing-l10n-sl-win32-shippable/opt: TF1gLpU9RDOlaixkd8_-rQ - repackage-signing-l10n-sl-win64-aarch64-shippable/opt: YPZtdfFtQv2SX51SOqVLug - repackage-signing-l10n-sl-win64-shippable/opt: JraQOVa5R16AyaffMFPJ7A - repackage-signing-l10n-son-win32-shippable/opt: Jw3QQX1QSiq0SjjPLhfceQ - repackage-signing-l10n-son-win64-aarch64-shippable/opt: MGtQQDUMTR-TGUz4Iirrog - repackage-signing-l10n-son-win64-shippable/opt: NswCjlp5QgCNVoGC5G8OpQ - repackage-signing-l10n-sq-win32-shippable/opt: AQdzmhGJRBCKBIYfdUQjlg - repackage-signing-l10n-sq-win64-aarch64-shippable/opt: JOa-A3GZTxKRnWQ8iveXeQ - repackage-signing-l10n-sq-win64-shippable/opt: a9-K_T_LTsq1vH9nqa140w - repackage-signing-l10n-sr-win32-shippable/opt: aEOxCDFbRTWGW9tgk9F4yQ - repackage-signing-l10n-sr-win64-aarch64-shippable/opt: N3IxrVvyT3CvF7lO_tAsNw - repackage-signing-l10n-sr-win64-shippable/opt: SVEQaVeZRXCqt6ji1pCusQ - repackage-signing-l10n-sv-SE-win32-shippable/opt: IOfEyZy2SZ-VBUeB09J5Sw - repackage-signing-l10n-sv-SE-win64-aarch64-shippable/opt: Lv8SPuLeTwSY7maXJJtzUQ - repackage-signing-l10n-sv-SE-win64-shippable/opt: YglJmUycRQKCnVc-OU-w4w - repackage-signing-l10n-szl-win32-shippable/opt: NZufPnahQHym0Ehhi8kyJw - repackage-signing-l10n-szl-win64-aarch64-shippable/opt: EANM6XBcSWWRBiALEqw1_g - repackage-signing-l10n-szl-win64-shippable/opt: c7Q1yxFSSo2mgyFcq3VbJA - repackage-signing-l10n-ta-win32-shippable/opt: IPleCIUTT9ujYIVfeSG_ww - repackage-signing-l10n-ta-win64-aarch64-shippable/opt: RHYwiWdHQRKfCdXbDXJurA - repackage-signing-l10n-ta-win64-shippable/opt: Cr-wkQ3OQUq-JqE0EJjTRA - repackage-signing-l10n-te-win32-shippable/opt: bh7QAyRHQNODcnqR9aUhHQ - repackage-signing-l10n-te-win64-aarch64-shippable/opt: I-jHd2oPQdCduVZv9Aq2xA - repackage-signing-l10n-te-win64-shippable/opt: Xg6Li3_zSCWqZrkHFl-exg - repackage-signing-l10n-tg-win32-shippable/opt: Lz_1MZxgTC-O1-VCUYz5OA - repackage-signing-l10n-tg-win64-aarch64-shippable/opt: DpuMti6sTJagOL13i8_KkA - repackage-signing-l10n-tg-win64-shippable/opt: KNlzepVUQW6uuZ71d-IR1A - repackage-signing-l10n-th-win32-shippable/opt: Fy6NUWsTSvuICOG7BzlY4g - repackage-signing-l10n-th-win64-aarch64-shippable/opt: NEXIhwhgT-2ySRUbzCpPgw - repackage-signing-l10n-th-win64-shippable/opt: AP07qM3ZTzuwgysHdb6l4A - repackage-signing-l10n-tl-win32-shippable/opt: UO96Zk_lQbO2p868ltgjng - repackage-signing-l10n-tl-win64-aarch64-shippable/opt: KW_gNegDSq-jkD_d9MNzmQ - repackage-signing-l10n-tl-win64-shippable/opt: eJW32KOcSu68UWXmjVmEuQ - repackage-signing-l10n-tr-win32-shippable/opt: YZl0YQvCRD6ib6MKSXW3mg - repackage-signing-l10n-tr-win64-aarch64-shippable/opt: T2j2PEr5TOCkxz8_XBcsxA - repackage-signing-l10n-tr-win64-shippable/opt: FXwOMmH7RqCnwK_Yh3tt6g - repackage-signing-l10n-trs-win32-shippable/opt: XE6dxcaZTjmTKpILqiCj8g - repackage-signing-l10n-trs-win64-aarch64-shippable/opt: SOm2SEERSf2BFGpw6rI5Pg - repackage-signing-l10n-trs-win64-shippable/opt: H02lsHyyTMeMQOJNVo4kZw - repackage-signing-l10n-uk-win32-shippable/opt: KSevlppARn6O0kVKk9b7Fw - repackage-signing-l10n-uk-win64-aarch64-shippable/opt: fJphszAjQAaO7wWXSM9t5g - repackage-signing-l10n-uk-win64-shippable/opt: BTGLfOwNTBejVXcvPmjIeg - repackage-signing-l10n-ur-win32-shippable/opt: RlsFneTETvyCt0qnXlAr4Q - repackage-signing-l10n-ur-win64-aarch64-shippable/opt: Lz9A6bqpTGmj7QDczPVyAg - repackage-signing-l10n-ur-win64-shippable/opt: Fi9E8FyDQdqRjGq_NmT_tw - repackage-signing-l10n-uz-win32-shippable/opt: Rno2F5HQS_-naki8zrFHyQ - repackage-signing-l10n-uz-win64-aarch64-shippable/opt: OTHOioIZROCGSMEtlzovpQ - repackage-signing-l10n-uz-win64-shippable/opt: BnoDVrlcS1a6ebw_VN3vqA - repackage-signing-l10n-vi-win32-shippable/opt: EBsvwKn4QmyrDTlnhHsl2g - repackage-signing-l10n-vi-win64-aarch64-shippable/opt: X46M8n-NTu6GxSfWfm7R4g - repackage-signing-l10n-vi-win64-shippable/opt: DSfhTMKOR9i86N72jVwTbg - repackage-signing-l10n-xh-win32-shippable/opt: fN5bOVsCSuu6Ti5Y_7_Qdw - repackage-signing-l10n-xh-win64-aarch64-shippable/opt: LVwd_eNeRIW4GtaHTmIIQw - repackage-signing-l10n-xh-win64-shippable/opt: WQyzW-dURuKnLhLVoyydXg - repackage-signing-l10n-zh-CN-win32-shippable/opt: Mziuk5PSTKGFqIqBHX5qaQ - repackage-signing-l10n-zh-CN-win64-aarch64-shippable/opt: UYad6jvoT7enO8Ske2aPkA - repackage-signing-l10n-zh-CN-win64-shippable/opt: aJjWzhsSTXOEvh2FDxKGcg - repackage-signing-l10n-zh-TW-win32-shippable/opt: baRuY9j9Qm26O0ZEvAro7Q - repackage-signing-l10n-zh-TW-win64-aarch64-shippable/opt: V3Mz0budTSGWZEh3fDbM-A - repackage-signing-l10n-zh-TW-win64-shippable/opt: WUzPTQ0JQ-CzyqSN3j2QKw - repackage-signing-msi-ach-win32-shippable/opt: XCT75zoMQm2UV5jwJvMjsw - repackage-signing-msi-ach-win64-shippable/opt: eyMVU2VeTkqTRNxQ59BEGg - repackage-signing-msi-af-win32-shippable/opt: UMQTCojiRZiu_h2A0LjnQw - repackage-signing-msi-af-win64-shippable/opt: JeZ6hf-yR9i6XCPCt9ppEw - repackage-signing-msi-an-win32-shippable/opt: SzWqYBbjQcau7IrJfARfgQ - repackage-signing-msi-an-win64-shippable/opt: MpHdCuneQ--lfGP6mUdJ5g - repackage-signing-msi-ar-win32-shippable/opt: PHXsV8V-SCC5Fv_DK0my9w - repackage-signing-msi-ar-win64-shippable/opt: c-C4KSZwRqOJpZ53JzFB3Q - repackage-signing-msi-ast-win32-shippable/opt: EN14hdpzRsK2rMyfXrmRHQ - repackage-signing-msi-ast-win64-shippable/opt: XoUOYuwoS0-V-iFUinhbtw - repackage-signing-msi-az-win32-shippable/opt: Zse5f96aR7GdbqOpGHDp-A - repackage-signing-msi-az-win64-shippable/opt: QRqF0GAeTSixDQD89cC_0g - repackage-signing-msi-be-win32-shippable/opt: SWTbzUyfTNKjXfVS5YhRqA - repackage-signing-msi-be-win64-shippable/opt: C_OKyhLxQlWGhfEMQadfcA - repackage-signing-msi-bg-win32-shippable/opt: JFFJwfy0R8CPNVySYlMzUw - repackage-signing-msi-bg-win64-shippable/opt: Q9CN8W6lQeawbrZNJ2zZsQ - repackage-signing-msi-bn-win32-shippable/opt: a710xhpDQSCqZn6y_LvC2w - repackage-signing-msi-bn-win64-shippable/opt: c-zW5vJ3TmK8rVRpIyLbjg - repackage-signing-msi-br-win32-shippable/opt: fot79iFMQxa013aienLT0Q - repackage-signing-msi-br-win64-shippable/opt: ZOKqtvAoQy2DJaNAsr7s3g - repackage-signing-msi-bs-win32-shippable/opt: HyfOwXDbQ9W6LzPQWepp1g - repackage-signing-msi-bs-win64-shippable/opt: bjtO2ighT8-g23jTjGde6w - repackage-signing-msi-ca-valencia-win32-shippable/opt: KZykuIWmRWeZ3udqL5F2Ug - repackage-signing-msi-ca-valencia-win64-shippable/opt: QkeQCP_nSj-Ua4A1VXxAiw - repackage-signing-msi-ca-win32-shippable/opt: ERkK1c_YQv2YPqcZATxjGg - repackage-signing-msi-ca-win64-shippable/opt: Xq3Sm-DfSkqof4CRpip3nA - repackage-signing-msi-cak-win32-shippable/opt: DExPdcMWSsmtDKDo5tWP5A - repackage-signing-msi-cak-win64-shippable/opt: J5ydRESqQ6KYVJxY49ibVg - repackage-signing-msi-cs-win32-shippable/opt: QutUjR3bR9S3QLItWy1UDQ - repackage-signing-msi-cs-win64-shippable/opt: UNnz-sZiTlavadnNJ_ik7g - repackage-signing-msi-cy-win32-shippable/opt: BL9xfsC2TPSSL6UGZjOOyA - repackage-signing-msi-cy-win64-shippable/opt: YpdR4hZDTAu5CTuzARu7HQ - repackage-signing-msi-da-win32-shippable/opt: OzLDE3N6RJiSVsmfKy1_9g - repackage-signing-msi-da-win64-shippable/opt: SLyWQz_TQsqhXhvuBu5XOg - repackage-signing-msi-de-win32-shippable/opt: GMdo3pzVQnKCUXnHNQpLeA - repackage-signing-msi-de-win64-shippable/opt: dsnKGqNSRmKSO7_9dENnEw - repackage-signing-msi-dsb-win32-shippable/opt: ZmP8RwOrQZu1Xle8EdWZAg - repackage-signing-msi-dsb-win64-shippable/opt: KFngDgmSRk-rVZ_h1xaGCA - repackage-signing-msi-el-win32-shippable/opt: Nvn3Xh0vS2iXjWmuvmzeEQ - repackage-signing-msi-el-win64-shippable/opt: fUVsJAZjRmeI8cqzcuCX5g - repackage-signing-msi-en-CA-win32-shippable/opt: A94UY5RgQr64ERMayvqjAQ - repackage-signing-msi-en-CA-win64-shippable/opt: JVwjtlM8QZeH60Efxj_Sug - repackage-signing-msi-en-GB-win32-shippable/opt: V5zd-oDnQlOtKyfFkSoISA - repackage-signing-msi-en-GB-win64-shippable/opt: KO1u0mR4SAiVwsGarBD59g - repackage-signing-msi-eo-win32-shippable/opt: AY_ut36xRf69uew7wyVwCg - repackage-signing-msi-eo-win64-shippable/opt: PbvBfcACQM-FuEp6alU1Lw - repackage-signing-msi-es-AR-win32-shippable/opt: A3LjAYL0Q02uhTp0BCUZPw - repackage-signing-msi-es-AR-win64-shippable/opt: O8yo2kUJTMmWauWepCpHbQ - repackage-signing-msi-es-CL-win32-shippable/opt: V26n3RW5TgerMOFbsG4csw - repackage-signing-msi-es-CL-win64-shippable/opt: WozejzVrROelHFHWtLAuNA - repackage-signing-msi-es-ES-win32-shippable/opt: EZ_iQaXeQTi1xVRuE-TUvg - repackage-signing-msi-es-ES-win64-shippable/opt: cf0f1qC3RJe4XkjHEZc7Mg - repackage-signing-msi-es-MX-win32-shippable/opt: ZLH3zQMsQUivKcdBZlwShA - repackage-signing-msi-es-MX-win64-shippable/opt: eCKIrTUaRXqswHxGhGQOEg - repackage-signing-msi-et-win32-shippable/opt: Nct-nQAaT_KWG2wmpzZZng - repackage-signing-msi-et-win64-shippable/opt: XY5lGTVST02lLA6chCGc0Q - repackage-signing-msi-eu-win32-shippable/opt: fkEXRoW0SpiTqWIUsSLvuA - repackage-signing-msi-eu-win64-shippable/opt: ZbjUlDRmRZ-p868lyW_G5A - repackage-signing-msi-fa-win32-shippable/opt: ZWdR7IpOSLCqKW9y4YAeww - repackage-signing-msi-fa-win64-shippable/opt: Rme5YFn3Rgy3wZ0L3IRmoQ - repackage-signing-msi-ff-win32-shippable/opt: F62WDB92Swu5U_zqkbP44A - repackage-signing-msi-ff-win64-shippable/opt: d-0BzojeSGysUBLpqCmJ8A - repackage-signing-msi-fi-win32-shippable/opt: Ji-LzuaKTJGBGSNCVuDjHg - repackage-signing-msi-fi-win64-shippable/opt: d8kwy_bmQL-VKqljB6h1yw - repackage-signing-msi-fr-win32-shippable/opt: Rn3fvPV7TnirJ7MY2nuvhA - repackage-signing-msi-fr-win64-shippable/opt: aV3GoNIIQoax4SWR9lS5tw - repackage-signing-msi-fur-win32-shippable/opt: Ik8xJCnlT5-zZrxLfZUYxQ - repackage-signing-msi-fur-win64-shippable/opt: RcBajb51Qo6asq_-ZS8lDA - repackage-signing-msi-fy-NL-win32-shippable/opt: Dh693RLJT4u9PhUosjf3Kw - repackage-signing-msi-fy-NL-win64-shippable/opt: DYrGSaoTSuqjBpbqb3ntIg - repackage-signing-msi-ga-IE-win32-shippable/opt: WXDY9IOYRj6_0VN2aG4Opw - repackage-signing-msi-ga-IE-win64-shippable/opt: DAdi2EuGRnaodsiA2kKKRw - repackage-signing-msi-gd-win32-shippable/opt: W-75RrmwSsaf7RgaiheptQ - repackage-signing-msi-gd-win64-shippable/opt: A0QMsTs7TzmiUUV8lDGHGA - repackage-signing-msi-gl-win32-shippable/opt: PFKPoF2aT4K0O0zDu5g6Iw - repackage-signing-msi-gl-win64-shippable/opt: dESdEhHDR-OmpZdOIBcclA - repackage-signing-msi-gn-win32-shippable/opt: ajSFx2nMQf68_gSZbGxwLg - repackage-signing-msi-gn-win64-shippable/opt: KY6GvaHRRxu84LFZZSagKQ - repackage-signing-msi-gu-IN-win32-shippable/opt: EYRk5zz4Q-ecdVWnWzyvuQ - repackage-signing-msi-gu-IN-win64-shippable/opt: W4iqV1CiRqWdI_Q2_LchPQ - repackage-signing-msi-he-win32-shippable/opt: Q3H5MCuwQmWEg547oN2vEA - repackage-signing-msi-he-win64-shippable/opt: OVMlGI5MScqG-YiwI_lhrA - repackage-signing-msi-hi-IN-win32-shippable/opt: d54jHq_WTe2HxigjKJOp3A - repackage-signing-msi-hi-IN-win64-shippable/opt: eSjiaGLMQ5Ks5rNIU-E70Q - repackage-signing-msi-hr-win32-shippable/opt: AKMIivGvTSSqsXZdPyGYiA - repackage-signing-msi-hr-win64-shippable/opt: OT9I9UODRq-nXR73rVvveQ - repackage-signing-msi-hsb-win32-shippable/opt: JiM17PWUSGGIUz85UDZ0eA - repackage-signing-msi-hsb-win64-shippable/opt: c-hsewW_RoKZxKy6HC_frQ - repackage-signing-msi-hu-win32-shippable/opt: EzDrCQUMRmqyGLY4uzm5Bw - repackage-signing-msi-hu-win64-shippable/opt: HjausjMlTbK58g1_zivTpw - repackage-signing-msi-hy-AM-win32-shippable/opt: BF22XfY3Q9-swjEXUO8i0Q - repackage-signing-msi-hy-AM-win64-shippable/opt: L6dD9vnPSIqsW0d87gUF1w - repackage-signing-msi-ia-win32-shippable/opt: CUT-oD93RHOPq_OjZZAnQQ - repackage-signing-msi-ia-win64-shippable/opt: aDH-hYTrRseedaYhosCSCQ - repackage-signing-msi-id-win32-shippable/opt: AP3e5qtgQ1a71EdKU02G4w - repackage-signing-msi-id-win64-shippable/opt: RtOStpPOTlCm7sRZece35Q - repackage-signing-msi-is-win32-shippable/opt: A6wvpZfkR2-QUIIQsbjsDA - repackage-signing-msi-is-win64-shippable/opt: X4WYUUceSoWxlX-dJj_GQQ - repackage-signing-msi-it-win32-shippable/opt: HDHRq_ASSDqD00YvpkJvRA - repackage-signing-msi-it-win64-shippable/opt: H27lgXp8QrSxsCMfksBcoA - repackage-signing-msi-ja-win32-shippable/opt: fHtyYtVoRdKNghbvZjrI1Q - repackage-signing-msi-ja-win64-shippable/opt: e9VsxJ5sRpqplgi_vBXFGw - repackage-signing-msi-ka-win32-shippable/opt: DhbrbD1cQyqPmhUSAe7-mg - repackage-signing-msi-ka-win64-shippable/opt: Cl97QulSRJuxEKRLQkmjVw - repackage-signing-msi-kab-win32-shippable/opt: BhPHdpowQAeS4tyZlHeg9w - repackage-signing-msi-kab-win64-shippable/opt: DAy24wI2SC6ruSQJ_wSVzQ - repackage-signing-msi-kk-win32-shippable/opt: afXg3IF3T8edrDLS0BHMLA - repackage-signing-msi-kk-win64-shippable/opt: b32sOavoTjyn3AOLsjDa7g - repackage-signing-msi-km-win32-shippable/opt: GcjvxOoZQCqbSDDzTrvUrA - repackage-signing-msi-km-win64-shippable/opt: GskbCjetSyqC8pbnpiyidw - repackage-signing-msi-kn-win32-shippable/opt: adEslGnpQ0-sYBuI9PagwQ - repackage-signing-msi-kn-win64-shippable/opt: MJ_UUXhATbuvbjs1azjk8w - repackage-signing-msi-ko-win32-shippable/opt: YzmLdEdaQX6TTAZf15YlRg - repackage-signing-msi-ko-win64-shippable/opt: COfywny3Q_2zXMwVls32YQ - repackage-signing-msi-lij-win32-shippable/opt: adJ6heI4Q_6mQz61GdXZAQ - repackage-signing-msi-lij-win64-shippable/opt: RfIUutfZSsmewGK_4pRPQA - repackage-signing-msi-lt-win32-shippable/opt: bfhPKqhhRSmjHXkv63zeyA - repackage-signing-msi-lt-win64-shippable/opt: aaGEAh90SkqWSFxMBa1hqw - repackage-signing-msi-lv-win32-shippable/opt: OIXZkzrEQtmN6iL2OPf1-A - repackage-signing-msi-lv-win64-shippable/opt: GnKaD7ELSC6qyeUSBUTdbA - repackage-signing-msi-mk-win32-shippable/opt: DaxE0HnTR1WA2U85ighvcA - repackage-signing-msi-mk-win64-shippable/opt: Ksl-kP1qSICFUHsrKiAAKg - repackage-signing-msi-mr-win32-shippable/opt: RBEfyfhbRPm6x_pvvUV0zw - repackage-signing-msi-mr-win64-shippable/opt: CsKHA4GCRZiPx_c7_niwlg - repackage-signing-msi-ms-win32-shippable/opt: MArThvxxQfuJHmUXc8VZ6w - repackage-signing-msi-ms-win64-shippable/opt: GQvD94FeTySfqVY3cE4gOg - repackage-signing-msi-my-win32-shippable/opt: Bw7AWNg9S2aA97f08ZQd-w - repackage-signing-msi-my-win64-shippable/opt: ZvPFwQpxRPeEvrWbqTusKw - repackage-signing-msi-nb-NO-win32-shippable/opt: Yhe-SdTBTzmKEbZRDlGWMw - repackage-signing-msi-nb-NO-win64-shippable/opt: VXJP7rblTxuydWq-Yg3JJw - repackage-signing-msi-ne-NP-win32-shippable/opt: Q2jmCWrHRiir6RJj1X1mSw - repackage-signing-msi-ne-NP-win64-shippable/opt: X1CECRE5SRO6JZb-R4-IzA - repackage-signing-msi-nl-win32-shippable/opt: BaWINvrwRUWiAiH7_G5klw - repackage-signing-msi-nl-win64-shippable/opt: KfB-CfONQNiGA_2L_R5rJg - repackage-signing-msi-nn-NO-win32-shippable/opt: CbrmwrCmRX6DbA1u9w82ag - repackage-signing-msi-nn-NO-win64-shippable/opt: J_JAdvTkQVG8UJNahJAW1A - repackage-signing-msi-oc-win32-shippable/opt: IN5-OE7xRKOhN1qL6OgUug - repackage-signing-msi-oc-win64-shippable/opt: B5xgvFepQVOp00GW_LAeEQ - repackage-signing-msi-pa-IN-win32-shippable/opt: BaTlDCA2QMOfihUp-O6fqg - repackage-signing-msi-pa-IN-win64-shippable/opt: B1xOaVSgSr-qdCnCybseMA - repackage-signing-msi-pl-win32-shippable/opt: Wbom5hzKReG1i-5lle9A5A - repackage-signing-msi-pl-win64-shippable/opt: TeZ5pLbUTB2l5NzXbcyNHw - repackage-signing-msi-pt-BR-win32-shippable/opt: J2Z97fHhSwKsL9dbFKfCaA - repackage-signing-msi-pt-BR-win64-shippable/opt: UeCtRMcDSAyiYF7U_nYjmA - repackage-signing-msi-pt-PT-win32-shippable/opt: bjCvDBkXQ-ic0NIFJFHi5w - repackage-signing-msi-pt-PT-win64-shippable/opt: IHf6yZb8SNiHf1uk_ojwkQ - repackage-signing-msi-rm-win32-shippable/opt: Nyuj09U8T3m4BiHeyK91VQ - repackage-signing-msi-rm-win64-shippable/opt: CYb7liI0RemjGlszaSp3NA - repackage-signing-msi-ro-win32-shippable/opt: KoYiKq7kTd-l2tBfS0qUrg - repackage-signing-msi-ro-win64-shippable/opt: f4-N0SWfTLm9fulr47kV-Q - repackage-signing-msi-ru-win32-shippable/opt: GycUuXBATVuTlDmd_S9OLg - repackage-signing-msi-ru-win64-shippable/opt: O2alyhRuQdO8eyHUKC6IoA - repackage-signing-msi-sat-win32-shippable/opt: c1ANVSMPRxi5elB_wEvNQg - repackage-signing-msi-sat-win64-shippable/opt: COpiLwdQSs-3jpVJfwttAg - repackage-signing-msi-sc-win32-shippable/opt: dGXjbkM_RnSvkX2HyWVyOA - repackage-signing-msi-sc-win64-shippable/opt: Vtj9FpQTT_KbiLavQO0laQ - repackage-signing-msi-sco-win32-shippable/opt: Z0NXBCkfSteeiYfhlVGMxA - repackage-signing-msi-sco-win64-shippable/opt: G9P-VU1oS66vS9vFdHmDrw - repackage-signing-msi-si-win32-shippable/opt: DFXFROinRjGJxSYn-N7YIA - repackage-signing-msi-si-win64-shippable/opt: bu1SkrzGRG-ym6edkYDXHg - repackage-signing-msi-sk-win32-shippable/opt: IJlgsXlrTUyFQ3yMJ4bDKw - repackage-signing-msi-sk-win64-shippable/opt: VT3hP_FkQVGWIWVkHkr0DA - repackage-signing-msi-skr-win32-shippable/opt: TOX7EhXuSCyJ0RLkcnXmdA - repackage-signing-msi-skr-win64-shippable/opt: Ic5aYP6WTwmFl3u3MT19-w - repackage-signing-msi-sl-win32-shippable/opt: P0ZYpW99SL2dbO56xTzokQ - repackage-signing-msi-sl-win64-shippable/opt: PnvkQeehRAqjkeM0MVOlOg - repackage-signing-msi-son-win32-shippable/opt: C_CxMfZ_TdCNycdH7rTfaQ - repackage-signing-msi-son-win64-shippable/opt: HdI4FP-FThiYTjJWfklsYg - repackage-signing-msi-sq-win32-shippable/opt: bCjGpJJLRr-HzCEOxy1Ftw - repackage-signing-msi-sq-win64-shippable/opt: fKPxZlT4QoefOS0FDodtRA - repackage-signing-msi-sr-win32-shippable/opt: et3oCGMEQgKESPY5ZmbePg - repackage-signing-msi-sr-win64-shippable/opt: eGsG8U-OTDySHzNMGoC8Dg - repackage-signing-msi-sv-SE-win32-shippable/opt: EyKx9ETaQOO5mJnoXmpcPg - repackage-signing-msi-sv-SE-win64-shippable/opt: BK38NttaQjOoxp673GtoaA - repackage-signing-msi-szl-win32-shippable/opt: FZjew__PQVCFm8xCT063lQ - repackage-signing-msi-szl-win64-shippable/opt: QYXnlz0HQlSsm-7ciSIviw - repackage-signing-msi-ta-win32-shippable/opt: DSNhnSqyQCu1KX2fbtAdbg - repackage-signing-msi-ta-win64-shippable/opt: fRItBdHNQEijvVuII4dcLQ - repackage-signing-msi-te-win32-shippable/opt: WcW4AdBeSY-bwJ_s7UvRbA - repackage-signing-msi-te-win64-shippable/opt: K11tXmaYRRijO0aus7n-XQ - repackage-signing-msi-tg-win32-shippable/opt: D4vHOqh0R9acNTSaYUliow - repackage-signing-msi-tg-win64-shippable/opt: DIvPouwcRdytOd0zt-hoDQ - repackage-signing-msi-th-win32-shippable/opt: ExkYoRHnRnuAV6fr4Vc_tg - repackage-signing-msi-th-win64-shippable/opt: ZIbOA7NyTjO2DIKPvj_WRA - repackage-signing-msi-tl-win32-shippable/opt: TSQwGh_gSsSh1c_UX7GyLQ - repackage-signing-msi-tl-win64-shippable/opt: S4hcM5jkTUuSh7f-csut0w - repackage-signing-msi-tr-win32-shippable/opt: VJ4ochGzRx28Sl4S5O1Ssg - repackage-signing-msi-tr-win64-shippable/opt: DcuQtVEcTq-DzBeCrNJpCw - repackage-signing-msi-trs-win32-shippable/opt: IXi8G2CHR4SV8hNlWAYoGw - repackage-signing-msi-trs-win64-shippable/opt: dDjG1NvrS7S8ydJO80k2HQ - repackage-signing-msi-uk-win32-shippable/opt: dsfGQNfsQfyWOPkPeAEXpQ - repackage-signing-msi-uk-win64-shippable/opt: fgYI6V07Tvik_rktrM5Tww - repackage-signing-msi-ur-win32-shippable/opt: EtHe-UOFSCSWpXJEY0d_Zg - repackage-signing-msi-ur-win64-shippable/opt: JJ5IjHzPTmetSRuFq917Mw - repackage-signing-msi-uz-win32-shippable/opt: dytakpWzRSSvvoJBNxDVDg - repackage-signing-msi-uz-win64-shippable/opt: RLbLInNDRbOqvjuDq00Ptg - repackage-signing-msi-vi-win32-shippable/opt: HzsChJmJR0SbZsEkWHhKNg - repackage-signing-msi-vi-win64-shippable/opt: LJtZABy4SQ2ptXH4XVdwww - repackage-signing-msi-win32-shippable/opt: c8KzN4ooTPO24Vq51DGtvQ - repackage-signing-msi-win64-shippable/opt: KqePlKTtSsSlFAghV_XzEA - repackage-signing-msi-xh-win32-shippable/opt: LUd-gqqEQCCMj0Xz6UyYtg - repackage-signing-msi-xh-win64-shippable/opt: fI_MuCqHQEawgJn-il3Opw - repackage-signing-msi-zh-CN-win32-shippable/opt: Pu4jmp58Tg-XnqeS1RRhag - repackage-signing-msi-zh-CN-win64-shippable/opt: IuHB6n5KTmmxF-jI_dSBvg - repackage-signing-msi-zh-TW-win32-shippable/opt: eeLc7ShJSMaJ09d0NnLb9Q - repackage-signing-msi-zh-TW-win64-shippable/opt: U8KmnyTNRFemeqQ2Eknppg - repackage-signing-msix-win64/debug: EO4h1p-5Te2k8NIENajDrw - repackage-signing-shippable-l10n-msix-win32-shippable/opt: UVrDYFoVR1q7NvvYKa6Ssw - repackage-signing-shippable-l10n-msix-win64-aarch64-shippable/opt: eheqaLXdSVKQejraiWt1uA - repackage-signing-shippable-l10n-msix-win64-shippable/opt: EcepTky1R3KiI1jlmyqKZA - repackage-signing-win32-shippable/opt: E5m4wah6T5ysxyYuW0w9Mw - repackage-signing-win64-aarch64-shippable/opt: RVIEKi1uQ_qd6r7c4TC9kA - repackage-signing-win64-shippable/opt: Wh180JmoTeOaNR2wKBUrJA - repackage-win32-shippable/opt: eWK7woTwSt-Ky_wRfCH0Lw - repackage-win64-aarch64-shippable/opt: exVfkjHVRuGoq3D0iOI6hA - repackage-win64-shippable/opt: DoLMVNbORjSKvOmO3DBTJA - shippable-l10n-linux-shippable-1/opt: AyeVxzteRtSH62uuD6gWDQ - shippable-l10n-linux-shippable-10/opt: NeIkdCtBRWyJJ3qQo1owqA - shippable-l10n-linux-shippable-11/opt: UKMyRIuJRRyv1t8WAV9mSg - shippable-l10n-linux-shippable-12/opt: KHtxxKy_QeS0iDxpMN3owQ - shippable-l10n-linux-shippable-13/opt: HlLjb0sdTDi4gGyG1wfiOg - shippable-l10n-linux-shippable-14/opt: XViWmdcBQuyyA_EYwZZA5g - shippable-l10n-linux-shippable-15/opt: co_eTxL7QbC58f_Ch3S5Jw - shippable-l10n-linux-shippable-16/opt: Mco2foawSEiuiIX6FscMhQ - shippable-l10n-linux-shippable-17/opt: Klgk-CxpTY6jMqxuZu_lmA - shippable-l10n-linux-shippable-18/opt: fVlkUioeQEK3fXcd9atLNw - shippable-l10n-linux-shippable-19/opt: d7ASGV1xRoKAPGuzyQo1MQ - shippable-l10n-linux-shippable-2/opt: CZcfh62USsuGA2-icy9IYA - shippable-l10n-linux-shippable-20/opt: VMrMcsGTSgaj6m-smXtcKA - shippable-l10n-linux-shippable-21/opt: WkE7uR6ATse00fdyRlZ1ew - shippable-l10n-linux-shippable-3/opt: fydjPUn4ThCTXqQzYneozg - shippable-l10n-linux-shippable-4/opt: X4wXbtTdRAyNyFZcYZmgvA - shippable-l10n-linux-shippable-5/opt: e_yAhkf7TQqAScQZyStSPA - shippable-l10n-linux-shippable-6/opt: eJcf7eBQTiyP9ywW49rf7A - shippable-l10n-linux-shippable-7/opt: XQCMSllWRVK3PlG7GS6EXg - shippable-l10n-linux-shippable-8/opt: WZlZeJZ-Q8-E1pZGiLHA3A - shippable-l10n-linux-shippable-9/opt: dYJD-hTgS4WoBJF-KWa-mA - shippable-l10n-linux64-aarch64-shippable-1/opt: VzMZI5x2T_mDnXK0jCjt7g - shippable-l10n-linux64-aarch64-shippable-10/opt: U90rwqs4T0yrlwviognhXw - shippable-l10n-linux64-aarch64-shippable-11/opt: G0bNPfFdTqaeopvATkuGGg - shippable-l10n-linux64-aarch64-shippable-12/opt: c_cIZSjjSJa8_y6mo_0mMQ - shippable-l10n-linux64-aarch64-shippable-13/opt: U9HAGv5jQv2plQdvTqcxmA - shippable-l10n-linux64-aarch64-shippable-14/opt: KKL2sKzFRPmgHI_llQTTrg - shippable-l10n-linux64-aarch64-shippable-15/opt: Lj0h38kvSRqLqk-M44wAbg - shippable-l10n-linux64-aarch64-shippable-16/opt: UXJOOq_fSdag2YpcNXF0tQ - shippable-l10n-linux64-aarch64-shippable-17/opt: JV3A8xKgQiWhyn9sh8tLVg - shippable-l10n-linux64-aarch64-shippable-18/opt: IPFmZHyRRcKGe1SngRGw3g - shippable-l10n-linux64-aarch64-shippable-19/opt: YfwgFAmuT-ypbOnKmzMNdg - shippable-l10n-linux64-aarch64-shippable-2/opt: deKmFtUtSrivjWN2kxV9mQ - shippable-l10n-linux64-aarch64-shippable-20/opt: YiXzdNKCTU-jWqo8lwZRUA - shippable-l10n-linux64-aarch64-shippable-21/opt: EruB3Z9lQmulkvX4vUGRyw - shippable-l10n-linux64-aarch64-shippable-3/opt: SvOp6xJyT4aTcOhkvhzfUg - shippable-l10n-linux64-aarch64-shippable-4/opt: LktWFFE3RMuc4pXLcapOEQ - shippable-l10n-linux64-aarch64-shippable-5/opt: AoSbS8-aQUGHdtrK3lIOkg - shippable-l10n-linux64-aarch64-shippable-6/opt: beKyd_V3RKem5QS6JUltCg - shippable-l10n-linux64-aarch64-shippable-7/opt: d_eazi64RRqPNLkCTclgAQ - shippable-l10n-linux64-aarch64-shippable-8/opt: Geh51UTjQZuU_YfjBCgIFw - shippable-l10n-linux64-aarch64-shippable-9/opt: YrWrG6bHS_iz3Ukr7fFe5w - shippable-l10n-linux64-shippable-1/opt: Cue1NgiwStiJHKmST3V0Xw - shippable-l10n-linux64-shippable-10/opt: DIrbnM1US1-BIk6xiZw0aA - shippable-l10n-linux64-shippable-11/opt: NJHeFSZWQhKuXV8pf9L-wA - shippable-l10n-linux64-shippable-12/opt: Fv7-Wa0sQCm3c0EewLfJmA - shippable-l10n-linux64-shippable-13/opt: Ol_3VUWhRP2WdLAwzLy4Mg - shippable-l10n-linux64-shippable-14/opt: LXYB9HFKT2q1HTUJ8wzwmA - shippable-l10n-linux64-shippable-15/opt: SdbFQ0AhSLOkfC3fOQhShw - shippable-l10n-linux64-shippable-16/opt: E4RCAIE-S_O7ARg5MbC9VA - shippable-l10n-linux64-shippable-17/opt: aALm7W6uR7aH742NAVCW2g - shippable-l10n-linux64-shippable-18/opt: GcJXVoBfRb2g_GhCJkQaCg - shippable-l10n-linux64-shippable-19/opt: Pds_gp0PQ0Kn5vF8aDt8oQ - shippable-l10n-linux64-shippable-2/opt: coFTjIDZQLGM9Y9Rh4hZvQ - shippable-l10n-linux64-shippable-20/opt: L4dELttERAGI9Fx09XXpmQ - shippable-l10n-linux64-shippable-21/opt: dGqYOOSyTQ-cF_aHZsGB7Q - shippable-l10n-linux64-shippable-3/opt: MmPeW9KyR0u9PG4obtjZPA - shippable-l10n-linux64-shippable-4/opt: CO4C_NCDRIyrUbHH7GuSkw - shippable-l10n-linux64-shippable-5/opt: NEPrNi3KQtCKd9nDdP-C7Q - shippable-l10n-linux64-shippable-6/opt: VNeeBXSIRheJsyrwt1jFUQ - shippable-l10n-linux64-shippable-7/opt: SZtt0USJT8qj8oxF6HRaQQ - shippable-l10n-linux64-shippable-8/opt: I4cgSNVpTM6xTDn6CwJHzQ - shippable-l10n-linux64-shippable-9/opt: VVc5fyp7QMeqkrv32pFZ-Q - shippable-l10n-mac-notarization-macosx64-shippable-1/opt: MiffDCHtSYK8-4qjg-AOnw - shippable-l10n-mac-notarization-macosx64-shippable-10/opt: Zk8UC6AWT4-H-_q0R5vyHg - shippable-l10n-mac-notarization-macosx64-shippable-11/opt: C6SyeVJlQ9u0tkFk73CUVQ - shippable-l10n-mac-notarization-macosx64-shippable-12/opt: RQbNTud2SWKOIjyWbglaEA - shippable-l10n-mac-notarization-macosx64-shippable-13/opt: ZY0D7mKESPavhZKnEKW6Dw - shippable-l10n-mac-notarization-macosx64-shippable-14/opt: XxeFbfidQz2dF51eHVMocQ - shippable-l10n-mac-notarization-macosx64-shippable-15/opt: ZnCtfPxZTN-AJnMNZ7Vf0w - shippable-l10n-mac-notarization-macosx64-shippable-16/opt: KsU0kjJ-TZ-Sml75MKqINg - shippable-l10n-mac-notarization-macosx64-shippable-17/opt: aOjC5_QGSJKgMuDq2ocF4A - shippable-l10n-mac-notarization-macosx64-shippable-18/opt: UaG66d94Q0qAEA_WU4R4Kw - shippable-l10n-mac-notarization-macosx64-shippable-19/opt: PgZcoqc3ROmbAOE70wzQxA - shippable-l10n-mac-notarization-macosx64-shippable-2/opt: WH9cEs4MRm-UsfI21uhErw - shippable-l10n-mac-notarization-macosx64-shippable-20/opt: ZHZ9OPlXSau4jiHydb3SKw - shippable-l10n-mac-notarization-macosx64-shippable-21/opt: ICZOVDbDSre3Y01WboDQPw - shippable-l10n-mac-notarization-macosx64-shippable-3/opt: C4RIjcx9SPCaFABP0S_2bQ - shippable-l10n-mac-notarization-macosx64-shippable-4/opt: HeJ1GU9mQhOptjT6L7KH9g - shippable-l10n-mac-notarization-macosx64-shippable-5/opt: QD1VxqEfTfauGLY019sIvQ - shippable-l10n-mac-notarization-macosx64-shippable-6/opt: cB2xmd5rRpWL2FZm_6563Q - shippable-l10n-mac-notarization-macosx64-shippable-7/opt: IOjwq0_aRquy3wt0K9WeYw - shippable-l10n-mac-notarization-macosx64-shippable-8/opt: TWQBdqwCQQ6tBLoXXmlcBA - shippable-l10n-mac-notarization-macosx64-shippable-9/opt: ATWtxnZEROy8K3uXkUJItg - shippable-l10n-mac-signing-macosx64-shippable-1/opt: YYi1XqZQSy6b7gwUw1wLyw - shippable-l10n-mac-signing-macosx64-shippable-10/opt: CZOXyaXSQhOoRLnbJtkcOQ - shippable-l10n-mac-signing-macosx64-shippable-11/opt: MfQDP__1T5i6Idh8sSTXCQ - shippable-l10n-mac-signing-macosx64-shippable-12/opt: NuVI-RFtQjaxltoJDZbSsg - shippable-l10n-mac-signing-macosx64-shippable-13/opt: AFc09C49Toig8LId0y1rMg - shippable-l10n-mac-signing-macosx64-shippable-14/opt: PP4p8-qHRq-Go4mUrwjzLw - shippable-l10n-mac-signing-macosx64-shippable-15/opt: YtpX7vl1QoqeMAo-1ys8Cw - shippable-l10n-mac-signing-macosx64-shippable-16/opt: TJeYf9eNSYiqdgL_b7eeIA - shippable-l10n-mac-signing-macosx64-shippable-17/opt: GSyel3vySyyQcraBrEKl4g - shippable-l10n-mac-signing-macosx64-shippable-18/opt: F5yPFdNWQBuTu6hnIUrK6g - shippable-l10n-mac-signing-macosx64-shippable-19/opt: D3_v6sobQYKMhyUbJCYqRA - shippable-l10n-mac-signing-macosx64-shippable-2/opt: Qm_jaqH8RuWD5ivKJnWx3Q - shippable-l10n-mac-signing-macosx64-shippable-20/opt: MMiC0xs1TYWkm4yj1wfy3A - shippable-l10n-mac-signing-macosx64-shippable-21/opt: DF73G4_jQf-WcO5RIwbdYw - shippable-l10n-mac-signing-macosx64-shippable-3/opt: f85QKV2ERS226LjzuKBZhw - shippable-l10n-mac-signing-macosx64-shippable-4/opt: Esz_DM9nRSqfqUqLx1E47A - shippable-l10n-mac-signing-macosx64-shippable-5/opt: cOFWvbxzRwKbu8vcREWf8g - shippable-l10n-mac-signing-macosx64-shippable-6/opt: S1JdRtqFSAqZ70pgXOpdQA - shippable-l10n-mac-signing-macosx64-shippable-7/opt: GI45pdRJSy28569HeK_88g - shippable-l10n-mac-signing-macosx64-shippable-8/opt: Bu0TMblzRmWakEs6ZwDJSg - shippable-l10n-mac-signing-macosx64-shippable-9/opt: BQjMaLeNQi-qeMqFvaw1gw - shippable-l10n-macosx64-shippable-1/opt: MZjB5tVaQymGt7ClIgfuSA - shippable-l10n-macosx64-shippable-10/opt: IqZUrWDwRYSHCc9LVaOqqw - shippable-l10n-macosx64-shippable-11/opt: U_Cvyq2ZSXqhxaBQDuXstg - shippable-l10n-macosx64-shippable-12/opt: GiXZ3uyWRWKEu0asiiJykQ - shippable-l10n-macosx64-shippable-13/opt: ZtVgW0wYSpe0YGPGhsGA2w - shippable-l10n-macosx64-shippable-14/opt: eyGgHxSaTMGXkBVtFlM-xw - shippable-l10n-macosx64-shippable-15/opt: fRQbtdrkT6GXPQrCRNiA8g - shippable-l10n-macosx64-shippable-16/opt: Mc8kTN7ZTTu7_TJg3-Ai6w - shippable-l10n-macosx64-shippable-17/opt: ZUG2o44wQb2cZrYBuWe7BA - shippable-l10n-macosx64-shippable-18/opt: MCB5DVt-Qj2TxKvgB5pEBA - shippable-l10n-macosx64-shippable-19/opt: X0Y8jVwMRlqIWkSY_gKRmg - shippable-l10n-macosx64-shippable-2/opt: bMrL_bUwTZS5rkVHW-VRIA - shippable-l10n-macosx64-shippable-20/opt: J4fgxVt9QPKbarCs7BMyLg - shippable-l10n-macosx64-shippable-21/opt: XE9eI67jTA6sBHaZy33yeg - shippable-l10n-macosx64-shippable-3/opt: YNTZe7DrRne5gowHL6DedQ - shippable-l10n-macosx64-shippable-4/opt: dJn-0baGQSm6Z6tzlbnZVQ - shippable-l10n-macosx64-shippable-5/opt: KIm9l2boSqqBYq8KKj5d5A - shippable-l10n-macosx64-shippable-6/opt: Lr38DBGPQDGKM4La-ZDgdg - shippable-l10n-macosx64-shippable-7/opt: CAboYXPERL6NQwf0ktCt5Q - shippable-l10n-macosx64-shippable-8/opt: cJTOqpnUSeKgk1SDn3i2Wg - shippable-l10n-macosx64-shippable-9/opt: FH_z3WYfQRmeE8CGB4s9Og - shippable-l10n-signing-linux-shippable-1/opt: DGgnHtAfTXKkfKNAhRSl8w - shippable-l10n-signing-linux-shippable-10/opt: PYgNCtnwTj2vKEpO8ha6uw - shippable-l10n-signing-linux-shippable-11/opt: GqQdu8u4QZSDWk_LBsdTYg - shippable-l10n-signing-linux-shippable-12/opt: IRV3V8ElQS6VQzyUhIqcXg - shippable-l10n-signing-linux-shippable-13/opt: GJ_LZJNjTCyvbeTbiY8zMw - shippable-l10n-signing-linux-shippable-14/opt: S-t9Rt1JRyekg8woqWL_vg - shippable-l10n-signing-linux-shippable-15/opt: OIUHKjvKQISuwcsEqfccFQ - shippable-l10n-signing-linux-shippable-16/opt: XuVZ_omnSxmKlmBbl14yjg - shippable-l10n-signing-linux-shippable-17/opt: b1WRyYK-TbG5P0AjqBuNfg - shippable-l10n-signing-linux-shippable-18/opt: N1uMcT7xTSixc02l0vZvvg - shippable-l10n-signing-linux-shippable-19/opt: AbFPbbL-RiSEkXwbzeadYg - shippable-l10n-signing-linux-shippable-2/opt: CJthz6_5QX-b0zQij3mQmA - shippable-l10n-signing-linux-shippable-20/opt: aPT15O7GRYu5vKmY_zXgOA - shippable-l10n-signing-linux-shippable-21/opt: RXfZTW7UQKS-em6Y3I63Tg - shippable-l10n-signing-linux-shippable-3/opt: TindvEBcR0ewqCaZ3PmJrw - shippable-l10n-signing-linux-shippable-4/opt: bJDzU_wwSUeL6HunPr7yKg - shippable-l10n-signing-linux-shippable-5/opt: YI8KECnTTOGwBpHHfy1UrQ - shippable-l10n-signing-linux-shippable-6/opt: Eqa9Cjt0Q1KQHPybWanrCg - shippable-l10n-signing-linux-shippable-7/opt: brXIEzNISWy-sK4L5W1shg - shippable-l10n-signing-linux-shippable-8/opt: ZeTU2ZxOR8uzMpVhlHhYbA - shippable-l10n-signing-linux-shippable-9/opt: K26cW-IsRAO7J-BfmgXUdg - shippable-l10n-signing-linux64-aarch64-shippable-1/opt: Sfjyc-6pTWayhJy0VkPfsA - shippable-l10n-signing-linux64-aarch64-shippable-10/opt: EgLH2GGoSs-LjHtsj9h6yw - shippable-l10n-signing-linux64-aarch64-shippable-11/opt: YNyGlcaaTU-O4GWbIaw1dA - shippable-l10n-signing-linux64-aarch64-shippable-12/opt: ZAuwPFS5Rc-EPto8KA6FLQ - shippable-l10n-signing-linux64-aarch64-shippable-13/opt: ROE1FWuARc-flQsCuvE9VQ - shippable-l10n-signing-linux64-aarch64-shippable-14/opt: KNMVJQTCRPCKZnchFCWqNw - shippable-l10n-signing-linux64-aarch64-shippable-15/opt: Hi9HGj6tQMeoB6DU7i5iyg - shippable-l10n-signing-linux64-aarch64-shippable-16/opt: EYXl2Xv_QhWkgkci621dkg - shippable-l10n-signing-linux64-aarch64-shippable-17/opt: HkL4V9-pQxu5mZorQvTVWA - shippable-l10n-signing-linux64-aarch64-shippable-18/opt: C0hs2xV6SWGxi2251PQ6QQ - shippable-l10n-signing-linux64-aarch64-shippable-19/opt: AqDTYx7ASPCjU-6Y0hRJrA - shippable-l10n-signing-linux64-aarch64-shippable-2/opt: SSlm4XZYTXisQ86HSXNaSg - shippable-l10n-signing-linux64-aarch64-shippable-20/opt: E4ORlxHWRSeqjwb5LzvZsQ - shippable-l10n-signing-linux64-aarch64-shippable-21/opt: buZbUodASz2fCWRrtyozlw - shippable-l10n-signing-linux64-aarch64-shippable-3/opt: EI63A6f0Q3mIKHUKrlwv-Q - shippable-l10n-signing-linux64-aarch64-shippable-4/opt: cUwfNjH1SzGgXCWJ4zJV1w - shippable-l10n-signing-linux64-aarch64-shippable-5/opt: Htqp6CekQL6zS7eevVgnpg - shippable-l10n-signing-linux64-aarch64-shippable-6/opt: S1TzLMzES-a4jLHUhPZyhw - shippable-l10n-signing-linux64-aarch64-shippable-7/opt: T4Fnl8wATrKRFg9nP2e7ZA - shippable-l10n-signing-linux64-aarch64-shippable-8/opt: GIJzqPMaRoiGSy5ri_0jOw - shippable-l10n-signing-linux64-aarch64-shippable-9/opt: LRrxY-KuQfCMNOno6tg7hA - shippable-l10n-signing-linux64-shippable-1/opt: cdyoQhUFR-GjIogt2OlDeg - shippable-l10n-signing-linux64-shippable-10/opt: VQRmcdsaQTKJkIKAuweqxg - shippable-l10n-signing-linux64-shippable-11/opt: BQx__0sITt6QR6cng3dNHA - shippable-l10n-signing-linux64-shippable-12/opt: JxkXdvznTnWru4PWIL4CRA - shippable-l10n-signing-linux64-shippable-13/opt: ScDJt8SoQ_6F47MvdoaTmQ - shippable-l10n-signing-linux64-shippable-14/opt: IN0wJO_OSx6T01yoNv-AXA - shippable-l10n-signing-linux64-shippable-15/opt: ABx7TBOhQ0eL8R2Itc_9Gg - shippable-l10n-signing-linux64-shippable-16/opt: Wz2QEoI2R7Swsuno89f1XQ - shippable-l10n-signing-linux64-shippable-17/opt: eTgv0M8mRaWtrmkD9kBy7g - shippable-l10n-signing-linux64-shippable-18/opt: TtDhIAbRRSyI-VnXgMEFfw - shippable-l10n-signing-linux64-shippable-19/opt: Zmka7YAVTfSpQsO7qBbDew - shippable-l10n-signing-linux64-shippable-2/opt: K1po2LGeR96zCe0FL-OmLQ - shippable-l10n-signing-linux64-shippable-20/opt: PaNPYJyURMeIunoc1p0oLQ - shippable-l10n-signing-linux64-shippable-21/opt: BqDDoPrPS3yNXRq2iZ9C2A - shippable-l10n-signing-linux64-shippable-3/opt: e1Vqr9XKSZyS3ZM_mcntXA - shippable-l10n-signing-linux64-shippable-4/opt: Dd3WWBXhS0OheF-DgWdNyg - shippable-l10n-signing-linux64-shippable-5/opt: Fz9lUBEVTH6TlcykwxnX6Q - shippable-l10n-signing-linux64-shippable-6/opt: b33KvsZiQfmqmN_U4s0Tiw - shippable-l10n-signing-linux64-shippable-7/opt: Pe7enQuhR9ywlhKRkkYc6A - shippable-l10n-signing-linux64-shippable-8/opt: YZPAuybMRGWjj2szt0T5_Q - shippable-l10n-signing-linux64-shippable-9/opt: ItplyXpuTfCRC6ymAdT4vg - shippable-l10n-signing-win32-shippable-1/opt: B5XquRwoTACibEC40HfT3Q - shippable-l10n-signing-win32-shippable-10/opt: PDXSEO5ETQeUgugw4W4Zew - shippable-l10n-signing-win32-shippable-11/opt: V1PxpSXrT5-uObjGs0BCnA - shippable-l10n-signing-win32-shippable-12/opt: aKRvkieYQImL1gb28EcL4Q - shippable-l10n-signing-win32-shippable-13/opt: KPvUykoNTGW8CfaTggQjjA - shippable-l10n-signing-win32-shippable-14/opt: ORBWg9jnSNK_2OF6L4xoHQ - shippable-l10n-signing-win32-shippable-15/opt: LBVU-_PjRQah6qOsOvfZ-w - shippable-l10n-signing-win32-shippable-16/opt: EN1poZ2aS8O8nWkxmvjSDQ - shippable-l10n-signing-win32-shippable-17/opt: L4s8qq-LSme2hYbD6PJrSA - shippable-l10n-signing-win32-shippable-18/opt: a5-8XPeGQ3m7dwjFKqq5hg - shippable-l10n-signing-win32-shippable-19/opt: JLZ9PbiNRM20l-dt-PEU1Q - shippable-l10n-signing-win32-shippable-2/opt: Q__s1b3nQ0quUr8GawZu0g - shippable-l10n-signing-win32-shippable-20/opt: ESrM1b4MSIaCHt9M1OR5_g - shippable-l10n-signing-win32-shippable-21/opt: DpA9_PY8S9C_LcQpKnNN_g - shippable-l10n-signing-win32-shippable-3/opt: A5t5A9QXQi6-RFL0P5-yQw - shippable-l10n-signing-win32-shippable-4/opt: VdkDtIo9SNC38JXl17R8Qg - shippable-l10n-signing-win32-shippable-5/opt: BBjebRsAQQa2Df4Y-I7kyw - shippable-l10n-signing-win32-shippable-6/opt: R5nit_cnSdKE6IkdNpLLWA - shippable-l10n-signing-win32-shippable-7/opt: c2LOIm9nTJyBc_h0A72t5A - shippable-l10n-signing-win32-shippable-8/opt: Fx_itWxcTEifCGMHfzis-Q - shippable-l10n-signing-win32-shippable-9/opt: HlnOXydPTzaQQ7IlnY7mFg - shippable-l10n-signing-win64-aarch64-shippable-1/opt: WBOg04wyQXq35nE7ibV3Fw - shippable-l10n-signing-win64-aarch64-shippable-10/opt: Ehsf0ASiQteTd1tePzXY6w - shippable-l10n-signing-win64-aarch64-shippable-11/opt: awdDsh7iSv-Id5bTQZn1kw - shippable-l10n-signing-win64-aarch64-shippable-12/opt: HOLlSqK3Tvucxg1jUqxyKQ - shippable-l10n-signing-win64-aarch64-shippable-13/opt: FPew2AhBR1yEgjYD3B1_Lw - shippable-l10n-signing-win64-aarch64-shippable-14/opt: Wh28V1c0SmGD8GmdoaL0PQ - shippable-l10n-signing-win64-aarch64-shippable-15/opt: B72avfa2QXuTLNVTdR_N1A - shippable-l10n-signing-win64-aarch64-shippable-16/opt: VvKLh93WTs6FHk7BRTFAMw - shippable-l10n-signing-win64-aarch64-shippable-17/opt: f8pL-gLhSOyKDQ36aB1-gA - shippable-l10n-signing-win64-aarch64-shippable-18/opt: KSNp4FpZRsOrLh-FBQZS8Q - shippable-l10n-signing-win64-aarch64-shippable-19/opt: VqgWPkraRX2WTrzYf4fOZQ - shippable-l10n-signing-win64-aarch64-shippable-2/opt: EwpjN2BAQqCYP6BeHewRxw - shippable-l10n-signing-win64-aarch64-shippable-20/opt: ASfZluRvSFCMaZkBPIjqMw - shippable-l10n-signing-win64-aarch64-shippable-21/opt: AGGH7Y91SVq-epPPz5w0Uw - shippable-l10n-signing-win64-aarch64-shippable-3/opt: BiwG97sgTb-1ZI0znXYPJA - shippable-l10n-signing-win64-aarch64-shippable-4/opt: YVFMQhABRDOQZG9gWBYH4w - shippable-l10n-signing-win64-aarch64-shippable-5/opt: W5P2MeWYTmWGwMtjNMzHSg - shippable-l10n-signing-win64-aarch64-shippable-6/opt: VylPPLr9SfuD8teeIG6kgg - shippable-l10n-signing-win64-aarch64-shippable-7/opt: ergun-9jS7KoK4a4-gBGGQ - shippable-l10n-signing-win64-aarch64-shippable-8/opt: ZKlz3FrXQB6f5qHJ4q53fw - shippable-l10n-signing-win64-aarch64-shippable-9/opt: VxPBfLhET2OLwk6uLrJ4XA - shippable-l10n-signing-win64-shippable-1/opt: anCLMcssRVWMYc45vobIxQ - shippable-l10n-signing-win64-shippable-10/opt: Ggpsa0JeRxieqE22ZxU-QQ - shippable-l10n-signing-win64-shippable-11/opt: S_JR7C0QTH6bKNzBHUJu2g - shippable-l10n-signing-win64-shippable-12/opt: eM-oesuLRuCDrodB5CEuLw - shippable-l10n-signing-win64-shippable-13/opt: XeCw6jEtRPO3UuWVr930WA - shippable-l10n-signing-win64-shippable-14/opt: f6fGCPWDR0e6rdi4DfzgLQ - shippable-l10n-signing-win64-shippable-15/opt: HPbDzuBuRr2aHne569dyxA - shippable-l10n-signing-win64-shippable-16/opt: Oiz7UtpvQPu23H39hsMsdA - shippable-l10n-signing-win64-shippable-17/opt: ReFVuTBBQuCCo67qI_fSIQ - shippable-l10n-signing-win64-shippable-18/opt: RZVBE-nJSpmqEVjwaM3erw - shippable-l10n-signing-win64-shippable-19/opt: EUuP8h-kRVme2GXUaInHkg - shippable-l10n-signing-win64-shippable-2/opt: LMxNjVOOQDaDqGVSLPm-nA - shippable-l10n-signing-win64-shippable-20/opt: JjxVxCFhRsuUwYumNuFjsA - shippable-l10n-signing-win64-shippable-21/opt: O501FuuhTcycKubxZI2lKA - shippable-l10n-signing-win64-shippable-3/opt: LLPDkbRjTpOTk3V3IjlGcA - shippable-l10n-signing-win64-shippable-4/opt: KwfwJNrLRhug0Tj_1tsYAQ - shippable-l10n-signing-win64-shippable-5/opt: en8aUDAWTrm1nSQGW7P5Iw - shippable-l10n-signing-win64-shippable-6/opt: ap11IAb3RU22x_pjvjl1Ug - shippable-l10n-signing-win64-shippable-7/opt: K2tGODUCQBKCandpj6bUQA - shippable-l10n-signing-win64-shippable-8/opt: S8jYUQzBRn2BMkLMNBepLw - shippable-l10n-signing-win64-shippable-9/opt: ajLZZ_tPT4qdaQHUV6QD7A - shippable-l10n-win32-shippable-1/opt: G5ovfNLWSqu_LpwePK6RVA - shippable-l10n-win32-shippable-10/opt: cnH2mS-aS4mlNpbU2RWfmg - shippable-l10n-win32-shippable-11/opt: VI-O8t7DTwW4wsK_9btZ7g - shippable-l10n-win32-shippable-12/opt: L1z_ceP6Ss2Dxedg5OXTJA - shippable-l10n-win32-shippable-13/opt: ID5Llcq8RgaRldoa-cWlDw - shippable-l10n-win32-shippable-14/opt: Ud95JnsVSxqPeM6C1JjT6A - shippable-l10n-win32-shippable-15/opt: E8-u1SpdR4iQfFdgT8hZKA - shippable-l10n-win32-shippable-16/opt: IIQsj_p4RCSq7asm2iCZuA - shippable-l10n-win32-shippable-17/opt: DdBj8dRMRSet8nALgXwkIg - shippable-l10n-win32-shippable-18/opt: J0KlCjtTRHmks5GMmX0oWw - shippable-l10n-win32-shippable-19/opt: BKYAfVkoSOeFfvvtg9qCjw - shippable-l10n-win32-shippable-2/opt: F0MahuI6TQqhHR1hZ6HIBw - shippable-l10n-win32-shippable-20/opt: FHeoIcnOQRyMbl0P49yCGA - shippable-l10n-win32-shippable-21/opt: R5fRoYm1SE2bPLbvfhjPyQ - shippable-l10n-win32-shippable-3/opt: cU84xI1QT16wqxEyO3Wq-A - shippable-l10n-win32-shippable-4/opt: cN0Vm8Q1RAKEhcUUU_I76g - shippable-l10n-win32-shippable-5/opt: DS6rkc0GTRuda46SnhTMJA - shippable-l10n-win32-shippable-6/opt: WMV8OtlSSgGfm_wisCDs8w - shippable-l10n-win32-shippable-7/opt: B25dFzzAS_ixcg1PqakKww - shippable-l10n-win32-shippable-8/opt: OUdNkTwVTDSwyw8gzFfGFw - shippable-l10n-win32-shippable-9/opt: Xmn1K00YRQqOg9fB21qd1Q - shippable-l10n-win64-aarch64-shippable-1/opt: OP-m1ppZSQuhFhjq0Cf2AA - shippable-l10n-win64-aarch64-shippable-10/opt: R1xxvggmTs2Ihu05OwNl0g - shippable-l10n-win64-aarch64-shippable-11/opt: fxrnm-1ATee_GRtYFlHgqg - shippable-l10n-win64-aarch64-shippable-12/opt: JqPN5mTKRSWDZyD_jOrMkw - shippable-l10n-win64-aarch64-shippable-13/opt: ZCFtIUN1QPOZ_aE0Dheasg - shippable-l10n-win64-aarch64-shippable-14/opt: bqIJIn8eQwWCQuT5Q96dug - shippable-l10n-win64-aarch64-shippable-15/opt: W6pbyOaKTfSxPLSaKN19qw - shippable-l10n-win64-aarch64-shippable-16/opt: AhqKzZxYTUWx9u9OcT7KQg - shippable-l10n-win64-aarch64-shippable-17/opt: NWR5tsizTTWjMvzgM8Y9xg - shippable-l10n-win64-aarch64-shippable-18/opt: SFmjKMyNR3G371MRmUHDFg - shippable-l10n-win64-aarch64-shippable-19/opt: XmMPrPvMQB-X5xm_9UXZgA - shippable-l10n-win64-aarch64-shippable-2/opt: VA2lA6TaSbyR5gUyw9LoDw - shippable-l10n-win64-aarch64-shippable-20/opt: LqGD-rQXRgG0Zeo4ZuGvgw - shippable-l10n-win64-aarch64-shippable-21/opt: AR5M-PnoQpq27RtXtPKtyw - shippable-l10n-win64-aarch64-shippable-3/opt: JNDnHo28TJ-t2CiyuKk1tQ - shippable-l10n-win64-aarch64-shippable-4/opt: a0EkMbySSEuRucFLcnBzYg - shippable-l10n-win64-aarch64-shippable-5/opt: KHHnl1xcTOOOdGcoBa3MxA - shippable-l10n-win64-aarch64-shippable-6/opt: XU0jSOwoRkiO-PSZ6-0Z1w - shippable-l10n-win64-aarch64-shippable-7/opt: fcGXQIQmRq6T5ZTMjd63Kw - shippable-l10n-win64-aarch64-shippable-8/opt: Lrp3CUy9Qy-h0-F4lAcGfA - shippable-l10n-win64-aarch64-shippable-9/opt: M0EguZ_yReukvFakQfFbnQ - shippable-l10n-win64-shippable-1/opt: SmaeREBoR1u9DZRFdlIwpg - shippable-l10n-win64-shippable-10/opt: YVdeOCmmTriAV02ZWJ7dNw - shippable-l10n-win64-shippable-11/opt: eXlzd5k7QZ2jDSWjRR9bBQ - shippable-l10n-win64-shippable-12/opt: N7tW67OOSiCcpSGP0-jLUw - shippable-l10n-win64-shippable-13/opt: P1fhoKalRR2sFXS7ir4Low - shippable-l10n-win64-shippable-14/opt: ADXhytUCQN2IuaIZD2fBTA - shippable-l10n-win64-shippable-15/opt: W0C2AUmqS32oEgOwXM7QOg - shippable-l10n-win64-shippable-16/opt: MtBYdgEkQpqcJ80YXnXiRg - shippable-l10n-win64-shippable-17/opt: Z_oOnIFZRySHS2KxfcPchA - shippable-l10n-win64-shippable-18/opt: XlthW3x5QoeQBu5U_vLQOw - shippable-l10n-win64-shippable-19/opt: JYDZDosBT_S_hYnAzsp0MA - shippable-l10n-win64-shippable-2/opt: Lh_S0B0dSma0GgOhtUBegQ - shippable-l10n-win64-shippable-20/opt: Iii_1zNWTaWSJsd61G23oA - shippable-l10n-win64-shippable-21/opt: Ceg807hAR_yUe2J69j62Qw - shippable-l10n-win64-shippable-3/opt: ZPliiVW8Q4WMsGmEN0X7yg - shippable-l10n-win64-shippable-4/opt: adj5hlQQSmCgkTDhThSFjA - shippable-l10n-win64-shippable-5/opt: brEAALk9TnOrLE6s0pw4BQ - shippable-l10n-win64-shippable-6/opt: FwkOK7anTEa3hUzZ-GhiFw - shippable-l10n-win64-shippable-7/opt: BT7tJGs-SCG1-tXKJZMKOw - shippable-l10n-win64-shippable-8/opt: Zq1nhsKKTfqSz5igRJxowQ - shippable-l10n-win64-shippable-9/opt: aLqaSPLESoSzS2fD3F4T1g - source-test-mozlint-clang-format: IOtRXCXaSGGy6Bo7H8qO1g - source-test-mozlint-codespell: SVEKinrHTFqKkguzjv9uaQ - source-test-mozlint-file-perm: Fp8ri34USsCPezWTRBWVsg - source-test-mozlint-file-whitespace: S0KPnIcCSuOMub7yoqAg6Q - source-test-mozlint-license: KbW8H_O2QkaNjsP4s2bf4Q - source-test-mozlint-lintpref: QeVeR5BITdOiwbVZ77ddQA - source-test-mozlint-mingw-cap: ERsm_XI8SACTXudLfd-lGg - source-test-mozlint-mscom-init: ejXzxCeTSVitJaoPzdvu0Q - source-test-mozlint-rejected-words: Qh8qVmWmSQa-ulFHiHnK-Q - source-test-mozlint-trojan-source: PfXbVEUHS8-w_fJLMZlqWg - source-test-mozlint-yaml: aslxREd_QWuxURZLhUGTDw - source-test-puppeteer-puppeteer-1: CAnjL0AmTpKgZTwJtqyIHg - source-test-puppeteer-puppeteer-2: EtYgBRfmRfKvlBfd7MWfSA - source-test-python-mozbuild-linux1804-64/opt-py3: ZeOuUis-Qh6LFmFpqdz7-g - source-test-python-mozbuild-macosx1470-64/opt-py3: Yo66fmM6RaOMA3XH3bLvxQ - source-test-python-mozbuild-windows11-64/opt-py3: aHHtJIT8Tv6HR19KtNvagQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-1: BnU-ddL7SDKN0kVrXlUImA - test-linux1804-32-shippable-qr/opt-web-platform-tests-10: bhlh4YliToWp8is2yRshHQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-2: UGx4m3AwSK6ISIft2yHouQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-3: D4lUJBK8Sniww-fJ0LLEFQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-4: cEMeZDGaQ1OdxVPOog3ryg - test-linux1804-32-shippable-qr/opt-web-platform-tests-5: X01KpyCJTVm1urEEOaaFqA - test-linux1804-32-shippable-qr/opt-web-platform-tests-6: ObqO2stxSjOEerfhpKu23w - test-linux1804-32-shippable-qr/opt-web-platform-tests-7: dytYIMQwQ3uAo7EOTm0glA - test-linux1804-32-shippable-qr/opt-web-platform-tests-8: EFKNSXy4SLedR03TVllBpA - test-linux1804-32-shippable-qr/opt-web-platform-tests-9: bWmm-ru0SdOLWnapCvBb_Q - test-linux1804-32-shippable-qr/opt-web-platform-tests-eme: WJoEp5KFRJGCPDudp_DfMA - test-linux1804-32-shippable-qr/opt-web-platform-tests-pb: cEjLq4-cT_SKYVcG1hsXWg - test-linux1804-32-shippable-qr/opt-web-platform-tests-webcodecs: DznhGgYKROmxWEA-XaE0kA - test-linux1804-64-asan-qr/opt-cppunittest-1proc: IJ9PKhunTzKSBozbZ-3cXQ - test-linux1804-64-asan-qr/opt-crashtest: AXKEOFNkSJK8X26TjbABZA - test-linux1804-64-asan-qr/opt-crashtest-swr: cjgAhUEuSxiq1H4xeVsWsQ - test-linux1804-64-asan-qr/opt-icecat-ui-functional: CVZs-sYkRhuyeA05EGtVgg - test-linux1804-64-asan-qr/opt-gtest-1proc: WbyIFsvGSACD0z41rhq8Pw - test-linux1804-64-asan-qr/opt-marionette-1: AZamaRGRQZih1V6U6m2mfQ - test-linux1804-64-asan-qr/opt-marionette-2: MF41I2pgSY6Ey_zQPx_WTg - test-linux1804-64-asan-qr/opt-marionette-unittest: GE6PnSsMS3SOrERQeoEnRg - test-linux1804-64-asan-qr/opt-mochitest-a11y-1proc: SRHXNO9SRHWzt0K5QkkgRw - test-linux1804-64-asan-qr/opt-mochitest-browser-a11y-1: KHe0r-4qQRmE-EXn4B1qGA - test-linux1804-64-asan-qr/opt-mochitest-browser-a11y-2: YJsR4XBKTZaOWViHyjIxrA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-1: XBiPFn9vQWS8vdctrpPFDQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-10: fS5ONweISgqotXkHH-2hiw - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-11: cdBEJjK4TYeHF239fHbEEg - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-12: NW6S1Z7bThij87VeNsfeAQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-13: RbEVZhZtT26IAG_IlIShGA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-14: I8zjLflfQ0Cl0jYxdcNt7g - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-15: cnzjJ2JGQDSA4gB6RwufNQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-16: PyRjHn1_TquQe4vPD1eTow - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-2: d5uvjXuOTTaMTJSJvoMDVA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-3: amv5chlFQPKP8aCwuPlnIg - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-4: ZY1-SLVOSpybUfYaLtZmhQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-5: L-uNaUiXRuGXA9uPRaw4zA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-6: bDm4mhtsTd6dJygmL3QN7A - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-7: D2Mq-ehDSj6i1jeUGqQ8oQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-8: Wd9r0d3nTZK7_cXXZ-jIIQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-9: EODl5rS_T9GVR-KSj-9Ahw - test-linux1804-64-asan-qr/opt-mochitest-browser-media: LjLVhsonSsuVe2HcCEdLRw - test-linux1804-64-asan-qr/opt-mochitest-browser-translations: K5cL-UgITBGLPSuBl2D1WQ - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-1: De2EyLwyT1SJYJky3ZrH3A - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-2: dY8o8KeLQfuM6v4z9BvwVQ - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-3: JvmTKkhXRrO4pem_-DQTEA - test-linux1804-64-asan-qr/opt-mochitest-chrome-gpu-1proc: XW6iyq1mS72GhNnOSaQE4w - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-1: RtbXbwcPRCKo__wzlgYFxA - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-2: JIEWu2yxT2mnF_4Q8PFlkg - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-3: Esp0hkVeT_mOU_yocO3_xQ - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-4: QTL-uhznSemhHlabH-xESw - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-5: BBtg8FohS_SjwpezE7Dwcw - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-6: I4S3L983QBKw3zE-Nf_KfA - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-7: HI61ycpOR--pqi8b6j7Wig - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-8: DTHzj-TiTZynMew8vP0Ung - test-linux1804-64-asan-qr/opt-mochitest-media-1: TPq28mE6TUODrjK3_0DQGA - test-linux1804-64-asan-qr/opt-mochitest-media-2: UCKb-gzRSZyMVjBCGkV4hQ - test-linux1804-64-asan-qr/opt-mochitest-media-nogpu-1: YQ38dhJrTDe2MVTK6C13Kw - test-linux1804-64-asan-qr/opt-mochitest-media-nogpu-2: D8KbHRwJT7aQ7n_UdPaMTA - test-linux1804-64-asan-qr/opt-mochitest-media-spi-1: WSzpCOvFRACp4idt_Un3bQ - test-linux1804-64-asan-qr/opt-mochitest-media-spi-2: AwpYR2hYSiu1zfPP9DsNpA - test-linux1804-64-asan-qr/opt-mochitest-plain-1: cfGWqyuhTCSGrsfItau2fw - test-linux1804-64-asan-qr/opt-mochitest-plain-10: d9U3wO0zR0-bcfH0mjeqgg - test-linux1804-64-asan-qr/opt-mochitest-plain-2: cl9uQTaFTBiV9qu38rDgig - test-linux1804-64-asan-qr/opt-mochitest-plain-3: P8pW9-y7SX6J_PawXVzBJg - test-linux1804-64-asan-qr/opt-mochitest-plain-4: OC0lbGZPQkO1bHdaR5MfeQ - test-linux1804-64-asan-qr/opt-mochitest-plain-5: EhBoJzKGTHyEv1OeWOotBg - test-linux1804-64-asan-qr/opt-mochitest-plain-6: fnVvUEeaSnidVQdJC3Nf6Q - test-linux1804-64-asan-qr/opt-mochitest-plain-7: AO-QMAN9QjmZHqbqkNT5pg - test-linux1804-64-asan-qr/opt-mochitest-plain-8: GA1uBQULTsKQ3asofddTPg - test-linux1804-64-asan-qr/opt-mochitest-plain-9: cGmb41DlQ_WgXbx9p_8POg - test-linux1804-64-asan-qr/opt-mochitest-plain-gpu: UrxYjojeQHyzoOmFK0vgmQ - test-linux1804-64-asan-qr/opt-mochitest-remote: bnSuznaxTlig3B75qDYmTA - test-linux1804-64-asan-qr/opt-mochitest-webgl1-core: IuY_8AG1Q2udxPthP5ow5w - test-linux1804-64-asan-qr/opt-mochitest-webgl1-ext: GS8ZZPu0Q1CzZrN6N9uv1g - test-linux1804-64-asan-qr/opt-mochitest-webgl2-core: MXVxUCV6QUOiuj8BGoGg7w - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-1: ECAHgzP9Q02Eu-XdRuY6ww - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-2: CN8fUGthSyCc4YP-PGatSA - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-3: bfX5x87WSq6Ea4UjFSviIQ - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-4: KpEU5_LKSDixk_G41YhywQ - test-linux1804-64-asan-qr/opt-reftest-swr-1: CRu4Gl4bT0q4SjyZ8NO23A - test-linux1804-64-asan-qr/opt-reftest-swr-2: dE8quLGwR9C0L2jCEtqEAg - test-linux1804-64-asan-qr/opt-reftest-swr-3: N6Ntx52jQ0G-BT-BnSWltg - test-linux1804-64-asan-qr/opt-reftest-swr-4: fX27_8BPTyS1YWdYb3p-8Q - test-linux1804-64-asan-qr/opt-reftest-swr-5: VZ0QA9w8Sd6Yr6fYDqlMOQ - test-linux1804-64-asan-qr/opt-reftest-swr-6: f8q4LqiJTqiA4Ze6hrG9mQ - test-linux1804-64-asan-qr/opt-reftest-swr-7: eqE2qHApQvG-uKdRLGi_6A - test-linux1804-64-asan-qr/opt-reftest-swr-8: VhPpuI3RRuGmOakPPBzPXw - test-linux1804-64-asan-qr/opt-telemetry-tests-client: b5IcvN_JQTuCm82WUMuZ-g - test-linux1804-64-asan-qr/opt-web-platform-tests-1: OBP35xafSfCxebqWWBpeXA - test-linux1804-64-asan-qr/opt-web-platform-tests-10: cMY9ucBSQKabvRuuhZPV2w - test-linux1804-64-asan-qr/opt-web-platform-tests-11: CP3dFg6xQQKKxJrCJnQPOw - test-linux1804-64-asan-qr/opt-web-platform-tests-12: SkKT4m0DTBqynWSxQ5dlJA - test-linux1804-64-asan-qr/opt-web-platform-tests-13: aCmHFFrnSSy_B0I3I_O1cg - test-linux1804-64-asan-qr/opt-web-platform-tests-14: d8qqQoo4QAmg9LHxyh_ZnQ - test-linux1804-64-asan-qr/opt-web-platform-tests-15: B48NZBsqSiOxC36MrcLuQw - test-linux1804-64-asan-qr/opt-web-platform-tests-16: XYXPKJGSQZu8PP-FEieqIw - test-linux1804-64-asan-qr/opt-web-platform-tests-17: Pyt5lSx1Q0OoFY7J2G2a9A - test-linux1804-64-asan-qr/opt-web-platform-tests-18: LySChIRPQ2SGMptvABLAew - test-linux1804-64-asan-qr/opt-web-platform-tests-19: PR-XvHcgQ5KWJbzE-hDiSQ - test-linux1804-64-asan-qr/opt-web-platform-tests-2: aHgO3vJ3SaqO3w5E1iTo-Q - test-linux1804-64-asan-qr/opt-web-platform-tests-20: CqG-BlJZQE68DQdSmeXt4w - test-linux1804-64-asan-qr/opt-web-platform-tests-21: BTOjYTPsR_yKVixYJZfJRg - test-linux1804-64-asan-qr/opt-web-platform-tests-22: Gwk9knzBTJ6P1wPHf0D9gg - test-linux1804-64-asan-qr/opt-web-platform-tests-3: TjqJWycDSs2oBcUK0kL9Ow - test-linux1804-64-asan-qr/opt-web-platform-tests-4: EScWWDwxSveyHB4WHqkEkw - test-linux1804-64-asan-qr/opt-web-platform-tests-5: LPnQfOUDSEGQe8H42OIwmA - test-linux1804-64-asan-qr/opt-web-platform-tests-6: JQFm88kBTvGXwgzM3mVRlg - test-linux1804-64-asan-qr/opt-web-platform-tests-7: QywvsZWERR6gtDN1sLJtYA - test-linux1804-64-asan-qr/opt-web-platform-tests-8: Keg_ushiRByLN3vpM-KHRQ - test-linux1804-64-asan-qr/opt-web-platform-tests-9: Tr7l0a5yRT6rZZ5Y6MqoFg - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-1: EFo4JlbaSX-Lq3XvAFdHIQ - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-2: a665XEOlSP2gWayXs567og - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-3: H0yxKo9RSte6ypPpWO_4xw - test-linux1804-64-asan-qr/opt-web-platform-tests-crashtest: YWp4B2WkTl62SdfNJ5nidQ - test-linux1804-64-asan-qr/opt-web-platform-tests-eme: IBWuDrhFST6zvm1HaP1hFQ - test-linux1804-64-asan-qr/opt-web-platform-tests-pb: ePrioGh6R0GtYOWAtk8XfA - test-linux1804-64-asan-qr/opt-web-platform-tests-print-reftest: TvRAIzKyQYmqrDNksC5Cpw - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-1: S3TqS9VlT7a_KpO49ujx0g - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-2: FVCZbG8lT4yAngpxE00DvQ - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-3: NzyBs9xMQYmxvUVyJAYBbA - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-4: RmOmq8yjSI2WHRAmrrVyZg - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-5: PRdp3VmQRxO1AsmpgYpWUg - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-6: YX0UoHQlTeSnDHptu3pr_w - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-1: OkOxEgwgSMScyQ228n9iow - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-2: ZRHeRSjuTteD8d9lWZR43Q - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-3: f6Uxsrc9R7yboroE7S3_wg - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-4: MDzzHAsmSbyGgtHv81Vh0g - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-5: Lt3uv7p4QEm2Fu7q_t482w - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-1: Y-3kmgKVSbe8lOvb5R2doA - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-2: d4asqfphSfarE4OXGoKY6A - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-3: BfTxMfcGTcCoC9Uvi1AlHg - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-4: C2Y_6mGHRZGSJ2a0VQQUJw - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-5: KRXm35rnSBmHom1mB-c_cQ - test-linux1804-64-asan-qr/opt-web-platform-tests-webcodecs: NiDSlYk2QEy_zCLFuRUKeg - test-linux1804-64-asan-qr/opt-xpcshell-1: OTgPbkESQNqaYmQehBx1rQ - test-linux1804-64-asan-qr/opt-xpcshell-2: WT6aw0KxRyiCjKJG2ZbQpA - test-linux1804-64-asan-qr/opt-xpcshell-3: Z9LsSRdTRfGlRuI1XnVZ7A - test-linux1804-64-asan-qr/opt-xpcshell-4: SBJ1NOsdQLeMEUZrpFQWNw - test-linux1804-64-qr/debug-cppunittest-1proc: MGru4JDbSyy6MyD-9li92A - test-linux1804-64-qr/debug-crashtest: SFRbJVgjSGyigTS3d3H0Iw - test-linux1804-64-qr/debug-crashtest-ioi: PBIIlJ9zQ7KX3arLs6Vm9A - test-linux1804-64-qr/debug-crashtest-swr: NXD8pKoGRSKONat4GyZ-aQ - test-linux1804-64-qr/debug-icecat-ui-functional: FewcQrsgR0uX9i-1Yn5VIg - test-linux1804-64-qr/debug-gtest-1proc: DWGjt5_4SCOyKir-hPQ1ew - test-linux1804-64-qr/debug-gtest-ioi: WFOb6WiIRC-VsyqSLLLzyw - test-linux1804-64-qr/debug-marionette: J0oDjsOPSMaBPi4Q3g1qqA - test-linux1804-64-qr/debug-marionette-ioi: WH7bn5_RQ4Gbg6DwQ2xzmw - test-linux1804-64-qr/debug-marionette-swr: BIck2ZmJR7it-h6NQ7GlTg - test-linux1804-64-qr/debug-marionette-unittest: VQ75B0ZuRtWzMANA7362UA - test-linux1804-64-qr/debug-marionette-unittest-swr: R7M6LgqMQ_m8lHQRGZUStA - test-linux1804-64-qr/debug-mochitest-a11y-1proc: M91gC7P6QOmvNJ_oLadm2w - test-linux1804-64-qr/debug-mochitest-a11y-swr-1proc: TD7JC6JnSou-j0idwqBikg - test-linux1804-64-qr/debug-mochitest-browser-a11y: ERSLtOJVQumS7IIJH1_IUg - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-1: D4KTkQRJRc-GJKOaIAikHA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-10: DOrPz76_RUe-Ojs6YDZnoQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-11: b39pv2TzQ8iokMw5FJdn7Q - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-12: f21BzDXMQkmxcQjeXdke0g - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-13: REIyS79pQJ2BUoKMrcnHvw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-14: bLj13AcCSxOtE7IXxMMWwA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-15: Wjp0qgpFSfq7SESXetGZhQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-16: ClZ83cShRB2t9XARKaEVLQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-2: cMrlfG29S7KFtC6sRB3DlA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-3: baLGP4ZPS8-AVApo00EFtw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-4: X4-m3fFESye9DTeUlPVxDg - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-5: NtoYW0GQTuKxUedQQFal6Q - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-6: CsfX2-rdQWmpRB6Dgjsraw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-7: C3Zxm5euQXyTUcJDZQ6miQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-8: Xht38F7YSCu2lB0PaWO68g - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-9: cicfxAsyQCWWPC3eOWyYrw - test-linux1804-64-qr/debug-mochitest-browser-media: GvobJL42RlK8T-d2_kBWZQ - test-linux1804-64-qr/debug-mochitest-browser-translations: NBiPSTGOTI6WdzGo5-N3Jg - test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: SRu2Ob8lSnu1zLBPrU_-zw - test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: EiWn39CzToSgmsyoGnO34g - test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: brSNOKBtTBG3txD8x04R1Q - test-linux1804-64-qr/debug-mochitest-chrome-gpu-1proc: bZrS3j8HQaiGaqPLX0eVYg - test-linux1804-64-qr/debug-mochitest-chrome-gpu-swr-1proc: STtZ38AOQ7-RguOD_jQ3RQ - test-linux1804-64-qr/debug-mochitest-chrome-ioi: M3xIF-R_S5iVsjwdrgAFwQ - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-1: Xm4u30iQSly7vSlzbMOgRw - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-2: FLR-drYfTWCMUKyH7vVIqA - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-3: WmW--AdqRc6Ery885IsLug - test-linux1804-64-qr/debug-mochitest-devtools-chrome-1: Cw5fRxnWRF6K2cMUAlmwxA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-10: JlHZreoXSsuVCX5NTw44UQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-11: XJTZUTQzS0yNMaCc9Fp4ww - test-linux1804-64-qr/debug-mochitest-devtools-chrome-12: Y_bpaddiSTuBe-lovF35Hw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-13: Z-MnmQxJQqC0h3CcNx9TtQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-14: IGWatsQBReWHNO17w-tgjA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-2: UHavfQR1QpirvVvJ6AVLfg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-3: OCoZHBKnQU-2MKVOk6MwGA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-4: SxB0M-caT3SaP51le48G9w - test-linux1804-64-qr/debug-mochitest-devtools-chrome-5: OSRMZd1wSc2LUBQtqt0NfQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-6: YepPnqLoRBaL7lfpLfZgOQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-7: ZmgWg4ZRRFqn9Oa557VJPw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-8: Klle_0gcT5KVaKOxR_eD8A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-9: Z1pCbKMdSkmKO6KHbBhTew - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-1: fjPwqjHRQrOrB7tiskC5qQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-10: bL8vA--tTl2DTMiwU9UfzA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-11: XFyTBrkWSzOIwAWvNfShEw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-12: NVXd5N13QveYEWXZh05c-A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-13: c2TQFhEARz2xdcnIj35TCg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-14: WCX7_yopSLaaaXoi6Dc3ag - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-2: Cl0trn4nQ6eCLz6rzW4W-A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-3: VKBnwJtgQ2qbyCwzuzO1aQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-4: Kd8Wf1mWRoKTpGj61f7iWg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-5: CPWv0E02TaqSEGm4FT8ALg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-6: JLOuQ-U3TOWSAW2QlvAqPg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-7: F9P3iRtEQdyH9DulrJFFLg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-8: VjHdNNoiQyuDsrZz-7cNlA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-9: U_w-2FFxQxqOyJdZL8tK5A - test-linux1804-64-qr/debug-mochitest-media-1: VlXJprY4T-mFa35QNso4Sg - test-linux1804-64-qr/debug-mochitest-media-2: UyDiztMGScGVVAWSrvtkrA - test-linux1804-64-qr/debug-mochitest-media-3: ZsNvzbeAQhaykXT8_DFvmQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-1: OkbyZaDuRbi56MIugH92mQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-2: Lqv7ZYU-T2yN37VY9uWPNQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-3: cpsXud4mS9mYoni1K_XEAw - test-linux1804-64-qr/debug-mochitest-media-spi-1: VODBgRmkRY-I2xKUMPXRsQ - test-linux1804-64-qr/debug-mochitest-media-spi-2: Q4B1x2T7RQ-e6m_I_dKL6A - test-linux1804-64-qr/debug-mochitest-media-spi-3: Nm53ZyK3RTqlIBBTeL2gWQ - test-linux1804-64-qr/debug-mochitest-plain-1: SO7en9R6Sx-i5iJ_BhbdXw - test-linux1804-64-qr/debug-mochitest-plain-10: MvnXcOTSRyeQYI53DoYXCQ - test-linux1804-64-qr/debug-mochitest-plain-11: K3hLlGKyTPehVxV4IzSJuQ - test-linux1804-64-qr/debug-mochitest-plain-12: E_GUF1BzTWWmBKUKlSHOuQ - test-linux1804-64-qr/debug-mochitest-plain-13: KvToZNpdRm27x8bNAsjT6w - test-linux1804-64-qr/debug-mochitest-plain-14: UCiTXcEPSvGO1IEtBHWBQQ - test-linux1804-64-qr/debug-mochitest-plain-15: AEsSLF7ATWSwMe7xf4iibQ - test-linux1804-64-qr/debug-mochitest-plain-16: Vjmd2rmvQD6zlfBqwqSLKQ - test-linux1804-64-qr/debug-mochitest-plain-2: MxL1tN_TTrSojZABLs0uYA - test-linux1804-64-qr/debug-mochitest-plain-3: E7EYGTqWQTqoJsD8-RB_vw - test-linux1804-64-qr/debug-mochitest-plain-4: dmLV3PbTSX6HnkTB9PjwQw - test-linux1804-64-qr/debug-mochitest-plain-5: fzsMsSpTQJi3Xe7hrs0YZA - test-linux1804-64-qr/debug-mochitest-plain-6: HcGVO2vKSUW8MhUMevsmKw - test-linux1804-64-qr/debug-mochitest-plain-7: DzR3cmOORAiNwNPVOjnO0A - test-linux1804-64-qr/debug-mochitest-plain-8: V6__2cerThy0FqosIWLgAg - test-linux1804-64-qr/debug-mochitest-plain-9: RMoeV1RbRd62q3BqHGmrmQ - test-linux1804-64-qr/debug-mochitest-plain-gpu: BKEPXv7ITcaucj_s5el2DQ - test-linux1804-64-qr/debug-mochitest-plain-gpu-swr: f80APx-OTsSkfdITKyNK6w - test-linux1804-64-qr/debug-mochitest-plain-http2-1: bBvMUydbRBK1pmS3ySLWxQ - test-linux1804-64-qr/debug-mochitest-plain-http2-10: MHy1UsKTQxqb4vna-QjE7Q - test-linux1804-64-qr/debug-mochitest-plain-http2-11: GsZzmEbiQ3uz1hAOXtVeUw - test-linux1804-64-qr/debug-mochitest-plain-http2-12: dokM-ASHT8CWuB25VeGc0Q - test-linux1804-64-qr/debug-mochitest-plain-http2-13: Ld252SyqRO6K4ha73Td6ow - test-linux1804-64-qr/debug-mochitest-plain-http2-14: WUXK6jSAQRmqkbTNoHFHEA - test-linux1804-64-qr/debug-mochitest-plain-http2-15: I7Lf_8IjTz2rkp5VoMMxrw - test-linux1804-64-qr/debug-mochitest-plain-http2-16: BEwqltfaTAmDfJ2ywMUviw - test-linux1804-64-qr/debug-mochitest-plain-http2-2: F7jfnNbiSCKPL-97W9rrfw - test-linux1804-64-qr/debug-mochitest-plain-http2-3: dMNsJzN2Rx6tGLVVIPnfFA - test-linux1804-64-qr/debug-mochitest-plain-http2-4: StKIh4zOSg-CaLKMOg66LQ - test-linux1804-64-qr/debug-mochitest-plain-http2-5: Dz-ozs25RySvCt7xHvuiNw - test-linux1804-64-qr/debug-mochitest-plain-http2-6: ciKrF852QuWr7RzG1pTpSQ - test-linux1804-64-qr/debug-mochitest-plain-http2-7: aDGFs8ANRpiBkq_O46lyxA - test-linux1804-64-qr/debug-mochitest-plain-http2-8: HbQaApiKSQSPM5-kj8bH4Q - test-linux1804-64-qr/debug-mochitest-plain-http2-9: bxa0STsFTcS5_kg_t76RFA - test-linux1804-64-qr/debug-mochitest-plain-http3-1: d1rdFCWSRmGAJdmMtBExpQ - test-linux1804-64-qr/debug-mochitest-plain-http3-10: I4OR6jNHTvWWtSB9d_4ePQ - test-linux1804-64-qr/debug-mochitest-plain-http3-11: KREj0b_eQDaeTTDd6ha0sA - test-linux1804-64-qr/debug-mochitest-plain-http3-12: Yyz7JpSyRJykBC5o0f5v6w - test-linux1804-64-qr/debug-mochitest-plain-http3-13: dLBZh2kXR7mtcsZ1M67opQ - test-linux1804-64-qr/debug-mochitest-plain-http3-14: eDBtyol-Q4O3vjkMaoH6jQ - test-linux1804-64-qr/debug-mochitest-plain-http3-15: SSz_5qvrQNi9Sqno-AgCDw - test-linux1804-64-qr/debug-mochitest-plain-http3-16: KScj4CxuSUOOyzrq_WaItA - test-linux1804-64-qr/debug-mochitest-plain-http3-2: IPGhkysNTLK4st5tG2_imA - test-linux1804-64-qr/debug-mochitest-plain-http3-3: QIfwQRQGTeSYFf41E0GdGA - test-linux1804-64-qr/debug-mochitest-plain-http3-4: eds3psdGTM2IOpd18VVDrw - test-linux1804-64-qr/debug-mochitest-plain-http3-5: DTJqupg5Q6mXh8sDIR601w - test-linux1804-64-qr/debug-mochitest-plain-http3-6: K_n1NSPYTKG55_NJlQ0pAg - test-linux1804-64-qr/debug-mochitest-plain-http3-7: Rnqy2r3qRFql6gbB-KuZdw - test-linux1804-64-qr/debug-mochitest-plain-http3-8: QNHkKuFeTie4LaP01ECJOw - test-linux1804-64-qr/debug-mochitest-plain-http3-9: csa1zMg8SCa1LyESjJgFbQ - test-linux1804-64-qr/debug-mochitest-plain-ioi: OXssbm3wRK-3OZy7mtKRYA - test-linux1804-64-qr/debug-mochitest-remote: bBMqaeQpTPezQi682TLiMw - test-linux1804-64-qr/debug-mochitest-webgl1-core: WrubNWvgRg2rbMY9lzJOzg - test-linux1804-64-qr/debug-mochitest-webgl1-core-swr: fM5y9qraSFCS03EdM7XaFA - test-linux1804-64-qr/debug-mochitest-webgl1-ext: KT9TpvlQR92_bZNQRPd3ew - test-linux1804-64-qr/debug-mochitest-webgl1-ext-swr: DY1SZVumS4W19W7VpxuqDw - test-linux1804-64-qr/debug-mochitest-webgl2-core: Gju445ShS_6pB5P-FC3s_Q - test-linux1804-64-qr/debug-mochitest-webgl2-core-swr: C3xTl358QSaA1hmp5LanLQ - test-linux1804-64-qr/debug-mochitest-webgl2-ext-1: Ot0g-hSNQF2YEWIFEg93qw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-2: LhpF1p79SNSsp1wZyLSYpA - test-linux1804-64-qr/debug-mochitest-webgl2-ext-3: I8tiahd4QV2wAOppKQK4nw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-4: Lxyagr28Q0KReYObBMyPCg - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-1: CE7nwzCcS46FJenhx0pVTw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-2: IeBhYi6YTB6OgRC_TdmAhA - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-3: WsAJHLK8RUWIWU6zK4Bq0A - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-4: N2OE-SqhQ0qKi3RTPkV0ng - test-linux1804-64-qr/debug-reftest-1: ORO-YxeWQ6u6DshQrcZn0A - test-linux1804-64-qr/debug-reftest-2: eZK4NT6zSfqaBHCTOBt8Ew - test-linux1804-64-qr/debug-reftest-3: WBZrHJSUTEWT-NY7-IW-sw - test-linux1804-64-qr/debug-reftest-4: f_HTxFdzQ2qGdaAJr8ft9g - test-linux1804-64-qr/debug-reftest-5: GL7zEmg8SeO8AY9kWGJ-8A - test-linux1804-64-qr/debug-reftest-6: Fcn_K-lbQIGIiJIez6aGOw - test-linux1804-64-qr/debug-reftest-7: EcmG73wqT-O2VogiZTAVMA - test-linux1804-64-qr/debug-reftest-8: AC-lWme0SoaXzodH5Udr_A - test-linux1804-64-qr/debug-reftest-nogpu-1: NunQZvjxRMueL6VZXzhs8w - test-linux1804-64-qr/debug-reftest-nogpu-2: Iqjxl3j7RZKJGAXfup_Jvg - test-linux1804-64-qr/debug-reftest-nogpu-3: DGlTnJYJTbyGrtVjPgen0g - test-linux1804-64-qr/debug-reftest-nogpu-4: HR18tPQXRiefAF8xhZ0PyA - test-linux1804-64-qr/debug-reftest-nogpu-5: KckTf1n-QcCWBAMYbfhAGg - test-linux1804-64-qr/debug-reftest-nogpu-6: At51U8YDTpWGOHfC4ZE4RA - test-linux1804-64-qr/debug-reftest-nogpu-7: Oy5xU-r-SUuCZX4yWvSJzA - test-linux1804-64-qr/debug-reftest-nogpu-8: ERWewBp9T425FOZqH2rUPA - test-linux1804-64-qr/debug-reftest-s-1: SnpFrzHnQV-TQ-0ikq1Pvw - test-linux1804-64-qr/debug-reftest-s-2: bUqEEY_qSWOlmr-C_CYCxQ - test-linux1804-64-qr/debug-reftest-s-3: clG3VY0PQT-_YXCZVRLDbQ - test-linux1804-64-qr/debug-reftest-s-4: EptoSFIFTjaV6AOqcRv7-Q - test-linux1804-64-qr/debug-reftest-s-5: Q-NaFBDmQz6ghTRCSFjeDg - test-linux1804-64-qr/debug-reftest-s-6: eRpqp4BeRhCGCsQ0EYc8Ig - test-linux1804-64-qr/debug-reftest-s-7: D7MBz0mWTNKCJL9r_CEtJA - test-linux1804-64-qr/debug-reftest-s-8: NcafSxLATJSxGjm7OX_43Q - test-linux1804-64-qr/debug-reftest-swr-1: ZuEb8JqeTS6iiHNOYKy7Rw - test-linux1804-64-qr/debug-reftest-swr-2: OxGvyxpeTw-go0dvCB5HIw - test-linux1804-64-qr/debug-reftest-swr-3: FnFsv6hDRA6DtbHRSGOihQ - test-linux1804-64-qr/debug-reftest-swr-4: AhyU_b01QaSiHwYzN0OD7Q - test-linux1804-64-qr/debug-reftest-swr-5: OfZSZ31vTXSlEm13x81Mxw - test-linux1804-64-qr/debug-reftest-swr-6: F30zB_-jSjKTQ-eUkmx-Jg - test-linux1804-64-qr/debug-reftest-swr-7: GTU96U8YTrygQK68o6T5LA - test-linux1804-64-qr/debug-reftest-swr-8: Wi_UjvrlQ8yv0IIzbnC_uQ - test-linux1804-64-qr/debug-telemetry-tests-client: Ap_cRHMARDGc8F75Pjy6CQ - test-linux1804-64-qr/debug-web-platform-tests-1: DfQy2AiWRzC4Mx7f9fth2A - test-linux1804-64-qr/debug-web-platform-tests-10: TI7vVJ-mRVag5NNc7JwKfA - test-linux1804-64-qr/debug-web-platform-tests-11: cWdYDIkuT9WO22rF7QY-8A - test-linux1804-64-qr/debug-web-platform-tests-12: TaGICJIXTCWVBshvrbBaPA - test-linux1804-64-qr/debug-web-platform-tests-13: Q7qck7kdRaiIyps1SkGfpw - test-linux1804-64-qr/debug-web-platform-tests-14: AhAnSFrCSYaDOt_0LHM2lA - test-linux1804-64-qr/debug-web-platform-tests-15: T0m5w7djRreFvh3W9TisGA - test-linux1804-64-qr/debug-web-platform-tests-16: TKzA_V6QQGSqtX7z5JQANA - test-linux1804-64-qr/debug-web-platform-tests-2: BcQ0_m4QQQewGM5qQdQUDw - test-linux1804-64-qr/debug-web-platform-tests-3: eO17ExVPTfGoj8Nw9IKSgw - test-linux1804-64-qr/debug-web-platform-tests-4: Tb8Ozv0gScmcXiYNpSRotg - test-linux1804-64-qr/debug-web-platform-tests-5: O5xPlUIjTM-d8yr0u48Nxg - test-linux1804-64-qr/debug-web-platform-tests-6: e1iFqYrGT1GyyImQPjn3cQ - test-linux1804-64-qr/debug-web-platform-tests-7: dh49P3JpSBmJ9W1DrqpAiw - test-linux1804-64-qr/debug-web-platform-tests-8: WBu3ZhpnSwqp5nH1lf1JQQ - test-linux1804-64-qr/debug-web-platform-tests-9: GzsGCuQnQcOnodyPSZrX0Q - test-linux1804-64-qr/debug-web-platform-tests-canvas-1: IQkbmeoDS96K6gstNx7_kw - test-linux1804-64-qr/debug-web-platform-tests-canvas-2: NC5aS6OxSYGzfZmXVhA8bA - test-linux1804-64-qr/debug-web-platform-tests-crashtest: duO-GaHTTSmPv2BRf9pmJw - test-linux1804-64-qr/debug-web-platform-tests-crashtest-swr: EMFaaVybTHu_vs61D8vOhg - test-linux1804-64-qr/debug-web-platform-tests-eme: QzNOPXj1SzmBSwtDUgyo8A - test-linux1804-64-qr/debug-web-platform-tests-ioi: IIfnQra3TC29eYPDDOtEhg - test-linux1804-64-qr/debug-web-platform-tests-pb: SQavglTwQuK8KuJpOKjw_w - test-linux1804-64-qr/debug-web-platform-tests-pb-ioi: CG2b1Dj6TlCOfAbJlD5xpQ - test-linux1804-64-qr/debug-web-platform-tests-print-reftest: Ro66zjrES2SwdQyGb96GjA - test-linux1804-64-qr/debug-web-platform-tests-print-reftest-swr: H3nafxwnTUmk7kUpPuEvBA - test-linux1804-64-qr/debug-web-platform-tests-reftest-1: KS7ls1pUR5GaCONgPySqAg - test-linux1804-64-qr/debug-web-platform-tests-reftest-2: N-UUNxjdTO27W7aHc2wkFg - test-linux1804-64-qr/debug-web-platform-tests-reftest-3: H-SUghiBRye83F9Y8EMeZQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-4: BLZpb8jMRT-IFNare-4d0A - test-linux1804-64-qr/debug-web-platform-tests-reftest-5: bb5UQayRRfGhLMyrHXSYiQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-6: NfFo6at_Q5-0repEF8CkJg - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-1: DT0CNRFSQ7GtQZNY0-yG0Q - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-2: P42MaKYOSVmqeUL_NvRZOQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-3: Vu_DrFg7QtmDdbeBP5J3fA - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-4: FOmsiMnGTbu5tPK4AX4VtQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-5: UmFoU1xISce_JFeNHal-hA - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-6: KMVDXWJBT9K3TFf8mdVrBg - test-linux1804-64-qr/debug-web-platform-tests-wdspec-1: Do7GjyANQ_CT12FXzulSzg - test-linux1804-64-qr/debug-web-platform-tests-wdspec-2: LhnXRXOuRQGZ4chLzFVY-A - test-linux1804-64-qr/debug-web-platform-tests-wdspec-3: c9VxTsw7SGqMvmbFZqlbfw - test-linux1804-64-qr/debug-web-platform-tests-wdspec-4: Mf0Z-tOCTBC79yy7oRvtcQ - test-linux1804-64-qr/debug-web-platform-tests-wdspec-5: D-MNGJlSTjWEnhFgqpCj0Q - test-linux1804-64-qr/debug-web-platform-tests-wdspec-6: STpipcJmQJSQnm0yg5JCiA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-1: CAyVkprgQpSl-67FmJfCUA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-2: G6VqvtLTRc6bSyK5bP3jqA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-3: dP-y2jd5S7WMegiaeLYWFw - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-4: ZEUmRHLjQeW6wLB6KL5vog - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-5: NoUVdezjQUC8ew-BehlJ7A - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-6: epTqK6MpSHOX1Y3AVDF9VA - test-linux1804-64-qr/debug-web-platform-tests-webcodecs: J2aHR1cmRWGC8nrdHGV-qg - test-linux1804-64-qr/debug-xpcshell-1: a3VFYUm4TXimKQW_JDLMcQ - test-linux1804-64-qr/debug-xpcshell-2: F_jfXWTBT2aoiP1jR9n2og - test-linux1804-64-qr/debug-xpcshell-3: fM9D6W4DQ1WIwpxkBe9SEQ - test-linux1804-64-qr/debug-xpcshell-4: dzzYdL0OQlGGFQy-pshJaQ - test-linux1804-64-qr/debug-xpcshell-ioi: Q0CzXz9VQkuwoB9PyyTBGg - test-linux1804-64-shippable-qr/opt-cppunittest-1proc: TFMZzrDnSiOAT7ATKfUzPA - test-linux1804-64-shippable-qr/opt-crashtest: crQ3vybUSeCW4weTKLRtcw - test-linux1804-64-shippable-qr/opt-crashtest-ioi: GKqidZKcRAWpRELhOzpxcA - test-linux1804-64-shippable-qr/opt-icecat-ui-functional: GsaaKGHSROaLiFgbiNf9IQ - test-linux1804-64-shippable-qr/opt-gtest-1proc: OYXLHpFVQd61tJG992xzBw - test-linux1804-64-shippable-qr/opt-gtest-ioi: ctMO7sU-QgCuQEnNZ8VsQA - test-linux1804-64-shippable-qr/opt-marionette: GbUcgVSTRmOF3-pJhuxOyA - test-linux1804-64-shippable-qr/opt-marionette-headless: NlN16TSaTzWpZz5BhJ8C2A - test-linux1804-64-shippable-qr/opt-marionette-ioi: CswzeQpiQQKIFferluvJzw - test-linux1804-64-shippable-qr/opt-marionette-unittest: XAWQRRDSR--EQ7YrtJXfvg - test-linux1804-64-shippable-qr/opt-marionette-unittest-headless: Ap__68kKQoqe1KomS5wnLQ - test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: EQPslHmRQ9ikc_fEHVE6Qw - test-linux1804-64-shippable-qr/opt-mochitest-browser-a11y: Fu2pDs1WTq-eVrPc4PMNbg - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-1: XJOPQF70SaSy61LvJijgaQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-2: FFM_ew9RSES0z61_pe422Q - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-3: YV37dy38TPyvoZy1sIcuxA - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-4: HHnyngmqQWOjwjYzEmi6wg - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-5: GhOnNRtHQtyDEq-6LdAaiw - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-6: Z3h8s4DLSoyAXyxi4FYYTQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-7: HRbXFmWGQmGJwNGmGlfjDQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-8: FkR17wuMTBu-xX8hA8_PKA - test-linux1804-64-shippable-qr/opt-mochitest-browser-media: aTzeji9TRGia9Ud8VZYlyQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-translations: RaewiY9HSWaD349GBUmj-g - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: L3jQ97HLS2a-QIDHw64zzg - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: RlUaApzjQuqsNTH4Rhd-VA - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: UiW4AggDThOyNNfjZh8BVQ - test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: dA9YXZaITX60cY_-Mm0KHQ - test-linux1804-64-shippable-qr/opt-mochitest-chrome-ioi: Xbj8y7R-RHK2_I2UUhB97g - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-1: cld7_-fgRJi0DzG9Uqyozw - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-2: VEQ686tlS-6cSKsoMpiXgw - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-3: dOyCTzX_TXe2FOqtndSuEg - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-4: S3GavKezSlWqswNmxNL1QQ - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-5: Rwb39MbbQTO-4xmnRwzjwQ - test-linux1804-64-shippable-qr/opt-mochitest-media-1: eSLQSnc_TQ69sunL5j3VLg - test-linux1804-64-shippable-qr/opt-mochitest-media-2: Ogg3KggFSsOYtUqz6ZtGZQ - test-linux1804-64-shippable-qr/opt-mochitest-media-nogpu-1: ICZyHBBMR3S1EpXLVNy1QQ - test-linux1804-64-shippable-qr/opt-mochitest-media-nogpu-2: fXZaL3VTSmOwvx3w8sk3Gg - test-linux1804-64-shippable-qr/opt-mochitest-media-spi-1: ekF5SOWuTESd5C4cm97XeA - test-linux1804-64-shippable-qr/opt-mochitest-media-spi-2: JUa2qiKASVu74pcBJp_KIA - test-linux1804-64-shippable-qr/opt-mochitest-plain-1: RTBLlCJjRBKDFRIklulghA - test-linux1804-64-shippable-qr/opt-mochitest-plain-2: btTy9weMQ5G27bqAeHBQ6A - test-linux1804-64-shippable-qr/opt-mochitest-plain-3: VhnTSQHcRA6Bsq3dWvImQQ - test-linux1804-64-shippable-qr/opt-mochitest-plain-4: InIWtYrRTXyx1opThu8Tew - test-linux1804-64-shippable-qr/opt-mochitest-plain-5: C5Sbc7vnQn6LL2_VDtMG0Q - test-linux1804-64-shippable-qr/opt-mochitest-plain-6: DUlUR3hSTHq1VARzh11pRw - test-linux1804-64-shippable-qr/opt-mochitest-plain-7: RtLxkBoOR2-A57BLxN_FLw - test-linux1804-64-shippable-qr/opt-mochitest-plain-8: F8OPMM1DSNKboNSY-y9-kg - test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu: WORMsqRVRZWbGfI3xS652g - test-linux1804-64-shippable-qr/opt-mochitest-plain-ioi: bSowmc0RT4-VhCmNLF-igw - test-linux1804-64-shippable-qr/opt-mochitest-remote: Op5cozQZQgSVqhfPJr5sBA - test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core: AVNjxHo1R-6VUWFKHP7oow - test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext: GWNVOxZeTWG62z222JKWgg - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core: XdVOqH4YRL6Nx3-qIHuieg - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-1: aTAJf6fySDeAdXtc1lUdkA - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-2: e6rAroJVQSGhK1loHmVCFA - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-3: RB74H1wjQr6qsy1eldfZ2A - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-4: BbiQ0u53QIe0AhbU6MOi2Q - test-linux1804-64-shippable-qr/opt-reftest-1: TPQrmCvYSXWt7vPnzHknKQ - test-linux1804-64-shippable-qr/opt-reftest-2: cOxnoWhCTRiVDwcdOtjJrA - test-linux1804-64-shippable-qr/opt-reftest-3: Br_shjLxQ0iA3PjkJ9NSdw - test-linux1804-64-shippable-qr/opt-reftest-4: Mtk7PqveTGiKFaryb-CD2g - test-linux1804-64-shippable-qr/opt-reftest-5: PdRrY1LrQw2udS9oPcrjPQ - test-linux1804-64-shippable-qr/opt-reftest-nogpu-1: ONycFqpKR1CD4imjwwRlGw - test-linux1804-64-shippable-qr/opt-reftest-nogpu-2: bnsTTZMTTwmjIZZAZW-yGg - test-linux1804-64-shippable-qr/opt-reftest-nogpu-3: L56iNcPkSSeXHiUNvA-SwA - test-linux1804-64-shippable-qr/opt-reftest-nogpu-4: Q-rCa6zuR92YzqvNibYJ4w - test-linux1804-64-shippable-qr/opt-reftest-nogpu-5: bk5ajt-YTNS-JsqQBKD6Mg - test-linux1804-64-shippable-qr/opt-telemetry-tests-client: KzU1XAetTWmyDhM0vZMq0A - test-linux1804-64-shippable-qr/opt-web-platform-tests-1: W7JFeeNoQzmbkPuRqR8elA - test-linux1804-64-shippable-qr/opt-web-platform-tests-10: RCOu530gT3u6n0kHv07HGQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-2: Dwi3s3VPR8-WYP4FINTwcA - test-linux1804-64-shippable-qr/opt-web-platform-tests-3: Ay_ymMQKQi-zYqOrBbzVmQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-4: ImsBbldlQFCz3ouMSjTcmg - test-linux1804-64-shippable-qr/opt-web-platform-tests-5: Pma2_8d2RceDD33MDHgofA - test-linux1804-64-shippable-qr/opt-web-platform-tests-6: dem-U3rGQqiV_YMi_UHm5A - test-linux1804-64-shippable-qr/opt-web-platform-tests-7: KXe-SK__Q46o2ogSTAgfgw - test-linux1804-64-shippable-qr/opt-web-platform-tests-8: Q9D10FkbQSWju2esFxiq4g - test-linux1804-64-shippable-qr/opt-web-platform-tests-9: XzHW2Q0eRGiXhmjrlU4R2g - test-linux1804-64-shippable-qr/opt-web-platform-tests-canvas: adYGk3jDTeSUDBKkwE_fsQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest: YIMq7mtPSrSuvclLVK5stA - test-linux1804-64-shippable-qr/opt-web-platform-tests-eme: ANLoey-9TcKcYdPzvoWJGQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-ioi: Cx5CcZ7jTNGnD6EtglTpxg - test-linux1804-64-shippable-qr/opt-web-platform-tests-pb: TlO2D8oRRX21hgUzai6IZw - test-linux1804-64-shippable-qr/opt-web-platform-tests-pb-ioi: fM6t87ZfQpuzKqPVdHwnRQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest: aQwYOsrbSYmRsduM0IdBFA - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1: DB-6D-QfQb6aTMvtKQPp1g - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2: dDYaKWLiT-WfY5Z4jJAq1Q - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3: SUQ01S4TTW-JxdGfqixl3A - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4: R-cj1yJ4QnSOvpZihAsQCw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1: U0_FL7kDTliCJqan6FRzEw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2: JktSWr9qSS6PmB94Dug2pA - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3: COoW7OydSK25_6XJDTQFJw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-4: Xwvm_sSLTbmEGENr1j-z-A - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-5: BVAhMqdCQuSUOuIianvqZg - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: Pp7xt0CaQsOJt9Ch6AcqRQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: R-FxhqVWTx6UB9SSFZTmew - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: ayfSln0OR3WvzgZxK3tdjw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-4: KusllYZ5RVWeVRIF9JMt0g - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-5: fL5Mkps1TRm3ZJIR90Mx_A - test-linux1804-64-shippable-qr/opt-web-platform-tests-webcodecs: IIZcmsyGS8ia0CxOY0KRIw - test-linux1804-64-shippable-qr/opt-xpcshell-1: IfySS7VyQmST0L0skoNe_g - test-linux1804-64-shippable-qr/opt-xpcshell-2: KaBThN7YSrCHlxsGGNyVrA - test-linux1804-64-shippable-qr/opt-xpcshell-ioi: dE3GZtiISJ-FwG-YfbFEbw - test-linux1804-64-tsan-qr/opt-cppunittest-1proc: Es0fJs_1SWSvZluTLeswRw - test-linux1804-64-tsan-qr/opt-crashtest-1: NSLiUWHuSmmPlLZCKvN_Lg - test-linux1804-64-tsan-qr/opt-crashtest-2: Nvh8BTKdQZy21GcThxjzrQ - test-linux1804-64-tsan-qr/opt-crashtest-3: aD2YDuV5RSCZ7v-K6JMhpw - test-linux1804-64-tsan-qr/opt-crashtest-4: BIYODUviR4eKwYVE4WHhwA - test-linux1804-64-tsan-qr/opt-crashtest-swr-1: QI5qO3y6RxuGryJi9_-PCQ - test-linux1804-64-tsan-qr/opt-crashtest-swr-2: cnG_ko1QTU2AeruS6W6yhQ - test-linux1804-64-tsan-qr/opt-crashtest-swr-3: U46cqy72S1G6Z0WaJlexDA - test-linux1804-64-tsan-qr/opt-crashtest-swr-4: SmoFjPvNSruTDNsV0IFZjw - test-linux1804-64-tsan-qr/opt-icecat-ui-functional: fqqP94HjTaCUsm0QPInEAg - test-linux1804-64-tsan-qr/opt-gtest-1proc: L3cJROOkToW3QW_-EvTG9Q - test-linux1804-64-tsan-qr/opt-marionette-1: ZbwzvHR3TUGLb7asyNRleg - test-linux1804-64-tsan-qr/opt-marionette-2: eM9rkrk0TsWyFQorfgr9UA - test-linux1804-64-tsan-qr/opt-marionette-unittest: IdlRmxbMQwaua9v2w9kD0Q - test-linux1804-64-tsan-qr/opt-mochitest-a11y-1proc: cIVGOKsRQ-GpMA4vE6rs8w - test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-1: IbXV4RwAQgu-P6ZXLJAzEg - test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-2: FBT43356QcSi1wMC9LCkvA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-1: P5LeI1gMRaixvGBMNhoJIg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-10: aFndVb9HQIGp2sU1OgGCNA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-11: QJXL4u3vR0Wokeoar2JaXA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-12: OqWHjjq4Qc2x5Hj0NOD7Pw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-13: eBFvW0AuTeOhipBDOqILmQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-14: C9Nd8Vr3Tx2PXqWMrkj1tA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-15: YYpC9WTkSgu3jc-4wndTzA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-16: ZoIXCi0ZS7KEx6k0uz-8FQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-17: EMythfQPSKKLnCkVPGMRGQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-18: HhJbn9mQQ3qDKJ0WlsiYvw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-19: Aa3UXItTQ-WP1UTm-hoXPQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-2: AZmpPPS2T_SqmA7JI3Bxyw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-20: eWcSdmiTRNGaVfZrkkCivg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-21: Q1M198iJTeWFvssZ1IRNnA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-22: RC31cxY2RtqZ4bEY3YRPKQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-23: ZJ4jpiBTSEqls_Z1AzkQ-A - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-24: SUDQmkdPQZybtFszQB67qQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-25: ejlEZ2vHTM-BR3QG0Gltzw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-26: cYNrNINQRLGATQ0P5oL0XQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-27: JjDvjQB2SHKS4TRAupQFSg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-28: DrNkEODKQsKgSSUNXQwGyw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-29: JN_SvO5nRDWawLxKTfmizA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-3: YdqztO_bT8iMcv14g8k70w - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-30: bYRNxseURVa4d9A3HCEYPA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-31: TwVPT_nfTYCigb9CZOwjlg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-32: RUOlnzFiQ7-coHDunsm6_A - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-4: cTpk-JvtSKKT2QpZx2k5Yg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-5: CZn2LElkTOOhyHeo6dIxCQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-6: NmBVaw5BSoaN-EIfsTRExA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-7: dHaizgd0TMOChMcMdusxLQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-8: GxMYsvozQUaymUINWDQC1w - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-9: aGbbKk12SH-yOc42z4BDFA - test-linux1804-64-tsan-qr/opt-mochitest-browser-media: ZHYsUP-tTv-gUeFai_GHKA - test-linux1804-64-tsan-qr/opt-mochitest-browser-translations: A10WJq7MS4CtBiRo48n-9A - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-1: Sbf_LEoiRNqyzYJV1aVG4Q - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-2: BJVQArbXRy2pdLWUScmTXw - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-3: ez1xmKnLTTevjBSTRd2EhA - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-4: ekCb1_oiRd2I5mDu0L30Gw - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-5: EbmsaRHZQvmWhUzLQjx_hg - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-6: AxaFC_1QSQWMBsQthiznng - test-linux1804-64-tsan-qr/opt-mochitest-chrome-gpu-1proc: ep2kPwJ9RPWJWVSfZH-9iQ - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-1: a8sT2K9GSyiOcTTurqF9lg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-10: X35rBcfWT2u0oQbAAYi9Lg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-11: aeu2cftSQ06s7ZgSi_dufg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-12: b3Y6GHHXTpCDLJ4zT67Wtw - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-13: bfWee2BgRLCwLWXTND7NwA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-14: ftY3CcLnT1eLgZX0pVyZ2w - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-15: DV-IIEanT8iE_5gjXbG-Og - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-16: Cii3288PQGi0IqtyDxjhgA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-2: C9dtJXPzTI2DABuXZxeXZQ - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-3: ZJPGcdP9QOG24JkiyLhbVw - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-4: HLQr5c9LR7O19h6X8MB3aA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-5: D9CGtjlmTXmGr-aSi-ZHRg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-6: LfvlU4hgRk-9oIGz1Yny9A - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-7: OqsRINSvTJKgKLneop3G_A - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-8: dbfRwKHvTKa_jcoUSfGt0g - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-9: NwfkrflRS_6dQ1fOSRthow - test-linux1804-64-tsan-qr/opt-mochitest-media-1: aqNBjMGaQNiJDYYsYyF71w - test-linux1804-64-tsan-qr/opt-mochitest-media-2: dmnixghpQx64VIuUZgJMIA - test-linux1804-64-tsan-qr/opt-mochitest-media-3: MYZsdMIhR3G7WZbrIiMcBA - test-linux1804-64-tsan-qr/opt-mochitest-media-4: ZH7WSBUuTw2BnQra7_UB-Q - test-linux1804-64-tsan-qr/opt-mochitest-media-5: WrWh1621TEiC_rtw2rKSRw - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-1: eo4xIyFYSs2Ws7qo5UwcSA - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-2: RBaL1fpNTDOXpswoV3hULg - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-3: Qz7XW6oqRTOdfVE2LPYrCg - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-4: dwCLWkN6RbKuf3AFYFy9JA - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-5: HQyZ2f6wRjWftXtlAFCncg - test-linux1804-64-tsan-qr/opt-mochitest-plain-1: b8Vya2arT26UPFOT__bFNA - test-linux1804-64-tsan-qr/opt-mochitest-plain-10: DzY-JuoKQQm2NB5La5fm9A - test-linux1804-64-tsan-qr/opt-mochitest-plain-11: CFhgA1QxTPKoJNxnyEhdXw - test-linux1804-64-tsan-qr/opt-mochitest-plain-12: Rv94eL0LSB-aZ7I1N_yIvQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-13: OjRdPtAmRmOjUAAHSiz-ig - test-linux1804-64-tsan-qr/opt-mochitest-plain-14: AATfTuwMSWuacQURHHrVGw - test-linux1804-64-tsan-qr/opt-mochitest-plain-15: U1MYfZxYSZOFwxzcdXV0uQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-16: MUqi3x8jQ7WwI3WUKPS8Ew - test-linux1804-64-tsan-qr/opt-mochitest-plain-17: GCzgvSe3QNeX6r0KNvKxjw - test-linux1804-64-tsan-qr/opt-mochitest-plain-18: N_wSqJajR1y98kRPapf2iQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-19: QusPWKO_T-mSkEOvOLtJwA - test-linux1804-64-tsan-qr/opt-mochitest-plain-2: HwhR6hT1TemfWShgTPK6Nw - test-linux1804-64-tsan-qr/opt-mochitest-plain-20: EPwfUKIfRIe7N4vMXmrNdQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-3: VzvC7SvcR6OsxJ7CLnyftA - test-linux1804-64-tsan-qr/opt-mochitest-plain-4: SIawDvAsSyqDftF-lT0Z5g - test-linux1804-64-tsan-qr/opt-mochitest-plain-5: OfVbHVdxRHiqewrbaNYMbQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-6: MmULNhDlRNOvxBBXEsVTzQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-7: OgAwKJZpTw2VD5gGJCFsIw - test-linux1804-64-tsan-qr/opt-mochitest-plain-8: OoocqXg6TdG-2C1CtCln2w - test-linux1804-64-tsan-qr/opt-mochitest-plain-9: XVtHRy4GQfCVoA3t19wqlw - test-linux1804-64-tsan-qr/opt-mochitest-plain-gpu: WtX1c6IpQ7SKRbr_C_U9FQ - test-linux1804-64-tsan-qr/opt-mochitest-remote: KN7g1cLETayXgsW-Mosecw - test-linux1804-64-tsan-qr/opt-reftest-1: XRT0o-0pRYafSmzfDt7Wxg - test-linux1804-64-tsan-qr/opt-reftest-10: LpozwxUoSlG1rTP2IcpY8A - test-linux1804-64-tsan-qr/opt-reftest-11: QY1SZk8NRhGw-n4MlsWALg - test-linux1804-64-tsan-qr/opt-reftest-12: RNuR3YqST0ag5xcU4n4AmQ - test-linux1804-64-tsan-qr/opt-reftest-13: Z9WKiNhRRTy-CfmAeRUI-A - test-linux1804-64-tsan-qr/opt-reftest-14: N5aeYFR7TH-2X0DhQGz0VQ - test-linux1804-64-tsan-qr/opt-reftest-15: E8DygEs5Tqi7W-3DWKNmQQ - test-linux1804-64-tsan-qr/opt-reftest-16: SYal1wJhQhOnfwwJ9rs95g - test-linux1804-64-tsan-qr/opt-reftest-2: Vs7lDumGTVujzUurK2EPhw - test-linux1804-64-tsan-qr/opt-reftest-3: ciCANP_8RmabnmlmxdevVQ - test-linux1804-64-tsan-qr/opt-reftest-4: J-hI1NE7RZu7zZMOPEQv9g - test-linux1804-64-tsan-qr/opt-reftest-5: U_RhZQ3zSUapXJXNrQi-vA - test-linux1804-64-tsan-qr/opt-reftest-6: UeJaFScxRve7hiDP6RSS-Q - test-linux1804-64-tsan-qr/opt-reftest-7: Moc7_GZtTpGsTpTLUEHpqg - test-linux1804-64-tsan-qr/opt-reftest-8: arixZe6ERmmJsuBEzemEaw - test-linux1804-64-tsan-qr/opt-reftest-9: IjEBYNhgT52CXtjsVYlzVA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-1: EQ6H_3FlQlCnXa5oz1iK_w - test-linux1804-64-tsan-qr/opt-reftest-nogpu-10: TxMI5tO_RRy-yNUYvMI0pQ - test-linux1804-64-tsan-qr/opt-reftest-nogpu-11: KEv0FAVyRouwBSvQclJx6g - test-linux1804-64-tsan-qr/opt-reftest-nogpu-12: GuDCrH2UTNCR7lJ7BeOKgA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-13: MAeKaRfrQi6o5V3lpRsxug - test-linux1804-64-tsan-qr/opt-reftest-nogpu-14: Wmnmgm2-TKSaWp5TnerL8A - test-linux1804-64-tsan-qr/opt-reftest-nogpu-15: Lz6zRKRvQ6O0Nw4KkNHZkA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-16: IL6-wbVGSpyJkDcsx8k8vg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-2: SikgsGoOSk2B-CQIBdVUyQ - test-linux1804-64-tsan-qr/opt-reftest-nogpu-3: LO2ukHuxTSiSwkxsnJRy5g - test-linux1804-64-tsan-qr/opt-reftest-nogpu-4: IZe7c3mfQliYr4_qDRMJ9A - test-linux1804-64-tsan-qr/opt-reftest-nogpu-5: G_Z7LuJ_Qs-Rru7zNtjGow - test-linux1804-64-tsan-qr/opt-reftest-nogpu-6: cJgwXefcTWizTypZ-rERHg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-7: Tp-TU9VWT2uYH3vA68iHmg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-8: Ico1AzHjR8GtcFpbuwTqYA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-9: dCsLSqQwSDG4EkhXJDl48w - test-linux1804-64-tsan-qr/opt-reftest-swr-1: HkT1cUfMSwmQHlIQTxNuNQ - test-linux1804-64-tsan-qr/opt-reftest-swr-10: GJvoIW-FQLaLLO8NkTJTiw - test-linux1804-64-tsan-qr/opt-reftest-swr-11: XT9qsb7HRAuCQweKknGmsQ - test-linux1804-64-tsan-qr/opt-reftest-swr-12: IAtGP_G0QTOE0bbYDnjhbQ - test-linux1804-64-tsan-qr/opt-reftest-swr-13: AXTZPf1gRUmJ-uLCR2vFOg - test-linux1804-64-tsan-qr/opt-reftest-swr-14: HxWa1whzSeWWaB24C7cpOA - test-linux1804-64-tsan-qr/opt-reftest-swr-15: UKBKee-6TPy9dKAjVOo52Q - test-linux1804-64-tsan-qr/opt-reftest-swr-16: CjSZOnvMSPafaXVrh7zaXw - test-linux1804-64-tsan-qr/opt-reftest-swr-2: NuWUZeCFTM6ADZmes99V5A - test-linux1804-64-tsan-qr/opt-reftest-swr-3: aojBOcoNRumpKYqgHnnrjQ - test-linux1804-64-tsan-qr/opt-reftest-swr-4: Yx-cBLeNSo-lW2Tgsu2qOA - test-linux1804-64-tsan-qr/opt-reftest-swr-5: LVNT2oDQQtmndZhIEencyQ - test-linux1804-64-tsan-qr/opt-reftest-swr-6: DGzdQ5L0R5Oq_hs8LN_TnQ - test-linux1804-64-tsan-qr/opt-reftest-swr-7: FfwbIRPxTfeoU8-kKiOz_Q - test-linux1804-64-tsan-qr/opt-reftest-swr-8: ZpwtPSJzRF6pHixxaXH-tA - test-linux1804-64-tsan-qr/opt-reftest-swr-9: G33Q094NQ1eiITFvU1ybdQ - test-linux1804-64-tsan-qr/opt-telemetry-tests-client: GKPCrIdbTB-7rU-hC4HrCA - test-linux1804-64-tsan-qr/opt-web-platform-tests-1: aa0JT53bQ2GP-O3BqyA5vw - test-linux1804-64-tsan-qr/opt-web-platform-tests-10: HZUJqdeBSTid3S5i3A4bEg - test-linux1804-64-tsan-qr/opt-web-platform-tests-11: UvkIOk6UT-6xioWhlmGo7g - test-linux1804-64-tsan-qr/opt-web-platform-tests-12: PxWRQ3dbTceTKftveBkthQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-13: BAVCa0QTQua9WWtPggQbcA - test-linux1804-64-tsan-qr/opt-web-platform-tests-14: Ucfk3GX8QI25ISd-Jzxh0g - test-linux1804-64-tsan-qr/opt-web-platform-tests-15: W050qERYQ2a2MFPDw2x3GA - test-linux1804-64-tsan-qr/opt-web-platform-tests-16: LQyP4XwIRHymYRc-L2BOaw - test-linux1804-64-tsan-qr/opt-web-platform-tests-17: GUSQcQ22RqO35NNt4IGNQg - test-linux1804-64-tsan-qr/opt-web-platform-tests-18: SIhboOTTSx6x7XGqM_nliw - test-linux1804-64-tsan-qr/opt-web-platform-tests-19: OQTLKfiyS4WfVmj2SdlOvA - test-linux1804-64-tsan-qr/opt-web-platform-tests-2: XGzo4TTMQjqH8QUsdOtiSg - test-linux1804-64-tsan-qr/opt-web-platform-tests-20: ELhYbhLmSp-m9DTMyT3vRg - test-linux1804-64-tsan-qr/opt-web-platform-tests-21: MrbIWXCSSj25RF9HOmDxOw - test-linux1804-64-tsan-qr/opt-web-platform-tests-22: UHc8l6qGRAuxcewqPE_aFg - test-linux1804-64-tsan-qr/opt-web-platform-tests-23: FUyZNj5mTCSZLzSKoeA21w - test-linux1804-64-tsan-qr/opt-web-platform-tests-24: CZpV9pbhTKCt-bjJBCKoPQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-25: WJVNqH-KSKC3gTUkZXjuEQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-26: OXn62e-BQ1yAXgpluzNkiw - test-linux1804-64-tsan-qr/opt-web-platform-tests-27: N3l0YlVpQumlVfv3uRAtMQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-28: JEMEvCEFRcCbR4l4xSPHtg - test-linux1804-64-tsan-qr/opt-web-platform-tests-29: VkGIRwqsQ9-X4hzwm9w58g - test-linux1804-64-tsan-qr/opt-web-platform-tests-3: UnIH1ggcTxyS5xHGTbwUoA - test-linux1804-64-tsan-qr/opt-web-platform-tests-30: RocLJIPCSMOrZJz7xYpKcg - test-linux1804-64-tsan-qr/opt-web-platform-tests-31: a3CTbZK-QHOSQW7fioLFgA - test-linux1804-64-tsan-qr/opt-web-platform-tests-32: FFNtODFYQHiUd5SOwJYDGA - test-linux1804-64-tsan-qr/opt-web-platform-tests-4: Jm47LVEQTEKj4CfUMs5Kgw - test-linux1804-64-tsan-qr/opt-web-platform-tests-5: Tm1rUPSKTPOEFZzSc95t1g - test-linux1804-64-tsan-qr/opt-web-platform-tests-6: BIf6649NSniLswRXvGYgeA - test-linux1804-64-tsan-qr/opt-web-platform-tests-7: JkZDQpzNQn6hCPR4S9MKug - test-linux1804-64-tsan-qr/opt-web-platform-tests-8: Mc9Dx2zSSVWGS9DhXfITpw - test-linux1804-64-tsan-qr/opt-web-platform-tests-9: VERqXymGROqAV4FhQ8Bk8Q - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-1: MrOszuwqRwu2Sq2qWkbE8Q - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-2: CNVHwObYS_KaoJKqRAP_9g - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-3: Swz7qwr0R2KifUoditLVBA - test-linux1804-64-tsan-qr/opt-web-platform-tests-crashtest: FElM47-5TUK4Gp9w14Ab4w - test-linux1804-64-tsan-qr/opt-web-platform-tests-eme: KNATNL6jRAS8G38Sz7QNEQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-pb: edAJNe-5Rhafhgjleg-uhw - test-linux1804-64-tsan-qr/opt-web-platform-tests-print-reftest: KMPYj3DSQwmkhRQVz-HsnQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-1: LgxLRpdjRFmHyfPVu9XuPA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-10: ZFnwIpaPR2C-cIlJ1LPk9g - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-11: NpqCrF66SweUaJQkac4SbQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-12: WBE2kFHSTuuWyizOkNu0xg - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-13: Xbzx-N1lRpWy6uuH2eMMSA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-14: Hds5xzxdQCWCtm3PbzcIqQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-15: dGKjLFOETRKIiUQ5fD1xOg - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-16: AUt8XVZmQHCrslSYqF4_iQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-2: GIOp_6qtTMGdR2CzQ1T5qQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-3: Ib9DEXKISvKIeIbT0Ar2Qw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-4: erOEhcZOT_iexaQp5pFalw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-5: Hix5BhGaR_WFqe3hMrcSsQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-6: SiCCxoGVQRq_bXFwUJQiXA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-7: LFdOg2f1TJerPJmAcf1WcQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-8: ekIcVAWASnOJRv4i6j-kjw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-9: f0s6NvSAR2WUm7R6wgs8aQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-1: W1qrOGjLT4i_NSPNkwWD4A - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-2: e2nY4I79SyWg7wQkYl-org - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-3: PT25SWjrQRKqESu7JgNFAw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-4: bGslJuekQOS3UdeAJ9Eqmw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-5: PLXZ5sMQSKej8mbN_Q-U0g - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-6: S6DOUc2ySqCLWKSWSvTYvw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-7: NJsxsUDQSEyu_CA5PTKJVg - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-8: P6hSN-9_Qb6UpFDrO_omoA - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-1: FSju-oT1QsunK1rDyw1A8w - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-2: cHaiHX0IQaKrylYxh0e1lQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-3: P3id6q2UT6mGQer0CfWUfA - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-4: eMSJTKTaQOmseshXEAJNvw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-5: B6hEIyX8Szmmx2H_B2DauQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-6: S6PjqDpyRSCCQj9zTrsgQw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-7: ZCVk2qdGQPCzhxNYuOthxQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-8: OqhBGIy9TgmCb1kB6mZjFg - test-linux1804-64-tsan-qr/opt-web-platform-tests-webcodecs: Da1XSRdsT5u_abhtfxAEEQ - test-linux1804-64-tsan-qr/opt-xpcshell-1: MyLzZIL1Sc-ytoPvzwn83g - test-linux1804-64-tsan-qr/opt-xpcshell-10: fp0OdvZKTFOYXOSqRrlK1g - test-linux1804-64-tsan-qr/opt-xpcshell-2: Ns_TDtWkT-ewyUifbvBzaA - test-linux1804-64-tsan-qr/opt-xpcshell-3: ZIJW_N_QS_6BTuI3Ali_Ag - test-linux1804-64-tsan-qr/opt-xpcshell-4: bBXYWEM3SJmLMzVa7y6IpA - test-linux1804-64-tsan-qr/opt-xpcshell-5: O6n_yGzZSBu3Q0GP8NGOtQ - test-linux1804-64-tsan-qr/opt-xpcshell-6: PtJE27tpTo6agX5B1gfmKQ - test-linux1804-64-tsan-qr/opt-xpcshell-7: cDfsADcmSDaS5Z_lo4A5kg - test-linux1804-64-tsan-qr/opt-xpcshell-8: OwziidTFSy-3jULh7shmBQ - test-linux1804-64-tsan-qr/opt-xpcshell-9: c5nCKdKgR_CyR8w806GhXw - test-linux2204-64-wayland-shippable/opt-cppunittest-1proc: J1p9A9bFQVydIJd_RC7wlA - test-linux2204-64-wayland-shippable/opt-crashtest: GqmBG3StSuWpA9lgamZUKA - test-linux2204-64-wayland-shippable/opt-icecat-ui-functional: N-PNbuEoQtCjfQ87IZBkNA - test-linux2204-64-wayland-shippable/opt-mochitest-a11y-1proc: AmB-ZTLiTdmNrZizDl84yA - test-linux2204-64-wayland-shippable/opt-mochitest-browser-media: FnHIxF1FTO-a1e1mVeL70g - test-linux2204-64-wayland-shippable/opt-mochitest-browser-translations: dM-SXWITThCL6AO_894PKA - test-linux2204-64-wayland-shippable/opt-mochitest-chrome-gpu-1proc: PKHY6ztSTMKtZ7z65OGKrQ - test-linux2204-64-wayland-shippable/opt-mochitest-plain-1: ZU16V-pDQvuw7zLuJ0GEaQ - test-linux2204-64-wayland-shippable/opt-mochitest-plain-2: JXW7eudIRralngGJrd91iw - test-linux2204-64-wayland-shippable/opt-mochitest-plain-3: WRB3rfFmQHiuutG2FkXQNA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-4: BWBTRAXMQeKMxxn7-mdLyA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-5: f_45mdfxR-On77ZCJp1MBg - test-linux2204-64-wayland-shippable/opt-mochitest-plain-6: WpBDtC6GTtKEv0g6ZblMxA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-7: SQyoHiL_RlCQc0WgBTt02Q - test-linux2204-64-wayland-shippable/opt-mochitest-plain-8: fsBhvdlNTe-ur7iTwsQ5Ig - test-linux2204-64-wayland-shippable/opt-mochitest-plain-gpu: HgQ1cjBlRAyI5jOs2ASYFQ - test-linux2204-64-wayland-shippable/opt-mochitest-remote: KJ0mMmmvSF-OS98lJIH0Uw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl1-core: YV9bV8UGRLOdoCYvUCVNNA - test-linux2204-64-wayland-shippable/opt-mochitest-webgl1-ext: YmteotQATiS-oVZicZkRXw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-1: Cy2yKYINSoGTdMQVHsFahw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-2: GA2-TEwAS_Kli4PuofRRzQ - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-3: KpPDqpOFTz2NjLIOgClacw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-4: ZHq0bhE5QW67nkwRysxGKg - test-linux2204-64-wayland-shippable/opt-telemetry-tests-client: PJ8z0LPFRBGkscQ7U13q5g - test-linux2204-64-wayland-shippable/opt-web-platform-tests-crashtest: akutljoDRACCkVeAEca3gA - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-1: G7z7NwmNRAiYZQWCJGuFgQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-2: G9ryZS0RTM21iT8i-vPkpQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-3: BqRYKbAyRrCoVJKN0WRemw - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-4: cUPskFAQSw-1N22gGMhRJQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-5: QpJdt-0_Qk-Zf50JW52Mng - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-1: dOtA0rn4QL6wlZzsfWcEJg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-2: Y67N3EmHSZmtcfUYWN0KQg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-3: f8A0qcCfRuW9qKPCD3Eu_Q - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-4: VxhjrJ_kQbyzMoqhtzRKEg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-5: baHboWqDTRi953xAjsL_WQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-webcodecs: UoJSy0J2QPKlS91um7Uvdw - test-linux2204-64-wayland/debug-cppunittest-1proc: AyQq-S9wQhaMGqShcQfdMw - test-linux2204-64-wayland/debug-icecat-ui-functional: Ita8j52uQN2TAmjaSKUBgA - test-linux2204-64-wayland/debug-mochitest-a11y-1proc: CATOk57-Su2kggkI9ofjBQ - test-linux2204-64-wayland/debug-mochitest-browser-media: Y9weoKoHTXKhK4LdnOTk8A - test-linux2204-64-wayland/debug-mochitest-browser-translations: XkDKYnoNTCuCUKclmma_fQ - test-linux2204-64-wayland/debug-mochitest-chrome-gpu-1proc: RV3k674YQWSHsi7GMGlSoA - test-linux2204-64-wayland/debug-mochitest-plain-1: PXExMJT8Sya31zJp5pkJ4A - test-linux2204-64-wayland/debug-mochitest-plain-10: MHbMg07kSEqxJxtCwCOb-w - test-linux2204-64-wayland/debug-mochitest-plain-11: Wrmj9bYZSkuEcRXyakWa6A - test-linux2204-64-wayland/debug-mochitest-plain-12: ZWDeZ0OZSaK80hg-MTAIng - test-linux2204-64-wayland/debug-mochitest-plain-13: HPiWuqygTKixpLUEz603wA - test-linux2204-64-wayland/debug-mochitest-plain-14: N2E1uVjSQJOTCDp48BuRdA - test-linux2204-64-wayland/debug-mochitest-plain-15: ZaWhmmhKS3KhFjIoJdB4xA - test-linux2204-64-wayland/debug-mochitest-plain-16: HJKQRLXpQlmQAy1E4NYJlA - test-linux2204-64-wayland/debug-mochitest-plain-2: Gv2f5OsKQ2iROr1OeZKLIg - test-linux2204-64-wayland/debug-mochitest-plain-3: fb6iTplURXyIVOwM48D6ew - test-linux2204-64-wayland/debug-mochitest-plain-4: L_e9KFt5T9qbgtk90wiRvw - test-linux2204-64-wayland/debug-mochitest-plain-5: GKeBBSNcTPqA3pX6dC_5CA - test-linux2204-64-wayland/debug-mochitest-plain-6: Xbj2wToIT4uxrOITV7SflA - test-linux2204-64-wayland/debug-mochitest-plain-7: J6QN59F-Qzq69U60slwJOw - test-linux2204-64-wayland/debug-mochitest-plain-8: R20pR2Z-SZGD4neqhxJwcA - test-linux2204-64-wayland/debug-mochitest-plain-9: EyQnoEFbRCu-1ROwqd-HLg - test-linux2204-64-wayland/debug-mochitest-plain-gpu: fwa7Avq7TMimCDOmxaoF1A - test-linux2204-64-wayland/debug-mochitest-remote: QlxZByxERZitop2diy_efg - test-linux2204-64-wayland/debug-mochitest-webgl1-core: W_NJ5_IeSrqZksDIvoY-RQ - test-linux2204-64-wayland/debug-mochitest-webgl1-ext: RdxbDGE_TuyjhM81wqHuTQ - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-1: OI8-q2j7QwK8txylOu1Gkw - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-2: aTvKL-F4Tg23FtzG0JLv5w - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-3: XpWNQgkkT1qT29uDiJfXcw - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-4: OjFmHjhzRFCnRMZ0Iq7_tA - test-linux2204-64-wayland/debug-telemetry-tests-client: U1soooMJTAi3GgVutpWSqg - test-linux2204-64-wayland/debug-web-platform-tests-crashtest: PXjbQXMQQcOw2Mk9DfYPcw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-1: bDvszWxZTX2V1y7NdMyVRw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-2: eSGnEsg_QTC8K3zLSGwLvQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-3: DIl6EHMORcyplxEpmfvDBQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-4: CBk0ySMKTSS6O47r401Kuw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-5: IFeJVEi3RhChWztOZtFEGw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-6: RD9CPdOFRzysZciwCtWz9Q - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-1: A-rOaWEdQCu0hctrf8sj8g - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-2: ElPRSi7sTemyiYpnN0CNRA - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-3: BUAtKMQzQpCFrT6_qIVulQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-4: ZQuuRbwzTPaKmL9iYnMQQQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-5: cCmRPJK6RY2PAWo_A5n_KA - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-6: dXutih7hTzWfTcZlwGzIfw - test-linux2204-64-wayland/debug-web-platform-tests-webcodecs: V8u0KQJwQyqe9a_hDu9XOg - test-macosx1015-64-qr/debug-cppunittest-1proc: XP3CUfbEQlCtPKnw6YU7yg - test-macosx1015-64-qr/debug-crashtest: PF4RmHSnQmenXJTg-2qH-w - test-macosx1015-64-qr/debug-crashtest-ioi: KsVleiSuQY2u7QlOeBsjVA - test-macosx1015-64-qr/debug-crashtest-swr: bPhSvpCFSHGMCTXIP2T7og - test-macosx1015-64-qr/debug-mochitest-browser-chrome-1: Mhokm979Rdek52uVHrmR-A - test-macosx1015-64-qr/debug-mochitest-browser-chrome-10: dUEhy1AeS52D-7OmGoB8BQ - test-macosx1015-64-qr/debug-mochitest-browser-chrome-11: alHW-FUfR5ClpbhP0QMeYg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-12: Yods_YbYT7iWehTXDfB1Tg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-2: e5IQIHBhSPWdE3_lFdiBsg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-3: E29rRsN2SoKfNEWIugkKRg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-4: C13QK-ydT_S8P3QaTLkLvA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-5: LgXPJjSZSDykNIKMdS3h5Q - test-macosx1015-64-qr/debug-mochitest-browser-chrome-6: N2ZG5YbhSkCH6d4J63zhWg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-7: IsvIt_lbSBqI1xAZc1SQgA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-8: AIQ8uwaGS26FHtNleBCwYA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-9: Tm4SXSnMRpm6h3w67IQnBg - test-macosx1015-64-qr/debug-mochitest-media-1: QIpnmwKjQc-aShrqBvgqLQ - test-macosx1015-64-qr/debug-mochitest-media-2: AWzVjqtYRZmPzHJNyFuHrQ - test-macosx1015-64-qr/debug-mochitest-media-spi-1: HbipiBQSRMWQV2iEd559xQ - test-macosx1015-64-qr/debug-mochitest-media-spi-2: R4dk5hxKQDaZIQ3T3x8qrw - test-macosx1015-64-qr/debug-mochitest-webgl1-core: TcbKgCUGRqCQlKz-C-NuIg - test-macosx1015-64-qr/debug-mochitest-webgl1-ext: B5z21vLDT02sW4BIxXoWxQ - test-macosx1015-64-qr/debug-mochitest-webgl2-core: EYulm87oRduBx_jmUgC2Ew - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-1: P9-ekwWiTuGMUOXrG_zNIg - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-2: BLL74ghrRpqO0bq3e948vA - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-3: LapbT7qIQiukpYg66su2ug - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-4: S4kav91JRG2U2h_jOUrPAQ - test-macosx1015-64-qr/debug-xpcshell-1: PjONvbQNTtq_lykhwm2vjg - test-macosx1015-64-qr/debug-xpcshell-2: O8ipcFchTw-MoXk7ux-Brg - test-macosx1015-64-qr/debug-xpcshell-ioi: Pcv04TZlSF-wzSfGzQX3cA - test-macosx1015-64-shippable-qr/opt-cppunittest-1proc: dRqVTFf8R7qDBhOrg_6RMA - test-macosx1015-64-shippable-qr/opt-crashtest: FUc9YLZ5R22kPh46mUY73A - test-macosx1015-64-shippable-qr/opt-crashtest-ioi: FlRnWaMcQom0zU5L7Exfrw - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-1: Z2u5b0O7SlKPOsE35WegSg - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-10: BH-JKVEfRva0_6fBgUla_A - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-2: QJ9xRhzmSqqJIk6QIgXXIg - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-3: Q4ckEfKYTcqyhmQxMXwwEA - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-4: cA_781g_TQihFdsscNY9dw - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-5: CNtuPWGNTOi3Ye77TC_How - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-6: Hitr-oh5QJy3GDI-c7C18A - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-7: IJOt4djUSnOgW5DClpIEWA - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-8: EK8AqJH-RiOFecUYLMeIwQ - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-9: SBp_BmlwRByEAPImulKRWg - test-macosx1015-64-shippable-qr/opt-mochitest-media: aDRUeTtdStK45itiW0jcIA - test-macosx1015-64-shippable-qr/opt-mochitest-media-spi: AglzIkkfQCOcXl6iJKrvGw - test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-core: YWfCnEw2SjSLX62LghPUYQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-ext: ERIG7W1kTrKTmGyHHkOJ0Q - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-core: PTeTZAUTTKCZotUUyuqXsA - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-1: GF359bv-SO6CfXThhDxh2Q - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-2: CGmRFPelSYex_p02HpmhdQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-3: V-vZStDMThazltKtqcWNJQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-4: KWr4d0i2RQKgDRewYuZ6eA - test-macosx1015-64-shippable-qr/opt-xpcshell-1: NHsVfyDyTfqqceZ1AkjEJA - test-macosx1015-64-shippable-qr/opt-xpcshell-2: AtSeGNR7QmK0hv6k_T1yjA - test-macosx1015-64-shippable-qr/opt-xpcshell-ioi: UBs1ZJ2MTmKK40DmFhj6Zw - test-macosx1470-64-shippable/opt-cppunittest-1proc: OAE5V5yUTOCEM7DtCEwTvQ - test-macosx1470-64-shippable/opt-crashtest: fHxod8WqR8ukDesgQZ6bWQ - test-macosx1470-64-shippable/opt-crashtest-ioi: QEtUwuXkSjOoHM4p1nZ0Fw - test-macosx1470-64-shippable/opt-icecat-ui-functional: Plew-c2LQVGitDWjSTK2bQ - test-macosx1470-64-shippable/opt-gtest-1proc: F8VX2e4-RYee6Cq3XF5Wew - test-macosx1470-64-shippable/opt-gtest-ioi: McJsqtj1Rja-i7rIp00Ybg - test-macosx1470-64-shippable/opt-marionette: E9hRpNvgTv27Xb2j2vE5gg - test-macosx1470-64-shippable/opt-marionette-ioi: MY5YPAwyQB-x-LHAUyYt0g - test-macosx1470-64-shippable/opt-marionette-unittest: HdC8iw7wS9S8evELHKIVhQ - test-macosx1470-64-shippable/opt-mochitest-a11y-1proc: b-BTMcVmQWqPU2ILwY6fuA - test-macosx1470-64-shippable/opt-mochitest-browser-a11y: KR59ARoZQCmWYjERg6H9aA - test-macosx1470-64-shippable/opt-mochitest-browser-media: f5M3_2jTSjyD0Gb5_Mjsow - test-macosx1470-64-shippable/opt-mochitest-browser-translations: MLI2A6a_SY-pC8lFVeVH2w - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-1: E8LlJaDKTRadRX4-8QvXTQ - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-2: ZRFIR6MkQGWhJ2IX6ki2rg - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-3: Hk21X4iiRJKBs43Bdm3F2Q - test-macosx1470-64-shippable/opt-mochitest-chrome-gpu-1proc: UDdmgGCbS6-BapTDG1oK8Q - test-macosx1470-64-shippable/opt-mochitest-chrome-ioi: II9Le-NBRQWc2SOyPokEIQ - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-1: JwX-6v7jQziwRpM8PRcUzw - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-2: G1Ge0-w0TRSydmdzGC0EpQ - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-3: LEbYKX1iSKyO7C-DrDEtmA - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-4: Pm-GVJfUQlmMP4AFGnc89A - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-5: GakAQL-WRuSSZ2FGkv_TPw - test-macosx1470-64-shippable/opt-mochitest-media-spi: buETLG5UQhq9a_tbgE9DDw - test-macosx1470-64-shippable/opt-mochitest-plain-1: QYxbDDpVSKupRcQ878bHQg - test-macosx1470-64-shippable/opt-mochitest-plain-2: JnY2ATb3RYe287GSsCPRWA - test-macosx1470-64-shippable/opt-mochitest-plain-3: Jv5rc9wVR7-i6ObCK_oqfg - test-macosx1470-64-shippable/opt-mochitest-plain-4: Q9AZxIZMS9SahHb2sG3WhA - test-macosx1470-64-shippable/opt-mochitest-plain-5: QPCdsx77TZqbN14rJXEC0Q - test-macosx1470-64-shippable/opt-mochitest-plain-gpu: C1ImcaXXRFW88fnnLtvK2A - test-macosx1470-64-shippable/opt-mochitest-plain-ioi: FcCMovGmSw63ITzldijppA - test-macosx1470-64-shippable/opt-mochitest-remote: ME_gUIpERguhX7iunL9DWw - test-macosx1470-64-shippable/opt-mochitest-webgl1-core: C61EjVUQTGSQSYuYVwOl8A - test-macosx1470-64-shippable/opt-mochitest-webgl1-ext: JQO7_83yTRy9HaOVapv3aw - test-macosx1470-64-shippable/opt-mochitest-webgl2-core: DUEW4qquQXCgBGY9KKEzzQ - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-1: BZ0Oeza8Tqq2Ey_l0nWczw - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-2: O5njsb43Su6rOLLnSGh0Jg - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-3: G_h0pLe1T82Q2OOj3aLUYw - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-4: ZJlgvBZ0R_ieUFY5iGmt1w - test-macosx1470-64-shippable/opt-reftest-1: GXHsZFNPRvKV9EouXIuFwQ - test-macosx1470-64-shippable/opt-reftest-2: S93MbDJUSMyxnNtx7cBD8g - test-macosx1470-64-shippable/opt-reftest-3: Q9n12M5jT8mdSmMeJSgQpw - test-macosx1470-64-shippable/opt-telemetry-tests-client: DpNo040lSwmLmTFbYkq9rg - test-macosx1470-64-shippable/opt-web-platform-tests-1: SQFEDFFJQ8eI9M0xn-7b6A - test-macosx1470-64-shippable/opt-web-platform-tests-10: K9sFaUShQRudzQyAWlETCg - test-macosx1470-64-shippable/opt-web-platform-tests-2: fskTbx8hRJGuYC0nXxUS8A - test-macosx1470-64-shippable/opt-web-platform-tests-3: S2F2s7DGTVmEkZK-TFSEFA - test-macosx1470-64-shippable/opt-web-platform-tests-4: O03R1CfNTZiS-U9N-dijEA - test-macosx1470-64-shippable/opt-web-platform-tests-5: R84cvwzIS5eGeTiR2uhIwA - test-macosx1470-64-shippable/opt-web-platform-tests-6: I5GMs88lQeiBw9C-KH3lRw - test-macosx1470-64-shippable/opt-web-platform-tests-7: GcXPrB4fRqWsiBSMGnOWxw - test-macosx1470-64-shippable/opt-web-platform-tests-8: D6UfVbrcRgW66ekJaxTWHg - test-macosx1470-64-shippable/opt-web-platform-tests-9: cbHkUriMSMi66xxCS8oasQ - test-macosx1470-64-shippable/opt-web-platform-tests-canvas: SAjdGnb7Sr-4gE5wELhydQ - test-macosx1470-64-shippable/opt-web-platform-tests-crashtest: bZmGERB_Q6SR1WxvfS-xbg - test-macosx1470-64-shippable/opt-web-platform-tests-eme: M3hytLTGSxKufsTcUjQmRw - test-macosx1470-64-shippable/opt-web-platform-tests-ioi: TS_PV2c7Rv20WJxKS40ZlA - test-macosx1470-64-shippable/opt-web-platform-tests-pb: ej4Y5JgaRyKgSlrxFn_X0Q - test-macosx1470-64-shippable/opt-web-platform-tests-pb-ioi: TBMmES9HQwmQuWaYzaha-Q - test-macosx1470-64-shippable/opt-web-platform-tests-print-reftest: PYXqlk_nR9q31qq4cWXv-g - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-1: XhGBxDFQQZSzUmz1mtNOcA - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-2: ErI-JGtoRUOgW8V0MVbPBg - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-3: eoBnbvegSSm5lg-v5DTGHQ - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-4: L7d5w6FATMqcCDdlo_CojA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-1: Mpw_m796RX22rlRvDtAFWg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-2: F82Wa--eQEayH8u-0Vo4Qg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-3: CZMZAuVkRICcQ6mWvq_5qw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-4: K0wO22NWQpyDFyDNV8vcbw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-5: PIPWl_j7QBuycTNl6aOmjA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-1: JeJUlrxzRQerTlkEd3-wYg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-2: D4PwFUgVTvaF6JMwzDUmsw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-3: JSxZ4XBTR2OnIXQ2uOyFgA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-4: TKlzBGoiSnCzn67cVmPMMQ - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-5: DuiiWtFDRnCe-pf7fwUAUw - test-macosx1470-64-shippable/opt-web-platform-tests-webcodecs: GUDGrt5yRvS1JLfYycMi3g - test-macosx1470-64-shippable/opt-xpcshell-1: EI3l-Q02QAa3VmE8OpLonw - test-macosx1470-64-shippable/opt-xpcshell-2: FSgas5EBRnau2UXFsHKLzw - test-macosx1470-64-shippable/opt-xpcshell-ioi: Bk3lhT9bSjuHhtYBstaQaw - test-macosx1470-64/debug-cppunittest-1proc: aqTK-QpzTrOKQ1k0_6K66g - test-macosx1470-64/debug-crashtest: JhE8MSuIQ56v1GH3ZvKfvg - test-macosx1470-64/debug-crashtest-ioi: EAH3F2FsTQG_C2rB61GJxg - test-macosx1470-64/debug-crashtest-swr: YEwS5DZ3TWylbhcZ9-tu-w - test-macosx1470-64/debug-icecat-ui-functional: GBORd1rcSp2NkyIOI_ccxA - test-macosx1470-64/debug-gtest-1proc: aafGdy7CTL6SIFeZV-Qeyg - test-macosx1470-64/debug-gtest-ioi: MeXDXjuCSuW6CdwieCXV2A - test-macosx1470-64/debug-marionette: X804mPPsTW6-uNJ_I_831w - test-macosx1470-64/debug-marionette-ioi: Zk0x4x4qToSLUXrOav00NQ - test-macosx1470-64/debug-marionette-swr: BQaCwe6gQSeuVbP6auAARw - test-macosx1470-64/debug-marionette-unittest: NanznSLsTl2eaKXmBJgrsg - test-macosx1470-64/debug-marionette-unittest-swr: JSLGkkw1Tf-s9-yZaiJuiA - test-macosx1470-64/debug-mochitest-a11y-1proc: BxggIn2gQI-ujB4yqo3PJg - test-macosx1470-64/debug-mochitest-browser-a11y: TCECJTCIR-qeKdAwNCX7nQ - test-macosx1470-64/debug-mochitest-browser-media: OF7ViSHQS2yFEl368241vA - test-macosx1470-64/debug-mochitest-browser-translations: NlmCUCVgS4mV9WSrcoyuqg - test-macosx1470-64/debug-mochitest-chrome-1proc-1: T9A7esMOSdSwmAJcgrPRmA - test-macosx1470-64/debug-mochitest-chrome-1proc-2: AWLWkqiTQkq2OPMR3ongxQ - test-macosx1470-64/debug-mochitest-chrome-1proc-3: Tv168Qa_S9eJvYzDCmT9pg - test-macosx1470-64/debug-mochitest-chrome-gpu-1proc: Q-LHB014Q6WAVY4yWb1HNQ - test-macosx1470-64/debug-mochitest-chrome-ioi: IujR0sc6SgSpdSzRSgdKIw - test-macosx1470-64/debug-mochitest-devtools-chrome-1: KXtXxM-8S0ePAhWhO8vr1A - test-macosx1470-64/debug-mochitest-devtools-chrome-2: amVFR9ZUR9WbbTHt_Dig8A - test-macosx1470-64/debug-mochitest-devtools-chrome-3: YEjJk5_6QsK50V-G02phHQ - test-macosx1470-64/debug-mochitest-devtools-chrome-4: C0EjhGcAQA6MZbL1Z8OM8w - test-macosx1470-64/debug-mochitest-devtools-chrome-5: PEj8qeamRhqRiZapkxkkJw - test-macosx1470-64/debug-mochitest-devtools-chrome-6: Ud9KoRjVRV22S1Oow_f7BQ - test-macosx1470-64/debug-mochitest-devtools-chrome-7: Sf9Eq0JfT3a3dKnfDzg5Qg - test-macosx1470-64/debug-mochitest-devtools-chrome-8: OGijaQeiQ52WWEPmHFtEmg - test-macosx1470-64/debug-mochitest-media-spi-1: NdTaW6JzQeCJ1pMHr5Z_1Q - test-macosx1470-64/debug-mochitest-media-spi-2: U4QFbBBiQmuWpHLvWp4v7w - test-macosx1470-64/debug-mochitest-plain-1: UaNisTinQi2a-l-XKCcYlA - test-macosx1470-64/debug-mochitest-plain-2: GWOdS4gZRRi0rjzuSCIVBA - test-macosx1470-64/debug-mochitest-plain-3: IW4IeAuNTiWI9bLFIkfIQA - test-macosx1470-64/debug-mochitest-plain-4: VPKtCcYaRlqT5KuXy94hQg - test-macosx1470-64/debug-mochitest-plain-5: el16JNSGQMyDqP4HGICiYA - test-macosx1470-64/debug-mochitest-plain-gpu: SETSuZ8tSAayu5k4U6CN8A - test-macosx1470-64/debug-mochitest-plain-ioi: c4lUO8iPTvapWW3zSOKBcQ - test-macosx1470-64/debug-mochitest-remote: cCoRttGiRqOJ0_b9BMIeWg - test-macosx1470-64/debug-mochitest-webgl1-core: DfJLmCuUTZaIgvmI-2BfFw - test-macosx1470-64/debug-mochitest-webgl1-ext: IJmKxueDR2maraXhZE9nmg - test-macosx1470-64/debug-mochitest-webgl2-core: GFcz2aNOQpuV-kI7kekYwQ - test-macosx1470-64/debug-mochitest-webgl2-ext-1: VZuo9RaYTMmhhrj4RdxRJw - test-macosx1470-64/debug-mochitest-webgl2-ext-2: TiCX0Zs2RpaFcnhMTsx5VA - test-macosx1470-64/debug-mochitest-webgl2-ext-3: c9tq2bPGT46P6uDQi3c_nw - test-macosx1470-64/debug-mochitest-webgl2-ext-4: KZLmyQNFTGmYY38iukR-Ww - test-macosx1470-64/debug-reftest-1: aDManJzaQHWq4pjmVmrYPg - test-macosx1470-64/debug-reftest-2: F9arW-u5Sk6ZE-WxEojgmw - test-macosx1470-64/debug-reftest-3: B3JGco_fQUqzFVoK27Jcjw - test-macosx1470-64/debug-reftest-4: Uw_XGD99S1S4Vm1fQVRYQg - test-macosx1470-64/debug-reftest-5: KkKImCGsSIGRz1UvdJSIBw - test-macosx1470-64/debug-reftest-6: S9bd7AG8Tw2bcU3W0uH67w - test-macosx1470-64/debug-reftest-swr-1: BI5ze1o4Qi6hpJ2o0PBa1A - test-macosx1470-64/debug-reftest-swr-2: cjPrpcNOQJKbkpC2jcjwxQ - test-macosx1470-64/debug-reftest-swr-3: D1mG5gXjQC2kLN0PqlumyA - test-macosx1470-64/debug-reftest-swr-4: ZcZoAifqSD6EMhak8UHHpw - test-macosx1470-64/debug-reftest-swr-5: DL-QR74BQQOM7WciDi8hVQ - test-macosx1470-64/debug-reftest-swr-6: ZICHgwTAQLqaFxhbh1l1XQ - test-macosx1470-64/debug-telemetry-tests-client: Qwr-n7SFSFuAYTcsGXiblg - test-macosx1470-64/debug-web-platform-tests-1: A1Na7pcQTw6a_hoqGLCkCg - test-macosx1470-64/debug-web-platform-tests-10: XfMLJ4v9S8ybZCk7h2JqMQ - test-macosx1470-64/debug-web-platform-tests-11: de4WQ4P6TWiBCRhyDx65BA - test-macosx1470-64/debug-web-platform-tests-12: UxSMTLc-RByD9Y5KNoAR6w - test-macosx1470-64/debug-web-platform-tests-13: dNUkWX9mT9C_15S5sfP7ng - test-macosx1470-64/debug-web-platform-tests-14: cIcKSmZsTEW5R6_--DlrIA - test-macosx1470-64/debug-web-platform-tests-15: RueaFqAMSdiQBUM8xvRG8w - test-macosx1470-64/debug-web-platform-tests-16: fb0njdPRT6iRYcTHnn0ixw - test-macosx1470-64/debug-web-platform-tests-17: QD21QoNeS-6rd0zAugOsfw - test-macosx1470-64/debug-web-platform-tests-18: BCU69ybxRHWbZqvYubshNw - test-macosx1470-64/debug-web-platform-tests-2: UsFJa1vvSyOc4VFiehIdMg - test-macosx1470-64/debug-web-platform-tests-3: LvpxMrrfTgSSIiRwAnpWIg - test-macosx1470-64/debug-web-platform-tests-4: SKZo7fQ2S-uPLuybmAPBgA - test-macosx1470-64/debug-web-platform-tests-5: OdFhtK6lRkOTmTuskDQUrA - test-macosx1470-64/debug-web-platform-tests-6: HTP85PZYQjKokrOnYaYtCA - test-macosx1470-64/debug-web-platform-tests-7: dCO-h059QbOQ5RUvU5ImkA - test-macosx1470-64/debug-web-platform-tests-8: CcK1ihJzTl-g505EkzkAGA - test-macosx1470-64/debug-web-platform-tests-9: E8OysAxESKOnpKAhr9PiMQ - test-macosx1470-64/debug-web-platform-tests-canvas: ZGD6A5uuQZSIFqLwSyFjhw - test-macosx1470-64/debug-web-platform-tests-crashtest: XpS6v9FFR_yVMzxSYIiKMw - test-macosx1470-64/debug-web-platform-tests-crashtest-swr: dqm9h6HQQx6ZEw3SVZygwQ - test-macosx1470-64/debug-web-platform-tests-eme: CVM1WcImR3W9X3JjPJocLg - test-macosx1470-64/debug-web-platform-tests-ioi: GHkJ7SczToSKvCNrqqZcaA - test-macosx1470-64/debug-web-platform-tests-pb: c8dfGmpiTcuQItr1aoArpQ - test-macosx1470-64/debug-web-platform-tests-pb-ioi: ZSyK03KWSCqKIsUgIw6Cew - test-macosx1470-64/debug-web-platform-tests-print-reftest: eaFizwnKQNi-M5WSqdLN6Q - test-macosx1470-64/debug-web-platform-tests-reftest-1: QIfZmwx8Q6KuqV53BretTw - test-macosx1470-64/debug-web-platform-tests-reftest-2: NnIgZ1l-TA6udUKlxQdYlQ - test-macosx1470-64/debug-web-platform-tests-reftest-3: V4qYSSlxQv24GxB39VwTlw - test-macosx1470-64/debug-web-platform-tests-reftest-4: Q_cxGC0uSwK0O759quZdEw - test-macosx1470-64/debug-web-platform-tests-reftest-5: KNN2epNnS9GyScwWShXsmQ - test-macosx1470-64/debug-web-platform-tests-reftest-6: OPW-vEFmRT-phJ7VTEtokA - test-macosx1470-64/debug-web-platform-tests-wdspec-1: da-0By9nRDaDmZJCdCQAKg - test-macosx1470-64/debug-web-platform-tests-wdspec-2: ExDIsVaXTU2Bb_xVASzRMA - test-macosx1470-64/debug-web-platform-tests-wdspec-3: H91ZFAG_RdSRrYCAr7cZeQ - test-macosx1470-64/debug-web-platform-tests-wdspec-4: A22cD1YLRVqM88BSFu2tUA - test-macosx1470-64/debug-web-platform-tests-wdspec-5: D_D7AY0FTaG4PEFHLleYJw - test-macosx1470-64/debug-web-platform-tests-wdspec-6: OVOAcieYRhC9lgtUWEI_Lw - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-1: WJ1-J3CVS-2sHztim4gaTA - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-2: ZsnmUecRT6mAIZksObfpDg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-3: RxeK3ebtTw-dwYpe0vQdfg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-4: U6dZeQygR0e5sgv3YqmCow - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-5: TxYDDS6AQM6rSwdyWpmvrg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-6: GJc4bYfMTA2eLjFDmAYw9g - test-macosx1470-64/debug-web-platform-tests-webcodecs: bdMWbKTbQkGml7RzCu2wEA - test-macosx1470-64/debug-xpcshell-1: d4K5l2thS62gvRVBhyVfRQ - test-macosx1470-64/debug-xpcshell-2: dvPBXS5gQSKfWxAm3xvyhg - test-macosx1470-64/debug-xpcshell-ioi: QAo9yXvOSISJM5qhnlgDnw - test-macosx1500-aarch64-shippable/opt-crashtest: XUtPGEOiSv2rwfla6H-U_w - test-macosx1500-aarch64-shippable/opt-crashtest-ioi: EtTdoNTpTI6scH83R-gkUg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y: Q3YVz9IkQoamwS4fYb4KDQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-1: D_XGKycURgeWpELuwaS4dA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-10: Taz7SU6DQaCDZ4Qt_7Zgpg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-2: C3F1hdHeSlO9JDCsWjh6XQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3: Ys6FpZoaTbuBDXzREv8WVQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-4: Kp-cDcPUSJGdaMjtI1aUJw - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-5: Co41Oi5jSMmhiAj3iuQKYQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-6: b4e6SE3WQ5-IxS2wa91Hyw - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-7: ZA2rm5_rQr2lesQOmycotg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-8: PjDwPNlUSi27c5e5Ia_LDA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-9: A7iEmkCgRZ2IndyVUtRsbA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-media: eobwuHzuSLGwwcD8Sy-Ksg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-translations: L1oDKd1mSuuPp_c5zbvdTg - test-macosx1500-aarch64-shippable/opt-mochitest-chrome-gpu-1proc: cSkfNevtQE2iWg1zfrkiYA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl1-core: JbKE-tgaRjGYb6_i3chqEA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl1-ext: YgHvfcgZRqC0Q0UWqCKbKA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-core: RDC30pLrQteTLWkRevVcHQ - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-1: CD4tWZ67Q_m-TH2z2tjk_g - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-2: dVCP3uNyR5yu8x0mVZ1CgA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-3: TBXk0YcOSqaw96R8tC7zMA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-4: YKesTYaZRj-ODKHdK5UoZw - test-macosx1500-aarch64-shippable/opt-reftest-1: WK2Sd5cQSrSEQHECbsUMgQ - test-macosx1500-aarch64-shippable/opt-reftest-2: YaYlc7AFSmu1mAtK-AC_xw - test-macosx1500-aarch64-shippable/opt-reftest-3: eqXxE19eRmmWoWidoRQ6og - test-macosx1500-aarch64-shippable/opt-reftest-4: SkQ3lSNxR0KeY4CnTlvbNw - test-macosx1500-aarch64-shippable/opt-reftest-5: Uxh09kOeS321lzxLiolPTA - test-macosx1500-aarch64-shippable/opt-reftest-6: DY7RmtvCTLibZTDr22vhMg - test-macosx1500-aarch64-shippable/opt-reftest-7: DFOhB5RHS4StLUGUCGf22w - test-macosx1500-aarch64-shippable/opt-reftest-8: P1WIGAVDSQi-t_CJWBKHkw - test-macosx1500-aarch64-shippable/opt-web-platform-tests-eme: Pmo0qviAQVexG_myb5zXMQ - test-macosx1500-aarch64-shippable/opt-web-platform-tests-webcodecs: RnBy4dHOTr63st48pNd5Iw - test-macosx1500-aarch64-shippable/opt-xpcshell-1: WEoU-ns1S0-t-1tgUKSq4g - test-macosx1500-aarch64-shippable/opt-xpcshell-2: UuiERZSPQv22DRaVIoxYMA - test-macosx1500-aarch64-shippable/opt-xpcshell-ioi: eNZysvVLSrGSAt-5b1k7Tg - test-macosx1500-aarch64/debug-cppunittest-1proc: blzfqOfaR4uweVku4ZsH_g - test-windows10-64-2009-qr/debug-cppunittest-1proc: a4OLa7VxRquglRpi77MTPQ - test-windows10-64-2009-qr/debug-gtest-1proc: Sj2qJFS2SfGf5GfwosBzag - test-windows10-64-2009-qr/debug-gtest-ioi: FvVlfiRrQxGJO2SY5w40fA - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-1: B-H-tXmISh-pHEyMMjMTEw - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-2: FrIgjvt4T8i8XoLgHrWxNQ - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-3: UzGEl0ZdRWyMjba8MGKx2Q - test-windows10-64-2009-qr/debug-mochitest-chrome-gpu-1proc: f4YadnmsTqSLqB7mpJhCTQ - test-windows10-64-2009-qr/debug-mochitest-chrome-ioi: RGLPbAFaTPyNnEFvT3ycCA - test-windows10-64-2009-qr/debug-mochitest-plain-1: NIBvCwM3QRenoh5QHZ2fYQ - test-windows10-64-2009-qr/debug-mochitest-plain-2: VnvOIvjDTzipMOa0Q5ApgA - test-windows10-64-2009-qr/debug-mochitest-plain-3: FfEYW4VWSG-xxN5xxZxFhg - test-windows10-64-2009-qr/debug-mochitest-plain-4: GB0z0uiPT4CIltfX1dP7sQ - test-windows10-64-2009-qr/debug-mochitest-plain-5: N6PPabYiTHORhBSz68eX3w - test-windows10-64-2009-qr/debug-mochitest-plain-6: c4K1sDgDS_uinzK5Q9mIDw - test-windows10-64-2009-qr/debug-mochitest-plain-7: E2zLdclNSTGl90akQx1mWw - test-windows10-64-2009-qr/debug-mochitest-plain-8: WSx660G4SEGrVOc0Fw_94g - test-windows10-64-2009-qr/debug-mochitest-plain-gpu: WDng6A-eRliMTZX_5EanPw - test-windows10-64-2009-qr/debug-mochitest-plain-ioi: chFtECkaSdCT4tn89harWQ - test-windows10-64-2009-qr/debug-xpcshell-1: XsiU8xO0Tum2rBn41NkuKA - test-windows10-64-2009-qr/debug-xpcshell-2: GO8GcJasRV-tmRiteYzzXw - test-windows10-64-2009-qr/debug-xpcshell-3: S6ortWozSrWaCwhOEaDFxw - test-windows10-64-2009-qr/debug-xpcshell-4: J40dnn4EShiETQKU0x1DFA - test-windows10-64-2009-qr/debug-xpcshell-ioi: QOQXClkpRhqcRN_XzgeJgQ - test-windows10-64-2009-shippable-qr/opt-cppunittest-1proc: K1umEra5SduaJmN1Eu8uCw - test-windows10-64-2009-shippable-qr/opt-gtest-1proc: fIEbG4dtSzGoxQVjs0MxFg - test-windows10-64-2009-shippable-qr/opt-gtest-ioi: GDJfSHvdRvqSk1xh4m4Z3w - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: AMQzlSdZRCu_lCNuaJOd9A - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: MYiMzRSuQOmQHWZSj4rkkg - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: L-LzYFrbQ0eQXbiJJcpe_w - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: BxvSZVlZTYW-JLKqT_T92g - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-ioi: MM0eHtn3Syqn4QJAFj6FXw - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-1: MxUIJoujSJiJP4m6QVVjaQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-2: ORiLz5bQRpi3F4W9M9t-aQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-3: LVbZ294CTWmbJ4RFwsuEwQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-4: CUfNxIxlSM2HhrAHmNqTLw - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-5: WflPESbRSeGCB2-q9reB1Q - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-gpu: BwYz10zQQNi5EUGIzfIpeQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-ioi: Ldcuj97iRxKRhnlYvFpyVA - test-windows10-64-2009-shippable-qr/opt-xpcshell-1: UnHCRLfQS7WBmDofxsOB8w - test-windows10-64-2009-shippable-qr/opt-xpcshell-2: HvXHT1_HSyOB04w1m4TUJA - test-windows10-64-2009-shippable-qr/opt-xpcshell-3: G_i_DcO8TBuGIXRBaT92lg - test-windows10-64-2009-shippable-qr/opt-xpcshell-4: Yq8OqeW8R0KH14LnF4MY1A - test-windows10-64-2009-shippable-qr/opt-xpcshell-ioi: VZbn7Zy2Spefk1AjHA9NRw - test-windows11-32-24h2-mingwclang/debug-cppunittest-1proc: BexxFeGrS7-TCKl78u1g2g - test-windows11-32-24h2-mingwclang/debug-icecat-ui-functional: SDPsfqHORom4ImHtDA3F1w - test-windows11-32-24h2-mingwclang/debug-mochitest-a11y-1proc: Mbo2S_94SleOTnRws-94lQ - test-windows11-32-24h2-mingwclang/debug-mochitest-chrome-gpu-1proc: CM_3nc8EQeGe-LCHwfa8og - test-windows11-32-24h2-mingwclang/debug-mochitest-plain-gpu: NzYW0BzaTNWZdsnzTw_o0A - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl1-core: JQYC7vtUTeiH0NmZMW0p1Q - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl1-ext: TIQ9GcbfTAW3V_lLSK4i_w - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-core: CZL0lZcQSvKFTRfe69vCdQ - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-1: LXZAzIUES3qO8KnqCwc4Tw - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-2: C2YkjDEhTnGF_IQGmfneUw - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-3: dpuAD6DsT0WzTTdrlp27-Q - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-4: LEL9wkfSQ6CZvjKJTMfssg - test-windows11-32-24h2-mingwclang/debug-telemetry-tests-client: ZLl5WMJ_TPmQHUFvUJSBsA - test-windows11-32-24h2-mingwclang/opt-cppunittest-1proc: dGNXw093SD2vGhGUALEWRA - test-windows11-32-24h2-mingwclang/opt-mochitest-chrome-gpu-1proc: El0VRKdETA2vHVhzLp6Q0g - test-windows11-32-24h2-mingwclang/opt-mochitest-plain-gpu: SbH0hcDHSnKxpqpl0bllOQ - test-windows11-32-24h2-shippable/opt-cppunittest-1proc: X2Yd1PHaQs2NbE_c7aHDNA - test-windows11-32-24h2-shippable/opt-crashtest: O2WgnO2XS4KYRiAIS6dDaQ - test-windows11-32-24h2-shippable/opt-icecat-ui-functional: YzzmmcQqTCerpxTIafdJxQ - test-windows11-32-24h2-shippable/opt-gtest-1proc: Aw7gRVi8QsiCGoDWcBXzmA - test-windows11-32-24h2-shippable/opt-marionette: culTuNyaRDaZOkZTwjUs4Q - test-windows11-32-24h2-shippable/opt-marionette-unittest: cxdIOrkDRQuyuY_zSPNb0w - test-windows11-32-24h2-shippable/opt-mochitest-a11y-1proc: FQGfQKpYTa6YFWC85HW6TA - test-windows11-32-24h2-shippable/opt-mochitest-browser-a11y: OB2ePcBgSYqfvCzr_fXKUg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-1: ERa2XiJsT7SBx6l-YRoeTg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-10: BIyOImuKR7CXWeg0kGPfuw - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-2: MRxKqTYOQxqOr1Dl7RRfFg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-3: Hh57P6w8TgeGp8PymLWO0A - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-4: B5fdIumSQgWqpgmmZeUAyQ - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-5: JPTwMAX8RlSIqgDl0puQ2Q - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-6: IcIvMivaQOepoR6ZUNilIQ - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-7: T6td8CMDRjSlfSwCce60Pg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-8: cQg9RwjfTcat7dVnf-pZ6w - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-9: TyJ59SjtRTeLp7NzedfipA - test-windows11-32-24h2-shippable/opt-mochitest-browser-media: TNmOSYrIT6-PIJ0x_S5YbQ - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-1: amO5JZfATtagbkI35ncJOw - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-2: BAP_0rOwQ_-kM_ffozraDg - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-3: D34Ub3KIRfubtt1xCEAt1w - test-windows11-32-24h2-shippable/opt-mochitest-media: DAq4yvqVR-6eq1iu86wJbQ - test-windows11-32-24h2-shippable/opt-mochitest-media-nogpu: G8PJxfRaTDiqZioA32yWzA - test-windows11-32-24h2-shippable/opt-mochitest-media-spi: FohtoBskSXuYfCu-4mEJkg - test-windows11-32-24h2-shippable/opt-reftest-1: cQl3BgGHQ16CKUHab9NJ1Q - test-windows11-32-24h2-shippable/opt-reftest-2: YdA0G3VXQ2uDUPxTcnL77A - test-windows11-32-24h2-shippable/opt-reftest-3: fuQWl-iqRjOYgIv4ux_JLw - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-1: L1H5MTIGQom3oK0mlnOARA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-2: L1SaYde4T4qEGSS-IzbM-A - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-3: W4TwUAFKRVKqiBoLAWUbWA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-1: I_5StOcgRcy5_0boVJEwPQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-2: cJhf7cfrRWO8Dcg1DbYMLw - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-3: c-iXKDU6TNKBlmqeTsbdTA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-1: HN7xN9ZzSqCO_hwEsP4Tdg - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-2: QsyPyz_4RLaQBqeOFulgWQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-3: VZ4-S1DQSj2jebGw_ll-gQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-1: aXysiyMLR_af_vv8liQxag - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-2: YOhY-pSGTEKdeQnKMqTn1g - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-3: YiFE-BWBScWZSHLF4dteSw - test-windows11-32-24h2-shippable/opt-web-platform-tests-1: SkI3j1xERs2tV_aXt1FN8Q - test-windows11-32-24h2-shippable/opt-web-platform-tests-10: LhR_QsquR_SuecNUc6a5gw - test-windows11-32-24h2-shippable/opt-web-platform-tests-11: OK209PxfTPu0qAOfp4KIXw - test-windows11-32-24h2-shippable/opt-web-platform-tests-12: Cm1w8p1XTUqCDajUQJI_pg - test-windows11-32-24h2-shippable/opt-web-platform-tests-2: bLC1rBIqTPatM5HSRovnhg - test-windows11-32-24h2-shippable/opt-web-platform-tests-3: f8Ye-asaRryUZDJQbGxeVA - test-windows11-32-24h2-shippable/opt-web-platform-tests-4: BkPPjyvcSB2gJ2WAeVjVEg - test-windows11-32-24h2-shippable/opt-web-platform-tests-5: CGpbY0-fSk60xrIkLZKKEw - test-windows11-32-24h2-shippable/opt-web-platform-tests-6: Q2L7mrlJQoiCQ9crlinYdQ - test-windows11-32-24h2-shippable/opt-web-platform-tests-7: B8WVZw9mS2Cma9xzoqZZcw - test-windows11-32-24h2-shippable/opt-web-platform-tests-8: M35he-cPQDeWFbO6ZEnHWQ - test-windows11-32-24h2-shippable/opt-web-platform-tests-9: dN6oAd37RLCQMDmwJ8O7mA - test-windows11-32-24h2-shippable/opt-web-platform-tests-crashtest: SzwPXr_mQM24fP5k3p8xRw - test-windows11-32-24h2-shippable/opt-web-platform-tests-pb: EwByfxGzQQ-KQDRcTE5ctg - test-windows11-32-24h2-shippable/opt-xpcshell-1: PvWUpnydS1eaPYLttPeaqQ - test-windows11-32-24h2-shippable/opt-xpcshell-2: f3CyvmA9TJq5NQjoWGQMIA - test-windows11-32-24h2-shippable/opt-xpcshell-3: WtAYkPFfQbCViSbrIliiZw - test-windows11-32-24h2-shippable/opt-xpcshell-4: VB5TzucjQM-8L9UQbfeUBg - test-windows11-32-24h2/debug-cppunittest-1proc: Xu6uSwYYQWK51BY5ra4ZYg - test-windows11-32-24h2/debug-crashtest: TJyPxo6yTGayblKxtQA7IA - test-windows11-32-24h2/debug-icecat-ui-functional: GLSKspYZQbG9rKgmjylPiw - test-windows11-32-24h2/debug-gtest-1proc: DpZD6-G0RUKen5ulxwQH0Q - test-windows11-32-24h2/debug-marionette: Zcj3hy7XQnOJbdg_Gq1B4Q - test-windows11-32-24h2/debug-marionette-swr: bBf_Z0IlQaCDODJcGRcXyg - test-windows11-32-24h2/debug-marionette-unittest: N2CYXxYWRRmnfNdxcQDe9w - test-windows11-32-24h2/debug-marionette-unittest-swr: aSkcd4rESGaPMb8bNKJP9w - test-windows11-32-24h2/debug-mochitest-a11y-1proc: dFYUXCxkRzmsrk3pbCtOhQ - test-windows11-32-24h2/debug-mochitest-browser-a11y: Go6Yn_gXTJ21T24LYiYAdQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-1: PS79Ai5rRNeZXl7G5CeLZA - test-windows11-32-24h2/debug-mochitest-browser-chrome-10: c9drNsiYS8qU05teL5AgwQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-11: DoMcYMwhS1m7D9vm0ALXVA - test-windows11-32-24h2/debug-mochitest-browser-chrome-12: NFZsB118Snyf4LElMzOQyQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-2: YnYIB7ffQimtolg-XemZuQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-3: Y-PzpRjARkGBMmFB7Dhrcw - test-windows11-32-24h2/debug-mochitest-browser-chrome-4: eldtovzARlu6pyl_2546UQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-5: Xhr7hG7UQOG21e7zBvtnQA - test-windows11-32-24h2/debug-mochitest-browser-chrome-6: Z7FUgVgYSA2bkTll_NrXGA - test-windows11-32-24h2/debug-mochitest-browser-chrome-7: Ixm3H4sKRpSIoQ_5ctEDtg - test-windows11-32-24h2/debug-mochitest-browser-chrome-8: XO6zqpR0SLSKTufQHrdsjw - test-windows11-32-24h2/debug-mochitest-browser-chrome-9: NZz_SsrcSEKOuHIAwpDS6w - test-windows11-32-24h2/debug-mochitest-browser-media: b7I1R9fwRy2L-1nNM09T9g - test-windows11-32-24h2/debug-mochitest-chrome-1proc-1: TxjzG7NKSB2bg_fMFj-oaQ - test-windows11-32-24h2/debug-mochitest-chrome-1proc-2: F0r28wRcSi2v21IeJVeazw - test-windows11-32-24h2/debug-mochitest-chrome-1proc-3: ekgtUp0qRZCNaMqWnOQalQ - test-windows11-32-24h2/debug-mochitest-media-1: CJw960WtTzqeOJq7oymuVA - test-windows11-32-24h2/debug-mochitest-media-2: W83OMOvKQkuga3l_BNB1_w - test-windows11-32-24h2/debug-mochitest-media-nogpu-1: Cj0Own04TtC8OODC_tRhJg - test-windows11-32-24h2/debug-mochitest-media-nogpu-2: cNtMSFPETL640e2tsu7UiA - test-windows11-32-24h2/debug-mochitest-media-spi-1: Mv2oxyubT5aBK2daqia5Tw - test-windows11-32-24h2/debug-mochitest-media-spi-2: cjKObmZiTDyV_8upqokZzg - test-windows11-32-24h2/debug-reftest-1: ege_YNZVRMKDyG3hpgPFEQ - test-windows11-32-24h2/debug-reftest-2: S_TNBIeUTL60ZY2KAdVhTQ - test-windows11-32-24h2/debug-reftest-3: Uavk7EKlRz2NR1RyRSCLiA - test-windows11-32-24h2/debug-reftest-4: dFvI_PhrQkaj7iUNHiVz3A - test-windows11-32-24h2/debug-reftest-5: KEP1qDzTTvO3zWMeCyYtUg - test-windows11-32-24h2/debug-reftest-6: Km75VZvwSKS6-Mvtt8A58g - test-windows11-32-24h2/debug-reftest-wr-dc0-1: H4OSnMR0QXyObEu3XpPpWQ - test-windows11-32-24h2/debug-reftest-wr-dc0-2: Z0M5mEQkRwOO_GeLAvPrzw - test-windows11-32-24h2/debug-reftest-wr-dc0-3: NoAZzE8vRDiumXKK1lLS1A - test-windows11-32-24h2/debug-reftest-wr-dc0-4: E_4y4m9QSfW6DY8v1BkeZg - test-windows11-32-24h2/debug-reftest-wr-dc0-5: PUmm1f14TZe5G-VpBMA-Yg - test-windows11-32-24h2/debug-reftest-wr-dc0-6: PsvWZqMpTZinte0gaizjaQ - test-windows11-32-24h2/debug-reftest-wr-dc1-p-1: atIBNRrvRpezSOHpRjCjbQ - test-windows11-32-24h2/debug-reftest-wr-dc1-p-2: EF4NoO8rRw2YTFUiG2Zw6g - test-windows11-32-24h2/debug-reftest-wr-dc1-p-3: IrF6YtyXTdGYV4XMA8lPjA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-4: ewzB9cBrRyCQgOuT1ln3LA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-5: KLD2QII6Qv2in2o4i0ylGA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-6: TKPPTJBtTQWxQ3T3ewoESw - test-windows11-32-24h2/debug-reftest-wr-dc2-o-1: ZqBUBHObRWmV53Soew1boA - test-windows11-32-24h2/debug-reftest-wr-dc2-o-2: GzfhIDhgRLyvUCHtqAX-YQ - test-windows11-32-24h2/debug-reftest-wr-dc2-o-3: UzKPVnlJSKe5Guekmaz9Gw - test-windows11-32-24h2/debug-reftest-wr-dc2-o-4: Rb5F9ZbUQvGfTSQOzml-yQ - test-windows11-32-24h2/debug-reftest-wr-dc2-o-5: HL4tNk70So2OOWenrfRkcg - test-windows11-32-24h2/debug-reftest-wr-dc2-o-6: O46QMpE2RqK1oGYLP5tm9w - test-windows11-32-24h2/debug-reftest-wr-dc3-c-1: VKEmFSunRbuOArkMu6CzqA - test-windows11-32-24h2/debug-reftest-wr-dc3-c-2: CLSdLUYNSHG5n_cxZnWF6Q - test-windows11-32-24h2/debug-reftest-wr-dc3-c-3: dGS2oDddSOChS4OTbecP0A - test-windows11-32-24h2/debug-reftest-wr-dc3-c-4: Qssh4VFYRSSBxhQAv23yDQ - test-windows11-32-24h2/debug-reftest-wr-dc3-c-5: AwSQ4wk8QkqD5_AJ1blxHQ - test-windows11-32-24h2/debug-reftest-wr-dc3-c-6: JZaxe9f9QWueQl4GVakgEg - test-windows11-32-24h2/debug-web-platform-tests-1: Bho1aHzoQNqaOJufgvNMsg - test-windows11-32-24h2/debug-web-platform-tests-10: A1mSYr-KQS61tQJhdGN8wA - test-windows11-32-24h2/debug-web-platform-tests-11: N-ea8CYGTYucTmeDl4qELg - test-windows11-32-24h2/debug-web-platform-tests-12: fTgordRCSia2PUVRaGNu5Q - test-windows11-32-24h2/debug-web-platform-tests-13: C8__NZ6WTtOsCo0OzOHmug - test-windows11-32-24h2/debug-web-platform-tests-14: cgRuFQ52TIuPYYmVPtt0Xw - test-windows11-32-24h2/debug-web-platform-tests-15: A6pZtMSFTTGgRmVzNPiYDg - test-windows11-32-24h2/debug-web-platform-tests-16: NsGw2r-qTQ2uB7h4VILuJg - test-windows11-32-24h2/debug-web-platform-tests-2: KQq-2DscTl2mWfrKgSwxDg - test-windows11-32-24h2/debug-web-platform-tests-3: QfsYfif8TjmLQT1DKl5uHw - test-windows11-32-24h2/debug-web-platform-tests-4: MsJ4203-R-W6cdFomUU4zQ - test-windows11-32-24h2/debug-web-platform-tests-5: afMhY17zRpqkr8te374yJg - test-windows11-32-24h2/debug-web-platform-tests-6: eNAID7YUT4-SYDlWPWidYQ - test-windows11-32-24h2/debug-web-platform-tests-7: LoQGEs5yQUiTjuWpzVYKpg - test-windows11-32-24h2/debug-web-platform-tests-8: cV8kEEvPRZG2Ed1CknWsww - test-windows11-32-24h2/debug-web-platform-tests-9: EL8NxIFNRQKvNBPt0dLhBQ - test-windows11-32-24h2/debug-web-platform-tests-crashtest: Gw9J8RDhTbS2Rn8eBswPLA - test-windows11-32-24h2/debug-web-platform-tests-pb: CkZ_NH_5ROypD72387DdvA - test-windows11-32-24h2/debug-xpcshell-1: RWSDcXGgSqqA9B80Ds_97g - test-windows11-32-24h2/debug-xpcshell-2: B_6lOdapTv2342XIoWMdzQ - test-windows11-32-24h2/debug-xpcshell-3: CUtvT3c_RBKVE8Ais0L3PA - test-windows11-32-24h2/debug-xpcshell-4: AFoTHql3QkCnnQ6qHARFhg - test-windows11-64-24h2-asan/opt-cppunittest-1proc: VRBaAC6iR1eoIYGG_RjW8w - test-windows11-64-24h2-asan/opt-crashtest: R9GJLEosS-GpXigp0MLWvA - test-windows11-64-24h2-asan/opt-crashtest-swr: HZ7ugjgrQdquw0cgUDM2Zw - test-windows11-64-24h2-asan/opt-icecat-ui-functional: UNJxaVYKQ9qEbELmDQh4wA - test-windows11-64-24h2-asan/opt-gtest-1proc: da4A4Fj3T8GQoRa5GORalA - test-windows11-64-24h2-asan/opt-marionette-1: RY1f10FQR0GoSa4WMzjLOw - test-windows11-64-24h2-asan/opt-marionette-2: Wb3M_HBiTOiRwdimrCXD_A - test-windows11-64-24h2-asan/opt-marionette-unittest: dq-c572jT0uhffEBmDSEBw - test-windows11-64-24h2-asan/opt-mochitest-a11y-1proc: f3MvQxMrQ4W60IrLi2gO2g - test-windows11-64-24h2-asan/opt-mochitest-browser-a11y-1: X1EmifHpT2-WxHD8ES_YTA - test-windows11-64-24h2-asan/opt-mochitest-browser-a11y-2: eXhtD_v-SuuCZhNi1Xnf-w - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-1: aypuGfLtRvCFEINV7Vdrtw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-10: eDNSzd5OTXCZ_mP17u7wAQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-11: c18eKVvnSKOaZA3G8-ZdTA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-12: JxtFPVBxTyiOm462PPu6TQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-13: OwbP1VO-Q2-aeg3LTJ2Wzw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-14: aWgz7IboSE2qFdut0TwfyA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-15: DA4ItLgkQxKrwEthIhuPWw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-16: GGZj8QbHSFSOKd9K5KOMYw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-2: faDq00Z_ThGdtrjVFb7iXg - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-3: W0dDo7FVRZG1O48aTUDQLQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-4: KIkX_sxMTZGDSfkx2RlIaA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-5: Hv6LhfvcQVKP3MJb_sohhA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-6: Y4cmx5yZSyy4hnQvS2Nk-A - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-7: YKFI2pGyRMCfgT6Y0II9yA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-8: Iq7zFgUkSe-7TWvSQaErxg - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-9: PxbHKpPFTxCCAQ3K9PBkAg - test-windows11-64-24h2-asan/opt-mochitest-browser-media: FrNikchhTLa8EJatCOZw_Q - test-windows11-64-24h2-asan/opt-mochitest-browser-translations: XB9ci_0RRZaS4ysbn3LIrw - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-1: fwwUtjRqQseWJU-w5_xoIA - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-2: fHmsg_VjQsSYeBjIKweXGg - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-3: XnAGDg9QQUaub6fYaYSd-g - test-windows11-64-24h2-asan/opt-mochitest-chrome-gpu-1proc: QjmHSqwfQH-gyzadvXF-eg - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-1: M4M4pBVzTFaa-8vAntNq7Q - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-2: WjraNRMwSX6j4bGLS6X4wQ - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-3: DfbtL_IMQP2Kh4np_24QGw - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-4: IILazIKkTwilt2kMw8IHNA - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-5: A6_HLrgSRhqcr5l6VeXhgA - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-6: Y42BAFgETQqJ70WRgW8ReQ - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-7: OQTKbV5zReykX8SdwgBmfg - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-8: SDitm-mUTTuAH956jDgfEg - test-windows11-64-24h2-asan/opt-mochitest-media-1: JBXubPx7S2SWSOJ3_c2OmA - test-windows11-64-24h2-asan/opt-mochitest-media-2: cx4j1YvFSO2vi4uMkL5UvQ - test-windows11-64-24h2-asan/opt-mochitest-media-nogpu-1: MBZmvwZyRzaWa4CDlYspOQ - test-windows11-64-24h2-asan/opt-mochitest-media-nogpu-2: avtabCo0TzegcAn4wjcYPg - test-windows11-64-24h2-asan/opt-mochitest-plain-1: M9n8qfdIR82CVRN46z-EkA - test-windows11-64-24h2-asan/opt-mochitest-plain-10: PS5VpXHDRgak8qsQEbth1g - test-windows11-64-24h2-asan/opt-mochitest-plain-2: TFFJpr3xSKCfNPP9pqAT-g - test-windows11-64-24h2-asan/opt-mochitest-plain-3: CmDOVlqDQHmhF3brHGT6GA - test-windows11-64-24h2-asan/opt-mochitest-plain-4: IgPU3wwETnKFnc_YijRZfg - test-windows11-64-24h2-asan/opt-mochitest-plain-5: MnV7BG7hQ6iJS1M2OuuBeA - test-windows11-64-24h2-asan/opt-mochitest-plain-6: X_C9qq4hT_SyyuJNEV6Zxw - test-windows11-64-24h2-asan/opt-mochitest-plain-7: D4kN2qZDSuOAa2nWGHqz1w - test-windows11-64-24h2-asan/opt-mochitest-plain-8: XWwowDzXSGGbd4Ye2SxpBA - test-windows11-64-24h2-asan/opt-mochitest-plain-9: RtHiYgB8QeW4EXWcgIfPag - test-windows11-64-24h2-asan/opt-mochitest-plain-gpu: FYyIStnfRGi2ujltJ0Mxbg - test-windows11-64-24h2-asan/opt-mochitest-remote: RfNpwDtTSECVkDMAUPdLHA - test-windows11-64-24h2-asan/opt-mochitest-webgl1-core: XIFKogElQtuozY6LgpLh8g - test-windows11-64-24h2-asan/opt-mochitest-webgl1-ext: FKgNUcqTSBqwtdNzHifiWw - test-windows11-64-24h2-asan/opt-mochitest-webgl2-core: CTubus5hRpCeKP2sQ4KiEQ - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-1: M6kyAEQjROOhtELgbfxWtw - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-2: SYQZ2peFQmWhnRlU-mtW5Q - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-3: FZm0PgNLR02t-iVhZmfNTQ - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-4: DyILPdkERTqwJsNnJqMnPQ - test-windows11-64-24h2-asan/opt-reftest-1: BWgR2WhlSqiQY5cc_FZZ6w - test-windows11-64-24h2-asan/opt-reftest-2: H2mXGerFQ6eBKfmCV5GQNg - test-windows11-64-24h2-asan/opt-reftest-3: dMwCOkStTl2A038ObpIhew - test-windows11-64-24h2-asan/opt-reftest-swr-1: KWxU31QKQkiLlQBt1vobyQ - test-windows11-64-24h2-asan/opt-reftest-swr-2: H8iWAlFnRaqxNPLa43bOwg - test-windows11-64-24h2-asan/opt-reftest-swr-3: XCkav1CPQvGs7yqBCkibsA - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-1: B5H-00A-TVK5zRvLrNnJuw - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-2: AcT3F9ctRlyJgBobuBGd4Q - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-3: d_2RdYR-RHaAzF9ZhR4beQ - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-1: dlKNH4t7R5mvzeu2je1rsw - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-2: XEM2VAmtSracRE6fb85VkA - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-3: BqgoGwkyQ52wDwftR5-wYg - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-1: ANcf11LhRBS2-MUe6PGCKg - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-2: dnyUL98uR2qUZnhqvygVFw - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-3: X0O7TWVkSe6v81ZaAtZJYQ - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-1: VkPTBwFJRSyqT6Lb1RJYOA - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-2: Bqv-coBtRA6X2bibXtElbA - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-3: a2C9LxIhTB-eT5HfdGOV0A - test-windows11-64-24h2-asan/opt-telemetry-tests-client: XidnwOPUSEuiFTltSOwayw - test-windows11-64-24h2-mingwclang/debug-cppunittest-1proc: W0_q5sF6T-mmwfW9i3jc_A - test-windows11-64-24h2-mingwclang/debug-icecat-ui-functional: Nr6uyhp4QFm0D2n5OHq3MQ - test-windows11-64-24h2-mingwclang/debug-mochitest-a11y-1proc: MZBstEsRSE2Xx4UAcel6wg - test-windows11-64-24h2-mingwclang/debug-mochitest-chrome-gpu-1proc: CprNnrRoTQmBUpGr3tXrOw - test-windows11-64-24h2-mingwclang/debug-mochitest-plain-gpu: CqBseYlcTb-kGZjXQbZmVg - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl1-core: Kd560CjiTdC_ee9AApJoJQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl1-ext: YF8xoTf7R1qpQPs0ZHOFwQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-core: Fp-radosS5eGG-yjcdn-tw - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-1: QZRlc9c8Ty-Iqi-ONYSF3A - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-2: C1EXgX_zT5a3p5ejPj04XQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-3: BqI3abE2Spudd2SgiL_ZKA - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-4: QmPIdYABQQ6AzuOzJIQkMQ - test-windows11-64-24h2-mingwclang/debug-reftest-1: W7yvVgFGRhaT7Mj03D0wQQ - test-windows11-64-24h2-mingwclang/debug-reftest-2: cFsUh4h0Qr6azHA_x9sSSQ - test-windows11-64-24h2-mingwclang/debug-reftest-3: YQDwwlUbS5udt2-3TyZf0Q - test-windows11-64-24h2-mingwclang/debug-reftest-4: W1ZcDOlPSPy79c0aOo0-6w - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-1: Z9x622rmRJmIQdODDjRyOQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-2: TGL5ElnTSKmF5ikGFeOGVQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-3: DHo0QJz2Qi247Zxe0qJ-NA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-4: azGc2_-5TsWmwwx6sDX5oA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-1: J0ntONNuQH2wAbU8CU8EOQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-2: Rq1fRAJrQeyonpsC0KtuOw - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-3: dLWsMaTgTWm0gcZ95DwoOg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-4: RBxCopxlQWaVxayTY54r3Q - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-1: FXMWHc7cQN2BYtH3ebVOeg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-2: ZZNluyYXSCu6ALSGGsA99w - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-3: KNlBilhGSwu76R4-2av_ig - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-4: NgaE9BewSYO4p4oPx1G7gg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-1: co5yY8IyQlSSfJyxpZ5U6A - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-2: d4MHVj0LRwWLPCl_DRRZpg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-3: C7iMoJhvS2eMZoD7FvV4DA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-4: S430qccTTtCFjLPG40h7Hw - test-windows11-64-24h2-mingwclang/debug-telemetry-tests-client: I_jtdaTRS1ii5hNXPhnTNA - test-windows11-64-24h2-mingwclang/opt-cppunittest-1proc: AhHbmRkhTFG88iMl256RFg - test-windows11-64-24h2-mingwclang/opt-mochitest-chrome-gpu-1proc: MOJMIf04SjmieaIRT_nrdg - test-windows11-64-24h2-mingwclang/opt-mochitest-plain-gpu: dcu2oTajTIeUxX85OU8zdg - test-windows11-64-24h2-shippable/opt-cppunittest-1proc: Uvn-ZdGmTMyXai2W6PzBBw - test-windows11-64-24h2-shippable/opt-crashtest: PEHyrFabR-qNJjqx__FGAw - test-windows11-64-24h2-shippable/opt-crashtest-ioi: RXOuaePYQAWqO_BM_UC8KA - test-windows11-64-24h2-shippable/opt-icecat-ui-functional: WGx1RakFR3e6W33MFnCwZA - test-windows11-64-24h2-shippable/opt-gtest-1proc: fgij7lg8TkudSAjieJm4kg - test-windows11-64-24h2-shippable/opt-gtest-ioi: T68Ck-4LQ4SZaB225NXa2Q - test-windows11-64-24h2-shippable/opt-marionette: B0OJ43ieRw2UOCsSZl8tcA - test-windows11-64-24h2-shippable/opt-marionette-ioi: KcknrHk4SgWSTDyHwX-OOA - test-windows11-64-24h2-shippable/opt-marionette-unittest: cUg6KV7oRlKb1JMPFQMvEA - test-windows11-64-24h2-shippable/opt-mochitest-a11y-1proc: ISsrcfxjQG-g2M3OVNtv_w - test-windows11-64-24h2-shippable/opt-mochitest-browser-a11y: JiryUd2sQNiNbfdxOEYQqA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-1: Y1c6_g2iRga9nsXoSKHFsg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-10: VSx6t2hsR9iVisDVxgGmYA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-2: Cl1QN_92QkK5cz3Gnop_mw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-3: FMdGwJDFTYGm6ThJ8Fkk4w - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-4: DXVC3xHzScu-Ieu6XgCfFg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-5: ZafWC1LHRuK2G19JRk2SVA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-6: E6rNiKRUQ4SjhCu8QAwohw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-7: agIKfxbfSVWgFt0lwY4C3A - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-8: PoePZ6T2Td-hCRsp2CmpDg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-9: QKoNpYEfQRyQbbfV0b9lqA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-1: WiYZCNa3RKSIgKqoINhKRg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-2: TWl3Df_JSl-eBIl-_Aj-pg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-3: N53NlaihQSGv7IyukHtQ_A - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-4: ChCFJxp_SVmgHO-aScRKeA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-5: FxfZxGa1SCC-wX9x-jHFDA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-6: AyLaIZlNRFe0DpeXdJocUw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-7: Ynt8Lu3VSGesUWQ4BmBwOw - test-windows11-64-24h2-shippable/opt-mochitest-browser-media: akQvZ-9KR4-WlMAFKxFxvw - test-windows11-64-24h2-shippable/opt-mochitest-browser-translations: O3iWBMFORymckJnIFwgk9w - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-1: W9CxEvqsTi68DqWzikCnLA - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-2: Yf0Cq-A_RiSI8AtnE_hvtQ - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-3: M04q8RAZRVuJyHxlrgCMJA - test-windows11-64-24h2-shippable/opt-mochitest-chrome-gpu-1proc: fLli2sOrQharIM-WypL_4Q - test-windows11-64-24h2-shippable/opt-mochitest-chrome-ioi: fHt2vtdtRJ68r3r8xQoglg - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-1: Cq9i05u2RQeK0O8j9DCWpQ - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-2: OaXarZMERdm3cEJq6T4Z9A - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-3: duxHJGdZRyafxX7h-DxdnA - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-4: JFUQoJN1QxC7I9-neU3TIQ - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-5: ANAy6tAGR4icVV1VP3BLtw - test-windows11-64-24h2-shippable/opt-mochitest-media: YA-77GdPTmWl6ef_Qau-uw - test-windows11-64-24h2-shippable/opt-mochitest-media-msix: QW58_T9CR7C0S8awgN72ag - test-windows11-64-24h2-shippable/opt-mochitest-media-nogpu: H9h6GBvxRuWdyXpyku2NRQ - test-windows11-64-24h2-shippable/opt-mochitest-media-spi: Q5IxZvxUQvCOO9SYge5yJA - test-windows11-64-24h2-shippable/opt-mochitest-plain-1: biXP-v1XSom3kTF3OPK5WQ - test-windows11-64-24h2-shippable/opt-mochitest-plain-2: NRKAzTgqRsuwO6oFSSqtyw - test-windows11-64-24h2-shippable/opt-mochitest-plain-3: AtBRJm_ZQviMu2gm9VfokA - test-windows11-64-24h2-shippable/opt-mochitest-plain-4: GKv-KEiRR6yhLnzgeezD2w - test-windows11-64-24h2-shippable/opt-mochitest-plain-5: edSBHkXNRK2cluJaQHm1Bg - test-windows11-64-24h2-shippable/opt-mochitest-plain-gpu: Q44MzYBAQ3uJ72ERSJFTVQ - test-windows11-64-24h2-shippable/opt-mochitest-plain-ioi: NmHJrx2-RFiLPlC7DSKHlg - test-windows11-64-24h2-shippable/opt-mochitest-remote: KrrCJrUvS1uwYVkJU9JpCw - test-windows11-64-24h2-shippable/opt-mochitest-webgl1-core: Y5k_4FqlTh2j4sBDtIKQ7Q - test-windows11-64-24h2-shippable/opt-mochitest-webgl1-ext: eHXJJ1BXSxKNgL9djmgAcw - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-core: Fx3v3WdSQIO7axlSdAUQtA - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-1: Xm7TSLHTRbWOYfSha2GA7w - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-2: LGRKO0S7Sy-EZWaROBK8rg - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-3: QiryeivlTliH9jYRA36SXQ - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-4: DCXHp_HSTDG0cafgQg288g - test-windows11-64-24h2-shippable/opt-reftest-1: cFs8q8dPTyuax9KHTrHkww - test-windows11-64-24h2-shippable/opt-reftest-2: L7oJIDcVQ7OorgkDQUdVzg - test-windows11-64-24h2-shippable/opt-reftest-3: YW0q_10YRCmkUGf7Hwx08A - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-1: A-AwWiD-QLW0S4UwkWjiyA - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-2: f5mFpV2RQHy5E7L8EANbAA - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-3: SlOMX8BRQCuIShsBE2tfCg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-1: FbMM6k-SSW2PlEb-HTUMAw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-2: BIAhvMbMSNyavt0K77xkEg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-3: D00CrsCiRjyJ-rFYXFMpOg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-1: V0Qa2vBCQYqQOXkQtJHfgw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-2: P7Xvv-w8TQe9Z5kmKkQSUw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-3: ZW3INPNHSbSKbdELXGWDKg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-1: fVD6lx8YRIWBp4_MAUk05w - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-2: AuDVsvPcTGSObXOP6ag4Aw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-3: ZICx6e3eRrCRwiW10BBkQQ - test-windows11-64-24h2-shippable/opt-telemetry-tests-client: Dd4kdImeRHWwucovqMJ5vA - test-windows11-64-24h2-shippable/opt-web-platform-tests-1: PuuYpp4gSe291EGdSuWVCg - test-windows11-64-24h2-shippable/opt-web-platform-tests-10: JGaqxEHbQyKBCxg-GTNaUQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-2: EYJFPXsxRy2aB787-7KTtw - test-windows11-64-24h2-shippable/opt-web-platform-tests-3: R29Xk5CmSLGJn_kDPBctcg - test-windows11-64-24h2-shippable/opt-web-platform-tests-4: LBTkdQEcQhCeu1Ym_EMG4g - test-windows11-64-24h2-shippable/opt-web-platform-tests-5: I3EkiJEzS0aK_lF5BtefjA - test-windows11-64-24h2-shippable/opt-web-platform-tests-6: Jjwwfo4WR3C0k11YfDkA9Q - test-windows11-64-24h2-shippable/opt-web-platform-tests-7: P9KMl-hcRPKc7mTt5A-BXA - test-windows11-64-24h2-shippable/opt-web-platform-tests-8: XCE73pKeS5yWn39851VQMw - test-windows11-64-24h2-shippable/opt-web-platform-tests-9: bLImsPXqTOOoQxfmX-4iBg - test-windows11-64-24h2-shippable/opt-web-platform-tests-canvas-1: X3x6bZk3QR6KkLVuECh9_w - test-windows11-64-24h2-shippable/opt-web-platform-tests-canvas-2: Y9XC8--sSfmykkyOWmONeg - test-windows11-64-24h2-shippable/opt-web-platform-tests-crashtest: fzxDFdrbQ6mR6z6jN7h_dg - test-windows11-64-24h2-shippable/opt-web-platform-tests-ioi: JlW-FKlaTHq6LjrNVvjLeA - test-windows11-64-24h2-shippable/opt-web-platform-tests-pb: CIEtmmS5TfG9ET72YfHcJA - test-windows11-64-24h2-shippable/opt-web-platform-tests-pb-ioi: fM0-DcviRPq6J2D0pwmyOQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-print-reftest: Jz4dGvBtSWmP9y2eGuCtag - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-1: AuO-g2abS9mEzA7RPeD3Ow - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-2: R5WHcu-KSRK0VpYLyi7aGQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-3: eAXC1EmTSu6AkgFrSfNHZw - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-4: a8ogHKuMSb-HbTbWYAKG_g - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-1: f6eai1_qRjatWwuRJMMshQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-2: WqLqjPpzQdifm3QMiwDb5w - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-3: XbxOZKjpSDKSwI5y-qKQZA - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-4: cA9aplaKTaSAQjhmkkUWCg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-5: Mqbj12aTTvmc_XDdYK9sxg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-1: EVuOxLtbTYKJMs7bdA4nxg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-2: KtWYvcrcRVSa4iplE1lSOg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-3: QBs5M_35SDysjhFx_lqrhw - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-4: AwvB1Z34Qn66glozMT6sfA - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-5: SUSf0KgDSNCdK26Bcv3HYw - test-windows11-64-24h2-shippable/opt-web-platform-tests-webcodecs: f-minQuAQlK8448RMa3mJg - test-windows11-64-24h2-shippable/opt-xpcshell-1: APT6340MT2maY7TfeVkPcg - test-windows11-64-24h2-shippable/opt-xpcshell-2: fdDf8uKxRleHrfZt8bU_aQ - test-windows11-64-24h2-shippable/opt-xpcshell-3: ZVu8fZ_mRQ-Donrz-Iw_Hw - test-windows11-64-24h2-shippable/opt-xpcshell-4: SImNWEf6SKq2i6ZAAvGlBg - test-windows11-64-24h2-shippable/opt-xpcshell-ioi: Y91gyt4bRSuIIKmAKdMGJw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-1: ead2W4m1R_qfhiKCZfjquQ - test-windows11-64-24h2-shippable/opt-xpcshell-msix-2: VLFyzwmhTVms7oBydoYLIw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-3: DpKRXJ3NQwWTAnPBBDr7Iw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-4: V2QBb8qzQyCsnj80qYN2RQ - test-windows11-64-24h2/debug-cppunittest-1proc: XXi949BKR5yGWbFJei4Wig - test-windows11-64-24h2/debug-crashtest: FG9j8qbIStayS2FknSRaDA - test-windows11-64-24h2/debug-crashtest-ioi: LrJeJJhVRYSCg1mWY47xOQ - test-windows11-64-24h2/debug-crashtest-swr: dR-27GxTS9iC-I3WjPW0NQ - test-windows11-64-24h2/debug-icecat-ui-functional: XFYxiCZTSdynBb1utjTHJQ - test-windows11-64-24h2/debug-gtest-1proc: SO1NRRidQriDX1RGQ_fD4A - test-windows11-64-24h2/debug-gtest-ioi: UwfK29bgSHaXug3nf35WSA - test-windows11-64-24h2/debug-marionette: fN12CWncSh-vjjOoNFORdg - test-windows11-64-24h2/debug-marionette-ioi: YlJGmQMvTnGb39BMHNrYHw - test-windows11-64-24h2/debug-marionette-swr: BFRf33hbSEalF27V1V9CbQ - test-windows11-64-24h2/debug-marionette-unittest: NiuYuU-WTaSmvptpQK3rlA - test-windows11-64-24h2/debug-marionette-unittest-swr: eqw2M8lNS4G-ObErS8Jexg - test-windows11-64-24h2/debug-mochitest-a11y-1proc: eqciCUL7SRCxnISmKGlzYg - test-windows11-64-24h2/debug-mochitest-browser-a11y: BWmlDDVoTmme2yDNDIb9ow - test-windows11-64-24h2/debug-mochitest-browser-chrome-1: ApV7uQK1R82JoxWoNDzdDg - test-windows11-64-24h2/debug-mochitest-browser-chrome-10: HNWP5x-KT1S0J_IWdyk-bg - test-windows11-64-24h2/debug-mochitest-browser-chrome-11: Jlh4oRjRS_SUzDY727CDRg - test-windows11-64-24h2/debug-mochitest-browser-chrome-12: MpiWQPXrTBK0GRoq0CBwhQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-2: WZ0-1sujSjWEMwsta1ynNQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-3: KLaqQQePQbS8UBcae227rw - test-windows11-64-24h2/debug-mochitest-browser-chrome-4: Nadz7W6eTie_wA25ofI10Q - test-windows11-64-24h2/debug-mochitest-browser-chrome-5: I2fRHjzrTmGfsLQ5m3e_CQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-6: TlIwpvOrQD6ZN2TOqQQyXw - test-windows11-64-24h2/debug-mochitest-browser-chrome-7: VxRxeOaQRritxT_wQyD2-Q - test-windows11-64-24h2/debug-mochitest-browser-chrome-8: VNVytDi5TnWAY3P8Rj4Clw - test-windows11-64-24h2/debug-mochitest-browser-chrome-9: PcfA8R3tRd6pO4cJfMTXJg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-1: SR7lbGwqQ4atR9ND3QRrmQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-10: DGY6-U2pRNesykujbSbr_w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-11: YvXZFUWvTN6tlnx7ABHlQw - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-12: BNiE6qQcS-G-_qeDR5rmNQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-13: aqNed-rcTF2uRDWT59UpOA - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-14: LVSlThHyS8q2S7ChqAS0jQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-15: NWmEmrl1SjuzTnEoiDuFjg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-16: ZyGVf7YGQ3afnSZK-QtHpQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-2: UbvThbXZSVSBCWcnuwuCPg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-3: cqqdb9dlTJ2ddLU_SAaz5w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-4: ey0crdFkRQ2SuQGRIk7wuQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-5: HrQALJb1RWWPW_KIIfpY-A - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-6: WYLr1Zz_RBmiD_oo0nBZ4w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-7: BfqrLND5Rz-koLZOxNq7Eg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-8: R8boj3H8RrSvTOeYLc0ceQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-9: KHd5eHUqRQCtHxooDAQcnA - test-windows11-64-24h2/debug-mochitest-browser-media: U66Kx7OlRXKxEJxAstModg - test-windows11-64-24h2/debug-mochitest-browser-translations: P7j6CNrEShuBjewfv7w0Iw - test-windows11-64-24h2/debug-mochitest-chrome-1proc-1: fqPyZJq3SQqArEtJnL5knA - test-windows11-64-24h2/debug-mochitest-chrome-1proc-2: GKqyigWGRNWMTPkH0suRpQ - test-windows11-64-24h2/debug-mochitest-chrome-1proc-3: ebYKwIszSLaZGgs5o3Nx1A - test-windows11-64-24h2/debug-mochitest-chrome-gpu-1proc: VMVxY0z2SfO8XNgJHNys2Q - test-windows11-64-24h2/debug-mochitest-chrome-ioi: INR2UyQTR7KjSywM615_pg - test-windows11-64-24h2/debug-mochitest-devtools-chrome-1: GyYmmlRmTwOuFK3dgSPyHA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-2: JP2nh7KFS625Y7rJ01ZSLQ - test-windows11-64-24h2/debug-mochitest-devtools-chrome-3: CBJDQrbIQ_WZvcS-yyLixA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-4: Q-pDBlyaRQuDAbA-qH2oww - test-windows11-64-24h2/debug-mochitest-devtools-chrome-5: JZebg0W1QMGbfFrC8CAO4Q - test-windows11-64-24h2/debug-mochitest-devtools-chrome-6: dbP0jUL2RtGTHmV2yX9NBA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-7: Hp2Kg6eVTP6mgWRD3DoxKQ - test-windows11-64-24h2/debug-mochitest-devtools-chrome-8: LQkEK_4tSWWvz1OZlDPkyg - test-windows11-64-24h2/debug-mochitest-media-1: UgfTpgjiR9OPMPHN9h5KBg - test-windows11-64-24h2/debug-mochitest-media-2: HcnSinpARd-6Pta3dGUBuw - test-windows11-64-24h2/debug-mochitest-media-nogpu-1: Tt9o-BZdTQC5jqquY7NI9g - test-windows11-64-24h2/debug-mochitest-media-nogpu-2: GHy3MOODQuCpNfLQcbriSQ - test-windows11-64-24h2/debug-mochitest-media-spi-1: A40sjFXuRgu_izS2vE_0EQ - test-windows11-64-24h2/debug-mochitest-media-spi-2: CRktdtRKSzy4UNP7HV7dGg - test-windows11-64-24h2/debug-mochitest-plain-1: VAnyyNu-TYKIwyByR8H7Dw - test-windows11-64-24h2/debug-mochitest-plain-2: ZdOZobMSQrmklCBWfs1dEQ - test-windows11-64-24h2/debug-mochitest-plain-3: alX74lFqSUqJDSa3YlGUxA - test-windows11-64-24h2/debug-mochitest-plain-4: cFOJ4ZZ7RvGCMAqZxTPAYw - test-windows11-64-24h2/debug-mochitest-plain-5: Fgst50SVR2SQ4b5AOaSvxw - test-windows11-64-24h2/debug-mochitest-plain-6: RnB-2MvnQquhKYXyPk71Mg - test-windows11-64-24h2/debug-mochitest-plain-7: eBdx4Z9ASIGVzeC9xYXOgQ - test-windows11-64-24h2/debug-mochitest-plain-8: TAmlo9zBS2y3G3djRFC7-Q - test-windows11-64-24h2/debug-mochitest-plain-gpu: AFW7DC16TMK1w07SK7O0Rg - test-windows11-64-24h2/debug-mochitest-plain-ioi: Pj46Rn0mSUCuQ8iAKIEFHw - test-windows11-64-24h2/debug-mochitest-remote: aiXH5zsETWqEOi1VAgEszQ - test-windows11-64-24h2/debug-mochitest-webgl1-core: O7Sdqvb6Rb6VtjjcDoXhTQ - test-windows11-64-24h2/debug-mochitest-webgl1-ext: GZ2ImEk6TMCLvKZXe92-7Q - test-windows11-64-24h2/debug-mochitest-webgl2-core: ClUDrklLRryXB-6Y5A409w - test-windows11-64-24h2/debug-mochitest-webgl2-ext-1: O46-oMBlSOeE-AOa9NHSLA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-2: FQecePkLRnG3DQYMac-EuA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-3: LXGWryarSemmkeNB1o0QuA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-4: ZwNoN_1XTTCs03DXIXhMXQ - test-windows11-64-24h2/debug-reftest-1: LPrBIxvRRC27VRTcY2uJJw - test-windows11-64-24h2/debug-reftest-2: MkNUE_OKSle-t4ZV41_P9w - test-windows11-64-24h2/debug-reftest-3: NbRUMIYFSVeDCPiqaQooUQ - test-windows11-64-24h2/debug-reftest-4: YZhEhIF9QqSmfzkBoc9V9A - test-windows11-64-24h2/debug-reftest-wr-dc0-1: JKaWq-_XS6eyfPmS_B2unA - test-windows11-64-24h2/debug-reftest-wr-dc0-2: CmjaS81nSyyXlr9MjGz4hw - test-windows11-64-24h2/debug-reftest-wr-dc0-3: ShfPrPNuTi2wlpFbvdf2pQ - test-windows11-64-24h2/debug-reftest-wr-dc0-4: TJ4c15wDTzSC8zBJO0o_Dg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-1: HQ-0GDRZTQ-lm9tzsuvokg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-2: YOgK-d7rQHuIvLfbusQfrg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-3: UjH91RPVTtOppiwwB9oJHA - test-windows11-64-24h2/debug-reftest-wr-dc1-p-4: Vd1_bkxKQ5eB0TP_VHMeZQ - test-windows11-64-24h2/debug-reftest-wr-dc2-o-1: NI2I71EpQHSfTVu5LbEIgg - test-windows11-64-24h2/debug-reftest-wr-dc2-o-2: d70XD09uTlGFt6EY5j-vTw - test-windows11-64-24h2/debug-reftest-wr-dc2-o-3: WE7ktORiTnKeLTCsJ_U4tQ - test-windows11-64-24h2/debug-reftest-wr-dc2-o-4: L4Id6Cj_Tguo3aJRXRgaMg - test-windows11-64-24h2/debug-reftest-wr-dc3-c-1: I9uPB45yRo2Nx1USj5ybrw - test-windows11-64-24h2/debug-reftest-wr-dc3-c-2: OHFNwLphSceUAqPNehp4YA - test-windows11-64-24h2/debug-reftest-wr-dc3-c-3: eB6Mu2ReT62rnPoDuoImvw - test-windows11-64-24h2/debug-reftest-wr-dc3-c-4: ds1NFxf5TaCnNRIcDMnWeQ - test-windows11-64-24h2/debug-telemetry-tests-client: HFMwwR5STmOTKV3Bm81fVA - test-windows11-64-24h2/debug-web-platform-tests-1: N7AhPUneRWCJguVarcD2RA - test-windows11-64-24h2/debug-web-platform-tests-10: Ce-j8jjjRmGtvKKuQIF1Pg - test-windows11-64-24h2/debug-web-platform-tests-11: f3pGiclDSHabmDWAkdtG3A - test-windows11-64-24h2/debug-web-platform-tests-12: Ax7M5Ee6RIW07f-kdpGUdQ - test-windows11-64-24h2/debug-web-platform-tests-13: Z_MdhdZzSkegfmOnJ3mQLg - test-windows11-64-24h2/debug-web-platform-tests-14: DLMDuZ5NQleHvJVTol6tEg - test-windows11-64-24h2/debug-web-platform-tests-15: MIzDi-nqSWKgk59uFB-uOQ - test-windows11-64-24h2/debug-web-platform-tests-16: T1vt1uxmSoiBqpd76q4-AA - test-windows11-64-24h2/debug-web-platform-tests-2: C30sWAKBRO2cNz_TQOo2cQ - test-windows11-64-24h2/debug-web-platform-tests-3: esCOdvNqQ_WEiYx_PpPSKw - test-windows11-64-24h2/debug-web-platform-tests-4: JDS1lT4YRp62AMr8mdGB6A - test-windows11-64-24h2/debug-web-platform-tests-5: BGtKdmD-ShG2NiDofvZmmQ - test-windows11-64-24h2/debug-web-platform-tests-6: Ucj8AcwWQQ-ebT8KHW0EYw - test-windows11-64-24h2/debug-web-platform-tests-7: A7GX4lbATzGrPYD9IgpB9w - test-windows11-64-24h2/debug-web-platform-tests-8: TnYl06HQS4-QjNwkSUHtbA - test-windows11-64-24h2/debug-web-platform-tests-9: HproeM09QJOZwFA79k-ieA - test-windows11-64-24h2/debug-web-platform-tests-canvas-1: HTVUJ9MAS8q3TF9objeuyA - test-windows11-64-24h2/debug-web-platform-tests-canvas-2: L6okNkY7TJCpaa4gDP54qw - test-windows11-64-24h2/debug-web-platform-tests-crashtest: ORXqIqFDSTafcHQovqwlWA - test-windows11-64-24h2/debug-web-platform-tests-crashtest-swr: Qm4oFO0NRv2gZjMZcNpCcA - test-windows11-64-24h2/debug-web-platform-tests-ioi: Fg5UfFXvTJ6E-gzG8cAAmw - test-windows11-64-24h2/debug-web-platform-tests-pb: BNCRsFQXRomMicCfHzpTmw - test-windows11-64-24h2/debug-web-platform-tests-pb-ioi: cC53PPFKSYmyN6O74zUZLw - test-windows11-64-24h2/debug-web-platform-tests-print-reftest: ev9ouES4Q1OX3wN8iKAohQ - test-windows11-64-24h2/debug-web-platform-tests-print-reftest-swr: ZhTYF_pOQpe8xASRGWjRiA - test-windows11-64-24h2/debug-web-platform-tests-reftest-1: TEvSj5rDSN-4LOGKtDX1vw - test-windows11-64-24h2/debug-web-platform-tests-reftest-2: Yz6py4zsRR-HyXijfk4mHg - test-windows11-64-24h2/debug-web-platform-tests-reftest-3: SZX9y8rWTWKunkoM8xrE4Q - test-windows11-64-24h2/debug-web-platform-tests-reftest-4: KtT8ONuTRL6JEHXocFjRZw - test-windows11-64-24h2/debug-web-platform-tests-reftest-5: ZjWBeWNLQ9isFZYXm5xOYA - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-1: Rx2FQV2iSE-BKm-MdbXekg - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-2: ek__pvFbRxC4NUncWRyV1Q - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-3: YGy8WtajRuGVUR_CI3TqEw - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-4: aUUdjJ8fQtK-bbTFQ0LZVw - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-5: VU_SPNWWTwuK_SnCEG9ofg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-1: Q-q6atobR_aUDIPCZnye6w - test-windows11-64-24h2/debug-web-platform-tests-wdspec-2: IPN5RNQvRD-2a1F8R7QpTw - test-windows11-64-24h2/debug-web-platform-tests-wdspec-3: SBojeRjCTga2tq6lvwqqpw - test-windows11-64-24h2/debug-web-platform-tests-wdspec-4: DjARrBbcQQSIPPelRXm9sg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-5: YAigvfCNTzaF2-P7cEIzZQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-6: fpKaaK0QTe6UZeDd3EL6Xg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-1: An87Ky2cRa2yW14BjUAZdg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-2: Gk9gbFgwSZeceR_Q5UWAsA - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-3: Y3mkdz3xQLqMIocCrSjQxQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-4: MBZEMtLATyS-SKJAbypXuQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-5: I8XCz0XhQ9ms9hz29EJ9kg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-6: JMfrP0tiRT26ODoBsfPO_w - test-windows11-64-24h2/debug-web-platform-tests-webcodecs: a-TKE4uZScq_pJXYuLp7Dw - test-windows11-64-24h2/debug-xpcshell-1: XI0PfTDXQtOhQAoxBw3PhQ - test-windows11-64-24h2/debug-xpcshell-2: dph0GbrjQEu1cGFci4kXjg - test-windows11-64-24h2/debug-xpcshell-3: BZXQ5DfkQfm06av_IAtVPg - test-windows11-64-24h2/debug-xpcshell-4: V7Dg-R7mSh2Ij9-YOMrARg - test-windows11-64-24h2/debug-xpcshell-ioi: SWwMrOQgTvKv3benCdyB0g - test-windows11-64-24h2/debug-xpcshell-msix-1: Iy3Kud59RAy7GwlggyT4Sg - test-windows11-64-24h2/debug-xpcshell-msix-2: Q-ESz-AHSiWOTJyRLEozRg - test-windows11-64-24h2/debug-xpcshell-msix-3: SJAo9oMJTUOYFAwApBNpYg - test-windows11-64-24h2/debug-xpcshell-msix-4: CcfsVHqJTP-lbTrCedkbSw - toolchain-aboutwelcome-node-modules: Cv8OiVoaTryK9kZ6J4a4sg - toolchain-android-aarch64-compiler-rt-19: f5y75iVDTbmJVbYivOMAcA - toolchain-android-aarch64-compiler-rt-20: HGsdL6VQTsyrfIAUVDAXuw - toolchain-android-aarch64-libunwind-19: WvgZaHl4SWKZx-Jo2XRQRg - toolchain-android-aarch64-libunwind-20: et9109lPQIayuABq74pPAg - toolchain-android-arm-compiler-rt-19: MLapYE4VS-CgTZngebpxrg - toolchain-android-arm-compiler-rt-20: AerOtzuZSxynhwhYOgj9SQ - toolchain-android-arm-libunwind-19: OukWrr_uQoK6LCFDDluC1A - toolchain-android-arm-libunwind-20: cCrAQusqT_mFaYaPWG22pQ - toolchain-android-x64-compiler-rt-19: M_G6OrrISA20lJIIC6-D7A - toolchain-android-x64-compiler-rt-20: KDy6fNC4QH6brpPlRTlXuw - toolchain-android-x64-libunwind-19: MyUTrkqRQ8KwfqfyL3-gKQ - toolchain-android-x64-libunwind-20: KPIwDkHDTE-S0lo1aVmVSQ - toolchain-android-x86-compiler-rt-19: K6O_f94ZTpmrWO4jiEAHbw - toolchain-android-x86-compiler-rt-20: QmarLiwESxy5SbEvTdx9pg - toolchain-android-x86-libunwind-19: XqU_RftjSa-D3tZCHAmOkQ - toolchain-android-x86-libunwind-20: OGF4JfQfSDW2j33EY9xUXA - toolchain-asrouter-node-modules: Hn3KjXlyRLyV2cs1kTFpRA - toolchain-browsertime: C0UGNz6DQ0aeuYboEKjehA - toolchain-clang-dist-toolchain: e5saFzP4RJqzvqVx540iPg - toolchain-eslint-plugin-mozilla: XtjwE50jRpKOUyLuKLiaWA - toolchain-linux-python-dbusmock: b9wxef4zScq1clD51HqhHw - toolchain-linux32-llvm-symbolizer-19: GBg0-kgqR2iSTr5Ea-RsVQ - toolchain-linux32-toolchain-sysroot: JsDi0JmrRYe3HheYK7gYmA - toolchain-linux64-1804-dbus-python: OzAN2nmAQXSqVyr9g2D8jA - toolchain-linux64-2204-dbus-python: Ule2MRopSWivXhVNxc_Dsg - toolchain-linux64-2404-dbus-python: XuQMuI0tS3uHCNQUtLAQJg - toolchain-linux64-7zz: BZ2Ih7lET8aCvZ__YOQATQ - toolchain-linux64-aarch64-cbindgen: Hxxzen9nTnaRoLVKNfsdEw - toolchain-linux64-aarch64-clang-19: BEdas_P7TxiqSv9TALytMg - toolchain-linux64-aarch64-clang-19-raw: WPEefJ-GQ4SsxnJK8yr_MQ - toolchain-linux64-aarch64-clang-20: ZS1aF5OSR5y2MZtiO-sJYQ - toolchain-linux64-aarch64-clang-20-raw: IedPWrHJTqa8eXGbWzFvVQ - toolchain-linux64-aarch64-compiler-rt-19: R0bXLXFsQNWVfKG3kGsJcQ - toolchain-linux64-aarch64-compiler-rt-20: NL9NY0jXRKmlTM-6yrjNHg - toolchain-linux64-aarch64-libxml2: cQFHCvxSTHO0sOomw3Tlvg - toolchain-linux64-aarch64-node-22: DP3KwqlCTRe_AIf3JXv4lA - toolchain-linux64-aarch64-pkgconf: AR8-5Ky4SjiviUPxAEdFgw - toolchain-linux64-aarch64-python-3.11: VouNT6ufTNO2AliOBs-3YA - toolchain-linux64-aarch64-python-3.8: SxqKgEH_TrCBZaTmKAXygQ - toolchain-linux64-aarch64-toolchain-sysroot: eXBOGDyvRnewN08SicQcoA - toolchain-linux64-afl-instrumentation-4.0: flqPYV0fRIWKJTYsP6kChw - toolchain-linux64-android-avd-arm64-repack: ZFBnQrbRSQCHUQ0cSDUlwg - toolchain-linux64-android-avd-x86_64-repack: Dx0qUF8xTeidwZEVThcb2A - toolchain-linux64-android-gradle-dependencies: DFhjdzGsS1ajPw-ChS_M8Q - toolchain-linux64-android-ndk-linux-repack: XJsow5fAS2uOF0ai7EAExA - toolchain-linux64-android-sdk-linux-repack: YSqz5DVhQ-Odf9MKIgruWw - toolchain-linux64-binutils: AE13zHZ5Q5Cm2oVYc70kfg - toolchain-linux64-binutils-2.31.1: FL4qpQQ2TUyu5TxNJos8WQ - toolchain-linux64-breakpad-injector: DXHIcMoyRACx-vydOEY97w - toolchain-linux64-cabextract: CLtImnx0Q1qp_Ei4VNl7Dw - toolchain-linux64-cargo-vet: NU_wahE6TK-tPaNAzh5djg - toolchain-linux64-cbindgen: KFNkFQAjR1ekTqLqC4gmAw - toolchain-linux64-cbindgen-base: AJ3psz0oS0abVz_GTGhCiQ - toolchain-linux64-cctools-port: VFZ_ZETYSRmc295nb1bWLg - toolchain-linux64-clang-14: U3kOXJ7JQNGRsXG76Sflww - toolchain-linux64-clang-14-stage1: HClh21wvTXm7KNgVQ6qpGg - toolchain-linux64-clang-19: bhZ3JCyzTnK63PkS4U6Mtw - toolchain-linux64-clang-19-mingw-x64: fmhgX-CzQaC_9VnxLsNqTw - toolchain-linux64-clang-19-mingw-x86: F_l5xZjST4GhIRjoL_7fwQ - toolchain-linux64-clang-19-profile: OwR5xakhS-2BMhmGPHUb7w - toolchain-linux64-clang-19-raw: BAwoYaawR_y7k1kZsAjMMg - toolchain-linux64-clang-19-stage1: RTdP4bLQRkey0Ak_SlcQpg - toolchain-linux64-clang-20: GwRd4ZCWS9-Lk6Tb3HM_WA - toolchain-linux64-clang-20-profile: K6tiyNMSSYqo2CO7E0fUIQ - toolchain-linux64-clang-20-raw: cN_BZxSeS2CjyWkml1o97Q - toolchain-linux64-clang-20-stage1: V0V6uWGxSsuhvuiaQ1esFg - toolchain-linux64-clang-8.0: FShqmxsdQfapSC46JPslbQ - toolchain-linux64-clang-8.0-raw: NDockJdIR2q0EHqEUu05xA - toolchain-linux64-clang-tidy: eBWKd1gjTeqdxm3vZ5xSbA - toolchain-linux64-dump_syms: XBDimUnyQYG9EjVnZeMuvA - toolchain-linux64-fix-stacks: BmNwpRY_S2m2-4Dbm8WVTg - toolchain-linux64-gcc-11: GhptQbYXSB-XrZmx48jPJg - toolchain-linux64-gcc-8: T-dXO0-xT4SWA2NrzQu6jQ - toolchain-linux64-gcc-9: ENHlRNULQQKd_czDeAs8eA - toolchain-linux64-gcc-sixgill: VXChpelgQ0yLbdp0LhkpRA - toolchain-linux64-geckodriver: NgueRfXzTQiov3QgeM2X6g - toolchain-linux64-gn: dP1LE5yCQKSvDbin9rOZtQ - toolchain-linux64-hfsplus: EugTx5sWQEKW2wz0E9E-ew - toolchain-linux64-jdk-repack: ceXdzuLGQMmuCbm1nkpdGQ - toolchain-linux64-libdmg: WLvW1hVHTXKvGZO3rpIDsQ - toolchain-linux64-libxml2: EDo3svkjTHygWONM9Xau4Q - toolchain-linux64-llvm-symbolizer-19: RPhZmYSxTbSEMN8kYs1qpw - toolchain-linux64-makecab: IqhkT1JqRVmbvQEX9o3w-w - toolchain-linux64-mar-tools: CBO3Jx8MQFCk9VIRY5Boww - toolchain-linux64-mingw-fxc2-x86: ErVfv9C3RbONrmSDUB53lw - toolchain-linux64-mingw32-nsis: bw8jzAtLSpKcVL_LAVAFkA - toolchain-linux64-minidump-stackwalk: daZwKH1bQwONpHuczgTMJg - toolchain-linux64-mkbom: K5OJzM1KQV2jEj41vJC_Ew - toolchain-linux64-msix-packaging: TUWVet-3TzCnV88QmAp13Q - toolchain-linux64-nasm: QNMTA_a7RQmt3TG2slxMhw - toolchain-linux64-nasm-2.14.02: GGM18_oUTBG-CrIVNhf6yw - toolchain-linux64-node-12: QKCz54L7R9yIAYcXKYs3Xw - toolchain-linux64-node-22: FkGeKjmsTKa3g-aahnPByw - toolchain-linux64-pkgconf: b555-teRSx2LPcPpjdWaNQ - toolchain-linux64-python-3.11: R2rug4s-Tw-0bf2w5wL-8w - toolchain-linux64-python-3.8: RIIoknTgQzO7BaiTRJpohw - toolchain-linux64-rust-1.81-dev: bB_LKTrtSCW5QJI5PNTWEw - toolchain-linux64-rust-1.82: SoW3v-ZHSNqlimMGK_XxLQ - toolchain-linux64-rust-1.83: LZ8roHfkR7y5ODuiWlOsAQ - toolchain-linux64-rust-1.86: NHqHhruISoW_x1f4q-AiTg - toolchain-linux64-rust-cross-1.86: MMMFUmSdSHSCBJcsDBUobQ - toolchain-linux64-rust-macos-1.83: QS5dVULcSUGRi0gZos8I1Q - toolchain-linux64-rust-macos-1.86: PYaijO2_QwycCAewx-cC5g - toolchain-linux64-rust-size: cTWUiNnlSYO_jyfS0CHRxg - toolchain-linux64-rust-static-1.86: GYcmzxhYQ06rV_o75HwCPw - toolchain-linux64-rust-windows-1.83: UFoatDejSmueK0IaayadPg - toolchain-linux64-rust-windows-1.86: IB23a_chS7WG9ChVXJWKrg - toolchain-linux64-sccache: aGOg07hGRF216JnJ7H0zLw - toolchain-linux64-toolchain-sysroot: LRcVtG8ZSnW94FpLJU62Mg - toolchain-linux64-toolchain-sysroot-gcc10: WbV0YRW1TZKUcIQ7AAIEPg - toolchain-linux64-upx: MvT0WEpMSIyE5K5qGVRNxQ - toolchain-linux64-uv: IF7p1tiATcyf2If6OUymRA - toolchain-linux64-winchecksec: NpiOWoShTrSKPwrNgMss0Q - toolchain-linux64-wine: GZQVnljMRMWs_zt0cyz_Jg - toolchain-linux64-x64-compiler-rt-19: dviPrWreS3Kg4qla5FTBKA - toolchain-linux64-x64-compiler-rt-20: V6TqRH8LT3S2HoDkZ0ZVwg - toolchain-linux64-x86-compiler-rt-19: Y_oe4-7eQHWrZDuxVRNHlA - toolchain-linux64-x86-compiler-rt-20: dbA1EgTWS1eCUm6JWt0Wgw - toolchain-linux64-xar: dzrzMlhSSU2rLtDORB6WZg - toolchain-linux64-zucchini-bin: aGHDNfz_SYGScu5tp6z7Gw - toolchain-macosx64-aarch64-cargo-vet: CkNWCsHFSsG9UqftOvZGoA - toolchain-macosx64-aarch64-cbindgen: bWSqEiGKQFq5FMZyCbghhA - toolchain-macosx64-aarch64-clang-19: PgIv4w1PTZC43DG6GiDW7Q - toolchain-macosx64-aarch64-clang-19-profile: H2Zw95S9SKS3hUJ7xYk-Lw - toolchain-macosx64-aarch64-clang-19-raw: C_-v0l6YRgyDTcJwJtZlcw - toolchain-macosx64-aarch64-clang-19-stage2: YHNeOIlsT_-nFHL40tBmOQ - toolchain-macosx64-aarch64-clang-20: TVD75ZGcSm6OP877YMB7Ew - toolchain-macosx64-aarch64-clang-20-profile: EgnzA4INRNejEhtIBqIs-w - toolchain-macosx64-aarch64-clang-20-raw: fqo4yX0NSNWoqVoRhGy7Dw - toolchain-macosx64-aarch64-clang-20-stage2: NeblKSKIS7WKlI6Ct4R7yA - toolchain-macosx64-aarch64-clang-tidy: VCRe82vUSfOQhH5vjFhxcw - toolchain-macosx64-aarch64-compiler-rt-19: drsC-OAUTtCxeh0QqSxjWg - toolchain-macosx64-aarch64-compiler-rt-20: BAjsGX9yTAqNTlV59EQj4A - toolchain-macosx64-aarch64-dump_syms: deaJm9FJSHu03HhPuUYEsg - toolchain-macosx64-aarch64-fix-stacks: EENXfDy5T2aIuT6fsoCKPQ - toolchain-macosx64-aarch64-llvm-symbolizer-19: Kj6vlmzwRSW4voyufuuzkw - toolchain-macosx64-aarch64-minidump-stackwalk: FtJVyCyAS6qUkilk5ZyLwQ - toolchain-macosx64-aarch64-nasm: Ade4n4kOTc-IXi2Gwq04iw - toolchain-macosx64-aarch64-node-22: dXl-7tSKRr2cPg941azyQQ - toolchain-macosx64-aarch64-pkgconf: EQL1yDBqSSu5KAUYXtVcVA - toolchain-macosx64-aarch64-sccache: UkUkrymEQVGhW4kYQkdkxg - toolchain-macosx64-aarch64-uv: ZYaqQj0WS2mcIFww_xATzw - toolchain-macosx64-cargo-vet: LR0rDgMaQoSsyyB5KwgopQ - toolchain-macosx64-cbindgen: eFuYfqtzS8y9_i0BX-ABGA - toolchain-macosx64-clang-14-raw: TwTYzELmS56cFgLGMFbNpA - toolchain-macosx64-clang-19: TH-mq6NdRCeBpPBy0DoDEw - toolchain-macosx64-clang-19-profile: ambNS0S1QMiBY5aAUgIBAw - toolchain-macosx64-clang-19-raw: Z66viM8xQaK1XV_uqc_41Q - toolchain-macosx64-clang-19-stage2: eJD_KhM9Ssy9LnnJTp34mg - toolchain-macosx64-clang-20: BVTDwH0zTIKs-UWbhiDUyQ - toolchain-macosx64-clang-20-profile: Qwyet8weQVe-vNfhpVlcwA - toolchain-macosx64-clang-20-raw: R0yptG_ZTy23ISP7X95a0A - toolchain-macosx64-clang-20-stage2: CaJ6zLH5SlWFl2kwVOdZ0w - toolchain-macosx64-clang-tidy: byWhdastSd-wKGGK2liL2Q - toolchain-macosx64-dump_syms: SVzOy9eDRbSGfAcS2A3PxQ - toolchain-macosx64-fix-stacks: cMJ0_LfxSSexeIpnKCFv-w - toolchain-macosx64-geckodriver: H3JwpndAQmSh2_zExBwBfQ - toolchain-macosx64-gn: H_jGh321QhWFOPVkkZOEpw - toolchain-macosx64-llvm-symbolizer-19: PCbxqGUxT5q-kFp4HZFyaw - toolchain-macosx64-minidump-stackwalk: LZiPoe2mQCyaVzhG5ICSMA - toolchain-macosx64-nasm: LvPMEhYaTeiQRTYDR0pYJQ - toolchain-macosx64-node-22: b8fK_EjOT9-VrvgI2iIWFA - toolchain-macosx64-pkgconf: DjtgtdH7R6iit_QTCKwBRQ - toolchain-macosx64-python-3.11: fPWH26xtSten4kAaJ56L7g - toolchain-macosx64-python-3.8: fOheRbtyS0CXza_j8FVJjQ - toolchain-macosx64-rust-1.86: KeNYfozWSRGWerFu6Rr5Qg - toolchain-macosx64-sccache: DG86BgLOQp23QHOaBzX7-A - toolchain-macosx64-sdk-13.3: LBr3hugCROK-rhgsREfmFw - toolchain-macosx64-sdk-15.4: GJlf3AJATzOe5dFaSd9BiA - toolchain-macosx64-sdk-15.5: RLhk28ulTxmCFblsX4PmoA - toolchain-macosx64-uv: PcW9z8C4RdmdTG7SNePaYA - toolchain-macosx64-x64-compiler-rt-19: DJSeSNOTRQOgRLC5I5mGcg - toolchain-macosx64-x64-compiler-rt-20: dzvSjt60R2-wCCGIuGdzEg - toolchain-macosx64-xz: RwQudxINS6SqkaKmTnAEFw - toolchain-mingw32-rust-1.86: aEmne3D0SXi6HlZsKY4ejg - toolchain-newtab-node-modules: NIgJw15VRvKxx7rpofeH8g - toolchain-node-modules: K-KGvXeqTv-q-Ug2_9XJYg - toolchain-nsis: GBOrAZWyTJaAt2HCgVro_g - toolchain-rustc-dist-toolchain: E4oOfnbDSjyA9ErbJrRwQg - toolchain-stylelint-plugin-mozilla: arDTRsRfRses7FJjp4UPCQ - toolchain-sysroot-aarch64-linux-gnu: UfK82MaNSIO7pSqrmWB68Q - toolchain-sysroot-i686-linux-gnu: acymADRKRn6EXo7j2ufszw - toolchain-sysroot-wasm32-wasi-clang-19: P0hlFTLnT3qa5z50KjYGkw - toolchain-sysroot-wasm32-wasi-clang-20: CtCfdamrQK6WfO-VoPYRiA - toolchain-sysroot-wasm32-wasi-clang-8.0: WQ7_ZAH2SluOOnwdQpsO5w - toolchain-sysroot-x86_64-linux-gnu: Xf_AdHqjSd-OXsONpuOFYA - toolchain-sysroot-x86_64-linux-gnu-x11: KcQXF5ohRLKBYZ9gLBxXAg - toolchain-talos-pdfs: JT0pqE_DSUmx2cuODcf7kQ - toolchain-wasm32-wasi-compiler-rt-19: CJx_wybsQ2Om55xBRsHKFw - toolchain-wasm32-wasi-compiler-rt-20: ZLqAlxYhSD2jtXYEI5x81g - toolchain-wasm32-wasi-compiler-rt-8.0: aVWuONUWSPqH8nLtn8GIXA - toolchain-win32-compiler-rt-19: G8JbUuNKQ5GP5GS4JbkpsQ - toolchain-win32-compiler-rt-20: aJ8JHG1vSb66ogBh4XLAJw - toolchain-win32-fix-stacks: FxVHWnWZQZ6ywSdkUYvPDw - toolchain-win32-minidump-stackwalk: aTLCNnL-RVW3asaJKfmkyQ - toolchain-win32-node-22: HZBKlq8mSICEjsFrRliqcA - toolchain-win64-aarch64-cbindgen: FWv9BS_aREC_dbu_xJZOpQ - toolchain-win64-aarch64-clang-19: I1WakFQwSfqvinb_vF7wOg - toolchain-win64-aarch64-clang-19-raw: J_ZJ9lmzQuO8gKGPtJ0pxA - toolchain-win64-aarch64-clang-20: ddP6lKSNQJOeC3Ur8mRKXg - toolchain-win64-aarch64-clang-20-raw: LaG3m2kSRHCRjE2iV1bEsQ - toolchain-win64-aarch64-clang-tidy: YxKDYAqHT6um-twKYVGvcw - toolchain-win64-aarch64-compiler-rt-19: QBB2qstmSyuVqMgifIB_xg - toolchain-win64-aarch64-compiler-rt-20: AIl5Gf_nTLyTmCSq5qoaQw - toolchain-win64-aarch64-dxc: L5I_N1zMT82EzDobmzJjNQ - toolchain-win64-aarch64-libxml2: DXFVwymyTcyiPv2T4CfR6w - toolchain-win64-aarch64-mozmake: FuozNVm_S2yz8nL9zKTqLQ - toolchain-win64-aarch64-uv: N7pAlGSCQ-qeERWPtWhhxA - toolchain-win64-aarch64-vs2022: cNAqxrA0SLiljBsJY58p5Q - toolchain-win64-cargo-vet: VK7wZIy7T8eJWWMicEvgng - toolchain-win64-cbindgen: fSLkghzWSk2hyoP2meJglQ - toolchain-win64-clang-19: ZVyF12YmRz29tTrbEtKhWg - toolchain-win64-clang-19-profile: VimfqwnqTt-qKQGEtRYu_Q - toolchain-win64-clang-19-raw: Attwa1MzS4yBd_PAal1Iew - toolchain-win64-clang-19-stage2: WamZKSpaSf-Sk4xUf0qRbg - toolchain-win64-clang-20: UmeD8brcTeeZxpbVPwST6g - toolchain-win64-clang-20-profile: T_vX2e_PTcCUCKZIzHgNxQ - toolchain-win64-clang-20-raw: MKkxtQsJRvuKp6l1uJ9Szw - toolchain-win64-clang-20-stage2: Nc7dmlLkRm-VXqw-ivSU-Q - toolchain-win64-clang-tidy: Ap4NLUqRQwum0-JJ6yGV6A - toolchain-win64-cmake: HdVnY6FYTRufZ1yU9kvlsg - toolchain-win64-compiler-rt-19: Diypigw1QWiM1BqWtiNYdA - toolchain-win64-compiler-rt-20: BifjFRoOQK-RPr5CoXU74g - toolchain-win64-dump_syms: aI0dSSJORWC9rntH7AqUAw - toolchain-win64-dxc: FGQpxFvoSoOoKDYY88JB-A - toolchain-win64-fix-stacks: EfkanMCiR-mJoyjLBr8ZBA - toolchain-win64-geckodriver: AcEoI6TSQxqBqQ6A1KZd7g - toolchain-win64-gn: BzK2E_WIQmOMF72aEUl23A - toolchain-win64-grcov: HbUNkW3xQnelxikYoKz0cQ - toolchain-win64-libxml2: EuzTDzUBRxm4XRCMZv4ffA - toolchain-win64-llvm-symbolizer-19: Tg4PpcoqQ_mSJZbVcC6TfQ - toolchain-win64-minidump-stackwalk: UkiUZQDuRT-MQkIhYXktMQ - toolchain-win64-mozmake: B1tRmvriTdyo-V7tWhbDhg - toolchain-win64-nasm: ORTXxXV3RQOef4PkOnmKjg - toolchain-win64-node-22: bd_dHR19STWdK0ICZ0QhOw - toolchain-win64-pkgconf: IEbbWN0jRtqEW8K9qKlXtg - toolchain-win64-python-3.11: LyKFnI5rQcmYVScSm5brww - toolchain-win64-python-3.8: Eoy9gS_9Q5yyIqTxWrMyXw - toolchain-win64-rust-1.83: fwJsreDAQZOBGvjfBjBG0g - toolchain-win64-rust-1.86: L-JB51K4T26sa7IlCodl6Q - toolchain-win64-rust-size: HHN4UoEaRE-baEQKne12uw - toolchain-win64-sccache: FOE1EeNISLmpXrbrAzHrsA - toolchain-win64-uv: MJbXDvNoR4C2OPLs6kc0WQ - toolchain-win64-vs2022: S2Mdsj_eS7az9PgN1mAxjA - toolchain-win64-vs2022-car: P2oH7lxQQAi2s7mI1CU_kA - toolchain-win64-winchecksec: MWdkLe8CSa-Xs8w0_RBOWA - toolchain-windows-rs: du4qySbiT-O1muylCuUNkw - toolchain-wrench-deps: J57TpIuIQ6mnpD33rFaMtQ - upload-generated-sources-dummy-icecat-macosx64-shippable: VmNIfn-kTLqMlaFhIBIypA - upload-generated-sources-linux-shippable/opt: S4vvVyQHTDmr2tL4T2MrXw - upload-generated-sources-linux64-aarch64-shippable/opt: IqinBKqoQIqqx4QTCyzt1w - upload-generated-sources-linux64-shippable/opt: R6I3Nh6ORSCP-11RrjS_eg - upload-generated-sources-macosx64-aarch64-shippable/opt: H-6MExunTkqdWO-ehEJ3ng - upload-generated-sources-macosx64-x64-shippable/opt: IIH3ZklzR5icQrSN7YzgBQ - upload-generated-sources-win32-shippable/opt: P5s3YwlyRymL_GX5B2j4OA - upload-generated-sources-win64-aarch64-shippable/opt: aLCBduKbTnO62dfB3Ha9_g - upload-generated-sources-win64-shippable/opt: DSv0Z3tWRgewOdiAYzOGpQ - upload-symbols-dummy-icecat-macosx64-shippable: HJovZ5baTGaX55EEO2dvgg - valgrind-linux64-valgrind-qr/opt-swr: YUqbSn7gTDKItjwzeTnBXg + attribution-win32-ach-shippable/opt: UuE7Boz8RSSJfLKKuBIIUg + attribution-win32-af-shippable/opt: J4t7UEFsSkeDsDy5J-iIag + attribution-win32-an-shippable/opt: Z_9m1CumQ32e7rJ4FDNXUQ + attribution-win32-ar-shippable/opt: J-gzjDM-SsaUG09jQvCElQ + attribution-win32-ast-shippable/opt: W7knS5gLSx-_p1u7KLWgwg + attribution-win32-az-shippable/opt: NgNPcwv8R_S6EYmBNHZ74w + attribution-win32-be-shippable/opt: PoNYAvnGTN6E7z969L8ucA + attribution-win32-bg-shippable/opt: X5EeszzGSMChFwjHRDsuLA + attribution-win32-bn-shippable/opt: WF8sRu4aT12Q4Nfo5wQYGw + attribution-win32-br-shippable/opt: diyK8t1iQMCT25S_Mk-Iyg + attribution-win32-bs-shippable/opt: c9P_R9e3Spmw--GohMQBHw + attribution-win32-ca-shippable/opt: Sf9kHZJ5RaiSQQoiaHre8w + attribution-win32-ca-valencia-shippable/opt: GQkrma1pRmOk-mTepYSMfQ + attribution-win32-cak-shippable/opt: efQMzssrQ7yPTeUN7zg7qg + attribution-win32-cs-shippable/opt: CYDscrWsTsWqQKvnknxfiA + attribution-win32-cy-shippable/opt: dOw94-7lQF6gY2eifOlGuA + attribution-win32-da-shippable/opt: U1-1S5QAScWkPr9py6cqTw + attribution-win32-de-shippable/opt: OsSIU-0vQ9CT67dU4SVImQ + attribution-win32-dsb-shippable/opt: Z_HqJT2VRJGS2Z-6PqgbiQ + attribution-win32-el-shippable/opt: fKA6vRIMT02KoA_RldyJ_A + attribution-win32-en-CA-shippable/opt: AjkhZW-hR7eDm4irtFN3CQ + attribution-win32-en-GB-shippable/opt: NbkqKE6jQ5GW8uEBy4A9eg + attribution-win32-eo-shippable/opt: Sd1gZzARQYSi3ExSMC9shw + attribution-win32-es-AR-shippable/opt: LMLWQ3n_TGaFXfB0jt1WVQ + attribution-win32-es-CL-shippable/opt: UHLhiFHYQLuUu8rfmXFWvg + attribution-win32-es-ES-shippable/opt: UvX-cwK4RECASLL3ZzWAag + attribution-win32-es-MX-shippable/opt: MLjaryPXTrW4UPlVeGIKvg + attribution-win32-et-shippable/opt: bf2LWZR6RFi9j98dmttk0g + attribution-win32-eu-shippable/opt: Cl_l39nlTneMoGJrn-A4eQ + attribution-win32-fa-shippable/opt: SRaRDILTQEGRmj5N0cxMtg + attribution-win32-ff-shippable/opt: S4GmjVnCTaCgR8tvYVDi2Q + attribution-win32-fi-shippable/opt: Gm1zoavBQ3q6rn7wEH5PFA + attribution-win32-fr-shippable/opt: EA7yc1RpRUCGsQ1banJG1Q + attribution-win32-fur-shippable/opt: Pu-Jje5sSHu78Fih0JGvWg + attribution-win32-fy-NL-shippable/opt: SjvUXmCiSrqVmrAuLolqcw + attribution-win32-ga-IE-shippable/opt: PjRZdTIfRSizYNmWYI6F_Q + attribution-win32-gd-shippable/opt: RuZO20WuQS-w-prOLlXPxQ + attribution-win32-gl-shippable/opt: Qrcjln_HQre5podVpfVTKA + attribution-win32-gn-shippable/opt: EUgOLJKVQkmehkJkxHyLAA + attribution-win32-gu-IN-shippable/opt: aldKfb0zSSav8c1ccvAYfg + attribution-win32-he-shippable/opt: M3pUKsvNTuCIhjjpYASjSw + attribution-win32-hi-IN-shippable/opt: fzWtPAipSfu17VP8GbLz_w + attribution-win32-hr-shippable/opt: N9Pkq4XvR6uX5kGWGwrNAg + attribution-win32-hsb-shippable/opt: SRj4znCBQ2ihhVgQ6mDbiw + attribution-win32-hu-shippable/opt: CkItICkmREKMu4u6lozDnQ + attribution-win32-hy-AM-shippable/opt: WGXfyqyLS3-V3QT7p0eYlg + attribution-win32-ia-shippable/opt: EqQ-AtwRRrulmXdd5pJGtg + attribution-win32-id-shippable/opt: MyzbfmK6SOe_eiUxW8V87A + attribution-win32-is-shippable/opt: XHd88_MURRyLFnKNgqijBQ + attribution-win32-it-shippable/opt: KTkfShE-TQygvXXRe-qBAQ + attribution-win32-ja-shippable/opt: Kt4eG8nxRjqD3jpzIs29sA + attribution-win32-ka-shippable/opt: DmzIXoI7REOPIuzzneEKcQ + attribution-win32-kab-shippable/opt: OwWAZIFNQmmquiBm73fOtQ + attribution-win32-kk-shippable/opt: Z9e11WUYSdCTjbDBQO8NWg + attribution-win32-km-shippable/opt: JggnMkdQRMe9NAKKTjQUGQ + attribution-win32-kn-shippable/opt: MzTLGtyNSGyTY9mBSbPJqA + attribution-win32-ko-shippable/opt: cCEr5j-lR6mRiUFQPaBwKg + attribution-win32-lij-shippable/opt: Jn9SbZAGS0mwCZasrj-VyQ + attribution-win32-lt-shippable/opt: cpKCfb4FQmG_zeKJ-waYVA + attribution-win32-lv-shippable/opt: fXBQwPLBRtWqnt23_sAUCA + attribution-win32-mk-shippable/opt: cWfgOu12SJ-5FYtQD1WcDg + attribution-win32-mr-shippable/opt: B5Ejrl3mSUeKp7kNRu85Cg + attribution-win32-ms-shippable/opt: RzYeKnmvTCaA65egE_bE0w + attribution-win32-my-shippable/opt: B1EmPYJfTri5r-CZZjaHug + attribution-win32-nb-NO-shippable/opt: BztVdROKQHGINK1H2gXnxg + attribution-win32-ne-NP-shippable/opt: VNw2X5O-RrWsAfHx5x_n8g + attribution-win32-nl-shippable/opt: FpXLhog6TDSRyabJklPh2Q + attribution-win32-nn-NO-shippable/opt: Qf069Jf4SwGu1_GGDzaBQw + attribution-win32-oc-shippable/opt: TWC11KijQrurE3_pKawZSw + attribution-win32-pa-IN-shippable/opt: dCiC2EJeRkCTSjoxLzfStw + attribution-win32-pl-shippable/opt: acU9Ixq3Siasxx-0ndgYGQ + attribution-win32-pt-BR-shippable/opt: GZ3Y4QR2RCWs4L1-p7Pz9g + attribution-win32-pt-PT-shippable/opt: aenvlUj7SlGIG2sj9h68Pw + attribution-win32-rm-shippable/opt: ZC9EnzEKQhus1kphhUGKkg + attribution-win32-ro-shippable/opt: KkHZ83mmRVW-hjcPdQ42gA + attribution-win32-ru-shippable/opt: fe95HMM-RUugLQqkPo6sGg + attribution-win32-sc-shippable/opt: SVrN3oq6T9yuo16p5q9JaA + attribution-win32-sco-shippable/opt: GCmLrYehQ7KbAsp3kpdk0w + attribution-win32-shippable/opt: Amc00LvfQ7yeQ-UeXbYzbA + attribution-win32-si-shippable/opt: S3jB3m7iQwCjGY2elLz9EQ + attribution-win32-sk-shippable/opt: BB8je-SUTFSWdZW0T2NFKg + attribution-win32-sl-shippable/opt: dBPwwOHzRo22mwx_HlUDdw + attribution-win32-son-shippable/opt: RUtWuzPGT4mc0BjUzxHkYg + attribution-win32-sq-shippable/opt: GHVKcbovT-ybhtq7T3Igbg + attribution-win32-sr-shippable/opt: NuzaAcoHS36U3ArdNeaZRw + attribution-win32-sv-SE-shippable/opt: VEc8m1ZuRumcOLTyMiY4Lw + attribution-win32-szl-shippable/opt: UuR-E0xbSyibJOPStJJQJw + attribution-win32-ta-shippable/opt: cnjafnj6SKmIcQF38Uij1g + attribution-win32-te-shippable/opt: N16YSjADQAC5sBYp_W7RLg + attribution-win32-tg-shippable/opt: Xl7ZNi9WROyRJl02NrEStA + attribution-win32-th-shippable/opt: NqW-i265SJW4D4ZqKdLPvQ + attribution-win32-tl-shippable/opt: UV0HxSdsT8G3WQl4EqRmKw + attribution-win32-tr-shippable/opt: XEnN0Bg5QvOhMlpFX0J91Q + attribution-win32-trs-shippable/opt: XjudSLg5RIKkXIeoFBCDmg + attribution-win32-uk-shippable/opt: c0_80fvBQ9Cu6ZL6EaVgMg + attribution-win32-ur-shippable/opt: KQtD1P-rSjeo7twnlaVeHw + attribution-win32-uz-shippable/opt: HHEvQLXRQvWgaA5_67iX7g + attribution-win32-vi-shippable/opt: XYpbswSRQ5yM7xicYbEfog + attribution-win32-xh-shippable/opt: HfWW8WOZRk-tRQYtPuB61w + attribution-win32-zh-CN-shippable/opt: HlTPNpMyTNiY6UGP7yGVmA + attribution-win32-zh-TW-shippable/opt: G062guOJR4KPT8j6U9xp2g + attribution-win64-aarch64-ach-shippable/opt: O5bPOOn8TsSarTeeB4op8g + attribution-win64-aarch64-af-shippable/opt: S27wuP6HRkG2oznezqEp_A + attribution-win64-aarch64-an-shippable/opt: J2s7JkMES7ifrv_0903oDQ + attribution-win64-aarch64-ar-shippable/opt: cwlNLsz2Qzu-vVDQqXWe2A + attribution-win64-aarch64-ast-shippable/opt: FD9Upx1rRnGtdBjTqgJfnw + attribution-win64-aarch64-az-shippable/opt: bjoMKwOSQXK3HAKU_Ciz8w + attribution-win64-aarch64-be-shippable/opt: W0EuAdPCQ--EUkgi9uj1hw + attribution-win64-aarch64-bg-shippable/opt: QSbJ-cyfQNiv4RBa_XO08w + attribution-win64-aarch64-bn-shippable/opt: VRpm625cSDi66OyvTaHJHw + attribution-win64-aarch64-br-shippable/opt: AIZsRSZwQ6-eT-RiujTPtg + attribution-win64-aarch64-bs-shippable/opt: GXeQpSmnT-ujUMXFIB8kCg + attribution-win64-aarch64-ca-shippable/opt: NxgsH0DJQ-GgTpXUWGSJYg + attribution-win64-aarch64-ca-valencia-shippable/opt: S6vyGkCgTNSo29h2d_XqZw + attribution-win64-aarch64-cak-shippable/opt: KaBxjk-VR3OMtsnhjexQgg + attribution-win64-aarch64-cs-shippable/opt: RjvBfRNYQ4iz-oSE2zFABg + attribution-win64-aarch64-cy-shippable/opt: WsT5uztSQiGvZgm0Dco2og + attribution-win64-aarch64-da-shippable/opt: IjrYaTb_RZWv6GyQgkyggQ + attribution-win64-aarch64-de-shippable/opt: TDODbzGnSROjd0pBMtY_5w + attribution-win64-aarch64-dsb-shippable/opt: OZphZRHQQE6zzXHJg5vDtA + attribution-win64-aarch64-el-shippable/opt: BH6vknzZSgG82lCLLNOReg + attribution-win64-aarch64-en-CA-shippable/opt: ZbpnM77pT4yhiN_qSTvYrA + attribution-win64-aarch64-en-GB-shippable/opt: D9en0JzyT0S3EeEP6bCG-A + attribution-win64-aarch64-eo-shippable/opt: SI4eoSupSA2aGBC9aJrygg + attribution-win64-aarch64-es-AR-shippable/opt: bcNfrdMiSnqgsTbAMXSY1Q + attribution-win64-aarch64-es-CL-shippable/opt: ZK6CNEnGRGexwPqYWYP1fw + attribution-win64-aarch64-es-ES-shippable/opt: U7jn0Um3ROmOWuqHve5CvQ + attribution-win64-aarch64-es-MX-shippable/opt: Xo2ens4eRiKFPpALVZWszQ + attribution-win64-aarch64-et-shippable/opt: EsPXvUUdTFW2JDQPBEVaoQ + attribution-win64-aarch64-eu-shippable/opt: AwRPMoMgTCyGoJSN4ve_SA + attribution-win64-aarch64-fa-shippable/opt: U4JB5tIxSPKJl3DE6i7WDQ + attribution-win64-aarch64-ff-shippable/opt: PIPfE8V0RdOm8CM82cDJZw + attribution-win64-aarch64-fi-shippable/opt: RbvSIt7iQgO_1ihf_Wjhsg + attribution-win64-aarch64-fr-shippable/opt: fAInLwU6QN2RMYWVCiiKTA + attribution-win64-aarch64-fur-shippable/opt: eiYaGRngSD-YmgT1a2xs2g + attribution-win64-aarch64-fy-NL-shippable/opt: AsSt2BboQlGUfWfQJs_6lA + attribution-win64-aarch64-ga-IE-shippable/opt: DHvWeETrRU-DW2VqSdPx5Q + attribution-win64-aarch64-gd-shippable/opt: DdueeHdBSDaFYcDxkSV9GA + attribution-win64-aarch64-gl-shippable/opt: Fhx20KeXTU-kh6NbPzNmWQ + attribution-win64-aarch64-gn-shippable/opt: Y6HdVoNDRLGCIS-BcxievA + attribution-win64-aarch64-gu-IN-shippable/opt: U0bnc3FgQYCri38e-sh2Ag + attribution-win64-aarch64-he-shippable/opt: RDvNvCRKRnWiVIU0FZdNmg + attribution-win64-aarch64-hi-IN-shippable/opt: BRVlY4_ZTIS0QcLwjvMVtQ + attribution-win64-aarch64-hr-shippable/opt: Q_CHhCh7Qvue0n2h3DYz9g + attribution-win64-aarch64-hsb-shippable/opt: RfIBqYa3RfeYO8VsBk_-7Q + attribution-win64-aarch64-hu-shippable/opt: DZTgc2AeTMimSL6URmetXA + attribution-win64-aarch64-hy-AM-shippable/opt: cenZWFHCQlquaArk2igreg + attribution-win64-aarch64-ia-shippable/opt: PXcd0zzvSyOjEc51L_lpUw + attribution-win64-aarch64-id-shippable/opt: dWvt96O-QOW932CLHikg1A + attribution-win64-aarch64-is-shippable/opt: KYkKYxmPRY-VCeFCVvkZRg + attribution-win64-aarch64-it-shippable/opt: VRixsrckTXamllM1TDRy_w + attribution-win64-aarch64-ja-shippable/opt: cKxlvQf-Qt65VIFnyuIMSw + attribution-win64-aarch64-ka-shippable/opt: bR47Xlh0Qq2tUQe9ZfWH3Q + attribution-win64-aarch64-kab-shippable/opt: Lah5OxvHQlOA-wSTxaq2xg + attribution-win64-aarch64-kk-shippable/opt: azPWRzfURjOQX0NCEc5ViQ + attribution-win64-aarch64-km-shippable/opt: LXuBAAUbSZeoAhDzSG2nlg + attribution-win64-aarch64-kn-shippable/opt: S8D_tx5UT8mQChkM_TXIgg + attribution-win64-aarch64-ko-shippable/opt: AFvhlAybQ3yYVd8__1MApQ + attribution-win64-aarch64-lij-shippable/opt: aW_SpXBeQ3-8Dw2DphgnzA + attribution-win64-aarch64-lt-shippable/opt: d7EOxA_MTVKDcP0hzTfekg + attribution-win64-aarch64-lv-shippable/opt: dwjgvItPRNGP7Q1KBPKnTQ + attribution-win64-aarch64-mk-shippable/opt: dLucGUxZRo6zVMYKoC1wLw + attribution-win64-aarch64-mr-shippable/opt: PbUQNAJESzqSQeWq8Iwsqw + attribution-win64-aarch64-ms-shippable/opt: ZfsOi4NkTPaygVXNztIIlQ + attribution-win64-aarch64-my-shippable/opt: Tlcl0qMNQxaMoKTsLtvjyw + attribution-win64-aarch64-nb-NO-shippable/opt: ZP4U4Yb9QYando5j6fIoYg + attribution-win64-aarch64-ne-NP-shippable/opt: BgvxQE9kRIW-nsJg3-Jg-g + attribution-win64-aarch64-nl-shippable/opt: Y6jn87YGRnWAM6vXQyEg1A + attribution-win64-aarch64-nn-NO-shippable/opt: APirbtsnShSVFqppYW8XLQ + attribution-win64-aarch64-oc-shippable/opt: ULCcbytXSG2YFSCp5KnbIw + attribution-win64-aarch64-pa-IN-shippable/opt: RwJT_sWzS6ue6cDraHlcqA + attribution-win64-aarch64-pl-shippable/opt: WtC2Il8KTbqFlT79EhuAwg + attribution-win64-aarch64-pt-BR-shippable/opt: BKS7LvPbTJSF7xjoScVO4Q + attribution-win64-aarch64-pt-PT-shippable/opt: bzyT3xfQQNG4JK78yVjJRA + attribution-win64-aarch64-rm-shippable/opt: ZMuD1UYRSteYoKOxYZPPdw + attribution-win64-aarch64-ro-shippable/opt: H6X2yCRnS4ax43tPJUcliw + attribution-win64-aarch64-ru-shippable/opt: aSuZH9wZTim-_XQN_1YhlA + attribution-win64-aarch64-sc-shippable/opt: WcGSOPhsR7OtbF9DXTUv9A + attribution-win64-aarch64-sco-shippable/opt: AfQ4xhv7Q3-SPZ4tHRNquQ + attribution-win64-aarch64-shippable/opt: MBc245dPQUilDbYze_UNtQ + attribution-win64-aarch64-si-shippable/opt: fJz3Vgr-RwaxUw0IcWlXZA + attribution-win64-aarch64-sk-shippable/opt: Lf6eKxM8S6-tMuZliErBBQ + attribution-win64-aarch64-sl-shippable/opt: aabq1NWDRZe4pZsHe5Fd9g + attribution-win64-aarch64-son-shippable/opt: JfiXigIORfWcEVzd25-Ltw + attribution-win64-aarch64-sq-shippable/opt: KcchQn3DSGS2cM21ranpgA + attribution-win64-aarch64-sr-shippable/opt: H9EmRsGVS7WTEloecce6dg + attribution-win64-aarch64-sv-SE-shippable/opt: SvU11xI5QEKKVP_AXGw_ug + attribution-win64-aarch64-szl-shippable/opt: MX9OZMGHTeSV66Yj5cQ-fg + attribution-win64-aarch64-ta-shippable/opt: MwNCgRLQQjGcwiNQ10S47g + attribution-win64-aarch64-te-shippable/opt: OM5ms2czTySDqysQxea9HQ + attribution-win64-aarch64-tg-shippable/opt: c5WmootCT76Yx9d8fBtu-Q + attribution-win64-aarch64-th-shippable/opt: F0lYFpscSKuVuyvGBUuMUg + attribution-win64-aarch64-tl-shippable/opt: e5g_HXUlSEuWYVhoS4qt6Q + attribution-win64-aarch64-tr-shippable/opt: Ef0BVBitQd-p0KQ4tYUQRQ + attribution-win64-aarch64-trs-shippable/opt: GiPSuzSoTWqjer5xtANFyQ + attribution-win64-aarch64-uk-shippable/opt: Zfy2l3zXTgywfUdqhbzB_w + attribution-win64-aarch64-ur-shippable/opt: N2koCgzJTXyuzpjaTvSYXA + attribution-win64-aarch64-uz-shippable/opt: Ayz_B1zyRQa5iQ69Oo2BrQ + attribution-win64-aarch64-vi-shippable/opt: f9OUHKbSTCiU_u9M87erFw + attribution-win64-aarch64-xh-shippable/opt: PooCe372TGm9UziYQoNaeA + attribution-win64-aarch64-zh-CN-shippable/opt: ZmZg7BA-RcODymDxabUteQ + attribution-win64-aarch64-zh-TW-shippable/opt: RbGTq3UKSFeKcGyCDWfnhQ + attribution-win64-ach-shippable/opt: fw53EKdpTP6axd884X51bg + attribution-win64-af-shippable/opt: U_2WQ8_hSsyDbfzs_oLlDg + attribution-win64-an-shippable/opt: Hwm_ZffFSMqLIwbuobnrkw + attribution-win64-ar-shippable/opt: E3EsXorqRR-ybGFOBvqMjw + attribution-win64-ast-shippable/opt: eiGbY71_Tke3nEEgYGmfBw + attribution-win64-az-shippable/opt: cFemWrAMSGuOCNJkN3Yf3g + attribution-win64-be-shippable/opt: bDjddtL-SEOdj-KS5HrIPA + attribution-win64-bg-shippable/opt: eG9acBjgRHS1dXX_8-XzkA + attribution-win64-bn-shippable/opt: Sjt-VjCJR3yHW7wOPCGeMA + attribution-win64-br-shippable/opt: DqZcs2u6T_WZpM_NK1z68w + attribution-win64-bs-shippable/opt: ZII99vqSS_S5N1fnLbyWaQ + attribution-win64-ca-shippable/opt: MCv5Uq-dQbmTKzhQfE8fiQ + attribution-win64-ca-valencia-shippable/opt: HQjwCQdWQtmp8bZWZvARzg + attribution-win64-cak-shippable/opt: Siu8sOYASVuaXXr0owbGzA + attribution-win64-cs-shippable/opt: dbtVqQrATqSTKBTNz92w-Q + attribution-win64-cy-shippable/opt: Ky_ShNbGTImnrcUpsZgyCw + attribution-win64-da-shippable/opt: Ufbfrmr6SwOp-f64XXR98g + attribution-win64-de-shippable/opt: dm5MdQJpSXy1XkXqjqv0tA + attribution-win64-dsb-shippable/opt: Y6I42W2QSsiDffGP64T2sg + attribution-win64-el-shippable/opt: M3vfEJ_RTuud5L-bKuVRBQ + attribution-win64-en-CA-shippable/opt: YIczCZpJTsq4DtnmM-YJ8A + attribution-win64-en-GB-shippable/opt: QJKbJZJ-R2GamMS4wmv8Tw + attribution-win64-eo-shippable/opt: YlzMUmUVRKGC5bWAbPVKcg + attribution-win64-es-AR-shippable/opt: S2-9SBhgSqCurk_G4nozdA + attribution-win64-es-CL-shippable/opt: VIRpKHBLT6OHJzpSgA3B3g + attribution-win64-es-ES-shippable/opt: VuX4saJ1QMC23Ig4HSTYLA + attribution-win64-es-MX-shippable/opt: XMtWRJHDQmaHO8Kwrcm_Tg + attribution-win64-et-shippable/opt: b2q-ymLWTQGJDE54edWVuQ + attribution-win64-eu-shippable/opt: XURSNpcOQtaIgED23OUWqg + attribution-win64-fa-shippable/opt: Om_b8RouTlSXsd6ZbCOi1g + attribution-win64-ff-shippable/opt: IvUMj1NhSRG-GZ34Zyh0nw + attribution-win64-fi-shippable/opt: df8GQW6uS8ycXKb7KMwSwg + attribution-win64-fr-shippable/opt: ftI8Ew3zQVu2ttoWyP0urQ + attribution-win64-fur-shippable/opt: PCowX7e5QCqKguQxRxoi6Q + attribution-win64-fy-NL-shippable/opt: Afy_Dnk9SnqpaYtZOGIQlA + attribution-win64-ga-IE-shippable/opt: Vnm8O206QQGlGh6Qek7uhg + attribution-win64-gd-shippable/opt: MarZpgTqStCN07CN_EVa1w + attribution-win64-gl-shippable/opt: U3LOnpSjQrCvROO6ksHDlQ + attribution-win64-gn-shippable/opt: Mp0atu8pSSW8OBvKlFIHEQ + attribution-win64-gu-IN-shippable/opt: NErEdYm8T4aX_up2kT6_9A + attribution-win64-he-shippable/opt: R9mCgX8RSrKq8fmr682Ijw + attribution-win64-hi-IN-shippable/opt: VJhqKRxVTw-GpS3dWyhpwQ + attribution-win64-hr-shippable/opt: DfAPTiu9S0SthTZZdf25MA + attribution-win64-hsb-shippable/opt: MVuPDv1JT9iz0oLcsL5NDw + attribution-win64-hu-shippable/opt: UR4IBY3bSwukgDU3di5X7Q + attribution-win64-hy-AM-shippable/opt: OzIsnL64QX2_ydBRDlKo8A + attribution-win64-ia-shippable/opt: NxGrODUGSi6_JnPyeOm7dw + attribution-win64-id-shippable/opt: PuIZLX6NR4imqMdYy8dOMQ + attribution-win64-is-shippable/opt: YFdIAqFlTFmLmA3MUFErfQ + attribution-win64-it-shippable/opt: HxudkGLvQ_2GunZ7ReFwMg + attribution-win64-ja-shippable/opt: JXAb8cY0RtmPj5NgA_bP8Q + attribution-win64-ka-shippable/opt: bI_Uf9dpRrSYCjZJTbkIfg + attribution-win64-kab-shippable/opt: WcWbKeTCQLCd5Qu-PxqCTw + attribution-win64-kk-shippable/opt: ThLro3BJSJu6E1oC4lBDlQ + attribution-win64-km-shippable/opt: Xp8VDDsuTWaRei_QgSUltg + attribution-win64-kn-shippable/opt: bbo2uvJZSVWMSTKd2_SDvA + attribution-win64-ko-shippable/opt: DxSMHqiCSLK0TEzN8xeMvw + attribution-win64-lij-shippable/opt: aMg9wrA7T66xaVJ1y7Ep2w + attribution-win64-lt-shippable/opt: Q8lvipRyS6a_rcy992qeXw + attribution-win64-lv-shippable/opt: FPuGXXlvSqiCk1KCvD8NWg + attribution-win64-mk-shippable/opt: ReB4H4aPToK491_lFNoAyQ + attribution-win64-mr-shippable/opt: Y6llV16WRfS3kjyQPtSB1w + attribution-win64-ms-shippable/opt: eVL0vfh8QdW5_ICkRhQyqw + attribution-win64-my-shippable/opt: TdxN6cv6SyG66mCZxWpvgg + attribution-win64-nb-NO-shippable/opt: evkCR86BTdy3Als4twQ5lA + attribution-win64-ne-NP-shippable/opt: D54s1-9fTeKTZ9iYgi0hfA + attribution-win64-nl-shippable/opt: QyBObs3rSkaJLclAclV_bg + attribution-win64-nn-NO-shippable/opt: AG9KrU3wSsW3dc_QGlHjCA + attribution-win64-oc-shippable/opt: JuIGSJJASnGLOrKBjpfRrg + attribution-win64-pa-IN-shippable/opt: EDLxtj7JRQalGznAdA1m-g + attribution-win64-pl-shippable/opt: V_LnVs1MRjeHwfSz6l5Rdg + attribution-win64-pt-BR-shippable/opt: G4dOt6cIR0iXJAswuCFVqA + attribution-win64-pt-PT-shippable/opt: FaDc9iYITfKhEqdXn9WlJw + attribution-win64-rm-shippable/opt: HdnmsxRlSLaHBEaeWtMY2g + attribution-win64-ro-shippable/opt: GXatynQiSR-prAY9JlmolA + attribution-win64-ru-shippable/opt: C9JxrGcwQdeteEoKhSPpQg + attribution-win64-sc-shippable/opt: XVfvrPPzT1OHrguTeRQT_g + attribution-win64-sco-shippable/opt: GVJkuinIQy-oCBQpKZhqKA + attribution-win64-shippable/opt: FaJCybuEQP2WsCpClbodNQ + attribution-win64-si-shippable/opt: OQ71vCaQSECOoPWCFqmYyw + attribution-win64-sk-shippable/opt: WrfQaPApQdiPjtU8YmPhMw + attribution-win64-sl-shippable/opt: cBcvUQi6QsisSuMoX65WDQ + attribution-win64-son-shippable/opt: TNYeFjh1QlGHdLmucW5FnQ + attribution-win64-sq-shippable/opt: HAuQixjcRjauXWbCpL6EhQ + attribution-win64-sr-shippable/opt: KvIEeEslTK24YhCyVYK1Yw + attribution-win64-sv-SE-shippable/opt: W0ECxytCTS-we4KoE98B1g + attribution-win64-szl-shippable/opt: eEHEfx-dTsGDxAYVD0t4LQ + attribution-win64-ta-shippable/opt: OOpLkb0USquGZuOFm0U8Vg + attribution-win64-te-shippable/opt: BzY3c0FNRRaIlAZMwNfajQ + attribution-win64-tg-shippable/opt: VjQbMRvYSnaNiLaWgesFbQ + attribution-win64-th-shippable/opt: YQyvyG8eQ-yiFZLTJGMZeg + attribution-win64-tl-shippable/opt: A8syIDihTAiraY_p37gkWQ + attribution-win64-tr-shippable/opt: JXMYHebxRv-g8k8vaK2qaQ + attribution-win64-trs-shippable/opt: fQkMhB3-SSK1_LaI_9OvkQ + attribution-win64-uk-shippable/opt: VBb0HQjgT5WMrWytzkv2nw + attribution-win64-ur-shippable/opt: X6sJ5F9PTBmbwzdNLfv36Q + attribution-win64-uz-shippable/opt: f3u7E9zxRDmKXxEUSSzwOg + attribution-win64-vi-shippable/opt: brCqSbpIRjuPlQFlFrHqig + attribution-win64-xh-shippable/opt: OC3xMi9rQbilS5tBe4bqgQ + attribution-win64-zh-CN-shippable/opt: SAMeVdGqT_2SpVyNjnsJKQ + attribution-win64-zh-TW-shippable/opt: a5a3KKfpRjeaKXSLYkmr2A + balrog-ach-linux-shippable/opt: e4VZWBntS2y7M97Dy_vifQ + balrog-ach-linux64-shippable/opt: ChLiaj3rSx2rIalKxB9KKA + balrog-ach-macosx64-shippable/opt: JwQmpNisQvauXoZBQ1X-tA + balrog-ach-win32-shippable/opt: KrEE8P8LTBmPq3F6-JUQFA + balrog-ach-win64-aarch64-shippable/opt: R4BFJGjYQdC2TVV1bNpDXw + balrog-ach-win64-shippable/opt: fB9aI7ylRtSMbLmpYe5rJw + balrog-af-linux-shippable/opt: DFN8x2IKRPa4jwrli8ydrQ + balrog-af-linux64-shippable/opt: IO-SwurjSw2uYoou709LIA + balrog-af-macosx64-shippable/opt: WV3DRx7pSu6zSUeEiwv4DQ + balrog-af-win32-shippable/opt: DXuH02ZyTguRcg3egj_btA + balrog-af-win64-aarch64-shippable/opt: KWZ1AFWySuSPrrzSmZ6zfg + balrog-af-win64-shippable/opt: JmtmYLr4Q4CKstg28txtRg + balrog-an-linux-shippable/opt: Xi4yzPwWTOCC6ooSxYuW1g + balrog-an-linux64-shippable/opt: Zdeb24jMSKuWM4CXXTyPGA + balrog-an-macosx64-shippable/opt: SQzmZ6GKT1mjWFxpLg_sJg + balrog-an-win32-shippable/opt: SbHQxN0UShmDL2aCt6Kycg + balrog-an-win64-aarch64-shippable/opt: SOWf8AprS0KcNziHqkjzUA + balrog-an-win64-shippable/opt: L_pTPU7aSw6RRBJAWNeYhw + balrog-ar-linux-shippable/opt: YvQF88NxT7Gdqr_aWm8odw + balrog-ar-linux64-shippable/opt: JWS-I0NNQTu6qxciR7xsuQ + balrog-ar-macosx64-shippable/opt: KR8z6FlTTXit2Usqv6XJqA + balrog-ar-win32-shippable/opt: a1vWVOjmSp-kJ1y9Kmqi5Q + balrog-ar-win64-aarch64-shippable/opt: Ybxwap0HRSWxWuECvhIhaA + balrog-ar-win64-shippable/opt: G9V1nkzuTHer18ad6PLjfQ + balrog-ast-linux-shippable/opt: WLqTI5DeTpKPHLpgB00rKw + balrog-ast-linux64-shippable/opt: ScD7Iz6qSOKsWJa8dvbPNQ + balrog-ast-macosx64-shippable/opt: BCyQbOBIR9Gg-NkikaxVkg + balrog-ast-win32-shippable/opt: ET6ciavaQ_uqW6nYzQcDvA + balrog-ast-win64-aarch64-shippable/opt: G-qFtsF2Tm-NQlkIgGLBaA + balrog-ast-win64-shippable/opt: Iny48vFXRCqi-PUgnPFWMg + balrog-az-linux-shippable/opt: IHqjAVDWRUi9-oxQPYVj8A + balrog-az-linux64-shippable/opt: dQGxZq5oQDONR5lGFe6S2Q + balrog-az-macosx64-shippable/opt: WMbm7ij-R4u1cXnR0NeuiQ + balrog-az-win32-shippable/opt: cxCCNAEtRRqA9h4JqZokBQ + balrog-az-win64-aarch64-shippable/opt: QDQxkK7pRn-iP6irCwuEkg + balrog-az-win64-shippable/opt: afIcsYBHQIeuC_07EAqF2Q + balrog-be-linux-shippable/opt: AQKpoxRETPq43M6ihQybrQ + balrog-be-linux64-shippable/opt: PJBWIlF5Tde5VkbqwNDcoQ + balrog-be-macosx64-shippable/opt: K2U6fbDVT9mQr9oTayoemw + balrog-be-win32-shippable/opt: ETJlGUmTT9i1WrObTS9XQw + balrog-be-win64-aarch64-shippable/opt: Z6Z8nurkRymTwwK-wfUG-Q + balrog-be-win64-shippable/opt: MQPwXlFvQb-p8Mt6dLgXTA + balrog-bg-linux-shippable/opt: f70lYwJZQrmTcvxhgq9AwA + balrog-bg-linux64-shippable/opt: Vny0TJvtRQi5tdXEK_dTAg + balrog-bg-macosx64-shippable/opt: YEiQC-jYS4i7abRhaiRUoQ + balrog-bg-win32-shippable/opt: D6Tgl0gzROa5Aa3Mfa34pg + balrog-bg-win64-aarch64-shippable/opt: dJ6iUBTcQre3BoTbEBdodg + balrog-bg-win64-shippable/opt: bWRmRYSpTUmo1eSgw--HJg + balrog-bn-linux-shippable/opt: BV53RnBbRseUbpkzr2Q03A + balrog-bn-linux64-shippable/opt: ZHuMGHm3TZ2qGXaAXndc3g + balrog-bn-macosx64-shippable/opt: ejbmhu9jRhWc_xNXTM_wqw + balrog-bn-win32-shippable/opt: DgNHcLTZRoalAtnR1-XMpw + balrog-bn-win64-aarch64-shippable/opt: IeF6tcWlTrqYzM4U27c3Qg + balrog-bn-win64-shippable/opt: JA_sG4NjTDCVTYvEGRO3Mw + balrog-br-linux-shippable/opt: aIZaDSQ_RUWXr7dVCFDkUg + balrog-br-linux64-shippable/opt: e08BLBsvQZK7w7M5iyK4Ng + balrog-br-macosx64-shippable/opt: COt9lGO7T1uZMlwg9Dfk8A + balrog-br-win32-shippable/opt: BY7VAEoHRM6FayVZXcnfRA + balrog-br-win64-aarch64-shippable/opt: REMlcFTTSViDtg9yNbXmqA + balrog-br-win64-shippable/opt: MbjI6JmJRSiEIdTJe_tmug + balrog-bs-linux-shippable/opt: EzPq0qh8TqGjiZ-zDudpdQ + balrog-bs-linux64-shippable/opt: DR9k-fAeRg2Xzwumu7zxCA + balrog-bs-macosx64-shippable/opt: YxZF4oe_T2WZahegjJQ98w + balrog-bs-win32-shippable/opt: LKK7NhDaS1W9mdtl_YKI5g + balrog-bs-win64-aarch64-shippable/opt: P_1Z_sq_SoSoLyCC-cP2fw + balrog-bs-win64-shippable/opt: GNTRCJIuR0KerTjYVXbrtg + balrog-ca-linux-shippable/opt: cL8zmdEMS7SypujAxOPOfg + balrog-ca-linux64-shippable/opt: Qk7O-PCcQhiJ6loIfEHzbA + balrog-ca-macosx64-shippable/opt: LRW4mLJnR6yjh-xE6X_3Dw + balrog-ca-valencia-linux-shippable/opt: f4zF6XEaQ-61LZcHsF-X5A + balrog-ca-valencia-linux64-shippable/opt: Pz-AaqIlTHSlUz3I8AsceA + balrog-ca-valencia-macosx64-shippable/opt: UB0Tf6PCQnOELtb1IRRl4Q + balrog-ca-valencia-win32-shippable/opt: OXTfszJMS3S1kq3UyLVOsg + balrog-ca-valencia-win64-aarch64-shippable/opt: JErOUUHsQpuzt41_u_nLSA + balrog-ca-valencia-win64-shippable/opt: QJDiKCIQQpaudCXqpAjKFQ + balrog-ca-win32-shippable/opt: CVnk_vqGScm4j-BjUB7oTA + balrog-ca-win64-aarch64-shippable/opt: b_xb8sjDQJaQ0gRO3PjmQQ + balrog-ca-win64-shippable/opt: NIxSiwy_R9SGYuKu3TJS0g + balrog-cak-linux-shippable/opt: dfG_2FncQyCT6tdD8al6vQ + balrog-cak-linux64-shippable/opt: dpfPN3uKTHyxACdMJJ9FRA + balrog-cak-macosx64-shippable/opt: YPbZcsORRkC0_JpsXpxhZw + balrog-cak-win32-shippable/opt: YtLbWXIXTf2xpnhzX5VHrA + balrog-cak-win64-aarch64-shippable/opt: ILrYOO8aTWO-_YLzlQS-8Q + balrog-cak-win64-shippable/opt: PyxcXVHUTG2OxsmOxVgpSA + balrog-cs-linux-shippable/opt: ZNnyCs32T-mi7kRx9FweJA + balrog-cs-linux64-shippable/opt: YvgoMAlASmOlsxsNe0DZ3w + balrog-cs-macosx64-shippable/opt: OvYC-BSpSH2jjN-DC2Qiww + balrog-cs-win32-shippable/opt: UG7W8womQy6XvCQgwdYNTQ + balrog-cs-win64-aarch64-shippable/opt: cpiK93cZSPyUo-Td5uwPgw + balrog-cs-win64-shippable/opt: CTRnG3ADQaKsdAdTXZ3ESA + balrog-cy-linux-shippable/opt: TqxQr1FNQ_mgPrnf2h1xaA + balrog-cy-linux64-shippable/opt: Qwu_oBjyR5C9IgZoSWuEPQ + balrog-cy-macosx64-shippable/opt: Owg93CABQ1SVb2kbthKhDQ + balrog-cy-win32-shippable/opt: QLD5GaqjQK6OtAxTNxMHZA + balrog-cy-win64-aarch64-shippable/opt: GONKsX3kTYyH4nAFwWsdiA + balrog-cy-win64-shippable/opt: HR3OdI5-T7W2OnqRveJVzw + balrog-da-linux-shippable/opt: cIPEdd6QSreTaW8LgeufKA + balrog-da-linux64-shippable/opt: f-snSGKPR1iGxXGMcLjjPQ + balrog-da-macosx64-shippable/opt: IouSd3QpQAKutkU3nYcxjg + balrog-da-win32-shippable/opt: SNCIPUSrQ7e3JPTsGf5oXg + balrog-da-win64-aarch64-shippable/opt: BCFEICQ1T0mktJgjMfV_3w + balrog-da-win64-shippable/opt: KtdIHqpPRtuDGyJxwqc-NA + balrog-de-linux-shippable/opt: OV80RZ9_RTOmfG0XNMMwgg + balrog-de-linux64-shippable/opt: EHFKPeyASf-TTAyLW2cQVA + balrog-de-macosx64-shippable/opt: Uo2pIdgjSk2OfMjRcsj6iw + balrog-de-win32-shippable/opt: Vt6CfFlVRCay9bf5_HxtUQ + balrog-de-win64-aarch64-shippable/opt: Fehy8WctQPCLZTD0zzI1hw + balrog-de-win64-shippable/opt: fjfMHf7bTR611x2YS4x41Q + balrog-dsb-linux-shippable/opt: XPjoK9uXRryDRJb4hFdIsQ + balrog-dsb-linux64-shippable/opt: DDgL-UdmSQSrrAMDPoQB1w + balrog-dsb-macosx64-shippable/opt: Dz283hAqQRGVKE9hwEjh-A + balrog-dsb-win32-shippable/opt: SxbtPK2DSseJXasZ5SxG9A + balrog-dsb-win64-aarch64-shippable/opt: F7evmaGbQzu7XFl1hxQ9rQ + balrog-dsb-win64-shippable/opt: D6wYLe0qTk-JBjJ2fcCX4Q + balrog-el-linux-shippable/opt: RJ0MZvIuTwiZincabCDdng + balrog-el-linux64-shippable/opt: VCRvtPbASw6jLl9eY_xHHA + balrog-el-macosx64-shippable/opt: c_hqkbIhRKmeTNRJXrYmAA + balrog-el-win32-shippable/opt: TItMp3arQMWCqnIwKwvkkg + balrog-el-win64-aarch64-shippable/opt: Y8LZRdkgRsGsxkRWido9VA + balrog-el-win64-shippable/opt: bnvhykNoQfy1Fw-hxYveEA + balrog-en-CA-linux-shippable/opt: EPj7CuDKTKWKhs_B1DTelA + balrog-en-CA-linux64-shippable/opt: aD3mtxfyTae_-4aw_kxRDg + balrog-en-CA-macosx64-shippable/opt: DWtWMnyfT5OAn-gaDP5mqw + balrog-en-CA-win32-shippable/opt: fCcQOp3JSj2l5jsCiplk7g + balrog-en-CA-win64-aarch64-shippable/opt: eF1rysXiSXO-Wgs0r8mWag + balrog-en-CA-win64-shippable/opt: bSaJDIN2QM2HJJiCY57xOg + balrog-en-GB-linux-shippable/opt: X-eRvYclSEmwV42eDglZgA + balrog-en-GB-linux64-shippable/opt: SttT6m7wSp-QNdxqLwYpjA + balrog-en-GB-macosx64-shippable/opt: W_bRfn_aSjKW2wdJwBZpRQ + balrog-en-GB-win32-shippable/opt: agYLMf1MTOGFH1aEu1vgqA + balrog-en-GB-win64-aarch64-shippable/opt: Lh4eK60PSWiMb4r2epsAyQ + balrog-en-GB-win64-shippable/opt: IWQD9U04Si6UsDfIvAsPWg + balrog-eo-linux-shippable/opt: ae3KFtRlTS-Q7GtOselSVQ + balrog-eo-linux64-shippable/opt: GO6v7qFoRfOYeM1f21WFXA + balrog-eo-macosx64-shippable/opt: bsVYADq6Q_m7PSzVDt3Akw + balrog-eo-win32-shippable/opt: KgIFjsjtQheMVF6h-6PTwA + balrog-eo-win64-aarch64-shippable/opt: Ab_19bPBQwmoh-HxhZRRRQ + balrog-eo-win64-shippable/opt: LNVzgRrQTA-xQRhG3B9-pQ + balrog-es-AR-linux-shippable/opt: fJGFuC7lT1KnzrybSImB0Q + balrog-es-AR-linux64-shippable/opt: S-wKCjAsSvOmpnY6JZ-0gw + balrog-es-AR-macosx64-shippable/opt: GX_KUr-NQF-ZiP_IDoS4gQ + balrog-es-AR-win32-shippable/opt: clqOSEzNT5-y2ro8Arh9SA + balrog-es-AR-win64-aarch64-shippable/opt: cnNnafYOQaKP7dq3G4darg + balrog-es-AR-win64-shippable/opt: UH4fKokkRt6AilCH76Wf4A + balrog-es-CL-linux-shippable/opt: DCvi4vJHQA-ZPUM2EbMDBA + balrog-es-CL-linux64-shippable/opt: SnxME2RpR5-y-VIOp8ymSg + balrog-es-CL-macosx64-shippable/opt: NvpvtygTQTa4lImdh7ZVUg + balrog-es-CL-win32-shippable/opt: CWsATN3WT6mg7cGk8KaagQ + balrog-es-CL-win64-aarch64-shippable/opt: PpDEnbHNTNiNmQHHQvr-ew + balrog-es-CL-win64-shippable/opt: G7PBDrsGShGwVyiZ1TilJg + balrog-es-ES-linux-shippable/opt: TOhoBmxpQU-A24XEkglYGw + balrog-es-ES-linux64-shippable/opt: M8ETRj0JQBeyxj1gAEQ3zw + balrog-es-ES-macosx64-shippable/opt: P6n2qNm7R8yqNZ6kKL3TIA + balrog-es-ES-win32-shippable/opt: EbOmTbHtSJCZm7Xg06CRlQ + balrog-es-ES-win64-aarch64-shippable/opt: JddjCzUYQX-r5p7jKWTdwg + balrog-es-ES-win64-shippable/opt: IRHc0mvPSWumjveR5nahiw + balrog-es-MX-linux-shippable/opt: IM9QItMiQLyMzaemquB9aw + balrog-es-MX-linux64-shippable/opt: OBApgMgjQkuxJDpkE8D-zQ + balrog-es-MX-macosx64-shippable/opt: RVkN_vbLRf-Zc5cB8opsVw + balrog-es-MX-win32-shippable/opt: EmAMy76xQEeR9NOlubb8Qw + balrog-es-MX-win64-aarch64-shippable/opt: eH124JBNRLKCbaWvxlGQtQ + balrog-es-MX-win64-shippable/opt: FPsxY3hRSCeEDy8lbCJMsQ + balrog-et-linux-shippable/opt: Ls3w4JXKRCW4sz3mUAxoHw + balrog-et-linux64-shippable/opt: dD0oXxz6S0mt59qGsEZ7kw + balrog-et-macosx64-shippable/opt: drOcaoJEQk65fBYwQOvplA + balrog-et-win32-shippable/opt: Go_U6-QDR82zBlUm4sx_XA + balrog-et-win64-aarch64-shippable/opt: YOiYYeJVQlCO7DIrkWBlIQ + balrog-et-win64-shippable/opt: VUbEl7HaSzy_pot-8GpDeQ + balrog-eu-linux-shippable/opt: H8ww7K-2SzSRgS2RijJ6SQ + balrog-eu-linux64-shippable/opt: A9oxjVlUQMSF9yZJvjlTHg + balrog-eu-macosx64-shippable/opt: ceEz73TpSU6FBBu0Fo0fIw + balrog-eu-win32-shippable/opt: fFNAg-frSCCmdKeg-YXrzg + balrog-eu-win64-aarch64-shippable/opt: MWCPFz0PSbyjrSDtDgdjDQ + balrog-eu-win64-shippable/opt: aoxcHZz5T-eEdcVX2xTZ0w + balrog-fa-linux-shippable/opt: bvOYl1jyT1-SQKUQXPaJDQ + balrog-fa-linux64-shippable/opt: dLchtZcvQDq09_RvPVWmpg + balrog-fa-macosx64-shippable/opt: TGlebTn7RBKC-q_u8gNg_g + balrog-fa-win32-shippable/opt: Ar1c5AnZQlyue7EkeJshzQ + balrog-fa-win64-aarch64-shippable/opt: N709ZRghSUG5sWA-Ecad5Q + balrog-fa-win64-shippable/opt: LAdq5mgkQl6TKcDwnzWxRw + balrog-ff-linux-shippable/opt: DG3yh0tNQJGfROw6TY99UQ + balrog-ff-linux64-shippable/opt: IQGy9Z3BRdSKg-K07gG3PA + balrog-ff-macosx64-shippable/opt: L324FPrBQL-1mFQZNLKtaA + balrog-ff-win32-shippable/opt: eRtA3nT_RMWNK7bwpcmpTQ + balrog-ff-win64-aarch64-shippable/opt: SBHm9YHpSUy2BQgvBu4ykA + balrog-ff-win64-shippable/opt: MacBOqgfQ8ygfiCehlGgGg + balrog-fi-linux-shippable/opt: fJcVpRvLTXmOucLcv0yB8Q + balrog-fi-linux64-shippable/opt: EGXN-c9rTBO3OxfMkjIh0Q + balrog-fi-macosx64-shippable/opt: F5waYO1rS82NzvO-ggUiGQ + balrog-fi-win32-shippable/opt: RPxTl--BRV2KH10iBeBXGw + balrog-fi-win64-aarch64-shippable/opt: TyKN8OW-R-ifktWU3nwACA + balrog-fi-win64-shippable/opt: PW5WIv1oRGKbOIO0Hbyh8A + balrog-fr-linux-shippable/opt: ef9VA3wwQiKsb6VUUrhJQA + balrog-fr-linux64-shippable/opt: csAfvxXmQxCLYRKTMUGf7w + balrog-fr-macosx64-shippable/opt: UbUIf-M5TDuaH9vXxnKgpA + balrog-fr-win32-shippable/opt: fVuTdYMdS-mMtAfTZ4v0dw + balrog-fr-win64-aarch64-shippable/opt: XEaP9svoTEeIYKukgqYQ4A + balrog-fr-win64-shippable/opt: VlbJfOCKS3yw7hPpqTmE-A + balrog-fur-linux-shippable/opt: Ou93kAv0RC-THu2e7aVfzg + balrog-fur-linux64-shippable/opt: HyERvV7uTEuu337ymB31zg + balrog-fur-macosx64-shippable/opt: bO35axRmSh2DWHd377-Anw + balrog-fur-win32-shippable/opt: dv1_w6chSGyk-1FIkWfHxg + balrog-fur-win64-aarch64-shippable/opt: GGzaHoTsRbKN3h96XFmDVQ + balrog-fur-win64-shippable/opt: UAouiFfBQxeKoRBCVKtaMA + balrog-fy-NL-linux-shippable/opt: YyOgPQmcSo2x476h1gaVOQ + balrog-fy-NL-linux64-shippable/opt: CU1wJHiISjGUPRzc9WN7cg + balrog-fy-NL-macosx64-shippable/opt: LaOa97PKRHmSQmleaUMKRg + balrog-fy-NL-win32-shippable/opt: fS-sjUKbSbumZOwso2UYpw + balrog-fy-NL-win64-aarch64-shippable/opt: SBJAuBZjR-q3TuhvzXNPrg + balrog-fy-NL-win64-shippable/opt: Se9m_QlGSpSjRfkYdDPoxw + balrog-ga-IE-linux-shippable/opt: RVHrE1NJTmOLs8vlbMKB4Q + balrog-ga-IE-linux64-shippable/opt: MzdNTu_3Ss-mcOojSRb_hg + balrog-ga-IE-macosx64-shippable/opt: SrJDXCfQTLyfNpquLPo9kg + balrog-ga-IE-win32-shippable/opt: M6chz5xNRwGBSUW3Rexltw + balrog-ga-IE-win64-aarch64-shippable/opt: JR_ktWEsS3SBqdCE_AKK8A + balrog-ga-IE-win64-shippable/opt: fLfqi5lSSR2uHTFFYNMbzQ + balrog-gd-linux-shippable/opt: EeJN1I5ZSJmAdplPpsHilQ + balrog-gd-linux64-shippable/opt: Ed2x4_BXTDSF0CzjrxNw6A + balrog-gd-macosx64-shippable/opt: BAECuZKjQh2UJOYSBRzdHw + balrog-gd-win32-shippable/opt: fb4xXQfpT4Wzw6poUgFBig + balrog-gd-win64-aarch64-shippable/opt: ZgB1GGI1QsirUW28eMp7_g + balrog-gd-win64-shippable/opt: BdYj_BdyS4a-T6ZM9G8EMg + balrog-gl-linux-shippable/opt: dIX70gH8SqGerTyKtl2Q9Q + balrog-gl-linux64-shippable/opt: V2Yco_6kR4-Z6c4dwtiXNw + balrog-gl-macosx64-shippable/opt: JNz17gAnRcWvAOwC1aUjSQ + balrog-gl-win32-shippable/opt: Ulv3zvVgQ0ewCJ8MBmMWeg + balrog-gl-win64-aarch64-shippable/opt: FiWjDFeRQ-uelfmdEeP3Fw + balrog-gl-win64-shippable/opt: D-mLITu8SjKC9DNlKWsB4g + balrog-gn-linux-shippable/opt: GXv9obB5Rca-dJuDUd3VLA + balrog-gn-linux64-shippable/opt: cfZdoXvgTiy7p-C5wNwIYQ + balrog-gn-macosx64-shippable/opt: BOmNQCzNSoaw_pt7moSN8Q + balrog-gn-win32-shippable/opt: Gf1oK6l6RrW0ZUuPVXRzyQ + balrog-gn-win64-aarch64-shippable/opt: AxsQU0_LS42hlrrAIzrgVw + balrog-gn-win64-shippable/opt: HKLAdgXjR6yLEWHT9oLyag + balrog-gu-IN-linux-shippable/opt: HZ26VOe_SeSL-xYzzZrfHg + balrog-gu-IN-linux64-shippable/opt: AWc2bd9pTkivGRo5CLJkRA + balrog-gu-IN-macosx64-shippable/opt: TAMVAtLmSn-K6s_V62HwYw + balrog-gu-IN-win32-shippable/opt: UWLc0OEkSD2nMEMNVacGRw + balrog-gu-IN-win64-aarch64-shippable/opt: aBU_tKHBTg-aE5IxjWYPGQ + balrog-gu-IN-win64-shippable/opt: axGxYb0xSgOdcDefNprfbw + balrog-he-linux-shippable/opt: Euh9QqIXSXWfPz2MWXo42w + balrog-he-linux64-shippable/opt: D0FyHtouQNO1mHu4rAh3eg + balrog-he-macosx64-shippable/opt: Qbps8sVxRi-HdQzJnN1upQ + balrog-he-win32-shippable/opt: euVXhUiQTmejcwuDwMk22w + balrog-he-win64-aarch64-shippable/opt: cb9PPicHTneSb0fDUvypEQ + balrog-he-win64-shippable/opt: NGVex6t6QjKnA1J8-lL-kA + balrog-hi-IN-linux-shippable/opt: IWYw3EncR3y5VVF_veG0Qg + balrog-hi-IN-linux64-shippable/opt: Bvd4LlzrRrCvrK4c3Uvn0Q + balrog-hi-IN-macosx64-shippable/opt: X5jzw3aYSOCdAzt9s7Qkjw + balrog-hi-IN-win32-shippable/opt: az4TjoXZSWmdp1lAM3iVfA + balrog-hi-IN-win64-aarch64-shippable/opt: Y-VFSgR1TkWnD-BBhs67jQ + balrog-hi-IN-win64-shippable/opt: HFabUD_zQCGom88YQnZ10w + balrog-hr-linux-shippable/opt: eEaJQDC1RzGGjwYjzidSYw + balrog-hr-linux64-shippable/opt: FFtYNwVXRN6B4wbZnDaqgA + balrog-hr-macosx64-shippable/opt: QcPDbADBShKEZyGPl2HWQw + balrog-hr-win32-shippable/opt: FIMUPgQ8Ski7Qe2-0sgnGQ + balrog-hr-win64-aarch64-shippable/opt: e8CVq1-NSQag4r1BVcjSsw + balrog-hr-win64-shippable/opt: GegYukRfStqGQ5_aliIOcA + balrog-hsb-linux-shippable/opt: PdqI9N2MSqaccxrxhDTFwQ + balrog-hsb-linux64-shippable/opt: PiSEd4leTpuB7HrodaN-Uw + balrog-hsb-macosx64-shippable/opt: CeX4CTKVRGCBT3ICAxIIAw + balrog-hsb-win32-shippable/opt: UCz2rIKcQbOzv4bNuglQ6w + balrog-hsb-win64-aarch64-shippable/opt: IJsYwvnxRu6mQ37ZWF-_Bw + balrog-hsb-win64-shippable/opt: fUs7vLEzTgGqMo1BIV5xiA + balrog-hu-linux-shippable/opt: PfP-29e5TCqfHHEqpuQ25g + balrog-hu-linux64-shippable/opt: b5atAeZvS0iWdIJmHacAQQ + balrog-hu-macosx64-shippable/opt: NGZxW36NTrySMvV7zXYveA + balrog-hu-win32-shippable/opt: XBELCwEXQjOFSxS9ZSqeKQ + balrog-hu-win64-aarch64-shippable/opt: OCO2Cs4hTlejkTHyhNSSsw + balrog-hu-win64-shippable/opt: L0-cVxbLQgiiQ-MHwgo9Mw + balrog-hy-AM-linux-shippable/opt: ORRL7HEfTbKjPm8xYgFl2w + balrog-hy-AM-linux64-shippable/opt: bDfWp9maRv2EYJfz-ahZKg + balrog-hy-AM-macosx64-shippable/opt: KadkTd58QSqPSpHV-D9Obw + balrog-hy-AM-win32-shippable/opt: JhK9b7s9RDWbwxBVDewMyQ + balrog-hy-AM-win64-aarch64-shippable/opt: LheO3KIHRv6yIEksuzPOBA + balrog-hy-AM-win64-shippable/opt: DNJplATrROGZbHEtZlremw + balrog-ia-linux-shippable/opt: IpeDMW0QTbWQYlv6C6erkg + balrog-ia-linux64-shippable/opt: ZtRCr5-MSzWnydY4rNM9fw + balrog-ia-macosx64-shippable/opt: Wp7Ldx_JS3OC95SCJ9KK_g + balrog-ia-win32-shippable/opt: eHShpYltQnaHnt3oueVpvg + balrog-ia-win64-aarch64-shippable/opt: FDkr-EkAQne62OgRczDDAA + balrog-ia-win64-shippable/opt: MXePXBY7QP-zlwnMBvp-VQ + balrog-id-linux-shippable/opt: PJDxs2-hSAeMNR1E74O7NQ + balrog-id-linux64-shippable/opt: cSTkkEmPQniSwT6rlGwh1Q + balrog-id-macosx64-shippable/opt: JBof2h8MSUmrT-r5RkKWoQ + balrog-id-win32-shippable/opt: FtuBQKTzSTeEdf6SX3JbKA + balrog-id-win64-aarch64-shippable/opt: LzqrjSv-TG-dmX5ilcLYDA + balrog-id-win64-shippable/opt: TV0MRu9jQmW8VIZW8cb2kA + balrog-is-linux-shippable/opt: PSpIg5guQWu4oK_ACaBUgA + balrog-is-linux64-shippable/opt: c9VvvgCHTcK8I5tLss8v5w + balrog-is-macosx64-shippable/opt: dZCM_388Rd-wXyTzQHbeNQ + balrog-is-win32-shippable/opt: FoX3N7bYRsS2E_5zMEPwZQ + balrog-is-win64-aarch64-shippable/opt: dhT9OurLS4yGwD0k-Od48w + balrog-is-win64-shippable/opt: ICASvV3DRpqSqxvakMSaJg + balrog-it-linux-shippable/opt: Mq1nq5zDR8S-nLXFdJf61Q + balrog-it-linux64-shippable/opt: bkuqvUASQeefyMLGlU1YfA + balrog-it-macosx64-shippable/opt: Gvb1XP-DQS2GB1leKf04ng + balrog-it-win32-shippable/opt: eS-PxP4OTEudluJaohti2Q + balrog-it-win64-aarch64-shippable/opt: Ya6-nKe1QaONgPYPPBnQiA + balrog-it-win64-shippable/opt: JbB2y2SJR_ycnKef7G1fMQ + balrog-ja-JP-mac-macosx64-shippable/opt: ZCUlW1IkRaSP5FWB2xsetQ + balrog-ja-linux-shippable/opt: VMlhmGkoQlCa5iij3GEm2w + balrog-ja-linux64-shippable/opt: IdPRXrj9QiirWqta6STHbA + balrog-ja-win32-shippable/opt: Vg7oD74XQAmpdpyq0kOGuA + balrog-ja-win64-aarch64-shippable/opt: dMKtTGqsRp2YwXcMocfluQ + balrog-ja-win64-shippable/opt: fHoum3YeSA2hcxwzbQZr2Q + balrog-ka-linux-shippable/opt: Qu8e3DAkTVS2VngIcHYXPA + balrog-ka-linux64-shippable/opt: VrORG8EfRf-963CZ3DV6Dw + balrog-ka-macosx64-shippable/opt: Q8uiZJ-4Ta2GaDjl_JVMSw + balrog-ka-win32-shippable/opt: OrijHqRNSX6vrvmGfXs6Nw + balrog-ka-win64-aarch64-shippable/opt: SZpuN87ORsiDstnksUzYTQ + balrog-ka-win64-shippable/opt: BTbzh-W4RU2v2fRpOzhTiQ + balrog-kab-linux-shippable/opt: Vr2tLsT-QXa_szG00FLHGg + balrog-kab-linux64-shippable/opt: AbxbAYK7QJmbREMKzgHcsQ + balrog-kab-macosx64-shippable/opt: QYvbm-rHSS-Ve6oq6Wuwhw + balrog-kab-win32-shippable/opt: MSXzawccSZWQEIrUlMBy1w + balrog-kab-win64-aarch64-shippable/opt: X2SfJxWtSGCvdZA0Ggz36Q + balrog-kab-win64-shippable/opt: bevEvnzfRmmyhZtFpCSKgw + balrog-kk-linux-shippable/opt: YPC6ZoQjTA2dMVHsBAnx0w + balrog-kk-linux64-shippable/opt: QPM6zMIhTEajI5m0veIcqg + balrog-kk-macosx64-shippable/opt: VmP8XyUmR0as6xj3N4H7yA + balrog-kk-win32-shippable/opt: ILi8Qk2PStaWlJXRQXeg8Q + balrog-kk-win64-aarch64-shippable/opt: MfNEU4GqSY2kbEJqmbsOdQ + balrog-kk-win64-shippable/opt: fp73gFTiTGm535m1W_WQ_g + balrog-km-linux-shippable/opt: HR7cKqzFQj6hq7yEiogYUQ + balrog-km-linux64-shippable/opt: IXNJkKuASmyQSn1tHuUgpg + balrog-km-macosx64-shippable/opt: fveXjojnQMa-KecAu4RPPg + balrog-km-win32-shippable/opt: KkSXMGaZSe6KWAuuMepVcQ + balrog-km-win64-aarch64-shippable/opt: RTHhq2I9S1i4FxzYTexqgA + balrog-km-win64-shippable/opt: F78P4JxyTdCet8J1xNsHiw + balrog-kn-linux-shippable/opt: FQPHXa7xTdOZgrA6YZ5eqg + balrog-kn-linux64-shippable/opt: TLfTYvhsT0qTG-TPlu8q7w + balrog-kn-macosx64-shippable/opt: eBdA83-FQT6dNyuyhd4ZpQ + balrog-kn-win32-shippable/opt: bHQWOpL8TzuSg5XEp7R5zg + balrog-kn-win64-aarch64-shippable/opt: erfZFhYETNilAC89Nz1g6w + balrog-kn-win64-shippable/opt: MyzUglMCTD2wuiHVZPnd9Q + balrog-ko-linux-shippable/opt: etNTiFw6Sv6vRuOVbi8kng + balrog-ko-linux64-shippable/opt: bHlV5hojQeC6sndBEd886A + balrog-ko-macosx64-shippable/opt: b-f_rxoIRiepFMCYMiDEaw + balrog-ko-win32-shippable/opt: PhN1W4A6Q_aSE5MkrRFcpQ + balrog-ko-win64-aarch64-shippable/opt: UiLWWzIjRTuCZFSZPoo2Eg + balrog-ko-win64-shippable/opt: bIEq5fMFSIeLvsebKNR3pA + balrog-lij-linux-shippable/opt: Srg2u_hpSYi7SGQixnf5xA + balrog-lij-linux64-shippable/opt: JjmSRChQQG-VDlgrPNAR7w + balrog-lij-macosx64-shippable/opt: Gjph0bfPT7-NZJxnzImBjQ + balrog-lij-win32-shippable/opt: efJqtHMGQBuvtiSHICvs1Q + balrog-lij-win64-aarch64-shippable/opt: Cg3zU8kZQ9WvviE3ZwCHsg + balrog-lij-win64-shippable/opt: V-TRPdGeSYGQwYM7AYyypQ + balrog-linux-shippable/opt: OJiIxRnLQaaf5VwxIWOAgw + balrog-linux64-shippable/opt: CbOT0fFtTmeb6XKyj0q_Ow + balrog-lt-linux-shippable/opt: Liy48jRjTgCYIn68QJtkyg + balrog-lt-linux64-shippable/opt: GZU6zoIoQluTOJTtwZdtqg + balrog-lt-macosx64-shippable/opt: X6ql48dWQCCqid2QJLOQkQ + balrog-lt-win32-shippable/opt: Gihd1h4WTleHQBPrLtq-AA + balrog-lt-win64-aarch64-shippable/opt: e-X4ZDp1RUKYE5M_y_qX-w + balrog-lt-win64-shippable/opt: GeQvwES-TRKppF4TFVTjrg + balrog-lv-linux-shippable/opt: XKg1JTaUR2Of4dDCOJaXxg + balrog-lv-linux64-shippable/opt: SLW-CggYTNWMP6Hwd4QVwQ + balrog-lv-macosx64-shippable/opt: WJFnbpYtSTmDWij9T7v6KA + balrog-lv-win32-shippable/opt: NJ6os0VgQyqNoVyQEmVWtw + balrog-lv-win64-aarch64-shippable/opt: fpa_5HntS9uhdMQdTbemuw + balrog-lv-win64-shippable/opt: fS5KLx3rROqTm_nZtpVReg + balrog-macosx64-shippable/opt: au5SyEP0Th-Utmw9KRYJIA + balrog-mk-linux-shippable/opt: I6MdkoANSNCdOJzI70_Mjg + balrog-mk-linux64-shippable/opt: UMS8SgOyQRiyIYLV4Rh66Q + balrog-mk-macosx64-shippable/opt: C8Ku2PITQZ6vNaP24LiN8Q + balrog-mk-win32-shippable/opt: ZPfkMfGqQgqnUJybm48iWA + balrog-mk-win64-aarch64-shippable/opt: SW4NLr4-S-apxWo0LbQJgg + balrog-mk-win64-shippable/opt: RZFfKhvaTAWdZCRp-7Ay1A + balrog-mr-linux-shippable/opt: cNRMxpl-Ryyb90VFEatXHQ + balrog-mr-linux64-shippable/opt: dL9urDlxQcumBXTOM__pWQ + balrog-mr-macosx64-shippable/opt: Umztz77XSPeog7lzMMpJAw + balrog-mr-win32-shippable/opt: PG5_Tgc1R2G-687cmVllhg + balrog-mr-win64-aarch64-shippable/opt: d2nFq3vWQ_uzUxgREq3zmg + balrog-mr-win64-shippable/opt: HUKiGsxSR7ODHg8ak5HwNQ + balrog-ms-linux-shippable/opt: K5J1hXZyTnuiuC54TlDc2Q + balrog-ms-linux64-shippable/opt: KEt_dMS7SPesrt3WBi_yYg + balrog-ms-macosx64-shippable/opt: QIH7SiGfQM-LVLGBQMmkdg + balrog-ms-win32-shippable/opt: JUZHIt55RYaJ8DwKm8OGew + balrog-ms-win64-aarch64-shippable/opt: S4bB7SBJR0-gH79l4yfdbQ + balrog-ms-win64-shippable/opt: eBldxxDBRCKALWUz7VkAsw + balrog-my-linux-shippable/opt: dXn07nkZRGqXf4LTFy5yLw + balrog-my-linux64-shippable/opt: AL_jDJRGQF-1WlPMOfod2Q + balrog-my-macosx64-shippable/opt: XZ_pYF7DQq2vbtNx2SvnMg + balrog-my-win32-shippable/opt: bge34eRUQgSq9jCOG2cHow + balrog-my-win64-aarch64-shippable/opt: JLAgpC8xSYqRFPsHvj_KXw + balrog-my-win64-shippable/opt: FN2cTuWIR0GlrtQ7Bx4qYA + balrog-nb-NO-linux-shippable/opt: GK6hNG7WS7iyxjRmqeh_wQ + balrog-nb-NO-linux64-shippable/opt: OLtFior7TVepUQpBNyVvsA + balrog-nb-NO-macosx64-shippable/opt: NRzJ3WMmRRink4_7uJHjpw + balrog-nb-NO-win32-shippable/opt: Xrm_mLaoTHShd0w_K5dQsg + balrog-nb-NO-win64-aarch64-shippable/opt: MHjLLfUKS82YClwPW0nZUA + balrog-nb-NO-win64-shippable/opt: C3nhhLSESmKKMGb2QP6x_w + balrog-ne-NP-linux-shippable/opt: QOzkU3LkQCSpJ1GhLUjkww + balrog-ne-NP-linux64-shippable/opt: FnNUoBDdT5yHMmY7bkVGdg + balrog-ne-NP-macosx64-shippable/opt: GSV1xdG9RsKBJexHCZxWeA + balrog-ne-NP-win32-shippable/opt: W72cX3y3QPCeORFuMGKdBA + balrog-ne-NP-win64-aarch64-shippable/opt: bpx_qV0HTeqk9BeOSjUb9w + balrog-ne-NP-win64-shippable/opt: Zd2LR0SASSSzrkoOqhH1-w + balrog-nl-linux-shippable/opt: H3DZMmqvSvmCwWKmpvLXnA + balrog-nl-linux64-shippable/opt: G4uMUdhkTaq0Jh66ntCVmQ + balrog-nl-macosx64-shippable/opt: XKC_yGNsTL6uZDzuglnfhQ + balrog-nl-win32-shippable/opt: NDSDNcKqTl2-1qX38h9Y7Q + balrog-nl-win64-aarch64-shippable/opt: QVDgazeaT46Z1AiOHYMjnQ + balrog-nl-win64-shippable/opt: L1mtMP8GQYGKiDNvgSiBDA + balrog-nn-NO-linux-shippable/opt: FMo0CNDXSFyFXNO683pV3g + balrog-nn-NO-linux64-shippable/opt: JNFPyGNDT-CNvTO5rNM1iw + balrog-nn-NO-macosx64-shippable/opt: d1NrTPU9SMqjoYgnjq2eIw + balrog-nn-NO-win32-shippable/opt: ZPAYi9vVTg-PuAIhA7A_VQ + balrog-nn-NO-win64-aarch64-shippable/opt: bQwtxbiQTyGP_0jkSrxw7Q + balrog-nn-NO-win64-shippable/opt: DuKPAruSRCGOcJWiljblIw + balrog-oc-linux-shippable/opt: XkOWbKEKTG2i4WTyCZH40g + balrog-oc-linux64-shippable/opt: NgWQlEDyQQCpslmdpS9rXA + balrog-oc-macosx64-shippable/opt: UtOCicN8QMCA3yUU4EaOMQ + balrog-oc-win32-shippable/opt: HahAmq8OQLuLl8wBRsbHRQ + balrog-oc-win64-aarch64-shippable/opt: SMSoEtHSQuSRYpg5oPmaSw + balrog-oc-win64-shippable/opt: cqv2k4B-T36QTSVDU0eU8w + balrog-pa-IN-linux-shippable/opt: JtVKf5hCSt2hYXbEGdIquA + balrog-pa-IN-linux64-shippable/opt: ZokoSB7-TgG9ifYEqgJw6A + balrog-pa-IN-macosx64-shippable/opt: ImzXkANxR1uPztI641CB0g + balrog-pa-IN-win32-shippable/opt: OyMncRhqRnSSDaEDhCB49g + balrog-pa-IN-win64-aarch64-shippable/opt: JeJCbL8qRY2o-7NYWU7Uxg + balrog-pa-IN-win64-shippable/opt: JeHR2AM2SbiSSi3YacRvtw + balrog-pl-linux-shippable/opt: OnJ92WcJTiG_nIfwSWheWw + balrog-pl-linux64-shippable/opt: CrAyJ7P0QpOVH8QM81GnIQ + balrog-pl-macosx64-shippable/opt: FKL93aGHTCOaUPd2-j1mwA + balrog-pl-win32-shippable/opt: RPm_2pndQoGjvmAfK85Gig + balrog-pl-win64-aarch64-shippable/opt: bLTnkIB3RDO58mUpBJT46w + balrog-pl-win64-shippable/opt: Di3-j90LR5GhyhTJ0fE3hg + balrog-pt-BR-linux-shippable/opt: GBao86EpRg-KkutXjkjmwA + balrog-pt-BR-linux64-shippable/opt: GXCiWdjZRjaIQpJPpZ9eYw + balrog-pt-BR-macosx64-shippable/opt: JN-VMjZtS0q8jq3cnk3Bmw + balrog-pt-BR-win32-shippable/opt: IQ2SGATZT0eOF2wzBzv8MQ + balrog-pt-BR-win64-aarch64-shippable/opt: fQzD0A_2RxK886C8528v4Q + balrog-pt-BR-win64-shippable/opt: ado-uPBKQvemhM_UcdhtDA + balrog-pt-PT-linux-shippable/opt: dQLFjtlARny3Rh4B2uRRXQ + balrog-pt-PT-linux64-shippable/opt: ZC15Sw7RQtuW8oq38LCd1w + balrog-pt-PT-macosx64-shippable/opt: KwnbICbRTwGErpPWgxYRrA + balrog-pt-PT-win32-shippable/opt: aD5VOFobTUyNibq4RyevSQ + balrog-pt-PT-win64-aarch64-shippable/opt: OruQ73EpTtqpFsvM6Vc8Zw + balrog-pt-PT-win64-shippable/opt: F6l2gnUEQTKk4pxIBvvBoA + balrog-rm-linux-shippable/opt: MKpmH0ryRtCjldUGBRVg1w + balrog-rm-linux64-shippable/opt: POVn--7jQ42m0YcVyE0h8Q + balrog-rm-macosx64-shippable/opt: PlhkfoAxQ-S3pC4i9Is3RQ + balrog-rm-win32-shippable/opt: T1t2k2tMTmmpD1P0O1n5EQ + balrog-rm-win64-aarch64-shippable/opt: Nl27qwSUQjSNl0D79g8fVw + balrog-rm-win64-shippable/opt: WAfhIkZUQT6FJo-HOrNXmg + balrog-ro-linux-shippable/opt: a8mdEiwMTOq3A0pegypjJA + balrog-ro-linux64-shippable/opt: FKdEFsIpThqXZwaJILRDDg + balrog-ro-macosx64-shippable/opt: EcAVTOSqQb6a7_ipuEoeMA + balrog-ro-win32-shippable/opt: fX65mzoLTMmyJ8J6_UdS3A + balrog-ro-win64-aarch64-shippable/opt: AzYssqecROmkhMyZnJEWkQ + balrog-ro-win64-shippable/opt: fA5ngCdmT6G1S466MyslHg + balrog-ru-linux-shippable/opt: Br9cAygDTGCe3aQi7Hm8kQ + balrog-ru-linux64-shippable/opt: bzNX7JmZQla_GVYNjbK3tQ + balrog-ru-macosx64-shippable/opt: L5Ag8xfxSM6h7lhvL05zog + balrog-ru-win32-shippable/opt: JFbcL0wIQIqff0xWFH8Ipg + balrog-ru-win64-aarch64-shippable/opt: HbXCB0HcTqOOmWiXWEgj0A + balrog-ru-win64-shippable/opt: TT4zEfPCQm6zqruSKzXYbg + balrog-sc-linux-shippable/opt: V-r32T1VS963QfVDEVkBYQ + balrog-sc-linux64-shippable/opt: RZ9I3eM3QWGgii5JQKMNWA + balrog-sc-macosx64-shippable/opt: O5yujMX7T2us_J3HbWCm3w + balrog-sc-win32-shippable/opt: LuK4ALADRtiY7pyaxx8FfQ + balrog-sc-win64-aarch64-shippable/opt: frJZ93htQOu27xC7FIPxgg + balrog-sc-win64-shippable/opt: COFy5KytTMGtO_X_IoKfGA + balrog-sco-linux-shippable/opt: F38SevyzQJ-HcOXN1IW-5g + balrog-sco-linux64-shippable/opt: Ef-wOKKBS36G5TKhshw9kQ + balrog-sco-macosx64-shippable/opt: VjdxvT4DSeebXSI9t1gazA + balrog-sco-win32-shippable/opt: WQpDwBrzTCCkSAAtAbxN0A + balrog-sco-win64-aarch64-shippable/opt: QbRjLt2xTFa-mktSJNTCQg + balrog-sco-win64-shippable/opt: NnMOXv_RSGKlZ6sJWJkc5A + balrog-si-linux-shippable/opt: NaYZnRZmSziC_ZJGV2vt2w + balrog-si-linux64-shippable/opt: aGw1b7HqTwGYMm0tyG4W0A + balrog-si-macosx64-shippable/opt: TxoUZvf2QIC7vwZhn6wtvQ + balrog-si-win32-shippable/opt: Gw4nfl58TDO-WNDVNFbUvg + balrog-si-win64-aarch64-shippable/opt: G0eigxSkRsiE1FaSIZREew + balrog-si-win64-shippable/opt: LD6Nh06LTVeKeAJjRkvUvg + balrog-sk-linux-shippable/opt: akpQegBORbq-1NU0mGyL-Q + balrog-sk-linux64-shippable/opt: K-i2ZvGtRy2A1zASaDiojA + balrog-sk-macosx64-shippable/opt: QRIbI4UxSeGBR5rhSZdulA + balrog-sk-win32-shippable/opt: Ww2Hph0pScugkZ7rwagdcw + balrog-sk-win64-aarch64-shippable/opt: OmosLvLlT8-tHRhbALsOng + balrog-sk-win64-shippable/opt: QuU223DITGG5ecGQ0fF5jg + balrog-sl-linux-shippable/opt: Q8h7E1MDQHSs6m_caHlJEg + balrog-sl-linux64-shippable/opt: RRV1I461R5GKvMsaSWyjnA + balrog-sl-macosx64-shippable/opt: EOV4J1e2QyigIMwWPrbZxQ + balrog-sl-win32-shippable/opt: Q4eoBNxzS7iuNABYZbJo_Q + balrog-sl-win64-aarch64-shippable/opt: GM_cslodSPSnU8RDzNhVpg + balrog-sl-win64-shippable/opt: PHC31OhMQWK3fKWFoNg6xQ + balrog-son-linux-shippable/opt: IhZOgtUjSnCGXyk4Zj-QBA + balrog-son-linux64-shippable/opt: Km49e-8SSD6txxh88KbHlQ + balrog-son-macosx64-shippable/opt: EZBKX5zxQ3ObvGQ2KKr94A + balrog-son-win32-shippable/opt: ZL8tQYsISeWIPc13NzjJjA + balrog-son-win64-aarch64-shippable/opt: cyDhBh2BTJGBGknh-2uQIQ + balrog-son-win64-shippable/opt: JnUiQf9NReixnew80fauPw + balrog-sq-linux-shippable/opt: dGI_eKBLQAiy34kqHkF6eg + balrog-sq-linux64-shippable/opt: LEVuemJtRoWtwFa6g--hKg + balrog-sq-macosx64-shippable/opt: Fz5cQMIsTEW0zLbhHgzzkw + balrog-sq-win32-shippable/opt: fjexGxeNT9KfEc3CUL9fCw + balrog-sq-win64-aarch64-shippable/opt: eymSUS8eRoO-fFjJijVZcw + balrog-sq-win64-shippable/opt: YY7QTRmfSJKB9ppcYX4N3A + balrog-sr-linux-shippable/opt: TeLwWkx9Rbyg9Fj1c1Uvlg + balrog-sr-linux64-shippable/opt: GiEOdXjOT3Wfgsgo2I4wrw + balrog-sr-macosx64-shippable/opt: UJpdmUv3Q-i911VTDu9Gug + balrog-sr-win32-shippable/opt: bMaEHPjZRiCGVLnSdm_jFg + balrog-sr-win64-aarch64-shippable/opt: NBBus8XPS6O9FUaSKHarqg + balrog-sr-win64-shippable/opt: B7kikT1-SGWkXLZVYNUCnw + balrog-sv-SE-linux-shippable/opt: YMMJff6iQqmFK_GeIYACkg + balrog-sv-SE-linux64-shippable/opt: BWl8nu-5QOGKZUt-xiqZ2w + balrog-sv-SE-macosx64-shippable/opt: QBhiOYiyRVqIK8s8q3RVfQ + balrog-sv-SE-win32-shippable/opt: OWdKAVr8Rm6e1iudn-giRg + balrog-sv-SE-win64-aarch64-shippable/opt: Va3R_jFTRgKznxeFt6EOfg + balrog-sv-SE-win64-shippable/opt: U4NU3dCUR4mAL2EIGGUNSw + balrog-szl-linux-shippable/opt: IIbtT9wKRYWRsHM42UiOZA + balrog-szl-linux64-shippable/opt: DeczHkf3RRaPmH1yU_O_cQ + balrog-szl-macosx64-shippable/opt: Pz1IDR9rRrCLdGFQQtpIUg + balrog-szl-win32-shippable/opt: DVuFaN4OTCa_V8d5uxS-1Q + balrog-szl-win64-aarch64-shippable/opt: QsXOg3eySaOb78x3O9juCA + balrog-szl-win64-shippable/opt: Y92EFp1JSOeNOIAO5KOyAA + balrog-ta-linux-shippable/opt: S3eOWfrcTFe_oeWUEpaPrg + balrog-ta-linux64-shippable/opt: U_mwIq5aSlWz_2ufLjC1RA + balrog-ta-macosx64-shippable/opt: SMryqkpJT5Wh4eFClaq2ig + balrog-ta-win32-shippable/opt: ZLDoDAbRT-OumjR6_9s9SQ + balrog-ta-win64-aarch64-shippable/opt: FJJxAA27TzymzxospEMaAQ + balrog-ta-win64-shippable/opt: SbkOT-FmRAahqgggLtRrvA + balrog-te-linux-shippable/opt: YY-WIjcnQAWNGf0mSepMew + balrog-te-linux64-shippable/opt: EGN34ynJS7qQomWen6G9rw + balrog-te-macosx64-shippable/opt: Mm-f0NvpTjmy4BqKgNRzBQ + balrog-te-win32-shippable/opt: cEF_7_3fSXKrQs_FP_RUcw + balrog-te-win64-aarch64-shippable/opt: bYDSJxVQR6CBaQLz_uQboA + balrog-te-win64-shippable/opt: GVi9Qm9pQfez2wKCdcZRAg + balrog-tg-linux-shippable/opt: b1n31cFeQEuLqW2qaemVqA + balrog-tg-linux64-shippable/opt: CU4y-McjQA-evr5Y2YvjjQ + balrog-tg-macosx64-shippable/opt: GlgBkAHkS1OdZLbLl1Al5w + balrog-tg-win32-shippable/opt: aOhZ_iVwT7eEGwgIyT-kaw + balrog-tg-win64-aarch64-shippable/opt: WVqMEfkDS9uS7F99Nx2VpQ + balrog-tg-win64-shippable/opt: SRWIGvtHQumSq4OZfIAtpA + balrog-th-linux-shippable/opt: XXU_HqO8TbSCZHeMk3veIw + balrog-th-linux64-shippable/opt: OGcNDOe0TZej8fOyrEonCQ + balrog-th-macosx64-shippable/opt: NNSxBsj5RPerJ5fiHbytFQ + balrog-th-win32-shippable/opt: SstMQcqsQ3qOk31yhvFCxA + balrog-th-win64-aarch64-shippable/opt: RRMKfO24Sce7-nGwGBM0Lg + balrog-th-win64-shippable/opt: Fel3P4TvRVCEwre_Ht5w4w + balrog-tl-linux-shippable/opt: MKlZgyK2RX-9n1VsoHD5gQ + balrog-tl-linux64-shippable/opt: cSv1z3lKSUGlpsdRqOVM7g + balrog-tl-macosx64-shippable/opt: JrNheFfjSoK_HzPwT24w_A + balrog-tl-win32-shippable/opt: KGe6WghmS4Orc7MS6Ioquw + balrog-tl-win64-aarch64-shippable/opt: LIaE6zZlSCuenmAlifsZlA + balrog-tl-win64-shippable/opt: BysbfLOKQI2hbyWbnbYS0A + balrog-tr-linux-shippable/opt: Td53-w8aQzOktPaElTWKxQ + balrog-tr-linux64-shippable/opt: P9i7_UElSwyj7skrN206yg + balrog-tr-macosx64-shippable/opt: CvZdHyO8Twy39_kSZqM8kA + balrog-tr-win32-shippable/opt: Ptl5BwRDTVWdSkbOoCMR7A + balrog-tr-win64-aarch64-shippable/opt: T9mbl_1zQXilB6sh56YzKw + balrog-tr-win64-shippable/opt: TofOISkWRICeo_D4n7iS1Q + balrog-trs-linux-shippable/opt: cR6egttgQnSNSGP79GpcLg + balrog-trs-linux64-shippable/opt: a1YUr_yWSIaEcQlWpPKv7g + balrog-trs-macosx64-shippable/opt: GEhOmzR7SC2NjrkmRvkkWg + balrog-trs-win32-shippable/opt: XM4PMdKbRUupYnwAQSoj5A + balrog-trs-win64-aarch64-shippable/opt: LZkcud5FTWKL7teuzFG79A + balrog-trs-win64-shippable/opt: OIG41A4iT86N_5wN-rZeLw + balrog-uk-linux-shippable/opt: AbwqYXufTCSleq7lZvkAKg + balrog-uk-linux64-shippable/opt: DiR-ytaFQt-RX2Zi_mHvHA + balrog-uk-macosx64-shippable/opt: MW_2VR8iR6mhSavbevSWZQ + balrog-uk-win32-shippable/opt: fcq28oJRSjuQdZPeiuF1mg + balrog-uk-win64-aarch64-shippable/opt: e3PTv-OsT7eT9plk7LJFUQ + balrog-uk-win64-shippable/opt: YehNWiZvQZ20qjym1adbZQ + balrog-ur-linux-shippable/opt: KXOBz3K0S5qeu2vRNtyQzw + balrog-ur-linux64-shippable/opt: RLNSUt8mTeGP1zvYAtonAg + balrog-ur-macosx64-shippable/opt: NhH6UnjjQ7WJ9h0ZOf51Og + balrog-ur-win32-shippable/opt: IU2Da1HYTrqxP5WzVLWu7Q + balrog-ur-win64-aarch64-shippable/opt: Hp0mmhW9SwCBzBjAkuIGpA + balrog-ur-win64-shippable/opt: IUOpXTObSLCckAgN__4V7A + balrog-uz-linux-shippable/opt: bftjbFqiQUqdUla9QwR8Dg + balrog-uz-linux64-shippable/opt: U3OEqoMXTu2Q5uabjrT8dA + balrog-uz-macosx64-shippable/opt: XMNlEDXCT0uK4M-D3cRhFA + balrog-uz-win32-shippable/opt: CbvQeqFHSzqBCZxWdX1xAg + balrog-uz-win64-aarch64-shippable/opt: aTTofryvQ2aasFMXLFuv7w + balrog-uz-win64-shippable/opt: NxabXuPYS4-ae44CDd1sJA + balrog-vi-linux-shippable/opt: G-uCrUD5S9qoGAhDWRgRYQ + balrog-vi-linux64-shippable/opt: Ncy5pxA6R5aLlIN5qLcIGQ + balrog-vi-macosx64-shippable/opt: d1uCzWH2T0-LBwxeEIGkog + balrog-vi-win32-shippable/opt: FvY_0ohUQB2P1nKN_F6Oew + balrog-vi-win64-aarch64-shippable/opt: KNEYc6LDT6S5NXhjkQRZeA + balrog-vi-win64-shippable/opt: M2vDCQtnSv2yfVX6kh6rxg + balrog-win32-shippable/opt: AZ6KgP_oR-e7g0i_6kr26g + balrog-win64-aarch64-shippable/opt: HwH_hF7iR9msA9s8h_iTDg + balrog-win64-shippable/opt: OEZvnRolQ5yLlwKBoLN6Qg + balrog-xh-linux-shippable/opt: VJnJKfzsTCSS8IEpEqz1fg + balrog-xh-linux64-shippable/opt: Bnmu1HIeRmSFPZ92obirAA + balrog-xh-macosx64-shippable/opt: KdDRdnyoQNmvJftat4gmnQ + balrog-xh-win32-shippable/opt: ftl0x4bsTlC6bOJypTTqbw + balrog-xh-win64-aarch64-shippable/opt: apHfpWo8SdiRfEk3jkA4wQ + balrog-xh-win64-shippable/opt: HjnZgm-7QImlmgMMILQpxw + balrog-zh-CN-linux-shippable/opt: AGU03phQQyyCOefuNu5iog + balrog-zh-CN-linux64-shippable/opt: ZAPPTr_RQJaNaY_c3V_X4A + balrog-zh-CN-macosx64-shippable/opt: JqUYhvx8TX6qqb2V4vrw8Q + balrog-zh-CN-win32-shippable/opt: ZYq0TMKpQWWmXhqrENqRCg + balrog-zh-CN-win64-aarch64-shippable/opt: eCBIUj-0TbqlXdvKN8APtA + balrog-zh-CN-win64-shippable/opt: WSWZ6qlbSXSC8zNqnLYKJA + balrog-zh-TW-linux-shippable/opt: N9A6ix4vQ0SXzMNj82-9nA + balrog-zh-TW-linux64-shippable/opt: dk1QBknoS_SZnJXZplr9fA + balrog-zh-TW-macosx64-shippable/opt: TUHcNDSFSpOgp_z1rKtJJA + balrog-zh-TW-win32-shippable/opt: LwgBVdRwRKqMk0Ox8LA8fQ + balrog-zh-TW-win64-aarch64-shippable/opt: JP2VWZ0MS7ybs_wsGSFE2Q + balrog-zh-TW-win64-shippable/opt: J8RvUEKMSWO-yd8V7nUrtg + beetmover-checksums-ach-linux-shippable/opt: MrJKYX_CTTq0r1udasryRA + beetmover-checksums-ach-linux64-shippable/opt: WTldtZ8PRoeLUY_uGcL8Hg + beetmover-checksums-ach-macosx64-shippable/opt: NpcX-l8FS-uhzT7eMx7YdQ + beetmover-checksums-ach-win32-shippable/opt: PtqjvSb8RZSGMLE0jTdQTA + beetmover-checksums-ach-win64-aarch64-shippable/opt: X9j3OeeATiSQuty3hewdag + beetmover-checksums-ach-win64-shippable/opt: GqF1hgxvSySU0Q5SZmI32Q + beetmover-checksums-af-linux-shippable/opt: brCBaJTwTjq-OQr10S61SA + beetmover-checksums-af-linux64-shippable/opt: adegTjGVTaqn_IG5LJKX0Q + beetmover-checksums-af-macosx64-shippable/opt: fl4GBbDUT6-z7y1gmwkcOA + beetmover-checksums-af-win32-shippable/opt: aIG0dMhxT-moZJGIr_ipow + beetmover-checksums-af-win64-aarch64-shippable/opt: B7jCB8ZGQZmHWMmtKlWD7Q + beetmover-checksums-af-win64-shippable/opt: EfypTuxFRVmedICmlNPI4Q + beetmover-checksums-an-linux-shippable/opt: KqSIeIpyStCYJzR9ElT7qw + beetmover-checksums-an-linux64-shippable/opt: EXfkxmqUSZCg6DsZnJbM1Q + beetmover-checksums-an-macosx64-shippable/opt: IWGQIYGvSimri4kCsrVtnw + beetmover-checksums-an-win32-shippable/opt: M1P0MLoJSfCleW8h6_Otbg + beetmover-checksums-an-win64-aarch64-shippable/opt: BQuW0tr9SXSMWXvoV-FIxQ + beetmover-checksums-an-win64-shippable/opt: dWJJuLbOQzGHEpVHV55YAg + beetmover-checksums-ar-linux-shippable/opt: MMpKiN81QteCnVOcsR60SA + beetmover-checksums-ar-linux64-shippable/opt: e6Sn1R6lTP2aUb1geAKOxA + beetmover-checksums-ar-macosx64-shippable/opt: DwkmnhGlSzqyf4X5qjAYhw + beetmover-checksums-ar-win32-shippable/opt: Fm0ImCPvRu6XUg-dED89ag + beetmover-checksums-ar-win64-aarch64-shippable/opt: fDw4RUcpQ_G0Sr4GRSOrcA + beetmover-checksums-ar-win64-shippable/opt: BuhclKYXRVqSzKCvc1HNGA + beetmover-checksums-ast-linux-shippable/opt: bdhpSo1uS8eg0L_oBdOs3A + beetmover-checksums-ast-linux64-shippable/opt: R9z3Q6pVSQKORGDSuqj3Pw + beetmover-checksums-ast-macosx64-shippable/opt: c_FG8QumSKmhWyHtSd3T1w + beetmover-checksums-ast-win32-shippable/opt: HMWnonnERS2nDjYKTny60g + beetmover-checksums-ast-win64-aarch64-shippable/opt: DD_UNaSxTtqej6azdro89A + beetmover-checksums-ast-win64-shippable/opt: AQcJTHb8R1aweaPFbWUN-A + beetmover-checksums-az-linux-shippable/opt: bI3KdyCXQ9yIB1dJdYtKdg + beetmover-checksums-az-linux64-shippable/opt: OM9a4ja0QKimT_awc8xGUg + beetmover-checksums-az-macosx64-shippable/opt: eCE-ucpyRVmk00JbLTsbOQ + beetmover-checksums-az-win32-shippable/opt: fFnAOz_RQTCSGYFJcZ1U9Q + beetmover-checksums-az-win64-aarch64-shippable/opt: IyrVLhi8QqehMCbJc2yrsQ + beetmover-checksums-az-win64-shippable/opt: fPhiqIWoTmeqURarXfmDbg + beetmover-checksums-be-linux-shippable/opt: ShzwgSwGSn-xBfN7-ebsOg + beetmover-checksums-be-linux64-shippable/opt: AEbBvp4gS6W6RQza538PQA + beetmover-checksums-be-macosx64-shippable/opt: SUmeasvARwuEoP7zuxhfXA + beetmover-checksums-be-win32-shippable/opt: IYRFe42CQxW_YwseXAmWLA + beetmover-checksums-be-win64-aarch64-shippable/opt: enR77MbNQlm-UG4PzLOthg + beetmover-checksums-be-win64-shippable/opt: Yj68Tx6aTEK7FNh4NWiPMQ + beetmover-checksums-bg-linux-shippable/opt: EWD2FELQR9WcFijjVYlNyA + beetmover-checksums-bg-linux64-shippable/opt: UAbGaJ1OSnK1D4LOgs0DOg + beetmover-checksums-bg-macosx64-shippable/opt: Y2UfGkpCTOO6fyVrY131iw + beetmover-checksums-bg-win32-shippable/opt: UO4yQ_7WTdS_isjIwDoOpg + beetmover-checksums-bg-win64-aarch64-shippable/opt: BAxrAMhyQUOoFwC2OeOFiw + beetmover-checksums-bg-win64-shippable/opt: KhIDa2bXRGqZR6miJ8LqLA + beetmover-checksums-bn-linux-shippable/opt: YuBJyj4aR-qM2O5-UrmgkA + beetmover-checksums-bn-linux64-shippable/opt: VXj5fmorQwCWRAnzdk8gyg + beetmover-checksums-bn-macosx64-shippable/opt: Wz9b8cP0QLWDrWj9xqCaYg + beetmover-checksums-bn-win32-shippable/opt: VVXO7Zx9Rt-6aCjlNg7Khg + beetmover-checksums-bn-win64-aarch64-shippable/opt: KT_W6niIT3q5lUpAQRYRtg + beetmover-checksums-bn-win64-shippable/opt: Zu5jm4-CRN-o9VcczgNpFw + beetmover-checksums-br-linux-shippable/opt: CFSJP4N6T0W98nZz7r7ZeQ + beetmover-checksums-br-linux64-shippable/opt: JoTQwirORfuW29Y54XBYpQ + beetmover-checksums-br-macosx64-shippable/opt: K-Q1kKFrQcKEITEV5e1LbQ + beetmover-checksums-br-win32-shippable/opt: Y-H71TRORkik9w03Nr2BpQ + beetmover-checksums-br-win64-aarch64-shippable/opt: f6X0UZgPTme2JZ3FPldNxw + beetmover-checksums-br-win64-shippable/opt: MfzZUw2JSlWZC0egS6luGw + beetmover-checksums-bs-linux-shippable/opt: HQ5pfHutRZqA3z_mm1z2FQ + beetmover-checksums-bs-linux64-shippable/opt: YKEecIx3SImnUwVkaYFaxQ + beetmover-checksums-bs-macosx64-shippable/opt: bpG4ebnyRvaYAEQ0X4yoVw + beetmover-checksums-bs-win32-shippable/opt: ZobEA0u2SauKV9kzHN-zIw + beetmover-checksums-bs-win64-aarch64-shippable/opt: f_uEeh_mTRuG3XlmH5k7Gg + beetmover-checksums-bs-win64-shippable/opt: PFw88E23SlCrHCleske2nw + beetmover-checksums-ca-linux-shippable/opt: IarUmqGgSfqQ_-L1lzTIGg + beetmover-checksums-ca-linux64-shippable/opt: G31bA2zXSDOqbPIHwup5Rw + beetmover-checksums-ca-macosx64-shippable/opt: fdxkSVY4SdmyDLBFV0fosA + beetmover-checksums-ca-valencia-linux-shippable/opt: BwyOTDnWSTGAcCM5Ui9DUg + beetmover-checksums-ca-valencia-linux64-shippable/opt: f8t6DZ1USfOGKyGIXMd3kw + beetmover-checksums-ca-valencia-macosx64-shippable/opt: exjQoKd7TbuH0rW837SYBQ + beetmover-checksums-ca-valencia-win32-shippable/opt: K_FobHvbQJGaHvv_FFQVuw + beetmover-checksums-ca-valencia-win64-aarch64-shippable/opt: C3M-M_zTQnaTiEkyJTysrg + beetmover-checksums-ca-valencia-win64-shippable/opt: JYG2kTcaRRWy0vtRrrNBQg + beetmover-checksums-ca-win32-shippable/opt: cZvZPIYwSwOokxBzJ41RXw + beetmover-checksums-ca-win64-aarch64-shippable/opt: Xv6WhJlkRjiRU7JJfl4xTQ + beetmover-checksums-ca-win64-shippable/opt: AW8VQpVaRGOeWKOwJZZ-4Q + beetmover-checksums-cak-linux-shippable/opt: LM3mflGZR-GKnRwI6Go3KA + beetmover-checksums-cak-linux64-shippable/opt: bPVj2Uh0Qxq9aaM27nAF_Q + beetmover-checksums-cak-macosx64-shippable/opt: eLqTTgTRRqOjYB6wOFV0-Q + beetmover-checksums-cak-win32-shippable/opt: foZXetSLQJitVVKjJwu-XQ + beetmover-checksums-cak-win64-aarch64-shippable/opt: JXSRBC79TvaGPtfT6BiWgQ + beetmover-checksums-cak-win64-shippable/opt: O24YiLADTqGdkvFqk6XXQQ + beetmover-checksums-cs-linux-shippable/opt: JRod0dChR0usdFY1DUcgBQ + beetmover-checksums-cs-linux64-shippable/opt: JWeUYFTiTZ-ThS5bdkukkQ + beetmover-checksums-cs-macosx64-shippable/opt: E0v2On4HSdWlHe5ddeat_w + beetmover-checksums-cs-win32-shippable/opt: Tfa5ARksR6iNGDRMdHTR1g + beetmover-checksums-cs-win64-aarch64-shippable/opt: FN6i0_WWQb6aW0GGwGrRdQ + beetmover-checksums-cs-win64-shippable/opt: fg1kctE6SmewCLs178MINw + beetmover-checksums-cy-linux-shippable/opt: Jw0Wz-onQbSP4XUcNLbEEg + beetmover-checksums-cy-linux64-shippable/opt: N_CExY_0SumxtyVew-XJvQ + beetmover-checksums-cy-macosx64-shippable/opt: S5_76ZSTRLyoQDkV6PSWag + beetmover-checksums-cy-win32-shippable/opt: AiMWh8HIQ1iV9Dc82cm3Lw + beetmover-checksums-cy-win64-aarch64-shippable/opt: LVBb8XnGR-ieJ7p_-hlOcw + beetmover-checksums-cy-win64-shippable/opt: dhV3ZU24Qf-YxoYgMgsYbg + beetmover-checksums-da-linux-shippable/opt: ShuzChBLTBqSYRoYxK9kkQ + beetmover-checksums-da-linux64-shippable/opt: Pg6d_5QxQF-DzO9xIGqKew + beetmover-checksums-da-macosx64-shippable/opt: IUiJzXK8QBulXbtyDeBpxQ + beetmover-checksums-da-win32-shippable/opt: U-5VRtrbSciZfLXP7TjS2g + beetmover-checksums-da-win64-aarch64-shippable/opt: CH2yosGOSAuBfAKClcw8oA + beetmover-checksums-da-win64-shippable/opt: fTQ1OInmQM2AxVW9pUZxiA + beetmover-checksums-de-linux-shippable/opt: V-837SZvRtOHEShO0_mDBw + beetmover-checksums-de-linux64-shippable/opt: M1SPqEM0Tiygo4vpYRcWxQ + beetmover-checksums-de-macosx64-shippable/opt: Lxmm7lxCTvqtFwZnuqmaFA + beetmover-checksums-de-win32-shippable/opt: dn52Cd5GTsaLNtB-1zVYMg + beetmover-checksums-de-win64-aarch64-shippable/opt: T9qC7vDbScelOyoSQT_Yig + beetmover-checksums-de-win64-shippable/opt: aSqcfGFOT3qE0lTt_38zuQ + beetmover-checksums-dsb-linux-shippable/opt: WWjIph1jQKyyZq3snS7-oA + beetmover-checksums-dsb-linux64-shippable/opt: cFzR3irQRbSnX-iDcQ3WBA + beetmover-checksums-dsb-macosx64-shippable/opt: GDFP7QXVTl25DLr9_dZ5ug + beetmover-checksums-dsb-win32-shippable/opt: eh7id8jnQfiqmn1osUQYUg + beetmover-checksums-dsb-win64-aarch64-shippable/opt: AdUxex-mTuO8F352--0eig + beetmover-checksums-dsb-win64-shippable/opt: f0oERKaGROSSOMNtTHYXwg + beetmover-checksums-el-linux-shippable/opt: GrYvfAW2RLmlQBz-Q7LQnQ + beetmover-checksums-el-linux64-shippable/opt: Bz8WB_2RTvGKx7tOAGrhGw + beetmover-checksums-el-macosx64-shippable/opt: E6DuPuAhSuaOaiFCUo-RVA + beetmover-checksums-el-win32-shippable/opt: OFi4EfDjQEafQDcHIWoAkQ + beetmover-checksums-el-win64-aarch64-shippable/opt: frzwwoCETWeU6oSxZ8xCbw + beetmover-checksums-el-win64-shippable/opt: WyQxHv9TSo6GReUvNQsDiA + beetmover-checksums-en-CA-linux-shippable/opt: PHAze0ZESgqLztDfW_taXw + beetmover-checksums-en-CA-linux64-shippable/opt: U8uYQVR2QbWsjlQtpvVZKg + beetmover-checksums-en-CA-macosx64-shippable/opt: To5qETFBSrevBUIReMMM3w + beetmover-checksums-en-CA-win32-shippable/opt: bzzqQB8yRFOtNmm4l2a_uQ + beetmover-checksums-en-CA-win64-aarch64-shippable/opt: FYlyhp7bTdWo1a4gvqJcYg + beetmover-checksums-en-CA-win64-shippable/opt: TLDtuI82TLq1mzjkdc7UpA + beetmover-checksums-en-GB-linux-shippable/opt: aEOQo01LSNK8DZM8-z91Uw + beetmover-checksums-en-GB-linux64-shippable/opt: TPICpA_8QxyBqk6ZVHfiDg + beetmover-checksums-en-GB-macosx64-shippable/opt: eAWIx5TbS42UZy4WbvpFDA + beetmover-checksums-en-GB-win32-shippable/opt: Sgvg5DPlRGq0ubN9qExQ-w + beetmover-checksums-en-GB-win64-aarch64-shippable/opt: dAjKNB9-QRWBKJtDZMgGiw + beetmover-checksums-en-GB-win64-shippable/opt: XVKVVyiUSsikUtIEcftJrw + beetmover-checksums-eo-linux-shippable/opt: ZxLUmTjgR2CzFUEwaWV1gg + beetmover-checksums-eo-linux64-shippable/opt: ACqio5FgRi-lMQISDKssGQ + beetmover-checksums-eo-macosx64-shippable/opt: DhYcjOdaTUGGe5NJrI9pyQ + beetmover-checksums-eo-win32-shippable/opt: BkbtQAfjQ-q4heuIanZ09g + beetmover-checksums-eo-win64-aarch64-shippable/opt: LMltXTBXSWSzb1WUdUbhBg + beetmover-checksums-eo-win64-shippable/opt: f-O_3QcfR2uZGkQ1hUQeLQ + beetmover-checksums-es-AR-linux-shippable/opt: Lb6YL_clRGO80xXBK-x3-w + beetmover-checksums-es-AR-linux64-shippable/opt: NqyhH2jAS0uY2uPpKAuSKw + beetmover-checksums-es-AR-macosx64-shippable/opt: O91nzZlZR_qjy1-W2vUMpw + beetmover-checksums-es-AR-win32-shippable/opt: A_RHHSTuT66uT1ess8r61w + beetmover-checksums-es-AR-win64-aarch64-shippable/opt: EIpMoXOrQcasUyEHxFAneA + beetmover-checksums-es-AR-win64-shippable/opt: Glpnn-kSS2G3Pu9aYewU1g + beetmover-checksums-es-CL-linux-shippable/opt: HbzderzlRLegfV_x2WdbJA + beetmover-checksums-es-CL-linux64-shippable/opt: AbhE6H63QoGKpJ9PIEltCA + beetmover-checksums-es-CL-macosx64-shippable/opt: bThfFkleSn69SOU0Ta8jUA + beetmover-checksums-es-CL-win32-shippable/opt: DABkcbpUQ8K4WtBJz1bPQg + beetmover-checksums-es-CL-win64-aarch64-shippable/opt: YtBFK3rrRGCjAYS-BYpYcQ + beetmover-checksums-es-CL-win64-shippable/opt: Jw2foOFwS-WnBTf4-oAK_w + beetmover-checksums-es-ES-linux-shippable/opt: DOD_qPU0TUOShgVsBiZoIg + beetmover-checksums-es-ES-linux64-shippable/opt: Dc_tKJGCSfKNRl-fPMfdIw + beetmover-checksums-es-ES-macosx64-shippable/opt: cPL-GgUJSQ2gKAkEF8o1Qw + beetmover-checksums-es-ES-win32-shippable/opt: TThrB_nUQByYDl8xpZSWDQ + beetmover-checksums-es-ES-win64-aarch64-shippable/opt: M8GLajBCTFWsl_xbb2kKNA + beetmover-checksums-es-ES-win64-shippable/opt: QGFkGKUTTgqJQbiZQAkrwQ + beetmover-checksums-es-MX-linux-shippable/opt: c5dtJ99TQ8qz52e74lyJng + beetmover-checksums-es-MX-linux64-shippable/opt: J_2Nak1aRxegKBaPGofcLA + beetmover-checksums-es-MX-macosx64-shippable/opt: KUXUhZZmTRqbyu5foeetZw + beetmover-checksums-es-MX-win32-shippable/opt: cfIUGA-sQLCTv593Hpts-A + beetmover-checksums-es-MX-win64-aarch64-shippable/opt: I9B2YPWZRF6lPf_DWgsrHg + beetmover-checksums-es-MX-win64-shippable/opt: TSx80YdVRVS_sMSGOlcLWg + beetmover-checksums-et-linux-shippable/opt: IM4Kw1waSdO21tAcOWnPjQ + beetmover-checksums-et-linux64-shippable/opt: djLm96MMTK2DE9ji3IRlEg + beetmover-checksums-et-macosx64-shippable/opt: Gwz_jnZqQfunRX1cQFNeqg + beetmover-checksums-et-win32-shippable/opt: XgbWGVqpTJeuaaBJOo3yZw + beetmover-checksums-et-win64-aarch64-shippable/opt: cj7dRlx-TveC4WAwESv3rQ + beetmover-checksums-et-win64-shippable/opt: TDKQ8z25RV61u0PuECHGzQ + beetmover-checksums-eu-linux-shippable/opt: OxITvw_nShSSqGCix7d5OA + beetmover-checksums-eu-linux64-shippable/opt: GOfC5RKlTMOHzzRFvKPcXg + beetmover-checksums-eu-macosx64-shippable/opt: BFlzKcJNSjW-qEnQupwWsA + beetmover-checksums-eu-win32-shippable/opt: UCKs_SQaSaKznj5pLpTrFQ + beetmover-checksums-eu-win64-aarch64-shippable/opt: UtJHrEyASvSbeEar_bo2SA + beetmover-checksums-eu-win64-shippable/opt: J8D4rLhxQ-qvlfDF8Ga43w + beetmover-checksums-fa-linux-shippable/opt: E_6UJYexRfucRsgX-8Aznw + beetmover-checksums-fa-linux64-shippable/opt: CMV9-ht_TKCR9I8OIR0M8g + beetmover-checksums-fa-macosx64-shippable/opt: IJRVHPeBTrGrPFJt254Klw + beetmover-checksums-fa-win32-shippable/opt: fYfLlM2SSjuM-ruI-rGLIQ + beetmover-checksums-fa-win64-aarch64-shippable/opt: PFEsJ6AuRxievP4PVLl_bw + beetmover-checksums-fa-win64-shippable/opt: WHc1sWReSI2GGrHs7mQgug + beetmover-checksums-ff-linux-shippable/opt: HP_galKIT0SzsD7qWdRl3g + beetmover-checksums-ff-linux64-shippable/opt: ahEkEp4nQLCl5ytag2QvTA + beetmover-checksums-ff-macosx64-shippable/opt: EygdvvFcRJOov9VZXHehAQ + beetmover-checksums-ff-win32-shippable/opt: M_Rwq8gmQZOjjda_tDxFxA + beetmover-checksums-ff-win64-aarch64-shippable/opt: XVRRzv-YS6GdOUtM1HoONA + beetmover-checksums-ff-win64-shippable/opt: OspjS2NhQy-p5tgMbDxRXQ + beetmover-checksums-fi-linux-shippable/opt: Ei8ZvtQ1TnKIQZnzEOCc4g + beetmover-checksums-fi-linux64-shippable/opt: T51Xns6YRcKPrNJwC_IdRA + beetmover-checksums-fi-macosx64-shippable/opt: M8AmJiFzQiW3a14iojqs7g + beetmover-checksums-fi-win32-shippable/opt: VmjZPFPFQQSpGZjJ-GCyfw + beetmover-checksums-fi-win64-aarch64-shippable/opt: HX2fZQYRSCSnB1nfrWgfJw + beetmover-checksums-fi-win64-shippable/opt: cGWU6OOTQHWtYy6UXihf8A + beetmover-checksums-fr-linux-shippable/opt: QtQuhqQrSMOYYlMjqETGSg + beetmover-checksums-fr-linux64-shippable/opt: HpNWH8GZTlmIeCxTxFJ-Nw + beetmover-checksums-fr-macosx64-shippable/opt: Eca_9AraS9qAkCqVS1zo5w + beetmover-checksums-fr-win32-shippable/opt: a2FDD-0tRF-zqgEAV1U7wQ + beetmover-checksums-fr-win64-aarch64-shippable/opt: N9gj-ZOqQw6E08YE84f7mg + beetmover-checksums-fr-win64-shippable/opt: Q5fPkU0STVC_7xMWTYWtdg + beetmover-checksums-fur-linux-shippable/opt: OjJsY1gITL-TNGlUSPMvDA + beetmover-checksums-fur-linux64-shippable/opt: JF_d7mutQHKDXdHnkDjkZA + beetmover-checksums-fur-macosx64-shippable/opt: AQROrOUzRtuHiOFpK5XWmQ + beetmover-checksums-fur-win32-shippable/opt: dSfVc0dITmW4m-lSSsEHfw + beetmover-checksums-fur-win64-aarch64-shippable/opt: AweNfxcfT8OMdMpA16PIMQ + beetmover-checksums-fur-win64-shippable/opt: dTiG-df5QoSSOJ9Ubz2BIg + beetmover-checksums-fy-NL-linux-shippable/opt: EjRlaG-ORIeFOrEftx8Myw + beetmover-checksums-fy-NL-linux64-shippable/opt: GviKXCoAQRKWe9MibYyMig + beetmover-checksums-fy-NL-macosx64-shippable/opt: fxudvlkTTzKwTssDIz7l9A + beetmover-checksums-fy-NL-win32-shippable/opt: B-cee4i0RZy5WiGqjegAOQ + beetmover-checksums-fy-NL-win64-aarch64-shippable/opt: Wg1AWWOQTEGzyjOAn1bNSA + beetmover-checksums-fy-NL-win64-shippable/opt: EMBxLp0tQvy7cwhPYSyL3Q + beetmover-checksums-ga-IE-linux-shippable/opt: BvihMhLhQziwDwGa5Toz8Q + beetmover-checksums-ga-IE-linux64-shippable/opt: LAoYB3qLSJ-fDfeI5Ao4Lw + beetmover-checksums-ga-IE-macosx64-shippable/opt: UYgwCBqFSbaLfaaxkOx2iw + beetmover-checksums-ga-IE-win32-shippable/opt: dM94xRCHQDK8r9Y4VMaM8w + beetmover-checksums-ga-IE-win64-aarch64-shippable/opt: I7q6aKUIQh-_LrYtBh7JDA + beetmover-checksums-ga-IE-win64-shippable/opt: EFvMt9VMTDSYB5-MsNYxfg + beetmover-checksums-gd-linux-shippable/opt: Sfo1nBf0Q0eQ6JhYFvlfwg + beetmover-checksums-gd-linux64-shippable/opt: DjiUqR0GQmaklyGQWQ7v1A + beetmover-checksums-gd-macosx64-shippable/opt: cIWMb0mlQeatZZ-IFUS9AQ + beetmover-checksums-gd-win32-shippable/opt: Y5H_W3HHTi2t7pd6vjLXdQ + beetmover-checksums-gd-win64-aarch64-shippable/opt: XZSoWBOSQAqjE5aQn2f3mw + beetmover-checksums-gd-win64-shippable/opt: RHrob-D_SWiNa6qrBYYd-w + beetmover-checksums-gl-linux-shippable/opt: X4K9tEwvSIWiCd8InYSwiw + beetmover-checksums-gl-linux64-shippable/opt: fBGP_p5zRgO7Koa3QPXwCA + beetmover-checksums-gl-macosx64-shippable/opt: TrXBoKshQHq9QeiPGA3UeA + beetmover-checksums-gl-win32-shippable/opt: f8BSiyXbQw-rc2XqEMAlSA + beetmover-checksums-gl-win64-aarch64-shippable/opt: UEIa7LlIRQGaKHtePSmFng + beetmover-checksums-gl-win64-shippable/opt: eiVxv337RWW7JtBzMMsU1A + beetmover-checksums-gn-linux-shippable/opt: AzUhg-5YSbO0_PPm2CY47A + beetmover-checksums-gn-linux64-shippable/opt: bt8mktKaTdCV2PJqSgizFQ + beetmover-checksums-gn-macosx64-shippable/opt: Ztmq9XYRQDeaUvL5hA87eA + beetmover-checksums-gn-win32-shippable/opt: JRV1wm75S_-lbG4WCiozlQ + beetmover-checksums-gn-win64-aarch64-shippable/opt: bfGXIzn5SpqWSoMd0YMM_Q + beetmover-checksums-gn-win64-shippable/opt: e6xb2c8uS1u7Xx3Kta0lXg + beetmover-checksums-gu-IN-linux-shippable/opt: FpN8zy2CSC-Q7QIBfvGWGA + beetmover-checksums-gu-IN-linux64-shippable/opt: c8wS4eRnQv-Q2NC7yDehRg + beetmover-checksums-gu-IN-macosx64-shippable/opt: cbHypZBlRce3lbjnMwc80Q + beetmover-checksums-gu-IN-win32-shippable/opt: fDRkt1E1T5G2MpDbFS_mtQ + beetmover-checksums-gu-IN-win64-aarch64-shippable/opt: cgWqtNNJRKGzYDJGTD4QGQ + beetmover-checksums-gu-IN-win64-shippable/opt: Io2NeaUjQX2VGYy50s7oOw + beetmover-checksums-he-linux-shippable/opt: I7FncAZ1QE6X9kDElfcbvA + beetmover-checksums-he-linux64-shippable/opt: GpncZXYtQOaVMkQHAcN-LQ + beetmover-checksums-he-macosx64-shippable/opt: UdtpG5LESJ2GmVyJlVCGNQ + beetmover-checksums-he-win32-shippable/opt: bOrqi0HQStOkDC6e9IdAnA + beetmover-checksums-he-win64-aarch64-shippable/opt: TfiCdxFUS6-XcCe6zIWfmQ + beetmover-checksums-he-win64-shippable/opt: bEdVso3tTi2k5EiUP_rQ5Q + beetmover-checksums-hi-IN-linux-shippable/opt: dSccRIwERGyNIjzK9VGU6Q + beetmover-checksums-hi-IN-linux64-shippable/opt: Twwe-wASQNKma4GRoEKg9A + beetmover-checksums-hi-IN-macosx64-shippable/opt: dxREE9QHSi6KruGUl7jhWQ + beetmover-checksums-hi-IN-win32-shippable/opt: JJEKs7_tTyG59r5vonIqKg + beetmover-checksums-hi-IN-win64-aarch64-shippable/opt: NkK8iW4dSGqd3_eGWlaBtA + beetmover-checksums-hi-IN-win64-shippable/opt: OF3eyS-2Rz2JjNfSsMNWQQ + beetmover-checksums-hr-linux-shippable/opt: UMssxhZvTSSi2Ms9P8902A + beetmover-checksums-hr-linux64-shippable/opt: OyJ7-A_lQsuoe5ezR-3pRw + beetmover-checksums-hr-macosx64-shippable/opt: YIH0NTfBTZOfmgscXNwLUQ + beetmover-checksums-hr-win32-shippable/opt: FyRvco8UQUykMTwtKdIPBg + beetmover-checksums-hr-win64-aarch64-shippable/opt: Js0GkcoZRmWzZ-PIhBHcvQ + beetmover-checksums-hr-win64-shippable/opt: RucjGraESZevgxaxit-RdQ + beetmover-checksums-hsb-linux-shippable/opt: GXKHcVYUSdGeDpBnVfIrZA + beetmover-checksums-hsb-linux64-shippable/opt: YQCwf9CQQ3aBByTZKaWRlQ + beetmover-checksums-hsb-macosx64-shippable/opt: e-9R5K7oTuuJXm4IZMJQmQ + beetmover-checksums-hsb-win32-shippable/opt: Fa-FrTKHRIKZ2uAiMJPUIw + beetmover-checksums-hsb-win64-aarch64-shippable/opt: Wcdyc-srQJmXlH23UqvJtA + beetmover-checksums-hsb-win64-shippable/opt: LoX0fzgISj-xQtwuSTPhHA + beetmover-checksums-hu-linux-shippable/opt: EKcraxkzQli5VZ3daOg1Hw + beetmover-checksums-hu-linux64-shippable/opt: NrS8T9A9R0mmGKyrrN4c_w + beetmover-checksums-hu-macosx64-shippable/opt: SUWf7jf3SUiQfvqRGRD6rA + beetmover-checksums-hu-win32-shippable/opt: GHxEQ4XDRUyJk0emJpKe2w + beetmover-checksums-hu-win64-aarch64-shippable/opt: BE9vcCJ6TQ63QdNq0_MVKA + beetmover-checksums-hu-win64-shippable/opt: IT67G7ZUSAKQLqS-1G24sw + beetmover-checksums-hy-AM-linux-shippable/opt: C9gX3CjGRZitWvmVLlK1zQ + beetmover-checksums-hy-AM-linux64-shippable/opt: a-2suNuiRAuPFEhXmJSwEg + beetmover-checksums-hy-AM-macosx64-shippable/opt: fZKP5vwJSmuj_CGoBstq8w + beetmover-checksums-hy-AM-win32-shippable/opt: CQk4B2-ERGab_1i_Alxt7A + beetmover-checksums-hy-AM-win64-aarch64-shippable/opt: Dk-YJSl5TpGxUsmR0RLpDA + beetmover-checksums-hy-AM-win64-shippable/opt: YL-vAWBoQQCIDcXhhO8rRw + beetmover-checksums-ia-linux-shippable/opt: eSqffocZQOKbfelGlj-rsg + beetmover-checksums-ia-linux64-shippable/opt: G01d1uHoR06l47xPsQem_Q + beetmover-checksums-ia-macosx64-shippable/opt: HSrx13tRQQaQ1lGGkg6QmQ + beetmover-checksums-ia-win32-shippable/opt: FhzYrUQhTxiKL3Ta-D9SDQ + beetmover-checksums-ia-win64-aarch64-shippable/opt: DpNpv92RRHWktmw3LZbG_A + beetmover-checksums-ia-win64-shippable/opt: MIpUKdYdT3-eIRlVfnDlVw + beetmover-checksums-id-linux-shippable/opt: PAyMODGtSDaNm_-1FtMY1Q + beetmover-checksums-id-linux64-shippable/opt: YUdC2JDuRJqEpksZieOdDQ + beetmover-checksums-id-macosx64-shippable/opt: G08flsn6STO8TYdexayQwA + beetmover-checksums-id-win32-shippable/opt: Bh0Co_ESTnG-5SBDw1TU_A + beetmover-checksums-id-win64-aarch64-shippable/opt: UWGL8CHOQj-M6IBuHx-__w + beetmover-checksums-id-win64-shippable/opt: QFGQv815S166CKR55xD6Bw + beetmover-checksums-is-linux-shippable/opt: XtmM8UJLQQ23wVQsPMFP7A + beetmover-checksums-is-linux64-shippable/opt: MeElkk2MTjqHscop_qb1JA + beetmover-checksums-is-macosx64-shippable/opt: Ha-7Sv7CTW23DoEglMnU6Q + beetmover-checksums-is-win32-shippable/opt: dmWDQQJETXmYvMf1qbRFLg + beetmover-checksums-is-win64-aarch64-shippable/opt: VPJANiDKQ-eIBCFlO7TBJA + beetmover-checksums-is-win64-shippable/opt: QM0AxXdGRGaxip64jX9TmQ + beetmover-checksums-it-linux-shippable/opt: eHd5SYpeT86fYMJOj4GGZA + beetmover-checksums-it-linux64-shippable/opt: UKk3hyRzTyiqWmEpCgvd0w + beetmover-checksums-it-macosx64-shippable/opt: ezzufCUOSpWKV7pUCANI6Q + beetmover-checksums-it-win32-shippable/opt: erKjEQDJQcKT_TY3EQgzZQ + beetmover-checksums-it-win64-aarch64-shippable/opt: Mfk9yE4BT1KfDMeEmszbzw + beetmover-checksums-it-win64-shippable/opt: c4Vspjr2TceUDly5mmTIGg + beetmover-checksums-ja-JP-mac-macosx64-shippable/opt: JYkKNndiSO-o-RjcVjPvow + beetmover-checksums-ja-linux-shippable/opt: dbQoh7zDRHy3jC8QF9w3Uw + beetmover-checksums-ja-linux64-shippable/opt: beH632_WR-WVMea6Q2iq4A + beetmover-checksums-ja-win32-shippable/opt: MFZUUxfFR3eFDL6OeOwKlw + beetmover-checksums-ja-win64-aarch64-shippable/opt: UkGCEAdYTGS_RUS01Ed0yQ + beetmover-checksums-ja-win64-shippable/opt: PSr6iauRS5-TFgmG8wjq8g + beetmover-checksums-ka-linux-shippable/opt: J11HNwq0QqKbj5m6JGlDdw + beetmover-checksums-ka-linux64-shippable/opt: ZnSOjryGRaCTTjJvv_Jdcg + beetmover-checksums-ka-macosx64-shippable/opt: Djr5_Te3RvyBQ4x8pLDwSA + beetmover-checksums-ka-win32-shippable/opt: X6elT9WVRTSOzzrc2gIwYg + beetmover-checksums-ka-win64-aarch64-shippable/opt: fFXPvCJ-RTmhOtqz01-APA + beetmover-checksums-ka-win64-shippable/opt: arr6COrOSkW_zbFCWJog-Q + beetmover-checksums-kab-linux-shippable/opt: HndkoNqWQ7aslj_u4Rv6kg + beetmover-checksums-kab-linux64-shippable/opt: ECaispt3S8iehN1t9ZMPgw + beetmover-checksums-kab-macosx64-shippable/opt: dld-H-YNSNCAjask2njKXA + beetmover-checksums-kab-win32-shippable/opt: ZNlRC0yxRW6415kFo319yw + beetmover-checksums-kab-win64-aarch64-shippable/opt: eEp-CkXkRCaFZgtRNBoWsA + beetmover-checksums-kab-win64-shippable/opt: HxNiMHMVR9qZt_0efc0KTw + beetmover-checksums-kk-linux-shippable/opt: BCqyVHPyT-iKw3I5N3SqBg + beetmover-checksums-kk-linux64-shippable/opt: I6lAAWRiQWGGAYk6DVD3dw + beetmover-checksums-kk-macosx64-shippable/opt: YDFRa8koRE6VZ47T3ajgQA + beetmover-checksums-kk-win32-shippable/opt: fMqbF9PxRQWjJ5Dz1trbBA + beetmover-checksums-kk-win64-aarch64-shippable/opt: BxQuGuywRQmN0-5NlJej3g + beetmover-checksums-kk-win64-shippable/opt: FTnYCbBhTVivLkSw1mSczw + beetmover-checksums-km-linux-shippable/opt: FNJAjeqhTbieG5rQYQRWNA + beetmover-checksums-km-linux64-shippable/opt: BVoF7NN7TjS1e-hmjU-7pQ + beetmover-checksums-km-macosx64-shippable/opt: XMh8-r4NSGe1vD5qzmkkZQ + beetmover-checksums-km-win32-shippable/opt: XOFOrWJbSGOGCWs9fDLNdA + beetmover-checksums-km-win64-aarch64-shippable/opt: MuzirhSUS4O7YCEvwTRkTg + beetmover-checksums-km-win64-shippable/opt: C-42pgfLRT6bMICxxr8Cnw + beetmover-checksums-kn-linux-shippable/opt: AavHWqckSMq9KYnZDuQb7w + beetmover-checksums-kn-linux64-shippable/opt: RptHwce3TW-A3YtwA_Toqw + beetmover-checksums-kn-macosx64-shippable/opt: IcttiVjpSeyCdtRpxIO4qw + beetmover-checksums-kn-win32-shippable/opt: BWK2oXhDRoagpexP6sQhBQ + beetmover-checksums-kn-win64-aarch64-shippable/opt: Q320j_oKRBeAP0Q6bxyTHQ + beetmover-checksums-kn-win64-shippable/opt: MdIMXyjoSv24lLt1ZIul3g + beetmover-checksums-ko-linux-shippable/opt: BHTeFJnDRq-7sNhGiSSgwA + beetmover-checksums-ko-linux64-shippable/opt: RQj5PwT4QWC4cauhmZwUkA + beetmover-checksums-ko-macosx64-shippable/opt: bvQwuNeSQfm5R9sT4t43pw + beetmover-checksums-ko-win32-shippable/opt: fxDnmw9OSuG2pE9U8KK-ig + beetmover-checksums-ko-win64-aarch64-shippable/opt: YdTfXryhRra_MreRgQGgpw + beetmover-checksums-ko-win64-shippable/opt: b3X6E6hxTs6byvgxznrAow + beetmover-checksums-lij-linux-shippable/opt: dmJ7ekBZSg-Z8fIrQ3MrzQ + beetmover-checksums-lij-linux64-shippable/opt: Ia9ruTXxSc6DZal6BPR6dQ + beetmover-checksums-lij-macosx64-shippable/opt: JTd5W6b4Qi6iL-Dy7LPa8g + beetmover-checksums-lij-win32-shippable/opt: Xy33XJP4Q5Gi_1ks-P-urQ + beetmover-checksums-lij-win64-aarch64-shippable/opt: EFJiuedGR0mm2S8RO89qWg + beetmover-checksums-lij-win64-shippable/opt: Tqpm3pXNSDyayG48ujtdGA + beetmover-checksums-linux-shippable/opt: Yz6c_3k8T_-QCfCMQ3sMYA + beetmover-checksums-linux64-shippable/opt: NvkNG8CGTaG1JpoNDi5AQg + beetmover-checksums-lt-linux-shippable/opt: NNyaJxTlRoKkuhfkub_1Cg + beetmover-checksums-lt-linux64-shippable/opt: etMTdxOWShG5QR6PwZ06tw + beetmover-checksums-lt-macosx64-shippable/opt: X4aYA1w2Sv2vwtHHKEzLZw + beetmover-checksums-lt-win32-shippable/opt: fovPF0gbS2CnHeD7IoJUuw + beetmover-checksums-lt-win64-aarch64-shippable/opt: SH3GjthoQBK5mafRi4QTfg + beetmover-checksums-lt-win64-shippable/opt: CZ5WWhXgQWaMB_kB_h15Jg + beetmover-checksums-lv-linux-shippable/opt: I3hNW-ZNRzq2Ir1zW6_hjg + beetmover-checksums-lv-linux64-shippable/opt: foIkNiB5RCOTSg4id975Ow + beetmover-checksums-lv-macosx64-shippable/opt: fYTYRT3iSoi7h7Sc-f8Upg + beetmover-checksums-lv-win32-shippable/opt: PeXmn710SfKXFnCLtQj-3w + beetmover-checksums-lv-win64-aarch64-shippable/opt: F31L-stURQ-BdDLelLpq1g + beetmover-checksums-lv-win64-shippable/opt: MHaZ8tHrSiexSkq1ke9CZQ + beetmover-checksums-macosx64-shippable/opt: drwYO5NHQcuqqIbC4AV1lA + beetmover-checksums-mk-linux-shippable/opt: Oiooyd-JR-OhuicYT7DThw + beetmover-checksums-mk-linux64-shippable/opt: LYN_EEkwRlWQCNOfNV0K3g + beetmover-checksums-mk-macosx64-shippable/opt: XeG7EGZQTM-2zHgzqC8LiA + beetmover-checksums-mk-win32-shippable/opt: X4XrMNRUQdynnbgOUPjDxg + beetmover-checksums-mk-win64-aarch64-shippable/opt: CgH4M1PJSGK_MI3_GjihQQ + beetmover-checksums-mk-win64-shippable/opt: Ff6kRUO-Stiwm7Z5WtViAA + beetmover-checksums-mr-linux-shippable/opt: ZXSpeXKwSxKo7d3xDPX6WA + beetmover-checksums-mr-linux64-shippable/opt: YwJiDfUxQMe_D6jnWPMu4w + beetmover-checksums-mr-macosx64-shippable/opt: NAUQPVqfR3yHNiKj2dlOPw + beetmover-checksums-mr-win32-shippable/opt: Af1QJvzAQGWfbQccV_DOgw + beetmover-checksums-mr-win64-aarch64-shippable/opt: Xg7vOSd2R8u4OmXBOsGYjw + beetmover-checksums-mr-win64-shippable/opt: QhqwCdrjSuOf4ZkXBEwj5Q + beetmover-checksums-ms-linux-shippable/opt: Dl6pk1WCT2634HuqhyGG3Q + beetmover-checksums-ms-linux64-shippable/opt: FOdeNpBRTUuTykW78eDxQQ + beetmover-checksums-ms-macosx64-shippable/opt: IrzJozZYSbCLZA8mFBsArg + beetmover-checksums-ms-win32-shippable/opt: Y21GknNkRLWIT1kSDkYWHA + beetmover-checksums-ms-win64-aarch64-shippable/opt: e3dUyGoJR9mRYUanrZ4nNw + beetmover-checksums-ms-win64-shippable/opt: ckBbwh4ETnqJkKCxlaBl9A + beetmover-checksums-my-linux-shippable/opt: IyWGP4WKRNCKLaRKcvmrZA + beetmover-checksums-my-linux64-shippable/opt: LxP1cbwATTiYRKFLglSKhA + beetmover-checksums-my-macosx64-shippable/opt: GhNYU3G2SyC0tFhNwFWATg + beetmover-checksums-my-win32-shippable/opt: B3rd036RREiS4zm4xe0v1Q + beetmover-checksums-my-win64-aarch64-shippable/opt: R6sfvjxyTnuSygmOmRYwuA + beetmover-checksums-my-win64-shippable/opt: Nh1shZYSRdihAnvzarWTdw + beetmover-checksums-nb-NO-linux-shippable/opt: cUS-RCKXTD-LKsfxWKe8XQ + beetmover-checksums-nb-NO-linux64-shippable/opt: CaZ02eNgTKO2Elypu9o7fg + beetmover-checksums-nb-NO-macosx64-shippable/opt: fWL-ZH0_SFmGf98O5YJuoA + beetmover-checksums-nb-NO-win32-shippable/opt: aoMlYmM1TCKRoQs8eJAvzA + beetmover-checksums-nb-NO-win64-aarch64-shippable/opt: XZSViBnHRAKtWuIJKo4Ygw + beetmover-checksums-nb-NO-win64-shippable/opt: cMlxKVEbSIayHiatVX5jfg + beetmover-checksums-ne-NP-linux-shippable/opt: UPQGB5oURLCjSE5YVgBhIQ + beetmover-checksums-ne-NP-linux64-shippable/opt: HzyL7OreTpincCatY4C7Gg + beetmover-checksums-ne-NP-macosx64-shippable/opt: dv0sIrWGRFyONtINae2S8Q + beetmover-checksums-ne-NP-win32-shippable/opt: Jt_rk6WERtSoXcctwVJ_WA + beetmover-checksums-ne-NP-win64-aarch64-shippable/opt: EmMdFwCCS1a47eMqiocibg + beetmover-checksums-ne-NP-win64-shippable/opt: Z0orBXjhRlKBh2Cf8hRunA + beetmover-checksums-nl-linux-shippable/opt: GwVhSh2mRGiSrS_RWF3-ig + beetmover-checksums-nl-linux64-shippable/opt: R3MLIO5tR3uNP0hkXn70zg + beetmover-checksums-nl-macosx64-shippable/opt: LAvCDEEVTpmObnu70SY0mg + beetmover-checksums-nl-win32-shippable/opt: V0xzhO4ARrivVhTJZBUn4g + beetmover-checksums-nl-win64-aarch64-shippable/opt: UfvVOvHSTEKt_v6hOowMhQ + beetmover-checksums-nl-win64-shippable/opt: PyxR4jXER7KjXkYKR_RkeQ + beetmover-checksums-nn-NO-linux-shippable/opt: crslGg3URlekyngMh81lBw + beetmover-checksums-nn-NO-linux64-shippable/opt: UN9nWqHuSnKtU_F_g3s5oQ + beetmover-checksums-nn-NO-macosx64-shippable/opt: JvztgegiRKu-ilqpoR1ZCA + beetmover-checksums-nn-NO-win32-shippable/opt: fADsH__RSY25Cz50pRxIvQ + beetmover-checksums-nn-NO-win64-aarch64-shippable/opt: RIvo0ZLtQM-KhSYBjV9qvg + beetmover-checksums-nn-NO-win64-shippable/opt: Iwd6Vn05TrGHSqlwcEUpjQ + beetmover-checksums-oc-linux-shippable/opt: aRPhxYLOQTOBDNJBQiro4Q + beetmover-checksums-oc-linux64-shippable/opt: dZ-xKDqfTQygrJICDTOmmw + beetmover-checksums-oc-macosx64-shippable/opt: cYA56r0ATLiMbwTjx4Pesw + beetmover-checksums-oc-win32-shippable/opt: IpDw_GdrRwaZ0xT9GSZXFw + beetmover-checksums-oc-win64-aarch64-shippable/opt: AEcbTKttT8-kQxPMW3zm7Q + beetmover-checksums-oc-win64-shippable/opt: aA8oLNkxTzWvdWKP0f2kxA + beetmover-checksums-pa-IN-linux-shippable/opt: fFHsd9TpRyqBobFSbzn_EQ + beetmover-checksums-pa-IN-linux64-shippable/opt: AxJXPGYxRaOgfxBTPXOxxA + beetmover-checksums-pa-IN-macosx64-shippable/opt: Kiqz1gAzRqygdZ4jC7XkUQ + beetmover-checksums-pa-IN-win32-shippable/opt: Zb_bhoWxQCC4fopbd2ZkTg + beetmover-checksums-pa-IN-win64-aarch64-shippable/opt: XB0B53kKQ2iFtm0WiuUrbg + beetmover-checksums-pa-IN-win64-shippable/opt: Cn8SLKNaS1m9IeiXYHLebA + beetmover-checksums-pl-linux-shippable/opt: EjqSHKuPR5KIMMAS-w_IYw + beetmover-checksums-pl-linux64-shippable/opt: WE2AKSVwQ1KKevqaY45dww + beetmover-checksums-pl-macosx64-shippable/opt: IEir9O_5R0-mufLm1UK4zg + beetmover-checksums-pl-win32-shippable/opt: LgknTeXiSrKDzmip36YA4w + beetmover-checksums-pl-win64-aarch64-shippable/opt: O6wnd-FkSzyAMEe8N52lwQ + beetmover-checksums-pl-win64-shippable/opt: QSFpWyTjTcuFizV34db_PQ + beetmover-checksums-pt-BR-linux-shippable/opt: G6A9WBelR0ygDnCzFskHkw + beetmover-checksums-pt-BR-linux64-shippable/opt: VNwKix20Q-CI74XLVEEJBg + beetmover-checksums-pt-BR-macosx64-shippable/opt: QlHubqp3REqq3DPcqMN7PQ + beetmover-checksums-pt-BR-win32-shippable/opt: UJq2Q4tUTwS7iVU5tmMaFA + beetmover-checksums-pt-BR-win64-aarch64-shippable/opt: Oj4B3ksARmy0K9ZmfcKpUA + beetmover-checksums-pt-BR-win64-shippable/opt: URlxj12US7W6O3eQGbTLUQ + beetmover-checksums-pt-PT-linux-shippable/opt: BfQ13OmuTme51BbjCm9_pQ + beetmover-checksums-pt-PT-linux64-shippable/opt: GsW1sXenTMi2qXQImvEprA + beetmover-checksums-pt-PT-macosx64-shippable/opt: epPKwd7xREeCT8PREDClSw + beetmover-checksums-pt-PT-win32-shippable/opt: Oc_UDn_hR52ecuCgZ4hrPg + beetmover-checksums-pt-PT-win64-aarch64-shippable/opt: EugFhoOvSlCDPZ-7JTk97w + beetmover-checksums-pt-PT-win64-shippable/opt: c73MpuIfRp6l_sVhbrPFfA + beetmover-checksums-rm-linux-shippable/opt: PV2XjFvRSFe2hq9Lw4Xxnw + beetmover-checksums-rm-linux64-shippable/opt: GkcQf1ONTaeKJPDb98yPsg + beetmover-checksums-rm-macosx64-shippable/opt: fmXRH_bLQbu9JlPZ27aAzw + beetmover-checksums-rm-win32-shippable/opt: VanBZxHuT2qw_fH-4o6HZg + beetmover-checksums-rm-win64-aarch64-shippable/opt: Q-KEauEPRxC3nM2C98yvaw + beetmover-checksums-rm-win64-shippable/opt: czkCblKgTC2K7Hx1HmJriQ + beetmover-checksums-ro-linux-shippable/opt: AeaonFwASwKZEHIJ8NhV3g + beetmover-checksums-ro-linux64-shippable/opt: Kj8hekq_Rx-RyhMgA1zoAQ + beetmover-checksums-ro-macosx64-shippable/opt: WxGw_B6_SVudP1IhV6zvGg + beetmover-checksums-ro-win32-shippable/opt: RgGpW79jQh-ygedmH2EPQw + beetmover-checksums-ro-win64-aarch64-shippable/opt: VrOF8Oy0TtqxQiNTwjXsFQ + beetmover-checksums-ro-win64-shippable/opt: H-QcwQYLSmaOaWmpmLQBYA + beetmover-checksums-ru-linux-shippable/opt: fjUeZyADTwq29-hQFU8gxA + beetmover-checksums-ru-linux64-shippable/opt: bOnyTRnKR8CzV6yJu6cdag + beetmover-checksums-ru-macosx64-shippable/opt: JmNUuNFPRVS-588DCalIOQ + beetmover-checksums-ru-win32-shippable/opt: bapvFl8CSUuQOGQ0rttAdQ + beetmover-checksums-ru-win64-aarch64-shippable/opt: Kqpi0Nw6TW6Ikt4P6abSsg + beetmover-checksums-ru-win64-shippable/opt: b7PgAwbbQyWM2x25F5nK2A + beetmover-checksums-sc-linux-shippable/opt: bTn5zLCjSYaoig_91xAhyQ + beetmover-checksums-sc-linux64-shippable/opt: EIY7zoUPTVG0snMhMYM-Wg + beetmover-checksums-sc-macosx64-shippable/opt: ZBV1ZWNURI-4aOPcoOkUNw + beetmover-checksums-sc-win32-shippable/opt: RT_UBsKHT3OkC4Fn2SokMw + beetmover-checksums-sc-win64-aarch64-shippable/opt: QMFvIgJGTGyk1UL78NGA7w + beetmover-checksums-sc-win64-shippable/opt: UN2la5xtQfaMCaDe8OmfNA + beetmover-checksums-sco-linux-shippable/opt: VAqorAf-S5aWhPtO6VfMMA + beetmover-checksums-sco-linux64-shippable/opt: GMcWEL2tSS6OBzekyJlonQ + beetmover-checksums-sco-macosx64-shippable/opt: VY8pgJeoTsCNa-TVtm0qeQ + beetmover-checksums-sco-win32-shippable/opt: dVYsS2jAQkqCIhE0QZE7Sw + beetmover-checksums-sco-win64-aarch64-shippable/opt: Ld4XJypYShqNuYphwXg6Og + beetmover-checksums-sco-win64-shippable/opt: PZUQVP9SRR6H33eUyxJenw + beetmover-checksums-si-linux-shippable/opt: G-2IeSIxRS-ZZi_PSaPmMw + beetmover-checksums-si-linux64-shippable/opt: G5D2_UL5Q7qFGeeW95ug2w + beetmover-checksums-si-macosx64-shippable/opt: DSxWqI1vSWyqhaQmGAnZAQ + beetmover-checksums-si-win32-shippable/opt: XwC6PbJjQ9acXwomwiQ2-A + beetmover-checksums-si-win64-aarch64-shippable/opt: Ew-DMt5uSPe3s3ue-xdgtw + beetmover-checksums-si-win64-shippable/opt: Fy2YqGf_R1qJMW1pSqR60g + beetmover-checksums-sk-linux-shippable/opt: TpCxqicpRGKSZKWdOE8lKQ + beetmover-checksums-sk-linux64-shippable/opt: D2zjTKvxSVG4fR3XRauDWg + beetmover-checksums-sk-macosx64-shippable/opt: eGo2HFKMQauTAzCdP4MWFw + beetmover-checksums-sk-win32-shippable/opt: a-gtwXBMQLy2WBLkMTFM-A + beetmover-checksums-sk-win64-aarch64-shippable/opt: I4s9W00WRECo16suWu9sTQ + beetmover-checksums-sk-win64-shippable/opt: fYS_joU5SZGpnPpp0Slb4w + beetmover-checksums-sl-linux-shippable/opt: NMbgONLjTJiFdP032jx4DA + beetmover-checksums-sl-linux64-shippable/opt: HpqQX0diT02AyYY8fay3-g + beetmover-checksums-sl-macosx64-shippable/opt: fiQmApwETMac9PfxZv3Dbg + beetmover-checksums-sl-win32-shippable/opt: C7G6w_1xTZmPqIdepH5b_Q + beetmover-checksums-sl-win64-aarch64-shippable/opt: PqMQ1tDKRDKEH4x4VgLD0A + beetmover-checksums-sl-win64-shippable/opt: eDUNjSV-QA6ftWwBh5b5bA + beetmover-checksums-son-linux-shippable/opt: axlNUiqdTFCel7KxiLzKZg + beetmover-checksums-son-linux64-shippable/opt: Z4ylarByTuycQ58aCBYHCw + beetmover-checksums-son-macosx64-shippable/opt: OBOpuwAtTsuo6E7jVV7Ydw + beetmover-checksums-son-win32-shippable/opt: OTe7ucV_TfSTn7PcMyO7sA + beetmover-checksums-son-win64-aarch64-shippable/opt: MpPIBqxSSU6xMw-O-Yc8_g + beetmover-checksums-son-win64-shippable/opt: IkhLvhqVStGFWjdZs_Khvg + beetmover-checksums-sq-linux-shippable/opt: aJID52-PQ8ei90j-2kNHjA + beetmover-checksums-sq-linux64-shippable/opt: XZZDOrBrSJuuBkQye_QjtQ + beetmover-checksums-sq-macosx64-shippable/opt: NoMMU7wZT96KjrjdEIGQMA + beetmover-checksums-sq-win32-shippable/opt: UAEW3Cx9SFOnSJuPDx6lFQ + beetmover-checksums-sq-win64-aarch64-shippable/opt: Yprbgr6CRMy6dtLilvfJ0A + beetmover-checksums-sq-win64-shippable/opt: cd_DLqSZQRS-sYZboawTbg + beetmover-checksums-sr-linux-shippable/opt: GnfBx8iUTDW6Wd2B5Fem0Q + beetmover-checksums-sr-linux64-shippable/opt: Po9ka0WBSxiXLnu8NY9yXg + beetmover-checksums-sr-macosx64-shippable/opt: FYRldcMDROK_H5WUP9rI1w + beetmover-checksums-sr-win32-shippable/opt: ffVt7ZeiSP2Ug2piJctuhA + beetmover-checksums-sr-win64-aarch64-shippable/opt: Rbniuf72RTij_qD9mEFaxg + beetmover-checksums-sr-win64-shippable/opt: JHg3ac_BQaGRPRpeXezenw + beetmover-checksums-sv-SE-linux-shippable/opt: KekYVBnYQm2YWYX6ehZ7kg + beetmover-checksums-sv-SE-linux64-shippable/opt: flLOOX1aTwKOoYHAFN8oJw + beetmover-checksums-sv-SE-macosx64-shippable/opt: LQWy5szJSn-Wain9jihwbw + beetmover-checksums-sv-SE-win32-shippable/opt: Rvp4KGdvRuitecSy89puhQ + beetmover-checksums-sv-SE-win64-aarch64-shippable/opt: P8L9737_Rd-1sRYqgXNpfA + beetmover-checksums-sv-SE-win64-shippable/opt: S8gnwh2ZTj-DqjwqPXJ8jQ + beetmover-checksums-szl-linux-shippable/opt: SN9InqemSAyfMq9BMvVPpA + beetmover-checksums-szl-linux64-shippable/opt: C6-ALZ2DRBm7u8vKCYcx6A + beetmover-checksums-szl-macosx64-shippable/opt: T9qTKeGtTCmRVPYdlZc4Vg + beetmover-checksums-szl-win32-shippable/opt: ZUQ5nIexSQOd3WHNtphtfA + beetmover-checksums-szl-win64-aarch64-shippable/opt: ZqJsgbzgSLy2LGcT2skGeA + beetmover-checksums-szl-win64-shippable/opt: dYVgW8a1RX6lRCu87mA5yA + beetmover-checksums-ta-linux-shippable/opt: XUpiPjyjTGiQXKKHGGoX2g + beetmover-checksums-ta-linux64-shippable/opt: AP88D9tNQyisKQXmEDEYig + beetmover-checksums-ta-macosx64-shippable/opt: EwvfLYCRREmv6No3S52u1g + beetmover-checksums-ta-win32-shippable/opt: Ygoc7YlySXWYUCV943ekWg + beetmover-checksums-ta-win64-aarch64-shippable/opt: Tuhz91McQa-7TGjsNyPHMA + beetmover-checksums-ta-win64-shippable/opt: SemtR9PvRDO1gHgua6mRzA + beetmover-checksums-te-linux-shippable/opt: H63Oq0CUQ9aGbjIqyxV9Ow + beetmover-checksums-te-linux64-shippable/opt: dGNMyyRPSryPu-4SXMhDVg + beetmover-checksums-te-macosx64-shippable/opt: W-qtJDKLSymXAcigcnp_OA + beetmover-checksums-te-win32-shippable/opt: EaA41JoDQw6PdVox72Gm4w + beetmover-checksums-te-win64-aarch64-shippable/opt: d5EgWPgdRTi9C0lSB0CdCg + beetmover-checksums-te-win64-shippable/opt: fx17uEKoSUeEvsSZ4M9ydg + beetmover-checksums-tg-linux-shippable/opt: SYbzOU2-RWmVcgE9cTc72A + beetmover-checksums-tg-linux64-shippable/opt: b7_OhBXeRLixWBrXIEaIHQ + beetmover-checksums-tg-macosx64-shippable/opt: NDBScEuRTwuSi8ntCzUKmQ + beetmover-checksums-tg-win32-shippable/opt: dl1PPKI1ReyRWi715wZ4EQ + beetmover-checksums-tg-win64-aarch64-shippable/opt: dGtlAog1SoSbuirZyYXQpw + beetmover-checksums-tg-win64-shippable/opt: YSkuKz60SmOZkF2B35a4Jg + beetmover-checksums-th-linux-shippable/opt: c14nnV-QSPOu4eEwDLUTnQ + beetmover-checksums-th-linux64-shippable/opt: KJZrgmZFQzy0jjJ4P0B5uA + beetmover-checksums-th-macosx64-shippable/opt: MktT4WsMTr6z_S5F__M21A + beetmover-checksums-th-win32-shippable/opt: H81jkjpYQimsqOOqqJUkpA + beetmover-checksums-th-win64-aarch64-shippable/opt: acxHy_NJQNyyfDgtnwBaTw + beetmover-checksums-th-win64-shippable/opt: F70HDuJIT3eh5BDCfdHd3w + beetmover-checksums-tl-linux-shippable/opt: QSKVoj3OQqimRA0ZaCbIFQ + beetmover-checksums-tl-linux64-shippable/opt: R0cTwwHvTR-P8nR8i7iw1A + beetmover-checksums-tl-macosx64-shippable/opt: DcQbx37nQim3YvSsSRA6bw + beetmover-checksums-tl-win32-shippable/opt: R_M4-h4USYKbF9CZBuV1PQ + beetmover-checksums-tl-win64-aarch64-shippable/opt: IItJtZIiTlanp0oXJG1nDg + beetmover-checksums-tl-win64-shippable/opt: MZt3PAj7TT-22yq1AWTzUw + beetmover-checksums-tr-linux-shippable/opt: bU5FBE51Tr2jhYQKLEwfiA + beetmover-checksums-tr-linux64-shippable/opt: KDNKfmwyQVeay9lLcxXNjg + beetmover-checksums-tr-macosx64-shippable/opt: Ynn0nRk1TMejTd_gFDPzww + beetmover-checksums-tr-win32-shippable/opt: aC30Oj_lRqO7lJXin31lng + beetmover-checksums-tr-win64-aarch64-shippable/opt: FDs6Ht0sScaXFniTClWjeA + beetmover-checksums-tr-win64-shippable/opt: NzavwH2aQJKZRsBcMVtIEA + beetmover-checksums-trs-linux-shippable/opt: D4crTP1LSrui1Q44iMdTeQ + beetmover-checksums-trs-linux64-shippable/opt: GflBv_w_T5uYRgTNMiQ2wA + beetmover-checksums-trs-macosx64-shippable/opt: fBKIF4AYTGCx9gVs2F1zww + beetmover-checksums-trs-win32-shippable/opt: dL_hUhbqT3qdnO8wz9_Ylw + beetmover-checksums-trs-win64-aarch64-shippable/opt: Z1OOIu9mRDOOmE9xUQXETA + beetmover-checksums-trs-win64-shippable/opt: P7LYkx8-SY2yFss1LNrBGA + beetmover-checksums-uk-linux-shippable/opt: H7jlyhxtT4yzYTWhnuuT-g + beetmover-checksums-uk-linux64-shippable/opt: ByYNI0auTWGPb8T6B70Cnw + beetmover-checksums-uk-macosx64-shippable/opt: KMhR3TslQVyYHiBCH6bmnA + beetmover-checksums-uk-win32-shippable/opt: bUFznOIaTx2tqshxQmzzzg + beetmover-checksums-uk-win64-aarch64-shippable/opt: QwDkWjPUS7m3Qs6s_MMS3A + beetmover-checksums-uk-win64-shippable/opt: B1fux60_SMyocUDishNFOw + beetmover-checksums-ur-linux-shippable/opt: UoxBP6vLTFGnlQ-4ehYdIA + beetmover-checksums-ur-linux64-shippable/opt: XRxHGTTwTvGn1DJ3dageSQ + beetmover-checksums-ur-macosx64-shippable/opt: f1Yi9FOfTA27F03M-2ecdg + beetmover-checksums-ur-win32-shippable/opt: Gukbio2BQ_W7psweNtM3JQ + beetmover-checksums-ur-win64-aarch64-shippable/opt: ZbiHw8IbTx-pJLO_j45ZEA + beetmover-checksums-ur-win64-shippable/opt: C0lXG8vIQ62AuwQ7jyLszw + beetmover-checksums-uz-linux-shippable/opt: BAfxd5x_Rl6xtYb1fJ1oTw + beetmover-checksums-uz-linux64-shippable/opt: A2zTp94tR1eDZ9Ze9bgJig + beetmover-checksums-uz-macosx64-shippable/opt: fJxFGbMxTeyhTi5McGMhoA + beetmover-checksums-uz-win32-shippable/opt: DdpINKkpRlqW_Knl88sMfw + beetmover-checksums-uz-win64-aarch64-shippable/opt: JBR3nZjZTWSWyvda1z5pug + beetmover-checksums-uz-win64-shippable/opt: DwTaCfS3QNS2H_JqXFjGRg + beetmover-checksums-vi-linux-shippable/opt: EDsrntbJTRioG4KkNwLKIg + beetmover-checksums-vi-linux64-shippable/opt: DCL33tlKRGWgTcno0PCrWQ + beetmover-checksums-vi-macosx64-shippable/opt: RDf9NrTrQtGJNuDWfufLXw + beetmover-checksums-vi-win32-shippable/opt: UNQYeX5tTcC_lTUlSrmeiQ + beetmover-checksums-vi-win64-aarch64-shippable/opt: WLTI5OFpRWmX9e_HeYqzDw + beetmover-checksums-vi-win64-shippable/opt: L6S76vLzTzOyVNi9oa8CkA + beetmover-checksums-win32-shippable/opt: MgrevKNnT1C_1uLOGRV4dQ + beetmover-checksums-win64-aarch64-shippable/opt: My4iKouASzqzdYtrP3ke6Q + beetmover-checksums-win64-shippable/opt: LDNXRFZlT_q5iDPsignZcQ + beetmover-checksums-xh-linux-shippable/opt: CMxH1hMjStKVCmPk9DJYkw + beetmover-checksums-xh-linux64-shippable/opt: AK44lgJJSO6fqL2Sfa-b3g + beetmover-checksums-xh-macosx64-shippable/opt: eW26LzNeQcifWIJeCxdcrw + beetmover-checksums-xh-win32-shippable/opt: FUe_cFvWQUiilbPXpoyiEg + beetmover-checksums-xh-win64-aarch64-shippable/opt: D34EAY-6TP20HVB6VczL4Q + beetmover-checksums-xh-win64-shippable/opt: ShV5ioQ-Sfq-u6-PIP0EzQ + beetmover-checksums-zh-CN-linux-shippable/opt: WjKaoZQNQDaLSoYbPMw-iw + beetmover-checksums-zh-CN-linux64-shippable/opt: On1hx7TmSwusK2gmCR3OwQ + beetmover-checksums-zh-CN-macosx64-shippable/opt: OrNCCa_fQ5urFJ-vELxgsw + beetmover-checksums-zh-CN-win32-shippable/opt: YkPlLTHmQHaft41WLbfk_g + beetmover-checksums-zh-CN-win64-aarch64-shippable/opt: B8uXFBP5RTS73HpkkHN8BA + beetmover-checksums-zh-CN-win64-shippable/opt: cKBty6PhSS64SdsV2pT2mA + beetmover-checksums-zh-TW-linux-shippable/opt: OjloR8tgTsCtAPzt2IR-fw + beetmover-checksums-zh-TW-linux64-shippable/opt: ciVZ0HIlQk69ebZfsncVGA + beetmover-checksums-zh-TW-macosx64-shippable/opt: HE6XVdX4QFy_FBwxZJHLBA + beetmover-checksums-zh-TW-win32-shippable/opt: A7OW6tR_TrmVvinYhpX8cw + beetmover-checksums-zh-TW-win64-aarch64-shippable/opt: Sbv30I3CT7aX5UFTM5cOtw + beetmover-checksums-zh-TW-win64-shippable/opt: HVvEibBjQWKPhlWnDhdYZQ + beetmover-repackage-ach-linux-shippable/opt: IkzCa3SUTyC1dIZZIy2iYQ + beetmover-repackage-ach-linux64-shippable/opt: Z6iX1-5BRnSR53AzrOSc6Q + beetmover-repackage-ach-macosx64-shippable/opt: RabuTCtIQp2Tb5NyioJKuA + beetmover-repackage-ach-win32-shippable/opt: ELetT2EDQKerUaJ5Bh7umw + beetmover-repackage-ach-win64-aarch64-shippable/opt: GPRX4VQjQreZQkCrpLL2Sg + beetmover-repackage-ach-win64-shippable/opt: LbKTjGXgSqC2m50xJ3krcg + beetmover-repackage-af-linux-shippable/opt: Li4DfLGURnePMlhjYqJ0-w + beetmover-repackage-af-linux64-shippable/opt: O2Y2YJaYR2eDkY7LlJXBsg + beetmover-repackage-af-macosx64-shippable/opt: IuZoIc9yQCuiVwlGFeX6rA + beetmover-repackage-af-win32-shippable/opt: FUVJJpK1Qaerxv0iXkFd7Q + beetmover-repackage-af-win64-aarch64-shippable/opt: Cl5Qc6nvTZawejEBsGipmQ + beetmover-repackage-af-win64-shippable/opt: JXmr1EsGRoWbsDA7fZo-rQ + beetmover-repackage-an-linux-shippable/opt: YDz3hqVfQtWiQqJh8eE_Uw + beetmover-repackage-an-linux64-shippable/opt: Pt8p6M-lSIGj92SxSzyRbQ + beetmover-repackage-an-macosx64-shippable/opt: c1k6bNf1Rvys66G5jNaJsw + beetmover-repackage-an-win32-shippable/opt: d-XOXIE5S8qI8pU6Nz4k6w + beetmover-repackage-an-win64-aarch64-shippable/opt: XsOEpBW5REOkj0YEXiOBGg + beetmover-repackage-an-win64-shippable/opt: QgX8IWhxTRu76weHnNkXGQ + beetmover-repackage-ar-linux-shippable/opt: XbjgaXhaSa6f5Jy7CfgKFQ + beetmover-repackage-ar-linux64-shippable/opt: SSbWccGkToiStbZNequ8yg + beetmover-repackage-ar-macosx64-shippable/opt: Cw5hgWdnSii76FkU19_gNw + beetmover-repackage-ar-win32-shippable/opt: IjYWKg0NQ5C921VfpWaQRA + beetmover-repackage-ar-win64-aarch64-shippable/opt: YDjdiashQYuV56QCEnq4bQ + beetmover-repackage-ar-win64-shippable/opt: fL6Gggs4TUO_oJTNCLxrMg + beetmover-repackage-ast-linux-shippable/opt: Swpi33siToOv6Aq1CS-6xA + beetmover-repackage-ast-linux64-shippable/opt: KuWMRiCXQdSdyj65KTKSmg + beetmover-repackage-ast-macosx64-shippable/opt: d8OTtYsVS-uDWSg2FItFzw + beetmover-repackage-ast-win32-shippable/opt: JHV8EeO7Rcu4A7oLmmzxLQ + beetmover-repackage-ast-win64-aarch64-shippable/opt: R36L4j75T26uyca1VBfrHw + beetmover-repackage-ast-win64-shippable/opt: ZV2PXw52SU2lLsTPbFTQXg + beetmover-repackage-az-linux-shippable/opt: YD0pa2rmTrqYevU-qr53Fg + beetmover-repackage-az-linux64-shippable/opt: DR5oL51zRiu_w492exZxww + beetmover-repackage-az-macosx64-shippable/opt: H07EwUYCTKCYG34p6YbVVQ + beetmover-repackage-az-win32-shippable/opt: KQoC_ee6ReGpTVNEN3De2w + beetmover-repackage-az-win64-aarch64-shippable/opt: f9uqUZVHT-izNnd3nPMGXg + beetmover-repackage-az-win64-shippable/opt: Zc85tBSbQ8iARzk5Jj0pMQ + beetmover-repackage-be-linux-shippable/opt: L1xraXgsQZmNfkuex8Ii8A + beetmover-repackage-be-linux64-shippable/opt: RA17Yu0ITMWTTcgGzEvWww + beetmover-repackage-be-macosx64-shippable/opt: bETT3i48QzaG8YTnsZ4TbQ + beetmover-repackage-be-win32-shippable/opt: VSZ2EhmyRFKeEwMhwR5vzQ + beetmover-repackage-be-win64-aarch64-shippable/opt: WVo8LdyzR-2LMzmlt63pJw + beetmover-repackage-be-win64-shippable/opt: Lbl9cUBhQbSBJT4lOCYWQQ + beetmover-repackage-bg-linux-shippable/opt: CAfkL-yGT3awE9bH8qChqg + beetmover-repackage-bg-linux64-shippable/opt: IUsFxOFTQyqTzfPAdfEzCg + beetmover-repackage-bg-macosx64-shippable/opt: FXzKMs8-Q7aUVinlZhPhUw + beetmover-repackage-bg-win32-shippable/opt: PtcHzkkpT56i1EANzXzuFg + beetmover-repackage-bg-win64-aarch64-shippable/opt: Nzkf3dYKRgarir4Acg-CpA + beetmover-repackage-bg-win64-shippable/opt: Ev8alDCmTZaSzXdXGiUlwA + beetmover-repackage-bn-linux-shippable/opt: aj5t2Xw_SryyijWoCiYK9g + beetmover-repackage-bn-linux64-shippable/opt: VMpT34yOQ3qhU_MsV5jS3Q + beetmover-repackage-bn-macosx64-shippable/opt: GYXV1w3FToeU_T5H3UbKzQ + beetmover-repackage-bn-win32-shippable/opt: btTso3_sRZuSX78oc873pg + beetmover-repackage-bn-win64-aarch64-shippable/opt: Cm6OI2qSTOGl7DvpIZHVQQ + beetmover-repackage-bn-win64-shippable/opt: Eb1gg7BFQZGGw9VM2uAFhg + beetmover-repackage-br-linux-shippable/opt: AjP6iukHTtqNrRRWUN2O1Q + beetmover-repackage-br-linux64-shippable/opt: RIUZDudEQYW10EJ3q8T4Mw + beetmover-repackage-br-macosx64-shippable/opt: V7Qe1xKVSEiScOqc2C9oSg + beetmover-repackage-br-win32-shippable/opt: I9OliKM7QZykbxtOQMYsxw + beetmover-repackage-br-win64-aarch64-shippable/opt: FWWOfwHfRSmLFzx2pXL3ow + beetmover-repackage-br-win64-shippable/opt: VPnedqp8TmOIQ_qSBPf5NQ + beetmover-repackage-bs-linux-shippable/opt: WlUpC5faSraJxIZ6XURasQ + beetmover-repackage-bs-linux64-shippable/opt: Op9-_RYoSvKOcTHrbz1atA + beetmover-repackage-bs-macosx64-shippable/opt: AzFnHoWcTG2N5Rlhm_n3RQ + beetmover-repackage-bs-win32-shippable/opt: d0VBB9EKSz2FxJ4q8Npiig + beetmover-repackage-bs-win64-aarch64-shippable/opt: IKSezGS2R4OdehH6f4Gyfw + beetmover-repackage-bs-win64-shippable/opt: ei1y7_PrTwmpod2rLZ9cwQ + beetmover-repackage-ca-linux-shippable/opt: EmgTtRhJQR2T0xttaOr2og + beetmover-repackage-ca-linux64-shippable/opt: Tb_G4gJmTBO9MFrghBoSTw + beetmover-repackage-ca-macosx64-shippable/opt: Sk15y0MeTtScULLy0BhpWA + beetmover-repackage-ca-valencia-linux-shippable/opt: ZimH_49bQ4K6K5p26WEV5g + beetmover-repackage-ca-valencia-linux64-shippable/opt: MExZf8GORwKcRzjuUpGjnw + beetmover-repackage-ca-valencia-macosx64-shippable/opt: GjjZ3Z_dQB-G2QcMk3mgMw + beetmover-repackage-ca-valencia-win32-shippable/opt: VSQHiDDiR9GqHk_OhbyPxA + beetmover-repackage-ca-valencia-win64-aarch64-shippable/opt: VbjDQwD9SUufI2nYC0FUow + beetmover-repackage-ca-valencia-win64-shippable/opt: MIzeR1X9SzOYcbPRF2xdTA + beetmover-repackage-ca-win32-shippable/opt: BBDp1QfYTbOuwypyBaw7rw + beetmover-repackage-ca-win64-aarch64-shippable/opt: POiE8btmRgqrObGDq8YRgw + beetmover-repackage-ca-win64-shippable/opt: ddxChzQ6TqOdv01b7qwOjQ + beetmover-repackage-cak-linux-shippable/opt: QWLq5Y77SVK7IA3xVlBDYw + beetmover-repackage-cak-linux64-shippable/opt: cCVzF9HjS4uEMYFUXjGiJg + beetmover-repackage-cak-macosx64-shippable/opt: TNyAgJsGTQuvuiiP_e-tog + beetmover-repackage-cak-win32-shippable/opt: RbyTATU2QjqyPfoSexgaFw + beetmover-repackage-cak-win64-aarch64-shippable/opt: SpzDhZ01SEaDZ66yVLgRuA + beetmover-repackage-cak-win64-shippable/opt: R79qAjRHSeKJDDBaTnhQNQ + beetmover-repackage-cs-linux-shippable/opt: PdSbmW_1Qkmq_lPlJeceIg + beetmover-repackage-cs-linux64-shippable/opt: cYN-cWnSRGi3j0gZ7PSOpg + beetmover-repackage-cs-macosx64-shippable/opt: LcCJk-0cT8uF6HPCNOKuXw + beetmover-repackage-cs-win32-shippable/opt: YUB4xKsQQaKzVGCx7EqfCQ + beetmover-repackage-cs-win64-aarch64-shippable/opt: ESbom0GqRsmC35ozZ7o8Lw + beetmover-repackage-cs-win64-shippable/opt: bzJmT2dCT0qxJoZiaFlU7A + beetmover-repackage-cy-linux-shippable/opt: QyvC6I28TpCK8BQMG7QcSA + beetmover-repackage-cy-linux64-shippable/opt: Hb2geMisRHuHoDrpzq8FbA + beetmover-repackage-cy-macosx64-shippable/opt: QULqD_jWQFaXj3kqLX3Log + beetmover-repackage-cy-win32-shippable/opt: EC0Y392yT3KL9KfcEs83wA + beetmover-repackage-cy-win64-aarch64-shippable/opt: EaKzHriSTWiHSqdA7ONOfw + beetmover-repackage-cy-win64-shippable/opt: QzH7edqbQ2S_9og8SwQXvQ + beetmover-repackage-da-linux-shippable/opt: OsY6r7QtRo-ZVAg0c0NO0g + beetmover-repackage-da-linux64-shippable/opt: DK9SP627S3KRKPXpxwf-1w + beetmover-repackage-da-macosx64-shippable/opt: Vuz9KOktTjenD9CcCOxOuw + beetmover-repackage-da-win32-shippable/opt: cVhS7LxUQay4h_5ft_dw1g + beetmover-repackage-da-win64-aarch64-shippable/opt: e-p1ocXOR-WKFX1JTUDQaQ + beetmover-repackage-da-win64-shippable/opt: QoKiIMlAQiWJ3jiLOaXs2Q + beetmover-repackage-de-linux-shippable/opt: eEMt3hzxS5-2U8ZjZUSMEg + beetmover-repackage-de-linux64-shippable/opt: b2IjZPzmSpCRj_wPOMO9wQ + beetmover-repackage-de-macosx64-shippable/opt: MBWu02JoRxGMUnKMVUZ7bg + beetmover-repackage-de-win32-shippable/opt: f2asaR3DRWmx4gaKyiBLCg + beetmover-repackage-de-win64-aarch64-shippable/opt: T7M-6JZ4RZmgTKzGcKWknw + beetmover-repackage-de-win64-shippable/opt: QkZOcWc1R3i51A3DxDwPMg + beetmover-repackage-dsb-linux-shippable/opt: e4oEz7PgS3yUJBDejmQPiQ + beetmover-repackage-dsb-linux64-shippable/opt: N4shLQlGQ5iFdbqD7fmrmA + beetmover-repackage-dsb-macosx64-shippable/opt: IwqYOFx9TAuGynIAiZsucQ + beetmover-repackage-dsb-win32-shippable/opt: cK7LMs0tRmCPFBFi1pQSlw + beetmover-repackage-dsb-win64-aarch64-shippable/opt: OZURKr4lSHCu4ftMybVPew + beetmover-repackage-dsb-win64-shippable/opt: SL6D3e_MRuGu4Nghu4wxnw + beetmover-repackage-el-linux-shippable/opt: YIPDVfqQTFWW1Fct-1YXSQ + beetmover-repackage-el-linux64-shippable/opt: Ftp6FtseQTK8EixSY7Gbbw + beetmover-repackage-el-macosx64-shippable/opt: TKx3XNkeQhKsbm2BHvBOYA + beetmover-repackage-el-win32-shippable/opt: V8-AGl7yTju9wqqt0TERHA + beetmover-repackage-el-win64-aarch64-shippable/opt: bePqfmq8QeO3oP1no5BSXg + beetmover-repackage-el-win64-shippable/opt: TnLzRhuDQ0ysyc8QDj6Cog + beetmover-repackage-en-CA-linux-shippable/opt: bbwraNPYS76QTetsKc-mnw + beetmover-repackage-en-CA-linux64-shippable/opt: CYcjIfrnReGmYECs-_Ec2A + beetmover-repackage-en-CA-macosx64-shippable/opt: Cs4NDlgFS9OQhc43fUwS_A + beetmover-repackage-en-CA-win32-shippable/opt: WgY1X2bqRp26borJ48hbVw + beetmover-repackage-en-CA-win64-aarch64-shippable/opt: cnn1syrAQ7agbxl5kSvcaQ + beetmover-repackage-en-CA-win64-shippable/opt: W1iVJ0e0Qsmbf3an4sOYhw + beetmover-repackage-en-GB-linux-shippable/opt: fep1UxmwRu2_JCRnsg_NHw + beetmover-repackage-en-GB-linux64-shippable/opt: QxCj7zOaQlSUs4dRYO9puA + beetmover-repackage-en-GB-macosx64-shippable/opt: PKh33moAT9KB51Bt2p-UvQ + beetmover-repackage-en-GB-win32-shippable/opt: BwUxrd7OQWaUTyMC9bl0EA + beetmover-repackage-en-GB-win64-aarch64-shippable/opt: OkVBXPrwRWWma3Ci4jF9Zg + beetmover-repackage-en-GB-win64-shippable/opt: KUuTA_4LSaKuQQLpTzdTxA + beetmover-repackage-eo-linux-shippable/opt: EbzvZNo0QDa9WfyKVT0T-Q + beetmover-repackage-eo-linux64-shippable/opt: fD3OP3-JRK2wkpuJp_fx5Q + beetmover-repackage-eo-macosx64-shippable/opt: CKFnQ05PROGuVylqZ6Cs5w + beetmover-repackage-eo-win32-shippable/opt: X34t_fAAQmuiKKy8LxbGUQ + beetmover-repackage-eo-win64-aarch64-shippable/opt: GvSIdiStSx6vRMeJc2wRnA + beetmover-repackage-eo-win64-shippable/opt: TrS4IhIDSuKKQRH9oxfnVA + beetmover-repackage-es-AR-linux-shippable/opt: QnFed-SPToyY732B0yxmLg + beetmover-repackage-es-AR-linux64-shippable/opt: fGXP0mrlSX6258vZrGekaQ + beetmover-repackage-es-AR-macosx64-shippable/opt: DB77FoKSTGqDEiJcFD7RWQ + beetmover-repackage-es-AR-win32-shippable/opt: EPbIYHN4RnesptjBou8gVQ + beetmover-repackage-es-AR-win64-aarch64-shippable/opt: OxnV64a7QcieGzDRlcwgUg + beetmover-repackage-es-AR-win64-shippable/opt: Vs3R0zmCQHqRenuK8PyW1g + beetmover-repackage-es-CL-linux-shippable/opt: bN4vXGxHQ26N9ra0uxw8nA + beetmover-repackage-es-CL-linux64-shippable/opt: JI0D0B_CTzKRFl0hhyoXgw + beetmover-repackage-es-CL-macosx64-shippable/opt: AFi6JmQzRSi77vRd98koig + beetmover-repackage-es-CL-win32-shippable/opt: B6Pi241OQY2oVacpBVdl5g + beetmover-repackage-es-CL-win64-aarch64-shippable/opt: S5zFN166SHaDw7DCg5LwlQ + beetmover-repackage-es-CL-win64-shippable/opt: eONyKrNQTgqHIvNBsepmOA + beetmover-repackage-es-ES-linux-shippable/opt: AaBBZhsGQTeGqDrNkDbK1g + beetmover-repackage-es-ES-linux64-shippable/opt: QI1J_IxMSAOQtZESWeSmFw + beetmover-repackage-es-ES-macosx64-shippable/opt: fzwRuV4nSr-LZzWIxMwRGQ + beetmover-repackage-es-ES-win32-shippable/opt: QUns4gtJR56EW4YNGXYa2w + beetmover-repackage-es-ES-win64-aarch64-shippable/opt: KbbS2XchRJSWvnsU5toVSg + beetmover-repackage-es-ES-win64-shippable/opt: OpONNHS3S_WeNk5YaPoeJg + beetmover-repackage-es-MX-linux-shippable/opt: Oh6BsYyNRlmY8JY0Cotb9w + beetmover-repackage-es-MX-linux64-shippable/opt: JkWkCcz3TBGENdout1I4aw + beetmover-repackage-es-MX-macosx64-shippable/opt: GKByV8B3T4WVi3AechIs1w + beetmover-repackage-es-MX-win32-shippable/opt: RN2xGyUBRuCSuydBlYVAdg + beetmover-repackage-es-MX-win64-aarch64-shippable/opt: Okz8BCP1TQGvarJ2KVd4zA + beetmover-repackage-es-MX-win64-shippable/opt: cJdJ6udkQ7W1NTBzkBDtvA + beetmover-repackage-et-linux-shippable/opt: SgVytjDKTmC0MTw6LvvO2A + beetmover-repackage-et-linux64-shippable/opt: cMRnRgYHTZOqRs8TQw9Anw + beetmover-repackage-et-macosx64-shippable/opt: QhilGgqbQ-yvvXTJRq6afg + beetmover-repackage-et-win32-shippable/opt: Pq-CVJ9lQ323moQ9N84Vfw + beetmover-repackage-et-win64-aarch64-shippable/opt: Un8eltw1TK6XR3Ik7dlxZw + beetmover-repackage-et-win64-shippable/opt: UpGn8Ie4RDOeaM-KUOxugw + beetmover-repackage-eu-linux-shippable/opt: Ef0Ta9h5R0GfeudUwtqfng + beetmover-repackage-eu-linux64-shippable/opt: Z5CaPdwpQgiULTeTTYKp0g + beetmover-repackage-eu-macosx64-shippable/opt: WhIhs3qmTBi4Aib3ftGfvQ + beetmover-repackage-eu-win32-shippable/opt: VLod0nTyS_Wm5GcbXLwlbA + beetmover-repackage-eu-win64-aarch64-shippable/opt: Cp0nUsTUQN-FjK6n5LWl3g + beetmover-repackage-eu-win64-shippable/opt: IdbU_wWLQxu81SzVqDyM-A + beetmover-repackage-fa-linux-shippable/opt: O0jiKylRRrSMyJ4GtaSclA + beetmover-repackage-fa-linux64-shippable/opt: Fp0hpwMHSYCRw9OkbUGN0g + beetmover-repackage-fa-macosx64-shippable/opt: dCa35emPTSa6MpaHRWTVOQ + beetmover-repackage-fa-win32-shippable/opt: SN6lX9CASWClp2cq2w3ozw + beetmover-repackage-fa-win64-aarch64-shippable/opt: Oul1y69gTcO3bGyFmVpuyw + beetmover-repackage-fa-win64-shippable/opt: c24BpETpSy-nI6ltkS80VQ + beetmover-repackage-ff-linux-shippable/opt: NzfL8x9qRe6mhZqDpIHsDQ + beetmover-repackage-ff-linux64-shippable/opt: SlkzZ0mgSzG33LOk8hrOPQ + beetmover-repackage-ff-macosx64-shippable/opt: Ueood4DHRbu_nr2a-kbkoQ + beetmover-repackage-ff-win32-shippable/opt: OnjVSou1TuOSHlx4sTiNGw + beetmover-repackage-ff-win64-aarch64-shippable/opt: BhlwEMCsT42y46rVjMORFg + beetmover-repackage-ff-win64-shippable/opt: b3WIp21-RRqydbwSSiKJNA + beetmover-repackage-fi-linux-shippable/opt: Zd9tmLjVSXGlxm0MsoOJEQ + beetmover-repackage-fi-linux64-shippable/opt: OAE3NNAUT7ibm73wpjAzCg + beetmover-repackage-fi-macosx64-shippable/opt: RnJrtzP2QMGCRhgP_vyHbg + beetmover-repackage-fi-win32-shippable/opt: WTbl0viySN67BCChp_jGUg + beetmover-repackage-fi-win64-aarch64-shippable/opt: aN4LuPiaR-eE4RhanOk7Yg + beetmover-repackage-fi-win64-shippable/opt: HZcP1sxrRJGGGhoab6Q29Q + beetmover-repackage-fr-linux-shippable/opt: IeDqN3UmT--IqDyrHI0CZA + beetmover-repackage-fr-linux64-shippable/opt: R_DWsModSZC9ajliUY_edg + beetmover-repackage-fr-macosx64-shippable/opt: clPkBr8BSiCqRQpd9-dszg + beetmover-repackage-fr-win32-shippable/opt: NDtEReRHQ0W4q6Q8WSI3TA + beetmover-repackage-fr-win64-aarch64-shippable/opt: Dhp7fGpNTnSCkTKCAgTjSA + beetmover-repackage-fr-win64-shippable/opt: MwKJqTSKTeqzjFOxaYHM3g + beetmover-repackage-fur-linux-shippable/opt: VgMk7U_hSoS9tMDT4fTKpQ + beetmover-repackage-fur-linux64-shippable/opt: E5aO_OBNTNKytMlNCSMEwQ + beetmover-repackage-fur-macosx64-shippable/opt: Ufs0X0a2Q3ORC-wbf1X8FA + beetmover-repackage-fur-win32-shippable/opt: fy8lZwOMSzCcbYTlN5qKuA + beetmover-repackage-fur-win64-aarch64-shippable/opt: RpX1_kQGSsicqjjzLufJIg + beetmover-repackage-fur-win64-shippable/opt: RqXYAtqkR4a85T6pJautIg + beetmover-repackage-fy-NL-linux-shippable/opt: TeZodvZcT42MnG7gRtecmA + beetmover-repackage-fy-NL-linux64-shippable/opt: X1sgTDWNTpaJHsPMcvvxwA + beetmover-repackage-fy-NL-macosx64-shippable/opt: cUsizFXMQmuH0xuJmckTBQ + beetmover-repackage-fy-NL-win32-shippable/opt: XsajDZLeRgKP9x72KuI6SA + beetmover-repackage-fy-NL-win64-aarch64-shippable/opt: VPO9J5XSRQq0rwPRbG2XVw + beetmover-repackage-fy-NL-win64-shippable/opt: R7x59aTqTh6d5QVhrVMf7w + beetmover-repackage-ga-IE-linux-shippable/opt: OcwdeGZgQhuHf9xu9vvcyw + beetmover-repackage-ga-IE-linux64-shippable/opt: W6BV61YXQX6I0YXGj5PmDg + beetmover-repackage-ga-IE-macosx64-shippable/opt: cZuoTDZOQIucOsgxIuKtuw + beetmover-repackage-ga-IE-win32-shippable/opt: Zxwdtj4uRHu_68L-OxVIsA + beetmover-repackage-ga-IE-win64-aarch64-shippable/opt: VTteYuN1RoiHT_j4tT5cJw + beetmover-repackage-ga-IE-win64-shippable/opt: J-orGpfnRSOnVZfeFjfAZg + beetmover-repackage-gd-linux-shippable/opt: ZiW3Wfn9SiqKxyoDDurrng + beetmover-repackage-gd-linux64-shippable/opt: cfl9juX7Qq-5ikP3Ozy_rA + beetmover-repackage-gd-macosx64-shippable/opt: Y1Uv-6vWSPaY3kIH3hV2iw + beetmover-repackage-gd-win32-shippable/opt: S-sH9MvfTQGZ59__QTjpjw + beetmover-repackage-gd-win64-aarch64-shippable/opt: V_n3w5HdSFW7BXGeEnCxzg + beetmover-repackage-gd-win64-shippable/opt: awLXhLYwR86D8hIXahu05g + beetmover-repackage-gl-linux-shippable/opt: Pjo34EvoTOmx7rFQ-A_bgA + beetmover-repackage-gl-linux64-shippable/opt: DvscRJBlR1qaTStBVplmAw + beetmover-repackage-gl-macosx64-shippable/opt: W-X9-ioTSLGK9km25V6ScQ + beetmover-repackage-gl-win32-shippable/opt: LqqJZn8tTgqhWiYMK2JRbw + beetmover-repackage-gl-win64-aarch64-shippable/opt: ZpiOFDPzQr-ui5goagpLWg + beetmover-repackage-gl-win64-shippable/opt: OYvaRMXJRWyKd3uvqojvkQ + beetmover-repackage-gn-linux-shippable/opt: CH34lJa_RmSB5IMl_ZXDEg + beetmover-repackage-gn-linux64-shippable/opt: XduQOkAaQ0KezpGlICKTaQ + beetmover-repackage-gn-macosx64-shippable/opt: UGggz2RgRTWFdvERgJudYQ + beetmover-repackage-gn-win32-shippable/opt: NNqY6UoUSXOEtfhD8yAMDw + beetmover-repackage-gn-win64-aarch64-shippable/opt: Sqe3jD6lQh-fJW2H92-wIA + beetmover-repackage-gn-win64-shippable/opt: RVExmLfsSA6efwL5dYw6CA + beetmover-repackage-gu-IN-linux-shippable/opt: SgM3NGfpQPOyDOL6T6YtLQ + beetmover-repackage-gu-IN-linux64-shippable/opt: X6aIfzZDQ7OlDfPjaSn-bg + beetmover-repackage-gu-IN-macosx64-shippable/opt: FOYfHK6NTHSn7lleVhmW2w + beetmover-repackage-gu-IN-win32-shippable/opt: MmM8yWkPQCGmjoIbUQs5eQ + beetmover-repackage-gu-IN-win64-aarch64-shippable/opt: C9_9ZgqVRXW4gqk21bjgBg + beetmover-repackage-gu-IN-win64-shippable/opt: A6M3Y7NIS2-4oSx1qsg2cQ + beetmover-repackage-he-linux-shippable/opt: S7TUcBotQJOuoiW9CcQEsw + beetmover-repackage-he-linux64-shippable/opt: UU1AISDLQF65tmLCh22Ceg + beetmover-repackage-he-macosx64-shippable/opt: Igo9vm1-TQWlRJQc-aYLTQ + beetmover-repackage-he-win32-shippable/opt: Jb28iq0OTXuezflIAbxnrw + beetmover-repackage-he-win64-aarch64-shippable/opt: Nk1utc_gSsW6Bwc4gRdnXA + beetmover-repackage-he-win64-shippable/opt: RtW_9uieTSWPdEKZifF5-g + beetmover-repackage-hi-IN-linux-shippable/opt: clDHC68YSc67K3ItNp1DMA + beetmover-repackage-hi-IN-linux64-shippable/opt: fdGCw25lSb-wNH5TMxiNtw + beetmover-repackage-hi-IN-macosx64-shippable/opt: GhOCIQB9QTifopqh8ULHyA + beetmover-repackage-hi-IN-win32-shippable/opt: JfnnNZzzRfe5n6A-Bc5bvQ + beetmover-repackage-hi-IN-win64-aarch64-shippable/opt: VA7YUMSiQkWCRz0pM_KzRg + beetmover-repackage-hi-IN-win64-shippable/opt: TrXdb5GpRzu3eHY-q_-MCA + beetmover-repackage-hr-linux-shippable/opt: Zsu453d4Tqquv_zhJQPdFg + beetmover-repackage-hr-linux64-shippable/opt: IB15WaNMS7qyU2gFv-vE6g + beetmover-repackage-hr-macosx64-shippable/opt: HH1Q5xyLSXqnzr0lgPff3Q + beetmover-repackage-hr-win32-shippable/opt: KSskHLhuRi2usoqYdIHgjA + beetmover-repackage-hr-win64-aarch64-shippable/opt: BrhnTMgwRo6Uo75k7UC35Q + beetmover-repackage-hr-win64-shippable/opt: NVhygiysRt2TTU0We_aGrQ + beetmover-repackage-hsb-linux-shippable/opt: VefdZH9MSoG-WIBow0o7Dg + beetmover-repackage-hsb-linux64-shippable/opt: TU1DolExQ0OHOsKvL9EzeA + beetmover-repackage-hsb-macosx64-shippable/opt: fvGDQJoHRlakR7Fh8bR85A + beetmover-repackage-hsb-win32-shippable/opt: LxDsvPQ0S9eRS2sAv6sPCQ + beetmover-repackage-hsb-win64-aarch64-shippable/opt: IcrQSIGRST6e7kRgZeh4uQ + beetmover-repackage-hsb-win64-shippable/opt: LC38YVhJTH2CBM9MIJn9JQ + beetmover-repackage-hu-linux-shippable/opt: IjZJdG8YQgqM17tZ6DAh1A + beetmover-repackage-hu-linux64-shippable/opt: ZHOUXpThRJSka-euMRxaRw + beetmover-repackage-hu-macosx64-shippable/opt: ey6W8aQcTK66tVOWA-Hn1A + beetmover-repackage-hu-win32-shippable/opt: dEMGfH09Rc2Fh4oiTO85VA + beetmover-repackage-hu-win64-aarch64-shippable/opt: RZDXmmcZT_O9OyhkMxpsSQ + beetmover-repackage-hu-win64-shippable/opt: ci6c3VNlS0qU6yvcvKJYbA + beetmover-repackage-hy-AM-linux-shippable/opt: Qiok3Q7QQ1G3CDXiND7bug + beetmover-repackage-hy-AM-linux64-shippable/opt: fq_Nd38kR1qSAqeZ51OwjQ + beetmover-repackage-hy-AM-macosx64-shippable/opt: Tr-IFWZ_Q46WZtDal5FYsA + beetmover-repackage-hy-AM-win32-shippable/opt: MGyVKjsmSEuL59-VrHa-5A + beetmover-repackage-hy-AM-win64-aarch64-shippable/opt: RFZA4fOiTLeIt-aJhnbGhA + beetmover-repackage-hy-AM-win64-shippable/opt: E98g_UmLTXiGfa2gAt7rnQ + beetmover-repackage-ia-linux-shippable/opt: YE94Z49TQNCc8-Am8eMRWA + beetmover-repackage-ia-linux64-shippable/opt: Hnhe29qpRmyvUovuELZcfw + beetmover-repackage-ia-macosx64-shippable/opt: P6Kn0ozYSe2_C9IWLe9Zng + beetmover-repackage-ia-win32-shippable/opt: US9mIlsfTTe6swB_Z2fR9A + beetmover-repackage-ia-win64-aarch64-shippable/opt: F0LwR3lPQYq8h41JxPT_Bg + beetmover-repackage-ia-win64-shippable/opt: GZJuzLnxQraq_EX9MKEDGA + beetmover-repackage-id-linux-shippable/opt: ZhzJVKOrRXKObZVqUbtyHA + beetmover-repackage-id-linux64-shippable/opt: JoHC7qL5R92X8vc5lIN2GA + beetmover-repackage-id-macosx64-shippable/opt: HugK8VqHThKQhzsDqVvbVg + beetmover-repackage-id-win32-shippable/opt: DqKiWJPaS6Wy_2qyzUHavA + beetmover-repackage-id-win64-aarch64-shippable/opt: PjyiEaE6Q4uj1Ic689mmog + beetmover-repackage-id-win64-shippable/opt: X3qlwKEyQzGA23NyEMH3fw + beetmover-repackage-is-linux-shippable/opt: EHz6mi6BTLGSlEp389R5Yg + beetmover-repackage-is-linux64-shippable/opt: eGYI4UFZT9KheLLImjsSUA + beetmover-repackage-is-macosx64-shippable/opt: dBKliY5OTVqKXdkvZMpH_Q + beetmover-repackage-is-win32-shippable/opt: GQFovShdSSC1mFXETrglZQ + beetmover-repackage-is-win64-aarch64-shippable/opt: W_CEurLlQLWf_cMDdye2TQ + beetmover-repackage-is-win64-shippable/opt: Z0fLpNx1Qyq0NwhYh3FDsg + beetmover-repackage-it-linux-shippable/opt: C7flo_hoS-2vX6crpWO2jg + beetmover-repackage-it-linux64-shippable/opt: Wx0b9FtNQqSx7iZpCelmOw + beetmover-repackage-it-macosx64-shippable/opt: BQg9wZG1Rai4-utOE2X7zw + beetmover-repackage-it-win32-shippable/opt: Jpr7AJgQR4yeYRmjKYmJ9Q + beetmover-repackage-it-win64-aarch64-shippable/opt: bLgATtsGTd6aIoe_osk6vA + beetmover-repackage-it-win64-shippable/opt: a1lxkkWoT4GrNrfYUOZwkQ + beetmover-repackage-ja-JP-mac-macosx64-shippable/opt: aoMWCALDSSOIw2pZFSYpZg + beetmover-repackage-ja-linux-shippable/opt: eIBmZrncQtSmno7toOmHNA + beetmover-repackage-ja-linux64-shippable/opt: WUlyNgOzQfuPXv_3EUa__w + beetmover-repackage-ja-win32-shippable/opt: I82MqOuWSiyjOpnOhhlOdQ + beetmover-repackage-ja-win64-aarch64-shippable/opt: FeEcbkduSeG4LBVyB8VmVg + beetmover-repackage-ja-win64-shippable/opt: Bnm_us3qRLC7OTgjhLbtHQ + beetmover-repackage-ka-linux-shippable/opt: VARFLV3ZTMOPSE2k0HhrKg + beetmover-repackage-ka-linux64-shippable/opt: AUnmifNTRN2KHhXuldbo8g + beetmover-repackage-ka-macosx64-shippable/opt: XFGYYiD2QqSHWaWfSNTWag + beetmover-repackage-ka-win32-shippable/opt: feZlZmxtS3KvLzL77E4c_w + beetmover-repackage-ka-win64-aarch64-shippable/opt: emhlcyvwQsuq9cyWpYPKAQ + beetmover-repackage-ka-win64-shippable/opt: GOx-ugK5S1CQ0NbyIUPHJQ + beetmover-repackage-kab-linux-shippable/opt: VW8o0VHIS9eQafNfmyzndw + beetmover-repackage-kab-linux64-shippable/opt: YyMw2EIJT_iGsbANRGb4PA + beetmover-repackage-kab-macosx64-shippable/opt: dLv_PikMShu_RMs4vppsKQ + beetmover-repackage-kab-win32-shippable/opt: SRdEw5AlSKK502Qln446bw + beetmover-repackage-kab-win64-aarch64-shippable/opt: dotmd1uuTXCXzTo7KPcAsw + beetmover-repackage-kab-win64-shippable/opt: ck7j0pMCRhmVoXpSxB1b7g + beetmover-repackage-kk-linux-shippable/opt: N7J2nJ-iTXGMHdIaG8UGNg + beetmover-repackage-kk-linux64-shippable/opt: BIo7hC_kT6y4bKhb-M-90A + beetmover-repackage-kk-macosx64-shippable/opt: V1RaSHgtTZedpCOoTBJtUw + beetmover-repackage-kk-win32-shippable/opt: dzM17KFUSGqYSNJH43kgKQ + beetmover-repackage-kk-win64-aarch64-shippable/opt: DPHMZcXnRKGbOaOFrhs9fA + beetmover-repackage-kk-win64-shippable/opt: LQTovYOLTYOHndHBD1MdIg + beetmover-repackage-km-linux-shippable/opt: f55W99mrR4y6OZJ7LiuE9w + beetmover-repackage-km-linux64-shippable/opt: aN39Sba8Th6gYzkJXXlPtQ + beetmover-repackage-km-macosx64-shippable/opt: ZA9p1l33RvW0lHZ-LAXNPw + beetmover-repackage-km-win32-shippable/opt: UG4mgkbdRVK3HbzD_X299A + beetmover-repackage-km-win64-aarch64-shippable/opt: d3sirq8PSdqQ6CIWGzuH1Q + beetmover-repackage-km-win64-shippable/opt: ZiyTFaqJTTi2ECRk2--xVQ + beetmover-repackage-kn-linux-shippable/opt: Sd42VibjRo-hAg_J8XyOug + beetmover-repackage-kn-linux64-shippable/opt: Xjv9v2d5SO2o7p_NsfdG3w + beetmover-repackage-kn-macosx64-shippable/opt: BTlEDRtQRX2qwPLHRl5Bvw + beetmover-repackage-kn-win32-shippable/opt: BMB3UXduSf2Bq5UYQScx_Q + beetmover-repackage-kn-win64-aarch64-shippable/opt: COnoFIgqQY2To7numDwFRg + beetmover-repackage-kn-win64-shippable/opt: BqkvnegPR-yFaQktXmU0yA + beetmover-repackage-ko-linux-shippable/opt: LInpyeJSRiqTDvrtPwhvng + beetmover-repackage-ko-linux64-shippable/opt: IGm7ZbwVTeWbWMAqmH7Lsw + beetmover-repackage-ko-macosx64-shippable/opt: HTAs67knTxaoxOP7q2C9vw + beetmover-repackage-ko-win32-shippable/opt: OzP4T0_NQPKuIbwnO2jq3Q + beetmover-repackage-ko-win64-aarch64-shippable/opt: eNlGh17SSM-LwMacnW4SFw + beetmover-repackage-ko-win64-shippable/opt: aQlrTeV2QMKoUHq6YWnZkw + beetmover-repackage-lij-linux-shippable/opt: c0J9kSCtQlmmHeCnA-8XPQ + beetmover-repackage-lij-linux64-shippable/opt: IFKUcqoZSCyb3R3_CuIO5w + beetmover-repackage-lij-macosx64-shippable/opt: d85xruB2S_yPcIqU0YvThg + beetmover-repackage-lij-win32-shippable/opt: Jp2v9F6RRve1g2nROtBlDg + beetmover-repackage-lij-win64-aarch64-shippable/opt: TNAoU4NWTN60VFBxvJY5aw + beetmover-repackage-lij-win64-shippable/opt: Q39EgPkyRiuVEjTYBJbIhQ + beetmover-repackage-linux-shippable/opt: eckkRt5HRgOsaw4XqGPExw + beetmover-repackage-linux64-shippable/opt: AUAahsmmQe2Q51HsoOAZIg + beetmover-repackage-lt-linux-shippable/opt: Td-4v6M7QDOTfqTyHVaQAg + beetmover-repackage-lt-linux64-shippable/opt: E7AEjBbZQBiS8tEfpPQY5g + beetmover-repackage-lt-macosx64-shippable/opt: Shg79qFfTVqQMgEg1iCVvA + beetmover-repackage-lt-win32-shippable/opt: c3R60HgAQtmBpGuO12QEEw + beetmover-repackage-lt-win64-aarch64-shippable/opt: AMp-X4DPQTq09O_xe_4F6w + beetmover-repackage-lt-win64-shippable/opt: DghWX0Z-RSurmRgYCUo5Ug + beetmover-repackage-lv-linux-shippable/opt: HNxVIVvZSyu-5T9JNpMPeA + beetmover-repackage-lv-linux64-shippable/opt: X8eqjqGxQNGOKnVQvyV6tA + beetmover-repackage-lv-macosx64-shippable/opt: N6HPHATMSGmE0f8wJyudDA + beetmover-repackage-lv-win32-shippable/opt: OlfnDkjMQC-H_FbPhIadlA + beetmover-repackage-lv-win64-aarch64-shippable/opt: L7Cdqe6ATJuWXu-Z7B_bdA + beetmover-repackage-lv-win64-shippable/opt: X1L6CsLWScK2vehlem6xtw + beetmover-repackage-macosx64-shippable/opt: MItSdqxjR3C5QJOq6xkZEw + beetmover-repackage-mk-linux-shippable/opt: FN-pa5eyQ8iXqQFm8kC6UA + beetmover-repackage-mk-linux64-shippable/opt: B1FPzfqvTM-EwHalNANj0A + beetmover-repackage-mk-macosx64-shippable/opt: NZzVWZCmTEWFENTFqQxnng + beetmover-repackage-mk-win32-shippable/opt: JEpGvCZBSkK10r-DXkR3eA + beetmover-repackage-mk-win64-aarch64-shippable/opt: HKuhhfCVRkm5oXfEFgdeIg + beetmover-repackage-mk-win64-shippable/opt: HvVCy-iSQFyP_tq6lPRKkA + beetmover-repackage-mr-linux-shippable/opt: WtJLTIWeReyv1P2FCzNBXg + beetmover-repackage-mr-linux64-shippable/opt: CzF4xo9dSsKx_YoNprU2pw + beetmover-repackage-mr-macosx64-shippable/opt: L53aLqViQNG0XtNepl0aCQ + beetmover-repackage-mr-win32-shippable/opt: CsaQiRzTTV6zu6jj3OzgMw + beetmover-repackage-mr-win64-aarch64-shippable/opt: VX6prYmKRhmL4BTRp70m5Q + beetmover-repackage-mr-win64-shippable/opt: HbZB_SBYQNy2DouheWB_8Q + beetmover-repackage-ms-linux-shippable/opt: Jobe-gViTaiUEymSU9ifWA + beetmover-repackage-ms-linux64-shippable/opt: RMYa5bFmQg-XQPftUBs9AQ + beetmover-repackage-ms-macosx64-shippable/opt: fvLndXUzQqCg7iWVlkMd0w + beetmover-repackage-ms-win32-shippable/opt: BJuJ1iIDRY2R6K_8hF2sWg + beetmover-repackage-ms-win64-aarch64-shippable/opt: IH0UMoCwQ3OsRIQtJdz90A + beetmover-repackage-ms-win64-shippable/opt: XYL8T9pzRA6zy73uCFiswg + beetmover-repackage-my-linux-shippable/opt: KAp9ZHPvTwWkMmcJN-OeuQ + beetmover-repackage-my-linux64-shippable/opt: ZPLtjgGFTe2BbwbDkBz4eg + beetmover-repackage-my-macosx64-shippable/opt: Huse7fTlRDSH2mQ7HArtgA + beetmover-repackage-my-win32-shippable/opt: Tw_bMv8NR42xfthdPRc3ug + beetmover-repackage-my-win64-aarch64-shippable/opt: WVWfVbwVSkClbrC1YCLJZA + beetmover-repackage-my-win64-shippable/opt: UPDPxjewR4mAKsuvUMmY0Q + beetmover-repackage-nb-NO-linux-shippable/opt: BmdK1hg_RDWxx5fT-4Vzag + beetmover-repackage-nb-NO-linux64-shippable/opt: OE7clDcFR9m6mldZUPWVug + beetmover-repackage-nb-NO-macosx64-shippable/opt: c_F3sdwfRtylCFp01NHHgA + beetmover-repackage-nb-NO-win32-shippable/opt: VXrD-VYnSK6cmAOtfo8VUg + beetmover-repackage-nb-NO-win64-aarch64-shippable/opt: Y6HPAn1gQKqyoHYxf1qjsA + beetmover-repackage-nb-NO-win64-shippable/opt: NEbBbwoFTYmWcqoTJ9ISBg + beetmover-repackage-ne-NP-linux-shippable/opt: XrfAFxBgRK635PpFzIl_Yg + beetmover-repackage-ne-NP-linux64-shippable/opt: Ciz93KwITOqRYNKR8pkTRA + beetmover-repackage-ne-NP-macosx64-shippable/opt: eKdfO0rcQhStiiXEW2ENdA + beetmover-repackage-ne-NP-win32-shippable/opt: Gt8UFwm0R9S_8s6Z7Xx7NA + beetmover-repackage-ne-NP-win64-aarch64-shippable/opt: cqS94KPOR5CnjDC2puFS5g + beetmover-repackage-ne-NP-win64-shippable/opt: El1cjpLhQqyNsvbzKINpvA + beetmover-repackage-nl-linux-shippable/opt: Q4uSFwKVQz6slRXvj0acrA + beetmover-repackage-nl-linux64-shippable/opt: Dy1P6K-gQk6vJlNvcmrWKw + beetmover-repackage-nl-macosx64-shippable/opt: EIET9b-FQaKyayZRyHABqQ + beetmover-repackage-nl-win32-shippable/opt: BxM13hyATmKhhS3rEUDMLw + beetmover-repackage-nl-win64-aarch64-shippable/opt: WWsw8z33T3GVkOmkB17W_Q + beetmover-repackage-nl-win64-shippable/opt: DPxYbNQ_RhKwbXqUF6IDvQ + beetmover-repackage-nn-NO-linux-shippable/opt: Z1o6mRKRTMq-wZdpyfCAlA + beetmover-repackage-nn-NO-linux64-shippable/opt: VObi5ErHRpyVvu6rj3KbmQ + beetmover-repackage-nn-NO-macosx64-shippable/opt: N5WADjinTdSWR7ap4DbKCw + beetmover-repackage-nn-NO-win32-shippable/opt: Gip2_3BATSOohaWjziQwcA + beetmover-repackage-nn-NO-win64-aarch64-shippable/opt: dwShDp7xRWeAL2Yq-CEd7g + beetmover-repackage-nn-NO-win64-shippable/opt: BNZGyc2vS1yLkQzHMeusLA + beetmover-repackage-oc-linux-shippable/opt: V-oxxmRoRoyJIXc-3Uw6rA + beetmover-repackage-oc-linux64-shippable/opt: RSyOODwoTw2rhQvK3tzqsA + beetmover-repackage-oc-macosx64-shippable/opt: WdqXS6aNQbep_HMwQLV9hg + beetmover-repackage-oc-win32-shippable/opt: IA7PteOQQg-_zq0b7WkqyQ + beetmover-repackage-oc-win64-aarch64-shippable/opt: dFiu46EVTV6IGL8cuIlQXQ + beetmover-repackage-oc-win64-shippable/opt: fkGKehTEQmebvInxcFwmfw + beetmover-repackage-pa-IN-linux-shippable/opt: QwGnIJseRs26MDrjp-NhmQ + beetmover-repackage-pa-IN-linux64-shippable/opt: cplmJnL9QK2PRX2Nw-tgQw + beetmover-repackage-pa-IN-macosx64-shippable/opt: GYI4B2oWS8CN8LyrBKnIdA + beetmover-repackage-pa-IN-win32-shippable/opt: Yr-l8NINT6y9LpNV6M_YCw + beetmover-repackage-pa-IN-win64-aarch64-shippable/opt: TVtsgD12Q2qvGsTOFddHdw + beetmover-repackage-pa-IN-win64-shippable/opt: V9pHXCogT7S1MMQ9WEQW3w + beetmover-repackage-pl-linux-shippable/opt: dT1PMP9uTTaCRvoA8ABsDQ + beetmover-repackage-pl-linux64-shippable/opt: ftN7ZIlGTimDj-L7930y4A + beetmover-repackage-pl-macosx64-shippable/opt: KKtDRqqyTpCdQUb86g0lpQ + beetmover-repackage-pl-win32-shippable/opt: WsZV_yGoS7-rlF4JEpUUmQ + beetmover-repackage-pl-win64-aarch64-shippable/opt: dkJhK3hFSMOAOoTh2Lv7Wg + beetmover-repackage-pl-win64-shippable/opt: Bpd1knK2RVaHinVuVyASKA + beetmover-repackage-pt-BR-linux-shippable/opt: UElY7GoETj260YJO95yLCg + beetmover-repackage-pt-BR-linux64-shippable/opt: DInpcd3GRoSogzRqIHBqfQ + beetmover-repackage-pt-BR-macosx64-shippable/opt: NCBRRICGTN6TMe3KJKCieA + beetmover-repackage-pt-BR-win32-shippable/opt: Bfjrf7tqQvWVTKHGFk2Y_g + beetmover-repackage-pt-BR-win64-aarch64-shippable/opt: dzwf9O05TRG3AQw9eLdi5A + beetmover-repackage-pt-BR-win64-shippable/opt: cZ450sDBTxeY_Z-yf6XcuA + beetmover-repackage-pt-PT-linux-shippable/opt: SPgFGKW3Sy-0afqJClwzsA + beetmover-repackage-pt-PT-linux64-shippable/opt: QbPUtQufSOGJZ_L07Y3faw + beetmover-repackage-pt-PT-macosx64-shippable/opt: XygQfMj7TamAESq0rOxbIA + beetmover-repackage-pt-PT-win32-shippable/opt: EnufjoBcQRWwB93absQ4RQ + beetmover-repackage-pt-PT-win64-aarch64-shippable/opt: ENjIUNB7R8S41fB-n0uAYA + beetmover-repackage-pt-PT-win64-shippable/opt: N_ed5AN7SWGL0WxljM-VvQ + beetmover-repackage-rm-linux-shippable/opt: Sk4y5tZWSSyHaz5J5buUMA + beetmover-repackage-rm-linux64-shippable/opt: Dk0GbsG_Q96-MwC2MNCJiA + beetmover-repackage-rm-macosx64-shippable/opt: Q4NuZf_6QP2oF5jMkGWfUA + beetmover-repackage-rm-win32-shippable/opt: HurFLTekTAOjlLRDqoBnbA + beetmover-repackage-rm-win64-aarch64-shippable/opt: MvkKyEh3TqqwAG9uQI5knw + beetmover-repackage-rm-win64-shippable/opt: Mt5rILTpREWl23PMYfOFUg + beetmover-repackage-ro-linux-shippable/opt: Aszb_ZmuQDKj7UvPsewswg + beetmover-repackage-ro-linux64-shippable/opt: ZeJjDrUPQMaFTkFolKqJ7A + beetmover-repackage-ro-macosx64-shippable/opt: IhSd-q5qRnq9-kizIUAeJw + beetmover-repackage-ro-win32-shippable/opt: V7xh-Qs9QyWW0xf1zwSGjA + beetmover-repackage-ro-win64-aarch64-shippable/opt: bwvqFjGMS72SQW_G2RExKQ + beetmover-repackage-ro-win64-shippable/opt: YeD9gaUdQ3aSRaOQYIdQaA + beetmover-repackage-ru-linux-shippable/opt: DFiyQfOyT6e3GxQhcCysTg + beetmover-repackage-ru-linux64-shippable/opt: cQYAi9XXSmWPxkmY8hytug + beetmover-repackage-ru-macosx64-shippable/opt: ee0PkaDTRx6URR_XgjqfAQ + beetmover-repackage-ru-win32-shippable/opt: QrzemS7BS_-MpfqsE3z8kA + beetmover-repackage-ru-win64-aarch64-shippable/opt: Rt1j9O0rQGqmzi0fV31Oig + beetmover-repackage-ru-win64-shippable/opt: GlPqvwa1SQGhAM_4ymEAkg + beetmover-repackage-sc-linux-shippable/opt: J5f9z2fgTZy-Pfq9kQyLMw + beetmover-repackage-sc-linux64-shippable/opt: c7sRM7nURA-qflnaJpBiAw + beetmover-repackage-sc-macosx64-shippable/opt: RhDDHosiQCGhH-MhdyqFlw + beetmover-repackage-sc-win32-shippable/opt: akX3eox0Q_KBvRoKCaXLXw + beetmover-repackage-sc-win64-aarch64-shippable/opt: FVbwMMfPQJyI5rK5fKpsjA + beetmover-repackage-sc-win64-shippable/opt: JLb8NZCLSK-KHLlaEHMu0A + beetmover-repackage-sco-linux-shippable/opt: EJIzzXrCQiWU3dQdAC_Egw + beetmover-repackage-sco-linux64-shippable/opt: QIevd5TyQ1S5pjGduZBE2w + beetmover-repackage-sco-macosx64-shippable/opt: S7ESqJzXSieNPXGMkRD7Mg + beetmover-repackage-sco-win32-shippable/opt: UkwXwgmiQ6C6AHbHRGQRTg + beetmover-repackage-sco-win64-aarch64-shippable/opt: RP0V17pET2mWugE9y-Bo2w + beetmover-repackage-sco-win64-shippable/opt: UjGg-sjASYC5gKP4xCAzGA + beetmover-repackage-si-linux-shippable/opt: KrSG6vfqQoe2KXFxmmr2Hg + beetmover-repackage-si-linux64-shippable/opt: DhLI5tgcRzCqH4Fwdjv00w + beetmover-repackage-si-macosx64-shippable/opt: N2ORmpruTk6Cxabi_5QVTw + beetmover-repackage-si-win32-shippable/opt: FdcmBE_9SWGeR0wMMGMzIw + beetmover-repackage-si-win64-aarch64-shippable/opt: Rgs4XMtgRo2EYKEb_t93pA + beetmover-repackage-si-win64-shippable/opt: PSIN58loSm65NG3D3AbdHw + beetmover-repackage-sk-linux-shippable/opt: U0jp9_iGSD-42r-6wo9srw + beetmover-repackage-sk-linux64-shippable/opt: apLYbhjvRxu3hZofZhR88Q + beetmover-repackage-sk-macosx64-shippable/opt: B3Z0KQOERCWo1gu23yWBMA + beetmover-repackage-sk-win32-shippable/opt: ZQGyvAoTS7Srag1kqwOnXA + beetmover-repackage-sk-win64-aarch64-shippable/opt: RZWq8LnXQHGXZf6u64BJFA + beetmover-repackage-sk-win64-shippable/opt: E7aRc6QQTZmTyRLFyKwpXg + beetmover-repackage-sl-linux-shippable/opt: QHqZqYAoSZq6-ZDU0TXAmg + beetmover-repackage-sl-linux64-shippable/opt: HpvlLUyARe2LeCWh0V9_Yw + beetmover-repackage-sl-macosx64-shippable/opt: aDo0SAvpQEKwal6kjR1SHg + beetmover-repackage-sl-win32-shippable/opt: ZBobwX2aQCiC2lz3kpuMWA + beetmover-repackage-sl-win64-aarch64-shippable/opt: AFgs8Ff3TvuSwX6cKZK50A + beetmover-repackage-sl-win64-shippable/opt: JXmhQF0SQNGv0V0UCJNgKQ + beetmover-repackage-son-linux-shippable/opt: clD3sITcQwOLIEpE-az69g + beetmover-repackage-son-linux64-shippable/opt: T1e2ouNPQCSpZsyIt08vHw + beetmover-repackage-son-macosx64-shippable/opt: RpPn6jtvSpyTjrjNoME4hQ + beetmover-repackage-son-win32-shippable/opt: czvg1xwuT4u02PKYK4_d3Q + beetmover-repackage-son-win64-aarch64-shippable/opt: VmvTfQdQRS6Dvgd0kMahoA + beetmover-repackage-son-win64-shippable/opt: e3M1BKOqQsuRNIf2-Iekug + beetmover-repackage-sq-linux-shippable/opt: EzOOvT0dQXeF7li3wn3c_w + beetmover-repackage-sq-linux64-shippable/opt: T0RY_-liTDuPK5j-Os65Sw + beetmover-repackage-sq-macosx64-shippable/opt: L7W_s2b7Sturz5hSTEs0-w + beetmover-repackage-sq-win32-shippable/opt: YK5V1hYES8-v1hy2j6xHPQ + beetmover-repackage-sq-win64-aarch64-shippable/opt: O5j_10OlQACZ68p_U42tiw + beetmover-repackage-sq-win64-shippable/opt: E_Dv8Yv7SUCaJ6aWBI7kfg + beetmover-repackage-sr-linux-shippable/opt: E38RZHYSSluWWqWAoLb5gA + beetmover-repackage-sr-linux64-shippable/opt: R4ix6Si3QhaTHmxnzRGm1w + beetmover-repackage-sr-macosx64-shippable/opt: KxgxicnrQrK217c_tBn_ng + beetmover-repackage-sr-win32-shippable/opt: b-2emil0RwiyEzWAcudYIw + beetmover-repackage-sr-win64-aarch64-shippable/opt: NeLxHKRpQKKGhrbKhI1sBQ + beetmover-repackage-sr-win64-shippable/opt: QZrwzCq8ST2XtB2-SvccFQ + beetmover-repackage-sv-SE-linux-shippable/opt: fTwr5IGOSry0vdKpzFy-Ew + beetmover-repackage-sv-SE-linux64-shippable/opt: DnRZof-iTuekSJl8A6jXNQ + beetmover-repackage-sv-SE-macosx64-shippable/opt: TX2dEUAPS3utSajxaOfmPg + beetmover-repackage-sv-SE-win32-shippable/opt: fGFTWGjwQVq4Ij1qRL_arw + beetmover-repackage-sv-SE-win64-aarch64-shippable/opt: IkDn9zzJQKiiklSkVu-wpQ + beetmover-repackage-sv-SE-win64-shippable/opt: IXhov_kWQHmO4CZZgrboew + beetmover-repackage-szl-linux-shippable/opt: Sod-f8alSMevbixY2SkPcQ + beetmover-repackage-szl-linux64-shippable/opt: c_qRg1s0RQqnm-4KMVKV2g + beetmover-repackage-szl-macosx64-shippable/opt: Hj5Yv9LCT-WNWT3RJIzVEQ + beetmover-repackage-szl-win32-shippable/opt: cr8BM4w_SquoINeu0Xf_Yg + beetmover-repackage-szl-win64-aarch64-shippable/opt: K2trq_GKRJ2DzjNcYU1WHg + beetmover-repackage-szl-win64-shippable/opt: aEeeeyIMQ-K5whroolX7eQ + beetmover-repackage-ta-linux-shippable/opt: bKg2VAgYRRKNqARnn9l8JQ + beetmover-repackage-ta-linux64-shippable/opt: GwrBLJJlTrqgy6p__FEc2Q + beetmover-repackage-ta-macosx64-shippable/opt: d7UU0QrtSxeJDDxbgTVH0Q + beetmover-repackage-ta-win32-shippable/opt: AKoRoP5hQJyr2eX2nvxn6w + beetmover-repackage-ta-win64-aarch64-shippable/opt: NSnKqFLvRUO3tNaXMFBpAw + beetmover-repackage-ta-win64-shippable/opt: BBbS11DDSYqxGs0JDxVqOg + beetmover-repackage-te-linux-shippable/opt: Z8-W_nVeTVuwp38uiLeb7A + beetmover-repackage-te-linux64-shippable/opt: G-YOS_qbR-qcAGzDY4PnTw + beetmover-repackage-te-macosx64-shippable/opt: FJzwv1BUTz2PUI8rqYXN8w + beetmover-repackage-te-win32-shippable/opt: BnqNZZHyToGAP0KVQfcR1w + beetmover-repackage-te-win64-aarch64-shippable/opt: JI2Yve1gTT-j4GDEXMyWSA + beetmover-repackage-te-win64-shippable/opt: RVfxfN17SbespFQqd7whwA + beetmover-repackage-tg-linux-shippable/opt: EP40XjIFTBepiuaLiqRNdA + beetmover-repackage-tg-linux64-shippable/opt: FHG6M8SQQmWSDFkZhVVGcA + beetmover-repackage-tg-macosx64-shippable/opt: eJDmatIMQ9aBe7qf_6x2gA + beetmover-repackage-tg-win32-shippable/opt: YIQM_ohhRtyi4gkU7JJzvg + beetmover-repackage-tg-win64-aarch64-shippable/opt: C52bYiKUR8e3ga44TuqCMw + beetmover-repackage-tg-win64-shippable/opt: KZYNobbVQQG3iipiANZPvQ + beetmover-repackage-th-linux-shippable/opt: YelglvmTRlGQ4UE9JT7LIg + beetmover-repackage-th-linux64-shippable/opt: IXAZnsL-Qcmdwx1ybdMhaQ + beetmover-repackage-th-macosx64-shippable/opt: BUpIUNQIQkKgfLwyWjy5BQ + beetmover-repackage-th-win32-shippable/opt: CsrCT6ugSOiQT-imDKnm3A + beetmover-repackage-th-win64-aarch64-shippable/opt: bMS3yMd3RPmMNoCok0PXWQ + beetmover-repackage-th-win64-shippable/opt: Ad2R_QPyQGK672CP102Fog + beetmover-repackage-tl-linux-shippable/opt: arvmij-LSWK0BgQ7Xqw9tw + beetmover-repackage-tl-linux64-shippable/opt: KLKRsXcaQDSCeBIomWmYFg + beetmover-repackage-tl-macosx64-shippable/opt: IDelwCK9Q32rGvmpPrnJ2Q + beetmover-repackage-tl-win32-shippable/opt: O9z7FEZXRcqhUyuicoTL8A + beetmover-repackage-tl-win64-aarch64-shippable/opt: CRtsVv9JRWGsBXlKqFNc9g + beetmover-repackage-tl-win64-shippable/opt: Z4-8qlr9RXuNdaw3kdi63A + beetmover-repackage-tr-linux-shippable/opt: dvHtG2rCQWie0eiBq4fm-Q + beetmover-repackage-tr-linux64-shippable/opt: eRBNXjjnRya_W-y_OrNJnw + beetmover-repackage-tr-macosx64-shippable/opt: cPnOUaCPR8-b2NoOtVXUGw + beetmover-repackage-tr-win32-shippable/opt: KCeXJq_KTMCV3cFl5Ee1RQ + beetmover-repackage-tr-win64-aarch64-shippable/opt: PrOM19NzQW2eN9oAurDpxQ + beetmover-repackage-tr-win64-shippable/opt: TznMe6TDRle3P1XVxx4Sfg + beetmover-repackage-trs-linux-shippable/opt: H5UOnn1CRiyOk0khyiKOvg + beetmover-repackage-trs-linux64-shippable/opt: NsBUQcz0RDqlNvrNCCBv1Q + beetmover-repackage-trs-macosx64-shippable/opt: WBjvCzbkTtCqmkgrsFdC7A + beetmover-repackage-trs-win32-shippable/opt: JNqeJmLvRVe8wyjbbFR9jA + beetmover-repackage-trs-win64-aarch64-shippable/opt: cy8g2KXTRUOa-ZjgtcAkVg + beetmover-repackage-trs-win64-shippable/opt: LbquoXOFSlW6XODqQu5XTQ + beetmover-repackage-uk-linux-shippable/opt: GVDnTtYLRdq8GhSoyuECBw + beetmover-repackage-uk-linux64-shippable/opt: Q6NelpTETYiRgjxfgXSlFA + beetmover-repackage-uk-macosx64-shippable/opt: cYF4p9LoTtqtTsxTdpz5tQ + beetmover-repackage-uk-win32-shippable/opt: Nq2aQ__cRiOnhLnm7cZBBA + beetmover-repackage-uk-win64-aarch64-shippable/opt: cpVwYg8kQRadN4xut8dIHw + beetmover-repackage-uk-win64-shippable/opt: VXkzfB1mQtyytZCljQyAeQ + beetmover-repackage-ur-linux-shippable/opt: J8yKGVdrQiqa4gYhomC_dg + beetmover-repackage-ur-linux64-shippable/opt: JLqiQVUBQ0-rgf-KrBtTUA + beetmover-repackage-ur-macosx64-shippable/opt: F0MPwsMmTd28cMKSVfMexg + beetmover-repackage-ur-win32-shippable/opt: QJ9OmC8CTS6E-tbxMZB1RQ + beetmover-repackage-ur-win64-aarch64-shippable/opt: WhEoUgzVQsGH9qnLqwemLw + beetmover-repackage-ur-win64-shippable/opt: adeHANxPS8G23QVyF_nKhw + beetmover-repackage-uz-linux-shippable/opt: axfHOyGmSFuS6joWDxOnHg + beetmover-repackage-uz-linux64-shippable/opt: Ih4qqCGvQXyfot5G8CJiHA + beetmover-repackage-uz-macosx64-shippable/opt: VGOD9Eb7RSWm6hSZ-C1f-w + beetmover-repackage-uz-win32-shippable/opt: Ea4IeG4zSxiP1MWiwcs-dg + beetmover-repackage-uz-win64-aarch64-shippable/opt: Fv-h1qy_TzOdRkJF2YWVfA + beetmover-repackage-uz-win64-shippable/opt: Pidrwj_CSeW5-Mutv7OxCQ + beetmover-repackage-vi-linux-shippable/opt: I0kybZ7iSZ6UcBYIaUwyuA + beetmover-repackage-vi-linux64-shippable/opt: W24X7BeZQO274FibUB28yA + beetmover-repackage-vi-macosx64-shippable/opt: LoczeEbgT4mcmG0_alVO_g + beetmover-repackage-vi-win32-shippable/opt: Tmxuz3kBSXm59P4eWzNPYw + beetmover-repackage-vi-win64-aarch64-shippable/opt: eD0OyNhYTBmNtp-IYcTTtA + beetmover-repackage-vi-win64-shippable/opt: O43KSqHKQaC5cs6o2E-I1A + beetmover-repackage-win32-shippable/opt: D3O3gO6eRoymD9KMiofbyw + beetmover-repackage-win64-aarch64-shippable/opt: ckro6ZjaQT-ZmV6WG_QCEA + beetmover-repackage-win64-shippable/opt: bSKUW9-gT9a59GMSrR2vCg + beetmover-repackage-xh-linux-shippable/opt: Y8kAPh04QxaCbJBSqLjVBg + beetmover-repackage-xh-linux64-shippable/opt: R80e0qeRQ0K9eINzEnt6sg + beetmover-repackage-xh-macosx64-shippable/opt: Cp7uIjvnSxKItw4TRh7pqg + beetmover-repackage-xh-win32-shippable/opt: W2uekxzuRC-K21McWJaLmQ + beetmover-repackage-xh-win64-aarch64-shippable/opt: bgJwd-puQdiwL6q_yMXRKA + beetmover-repackage-xh-win64-shippable/opt: a02rijw1TVKAArANnJDH_A + beetmover-repackage-zh-CN-linux-shippable/opt: EsanQSTrTXCCvcY7wtEPEA + beetmover-repackage-zh-CN-linux64-shippable/opt: RaBXXELYSw2BpLyh5lQ3GA + beetmover-repackage-zh-CN-macosx64-shippable/opt: CaZIFoWlSyqCkm1sT4OCFA + beetmover-repackage-zh-CN-win32-shippable/opt: FnQayEjwTyq00zodr3XzJw + beetmover-repackage-zh-CN-win64-aarch64-shippable/opt: MX4jSpnDQ8OUlrPbCLTDuQ + beetmover-repackage-zh-CN-win64-shippable/opt: an1xy30yQ5mQSd4K_-5fvw + beetmover-repackage-zh-TW-linux-shippable/opt: HS0hS6-LR7ihLDBR44nAtg + beetmover-repackage-zh-TW-linux64-shippable/opt: MyjYDqMHSw2vGJ8_SCehqw + beetmover-repackage-zh-TW-macosx64-shippable/opt: U9PJ_m90RoimtOUUbrCRNg + beetmover-repackage-zh-TW-win32-shippable/opt: T-UFfrkzQtuwlDrdPoFQ_Q + beetmover-repackage-zh-TW-win64-aarch64-shippable/opt: fi3YPHGbRz-He45evjswhw + beetmover-repackage-zh-TW-win64-shippable/opt: SyrUc_vFSkqB4XMb5WmS6A + beetmover-source-icecat-source/opt: BMVRNc-NTaeHQ7zIzHne3w + build-linux-asan-fuzzing/opt: SeuwhSbtTVCrQgzAUWAxeA + build-linux-fuzzing/debug: NexysKhtQQCrWNJ7NPYnjQ + build-linux-shippable/opt: D5LaQhbqQcCVikQJvop5sg + build-linux-shippable/opt-upload-symbols: GEs73p7NQhuYlQG9QroW1g + build-linux/debug: KCU21ohUTtO6TOwymmcI0Q + build-linux/debug-upload-symbols: QGF_WOvNTuqMaXPen3shpg + build-linux64-asan-fuzzing-nyx/opt: EWUgakWjTZulhNrXJlO03A + build-linux64-asan-fuzzing/noopt: COuaEbXOTRyy15UGVLt19Q + build-linux64-asan-fuzzing/opt: PHPoDShZRvyIg1TmWFidDw + build-linux64-asan/debug: U0r--LG6SSqPZUXUallxwA + build-linux64-asan/opt: CXWqLgyCREqbEdPAHQibeg + build-linux64-base-toolchains-clang/debug: L4Ksyu8PRsakrzhLyuKLow + build-linux64-base-toolchains/debug: ZGjr_rWfQ8KGujnGH94lpg + build-linux64-fuzzing-noopt/debug: fbp_qSoYRya4nSCPqgZo8w + build-linux64-fuzzing/debug: fIQ-fU7jQLWIYAoE4pp5tA + build-linux64-shippable/opt: HMQpLM5wTDCiCHyCWp_CQA + build-linux64-shippable/opt-upload-symbols: Ag5sW7S9SYO2sEzUYR85iA + build-linux64-tsan-fuzzing/opt: dc5wE7EyRPWkxq4VPanoeQ + build-linux64-tsan/opt: HHGhIcK0SSKPsa8b6npohA + build-linux64/debug: HSSnCK9kTYasd28o2obejA + build-linux64/debug-upload-symbols: KTHnfB2tSWyGoE-Zj_0b-w + build-mac-notarization-macosx64-shippable/opt: ZTRWjld_TkiYm4GbPWJ1Qw + build-mac-signing-macosx64-shippable/opt: aHlzsNehSZSOuLwF6J_Elg + build-mac-signing-macosx64/debug: B9JBXRcHQOmyKkzt4iHwcQ + build-macosx64-aarch64-asan-fuzzing/opt: WKDzjKsFS_uPCUh45Cx8JQ + build-macosx64-aarch64-fuzzing/debug: Mwj6V5-mRIy0bIAPhzME8w + build-macosx64-aarch64-fuzzing/debug-upload-symbols: bq8BWIsURRuNVY0SGT1XJw + build-macosx64-aarch64-shippable/opt: Grf5sZpKQzmThO5rx8VDRA + build-macosx64-aarch64-shippable/opt-upload-symbols: EmzZWYRzQdOyTYzJecymrw + build-macosx64-asan-fuzzing/opt: beeHuCvkTSy9plYSILMTsw + build-macosx64-fuzzing/debug: ch8hlQVpS9OiSNhIcd07zQ + build-macosx64-fuzzing/debug-upload-symbols: LEVQlwk1RTKR-HqLFAk5eA + build-macosx64-shippable/opt: DfriLGXzRwWnrqK8KV1cpA + build-macosx64-x64-shippable/opt: KGtOxyOcT6aKfN1PZgRX3A + build-macosx64-x64-shippable/opt-upload-symbols: ZqvJStsQQKmCBVo-j_fejw + build-macosx64/debug: OFr87C6cRO66319RiR3cQA + build-macosx64/debug-upload-symbols: MDpfTL-RTKC_jXLZ2h_eDg + build-signing-linux-shippable/opt: epak00_zT_iLFWhzJKGJig + build-signing-linux64-shippable/opt: UByCJoK9RXGPkftfuVkpjQ + build-signing-win32-shippable/opt: K_IXw6tTQMikrC8iusAxdg + build-signing-win32/debug: SWw28V7OTy6I0gz8IZZfLQ + build-signing-win64-aarch64-shippable/opt: NImKMeUkSvuL8ckiZBTTbw + build-signing-win64-shippable/opt: HGz3BKFYTwerrjfC3cvNSA + build-signing-win64/debug: Vl66ngaaTcGDtD5tBizQ-A + build-win32-mingwclang/debug: eAE2g4Q0SvCk_6TffMdL-g + build-win32-mingwclang/opt: KUvC4ElNRgOSyaw2Hphe4w + build-win32-shippable/opt: K8_SPszNTkqFdNrUomQ4Hg + build-win32-shippable/opt-upload-symbols: EAZupIyeS1-TPAXA_GEarA + build-win32/debug: fmb4BUX7Q-uOPfcs0Bvtzg + build-win32/debug-upload-symbols: KGVeHthkQ6qgQczQijtCTg + build-win32/opt: IwleSbpqTfSuXVDiMjlw3w + build-win64-aarch64-eme/opt: GrZRv7RpSuefyMsq2vV_8w + build-win64-aarch64-shippable-no-eme/opt: XW4z-mV2SsGFQM2B4vzQgA + build-win64-aarch64-shippable-no-eme/opt-upload-symbols: d_I1eEEoTRqgIPeZI21J3g + build-win64-aarch64-shippable/opt: WfdsuKDlSh-h4nF1fhbtSw + build-win64-aarch64-shippable/opt-upload-symbols: aTvqQoCwRNypEkfF7nP5Zg + build-win64-aarch64/debug: ZF9SlL-BTsekGe6u80Pedg + build-win64-aarch64/debug-upload-symbols: PlXMpTs5R9mmLs1UsLquCw + build-win64-aarch64/opt: D_VW5anrT06uAMQIOg-RZg + build-win64-asan-fuzzing/opt: OoBi3ZitRxOTJbGvmw7OgA + build-win64-asan/debug: fgqF7KrZQz2i1CWkjSXfuw + build-win64-asan/opt: UWVbyCf7SGi8IRSfELmbkQ + build-win64-mingwclang/debug: XoY4q91yQOSKXDIGYW6W-A + build-win64-mingwclang/opt: Oe-9jPeYTLmGUqKl2VgQ2Q + build-win64-shippable/opt: SBZpqb_aTfWPfSRsQezD0g + build-win64-shippable/opt-upload-symbols: D1snplLFQYGrPdc6DGDXtg + build-win64/debug: JNYS1Lz6TXWdJJnGkSbgBA + build-win64/debug-upload-symbols: cbZkIFHRRLOEhwVA1BxKwg + diff-artifact-win64-aarch64-eme-validation: ADD0uXNJQ_iKnB7iC6_DOg + docker-image-android-build: LpxTeGk_QsaRdwAc4NqXbg + docker-image-condprof: RyVVLNIzSyWuqdswYDFa6g + docker-image-custom-car-linux: Svfv8eaBQRq_5hkPjcEUmw + docker-image-custom-v8: YsU8AkNkTYWs-gcxQYwU7g + docker-image-deb11-toolchain-build: TpetzDY_QHiUkG0FDcXrUw + docker-image-debian11-amd64-build: ebGkHWgVQxS-kF2GCuGPIQ + docker-image-debian11-base: IbXTakKdQfqi7jsTKdKo4g + docker-image-debian11-packages: NbtCjy4LRwip7FFEpZeIdA + docker-image-debian11-raw: Y-__5kGfTJam6qcyFXgk0w + docker-image-debian11-repackage: MBniWVI7QjSJt42qB-HWyA + docker-image-debian8-i386-packages: NEIw7A0qR8SJvv8WvdOqIA + docker-image-debian8-i386-raw: T8qZfqSTSNa4KPfp1j75Ww + docker-image-debian8-packages: IVnmyaxbToSvbgn8QmMFUg + docker-image-debian8-raw: TNiaNLncSH-2A0g6RKTLEg + docker-image-decision: JYoOLOrEQMCDeQ6rLo2JYw + docker-image-diffoscope: SKBazspeSX2z9a8s_y50ig + docker-image-fetch: ZJPm519oQyCmgteY6cOQ9Q + docker-image-icecat-flatpak: OM774m1cT0Wqy7Q87lqHLA + docker-image-icecat-snap: YmvNSMSfQWW3YG6x_Fcdbg + docker-image-funsize-update-generator: H14MbupWQoyjX2KXVFC7Cg + docker-image-gdb-test: WdZGFUBiTzyn5er0FJQUvw + docker-image-image_builder: MWRymupRSheUkuqIQwF8TA + docker-image-index-task: VIneOK4VRXGrcEmrEpleSA + docker-image-lint: Eeq8v2PJSbSivC61RBNaKg + docker-image-partner-repack: dWuSsRGgQASrrUUuy6SECA + docker-image-periodic-updates: XHugZ4MORyS_tZ2JuR_57A + docker-image-push-to-try: RjfJZLsfQJC0N6s9COPwTg + docker-image-sentry: UNHHsSOiTPyh2UIvfYyKnQ + docker-image-static-analysis-build: PnI26NxSQAOmG7NEROZzJw + docker-image-system-symbols-linux-scraper: HOupv5yoTKmMJqeMW31aFw + docker-image-system-symbols-mac: LnVHNZkdR_CAWouA141PwA + docker-image-system-symbols-win: NhiFCR2-QWqq1IfQHe_gRg + docker-image-ubuntu1804-base: KATF20G5SLOxKZ-9-Er0wA + docker-image-ubuntu1804-i386-packages: Dakk3qN1Q4GjXOsPUhk1nA + docker-image-ubuntu1804-i386-raw: XA_oUxFXRTSQ1EvmDGFkSw + docker-image-ubuntu1804-packages: Jr0fxIJnSmu3ZaRTz9oF7w + docker-image-ubuntu1804-raw: Fyx2nDcYTg2M231ZcL03UQ + docker-image-ubuntu1804-test: SfINLyQOTquveJV9O7YKDQ + docker-image-ubuntu1804-test-base: V0wWtDPIT927FniwmWVdfw + docker-image-ubuntu2004-base: NFe_iEGoSCS2F_LbYKvdNA + docker-image-ubuntu2004-packages: alSLN0VkRFSFnwf4qAvkig + docker-image-ubuntu2004-raw: Hacmx9CIQZq9wTR_0k7JOg + docker-image-update-verify: BCpoSWIqRe6CWV4KQkaSxA + docker-image-updatebot: eoJoqnQMQJi8as-x6JB1fQ + docker-image-valgrind-build: EQ69ibXNR3eZC7zvuu2fFQ + docker-image-webrender: H73T2utFRPKNCJYQKLoyqg + fetch-afl-2.5: dDLfrg52RNq82L-R7gh7UQ + fetch-android-ndk-rs: RlrZuvBETXW70s2gU4OHQQ + fetch-binutils-2.31.1: VuM4lv42T129BRsNoLlxSQ + fetch-binutils-2.36.1: ByA_wQrLSRecv9wsNxNvKg + fetch-bomutils: ThI-yuH7Sbai-ykwH000SQ + fetch-cargo-vet: f129L9oaTnmolGvke4dU2g + fetch-cbindgen-0.24.3: HpSr2rYxQTOSfeF5Yk5wRg + fetch-cctools-port: fH5bHUvMSEOKqRgcuC8MMA + fetch-clang-14: UCTFRtW9RJGjJD26W8NLQw + fetch-clang-16: PkJC2FcORo2by0TFEbdKiw + fetch-clang-7.0: IqMLKeAJR5eS8CtSg62Bfw + fetch-cmake: EDz-bhWqRai0Ke2oG3OwmQ + fetch-cpython-3.7.15: DYjrGxXVTXWnZEPx8P8B_Q + fetch-cpython-3.8.10: frS4H2j6S6-BjUeHrWPKQw + fetch-cpython-3.8.10.exe: CTbe-k2SSZeCWMk-o3Hrbg + fetch-dump-syms: cSP5DD9WS2u6d0urMVko6g + fetch-fix-stacks: K0lhfcfhQgKSW1XqDcoqAg + fetch-fxc2: Og99vG8zSvqATrJ475SyIg + fetch-gcc-8.5.0: MN_MWSxZT0CDzAsge_M-xA + fetch-gcc-9.5.0: MV71AtSJRZGVpPx_Wn3CpQ + fetch-gmp-6.1.0: HVLmHPdESnecmWMfzpngVA + fetch-gn: BtZfqBlOR0an-X2-CDtlzQ + fetch-gnumake: EnFlPtwZTg6KTpCnizAK-A + fetch-hfsplus-tools: d48tzJY1SOqF532M5poVJA + fetch-isl-0.16.1: QjbiBOZwTq-Ixs-5ZElX7w + fetch-ldid: KcCRwrZiQwO-Hv2JObw2mg + fetch-libdmg-hfsplus: PuW3Yc2_RcaM4JyinWk-kQ + fetch-libtapi: JhTPdkvRS9i7DIFH0Z_HtQ + fetch-llvm-mingw: MrfJe8U6Ta6KB6mvahuK5Q + fetch-makecab: USA4T1YSQjKc_uJCFwLTPQ + fetch-mingw-w64: Zx9szLuJTN-uVYpKEMIR7g + fetch-mpc-1.0.3: QNa4xolWSsKEhs53fma5Dw + fetch-mpfr-3.1.4: HtQWDve6SPy5Q-zaQaK0eA + fetch-msix-packaging: eKeNCZYpRP-e4PC0jmTrUw + fetch-nasm-2.14.02: f588w5qrSwS7nrTxrGdCqg + fetch-nasm-2.15.05: GKANxKq6S5qm93A_uHDu4g + fetch-ninja: MPXdEaLsSSmjh2uFjXSIdw + fetch-nodejs-12-linux64: WkFwb3-bTfK3NE2h_GefgQ + fetch-nodejs-12-macosx64: fKyyoKN3RlS9lmLaggLMNA + fetch-nodejs-12-win32: VEa4D1NMSk2O0JhH4n5pjA + fetch-nodejs-12-win64: ZR9yNbf7S-SvF1814cGXqA + fetch-nodejs-16-linux64: akIE5r6dQQWn-ovFx8JMtQ + fetch-nodejs-16-macosx64: SxnrHF9uQvi3oT7Us1N0tg + fetch-nodejs-16-macosx64-arm64: R1GrkKvuReCFhYgtZpTASg + fetch-nodejs-16-win32: GYHloKAQT_WBjXiDFL_3Qg + fetch-nodejs-16-win64: LJzydlw3Qg-9qJ1pruka1A + fetch-nsis-3.07: LiDuUpM_TguSosRvce61FQ + fetch-nsis-3.07-win: N1nR7Q9NTG659jIcOuDAXA + fetch-pkgconf: M-l_vjyVSpy4A3c4StbIQw + fetch-rust-1.69.0: A9sE0vehQyWxlle7pSB8Ig + fetch-rust-minidump: D6ce6KWARx2WoJ-qYOyHiQ + fetch-rust-size: Gp6GAye6Q2OjiyjZzY-dYg + fetch-sccache: aSQbFP5dSm2ilnm7KNNCjQ + fetch-upx-3.95-win: eHqPJkDcTwaBJ33C66L88g + fetch-wasi-sdk: XaseNINmTImQFMWk2yWDDQ + fetch-winchecksec: Lj4bDparQFKNB0NVnq_vZg + fetch-wine: PfhSZZF2Tsue4lqnzaVt9Q + fetch-wix-3.14.0: fQbbtuqtREi9d_Fr7jUbpA + fetch-xar: cx8fg6g_TLCyb3haAHVW4Q + fetch-zlib-1.2.13: eL_f1GRaQvqRiGyafHGZrg + fuzzing-python: PuRefW2zSiOkr1HoWZfXGQ + generate-profile-linux-shippable/opt: FwdlHX-VSiqJLwjslx_QdA + generate-profile-linux64-shippable/opt: OEXhs0YzS5yoPKUkuARNqA + generate-profile-macosx64-shippable/opt: XSd9RDNnTgmLna4xrhhSrA + generate-profile-win32-shippable/opt: JOofZe-pS6OwzHd86aTzEA + generate-profile-win64-shippable/opt: PkpZX47oSWW8eBQWHf-izQ + hazard-linux64-haz/debug: U5_icpIBRbasgPhPRnNzwQ + instrumented-build-linux-shippable/opt: eiVB-QhfTHmI0jZt5bkbJw + instrumented-build-linux64-shippable/opt: JtBaU1jKRvSDSArpwkv-Xw + instrumented-build-macosx64-shippable/opt: XgrWMJyvReCdm1uKC0crZw + instrumented-build-win32-shippable/opt: GcIGrHqTT8evRAtFXmO8eQ + instrumented-build-win64-shippable/opt: H3DSCOzERu2TB87vQmk-LQ + mar-signing-l10n-ach-linux-shippable/opt: N2tvo_SkQ_ijBR_pB6uB1Q + mar-signing-l10n-ach-linux64-shippable/opt: atehgYcVS_SwT-pMxL4cZg + mar-signing-l10n-ach-macosx64-shippable/opt: MH3iWAINTviDHJPwsH7rjQ + mar-signing-l10n-ach-win32-shippable/opt: aNEbn5-mQmWAQvxyRy0elQ + mar-signing-l10n-ach-win64-aarch64-shippable/opt: ALppuwLFQsOZPh9fAKYFFg + mar-signing-l10n-ach-win64-shippable/opt: Svmo0MB_TqKbR0XrZkYZWw + mar-signing-l10n-af-linux-shippable/opt: RC8-GgAlTs-RGEdGDkhXRA + mar-signing-l10n-af-linux64-shippable/opt: KNQJVKyoSEab7XVNGQTh_A + mar-signing-l10n-af-macosx64-shippable/opt: CYrWhHW5TsW__dRZ12yscw + mar-signing-l10n-af-win32-shippable/opt: UnhjAm3ySPudPA5pQFp1sw + mar-signing-l10n-af-win64-aarch64-shippable/opt: DajUtdxjSm2ZXUxlpZCFYg + mar-signing-l10n-af-win64-shippable/opt: FIJFtMT8Qr-GyV6pG3yokQ + mar-signing-l10n-an-linux-shippable/opt: V4PyJW7NSoCg-rApSpDkww + mar-signing-l10n-an-linux64-shippable/opt: fjbhORwKRFyH3vA5Smitqw + mar-signing-l10n-an-macosx64-shippable/opt: RcKNO4PRQqKdw4wxUVdZng + mar-signing-l10n-an-win32-shippable/opt: UDtB4ZbsSYeXeuNbRJde5w + mar-signing-l10n-an-win64-aarch64-shippable/opt: IYqqpwihROa42Kd4WTAYdg + mar-signing-l10n-an-win64-shippable/opt: CqX_HHnXRPOb3vcVwjrslw + mar-signing-l10n-ar-linux-shippable/opt: H395H7hJQUqc7f1fcdCoew + mar-signing-l10n-ar-linux64-shippable/opt: SfCAHae0R2y6ua5fV1avew + mar-signing-l10n-ar-macosx64-shippable/opt: BZZe09g5TxmUdtjSzs72PQ + mar-signing-l10n-ar-win32-shippable/opt: Ctj1kpUhTYeRM7aD9mLfSg + mar-signing-l10n-ar-win64-aarch64-shippable/opt: Y46RooH6QMKC_dkDaYGmAA + mar-signing-l10n-ar-win64-shippable/opt: H7UkOSqfSmurhk2pYVcSLA + mar-signing-l10n-ast-linux-shippable/opt: IQYgmYYrS1eQuqN9UpAk5A + mar-signing-l10n-ast-linux64-shippable/opt: bEEeib3oTiWx3Shnif8ACQ + mar-signing-l10n-ast-macosx64-shippable/opt: aCvHO4OhRoC8Fay1vy1qqg + mar-signing-l10n-ast-win32-shippable/opt: EPeETbLJRiqbHAaaIyWPvw + mar-signing-l10n-ast-win64-aarch64-shippable/opt: WkYeBiTGTy2AZcZ7ESMFNw + mar-signing-l10n-ast-win64-shippable/opt: elks1p2zQeeG-L2ckqrAdQ + mar-signing-l10n-az-linux-shippable/opt: JUGU7-Z0TzC0Gs2UiyCriw + mar-signing-l10n-az-linux64-shippable/opt: fVhne6pKQhipYG9waMWPaA + mar-signing-l10n-az-macosx64-shippable/opt: TWmEkjiIR8uZxYnWZRUQfQ + mar-signing-l10n-az-win32-shippable/opt: DPcEeXi8SOCvARKMIH0w7Q + mar-signing-l10n-az-win64-aarch64-shippable/opt: CmTmXFpjTgmR824QCb7ToA + mar-signing-l10n-az-win64-shippable/opt: DyBwiRZNRfeDLsLasmQpfw + mar-signing-l10n-be-linux-shippable/opt: SRRTfmADTPKo5ms1_PmaXg + mar-signing-l10n-be-linux64-shippable/opt: dNmqrbJUTImrM5cH0gGhCA + mar-signing-l10n-be-macosx64-shippable/opt: JdpNHy5qQW-ShyFgeiLw7w + mar-signing-l10n-be-win32-shippable/opt: aEAjaAoaRf-Zcmxq6JW_fw + mar-signing-l10n-be-win64-aarch64-shippable/opt: EZAspyjaSGmpw3o92xbqAQ + mar-signing-l10n-be-win64-shippable/opt: dLcaD6bsTQiToNRgfVx_5A + mar-signing-l10n-bg-linux-shippable/opt: LJ-oD88cTJWbxgLceMulOA + mar-signing-l10n-bg-linux64-shippable/opt: AEVWbV0XSf6l39WtqQjCJQ + mar-signing-l10n-bg-macosx64-shippable/opt: ZSw55FcSR_uMuiw5rOhLDA + mar-signing-l10n-bg-win32-shippable/opt: VUcmd4AiR6qxTfICQR4DGA + mar-signing-l10n-bg-win64-aarch64-shippable/opt: CX4keaBxQvWhJgyXbpFVaQ + mar-signing-l10n-bg-win64-shippable/opt: UJ3tank6SzmZqj2O1-FpMw + mar-signing-l10n-bn-linux-shippable/opt: ZiHFfdbfSg6XtR1hDdPJrQ + mar-signing-l10n-bn-linux64-shippable/opt: NpReIn2jSiuufxzTz5_m3A + mar-signing-l10n-bn-macosx64-shippable/opt: GZABOHCQRROE7poHKyDoJA + mar-signing-l10n-bn-win32-shippable/opt: Xe0aUsMJTF2sIrOLcZSYCQ + mar-signing-l10n-bn-win64-aarch64-shippable/opt: DDMCfTIASciUZ__4NNQE1w + mar-signing-l10n-bn-win64-shippable/opt: Zf8WiMYTTEmb8CYa3JsA3A + mar-signing-l10n-br-linux-shippable/opt: W_KU1b1sTfiMG-yMtla5Ig + mar-signing-l10n-br-linux64-shippable/opt: PswMcHq7RM2syg2fwoX_8Q + mar-signing-l10n-br-macosx64-shippable/opt: PhSoo8uWTL6mZiPL2HPxDQ + mar-signing-l10n-br-win32-shippable/opt: bdxcmSatQ4mICcVjXuS9Mg + mar-signing-l10n-br-win64-aarch64-shippable/opt: IAGLVB0YSreTmGypDihdCw + mar-signing-l10n-br-win64-shippable/opt: ZoJdLwIOTRS1Ih3EAX3_8A + mar-signing-l10n-bs-linux-shippable/opt: cIgDPNbOQMWwv9Bxf2_6Gg + mar-signing-l10n-bs-linux64-shippable/opt: IpYjVPDGSquAAeYFxbmsxw + mar-signing-l10n-bs-macosx64-shippable/opt: WHf0cFcuQpyH1wHaQmJgDg + mar-signing-l10n-bs-win32-shippable/opt: IvibQxXWQGiaC4zgwvFLeA + mar-signing-l10n-bs-win64-aarch64-shippable/opt: EGGOGZDdQHCHNNGkD49YwQ + mar-signing-l10n-bs-win64-shippable/opt: X0fH-MCWTAisDof6h3pI_g + mar-signing-l10n-ca-linux-shippable/opt: fBWb1325TIedZUSRM2Sdgw + mar-signing-l10n-ca-linux64-shippable/opt: FGKsPPGJQ3ih0uNqOw6YqQ + mar-signing-l10n-ca-macosx64-shippable/opt: D-iKPKtETyONA7qV1aVFcg + mar-signing-l10n-ca-valencia-linux-shippable/opt: XBOWH5A3R5aCTFOLbx0acQ + mar-signing-l10n-ca-valencia-linux64-shippable/opt: PCe_r2hgQSqH_Mn3KtbLvw + mar-signing-l10n-ca-valencia-macosx64-shippable/opt: ak3EPz0lRWSwA4X-yj2zhA + mar-signing-l10n-ca-valencia-win32-shippable/opt: ZV8dpp33ThuZZnrq8cRXzQ + mar-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: QlUME-EGSJe3CY4KQy8B8w + mar-signing-l10n-ca-valencia-win64-shippable/opt: FCtuiyJZSua-bqpwrDHPAg + mar-signing-l10n-ca-win32-shippable/opt: D8nYxQWuTe22yMOPSMq3ew + mar-signing-l10n-ca-win64-aarch64-shippable/opt: SbbO_CKdRpe50TmELGFHYg + mar-signing-l10n-ca-win64-shippable/opt: AiHo73rORfWu95jRV5wlcw + mar-signing-l10n-cak-linux-shippable/opt: R5fH1rT7ShShShMRmbMWXg + mar-signing-l10n-cak-linux64-shippable/opt: McQoCU28Twuh9zpoWTkZvQ + mar-signing-l10n-cak-macosx64-shippable/opt: DzWlRBH7R7GBC3uzgUbL8g + mar-signing-l10n-cak-win32-shippable/opt: fOhb8BFIT92AX6uHuIImIA + mar-signing-l10n-cak-win64-aarch64-shippable/opt: BjS7haMSRS61uT9lK1AEzQ + mar-signing-l10n-cak-win64-shippable/opt: GtfXcoc7SCe_-Wv2_LmyVg + mar-signing-l10n-cs-linux-shippable/opt: AFNpZZIxSOGywnS6LtenyA + mar-signing-l10n-cs-linux64-shippable/opt: NQj5A9uqT6e6X7-hDODUaw + mar-signing-l10n-cs-macosx64-shippable/opt: ZRjr1OD9Rj6V4txL707ryg + mar-signing-l10n-cs-win32-shippable/opt: e1gXUdx5QTGgtlAyJplFRw + mar-signing-l10n-cs-win64-aarch64-shippable/opt: UJuz6TIPTJuqKbLaUlLA5A + mar-signing-l10n-cs-win64-shippable/opt: Ki_vy7o5SDGxEYtIoH1kCA + mar-signing-l10n-cy-linux-shippable/opt: SmVRgCbTQ0SmLX1EAzmOnA + mar-signing-l10n-cy-linux64-shippable/opt: CPbDettBT166XvvBu3cByw + mar-signing-l10n-cy-macosx64-shippable/opt: N9MUF5x8T6-LNxRuVlzCrg + mar-signing-l10n-cy-win32-shippable/opt: MKsiW8hITEyVrqrawiCNNg + mar-signing-l10n-cy-win64-aarch64-shippable/opt: d4yk6HBtQD-f7KYpjrcxEQ + mar-signing-l10n-cy-win64-shippable/opt: QIMTRm7YR_a38mL9WhYOPw + mar-signing-l10n-da-linux-shippable/opt: QgE1S_rHQ4u0SlSNK3fp9Q + mar-signing-l10n-da-linux64-shippable/opt: TQnZe4i2Q-KfXCZ24H0MCA + mar-signing-l10n-da-macosx64-shippable/opt: RJbNqoh4TSehx2J9hFVRHg + mar-signing-l10n-da-win32-shippable/opt: fjAx-XsmQwaWFI4Uz9K1-Q + mar-signing-l10n-da-win64-aarch64-shippable/opt: NZcSbXAuS-qWcWwL1af75w + mar-signing-l10n-da-win64-shippable/opt: Wekrci58RqG9ame1pRWcow + mar-signing-l10n-de-linux-shippable/opt: cU8Up08vSCGpJ2di7bWFKw + mar-signing-l10n-de-linux64-shippable/opt: cB7Z3K0PTpKonvQzr7huuw + mar-signing-l10n-de-macosx64-shippable/opt: DZnhRp0uQ8yA6ngrLkv6CA + mar-signing-l10n-de-win32-shippable/opt: PCd3JwPqQYKnsd5tI39qQg + mar-signing-l10n-de-win64-aarch64-shippable/opt: AJvhJ0oASCySC2OExSVceA + mar-signing-l10n-de-win64-shippable/opt: OGCLWXuFR1ysCnCEGAC4ng + mar-signing-l10n-dsb-linux-shippable/opt: FUQg5H8RSNWXbBEBQNHL3Q + mar-signing-l10n-dsb-linux64-shippable/opt: VTPTDV9ERhyI359f5JaSDw + mar-signing-l10n-dsb-macosx64-shippable/opt: V18vZDM7QqejrSpBpAnACw + mar-signing-l10n-dsb-win32-shippable/opt: JgiiCaEaRlytMxJZIPkwYQ + mar-signing-l10n-dsb-win64-aarch64-shippable/opt: Sx9Zqs_RQMu-dz56t4ROgA + mar-signing-l10n-dsb-win64-shippable/opt: HnBlZwo3Q2OAY0C2JC83xQ + mar-signing-l10n-el-linux-shippable/opt: HIJXgTfHQrOSNrTQVUHwDg + mar-signing-l10n-el-linux64-shippable/opt: TIRIhyp7Qrm22s-WtXja6g + mar-signing-l10n-el-macosx64-shippable/opt: Fqo_DRyFSMC94I06Z-P6gA + mar-signing-l10n-el-win32-shippable/opt: TZokjtH6R9OFIsfXITegXg + mar-signing-l10n-el-win64-aarch64-shippable/opt: A4L-Alp1S52ZquCaw9jnqg + mar-signing-l10n-el-win64-shippable/opt: d4uVShwySkmvh0S-hXoo3g + mar-signing-l10n-en-CA-linux-shippable/opt: XgXBiO89RN6-jL7b84WI8g + mar-signing-l10n-en-CA-linux64-shippable/opt: TpZg45caRXKIIkGENAyF9w + mar-signing-l10n-en-CA-macosx64-shippable/opt: Gw4-Ez5zT2-n-U0zdquomQ + mar-signing-l10n-en-CA-win32-shippable/opt: EoqgmnfuR1uwW--YsQ8K5w + mar-signing-l10n-en-CA-win64-aarch64-shippable/opt: FwhAVFyyQGiHuVxmbL49gg + mar-signing-l10n-en-CA-win64-shippable/opt: A_tWXnEjTBmbezd3MfaZDw + mar-signing-l10n-en-GB-linux-shippable/opt: WATGYtQvQ2WFXeg9KZWsMg + mar-signing-l10n-en-GB-linux64-shippable/opt: GedaPbSdSXWfXUhYaYb15g + mar-signing-l10n-en-GB-macosx64-shippable/opt: DyeUzS_3RJC5LwVc076w-A + mar-signing-l10n-en-GB-win32-shippable/opt: P3AfcidiT_imVzOiF5F9Aw + mar-signing-l10n-en-GB-win64-aarch64-shippable/opt: Ss4v4Zc1TKCZxFGlId4x-g + mar-signing-l10n-en-GB-win64-shippable/opt: JriarS9jRwS056RNKuVzIA + mar-signing-l10n-eo-linux-shippable/opt: Gz_5U1VNRnaZZCigEAr1dQ + mar-signing-l10n-eo-linux64-shippable/opt: VJ5qdA09QVuJqKiR5IzZhQ + mar-signing-l10n-eo-macosx64-shippable/opt: MdXgGQ5VRT-ng7cLt4EPwg + mar-signing-l10n-eo-win32-shippable/opt: D7ejASErQgyVHp7vkjhAXA + mar-signing-l10n-eo-win64-aarch64-shippable/opt: QzvHSz-BRxK1wvFLcnoqRg + mar-signing-l10n-eo-win64-shippable/opt: dO9jRlnwQ363Y4qHxlvzlA + mar-signing-l10n-es-AR-linux-shippable/opt: Ge-Ahc_4STmZczn-50NzeQ + mar-signing-l10n-es-AR-linux64-shippable/opt: Wro40rEESQWTfxH6WPo91Q + mar-signing-l10n-es-AR-macosx64-shippable/opt: GUdXzls1RkGkuceixqnuOw + mar-signing-l10n-es-AR-win32-shippable/opt: ePyiRJ0nTAWXhMhWa5a98w + mar-signing-l10n-es-AR-win64-aarch64-shippable/opt: Hn5ux4gfSFWONnwMTtQZDg + mar-signing-l10n-es-AR-win64-shippable/opt: IFhHXXSHSoywuK5gTcCZ6A + mar-signing-l10n-es-CL-linux-shippable/opt: DhR40kSVQd6Q2zGAGan5cQ + mar-signing-l10n-es-CL-linux64-shippable/opt: Aqm25C4GTjSW5Zy3lzl0PA + mar-signing-l10n-es-CL-macosx64-shippable/opt: Cx5EvgJnTa-EY9NdvQhtHg + mar-signing-l10n-es-CL-win32-shippable/opt: HLYA62iWT9a1Ii1PGpoOIA + mar-signing-l10n-es-CL-win64-aarch64-shippable/opt: ZR6-y53ORXGC2Aei8cOCjA + mar-signing-l10n-es-CL-win64-shippable/opt: bZWJwtXeRQSkw4aoE35agQ + mar-signing-l10n-es-ES-linux-shippable/opt: K4xKb1-LQuuedNuEH83-nA + mar-signing-l10n-es-ES-linux64-shippable/opt: D75bzQdPRBekSNBxuGK6YQ + mar-signing-l10n-es-ES-macosx64-shippable/opt: KFVbLQzmRVexaObd1MGpuQ + mar-signing-l10n-es-ES-win32-shippable/opt: W5aXbMxKRn251IxgXi3B7w + mar-signing-l10n-es-ES-win64-aarch64-shippable/opt: N8c-qkksQ5mykAWhsA2xDQ + mar-signing-l10n-es-ES-win64-shippable/opt: UTXjQ7naTLKce9rg5JLIxQ + mar-signing-l10n-es-MX-linux-shippable/opt: TJuy7oRaTmaOEHX_luu-kA + mar-signing-l10n-es-MX-linux64-shippable/opt: LvYIiaMjTPCoAKz18RaWvA + mar-signing-l10n-es-MX-macosx64-shippable/opt: T7OtWU5iRwWLp1vi3UFGtA + mar-signing-l10n-es-MX-win32-shippable/opt: DIwlCf4OSdS09z6yzdO_BA + mar-signing-l10n-es-MX-win64-aarch64-shippable/opt: AkAaHQOHRsy3WpHE6HZ8mA + mar-signing-l10n-es-MX-win64-shippable/opt: aqreglMMTl2F65T82uigJA + mar-signing-l10n-et-linux-shippable/opt: UNmZ4h0jSISxMbtbNcE_4Q + mar-signing-l10n-et-linux64-shippable/opt: JPQ-DzUwTEaOnmqyO1T1-A + mar-signing-l10n-et-macosx64-shippable/opt: KfQRT6BoRlmpvnyN0FumaQ + mar-signing-l10n-et-win32-shippable/opt: HO5xtmJTTgiQx2GgwB0R5A + mar-signing-l10n-et-win64-aarch64-shippable/opt: Y4xJeTI2Tym1DhNZtcscyw + mar-signing-l10n-et-win64-shippable/opt: MNbnO17wTrazDAEPF__WYQ + mar-signing-l10n-eu-linux-shippable/opt: KfJG5xkdSICcPsSmN0P_5Q + mar-signing-l10n-eu-linux64-shippable/opt: ZDnatwiwT_OKI1dOxY0AMQ + mar-signing-l10n-eu-macosx64-shippable/opt: dAiYcA-8S5C1bIwhuvC29w + mar-signing-l10n-eu-win32-shippable/opt: bI-uoNkfS9SvrqN0F3RWKQ + mar-signing-l10n-eu-win64-aarch64-shippable/opt: ZJavwiJVRjOiyKZnk8GbKg + mar-signing-l10n-eu-win64-shippable/opt: OsuSQguASUyxMjjrw4e4Zg + mar-signing-l10n-fa-linux-shippable/opt: HjqVlkbvTM2K5pgKlELhbw + mar-signing-l10n-fa-linux64-shippable/opt: IWoCKfFoQxuuuUlchiYipA + mar-signing-l10n-fa-macosx64-shippable/opt: Qa8_FnD-QsezjzrOySy-pw + mar-signing-l10n-fa-win32-shippable/opt: Z-IbumVFSJqxIeglphkf3w + mar-signing-l10n-fa-win64-aarch64-shippable/opt: e41AzGexQzKsJuAENLhCLw + mar-signing-l10n-fa-win64-shippable/opt: X4RYqLQESwuRVUrPK3KRSA + mar-signing-l10n-ff-linux-shippable/opt: YHEni4QITuGwkAMOxRMd0w + mar-signing-l10n-ff-linux64-shippable/opt: KtnU6T2qQJCV_xmO8YWx6Q + mar-signing-l10n-ff-macosx64-shippable/opt: Zzo7ip6ITlSoQzGQ0WMPxw + mar-signing-l10n-ff-win32-shippable/opt: FKYQoC3iSI-cDg3PhAWYQQ + mar-signing-l10n-ff-win64-aarch64-shippable/opt: MOVGzImkStKlqwOtcGJniQ + mar-signing-l10n-ff-win64-shippable/opt: FtqpvrihRaCJda0JhwxiJA + mar-signing-l10n-fi-linux-shippable/opt: Sri0MvBgRl6mJz9jwpGsRw + mar-signing-l10n-fi-linux64-shippable/opt: ZXqYond1SWiVQaq0XDqBgw + mar-signing-l10n-fi-macosx64-shippable/opt: ZeKhtIINTkGTJDHHaBnWOA + mar-signing-l10n-fi-win32-shippable/opt: U09E-EegTfu7BEj7ay5X2A + mar-signing-l10n-fi-win64-aarch64-shippable/opt: PVpQPDWWSAey79hQ7HlYeA + mar-signing-l10n-fi-win64-shippable/opt: fGA5EpcZQYi6Jkuedx78tw + mar-signing-l10n-fr-linux-shippable/opt: QeQNvnqzT4ebEiu2I5621A + mar-signing-l10n-fr-linux64-shippable/opt: dzNff0A9Sm-_sKJFbfEc8w + mar-signing-l10n-fr-macosx64-shippable/opt: S18Z_2LOSnuec1N2FLbBjg + mar-signing-l10n-fr-win32-shippable/opt: OZuJpuZNS-uDiQOXcuvUUw + mar-signing-l10n-fr-win64-aarch64-shippable/opt: LUFIujJeSjafW6nlvdUGSw + mar-signing-l10n-fr-win64-shippable/opt: Izcia4LiQIK67ATjC4ystg + mar-signing-l10n-fur-linux-shippable/opt: A5kzkFz5RPudRDD0IQV5tw + mar-signing-l10n-fur-linux64-shippable/opt: Z3Ydf9KtSne3gg1GwqTajA + mar-signing-l10n-fur-macosx64-shippable/opt: DbhtD9LiS-S5ZHF0E1t_Dg + mar-signing-l10n-fur-win32-shippable/opt: WVyKs5CpRjaOvO8M5fgaBw + mar-signing-l10n-fur-win64-aarch64-shippable/opt: eVKZkBb4RTqUF8oiefVeUw + mar-signing-l10n-fur-win64-shippable/opt: LyQc_WVaQn-tYSKuZT4t9w + mar-signing-l10n-fy-NL-linux-shippable/opt: UUDCuZi9Rqe1OF1fKfshtg + mar-signing-l10n-fy-NL-linux64-shippable/opt: KcVZJjERSgumSIq6uslkXA + mar-signing-l10n-fy-NL-macosx64-shippable/opt: FQfJx7JATwikmb5WvuKohA + mar-signing-l10n-fy-NL-win32-shippable/opt: IXn7nyivQj6LMZYVvymzrg + mar-signing-l10n-fy-NL-win64-aarch64-shippable/opt: B8wmgmgzTdKr23cBEk3ZHA + mar-signing-l10n-fy-NL-win64-shippable/opt: bM4OPLUlQwmgweYf-EvtCQ + mar-signing-l10n-ga-IE-linux-shippable/opt: SU9Yf9hPR8WWcxBUp0UONA + mar-signing-l10n-ga-IE-linux64-shippable/opt: OKLUA9dHRFGm6FLPJAFs7w + mar-signing-l10n-ga-IE-macosx64-shippable/opt: AnLcm_2PTxuqvbREN_5CuQ + mar-signing-l10n-ga-IE-win32-shippable/opt: L5dKvgfCTfy5L75L6NVMLQ + mar-signing-l10n-ga-IE-win64-aarch64-shippable/opt: cHf2gAbFT1SHYKJ7dDo2gA + mar-signing-l10n-ga-IE-win64-shippable/opt: Wh6NYGf-T4KkxVlSVK3MFg + mar-signing-l10n-gd-linux-shippable/opt: bnk0mgNPSFi6zmUB34XMuA + mar-signing-l10n-gd-linux64-shippable/opt: Bia1ibzDQuObqHl_plEA8Q + mar-signing-l10n-gd-macosx64-shippable/opt: DqM7p8wCRsq8l3K7hj_Lng + mar-signing-l10n-gd-win32-shippable/opt: KSUaHLN7RsC_Sh_mykCPng + mar-signing-l10n-gd-win64-aarch64-shippable/opt: FGOeSsdRTBOJZFaou-3QRg + mar-signing-l10n-gd-win64-shippable/opt: LEWmU_rVSFui3Z4IGC1vdQ + mar-signing-l10n-gl-linux-shippable/opt: S2U-tX23S9CLJWB1-V9bpA + mar-signing-l10n-gl-linux64-shippable/opt: N9IlHcJdRn2Ly2ENSWZPQw + mar-signing-l10n-gl-macosx64-shippable/opt: Yn5jILHTSgiPretfxauAgw + mar-signing-l10n-gl-win32-shippable/opt: YR55Hr0MSXeXal5yHg-Zzg + mar-signing-l10n-gl-win64-aarch64-shippable/opt: NYvMkznCRAqOGZPH6rgqsQ + mar-signing-l10n-gl-win64-shippable/opt: UrZEXQ3yTeSH0Jw4QFGzYQ + mar-signing-l10n-gn-linux-shippable/opt: Tb7j_dfHQnO2fcqixClDcw + mar-signing-l10n-gn-linux64-shippable/opt: eBpWiy1gThCdh21v80nb2w + mar-signing-l10n-gn-macosx64-shippable/opt: KXjCKnNGR_uHyQP0EsvzAg + mar-signing-l10n-gn-win32-shippable/opt: JYp6tmGmSnCMCQmJnzlabw + mar-signing-l10n-gn-win64-aarch64-shippable/opt: E-fPyN_wSD-K8lV67nSScA + mar-signing-l10n-gn-win64-shippable/opt: ao4tgcCuRtyDPXvyKX7p7w + mar-signing-l10n-gu-IN-linux-shippable/opt: QX-ae61wTX-rHkt2zWNCpg + mar-signing-l10n-gu-IN-linux64-shippable/opt: Tp706c9mQZi1JXZ5ZrE7Mw + mar-signing-l10n-gu-IN-macosx64-shippable/opt: RuhkNJD5QKqhDBYHbdc8UQ + mar-signing-l10n-gu-IN-win32-shippable/opt: OnSAdrFGRMq__C2o3s8Mhw + mar-signing-l10n-gu-IN-win64-aarch64-shippable/opt: PqBNdO-iTHi2oKEljFR0Lg + mar-signing-l10n-gu-IN-win64-shippable/opt: Iv9PVIJVRrm6AgxBsbKFLQ + mar-signing-l10n-he-linux-shippable/opt: aGlKg3BjQ4qBTZceWPi3Tg + mar-signing-l10n-he-linux64-shippable/opt: KHD6kffvSuKxPWD4RzEbZQ + mar-signing-l10n-he-macosx64-shippable/opt: CEEwOpeFQg-btnvcNDciAA + mar-signing-l10n-he-win32-shippable/opt: f3Gd446nTlaXDNVOI8UShA + mar-signing-l10n-he-win64-aarch64-shippable/opt: aPWs-kDiQvWUUHhzeA8nyA + mar-signing-l10n-he-win64-shippable/opt: UTs3ponpQ8evLeOdRQJVcA + mar-signing-l10n-hi-IN-linux-shippable/opt: P51-CzIcRO-c0sPFNoQfvQ + mar-signing-l10n-hi-IN-linux64-shippable/opt: MiUXvgQ6RuunY8wEmGzIiA + mar-signing-l10n-hi-IN-macosx64-shippable/opt: GztW7yK6Sk6pArvLWqh8dg + mar-signing-l10n-hi-IN-win32-shippable/opt: CuOPddmORjelgvm3a7dZIQ + mar-signing-l10n-hi-IN-win64-aarch64-shippable/opt: Sfsy0zT0R-CQg3lGw7H6dA + mar-signing-l10n-hi-IN-win64-shippable/opt: D6ANwEAxQT28xwN4OabEIQ + mar-signing-l10n-hr-linux-shippable/opt: Dts9JMWUQ36p_63wDuqoFA + mar-signing-l10n-hr-linux64-shippable/opt: S-p8UvkcRgeOUTcYmoPBgA + mar-signing-l10n-hr-macosx64-shippable/opt: OyD_jsPVS2aC4UDJhuhcMQ + mar-signing-l10n-hr-win32-shippable/opt: MI8HGbSLQVSJ2819kGd4_A + mar-signing-l10n-hr-win64-aarch64-shippable/opt: YW3hxIliTIG5cxOyvf6O3w + mar-signing-l10n-hr-win64-shippable/opt: EkozbeuCR9KOZCjtZrVN_w + mar-signing-l10n-hsb-linux-shippable/opt: a7uG810mRZ63Xye8fEiqCQ + mar-signing-l10n-hsb-linux64-shippable/opt: AJtt0az_TvSUVy_p2-FzVg + mar-signing-l10n-hsb-macosx64-shippable/opt: Zms45Q7LRfaKNWdgel-NUA + mar-signing-l10n-hsb-win32-shippable/opt: WOga-IfhSiCijHvOec9CIA + mar-signing-l10n-hsb-win64-aarch64-shippable/opt: TDOS15TVRfm3iiQ1RhKtlQ + mar-signing-l10n-hsb-win64-shippable/opt: SrIHG2TbR66B9ZR7F56nvg + mar-signing-l10n-hu-linux-shippable/opt: DC5XZhywQ1e9kPWS2807eg + mar-signing-l10n-hu-linux64-shippable/opt: FgYNpE2nTp-X3mtz38bltg + mar-signing-l10n-hu-macosx64-shippable/opt: STWY4TonT7WnkaTqf6dfPA + mar-signing-l10n-hu-win32-shippable/opt: OnKBFkJVTaCDeTkD0VsYtw + mar-signing-l10n-hu-win64-aarch64-shippable/opt: WprhejZ5TACq1W-YdK_VdQ + mar-signing-l10n-hu-win64-shippable/opt: OvsiPUkiTZuvPeGoHBwNOA + mar-signing-l10n-hy-AM-linux-shippable/opt: Honoh9orRByejMXnDbqd2Q + mar-signing-l10n-hy-AM-linux64-shippable/opt: eDBDQfZBRHyqJF1yxJz2zg + mar-signing-l10n-hy-AM-macosx64-shippable/opt: MR9Hcd1oR5yz9NOtS42WpA + mar-signing-l10n-hy-AM-win32-shippable/opt: ZY4bXKljStyogd47Ezyp8w + mar-signing-l10n-hy-AM-win64-aarch64-shippable/opt: HKjTyrDXRIqyi6BwwW1UmA + mar-signing-l10n-hy-AM-win64-shippable/opt: VPMX7X1nQxCouIYkWJ2wHw + mar-signing-l10n-ia-linux-shippable/opt: QcTqvPpkRR-h4XsGJS4xyw + mar-signing-l10n-ia-linux64-shippable/opt: T_0Ve580TVqbqNoGcIH9aA + mar-signing-l10n-ia-macosx64-shippable/opt: DlWMjy5GRWi92ybIk4z6hQ + mar-signing-l10n-ia-win32-shippable/opt: JoUt0yMwQJ6GdjwE-2rbxg + mar-signing-l10n-ia-win64-aarch64-shippable/opt: aSZr9eHiQEy1T1ZSy3fuJw + mar-signing-l10n-ia-win64-shippable/opt: FHQ0oYcbT_-TDFAkQYOB3A + mar-signing-l10n-id-linux-shippable/opt: c1BuPjBrTP-6JDHNTZ9QFg + mar-signing-l10n-id-linux64-shippable/opt: eQKx-rJlQ_CP-bV812mwIQ + mar-signing-l10n-id-macosx64-shippable/opt: UQwjTTN5QeCErGWq0CwBfw + mar-signing-l10n-id-win32-shippable/opt: T7vqF_51RA6heaWFVL1x9g + mar-signing-l10n-id-win64-aarch64-shippable/opt: NtAfg53rS72PsDA-_zkWzw + mar-signing-l10n-id-win64-shippable/opt: d6rW0CbtS8m97Wm3PrDjIA + mar-signing-l10n-is-linux-shippable/opt: Scyb0odsT1ORnl8cNl8PmQ + mar-signing-l10n-is-linux64-shippable/opt: HTXIpb8bRpGHr9kG6yssOA + mar-signing-l10n-is-macosx64-shippable/opt: cQ9ofD0vQ8edyldc-bwHgA + mar-signing-l10n-is-win32-shippable/opt: OjcVtAwzTiCyo_yYhp5FNw + mar-signing-l10n-is-win64-aarch64-shippable/opt: GsKjWDCtRbG0t4CDLYN5og + mar-signing-l10n-is-win64-shippable/opt: eBWQJ80aT7Grht_aiJV9hw + mar-signing-l10n-it-linux-shippable/opt: Vg3KfdovQSSIn2e9CTfvng + mar-signing-l10n-it-linux64-shippable/opt: IoiK8A2CTTu8pJq8fhfn7Q + mar-signing-l10n-it-macosx64-shippable/opt: d5VT_LLtSTKGxzvm8ZbmOw + mar-signing-l10n-it-win32-shippable/opt: BZmzNbV3QkKcjBwL1GDM3A + mar-signing-l10n-it-win64-aarch64-shippable/opt: N6kmOg0NQxWY8UGq4FvtVQ + mar-signing-l10n-it-win64-shippable/opt: EIEQDVG4QhO0dH1_yfGxrw + mar-signing-l10n-ja-JP-mac-macosx64-shippable/opt: PSaBhpVCRkGjxYo8S7WIDQ + mar-signing-l10n-ja-linux-shippable/opt: Xt5gX_inTH-dmMzxhDmvNg + mar-signing-l10n-ja-linux64-shippable/opt: AGHAQL4kTOOORJ9VNpB2eg + mar-signing-l10n-ja-win32-shippable/opt: OR0MD6cEQVulBEHvX-L2Ew + mar-signing-l10n-ja-win64-aarch64-shippable/opt: bJIFPOQQTYKzb9vzj1MlbA + mar-signing-l10n-ja-win64-shippable/opt: X_kplEHuSx60cNMJwZTCFw + mar-signing-l10n-ka-linux-shippable/opt: QGt50WpGSWCu7s84upRTlA + mar-signing-l10n-ka-linux64-shippable/opt: H1FwynZMTvOZW7TIBeltqQ + mar-signing-l10n-ka-macosx64-shippable/opt: emYg0LjoSYeLVl9Zu70o2A + mar-signing-l10n-ka-win32-shippable/opt: JdCLdQMXT0GzKMRleyx6CA + mar-signing-l10n-ka-win64-aarch64-shippable/opt: b42uZvD7Qba2GMCyWTqj2g + mar-signing-l10n-ka-win64-shippable/opt: RRsDH055TKqgkGviWPJuCA + mar-signing-l10n-kab-linux-shippable/opt: BN0BFvO1S5q77XwjJ0x1ZQ + mar-signing-l10n-kab-linux64-shippable/opt: YkzMjUxDQd2_-H3dxFsRNw + mar-signing-l10n-kab-macosx64-shippable/opt: c4HcuylwRT-TUqYSSqqbpw + mar-signing-l10n-kab-win32-shippable/opt: Ch3t6gE3TimoQEa9_3Vf-w + mar-signing-l10n-kab-win64-aarch64-shippable/opt: Rtglc7KgQI6DNCkCdfbb0g + mar-signing-l10n-kab-win64-shippable/opt: KXCWSWX3QDqb2-OuQokx9g + mar-signing-l10n-kk-linux-shippable/opt: MCXs2qF1R1q6Aia_qbLXCg + mar-signing-l10n-kk-linux64-shippable/opt: cODGixKHSWqXS_iVxAXKyw + mar-signing-l10n-kk-macosx64-shippable/opt: GRTElgmbTIGclOIuTJ5Cdw + mar-signing-l10n-kk-win32-shippable/opt: RvFs_TVQQbeRNCw18QOvYA + mar-signing-l10n-kk-win64-aarch64-shippable/opt: CAkegRpYT4WqQV5XTcTf2A + mar-signing-l10n-kk-win64-shippable/opt: Iv-NI5INR_SgSipA5mnuZw + mar-signing-l10n-km-linux-shippable/opt: XeXrf7GGSWik05mBSWXvCg + mar-signing-l10n-km-linux64-shippable/opt: bJ5gIHRjRb2Hezp_1N5NFw + mar-signing-l10n-km-macosx64-shippable/opt: MUQfHV8qRYqnSyC9UmVrKQ + mar-signing-l10n-km-win32-shippable/opt: NafB_3v0SLaZXSklH9JjIQ + mar-signing-l10n-km-win64-aarch64-shippable/opt: Jo3SBelrRWWQQR5NNTXoyA + mar-signing-l10n-km-win64-shippable/opt: TAS7Ce51Sf2GcFSi49MmyQ + mar-signing-l10n-kn-linux-shippable/opt: L_3sttd7TD62RKbbCd6Elw + mar-signing-l10n-kn-linux64-shippable/opt: YLYlnU-kRiG35CChd3s9uA + mar-signing-l10n-kn-macosx64-shippable/opt: RMiujw5ZSjW9Ig6S5d1Vaw + mar-signing-l10n-kn-win32-shippable/opt: Umy_0RTqSBG1F-jyj9rfuw + mar-signing-l10n-kn-win64-aarch64-shippable/opt: RhFLHlofQSW05vvjkKerPA + mar-signing-l10n-kn-win64-shippable/opt: Vau3Td_JSHmlXZHWzs-uCQ + mar-signing-l10n-ko-linux-shippable/opt: eZ_SpnGSQ3ex4BOYHTk-7g + mar-signing-l10n-ko-linux64-shippable/opt: PlVY9EkNT8OyPfKqDYRx8Q + mar-signing-l10n-ko-macosx64-shippable/opt: bIsxTywwRo272PpVgDkgBQ + mar-signing-l10n-ko-win32-shippable/opt: F0AU4d1iTACfIc1W760hsg + mar-signing-l10n-ko-win64-aarch64-shippable/opt: SmrS6dQTTHqsggKBT9SNSA + mar-signing-l10n-ko-win64-shippable/opt: ZEuPMi4ISY2hfj-f9ww-MA + mar-signing-l10n-lij-linux-shippable/opt: aRVm4xJIRG2ftrSecbxw3w + mar-signing-l10n-lij-linux64-shippable/opt: TJFyBU1uQwul-nYac3qsJg + mar-signing-l10n-lij-macosx64-shippable/opt: a7LRMsRGRI2wrXGX69i6Nw + mar-signing-l10n-lij-win32-shippable/opt: OfpJ6g2ZTt6WrAgxqwHaaA + mar-signing-l10n-lij-win64-aarch64-shippable/opt: NC8-xRaNRteqW__VgoDYkg + mar-signing-l10n-lij-win64-shippable/opt: C6KwhJRGQYC9o3ZPnrM1lg + mar-signing-l10n-lt-linux-shippable/opt: CUAhjXr8SRKnuddh2d-fAA + mar-signing-l10n-lt-linux64-shippable/opt: OhUhpjivRYaBx6Rzw_vlcA + mar-signing-l10n-lt-macosx64-shippable/opt: Y0L3ewFeTWKbx3B6hiC79g + mar-signing-l10n-lt-win32-shippable/opt: TofICktNSaKOqjr1REFvRQ + mar-signing-l10n-lt-win64-aarch64-shippable/opt: bPQA3xKzTHG70b2531qnMw + mar-signing-l10n-lt-win64-shippable/opt: Mg4TSjo0SlS6bgzNfUacKw + mar-signing-l10n-lv-linux-shippable/opt: Hu-b5ke_RA6ijcJ2SIy3Ew + mar-signing-l10n-lv-linux64-shippable/opt: bNzYxs1xROyr1NnaIrIggw + mar-signing-l10n-lv-macosx64-shippable/opt: RKZrXYiURg-FIILl08KXcQ + mar-signing-l10n-lv-win32-shippable/opt: cgxB3FLPT3WRRfYu2gSpzw + mar-signing-l10n-lv-win64-aarch64-shippable/opt: UdWxpZJpQV2I6ACSNGQ9mw + mar-signing-l10n-lv-win64-shippable/opt: OLwKSOIbR3GSSTapA2OvpQ + mar-signing-l10n-mk-linux-shippable/opt: UFFpxLw3SOGF8O6XHcvSFA + mar-signing-l10n-mk-linux64-shippable/opt: OssvKA0FQsWmjutHrXPJtg + mar-signing-l10n-mk-macosx64-shippable/opt: JsEY6upjQnadl11SlkSxZw + mar-signing-l10n-mk-win32-shippable/opt: Lh82Y8ENRq2yz7I8y0jFbw + mar-signing-l10n-mk-win64-aarch64-shippable/opt: PEYH_F5vRw6mqOavJ9zmKw + mar-signing-l10n-mk-win64-shippable/opt: FicBRJ91SCKInWiPOKO2sg + mar-signing-l10n-mr-linux-shippable/opt: V21PO3cbRbiOfi6AhBvP2g + mar-signing-l10n-mr-linux64-shippable/opt: UH6eRGH7Q6ey8b_El0nBNQ + mar-signing-l10n-mr-macosx64-shippable/opt: D6nNa366SOCEBy0qw_zQhA + mar-signing-l10n-mr-win32-shippable/opt: UCjclOfBQHGlcooaxlSGjQ + mar-signing-l10n-mr-win64-aarch64-shippable/opt: KmQoaWaFRTqFu_fF17hykw + mar-signing-l10n-mr-win64-shippable/opt: eXI-za8ASUatuLFyoN0SBg + mar-signing-l10n-ms-linux-shippable/opt: NviZ7eOOQRWHAgJNELb-6Q + mar-signing-l10n-ms-linux64-shippable/opt: HU1GM9bXTpig-btN760P1A + mar-signing-l10n-ms-macosx64-shippable/opt: FIakir51R5aJZgxzDZEjrQ + mar-signing-l10n-ms-win32-shippable/opt: NkY46U17TP-HbWmjnsE2bQ + mar-signing-l10n-ms-win64-aarch64-shippable/opt: F9_y2pAlTLSor8Ruhcgztw + mar-signing-l10n-ms-win64-shippable/opt: CIb_XcMZTM-0bYhTssaoeA + mar-signing-l10n-my-linux-shippable/opt: OIG4ENT8SYi3TclH0P2Psw + mar-signing-l10n-my-linux64-shippable/opt: Z6XqP2JfRI2WVUnSPYnmYw + mar-signing-l10n-my-macosx64-shippable/opt: BxuxjaXlSK6iYIiDDHP91w + mar-signing-l10n-my-win32-shippable/opt: aSJBcz6fQn66bQp0Q2fT_A + mar-signing-l10n-my-win64-aarch64-shippable/opt: AajgH-KTTriY8GDfkDPuiQ + mar-signing-l10n-my-win64-shippable/opt: QnUbhrRSSXyQYQ3DxMnflg + mar-signing-l10n-nb-NO-linux-shippable/opt: VZMn3Aw_QHGVO1sw4Cd-4Q + mar-signing-l10n-nb-NO-linux64-shippable/opt: PiDdOs17Timm6p0ANSm0WQ + mar-signing-l10n-nb-NO-macosx64-shippable/opt: WdLUK73kSueFjawNNTdxVg + mar-signing-l10n-nb-NO-win32-shippable/opt: GEra12aSS1ustVTrN85usg + mar-signing-l10n-nb-NO-win64-aarch64-shippable/opt: cUMmevN-Sp2enkFtaixCNA + mar-signing-l10n-nb-NO-win64-shippable/opt: Ki85T2mnTI2olOKdbz533Q + mar-signing-l10n-ne-NP-linux-shippable/opt: bmJ0fansT4-VvPVB--kf1g + mar-signing-l10n-ne-NP-linux64-shippable/opt: VMZEMqPyRiKIaf8zeiaCJw + mar-signing-l10n-ne-NP-macosx64-shippable/opt: TkJcrlKXQvCW3X8ZvnlXoQ + mar-signing-l10n-ne-NP-win32-shippable/opt: VW9y0uDoSZKmyHzGvxj8aQ + mar-signing-l10n-ne-NP-win64-aarch64-shippable/opt: Rn8dR36PRc-PcpHVxYSrPw + mar-signing-l10n-ne-NP-win64-shippable/opt: DJs5PiiEQ-iFIj1JQUu1KQ + mar-signing-l10n-nl-linux-shippable/opt: HyEpZ-x2Rx2PJl3a-P64zg + mar-signing-l10n-nl-linux64-shippable/opt: DQaJ1mWVQNSdCGUmGsKnRA + mar-signing-l10n-nl-macosx64-shippable/opt: XGddrbmVRRCxFibkOwSgcA + mar-signing-l10n-nl-win32-shippable/opt: GImUNX4mSSCzHBjPVtkHBw + mar-signing-l10n-nl-win64-aarch64-shippable/opt: GXEYDokxTiG8chNdjuX8mg + mar-signing-l10n-nl-win64-shippable/opt: BrvRogFLRy-G_YB155fo9Q + mar-signing-l10n-nn-NO-linux-shippable/opt: FcT5deFKRXCSPa4gL6E54w + mar-signing-l10n-nn-NO-linux64-shippable/opt: FiDBKBA6SFSQaLTSXfxLxw + mar-signing-l10n-nn-NO-macosx64-shippable/opt: DfbslwdMTLS4H8vsf-DKaQ + mar-signing-l10n-nn-NO-win32-shippable/opt: JcKaqkGCSsSwCWJP_xyiyQ + mar-signing-l10n-nn-NO-win64-aarch64-shippable/opt: Vt80qDx6T1uES1H7OtByRw + mar-signing-l10n-nn-NO-win64-shippable/opt: NwbEOYWiQjWfZ9MG04BxUQ + mar-signing-l10n-oc-linux-shippable/opt: EV7nuinRQZ26xGKnXDDFew + mar-signing-l10n-oc-linux64-shippable/opt: Gh7bV5yvQrCJ9AOGaEKNPw + mar-signing-l10n-oc-macosx64-shippable/opt: Xjp1QmhPRrS4wpUv8Jtcxw + mar-signing-l10n-oc-win32-shippable/opt: Bl-ygUdKR6qcZm8trRsNDA + mar-signing-l10n-oc-win64-aarch64-shippable/opt: GmWfHatmQKi5sUwvk8uepQ + mar-signing-l10n-oc-win64-shippable/opt: TZ6luJdIRDm5XJHZPoYhQQ + mar-signing-l10n-pa-IN-linux-shippable/opt: dXvlelT_T-a9tD5pwQUmxg + mar-signing-l10n-pa-IN-linux64-shippable/opt: RBhUeYV6QtKwbfx0D7omDQ + mar-signing-l10n-pa-IN-macosx64-shippable/opt: QePwTELgT9eMEvuLtm59uA + mar-signing-l10n-pa-IN-win32-shippable/opt: Pwjdo5jVTtiBR8eY9-RsHQ + mar-signing-l10n-pa-IN-win64-aarch64-shippable/opt: KxG3MTFmT56jq0O96qr7xA + mar-signing-l10n-pa-IN-win64-shippable/opt: Q9bDBuauQi-Ep2lezqGymw + mar-signing-l10n-pl-linux-shippable/opt: aAtZ-yFjT3W4NjOo57L4Ig + mar-signing-l10n-pl-linux64-shippable/opt: FmXsmPa_Q_2RaXHiXxuZeA + mar-signing-l10n-pl-macosx64-shippable/opt: VfVBqVl9RymFmX9vAVW0tQ + mar-signing-l10n-pl-win32-shippable/opt: Apt4kz3pQYO2RAiEsWa9fw + mar-signing-l10n-pl-win64-aarch64-shippable/opt: NOFRW32uR1yuHfIrHeoHMg + mar-signing-l10n-pl-win64-shippable/opt: ASKdQzeKQ0iXxXJgWJQEwA + mar-signing-l10n-pt-BR-linux-shippable/opt: AuWOdbzWT9y4AgRw7XC6_g + mar-signing-l10n-pt-BR-linux64-shippable/opt: VKPer7XNR8iFh_q8ShFnNg + mar-signing-l10n-pt-BR-macosx64-shippable/opt: ft4P7ZJ-R8SXUzbJtwaytQ + mar-signing-l10n-pt-BR-win32-shippable/opt: Mg-3eNuDQNiLjLsQlNb1iQ + mar-signing-l10n-pt-BR-win64-aarch64-shippable/opt: QTEgI5rtTuiYTI0wZzZ8fw + mar-signing-l10n-pt-BR-win64-shippable/opt: YobLvNm5ScyGSSJ8KtQ6fQ + mar-signing-l10n-pt-PT-linux-shippable/opt: ci3rUkfeQq2FTYQjCM3LHw + mar-signing-l10n-pt-PT-linux64-shippable/opt: EwAGWmZ_R0q2qeGmqz23bQ + mar-signing-l10n-pt-PT-macosx64-shippable/opt: VGH__z_0S9-JRX1_KbVtJQ + mar-signing-l10n-pt-PT-win32-shippable/opt: QVYYV5LMRy2FP62C9dPuCA + mar-signing-l10n-pt-PT-win64-aarch64-shippable/opt: Z28ioJDSSv23R6uSTPUAAw + mar-signing-l10n-pt-PT-win64-shippable/opt: CPsi59HERdCmfl7SVM6wcw + mar-signing-l10n-rm-linux-shippable/opt: S-zcqNwTTeCCqKb-use9Hg + mar-signing-l10n-rm-linux64-shippable/opt: JETQY34TRVel_7ejYCNklg + mar-signing-l10n-rm-macosx64-shippable/opt: AFXPzzfXQ0aEsNuScRBsMQ + mar-signing-l10n-rm-win32-shippable/opt: aAiBV_2VSAG2EXvL3b72Uw + mar-signing-l10n-rm-win64-aarch64-shippable/opt: WFVm0suhSs6umn9_Rz8uCA + mar-signing-l10n-rm-win64-shippable/opt: XGT11hlzQxWoTkNi1bK2kA + mar-signing-l10n-ro-linux-shippable/opt: U4-6gAnpS16-yrGWufauWg + mar-signing-l10n-ro-linux64-shippable/opt: JAZogr_JRBeKcIU1FChqOQ + mar-signing-l10n-ro-macosx64-shippable/opt: NFF31xJ2TVOlCAsfxAkrVQ + mar-signing-l10n-ro-win32-shippable/opt: WVdhf4OlSlmQ8A4UcwVSPA + mar-signing-l10n-ro-win64-aarch64-shippable/opt: OCvnXlG9Q5CzlKS-ORrr4w + mar-signing-l10n-ro-win64-shippable/opt: bcHmjkkjQKWH2JphLmOWMQ + mar-signing-l10n-ru-linux-shippable/opt: ZT0CG2ugR3O9EUg3xhHFyw + mar-signing-l10n-ru-linux64-shippable/opt: fUqcKAe2RkOFUq6_LgUTAw + mar-signing-l10n-ru-macosx64-shippable/opt: VZHUkpTuSEqAW8IYCZucwA + mar-signing-l10n-ru-win32-shippable/opt: Bw2aTbIXTgSz1Sft5Wvoeg + mar-signing-l10n-ru-win64-aarch64-shippable/opt: QPuAc7lHRUq3E7kC0TiLpQ + mar-signing-l10n-ru-win64-shippable/opt: JYLkM7ByS0Csu3Jgjn5nGw + mar-signing-l10n-sc-linux-shippable/opt: ZMXCNI21RcqK3UFdXd0B0A + mar-signing-l10n-sc-linux64-shippable/opt: R48T7OP-QMGDcpPIS3O0xA + mar-signing-l10n-sc-macosx64-shippable/opt: JBgt4OHISOGcQ1vA0JlG5Q + mar-signing-l10n-sc-win32-shippable/opt: BChDPolwQ6Kw7SD1EnbTSQ + mar-signing-l10n-sc-win64-aarch64-shippable/opt: TaEbMUXeSU217bFFy8Chig + mar-signing-l10n-sc-win64-shippable/opt: Bde4DW_RQuiQpMkGVlFyKQ + mar-signing-l10n-sco-linux-shippable/opt: BkJzaCRNT_uZmf3e5oENdw + mar-signing-l10n-sco-linux64-shippable/opt: BOriZ3aWTxKAwTfsMv-tAA + mar-signing-l10n-sco-macosx64-shippable/opt: Wf993IRaRtm0RbQSip7QbQ + mar-signing-l10n-sco-win32-shippable/opt: K2m0KRgpQiicVQMHaLQqMA + mar-signing-l10n-sco-win64-aarch64-shippable/opt: ezbzWu8tTDCRnJL7vG_g7Q + mar-signing-l10n-sco-win64-shippable/opt: ZzQEddjMRtmV9WiXg78cYw + mar-signing-l10n-si-linux-shippable/opt: Tz077tPeRKmZunqj3d85dA + mar-signing-l10n-si-linux64-shippable/opt: EZO6DPtATpu6uv7mvReW8g + mar-signing-l10n-si-macosx64-shippable/opt: LO5z6gwaT8Cr9uPmiVNz5A + mar-signing-l10n-si-win32-shippable/opt: eLJxATPgRx-BWiKF3Uvrgg + mar-signing-l10n-si-win64-aarch64-shippable/opt: PmEofRuHRiq-ZPX5IytAjw + mar-signing-l10n-si-win64-shippable/opt: NWb6ynv9RLui7sa6KXl88g + mar-signing-l10n-sk-linux-shippable/opt: AjAlMSsmSpWri0tQp-kZvg + mar-signing-l10n-sk-linux64-shippable/opt: OZ2kkAHXReScixDHTWwQZQ + mar-signing-l10n-sk-macosx64-shippable/opt: VEuH75n6RGKPw912YUiubA + mar-signing-l10n-sk-win32-shippable/opt: C7SCVTLTQDebVgWBLInQJw + mar-signing-l10n-sk-win64-aarch64-shippable/opt: b5daHkOzQTm7PFCieMBzuw + mar-signing-l10n-sk-win64-shippable/opt: fnLCC3mmQFq8s8riF86JYA + mar-signing-l10n-sl-linux-shippable/opt: O4NsoJuDQW2YU5ZWNyKcIg + mar-signing-l10n-sl-linux64-shippable/opt: RZbelLfLQCKZa5gUBi8CGA + mar-signing-l10n-sl-macosx64-shippable/opt: DRBCsluATnmKTxLS-K3kcQ + mar-signing-l10n-sl-win32-shippable/opt: AczuAefwSWiO7njHx9M0bA + mar-signing-l10n-sl-win64-aarch64-shippable/opt: EXjqAz_7RfCOpnm6Q079aQ + mar-signing-l10n-sl-win64-shippable/opt: HOb7vyI6SsGT4tIxZIgtlg + mar-signing-l10n-son-linux-shippable/opt: QqU-cuBQTQCsv0o0krIy2g + mar-signing-l10n-son-linux64-shippable/opt: OYxsITMeSheMtnO9ysZi8A + mar-signing-l10n-son-macosx64-shippable/opt: a9CcNClCS8ORFNYqNsUsjQ + mar-signing-l10n-son-win32-shippable/opt: cAVrGHN4Rz2OhebdMpr1rA + mar-signing-l10n-son-win64-aarch64-shippable/opt: BFMDzWn1SB2cW_INFwkKlg + mar-signing-l10n-son-win64-shippable/opt: JglJ_H8yQZaiI06PF9sBgw + mar-signing-l10n-sq-linux-shippable/opt: UZfYgMWcQAeISNq4Or_7eA + mar-signing-l10n-sq-linux64-shippable/opt: bDHBUA-IR66SiYWF637BNQ + mar-signing-l10n-sq-macosx64-shippable/opt: XmShfRLZSRGhoN05bAnoBQ + mar-signing-l10n-sq-win32-shippable/opt: EucW7KM1S2CoQRTQaYJFhg + mar-signing-l10n-sq-win64-aarch64-shippable/opt: fIvFKiNQTS2hS31U9MCfrA + mar-signing-l10n-sq-win64-shippable/opt: cRVsU3z4QpmaOyf-mlXo9w + mar-signing-l10n-sr-linux-shippable/opt: aMF6wRzAR0qDfc0ayVrSdw + mar-signing-l10n-sr-linux64-shippable/opt: ESnRQ7x9QEqb9rq9ISN4XQ + mar-signing-l10n-sr-macosx64-shippable/opt: GS6g9B7ZTjeeaTZ5PdmOyA + mar-signing-l10n-sr-win32-shippable/opt: FEyWSTklQJqT4xY0pAW2uw + mar-signing-l10n-sr-win64-aarch64-shippable/opt: XQ3nOS1ZTEOfiuPcUyRSxA + mar-signing-l10n-sr-win64-shippable/opt: JGLKAC-bR3GmRGp8_g2WYA + mar-signing-l10n-sv-SE-linux-shippable/opt: GKN0uyMOQAi6DtdAsf_ssg + mar-signing-l10n-sv-SE-linux64-shippable/opt: EWTajGYSRvmkVgEzjbdlYg + mar-signing-l10n-sv-SE-macosx64-shippable/opt: SeF5CnAoQ6ah9NkvO5WrbA + mar-signing-l10n-sv-SE-win32-shippable/opt: HyVk_M3WTauNRN59vl9Urw + mar-signing-l10n-sv-SE-win64-aarch64-shippable/opt: dPXEQ5APSPOyMtoSoRrpIw + mar-signing-l10n-sv-SE-win64-shippable/opt: PJINBvJOTO6zkkM6mtSgNQ + mar-signing-l10n-szl-linux-shippable/opt: ZJKkyTOgSnKtr4PY13BQxQ + mar-signing-l10n-szl-linux64-shippable/opt: abz4uGNcTYi89laLX1_PDQ + mar-signing-l10n-szl-macosx64-shippable/opt: EZt1ZOhMQCC8sk0cnku2mw + mar-signing-l10n-szl-win32-shippable/opt: GgzOsNdqQCm13cVNoPlVJg + mar-signing-l10n-szl-win64-aarch64-shippable/opt: LNls8MQKS-OGDYxHROL4sQ + mar-signing-l10n-szl-win64-shippable/opt: XIpCOeSGRdyxBIAkCzKOPg + mar-signing-l10n-ta-linux-shippable/opt: O_g8RaAATBOFGwRE_tqqpA + mar-signing-l10n-ta-linux64-shippable/opt: JjLe_vi3S660EdGuRMniEQ + mar-signing-l10n-ta-macosx64-shippable/opt: R26lXDSkTVOwAxMGX63gaw + mar-signing-l10n-ta-win32-shippable/opt: HMF9F1kpQ0O15DTbpFBxZA + mar-signing-l10n-ta-win64-aarch64-shippable/opt: eijnb5nlQKu00WEsCndUvg + mar-signing-l10n-ta-win64-shippable/opt: U5aFItY5SsWeXwoHLzDycw + mar-signing-l10n-te-linux-shippable/opt: bv68bLkaQz--Ma5H4V7PMA + mar-signing-l10n-te-linux64-shippable/opt: IYQ4oOaoTiGmawY9-uXtMQ + mar-signing-l10n-te-macosx64-shippable/opt: DGH6HF7LTZ62rYfDb41oiQ + mar-signing-l10n-te-win32-shippable/opt: J1ArAK3wS2CiLn3SVsx2xQ + mar-signing-l10n-te-win64-aarch64-shippable/opt: Hbo7vgeSSCS2tk7QITeACQ + mar-signing-l10n-te-win64-shippable/opt: DvS3iB9aSriG5NN90osrzQ + mar-signing-l10n-tg-linux-shippable/opt: Kzo50JdiTBaIvmnqmwhT0w + mar-signing-l10n-tg-linux64-shippable/opt: CkF3KD7mRVG2ritFawTgYw + mar-signing-l10n-tg-macosx64-shippable/opt: M4zZbZ9GTrqHjBK6DOzzMQ + mar-signing-l10n-tg-win32-shippable/opt: embHh-ocTda3RdxJDx3OEQ + mar-signing-l10n-tg-win64-aarch64-shippable/opt: QmqfyQ9BQwyOS-b9XpEvTg + mar-signing-l10n-tg-win64-shippable/opt: cuRtyOeSSt6Z1MF0B3A3uA + mar-signing-l10n-th-linux-shippable/opt: Fnj4ADI-SJOLiW3pI2NnRA + mar-signing-l10n-th-linux64-shippable/opt: N_xUx3WwQzqEHyJ3Y193fw + mar-signing-l10n-th-macosx64-shippable/opt: J9rFHW0DQMGgmr83u1v1cQ + mar-signing-l10n-th-win32-shippable/opt: Rs1ZFl_wTD2z1ASQblGGvg + mar-signing-l10n-th-win64-aarch64-shippable/opt: SzmDoHiySdem9ZFJq6xTJA + mar-signing-l10n-th-win64-shippable/opt: dcQV9GJeR-qVJgucj0dLtg + mar-signing-l10n-tl-linux-shippable/opt: ZXQpAnW5SouhwovQQe3vrg + mar-signing-l10n-tl-linux64-shippable/opt: WBJ78rRCRiyp2AkarkXVVg + mar-signing-l10n-tl-macosx64-shippable/opt: dSP0Ty51RH6lWg5aLvOVGQ + mar-signing-l10n-tl-win32-shippable/opt: VEPMFF6XRI2LEPlj7zxTzA + mar-signing-l10n-tl-win64-aarch64-shippable/opt: F58sAYv3QDKzGA1kozE16Q + mar-signing-l10n-tl-win64-shippable/opt: FSC-bpvWTLGWCyJZNip5bw + mar-signing-l10n-tr-linux-shippable/opt: PL98TanpQ3OJYw1hUrptIQ + mar-signing-l10n-tr-linux64-shippable/opt: CaJcWFKWQQazET0dYpXibA + mar-signing-l10n-tr-macosx64-shippable/opt: ddDN8PTzTS-70ACd6IlEzg + mar-signing-l10n-tr-win32-shippable/opt: DuXCG18FSiisFf12YI7nYQ + mar-signing-l10n-tr-win64-aarch64-shippable/opt: d3aGs_uASkuL-cfIw04lpg + mar-signing-l10n-tr-win64-shippable/opt: Pju1xI0LSNmpCxkyNRW6kg + mar-signing-l10n-trs-linux-shippable/opt: DSLYVWrHQwmzlDcV3uYVmw + mar-signing-l10n-trs-linux64-shippable/opt: KQQH7cCuSH2HlFCRV49xLw + mar-signing-l10n-trs-macosx64-shippable/opt: FR84UdVLTmiZ555o8n97AQ + mar-signing-l10n-trs-win32-shippable/opt: L9ZrgG22SqS_3jbkrUwm4w + mar-signing-l10n-trs-win64-aarch64-shippable/opt: ae_NNc7KRU-nrPkk1By78A + mar-signing-l10n-trs-win64-shippable/opt: NyXiTA4QQdmwDxS3a0e82Q + mar-signing-l10n-uk-linux-shippable/opt: XnJV8n3BS_2aVC7veeWHXA + mar-signing-l10n-uk-linux64-shippable/opt: Chjpsy3BQCqcbttKbV9plA + mar-signing-l10n-uk-macosx64-shippable/opt: BbkK5bC4RU68rbIs7DXJLg + mar-signing-l10n-uk-win32-shippable/opt: c3_lHHYKRwCBcoGd7JhH4Q + mar-signing-l10n-uk-win64-aarch64-shippable/opt: AcFc4FAUTlSyMwOGeHobPA + mar-signing-l10n-uk-win64-shippable/opt: eVYKQjfVTVySzbqkI3YUQg + mar-signing-l10n-ur-linux-shippable/opt: PFGfiexvS62RtyQmkBXsyQ + mar-signing-l10n-ur-linux64-shippable/opt: JxjCuHLSQ6mDDIMsahjXiA + mar-signing-l10n-ur-macosx64-shippable/opt: HshTxfDlR-qJsBTe5Scxzw + mar-signing-l10n-ur-win32-shippable/opt: Q3vJBgCmTPGAdy7hKElb9g + mar-signing-l10n-ur-win64-aarch64-shippable/opt: QKCo71dNTamLcW-zDQJ_AQ + mar-signing-l10n-ur-win64-shippable/opt: Ixorh7HlTEC13_GUWMAK4A + mar-signing-l10n-uz-linux-shippable/opt: Qag-J9FYTiua9tTcopOHEw + mar-signing-l10n-uz-linux64-shippable/opt: QZ83XNVtRYC-JQekakMr4w + mar-signing-l10n-uz-macosx64-shippable/opt: bUSLaYBYSvGmitr-Ok80Ig + mar-signing-l10n-uz-win32-shippable/opt: Jiw6kGCNT-WHiSgeSeiLbQ + mar-signing-l10n-uz-win64-aarch64-shippable/opt: Ouj1UIK8T-KznVEXbkypuA + mar-signing-l10n-uz-win64-shippable/opt: HrUu-CcPR0mA2qP7h_Be7g + mar-signing-l10n-vi-linux-shippable/opt: CQoKRia7Rlagpa9xdlff0A + mar-signing-l10n-vi-linux64-shippable/opt: Ig2EBrE9QeGNqL5ilIShoQ + mar-signing-l10n-vi-macosx64-shippable/opt: YzkQrwkERbyeScG9AtGOUg + mar-signing-l10n-vi-win32-shippable/opt: eOFTFRZHSLyDFU5x724CMQ + mar-signing-l10n-vi-win64-aarch64-shippable/opt: flnAWc90QzmadFp4IaPOiA + mar-signing-l10n-vi-win64-shippable/opt: esTb-l4lT3ORAapvCuFyQg + mar-signing-l10n-xh-linux-shippable/opt: eYADFaS3TlSPA26N6HIZzQ + mar-signing-l10n-xh-linux64-shippable/opt: TfeNIebBRcOmoBvy1qgCfA + mar-signing-l10n-xh-macosx64-shippable/opt: eU7OQrtfS1G3tBzGpjnWeA + mar-signing-l10n-xh-win32-shippable/opt: PltcKu0HTuifKV7w0qHmGw + mar-signing-l10n-xh-win64-aarch64-shippable/opt: bdh8m_sRSOuSE2ENZIRqvg + mar-signing-l10n-xh-win64-shippable/opt: NEjxTm4BRvaeAEa1tTgypg + mar-signing-l10n-zh-CN-linux-shippable/opt: YSXOuSr7So2ljxPVwaBTCw + mar-signing-l10n-zh-CN-linux64-shippable/opt: W6nAAaj7ROmbpH-6RPUUxw + mar-signing-l10n-zh-CN-macosx64-shippable/opt: ctBO7ORLRxeUFBz7hI8Prw + mar-signing-l10n-zh-CN-win32-shippable/opt: PyIo1QmmRVC9uUDdDDEb9A + mar-signing-l10n-zh-CN-win64-aarch64-shippable/opt: AP1GR8J5RXS09LmZmXn22A + mar-signing-l10n-zh-CN-win64-shippable/opt: VkMasa15Q56zuRtIZqyv8w + mar-signing-l10n-zh-TW-linux-shippable/opt: ctsz-xrnQVik2bHeQpfJGg + mar-signing-l10n-zh-TW-linux64-shippable/opt: Q4E787zYQs-Qzil7dilEpA + mar-signing-l10n-zh-TW-macosx64-shippable/opt: WieO6wnESNWNsxzxPlu-aQ + mar-signing-l10n-zh-TW-win32-shippable/opt: fbcINuqxSI-9SFzOHziDFA + mar-signing-l10n-zh-TW-win64-aarch64-shippable/opt: WOzLUJ-7QrSUY_4y5S01vg + mar-signing-l10n-zh-TW-win64-shippable/opt: M8niKqQXQEeF1cPe_mNg1Q + mar-signing-linux-shippable/opt: IaoSDltcRlKSrhaPLkAqJA + mar-signing-linux64-shippable/opt: chkmoU3kRnqML08pbywUKA + mar-signing-macosx64-shippable/opt: ENdJY7R7S5y-ON80k-dTeA + mar-signing-win32-shippable/opt: b5NPh0mPTQiRaHKxIrermw + mar-signing-win64-aarch64-shippable/opt: Du4O9lHJSVWhL0rG_hi6UQ + mar-signing-win64-shippable/opt: Jz367506SESQyTkndE7Tsg + packages-deb11-cmake: Uv8i0OZtQzm7oBj291Ke4Q + packages-deb11-mercurial: bP2b8fXaTmitAEtWUJmOyg + packages-deb11-python-zstandard: WOYJHh4rTpaZjYawCuSH4Q + packages-deb11-valgrind: bPcu-zKYTMO2kzwLWvEhuQ + packages-deb8-32-gcc-8: QcCs85N2RSS_C4xsxKoBLw + packages-deb8-gcc-8: RyJ7rDycSy2_eWStcLlrbg + packages-deb8-gtk3: dtS0lNFkRweVt7rK5hWSbQ + packages-ub18-32-libc6: X0n4kRzXRgCX-cntxtZtUQ + packages-ub18-libc6: QfYgqhnAR3icWQHfI-RQ3A + packages-ub18-mercurial: Dy2O5OZvTmSHL0eq7BFFXg + packages-ub18-python-psutil: CxcTlF6dRe2bu5ppxLpLdA + packages-ub18-python-zstandard: AqYNqjmTQuaMordsE2gqjQ + packages-ub20-mercurial: FgZinnq1TXSatmKOZfwY8Q + packages-ub20-python-zstandard: XGAqmtKBR2afSz5FFaccbA + partials-ach-linux-shippable/opt: KSLMhtbLS2OBC175yGiSSw + partials-ach-linux64-shippable/opt: RTZMz47YTnSIwwnpRhbVEg + partials-ach-macosx64-shippable/opt: LatDfQfVS8eF2vB0ZMJFEw + partials-ach-win32-shippable/opt: LuDDLEmDQU2iF-O5Jox7eQ + partials-ach-win64-aarch64-shippable/opt: Vs11uS3eTv-3PKmIlPVpTA + partials-ach-win64-shippable/opt: HQl-iJXzQHGmINVaplxFrQ + partials-af-linux-shippable/opt: TUpz4akETz2ZTlQjkCEVsQ + partials-af-linux64-shippable/opt: J6gul09nS8e_muF-0dPIrw + partials-af-macosx64-shippable/opt: LMNJOTMGRVKRYJbZZv5KIQ + partials-af-win32-shippable/opt: YJqXY_RtSPOhM7CGHbhBuA + partials-af-win64-aarch64-shippable/opt: YVCm3_MzQayV86hgXYHKwQ + partials-af-win64-shippable/opt: F-2zt6fXSceQAg87LvVilQ + partials-an-linux-shippable/opt: Odv7m3tYRyObdvojXRaW0Q + partials-an-linux64-shippable/opt: EYSme3JxTtmNeVW491NC9A + partials-an-macosx64-shippable/opt: dyqpO0DDSsevDZ0XtSFtMw + partials-an-win32-shippable/opt: dTBMn9zMRfK-y0f2PtSwPg + partials-an-win64-aarch64-shippable/opt: SWy7jxEuRuK6FgP2-ZMyng + partials-an-win64-shippable/opt: akjiTtYbTs-iGocU2XR5RA + partials-ar-linux-shippable/opt: Aq9ESFyFSEC7ZDs9uLyMXw + partials-ar-linux64-shippable/opt: JVjKxVXKSFyKa6Lgd9odLQ + partials-ar-macosx64-shippable/opt: eoX8n2r7SjuUPkc_uQ36FA + partials-ar-win32-shippable/opt: RhkAv75cS8yeseM7_bpKog + partials-ar-win64-aarch64-shippable/opt: RuuZ1yYuSzmz5Q48G6T3Jg + partials-ar-win64-shippable/opt: HYtqgHAmSAauHOGo71R5RQ + partials-ast-linux-shippable/opt: dWr0QvsGSyGrw42iOPnpHg + partials-ast-linux64-shippable/opt: XLWizy33RjGpKYmtbxiCXQ + partials-ast-macosx64-shippable/opt: cKXJWgtPQXm6Pq2njBLOqg + partials-ast-win32-shippable/opt: ebNZKjmURhaHtdDFfdyKAw + partials-ast-win64-aarch64-shippable/opt: Ai8hLqduQz-8OnILz_x5JA + partials-ast-win64-shippable/opt: SOElKvTLRQe1smF_dWokwA + partials-az-linux-shippable/opt: fffihILUS1--Nty9thSlQw + partials-az-linux64-shippable/opt: P-rC3y53SSimEYpSEdJ3BQ + partials-az-macosx64-shippable/opt: NnZ12C0SQPeIIv7qU0rL0g + partials-az-win32-shippable/opt: P_74BCNISbuJZKSLvDBi7Q + partials-az-win64-aarch64-shippable/opt: Qd8Qb5LtSY-biiSicV8R2g + partials-az-win64-shippable/opt: amtFlIYuSE6DNdmp8Hc0tg + partials-be-linux-shippable/opt: DJOW4mqJTyuZosZPjmmpbA + partials-be-linux64-shippable/opt: PufIHEZ0QSepQKCQMDK-gg + partials-be-macosx64-shippable/opt: BfnBDG7_QAKPMzH9L_QaUA + partials-be-win32-shippable/opt: Mv0f8apuQ1OnIS4u7uebgg + partials-be-win64-aarch64-shippable/opt: Jgygqy4FS1adVFXEwlR5bg + partials-be-win64-shippable/opt: MprfLYqgRVelNWDlEUm8fw + partials-bg-linux-shippable/opt: SSVOZ9odQlmboO_x2pi4AA + partials-bg-linux64-shippable/opt: b_qMerZxRh2_JoTmqJ1ezw + partials-bg-macosx64-shippable/opt: Dz69Oy_qRMCX3yfajjBftQ + partials-bg-win32-shippable/opt: I4AK_tuiRCWT2AklBk4SQQ + partials-bg-win64-aarch64-shippable/opt: AUQmxFM7RwWeZ2OeG3NCrA + partials-bg-win64-shippable/opt: AL-KDYD1TuONjRId8GePKg + partials-bn-linux-shippable/opt: aFLrHBeuRaWdtXJIftur4Q + partials-bn-linux64-shippable/opt: CI2iikn3Tf2WR_L42719DQ + partials-bn-macosx64-shippable/opt: Q0ReBawcT5mB-0cp9XEkiQ + partials-bn-win32-shippable/opt: DMpZcOe2Qku7f49VO6GaGw + partials-bn-win64-aarch64-shippable/opt: TG_ZZqBZTtCK_EqYyFzA7w + partials-bn-win64-shippable/opt: GeEV91kJTkGdHBq4O4Tt-g + partials-br-linux-shippable/opt: JHUIetnWRou8lBT9b4nxUA + partials-br-linux64-shippable/opt: MZBfLLhMT1Om_gt7tzPRQw + partials-br-macosx64-shippable/opt: ViT3R7t-TBKmt1IWHCNHNQ + partials-br-win32-shippable/opt: MekiHTGFQiKrFKUX9O63IA + partials-br-win64-aarch64-shippable/opt: QpDznFyjSkOK8XDPJjnL3A + partials-br-win64-shippable/opt: Fkp2G35TRcW31Q2Ekwfgog + partials-bs-linux-shippable/opt: Ve7kiB3MSuixwqULpbAV1A + partials-bs-linux64-shippable/opt: YWRHijlYRjKgVHJk8LtsFg + partials-bs-macosx64-shippable/opt: KYkeulmsQ9e8PABe1YyXFA + partials-bs-win32-shippable/opt: H6SGrbC2RhaytKzuQYhsog + partials-bs-win64-aarch64-shippable/opt: eKi-7m_oTFSVFUBuXUocGQ + partials-bs-win64-shippable/opt: Uume72smRj6frxpg66kYAQ + partials-ca-linux-shippable/opt: NpnjVJgbRfOLw3nDTWXBRQ + partials-ca-linux64-shippable/opt: BDMjxFMwQDycyQUj1han2A + partials-ca-macosx64-shippable/opt: YfW8of4jTHmUo3HzGniRsw + partials-ca-valencia-linux-shippable/opt: eoxrYwLgRJilEPfbEi29bA + partials-ca-valencia-linux64-shippable/opt: TN-Qz4jFSf6RMue0cutZJg + partials-ca-valencia-macosx64-shippable/opt: DZUkdn1US5KpsTjWbxY_jw + partials-ca-valencia-win32-shippable/opt: OuE5LcNoRJCOB0lnvcV0Ww + partials-ca-valencia-win64-aarch64-shippable/opt: RdhwaQeURru0kNxPA-Q5_Q + partials-ca-valencia-win64-shippable/opt: bQ4mD6kvSdKDvRRrRCGCDA + partials-ca-win32-shippable/opt: OvnKU6OhQziyHdAs9SNoOg + partials-ca-win64-aarch64-shippable/opt: Uw078rN4QY-5261XUE3Slg + partials-ca-win64-shippable/opt: BJzfmSMnQXW0qo5x3hLkoA + partials-cak-linux-shippable/opt: PSKazhcvSZW1IRTab47_4g + partials-cak-linux64-shippable/opt: DaKTCfZ5Q5SMkYmCEOM3Sw + partials-cak-macosx64-shippable/opt: Jo9K7o2PQSiMEbYapvQt9g + partials-cak-win32-shippable/opt: COj9y9h-RPSToyZ6v9KOJA + partials-cak-win64-aarch64-shippable/opt: EGsR6QQkT_qGoqvkyN9u-Q + partials-cak-win64-shippable/opt: FS71LMWJRpGlPeP94TuH_w + partials-cs-linux-shippable/opt: K-67Z2DIQQGvowwaAM6r_w + partials-cs-linux64-shippable/opt: WoeTSuU-RMGhvUkyMu4zfg + partials-cs-macosx64-shippable/opt: Eg1QlEclRGGV_ZQt5tWsag + partials-cs-win32-shippable/opt: JtmeCgNCTq-2_twmoJqJ4w + partials-cs-win64-aarch64-shippable/opt: JCy2X3UlSUmmJ9Gl3VGt6A + partials-cs-win64-shippable/opt: e11FZsYZTxuLJp0kMoSSbA + partials-cy-linux-shippable/opt: Hdl94TIaSzSCkh2mZmtdcg + partials-cy-linux64-shippable/opt: Km2yCa1IQYmmpoZLStmgbg + partials-cy-macosx64-shippable/opt: X_hlcTzfS06i3jkVWLq8Kg + partials-cy-win32-shippable/opt: ccgNQP5rTl2ePwUKvMYygA + partials-cy-win64-aarch64-shippable/opt: NmzdrLyzQDSVts8HXhcAnA + partials-cy-win64-shippable/opt: LhaJAb_WS6SF4MC4z1y4FQ + partials-da-linux-shippable/opt: bHkjnYt2QZ2gY8Ct-eFz8Q + partials-da-linux64-shippable/opt: WJ7es6UxSmaDoldDvG__zQ + partials-da-macosx64-shippable/opt: fqopq-UxTfS5qZJv_-ZxTw + partials-da-win32-shippable/opt: ANpaqGNKSW-goXkjV9S12A + partials-da-win64-aarch64-shippable/opt: agco4dwTRUK8Xw4lbceypA + partials-da-win64-shippable/opt: ShauaRZfSrSxoYrDcHXqNA + partials-de-linux-shippable/opt: Jv7M2o0mRrWck2fGYY9AGg + partials-de-linux64-shippable/opt: KBc06laXRY2zW1eAmQNuTw + partials-de-macosx64-shippable/opt: EG5B-57kRh2GCQrx6W-qJg + partials-de-win32-shippable/opt: DTfLt1SyShK--2zZt1LIGg + partials-de-win64-aarch64-shippable/opt: KRSqbebDQ92BxxX-oKhQpA + partials-de-win64-shippable/opt: HhiqImoaQj2hs98lsP-NNg + partials-dsb-linux-shippable/opt: X6lg_hKzQra6qBD-LSUgQw + partials-dsb-linux64-shippable/opt: BjvZrJcOQMW-qLkogCa9wg + partials-dsb-macosx64-shippable/opt: DYBJ2_yEQ-Ct3ecTnPxHzA + partials-dsb-win32-shippable/opt: BGIboXKjToWjjd_KVMxGPA + partials-dsb-win64-aarch64-shippable/opt: a-JmrF3xTNCEXuW8BAOdJg + partials-dsb-win64-shippable/opt: QopdFm_uRLKZzez5fg5lRw + partials-el-linux-shippable/opt: Y-GMIZzxTmiRv5bnC2I-AA + partials-el-linux64-shippable/opt: TN15RG5rTc2Az2UYBUVE1g + partials-el-macosx64-shippable/opt: elV8Aw5nS7S4QZynYirVNw + partials-el-win32-shippable/opt: MHPUMavcQ0OVboOKdZNpSw + partials-el-win64-aarch64-shippable/opt: cfW31-hZRHOG0rH4BdIvFQ + partials-el-win64-shippable/opt: HomZb4rOQWKpnUYri8tEBQ + partials-en-CA-linux-shippable/opt: PIrcrB4IS8G4sjUQbSSxjQ + partials-en-CA-linux64-shippable/opt: c3OyUrYWTq67tqtZTxmLWw + partials-en-CA-macosx64-shippable/opt: GUsmfpvvR8GbDzV_EfR9KA + partials-en-CA-win32-shippable/opt: cPH5vSA0QJyzK3TZBQHoBg + partials-en-CA-win64-aarch64-shippable/opt: UuCYK-k0Qhm7BYNef07pTA + partials-en-CA-win64-shippable/opt: QvfigFwxQ5a9PpSYvLWd4g + partials-en-GB-linux-shippable/opt: JbZA68c8RhSqDw9mFAggrw + partials-en-GB-linux64-shippable/opt: QM7GfJY2S4WNPO2WV7KOnQ + partials-en-GB-macosx64-shippable/opt: dQ9jpbCRQV-56bM3WCNMfw + partials-en-GB-win32-shippable/opt: fcizPsB2Qg2Qhpjnk0HeTg + partials-en-GB-win64-aarch64-shippable/opt: cH8vq8-TTNCyT39p6p8TDg + partials-en-GB-win64-shippable/opt: IgduvthZQKyZrlAn9ejK9Q + partials-eo-linux-shippable/opt: Q6IiUkWmSS-tLPeD9sPjUw + partials-eo-linux64-shippable/opt: Bx0gzfQjTieK98aAnZUleg + partials-eo-macosx64-shippable/opt: BrgIUEAwS1uWpHOFQ4kVqg + partials-eo-win32-shippable/opt: PjtFmbuKTEOpYbHB7VGpFA + partials-eo-win64-aarch64-shippable/opt: WA9zlhXzQSejyg6vZdkCVQ + partials-eo-win64-shippable/opt: AybXi3zwTuWdNapntTk0FA + partials-es-AR-linux-shippable/opt: NFyTDc1aT_SSQJdWMnmMbw + partials-es-AR-linux64-shippable/opt: LJf5LVzzSJOPR1MDv6_Ivg + partials-es-AR-macosx64-shippable/opt: RmSLi6-tQ6y2-X6wEpG5Xg + partials-es-AR-win32-shippable/opt: VaA6RK94TXmpiFinVYkvxw + partials-es-AR-win64-aarch64-shippable/opt: MH-vbWxPRYKxgyY_118JRg + partials-es-AR-win64-shippable/opt: ZM6PK1CfSf2LolOmZ-M29A + partials-es-CL-linux-shippable/opt: PZRjU__ZR6-P5HKSu2ymmQ + partials-es-CL-linux64-shippable/opt: BzjYsGmHStafKQQZDmJjOA + partials-es-CL-macosx64-shippable/opt: XpUReuJRSliZhT0-c50-Vw + partials-es-CL-win32-shippable/opt: Y2u45wHQTIq9-01NJIj9kA + partials-es-CL-win64-aarch64-shippable/opt: Bkr_0DlFRN-zcIFGULRBUw + partials-es-CL-win64-shippable/opt: T2GQF6-fQDqB8ezfCwMwPQ + partials-es-ES-linux-shippable/opt: UcF-UTAhROytdq1de1Kpqw + partials-es-ES-linux64-shippable/opt: LDne_4ZWRP-sI_e05v308w + partials-es-ES-macosx64-shippable/opt: NarfnaVXT0Sh7gbedj8KJA + partials-es-ES-win32-shippable/opt: LzWh8XtdRACXwcm3vfeTzA + partials-es-ES-win64-aarch64-shippable/opt: akQoR7D4RkO8ZQPmVsT9gw + partials-es-ES-win64-shippable/opt: UXTNn6LfRK-bCF8dYdo-Qg + partials-es-MX-linux-shippable/opt: RtN3aZ8URUKQ9_G6LiC2PQ + partials-es-MX-linux64-shippable/opt: QSyuRnuQR2GBdRwwU_NJ_g + partials-es-MX-macosx64-shippable/opt: ZOrDBGYCR7WEZM35IRDfJg + partials-es-MX-win32-shippable/opt: bnQPrNuGScahGM0GNnyTzQ + partials-es-MX-win64-aarch64-shippable/opt: B4LUuYKORv6oxAEXkJreIA + partials-es-MX-win64-shippable/opt: FqwdofMZQ1SjM3kv65M3VQ + partials-et-linux-shippable/opt: KAlmNiR9T2qiSPSWmpD6Lg + partials-et-linux64-shippable/opt: f6ATvadNTxuOygDKGExMQA + partials-et-macosx64-shippable/opt: E_VU5YI9SSK4APK496kxeg + partials-et-win32-shippable/opt: FbTVWOkkQFe8UvYXDfqdxQ + partials-et-win64-aarch64-shippable/opt: dwJutsueQ2Kx-_rhTz297Q + partials-et-win64-shippable/opt: aGR87hnpTfqn6ToSngcdcw + partials-eu-linux-shippable/opt: UrZHCaosQ66GvXPrY7DhZg + partials-eu-linux64-shippable/opt: GuYa74hUSMuJnwInlw4LFg + partials-eu-macosx64-shippable/opt: FToqQqokR6KXcSGQtgriog + partials-eu-win32-shippable/opt: R3J4CNAdRHqd6WELR9gGyA + partials-eu-win64-aarch64-shippable/opt: Sin4QALRRUe1OH5MHaDgHg + partials-eu-win64-shippable/opt: MrMineiNQyi_mCL8BlMa6g + partials-fa-linux-shippable/opt: T_-GJtmXTom9xwYLcqo9tg + partials-fa-linux64-shippable/opt: XZItVVT3RsuZ2tX4f3HU_Q + partials-fa-macosx64-shippable/opt: aUN7CMZySfO1UpD2fK8dkw + partials-fa-win32-shippable/opt: JNeX6Xj5SWO2kgSmosJgAw + partials-fa-win64-aarch64-shippable/opt: ebcPpzXrQHukK4GURHorDQ + partials-fa-win64-shippable/opt: P0mxQm3JS7Su1vpAL1oE_g + partials-ff-linux-shippable/opt: fn6svlvORxmzuylrwxUnNA + partials-ff-linux64-shippable/opt: d1DJTJOFTlGN-G7z2cdv0g + partials-ff-macosx64-shippable/opt: SVUAsOyERra8i1g_qc4QAQ + partials-ff-win32-shippable/opt: Ca5hL66wTGqhcSD_Ge7d0A + partials-ff-win64-aarch64-shippable/opt: GtjYk6D3S-uCwG4wOWbfrQ + partials-ff-win64-shippable/opt: I5TzcsxmTz6LP3GoxiVFww + partials-fi-linux-shippable/opt: d8Fd9apiS1G8-iSva5p9SQ + partials-fi-linux64-shippable/opt: MQeGu5epThG5lik0MrRwBg + partials-fi-macosx64-shippable/opt: AGj1g1NYQR-AWSMsbt7TNw + partials-fi-win32-shippable/opt: UFXSe_PISGOYylgs_n4LpA + partials-fi-win64-aarch64-shippable/opt: OAdB5oo0S12TUxuffWZC9g + partials-fi-win64-shippable/opt: CD5jgDRORkG-17fm80XftQ + partials-fr-linux-shippable/opt: OQceSW88QfCQQWUaESYKgQ + partials-fr-linux64-shippable/opt: Z3NUah-zSBmR7yqniq51rA + partials-fr-macosx64-shippable/opt: Cadvw3ILQmWnkSScQ2KA1w + partials-fr-win32-shippable/opt: PYprJEcERXu1wnK0mcx0yw + partials-fr-win64-aarch64-shippable/opt: D3gBx6xsTSmyHw1qrxFgcQ + partials-fr-win64-shippable/opt: XiCUF3vMQ_mFfXSe5CBVyw + partials-fur-linux-shippable/opt: KHLphfI7SeWUG70VEfYzXQ + partials-fur-linux64-shippable/opt: c3HlCceRSJK3YiFE1ENjuA + partials-fur-macosx64-shippable/opt: Z6bl21EJQKWfSqO65Ut8ew + partials-fur-win32-shippable/opt: C6D7nuS0TNWxFLy8hH4mLw + partials-fur-win64-aarch64-shippable/opt: axB4m89xSmq0oUjjIXb0sA + partials-fur-win64-shippable/opt: PCxv1b9rQG-6pMnnGB9z_w + partials-fy-NL-linux-shippable/opt: EcHRQYpfRrOlRqlr3QMzKA + partials-fy-NL-linux64-shippable/opt: Ucdb1IU6RG62tLkmE59XAg + partials-fy-NL-macosx64-shippable/opt: WVWOEOfDRRGr0lNnOofd0A + partials-fy-NL-win32-shippable/opt: WXLoDR1EQPORy3wdTahI3A + partials-fy-NL-win64-aarch64-shippable/opt: WHT3JsHITZ6xSpIte5A8Fw + partials-fy-NL-win64-shippable/opt: GwDGDY8YTe2FfJXN6pcSQA + partials-ga-IE-linux-shippable/opt: T69Ug3vuSNalfPgy4chp9Q + partials-ga-IE-linux64-shippable/opt: UiLKLZnrRzqzTHpiArXFCQ + partials-ga-IE-macosx64-shippable/opt: FvgtKjzRReiCSzaD_L0f6w + partials-ga-IE-win32-shippable/opt: WFbjnMwKQbKrPF3UcVS5Og + partials-ga-IE-win64-aarch64-shippable/opt: fM-0OI48ScmkqoKABa4Nqg + partials-ga-IE-win64-shippable/opt: eg2xCDfXR1yekJY-MyXj7g + partials-gd-linux-shippable/opt: eWlOI9LxTtm_gaqh6wKIog + partials-gd-linux64-shippable/opt: bZMv1n5-Tf-3pas-bZT15Q + partials-gd-macosx64-shippable/opt: LQKdt26sT-Kd-gDnLinHmg + partials-gd-win32-shippable/opt: aOCorgHJRZW9vw3BX8ISPg + partials-gd-win64-aarch64-shippable/opt: dOgiJa4uQkamibIgyESNuA + partials-gd-win64-shippable/opt: GdN9rUyoRNuXrhqRFp67Yg + partials-gl-linux-shippable/opt: G4_mkjsgTt6uWmyk38GqJQ + partials-gl-linux64-shippable/opt: GqcKilPXScyeYHWte55jTA + partials-gl-macosx64-shippable/opt: eQ6EhjANTauFyGL39jQkjQ + partials-gl-win32-shippable/opt: dYZxQmAXQZqK-sPYrB7QNQ + partials-gl-win64-aarch64-shippable/opt: Ba87cxQUTb-onpkoBSA1Ug + partials-gl-win64-shippable/opt: OCim3MBVTl6_Cx4UoRwD9A + partials-gn-linux-shippable/opt: X10LQ7eZSBCsutbZjqUJMw + partials-gn-linux64-shippable/opt: dqqQviW6Qta59kJVH2F2DA + partials-gn-macosx64-shippable/opt: DtPv_nXFT5ixQ5hm6jCOrA + partials-gn-win32-shippable/opt: ciRf9ot7RA-EbjgUPb0HVg + partials-gn-win64-aarch64-shippable/opt: MyI6q_gcQDWYT1j0fhd1Ow + partials-gn-win64-shippable/opt: Sjw6zqWVQNuHX361_l89vw + partials-gu-IN-linux-shippable/opt: OFtuSgYuT7unMyiaU1LKiQ + partials-gu-IN-linux64-shippable/opt: WrmqswPFTxKQacokCmSuTg + partials-gu-IN-macosx64-shippable/opt: beIIV2C5RXOUD7S1RnNX0A + partials-gu-IN-win32-shippable/opt: Z5G1is7bQ4eH3hK6Ll35Vw + partials-gu-IN-win64-aarch64-shippable/opt: BM_72czsTraxwZ9UhkssrA + partials-gu-IN-win64-shippable/opt: EShJirLkQUSEihCuOJ1ZiQ + partials-he-linux-shippable/opt: JCShCDUASu6ht7BXvKNYSg + partials-he-linux64-shippable/opt: KyLN-uB0RuCOATShryegjQ + partials-he-macosx64-shippable/opt: bSWi_yc_R9-T_XBtc-UJCQ + partials-he-win32-shippable/opt: H5peEjWGSbWPnGJOOgbbIQ + partials-he-win64-aarch64-shippable/opt: dcrIn-P4R4yG2lV1i0S8Ww + partials-he-win64-shippable/opt: LNqcACbxTjyusEehgbIgcA + partials-hi-IN-linux-shippable/opt: R9qeDVcVR1ukuB4R-_Xnvw + partials-hi-IN-linux64-shippable/opt: e-kvNSFERjCmQFwIqRf84A + partials-hi-IN-macosx64-shippable/opt: GrTK6_fsSaqZyzsuKF07hg + partials-hi-IN-win32-shippable/opt: SSOZcTsfTJm7YWP6gV8Tig + partials-hi-IN-win64-aarch64-shippable/opt: bTOMg3FzSJO_jBuKV0BlHw + partials-hi-IN-win64-shippable/opt: BlkIF6zsRES010LL77LP0A + partials-hr-linux-shippable/opt: Ky29gH_xR36HcdisWUVEYA + partials-hr-linux64-shippable/opt: T49-3ebST-SX29XLne61Kg + partials-hr-macosx64-shippable/opt: as3synLyTs2Gp5Toq_JYjw + partials-hr-win32-shippable/opt: Hjiu9ukYQky2ysaYjw9k3w + partials-hr-win64-aarch64-shippable/opt: WIrQT0kmSKmqGhSlQ3Sviw + partials-hr-win64-shippable/opt: WFS-7VMGQ0OsMnA7HHigvw + partials-hsb-linux-shippable/opt: BQt_dDINQHO45gPFsNgFCA + partials-hsb-linux64-shippable/opt: SQ2uXaKeQQ2pEeBsvzE0Qw + partials-hsb-macosx64-shippable/opt: JnUbITpCSBybStzZI4O0Qw + partials-hsb-win32-shippable/opt: TiunSDKbQdaANiRN4oEqgA + partials-hsb-win64-aarch64-shippable/opt: P-yf6yxETFGXj15QqBCJQw + partials-hsb-win64-shippable/opt: ElAuaFEhQJS_ze-CKD98kg + partials-hu-linux-shippable/opt: WjsLoHEVQ1WPDbAHLOCJgw + partials-hu-linux64-shippable/opt: EirznRm-SmOXG-kG3euQkw + partials-hu-macosx64-shippable/opt: N-QBpOXdRg2tXL0lnIRTNQ + partials-hu-win32-shippable/opt: Twzna3HsTvK2uWAVnm_jJw + partials-hu-win64-aarch64-shippable/opt: WbsBSdU4RcueThajwWTtcg + partials-hu-win64-shippable/opt: YfpMykBFS76mm0AYdjv7-w + partials-hy-AM-linux-shippable/opt: Jn2sSB1kRCCQ4cHJP1XPpA + partials-hy-AM-linux64-shippable/opt: MPf5ci7PSR-yZWAhO46jMA + partials-hy-AM-macosx64-shippable/opt: VdStV2M0TBeWfVNrljeUKQ + partials-hy-AM-win32-shippable/opt: S_E6MfMgQ7GEsqsn2-AR0Q + partials-hy-AM-win64-aarch64-shippable/opt: TB5gO5HmSli6P_pPk-4yMQ + partials-hy-AM-win64-shippable/opt: OKn5YtN0RCq0_aOIYt6LdA + partials-ia-linux-shippable/opt: NlmDeFa-T_WDQxtSf3pkfA + partials-ia-linux64-shippable/opt: X2-pJxFZRc6RJ4ceg1yLDw + partials-ia-macosx64-shippable/opt: FeFtQcEOQquw4m_1DIs0DQ + partials-ia-win32-shippable/opt: LXORW7PRSCWwo6igWVZn_A + partials-ia-win64-aarch64-shippable/opt: AjH4Z6DvQEmc4n_PE5C9ww + partials-ia-win64-shippable/opt: WjhPEWEQQMyhttzWhBoWCw + partials-id-linux-shippable/opt: XBsOE7moRguQvJLIBa2yPA + partials-id-linux64-shippable/opt: Ef0oAMAYQuCM7YW67h5u7A + partials-id-macosx64-shippable/opt: SjcNS_htQN-Bv1Oi4pVWqw + partials-id-win32-shippable/opt: YSxkG_AiSPWfxdTbN17XEQ + partials-id-win64-aarch64-shippable/opt: Lwcjjsv6QRGBHmIFM3Q2rA + partials-id-win64-shippable/opt: eM6JTZDATsOynLLmSDA2eg + partials-is-linux-shippable/opt: Q140QIAxRBCyLOkc-Q0U2Q + partials-is-linux64-shippable/opt: O-1oRtB9Tz2wPWVR7SFIPg + partials-is-macosx64-shippable/opt: HSzWAsK_Rqeb7sYoE8x26w + partials-is-win32-shippable/opt: M3jJ6UztQumtsukFr0hjlA + partials-is-win64-aarch64-shippable/opt: AWmruGRGQi6OcROoRKY37A + partials-is-win64-shippable/opt: Of0y_rTjQqGcMzzKbKXVOA + partials-it-linux-shippable/opt: CwC0QYTsQkCy80P2rzRGDA + partials-it-linux64-shippable/opt: cgdMXds4SAC3J6gSRe6O6g + partials-it-macosx64-shippable/opt: HWiu990eTViXxofhmCe9Nw + partials-it-win32-shippable/opt: L3jxGg6zQgeRTUEYtgzCzA + partials-it-win64-aarch64-shippable/opt: CTPardNbQ7OH0Xo7GvooLw + partials-it-win64-shippable/opt: V1daf9ihS3u89hZLWVk5CQ + partials-ja-JP-mac-macosx64-shippable/opt: Ja6_v2CcTs-RrpL0z1q3lw + partials-ja-linux-shippable/opt: c3oY5Q9ARr232jRPIfnLoA + partials-ja-linux64-shippable/opt: cJ-Qmau3T1qA4wvaT7H8JQ + partials-ja-win32-shippable/opt: bbsNNWCKQLq7oI3tYO2ypg + partials-ja-win64-aarch64-shippable/opt: SCQuwIzYRLCAb4XM_-20rQ + partials-ja-win64-shippable/opt: FuW6kaexSKu0o2UNUxP2Mg + partials-ka-linux-shippable/opt: Aa-Vp2CFQRCIMdGs-DthlA + partials-ka-linux64-shippable/opt: eJNRK12CRzGiWFNQdALE3A + partials-ka-macosx64-shippable/opt: ViBoC9xkQFmJxqit2LsHeQ + partials-ka-win32-shippable/opt: IjYNiY02SB2xeFP4Qhl5SQ + partials-ka-win64-aarch64-shippable/opt: A_IjG6IsS1iFMWY9yHD_iQ + partials-ka-win64-shippable/opt: Jpcx1nI-S0qmZcXdlAnhYw + partials-kab-linux-shippable/opt: MnhCCGp2ROW9st66jXV2eA + partials-kab-linux64-shippable/opt: P4HT9QPITw6kg1Z2-dQDyg + partials-kab-macosx64-shippable/opt: Fr8RLqKbRXm5eOU6mcfoag + partials-kab-win32-shippable/opt: PkepuUzYRsynelGSEByNZw + partials-kab-win64-aarch64-shippable/opt: WNOcgF6ARQ2-44JwvtnZWg + partials-kab-win64-shippable/opt: OHDtrlduS--l2wnScvhyAQ + partials-kk-linux-shippable/opt: N-vox0wTQl6dcFu3vOaH_Q + partials-kk-linux64-shippable/opt: BAjcgr3YSyOQPRm1q-4D_Q + partials-kk-macosx64-shippable/opt: ElJxq3G-RwmZkYiHtrwWBw + partials-kk-win32-shippable/opt: SN4OIGmTS9if9PEPAOtONQ + partials-kk-win64-aarch64-shippable/opt: PC3EjDKqT0aT2kWVd1XS0Q + partials-kk-win64-shippable/opt: LDNSvrfVTkmOO8Me8ZvpRQ + partials-km-linux-shippable/opt: Xn3bVMoeRpuuFs5BVcunVg + partials-km-linux64-shippable/opt: W3Yd0MmpRmOr2V5oH24rHw + partials-km-macosx64-shippable/opt: TEqY0oakS3WO-Wmsr6takA + partials-km-win32-shippable/opt: BQnefVU_RYSXH9tJBdqluQ + partials-km-win64-aarch64-shippable/opt: Sb9j_e0rRWqi4HVbhB-Nzg + partials-km-win64-shippable/opt: Hmu0yev0RqKP2PTYcgBibw + partials-kn-linux-shippable/opt: bPhQ_e81RVO6-enNQ5PVRw + partials-kn-linux64-shippable/opt: feTwTKkGRWqSxChBiSOxWg + partials-kn-macosx64-shippable/opt: JRlOplO5RfaiKpCsil0LTQ + partials-kn-win32-shippable/opt: OP6urlzLRGeQ28OAU-0kHQ + partials-kn-win64-aarch64-shippable/opt: Az2DIK6mT7iBDoOlN30Gfw + partials-kn-win64-shippable/opt: E6aSmpVpQU-5_d7bAaW0yg + partials-ko-linux-shippable/opt: NVdDJ54aSE-TnqxIrX4Jsg + partials-ko-linux64-shippable/opt: SGhaWxfzR1iilAPbCdVI8g + partials-ko-macosx64-shippable/opt: PNgO0p9oQ6ygLathj_wQ9Q + partials-ko-win32-shippable/opt: Di9wag5bTsuBjtyuFpaiMw + partials-ko-win64-aarch64-shippable/opt: HtJRCpm9ScyTi6r5I53x4A + partials-ko-win64-shippable/opt: HY9YwI75SGOzyaFrcR8uXA + partials-lij-linux-shippable/opt: b_LRUl3KRNyhNTOQ9XklVQ + partials-lij-linux64-shippable/opt: UUEY9EtMTnacX5f9RxJB2A + partials-lij-macosx64-shippable/opt: Vzx9D1P7SVm5UOAid3Kntw + partials-lij-win32-shippable/opt: CH1clj9oS--rLPowY7JOGw + partials-lij-win64-aarch64-shippable/opt: MkSbz-h0QzKkHK2hWRs_6Q + partials-lij-win64-shippable/opt: ZMhWH_USTnSyHE5mHHtb0A + partials-linux-shippable/opt: c37poFLFTiOClVoZTr4KaA + partials-linux64-shippable/opt: d9TS2z9GTkuef-rUWBkEdg + partials-lt-linux-shippable/opt: KCkbwEkEQ3S90q108H9Wkw + partials-lt-linux64-shippable/opt: c--3WYEZRaSmPoOaXKoR7A + partials-lt-macosx64-shippable/opt: AQsewLqpSbO0a1jcyiXZ9g + partials-lt-win32-shippable/opt: PHZN1Ee_RzqPz3VD2WqWAQ + partials-lt-win64-aarch64-shippable/opt: NonULTrjQVSKRD8omCGntg + partials-lt-win64-shippable/opt: DyRPrbz5SLGtfhgAYJJh5g + partials-lv-linux-shippable/opt: Z8PfmW6zTHmIofOLFxlYkA + partials-lv-linux64-shippable/opt: c0Tn9EIHRmWj9KohbqieMg + partials-lv-macosx64-shippable/opt: NFXckeitScejAnRR8kUtBw + partials-lv-win32-shippable/opt: YUhGEbSqQaGiyRBnSqHf8g + partials-lv-win64-aarch64-shippable/opt: LiHhWfNgTNqr24e_jRuvUQ + partials-lv-win64-shippable/opt: EcwhS_NKTnSmEsfaAetJxw + partials-macosx64-shippable/opt: QHmy0bK4TlqDW6yANRjXcA + partials-mk-linux-shippable/opt: BI9SZzOcRNuRoaZa7hZQpg + partials-mk-linux64-shippable/opt: NXOB3c-0SHCqqKm1yvYDSQ + partials-mk-macosx64-shippable/opt: N0mdTYe2Q5islkIJY-vCDQ + partials-mk-win32-shippable/opt: b_gAsOirTF-MNdRwbI9_UA + partials-mk-win64-aarch64-shippable/opt: fVeICi33SSuTRKnj65y5Bg + partials-mk-win64-shippable/opt: T60tAwwPReSYoKfgPYJt7w + partials-mr-linux-shippable/opt: btG-8_PmSfWBJV7qsJ_DXg + partials-mr-linux64-shippable/opt: ZYZ9QBWURZqlCBaVljKMXA + partials-mr-macosx64-shippable/opt: KPTVZk4ATtG6c7ILFVDGgg + partials-mr-win32-shippable/opt: AiaaFJXNR7GoFg3OBKDRFQ + partials-mr-win64-aarch64-shippable/opt: diS2VsJ5RZaTDu59o5D_7w + partials-mr-win64-shippable/opt: WE2My0bXSbaC8HWuGrYPZQ + partials-ms-linux-shippable/opt: FtOUZaMjT5ey-bjTqU7abw + partials-ms-linux64-shippable/opt: TxodVU-4RKG31jhWXHLnbA + partials-ms-macosx64-shippable/opt: EeOTlwEIR5CflN_sZ9ZLgw + partials-ms-win32-shippable/opt: TVA80SC1TFegt6KPNs4vuA + partials-ms-win64-aarch64-shippable/opt: eVHagxagTsKQvvqJNAuxxA + partials-ms-win64-shippable/opt: CATmMIFxQgup6OQxATw-Kg + partials-my-linux-shippable/opt: Xf_8ZpzbRIG_Jd40prPQFQ + partials-my-linux64-shippable/opt: SEte8-fdQsywQ3us4UD6WA + partials-my-macosx64-shippable/opt: OgTtpcYYSZS7nzKEv8_61Q + partials-my-win32-shippable/opt: Yud3pDx6S5iz1HOM0cIKZw + partials-my-win64-aarch64-shippable/opt: cE-xY18VT7qCKU0S-NnMLw + partials-my-win64-shippable/opt: bReCTwZ9S568BW_e-qYFug + partials-nb-NO-linux-shippable/opt: LfGYp1l8TFuLAARv__HLcw + partials-nb-NO-linux64-shippable/opt: XuAHgolDSNSAq-YajvxClA + partials-nb-NO-macosx64-shippable/opt: P7ei7IBBQzSXOap1_wOi3A + partials-nb-NO-win32-shippable/opt: eZjcDsIIQh6ickI2wAo_mg + partials-nb-NO-win64-aarch64-shippable/opt: C-syvLORQ6uk4nVo_88L8Q + partials-nb-NO-win64-shippable/opt: P5wuvO5STKGZX28FxkUjkw + partials-ne-NP-linux-shippable/opt: IMwEN0lESpqvmnUfPDotfg + partials-ne-NP-linux64-shippable/opt: el8f_q1nTtGJyONiG1X7lg + partials-ne-NP-macosx64-shippable/opt: UGTCSn5mRVGR52hezX83yw + partials-ne-NP-win32-shippable/opt: YjkhV-7-TiivYuuF0jO6pA + partials-ne-NP-win64-aarch64-shippable/opt: P4qlgmUwSG-QMGCPAkLbaw + partials-ne-NP-win64-shippable/opt: V7Bcc32zR5C6SGi-Yi-gZw + partials-nl-linux-shippable/opt: EFFGGP1JTtiINDy7OI-JYQ + partials-nl-linux64-shippable/opt: U8HVO5d6Ska2Hvtx5lc1Lg + partials-nl-macosx64-shippable/opt: S0H6lnsMQbGnHlA1KFZztQ + partials-nl-win32-shippable/opt: JE0k9JpoSU6FJWxreCbCIA + partials-nl-win64-aarch64-shippable/opt: ROZFmBUIRGGetHDOi3Tzvw + partials-nl-win64-shippable/opt: duyFpvvoTm-AJsnL2m-MqA + partials-nn-NO-linux-shippable/opt: PiQBSKwRTPuF4mlGRX0TVw + partials-nn-NO-linux64-shippable/opt: DpkD8wM9T7etAXs78LGxBg + partials-nn-NO-macosx64-shippable/opt: I32Ml5R1Q2aGqm7MTCsbwg + partials-nn-NO-win32-shippable/opt: RKEcwlEqTtirrdiU8l5WIg + partials-nn-NO-win64-aarch64-shippable/opt: Nm3vaSCmQEqNgjZtDY62fQ + partials-nn-NO-win64-shippable/opt: c3M9PMgST6SP-y2e6l6FuA + partials-oc-linux-shippable/opt: Yt1ZYtnESI22NStYZKHN5w + partials-oc-linux64-shippable/opt: dkmkNwJjQTWIhKG1hNhnYQ + partials-oc-macosx64-shippable/opt: ffM0SsKYS2yT_H0p5bMUIQ + partials-oc-win32-shippable/opt: HXsek02BSRCNHfRhq0On8Q + partials-oc-win64-aarch64-shippable/opt: CgZdxw34SOCIyANWRXAo_w + partials-oc-win64-shippable/opt: WW38ufCnSU-dNMpuM_z5_A + partials-pa-IN-linux-shippable/opt: TN-_grJRTGaOH__B3e6cBQ + partials-pa-IN-linux64-shippable/opt: aknhiCYFS96WnrVQsFV9pA + partials-pa-IN-macosx64-shippable/opt: ItCT17XKQ3KgJDyIqjgHOw + partials-pa-IN-win32-shippable/opt: deKDFJASTveNIMu5_rTeaA + partials-pa-IN-win64-aarch64-shippable/opt: UiywGT9JSESEDWTzL04Rdw + partials-pa-IN-win64-shippable/opt: OfPRvCowTtGv0jc0oLKSzA + partials-pl-linux-shippable/opt: OwCVdwUHTaOqF_EA9xRHvg + partials-pl-linux64-shippable/opt: YX_uYXXYQauNemOSDP9PlQ + partials-pl-macosx64-shippable/opt: GJzvvyXIQPG1HGVeisM8DQ + partials-pl-win32-shippable/opt: ZoNCsoydTEyM11hCMulyTw + partials-pl-win64-aarch64-shippable/opt: GfTVoju_QPCvMnuwhvnI0w + partials-pl-win64-shippable/opt: CydWgrgUTxCZu1Um5TOXlw + partials-pt-BR-linux-shippable/opt: cB2RS5MlRS-WquTsbTaM9A + partials-pt-BR-linux64-shippable/opt: J6_rA__iSvikHDloOCzcTg + partials-pt-BR-macosx64-shippable/opt: Hv8ollu7R8yLmFqMYFGCng + partials-pt-BR-win32-shippable/opt: QWB9w3U2R_2OHDrTznLwww + partials-pt-BR-win64-aarch64-shippable/opt: UxziovlOQ32bw9WpZrmVPg + partials-pt-BR-win64-shippable/opt: e4dMaXkIRZS_ISDkkk10AA + partials-pt-PT-linux-shippable/opt: RUJgRsk9QAiHVAHchxkGTQ + partials-pt-PT-linux64-shippable/opt: V7Ty7QKETtiCncgHCzJDuw + partials-pt-PT-macosx64-shippable/opt: LSqPE6mlROKKaFX_rzlH6Q + partials-pt-PT-win32-shippable/opt: YGTBrLAmQKGBHm1uD9DY4A + partials-pt-PT-win64-aarch64-shippable/opt: RJtJQTU1SNSYJgjwlPBtRQ + partials-pt-PT-win64-shippable/opt: dWKeQ7chQa2l6LYID5-uqw + partials-rm-linux-shippable/opt: AvsBDWpjSBKmuPWBh_X9pw + partials-rm-linux64-shippable/opt: e2aLO9x_R0OJ2-nD6DiHDg + partials-rm-macosx64-shippable/opt: V_PULicJS0-o6hwsyDtigg + partials-rm-win32-shippable/opt: Xy0rWkgHSeiai8IUDDSuSQ + partials-rm-win64-aarch64-shippable/opt: DcBd2XgAQpm4v14Yvv0M_g + partials-rm-win64-shippable/opt: OgX2SifHSQavka6ERegmfw + partials-ro-linux-shippable/opt: cvwBXQDNQ7CYJZEQwb_29w + partials-ro-linux64-shippable/opt: Rdw4lpreRoCWAwope4E56g + partials-ro-macosx64-shippable/opt: SfoBFg48RXG_qmGZa0G1rQ + partials-ro-win32-shippable/opt: SY7guyuwQ4iloKD3ZwvpSg + partials-ro-win64-aarch64-shippable/opt: Je0yY7xER0qMPkbp8xqrhg + partials-ro-win64-shippable/opt: N37uOIAIQt2vBC0B7_PgxQ + partials-ru-linux-shippable/opt: IUHKL1F6Q6Ov71OTkABzDQ + partials-ru-linux64-shippable/opt: SNbYLBoIT6-6FakGFo5oeg + partials-ru-macosx64-shippable/opt: NGmofXuUSrm6vq65FKx2Cg + partials-ru-win32-shippable/opt: L8uHr_SNQ0C3UI79fem_3w + partials-ru-win64-aarch64-shippable/opt: VKxkZc5MSOad_GOArbJzdA + partials-ru-win64-shippable/opt: feejzQhZRFSt8q3U9RAJPA + partials-sc-linux-shippable/opt: GzHp5j9RSri55OJJQ7Wy9w + partials-sc-linux64-shippable/opt: IeoL2OlsRU-Uhxxi_jMjgg + partials-sc-macosx64-shippable/opt: Vhf2X8rSRhCQTbmeFimayw + partials-sc-win32-shippable/opt: MVPFRLceSLa8MeqIyWT6xg + partials-sc-win64-aarch64-shippable/opt: P1tk0XJER_uo0x8UbVc9KA + partials-sc-win64-shippable/opt: KRnqypZvQESuVlkoVMPVDw + partials-sco-linux-shippable/opt: HAUcw4WoRyaTAQrQ0AcTPA + partials-sco-linux64-shippable/opt: TS9wEuWYRvyARy6bcFUX6A + partials-sco-macosx64-shippable/opt: fE9StZ7hTCmHzjGFL40vnw + partials-sco-win32-shippable/opt: TFwIk5qfQOuyPX8neKR0-w + partials-sco-win64-aarch64-shippable/opt: WssUwCLjR4C9H7zrD7plIw + partials-sco-win64-shippable/opt: XQWpn9wNQfGNF5r9anwvaw + partials-si-linux-shippable/opt: cvYCRMbrRq6lnGKYOZN8lQ + partials-si-linux64-shippable/opt: KVfwbDB0QIG69tv5JQSRGw + partials-si-macosx64-shippable/opt: HeYk24EwTWGJou2Mq_0bgw + partials-si-win32-shippable/opt: FAkcdlcWTEiHn5pKo8mFeg + partials-si-win64-aarch64-shippable/opt: DBsbH208QWu_FLuoZiOyvQ + partials-si-win64-shippable/opt: ch8qAWTaS6qw5zGE8Mu_3A + partials-signing-ach-linux-shippable/opt: RkrcQJ6vSyK3GwcjT9DNlA + partials-signing-ach-linux64-shippable/opt: UwgYXel8TE-NZkhb0ehekw + partials-signing-ach-macosx64-shippable/opt: JhVoJZC3TrunnZoH2F5npA + partials-signing-ach-win32-shippable/opt: W-doNNd9QQS6EcG2t4YkGA + partials-signing-ach-win64-aarch64-shippable/opt: DP2gwJ9yT7SidO2WpoBr1Q + partials-signing-ach-win64-shippable/opt: I5Pf5Q_vTcKo65Sx2YgntA + partials-signing-af-linux-shippable/opt: Ptw0HCYgS22PcBGJMtgskQ + partials-signing-af-linux64-shippable/opt: cShBgLatTE6lnH77Hq45KQ + partials-signing-af-macosx64-shippable/opt: WkFfBiL-TNSenWgaYafGag + partials-signing-af-win32-shippable/opt: BuDPAI3jQQedt_mtrX3j2A + partials-signing-af-win64-aarch64-shippable/opt: c27MCQjRSl-ykRbSJfLQoQ + partials-signing-af-win64-shippable/opt: EgLWcSujQLq42ObO_McvuQ + partials-signing-an-linux-shippable/opt: N3YyMQkATzarmaMRfwk8Hg + partials-signing-an-linux64-shippable/opt: fAFMzyPhTK2v8OwI_sgHLQ + partials-signing-an-macosx64-shippable/opt: MYfG8RU5RO6UxTrIW_Qmwg + partials-signing-an-win32-shippable/opt: NlSonJ_qRq6aYBrsCOIR2w + partials-signing-an-win64-aarch64-shippable/opt: c70424ezRQay_mDphNQ63g + partials-signing-an-win64-shippable/opt: KYc7TjXPQI2hN3pVctBM1Q + partials-signing-ar-linux-shippable/opt: E9Q9lxjvTfyaOjUUYUBVhg + partials-signing-ar-linux64-shippable/opt: QHR0s7axTXOdn5n9D-6UIw + partials-signing-ar-macosx64-shippable/opt: fIEo1QQcRbahzk_otWOx_Q + partials-signing-ar-win32-shippable/opt: MP0k3Ky8QKuzOCaYWTmNEA + partials-signing-ar-win64-aarch64-shippable/opt: H9o1iUsxRl6k1deFCyhrYg + partials-signing-ar-win64-shippable/opt: Cv-fqE9RQZ2AcnaQwlIyVA + partials-signing-ast-linux-shippable/opt: CAJWFaUDQ-mbdaFC1g85ng + partials-signing-ast-linux64-shippable/opt: ch90IvtFTqGFQvaraX45rw + partials-signing-ast-macosx64-shippable/opt: cRQOWsHLS5ytRjjQxaCc4w + partials-signing-ast-win32-shippable/opt: IfhJ3hiVTPWjJznGoxkJJQ + partials-signing-ast-win64-aarch64-shippable/opt: TxCpGDtFTpm4l8LbewJ0iA + partials-signing-ast-win64-shippable/opt: Yl534v5tTVqH8DfhiXxjxg + partials-signing-az-linux-shippable/opt: Z1Bf56eQRSiE_EjUxUokdQ + partials-signing-az-linux64-shippable/opt: Q7uD-SU5QwKwt6SR5sv-lQ + partials-signing-az-macosx64-shippable/opt: YouEVl4ORrC7gej70AKkGg + partials-signing-az-win32-shippable/opt: KaU_gzMfRuCziSBdxIDAAA + partials-signing-az-win64-aarch64-shippable/opt: PKw0aHfWSoejvx__lj2C0w + partials-signing-az-win64-shippable/opt: fHpEEySQTieC-cJyAeTxCA + partials-signing-be-linux-shippable/opt: Y-MftiUFSOmCkW1r2aTgjQ + partials-signing-be-linux64-shippable/opt: GRbo8GbdQ_ejDM33jW1_gw + partials-signing-be-macosx64-shippable/opt: VdvsKl3mTiqQlLoz5Vr8Yg + partials-signing-be-win32-shippable/opt: E-LuakIvRR6bUm9KjEN-0g + partials-signing-be-win64-aarch64-shippable/opt: a2HYZU_ARJmAOuFJGbetpw + partials-signing-be-win64-shippable/opt: VxDcJstvQN-jcVSaiOgQlQ + partials-signing-bg-linux-shippable/opt: UnnyLboHSlqbMqoRzad-cg + partials-signing-bg-linux64-shippable/opt: ENqNBF-YSYSyH63PIlJtqA + partials-signing-bg-macosx64-shippable/opt: fy8jv6X8SWKNixNiSp9ksw + partials-signing-bg-win32-shippable/opt: DD7HgwI4TEy5HHhJAHHo-A + partials-signing-bg-win64-aarch64-shippable/opt: Y6Zq8c4wTB6VGrlIszYy6g + partials-signing-bg-win64-shippable/opt: fmlsUwsgSGOpTES9ZCehgA + partials-signing-bn-linux-shippable/opt: f2qS7DrWRlOHnoNtHI4ukA + partials-signing-bn-linux64-shippable/opt: TbLbbltST1SrLgXL_32R5A + partials-signing-bn-macosx64-shippable/opt: MK_0LxdDQwKTXa6zaTBqTw + partials-signing-bn-win32-shippable/opt: TWjtQWrgRTy7PJbX9f-5uQ + partials-signing-bn-win64-aarch64-shippable/opt: cklpNOAmS0GBRz0c3W4F-w + partials-signing-bn-win64-shippable/opt: LOHzVAasTfKh7v_zR90uAg + partials-signing-br-linux-shippable/opt: CoGNLDfSR1unfY0Grx5Y0w + partials-signing-br-linux64-shippable/opt: NlW0N8j4QAeMCfbb6U7Ydg + partials-signing-br-macosx64-shippable/opt: fiEA2Y3AT1eLzok-b3Dhqg + partials-signing-br-win32-shippable/opt: RkmPmhlVRRShJ2Cn6e-NBQ + partials-signing-br-win64-aarch64-shippable/opt: Ag19qn9FRYij120KPxZwcA + partials-signing-br-win64-shippable/opt: RX79-0AJQZ2x3M5XDImPpw + partials-signing-bs-linux-shippable/opt: F-fpc-7oRoewKCSSKV5cJQ + partials-signing-bs-linux64-shippable/opt: fxIreEDxQa6naXGw6iOLpw + partials-signing-bs-macosx64-shippable/opt: TmP8fCNyTo-db2grKDehmQ + partials-signing-bs-win32-shippable/opt: W5mrctWNSoOG0vYvbtPGGg + partials-signing-bs-win64-aarch64-shippable/opt: XO1LEU8gQgmBU8mU8HFiVw + partials-signing-bs-win64-shippable/opt: LtjzvygVTjO5yX-DK9C1nw + partials-signing-ca-linux-shippable/opt: NX948EzPQnqUxWWq2NqbzQ + partials-signing-ca-linux64-shippable/opt: SzztzlqmQ4eTVyv1mc32Sg + partials-signing-ca-macosx64-shippable/opt: WtPxaktaSR-bzuFXK2O0pw + partials-signing-ca-valencia-linux-shippable/opt: I9M_jnMIToq7T2_0zXJ0uw + partials-signing-ca-valencia-linux64-shippable/opt: aHB9t1s_Th-PrL1xzxirHg + partials-signing-ca-valencia-macosx64-shippable/opt: CZ-hPURnTm-tjb8SBQGfHA + partials-signing-ca-valencia-win32-shippable/opt: P2Bzd3zBQha577GZryGCug + partials-signing-ca-valencia-win64-aarch64-shippable/opt: ZPKTEn1zSY-GjDbZ-78fMg + partials-signing-ca-valencia-win64-shippable/opt: dYsEAUVCRfOkU3mOK3LusA + partials-signing-ca-win32-shippable/opt: BpfgIRJ1RG-ZpLWIcmSJzA + partials-signing-ca-win64-aarch64-shippable/opt: MGzVY_cZTQKvPh_HCwjRvw + partials-signing-ca-win64-shippable/opt: HKEa9a8fRIWHiE14wzGLsA + partials-signing-cak-linux-shippable/opt: Ekm6LPrXT7m619-vTFFduw + partials-signing-cak-linux64-shippable/opt: J8fJyNtCRfWx7-2ND_-Zqw + partials-signing-cak-macosx64-shippable/opt: e8BqnaZRRpechMOyoND8jw + partials-signing-cak-win32-shippable/opt: EnLxWdS9SuGgbgqODby_3A + partials-signing-cak-win64-aarch64-shippable/opt: b4WF4wEdSTS-O_08pM0rLg + partials-signing-cak-win64-shippable/opt: QpxWEGYITIqNfNzUkBNelg + partials-signing-cs-linux-shippable/opt: BU8sbnbrSg-qwtai8NncmQ + partials-signing-cs-linux64-shippable/opt: d70JAEtJRjufyggLFcl_mQ + partials-signing-cs-macosx64-shippable/opt: ds0x26kATBmWyH8dLvqZag + partials-signing-cs-win32-shippable/opt: PMt4BUogTdyGjzY_OlgphQ + partials-signing-cs-win64-aarch64-shippable/opt: UytMi5dCQu-rwHS5j0CKrg + partials-signing-cs-win64-shippable/opt: GXIO8Iw0Sxe-749ql7J0Dg + partials-signing-cy-linux-shippable/opt: fPQBcmjgRAy-0JXm8Pxbyg + partials-signing-cy-linux64-shippable/opt: f2Ke0yUrSVSVxq4UUwAWkQ + partials-signing-cy-macosx64-shippable/opt: NaxZE01-Rdm8X6zjy7HHlg + partials-signing-cy-win32-shippable/opt: KobblA8jS4-fpbAcdyud6A + partials-signing-cy-win64-aarch64-shippable/opt: XbdEaZuWTwaaP7NW8tHMow + partials-signing-cy-win64-shippable/opt: CoAcF2JtTgW32yWUXn1gFA + partials-signing-da-linux-shippable/opt: OnOj3C6PQXCx9qF21367sw + partials-signing-da-linux64-shippable/opt: OqkXLLVFTGCRVxhdOsoOQQ + partials-signing-da-macosx64-shippable/opt: U1AIZRkwSiq-bAR6T2xnFA + partials-signing-da-win32-shippable/opt: c8hVGE4MRm-8icBYAHeqvw + partials-signing-da-win64-aarch64-shippable/opt: aFAX2rj7ToewmyUP4D-gtw + partials-signing-da-win64-shippable/opt: YvU9Y_K5QtSJ9Wue9qsFoA + partials-signing-de-linux-shippable/opt: JB-hqga9T2O3qnInaNaRtw + partials-signing-de-linux64-shippable/opt: GGBVXD2MR7OT2grIGto5Lg + partials-signing-de-macosx64-shippable/opt: TLJES258TnaXXjk4O341CQ + partials-signing-de-win32-shippable/opt: Xosoup6NQhSnccJIu7Rz7Q + partials-signing-de-win64-aarch64-shippable/opt: KjCn49iERMmzlvnQBy9WZg + partials-signing-de-win64-shippable/opt: ZavWOjRgSfiQHhMnTDNoQg + partials-signing-dsb-linux-shippable/opt: OuuGrOtGSn6nYThIb8J2sw + partials-signing-dsb-linux64-shippable/opt: BEfOkDeARSi4b8aZ4sGaeg + partials-signing-dsb-macosx64-shippable/opt: cpUDSDrYRcmBENGJGVpv9g + partials-signing-dsb-win32-shippable/opt: d-7ElEwrTYCxwhIpXIWmGA + partials-signing-dsb-win64-aarch64-shippable/opt: A0CsdS5SQ3myXLbu1CKi0w + partials-signing-dsb-win64-shippable/opt: X0efscs_QZGlKRHLbZdtaw + partials-signing-el-linux-shippable/opt: TlKUK-UiSH6QiycIIyYFmw + partials-signing-el-linux64-shippable/opt: V2on1Zx3RKGOJtLSQImGZA + partials-signing-el-macosx64-shippable/opt: Sas-6I7oROetBOc7KozbIQ + partials-signing-el-win32-shippable/opt: JWZkNzyFSBqwntIBaUG8_g + partials-signing-el-win64-aarch64-shippable/opt: L-oc-TFuQSGO80J1Z9KjLg + partials-signing-el-win64-shippable/opt: Ld8-aMzURtSRexoNKC9hUA + partials-signing-en-CA-linux-shippable/opt: ShNnainfSD2A7bA6VOscuA + partials-signing-en-CA-linux64-shippable/opt: HX08hL3ETGCAdg6nSuiNKA + partials-signing-en-CA-macosx64-shippable/opt: Z49_H9DJRIK2_ZByGnjZaA + partials-signing-en-CA-win32-shippable/opt: b08PlDmcSBeoLRwfIwtfnA + partials-signing-en-CA-win64-aarch64-shippable/opt: fBQQ588JSYuopZF5JoL2pw + partials-signing-en-CA-win64-shippable/opt: Di2jCQ3USomINc59ANd2Qg + partials-signing-en-GB-linux-shippable/opt: O7cr5hR2Q32MH5-mTuvhng + partials-signing-en-GB-linux64-shippable/opt: UTmy0NBORHi5Yh_MDqqocA + partials-signing-en-GB-macosx64-shippable/opt: c494VbI7QoenHszCa7Om6w + partials-signing-en-GB-win32-shippable/opt: QhTTZzIDR2yexdyWKRcHHQ + partials-signing-en-GB-win64-aarch64-shippable/opt: bYfZu4DKRKyQteQY8yyylA + partials-signing-en-GB-win64-shippable/opt: H3_uoTNLStyOQSPV4yCUdQ + partials-signing-eo-linux-shippable/opt: ciFjX1LdTq-4OHbrqQgUow + partials-signing-eo-linux64-shippable/opt: QN4UCuFwTbe87jgBiKyJdg + partials-signing-eo-macosx64-shippable/opt: d27F5NFsSGqRWTajlpBr5g + partials-signing-eo-win32-shippable/opt: Um0lL824SomG5RetQIohSw + partials-signing-eo-win64-aarch64-shippable/opt: SAKRmOIVQPa96Mvx2vgCRg + partials-signing-eo-win64-shippable/opt: cst8NB5ETs-1Q5b_q3I83w + partials-signing-es-AR-linux-shippable/opt: RRYgQNDrQTaX-u-qJoTsTQ + partials-signing-es-AR-linux64-shippable/opt: UMlmBdYWRlKJ6wXTa52nSg + partials-signing-es-AR-macosx64-shippable/opt: GyMinkCZSTqSDPJ8OP79hA + partials-signing-es-AR-win32-shippable/opt: BiXLO5xOS5mAhTqaY2xJ1Q + partials-signing-es-AR-win64-aarch64-shippable/opt: JNCw15tCSdWFfd801tbyuQ + partials-signing-es-AR-win64-shippable/opt: SmZ3szarQEK7wuaLUo8bWQ + partials-signing-es-CL-linux-shippable/opt: cVT1v34_SYOiRAXShM_qXg + partials-signing-es-CL-linux64-shippable/opt: HaIOTFZVSqW2tJbRMLPfog + partials-signing-es-CL-macosx64-shippable/opt: MRPv_4y2Sbe97Ujsozwugw + partials-signing-es-CL-win32-shippable/opt: PoNmdjSDTgyD7YeaqstIZQ + partials-signing-es-CL-win64-aarch64-shippable/opt: ZCakHHp3TuCFk5BS4irUSw + partials-signing-es-CL-win64-shippable/opt: V25ZQkTgT5ixG3crcTIEUA + partials-signing-es-ES-linux-shippable/opt: M1fFQ3AbSD-kk99q90RVJg + partials-signing-es-ES-linux64-shippable/opt: QZv7T_0eTA-MRJpqUZoLMA + partials-signing-es-ES-macosx64-shippable/opt: A1972D57RwyMoEzab9Jhog + partials-signing-es-ES-win32-shippable/opt: Zp3x-bjWQUCBbLxr7BmROw + partials-signing-es-ES-win64-aarch64-shippable/opt: JVE5p92-QfqWVwBpWPJHpg + partials-signing-es-ES-win64-shippable/opt: bCnxeM-gQfeY8yDLkxh0Hg + partials-signing-es-MX-linux-shippable/opt: Y4ioxDJ0SXmbyfEv30pBsQ + partials-signing-es-MX-linux64-shippable/opt: K5P3wFEcQa-4BAhOjk1AEw + partials-signing-es-MX-macosx64-shippable/opt: C_ioL3BBQKi_DEwqHzcVaQ + partials-signing-es-MX-win32-shippable/opt: DIa3-mPLTwuEsDspbWmg6g + partials-signing-es-MX-win64-aarch64-shippable/opt: ft0r563qTZi-PAhM7YR1fQ + partials-signing-es-MX-win64-shippable/opt: Ue1XCg-XTPWpEWqCe98lhw + partials-signing-et-linux-shippable/opt: fL0ComtqSfySDBRbzk1JfA + partials-signing-et-linux64-shippable/opt: FxzPCgMBRleI_emalVnlBw + partials-signing-et-macosx64-shippable/opt: Jx1W-10OSrqZM7dF4sGA0g + partials-signing-et-win32-shippable/opt: CE2NfEGoRU6iBB-xvIOTLA + partials-signing-et-win64-aarch64-shippable/opt: IX_XB-HwRSSWaE4CljpI5g + partials-signing-et-win64-shippable/opt: RiHbwOMMQ6asYRhIHAqS5Q + partials-signing-eu-linux-shippable/opt: JevupCSUTSW6FsUF3tv-cQ + partials-signing-eu-linux64-shippable/opt: F5dd0M3TTpqVKtRxsO2lHA + partials-signing-eu-macosx64-shippable/opt: MYawcKVyRP-UpZ-cGe205Q + partials-signing-eu-win32-shippable/opt: WgKA_CNFSBennTjU-0XhNA + partials-signing-eu-win64-aarch64-shippable/opt: FnXJlDOaQLucnTmQM8UmZg + partials-signing-eu-win64-shippable/opt: BA-DdupCSReGeIBxbildZA + partials-signing-fa-linux-shippable/opt: Y4L7WDosQs2fD5kFKM0Cag + partials-signing-fa-linux64-shippable/opt: GuxWgAwpS1exWfS9HfFqLA + partials-signing-fa-macosx64-shippable/opt: CYe-8j14T-SW2ifFFTxpHQ + partials-signing-fa-win32-shippable/opt: ey8-B9qCTp-dCvy_HJMAQQ + partials-signing-fa-win64-aarch64-shippable/opt: FJUPEe-ASqmG_pmYcMrX7A + partials-signing-fa-win64-shippable/opt: JWfiWDnBRAWaVue6j6kB_g + partials-signing-ff-linux-shippable/opt: dgMZMdhwSqy478BCI6MkKQ + partials-signing-ff-linux64-shippable/opt: MdWKl9s7R4GOHOc5PlJo2A + partials-signing-ff-macosx64-shippable/opt: UWh_aA3uQRi_bGVQwqYzLg + partials-signing-ff-win32-shippable/opt: Is73NM_eRNWuvqHagoBIDg + partials-signing-ff-win64-aarch64-shippable/opt: EOqY58I3Rk2oFHRf8IUsWw + partials-signing-ff-win64-shippable/opt: EcjxqyecQ3SWTb7NMWO6hA + partials-signing-fi-linux-shippable/opt: RbeOqGn6QQiZjKVIVxY6JQ + partials-signing-fi-linux64-shippable/opt: dEVXFVQlRSe-OUO2jgvAnw + partials-signing-fi-macosx64-shippable/opt: XRrow0bQTgu0mGenwOzQwA + partials-signing-fi-win32-shippable/opt: BBOteiZtQ62v_9fbBAdceA + partials-signing-fi-win64-aarch64-shippable/opt: b2FTz2yUTiq_O4S5_QWtNw + partials-signing-fi-win64-shippable/opt: VRpFH1MEQgKkWQpevXCJpw + partials-signing-fr-linux-shippable/opt: URsy3aLoT5aHQjE2sLUW4Q + partials-signing-fr-linux64-shippable/opt: SzplQPwMTRKE3pJhCPN9Pw + partials-signing-fr-macosx64-shippable/opt: OjjPw70MRNaasbI5ufChgw + partials-signing-fr-win32-shippable/opt: d33T1iJkToOTWhrpWgYCbQ + partials-signing-fr-win64-aarch64-shippable/opt: UGgocHaCQTG5iCs5iXvoGQ + partials-signing-fr-win64-shippable/opt: Wx3wiSu_QUm1jKni_NuZDg + partials-signing-fur-linux-shippable/opt: BmJhJHuiRtOeltzXyEW_tQ + partials-signing-fur-linux64-shippable/opt: V0f_oHIqRlejvN0HlRSjFQ + partials-signing-fur-macosx64-shippable/opt: ApgrOK55TQmfw03mni56Bw + partials-signing-fur-win32-shippable/opt: LGWXcI-2S_GAhzYdL6WoDw + partials-signing-fur-win64-aarch64-shippable/opt: V4ruJDC4RLep636j7l5LBQ + partials-signing-fur-win64-shippable/opt: MP_j5Y6ASe2pXihUDPhCmg + partials-signing-fy-NL-linux-shippable/opt: e8WBjyzTSdqzQ5dTKzs4WA + partials-signing-fy-NL-linux64-shippable/opt: VjnK6lRDRnKC6WP60ympmw + partials-signing-fy-NL-macosx64-shippable/opt: Hn78-ygMQF6rdjL_obwn0g + partials-signing-fy-NL-win32-shippable/opt: COzLCohZQ9CUjNaWd1I-qw + partials-signing-fy-NL-win64-aarch64-shippable/opt: b4Iy0vk5RlSgOi5B9pG_9A + partials-signing-fy-NL-win64-shippable/opt: HggpchrxRuuLebD6COCtYA + partials-signing-ga-IE-linux-shippable/opt: Vsx9_7hhTnmGJYcU8p8KJg + partials-signing-ga-IE-linux64-shippable/opt: eR7gF2qwQ5mDvxQOCHhFbA + partials-signing-ga-IE-macosx64-shippable/opt: WYfy-X1KQQK0NqcGUR3pVg + partials-signing-ga-IE-win32-shippable/opt: S42PmIjqT1aaleFNL7c_nQ + partials-signing-ga-IE-win64-aarch64-shippable/opt: O4dJGdoTTtODqBQKjEvFig + partials-signing-ga-IE-win64-shippable/opt: JQuA-ToaTYCrEfeAkG7uJA + partials-signing-gd-linux-shippable/opt: KDQD3o8YQ9KpRAruhttjhA + partials-signing-gd-linux64-shippable/opt: VUr9F_FBQOCpombxABdShA + partials-signing-gd-macosx64-shippable/opt: B5821o1uR2OCecHpqW8Jdg + partials-signing-gd-win32-shippable/opt: L8VN9cs1StCo3qEdARRx6A + partials-signing-gd-win64-aarch64-shippable/opt: IILYZRn1TFyb-jaGrTj8Ug + partials-signing-gd-win64-shippable/opt: FKItN5Z1RROL1daFaoSUlg + partials-signing-gl-linux-shippable/opt: KpjWKzXnSpOC7sw9rmSHRA + partials-signing-gl-linux64-shippable/opt: cB9KEmQmTeqQet5Rxa3hTQ + partials-signing-gl-macosx64-shippable/opt: ZDaDfKM-R7arDBpW6Z6foA + partials-signing-gl-win32-shippable/opt: B9_zHGnuRTaY64K4HCi_Xw + partials-signing-gl-win64-aarch64-shippable/opt: BqPpLal1SEqi2Xi1NFMfJg + partials-signing-gl-win64-shippable/opt: Frf5tfefQRilnA3uoGb8cw + partials-signing-gn-linux-shippable/opt: GpoJmTIBSVig1xclwHqsSw + partials-signing-gn-linux64-shippable/opt: PRTIraUfQkKKN5_Ia2PeAA + partials-signing-gn-macosx64-shippable/opt: dYyXlDGgQoOA1bIcz05gUA + partials-signing-gn-win32-shippable/opt: XQv3RPDKRTC9nHAUwDAddw + partials-signing-gn-win64-aarch64-shippable/opt: V5TndPedTfKkY25KYbgu4g + partials-signing-gn-win64-shippable/opt: SXFORjEjT5ugjXDhhgNkFg + partials-signing-gu-IN-linux-shippable/opt: Ze_o6cffRJWV0_fdT-52cA + partials-signing-gu-IN-linux64-shippable/opt: E0iDlUMSTD6MZ-YbW_0mpw + partials-signing-gu-IN-macosx64-shippable/opt: ZHPblzL2R3uooODLdj2W3A + partials-signing-gu-IN-win32-shippable/opt: fdkeB_BfRJikxD7lB5aSDA + partials-signing-gu-IN-win64-aarch64-shippable/opt: G2kS9oC8Q1eTpag0cfFSEA + partials-signing-gu-IN-win64-shippable/opt: KPGaznzkScyAe9XkhPEJeQ + partials-signing-he-linux-shippable/opt: fKF6ugRQS928e9hpSmzGOw + partials-signing-he-linux64-shippable/opt: ccAsZbjfQr6yS61vL5blkw + partials-signing-he-macosx64-shippable/opt: H-PiIK-GRv648r4DdmEnuA + partials-signing-he-win32-shippable/opt: Cd_MDPwSQzm2iQl_xmkzTA + partials-signing-he-win64-aarch64-shippable/opt: NsNXQN-eTcuziBYSzOMiRA + partials-signing-he-win64-shippable/opt: WGrjYz5oQRigG48StAd4cg + partials-signing-hi-IN-linux-shippable/opt: bkRT60I7QL2DUFH8ucJ9wQ + partials-signing-hi-IN-linux64-shippable/opt: CUUrhC6MTImgmnGHp5WDOg + partials-signing-hi-IN-macosx64-shippable/opt: SqkHVGS9Tr6ne9WDFZD53w + partials-signing-hi-IN-win32-shippable/opt: XiBH05DWRRG9IMF31pcIrQ + partials-signing-hi-IN-win64-aarch64-shippable/opt: atDRFY06ROWnF0c8Og9QYA + partials-signing-hi-IN-win64-shippable/opt: ARFQOF3LSbK18KBAMwnIPw + partials-signing-hr-linux-shippable/opt: e-sZK13gQIeqM2dz7UhHQg + partials-signing-hr-linux64-shippable/opt: OfWEI1qyS6OHzK3aO6dIzA + partials-signing-hr-macosx64-shippable/opt: f-vcOrOEQuWQPKDQaLyHHg + partials-signing-hr-win32-shippable/opt: SQDqoq1EQ4yEs4oLi6wq5w + partials-signing-hr-win64-aarch64-shippable/opt: D4vBLDyASpyq96L962RY3g + partials-signing-hr-win64-shippable/opt: OKoCgoBSRf2mPIFYL0y4GQ + partials-signing-hsb-linux-shippable/opt: SKY5QgZCRBOSh6sWriNR9w + partials-signing-hsb-linux64-shippable/opt: DIwE72j_SMeDeV4EwelcLQ + partials-signing-hsb-macosx64-shippable/opt: TFzyr45xTYmd3v_Qz-s4kg + partials-signing-hsb-win32-shippable/opt: POq5EbXNRiWatoMnBohnsA + partials-signing-hsb-win64-aarch64-shippable/opt: cmWZ6xOESV6aGGJ7RBLrOA + partials-signing-hsb-win64-shippable/opt: AvpznW_QR0G4teXt-JnlaQ + partials-signing-hu-linux-shippable/opt: NqAeUoycRXK8eegzD_yD8Q + partials-signing-hu-linux64-shippable/opt: H1eNIHBDSiet740ijBo7Ew + partials-signing-hu-macosx64-shippable/opt: HhZktvuCRzOShGNqDdLRKw + partials-signing-hu-win32-shippable/opt: buE5OaGKT4ikpKFlCX0CrQ + partials-signing-hu-win64-aarch64-shippable/opt: ASd35Q5iReyyPm3B5MybqA + partials-signing-hu-win64-shippable/opt: Dv_QuCThS76o8Z0wAeGcwQ + partials-signing-hy-AM-linux-shippable/opt: cxGnJpnSRF6zefpInCiSJQ + partials-signing-hy-AM-linux64-shippable/opt: JikLyJj1SWKExK1cpfK31Q + partials-signing-hy-AM-macosx64-shippable/opt: NmZTytz-R3CW5bQbCtfTlg + partials-signing-hy-AM-win32-shippable/opt: SB4gFV_tS0astED5GKO8oA + partials-signing-hy-AM-win64-aarch64-shippable/opt: Puox1mo4ThClS3GQ75aOfg + partials-signing-hy-AM-win64-shippable/opt: AsybSumSS7iGOINzKYxicw + partials-signing-ia-linux-shippable/opt: OjaGpgOLRmOKaReUN_k8KQ + partials-signing-ia-linux64-shippable/opt: IVgYU4gjSYi3UswV_HtjOA + partials-signing-ia-macosx64-shippable/opt: EBRBqRzqRre8THojursOnQ + partials-signing-ia-win32-shippable/opt: R5DPcTfQTBaeyRJuTGZCPQ + partials-signing-ia-win64-aarch64-shippable/opt: eCML7FCESeKqvdEjqfST-w + partials-signing-ia-win64-shippable/opt: QxgWDsImSy6S0t8aLWwarg + partials-signing-id-linux-shippable/opt: E0d64jeRR5Sav9HeI6ECBQ + partials-signing-id-linux64-shippable/opt: Mfn1A0vZREOvlk3TsY6XQQ + partials-signing-id-macosx64-shippable/opt: bxOAm4OFTiegU1xHaWXRbQ + partials-signing-id-win32-shippable/opt: EQl2ILKcTfG0LEcwunxvFg + partials-signing-id-win64-aarch64-shippable/opt: Q2910ybARvSQljCqmUbdGg + partials-signing-id-win64-shippable/opt: XKHdqyBqTnONvPI4meJhSQ + partials-signing-is-linux-shippable/opt: PAzJNvn4RjOmk6ZJD_3NGw + partials-signing-is-linux64-shippable/opt: bnTvUDUYQreuDIfLkd4xLg + partials-signing-is-macosx64-shippable/opt: GYlk4nBAThqhiK0ZuI_N5Q + partials-signing-is-win32-shippable/opt: YU3HGCYlSPqwQFNiY7i27Q + partials-signing-is-win64-aarch64-shippable/opt: StROSkPbRCS17KY24aWeMg + partials-signing-is-win64-shippable/opt: YGV6gS3gQWmIeKXb8VKXQg + partials-signing-it-linux-shippable/opt: ezPxIsw6Q8WKkmyuqhycbg + partials-signing-it-linux64-shippable/opt: UiIIIFDyR86fGS4LgF3wJw + partials-signing-it-macosx64-shippable/opt: d5NnIWNJRqmw2sYdOIKpVg + partials-signing-it-win32-shippable/opt: Hnrv0kurT0WT_sn6ADZgtw + partials-signing-it-win64-aarch64-shippable/opt: RE1QYBE2QvynaoCwGELWaw + partials-signing-it-win64-shippable/opt: SJh5VaN8QDKlp08IkTFIig + partials-signing-ja-JP-mac-macosx64-shippable/opt: MSMpkTWkRrePT3pH2Th9Nw + partials-signing-ja-linux-shippable/opt: eBJLTCTfRSW09JvKWiVb6w + partials-signing-ja-linux64-shippable/opt: HBncxfP9QaeTlhYYFfBJww + partials-signing-ja-win32-shippable/opt: F76PwzOiR2K6t0iRmgE39Q + partials-signing-ja-win64-aarch64-shippable/opt: bheCGCEeQLmCMqSNw4mz1A + partials-signing-ja-win64-shippable/opt: cB76EQDsQpGAJEpJF_Wwdg + partials-signing-ka-linux-shippable/opt: UvHWak71QLCKEVVDUEUcHg + partials-signing-ka-linux64-shippable/opt: bjIDdELGRtez9t3tAmS1-g + partials-signing-ka-macosx64-shippable/opt: SJltkxJaT3iOzn1M45cz6A + partials-signing-ka-win32-shippable/opt: Rlf1HgwSROOX9edYGms7qw + partials-signing-ka-win64-aarch64-shippable/opt: Zb7kV6OeQgmUhe9RWoVqdg + partials-signing-ka-win64-shippable/opt: CpwzT811T-mYY6lmR9PVOQ + partials-signing-kab-linux-shippable/opt: eG53Z-IfQL2QTeHQdIHb6A + partials-signing-kab-linux64-shippable/opt: b_xF-1INSEWz3ojfHpIO4A + partials-signing-kab-macosx64-shippable/opt: MYYOb8kSS3Sp5w9mugFjDA + partials-signing-kab-win32-shippable/opt: Cc56cXUbQ9u6XJg-s5c6sA + partials-signing-kab-win64-aarch64-shippable/opt: Fg8OjaLfS2mDhjKKS-w50A + partials-signing-kab-win64-shippable/opt: QUfmPYO7SpGc0qS5eOiisQ + partials-signing-kk-linux-shippable/opt: WDYJtNvYSdOFZLOAZgj4fg + partials-signing-kk-linux64-shippable/opt: Wf7F7eE_T32PiVyMHBKYuA + partials-signing-kk-macosx64-shippable/opt: Vc9yXSeTSG61hW23GXMcKg + partials-signing-kk-win32-shippable/opt: Ghf58UEaSrG2j10vdPbYcg + partials-signing-kk-win64-aarch64-shippable/opt: C8B78gIjRMKMJPRtu9Bb1w + partials-signing-kk-win64-shippable/opt: cKCP4rRlRqSI_-hBHLlpkg + partials-signing-km-linux-shippable/opt: JxMUDjucRYOmv0sGZTJIAg + partials-signing-km-linux64-shippable/opt: eqqngHySSRGPe5pJx7op8w + partials-signing-km-macosx64-shippable/opt: SqkAOCpbS7-008qm59bOhA + partials-signing-km-win32-shippable/opt: VvyEiqPjSzCKc0DTbDSUfQ + partials-signing-km-win64-aarch64-shippable/opt: D3Ziemm9Sk6n7VYd_a7Xmw + partials-signing-km-win64-shippable/opt: K74Syv4WQtqz__CGR8gIag + partials-signing-kn-linux-shippable/opt: cPN5KdLpQ7W5LkpX4eN9Wg + partials-signing-kn-linux64-shippable/opt: S-hNDApxS1esxGTb_H-Czg + partials-signing-kn-macosx64-shippable/opt: Jnj21-AbR2ehizJurAF9WQ + partials-signing-kn-win32-shippable/opt: WuNkwsgKTKaX-JBIZ0Fv5g + partials-signing-kn-win64-aarch64-shippable/opt: U0n0NVnOSEqzaC4WBmUvKw + partials-signing-kn-win64-shippable/opt: NpJwvZd4SQqHiQEsqX87Ug + partials-signing-ko-linux-shippable/opt: K8w0yi8cSEaIUWt3AKMbPQ + partials-signing-ko-linux64-shippable/opt: cICgb7DWTgOmgKA2Ql4CzQ + partials-signing-ko-macosx64-shippable/opt: bGed8YUnSle4OtVjHplLWw + partials-signing-ko-win32-shippable/opt: aJa_gAHeRyOqhsJk2es7Gg + partials-signing-ko-win64-aarch64-shippable/opt: enb_HvPgRcOJ5FmXwGUcyg + partials-signing-ko-win64-shippable/opt: fnvgtjlNSSWy1F8v-xL2-g + partials-signing-lij-linux-shippable/opt: Gh2C7p40RleStHTf0vjyOw + partials-signing-lij-linux64-shippable/opt: Be_BUi11S1aN69WhY7w2pA + partials-signing-lij-macosx64-shippable/opt: cEp8gjhUQF6GT9Nv534bdg + partials-signing-lij-win32-shippable/opt: DkUB3ozoQL-od71cazoO9g + partials-signing-lij-win64-aarch64-shippable/opt: IbEawCQDQ1mEZj2NyEsPFA + partials-signing-lij-win64-shippable/opt: TBxPrE-xR1mGr1ggSVn8ww + partials-signing-linux-shippable/opt: FkODQb83TKKP5PeUjo4keg + partials-signing-linux64-shippable/opt: BwyksKa3QzuIiTrYyGTkiw + partials-signing-lt-linux-shippable/opt: DavG-8xNQoG3VC81BT9OXA + partials-signing-lt-linux64-shippable/opt: bx4gy12xSACldC5F1azZ7w + partials-signing-lt-macosx64-shippable/opt: TA9NrT03QICZpvgdD2O36g + partials-signing-lt-win32-shippable/opt: HlwvcNU6QV2o4EE7CdofYg + partials-signing-lt-win64-aarch64-shippable/opt: X-ob6ALfQQ-VtFAnwo34zw + partials-signing-lt-win64-shippable/opt: PsoKdcNDQBmr0nBy6JeAjQ + partials-signing-lv-linux-shippable/opt: HAD6S1Y1S0qSZVuZyNUfUw + partials-signing-lv-linux64-shippable/opt: fxZKxVgaSjCJYlXL5B6-WQ + partials-signing-lv-macosx64-shippable/opt: fgXGEpAgSAibzWKlKBtqpw + partials-signing-lv-win32-shippable/opt: Z25f1t09SWGH3PWnv9cmyw + partials-signing-lv-win64-aarch64-shippable/opt: etiYLDyrQ_uEhqnFN8mchw + partials-signing-lv-win64-shippable/opt: edts70BPS_qLvxITqmPcWg + partials-signing-macosx64-shippable/opt: NFn0kb6eRSur8lqMo0O_CA + partials-signing-mk-linux-shippable/opt: aXhXVfhwS-eEag_bIXLk3Q + partials-signing-mk-linux64-shippable/opt: JkAVpLzjQnu92rmpncffdg + partials-signing-mk-macosx64-shippable/opt: KIfAD66aSta5QgAai-2L5w + partials-signing-mk-win32-shippable/opt: AFbmeLhsTyuYdAQCQk_FTA + partials-signing-mk-win64-aarch64-shippable/opt: EQXL8H1nT6acOKXr1wkSxQ + partials-signing-mk-win64-shippable/opt: ZzACjGk7RNmM3ULLVEWBNg + partials-signing-mr-linux-shippable/opt: andS2WaZSHmvTR2s_fHdng + partials-signing-mr-linux64-shippable/opt: FLld0-aJRcmk7tJJMRMGWQ + partials-signing-mr-macosx64-shippable/opt: QIJ_IDfSQAKuaGcUpDHPGw + partials-signing-mr-win32-shippable/opt: Z5UkYqaJTp2xYGRadGeLfg + partials-signing-mr-win64-aarch64-shippable/opt: XV01ng57S5-MKID6h4GgeQ + partials-signing-mr-win64-shippable/opt: Vyd-VqYjQ1CZH8fjj2ZCvA + partials-signing-ms-linux-shippable/opt: YbII83hFR-iYF2R4KPUVmA + partials-signing-ms-linux64-shippable/opt: JcjtFdU3QiGpq_QBQg0IwA + partials-signing-ms-macosx64-shippable/opt: aza5AnHMQJC1hR_DKojTKA + partials-signing-ms-win32-shippable/opt: PirSFwXHSNmzOEbxkSXmSA + partials-signing-ms-win64-aarch64-shippable/opt: J6hW1P2mSQmE4QKXjDMAHA + partials-signing-ms-win64-shippable/opt: OLNOkqzXSr2ZB5hNyZiHRw + partials-signing-my-linux-shippable/opt: GhAM4RRyTuaUgnG-Cgm8OA + partials-signing-my-linux64-shippable/opt: I8DAb74_SDq0viv1AZq0_A + partials-signing-my-macosx64-shippable/opt: dzazT3vCRD6LE6kBGNQISg + partials-signing-my-win32-shippable/opt: YXLEaO9KSsmhh7eM5eWZkw + partials-signing-my-win64-aarch64-shippable/opt: bB-1MlmKQbWw6rmSpTd4nA + partials-signing-my-win64-shippable/opt: UKEdPzkETseazUY9iwg8_g + partials-signing-nb-NO-linux-shippable/opt: RnR8xH-lSyWAV6MdYCQ_ew + partials-signing-nb-NO-linux64-shippable/opt: AElcO9CMTSmzioPtZn_boA + partials-signing-nb-NO-macosx64-shippable/opt: X4FwR2x8Rr6axhHV0vJbqQ + partials-signing-nb-NO-win32-shippable/opt: Lcw0U2IVTZCzKzy0_6QlVg + partials-signing-nb-NO-win64-aarch64-shippable/opt: RIZPWN9OT92YS0JFNMWSbg + partials-signing-nb-NO-win64-shippable/opt: J6iQSVdXTuGmPjRGnv69_A + partials-signing-ne-NP-linux-shippable/opt: Z2xgkkYzRvm9zGdOykFQtA + partials-signing-ne-NP-linux64-shippable/opt: PQHUUI1dS6axNWmoPrUupg + partials-signing-ne-NP-macosx64-shippable/opt: e4E28EjXQyqzLxmSsB9QZA + partials-signing-ne-NP-win32-shippable/opt: ZxbanRFHQuy7JTT4DgYBRA + partials-signing-ne-NP-win64-aarch64-shippable/opt: aa2kpZRISIyxkakRwcWerQ + partials-signing-ne-NP-win64-shippable/opt: BJYDbZxESzSWzyY6lDkLHA + partials-signing-nl-linux-shippable/opt: B8eSyunxTXGHiSw09Vl7fA + partials-signing-nl-linux64-shippable/opt: JiadZaPSTrOj9xHf-W4EPw + partials-signing-nl-macosx64-shippable/opt: H1MKkwi2T9OMHTNL9OcJEg + partials-signing-nl-win32-shippable/opt: Yvwx6YohQuq0gytonuayfw + partials-signing-nl-win64-aarch64-shippable/opt: brxBUqJOTOyIuvswDCDxeg + partials-signing-nl-win64-shippable/opt: JGThm2zOTNWN6YtFsOIOCA + partials-signing-nn-NO-linux-shippable/opt: eEyODrphQAumhkbmgad44Q + partials-signing-nn-NO-linux64-shippable/opt: EMjhyZ2MQmqLnGSSkC4M-g + partials-signing-nn-NO-macosx64-shippable/opt: AZGTdCGmSNW3p7scALjUwA + partials-signing-nn-NO-win32-shippable/opt: bOgjXlqFTvu2BmHTSETEaA + partials-signing-nn-NO-win64-aarch64-shippable/opt: DHgA_L0XTWWH9-mbJ1tebA + partials-signing-nn-NO-win64-shippable/opt: D1oJDbQGRu6_aUsp7MoOUw + partials-signing-oc-linux-shippable/opt: SfSSyUhQQ5aZ6gPfCT3Wvw + partials-signing-oc-linux64-shippable/opt: cg0YDRorT1meXKE2AermHQ + partials-signing-oc-macosx64-shippable/opt: FeEvWnebQ2qaSreuGtn-wg + partials-signing-oc-win32-shippable/opt: NqT7bNs0S9-_ujgvKkEFgg + partials-signing-oc-win64-aarch64-shippable/opt: LfmgCoeyTPe5ypKucqk8Yg + partials-signing-oc-win64-shippable/opt: BqcXQeXzRTWY1H2PUnnBmg + partials-signing-pa-IN-linux-shippable/opt: HuUyy-SZQjaZ35CTQx8sYw + partials-signing-pa-IN-linux64-shippable/opt: WHjsS7THRmeVt3rWhj72uw + partials-signing-pa-IN-macosx64-shippable/opt: GFLfrBsQQiinXmUQ0hVWQQ + partials-signing-pa-IN-win32-shippable/opt: TUPKP30YTOWzYPZH369pzA + partials-signing-pa-IN-win64-aarch64-shippable/opt: BD0YNQzfR26Flrn5V378bQ + partials-signing-pa-IN-win64-shippable/opt: a2KFuJ9AQl6j-j2oWIovCQ + partials-signing-pl-linux-shippable/opt: S3gpgys1R4e4yz47OQYk5A + partials-signing-pl-linux64-shippable/opt: V6zOpIX5QkqqwuaGfulT_A + partials-signing-pl-macosx64-shippable/opt: WUQ3ixNwR-KYiLyQuJ68oA + partials-signing-pl-win32-shippable/opt: OtqCf_hsRkKTk_joSDRzlg + partials-signing-pl-win64-aarch64-shippable/opt: NYMuhVGjRW-bNps3DAKtFQ + partials-signing-pl-win64-shippable/opt: LhQz-DieSImU5oqqS4SYtQ + partials-signing-pt-BR-linux-shippable/opt: DIIb4uG8R-Kd7RDdGjqtrg + partials-signing-pt-BR-linux64-shippable/opt: C3Bq0bvgSwqzAMWPnbLl5g + partials-signing-pt-BR-macosx64-shippable/opt: asmdb9yEQ5-v8pB2SFAKtA + partials-signing-pt-BR-win32-shippable/opt: Db5vn-RXQ5a_OOdEUXwKQA + partials-signing-pt-BR-win64-aarch64-shippable/opt: T5ddkU3-RsGfIYGBZve5RQ + partials-signing-pt-BR-win64-shippable/opt: Mip6BwvgRYOkAQ2Hs2nGtA + partials-signing-pt-PT-linux-shippable/opt: R3QPCvMORxuOfVvlnO1_kQ + partials-signing-pt-PT-linux64-shippable/opt: ZsuA4ixWQSOuke4Dri-76Q + partials-signing-pt-PT-macosx64-shippable/opt: Sb-_hylLRFSIf9JNQwLHMg + partials-signing-pt-PT-win32-shippable/opt: VLNR5jmISv6n8eUfoiPpuA + partials-signing-pt-PT-win64-aarch64-shippable/opt: Vido1n7LQmqdWAG1Z6P4Zw + partials-signing-pt-PT-win64-shippable/opt: MZqpH_g_ScW8ACBnCew0Ew + partials-signing-rm-linux-shippable/opt: bRJRMrT4QvCGFYtkW_54cQ + partials-signing-rm-linux64-shippable/opt: VlW-alO4Sxym9rgVYQKH4w + partials-signing-rm-macosx64-shippable/opt: V-90ZTsXSYGAbVwc3oSjEA + partials-signing-rm-win32-shippable/opt: X-Wn5ga5SrCgX6MBvZM2pw + partials-signing-rm-win64-aarch64-shippable/opt: XaaofW3CQk6ZNrQf1hQeCg + partials-signing-rm-win64-shippable/opt: UgntK7PBR-C4q1ze3A7pow + partials-signing-ro-linux-shippable/opt: Y4DxZ5cqT_elf5ncgC-rWQ + partials-signing-ro-linux64-shippable/opt: DcPNCTJSReycMfKxBFkF6Q + partials-signing-ro-macosx64-shippable/opt: Bx-BlzpGTcim0dBaRuAdjg + partials-signing-ro-win32-shippable/opt: AG7rCtkkSeWgGver2OxFLA + partials-signing-ro-win64-aarch64-shippable/opt: PBK5bgoOT3KOsq2-W9AmDA + partials-signing-ro-win64-shippable/opt: MTnm-UGnSiWp9koJ4s2TPw + partials-signing-ru-linux-shippable/opt: T9-KYJIfSvuhqw4-ortKLw + partials-signing-ru-linux64-shippable/opt: VHfAuZZoSwirIJOQJOXS8Q + partials-signing-ru-macosx64-shippable/opt: F7C2tLZoT0qZsml3_6543Q + partials-signing-ru-win32-shippable/opt: exkVeZ5cTDSNtH3OG-tbrg + partials-signing-ru-win64-aarch64-shippable/opt: HqXrdFaySS-yytmn0Vym3A + partials-signing-ru-win64-shippable/opt: UFYh3JsvT76QNGY7zdAccg + partials-signing-sc-linux-shippable/opt: YLw-qugRR4mw_DFwK5WXzA + partials-signing-sc-linux64-shippable/opt: PArNtSNIQNKUMDT3aFGrag + partials-signing-sc-macosx64-shippable/opt: D-o57st1TjmWRJImp-sZqg + partials-signing-sc-win32-shippable/opt: QySyfFdDR12L-mO1y0xgwg + partials-signing-sc-win64-aarch64-shippable/opt: KfUv7_E6RnGSWt0zgazHtg + partials-signing-sc-win64-shippable/opt: bDBMXMveQniv2tIHQ9GAiw + partials-signing-sco-linux-shippable/opt: GCe8IDTfTUOAvw2s1QxEGQ + partials-signing-sco-linux64-shippable/opt: PAk0_s3tTUWu_Et24o0rBg + partials-signing-sco-macosx64-shippable/opt: cGW4NHIYT0OnqwT1RVUe4w + partials-signing-sco-win32-shippable/opt: QdaUgcS4SiCw49iOiF9p_g + partials-signing-sco-win64-aarch64-shippable/opt: DudBBUxTT529i-WrJd5YoA + partials-signing-sco-win64-shippable/opt: HGqD6HCCTnKjYSgxJCwlNg + partials-signing-si-linux-shippable/opt: TmqCpq3WS6qF0zicAiRTfA + partials-signing-si-linux64-shippable/opt: f_lU1QcuQJaGy2FtK8Sa9A + partials-signing-si-macosx64-shippable/opt: Ri1_0FwiTomSOue-DSBToA + partials-signing-si-win32-shippable/opt: XI2AuyB0QSeuPTw1QUC2bA + partials-signing-si-win64-aarch64-shippable/opt: NK1Qa7CNRHurrO6ytJCmpA + partials-signing-si-win64-shippable/opt: LlU6dz0XTJSLvywTv4Spew + partials-signing-sk-linux-shippable/opt: dKOzUUrURiub9BTTwMKvPA + partials-signing-sk-linux64-shippable/opt: bmQR6bgrSraUBMtINzme3A + partials-signing-sk-macosx64-shippable/opt: IkBZag4jShmXmTDDcT7BSA + partials-signing-sk-win32-shippable/opt: WEuxgOx8QKuLHtt8BZ8iWA + partials-signing-sk-win64-aarch64-shippable/opt: CkgEYHAMSOaPKZoL0rSLzg + partials-signing-sk-win64-shippable/opt: eBthdKXMTwOWBzYt3Sx-AQ + partials-signing-sl-linux-shippable/opt: VFjFOMbHRfaQ4aEialHS3g + partials-signing-sl-linux64-shippable/opt: KannJMqUTyuie6t6Bd35rw + partials-signing-sl-macosx64-shippable/opt: JnFzZ6rcRkyGY1LmfMVixw + partials-signing-sl-win32-shippable/opt: TRSG-OOgSfyBDCmXXLbeZg + partials-signing-sl-win64-aarch64-shippable/opt: QH5rHKhCSCG6XtnMkxapmw + partials-signing-sl-win64-shippable/opt: GaJAv3cgR3Wql7eBROOiVg + partials-signing-son-linux-shippable/opt: L8cbaZjYS3Wqy3u9XA7PSg + partials-signing-son-linux64-shippable/opt: akPprO5DRJiVTYBqbPxq3Q + partials-signing-son-macosx64-shippable/opt: STKRdyUOQo6-uqLaxgMwUg + partials-signing-son-win32-shippable/opt: EmKuLUeEQG-Gt1ttFdPxpA + partials-signing-son-win64-aarch64-shippable/opt: Q8rzzYujRtakplTvWBwJtw + partials-signing-son-win64-shippable/opt: NVRvLaTVQjqIvZeb_r9rMA + partials-signing-sq-linux-shippable/opt: dR4QBXKGQiyez0UmSwAYgw + partials-signing-sq-linux64-shippable/opt: W6sJhc8bQrS0Ie81_0_6NA + partials-signing-sq-macosx64-shippable/opt: FSdX8Lo-R9W-ZoKZro8jCA + partials-signing-sq-win32-shippable/opt: DP9b_WgwQHmbBNN_TD-gsw + partials-signing-sq-win64-aarch64-shippable/opt: L1JHFXATS1yufW7hquxSgw + partials-signing-sq-win64-shippable/opt: ACoq13fJTBCMp6WqcrV4aA + partials-signing-sr-linux-shippable/opt: KGmXOaTQQyKHO7T-rcaiSw + partials-signing-sr-linux64-shippable/opt: GzBzkJniTv2wTo8Au6MUZQ + partials-signing-sr-macosx64-shippable/opt: Xrr4eJGrSBmeRv5qbpD0dA + partials-signing-sr-win32-shippable/opt: ch35LATKRqCyDRQruSsaTw + partials-signing-sr-win64-aarch64-shippable/opt: XUdQb987SSuyjkOGZVAeXg + partials-signing-sr-win64-shippable/opt: S6lnZMuuQCuhAeL0yq3B2g + partials-signing-sv-SE-linux-shippable/opt: X_pAO1gURoOjZ8J_cjw4Ug + partials-signing-sv-SE-linux64-shippable/opt: R3vEM7lQTlys-Q9eJpU8_Q + partials-signing-sv-SE-macosx64-shippable/opt: Pwoq8uW8SVmynEymRQwvOg + partials-signing-sv-SE-win32-shippable/opt: akbpKKndQM6VFkvD1EKvJA + partials-signing-sv-SE-win64-aarch64-shippable/opt: de-z2eD2Tn-SosUfmrEBUQ + partials-signing-sv-SE-win64-shippable/opt: YA6w3WBXQdSuz8fGvdtOdg + partials-signing-szl-linux-shippable/opt: KFfm1JkFTPS5_GsbicP81w + partials-signing-szl-linux64-shippable/opt: IirghfwtSLqKOMwbNLy3DA + partials-signing-szl-macosx64-shippable/opt: LTKdVr47Rg2RdOpiWVfEDA + partials-signing-szl-win32-shippable/opt: OYTxleVeTq6Y2cB7CgC6eA + partials-signing-szl-win64-aarch64-shippable/opt: HyYXWRHjSmiznk9jdjxyHQ + partials-signing-szl-win64-shippable/opt: XlwCo7nDSNGFJRmmtlHQBQ + partials-signing-ta-linux-shippable/opt: HByjJxXvQA2-8RFCQvJaZA + partials-signing-ta-linux64-shippable/opt: KPUUg7qJT3qDLXANj8FRIg + partials-signing-ta-macosx64-shippable/opt: I0Ws9eeGSV2r1FYds3i1LA + partials-signing-ta-win32-shippable/opt: eiqS7LkCRZazUVc3y5tXgQ + partials-signing-ta-win64-aarch64-shippable/opt: enJ7EJnASXucrZ8j2fgIiQ + partials-signing-ta-win64-shippable/opt: XT1n7AE5SFCvm7D3nLkgrA + partials-signing-te-linux-shippable/opt: Eluxsy1XTPiFxLFvWx-j4Q + partials-signing-te-linux64-shippable/opt: GOhyZs1VQ6eeCUFwB9dAjQ + partials-signing-te-macosx64-shippable/opt: advQtMLFTIGRjxlp9nrABA + partials-signing-te-win32-shippable/opt: JdFr7yUzTzqWpsEvEzacIQ + partials-signing-te-win64-aarch64-shippable/opt: YF3KcTUnSh-WS9QmAqDGpA + partials-signing-te-win64-shippable/opt: BEvdQdgjRDe50IyIlztXAQ + partials-signing-tg-linux-shippable/opt: SzaepwyRQ6eDQkomvQiLEg + partials-signing-tg-linux64-shippable/opt: ACHFCAMFQsiGHXMivSrgIw + partials-signing-tg-macosx64-shippable/opt: FpSuI6Y7Tv2YwK8x_RwClA + partials-signing-tg-win32-shippable/opt: GW5brWciQBC67mVWARU08Q + partials-signing-tg-win64-aarch64-shippable/opt: VCMqC9AZRuG_YJEols095w + partials-signing-tg-win64-shippable/opt: Zxw_vd8ITMCEuimDvkQ1sQ + partials-signing-th-linux-shippable/opt: fe2uQcyPSliH6d0qtKI0qQ + partials-signing-th-linux64-shippable/opt: IeXYfGlTQCuhmx1HnoDrWQ + partials-signing-th-macosx64-shippable/opt: HnZa6S0ZRNe9NNA1VxXHZQ + partials-signing-th-win32-shippable/opt: LZZpub9BQeimVKYRXl2Yzg + partials-signing-th-win64-aarch64-shippable/opt: AZA0obWZQ7qzZN91d2IYrQ + partials-signing-th-win64-shippable/opt: YJga_jxhQbucm3XNj8PtSw + partials-signing-tl-linux-shippable/opt: bIIyXavjSouv4aZJuBmh8w + partials-signing-tl-linux64-shippable/opt: ApmJcZ5GSeGkbKh4AwtmhQ + partials-signing-tl-macosx64-shippable/opt: ExSBBbs7RjKjVJIjfGDafQ + partials-signing-tl-win32-shippable/opt: Er2hsTHKSNGOD_YjaMyONg + partials-signing-tl-win64-aarch64-shippable/opt: KI79c4QKQYWQQeIyzSFNug + partials-signing-tl-win64-shippable/opt: UC3d19mwRMSWyEpBnl9eig + partials-signing-tr-linux-shippable/opt: DkDccutkRs2mxucJlw96cg + partials-signing-tr-linux64-shippable/opt: BLT2owsIQmyPg2RGCdu6Eg + partials-signing-tr-macosx64-shippable/opt: AMQnYuajS7uzN0zQSQMnFQ + partials-signing-tr-win32-shippable/opt: Qu4u_fjCTP2fxMmyKyJcQQ + partials-signing-tr-win64-aarch64-shippable/opt: fyVlYadRTYacLRSZYyz-WQ + partials-signing-tr-win64-shippable/opt: EBfdDYk4SJmHU860VzRjcg + partials-signing-trs-linux-shippable/opt: VLo1GZnMRe6aDLsny4WsXQ + partials-signing-trs-linux64-shippable/opt: ZoI6IOsSSRGv_XOCyaVCdg + partials-signing-trs-macosx64-shippable/opt: Ln3nTsM-SDqZDU1tHtVM6A + partials-signing-trs-win32-shippable/opt: HoXZXKpTRlmT6vfD8SQsow + partials-signing-trs-win64-aarch64-shippable/opt: KX0elmhIQzCLJJMbFmoZ0Q + partials-signing-trs-win64-shippable/opt: V4E0PNRcQo-DYMOT3eqrSA + partials-signing-uk-linux-shippable/opt: aeDKOdUVSJK4hw8y-s9Vjw + partials-signing-uk-linux64-shippable/opt: YgpkcVoLTZCUtucTCImElg + partials-signing-uk-macosx64-shippable/opt: MQUHJKTCSrCKbpq_NqB20Q + partials-signing-uk-win32-shippable/opt: UWYVz9DpRGK4uBFbtV9UPg + partials-signing-uk-win64-aarch64-shippable/opt: JQB1dleJRWasCzPUsmCiXQ + partials-signing-uk-win64-shippable/opt: be1UVkwKThSD21tEaHQxNg + partials-signing-ur-linux-shippable/opt: UGJ5k7wxSoW63DyWl-VGhg + partials-signing-ur-linux64-shippable/opt: cvSnH1KlTFqbZoWcLDAF8g + partials-signing-ur-macosx64-shippable/opt: NIXqZnNxS6eVma3oQU2ZOQ + partials-signing-ur-win32-shippable/opt: Dj2pSsu0QJa6gUjUFIMQ-w + partials-signing-ur-win64-aarch64-shippable/opt: fbuSQ7CdRFa-sJdwjCWBCQ + partials-signing-ur-win64-shippable/opt: DcV7dmcuQ0ecm_hcvJZFmg + partials-signing-uz-linux-shippable/opt: MsxGIu4FTXC34yOB0QToww + partials-signing-uz-linux64-shippable/opt: JZhRYXSfRFiSFaUhtNoXrw + partials-signing-uz-macosx64-shippable/opt: fyB_N16DQRacKOKDGmxoEw + partials-signing-uz-win32-shippable/opt: SW5cVP2oRdWt8PoFKXkyyA + partials-signing-uz-win64-aarch64-shippable/opt: SYan7O0SRKqMr422N_YKHQ + partials-signing-uz-win64-shippable/opt: Vv0_Mm-oTSe1HMxNPBMW2Q + partials-signing-vi-linux-shippable/opt: CHpqXq1UQ5m8ZZ3-eX8Ovw + partials-signing-vi-linux64-shippable/opt: RKxJy-RwTsiCEaEarxtB1A + partials-signing-vi-macosx64-shippable/opt: HBdsbBhNTRymvkEVi5muVQ + partials-signing-vi-win32-shippable/opt: eUF_is7YSq-YwFKkfjy00Q + partials-signing-vi-win64-aarch64-shippable/opt: f6Ma60aeT_Cqlj2XHsdxZA + partials-signing-vi-win64-shippable/opt: NHkKl3-JT-uxfC9gjav09w + partials-signing-win32-shippable/opt: WC_fv5_fQl2yWH02Lltffw + partials-signing-win64-aarch64-shippable/opt: ZXueFroKQrmaBzZTuCH9iA + partials-signing-win64-shippable/opt: Em-N_o_JTR678Moe02W2QQ + partials-signing-xh-linux-shippable/opt: YFzJy0QxQAWwDdgi5PWWUw + partials-signing-xh-linux64-shippable/opt: fO640szoSLisMZaLx3_SVg + partials-signing-xh-macosx64-shippable/opt: dPdmNI2FSl-Z-kUmXgRBEA + partials-signing-xh-win32-shippable/opt: eIxAu58QQAe0U_3hUnYllA + partials-signing-xh-win64-aarch64-shippable/opt: b-zgbTl4SbqM1lUbvBANQA + partials-signing-xh-win64-shippable/opt: URGudZZMTJOpBF-k4eUMJw + partials-signing-zh-CN-linux-shippable/opt: SrZxTfoQQJCpFkyvEvYZlw + partials-signing-zh-CN-linux64-shippable/opt: At1Y5tRRTnaiB2ZUeCu0cw + partials-signing-zh-CN-macosx64-shippable/opt: TiROOOCBTbiJMVNmmKYaEA + partials-signing-zh-CN-win32-shippable/opt: FsSQHLBjR3qudjKr7vqahg + partials-signing-zh-CN-win64-aarch64-shippable/opt: Aw6VpzMhRUuJ-zcFJt6K_g + partials-signing-zh-CN-win64-shippable/opt: ade4R98mQ9KaF9zClv5n2Q + partials-signing-zh-TW-linux-shippable/opt: Vvihaid0QUqr09vQdcPjjw + partials-signing-zh-TW-linux64-shippable/opt: HlBNqrGFRoS_H8Re3AiATQ + partials-signing-zh-TW-macosx64-shippable/opt: R-uANiygTKqicwN8wH4OFg + partials-signing-zh-TW-win32-shippable/opt: YojmCp70T66-sdcNUREy-Q + partials-signing-zh-TW-win64-aarch64-shippable/opt: ZEZBA_yWTxqWY6hdQjMceQ + partials-signing-zh-TW-win64-shippable/opt: Jk7wKvA8Rbuy1u10PQXSeg + partials-sk-linux-shippable/opt: BV9OPcTWSkedijsO0rJGFA + partials-sk-linux64-shippable/opt: EWjFeD04Se-_axWDJLHMRA + partials-sk-macosx64-shippable/opt: GrBoN-pDR8agP4e_tZVx4Q + partials-sk-win32-shippable/opt: fL4qzFHdTeKYRKuHd0G3Iw + partials-sk-win64-aarch64-shippable/opt: Y5il1omJRKSL9cBUSCtL2w + partials-sk-win64-shippable/opt: PBMmAERAQz-6VFAO05JNNw + partials-sl-linux-shippable/opt: QdaeQhq4R5WXBzrrBq7LKg + partials-sl-linux64-shippable/opt: FClri4mRTfGs6HuYRo5d4w + partials-sl-macosx64-shippable/opt: FoZaFQf7QOiwKB8b27Moxw + partials-sl-win32-shippable/opt: e3NQg2F2RIK9Otwf28fs-w + partials-sl-win64-aarch64-shippable/opt: CxdwPi8_T-KSsg3BQHc9YQ + partials-sl-win64-shippable/opt: bRgMNV94SBuvi4iL9ZCuKQ + partials-son-linux-shippable/opt: QxwZY_IKQFWxPe-eLvCkeA + partials-son-linux64-shippable/opt: Hevuzz1pS_K44U-ipTnJ5Q + partials-son-macosx64-shippable/opt: Ym1wbTu0Q6OzWcXy2I6Wkw + partials-son-win32-shippable/opt: RI4P7LTTSwiNz3We2Ml1Zg + partials-son-win64-aarch64-shippable/opt: E2zFfBHQSNKnktpVmggZPw + partials-son-win64-shippable/opt: WQjndewmQBCjjXnVx9tdeA + partials-sq-linux-shippable/opt: I_VXLAVeQXCpaxbsUYA_ig + partials-sq-linux64-shippable/opt: bViXWddOTlOqAzjTj3Artg + partials-sq-macosx64-shippable/opt: CRnRC2kiTpatBOvAGPTrrQ + partials-sq-win32-shippable/opt: F5ezRueZS_OVB_XRayLFxQ + partials-sq-win64-aarch64-shippable/opt: S7gA4fnoTF2xSr5fVIQUsw + partials-sq-win64-shippable/opt: aWu24YPPQaWmvUvTcsrL8g + partials-sr-linux-shippable/opt: IF0laq7USzGtMkxPsuy-Cg + partials-sr-linux64-shippable/opt: J6Y36iOyTKCzxxPdSBE3zw + partials-sr-macosx64-shippable/opt: NS5wTlXbT_OH2ZtKqeT97Q + partials-sr-win32-shippable/opt: On6CPL0qTC2vngx4JZ9b0g + partials-sr-win64-aarch64-shippable/opt: SOaOiSjXRFqs4f9qx8LnYw + partials-sr-win64-shippable/opt: QGygcxxLQGuKPLh45LpZwQ + partials-sv-SE-linux-shippable/opt: Pao_oVZqSJSFMB_qAfmjIw + partials-sv-SE-linux64-shippable/opt: SlAPEdjHTS6LhRQOaGvG_A + partials-sv-SE-macosx64-shippable/opt: Ud9mme8HTWWX4ML2hA-8pA + partials-sv-SE-win32-shippable/opt: b5gT6jg3QIqxxzNl4SdOMQ + partials-sv-SE-win64-aarch64-shippable/opt: SBcL1l8QSLq38USMDQwhug + partials-sv-SE-win64-shippable/opt: NC9JcuAiShytd8DK0n1I0A + partials-szl-linux-shippable/opt: Ckngu4FzSXyu5AVaDPIU_Q + partials-szl-linux64-shippable/opt: H_4xGoAJRn6tDBhHQT8F2Q + partials-szl-macosx64-shippable/opt: SvMLeAvrRbONR7P2ix2IcQ + partials-szl-win32-shippable/opt: Cc7tJjyGQ1WxTM-Q1MSMdw + partials-szl-win64-aarch64-shippable/opt: dnd8mQohSzSuWOjRJN479A + partials-szl-win64-shippable/opt: YofCxY-iSumRFP2kaZ7O5Q + partials-ta-linux-shippable/opt: CR1s5B62TgSQKF32r4JsfQ + partials-ta-linux64-shippable/opt: XSUcvDBiQRGAbIXa8kPW2g + partials-ta-macosx64-shippable/opt: AQi9Ue1wSS2QmcmBTWxBjg + partials-ta-win32-shippable/opt: Dq10E9TPTZex4dAi-JlYpw + partials-ta-win64-aarch64-shippable/opt: PSYKME_aSF2ZQpUFLc3Klg + partials-ta-win64-shippable/opt: RZtLq6Y6STirZCg_1k2a1A + partials-te-linux-shippable/opt: LCvwBlM8T7OR_GnuHnHbGA + partials-te-linux64-shippable/opt: fx9yDsUcT7iHZXc_lAQd3Q + partials-te-macosx64-shippable/opt: EhJPHD22SMW6jgw5ZIhH9w + partials-te-win32-shippable/opt: Fiwpf7-yQ6CjCoXzrGEjUg + partials-te-win64-aarch64-shippable/opt: LLNWIvddSIim6ULxCvUH5g + partials-te-win64-shippable/opt: APFN0Rx4T3Cxznl5y2jJjg + partials-tg-linux-shippable/opt: DD6rYhD1RJygt320BZGB6g + partials-tg-linux64-shippable/opt: KKNwwEdWScCUhMu8olCnkw + partials-tg-macosx64-shippable/opt: RB8w1HAsTnOPt-MqPBb0Bg + partials-tg-win32-shippable/opt: RPYzzh49QAOmjGz-0_uh6g + partials-tg-win64-aarch64-shippable/opt: UFs0RhYZS_K-97pIczQlEQ + partials-tg-win64-shippable/opt: IMpOq8axT8S89DBv_my2cQ + partials-th-linux-shippable/opt: MEDMVlgpT32PxymvewO1lQ + partials-th-linux64-shippable/opt: DOugq5soSKqXQyKVKvVkrw + partials-th-macosx64-shippable/opt: a3yGY0vXTaGxxFztlIA7ww + partials-th-win32-shippable/opt: U8vlySjAS2OILt-F8Z9jOA + partials-th-win64-aarch64-shippable/opt: OyyfV-uySrCqcmFyftJ_9A + partials-th-win64-shippable/opt: evTahf5wRDGCM7U5MNuqjg + partials-tl-linux-shippable/opt: ZF1I3_oqTtWCg-v6u_-XkQ + partials-tl-linux64-shippable/opt: Cn7RDjSFT82V-hHI0lupuA + partials-tl-macosx64-shippable/opt: DoSh9FvHT_eTO6fIlrCCig + partials-tl-win32-shippable/opt: Fk7Zet1iR0KXHlp9ju6XuA + partials-tl-win64-aarch64-shippable/opt: cQqgt_gJRBeFyXx7k_F75g + partials-tl-win64-shippable/opt: D3l9dwaIQ-uQ8t2cKFyEmA + partials-tr-linux-shippable/opt: KqHWiMOOS6SrqVWqlFbk1Q + partials-tr-linux64-shippable/opt: Y2VtWh3KQo62fMqoy4LlWQ + partials-tr-macosx64-shippable/opt: AzN5qYViQcKg5stInMyOxw + partials-tr-win32-shippable/opt: Eqdf1a5FQL-6WM_gNm4-lA + partials-tr-win64-aarch64-shippable/opt: VMnXlqRxQtOmr-K2YupbqA + partials-tr-win64-shippable/opt: MXfeG1raSc-htxM_q82OdA + partials-trs-linux-shippable/opt: cwAgbndTQ8O2PlWI6lndCg + partials-trs-linux64-shippable/opt: ceSdVdlETfudO0AIbLAw0w + partials-trs-macosx64-shippable/opt: bbxM0DyZT9SVLfsEcCV68g + partials-trs-win32-shippable/opt: eyHLba-yRDeVUBGe5x4NrQ + partials-trs-win64-aarch64-shippable/opt: IoRqbTsBS5uR7XVoeoMjHw + partials-trs-win64-shippable/opt: aA-OBLGuThuZy1YJACbczA + partials-uk-linux-shippable/opt: b3h60IuDTE68V-sGtjJYLw + partials-uk-linux64-shippable/opt: NJHyN9ZcSW-P7E9fmCgPww + partials-uk-macosx64-shippable/opt: Q-X8n8EKT4-BHeR-cFltaA + partials-uk-win32-shippable/opt: PDNe2NkbQOKmBJKi01mxdA + partials-uk-win64-aarch64-shippable/opt: Tnro0iUrQQ27iUD-ffKcvA + partials-uk-win64-shippable/opt: cO2EH9QWQCSJCVOsuZ6sZQ + partials-ur-linux-shippable/opt: SHzpFRDJQT6E2vjlD-r3Sg + partials-ur-linux64-shippable/opt: c-I3d4-QTim9phoFsWpvJA + partials-ur-macosx64-shippable/opt: CHhMdbqQTxiNfthcy7mglQ + partials-ur-win32-shippable/opt: GOoF36OmTZ6dDIc611SJBg + partials-ur-win64-aarch64-shippable/opt: dE-h-Ue7Qpq6TvB33ukIZQ + partials-ur-win64-shippable/opt: GAeS7w6AS9qHhLnswJJ0OA + partials-uz-linux-shippable/opt: IggS-DVeQLGb7OC-Y-wLNA + partials-uz-linux64-shippable/opt: WREeq28hSAKSJl07LInsXA + partials-uz-macosx64-shippable/opt: ZdtKMVuRTWaP5AH6EcOr8w + partials-uz-win32-shippable/opt: RWFH18aNQsWvKlMz6AYGiw + partials-uz-win64-aarch64-shippable/opt: R4QRBIAwQt2KtchbLi6sLQ + partials-uz-win64-shippable/opt: AbjvI4NZQmCBh_t4lVGWhw + partials-vi-linux-shippable/opt: AO2qJSQuRNer-yLveXMwhg + partials-vi-linux64-shippable/opt: O5YoemZLS5yqAbfNMwU8yg + partials-vi-macosx64-shippable/opt: KNzSnk5pQiO2uUVXacx0rg + partials-vi-win32-shippable/opt: EfbYxefNRiePLt7BddvWAQ + partials-vi-win64-aarch64-shippable/opt: KL7nse7GQQOWVrdSSlvYUQ + partials-vi-win64-shippable/opt: caWbfxW8RMSGI7yNIjjAmA + partials-win32-shippable/opt: HL6TUX2wR-K_nUqS0hB8Lg + partials-win64-aarch64-shippable/opt: ATkt8ZKyTC-dtlEveC7ugQ + partials-win64-shippable/opt: Ey61eEbsTf6xdK3pqSao3g + partials-xh-linux-shippable/opt: OPAE08rUTTyPdCbbuKlXsg + partials-xh-linux64-shippable/opt: JN0rxHmgQ4G0ZzfzAlxF3Q + partials-xh-macosx64-shippable/opt: XyZIJ277S_OwjK1k5NpBqQ + partials-xh-win32-shippable/opt: OY0CUZu4Q0WKfZGB8aGodw + partials-xh-win64-aarch64-shippable/opt: eoNF41sbSIWXw8Ri-KqLcg + partials-xh-win64-shippable/opt: dkrMI4iSTZaY5GNO4ArlJA + partials-zh-CN-linux-shippable/opt: Q889ruKyTrKpM6Cm4p_1YA + partials-zh-CN-linux64-shippable/opt: Y7oGSBqBRqaFvLzmvBpi4Q + partials-zh-CN-macosx64-shippable/opt: Ow5DlidNRQWLkUMHRg1ATQ + partials-zh-CN-win32-shippable/opt: aNIBz4pQTamuKHYDBioblQ + partials-zh-CN-win64-aarch64-shippable/opt: WTW1SttzQCiqMzP1B1fA8A + partials-zh-CN-win64-shippable/opt: FJL-H-N0TSuTurho7b04-A + partials-zh-TW-linux-shippable/opt: FO-po4RJS7We7zQsr2tcTw + partials-zh-TW-linux64-shippable/opt: HTicwI9JRw6YgD4uEzXULQ + partials-zh-TW-macosx64-shippable/opt: dunhkN-LTHa7rMhkvEnxBw + partials-zh-TW-win32-shippable/opt: Z1vQJCkGSwKNgsIAbvxHNQ + partials-zh-TW-win64-aarch64-shippable/opt: V_NBJ3SlTBmqi3ltM_96wQ + partials-zh-TW-win64-shippable/opt: MYVHobLRTrmhhj1cbQyoqA + post-balrog-dummy-icecat-linux-shippable-1: WH-IS9sVRgWEnabnw6or9g + post-balrog-dummy-icecat-linux-shippable-2: YhRKssrNTKW4jqBiXi3SNA + post-balrog-dummy-icecat-linux64-shippable-1: ZT6dnxY-Tpq5Ioj-KVCwNw + post-balrog-dummy-icecat-linux64-shippable-2: WE8FTAxcTZmd9XP7OJlGLA + post-balrog-dummy-icecat-macosx64-shippable-1: XNivbF1LT1yTiZkEX28Bkg + post-balrog-dummy-icecat-macosx64-shippable-2: SgDgm_5DSZS6e_t0jnx6cA + post-balrog-dummy-icecat-win32-shippable-1: YhCZqnNPQViZ4N8l6quTHg + post-balrog-dummy-icecat-win32-shippable-2: HoQJrWwdRvOYVa-wqh6Drw + post-balrog-dummy-icecat-win64-aarch64-shippable-1: DAKQJtC_QtG1mKzmCZFrPg + post-balrog-dummy-icecat-win64-aarch64-shippable-2: bC2Yif6OS8-HVWzbkDt-NA + post-balrog-dummy-icecat-win64-shippable-1: E7syYr-cR2qgo-SjMEZK7A + post-balrog-dummy-icecat-win64-shippable-2: XjHVtP3QRU-9CSbvniep7g + post-beetmover-checksums-dummy-icecat-promote-1: JsQEci8JRoaJh6jiPv8evA + post-beetmover-checksums-dummy-icecat-promote-2: JN3wOzwrQpO1utF8p8VNDg + post-beetmover-checksums-dummy-icecat-promote-3: PV7AtUlfRAKaOE-7LWxbYQ + post-beetmover-checksums-dummy-icecat-promote-4: VVdWQ8kjRESV9NCS07YDkQ + post-beetmover-checksums-dummy-icecat-promote-5: Qo4lIqqsRpuzJ9l7oupfVA + post-beetmover-checksums-dummy-icecat-promote-6: fmq4701_QMu2kWCdCZxsrA + post-beetmover-checksums-dummy-icecat-promote-7: EsAjUV7ERfKykg319ADCQw + post-beetmover-dummy-icecat-linux-shippable-1: Wq-DGC9oT4mYLFmDKG2Jlg + post-beetmover-dummy-icecat-linux-shippable-2: f85ZxpTxRlaFnlH_GKhlPA + post-beetmover-dummy-icecat-linux-shippable-3: QXZuNqnpRIe5KzTUdbm3-w + post-beetmover-dummy-icecat-linux64-shippable-1: csSt4DNkR9aOlIXF86zOjw + post-beetmover-dummy-icecat-linux64-shippable-2: e0HZQe6bSvSXi-ggVHAxdw + post-beetmover-dummy-icecat-linux64-shippable-3: KYWmd7UZTtCFtpu0YbVbeg + post-beetmover-dummy-icecat-macosx64-shippable-1: RUkON30sSJ26nC_wwPWoDg + post-beetmover-dummy-icecat-macosx64-shippable-2: Ka74_5kfQfykHXM9rfd1Ww + post-beetmover-dummy-icecat-macosx64-shippable-3: S2u6Gtx9QQ2AiX-wJkoxdA + post-beetmover-dummy-icecat-win32-shippable-1: S2I_zpvMRvGEIndLy_EVKQ + post-beetmover-dummy-icecat-win32-shippable-2: JW8VLj7JRBOUaz6VZBpMtg + post-beetmover-dummy-icecat-win32-shippable-3: dwqHp6GsSs6az292po8KRQ + post-beetmover-dummy-icecat-win64-aarch64-shippable-1: J8SUapgMSWipkuwjxYW_qQ + post-beetmover-dummy-icecat-win64-aarch64-shippable-2: Pn1L6RpuTqiUITwPbmAc9w + post-beetmover-dummy-icecat-win64-aarch64-shippable-3: U5F-p_CXRDSzT3GAmuNINw + post-beetmover-dummy-icecat-win64-shippable-1: VJgUfW76RsmXF3LOBl1cpA + post-beetmover-dummy-icecat-win64-shippable-2: fKGDh5GlRkuqibKZj5HXww + post-beetmover-dummy-icecat-win64-shippable-3: MZTc9ByBTOaUSQPDh5Q6Hg + post-langpack-dummy-icecat-promote-1: SuOdyI6ZRFiPKOIm6rJVhA + post-update-verify-dummy-icecat-linux-shippable-1: bk-IFLquRfamSF6T8z1ssg + post-update-verify-dummy-icecat-linux64-shippable-1: bTNwU74NR52RMo_APGarpQ + post-update-verify-dummy-icecat-macosx64-shippable-1: JdRhZusSTZOQ-A_52_KMkw + post-update-verify-dummy-icecat-win32-shippable-1: EN1E7IEdSKmq9GFNgxxb5w + post-update-verify-dummy-icecat-win64-aarch64-shippable-1: S2uiDCFfTJCYyfk5qcXeDg + post-update-verify-dummy-icecat-win64-shippable-1: DXN-GYupRg-snNue4yAg3w + push-langpacks-build-linux64-shippable/opt: QdAVwgxeSbaNQ08vqJRx5w + push-langpacks-shippable-l10n-linux64-shippable-1/opt: EQk1BTqhT2qVK0k3YYcCyQ + push-langpacks-shippable-l10n-linux64-shippable-10/opt: G5NA6SkVQvO2TAxrX54kNg + push-langpacks-shippable-l10n-linux64-shippable-11/opt: Fb-ivCBXRpCpKfaPInT5Sw + push-langpacks-shippable-l10n-linux64-shippable-12/opt: Fgawx4zqS9Ocq89b-vOI4Q + push-langpacks-shippable-l10n-linux64-shippable-13/opt: EyM-81-mQsikk448wx2zNg + push-langpacks-shippable-l10n-linux64-shippable-14/opt: SiZkDR42S1mHQZ4t7sG_9Q + push-langpacks-shippable-l10n-linux64-shippable-15/opt: MPi_1VqIQZ-sFDk3E4o5oQ + push-langpacks-shippable-l10n-linux64-shippable-16/opt: b-TqJtMYTg-C7IMQfYBDyw + push-langpacks-shippable-l10n-linux64-shippable-17/opt: b-E-3dvxSoqr6CeC5VItfg + push-langpacks-shippable-l10n-linux64-shippable-18/opt: aWf6RGSFTtO9ih5TwJWP9g + push-langpacks-shippable-l10n-linux64-shippable-19/opt: DxPqhJmxQAi90_BPkPNG_w + push-langpacks-shippable-l10n-linux64-shippable-2/opt: WCfqlvuvTvCikrc_cKLbXg + push-langpacks-shippable-l10n-linux64-shippable-20/opt: VXR0_rX8TXeIxYizTpx3gA + push-langpacks-shippable-l10n-linux64-shippable-3/opt: QsWTvm7AR026XA33xmZqXQ + push-langpacks-shippable-l10n-linux64-shippable-4/opt: KQ0i5bLYQq-BssM_6Fyosw + push-langpacks-shippable-l10n-linux64-shippable-5/opt: GVxdK2ftQgC00nU8mbTDeg + push-langpacks-shippable-l10n-linux64-shippable-6/opt: Gfok_vrsSBeI5N70jDV4hA + push-langpacks-shippable-l10n-linux64-shippable-7/opt: eykEX3i7S1Why3RpcztwpQ + push-langpacks-shippable-l10n-linux64-shippable-8/opt: Hp2key1uRgSqJVL0rCy3aA + push-langpacks-shippable-l10n-linux64-shippable-9/opt: eJb24HGbS32PjrVKYCWQng + push-langpacks-shippable-l10n-macosx64-shippable-ja-JP-mac/opt: ZSkAI3aQSOCDm8sq5M1B5A + release-balrog-submit-toplevel-icecat: N9Hhi5y7RRu7a9vkg8afRg + release-beetmover-signed-langpacks-checksums-linux-1/opt: Yi1a95tMQji68cFTZSmbxA + release-beetmover-signed-langpacks-checksums-linux-10/opt: AVZ9PoJdS1CnZ_C4Cq2UAg + release-beetmover-signed-langpacks-checksums-linux-11/opt: bxKEUWfmQbCIQxMczFSBWQ + release-beetmover-signed-langpacks-checksums-linux-12/opt: ewEZDCoaRAehqFI2VS0cng + release-beetmover-signed-langpacks-checksums-linux-13/opt: XOqIjGfwSHaNuaeiaZnTBQ + release-beetmover-signed-langpacks-checksums-linux-14/opt: MsxrbQlvR2yY3b5aS7cIaA + release-beetmover-signed-langpacks-checksums-linux-15/opt: AjxglPraRveP4pQdnkgCNA + release-beetmover-signed-langpacks-checksums-linux-16/opt: JT3rKkM7Rt6hSi8b_tAmgg + release-beetmover-signed-langpacks-checksums-linux-17/opt: fRhXaCFsSeGJ07SvFXoWhw + release-beetmover-signed-langpacks-checksums-linux-18/opt: OKx3ylVKRkmby7H70luu_Q + release-beetmover-signed-langpacks-checksums-linux-19/opt: aW0W7GnsRjOPl8gcsDTOgw + release-beetmover-signed-langpacks-checksums-linux-2/opt: FKL_8nvSQZGcy0mYItR69w + release-beetmover-signed-langpacks-checksums-linux-20/opt: P3icpQrqTAirr8PujE4RBg + release-beetmover-signed-langpacks-checksums-linux-3/opt: RDzqxr_VST-bv7bL2cKE3g + release-beetmover-signed-langpacks-checksums-linux-4/opt: HqndCCfHTxOgxbmkJEO9Fg + release-beetmover-signed-langpacks-checksums-linux-5/opt: TAZ0OdROSty4ri25DfoUrg + release-beetmover-signed-langpacks-checksums-linux-6/opt: OOf2UGHVSyGkGYiEzgR3Ew + release-beetmover-signed-langpacks-checksums-linux-7/opt: JfkWAEUXRS6lkInqEemcgQ + release-beetmover-signed-langpacks-checksums-linux-8/opt: Ag9bUZvHScauOLetlnzozg + release-beetmover-signed-langpacks-checksums-linux-9/opt: UsfYpPedQh688yufny_lEg + release-beetmover-signed-langpacks-checksums-linux/opt: HGGoQnHxRA26W-V595_KPw + release-beetmover-signed-langpacks-checksums-macosx64-1/opt: JIBVxVVFQ8esN5tiB5pwGA + release-beetmover-signed-langpacks-checksums-macosx64-10/opt: YH3vpX6aQgaNtMC2eFTEVg + release-beetmover-signed-langpacks-checksums-macosx64-11/opt: T_QebpsIRxeBG_XJ8mqlFA + release-beetmover-signed-langpacks-checksums-macosx64-12/opt: I67kdIl9RLaISVzVWbDFew + release-beetmover-signed-langpacks-checksums-macosx64-13/opt: GoNaC6DzQZ-rJhA3Ja0s1Q + release-beetmover-signed-langpacks-checksums-macosx64-14/opt: Evb8fShqSLG7bsP09mFTSg + release-beetmover-signed-langpacks-checksums-macosx64-15/opt: MQl5o-eSQOWRawP5Zp2jFA + release-beetmover-signed-langpacks-checksums-macosx64-16/opt: chtYJq21TviMH3wxfTj8hA + release-beetmover-signed-langpacks-checksums-macosx64-17/opt: VSFyAqTxSYKsh5bBs3QyMA + release-beetmover-signed-langpacks-checksums-macosx64-18/opt: FygJ4sjlQgGPy7dmLSHaLA + release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ZHIg8TVwTYGAePuIgezgaw + release-beetmover-signed-langpacks-checksums-macosx64-2/opt: F9vVva7IQt67ouQOBnr6tg + release-beetmover-signed-langpacks-checksums-macosx64-20/opt: PpQ8dxjWS72e1X8XnkiRWA + release-beetmover-signed-langpacks-checksums-macosx64-3/opt: EbAVTdvmQaKhWh2LwzWGUA + release-beetmover-signed-langpacks-checksums-macosx64-4/opt: eWnJHptSSqiod4RF6biVdg + release-beetmover-signed-langpacks-checksums-macosx64-5/opt: EsHwavj6Qj-qE8zJO3Fvxw + release-beetmover-signed-langpacks-checksums-macosx64-6/opt: A8ez2XnoQMK78MGVJaufnA + release-beetmover-signed-langpacks-checksums-macosx64-7/opt: b50WhnYvTUa4sHc5kSsWWA + release-beetmover-signed-langpacks-checksums-macosx64-8/opt: eNNLrtKCSc2qco4xGvpSjg + release-beetmover-signed-langpacks-checksums-macosx64-9/opt: VAi02fouQp2OFGybR9_uaw + release-beetmover-signed-langpacks-checksums-macosx64/opt: cNqOkm7tTvKXyDi_lySCDA + release-beetmover-signed-langpacks-checksums-win32-1/opt: PDHcmxEjSeajcxeXxADc7w + release-beetmover-signed-langpacks-checksums-win32-10/opt: MT8s3x2YQmeZGTTChHTacQ + release-beetmover-signed-langpacks-checksums-win32-11/opt: QdrLobysTpa9EHmAF6UckQ + release-beetmover-signed-langpacks-checksums-win32-12/opt: L4VTGbmwScK4QortH59ARw + release-beetmover-signed-langpacks-checksums-win32-13/opt: KJAVr_FwT668brPwUVDp3g + release-beetmover-signed-langpacks-checksums-win32-14/opt: fUpL0owwReyfoGk0fYi4XQ + release-beetmover-signed-langpacks-checksums-win32-15/opt: H7cq8ZOxRkKhbeLImx-4wQ + release-beetmover-signed-langpacks-checksums-win32-16/opt: R0MWJJ0ER-iszkvXGD9j_A + release-beetmover-signed-langpacks-checksums-win32-17/opt: C8ik4xA1TLqgOjGIdrfviA + release-beetmover-signed-langpacks-checksums-win32-18/opt: ZF1fJOPoR6G61VYuTHdTdg + release-beetmover-signed-langpacks-checksums-win32-19/opt: IvOOpqpMTvGLhmEZBYqlBw + release-beetmover-signed-langpacks-checksums-win32-2/opt: ACYwMHwySzCs_xpyGn9Giw + release-beetmover-signed-langpacks-checksums-win32-20/opt: LeqXw4vsQp-xjywlfxhGxQ + release-beetmover-signed-langpacks-checksums-win32-3/opt: VUeYjGRrTISJ0Zku5-vLYg + release-beetmover-signed-langpacks-checksums-win32-4/opt: bDuqYZXOT_yCbjSgITDSxA + release-beetmover-signed-langpacks-checksums-win32-5/opt: Dsbk-Uu2RUm3oQ4AFPXxQA + release-beetmover-signed-langpacks-checksums-win32-6/opt: HayfOvLiQhSUHibDSefb_g + release-beetmover-signed-langpacks-checksums-win32-7/opt: NESORRYySDuLvQBDH2_ElQ + release-beetmover-signed-langpacks-checksums-win32-8/opt: SkUXoUBGQxeJzt7sy9Kb-Q + release-beetmover-signed-langpacks-checksums-win32-9/opt: eV5kyMDySpu5Rsj2TVL9Lw + release-beetmover-signed-langpacks-checksums-win32/opt: Wt6F3i8HQcS8JyNNmynSeQ + release-beetmover-signed-langpacks-checksums-win64-1/opt: PvWeHR3BSdKLAbGM1TXtyQ + release-beetmover-signed-langpacks-checksums-win64-10/opt: WN9NvpofTPGgadgvcN6Atg + release-beetmover-signed-langpacks-checksums-win64-11/opt: FawZjNRTTqSe6aKgsbn_uw + release-beetmover-signed-langpacks-checksums-win64-12/opt: OdlvKy5fT4-LW_mgnZSpkQ + release-beetmover-signed-langpacks-checksums-win64-13/opt: bBupvnrURMKJ724oCgBl3w + release-beetmover-signed-langpacks-checksums-win64-14/opt: EpT-hFK2RrK1h1wUrfiCZA + release-beetmover-signed-langpacks-checksums-win64-15/opt: GIurvQy8QWi0sx9KyuWr-Q + release-beetmover-signed-langpacks-checksums-win64-16/opt: SngkCeVvTYCcpo8qFWUeIQ + release-beetmover-signed-langpacks-checksums-win64-17/opt: cdpSQAvHTGWJ761SgHYiEA + release-beetmover-signed-langpacks-checksums-win64-18/opt: ZbuipjCBQQ69J6K0UEpB7w + release-beetmover-signed-langpacks-checksums-win64-19/opt: QkgaPZWyQY6UcIP3Ik_evQ + release-beetmover-signed-langpacks-checksums-win64-2/opt: aB7QN-vyTA6FMm6q9mBV7A + release-beetmover-signed-langpacks-checksums-win64-20/opt: RjIIbtvXRkqsi6SKTRcFRg + release-beetmover-signed-langpacks-checksums-win64-3/opt: MnzhxLqvTZOToVPT-gMZzw + release-beetmover-signed-langpacks-checksums-win64-4/opt: RljJzYaUQaK7w8IgHeVkCQ + release-beetmover-signed-langpacks-checksums-win64-5/opt: U6JV-mGVRDG7OLJyK0dPFQ + release-beetmover-signed-langpacks-checksums-win64-6/opt: GJ4pKlqKRnyrPmqMK6O79w + release-beetmover-signed-langpacks-checksums-win64-7/opt: YEvn8y1ZTo-xrosK1nrBzg + release-beetmover-signed-langpacks-checksums-win64-8/opt: BciLCc2ATO-PcRA40qv8SQ + release-beetmover-signed-langpacks-checksums-win64-9/opt: BRGC6O4FT4qXFSrvIIgkmw + release-beetmover-signed-langpacks-checksums-win64/opt: dTOoXo-kTquQKV399I925Q + release-beetmover-signed-langpacks-linux-shippable-1/opt: FxLHLTxcR6GfO-A8EEihdQ + release-beetmover-signed-langpacks-linux-shippable-10/opt: cSQwZTKdQ-GbEqeJiXJstA + release-beetmover-signed-langpacks-linux-shippable-11/opt: CK6c_FL_QV-vYtLBmp9yPQ + release-beetmover-signed-langpacks-linux-shippable-12/opt: RCG6-ifSQrWg3Qb3AYKVJg + release-beetmover-signed-langpacks-linux-shippable-13/opt: eX3TKFxyRiy1p2nloaVJwA + release-beetmover-signed-langpacks-linux-shippable-14/opt: Q-8sHy-pSUGrxc98ISvulA + release-beetmover-signed-langpacks-linux-shippable-15/opt: Y392itf0S4CPLCS07QSouQ + release-beetmover-signed-langpacks-linux-shippable-16/opt: I9vRcURvRQ6v7OymdVb9gQ + release-beetmover-signed-langpacks-linux-shippable-17/opt: KP0i545wRZCqWzr4j362_g + release-beetmover-signed-langpacks-linux-shippable-18/opt: KRyMS6jpRb6oRuI0ttlAFg + release-beetmover-signed-langpacks-linux-shippable-19/opt: HlaAHkYJQbWS_9twezSKEA + release-beetmover-signed-langpacks-linux-shippable-2/opt: OmdV6SD1TlCNkd11WgesHQ + release-beetmover-signed-langpacks-linux-shippable-20/opt: R6Gxqi7sSk-Pbi0asDNTpg + release-beetmover-signed-langpacks-linux-shippable-3/opt: bwLqknVrR66oXnA6dSdnZg + release-beetmover-signed-langpacks-linux-shippable-4/opt: Ud2pRNgVStq8pC7IxBlZjQ + release-beetmover-signed-langpacks-linux-shippable-5/opt: IfP-SsjiRaWUoreD3yvg0Q + release-beetmover-signed-langpacks-linux-shippable-6/opt: QzpvAKQ5TfunD0klR1b50g + release-beetmover-signed-langpacks-linux-shippable-7/opt: PeEe6N6dQyaPnpAKksQgjQ + release-beetmover-signed-langpacks-linux-shippable-8/opt: MH_V9gNNTNmKgAV0tgABCw + release-beetmover-signed-langpacks-linux-shippable-9/opt: EWNNsa0oR7OU7mrLV3YXOA + release-beetmover-signed-langpacks-linux-shippable/opt: OUxdrKeVR7-QE79TjMBBZQ + release-beetmover-signed-langpacks-macosx64-shippable-1/opt: ckYzkF-ZTr-CNDnEv1EPzA + release-beetmover-signed-langpacks-macosx64-shippable-10/opt: Qlmvk6rKTEGSw2i1jfh8qg + release-beetmover-signed-langpacks-macosx64-shippable-11/opt: UW2UwEo0RVmwqccetdUETg + release-beetmover-signed-langpacks-macosx64-shippable-12/opt: SnXyh6R_ReWs_wo3RPl6mg + release-beetmover-signed-langpacks-macosx64-shippable-13/opt: RQKucrTJRmGe196FUBm68Q + release-beetmover-signed-langpacks-macosx64-shippable-14/opt: LqH9iUf-SCuJUucNdZaXHg + release-beetmover-signed-langpacks-macosx64-shippable-15/opt: aU03GOGHS6aBnrZX1VAFcw + release-beetmover-signed-langpacks-macosx64-shippable-16/opt: Zkvi5Mi6SW6w0zfCIv3Z8A + release-beetmover-signed-langpacks-macosx64-shippable-17/opt: bzyxUq0wQRS135zwaBlirw + release-beetmover-signed-langpacks-macosx64-shippable-18/opt: TvR8ebAPThW0qPXKNjsAhQ + release-beetmover-signed-langpacks-macosx64-shippable-19/opt: VbJNWXfeQaeQNstre5FsEw + release-beetmover-signed-langpacks-macosx64-shippable-2/opt: bhd9kmgMT3-g0yOZOLIiNA + release-beetmover-signed-langpacks-macosx64-shippable-20/opt: HuYxUD_pTxicL7NfcedcLQ + release-beetmover-signed-langpacks-macosx64-shippable-3/opt: POzP0csCQfGQWgsdB7-HWA + release-beetmover-signed-langpacks-macosx64-shippable-4/opt: KNcfT0AbQSW2huqNWkPdLQ + release-beetmover-signed-langpacks-macosx64-shippable-5/opt: de5DBRhcTYmzsAvwvvlKww + release-beetmover-signed-langpacks-macosx64-shippable-6/opt: VJq1Wos_Qb2--Z483OG-Ag + release-beetmover-signed-langpacks-macosx64-shippable-7/opt: OfJj65uhST2xpJomlO4AhQ + release-beetmover-signed-langpacks-macosx64-shippable-8/opt: AyzlGmu1ScOrvzCzOSBZ7w + release-beetmover-signed-langpacks-macosx64-shippable-9/opt: ZwRJMT0GQd-39xJyAXlP0g + release-beetmover-signed-langpacks-macosx64-shippable/opt: dBztWQ72QFG79ggl9Opbow + release-beetmover-signed-langpacks-win32-shippable-1/opt: Z7TkoqouRt-hPuHTkG5PcA + release-beetmover-signed-langpacks-win32-shippable-10/opt: NtyyCHOySOKcNcxNL0sFsg + release-beetmover-signed-langpacks-win32-shippable-11/opt: XyGFt8hGSMmwnFD6RC5TtQ + release-beetmover-signed-langpacks-win32-shippable-12/opt: FGGaIx5wTx-IFslJKi_CrA + release-beetmover-signed-langpacks-win32-shippable-13/opt: WkLIEmflSPiwlLayG7oCxg + release-beetmover-signed-langpacks-win32-shippable-14/opt: TFfXDt8QSemVE0poWY8KKw + release-beetmover-signed-langpacks-win32-shippable-15/opt: UaYSews8S0ikADosDv6pcA + release-beetmover-signed-langpacks-win32-shippable-16/opt: cStHpF1mTIuUR7k6GKJ5BQ + release-beetmover-signed-langpacks-win32-shippable-17/opt: P2vL_e7YQK2OtcT0I-iW3w + release-beetmover-signed-langpacks-win32-shippable-18/opt: C5bP0q-_TYOrK9___pW_Fw + release-beetmover-signed-langpacks-win32-shippable-19/opt: XWZM08BySniTIhvKGNiU_Q + release-beetmover-signed-langpacks-win32-shippable-2/opt: BVrKxyolTyKwJR82TrMgrQ + release-beetmover-signed-langpacks-win32-shippable-20/opt: cB6N1z2dT1iUHlhX3qIvQw + release-beetmover-signed-langpacks-win32-shippable-3/opt: FipkUlQ-RqKtKEXHwZzJ3Q + release-beetmover-signed-langpacks-win32-shippable-4/opt: Lu2lGCLeRr-nzB3fjXnmkg + release-beetmover-signed-langpacks-win32-shippable-5/opt: Cqj9CMk5QxKbIP74VbaqCg + release-beetmover-signed-langpacks-win32-shippable-6/opt: YEoMPUc_QHuThBXBX-CrHQ + release-beetmover-signed-langpacks-win32-shippable-7/opt: JedZYcgtRyiL0UUNP4JG5Q + release-beetmover-signed-langpacks-win32-shippable-8/opt: LUFkQI4ZRlaOcDkxpwnMhQ + release-beetmover-signed-langpacks-win32-shippable-9/opt: Zmr3EksySfWPghKRobTYWg + release-beetmover-signed-langpacks-win32-shippable/opt: IVZ0QgQJSRaoiWaKESwVWQ + release-beetmover-signed-langpacks-win64-shippable-1/opt: YN4CNm0wTV-yiuuQcH01IQ + release-beetmover-signed-langpacks-win64-shippable-10/opt: ckJXftu_S4KxPI5VwTzV5g + release-beetmover-signed-langpacks-win64-shippable-11/opt: D8ddghNMTq6qw7LXNUqqZg + release-beetmover-signed-langpacks-win64-shippable-12/opt: GCvjOEApRGWLTFv0frA7WA + release-beetmover-signed-langpacks-win64-shippable-13/opt: R0JkYe3GTjWbedE-B_45XQ + release-beetmover-signed-langpacks-win64-shippable-14/opt: HjToEPRBQMq3vbW8i7YPjw + release-beetmover-signed-langpacks-win64-shippable-15/opt: ATT1WvhbRzCsbcE5A1mzmA + release-beetmover-signed-langpacks-win64-shippable-16/opt: d0M2DFq7RtWlQT7sbiU4wA + release-beetmover-signed-langpacks-win64-shippable-17/opt: KnFOEkNiTnOCJ9OfPysG5g + release-beetmover-signed-langpacks-win64-shippable-18/opt: ZHwhW58VTDeo8KFkyrMcNg + release-beetmover-signed-langpacks-win64-shippable-19/opt: ZcnNmLfQRIKJiHhwvtkGkQ + release-beetmover-signed-langpacks-win64-shippable-2/opt: OFlve2jtQNmz0BBMI-h0bg + release-beetmover-signed-langpacks-win64-shippable-20/opt: fRvhkkaITK-Evdi2o9bBcw + release-beetmover-signed-langpacks-win64-shippable-3/opt: LObgU9KsQ36JAyg39mJTDw + release-beetmover-signed-langpacks-win64-shippable-4/opt: FSCpoqDbRZWmoXC9LRAE5Q + release-beetmover-signed-langpacks-win64-shippable-5/opt: L9VHksVbQ-muR5O1njSSAA + release-beetmover-signed-langpacks-win64-shippable-6/opt: H7rbiWXeQ9qj2lsQNo0q0Q + release-beetmover-signed-langpacks-win64-shippable-7/opt: ayCwCHQiQEq7mYTRzw2vdg + release-beetmover-signed-langpacks-win64-shippable-8/opt: BrgiClStSVW3iELDWpIlbA + release-beetmover-signed-langpacks-win64-shippable-9/opt: b03duh7jTeiTWkGsno2OAw + release-beetmover-signed-langpacks-win64-shippable/opt: M21GMl-EROWluVjnocKMxA + release-beetmover-source-checksums-icecat-source/opt: M2EKHuFaT6WpAZpkKBerjQ + release-bouncer-sub-icecat: e_OZAwP_QLuIpTLUHlOzWA + release-early-tagging-icecat: AUrISLuURQqvKIH7mvKc2g + release-generate-checksums-icecat: RiQRUhJ8SkKt4vS-kc_tEg + release-generate-checksums-icecat-beetmover: Ko2krLg-RR6GGuD7p-xaHw + release-generate-checksums-icecat-signing: BqTyyE2lSHKTENKEuVEspg + release-notify-promote-icecat: MLwEfP4zQOSuEH_4_DKkWQ + release-notify-started-icecat: FfHwMHinTd6j9H9Srkk6FA + release-partner-repack-beetmover-linux-shippable-mozillaonline-esrOther-zh-CN-public: UhE2mWMUSyCz4EvwHkG_6g + release-partner-repack-beetmover-linux64-shippable-mozillaonline-esrOther-zh-CN-public: TKSXy9TcRBCp2ba2hTGahA + release-partner-repack-beetmover-macosx64-shippable-mozillaonline-esrOther-zh-CN-public: A9MZ_AawRt-LDkhQuxc2Cg + release-partner-repack-beetmover-win32-shippable-mozillaonline-esrWinFull-zh-CN-public: FrWnATEeROWTSYjwQmJTmw + release-partner-repack-beetmover-win64-shippable-mozillaonline-esrWinFull-zh-CN-public: DZaZktWWRB-JtlmOPRL0qQ + release-partner-repack-chunking-dummy-linux-shippable-mozillaonline-esrOther-zh-CN: U3ssBB0sR82w4PUMRxsIwA + release-partner-repack-chunking-dummy-linux64-shippable-mozillaonline-esrOther-zh-CN: JD3tUDM5QJS1I1_BclFUsQ + release-partner-repack-linux-shippable: Sjzpkrx2TR-dMqL1XBzb0g + release-partner-repack-linux64-shippable: STwKkNaVSPew2blC1dkEFg + release-partner-repack-mac-notarization-macosx64-shippable-1: MuRyL3weRlCmgU5O3-JErA + release-partner-repack-mac-signing-macosx64-shippable-1: L7fqDJ6ySlarX2WzZupRKw + release-partner-repack-macosx64-shippable: BESGPspYTNqg-tyZ9FMNWQ + release-partner-repack-repackage-macosx64-shippable-mozillaonline-esrOther-zh-CN: FFeR49oCTym2kBC9B_IlTA + release-partner-repack-repackage-signing-linux-shippable-mozillaonline-esrOther-zh-CN: AGKc4najRZicGbwLhPi1_g + release-partner-repack-repackage-signing-linux64-shippable-mozillaonline-esrOther-zh-CN: PEmDZYCtRgGMmhREA4sD1A + release-partner-repack-repackage-signing-macosx64-shippable-mozillaonline-esrOther-zh-CN: J_70xwtmTriL0T457Q4PmQ + release-partner-repack-repackage-signing-win32-shippable-mozillaonline-esrWinFull-zh-CN: Xq9UARzhTWCf0voz8kDmig + release-partner-repack-repackage-signing-win64-shippable-mozillaonline-esrWinFull-zh-CN: BFzTypmyRoO9H1FYwPHi3g + release-partner-repack-repackage-win32-shippable-mozillaonline-esrWinFull-zh-CN: MZrvLu28T1eKe7nG522P_A + release-partner-repack-repackage-win64-shippable-mozillaonline-esrWinFull-zh-CN: f1tFESTAQu673T8J3pr-Tw + release-partner-repack-win32-shippable: dtSzVf7tR2O_gmYscjym8g + release-partner-repack-win64-shippable: bhFpqmBjTEmJK4DzygTsOA + release-snap-repackage-icecat: EoLXXv1qRkKj6rU_2azQsA + release-source-checksums-signing-icecat-source/opt: VPfgmF02TNeEH19HWP5M0g + release-source-icecat-source/opt: M4l4y4c8TF6IvfP9zh9S4Q + release-source-signing-icecat-source/opt: NIIHiv3PTk-o6KDTeILXzg + release-update-verify-config-icecat-linux: bB6C7QpyRKq3MoymDx_kDw + release-update-verify-config-icecat-linux64: QlU5GAigRN20gcRdPZBMIA + release-update-verify-config-icecat-macosx64: K_wZnwvVQLKQ-X3qNsWdbQ + release-update-verify-config-icecat-win32: H3plKMoVSSeEp03LlAKutA + release-update-verify-config-icecat-win64: QGGc0Kq0R-ysDeZtfIYivA + release-update-verify-config-icecat-win64-aarch64: bWPCTRvITKykcVTG6L-TnA + release-update-verify-config-next-icecat-next-linux: NGAXKtk0SRGkPsVFAst42A + release-update-verify-config-next-icecat-next-linux64: chkbhUumRN-xRXST4CZrvQ + release-update-verify-config-next-icecat-next-macosx64: fNsyVsRERsy6NKKdi97bvw + release-update-verify-config-next-icecat-next-win32: WVA0LHXXTSux4-e0Cm_zQw + release-update-verify-config-next-icecat-next-win64: JJfMm-t6QCaG8tt0VM2kmw + release-update-verify-icecat-linux-1/16: YjLt9tyhRB-tvNt5ljkkaw + release-update-verify-icecat-linux-10/16: WeX4VP1bT6200ozkaBg6Ig + release-update-verify-icecat-linux-11/16: K_8npn37TRyqWIryJyYMjg + release-update-verify-icecat-linux-12/16: Fq--3hJ4QHukKM9WrP93UQ + release-update-verify-icecat-linux-13/16: Nzt54FIRRG6gohJzI04wYw + release-update-verify-icecat-linux-14/16: caiCx0GqR_6chr0O7uyiKg + release-update-verify-icecat-linux-15/16: LtKJINWjQ-y3GTesc59k5g + release-update-verify-icecat-linux-16/16: TkiEcCe1Smy2ACTgkWlO4Q + release-update-verify-icecat-linux-2/16: RkWU_84VT_mf4_4aRJg9JQ + release-update-verify-icecat-linux-3/16: ZTz6Rv_aTfW1dad9Td_BAg + release-update-verify-icecat-linux-4/16: H4dPCwNaTm2EJijrEUjC0A + release-update-verify-icecat-linux-5/16: dHtNpYPmQ6CRJkjakDnb-Q + release-update-verify-icecat-linux-6/16: A3NHJxxaS9ed62oW3rPenA + release-update-verify-icecat-linux-7/16: LoD3_dnmQhGF2IUsUuk9qA + release-update-verify-icecat-linux-8/16: H4sMH2ZdQYmo3V8Kev7sEw + release-update-verify-icecat-linux-9/16: IGVCBfJ_QcKf7fUG4H3pSw + release-update-verify-icecat-linux64-1/16: B1vrf9PkQpeusmKkt7PeQg + release-update-verify-icecat-linux64-10/16: ElHyovWcT4ikZcJiWsn2jQ + release-update-verify-icecat-linux64-11/16: A4Fuv6BESz2QCyhkaJ8NwQ + release-update-verify-icecat-linux64-12/16: JOQEojAyR8C0Dm-Pr-WqYw + release-update-verify-icecat-linux64-13/16: ZnyRyrvmTlCWI-Hs0i77Cw + release-update-verify-icecat-linux64-14/16: KytNRUP1T5uhuL8_QvXeYA + release-update-verify-icecat-linux64-15/16: WzyreA7WRBaszSv8NMMfMg + release-update-verify-icecat-linux64-16/16: eTMe8LM5RDK_PZ5BNc9-KQ + release-update-verify-icecat-linux64-2/16: CcP5kb0mThixwe3LkMu0-g + release-update-verify-icecat-linux64-3/16: Ede7jOw3RMKA7lNMaKX_Xg + release-update-verify-icecat-linux64-4/16: eAD5cWD2RA6TjjfBQkgBOg + release-update-verify-icecat-linux64-5/16: ZEA2shsAQ3-pKd5Zf6KvjQ + release-update-verify-icecat-linux64-6/16: HZ1J96udSieuzMHmZxf3fw + release-update-verify-icecat-linux64-7/16: X0UFTpZuRem6XiIS8zRlGw + release-update-verify-icecat-linux64-8/16: QEHMS0wwTqOgpPCLVbK45Q + release-update-verify-icecat-linux64-9/16: VZLKnJE8Q-uQ01xffk3ecA + release-update-verify-icecat-macosx64-1/30: a6LoToIiS-yIueMXEb4SPg + release-update-verify-icecat-macosx64-10/30: afytPe3OQyWJf1xcmSWvwA + release-update-verify-icecat-macosx64-11/30: C0qvRRnrRm2lqKYwdE297w + release-update-verify-icecat-macosx64-12/30: SbNAWoKmTyuXire64CX9Pw + release-update-verify-icecat-macosx64-13/30: CZ5VaI5ORUurPcpDusUfkg + release-update-verify-icecat-macosx64-14/30: QLt_O4xBRcmBFXUV5vqdqw + release-update-verify-icecat-macosx64-15/30: DFS0j7RkSL6-qQn99jC8Lw + release-update-verify-icecat-macosx64-16/30: YS8axiPUTnOys60ZuVx2lg + release-update-verify-icecat-macosx64-17/30: ecITe2p-T-O3t0xTAA1rrg + release-update-verify-icecat-macosx64-18/30: H_ArjdmvRlmVx9mCAx--EQ + release-update-verify-icecat-macosx64-19/30: CMzaR34ATee3GbzLnPsJqA + release-update-verify-icecat-macosx64-2/30: ACu1HLsJSs2Ho7-6l8qeNw + release-update-verify-icecat-macosx64-20/30: HxzjY7h1R225MzltGvbSdw + release-update-verify-icecat-macosx64-21/30: R7aZUBUWQtCRrVspzWr2_Q + release-update-verify-icecat-macosx64-22/30: Z_LYZaxLTNmS9LFtTxANKA + release-update-verify-icecat-macosx64-23/30: cDiUI5gcSg6n46G7L2BkQA + release-update-verify-icecat-macosx64-24/30: BetH6fPbTtWDVHbgop_RBg + release-update-verify-icecat-macosx64-25/30: JCQGHL-gQmirg-Onw3vtHw + release-update-verify-icecat-macosx64-26/30: P6g8Oa5pTEigB5aQdsVQtQ + release-update-verify-icecat-macosx64-27/30: GKo_xCzORFi3HH05nKS44w + release-update-verify-icecat-macosx64-28/30: QWV17YObRmWU4_kLu8K-rA + release-update-verify-icecat-macosx64-29/30: TNtv2KTfSbaGLWDG_jZeKw + release-update-verify-icecat-macosx64-3/30: NDWJ4bdSR2uqyBe49FBiZg + release-update-verify-icecat-macosx64-30/30: JzKPYlWHR7a351-VQ8qP9Q + release-update-verify-icecat-macosx64-4/30: Y-8yktc5RCqzGg30sdT29w + release-update-verify-icecat-macosx64-5/30: ChM9Jh8PSx2Hk74Fbn5jvQ + release-update-verify-icecat-macosx64-6/30: XhW-v0cwRGOF-mudHyCt-A + release-update-verify-icecat-macosx64-7/30: QcVdksoURSGa27Kf880Bwg + release-update-verify-icecat-macosx64-8/30: fcsEnkoHRlekmx8cPLBLvw + release-update-verify-icecat-macosx64-9/30: JI91ereaR3SNH0tZF7Huog + release-update-verify-icecat-next-linux-1/12: KfeF7FKLRc-w5VYH6NuA-A + release-update-verify-icecat-next-linux-10/12: IO0-yfEwRlqU00dkt1nfGw + release-update-verify-icecat-next-linux-11/12: QTzr9_IJTTCzEac-EKdh-w + release-update-verify-icecat-next-linux-12/12: QFQ0OZlgRVK3tdT1Po2Y_Q + release-update-verify-icecat-next-linux-2/12: YwW9N742RjikPFT8OwedZQ + release-update-verify-icecat-next-linux-3/12: WPzJmSRPRoiuyfRS12CIqA + release-update-verify-icecat-next-linux-4/12: CrS7PmcrSGOGqN5EviL43w + release-update-verify-icecat-next-linux-5/12: HDxW4wtHQd2d852T5AUUsQ + release-update-verify-icecat-next-linux-6/12: G_Vf_kAnSYSumKNNk3GfVg + release-update-verify-icecat-next-linux-7/12: Jj7icAjvQmCMowvIipyKnQ + release-update-verify-icecat-next-linux-8/12: E__j6hSjR3manycvyRFoUA + release-update-verify-icecat-next-linux-9/12: V-R2ZhIvRpmoDcorP51eNA + release-update-verify-icecat-next-linux64-1/12: fE0xSrK_QOeXpBB0MregCA + release-update-verify-icecat-next-linux64-10/12: bAAvasQSRJ2D5Q7kZ6S1ag + release-update-verify-icecat-next-linux64-11/12: GM61Mr2QT6iQDL1csZitFg + release-update-verify-icecat-next-linux64-12/12: dhzf8WvWTz-kx0zkZaQ-jw + release-update-verify-icecat-next-linux64-2/12: SxnZIuU0SVeIY1YBLP3GAQ + release-update-verify-icecat-next-linux64-3/12: O7nUiwFeQammOAnV_NmlMA + release-update-verify-icecat-next-linux64-4/12: f2ZHfKyHTgmXFtXOuel5tA + release-update-verify-icecat-next-linux64-5/12: XnuQ0RRUQsaiwH0nJdhQog + release-update-verify-icecat-next-linux64-6/12: ZufeByAWTt-lnDwNi1Dm_Q + release-update-verify-icecat-next-linux64-7/12: D8U4uqB6Q5GovC95TEzTCA + release-update-verify-icecat-next-linux64-8/12: Fn8ACv6uR1ysryRN7gGFrQ + release-update-verify-icecat-next-linux64-9/12: WSBR_w3QSZqsC6CVZYiYvA + release-update-verify-icecat-next-macosx64-1/12: F5Qb5K0cR7y8XQhrfRcTWg + release-update-verify-icecat-next-macosx64-10/12: TDdgdaLuQKeSZIU-O5QsZQ + release-update-verify-icecat-next-macosx64-11/12: B2qhbULZQDmrseN8HQJdcw + release-update-verify-icecat-next-macosx64-12/12: BO6PhF6nQAq0SEXZLTZXaA + release-update-verify-icecat-next-macosx64-2/12: enwxeUlOSiuLaWBRu2FjCA + release-update-verify-icecat-next-macosx64-3/12: AWrVh00eQMaOZCdeJNOWrA + release-update-verify-icecat-next-macosx64-4/12: eU4RX603TI-t5fkMNScvkw + release-update-verify-icecat-next-macosx64-5/12: VRSQuvm1QnC9WEUIuriYCg + release-update-verify-icecat-next-macosx64-6/12: WnBj61UJSFKzlJ_m9b9PAQ + release-update-verify-icecat-next-macosx64-7/12: QLMlsd-LRhSHh0GTy2x6WA + release-update-verify-icecat-next-macosx64-8/12: Lw8vD1QlQHqq8n4ipAmnWw + release-update-verify-icecat-next-macosx64-9/12: N-SFOORdRruVnkYPaPQG2Q + release-update-verify-icecat-next-win32-1/12: CZpDid9kSUCZOC3Pb5Spzg + release-update-verify-icecat-next-win32-10/12: f0_DEgWnTfy0ERctXNYmgg + release-update-verify-icecat-next-win32-11/12: ApzGW2gYRySYnpizVb-cMQ + release-update-verify-icecat-next-win32-12/12: LhgZYVGGTk6TZNCDE_erxw + release-update-verify-icecat-next-win32-2/12: c96S-GaDS_Galff4K8OYhg + release-update-verify-icecat-next-win32-3/12: T8W3UX7UTPiVeyfGDspVGw + release-update-verify-icecat-next-win32-4/12: etr5qvbBRomT-U3wrqFUGg + release-update-verify-icecat-next-win32-5/12: ZO9erSx8TSKB-BlEOXWJSw + release-update-verify-icecat-next-win32-6/12: DYaJIp6JRBWpUuMSmBo-GA + release-update-verify-icecat-next-win32-7/12: cLgo2HMTRBm6_S1l7pDzew + release-update-verify-icecat-next-win32-8/12: H2LN2wJYSNe0sRXte3q8sA + release-update-verify-icecat-next-win32-9/12: S1BhboudQZmOEBU_5Cb2sQ + release-update-verify-icecat-next-win64-1/12: fe1CuoyiT4epV1m0ZXLQKw + release-update-verify-icecat-next-win64-10/12: UZTTI60BRKyuaeRxleO1nQ + release-update-verify-icecat-next-win64-11/12: NXr94I9xTymvY6PhGYNvEQ + release-update-verify-icecat-next-win64-12/12: Lttzy0PeSgCh9_EYfTcMCQ + release-update-verify-icecat-next-win64-2/12: QUUIuvcLQnetNzrD1ccUfg + release-update-verify-icecat-next-win64-3/12: YYI9H9cAQumcINjmKA-wUw + release-update-verify-icecat-next-win64-4/12: Og-018AgSxKG7y1PzYp4GA + release-update-verify-icecat-next-win64-5/12: Q05fFxogSc27tCOYeBOtlA + release-update-verify-icecat-next-win64-6/12: aJ0mr7lTSyqV_rnFhs9u7Q + release-update-verify-icecat-next-win64-7/12: DIlJGc4PT-6ZcFRM5xso-Q + release-update-verify-icecat-next-win64-8/12: A_uCBRbeT9uCPPFVS2RxAg + release-update-verify-icecat-next-win64-9/12: TU8NS6eYTbyo2zRuWYYvVg + release-update-verify-icecat-win32-1/16: FWOxfFz0Rwq33XgVfXjksQ + release-update-verify-icecat-win32-10/16: e2mMIq8ER2mhau8Dysi4gg + release-update-verify-icecat-win32-11/16: Qxdqxg72TImGbdaDhh6umg + release-update-verify-icecat-win32-12/16: br_d4dllQdiVHQP5F05W7A + release-update-verify-icecat-win32-13/16: CVsOzoAjSJOlw4AMo99_sQ + release-update-verify-icecat-win32-14/16: I1dYQpDGTQSg3cRbkS78OQ + release-update-verify-icecat-win32-15/16: GSG1a0_vT1Wd1ksVLUYtCQ + release-update-verify-icecat-win32-16/16: bM3oK3HbRFePvS0Nhd8LzA + release-update-verify-icecat-win32-2/16: ZFsZRbroS32bHKuq7t9lnw + release-update-verify-icecat-win32-3/16: PR959-9rQEyOX4zKe8r3hQ + release-update-verify-icecat-win32-4/16: K9N1QNC7Q1SIi8t-EMskLA + release-update-verify-icecat-win32-5/16: WP0Uz9IMR8emDtQyX1n5mw + release-update-verify-icecat-win32-6/16: KEQhcVXpSrGg8UXlULsz7Q + release-update-verify-icecat-win32-7/16: QdAZ2ReLTUCf2t-H-kYRcw + release-update-verify-icecat-win32-8/16: UAIhADEkRN-77Hp5ICUfvw + release-update-verify-icecat-win32-9/16: XL85t_Q0Ru-MTsEcQzkupQ + release-update-verify-icecat-win64-1/16: Xw9ZtMaTQVuluWhLkzRFkg + release-update-verify-icecat-win64-10/16: MGFvIIgXQpWRjncfqY3IGw + release-update-verify-icecat-win64-11/16: FRSAEY8PS5qmw8lconCS0Q + release-update-verify-icecat-win64-12/16: dvQQBA4iTGqrFG9ubtOzKg + release-update-verify-icecat-win64-13/16: QUrxGfAzSSa8HtIqaV2v0w + release-update-verify-icecat-win64-14/16: FpmiWZJsSPqUmeWfwNfiCg + release-update-verify-icecat-win64-15/16: TKC_rfkuTVawLCN5Et8rFA + release-update-verify-icecat-win64-16/16: EZO3PTnYRRSqPCiIzN03ww + release-update-verify-icecat-win64-2/16: Hq-zJERCTJ-z5pB7MRwbRQ + release-update-verify-icecat-win64-3/16: Ws8bDFdOQpORDLdM4-KUNQ + release-update-verify-icecat-win64-4/16: I4n0QbYQReaTT2BVXTSffQ + release-update-verify-icecat-win64-5/16: YVsP0wDRS4i-TCY8Y91kJg + release-update-verify-icecat-win64-6/16: Vt833rJVT8CLGWVgHGQc1Q + release-update-verify-icecat-win64-7/16: Akq-cDEpRG6WTyYm1rBb1w + release-update-verify-icecat-win64-8/16: Y_8NMGpYR9yoRb6kzxxP7Q + release-update-verify-icecat-win64-9/16: ZeR2ue2SRWexaLZhYaZmRA + release-update-verify-icecat-win64-aarch64-1/16: RkQRm9-dSBCjxFCOqiKg7Q + release-update-verify-icecat-win64-aarch64-10/16: JXtWxV3tS3CSqk0tuhrxGA + release-update-verify-icecat-win64-aarch64-11/16: H1ft77JsQt6n29VAGGLqkg + release-update-verify-icecat-win64-aarch64-12/16: FmuaEy1WTS6OsFVQY6mSyw + release-update-verify-icecat-win64-aarch64-13/16: K1x8an7iQdyf99OLZw8AQQ + release-update-verify-icecat-win64-aarch64-14/16: FDmwR6d5SxShdna2mFWg3Q + release-update-verify-icecat-win64-aarch64-15/16: K3ygZGo3RTSYcGJm6_VNqQ + release-update-verify-icecat-win64-aarch64-16/16: epIW7rrCQAiWU10IbAvHIw + release-update-verify-icecat-win64-aarch64-2/16: VVEluTeuQ3KkcE8_LbEkYA + release-update-verify-icecat-win64-aarch64-3/16: MP6RmcBjTxivSzmBFHiajA + release-update-verify-icecat-win64-aarch64-4/16: PScLYdpqS-q1m1RDlpLsYg + release-update-verify-icecat-win64-aarch64-5/16: MdimzCqSQHm0QX_yK01nww + release-update-verify-icecat-win64-aarch64-6/16: J-6EZzNcSRm6n_dFmVmsag + release-update-verify-icecat-win64-aarch64-7/16: FCrun5rQRZa8MGxkEemHjg + release-update-verify-icecat-win64-aarch64-8/16: eLkcE7OJQcWrBn229H87tw + release-update-verify-icecat-win64-aarch64-9/16: OZKXlDtyS8G_A53Z5O6SDQ + repackage-deb-l10n-ach-linux64-shippable/opt: Y0MHtd3BTtmf90K-SWjYLg + repackage-deb-l10n-af-linux64-shippable/opt: MzsmZ7mhSZqvTHnu4Gm2HQ + repackage-deb-l10n-an-linux64-shippable/opt: Pcm-9tgaRgaYgr3uQ-QZTw + repackage-deb-l10n-ar-linux64-shippable/opt: IRbXtcPiQ7W3vWEqIqIUYw + repackage-deb-l10n-ast-linux64-shippable/opt: VXnqiv0WTMy8b7sZ1areOA + repackage-deb-l10n-az-linux64-shippable/opt: VXG27CCsSASGAlmPpuen4w + repackage-deb-l10n-be-linux64-shippable/opt: FvoMaOqKQFiDTB2XbaNBgA + repackage-deb-l10n-bg-linux64-shippable/opt: RXCP7lzxQW-U8w1AoYM9Bg + repackage-deb-l10n-bn-linux64-shippable/opt: arO_sUlNR3-jJpTo68AHdQ + repackage-deb-l10n-br-linux64-shippable/opt: RLNxkWj8QKuPdP198udtiw + repackage-deb-l10n-bs-linux64-shippable/opt: BiSHOAkbSHSohFn81yw9gQ + repackage-deb-l10n-ca-linux64-shippable/opt: QbFuZ7SEQLKSD4cGZMzslg + repackage-deb-l10n-ca-valencia-linux64-shippable/opt: GfmRAr60TYaeyD1o7DF1fA + repackage-deb-l10n-cak-linux64-shippable/opt: fSsV-FZ1T0i5RIPte2aOBg + repackage-deb-l10n-cs-linux64-shippable/opt: IbbSME9jTXKveG1p9tQD3A + repackage-deb-l10n-cy-linux64-shippable/opt: axWveB-ERSa37bHQ5vrmRg + repackage-deb-l10n-da-linux64-shippable/opt: F9RT6FOxS724Nzv1zqnKlA + repackage-deb-l10n-de-linux64-shippable/opt: NOfpM6mnQ8uy5dx1QspEpQ + repackage-deb-l10n-dsb-linux64-shippable/opt: X114zrB0RiiepH6BmAOzkg + repackage-deb-l10n-el-linux64-shippable/opt: ckJGfWDrT5uYHfLBVS2oMQ + repackage-deb-l10n-en-CA-linux64-shippable/opt: IcQooC2WSbOBHoY0uJqb0Q + repackage-deb-l10n-en-GB-linux64-shippable/opt: Y7K1LnF9T82zo3i9cFWQxg + repackage-deb-l10n-eo-linux64-shippable/opt: FsoIdL6NTSuiBTIOiW_Klg + repackage-deb-l10n-es-AR-linux64-shippable/opt: JfRj28-OQmO2DYVQwjAkrw + repackage-deb-l10n-es-CL-linux64-shippable/opt: OWKuocOcSje-OqZZ_lOUyQ + repackage-deb-l10n-es-ES-linux64-shippable/opt: T35FvSW3S3mlGLgAhDixFw + repackage-deb-l10n-es-MX-linux64-shippable/opt: c64oZWWcQP6pRWtvfSxMjw + repackage-deb-l10n-et-linux64-shippable/opt: VA6BxAU8QuuNmaCOFyuFPQ + repackage-deb-l10n-eu-linux64-shippable/opt: KImVaaNeTmK-U-s8pwicwQ + repackage-deb-l10n-fa-linux64-shippable/opt: KywRpEOLSKOCK5E2v_vnPQ + repackage-deb-l10n-ff-linux64-shippable/opt: VgyrPRTXS3KJvpEGhDbwcA + repackage-deb-l10n-fi-linux64-shippable/opt: G29QMNnYThq-OrVxCwLz9g + repackage-deb-l10n-fr-linux64-shippable/opt: SSU9BvlyQpCDrsridThbDQ + repackage-deb-l10n-fur-linux64-shippable/opt: D_0c-CbVTli_mYrR0uR_Ow + repackage-deb-l10n-fy-NL-linux64-shippable/opt: Rxa4xlskQliHUYxQkoQAog + repackage-deb-l10n-ga-IE-linux64-shippable/opt: BR_3Z0CWQz6_R6ea3XZnDg + repackage-deb-l10n-gd-linux64-shippable/opt: JE935SJkRIi9wwsGCPxkWw + repackage-deb-l10n-gl-linux64-shippable/opt: IbQV_DhBRBKkKy3qQkhOMA + repackage-deb-l10n-gn-linux64-shippable/opt: Wpjt4qnUS6eYqISgUvYM-Q + repackage-deb-l10n-gu-IN-linux64-shippable/opt: Htqx8IIPTPGvwqqSaH6K2A + repackage-deb-l10n-he-linux64-shippable/opt: bZe3gjKDQ2qo7nBsKN60ng + repackage-deb-l10n-hi-IN-linux64-shippable/opt: MGejH6mdQQe2h0ZSdqC-IA + repackage-deb-l10n-hr-linux64-shippable/opt: NytvrswqQsWL-zV8ABOi5A + repackage-deb-l10n-hsb-linux64-shippable/opt: C6t-B0kHQXizuRtwxpKQDQ + repackage-deb-l10n-hu-linux64-shippable/opt: UDgOHQ3kRwih_q4k27WAbA + repackage-deb-l10n-hy-AM-linux64-shippable/opt: L8KTo1fASEa72OaShUPRTQ + repackage-deb-l10n-ia-linux64-shippable/opt: JfII6O5xQCe4c-VMPNxA6A + repackage-deb-l10n-id-linux64-shippable/opt: alW5ebsLRpaC05yMyifYrA + repackage-deb-l10n-is-linux64-shippable/opt: L7lJx18_T8WAY7LXF2oOAg + repackage-deb-l10n-it-linux64-shippable/opt: UaipFC2-SNyWSwdKnU0SBg + repackage-deb-l10n-ja-linux64-shippable/opt: Voagk68yS6-hQIdZoslkhQ + repackage-deb-l10n-ka-linux64-shippable/opt: WmyDaXydQV-lN6QVV9yEnQ + repackage-deb-l10n-kab-linux64-shippable/opt: Na2kOV6XR6qyGQl5TQn8lQ + repackage-deb-l10n-kk-linux64-shippable/opt: I5Ro8ztyQuuJRp09ciACDg + repackage-deb-l10n-km-linux64-shippable/opt: d9vohNadRpu3xz83zQpQ5g + repackage-deb-l10n-kn-linux64-shippable/opt: V_8aET2gRaaYg1tc7k3HUw + repackage-deb-l10n-ko-linux64-shippable/opt: QAvzEeaoQ-6IhrSMbFksOQ + repackage-deb-l10n-lij-linux64-shippable/opt: KgM9XBn5SRKpAsjV-LhJEg + repackage-deb-l10n-lt-linux64-shippable/opt: Ytgu3GLHQSOpyZpfedQI8A + repackage-deb-l10n-lv-linux64-shippable/opt: HRpyDkL6SYexBUJo1XqLOQ + repackage-deb-l10n-mk-linux64-shippable/opt: DM4jYo82SHqLNmJUXLiY1g + repackage-deb-l10n-mr-linux64-shippable/opt: fl23ynnfRIqsWUub-cSU5A + repackage-deb-l10n-ms-linux64-shippable/opt: O55k3e_CTnKKMdvPKO1XUw + repackage-deb-l10n-my-linux64-shippable/opt: YRAuz4wBT-WmuvZDDoQioQ + repackage-deb-l10n-nb-NO-linux64-shippable/opt: NicKneNIRESNSr9bF4oNXg + repackage-deb-l10n-ne-NP-linux64-shippable/opt: CIB6olV_QsmH7ZLH_vc_4g + repackage-deb-l10n-nl-linux64-shippable/opt: fGA_V6aDR_6Kisml3RsVRA + repackage-deb-l10n-nn-NO-linux64-shippable/opt: A2U6_s6bRs6vX7xML4k5Rw + repackage-deb-l10n-oc-linux64-shippable/opt: VHg9GW_zQAON7sZHqsxRLQ + repackage-deb-l10n-pa-IN-linux64-shippable/opt: Ce3AYFmhStWgtnF4uQIkrw + repackage-deb-l10n-pl-linux64-shippable/opt: Xx3EiDSFSr6B7fBcTz8blQ + repackage-deb-l10n-pt-BR-linux64-shippable/opt: XaeDy9zoTfO1ccis9BR8Kg + repackage-deb-l10n-pt-PT-linux64-shippable/opt: ZqPiNpsySJy8sinUBcm_Dw + repackage-deb-l10n-rm-linux64-shippable/opt: Fu7Q-AaFRlmnCCqgoraqIQ + repackage-deb-l10n-ro-linux64-shippable/opt: fBPKFd6cQWmqxGR0GYPK6g + repackage-deb-l10n-ru-linux64-shippable/opt: TvRYI7WHTpqVmolC22dV3g + repackage-deb-l10n-sc-linux64-shippable/opt: fplpgPGdQEOKwVKbikaQ4g + repackage-deb-l10n-sco-linux64-shippable/opt: WR6-2jSzRF-iWu-epE9Vmg + repackage-deb-l10n-si-linux64-shippable/opt: AWTOPXOrTQyf0PGUESVbIQ + repackage-deb-l10n-sk-linux64-shippable/opt: ZDjrxxdORQ2BCHc2PZInYA + repackage-deb-l10n-sl-linux64-shippable/opt: V81YCONsQMWsE5DcGQ2wvg + repackage-deb-l10n-son-linux64-shippable/opt: ZhvyTmIQQZCxXz_d0I9_9A + repackage-deb-l10n-sq-linux64-shippable/opt: U_PtN8vqSamFmQCziZoxeA + repackage-deb-l10n-sr-linux64-shippable/opt: FNhEn4LeT4iVNS1bT35LhQ + repackage-deb-l10n-sv-SE-linux64-shippable/opt: ZBBV6qz6RcWUU9ggPaIC5g + repackage-deb-l10n-szl-linux64-shippable/opt: AsRtuVWjSWSs-2acMEfO-g + repackage-deb-l10n-ta-linux64-shippable/opt: eRIFdP9lTbO_DrbAz5dCJw + repackage-deb-l10n-te-linux64-shippable/opt: f4r1-QtKT76FX-5c52aHBA + repackage-deb-l10n-tg-linux64-shippable/opt: FX9E0Ix5QgSOnzcKidOZxg + repackage-deb-l10n-th-linux64-shippable/opt: P0WmlhXSQ5yxI4SfO2-K5w + repackage-deb-l10n-tl-linux64-shippable/opt: GIRpqhiTTAGXVFD9ydvl6g + repackage-deb-l10n-tr-linux64-shippable/opt: N2jbHPIES9mY-69tY0u15w + repackage-deb-l10n-trs-linux64-shippable/opt: f59RmnANR1eoqQtn84sxbQ + repackage-deb-l10n-uk-linux64-shippable/opt: PoZGJlj6RuqCh9N1vxJ5kw + repackage-deb-l10n-ur-linux64-shippable/opt: QehTvgVdQpCkbdJYW00g6g + repackage-deb-l10n-uz-linux64-shippable/opt: V3jUct6oSZitbzAoMsvAhQ + repackage-deb-l10n-vi-linux64-shippable/opt: J8NGJVMhT3G-KILfl1C7rA + repackage-deb-l10n-xh-linux64-shippable/opt: CrzdrWc2SdmD5ycNmcqVZA + repackage-deb-l10n-zh-CN-linux64-shippable/opt: NZz7cA6FQwu3tivDFIMsCA + repackage-deb-l10n-zh-TW-linux64-shippable/opt: JCzUn07FT2248ujbV92geA + repackage-deb-linux-shippable/opt: BUf6Z_yNRDmHjjBtxGpyog + repackage-deb-linux64-shippable/opt: E0fCAzgMQkykWJ-YHFlOjQ + repackage-l10n-ach-linux-shippable/opt: MA6yYIn6SYW8ExlZKSaKFg + repackage-l10n-ach-linux64-shippable/opt: S7Ae95-lSo2UIu_-UwVRIQ + repackage-l10n-ach-macosx64-shippable/opt: E3VS4q11TUKTletTjh6ZoQ + repackage-l10n-ach-win32-shippable/opt: J8_zpVejQMu_5AYmxFS1Yg + repackage-l10n-ach-win64-aarch64-shippable/opt: KcEb_AaiRBqyMBo7FTuLag + repackage-l10n-ach-win64-shippable/opt: cEWPxstASgObhEY6icWblg + repackage-l10n-af-linux-shippable/opt: ID3wpDZXR6qPFdZ5zGMqpg + repackage-l10n-af-linux64-shippable/opt: HYGYHBOJTJa0QbbkQn8IEA + repackage-l10n-af-macosx64-shippable/opt: Wr9AwGqCSQa5GCJZkqhvZA + repackage-l10n-af-win32-shippable/opt: Vu2Dl5KCQ0udkJ81a4HRAQ + repackage-l10n-af-win64-aarch64-shippable/opt: PaJ18b34RMu8skKTLMxYNw + repackage-l10n-af-win64-shippable/opt: ZVHGSD6QT5mBgtKRUlgzZg + repackage-l10n-an-linux-shippable/opt: Vwc10LgXTi6dAjQJwN4edg + repackage-l10n-an-linux64-shippable/opt: amEImcEATsqlZk8qYhKcwQ + repackage-l10n-an-macosx64-shippable/opt: XX40je6NQoWSVWoASs53AA + repackage-l10n-an-win32-shippable/opt: TriT46PDQwq8HA5FacjtAQ + repackage-l10n-an-win64-aarch64-shippable/opt: f--qM_foQQiNG7yaIaD-ZA + repackage-l10n-an-win64-shippable/opt: TtXjGCJMRre-aIdZneM8BQ + repackage-l10n-ar-linux-shippable/opt: AEvT3g-KQaSpnGEFH0UnBQ + repackage-l10n-ar-linux64-shippable/opt: dhMzYG4wSwaI22mogC7lmQ + repackage-l10n-ar-macosx64-shippable/opt: eJnQ3DPWSluaHAKEll0PUA + repackage-l10n-ar-win32-shippable/opt: aJhnb1f8QPqaZe7AAbiv_g + repackage-l10n-ar-win64-aarch64-shippable/opt: E4jJYzM1Rz2lCPavw60Uxw + repackage-l10n-ar-win64-shippable/opt: GTQfhmarTR-ITTAUWMREAg + repackage-l10n-ast-linux-shippable/opt: BvJKnudiTO-NfxXgNSxYgA + repackage-l10n-ast-linux64-shippable/opt: PjUiPe67Tvmg3NWL6rv1Lg + repackage-l10n-ast-macosx64-shippable/opt: AFjOtWbhSteZ_BlUaWahpA + repackage-l10n-ast-win32-shippable/opt: N2liOvCiTLSoSn3gNMbQEQ + repackage-l10n-ast-win64-aarch64-shippable/opt: KPKcXx3_SKyjgzF9fUFl2Q + repackage-l10n-ast-win64-shippable/opt: OkwAwKvMRF-qLEMUdV65fg + repackage-l10n-az-linux-shippable/opt: AxzvdNdGTBeWH4yB6asypQ + repackage-l10n-az-linux64-shippable/opt: QO4Y95oPTEi-7PPVI3jnXQ + repackage-l10n-az-macosx64-shippable/opt: Yy6efFIjR_mxGOwLjP5k2g + repackage-l10n-az-win32-shippable/opt: Xe7y6V3vSkWknVk-2p0-fA + repackage-l10n-az-win64-aarch64-shippable/opt: IkblpVicQEC3M3fiHAByrA + repackage-l10n-az-win64-shippable/opt: CS-YmYicT8KVSAyeRtsOsg + repackage-l10n-be-linux-shippable/opt: fgR_oSKqQz-CfqKSo5YfsQ + repackage-l10n-be-linux64-shippable/opt: YUzBNlFuTJWx1WaPeSaQMA + repackage-l10n-be-macosx64-shippable/opt: fA3HociHSgeWZiMUFyvIvQ + repackage-l10n-be-win32-shippable/opt: eR2hUP6kSX2pcMIr6uuTlA + repackage-l10n-be-win64-aarch64-shippable/opt: IVHD-CTER2afzo_P7KqqbQ + repackage-l10n-be-win64-shippable/opt: PTfEJJKCQ7qIDU_6kHHTwQ + repackage-l10n-bg-linux-shippable/opt: X1wo54c_Rz6bHiN9ad7tww + repackage-l10n-bg-linux64-shippable/opt: Zmiyp8USRROVq7ntEvG_Xg + repackage-l10n-bg-macosx64-shippable/opt: RcxrN29GRRWF9_q51GLWHg + repackage-l10n-bg-win32-shippable/opt: G4rAt6MyQViX928BfAfQhA + repackage-l10n-bg-win64-aarch64-shippable/opt: GK7LKmDCTAyLaCCteirVeA + repackage-l10n-bg-win64-shippable/opt: ZGs5A0mFT8-7Nj2QgIM-VQ + repackage-l10n-bn-linux-shippable/opt: GdwjEl9XTA-7K109YZAkGw + repackage-l10n-bn-linux64-shippable/opt: JE9ax71bRWCF8ccRr9gMYQ + repackage-l10n-bn-macosx64-shippable/opt: Sgj0BQ5GT0qpggPaqPxinA + repackage-l10n-bn-win32-shippable/opt: DiLPlp1hSBS5xOVTrUgRAw + repackage-l10n-bn-win64-aarch64-shippable/opt: AvxbU5MFTSGwZW9vCTEJOw + repackage-l10n-bn-win64-shippable/opt: ElNFLq6SR6C2ljLgBJG2KA + repackage-l10n-br-linux-shippable/opt: fnScqXPXT5GmNnOYtsxcwQ + repackage-l10n-br-linux64-shippable/opt: Fms0rZ9nT3-4re56bhcZgA + repackage-l10n-br-macosx64-shippable/opt: U1Rj0EzoRbiBgMN0ump3iw + repackage-l10n-br-win32-shippable/opt: Sv3ZKlwfQaez4JlhvczWWw + repackage-l10n-br-win64-aarch64-shippable/opt: SkNutpX4RpSFZ9ug6chOww + repackage-l10n-br-win64-shippable/opt: LwKA4tryR6y1O3er4eRPGw + repackage-l10n-bs-linux-shippable/opt: V2oN75W0Tz253XjUg9WYfQ + repackage-l10n-bs-linux64-shippable/opt: TGiIlhV7SmieY2JcJTDUWg + repackage-l10n-bs-macosx64-shippable/opt: NHVonOOvThioKFAxolSFqA + repackage-l10n-bs-win32-shippable/opt: LvxEt--vRAGRkzlTnFPLhw + repackage-l10n-bs-win64-aarch64-shippable/opt: Ox_kC2BDTAazMWW7v8I6CA + repackage-l10n-bs-win64-shippable/opt: N9V_WsiiT8KWX946FpB3RA + repackage-l10n-ca-linux-shippable/opt: IyHeWwWnQA6FKqgzouWiZg + repackage-l10n-ca-linux64-shippable/opt: Hgc76906STeNc3B-e62HRw + repackage-l10n-ca-macosx64-shippable/opt: dp_K26hWRMGY5UBZCupU_Q + repackage-l10n-ca-valencia-linux-shippable/opt: az92Cy_gTOeHTffVYcTcJQ + repackage-l10n-ca-valencia-linux64-shippable/opt: TYPlX4pDTV6_i4p4koCHNQ + repackage-l10n-ca-valencia-macosx64-shippable/opt: K3CV_yjjRRKtatm5zBOoxw + repackage-l10n-ca-valencia-win32-shippable/opt: HzN0MvoWQySBMvjVnnimcg + repackage-l10n-ca-valencia-win64-aarch64-shippable/opt: ANiz-8m4TrmalntZHQm0VQ + repackage-l10n-ca-valencia-win64-shippable/opt: fEphKR38SpKzw5JV30NTtg + repackage-l10n-ca-win32-shippable/opt: IsXy84E2Q0C46zb1_jjNdg + repackage-l10n-ca-win64-aarch64-shippable/opt: FklqO5gmRyetq8hOl5Rk3A + repackage-l10n-ca-win64-shippable/opt: a97Zav99Q_yAIGoU03prRw + repackage-l10n-cak-linux-shippable/opt: W918zGpFTm-fKkLjCjYJ-A + repackage-l10n-cak-linux64-shippable/opt: Dqp9xN1CSfKickNji6jpGQ + repackage-l10n-cak-macosx64-shippable/opt: dnws-JY1RVCz8z42cSqDZg + repackage-l10n-cak-win32-shippable/opt: P6eKgRUvTUuQyiE1xFXHTQ + repackage-l10n-cak-win64-aarch64-shippable/opt: WH3eTCgVQVK7U2SwOU13zg + repackage-l10n-cak-win64-shippable/opt: BiL-HBX9SSKKqWvoF9KSMg + repackage-l10n-cs-linux-shippable/opt: LarHrQNrTiejxMpqLo1OWA + repackage-l10n-cs-linux64-shippable/opt: FR_DqK24S9C8JkHRMjO8EA + repackage-l10n-cs-macosx64-shippable/opt: TeHFfzI1T3OMGEodmBEtwA + repackage-l10n-cs-win32-shippable/opt: IH_b-3DzQUeauTxOCS0YIg + repackage-l10n-cs-win64-aarch64-shippable/opt: SYHNK1YoSna3rRJ7dqtOZg + repackage-l10n-cs-win64-shippable/opt: aG93VZ2XT4OXV69WXi5y_g + repackage-l10n-cy-linux-shippable/opt: ON0As2I5R5uWtWyl1r788g + repackage-l10n-cy-linux64-shippable/opt: a28N25FLQFaktrmY1LEt-g + repackage-l10n-cy-macosx64-shippable/opt: GP174BbzRr64CJ9cfhffgw + repackage-l10n-cy-win32-shippable/opt: SiDM-x2-QHu5kzznCcGUZQ + repackage-l10n-cy-win64-aarch64-shippable/opt: S4aDnLGTT7enWqfOvyVqsg + repackage-l10n-cy-win64-shippable/opt: X-pFCJc8RMqlxtkEsPhKxg + repackage-l10n-da-linux-shippable/opt: Ewoup2rLQPORNlnx0n3RCg + repackage-l10n-da-linux64-shippable/opt: XnuCCWJmQXaTadSI6vYhdA + repackage-l10n-da-macosx64-shippable/opt: Mr2NbUsKSp60bq__1qqE_g + repackage-l10n-da-win32-shippable/opt: e4GKg-69SimFUiqomOPNiQ + repackage-l10n-da-win64-aarch64-shippable/opt: URBQ7OTRQJi5QQccEloaMA + repackage-l10n-da-win64-shippable/opt: YlOg-bGGTji59L1KqM_DJA + repackage-l10n-de-linux-shippable/opt: GEn4DNyoTjCIfqK9pKOGIg + repackage-l10n-de-linux64-shippable/opt: c3UK1BCqTdWTlL0mtpezDw + repackage-l10n-de-macosx64-shippable/opt: CQCw0ozaSpeTQqOEEbBT3w + repackage-l10n-de-win32-shippable/opt: S7B9GJYtRJiyzBHwRs84ng + repackage-l10n-de-win64-aarch64-shippable/opt: NttS6NAlTtqvpdRy9nTYJQ + repackage-l10n-de-win64-shippable/opt: J34mv5qESqeBrAYlH1V1aA + repackage-l10n-dsb-linux-shippable/opt: aUP7emHTTZWK5yz47xbfwQ + repackage-l10n-dsb-linux64-shippable/opt: P57L8NcDR9uWIqz2eyvSjQ + repackage-l10n-dsb-macosx64-shippable/opt: YnlwZ3axReGIQWIqOiSjvg + repackage-l10n-dsb-win32-shippable/opt: B1Hwm3gPTGOJcACqHyr1zw + repackage-l10n-dsb-win64-aarch64-shippable/opt: aU8sl2lVTyGdApFKdW_hqQ + repackage-l10n-dsb-win64-shippable/opt: V7qKP_KESoW2NKodFmugjw + repackage-l10n-el-linux-shippable/opt: Viuket3zSFKgOzitfpiFwg + repackage-l10n-el-linux64-shippable/opt: IkfQsWs8SGyD5wLPIhmS6Q + repackage-l10n-el-macosx64-shippable/opt: NbppDqasSmKRXBVFeM1njw + repackage-l10n-el-win32-shippable/opt: SXzJbWLVQDqlRBBW5bCZFg + repackage-l10n-el-win64-aarch64-shippable/opt: f-GY4_ZXTCy4g863G-jBYw + repackage-l10n-el-win64-shippable/opt: MXs1LrZ4Rh-NB13lBwc9GA + repackage-l10n-en-CA-linux-shippable/opt: JT_iYs_5QnurxFSYGtKVXQ + repackage-l10n-en-CA-linux64-shippable/opt: LjjNY3MJQGKFQkRMjVni0A + repackage-l10n-en-CA-macosx64-shippable/opt: B7U3QdzLTYSkm0M1GYImyg + repackage-l10n-en-CA-win32-shippable/opt: L_PvAGF-S9yDwg06gmLODQ + repackage-l10n-en-CA-win64-aarch64-shippable/opt: PPMciiJxQL63ZdWh7PJC7g + repackage-l10n-en-CA-win64-shippable/opt: ReubpRQGRaWpT-0K0ytsfA + repackage-l10n-en-GB-linux-shippable/opt: B7K5MI_ORsCEdb7aLEbspA + repackage-l10n-en-GB-linux64-shippable/opt: NOjQQ7caQRGFcESrH41qVQ + repackage-l10n-en-GB-macosx64-shippable/opt: SMVpS5JQS8G2ZUMRUArBrA + repackage-l10n-en-GB-win32-shippable/opt: IoOfCpChTDC1ObDO1Z7xdQ + repackage-l10n-en-GB-win64-aarch64-shippable/opt: LlJUEh5PRvyvzcgkMEht2g + repackage-l10n-en-GB-win64-shippable/opt: Yhwp4iCUQkazOCwJViSZ1g + repackage-l10n-eo-linux-shippable/opt: Ga__i99-QUWOWCcuBEAslw + repackage-l10n-eo-linux64-shippable/opt: EcxQwsQDTvy238Y9-tKZpw + repackage-l10n-eo-macosx64-shippable/opt: Gcd5mmytSAK7IzvxNnEwsQ + repackage-l10n-eo-win32-shippable/opt: YXXu0zd7SBiri9apDDcQTw + repackage-l10n-eo-win64-aarch64-shippable/opt: TIdZrY-1QemiWfe6DHqlYg + repackage-l10n-eo-win64-shippable/opt: V-_nuEk4RzCnhLn_F4OpKw + repackage-l10n-es-AR-linux-shippable/opt: LreOCBJLQQmmOVu5ohLE0w + repackage-l10n-es-AR-linux64-shippable/opt: f3STkDyVQauoUKYpPLvhIQ + repackage-l10n-es-AR-macosx64-shippable/opt: Htdy8fxOQf6mdiIjT1P7fQ + repackage-l10n-es-AR-win32-shippable/opt: W-HUrdpdSGevk1chQLNwIA + repackage-l10n-es-AR-win64-aarch64-shippable/opt: EQMLCzLhTiKxcQcCZlHHyw + repackage-l10n-es-AR-win64-shippable/opt: QIAtIqV3QSm9wZbKYN4HBQ + repackage-l10n-es-CL-linux-shippable/opt: SQkh2QNYQ2aY-OQSRfMS9Q + repackage-l10n-es-CL-linux64-shippable/opt: dmUHipG6SX-ooG1EIw7ijg + repackage-l10n-es-CL-macosx64-shippable/opt: c02ZSb1NSd6EBX_PXW516g + repackage-l10n-es-CL-win32-shippable/opt: F322w4dMTm68hHCoEijIPg + repackage-l10n-es-CL-win64-aarch64-shippable/opt: FH2dAVvQQ5Gr_s8vCoKVzg + repackage-l10n-es-CL-win64-shippable/opt: Dw2gTai8Sxa906MxyoRnZw + repackage-l10n-es-ES-linux-shippable/opt: PIKZphtISKCo8q8_a7Hl0A + repackage-l10n-es-ES-linux64-shippable/opt: RDpJAKvWTaKesGhUeFrMCA + repackage-l10n-es-ES-macosx64-shippable/opt: Q8N-a6I7SSqrtptRFW8Ngg + repackage-l10n-es-ES-win32-shippable/opt: L6Ax6UgFT8WrAQpLCYq40w + repackage-l10n-es-ES-win64-aarch64-shippable/opt: D-rXKnBYSCK7bswkw9vJbQ + repackage-l10n-es-ES-win64-shippable/opt: Ksi8UpmiSVCuMH2BkziDSw + repackage-l10n-es-MX-linux-shippable/opt: TeZLdDVkRmOyAJuoXDCgLg + repackage-l10n-es-MX-linux64-shippable/opt: acyiAJJrQmmWDMarNrjrCw + repackage-l10n-es-MX-macosx64-shippable/opt: Z8nY2XULRR-MFc-UFwXwBg + repackage-l10n-es-MX-win32-shippable/opt: A6QPfZMKTguQX-y4myWvFA + repackage-l10n-es-MX-win64-aarch64-shippable/opt: dG5FkTvNQuW-sPFCTyezCw + repackage-l10n-es-MX-win64-shippable/opt: EaGE0BnnS4qEDvUN6zljuQ + repackage-l10n-et-linux-shippable/opt: RSHkem0wQHGR7Sb8IjQTZA + repackage-l10n-et-linux64-shippable/opt: PAbJy7ZPSwyVs6oAKLNdpA + repackage-l10n-et-macosx64-shippable/opt: XXucMWo_QWWNMZ3U4SFV6A + repackage-l10n-et-win32-shippable/opt: XGWoR5vjRcmNGqEITFq_Pw + repackage-l10n-et-win64-aarch64-shippable/opt: YgKXNxIKQGWmFee7Ld7eYA + repackage-l10n-et-win64-shippable/opt: BxP9kEjjRK-b_dnM2nuIDw + repackage-l10n-eu-linux-shippable/opt: OJ6uxThhSU-fDJra5cigYw + repackage-l10n-eu-linux64-shippable/opt: AIXl5x5kR8imbnrmS8PMyA + repackage-l10n-eu-macosx64-shippable/opt: SteD3NamTfe-StEt0bY6RQ + repackage-l10n-eu-win32-shippable/opt: Xt4ncLOERoWt1k_5zx17dw + repackage-l10n-eu-win64-aarch64-shippable/opt: EuOQ9mg4QIq4EYnNZ9SC-w + repackage-l10n-eu-win64-shippable/opt: SkGQO7nHRS-f69JyEnSiMQ + repackage-l10n-fa-linux-shippable/opt: L_YYaTpPTnGPSHVl_fS0gg + repackage-l10n-fa-linux64-shippable/opt: RERJGgytStuUc83TEj20JA + repackage-l10n-fa-macosx64-shippable/opt: chXaJhD1TRaisF5a_6v0GQ + repackage-l10n-fa-win32-shippable/opt: RL7DQfM8R9iXQQFSq4pWUg + repackage-l10n-fa-win64-aarch64-shippable/opt: UY-3mSx-TYmAiEFYiNaCWQ + repackage-l10n-fa-win64-shippable/opt: OWPdXf7sQ-GNV0_W6ib-gw + repackage-l10n-ff-linux-shippable/opt: e_dTjY0sQTGIKBwCqb0Kew + repackage-l10n-ff-linux64-shippable/opt: dw5wzB_qRa2KiGfH_PunOw + repackage-l10n-ff-macosx64-shippable/opt: FiC4AiZ-QtK_SMv2on2QxA + repackage-l10n-ff-win32-shippable/opt: R2ja3wuFQPa2tnbgUBlHuQ + repackage-l10n-ff-win64-aarch64-shippable/opt: Jdkbp4wCQBuhLAwO5gS1QQ + repackage-l10n-ff-win64-shippable/opt: amnSUqDxR0miMUTlRt1UXA + repackage-l10n-fi-linux-shippable/opt: LOrO32tORCSmOzeaiKAcng + repackage-l10n-fi-linux64-shippable/opt: Z-PirRILTsKokUEE2XnJdQ + repackage-l10n-fi-macosx64-shippable/opt: b3QqboNaTyOvkzjxOLdIyg + repackage-l10n-fi-win32-shippable/opt: cbGNbbD-Q06O0xlU_759PQ + repackage-l10n-fi-win64-aarch64-shippable/opt: QV128dfHSmmdOdTwCP-L0w + repackage-l10n-fi-win64-shippable/opt: dpPcThR6QTe4CApnoqga6Q + repackage-l10n-fr-linux-shippable/opt: D5lUJ13aQvWWhVig3EmtlQ + repackage-l10n-fr-linux64-shippable/opt: c7-t3H2cRk-Jc2vcO9lSQA + repackage-l10n-fr-macosx64-shippable/opt: dMBitXwlSACnnhPW_3A5-w + repackage-l10n-fr-win32-shippable/opt: L4ADLGI8RUSqDDFLsmdopQ + repackage-l10n-fr-win64-aarch64-shippable/opt: ds4cfITFSTaN6--tXF4Tdw + repackage-l10n-fr-win64-shippable/opt: BuFO35snQ-23njnCZjTc3A + repackage-l10n-fur-linux-shippable/opt: JL0UYwuVRT2ElckA4dWNHQ + repackage-l10n-fur-linux64-shippable/opt: bEjTQ8umSg26tc8rg3AC0A + repackage-l10n-fur-macosx64-shippable/opt: Q1KR7jvbR1a3pr1gm-APKg + repackage-l10n-fur-win32-shippable/opt: NDUglIThQFet20xSHZVMQw + repackage-l10n-fur-win64-aarch64-shippable/opt: UjOteky6SI-h1bYlJ-T7cA + repackage-l10n-fur-win64-shippable/opt: Bbom6aKuROW-1-IZpcHtwA + repackage-l10n-fy-NL-linux-shippable/opt: KuhK8kfHSgSa6jZhr0LXug + repackage-l10n-fy-NL-linux64-shippable/opt: M4wShbsvTV2Eaz2U5pfbZA + repackage-l10n-fy-NL-macosx64-shippable/opt: IEnAIZa_RUWVt3p5JuvPbA + repackage-l10n-fy-NL-win32-shippable/opt: BdjL1bBYSR-h5TQO5JVhJw + repackage-l10n-fy-NL-win64-aarch64-shippable/opt: fectuYehQU2M2mglgu0HrQ + repackage-l10n-fy-NL-win64-shippable/opt: LDpxvXATTcSLa0LKV8_GQg + repackage-l10n-ga-IE-linux-shippable/opt: d1x5fenuTKi4VmrlRzz2Jg + repackage-l10n-ga-IE-linux64-shippable/opt: NRML7Qe8TgGUSHRqpNGSCg + repackage-l10n-ga-IE-macosx64-shippable/opt: G2QMiHNGQAalAHzTVcZZWA + repackage-l10n-ga-IE-win32-shippable/opt: VgNw9UeDTPOXYvS4vlYung + repackage-l10n-ga-IE-win64-aarch64-shippable/opt: QiJrjtEXSRistdWudG-ALA + repackage-l10n-ga-IE-win64-shippable/opt: ZPLTOhaSSRGc7czCGe2Hpw + repackage-l10n-gd-linux-shippable/opt: auLAkDF6SsC30ocv67O9wg + repackage-l10n-gd-linux64-shippable/opt: UDJ_vaJhQqSHnzZf1VmSYA + repackage-l10n-gd-macosx64-shippable/opt: K3LiALBZQ0OnJcGuwU4LSw + repackage-l10n-gd-win32-shippable/opt: Hk-PyaydRIWOAXt7VuJ4xQ + repackage-l10n-gd-win64-aarch64-shippable/opt: MrmFABpuTNWIfl9ieM-xWw + repackage-l10n-gd-win64-shippable/opt: OBrcTlYLSouS_5STQsjOrw + repackage-l10n-gl-linux-shippable/opt: ADCof4roQTaOdvKc2cP3jQ + repackage-l10n-gl-linux64-shippable/opt: Ynb5BDhUR5GK5XaETuvTUQ + repackage-l10n-gl-macosx64-shippable/opt: Ma5GwF85SZKiRYErHCH66w + repackage-l10n-gl-win32-shippable/opt: B_MqDpV5QCmCbUSYoboQOA + repackage-l10n-gl-win64-aarch64-shippable/opt: YYioF20QRj64vnRSZVTiWg + repackage-l10n-gl-win64-shippable/opt: RyOF2v2-TBqP9jqEs-Kc-w + repackage-l10n-gn-linux-shippable/opt: bCJgcxsVTQG0nciGLgMbVA + repackage-l10n-gn-linux64-shippable/opt: KIFcXJoESq6qwxr8zGXjtQ + repackage-l10n-gn-macosx64-shippable/opt: Fd8lyaCoSQ-0STpOAqudCw + repackage-l10n-gn-win32-shippable/opt: BR7Oq5FsTB6Pg7rRsyNNAg + repackage-l10n-gn-win64-aarch64-shippable/opt: bvUD8XodSnuLgegIn6HNLw + repackage-l10n-gn-win64-shippable/opt: cB9KBVy7RiS6SOCfER3OxQ + repackage-l10n-gu-IN-linux-shippable/opt: TyLRVMG6RkKpYiIZ4qH5ug + repackage-l10n-gu-IN-linux64-shippable/opt: RFsAJJ5eTimmIj-CI4Bkwg + repackage-l10n-gu-IN-macosx64-shippable/opt: ZGjHVUO2QruCk4cYaFfMMA + repackage-l10n-gu-IN-win32-shippable/opt: MPm3o4haRmKwZmsAMZMMDw + repackage-l10n-gu-IN-win64-aarch64-shippable/opt: IOeUYu2FQXGwXK1REIzvrg + repackage-l10n-gu-IN-win64-shippable/opt: DYSMceb-Qg6_3fS-8BBCQw + repackage-l10n-he-linux-shippable/opt: e9JUrA37ReqOcGLn74lTcA + repackage-l10n-he-linux64-shippable/opt: K5B35knMSCeVM1IfPkMWrg + repackage-l10n-he-macosx64-shippable/opt: e2-GFuVoR7ueba0o3R6wsQ + repackage-l10n-he-win32-shippable/opt: fOk0-6usRLWmtnTWgcp3FA + repackage-l10n-he-win64-aarch64-shippable/opt: flBaNRPxSLWH1zl_MWs7Rg + repackage-l10n-he-win64-shippable/opt: WmGAgXOhSHupy_s0aiOlyQ + repackage-l10n-hi-IN-linux-shippable/opt: Zt_PAymxR1GtH3o9kBaOng + repackage-l10n-hi-IN-linux64-shippable/opt: IrYrlWKoR1ytedlhvmS_pA + repackage-l10n-hi-IN-macosx64-shippable/opt: U3LmF3mDQYOW3D6WKA7ckw + repackage-l10n-hi-IN-win32-shippable/opt: bHiqrb8pRkWgBAQBnpTTBw + repackage-l10n-hi-IN-win64-aarch64-shippable/opt: C_fWKExzRiCyQVmUq2u3Ww + repackage-l10n-hi-IN-win64-shippable/opt: Fjo5iRq3TPm5P-ITWnkBvg + repackage-l10n-hr-linux-shippable/opt: MdTuU0PrSI6C2md6prVZow + repackage-l10n-hr-linux64-shippable/opt: KEroKBMMSiWLWgeKD8w4Og + repackage-l10n-hr-macosx64-shippable/opt: UiKgq5a4RNqW4xaZ7RzU0A + repackage-l10n-hr-win32-shippable/opt: aJVDyuCsR1ieaxc24BeATA + repackage-l10n-hr-win64-aarch64-shippable/opt: SS6_GU_hSvyH38-btzPReg + repackage-l10n-hr-win64-shippable/opt: Ay2SM7K5QxGXvjA5FpguTw + repackage-l10n-hsb-linux-shippable/opt: YwH46xw_SSeOzECvR8vSvg + repackage-l10n-hsb-linux64-shippable/opt: fMkKvLVjQe2VtsTSmF-coQ + repackage-l10n-hsb-macosx64-shippable/opt: QPq00krkRsCMgkVDChegVQ + repackage-l10n-hsb-win32-shippable/opt: YwHEwJwOQdORydh1KgEelQ + repackage-l10n-hsb-win64-aarch64-shippable/opt: UiGhvaK4RAmbTTiHcEmo9w + repackage-l10n-hsb-win64-shippable/opt: Gu0B-8F8SImRhs5Q_Wo3Yw + repackage-l10n-hu-linux-shippable/opt: bqc0GAEWR-O3R-JDxIt4-Q + repackage-l10n-hu-linux64-shippable/opt: NBqHOjUaQpW0wvkvvUJnSA + repackage-l10n-hu-macosx64-shippable/opt: IX_Z-N4kSFWonD3o1AS-9w + repackage-l10n-hu-win32-shippable/opt: BQQANuLvR-Suzzwdn6C68w + repackage-l10n-hu-win64-aarch64-shippable/opt: OzHgPiHKR9CkOgashdh8xQ + repackage-l10n-hu-win64-shippable/opt: Ny3JSb0zQzejNFRHcGJoEw + repackage-l10n-hy-AM-linux-shippable/opt: VydsstjxSj6L558yJEADaA + repackage-l10n-hy-AM-linux64-shippable/opt: G6kyA6YhQ2mLQogjJaHvjg + repackage-l10n-hy-AM-macosx64-shippable/opt: KtCgWYjTQKS9Cc42HV4WgQ + repackage-l10n-hy-AM-win32-shippable/opt: OZ46H1YBRdy874XjDqTOBQ + repackage-l10n-hy-AM-win64-aarch64-shippable/opt: QqcVYSY9R723TWuvsGtzBg + repackage-l10n-hy-AM-win64-shippable/opt: PlJNxfe-QS-mnOJ4lBSGOA + repackage-l10n-ia-linux-shippable/opt: V71iY-RdQUGXL6zp67LRhA + repackage-l10n-ia-linux64-shippable/opt: Re-2-JgZRpy9baD9q-r7NA + repackage-l10n-ia-macosx64-shippable/opt: a5fqHzeuR0-gznR3tZal4w + repackage-l10n-ia-win32-shippable/opt: SmBg73eESYeCdw9XBLUwng + repackage-l10n-ia-win64-aarch64-shippable/opt: Wl8EhSBSRt-jsUSrgwh5PQ + repackage-l10n-ia-win64-shippable/opt: dbPmVlv2TCG1xp-O2pxqZg + repackage-l10n-id-linux-shippable/opt: ZB55gNFVQHC-Jtc9X6zjYw + repackage-l10n-id-linux64-shippable/opt: F9hvKMHyQfuKeZIZVTalGg + repackage-l10n-id-macosx64-shippable/opt: LHIyoAacR8SbeqEfuQvCzQ + repackage-l10n-id-win32-shippable/opt: BzHFxGA_SOao7kVe9cdJ0A + repackage-l10n-id-win64-aarch64-shippable/opt: YtuhqYYuTyiF0SxZlx4kAA + repackage-l10n-id-win64-shippable/opt: MKtnICpbQgmMusn7Ct0B7Q + repackage-l10n-is-linux-shippable/opt: V14s_SkGRTqij4PZHrF8-g + repackage-l10n-is-linux64-shippable/opt: AdFMw6shSva6vyyRWUsxLg + repackage-l10n-is-macosx64-shippable/opt: fYOlvEDIQS63R5-Cs77Cog + repackage-l10n-is-win32-shippable/opt: d2zpZhraRtugTW5ZGD0HxQ + repackage-l10n-is-win64-aarch64-shippable/opt: BATHTgrhSRmNnYDCm3HvBA + repackage-l10n-is-win64-shippable/opt: PD9kXBZ7TkmOxOeDNl8iJA + repackage-l10n-it-linux-shippable/opt: cjZJvLETRh-W32MJpEXMow + repackage-l10n-it-linux64-shippable/opt: WN1HzRAHQ366m31y20NhGQ + repackage-l10n-it-macosx64-shippable/opt: Tsz_yicmTyWTOYaQqPR91Q + repackage-l10n-it-win32-shippable/opt: Hw-O6uheQhW__wNtguyCgA + repackage-l10n-it-win64-aarch64-shippable/opt: dwD0pwaZSm6vvaLKbNOhzg + repackage-l10n-it-win64-shippable/opt: CKeFeWz0Qm2fFJqVIBvb8A + repackage-l10n-ja-JP-mac-macosx64-shippable/opt: EhKse8DWQ56zRENZ8XlKwA + repackage-l10n-ja-linux-shippable/opt: GYrLHR5xTEmWZ9eA73mDFw + repackage-l10n-ja-linux64-shippable/opt: XPoTfEzMTLmMMlkA-nO8RA + repackage-l10n-ja-win32-shippable/opt: E2yFf5-gTUe5PTsI5oiHKQ + repackage-l10n-ja-win64-aarch64-shippable/opt: SOI1Ef0uQcyI0L6HskYGxQ + repackage-l10n-ja-win64-shippable/opt: BO0QMDgjRsqFkGmfeJjimA + repackage-l10n-ka-linux-shippable/opt: KVwC4S2JQDWUtJz9sy9kjg + repackage-l10n-ka-linux64-shippable/opt: AHnNCahNQ3q7m5sXJ2HtiA + repackage-l10n-ka-macosx64-shippable/opt: F9XdSv0ORLWjfmGBNe3_yA + repackage-l10n-ka-win32-shippable/opt: ebiwUMDMRVqPZPoXreK88g + repackage-l10n-ka-win64-aarch64-shippable/opt: L29w0WsfQnOZJeCZZ6FYgg + repackage-l10n-ka-win64-shippable/opt: PtUkQ2zkQ9aSNehKtma7eQ + repackage-l10n-kab-linux-shippable/opt: eEDNhW-XQASputIpf801Kg + repackage-l10n-kab-linux64-shippable/opt: CaQsjF3IRxmkWIg3Uq6DCA + repackage-l10n-kab-macosx64-shippable/opt: THNQ64FaTkS_dH1tz98K6w + repackage-l10n-kab-win32-shippable/opt: NAzyWfjLQ727o0sa7tyvjw + repackage-l10n-kab-win64-aarch64-shippable/opt: crPzEpICTLmkbQbmWP4E5g + repackage-l10n-kab-win64-shippable/opt: DWwuWZX3RYyBZcN86STLsg + repackage-l10n-kk-linux-shippable/opt: AJeXqSh1SNSwC-qfHZq3oA + repackage-l10n-kk-linux64-shippable/opt: FgQBmxDDQ7Oo4OfASFgTyw + repackage-l10n-kk-macosx64-shippable/opt: bD9y9DBcQ0GCrLsx8BKYXg + repackage-l10n-kk-win32-shippable/opt: WEqH0iFISSWUwKehDoAqGA + repackage-l10n-kk-win64-aarch64-shippable/opt: ZbifEtd8QlKGH6O8W9K_2w + repackage-l10n-kk-win64-shippable/opt: EM37CCYuTuKAIe_ARQAM2w + repackage-l10n-km-linux-shippable/opt: IOgH-zOqT3O_vWe7mZceUw + repackage-l10n-km-linux64-shippable/opt: Dkpw5rvVQlS_Mqlo2uiJ-g + repackage-l10n-km-macosx64-shippable/opt: J9xETaF5RbykphTQgnDqCA + repackage-l10n-km-win32-shippable/opt: b9Jix7Z2R_28ve8Nf_lp7A + repackage-l10n-km-win64-aarch64-shippable/opt: WjbhN_swRpmEgGcjQ4ToIw + repackage-l10n-km-win64-shippable/opt: VdJdw-vNR-OYj3T6VmUsWg + repackage-l10n-kn-linux-shippable/opt: LB6SOG7eRnK-D6SBF_d_RA + repackage-l10n-kn-linux64-shippable/opt: W91FVXtDTd-JVIeT6E1Ylw + repackage-l10n-kn-macosx64-shippable/opt: f3AqUaNXSx2z6KlzOm-QyA + repackage-l10n-kn-win32-shippable/opt: W1fGH00fT2-zwwiOTcgl5A + repackage-l10n-kn-win64-aarch64-shippable/opt: ThFja9_0QzO76k1mvEPRnw + repackage-l10n-kn-win64-shippable/opt: eOKAEUhjRWOErpRLQa12Zg + repackage-l10n-ko-linux-shippable/opt: etHMFEJjSCiBElK7bGaaOg + repackage-l10n-ko-linux64-shippable/opt: ZCaWX-pbTOKJ_5tZZ9KKzw + repackage-l10n-ko-macosx64-shippable/opt: ExC9nTkDQG6MnuzfpkVRnA + repackage-l10n-ko-win32-shippable/opt: QJzVSXeVS_GS4cXkFt-txA + repackage-l10n-ko-win64-aarch64-shippable/opt: UHEWv73cT_-4t_5NbqzHFg + repackage-l10n-ko-win64-shippable/opt: W-Gm7KOURJWdNTnfKJrg_w + repackage-l10n-lij-linux-shippable/opt: YgXM40jHRHGxZhBR_8FWMg + repackage-l10n-lij-linux64-shippable/opt: Bt3XQGFxQES3hVD4j6wvVA + repackage-l10n-lij-macosx64-shippable/opt: I8BTLfowSuOaVCBxA5CXHQ + repackage-l10n-lij-win32-shippable/opt: TNxTcYHzSliOVfjrzdkqLg + repackage-l10n-lij-win64-aarch64-shippable/opt: djnD3c1yRJqy9rr1DF7sFw + repackage-l10n-lij-win64-shippable/opt: UoPZrRk0TZWsbliigIOuFQ + repackage-l10n-lt-linux-shippable/opt: K6BYAOAnSb6SY7K9tcODVg + repackage-l10n-lt-linux64-shippable/opt: I67E0RDGTfaJM1pjcY2FqA + repackage-l10n-lt-macosx64-shippable/opt: Jhiw_4OmQlGB2cByQGZCBA + repackage-l10n-lt-win32-shippable/opt: UE1nmVHGSH2FCc3qbX4cEQ + repackage-l10n-lt-win64-aarch64-shippable/opt: UClJWkv8RoKcTY58p2AciQ + repackage-l10n-lt-win64-shippable/opt: YX2Oh20_TaKM4yR1H2cEUw + repackage-l10n-lv-linux-shippable/opt: VSXy_d96TtWHWzpApRj2cg + repackage-l10n-lv-linux64-shippable/opt: eULIT8usSgWuFXDIDhb3RA + repackage-l10n-lv-macosx64-shippable/opt: MP49-6QlSnupVlxQofMK1w + repackage-l10n-lv-win32-shippable/opt: VbJxxo1eTyOMwdheAv5YXA + repackage-l10n-lv-win64-aarch64-shippable/opt: YTPWc_F-R3uE-mnteHgpGg + repackage-l10n-lv-win64-shippable/opt: PlO60cI1T7yBANVJ9BwUew + repackage-l10n-mk-linux-shippable/opt: MS4KhIzcS9C5siM1k4tqyA + repackage-l10n-mk-linux64-shippable/opt: LplUMGiARDSgGlmHbNAM6Q + repackage-l10n-mk-macosx64-shippable/opt: elRRvWjERlSwLJ3tm37oeA + repackage-l10n-mk-win32-shippable/opt: NOBcRMxnRA6DtVdXDAOFzA + repackage-l10n-mk-win64-aarch64-shippable/opt: KK6it8nIR3yOVylxd8gdUw + repackage-l10n-mk-win64-shippable/opt: ddRkdPhWTzaFaxNufCGR7A + repackage-l10n-mr-linux-shippable/opt: YEhYZJ81TyixQoLp7XK2eg + repackage-l10n-mr-linux64-shippable/opt: QX3-77FiQdmBIrMwb-P4yw + repackage-l10n-mr-macosx64-shippable/opt: RQ_m5mhbQ7Otg6z4CUS6Eg + repackage-l10n-mr-win32-shippable/opt: JigHMqk7Rzak-_BYWEUuNQ + repackage-l10n-mr-win64-aarch64-shippable/opt: QOhWSKocRxu1ZDUIAYeZ6w + repackage-l10n-mr-win64-shippable/opt: ERtVUq69Q8qAocmYZfw0jQ + repackage-l10n-ms-linux-shippable/opt: ciMhK3dxTb6QOwYxXEUDeA + repackage-l10n-ms-linux64-shippable/opt: Hajv0pufTDWqdwu1TLaA7Q + repackage-l10n-ms-macosx64-shippable/opt: FltvvxFUQ_C--Nv0doJ_-w + repackage-l10n-ms-win32-shippable/opt: YriJQwV7RMqIqi65Mcz89g + repackage-l10n-ms-win64-aarch64-shippable/opt: GALaLhcVSc-JV9T9vLiH2g + repackage-l10n-ms-win64-shippable/opt: Y_rwLo3tQ1qW0VWMSyyIUg + repackage-l10n-my-linux-shippable/opt: bgss1xFhQweKgXL7mzm8Rw + repackage-l10n-my-linux64-shippable/opt: S--jXU7vQHGK_RKBH-ZhXg + repackage-l10n-my-macosx64-shippable/opt: YjPT8E6nR6u33tFc9ozlMA + repackage-l10n-my-win32-shippable/opt: VIZD2qFuSr-wEXGdRb_ExQ + repackage-l10n-my-win64-aarch64-shippable/opt: K4I7lEF-RnCq55TOq7ciDw + repackage-l10n-my-win64-shippable/opt: ChBjokxeSH66csGHXiIoNw + repackage-l10n-nb-NO-linux-shippable/opt: C_gWD6cQQl2YUZsyi4G0Gg + repackage-l10n-nb-NO-linux64-shippable/opt: VHJQIWb5QriJnkUN-HEfMA + repackage-l10n-nb-NO-macosx64-shippable/opt: FGEHsr9IRoqw0WZSStNOxw + repackage-l10n-nb-NO-win32-shippable/opt: GTbMjtKRQE-PNEhAKc4IsQ + repackage-l10n-nb-NO-win64-aarch64-shippable/opt: HEoQGACPSoK9BcyzHSKckQ + repackage-l10n-nb-NO-win64-shippable/opt: F8H8lNqVS6qPYfMsQeCj-w + repackage-l10n-ne-NP-linux-shippable/opt: U3qgluUuSE23XJLblh2fTA + repackage-l10n-ne-NP-linux64-shippable/opt: f01SfmNrTkWVRQXsHfyT5A + repackage-l10n-ne-NP-macosx64-shippable/opt: OX2a7HpjSd6I0CMOYHaleA + repackage-l10n-ne-NP-win32-shippable/opt: SEGlw0J2T1OnJQsxYd_v7w + repackage-l10n-ne-NP-win64-aarch64-shippable/opt: RbDHPqKQQ16Qpip6WuK5Aw + repackage-l10n-ne-NP-win64-shippable/opt: Z_zdiJwtT3WBtIA85nG9ag + repackage-l10n-nl-linux-shippable/opt: O2lDqs0mRiepVaHGFsZxLA + repackage-l10n-nl-linux64-shippable/opt: aATJA1QdQJOoffiVG_llNg + repackage-l10n-nl-macosx64-shippable/opt: SCeeTcp-RjuY7tOmkW8brw + repackage-l10n-nl-win32-shippable/opt: Fx4izlVRSqyfztqaKLTVIg + repackage-l10n-nl-win64-aarch64-shippable/opt: Q1JcCgCDRGywiiUfr3ULSA + repackage-l10n-nl-win64-shippable/opt: dPa5m2eSTRO25IbaO9VJdA + repackage-l10n-nn-NO-linux-shippable/opt: RQ0Hbro1RKWmqQAQzu15kg + repackage-l10n-nn-NO-linux64-shippable/opt: Ua4XzpvjTFucc8tt5BqdsQ + repackage-l10n-nn-NO-macosx64-shippable/opt: cPWoZNW9R8mbTqlG97vZVg + repackage-l10n-nn-NO-win32-shippable/opt: JCkx_SGCQjSMgPJq5621Jg + repackage-l10n-nn-NO-win64-aarch64-shippable/opt: RPzLI8dpTlKm5TfVhixdFw + repackage-l10n-nn-NO-win64-shippable/opt: RRuk16oNQbOIjO-zrtVlKg + repackage-l10n-oc-linux-shippable/opt: N0f_ELFrQWGJ22LDZvDzPw + repackage-l10n-oc-linux64-shippable/opt: aZQLTKt_STywWF30doFcRg + repackage-l10n-oc-macosx64-shippable/opt: JFG_6rGnTo2Z3j6FgpIC-g + repackage-l10n-oc-win32-shippable/opt: eA0YBx_xSZC__4KHBij8-g + repackage-l10n-oc-win64-aarch64-shippable/opt: dPpvI3sJQG2oifvXnX__mQ + repackage-l10n-oc-win64-shippable/opt: Kxvg5nhzSoCWfbno5zxU1g + repackage-l10n-pa-IN-linux-shippable/opt: EbCY8bdVRfSyJvW_u76Oag + repackage-l10n-pa-IN-linux64-shippable/opt: bOF-66P3QgqUhJAULIQuyA + repackage-l10n-pa-IN-macosx64-shippable/opt: KHknKvdjQ1Wbut9LCW6mDQ + repackage-l10n-pa-IN-win32-shippable/opt: X2Z3ENeSSPyCSwlKY1OyqA + repackage-l10n-pa-IN-win64-aarch64-shippable/opt: MKqKI0NNQnOU8lZEdOPxGw + repackage-l10n-pa-IN-win64-shippable/opt: ANjoRvpkSbeOk5_KPAluSg + repackage-l10n-pl-linux-shippable/opt: GwehA9joRCqnn-bJi0FWCw + repackage-l10n-pl-linux64-shippable/opt: KODB8NtqQUygEBgGFrkzAQ + repackage-l10n-pl-macosx64-shippable/opt: Q2xMJSUmR82ZeuDMI9-mOA + repackage-l10n-pl-win32-shippable/opt: aCe0XwmsQvKVsoQhFPZaNg + repackage-l10n-pl-win64-aarch64-shippable/opt: V9vqJOT9ScaLlgdbw-Lz2g + repackage-l10n-pl-win64-shippable/opt: KfyrX8A6RNSjByn62WZExQ + repackage-l10n-pt-BR-linux-shippable/opt: c0EfjETIQvmceuFBdpoHgA + repackage-l10n-pt-BR-linux64-shippable/opt: VB_ODcEBTJ63S2cGBw603g + repackage-l10n-pt-BR-macosx64-shippable/opt: B2DuJj0BTI-w7hyLqhtkng + repackage-l10n-pt-BR-win32-shippable/opt: epb2TxEzS-OorNLLQb-r-g + repackage-l10n-pt-BR-win64-aarch64-shippable/opt: Ysd_k-CPT7CMv1sOu1vmCw + repackage-l10n-pt-BR-win64-shippable/opt: fm26108gSC2Wavm2UriU0Q + repackage-l10n-pt-PT-linux-shippable/opt: LkBUB50aRoa-oJZkCcm5Gw + repackage-l10n-pt-PT-linux64-shippable/opt: OjbYx41OQnWPL7lzBBUzrQ + repackage-l10n-pt-PT-macosx64-shippable/opt: ah1s1OQsRB-xW2IROngyjQ + repackage-l10n-pt-PT-win32-shippable/opt: S_6cF56URW6VCoMdUFHu7Q + repackage-l10n-pt-PT-win64-aarch64-shippable/opt: T3kAK3TdTfSfkLQcfj9h1g + repackage-l10n-pt-PT-win64-shippable/opt: G6qav1KuSjWOivgGz41w-Q + repackage-l10n-rm-linux-shippable/opt: dO59840xQ9ulLLlNJVAarA + repackage-l10n-rm-linux64-shippable/opt: Udd8hQmITRK0falTxhFYnA + repackage-l10n-rm-macosx64-shippable/opt: FaIvcFCqTW6cUMFj6KftyA + repackage-l10n-rm-win32-shippable/opt: LDAfS4kYQGaALoGXYFH8WA + repackage-l10n-rm-win64-aarch64-shippable/opt: EGZX0ijyQduj6VvI6Ume9g + repackage-l10n-rm-win64-shippable/opt: fV_BIHVeTmi04J5XWbMAFw + repackage-l10n-ro-linux-shippable/opt: cJKmgFlUSjuB4y34DW94cA + repackage-l10n-ro-linux64-shippable/opt: Bk_w9iONTXiCNdX1UgGt-w + repackage-l10n-ro-macosx64-shippable/opt: QHWb6y0pRoS2L3UKEja7eg + repackage-l10n-ro-win32-shippable/opt: dbqKE3pgTKa36_v6mxR8CA + repackage-l10n-ro-win64-aarch64-shippable/opt: ci4nXjoLSQSbtXs7iWQ2Ww + repackage-l10n-ro-win64-shippable/opt: OjWMOjtSTDugJN7m0i-8sA + repackage-l10n-ru-linux-shippable/opt: bxoXC96jRamI45TJjfi5oA + repackage-l10n-ru-linux64-shippable/opt: QV3EGM0BSt2Mxfu1aH0seg + repackage-l10n-ru-macosx64-shippable/opt: OYy29NiTTdyr57UO2ytVWg + repackage-l10n-ru-win32-shippable/opt: TYgeUyh3Ttu-cfQCBQYpHQ + repackage-l10n-ru-win64-aarch64-shippable/opt: GN9_Ci1zTgGCnmcBEVziFA + repackage-l10n-ru-win64-shippable/opt: MVbF7GuDRXSmasrKxDhsQw + repackage-l10n-sc-linux-shippable/opt: QYcx7zg4Sva1qyjCHc-hXg + repackage-l10n-sc-linux64-shippable/opt: CzTvYOF0TpWE0HjRA2Uv-w + repackage-l10n-sc-macosx64-shippable/opt: SISuL9mwRUayvjNLkweC4A + repackage-l10n-sc-win32-shippable/opt: dNQFEHKJS5Odno2J6pKLuw + repackage-l10n-sc-win64-aarch64-shippable/opt: Y_-B6b8eT_uPG_hyQ9Uzcw + repackage-l10n-sc-win64-shippable/opt: GMCWbfbmS8OMv3hWIzIX3w + repackage-l10n-sco-linux-shippable/opt: P62HKMw0QfyjeH1Pny7QjQ + repackage-l10n-sco-linux64-shippable/opt: XlObECctQ1qcye6tqwX-Ug + repackage-l10n-sco-macosx64-shippable/opt: IUw_WbU2ThKffVLQvzEB-w + repackage-l10n-sco-win32-shippable/opt: eqtuzt2fSKu9gjbPeKg71w + repackage-l10n-sco-win64-aarch64-shippable/opt: PRZnj1TITZSDuxtN2TBTDQ + repackage-l10n-sco-win64-shippable/opt: DeZ5o64OQ3Czmsw4564HDA + repackage-l10n-si-linux-shippable/opt: VuBdKm8MSpKTpgnIYZm9Qg + repackage-l10n-si-linux64-shippable/opt: eWC5wcbhQ22SowoVj25jQw + repackage-l10n-si-macosx64-shippable/opt: RQfGQF6NSwuRMT0MllPWQA + repackage-l10n-si-win32-shippable/opt: FQS3zEKcTkmG7D_Gp0GrHw + repackage-l10n-si-win64-aarch64-shippable/opt: GJt6oOz1SxuyEb0RjiLeqw + repackage-l10n-si-win64-shippable/opt: QGLXnbI6Q7iRvciWfGXiqA + repackage-l10n-sk-linux-shippable/opt: dbPYzlwbQBOqYDyPK5tpgw + repackage-l10n-sk-linux64-shippable/opt: Ds7lgxlkQX-hl4Mum1bd4g + repackage-l10n-sk-macosx64-shippable/opt: Ym17JUxRTT-UvR5PJzv4ew + repackage-l10n-sk-win32-shippable/opt: CTEyqDsBR9CxEGb1rlNonw + repackage-l10n-sk-win64-aarch64-shippable/opt: YUe4ozJCQRmz_ATgj8caJg + repackage-l10n-sk-win64-shippable/opt: TN7w6hK_QeqVh0lxYVBogA + repackage-l10n-sl-linux-shippable/opt: IdFR2HIhTByD8wwNhio2TQ + repackage-l10n-sl-linux64-shippable/opt: Qj0SdDgTQhWmNmr3vB9gYQ + repackage-l10n-sl-macosx64-shippable/opt: eTHV7OeXSV-1TCQTEe1w5A + repackage-l10n-sl-win32-shippable/opt: EgOh0hKCSIusXnR7p4v9fA + repackage-l10n-sl-win64-aarch64-shippable/opt: PvXeizUfTfat32ViZEWV_w + repackage-l10n-sl-win64-shippable/opt: Lg6B2zFdS4KQBj66PrQUug + repackage-l10n-son-linux-shippable/opt: TJ4en7PRTFeM-DC1Pv3veg + repackage-l10n-son-linux64-shippable/opt: CppxFCCgSXajnP01diyFJg + repackage-l10n-son-macosx64-shippable/opt: Ds5_Mm23Q8C7ow3xr6ZW0w + repackage-l10n-son-win32-shippable/opt: eqiM23qzQaC_JH6T1z8_7A + repackage-l10n-son-win64-aarch64-shippable/opt: G2fgWfoxS0WUafSLFocxJQ + repackage-l10n-son-win64-shippable/opt: ReFYJYB3RPiuo-1qKluMZQ + repackage-l10n-sq-linux-shippable/opt: fvpzNAXYS2ir_9vQazSfHQ + repackage-l10n-sq-linux64-shippable/opt: NB-BGOP1Q0yFrZ7lFmaY3Q + repackage-l10n-sq-macosx64-shippable/opt: FnAi3mHSS2OOi8YfhLQgog + repackage-l10n-sq-win32-shippable/opt: VD74QtkGQ9K582Rl4lmtQQ + repackage-l10n-sq-win64-aarch64-shippable/opt: LPFGNH57R_2eobqkzav0Aw + repackage-l10n-sq-win64-shippable/opt: W9mfQVfqRISdQ4Q2Ob3u8A + repackage-l10n-sr-linux-shippable/opt: FxHGZeb3R-mANvGVTgcj7A + repackage-l10n-sr-linux64-shippable/opt: f39g15mSQg67OcZRFGzipA + repackage-l10n-sr-macosx64-shippable/opt: LkVKxFuKQ_Ok02Yi2bAo7Q + repackage-l10n-sr-win32-shippable/opt: OBZ8UAwoQY69Wxld3UrcYw + repackage-l10n-sr-win64-aarch64-shippable/opt: GcptGnqnTTCZueMGlhoFSg + repackage-l10n-sr-win64-shippable/opt: W8epwHohTbyphDx5Z414iA + repackage-l10n-sv-SE-linux-shippable/opt: KieSzNGwTY2DmZslDH5bJA + repackage-l10n-sv-SE-linux64-shippable/opt: QnLU2xAySeKdb4RVoZlGBA + repackage-l10n-sv-SE-macosx64-shippable/opt: E_l3_abzTNWRqbw36Qc0Gw + repackage-l10n-sv-SE-win32-shippable/opt: ZMNf46guTXiQzryqNwuThA + repackage-l10n-sv-SE-win64-aarch64-shippable/opt: YF8JPZytT8SoAbMyDpd3gw + repackage-l10n-sv-SE-win64-shippable/opt: besydPbNRW-cn6tres3sCw + repackage-l10n-szl-linux-shippable/opt: eXn4HTG_QealN9hMkASjXA + repackage-l10n-szl-linux64-shippable/opt: ctBHvPCbQueTcmdUquxHcQ + repackage-l10n-szl-macosx64-shippable/opt: EBf0-v1qQuyV8x74wc1Ogw + repackage-l10n-szl-win32-shippable/opt: BsBmyfGxRhCuRwhoUZWHdA + repackage-l10n-szl-win64-aarch64-shippable/opt: a0pFfqpwSBiUMODawncQlw + repackage-l10n-szl-win64-shippable/opt: EckJ4AJmTVeysRD3Weah3Q + repackage-l10n-ta-linux-shippable/opt: DcK-65bnQdWnLy6Kxucs9Q + repackage-l10n-ta-linux64-shippable/opt: K4f9Lfq8RUGdiFsHe35TRg + repackage-l10n-ta-macosx64-shippable/opt: AtPj2Y6pR1aG_7GTxWgRnA + repackage-l10n-ta-win32-shippable/opt: ANmlnwbZSAGtNdrazNhNRw + repackage-l10n-ta-win64-aarch64-shippable/opt: NfSuC16DQOaJuCHIwftc2w + repackage-l10n-ta-win64-shippable/opt: PUJMgtCYQSG9ww6XDiCpkQ + repackage-l10n-te-linux-shippable/opt: em38xFmgTzq6uiLUg_FZRA + repackage-l10n-te-linux64-shippable/opt: KckJmc1OSyWQR7JcgaQ8uQ + repackage-l10n-te-macosx64-shippable/opt: CjskcKXESXG9ycIwB4OJQA + repackage-l10n-te-win32-shippable/opt: bTaFyq_ATLmizHi6Ek-DvQ + repackage-l10n-te-win64-aarch64-shippable/opt: XEwXdBsfS-efNSlaSuL4yQ + repackage-l10n-te-win64-shippable/opt: HWJN2xFETEuWiBwV3hiURQ + repackage-l10n-tg-linux-shippable/opt: O_M4qadQQwe2yVA_DD0GpQ + repackage-l10n-tg-linux64-shippable/opt: CfvulUlzQAK8kZTCg-Z6pQ + repackage-l10n-tg-macosx64-shippable/opt: JImI_pJXTkiWbPfGLBHIhg + repackage-l10n-tg-win32-shippable/opt: BIm_s_lxTraKdXpK8JEw9g + repackage-l10n-tg-win64-aarch64-shippable/opt: QWlJg5ABRFKGfTlf2msULw + repackage-l10n-tg-win64-shippable/opt: QD66-iomTIyD6cetsSmpnw + repackage-l10n-th-linux-shippable/opt: QGlmpmlbTXex4hdWSKSuqQ + repackage-l10n-th-linux64-shippable/opt: YNsZ6wREQme2nPUnpT3_dA + repackage-l10n-th-macosx64-shippable/opt: elJoRAj7St-MpplrxqSiVg + repackage-l10n-th-win32-shippable/opt: culv4lJaQSG8LkVbOiciyw + repackage-l10n-th-win64-aarch64-shippable/opt: S7IEEkkJTC2I9Kj1zRvYeA + repackage-l10n-th-win64-shippable/opt: WUOKpKz1QMumE0pQgQz0XQ + repackage-l10n-tl-linux-shippable/opt: J_0LcfGTTsu__jAAWxAJvA + repackage-l10n-tl-linux64-shippable/opt: ZGXXqqIDQXuMWZybub7J6A + repackage-l10n-tl-macosx64-shippable/opt: N-s_hVvaSui1zhzEOgPpiA + repackage-l10n-tl-win32-shippable/opt: by4GKafcTGiW1kPUVre1dw + repackage-l10n-tl-win64-aarch64-shippable/opt: NKw2Jv39Q2aGDBEMXMIaTg + repackage-l10n-tl-win64-shippable/opt: P0HfMdABQwa-g51FsG1MtA + repackage-l10n-tr-linux-shippable/opt: HLeNTSiwRliZnKSypuhi2Q + repackage-l10n-tr-linux64-shippable/opt: VqStjM3kQoup0aMXPAvYZA + repackage-l10n-tr-macosx64-shippable/opt: AKN1-4gGRauDcK5pu_C-RQ + repackage-l10n-tr-win32-shippable/opt: eTERWvpVSGSaLHBTgZO7XQ + repackage-l10n-tr-win64-aarch64-shippable/opt: WrkqbFooRNqLI9vIh2BlEw + repackage-l10n-tr-win64-shippable/opt: YSfjYgRlTYiu2SIaIRFFhQ + repackage-l10n-trs-linux-shippable/opt: ekKRBIg5R2GlNSY9CD-blg + repackage-l10n-trs-linux64-shippable/opt: VIzHl8oESq-EUwfSZQQorg + repackage-l10n-trs-macosx64-shippable/opt: PEdGLBiBQ3aR6rlnKukL5w + repackage-l10n-trs-win32-shippable/opt: PIs2V1xuQwejA9wPX9S1eQ + repackage-l10n-trs-win64-aarch64-shippable/opt: UbheIUYwQTmfL447tbCs6g + repackage-l10n-trs-win64-shippable/opt: ASF6sj_CRgycNv5H2WeR4Q + repackage-l10n-uk-linux-shippable/opt: ZW-CSpAmRUy9IItzSjJ-kw + repackage-l10n-uk-linux64-shippable/opt: Zj-TJfBZQy6lkj2_rzEsHg + repackage-l10n-uk-macosx64-shippable/opt: Tyow15srRMuez5lFQj6l1w + repackage-l10n-uk-win32-shippable/opt: XSn0zAN2SDCdIjNHOnjv8Q + repackage-l10n-uk-win64-aarch64-shippable/opt: UhyyWAgeR2WXbiHQr4HOHQ + repackage-l10n-uk-win64-shippable/opt: UrJfzsFvSKS3IAlR0ni_wQ + repackage-l10n-ur-linux-shippable/opt: XMw5Wzf1RU2IaJ6F8oW8Hw + repackage-l10n-ur-linux64-shippable/opt: NaZ10uXBRW2N-hEFZfRjUw + repackage-l10n-ur-macosx64-shippable/opt: HgAsFtwhQTGkO9Qy5N49zA + repackage-l10n-ur-win32-shippable/opt: S6q0ULarQfyqIkwT7IYehA + repackage-l10n-ur-win64-aarch64-shippable/opt: ayTqIagGRyKmBfmp6c7VXg + repackage-l10n-ur-win64-shippable/opt: BqYPQF0VTou5_EIlmsWlhg + repackage-l10n-uz-linux-shippable/opt: f6gqVXR4SUO1lkt_UfEN0w + repackage-l10n-uz-linux64-shippable/opt: TvgoCjaDT3mbAzWNnexAJQ + repackage-l10n-uz-macosx64-shippable/opt: BNmw-g4iTVaXTUzk2gIBug + repackage-l10n-uz-win32-shippable/opt: HU1n5myZTqOXji8XM1sEhQ + repackage-l10n-uz-win64-aarch64-shippable/opt: RnLBGJqJTwy7Vd_21TrMSw + repackage-l10n-uz-win64-shippable/opt: W0T_uWQFQkCd3TKAUJ9AQw + repackage-l10n-vi-linux-shippable/opt: Ii3kzknARhegcz_XqNY3xg + repackage-l10n-vi-linux64-shippable/opt: fvSybmttSxShmYbDuXTtog + repackage-l10n-vi-macosx64-shippable/opt: VgDBxVq8QBOKYpFxnYMQkw + repackage-l10n-vi-win32-shippable/opt: AIEHYgzrTZulIIGu6ccLeQ + repackage-l10n-vi-win64-aarch64-shippable/opt: MoFkqCtPQdqjCXQseZSrJg + repackage-l10n-vi-win64-shippable/opt: KOD7NNZ3Rka_CDI62fJ5xA + repackage-l10n-xh-linux-shippable/opt: MdzrWAljT1ut6fs59QIziQ + repackage-l10n-xh-linux64-shippable/opt: dZcV2iGQShqc_PYK3oaJJg + repackage-l10n-xh-macosx64-shippable/opt: d6fT_tHzTeGiuops4FL-kg + repackage-l10n-xh-win32-shippable/opt: Md5L2YjyQG-K5zn4vU0KPg + repackage-l10n-xh-win64-aarch64-shippable/opt: YerJHMWwQp6WCexsuYECGQ + repackage-l10n-xh-win64-shippable/opt: G8EVbvgeRnC4WHTP09SVlw + repackage-l10n-zh-CN-linux-shippable/opt: KfRnojuzTAGC8tTbPhOuQA + repackage-l10n-zh-CN-linux64-shippable/opt: Rwh_nz4nTy26yFwhpjStGQ + repackage-l10n-zh-CN-macosx64-shippable/opt: fjBrH07qRZWYIuYLzp7K4w + repackage-l10n-zh-CN-win32-shippable/opt: aVjRk0v9RsSAT1LSqmnDzA + repackage-l10n-zh-CN-win64-aarch64-shippable/opt: GC97i8QtT-GVCs9ZWmLxQg + repackage-l10n-zh-CN-win64-shippable/opt: GKPdb-8kQrulJ1P8wd2P_g + repackage-l10n-zh-TW-linux-shippable/opt: WYLLDCJEQ4uu2ulhWCanNQ + repackage-l10n-zh-TW-linux64-shippable/opt: G4CIZCCYTmaENM4PS2PgBQ + repackage-l10n-zh-TW-macosx64-shippable/opt: EslBL7waRd67VwFAQHXQ_A + repackage-l10n-zh-TW-win32-shippable/opt: BeAd1ej4TmiyP7ihSGVzLw + repackage-l10n-zh-TW-win64-aarch64-shippable/opt: f2cDcDbbTCSMypo1EvuiQg + repackage-l10n-zh-TW-win64-shippable/opt: UVVIu4ceQDe02-iuQsyxtg + repackage-linux-shippable/opt: cqL7FABGSi-i_RueIwu2yA + repackage-linux64-shippable/opt: cIGy1dMDRCe0RW5gurkaeQ + repackage-macosx64-shippable/opt: eI-wq-IYRa6oT-oXiTPRdQ + repackage-macosx64/debug: UiHbDIkJTzu-vaITaWdGbg + repackage-msi-ach-win32-shippable/opt: emy1eHA8SUmk6hmLJx-OmQ + repackage-msi-ach-win64-shippable/opt: KOTrbmFWS0u61LVVa5b6nw + repackage-msi-af-win32-shippable/opt: fvvDl1wGTXOVBO3FWGWSGA + repackage-msi-af-win64-shippable/opt: aMz1QnRYRBy6RZO-9Nf45g + repackage-msi-an-win32-shippable/opt: W0w_fGWzQYeUjfF8Ek1aDw + repackage-msi-an-win64-shippable/opt: YR6iNPw6S5G71NnwUvRhmg + repackage-msi-ar-win32-shippable/opt: ccE-UyE9SBeso5ji22wPAQ + repackage-msi-ar-win64-shippable/opt: NFIb3GB9QNeBtgIAVeZ2sg + repackage-msi-ast-win32-shippable/opt: ECSlyPKnSVq-z2aWf6zPjQ + repackage-msi-ast-win64-shippable/opt: ATqxjfwYRKOh1zM3LA8C9Q + repackage-msi-az-win32-shippable/opt: NzKB5Oo9RGKNGfllh921RQ + repackage-msi-az-win64-shippable/opt: Z_bizngMRIK1Y-UoK0Fsjg + repackage-msi-be-win32-shippable/opt: bPaNYhmlS7WY6UOMLrx0yQ + repackage-msi-be-win64-shippable/opt: ZoBYZEQjQnCmfMviuyvRww + repackage-msi-bg-win32-shippable/opt: S7cs7olyT52mn1GdTRfHwg + repackage-msi-bg-win64-shippable/opt: eMA12IrlS26XR-2eGZt7HA + repackage-msi-bn-win32-shippable/opt: bX07sGHGTmuIlJWdWj_wzg + repackage-msi-bn-win64-shippable/opt: OQ3MQau1Q1KpE8SZluYp4w + repackage-msi-br-win32-shippable/opt: TUGgOlYSQs-gPUIJP_fa0Q + repackage-msi-br-win64-shippable/opt: VmcKHAaTSuOq6bwSLa8ytQ + repackage-msi-bs-win32-shippable/opt: Gu9TcXkHQt2Q3YZDVC5kgw + repackage-msi-bs-win64-shippable/opt: Hnu-R4taRTuywJSR4m6t4Q + repackage-msi-ca-valencia-win32-shippable/opt: T1S_1AkFQIyKMZuH9ZJvAw + repackage-msi-ca-valencia-win64-shippable/opt: FtZzeXoySzarWZEM_rTxGg + repackage-msi-ca-win32-shippable/opt: ZoJS9n2OQiuWHlkCYxSJCA + repackage-msi-ca-win64-shippable/opt: UIYzDQazS-a9rOye3JWXKw + repackage-msi-cak-win32-shippable/opt: FNkQIa7qTuu9snF680ACOA + repackage-msi-cak-win64-shippable/opt: IITtsZtAQaSG75HCbxpn0Q + repackage-msi-cs-win32-shippable/opt: TB3kTKrkQhKM2WYsreqIsQ + repackage-msi-cs-win64-shippable/opt: CFjUl8jYQP6YBLZn_raq7A + repackage-msi-cy-win32-shippable/opt: aQgyxESgQTWmTHLF_YXr1g + repackage-msi-cy-win64-shippable/opt: EBf-sutPQY6ahfpO3DQcRQ + repackage-msi-da-win32-shippable/opt: F-oWGGboQ5y5QmxoZb4P-g + repackage-msi-da-win64-shippable/opt: SLzJfu7sRZyivTmDRLd66Q + repackage-msi-de-win32-shippable/opt: d2glw4lDTMyz1baKDzXsyQ + repackage-msi-de-win64-shippable/opt: Zf-htpdrQ0qL_A-kXPU0ww + repackage-msi-dsb-win32-shippable/opt: WvijRiLrRWyOYseggnd4Lg + repackage-msi-dsb-win64-shippable/opt: G-lXaUDDSPm20TWtBbL86Q + repackage-msi-el-win32-shippable/opt: EHeqgA7VQKyYKsQjCa3iVw + repackage-msi-el-win64-shippable/opt: c9JTYT5mS5OXwgxVYrckEw + repackage-msi-en-CA-win32-shippable/opt: NvLld9E5TZWbt-kN47ZY6Q + repackage-msi-en-CA-win64-shippable/opt: WsCvQ901T7iEgzKGGyHcwA + repackage-msi-en-GB-win32-shippable/opt: QzmDE0uJQt6RgJZrGaJ7tg + repackage-msi-en-GB-win64-shippable/opt: aOc3HgzDSWu78r4f_JjLBw + repackage-msi-eo-win32-shippable/opt: Nw_WABskST6KpwlMy68MRg + repackage-msi-eo-win64-shippable/opt: E3HhABfjTqOOKldubrnbNA + repackage-msi-es-AR-win32-shippable/opt: aq5dhRN8RZ-AcgOX8UYiaQ + repackage-msi-es-AR-win64-shippable/opt: a2yDOpm6S22t1QkP-5Tp-g + repackage-msi-es-CL-win32-shippable/opt: P3PyP33kQOyTJSfZ4tRSag + repackage-msi-es-CL-win64-shippable/opt: azbySqcCQZuRqm4O3WJtyw + repackage-msi-es-ES-win32-shippable/opt: RkKlSDeZS2KTdRlvrZjclQ + repackage-msi-es-ES-win64-shippable/opt: E5mXaJAaQySzN8K1EloFGw + repackage-msi-es-MX-win32-shippable/opt: X-dAZllVQI60HtKnOd585Q + repackage-msi-es-MX-win64-shippable/opt: cRYpJjqKQJW7Jri0ui5ExA + repackage-msi-et-win32-shippable/opt: K9C_8TggRlWeVzDHYgAkdg + repackage-msi-et-win64-shippable/opt: Jr2hP8cwTjSab4eDiDy4JA + repackage-msi-eu-win32-shippable/opt: ThdzoaY6RgCtraC80bf4kg + repackage-msi-eu-win64-shippable/opt: TbziCI5kRFGyx2Pr8WSBgw + repackage-msi-fa-win32-shippable/opt: TBG48_NkSe2vdQNLMNeD0Q + repackage-msi-fa-win64-shippable/opt: cUxEFoQOR1WWPXlSYK5hdw + repackage-msi-ff-win32-shippable/opt: GLTwMDndQG2_oARQorii_w + repackage-msi-ff-win64-shippable/opt: VZ8IWRbZT7iC0Tl1LfRvtA + repackage-msi-fi-win32-shippable/opt: HcuRmeSYTqqbljVi1tFubw + repackage-msi-fi-win64-shippable/opt: JEJ2nlzTQDicdTAlqUDBGg + repackage-msi-fr-win32-shippable/opt: TjrmftvURTmW844L0ZI3Sw + repackage-msi-fr-win64-shippable/opt: D9Q8vX08T361UtU2ml-Oiw + repackage-msi-fur-win32-shippable/opt: JZ_vXZr0RgyWUFbjsVqShw + repackage-msi-fur-win64-shippable/opt: L2kw2mKhQ_eoDMfFKv5I6A + repackage-msi-fy-NL-win32-shippable/opt: Tqx3iZ2cQECluwY8RpDG3g + repackage-msi-fy-NL-win64-shippable/opt: AjY1dZkGTPuGllhk7vwgIQ + repackage-msi-ga-IE-win32-shippable/opt: cGmBPFldQhqSVbi_RQuYoA + repackage-msi-ga-IE-win64-shippable/opt: R3K3u7IJSGSdxKyeO6dP0w + repackage-msi-gd-win32-shippable/opt: NMYZu1msRD23HK1i5pYcfA + repackage-msi-gd-win64-shippable/opt: APuh5ygrRzG90-BOgmqSXw + repackage-msi-gl-win32-shippable/opt: CzxWGJEtSV6r9CUtMvc1qA + repackage-msi-gl-win64-shippable/opt: fukpId5jSuCTcXqAVS0CHA + repackage-msi-gn-win32-shippable/opt: WahgViFFRZiHJfr5EwHIzQ + repackage-msi-gn-win64-shippable/opt: IORFhODGTb6vUGiO_6b8Kw + repackage-msi-gu-IN-win32-shippable/opt: HlINU27gRUSsInU4Of1VLQ + repackage-msi-gu-IN-win64-shippable/opt: HxZbaMx3RX-VtLu8aWQVaw + repackage-msi-he-win32-shippable/opt: Mdhon2qkQ6qV9MuAzrcKdg + repackage-msi-he-win64-shippable/opt: Ck7FT1DQSr6chAYBmie78A + repackage-msi-hi-IN-win32-shippable/opt: e4O3FnnWQTSgrGomaXViIQ + repackage-msi-hi-IN-win64-shippable/opt: AppwCVdBSeq-XtYFXzAlvQ + repackage-msi-hr-win32-shippable/opt: E49olGzgQOGtQLzkFH5K1w + repackage-msi-hr-win64-shippable/opt: VmGMncvqRyKanBF7NibuGQ + repackage-msi-hsb-win32-shippable/opt: Bkg7PcT4QoOmgYyR9mciow + repackage-msi-hsb-win64-shippable/opt: GWY0EcOcQBqR7G6FCf1qHw + repackage-msi-hu-win32-shippable/opt: D3Jsa0xmSeG0w8fGk5L_HQ + repackage-msi-hu-win64-shippable/opt: UeQZfB3BRHaDhMS5mo5ukg + repackage-msi-hy-AM-win32-shippable/opt: VqMcrE_DRkqSgsr1FWuQ3w + repackage-msi-hy-AM-win64-shippable/opt: HF5AQK-SQXyt62RrM228dw + repackage-msi-ia-win32-shippable/opt: Z09lNlJYT26xBVYigsdOgQ + repackage-msi-ia-win64-shippable/opt: cdcDZWrHTJejc6dPguEamw + repackage-msi-id-win32-shippable/opt: Kizujw6oQP-J2PTkxsL3cg + repackage-msi-id-win64-shippable/opt: Q_3Ts2ZXTl-azu4I-vIvpA + repackage-msi-is-win32-shippable/opt: baF4QRaARGyzbrm4ToC0Vw + repackage-msi-is-win64-shippable/opt: G68F-DEHRsSmGamrPBG06g + repackage-msi-it-win32-shippable/opt: fTqvbMzZRByiQT9frvi5dA + repackage-msi-it-win64-shippable/opt: S2A6O4qfT1aNLfjdcgIZrQ + repackage-msi-ja-win32-shippable/opt: MZK0as9LS0m7WsHyPamxqw + repackage-msi-ja-win64-shippable/opt: H6Grwg9qTd67L9dTI3QHlg + repackage-msi-ka-win32-shippable/opt: Z9sH1euaQEWQegd3pxx08Q + repackage-msi-ka-win64-shippable/opt: eoWk2iWWTEmoPED99vz5dg + repackage-msi-kab-win32-shippable/opt: IWLHAgQJTou7EBuw6JEuwg + repackage-msi-kab-win64-shippable/opt: FeOiEDURTUCjsysdmEWMRg + repackage-msi-kk-win32-shippable/opt: bDzeumVPT8eRmXN4rp4XCw + repackage-msi-kk-win64-shippable/opt: QxTX0_zETPqX5s5YkbBSXg + repackage-msi-km-win32-shippable/opt: IDQji3uxQnCYVUt3nCdk9Q + repackage-msi-km-win64-shippable/opt: BT2wmpGGSLKZNi-STXpKdg + repackage-msi-kn-win32-shippable/opt: ceV8ZBJKQXuV4UCpMRdgDg + repackage-msi-kn-win64-shippable/opt: etM6y3g2SaC0WGqFTyNOng + repackage-msi-ko-win32-shippable/opt: N9V5T0YQSaGUpSTb1V3euw + repackage-msi-ko-win64-shippable/opt: HblLvdGATIOHADvxQfcgYQ + repackage-msi-lij-win32-shippable/opt: PuFS36KaQgO0GBtCCkQgPg + repackage-msi-lij-win64-shippable/opt: WgM8ctfxQguWIbxvyGaiUw + repackage-msi-lt-win32-shippable/opt: ILhErF9DQ7uoQht9gYaNtA + repackage-msi-lt-win64-shippable/opt: PyFgUcNDQb6QTv4lV93bKw + repackage-msi-lv-win32-shippable/opt: byWq6W-lTiGdEP0EMpBqdA + repackage-msi-lv-win64-shippable/opt: CGFuTj3jSriCpRsRitnrfg + repackage-msi-mk-win32-shippable/opt: euBMsGx3Tfelr5Eh7fGNQQ + repackage-msi-mk-win64-shippable/opt: dqxba6HsTAW5louDmyr8Fw + repackage-msi-mr-win32-shippable/opt: YRclpnFVR-CwOUybGMr9tw + repackage-msi-mr-win64-shippable/opt: GkSs2GOXSFWUH1laqon3Qg + repackage-msi-ms-win32-shippable/opt: K-9SYUVcQSiYO6TnjZuQuw + repackage-msi-ms-win64-shippable/opt: EWbbinYzSumZsoYFi03VYw + repackage-msi-my-win32-shippable/opt: CamHi0lNQjCknZXovlDDLA + repackage-msi-my-win64-shippable/opt: KM4IS2bESGaCqws0letiUw + repackage-msi-nb-NO-win32-shippable/opt: CB1wxLxGR6SeTyecweK3CA + repackage-msi-nb-NO-win64-shippable/opt: IeRigHcuSbKDfmUlknmhhw + repackage-msi-ne-NP-win32-shippable/opt: bqY4WDSnQPyHQh1DBwLUCQ + repackage-msi-ne-NP-win64-shippable/opt: cdCGiF4LRg6gxyxIT80ypg + repackage-msi-nl-win32-shippable/opt: YIDpEkyqTdmJ80j2RxEfjw + repackage-msi-nl-win64-shippable/opt: AzSxvukcTjyi78i3Il1u4w + repackage-msi-nn-NO-win32-shippable/opt: fny6W3eDREiK8IJLk4_5Gg + repackage-msi-nn-NO-win64-shippable/opt: WCOl9F3GTC-08-BNKxIijA + repackage-msi-oc-win32-shippable/opt: B8gODTZ3TFe3bJsbbNM5jA + repackage-msi-oc-win64-shippable/opt: e5fFxfTwRxetP8b0TNi0AA + repackage-msi-pa-IN-win32-shippable/opt: H2fdwItsTC-dazrhdV6c8Q + repackage-msi-pa-IN-win64-shippable/opt: dcdqLYvsR5CX30-8UidlkA + repackage-msi-pl-win32-shippable/opt: b-8fXiwGTEu1IVUBU19rzg + repackage-msi-pl-win64-shippable/opt: Rm4axog2Q_iAb6XS1BU1Gw + repackage-msi-pt-BR-win32-shippable/opt: T0LWHbBgS3m944-JUer3ww + repackage-msi-pt-BR-win64-shippable/opt: IRBjeJ0zSAuIwbVAiUm6gA + repackage-msi-pt-PT-win32-shippable/opt: WxItLZv7Txyh3wLZlsbwZA + repackage-msi-pt-PT-win64-shippable/opt: MAnoGpYTQJ-jruOW-CI1FA + repackage-msi-rm-win32-shippable/opt: HF1rX9rYTLW3To_kKpWSgw + repackage-msi-rm-win64-shippable/opt: M3uAPfxXQdaVVphR0Pd7lA + repackage-msi-ro-win32-shippable/opt: DgPtwRryTGW_JXHfUktJBw + repackage-msi-ro-win64-shippable/opt: B4jjDsiiT9KLrWHKUcJAZQ + repackage-msi-ru-win32-shippable/opt: ZMVhOhUpRCGWmUbMFXibbQ + repackage-msi-ru-win64-shippable/opt: FX-6Vk75TZ2dc1nZStPjkA + repackage-msi-sc-win32-shippable/opt: LwdJkqEqTueJYH4Z1QxiWg + repackage-msi-sc-win64-shippable/opt: GRi0i68TSAyFotApwxeY5Q + repackage-msi-sco-win32-shippable/opt: AE-hxMx0T3WRIj4IsE4dkw + repackage-msi-sco-win64-shippable/opt: XwSfgfXfS-ON2cNQxutx2g + repackage-msi-si-win32-shippable/opt: Bk73GeQjQO-STVfHQfCadA + repackage-msi-si-win64-shippable/opt: Nd_BPO8sTKyTWGW34gvnhA + repackage-msi-sk-win32-shippable/opt: Fv-pxWVIR_-kpWJuqncj0g + repackage-msi-sk-win64-shippable/opt: DYOJ8b9YSc2gMg9Du2SZ2A + repackage-msi-sl-win32-shippable/opt: OSun34SgTEqAlM7iXCc6sQ + repackage-msi-sl-win64-shippable/opt: JSI5puvhSACdQ4fQv6d46g + repackage-msi-son-win32-shippable/opt: OWGnR7zrSByRWU_5H3lNxw + repackage-msi-son-win64-shippable/opt: Oe_RJM2_SLW8tD71hDnejQ + repackage-msi-sq-win32-shippable/opt: OSl8T9aTT5qI5Sn3ZQlwGA + repackage-msi-sq-win64-shippable/opt: SwEDY249R9GFEz1eOVpwKw + repackage-msi-sr-win32-shippable/opt: OeBuR020SpeJHWdLM2K4Zw + repackage-msi-sr-win64-shippable/opt: UL2cZmTwS1iQBKgH16nqAw + repackage-msi-sv-SE-win32-shippable/opt: Qii-ltWBSZCeDHvrg6CgSw + repackage-msi-sv-SE-win64-shippable/opt: E-6gx60zSVmEcG2DvU0o5g + repackage-msi-szl-win32-shippable/opt: H97ARBMtRSqqz0XgM_l1yA + repackage-msi-szl-win64-shippable/opt: Z2o6RCN2QLKYFm02BBXcUw + repackage-msi-ta-win32-shippable/opt: eAElOUbPSL2C__YSjo4RXg + repackage-msi-ta-win64-shippable/opt: bc39rVxtRCO7RIRu69JF6w + repackage-msi-te-win32-shippable/opt: B2aL26LLQk2yXO13EFiuUw + repackage-msi-te-win64-shippable/opt: WOrxCe3URiCjSkiHrxuM2A + repackage-msi-tg-win32-shippable/opt: e8gF0k6NTOWMgMV_s14bqw + repackage-msi-tg-win64-shippable/opt: FXuyNJSqQa-D9PA7tktI4A + repackage-msi-th-win32-shippable/opt: SrCO-8-xSUKw-f1ghD7TnQ + repackage-msi-th-win64-shippable/opt: ZQvbSwenSUexvpuqxb7F_g + repackage-msi-tl-win32-shippable/opt: CJWXlYhkSrKtRL0RLWERgg + repackage-msi-tl-win64-shippable/opt: NVb-8_XeQuyq-uQi-MvKqw + repackage-msi-tr-win32-shippable/opt: FQZt0R2bTtO9FOpt0feEcw + repackage-msi-tr-win64-shippable/opt: HUOok7GmTAi8w7tfQXcN9A + repackage-msi-trs-win32-shippable/opt: QiSipOWATP-ymdvv5mtomw + repackage-msi-trs-win64-shippable/opt: KLJcCt3CRwm7MJU51o6KUw + repackage-msi-uk-win32-shippable/opt: TD5-YT1IRKmvLNDM6z-puw + repackage-msi-uk-win64-shippable/opt: TMoeI3pvSTimMXvXdnj7kA + repackage-msi-ur-win32-shippable/opt: IWVeAhdrTIGqhyqNKBqidQ + repackage-msi-ur-win64-shippable/opt: eG1aEr50Q928GysosTwZmA + repackage-msi-uz-win32-shippable/opt: ZTfkzfC1RHanM-6nmkHOQg + repackage-msi-uz-win64-shippable/opt: bGCptl45ToKPmwehdmH9Qg + repackage-msi-vi-win32-shippable/opt: Wib1rJlaR8agNEgtNJrmJA + repackage-msi-vi-win64-shippable/opt: HfA01hVCRsOQ0VnuaJCnHA + repackage-msi-win32-shippable/opt: duN6m4O_TJanFTImB-utrA + repackage-msi-win64-shippable/opt: aK37UAjAQjC1fl3JEArb6w + repackage-msi-xh-win32-shippable/opt: LpNA_KP2TUS9kq-m-zEsxA + repackage-msi-xh-win64-shippable/opt: e5ToZjYcR4WusYOPpPfB9Q + repackage-msi-zh-CN-win32-shippable/opt: UyAsTPBUR7elN-dOhZ4EMg + repackage-msi-zh-CN-win64-shippable/opt: V6QgCcWPTiCP8I70mWJiHA + repackage-msi-zh-TW-win32-shippable/opt: F_a7cc8zQHmGY0otjRLs2Q + repackage-msi-zh-TW-win64-shippable/opt: K7NBGvxtRUK_i-B__iQfBA + repackage-msix-win64/debug: YTbeETG7TzyAATsPNjn3oQ + repackage-shippable-l10n-msix-win32-shippable/opt: DSGjG-a_QFWiODgSt5hT6A + repackage-shippable-l10n-msix-win64-shippable/opt: NddAB2TDT22xCpYmAjI91Q + repackage-signing-l10n-ach-win32-shippable/opt: IWLDmMocQ-KBZ1zZ8uzibQ + repackage-signing-l10n-ach-win64-aarch64-shippable/opt: bHLvLtZBRLC7BD7AmE9znw + repackage-signing-l10n-ach-win64-shippable/opt: W77ky4vXRjW1Vo_nfActhQ + repackage-signing-l10n-af-win32-shippable/opt: dxNfhh2wQ0eQM-yC939AUw + repackage-signing-l10n-af-win64-aarch64-shippable/opt: M1NaMtseRDWbAUIC7jlzNA + repackage-signing-l10n-af-win64-shippable/opt: FtBQLp6GTtinLrG6HUJwdg + repackage-signing-l10n-an-win32-shippable/opt: UJrVpke_RaKRjYKVVBa1uA + repackage-signing-l10n-an-win64-aarch64-shippable/opt: WeMJYKb1RYKe9p84WDqAGw + repackage-signing-l10n-an-win64-shippable/opt: Xifa6GdzTACH0XOfGmIOug + repackage-signing-l10n-ar-win32-shippable/opt: PmJe8G8kS6uCGqSNd7iYFA + repackage-signing-l10n-ar-win64-aarch64-shippable/opt: KigS6KL_RkytOjb3PIt0Gw + repackage-signing-l10n-ar-win64-shippable/opt: FPLg16AtQOO2R2XIYIpoOg + repackage-signing-l10n-ast-win32-shippable/opt: IbfFd3AOQ-uJNpimx_q5CA + repackage-signing-l10n-ast-win64-aarch64-shippable/opt: RRRSwi8uQEWn2uYkq2ykCQ + repackage-signing-l10n-ast-win64-shippable/opt: MWwfsEglTBW-FOIkpCLVUQ + repackage-signing-l10n-az-win32-shippable/opt: dUHGZbVfTZ6mUec0ije-hQ + repackage-signing-l10n-az-win64-aarch64-shippable/opt: M0P82YC5RVe3GgeD46nDcA + repackage-signing-l10n-az-win64-shippable/opt: Ka8BVixySvyXjMp6K4f5EA + repackage-signing-l10n-be-win32-shippable/opt: duNvnDb6QC-1g958ub7FOw + repackage-signing-l10n-be-win64-aarch64-shippable/opt: LVaeoDh_TgOGUHOMe-CXPQ + repackage-signing-l10n-be-win64-shippable/opt: TDJwSeDESDONyyylyEPNAg + repackage-signing-l10n-bg-win32-shippable/opt: EFZg8RWKSp-bHrrmW0E4bw + repackage-signing-l10n-bg-win64-aarch64-shippable/opt: Fc4jwsPYSVu6ynRgCWvrEA + repackage-signing-l10n-bg-win64-shippable/opt: TyAPwbaiQrCRq8GbC_rOMw + repackage-signing-l10n-bn-win32-shippable/opt: cD1FbbDtRuCvq-afj6Iw9g + repackage-signing-l10n-bn-win64-aarch64-shippable/opt: UWiU1RsMRxiGlNPXnVN9Zw + repackage-signing-l10n-bn-win64-shippable/opt: VMaaEiyQQguAYDrYiLNYrw + repackage-signing-l10n-br-win32-shippable/opt: f_aLZAkeQsmnxUe_pJ7KaA + repackage-signing-l10n-br-win64-aarch64-shippable/opt: Mcssk5bSQFK_UzEYFBSS8Q + repackage-signing-l10n-br-win64-shippable/opt: EDQI-EnGQcOJe9Qov3U-dg + repackage-signing-l10n-bs-win32-shippable/opt: JATO0ICIQXO_OXnHG00O8g + repackage-signing-l10n-bs-win64-aarch64-shippable/opt: GBWkGePrQRC6d44CyLXn2A + repackage-signing-l10n-bs-win64-shippable/opt: A8o2yrsSQb-hPHPEZ_tjJw + repackage-signing-l10n-ca-valencia-win32-shippable/opt: NzRqUznkQQmp1_zzN9KHeA + repackage-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: L1rFxhMKR8qRbCIU9ryXaQ + repackage-signing-l10n-ca-valencia-win64-shippable/opt: Bi4Y7YnURkKY64k3OGuZpg + repackage-signing-l10n-ca-win32-shippable/opt: eFqs7UpaRuKlg2Qj_HWXBA + repackage-signing-l10n-ca-win64-aarch64-shippable/opt: NB9WZC0XT9Oev_lrfYC3fA + repackage-signing-l10n-ca-win64-shippable/opt: edjguzgyS_aGvVHSCek6wQ + repackage-signing-l10n-cak-win32-shippable/opt: HrKvlSHcS5CfRpIXlx5LAg + repackage-signing-l10n-cak-win64-aarch64-shippable/opt: ellX63yGSSmWJP3pik-nFQ + repackage-signing-l10n-cak-win64-shippable/opt: ZnVFV89FSCiz7EImXtbfaA + repackage-signing-l10n-cs-win32-shippable/opt: b6OR5oFMT3SWWSXxWV7xwQ + repackage-signing-l10n-cs-win64-aarch64-shippable/opt: E78Nb_gDSeSRByL-PZ-haA + repackage-signing-l10n-cs-win64-shippable/opt: Bvq3sdvcRWOKYknkIhGCbQ + repackage-signing-l10n-cy-win32-shippable/opt: WkjgpQrFSl-5Nfd_OoGjDw + repackage-signing-l10n-cy-win64-aarch64-shippable/opt: Y1mmCFe4Qv2L7q5GA1aXig + repackage-signing-l10n-cy-win64-shippable/opt: Lsn080i6TjG6A3EeldJmIA + repackage-signing-l10n-da-win32-shippable/opt: LsBQCf_lSCue_zeVS0EIkg + repackage-signing-l10n-da-win64-aarch64-shippable/opt: X3L-w01sSkSgF8qiRkTdQA + repackage-signing-l10n-da-win64-shippable/opt: DLKRm1EHRZiGTDWI3y-g3Q + repackage-signing-l10n-de-win32-shippable/opt: diudMKIsQTyoUQ3CITsycA + repackage-signing-l10n-de-win64-aarch64-shippable/opt: AEEm7qoUTqW_NN_-WfbcjQ + repackage-signing-l10n-de-win64-shippable/opt: PI-R0HxERB-5HV84tSlOkw + repackage-signing-l10n-dsb-win32-shippable/opt: Pi8QcXasRHSHOCj9c4OZ4Q + repackage-signing-l10n-dsb-win64-aarch64-shippable/opt: NdNZXGy5QRStI-6kOf0Hlw + repackage-signing-l10n-dsb-win64-shippable/opt: ayWo4RuDTNuGw-rJZeBeVQ + repackage-signing-l10n-el-win32-shippable/opt: M_2Rue0NQuetknX6cIWY6w + repackage-signing-l10n-el-win64-aarch64-shippable/opt: DqK2pfKGTE2VqXvALHXGDQ + repackage-signing-l10n-el-win64-shippable/opt: TVd89BBsQ3CRD9tIFBEDzQ + repackage-signing-l10n-en-CA-win32-shippable/opt: KQb2YNrUReWvBP6fHHPOjA + repackage-signing-l10n-en-CA-win64-aarch64-shippable/opt: MwRa-51LQfuTTJqAt0x4XA + repackage-signing-l10n-en-CA-win64-shippable/opt: Ud79rODkQrC7o1fNhD9bSw + repackage-signing-l10n-en-GB-win32-shippable/opt: Go71FkrURtOeF8kYBPKsCw + repackage-signing-l10n-en-GB-win64-aarch64-shippable/opt: U2ZM9jzRTEWusckrtrwSXQ + repackage-signing-l10n-en-GB-win64-shippable/opt: U1h9XbajRny9HYzpKfur_Q + repackage-signing-l10n-eo-win32-shippable/opt: WfP6lgIIROmGsk4-n33flg + repackage-signing-l10n-eo-win64-aarch64-shippable/opt: IIfVlbttQeS_g9xemFfw4Q + repackage-signing-l10n-eo-win64-shippable/opt: WPhLJu8rTJitksdKdvEv2g + repackage-signing-l10n-es-AR-win32-shippable/opt: N2yZ6rEPTza1Z5zaq1o--g + repackage-signing-l10n-es-AR-win64-aarch64-shippable/opt: IPE-ra2XSnSAbldAm1JxjQ + repackage-signing-l10n-es-AR-win64-shippable/opt: X7wVdmUdR7uZoYf_7QCMig + repackage-signing-l10n-es-CL-win32-shippable/opt: JiSlT68VSqWigflg14nnaQ + repackage-signing-l10n-es-CL-win64-aarch64-shippable/opt: DFmrjbPOQZWVj4OhwY6dag + repackage-signing-l10n-es-CL-win64-shippable/opt: UQhshSa8SUmGNXRxSi3_8g + repackage-signing-l10n-es-ES-win32-shippable/opt: Y7MtEWuaTpefSm3v_mdtYA + repackage-signing-l10n-es-ES-win64-aarch64-shippable/opt: AfKFvavRTqGsJGHs5XFQ3Q + repackage-signing-l10n-es-ES-win64-shippable/opt: HyKTpjmQRGCFgmQA-X7PLg + repackage-signing-l10n-es-MX-win32-shippable/opt: UTKO69XgTsOiYxK3NqFb9A + repackage-signing-l10n-es-MX-win64-aarch64-shippable/opt: M6aomc8_QGG23P6L1kiTbQ + repackage-signing-l10n-es-MX-win64-shippable/opt: M7KJpwbKQQ2Eewtz-ADjXw + repackage-signing-l10n-et-win32-shippable/opt: eF7lpLISSJKbtJLKm22N7w + repackage-signing-l10n-et-win64-aarch64-shippable/opt: fL_2OkKuQ1qWPoOR6UXJag + repackage-signing-l10n-et-win64-shippable/opt: dfj0iTSRQSy_nGHkFQahIg + repackage-signing-l10n-eu-win32-shippable/opt: bc9zEQyKS9O4NPZgMjU9OQ + repackage-signing-l10n-eu-win64-aarch64-shippable/opt: CBQt5n5GR1y992elfltlEw + repackage-signing-l10n-eu-win64-shippable/opt: RxL2jBVDQe2ABwcFL8UMMg + repackage-signing-l10n-fa-win32-shippable/opt: TeK9ixvBRo2xAf4o0ngK8A + repackage-signing-l10n-fa-win64-aarch64-shippable/opt: cseBIfmJSwqCTen8XtsSOQ + repackage-signing-l10n-fa-win64-shippable/opt: IhePoIZ8SGmpe4rKWJrXxw + repackage-signing-l10n-ff-win32-shippable/opt: B0fX-A2ST56rxkEb_jM2Gw + repackage-signing-l10n-ff-win64-aarch64-shippable/opt: ETBoCnWFTbyC_4WhnbgKbQ + repackage-signing-l10n-ff-win64-shippable/opt: RirLLwxnSzK1L6xXwSd4gw + repackage-signing-l10n-fi-win32-shippable/opt: E5xZbY74SZSaLaN2iopQsg + repackage-signing-l10n-fi-win64-aarch64-shippable/opt: O5NlNU30SQGSgK_WqYJNpg + repackage-signing-l10n-fi-win64-shippable/opt: bIKS3hLZSaW919H-ehu8CA + repackage-signing-l10n-fr-win32-shippable/opt: D7aMjnBWQQySWVzQeTlAAA + repackage-signing-l10n-fr-win64-aarch64-shippable/opt: MltLBZy6T-Kyzzjxs2Dikw + repackage-signing-l10n-fr-win64-shippable/opt: NFU2iglVQVyOjLGU_LYuwQ + repackage-signing-l10n-fur-win32-shippable/opt: WbdQKQzlSb63twNy_Q_IfA + repackage-signing-l10n-fur-win64-aarch64-shippable/opt: Lh3DIa5BTFKb1jVHrlJ8gQ + repackage-signing-l10n-fur-win64-shippable/opt: BK5ZWrOKT8iXn8y9q6AprQ + repackage-signing-l10n-fy-NL-win32-shippable/opt: UQG99aTHTMqO7vTqSziJAg + repackage-signing-l10n-fy-NL-win64-aarch64-shippable/opt: NzgDvWa9QkCYrS0u-PFlKw + repackage-signing-l10n-fy-NL-win64-shippable/opt: Pk0q_DAGT9-URHtYK_oFLA + repackage-signing-l10n-ga-IE-win32-shippable/opt: b8_Bm1p4RZCO8CU1GSMAXA + repackage-signing-l10n-ga-IE-win64-aarch64-shippable/opt: O536SKiRTkCpx5aijv3GVQ + repackage-signing-l10n-ga-IE-win64-shippable/opt: CiLlqfj-TcKVvqoPHKkRNA + repackage-signing-l10n-gd-win32-shippable/opt: EevzqFYXTMqt1qNCBO2hhA + repackage-signing-l10n-gd-win64-aarch64-shippable/opt: TZWNJpLQQZuJr32b8nzQug + repackage-signing-l10n-gd-win64-shippable/opt: S6QpVDbiSc6ZxKPGfmcTOA + repackage-signing-l10n-gl-win32-shippable/opt: A5Av-VwuTymOe6rtfpGUcg + repackage-signing-l10n-gl-win64-aarch64-shippable/opt: XBCAgraxQ5qA96p7mHRbOw + repackage-signing-l10n-gl-win64-shippable/opt: C_AXUi_PSimGSZwlvkcfjg + repackage-signing-l10n-gn-win32-shippable/opt: RVbcSPPtQT-qjF3Kj9_vwg + repackage-signing-l10n-gn-win64-aarch64-shippable/opt: Y5O8BGzATwqhC5sLOijQ3w + repackage-signing-l10n-gn-win64-shippable/opt: BD1npif8Q3ab743DUD3OpA + repackage-signing-l10n-gu-IN-win32-shippable/opt: WqZCLmU4SuafIHAVCHdN7g + repackage-signing-l10n-gu-IN-win64-aarch64-shippable/opt: HeXHOCHaRem-LzjD_B22eg + repackage-signing-l10n-gu-IN-win64-shippable/opt: YTogwRfUSsaPhneT7CpKuA + repackage-signing-l10n-he-win32-shippable/opt: KVNS3zsYQOij7-duWNP6ug + repackage-signing-l10n-he-win64-aarch64-shippable/opt: DLZFdQ6XQfCS2d2iJeXHxA + repackage-signing-l10n-he-win64-shippable/opt: aOl6YNBqRsKwweICRIxojQ + repackage-signing-l10n-hi-IN-win32-shippable/opt: ZTptMCTEQsWtN5JMQL9nnQ + repackage-signing-l10n-hi-IN-win64-aarch64-shippable/opt: HW6iUbDrQaegyEDMsXJFqA + repackage-signing-l10n-hi-IN-win64-shippable/opt: Ihpl-xkFRzeK-g_CRTa1Gw + repackage-signing-l10n-hr-win32-shippable/opt: J14MX3BFQqS4E0uWr2zCIA + repackage-signing-l10n-hr-win64-aarch64-shippable/opt: BFMIAA3TTcCe1RCiDXwGdw + repackage-signing-l10n-hr-win64-shippable/opt: VhULsz8xS1-VUYDJgqRiAA + repackage-signing-l10n-hsb-win32-shippable/opt: DwfPK9b1Sf2r7W4oaZ-aFg + repackage-signing-l10n-hsb-win64-aarch64-shippable/opt: Y20Qo1XnTVCtlHGLBW3FSg + repackage-signing-l10n-hsb-win64-shippable/opt: RoiDKs50R7-LD6bqXncrHw + repackage-signing-l10n-hu-win32-shippable/opt: VQuc8oewQMW--8GWQwJdsQ + repackage-signing-l10n-hu-win64-aarch64-shippable/opt: VXu166uCSH2vG-t45WdtCA + repackage-signing-l10n-hu-win64-shippable/opt: F97nZpjoT2G926um2hIepg + repackage-signing-l10n-hy-AM-win32-shippable/opt: KcL28jmuR8qHcTgrFECB9Q + repackage-signing-l10n-hy-AM-win64-aarch64-shippable/opt: T4jLRAmhT32LLHVs8NWTqw + repackage-signing-l10n-hy-AM-win64-shippable/opt: RwL9d9UXREe5EcRstGKhJQ + repackage-signing-l10n-ia-win32-shippable/opt: FBDlgCUkQ4yZnyFwqnHscw + repackage-signing-l10n-ia-win64-aarch64-shippable/opt: MBF_3qjcRGyWHaCSM1LX1Q + repackage-signing-l10n-ia-win64-shippable/opt: deQlVR-CQjCSC3Q91bxRcA + repackage-signing-l10n-id-win32-shippable/opt: QvBSHnaySVuBWVwT1opHGg + repackage-signing-l10n-id-win64-aarch64-shippable/opt: VVq4G7-DToavxAUDNMS4tg + repackage-signing-l10n-id-win64-shippable/opt: ZLmpNdIlTqmUmNwi4yMHgg + repackage-signing-l10n-is-win32-shippable/opt: I7V5ffcvRPekFqQelDM8sg + repackage-signing-l10n-is-win64-aarch64-shippable/opt: WlM-SLT5QMe5Wg1NfYTNoQ + repackage-signing-l10n-is-win64-shippable/opt: cp1PFHXcRrurSGyQGSNLeg + repackage-signing-l10n-it-win32-shippable/opt: SMcQZNqiQzS0-QoYi8xEig + repackage-signing-l10n-it-win64-aarch64-shippable/opt: BMSEzbgMSrClJbStyLYfcA + repackage-signing-l10n-it-win64-shippable/opt: bgoOx0VZRRu_iIHNf-xhKw + repackage-signing-l10n-ja-win32-shippable/opt: H-l1hx2ZT9y5tgtqRE1yKQ + repackage-signing-l10n-ja-win64-aarch64-shippable/opt: G48AmlUnSB6FvJ9wC1tqNQ + repackage-signing-l10n-ja-win64-shippable/opt: W6BvbyqXTO60UEsrblAIAA + repackage-signing-l10n-ka-win32-shippable/opt: AT8JfMMnTN6qwC6kh6YA6w + repackage-signing-l10n-ka-win64-aarch64-shippable/opt: MRA75tI5TqCOAv5DHEAi8A + repackage-signing-l10n-ka-win64-shippable/opt: FAehEo9lR3OtOeJBlW1Mvw + repackage-signing-l10n-kab-win32-shippable/opt: dvoMMMPNQqW2BVbRRaKSuQ + repackage-signing-l10n-kab-win64-aarch64-shippable/opt: PD1HS_aNQH2A86LFo_YVfA + repackage-signing-l10n-kab-win64-shippable/opt: OrzxMYylQVmvUWbBVM6D9w + repackage-signing-l10n-kk-win32-shippable/opt: AbGOjz-DRKm1zJyJr8rcWg + repackage-signing-l10n-kk-win64-aarch64-shippable/opt: Q-Q7UJEERqO5jYDlQkO1OA + repackage-signing-l10n-kk-win64-shippable/opt: FevIKw8yTQC8zSqAssNfOw + repackage-signing-l10n-km-win32-shippable/opt: CZsutYiRTG6_ijQTggpxUQ + repackage-signing-l10n-km-win64-aarch64-shippable/opt: MXZ4fNwwTTmKM0MYYGUNrA + repackage-signing-l10n-km-win64-shippable/opt: GJ-K5Hb4QNOFVDCkpu52vA + repackage-signing-l10n-kn-win32-shippable/opt: EKIrMyfuS0O_pY7tV5rS9Q + repackage-signing-l10n-kn-win64-aarch64-shippable/opt: SPt1DAFCRDaJr58Mg5IdYQ + repackage-signing-l10n-kn-win64-shippable/opt: Vpli-YvhS--XKF-IkasXUg + repackage-signing-l10n-ko-win32-shippable/opt: dH5x-gBRQ8ikBNOLXf8s2w + repackage-signing-l10n-ko-win64-aarch64-shippable/opt: ZODjoVZYSDmd59lN6Hew9Q + repackage-signing-l10n-ko-win64-shippable/opt: dp4ZxeRjR4m8FiDsZLwUBQ + repackage-signing-l10n-lij-win32-shippable/opt: JfkAmMNZR4SF8-gcDO2iMA + repackage-signing-l10n-lij-win64-aarch64-shippable/opt: dubbG-3PRy6BjzPmePjUSQ + repackage-signing-l10n-lij-win64-shippable/opt: eRBbGQrGRWuK0IoaRye0Xg + repackage-signing-l10n-lt-win32-shippable/opt: TpsFAPv5SxmOQ_icUzlQLQ + repackage-signing-l10n-lt-win64-aarch64-shippable/opt: COHQnVHeSmKA6I_8bl9bvg + repackage-signing-l10n-lt-win64-shippable/opt: LBi95J0uQtKpTqzwb4AKyQ + repackage-signing-l10n-lv-win32-shippable/opt: AvSAxuIQRPmUseIVw_1lNw + repackage-signing-l10n-lv-win64-aarch64-shippable/opt: QcG4PMiIQHaY5KhzsMZwDw + repackage-signing-l10n-lv-win64-shippable/opt: BFEXme91Tk6lcHFoPgzlQA + repackage-signing-l10n-mk-win32-shippable/opt: LA0xWTiYT5u3IPiV0JnV8A + repackage-signing-l10n-mk-win64-aarch64-shippable/opt: NgH6U1jqQ52pUt3Ht56HMg + repackage-signing-l10n-mk-win64-shippable/opt: TQxZ0YtnSkG9Y36luIe4mg + repackage-signing-l10n-mr-win32-shippable/opt: D8abLRj1QYO--C61zOAqJg + repackage-signing-l10n-mr-win64-aarch64-shippable/opt: NTCfV8DCTw2jZTLS5wmH0A + repackage-signing-l10n-mr-win64-shippable/opt: L1towe63QpKSROMx9OGaRw + repackage-signing-l10n-ms-win32-shippable/opt: WqH05rfnTP69gfe_C6MGvQ + repackage-signing-l10n-ms-win64-aarch64-shippable/opt: Bbw9JaPYSuqUUgKIr2zB0Q + repackage-signing-l10n-ms-win64-shippable/opt: CWYkVe6xStCtedsOnnjSsw + repackage-signing-l10n-my-win32-shippable/opt: SM-Ht2MRQluQv2mBT-3oag + repackage-signing-l10n-my-win64-aarch64-shippable/opt: e6dJJ8B0R7WhXUwCd2sTTw + repackage-signing-l10n-my-win64-shippable/opt: fdXvNJOtQUCfHpIJtCyOBA + repackage-signing-l10n-nb-NO-win32-shippable/opt: HJ0u7jLVRmCqQz4X6KVJuw + repackage-signing-l10n-nb-NO-win64-aarch64-shippable/opt: eTrPyfUoSIWnSGfuuOxYJw + repackage-signing-l10n-nb-NO-win64-shippable/opt: Q95Twe23QiiiYcfWaIBrow + repackage-signing-l10n-ne-NP-win32-shippable/opt: GsFnpSIgRwi3-cF0iyt44Q + repackage-signing-l10n-ne-NP-win64-aarch64-shippable/opt: L2w2eVxnTEKFqLXabNeyZA + repackage-signing-l10n-ne-NP-win64-shippable/opt: TAgH6udIRTyGNhmBKWz9KA + repackage-signing-l10n-nl-win32-shippable/opt: OXd6qDElRUOMpoczR7v9iQ + repackage-signing-l10n-nl-win64-aarch64-shippable/opt: OJNJicSOT5Sj38MjYKw0Hg + repackage-signing-l10n-nl-win64-shippable/opt: YZWCOZ4_SnSN4K04Q9gaKg + repackage-signing-l10n-nn-NO-win32-shippable/opt: X64Z4-ruQmiBYcCmsK8lng + repackage-signing-l10n-nn-NO-win64-aarch64-shippable/opt: WDrmmSYuQ9qOOfVcceMQBw + repackage-signing-l10n-nn-NO-win64-shippable/opt: BKXj4l2UREWMz6LcSmGjHg + repackage-signing-l10n-oc-win32-shippable/opt: e67W0C3nSGi_cFqO3DT75g + repackage-signing-l10n-oc-win64-aarch64-shippable/opt: RSqXd0bYSguUQV3oZzh9cQ + repackage-signing-l10n-oc-win64-shippable/opt: Dp0FdA0UR6eSJLfP-RnX9Q + repackage-signing-l10n-pa-IN-win32-shippable/opt: Dr4i9SGYSY2lLKQuqmEfZA + repackage-signing-l10n-pa-IN-win64-aarch64-shippable/opt: D5pinotRS8e7Af2mK1FOPg + repackage-signing-l10n-pa-IN-win64-shippable/opt: SwBf3qgcQVW0eFq0d5A58g + repackage-signing-l10n-pl-win32-shippable/opt: FME44-luSw-gPB1X3BjCDA + repackage-signing-l10n-pl-win64-aarch64-shippable/opt: HanWNaMJTrybU0HEhNsYyA + repackage-signing-l10n-pl-win64-shippable/opt: b2TxRzHiQqC_yRG71VxzPQ + repackage-signing-l10n-pt-BR-win32-shippable/opt: JArAHNzLRtyO19CxzO2FFQ + repackage-signing-l10n-pt-BR-win64-aarch64-shippable/opt: AUQUS0z1Qga6XpTKu8O3hg + repackage-signing-l10n-pt-BR-win64-shippable/opt: TBG26cETSXOpGTFf81HdwA + repackage-signing-l10n-pt-PT-win32-shippable/opt: Cwh38arGSSSiH7Jy-QJRPw + repackage-signing-l10n-pt-PT-win64-aarch64-shippable/opt: HuQWOhFHSNK2J2_MrLKMlg + repackage-signing-l10n-pt-PT-win64-shippable/opt: ffJLLq-RR-aHRkhBzEG_BQ + repackage-signing-l10n-rm-win32-shippable/opt: a6xNJiUwS1-cQj3CbyybWQ + repackage-signing-l10n-rm-win64-aarch64-shippable/opt: D_7BPvk-TPqBNBCK6yoBDg + repackage-signing-l10n-rm-win64-shippable/opt: D0Su8_6SSZKlhuQAQ6_nUw + repackage-signing-l10n-ro-win32-shippable/opt: ZXCXo6mdQCu5pbdCi0Ho2w + repackage-signing-l10n-ro-win64-aarch64-shippable/opt: BH8X6mUXQjuf-3qvSZGnaw + repackage-signing-l10n-ro-win64-shippable/opt: UhwD8Ln6Q1yx_XZ1kSSMHA + repackage-signing-l10n-ru-win32-shippable/opt: TLG0tiupRHCBx2rU1mVBgQ + repackage-signing-l10n-ru-win64-aarch64-shippable/opt: Yu6QcrlbSyaMSgtosHhQ6g + repackage-signing-l10n-ru-win64-shippable/opt: IBe3XjG7S1Guk9tOrYQZPA + repackage-signing-l10n-sc-win32-shippable/opt: IavjhtL6RS2XigdcIoxjUQ + repackage-signing-l10n-sc-win64-aarch64-shippable/opt: SgvItnsKSPyi79WN-GKIaQ + repackage-signing-l10n-sc-win64-shippable/opt: RusG6hS-RNCxhTVRLxJ7Uw + repackage-signing-l10n-sco-win32-shippable/opt: PMYDVHHsQQiiSvMgPYqXcQ + repackage-signing-l10n-sco-win64-aarch64-shippable/opt: O1ml1pIJQseBX4UT8G3Wrw + repackage-signing-l10n-sco-win64-shippable/opt: M5RUH2eBTAieGD00LOkM2w + repackage-signing-l10n-si-win32-shippable/opt: ckvwvAzeTTeRRRiuSk8BxQ + repackage-signing-l10n-si-win64-aarch64-shippable/opt: IJa4azqpRECuvu9tp5cmVA + repackage-signing-l10n-si-win64-shippable/opt: cX3muXDcQdWO7qJ1iVrk8A + repackage-signing-l10n-sk-win32-shippable/opt: a3O5_SOwT2exxBTYMalWIw + repackage-signing-l10n-sk-win64-aarch64-shippable/opt: ScZsfD1NSw-6HZxesOLdGA + repackage-signing-l10n-sk-win64-shippable/opt: aqJ78tmcSAm7eUgJp3tdaA + repackage-signing-l10n-sl-win32-shippable/opt: ITP-DWMcT3SgBHXOwqxZgw + repackage-signing-l10n-sl-win64-aarch64-shippable/opt: GeLoTRrSRFe7A2IbVCc2TA + repackage-signing-l10n-sl-win64-shippable/opt: dI0jSc0YRpadJ0rK8rqjvQ + repackage-signing-l10n-son-win32-shippable/opt: MYwxkk7fQlKSMSYxjysXtg + repackage-signing-l10n-son-win64-aarch64-shippable/opt: MCY27MImQBulFIjdXa3XuQ + repackage-signing-l10n-son-win64-shippable/opt: PQd-iibSQwCFaPS0fsLpEA + repackage-signing-l10n-sq-win32-shippable/opt: HF_uvk4NTO6Pw9M9G6MORw + repackage-signing-l10n-sq-win64-aarch64-shippable/opt: F7NFlzcOTByChZDVQcel4w + repackage-signing-l10n-sq-win64-shippable/opt: YmEPqhE_SBuflhKbsQqR1A + repackage-signing-l10n-sr-win32-shippable/opt: cJysdjmqQ82kqgwbC59eyg + repackage-signing-l10n-sr-win64-aarch64-shippable/opt: bXVwFPFhSOqy6G_2vzBZvw + repackage-signing-l10n-sr-win64-shippable/opt: WZE9EPc5RseQfzLMsqF3Xw + repackage-signing-l10n-sv-SE-win32-shippable/opt: MN70o6x9TUqOjG_wB5sYZg + repackage-signing-l10n-sv-SE-win64-aarch64-shippable/opt: Aqo-o7kpTpWi0Fj1sQ6o7A + repackage-signing-l10n-sv-SE-win64-shippable/opt: UPmqzUc7TqiTHlvIcC4p-A + repackage-signing-l10n-szl-win32-shippable/opt: MFQCCmjKRvC78UK3N6IgQA + repackage-signing-l10n-szl-win64-aarch64-shippable/opt: ZypA1Jj-Rwyme8ydAM3D3w + repackage-signing-l10n-szl-win64-shippable/opt: RX5kNv3MQnSRF2VUDITgrQ + repackage-signing-l10n-ta-win32-shippable/opt: bM5YtxXpSguTz39NN5yvpg + repackage-signing-l10n-ta-win64-aarch64-shippable/opt: Psw1CQdqS62qtYF4pqEyfg + repackage-signing-l10n-ta-win64-shippable/opt: Etq7oC0VSHO7S9CP6Ce-Iw + repackage-signing-l10n-te-win32-shippable/opt: RtnFZW6jRv-AfCZuO5cHwA + repackage-signing-l10n-te-win64-aarch64-shippable/opt: Kq-cL4GsTGu82k2VVhSDfQ + repackage-signing-l10n-te-win64-shippable/opt: PASxzUngRvSJbJ5pXzMYnQ + repackage-signing-l10n-tg-win32-shippable/opt: cbtxdMIIT0ie3-x3OKug4w + repackage-signing-l10n-tg-win64-aarch64-shippable/opt: LhBRaf5hQB2r9HrAU43y3A + repackage-signing-l10n-tg-win64-shippable/opt: Bta1g0hvQVCYahZhRBe4ag + repackage-signing-l10n-th-win32-shippable/opt: aukFlFIMTU-JMt48lSoQwA + repackage-signing-l10n-th-win64-aarch64-shippable/opt: fCU7HinTQqiowmGTXyJPFQ + repackage-signing-l10n-th-win64-shippable/opt: D-JYPo03TKy8CfQNMxttsw + repackage-signing-l10n-tl-win32-shippable/opt: SDuqFf3YSMaW1JCpF_cWjQ + repackage-signing-l10n-tl-win64-aarch64-shippable/opt: XAv1APoPRRySOQVFa6HO9w + repackage-signing-l10n-tl-win64-shippable/opt: CrSKH8GeQzK9s2feIp4RBA + repackage-signing-l10n-tr-win32-shippable/opt: VF88w-OrTJaKX_aD-22i4w + repackage-signing-l10n-tr-win64-aarch64-shippable/opt: WDpvRxfPQniYA6lBlikxEw + repackage-signing-l10n-tr-win64-shippable/opt: ZD24vn9sRxWz_lmzOfVKPQ + repackage-signing-l10n-trs-win32-shippable/opt: WmpDs3hMTvK9MfWapXzT4g + repackage-signing-l10n-trs-win64-aarch64-shippable/opt: PrRZqCXhQ4mLuz2WfPTpHg + repackage-signing-l10n-trs-win64-shippable/opt: HSWd3BrVSsm1sNOOCJslnQ + repackage-signing-l10n-uk-win32-shippable/opt: Tn1lC8arTnWnPko_SiUqxQ + repackage-signing-l10n-uk-win64-aarch64-shippable/opt: Nl311BFmSd2kKxPGI7MOgA + repackage-signing-l10n-uk-win64-shippable/opt: OwbbOECdRiOAq-AEFT85ZA + repackage-signing-l10n-ur-win32-shippable/opt: EJfqm1HhTh-98hvqs1qnuQ + repackage-signing-l10n-ur-win64-aarch64-shippable/opt: ShUtmxPhRrWIHgaa0Un_FA + repackage-signing-l10n-ur-win64-shippable/opt: XYrf21gKQ_q0goB0jALLOQ + repackage-signing-l10n-uz-win32-shippable/opt: fvfRnrDIS0Wcu1TjusiLUg + repackage-signing-l10n-uz-win64-aarch64-shippable/opt: UoN5VCWUTdePi6yABQ9QMw + repackage-signing-l10n-uz-win64-shippable/opt: bqyPR-ESRim6mf29ptU9cw + repackage-signing-l10n-vi-win32-shippable/opt: BxANk9SETQunLjYMhWY_pQ + repackage-signing-l10n-vi-win64-aarch64-shippable/opt: NQ9TWqjpTHikFCSuuCrbGQ + repackage-signing-l10n-vi-win64-shippable/opt: V_9rZ2vuTpquu_ODH0-UjQ + repackage-signing-l10n-xh-win32-shippable/opt: UTdsp-sTRa2ZN322en1h8g + repackage-signing-l10n-xh-win64-aarch64-shippable/opt: UrQOVUFERSmme5RHinV_gA + repackage-signing-l10n-xh-win64-shippable/opt: cK6kbV9nTTClyr0bBgF5kA + repackage-signing-l10n-zh-CN-win32-shippable/opt: aZ5d_SitTKa2Rjwf4HqfXw + repackage-signing-l10n-zh-CN-win64-aarch64-shippable/opt: LKsUdr6YTaGmAj2Jge-6BQ + repackage-signing-l10n-zh-CN-win64-shippable/opt: Q6eG1ZxIQZ6mBmx2XRHFfA + repackage-signing-l10n-zh-TW-win32-shippable/opt: HFao6kGBRQaJ8gOLTAk4fA + repackage-signing-l10n-zh-TW-win64-aarch64-shippable/opt: EqdxnPQnRDSCLhXihSLSDQ + repackage-signing-l10n-zh-TW-win64-shippable/opt: Fyvoi8voTiKSe4vmG7MmAQ + repackage-signing-msi-ach-win32-shippable/opt: U4Yiq1GTSbuA5CPpOjw5AA + repackage-signing-msi-ach-win64-shippable/opt: J7NPnplGRIW1afsO3s-8pw + repackage-signing-msi-af-win32-shippable/opt: WE-APn3BQ8WlndM1qY_WHA + repackage-signing-msi-af-win64-shippable/opt: fBVli044S0qI96NH3nh31g + repackage-signing-msi-an-win32-shippable/opt: RfcJAcdfQYSWm5s3yP489w + repackage-signing-msi-an-win64-shippable/opt: T8jwmq86QKy7Ixs98a9HBA + repackage-signing-msi-ar-win32-shippable/opt: Sl6aEOBDTEetBYI92cOrww + repackage-signing-msi-ar-win64-shippable/opt: fMatTo4TSS6pPt6UHxmkAw + repackage-signing-msi-ast-win32-shippable/opt: EFwCT2IsRGWdtGuPVnF9Pg + repackage-signing-msi-ast-win64-shippable/opt: Cx9bHfWiTy261dD7YW0wYQ + repackage-signing-msi-az-win32-shippable/opt: QaOmG1wbTri85bWhqJr27Q + repackage-signing-msi-az-win64-shippable/opt: WGwaGp-1RzKieakggbBb-w + repackage-signing-msi-be-win32-shippable/opt: DqWv8gzzTYya3wS-gf6wAw + repackage-signing-msi-be-win64-shippable/opt: SDuQHppPTBqlDOTUYP_j6Q + repackage-signing-msi-bg-win32-shippable/opt: Y4kjQHj2TLSX37LIhOzhFg + repackage-signing-msi-bg-win64-shippable/opt: B-pfQgIoROiatCOnVH_gow + repackage-signing-msi-bn-win32-shippable/opt: JyhWpzEaSZi0fjtyHzgLWw + repackage-signing-msi-bn-win64-shippable/opt: VFubiRctRGmHCCPPxjh9oA + repackage-signing-msi-br-win32-shippable/opt: PihJBouwQ9u3MtbWUoBoKg + repackage-signing-msi-br-win64-shippable/opt: WaDKjbLkQ4KpfQlCBxk0EQ + repackage-signing-msi-bs-win32-shippable/opt: dVVCy_WUQMKnUvHv6H53ag + repackage-signing-msi-bs-win64-shippable/opt: ejY0BzJlSJebx9-JxrShRQ + repackage-signing-msi-ca-valencia-win32-shippable/opt: FZ3RHhQGTESK93WqzL2IJw + repackage-signing-msi-ca-valencia-win64-shippable/opt: Fx43OZvEQBWTa0qTXfiLaw + repackage-signing-msi-ca-win32-shippable/opt: HMVFRfUSQROJ--n2MkezZg + repackage-signing-msi-ca-win64-shippable/opt: cF691TisSfOhYeT39czwnA + repackage-signing-msi-cak-win32-shippable/opt: EsM3TXG8Q0KmbshVRSB21Q + repackage-signing-msi-cak-win64-shippable/opt: QbQjZ8XCR06z0Owd7pgjRA + repackage-signing-msi-cs-win32-shippable/opt: XKtsoktpSQe5UhfEtq9asw + repackage-signing-msi-cs-win64-shippable/opt: A7TutwPoRCCVw8OBN2W6DA + repackage-signing-msi-cy-win32-shippable/opt: ah8ZSpqMTS66dBWEfOoGBw + repackage-signing-msi-cy-win64-shippable/opt: ODeCFCIHS7mqi18dXOiLcg + repackage-signing-msi-da-win32-shippable/opt: MXXuv1tGSmWbiSdyIFwT7A + repackage-signing-msi-da-win64-shippable/opt: F30fT7nmRK6xe8gnP-IHSA + repackage-signing-msi-de-win32-shippable/opt: TuDAkN-_QfyoD6co6p9dfQ + repackage-signing-msi-de-win64-shippable/opt: dJslOU_zSW6vQF67LXMsmQ + repackage-signing-msi-dsb-win32-shippable/opt: YEgWSgLeRlW5__ziU6Lymg + repackage-signing-msi-dsb-win64-shippable/opt: NYPwfL1fSy2QgOywhPjILA + repackage-signing-msi-el-win32-shippable/opt: OhipwyPKQcCaYJ2i65DZww + repackage-signing-msi-el-win64-shippable/opt: ZHv3Y2aXTOyNjo89LKlsAg + repackage-signing-msi-en-CA-win32-shippable/opt: eEXaiEdRQziFYtUzE8A7qA + repackage-signing-msi-en-CA-win64-shippable/opt: EX9-oQv_RJazag6Q9wgZUA + repackage-signing-msi-en-GB-win32-shippable/opt: TJXMUMz-SuKcRDhpFKSJRg + repackage-signing-msi-en-GB-win64-shippable/opt: BEC3ZuJ4S_KLyaQ5t75hLg + repackage-signing-msi-eo-win32-shippable/opt: LRFeeSgWTO6THg4fgn84Ew + repackage-signing-msi-eo-win64-shippable/opt: VLADOAMYQ1mX5udybi-vYQ + repackage-signing-msi-es-AR-win32-shippable/opt: DKpCuPqhQa-LT9I0lxuzvw + repackage-signing-msi-es-AR-win64-shippable/opt: XsKjGN-sTlmOD_o2g_FRCA + repackage-signing-msi-es-CL-win32-shippable/opt: BYbuHVBzSMOacDSDozAclg + repackage-signing-msi-es-CL-win64-shippable/opt: ZW1mY1d2Ty-tHXJamYZRxg + repackage-signing-msi-es-ES-win32-shippable/opt: OEbX4byPSBy7yLTJ6dpJJg + repackage-signing-msi-es-ES-win64-shippable/opt: Q3L3hxTAS8W6D61VxyvocA + repackage-signing-msi-es-MX-win32-shippable/opt: UwFE1Xo3Sdi4xn6pmnxQOg + repackage-signing-msi-es-MX-win64-shippable/opt: OtpT2mDiQr-RwVxLKE2m-Q + repackage-signing-msi-et-win32-shippable/opt: Rug0HEzpQSKsKnZNWXylIQ + repackage-signing-msi-et-win64-shippable/opt: FN6TYED5RdSnJ0PwSJ0Emg + repackage-signing-msi-eu-win32-shippable/opt: KTP-tfwaS-iWSw7MA9-VWA + repackage-signing-msi-eu-win64-shippable/opt: bG0OFek6SCeG6xydYNSsTQ + repackage-signing-msi-fa-win32-shippable/opt: AzWmjO_1SuuTF25L_mGlsQ + repackage-signing-msi-fa-win64-shippable/opt: KEK1JsilRQ6ri6wqo16_Uw + repackage-signing-msi-ff-win32-shippable/opt: UF_n8bHBQ-2m4urMtGa-pw + repackage-signing-msi-ff-win64-shippable/opt: b-iwnysgTKiTZhVgU0t7Qw + repackage-signing-msi-fi-win32-shippable/opt: SZ3JOrRSSSaO75frJ3wXdQ + repackage-signing-msi-fi-win64-shippable/opt: fRK7TEulQ42US5oCBi4r5A + repackage-signing-msi-fr-win32-shippable/opt: SWETOpT-SOmZ1vmrdKBPwQ + repackage-signing-msi-fr-win64-shippable/opt: Np960Ym9ReevLgOScbp4eg + repackage-signing-msi-fur-win32-shippable/opt: Tg4n9Hn8QlG4unzdTZngCg + repackage-signing-msi-fur-win64-shippable/opt: E1Jpx3bTSauPYNiBMmXBTQ + repackage-signing-msi-fy-NL-win32-shippable/opt: fYV2jR5ITTyj66FG7xSYBQ + repackage-signing-msi-fy-NL-win64-shippable/opt: WiXa17LJS36DjAG5S7Fn9Q + repackage-signing-msi-ga-IE-win32-shippable/opt: KuMJbWR1Riew3Zl1NKHLAw + repackage-signing-msi-ga-IE-win64-shippable/opt: CDLjpjU5RV-ANQD3WmElvA + repackage-signing-msi-gd-win32-shippable/opt: U2HFo524SEi5NGd4ZzPdng + repackage-signing-msi-gd-win64-shippable/opt: fRoES4AIQCGXOuSQrr0h1Q + repackage-signing-msi-gl-win32-shippable/opt: Ep9-Z0SUQ8ijO_Dzmi7Y1g + repackage-signing-msi-gl-win64-shippable/opt: aJqtt-7PRrusvqBxHFZf7A + repackage-signing-msi-gn-win32-shippable/opt: L_sLMl4wSMimbTSpsRbzMQ + repackage-signing-msi-gn-win64-shippable/opt: ex3_sIcMQ2WG6oFkhEti-A + repackage-signing-msi-gu-IN-win32-shippable/opt: UURGiuHbQi-OIJ21IWN11Q + repackage-signing-msi-gu-IN-win64-shippable/opt: TA_Aiw18T5CTH4GznBlgLw + repackage-signing-msi-he-win32-shippable/opt: dHmRA9fxRzWclslZLPeGxg + repackage-signing-msi-he-win64-shippable/opt: JJqtUKj5TOWl1x7UIyx9qQ + repackage-signing-msi-hi-IN-win32-shippable/opt: Ef1esJoAR_CZ_3kyGK8O4Q + repackage-signing-msi-hi-IN-win64-shippable/opt: UacInoswSM-td0cu3GiMnQ + repackage-signing-msi-hr-win32-shippable/opt: GRbOTX4BTXqX7XKkXxxGjQ + repackage-signing-msi-hr-win64-shippable/opt: QjmMh5SkSlWHYOhUZrN-wg + repackage-signing-msi-hsb-win32-shippable/opt: WYa8Fa3xR8SeK7H3rFrcdw + repackage-signing-msi-hsb-win64-shippable/opt: VRjQDUdUTmux5nifdKOWxQ + repackage-signing-msi-hu-win32-shippable/opt: NVpcxrpdSPK2X9tZvKwj4A + repackage-signing-msi-hu-win64-shippable/opt: cokDAgFUSQCaUwbvJ-iJtg + repackage-signing-msi-hy-AM-win32-shippable/opt: BJoJARL1RzOvN5EmI1stYQ + repackage-signing-msi-hy-AM-win64-shippable/opt: eo7uvdJsSfa7oRfayjRtxw + repackage-signing-msi-ia-win32-shippable/opt: G3ECJFTTRYma9v0QeTFGzQ + repackage-signing-msi-ia-win64-shippable/opt: Rg25XVstQtym2KAkPI4o8w + repackage-signing-msi-id-win32-shippable/opt: KnhU7rHmRjapUv2tPrzpOA + repackage-signing-msi-id-win64-shippable/opt: Tj8XvGO-QhmTUzi_97STRg + repackage-signing-msi-is-win32-shippable/opt: Ebxea9w6RpufoyGn3XJNbw + repackage-signing-msi-is-win64-shippable/opt: MKCXrE-yQnuNDa9ubQ5LZw + repackage-signing-msi-it-win32-shippable/opt: P6NoYDVATdWHcNuYAxoD_Q + repackage-signing-msi-it-win64-shippable/opt: JFnf_mZnRvutFnrm6HwaFQ + repackage-signing-msi-ja-win32-shippable/opt: a6QwPe2OSl2DytmEt24Hzg + repackage-signing-msi-ja-win64-shippable/opt: KupJRqL2TJSkBM96PhDXyg + repackage-signing-msi-ka-win32-shippable/opt: KKZwOzVMS--Hx8w0d792tQ + repackage-signing-msi-ka-win64-shippable/opt: Dlfqr4S0S1a5gtkZzo2W8g + repackage-signing-msi-kab-win32-shippable/opt: XVkfk4YFSZGn62YuPF9xsA + repackage-signing-msi-kab-win64-shippable/opt: fQys_s5OS-SXAEUAbOccgA + repackage-signing-msi-kk-win32-shippable/opt: Cue2QrjZRSmokS2yZiuKdA + repackage-signing-msi-kk-win64-shippable/opt: KA4xnDE7RWOLsqyB1UPXXA + repackage-signing-msi-km-win32-shippable/opt: ECHp7KCFRGm6f_ZbHPbLaQ + repackage-signing-msi-km-win64-shippable/opt: N8k8U_tDRqqnnM0icifcVQ + repackage-signing-msi-kn-win32-shippable/opt: T97VIt1iTGu7vH8cCGwR4w + repackage-signing-msi-kn-win64-shippable/opt: WITAyxrvQ_2EJM7ew48g4g + repackage-signing-msi-ko-win32-shippable/opt: Z_-qqWIYTUi21L1g8gMpaA + repackage-signing-msi-ko-win64-shippable/opt: St5rUTFGRGm29OFgiZMvPg + repackage-signing-msi-lij-win32-shippable/opt: CgCiGEmSRnqygwL5IiYwhg + repackage-signing-msi-lij-win64-shippable/opt: AI20x8EFRpWHWarJiT-GSA + repackage-signing-msi-lt-win32-shippable/opt: H4orxpnOSVyjWCuMqoXg-A + repackage-signing-msi-lt-win64-shippable/opt: fFthFgC7QiKbt0-sEYVM0Q + repackage-signing-msi-lv-win32-shippable/opt: ekfeRy8pR_-MjauKsylHag + repackage-signing-msi-lv-win64-shippable/opt: EJebbENrQTOISzNo2X9_Eg + repackage-signing-msi-mk-win32-shippable/opt: Mh7wWaqdTOSQmH4mJCgonw + repackage-signing-msi-mk-win64-shippable/opt: Z6RB7kh2QGSBdvMzNhNOSA + repackage-signing-msi-mr-win32-shippable/opt: SvrEl2NjRHq-B58NYDtKDQ + repackage-signing-msi-mr-win64-shippable/opt: GFqeMQjLRVOXW5ATL1FFrg + repackage-signing-msi-ms-win32-shippable/opt: Spo7U6rgTZ2EQXJC1AcBdw + repackage-signing-msi-ms-win64-shippable/opt: Z7Y2N2DxTw-9wXBUwMK1PA + repackage-signing-msi-my-win32-shippable/opt: NjmFcPRqRzSAlMKrYM_HMA + repackage-signing-msi-my-win64-shippable/opt: TcNUfPr4Rq-wflOVwlt3KA + repackage-signing-msi-nb-NO-win32-shippable/opt: RCqkLZ5WTnK5R7Kmmomr4A + repackage-signing-msi-nb-NO-win64-shippable/opt: Bvv57sSrTlynbaTaHTqf0Q + repackage-signing-msi-ne-NP-win32-shippable/opt: JjuZLgW-TEOkBwltRrBIig + repackage-signing-msi-ne-NP-win64-shippable/opt: Wyd8RWyjTymINivuPKl-2A + repackage-signing-msi-nl-win32-shippable/opt: NK_JfXvcS3mss_fP4wza8A + repackage-signing-msi-nl-win64-shippable/opt: ZpBIBupWSDGs2BSmXMlaMw + repackage-signing-msi-nn-NO-win32-shippable/opt: bZSd96A6S96tcUSfBnbXtw + repackage-signing-msi-nn-NO-win64-shippable/opt: V5c50jJcQF2nmywqDEBvtA + repackage-signing-msi-oc-win32-shippable/opt: FjWBUDrmSxeyGSaUBhkz0g + repackage-signing-msi-oc-win64-shippable/opt: fFs9mV4kR6GVnTzlo22IGA + repackage-signing-msi-pa-IN-win32-shippable/opt: dxGraDDMSEyEcxvLa7xrqQ + repackage-signing-msi-pa-IN-win64-shippable/opt: AkHBEqy4Q7Gc7FOpJr3kPQ + repackage-signing-msi-pl-win32-shippable/opt: I2KvDzLORQ-UdQZVvpOwBA + repackage-signing-msi-pl-win64-shippable/opt: MgVpywwjSNu_6ec-OOcbIA + repackage-signing-msi-pt-BR-win32-shippable/opt: R-h4tpYnQGeN90huBHvQkg + repackage-signing-msi-pt-BR-win64-shippable/opt: NqEdKpC1T5qJpuetpjpRZA + repackage-signing-msi-pt-PT-win32-shippable/opt: I-zUNVZQQ9K4LpqG0t8pWA + repackage-signing-msi-pt-PT-win64-shippable/opt: NOoh5QXTRumWgK24dznw-g + repackage-signing-msi-rm-win32-shippable/opt: E6xPUEfaRxCZX66WPYsJ6Q + repackage-signing-msi-rm-win64-shippable/opt: JS0Z_3OiRgqZwfSPnVmMiQ + repackage-signing-msi-ro-win32-shippable/opt: Sj4VXYbCRgqmbc1WX92CWQ + repackage-signing-msi-ro-win64-shippable/opt: WXYRPkopR_Kb0GUEhnyv_g + repackage-signing-msi-ru-win32-shippable/opt: NVp8Op9cS8WblpPrAWEq5w + repackage-signing-msi-ru-win64-shippable/opt: Tut8Nde8RlOggxfCz4jUtg + repackage-signing-msi-sc-win32-shippable/opt: A4pnubcIRPqe8zF5ONfIVw + repackage-signing-msi-sc-win64-shippable/opt: QhHyVLkvR3e2xuNDNTJNRA + repackage-signing-msi-sco-win32-shippable/opt: FpfURmM4STWkFZmALibpaQ + repackage-signing-msi-sco-win64-shippable/opt: L0wg3l0lSQejIGSUYOo3MA + repackage-signing-msi-si-win32-shippable/opt: NF8MJiZ1QviKjw7bmkVMCQ + repackage-signing-msi-si-win64-shippable/opt: WUBZcaUbSEi-AMsW_g_N0Q + repackage-signing-msi-sk-win32-shippable/opt: cM_xz96mRcKkBfeEtewD2Q + repackage-signing-msi-sk-win64-shippable/opt: Fh0rCXroQmSiu-oQlPG_SA + repackage-signing-msi-sl-win32-shippable/opt: QDIf9gMnTiu-WjdyXfyQNg + repackage-signing-msi-sl-win64-shippable/opt: e3lqwsvETJyRup0sIAPD6A + repackage-signing-msi-son-win32-shippable/opt: FFRY1TdJQ5mRevn94_7SUg + repackage-signing-msi-son-win64-shippable/opt: K9EkY1ofRjqLACVhFW4ZIg + repackage-signing-msi-sq-win32-shippable/opt: ZhgajE5UTPWehA56p8HlbA + repackage-signing-msi-sq-win64-shippable/opt: HDqcE_53TO-yllgabxxdgw + repackage-signing-msi-sr-win32-shippable/opt: I41L9EvmS66alqA1qOekyA + repackage-signing-msi-sr-win64-shippable/opt: StBjtrUEQqm4kzLcA94AJA + repackage-signing-msi-sv-SE-win32-shippable/opt: LK-oHSr1RtO3Y-o6UDd-NQ + repackage-signing-msi-sv-SE-win64-shippable/opt: DhnKbxfeRMarRkstAG1zBA + repackage-signing-msi-szl-win32-shippable/opt: U2iHNWIkRR6pqI_3mTYh8g + repackage-signing-msi-szl-win64-shippable/opt: UpFBauhFT5qnNFYqoO9Xhg + repackage-signing-msi-ta-win32-shippable/opt: PubURZMNTP6g7lg-tLlN1w + repackage-signing-msi-ta-win64-shippable/opt: b2TqtWd9Sf6f9pjJAgqfkQ + repackage-signing-msi-te-win32-shippable/opt: aJSygkrlRcCw4Seb6kLK7w + repackage-signing-msi-te-win64-shippable/opt: KFL7hBj1S3qXr5NrdMdoDQ + repackage-signing-msi-tg-win32-shippable/opt: YegRKEJDQ_isNgkN0jD7jw + repackage-signing-msi-tg-win64-shippable/opt: ANymnr2QToONmq59P9yTng + repackage-signing-msi-th-win32-shippable/opt: PsBQIvbqRoCveTHT_heiUg + repackage-signing-msi-th-win64-shippable/opt: JVpJWAEjSae13eTLu74KkQ + repackage-signing-msi-tl-win32-shippable/opt: SeKN_psqQ-Gb5rgrMNnngQ + repackage-signing-msi-tl-win64-shippable/opt: WCQMS5j-TR6NQgvq6GhC1Q + repackage-signing-msi-tr-win32-shippable/opt: NH2HEKF4TmuK2KF8TWHt_A + repackage-signing-msi-tr-win64-shippable/opt: FdWuf0fuRIKvSE40Is3nww + repackage-signing-msi-trs-win32-shippable/opt: ZN7hMjnsQ66KerJ3DKfTIw + repackage-signing-msi-trs-win64-shippable/opt: Hs6q3SR6QeyPMLbOWEgxbw + repackage-signing-msi-uk-win32-shippable/opt: HptjZFiASheThJsKG2EyTA + repackage-signing-msi-uk-win64-shippable/opt: E85nJSHgQJqADLBc9OLf7w + repackage-signing-msi-ur-win32-shippable/opt: IBtu-M0WTWWXnhWC89CsCQ + repackage-signing-msi-ur-win64-shippable/opt: N2ewRVtDRsuFxpEXkj8vrQ + repackage-signing-msi-uz-win32-shippable/opt: fcoHPrE8RXOWX04mhtj34g + repackage-signing-msi-uz-win64-shippable/opt: OlnwkcG2SreRb7m6MhRMzg + repackage-signing-msi-vi-win32-shippable/opt: PjEuWGwTQD-G21YizoeJ2g + repackage-signing-msi-vi-win64-shippable/opt: UemISc9RQMW6yHAM2YSJyA + repackage-signing-msi-win32-shippable/opt: ct_KAxlUT3We5ytogUyijg + repackage-signing-msi-win64-shippable/opt: NvWc7g99T5Ko1oU2zPihXw + repackage-signing-msi-xh-win32-shippable/opt: XbquN_ZmQBKqqu5MRyeoZw + repackage-signing-msi-xh-win64-shippable/opt: Yu6sygadQWKMvlQjRQlr0w + repackage-signing-msi-zh-CN-win32-shippable/opt: alDk3mi9R6mudabp_eFo-w + repackage-signing-msi-zh-CN-win64-shippable/opt: FxWFJdbxSNqJjv5yIBdXHA + repackage-signing-msi-zh-TW-win32-shippable/opt: MNABtJGXTSOxfCB0lMmTag + repackage-signing-msi-zh-TW-win64-shippable/opt: e3JWE9ZiQBeqCjIP1cCXMQ + repackage-signing-msix-win64/debug: f_9YbH4xQWSJfzceo5pNog + repackage-signing-shippable-l10n-msix-win32-shippable/opt: HBay9vdqQjm6pYEzSD8axw + repackage-signing-shippable-l10n-msix-win64-shippable/opt: W9NAQXs5Syu_hZLH3AiXpg + repackage-signing-win32-shippable/opt: D5cGUTBHQ-WXhv1YhSZ0zA + repackage-signing-win64-aarch64-shippable/opt: HO5UFPKqR56AfXbvBvlmSw + repackage-signing-win64-shippable/opt: QNG3tk8DTwyXHueaAtSF9w + repackage-win32-shippable/opt: MYc8d3oBTjSUqmAaKSfuMw + repackage-win64-aarch64-shippable/opt: PhwO-BmVSRezkZsIjk0Mhg + repackage-win64-shippable/opt: P6nD-gtqQeinZ_HRN__GLg + shippable-l10n-linux-shippable-1/opt: ZSDoLw5BTS2m6GEaAHMsYg + shippable-l10n-linux-shippable-10/opt: RTxy2DuLQZyIMBTyX3toSg + shippable-l10n-linux-shippable-11/opt: EYymAm3ATxWfyrlmdotZEw + shippable-l10n-linux-shippable-12/opt: X8CChXm0Q-iMWeGPcMafAQ + shippable-l10n-linux-shippable-13/opt: QOxLOT8xQki_7LdOFI03sw + shippable-l10n-linux-shippable-14/opt: P2-7k3wRSIKvYTLPXMaKTg + shippable-l10n-linux-shippable-15/opt: WPbcPKAdQ9G0g-GxYD85SA + shippable-l10n-linux-shippable-16/opt: A_6snnS5Q0eN1oHUX-4o1A + shippable-l10n-linux-shippable-17/opt: K1EjGqPxS-uUoV-PcuAZwQ + shippable-l10n-linux-shippable-18/opt: BcYVULmTQdWaB83ZNzK6pA + shippable-l10n-linux-shippable-19/opt: BGw_Bk5VQGujgiqX3cu_Ig + shippable-l10n-linux-shippable-2/opt: WqAn9HcITom7GTR3OAwRsA + shippable-l10n-linux-shippable-20/opt: UcI0sqnUTZukTgBJ8Qq49Q + shippable-l10n-linux-shippable-3/opt: I5HfOULqQmycfVLYN0jwrg + shippable-l10n-linux-shippable-4/opt: Spf0Pr6NT82AJvwiLIncZA + shippable-l10n-linux-shippable-5/opt: Bp_nkCxCTUem1Hq-C_3eEQ + shippable-l10n-linux-shippable-6/opt: Q3F5uxWDReqFmXyAx0uy_w + shippable-l10n-linux-shippable-7/opt: Tz8NNFusTTaAXzGlVHLqeA + shippable-l10n-linux-shippable-8/opt: doMUKLvPTgyrcTdMeDTH8Q + shippable-l10n-linux-shippable-9/opt: BB52rKxTROiYxN0PzLElXg + shippable-l10n-linux64-shippable-1/opt: NO-ldAUhRv-pgIOttZjAeQ + shippable-l10n-linux64-shippable-10/opt: N05JVVQyQMKAy610DGe_1w + shippable-l10n-linux64-shippable-11/opt: Gay9gVzHSFimR90AXNyu1A + shippable-l10n-linux64-shippable-12/opt: cJn1NaRUQg6tCY-NbbCpNw + shippable-l10n-linux64-shippable-13/opt: boe9sKPqSWGfQlP6PD_pfg + shippable-l10n-linux64-shippable-14/opt: L9vKDfaySp6bndlih0XdjA + shippable-l10n-linux64-shippable-15/opt: JifxQv67RC6ZKCXbnSXXxg + shippable-l10n-linux64-shippable-16/opt: Oa4qeqWWRgaRP0K2Cp0YTg + shippable-l10n-linux64-shippable-17/opt: GIUDmDMsTQqADKecEPtiiQ + shippable-l10n-linux64-shippable-18/opt: XsPBdi--Qgiv9-HRttUqPA + shippable-l10n-linux64-shippable-19/opt: bk6KnvV7QYesBr5VP0N_-Q + shippable-l10n-linux64-shippable-2/opt: SpGeEaM9Q--wxWPK24Xi6Q + shippable-l10n-linux64-shippable-20/opt: FJOu1_qPS7OFw25exPVLhw + shippable-l10n-linux64-shippable-3/opt: HWYdH4yXQW2L6Bnckvc0kQ + shippable-l10n-linux64-shippable-4/opt: ceMge9qPTlCBe478dTMV2w + shippable-l10n-linux64-shippable-5/opt: DJvRnlG6TSOCTAkRNJrYKA + shippable-l10n-linux64-shippable-6/opt: Yr9zgyjFQV2mnRcWekM3rQ + shippable-l10n-linux64-shippable-7/opt: MLkQZDW9QAKmzpIBXSOKzw + shippable-l10n-linux64-shippable-8/opt: YrFYgP3NT-yPGmitqdm6Aw + shippable-l10n-linux64-shippable-9/opt: Ca9TurHyQWeTbhmlpzdxEQ + shippable-l10n-mac-notarization-macosx64-shippable-1/opt: O9IsYRO7QV2-Uacg908u-w + shippable-l10n-mac-notarization-macosx64-shippable-10/opt: AlR4ztM4SCuC4utLtiUmJg + shippable-l10n-mac-notarization-macosx64-shippable-11/opt: IkmOhcSlSfO4kRDSgogykQ + shippable-l10n-mac-notarization-macosx64-shippable-12/opt: UaWOKGaiStC8JhBJViRhww + shippable-l10n-mac-notarization-macosx64-shippable-13/opt: QwcdZQk6QJ6rXsiAi5_JZw + shippable-l10n-mac-notarization-macosx64-shippable-14/opt: MZNwww8FReiFNOYyOMSPrw + shippable-l10n-mac-notarization-macosx64-shippable-15/opt: LCqN3uY5QD68DkLJ8HIUTw + shippable-l10n-mac-notarization-macosx64-shippable-16/opt: IffIP8_CTdGeTgz-K_yDwQ + shippable-l10n-mac-notarization-macosx64-shippable-17/opt: CsR-5tGQTP2V7s7eae_SEw + shippable-l10n-mac-notarization-macosx64-shippable-18/opt: aX9ytPfcSpGryADnC2Y6ng + shippable-l10n-mac-notarization-macosx64-shippable-19/opt: F1FCChlxQSCIxiDp-GSvSg + shippable-l10n-mac-notarization-macosx64-shippable-2/opt: BNqcMdZ5RdGPSPte-o9cDg + shippable-l10n-mac-notarization-macosx64-shippable-20/opt: EbuoyT1aQXGzb-R5Q0yecw + shippable-l10n-mac-notarization-macosx64-shippable-3/opt: MRbzMZPKRduEB0NRHGm0VA + shippable-l10n-mac-notarization-macosx64-shippable-4/opt: MMHzj_MBQyK_dlXSFod-MA + shippable-l10n-mac-notarization-macosx64-shippable-5/opt: SIjD3Y5jTlKvpo4Gt9f0Yg + shippable-l10n-mac-notarization-macosx64-shippable-6/opt: S0GVRFZpR1GdDbCnB-RKkw + shippable-l10n-mac-notarization-macosx64-shippable-7/opt: f93alAyqSUi7OYRUP5PCKA + shippable-l10n-mac-notarization-macosx64-shippable-8/opt: IukzJi7rQ1qoJpK0WleOBA + shippable-l10n-mac-notarization-macosx64-shippable-9/opt: AWpCO5Y1R9OOtVd2j9WhhA + shippable-l10n-mac-signing-macosx64-shippable-1/opt: RE2XnNKhT2Kh3ehLRz3A7Q + shippable-l10n-mac-signing-macosx64-shippable-10/opt: U_F_R7pbTxKDOVqS3YYSRw + shippable-l10n-mac-signing-macosx64-shippable-11/opt: Hc9z0kOrTRuXealkvrWffg + shippable-l10n-mac-signing-macosx64-shippable-12/opt: H3QjqxanTz-MXgyhUz6xVQ + shippable-l10n-mac-signing-macosx64-shippable-13/opt: f-kbF4xYRguQ87T9vQvESw + shippable-l10n-mac-signing-macosx64-shippable-14/opt: Zobh6g4XRBGSUNVpGtV1Ag + shippable-l10n-mac-signing-macosx64-shippable-15/opt: cxDysiq9Sb-rgvmzDMEWZg + shippable-l10n-mac-signing-macosx64-shippable-16/opt: UwrYAmanSsu60LPr6QPsoQ + shippable-l10n-mac-signing-macosx64-shippable-17/opt: IF-kvwacTVSnPxAeMtyqtA + shippable-l10n-mac-signing-macosx64-shippable-18/opt: fTD4jpnaRdaV2r0MPPe5ig + shippable-l10n-mac-signing-macosx64-shippable-19/opt: eLcTjNGwRQql1htROi2w5g + shippable-l10n-mac-signing-macosx64-shippable-2/opt: AiNFgULeQOCtmjg65qdOcQ + shippable-l10n-mac-signing-macosx64-shippable-20/opt: FzZHGw3KTCyDqN9kbH5r9w + shippable-l10n-mac-signing-macosx64-shippable-3/opt: SJSHJuRnSWeo27MkcfZryQ + shippable-l10n-mac-signing-macosx64-shippable-4/opt: M9oBpd1pR1utQsdsLifLdA + shippable-l10n-mac-signing-macosx64-shippable-5/opt: Vny691LySPioVQlcP0DsWQ + shippable-l10n-mac-signing-macosx64-shippable-6/opt: P21shMzKSTShTU0YH9YzXQ + shippable-l10n-mac-signing-macosx64-shippable-7/opt: WPPyXaM6R-KlxesNYMBApg + shippable-l10n-mac-signing-macosx64-shippable-8/opt: KDKHgDrSS0q5-GJ5oWOXTQ + shippable-l10n-mac-signing-macosx64-shippable-9/opt: Kt53UQ4rRl6AdZ_OozUSLg + shippable-l10n-macosx64-shippable-1/opt: f4Ew3x4wSYCckJN_13HiRA + shippable-l10n-macosx64-shippable-10/opt: KKeOKImiSGujnTiA_hpd_Q + shippable-l10n-macosx64-shippable-11/opt: YXW-DdMtThisOmsQa02_XA + shippable-l10n-macosx64-shippable-12/opt: R40h4O8zQ16QpFvUnWK3mA + shippable-l10n-macosx64-shippable-13/opt: DfGcMf9xTl6hL41pVXzFcg + shippable-l10n-macosx64-shippable-14/opt: fWIre6C6SDejzc7tLrO2-w + shippable-l10n-macosx64-shippable-15/opt: KZD1pHvQSTmr7ik7byHdmA + shippable-l10n-macosx64-shippable-16/opt: av7uNn72Qk-wnvud7J_zVg + shippable-l10n-macosx64-shippable-17/opt: MUZyMOWPRwmim3F8pTVQZQ + shippable-l10n-macosx64-shippable-18/opt: I88RDWdKROK3ZB-LlxhrlA + shippable-l10n-macosx64-shippable-19/opt: aGFhD7l8QD6FVD0NlD7vvw + shippable-l10n-macosx64-shippable-2/opt: N-HfEo7PTmeDKyl6H8T8Fg + shippable-l10n-macosx64-shippable-20/opt: HhoKCVKfT5qQYX6nuDtUjg + shippable-l10n-macosx64-shippable-3/opt: ZlWfUhUmSxapcY9hCDEhsQ + shippable-l10n-macosx64-shippable-4/opt: JRR4zb_QSVW117kfHWa0cA + shippable-l10n-macosx64-shippable-5/opt: YY3HMZGLRTGnd9vn4jjlXA + shippable-l10n-macosx64-shippable-6/opt: dszYPlRUS1qfYVvv2ChYxg + shippable-l10n-macosx64-shippable-7/opt: TEvf9d6bT2uvuUmNPur3Gw + shippable-l10n-macosx64-shippable-8/opt: FSMqXU00QCSQoadMFL_3mQ + shippable-l10n-macosx64-shippable-9/opt: AftggT5gSYOtxlW3ViD0Fg + shippable-l10n-signing-linux-shippable-1/opt: OIKQ4_9ISyqD9gkkjQSzOQ + shippable-l10n-signing-linux-shippable-10/opt: SCrk_tUuQrij0rcJsH3FEw + shippable-l10n-signing-linux-shippable-11/opt: IhnfB50TTCK_Qc2g3-fRkw + shippable-l10n-signing-linux-shippable-12/opt: WZaef78QS8ms2uNe03nRIA + shippable-l10n-signing-linux-shippable-13/opt: Vg51s3fLR9yLSfGutyCOiA + shippable-l10n-signing-linux-shippable-14/opt: QAeJ4Wq0S2W2sU05GZJyLg + shippable-l10n-signing-linux-shippable-15/opt: ThGrVDc5Q_m6N_9BX0SX7A + shippable-l10n-signing-linux-shippable-16/opt: FyMSPDp6TAi0Lme5rK0Zdg + shippable-l10n-signing-linux-shippable-17/opt: BpMokTqwTSKpMg87FGchPQ + shippable-l10n-signing-linux-shippable-18/opt: baPg8H6RQ9efXj0xm2oa3w + shippable-l10n-signing-linux-shippable-19/opt: YfvNMCtTS-2j_bQUdNS-4g + shippable-l10n-signing-linux-shippable-2/opt: aLdYy7_fSCumS5MBg1EXIQ + shippable-l10n-signing-linux-shippable-20/opt: TTjzuFb3Tu6CtQnmDEG9WA + shippable-l10n-signing-linux-shippable-3/opt: RLNXsoHrQB2ylcnVIzjoPg + shippable-l10n-signing-linux-shippable-4/opt: GZbep1TqQU2C6qzSi07ggA + shippable-l10n-signing-linux-shippable-5/opt: K9RG9uthSNmCHM2I60NXlg + shippable-l10n-signing-linux-shippable-6/opt: RLOwDkmGSueRKAM5Ch3r2A + shippable-l10n-signing-linux-shippable-7/opt: TwoFpUq-RMePhJco5fnRYQ + shippable-l10n-signing-linux-shippable-8/opt: JzPxU-5TQvGIeBAisp86hw + shippable-l10n-signing-linux-shippable-9/opt: G1WGj4AjQyq5Lh0wMxreFw + shippable-l10n-signing-linux64-shippable-1/opt: Lnwx0rUjT7WdoaV4cW8hhg + shippable-l10n-signing-linux64-shippable-10/opt: Kgu3g-HwRZyp182DjrxQjQ + shippable-l10n-signing-linux64-shippable-11/opt: RCtp2688Rq2M09HyGQnF-g + shippable-l10n-signing-linux64-shippable-12/opt: Uzna_N_4QcG7viVtxWMI_Q + shippable-l10n-signing-linux64-shippable-13/opt: ANd5-nLkRb2tT46M4dmdyA + shippable-l10n-signing-linux64-shippable-14/opt: PFV6RYguQiCjm8mz7I_Trg + shippable-l10n-signing-linux64-shippable-15/opt: FXRp-QA9SJWPmHc8iJAzjw + shippable-l10n-signing-linux64-shippable-16/opt: cpqrx4RhSp2D05S0Lg5IpA + shippable-l10n-signing-linux64-shippable-17/opt: FDTyGGxjRbmKGuwbbE8qvg + shippable-l10n-signing-linux64-shippable-18/opt: bKYHGAx5TQ65JmxDh0hBCA + shippable-l10n-signing-linux64-shippable-19/opt: cZjak_ZNSACsYBvpcbLddg + shippable-l10n-signing-linux64-shippable-2/opt: G5w9JO80R-SIkEWm78N7bQ + shippable-l10n-signing-linux64-shippable-20/opt: HZs_PqY8TgW-0M-0A-rtQg + shippable-l10n-signing-linux64-shippable-3/opt: JLcvtfYnQBqgZofGq4Q40A + shippable-l10n-signing-linux64-shippable-4/opt: NPMgOyjgT7q6QrqzF9olZA + shippable-l10n-signing-linux64-shippable-5/opt: CnhBVlj9RZWA69dXD1jjow + shippable-l10n-signing-linux64-shippable-6/opt: XXSMJ2ceQwqXhJ8DabkLVw + shippable-l10n-signing-linux64-shippable-7/opt: PzQHNG05QcSesz6zu0c7_A + shippable-l10n-signing-linux64-shippable-8/opt: Ize68pcmS9C12kUoCROj4w + shippable-l10n-signing-linux64-shippable-9/opt: JyR84fGISCmfnrkfTm-_jQ + shippable-l10n-signing-win32-shippable-1/opt: ZG4fx_9qTrO9HKqF8cDsgA + shippable-l10n-signing-win32-shippable-10/opt: cRLJ9KvmSciwMychoLL82A + shippable-l10n-signing-win32-shippable-11/opt: QbDlIqnMTNSNVzWiWqXUqw + shippable-l10n-signing-win32-shippable-12/opt: HkrN_PYQQKS_IxVPz58mUg + shippable-l10n-signing-win32-shippable-13/opt: UMOeKhsuRKirgwBziU_dUA + shippable-l10n-signing-win32-shippable-14/opt: P1CSxHRGRquo6uNzPUBiDQ + shippable-l10n-signing-win32-shippable-15/opt: X-yO-mpXTlyQwVL8Zzx9bA + shippable-l10n-signing-win32-shippable-16/opt: B2RagIj6Saqx_8U__V-JlQ + shippable-l10n-signing-win32-shippable-17/opt: XHXmeoprSc-EghujEyeimg + shippable-l10n-signing-win32-shippable-18/opt: AQrL7k6KSMa_sddPIiWtYg + shippable-l10n-signing-win32-shippable-19/opt: ZHCmRTqNRWC51mdz8HewoA + shippable-l10n-signing-win32-shippable-2/opt: NH9HxhEcQNaHADKdokW4ug + shippable-l10n-signing-win32-shippable-20/opt: LJgj2xJkRrStThhHJVHKdw + shippable-l10n-signing-win32-shippable-3/opt: I-57vEHAQWGvh3wKeO8e0A + shippable-l10n-signing-win32-shippable-4/opt: DTR0msYeTkiOgmMrWxiVfA + shippable-l10n-signing-win32-shippable-5/opt: YMxXmHKtRzqmH-DIO8IBwg + shippable-l10n-signing-win32-shippable-6/opt: AzvO1wk0S4qIkx9Vn0-3vQ + shippable-l10n-signing-win32-shippable-7/opt: RUq_0tTWQ72YMxiV5xA7PQ + shippable-l10n-signing-win32-shippable-8/opt: Sd_ACjHJRYeyxGyDZWygmA + shippable-l10n-signing-win32-shippable-9/opt: Ssvsk76aT5y4254fw1SxEw + shippable-l10n-signing-win64-aarch64-shippable-1/opt: dBoorKL_QxSi818tshaMDA + shippable-l10n-signing-win64-aarch64-shippable-10/opt: JkqcYRV9RJqxJgD3C-P59g + shippable-l10n-signing-win64-aarch64-shippable-11/opt: YnaO_nCjQtaKiQZfXLcAXQ + shippable-l10n-signing-win64-aarch64-shippable-12/opt: SlqNQkCKQdC7KuZp6vhXhA + shippable-l10n-signing-win64-aarch64-shippable-13/opt: ePpt4PxDTMCwzJOzbk3HKA + shippable-l10n-signing-win64-aarch64-shippable-14/opt: UteQ9CFmRlappRtDnTxnVA + shippable-l10n-signing-win64-aarch64-shippable-15/opt: aB9R5ZfFQKWnlC5BLyy7uw + shippable-l10n-signing-win64-aarch64-shippable-16/opt: YV56XoGZRueSqb70hscohw + shippable-l10n-signing-win64-aarch64-shippable-17/opt: cLie92IGQPOwnaIf2WzbsA + shippable-l10n-signing-win64-aarch64-shippable-18/opt: ZDldRTQzQX6hs3OiY0QUWQ + shippable-l10n-signing-win64-aarch64-shippable-19/opt: PrYIClw2TpGlKr1AkKBNcg + shippable-l10n-signing-win64-aarch64-shippable-2/opt: ULdRfoRbRD-TeLe0q_aRMg + shippable-l10n-signing-win64-aarch64-shippable-20/opt: f-PixKHgSxe3WhU-_rW8hQ + shippable-l10n-signing-win64-aarch64-shippable-3/opt: ZT4Ij6MfQ02AuSrK4vuhSg + shippable-l10n-signing-win64-aarch64-shippable-4/opt: e02JY4pmSTqRdOwV5DMaiQ + shippable-l10n-signing-win64-aarch64-shippable-5/opt: XBGyTI66RhS2P98-OTZoWA + shippable-l10n-signing-win64-aarch64-shippable-6/opt: eA8FuZlORxyuc1LE0EYnCQ + shippable-l10n-signing-win64-aarch64-shippable-7/opt: Exhtw9CkS7OpEq_f3sbkEg + shippable-l10n-signing-win64-aarch64-shippable-8/opt: eUMps9C8QUKAucW3hI2i1g + shippable-l10n-signing-win64-aarch64-shippable-9/opt: XVBfuFViRNKZ5deOT9TLvA + shippable-l10n-signing-win64-shippable-1/opt: cNszmy5ISVijN2pQYBz6qA + shippable-l10n-signing-win64-shippable-10/opt: TZr1xvHZRyypQ607ok7Pig + shippable-l10n-signing-win64-shippable-11/opt: LVyOwJlNS5KX0IF-7hA-ng + shippable-l10n-signing-win64-shippable-12/opt: ES42KaPBRjujkC6h9c7dVQ + shippable-l10n-signing-win64-shippable-13/opt: P2Hf8BsGTmKQHX9THmovGA + shippable-l10n-signing-win64-shippable-14/opt: aro00R98QMKp-XBnNInnRA + shippable-l10n-signing-win64-shippable-15/opt: BB7bO8imReOlbeiMet9vgA + shippable-l10n-signing-win64-shippable-16/opt: dM6tzUqUTxeRm4hUT104Kw + shippable-l10n-signing-win64-shippable-17/opt: Y8CmuDIDTp6wOnsfQLp1_g + shippable-l10n-signing-win64-shippable-18/opt: M43brXxTT5uGYHVOwaSFmQ + shippable-l10n-signing-win64-shippable-19/opt: YrdJowdOSkOzdFmoh1a_Vw + shippable-l10n-signing-win64-shippable-2/opt: CluLCSgcRSiqoCvcbF1W7g + shippable-l10n-signing-win64-shippable-20/opt: S_B3QvyvSYOSR-W0rgKHkg + shippable-l10n-signing-win64-shippable-3/opt: R5vkAJ1zSOCiR_xH5BArSw + shippable-l10n-signing-win64-shippable-4/opt: ODQBiY0cTU26yVAemZuWtg + shippable-l10n-signing-win64-shippable-5/opt: YBbM5qTYTmmzJyxIPPPcpQ + shippable-l10n-signing-win64-shippable-6/opt: FxgORVMwT8evTZBjc2kekg + shippable-l10n-signing-win64-shippable-7/opt: XQ9mZ1CESM-GvorCPhOcjw + shippable-l10n-signing-win64-shippable-8/opt: IPVM_ghzQKGIaFuHQXkZLQ + shippable-l10n-signing-win64-shippable-9/opt: Wkkuy7vjRgqllynYKr2k5w + shippable-l10n-win32-shippable-1/opt: EiO96UXwTrC5ieBeTnNLSg + shippable-l10n-win32-shippable-10/opt: COmwxBomRMipO_WWNKLHYQ + shippable-l10n-win32-shippable-11/opt: f4eikeI6RFSAs60GyLFHDQ + shippable-l10n-win32-shippable-12/opt: aJ8zvkLJSqq_kOjIfDyRlA + shippable-l10n-win32-shippable-13/opt: TcoVTxFgTW2r6kCQwct9NA + shippable-l10n-win32-shippable-14/opt: TaQed1zGR2yph6rCQtXglg + shippable-l10n-win32-shippable-15/opt: GHy3yhLcQlWTFHafyatHww + shippable-l10n-win32-shippable-16/opt: YFsAk-HoTu-rah-19jA1lA + shippable-l10n-win32-shippable-17/opt: JAqfeOhXQhaynmYb22j4Sg + shippable-l10n-win32-shippable-18/opt: U2JQBQIHQtuq0xd4oTdT8w + shippable-l10n-win32-shippable-19/opt: H1MHmaXoTkmyWLvZZOZEFA + shippable-l10n-win32-shippable-2/opt: Vs_ikQMhRd6n-QsA3b1UKA + shippable-l10n-win32-shippable-20/opt: MavPBHDKQOGoC8wpJKn40g + shippable-l10n-win32-shippable-3/opt: G0IJ31KVReKnYFHy82s78A + shippable-l10n-win32-shippable-4/opt: EGoMIZVMSU-daew4hEK5Bg + shippable-l10n-win32-shippable-5/opt: RKzZhRLdTUuS0POYXVdcWw + shippable-l10n-win32-shippable-6/opt: fk0NiFxsS5WCqpPMO05KDg + shippable-l10n-win32-shippable-7/opt: U9qUzxjKRNq4Qy5nJVcZEQ + shippable-l10n-win32-shippable-8/opt: T6IpyRAqTFCKhBJAXrlDsg + shippable-l10n-win32-shippable-9/opt: JaTZX_j5TfabWGv2CaSBIg + shippable-l10n-win64-aarch64-shippable-1/opt: Z9-eEPOfQ12OItWXrAvfRQ + shippable-l10n-win64-aarch64-shippable-10/opt: SQ-5ZuUPS4yqbtfkrvJraw + shippable-l10n-win64-aarch64-shippable-11/opt: Gp7_DoAHSVKfUMZicPJmAQ + shippable-l10n-win64-aarch64-shippable-12/opt: L1dwsLisQWS54GRHsUORlQ + shippable-l10n-win64-aarch64-shippable-13/opt: K2IE0MQZToedMNuoubWwKA + shippable-l10n-win64-aarch64-shippable-14/opt: HuSQEet-RUS4jQPFVTE9Vw + shippable-l10n-win64-aarch64-shippable-15/opt: DKHZP_AnTI6e1wHj2Bg-qg + shippable-l10n-win64-aarch64-shippable-16/opt: JJRpnw4ITie1rUj6fNeVVQ + shippable-l10n-win64-aarch64-shippable-17/opt: OJ9bWq04SxWzNSzpnjcFmw + shippable-l10n-win64-aarch64-shippable-18/opt: cARAYEJRQaug7EoPHDviUw + shippable-l10n-win64-aarch64-shippable-19/opt: UydEC1xkRG6_-xf-qdFZsw + shippable-l10n-win64-aarch64-shippable-2/opt: RWIYENA5SUiPe15DKPyjxA + shippable-l10n-win64-aarch64-shippable-20/opt: TwNirOA6QASqRM7UYGn9gg + shippable-l10n-win64-aarch64-shippable-3/opt: XUbnXZhhSjuq2L6l6mIJsQ + shippable-l10n-win64-aarch64-shippable-4/opt: BB__bMHbSFmrf7uSSJ6_rQ + shippable-l10n-win64-aarch64-shippable-5/opt: CsNwOMhKQr2egtn1eyRopA + shippable-l10n-win64-aarch64-shippable-6/opt: XizR_3vxRrKDpIhQopV11g + shippable-l10n-win64-aarch64-shippable-7/opt: eK_PCOahREisKRT1QblhQQ + shippable-l10n-win64-aarch64-shippable-8/opt: HWJ5k6SmT8KXOjdQGlCGmQ + shippable-l10n-win64-aarch64-shippable-9/opt: WPJlvvXoSq-nSU1pPZ-J9g + shippable-l10n-win64-shippable-1/opt: LK0ASpJSQ6imw3qkBzwzBg + shippable-l10n-win64-shippable-10/opt: ReI3iFcYSWKNRQaLq4tvGg + shippable-l10n-win64-shippable-11/opt: Eths6O2uRti04VAuJdT4JQ + shippable-l10n-win64-shippable-12/opt: GHkYS5WFRKegzRZUEBB32Q + shippable-l10n-win64-shippable-13/opt: MXblHl5HRbe0HmlLamVjYA + shippable-l10n-win64-shippable-14/opt: bHIShKtrRrarAvTv0sf68Q + shippable-l10n-win64-shippable-15/opt: aHkSLgznSDu1-gVUZOUjGQ + shippable-l10n-win64-shippable-16/opt: Xg4jVCVAQni_WvpgejH67w + shippable-l10n-win64-shippable-17/opt: ZJqFNGnMThW0uM8vWAE4Ag + shippable-l10n-win64-shippable-18/opt: K31LkSH4Sxa6HCOyUscjNw + shippable-l10n-win64-shippable-19/opt: WlDHlLSJQhemSmsDFTW8jw + shippable-l10n-win64-shippable-2/opt: VGu2QrTjQxiGLQFTi3kftQ + shippable-l10n-win64-shippable-20/opt: JunIUFU-QDqXiTAAj6TwFQ + shippable-l10n-win64-shippable-3/opt: fCsr0C3CTr67clV8O4T72w + shippable-l10n-win64-shippable-4/opt: dY_Cze6mSeaDFnNXKOONAA + shippable-l10n-win64-shippable-5/opt: SDl-oBc0S8GtlI9KTn0HKA + shippable-l10n-win64-shippable-6/opt: PC1-B1pJQv6SSmDg3hTh-Q + shippable-l10n-win64-shippable-7/opt: FsQkSZrHQHGmG5NwAFB6jA + shippable-l10n-win64-shippable-8/opt: dk7EzCn_TGWU4wMH6veMjw + shippable-l10n-win64-shippable-9/opt: C15MDqJJRCGTE5jk3pypow + source-test-mozlint-eslint: a6JgqPQ2SwSsXappsVCk1g + source-test-puppeteer-puppeteer: BmJ5xpQSRCSjW18Ct56wvA + source-test-puppeteer-puppeteer-with-bidi: Ox0-HRkNQn6lFuJXUDs7AA + test-linux1804-32-shippable-qr/opt-web-platform-tests-1: cQFeTndpTAiQG0BVifJIdw + test-linux1804-32-shippable-qr/opt-web-platform-tests-10: XZM8ml17TX2GhMd5aHmT8Q + test-linux1804-32-shippable-qr/opt-web-platform-tests-2: LA9UX7YCQw2Nk7n9VzriKg + test-linux1804-32-shippable-qr/opt-web-platform-tests-3: X2gN78llTkmBQltRQQMYTA + test-linux1804-32-shippable-qr/opt-web-platform-tests-4: Fes3Lj_YQWuYMB7HndV5TA + test-linux1804-32-shippable-qr/opt-web-platform-tests-5: PAZYrRNtR4ulYFJAPUFiLA + test-linux1804-32-shippable-qr/opt-web-platform-tests-6: dXVhPiPKTZysAtA011FHTw + test-linux1804-32-shippable-qr/opt-web-platform-tests-7: PZLifyYURoiqczqxN-ORkw + test-linux1804-32-shippable-qr/opt-web-platform-tests-8: cy6o58PYQtmgtX4jYKVyPA + test-linux1804-32-shippable-qr/opt-web-platform-tests-9: Xy1wO5UxTn-IkW0G1PzlUQ + test-linux1804-64-asan-qr/opt-cppunit-1proc: NFyRt71zRK-UwSkEeAnQaQ + test-linux1804-64-asan-qr/opt-crashtest: cYycQBWpSBmVRD0KiN-iFw + test-linux1804-64-asan-qr/opt-crashtest-swr: fw20xJSiQLaXRU_o-T7wxg + test-linux1804-64-asan-qr/opt-icecat-ui-functional: NIf3tKEAQfuzxGfbCch-iw + test-linux1804-64-asan-qr/opt-gtest-1proc: UVKDdxNgRwK4LpD4GIGMlQ + test-linux1804-64-asan-qr/opt-marionette: PVje8YFXSaK1cs0PMV0KAg + test-linux1804-64-asan-qr/opt-mochitest-a11y-1proc: NtbMa7PzQr60h9GjsRDgWA + test-linux1804-64-asan-qr/opt-mochitest-browser-a11y: I5qrO8q-SRCq98hP2TgDRg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-1: QYve0CDOQGi04XAbceb4cQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-10: Dyf2nrrSTQWIR-a0foZ_cw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-11: fBVkKV2rQqGAlLR_pFi_tg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-12: VI6rn9LYQUK8hLOmduTAKQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-13: UJWEf12FQTCN0IVwYVpPsQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-14: Q284c_xRTuekd_UbmH4zsQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-15: SsOGAlpIRhWM5GDY-6eQSA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-16: bxVtbUWQR3yn7UuAdtw6zQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-2: fl_f1owoSAK-XVJQlKy2qg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-3: fRbvTpISQeOAQu02GopkRA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-4: GIgez8-fQYqAqimYYTj7jg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-5: eTnLq3t9RMCtkRr7jiWTOw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-6: CZYXYJmUQWmjrdseaATmXA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-7: NrheYt8MTX-DQcdx-wT_cw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-8: NjkC5FmwTauq8DeMrIdoAQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-9: Hp0lxZfWTqqJDIOcmkXoww + test-linux1804-64-asan-qr/opt-mochitest-browser-media: XErx6ErbRgC2LzoFVsdI2g + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-1: JPFH1RfnT7eYbEEDGIUfjA + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-2: P7I73M2IRYKCaBPzS9dZUg + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-3: IEttNseKSF26JazvkEMtQw + test-linux1804-64-asan-qr/opt-mochitest-chrome-gpu-1proc: U4j6aOzRSimPSWVTUfjjzQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-1: aOL7t971Q0az4ufDcEgVlg + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-2: DZ-bx6wSTfixLEDJhAV6iw + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-3: DJQaddCoT6uE-rvdQlIyjA + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-4: LBPkHRRBQ0GgOrNg3JWbbQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-5: MovhSH6NT2qt1-GmXxCjfQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-6: Xf4XlnHsSYuGeAGLtPPA3g + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-7: byFHoXifSKue_-88grM6Hw + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-8: PNc-skiETUaCF9KjU0HHQg + test-linux1804-64-asan-qr/opt-mochitest-media-1: YrHGw9HCShus3z0YtzBHHg + test-linux1804-64-asan-qr/opt-mochitest-media-2: YygK4vw1SvW_lGtKTeaxTg + test-linux1804-64-asan-qr/opt-mochitest-media-spi-1: QrzVtZHqTWqYkXwynywtzw + test-linux1804-64-asan-qr/opt-mochitest-media-spi-2: VXieUaS0RhqVpGBfuZxR5w + test-linux1804-64-asan-qr/opt-mochitest-plain-1: LsO1hX7aSa-Xsxibu-5rkw + test-linux1804-64-asan-qr/opt-mochitest-plain-2: SyhytcIXQwaBH4fFvvxgdQ + test-linux1804-64-asan-qr/opt-mochitest-plain-3: beVSfd7pTKKW1OpybY1Azw + test-linux1804-64-asan-qr/opt-mochitest-plain-4: WcIvHcQXRtuODe_jQ6oe7g + test-linux1804-64-asan-qr/opt-mochitest-plain-5: VB6SyTIpQO6Rta5RgbwDZA + test-linux1804-64-asan-qr/opt-mochitest-plain-gpu: SWdbGr7qQ2eE6pfgZapUQQ + test-linux1804-64-asan-qr/opt-mochitest-remote: LIhq4wzOSz2QDWaJLX31Bg + test-linux1804-64-asan-qr/opt-mochitest-webgl1-core: WM0N4yDxQgmRiHNOzTEYqw + test-linux1804-64-asan-qr/opt-mochitest-webgl1-ext: HB43ARpORXC2SkpYFG1vVA + test-linux1804-64-asan-qr/opt-mochitest-webgl2-core: cHZVmMKGStGXyeiFCP2aew + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-1: QNjtpq3eSTW5GbEOHmF0Bw + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-2: UYiWxXgjSGuGfF0FB05TmQ + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-3: ILW-ESGsRXi168FQGUz_Tg + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-4: RzCEAWoDSLaeJc6VY8hj5A + test-linux1804-64-asan-qr/opt-reftest-1: AMwP-rl5QTOj7fR6w2ALiA + test-linux1804-64-asan-qr/opt-reftest-2: G8qcnuQ9RWmX-GcTBY4MfQ + test-linux1804-64-asan-qr/opt-reftest-3: JPA13xYWTxW7B8arhBSGAg + test-linux1804-64-asan-qr/opt-reftest-4: aw_QRnqjR2SqwOb1RqsBrQ + test-linux1804-64-asan-qr/opt-reftest-5: JPOvViWfQNuUIIDiDE7rDw + test-linux1804-64-asan-qr/opt-reftest-6: JBdbOeBSQmuVohXZqQ4xxw + test-linux1804-64-asan-qr/opt-reftest-7: MgPbyirRTcqvILtv7wsTbg + test-linux1804-64-asan-qr/opt-reftest-8: YenEXKw5THG1jVa6ULh6Fg + test-linux1804-64-asan-qr/opt-reftest-swr-1: ZLXZzwh4SmKeNvuWeT-6Qw + test-linux1804-64-asan-qr/opt-reftest-swr-2: DowUlP1iSUacbHrIYseLAQ + test-linux1804-64-asan-qr/opt-reftest-swr-3: Mwz5QW8HQ4SsD5zzINAh0w + test-linux1804-64-asan-qr/opt-reftest-swr-4: Zju43PzCScC0ak09U8rJFg + test-linux1804-64-asan-qr/opt-reftest-swr-5: JqQA4UdhTCuXmH3nSARxAw + test-linux1804-64-asan-qr/opt-reftest-swr-6: Y32spLLTT5KrSFCQWvFz5A + test-linux1804-64-asan-qr/opt-reftest-swr-7: bnMghHS2TRSdq_Fe71M31Q + test-linux1804-64-asan-qr/opt-reftest-swr-8: WNFQgoy9SaOILThYxBXAUQ + test-linux1804-64-asan-qr/opt-telemetry-tests-client: Ei_43929T3G5yOFzs26EZQ + test-linux1804-64-asan-qr/opt-web-platform-tests-1: VHlInl5KT8equh1V35Oi9w + test-linux1804-64-asan-qr/opt-web-platform-tests-10: R6jPl2USSjSkBtvtc8-IaA + test-linux1804-64-asan-qr/opt-web-platform-tests-11: dDpEpLBUTlmr8Bl2h7idZw + test-linux1804-64-asan-qr/opt-web-platform-tests-12: URdw76UIRkesS_UlbWg1QQ + test-linux1804-64-asan-qr/opt-web-platform-tests-13: FJyN4aIHRdyKECfnlWWFOg + test-linux1804-64-asan-qr/opt-web-platform-tests-14: SoRVJ30vQ3K38nbZi2b5Dw + test-linux1804-64-asan-qr/opt-web-platform-tests-15: di_nNNojS0qJtDFyOh17Fw + test-linux1804-64-asan-qr/opt-web-platform-tests-16: A4F61KpYSBaW5kxqNbw7PA + test-linux1804-64-asan-qr/opt-web-platform-tests-17: erxXXlshQxuKWqpuDhAdBw + test-linux1804-64-asan-qr/opt-web-platform-tests-18: PCzRs57mSiudidoGWte2IA + test-linux1804-64-asan-qr/opt-web-platform-tests-19: OammIfnhQ3GwxXTx3DL2OQ + test-linux1804-64-asan-qr/opt-web-platform-tests-2: NegDnTe1Sy6DHiRoU3YEzg + test-linux1804-64-asan-qr/opt-web-platform-tests-20: buQk3DgvQNCmLwlRcUMblw + test-linux1804-64-asan-qr/opt-web-platform-tests-21: Gh7o_GzGRVCKkpylk83GJg + test-linux1804-64-asan-qr/opt-web-platform-tests-22: U_mIpER2QLuIvSDsItygPQ + test-linux1804-64-asan-qr/opt-web-platform-tests-3: eBg0qDrzRcGv0qE6AaftPA + test-linux1804-64-asan-qr/opt-web-platform-tests-4: S8sXmXJCTZuLE3mZIiEtSA + test-linux1804-64-asan-qr/opt-web-platform-tests-5: d7-PFFKiSuy0yPIP5cvjEA + test-linux1804-64-asan-qr/opt-web-platform-tests-6: bpzRPhn_TqeL6PAWX5xXwg + test-linux1804-64-asan-qr/opt-web-platform-tests-7: O4EnWXu4QnuMvPy-AaFQ5g + test-linux1804-64-asan-qr/opt-web-platform-tests-8: dHJrTUlKR1CiV_WFAqF48A + test-linux1804-64-asan-qr/opt-web-platform-tests-9: D3xLT1bCTA-hTlTcbavQCQ + test-linux1804-64-asan-qr/opt-web-platform-tests-crashtest: R6OU16WfS-2jati3LfIRSg + test-linux1804-64-asan-qr/opt-web-platform-tests-print-reftest: NcPfbQ6jRTSPaswGVGc25w + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-1: fNGd8gb7S3SAmOu1aLRnAQ + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-2: SboBshc7Rka0GbDM0GXwyw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-3: eE04RC2kTOagzwJJTsFJQw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-4: TRZEHdIOQMKb0cv_kIAOeA + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-5: aTfP2kH6QQmvYbElxRCaMw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-6: S_bAr50xQvCjLQ2CJVlKCg + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-1: BpGD-WtxQjOj2df3vW46Lw + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-2: cc8NrKzlQ5e6byTHG5gGjg + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-3: O5kiKNEXQXy3O_rVE06L6Q + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-1: UFt7HmJvSXOHbJzJUdhkTA + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-2: Yeb7yL3HSaiwHR0j-qK6QA + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-3: D9kurO8MQXeGpd8hEzME9w + test-linux1804-64-asan-qr/opt-xpcshell-1: QJoR2XeBQUq4iBt4qkg89Q + test-linux1804-64-asan-qr/opt-xpcshell-2: YY9um_5KScerURjYrAlWSg + test-linux1804-64-asan-qr/opt-xpcshell-3: DLrNlao7RBOU2Lp8qXYLGQ + test-linux1804-64-asan-qr/opt-xpcshell-4: OmBFVu_rT-qGNKWnvOVoig + test-linux1804-64-qr/debug-cppunit-1proc: B_TwdeRURGGDGZbsFnwaew + test-linux1804-64-qr/debug-crashtest: SpWOocK8R8yry4WUhegKdQ + test-linux1804-64-qr/debug-crashtest-swr: FGDZIeu7T9icNbULzLNUcA + test-linux1804-64-qr/debug-icecat-ui-functional: LdtKQuOxSz2UxjHoubliLw + test-linux1804-64-qr/debug-gtest-1proc: AmBpIbywS1uVuY1EzoT8WA + test-linux1804-64-qr/debug-marionette: ZIVPikgzR4qoRj__Vjr9Pw + test-linux1804-64-qr/debug-marionette-swr: JJkUOGJ5Te2XHxvsnSgGdw + test-linux1804-64-qr/debug-mochitest-a11y-1proc: QNhApjqlQlSXj0B_a_PCjA + test-linux1804-64-qr/debug-mochitest-a11y-swr-1proc: MlJCEDR1QiS-NmJd9ZYL4Q + test-linux1804-64-qr/debug-mochitest-browser-a11y: e9ZoEv7dQM23isfpq1mLSw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-1: b14NApdAQs6ksyvLAh4mFQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-10: dYl1YzeORAGUUnGtiZ61JA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-11: SLq6WIOVQ-SpoFs0OYNQxg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-12: AX-j0Q_ZRx28SFpbgIeeMw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-13: Qo-3LI9uTneWhlE0z1t4Jg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-14: IDRniRe8SgWRYrHhoqVDkw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-15: aMl-r7XaQ8mnMfulRk5EzQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-16: HvzSZjUKSzWVbumplsx-YQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-2: T1JEqDcYQBuYFHoOOl6n6g + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-3: Vc6u2Q5iR3uT6NQcPTWVKQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-4: QhRM2vy8RZGnckw7UmUD7w + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-5: cbHa0aCDQEONOXDqDsNgqA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-6: fVJ68O4OQCik_3fAN8XYWA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-7: bjSDeBfTRUeCYmvOCoy7Rg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-8: f_37jxo7RkqPCuQ5zSFAxw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-9: W4bMG_sxSZ2J_wKwufsEHg + test-linux1804-64-qr/debug-mochitest-browser-media: CckPg2FtSsavXkEyAJH3Cg + test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: du48kZqxSDmKxmxyfZ4U7Q + test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: dVbFxL3LTtCepKfLHUDk3w + test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: CbI0vB5nQMqH_SK6pkLiCA + test-linux1804-64-qr/debug-mochitest-chrome-gpu-1proc: C2P1Z1sKS7282uS06mthHw + test-linux1804-64-qr/debug-mochitest-chrome-gpu-swr-1proc: cP73RHx_TpCkhoR_1BF2uA + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-1: fDWVa6EET-2AoHrKCxJXTQ + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-2: Y9p5E_20RiyydzZn0b1s5A + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-3: YXpdlc71Qm29unUYeXXsQg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-1: ApS4Kpm7Snm_TakUTarFww + test-linux1804-64-qr/debug-mochitest-devtools-chrome-10: TFjnRyHeTzqPQxUapXYZ2g + test-linux1804-64-qr/debug-mochitest-devtools-chrome-11: JvWc62RLQwKU69Lo7xN0lw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-12: B0KTyGxiRMCYom0rZ9zG2A + test-linux1804-64-qr/debug-mochitest-devtools-chrome-2: fLCjSLqXT0urMZh23tczmw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-3: XZC8KN6jR6ClSBtc_Iythw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-4: eakxxZUzS1yJPhv_h2aLsw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-5: awa-mAz0RIKtnGFbT5ItuA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-6: LZCFJ74SSZizV0ac7EdSMg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-7: LzJ-OshfS--6Mnl-raaNhg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-8: bf9WYEMUQGi_8bcOvt8g4Q + test-linux1804-64-qr/debug-mochitest-devtools-chrome-9: LAVrPc7xTain8CPbiKZFYQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-1: O4iGaBI_SYqwfsVrM6Dp1Q + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-10: Mbm862YSRqG5pp9O_Tx4SA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-11: DciNoljBQj2PnbdXFMdqMQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-12: T_yOAKnrSF-N4vsyADr4eg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-2: GHkw6AdTQeeZNPXIojJo8w + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-3: MMKAbMiCRounZX4FPevBOA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-4: aAYF0gF2ROae5ex_iyTQCQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-5: Y07BcNdYQ7yDqXM6SjiOyg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-6: DCxEvr2wQbCrzdDKPOIjhQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-7: XDh0vxr2RKSh63sxj3BoBg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-8: QpqOORMaR9eDd_m_ZNew3g + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-9: Q20hZUY2RY2UeFla9gS2EA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-1: GNc68yQBRR2ihK339u8XVw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-10: AhKCpD1qR7CJt1wjbsXuzg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-11: fpOzLduhT7igSqPKn0lhGQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-12: b75beJrmTnydnjvHDb03KA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-2: eSkzMJtBQaKzadkex8jsHQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-3: Uyp6G324QmankHCwlS87ZA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-4: WHfdovQ-Tpqtg51dvvGtIw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-5: Krfk9LANSh2vmlJKjkO9zA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-6: d5bqVCmpT8qd7IwSrH-iAg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-7: VFhm3wHeRpKTBf46ASC1xg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-8: cIRnG8RcSdWgvpAGnjmpGg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-9: U7iyUFzIQ56KBJ3VnEH8Xw + test-linux1804-64-qr/debug-mochitest-media-1: WvyO_PupTZ-DmTSXrquDuA + test-linux1804-64-qr/debug-mochitest-media-2: ZHiWaEu2RHy2g8tVlQho6Q + test-linux1804-64-qr/debug-mochitest-media-3: YsRpAX7hQoOcFpeasK9NYg + test-linux1804-64-qr/debug-mochitest-media-spi-1: M-P9rcnqQ7eNYSIUHjA2SA + test-linux1804-64-qr/debug-mochitest-media-spi-2: XpqBjHKqQSSpgKWZ2m755w + test-linux1804-64-qr/debug-mochitest-media-spi-3: FsSvhWDUSZ-wcAQq9qfR9w + test-linux1804-64-qr/debug-mochitest-plain-1: CHt6W57SSuCiqenGBvLfCg + test-linux1804-64-qr/debug-mochitest-plain-10: OK0CMrpxRd2shZszWvyY3w + test-linux1804-64-qr/debug-mochitest-plain-11: JQCNKDyyR1yxBDGnYxo8ug + test-linux1804-64-qr/debug-mochitest-plain-12: SaDd4FtRRXyJLwtYfY1qlg + test-linux1804-64-qr/debug-mochitest-plain-13: EtrTvhHcTM-Zv2E83lzW_Q + test-linux1804-64-qr/debug-mochitest-plain-14: TPF1dhDZSf-BURNZqq7yuQ + test-linux1804-64-qr/debug-mochitest-plain-15: YjEbSjIlSamkR3BInro_uQ + test-linux1804-64-qr/debug-mochitest-plain-16: eViT9yFtQTKng0aPoqrLOg + test-linux1804-64-qr/debug-mochitest-plain-2: YkeNjPIIR7yLfQ23KbBPdg + test-linux1804-64-qr/debug-mochitest-plain-3: bGqmCQzOSb2tZ3Y4i9cDrw + test-linux1804-64-qr/debug-mochitest-plain-4: A4_w9jLTRMCERlvSeP-mog + test-linux1804-64-qr/debug-mochitest-plain-5: XFkPE2k9TeaO76MfKVHKAw + test-linux1804-64-qr/debug-mochitest-plain-6: FAbvFdpwS7SOdnh4WV1JIQ + test-linux1804-64-qr/debug-mochitest-plain-7: TSA7t_OsT7OXpmFwHRcvuQ + test-linux1804-64-qr/debug-mochitest-plain-8: cOLurrdPSXil6nXtFX1nuw + test-linux1804-64-qr/debug-mochitest-plain-9: aONy8gifSB2L-GedmEjzHQ + test-linux1804-64-qr/debug-mochitest-plain-gpu: G8xaWFHxTda-se0btupkVQ + test-linux1804-64-qr/debug-mochitest-plain-gpu-swr: EzvUORhjQsiBDdBdC7SWFA + test-linux1804-64-qr/debug-mochitest-plain-http3-1: S_0nZ72-T1aeC2mwb9yKOg + test-linux1804-64-qr/debug-mochitest-plain-http3-10: O3niv7JTRQaJ2pZefjkd6g + test-linux1804-64-qr/debug-mochitest-plain-http3-11: ZjFx4IO9SSOLITU9yYH1og + test-linux1804-64-qr/debug-mochitest-plain-http3-12: S1YYN2rWQKmkdkijdKzB7w + test-linux1804-64-qr/debug-mochitest-plain-http3-13: WWL2ngIIQlKP-97MaG_mTw + test-linux1804-64-qr/debug-mochitest-plain-http3-14: UIL16BuCT3SY0kqavtzPTA + test-linux1804-64-qr/debug-mochitest-plain-http3-15: an93x4GgSOG3IsNhIIGIUw + test-linux1804-64-qr/debug-mochitest-plain-http3-16: UVTIZeZ5SM2nW9Smwvic1w + test-linux1804-64-qr/debug-mochitest-plain-http3-2: cR9vf131SK-ep_OcoKyphQ + test-linux1804-64-qr/debug-mochitest-plain-http3-3: e8RdhVKXTymnwyMNAUwDOw + test-linux1804-64-qr/debug-mochitest-plain-http3-4: QihMwghsSgOTsrfmHIL0UA + test-linux1804-64-qr/debug-mochitest-plain-http3-5: UAYsVDlkRS-KqFQNgq2yCA + test-linux1804-64-qr/debug-mochitest-plain-http3-6: VDsIml_vSnmWY45QAlavjQ + test-linux1804-64-qr/debug-mochitest-plain-http3-7: a50a5oVITKS_q2dFSEUkyQ + test-linux1804-64-qr/debug-mochitest-plain-http3-8: EJWVB6M_T6yOJiAjZMvWew + test-linux1804-64-qr/debug-mochitest-plain-http3-9: ZfMjUUDyRs2QhxuLydj3cg + test-linux1804-64-qr/debug-mochitest-plain-swr-1: VqObIwweSfWYvEXcMAANBA + test-linux1804-64-qr/debug-mochitest-plain-swr-10: VVMb3mUHRruGq6IOI-LAgw + test-linux1804-64-qr/debug-mochitest-plain-swr-11: GPSN53N9S5yTQpD5SO6uMA + test-linux1804-64-qr/debug-mochitest-plain-swr-12: OrtV2N6ZQV6kNxRIOsOoow + test-linux1804-64-qr/debug-mochitest-plain-swr-13: cFQSVXyLQhiZOLHhUrrk3A + test-linux1804-64-qr/debug-mochitest-plain-swr-14: TxDs9Jd1RDaiXQ3Nxa2Zxw + test-linux1804-64-qr/debug-mochitest-plain-swr-15: fsF4wWmJTsSUd8SY7oxWyA + test-linux1804-64-qr/debug-mochitest-plain-swr-16: cVyLF2_JSzi9wbmv4pl4Qg + test-linux1804-64-qr/debug-mochitest-plain-swr-2: Hnl048IzSqe73Uqood2Uig + test-linux1804-64-qr/debug-mochitest-plain-swr-3: GU59a5zrSUWj4E32D7mQTA + test-linux1804-64-qr/debug-mochitest-plain-swr-4: SxdXuIG4R5ahy63aPa2HFw + test-linux1804-64-qr/debug-mochitest-plain-swr-5: JXQTygvpRCCjpn-FkPKZVA + test-linux1804-64-qr/debug-mochitest-plain-swr-6: JUjCTOh5Q2eyihYdStpwBg + test-linux1804-64-qr/debug-mochitest-plain-swr-7: WgmA3TRbRA25epAi2D4e2w + test-linux1804-64-qr/debug-mochitest-plain-swr-8: WiguP3pkT6irPSKvF5n5BQ + test-linux1804-64-qr/debug-mochitest-plain-swr-9: OPTGcEdQSGeex0o3EO40lg + test-linux1804-64-qr/debug-mochitest-remote: OL-zdkNrQP-QoZL-DdablQ + test-linux1804-64-qr/debug-mochitest-remote-swr: UU_01vMdRSiphoPT6lEG4Q + test-linux1804-64-qr/debug-mochitest-webgl1-core: ZABVlT3QSdy1tt-PmnncuA + test-linux1804-64-qr/debug-mochitest-webgl1-core-swr: SJXbxmPqQzKptbO7hFpJQA + test-linux1804-64-qr/debug-mochitest-webgl1-ext: NipQe0qRRb644IVF9fJRRg + test-linux1804-64-qr/debug-mochitest-webgl1-ext-swr: TUUwzlFcReuXpAeNf17ZUA + test-linux1804-64-qr/debug-mochitest-webgl2-core: XGO1UBzVRjWZhEuTiffesQ + test-linux1804-64-qr/debug-mochitest-webgl2-core-swr: P5ob2nf2SNCCy7sbbXOA7Q + test-linux1804-64-qr/debug-mochitest-webgl2-ext-1: JOCVHphPTumlnaXEZlgq7g + test-linux1804-64-qr/debug-mochitest-webgl2-ext-2: LkI27uqhRGS4FGFP0IMwUg + test-linux1804-64-qr/debug-mochitest-webgl2-ext-3: EOkEY4gOQ2y1Ld8J3iWTtA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-4: FbW0duZeTyaVjyTxJuXkLQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-1: DtThvUPbSAe-QVmdFC_S2w + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-2: DJit90OUTiWvFGzgjwszpA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-3: ZeDmMapgRLqVwT8wwBLKKQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-4: LEZDwHbdQCyO7Ilm-CVa5Q + test-linux1804-64-qr/debug-reftest-1: fpGRBu5oTSiS-tPiN1OoTQ + test-linux1804-64-qr/debug-reftest-2: WRaXSaavS8WRBb7--w8bKg + test-linux1804-64-qr/debug-reftest-3: ULW4RCZ-RLWX3BgNvVZIFw + test-linux1804-64-qr/debug-reftest-4: Gs9i0n76S4KBazpJyWaDzg + test-linux1804-64-qr/debug-reftest-5: YRJMBzQHSw6y4XmimBAmXw + test-linux1804-64-qr/debug-reftest-6: V1Cju_8JTWmGoymR6z3P7g + test-linux1804-64-qr/debug-reftest-7: LCV2nI9uRuWQJn0Pt4fFCg + test-linux1804-64-qr/debug-reftest-8: LOIX7MwkTmy3G5maIq0RLA + test-linux1804-64-qr/debug-reftest-swr-1: csMcavtrQmukY8Ehjc3O-g + test-linux1804-64-qr/debug-reftest-swr-2: Ev0GmFlcR9iJcbj8hjdbeA + test-linux1804-64-qr/debug-reftest-swr-3: PdLn-W65TeSRRb85oCfmBA + test-linux1804-64-qr/debug-reftest-swr-4: AesAkqIqRUGLj21u0w67Gw + test-linux1804-64-qr/debug-reftest-swr-5: DM3U_NAbSaugbNpVrXqvVA + test-linux1804-64-qr/debug-reftest-swr-6: PkvLP2AkRWaUUnAICYHgvA + test-linux1804-64-qr/debug-reftest-swr-7: QXRFhs44QryuvgVA9WoFAw + test-linux1804-64-qr/debug-reftest-swr-8: a2ZT3WcFQSOmbR45_QWi2g + test-linux1804-64-qr/debug-telemetry-tests-client: VU9GPPkDQK6OCn8wUW0EKQ + test-linux1804-64-qr/debug-web-platform-tests-1: G7Z5tIdNS-y6fvOGR0V2zw + test-linux1804-64-qr/debug-web-platform-tests-10: TsKiUvMaQrKsdwK9NAzDOg + test-linux1804-64-qr/debug-web-platform-tests-11: PgOC-GkiRCqEBEDDWIJqCA + test-linux1804-64-qr/debug-web-platform-tests-12: Z8iuM_dCTB23j3BZHyb0fw + test-linux1804-64-qr/debug-web-platform-tests-13: S6BRpnZjSWyeIFvNaJoiZg + test-linux1804-64-qr/debug-web-platform-tests-14: ehYGWqcFQy-xXB69sJKO4g + test-linux1804-64-qr/debug-web-platform-tests-15: e6LiZrPjTeeuPLs6zJGI4Q + test-linux1804-64-qr/debug-web-platform-tests-16: UNXB4YDYRr2M8rO1_ZLWEg + test-linux1804-64-qr/debug-web-platform-tests-2: HwodacuFT4OYqnw7IWJbig + test-linux1804-64-qr/debug-web-platform-tests-3: TuVgG795QbqQ3wYaeHBZHw + test-linux1804-64-qr/debug-web-platform-tests-4: aEoP_XitTvWUWioZoH3MjA + test-linux1804-64-qr/debug-web-platform-tests-5: T5S_ImlLQgmdUVAj3lnVcw + test-linux1804-64-qr/debug-web-platform-tests-6: QiaQmJodQ4iKxSlpiVY_MQ + test-linux1804-64-qr/debug-web-platform-tests-7: LQeA879STuunCFO-AtqMqg + test-linux1804-64-qr/debug-web-platform-tests-8: aCtRv2INQKmKVhHW9ra1Tw + test-linux1804-64-qr/debug-web-platform-tests-9: Fdmd5KSVQJK_88-sC2WBSQ + test-linux1804-64-qr/debug-web-platform-tests-crashtest: IFgYsbcyQ46tdUwEA-TQXQ + test-linux1804-64-qr/debug-web-platform-tests-crashtest-swr: MFnd-cULSYqNVTmh0RSIsg + test-linux1804-64-qr/debug-web-platform-tests-print-reftest: b2nWGivlTCaSY1qObfYu_A + test-linux1804-64-qr/debug-web-platform-tests-print-reftest-swr: fQTh9zH3S-CN4PewigPEzA + test-linux1804-64-qr/debug-web-platform-tests-reftest-1: WXHdJ-b0Ry6ME94X1in94A + test-linux1804-64-qr/debug-web-platform-tests-reftest-2: Kwz2GwgDQIiQQhB9LrcApw + test-linux1804-64-qr/debug-web-platform-tests-reftest-3: IybppHgiTB2pmoKXgMglwg + test-linux1804-64-qr/debug-web-platform-tests-reftest-4: IF36a22MSvm0zmnK_YyBlw + test-linux1804-64-qr/debug-web-platform-tests-reftest-5: G8Gx2A-iRgSxicXfioJYSg + test-linux1804-64-qr/debug-web-platform-tests-reftest-6: X-5s4Th1TxS2RWSl29P2dg + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-1: aBnD60w7TUmh8FPPty1nmQ + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-2: bb8krd0XT56lTS2BnOiZMw + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-3: eoqEk5siTieeRLtuj9HRnA + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-4: TjSCDaJgTuabAO2Wf4y9Dg + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-5: F4vGs3heTsSNi15t0cLqow + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-6: XpMHmXOcSPqGjQbWkQCRjA + test-linux1804-64-qr/debug-web-platform-tests-swr-1: eb-1gbUPQj6X0OkiT3DnSQ + test-linux1804-64-qr/debug-web-platform-tests-swr-10: S_m4LAngT1S-0nGCR0JWsA + test-linux1804-64-qr/debug-web-platform-tests-swr-11: ZklpA-mmTP6Vky0nARfnxA + test-linux1804-64-qr/debug-web-platform-tests-swr-12: b1Xv2F82RM-e_XIH470vOQ + test-linux1804-64-qr/debug-web-platform-tests-swr-13: Me0LxIjvR-qTx_KNnEspTg + test-linux1804-64-qr/debug-web-platform-tests-swr-14: Ib5pgZsCQ0OsNHOggLWirw + test-linux1804-64-qr/debug-web-platform-tests-swr-15: SDIySI15S9-vOG2BI_jI9A + test-linux1804-64-qr/debug-web-platform-tests-swr-16: ajF-51LeTU6w2keTeVgN3A + test-linux1804-64-qr/debug-web-platform-tests-swr-2: SxwR_qSYTLqTC1Fgj_TXcw + test-linux1804-64-qr/debug-web-platform-tests-swr-3: D8kafLPOSkG4i8X9_LEe1w + test-linux1804-64-qr/debug-web-platform-tests-swr-4: I5VMhlkWT0W-YJBUWZELiQ + test-linux1804-64-qr/debug-web-platform-tests-swr-5: IjN-051eTLKts3V7ZeI7aA + test-linux1804-64-qr/debug-web-platform-tests-swr-6: C6jn8Hd8TWa-rqN3rIPoLw + test-linux1804-64-qr/debug-web-platform-tests-swr-7: GgPz9lpPRae454mzsKi6AA + test-linux1804-64-qr/debug-web-platform-tests-swr-8: IrDwA_rMRhWeNR_LvtPERA + test-linux1804-64-qr/debug-web-platform-tests-swr-9: P3Qcoo3sSRqghFh_GHyTKw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-1: I_jBYoh6RHeITQwWEyT9Ww + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-10: a1GoA8FdQQGDInQYK9lIVw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-11: UGJyLfK6Tliq_ZicRkYMrA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-12: I054DRtbQIat49YY1E3R-Q + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-13: ffSJD8tFS2SXBU1HgonUjA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-14: VhtjkYEGSdGyzXcu3MBcBg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-15: X00ZpyOCR3WXguTCUMPzjQ + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-16: bjCaxOS7Sh6aONPV28v0tA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-2: JxkDkAbsQYe1wuGs4SKtrA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-3: bpQEEyiuSiG9awiH2KA9iA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-4: JRy5rUQ0Smi3s5EoUD8hnQ + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-5: JZJ8yQDMRsGW1vp9h2ZhRw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-6: YLxrTyQqSwmlIvo_802yCg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-7: JNR34W-jTQyZgusshCX6GA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-8: aWl3SpZ-T6uTk6zlnOZ1Hg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-9: VW0o4bqvTXCsqF2drXpYoA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-1: Xl-OPVbnTo-MP10N7FoJQA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-2: Nrqo_AgiRSGd_cBneA5i3w + test-linux1804-64-qr/debug-web-platform-tests-wdspec-3: IPseSKSaRy-r50sb34LXaQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-1: RstqACQWTp6iM0BZiE9ApQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-2: JeFfKs_SRISIt8tCC84DFg + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-3: ejQ7WOWlRjW1J4jAgpVkRw + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-1: awKSHt5MRaqV3TW3G6EBXA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-2: TvuPLc3-SQiDr9zk8nrzOA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-3: Do5K0VKKRVWE_90vcSScwg + test-linux1804-64-qr/debug-xpcshell-1: Iyc7aeQrSfa52de4Bw9XpA + test-linux1804-64-qr/debug-xpcshell-2: dn1SLs6hTieoCiim9OkOsA + test-linux1804-64-qr/debug-xpcshell-3: dvgyY1WSS9Sfr8PQzA7RUQ + test-linux1804-64-qr/debug-xpcshell-4: d65CY9PkScuZV7wpBueQJw + test-linux1804-64-shippable-qr/opt-cppunit-1proc: fGDVkfH2SKSjq7JFC4PNZw + test-linux1804-64-shippable-qr/opt-crashtest: bts8QprJTmWdMeP00AzBbg + test-linux1804-64-shippable-qr/opt-icecat-ui-functional: Oc5keNJ5RimOzoX5QPnvYA + test-linux1804-64-shippable-qr/opt-gtest-1proc: HQGtOap0SVW60TqZokkuLg + test-linux1804-64-shippable-qr/opt-marionette: CaArIYDcT3-8L3NhuxIk-Q + test-linux1804-64-shippable-qr/opt-marionette-headless: BV6MQBWHTAeAf8HdCoSztw + test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: NWgP7JJSTpCtPgP5ulFphw + test-linux1804-64-shippable-qr/opt-mochitest-browser-a11y: KOxsIj8TQJ6sua9aMK-m3A + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-1: XDhxGBdISMOUc5Q3nirgEA + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-2: VJ2i0S-lSjOtdzjWnLEBfw + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-3: WAk4peKVQQSr36lVz4a0Ag + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-4: W5j_jZQHRE23AXD9-nfJJg + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-5: OjMCcFXURXesOrwXNb9Q5g + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-6: VtgFS7ZuSFCgKGtNVoiG5Q + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-7: FGXbdegKT4K-1gg1PHFLAg + test-linux1804-64-shippable-qr/opt-mochitest-browser-media: KrDykprIQ9OEGJ9sDxNAwA + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: RBoCD3M3RcOenlWM4snySw + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: a1Rlcq-MSve6cYp0V3iBKg + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: Y61OzZFJRcinEnRYyEW17A + test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: VCWkcrkcTMeltmKhiqzyvg + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-1: YBuqNx4dQii0QbN-LqkMgw + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-2: BG9EYc7QT9KbYfrs5zBbFA + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-3: YcIOHocjR0ag-J_XCCmjow + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-4: AoRspCL9R6-9WZaLXyHQwQ + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-5: ZC2WrzmzSO2H8uJ_yaM7Ig + test-linux1804-64-shippable-qr/opt-mochitest-media-1: bdOqbmr7SiKPYvqmo_0-rQ + test-linux1804-64-shippable-qr/opt-mochitest-media-2: GWLDuCvARg-W2f-mccAMgw + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-1: PrxOyLqbRJGd1nvvYuDQrw + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-2: c9C8fUFxQpGoZk96xxciuQ + test-linux1804-64-shippable-qr/opt-mochitest-plain-1: M-QQsUjMQLCBFRZWvH_hAw + test-linux1804-64-shippable-qr/opt-mochitest-plain-2: EaeXgFySSCe1-lBxtHkpxQ + test-linux1804-64-shippable-qr/opt-mochitest-plain-3: cX17h8rcQSqWBAPRCQMWmg + test-linux1804-64-shippable-qr/opt-mochitest-plain-4: Ntqo8JqTSRCPJxd5No1v4g + test-linux1804-64-shippable-qr/opt-mochitest-plain-5: YOX6WJ-BTYO7fck7x2V3Rw + test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu: b3Ak4xchS1e20xs9fdukmg + test-linux1804-64-shippable-qr/opt-mochitest-remote: InP5kt0GTEKUP_e-Fc3g8w + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core: Yi9bUEvSR7Wd6SyOGH3Iow + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext: UsNDXfYVQhanzMsFiLqmUw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core: WQu748n2QNeCIwNsi_C5Xg + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-1: Cq0R0PgnQySRy8_8LaYMFw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-2: deNzSIDCRNCK5rEiz7QU3g + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-3: VL8TdwMIQtup6qTBWGVY0g + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-4: UZ2lA_egTCG91bFcBQMGGQ + test-linux1804-64-shippable-qr/opt-reftest-1: Y-4EwvsRS3qn53JOH0icmA + test-linux1804-64-shippable-qr/opt-reftest-2: QsY0t5SURDaD7JsOrL-6cw + test-linux1804-64-shippable-qr/opt-reftest-3: CtJEhtoYRg6TNuBxIffGoQ + test-linux1804-64-shippable-qr/opt-reftest-4: Q1CLQK2fThafRylXPxdXwA + test-linux1804-64-shippable-qr/opt-reftest-5: GdgleKBCRpygtbd5EyQsYg + test-linux1804-64-shippable-qr/opt-reftest-6: FTOmYz9RSw-w-izNFIp8_w + test-linux1804-64-shippable-qr/opt-reftest-7: fQLB5_SeSTOvEMRcgWkAYQ + test-linux1804-64-shippable-qr/opt-reftest-8: N0KWZwB7SEqPDeNDtLci3A + test-linux1804-64-shippable-qr/opt-telemetry-tests-client: W--1trQbTR2NHPTxSpBgAw + test-linux1804-64-shippable-qr/opt-web-platform-tests-1: aLU9phiNSzqtCiInQSQOOA + test-linux1804-64-shippable-qr/opt-web-platform-tests-10: GGlzjnZFScS0C7RW3aQD8A + test-linux1804-64-shippable-qr/opt-web-platform-tests-2: ZJWDmdylSo-iKEmCwGTscw + test-linux1804-64-shippable-qr/opt-web-platform-tests-3: WpDIe685TzeRFAPNDXQ5CA + test-linux1804-64-shippable-qr/opt-web-platform-tests-4: eDkIKPeIQoKnGoxqNoE_jg + test-linux1804-64-shippable-qr/opt-web-platform-tests-5: CuB_4-K0RUuHpuU2jrcqTQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-6: M2OA8ZiYRvSUYOjXQfuKIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-7: IsQ0DV4rQheswfP2vfCC8g + test-linux1804-64-shippable-qr/opt-web-platform-tests-8: HP1Yw7v1Q_abNRm-mZhMmw + test-linux1804-64-shippable-qr/opt-web-platform-tests-9: VzLBebzAQNSU_1_xjSUz_w + test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest: Mu-pqZTJQVqf4Z6lzzhwNg + test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest: E14bJMwzTJa4iNOEsP1WIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1: PlqaMULOQ6OCug0hiAaLyw + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2: ImaWFqlMSnSM815B7QmwAQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3: I-0vmBghSjeacdfVPG3cEg + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4: fV5h5K3JRZa0_roRaPRwew + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1: dU_4lxrLTKuaUuEQmiKVVw + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2: SYfNN-ZGSaamXfYJeU_41A + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3: UEgKLZXDT_WubjWBQASccw + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: BjoGlKKOS6qgg43kZjNQ-w + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: fBsZ3Hl6RqS19LX4ebFY1w + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: XU0LATHeSr22cFKB2Kbanw + test-linux1804-64-shippable-qr/opt-xpcshell-1: Hhq83W_mTFShoY8wCdS5vg + test-linux1804-64-shippable-qr/opt-xpcshell-2: VDyM5lIDSry3ofQUdTEhiw + test-linux1804-64-tsan-qr/opt-cppunit-1proc: O59b2c75RyWzvs3rIYLyCQ + test-linux1804-64-tsan-qr/opt-crashtest-1: aeMwYM28TkOtR34vjQAwuw + test-linux1804-64-tsan-qr/opt-crashtest-10: UuU6P0j6T42ijXK51hWmFw + test-linux1804-64-tsan-qr/opt-crashtest-11: IpedHlnHTCaYgx7fRW4NQg + test-linux1804-64-tsan-qr/opt-crashtest-12: cFgY-prnRl63GA_4ZSqbng + test-linux1804-64-tsan-qr/opt-crashtest-13: Jt4ItLpLT4SbyLEMRyY8nQ + test-linux1804-64-tsan-qr/opt-crashtest-14: c4MORfzHSLmrxNCsEZq4Qw + test-linux1804-64-tsan-qr/opt-crashtest-15: CQCwJ70gQROj7SgJf2ZDHA + test-linux1804-64-tsan-qr/opt-crashtest-16: bADvN2tGRbqGFHKxPjSaZA + test-linux1804-64-tsan-qr/opt-crashtest-17: EHi8_wrgSG206PhpZm2stA + test-linux1804-64-tsan-qr/opt-crashtest-18: KDEcwHRTRZ2o-p8EQJ525w + test-linux1804-64-tsan-qr/opt-crashtest-19: HjN379jFQhmWg4GC-l-sXw + test-linux1804-64-tsan-qr/opt-crashtest-2: B7I6W3TSRbO7JT9Vj4q6ZQ + test-linux1804-64-tsan-qr/opt-crashtest-20: dCQDqnTKRjG31YMmORbZlw + test-linux1804-64-tsan-qr/opt-crashtest-21: JpNIKawPQ9i8a7vwHN7dtA + test-linux1804-64-tsan-qr/opt-crashtest-22: GmDK0K3XQk2Hp-GM5YpbvA + test-linux1804-64-tsan-qr/opt-crashtest-23: IOlLTE52QqqMciMccsxzyw + test-linux1804-64-tsan-qr/opt-crashtest-24: JDMcUCmHQ6Wp84cckMbdkg + test-linux1804-64-tsan-qr/opt-crashtest-25: bl4EhgdISZGfGotuyqKYbw + test-linux1804-64-tsan-qr/opt-crashtest-26: MNmI56qhRhO5oQQu8-Wpjg + test-linux1804-64-tsan-qr/opt-crashtest-27: bdgVfQ8YQPO7xTPJZEWL4g + test-linux1804-64-tsan-qr/opt-crashtest-28: UFIBLidzQz2BHpQX4GXDQg + test-linux1804-64-tsan-qr/opt-crashtest-29: I3ze2RJ_S1SQ3PUmpPl1aQ + test-linux1804-64-tsan-qr/opt-crashtest-3: Bjm5id_eTvqi2CTa74cWRg + test-linux1804-64-tsan-qr/opt-crashtest-30: IRVyghjOTny5HyLGB4TjPQ + test-linux1804-64-tsan-qr/opt-crashtest-31: QUQdXiq-RaaBBrNc4VMv1g + test-linux1804-64-tsan-qr/opt-crashtest-32: Z6J1tgMdROKwmt17EhIoDw + test-linux1804-64-tsan-qr/opt-crashtest-4: drJJPQxHQoeiRWvPG8LoFw + test-linux1804-64-tsan-qr/opt-crashtest-5: UgfjS8xYRwO1gDF4F1kbIw + test-linux1804-64-tsan-qr/opt-crashtest-6: UzYxhujTSTamKEQsvcMyAg + test-linux1804-64-tsan-qr/opt-crashtest-7: Ewh30O1HTYG6L2GF1vfhBw + test-linux1804-64-tsan-qr/opt-crashtest-8: V-fx37lRRDmDq38gZlrBog + test-linux1804-64-tsan-qr/opt-crashtest-9: IPuflh2mR0S717wwGpC1Cw + test-linux1804-64-tsan-qr/opt-crashtest-swr-1: LFjWXqjJQ7SUd4KkQnSyxA + test-linux1804-64-tsan-qr/opt-crashtest-swr-10: RAbokOOVSR62bLx2xCzm6w + test-linux1804-64-tsan-qr/opt-crashtest-swr-11: OjE32F30T-iImaNErwPOXw + test-linux1804-64-tsan-qr/opt-crashtest-swr-12: PPvBesdARu-PnlQo6h1Ltg + test-linux1804-64-tsan-qr/opt-crashtest-swr-13: HsgilTdHQOKgr2wbWz2sYg + test-linux1804-64-tsan-qr/opt-crashtest-swr-14: bsJE4srnTBmxIDraDvEGbQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-15: ZeNbPC9hSiSE8cc5SwKB9w + test-linux1804-64-tsan-qr/opt-crashtest-swr-16: G-70QCZAQP2Th2JqCgM70A + test-linux1804-64-tsan-qr/opt-crashtest-swr-17: fwLFaghqSPGxJVYgkc-MOA + test-linux1804-64-tsan-qr/opt-crashtest-swr-18: FJ_u-GpsSnqRAe1d87Bilw + test-linux1804-64-tsan-qr/opt-crashtest-swr-19: YzghSYvLQae3IbtLjpE6eQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-2: UgkWoA0FTSaO-r4E03Xueg + test-linux1804-64-tsan-qr/opt-crashtest-swr-20: f3v8WKU6Rh-gqXkr1uxXBA + test-linux1804-64-tsan-qr/opt-crashtest-swr-21: awxFppGESEOCZZvQiZl5WA + test-linux1804-64-tsan-qr/opt-crashtest-swr-22: NSrSk2rXSvyE8MQMH-hjSQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-23: PGtlVvd3QKefq4anuWvf_Q + test-linux1804-64-tsan-qr/opt-crashtest-swr-24: DvPC7FBHToe24xUv0S_2SQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-25: G0hNueDyQZGd-jPoz4IgOA + test-linux1804-64-tsan-qr/opt-crashtest-swr-26: GY3q_lcKR8OjTS-x7Eyd9g + test-linux1804-64-tsan-qr/opt-crashtest-swr-27: YKD2Rxc7Qh-_nCSXSuDSqg + test-linux1804-64-tsan-qr/opt-crashtest-swr-28: bdINsHrNQa-0xBaKoeNWFw + test-linux1804-64-tsan-qr/opt-crashtest-swr-29: VfGA9b3dRoqW4gRz6eRfuA + test-linux1804-64-tsan-qr/opt-crashtest-swr-3: Gh-kaArYRmKaH5fQiQqFEQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-30: fTUsa3-nQLiUndSe3J7_bA + test-linux1804-64-tsan-qr/opt-crashtest-swr-31: cDVkbFstRiKzCaMHDJqWTg + test-linux1804-64-tsan-qr/opt-crashtest-swr-32: TlsHsrxWQaGC7sui_nSlYQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-4: UjqDeNAcQq6apJhN4PJi5A + test-linux1804-64-tsan-qr/opt-crashtest-swr-5: RyPFNt9RTF2vS0bsNTG8FQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-6: IcihUw-vT5mXpk-MsojXxg + test-linux1804-64-tsan-qr/opt-crashtest-swr-7: bXKY-BHVQdy-lbVidrasHQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-8: CeFf-O2xTnOobiGPOHyA0g + test-linux1804-64-tsan-qr/opt-crashtest-swr-9: BuzMnnljS8uy2m3GDCN7TA + test-linux1804-64-tsan-qr/opt-icecat-ui-functional: Y-6dRBOEQY2NePRsjZJiHg + test-linux1804-64-tsan-qr/opt-mochitest-a11y-1proc: aB3UPhRLSk2gweLPPZrWMw + test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-1: Vc9TK2zKT-Gxk-twBl-b6w + test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-2: aL1sZURmSyS8MRUS1X-cSg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-1: CEBJS6-YREuXTp9pv1oXeg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-10: GmupOCr1T_CE5mX9CHrjvg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-11: E9SB82wyRBObwiR_J_OTyA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-12: S9eLWpyrR0ugRsKGrbYcvA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-13: OCZCPT5QQh-ewHsle38nTA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-14: fBGclqNqTCG1tf7Ff8q-FA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-15: FHoXlDJYTpehwdKeX-8OYA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-16: O_NxYFd3TACGyLU1ptX3UA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-17: LO9UFcVySEq1rx6KmYgaoQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-18: UIPIIQhJQuq8CJDBV1eXuQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-19: QTKtzdMBTP68j8k9v4Ky5A + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-2: ItkZc8m2RTCgcX2D0M0AZQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-20: Miydwhb2Rv2NdsNazeYRGw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-21: NClgBoMLQMCj9dJ7wT1Dvw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-22: Af1N7fdoSXyXCuYsWynexQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-23: GWQy4k_BQT2GLgtLw-0BvQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-24: bxIu_7loSlOwCFy8JYtxGw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-25: bMWYeAdOSomtlEV8wb2krg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-26: JUKyxpnBTXe0Y1poWa-d1Q + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-27: HogFA8F4TauuCNxjduhL-w + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-28: Y807F_GgTd6jH0h5xvoiBA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-29: BxaXfqa9TOqXwKdEvmpCZw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-3: XB0iT_DaSSmI3RIN25CFiw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-30: A3gC3Vt9QMuIdEVMZcFqxw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-31: DMDdhyfTT_-QJY10AHYqRw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-32: LJ0j8Cc5QU-ktrO-jgll1A + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-4: CVoQ9BVeSVuy5XEu6y7Kaw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-5: XaIDfVuaQM-S9qEWeg8Gmg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-6: QTt10hVeTwOB8zt4c0ypNg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-7: ZNrXIOcdRH2kajlQCCExNQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-8: FO1OvhpQQt-6ajB_tNnnpA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-9: YbG6wo5nQzqsbPnFjF7PmQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-media: Bu-Ic8K3RT2QIVmtksAmSg + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-1: FuwgBRiqT-q3hyxOEiNuDw + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-2: GMGXcZw4Sxq3UgnqZ5djFQ + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-3: S2VZfPdrSOKWKtbMOL4T9g + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-4: QuPN7GIaSLGDdiogXhheIw + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-5: FB7LO9TuQqSEvgAoYz-J8Q + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-6: MUXj0_K6QGyc-PfKA-kSjg + test-linux1804-64-tsan-qr/opt-mochitest-chrome-gpu-1proc: eVftuoH2RHu9_lpI5ifZgQ + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-1: QkliPd1rSPyEPIGwg36hbg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-10: dAsUOhUvTbCBn0ajpA-Rag + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-11: eNH57RaaSGG5uXAQN5IlCA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-12: cRlrSMPiQ3SheyaoDeiuaA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-13: R-TV48WVT6GDOB02vrQ1NA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-14: fmW8VBA2RteDIDFq1o28fA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-15: Kv16unu2QzaJ8YGunfGy7w + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-16: fBXNmY4UTV60h63VStp8Yg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-2: Q5NPl37rRJOJIdk7d4-tPg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-3: QnRdQHKoTM-lTHSmBFTuYg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-4: TPLA5vdgT-u6isLSsvs4qQ + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-5: dt1-OVdSTeKUJZGBidRV8w + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-6: B-IyA1ZCTh-y9zcNg0nAoA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-7: PQXKUTfYQvWUXCuPU1m3Hw + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-8: RLiYQ_zjQ7WJ3vZ54goSPw + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-9: cpja0lC_Tq242ovQS6bqhg + test-linux1804-64-tsan-qr/opt-mochitest-plain-1: WoitlyRVT3GgxScLocFghQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-10: H0J1mtyJSJWg5w1QB2922w + test-linux1804-64-tsan-qr/opt-mochitest-plain-11: Ds8zhJh2TXqzgi73X1MHug + test-linux1804-64-tsan-qr/opt-mochitest-plain-12: cTZbhDaKSpeA6uHEK4_YtA + test-linux1804-64-tsan-qr/opt-mochitest-plain-13: Jukk4U6BQ2SN0sOmkN9dDw + test-linux1804-64-tsan-qr/opt-mochitest-plain-14: YcRuvxtgRB2t3_rlo6KTGA + test-linux1804-64-tsan-qr/opt-mochitest-plain-15: O4u9uW-oS4WHG3U34avZPQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-16: f3IRJSBkR3WwYqgoVrFKAg + test-linux1804-64-tsan-qr/opt-mochitest-plain-17: NQx59fl9TzqI20lgsTVU5w + test-linux1804-64-tsan-qr/opt-mochitest-plain-18: WhH0QPaASVawPvZAQgp-mg + test-linux1804-64-tsan-qr/opt-mochitest-plain-19: av8jegFOTOSC2LesTgTmrw + test-linux1804-64-tsan-qr/opt-mochitest-plain-2: F6HBZWytR0aEKbV5Efn0gw + test-linux1804-64-tsan-qr/opt-mochitest-plain-20: BkSK7c9lSy6HGvKRB7-ctA + test-linux1804-64-tsan-qr/opt-mochitest-plain-3: HlGPYtFdTSa2sjgr5BsYNw + test-linux1804-64-tsan-qr/opt-mochitest-plain-4: O6G5FWQXQBWggPT_9CdnUQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-5: PO6lISa7TG2ALOf4qzU6Tw + test-linux1804-64-tsan-qr/opt-mochitest-plain-6: XNHgxQ6mQ36naWDNuSAE5w + test-linux1804-64-tsan-qr/opt-mochitest-plain-7: bl8NNu5JShOaRfSkjtCBmg + test-linux1804-64-tsan-qr/opt-mochitest-plain-8: PcxsA20pTJesBl2xLLbItA + test-linux1804-64-tsan-qr/opt-mochitest-plain-9: YzBBAe0HSkuSfGaJd_rVJg + test-linux1804-64-tsan-qr/opt-mochitest-plain-gpu: ZqxLQ2D8QrqERXhmQw0j6w + test-linux1804-64-tsan-qr/opt-mochitest-remote: dxoIB151T1CIPexhdMZDQg + test-linux1804-64-tsan-qr/opt-reftest-1: apy9Xf4uQhWz313Y_Cd01A + test-linux1804-64-tsan-qr/opt-reftest-10: CGVT3Q_tQvOEAKGMywiXPg + test-linux1804-64-tsan-qr/opt-reftest-11: NsofnNCaRJmqMUjBSxGOpw + test-linux1804-64-tsan-qr/opt-reftest-12: Cj-BP1NATKGXlUQXgVFIEw + test-linux1804-64-tsan-qr/opt-reftest-13: eK_bWNwMTWKR5pLPvpDKKA + test-linux1804-64-tsan-qr/opt-reftest-14: XMZHuWajSU-9skZzymGnvw + test-linux1804-64-tsan-qr/opt-reftest-15: Dn3sEXnJRfSBYD0TyJe9Ww + test-linux1804-64-tsan-qr/opt-reftest-16: be7VMbUGTBeKEy2SRphaXg + test-linux1804-64-tsan-qr/opt-reftest-17: XAEfhMxYQL2h0pzgqrsn8Q + test-linux1804-64-tsan-qr/opt-reftest-18: W7vWDyggQ8KxaQtiPPRL6Q + test-linux1804-64-tsan-qr/opt-reftest-19: MwMs8eP-R7SdVvfPaJOWiQ + test-linux1804-64-tsan-qr/opt-reftest-2: Eizd0rA1QxyKIH5cvjkSUA + test-linux1804-64-tsan-qr/opt-reftest-20: QDn1xcfHTlansWkvbVjSSg + test-linux1804-64-tsan-qr/opt-reftest-21: PvoYi4MET3CoR6oLQjjbvw + test-linux1804-64-tsan-qr/opt-reftest-22: CetindFGTtCGhLqPU-c_2A + test-linux1804-64-tsan-qr/opt-reftest-23: a2PycrGKQZKMrnkW6A86Jg + test-linux1804-64-tsan-qr/opt-reftest-24: B8r0eG5eTK-wJUz3Bsg7Tw + test-linux1804-64-tsan-qr/opt-reftest-25: YCz3nhxiTsyve0dd_BQW0Q + test-linux1804-64-tsan-qr/opt-reftest-26: ZQn8NhiXR3KVKeTwtWGg4g + test-linux1804-64-tsan-qr/opt-reftest-27: fRwmix16Toqt3wef4x8jKA + test-linux1804-64-tsan-qr/opt-reftest-28: XOHpo_buTNmuENICO4qynA + test-linux1804-64-tsan-qr/opt-reftest-29: ZOma35ccTSmY6_a81YnHrA + test-linux1804-64-tsan-qr/opt-reftest-3: bt8YwkSpRv-QQfk8WlYiiA + test-linux1804-64-tsan-qr/opt-reftest-30: XaedyYVwSZ6MSE8yoWtRww + test-linux1804-64-tsan-qr/opt-reftest-31: KZTKinoHTLa67arCI64mHQ + test-linux1804-64-tsan-qr/opt-reftest-32: ZtSHPx19Q2W5p8Q2h0rNOQ + test-linux1804-64-tsan-qr/opt-reftest-4: PEYwPUnmSn-rbdLLvqV8qw + test-linux1804-64-tsan-qr/opt-reftest-5: Mq17GDksTnOOf-qfS9FH8w + test-linux1804-64-tsan-qr/opt-reftest-6: Hr3qoYfDQq-tISokAUNGrw + test-linux1804-64-tsan-qr/opt-reftest-7: fDupYs3VRruHdL20As_HVA + test-linux1804-64-tsan-qr/opt-reftest-8: LfqDidutT82b2jtb43mBWw + test-linux1804-64-tsan-qr/opt-reftest-9: eFip0ztlQQ-WXe-hOjIg1g + test-linux1804-64-tsan-qr/opt-reftest-swr-1: OuSrKpR7RWGov-4j89tC5g + test-linux1804-64-tsan-qr/opt-reftest-swr-10: eU0AStz8T4yKTc8MgB3gMw + test-linux1804-64-tsan-qr/opt-reftest-swr-11: UWEigh22S5mHN6T0SLXBsA + test-linux1804-64-tsan-qr/opt-reftest-swr-12: E5TmmNx3S-Oxtlxab1ZThw + test-linux1804-64-tsan-qr/opt-reftest-swr-13: EZvJ23oiQdqpTDXrGalLtg + test-linux1804-64-tsan-qr/opt-reftest-swr-14: UocCOvtxTh6dsFUMVnx2Hg + test-linux1804-64-tsan-qr/opt-reftest-swr-15: bVLVYI3bR5m1v8ntDl3-Fg + test-linux1804-64-tsan-qr/opt-reftest-swr-16: QZMpW9veSK2KiMKpHUOTig + test-linux1804-64-tsan-qr/opt-reftest-swr-17: c6Q4EcIkRZGjTs3RpCS26Q + test-linux1804-64-tsan-qr/opt-reftest-swr-18: QkSfBSdwQnS9zY6bhzxLwA + test-linux1804-64-tsan-qr/opt-reftest-swr-19: CL0c2fS1QjGVwGhJY1gxpQ + test-linux1804-64-tsan-qr/opt-reftest-swr-2: GVw5tfN9QdW-szR8ck9JIA + test-linux1804-64-tsan-qr/opt-reftest-swr-20: NhaNgFXfSKiNULCvCY-2zQ + test-linux1804-64-tsan-qr/opt-reftest-swr-21: W5QmCVDEQbOwX9b3D2QDrg + test-linux1804-64-tsan-qr/opt-reftest-swr-22: XSmMQ3MhQJm4P-eQgDHAiw + test-linux1804-64-tsan-qr/opt-reftest-swr-23: YHRTboerRHSw18O3-Ao_-w + test-linux1804-64-tsan-qr/opt-reftest-swr-24: HyW4bsl8QWOoSpTupOBPZg + test-linux1804-64-tsan-qr/opt-reftest-swr-25: FaqhoZ2kQoynEsVtLCXy2g + test-linux1804-64-tsan-qr/opt-reftest-swr-26: XPrBYplhTP-liXEhs-IaMA + test-linux1804-64-tsan-qr/opt-reftest-swr-27: eG5ni7wWT1Sab8ncsRQrAA + test-linux1804-64-tsan-qr/opt-reftest-swr-28: a8wc-n1sRquiipKtj9bYHg + test-linux1804-64-tsan-qr/opt-reftest-swr-29: DGZNxBoCTiyuoSteAIcJOg + test-linux1804-64-tsan-qr/opt-reftest-swr-3: SHQOl5oZR5qYGSUgWyRQtA + test-linux1804-64-tsan-qr/opt-reftest-swr-30: ILlUx29_R5qU4K20WoYH8w + test-linux1804-64-tsan-qr/opt-reftest-swr-31: JLXe8ypnQBS975kREE-0pw + test-linux1804-64-tsan-qr/opt-reftest-swr-32: H-DFb3cDSXGV5yT08og93g + test-linux1804-64-tsan-qr/opt-reftest-swr-4: bVhygEU5QhC6yjwztvenqg + test-linux1804-64-tsan-qr/opt-reftest-swr-5: Oq2xTu4QTWaPRbaMebUkJw + test-linux1804-64-tsan-qr/opt-reftest-swr-6: VnRD8SVWSv6DA24cgsLm4A + test-linux1804-64-tsan-qr/opt-reftest-swr-7: InJXH9YuSmOdFD1JirRlEQ + test-linux1804-64-tsan-qr/opt-reftest-swr-8: U_M7upTjS1iluaPeVHXFNg + test-linux1804-64-tsan-qr/opt-reftest-swr-9: GZqy31FmQv696-wSj-TI2Q + test-linux1804-64-tsan-qr/opt-telemetry-tests-client: SsLTR8NhR4iaWLKTBfEFlQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-1: QwxzGVpwTV6huxhSatLsHQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-10: LDXe0Z5SSlq--CKEj3ZmHg + test-linux1804-64-tsan-qr/opt-web-platform-tests-11: LyPW3JmPRqady6vyhzKWJA + test-linux1804-64-tsan-qr/opt-web-platform-tests-12: GNQ_yIGuTdebELp13bBTNA + test-linux1804-64-tsan-qr/opt-web-platform-tests-13: POU22p0kToKaL_WvmT410w + test-linux1804-64-tsan-qr/opt-web-platform-tests-14: ZEKgE-CATSORjAGYo6foTg + test-linux1804-64-tsan-qr/opt-web-platform-tests-15: LjXif5ptRGexX06GdKaxCw + test-linux1804-64-tsan-qr/opt-web-platform-tests-16: AEM4tOtoTpeGQ5_iiXT35g + test-linux1804-64-tsan-qr/opt-web-platform-tests-17: EE_LRefTQL21b37HIxU7kQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-18: O8e-KV76TNSAiLRMlpjWEQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-19: GvK7wQNSTq2H0O8KnxI2_A + test-linux1804-64-tsan-qr/opt-web-platform-tests-2: PeqqbhU9TTumrWU5pu7uTA + test-linux1804-64-tsan-qr/opt-web-platform-tests-20: d8geRmRsRCW8dmADq1IaZQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-21: BFFbgQfmQfC0G6bzitls4g + test-linux1804-64-tsan-qr/opt-web-platform-tests-22: NjZd5QdJS52-v5Jf63hoqQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-23: WdavIMKSSc6rmdP7feCbQA + test-linux1804-64-tsan-qr/opt-web-platform-tests-24: FmBMuRa9R76yvOjdBksiqw + test-linux1804-64-tsan-qr/opt-web-platform-tests-25: GUEO6oj_RV2tZS3i1XORuA + test-linux1804-64-tsan-qr/opt-web-platform-tests-26: cFkPyWw3QEOP5Qcsuo9j6A + test-linux1804-64-tsan-qr/opt-web-platform-tests-27: HMFbgBEgTQay0tXXxdc1SA + test-linux1804-64-tsan-qr/opt-web-platform-tests-28: Im1buX5GRxKzFq1CXCZNCg + test-linux1804-64-tsan-qr/opt-web-platform-tests-29: Q6ibgfuRTwGCbWe4x-DiOQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-3: eZUXrJ7jSfimCXdK6pLd6g + test-linux1804-64-tsan-qr/opt-web-platform-tests-30: Tm6NlzybQrCtmPXIkknt2Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-31: NvjctxrjQ5ON_fFPRcWtmA + test-linux1804-64-tsan-qr/opt-web-platform-tests-32: CnyAat36QDKYsf54jvZc_w + test-linux1804-64-tsan-qr/opt-web-platform-tests-4: dEyX6AJSSKe96C2417wjHg + test-linux1804-64-tsan-qr/opt-web-platform-tests-5: Gxpz0OaGTEuAm1S8v3AUQQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-6: Gw5e8cnYRLGTi-Kms8SbDQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-7: Uc55jHt4TUqGZFAGJZGdVg + test-linux1804-64-tsan-qr/opt-web-platform-tests-8: Y77XcfRuSxyhpF1-fgA8UQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-9: EvAaBEEMQly5KMxmsS1Dcg + test-linux1804-64-tsan-qr/opt-web-platform-tests-crashtest: Hy7pfNU1TyWlFT5UFjrWlA + test-linux1804-64-tsan-qr/opt-web-platform-tests-print-reftest: NYf2uPReQDuY4RGuD5mj5Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-1: AmRCJyn5SSu4MKtO_19pFw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-10: KP41sYkwRVyBHutcSvEHww + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-11: R6wwip0xSkqX-37IrUT0Uw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-12: ZmPPYUqJTAa-XxLTYyy_3g + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-13: S1T-XcrbS4WFgZeE93ZDxQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-14: QSyyzkf7Qr-dxDjFww3c4g + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-15: OufQ_HiiRuKfSmx6CoHumw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-16: NfFupmnUR2Wnr_RRu8yE8w + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-2: Dm3lNJGSTt6wd4HMSU9bdA + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-3: FegDmHZGT9iDZyIwIxfF6A + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-4: KHzE8g6eRbyxwC58xXyTtw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-5: cTTWAAhORm-YnklsglrXfQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-6: H-LGQeA4SqSZDZqspMDe1A + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-7: MEvytbiuTpKGpyOlm6Y1XA + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-8: AlRhLSuVRNOdJ8FB6kYE6Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-9: SwhhsRbhStCeZxSyOVD87w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-1: b3pdT_0XQ4-2mSlZhr9Ccg + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-2: BbxIwbGaQqa0hQbJoX6G8g + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-3: K_slGXPIQ0W9CF3leyxbxA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-4: Kzd9cDraRnijMtCHcfUnuA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-5: ONvedRvlS4awPR_OpVIw8w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-6: EtOy5ABgQSuHTL3J-mvY-w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-7: VhnxWYJ-QieNtzbdql2LAA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-8: ATNObfl3QiCX1ItN7fwSpg + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-1: PmBwZBthTp-KRHOzj9AiwQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-2: apSV_TSoREiqhYuLf22huw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-3: VltVOFGzQACdSQwROWqpKA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-4: ThH3F1crSaW5xxRrVkQa_Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-5: XJwQx9XwRLuO_M0QMv_nPw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-6: GARa4O0SSU6ZLrD-LpfNVw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-7: L9klzU7-RgOGGX99-JHtKA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-8: JmoC-2MHRLWfM50TCQknGA + test-linux1804-64-tsan-qr/opt-xpcshell-1: PX_BtE6GRkOHk4IPBxi8VA + test-linux1804-64-tsan-qr/opt-xpcshell-2: LqFx-4AGTwuQxAWd9sy7UA + test-linux1804-64-tsan-qr/opt-xpcshell-3: dp6NyDhZSEKANMRM445BHA + test-linux1804-64-tsan-qr/opt-xpcshell-4: MBAGxK4HRL--Sk5DtFWaPQ + test-linux1804-64-tsan-qr/opt-xpcshell-5: eqKAZfhjTsGM1yy4O6f2fw + test-linux1804-64-tsan-qr/opt-xpcshell-6: TJO6dnizQ-CKAScb3mGzdg + test-linux1804-64-tsan-qr/opt-xpcshell-7: AUqoxX6XRESNgoIu5dtUEw + test-linux1804-64-tsan-qr/opt-xpcshell-8: chBCzCGuQoS9ngKkB25ogA + test-macosx1015-64-qr/debug-cppunit-1proc: cathZtSHQDeNSo8XbRLGIw + test-macosx1015-64-qr/debug-crashtest: Yf2uI8k5TZqFfczxQp-_zQ + test-macosx1015-64-qr/debug-crashtest-swr: PwN8LfjBQIiferiA0PPWlA + test-macosx1015-64-qr/debug-icecat-ui-functional: BjCz0IoFT_uppliyo5ejAQ + test-macosx1015-64-qr/debug-gtest-1proc: CFB2Z5BsRbakMoKRbL052Q + test-macosx1015-64-qr/debug-marionette: FAzQP_b5RwCYzIARrKDYqg + test-macosx1015-64-qr/debug-marionette-swr: Gd21A-FHR3uqU1zvtpvbbw + test-macosx1015-64-qr/debug-mochitest-a11y-1proc: UBaSEbn-Soq9M0IB5HM_Qg + test-macosx1015-64-qr/debug-mochitest-browser-a11y: S3gt8dLxQKqCsNLn6GO3KQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-1: e3AUtgFxTV-RJm0MAbrAEQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-2: AVJJFjlIQK-jUcPmi1JBWQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-3: OWcv4HZiQ1iNn5Zvc5hziw + test-macosx1015-64-qr/debug-mochitest-browser-chrome-4: fs6PWnm9QryKwoxj092cMg + test-macosx1015-64-qr/debug-mochitest-browser-chrome-5: cvSxbXAzQRmjD2Gs5uT1og + test-macosx1015-64-qr/debug-mochitest-browser-chrome-6: CFFja-NQTOez6H7vDjlMfQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-7: Uns2HGRpReGjFR8GSvNktQ + test-macosx1015-64-qr/debug-mochitest-browser-media: X1wefVS7RTmj964pkC4icQ + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-1: PKBI5STWSU-Y1Y-dcaTY3A + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-2: YoQXqXaPQjq2zgsgf5BM2w + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-3: Vx7YNdgCSBW-wcOQK8jx5g + test-macosx1015-64-qr/debug-mochitest-chrome-gpu-1proc: SqLjV6fSQiahtY4PfaQzug + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-1: CeyYJWAXQLO2a3u_62D7XQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-2: I2qDV70hSSemYup0UD6ZHg + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-3: IUkXnbDrRlmsxt2bNfZBHg + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-4: TMI3Tyg6S_SuWmM1srcWUQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-5: Jhhe61SnQIic_mkN2aOP-A + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-6: IlVXSRCrSBqlCB-LMp1o9A + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-7: cIOtjI92TBKjnhbAq4XdxQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-8: fWLvg4NcS06VZ_KHTQ_bmQ + test-macosx1015-64-qr/debug-mochitest-media-1: WjoWFbjYTTCaJsOKvXaF4Q + test-macosx1015-64-qr/debug-mochitest-media-2: UtElOglzQoqSmSbTVDaNFw + test-macosx1015-64-qr/debug-mochitest-media-spi-1: URLWsLTMR1SDEdcLE_YZpQ + test-macosx1015-64-qr/debug-mochitest-media-spi-2: DGhKQmhiRImhsLMMzWcx2w + test-macosx1015-64-qr/debug-mochitest-plain-1: GVij-SftRgmEhE58_7a00Q + test-macosx1015-64-qr/debug-mochitest-plain-2: X56RF5VtQTaB_NetpZNZrw + test-macosx1015-64-qr/debug-mochitest-plain-3: acKqvIO8QduVzSCZoCuDrw + test-macosx1015-64-qr/debug-mochitest-plain-4: MSADRKmnQ2eHiKn3ZMy58w + test-macosx1015-64-qr/debug-mochitest-plain-5: BAFYn8FuRGGNa4XDDKIbXQ + test-macosx1015-64-qr/debug-mochitest-plain-gpu: SPuVzGPZQXS14RQvi_nJ0g + test-macosx1015-64-qr/debug-mochitest-remote: CxDo23VJQDOlCdFmI-R4pA + test-macosx1015-64-qr/debug-mochitest-webgl1-core: R4mV7CDqRrGl3vK7bI0WtA + test-macosx1015-64-qr/debug-mochitest-webgl1-ext: ZToIFK4mT8m_fWv5fQVIBw + test-macosx1015-64-qr/debug-mochitest-webgl2-core: IuCo2NETScGBRq1gBUBSug + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-1: amyj2GbIRFOaWocSRd5nJA + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-2: Uz54S4NpQ6ef9cBng1Davw + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-3: Xh0doBKhTgmAe4x-WYM68A + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-4: NAgF-XHvSQGaNfkZJk_BMg + test-macosx1015-64-qr/debug-reftest-1: TaiRJlXpQSypq7rJu_znOA + test-macosx1015-64-qr/debug-reftest-2: J7kMyZFvThudBwbsC_5vUQ + test-macosx1015-64-qr/debug-reftest-3: VlrlTJcaQJCnYMydsgH5Xg + test-macosx1015-64-qr/debug-reftest-4: edktZ-zeQvqzYAJg-9BRSw + test-macosx1015-64-qr/debug-reftest-5: c0FQ8v0rTEe9onTeCQCfVA + test-macosx1015-64-qr/debug-reftest-6: bx9LwBk1T5izHFpDuftlaw + test-macosx1015-64-qr/debug-reftest-swr-1: fJ-2wECaRAKu2cKVVc22sQ + test-macosx1015-64-qr/debug-reftest-swr-2: fmzEDOV_SSCrZqTm9mzvhg + test-macosx1015-64-qr/debug-reftest-swr-3: cTX9_TykSz-fbQrlUooAfA + test-macosx1015-64-qr/debug-reftest-swr-4: bSyHQShJQoacWcMkLgGkMw + test-macosx1015-64-qr/debug-reftest-swr-5: NWw1VjYqT0GebiS-mcDVBQ + test-macosx1015-64-qr/debug-reftest-swr-6: L66twFr5QPOsT0Ttt5Gr1A + test-macosx1015-64-qr/debug-telemetry-tests-client: e6WE3XdQRCe4d6ObAbAEcQ + test-macosx1015-64-qr/debug-web-platform-tests-1: TGGs4sMZTwiuYYm_5kBy4w + test-macosx1015-64-qr/debug-web-platform-tests-10: HB9dP-gSQy-9X-Bu2Cn56g + test-macosx1015-64-qr/debug-web-platform-tests-11: F1S5fmiLS926wuI8k7lAgg + test-macosx1015-64-qr/debug-web-platform-tests-12: G0TxgFNhSPigi7xKcnGdvg + test-macosx1015-64-qr/debug-web-platform-tests-13: FyPHga6ISoGCfVFNzOu5Ng + test-macosx1015-64-qr/debug-web-platform-tests-14: FN_NMv1ZRC-gg2Jq83ivOg + test-macosx1015-64-qr/debug-web-platform-tests-15: HpZOfcmOT8WvWBxnFDlBdA + test-macosx1015-64-qr/debug-web-platform-tests-16: WvieOW2IRha09bDifvBWoQ + test-macosx1015-64-qr/debug-web-platform-tests-17: MIUf7W3HQ72E12INfEfZ6A + test-macosx1015-64-qr/debug-web-platform-tests-18: TABkyLEcTKeUPkl3LzJvvw + test-macosx1015-64-qr/debug-web-platform-tests-2: B-yNenKUR8yErOoDBdyDBg + test-macosx1015-64-qr/debug-web-platform-tests-3: VZ3BWRHFTuexuKR4zMhbOQ + test-macosx1015-64-qr/debug-web-platform-tests-4: SdfKfDVlSqiaN4PTx-jl5g + test-macosx1015-64-qr/debug-web-platform-tests-5: R5hgONTbSLCR2kDI-E5iyg + test-macosx1015-64-qr/debug-web-platform-tests-6: EpdHa7NVT9W1HETLR2tb2g + test-macosx1015-64-qr/debug-web-platform-tests-7: aF7nVmTtQWCE5d1mPmc55A + test-macosx1015-64-qr/debug-web-platform-tests-8: K9kziwI_TSWl3JhYn11anw + test-macosx1015-64-qr/debug-web-platform-tests-9: PzYAoZQ7RGW2nUQ21I29cg + test-macosx1015-64-qr/debug-web-platform-tests-crashtest: HNd-Om_RQ_iXJSgL6xw75w + test-macosx1015-64-qr/debug-web-platform-tests-crashtest-swr: AGDbTyRwRoq22cqYyjWDVQ + test-macosx1015-64-qr/debug-web-platform-tests-print-reftest: AVIJXxlgTcqKsC4RB3TF8Q + test-macosx1015-64-qr/debug-web-platform-tests-reftest-1: F2g6XW2AQmK2f3n0cTzB0Q + test-macosx1015-64-qr/debug-web-platform-tests-reftest-2: brnRWhSKT82gPVjfky280g + test-macosx1015-64-qr/debug-web-platform-tests-reftest-3: RuzHWeykSpe02Lbpc7Q39A + test-macosx1015-64-qr/debug-web-platform-tests-reftest-4: TMhYO1MIQx-RVfBIMCo8Cw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-1: DPhQvdd0SUeMlHF2XuVsGA + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-2: EBKHGziyR-2r8pvZP0pvvw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-3: ELeuP06nQVKYWZZcujrERg + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-1: PSUO28KEQhi5fuxwxYlV7w + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-2: Scvzh_KqTFa1810k3soBLw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-3: IbV-cq4fS0GzmEnTRq2IRw + test-macosx1015-64-qr/debug-xpcshell-1: SYq8xSADSD2rchOE1wxyYA + test-macosx1015-64-qr/debug-xpcshell-2: bxz6HwovRsauydAeczCRrA + test-macosx1015-64-shippable-qr/opt-cppunit-1proc: B6HInIseTNKgSdZ2Ps1LVg + test-macosx1015-64-shippable-qr/opt-crashtest: CiYTbP30Sj2JJmnvPrUx3w + test-macosx1015-64-shippable-qr/opt-icecat-ui-functional: V80wgUlvT4uF1HpyQD26Rg + test-macosx1015-64-shippable-qr/opt-gtest-1proc: fX_Kkq_3SmeqJxNJtDoFjw + test-macosx1015-64-shippable-qr/opt-marionette: BBCnVoOYSQO9p1oA4_lPog + test-macosx1015-64-shippable-qr/opt-mochitest-a11y-1proc: fvA9Y3LhTY6wk9Hq0OMloA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-a11y: d2L9aroLQdauWDyzli_zaA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-1: fcssjF4dTCab6AtDxnDgFg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-2: cukdc3ejS7mPEUMuf8VJLA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-3: VWcPNKOtSSmSIHze1SV6Yw + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-4: YtdQcHnbROuWyAzh8Ofzxg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-5: H6BEVYkvSDOj-G83zNOVXg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-6: HrhJ-9X2RmmzLuAjFntKUA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-7: GWx3n2_HQc2EdJxFRVyUDw + test-macosx1015-64-shippable-qr/opt-mochitest-browser-media: Po31MBi1SZWjD8qZqabDGQ + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-1: BGoKI1RrQqycLAUFbXET_A + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-2: PrLapc3uSEOCvTu4dwtWIw + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-3: O7S4OVLXRviYa3RETqm2_A + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: X9DSgfuZQSu3Y8RIOKucQQ + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-1: ETL8M6HDQ7q8zINqSStWnA + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-2: ChnATJAORvW-aQyIKjdVVg + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-3: dGHf8WYlRPGkw5qXEfwIsw + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-4: IXKKUa7CRUC9R7MjedpGPw + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-5: L2ciCGt4RYKURmmQoOnQwQ + test-macosx1015-64-shippable-qr/opt-mochitest-media: HSwMaYylTuCMoz4C2-jn_A + test-macosx1015-64-shippable-qr/opt-mochitest-media-spi: MMj-KffaSkOpM-U2DtFqJg + test-macosx1015-64-shippable-qr/opt-mochitest-plain-1: N-uLoWChRiuy5TvMc4laVQ + test-macosx1015-64-shippable-qr/opt-mochitest-plain-2: EtwfmoclT5StJHHq4Tag-Q + test-macosx1015-64-shippable-qr/opt-mochitest-plain-3: Uts9_F9GTxCUgKQlV9e92A + test-macosx1015-64-shippable-qr/opt-mochitest-plain-4: CjWjn5yLR5mzYwhJt2GWqQ + test-macosx1015-64-shippable-qr/opt-mochitest-plain-5: fXNT0YMsSMi2CPzcqM50xw + test-macosx1015-64-shippable-qr/opt-mochitest-plain-gpu: Qux5G90kSV6FEk5cdf32XQ + test-macosx1015-64-shippable-qr/opt-mochitest-remote: GlsnJljyR8i0U6TcHgDCdg + test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-core: bHaAcyVFRq-UAbQ0Q7MCVQ + test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-ext: Z5F4ybaGR-ewrQ68vU2OBg + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-core: XJAkIB2oQ0WfKltt5kMNtA + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-1: Stw0EMTDQjORYcl95w5iFA + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-2: Ci0T8wwLRlavNp26tdi98w + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-3: GUl-Zty5S0Kk6Q-2L89M1w + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-4: Sy9OetNjTzKn1ZAmjNtYig + test-macosx1015-64-shippable-qr/opt-reftest-1: II-3__SZREqh8_OxLVWZQg + test-macosx1015-64-shippable-qr/opt-reftest-2: ZlkGyUa3TGWay4YTloi7gg + test-macosx1015-64-shippable-qr/opt-reftest-3: YO8MeZUPTu27_t4rSq5T8g + test-macosx1015-64-shippable-qr/opt-telemetry-tests-client: V3h2Vj7gS0qsgZTyFKVQnw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-1: RzOPB6m6RkqAtjYy0gRGZA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-10: ELlwRF82R2SoWk4V29jXoA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-2: Oa1WXdFnRXWbX4X_71relg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-3: THbyBieOSb2a0MEJdIuU4g + test-macosx1015-64-shippable-qr/opt-web-platform-tests-4: W-OsdRpOQNWwzuEbBj5dTQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-5: ScNWSsJ5Q12FPlAZrd5r3w + test-macosx1015-64-shippable-qr/opt-web-platform-tests-6: bNvgKWTvTj-tChbOBCp8IA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-7: Nczz4we6SoujbQeYIUhNQA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-8: Snd9SONXQHmp4XtPMGxbxw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-9: YbQVrreOSHmhWrW0LjlvVw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-crashtest: evh0KEyDQ4ShtpjGOppiTA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-print-reftest: UYPVlpzDRcWB0DIYv4DN2g + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-1: TLe6HWe5RtqGPZ8xtQ_xkg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-2: FveZUU2nTLK-K0DyMb1rwQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-3: a3B-mqkDSMKmT4XrpcGcRA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-4: SPXxCqLNS8mU3g0djJkhLA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-1: VUTflE8mTeeG9kMETFtJVg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-2: FjDo4jUrSlWi_WZ_geKyKQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-3: Xrg2uUEqSFqr4yaezMsNNw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: KGiIMAgKSUGIcucB2t1Jxg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: Lcdpsu85TXixuhrnOUWNtA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: OJhUzTA4TF2ocrrUfqKkdg + test-macosx1015-64-shippable-qr/opt-xpcshell-1: cM0mkZkrTeuwBvxAThio7g + test-macosx1015-64-shippable-qr/opt-xpcshell-2: BfTrFr7OR2eAv_DKXJV8_w + test-macosx1100-64-shippable-qr/opt-crashtest: ARTj1FdvSOaFUUjgF18dUA + test-macosx1100-64-shippable-qr/opt-mochitest-browser-a11y: Rr8TwjR4ShmTCGutRPUyPw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-1: YHnCOnrpQZCIax0-0p-xNw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-2: ZME3148ET5efwqKAYwDVHw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-3: GgddI3hQSg6EdYeebR4pXQ + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-4: YuhYTeCNT6GSRdtGgBRj8A + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-5: NgGjgrtGT1um1wS-uHhOhQ + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-6: Hx_R9GXtSp-jx-mTRMluKw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-7: Sy7qFbLXQEytj3XDk0_cTA + test-macosx1100-64-shippable-qr/opt-mochitest-browser-media: UHvQ8ZaCR7OMH0YOZgOTEw + test-macosx1100-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: YGVXBYmERCCgHNfApPvzaA + test-macosx1100-64-shippable-qr/opt-mochitest-media: Df1yxGFgTPyrfQGD70j9Nw + test-macosx1100-64-shippable-qr/opt-mochitest-media-spi: fbo1dweSQ86WM5LRSDcXCA + test-macosx1100-64-shippable-qr/opt-mochitest-webgl1-core: GieYjRI2QreokrNl1h-JNA + test-macosx1100-64-shippable-qr/opt-mochitest-webgl1-ext: N9cqasAKTRegSl258wyY5g + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-core: ObozWp0KTruwuLCvvy7sOQ + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-1: LPoAG8N1RreYCIy2HUngIQ + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-2: TzG7bl9ES0G-1_5ulSkwCg + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-3: Z7BpSKAFR3mJ0Dt7E1KU2g + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-4: KanjidoFQvmtcLLi8Y-Lfw + test-macosx1100-64-shippable-qr/opt-reftest-1: E9uXzFYcQteNMshmYFnwLA + test-macosx1100-64-shippable-qr/opt-reftest-2: eAFCODveRgCpn6To9U0QtA + test-macosx1100-64-shippable-qr/opt-reftest-3: ON8d1OUoR2GJiNqUwvtRSQ + test-macosx1100-64-shippable-qr/opt-reftest-4: QeA5DWq-Slq4OYli5VEOVA + test-macosx1100-64-shippable-qr/opt-reftest-5: KPxr6XOsQ-q27YxMiCBtsw + test-macosx1100-64-shippable-qr/opt-reftest-6: biPfFGVeQ-uXum3jRCWnjA + test-macosx1100-64-shippable-qr/opt-reftest-7: A_43jc3sRV-QcfJc5hMINw + test-macosx1100-64-shippable-qr/opt-reftest-8: WeecU9gyRIGpuMPTtObGvw + test-macosx1100-64-shippable-qr/opt-xpcshell-1: VaYy4OevTRyQQaxTMvXXYQ + test-macosx1100-64-shippable-qr/opt-xpcshell-2: cMSZ3oiRRCymjyr3W4FSSQ + test-windows10-64-2009-qr/debug-cppunit-1proc: Hp2qb8W-TcWcxVQZoWCENA + test-windows10-64-2009-qr/debug-gtest-1proc: IOOc_KfNTB2_ellUOvv4Hw + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-1: cYIMSwmAQliewCyZsxAMPA + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-2: EmPX9aLoSSCExfhmAXbacA + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-3: MHIZN5TBQgK5MCsVIspS5g + test-windows10-64-2009-qr/debug-mochitest-chrome-gpu-1proc: JjNWzFC4QJadiesp9jSS7w + test-windows10-64-2009-qr/debug-mochitest-plain-1: XyCQPg8DQMiWG1WH-F_YPA + test-windows10-64-2009-qr/debug-mochitest-plain-2: ZPiFCs3oTgqAT5y6UIaMiQ + test-windows10-64-2009-qr/debug-mochitest-plain-3: OjzHfaUOSVuYVs11uf431Q + test-windows10-64-2009-qr/debug-mochitest-plain-4: Wh8fSsPnT8O4SJZO5G2b6A + test-windows10-64-2009-qr/debug-mochitest-plain-5: JWjnmf0ERCecV6S96c9PPQ + test-windows10-64-2009-qr/debug-mochitest-plain-gpu: TMHKJ_7hRcakUK1sDGLHaw + test-windows10-64-2009-qr/debug-xpcshell-1: PCORmn1WSTivUxy2W0UUPg + test-windows10-64-2009-qr/debug-xpcshell-2: G6MH1WdkTvO7ZIP9DlLcBA + test-windows10-64-2009-qr/debug-xpcshell-3: eB-4yFTJQxqQbajrMQOInQ + test-windows10-64-2009-qr/debug-xpcshell-4: Ab2hXB66Tkyd8NSdmV1K-w + test-windows10-64-2009-shippable-qr/opt-cppunit-1proc: HQOND5ILS4CwO0lxPbsraQ + test-windows10-64-2009-shippable-qr/opt-gtest-1proc: Eb8LxntxRLiFckXxj75XDA + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: OH6yKM1YQAmeusxvSJkd8g + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: d7VMtnfaSaCBTTREer0oJA + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: enex2MGaQ5qZO7GYi9RL2A + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: Fec5aBiTQjGkp-RiSJgm1g + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-1: JPZLDbMMRiiESyyFIE7GYw + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-2: Y6SYUSLeQq2OcWMG9LuC4w + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-3: e7UtOb9CTqOTV2Es_ppF5w + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-4: XXjFDrspSluCC4pnD031TQ + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-5: LVmFMkZHS7OHD8-bFNLwfg + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-gpu: LzifIO8aRzae3y8TUHfmMA + test-windows10-64-2009-shippable-qr/opt-xpcshell-1: FwP0pQgbT9qwQxamzkU2Ag + test-windows10-64-2009-shippable-qr/opt-xpcshell-2: bs8RlnGKTOebtoPHGHt_4A + test-windows10-64-2009-shippable-qr/opt-xpcshell-3: Iaz8KBXKSIewrvj-gVicdg + test-windows10-64-2009-shippable-qr/opt-xpcshell-4: EB3_1-07RV6KJJ1qAeyRDg + test-windows11-32-2009-mingwclang-qr/debug-cppunit-1proc: MOexkxzUQ3q6-y8z9sBZpA + test-windows11-32-2009-mingwclang-qr/debug-icecat-ui-functional: fEk2jUkqTzyLH0o1MYqoQA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-a11y-1proc: RIjB2kQnTJyb1q14YZQ2NA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-chrome-gpu-1proc: HcbWBmHsSpyhG8y_YtOVpg + test-windows11-32-2009-mingwclang-qr/debug-mochitest-plain-gpu: SoioSVTCRrCHcicK6GeIzg + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl1-core: ROAHp97dRNG8jpKIHLLjSA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl1-ext: VCx9DJR0QsSsctuaXyoI1Q + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-core: aBUwAcP0SJmP8kyi7uCrIQ + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-1: O_zeJZspT5-iYmly0iX9XA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-2: PcV_IM7-R_K7PZsRCQen0Q + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-3: W9nWGxzoQgGCY7U3ZZVbpw + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-4: CwlSFgRSS0GG17xYtceEJQ + test-windows11-32-2009-mingwclang-qr/debug-telemetry-tests-client: CAn19OWqRZyNH7XIpFldDw + test-windows11-32-2009-mingwclang-qr/opt-cppunit-1proc: BoSOS6tCRqGeM9RfacqvCw + test-windows11-32-2009-mingwclang-qr/opt-mochitest-chrome-gpu-1proc: OHyz5LDnTE6srwFBfk5UaA + test-windows11-32-2009-mingwclang-qr/opt-mochitest-plain-gpu: WSYia__XRve832vWUDU-6w + test-windows11-32-2009-qr/debug-cppunit-1proc: E65nQqPMSgiUQjaJj8skhA + test-windows11-32-2009-qr/debug-crashtest: ODQx8p_DT1eLi7J5fc04cA + test-windows11-32-2009-qr/debug-icecat-ui-functional: d5n2sDjwQdGwnv8GYZH2CQ + test-windows11-32-2009-qr/debug-gtest-1proc: BYjSeQ41Szq4POUMfRVu0A + test-windows11-32-2009-qr/debug-marionette: LRiZvHDgQkyiV_MaRfKQNg + test-windows11-32-2009-qr/debug-marionette-swr: CkGiqlaHR36StNB786JsOQ + test-windows11-32-2009-qr/debug-mochitest-a11y-1proc: M6iQxvUoSxe4MyPhJqQDLw + test-windows11-32-2009-qr/debug-mochitest-browser-a11y: MXrQoGZ2SX6bozvp-VlV1g + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-1: G3Bo6GSDRrK8GsOiRDVA7w + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-2: NEfYR5psSwicqiY8HmaZDw + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-3: HI7JAJfBS1es-IygnjCuXQ + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-4: GaIs2IBmQ-e6Vx57AJRuXw + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-5: KC5I4n1_SbiIJPdWpzJS0g + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-6: MMXvkopoSDu-V4oRhF19zQ + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-7: cC69dUWJSuu-biQ7wGSTmw + test-windows11-32-2009-qr/debug-mochitest-browser-media: VUslue0tQAKma9LGoAmLdg + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-1: coWwUCm7QJONMWL2LukwGg + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-2: Kcmwuc-hREediUKGJpEeeA + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-3: bMBrOKviSPuqVjZd7IYoyA + test-windows11-32-2009-qr/debug-mochitest-chrome-gpu-1proc: PbWlIH2WQN6Mu0CWJJA1rQ + test-windows11-32-2009-qr/debug-mochitest-media-1: Awdl8ZAXRIyryoZybnVoJA + test-windows11-32-2009-qr/debug-mochitest-media-2: PzhWpd3hTvWuw8Yg_80IvA + test-windows11-32-2009-qr/debug-mochitest-media-spi-1: LmVcSRyFRJmb5VltlKXv0Q + test-windows11-32-2009-qr/debug-mochitest-media-spi-2: craSLkIlRSOc7erna__hqw + test-windows11-32-2009-qr/debug-mochitest-plain-1: S2xjIClCSsih4IRYq0mwsw + test-windows11-32-2009-qr/debug-mochitest-plain-2: IU5NqKr1RXa_EcWbrS1FsA + test-windows11-32-2009-qr/debug-mochitest-plain-3: X8P33JZSQVergkgmP-jW9A + test-windows11-32-2009-qr/debug-mochitest-plain-4: NVDIcvOhR1m8ChQjF_Wktg + test-windows11-32-2009-qr/debug-mochitest-plain-5: GZ71O_NISDW-6KS7851QhQ + test-windows11-32-2009-qr/debug-mochitest-plain-gpu: cITTCbXMRRCHtH14rJ3WYw + test-windows11-32-2009-qr/debug-mochitest-remote: VpbJ1FK5RkS3g80ZdRXy3Q + test-windows11-32-2009-qr/debug-reftest-1: eEqiq8oOTCmEJFEabGMG4w + test-windows11-32-2009-qr/debug-reftest-2: I0KWFX4rRuG89Z2dZg2VYg + test-windows11-32-2009-qr/debug-reftest-3: Ho7f2W87Rq2-16JcX8ZmTg + test-windows11-32-2009-qr/debug-reftest-4: Ia17r0xvSMuScNIzBqDQfA + test-windows11-32-2009-qr/debug-reftest-5: Tu3xAdswSMOj_XLkhGIv6w + test-windows11-32-2009-qr/debug-reftest-6: BjnqUmG6RwKOlgBHwM_9ug + test-windows11-32-2009-qr/debug-reftest-wr-dc0-1: dAtyUh-NSBylA41eeH5VaQ + test-windows11-32-2009-qr/debug-reftest-wr-dc0-2: UmlZcPG7TOmJWi_J_pqibw + test-windows11-32-2009-qr/debug-reftest-wr-dc0-3: MkD2Ydj-Q16oUO0OhkGq9Q + test-windows11-32-2009-qr/debug-reftest-wr-dc0-4: U6u7yxvdSZmLO-PBnIQkEQ + test-windows11-32-2009-qr/debug-reftest-wr-dc0-5: agI57GZCSFiONpMeA3majw + test-windows11-32-2009-qr/debug-reftest-wr-dc0-6: YfTWNedVT5eD6hefcwBqFA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-1: JxXvHFr5QM6MKJd6qiuThg + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-2: e4T1z0FwR0GA3EbXRsPFPA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-3: MoQOOaQPSuiVCAi-gpB3jw + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-4: TT9pwVuOQXSyi9AeBo0mOQ + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-5: KJtSCuY5Qmaf4VIQxglysA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-6: TyxvYTXKTpq_rqI_XpIvdg + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-1: KUeYIPQuTE2NuMSQNS6RlQ + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-2: TnV3L2xRRyKTSq8vISBXbg + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-3: fSholjK9RomZYZ8UtuO_pQ + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-4: FNJqZtUwQiynPwj84qCG1A + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-5: GDPVd_ZMRmGzlCFuey-uWA + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-6: Wz3tVJo8RzKK3Tl63kjn5A + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-1: ctBEv0lUQau9ZQ1zU4fZ0g + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-2: D5IzfdYHTlGDsY1XPY-vug + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-3: Qi5nnrNoRp2083xHVcSi9Q + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-4: YuAvBqLzQDOUwsO2FLxrQw + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-5: MUDACnkYSeOiYNQf4ZzQaA + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-6: Zz6xj9KESQWalRqK4i0cwg + test-windows11-32-2009-qr/debug-telemetry-tests-client: WKJNLPtIRAK_bdg1xHr5rg + test-windows11-32-2009-qr/debug-web-platform-tests-1: Gh6YfZ4hT5KUt6H4lsraEw + test-windows11-32-2009-qr/debug-web-platform-tests-10: POpwONSJQ1ydf690LL-mIw + test-windows11-32-2009-qr/debug-web-platform-tests-11: adAEw82gSIieK5de81L4CQ + test-windows11-32-2009-qr/debug-web-platform-tests-12: Vkz6BjUJQW-c4Up8HVhO3g + test-windows11-32-2009-qr/debug-web-platform-tests-13: UHbvRp88RiyPpYsrsgChAg + test-windows11-32-2009-qr/debug-web-platform-tests-14: XSmLFWCES-mU559ISMGPjQ + test-windows11-32-2009-qr/debug-web-platform-tests-15: K9f6DOu_QKiV_3jKzIQJuQ + test-windows11-32-2009-qr/debug-web-platform-tests-16: R4h7HfGfS0GmLSFtjWG9WA + test-windows11-32-2009-qr/debug-web-platform-tests-2: c1GsHAwWSxe_wB5cnjO5qA + test-windows11-32-2009-qr/debug-web-platform-tests-3: HWnFok_-QfiaYxt02USpuw + test-windows11-32-2009-qr/debug-web-platform-tests-4: bwx47kywQlC_szAAtHYMZg + test-windows11-32-2009-qr/debug-web-platform-tests-5: P5JMyY6QTjKEWPpok-DVDw + test-windows11-32-2009-qr/debug-web-platform-tests-6: bmQpmuUURiiQLHlmylzR-g + test-windows11-32-2009-qr/debug-web-platform-tests-7: C3GKACMOR3yf5b-Fcfx0hQ + test-windows11-32-2009-qr/debug-web-platform-tests-8: JJVxidw9SwiONBTTSmy3yw + test-windows11-32-2009-qr/debug-web-platform-tests-9: AF4_T6tQRl6159smzQVtNQ + test-windows11-32-2009-qr/debug-web-platform-tests-crashtest: IJpXpU4dRH-gZCziC7nxJw + test-windows11-32-2009-qr/debug-web-platform-tests-print-reftest: XuHTQCW5SI6a4F_mIhfcGQ + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-1: F9klWPjZQSCQ_KL7ZMJpdg + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-2: AUldPXeTTha6QtKIcH0GDg + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-3: HtAsQhPSRBOzUfhivdUsEA + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-4: SnvtyZFfRiWGiv4pBNutvw + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-1: UsprC0JTQQCAS79t4hcrQg + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-2: KtFiSvQIR5qsZ5-4Tpcoyg + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-3: alsrBkMwTwiLUUtokm0iww + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-1: IjIUGwHqSi6VpruAP_MP8w + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-2: Hpkrec33QnyhbQquhh9lZQ + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-3: b1sJ8-F1TYyd0M8CZstdng + test-windows11-32-2009-qr/debug-xpcshell-1: LJjKCpz3QQiHj95sqjBfhw + test-windows11-32-2009-qr/debug-xpcshell-2: U3uQCcmvSW23Uvg28tOYyQ + test-windows11-32-2009-qr/debug-xpcshell-3: C5IFaf7VQwiqpdHw3mOUFw + test-windows11-32-2009-qr/debug-xpcshell-4: DXqdiOZIQ9W02W8X3XKt2Q + test-windows11-32-2009-shippable-qr/opt-cppunit-1proc: FDoFq76hQVaNauNXCbmVEA + test-windows11-32-2009-shippable-qr/opt-crashtest: Gr4bhKIHRg-1A7yhisfWKw + test-windows11-32-2009-shippable-qr/opt-icecat-ui-functional: SYiI3xdeTauiZOLh1dxpog + test-windows11-32-2009-shippable-qr/opt-gtest-1proc: FTJ-3SkrRpm6E6YJyzhrsQ + test-windows11-32-2009-shippable-qr/opt-marionette: Expc7E1STj26DC0eHvVhzw + test-windows11-32-2009-shippable-qr/opt-mochitest-a11y-1proc: HXCVnH0kRAeROMXcBnlsMg + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-1: FaaFvkZTQ86FAsawTu5ybw + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-2: MjZlbhT5TuWD7xqjJUpXyw + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-3: RkPq_aswTUWQmLE-KhDFKg + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: XUa83PL-Svymht0LHnHBlA + test-windows11-32-2009-shippable-qr/opt-mochitest-media: RwR73rGcTp2TKfrhLFvJ1A + test-windows11-32-2009-shippable-qr/opt-mochitest-media-spi: NZ9eS6UsQcqrWOc_4Vir1Q + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-1: EpGli_dxTcCV4sYax_WR3Q + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-2: VRUpLIhfT3agyC_m1QMgpw + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-3: LQaTsvRkT9GC6tFhgMAkiA + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-4: XwvCV9GlTk23nMC1NTNLyA + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-5: OLzZd8sJQK6-N4pn8_6dXQ + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-gpu: Ce_ewaGLSiCsPtdIUkZk8Q + test-windows11-32-2009-shippable-qr/opt-mochitest-remote: Fm3TfgNJRESVPxlomU7WJQ + test-windows11-32-2009-shippable-qr/opt-reftest-1: P6zJbUQTRjGBFsH4vFeinQ + test-windows11-32-2009-shippable-qr/opt-reftest-2: A8w0HKOfRdGjyHVW_u6Omg + test-windows11-32-2009-shippable-qr/opt-reftest-3: T4fHnL8qT9WCWDmI7nsIVw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-1: P6tK0IJcTDmFW_RFrA1Hrg + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-2: WwtfPptFRTum2UNZQkiA4w + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-3: M3cwnQWTTHqRFZt1yaWCtw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-1: BGeIKVo4QPWCGGl2sp3EjQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-2: cBVcBLTcTf27RnKObSQVdQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-3: JMMfA7tORGGXEax6ny0A-A + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-1: XXOas_F5RlmZYGk-izRbCw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-2: A3HeM1DjSn6P2LLJs1J8kQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-3: YlJWGqi9R5e9JcmCpdPGiA + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-1: E-t0A42hTByXoPZ0hCN50g + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-2: QqhNo30iRJivd3ul6XvFYw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-3: fWdwFH7oQ0qolIsohzCL6A + test-windows11-32-2009-shippable-qr/opt-telemetry-tests-client: BXA5oY6oQl-9-YAqztPQrQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-1: FW0tix_IRWmjhJHZOPZCpQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-10: IkO03U_OTLufyFZ1jdYgjw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-11: ZaMhUgKkRZmtMOiUYL5zNg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-12: NOKkN93ARcuDesZmuw5yJg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-2: SwL2eOiIQsGcQAUg-dsZBg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-3: LH1ri4K5TIWk9aPzbivOpQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-4: JgOk_P7wRIa_SSbJKnw-iQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-5: dgTVoxuFQ7eOt6quq2Y65g + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-6: cQRhKgmqSCijMKcLtbBCbg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-7: Om9mjphMQXqrUj6qc9V3-w + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-8: SMJlx2yHTsyFwissqh-bAA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-9: W3GMrA6RTjOcMzf6o6JvnQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-crashtest: VA_OBpLTRbSiM4bYWQFzig + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-print-reftest: GswAtwoISfO0FzXD2nFs1A + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-1: aMDReOI-RdmDusgQlandnA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-2: A138goyCTUuXTkI83PUyUw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-3: X6zpiovPT7ifOlfj_g-Auw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-4: CyoIdymxQMSHXMtXjULIfA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-1: UtJGt6wFTcmBtABORB_yiQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-2: KkulTtFIQcWC6JYPGCq7FA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-3: OIu-Ai8tSbW9g2OaEuDAeg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-1: TJgyWom_RviovIGNBTZigg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-2: KJVt7DOcRo6Wo7J4GbWnfg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-3: K1IWRyugScy8w8sv0k8s8w + test-windows11-64-2009-asan-qr/opt-cppunit-1proc: MBJUF5rBQU-kNPBVqFjpLg + test-windows11-64-2009-asan-qr/opt-crashtest: XUc9phptQ2yxgws-GlV-lw + test-windows11-64-2009-asan-qr/opt-crashtest-swr: YcDKrF5kS2G3kFYkAXvlxg + test-windows11-64-2009-asan-qr/opt-icecat-ui-functional: HQ6JqD2FRJep9jq-4akPNA + test-windows11-64-2009-asan-qr/opt-gtest-1proc: FfDlxUEwTTOLPZ6Q8d3pWw + test-windows11-64-2009-asan-qr/opt-marionette: ABrrUHvsTFyttGFq2zt4nw + test-windows11-64-2009-asan-qr/opt-mochitest-a11y-1proc: ZoUGmaNGQM-eSuzWi72-2A + test-windows11-64-2009-asan-qr/opt-mochitest-browser-a11y: VThrCSTuRkKxJaHdE8QRDg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-1: C0bQYp-uSiSO_cXHytNoUg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-10: QQjuIkUVTXaf1_HnFRktFA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-11: Cx9SzPhQQxeD4fRV3zWLww + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-12: er8Le2gkTKiWrDmu9eX94Q + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-13: bxEiWUaXSo20G_mQW7am_w + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-14: YomC2HwbRl-8QHPC9s5wmg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-2: O6lTCE9YTRKv9FktnNkfnA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-3: JfZz5sUJTnGo0Ku069O3SA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-4: X7Pn6UNaRXeIoCoGPrCpKw + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-5: cZ770RhMRqy322U1aw1FCQ + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-6: AQJuDELCRESNDXq3y10ylA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-7: Kex2ckuRQd2TnWqef6Cwyg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-8: Zib0iK34TyWoUmXdVRTqwA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-9: FzLBTqL4Rc25X8SzXq8Cpw + test-windows11-64-2009-asan-qr/opt-mochitest-browser-media: AkFtIMXYRoy0Ac2yTCppJA + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-1: RAznv7JhQTiJuZIg2pQeZg + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-2: AmK9Xen9RpWbvifOFQG9hQ + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-3: DJ7o-gUQSjmp5R_CHpDRLg + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-gpu-1proc: JZNkLetGSVmE4WWp1tyE1A + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-1: fAaLJLOSSuGztfhES0pE5A + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-2: dYGqPm6YSUitTaO9VcifEg + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-3: KnFbaKKzRO-MVBja7ry5SQ + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-4: aSM2yUYCThOa-lq6LoxI8g + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-5: dLiN8jvmSIWLqpeGjNGbYg + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-6: AK1FlurHTOOW15GnJlPqOA + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-7: ZaLqS91tRjuGG72npBg2wQ + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-8: SsqzcOpxReWmPNFkXz4nJA + test-windows11-64-2009-asan-qr/opt-mochitest-media-1: MZhij9adRkaEJXH7XO1wHA + test-windows11-64-2009-asan-qr/opt-mochitest-media-2: CLVDQh7IRAe91p5kBE2CeQ + test-windows11-64-2009-asan-qr/opt-mochitest-media-spi-1: Vm1dW2SdTUKHTLmeK_iLTw + test-windows11-64-2009-asan-qr/opt-mochitest-media-spi-2: eex0qyq4Sw-nJRKgfuRgSw + test-windows11-64-2009-asan-qr/opt-mochitest-plain-1: J-YE0pGjTiaj4k5joWA9Ow + test-windows11-64-2009-asan-qr/opt-mochitest-plain-2: S6SUvH6eRXW2zlORUXkqIA + test-windows11-64-2009-asan-qr/opt-mochitest-plain-3: M3He8nuaSjmLw7bCsCXjXg + test-windows11-64-2009-asan-qr/opt-mochitest-plain-4: H-N_r7JZRtWuF8p78yjRRQ + test-windows11-64-2009-asan-qr/opt-mochitest-plain-5: UNmbsjotSNeD8UOpohTojg + test-windows11-64-2009-asan-qr/opt-mochitest-plain-gpu: LsUspQ7eTDmYudZCy3sepA + test-windows11-64-2009-asan-qr/opt-mochitest-remote: Z-jCGx_dRjiQlmuJC9N7fw + test-windows11-64-2009-asan-qr/opt-mochitest-webgl1-core: fApLljdKQhOhXCM1NL54cA + test-windows11-64-2009-asan-qr/opt-mochitest-webgl1-ext: UXWJmbutQAmTQdyrxyzPKw + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-core: BdLdX2ywSsuJ5pk7hnS1Fg + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-1: B4hGE99yS1S7vpYGIFdFpg + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-2: KnEpBI0PQ764YoPAf6LBZA + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-3: fnkS0KUGSu25d11K8IwHkQ + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-4: UtD22HGkSG-wndt06l9Bww + test-windows11-64-2009-asan-qr/opt-reftest-1: JkatQrBFSVqEH19qoQvmWg + test-windows11-64-2009-asan-qr/opt-reftest-2: J6jmmYjMTFO5ue6I4UGhWQ + test-windows11-64-2009-asan-qr/opt-reftest-3: XTgdf2-bSSevBcZW12aIHA + test-windows11-64-2009-asan-qr/opt-reftest-swr-1: GG52klBHTP23QRr2lWfwjA + test-windows11-64-2009-asan-qr/opt-reftest-swr-2: Rv1k9hQTRJK7Qn-gTXgRfw + test-windows11-64-2009-asan-qr/opt-reftest-swr-3: B-1lXLt9QtuglAOHADL53g + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-1: LzLYptFSR8KQXocaiZBoTA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-2: F6FTIn3tQYemAPAswpxgCw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-3: V73UoeG6Rbua1xvZBKChYA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-1: fqcRUWqwQvKdQgZXU_Txyg + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-2: A3nQi3sgTBmIbpPT5yqkkw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-3: HNKq_LfARjGIXFpv0mrYhg + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-1: WeGnHBFSRbyjt8Rw2Z4ItA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-2: c3NW5VeiSOa6sfnOx4gDGw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-3: D45ymiXHSv29Yy_XtfFIfw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-1: YdO91d3lTfGDvFgr3a8xLA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-2: I_m7Onw5TjOd5Sj2dukA1g + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-3: FjTQ_Mu3TxGQPwpYRgOskg + test-windows11-64-2009-asan-qr/opt-telemetry-tests-client: M_zYrWYWSMuTASbOrP367Q + test-windows11-64-2009-mingwclang-qr/debug-cppunit-1proc: QI1XChXPTXa5gy2TmqRUjg + test-windows11-64-2009-mingwclang-qr/debug-icecat-ui-functional: fNinfUl3R6aEfxihHZOfhQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-a11y-1proc: FZ7KsI61QDmnLCOaQiS0gQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-chrome-gpu-1proc: RTvAdIL0QjmkpgmTgqhLow + test-windows11-64-2009-mingwclang-qr/debug-mochitest-plain-gpu: CWXkuY9HRFi8dqrh7S9Vxg + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl1-core: EGXKHLEAR5yO-ovNTno5Mw + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl1-ext: HGa6UYmbSKiRjdVtCtyVbQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-core: YeEIxyKfQJSBCOy2zGKkPA + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-1: Z52lvUZSQtq2Dt7csAssUQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-2: V4BRVmn8SkmZNQhzpxj3_g + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-3: CZB8xa2aT-yof7PmOjjSyA + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-4: E0bm5cFRRfCJuVDgaJy7fg + test-windows11-64-2009-mingwclang-qr/debug-reftest-1: fw-m5jPXTy6V1YlruSrBBA + test-windows11-64-2009-mingwclang-qr/debug-reftest-2: ESPjRrwYQd-liRIUmcZfbA + test-windows11-64-2009-mingwclang-qr/debug-reftest-3: K-2RXUVoQ-mF89r4gHV4Ww + test-windows11-64-2009-mingwclang-qr/debug-reftest-4: G94nrgtQToaCD69nCUU93Q + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-1: DOfMFJTIRwmMJTzZdekfZA + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-2: L4zpyGHFRA2kI1h4Xm5_Fg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-3: I9BzIdaZR1utBFzb72Mnbw + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-4: ZkKYc0W4TWq_44NA5XwjZg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-1: RVhoTP2RTiWOeKcDhT5muQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-2: DFzvHvudS7iQbi9KI22SGA + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-3: YtfW15fASEKlBWMTofBhMg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-4: LHQ90iHySIi3NuVhWRikag + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-1: fUuJ8BDEQ4ulFPxwJ7FniQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-2: fiE0MnbmR-e-PAQcb9Kp8Q + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-3: RuFFWdNjQc2Y_s0PWHd02A + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-4: R7XixN9gTX67MQPGxp3lkg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-1: Pv_xkorGTqu9qoTQkCOKPw + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-2: J3owyjloRbSkwA2WLDZ2jQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-3: ZJEJ98tASJi2HRtW1aTY-g + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-4: SaLTNU5bQ7qYJx6sTDjMXg + test-windows11-64-2009-mingwclang-qr/debug-telemetry-tests-client: P1cK6ZJXTG2mPMsQPwoxQg + test-windows11-64-2009-mingwclang-qr/opt-cppunit-1proc: GlenOagXQnm-ULW7lAf4MQ + test-windows11-64-2009-mingwclang-qr/opt-mochitest-chrome-gpu-1proc: Wr71vS4nStOWtZtKtjQCSg + test-windows11-64-2009-mingwclang-qr/opt-mochitest-plain-gpu: Uc3E0a64SquB211raUSSNA + test-windows11-64-2009-qr/debug-cppunit-1proc: X2ZPD6uyTFSSeqUMwNWRUA + test-windows11-64-2009-qr/debug-crashtest: WUtBZ7N6SHqGaSn_yQYExA + test-windows11-64-2009-qr/debug-crashtest-swr: Q2GjROlYTeaZRp5iGbUrsA + test-windows11-64-2009-qr/debug-icecat-ui-functional: CercUizNTJafWfJHzRLOKA + test-windows11-64-2009-qr/debug-gtest-1proc: XmOI8SwJSBe32f9k6AHeUQ + test-windows11-64-2009-qr/debug-marionette: UoMfMXynRrK6uO_Xn_QRNw + test-windows11-64-2009-qr/debug-marionette-swr: CV_yKaZQT1ydfVi2SeNQrw + test-windows11-64-2009-qr/debug-mochitest-a11y-1proc: PkThpJ2ASnKVRqdatxUWNg + test-windows11-64-2009-qr/debug-mochitest-browser-a11y: V2i9HFIPTwWgI9Uj_DPjWg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-1: B8P370okTiOfifi-yWdx6A + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-2: A8ekPy-lRKaOCSIL7gN9tQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-3: B-CWf-G4SUao8Fs-0E0r-w + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-4: D1bf-x45RaqtHQd24D4xOg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-5: E9hUdPVzTdypTsPuKX8V1A + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-6: bZPMlNDSSt69DD9JieAClg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-7: Ionl-_fbRgCrlJEtj-ZLWg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-1: FyQeToBOS_am60MafEcZhg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-2: E7XYdhirSkmX_oJ06yamwQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-3: eIdiFyyTRMq12e3Uv8XXew + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-4: eJGb3rCeT86xIxmxBz0znQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-5: cRaxGVxaQSC4asuy9EPYfA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-6: G1reXMDPRx-rHh434D219Q + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-7: RvAW1T40S9abrKNzBuiqMA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-1: QoO-Buz8RZOJEpD_Jxf8dw + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-2: SPs83-yTTRC2SakoSRvSNg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-3: Z9W2QgQOQh2HznTECKkEKQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-4: aWK7xs_IRDGWQ86xd4oGgA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-5: I5iCNahVSXufjk0kI9-6QQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-6: a7wDT6XyRISqo5LUH5IJsA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-7: ZK0m7AtHRzSyS3DVX7eY9A + test-windows11-64-2009-qr/debug-mochitest-browser-media: Xn3G6021Tvamk8_FFiD1HQ + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-1: Zra-MhcyQOCQEKuiz6L0wg + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-2: aKJ9r4X_QX-wR12k6SZzgg + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-3: Lzne2QJRQ--h9thMwGz-yQ + test-windows11-64-2009-qr/debug-mochitest-chrome-gpu-1proc: SjP1_U87R-OTe2Lz5eE6KA + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-1: KR2Z-LspTxOT7FNy1Iwfkg + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-2: C7aSmqpnQZWK1LwG2wWI8Q + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-3: HXYmI9L3Sh-xp6zOz5XSOA + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-4: Y4QPKgldRmuxFGGEfcGjnQ + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-5: Eo-RvHmTSEGSnO87kWEcVQ + test-windows11-64-2009-qr/debug-mochitest-media-1: V1xLTUolQK24i8F_s-kTDA + test-windows11-64-2009-qr/debug-mochitest-media-2: GA8Q153vTE6vKK5aJJj3Zg + test-windows11-64-2009-qr/debug-mochitest-media-spi-1: Ax7cmHzzRJWOIQYkBbeUVw + test-windows11-64-2009-qr/debug-mochitest-media-spi-2: bIzc1Fs7T0-dp1LAqfvUjQ + test-windows11-64-2009-qr/debug-mochitest-plain-1: Df7iQVfWQXC0QSEEJyxiMQ + test-windows11-64-2009-qr/debug-mochitest-plain-2: LCGn125KR8ezEOvs5HFqkw + test-windows11-64-2009-qr/debug-mochitest-plain-3: NCZvX5DzR4ukreAq6KOg7g + test-windows11-64-2009-qr/debug-mochitest-plain-4: DyJz8TR5S82z569NGXyyhA + test-windows11-64-2009-qr/debug-mochitest-plain-5: Pd8QTkJ4SiG5apem1YD0nw + test-windows11-64-2009-qr/debug-mochitest-plain-gpu: YxXCfcW_T0mXmsjRLB-Bsg + test-windows11-64-2009-qr/debug-mochitest-remote: KOVf4RIoRn6miS7IkE5BXQ + test-windows11-64-2009-qr/debug-mochitest-webgl1-core: JRmF7uApSdyGrTKv-H3cFQ + test-windows11-64-2009-qr/debug-mochitest-webgl1-ext: CzG84yjXSFOqLm68AVqTng + test-windows11-64-2009-qr/debug-mochitest-webgl2-core: FYfcdyRHRMikGjFQGbApqQ + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-1: XC2Qtd1ITfyyZn_gsz2L0Q + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-2: D86ua2MQTf6ydHaIAGJAuQ + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-3: dVUKloAHQbmHyi59jOb1qg + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-4: cfAp-IB8QbeyajuGtraGUw + test-windows11-64-2009-qr/debug-reftest-1: W9NYzltUT3OtToHbjpH5LA + test-windows11-64-2009-qr/debug-reftest-2: N9YVErPkQtecliDyUe_sDQ + test-windows11-64-2009-qr/debug-reftest-3: NIfEB0RkSAWP6owSYufJCw + test-windows11-64-2009-qr/debug-reftest-4: HlNSlm_zQu2JQGQl2Kw1Sg + test-windows11-64-2009-qr/debug-reftest-wr-dc0-1: UbCQMd0_SDSL8RiN5HwK7w + test-windows11-64-2009-qr/debug-reftest-wr-dc0-2: SM-MiHw2S4-RZMMJD8dHtg + test-windows11-64-2009-qr/debug-reftest-wr-dc0-3: GhzLrPkKR0WE2oeReqjFng + test-windows11-64-2009-qr/debug-reftest-wr-dc0-4: PCSyX1MvQzSTqtV6FxIq0w + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-1: Bvi71A5QTzO4V23HQxcoZg + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-2: T0uTHWMBR1KmgQpaPVCKLQ + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-3: Np8xrkgjSPydI22xZEhiwQ + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-4: TNwBgL0eQzWvHEl4UxV2jg + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-1: dk02Lv3PSHyqy8CD2p2g9g + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-2: JM96GKgtQ96VEi_dfBkrSA + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-3: exZeAjOeSrunhjRx4ARQjw + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-4: S_TnnMcURiOm6MselddyPw + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-1: T58hJElYR4S9WPoM2jQsBg + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-2: PnWJbETpQtWiiL4TLl52kQ + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-3: fD7flVkUQCuB7s01kfNQxA + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-4: Rz4R4AL0SJ2hOEq9LpptaQ + test-windows11-64-2009-qr/debug-telemetry-tests-client: TJBf2aa1Tt6a5cGeCpRVbQ + test-windows11-64-2009-qr/debug-web-platform-tests-1: RmCO2nuSQCGELnvJyVktbg + test-windows11-64-2009-qr/debug-web-platform-tests-10: E1Ab1T4KT_SIzRgrFGgReQ + test-windows11-64-2009-qr/debug-web-platform-tests-11: K5X8Z2t1SbuadqUHqDL6GQ + test-windows11-64-2009-qr/debug-web-platform-tests-12: clKEWzivQsWU3eEw2BtjAQ + test-windows11-64-2009-qr/debug-web-platform-tests-13: BcCylHqESYiH9eLekncEOA + test-windows11-64-2009-qr/debug-web-platform-tests-14: FkV7jkamRK6XAhLGfYQTKQ + test-windows11-64-2009-qr/debug-web-platform-tests-15: ZsGPcW_kTG6pL2njGhdMAQ + test-windows11-64-2009-qr/debug-web-platform-tests-16: eTg0QEHzRKin-r1bp_YGGg + test-windows11-64-2009-qr/debug-web-platform-tests-2: J9BUH76YSIuzZMF7IkK6RQ + test-windows11-64-2009-qr/debug-web-platform-tests-3: UzsgO0bPREGcHA9sZqrulA + test-windows11-64-2009-qr/debug-web-platform-tests-4: ceazOca3Swy2HZGTMKnFBg + test-windows11-64-2009-qr/debug-web-platform-tests-5: FTblluTYT4ianm_dh5ESow + test-windows11-64-2009-qr/debug-web-platform-tests-6: U0vErpRZRFiyexwkAF7Gtw + test-windows11-64-2009-qr/debug-web-platform-tests-7: OMOrCXkHRfCTWE3AksJsjQ + test-windows11-64-2009-qr/debug-web-platform-tests-8: EjCvpAmGT8arQJM34Oycxw + test-windows11-64-2009-qr/debug-web-platform-tests-9: K8LIVXSuSKuteUhUr7ZU9w + test-windows11-64-2009-qr/debug-web-platform-tests-crashtest: IvrPgqxJQjGQxrrirwRXIA + test-windows11-64-2009-qr/debug-web-platform-tests-crashtest-swr: Xla1BV8xSVKmAI62Ty52BA + test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest: CN28Gv_GT-eqMLAA_Y5wqw + test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest-swr: Dhba9lbhSZ-TquYHc1K24A + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-1: Eo-TBRnhTtujULRhUWmKMQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-2: e49IVyW6QdGRI53HqNA97Q + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-3: bVkwLcoBT1-f0E45Gs33WQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-4: PyBu8lnrSsypdBx7alMC5Q + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-1: S0053AbmSoeWi8i7agUzSA + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-2: ciYihb9SR6ybBmX8b2xNyg + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-3: Pj4pBAyYQp-_eMydIA_dTQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-4: X45N5SuUSmqO4_AV6h8Dcg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-1: VoHlM_02TWybzF9Y_5B7Gg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-10: dGNhbDCJQQKlCEqqXi1U-A + test-windows11-64-2009-qr/debug-web-platform-tests-swr-11: e0ql1LzRQyO_VWy0tk-ing + test-windows11-64-2009-qr/debug-web-platform-tests-swr-12: JAZy8sDCR9CDiSEpot8iUg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-13: OxxgvuHAQqOT5Cm-Z67XMQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-14: XqPrrmoDS967BLFyWbfR9Q + test-windows11-64-2009-qr/debug-web-platform-tests-swr-15: LgQtirteQhienNRHq40jnA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-16: EUFJwEgZRNKHwABcSXgSaA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-2: RX8rCYgLQ9yq1thmTB1hfg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-3: dv54DywUQDex0TdD_DZVmw + test-windows11-64-2009-qr/debug-web-platform-tests-swr-4: fNQ8QRjgRwKSsBl-lRZbHQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-5: Z27VYSoVS2W81hrz7cqlaA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-6: czz7a1WOSK69OcBKclZZFA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-7: PicFrnw-THuq_MkBYbpdFQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-8: UuahSzq2TGG7hS5nQYArdQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-9: F-S7JZ0HQCW6EWVsM6ZUOA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-1: ERcOVdrSQDmf7DPvnuRzkQ + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-2: FF7vRqmEQ_iNZ0OA9xFTWA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-3: Nnm6ungPS7SbVdgo0BJDlQ + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-1: Hs1OJRLeQHOMCUvzlr3efw + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-2: OCA3v-b-Tke0AEwTfj3QcA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-3: LuwsaqyGR5aQ2dUW4e-OUg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-1: NVCdUw9kR9uxrTszi1wpcg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-2: BN1Zea8FSGuuRPiWAqULvg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-3: MtkXIT0yTLKvErrrJetiag + test-windows11-64-2009-qr/debug-xpcshell-1: S9pmDvS2RhqvypSwz5P3XA + test-windows11-64-2009-qr/debug-xpcshell-2: VEA8-5v0SbuYQAmYreQJJQ + test-windows11-64-2009-qr/debug-xpcshell-3: Ac1se9XlQRi0x802dbhlGQ + test-windows11-64-2009-qr/debug-xpcshell-4: K2yK0-IyQIm8o-uRx0j-YQ + test-windows11-64-2009-qr/debug-xpcshell-msix-1: KjpllrqGRyqXZ4EY92EaFg + test-windows11-64-2009-qr/debug-xpcshell-msix-2: f8wCgNVUTuGt0feyTcjuCQ + test-windows11-64-2009-qr/debug-xpcshell-msix-3: Nf5-nRXgS-yTQ6v2gdRl_A + test-windows11-64-2009-qr/debug-xpcshell-msix-4: GFvY_5tUT5--_XrL4PbSfA + test-windows11-64-2009-shippable-qr/opt-cppunit-1proc: U9X3CRwXT_yHj80kqGQz9A + test-windows11-64-2009-shippable-qr/opt-crashtest: KoukseNXRnyiVB8Kdla26A + test-windows11-64-2009-shippable-qr/opt-icecat-ui-functional: EWYjhvG3QCae8gqUrWtwJg + test-windows11-64-2009-shippable-qr/opt-gtest-1proc: cxDH9O4GQeyqwtjp7ysSMg + test-windows11-64-2009-shippable-qr/opt-marionette: AvvDjnH2SIyEjyfCijbpPg + test-windows11-64-2009-shippable-qr/opt-mochitest-a11y-1proc: Dy9Dq6qSQ_Gmd56Ey7k-ng + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-a11y: MNqH0mYqSy2X_hmb4OV7OQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-1: Wsdqeo1CSHu0qq_-uxD5hg + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-2: VOBuHp1USsW4h0KQYJscaw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-3: Gi-apfLfTC6DSekxt0-Iig + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-4: Ttxgao9EQsSAC3NT4QjFkQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-5: XQPDpQvVQCefAAaT87F4Jw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-6: VAkwv1OlQX6SgPkdVIQ_zA + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-7: JMn526lpTL-DZa8NVzhaXQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-1: JB7bUdn5QAqMNyO-K_F7DQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-2: bFoDenhDTU6SID8TB1ZQkA + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-3: RZblCiINS_un0kvTaGxMcw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-4: Fh9Oki15QcuZsXkCZp4jlQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-5: a4csWwvlS9mF0h2HOGjjxg + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-6: MXKUxvc0QbGYZh8Rm27zTQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-7: cBs0ckrSSEScW_vwH8B5JQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-media: b9HP4IM9T1GsoTJ0zyztyA + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: fvOj-tf7QMmJJAMPjGiZvw + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: Gggjok2IQfOd7004eijLKg + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: ISXaaRQEQQ2MOa7ZYQKJvQ + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: d5IXw1SlTdyfg97cdPP0qQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-1: Y-KXWPPESbSGhlDq1Sr1KQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-2: LPCKvBgSQVy5n-nGefHT0g + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-3: CMYr8y-BQp66aKSkWYdeMw + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-4: ArfQv6V2Tu219ZuSGspkaQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-5: fLPcAX7cRHCKG-qk825moQ + test-windows11-64-2009-shippable-qr/opt-mochitest-media: BC5voC46RTCjmo0Lc9WzDw + test-windows11-64-2009-shippable-qr/opt-mochitest-media-msix: Hd2NWcZ-R0un4DRlJ8ZdJw + test-windows11-64-2009-shippable-qr/opt-mochitest-media-spi: SIuIalVbQVapcz04LJsPMA + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-1: ENlANS4OQo-KCnuIxOpeeg + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-2: ChGSrzYgQBGy9xGHaOT18A + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-3: cSiBdUB2R6KEyY5j8vy76g + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-4: P05zaL1yS7michgVsmF5aQ + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-5: ek7aSFmnQiCaEvoPAHcbqA + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-gpu: UWyropaQR9yCXtE9O92TSw + test-windows11-64-2009-shippable-qr/opt-mochitest-remote: KinlLYobRQOHRcSvEKLEAw + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl1-core: S7Jzpr6_Q4WxjFmwCoUKoA + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl1-ext: VXqQwgfCSm2ACa69d_zU_A + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-core: I9xrpIpBRpG8er3ilFKoYg + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-1: TKtWG8s8SLaC5SDUG_uBrA + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-2: B1wVu-M_SWG7DYftFd8i8A + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-3: NpkoIo5rQByGh59-QSSQ2w + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-4: Rk2IThKwT46ndB8wxPyLVA + test-windows11-64-2009-shippable-qr/opt-reftest-1: FFYZHi9EQiec6zKMwzcF8g + test-windows11-64-2009-shippable-qr/opt-reftest-2: AkfLvIuOSN6a1yershXBxw + test-windows11-64-2009-shippable-qr/opt-reftest-3: HY1aHNYKTOmqwmxBeKLKIw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-1: FIMTcBDETtKS4ITMLtzDJw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-2: F_LVaghNT4-k14fcSyhTqQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-3: f39ZD8uuQTu7W93DoiQt9g + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-1: CDzrApEBQxSHhEnnP9MXcA + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-2: OR2PVP3fTo6JaVEmu9ZlFQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-3: eZtHNmptSSmkOl8f_Q0AQQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-1: eN10iDonTuS7JuNNzreOlQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-2: AAoL2b9lQuuwYK9INlZ1Vg + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-3: HYtQNvF3TyuDmIctM-wN1g + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-1: dDFyTuTqRhyzHQXeyb7Rig + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-2: VXVRCSyAS92-6Gjpu6Wyaw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-3: bhe0gNDFQ-q6Vs4GQcE0jg + test-windows11-64-2009-shippable-qr/opt-telemetry-tests-client: Bj5TH5rrQreu322_Zv-rcw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-1: OnbKASXeT6G4Q-B571_Wmg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-10: JrQd2fbMRJ2IeMyfq_AYNw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-2: UP77zw6QQnarBaF0AUJ4qQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-3: V3ocmUv_SnCQo01bOyZo8g + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-4: ekrM8HgDQ224P78YBj7pSQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-5: Tj5GgKE-RxWTyR1oiGogOA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-6: A1fDKgHASlazYYA3IF-Hnw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-7: cgpo-vszSI2QOaycuPP6mA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-8: W2SFjsdXS6y1dkuKg4Rkrg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-9: eGalbpIvS3e1um40xURoQQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-crashtest: Y2kt-ZINSCWi5az5NtStZg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-print-reftest: TaNUFlU0Q02oLlXPwQZ3IQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-1: PLTPjNOwSK2trkVS6z0FIQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-2: BenxxAGRS0eSTzkDS450KA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-3: bEuTlvKEQBmGioPLUS3H8w + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-4: E5LHdDApRKm7D6NqYDfyWA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-1: L-3soRDLQlioMxMh5zymbg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-2: EOajuGFOSNKlsQ-xVZs5Og + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-3: YgmgAayfSY2hxYotzBSw3Q + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-1: YYwNm0CORe2vT4qINbLp3g + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-2: G1MEiu1uRfKf-ucJ9xGM5Q + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-3: Eu-HdMW7QP6yTXMouXgmUg + test-windows11-64-2009-shippable-qr/opt-xpcshell-1: Potf1NwoRxqKbUMB8Z1X8w + test-windows11-64-2009-shippable-qr/opt-xpcshell-2: QJggIGENQKax6DxIVBL1oA + test-windows11-64-2009-shippable-qr/opt-xpcshell-3: ZNn5CCSMTFug4WAeXJKr5g + test-windows11-64-2009-shippable-qr/opt-xpcshell-4: TkrrZJ7qTL-1HzurR5vb0w + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-1: R2mvGBI9T5WZIiMdl8tLUQ + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-2: SYj1QB75ScGS_s_ylEL8Yw + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-3: cJswenEyS9eINDpWFmIcZQ + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-4: MpSsKUHmQUaTkTOnclKvwA + test-windows7-32-shippable-qr/opt-cppunit-1proc: FEoFH6GqQOeFb2i4K_HgNQ + test-windows7-32-shippable-qr/opt-crashtest: My2oIG_sRvi4j7gCoAEQ3g + test-windows7-32-shippable-qr/opt-gtest-1proc: baTxmZDAR9ya2BGgRvHeTg + test-windows7-32-shippable-qr/opt-mochitest-browser-a11y: LaDMZQe9Rh-DcYIU_R79Ig + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-1: RiNjldESRsKXLOdefV-TDQ + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-10: boyttOSpSwSayfMMQakTsw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-11: fGi8z2-5S-mWvAHqCNNKmA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-12: Gd4BzSG8QH-qjObxw4HovA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-13: AquWAqCAT8S8QAHlPaYr2w + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-14: ZuULVHN8SWCXj0PGxLm8jg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-15: M92tOlz3Q0qu_N-CzzKK1A + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-16: aZAO7t6OR7iN65PW0wGD-A + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-17: cFNUKAYnQFC9VE4eiZbfsg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-18: aDvHzd_zRxWBK4wMh694aA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-19: KkOI8fjPSeOF9RJeTW37dQ + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-2: ZxHmqYRhT56NlqRiK_xBwg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-20: T-bwcr1VQTGpmj85ZRaTBw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-3: VDiY5yQ3TvyDSpknQwwqYA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-4: Fmu51t4YTvGoZ0OyuHuQsw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-5: VZUhV8jpRA2mRRUwinVcAw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-6: dHYtszafQqqi2HlWgBqAHA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-7: C-t7zEzOR0uFfSwqRhsgqA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-8: GYF26zchSiuo4QCwL8ht_g + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-9: FvMLB5xkSAy5jMaYmYfztg + test-windows7-32-shippable-qr/opt-mochitest-browser-media: OpItrOWuSUq8yF_vpfgIVg + test-windows7-32-shippable-qr/opt-mochitest-media-1: c3-O4oojQreEVjvnvPhX1g + test-windows7-32-shippable-qr/opt-mochitest-media-2: SAvLytEhT0-he584SpOYhw + test-windows7-32-shippable-qr/opt-xpcshell-1: O1rC-RewTw2ybVT9fSwQog + test-windows7-32-shippable-qr/opt-xpcshell-2: IxUSvj9US9Ol6NL0idHhCA + test-windows7-32-shippable-qr/opt-xpcshell-3: E6i7f2C2RSKC7ka176JEJA + test-windows7-32-shippable-qr/opt-xpcshell-4: Y0A6bCWCTP27T-jXZZcarQ + toolchain-android-aarch64-compiler-rt-16: TnRn-vFRSjyTs9Z-49534A + toolchain-android-aarch64-libunwind-16: Kri8UT1sTgmFNc0-USHjaQ + toolchain-android-arm-compiler-rt-16: NOzBONyeTaGGNd85Q9I-Ug + toolchain-android-arm-libunwind-16: JBZIolMrQ1et-WeyzeCXIQ + toolchain-android-x64-compiler-rt-16: VogJ2fY4TZKNJn1MYjwDXw + toolchain-android-x64-libunwind-16: QZOnAeWsTb6X7EXcMwkalQ + toolchain-android-x86-compiler-rt-16: LPmITGXjRwmk6RRqBPYorg + toolchain-android-x86-libunwind-16: aveX0gGbT3ydLB3mX5w2ag + toolchain-clang-dist-toolchain: clDGBrRFQ5qmfKNFpZ5jMg + toolchain-linux32-llvm-symbolizer-16: b00sSguDR1afiiWpzmKnCg + toolchain-linux32-toolchain-sysroot: WaiGPfSGSHmmU8c_HVEtsA + toolchain-linux64-aarch64-compiler-rt-16: Vx3Q69CrQ9q9aZ8DFw1VzA + toolchain-linux64-afl-instrumentation-2.5: A7_BN3M7TdO8-TxHR_OsJA + toolchain-linux64-android-avd-arm-repack: PNIDJ1eBRuebxCzdXIifWw + toolchain-linux64-android-avd-arm64-repack: cJxzEwTQRAWYadCb7W8OdQ + toolchain-linux64-android-avd-x86_64-repack: KR2dbYiBTyuunZj35eHVhg + toolchain-linux64-android-ndk-linux-repack: Q-JQhzdHQnmCqr54qFFojQ + toolchain-linux64-binutils: f81_nol8QbyHT-nUi07Eng + toolchain-linux64-binutils-2.31.1: FIVVjEl0SqKtVoIHhy9FTg + toolchain-linux64-breakpad-injector: HSvQKDT9Q7mGQGg73Ymd_w + toolchain-linux64-cargo-vet: LwvUfYIbQDe7wm1eEddOMQ + toolchain-linux64-cbindgen: FWhvCgYCR-G0bseThl5WJw + toolchain-linux64-cctools-port: W6CI9YSQShOY0a770Pq5ag + toolchain-linux64-clang-14: E9ae4CgOTfGZ_Jb8-Hhu3Q + toolchain-linux64-clang-14-stage1: EB1yU-1LSgaBxiKvzSJm4A + toolchain-linux64-clang-16: SV8vfdZaQ1-9JIVdCfEVxQ + toolchain-linux64-clang-16-mingw-x64: elZRAG9bSNuk5ApDEEHWQw + toolchain-linux64-clang-16-mingw-x86: KXP7oFpYT8OAXfY2WkFJww + toolchain-linux64-clang-16-profile: AaGLhKD3RnuXBkGxJBSG2A + toolchain-linux64-clang-16-raw: ask8A5KWTRCNqdcKC_EXLA + toolchain-linux64-clang-16-stage1: chmo8KG3QmCDkhy6erRP1g + toolchain-linux64-clang-7.0: DW8AzwsfRJG8NChP1X64bA + toolchain-linux64-clang-tidy: KUiB0U9ISHGniWK27haWLQ + toolchain-linux64-dump_syms: T1X_znpaTeuEMQDquKSjHA + toolchain-linux64-fix-stacks: MaNpREDWQi2jbqnK1qK9dw + toolchain-linux64-gcc-8: U26qLaJBQVa43aFD2btkzA + toolchain-linux64-gcc-9: K8pyi0ROS6CbdQbamdVDJg + toolchain-linux64-gcc-sixgill: DKKz3ufMRDqIYKfNZQjaow + toolchain-linux64-geckodriver: ezE2RLOLSf-1Z2WbdOGWJQ + toolchain-linux64-gn: ZPb84fQIT36Y9YLHsjHQWQ + toolchain-linux64-hfsplus: FhnREwoEQRmaL4OPg3sTXQ + toolchain-linux64-jdk-repack: XfMjSXDNRQ6NiTCyZCs07w + toolchain-linux64-libdmg: GL-BW8EoTVeVELvQvC-tWg + toolchain-linux64-llvm-symbolizer-16: KEr5RWW0Rte7AEOEDlPt0Q + toolchain-linux64-makecab: Ecr2GzsvRs676_49QnJrXQ + toolchain-linux64-mar-tools: CvNcaWoEQeCTsam6ARQ5kQ + toolchain-linux64-mingw-fxc2-x86: VH-7wA-ESKO6YTmB_cDK-Q + toolchain-linux64-mingw32-nsis: IYfjlGWeT8eQJOU584utHw + toolchain-linux64-minidump-stackwalk: UIRI49TWSkqCij-ucNeMoA + toolchain-linux64-mkbom: IJkWYdlURFKMkXo_tV8ScQ + toolchain-linux64-msix-packaging: PBItAfqbSsaF9vUGb2V57g + toolchain-linux64-nasm: JR09ov6XTzyBhKfUYiRSXg + toolchain-linux64-nasm-2.14.02: Fh1tjrVFSACoWSFs97f1rg + toolchain-linux64-node-12: VO_ycfGaT9SRsORPojFO1Q + toolchain-linux64-node-16: cQz1GGE6SLqbyjtWcyVTfQ + toolchain-linux64-pkgconf: b6-JQsdYTfar6MidVlLvvA + toolchain-linux64-python-3.7: O-wLDeOUT62C5KB8GrWGbA + toolchain-linux64-python-3.8: OhvgmPMSTlmIB5vVFmJy3A + toolchain-linux64-rust-1.65: VocVZTiMSKeGj59hSb2h6A + toolchain-linux64-rust-1.66: IaoVp3RoSwa_zIhy9HrIKg + toolchain-linux64-rust-1.69: FyKgFNcQQzW3jNtY1JYLkw + toolchain-linux64-rust-cross-1.69: eS75a2khQK6WSgdxpUWqFg + toolchain-linux64-rust-dev: E0pm-NMsSeCfQtvI_CwLZA + toolchain-linux64-rust-macos-1.65: dxaGSMehSiWHNUCoeFLASw + toolchain-linux64-rust-macos-1.69: MuEniHfFRteYZUVav0ecUg + toolchain-linux64-rust-size: W1Q7SSbcS76k2VW-gEyUlg + toolchain-linux64-rust-static-1.69: FSy6OIjwQdepNWIZKe6seg + toolchain-linux64-rust-windows-1.65: fJBOmPxTSSW2vLKVbsSZPQ + toolchain-linux64-rust-windows-1.69: F2EVBkvjT1yh50DmuNQKKA + toolchain-linux64-sccache: T-oI2iWRQ-CEE2fjTu6x1w + toolchain-linux64-toolchain-sysroot: JqOMSlqpR--el-NDF7SPbA + toolchain-linux64-upx: ILEygdkIQT6f5x77p15iFw + toolchain-linux64-winchecksec: fKhj283KSpy8tLLqz0SjMw + toolchain-linux64-wine: YF1iG3ynTxWXtilE4CfzQw + toolchain-linux64-x64-compiler-rt-16: VPQTxhhKRsqMULYxX1fDwg + toolchain-linux64-x86-compiler-rt-16: GcpY6FueQ0CuyrKJNdZjtw + toolchain-linux64-xar: YWldEboJTOm0_jXus7XQ0A + toolchain-macosx64-aarch64-cargo-vet: YhvITXBGRCqfEcIpD_BFEw + toolchain-macosx64-aarch64-cbindgen: HqQOKaIETMGz55LGQps1CA + toolchain-macosx64-aarch64-clang-16: GW4ZYvkHSRqnu95v8T_pGA + toolchain-macosx64-aarch64-clang-16-raw: Ecahw-P5Th2jD58GZxTVsQ + toolchain-macosx64-aarch64-clang-tidy: Y4h7coNTTn68aWYKbYJQgw + toolchain-macosx64-aarch64-compiler-rt-16: F_N9rkYxReeITfDxAd75gw + toolchain-macosx64-aarch64-dump_syms: OTryxKiBQvOwV_B-WWr8hA + toolchain-macosx64-aarch64-fix-stacks: QV7g3rY0SwKL1sB8kUU52g + toolchain-macosx64-aarch64-llvm-symbolizer-16: SlzCCE8eTLmQLDhpVzkuwg + toolchain-macosx64-aarch64-minidump-stackwalk: KkdQNNAkR1icyiUvN0M9xA + toolchain-macosx64-aarch64-nasm: feIcqKupQ_aNIhP6tgwhKg + toolchain-macosx64-aarch64-node-16: LITsE7xeS_y5VsbPwkAMjw + toolchain-macosx64-aarch64-pkgconf: QnWkafJ1QkmZkEuZ36FtPw + toolchain-macosx64-aarch64-sccache: a06ZaTzMTdixu6blf8lRmA + toolchain-macosx64-cargo-vet: GrmCDj7YSPShuqLh2AunRQ + toolchain-macosx64-cbindgen: V7ZHGAToRHiwbcoD9GqxEg + toolchain-macosx64-clang-14-raw: T_YsKzIfTH68r1tcOa3KpQ + toolchain-macosx64-clang-16: V7TB8Iy3TfCLfNh8RdumsA + toolchain-macosx64-clang-16-raw: dnnF_CX-RmewfspAUSJhdA + toolchain-macosx64-clang-tidy: KIes-BT1Sx-Yvkk4SDcFxw + toolchain-macosx64-dump_syms: Af6X6RAUTM-rFTEHlbEHKw + toolchain-macosx64-fix-stacks: WApGFdMtRfiBbUGliFBwBA + toolchain-macosx64-geckodriver: CHIpVtcHR2SulcA9x8hyRA + toolchain-macosx64-gn: RwhEqYaPRv6jYesXLYSOmQ + toolchain-macosx64-llvm-symbolizer-16: WvYTPKn7QD2B4f67-WiEDA + toolchain-macosx64-minidump-stackwalk: HuE597bmSQixubRlB8Q_9g + toolchain-macosx64-nasm: Ys6AZwKIQCWjJNQyfPa6UQ + toolchain-macosx64-node-12: Yk6rFXVZREmr7uAvr3cjtw + toolchain-macosx64-node-16: PMDzcVpAQN-aYw3lH3W5dw + toolchain-macosx64-pkgconf: T43w-ZejQXueoli_zja5Qg + toolchain-macosx64-python-3.8: MO3JSICrQkimC19_Swjvsw + toolchain-macosx64-rust-1.69: ZxMSkeQqS96rYlWdZLqK7g + toolchain-macosx64-sccache: DYliNQFCTHq8lfXWgn1pHA + toolchain-macosx64-sdk-13.3: DNhf822QTySWGHDFYsVSGw + toolchain-macosx64-x64-compiler-rt-16: TXjhyQfuTgSntl9MTNHrcA + toolchain-mingw32-rust-1.69: dtzgpHrRSm2FUA1FJflWJg + toolchain-nsis: JxKU35oFTma3EMcG_EYnyw + toolchain-rustc-dist-toolchain: QV0WDz3oSFWH4TRoJIeXrg + toolchain-sysroot-aarch64-linux-gnu: RtJwU-DKT32I7pBN3peMQA + toolchain-sysroot-i686-linux-gnu: KwF6AxgEQcKzXPhyxstCDg + toolchain-sysroot-wasm32-wasi-clang-16: ZXE0-McYT92-BxLId9zW7A + toolchain-sysroot-x86_64-linux-gnu: D_9V5RIyS9KIvoCrOQWyYg + toolchain-sysroot-x86_64-linux-gnu-x11: NuK4Oe-gRw288dFz5IEvyw + toolchain-wasm32-wasi-compiler-rt-16: c4gREoTzQzGnKZs4w3QohA + toolchain-win32-compiler-rt-16: VSHMsFA3TUO51_Vo98qfuA + toolchain-win32-fix-stacks: KwexEuJNSOK23g75PrxQCw + toolchain-win32-geckodriver: TSyvxm-CQjS4DeS7ctkfrQ + toolchain-win32-minidump-stackwalk: CunvhBLuRZuJ7sVfRbu-Gw + toolchain-win32-node-12: bt3T58anQ5itxXXu6bgyFQ + toolchain-win32-node-16: JGCCaok9QCi123Fa7L8FYQ + toolchain-win64-cargo-vet: JPr-zZ24SIuo32r7m8r5qA + toolchain-win64-cbindgen: Rfgyq2hJRR6ReAO44v2x0A + toolchain-win64-clang-16: TJMva_GNQDaAo18nlbSPkg + toolchain-win64-clang-16-raw: MHflS_gBSBWIUyJZblRAww + toolchain-win64-clang-16-stage1: fhAX5RkhQBikPujPb47oHA + toolchain-win64-clang-tidy: ChZIaUwxSaSP4lLrWJVtaQ + toolchain-win64-compiler-rt-16: P_7GyhmxS-y9P7sJB0Mv_Q + toolchain-win64-dump_syms: BnD57hEsRFyvgD9F_0KA5A + toolchain-win64-fix-stacks: IhwrPuWWSLC7oKx1Zyjq1g + toolchain-win64-geckodriver: c1SzOsazR7ugk9zQKQrPcA + toolchain-win64-gn: Y8M9IoHPQLutBV4oYhofzg + toolchain-win64-llvm-symbolizer-16: Gk3vQ8pkTiuAD4S6MJhHZA + toolchain-win64-minidump-stackwalk: e4IDvnPNQVqXnqwYQQreHw + toolchain-win64-mozmake: BPR86nQjQg-QcGI7-I_YeQ + toolchain-win64-nasm: BpUJuvjFQIarzt8U7r9z6g + toolchain-win64-node-12: VmAz87fmQWqA0STyxtSIcA + toolchain-win64-node-16: Q1URtR6dTHK2ObZRny5ikg + toolchain-win64-pkgconf: QnCs2mz6TA-p_6bfiATf6g + toolchain-win64-python-3.8: faBX13RcTTykGOZS7e5eSw + toolchain-win64-rust-1.69: FdFfARQTQVa61OIAAV1_Xg + toolchain-win64-sccache: djlshxVFQiGgnHbkRYu2xA + toolchain-win64-vs2019: Id_zrn5KTrWOZFIh1NS0VQ + toolchain-win64-vs2022: Bi85TCWMQWe363eCnVLKzg + toolchain-win64-winchecksec: Q1v5wqr3TyyhIpPSCdkIJA + toolchain-wrench-deps: KAOPKeu9QRaSQtWcvZVBjg + upload-generated-sources-dummy-icecat-macosx64-shippable: R04Lt8RPTmCsrS4Fs0pyOQ + upload-generated-sources-linux-shippable/opt: BOenJRrQR16zincslSDG8A + upload-generated-sources-linux64-shippable/opt: KkJiwFjzRTONanWcxRZMXA + upload-generated-sources-macosx64-aarch64-shippable/opt: Ea05qe4nQh-0flvldV8yoQ + upload-generated-sources-macosx64-x64-shippable/opt: bczPTAxETvm89DSAX1hphg + upload-generated-sources-win32-shippable/opt: FJ-RgGbvSqmRFZ-mnM3xjg + upload-generated-sources-win64-aarch64-shippable/opt: I_gveu3DQE-OOxUwdZw8eg + upload-generated-sources-win64-shippable/opt: UiEYunBAQ4qYJYYDpXlzlw + upload-symbols-dummy-icecat-macosx64-shippable: I3TP3buuSMaKKXpRCvELtg + valgrind-linux64-valgrind-qr/opt-swr: X-5Guhz8SYqI8x-V1xuxhg files_changed: - - dom/base/TimeoutManager.cpp - - dom/base/TimeoutManager.h - - dom/workers/WorkerPrivate.cpp - - dom/workers/WorkerPrivate.h - - dom/workers/WorkerScope.cpp - - modules/libpref/init/StaticPrefList.yaml + - dom/html/HTMLDetailsElement.cpp + - gfx/thebes/gfxUserFontSet.cpp filters: - target_tasks_method -head_git_rev: 73462f0ff623648c49b17892d06fab955d6a6ee1 -head_ref: 82e96a128bf5e3e7dd6e5180c9528f623ba5e0f7 -head_repository: https://hg.mozilla.org/releases/mozilla-esr140 -head_rev: 82e96a128bf5e3e7dd6e5180c9528f623ba5e0f7 +head_ref: 8a02a7c43f1eddfd18926f0266d188b4f359c0aa +head_repository: https://hg.mozilla.org/releases/mozilla-esr115 +head_rev: 8a02a7c43f1eddfd18926f0266d188b4f359c0aa head_tag: '' hg_branch: default level: '3' message: '' -moz_build_date: '20260106170501' -next_version: 140.7.1esr +moz_build_date: '20231113155436' +next_version: 115.5.1esr optimize_strategies: null optimize_target_tasks: true owner: user@example.com phabricator_diff: null -project: mozilla-esr140 -pushdate: 1767719101 -pushlog_id: '425' +project: mozilla-esr115 +pushdate: 1699890876 +pushlog_id: '162' release_enable_emefree: false -release_enable_partner_attribution: false +release_enable_partner_attribution: true release_enable_partner_repack: true -release_eta: '2026-01-13T14:00:35.136Z' +release_eta: '2023-11-21T14:00:00.000Z' release_history: {} release_partner_build_number: 1 release_partner_config: @@ -10053,7 +7979,7 @@ release_partner_config: upload_to_candidates: 'true' release_partners: null release_product: icecat -release_type: esr140 +release_type: esr115 repository_type: hg required_signoffs: [] signoff_urls: {} @@ -10063,4 +7989,4 @@ test_manifest_loader: default try_mode: null try_options: null try_task_config: {} -version: 140.7.0esr +version: 115.5.0esr diff --git a/icecat/taskcluster/test/params/me-ship-icecat.yml b/icecat/taskcluster/test/params/me-ship-icecat.yml index 4275668017..88ddc0d320 100644 --- a/icecat/taskcluster/test/params/me-ship-icecat.yml +++ b/icecat/taskcluster/test/params/me-ship-icecat.yml @@ -1,10040 +1,7966 @@ -android_perftest_backstop: true -app_version: 140.7.0 +app_version: 115.5.0 backstop: true base_ref: default base_repository: https://hg.mozilla.org/mozilla-unified -base_rev: edaa4f77d7756862c1d5734e0529a73ebeda9596 -build_date: 1767719101 +base_rev: 78a0edacb31faeacf8d1606c7ee7408a269cdb22 +build_date: 1699890876 build_number: 1 do_not_optimize: [] existing_tasks: - attribution-macosx64-ach-shippable/opt: EAZGnumNRgO-udW4MBU2uQ - attribution-macosx64-af-shippable/opt: YJRgeMwXQeetx-46UcU02Q - attribution-macosx64-an-shippable/opt: YreFloW7TWOF7EGTsCL2ug - attribution-macosx64-ar-shippable/opt: JligST8kSiikvllR9-4pTQ - attribution-macosx64-ast-shippable/opt: FeOioVbxRK6wzhw2J9QNcw - attribution-macosx64-az-shippable/opt: ZYap8bfzQV2EIs1w7adGww - attribution-macosx64-be-shippable/opt: CkOQ1Pb9TyWI-s47qV8XiA - attribution-macosx64-bg-shippable/opt: ND-P4hq_SxmnytaGmL4Jaw - attribution-macosx64-bn-shippable/opt: eLmUA4uRS_6fCKe-t7dTPA - attribution-macosx64-br-shippable/opt: Lg68Hc-ETLiwyg4HCJZInQ - attribution-macosx64-bs-shippable/opt: CiBl8nfpSTKe9h5MEuNCMA - attribution-macosx64-ca-shippable/opt: Krt362xtQnSLGJ_IaGjRPw - attribution-macosx64-ca-valencia-shippable/opt: a_dCleJYTYeaPbWwGu-nDw - attribution-macosx64-cak-shippable/opt: JjxvOfXmQvySsFYZZVvjFw - attribution-macosx64-cs-shippable/opt: U3urUkSpTZyUzI7Oa37gTA - attribution-macosx64-cy-shippable/opt: Oo6kwBfYSJmxFnz8KaUs5A - attribution-macosx64-da-shippable/opt: Ws7p58wRQyGyU3RoxCVmnw - attribution-macosx64-de-shippable/opt: SfGnLYKGS_SjVR-ORgjJVA - attribution-macosx64-dsb-shippable/opt: Wwdr6Du_RaG4wilEaJKaeQ - attribution-macosx64-el-shippable/opt: L3L7GsFlSlm55quKuguxbA - attribution-macosx64-en-CA-shippable/opt: YdOck_SzQ7u27j5ur0O0Kw - attribution-macosx64-en-GB-shippable/opt: QkjAalbuQrKfyHNH7iHdbA - attribution-macosx64-eo-shippable/opt: WU612YBrR-KI9CYLVZYZSg - attribution-macosx64-es-AR-shippable/opt: O6YkwuEVQlma2Yz7RRfVhw - attribution-macosx64-es-CL-shippable/opt: UUGyreWwQFOWplpzLaqf3g - attribution-macosx64-es-ES-shippable/opt: YfSsg1lpQm-h9x78FGzmvw - attribution-macosx64-es-MX-shippable/opt: DHd5-s-JSVawOVf3_LdNMQ - attribution-macosx64-et-shippable/opt: WWXsO_06R0qWk5Eh3Y0s4w - attribution-macosx64-eu-shippable/opt: esAkFobFScyUng-dg1mi2Q - attribution-macosx64-fa-shippable/opt: fvUrUtjzTsK8xQ3T4VDrRw - attribution-macosx64-ff-shippable/opt: dGT3wHXMQD6ILcgIVtBWXQ - attribution-macosx64-fi-shippable/opt: Sf_pL_uMQZeRJcLETN8myg - attribution-macosx64-fr-shippable/opt: eOffq-FNQKO4p3tpDmpIEA - attribution-macosx64-fur-shippable/opt: UdbIKU3wS6ugHy-3xy3e1w - attribution-macosx64-fy-NL-shippable/opt: fyGC3FXNREWjj5MIsomEow - attribution-macosx64-ga-IE-shippable/opt: ZytP_qKrRl60ZbLTCd7kOA - attribution-macosx64-gd-shippable/opt: DpJB-iPlQ0ydJKBmndCs7A - attribution-macosx64-gl-shippable/opt: NrjecjbhQ6aC3vxLj0SA1g - attribution-macosx64-gn-shippable/opt: PyXY_FThTfme19c02B4BfA - attribution-macosx64-gu-IN-shippable/opt: XRXhRQLARKapV4iRwxHdpA - attribution-macosx64-he-shippable/opt: L0XcDoqLQK6HqJU3VvA_Mg - attribution-macosx64-hi-IN-shippable/opt: IX_GFHwxRfKDJpgrHYbE1Q - attribution-macosx64-hr-shippable/opt: S4f77ByvR0qw-lyzIVSCQw - attribution-macosx64-hsb-shippable/opt: CcQlrxknT-a1Q5_AbiEvuA - attribution-macosx64-hu-shippable/opt: JRCewt-iTaaULBeO1zgcmQ - attribution-macosx64-hy-AM-shippable/opt: OY0EqMxfQjW55KvR_TEMZg - attribution-macosx64-ia-shippable/opt: VKk-kP4DStOs0TKrkwJGLQ - attribution-macosx64-id-shippable/opt: LYEBsX4RTG2CbmzvauOvhw - attribution-macosx64-is-shippable/opt: Hxfg6JB7SyKVsK0Li0K3Zg - attribution-macosx64-it-shippable/opt: cv3yzPnYQfmvaqo0dGZnMA - attribution-macosx64-ja-JP-mac-shippable/opt: SEqkugUbS8aVFaHq0h2N1g - attribution-macosx64-ka-shippable/opt: MFzwfEnUQJaV8gNVpKKQjw - attribution-macosx64-kab-shippable/opt: J_ElXlcLTn6oPHNiH1M0wg - attribution-macosx64-kk-shippable/opt: XWCpDX4JRYGskO4qTi85kg - attribution-macosx64-km-shippable/opt: OD7-PiZFRvWWpnjN-bzikw - attribution-macosx64-kn-shippable/opt: b1FbL3alSk-1pw1udHhZ2w - attribution-macosx64-ko-shippable/opt: RT0FkRQVSveHh99rHt2UDA - attribution-macosx64-lij-shippable/opt: BWiAKZqyRR--hy7FxS6TMA - attribution-macosx64-lt-shippable/opt: SGH2XXTiQw2nlxLaPjJuQw - attribution-macosx64-lv-shippable/opt: JZstZKXWSdeC2SLu7rRJxA - attribution-macosx64-mk-shippable/opt: HEJlAYk_SNufBkNBG5myVg - attribution-macosx64-mr-shippable/opt: LAzP6sfuRGuiRZpMtSEouQ - attribution-macosx64-ms-shippable/opt: F_Wp_14YRbaTR3mzzYlbww - attribution-macosx64-my-shippable/opt: dP-qQFq8RueIWCoiDBGO4Q - attribution-macosx64-nb-NO-shippable/opt: EtLNryCNTBKujVm4ue__4A - attribution-macosx64-ne-NP-shippable/opt: MO8xVfWYT-SxmJ1fyBdByg - attribution-macosx64-nl-shippable/opt: UQqI470hRkeCX7a7D8mexA - attribution-macosx64-nn-NO-shippable/opt: bXUb23TRS46QVvStoHHRAA - attribution-macosx64-oc-shippable/opt: EIn8fHOQSdeN8OpTzZmQAA - attribution-macosx64-pa-IN-shippable/opt: MifQORBrRtuiDcxK61Tnpg - attribution-macosx64-pl-shippable/opt: SrVcnhFMReqaXjFjWPhIRA - attribution-macosx64-pt-BR-shippable/opt: d0MylWtySCCLFgXj-ewn5w - attribution-macosx64-pt-PT-shippable/opt: DHetk3eETaOJzF8kVslxmA - attribution-macosx64-rm-shippable/opt: HXgbJtRNRsK1PRhwVfiFgA - attribution-macosx64-ro-shippable/opt: OgacB3P7Rw2avsmEmWFZnw - attribution-macosx64-ru-shippable/opt: efvfDBeARKyNym-rRH-NFQ - attribution-macosx64-sat-shippable/opt: X84Bn6aFSxuAsO2YyRyEtQ - attribution-macosx64-sc-shippable/opt: Mc3V5WGlQ4Ki4tIA38zang - attribution-macosx64-sco-shippable/opt: aBO8sgTnTUKj3QgSSylJ0w - attribution-macosx64-shippable/opt: O1_cUhGhRXa--_WIWpmcjg - attribution-macosx64-si-shippable/opt: awIVhtr2SXCCsnIdsMx_BQ - attribution-macosx64-sk-shippable/opt: SFctMPrmR8e5oZUOCKVa4A - attribution-macosx64-skr-shippable/opt: WjzhQV0KR5ygASuIs5vwnA - attribution-macosx64-sl-shippable/opt: UQP5StqDSrCmuGxqKYBLzw - attribution-macosx64-son-shippable/opt: RLDeUIcSS_qvxPkMmNYDcA - attribution-macosx64-sq-shippable/opt: IfZj3jw9Qfi90Lx2hGdgVQ - attribution-macosx64-sr-shippable/opt: dVhSHURuQcyGOo90JfGuyg - attribution-macosx64-sv-SE-shippable/opt: f9eL1USyTnGt2PfsCBmqdw - attribution-macosx64-szl-shippable/opt: VVLVi40gSpewWZEWTopsnw - attribution-macosx64-ta-shippable/opt: Fql-bjmQT-eUUFay5PbP6Q - attribution-macosx64-te-shippable/opt: bH6KBou4S7qXoPG7-rT_Pg - attribution-macosx64-tg-shippable/opt: Yfl0YgkqT6-n0HwVkc7ANQ - attribution-macosx64-th-shippable/opt: VviREx_3QqKDmZJNfuKK2A - attribution-macosx64-tl-shippable/opt: cLLhU9QyRfKiqF3uZ_XWJA - attribution-macosx64-tr-shippable/opt: NkQiQHzUTLmLaxoJ_aoYrA - attribution-macosx64-trs-shippable/opt: UIcnIV_fRHOMxC8c28PNpA - attribution-macosx64-uk-shippable/opt: Jzbt-v45RpShm-3MXUdcEQ - attribution-macosx64-ur-shippable/opt: J01t8J_QTeG4xZk2FX7JwQ - attribution-macosx64-uz-shippable/opt: UfvYu66VTXCAbYBv5jmU6A - attribution-macosx64-vi-shippable/opt: dL32AaPLQzCJlUZMuhZ_vw - attribution-macosx64-xh-shippable/opt: BIdl-zl9QbiWLTQ1PbatNw - attribution-macosx64-zh-CN-shippable/opt: BqskPf8PSa6i6Qnfcrib0g - attribution-macosx64-zh-TW-shippable/opt: PXiMoY_XS2WXIczbl9rUTQ - attribution-win32-ach-shippable/opt: GxA2Mi2zS52CCPjtkd3pMQ - attribution-win32-af-shippable/opt: SJPTlbHBTFmBR_dSoFSdUQ - attribution-win32-an-shippable/opt: GiFI69cYSfeMu628SFUKwg - attribution-win32-ar-shippable/opt: Ux5wgpV5Q1eY70YgvLVsRQ - attribution-win32-ast-shippable/opt: cIIOxt1KRBm6obpbc2-D9Q - attribution-win32-az-shippable/opt: AFZ4o8VtR9S3V-nsrZqz5w - attribution-win32-be-shippable/opt: L5IsZJs9Q8KLC-4AoIyr1A - attribution-win32-bg-shippable/opt: KGISjVOrQFeSVfxRKw8EMQ - attribution-win32-bn-shippable/opt: MV5qP_1gRg2R6CZevUW6Zw - attribution-win32-br-shippable/opt: bb3_IQ9cTou_hhebLY1WSg - attribution-win32-bs-shippable/opt: EV-AMg0BTi6riCqoFry2SQ - attribution-win32-ca-shippable/opt: D0P4sQMvQbO2YGLKjZeXDw - attribution-win32-ca-valencia-shippable/opt: JAXcCr2xTzejp8JVG45Oow - attribution-win32-cak-shippable/opt: atvZmvitTZm2H64DvBrB8w - attribution-win32-cs-shippable/opt: TRhdmyYETbKKLxylkDCkVQ - attribution-win32-cy-shippable/opt: OYS2PU9VRDKRbTdxjY9WLQ - attribution-win32-da-shippable/opt: M6wLwIoyTVivEBXLNG9GOw - attribution-win32-de-shippable/opt: AfVKAE0YTZeywJUxHDBasw - attribution-win32-dsb-shippable/opt: BK8dBzFiTTu84tu2dHV1RQ - attribution-win32-el-shippable/opt: MkqWlm8yQvaLSuUCXMwsKA - attribution-win32-en-CA-shippable/opt: LRhT5xHeSrKuSNIxRr24BQ - attribution-win32-en-GB-shippable/opt: JryE8jnTQD-1sE00Xajv7A - attribution-win32-eo-shippable/opt: TEyBvLuUTR2U1E78HySjIQ - attribution-win32-es-AR-shippable/opt: EKTI63hETmCHZNeJ7S5rsQ - attribution-win32-es-CL-shippable/opt: Gvvhh_0IRDStOWQXhVC1xg - attribution-win32-es-ES-shippable/opt: Z6q4Jxe8QiWFryt_LeI5yw - attribution-win32-es-MX-shippable/opt: XEa3nZieRT6siiV0DYgRVQ - attribution-win32-et-shippable/opt: Bog6fBUPSfqbBmog125I7Q - attribution-win32-eu-shippable/opt: RZyUiXfIR0Sz3lpeqPRr3Q - attribution-win32-fa-shippable/opt: PcmLiH6nRZWvoZdg3sPDwQ - attribution-win32-ff-shippable/opt: XVw2KNh7SiKWHLZCBFejtA - attribution-win32-fi-shippable/opt: K9XR9slWR9GDgGFfsXvD-A - attribution-win32-fr-shippable/opt: P35MoI_JT7qLqYFqMOs0Vw - attribution-win32-fur-shippable/opt: C6bnkq1hTNG4E9x9WiEsnA - attribution-win32-fy-NL-shippable/opt: aDTFMZcPQbihKqALfPOeGQ - attribution-win32-ga-IE-shippable/opt: PbricnK3TKSdDSd-zPYe6w - attribution-win32-gd-shippable/opt: XfYue2wkSQq-OR9zpOp1OA - attribution-win32-gl-shippable/opt: fKvolzu8RS6mWBXI1Eue8g - attribution-win32-gn-shippable/opt: I4ou8FtgRQimwcL7Hd8Qhg - attribution-win32-gu-IN-shippable/opt: BPDs4A76T16lUkNf6gC3RA - attribution-win32-he-shippable/opt: AN2efKhXTXm1zn0GV27HcA - attribution-win32-hi-IN-shippable/opt: fSp53OhtTPWI8N-hBDrJ7w - attribution-win32-hr-shippable/opt: cOA7HbtMTOSh5zX5O9jGcg - attribution-win32-hsb-shippable/opt: SgnbG-L7SrCFKCGu5NpZQA - attribution-win32-hu-shippable/opt: Ur4DBmFTRgu6lATrQ5lWCA - attribution-win32-hy-AM-shippable/opt: Ny2yg-y8T4axINZ-ppiROA - attribution-win32-ia-shippable/opt: HVfGpkR9Q-i_PCg3k2f4TQ - attribution-win32-id-shippable/opt: K79089T-RcGKyeIBBA2csA - attribution-win32-is-shippable/opt: ZZotGLVeSTSO39X2Ml-FBA - attribution-win32-it-shippable/opt: UeF9tPhiT_2-VYfEbw-4wA - attribution-win32-ja-shippable/opt: WhqLGLQqTuKbRQurqGFn7Q - attribution-win32-ka-shippable/opt: Khy7_mQjQ4-N8_WUef0Qyw - attribution-win32-kab-shippable/opt: faj48lD9R4SYR6fF02x3rQ - attribution-win32-kk-shippable/opt: eoIgKJsrQA2TLpYfNtcUfA - attribution-win32-km-shippable/opt: bt7q2yqHTeWpCQ51jz7GvA - attribution-win32-kn-shippable/opt: ISvSiNWHQBCLKP6BHpPfTA - attribution-win32-ko-shippable/opt: VolJ4BSwRXeeL5svev3nJQ - attribution-win32-lij-shippable/opt: B2-5WSi5QtmwdQO1_o7HdQ - attribution-win32-lt-shippable/opt: Wv_AcUX0QCqCJZWr_y0ynw - attribution-win32-lv-shippable/opt: d5OqWBmhTzyeXlwFIKjCnA - attribution-win32-mk-shippable/opt: ZCbm6u54Sh-S1Tw8Re7cjg - attribution-win32-mr-shippable/opt: SuHcmUdDTKGoylRoiNCxzg - attribution-win32-ms-shippable/opt: VpRsVY9VTyyNmx56cCk7xg - attribution-win32-my-shippable/opt: Re045h2xQRCdpwoNt0czeA - attribution-win32-nb-NO-shippable/opt: Z_C6jzAXQ1mreq44Gpah0w - attribution-win32-ne-NP-shippable/opt: J20HhXfzQnKQdZO_ndcctQ - attribution-win32-nl-shippable/opt: G9IvTCDcS7GEwzAvMIDe7g - attribution-win32-nn-NO-shippable/opt: LFgaR9jVSWKYuZlQ-E5K0w - attribution-win32-oc-shippable/opt: Yr9AaIuhRduRIcRhm_2_Qw - attribution-win32-pa-IN-shippable/opt: K1CbgvHZTEiR3RcEqVvzVg - attribution-win32-pl-shippable/opt: dMLvqqLNSfKwecaOcMeBJw - attribution-win32-pt-BR-shippable/opt: O6m7CKkETEKgr-ju4Tg3cQ - attribution-win32-pt-PT-shippable/opt: KZVCACewTGC44w3DXhg0dA - attribution-win32-rm-shippable/opt: SRwV-rxISLCIQ_HfD2nlgw - attribution-win32-ro-shippable/opt: EDsuyWz5RY24BAByEEbLhw - attribution-win32-ru-shippable/opt: a4u9Ssj-QZ-jvF39xksWkw - attribution-win32-sat-shippable/opt: FH2VaLDqRPWTfSESdo-JyQ - attribution-win32-sc-shippable/opt: P2zVXowqRBakrS3dxWkAEQ - attribution-win32-sco-shippable/opt: POFMqgAMSx-k9cg980l0IA - attribution-win32-shippable/opt: R_6cE6qNQtS3S5kSVeVHpQ - attribution-win32-si-shippable/opt: b68TfSgnTriMi-K-Jt_mqw - attribution-win32-sk-shippable/opt: DirwdCYzSdKV9STtm5c8QA - attribution-win32-skr-shippable/opt: bkR6E314QuyB2Bb4QB8t8Q - attribution-win32-sl-shippable/opt: HXAy-lBCSfGr1FgNgJDToA - attribution-win32-son-shippable/opt: cDvjz4biQR6WHBWz-dR5aA - attribution-win32-sq-shippable/opt: XvGlGFmOQsi2sFxYNdssxQ - attribution-win32-sr-shippable/opt: Qm0I6n29Qfqy6ezZsV164A - attribution-win32-sv-SE-shippable/opt: KtgbqgQpRMybl2onIYw9zg - attribution-win32-szl-shippable/opt: GWtFsYlwSSGwOFef9_LpJw - attribution-win32-ta-shippable/opt: Vuh2PV13Qm62ARmKmdjaWA - attribution-win32-te-shippable/opt: MUkGx0NHSriOBeybroUTKQ - attribution-win32-tg-shippable/opt: LIA9ktG2SCOWNWiu6ikWFA - attribution-win32-th-shippable/opt: AoZ-LkN1RuGzz5kUO7wFwg - attribution-win32-tl-shippable/opt: XSKL2NGETMi7l6U0Nm3zTA - attribution-win32-tr-shippable/opt: WtYjo4G3SQSyW_jNMsl6GQ - attribution-win32-trs-shippable/opt: PNwDltJOQm2h4hNIKTLB-g - attribution-win32-uk-shippable/opt: HFROehAbSoymMKN1MOmf7Q - attribution-win32-ur-shippable/opt: SI-coLPrSLCfzWPmAynV8w - attribution-win32-uz-shippable/opt: QuozRj5CRXmmC1xyytIjsg - attribution-win32-vi-shippable/opt: QyMsxXBHTaea5dM2CYcBVg - attribution-win32-xh-shippable/opt: Gk2N5xoeTKivdZsoXAATuA - attribution-win32-zh-CN-shippable/opt: U-t7w4o9QE66v16xI0MDWg - attribution-win32-zh-TW-shippable/opt: U0HXrRPbQKGt9REBeTNvRA - attribution-win64-aarch64-ach-shippable/opt: Aidc4p_8QvSUC2vEZc1R5g - attribution-win64-aarch64-af-shippable/opt: BAU2SHebRlC5BqwPI0CL9A - attribution-win64-aarch64-an-shippable/opt: DGTFJgecTU-4PUOWjXKL6g - attribution-win64-aarch64-ar-shippable/opt: KY999NgnT2CfxP8NuaSTLA - attribution-win64-aarch64-ast-shippable/opt: e2Bv4dMqTN6MUrDzO7edrw - attribution-win64-aarch64-az-shippable/opt: fqDyqj85SEq48YfQ4Mk6lw - attribution-win64-aarch64-be-shippable/opt: J0pQDXyoScSpbVAdOUEfeA - attribution-win64-aarch64-bg-shippable/opt: e-C31BJWQQm5aab_pPIJgw - attribution-win64-aarch64-bn-shippable/opt: BurEdndtSKmMBmj1Tduu2w - attribution-win64-aarch64-br-shippable/opt: QBIWCiNDS5G7PsgjOQtrGw - attribution-win64-aarch64-bs-shippable/opt: BuEFcYoUSGeNxEGc9Cjgcw - attribution-win64-aarch64-ca-shippable/opt: ElXOIvsHSj2N8zPhMRPF8A - attribution-win64-aarch64-ca-valencia-shippable/opt: B9Rslnt0RqSI_2-bWm6cjw - attribution-win64-aarch64-cak-shippable/opt: emu9FnaLQqyByygcNBy1hg - attribution-win64-aarch64-cs-shippable/opt: VKFJ5137Soq_Auf0AN3HVw - attribution-win64-aarch64-cy-shippable/opt: Hll1ioXcRU-Xgdkm2oF5uw - attribution-win64-aarch64-da-shippable/opt: MblGIcvrSUO48RaAb1YwSw - attribution-win64-aarch64-de-shippable/opt: NNrIjdfeT9eWruotMF-Xow - attribution-win64-aarch64-dsb-shippable/opt: A6ulyNcWRxWg-jI-h_8o-A - attribution-win64-aarch64-el-shippable/opt: W6V5vW4DSKyDEZvX3y-KFg - attribution-win64-aarch64-en-CA-shippable/opt: RXyKeFGMQNetEAINVcD13w - attribution-win64-aarch64-en-GB-shippable/opt: DkayeWegR4yH8LKkBRBnbg - attribution-win64-aarch64-eo-shippable/opt: dEZkpSWsRSqkXBjvt36P9w - attribution-win64-aarch64-es-AR-shippable/opt: InRTXtsbTWelQncPNVu61Q - attribution-win64-aarch64-es-CL-shippable/opt: UaotgDt5To2njBqhA-KKaw - attribution-win64-aarch64-es-ES-shippable/opt: IjRlgcr2SGqFLKLlrf6hXA - attribution-win64-aarch64-es-MX-shippable/opt: J5XK2uwjT3GFQ6FwKgTuIQ - attribution-win64-aarch64-et-shippable/opt: A-onW1hLTs-TOVJ9O9x6-g - attribution-win64-aarch64-eu-shippable/opt: J14l-phkTVuz1ku9u3f5OQ - attribution-win64-aarch64-fa-shippable/opt: DUHrTnpNRmaY5YScs_qPpw - attribution-win64-aarch64-ff-shippable/opt: M-Ue2q9VQbGnMBhPj12ciQ - attribution-win64-aarch64-fi-shippable/opt: e6AXVCHbRZuofdgaDXPB6g - attribution-win64-aarch64-fr-shippable/opt: CGkkEKZBSB6Zvhq5efBXqA - attribution-win64-aarch64-fur-shippable/opt: ZgWRTHUJRIuMBNJzD4jv_g - attribution-win64-aarch64-fy-NL-shippable/opt: G5vDXnQWQYusVOG-5lRe6Q - attribution-win64-aarch64-ga-IE-shippable/opt: FSzLYMDIRS2f-7uPqPcNsQ - attribution-win64-aarch64-gd-shippable/opt: EU49mWezR4SzNjCWvNirKw - attribution-win64-aarch64-gl-shippable/opt: D8IIv7C1Tju58BJfXoklOQ - attribution-win64-aarch64-gn-shippable/opt: FXLbgFv_RemVvrcr3vwm3Q - attribution-win64-aarch64-gu-IN-shippable/opt: Bo3COi4bQh6KcY0Yrh3TEg - attribution-win64-aarch64-he-shippable/opt: Lsp2-H0KSza7a-JH25ye9g - attribution-win64-aarch64-hi-IN-shippable/opt: NBJQA4-dSo6IqflY8JFI-g - attribution-win64-aarch64-hr-shippable/opt: VrpBLx8sS-eZH4tgDjG1zg - attribution-win64-aarch64-hsb-shippable/opt: MzKzyNhcTMmpNEaf9_ahig - attribution-win64-aarch64-hu-shippable/opt: ITWs6hjLSW-gERrSOAruWg - attribution-win64-aarch64-hy-AM-shippable/opt: LF1zL6q4SUi5kNwf2kP3PA - attribution-win64-aarch64-ia-shippable/opt: R8n-I2tBSqemNt1Ajno74A - attribution-win64-aarch64-id-shippable/opt: JyoouBNcR7mee2HwqL72SQ - attribution-win64-aarch64-is-shippable/opt: a0T9eN-YRj2Uy5Z40_NS_w - attribution-win64-aarch64-it-shippable/opt: J91QZRDvRvG8e9fEX_tS0A - attribution-win64-aarch64-ja-shippable/opt: Ush5YdFkR72TP_rmvzUM4A - attribution-win64-aarch64-ka-shippable/opt: Y4y-VXSNSJ-mb8f_ZMcFhw - attribution-win64-aarch64-kab-shippable/opt: DXBoR0YrS2u-kUM5iRI4lQ - attribution-win64-aarch64-kk-shippable/opt: Lo9AVisJRL-YRXDRioyV3Q - attribution-win64-aarch64-km-shippable/opt: OdyoHUa_S_KJcJXddKnSBw - attribution-win64-aarch64-kn-shippable/opt: aLFB7KbjR7yi1s5k_nOdzA - attribution-win64-aarch64-ko-shippable/opt: ORZvkdUaRVSu54yYY_6bJw - attribution-win64-aarch64-lij-shippable/opt: A0rvocBRSyCThp6iw1TEmA - attribution-win64-aarch64-lt-shippable/opt: GZ0hSrilQJGoJ1OB1p-EEA - attribution-win64-aarch64-lv-shippable/opt: QtZiF0cjTxO7MZ2cV_Du-w - attribution-win64-aarch64-mk-shippable/opt: a6U2TcxERoCmBN_WTWku6g - attribution-win64-aarch64-mr-shippable/opt: Kc0yrhvGSkCbvkNt1DK3yw - attribution-win64-aarch64-ms-shippable/opt: bwgIYzvlR6W4ykxMsi7Euw - attribution-win64-aarch64-my-shippable/opt: UQXUYhtQQiiyg_ZIUmobRg - attribution-win64-aarch64-nb-NO-shippable/opt: Kvt4mq21SyKZco7dzKc2XQ - attribution-win64-aarch64-ne-NP-shippable/opt: Uo7g49dSRP-AlIb2MO6EQg - attribution-win64-aarch64-nl-shippable/opt: GLFPgdu9QuezpZ0IHFbTPA - attribution-win64-aarch64-nn-NO-shippable/opt: OzTdd5D6Sgu0d-cs33kS2w - attribution-win64-aarch64-oc-shippable/opt: aAnWceUIQlqm3MYdIf_hHA - attribution-win64-aarch64-pa-IN-shippable/opt: GyIRRJQtSd-8tU67EO2lAA - attribution-win64-aarch64-pl-shippable/opt: ZSvaK-EiSYyfAbf1fDGFfA - attribution-win64-aarch64-pt-BR-shippable/opt: TD3x5yjOSN2VYU8zfMNTLg - attribution-win64-aarch64-pt-PT-shippable/opt: YiPbmVbbR_2HKpFayuM5dg - attribution-win64-aarch64-rm-shippable/opt: WCusj_EeT6OwFTuco4C0cw - attribution-win64-aarch64-ro-shippable/opt: GKT-G_3zSuiJsym9FZlkBw - attribution-win64-aarch64-ru-shippable/opt: GZZ-xxx2QLW4I9VvzgLVOg - attribution-win64-aarch64-sat-shippable/opt: G6-ndv4JTxCrgvyxqBQupQ - attribution-win64-aarch64-sc-shippable/opt: CqBx7-RXSOyJtgfHuV2J5g - attribution-win64-aarch64-sco-shippable/opt: dafJSzEsQmWqSsv3o2WUrA - attribution-win64-aarch64-shippable/opt: LvtioEp8TtaeXJTrY25Rxw - attribution-win64-aarch64-si-shippable/opt: fSbuMnhdSJ2fOr4lUfA74w - attribution-win64-aarch64-sk-shippable/opt: JbtWteNtSQa4T9duRFrgoQ - attribution-win64-aarch64-skr-shippable/opt: XN3oxiqoSXymhWEkJQuM4g - attribution-win64-aarch64-sl-shippable/opt: FwMc5cqYTg2jHhdtThJDsg - attribution-win64-aarch64-son-shippable/opt: MdyAwAeGSrCUOtyzqGTdyw - attribution-win64-aarch64-sq-shippable/opt: WTdYGTiMSqq8qV1JZHn8VQ - attribution-win64-aarch64-sr-shippable/opt: Y2fkqdoTScChF5oyIrmfwQ - attribution-win64-aarch64-sv-SE-shippable/opt: RScPdj-eRCio4_lwVfjtLQ - attribution-win64-aarch64-szl-shippable/opt: TtU3tHiGSs-uXHOPyF3x2A - attribution-win64-aarch64-ta-shippable/opt: QUVfUoaCSSia296YtOvIVA - attribution-win64-aarch64-te-shippable/opt: BYApeOEbRIS6TVvrWhZOCg - attribution-win64-aarch64-tg-shippable/opt: Wfsi5nSgQa-AyLJy1hUR_Q - attribution-win64-aarch64-th-shippable/opt: DmPUv1hbSlOpbDtgPOX3mQ - attribution-win64-aarch64-tl-shippable/opt: Kdpevd7ySgGpLBd9p2J-tA - attribution-win64-aarch64-tr-shippable/opt: OeUqY6PKQKasCm3B9hraFA - attribution-win64-aarch64-trs-shippable/opt: Y3qrjsRiSRu1K4buF4VlSg - attribution-win64-aarch64-uk-shippable/opt: aKxflWjRR7m-g-nDiI6BhQ - attribution-win64-aarch64-ur-shippable/opt: dV7Vy_04RgOHTYC6mKgtlw - attribution-win64-aarch64-uz-shippable/opt: Q4s5BAswRmO1IDn3bVo9BQ - attribution-win64-aarch64-vi-shippable/opt: K__evU_XTMm3H0vh4Yz3dA - attribution-win64-aarch64-xh-shippable/opt: X4k_hlOsSnS8FZybqKILoQ - attribution-win64-aarch64-zh-CN-shippable/opt: FCMOp6c-SeyR0Yj24P01-w - attribution-win64-aarch64-zh-TW-shippable/opt: aS7u4_6IQwG2BBi3jUcWiw - attribution-win64-ach-shippable/opt: RL9VqT2VRHSiv8OymtbxYQ - attribution-win64-af-shippable/opt: KvjpZ6qjRI6Vr9MgPjRZ2Q - attribution-win64-an-shippable/opt: AXTubz8gS1O9UXWM-weFLg - attribution-win64-ar-shippable/opt: VT1AAVjWTY-mZUZ2-hQSWg - attribution-win64-ast-shippable/opt: IUOP7i4bQtmQmsni84UwGg - attribution-win64-az-shippable/opt: UViQz-rJR-CQnZLXH7DMbQ - attribution-win64-be-shippable/opt: ISdh6_n8RKetxVyMej1nSg - attribution-win64-bg-shippable/opt: a3HRZEPvRyKRqQsncxDXvQ - attribution-win64-bn-shippable/opt: DCTqXHeIRJWowUumb0T9Gg - attribution-win64-br-shippable/opt: OQbG2fCwRgmCnP8mikI6FQ - attribution-win64-bs-shippable/opt: G3tTFG6DTXa78PmS4764cg - attribution-win64-ca-shippable/opt: an62LybSRHyUoqzNUYhwVg - attribution-win64-ca-valencia-shippable/opt: AE-_Lc_GT66MhFz5s6T4sQ - attribution-win64-cak-shippable/opt: BDDFzO1oSWqStQPrnV-U3g - attribution-win64-cs-shippable/opt: Kuf4_2JYSSG15thZNd-r0Q - attribution-win64-cy-shippable/opt: Hip-yEVeRVyxWrrjAb_0xQ - attribution-win64-da-shippable/opt: SZ_ARYDYSm67ioRZGYItTg - attribution-win64-de-shippable/opt: AhbeNUFoTMqmfnSo16Lwrg - attribution-win64-dsb-shippable/opt: J4bZd2bOR4uy9sEVD_v6ww - attribution-win64-el-shippable/opt: LuVe6RpeQ7y-7N-Q3JVZtA - attribution-win64-en-CA-shippable/opt: DbxJL_cUQz2dmUtABAe0gQ - attribution-win64-en-GB-shippable/opt: S3avEe7FT3CcicA_z-ZdzA - attribution-win64-eo-shippable/opt: RrEj1xPHTiCCRetAM3YMLw - attribution-win64-es-AR-shippable/opt: KEmairsQT5igZqml1iM-Yg - attribution-win64-es-CL-shippable/opt: IBd8AtTbR9-U1wONuPsWUw - attribution-win64-es-ES-shippable/opt: FUJVg_XwRc-4ctBwqp60kA - attribution-win64-es-MX-shippable/opt: UinLJGeZTcaZuScm5b7ZZw - attribution-win64-et-shippable/opt: Zco7Q0BIRu-kA5FoIGu2bw - attribution-win64-eu-shippable/opt: Hk_qIe2oTtm4Vu1H0qCIKg - attribution-win64-fa-shippable/opt: Pxgo9JVaRNy17sIxSohJRA - attribution-win64-ff-shippable/opt: BXyrRhfoR_eXnq5pv9DujA - attribution-win64-fi-shippable/opt: Ql4uyR2tQ2O53sameT0xYQ - attribution-win64-fr-shippable/opt: VmL4DQkESEeZd3ZqZ2t5-Q - attribution-win64-fur-shippable/opt: RIbpOzAnRL-PnyCMN3Em1g - attribution-win64-fy-NL-shippable/opt: ENI2SS73QqmVGVne_cdwUA - attribution-win64-ga-IE-shippable/opt: d4w30Ee5RMKFWQHRErEHWA - attribution-win64-gd-shippable/opt: QC8I_fW_TDqsP-ejrTCmBQ - attribution-win64-gl-shippable/opt: d2pvBwZfRPapWR5EAG8mXg - attribution-win64-gn-shippable/opt: QUZ13UqfQPSgPbk1vKm0gA - attribution-win64-gu-IN-shippable/opt: L2L9Xr7XSmmswKqNQdW9XA - attribution-win64-he-shippable/opt: TLBwvl6jQBmlflmlkgSuvQ - attribution-win64-hi-IN-shippable/opt: T9GmgUvjSKqe52EYwKVjsw - attribution-win64-hr-shippable/opt: fKgZISmITG-uO4GlqV4ZzA - attribution-win64-hsb-shippable/opt: Hq-zdhCuSkekRyk_ecvYvw - attribution-win64-hu-shippable/opt: OyQF4ft2QLeKDtP3Ucy9oA - attribution-win64-hy-AM-shippable/opt: IPvf_xjLT5mwsWSKyIoP8A - attribution-win64-ia-shippable/opt: atJ2sHsdTsCeY23g7ER1dw - attribution-win64-id-shippable/opt: VC45D5klRhOlkXv16J0aBg - attribution-win64-is-shippable/opt: PS5IiFrYS4uG5Pw67SnqSA - attribution-win64-it-shippable/opt: J3_DMxWES_ao1JIbUhA4hg - attribution-win64-ja-shippable/opt: OH8kP6vsR8WffnfK7zpQ7g - attribution-win64-ka-shippable/opt: LAnaeYGUT0mUuazeECkzrw - attribution-win64-kab-shippable/opt: culoBF6nSBKZmDHfgJTA0w - attribution-win64-kk-shippable/opt: H77lsVfBTVyf6BeezG9exQ - attribution-win64-km-shippable/opt: Ng_r6Q1vR8-Pgj2FN48okQ - attribution-win64-kn-shippable/opt: OopsY0x7Qceju0RaXZVIvQ - attribution-win64-ko-shippable/opt: CNG5pYRTRdyzYI-f4Y02xg - attribution-win64-lij-shippable/opt: WrRdbj3dTAOIOjXbad1tEA - attribution-win64-lt-shippable/opt: fPt-qSY3TYGPiOODCN-2LA - attribution-win64-lv-shippable/opt: YUNo9H4LSNmMCTLW2hlw8w - attribution-win64-mk-shippable/opt: NOnE-la3TqKcdbCWENd_Lg - attribution-win64-mr-shippable/opt: VYG0w8PGQHubl_vxZ9mgxg - attribution-win64-ms-shippable/opt: G-1NakcZSI-xEIwTYJkNPw - attribution-win64-my-shippable/opt: IqlVhvzbSPKO75nJZ0dqVA - attribution-win64-nb-NO-shippable/opt: NX9AlAejT9K1_Tq_4jDXqg - attribution-win64-ne-NP-shippable/opt: NRkzjBtkTbGFfdAPgzM2iA - attribution-win64-nl-shippable/opt: Urv-L-9mQiKdrkHd6c7Giw - attribution-win64-nn-NO-shippable/opt: MVx3FEmcQc2cp57EMFZv8w - attribution-win64-oc-shippable/opt: IZ8vCJUcRcyblcBCq7drBg - attribution-win64-pa-IN-shippable/opt: MyPf6sZLQLev6ckElHeKBw - attribution-win64-pl-shippable/opt: S_GJOeASTnKyjfj3MDTnYQ - attribution-win64-pt-BR-shippable/opt: RFByffchRuuiHhLriqKIcQ - attribution-win64-pt-PT-shippable/opt: b04I9-2YRQ6-Cnil3ItIYw - attribution-win64-rm-shippable/opt: PAQ4j59RRBCRDLzS0CSnug - attribution-win64-ro-shippable/opt: fiXHF4GkT7-kZOlW9Vvl9A - attribution-win64-ru-shippable/opt: e5wAVfS7QduRqogd2DD3ng - attribution-win64-sat-shippable/opt: RxPyChmDRi6En7trRVxqTg - attribution-win64-sc-shippable/opt: ck6RW4tCSlKE-1X3kaY0Wg - attribution-win64-sco-shippable/opt: XlbNtFddS6iuHKET6eqjuQ - attribution-win64-shippable/opt: U5aVqkbLQyWRukHe3OvH-A - attribution-win64-si-shippable/opt: LeAqU2IlSKWtSsJ5N7i5Xg - attribution-win64-sk-shippable/opt: FcWT7LfmT9uSxGNj2tCn4g - attribution-win64-skr-shippable/opt: ZO0dHD3pSX-oy27RgmKhqQ - attribution-win64-sl-shippable/opt: Xy55p647Rcq-VJYRb1DIvg - attribution-win64-son-shippable/opt: aoS2mQ1RQGiz7VSBSDWVMA - attribution-win64-sq-shippable/opt: EbdlA9ShQCOWKdLdXB-kGA - attribution-win64-sr-shippable/opt: Zg_EPKR8S_WT3SLYnOUwyQ - attribution-win64-sv-SE-shippable/opt: PeybWSf3SZqxjNZeAb6C0g - attribution-win64-szl-shippable/opt: U8b7zetMQnyxfahgHedBSQ - attribution-win64-ta-shippable/opt: e3zlmOI5TkSBTD6qRhtSmA - attribution-win64-te-shippable/opt: YME5XncJTumJ6tgRO_xZKQ - attribution-win64-tg-shippable/opt: Xvg-lcRQRymF9adbcw-Olg - attribution-win64-th-shippable/opt: VRhYZpjJRQSY0WE2iUCJDA - attribution-win64-tl-shippable/opt: QxLNKZigR2e14CLO50F_HQ - attribution-win64-tr-shippable/opt: N_oPkpu1Sl291Flku9QUQA - attribution-win64-trs-shippable/opt: XZuuV7LxRCG3NGU6DIfiKQ - attribution-win64-uk-shippable/opt: GZ_oSJfBSA2UGsgmyx5Q7g - attribution-win64-ur-shippable/opt: Howu9RV-QEKxtUdWSLLxDA - attribution-win64-uz-shippable/opt: ZtaNagQLR2C56t3RTGY9xw - attribution-win64-vi-shippable/opt: SjYmuDo9Qf6UibeJ3PZeNA - attribution-win64-xh-shippable/opt: RdDFCjHhRkyHiESjIyaJ5g - attribution-win64-zh-CN-shippable/opt: GXwIzqdFQ2KnJiipXk6pUQ - attribution-win64-zh-TW-shippable/opt: AmURzNNCTSiNf2jIOoh9UQ - balrog-ach-linux-shippable/opt: IFjJvsl7RHu11VdiN8aayw - balrog-ach-linux64-aarch64-shippable/opt: YE9CS_SZSVqy7xkJjK0Tqw - balrog-ach-linux64-shippable/opt: QV0YEiG6TZOdGs_xDJZ7sg - balrog-ach-macosx64-shippable/opt: NF8cxpHORJ6-CcLUm87J2A - balrog-ach-win32-shippable/opt: R0NLjjcRRgG8Jn30tQGFiw - balrog-ach-win64-aarch64-shippable/opt: GjyWwnAQTz2TJAnr5K_OSA - balrog-ach-win64-shippable/opt: I3SZtzx7Qp-ZAeX9Jc-qwQ - balrog-af-linux-shippable/opt: GHX0X-74QnCydFGqXo_Q4A - balrog-af-linux64-aarch64-shippable/opt: EPjztoT2SVq1RvSR8DJsYQ - balrog-af-linux64-shippable/opt: Hb0dNyM3TJmZVBckogLoXg - balrog-af-macosx64-shippable/opt: es58qzeKSu-SwKDU3RGhcA - balrog-af-win32-shippable/opt: YdT-4IAzS6KGk5TNDojuzw - balrog-af-win64-aarch64-shippable/opt: W8sJo9xcRz--ezSCC8abTQ - balrog-af-win64-shippable/opt: JDzEbk7DT-6L2js0dmkZzQ - balrog-an-linux-shippable/opt: JHDnDqWZS7iSpQmsZy5ttA - balrog-an-linux64-aarch64-shippable/opt: OzzXM7rNSnKoYSmfL5g8wQ - balrog-an-linux64-shippable/opt: UOzASLK8SzOWsMk0qyluNw - balrog-an-macosx64-shippable/opt: YipQbHu4Td-2rnzpCvazCw - balrog-an-win32-shippable/opt: XXSoZQXKQzaz6Swx-T6zKQ - balrog-an-win64-aarch64-shippable/opt: EhjdjipGSXe_eaFgJc-VFA - balrog-an-win64-shippable/opt: fv-ApLYuTU2AwYsoK1Hv9Q - balrog-ar-linux-shippable/opt: D6SLlWq_SVOP8eVkqYbjXA - balrog-ar-linux64-aarch64-shippable/opt: bud0fmWkTyKRT9tvqIFqNg - balrog-ar-linux64-shippable/opt: Yr5YHDtJQduQn3qPMOwpxQ - balrog-ar-macosx64-shippable/opt: N2Oh2VreR5WLqVDEDu5VxA - balrog-ar-win32-shippable/opt: Jl6MHTNYTtC-IHxO9lLgyw - balrog-ar-win64-aarch64-shippable/opt: ZvLytnZuSxevqHNOdotnsA - balrog-ar-win64-shippable/opt: XJ46W5l6QdqTSK6qXnwNIQ - balrog-ast-linux-shippable/opt: V5KsMwxGT7a-YcMb10uMYg - balrog-ast-linux64-aarch64-shippable/opt: cATRFCmGQ5CYxL8P_xo-TQ - balrog-ast-linux64-shippable/opt: dVEjl-PhRD6KTiMRMAmXYQ - balrog-ast-macosx64-shippable/opt: RKpBMC7HSX6-LAfAjjUbMQ - balrog-ast-win32-shippable/opt: Vp8L0vCTR22qY7Zr6GVjKA - balrog-ast-win64-aarch64-shippable/opt: DABRDVU7SZCZeTT8S0fF0A - balrog-ast-win64-shippable/opt: Z_fJ8x3qTT6WOiagNqXVUQ - balrog-az-linux-shippable/opt: PqWyHZyeSIqKNPvBqMPJjw - balrog-az-linux64-aarch64-shippable/opt: EM0511udR4yQN-M5WjbAJg - balrog-az-linux64-shippable/opt: UAcolyGERYiFco0O_x__NA - balrog-az-macosx64-shippable/opt: Rl3xLq_pSvOZstehBrA3LA - balrog-az-win32-shippable/opt: CgtFHDV-QqC4yxDjPps08A - balrog-az-win64-aarch64-shippable/opt: DZTTgIzDRXm-eIuLVxFmpw - balrog-az-win64-shippable/opt: Bpd75ynMRhuubxciTLNHcw - balrog-be-linux-shippable/opt: OGeLSNjwRf6_s3o3_MJE2A - balrog-be-linux64-aarch64-shippable/opt: dtbyuEOvTki8TnwTvfpgVg - balrog-be-linux64-shippable/opt: X2IVPf9pQgKD7spzIZzCrg - balrog-be-macosx64-shippable/opt: dtSwSMdbRRCq064dn09MIQ - balrog-be-win32-shippable/opt: PXaeo7OKQZGcfecpi1UJNA - balrog-be-win64-aarch64-shippable/opt: AINMMH5OTtmqu7zSyIf3tQ - balrog-be-win64-shippable/opt: NJDz0W6vQGazmbRKZVfSXA - balrog-bg-linux-shippable/opt: argtIg9JQZKLelJVAcjv6Q - balrog-bg-linux64-aarch64-shippable/opt: d2VazCxUS7WwHptiRb1uoA - balrog-bg-linux64-shippable/opt: ED3cpoAYRsqUHdIZQY_Pdw - balrog-bg-macosx64-shippable/opt: Qav2xa6ZRFyQNEJgyCVzkw - balrog-bg-win32-shippable/opt: LLjWBnF6Rx6Kau03Pjq1rg - balrog-bg-win64-aarch64-shippable/opt: Fyu2s94xQS6YYWDl-w95qQ - balrog-bg-win64-shippable/opt: Hd7rYXhaQO-oRfa_UAuxAQ - balrog-bn-linux-shippable/opt: X6Ssnj6VR3yYieYtTotVwQ - balrog-bn-linux64-aarch64-shippable/opt: H5QBMcjiRH62XaFAZtAxXg - balrog-bn-linux64-shippable/opt: RJpYmJhcRKusePVdt9-rVw - balrog-bn-macosx64-shippable/opt: Yi-gZl4RQ9alWbpS-pl3TQ - balrog-bn-win32-shippable/opt: KSrO_JpUTLmwUuY1pzU4vw - balrog-bn-win64-aarch64-shippable/opt: VTvVRjikSQmBv3G8fSkvow - balrog-bn-win64-shippable/opt: ZB7l-3IYTBOp46mbhl_fFQ - balrog-br-linux-shippable/opt: DBZatlZxT2Gk_CV6KV6KDA - balrog-br-linux64-aarch64-shippable/opt: JWkcM-GrQ7e8omCwWdOE-A - balrog-br-linux64-shippable/opt: VaWdB1EDQX-3MwEr7JxMow - balrog-br-macosx64-shippable/opt: fNekyv_hQU-1jm8Pa6aymg - balrog-br-win32-shippable/opt: T96T2a2RRlWI-oKmd78KcA - balrog-br-win64-aarch64-shippable/opt: X0YQHF-RQS262g6tB3CeYQ - balrog-br-win64-shippable/opt: H9uyGqKoRr2gldQB3ZGsUA - balrog-bs-linux-shippable/opt: YuPSXPuXSdG7uMu7IoxhIw - balrog-bs-linux64-aarch64-shippable/opt: QujkXK92RPWFf-_tV33MpQ - balrog-bs-linux64-shippable/opt: RrOHPohISTOgPzGZrM_3NA - balrog-bs-macosx64-shippable/opt: Y9GgzlYgS7-hKSkmV4dUGQ - balrog-bs-win32-shippable/opt: X8TD1BwtTIWTd_NzWTGISQ - balrog-bs-win64-aarch64-shippable/opt: XE0KldIeSHSSodN6RzXScA - balrog-bs-win64-shippable/opt: IXjaAk4UQway_WUMAJdWuQ - balrog-ca-linux-shippable/opt: EOpmhCHLT-u_YD4-baDMvA - balrog-ca-linux64-aarch64-shippable/opt: J5DbP46OQKeYvpgT_LJiKg - balrog-ca-linux64-shippable/opt: OTMl1u3ASReAqvU4I8rm-g - balrog-ca-macosx64-shippable/opt: Ga7vokErRtijQKF_vEEcug - balrog-ca-valencia-linux-shippable/opt: MTcjvVM9RYuCLI62XoHrtQ - balrog-ca-valencia-linux64-aarch64-shippable/opt: LlCZVK-8R8yx_149cujAOQ - balrog-ca-valencia-linux64-shippable/opt: XgAxDTZhQpmL7lxQlbuTeA - balrog-ca-valencia-macosx64-shippable/opt: HrtUhO2nQ1iWpndYrU7acg - balrog-ca-valencia-win32-shippable/opt: KMaMuGXTS-eYmAdhAfEzeA - balrog-ca-valencia-win64-aarch64-shippable/opt: XHqq5TfyRH2mxtzZ6C4v4g - balrog-ca-valencia-win64-shippable/opt: cOUhyoaJRXiYzw2cqq0SyA - balrog-ca-win32-shippable/opt: O_xSTlRwSuSNWvttfybWqA - balrog-ca-win64-aarch64-shippable/opt: D6IbxCUKTYmigZxxdlzupg - balrog-ca-win64-shippable/opt: RcxHaxqNScmDZGUMi2Wq4g - balrog-cak-linux-shippable/opt: Mnf1sYDbSFewBmj-_-TnVQ - balrog-cak-linux64-aarch64-shippable/opt: eg-UhwFZTISvS9vYMD8lYQ - balrog-cak-linux64-shippable/opt: ckroKLd5Rj69WBq7H-yz5Q - balrog-cak-macosx64-shippable/opt: bw_vgpArQgq2Lxk180opvQ - balrog-cak-win32-shippable/opt: P9EqxAtpROGb_wb1SEZl-g - balrog-cak-win64-aarch64-shippable/opt: SzIYn3Q7TPeLKBSw09Iccg - balrog-cak-win64-shippable/opt: L1eMDmfBSfeO-Wj3DfXRRA - balrog-cs-linux-shippable/opt: FBz8OI3USdu_zCWn_WcRqg - balrog-cs-linux64-aarch64-shippable/opt: d5IxzYSsQbmxJ6GGsaYT-w - balrog-cs-linux64-shippable/opt: KkWXs9DUSC6LYGxX7JzILQ - balrog-cs-macosx64-shippable/opt: BtJxCvnJRTS45aL2KtTvOw - balrog-cs-win32-shippable/opt: Zz5isSzqRYyCg0izE9tMGg - balrog-cs-win64-aarch64-shippable/opt: ZLEKXKSPTQiOY7Fo5tl8gA - balrog-cs-win64-shippable/opt: OvJtQgikQaidPq_MfdjwWg - balrog-cy-linux-shippable/opt: QJcuLRGXTES5g3BQlSx6Lg - balrog-cy-linux64-aarch64-shippable/opt: Jc2NsSXHQESSIDy4djxd_Q - balrog-cy-linux64-shippable/opt: H_RlSODuQPudlGaVOPtBEQ - balrog-cy-macosx64-shippable/opt: LN_2BWn7S5O-8haGOGX8cA - balrog-cy-win32-shippable/opt: RJau4ggbQjS0cyON3jN14w - balrog-cy-win64-aarch64-shippable/opt: T5OhR15HRnSJ-09oL8m3hg - balrog-cy-win64-shippable/opt: Mw5OZwIZR-CKwCc9eF-imA - balrog-da-linux-shippable/opt: cdqqVZRCSBi_bphgRuiz2Q - balrog-da-linux64-aarch64-shippable/opt: L01n_Xl1RGiqF_P5LEoMhw - balrog-da-linux64-shippable/opt: Q-XRe89rScaI3_M-wdyM-w - balrog-da-macosx64-shippable/opt: YKL2sf_kSSSlNkIiCAw4VA - balrog-da-win32-shippable/opt: Zi4EsW7kTdq7FFwkFU8JGA - balrog-da-win64-aarch64-shippable/opt: MEA-QbPNQfqH8ZeIBbPT0A - balrog-da-win64-shippable/opt: LnTsGUj5RNqUfyQZfe3WmA - balrog-de-linux-shippable/opt: Lc_Q2BX_SSyiM0mCZuWHxQ - balrog-de-linux64-aarch64-shippable/opt: EO2GIJ8MTgegyn7ZDIxW3g - balrog-de-linux64-shippable/opt: NA0oecOWQu61AzX-FWjXxA - balrog-de-macosx64-shippable/opt: KGQWnoQnSi-BXpWVc23Dng - balrog-de-win32-shippable/opt: Q1EiSMLDSr27rpwdHymSXg - balrog-de-win64-aarch64-shippable/opt: W3UVR5PERcmJxREe_Fh-HA - balrog-de-win64-shippable/opt: bjOmVgSLRyWTEkszer9QVQ - balrog-dsb-linux-shippable/opt: cLkiesSKT1GlBDhzX4-ckQ - balrog-dsb-linux64-aarch64-shippable/opt: MhEHnE5sSpuRf_ODN6yfdA - balrog-dsb-linux64-shippable/opt: OR_VEzwcSNaylm49ntgCEQ - balrog-dsb-macosx64-shippable/opt: Jfz12cscS_KePOYxcCdkFw - balrog-dsb-win32-shippable/opt: DSh7VFRWTRy6tTVx4DWsrQ - balrog-dsb-win64-aarch64-shippable/opt: HwKJvEd1Q_Gny_EVq2SxDA - balrog-dsb-win64-shippable/opt: bMdA4U4RR3C-zfuyJpABhg - balrog-el-linux-shippable/opt: CaEHr0eESzGftZGl-0vzrA - balrog-el-linux64-aarch64-shippable/opt: KSJiOCcMR7uyT6WUHftDDA - balrog-el-linux64-shippable/opt: T4NFYC_dTA25WJkFCWnEzQ - balrog-el-macosx64-shippable/opt: IOjQ_qt_Q92KtHIfhDEr_A - balrog-el-win32-shippable/opt: EiUqhrMyTOi9HYhf89BbYg - balrog-el-win64-aarch64-shippable/opt: Z5BbCX7aS9yH-9O4USS-Bg - balrog-el-win64-shippable/opt: PSS0SLzHTwGCT8quk9Kftg - balrog-en-CA-linux-shippable/opt: Ry5msB02Th6E2wGFqw9gGQ - balrog-en-CA-linux64-aarch64-shippable/opt: IRsSfzi8RrOiYjQXznZzew - balrog-en-CA-linux64-shippable/opt: eeRS3-fESme-QSLgF-ZJrw - balrog-en-CA-macosx64-shippable/opt: fw3bHaqZT6-Pl4EqCTXv2g - balrog-en-CA-win32-shippable/opt: XJXOrml8SPWwgOjMaMp4Gw - balrog-en-CA-win64-aarch64-shippable/opt: LooapkSbQPy9spRiXQ7iTQ - balrog-en-CA-win64-shippable/opt: Jp4okv4xT8a5td_21MRdDA - balrog-en-GB-linux-shippable/opt: XKj_uuejSiGFbAOIuuPVPQ - balrog-en-GB-linux64-aarch64-shippable/opt: ePjZLcLRTSKGMi5_K-mUsA - balrog-en-GB-linux64-shippable/opt: SW0F5W7KR-eKnnA1qQwUcQ - balrog-en-GB-macosx64-shippable/opt: NoGb1WDiRq-lK6d5Um0vLw - balrog-en-GB-win32-shippable/opt: IXoq8J5OTUOWIUC0krgLsQ - balrog-en-GB-win64-aarch64-shippable/opt: LUiZFeuKSQm1hJXSiCZACQ - balrog-en-GB-win64-shippable/opt: ffXxTgl7TEuXFkRcbQr2Tg - balrog-eo-linux-shippable/opt: GfDgA47uT6GIn1V5J7Focg - balrog-eo-linux64-aarch64-shippable/opt: BLHRLC8JQXqWjxNoANZvMg - balrog-eo-linux64-shippable/opt: NXfga-0aTKqdhB4FX4pNBA - balrog-eo-macosx64-shippable/opt: NDabI8T_RSizz4FIYKu8EA - balrog-eo-win32-shippable/opt: fd8yNklUR-ur33NdNWHEIQ - balrog-eo-win64-aarch64-shippable/opt: d6bLfwW9RfWidDNTst4TdA - balrog-eo-win64-shippable/opt: MWfr62yUSjyysiBRZr8STA - balrog-es-AR-linux-shippable/opt: UWaNPxcgQke9PnxhQD2xzg - balrog-es-AR-linux64-aarch64-shippable/opt: ex6BrHWbT9a9JY96faPG0w - balrog-es-AR-linux64-shippable/opt: FmlIWjLQSx6P4CjFbjxMsg - balrog-es-AR-macosx64-shippable/opt: QOjCOTn9SpWx9jtWDA2Zcg - balrog-es-AR-win32-shippable/opt: Y0O3HcnJQcq3Y7wYuVlqtw - balrog-es-AR-win64-aarch64-shippable/opt: B3EPpfWaSGaP_C13EmWalg - balrog-es-AR-win64-shippable/opt: XFIRlaf3R6u6yzHAFIP0UQ - balrog-es-CL-linux-shippable/opt: DQaphSgpSY-2CCb6Pdny9Q - balrog-es-CL-linux64-aarch64-shippable/opt: VS5d6p1dTKy4a65Ovhk5kg - balrog-es-CL-linux64-shippable/opt: PV2iRdJ2QQ6k95l2_DjVWQ - balrog-es-CL-macosx64-shippable/opt: DReM7Sl-QleCUUw_bQ0RHw - balrog-es-CL-win32-shippable/opt: SXIyGD6hTeK5LkY6nyCU3w - balrog-es-CL-win64-aarch64-shippable/opt: L4mLvQUCStCUxj9eOpfetw - balrog-es-CL-win64-shippable/opt: Tefm0sr_QpKA4yzbBGCmbg - balrog-es-ES-linux-shippable/opt: Zo-LabD9T0qB98OzZQKuSg - balrog-es-ES-linux64-aarch64-shippable/opt: G4x0cNPISGe4twuEV_e4Pw - balrog-es-ES-linux64-shippable/opt: P1Zh-TARS7-rfn79G276eg - balrog-es-ES-macosx64-shippable/opt: Ko3onRqiQiGA3u0F0vf4IA - balrog-es-ES-win32-shippable/opt: dIidYnbnTImmcjFejtS8CQ - balrog-es-ES-win64-aarch64-shippable/opt: S52ht_wFSpmPxSTNBmNqcg - balrog-es-ES-win64-shippable/opt: SiB_bEkIRhyj5RMcG_FqTA - balrog-es-MX-linux-shippable/opt: ZDZcOHJ2QLeKjE8KcYDCRw - balrog-es-MX-linux64-aarch64-shippable/opt: XAQxnZBSRR6rMm4vct0pzA - balrog-es-MX-linux64-shippable/opt: JtX8UCb3TYagi52mDJfRIg - balrog-es-MX-macosx64-shippable/opt: H1M3nZBJRpykJsC7gQhTgQ - balrog-es-MX-win32-shippable/opt: R_LhfDJfTKmW9Q6n8HXXPQ - balrog-es-MX-win64-aarch64-shippable/opt: VVoDQEAoRMaLnmaH4Pig3g - balrog-es-MX-win64-shippable/opt: SlEtD8SYSSiA7wTFzUtWEw - balrog-et-linux-shippable/opt: FoiwllRZTw-T1xrWwSOnnQ - balrog-et-linux64-aarch64-shippable/opt: f0No2MOuRrSD8YUOtCgdmg - balrog-et-linux64-shippable/opt: UPod1vriSQCprtmMpkTKng - balrog-et-macosx64-shippable/opt: P7yoWEP0Rzu2p47fe5i2ug - balrog-et-win32-shippable/opt: DaGd47KXQLi_1X8v_wRAPw - balrog-et-win64-aarch64-shippable/opt: fMzc_DrPT9-yBxedymcZKw - balrog-et-win64-shippable/opt: O-jBSZM5QoWMPRS849ursA - balrog-eu-linux-shippable/opt: BVxnPe3iRlCLtJcsJktYHw - balrog-eu-linux64-aarch64-shippable/opt: VpQ6Hej5REy6Ka2yAaRTXQ - balrog-eu-linux64-shippable/opt: AOrJyGONRs-RM4yBSVt7Ww - balrog-eu-macosx64-shippable/opt: ZogFKm3-Rey0Lw44qemmaw - balrog-eu-win32-shippable/opt: eyF7P8yFRNa6MoMiSixrOA - balrog-eu-win64-aarch64-shippable/opt: C8rjzFB-SvWoorCmkZz09w - balrog-eu-win64-shippable/opt: NBbku8vQSZGTIhb2i73LwA - balrog-fa-linux-shippable/opt: PcbJewOYS2yH0Azw9YUeWg - balrog-fa-linux64-aarch64-shippable/opt: SVmtpASwThC2yw41pVVpOw - balrog-fa-linux64-shippable/opt: QaYegwfcTF2QzWs6euTTwg - balrog-fa-macosx64-shippable/opt: MU1q36ywQH-Up2FZRI2EKw - balrog-fa-win32-shippable/opt: BGpkKqPaR32IIyS16M5N-g - balrog-fa-win64-aarch64-shippable/opt: OZGTefMaR8CiUzbBW3yMjg - balrog-fa-win64-shippable/opt: LRmARc_YRySpZqzAUJKUaw - balrog-ff-linux-shippable/opt: fMdZxwJTQbySZXWIXbGI1A - balrog-ff-linux64-aarch64-shippable/opt: c0T1TDHDSSOBH0F1Jy-oSg - balrog-ff-linux64-shippable/opt: NypWex8vSKGs3fesuvOZvA - balrog-ff-macosx64-shippable/opt: VpY12PatTYyCp5pdy199Ew - balrog-ff-win32-shippable/opt: Sd1mcA6hTTe4bDMD6WZ4-Q - balrog-ff-win64-aarch64-shippable/opt: Hto8-lZiRvGeKXrzb2p7zw - balrog-ff-win64-shippable/opt: Bjuz87vXTDORSYk9r9wigg - balrog-fi-linux-shippable/opt: DntmdxdORU60ZNULei2XPg - balrog-fi-linux64-aarch64-shippable/opt: Y_L6f1osS9idjTWfaw3ElA - balrog-fi-linux64-shippable/opt: Ju1t-W4xSBiT8nnycef0Jw - balrog-fi-macosx64-shippable/opt: YhLWujVHRGqBqb2RwSZ30Q - balrog-fi-win32-shippable/opt: TC5wLbGiSw6xRnCSNgLjuw - balrog-fi-win64-aarch64-shippable/opt: b3DroDGORu2tGEdZgJArog - balrog-fi-win64-shippable/opt: NCtIB9Z1RKaJM1YAfEWZDA - balrog-fr-linux-shippable/opt: AdS30gjUTdGDUWErJR6Inw - balrog-fr-linux64-aarch64-shippable/opt: VUfApVurRH6xRnv5K5g3Ig - balrog-fr-linux64-shippable/opt: fN-2-A6uTw2yz91bWijz7w - balrog-fr-macosx64-shippable/opt: K_6TcgA6SlCPZ5KLRti2Wg - balrog-fr-win32-shippable/opt: IiFGHUzaRMCHNBqx76EZYg - balrog-fr-win64-aarch64-shippable/opt: CmTa_xyZSvavjJ1bNH2AOw - balrog-fr-win64-shippable/opt: NIBX3dI-R2OTpLzdyng2ww - balrog-fur-linux-shippable/opt: Wugx5QLyTCe6GJmlf9TKYQ - balrog-fur-linux64-aarch64-shippable/opt: c4-6jArhReqRtWRBIpEwNg - balrog-fur-linux64-shippable/opt: L70GJQV4TK-owBeXi6llfw - balrog-fur-macosx64-shippable/opt: eSe4OMgKTYS0G9lPwObKjg - balrog-fur-win32-shippable/opt: AyoIv_i-ROyJum7qiOVj1w - balrog-fur-win64-aarch64-shippable/opt: XKKMTVZlS8W9U3AELaBAww - balrog-fur-win64-shippable/opt: U8roOuglQQyMbufxCCAvig - balrog-fy-NL-linux-shippable/opt: JxhlNfDmSBajjDN9gi1LFQ - balrog-fy-NL-linux64-aarch64-shippable/opt: fkAUCPaTQF6AT8V__25eIg - balrog-fy-NL-linux64-shippable/opt: I6dU69qzQcWdd6DFwdFlEw - balrog-fy-NL-macosx64-shippable/opt: TeOrx05LSPyO-TPOTQJyKw - balrog-fy-NL-win32-shippable/opt: CN6r7CIISTKYLueXCGdqvg - balrog-fy-NL-win64-aarch64-shippable/opt: f3kQ33nVShiPE3ArYDFivQ - balrog-fy-NL-win64-shippable/opt: YvHgeb4aQQ-x0OqVM_bZKQ - balrog-ga-IE-linux-shippable/opt: Q7Y_uatCSfmx5KA_a18gzQ - balrog-ga-IE-linux64-aarch64-shippable/opt: ZDEyeHAbTJaHDAyBfNlXvA - balrog-ga-IE-linux64-shippable/opt: acAL3lzSS7ifjOdrNgKxLA - balrog-ga-IE-macosx64-shippable/opt: VXCIpK3nRqi6dmebno6yzw - balrog-ga-IE-win32-shippable/opt: e-ZagpoQSiSyAVkaTtL4fA - balrog-ga-IE-win64-aarch64-shippable/opt: RbXHdsOzTtCxj5ScVu_hfw - balrog-ga-IE-win64-shippable/opt: HN8vwtbiRAObadUL21a-yw - balrog-gd-linux-shippable/opt: VNodUE9vRjqJqu97qelPUw - balrog-gd-linux64-aarch64-shippable/opt: AmL5hI-vQlGkXJidc8NPQA - balrog-gd-linux64-shippable/opt: M7oWGI8oTNqU8xkwIm6Srg - balrog-gd-macosx64-shippable/opt: EA2LX-EbRpGw_gy7L-OVcQ - balrog-gd-win32-shippable/opt: Xcm7XOsBT9KvHZQ6qOJvdQ - balrog-gd-win64-aarch64-shippable/opt: fY6t0dNmSNqO13bLHodrXg - balrog-gd-win64-shippable/opt: KDB9_oxIQg-LVjkr9BB5KQ - balrog-gl-linux-shippable/opt: AqKo9x2uQtePyoE1Ya_2PA - balrog-gl-linux64-aarch64-shippable/opt: QCoZoYQKTyqZpvHOqqGE-Q - balrog-gl-linux64-shippable/opt: WHlKdTnWT8KDWkYxqjrmWQ - balrog-gl-macosx64-shippable/opt: agOGRJvsSoqgVGWQOKuycw - balrog-gl-win32-shippable/opt: DVJOX3uHRtqwTvZ49slsnw - balrog-gl-win64-aarch64-shippable/opt: XVAopVE2Ts-K_XYBM1SSyA - balrog-gl-win64-shippable/opt: AIPRo7EsTsC0l34aZ22GyQ - balrog-gn-linux-shippable/opt: G3Wpm_gGQPSVcNKepAnwQw - balrog-gn-linux64-aarch64-shippable/opt: Bk5Of0DAQBiXI31ZNC35dA - balrog-gn-linux64-shippable/opt: C_nbIQcOTa2XrAlT7mewYA - balrog-gn-macosx64-shippable/opt: A7D_MPj1Qeaagt290ZE1ZQ - balrog-gn-win32-shippable/opt: RLuAbmfFS7qdpqX-9LwzdA - balrog-gn-win64-aarch64-shippable/opt: SliIurCYQJCFaLZZ_NTCbQ - balrog-gn-win64-shippable/opt: YjlZNAT8TMq1reqM-Tg4Tg - balrog-gu-IN-linux-shippable/opt: A4vxPP-VSb-PL9AerNaAJw - balrog-gu-IN-linux64-aarch64-shippable/opt: UMAqFMgpTgeiR2HOG36iLw - balrog-gu-IN-linux64-shippable/opt: L8-hJ_CfRseguJXSu6VlMw - balrog-gu-IN-macosx64-shippable/opt: AdxIGuSHSri9G4VJol1qjw - balrog-gu-IN-win32-shippable/opt: avr1R7qlR8-h63fTgldTow - balrog-gu-IN-win64-aarch64-shippable/opt: EYu-ukuoRGyvS-lwCvZs4Q - balrog-gu-IN-win64-shippable/opt: PpEMXcdKS6yR0W7p4cs0Fg - balrog-he-linux-shippable/opt: TB0hsJcHQsaqfZuUE9lkuQ - balrog-he-linux64-aarch64-shippable/opt: BLpQKC6yRuaM72OAxMQ-Rw - balrog-he-linux64-shippable/opt: dQ6-h7Q_TRyqyrgptNby3w - balrog-he-macosx64-shippable/opt: Ow-syfuOQSGZl4EFgO33wA - balrog-he-win32-shippable/opt: VcYAr_37SA2LUeNrXQyN2A - balrog-he-win64-aarch64-shippable/opt: FDGwXbFCTn61CeBxWHmd6w - balrog-he-win64-shippable/opt: AiSIeQynQxaF61VH7Y2N5Q - balrog-hi-IN-linux-shippable/opt: N_HNnRIPQ5qw1OiakGs1aw - balrog-hi-IN-linux64-aarch64-shippable/opt: NDF5NDAXRwmqcRcAcyDD0A - balrog-hi-IN-linux64-shippable/opt: eWC7MqEEQkuAXuwpscZcOA - balrog-hi-IN-macosx64-shippable/opt: bB3syQGaRVC3f5zBbgCfJA - balrog-hi-IN-win32-shippable/opt: W4DV69sUTxmLpiVfWtOfEA - balrog-hi-IN-win64-aarch64-shippable/opt: HBUkYTNpQhSO6HbIUe75Xw - balrog-hi-IN-win64-shippable/opt: T8DFNGL8TY2c68dQTDT60A - balrog-hr-linux-shippable/opt: Xw1B5R-dQaSe5CBl9FYL4Q - balrog-hr-linux64-aarch64-shippable/opt: exHzSvoIToKnILb8t3JcCQ - balrog-hr-linux64-shippable/opt: JVJKgNKoT-KIG3enQu-_iw - balrog-hr-macosx64-shippable/opt: GdnjtBB6RtOH_AyRMneBpw - balrog-hr-win32-shippable/opt: EHkZ1hcJQ2yBL8rVrtuzHw - balrog-hr-win64-aarch64-shippable/opt: VrEcA4vZTdeTOSkQgjoCFg - balrog-hr-win64-shippable/opt: Dq55BRq-TEWbimqI9DuN7A - balrog-hsb-linux-shippable/opt: XYPnWT-VSMGsO80GwUXZEw - balrog-hsb-linux64-aarch64-shippable/opt: HDL3UrRtQki_ZJMnNDkcfQ - balrog-hsb-linux64-shippable/opt: N60UBpGnRgqW6PIi6TOHcw - balrog-hsb-macosx64-shippable/opt: D77LsnTmTxyqh6TkXhz6rQ - balrog-hsb-win32-shippable/opt: evTb5XBeTZWMkBI_PuB_vQ - balrog-hsb-win64-aarch64-shippable/opt: PNrjR46LQzONWiAPJ7aXsA - balrog-hsb-win64-shippable/opt: RIcVQl4jT7eYwcDlmw2QkA - balrog-hu-linux-shippable/opt: Pwhp5h71Sxa8OAzKUAjVJg - balrog-hu-linux64-aarch64-shippable/opt: KOc-Fc7KSASw0dFldFn6xQ - balrog-hu-linux64-shippable/opt: TfhNHeRgQYSvVhPLzp7sAw - balrog-hu-macosx64-shippable/opt: fIlVI8a5SmCe-wTWQM0Nuw - balrog-hu-win32-shippable/opt: aiL5jA0nTPmJdX-zb2elbQ - balrog-hu-win64-aarch64-shippable/opt: fZllMAvSSDORNaNWPzfYWw - balrog-hu-win64-shippable/opt: F4j6H4ZyRf6ggRlemSoizg - balrog-hy-AM-linux-shippable/opt: AByadhQnSZyQ3SL7668ctA - balrog-hy-AM-linux64-aarch64-shippable/opt: EHOQMRV6SXmbhJD3uF9Ajg - balrog-hy-AM-linux64-shippable/opt: QziuzhK7Q8-UVdrCWmzijw - balrog-hy-AM-macosx64-shippable/opt: QPKpJURxTE6IKN8Q6TPrdA - balrog-hy-AM-win32-shippable/opt: IFGGJeHbSMuouumwQwe4aw - balrog-hy-AM-win64-aarch64-shippable/opt: Hq7QQlQQTbGD8UEKBydc7A - balrog-hy-AM-win64-shippable/opt: V-Vfny1USUOHM-NYNEf5vg - balrog-ia-linux-shippable/opt: BBXDENSlSS-_98TOEx6dIw - balrog-ia-linux64-aarch64-shippable/opt: Xd2FpRjwQx619H08rC5jZQ - balrog-ia-linux64-shippable/opt: CygbqMR4TyCX-GgqrsmrGw - balrog-ia-macosx64-shippable/opt: FR8mShjCRqu2yyW2AioYaA - balrog-ia-win32-shippable/opt: Za3Me5_sRsyRXysLi25L7A - balrog-ia-win64-aarch64-shippable/opt: XAeThFdZTsOrKAiklXJAdA - balrog-ia-win64-shippable/opt: FaIx0rFGSlC_k1O3mUalvw - balrog-id-linux-shippable/opt: Di7a45zZR-uCWB7OXEXagg - balrog-id-linux64-aarch64-shippable/opt: JFBEI37HQ1qfgBc_uamVPQ - balrog-id-linux64-shippable/opt: Z4PAcwNlR8mB-wDV--91Wg - balrog-id-macosx64-shippable/opt: BBjEcI4LRq2boRjjA3k7qg - balrog-id-win32-shippable/opt: BFEKmlWXR0WSb9TopnWDFA - balrog-id-win64-aarch64-shippable/opt: TaB0ikNaRCiJDXYu-RDeHw - balrog-id-win64-shippable/opt: JWAK3S47QgenFt-QmE16ug - balrog-is-linux-shippable/opt: H9eQeUoDS4qsSvVowi-qYQ - balrog-is-linux64-aarch64-shippable/opt: SYLZF3XkTVSgFTOtXcBz3w - balrog-is-linux64-shippable/opt: WfR_MCGOSA6apUaMaj-Bcw - balrog-is-macosx64-shippable/opt: YjUvY2ANS0O27dgvuJhtyA - balrog-is-win32-shippable/opt: bytMgS5LRb6j-pY5vfw3gg - balrog-is-win64-aarch64-shippable/opt: IBOVuywrQcmiGUfcMFfQ5w - balrog-is-win64-shippable/opt: DwqN1hyNSamvbWJsINc_4w - balrog-it-linux-shippable/opt: LmU31GngR2Oy49_9BHSpOw - balrog-it-linux64-aarch64-shippable/opt: XnPWjynFQLChoDnQd7FQ-Q - balrog-it-linux64-shippable/opt: dufC6Z7PQ5eBb0BIwHl1Nw - balrog-it-macosx64-shippable/opt: U2k-n5D7RIuzX6UCgC4pSw - balrog-it-win32-shippable/opt: aa0He9y8SdyXjab5tmh-zA - balrog-it-win64-aarch64-shippable/opt: CkbjGDidRYC7SwhF_LO-ug - balrog-it-win64-shippable/opt: YudjeG0IS4mPOwOQ0RWZlw - balrog-ja-JP-mac-macosx64-shippable/opt: GFzS69UgTG6iCMQ2sVMPNg - balrog-ja-linux-shippable/opt: G9ka2wFWRN2WvtgNE_OvDg - balrog-ja-linux64-aarch64-shippable/opt: d-BjwCEVRfGvvm_cIwkaAw - balrog-ja-linux64-shippable/opt: P932LUkmS8aUQEA8Hn2xOA - balrog-ja-win32-shippable/opt: TrBeFQqSQkeQf-l8z2t30Q - balrog-ja-win64-aarch64-shippable/opt: PoMMNJZeSYGROBsLsukA1A - balrog-ja-win64-shippable/opt: XxiKFaKER_qM6aAOnZ1daw - balrog-ka-linux-shippable/opt: Isu-CQTBTx6c1VVn0AZjwQ - balrog-ka-linux64-aarch64-shippable/opt: S6_5pGNYTtCCdZ2iia8dOA - balrog-ka-linux64-shippable/opt: XdBzqb2QQPKNCB3tUv5tXA - balrog-ka-macosx64-shippable/opt: epH981MlQ9uRZ3EQQMuZdA - balrog-ka-win32-shippable/opt: CDBosiVoQGCPDZ8GRI01hw - balrog-ka-win64-aarch64-shippable/opt: WCY-C5wVSqqpXsQiyGyk0Q - balrog-ka-win64-shippable/opt: bIek0Qx_R3WpmQZ_-uKrhQ - balrog-kab-linux-shippable/opt: O7y0Jk5kQhqh07uHs_0dwQ - balrog-kab-linux64-aarch64-shippable/opt: EUfono8aTqyYNYUG_M05dw - balrog-kab-linux64-shippable/opt: CETV36uAQEGlqiEfSicvcA - balrog-kab-macosx64-shippable/opt: fp3mYkJiQyOzyTWTGwEBRA - balrog-kab-win32-shippable/opt: KaiZQPMGSe2GfwniXqL6Yw - balrog-kab-win64-aarch64-shippable/opt: JB0XTJw9RAmHEsHjhmTK6g - balrog-kab-win64-shippable/opt: UDrLcDDGSySgHy1Iu269GA - balrog-kk-linux-shippable/opt: X5d8RUGdTyiNH4AsmuJvRw - balrog-kk-linux64-aarch64-shippable/opt: LyIlLj7sRgyNEEqu-4PlFw - balrog-kk-linux64-shippable/opt: EUt72ctLSNyTLfKvP4La5A - balrog-kk-macosx64-shippable/opt: AonW16B8QXyw7PlQ9BMo0Q - balrog-kk-win32-shippable/opt: d8uC3nRcReaqtlNj_dEYlA - balrog-kk-win64-aarch64-shippable/opt: WIxQErm9R92r-Y4bCer_BQ - balrog-kk-win64-shippable/opt: D_Lcc9VWRaS1Mno9fnsVnA - balrog-km-linux-shippable/opt: fo1KVrO5ROSG6kho81F1YQ - balrog-km-linux64-aarch64-shippable/opt: CODE0KioTB2i-hvZBptLlg - balrog-km-linux64-shippable/opt: QpUk9PZWTAqCqVLHxVBLTQ - balrog-km-macosx64-shippable/opt: AeP63wRNQVGIowbjdPjY9A - balrog-km-win32-shippable/opt: e33k9md7Qvyd7nLAjeHRhA - balrog-km-win64-aarch64-shippable/opt: WHDjp3VbQVKSzmrHoaXkew - balrog-km-win64-shippable/opt: Br-WfwYtTI26IajvtbL-wA - balrog-kn-linux-shippable/opt: JiVFiHJ_TS2Jktn_xZccHA - balrog-kn-linux64-aarch64-shippable/opt: MaFPtwyHTrOB3M-HZpUMcA - balrog-kn-linux64-shippable/opt: HToBWUbjSSmfRBqqGWQNaw - balrog-kn-macosx64-shippable/opt: My_Z5CE_RXeG4a1pRwRhtQ - balrog-kn-win32-shippable/opt: DxSHFjs9STexQSUhVPioOw - balrog-kn-win64-aarch64-shippable/opt: J9pXL4zMT5KnCLJBrSRqLg - balrog-kn-win64-shippable/opt: M1iT0mULRJ-j71BNcEZTSA - balrog-ko-linux-shippable/opt: TqoFRn7mRR2BtYcIGmFKug - balrog-ko-linux64-aarch64-shippable/opt: Qh3dEBkySVWfezjynrMcrw - balrog-ko-linux64-shippable/opt: fZy0013ERa6qWY9JwKWHnQ - balrog-ko-macosx64-shippable/opt: KwBRtG4dTHWjFk4shmQ6JA - balrog-ko-win32-shippable/opt: Wg2qgH9zQS2Ydv0KVRq_2A - balrog-ko-win64-aarch64-shippable/opt: L_oYOUoySfSztqWNGe6kWA - balrog-ko-win64-shippable/opt: Os6979zIQvGezFyk1fSMDw - balrog-lij-linux-shippable/opt: HSgf_pxHRqW9Vm8PJM-K9g - balrog-lij-linux64-aarch64-shippable/opt: S_BGxbxQTfKFksSN7vL2tA - balrog-lij-linux64-shippable/opt: CWIL-G84RfOD3qYsKr0UoQ - balrog-lij-macosx64-shippable/opt: Gnm3tLu2QYqLmlPuaidzbA - balrog-lij-win32-shippable/opt: DdO9zd04SLyy_yLIregLBQ - balrog-lij-win64-aarch64-shippable/opt: aFi7TQEDQMGwUSygfBpEsg - balrog-lij-win64-shippable/opt: OK0XWYTLRxSDontdTsPoTw - balrog-linux-shippable/opt: EpHk7GIZS1yrqn3j3KgiHw - balrog-linux64-aarch64-shippable/opt: U-7-tmYHQMOEFn5O910eZg - balrog-linux64-shippable/opt: a-J00ZanR7yyn6LCu24G-w - balrog-lt-linux-shippable/opt: dnW3T7kCQgm3DBkl35Pv7A - balrog-lt-linux64-aarch64-shippable/opt: fJWpD51iSJaprr7IWUt8yQ - balrog-lt-linux64-shippable/opt: bC5HRe8vT4O8pt3hqekhXw - balrog-lt-macosx64-shippable/opt: Ej6EX9GOSK2ys1bQHGT0hQ - balrog-lt-win32-shippable/opt: b3E94LuGR-Oy2MI4kD5Yow - balrog-lt-win64-aarch64-shippable/opt: Q18Pt0SHSveAjj-W0UsWbQ - balrog-lt-win64-shippable/opt: WFvh9V9PSACnzPCEsbpIoA - balrog-lv-linux-shippable/opt: LooSzSmCQ1GWSJjKj5HNdQ - balrog-lv-linux64-aarch64-shippable/opt: SkQatgFtTxq-AmTThARWdg - balrog-lv-linux64-shippable/opt: L8bCxvkRTQSvnFMkFrMcPg - balrog-lv-macosx64-shippable/opt: Zeu35nrdSwyiWdOxHg_YSQ - balrog-lv-win32-shippable/opt: CmqhVo4xSqCCUwx-NJJEGA - balrog-lv-win64-aarch64-shippable/opt: XCR-KT68RkqYjpkhutJPtQ - balrog-lv-win64-shippable/opt: FOvcSB66TA-yzP0tmcynaQ - balrog-macosx64-shippable/opt: Yzwiff-2T7mq_o2BMPMZTQ - balrog-mk-linux-shippable/opt: So06Q35BTjW4Pz-1F2pSKA - balrog-mk-linux64-aarch64-shippable/opt: MEWxvZUpTeuRUIFjo0bcOQ - balrog-mk-linux64-shippable/opt: foKa4SjCTzCPWF7XQgWt1Q - balrog-mk-macosx64-shippable/opt: c93p6EIhQvus3yoeS_OrBA - balrog-mk-win32-shippable/opt: SAomKex0Q46E88Eh6xkL6w - balrog-mk-win64-aarch64-shippable/opt: JLkrlpybRwWsHOD4QQo6Gw - balrog-mk-win64-shippable/opt: CoyCV1OQTo6zJCJZOYPYxw - balrog-mr-linux-shippable/opt: AMFTB_fgSqCAuFSl8H-0oQ - balrog-mr-linux64-aarch64-shippable/opt: eDjyEPGOREGswD64NWrq6A - balrog-mr-linux64-shippable/opt: BX8caK4wT4iqr-qZh0EVtQ - balrog-mr-macosx64-shippable/opt: d8l7cCM5RO25H0Ph2b7Kww - balrog-mr-win32-shippable/opt: VHTo8WEWSTuKzxdJ2e2K9g - balrog-mr-win64-aarch64-shippable/opt: Wm521n6sSIGymHE3OMzjWA - balrog-mr-win64-shippable/opt: CyJTpmJIR4WvVwer0hVpJQ - balrog-ms-linux-shippable/opt: SvbfhW7qRUCmuCpAfxvtKA - balrog-ms-linux64-aarch64-shippable/opt: CWULsrXdQ5KghZYbvkBLRQ - balrog-ms-linux64-shippable/opt: eQ7eA_-LQsmwOiQ2PCBfIA - balrog-ms-macosx64-shippable/opt: aAsKL459Qc60gXnh_R1fOg - balrog-ms-win32-shippable/opt: Uu_NrsZfRmGUMuQdjc_j_Q - balrog-ms-win64-aarch64-shippable/opt: TB_e_VANTZWZTGuagLFqBA - balrog-ms-win64-shippable/opt: aQq_7v4pQnq5QKfelUIcxg - balrog-my-linux-shippable/opt: RyeXAwBzTdO6edWQtCxiJg - balrog-my-linux64-aarch64-shippable/opt: PHx0dUQYS0GvjMs9P8MwSA - balrog-my-linux64-shippable/opt: bB--uSxFSD619NETSv1T0A - balrog-my-macosx64-shippable/opt: eL_OYX4YTKKzLTGWoHzURA - balrog-my-win32-shippable/opt: RsorznbtT0i45RJTWSYF0w - balrog-my-win64-aarch64-shippable/opt: Z8fITHQLQhSw-XFeY4Rsqg - balrog-my-win64-shippable/opt: W4bqf9mbTySVQ8a4rTrQZg - balrog-nb-NO-linux-shippable/opt: SOx5G54jSs-r6wbnFlPEDQ - balrog-nb-NO-linux64-aarch64-shippable/opt: YK9Z7sItSWyjcSk8uMxOTQ - balrog-nb-NO-linux64-shippable/opt: ZE_g_jrPQ9OxPKhyp0AzYw - balrog-nb-NO-macosx64-shippable/opt: eGMBR9yGQDKIU8_HIRgWeQ - balrog-nb-NO-win32-shippable/opt: CMnK6OIZTb6nUa5-_2fFtw - balrog-nb-NO-win64-aarch64-shippable/opt: Nb-wtlsPTeaiw09CiyQ5qA - balrog-nb-NO-win64-shippable/opt: WCT86dEwTymialMdNFf5jA - balrog-ne-NP-linux-shippable/opt: LIf24g-RQhiM1MGj9s7aIw - balrog-ne-NP-linux64-aarch64-shippable/opt: TTTKFcUdSsyOnu7R9NrUhA - balrog-ne-NP-linux64-shippable/opt: b7X2E-daTQmkeB-1CrSg6g - balrog-ne-NP-macosx64-shippable/opt: LqajPAKQRpiHlR8uSq8NHQ - balrog-ne-NP-win32-shippable/opt: Sbiuefc5S1eCG9FVO3gUSA - balrog-ne-NP-win64-aarch64-shippable/opt: VtHqIIvPRK2MQA_IN2ZSug - balrog-ne-NP-win64-shippable/opt: UxhGkFQnQpmf8x_C3QsNog - balrog-nl-linux-shippable/opt: PClY03fqS2ShSfGO0bbdig - balrog-nl-linux64-aarch64-shippable/opt: ef2U4jSHTqO9vcPWjTknfA - balrog-nl-linux64-shippable/opt: PEaOgTldR7imVuUR6iq_tA - balrog-nl-macosx64-shippable/opt: IXs1AF_vQSqUefW3W6kUkg - balrog-nl-win32-shippable/opt: UyHKEZPyQlu31ou297tDcw - balrog-nl-win64-aarch64-shippable/opt: LWk1pqFLS3SdXcTTJWq7Pw - balrog-nl-win64-shippable/opt: BulBzZAUSY2iXOqBoobsOQ - balrog-nn-NO-linux-shippable/opt: L-i7F7hJQR-D1lmYH1l00g - balrog-nn-NO-linux64-aarch64-shippable/opt: Ljvz7ErPRVqwX34f_AHMMg - balrog-nn-NO-linux64-shippable/opt: MtLXAOcjRnGIxEG-ojrajg - balrog-nn-NO-macosx64-shippable/opt: Ge_Px4OFQPqqnVmP1mkrjg - balrog-nn-NO-win32-shippable/opt: D1WhCqlyRPiOdd5aaXYrKw - balrog-nn-NO-win64-aarch64-shippable/opt: Q9qJjImRSZi2bAId6CsFew - balrog-nn-NO-win64-shippable/opt: M8Lxx5dBRK-TNRn5BOciwA - balrog-oc-linux-shippable/opt: f3Z-NXboSb2I1xRiztosDw - balrog-oc-linux64-aarch64-shippable/opt: Ud7aV-0ETjmUK-_bcVFIog - balrog-oc-linux64-shippable/opt: NRvudwFIQu2EMiZCV5A3CA - balrog-oc-macosx64-shippable/opt: Tu6DRrrjQ5yIcdJFYTd94w - balrog-oc-win32-shippable/opt: POujK-tfRMS1K09l0x9_3Q - balrog-oc-win64-aarch64-shippable/opt: E5RxiU7GRnmbAki8Vhl5OQ - balrog-oc-win64-shippable/opt: An6oNSEPRc-houdojApP6w - balrog-pa-IN-linux-shippable/opt: KDqOU-EqQ5earZS3L13hVA - balrog-pa-IN-linux64-aarch64-shippable/opt: KmNSTznSS4SXLC9AQhbQiA - balrog-pa-IN-linux64-shippable/opt: UwylSiW2S9i0ntXheK0jdw - balrog-pa-IN-macosx64-shippable/opt: Y5gihwFgSSC4HbJt4zZgAA - balrog-pa-IN-win32-shippable/opt: LmTHURIcTlSLOXQgHzb2hA - balrog-pa-IN-win64-aarch64-shippable/opt: KX8QWVsDTsaAcF1pBaXirQ - balrog-pa-IN-win64-shippable/opt: exPebRooS2-MgqNBOSGDKw - balrog-pl-linux-shippable/opt: DjVpXQ_kSQCrfxZFWmW2nA - balrog-pl-linux64-aarch64-shippable/opt: D_UWUMhHT8qlZqKs3aKHWA - balrog-pl-linux64-shippable/opt: PFkkY9vQSsuyl_VjWaZn5Q - balrog-pl-macosx64-shippable/opt: Tll-cw1gQbKSaL6qsx2N_Q - balrog-pl-win32-shippable/opt: fLDJPsRIRuGnkx3XcR-hkg - balrog-pl-win64-aarch64-shippable/opt: GBawT_EwQwSHhLj_GBaerw - balrog-pl-win64-shippable/opt: WzA1iOSpQGu6rUofmbjIYg - balrog-pt-BR-linux-shippable/opt: OUj-acTTRpCe9Iy5zlphcw - balrog-pt-BR-linux64-aarch64-shippable/opt: OvmCKA3CTs-1mMiuzuASDQ - balrog-pt-BR-linux64-shippable/opt: CCZv10zER4yyvMu5Jr2qGA - balrog-pt-BR-macosx64-shippable/opt: a42oXmqKQ9K0iAA_PkBbnA - balrog-pt-BR-win32-shippable/opt: TmTW_WQ3QF68oQ8Ov7c41A - balrog-pt-BR-win64-aarch64-shippable/opt: fiiOvOr1QAW-TpzacKaiWQ - balrog-pt-BR-win64-shippable/opt: Qs3cVGW8QuuLBBJYoK6bQg - balrog-pt-PT-linux-shippable/opt: L3xcghMkRzGxbMr3JRG83w - balrog-pt-PT-linux64-aarch64-shippable/opt: LUjPrbfJQNykY1hepZUJGQ - balrog-pt-PT-linux64-shippable/opt: STeX6slJSoGWeTor_rIqhw - balrog-pt-PT-macosx64-shippable/opt: d4X9UY1cR027K6aAKT3_ng - balrog-pt-PT-win32-shippable/opt: WZObdNyXSsCjo7aYWgxXEQ - balrog-pt-PT-win64-aarch64-shippable/opt: Skm__ybXQ0ecJmmWXLFm_A - balrog-pt-PT-win64-shippable/opt: A1niIEIvSJaVLIKZwksYwA - balrog-rm-linux-shippable/opt: J-yO1wCeSWufT46DZ_8s5w - balrog-rm-linux64-aarch64-shippable/opt: MC-WulPHTQWtFIOYKqNrWA - balrog-rm-linux64-shippable/opt: CcGQe0nDTFmyOnmYPI4Mtg - balrog-rm-macosx64-shippable/opt: bXKSxb7mQp6mYUnoZjdZEA - balrog-rm-win32-shippable/opt: eJXqO9hKQZ2nmFL-fMG9Kw - balrog-rm-win64-aarch64-shippable/opt: PI31BLBlQMepOJuNsSuecg - balrog-rm-win64-shippable/opt: Qu95sXNjTbikiCAM6wQ-Pw - balrog-ro-linux-shippable/opt: FEkeN4VYReWLPnmPaG8IHg - balrog-ro-linux64-aarch64-shippable/opt: TKiGeWS8SUuHcoYtkWh9jA - balrog-ro-linux64-shippable/opt: INFp4isQTwy7vzsMlIL7jA - balrog-ro-macosx64-shippable/opt: HW0puSswSnaIsP6KVC6ktA - balrog-ro-win32-shippable/opt: Yqg268e9Rx-li46pADgORQ - balrog-ro-win64-aarch64-shippable/opt: PaAn9nRHS2uDPmVfMJg0Ow - balrog-ro-win64-shippable/opt: PhA0Ac4lSQGkHQyQ3FE0dg - balrog-ru-linux-shippable/opt: CuIwYpyiQmade_FgqG9gew - balrog-ru-linux64-aarch64-shippable/opt: YejU5iE_TNqTNjm_ld8lPQ - balrog-ru-linux64-shippable/opt: Ghe6SLJxQuKoOqAq4Lnd-Q - balrog-ru-macosx64-shippable/opt: TojcSqmpQ0idip8_wz3_Zw - balrog-ru-win32-shippable/opt: LK4YtFbaQeisbSOTkiFJ7w - balrog-ru-win64-aarch64-shippable/opt: KGP5c5yFQfa-lG3gvKjyBw - balrog-ru-win64-shippable/opt: X36OBJDGRCCCXWxpIvQzVA - balrog-sat-linux-shippable/opt: TT538LcZRFitbp8Ai5P7Wg - balrog-sat-linux64-aarch64-shippable/opt: FgVNdnq2SMemlJhttBuDeg - balrog-sat-linux64-shippable/opt: DGxj_MSzQ_O5NTLSJZsNAA - balrog-sat-macosx64-shippable/opt: HHjbf6qZR62jS5_q8lRlCg - balrog-sat-win32-shippable/opt: ZRmwwMMBT022ib-uHOOeCw - balrog-sat-win64-aarch64-shippable/opt: T3tO1VbASUmKAS6qkUqCUg - balrog-sat-win64-shippable/opt: dx4GJO4kTJ2lZUAO5kq-qA - balrog-sc-linux-shippable/opt: MXGND2M-SJKKhNrKjxNoCg - balrog-sc-linux64-aarch64-shippable/opt: NquW_krVR96uVzAGbdlxhA - balrog-sc-linux64-shippable/opt: IDzD2kieQm61LYeWX8XluA - balrog-sc-macosx64-shippable/opt: SklOheRMT1C-PvqTh4aI6g - balrog-sc-win32-shippable/opt: dhJ8l5OeSxaPTlK5V2cWpg - balrog-sc-win64-aarch64-shippable/opt: Un2H-e6YSdiqRIzFlz9xiA - balrog-sc-win64-shippable/opt: dBlcfEtHTJykBsNN7gDtNw - balrog-sco-linux-shippable/opt: AYdAJJNqQJSC3X89K7TYZQ - balrog-sco-linux64-aarch64-shippable/opt: Zz90zY3vTE-G3vwxOVOBpA - balrog-sco-linux64-shippable/opt: HVewtMXvSsW4ua-b0zW_PA - balrog-sco-macosx64-shippable/opt: PRkajtdESfS76u1HS5WWJA - balrog-sco-win32-shippable/opt: UF9dzdapTbSA71U5TK-5FA - balrog-sco-win64-aarch64-shippable/opt: CdEwIfEtTGGnteWcE-eOvw - balrog-sco-win64-shippable/opt: PIKdU50FQISGW_UYu84T6g - balrog-si-linux-shippable/opt: AcVKOJMMSZunEGvkr5DlSQ - balrog-si-linux64-aarch64-shippable/opt: HSAQJEoOSDuADuRy1mAMgg - balrog-si-linux64-shippable/opt: Vsqx4sHvSCKY1O1P4zHtmA - balrog-si-macosx64-shippable/opt: RjeIpxZ1RQq671r48dO2VQ - balrog-si-win32-shippable/opt: U5-V109ARKqkRvkBTHAQFw - balrog-si-win64-aarch64-shippable/opt: B8rT14z1RWin0oCB8gHTTA - balrog-si-win64-shippable/opt: ZLM-0Z0PR_-80SxR8mfA2A - balrog-sk-linux-shippable/opt: DOw-Qc1GQeaHBeZy_NmCXQ - balrog-sk-linux64-aarch64-shippable/opt: JTqc2YLuSEmwI3OBWP26nQ - balrog-sk-linux64-shippable/opt: PULUjDKkQ1ul49AOyCmJGQ - balrog-sk-macosx64-shippable/opt: WV3TyESIQl2LobRPXxHWog - balrog-sk-win32-shippable/opt: Dp_DmthsToqz0TshyFlWkw - balrog-sk-win64-aarch64-shippable/opt: f88ElkC4RzSwreVhMx7QSA - balrog-sk-win64-shippable/opt: QnB1WZhqQvCQl8FUzVQTlg - balrog-skr-linux-shippable/opt: CvoSz2A2S4Ox3QpBsfnAbw - balrog-skr-linux64-aarch64-shippable/opt: HFG7mmfgRHqoFE8V34frTQ - balrog-skr-linux64-shippable/opt: MUIscQrhQ422O55MY6VcSA - balrog-skr-macosx64-shippable/opt: L8uctu2pQQqB_qbK4o6WdA - balrog-skr-win32-shippable/opt: dLGeYzPTSsSFGDtn7qwaGA - balrog-skr-win64-aarch64-shippable/opt: dBN1A8PpQD6zzkjLT8GfNQ - balrog-skr-win64-shippable/opt: EOiFW4gVQaOoiavPfcBHpg - balrog-sl-linux-shippable/opt: cE2hcrzfRc20wzi2ObHH2Q - balrog-sl-linux64-aarch64-shippable/opt: Zf0fStvTRDm08hWIwML7FA - balrog-sl-linux64-shippable/opt: PGdgaqetTEOESC-wG_xmcA - balrog-sl-macosx64-shippable/opt: KaN055EyT3KW2sJ5K0Xn_w - balrog-sl-win32-shippable/opt: Lov-7QoFSQ6hZk7HgSXXUQ - balrog-sl-win64-aarch64-shippable/opt: G6qX3uoyTYSPry5KnUJzJw - balrog-sl-win64-shippable/opt: TB7tkoZOQlGOljnGYkxoJQ - balrog-son-linux-shippable/opt: fr-H2CUASyG4-gwnrFkgWA - balrog-son-linux64-aarch64-shippable/opt: AAv0B1BXT_myhbo1le1DzQ - balrog-son-linux64-shippable/opt: KDBToCQaQDu-zl2bwfDLIg - balrog-son-macosx64-shippable/opt: Ev6uonx7SLqISo7srRStpQ - balrog-son-win32-shippable/opt: ZzDtiiKuSgK8oIb4CDP0Tg - balrog-son-win64-aarch64-shippable/opt: eulYMQubQUWYJDBktSQgrQ - balrog-son-win64-shippable/opt: aJaDux7WQuiPP5n8p8hFHA - balrog-sq-linux-shippable/opt: NMaL0XgRSZK3qoHFJV-igQ - balrog-sq-linux64-aarch64-shippable/opt: MnxjuwJRS_6wr5RKjJK7tQ - balrog-sq-linux64-shippable/opt: esa6LGyWSJqhVGFUQ7qJ-g - balrog-sq-macosx64-shippable/opt: EgNoRe8FTbqneKaNBits3w - balrog-sq-win32-shippable/opt: ABMMp_g5SLSLfyNBj1r00w - balrog-sq-win64-aarch64-shippable/opt: FY1BbmLbRMW7e0GhdiSi_g - balrog-sq-win64-shippable/opt: eds6t2AzQoSl72EOBB1cgw - balrog-sr-linux-shippable/opt: LcF__474ScmHgdwpwUg6_g - balrog-sr-linux64-aarch64-shippable/opt: CP64ovX0T8625nOP1PCrrw - balrog-sr-linux64-shippable/opt: KgACb58iRsuezOntMj_yZw - balrog-sr-macosx64-shippable/opt: JoLEtkieQwu9EN9d8FjpsA - balrog-sr-win32-shippable/opt: bO68dCRRRTiS-gjhibc1qQ - balrog-sr-win64-aarch64-shippable/opt: CAbLaEfpTD6fPScym4adtQ - balrog-sr-win64-shippable/opt: VYLBVoxQRSWpXoMCwPJJJA - balrog-sv-SE-linux-shippable/opt: NEo69S92R6iAonxNkQLpaA - balrog-sv-SE-linux64-aarch64-shippable/opt: WpMCpLBURhuowHpG5QkVWQ - balrog-sv-SE-linux64-shippable/opt: cSYrvEhRR6m0hSb484_H3Q - balrog-sv-SE-macosx64-shippable/opt: B60wMMbqQoevuXt8m1btpw - balrog-sv-SE-win32-shippable/opt: SbzYQUlUQbmJKDhnMxOy5w - balrog-sv-SE-win64-aarch64-shippable/opt: Y2jZ1iESTuCohP6nSDf6MA - balrog-sv-SE-win64-shippable/opt: Qlnq6-MeQ5ukfCfBkVbbWw - balrog-szl-linux-shippable/opt: Wc7kr9ZdRNezDypGYyuYhA - balrog-szl-linux64-aarch64-shippable/opt: QERoTeGwQ_6G3TvYTzBXXg - balrog-szl-linux64-shippable/opt: UJ1N2Xx8QjmGs5U1gZHZag - balrog-szl-macosx64-shippable/opt: WUWcwzX7R2a8pXd7L-VRWg - balrog-szl-win32-shippable/opt: LsALfRSHR12qC183xaR8Zg - balrog-szl-win64-aarch64-shippable/opt: ORYN63r1SB6coV0EdwDSCQ - balrog-szl-win64-shippable/opt: cXOnXQIXR_umU2ZDG16M1A - balrog-ta-linux-shippable/opt: LcPc1gFSTtijktWokcOmQA - balrog-ta-linux64-aarch64-shippable/opt: VCKbHV7NQsGJmZSoqeBYsQ - balrog-ta-linux64-shippable/opt: eyu1TTsTSV-GI1-bxOzX4w - balrog-ta-macosx64-shippable/opt: OYP2roEZQPaKpaJQllXXvA - balrog-ta-win32-shippable/opt: EtdQc-coSBGLThdz88XQ5w - balrog-ta-win64-aarch64-shippable/opt: aDWNsXLxRaapqHNJC-72cg - balrog-ta-win64-shippable/opt: BcWZd3t8Qg68mP-l7au38Q - balrog-te-linux-shippable/opt: VOwOTKzbQqiyTAzNIrSRsw - balrog-te-linux64-aarch64-shippable/opt: Ywhdqu00TO-BLbBUa_fAAw - balrog-te-linux64-shippable/opt: Zqwx84RbRySrAE9kYcLQpg - balrog-te-macosx64-shippable/opt: RWtpa8TKQGS7HUSqffA4eA - balrog-te-win32-shippable/opt: Dob8bnMFTd-3U9bonup_uw - balrog-te-win64-aarch64-shippable/opt: MjqCG6U2RuKz4Ommn8AAtQ - balrog-te-win64-shippable/opt: I0fOgbTVRyW3oQn4A_vD1Q - balrog-tg-linux-shippable/opt: XSZt8fc2QCK2L5aL_F15WQ - balrog-tg-linux64-aarch64-shippable/opt: XmOGQ6ypR3qtypZ45La4Wg - balrog-tg-linux64-shippable/opt: XvxR8FCASsKfy03f2UrB0Q - balrog-tg-macosx64-shippable/opt: SjmGLdy7Qr2dpLKvBlmaew - balrog-tg-win32-shippable/opt: B9HSmgk1SLux72ZloMYTlA - balrog-tg-win64-aarch64-shippable/opt: evlnN9I2SDuYbJ8GNZFPiQ - balrog-tg-win64-shippable/opt: KiZ4abmsQV6op_fWN7INAg - balrog-th-linux-shippable/opt: fr-DBtG9S-qI0UBdF-3nQg - balrog-th-linux64-aarch64-shippable/opt: Dj4Qm14BTSq9mqTfOKHUvw - balrog-th-linux64-shippable/opt: P7WVH84YTwGnYxjWMGzJRw - balrog-th-macosx64-shippable/opt: DdQUpXmnSf2kQsCmgo8v6g - balrog-th-win32-shippable/opt: IJCw3N5bS2Sl-RMacJZjhg - balrog-th-win64-aarch64-shippable/opt: IZbvKBceRGWkSeKfF8AGpA - balrog-th-win64-shippable/opt: f88U-bgfT_Cez8B0hfgRgQ - balrog-tl-linux-shippable/opt: GMYVIUoISRSLvgvYYqIX2g - balrog-tl-linux64-aarch64-shippable/opt: U4l46rumT7uiKwxfJoX_Ag - balrog-tl-linux64-shippable/opt: BdmW0KScQ0S6q7JXB_X5hA - balrog-tl-macosx64-shippable/opt: BQx9YsOmQRis1Y7JhAAL0A - balrog-tl-win32-shippable/opt: SxJChsvDQEK6M_k3KgcL5w - balrog-tl-win64-aarch64-shippable/opt: H7qmRXOPQ5OY43EaG2tQPw - balrog-tl-win64-shippable/opt: blZIhVWfSB2f50AMjccSmA - balrog-tr-linux-shippable/opt: PoQuN8tKSo6D7VwzSc2U5w - balrog-tr-linux64-aarch64-shippable/opt: OBBD_T41T7airISZJAZbqg - balrog-tr-linux64-shippable/opt: JzuGu7GjTOSoLQrOpiEJZg - balrog-tr-macosx64-shippable/opt: XV3tKly5SzS1SjsHMptcQQ - balrog-tr-win32-shippable/opt: N7UK07TfSjWpkMbpwAyShg - balrog-tr-win64-aarch64-shippable/opt: aOAqjltVR0eA9Ie0c2RZsw - balrog-tr-win64-shippable/opt: FoMcs3APQNCA6MEVHTi2qg - balrog-trs-linux-shippable/opt: J09bfwmgRM6AYX6OGNW8jg - balrog-trs-linux64-aarch64-shippable/opt: FibNgrQ3QsyjJ-ZpXtj0nw - balrog-trs-linux64-shippable/opt: AiiOtuKfQcKreuVg60me4w - balrog-trs-macosx64-shippable/opt: RnRksSBzTaa5VYxj8NIwVw - balrog-trs-win32-shippable/opt: DoYM2Kv7QMGQMN6Hd9jbeQ - balrog-trs-win64-aarch64-shippable/opt: XD4PogaGQ42jqSyN3aQ7zg - balrog-trs-win64-shippable/opt: CPLlUL4-T3m1Dto326qMuQ - balrog-uk-linux-shippable/opt: L0BIygvrSSqJrNiF-QO7bA - balrog-uk-linux64-aarch64-shippable/opt: frmw-VC6TK2mXdS__rxiPw - balrog-uk-linux64-shippable/opt: TIpjZVQxQEa8e3JPI2L_gA - balrog-uk-macosx64-shippable/opt: S2g5EloFRsWNhIZaVuMV2w - balrog-uk-win32-shippable/opt: LfrniBYeQuOn7C6-mx5rIQ - balrog-uk-win64-aarch64-shippable/opt: Xu15iqA7RWiRShRJq2m9qw - balrog-uk-win64-shippable/opt: Blld9OvUQhm6Vjkb8DG9hw - balrog-ur-linux-shippable/opt: W_Mhr1dwRQqStr4vckAMew - balrog-ur-linux64-aarch64-shippable/opt: fF05n_ZlTkuo0_EeHwfvXA - balrog-ur-linux64-shippable/opt: UG2ApOt9RzqBRTy_6yQ77Q - balrog-ur-macosx64-shippable/opt: XmF06DmSTnmCxbLYl3pBaQ - balrog-ur-win32-shippable/opt: D9v2ur-dR9ClydhwaC9IVg - balrog-ur-win64-aarch64-shippable/opt: IzrkrG94S4KjS99Vt360xA - balrog-ur-win64-shippable/opt: fpFyOlowQuWPyTwYo4CEVw - balrog-uz-linux-shippable/opt: M0oDfAYzSWSWTcUUU1T1nw - balrog-uz-linux64-aarch64-shippable/opt: YPWkfTPsS2ysdioJGgczDg - balrog-uz-linux64-shippable/opt: XuLCddnbQc2HC05aVk71Rw - balrog-uz-macosx64-shippable/opt: Rh8dP9EXQ86chYVPS1UqpQ - balrog-uz-win32-shippable/opt: fpg0Nj1HQQal_El3AiwsLg - balrog-uz-win64-aarch64-shippable/opt: SC-9h5SxRlyBW2eB8Fi_RA - balrog-uz-win64-shippable/opt: OOmwEuduSXmLtEmkCy09Hg - balrog-vi-linux-shippable/opt: Dvr25WVDRWG3Bmpqtb8WFg - balrog-vi-linux64-aarch64-shippable/opt: fvubNwsqTV2E1AU1JEa6lg - balrog-vi-linux64-shippable/opt: ViKirAoEQ5-QVvsBCMrS7w - balrog-vi-macosx64-shippable/opt: Yifk9JvlQkWeeBQAJhAsBA - balrog-vi-win32-shippable/opt: eTFMJYDJQVOmJ1W2BqO9Cw - balrog-vi-win64-aarch64-shippable/opt: PLSh-M86T2G7jasFouNd5g - balrog-vi-win64-shippable/opt: e3HSxq9SSG2eSLlPjviJEA - balrog-win32-shippable/opt: fdH6X4v_SCyJpMPpbdXQfA - balrog-win64-aarch64-shippable/opt: Wyjq9NPqQVClDItSaXXSDA - balrog-win64-shippable/opt: ejsTX0ufQMm8xeOB_0dcCQ - balrog-xh-linux-shippable/opt: d4LNMD6XQP-76mz7l1vFoA - balrog-xh-linux64-aarch64-shippable/opt: DklQMPA_QGGXlG4HniNMLA - balrog-xh-linux64-shippable/opt: YSUBwPGtQ4mtnfU68ZszDw - balrog-xh-macosx64-shippable/opt: CEXGgp_xRoKV36vgI-3m6A - balrog-xh-win32-shippable/opt: L_mGIt6BTjK2lK30659wvA - balrog-xh-win64-aarch64-shippable/opt: V1n_iS4VSWSYtn5v_BGaaA - balrog-xh-win64-shippable/opt: UFmN-FlsQNqMohF_KinPIw - balrog-zh-CN-linux-shippable/opt: UvqNQ5JGQMaspV5el2o1qw - balrog-zh-CN-linux64-aarch64-shippable/opt: BI3nNUzaRHGx7HDwf9F6TA - balrog-zh-CN-linux64-shippable/opt: HHOtZHF-R3SuXkz6rw3vYA - balrog-zh-CN-macosx64-shippable/opt: emufztUIT6a-6wsjeFQZUg - balrog-zh-CN-win32-shippable/opt: f1QJuTQoQ2GGJlmTPM3cMA - balrog-zh-CN-win64-aarch64-shippable/opt: W3sol8e_RCqtz0lp4RgVGQ - balrog-zh-CN-win64-shippable/opt: b4eEbSt3RnKBOg_pEjdXqA - balrog-zh-TW-linux-shippable/opt: FiU8De0_QJa0QYRrB0ug0g - balrog-zh-TW-linux64-aarch64-shippable/opt: C8DJCN01Qy21DpXq4Z-NXA - balrog-zh-TW-linux64-shippable/opt: HTP6rMOWTTmM9lIpN2whFw - balrog-zh-TW-macosx64-shippable/opt: U5VV7k00QN-VFwJhnXvyyw - balrog-zh-TW-win32-shippable/opt: M4hcIMReQ7asuUcDDKFzwg - balrog-zh-TW-win64-aarch64-shippable/opt: dItQ-WBBTe6zV46ip33VDA - balrog-zh-TW-win64-shippable/opt: aZTzhHGDSoePitjEo0hmtw - beetmover-checksums-ach-linux-shippable/opt: Ma82oTq3TDOaI770IzV40A - beetmover-checksums-ach-linux64-aarch64-shippable/opt: HCK9w_sZS9yJUbCv9xY-bA - beetmover-checksums-ach-linux64-shippable/opt: d_PnrDa8TJawHb1riw_xIA - beetmover-checksums-ach-macosx64-shippable/opt: J6C-k1ZfQjGDPbCMUBK1bw - beetmover-checksums-ach-win32-shippable/opt: QyZ23B8hTkiTVxEUC-yLMQ - beetmover-checksums-ach-win64-aarch64-shippable/opt: Bvs_xUoYRyO25EfL3LZwCQ - beetmover-checksums-ach-win64-shippable/opt: aQY6KMBHRhOvWYOFj5fZ-Q - beetmover-checksums-af-linux-shippable/opt: eA4RuJPiQKewPbjTCJ9CpQ - beetmover-checksums-af-linux64-aarch64-shippable/opt: UTk8egHeQeuHu-wlLxWQYQ - beetmover-checksums-af-linux64-shippable/opt: XJWmXNFcRPugLqcCC2fhrw - beetmover-checksums-af-macosx64-shippable/opt: MrNyQ-r_RWO05u2ZeQ5glQ - beetmover-checksums-af-win32-shippable/opt: WwbzjodJQp6jjogolhP88Q - beetmover-checksums-af-win64-aarch64-shippable/opt: MxVX7wY2Skq54408j7yrZQ - beetmover-checksums-af-win64-shippable/opt: ZDy3NwMoQNWj0qIIjipt7A - beetmover-checksums-an-linux-shippable/opt: S8yAA1zZRPKo-Mr0Y5AXNA - beetmover-checksums-an-linux64-aarch64-shippable/opt: RHMaHVidSNKhM-ixFXXT0A - beetmover-checksums-an-linux64-shippable/opt: Ja30GDO8SaG_Kc5EuHqDlg - beetmover-checksums-an-macosx64-shippable/opt: JLDfJbyrTVayqafY0H8Nrw - beetmover-checksums-an-win32-shippable/opt: OpfwsZA9QR2aoyvnJ4iTlQ - beetmover-checksums-an-win64-aarch64-shippable/opt: HeLghXSbQQq-H_fhKCOeCw - beetmover-checksums-an-win64-shippable/opt: bG2abPg_QrqFWydM3H8QQA - beetmover-checksums-ar-linux-shippable/opt: XQtTHwgbSVO2a5Mtr8vPww - beetmover-checksums-ar-linux64-aarch64-shippable/opt: eYE9nEbqQICN7e7S0iuR2A - beetmover-checksums-ar-linux64-shippable/opt: S2TRWQ7cQKeY24ABEDjSnA - beetmover-checksums-ar-macosx64-shippable/opt: CToEJzw5TeynGftybgsqZg - beetmover-checksums-ar-win32-shippable/opt: PSwMpi55Q6OLcqwspDZHGg - beetmover-checksums-ar-win64-aarch64-shippable/opt: SSq_tWwlSKi0jYplZxxz6w - beetmover-checksums-ar-win64-shippable/opt: ZcU9TPzgQX2tYWpaWCE0ww - beetmover-checksums-ast-linux-shippable/opt: fUJW0ioFRSiu1sMJOPcLig - beetmover-checksums-ast-linux64-aarch64-shippable/opt: CquAJY5sQEGR4o5fCb1CeQ - beetmover-checksums-ast-linux64-shippable/opt: dT2k_huEQiGqwzLG6UaeKw - beetmover-checksums-ast-macosx64-shippable/opt: aYw9vrNjQCGYOwHJue6U2g - beetmover-checksums-ast-win32-shippable/opt: Jj7DkyLgTWuIV4yskGz_dA - beetmover-checksums-ast-win64-aarch64-shippable/opt: Bk6cn--GQXKnA5ZGguF8uw - beetmover-checksums-ast-win64-shippable/opt: T2zkKRzxRky739hfHJ9JAg - beetmover-checksums-az-linux-shippable/opt: ByZASN0eS5iC7F-Y_Gs0Ig - beetmover-checksums-az-linux64-aarch64-shippable/opt: Cgbr18ufRHScIziXdP6ayQ - beetmover-checksums-az-linux64-shippable/opt: Asw2jQsXSd-3UmGxtI7MXg - beetmover-checksums-az-macosx64-shippable/opt: D3SmH4K0QNWAeaW748x6ow - beetmover-checksums-az-win32-shippable/opt: T6KxhjcaTZ69PGiff8uh5Q - beetmover-checksums-az-win64-aarch64-shippable/opt: NJHycOjsQ6KxD2Vj7GhSmA - beetmover-checksums-az-win64-shippable/opt: LrSGe5TCSQOiXpCe_433Aw - beetmover-checksums-be-linux-shippable/opt: cOnNp3l9S_ejKMRbZ1ZB8w - beetmover-checksums-be-linux64-aarch64-shippable/opt: MN0qxXiOS3Swq-gdzJN0VA - beetmover-checksums-be-linux64-shippable/opt: Pk2V2x-nRraxB12SeoVaUw - beetmover-checksums-be-macosx64-shippable/opt: CJaOQrn2RIiEs4hUsu_7Vw - beetmover-checksums-be-win32-shippable/opt: KAHbD6E3Qqe8x2wEX99s-w - beetmover-checksums-be-win64-aarch64-shippable/opt: OfzAjNj9TyKQZIVCferTMQ - beetmover-checksums-be-win64-shippable/opt: WtjPPXanRM2ihBY_cpWRNA - beetmover-checksums-bg-linux-shippable/opt: NaxZgzdVRsyo-nLxy8uyOQ - beetmover-checksums-bg-linux64-aarch64-shippable/opt: BFRMzdUtQEyV9B1pnetKwA - beetmover-checksums-bg-linux64-shippable/opt: UmJSNRGwTFOLx3mToFNa_w - beetmover-checksums-bg-macosx64-shippable/opt: bqjFqfM3QcKwZ06CLEFgEQ - beetmover-checksums-bg-win32-shippable/opt: YbwPPAmaTbCaSGclrbSWXQ - beetmover-checksums-bg-win64-aarch64-shippable/opt: NnuOW-WmSbW8VegPr3Na5w - beetmover-checksums-bg-win64-shippable/opt: PrYP5jMdRySpubhjIicg8Q - beetmover-checksums-bn-linux-shippable/opt: AIbc_gWfS8idfPshRL2GHA - beetmover-checksums-bn-linux64-aarch64-shippable/opt: RBPs9gdKQnG2DAoAWEhfow - beetmover-checksums-bn-linux64-shippable/opt: IzwGY3oQTOqFA-1jzUpKlA - beetmover-checksums-bn-macosx64-shippable/opt: VDc_TzC6TfS7DO_nmhubVw - beetmover-checksums-bn-win32-shippable/opt: P9sgLM62SlGByOo8LoyaNQ - beetmover-checksums-bn-win64-aarch64-shippable/opt: XQKNzW1qRkuqpAd-dJfH8Q - beetmover-checksums-bn-win64-shippable/opt: JrjD3V0qTmutCYKtiGeMRA - beetmover-checksums-br-linux-shippable/opt: OIVVxGSPSHuo1fCrmvblMg - beetmover-checksums-br-linux64-aarch64-shippable/opt: do7eWhD1Qg6uL1odB2qFBA - beetmover-checksums-br-linux64-shippable/opt: D-CQgoNuQP-Wj4A9gHvImw - beetmover-checksums-br-macosx64-shippable/opt: U6XSiod7QySEzwAVIBtEUw - beetmover-checksums-br-win32-shippable/opt: XCqwYTEpRP-d9EQ8dsiJBg - beetmover-checksums-br-win64-aarch64-shippable/opt: V-KKM9udSK2CfX800bA_tQ - beetmover-checksums-br-win64-shippable/opt: P-Be5Zm6RaaVzQOaWWkh2w - beetmover-checksums-bs-linux-shippable/opt: DuICqbqSQC6ITgTvgwhVag - beetmover-checksums-bs-linux64-aarch64-shippable/opt: Yt8hqXrYRxmNIbm7qymlSw - beetmover-checksums-bs-linux64-shippable/opt: WMldQX4ESrK9blZT8Sju9Q - beetmover-checksums-bs-macosx64-shippable/opt: QHYtnWgrQDikbaCKuQoWJQ - beetmover-checksums-bs-win32-shippable/opt: AUyhi1BqT0WdK9ZfPITnwg - beetmover-checksums-bs-win64-aarch64-shippable/opt: TBSDtEkGSvalSehJC2pI5A - beetmover-checksums-bs-win64-shippable/opt: emvoOFRaQGWPWDiai_Cheg - beetmover-checksums-ca-linux-shippable/opt: V6T1vBxTR1i-Ciz0M30dkQ - beetmover-checksums-ca-linux64-aarch64-shippable/opt: LrMae1pzQW2stPIHNd6AKw - beetmover-checksums-ca-linux64-shippable/opt: FLHRsNMAR1SqN1R6bH3NNg - beetmover-checksums-ca-macosx64-shippable/opt: SlqM_CMwTG6y6UQw_N4ddw - beetmover-checksums-ca-valencia-linux-shippable/opt: PGgQbRioSXCUg5-CxsN_vQ - beetmover-checksums-ca-valencia-linux64-aarch64-shippable/opt: VpEFYF4cTHy4XgaxW6xm-w - beetmover-checksums-ca-valencia-linux64-shippable/opt: F6XqBfACRmaCdpBkAys6ug - beetmover-checksums-ca-valencia-macosx64-shippable/opt: R_hiYOkOSBa9OSMqh4exIw - beetmover-checksums-ca-valencia-win32-shippable/opt: bqFnssOgQoWPMldZXLZOFA - beetmover-checksums-ca-valencia-win64-aarch64-shippable/opt: OLk6PVmZSU67WcdpmLQ1xg - beetmover-checksums-ca-valencia-win64-shippable/opt: fA4GdJgkSwSwTUCfMj83NA - beetmover-checksums-ca-win32-shippable/opt: TZzb6IPBSEq2lPto8ldK_A - beetmover-checksums-ca-win64-aarch64-shippable/opt: CUiQYs1_Tv-GQIvD_CW3Gg - beetmover-checksums-ca-win64-shippable/opt: FWE0LdH-QFicip1HORmOUA - beetmover-checksums-cak-linux-shippable/opt: EaE5zYEkT96mj2b0r5bypg - beetmover-checksums-cak-linux64-aarch64-shippable/opt: emj7EoiiScCoDGyN9kDmkg - beetmover-checksums-cak-linux64-shippable/opt: GbLfP2DTQr2p78bBw1EKPg - beetmover-checksums-cak-macosx64-shippable/opt: UmQHkBxdRJycPYyJ-WbNDQ - beetmover-checksums-cak-win32-shippable/opt: Wxl0J_cOQES1-_VnwND0Rg - beetmover-checksums-cak-win64-aarch64-shippable/opt: J2UE5U2sSS-cHUJR2XpZLw - beetmover-checksums-cak-win64-shippable/opt: H-ff6jMcSuSOSKVXhlsMfg - beetmover-checksums-cs-linux-shippable/opt: P1aNkg4GT9Ko7r51EJkWxQ - beetmover-checksums-cs-linux64-aarch64-shippable/opt: WbiBC5hPTomuShhiS2Uo_A - beetmover-checksums-cs-linux64-shippable/opt: ffOJlO_qTIm2_qtQhyFi4w - beetmover-checksums-cs-macosx64-shippable/opt: IIWJLJ8YR4aXx5RpnVFXgw - beetmover-checksums-cs-win32-shippable/opt: AQhBF6xfTK2tSb3_tjdRXQ - beetmover-checksums-cs-win64-aarch64-shippable/opt: B4uSSNu2TkO9D9CiWAu25g - beetmover-checksums-cs-win64-shippable/opt: Dkv42ezsQ8ScObw3ft7IaA - beetmover-checksums-cy-linux-shippable/opt: AN3qMRYFQvWKMo6CD1JWdg - beetmover-checksums-cy-linux64-aarch64-shippable/opt: B9bG0RrQTHu1MBHUtxvhGw - beetmover-checksums-cy-linux64-shippable/opt: Z3F1JAdDQoqz0Z1w99sGPQ - beetmover-checksums-cy-macosx64-shippable/opt: VvOQk7-YQ2KjP5_sHOYayQ - beetmover-checksums-cy-win32-shippable/opt: fZLCqiI6QuCF18OqeomKjg - beetmover-checksums-cy-win64-aarch64-shippable/opt: Coy3YjHyRsOXWaxBJZIMBg - beetmover-checksums-cy-win64-shippable/opt: V3LxUhUPRMelpXgSo5dPmA - beetmover-checksums-da-linux-shippable/opt: aYa-Lx6qRfmPW_3XliuxYQ - beetmover-checksums-da-linux64-aarch64-shippable/opt: Cp815FdyRi6-fPMWD9Jwpw - beetmover-checksums-da-linux64-shippable/opt: BFuikzTeTNOKrAP77wKmIA - beetmover-checksums-da-macosx64-shippable/opt: cruKVcQjS7y524oeczwYFw - beetmover-checksums-da-win32-shippable/opt: Gzzrqt6sR7W9iTPQ_c0g2Q - beetmover-checksums-da-win64-aarch64-shippable/opt: LGLFZlGeTvOqIAwKs1sXKg - beetmover-checksums-da-win64-shippable/opt: ADeqLy29Smipk-bRD1Pm-w - beetmover-checksums-de-linux-shippable/opt: EOh1i7DIQWKRzw0Nvof7dA - beetmover-checksums-de-linux64-aarch64-shippable/opt: CNJa3lMBQ3mic_b60EmGfA - beetmover-checksums-de-linux64-shippable/opt: fyM72gUCSPqr-xAFKgE_RQ - beetmover-checksums-de-macosx64-shippable/opt: Atv8ACJkQO6SB08sRDxo9w - beetmover-checksums-de-win32-shippable/opt: CaQlBHKkTsWQTiPALOciWw - beetmover-checksums-de-win64-aarch64-shippable/opt: QjsfJ0-5R-C8xN-1jJ0MRA - beetmover-checksums-de-win64-shippable/opt: dTqLsYHRTaqaIxucFfPBUQ - beetmover-checksums-dsb-linux-shippable/opt: fgCVrs0_RbKsfIpCnSHWzQ - beetmover-checksums-dsb-linux64-aarch64-shippable/opt: Fs04VxlET8yu6okSuKA6rw - beetmover-checksums-dsb-linux64-shippable/opt: UDtRkZrkRJeXkE_QFQZzmA - beetmover-checksums-dsb-macosx64-shippable/opt: AyH9UtUpRTCQCNgtDGEqlQ - beetmover-checksums-dsb-win32-shippable/opt: J3NpYtpRSLWy9-z604IpNQ - beetmover-checksums-dsb-win64-aarch64-shippable/opt: Cls_arYwRAmySJCXoN4-rQ - beetmover-checksums-dsb-win64-shippable/opt: fj6iZmV2QsGppRG7RuhnXw - beetmover-checksums-el-linux-shippable/opt: GBeZ5Lq-SfeimMUcVq-ctg - beetmover-checksums-el-linux64-aarch64-shippable/opt: GJYsFiKiQJmVehKziBmtMg - beetmover-checksums-el-linux64-shippable/opt: S3ArY6R9R6WaX2HtdATdwQ - beetmover-checksums-el-macosx64-shippable/opt: NItwyoq4TL2-Ni5-i-rgbA - beetmover-checksums-el-win32-shippable/opt: ZO2kbyCaS6igmAnb7yQv1g - beetmover-checksums-el-win64-aarch64-shippable/opt: W31Y5BFrQYWofWu03H5x2g - beetmover-checksums-el-win64-shippable/opt: KCHuPlYgRvGhc7EjQUf55g - beetmover-checksums-en-CA-linux-shippable/opt: SZTJj-3oQ9ag70gEnhZqwQ - beetmover-checksums-en-CA-linux64-aarch64-shippable/opt: MtvJckj4SjKT5v5wKODbjw - beetmover-checksums-en-CA-linux64-shippable/opt: V16oVOp6S6O03UmKYT92VQ - beetmover-checksums-en-CA-macosx64-shippable/opt: WxIdFDWVTfe4LVAlrf8cig - beetmover-checksums-en-CA-win32-shippable/opt: Gza0cYXWSb2WOdFrK2YGpA - beetmover-checksums-en-CA-win64-aarch64-shippable/opt: bxphhlO0To68o_OOLSQEkw - beetmover-checksums-en-CA-win64-shippable/opt: dbYgz8KsS-Wh1nAJ3WNK0g - beetmover-checksums-en-GB-linux-shippable/opt: aCwEEuRMQM2_OrTXAwqUlw - beetmover-checksums-en-GB-linux64-aarch64-shippable/opt: B0JzGPOUSf2aLxCyKv_ZdA - beetmover-checksums-en-GB-linux64-shippable/opt: aJYHYMy3RjKLJxiNaHJRKw - beetmover-checksums-en-GB-macosx64-shippable/opt: Zfpl0cnLQM-2BDeiIw3qsw - beetmover-checksums-en-GB-win32-shippable/opt: Ys6_PlQWRNmk8uZqM3jPAQ - beetmover-checksums-en-GB-win64-aarch64-shippable/opt: A5-i3oFBQIC8IZ6nFP0wyw - beetmover-checksums-en-GB-win64-shippable/opt: VvoYamqLQlGrFsKEm-soVw - beetmover-checksums-eo-linux-shippable/opt: bq0_XP8NRTGXhwOCDXMD8A - beetmover-checksums-eo-linux64-aarch64-shippable/opt: MERlnfLFS0OU6UNADg-IzQ - beetmover-checksums-eo-linux64-shippable/opt: SEjz8OAOQCSMadNhhcqNAQ - beetmover-checksums-eo-macosx64-shippable/opt: HYR__DXgTfGTWQ_MzLZjtQ - beetmover-checksums-eo-win32-shippable/opt: To804AdhSP6lP5TnnQhmpA - beetmover-checksums-eo-win64-aarch64-shippable/opt: UJpyhHI6Qhyuv45QtOplxw - beetmover-checksums-eo-win64-shippable/opt: HwWdNFZjS9mqay5dbsqnXA - beetmover-checksums-es-AR-linux-shippable/opt: HNuCsld2S-KhBRdBegwSUQ - beetmover-checksums-es-AR-linux64-aarch64-shippable/opt: VsCMGkY0RzqPeDS-aQw9Mg - beetmover-checksums-es-AR-linux64-shippable/opt: c5mDgyZFQcSISwZ6aQgOAw - beetmover-checksums-es-AR-macosx64-shippable/opt: a7F3B2E8RKCFqSVkVwaVZA - beetmover-checksums-es-AR-win32-shippable/opt: Yu97pqVVT-21lOL1Vp9d0w - beetmover-checksums-es-AR-win64-aarch64-shippable/opt: dP9xZzxZSe-Ch-GtAEv7BA - beetmover-checksums-es-AR-win64-shippable/opt: Y_lqR9UuRx28vzvYNXm4Ww - beetmover-checksums-es-CL-linux-shippable/opt: d30WLnC0TOSOeLCCwPwT7w - beetmover-checksums-es-CL-linux64-aarch64-shippable/opt: VvjuMmYuT-u0W9SltbPijw - beetmover-checksums-es-CL-linux64-shippable/opt: VyoEVDIPQGKEsNYTHegpxg - beetmover-checksums-es-CL-macosx64-shippable/opt: BoE8rh1USD6grcMYLTxswg - beetmover-checksums-es-CL-win32-shippable/opt: E-3RLFFrQFGQIrttKR9Q5w - beetmover-checksums-es-CL-win64-aarch64-shippable/opt: MnpB6ORwTTyG1q0o0BpdQA - beetmover-checksums-es-CL-win64-shippable/opt: IoeVxTAkTFuOqEguMbZqqQ - beetmover-checksums-es-ES-linux-shippable/opt: Bzv9ZijtRseEMAyfPR3GgQ - beetmover-checksums-es-ES-linux64-aarch64-shippable/opt: fZPElEWZTUyp-1pYA1rGnw - beetmover-checksums-es-ES-linux64-shippable/opt: dImAa2ZrRLCQ-9-5kINxOg - beetmover-checksums-es-ES-macosx64-shippable/opt: J0yaMHCZQ72pgtAn8f1sjw - beetmover-checksums-es-ES-win32-shippable/opt: ayNE3OGpTfOEXGEImyWl9Q - beetmover-checksums-es-ES-win64-aarch64-shippable/opt: d5lxNCWERxaI68ucB-_Ygg - beetmover-checksums-es-ES-win64-shippable/opt: FKIRXE2_Qu-HVixez0muzg - beetmover-checksums-es-MX-linux-shippable/opt: XCQpER9OTqGFX_mMlwmtHg - beetmover-checksums-es-MX-linux64-aarch64-shippable/opt: Ht4Rk_HQSW6gDh-nAz1b-A - beetmover-checksums-es-MX-linux64-shippable/opt: UWurpZ5qQQe6uYHBzTw71A - beetmover-checksums-es-MX-macosx64-shippable/opt: GJxuZ7NSS3ms4Gaoyhxmtg - beetmover-checksums-es-MX-win32-shippable/opt: B6er-A2FSM-RVNrcL4Pd6g - beetmover-checksums-es-MX-win64-aarch64-shippable/opt: IKEL5a4lR8GoJlb8IR7Lrw - beetmover-checksums-es-MX-win64-shippable/opt: TjX-V9icRriuVo6VC5odUw - beetmover-checksums-et-linux-shippable/opt: YTkPKKReTqCfdlOnazW7vA - beetmover-checksums-et-linux64-aarch64-shippable/opt: d4we6sQRRNGO_QOFYQlsbQ - beetmover-checksums-et-linux64-shippable/opt: Qfaw4KRCTeK8B3_7TDHjlw - beetmover-checksums-et-macosx64-shippable/opt: Gk1mdqboTBCH2WP6b1OrOQ - beetmover-checksums-et-win32-shippable/opt: aFkpWt4SStSB2g9paxgztg - beetmover-checksums-et-win64-aarch64-shippable/opt: FgQ_3C1nTPqll3xdEWsfxA - beetmover-checksums-et-win64-shippable/opt: KqhFyHW2R2ug1g5ru5Frtw - beetmover-checksums-eu-linux-shippable/opt: Ocqs8ZXbRn68wDnq9VHSzg - beetmover-checksums-eu-linux64-aarch64-shippable/opt: RgbSgNQNSeyKT5XRTDqxvQ - beetmover-checksums-eu-linux64-shippable/opt: R-4MWJATRlehnbHNdYhu6w - beetmover-checksums-eu-macosx64-shippable/opt: arX73RmaSO2E6q3j4aHTjQ - beetmover-checksums-eu-win32-shippable/opt: ZdztZeEcTEO-hTAStCetSg - beetmover-checksums-eu-win64-aarch64-shippable/opt: Y5EJWR22QEmZ8LW3FuWrgg - beetmover-checksums-eu-win64-shippable/opt: Ywf7BSuUSLa50ArN2IqsYw - beetmover-checksums-fa-linux-shippable/opt: G-vwaGEBR6-xJ4PlK66l1w - beetmover-checksums-fa-linux64-aarch64-shippable/opt: bVnxQJsPQHqNxTdEdg2H4g - beetmover-checksums-fa-linux64-shippable/opt: CchkTgtkRwWFlKnzg_zLrQ - beetmover-checksums-fa-macosx64-shippable/opt: MdLAWdM4T6mAj6_l_iGmDw - beetmover-checksums-fa-win32-shippable/opt: OSVSjx1WQxSLxeyDDFkBEg - beetmover-checksums-fa-win64-aarch64-shippable/opt: Wb9r2UL-RRuIre7e7qkNJQ - beetmover-checksums-fa-win64-shippable/opt: A5jGU2_fSc-QekjSTtdBPA - beetmover-checksums-ff-linux-shippable/opt: axdo9nCYSN6k36Tmk-FwkA - beetmover-checksums-ff-linux64-aarch64-shippable/opt: aS8huMO3T5itDyV0OSKOIg - beetmover-checksums-ff-linux64-shippable/opt: Ln2upsD_RqadEEZjDODU4Q - beetmover-checksums-ff-macosx64-shippable/opt: TrDvpxQlStCxYUIrWtvHgQ - beetmover-checksums-ff-win32-shippable/opt: UoKokVNER8CYxn13FUeEHA - beetmover-checksums-ff-win64-aarch64-shippable/opt: VuLit0sjTn2cF1TjMarxXg - beetmover-checksums-ff-win64-shippable/opt: XA8uD1vKTK6QrdYJouXlaw - beetmover-checksums-fi-linux-shippable/opt: HqTbSv1GQE2ev-fJ1zRUKA - beetmover-checksums-fi-linux64-aarch64-shippable/opt: AfDwlNftQaS_Txe0-Gnx-A - beetmover-checksums-fi-linux64-shippable/opt: VBKRTVawThOVP87KrLqj-w - beetmover-checksums-fi-macosx64-shippable/opt: JciFSFKnQiy7bHqPn0_Fig - beetmover-checksums-fi-win32-shippable/opt: dqWBS4kyQ_e4cGp3kNLnLQ - beetmover-checksums-fi-win64-aarch64-shippable/opt: fndva5mBRqil6mIDkdALOQ - beetmover-checksums-fi-win64-shippable/opt: dwJY4EVQQli_llWaBuRS9Q - beetmover-checksums-fr-linux-shippable/opt: C-XUIBY0S--ucwJALLyXDA - beetmover-checksums-fr-linux64-aarch64-shippable/opt: esy7_4gzSpWRnTm6UHTKgA - beetmover-checksums-fr-linux64-shippable/opt: PTzHwF2iSyahOSchGzOHCw - beetmover-checksums-fr-macosx64-shippable/opt: btosay_0TjaCmyp7JSVECw - beetmover-checksums-fr-win32-shippable/opt: IrvvaqurQ3Otv_vU_vyBlg - beetmover-checksums-fr-win64-aarch64-shippable/opt: Ycf6BlCzS1KSS6ohRlVXFA - beetmover-checksums-fr-win64-shippable/opt: C9sA8lK6TKylPouNfv8U3w - beetmover-checksums-fur-linux-shippable/opt: YkDkNDZLR5yhhQWXHWYOeQ - beetmover-checksums-fur-linux64-aarch64-shippable/opt: Ie-75mh6SN-8U0VqU9RpXA - beetmover-checksums-fur-linux64-shippable/opt: S-guempCReiufE3hn80CLA - beetmover-checksums-fur-macosx64-shippable/opt: YiauDMo4R1KwMG6fYKMeww - beetmover-checksums-fur-win32-shippable/opt: FZR4OjJZT_egwgtN4JbxRg - beetmover-checksums-fur-win64-aarch64-shippable/opt: IZTiXikxT1qJ6-Wny_hbhw - beetmover-checksums-fur-win64-shippable/opt: IDP1coEuTxmerYTR9T_12A - beetmover-checksums-fy-NL-linux-shippable/opt: BfIGFV_ESom5C1qgg6nw7A - beetmover-checksums-fy-NL-linux64-aarch64-shippable/opt: YE-ztoISRj6dAJCIJsLnug - beetmover-checksums-fy-NL-linux64-shippable/opt: Fs3rTzOfRf6XxtKGpEsFCg - beetmover-checksums-fy-NL-macosx64-shippable/opt: bw9ankOMTXGjpuWO-0vDIQ - beetmover-checksums-fy-NL-win32-shippable/opt: JC8JxlwQQUiM7ei88sk25A - beetmover-checksums-fy-NL-win64-aarch64-shippable/opt: Piv_UqkERyqBkMXdlnkoLw - beetmover-checksums-fy-NL-win64-shippable/opt: MIEgfM4wR-2v4P1Y2rABMg - beetmover-checksums-ga-IE-linux-shippable/opt: aCVsfWXtRCuyffVQFk_63g - beetmover-checksums-ga-IE-linux64-aarch64-shippable/opt: RgzWojdwTWe2RoH9gnEarA - beetmover-checksums-ga-IE-linux64-shippable/opt: a71taCk-T2O1pbYvHFnZOg - beetmover-checksums-ga-IE-macosx64-shippable/opt: IyL13LYsSMWR4Qb-eTduBQ - beetmover-checksums-ga-IE-win32-shippable/opt: R0kMS3dzT0SSYfuiPyDcUA - beetmover-checksums-ga-IE-win64-aarch64-shippable/opt: f1-vG3kHSiOPM5-_m0-SkA - beetmover-checksums-ga-IE-win64-shippable/opt: R31T4SmxSKOUtMAReuWuiA - beetmover-checksums-gd-linux-shippable/opt: arlhQRy7TQWRsulyCWQluQ - beetmover-checksums-gd-linux64-aarch64-shippable/opt: ZU6w2n4QRn-6JIGkYClTlA - beetmover-checksums-gd-linux64-shippable/opt: O2CH4xH-QxCfDtay72O9dA - beetmover-checksums-gd-macosx64-shippable/opt: IUMRwBc8SlK5mlYJcfjUFw - beetmover-checksums-gd-win32-shippable/opt: R7sHtkO8RTWdKTTbvnd-ng - beetmover-checksums-gd-win64-aarch64-shippable/opt: VD6hYsEQQHaOxN7uY34lWw - beetmover-checksums-gd-win64-shippable/opt: exkEn2HaSou90_s42qtK0g - beetmover-checksums-gl-linux-shippable/opt: Dy6-0TqUQ1GesRIj_fAbGA - beetmover-checksums-gl-linux64-aarch64-shippable/opt: fKq91DDNS0-cu3TTI-dJxA - beetmover-checksums-gl-linux64-shippable/opt: Afv9hIpFTBS8LtvoYBMOxQ - beetmover-checksums-gl-macosx64-shippable/opt: TzYzMjcHR3W14AgA_YlLOQ - beetmover-checksums-gl-win32-shippable/opt: CLakGY7sT5qXQF_RETAjSQ - beetmover-checksums-gl-win64-aarch64-shippable/opt: WMnHZp-aQsyK1qwdHjpz0A - beetmover-checksums-gl-win64-shippable/opt: FAKtXVsXT3OTSNVbZsgcSg - beetmover-checksums-gn-linux-shippable/opt: A8u-3TXgQDypf49CShM64A - beetmover-checksums-gn-linux64-aarch64-shippable/opt: SnYhg-3rSVyQRb70Huz3Dw - beetmover-checksums-gn-linux64-shippable/opt: NOEQcWF1RaiNS5ubk3vurQ - beetmover-checksums-gn-macosx64-shippable/opt: J2PRi-StQguuxQ3WBq4tgA - beetmover-checksums-gn-win32-shippable/opt: a2NMp7apTse0QbSIyWJsNA - beetmover-checksums-gn-win64-aarch64-shippable/opt: GHn4xic7RMOUMYE6Av0YKA - beetmover-checksums-gn-win64-shippable/opt: Z3hgBchuRySOYphiGFJ66w - beetmover-checksums-gu-IN-linux-shippable/opt: f1KWPf3ARDytpML4tte5GA - beetmover-checksums-gu-IN-linux64-aarch64-shippable/opt: SOJP8dM1TQqgtYZK2m47ZQ - beetmover-checksums-gu-IN-linux64-shippable/opt: f75egxN0QlOreaS5NBhBHg - beetmover-checksums-gu-IN-macosx64-shippable/opt: MDflNvSfQqSAYF6AVLCaRA - beetmover-checksums-gu-IN-win32-shippable/opt: Ugr1wRRrQD2_n5vax27ECQ - beetmover-checksums-gu-IN-win64-aarch64-shippable/opt: B5NzDFewTi68j3j3I_cHjQ - beetmover-checksums-gu-IN-win64-shippable/opt: Iv6n0izCT0yG1Ew_ME_KFg - beetmover-checksums-he-linux-shippable/opt: ZtoGgpJKTQG4nVqLNxlegw - beetmover-checksums-he-linux64-aarch64-shippable/opt: DXTBkVTKTQiF8XR7S_NsYA - beetmover-checksums-he-linux64-shippable/opt: ToYba9IaSqq_LHFum25eeg - beetmover-checksums-he-macosx64-shippable/opt: YQfLzRddRP-AH87siCdtTg - beetmover-checksums-he-win32-shippable/opt: R2lh29ttRWeNv1d3CFSKDw - beetmover-checksums-he-win64-aarch64-shippable/opt: UZz0feDQQ-2VvdZHdzf_jg - beetmover-checksums-he-win64-shippable/opt: AW4ybUOrQC6h61qdK43_Vw - beetmover-checksums-hi-IN-linux-shippable/opt: GwJDXd9zTg2pKw9ppsocXQ - beetmover-checksums-hi-IN-linux64-aarch64-shippable/opt: AQI27RUZRuiXg9r665FsjQ - beetmover-checksums-hi-IN-linux64-shippable/opt: DB_lr-8vRHef7voFxAes5Q - beetmover-checksums-hi-IN-macosx64-shippable/opt: S6t5Yo--R9apxg0DOQOFTA - beetmover-checksums-hi-IN-win32-shippable/opt: Yr2YjsnfSne1QalZ3kwwAA - beetmover-checksums-hi-IN-win64-aarch64-shippable/opt: fY0WFJrCST213_Pv-ozQQw - beetmover-checksums-hi-IN-win64-shippable/opt: DecqiCHiRMyMTMPFy9nREA - beetmover-checksums-hr-linux-shippable/opt: SsYkqjxLQ5yDCL8vVSV_FA - beetmover-checksums-hr-linux64-aarch64-shippable/opt: R8VMxKk6SiOgItjgmc84Cw - beetmover-checksums-hr-linux64-shippable/opt: RiMpnYKFR8uXKvzgKaMxIg - beetmover-checksums-hr-macosx64-shippable/opt: G7CfVsF8SlKAXbnBfcdbeg - beetmover-checksums-hr-win32-shippable/opt: Qh42ccnrR-maOr7XJyMrwQ - beetmover-checksums-hr-win64-aarch64-shippable/opt: MULEqRoUTGSPbmt8Sr7htg - beetmover-checksums-hr-win64-shippable/opt: H8D6TQAnS8atR_X9EJYDGw - beetmover-checksums-hsb-linux-shippable/opt: Bi2UCySKQBGH3knWbuYUdw - beetmover-checksums-hsb-linux64-aarch64-shippable/opt: IIL79EuyT_eqTuK_u9PC7g - beetmover-checksums-hsb-linux64-shippable/opt: C3TfdxZ1TC-_ylrUcBXcnw - beetmover-checksums-hsb-macosx64-shippable/opt: AlwEM3KRQY6ZdsE3snlzPA - beetmover-checksums-hsb-win32-shippable/opt: QKe536TvQ1Ko1RyX9XqSbw - beetmover-checksums-hsb-win64-aarch64-shippable/opt: PQ_tvvp8TIaclVnF6u9xcw - beetmover-checksums-hsb-win64-shippable/opt: PO9zb3iZT8KwkCxpSKwl0w - beetmover-checksums-hu-linux-shippable/opt: Pu1zrn2bQmCqTu7XplGymQ - beetmover-checksums-hu-linux64-aarch64-shippable/opt: ERyRvOZfQBWSeWho3rh_tA - beetmover-checksums-hu-linux64-shippable/opt: e1zPz7YGRSu4vPa1T2ib0w - beetmover-checksums-hu-macosx64-shippable/opt: QI6NRSf4Q8K0ZRUjKRsizg - beetmover-checksums-hu-win32-shippable/opt: WTl9QAu7QrC13XD49ogJeQ - beetmover-checksums-hu-win64-aarch64-shippable/opt: YNvmuP5PQl20qnW0ulOiMA - beetmover-checksums-hu-win64-shippable/opt: dgGnaNBrQ4SNOGIkge7jXQ - beetmover-checksums-hy-AM-linux-shippable/opt: LpK0myBVR46GJv8B3Oladg - beetmover-checksums-hy-AM-linux64-aarch64-shippable/opt: Tf6IK2oER8iX5wtd7kUPkw - beetmover-checksums-hy-AM-linux64-shippable/opt: LpQLJV_9QUidvYZpNBh-bw - beetmover-checksums-hy-AM-macosx64-shippable/opt: VodafSNnRZS05M3UibPnCw - beetmover-checksums-hy-AM-win32-shippable/opt: RS43F7XiR4O8PuKujJJTzg - beetmover-checksums-hy-AM-win64-aarch64-shippable/opt: PNYSPcgCSzmRqEtGMwrIxQ - beetmover-checksums-hy-AM-win64-shippable/opt: C8t4zNu8QEi8qQr9syKBmw - beetmover-checksums-ia-linux-shippable/opt: I8lmgYNeQbavTsTt3waywg - beetmover-checksums-ia-linux64-aarch64-shippable/opt: XNg1qN1lQaunHggSXaa0oQ - beetmover-checksums-ia-linux64-shippable/opt: Di2C4OUjRn-YuSz4XbiXbQ - beetmover-checksums-ia-macosx64-shippable/opt: OMAwaY2hTR69uf55N6PuTA - beetmover-checksums-ia-win32-shippable/opt: drmXDdRiTVKproQWD87n1A - beetmover-checksums-ia-win64-aarch64-shippable/opt: Qy_QSIiURFqGAaMBkWnI4w - beetmover-checksums-ia-win64-shippable/opt: DuplQY9PR-G80gfIe3bRuQ - beetmover-checksums-id-linux-shippable/opt: SJI_Qyt6QbKvzzoabdIiPw - beetmover-checksums-id-linux64-aarch64-shippable/opt: BkSyUiB4SkugJtPgOzecHw - beetmover-checksums-id-linux64-shippable/opt: FMRPEgveSbquLt_5nFmH3A - beetmover-checksums-id-macosx64-shippable/opt: LQapm-o0RtmxipeQ_OGzvA - beetmover-checksums-id-win32-shippable/opt: Y6RQ_ncsS6qiEIaiVl-z_Q - beetmover-checksums-id-win64-aarch64-shippable/opt: JcVqsVQ1RIaWzJC7mTFr1g - beetmover-checksums-id-win64-shippable/opt: d4LiJM8fSsiWBVMwvfdK_g - beetmover-checksums-is-linux-shippable/opt: L7BqP2a0S8WP3-o4fLohRQ - beetmover-checksums-is-linux64-aarch64-shippable/opt: dh9-CCzATFywgL06iphu8w - beetmover-checksums-is-linux64-shippable/opt: DgrPlNxBT4KCZpsaumP9AQ - beetmover-checksums-is-macosx64-shippable/opt: Vffi8fnySUm9zGE8xuxeDg - beetmover-checksums-is-win32-shippable/opt: KdXbF4NFQJ2cUwR77DBNWw - beetmover-checksums-is-win64-aarch64-shippable/opt: EGqMkHFhTWKXHbrMhQqdPQ - beetmover-checksums-is-win64-shippable/opt: YaXd9wD6SMSq1qHWYV5QFg - beetmover-checksums-it-linux-shippable/opt: TlzEUitbS4WfpLtw_IXCoA - beetmover-checksums-it-linux64-aarch64-shippable/opt: Hqz50KvqSF-FslhZGVs1QA - beetmover-checksums-it-linux64-shippable/opt: NM5C-UROQeiMi4geh107ow - beetmover-checksums-it-macosx64-shippable/opt: WmSUwGdWS62AxSA-o2Q_7w - beetmover-checksums-it-win32-shippable/opt: TbDaWhrWR9qzUqqO7GfS2A - beetmover-checksums-it-win64-aarch64-shippable/opt: GEsWY2MESguud7UXoSW0KA - beetmover-checksums-it-win64-shippable/opt: Vjtcd-klR0qI8S-poUJGuA - beetmover-checksums-ja-JP-mac-macosx64-shippable/opt: PfbyGv5cTziPNl8siUwlaQ - beetmover-checksums-ja-linux-shippable/opt: Ns4ikSOSSDO-R_2DVYxqjA - beetmover-checksums-ja-linux64-aarch64-shippable/opt: G9lTEP3aRHmdjkyZGqRiSQ - beetmover-checksums-ja-linux64-shippable/opt: O-A7Rc82TUyePbWHQUXmBw - beetmover-checksums-ja-win32-shippable/opt: QjZ8lrA2ThG8Pw3niCF-5A - beetmover-checksums-ja-win64-aarch64-shippable/opt: bL2tSbqJT862Mk6eIv0K3A - beetmover-checksums-ja-win64-shippable/opt: W-F8LdTMS8GP0ZhzRYs8sg - beetmover-checksums-ka-linux-shippable/opt: FlcWYH7kRQaWmvdbi1pHtA - beetmover-checksums-ka-linux64-aarch64-shippable/opt: Vod2pwdHQ_2DPyjvUCFF0A - beetmover-checksums-ka-linux64-shippable/opt: IG0lw0mPTrGOp2pAbL1DCA - beetmover-checksums-ka-macosx64-shippable/opt: B_AmHrNTSlWgiKb5B2MiiQ - beetmover-checksums-ka-win32-shippable/opt: CO_B2Wm5SR2GVo0TH4IovA - beetmover-checksums-ka-win64-aarch64-shippable/opt: HG6s3wHqS_i2z-jiSu7wUA - beetmover-checksums-ka-win64-shippable/opt: N932rHH0SFuomEItG72QPw - beetmover-checksums-kab-linux-shippable/opt: ar1y2pBbS4-vmSwDahMK1A - beetmover-checksums-kab-linux64-aarch64-shippable/opt: VXGF5K19TSutWEHP1zKuuA - beetmover-checksums-kab-linux64-shippable/opt: PCr98PBwTciNxPmoKSbxDQ - beetmover-checksums-kab-macosx64-shippable/opt: UOR-766TQVuwaOLM22SCXA - beetmover-checksums-kab-win32-shippable/opt: Og8sIV1vT_CbgplDqvRgMA - beetmover-checksums-kab-win64-aarch64-shippable/opt: Yf3jNJ1eQk27JYoOYAJWrA - beetmover-checksums-kab-win64-shippable/opt: QDQCLcweTw6snKvAsOzgrQ - beetmover-checksums-kk-linux-shippable/opt: brZizVSyQPCkIZlWkzkTfg - beetmover-checksums-kk-linux64-aarch64-shippable/opt: a45jG3tTQgO1qzgqFycayQ - beetmover-checksums-kk-linux64-shippable/opt: eatMeOKcSaS67llGD9GUXw - beetmover-checksums-kk-macosx64-shippable/opt: OLKnFWPwRImnRbnDmEmvkQ - beetmover-checksums-kk-win32-shippable/opt: MzuNPQbJQEenpV34OilaRg - beetmover-checksums-kk-win64-aarch64-shippable/opt: J0GXvxEQSJm3gMj0vzwo5Q - beetmover-checksums-kk-win64-shippable/opt: MTV0a9yaSNeOCIMGNgCBBA - beetmover-checksums-km-linux-shippable/opt: JnZ7_v4tSoaSrIZUyx1-FA - beetmover-checksums-km-linux64-aarch64-shippable/opt: PM1ZYQ2oSvadtJb5thQjwQ - beetmover-checksums-km-linux64-shippable/opt: AbO85PJzREqLJcLKn-pG7Q - beetmover-checksums-km-macosx64-shippable/opt: Jq6JqHw1SU2MiXwS1ebaww - beetmover-checksums-km-win32-shippable/opt: a4RfMaX-SLquWYY0ySG4BQ - beetmover-checksums-km-win64-aarch64-shippable/opt: M3-jYXXhRuOhbg0VNh6LuA - beetmover-checksums-km-win64-shippable/opt: BiSjP-R6TjK66MABvtuO6A - beetmover-checksums-kn-linux-shippable/opt: S5NwEs3ySjeno0uqjEYWgg - beetmover-checksums-kn-linux64-aarch64-shippable/opt: d5YMAY2pR8W_RIs-BQb5ig - beetmover-checksums-kn-linux64-shippable/opt: VHN06qu-T6KHzZdQIb9m3A - beetmover-checksums-kn-macosx64-shippable/opt: YQP_yXJ-RsW_P4Up-vGT3Q - beetmover-checksums-kn-win32-shippable/opt: YeUw3g1kQDOUF-upmXua8g - beetmover-checksums-kn-win64-aarch64-shippable/opt: Ljwq_wW0QruVi4-QA3IMKA - beetmover-checksums-kn-win64-shippable/opt: bm5iJK0GRym1PUeGeOOXEA - beetmover-checksums-ko-linux-shippable/opt: di7SAT_iQPKivty8ibBHdA - beetmover-checksums-ko-linux64-aarch64-shippable/opt: AxQeJ98SQFKs49_eBqVwFw - beetmover-checksums-ko-linux64-shippable/opt: FEWp6XCBRC-Zsyk2RYbGnA - beetmover-checksums-ko-macosx64-shippable/opt: VI32PD-GQhucyORp45ux7w - beetmover-checksums-ko-win32-shippable/opt: CDA8TCRwTVebyf-DVd0htw - beetmover-checksums-ko-win64-aarch64-shippable/opt: DNzkWimGQ8yaqctbWFjGJQ - beetmover-checksums-ko-win64-shippable/opt: K5OJRpxqS9iQLt3h_krgEQ - beetmover-checksums-lij-linux-shippable/opt: fdP2cAb7SiKokGKVQN_67w - beetmover-checksums-lij-linux64-aarch64-shippable/opt: FDbamgN-S7qRTvmAtyrE_g - beetmover-checksums-lij-linux64-shippable/opt: e2thsKj0RX-2mJKXO627nw - beetmover-checksums-lij-macosx64-shippable/opt: bUWnvsV9SV2988o3QDcYSQ - beetmover-checksums-lij-win32-shippable/opt: CCsiXB-aT_W2Vz0i0QZLnQ - beetmover-checksums-lij-win64-aarch64-shippable/opt: HS84memlTWalxOFf01s14g - beetmover-checksums-lij-win64-shippable/opt: EaGjOAtvTdqUGv8wWEKRfA - beetmover-checksums-linux-shippable/opt: CE8bXRW8SqS-EZfcJvQraA - beetmover-checksums-linux64-aarch64-shippable/opt: IkBjO4BQRJiAJnJNnk7NuA - beetmover-checksums-linux64-shippable/opt: CKXaRYlKQfu_-5x5hZ4fdw - beetmover-checksums-lt-linux-shippable/opt: ZX6CxBjjSjeGAc6GfolhQg - beetmover-checksums-lt-linux64-aarch64-shippable/opt: d9PVAKe1Q0yTmAoOSsc7-A - beetmover-checksums-lt-linux64-shippable/opt: ed6Bj85GTyW5ueH0w67sAw - beetmover-checksums-lt-macosx64-shippable/opt: d43Jhq47T82Ch79T45brIA - beetmover-checksums-lt-win32-shippable/opt: cNKLWIN9SC6Vji46Y50ZEA - beetmover-checksums-lt-win64-aarch64-shippable/opt: fDRRB42IRmKPCHylU5cM8Q - beetmover-checksums-lt-win64-shippable/opt: EpmP-qXbQKOu1IGMfs4zJQ - beetmover-checksums-lv-linux-shippable/opt: cDqZkJMGTUOSnx975zptAg - beetmover-checksums-lv-linux64-aarch64-shippable/opt: ACoDi1zpR6-m5QhcIf7tcg - beetmover-checksums-lv-linux64-shippable/opt: ROPOdprOSsO0jeud_aq4Nw - beetmover-checksums-lv-macosx64-shippable/opt: Xexc7fKGRhGsmxclGo3JwA - beetmover-checksums-lv-win32-shippable/opt: Y_eOlLKOQWmHJYcGPlskwQ - beetmover-checksums-lv-win64-aarch64-shippable/opt: MRORlRVYTx2rmFKEdIfaqw - beetmover-checksums-lv-win64-shippable/opt: FFHwgqbBRYmCEvzpPH6Weg - beetmover-checksums-macosx64-shippable/opt: OVsLnOsaTpWuLRiZrKde3Q - beetmover-checksums-mk-linux-shippable/opt: Zbbrk_LyRleORBLN-YZvAA - beetmover-checksums-mk-linux64-aarch64-shippable/opt: DbzeGdzbQ7-RdmJ23FYOvA - beetmover-checksums-mk-linux64-shippable/opt: JVtW9v1kRLuCTyplIXbl-A - beetmover-checksums-mk-macosx64-shippable/opt: O4UWa3PmTXa7gnnZ0jmEGg - beetmover-checksums-mk-win32-shippable/opt: FBgf1Y82QVqv-mY1kOAWSw - beetmover-checksums-mk-win64-aarch64-shippable/opt: P5EBJbK_S7G27XUHtGXp0g - beetmover-checksums-mk-win64-shippable/opt: HRif1qMNRmqWYMc1yeVU5g - beetmover-checksums-mr-linux-shippable/opt: fqXAbnHZTQWNUAY5tBj1Kg - beetmover-checksums-mr-linux64-aarch64-shippable/opt: MC-nuFESSm2uOMWca1YArw - beetmover-checksums-mr-linux64-shippable/opt: O2YaLwLTS42M6jgfypw3Uw - beetmover-checksums-mr-macosx64-shippable/opt: B_bSxdirTCmcMqDLJ872xA - beetmover-checksums-mr-win32-shippable/opt: TeyMRfLCToKb9Ip3vXzOEg - beetmover-checksums-mr-win64-aarch64-shippable/opt: QW4O6QrxRBukXg4tMQtAeg - beetmover-checksums-mr-win64-shippable/opt: C3wAyEanQeyqZIqX2xVKkg - beetmover-checksums-ms-linux-shippable/opt: Wzcx4S5HTBG3GQdZJvTsVQ - beetmover-checksums-ms-linux64-aarch64-shippable/opt: WWi6EGJRQFezCHbvJSVEUw - beetmover-checksums-ms-linux64-shippable/opt: HQcbF4xTTpyCAIUeKwiyFA - beetmover-checksums-ms-macosx64-shippable/opt: fXraRoLAQAeE55JLOlGOiw - beetmover-checksums-ms-win32-shippable/opt: Dojz8hsnRvGkS3YoxQq8kg - beetmover-checksums-ms-win64-aarch64-shippable/opt: HMBLntJHRsiIwrRMJa4hkQ - beetmover-checksums-ms-win64-shippable/opt: LnPoPsmvSCKgEzO_pE9-fA - beetmover-checksums-my-linux-shippable/opt: SnuJMrRZRZKXTjdxlB3JCQ - beetmover-checksums-my-linux64-aarch64-shippable/opt: OH-ZxWDSR2SYN0kMZFVfIg - beetmover-checksums-my-linux64-shippable/opt: OTooLTAATc2khK7M2VXanw - beetmover-checksums-my-macosx64-shippable/opt: QEkVsLa3TbSEdqN7Eu9V9g - beetmover-checksums-my-win32-shippable/opt: YRafw91JSh2ezCLOIAOkyQ - beetmover-checksums-my-win64-aarch64-shippable/opt: fZK-bFAyR9Oj27V8xQsodQ - beetmover-checksums-my-win64-shippable/opt: QqdlMpQ-Sp2MK8M5jpYTuQ - beetmover-checksums-nb-NO-linux-shippable/opt: WcmmI6oNTPKzfSr8X9iiGA - beetmover-checksums-nb-NO-linux64-aarch64-shippable/opt: b95nlxwZSpuhm4NLEYn0wg - beetmover-checksums-nb-NO-linux64-shippable/opt: H1Dm9YBQS0iWMToTTBwmcA - beetmover-checksums-nb-NO-macosx64-shippable/opt: d7wet_kLScWr4pC7cIIoYg - beetmover-checksums-nb-NO-win32-shippable/opt: QfgYfBGuRkWB9DfKsP_DeA - beetmover-checksums-nb-NO-win64-aarch64-shippable/opt: KKzTZvPMTuOklee-75-u7A - beetmover-checksums-nb-NO-win64-shippable/opt: ANVusQ51TPyDUjCaKO8bcA - beetmover-checksums-ne-NP-linux-shippable/opt: MN5g7tzQQyq9pPYrlXiE3Q - beetmover-checksums-ne-NP-linux64-aarch64-shippable/opt: V2oRr0BNSIyGd4H4yXLJcg - beetmover-checksums-ne-NP-linux64-shippable/opt: CRFfKZz_RZmA4jP1xfipaA - beetmover-checksums-ne-NP-macosx64-shippable/opt: L5Wl6_QbQC-J9wXq1sHdRA - beetmover-checksums-ne-NP-win32-shippable/opt: TsKMY5oXS7OEtX6qTDWmDA - beetmover-checksums-ne-NP-win64-aarch64-shippable/opt: NQVQSGMVTpqG25QVgxatLw - beetmover-checksums-ne-NP-win64-shippable/opt: IbfpYEnVSgO0hzhwplYasg - beetmover-checksums-nl-linux-shippable/opt: HY_rPFSGRGSGAnbRBujQiA - beetmover-checksums-nl-linux64-aarch64-shippable/opt: CUaw8oh-TGa-CuAA7_wtxQ - beetmover-checksums-nl-linux64-shippable/opt: AxUKtfHcTRmjXgWGJBLSig - beetmover-checksums-nl-macosx64-shippable/opt: GFX6l1v_Smq6qllsJaDu8Q - beetmover-checksums-nl-win32-shippable/opt: HwIwF4FfTs2JangA7Pmz9Q - beetmover-checksums-nl-win64-aarch64-shippable/opt: J6bryWZ2SsWyZBKYb220EA - beetmover-checksums-nl-win64-shippable/opt: fw75FkWWQ-2zuh5OJQ-jpw - beetmover-checksums-nn-NO-linux-shippable/opt: f27Jmu2ESKCYxWQ_VZhKHw - beetmover-checksums-nn-NO-linux64-aarch64-shippable/opt: JxUxIsPjTSqY6xC3R25b4A - beetmover-checksums-nn-NO-linux64-shippable/opt: X5JO51beQ7-C9bQ0vFkWYQ - beetmover-checksums-nn-NO-macosx64-shippable/opt: aiM3QZcIQhWNAjBUEiMKeQ - beetmover-checksums-nn-NO-win32-shippable/opt: XzfTIcpdTTO5l3VVbhuhtA - beetmover-checksums-nn-NO-win64-aarch64-shippable/opt: X_saYqPHRtePrGg8x9VXLg - beetmover-checksums-nn-NO-win64-shippable/opt: cH-7cO5tQbGDkQWsia1asQ - beetmover-checksums-oc-linux-shippable/opt: TEzpkGAoSa2ruCakNRjI4A - beetmover-checksums-oc-linux64-aarch64-shippable/opt: eXdaATKcRZW5BH0gbb77tw - beetmover-checksums-oc-linux64-shippable/opt: Co9QcV8IQ7-jqGgZVo0NYw - beetmover-checksums-oc-macosx64-shippable/opt: CcFeHVy6RLWwvuRQwX4t0g - beetmover-checksums-oc-win32-shippable/opt: JylCsGViRiun0J0e3HpMMA - beetmover-checksums-oc-win64-aarch64-shippable/opt: B8Tf2gFlSsOS-yybwRPX2A - beetmover-checksums-oc-win64-shippable/opt: b33TFUZdQRuNMqxOK0ITjw - beetmover-checksums-pa-IN-linux-shippable/opt: D83G6fJATFqYtH4sFi6jBg - beetmover-checksums-pa-IN-linux64-aarch64-shippable/opt: Kd2BK6YzQiGYC-dU2rbxag - beetmover-checksums-pa-IN-linux64-shippable/opt: eRzI88fDSCuy-T_lJhRsWA - beetmover-checksums-pa-IN-macosx64-shippable/opt: LQnhq1ckSVqvgmzmFRtKgQ - beetmover-checksums-pa-IN-win32-shippable/opt: DGH0G-nJTAGOj3iBTBrupA - beetmover-checksums-pa-IN-win64-aarch64-shippable/opt: bJyRKsVQRQyB5XAtErFykw - beetmover-checksums-pa-IN-win64-shippable/opt: Ls-vuW5-QAWHA0RX_o-rsQ - beetmover-checksums-pl-linux-shippable/opt: Y7g-ztvdTSaH_WDX5UrIGQ - beetmover-checksums-pl-linux64-aarch64-shippable/opt: HASognjbSauWIwaYdV4wNA - beetmover-checksums-pl-linux64-shippable/opt: GVLU4OZhTaOq3nqTdzHL2w - beetmover-checksums-pl-macosx64-shippable/opt: b3svJ76IReCYoRHyj95vvg - beetmover-checksums-pl-win32-shippable/opt: fc5dR-dHRcC2qg9aXyx_Xg - beetmover-checksums-pl-win64-aarch64-shippable/opt: STWu4uEGS-ChFsGe-mfhVg - beetmover-checksums-pl-win64-shippable/opt: e68o6SzOTaeSmT90AJ16Sg - beetmover-checksums-pt-BR-linux-shippable/opt: bGH1S3sRSDCcGf2detSqIA - beetmover-checksums-pt-BR-linux64-aarch64-shippable/opt: eVKvQMM9Qoee3bXzYwKbjg - beetmover-checksums-pt-BR-linux64-shippable/opt: eGuUpUArSluycVTfOSW9DQ - beetmover-checksums-pt-BR-macosx64-shippable/opt: GuOKs1f3SsmzWghLo771Ww - beetmover-checksums-pt-BR-win32-shippable/opt: JxbXEmlWSMmc4y5VQusodQ - beetmover-checksums-pt-BR-win64-aarch64-shippable/opt: XgRzb7yWSDmARVOLNFfXxQ - beetmover-checksums-pt-BR-win64-shippable/opt: VaNfp4vxStiJq04z6sk6vg - beetmover-checksums-pt-PT-linux-shippable/opt: fr3QDUZjRWCZZ1zm8-xS5w - beetmover-checksums-pt-PT-linux64-aarch64-shippable/opt: f0jYsgBGQ1uRriIvmHfqHw - beetmover-checksums-pt-PT-linux64-shippable/opt: fwNXnKtCSHCVW4SW6ubXpQ - beetmover-checksums-pt-PT-macosx64-shippable/opt: IUZ4GrK1R22a-6GgKVArCQ - beetmover-checksums-pt-PT-win32-shippable/opt: eyD48XQVSyy6YBWcEVR7Jg - beetmover-checksums-pt-PT-win64-aarch64-shippable/opt: MgoWcSFpS6C7hdsER2yy3g - beetmover-checksums-pt-PT-win64-shippable/opt: DrzULzfYQiKhEdkSwEHcrA - beetmover-checksums-rm-linux-shippable/opt: Oi3xef1qT7eMEpD-e57AfQ - beetmover-checksums-rm-linux64-aarch64-shippable/opt: dMq7bZMiT7q7dIA5QdnITA - beetmover-checksums-rm-linux64-shippable/opt: Qx5YxSH3TXSNyPGJxCqD_Q - beetmover-checksums-rm-macosx64-shippable/opt: CqR1CZFARcmQlflopLHnog - beetmover-checksums-rm-win32-shippable/opt: MoDLU0rlTk-udAFX0UnNzw - beetmover-checksums-rm-win64-aarch64-shippable/opt: P0E3jW7DRhmP94yq6uJF8A - beetmover-checksums-rm-win64-shippable/opt: SF4dk0RqRV60XP9w-CcIiQ - beetmover-checksums-ro-linux-shippable/opt: Abk3kEcGSXWzvL8JB_M-Lg - beetmover-checksums-ro-linux64-aarch64-shippable/opt: OLWvtuDuQEOehEfxW6llRw - beetmover-checksums-ro-linux64-shippable/opt: ZfnYbUCyRr686Qef1UX8rQ - beetmover-checksums-ro-macosx64-shippable/opt: KO3LJvPORQuoUZtL88YGyQ - beetmover-checksums-ro-win32-shippable/opt: f3Od74P_QjKRX3Qq6LuWYQ - beetmover-checksums-ro-win64-aarch64-shippable/opt: Wk1jmIBtRf2497lWTdlRow - beetmover-checksums-ro-win64-shippable/opt: E5O4MD37R3WKSf5Q2NosMQ - beetmover-checksums-ru-linux-shippable/opt: TTJB2-YgRYGPPvLLwFH0PA - beetmover-checksums-ru-linux64-aarch64-shippable/opt: Ri_7W5O-QzKN1C3nqD7EaQ - beetmover-checksums-ru-linux64-shippable/opt: Pkoc6JSbRiGyJGwKMAofxQ - beetmover-checksums-ru-macosx64-shippable/opt: T8J0YqtwTgisSTNhmIoqKg - beetmover-checksums-ru-win32-shippable/opt: VOeN9BlDSWeM8LyHLU67mQ - beetmover-checksums-ru-win64-aarch64-shippable/opt: ZZdp4dEYSwCKKoHslb2PLQ - beetmover-checksums-ru-win64-shippable/opt: JyxqZ4HIRl6YoLGG5HiSWw - beetmover-checksums-sat-linux-shippable/opt: G8TE9OBKSu6-Z3R88HIulQ - beetmover-checksums-sat-linux64-aarch64-shippable/opt: Ibuj-cMzQUWf2O5C64kY2g - beetmover-checksums-sat-linux64-shippable/opt: fJYeN7CNSCGpxEcgV9FxOw - beetmover-checksums-sat-macosx64-shippable/opt: Ya0TPGaCRF6f38qnFN-rUA - beetmover-checksums-sat-win32-shippable/opt: YF5bIEC9T7aJPNdRN-i9eQ - beetmover-checksums-sat-win64-aarch64-shippable/opt: C3FbrZwcQKqnONARMGluLg - beetmover-checksums-sat-win64-shippable/opt: cYD3Tw6DRg-lZal_SaBu0Q - beetmover-checksums-sc-linux-shippable/opt: R8uzKGzGQIOUWugEiIIuTA - beetmover-checksums-sc-linux64-aarch64-shippable/opt: UBGIufVYTXWtXCdZgzcHBQ - beetmover-checksums-sc-linux64-shippable/opt: N5vY14VCTYSwP4SFlnkdpA - beetmover-checksums-sc-macosx64-shippable/opt: SXiELIvpR9CqDo3YMdOiXA - beetmover-checksums-sc-win32-shippable/opt: URF1VeDNQJKCWSW--wteXQ - beetmover-checksums-sc-win64-aarch64-shippable/opt: O_e0rwgTRmmrfrRvTbQvCg - beetmover-checksums-sc-win64-shippable/opt: XX-mT2ZQRX-0yUovndFykA - beetmover-checksums-sco-linux-shippable/opt: K9mtltEcRVCrQM7JiE3VYQ - beetmover-checksums-sco-linux64-aarch64-shippable/opt: d8SpTko3SzCykOzt-InhHQ - beetmover-checksums-sco-linux64-shippable/opt: cnGj6sQQRRehj3G9dNLK8A - beetmover-checksums-sco-macosx64-shippable/opt: LBnpMDAhQnS1qRtoF2rCXA - beetmover-checksums-sco-win32-shippable/opt: GA7igOA5ThGiDIBg642dZw - beetmover-checksums-sco-win64-aarch64-shippable/opt: a-qp5zOjSmCLkoBzaDnrRg - beetmover-checksums-sco-win64-shippable/opt: P_tQlLMIQNauLCPk-2GvuQ - beetmover-checksums-si-linux-shippable/opt: Nt62fzSlS6-5j0q0aqXuUA - beetmover-checksums-si-linux64-aarch64-shippable/opt: BUC7lD99TxiNyk5MrWWY1A - beetmover-checksums-si-linux64-shippable/opt: IwBj-IbIQFGgJPT3IZnhew - beetmover-checksums-si-macosx64-shippable/opt: EgMhDNITR76nzjWx2dxUlQ - beetmover-checksums-si-win32-shippable/opt: d0AIxegGSJKdo6m1KRLZ0g - beetmover-checksums-si-win64-aarch64-shippable/opt: Zn-Tw3vxSayzDzMoE7IlMA - beetmover-checksums-si-win64-shippable/opt: DhHw-gc1Q-eOgvPm2IT9Ug - beetmover-checksums-sk-linux-shippable/opt: YlReS_dDRUezTVRPN7mNWA - beetmover-checksums-sk-linux64-aarch64-shippable/opt: X1EdEPPMSaiMFbofab0hCw - beetmover-checksums-sk-linux64-shippable/opt: D5tAKsxbQsKIpXeHEyb3Fw - beetmover-checksums-sk-macosx64-shippable/opt: TVIm-2pJRWCXWF9sHpcB6w - beetmover-checksums-sk-win32-shippable/opt: JcaYtFPfSsmO2qh_se_sgQ - beetmover-checksums-sk-win64-aarch64-shippable/opt: U4mBDVEeRQ6UY9N_wbNGFQ - beetmover-checksums-sk-win64-shippable/opt: KbvgY-mHTp2ogay4mq9VlQ - beetmover-checksums-skr-linux-shippable/opt: dH7MRvZGTKGzTRYJas8grw - beetmover-checksums-skr-linux64-aarch64-shippable/opt: DnPsDxrLRl-9cEQEelye9A - beetmover-checksums-skr-linux64-shippable/opt: PGqE_a8hTYKgIjcWxwBCvw - beetmover-checksums-skr-macosx64-shippable/opt: bHla_AkBRIW4RlN7-KoDLw - beetmover-checksums-skr-win32-shippable/opt: Nwk56gUQQO-GFZczFVzW4A - beetmover-checksums-skr-win64-aarch64-shippable/opt: GdeGJQl6S96D4vRn8B3C5w - beetmover-checksums-skr-win64-shippable/opt: KX_recqESOGfLIxB5cXu0w - beetmover-checksums-sl-linux-shippable/opt: PWkmjXbBTZmC-UosV7PFag - beetmover-checksums-sl-linux64-aarch64-shippable/opt: GSaD70rwTn2GqFh7w11b-A - beetmover-checksums-sl-linux64-shippable/opt: YBomttiQRrqHwXknq8AOAQ - beetmover-checksums-sl-macosx64-shippable/opt: KB_f0R2wSbmdpyTFeAJogQ - beetmover-checksums-sl-win32-shippable/opt: KNGI1HnvTvuH1fn2O0LLxQ - beetmover-checksums-sl-win64-aarch64-shippable/opt: Z-68UxicTnivaGK6VjJ-DA - beetmover-checksums-sl-win64-shippable/opt: AfhnWfvwSRGx4q0yUnRRbg - beetmover-checksums-son-linux-shippable/opt: DtPYalOZT4-PPzCS5i5nFg - beetmover-checksums-son-linux64-aarch64-shippable/opt: HZqB6ttvS9Ge88HsTwEBSQ - beetmover-checksums-son-linux64-shippable/opt: f2iPLu4SQHKszCdbOCxDmw - beetmover-checksums-son-macosx64-shippable/opt: DMcXKETBTDWlo9vpMdbcAg - beetmover-checksums-son-win32-shippable/opt: RZEZ3fwDRFmhOU1vGCFTIQ - beetmover-checksums-son-win64-aarch64-shippable/opt: D0xJUH4VSyCfoZDik6f8pQ - beetmover-checksums-son-win64-shippable/opt: TXvE9ad1RtuhgX6b21mmzw - beetmover-checksums-sq-linux-shippable/opt: V0qpLNlpTfaiq9EMaMfNpQ - beetmover-checksums-sq-linux64-aarch64-shippable/opt: cWdyag-pSJiZRxeQFLkIYA - beetmover-checksums-sq-linux64-shippable/opt: KZhQjMoJQF2qiwGHzctnbQ - beetmover-checksums-sq-macosx64-shippable/opt: AL14bQlkQYqD7mVsi_W0ZA - beetmover-checksums-sq-win32-shippable/opt: JKBb5uGRQLKNKij8FE0iTA - beetmover-checksums-sq-win64-aarch64-shippable/opt: CVYeB03uSdmdPseQ25wKxA - beetmover-checksums-sq-win64-shippable/opt: I5PQiAlPTcOAeRknjKCyvw - beetmover-checksums-sr-linux-shippable/opt: f3GwDr5lSbaV0D03E5_ztA - beetmover-checksums-sr-linux64-aarch64-shippable/opt: WvpT8UP9S2-Fe2PM1OHufA - beetmover-checksums-sr-linux64-shippable/opt: Cx-pREc_SEWFu9aWuBWOYQ - beetmover-checksums-sr-macosx64-shippable/opt: QiokAFL2Roi3_mMxHyRAjw - beetmover-checksums-sr-win32-shippable/opt: CMI-iPZ-S5eAZSCHIk8heg - beetmover-checksums-sr-win64-aarch64-shippable/opt: JFdnKNt_TOmFYeRx5hjONA - beetmover-checksums-sr-win64-shippable/opt: avuDlySQQLeN7mwI_y2sJA - beetmover-checksums-sv-SE-linux-shippable/opt: W6EQ09_2QZ-xw5yCBdQEag - beetmover-checksums-sv-SE-linux64-aarch64-shippable/opt: XUczs_-7S0iEmDG4PtDuZg - beetmover-checksums-sv-SE-linux64-shippable/opt: fRI1xpjeQ3qw3FHlWO6gcg - beetmover-checksums-sv-SE-macosx64-shippable/opt: e2A0g-ogQ2yZEeLyCWAYCw - beetmover-checksums-sv-SE-win32-shippable/opt: e8B_8YH5SPywmLw8r8sI8A - beetmover-checksums-sv-SE-win64-aarch64-shippable/opt: WYVq4PYbQya1RBcnYaU2CA - beetmover-checksums-sv-SE-win64-shippable/opt: B4R5QHzQQLeNnHIK22m3BQ - beetmover-checksums-szl-linux-shippable/opt: K6CN9kQLQOuS6l6RV8MMXA - beetmover-checksums-szl-linux64-aarch64-shippable/opt: fBo7PPRmRlGPN0OCiwC5zQ - beetmover-checksums-szl-linux64-shippable/opt: QKhB1IuRSi6vkYa2NTvRXg - beetmover-checksums-szl-macosx64-shippable/opt: SHaA4yVcQOGUbbL5gYj55g - beetmover-checksums-szl-win32-shippable/opt: NnxganasQFSvgG-N7YaAAA - beetmover-checksums-szl-win64-aarch64-shippable/opt: d3y_t8FnT6iluheWVd7ykg - beetmover-checksums-szl-win64-shippable/opt: CADYyGcOT4ukl6vJfhPXIA - beetmover-checksums-ta-linux-shippable/opt: VgajcmLRQ226GdUX09Ra7Q - beetmover-checksums-ta-linux64-aarch64-shippable/opt: Ajt-nXyvQFiNKzWw8pQu5g - beetmover-checksums-ta-linux64-shippable/opt: W_HUM3yfQFK5cpj6oh_1ug - beetmover-checksums-ta-macosx64-shippable/opt: QYQcYdBZRViFeP2NUdIV7Q - beetmover-checksums-ta-win32-shippable/opt: P8NYwtNQR8Gepi0T69pv9Q - beetmover-checksums-ta-win64-aarch64-shippable/opt: fGrzvgMWR-i4zL7H_7C0-w - beetmover-checksums-ta-win64-shippable/opt: bsH5tja9SJyqlWamywzu1Q - beetmover-checksums-te-linux-shippable/opt: ZJMchA1uSvWxbTArRcIFVg - beetmover-checksums-te-linux64-aarch64-shippable/opt: KMMzDkniTKeSexRi-YDS1g - beetmover-checksums-te-linux64-shippable/opt: FPdgnPBLQcq5RxcxUjeEfw - beetmover-checksums-te-macosx64-shippable/opt: MVTgLY6tT-6JmbE1QRrMbg - beetmover-checksums-te-win32-shippable/opt: LPBLmX3qTgCHyhDkmUN_8Q - beetmover-checksums-te-win64-aarch64-shippable/opt: bGZzjLnsTy2qT8R5s_lekg - beetmover-checksums-te-win64-shippable/opt: SdalPGirQ6axhqSlu0gwUw - beetmover-checksums-tg-linux-shippable/opt: bkzf7zrKQ3aDlPOiSieI3w - beetmover-checksums-tg-linux64-aarch64-shippable/opt: az92z7oiR-6Esbaxk4_wCA - beetmover-checksums-tg-linux64-shippable/opt: Zp8A7hgXRO-g2NwmdFWigg - beetmover-checksums-tg-macosx64-shippable/opt: Urx0hLGFSguhzhTBP8VnVA - beetmover-checksums-tg-win32-shippable/opt: T-BtO_NETVKt18SFJzdkHQ - beetmover-checksums-tg-win64-aarch64-shippable/opt: NZij6ZjxSBqq-rqMqAXGUA - beetmover-checksums-tg-win64-shippable/opt: Icd-P4lwR5WHAmHS3Q7QdQ - beetmover-checksums-th-linux-shippable/opt: c4AoKbZZQHyhdjuP7J3arw - beetmover-checksums-th-linux64-aarch64-shippable/opt: P9QLyUxITimbdn0s8RfQcA - beetmover-checksums-th-linux64-shippable/opt: AslRPBSpTQ2eZ5_54oYIrw - beetmover-checksums-th-macosx64-shippable/opt: LxlLOyqdSvSkcEw-YL4x-Q - beetmover-checksums-th-win32-shippable/opt: ZEKDHonqSqWWTF6kQyjDZw - beetmover-checksums-th-win64-aarch64-shippable/opt: MiAhlmSXQfmGoxXK42o_Gw - beetmover-checksums-th-win64-shippable/opt: Vn21SG-nTUqS5dawU76nlQ - beetmover-checksums-tl-linux-shippable/opt: Dy992LzWSxWr73qX8eGsOQ - beetmover-checksums-tl-linux64-aarch64-shippable/opt: emVaqrOTSP-WMKNVNFDgXA - beetmover-checksums-tl-linux64-shippable/opt: HXOn5PW1SH-PQP0sRczVWg - beetmover-checksums-tl-macosx64-shippable/opt: ddClLY2CR2qh8Rvd2mOs2w - beetmover-checksums-tl-win32-shippable/opt: MdPAIs5KQOml97MxED4h4Q - beetmover-checksums-tl-win64-aarch64-shippable/opt: WVgzNlUFRRKwecKxlsBZrg - beetmover-checksums-tl-win64-shippable/opt: PuXelnNJSWi5kzObMOZSNA - beetmover-checksums-tr-linux-shippable/opt: SFc644hnSm2bKI4lQbhjOQ - beetmover-checksums-tr-linux64-aarch64-shippable/opt: Cx3RfIpYSnim_MT5MsNqaA - beetmover-checksums-tr-linux64-shippable/opt: MPY5hnIcQQSJASIPdSdrng - beetmover-checksums-tr-macosx64-shippable/opt: YvqVmdRPS7KaRuD1nAykuA - beetmover-checksums-tr-win32-shippable/opt: AY4pTC53QgmUNmLqHIwSDA - beetmover-checksums-tr-win64-aarch64-shippable/opt: Be7znpFSSNCJkEBmwn0GBw - beetmover-checksums-tr-win64-shippable/opt: ce_tYvnhQ-mMMiBOG0BmDA - beetmover-checksums-trs-linux-shippable/opt: M6W7gWdKTy-Uiw7jbkMMLw - beetmover-checksums-trs-linux64-aarch64-shippable/opt: KBVfi_4nR8OjDmGV2mKAiQ - beetmover-checksums-trs-linux64-shippable/opt: dJyWmO38SgGjWwA2SvCM0g - beetmover-checksums-trs-macosx64-shippable/opt: X57vTVvBQwSKV-tpe-CWVw - beetmover-checksums-trs-win32-shippable/opt: ZdMmK6n8ST-1q1K92ilUBw - beetmover-checksums-trs-win64-aarch64-shippable/opt: A7SSCdMoSvWoKmp34grluA - beetmover-checksums-trs-win64-shippable/opt: fMLAB9wqT_OHk-c7u7jVdA - beetmover-checksums-uk-linux-shippable/opt: aAZtxUxMQxqymUzAivcDgA - beetmover-checksums-uk-linux64-aarch64-shippable/opt: aGjRGeTaRGiRnlSVLSl5nw - beetmover-checksums-uk-linux64-shippable/opt: Rr2huMogTYO8VmZQmmLq0g - beetmover-checksums-uk-macosx64-shippable/opt: SFM-pVzsS-SXgcIrqo4rwg - beetmover-checksums-uk-win32-shippable/opt: SUq7jxqnQS-umWDJzn4W_A - beetmover-checksums-uk-win64-aarch64-shippable/opt: ORuQ6nGiQW6aacYa0D_D7Q - beetmover-checksums-uk-win64-shippable/opt: AMGhIw9FTrOnzmhAzKtIWQ - beetmover-checksums-ur-linux-shippable/opt: fcmuNj7RQf-sx2FvEogH8A - beetmover-checksums-ur-linux64-aarch64-shippable/opt: eFIHkf46RguEh7Xw7j_EOg - beetmover-checksums-ur-linux64-shippable/opt: AivuGcvJRYSVF7_5hrTdeA - beetmover-checksums-ur-macosx64-shippable/opt: IPOE3j_IS5-qBRzIGeXbGA - beetmover-checksums-ur-win32-shippable/opt: MS2NGnC2QWO8vlWX_RzuGg - beetmover-checksums-ur-win64-aarch64-shippable/opt: NmV5gDhyS12mZfUQdYvfBg - beetmover-checksums-ur-win64-shippable/opt: ZdXXFdaiT6WIsuRy-gXhNQ - beetmover-checksums-uz-linux-shippable/opt: UlzP4KNlTcKzCMOGCKHhHQ - beetmover-checksums-uz-linux64-aarch64-shippable/opt: FF9iUQpCSpK7SxzSrDDd6w - beetmover-checksums-uz-linux64-shippable/opt: Fc8BQxi1TX6VQSyaRMu_qQ - beetmover-checksums-uz-macosx64-shippable/opt: Xi_BXyUfTlCNw_wo0dtZzg - beetmover-checksums-uz-win32-shippable/opt: PtwSdgoFRom9JiJLfUZ66A - beetmover-checksums-uz-win64-aarch64-shippable/opt: c0Rowy_DRu6r4Vo9gEBAEQ - beetmover-checksums-uz-win64-shippable/opt: Lko7OwDSSYi3zdpmW-sBTQ - beetmover-checksums-vi-linux-shippable/opt: MH1teNAiQjexAN8grwuBYw - beetmover-checksums-vi-linux64-aarch64-shippable/opt: dRNa2nzXR1Ot0jHImz3E1A - beetmover-checksums-vi-linux64-shippable/opt: CSGi_912TLGWmm_fV6CYvg - beetmover-checksums-vi-macosx64-shippable/opt: NP1-RZOZTLqbkW66NXZWFg - beetmover-checksums-vi-win32-shippable/opt: G5ZF6LhRTrK9vfQs1Udr1g - beetmover-checksums-vi-win64-aarch64-shippable/opt: BE1AEVKrRGaFT1nyuVhzig - beetmover-checksums-vi-win64-shippable/opt: QV0iIgjGRjCZl4yZivqn9Q - beetmover-checksums-win32-shippable/opt: SrARZ3-sRC-cOdwb71IY1A - beetmover-checksums-win64-aarch64-shippable/opt: PFdVVx83QY-Y3_AhZv8euQ - beetmover-checksums-win64-shippable/opt: W7MCkxJyQL2Vpuf0DO5BIA - beetmover-checksums-xh-linux-shippable/opt: FzCSPfNCSey5M--fVhS9Ow - beetmover-checksums-xh-linux64-aarch64-shippable/opt: b093l65lTSuyVi-7kHvOyA - beetmover-checksums-xh-linux64-shippable/opt: btHmgFnNTImIePn7wW7CPw - beetmover-checksums-xh-macosx64-shippable/opt: CPFDvdP2SSqHEDOHtOyk3g - beetmover-checksums-xh-win32-shippable/opt: RCfPhh-7QWOeRnQ6XVONpA - beetmover-checksums-xh-win64-aarch64-shippable/opt: WasZnBAmSiurJdBSjLwnsw - beetmover-checksums-xh-win64-shippable/opt: KxmjaPKfTdaqU1E4Y6UEXA - beetmover-checksums-zh-CN-linux-shippable/opt: TuuejPWmQGq-XYXHbxQn1w - beetmover-checksums-zh-CN-linux64-aarch64-shippable/opt: ES6hHyFjTrSlcVtcFYPhzA - beetmover-checksums-zh-CN-linux64-shippable/opt: GmpKTm-aRMiU7xP84zTVXA - beetmover-checksums-zh-CN-macosx64-shippable/opt: RRCS75TWR2aGcoj-8U2E3w - beetmover-checksums-zh-CN-win32-shippable/opt: NrZCvMc4TJ2DlfR-aWYVog - beetmover-checksums-zh-CN-win64-aarch64-shippable/opt: Kub1Ep5BRi-9noUaO0bCPw - beetmover-checksums-zh-CN-win64-shippable/opt: M1k50Eo4QwaNo8m3S3KVTg - beetmover-checksums-zh-TW-linux-shippable/opt: EGD9XqijT3-BsDOPKdmbKA - beetmover-checksums-zh-TW-linux64-aarch64-shippable/opt: bZoO9BTLQEqzojfBfXQg4g - beetmover-checksums-zh-TW-linux64-shippable/opt: chWCY5S-TLuCkKdUc3Si1w - beetmover-checksums-zh-TW-macosx64-shippable/opt: Pp7iIY9kSKWMLkPES1AOTg - beetmover-checksums-zh-TW-win32-shippable/opt: NIY2zIEzS6m3ox_J_E4OhQ - beetmover-checksums-zh-TW-win64-aarch64-shippable/opt: BmHrskDnS2am9imNdznzuA - beetmover-checksums-zh-TW-win64-shippable/opt: CpYaneHHTXCaRUXMesduWg - beetmover-repackage-ach-linux-shippable/opt: MQiiqpONSJqzMyRNgBo7vA - beetmover-repackage-ach-linux64-aarch64-shippable/opt: CCjyHpa3QxOQFdFJN_Ig0Q - beetmover-repackage-ach-linux64-shippable/opt: DSaVePsGTPWn9fXpOFvKTA - beetmover-repackage-ach-macosx64-shippable/opt: Y92F-vPET3qn_qxPpOC3gw - beetmover-repackage-ach-win32-shippable/opt: Xnd5M-l4T6Gi-SFlNHY4vw - beetmover-repackage-ach-win64-aarch64-shippable/opt: KuDspkTIRomhflg1CBNDjw - beetmover-repackage-ach-win64-shippable/opt: cxkxwKSBRfynYSuP7BRdUg - beetmover-repackage-af-linux-shippable/opt: RJVvFoqlTI6f58cuWrrH3A - beetmover-repackage-af-linux64-aarch64-shippable/opt: M3Z_PpwxRDWlYg1nAFoi8Q - beetmover-repackage-af-linux64-shippable/opt: Meo1d3EASK22QMhqA38ubA - beetmover-repackage-af-macosx64-shippable/opt: G-orlYlzSo2GnqA6WZch8Q - beetmover-repackage-af-win32-shippable/opt: avgZKHAyR2W2jEKIRkZkyw - beetmover-repackage-af-win64-aarch64-shippable/opt: RxT1DYYuQq-jHMxOohOs4w - beetmover-repackage-af-win64-shippable/opt: ZUTCvN9kQR617pkSGeZ-uQ - beetmover-repackage-an-linux-shippable/opt: J2qMapTLTiy5k8JAioCz3Q - beetmover-repackage-an-linux64-aarch64-shippable/opt: GSFuzdyGQtW_0ywiin_fYg - beetmover-repackage-an-linux64-shippable/opt: LvAxi2dHQHqdOzTAmHPOtg - beetmover-repackage-an-macosx64-shippable/opt: KoLPjnUyTyKdJx74jpLU7g - beetmover-repackage-an-win32-shippable/opt: JNNLMCgJRZilHXnR_WE2aQ - beetmover-repackage-an-win64-aarch64-shippable/opt: Cqe14qtYS5KjXNmOOc7VOg - beetmover-repackage-an-win64-shippable/opt: EJbxvjI6Qh60D5UrtFIqQw - beetmover-repackage-ar-linux-shippable/opt: X6YlEZ3GQHqymA5BZ3eOeQ - beetmover-repackage-ar-linux64-aarch64-shippable/opt: HiAwBKlATIucSeni0plmng - beetmover-repackage-ar-linux64-shippable/opt: H-NTczR-R4SDelU969bwpg - beetmover-repackage-ar-macosx64-shippable/opt: X-CJjKL3QSC0pNZn2aeGTw - beetmover-repackage-ar-win32-shippable/opt: RReMlHxSRcGjBB8Qx5hYng - beetmover-repackage-ar-win64-aarch64-shippable/opt: YYKdhiHWQfOTLWAAiV2TsQ - beetmover-repackage-ar-win64-shippable/opt: BrLVPlf8RHOxDBh_g8djbA - beetmover-repackage-ast-linux-shippable/opt: TdMVR_fTQlWKp3GZ3PlJkA - beetmover-repackage-ast-linux64-aarch64-shippable/opt: EHGPaD3WRCeU_9KN1z7j_w - beetmover-repackage-ast-linux64-shippable/opt: G7aEF3ujQWCgGc1EeuzB0g - beetmover-repackage-ast-macosx64-shippable/opt: emX1eeEQSfmCbiViYfAsuQ - beetmover-repackage-ast-win32-shippable/opt: N7lruTrXRuaRsZb2axC5vw - beetmover-repackage-ast-win64-aarch64-shippable/opt: MjKs8g3ZQqmdLBp_u0QuRw - beetmover-repackage-ast-win64-shippable/opt: KE6l9uMlRAuHYeELsruKzQ - beetmover-repackage-az-linux-shippable/opt: UrBUJLGVSqiAQNrfqRyWeg - beetmover-repackage-az-linux64-aarch64-shippable/opt: Ue7VNQC3Qku6sNsQeIgGJQ - beetmover-repackage-az-linux64-shippable/opt: Ea8EAAX9RgucMLd2B3LdjA - beetmover-repackage-az-macosx64-shippable/opt: fwCPcuFUQUW-D4sQNokruA - beetmover-repackage-az-win32-shippable/opt: V_VkiS--TeSfiySRpFrR6Q - beetmover-repackage-az-win64-aarch64-shippable/opt: c5tP8MI3S52AazUnii3w0Q - beetmover-repackage-az-win64-shippable/opt: BA6mpOVwQASahn4xAnTeyA - beetmover-repackage-be-linux-shippable/opt: RU4x0hpdTRSOT50qyhtwyg - beetmover-repackage-be-linux64-aarch64-shippable/opt: X3oZLQ7eQQq_sEO1uP1Ozg - beetmover-repackage-be-linux64-shippable/opt: SYG9KyhvSzayzeTWNUg8JA - beetmover-repackage-be-macosx64-shippable/opt: RjOoo8FrSveZ7kvCuyk_Iw - beetmover-repackage-be-win32-shippable/opt: Ri81xAfDRzKRCvZeqrtXVA - beetmover-repackage-be-win64-aarch64-shippable/opt: Yazr0aCQSby9JYTpmq5wag - beetmover-repackage-be-win64-shippable/opt: CFI61HAOTTm2cLbPKAzgtg - beetmover-repackage-bg-linux-shippable/opt: EQ4nfFJTROWhjcOynQgxgQ - beetmover-repackage-bg-linux64-aarch64-shippable/opt: aOkGqlI3RIWGAGUBOD7HpA - beetmover-repackage-bg-linux64-shippable/opt: Cwa9ArcJQweehWlnAIdvsA - beetmover-repackage-bg-macosx64-shippable/opt: RC7VtBm3Tya5g3DKa7DllA - beetmover-repackage-bg-win32-shippable/opt: JgfqTRMzQzWQVhh4AosLMQ - beetmover-repackage-bg-win64-aarch64-shippable/opt: INsKSf1JRu2ESmUDUqN1rg - beetmover-repackage-bg-win64-shippable/opt: fIB7FuaES4WQmU-yOsUOjQ - beetmover-repackage-bn-linux-shippable/opt: ZfbOPeIOSWGwCtGN1Vkv3g - beetmover-repackage-bn-linux64-aarch64-shippable/opt: RlfkyMM4SOma-5YuoeE2xQ - beetmover-repackage-bn-linux64-shippable/opt: JExJtak-T8OnZY2KZ4MlzA - beetmover-repackage-bn-macosx64-shippable/opt: M4S2zIFsShK_sT82q7yorA - beetmover-repackage-bn-win32-shippable/opt: A7c9IauFTmODbFKXt344zg - beetmover-repackage-bn-win64-aarch64-shippable/opt: H0Ip28jaQkmvbIEOc6hOcg - beetmover-repackage-bn-win64-shippable/opt: Uq19Pxt6RCa1Kmk2cf324A - beetmover-repackage-br-linux-shippable/opt: DPYMjB7-TWei1wIYvgDEjQ - beetmover-repackage-br-linux64-aarch64-shippable/opt: HAG3XcZzQp2kPo04E4CbKg - beetmover-repackage-br-linux64-shippable/opt: Z-DRrNa6SZu1WinIHaU1Ow - beetmover-repackage-br-macosx64-shippable/opt: K8a4Qh-OSQq5BtTsDOm9NQ - beetmover-repackage-br-win32-shippable/opt: BPJur8kcQmmKmfNk2-nmUQ - beetmover-repackage-br-win64-aarch64-shippable/opt: JlJ6F0p4SCGayZYWF6sZPA - beetmover-repackage-br-win64-shippable/opt: FO7PO6PyTn-ekYnoVTJ23Q - beetmover-repackage-bs-linux-shippable/opt: KR67BwhLS62HxFBbC9SJlA - beetmover-repackage-bs-linux64-aarch64-shippable/opt: KKfoc3PUTGyv9RbVl-TJgA - beetmover-repackage-bs-linux64-shippable/opt: Y76laMC5QPOtA1qSsMFa5g - beetmover-repackage-bs-macosx64-shippable/opt: GAos8FbHRNmbvtYnBw1ACw - beetmover-repackage-bs-win32-shippable/opt: PF2VJzKkR-WjJt6VdBlTDQ - beetmover-repackage-bs-win64-aarch64-shippable/opt: SboanWOuTrCGd0y6sH2OCg - beetmover-repackage-bs-win64-shippable/opt: CKtz3T4tTmurl_1OpBYQ3g - beetmover-repackage-ca-linux-shippable/opt: JXegIFDUROS1jvA6EF5skw - beetmover-repackage-ca-linux64-aarch64-shippable/opt: Uf_6FO13RI6RZ6rcr0wvQQ - beetmover-repackage-ca-linux64-shippable/opt: VgBqrH1ISlaDmvxC6ZHWrw - beetmover-repackage-ca-macosx64-shippable/opt: Fnrmd2ScSNKpRdfC88IS2g - beetmover-repackage-ca-valencia-linux-shippable/opt: Z6Hw3eVYTRSsqPtwiNCwrA - beetmover-repackage-ca-valencia-linux64-aarch64-shippable/opt: fZ-XnQtuTm-4E0GnAu4HjQ - beetmover-repackage-ca-valencia-linux64-shippable/opt: ZgJf_cv4RjWFnnTUoOF9BQ - beetmover-repackage-ca-valencia-macosx64-shippable/opt: Sjy1LJr1QOa6pI1XzHRtbw - beetmover-repackage-ca-valencia-win32-shippable/opt: Dp2-x27cQXab6r6vTpHZIw - beetmover-repackage-ca-valencia-win64-aarch64-shippable/opt: OGlfU03WQLCBkJFg6OzQjA - beetmover-repackage-ca-valencia-win64-shippable/opt: JXTMqDnpQzy3u4wKlrtJCA - beetmover-repackage-ca-win32-shippable/opt: AzLBwI1IQu2o_k5O6M14KA - beetmover-repackage-ca-win64-aarch64-shippable/opt: dBFokfmpSTWMn5c44yH59Q - beetmover-repackage-ca-win64-shippable/opt: apOp8qgzQsS_9N5aHjJLgw - beetmover-repackage-cak-linux-shippable/opt: SQ51n3S2S6SgUMVdtPlrHg - beetmover-repackage-cak-linux64-aarch64-shippable/opt: U_V7RSZtRuqHy-MOe9fbpw - beetmover-repackage-cak-linux64-shippable/opt: epdPmukXTZugDE9sSzwupQ - beetmover-repackage-cak-macosx64-shippable/opt: B3X5k_PRT1uCeKvpQMrcfg - beetmover-repackage-cak-win32-shippable/opt: TUDDILDoRIi0uP_HWajrOw - beetmover-repackage-cak-win64-aarch64-shippable/opt: RFnroeesRfCb29qsf5BQtg - beetmover-repackage-cak-win64-shippable/opt: ZfBBbiQxSjeLiN4oa3avfQ - beetmover-repackage-cs-linux-shippable/opt: H3xM5l8DRr-6pxcPhE8fTQ - beetmover-repackage-cs-linux64-aarch64-shippable/opt: U-bR8HzGRya_fM3wJ6EQtw - beetmover-repackage-cs-linux64-shippable/opt: TqkvVw2IQGG7r-5_KpfkYw - beetmover-repackage-cs-macosx64-shippable/opt: NRGs6llaTjiCB1CQ8_Dlng - beetmover-repackage-cs-win32-shippable/opt: QdaLlsHpSKGJuL0d8BpfNw - beetmover-repackage-cs-win64-aarch64-shippable/opt: D2pFGXDxQy2xAqU_NjMQyw - beetmover-repackage-cs-win64-shippable/opt: Uxe7g4HbTrKZyM-6vbWTJw - beetmover-repackage-cy-linux-shippable/opt: IXDN3t_YTgqmIqXy_VQu_w - beetmover-repackage-cy-linux64-aarch64-shippable/opt: HlA60-nGSxOkI1Zeh-H3Pw - beetmover-repackage-cy-linux64-shippable/opt: B9KFW502ReaNDRkARoX9Sg - beetmover-repackage-cy-macosx64-shippable/opt: OgwjTpvhTNWJOrYvL03Qsg - beetmover-repackage-cy-win32-shippable/opt: YtBXF4KNQ3-J2vJvyyX18g - beetmover-repackage-cy-win64-aarch64-shippable/opt: W6VIbGsBQ2m5u-AWa4j6Jg - beetmover-repackage-cy-win64-shippable/opt: V5x-IY84S1OdkMiJY5wTsQ - beetmover-repackage-da-linux-shippable/opt: ZY3svpjBSrCFjCx8tC6xgw - beetmover-repackage-da-linux64-aarch64-shippable/opt: L53k29shQA-g4-JNRmrRlQ - beetmover-repackage-da-linux64-shippable/opt: Txw-aeI-TD-s6P8gLw4KuQ - beetmover-repackage-da-macosx64-shippable/opt: apD9MnjHSRWV7mbEY3IYRQ - beetmover-repackage-da-win32-shippable/opt: KsnbD0GTTkayC7ieR3h7Bw - beetmover-repackage-da-win64-aarch64-shippable/opt: GjM1N3rSS026qmnNdt5WlQ - beetmover-repackage-da-win64-shippable/opt: Z-xWHljDTSeF6LUyRD8tbw - beetmover-repackage-de-linux-shippable/opt: M2lJlLoYTte7cHpLh6NIUw - beetmover-repackage-de-linux64-aarch64-shippable/opt: MgdI38cyR9CRxTOWcDvFGw - beetmover-repackage-de-linux64-shippable/opt: KYjRYmotR4KwNhIrT_8n3A - beetmover-repackage-de-macosx64-shippable/opt: AP2PRAtAQp-vQZoltfKlFg - beetmover-repackage-de-win32-shippable/opt: GeYxrxAAQg2AE2NzoaNJjg - beetmover-repackage-de-win64-aarch64-shippable/opt: O-pI96vBRD64x-1-ZcBmSg - beetmover-repackage-de-win64-shippable/opt: SOGxv2JxToOOV4VWiHf7Rw - beetmover-repackage-dsb-linux-shippable/opt: Ijt9TTSBTBeR1XnTebyxtQ - beetmover-repackage-dsb-linux64-aarch64-shippable/opt: FXSFuM3gSMSwc3VSSgHDsg - beetmover-repackage-dsb-linux64-shippable/opt: Rfe4u69_RgycOKx0_u4zoA - beetmover-repackage-dsb-macosx64-shippable/opt: AKAnggFISRGkMHKqeBrruA - beetmover-repackage-dsb-win32-shippable/opt: PTygjzWVTL-NTkFChqLIZA - beetmover-repackage-dsb-win64-aarch64-shippable/opt: BHQ1q5WkSNS2XTLi3fmIPQ - beetmover-repackage-dsb-win64-shippable/opt: H3hzFX-uSqiYaw889VzJsg - beetmover-repackage-el-linux-shippable/opt: WrMHT9dKQV2Ou3UHskP0PQ - beetmover-repackage-el-linux64-aarch64-shippable/opt: QmvaPJkxRP-H0D-IJttrmQ - beetmover-repackage-el-linux64-shippable/opt: cAryYqNyT3CmjJBK9WjIYQ - beetmover-repackage-el-macosx64-shippable/opt: TZrbCm-DQDeQub59Ws2Ylg - beetmover-repackage-el-win32-shippable/opt: XSodxyX6T0yD-DAUYL-uOA - beetmover-repackage-el-win64-aarch64-shippable/opt: KqiUpTV2TbCXcq0VAgkokA - beetmover-repackage-el-win64-shippable/opt: J3ALOXsdQq-uetOceVyWfg - beetmover-repackage-en-CA-linux-shippable/opt: OEZK8LYzR_aoUc9nnCZe8A - beetmover-repackage-en-CA-linux64-aarch64-shippable/opt: R_vN6fKNRvqQx_Pyc0yi5Q - beetmover-repackage-en-CA-linux64-shippable/opt: CNXYHNgCTTOi_AHCCGlr4w - beetmover-repackage-en-CA-macosx64-shippable/opt: IQuTcoXWR728OeMDMU7omA - beetmover-repackage-en-CA-win32-shippable/opt: Gf69pfH6SFujIinZ6Qt6ng - beetmover-repackage-en-CA-win64-aarch64-shippable/opt: ay2NCHzkRcqiovifQ7FKfQ - beetmover-repackage-en-CA-win64-shippable/opt: LLOEoVOOT924pLI2bD9h4w - beetmover-repackage-en-GB-linux-shippable/opt: AsNac_eHRMKyNUZqX2GeDw - beetmover-repackage-en-GB-linux64-aarch64-shippable/opt: Zrv8WbC_Qf6yrrmP5x-NYw - beetmover-repackage-en-GB-linux64-shippable/opt: FK0sVcBgRqKFc5AcfgY7eg - beetmover-repackage-en-GB-macosx64-shippable/opt: BciCZvh4REefnn5AoAQBTw - beetmover-repackage-en-GB-win32-shippable/opt: WU05d0wHTWu59xGjfZ4sJw - beetmover-repackage-en-GB-win64-aarch64-shippable/opt: Yo3Q1WnsTvGLGjqoLgtdfA - beetmover-repackage-en-GB-win64-shippable/opt: I-CI2BX0Qc6qyDmseaJnZw - beetmover-repackage-eo-linux-shippable/opt: DSn3eb-GQVeAPMp9u-gFFA - beetmover-repackage-eo-linux64-aarch64-shippable/opt: X6nk2tabTF6DOsBq58vrog - beetmover-repackage-eo-linux64-shippable/opt: It_I5fNQQcaHDUBzb8d9yg - beetmover-repackage-eo-macosx64-shippable/opt: BOqIgiDyRl-_Bz2a_JVjSw - beetmover-repackage-eo-win32-shippable/opt: dfUsnMGbQvOkGRZugiQhww - beetmover-repackage-eo-win64-aarch64-shippable/opt: Atz_RRiaQuC8ac8_L1acKg - beetmover-repackage-eo-win64-shippable/opt: R9hj_Y6lSOOTIfs_TtowLg - beetmover-repackage-es-AR-linux-shippable/opt: O9qdETm6TJq5c7jiJ-8SmA - beetmover-repackage-es-AR-linux64-aarch64-shippable/opt: L19HqJzGSq2mciIFd_aJgA - beetmover-repackage-es-AR-linux64-shippable/opt: doIec_4BSkioqQm6YTztZg - beetmover-repackage-es-AR-macosx64-shippable/opt: KTT-7ufTSrevp4ew8JhdqA - beetmover-repackage-es-AR-win32-shippable/opt: DGucmO1qT0GKe8DJ4Xts0Q - beetmover-repackage-es-AR-win64-aarch64-shippable/opt: W_XAbqE5QJSN39F6mpoL7w - beetmover-repackage-es-AR-win64-shippable/opt: OyKh4iDAQFSMXjGZe4x86g - beetmover-repackage-es-CL-linux-shippable/opt: aK6rENb8QN6FaHrj7l0V8Q - beetmover-repackage-es-CL-linux64-aarch64-shippable/opt: arQv1u1gTMGilVVOmwp-EA - beetmover-repackage-es-CL-linux64-shippable/opt: AQUp6-hSQFu4CGmiLa1lgA - beetmover-repackage-es-CL-macosx64-shippable/opt: SB_9a1PwTEWe8-tZHs-17w - beetmover-repackage-es-CL-win32-shippable/opt: G9pSDpPuStuyMv48CYLD4g - beetmover-repackage-es-CL-win64-aarch64-shippable/opt: fg2xEbr3RZ6hC_x-Cnq44w - beetmover-repackage-es-CL-win64-shippable/opt: VD_F48lxTHmsg5lS3qbJLQ - beetmover-repackage-es-ES-linux-shippable/opt: MOBecJ2BTgy80jQ-mMu71Q - beetmover-repackage-es-ES-linux64-aarch64-shippable/opt: BdsaSmy4R3W5x1hemRonAg - beetmover-repackage-es-ES-linux64-shippable/opt: P46W1YGIR-6eycyih1gumw - beetmover-repackage-es-ES-macosx64-shippable/opt: SLNk6VQsQqWKFw9OPZqq4g - beetmover-repackage-es-ES-win32-shippable/opt: Jx9TY-iMRuGFPJmp5w-DlQ - beetmover-repackage-es-ES-win64-aarch64-shippable/opt: axujiYDoTnuf_v_sY1hcSw - beetmover-repackage-es-ES-win64-shippable/opt: Uhkk_4QVREa37I6G-Q0vhw - beetmover-repackage-es-MX-linux-shippable/opt: cRjbgIQhR--jzZX-mvz7Qw - beetmover-repackage-es-MX-linux64-aarch64-shippable/opt: MQK6YTMWQ4mOPG88jtDiQw - beetmover-repackage-es-MX-linux64-shippable/opt: c9x_KVXpT8GpDW1JgI_8vQ - beetmover-repackage-es-MX-macosx64-shippable/opt: O7Jjg0nvTrWq9J2MiXDosA - beetmover-repackage-es-MX-win32-shippable/opt: WiFjvbvhSVaNy1ufyW4uZg - beetmover-repackage-es-MX-win64-aarch64-shippable/opt: S08wluLWQS25vhk594lGTg - beetmover-repackage-es-MX-win64-shippable/opt: YjhdmD6XQJuEtBEuPk38dg - beetmover-repackage-et-linux-shippable/opt: aER4NCyHSryTWdoLUPVRAg - beetmover-repackage-et-linux64-aarch64-shippable/opt: JmMF3FEUSFehQklbftsZiQ - beetmover-repackage-et-linux64-shippable/opt: CZT_dfjkQ86GhZbRkaFEOQ - beetmover-repackage-et-macosx64-shippable/opt: HfSvfMWWQpaolm6wy1Kc9Q - beetmover-repackage-et-win32-shippable/opt: JEb3FujkRN6OEUuP6iG1mQ - beetmover-repackage-et-win64-aarch64-shippable/opt: ZK1VdfHdRiSwdazf3-1L3g - beetmover-repackage-et-win64-shippable/opt: Uhlj32dkQTyVojW9nn_uKg - beetmover-repackage-eu-linux-shippable/opt: PuJhS1mAQ_qT1btXc8qxIQ - beetmover-repackage-eu-linux64-aarch64-shippable/opt: I1hG-0LORCmBrPyGRNINtg - beetmover-repackage-eu-linux64-shippable/opt: Mz3WVSPkSd607VHo_Il4Jw - beetmover-repackage-eu-macosx64-shippable/opt: YBmtJcmJT8GlkC8rgsW5CA - beetmover-repackage-eu-win32-shippable/opt: PH5PkYhBT6KDvO9cPJXJxA - beetmover-repackage-eu-win64-aarch64-shippable/opt: ej3tYqEaQnOpR2g5oHNDhQ - beetmover-repackage-eu-win64-shippable/opt: ds-zIWKRSICuqtGdgsDQsw - beetmover-repackage-fa-linux-shippable/opt: FGDKdF0pRVy5tS120zGQjA - beetmover-repackage-fa-linux64-aarch64-shippable/opt: MSRwret5SeCVxTfMuWUEUA - beetmover-repackage-fa-linux64-shippable/opt: MLmkbx1hTne8IWEKvH17ng - beetmover-repackage-fa-macosx64-shippable/opt: MIloe-TLTe2Ae5VuW1rVpw - beetmover-repackage-fa-win32-shippable/opt: M_TpRyDKSF2DRFL3HMyQNg - beetmover-repackage-fa-win64-aarch64-shippable/opt: FnRWPSNwTuSNwopQ0Zhvvw - beetmover-repackage-fa-win64-shippable/opt: JbrU53t6TNqZExZD2N_FTg - beetmover-repackage-ff-linux-shippable/opt: Ww5e2V6tSQKHnyuQhbsZ7g - beetmover-repackage-ff-linux64-aarch64-shippable/opt: bzJreIKBSymp4oRtVu0kTg - beetmover-repackage-ff-linux64-shippable/opt: eSkmWreNTbaM1XcZMsri1Q - beetmover-repackage-ff-macosx64-shippable/opt: P5e2SpOpSlCU_INCDHgRrg - beetmover-repackage-ff-win32-shippable/opt: Zm49imzCRpyjDUkv2qI9vw - beetmover-repackage-ff-win64-aarch64-shippable/opt: SGgEiVhgQhq6xFb-Zq4Rlg - beetmover-repackage-ff-win64-shippable/opt: FXa6qeJLRYK8TKcrlzovew - beetmover-repackage-fi-linux-shippable/opt: Bf3M6hHfSOeHNwm4ru49qA - beetmover-repackage-fi-linux64-aarch64-shippable/opt: Lu85Ur3mQHWQE-dTd5gVoQ - beetmover-repackage-fi-linux64-shippable/opt: Cu2t3Iq3QQiWk2uKrcZC5g - beetmover-repackage-fi-macosx64-shippable/opt: JvUV2h6ZRF-iVQ-Anhef4A - beetmover-repackage-fi-win32-shippable/opt: GfLBflGgS-C07uAP7U0lrw - beetmover-repackage-fi-win64-aarch64-shippable/opt: Dy-Z5uJQQR-RINDtkd_nvQ - beetmover-repackage-fi-win64-shippable/opt: Gy0powfzQga35wgZEaFFxQ - beetmover-repackage-fr-linux-shippable/opt: MRASSTXIQ1OvCVsj2TQ8Wg - beetmover-repackage-fr-linux64-aarch64-shippable/opt: f_1SUOkVRumjrtclsgmWaw - beetmover-repackage-fr-linux64-shippable/opt: OvDJhNFKSZmX5FCmAvWAHA - beetmover-repackage-fr-macosx64-shippable/opt: Qd1kwUfSSzOp2trb460fMg - beetmover-repackage-fr-win32-shippable/opt: Fu9PGIhmT5Ch7QZoRHLhng - beetmover-repackage-fr-win64-aarch64-shippable/opt: DGTZ5bsdQOWp-QbvKPvNhA - beetmover-repackage-fr-win64-shippable/opt: AVLM5xBNRfiNg_Q6UNN4ww - beetmover-repackage-fur-linux-shippable/opt: DpuXUIYiRea9W_3vX9xxjw - beetmover-repackage-fur-linux64-aarch64-shippable/opt: Ui3HF_uNTEiQlqGyac_QvA - beetmover-repackage-fur-linux64-shippable/opt: WxFvl1ynQSq1nmmQXpbkjg - beetmover-repackage-fur-macosx64-shippable/opt: VnUernMnTrmFAVEiFXzKiw - beetmover-repackage-fur-win32-shippable/opt: d4HuFG6jRSq-h2q6YVlTNw - beetmover-repackage-fur-win64-aarch64-shippable/opt: H3L4yIpoTDmAyacC5H29og - beetmover-repackage-fur-win64-shippable/opt: MIwxSdZwRwWlepx44fohpg - beetmover-repackage-fy-NL-linux-shippable/opt: XqGPDZbJSf6A3AVZJV1LMw - beetmover-repackage-fy-NL-linux64-aarch64-shippable/opt: RyUqdJReRFyiM3i44h-DkA - beetmover-repackage-fy-NL-linux64-shippable/opt: eNBf26w_TqqVlpBugYpvMA - beetmover-repackage-fy-NL-macosx64-shippable/opt: FmqkpMSlQRWwen5xd1CI3Q - beetmover-repackage-fy-NL-win32-shippable/opt: ZFi7zuFuQp2RU1ajmQEhEw - beetmover-repackage-fy-NL-win64-aarch64-shippable/opt: V_WQig6RQu2fx9QVSLh7MQ - beetmover-repackage-fy-NL-win64-shippable/opt: HbdivEl6RWeaDsA3lHPVGQ - beetmover-repackage-ga-IE-linux-shippable/opt: QJVPdD7MRT2VI5WxsdYhqQ - beetmover-repackage-ga-IE-linux64-aarch64-shippable/opt: SMu8ZjIAS4Kqaj-Uws6C5A - beetmover-repackage-ga-IE-linux64-shippable/opt: cNxEYcJBSuOCEWEff6YnTA - beetmover-repackage-ga-IE-macosx64-shippable/opt: SRvoBkmKSDGHJ0eNvXUVoA - beetmover-repackage-ga-IE-win32-shippable/opt: Wp0BCyW3Qi69AUJ0vAJj0A - beetmover-repackage-ga-IE-win64-aarch64-shippable/opt: SdwNReOCSeSEeiMavcXoXA - beetmover-repackage-ga-IE-win64-shippable/opt: CNsEcMFFR1KXD5iqGkmUwA - beetmover-repackage-gd-linux-shippable/opt: PiMQDx7PTM2lfkDx2nIeOQ - beetmover-repackage-gd-linux64-aarch64-shippable/opt: GBfn0_5NRcShWgMK74d6eQ - beetmover-repackage-gd-linux64-shippable/opt: K3poGVSVSguzHMpKXCreTg - beetmover-repackage-gd-macosx64-shippable/opt: Bx9ml84AQJqybYBi5tC2mw - beetmover-repackage-gd-win32-shippable/opt: JUmq8_npSOGRkU8PaObIew - beetmover-repackage-gd-win64-aarch64-shippable/opt: H-EaOFH8Qyi0eP4AcQeYLQ - beetmover-repackage-gd-win64-shippable/opt: Pe9mv101TcmKqRQG4JAtPA - beetmover-repackage-gl-linux-shippable/opt: NgD9Hz0ZTaWmiPhwJG-C2Q - beetmover-repackage-gl-linux64-aarch64-shippable/opt: Lzg7moaNSBK4mE01DUnwWA - beetmover-repackage-gl-linux64-shippable/opt: bbaUd24aRsKNpp6CLB2jYQ - beetmover-repackage-gl-macosx64-shippable/opt: IdLZs-T4TrStKHlDg2eP5Q - beetmover-repackage-gl-win32-shippable/opt: GoOWRuhNSAy-JPYyUqD8Fw - beetmover-repackage-gl-win64-aarch64-shippable/opt: Ng51W31PQdSzQIYf14-AlQ - beetmover-repackage-gl-win64-shippable/opt: QY3EYM6_RCaLmb0wup7x4w - beetmover-repackage-gn-linux-shippable/opt: JcTape3YSru_CJgieOXmKg - beetmover-repackage-gn-linux64-aarch64-shippable/opt: YrPEfUwnS8iPOp-U4_LGgw - beetmover-repackage-gn-linux64-shippable/opt: AkcvRhPaT4q0wxwY-8YGWw - beetmover-repackage-gn-macosx64-shippable/opt: HhTPL3m-T5yNJ_yOGl8Fjg - beetmover-repackage-gn-win32-shippable/opt: KpSNwYX2RpqWdYPg7RZdgw - beetmover-repackage-gn-win64-aarch64-shippable/opt: bIm2S2kOQISPfey7hBeupQ - beetmover-repackage-gn-win64-shippable/opt: CF3YXjK0RNSutJ5IBgF8DQ - beetmover-repackage-gu-IN-linux-shippable/opt: XoGIxfVCReilMRW1oK8FNw - beetmover-repackage-gu-IN-linux64-aarch64-shippable/opt: dz9xoDFfSd23IzWjIa0S7w - beetmover-repackage-gu-IN-linux64-shippable/opt: Mwn6ofnnT12spBev4EnI-Q - beetmover-repackage-gu-IN-macosx64-shippable/opt: QKv84OQBSAGIiuzPo3tJxQ - beetmover-repackage-gu-IN-win32-shippable/opt: FxGfaXHJTB-dS9uQANKwQA - beetmover-repackage-gu-IN-win64-aarch64-shippable/opt: KJ17FXgkS96igIaZWBPOxA - beetmover-repackage-gu-IN-win64-shippable/opt: QlgoVNQgQ6CsFahSxJzY8g - beetmover-repackage-he-linux-shippable/opt: WcXXgqtXS7KHkrQQfNL2aA - beetmover-repackage-he-linux64-aarch64-shippable/opt: RdBOUawvRdybAmOdkHZtuQ - beetmover-repackage-he-linux64-shippable/opt: aO0a0zCNSSGvRqFHpPUCdA - beetmover-repackage-he-macosx64-shippable/opt: IuxmwpFCQVSwRmHTZULbYw - beetmover-repackage-he-win32-shippable/opt: Ga0rSg_gTiCXcv-hfPpjNg - beetmover-repackage-he-win64-aarch64-shippable/opt: HWoArw7lT_aosTle0J6NwA - beetmover-repackage-he-win64-shippable/opt: FZJ_n5dhSYq9rMZUiRzKsg - beetmover-repackage-hi-IN-linux-shippable/opt: fm20u0w8RHu8Xjkns_0ABQ - beetmover-repackage-hi-IN-linux64-aarch64-shippable/opt: UQy71O8fQ9m3R_dKaZPqAA - beetmover-repackage-hi-IN-linux64-shippable/opt: C62ac-VgSQ271eMXIU8JSQ - beetmover-repackage-hi-IN-macosx64-shippable/opt: B-uWQcXWQ6uL_n4wBf23iA - beetmover-repackage-hi-IN-win32-shippable/opt: Y6BIQw-9SH6qlTPN1pD11g - beetmover-repackage-hi-IN-win64-aarch64-shippable/opt: Kz7VAdVSTBOUooypxxpf4w - beetmover-repackage-hi-IN-win64-shippable/opt: PaWcqegtQQmSRKoswCzvpA - beetmover-repackage-hr-linux-shippable/opt: IAoFpyicRjeOsIADOul7gw - beetmover-repackage-hr-linux64-aarch64-shippable/opt: cpF4s6V_Qmuj4MEHwMZ9CQ - beetmover-repackage-hr-linux64-shippable/opt: L9hCgMpMTQKIYPMj65NegA - beetmover-repackage-hr-macosx64-shippable/opt: T4vgdxPeTJqutQ0Z7IL75A - beetmover-repackage-hr-win32-shippable/opt: AZ9X4r6yQV-DQQCqiacrag - beetmover-repackage-hr-win64-aarch64-shippable/opt: FgQh9rC0Sa-9ffLTYmpbcw - beetmover-repackage-hr-win64-shippable/opt: W1NedlfWRFO3cDZHlRhqyw - beetmover-repackage-hsb-linux-shippable/opt: XWID_vhaQa2h_gXVq-85Nw - beetmover-repackage-hsb-linux64-aarch64-shippable/opt: bG2HEigjQHGn5_ZNWW5mlA - beetmover-repackage-hsb-linux64-shippable/opt: GgEZ84buQZCCpf9jVzwJtw - beetmover-repackage-hsb-macosx64-shippable/opt: W6JHrhPES_KFWgizybsqDw - beetmover-repackage-hsb-win32-shippable/opt: P7fruRxdSZKc24g2pwMwNA - beetmover-repackage-hsb-win64-aarch64-shippable/opt: NV1pb14ETfSCKNSNw63UXA - beetmover-repackage-hsb-win64-shippable/opt: Ub_FmTu5T5uM2ObTIGONqA - beetmover-repackage-hu-linux-shippable/opt: F8CqbKp5QyCrRb7Th41_Pw - beetmover-repackage-hu-linux64-aarch64-shippable/opt: bFzaUDNMTA2lH78XvXlhNg - beetmover-repackage-hu-linux64-shippable/opt: dxHNF7UJSJuA6rtcHhS1pw - beetmover-repackage-hu-macosx64-shippable/opt: MF6HJh2LRbC8Y6pEnDjlXA - beetmover-repackage-hu-win32-shippable/opt: Jo1M0ETRTZyesWXcylL0eQ - beetmover-repackage-hu-win64-aarch64-shippable/opt: EFRdyMyWQUSprdSdzaCC3A - beetmover-repackage-hu-win64-shippable/opt: Fb4Ub_IsTs20dYbHbehRew - beetmover-repackage-hy-AM-linux-shippable/opt: DKFK9bbGRqOIJeT48DqJ2g - beetmover-repackage-hy-AM-linux64-aarch64-shippable/opt: NszdVWyqSTubmrnAQF-z9w - beetmover-repackage-hy-AM-linux64-shippable/opt: Cmo0glfORDeullurmjvjbA - beetmover-repackage-hy-AM-macosx64-shippable/opt: ZYCJQbORTBuLGpT0YSBf8g - beetmover-repackage-hy-AM-win32-shippable/opt: FxwlvDDTQN6bqH8IpJTlxQ - beetmover-repackage-hy-AM-win64-aarch64-shippable/opt: IsDM7EZgSGixSSZHKmpCcQ - beetmover-repackage-hy-AM-win64-shippable/opt: FMZczRiORsSVCf-YUN7U7g - beetmover-repackage-ia-linux-shippable/opt: RH40hXKTS_-5z0AMBNtETg - beetmover-repackage-ia-linux64-aarch64-shippable/opt: De2u82FBS-mLu6-vysTe0g - beetmover-repackage-ia-linux64-shippable/opt: F4YbsjWsRsW3KdicVta-Eg - beetmover-repackage-ia-macosx64-shippable/opt: e-7Z0pVnSk-5KsNAYndUow - beetmover-repackage-ia-win32-shippable/opt: FjtbeP6MRNqnHadGYF6aBA - beetmover-repackage-ia-win64-aarch64-shippable/opt: DMrfX7nlTOWbfD8ZP1OqUg - beetmover-repackage-ia-win64-shippable/opt: RJua_HbuSRqy_S6eHuARgw - beetmover-repackage-id-linux-shippable/opt: AFZiwWGkSB6he858Eecphg - beetmover-repackage-id-linux64-aarch64-shippable/opt: aKZpIaJ8QpqAF55hg-q73g - beetmover-repackage-id-linux64-shippable/opt: LicecvfaTvWGOpwjQMSBaA - beetmover-repackage-id-macosx64-shippable/opt: LcFKlXA4QEGB8veNbpT07g - beetmover-repackage-id-win32-shippable/opt: GiBDmgFVRbSkJWwKyrSnZQ - beetmover-repackage-id-win64-aarch64-shippable/opt: Y9GQZ8bbSXe4JW1qs5YIlQ - beetmover-repackage-id-win64-shippable/opt: JMPRX8BXQWmrEY5bDphgzg - beetmover-repackage-is-linux-shippable/opt: SOBTLb-cQs-JkpFEPPJ3Cg - beetmover-repackage-is-linux64-aarch64-shippable/opt: CERz_aM1RlqNYl0pBNRo0g - beetmover-repackage-is-linux64-shippable/opt: H-UI8alvTGedScTfNpFlSQ - beetmover-repackage-is-macosx64-shippable/opt: A0KMcW7CSC-w248-04A0lQ - beetmover-repackage-is-win32-shippable/opt: d4u6-yB2QBGqUs5UdjTsNA - beetmover-repackage-is-win64-aarch64-shippable/opt: MRagTvAiRnarnIdXw4izqQ - beetmover-repackage-is-win64-shippable/opt: ESs_4UJ4TyS2XCvq4j9gVw - beetmover-repackage-it-linux-shippable/opt: dHU0AikiQoK2QaSiL9ILuA - beetmover-repackage-it-linux64-aarch64-shippable/opt: VLm_ig_nSMursEjWfbIDMw - beetmover-repackage-it-linux64-shippable/opt: TTjyVdkwR6SSq8iyo8ksXQ - beetmover-repackage-it-macosx64-shippable/opt: YH_AMESVRV-veR64FQDnHA - beetmover-repackage-it-win32-shippable/opt: RSxZz53DQWGq_iGEhgyTGQ - beetmover-repackage-it-win64-aarch64-shippable/opt: G08XqWEXQb6RfUg2qJ8xHg - beetmover-repackage-it-win64-shippable/opt: cZPq8JokRWCponMgU4q3zg - beetmover-repackage-ja-JP-mac-macosx64-shippable/opt: amofdkWPShepmJfk2L6oAg - beetmover-repackage-ja-linux-shippable/opt: GqU0xRpvT4SiZSauy3Z4XA - beetmover-repackage-ja-linux64-aarch64-shippable/opt: epftHFlVRBWRZDVzzNgPSg - beetmover-repackage-ja-linux64-shippable/opt: HBh0MAShTiOH8fXQNr9V9w - beetmover-repackage-ja-win32-shippable/opt: F_hAdNfbRTi1p9vpErU8nA - beetmover-repackage-ja-win64-aarch64-shippable/opt: DhM4sFGpTr6PKKjP_lJAKQ - beetmover-repackage-ja-win64-shippable/opt: RvR9tYFyQGCvRZ1914gYUQ - beetmover-repackage-ka-linux-shippable/opt: HkFS4B87Sby3wxTSWKlg-w - beetmover-repackage-ka-linux64-aarch64-shippable/opt: IBhxOxHtTdKMExrnt0wxpA - beetmover-repackage-ka-linux64-shippable/opt: d13uXmlvTJmB4rRFasi5vQ - beetmover-repackage-ka-macosx64-shippable/opt: RBfNHWo7QuaI2d6OKnRTKw - beetmover-repackage-ka-win32-shippable/opt: E-SPFa0QTh28wWzEkmpdMg - beetmover-repackage-ka-win64-aarch64-shippable/opt: BvF88re_RzqP1AyeF7CC-Q - beetmover-repackage-ka-win64-shippable/opt: YlP1F9ZpQn-fXdiYibVacw - beetmover-repackage-kab-linux-shippable/opt: DpPo9ZZ5SkOZ5LedIOjjiw - beetmover-repackage-kab-linux64-aarch64-shippable/opt: OG-tk76dRLSUMmZHFv5JYQ - beetmover-repackage-kab-linux64-shippable/opt: WvZVgIQSSh-_6kSVMiN0kg - beetmover-repackage-kab-macosx64-shippable/opt: aMae9TOUQpiAjoh2RdxtNg - beetmover-repackage-kab-win32-shippable/opt: QXOjErdFQjGzwcai-qyWfA - beetmover-repackage-kab-win64-aarch64-shippable/opt: WnzdR4XISRyXj1FDzDskbw - beetmover-repackage-kab-win64-shippable/opt: dQf1NjDgT8S2AQtKH3DGbw - beetmover-repackage-kk-linux-shippable/opt: THa8uhSfQlGzFKqcPNHKqQ - beetmover-repackage-kk-linux64-aarch64-shippable/opt: L1nQ5sP6RoSbuzE90DdAzw - beetmover-repackage-kk-linux64-shippable/opt: U9fo27P4SKKd94m_ImuAXw - beetmover-repackage-kk-macosx64-shippable/opt: NoaF_cWnT5eTLNxqd93jmg - beetmover-repackage-kk-win32-shippable/opt: NBYCRfYUQqaO5XoXQHb_oA - beetmover-repackage-kk-win64-aarch64-shippable/opt: XLZDPqBSQa24u7-JZVZY6A - beetmover-repackage-kk-win64-shippable/opt: FWJpBUeDSJWdtNdmdV7WUw - beetmover-repackage-km-linux-shippable/opt: D1uP_CI0QwaCRHXWZxHMRQ - beetmover-repackage-km-linux64-aarch64-shippable/opt: JPmEdvZaTJKmvZxqjndfCQ - beetmover-repackage-km-linux64-shippable/opt: Ri4QEuarTbmRYcmasqxd5A - beetmover-repackage-km-macosx64-shippable/opt: ai4We10iTvu_0JmC03M2VA - beetmover-repackage-km-win32-shippable/opt: Pm1dJkmlTli1Szr-Qt1ZPA - beetmover-repackage-km-win64-aarch64-shippable/opt: LPUwCjD3R5mkthy_U0A8fg - beetmover-repackage-km-win64-shippable/opt: fiAZXmNrQqq8foByp03u7A - beetmover-repackage-kn-linux-shippable/opt: PMihFKJtSZW4nmT8BmtBrA - beetmover-repackage-kn-linux64-aarch64-shippable/opt: bH0Yq5LeQJCRHK6ymhctjw - beetmover-repackage-kn-linux64-shippable/opt: Iuvyjm9-SsCf3z3KFWoPeg - beetmover-repackage-kn-macosx64-shippable/opt: Gs0l_MUMQPa5R6VCowhYWQ - beetmover-repackage-kn-win32-shippable/opt: UrEuwjv6QJuzTDHWEPY0wg - beetmover-repackage-kn-win64-aarch64-shippable/opt: aT-BXdEzSkq7nlqZW7vPAQ - beetmover-repackage-kn-win64-shippable/opt: EGfLcVRnSmWN9ML0ohNUqw - beetmover-repackage-ko-linux-shippable/opt: WQMSXLuuTdeyev8ymaKPuA - beetmover-repackage-ko-linux64-aarch64-shippable/opt: cPD4RhzHSBiWioEy_nt8nQ - beetmover-repackage-ko-linux64-shippable/opt: NlKPB31FTPy4K5DHrZj-zg - beetmover-repackage-ko-macosx64-shippable/opt: TpM0MAcGThmqgOftXe_bIw - beetmover-repackage-ko-win32-shippable/opt: KQP3N5USS7ucuqgJtsn60w - beetmover-repackage-ko-win64-aarch64-shippable/opt: F_e_hmxmQxyyrogqAHHang - beetmover-repackage-ko-win64-shippable/opt: Ds9Bv3t0SQm7jQyZVBNgTg - beetmover-repackage-lij-linux-shippable/opt: GhCIhqiOTNe0PUWhRc9kZQ - beetmover-repackage-lij-linux64-aarch64-shippable/opt: RaJo0pTdQpGE0wrYgM5y5A - beetmover-repackage-lij-linux64-shippable/opt: Nd3rSfq5S3-Krxdj4e6x1Q - beetmover-repackage-lij-macosx64-shippable/opt: buhuDwjAToapher26MmGYg - beetmover-repackage-lij-win32-shippable/opt: ZBT6BKTmS-intshWxDTFpw - beetmover-repackage-lij-win64-aarch64-shippable/opt: NxfrDaxXRCiFspkBWw6DDQ - beetmover-repackage-lij-win64-shippable/opt: KxIt9Y0oQkWQGQ8QwGNNsw - beetmover-repackage-linux-shippable/opt: eKx15sH2QWG5HCn0_PrcEA - beetmover-repackage-linux64-aarch64-shippable/opt: MEbmnjGZRO-nb2ig0VYW4g - beetmover-repackage-linux64-shippable/opt: BiVWAGKyQvGQY5gcUB2bCg - beetmover-repackage-lt-linux-shippable/opt: dyOSaeEoQvy4-GlLJvUvtQ - beetmover-repackage-lt-linux64-aarch64-shippable/opt: YGkgUfcGT2eimfIB5oiUrg - beetmover-repackage-lt-linux64-shippable/opt: YMwnUWMDTFehibycBspd7A - beetmover-repackage-lt-macosx64-shippable/opt: PnGoWBBlSe6xyBrOSZw5NQ - beetmover-repackage-lt-win32-shippable/opt: F5D9DbXZQg-adTQVJ8rlbw - beetmover-repackage-lt-win64-aarch64-shippable/opt: M7R-llcqTIKloPd_lZwnqg - beetmover-repackage-lt-win64-shippable/opt: cXzPolx9R1-jwKq_lM36uA - beetmover-repackage-lv-linux-shippable/opt: XT1i4FjxRbK81quA6LkFIA - beetmover-repackage-lv-linux64-aarch64-shippable/opt: f4pLT73-Tuy61D4UJil3rQ - beetmover-repackage-lv-linux64-shippable/opt: P0s-LMp3RvqGkgA2vzNsKg - beetmover-repackage-lv-macosx64-shippable/opt: f7BnPkSqS5CLdiM_tfRNxw - beetmover-repackage-lv-win32-shippable/opt: bmP2lM7qT7evMIR9JorDOg - beetmover-repackage-lv-win64-aarch64-shippable/opt: D4kpvUB7TH60VubdDKiuhQ - beetmover-repackage-lv-win64-shippable/opt: CI1SbGz6RiOPQsWXDP8Kww - beetmover-repackage-macosx64-shippable/opt: UrrZk2o6RcifhcPcRqG55A - beetmover-repackage-mk-linux-shippable/opt: XXpno0hbQcGWdLG2pRC6pQ - beetmover-repackage-mk-linux64-aarch64-shippable/opt: FfV5OnqLSYGceF1wlNaX2g - beetmover-repackage-mk-linux64-shippable/opt: HRRrfhe8RfS9eZCnhW390g - beetmover-repackage-mk-macosx64-shippable/opt: E3lPmY3QSZuJABAZ0L5kqg - beetmover-repackage-mk-win32-shippable/opt: dfOjSpCqSUud574OwaSy_Q - beetmover-repackage-mk-win64-aarch64-shippable/opt: em9MbydPRXadyEvfMJhSQg - beetmover-repackage-mk-win64-shippable/opt: Yq6etRAeSuqgzJeWu5G9aA - beetmover-repackage-mr-linux-shippable/opt: aXW2P5JcQF6MjI98TfP6RA - beetmover-repackage-mr-linux64-aarch64-shippable/opt: X84pDk0VRimj94hFu62p6Q - beetmover-repackage-mr-linux64-shippable/opt: CDmDVsdKR3CVXge0TH7uug - beetmover-repackage-mr-macosx64-shippable/opt: PnTouuJ2TQGVnQ5GXp17Gw - beetmover-repackage-mr-win32-shippable/opt: PiDyJH78TiKKv90Xqug3zg - beetmover-repackage-mr-win64-aarch64-shippable/opt: Gk9JgTCZTYOEnX0lxwDm3Q - beetmover-repackage-mr-win64-shippable/opt: AnZ5m8dUSHWugUVf2PTy5Q - beetmover-repackage-ms-linux-shippable/opt: U6LD8BV9TWejKfbXMonZLg - beetmover-repackage-ms-linux64-aarch64-shippable/opt: Ryql4t0TQgeyJ0iSuTQAkQ - beetmover-repackage-ms-linux64-shippable/opt: cfCX_SXDSfmOMiSt1pJU4w - beetmover-repackage-ms-macosx64-shippable/opt: DBJMT_n5Q4KEfo35BLl6-w - beetmover-repackage-ms-win32-shippable/opt: PFA4_N-bSJyfasUqrhSiMA - beetmover-repackage-ms-win64-aarch64-shippable/opt: EbzNlofeRXGquwXN9rQx6w - beetmover-repackage-ms-win64-shippable/opt: C5vOxsK8TceBLytOucWF5w - beetmover-repackage-my-linux-shippable/opt: CgATWnPcRzaQMt5-dWTyXg - beetmover-repackage-my-linux64-aarch64-shippable/opt: Nwr5vSnVTAS8F-s5J97Hgg - beetmover-repackage-my-linux64-shippable/opt: VvedYTuSQXeQeXtvGhCkFA - beetmover-repackage-my-macosx64-shippable/opt: H20fc0PQSMeex8LdDAGyHw - beetmover-repackage-my-win32-shippable/opt: bsubItWxS9ClMVIzJ9f-UQ - beetmover-repackage-my-win64-aarch64-shippable/opt: GzGWcxSsRCWoMgFmrMg1Iw - beetmover-repackage-my-win64-shippable/opt: DpG9j-HDQ02Fsgr0ogA7eg - beetmover-repackage-nb-NO-linux-shippable/opt: eJDi5tWlQ2yQ4h787SP7fQ - beetmover-repackage-nb-NO-linux64-aarch64-shippable/opt: bEGupGmfT6m_U3L7tTmn7A - beetmover-repackage-nb-NO-linux64-shippable/opt: HpF5hhWATd2wxNYD208xRg - beetmover-repackage-nb-NO-macosx64-shippable/opt: NfX5fEHNSTektwpRL1mulw - beetmover-repackage-nb-NO-win32-shippable/opt: TpLDppj_QQONwJ9SjAQWvg - beetmover-repackage-nb-NO-win64-aarch64-shippable/opt: Lxtu1CnaRB-GIO-eVcEYJg - beetmover-repackage-nb-NO-win64-shippable/opt: FVUZkT0ISrCwaW1inu36sA - beetmover-repackage-ne-NP-linux-shippable/opt: Fa4WY5HCRAyHfSx5i4_DOg - beetmover-repackage-ne-NP-linux64-aarch64-shippable/opt: V9g9k_KtTZa1P2AvDRPgfw - beetmover-repackage-ne-NP-linux64-shippable/opt: UfF_EJd8R16k97cRWpGmNA - beetmover-repackage-ne-NP-macosx64-shippable/opt: Tl5hymGtRPumfJAIxhhAdw - beetmover-repackage-ne-NP-win32-shippable/opt: ecMo2rPlRPqXiyduKrnKvg - beetmover-repackage-ne-NP-win64-aarch64-shippable/opt: Bl5LQ35mTkadWtWut24Qcg - beetmover-repackage-ne-NP-win64-shippable/opt: VB_3fX-BRoOs9dWZpUW-oQ - beetmover-repackage-nl-linux-shippable/opt: bBc8rSbGRfeJA2dAyMzyIw - beetmover-repackage-nl-linux64-aarch64-shippable/opt: F06emezUTfCW2jOYS11qBQ - beetmover-repackage-nl-linux64-shippable/opt: GjODJ1Z9Sfu7_8MXl2dXcg - beetmover-repackage-nl-macosx64-shippable/opt: IkDtHcXXSMakjnjTb4Sdaw - beetmover-repackage-nl-win32-shippable/opt: WyxkRcuJQw21yp6ZPLu0UQ - beetmover-repackage-nl-win64-aarch64-shippable/opt: Ui9q9vSHQbmK6Qsm9wq60g - beetmover-repackage-nl-win64-shippable/opt: btyRgGGUSjm1kD5C_poHxg - beetmover-repackage-nn-NO-linux-shippable/opt: cLv9Xa6OQ3GxHhxY31LmOw - beetmover-repackage-nn-NO-linux64-aarch64-shippable/opt: XHo8rScNTbyV-FNAbtNicg - beetmover-repackage-nn-NO-linux64-shippable/opt: Nsu_glj4RoOdIql6ebATvA - beetmover-repackage-nn-NO-macosx64-shippable/opt: Bd_6B3fGQ4a1mwLITZPKaA - beetmover-repackage-nn-NO-win32-shippable/opt: E4mx4y5nRH-wxWUJ_aSGxA - beetmover-repackage-nn-NO-win64-aarch64-shippable/opt: ewt-VwmsTpm9GXNXs3uzaQ - beetmover-repackage-nn-NO-win64-shippable/opt: XTn93XqRRsui4zmrR-rfoQ - beetmover-repackage-oc-linux-shippable/opt: LFB4iYL0QiSW3lwrzdHDBg - beetmover-repackage-oc-linux64-aarch64-shippable/opt: GPU_ZQzTS_2gUfmYe5Qkdg - beetmover-repackage-oc-linux64-shippable/opt: GCTwTfvwRyqFOCF14a9SEg - beetmover-repackage-oc-macosx64-shippable/opt: QKr5-2QJRWuddDohRO9MOQ - beetmover-repackage-oc-win32-shippable/opt: BCcb38kxT_OWf9xO6JTAdg - beetmover-repackage-oc-win64-aarch64-shippable/opt: PcCOzFJgQBqEpRi9APwMaw - beetmover-repackage-oc-win64-shippable/opt: Cd7sGEY_TQqPkVUygElBsg - beetmover-repackage-pa-IN-linux-shippable/opt: HSMdSxfRQricfmPJoqqbng - beetmover-repackage-pa-IN-linux64-aarch64-shippable/opt: PXb1r7ToTTynSKfYZ00fxg - beetmover-repackage-pa-IN-linux64-shippable/opt: ANPspSVaQXGu_0VW3PSU9g - beetmover-repackage-pa-IN-macosx64-shippable/opt: UMvJQ8qhRyu8xhP2YXkmSg - beetmover-repackage-pa-IN-win32-shippable/opt: W-03a0aURSmzDS11NAdcYA - beetmover-repackage-pa-IN-win64-aarch64-shippable/opt: R3CE9L5HQDKUthK5iGj7cQ - beetmover-repackage-pa-IN-win64-shippable/opt: UAr0acqnQ4GCl0KfPS1Osw - beetmover-repackage-pl-linux-shippable/opt: WF0dfX_oQVeX2JiTqnD_QA - beetmover-repackage-pl-linux64-aarch64-shippable/opt: X1y7CyxjTISu_5lwVyzRqA - beetmover-repackage-pl-linux64-shippable/opt: H8ro_727RoS_vH757yZqzw - beetmover-repackage-pl-macosx64-shippable/opt: ephV9MnrRxOOqeIg29rh0A - beetmover-repackage-pl-win32-shippable/opt: Ryonyiw8Q9mduCYo5XNfUg - beetmover-repackage-pl-win64-aarch64-shippable/opt: cngYvTgpQA-H6f4e20A0bA - beetmover-repackage-pl-win64-shippable/opt: If-4WeysReWSlDC2ehI_YA - beetmover-repackage-pt-BR-linux-shippable/opt: GCOjkN-DSGaE0RckBzSTpA - beetmover-repackage-pt-BR-linux64-aarch64-shippable/opt: eHSrmZ0_QkWS0iMawW4SiA - beetmover-repackage-pt-BR-linux64-shippable/opt: ZXIACAEfRPqjKbj1ADlZ4A - beetmover-repackage-pt-BR-macosx64-shippable/opt: J_hD9k_eTfGMuGI_Xmyb6w - beetmover-repackage-pt-BR-win32-shippable/opt: fwvpsfzZRMyWNhmrnnmcWg - beetmover-repackage-pt-BR-win64-aarch64-shippable/opt: ZB-ysLz_Qm-Wea5JslBaIQ - beetmover-repackage-pt-BR-win64-shippable/opt: QAm5KnVxQFSGGukTU8NiTQ - beetmover-repackage-pt-PT-linux-shippable/opt: M8hWVAPfQK25p_LWi6Iw7A - beetmover-repackage-pt-PT-linux64-aarch64-shippable/opt: MPZ2F9r2QqmbhziM1R7RLw - beetmover-repackage-pt-PT-linux64-shippable/opt: b402rCHXSxmMFbQBosc3mQ - beetmover-repackage-pt-PT-macosx64-shippable/opt: W_t3iIYrRH6TMjrF1l15_Q - beetmover-repackage-pt-PT-win32-shippable/opt: JK8_uhisSLmA9muu6sB6Ng - beetmover-repackage-pt-PT-win64-aarch64-shippable/opt: HAKiyzAOR3unU27wNZDing - beetmover-repackage-pt-PT-win64-shippable/opt: LTnkCUyjR_WLmnFGMYXj-A - beetmover-repackage-rm-linux-shippable/opt: Ciz8g25FRnWdCMFJUmQuVA - beetmover-repackage-rm-linux64-aarch64-shippable/opt: bRvIO58PS2ikgubpYpy_-A - beetmover-repackage-rm-linux64-shippable/opt: d4wiSEKkTIazFrad-Di7CA - beetmover-repackage-rm-macosx64-shippable/opt: RLf8fo-zR9-oq5lG5kMCPw - beetmover-repackage-rm-win32-shippable/opt: BBN8ppRmRdq7B5_9qyIt2w - beetmover-repackage-rm-win64-aarch64-shippable/opt: bUxQtD2uQwGD1QfPZCoL-w - beetmover-repackage-rm-win64-shippable/opt: QAvkQjtNTiyY8uKqz6Y51g - beetmover-repackage-ro-linux-shippable/opt: P4BDvtsYT3O8tFJz8mODJA - beetmover-repackage-ro-linux64-aarch64-shippable/opt: HX17tWS6Sx-vZsIOkzCBiw - beetmover-repackage-ro-linux64-shippable/opt: J1o7h8QnQumhiUoafv7afQ - beetmover-repackage-ro-macosx64-shippable/opt: Bfqu04__TYq5LclR4g2XYA - beetmover-repackage-ro-win32-shippable/opt: bX7d2ZYLSwyhu83gsSFlqA - beetmover-repackage-ro-win64-aarch64-shippable/opt: YJC4oWH3TImPAjr_1pVxNQ - beetmover-repackage-ro-win64-shippable/opt: D-rAo9VYRzy1wgI0gE7Khw - beetmover-repackage-ru-linux-shippable/opt: fICFALtpRZ66BZn2efNqSQ - beetmover-repackage-ru-linux64-aarch64-shippable/opt: FSDKArkzQcWbwZUmTkJpKg - beetmover-repackage-ru-linux64-shippable/opt: AjsCJF0qSSu0Qze7I205DA - beetmover-repackage-ru-macosx64-shippable/opt: JZXxMeYNQAeomhZJ8aH5ug - beetmover-repackage-ru-win32-shippable/opt: W90wVgkwSeq5pkUHfX0-8Q - beetmover-repackage-ru-win64-aarch64-shippable/opt: La8zAprtTCq_OmRft16j2g - beetmover-repackage-ru-win64-shippable/opt: Orv3jvE2RVuBpECsqG64KA - beetmover-repackage-sat-linux-shippable/opt: bHHZcKkYScK_YIZ9mUGK5w - beetmover-repackage-sat-linux64-aarch64-shippable/opt: LVD40QOTRbe3APWiWm0G3A - beetmover-repackage-sat-linux64-shippable/opt: WSRs5iRdQpmLcDG-tdBf7Q - beetmover-repackage-sat-macosx64-shippable/opt: fdFFVXs4Tfm_XJzKVZKYDQ - beetmover-repackage-sat-win32-shippable/opt: Pt_sSBtkQzuS8PTil5Fh2A - beetmover-repackage-sat-win64-aarch64-shippable/opt: DnJCFe6cSYilZFPCRxuTzQ - beetmover-repackage-sat-win64-shippable/opt: K1rUwmzJSjCUm9eN9o1gpw - beetmover-repackage-sc-linux-shippable/opt: MXbGZn2yRfKFOVE01cPW6Q - beetmover-repackage-sc-linux64-aarch64-shippable/opt: WLzquaMNRyu__jQiqS51Dg - beetmover-repackage-sc-linux64-shippable/opt: IpkKUQj0RaGtVbyUneq2-g - beetmover-repackage-sc-macosx64-shippable/opt: OAtTl9NFTh2hltbG_OfcVQ - beetmover-repackage-sc-win32-shippable/opt: U2I8Y8WqRkmEKcC4Jk7NiA - beetmover-repackage-sc-win64-aarch64-shippable/opt: T-o6FSX7Ru-Mi-X-dPy0kw - beetmover-repackage-sc-win64-shippable/opt: U_k7aBgNSuaPAek4KEgh8A - beetmover-repackage-sco-linux-shippable/opt: AAj0Bp4zSmi_zj9gUogIng - beetmover-repackage-sco-linux64-aarch64-shippable/opt: FNXwZOUTQq6qxUH6ALt3UA - beetmover-repackage-sco-linux64-shippable/opt: LmyhKlXGQ-WqfVMi7-k7fg - beetmover-repackage-sco-macosx64-shippable/opt: d3WkOEPiTeOMFGKYkeNR0Q - beetmover-repackage-sco-win32-shippable/opt: bZJt4G6EQESamcmJpl2Waw - beetmover-repackage-sco-win64-aarch64-shippable/opt: QtDKDjG_Q2y_ymjWm5ZSug - beetmover-repackage-sco-win64-shippable/opt: ZN1xRrPeQx2iAKwQukGYQA - beetmover-repackage-si-linux-shippable/opt: GNdovPUTTwWn0isybv-ioQ - beetmover-repackage-si-linux64-aarch64-shippable/opt: eH7nXwN_QaOI2DcyepbAEQ - beetmover-repackage-si-linux64-shippable/opt: O7ke_eQRTjin8K_lqQg_hQ - beetmover-repackage-si-macosx64-shippable/opt: P84QUua5Qlu8SC86TinY3g - beetmover-repackage-si-win32-shippable/opt: Y4kweAheRuKPOQX-4PaloQ - beetmover-repackage-si-win64-aarch64-shippable/opt: BaYjdg9cS5ye7L8TjYWs8Q - beetmover-repackage-si-win64-shippable/opt: Sk5ivvPnRlqanAdJ5yewiw - beetmover-repackage-sk-linux-shippable/opt: Zx7OPTx0TXy4kPAn5zNrPw - beetmover-repackage-sk-linux64-aarch64-shippable/opt: KGS8ftZuTheM5AEF2zD7Qw - beetmover-repackage-sk-linux64-shippable/opt: IH1zEhrkReyVmDjFsIMPrw - beetmover-repackage-sk-macosx64-shippable/opt: Yv4Vb9DBR0ODU1FDefHjjQ - beetmover-repackage-sk-win32-shippable/opt: MGnNxi75Ty-cNoNvuC1kDA - beetmover-repackage-sk-win64-aarch64-shippable/opt: Vg0q1e1BRqy9FcWgvDotbg - beetmover-repackage-sk-win64-shippable/opt: YvWJst5xTzOKw7nJIeAeoQ - beetmover-repackage-skr-linux-shippable/opt: fAQ6PkRyROSn9GlpdY_cJg - beetmover-repackage-skr-linux64-aarch64-shippable/opt: fMuMmY3wSWCPMlVSl6Q1bA - beetmover-repackage-skr-linux64-shippable/opt: WnmmT6RnQ8qLi4vH4rgg5A - beetmover-repackage-skr-macosx64-shippable/opt: YZk5z-gWSUiPjABRW7YPJQ - beetmover-repackage-skr-win32-shippable/opt: cJ4aJYHzSF6tUBMzycVW6Q - beetmover-repackage-skr-win64-aarch64-shippable/opt: MbgO9kRTRACm3p8X0k-EUA - beetmover-repackage-skr-win64-shippable/opt: T8KeCHebTE64pDYSqy2qPQ - beetmover-repackage-sl-linux-shippable/opt: K_k4nDtzT1OAUVm0tN55Tw - beetmover-repackage-sl-linux64-aarch64-shippable/opt: GdS9PvdyRWmv3UUFozhQow - beetmover-repackage-sl-linux64-shippable/opt: A8T3bzF_TmqSjlbW8JBsdw - beetmover-repackage-sl-macosx64-shippable/opt: em31V4ygQqS_sOKB4M--RA - beetmover-repackage-sl-win32-shippable/opt: FAEj7S3wRUWDUlb0qQVMHg - beetmover-repackage-sl-win64-aarch64-shippable/opt: UfgXYGHeQxq2VSoAyVrFkQ - beetmover-repackage-sl-win64-shippable/opt: PQj1bb0DQNOz3HEHQPz7eA - beetmover-repackage-son-linux-shippable/opt: X6Uo3NoYTKakM-xN64gMlQ - beetmover-repackage-son-linux64-aarch64-shippable/opt: TRgbhC-tSEOYpB5xpg0LbA - beetmover-repackage-son-linux64-shippable/opt: aaa9aO6MQbu7nwWlCbnfMg - beetmover-repackage-son-macosx64-shippable/opt: S3pHuu9mTgGnLmYPd7uhJw - beetmover-repackage-son-win32-shippable/opt: HsSYaHu9Skm1ad8VSQfQCw - beetmover-repackage-son-win64-aarch64-shippable/opt: a4xK0OtpSXKOcppalby_wQ - beetmover-repackage-son-win64-shippable/opt: PKVbq5mNQ2uLW8CtnsHQBQ - beetmover-repackage-sq-linux-shippable/opt: Ek1TESpyRlWS2MrImprr5Q - beetmover-repackage-sq-linux64-aarch64-shippable/opt: I8MCW55aSCKZ-758INsBiA - beetmover-repackage-sq-linux64-shippable/opt: St8QwDwcQIiwyCcostXFNw - beetmover-repackage-sq-macosx64-shippable/opt: a5PWQVqgQvKxuNA7JHjBiQ - beetmover-repackage-sq-win32-shippable/opt: fE5fSHyUTQi3dIGtXZqQxA - beetmover-repackage-sq-win64-aarch64-shippable/opt: ZbNGGVsjTJuiTySMJkZZGA - beetmover-repackage-sq-win64-shippable/opt: HRPMwUdmQA6bVLFxSS1ysA - beetmover-repackage-sr-linux-shippable/opt: QnWUduDMQVal6ZG3uL6KXA - beetmover-repackage-sr-linux64-aarch64-shippable/opt: QTO7G0sVS16ETqQD0ixF0Q - beetmover-repackage-sr-linux64-shippable/opt: RsEK_n0MSr6LKAJpaEVXcw - beetmover-repackage-sr-macosx64-shippable/opt: OwVTCJkdSaqPboIr3eawKw - beetmover-repackage-sr-win32-shippable/opt: RXS5aW9cRqe0Jdm4BVIK7w - beetmover-repackage-sr-win64-aarch64-shippable/opt: J2C32ARPT4uqvQ0iz4E5KA - beetmover-repackage-sr-win64-shippable/opt: JIJzcTqESeqq9OsK3qNVQg - beetmover-repackage-sv-SE-linux-shippable/opt: WwKjUgMaRjCNyfVW3GMntw - beetmover-repackage-sv-SE-linux64-aarch64-shippable/opt: GGFgBG78RqyJk6upuT2pzA - beetmover-repackage-sv-SE-linux64-shippable/opt: fKQmCu9OR0m7VUMWf-bX6g - beetmover-repackage-sv-SE-macosx64-shippable/opt: KdO0aH-RQw-69qXFHI-fHw - beetmover-repackage-sv-SE-win32-shippable/opt: SGmlpF7rRdyLzgJ8eiWVGw - beetmover-repackage-sv-SE-win64-aarch64-shippable/opt: Fs3nC7NCT3uAdMI2PN6WFQ - beetmover-repackage-sv-SE-win64-shippable/opt: PZ4XdC1DRLG0jAyu3BL97A - beetmover-repackage-szl-linux-shippable/opt: V8nChJzJQOywWxxdQ-ty2A - beetmover-repackage-szl-linux64-aarch64-shippable/opt: ZsNjt4jzRmW-lJmpl9wlQg - beetmover-repackage-szl-linux64-shippable/opt: QoPA6J-0QTq2U2qEVOzx7w - beetmover-repackage-szl-macosx64-shippable/opt: G7XdTyCbTLqAVVsvJ2Sjug - beetmover-repackage-szl-win32-shippable/opt: S9y0s7FyShyk51cCwodpug - beetmover-repackage-szl-win64-aarch64-shippable/opt: GqWyZ67QRe-8WmQ6fK8zkQ - beetmover-repackage-szl-win64-shippable/opt: R5tX1WznT0W0UrsL7hHXzA - beetmover-repackage-ta-linux-shippable/opt: YYkXQZFlQZ6krDyKFUNaWQ - beetmover-repackage-ta-linux64-aarch64-shippable/opt: RD-cm3ywQbq7mVRVueep0g - beetmover-repackage-ta-linux64-shippable/opt: E20BWezCS2-c5H6SHZXFvA - beetmover-repackage-ta-macosx64-shippable/opt: P4czWDl6TVy4NLWZy3y_iQ - beetmover-repackage-ta-win32-shippable/opt: Mfn9q_4sTq2pA5zPhdTd7A - beetmover-repackage-ta-win64-aarch64-shippable/opt: VPI_8vDrROOiyo6iAV5JkQ - beetmover-repackage-ta-win64-shippable/opt: CdIfQZnwRFmUOpXENhhuaQ - beetmover-repackage-te-linux-shippable/opt: TpfbenmwTia-i4Cx_cLcow - beetmover-repackage-te-linux64-aarch64-shippable/opt: Wi021dnHQmGLo3XMvS7yUg - beetmover-repackage-te-linux64-shippable/opt: Olhas-1jQAGZHs-7EjYZ8w - beetmover-repackage-te-macosx64-shippable/opt: B8ZRkJaARYq3YK50NrVrMA - beetmover-repackage-te-win32-shippable/opt: NL3gEETkRw6u43QBrQ-_lw - beetmover-repackage-te-win64-aarch64-shippable/opt: VHbCT_UoSLGRy91TjmWKmA - beetmover-repackage-te-win64-shippable/opt: Nno2M5crT2qlXo-WLndvBA - beetmover-repackage-tg-linux-shippable/opt: aauulrMGQbSb4YWq3IIX8w - beetmover-repackage-tg-linux64-aarch64-shippable/opt: HP5DiaUKRVG6NuelwOOkmA - beetmover-repackage-tg-linux64-shippable/opt: X0qT_GihTXytlGv-OA6Erw - beetmover-repackage-tg-macosx64-shippable/opt: DrPo-NbJRCK0GI-_--98_g - beetmover-repackage-tg-win32-shippable/opt: WdaDY0oRQGWNfCfASm9neA - beetmover-repackage-tg-win64-aarch64-shippable/opt: UI0DYHZDS7OTXdqYfs3GPw - beetmover-repackage-tg-win64-shippable/opt: Eaqua5fLQl27RJF6mqD-9A - beetmover-repackage-th-linux-shippable/opt: TCjsY6ZcQzStgbeRU9duIw - beetmover-repackage-th-linux64-aarch64-shippable/opt: V87PvPm7TGmA9yyb8vipHw - beetmover-repackage-th-linux64-shippable/opt: fksy9YMvQRGeaB8EWYS-2A - beetmover-repackage-th-macosx64-shippable/opt: PlAeIQpORueglAxWK_g4Ow - beetmover-repackage-th-win32-shippable/opt: aFaUtcAzT1yDrHD_6nR_vg - beetmover-repackage-th-win64-aarch64-shippable/opt: JWr1OKd0TjKYBlu3NLWyOw - beetmover-repackage-th-win64-shippable/opt: WopDGnlsTv-AkDgwz5A46A - beetmover-repackage-tl-linux-shippable/opt: L1rklxYxT0i2NiuHNLZKdg - beetmover-repackage-tl-linux64-aarch64-shippable/opt: FcuJCKGUQ_SanvezGT3NjA - beetmover-repackage-tl-linux64-shippable/opt: d9Mcn3MkQUyipJXy8LnoEQ - beetmover-repackage-tl-macosx64-shippable/opt: fOVbgkDxRI2URsrjgZDTsw - beetmover-repackage-tl-win32-shippable/opt: bfzfCFIeTQ6YA-MT_anviQ - beetmover-repackage-tl-win64-aarch64-shippable/opt: MwDNyvFMT3aCQzupHHWspw - beetmover-repackage-tl-win64-shippable/opt: GgWjcIwNQz6NZDRfXzcS3w - beetmover-repackage-tr-linux-shippable/opt: CQwXjur7TyCWtF04aXndQg - beetmover-repackage-tr-linux64-aarch64-shippable/opt: ORpP_xOoRry1YddU69yThA - beetmover-repackage-tr-linux64-shippable/opt: fqERKE_CQT-VOuZibrUO-w - beetmover-repackage-tr-macosx64-shippable/opt: LYRlmDj4RiqhNzt3kDBPEg - beetmover-repackage-tr-win32-shippable/opt: dV35WplfSQi_UVUVNFUbVA - beetmover-repackage-tr-win64-aarch64-shippable/opt: eQ2Md_-RRwOlIpn_UqesuQ - beetmover-repackage-tr-win64-shippable/opt: JQl-bzfySPi0bg48H8b-lw - beetmover-repackage-trs-linux-shippable/opt: MUO2LiVNQAaRLqP6oP1Zxg - beetmover-repackage-trs-linux64-aarch64-shippable/opt: LdpwSQv3S3q44pFlo2jwOg - beetmover-repackage-trs-linux64-shippable/opt: ddO0UB0gR5uWul2i0G8vUA - beetmover-repackage-trs-macosx64-shippable/opt: B7InMRPjS-q02rWQFXTDbg - beetmover-repackage-trs-win32-shippable/opt: AKmM2w1aSLWp3zF-BERtIQ - beetmover-repackage-trs-win64-aarch64-shippable/opt: V2D0-227Q0updS1XIfAF-Q - beetmover-repackage-trs-win64-shippable/opt: FGsCpDn5TCKg_VjHGP8Q4Q - beetmover-repackage-uk-linux-shippable/opt: J9kZbu5BQ3ilukm5WBn-Pg - beetmover-repackage-uk-linux64-aarch64-shippable/opt: LbLd2EHxTfCdJ-fDVvr5gw - beetmover-repackage-uk-linux64-shippable/opt: NW-FK43YTWaZfHjGY5wWIw - beetmover-repackage-uk-macosx64-shippable/opt: OuTUQu5jQL2mDiQi8kS2mA - beetmover-repackage-uk-win32-shippable/opt: KwuZWB7JSBWGL1koJj1L1Q - beetmover-repackage-uk-win64-aarch64-shippable/opt: IVrBpm6gQeS59U2nxUf_aw - beetmover-repackage-uk-win64-shippable/opt: bdUZEFqhSgqb9X9U2XtfVg - beetmover-repackage-ur-linux-shippable/opt: U47Ar-FfS1eHHcAJalwDAQ - beetmover-repackage-ur-linux64-aarch64-shippable/opt: OczgTFlQQv2H4pgVmqpS_w - beetmover-repackage-ur-linux64-shippable/opt: J2MfoXKHT2qa8R2J4vLA2Q - beetmover-repackage-ur-macosx64-shippable/opt: QFLKxBXgQI-oXvE_W3CIMQ - beetmover-repackage-ur-win32-shippable/opt: bHAIqvGBTEOCjxELONxvRA - beetmover-repackage-ur-win64-aarch64-shippable/opt: Aa_Wk0NtTpGxnF1tCrR8rA - beetmover-repackage-ur-win64-shippable/opt: ZIa6jQ4IQYu3_ib4Sa5vfA - beetmover-repackage-uz-linux-shippable/opt: eVpBDIvfT3WK4eBNKue-1Q - beetmover-repackage-uz-linux64-aarch64-shippable/opt: QGpkmHWpQMG8DXMTDah3vA - beetmover-repackage-uz-linux64-shippable/opt: eTHtPm2EQ4G8Srt9gLqRrg - beetmover-repackage-uz-macosx64-shippable/opt: bHcl-KihRiy-HhmekLcVtg - beetmover-repackage-uz-win32-shippable/opt: EK__X6XmRCe3CRM15MnFsA - beetmover-repackage-uz-win64-aarch64-shippable/opt: CxykZfo8TmeiJ-wRO1fzzg - beetmover-repackage-uz-win64-shippable/opt: Yoliaw1AS2WafvuNGqlSsA - beetmover-repackage-vi-linux-shippable/opt: BT6tfhDgTUCnAegy3SDbkQ - beetmover-repackage-vi-linux64-aarch64-shippable/opt: ahDgTymzQZqlrwFtlPzlQA - beetmover-repackage-vi-linux64-shippable/opt: Rvei44QMTwa3ZEKK_F3iow - beetmover-repackage-vi-macosx64-shippable/opt: bs9wvTuRTK6rn26zP0C1hw - beetmover-repackage-vi-win32-shippable/opt: NTG7bgbtRgekUYJJ8UukYw - beetmover-repackage-vi-win64-aarch64-shippable/opt: QIW647ndT96sahfrX0bYcw - beetmover-repackage-vi-win64-shippable/opt: WBSvjLw0Tdap5Wr88kFXag - beetmover-repackage-win32-shippable/opt: M8AbuTUzSKms9WmApfkfNA - beetmover-repackage-win64-aarch64-shippable/opt: ee15HeDEQWqapV3yBQdwBw - beetmover-repackage-win64-shippable/opt: CKAnRS-oQmy4TrKzqw6SDA - beetmover-repackage-xh-linux-shippable/opt: We2YzIMlRbWKRplQ4GVghw - beetmover-repackage-xh-linux64-aarch64-shippable/opt: abWHPfe_QWiGi-gcJDj6Dg - beetmover-repackage-xh-linux64-shippable/opt: EHGEATHwQS6Y-LoNoLs8iw - beetmover-repackage-xh-macosx64-shippable/opt: finOoYwwRueDnNZvApItpA - beetmover-repackage-xh-win32-shippable/opt: DpAcCDRdR0q3Wz_Dib2wjw - beetmover-repackage-xh-win64-aarch64-shippable/opt: cs4AXCIBSly7FNvjoyOIMw - beetmover-repackage-xh-win64-shippable/opt: cJg4-oPmTj29C0vOX9b6Ng - beetmover-repackage-zh-CN-linux-shippable/opt: dAJXTUDNQ0yS-oXvtS8tBw - beetmover-repackage-zh-CN-linux64-aarch64-shippable/opt: U9tkI8Z0Tziu7Xippg83OA - beetmover-repackage-zh-CN-linux64-shippable/opt: J559AkKwRm20TXr3_TJaOg - beetmover-repackage-zh-CN-macosx64-shippable/opt: TxWjco9TQbewBTBAxVladA - beetmover-repackage-zh-CN-win32-shippable/opt: Ql8YGTCKSkiDr7xnIq8pjg - beetmover-repackage-zh-CN-win64-aarch64-shippable/opt: YGE21Q1WSvioUJewkxuWrw - beetmover-repackage-zh-CN-win64-shippable/opt: PnkZpctvRdGftCNv6kCkhg - beetmover-repackage-zh-TW-linux-shippable/opt: eR6LBiuzSo6MtQaEDhfPEw - beetmover-repackage-zh-TW-linux64-aarch64-shippable/opt: firv4M91QtuNwjCilqjCMw - beetmover-repackage-zh-TW-linux64-shippable/opt: Lmi0zIoiRVGx0hDb92Lxgg - beetmover-repackage-zh-TW-macosx64-shippable/opt: baagsNM1ReSS8xkV2I5i7A - beetmover-repackage-zh-TW-win32-shippable/opt: Znq6qjgoQ1KaMXTVZWqE7Q - beetmover-repackage-zh-TW-win64-aarch64-shippable/opt: e-PLAypAQIaB5UGEBJvtGA - beetmover-repackage-zh-TW-win64-shippable/opt: Jk2wK03lTRmaR_ytYOLHOQ - beetmover-source-icecat-source/opt: bVdYuy_cSUKU7qMGuZc7dw - build-linux-asan-fuzzing/opt: YPLAOT2FTEO1ekB7evVjpQ - build-linux-fuzzing/debug: LRc8ftL6QGilIDO3iVpUgw - build-linux-shippable/opt: X-6lzaS0Q66MX3a02hxqsg - build-linux-shippable/opt-upload-symbols: AQObllRXQFKBNvV0u7PakA - build-linux/debug: MUjfIWyASWCRW7LQ6XtfuQ - build-linux/debug-upload-symbols: eo1NH0znQX-2XFAzLySl0A - build-linux64-aarch64-shippable/opt: IbcPW4eMSRmRhOlIcCFCAw - build-linux64-aarch64-shippable/opt-upload-symbols: KTKyCSceTV-GVDNtENkPDA - build-linux64-asan-fuzzing-afl/opt: SQAulxCMSmGu1mZe96W3bA - build-linux64-asan-fuzzing-nyx/opt: b9_sxdV1RXWk-5mmkmg8cQ - build-linux64-asan-fuzzing/noopt: PbWCFCYqSg66dpZEYKs75Q - build-linux64-asan-fuzzing/opt: FurYSAa4Tvu7Hk2EnTKJ1Q - build-linux64-asan/debug: YEl1GNEpSyCwjtJtxTv-Qw - build-linux64-asan/opt: IPP357QdSa-qS9GRyzwFkg - build-linux64-base-toolchains-clang/debug: Lr5UU58tQV2lrDOVNJwEfA - build-linux64-base-toolchains/debug: EL9l3qJRTjSaOPAS6Q7w7g - build-linux64-fuzzing-afl/debug: XoJ1EeRyQxexCP5Z0eWt5g - build-linux64-fuzzing-noopt/debug: Tl-916WSQhW0dxJJBSVg-w - build-linux64-fuzzing/debug: f_vwSPCwQV2yoGRHJ16F2A - build-linux64-shippable/opt: Xs3CDBJFQ2mHuhsZ8HlAbw - build-linux64-shippable/opt-upload-symbols: ZDRabpbERFGzOnR65R792A - build-linux64-tsan-fuzzing/opt: ONCNPVTaTtuTx_Wlt1Mo5w - build-linux64-tsan/opt: VRsxCkwyRlCGtF38RIOFTQ - build-linux64/debug: Tk9mFKYMQUC1c5ibxydm7Q - build-linux64/debug-upload-symbols: BQqoPN4TRSCv1_ZU2Q9rLA - build-mac-notarization-macosx64-shippable/opt: aAG25-cvS-yGRSjK-LzFyg - build-mac-signing-macosx64-aarch64/debug: UXdWvHRFSri-gBMz-9WonA - build-mac-signing-macosx64-shippable/opt: RP5HLm0USp68cLczNmVrxw - build-mac-signing-macosx64/debug: IpUan5bNTvalkg4R3v7--g - build-macosx64-aarch64-asan-fuzzing/opt: bluIC8CpQRGCCz6VnVzqhA - build-macosx64-aarch64-fuzzing/debug: H7O8dWH4Q7-gkDWLnsYiug - build-macosx64-aarch64-fuzzing/debug-upload-symbols: DZ1h9OSFTnuznmriXUdcwg - build-macosx64-aarch64-shippable/opt: dcv0bjSdSfuhY5OGF2qf3g - build-macosx64-aarch64-shippable/opt-upload-symbols: ejYUyLPaRi62omd_AuP-6Q - build-macosx64-aarch64/debug: XG1F6KaJTJmi9WOcjH58ow - build-macosx64-aarch64/debug-upload-symbols: MNOplo51Qe6lGk_Yl_QArw - build-macosx64-asan-fuzzing/opt: dKTicd8SRVql7ZNdpFQVsQ - build-macosx64-fuzzing/debug: foi847GSS3esbZELB6L0fA - build-macosx64-fuzzing/debug-upload-symbols: Hy4nWtkiQyWdR_mwxEsE6Q - build-macosx64-shippable/opt: LAqGQmytTECvmVD8Hqpu5Q - build-macosx64-x64-shippable/opt: BPvUnTf7R4mJIkQ2Gf3tAA - build-macosx64-x64-shippable/opt-upload-symbols: SDaCgUokSvCqwHqpnHWvpA - build-macosx64/debug: PTtFqHarTVGJuntMT6vk_w - build-macosx64/debug-upload-symbols: B80QlVDKRQWdsJJHkB9FUg - build-signing-linux-shippable/opt: GJ-JCRkjQM2kT18e8IX1Sg - build-signing-linux64-aarch64-shippable/opt: P8h9Y1GOScmheLX6kLhb8g - build-signing-linux64-shippable/opt: cYkdSiizRK-hemFL97xZBQ - build-signing-win32-shippable/opt: ZbIVQ7fzSAyZ8-5lZt49fA - build-signing-win32/debug: DjL5kDOiQ4WHdUfV6iATfw - build-signing-win64-aarch64-shippable/opt: QwbQV7axSyibiZcpxekKNA - build-signing-win64-shippable/opt: YO2eEqELQwSMEREuvTIINA - build-signing-win64/debug: R-wuEg75Q5SModIrEG_5Dw - build-win32-mingwclang/debug: IMhVw1tQQnqCo6m19L2Ijg - build-win32-mingwclang/opt: MnYn6y34TKahJjtFszKHuA - build-win32-shippable/opt: Xv4RO1mcRv2bZgjB_BpvNw - build-win32-shippable/opt-upload-symbols: B9x86UvlT765t7VV8SlNiQ - build-win32/debug: fkAY7PnaQv2N3LDS36LQNA - build-win32/debug-upload-symbols: ewbDHEdvSB2Bad3m2-seVw - build-win64-aarch64-shippable/opt: IM8L4btDRKe1CbuUG-pm3g - build-win64-aarch64-shippable/opt-upload-symbols: FI7aJBViSQadvwzi1a3yfA - build-win64-aarch64/debug: VyM6j9raTouI1DQFWwp-fw - build-win64-aarch64/debug-upload-symbols: LfahMtCtTb6tbNFTYtAVSg - build-win64-asan-fuzzing/opt: VyEUxXeIT0ushOaz39T_4g - build-win64-asan/debug: F0T4MOOaQgqobrqb5AUgeQ - build-win64-asan/opt: RKb2Z602SHab-rsnkbhLgw - build-win64-mingwclang/debug: FlrfDnkwQ9Ot9g6Cd-tb-A - build-win64-mingwclang/opt: d0h8AjFJQvCPgVyjh95QNA - build-win64-shippable/opt: NQz2A4bgSqqMgLwUidyeOA - build-win64-shippable/opt-upload-symbols: b6kqSt6oQyKaJEMP7uL0rA - build-win64/debug: cK3CL20XS2iYZs8UWFzSdg - build-win64/debug-upload-symbols: Q7qlQk7LQU6-C5v6XQf-Nw - docker-image-android-build: b01HccfTQRm5O1UsvXekNQ - docker-image-android-components: euUx8cOmRKy2RbJ9j-wHLQ - docker-image-android-ui-tests: F0gigxdpRXaKE7holer8mQ - docker-image-condprof: Td9aVPqyShu6i1K4xMEaCA - docker-image-custom-car-android: Emcqh4HURMKpYBPgspX10w - docker-image-custom-car-linux: HNLurrDBR8GjXXSoRpdlrA - docker-image-custom-v8: eOAmvCE5QqG1fAqWGKnoXQ - docker-image-deb12-toolchain-build: CmQdHzZFSvCrzcW2-VsSMA - docker-image-debian12-amd64-build: ZQJQweU7S9m15MWIFM95Sg - docker-image-debian12-base: WfQW44k6SSCLfK5HQq6uGA - docker-image-debian12-flatpak: XEByQFhnSXKwBC5bOBJibw - docker-image-debian12-packages: dm7g72qRQlm_WvA_g3pLlA - docker-image-debian12-raw: bglgZSthQAaC74dyatIXPg - docker-image-debian12-repackage: MvW_Y_YESQikelt9jPEoYA - docker-image-debian12-rpm-repackage: JABt2X7RT3WIl8wmWqWHAQ - docker-image-debian8-i386-packages: cs5ZXZyCRjCMNGEc7s3MZQ - docker-image-debian8-i386-raw: DtvElGG6TV2hJHvmanGVAQ - docker-image-debian8-packages: Ra_hpRcATvmeHdozgjFyVg - docker-image-debian8-raw: XpW-T8hiQIKdjxPsVkEFRg - docker-image-decision: Z_W2kxVNS9qbmGE1IEbYVA - docker-image-diffoscope: JGy0fIOYRFOzwg2srd32ig - docker-image-fetch: JjnWSB70RMqOJh0JHTXpog - docker-image-fetch-more: Y_6fKaNRR_O5lzyrQ9P8KQ - docker-image-funsize-update-generator: EqViNA2VTDW2hH5fOX6V4w - docker-image-gdb-test: FUkq7hnHTXGsBfTC0BD18A - docker-image-image_builder: SHOJVzvwSp-wZglY3aSimw - docker-image-image_builder_arm64: B4Ze6V5MTUq64HfRRtUh4Q - docker-image-index-task: MOKM2P-AQgiFpKPou2B20A - docker-image-lint: QkfQgPCTRyiaEzs7djPnZg - docker-image-partner-repack: RDRR9DH3TUGR7BRpFUG5CQ - docker-image-periodic-updates: WYbeV8O9TC23XhjfpM6G6w - docker-image-push-to-try: QXra6_PGRCeZPtp6YCOTyg - docker-image-sentry: csgHxrGaRkWh2JJDJIOGuQ - docker-image-snap-build-core22: QI4x9P6dT9S1-ETo12dCrA - docker-image-snap-build-core24: O_h9Gy3aSvK3X2X6mbfLrw - docker-image-static-analysis-build: MqGtgGf1SjurJNsPtf0YSQ - docker-image-system-symbols-linux-scraper: U9ozB8GTSc2lvMhOwCzA2g - docker-image-system-symbols-mac: FBZakzfHStW6CW93btmNRQ - docker-image-system-symbols-win: KEfh6xz8RmKwaBWqh7m4zQ - docker-image-system-symbols-win-gfx: cXGxKjdGTsehmhJMcKx2nQ - docker-image-ubuntu1804-base: It_m8Xv8QlqbNkcq8npAeQ - docker-image-ubuntu1804-build-python: W6_o5CtnTDS-tWwm_3720g - docker-image-ubuntu1804-build-python-wheels: LiMKK3keTA2ftYCAl9LI9g - docker-image-ubuntu1804-i386-packages: X84UPktiT_CJrfQzhrUP1g - docker-image-ubuntu1804-i386-raw: AT5OGbD9QyadMY9WeyVFWA - docker-image-ubuntu1804-packages: MV8y-ukpSzyLEYtcq49Xrg - docker-image-ubuntu1804-raw: M5hoTpBLTzODCCq5Kln1vQ - docker-image-ubuntu1804-test: Xlj-dY0pQdK4VRicxCsiPg - docker-image-ubuntu1804-test-base: V6A0JpF4T5KK2D1mzPC1kg - docker-image-ubuntu2004-base: TYS5C50QQ8yPn0paltov5A - docker-image-ubuntu2004-packages: cuYa3Gn7RbCG6Lt4MEpdzg - docker-image-ubuntu2004-raw: UgVf6HmvRE-MWfp8TV5GfQ - docker-image-ubuntu2204-arm64-base: cdpMVpTyTcavFXic5plTcA - docker-image-ubuntu2204-arm64-build-python: UE4PVyaQQzOTc2i9EBjRWw - docker-image-ubuntu2204-arm64-packages: aRZkn9F3Ts6PUimk7TkYGg - docker-image-ubuntu2204-arm64-raw: A8Phm4QZS6ylylcAbpkhuQ - docker-image-ubuntu2204-base: HpbV56QgTKmvF2EgKnTLIA - docker-image-ubuntu2204-build-python-wheels: Okx1wpvLQRWu0W4hBrWidA - docker-image-ubuntu2204-packages: L4EgEg_wT-iZcsnmndmOWQ - docker-image-ubuntu2204-raw: d-AcrhFIRKe4N8vu4K89wA - docker-image-ubuntu2404-arm64-base: f9ssGBsgQDe8dR-43nMzNw - docker-image-ubuntu2404-arm64-packages: JkDhFZT2RMyXc_5u3-M3WA - docker-image-ubuntu2404-arm64-raw: OtXf_flOSIiu-XOiCBhejA - docker-image-ubuntu2404-arm64-test: RuRDCFC8SiWw1jkns1xk3Q - docker-image-ubuntu2404-arm64-test-base: Jnc9mJ8ZQLWvyIN1aU8L3A - docker-image-ubuntu2404-base: YuXrA9GQTlebFLgDVM4BEA - docker-image-ubuntu2404-build-python-wheels: b2XsawT3SH2M8OGiMNq1uQ - docker-image-ubuntu2404-packages: CefqfGKKTQ2jKQvKfFMdSA - docker-image-ubuntu2404-raw: WLzg8xoLTdWgKikLWzsuFQ - docker-image-ubuntu2404-test: Nz0d7dQCRwq6AgjyWkyc0Q - docker-image-ubuntu2404-test-base: C2Ri3aowQQmTB4PJJQoa3Q - docker-image-update-verify: U12UYzyDQcu5DIVJcqQPzw - docker-image-updatebot: QB1MdYfXSSiEd-QxfjNgTA - docker-image-valgrind-build: dpOqQQisTEiCRnbMcLJt0Q - docker-image-webrender: Qx74rUtYSCamURar9k6Rfw - fetch-7zz: T2BKX7jbQlOTHTfpqUyf4g - fetch-afl-plus-plus-4.0: OAgnoo_iQJGlr63ToR00pQ - fetch-binutils-2.31.1: DmER26UZTAe4VZ19L0lEQg - fetch-binutils-2.41: A25-JKBtT66IUoKAW52Fjg - fetch-bomutils: T91Ee3K_Rbiu6Hi6BwQ-yA - fetch-cabextract: FonPgpw9QR2hfOk5uynMvA - fetch-cargo-vet: IJR0q8WqTf6j1ZquXTVVSw - fetch-cbindgen: Mdoi3fYKS0eoVmrNS43-5A - fetch-cbindgen-0.27.0: aVSpvwdGRAyPn6NbjV8HoQ - fetch-cctools-port: A-t2B7-iSYeSHnS86aGnRA - fetch-chromium-depot-tools: RT0wxkUgQtShj0qxiTPNfg - fetch-clang-14: VSj4FRk3T7afmcDjgNsOlA - fetch-clang-19: RaEtKEwoS3y2kW4eCAa3mg - fetch-clang-20: Qn6oA_V6Szed1j5-U-veKA - fetch-clang-8.0: MeOCt3p6RgGclOLwIl9L1g - fetch-cmake: cU8-PULHT5upD5zA1ERVgw - fetch-cpython-3.11.7: fAcei8wwRTuLFMGoAlD4zg - fetch-cpython-3.11.7.exe: b4kYaMVcSBCv_7G02sYxmw - fetch-cpython-3.8.10: YmLZOwiCRwe-iG3grizEuw - fetch-cpython-3.8.10.exe: HApoYEMaSn6I6sEcghhRYA - fetch-dbus-python-1.2.18: RtpFtnLsSqq2ZCr1jrg64A - fetch-dbus-python-1.3.2: VEDFHjskSCGg8mUtm5gdzQ - fetch-dump-syms: aOO-JbTIRByOSsLgrpLwKw - fetch-dxc-src: SSuBaeP_T2SlSbja6XrHrw - fetch-icecat-addons: eY43l8-fSnepoAWb3sGIbA - fetch-fix-stacks: FHZs1BC5RI-dWAC9eBFwzA - fetch-fxc2: a3fyQlqhSIy1WUkfaEPcwA - fetch-gcc-11.4.0: cTZ_OTu-RXqj1WRNKVai1Q - fetch-gcc-8.5.0: NUiq5fgmTi-c66ccwbjlWQ - fetch-gcc-9.5.0: KKKEdpaWQJSsd5qtcduVtQ - fetch-gmp-6.1.0: PP265G9URlmEV4Tz8ml1GQ - fetch-gn: PgcGz9AvQ1OpP4rj3yuVFg - fetch-gnumake: HpRGXmrFQi6M7hHEkK8Kow - fetch-grcov: CeGVZv3lTxeoqGPsp6uNNA - fetch-hfsplus-tools: aKMy4WODQ6uDRnupaaXY8Q - fetch-isl-0.16.1: bXfNaj6aS7m5giQEjc0YuA - fetch-jdk-8-linux64: VdDh9-fjTsuG8MJ2CqsEaA - fetch-ldid: PhvCa89nSoaHOQSG7cGP-A - fetch-libdmg-hfsplus: SnVm-7q-TISQJ4qtq6CbUQ - fetch-libtapi: ROnMd5m6QyyqNHQbSR7TUQ - fetch-libxml2: OSmIUM9dSJOdTm16sdxhjA - fetch-llvm-mingw: GfcnxQdTT6yRm7t1dSGAlw - fetch-macosx64-cmake: Lk9c02zsRvOzTh7ZDMT7WA - fetch-macosx64-ninja: GJXTEcJ3TBKMzH3VeV4iNg - fetch-makecab: DtE8ROvTQ7GFPDJfraMxsA - fetch-mingw-w64: DdcW5OyjSiWUCoyN_l9blw - fetch-mozilla-pdf.js: N7nX3fpSQuyIYJqhQbd-rg - fetch-mpc-1.0.3: aGsmIJ4dRI-WCNVUPcglQg - fetch-mpfr-3.1.4: KWesIGhCTUeKYPWkLu75vQ - fetch-msix-packaging: WTTHd-mETpqBgS71Q5G0lw - fetch-nasm-2.14.02: RmV-0rgJQmi1kyFwugzXzA - fetch-nasm-2.16.03: A7K13w6XQ32Yd5ByjHDpXg - fetch-nodejs-12-linux64: Yon7l1u_R7CII-t2cOffbg - fetch-nodejs-22-linux64-arm64: QMoVkSg5RQu_McShF-ASJA - fetch-nodejs-22-macosx64: Q6tS5m3wR82rSHqnWVphJg - fetch-nodejs-22-macosx64-arm64: ftIelx-6QaieL_synauVUQ - fetch-nodejs-22-source: Gl5piWAERuiq9FgbGzCpFA - fetch-nodejs-22-win32: UYNK7ijdSoeEbQy6uSMvQQ - fetch-nodejs-22-win64: V-SLQW8GSRaFRnt4ywcL3A - fetch-nsis-3.07: CPS0m6ljRIO_bH_TXfX1jg - fetch-nsis-3.07-win: fTUvbGzRTjKBT1BkzrDLEw - fetch-ort.jsep.wasm: Utobyfo6Qo6IY9Bm5T8C2Q - fetch-pkgconf: O1DtweCRREWpCcWxWDniSA - fetch-python-dbusmock-0.32.2: cXeNbNljRd-lO4a8CQATzA - fetch-rust-1.81.0: T8S_OdK5RiKjXFg1bcYEZw - fetch-rust-minidump: fYvmsS47RO69aMykxBBYow - fetch-rust-size: MB9XIF7fQF-tc9Gni4-O_w - fetch-sccache: ZiDZncZ3RYy34kfXomSvsw - fetch-sonatype-nexus: F9yxvqZjTAayrMBwsPZAeQ - fetch-translations.esen.lex: H_FbC1lLSMeWia2cxmNL8g - fetch-translations.esen.model: QHCrqg2LSZKG93snq9s5Xw - fetch-translations.esen.vocab: MLwEj92oQ8G8CByM-9LRbQ - fetch-translations.inference: B46Me3iMS2u_IwYlQTXk9Q - fetch-upx-3.95-win: dtB_tZumSUax0mmMNdxv7Q - fetch-uv: FlTNOcKKQxKtWwd-XONDgA - fetch-wasi-sdk: Gq5OC-ixSS2673o6-NeCfQ - fetch-wasi-sdk-11: Yvoa2dPNRqmI27JicB1tag - fetch-win64-ninja: VrDuxADhQgiugUMbBjIiAQ - fetch-winchecksec: Hjxg1tpFRCyyqM1pDVRWrQ - fetch-windows-rs: ZQ6ctHb-Qcm55C3X5KkMHw - fetch-wine: QlgCKCDcSzu_AnjJxdMOkw - fetch-wix-3.14.0: HpkuCv-nRsOxR3Cz8GwafQ - fetch-xar: bzjznAGSQHapfs6I_g4MGQ - fetch-xz-5.4.4: U2Cfrq1gSgSWoi1BOUHp2w - fetch-zlib-1.3.1: E7JkeNrAReKrjlRwyW4Ekg - icecat-push-to-release: JIrpGRTsQm2_CdB7GskwsQ - fuzzing-grizzly-linux32-debug: dPnICSURQLq9GNCfwo5yfQ - fuzzing-grizzly-linux32-opt: O2cHKBUfTNiiw8MT4fHGkA - fuzzing-grizzly-linux64-debug: UlquLjjUQAmhlCy_i2Pr9A - fuzzing-grizzly-linux64-opt: DwMRY3lpTIGzyLRbOQ_52A - fuzzing-grizzly-linux64-tsan: MTywfwpJSZqft4fIJzKEIg - fuzzing-grizzly-osx-aarch64-debug: Pdr7HLtlT4W0t-iV69RllQ - fuzzing-grizzly-osx-aarch64-opt: e_lutKnKRIGkam6aG-ufPg - fuzzing-grizzly-osx-debug: e_atw2P8TxCc4qeH3ZMr7Q - fuzzing-grizzly-osx-opt: Qia4FnliQ7CPV1HY-9j_NQ - fuzzing-grizzly-windows64-opt: QLiDNH9VQsaToGyR4Y7PEg - generate-profile-linux-shippable/opt: cTO4zpUTTSGjRQSWouUXlQ - generate-profile-linux64-shippable/opt: MU40_Bh-SpaonWrH1rMZnQ - generate-profile-macosx64-aarch64-shippable/opt: T27MtDtLSp-7UM1RIhONjw - generate-profile-macosx64-shippable/opt: J_fCmu-JQ-W4kaPAnytKrg - generate-profile-win32-shippable/opt: MTbg0ZK9TCSTTYpNVeMIjA - generate-profile-win64-aarch64-shippable/opt: VfxmR51LQXia1qkC4RGCDA - generate-profile-win64-shippable/opt: a3Z8dCBzTYKi-Gj2ib4Zog - hazard-linux64-haz/debug: fowX-sg3Rqm-Tyucg3L7pw - instrumented-build-linux-shippable/opt: JV6BoHPKT46CPPS6UXU8YQ - instrumented-build-linux64-shippable/opt: PK3jAVlVTSO-dAkW85vb5g - instrumented-build-macosx64-aarch64-shippable/opt: XFD9mmFLQE65gyFxJu2e1Q - instrumented-build-macosx64-shippable/opt: VXzog711RUSpQtQLEhJI0g - instrumented-build-win32-shippable/opt: Mg0BlJXxTO2gWJnXZYrcJA - instrumented-build-win64-aarch64-shippable/opt: WQwrmfbMSjOnaqMPh9ZB5A - instrumented-build-win64-shippable/opt: ZH8N_0WqSr6k_atvB7BlmA - mar-signing-l10n-ach-linux-shippable/opt: UUAk-2aKSzGSQhwRGEFuTA - mar-signing-l10n-ach-linux64-aarch64-shippable/opt: cqUmzNI6RCCgZo3h3E51Sw - mar-signing-l10n-ach-linux64-shippable/opt: Zo7z_2LaQPyTpvUHw35rgQ - mar-signing-l10n-ach-macosx64-shippable/opt: YaeYWC1ySiC2oqpT_-zcPQ - mar-signing-l10n-ach-win32-shippable/opt: ZWl18-xdTNaPfm2usoguEw - mar-signing-l10n-ach-win64-aarch64-shippable/opt: O-z1-fMSSh-bVw7UhqrrOQ - mar-signing-l10n-ach-win64-shippable/opt: bS7o85pKSeWWpI1PdwB3sg - mar-signing-l10n-af-linux-shippable/opt: EkpWbOAuR7-CggYa6kLLAQ - mar-signing-l10n-af-linux64-aarch64-shippable/opt: fRZdhbVvTxCTGpNC6eR2mw - mar-signing-l10n-af-linux64-shippable/opt: ZsRgSsfCTG6UuKUzcbXTsw - mar-signing-l10n-af-macosx64-shippable/opt: alepR_VuQbqOIVIKUCsRdg - mar-signing-l10n-af-win32-shippable/opt: VZAJC9V5TBycS8B2eRbzMQ - mar-signing-l10n-af-win64-aarch64-shippable/opt: ZJ8YEIp_QG2PwNovwnhY6A - mar-signing-l10n-af-win64-shippable/opt: N5knHLiPTCmN2sSt1lFIQg - mar-signing-l10n-an-linux-shippable/opt: L-9jj2CVRM6ZcIjnYFLCaA - mar-signing-l10n-an-linux64-aarch64-shippable/opt: XcFdrGQHRuiZ7j983RyETA - mar-signing-l10n-an-linux64-shippable/opt: Uit8dnjlQkCmkjkij_N_iw - mar-signing-l10n-an-macosx64-shippable/opt: WtYVMWyJQuigEWK6bhvkKg - mar-signing-l10n-an-win32-shippable/opt: M5kA8kfFSPSm5s99SXF38g - mar-signing-l10n-an-win64-aarch64-shippable/opt: Y4sllYKGTCmaXUnHupmfuQ - mar-signing-l10n-an-win64-shippable/opt: eaWpqnRiTFWALERTIJrRNw - mar-signing-l10n-ar-linux-shippable/opt: OZRlwWp6Qli3pc9Rw2fddw - mar-signing-l10n-ar-linux64-aarch64-shippable/opt: fogtuLdNSUGNtTlOMWAFYg - mar-signing-l10n-ar-linux64-shippable/opt: cz8-yZxBRwyxkQE66HUHTg - mar-signing-l10n-ar-macosx64-shippable/opt: fc6-uhnxRmCZJmVxQXX28g - mar-signing-l10n-ar-win32-shippable/opt: J27Ukq9hT-2quMcYL1H3pw - mar-signing-l10n-ar-win64-aarch64-shippable/opt: Uw7o0NxtQjKCeX6oliTGtw - mar-signing-l10n-ar-win64-shippable/opt: K9069GSwRSK37CuPJ57uuA - mar-signing-l10n-ast-linux-shippable/opt: Hm4aZVMPQXOV9ysh4QfeSQ - mar-signing-l10n-ast-linux64-aarch64-shippable/opt: fdDqrk60TfutZGsMLphziA - mar-signing-l10n-ast-linux64-shippable/opt: Uo5kiWRrSIStR-XaVoRU-g - mar-signing-l10n-ast-macosx64-shippable/opt: UZhT6R03S0WrF0QsBhyMCw - mar-signing-l10n-ast-win32-shippable/opt: b7bG5IqhRyiQkY9t6AlNYg - mar-signing-l10n-ast-win64-aarch64-shippable/opt: MVgVkIXTR2eHzKOwpVoKFg - mar-signing-l10n-ast-win64-shippable/opt: UI06m6u5Tied2UcWpVmxsQ - mar-signing-l10n-az-linux-shippable/opt: QXl1MBhOSBOzy7KogKNASg - mar-signing-l10n-az-linux64-aarch64-shippable/opt: CZqExy2PQtWTTA6Hb2qB5g - mar-signing-l10n-az-linux64-shippable/opt: HGl8G6OISjC8TKMzzFy-cw - mar-signing-l10n-az-macosx64-shippable/opt: aXS768N2SUyJ1H9z7oH8uQ - mar-signing-l10n-az-win32-shippable/opt: cavS12lNTW2gaN5OfBxU2Q - mar-signing-l10n-az-win64-aarch64-shippable/opt: JqYGLrnCTxCL-u0nuNkWDQ - mar-signing-l10n-az-win64-shippable/opt: VvJ7XvEgSba50nqbc_0qmQ - mar-signing-l10n-be-linux-shippable/opt: T6ywdMHGSce-ZYufAtPjRQ - mar-signing-l10n-be-linux64-aarch64-shippable/opt: eN-775Y3TROCmOia0HO0KA - mar-signing-l10n-be-linux64-shippable/opt: ak31_PJFSwqJ7_M4XRiwhg - mar-signing-l10n-be-macosx64-shippable/opt: KVMD0Q39QuSZE0asEdNjoA - mar-signing-l10n-be-win32-shippable/opt: XdoKTqIuQNCc6GXvjMMivw - mar-signing-l10n-be-win64-aarch64-shippable/opt: W_j0bv0JR6CxpoaUq2w8oQ - mar-signing-l10n-be-win64-shippable/opt: Watmq7MOTSWnYAPHSURDBA - mar-signing-l10n-bg-linux-shippable/opt: WYxMy6emRQmIADz4fMfQyA - mar-signing-l10n-bg-linux64-aarch64-shippable/opt: AyvehEA0RVKaxo1rmv55jA - mar-signing-l10n-bg-linux64-shippable/opt: dt4TgYLuRniCTp8NHe-_7A - mar-signing-l10n-bg-macosx64-shippable/opt: SbSrmUx-TM2Ru6Nml6qbQg - mar-signing-l10n-bg-win32-shippable/opt: CPyajFWgTqiFbRqArmjgEQ - mar-signing-l10n-bg-win64-aarch64-shippable/opt: LGEH3xoBSImU9tJdrmBCuw - mar-signing-l10n-bg-win64-shippable/opt: JFA5pAUsR5O563SnrR_XTQ - mar-signing-l10n-bn-linux-shippable/opt: LBeUcLiVQsC3NwRQMB4b0A - mar-signing-l10n-bn-linux64-aarch64-shippable/opt: cR68rV2qQimZAVCArMuTOQ - mar-signing-l10n-bn-linux64-shippable/opt: XzgPAlnWSDOBwD0xfv03hg - mar-signing-l10n-bn-macosx64-shippable/opt: EqoAnZnrQry-SQhZbC-1QQ - mar-signing-l10n-bn-win32-shippable/opt: akjyqUgCTYeUts0BHtX8YQ - mar-signing-l10n-bn-win64-aarch64-shippable/opt: Oir2Y6Z3Slmcq9jlTcSQeg - mar-signing-l10n-bn-win64-shippable/opt: b9mk9z0lTc650GxzWuBUvA - mar-signing-l10n-br-linux-shippable/opt: S_VhIUPJTeOSk80NZkwLAA - mar-signing-l10n-br-linux64-aarch64-shippable/opt: QwC_eVBpQS6KdXFegs324g - mar-signing-l10n-br-linux64-shippable/opt: BvyMsynURBWBYH4GqwS8gg - mar-signing-l10n-br-macosx64-shippable/opt: Mue15RTnSKyPXk52QR983w - mar-signing-l10n-br-win32-shippable/opt: cRch175CTvWAt1ZAG8ajLQ - mar-signing-l10n-br-win64-aarch64-shippable/opt: apPp75XjTAyCUQbbszot4g - mar-signing-l10n-br-win64-shippable/opt: Ls_-QtR6TV20YDk40yGoSg - mar-signing-l10n-bs-linux-shippable/opt: c_1WyUYrSDq_wMnuLP0fBg - mar-signing-l10n-bs-linux64-aarch64-shippable/opt: dYhDMReKQYSGBk6ZGws-zQ - mar-signing-l10n-bs-linux64-shippable/opt: VQW7d--VRFe9mmoXB4anFg - mar-signing-l10n-bs-macosx64-shippable/opt: ZrsBPXCGTUaOGJ2NoBxenQ - mar-signing-l10n-bs-win32-shippable/opt: IlX1TM6_RneaUUN_UJ7Zzw - mar-signing-l10n-bs-win64-aarch64-shippable/opt: Bl7Dr4zZSWqd7fMvHvu6TQ - mar-signing-l10n-bs-win64-shippable/opt: Zqk1qLJgQLe0aziWdks-VA - mar-signing-l10n-ca-linux-shippable/opt: GXdG974sRLanuinKL3ElGA - mar-signing-l10n-ca-linux64-aarch64-shippable/opt: GczRVMgmS_O_qCCMFkp9fg - mar-signing-l10n-ca-linux64-shippable/opt: Xg29VtgLRKCqjgLsNUy-Bw - mar-signing-l10n-ca-macosx64-shippable/opt: Fufc6R76SYKv640QRbh0Cw - mar-signing-l10n-ca-valencia-linux-shippable/opt: Onx2EGaDTgeuAdCt02Hikg - mar-signing-l10n-ca-valencia-linux64-aarch64-shippable/opt: G7fH6Hh8S9ieKPb1BWOTGw - mar-signing-l10n-ca-valencia-linux64-shippable/opt: MM55lYBkRW-rzUXPx5o0Eg - mar-signing-l10n-ca-valencia-macosx64-shippable/opt: YHNNPrDRQPa8cOS55Xdaxw - mar-signing-l10n-ca-valencia-win32-shippable/opt: MvJh47GlR4Osxgwtd1rABg - mar-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: EmvX2yenT8SRr3QWu42r_Q - mar-signing-l10n-ca-valencia-win64-shippable/opt: CqCo9b9zQsOSTJ_rgiw2dg - mar-signing-l10n-ca-win32-shippable/opt: FL6Xe_daQbaVFOyfNJQ2dw - mar-signing-l10n-ca-win64-aarch64-shippable/opt: TAaWyF3pQmu8b7vZAEC3GQ - mar-signing-l10n-ca-win64-shippable/opt: AATXF0oSTaGYBCMASGD92g - mar-signing-l10n-cak-linux-shippable/opt: VpPbY74oS3SucAiBxN2fYw - mar-signing-l10n-cak-linux64-aarch64-shippable/opt: Gqb32LunRi2Dpi9ZGIPcUA - mar-signing-l10n-cak-linux64-shippable/opt: Pqw65fESTt2QsMCHBTHSpw - mar-signing-l10n-cak-macosx64-shippable/opt: Yat5LM_TR4GDA0l5RHzMGg - mar-signing-l10n-cak-win32-shippable/opt: SHVzFCffRc2FZWWtFALDcA - mar-signing-l10n-cak-win64-aarch64-shippable/opt: CVAKk-biTFiH8sqLOjRFGA - mar-signing-l10n-cak-win64-shippable/opt: ds3h1AZIQZihOwInxEGAjQ - mar-signing-l10n-cs-linux-shippable/opt: HvRbz5hGTCqGxDWPL-0Pww - mar-signing-l10n-cs-linux64-aarch64-shippable/opt: KJAFN12uQEa8WSPCmG4ZBw - mar-signing-l10n-cs-linux64-shippable/opt: JqHc3BYoSZK7u3rp5rs3kw - mar-signing-l10n-cs-macosx64-shippable/opt: NUIMUK5_QbaXBhUBDyemog - mar-signing-l10n-cs-win32-shippable/opt: VTq0LU0WT12s6Xg7yca_qQ - mar-signing-l10n-cs-win64-aarch64-shippable/opt: Q3t8wDOGTISQ6wupqZmkJQ - mar-signing-l10n-cs-win64-shippable/opt: cs19ZL6CRmmNoTo5nuzSAA - mar-signing-l10n-cy-linux-shippable/opt: H2tHWs46RsG6RPALb_zzDw - mar-signing-l10n-cy-linux64-aarch64-shippable/opt: NG92BbzVRmCtbdRSZknQ3g - mar-signing-l10n-cy-linux64-shippable/opt: dJ8MRLdfS4KHypQL-H3Cng - mar-signing-l10n-cy-macosx64-shippable/opt: OKuRHPejRGKg9_wvQJfG4g - mar-signing-l10n-cy-win32-shippable/opt: YjzOqTXsSmaJ_xKmbg9Sqg - mar-signing-l10n-cy-win64-aarch64-shippable/opt: ddKkwL__SQ-EbMH2zhl4Bg - mar-signing-l10n-cy-win64-shippable/opt: K-RSk4fFRvO9Dor5nZrJiw - mar-signing-l10n-da-linux-shippable/opt: FUUt6rNlQJiUbmkH-nF9YQ - mar-signing-l10n-da-linux64-aarch64-shippable/opt: aW6OjLY6RUCGAXFkM5hDxg - mar-signing-l10n-da-linux64-shippable/opt: Xx3-MxdWS4aGLIk9iRh04w - mar-signing-l10n-da-macosx64-shippable/opt: WGRu4jlsQyGBXag6nG8NAA - mar-signing-l10n-da-win32-shippable/opt: Gf1r2LM3Qv22XKTimfPrHg - mar-signing-l10n-da-win64-aarch64-shippable/opt: KPZhbxm2Tv--ePGFNrRyFA - mar-signing-l10n-da-win64-shippable/opt: eQ-4BR3mQTaCFjML-NVbQg - mar-signing-l10n-de-linux-shippable/opt: L9Zvr27lSOSTqmAs3mS1cw - mar-signing-l10n-de-linux64-aarch64-shippable/opt: OW4MTALJRHy1-IyI5GtoSw - mar-signing-l10n-de-linux64-shippable/opt: dvFIrlh3Tae_Nb33VcOz6Q - mar-signing-l10n-de-macosx64-shippable/opt: WW33ZExvTQKGGC5n7p9wdQ - mar-signing-l10n-de-win32-shippable/opt: VlpPCjYbSnu7tRtfLVej6A - mar-signing-l10n-de-win64-aarch64-shippable/opt: UI7vTcieSbajzDw96sd1sg - mar-signing-l10n-de-win64-shippable/opt: DHwB9A-RSwGFvdK6RQYmCQ - mar-signing-l10n-dsb-linux-shippable/opt: Wo2ffAtFSjyOe5VHuz0zcA - mar-signing-l10n-dsb-linux64-aarch64-shippable/opt: E5zSxQmcTeSTcUl2mA8xLw - mar-signing-l10n-dsb-linux64-shippable/opt: MnPiu_njRA-jEJPNBEUFOQ - mar-signing-l10n-dsb-macosx64-shippable/opt: f1oLvyCSRNqRVDmzdbuD7A - mar-signing-l10n-dsb-win32-shippable/opt: NoUd_EjARZWK1ykZLeKaWw - mar-signing-l10n-dsb-win64-aarch64-shippable/opt: XzTPE9szR_6Mt9jOxsLEhA - mar-signing-l10n-dsb-win64-shippable/opt: YJ67m1w2QHaQ5ND74Uo6rg - mar-signing-l10n-el-linux-shippable/opt: E_pp1e7VR9qnAnf3CckaXQ - mar-signing-l10n-el-linux64-aarch64-shippable/opt: dGOfRbrbQP6P_KqMqZBcYQ - mar-signing-l10n-el-linux64-shippable/opt: VDLXRFmhQMKCipILIH27pg - mar-signing-l10n-el-macosx64-shippable/opt: ZNQOpF8VTmCIj3Btk4_Yng - mar-signing-l10n-el-win32-shippable/opt: Ke3aiyD5QL2Qnsj1xAmIxA - mar-signing-l10n-el-win64-aarch64-shippable/opt: cbylzn3fRqqzUEbKscPeOg - mar-signing-l10n-el-win64-shippable/opt: fZ4aOjiwQgWJLUr3ovTU5g - mar-signing-l10n-en-CA-linux-shippable/opt: DCnVJ8DlSCGqx9iUK8YtYQ - mar-signing-l10n-en-CA-linux64-aarch64-shippable/opt: be5qwiDpT7isrqtwz2LCJQ - mar-signing-l10n-en-CA-linux64-shippable/opt: N6bh6Xi2QxWSKw9Hl375yA - mar-signing-l10n-en-CA-macosx64-shippable/opt: K7tpoerCQsOfQW0HtFMYtQ - mar-signing-l10n-en-CA-win32-shippable/opt: cPOlvSEZRW6pcXUxu35Pew - mar-signing-l10n-en-CA-win64-aarch64-shippable/opt: Nd3eCVhAQG-tEQapGGN6hA - mar-signing-l10n-en-CA-win64-shippable/opt: VX5bdXLyQXGSf1y62oEl6A - mar-signing-l10n-en-GB-linux-shippable/opt: fRDXkYL6Qka1hAmCJwlhJQ - mar-signing-l10n-en-GB-linux64-aarch64-shippable/opt: C1aKZ3nuR4CS2acjACCM0w - mar-signing-l10n-en-GB-linux64-shippable/opt: fNOnkIfIRZOPulclehXJTw - mar-signing-l10n-en-GB-macosx64-shippable/opt: dfild_vPRk6Qpm-II5yOXQ - mar-signing-l10n-en-GB-win32-shippable/opt: B_NdJ3G5SFG9cUacViscjQ - mar-signing-l10n-en-GB-win64-aarch64-shippable/opt: R9Cfha2UT7O74vqJCVsLfg - mar-signing-l10n-en-GB-win64-shippable/opt: MFt8CMg0T4ipSsT0E9NObA - mar-signing-l10n-eo-linux-shippable/opt: UZgcxFvLQnip_lMJT5kDoQ - mar-signing-l10n-eo-linux64-aarch64-shippable/opt: Vnj2oN3tTiibQoWQYcB_OQ - mar-signing-l10n-eo-linux64-shippable/opt: ID4TpL_3T8mpDXhVbzKe-Q - mar-signing-l10n-eo-macosx64-shippable/opt: bmDofRpVTOmu9L-K_1FMTQ - mar-signing-l10n-eo-win32-shippable/opt: Yt6KFbHZTmCZU0PyMC-2dg - mar-signing-l10n-eo-win64-aarch64-shippable/opt: f3W-Cob4Tnu--zZX3klC0A - mar-signing-l10n-eo-win64-shippable/opt: daMIYnvnSoueWmMbztoPfQ - mar-signing-l10n-es-AR-linux-shippable/opt: cQGR2vnGSLq0QIn3CRlCEg - mar-signing-l10n-es-AR-linux64-aarch64-shippable/opt: ONwUdTpKS16_kMyjU7TvjA - mar-signing-l10n-es-AR-linux64-shippable/opt: LTmJBcxNQfSYieZQCEDD4A - mar-signing-l10n-es-AR-macosx64-shippable/opt: DzmBWQXUTmSeaiS0TbVeGg - mar-signing-l10n-es-AR-win32-shippable/opt: f1S3ExOvRHKoNL27JiJ3pA - mar-signing-l10n-es-AR-win64-aarch64-shippable/opt: LRUionsaS7eR6MhzuAAgog - mar-signing-l10n-es-AR-win64-shippable/opt: Lr3IOH6LRfu_UXrdx5Iygg - mar-signing-l10n-es-CL-linux-shippable/opt: U4Jq4AynRnWSApGuxs5x6g - mar-signing-l10n-es-CL-linux64-aarch64-shippable/opt: ZPAPRAUmSVmSRDSkH5ngWQ - mar-signing-l10n-es-CL-linux64-shippable/opt: UquqZPtXSqW9V7hYxukwQQ - mar-signing-l10n-es-CL-macosx64-shippable/opt: Y9BGTgvzTHeLEE692TC5IQ - mar-signing-l10n-es-CL-win32-shippable/opt: d62iEeyWTh6i4n8Fm_D1-Q - mar-signing-l10n-es-CL-win64-aarch64-shippable/opt: VSIMj7QSQH-XzeeqNi6rew - mar-signing-l10n-es-CL-win64-shippable/opt: Nk5tTTMwRYSU2LTTlMAW_w - mar-signing-l10n-es-ES-linux-shippable/opt: PYw-py6fTi63Ppblr3RdOg - mar-signing-l10n-es-ES-linux64-aarch64-shippable/opt: OhapL0tZSKGmSPfosi4nMw - mar-signing-l10n-es-ES-linux64-shippable/opt: XWQNd9wKS2-mXORrq6TMKQ - mar-signing-l10n-es-ES-macosx64-shippable/opt: JTcpxXahQBWdLbpaEU8APQ - mar-signing-l10n-es-ES-win32-shippable/opt: TZcd_ljbSmqitSW6tyLofg - mar-signing-l10n-es-ES-win64-aarch64-shippable/opt: PWL1oRXUScGX0RKgPSsYPw - mar-signing-l10n-es-ES-win64-shippable/opt: SPJmF2YpSguIfAZicD4sdg - mar-signing-l10n-es-MX-linux-shippable/opt: fgiBK6lkSpGnRXvGegG_tg - mar-signing-l10n-es-MX-linux64-aarch64-shippable/opt: A75oKd7MT8OGouxbO2t-Yg - mar-signing-l10n-es-MX-linux64-shippable/opt: QaqDC6urTZmZS86GvDntXQ - mar-signing-l10n-es-MX-macosx64-shippable/opt: cg6LoboaTZqAtwFP1-RhvQ - mar-signing-l10n-es-MX-win32-shippable/opt: NduGK4SOQlmrSV-R2s_FYQ - mar-signing-l10n-es-MX-win64-aarch64-shippable/opt: a1l8rkwtSaOqV0v4NuY3cg - mar-signing-l10n-es-MX-win64-shippable/opt: c18W15eiTeGJH4wa_U8s0w - mar-signing-l10n-et-linux-shippable/opt: SWZt_18cTpaeDbFBKoDV-A - mar-signing-l10n-et-linux64-aarch64-shippable/opt: KW_TLcqZT3CQD2V7FYbuPA - mar-signing-l10n-et-linux64-shippable/opt: eWWC9qb5QK2cjfYNTarB2g - mar-signing-l10n-et-macosx64-shippable/opt: Tl3B8gEgQ9uS-DUqRxvRmg - mar-signing-l10n-et-win32-shippable/opt: NO0GIAwlSvCQmbXk-OzRHA - mar-signing-l10n-et-win64-aarch64-shippable/opt: Fg4q7FQLTRCuzQngu1PFwQ - mar-signing-l10n-et-win64-shippable/opt: IAPRqdHLSamvPO0dUOsS2w - mar-signing-l10n-eu-linux-shippable/opt: R98dj1MASWCgqW6GNTqhpg - mar-signing-l10n-eu-linux64-aarch64-shippable/opt: Akpj4AkHRt-5YLZF8xKymQ - mar-signing-l10n-eu-linux64-shippable/opt: CfTmLoi5TnqsfpfP02V0yQ - mar-signing-l10n-eu-macosx64-shippable/opt: Hlnb03dfR5e4VyxHfrX0HQ - mar-signing-l10n-eu-win32-shippable/opt: CIGAUsUtSrqty2ar-8fbzg - mar-signing-l10n-eu-win64-aarch64-shippable/opt: fIuYphq7TtC5XyP7VBC6Wg - mar-signing-l10n-eu-win64-shippable/opt: NskWOZfsTYiqVrIhptDMJw - mar-signing-l10n-fa-linux-shippable/opt: L_Txjf-KT0ODd-E56O3jlQ - mar-signing-l10n-fa-linux64-aarch64-shippable/opt: GYTiKJiWQ1W-oylR6oEyGA - mar-signing-l10n-fa-linux64-shippable/opt: R8dt6_EESwOJMoExtYGzwA - mar-signing-l10n-fa-macosx64-shippable/opt: Kzt4t9xGSJmnhEgt6eg9TQ - mar-signing-l10n-fa-win32-shippable/opt: GttzifNsTsuEF9Rhwzq09A - mar-signing-l10n-fa-win64-aarch64-shippable/opt: G2i9s6JCRD-ZT5TCwOTo5A - mar-signing-l10n-fa-win64-shippable/opt: Hd0s2G_PR0yUu2u4451pXQ - mar-signing-l10n-ff-linux-shippable/opt: G91RLYK0R-KYjbkqBCvEpQ - mar-signing-l10n-ff-linux64-aarch64-shippable/opt: JCWl6gjpQKSwAvZti21G1w - mar-signing-l10n-ff-linux64-shippable/opt: RcvwcCJHTpay31qtxHAqSA - mar-signing-l10n-ff-macosx64-shippable/opt: C4gC99IqQOSaJPI3stOLbA - mar-signing-l10n-ff-win32-shippable/opt: Dgq8rwBnS9WvcKKVTdad_A - mar-signing-l10n-ff-win64-aarch64-shippable/opt: IHoALUGSQFKIbEB_Hv9ohw - mar-signing-l10n-ff-win64-shippable/opt: RuhXkOCpQPidva9vULz2fA - mar-signing-l10n-fi-linux-shippable/opt: XGD5N3FcRSOwoK2QCP_O6g - mar-signing-l10n-fi-linux64-aarch64-shippable/opt: R3Jy4CPhQzGK8M2oaE0grA - mar-signing-l10n-fi-linux64-shippable/opt: aLHdYtQUTKy-fJ8GyfDtTQ - mar-signing-l10n-fi-macosx64-shippable/opt: NVSLjGkuRzGm24-_FIG28A - mar-signing-l10n-fi-win32-shippable/opt: PYPfy1rkQcalmezoIqfnhQ - mar-signing-l10n-fi-win64-aarch64-shippable/opt: Pixk2OsmSzq1sBbmLVNwsA - mar-signing-l10n-fi-win64-shippable/opt: ax1OlgJGQl6jTPNNcQc_yg - mar-signing-l10n-fr-linux-shippable/opt: AMwAXOD6TF6M2l3BUNISoQ - mar-signing-l10n-fr-linux64-aarch64-shippable/opt: fYxW7IdYS7quke0_Ow46rg - mar-signing-l10n-fr-linux64-shippable/opt: LVLmlErVQy6gDxLKG7Xf0g - mar-signing-l10n-fr-macosx64-shippable/opt: Lbp6-kWaQsmTa1duQkzRXA - mar-signing-l10n-fr-win32-shippable/opt: UesO9-zBSa6d-7zB7Ixb0A - mar-signing-l10n-fr-win64-aarch64-shippable/opt: ayWUanILRauTpvlf7BLFoA - mar-signing-l10n-fr-win64-shippable/opt: BpXiHClORbi_l38nslXD_A - mar-signing-l10n-fur-linux-shippable/opt: fDfyuJaJQVqgTiNzRKbv0Q - mar-signing-l10n-fur-linux64-aarch64-shippable/opt: PZLQVqIiT5yoCTM4-2QdNg - mar-signing-l10n-fur-linux64-shippable/opt: Qb3SITLvTXajLm3MgDaovA - mar-signing-l10n-fur-macosx64-shippable/opt: AbUkqn2CSwi7jmkOMQaKYA - mar-signing-l10n-fur-win32-shippable/opt: VShA23HdSzeilRLJqR7VOQ - mar-signing-l10n-fur-win64-aarch64-shippable/opt: DzamCbuiTvq-UMoj3535OA - mar-signing-l10n-fur-win64-shippable/opt: NA1lxcGETS2DwJ2tBglwbw - mar-signing-l10n-fy-NL-linux-shippable/opt: KH0-Y05bShOk3XhtA4KOtw - mar-signing-l10n-fy-NL-linux64-aarch64-shippable/opt: NdeofKBzRRe9IV0l3uXQwg - mar-signing-l10n-fy-NL-linux64-shippable/opt: ZNpsc1XAQMaDDrJg7IR8Cg - mar-signing-l10n-fy-NL-macosx64-shippable/opt: WVl0TsOLSPqSVmJk_OE0rA - mar-signing-l10n-fy-NL-win32-shippable/opt: SKHHvOgSSLqLsE8yTGF1qQ - mar-signing-l10n-fy-NL-win64-aarch64-shippable/opt: Un2JhFrRQpKgDKhkm37t9A - mar-signing-l10n-fy-NL-win64-shippable/opt: I92fUWI3SBGN9aPLTCP-7w - mar-signing-l10n-ga-IE-linux-shippable/opt: ENZH5gBSQEq0Eh6ZrAkqYA - mar-signing-l10n-ga-IE-linux64-aarch64-shippable/opt: QR50jSPFRhGmhMxgyeVsnQ - mar-signing-l10n-ga-IE-linux64-shippable/opt: UBFOKG58SAK49WpqZWFzRw - mar-signing-l10n-ga-IE-macosx64-shippable/opt: LVWZJotoQ9uxah3AtV4RDg - mar-signing-l10n-ga-IE-win32-shippable/opt: NISrCmCsT5WrQFKkTFnRoA - mar-signing-l10n-ga-IE-win64-aarch64-shippable/opt: Wc9WZvCFRe2jgIFCKtsOVw - mar-signing-l10n-ga-IE-win64-shippable/opt: fZvRnIBXTX2BdvytHSDrfQ - mar-signing-l10n-gd-linux-shippable/opt: FU1WRGFnTVObOZ-w2eQd1Q - mar-signing-l10n-gd-linux64-aarch64-shippable/opt: KyKtZz7ZQVao1Q4ctQz6ag - mar-signing-l10n-gd-linux64-shippable/opt: QoLF10i_QXuG2kYaw8c0Cg - mar-signing-l10n-gd-macosx64-shippable/opt: dsd7VzhgSEulGISTtJ-iCQ - mar-signing-l10n-gd-win32-shippable/opt: cYrCBHkDTJazgnGyejOUgA - mar-signing-l10n-gd-win64-aarch64-shippable/opt: aui1KkyZTqqJP0ifPWDOjw - mar-signing-l10n-gd-win64-shippable/opt: Uzz1GMfLTsCnuol4yD8y0w - mar-signing-l10n-gl-linux-shippable/opt: LTCzc-L0Qy2JSFumtPFL-w - mar-signing-l10n-gl-linux64-aarch64-shippable/opt: cCVrWm7SSx6izcESaDOXRA - mar-signing-l10n-gl-linux64-shippable/opt: bGU4OZKVToiC6Kk9AsO_nw - mar-signing-l10n-gl-macosx64-shippable/opt: cNX3K2U_Q0qMOzxbqkB_Qg - mar-signing-l10n-gl-win32-shippable/opt: XryniHolTAS_Pb0O4X8lTA - mar-signing-l10n-gl-win64-aarch64-shippable/opt: Bb7UoEjfREWwm_4dsXoB1g - mar-signing-l10n-gl-win64-shippable/opt: bPs-glKsTwKT299Db8scFg - mar-signing-l10n-gn-linux-shippable/opt: C6VuWh6KQLWzj5_Nz9qv2Q - mar-signing-l10n-gn-linux64-aarch64-shippable/opt: Bn9EIxFrTvy4hfd-iLXZjg - mar-signing-l10n-gn-linux64-shippable/opt: JtoosAWsQumQIuanPGiPNQ - mar-signing-l10n-gn-macosx64-shippable/opt: ICpAnSvtTHuJ6fNueLWlfA - mar-signing-l10n-gn-win32-shippable/opt: Vg38E0IATeSzS6iIGkyXxg - mar-signing-l10n-gn-win64-aarch64-shippable/opt: RQG8wHOhSnOjfxk_LmuveQ - mar-signing-l10n-gn-win64-shippable/opt: S0ZDrN-tRc2wAIROvrzxhA - mar-signing-l10n-gu-IN-linux-shippable/opt: ZpVpDVU9R-OoOxuZwfb6tg - mar-signing-l10n-gu-IN-linux64-aarch64-shippable/opt: Fy30gvZNRYyK44Bp1J0MQQ - mar-signing-l10n-gu-IN-linux64-shippable/opt: WiElbeaRQtiD-jTmuktX0g - mar-signing-l10n-gu-IN-macosx64-shippable/opt: TDTKx7BSQL6O10eM2DSChw - mar-signing-l10n-gu-IN-win32-shippable/opt: aeMngYFRSB66pXirwulReQ - mar-signing-l10n-gu-IN-win64-aarch64-shippable/opt: fRK542AkRGmF4o7f7xdH2Q - mar-signing-l10n-gu-IN-win64-shippable/opt: GF6Z7lXVTQCWy5CN1EvZLA - mar-signing-l10n-he-linux-shippable/opt: VoZ8bnIeSw2Qhm4OxLN0Ng - mar-signing-l10n-he-linux64-aarch64-shippable/opt: cqlWLsYvRkSeBzZJqVgGlg - mar-signing-l10n-he-linux64-shippable/opt: belZwkZTR9ugtvvgDSeqbA - mar-signing-l10n-he-macosx64-shippable/opt: B2-37aE4QSaCEIjxlEEcrg - mar-signing-l10n-he-win32-shippable/opt: Fkpbb4iKRSO_8ZiJy5BrEg - mar-signing-l10n-he-win64-aarch64-shippable/opt: QQCBKs99Rq6uVcz8XnJrbA - mar-signing-l10n-he-win64-shippable/opt: do850-rfQKOxgUJgvzahtg - mar-signing-l10n-hi-IN-linux-shippable/opt: eJOgj7aKQ7WCE6fAus5M8A - mar-signing-l10n-hi-IN-linux64-aarch64-shippable/opt: VhC8y7udTae5yb7tQWdsxA - mar-signing-l10n-hi-IN-linux64-shippable/opt: Rt4sT94FTd6tiiIqFqbO1Q - mar-signing-l10n-hi-IN-macosx64-shippable/opt: R8Ql1FWiQ8yr7DAoN91SOA - mar-signing-l10n-hi-IN-win32-shippable/opt: Od5BuOHUSMOnLPdTFnOvoA - mar-signing-l10n-hi-IN-win64-aarch64-shippable/opt: dAUPWpbaQrCkgpMMOmF11Q - mar-signing-l10n-hi-IN-win64-shippable/opt: QVDSw5r5RdmTrB9tLAfYeA - mar-signing-l10n-hr-linux-shippable/opt: LUWwv1A6Rh2zql10UfZKIA - mar-signing-l10n-hr-linux64-aarch64-shippable/opt: PMJJCgaMTvqSXPcrl1nCSw - mar-signing-l10n-hr-linux64-shippable/opt: IfRlwDohTYmyW1CpKmsenw - mar-signing-l10n-hr-macosx64-shippable/opt: FJAndf7MTZW6Y1pex4fe5w - mar-signing-l10n-hr-win32-shippable/opt: LZ6Nom4kS2eIzWB2T_h0Pg - mar-signing-l10n-hr-win64-aarch64-shippable/opt: es8B06j1QCmyZHjoeofIVg - mar-signing-l10n-hr-win64-shippable/opt: CC1C68kXQk-eQ9RbGZHaHQ - mar-signing-l10n-hsb-linux-shippable/opt: I0Ab7p-oSYC94QRUatyDpQ - mar-signing-l10n-hsb-linux64-aarch64-shippable/opt: RQAt3JgMRFGZQMCAw_lUFQ - mar-signing-l10n-hsb-linux64-shippable/opt: JNsXd62DTjqLR99VAEwQZA - mar-signing-l10n-hsb-macosx64-shippable/opt: VF-blS9MQv2wwM0JHLWXcA - mar-signing-l10n-hsb-win32-shippable/opt: NKZDoDaIQNCUlS7JahTlpQ - mar-signing-l10n-hsb-win64-aarch64-shippable/opt: ICv03DpSTPiI7NNuKLjhGQ - mar-signing-l10n-hsb-win64-shippable/opt: YdrAuX5nTp-LAjoqAmdTOw - mar-signing-l10n-hu-linux-shippable/opt: ed1Fej2hSkKpHu8tvhxPHw - mar-signing-l10n-hu-linux64-aarch64-shippable/opt: br52lUd9SX6Z_5dLZ0DFwQ - mar-signing-l10n-hu-linux64-shippable/opt: RstkwLUKQEK1MMUjWnKwpw - mar-signing-l10n-hu-macosx64-shippable/opt: RcftqDjVQcGIryLifMbssw - mar-signing-l10n-hu-win32-shippable/opt: XoqB-h5lSdK7o7a9dyO8xg - mar-signing-l10n-hu-win64-aarch64-shippable/opt: PbbSFfgLSnqP4DTvyeVv7A - mar-signing-l10n-hu-win64-shippable/opt: JaOpHlJ4ToO3W_uU-SRZFQ - mar-signing-l10n-hy-AM-linux-shippable/opt: LbcjvwoaRMWUp3g9abY-tA - mar-signing-l10n-hy-AM-linux64-aarch64-shippable/opt: T1_C0Nq4T0ecgMnvbqWtSw - mar-signing-l10n-hy-AM-linux64-shippable/opt: YziQ6CaOR_GIb1ScOFnfIg - mar-signing-l10n-hy-AM-macosx64-shippable/opt: Q31ETRP5RCWyDx2AYov15Q - mar-signing-l10n-hy-AM-win32-shippable/opt: NMwt9YwoRFiwSX-iJkRJRQ - mar-signing-l10n-hy-AM-win64-aarch64-shippable/opt: KvDrGaHvT222YPHjvG50CQ - mar-signing-l10n-hy-AM-win64-shippable/opt: HJpP91XVTsqXQ-H3WjnLkg - mar-signing-l10n-ia-linux-shippable/opt: CZTdCB0lQRaOezMiRNu0Vw - mar-signing-l10n-ia-linux64-aarch64-shippable/opt: XeF_Gp5MQS-Q2ygmhyMhsg - mar-signing-l10n-ia-linux64-shippable/opt: dN80weCLTkeMp978lolPIw - mar-signing-l10n-ia-macosx64-shippable/opt: MTJRancsQx2FKjYmrT6E_Q - mar-signing-l10n-ia-win32-shippable/opt: ByNKNcqqQBW48ab6PEd-nw - mar-signing-l10n-ia-win64-aarch64-shippable/opt: TiHqCZqiQxSpnd_Oewi06g - mar-signing-l10n-ia-win64-shippable/opt: DdaFhV3hTESDJt1PzKBsvg - mar-signing-l10n-id-linux-shippable/opt: JGFCbfEHSN25ttq5D0su5Q - mar-signing-l10n-id-linux64-aarch64-shippable/opt: bcjgQA0XTdm7u8ChyoJNbw - mar-signing-l10n-id-linux64-shippable/opt: HFzvc5n_TyOyUw6Lt95X6w - mar-signing-l10n-id-macosx64-shippable/opt: CoFT0t6oT8erqw9RPxbx9g - mar-signing-l10n-id-win32-shippable/opt: E5YFG9ugRneQ561yL7YhMQ - mar-signing-l10n-id-win64-aarch64-shippable/opt: Aevz7HAIQYivn_IYbycEnA - mar-signing-l10n-id-win64-shippable/opt: V8rfbKp0QkGp6yDKkMbgzQ - mar-signing-l10n-is-linux-shippable/opt: fKFiGhIlR7aic9aAz923-g - mar-signing-l10n-is-linux64-aarch64-shippable/opt: QOkgM-nGRKOVZuaMwqFxPg - mar-signing-l10n-is-linux64-shippable/opt: GdZa_PDbRKS6mkp_AcUXDA - mar-signing-l10n-is-macosx64-shippable/opt: HYUk_xr7QTGCYygo7aXdwg - mar-signing-l10n-is-win32-shippable/opt: Rs5EUl2QTt-98GSxpT7Eow - mar-signing-l10n-is-win64-aarch64-shippable/opt: cNqZyNRTSrSdzKQjvW0zyA - mar-signing-l10n-is-win64-shippable/opt: EnjtOfXORiKa5TiQDxr_CA - mar-signing-l10n-it-linux-shippable/opt: QQ3CV6lKQMeENtL-mDRK7g - mar-signing-l10n-it-linux64-aarch64-shippable/opt: fhmzatM6S7WHU_q5m-iMbw - mar-signing-l10n-it-linux64-shippable/opt: TCMXS9u5R4u5JTlbIaD_QA - mar-signing-l10n-it-macosx64-shippable/opt: A9PFArFFSTmt1TJvQ7pNmw - mar-signing-l10n-it-win32-shippable/opt: LTRQ8WeMS5uFko8LdNu3bw - mar-signing-l10n-it-win64-aarch64-shippable/opt: Hx-8WKCRR_SjpJ-yNyTs7g - mar-signing-l10n-it-win64-shippable/opt: GOjjbKFtS_CNeliwJda0vg - mar-signing-l10n-ja-JP-mac-macosx64-shippable/opt: CDcjt1A-RS6qor1rT_cT6Q - mar-signing-l10n-ja-linux-shippable/opt: Kj2uwEDSQVi1ERzUiSLD6g - mar-signing-l10n-ja-linux64-aarch64-shippable/opt: GXaACCB8QC687t62wQNDng - mar-signing-l10n-ja-linux64-shippable/opt: Zvy3ZovVTrqOjtCrPxy4ag - mar-signing-l10n-ja-win32-shippable/opt: d9YnnxVsQGaDow-OqEhggw - mar-signing-l10n-ja-win64-aarch64-shippable/opt: AdU6GjyNQOqWmeHW2Gu9bw - mar-signing-l10n-ja-win64-shippable/opt: Q-wy88qtQH-6rqZDSCV70A - mar-signing-l10n-ka-linux-shippable/opt: ODLYlthXREez78JdjwlV-A - mar-signing-l10n-ka-linux64-aarch64-shippable/opt: ePU9-HYsQj6wKX5B9Q8LFg - mar-signing-l10n-ka-linux64-shippable/opt: PwAMJVDAQN6KhBT8bWjWEQ - mar-signing-l10n-ka-macosx64-shippable/opt: NJs-jJYBTjeV35URwi3f3A - mar-signing-l10n-ka-win32-shippable/opt: LljlQyCxTW-yTQpDgPGLDg - mar-signing-l10n-ka-win64-aarch64-shippable/opt: LO9bE55fRmS8E8J3YPHOdQ - mar-signing-l10n-ka-win64-shippable/opt: b527S2TTTyKwG_Bvgwj3BA - mar-signing-l10n-kab-linux-shippable/opt: JgP2eAM4SaW9B66o45V9QA - mar-signing-l10n-kab-linux64-aarch64-shippable/opt: L11EH2FpT2CFiIOp93T2ug - mar-signing-l10n-kab-linux64-shippable/opt: NVfJdWnJQy-MvqHQiADRnw - mar-signing-l10n-kab-macosx64-shippable/opt: Bq5BjBCFQQGVw3WMoZQ9cg - mar-signing-l10n-kab-win32-shippable/opt: N40SIXk6TpS188pjqvlADQ - mar-signing-l10n-kab-win64-aarch64-shippable/opt: GNqT_-8SRNOAQDC9GLGyYw - mar-signing-l10n-kab-win64-shippable/opt: FSegUADHR9izsjijFf_IOg - mar-signing-l10n-kk-linux-shippable/opt: eHhvqXPESSK7GOsZ0gu5Lw - mar-signing-l10n-kk-linux64-aarch64-shippable/opt: Mk43gMefQ6-cNUt8hYirvQ - mar-signing-l10n-kk-linux64-shippable/opt: Aa84Ee2DSDSwoZZ9b496Tg - mar-signing-l10n-kk-macosx64-shippable/opt: MK-ASe61TESbjbk8RxwBog - mar-signing-l10n-kk-win32-shippable/opt: OqpvBKgsQxadFe-vViJ9Bg - mar-signing-l10n-kk-win64-aarch64-shippable/opt: Su8Eo9-TQ8qbOxQLhw6pXw - mar-signing-l10n-kk-win64-shippable/opt: BPwD1brxSieOoMz9QBF6_g - mar-signing-l10n-km-linux-shippable/opt: H8rKrchVR9Ozwc6VhGtmIQ - mar-signing-l10n-km-linux64-aarch64-shippable/opt: JLAxxIsRSoWvn8tCZYQdtw - mar-signing-l10n-km-linux64-shippable/opt: fk3BXM2MTay0on4S6tlwCw - mar-signing-l10n-km-macosx64-shippable/opt: cksuSqHuSnC2GYUEoT-n3w - mar-signing-l10n-km-win32-shippable/opt: OMLnbUYBR36k7sQlxaz90w - mar-signing-l10n-km-win64-aarch64-shippable/opt: XDr5Xp_dTQyrmKLpSS7rIA - mar-signing-l10n-km-win64-shippable/opt: VUndoc9STLusbgtqBtF-hw - mar-signing-l10n-kn-linux-shippable/opt: Vi2O-a1GQC-Md2V6lQBGkg - mar-signing-l10n-kn-linux64-aarch64-shippable/opt: dg0BCzFCRviE1KObPH8H1w - mar-signing-l10n-kn-linux64-shippable/opt: PHAcbV8RQ4eNmyxTzoOMPA - mar-signing-l10n-kn-macosx64-shippable/opt: RVzvgwWlTmCjMwS-csm-jg - mar-signing-l10n-kn-win32-shippable/opt: V8W9V1WcRH6mhLgKLAl1ag - mar-signing-l10n-kn-win64-aarch64-shippable/opt: SCmEGBW0TqGziK77Pm9_jg - mar-signing-l10n-kn-win64-shippable/opt: AqqJmVvgRC2BEZjYno9kjw - mar-signing-l10n-ko-linux-shippable/opt: Ai_dSWmYQ0qoTitV2Yleuw - mar-signing-l10n-ko-linux64-aarch64-shippable/opt: AoKnOIp8QRKVVAtt0Z-NFQ - mar-signing-l10n-ko-linux64-shippable/opt: cOGKfIi3Qti6V2lRJhyjbA - mar-signing-l10n-ko-macosx64-shippable/opt: SrTM6aPoQ-KO38akCIZZ5w - mar-signing-l10n-ko-win32-shippable/opt: G5jwbdCPTam0F248mv3Oug - mar-signing-l10n-ko-win64-aarch64-shippable/opt: US3w1hvzQeqiYcdAYyqrpQ - mar-signing-l10n-ko-win64-shippable/opt: fzhKIIrhRF-cHWYCAB6krw - mar-signing-l10n-lij-linux-shippable/opt: XXeEGqtVSdWvql9GyHp67Q - mar-signing-l10n-lij-linux64-aarch64-shippable/opt: B3l1_EODRRuId8nLJnbQdQ - mar-signing-l10n-lij-linux64-shippable/opt: Xjp7uGJyTF6p1mRUR_pauQ - mar-signing-l10n-lij-macosx64-shippable/opt: OGPny-IKRM-yNc5Ne-c51w - mar-signing-l10n-lij-win32-shippable/opt: OK3Kbh8bT2OnchTnMd883Q - mar-signing-l10n-lij-win64-aarch64-shippable/opt: diIRCM4nTre5cyyLd6yByQ - mar-signing-l10n-lij-win64-shippable/opt: R_wQP2QVST-enOC86XNJ8g - mar-signing-l10n-lt-linux-shippable/opt: AS9MfRjNTPiFnzysXUqgDQ - mar-signing-l10n-lt-linux64-aarch64-shippable/opt: MwybZT9hRqe0G4ppQKNb_Q - mar-signing-l10n-lt-linux64-shippable/opt: JPDPE4DpQye6Im6SKD9uaA - mar-signing-l10n-lt-macosx64-shippable/opt: AaylNVifQeqknfnVZpVwHA - mar-signing-l10n-lt-win32-shippable/opt: acvoM2a1QIyPkf0KJkI0FQ - mar-signing-l10n-lt-win64-aarch64-shippable/opt: PAQZR9XXSUy9hMz202fWHA - mar-signing-l10n-lt-win64-shippable/opt: JdjnJ0iFQIyx1yUKt4VJfg - mar-signing-l10n-lv-linux-shippable/opt: PJKRg3zhT4uZK8JFWPRZIA - mar-signing-l10n-lv-linux64-aarch64-shippable/opt: ZLZ3j5c5QAK3fCL15mmZAw - mar-signing-l10n-lv-linux64-shippable/opt: c8IMsmAGQVW5EVNlrC1VXA - mar-signing-l10n-lv-macosx64-shippable/opt: WuLNUBDgSFCmAO8ui7Mjww - mar-signing-l10n-lv-win32-shippable/opt: T-WMGMxbQcuRWtJ9dJ-Abg - mar-signing-l10n-lv-win64-aarch64-shippable/opt: b5CL1vWKQUGi3uA_L6mgIw - mar-signing-l10n-lv-win64-shippable/opt: H4ZeKYLCSfiEg2I5BDVzsg - mar-signing-l10n-mk-linux-shippable/opt: M_6e27xXTz-6sTx_ehmstw - mar-signing-l10n-mk-linux64-aarch64-shippable/opt: FKj3tI34QuWALQZlgFbmsQ - mar-signing-l10n-mk-linux64-shippable/opt: L50rq6s6QnmzI82H9nIiZQ - mar-signing-l10n-mk-macosx64-shippable/opt: eByXDNDnR1Olvbo_yoXa-w - mar-signing-l10n-mk-win32-shippable/opt: aqdW7K0MQraCGT32KJOkWw - mar-signing-l10n-mk-win64-aarch64-shippable/opt: IR-Lot-tRM-NReq-E0EUhA - mar-signing-l10n-mk-win64-shippable/opt: fXNdH5ZqTGCr9QHloP1c3Q - mar-signing-l10n-mr-linux-shippable/opt: ewFWGEXaT6iVmBLRQ7Rpmg - mar-signing-l10n-mr-linux64-aarch64-shippable/opt: Tc6TJOP0Q9OxoIdB9fFU5w - mar-signing-l10n-mr-linux64-shippable/opt: JeLPxoXcS0e8LFh6c1i4Bw - mar-signing-l10n-mr-macosx64-shippable/opt: Qp9hOMNvToyzwxNT_ydM-g - mar-signing-l10n-mr-win32-shippable/opt: XMPDJl4QQs6Vfp4tXufZkw - mar-signing-l10n-mr-win64-aarch64-shippable/opt: EalVZK6USVGLbv2pdzS7jQ - mar-signing-l10n-mr-win64-shippable/opt: ewbtRzyKSFmwuC3fbZ3Urw - mar-signing-l10n-ms-linux-shippable/opt: Kh0sTTViT-eYcqsGyYCRCg - mar-signing-l10n-ms-linux64-aarch64-shippable/opt: XozxEDQATRq9djVWEVGO0Q - mar-signing-l10n-ms-linux64-shippable/opt: Tmk7KIo7QTOMcpI-JwmK4w - mar-signing-l10n-ms-macosx64-shippable/opt: dHACFELXRWWZNa8asKj8XQ - mar-signing-l10n-ms-win32-shippable/opt: a-GAMZqbTJGNN7N8kKtmRA - mar-signing-l10n-ms-win64-aarch64-shippable/opt: W3EoTa-uRmWrdm4mx-dibA - mar-signing-l10n-ms-win64-shippable/opt: YHtUN-poRBylR66Al9NG8g - mar-signing-l10n-my-linux-shippable/opt: EutgpuoCQHihsFpLY_VyFQ - mar-signing-l10n-my-linux64-aarch64-shippable/opt: R9QF3eKrQsWncdbgij77iQ - mar-signing-l10n-my-linux64-shippable/opt: elHIEfU0SHS6xyXgZ0eWcQ - mar-signing-l10n-my-macosx64-shippable/opt: MDcIIHMtT4GglfJWsHcExQ - mar-signing-l10n-my-win32-shippable/opt: HuWbxnV2RCOrK8a5jUtdfA - mar-signing-l10n-my-win64-aarch64-shippable/opt: D92WzBJJRbWkPBVc5Nhl7A - mar-signing-l10n-my-win64-shippable/opt: TLtZnsSpQ0ujDQXIK24FOA - mar-signing-l10n-nb-NO-linux-shippable/opt: YD3ZXNhxRwCJ_a2wHwLm6w - mar-signing-l10n-nb-NO-linux64-aarch64-shippable/opt: CcW5eKSSS7STwCNa7r7ZkQ - mar-signing-l10n-nb-NO-linux64-shippable/opt: S5bLkTuuQMCTdNsa9qVApw - mar-signing-l10n-nb-NO-macosx64-shippable/opt: C2YeI4bzRV6XlLXeDFBexQ - mar-signing-l10n-nb-NO-win32-shippable/opt: YE47Y4BSTgWPR3jOLl48fQ - mar-signing-l10n-nb-NO-win64-aarch64-shippable/opt: GjaHu3UjSJKc4dUsbIn5TA - mar-signing-l10n-nb-NO-win64-shippable/opt: Amq3dshIScqNgODXBP57Dg - mar-signing-l10n-ne-NP-linux-shippable/opt: DuxrxbBZQdCj2d_uHlHOgQ - mar-signing-l10n-ne-NP-linux64-aarch64-shippable/opt: EQXT-pzbTb-Sa22c-Ei0zw - mar-signing-l10n-ne-NP-linux64-shippable/opt: VsXs8jQWTdWbdDVW904-bg - mar-signing-l10n-ne-NP-macosx64-shippable/opt: ar4Jn4CKRECL3dy_ctxp4Q - mar-signing-l10n-ne-NP-win32-shippable/opt: WP4UuWllTwCHe5vtL8MXvw - mar-signing-l10n-ne-NP-win64-aarch64-shippable/opt: MnZZVD_dRomzvcgCQ8jhqQ - mar-signing-l10n-ne-NP-win64-shippable/opt: cjz1a-AaRmWZFi2fU9UVCw - mar-signing-l10n-nl-linux-shippable/opt: eUiSaVPvS0GswGEoXY4vrA - mar-signing-l10n-nl-linux64-aarch64-shippable/opt: LnR55sPETWK8JGEluwCtlQ - mar-signing-l10n-nl-linux64-shippable/opt: TvxzWQIyR62mQ9ltCyr7Aw - mar-signing-l10n-nl-macosx64-shippable/opt: GOStUVx6RKql2lKweeS0sQ - mar-signing-l10n-nl-win32-shippable/opt: Z2P4qm2vRjGIfGOUq1H0lg - mar-signing-l10n-nl-win64-aarch64-shippable/opt: Dx0SYU58QmKyP-13wun26A - mar-signing-l10n-nl-win64-shippable/opt: DBhQhTltQKyMZ2TI2IfPPQ - mar-signing-l10n-nn-NO-linux-shippable/opt: Rvd0jcksS6i_d0oHlL93Mw - mar-signing-l10n-nn-NO-linux64-aarch64-shippable/opt: HoPhW3jgQ5WO3ydmeFBRQw - mar-signing-l10n-nn-NO-linux64-shippable/opt: XntZawdsQxufRRXAgWjGFg - mar-signing-l10n-nn-NO-macosx64-shippable/opt: H4XTf2T2SV-WL7w_n5LQCg - mar-signing-l10n-nn-NO-win32-shippable/opt: FE0I8saFRXWPOHtl_WwQFA - mar-signing-l10n-nn-NO-win64-aarch64-shippable/opt: d8ZXZtWMS6ucZwPIGFm6Yg - mar-signing-l10n-nn-NO-win64-shippable/opt: BwQJRKBXSTWCqV6tY9mwTg - mar-signing-l10n-oc-linux-shippable/opt: WjdpT4qtQQWwtc4K1I8_xg - mar-signing-l10n-oc-linux64-aarch64-shippable/opt: TdooyyUSQS6CFH8qDWmoOQ - mar-signing-l10n-oc-linux64-shippable/opt: PXY1qT9WStWHgfZ1Kp90qQ - mar-signing-l10n-oc-macosx64-shippable/opt: BTsf2p2hRt-wvb8idEQaHw - mar-signing-l10n-oc-win32-shippable/opt: cfTHUggwTIe9RDs3oa4z7w - mar-signing-l10n-oc-win64-aarch64-shippable/opt: NqpTWWajTbSWJ_gd2L4Mfg - mar-signing-l10n-oc-win64-shippable/opt: cYoUOJEnTcCztTuiCYCEXQ - mar-signing-l10n-pa-IN-linux-shippable/opt: dURv-mmMTgGSX02kRpk4RQ - mar-signing-l10n-pa-IN-linux64-aarch64-shippable/opt: OJ25ThMvTN6PIaWby0RZXQ - mar-signing-l10n-pa-IN-linux64-shippable/opt: KlKVNm2iTLi9RzV6S0xYPg - mar-signing-l10n-pa-IN-macosx64-shippable/opt: CAS2HVNHRpmQnuiIGRVYyg - mar-signing-l10n-pa-IN-win32-shippable/opt: LRDfE9QYSk2VXPgHbTqrQQ - mar-signing-l10n-pa-IN-win64-aarch64-shippable/opt: Z0cJG4GNR32mW3_JcgAtiw - mar-signing-l10n-pa-IN-win64-shippable/opt: NEkbVfUySXGelMVrF4kgNw - mar-signing-l10n-pl-linux-shippable/opt: ThJ_Ix8PTE-Tq2Nzs-qzpg - mar-signing-l10n-pl-linux64-aarch64-shippable/opt: N0Nj7KkzRTuqTgGl-YCy6A - mar-signing-l10n-pl-linux64-shippable/opt: DXFG7H5TS3qRvvlL620Bdg - mar-signing-l10n-pl-macosx64-shippable/opt: Wz1KddHfQFWH9lIoZn3fkA - mar-signing-l10n-pl-win32-shippable/opt: JCaNhNeuQWO5ap2fyk0GRA - mar-signing-l10n-pl-win64-aarch64-shippable/opt: IWH3XiQvT96JnuUmP_e1ww - mar-signing-l10n-pl-win64-shippable/opt: Rj8stGmoTRWhmkrqiXGOdw - mar-signing-l10n-pt-BR-linux-shippable/opt: Az7SVA5GTvOvwDkixjm8KQ - mar-signing-l10n-pt-BR-linux64-aarch64-shippable/opt: abur33x1Rq-BafKKfHi4-w - mar-signing-l10n-pt-BR-linux64-shippable/opt: X2zJ_gSgSWeqr04gVCTMrg - mar-signing-l10n-pt-BR-macosx64-shippable/opt: Pqu2hCl7TH6fQzL1ez8OcQ - mar-signing-l10n-pt-BR-win32-shippable/opt: P_bVmE93QfmaQuSfNlu2_A - mar-signing-l10n-pt-BR-win64-aarch64-shippable/opt: OdADP0FeQxapFWubn9IS7w - mar-signing-l10n-pt-BR-win64-shippable/opt: VJ0T-9enTeCG9qKwznphiQ - mar-signing-l10n-pt-PT-linux-shippable/opt: Xb2ZVp5BRImCt6sjWgBk7w - mar-signing-l10n-pt-PT-linux64-aarch64-shippable/opt: B9UD4ig9TQmw9bZwGE8S3A - mar-signing-l10n-pt-PT-linux64-shippable/opt: W1QvXc90RLmx3Sb6AdZCaA - mar-signing-l10n-pt-PT-macosx64-shippable/opt: UHSAlBbpQR2-cW3fVv0nFw - mar-signing-l10n-pt-PT-win32-shippable/opt: A_hqzulsRj2FSHDGEbDVDw - mar-signing-l10n-pt-PT-win64-aarch64-shippable/opt: BiOTBMX6Qj-rc34MGkVMrA - mar-signing-l10n-pt-PT-win64-shippable/opt: dDpv45uFTpuxFtGpBDjScw - mar-signing-l10n-rm-linux-shippable/opt: Ochwc5S_TQG3SraDG9cnjw - mar-signing-l10n-rm-linux64-aarch64-shippable/opt: LlC45n_VT5OJ9G9q-sVcsQ - mar-signing-l10n-rm-linux64-shippable/opt: eUnszpO4QSOfpmLvt1Qq2Q - mar-signing-l10n-rm-macosx64-shippable/opt: CMo4a5ccSg6yCTkIS7R3bQ - mar-signing-l10n-rm-win32-shippable/opt: Z-eoofh4TyGOAelrd6VKLA - mar-signing-l10n-rm-win64-aarch64-shippable/opt: UUIZ9_iCQe2lTUGsrLArqA - mar-signing-l10n-rm-win64-shippable/opt: FIrt0lT0TuyUyg9dPkTSHw - mar-signing-l10n-ro-linux-shippable/opt: KiS5s5DnTNuBje-LHavrfQ - mar-signing-l10n-ro-linux64-aarch64-shippable/opt: bUlPVB7HQyGFl4hEJTdUzw - mar-signing-l10n-ro-linux64-shippable/opt: cFVP0zhhTNeZXu3-ChgveQ - mar-signing-l10n-ro-macosx64-shippable/opt: Ql8uZAZrRriqYvZZ_Tad4g - mar-signing-l10n-ro-win32-shippable/opt: diSPJPkISzKfAo0ByfYINA - mar-signing-l10n-ro-win64-aarch64-shippable/opt: MFl6S99dQsaTYLQjNk4YPw - mar-signing-l10n-ro-win64-shippable/opt: WdS9kIoYQ0ugGR5pxSJpww - mar-signing-l10n-ru-linux-shippable/opt: TKT0LAwzR_6_V9eteSVZsA - mar-signing-l10n-ru-linux64-aarch64-shippable/opt: XJJhT-rFTKuQ4M55NKJRIA - mar-signing-l10n-ru-linux64-shippable/opt: NLHrWOCiQXqS6qFH53U4kA - mar-signing-l10n-ru-macosx64-shippable/opt: Kjx6WNpFTV6e98z1ttAUxw - mar-signing-l10n-ru-win32-shippable/opt: b7gom-NtSPqTTBHjW1SGrQ - mar-signing-l10n-ru-win64-aarch64-shippable/opt: Y_2CZllmSN2Pv4KZTyOUbg - mar-signing-l10n-ru-win64-shippable/opt: DiP9S-bSRZCaJX8IzQRNNQ - mar-signing-l10n-sat-linux-shippable/opt: TUBGneYbQwG3LGRFXuvfbw - mar-signing-l10n-sat-linux64-aarch64-shippable/opt: Q3E6odOdTiGVUnSAtdjs4Q - mar-signing-l10n-sat-linux64-shippable/opt: Vnta9X3iSXySSbPBninMxg - mar-signing-l10n-sat-macosx64-shippable/opt: W4cANCsWQq-UylzgBdeoFg - mar-signing-l10n-sat-win32-shippable/opt: LgMosTsRTS2Gckm1ucYqrg - mar-signing-l10n-sat-win64-aarch64-shippable/opt: QjtIvINDRn20cuy8Lx3X2A - mar-signing-l10n-sat-win64-shippable/opt: cnIbzoaPSa-_9iBNGuUX_A - mar-signing-l10n-sc-linux-shippable/opt: DAxfLFXTQwW_oNbONLk4LQ - mar-signing-l10n-sc-linux64-aarch64-shippable/opt: e-Z7zONzRe6sPxafgEXQYA - mar-signing-l10n-sc-linux64-shippable/opt: IbPmz8qCQ9ezRZOx9EzyyA - mar-signing-l10n-sc-macosx64-shippable/opt: RG4XkUNsQvWG3PNdT5KWXg - mar-signing-l10n-sc-win32-shippable/opt: FOknFqn7QlKdDdhJgPxzLA - mar-signing-l10n-sc-win64-aarch64-shippable/opt: XDHrR5WnROanoe8TwZy2Dg - mar-signing-l10n-sc-win64-shippable/opt: KdtDLYIXSaSPFrF543eZzA - mar-signing-l10n-sco-linux-shippable/opt: Ngp-9W49RdS-S-Gz15VNcQ - mar-signing-l10n-sco-linux64-aarch64-shippable/opt: OPjb67xbSxqTOg4OSnfX0g - mar-signing-l10n-sco-linux64-shippable/opt: MMe9H3XcRCyV4dpC5Rjwng - mar-signing-l10n-sco-macosx64-shippable/opt: XhhxtpPbQhagHbsArtlqCQ - mar-signing-l10n-sco-win32-shippable/opt: au1hh7aBQrmvpKiqVMWH4Q - mar-signing-l10n-sco-win64-aarch64-shippable/opt: ffhpVWMYTxiNhpgsaHhDvQ - mar-signing-l10n-sco-win64-shippable/opt: XpGOAsDXQPmKbJwjVeyd5g - mar-signing-l10n-si-linux-shippable/opt: ZXuqeuG1Timk1ndL9CdHEA - mar-signing-l10n-si-linux64-aarch64-shippable/opt: Ldm8_qh7Tmar_jkpBEbwLQ - mar-signing-l10n-si-linux64-shippable/opt: A5GNOODWTg-V1xFqe_83Og - mar-signing-l10n-si-macosx64-shippable/opt: Ht7KDysrQjyGyEeBxAhajg - mar-signing-l10n-si-win32-shippable/opt: MiJ0tuTFToq7k0ONhN0S5A - mar-signing-l10n-si-win64-aarch64-shippable/opt: UjYGxeFRSguQV41IJv-lmg - mar-signing-l10n-si-win64-shippable/opt: b93iJ0dwSK6ErCD3jlR8gQ - mar-signing-l10n-sk-linux-shippable/opt: azsqRlV-TB2T2uvptz5Knw - mar-signing-l10n-sk-linux64-aarch64-shippable/opt: UDYGLagsTbWjqk1bq9EqoQ - mar-signing-l10n-sk-linux64-shippable/opt: HX9YOFjLQ9ORbqNSDiMmdQ - mar-signing-l10n-sk-macosx64-shippable/opt: cWTqH9w2SxiugPa5o-rfPA - mar-signing-l10n-sk-win32-shippable/opt: LODRM8TpTnyC64VKKwlF9A - mar-signing-l10n-sk-win64-aarch64-shippable/opt: OqLBK3bbS7WICIQ2boU77Q - mar-signing-l10n-sk-win64-shippable/opt: B_g3Z8HSRrqPMVd-36Awfg - mar-signing-l10n-skr-linux-shippable/opt: J0X4gAxoQBKL3qvWnaPaQA - mar-signing-l10n-skr-linux64-aarch64-shippable/opt: bYMEn51WSxu1IeDHESDxsA - mar-signing-l10n-skr-linux64-shippable/opt: KC1b9Q4CT_y8VWyeRRv3qA - mar-signing-l10n-skr-macosx64-shippable/opt: Gq1OqENkRbe8D9gyREBBJQ - mar-signing-l10n-skr-win32-shippable/opt: SDcDsb2DR1mbtA-jJ2r79A - mar-signing-l10n-skr-win64-aarch64-shippable/opt: SmPIe1ffSMGCZGqSjXVwiw - mar-signing-l10n-skr-win64-shippable/opt: IcL76P2sRfWyiuyf6FHJ0g - mar-signing-l10n-sl-linux-shippable/opt: GtkjY9ZFQlO6tTYwYjXQcg - mar-signing-l10n-sl-linux64-aarch64-shippable/opt: fAdeSZjFR_Gaqbak_nyJwA - mar-signing-l10n-sl-linux64-shippable/opt: ECpsfptfTVCaPpWns8BDBQ - mar-signing-l10n-sl-macosx64-shippable/opt: FfjhB5iJQfSq5p_wcWG2aQ - mar-signing-l10n-sl-win32-shippable/opt: ejTVO40hRmmmzgZQohT-VA - mar-signing-l10n-sl-win64-aarch64-shippable/opt: Qx6bvf-lRUyRAB3PxZExIQ - mar-signing-l10n-sl-win64-shippable/opt: CmrV75pVRwO4dbVQ5B_MeA - mar-signing-l10n-son-linux-shippable/opt: aB2G59QbTLatI8o08WbomQ - mar-signing-l10n-son-linux64-aarch64-shippable/opt: Bvt_hyJkReuVhU8DlcYP8g - mar-signing-l10n-son-linux64-shippable/opt: UKcf4pYxSG-04tEdVy2hSQ - mar-signing-l10n-son-macosx64-shippable/opt: S5k__Vy4RjyLbff4bXTuig - mar-signing-l10n-son-win32-shippable/opt: S5Nlru1NSfeMmcf2q5hQmg - mar-signing-l10n-son-win64-aarch64-shippable/opt: MsEvmv-qQ5GDf0sanDyQcw - mar-signing-l10n-son-win64-shippable/opt: LtW6g1PvRr6L1X1Cb8Iqsw - mar-signing-l10n-sq-linux-shippable/opt: V218gzDGSP2qK37prSXHxQ - mar-signing-l10n-sq-linux64-aarch64-shippable/opt: QX2u00yHT1meZWaOzv4iEQ - mar-signing-l10n-sq-linux64-shippable/opt: Ytb_U9aOTYKAEWUHko7b_g - mar-signing-l10n-sq-macosx64-shippable/opt: ffsTU-tHRQuW7WuToFMhXQ - mar-signing-l10n-sq-win32-shippable/opt: FGzvKNQWRKSctZi3ZJehVg - mar-signing-l10n-sq-win64-aarch64-shippable/opt: Spxjeo0PRjuiSFlQ4ZfYAw - mar-signing-l10n-sq-win64-shippable/opt: EOpIWR91SMOuGMylzA-RVg - mar-signing-l10n-sr-linux-shippable/opt: PLHnd3i3QOGnGZemOxgNnQ - mar-signing-l10n-sr-linux64-aarch64-shippable/opt: AcZvusS0Q9WMTF16c1SIag - mar-signing-l10n-sr-linux64-shippable/opt: X8HwbAWXQ5yH7Rk2hRFscQ - mar-signing-l10n-sr-macosx64-shippable/opt: Y_4kUU7YQKCi96LpGoX6ZA - mar-signing-l10n-sr-win32-shippable/opt: EL--jA_TSt-Ni-OVrtVcRg - mar-signing-l10n-sr-win64-aarch64-shippable/opt: F5y_dQlDSD-VXnDLCoFlgw - mar-signing-l10n-sr-win64-shippable/opt: fhC8Cd0RTrCB2XzPFHms5g - mar-signing-l10n-sv-SE-linux-shippable/opt: AuGwqlnUS5u7-BGakUKKvA - mar-signing-l10n-sv-SE-linux64-aarch64-shippable/opt: e0ZgpxJETE6NObkgLlXDfw - mar-signing-l10n-sv-SE-linux64-shippable/opt: NcII2nG3TDiivez5d7dQ7w - mar-signing-l10n-sv-SE-macosx64-shippable/opt: JkKOdYGuRj62aBLWpBLd4w - mar-signing-l10n-sv-SE-win32-shippable/opt: ZrAyWtBzRJ23MO9qzDM7PA - mar-signing-l10n-sv-SE-win64-aarch64-shippable/opt: WuRCgZFGTXCQki96_aCy4Q - mar-signing-l10n-sv-SE-win64-shippable/opt: dHhXx-jCQUWWgEXLsbjCRQ - mar-signing-l10n-szl-linux-shippable/opt: FiP-oJxnRP6aznWoser0vA - mar-signing-l10n-szl-linux64-aarch64-shippable/opt: c1YznTeiTUCTUnfbdXF8TQ - mar-signing-l10n-szl-linux64-shippable/opt: EFrexRBiSkiLJE961hBsvQ - mar-signing-l10n-szl-macosx64-shippable/opt: ejbVfR3ERi68D3QqbtLeDA - mar-signing-l10n-szl-win32-shippable/opt: dQxUGub8QCSavHtN3Ncx1w - mar-signing-l10n-szl-win64-aarch64-shippable/opt: Qa3EuZ1JTZyeULaijIebDQ - mar-signing-l10n-szl-win64-shippable/opt: f_osFngpSieQ7PpPkVhBuQ - mar-signing-l10n-ta-linux-shippable/opt: MAGr6N0HTxi5MuPmP68o1A - mar-signing-l10n-ta-linux64-aarch64-shippable/opt: B_uOsA3vQmKhoPNx8pP7Fw - mar-signing-l10n-ta-linux64-shippable/opt: eRA5kPbKQeCnlQwl0Q19fA - mar-signing-l10n-ta-macosx64-shippable/opt: IU9JWWVOSAm-8k2imLhAYw - mar-signing-l10n-ta-win32-shippable/opt: Y4IeOgPJQPm7vyDCH-UXLA - mar-signing-l10n-ta-win64-aarch64-shippable/opt: bEI1t73IS4qbdlxnr8U-vw - mar-signing-l10n-ta-win64-shippable/opt: VqnhoxjMT_OOG9WAICQyJw - mar-signing-l10n-te-linux-shippable/opt: C7-4OeR5Q5e0hZ2IMEykbA - mar-signing-l10n-te-linux64-aarch64-shippable/opt: SKv_1oDHTsGVMsD1ABpzvQ - mar-signing-l10n-te-linux64-shippable/opt: G7r1fL-KQdaIZAR07czWFA - mar-signing-l10n-te-macosx64-shippable/opt: J1wcz4iYRd-jki2OC1W0UQ - mar-signing-l10n-te-win32-shippable/opt: FJ5X4_UNS0qvsX3CAALdGQ - mar-signing-l10n-te-win64-aarch64-shippable/opt: b78P32YbQKeUDCcltbE78Q - mar-signing-l10n-te-win64-shippable/opt: eaGu0jOYRM2jQK1U7yIi7w - mar-signing-l10n-tg-linux-shippable/opt: Gci92K0wT1-zTkl0ZjcH6Q - mar-signing-l10n-tg-linux64-aarch64-shippable/opt: FkRoftH7R4y9LVqLjW7c4g - mar-signing-l10n-tg-linux64-shippable/opt: VbJ-rjw4RrOQtaIydBQCyQ - mar-signing-l10n-tg-macosx64-shippable/opt: c4PhwXRMR6ytZ8XgtRSpew - mar-signing-l10n-tg-win32-shippable/opt: KHkJNbcnSD-ZQjUaWAAHKw - mar-signing-l10n-tg-win64-aarch64-shippable/opt: SHuM_AaWT8uR7cNybgM3Yg - mar-signing-l10n-tg-win64-shippable/opt: ZjbpvPuMRN6mtgVBssRRhg - mar-signing-l10n-th-linux-shippable/opt: eZege5vMSPGSYGUnxaMtdw - mar-signing-l10n-th-linux64-aarch64-shippable/opt: VbbUZq0YTq6ZMw5EBpT8HA - mar-signing-l10n-th-linux64-shippable/opt: Yhg5AoBHR7yGlHpIeiIIvw - mar-signing-l10n-th-macosx64-shippable/opt: Xh_s3xi1TJqpGMLPuITi9g - mar-signing-l10n-th-win32-shippable/opt: VqCiybqPRxCT9qUTgdoTKQ - mar-signing-l10n-th-win64-aarch64-shippable/opt: fKAYfoeLRiKxM7_L1FE-YA - mar-signing-l10n-th-win64-shippable/opt: RN5MO3YBSVG4VccMOf6yWw - mar-signing-l10n-tl-linux-shippable/opt: KQXd8LOfSICQi_8ifQqHsQ - mar-signing-l10n-tl-linux64-aarch64-shippable/opt: JAQVnRNxSiqy3VQCRZc_pA - mar-signing-l10n-tl-linux64-shippable/opt: HSp3ceknTN6sqHXRjaWhjA - mar-signing-l10n-tl-macosx64-shippable/opt: RZCMxZebTA2jf2986kbAoA - mar-signing-l10n-tl-win32-shippable/opt: XyhJhro6QvyYLZoqYK9JCw - mar-signing-l10n-tl-win64-aarch64-shippable/opt: QTZTvvqXSGSmQWJW8_Qiuw - mar-signing-l10n-tl-win64-shippable/opt: DbaG0oJ2TrWzzh6cC9A4NQ - mar-signing-l10n-tr-linux-shippable/opt: JmfRr_7UR6aG1aESXK4JcA - mar-signing-l10n-tr-linux64-aarch64-shippable/opt: Mtar10eqQDqWoMGBK3bnzA - mar-signing-l10n-tr-linux64-shippable/opt: ewNcIup1RyOdPe61xFSMmw - mar-signing-l10n-tr-macosx64-shippable/opt: TQkmj7IwQaO2JW1Fcb7qjQ - mar-signing-l10n-tr-win32-shippable/opt: V7IABcMqT8i3Kqxhtb4NrQ - mar-signing-l10n-tr-win64-aarch64-shippable/opt: fXbuBxNrSjK1-B-OWbBGWg - mar-signing-l10n-tr-win64-shippable/opt: OIfn101aT622s5BoAjRetg - mar-signing-l10n-trs-linux-shippable/opt: L-jl8zkxT8GS8s9pC8tSNA - mar-signing-l10n-trs-linux64-aarch64-shippable/opt: B372KYzlS2mF1s8rrYDD1A - mar-signing-l10n-trs-linux64-shippable/opt: dY6FJpDnTXK-E966jX-grw - mar-signing-l10n-trs-macosx64-shippable/opt: H2EG2yzWQlGSxgNavM-2lQ - mar-signing-l10n-trs-win32-shippable/opt: IPZ7iG9-RIi75hSrEZXECg - mar-signing-l10n-trs-win64-aarch64-shippable/opt: VWcaJcbIT5K-xMj-CJJs8A - mar-signing-l10n-trs-win64-shippable/opt: DLjlM7HiRAq2XzPGUxNnwg - mar-signing-l10n-uk-linux-shippable/opt: M8ovdbTdRJmIIdoPt82lAA - mar-signing-l10n-uk-linux64-aarch64-shippable/opt: MxwoCs2ARwqxiRx28B_T0g - mar-signing-l10n-uk-linux64-shippable/opt: eZn8QMiLSAK-ulpnRyl1Tg - mar-signing-l10n-uk-macosx64-shippable/opt: Z0riGOiPSTCn3Rp_Hj57pA - mar-signing-l10n-uk-win32-shippable/opt: G9i0Y3HtRmueqQLL9D-sNQ - mar-signing-l10n-uk-win64-aarch64-shippable/opt: VwkgaGQFRLWbJtBDEaaxCQ - mar-signing-l10n-uk-win64-shippable/opt: F_Vi1cEkTIS-O7MYvuN1SA - mar-signing-l10n-ur-linux-shippable/opt: HiuSj7wlQMCVmsbDdW4klw - mar-signing-l10n-ur-linux64-aarch64-shippable/opt: ZuM9yKPsTCKYYHUI6YOLkg - mar-signing-l10n-ur-linux64-shippable/opt: D-t8zHu6SE-ugtvJRzWVKg - mar-signing-l10n-ur-macosx64-shippable/opt: fzyhZ3fdR66ZIyDLuM-Ohg - mar-signing-l10n-ur-win32-shippable/opt: RQKuXDxjQ7mLRI6klmoXIg - mar-signing-l10n-ur-win64-aarch64-shippable/opt: f9M9ysIeQj2KmNw2dgPblw - mar-signing-l10n-ur-win64-shippable/opt: aanvg_uaQLmjIzqrTSeLSg - mar-signing-l10n-uz-linux-shippable/opt: IN94SzeGTPisIJdmSG4Ejg - mar-signing-l10n-uz-linux64-aarch64-shippable/opt: InrfbaIMThmr2Lg2zPFmJw - mar-signing-l10n-uz-linux64-shippable/opt: IwbvxFHMSk-vmZtDdlFmYg - mar-signing-l10n-uz-macosx64-shippable/opt: f9XZ3vsZRgalsi_7aBHNug - mar-signing-l10n-uz-win32-shippable/opt: bdolyl6xQnaQBHv-ug71tw - mar-signing-l10n-uz-win64-aarch64-shippable/opt: egXqKc9IS1qB8o8Ws2fqMQ - mar-signing-l10n-uz-win64-shippable/opt: P2zdznwrRYiWpVGgt2znnA - mar-signing-l10n-vi-linux-shippable/opt: Hb1qiDfaTtmqn_bVTJV7UQ - mar-signing-l10n-vi-linux64-aarch64-shippable/opt: GhwNVGilQ4eRfrh_lP_Wjw - mar-signing-l10n-vi-linux64-shippable/opt: exb4W2N9QZumSBaIVBgacg - mar-signing-l10n-vi-macosx64-shippable/opt: WIKj6F1KSfepkh40LSXuww - mar-signing-l10n-vi-win32-shippable/opt: CITrdP44S_ebPBc6ER_B2g - mar-signing-l10n-vi-win64-aarch64-shippable/opt: doAAbh_wSh6BafPuTPzssQ - mar-signing-l10n-vi-win64-shippable/opt: SduAbO22Sk2VqjDAR6_cmw - mar-signing-l10n-xh-linux-shippable/opt: FjgMuW7ASWa-ozkmo-WVIA - mar-signing-l10n-xh-linux64-aarch64-shippable/opt: KQMEdHfcRf-Hc3lbruWr4Q - mar-signing-l10n-xh-linux64-shippable/opt: M2dvHjPRR4Cuav6baQVA9g - mar-signing-l10n-xh-macosx64-shippable/opt: QJDSc9wRRla2813VWNEM5Q - mar-signing-l10n-xh-win32-shippable/opt: ApQP9tzHT-qB6gWInjoKjQ - mar-signing-l10n-xh-win64-aarch64-shippable/opt: Rn1AGSRjTHaqHPKqnzq5FA - mar-signing-l10n-xh-win64-shippable/opt: DSVKcut-SXKnh0yLOLLAtQ - mar-signing-l10n-zh-CN-linux-shippable/opt: SGYwoYGnSZmBNqqVp85WGw - mar-signing-l10n-zh-CN-linux64-aarch64-shippable/opt: PmT298D0Q02KqDblUEejnQ - mar-signing-l10n-zh-CN-linux64-shippable/opt: ImVxUAHXQoCyvnYFXdg7eQ - mar-signing-l10n-zh-CN-macosx64-shippable/opt: GEJyDC2MS5mlIWfWODSQVA - mar-signing-l10n-zh-CN-win32-shippable/opt: Fc3Bh8WHS3emjU2IEFcDwQ - mar-signing-l10n-zh-CN-win64-aarch64-shippable/opt: PfS6_QY9SFWqXjhrlDFbNA - mar-signing-l10n-zh-CN-win64-shippable/opt: NDYjqzFuThWPITk7LJF60A - mar-signing-l10n-zh-TW-linux-shippable/opt: Ff4WSP4OQkyS8Hzw06pN2g - mar-signing-l10n-zh-TW-linux64-aarch64-shippable/opt: ey1fRPLJR-GydZXTaD-ZPg - mar-signing-l10n-zh-TW-linux64-shippable/opt: fLaFquHURPGODCBqycd0_g - mar-signing-l10n-zh-TW-macosx64-shippable/opt: QE47mJNKQE6yrUo1TJdXDQ - mar-signing-l10n-zh-TW-win32-shippable/opt: MffJg760QP-ixXaBHiCSYA - mar-signing-l10n-zh-TW-win64-aarch64-shippable/opt: Q9UNFAKxRZWZ7bwNXNrJtg - mar-signing-l10n-zh-TW-win64-shippable/opt: Bc-6JKbAQECX6wt8fIBrtw - mar-signing-linux-shippable/opt: VPWATd8ISG6zU-T8nW8Zgw - mar-signing-linux64-aarch64-shippable/opt: RcSke5Z0SLmbbAWuSd2aeA - mar-signing-linux64-shippable/opt: Ekawq8XnT7yB4_SU1akp2g - mar-signing-macosx64-shippable/opt: RmvEyzq7RlqFUoDenmtR1A - mar-signing-win32-shippable/opt: W-0L09N4Tg2fEN6etQIC3Q - mar-signing-win64-aarch64-shippable/opt: X_HMmbUbTdK93Sq-p4-3Hw - mar-signing-win64-shippable/opt: SnFKysFxQgK5cieJMYS4CQ - packages-deb12-mercurial: ATSDrlHTRXmRCuxGDzkNTA - packages-deb12-python-zstandard: PGm7C6p0T8-SbxTTtBblig - packages-deb12-valgrind: KbXFbm03Q5eTFzsO9m-dSg - packages-deb8-32-gcc-8: CrHg8i1-SGqdTj-NpDVVyg - packages-deb8-gcc-10: fjMqdls0QBO9M1y7tlnq4A - packages-deb8-gcc-8: bZ8WOgrnS2m4wG77ZT6iUw - packages-deb8-gtk3: AW171dBuSkytt9SfH1-pOQ - packages-ub18-32-libc6: MhEDvzH5RUahbSQ90OKqLg - packages-ub18-libc6: OlR6_SgxTWOCvFHkfBYzkg - packages-ub18-mercurial: BJbWXgFSSiCV0sPucuOd8Q - packages-ub18-pyatspi: KMOvc2JFRFyzUP58lWnh6Q - packages-ub18-pygobject: Js8eM8ZuQBSbyFP_CAPS2g - packages-ub18-python-dbus: KU85JuXNSKG8NIGx2QtrAw - packages-ub18-python-psutil: fDZNxr7UTpmli_mzEP_9Ig - packages-ub18-python-zstandard: eBnMky38R5Gxd3wihGeTZw - packages-ub20-mercurial: GqxIBCKVRlKOo6X9e-8GGg - packages-ub20-python-zstandard: URQ7Uu1TR4WHQp1Z13CHPw - packages-ub22-arm64-mercurial: FqnQoOYxQwS1QMGzuNDKuQ - packages-ub22-arm64-python-zstandard: LzBbpsfpQPGgpZ899IzbUw - packages-ub22-mercurial: XzRVE4AsTkGDFg7slSSmQA - packages-ub22-python-zstandard: cyMtHWRaTOSpCLjeDM2IpQ - packages-ub24-arm64-mercurial: Xn5kY-XmSIKKG2iWBgBs2Q - packages-ub24-arm64-python-zstandard: AIFs8vm6RhKXRSVihTKh_w - packages-ub24-mercurial: dnQVxdTfTze_oQqpsrspCA - packages-ub24-python-zstandard: XULo3NLyToGCJwrM86UJ2g - partials-ach-linux-shippable/opt: WfvXh3OUR1m3z26BRKuRgA - partials-ach-linux64-aarch64-shippable/opt: epE09hb4RR-DCzWHezD5Wg - partials-ach-linux64-shippable/opt: LXWdb_dRRxe1UlmuQH9A9w - partials-ach-macosx64-shippable/opt: AJWEEgLsQ8uv3sB1bpgCaQ - partials-ach-win32-shippable/opt: QHOj_bAeTFePQZnzb6zEbA - partials-ach-win64-aarch64-shippable/opt: aP8hIikNStWABewwZ5HHwg - partials-ach-win64-shippable/opt: AhU6YcsqSuqHt2UC4Dniww - partials-af-linux-shippable/opt: CPooCdGSQtiespRyuBGgiw - partials-af-linux64-aarch64-shippable/opt: ZriKeTNPSAa3mP7v8sfw9A - partials-af-linux64-shippable/opt: NCwEP5LjTgGugcgE5Qrb7Q - partials-af-macosx64-shippable/opt: eXtfDrASQXyARPzCvbg_2Q - partials-af-win32-shippable/opt: FSXJknarQHaJyzZ0WTmHfQ - partials-af-win64-aarch64-shippable/opt: a89ipeNvQmKcG6BcW2OjdQ - partials-af-win64-shippable/opt: K5N68Wk-TwOU45YUBygWEg - partials-an-linux-shippable/opt: U7dsj9XkSLGBaOihawZg6A - partials-an-linux64-aarch64-shippable/opt: JeTEOdR0S9eXI9UkcOWGlw - partials-an-linux64-shippable/opt: RkEB5cH8Q1i_KlMPJ1eRwQ - partials-an-macosx64-shippable/opt: eYgmXSEHTE6Qoj_QC4tIaQ - partials-an-win32-shippable/opt: anJp0-ptSQmAj41QumlnJg - partials-an-win64-aarch64-shippable/opt: TrH2Xz3ETG-NuO7VLUMzvg - partials-an-win64-shippable/opt: KTH-kJFzRc-MNVGoxmhG8A - partials-ar-linux-shippable/opt: Qeiomcl4TFSaYzf2QpxAqQ - partials-ar-linux64-aarch64-shippable/opt: JY4CHPCDR8SVxxIN3jmnUw - partials-ar-linux64-shippable/opt: QsgEpOv_StKLUmjJHsYSAQ - partials-ar-macosx64-shippable/opt: a91RYn7MTUmlcgIr8hxgUA - partials-ar-win32-shippable/opt: XMSUJRSWSNWS-uDgFRPjug - partials-ar-win64-aarch64-shippable/opt: KXNgBzVIRk-smfWDri6kdg - partials-ar-win64-shippable/opt: TpnMmwkHTe6r2ZGtG8o3bA - partials-ast-linux-shippable/opt: dzHjkZHoRSq7KXyzhIRm8Q - partials-ast-linux64-aarch64-shippable/opt: Ny1ClmYQRkSrcG-yLYs0Hw - partials-ast-linux64-shippable/opt: c-sazMZoT_Ssl6f8aBPrPg - partials-ast-macosx64-shippable/opt: cSxVqlllRxOcylwqMP5xVQ - partials-ast-win32-shippable/opt: W8YwPhR0ReSJMOOj2A-Qkw - partials-ast-win64-aarch64-shippable/opt: HcMRSCM4QXy9ImkRRyQsiw - partials-ast-win64-shippable/opt: S0VSiQ3ySbCn7oc15dtU1g - partials-az-linux-shippable/opt: GUS2drkERSey1Uqaowu6GQ - partials-az-linux64-aarch64-shippable/opt: ARxgoACYS9eL1RRXNLntZA - partials-az-linux64-shippable/opt: PTdy9JzTRnm3963Iv83BbQ - partials-az-macosx64-shippable/opt: S-YF9P7JRtWxkjRzOFz_kg - partials-az-win32-shippable/opt: TPPT9IVcS8OwFGtMvblbIw - partials-az-win64-aarch64-shippable/opt: P2vK8eT-Ss63sAjBq2EOSQ - partials-az-win64-shippable/opt: ZDug9kV2SCGaXe4rmUTCxw - partials-be-linux-shippable/opt: T0UsEFM6RIeQRYe5vSNCIg - partials-be-linux64-aarch64-shippable/opt: UrL1dd5xTnWdCJ2hKSCoqQ - partials-be-linux64-shippable/opt: WdMDmPQRQauqMfrqZIgBlg - partials-be-macosx64-shippable/opt: fnofTVQfT3CqTaNX5DkKIQ - partials-be-win32-shippable/opt: ZTjPF-4fQ2atmamtDWImsw - partials-be-win64-aarch64-shippable/opt: C1rsLZ_FTziYt6GpqAdHdQ - partials-be-win64-shippable/opt: G1lAr0UTRpS5u9L1B6xwtQ - partials-bg-linux-shippable/opt: KUhc75cPS6CIO7CEImwYcA - partials-bg-linux64-aarch64-shippable/opt: ROnjr98pQeCBSPSL_toNTQ - partials-bg-linux64-shippable/opt: eX7P7LM0RXq_dnQmyndRSA - partials-bg-macosx64-shippable/opt: DiRZLURbRd2uA-oDxLmvBA - partials-bg-win32-shippable/opt: G7c-AfNFT2eENxB67GrvAg - partials-bg-win64-aarch64-shippable/opt: BwYijWrbSsODNUmr5nqsDQ - partials-bg-win64-shippable/opt: BYQUJ_laQbyDslKQrQ6maw - partials-bn-linux-shippable/opt: c0UhmHRrQau3Pjne1QzYyA - partials-bn-linux64-aarch64-shippable/opt: I_ecadhEQrWQZpfFTohBEw - partials-bn-linux64-shippable/opt: E0P5wz75SoWrmvBKALWuDQ - partials-bn-macosx64-shippable/opt: E0k4pgcBQAKaOxuFraRPig - partials-bn-win32-shippable/opt: BY8e4X-WQgO4ZDeYQ3ycrA - partials-bn-win64-aarch64-shippable/opt: f0_Ff7M8Q_GmvritCyYsMA - partials-bn-win64-shippable/opt: T89f0eyoTvSVBxCFJuciSw - partials-br-linux-shippable/opt: YvBoKE_URoGn6kf7V0yZTg - partials-br-linux64-aarch64-shippable/opt: IKfTUsmpQnqwNWK9ifqS_Q - partials-br-linux64-shippable/opt: dOYr-SpNSZG0Reiu0WuGVQ - partials-br-macosx64-shippable/opt: eAZhx3JeS_2BSLdQeHf8KQ - partials-br-win32-shippable/opt: MMWkv2t0Rie633GfT7X1HQ - partials-br-win64-aarch64-shippable/opt: Nup9nNGDSLCk7FiGAcsvWg - partials-br-win64-shippable/opt: N24rTbTZSIeAdHuxXLp8Ow - partials-bs-linux-shippable/opt: Sp44_0NUS6mh9ZzFjfOMxA - partials-bs-linux64-aarch64-shippable/opt: f3cOcMhMSeCxixTqxIHpqw - partials-bs-linux64-shippable/opt: Elm7qzVORVeu8foWZRM5DQ - partials-bs-macosx64-shippable/opt: VvmhPPtHR4SE4-GD-bgkmQ - partials-bs-win32-shippable/opt: JEDlWibSTNqgztLMusGGnQ - partials-bs-win64-aarch64-shippable/opt: RgLQLr8HRgyvWbRj9qGnAg - partials-bs-win64-shippable/opt: SvYngMbKRTSgyb0i1NiGyQ - partials-ca-linux-shippable/opt: GmMEss4fRYi7CwQnMpaMmg - partials-ca-linux64-aarch64-shippable/opt: A_5ZR4S1T1-qtq1uhpESRA - partials-ca-linux64-shippable/opt: d1g4IElMTvS0ZleVN6Aiew - partials-ca-macosx64-shippable/opt: UQsF_MHqRauVWHbyYIfLTQ - partials-ca-valencia-linux-shippable/opt: BC3rlAnNQKCw4JGWnYmRcA - partials-ca-valencia-linux64-aarch64-shippable/opt: fsZ0XBh3Tk-pm1Q1ug1KPA - partials-ca-valencia-linux64-shippable/opt: MX5RYTUDQsuaKpSMlLt4WA - partials-ca-valencia-macosx64-shippable/opt: ESQFZVecTB2HEkVHF7mKvQ - partials-ca-valencia-win32-shippable/opt: YO4qLc7eTki16eA_wZGMfQ - partials-ca-valencia-win64-aarch64-shippable/opt: XzIokSbvR765E0lMkQuljg - partials-ca-valencia-win64-shippable/opt: NNNW8i3sTnCVU0gf88Qz4Q - partials-ca-win32-shippable/opt: c_c0Me-hRHOxNzitvLoWDQ - partials-ca-win64-aarch64-shippable/opt: fyHT7TsSRxegqmcCK4W6kA - partials-ca-win64-shippable/opt: LW1wwGzqS8eIOALgcGFuhg - partials-cak-linux-shippable/opt: IEolWDitTzq-1O07K6lwwA - partials-cak-linux64-aarch64-shippable/opt: JL1_KK4JRZOQyh6Ipy-tkQ - partials-cak-linux64-shippable/opt: PSHra6cATFC9bvLdatWUNA - partials-cak-macosx64-shippable/opt: R1sHfH4jRWWPZX2xpYQvpA - partials-cak-win32-shippable/opt: I0GFF7ImSUWHBDvWIvrAzw - partials-cak-win64-aarch64-shippable/opt: UabUi41JSESGyemQIiJy7g - partials-cak-win64-shippable/opt: NgbFfYQcSTO4r8DY3uX8ug - partials-cs-linux-shippable/opt: EqdqTm1lQE-wlSPoqtGT-A - partials-cs-linux64-aarch64-shippable/opt: c7oZOp2FTsGyIUWedGcU7g - partials-cs-linux64-shippable/opt: XrtoS4NxRtyDy0PcRUygRA - partials-cs-macosx64-shippable/opt: Hfy6o8JaTWqsEQRi9OaNng - partials-cs-win32-shippable/opt: RkzKl3khSHCZc8Mab62keQ - partials-cs-win64-aarch64-shippable/opt: dYIViG48SfGjxFJK0HZ4qw - partials-cs-win64-shippable/opt: aCSQs2CKRWG9SbZ7LgShJA - partials-cy-linux-shippable/opt: IDvF5u8LQeO12v5dl2q_aA - partials-cy-linux64-aarch64-shippable/opt: TL4FeQ4TRCC5SlIR3UJ48w - partials-cy-linux64-shippable/opt: UEPKjrLgTNKA2fa-Z_RYOg - partials-cy-macosx64-shippable/opt: POcyU_T8TI-_aDNypbMd_A - partials-cy-win32-shippable/opt: EH45PHfVSFmgzKLffzHF4A - partials-cy-win64-aarch64-shippable/opt: SfLXYOs7S9uJwxEN4HO01Q - partials-cy-win64-shippable/opt: IvX8zBBPQYOvI-MQ6zjq-w - partials-da-linux-shippable/opt: T_s2cXSKT6asJLIFLJOJDg - partials-da-linux64-aarch64-shippable/opt: Bqx6m733Q1S3Yxi3NycFYQ - partials-da-linux64-shippable/opt: WI9DDSnnQI6ILyPkPv5TaQ - partials-da-macosx64-shippable/opt: JhlT8pwgTjGDs5ZtNrHZhA - partials-da-win32-shippable/opt: Os-unKVSSG-5v6U9tiomAg - partials-da-win64-aarch64-shippable/opt: Fad0l2BQQ2SZSlVvOjMhhQ - partials-da-win64-shippable/opt: d1geZYCFTeCqWiHjoaL5lA - partials-de-linux-shippable/opt: Zm8AoTxZTWySHfEpiodZpg - partials-de-linux64-aarch64-shippable/opt: MbUveRvLSLm8EajEA7xPjw - partials-de-linux64-shippable/opt: IXvOZ0XiRbuFQFKZQyID4A - partials-de-macosx64-shippable/opt: Bbj3X274T0ilb2adaTxNag - partials-de-win32-shippable/opt: Jvr2tBZ6SgeVtW1AVYmjOQ - partials-de-win64-aarch64-shippable/opt: EP2hEPyeRbK3g7ldb_Gyew - partials-de-win64-shippable/opt: Cpv7BZHtTk-YLLL57MflFg - partials-dsb-linux-shippable/opt: PkL63OfVRDCDtFeFzGPS7A - partials-dsb-linux64-aarch64-shippable/opt: SwTdJoKqTp2sUzWMRo21ZA - partials-dsb-linux64-shippable/opt: EmVxI5HHRMmjZsEpvw2mlA - partials-dsb-macosx64-shippable/opt: ftWAek6YTlu7t13vc08H8g - partials-dsb-win32-shippable/opt: E3dvnou9RSSxdPCijd4DZg - partials-dsb-win64-aarch64-shippable/opt: IDzwt3YqQVapPnI3_EtQSQ - partials-dsb-win64-shippable/opt: NKPC9q_JT4avD6BsmqLXlQ - partials-el-linux-shippable/opt: af7eEx6TTuWY6XnfV7Fqrw - partials-el-linux64-aarch64-shippable/opt: QBuez6sJQ7WF8ZP3LXG22Q - partials-el-linux64-shippable/opt: Oc433GBmQNOPxoWLBWQh7Q - partials-el-macosx64-shippable/opt: UW5bqdb4QN20IRRyl9-Idw - partials-el-win32-shippable/opt: fCOxxa6nQpym03hDfOh48A - partials-el-win64-aarch64-shippable/opt: ClMSBsAFRP217kS85zRmgg - partials-el-win64-shippable/opt: BG_fVK2ZSh2cmcJShgvvZA - partials-en-CA-linux-shippable/opt: XnVdf3-bRf-fBIlhFZMFhw - partials-en-CA-linux64-aarch64-shippable/opt: XCyxR_tJRwmcvE-CPqdCmg - partials-en-CA-linux64-shippable/opt: ZtsMSb2kQTin6odIU2rLaA - partials-en-CA-macosx64-shippable/opt: Dr5EBeoISuir9Nljl4rLsQ - partials-en-CA-win32-shippable/opt: bymVEMq4TDi8d4h9w6hmyw - partials-en-CA-win64-aarch64-shippable/opt: VrPRjCoHTXu9HsMGqTTYUw - partials-en-CA-win64-shippable/opt: SNzy4yb6QC2oqMNHMHcyMw - partials-en-GB-linux-shippable/opt: CY5Wr4G4RzSXZcaS0Q0w8Q - partials-en-GB-linux64-aarch64-shippable/opt: cDPznoewQ4WoaaK2Zx0LVg - partials-en-GB-linux64-shippable/opt: GRI_Xuv-RHuU7wD5dvRVhg - partials-en-GB-macosx64-shippable/opt: aSmiXm_jSe6OCE52JjDHfg - partials-en-GB-win32-shippable/opt: YRxJS33nRuyzJuz4EJEm5A - partials-en-GB-win64-aarch64-shippable/opt: DXIm1aKiQCKM7GWTE-o5tQ - partials-en-GB-win64-shippable/opt: Xr9PE1gTRDmDWEh6fkXNHQ - partials-eo-linux-shippable/opt: B7U3nbz7QiqskVBc-CWiMA - partials-eo-linux64-aarch64-shippable/opt: FNUYYDpbSaOtW9lqP6hwAA - partials-eo-linux64-shippable/opt: VfmFwD3WToKOz6A8ht-u8Q - partials-eo-macosx64-shippable/opt: IziMd4imR52mqpQMCh8xYQ - partials-eo-win32-shippable/opt: NYGhyXl2Si6rbxb1ry867g - partials-eo-win64-aarch64-shippable/opt: dEqRXRrZS_-trXzQvEvbjA - partials-eo-win64-shippable/opt: RR673y2CTsCiRx4q-krXhA - partials-es-AR-linux-shippable/opt: ciwirBDyQWmCR4wdjTUK5Q - partials-es-AR-linux64-aarch64-shippable/opt: dLyOWDJQQQWyDTeZ2lq0WQ - partials-es-AR-linux64-shippable/opt: SvCmIWxLSU2ec0DsgynmWA - partials-es-AR-macosx64-shippable/opt: fJRmkGSbQtiPBbo9qwK2PA - partials-es-AR-win32-shippable/opt: QUizKDymTdygVbdIsovmpw - partials-es-AR-win64-aarch64-shippable/opt: e7w6YHUNRpSbWzGjSGyvYw - partials-es-AR-win64-shippable/opt: UAnEalbFRcWTpQzRiAhm7g - partials-es-CL-linux-shippable/opt: bNgG0oGpTGC4QPFfl6Tv-A - partials-es-CL-linux64-aarch64-shippable/opt: XLUVBhwvSRixncTBJ3YWBA - partials-es-CL-linux64-shippable/opt: H7bwmkEXSA-6WOLcmhhdPQ - partials-es-CL-macosx64-shippable/opt: KMiVJtwcQWG3--EOPs_cng - partials-es-CL-win32-shippable/opt: CmgnSxrTQmG_fBEqEw-dmw - partials-es-CL-win64-aarch64-shippable/opt: JHdMWQhvSnajzjaL4Y6tfQ - partials-es-CL-win64-shippable/opt: fYAGjc5SSByQ2DaSMD9GgQ - partials-es-ES-linux-shippable/opt: MWNT2id0QSKWiFPhXwL8BQ - partials-es-ES-linux64-aarch64-shippable/opt: d0p7bXbvSe6vSBQkR-nfVQ - partials-es-ES-linux64-shippable/opt: F6rIG1NbTTC3ZCGV0hxieQ - partials-es-ES-macosx64-shippable/opt: e5PXbBC9TnW1i1phhrP-AA - partials-es-ES-win32-shippable/opt: CLjC1mTzRMqsYUcvSVSlPA - partials-es-ES-win64-aarch64-shippable/opt: N-lPz29BS4mkatrIqEFGHQ - partials-es-ES-win64-shippable/opt: QAnkwvtAQC2x-11iyaCZ3w - partials-es-MX-linux-shippable/opt: TFKCtqGeQV6ldsFNqYqwrQ - partials-es-MX-linux64-aarch64-shippable/opt: GVkQwI1PTbSKzVozKXcPZQ - partials-es-MX-linux64-shippable/opt: JWHfmH6BTEyhVIji--mFPA - partials-es-MX-macosx64-shippable/opt: UNLwsyNBTzmzmSzSNvJijA - partials-es-MX-win32-shippable/opt: DTiJ8cOxQR6fU6fkRMLCxQ - partials-es-MX-win64-aarch64-shippable/opt: DADmSP0RS_G12RnYfTN8zQ - partials-es-MX-win64-shippable/opt: OwR_rMpkSpWBtzr7_wrlWw - partials-et-linux-shippable/opt: Dj4muvyITy6ldIdp27oVwA - partials-et-linux64-aarch64-shippable/opt: KXJ7NKvzQ9m-zDbC-8S1MA - partials-et-linux64-shippable/opt: aK1qdsp3SqmMUQ4ZXyoj9Q - partials-et-macosx64-shippable/opt: XLK0jRk6SeuEKEjikIcJ9w - partials-et-win32-shippable/opt: WIE47dy8THuWBFfUfiw2OA - partials-et-win64-aarch64-shippable/opt: O-FEUIIMQyyGIz9Ua0UIbA - partials-et-win64-shippable/opt: dWg9nADkQ6CKgYRamSmFmg - partials-eu-linux-shippable/opt: cZ0SiQxXShaIKETbK9LoEg - partials-eu-linux64-aarch64-shippable/opt: arPoyKMGTnCYd-bgM965jg - partials-eu-linux64-shippable/opt: DtlkM0rFSWqfZfwuTnjOXw - partials-eu-macosx64-shippable/opt: P-F3Lxy7Samp7YKUjnRjrQ - partials-eu-win32-shippable/opt: LTC8HQIGQam2yYFSIghyXg - partials-eu-win64-aarch64-shippable/opt: L1qXfR60TdGTghlR6ShL3w - partials-eu-win64-shippable/opt: Lg2w0_YjQyWNmhz3dlhlUQ - partials-fa-linux-shippable/opt: CWcBiXjiSea7axeBRe0iyQ - partials-fa-linux64-aarch64-shippable/opt: ZR-buUZAQzKfreytJ3Xcrw - partials-fa-linux64-shippable/opt: amTvll3ySj62O_C7PXZadw - partials-fa-macosx64-shippable/opt: X3XCJU8jQnO8orWDIKWE0w - partials-fa-win32-shippable/opt: Y84xuFjeRf6JEiNvzTm-lg - partials-fa-win64-aarch64-shippable/opt: Fr1Y4SU3QUC5ldCPzZ5-8g - partials-fa-win64-shippable/opt: GjzNXGEBQ_i21tF15nLO5A - partials-ff-linux-shippable/opt: Z0P_0a4NRNaPJDhOxzRBaw - partials-ff-linux64-aarch64-shippable/opt: djkMnr9MR_C1X3RaexAblw - partials-ff-linux64-shippable/opt: al6JodRLRFGbAIihHGspKw - partials-ff-macosx64-shippable/opt: OmjzQtRKTAKcrHun6xaC4g - partials-ff-win32-shippable/opt: afrqjNr0RHqDapOepsJ95w - partials-ff-win64-aarch64-shippable/opt: V4pL-3eWTACdqxGIJEtDbQ - partials-ff-win64-shippable/opt: KGb9Qs0YSgSO_kJv4YDCMA - partials-fi-linux-shippable/opt: Z-rtvNS-TDqtvtUdf5eW3g - partials-fi-linux64-aarch64-shippable/opt: M0gik3YHRTufnxyenv8uUg - partials-fi-linux64-shippable/opt: K5T6IzjbQaqSJ4cCXulyLA - partials-fi-macosx64-shippable/opt: ZsDy_ZOaQKKi1zyXA2dOLQ - partials-fi-win32-shippable/opt: KZ9bI3lJQG2trY0IH0bM0g - partials-fi-win64-aarch64-shippable/opt: DUC6kjQxQayc4RqxVOQlNA - partials-fi-win64-shippable/opt: YjzN23P5RFybc02EezClQA - partials-fr-linux-shippable/opt: Itu3oChsTJywCq2SIwKmZQ - partials-fr-linux64-aarch64-shippable/opt: aDZzOYsRQS2m7RR4qYp1wA - partials-fr-linux64-shippable/opt: JdJm9su4QCa3m1cxdyhqLA - partials-fr-macosx64-shippable/opt: aOksW3EmTIuGmEuK6Db0eA - partials-fr-win32-shippable/opt: FfezmDTRROiG0wgTtfhJ4A - partials-fr-win64-aarch64-shippable/opt: deWtZSbxTm-gofGMSqgukw - partials-fr-win64-shippable/opt: VGq68ib1QM-ZCNB4IvpLBw - partials-fur-linux-shippable/opt: eluDwGAiTlWUaZzM5niY5Q - partials-fur-linux64-aarch64-shippable/opt: dZyLF-PqTPG9iHHtw324rg - partials-fur-linux64-shippable/opt: Mkn9rhnRTz66rELOus002A - partials-fur-macosx64-shippable/opt: MwO3OUYLRlyzdsG7cHIRYg - partials-fur-win32-shippable/opt: R-8bgv3LRZqt-a3mASGzaw - partials-fur-win64-aarch64-shippable/opt: SgbvgOa7Tny7lPVLCH3aLA - partials-fur-win64-shippable/opt: TKMtDpq4Sf6ZjDChxhTjjw - partials-fy-NL-linux-shippable/opt: TMTHXsw7QzOH2h0S_7YcTA - partials-fy-NL-linux64-aarch64-shippable/opt: JP8fcfySSb-pE09PiCdxyw - partials-fy-NL-linux64-shippable/opt: JpGccDkYRCCgSk0AxzGiZw - partials-fy-NL-macosx64-shippable/opt: RlOELqbtTzalKEv-OstPmA - partials-fy-NL-win32-shippable/opt: DxK8e66WQgWbIUahtDVFFw - partials-fy-NL-win64-aarch64-shippable/opt: CfE_6x8mTp2RicVg2Lq31g - partials-fy-NL-win64-shippable/opt: dK4FaTeQTiGS3j0PXLF3aw - partials-ga-IE-linux-shippable/opt: QQfDFtXQQnSzwlx7qYNl-Q - partials-ga-IE-linux64-aarch64-shippable/opt: PXvl_jMVSx6bKLfwktJtaA - partials-ga-IE-linux64-shippable/opt: apWb5etaTge_Ltw2htY5Kg - partials-ga-IE-macosx64-shippable/opt: G6B5WAdoRCWbJGrL3vzGsQ - partials-ga-IE-win32-shippable/opt: eoUdOn3rSW6VpCW_UgiMyQ - partials-ga-IE-win64-aarch64-shippable/opt: bYXeC4IVSJKNJcCuDfZotg - partials-ga-IE-win64-shippable/opt: FMABI0PcTvWujbrbbsKTMg - partials-gd-linux-shippable/opt: RZkTri7HQSOWSowUxzpD3Q - partials-gd-linux64-aarch64-shippable/opt: ZpNCfeACSKqUdiTfkLwOQg - partials-gd-linux64-shippable/opt: FLArvl4OTaK7Q4M7T3vK9w - partials-gd-macosx64-shippable/opt: bzd_vX_VTPeIeIiGt2bk9A - partials-gd-win32-shippable/opt: XEXDY9x2QjSky-1TadzBTA - partials-gd-win64-aarch64-shippable/opt: GD2GcVOXRGKBks9H-chwCg - partials-gd-win64-shippable/opt: Dn1RHlknRc29RUZOG5YYrA - partials-gl-linux-shippable/opt: BJT43G4nT3GUbFQUfEDfQg - partials-gl-linux64-aarch64-shippable/opt: RZZelidfTh-GEB-Xo3OQLA - partials-gl-linux64-shippable/opt: DeHOvzceSuOYtUfjFiyqJQ - partials-gl-macosx64-shippable/opt: a3nHHUT0RvyL1HzftFKtYQ - partials-gl-win32-shippable/opt: B27vY_xCSxysqwu-wkKyqg - partials-gl-win64-aarch64-shippable/opt: Xfzme2IORFihP6WsJN49Mg - partials-gl-win64-shippable/opt: PBe-8LBrQ9yRGmKex_4Uvw - partials-gn-linux-shippable/opt: SjuwY7QKTSaJkhCaaSHAxw - partials-gn-linux64-aarch64-shippable/opt: PAeHNy8IRAauXRm3iWi2Gg - partials-gn-linux64-shippable/opt: Y0H-1WQaQqGSGrb6E6nx-w - partials-gn-macosx64-shippable/opt: WwW1rQS9SiOTnwpjAYXCpQ - partials-gn-win32-shippable/opt: VzwpLFDNSgWaDx7P5suTUw - partials-gn-win64-aarch64-shippable/opt: PdF2Nx_aQbq5ngrUMPsvcg - partials-gn-win64-shippable/opt: YbOHFf0QRO217etJGcO6HA - partials-gu-IN-linux-shippable/opt: LOr6IyMNTeiaR4yDTUmBTw - partials-gu-IN-linux64-aarch64-shippable/opt: feoIFR87SAOi_LKves70lw - partials-gu-IN-linux64-shippable/opt: VWC0gL21QUaRdlREcNjsxA - partials-gu-IN-macosx64-shippable/opt: Do3bGajbTSG925KNqrg32g - partials-gu-IN-win32-shippable/opt: ZemZHdPhT2yPJVk49NOZTA - partials-gu-IN-win64-aarch64-shippable/opt: RVRixcwGQ-Kk8IUXkt9XXg - partials-gu-IN-win64-shippable/opt: d2MxHNQ5R9uS-FJ98XR76w - partials-he-linux-shippable/opt: Fnz5QqotS5ilZQj9SHiY1w - partials-he-linux64-aarch64-shippable/opt: c8cApzGiRUO0L4iztoVq4A - partials-he-linux64-shippable/opt: DamAg-lBSdaT5jcIF7FYKw - partials-he-macosx64-shippable/opt: FdU5rQobT-yOj6qrQVb4lA - partials-he-win32-shippable/opt: U7gtyl1ZRne-thZugkk_1g - partials-he-win64-aarch64-shippable/opt: Zy_4WfsNTrOXmue7HbeU5w - partials-he-win64-shippable/opt: fjX_ZcbfSkOiNn-0C422Tg - partials-hi-IN-linux-shippable/opt: c004cMqvSvCbJYq_EOvZ9A - partials-hi-IN-linux64-aarch64-shippable/opt: OkWs6SJGT-W7Vnz6GjhxSg - partials-hi-IN-linux64-shippable/opt: QFcPy6KMSd-Ia-vaH9WPbw - partials-hi-IN-macosx64-shippable/opt: dG5KJfRMRrqhL-VnqyWYiQ - partials-hi-IN-win32-shippable/opt: VSIu7KKkSMOiIBASU-sR2g - partials-hi-IN-win64-aarch64-shippable/opt: T8EiNPk-QyuZONOwaJGcAg - partials-hi-IN-win64-shippable/opt: MWLUbtR7QWKo6v_5L5C-bw - partials-hr-linux-shippable/opt: TuC_uyoLT-q8arRcDOSlUA - partials-hr-linux64-aarch64-shippable/opt: O-PaW9CfS0utIpbVztyuvw - partials-hr-linux64-shippable/opt: MSb-1hpHSSqEtFqkjtClFw - partials-hr-macosx64-shippable/opt: Dc40i88ZSx22DxonjaU0mw - partials-hr-win32-shippable/opt: EWlktPaARNW7bQJQhzNXrg - partials-hr-win64-aarch64-shippable/opt: Hiz5E3esQpuLifinlECTEQ - partials-hr-win64-shippable/opt: Ee7kCVkJQwmESYlMMpApmQ - partials-hsb-linux-shippable/opt: P5z0-tiXTReGW2wpF3kT6g - partials-hsb-linux64-aarch64-shippable/opt: K0T6EQdAS6iGKxzZRY4PaA - partials-hsb-linux64-shippable/opt: HascAL1FTjCApuQMVEb7HA - partials-hsb-macosx64-shippable/opt: XMBQnuuvTcCrce3MZ6_G2A - partials-hsb-win32-shippable/opt: BiON9EV7Sq6tJ7D7GY8-tw - partials-hsb-win64-aarch64-shippable/opt: DQTYeUjSSPK3bQgYgZZ3EA - partials-hsb-win64-shippable/opt: G2qzup50Q3mOJ0lzt05zkA - partials-hu-linux-shippable/opt: DJwHghohSe202ewCRhrGaA - partials-hu-linux64-aarch64-shippable/opt: dRMpwfdyQQSiKU1ClHC7Uw - partials-hu-linux64-shippable/opt: YzJSQf8GQG-uePQALHOFCA - partials-hu-macosx64-shippable/opt: DO6RBSK7TVO8OHJ7ddW1qA - partials-hu-win32-shippable/opt: ahzlbDUPS5KGedzxfUyC4w - partials-hu-win64-aarch64-shippable/opt: biHx5JFJTbij_J-V1zmtMg - partials-hu-win64-shippable/opt: QWJuKjUPSx-L81U7EG7PiA - partials-hy-AM-linux-shippable/opt: d198EykFT0KkHdssZm2kig - partials-hy-AM-linux64-aarch64-shippable/opt: XWHjszVqSUKSx9ulz0DY0w - partials-hy-AM-linux64-shippable/opt: Mqy4ArgGQm-LBaNrysK1YQ - partials-hy-AM-macosx64-shippable/opt: HMLQLK7RQOmtrb-2ajlH-g - partials-hy-AM-win32-shippable/opt: LyVd8WOMR4ynDKEh8jbrYQ - partials-hy-AM-win64-aarch64-shippable/opt: dxNZIXMFREaSu_Xilg4BcA - partials-hy-AM-win64-shippable/opt: RUGgsqgaQuGnFiS7F7jEEQ - partials-ia-linux-shippable/opt: JYQVCil3ROKMGlwlMSG28Q - partials-ia-linux64-aarch64-shippable/opt: amuls37YSv640PqMqvU0CQ - partials-ia-linux64-shippable/opt: KF5BvaAeSdGF_ykT_ts03A - partials-ia-macosx64-shippable/opt: Dc1nCBRHTYKDVcihejxwwg - partials-ia-win32-shippable/opt: f_VSdiFeRwq-kQmbgl2BxA - partials-ia-win64-aarch64-shippable/opt: djaKINdpSjmlDSoeNq6rVQ - partials-ia-win64-shippable/opt: fLEF4pxTTTew66ouArb8_g - partials-id-linux-shippable/opt: fgkFg76dRMeSm1i_vP-wTg - partials-id-linux64-aarch64-shippable/opt: ayPjyhnzS2q47Efo8uw7qw - partials-id-linux64-shippable/opt: Otdl7aClThean36WNDHZkQ - partials-id-macosx64-shippable/opt: BujgkQvBQpagp4z8yhB_Sw - partials-id-win32-shippable/opt: R1EOoW-DS9CCIsXwoGyn6Q - partials-id-win64-aarch64-shippable/opt: ITnUKxjTQdG5ml4avVQ90A - partials-id-win64-shippable/opt: VTOVRW9MT5-s4Ggpm_Rncw - partials-is-linux-shippable/opt: MuwkQVaeSQmlLgWyPzseNQ - partials-is-linux64-aarch64-shippable/opt: FQJClhCzRN2NMY6xXPoOJw - partials-is-linux64-shippable/opt: daRhF7C5SvK96gupBk7Z3A - partials-is-macosx64-shippable/opt: K_svJvG4RQa5AJZaZt1ANQ - partials-is-win32-shippable/opt: SZSDzhunQ5yuGh-XbOBY8Q - partials-is-win64-aarch64-shippable/opt: eCH1Yqm8QRKK9n4DZD0hqA - partials-is-win64-shippable/opt: MpTwDj53RXia4lVwqLnI5Q - partials-it-linux-shippable/opt: FoyZHXL_QPSbO_FfDFiYUQ - partials-it-linux64-aarch64-shippable/opt: KqmiDjurR7yV0pOvDDB96Q - partials-it-linux64-shippable/opt: X-0aiL6nTUywU-f7246VnA - partials-it-macosx64-shippable/opt: D-n839bFRKandfSw7CjoPg - partials-it-win32-shippable/opt: ZZCDLvVZSIKED_v1eg3bsQ - partials-it-win64-aarch64-shippable/opt: CUl2mTZXQ6WT2PyPqMFIFg - partials-it-win64-shippable/opt: bS6z4faZTialtBwoIb746Q - partials-ja-JP-mac-macosx64-shippable/opt: IKHU5awWTOmG_c9lL9IV4w - partials-ja-linux-shippable/opt: KSvbRVPpQxC0WC1RjBpgeg - partials-ja-linux64-aarch64-shippable/opt: EUVoLICxT6u2YlTtvanHMw - partials-ja-linux64-shippable/opt: I0BqSXqqR1i7jv79-8QbWA - partials-ja-win32-shippable/opt: TTQKWn8iT36doMQ_61TnFQ - partials-ja-win64-aarch64-shippable/opt: ee0yXJSqSkefyrwd3K1T6g - partials-ja-win64-shippable/opt: Y6rkTOnETOyBbAJ7VloynA - partials-ka-linux-shippable/opt: MyRNqSiBQzSbZR5VgZYxwg - partials-ka-linux64-aarch64-shippable/opt: M-lW5vu0R9iyP7MBeL30aw - partials-ka-linux64-shippable/opt: SgBsBvTdTiWWYgs7COcGvA - partials-ka-macosx64-shippable/opt: bpCEukw0Q1qE-WMwAzDkOg - partials-ka-win32-shippable/opt: FQ650MNhTmqbKeQ-48aEug - partials-ka-win64-aarch64-shippable/opt: S4GfCjvzSM2YAUWtBp9lOg - partials-ka-win64-shippable/opt: HJg2ihkPQMeEKIH-UrLjwQ - partials-kab-linux-shippable/opt: KhTaI8BQRqWGoASpJEXcAQ - partials-kab-linux64-aarch64-shippable/opt: WM4Qt1t1TO2B-80zIx1lLQ - partials-kab-linux64-shippable/opt: eF7PSZ-MTuWh51FB-06UqA - partials-kab-macosx64-shippable/opt: DjNEMgyHRCqbh5ixd6cYgA - partials-kab-win32-shippable/opt: X1ttbS8SQEetq6aBhRJN2A - partials-kab-win64-aarch64-shippable/opt: aWW4JM06S0W7Yv2k9QU85Q - partials-kab-win64-shippable/opt: fKdQMvd8TAKy0Bk4F4YIkQ - partials-kk-linux-shippable/opt: LaXn8CEXSL2ErxocQz-RSQ - partials-kk-linux64-aarch64-shippable/opt: Y940DVqISuaD6u_ExwLs9g - partials-kk-linux64-shippable/opt: PmUoYcNlRTyBHDYOsmZNQw - partials-kk-macosx64-shippable/opt: ftly0BbOT4S_-WiP7-ts-A - partials-kk-win32-shippable/opt: dM_ao5vmR-GK1lVBb7D84Q - partials-kk-win64-aarch64-shippable/opt: YpAuz447RamP-Mbtpdsy9Q - partials-kk-win64-shippable/opt: YT5SYhwASK2LXZQhgwC3aw - partials-km-linux-shippable/opt: DmKiV4IBTfCPfILb61ZbvQ - partials-km-linux64-aarch64-shippable/opt: Yw12sDd3QhucaixQHzAsNw - partials-km-linux64-shippable/opt: HUSPL9rnR-Grq6nx8lPEsA - partials-km-macosx64-shippable/opt: GE5Oe6HLTdKxBCHuXDbUrw - partials-km-win32-shippable/opt: R1Gw65zIQjyq0ZRh3zbJCg - partials-km-win64-aarch64-shippable/opt: QIN5hIddRkSKS88dcWl9bA - partials-km-win64-shippable/opt: OFY7gKzLRbGpHgLyjl-Q8g - partials-kn-linux-shippable/opt: aMiadzI-Q3aDQF-pIrseSQ - partials-kn-linux64-aarch64-shippable/opt: RtWj7Kj3RFiOpSxJ_nX8IA - partials-kn-linux64-shippable/opt: To76gj51QiOiGmXIxyp5lQ - partials-kn-macosx64-shippable/opt: auk8QM76QBCWOimwbNcV1A - partials-kn-win32-shippable/opt: BXN__jRGQNKrjb-cwf2JjQ - partials-kn-win64-aarch64-shippable/opt: emSDa8BlR5uYKugpsWMuOg - partials-kn-win64-shippable/opt: JU-huzwWSdewicGQ0BsDuA - partials-ko-linux-shippable/opt: D_sq_qHuQmaXH3aZfcfE6w - partials-ko-linux64-aarch64-shippable/opt: IpFm4KiXSRGQKsB5fjAONg - partials-ko-linux64-shippable/opt: QJgsnCIBRuWFliFGqpdCBw - partials-ko-macosx64-shippable/opt: WSIS9C2wR5ybRql85AdeVQ - partials-ko-win32-shippable/opt: Hfnd7xiyR_-TWFFQs4XUAA - partials-ko-win64-aarch64-shippable/opt: frOJkTzpRRKLekV7aFM2eQ - partials-ko-win64-shippable/opt: d9c2mR8TSiq-chFyxDwAhg - partials-lij-linux-shippable/opt: FcQILAHwQY-5IlAwEDoFHQ - partials-lij-linux64-aarch64-shippable/opt: SLQ4-hLkSICvFILT0C8-UQ - partials-lij-linux64-shippable/opt: ELWIVO1zTzO85mB9w9FVSQ - partials-lij-macosx64-shippable/opt: DEdizkYVSpykXtwl0CY5tA - partials-lij-win32-shippable/opt: fnMqDfYPQ8-6BS40KAIpPQ - partials-lij-win64-aarch64-shippable/opt: ChoCVm90Rjyalm6eo2ce-w - partials-lij-win64-shippable/opt: Xh3h8K3JRcmnMF2zpSz8Dw - partials-linux-shippable/opt: XAgt0livS8WyMzz8HIKDMw - partials-linux64-aarch64-shippable/opt: aZM4l60OTJqbpygFzX5vXA - partials-linux64-shippable/opt: WUd5wQaORHuhC7VnUfygZw - partials-lt-linux-shippable/opt: LTuLRiJtSlGHhtD4whPz7Q - partials-lt-linux64-aarch64-shippable/opt: KMGcyaEmQJmjltZ4ANrDng - partials-lt-linux64-shippable/opt: CqreplxKTS2rHDh69NtqHg - partials-lt-macosx64-shippable/opt: IFtvxXG9Tj-bYP8w7IZQkQ - partials-lt-win32-shippable/opt: AlOkl40ySSuwe2NNDkPWpQ - partials-lt-win64-aarch64-shippable/opt: OGlzY-AbTEK4-0s2B3u_pw - partials-lt-win64-shippable/opt: IGhpBsrIQe2KMGjzT6iRqQ - partials-lv-linux-shippable/opt: NsltoNpyRXGI2JMsGHkPxg - partials-lv-linux64-aarch64-shippable/opt: LD_JFnWpSg6geXrtavllkg - partials-lv-linux64-shippable/opt: Guxb09wQTEusmiTaM6W3yQ - partials-lv-macosx64-shippable/opt: KF7s02_rRvK259a_xZKPtg - partials-lv-win32-shippable/opt: VJjZWHFbQx6uJq4Jxn39BQ - partials-lv-win64-aarch64-shippable/opt: c-ckdiRoQdGQuKFPpOhxkQ - partials-lv-win64-shippable/opt: LpWUVel5TzexMOXRGV8WTg - partials-macosx64-shippable/opt: HV7FkXO8RHC5ru58LRWBvA - partials-mk-linux-shippable/opt: Ex-HBqA3S9ylbpXxHctZ9w - partials-mk-linux64-aarch64-shippable/opt: BrBkd6YTSnOYpDTuvBrBJQ - partials-mk-linux64-shippable/opt: CbuuvW2vQEizf6R7Tle6XA - partials-mk-macosx64-shippable/opt: DeC2GpCQQL2x3M0eoZbeUw - partials-mk-win32-shippable/opt: LdCjSYMhTbu62imIGHxsRQ - partials-mk-win64-aarch64-shippable/opt: bF1qunOsT9OEzHyoqfOjUg - partials-mk-win64-shippable/opt: FlVhDAgTQdqzhzEp5RSCpw - partials-mr-linux-shippable/opt: Q9xQ2zmyTO-N49n_rsj-Sg - partials-mr-linux64-aarch64-shippable/opt: B7Rv74YIRA69ftqKm2068A - partials-mr-linux64-shippable/opt: V5UNRuokTfetE-tzBQQC2g - partials-mr-macosx64-shippable/opt: cwlN2gdwT3q-G2oDU4UNww - partials-mr-win32-shippable/opt: PH2vTqf7S7Kt-AqD0sDP6w - partials-mr-win64-aarch64-shippable/opt: TMGd_4SnSVKO8BzkjFhTaQ - partials-mr-win64-shippable/opt: CPmnY995REqgQ4W_pbdkDw - partials-ms-linux-shippable/opt: Dej-MzZoQv62mrRWGLmdYA - partials-ms-linux64-aarch64-shippable/opt: ZPVXlCIoRhyuheyayMOqxw - partials-ms-linux64-shippable/opt: LeuLkVb7SOi4aNlXO3NzjA - partials-ms-macosx64-shippable/opt: HqBu097OQTWAdNDevnbqaQ - partials-ms-win32-shippable/opt: G8Woxfs9R0ix7VSpWGQbdA - partials-ms-win64-aarch64-shippable/opt: JJYIC34UTXi-DccvVXAuEg - partials-ms-win64-shippable/opt: fGfbnh9mQHmefoF6vzNEzA - partials-my-linux-shippable/opt: BV6qMOiYSqmgkTvoJIYhKQ - partials-my-linux64-aarch64-shippable/opt: Yo8EhCg5Rj-fj8LjoDSJFA - partials-my-linux64-shippable/opt: Q-98xrk0SESFbSGoxF9Ckw - partials-my-macosx64-shippable/opt: Dnw6pqQXQzKAa9HVEXMWNA - partials-my-win32-shippable/opt: YLpQElReRGCs3KZp8Iva8w - partials-my-win64-aarch64-shippable/opt: ZPOYNXX9QcyAbe-3DPw0Dw - partials-my-win64-shippable/opt: Rt0DcLv7RySdM0cu_c-Kaw - partials-nb-NO-linux-shippable/opt: GxSZbeSDSpONtuhjH9N6tA - partials-nb-NO-linux64-aarch64-shippable/opt: KoLzv45mSnWi9ghZ5uqrbQ - partials-nb-NO-linux64-shippable/opt: SN_WhgDfRTeSRv09S5vdUA - partials-nb-NO-macosx64-shippable/opt: YGJNIPzDTUCTee5tcYDGhg - partials-nb-NO-win32-shippable/opt: coIVTjZZTxeskdfi5v7ENw - partials-nb-NO-win64-aarch64-shippable/opt: O9H2b_loTLGg-r925foGaw - partials-nb-NO-win64-shippable/opt: PyLWJGV2Tai510aKw40G0w - partials-ne-NP-linux-shippable/opt: X-8YVoddRomDBjBjPkwxHQ - partials-ne-NP-linux64-aarch64-shippable/opt: R1ATRRKTT-uoC0YuX4-66Q - partials-ne-NP-linux64-shippable/opt: NE8qBlqQSneEBBW63c3HaA - partials-ne-NP-macosx64-shippable/opt: JK_4isIXSVSg_vReT0auGQ - partials-ne-NP-win32-shippable/opt: eUvE2yP1TdGDYvKyTFBqTg - partials-ne-NP-win64-aarch64-shippable/opt: DtPGQfvWRxuWarFSYf_QHA - partials-ne-NP-win64-shippable/opt: XbYrZvhGQye7ULtDIMXDEw - partials-nl-linux-shippable/opt: ISozhmGtQk2vOTLQWSg19w - partials-nl-linux64-aarch64-shippable/opt: VCrZq6wLQomw1AQEhdQnBQ - partials-nl-linux64-shippable/opt: W5hoENumSeqF7J1St-RUMg - partials-nl-macosx64-shippable/opt: Y-jGwFRsTF-bR4cXaGsEjA - partials-nl-win32-shippable/opt: GaEFvszYTre-l3F7P_DG0w - partials-nl-win64-aarch64-shippable/opt: WeEb0seCSm-MVNWsJuuybg - partials-nl-win64-shippable/opt: Et_Jy1R3R9ml8jNaYZggPw - partials-nn-NO-linux-shippable/opt: efECbG_ERwagscIYs42Pug - partials-nn-NO-linux64-aarch64-shippable/opt: BygBarHvS4GCaybxNKv5aw - partials-nn-NO-linux64-shippable/opt: UgJD6UxBRbWWyKUQvdU-lw - partials-nn-NO-macosx64-shippable/opt: NmYvtq8KTZa0ry1pzcPrkQ - partials-nn-NO-win32-shippable/opt: RmcHCJ1yRoy036JyG2YCGg - partials-nn-NO-win64-aarch64-shippable/opt: TwLlGwzERQCu6eCmz1qSMA - partials-nn-NO-win64-shippable/opt: X6P3KfBISBeDgKaJgAQ_kQ - partials-oc-linux-shippable/opt: TvAvIAXiTyqY1S7LY5J_eA - partials-oc-linux64-aarch64-shippable/opt: YMHc2HADS3Kw8bYvGzpVeg - partials-oc-linux64-shippable/opt: GhQevsb3SVGEbnhoOp9eYA - partials-oc-macosx64-shippable/opt: JJpE-X3WSRKv8wiVVOvihg - partials-oc-win32-shippable/opt: LllcLpsvS02qdUSbY4MHCQ - partials-oc-win64-aarch64-shippable/opt: KZiyQjO7TCqZUaXinqx2TQ - partials-oc-win64-shippable/opt: REZEWQlfRMqsJhgCzLQjqg - partials-pa-IN-linux-shippable/opt: Bvh0sYF1TcOWEJTmjLxnBA - partials-pa-IN-linux64-aarch64-shippable/opt: f_YnaLgIR4iKXO66ckIrKA - partials-pa-IN-linux64-shippable/opt: EI4Rkj-xSR-I4ZLrjBKyQg - partials-pa-IN-macosx64-shippable/opt: JBsPQCNrScaE1Hhi12pFgg - partials-pa-IN-win32-shippable/opt: ZSd0-kMJQv29UpTMD6--7w - partials-pa-IN-win64-aarch64-shippable/opt: D27e1EdBTxua0D667AEt6g - partials-pa-IN-win64-shippable/opt: PWsoq5WCR-epC8d34cNGQQ - partials-pl-linux-shippable/opt: T5NeZXxjTZqyvf7bCQnSKA - partials-pl-linux64-aarch64-shippable/opt: Il6XpgCfTE2Bn89PxK0grg - partials-pl-linux64-shippable/opt: YcxU0K24TTuc1tS9oeAtpw - partials-pl-macosx64-shippable/opt: f4vV1H4lTyeRFS0MCy6LnA - partials-pl-win32-shippable/opt: Snj3eAYlSyqxA8VAuC8pig - partials-pl-win64-aarch64-shippable/opt: aetHmkoXSeCRjsTmJ8pLXA - partials-pl-win64-shippable/opt: ID6vFXCsTN28viahgzu8-g - partials-pt-BR-linux-shippable/opt: Xi1k8LQsT-qSET2tm5DO1A - partials-pt-BR-linux64-aarch64-shippable/opt: DjqDksg-TYGYZ8X_CYlnyg - partials-pt-BR-linux64-shippable/opt: X4PuTTZyTRK_qclZMTAX7A - partials-pt-BR-macosx64-shippable/opt: IMu6GxFCTmSPka5_dZZrTg - partials-pt-BR-win32-shippable/opt: OWrahA4_RdO_bSg2Z2_97g - partials-pt-BR-win64-aarch64-shippable/opt: e2oC3GPhScW1XHrJs8wqvw - partials-pt-BR-win64-shippable/opt: BuUWwyerQgCVpPNCe2Ju3A - partials-pt-PT-linux-shippable/opt: fR9eunfZR_2f90ODgG1JUQ - partials-pt-PT-linux64-aarch64-shippable/opt: HDWdHmDvSw6jk31dz3b8sQ - partials-pt-PT-linux64-shippable/opt: U9pIwtiESX-96LBYOhRyTQ - partials-pt-PT-macosx64-shippable/opt: QNqJk9m3Qfeec4_dyfEo-g - partials-pt-PT-win32-shippable/opt: dHi9XtphS9uGlzhd423AOA - partials-pt-PT-win64-aarch64-shippable/opt: XzxtzqN7Q96uEI0Lk8C1DA - partials-pt-PT-win64-shippable/opt: bYa3WpjTQGqLETqQ0I7K2g - partials-rm-linux-shippable/opt: cnyneR2JQDCMfjcIAlSxrg - partials-rm-linux64-aarch64-shippable/opt: GnGr-am9ROOwT1LTQF9Itw - partials-rm-linux64-shippable/opt: GCBGKfYFQAiE-R6D8VgDLQ - partials-rm-macosx64-shippable/opt: bket2YfUSpC0VhREkr_7pg - partials-rm-win32-shippable/opt: U13ntBv8TZCcMA9pFjiY0w - partials-rm-win64-aarch64-shippable/opt: VSCY1QNGSGmUlF2KzssWEQ - partials-rm-win64-shippable/opt: CCqHa8yvTOSI7nYuDTZZ6g - partials-ro-linux-shippable/opt: AWG6uERRQqeuvyohoCIcbg - partials-ro-linux64-aarch64-shippable/opt: OoBhCDLlQzSuQW2j5JTe2A - partials-ro-linux64-shippable/opt: ah5iuM0eTxqfW6lsEbrlUg - partials-ro-macosx64-shippable/opt: LGLUJaOJQsaemh7E5mAcfg - partials-ro-win32-shippable/opt: NQfUeDnCQUSmnn2YgIriBQ - partials-ro-win64-aarch64-shippable/opt: cYpow98CQieHZCWlM1OLAw - partials-ro-win64-shippable/opt: BusdTcpNRC6dF3v_qiwbHA - partials-ru-linux-shippable/opt: V08C3MNkTcyM8pcF9nsfZA - partials-ru-linux64-aarch64-shippable/opt: X1HBZcMYQNeEUitExqFjqg - partials-ru-linux64-shippable/opt: BwJJQX52SmW7cv33jsa6iw - partials-ru-macosx64-shippable/opt: Ffazc41uSmmEUigpMhPNhg - partials-ru-win32-shippable/opt: f2FHEBI9RtCQWSZxEJ36Sw - partials-ru-win64-aarch64-shippable/opt: abI6Ejl0RROg0QAa8kOofw - partials-ru-win64-shippable/opt: BoOpRcfIT9W_SjNAOcidcg - partials-sat-linux-shippable/opt: Nol6SSL7SjKNzGWv49e_lw - partials-sat-linux64-aarch64-shippable/opt: dXdYa2IWRAe5NV97RvHFcw - partials-sat-linux64-shippable/opt: YqgueiblSaqEcBCdz6jN4g - partials-sat-macosx64-shippable/opt: PIkQx5B3SiqssMSeg2_EHg - partials-sat-win32-shippable/opt: KmunBR9cTsijnimm3bfK-w - partials-sat-win64-aarch64-shippable/opt: bucvP7iiS42bRENZyZpcow - partials-sat-win64-shippable/opt: R3si5DlTRfmQGeU9jcnPtg - partials-sc-linux-shippable/opt: D9loYRVES6qSTED5JgsdLA - partials-sc-linux64-aarch64-shippable/opt: RglimdzwT7-MTOeQKJyVsA - partials-sc-linux64-shippable/opt: BMsEe_qkQsynoeNzqRRmLg - partials-sc-macosx64-shippable/opt: EmiCO8_KT2CF52jk1JSsoA - partials-sc-win32-shippable/opt: GxG-qdrTRAS4f2BpatbfHA - partials-sc-win64-aarch64-shippable/opt: FyOT10_uS2KN_3_licnjEQ - partials-sc-win64-shippable/opt: RSFpcQLTQvuFPHdsh-KjyQ - partials-sco-linux-shippable/opt: EPcw1RC6SU6K7Ft9SANMcQ - partials-sco-linux64-aarch64-shippable/opt: Hcl5aURDTyq5u69UJ6bnhQ - partials-sco-linux64-shippable/opt: KwjsyLL1QqK77o9xlLvNFQ - partials-sco-macosx64-shippable/opt: R5NG92hvTGK59Xkk0uUw-Q - partials-sco-win32-shippable/opt: OAP1R9MQRyGSV7saVP7tQQ - partials-sco-win64-aarch64-shippable/opt: b21GdpG1ShG2OB8yF9D0-w - partials-sco-win64-shippable/opt: bEL1TTaITq-MDsMA4DktTA - partials-si-linux-shippable/opt: ek5PKJCdSwmoSr8XEmD5dw - partials-si-linux64-aarch64-shippable/opt: CHzMO09wT1W1k_Ga12PLZQ - partials-si-linux64-shippable/opt: DsM-tgUyQbiZVMz40797Zg - partials-si-macosx64-shippable/opt: Y8ybT7eSSTuHPwd6RFMwrA - partials-si-win32-shippable/opt: a_jnsNkKS0m_tYqlyFSLtw - partials-si-win64-aarch64-shippable/opt: TRFyNtryT820_C6DkeJExQ - partials-si-win64-shippable/opt: CLguCUtySJm7WNPoxh1OwQ - partials-signing-ach-linux-shippable/opt: Z-QeIxL2TKKAXROHXZTwLw - partials-signing-ach-linux64-aarch64-shippable/opt: ZQQCZ9i9TAufpyZ4oFZn3Q - partials-signing-ach-linux64-shippable/opt: bHwetmIsS3CO8UIYvkdVhw - partials-signing-ach-macosx64-shippable/opt: Nd0Glt9CQjCIRY-0wNLrNQ - partials-signing-ach-win32-shippable/opt: Rlla88N4Q4OAoimFqhRLEA - partials-signing-ach-win64-aarch64-shippable/opt: UR_Xg8WrSI6BOIXX5A7MlA - partials-signing-ach-win64-shippable/opt: eUfNErI3RPGCH0rot73Zeg - partials-signing-af-linux-shippable/opt: DsvFV_6DR72fQ8vgOEgCmA - partials-signing-af-linux64-aarch64-shippable/opt: clz2CfTrThyCcNtiXl6FuA - partials-signing-af-linux64-shippable/opt: Pdtxgy2DQzuEOM5M5e0Yxg - partials-signing-af-macosx64-shippable/opt: TwgkyCnxQrKp43nE9-yP0w - partials-signing-af-win32-shippable/opt: CAwYaLv5QGCjLhDstCjvfA - partials-signing-af-win64-aarch64-shippable/opt: Rz06Lmw8S_iWF0SSxRwJig - partials-signing-af-win64-shippable/opt: deBOs_IJRPCnNqss5gBndw - partials-signing-an-linux-shippable/opt: KEllbWcMSpC4gHObXLCH7A - partials-signing-an-linux64-aarch64-shippable/opt: MQclB7UQSOGb9tLWzojrLQ - partials-signing-an-linux64-shippable/opt: e0hbhsHlTBuAhsF0zQuMEw - partials-signing-an-macosx64-shippable/opt: Yt3DbGmbRpi1bE1LID4eTg - partials-signing-an-win32-shippable/opt: fRhJLBEjQImd69BR3vvlWw - partials-signing-an-win64-aarch64-shippable/opt: HWeX3VEDT0mO0zZ4CW7BZw - partials-signing-an-win64-shippable/opt: OIWCbnsbQnisHg6lNUYyuQ - partials-signing-ar-linux-shippable/opt: dNJ-5nHbS92Cw-mOUnPLkQ - partials-signing-ar-linux64-aarch64-shippable/opt: BshkdQUvQmao-mgS9uQO9A - partials-signing-ar-linux64-shippable/opt: dN9l9BixS5CIpDa_0zuQ_g - partials-signing-ar-macosx64-shippable/opt: XvgExOKPQIOIj3QWZdNyxw - partials-signing-ar-win32-shippable/opt: W0tTb9njTdqWbupsalW3SA - partials-signing-ar-win64-aarch64-shippable/opt: XOHc_pDmRQalNpXfRmRm6g - partials-signing-ar-win64-shippable/opt: X_WQHtz-TW-p-3jFDLPHVg - partials-signing-ast-linux-shippable/opt: GpHcbSdlRtWelaFTFct_Pw - partials-signing-ast-linux64-aarch64-shippable/opt: cBk8qoIjQsyk1cfvcFpkLg - partials-signing-ast-linux64-shippable/opt: AR3e36rLRMe5br6bEdlQBg - partials-signing-ast-macosx64-shippable/opt: SYV8UR9GRrmn_0MPMur7eA - partials-signing-ast-win32-shippable/opt: CGL9fTVyTiORKj2H8vt2jw - partials-signing-ast-win64-aarch64-shippable/opt: TCCGxMptT9CCmv7Al3q5sQ - partials-signing-ast-win64-shippable/opt: BFQIJcDfSnmAQcSXCgJPbg - partials-signing-az-linux-shippable/opt: CbSdssjkTu69lC-7-hbvcw - partials-signing-az-linux64-aarch64-shippable/opt: PA6kkAbWRjOAXbKYfoB_lw - partials-signing-az-linux64-shippable/opt: HnYCnr8cQZCeKzD2Pq1M5Q - partials-signing-az-macosx64-shippable/opt: D-epULTFSHmXVvWRt0SwPA - partials-signing-az-win32-shippable/opt: QG6AG61NQLGXa7-eCy9o6g - partials-signing-az-win64-aarch64-shippable/opt: VyAA50gqSw-bzOYggk_cCA - partials-signing-az-win64-shippable/opt: ABbvdYt2RDigtae2MJ6Tow - partials-signing-be-linux-shippable/opt: JwKlhkUmSyuZk-8XzGYTQA - partials-signing-be-linux64-aarch64-shippable/opt: AdtnjqEqSnmoNTijPorRug - partials-signing-be-linux64-shippable/opt: V7_CbytlRrmVaoe2RahTRA - partials-signing-be-macosx64-shippable/opt: YK407jbFQI-EDGK2Ic0lvw - partials-signing-be-win32-shippable/opt: A360yh5AQZe0Hzf12cGcJw - partials-signing-be-win64-aarch64-shippable/opt: EwoTsNYjQSW85L0VFFkqiA - partials-signing-be-win64-shippable/opt: OhtY_zKaS_uGYnI0BfpThQ - partials-signing-bg-linux-shippable/opt: dXPJq78ISGutYFt0sQOBIw - partials-signing-bg-linux64-aarch64-shippable/opt: P_-pOdpoTTCRzqtFrtzypw - partials-signing-bg-linux64-shippable/opt: bXfdanDQQ6u6x7cu3lFNGA - partials-signing-bg-macosx64-shippable/opt: W1hmitz8Qci9t-7RqzugVQ - partials-signing-bg-win32-shippable/opt: Zreb5V7xSSmC3oZ_IJUK-A - partials-signing-bg-win64-aarch64-shippable/opt: LgWjLQX9SBipka2FipwTKA - partials-signing-bg-win64-shippable/opt: I-A3nKFQRa6odrGzb-_IUg - partials-signing-bn-linux-shippable/opt: ZOU-LYKZTA20R2FCQYY44A - partials-signing-bn-linux64-aarch64-shippable/opt: EjCY2rGuTLmgdQNvPZHUiQ - partials-signing-bn-linux64-shippable/opt: GjgUpJ-kRJi-7Yy6Nud4gw - partials-signing-bn-macosx64-shippable/opt: Hr3-0h5DRcyby0SHydiQdA - partials-signing-bn-win32-shippable/opt: PhtW3u0ITk2TngzMFF70hw - partials-signing-bn-win64-aarch64-shippable/opt: CmvZgdTlTrScrAzkgrh8_Q - partials-signing-bn-win64-shippable/opt: YtHVyOoHTq2h7DbIFFA7VQ - partials-signing-br-linux-shippable/opt: ShMM6PfQR_-uVr5J5AmADQ - partials-signing-br-linux64-aarch64-shippable/opt: Na9LLMrsSqSRK_zObCN1Mw - partials-signing-br-linux64-shippable/opt: HTMpPLAWRvyte5hXFrZKUg - partials-signing-br-macosx64-shippable/opt: U5ACcSuLRwGQFgdVX-eE4g - partials-signing-br-win32-shippable/opt: Nk8485njTkiRnMYYMJ7-4A - partials-signing-br-win64-aarch64-shippable/opt: PMAqdfXvS1aAj7hKhqCQiA - partials-signing-br-win64-shippable/opt: GfOKGUMNQMm91KifIfFqhg - partials-signing-bs-linux-shippable/opt: Nh5MXnZ7SPetgXcbkdgn_g - partials-signing-bs-linux64-aarch64-shippable/opt: cuMK4dDvTou6GtrtQfMvMg - partials-signing-bs-linux64-shippable/opt: ZwqU98vLRw-PPWbHatVidw - partials-signing-bs-macosx64-shippable/opt: M4_l00LOSc-FELL8cEjkmg - partials-signing-bs-win32-shippable/opt: QH7nBq9MTDCLk_F-MErWhQ - partials-signing-bs-win64-aarch64-shippable/opt: UqTPIubdSyGEf6A2PgcPBQ - partials-signing-bs-win64-shippable/opt: Pdi_EuHXRAiBEjwWHE5ZEA - partials-signing-ca-linux-shippable/opt: Wl-CE55HSNqMx8tHW3ab_w - partials-signing-ca-linux64-aarch64-shippable/opt: bre23W3FSmu_Ue024nupLw - partials-signing-ca-linux64-shippable/opt: EB3GUyw3Sge6v8LuDH6t2w - partials-signing-ca-macosx64-shippable/opt: TiXUh2_ITdKE4zq1Hm6QrQ - partials-signing-ca-valencia-linux-shippable/opt: Sbzmr4A0SpqN3n4io0XDHw - partials-signing-ca-valencia-linux64-aarch64-shippable/opt: JcGluwTDTe2-Wt85wSwKwA - partials-signing-ca-valencia-linux64-shippable/opt: ED9jX4daQ2WbSNb6bufXNw - partials-signing-ca-valencia-macosx64-shippable/opt: PtOUlY5YTlOdnvwDlGF5oA - partials-signing-ca-valencia-win32-shippable/opt: VOwlaNnVQR68A1qFE7GNvA - partials-signing-ca-valencia-win64-aarch64-shippable/opt: ft6WgBOOQMa20ktGesrizQ - partials-signing-ca-valencia-win64-shippable/opt: dQan66BKTdi0H0IrCgqm2Q - partials-signing-ca-win32-shippable/opt: KMss-NLLQnuPlJxmGhSP2w - partials-signing-ca-win64-aarch64-shippable/opt: QtedG1smRKWqtx26OMKCfw - partials-signing-ca-win64-shippable/opt: PpWNQR4FSUe6xs6HYX2ACA - partials-signing-cak-linux-shippable/opt: VrLkzqnuT4KvDkdg3vqwmQ - partials-signing-cak-linux64-aarch64-shippable/opt: QWkWqcwFQg2q_FFlHZh_3w - partials-signing-cak-linux64-shippable/opt: IuLeujGaReGA2vmx1jDnkg - partials-signing-cak-macosx64-shippable/opt: XbXSikV4TD2dyiv6UhXEHA - partials-signing-cak-win32-shippable/opt: CcBcum_wT82iFDa-hNn7PQ - partials-signing-cak-win64-aarch64-shippable/opt: OzKaFj7XRYuW_9fBkWcQpg - partials-signing-cak-win64-shippable/opt: DO5R4Py_S7uVNt6np-XF0g - partials-signing-cs-linux-shippable/opt: JXlMQWnLTg6leCfp1zPNVg - partials-signing-cs-linux64-aarch64-shippable/opt: a1I9Fb13RHm52V-XzL-cFg - partials-signing-cs-linux64-shippable/opt: PBU6jWfiQduALTTTetv0YA - partials-signing-cs-macosx64-shippable/opt: WCVZ7fP6QzS4H93HJPU-Sg - partials-signing-cs-win32-shippable/opt: PT2ghDmTT3SKn9BVps20jA - partials-signing-cs-win64-aarch64-shippable/opt: V7ONyLosR8eoE8ucICW0vQ - partials-signing-cs-win64-shippable/opt: MZ1VbCy4S2KgaC0InyCoIw - partials-signing-cy-linux-shippable/opt: LndP_HjqS2Ktp9qVzTov9Q - partials-signing-cy-linux64-aarch64-shippable/opt: A6Zz2K-YQZ-60BzY2jD04w - partials-signing-cy-linux64-shippable/opt: MEINmM4eQsiRMiuJibHCxw - partials-signing-cy-macosx64-shippable/opt: Zx2H2nfJSSq2wrMSN0hMBA - partials-signing-cy-win32-shippable/opt: Cb7dOh0hR5yCx4Hqk5pD3g - partials-signing-cy-win64-aarch64-shippable/opt: G7qEAgfYSJCUQHMkLnTQ7g - partials-signing-cy-win64-shippable/opt: VT7zLb2ZTrGe9Zb308WvrA - partials-signing-da-linux-shippable/opt: MNy5KPOpQUSJ2XOuNqbL-g - partials-signing-da-linux64-aarch64-shippable/opt: DNlWAQKOQgS33Wg-nrifIw - partials-signing-da-linux64-shippable/opt: UsFLgZNRSDKtLnnlCKPu_A - partials-signing-da-macosx64-shippable/opt: O1CLEkDyRQuz3fz_tCLKvg - partials-signing-da-win32-shippable/opt: G4ynR7buRTu4FF1nT21rvg - partials-signing-da-win64-aarch64-shippable/opt: BwWddCQsSlaYeYluP3GbQw - partials-signing-da-win64-shippable/opt: M_7gWUbsSVKuW9uFA1iL9g - partials-signing-de-linux-shippable/opt: Y56ZETdaQlC0pVmRtVFBKA - partials-signing-de-linux64-aarch64-shippable/opt: E_STXo8kSWOufqvd3JViRg - partials-signing-de-linux64-shippable/opt: VW1R-K1nTxiN11X5jrF8XA - partials-signing-de-macosx64-shippable/opt: A22HcTiUT5Sw7Mpoierw3w - partials-signing-de-win32-shippable/opt: ZfN9FalZQOWbUzgL3MN1JQ - partials-signing-de-win64-aarch64-shippable/opt: TbbDPBKbRfOSKs0tl96aDg - partials-signing-de-win64-shippable/opt: ZbvGo5XLTwyktlQtX8-Ydw - partials-signing-dsb-linux-shippable/opt: Qeu-AxsATLuHib5Xq3tGew - partials-signing-dsb-linux64-aarch64-shippable/opt: L5pYSc6zSEq2g-cufIRY5Q - partials-signing-dsb-linux64-shippable/opt: JhBKKGkSQrO0Z3uRZa5E2Q - partials-signing-dsb-macosx64-shippable/opt: N7pklE4QQwCIPKBYa5zLPA - partials-signing-dsb-win32-shippable/opt: cmdb2EvuRz-rQO-v6MynoA - partials-signing-dsb-win64-aarch64-shippable/opt: XShtjWJVRpOWxFgJ6EtDtg - partials-signing-dsb-win64-shippable/opt: caiQvXGdQFatVRW9HrHl6g - partials-signing-el-linux-shippable/opt: b9MSaICUTJWGwSGGwhMaqQ - partials-signing-el-linux64-aarch64-shippable/opt: Ak8cD0jcTYOw-L_LgqV8Yg - partials-signing-el-linux64-shippable/opt: CMVbrA6-QEasgURiA-nDSQ - partials-signing-el-macosx64-shippable/opt: O2dUPXnBSoKVEgSHoPyWow - partials-signing-el-win32-shippable/opt: FxRhGgD9S0SHMNsvYKbg4w - partials-signing-el-win64-aarch64-shippable/opt: Q3AG16J9TQ2hx2jQllzNrA - partials-signing-el-win64-shippable/opt: X2OIopGKTuqwi-Q4i4t87g - partials-signing-en-CA-linux-shippable/opt: SCU7qa4BQJ281xWCSO3PkA - partials-signing-en-CA-linux64-aarch64-shippable/opt: aDq68EHzRRynFpYZXpX4iw - partials-signing-en-CA-linux64-shippable/opt: ePFYC8EZQB2TztRyKrn5hQ - partials-signing-en-CA-macosx64-shippable/opt: P1blLEvcScuR0lrAQmbtYw - partials-signing-en-CA-win32-shippable/opt: RmRqajglTR2tMbpki5r0bg - partials-signing-en-CA-win64-aarch64-shippable/opt: MHMvwyaAS7iJVkkDXCULtQ - partials-signing-en-CA-win64-shippable/opt: RD7L4Wo4SlekvuSUS4Mo3g - partials-signing-en-GB-linux-shippable/opt: WIGRk5L-SuCvSeJBCk5jWw - partials-signing-en-GB-linux64-aarch64-shippable/opt: EUcOOcdsQC6oazLUqUgvoQ - partials-signing-en-GB-linux64-shippable/opt: FuSLhOqyRpajfiDuat8fCA - partials-signing-en-GB-macosx64-shippable/opt: Qv7Yjp3bRyOUkUoG2yzUsA - partials-signing-en-GB-win32-shippable/opt: KBpyAc8KSJmVTCBF4dB9SQ - partials-signing-en-GB-win64-aarch64-shippable/opt: Y3aLXcXGT8G12aIwzYaF0Q - partials-signing-en-GB-win64-shippable/opt: H0Mm98fmTTuQFxBB8c267A - partials-signing-eo-linux-shippable/opt: AwFR__4NSkWNDbWCzuXRXA - partials-signing-eo-linux64-aarch64-shippable/opt: ImFALUqBSj67VuhxwuuVvA - partials-signing-eo-linux64-shippable/opt: LKLvc3_sQNOg0ObQt9ynwQ - partials-signing-eo-macosx64-shippable/opt: OvrMoSU6RcugvoIRP4VJHQ - partials-signing-eo-win32-shippable/opt: DTCfds1dQFmScHkeuBUyVA - partials-signing-eo-win64-aarch64-shippable/opt: PWDWHFrrSVODQPB2tr_tqQ - partials-signing-eo-win64-shippable/opt: PLcQ5QuPQ4OY1whMmoOUVw - partials-signing-es-AR-linux-shippable/opt: JGCAVt0zRKSj1g1blC0sOw - partials-signing-es-AR-linux64-aarch64-shippable/opt: bWCdonLTT02h2bVSiv6fVg - partials-signing-es-AR-linux64-shippable/opt: Hfw_PVpSREeReuiOHHFH9g - partials-signing-es-AR-macosx64-shippable/opt: DGAOXGZISB6munKYmmUG-w - partials-signing-es-AR-win32-shippable/opt: ELcEWKGUT72jJgMWORz56A - partials-signing-es-AR-win64-aarch64-shippable/opt: f15deHSWS46Zoq0D0pmb_Q - partials-signing-es-AR-win64-shippable/opt: I8e3yYN4QtCbe8ETL59sNA - partials-signing-es-CL-linux-shippable/opt: YPw_sWa8QhOAdjXtTXJSTA - partials-signing-es-CL-linux64-aarch64-shippable/opt: BXxRZjakQQ2MxeE5FcgSIQ - partials-signing-es-CL-linux64-shippable/opt: BlkETyGaQ_-UIjIOZUbjIQ - partials-signing-es-CL-macosx64-shippable/opt: PdtqELdKQKi-ebeCYN1E8Q - partials-signing-es-CL-win32-shippable/opt: Sm2LgjR9QQexzniAk9MNLQ - partials-signing-es-CL-win64-aarch64-shippable/opt: TQL74XydS3-Vy2RnbKIYWQ - partials-signing-es-CL-win64-shippable/opt: Md3D73MYQculVmAeb_z2Zg - partials-signing-es-ES-linux-shippable/opt: YpSQrVURSg2Zu-RxMwnaGA - partials-signing-es-ES-linux64-aarch64-shippable/opt: RnQw0RReTlO76vxzXLOkZg - partials-signing-es-ES-linux64-shippable/opt: VsGx2bkZQlCaG6X8ne4T0Q - partials-signing-es-ES-macosx64-shippable/opt: fA8Kb3DZRPqVxP6aEItkEQ - partials-signing-es-ES-win32-shippable/opt: XY-2u1JoSa-frVp63ESwXQ - partials-signing-es-ES-win64-aarch64-shippable/opt: dOVvHwvPTxObdz1f2K5HIw - partials-signing-es-ES-win64-shippable/opt: bHAoV15MQU6NKy0tYOOopA - partials-signing-es-MX-linux-shippable/opt: X4wVAqGWT-ac4Z1cD7kQtA - partials-signing-es-MX-linux64-aarch64-shippable/opt: VjWVMhutTv-tqwmQ-UiXGQ - partials-signing-es-MX-linux64-shippable/opt: B8J8LUPMTpuYNebVlfEb_A - partials-signing-es-MX-macosx64-shippable/opt: VY4orZVrRd-gG_vtiV7vZA - partials-signing-es-MX-win32-shippable/opt: Jpd1zzD1T4OcH2z2ODmZCQ - partials-signing-es-MX-win64-aarch64-shippable/opt: ZJk938SgSRCuQFe1ohUwzw - partials-signing-es-MX-win64-shippable/opt: SvlGDAjETAO5_G6DZa-0ww - partials-signing-et-linux-shippable/opt: cX3XOZVgQxq4Pyzo-qsnCg - partials-signing-et-linux64-aarch64-shippable/opt: eMOdoYygQhCTmQulyKEPkQ - partials-signing-et-linux64-shippable/opt: NAu9VTlcSzK1KoQjHHWm1g - partials-signing-et-macosx64-shippable/opt: YJVgi5mKQOGQi_PEs4H1pg - partials-signing-et-win32-shippable/opt: A-3G6GumTB-l__m8C81JqQ - partials-signing-et-win64-aarch64-shippable/opt: YIjqLHAuQKGhK1DGHoWf7Q - partials-signing-et-win64-shippable/opt: QBYMhqgSRdOAOpfA8MIqEw - partials-signing-eu-linux-shippable/opt: EQba3c3dTm6dPAnED93KLA - partials-signing-eu-linux64-aarch64-shippable/opt: RPlxC7-_QUSEnAHfC8DnOA - partials-signing-eu-linux64-shippable/opt: cMeE7DOBQ6OfDLCfXgODhg - partials-signing-eu-macosx64-shippable/opt: DUklz2DYR-yPuifyRwFI-w - partials-signing-eu-win32-shippable/opt: XlyKE8b_S6OdBu-U-F2G6g - partials-signing-eu-win64-aarch64-shippable/opt: Np1xXNxYQDuLFurzhT86fw - partials-signing-eu-win64-shippable/opt: FoNdhPckSoO2va20gl3WoA - partials-signing-fa-linux-shippable/opt: QoOf2ZIKTPWzbF2h1k8ahA - partials-signing-fa-linux64-aarch64-shippable/opt: V4zLn8DFS5W7NjfRMt6rTA - partials-signing-fa-linux64-shippable/opt: EeNIksn2QqiGrugEl_wtCA - partials-signing-fa-macosx64-shippable/opt: JFEpcFoCSz6dtrtj_SXGFw - partials-signing-fa-win32-shippable/opt: B2zhWNR9RAeYm92v3MsIgQ - partials-signing-fa-win64-aarch64-shippable/opt: KTxuI_gZSxGANryaDruC2g - partials-signing-fa-win64-shippable/opt: Jeojoe7qSMCRVd_djuG51Q - partials-signing-ff-linux-shippable/opt: ava9S9t3SHK4Pw3ekdyagg - partials-signing-ff-linux64-aarch64-shippable/opt: RzJVNVyuTf2V8oXLJ3Rrdg - partials-signing-ff-linux64-shippable/opt: fKr8Qzo5QfC_V1wydaxcQA - partials-signing-ff-macosx64-shippable/opt: TttvcihZRMKdFkwYxMv7Qw - partials-signing-ff-win32-shippable/opt: FijWp3D-QYSq0td-ei_CsA - partials-signing-ff-win64-aarch64-shippable/opt: ZSqKC4DXQl2qJUkQwM_CyA - partials-signing-ff-win64-shippable/opt: OZZbDRcLQVyGKoS_cidIbw - partials-signing-fi-linux-shippable/opt: NCP1Ynq1Q8ut2qD9WGkjbQ - partials-signing-fi-linux64-aarch64-shippable/opt: SO4rQ5D7QxCnc4tp-y2L0Q - partials-signing-fi-linux64-shippable/opt: AZIc2ekGSxOMOgEsFYKqKA - partials-signing-fi-macosx64-shippable/opt: UlDCMFxuSR-0u8u53-NJMA - partials-signing-fi-win32-shippable/opt: Nd7SM-zbTi2aIkNm2qbe-w - partials-signing-fi-win64-aarch64-shippable/opt: Rehbib3ZRmSL4QFagbvXeQ - partials-signing-fi-win64-shippable/opt: UIqfwzgKRLSP8CVG8LcbWw - partials-signing-fr-linux-shippable/opt: NQ_6eSsgQuSARid_JTAcYQ - partials-signing-fr-linux64-aarch64-shippable/opt: T01sCuYFTVOypMOZyrd_uw - partials-signing-fr-linux64-shippable/opt: TkNamRhJTg2b7kH8wbQ2Kw - partials-signing-fr-macosx64-shippable/opt: MKMRicAsSQCycItdZh3Nug - partials-signing-fr-win32-shippable/opt: aqMBH2zIQLeMqjd8vtIRzw - partials-signing-fr-win64-aarch64-shippable/opt: SitddrWDTa656L51Z7tu-g - partials-signing-fr-win64-shippable/opt: SmTO95eiT4ORbnmdOtyfag - partials-signing-fur-linux-shippable/opt: YfyL0L79Rh6mjSZtKm08TA - partials-signing-fur-linux64-aarch64-shippable/opt: HK0v8WRFQDytBe2Y0j-lTA - partials-signing-fur-linux64-shippable/opt: Ays9Ij8jSWagxDWgweIcXg - partials-signing-fur-macosx64-shippable/opt: ZieAIxeDR6SfOGmA8bWq6Q - partials-signing-fur-win32-shippable/opt: UjRY0caBQmeSfE85G1EwpA - partials-signing-fur-win64-aarch64-shippable/opt: ZHb4-X-TQUGF3ApnT11fwA - partials-signing-fur-win64-shippable/opt: e_rNhe5iQMOXVzqLxD_rJw - partials-signing-fy-NL-linux-shippable/opt: d1d8TvbyS3WQwMM73O6Kaw - partials-signing-fy-NL-linux64-aarch64-shippable/opt: WOr6o4bUScqKdo6rUyKLbw - partials-signing-fy-NL-linux64-shippable/opt: KVEovt_lTBCPoG1tt0V-Dw - partials-signing-fy-NL-macosx64-shippable/opt: XYma2hqrRc6BdviWsH-dAQ - partials-signing-fy-NL-win32-shippable/opt: d_65ESiRRV-4VFI79dQkkA - partials-signing-fy-NL-win64-aarch64-shippable/opt: DfFSI6IUTiuehx9DEe03SA - partials-signing-fy-NL-win64-shippable/opt: TPMu45ijQmie2w5-HvWVMA - partials-signing-ga-IE-linux-shippable/opt: GPAiqGV2S6-zNkpAA7hL9w - partials-signing-ga-IE-linux64-aarch64-shippable/opt: KJebIelTSYSwfSmPLWtZJA - partials-signing-ga-IE-linux64-shippable/opt: eUlLK8QhRu27dcVwgyiuxA - partials-signing-ga-IE-macosx64-shippable/opt: CNsXVsueSuykBubbDRpGjQ - partials-signing-ga-IE-win32-shippable/opt: D31YErvPR8ic_DQCZh0cow - partials-signing-ga-IE-win64-aarch64-shippable/opt: O-d_KP9YR3S1OBoA3KPQMw - partials-signing-ga-IE-win64-shippable/opt: NCgAkNNKTIap4bxiGC3wgg - partials-signing-gd-linux-shippable/opt: SmmjFRsmRFmGnmKrg1CJFg - partials-signing-gd-linux64-aarch64-shippable/opt: Ew-pcOIuQOueSgIGNw9q3A - partials-signing-gd-linux64-shippable/opt: FPB7El76T2mFfAy1sfgjSg - partials-signing-gd-macosx64-shippable/opt: DVazX6cPQbeqAof6x3yZdQ - partials-signing-gd-win32-shippable/opt: MDqBzkv8RJ6vEPoKDX1oEg - partials-signing-gd-win64-aarch64-shippable/opt: H8WOX4zVTk6KUE0uAy3T4g - partials-signing-gd-win64-shippable/opt: TY7c2krrRMyNDGVkrjGoIw - partials-signing-gl-linux-shippable/opt: ZyNqVnjlRrC9woDx3yWf6g - partials-signing-gl-linux64-aarch64-shippable/opt: UGP5GjwmQoG_zXPp65GmjA - partials-signing-gl-linux64-shippable/opt: cm20PgpYTLqyfvBruwsTgQ - partials-signing-gl-macosx64-shippable/opt: KiTM5OoORdWqsF0xPvGHOg - partials-signing-gl-win32-shippable/opt: T0eaF3MRTTitRnZNAgYwiQ - partials-signing-gl-win64-aarch64-shippable/opt: AyKW3JSIQyuKMIZUl98gIQ - partials-signing-gl-win64-shippable/opt: adtC54FgTYyMEDQ2e8_6rw - partials-signing-gn-linux-shippable/opt: VkHX0b0BRvyJKzbMjJgkzA - partials-signing-gn-linux64-aarch64-shippable/opt: XCY98r3ORyismdbDTVOPmQ - partials-signing-gn-linux64-shippable/opt: Cu_v0IpiReig4NDyJVZzXA - partials-signing-gn-macosx64-shippable/opt: EvExQIYDTqeyh3bn2kbJhA - partials-signing-gn-win32-shippable/opt: ZzmbhudXT2izkDLSuB01Ug - partials-signing-gn-win64-aarch64-shippable/opt: UQyrqD7pRz-S8SpItqHNfw - partials-signing-gn-win64-shippable/opt: eEpN_aZ-Td-0FCFeMXjdVw - partials-signing-gu-IN-linux-shippable/opt: afWSX2oxR8GOCQrg8G2tmQ - partials-signing-gu-IN-linux64-aarch64-shippable/opt: IBTCScV-QfKAvs5UECLsug - partials-signing-gu-IN-linux64-shippable/opt: an9uYWOOTRKNBaCSPlzfrw - partials-signing-gu-IN-macosx64-shippable/opt: Xpu9BULJT2utdVvZhNhfrQ - partials-signing-gu-IN-win32-shippable/opt: Tq2m0dvTQL6wg4BVgCJYHg - partials-signing-gu-IN-win64-aarch64-shippable/opt: YWUFQihDTUGmVdme0q1_EA - partials-signing-gu-IN-win64-shippable/opt: U-9CmpLTRrOUwE6vgDL_8g - partials-signing-he-linux-shippable/opt: DI6NC2uRRE-hlp8WcmRadQ - partials-signing-he-linux64-aarch64-shippable/opt: aCzU5y_wTdCovZ6p-6d0WA - partials-signing-he-linux64-shippable/opt: cI35YEh-SLy2RgsRCt6Diw - partials-signing-he-macosx64-shippable/opt: G1fwvKTCQBu9fcRHygPlmA - partials-signing-he-win32-shippable/opt: AyQ_FCxyS4S-9vJvZE4i0Q - partials-signing-he-win64-aarch64-shippable/opt: ZUkMXMtpRoKxG508gH523g - partials-signing-he-win64-shippable/opt: ADzYb3bwRuGHbqdtfiuYuQ - partials-signing-hi-IN-linux-shippable/opt: MGWLVcS2RDaooPE4GNFzAQ - partials-signing-hi-IN-linux64-aarch64-shippable/opt: OEB076FcT4yz4vaJMGev1A - partials-signing-hi-IN-linux64-shippable/opt: Xx1xwTpRS_2W6tB2bjncOA - partials-signing-hi-IN-macosx64-shippable/opt: XpNspiAAQ0St28y8TPd1OA - partials-signing-hi-IN-win32-shippable/opt: Hns8bP9ERLmz-4zi1IJILQ - partials-signing-hi-IN-win64-aarch64-shippable/opt: RLd7ds_aRTWcrWlA70gdjQ - partials-signing-hi-IN-win64-shippable/opt: KIwrezaNT2ypL8lodbpfyw - partials-signing-hr-linux-shippable/opt: dgDt2DQ-T6-5fWIpWFqo9A - partials-signing-hr-linux64-aarch64-shippable/opt: VMSfswxkQcycQ8Dz7UJvLw - partials-signing-hr-linux64-shippable/opt: ZjLN3CggTwGD0rZwHw_8lA - partials-signing-hr-macosx64-shippable/opt: GQ0gNLEmQViKxS1kAtyQYQ - partials-signing-hr-win32-shippable/opt: WyjznGgJQpiqMlDPckA78g - partials-signing-hr-win64-aarch64-shippable/opt: CI_ZAOjwQ0uqz5R82mVkeQ - partials-signing-hr-win64-shippable/opt: CNTfCW-AQ3Skr5xqhhEkDw - partials-signing-hsb-linux-shippable/opt: T1UKuBKLTm2C8b_wsthO1w - partials-signing-hsb-linux64-aarch64-shippable/opt: JFdg3x_uSUawQuR_EQMHpQ - partials-signing-hsb-linux64-shippable/opt: VXYoNRmSQDezcNPjC8DrGw - partials-signing-hsb-macosx64-shippable/opt: FrQZHC6iRtuymDIf8CfkUA - partials-signing-hsb-win32-shippable/opt: MYBW65kqQee2oBgKLMOFig - partials-signing-hsb-win64-aarch64-shippable/opt: CAr__xpvTvewv5hZq_Zb8g - partials-signing-hsb-win64-shippable/opt: S9LKW5KkT7ShKWP6oonVfA - partials-signing-hu-linux-shippable/opt: GgEGwIcvR3ihFcdA6z3zrw - partials-signing-hu-linux64-aarch64-shippable/opt: UzmI_CZ_TBivYAtle6d6KQ - partials-signing-hu-linux64-shippable/opt: P4_Vy49ER3WNKUqRzdk7Ug - partials-signing-hu-macosx64-shippable/opt: eiHcOfipQlWyz9N5Tot5Yw - partials-signing-hu-win32-shippable/opt: LJhCNoU8T92XOIHG4Fr1IQ - partials-signing-hu-win64-aarch64-shippable/opt: DGCrHBMXQu-s0QYQgXSeOQ - partials-signing-hu-win64-shippable/opt: DfjCUZ3BT_qoL4ZxXwtvKQ - partials-signing-hy-AM-linux-shippable/opt: UHNCX1fASLSxPOSS_CKgQw - partials-signing-hy-AM-linux64-aarch64-shippable/opt: ODEZBtKSQIOGTy_zFLcS8g - partials-signing-hy-AM-linux64-shippable/opt: VHcZ0r8JQPewwmTbotZQBA - partials-signing-hy-AM-macosx64-shippable/opt: XxI5HGDkRl68QVseIM_tOA - partials-signing-hy-AM-win32-shippable/opt: ZmoonILETDuuRJ_EFBLyVw - partials-signing-hy-AM-win64-aarch64-shippable/opt: Cd3MdJnyQYKyHLsyfwAYFA - partials-signing-hy-AM-win64-shippable/opt: RqEzCF7lR6OlHa57_sy9NA - partials-signing-ia-linux-shippable/opt: Fid9AfT_Tky5lNjOOQoXkg - partials-signing-ia-linux64-aarch64-shippable/opt: F10bW8-hT7WgrZPMnRVdSg - partials-signing-ia-linux64-shippable/opt: GIwHRNbRQlyYFdszR-32aw - partials-signing-ia-macosx64-shippable/opt: NQjsFISVQy6VGAWq7M03uA - partials-signing-ia-win32-shippable/opt: UNnyl3XQTXyvRwEswaLXFw - partials-signing-ia-win64-aarch64-shippable/opt: GkY6_kvhTlSc5yF8WxjU4A - partials-signing-ia-win64-shippable/opt: MJNGIz0GSAmLoPx8NNvUFA - partials-signing-id-linux-shippable/opt: KvmEs8qlRgqIAKvxNCpZ7A - partials-signing-id-linux64-aarch64-shippable/opt: MHP1qmlKSO69XIUobVcjBg - partials-signing-id-linux64-shippable/opt: XqOV_iqDRFaaXQgGgglZqA - partials-signing-id-macosx64-shippable/opt: JAaaiaRvSHOSUqmT9KGzEA - partials-signing-id-win32-shippable/opt: TXeguKQjRxiRpOqPgU1lQg - partials-signing-id-win64-aarch64-shippable/opt: Y0hHpP7pQuukD0a5jymLlQ - partials-signing-id-win64-shippable/opt: U-5L8k6BRumd1qN_qFKJ0A - partials-signing-is-linux-shippable/opt: RO59GApdQKeBxYiTMDRWoA - partials-signing-is-linux64-aarch64-shippable/opt: LRyvHxiUTii_ZC50u92PsQ - partials-signing-is-linux64-shippable/opt: W7DbMKPaRK2XC2773g1yvQ - partials-signing-is-macosx64-shippable/opt: XPcqJDQMQvq6bzwUSyuRag - partials-signing-is-win32-shippable/opt: IqcL778OTEmDwrWJYO_Dxw - partials-signing-is-win64-aarch64-shippable/opt: XpcMoP1US4S806krQjjI9Q - partials-signing-is-win64-shippable/opt: ZtNSZt5VR0G1j-rzjK6uUA - partials-signing-it-linux-shippable/opt: RxwJQFKkTvmY75MditFelA - partials-signing-it-linux64-aarch64-shippable/opt: QO7div2tQvSgH-lk2YsxWg - partials-signing-it-linux64-shippable/opt: P--KG50NTPOoL08EOuJOxg - partials-signing-it-macosx64-shippable/opt: FA_8p2N1RKOv7qexrHmCgw - partials-signing-it-win32-shippable/opt: UCy82RSTQhCChrFKd-Hd0g - partials-signing-it-win64-aarch64-shippable/opt: cKI2Gu3-TimsHvzkxK8SyA - partials-signing-it-win64-shippable/opt: O15j5DE-Rxu0MaUpIYESzw - partials-signing-ja-JP-mac-macosx64-shippable/opt: NJaYGajCTHKoZdZztKJ6mw - partials-signing-ja-linux-shippable/opt: DCUaTVewR7yasbbh7NWVsQ - partials-signing-ja-linux64-aarch64-shippable/opt: V15E5h4vTkqa7sVbvHx5sQ - partials-signing-ja-linux64-shippable/opt: CuPkP1FOSWGiT6Pv4fSZxQ - partials-signing-ja-win32-shippable/opt: cVa6yQ31RcuiE-solfWlIw - partials-signing-ja-win64-aarch64-shippable/opt: JsGAaoK_SOq4DgleXMRuFQ - partials-signing-ja-win64-shippable/opt: bb_YYfhoS5yrFoqNrWQvSQ - partials-signing-ka-linux-shippable/opt: S1JNZrYPTyGmJkqehXhrdg - partials-signing-ka-linux64-aarch64-shippable/opt: BdDjtTSIRU6GZ9wrdym0Bw - partials-signing-ka-linux64-shippable/opt: TM9msFnBSoGfdqHdp6fllw - partials-signing-ka-macosx64-shippable/opt: BkZe1xA5R2uplFOB3e6_HQ - partials-signing-ka-win32-shippable/opt: H-dWFZ4dRQmufj0l9beQvw - partials-signing-ka-win64-aarch64-shippable/opt: JPQ171K9QDyJFe48ZDOorw - partials-signing-ka-win64-shippable/opt: BwXTC2lSTPKkVLPGWii5KA - partials-signing-kab-linux-shippable/opt: Mwca542OTaSFrJJxhygxCg - partials-signing-kab-linux64-aarch64-shippable/opt: Ylfo9oR-Q3OV4utd2blRxw - partials-signing-kab-linux64-shippable/opt: L4c99RGJRuyp9leePQ96Xw - partials-signing-kab-macosx64-shippable/opt: ZBoJj86ISJKDG5BYHMgZsg - partials-signing-kab-win32-shippable/opt: OI6ell9GTHOKtUzfh699Eg - partials-signing-kab-win64-aarch64-shippable/opt: PCDgpHESSpi3tE44u6THpg - partials-signing-kab-win64-shippable/opt: Ky9i41XnQtWEgnoPsjT-pA - partials-signing-kk-linux-shippable/opt: WnMWpSQYRTWfSrWsx1IfSw - partials-signing-kk-linux64-aarch64-shippable/opt: P6qHEXG9R1-QhElb4DNNew - partials-signing-kk-linux64-shippable/opt: TfuXNiiqRXu29Mjh1-ubJA - partials-signing-kk-macosx64-shippable/opt: FOPS8DRtSe22ZXsu_UTx4w - partials-signing-kk-win32-shippable/opt: e1Dl3X5GRoy3WDCCeAXO-Q - partials-signing-kk-win64-aarch64-shippable/opt: b9ej7bTzSDWoZhVoXeTbWg - partials-signing-kk-win64-shippable/opt: b4GGlyzPQHiKzygHVs98eA - partials-signing-km-linux-shippable/opt: MAzcJFdwSPq2hsLLcLdzdQ - partials-signing-km-linux64-aarch64-shippable/opt: GuQrcmMfR1CC4I2qXORVBQ - partials-signing-km-linux64-shippable/opt: Doc7cafXR-qX2z4vJLUa2w - partials-signing-km-macosx64-shippable/opt: UtU0wsvPTCWJQj2Z1pPHxw - partials-signing-km-win32-shippable/opt: DEv-DPHbS2eQGSeiwWn3jA - partials-signing-km-win64-aarch64-shippable/opt: eLKpdffJQymKBjsJiQ6Icg - partials-signing-km-win64-shippable/opt: aultqnh-R6mpL1hyIpNq5w - partials-signing-kn-linux-shippable/opt: VAiIxN9dTOqcCC00JJJvTA - partials-signing-kn-linux64-aarch64-shippable/opt: ej5J83FpRYWSQ3w2iAoXtA - partials-signing-kn-linux64-shippable/opt: M_VHSPr7TTqrHuq44hZefQ - partials-signing-kn-macosx64-shippable/opt: A6_pZa0RRICDB6ABP64VfA - partials-signing-kn-win32-shippable/opt: Hsjb6VJTQGKYdZwv2jo_aA - partials-signing-kn-win64-aarch64-shippable/opt: WWR7UCw8TAGx3YRuis9PVw - partials-signing-kn-win64-shippable/opt: VI5xBG3zSkeaP7vb79JYvg - partials-signing-ko-linux-shippable/opt: AB-xz9wUR9SJ83rR5a7HXg - partials-signing-ko-linux64-aarch64-shippable/opt: K4Dt3GZiTkq0M6ySXnArMw - partials-signing-ko-linux64-shippable/opt: TXteXfZpR9mhprYpwjQ3bA - partials-signing-ko-macosx64-shippable/opt: CXDSqJ6eQ-6dFEAL-i6eow - partials-signing-ko-win32-shippable/opt: WXQiE71zQmm4NJxe6CDyaA - partials-signing-ko-win64-aarch64-shippable/opt: ON5vr2-JQ0WLEXShSRAoTA - partials-signing-ko-win64-shippable/opt: Yd1PAlytQeCYPJYXj3TTNw - partials-signing-lij-linux-shippable/opt: YGFW45cvS7GtRlHC9eidSw - partials-signing-lij-linux64-aarch64-shippable/opt: BxVNCcGbTgK9-oemla_Vlw - partials-signing-lij-linux64-shippable/opt: dTBOd2aWS_q_n5S1q83ssA - partials-signing-lij-macosx64-shippable/opt: P3_I_8V9RHydx4cvBlSyKA - partials-signing-lij-win32-shippable/opt: VW8vZewMTwuIDYHhHBDajg - partials-signing-lij-win64-aarch64-shippable/opt: WLCMQHJLT6y61laTF_Q0hw - partials-signing-lij-win64-shippable/opt: DYaG60ILQquQtBF0bLS56A - partials-signing-linux-shippable/opt: b2jAsec-R0-wX2g2bDGuVg - partials-signing-linux64-aarch64-shippable/opt: BEnYPEbRQw-Hp5dffFVFaA - partials-signing-linux64-shippable/opt: Fi1QUjZGQomHZlRt0lbjgQ - partials-signing-lt-linux-shippable/opt: Joi_yaWmQbi-o90k-cCZoA - partials-signing-lt-linux64-aarch64-shippable/opt: Z73UdvXORHi8CYmMJ488Sg - partials-signing-lt-linux64-shippable/opt: YYz6KaYbTo2eMwmecy4YeA - partials-signing-lt-macosx64-shippable/opt: VVHqovZZRnCMAOFrZuibCA - partials-signing-lt-win32-shippable/opt: B1HVNQK3Tt-qLlTv3HT2zw - partials-signing-lt-win64-aarch64-shippable/opt: UiwRRMlAThKMD4tTXasxmw - partials-signing-lt-win64-shippable/opt: ZktY19XZRpeK0YUjl3qsrA - partials-signing-lv-linux-shippable/opt: EqGAKLGMSeiYE2vRzuBe4g - partials-signing-lv-linux64-aarch64-shippable/opt: eHNfBhK9RgCJgTFIuQsSXw - partials-signing-lv-linux64-shippable/opt: TT5Nbs4oTkKqdg_qYhfwFw - partials-signing-lv-macosx64-shippable/opt: bFau041YSlu1vx8tdU32Jg - partials-signing-lv-win32-shippable/opt: NvZO3tMQQQK2wms-gIfxrw - partials-signing-lv-win64-aarch64-shippable/opt: IUavbN7MQICn5JksZPqaKA - partials-signing-lv-win64-shippable/opt: QulA7slIQUiwiAcCD_jjBQ - partials-signing-macosx64-shippable/opt: Bh1gOsWlR9eoijhjqwLvAQ - partials-signing-mk-linux-shippable/opt: SChI_ciiT3CTpjjlNSvu7Q - partials-signing-mk-linux64-aarch64-shippable/opt: JUShvKR9TYaKHaLPO3O3vQ - partials-signing-mk-linux64-shippable/opt: ZH8D9VT5TZC1dKmOmG-A4w - partials-signing-mk-macosx64-shippable/opt: KINs-t2TRPWnhAfvkiZRhg - partials-signing-mk-win32-shippable/opt: ND7bw7MhQIKrYvVRINDIVQ - partials-signing-mk-win64-aarch64-shippable/opt: RgwuIZkFRHCD7HqJIY_Byg - partials-signing-mk-win64-shippable/opt: PDnwUhjGSvKWR013uB7w8g - partials-signing-mr-linux-shippable/opt: FgPDdQHASNyPUGha5k7K4Q - partials-signing-mr-linux64-aarch64-shippable/opt: FxNEB-aQSzKR1S5LpxZxAQ - partials-signing-mr-linux64-shippable/opt: ETjVXnRmRuGD3JF74MC7mQ - partials-signing-mr-macosx64-shippable/opt: Kz4776vOSYSh1EgqQB0o4w - partials-signing-mr-win32-shippable/opt: ZD9nv-sURDCzOwbmJALU1Q - partials-signing-mr-win64-aarch64-shippable/opt: cdYcNYwsS1-Tc_427zJl6w - partials-signing-mr-win64-shippable/opt: L9-_dSSoTvGrcY2HsvtrfA - partials-signing-ms-linux-shippable/opt: YTVHHdAqTUS6Sfarv_SYyQ - partials-signing-ms-linux64-aarch64-shippable/opt: OfOg2BZNR5W9fyyCr_8pkQ - partials-signing-ms-linux64-shippable/opt: EC2mh0PsRTuF8a566LdbdA - partials-signing-ms-macosx64-shippable/opt: FQe39Xx-QbOgqvg2MbTjDQ - partials-signing-ms-win32-shippable/opt: bJqdihsvQSqlqBjSdtY_oA - partials-signing-ms-win64-aarch64-shippable/opt: fGwvBzOUR_yQ96R2_-0vFA - partials-signing-ms-win64-shippable/opt: eqtfR77CQu2Yzs4d9bROuw - partials-signing-my-linux-shippable/opt: SobNfhHSTLqw_hCYL9NjHQ - partials-signing-my-linux64-aarch64-shippable/opt: Q_KppP6SRJuEalzLij2B4Q - partials-signing-my-linux64-shippable/opt: R3XtqXzYQ32qKSCmGoKelQ - partials-signing-my-macosx64-shippable/opt: aivLIdrORiyoEGUv5q5aVA - partials-signing-my-win32-shippable/opt: SUDHhftcRma9a9zCOf5TzA - partials-signing-my-win64-aarch64-shippable/opt: eu1STxbUSA2n6kCxd5rMyw - partials-signing-my-win64-shippable/opt: f0PomfBYRfmCVb9GE7-cpQ - partials-signing-nb-NO-linux-shippable/opt: bOXpvLmcQJKFD3EKFOu5HQ - partials-signing-nb-NO-linux64-aarch64-shippable/opt: P_DD9lJgTvub-NYYk6ZFSg - partials-signing-nb-NO-linux64-shippable/opt: HqJl5YdjRbGKl-ju5uq1KQ - partials-signing-nb-NO-macosx64-shippable/opt: MnlJT4VQTd-qS1fneJiUmA - partials-signing-nb-NO-win32-shippable/opt: ItCreTsbTPGXb-ZfrWOQKg - partials-signing-nb-NO-win64-aarch64-shippable/opt: bhykw3ZmTCe9NiTydAgWAw - partials-signing-nb-NO-win64-shippable/opt: JPdloUzbSu6QAsuGp_KteQ - partials-signing-ne-NP-linux-shippable/opt: XeYBizP7QtWyQLHDfN1tLQ - partials-signing-ne-NP-linux64-aarch64-shippable/opt: Hm0CS9fDT-ecWPOqFShdTQ - partials-signing-ne-NP-linux64-shippable/opt: LsaDijSWQBamjLjEhuu8GA - partials-signing-ne-NP-macosx64-shippable/opt: Vvf6hDn0TiK2xgJ6jhTO4A - partials-signing-ne-NP-win32-shippable/opt: XIzmCQpHSCC-6lgPBkmVnA - partials-signing-ne-NP-win64-aarch64-shippable/opt: X-7J3BhLR8y88Xh0yetoMQ - partials-signing-ne-NP-win64-shippable/opt: B2lRlZD5QTmU-mj7mUVzag - partials-signing-nl-linux-shippable/opt: ABQquGzaTeSJqrnGCo5tiA - partials-signing-nl-linux64-aarch64-shippable/opt: fJMb5B4TRzuA-YkpgVUdMA - partials-signing-nl-linux64-shippable/opt: YzHLW1s5Qgq5rcldtOQMpw - partials-signing-nl-macosx64-shippable/opt: Yl4fj9jFR6u7eOVQrqap8w - partials-signing-nl-win32-shippable/opt: aqUCfIXgSUutTAZmlsoHYQ - partials-signing-nl-win64-aarch64-shippable/opt: ZPTeXLEhTHGRiE7HvZyOkA - partials-signing-nl-win64-shippable/opt: bvsOpbE_QfOhjpYENX0lnA - partials-signing-nn-NO-linux-shippable/opt: AnALkVrOTxiuxzDMt096jA - partials-signing-nn-NO-linux64-aarch64-shippable/opt: D0urgTBsRhKQtRmq-f2_yA - partials-signing-nn-NO-linux64-shippable/opt: fKhs-dLnSwmGpIfKRubuJQ - partials-signing-nn-NO-macosx64-shippable/opt: afYqg4yPTMuuaoeOkThs_w - partials-signing-nn-NO-win32-shippable/opt: XzqKwwfdQOuQIOtC_3SAcQ - partials-signing-nn-NO-win64-aarch64-shippable/opt: QXwthLPUR0-MZONqpWU5jw - partials-signing-nn-NO-win64-shippable/opt: CaWY3eYwSCKvX47DD4vdkg - partials-signing-oc-linux-shippable/opt: Q_Cnia78T9KRM2jqXr1RMw - partials-signing-oc-linux64-aarch64-shippable/opt: PuowQW4LTCCQrly-X-9Bxg - partials-signing-oc-linux64-shippable/opt: MT7_rsk6S6KiXT02qkA8uw - partials-signing-oc-macosx64-shippable/opt: DfeAmWIqT1inqJLe3h8BLg - partials-signing-oc-win32-shippable/opt: TSZfrhnYRayB2ewCp8js_w - partials-signing-oc-win64-aarch64-shippable/opt: JL96n4b5T0WuCLdtH3QaQA - partials-signing-oc-win64-shippable/opt: TUnO6pX5QEG9YSIYdrDPUQ - partials-signing-pa-IN-linux-shippable/opt: G3gG2eB5SySEJ19eLEPlCA - partials-signing-pa-IN-linux64-aarch64-shippable/opt: bFednAqVQeeS-fVj7Ww5kA - partials-signing-pa-IN-linux64-shippable/opt: B8D7yD9NSES1Z_3AIrD8Mw - partials-signing-pa-IN-macosx64-shippable/opt: YazVgL9mSj2VmLpBe6sbcA - partials-signing-pa-IN-win32-shippable/opt: N0FgpfTQQdiYNaJRoro6eQ - partials-signing-pa-IN-win64-aarch64-shippable/opt: cIO6AiD8RPG8FDnyOlSafA - partials-signing-pa-IN-win64-shippable/opt: IRri0LmITbS1rA7MgN9Ysw - partials-signing-pl-linux-shippable/opt: HCZmSYLsShu82cpTAn9Uaw - partials-signing-pl-linux64-aarch64-shippable/opt: DlOo1ik3R6WAqwBxzOHhFg - partials-signing-pl-linux64-shippable/opt: T2Yn1Px_QYi90hg6wDVdJQ - partials-signing-pl-macosx64-shippable/opt: Nhycum2tSRWL4a5oJI2xmg - partials-signing-pl-win32-shippable/opt: SHRvt4TaTb64vSb6v3aZuQ - partials-signing-pl-win64-aarch64-shippable/opt: G_w4qJ-STb2c5lo-ajPHwQ - partials-signing-pl-win64-shippable/opt: BypyCF5jST-1v_OPsoqLsA - partials-signing-pt-BR-linux-shippable/opt: bxWiGnCmQ0-5dGtZzaXbqA - partials-signing-pt-BR-linux64-aarch64-shippable/opt: UoKINb9OSqSmKxNUMKJocQ - partials-signing-pt-BR-linux64-shippable/opt: SdB91rlBQYuJQhl8i_zl-w - partials-signing-pt-BR-macosx64-shippable/opt: KU4km5KOT9S15hVlUE7dvQ - partials-signing-pt-BR-win32-shippable/opt: CW7JZQbyTumnu3rv4qfrqg - partials-signing-pt-BR-win64-aarch64-shippable/opt: XQI46RYcRwWo1ZehLAGxGA - partials-signing-pt-BR-win64-shippable/opt: OHMorIMORYyv1qGzUqId8A - partials-signing-pt-PT-linux-shippable/opt: ZYZ8k_hWSmeBE-ohg6oE2Q - partials-signing-pt-PT-linux64-aarch64-shippable/opt: Q1tlkhY8RXqpnehIQl0sqQ - partials-signing-pt-PT-linux64-shippable/opt: bI9A_bh2RoWG_wApqMn6Vg - partials-signing-pt-PT-macosx64-shippable/opt: ExUrDacrSViUtQvdMONudA - partials-signing-pt-PT-win32-shippable/opt: Iaa1MfEDRe6X9bT-2xEUiQ - partials-signing-pt-PT-win64-aarch64-shippable/opt: fJFvR8uWQPeX7weJ7EQHYw - partials-signing-pt-PT-win64-shippable/opt: WMIG8u8dRTGfytGgagLhRA - partials-signing-rm-linux-shippable/opt: f91K0D9KSd-wwyZDGDthAg - partials-signing-rm-linux64-aarch64-shippable/opt: bWqSsPKGTHeIg2417BjaAA - partials-signing-rm-linux64-shippable/opt: E5jMsO5lQva21_6ZzBIp2w - partials-signing-rm-macosx64-shippable/opt: HgI4GdFLSraJmoz9_bW1GA - partials-signing-rm-win32-shippable/opt: am7ldb_RR-awqxSd1Sx2rQ - partials-signing-rm-win64-aarch64-shippable/opt: DwDHegysQzedWHI3J9cpLA - partials-signing-rm-win64-shippable/opt: TsnHutrbTXqh2ggAxMsuJA - partials-signing-ro-linux-shippable/opt: XTKoEEUJQHKEjKrGe_DrXA - partials-signing-ro-linux64-aarch64-shippable/opt: X9IVBdA1RH6Uvbiu6bZ-2g - partials-signing-ro-linux64-shippable/opt: eU7EwY5cTiGhO8xSAQjjgA - partials-signing-ro-macosx64-shippable/opt: DbuJ0H5qTU2HjxAY-Tscbw - partials-signing-ro-win32-shippable/opt: ehtz60dWSMu2EAtYJhVU6g - partials-signing-ro-win64-aarch64-shippable/opt: Y4fu_ZJ6SL6XC-leUYfkuQ - partials-signing-ro-win64-shippable/opt: Gc5hbyyiTVqHHHd96PHT4Q - partials-signing-ru-linux-shippable/opt: JX40qRe1SgiUfmnBGbtuXA - partials-signing-ru-linux64-aarch64-shippable/opt: WiCt-ZlsRemivh9Nb73fKw - partials-signing-ru-linux64-shippable/opt: KsAnlbc3TYKcVBHH6_rpNw - partials-signing-ru-macosx64-shippable/opt: D3j93LcgReCxPD_1T5p9bw - partials-signing-ru-win32-shippable/opt: C8N6Z9hOQFylavtoJZueDQ - partials-signing-ru-win64-aarch64-shippable/opt: d5qp_vk4RWKyiXKNISFV-g - partials-signing-ru-win64-shippable/opt: T06KVQAkQbK5xzzCdc9jAA - partials-signing-sat-linux-shippable/opt: B4usNxheQCCrmUQ7YMWAHQ - partials-signing-sat-linux64-aarch64-shippable/opt: Y4xv5bSeTnG8SuZPTKF44Q - partials-signing-sat-linux64-shippable/opt: XpTOGb3nRSq8fbmR9FP9tQ - partials-signing-sat-macosx64-shippable/opt: ABDbZJNBTsOaVxBDNtDO7w - partials-signing-sat-win32-shippable/opt: d6cQkBgJTBiD7SBGq1hDlQ - partials-signing-sat-win64-aarch64-shippable/opt: IaP7YVR7TF2LnLw4xCU9Ug - partials-signing-sat-win64-shippable/opt: HEBUaC6PRheJQFSHQgsJvQ - partials-signing-sc-linux-shippable/opt: c0t9RcIXR_CNn1Jszp9ddg - partials-signing-sc-linux64-aarch64-shippable/opt: QDQlIXdgSIqT5v2qkZe5jg - partials-signing-sc-linux64-shippable/opt: TZZFoJzCQqyMptCy99jSLA - partials-signing-sc-macosx64-shippable/opt: Ks0zqkTHSjWAk9j1dzam9Q - partials-signing-sc-win32-shippable/opt: FtMdEOT4TICiC_lcmBrenQ - partials-signing-sc-win64-aarch64-shippable/opt: R9DyAQRVQNa4nt5ZDryfNg - partials-signing-sc-win64-shippable/opt: c-JaPIs2QdCYknJKTNGF1g - partials-signing-sco-linux-shippable/opt: BrGJFtu1QRaH4MxdbSRgVA - partials-signing-sco-linux64-aarch64-shippable/opt: U4AXkDhRS3-rIHe0EtFM3g - partials-signing-sco-linux64-shippable/opt: FcyzhEaPRG6jvncacNu0HA - partials-signing-sco-macosx64-shippable/opt: GGHi7RblTH-RFQrBW5AaXg - partials-signing-sco-win32-shippable/opt: Y9tDP9ETS9uzWxz01mNDjQ - partials-signing-sco-win64-aarch64-shippable/opt: RLzQ2fyZRz2SfAJvqYemlw - partials-signing-sco-win64-shippable/opt: aVfdMsB8SYyx4MNEtzzB-A - partials-signing-si-linux-shippable/opt: FMPp00SSRWCcZIVzh0x9-Q - partials-signing-si-linux64-aarch64-shippable/opt: Tv6rKNruSreTLenymX3Hmg - partials-signing-si-linux64-shippable/opt: L6-boDyHSYSzG9_2QZ-74Q - partials-signing-si-macosx64-shippable/opt: DR3x08ZgTBCK9yXawY4qPQ - partials-signing-si-win32-shippable/opt: XdV-sYySQEGvQ2kMyCGwkA - partials-signing-si-win64-aarch64-shippable/opt: D9lSz8pQQiGG__yrBVTY1g - partials-signing-si-win64-shippable/opt: Bv5azUxVR_yQygHbjmOC1g - partials-signing-sk-linux-shippable/opt: CzgY13BlSr2tcxkB6HcU0w - partials-signing-sk-linux64-aarch64-shippable/opt: J90vDChZRUS7y3WH2Hjvyw - partials-signing-sk-linux64-shippable/opt: Wkmbdl91QMCWubZ-M8nKQQ - partials-signing-sk-macosx64-shippable/opt: T9gvLYONQE6aanusIZ7TfA - partials-signing-sk-win32-shippable/opt: VhAkS7M_R0SScTj_mHPPQg - partials-signing-sk-win64-aarch64-shippable/opt: IRYbxy58TX-EMR3zfyC-0Q - partials-signing-sk-win64-shippable/opt: YwLkw635TEiDsXJZBLXeMg - partials-signing-skr-linux-shippable/opt: LuHS1i6GQr-o5Vf2Cc_hew - partials-signing-skr-linux64-aarch64-shippable/opt: AkS1CagZTjmH2ogx4qgODQ - partials-signing-skr-linux64-shippable/opt: NbLB1f8VQLu-pdSIe5nsSg - partials-signing-skr-macosx64-shippable/opt: Fb4E1umsSZGJNXzHdD_vWw - partials-signing-skr-win32-shippable/opt: U3zBnQYCS2KWHiRUwrDptg - partials-signing-skr-win64-aarch64-shippable/opt: Q75aa2RnTCqhTthCRpi40A - partials-signing-skr-win64-shippable/opt: GSALHeCMQmKcTw2xk0kDUA - partials-signing-sl-linux-shippable/opt: ARn0yPKdT9mNEJbLxEtfgg - partials-signing-sl-linux64-aarch64-shippable/opt: Upugn9-vTNSrHrvzQNDpTg - partials-signing-sl-linux64-shippable/opt: X5Od9mMxT9O6ZzQoiKa46g - partials-signing-sl-macosx64-shippable/opt: Qpmj1OgYTEeeTeSqopD15w - partials-signing-sl-win32-shippable/opt: Q5i212iBTDmG_LPfcJU_Xw - partials-signing-sl-win64-aarch64-shippable/opt: XypTlzt8TQuoD_HMQ9hQdw - partials-signing-sl-win64-shippable/opt: D-GVYoyDTE2nAj5e-EroCA - partials-signing-son-linux-shippable/opt: Y__H4X41R2u9P0aLTWElIw - partials-signing-son-linux64-aarch64-shippable/opt: Yo0HM595TduCIdLu2iNwXA - partials-signing-son-linux64-shippable/opt: Xr-Y9uv8QB2FocFzklKy5g - partials-signing-son-macosx64-shippable/opt: Nz8JQ7HPRVyl9qctJdrhfA - partials-signing-son-win32-shippable/opt: QFWdEBa_TvqFgyFbXX8mbA - partials-signing-son-win64-aarch64-shippable/opt: avnWmTRLT2-OIgJeKYLmHA - partials-signing-son-win64-shippable/opt: BpoUY9hbRFGnF4O_l4aehw - partials-signing-sq-linux-shippable/opt: X0KTPB9QQ1afU-2BUZ9KBQ - partials-signing-sq-linux64-aarch64-shippable/opt: cLrGQy6aToia7GVFx8eCAg - partials-signing-sq-linux64-shippable/opt: UWdX82fMTzC20HIAZTGuKA - partials-signing-sq-macosx64-shippable/opt: DO66yaetR1GL_HrbzyIWOA - partials-signing-sq-win32-shippable/opt: HQmF0Y8vQXSyEmsnvavftw - partials-signing-sq-win64-aarch64-shippable/opt: ZWWoDQzgTp6lCaqyfoswMQ - partials-signing-sq-win64-shippable/opt: QaRDFyKPTr6RrCKiYWRSog - partials-signing-sr-linux-shippable/opt: fJZ61UliQAWjqOIRiaMkKw - partials-signing-sr-linux64-aarch64-shippable/opt: G1mh8tabSG-9rhnywNWqvw - partials-signing-sr-linux64-shippable/opt: Yot0xweaQQKT-cLNNZtmAQ - partials-signing-sr-macosx64-shippable/opt: XpfbggyzQyyORAanh30L3A - partials-signing-sr-win32-shippable/opt: L0adjJjLTgyyjiliCkmyCg - partials-signing-sr-win64-aarch64-shippable/opt: IopDL5TTRfCe8KIUqimV5A - partials-signing-sr-win64-shippable/opt: StMU7biVRZWQ6wg838emHA - partials-signing-sv-SE-linux-shippable/opt: KWqCe6nRSbOi2Q3VeNCTUw - partials-signing-sv-SE-linux64-aarch64-shippable/opt: YCQzMQvpQJSLRxK06oQtzg - partials-signing-sv-SE-linux64-shippable/opt: BZLKz2cBQAWka9S4CggMqQ - partials-signing-sv-SE-macosx64-shippable/opt: T91rFefdQUS1uFX-bJq0qw - partials-signing-sv-SE-win32-shippable/opt: GEBxmJuKS1S9Quk5jAD0QA - partials-signing-sv-SE-win64-aarch64-shippable/opt: ZbpfrSowQ-Oz_u7SYiyIPw - partials-signing-sv-SE-win64-shippable/opt: UgC_1dQPSpGcyYWb12F6Rw - partials-signing-szl-linux-shippable/opt: DN8DrdlKQDGb8yg8UvaBfw - partials-signing-szl-linux64-aarch64-shippable/opt: Iu781w75SQ6KwGb6YbyLBw - partials-signing-szl-linux64-shippable/opt: T4riWvwzSV-WHy-q290oDw - partials-signing-szl-macosx64-shippable/opt: J42iJi6qSPq0GhQajbV9sg - partials-signing-szl-win32-shippable/opt: Hwo7pfYqRT2qggQLGOKzPg - partials-signing-szl-win64-aarch64-shippable/opt: fZhw0TGHSZKAq96jSEvbkA - partials-signing-szl-win64-shippable/opt: ZMVgWH3mTuy2YcwsLRMttA - partials-signing-ta-linux-shippable/opt: ZJ_ANyGQRbKZETfpLxAuMg - partials-signing-ta-linux64-aarch64-shippable/opt: VWADvHMuT2C44JuHlGN0MA - partials-signing-ta-linux64-shippable/opt: D8pt_ma2TBSiGZEolXEHuQ - partials-signing-ta-macosx64-shippable/opt: VjQYSc9pSLyfh8Vln_ALKg - partials-signing-ta-win32-shippable/opt: WfgWncvETbiPZcbJyhatXQ - partials-signing-ta-win64-aarch64-shippable/opt: EsZStfdeQ0yJ7J3HX95TrA - partials-signing-ta-win64-shippable/opt: Dc1UWDB_QVmSwiLUl4RdCg - partials-signing-te-linux-shippable/opt: czAQ6pN8SUKYZEzdsh1O2g - partials-signing-te-linux64-aarch64-shippable/opt: fkhJ7VJRQHqI3VG8OIqUfw - partials-signing-te-linux64-shippable/opt: Q6Zg-bJ4RCWFaVqZxLdebQ - partials-signing-te-macosx64-shippable/opt: VBoRUA6VQ0a4ymSxS1FE-A - partials-signing-te-win32-shippable/opt: Nc8Jv42DQVm3FogVoS7Bxw - partials-signing-te-win64-aarch64-shippable/opt: JINPEVOPS5SZMEs9RlRA8w - partials-signing-te-win64-shippable/opt: GYoOxvdcTvycsIsAHWIiFQ - partials-signing-tg-linux-shippable/opt: ZLMfnkp6TK2OQ0o0H7aFjw - partials-signing-tg-linux64-aarch64-shippable/opt: cHBAAjFaQ0WDNtFg-ONbqQ - partials-signing-tg-linux64-shippable/opt: YbqtQw9fSbC_F-hOWPa1Ew - partials-signing-tg-macosx64-shippable/opt: UfQEqF0XR3CVcyRq1aS6-Q - partials-signing-tg-win32-shippable/opt: cFdM5rHVSnSillQgmedAgA - partials-signing-tg-win64-aarch64-shippable/opt: AQ7q-iLvSJWead3zxqmdAQ - partials-signing-tg-win64-shippable/opt: AwEkn_QsR4GhcNvKyFfXKA - partials-signing-th-linux-shippable/opt: TEofZRbjTsSvHfPXOrb3CQ - partials-signing-th-linux64-aarch64-shippable/opt: P91Q80EUTo2yNjPtCweH9g - partials-signing-th-linux64-shippable/opt: Eg5Mns1mTE216erSdWAQzw - partials-signing-th-macosx64-shippable/opt: P7unpdx1QPuujYWb52BI8A - partials-signing-th-win32-shippable/opt: IVUXW6_HSxSVJUE7I3dJ6A - partials-signing-th-win64-aarch64-shippable/opt: W_96GoeWS0Ksmw1hibRplw - partials-signing-th-win64-shippable/opt: C_Xscv6LSH6yQGrC3vQ3rQ - partials-signing-tl-linux-shippable/opt: RTYCRyCqQyeY6AZm5-nx3g - partials-signing-tl-linux64-aarch64-shippable/opt: XNAb66xeRGmv6EKzoMO3lA - partials-signing-tl-linux64-shippable/opt: duXMl0vRRR2thsHqhJmYEA - partials-signing-tl-macosx64-shippable/opt: TbZl6T7JSBCB6tmJv3Lfog - partials-signing-tl-win32-shippable/opt: OFWNTZakQy2LkMLoOTrezA - partials-signing-tl-win64-aarch64-shippable/opt: QELOe0tiRWq4oxn7_r2Q_g - partials-signing-tl-win64-shippable/opt: O2_DOcx4QiefI_t4DnH9Wg - partials-signing-tr-linux-shippable/opt: aK-HKRTHTl29KYNZB7b9CQ - partials-signing-tr-linux64-aarch64-shippable/opt: RWEnEuuzTdu3nph5dcVLZg - partials-signing-tr-linux64-shippable/opt: SrC89Ff8QhS4Tn7nVqeZTA - partials-signing-tr-macosx64-shippable/opt: EpZu7b4ZTVady9lNBFtkSQ - partials-signing-tr-win32-shippable/opt: YT2XeBSEQbabP1Fetg7Ldw - partials-signing-tr-win64-aarch64-shippable/opt: TMNnGf-uRHCbfajZUMZ63w - partials-signing-tr-win64-shippable/opt: WDZtanv2R1uOc-avyQsmQA - partials-signing-trs-linux-shippable/opt: c3iE30SrTVeXN3yl5omF9w - partials-signing-trs-linux64-aarch64-shippable/opt: C-Qu40yARBmsV9BOpokvhw - partials-signing-trs-linux64-shippable/opt: ayuNgbucRayS0y9U4aIcBg - partials-signing-trs-macosx64-shippable/opt: MPHa66a_QkuPr3zmvQpc5w - partials-signing-trs-win32-shippable/opt: VJr2QCuiQXa2W4NEGj32nA - partials-signing-trs-win64-aarch64-shippable/opt: KnlYj2AlSC-jz-luU9Q1og - partials-signing-trs-win64-shippable/opt: YWPcOANIRFiz-K2I04yl1Q - partials-signing-uk-linux-shippable/opt: OTvyBgsbQSizst_bnaTvcQ - partials-signing-uk-linux64-aarch64-shippable/opt: Qh6FBMYZQ9OVLOjgWhOScQ - partials-signing-uk-linux64-shippable/opt: cfrSNziGRj2bBdwOCYHscQ - partials-signing-uk-macosx64-shippable/opt: IhH1XQpPTI2yDscmOeVcow - partials-signing-uk-win32-shippable/opt: OqX-lnFwQdCZ-xd9vHgc7A - partials-signing-uk-win64-aarch64-shippable/opt: LafV9dwTRdi9YiM0TgqpZQ - partials-signing-uk-win64-shippable/opt: K32lKCr5T7e_JkD9YjDOKA - partials-signing-ur-linux-shippable/opt: Vmc4Wpy1TuGSEuoxf1KRhA - partials-signing-ur-linux64-aarch64-shippable/opt: BSK4uZhQSfCuFz-DvhTj2Q - partials-signing-ur-linux64-shippable/opt: G3iImI3AT1C1kzH4TLxJug - partials-signing-ur-macosx64-shippable/opt: Sa5geUpSTWi4PYaRpDHGEA - partials-signing-ur-win32-shippable/opt: KTJg6AKwRPqwIY-D-7uKpw - partials-signing-ur-win64-aarch64-shippable/opt: ZxHFMtk7Qrm9Fd0kMHTWEA - partials-signing-ur-win64-shippable/opt: YU5t4bfIQK23jkvAVN4b3Q - partials-signing-uz-linux-shippable/opt: HBGT3o0zTMelPSwETidk0A - partials-signing-uz-linux64-aarch64-shippable/opt: Vsxk6JXaQgmIdnqIfeVSkw - partials-signing-uz-linux64-shippable/opt: UrHxWgO3SxalIpI6TsgqHg - partials-signing-uz-macosx64-shippable/opt: R0PjBfRGSdyRgt7CxMptAQ - partials-signing-uz-win32-shippable/opt: NgmFLAIETQi5wUghtbaM-A - partials-signing-uz-win64-aarch64-shippable/opt: VljE3Cm-SU64eSZE25RfuA - partials-signing-uz-win64-shippable/opt: aodf_Wk_TGy2srkrmW-dTg - partials-signing-vi-linux-shippable/opt: VQ-CaLIASiSqdlzCjrSv5Q - partials-signing-vi-linux64-aarch64-shippable/opt: ZUfz_zs_TkKOtIbu5JAtug - partials-signing-vi-linux64-shippable/opt: at7-hdKPTcCaa5CFn5S9jw - partials-signing-vi-macosx64-shippable/opt: WL42HtJETPOvfKTlzQE-OQ - partials-signing-vi-win32-shippable/opt: RxI-2bHCS_irM3fKwEobDA - partials-signing-vi-win64-aarch64-shippable/opt: E8C6H5BFSsG8MCWMF9BQ3A - partials-signing-vi-win64-shippable/opt: MptFufNRTJGkEbQoYL5Pbw - partials-signing-win32-shippable/opt: HoyOSB9rRNeEx1nXtxj0Yw - partials-signing-win64-aarch64-shippable/opt: UyHiN3g4ROCNBRpr77yAqQ - partials-signing-win64-shippable/opt: DLqI4nQDTpiKFv5Nm9OyRA - partials-signing-xh-linux-shippable/opt: GZ42GnBMSJWDd7Ov_Cgl4Q - partials-signing-xh-linux64-aarch64-shippable/opt: d8blKdKjTLCRg8k3fsgkjA - partials-signing-xh-linux64-shippable/opt: WdbRA4E6Qi6TGfnr6TCISQ - partials-signing-xh-macosx64-shippable/opt: U94CNmXzSWyHIRL4YdN0Lw - partials-signing-xh-win32-shippable/opt: K4HsTjtsQ4-eDeXeRAyz8Q - partials-signing-xh-win64-aarch64-shippable/opt: YLikAGPXSYyrRYp5fPuMMQ - partials-signing-xh-win64-shippable/opt: IdthiNKsSK6YaLF3U2Q7Yg - partials-signing-zh-CN-linux-shippable/opt: YKdRS7tgQyKcEwdZDLS7ig - partials-signing-zh-CN-linux64-aarch64-shippable/opt: AQI9mp9gSG6V_zP2-VE3KA - partials-signing-zh-CN-linux64-shippable/opt: DSVgq0hRQK69lXP8aii43A - partials-signing-zh-CN-macosx64-shippable/opt: IX5iZi3xSA-4-Ln0XMESRg - partials-signing-zh-CN-win32-shippable/opt: QhKh57JvSzepfzKNjD4vfA - partials-signing-zh-CN-win64-aarch64-shippable/opt: QaqLxN3XT6KHVxrYcnjpEA - partials-signing-zh-CN-win64-shippable/opt: dFa3EnuBT3K6NhD5yhnj6g - partials-signing-zh-TW-linux-shippable/opt: WVtkLMtJSjmZr-IKOVlBNQ - partials-signing-zh-TW-linux64-aarch64-shippable/opt: PFJsA_t2TT2aB33u8gCvIQ - partials-signing-zh-TW-linux64-shippable/opt: NbbpEjbYQBCe9X5t20QRvQ - partials-signing-zh-TW-macosx64-shippable/opt: FtFqskPdQA-Twcdkx7OCjA - partials-signing-zh-TW-win32-shippable/opt: EBzllPPQRdeFRCyl5DmkZg - partials-signing-zh-TW-win64-aarch64-shippable/opt: Ezb2Gv_RQYS1oBpQasB35w - partials-signing-zh-TW-win64-shippable/opt: Q4oO0lKCTaCzktvJ5q3vbA - partials-sk-linux-shippable/opt: P5Zmo95SSZS3E_MjdyMSNA - partials-sk-linux64-aarch64-shippable/opt: I5dUZfVKTpaYkBNGywqeng - partials-sk-linux64-shippable/opt: MjbwXz9aS3eGnyE6XOIEsg - partials-sk-macosx64-shippable/opt: T36T1I-fSzqGcmurt9tfMg - partials-sk-win32-shippable/opt: AhGkkyVpTcOCI1DufVd18w - partials-sk-win64-aarch64-shippable/opt: QeEIWEDuR6OxVqotytriyg - partials-sk-win64-shippable/opt: WyTossreQOOyxuO4FtnauA - partials-skr-linux-shippable/opt: X8Yut0c6QMi-l8nvBmRatQ - partials-skr-linux64-aarch64-shippable/opt: Vf_bl6G7TpeqruZgQJqBrw - partials-skr-linux64-shippable/opt: ByDIVQqpT_-NsAervl75bg - partials-skr-macosx64-shippable/opt: FJqLSCLkS8qPfyty9Ho2uQ - partials-skr-win32-shippable/opt: W7ZqDKWXT7SfYW7Rp1qVSA - partials-skr-win64-aarch64-shippable/opt: KCf5jH3TTaqDmf0wQZURzA - partials-skr-win64-shippable/opt: DPYlI1WvSXClPA0zAVQtiA - partials-sl-linux-shippable/opt: SEG86SQsTZyeWdyfJlgAeA - partials-sl-linux64-aarch64-shippable/opt: YH6ox0ELTLWCVP5YogIoLA - partials-sl-linux64-shippable/opt: bVkYpungQYiq__vT6PcEmQ - partials-sl-macosx64-shippable/opt: KeGIce3SRk-SHLhjJ_294A - partials-sl-win32-shippable/opt: aKuw9pt2Qz2uBrcodRgWsQ - partials-sl-win64-aarch64-shippable/opt: WM9Gv-6ETIWQyFbPA0BFcg - partials-sl-win64-shippable/opt: dPaF_XJXQC-gm8gRznz5Fw - partials-son-linux-shippable/opt: N1LOFVjcRTuEQaUYRlzFIw - partials-son-linux64-aarch64-shippable/opt: C5rqkZLsRnmUwaxTR4pVDg - partials-son-linux64-shippable/opt: eTLNlXc7RLiby4pcTjRA3A - partials-son-macosx64-shippable/opt: Yhw33oyIQtK0xsBi2qf20w - partials-son-win32-shippable/opt: SvWd_BG6ThORdLWe95slYA - partials-son-win64-aarch64-shippable/opt: HdATeeUGQsiI8JJhxT5CNw - partials-son-win64-shippable/opt: RUU25QsdRJeIl7wHdPHoOg - partials-sq-linux-shippable/opt: fVsce6N_RmC4CONQPLopEQ - partials-sq-linux64-aarch64-shippable/opt: NDVlH7zJRVeOb_d1CBjD-Q - partials-sq-linux64-shippable/opt: IU2MVG1QT1SG02Jw6O-5kw - partials-sq-macosx64-shippable/opt: LtJ8H0OQQ26AvknZsOwrYg - partials-sq-win32-shippable/opt: O_R_5fsTQ7Kyk3eDzpp4Mw - partials-sq-win64-aarch64-shippable/opt: M8fkcSnMQg6zCAQiI9PTOA - partials-sq-win64-shippable/opt: NcyVPN5aQYCSeTKAmZLm5w - partials-sr-linux-shippable/opt: e_Wh63oqSSO8EJeAuDpyXQ - partials-sr-linux64-aarch64-shippable/opt: bwigvAgtSCGhwYJaYKc7pw - partials-sr-linux64-shippable/opt: J3jOB5l6S2mxSzWYNouK2Q - partials-sr-macosx64-shippable/opt: Bc3ipuJVQ6G8rAg-QtgStg - partials-sr-win32-shippable/opt: TxAiJ9SoTvm8QDmifTtD7w - partials-sr-win64-aarch64-shippable/opt: aEJrM-rxRXCysBAqB2gB4Q - partials-sr-win64-shippable/opt: EySPx6JxQ9SNY5YwZ5pAhw - partials-sv-SE-linux-shippable/opt: Rw8mB-fvQTK2nAQ8b35WIA - partials-sv-SE-linux64-aarch64-shippable/opt: SgGTU29jRuG3UGMQbobkYQ - partials-sv-SE-linux64-shippable/opt: G0cQYlmlQECpDmR1ygDwxw - partials-sv-SE-macosx64-shippable/opt: Sxhcf-8ITLyj1CGFVnMnLw - partials-sv-SE-win32-shippable/opt: LQFdVwu6SdaWfwdo7HlvbA - partials-sv-SE-win64-aarch64-shippable/opt: f7Z2zmEJQxyPd2cNLzuYBA - partials-sv-SE-win64-shippable/opt: d8UCiyANT5a68MOCb-EYvQ - partials-szl-linux-shippable/opt: Cy6ioe5RQGqT96Xxgi2R8Q - partials-szl-linux64-aarch64-shippable/opt: EzCcqHlGTC2JUQPIYRGvXA - partials-szl-linux64-shippable/opt: b0-oSMcRQr6AUZy1The_ew - partials-szl-macosx64-shippable/opt: RYZl1ScAQm-8R66054UCQQ - partials-szl-win32-shippable/opt: EraW-gMoRjSocKLAZYN4sg - partials-szl-win64-aarch64-shippable/opt: VzuJ30fRQ1awmnC191Vslw - partials-szl-win64-shippable/opt: M5K6WjLcT_aRbEaeAGTTXA - partials-ta-linux-shippable/opt: djFFkx0LRKi7c01ptEeoFQ - partials-ta-linux64-aarch64-shippable/opt: N0LFkqJgQTmxP9cJuxdd1A - partials-ta-linux64-shippable/opt: Tc3W1V7sRMWJzkOA_8pLaQ - partials-ta-macosx64-shippable/opt: dPj44g8uRX-IbeH_SNEW6A - partials-ta-win32-shippable/opt: BkbYKWycQ4CrSUDr9XqtLg - partials-ta-win64-aarch64-shippable/opt: H4Xk7ugST8qiMSXs-GXT-A - partials-ta-win64-shippable/opt: LoB794JNTlG7brJjlRfPtA - partials-te-linux-shippable/opt: FfrIg0OVTXKWGdRZ-zfibQ - partials-te-linux64-aarch64-shippable/opt: dY0JzfK0RGeTw0DGnOkMAQ - partials-te-linux64-shippable/opt: FbXeteDsRq-L4JxKeOIL7g - partials-te-macosx64-shippable/opt: amywsM6CQeKcZgFCsv5pZg - partials-te-win32-shippable/opt: B4kmHoR5Q9SY8kFBP-ZeLw - partials-te-win64-aarch64-shippable/opt: Ru9VtpVeRRa4annS5Vtvzw - partials-te-win64-shippable/opt: CG63lBSzRY6UTQk0CXxGNQ - partials-tg-linux-shippable/opt: JnyRWmG5RFmsS4Ifxa6pPw - partials-tg-linux64-aarch64-shippable/opt: B91XUhUxRkuIm7aM4XGKZQ - partials-tg-linux64-shippable/opt: PoryQRF_Saew3ZPL4ThOFQ - partials-tg-macosx64-shippable/opt: NmgjEYXBToOCLtJj3wMptg - partials-tg-win32-shippable/opt: MVMm5ELnR8WVW0WM05RhCw - partials-tg-win64-aarch64-shippable/opt: CCtH-6kaRGuEHRSzqBWdRQ - partials-tg-win64-shippable/opt: METYsH_JRlu1Dxgr2c4ZZA - partials-th-linux-shippable/opt: CzXt_L5URHa8L-oX0sj7tA - partials-th-linux64-aarch64-shippable/opt: U2IHwPfqTTWZkt29wtBycg - partials-th-linux64-shippable/opt: WXRgKOFFT1K28GaVEqXy9g - partials-th-macosx64-shippable/opt: Hnu6Cq4IRcWqAaNuI1kFmA - partials-th-win32-shippable/opt: MQ3a9WATStKrXQzXyL7mpQ - partials-th-win64-aarch64-shippable/opt: SfQZzf1jSKu8wkhPUOYDIg - partials-th-win64-shippable/opt: UjGXqarXTRuQnuBoFf4Jsw - partials-tl-linux-shippable/opt: fod-AhaURMC-YBv2aXxykw - partials-tl-linux64-aarch64-shippable/opt: dA63iQVUSTiF3BT_nUFSwA - partials-tl-linux64-shippable/opt: S5hl5Mx2QS-0JBwlHC2n9Q - partials-tl-macosx64-shippable/opt: HehlDbMYSOW_9-wDFOS8dg - partials-tl-win32-shippable/opt: P6soArOlTGSWKI--5Sjiwg - partials-tl-win64-aarch64-shippable/opt: dkuHzh0nSBqFL7IXE2sFZg - partials-tl-win64-shippable/opt: XnKdcuEETrK5tmTrWJkPrQ - partials-tr-linux-shippable/opt: WDqDQjRxSceTe-yWsYP0YA - partials-tr-linux64-aarch64-shippable/opt: cvDj7G4HRf2Zf3ufo_Af7w - partials-tr-linux64-shippable/opt: HHzDcx_aRo6spWZ8b9fmrg - partials-tr-macosx64-shippable/opt: DVZWiWbASvO-nLw2barheA - partials-tr-win32-shippable/opt: K1Y78yesQb-JtWkQZCh__Q - partials-tr-win64-aarch64-shippable/opt: MuenH0yWTnuwXoGXF57Gvw - partials-tr-win64-shippable/opt: K7ssxqhBT3id0U_XZnpi4A - partials-trs-linux-shippable/opt: EIwS1FpHTKmfhMyRo8qXiA - partials-trs-linux64-aarch64-shippable/opt: dJVQKWyPRP2FTD5IA9TihA - partials-trs-linux64-shippable/opt: SDf7DzTeQAK0KoAhTyTdNg - partials-trs-macosx64-shippable/opt: WnsbxmVtTJSjZMyctxtuWg - partials-trs-win32-shippable/opt: NCfDC8_iSRaCv7vvWTLFWg - partials-trs-win64-aarch64-shippable/opt: CKsWW1QATSaBgeCi2CrTwQ - partials-trs-win64-shippable/opt: FggQKNgNR_qW6by5oCv1nA - partials-uk-linux-shippable/opt: ACFvZGISQ3iuAtbo52OZHQ - partials-uk-linux64-aarch64-shippable/opt: XEUsnfNiQs-W1yTACvNwNg - partials-uk-linux64-shippable/opt: fJd3HSOLQ6GYqa2YDwDSTA - partials-uk-macosx64-shippable/opt: doK1w5KGS8CmdGGW4g9JSA - partials-uk-win32-shippable/opt: PS0LdAy8RCWe1xM3yNPloQ - partials-uk-win64-aarch64-shippable/opt: CC9GfqkrRNumrLDRKJ0uCg - partials-uk-win64-shippable/opt: dTbJ7C65TfyN7CMoKtdqWA - partials-ur-linux-shippable/opt: E5ku6r6MT6KgRgkehpGZcQ - partials-ur-linux64-aarch64-shippable/opt: eBr-d2CGTsWGcV-4BvezUg - partials-ur-linux64-shippable/opt: O_DS5hvQRLqJAzGrPuTO8w - partials-ur-macosx64-shippable/opt: WSV5UwesR3O4t7sER2dl0A - partials-ur-win32-shippable/opt: OHIdtxPlRtW9tbt3b1qX5g - partials-ur-win64-aarch64-shippable/opt: JZR-M37JQ2CIB8cpusw4Tg - partials-ur-win64-shippable/opt: Etmjz3gST4-hGLD36xQpjw - partials-uz-linux-shippable/opt: D6utZRflRgSiyx47mDo_HA - partials-uz-linux64-aarch64-shippable/opt: adLznt-vSP-s-Trj_LPtUQ - partials-uz-linux64-shippable/opt: Y8d1lNf_QTKtyThjCGJRzw - partials-uz-macosx64-shippable/opt: drErMdOySymcVguT78KYaA - partials-uz-win32-shippable/opt: UaK_d7c7TwyFbecTRuT7Tg - partials-uz-win64-aarch64-shippable/opt: DjLI6PNUS1mJyaBkGlhzhg - partials-uz-win64-shippable/opt: a6l5NDRPR1yHNcq29jXWiA - partials-vi-linux-shippable/opt: adyzoewZSRqx5Rbm-mcbpw - partials-vi-linux64-aarch64-shippable/opt: ErD8aYWHT6eRqtcheVJGlw - partials-vi-linux64-shippable/opt: BRjnZPPYRuyG_-PDIjd8_Q - partials-vi-macosx64-shippable/opt: Ea-8VG61RcmXd6qhIyL5DQ - partials-vi-win32-shippable/opt: RESUGQXdQCiRy_5m5vTL4Q - partials-vi-win64-aarch64-shippable/opt: Wttq4xVnRBmmCYh2aOzj1w - partials-vi-win64-shippable/opt: eRKM0b9iQbKWyIdwJtmB2g - partials-win32-shippable/opt: TvfOGqcVTKWvdw8VYg0urg - partials-win64-aarch64-shippable/opt: TjcKC3OUR3iKyPrzxfUz6w - partials-win64-shippable/opt: fQuW6r9XRAatMfoJxo59QQ - partials-xh-linux-shippable/opt: DLPOWFaGSjipMqwjNkPxNA - partials-xh-linux64-aarch64-shippable/opt: RKJh-ANIS7Wh7UPdsKkrCA - partials-xh-linux64-shippable/opt: VLjOBZIqRUye1HDalWhpxA - partials-xh-macosx64-shippable/opt: BWY037IKTvacdEebY0_vHQ - partials-xh-win32-shippable/opt: KmqoyJReRZSAOLvn3AMmkQ - partials-xh-win64-aarch64-shippable/opt: KwxJhMTuRlOQ_WFGnXzTNg - partials-xh-win64-shippable/opt: KJk8ZSFeTgm0w5YdPShHNw - partials-zh-CN-linux-shippable/opt: RE8xs2a5TRWhjjX4Fxe75w - partials-zh-CN-linux64-aarch64-shippable/opt: bcCqlhz8TV-JAm_QiC1Tfg - partials-zh-CN-linux64-shippable/opt: IdYy41fVQ_W_ykgkVSH9Uw - partials-zh-CN-macosx64-shippable/opt: GlCkVKpuRWK9MeVwZSyr2A - partials-zh-CN-win32-shippable/opt: aCWubT6_TvmZA4Wd6d626g - partials-zh-CN-win64-aarch64-shippable/opt: Ff0hD4P2THWQP-keyNYv-g - partials-zh-CN-win64-shippable/opt: bnYr8ygTSkKNqHMfWj5-0A - partials-zh-TW-linux-shippable/opt: ekJXnDkIRUu1wmHqOnJJdg - partials-zh-TW-linux64-aarch64-shippable/opt: J7C3CK40Sg2vJW911TGljg - partials-zh-TW-linux64-shippable/opt: T_N2eL6SRQW6erllyN1jmQ - partials-zh-TW-macosx64-shippable/opt: au3ozgqCT--Y9f4z0DRcNg - partials-zh-TW-win32-shippable/opt: cz-m5AA2Tna4FMD-kRJ_dQ - partials-zh-TW-win64-aarch64-shippable/opt: FiGOA5mkTUmo-YZXIIO_vw - partials-zh-TW-win64-shippable/opt: XVq1MStqTxGfMYrWjS23tQ - partials-zucchini-ach-linux-shippable/opt: GKICdUgxSKO-g2MRbKrWxg - partials-zucchini-ach-linux64-aarch64-shippable/opt: EJzewboXRbSQLy8FfEnUPw - partials-zucchini-ach-linux64-shippable/opt: FzyneePpR_aCuwUdYLYT1w - partials-zucchini-ach-macosx64-shippable/opt: cvasrzJURe21VGMVtUpHwg - partials-zucchini-ach-win32-shippable/opt: TIB3LbfdTOKBQHG2d-Gv3g - partials-zucchini-ach-win64-aarch64-shippable/opt: R5tiSvs_Ri249wuJE0Je7g - partials-zucchini-ach-win64-shippable/opt: OUlFB3cvT0m9pyJVmu91Fw - partials-zucchini-af-linux-shippable/opt: ELNmBSPzRButIdwlyx9pJA - partials-zucchini-af-linux64-aarch64-shippable/opt: VIYBpcuDT9uV0RonMa6-aQ - partials-zucchini-af-linux64-shippable/opt: Y7PxrzXsS7e65bUVhfMsqQ - partials-zucchini-af-macosx64-shippable/opt: R7E-nUnMQqOzIfLuJh-VPQ - partials-zucchini-af-win32-shippable/opt: ep9qHi_nRU68w8AH3sh8IQ - partials-zucchini-af-win64-aarch64-shippable/opt: BvTW-GFDQoWjGNlq5WYZWg - partials-zucchini-af-win64-shippable/opt: F8b6MphjTsaupVdPe7ok8A - partials-zucchini-an-linux-shippable/opt: cRXEBfaaTmu-8Knf0sEMyw - partials-zucchini-an-linux64-aarch64-shippable/opt: QTQpd2unRfqIVZ8Wx0N3eA - partials-zucchini-an-linux64-shippable/opt: FtoDdLVhSN-yfa3b9BcfOw - partials-zucchini-an-macosx64-shippable/opt: AMVubQfKToahBs0vZA2AfA - partials-zucchini-an-win32-shippable/opt: VPf7H9JuTjqQVYNZUFjguQ - partials-zucchini-an-win64-aarch64-shippable/opt: NF48JsduRNif_12HFhsb1w - partials-zucchini-an-win64-shippable/opt: IIb0gtSFS-my4r5I00LITw - partials-zucchini-ar-linux-shippable/opt: UT-uZi1WSmyqOE6Y9yLctA - partials-zucchini-ar-linux64-aarch64-shippable/opt: RhuJqUanS8mSkzTOdwvG4A - partials-zucchini-ar-linux64-shippable/opt: cpB7ZifJQSK3Sj8sksqWRQ - partials-zucchini-ar-macosx64-shippable/opt: OSoHIdxIT4GORkqYrMGotA - partials-zucchini-ar-win32-shippable/opt: F34gYnmVRimKaW1x0e47tw - partials-zucchini-ar-win64-aarch64-shippable/opt: GuXyr31xTFG1a4so1ZIzPQ - partials-zucchini-ar-win64-shippable/opt: YMw_Keq1RS6rxvIdsq3jTQ - partials-zucchini-ast-linux-shippable/opt: A7dcUHfGQ2aQUQyU0RMerQ - partials-zucchini-ast-linux64-aarch64-shippable/opt: SPM9HY6sRAeW6QYVGDy-9g - partials-zucchini-ast-linux64-shippable/opt: KXBmVDTBQoqD-DP__vtIPQ - partials-zucchini-ast-macosx64-shippable/opt: D1fg3EaWQdGDStS8S9wawA - partials-zucchini-ast-win32-shippable/opt: fdm75FBFRIuvIDWWGKwIyw - partials-zucchini-ast-win64-aarch64-shippable/opt: LQpsAdYyR-qNTmIIor4LkQ - partials-zucchini-ast-win64-shippable/opt: aERy_6TXR6a2Y-yUJofLPw - partials-zucchini-az-linux-shippable/opt: Di5mVeNkQNWtz19rGmvkPQ - partials-zucchini-az-linux64-aarch64-shippable/opt: HHcjci4ySNiwW2CA5HyKmQ - partials-zucchini-az-linux64-shippable/opt: CRokhYO-Qce2iu26v1dT7Q - partials-zucchini-az-macosx64-shippable/opt: RdRB-oeoRLiVMXloCHXKVQ - partials-zucchini-az-win32-shippable/opt: MTxHnx6RST-zEAKU6qHrOg - partials-zucchini-az-win64-aarch64-shippable/opt: TNPH1hsqSoyPIGd5umFlLA - partials-zucchini-az-win64-shippable/opt: EGSGdB-jQISKdojDs091kg - partials-zucchini-be-linux-shippable/opt: XfKoH0pFR0Gb9OfuJMdKZg - partials-zucchini-be-linux64-aarch64-shippable/opt: RnIhx0GoSdittqukbcuu-Q - partials-zucchini-be-linux64-shippable/opt: SmF7bPCQTI-MRhZ9oogYpw - partials-zucchini-be-macosx64-shippable/opt: Zy7UQgN9Rn-rgYv9LbyXDQ - partials-zucchini-be-win32-shippable/opt: QZuMNJ8rRWmCwnCq8DP89w - partials-zucchini-be-win64-aarch64-shippable/opt: PhvUVOlyRBqPEa8ezxeabQ - partials-zucchini-be-win64-shippable/opt: YPshS1p_RGSf3VhQzU6cgg - partials-zucchini-bg-linux-shippable/opt: dF7C9ti2QHqYcHcl1xdc1A - partials-zucchini-bg-linux64-aarch64-shippable/opt: GQJkyU2QRkuePu2uI96ZkA - partials-zucchini-bg-linux64-shippable/opt: KU2I5pkPStS9wRooORkWCw - partials-zucchini-bg-macosx64-shippable/opt: E8aL9IjFTyW_dGufC5Q5MA - partials-zucchini-bg-win32-shippable/opt: fXRppsMWRgusXd-gg_JfIg - partials-zucchini-bg-win64-aarch64-shippable/opt: BxawmSvCTD2qb7yoJAvo-w - partials-zucchini-bg-win64-shippable/opt: XclKfemrR6-TJl1gI8Bx0g - partials-zucchini-bn-linux-shippable/opt: dI21pC54TOSvu5etxkEEqg - partials-zucchini-bn-linux64-aarch64-shippable/opt: YY_0xz9TRpOjuBKalEl6dQ - partials-zucchini-bn-linux64-shippable/opt: N-KdledLRqi305YdxpcdFw - partials-zucchini-bn-macosx64-shippable/opt: eoEy-u8JTM2WFIsOO8qZwA - partials-zucchini-bn-win32-shippable/opt: ZU6KbDTpQUmYGoovtsMAxQ - partials-zucchini-bn-win64-aarch64-shippable/opt: XMmJI8f_Tg2b4bW89nFwzw - partials-zucchini-bn-win64-shippable/opt: ayYlaiZKQ2yggXb8F8DpbQ - partials-zucchini-br-linux-shippable/opt: E06hihsbSim8AcEQrjQJgw - partials-zucchini-br-linux64-aarch64-shippable/opt: QiGCMTqGSxG4NURkt28rPw - partials-zucchini-br-linux64-shippable/opt: OLdWyjthS4ys8COerj7ovw - partials-zucchini-br-macosx64-shippable/opt: Ujh5erg8QTWnNaY3gmdKZw - partials-zucchini-br-win32-shippable/opt: DM68BT5DTS-tHN19p9SBhA - partials-zucchini-br-win64-aarch64-shippable/opt: VJASHebVQdm_6LRqsOkqrw - partials-zucchini-br-win64-shippable/opt: adOtWrIPR9uQEQ888GXu6w - partials-zucchini-bs-linux-shippable/opt: Nvk_h1wdSESZgOImnR9E-A - partials-zucchini-bs-linux64-aarch64-shippable/opt: XBpD5FmIT9Gzo1JHGRufPQ - partials-zucchini-bs-linux64-shippable/opt: I1ryhkOoRTSRnt7yNuBJvg - partials-zucchini-bs-macosx64-shippable/opt: TgaeI8g6RDOAr0XHiUX5Uw - partials-zucchini-bs-win32-shippable/opt: R_jsiS1BS6GD4b6ARPmwjg - partials-zucchini-bs-win64-aarch64-shippable/opt: RWB3Uxy5RGKMa2RIh4hm5g - partials-zucchini-bs-win64-shippable/opt: BO1xAbt9S7K7YHjrMkjoXw - partials-zucchini-ca-linux-shippable/opt: TXfx8kgwSLyQT1hJPw4y6Q - partials-zucchini-ca-linux64-aarch64-shippable/opt: cAEEsiyHSJ-HBd8-XE8ffg - partials-zucchini-ca-linux64-shippable/opt: DPFg0k3IR0-0QlhtUvKtTg - partials-zucchini-ca-macosx64-shippable/opt: WZcB9oNBQpWhkW4zG3jINg - partials-zucchini-ca-valencia-linux-shippable/opt: UB_jE4ggQ0u82DW3Zy7bGg - partials-zucchini-ca-valencia-linux64-aarch64-shippable/opt: Zx4HsQZESsOzMMJ5TN5-IQ - partials-zucchini-ca-valencia-linux64-shippable/opt: M-bedS4iQBySj2fmwC3AsA - partials-zucchini-ca-valencia-macosx64-shippable/opt: Fo8aa_YsSomRKDhWGzzB-A - partials-zucchini-ca-valencia-win32-shippable/opt: baMyKfErRCya7_BSRorOvA - partials-zucchini-ca-valencia-win64-aarch64-shippable/opt: TftL2b_gQvuh0sg9cqwU0A - partials-zucchini-ca-valencia-win64-shippable/opt: NqJS2EM6QryKxjzWtwhiYQ - partials-zucchini-ca-win32-shippable/opt: CcCoklZqSZuzJ6MUiWTB5g - partials-zucchini-ca-win64-aarch64-shippable/opt: Fwv85rqNQyGFnTGWKTo6dQ - partials-zucchini-ca-win64-shippable/opt: KyKF-A67QvqUS15ZliO4hg - partials-zucchini-cak-linux-shippable/opt: HkP1UNdLQ2-KwP47V1RPWg - partials-zucchini-cak-linux64-aarch64-shippable/opt: OY_7u9uWQOyyHW0ZiJTaVA - partials-zucchini-cak-linux64-shippable/opt: HjyB7WXfSV6LFtugNXGmKQ - partials-zucchini-cak-macosx64-shippable/opt: G3BpEL8lSA-4E5s_OT_TKQ - partials-zucchini-cak-win32-shippable/opt: Ye6APH_rSN-m-JJWtb-PMg - partials-zucchini-cak-win64-aarch64-shippable/opt: YOb2Yzn-RGayYC0J2fBmVw - partials-zucchini-cak-win64-shippable/opt: TXZambhvSF2Uc2hFaJquuw - partials-zucchini-cs-linux-shippable/opt: MUcwK2okQWqHU2nXTLJbeQ - partials-zucchini-cs-linux64-aarch64-shippable/opt: OyQRWtMgQWay82hKRi3iYA - partials-zucchini-cs-linux64-shippable/opt: FUqpSDCXTzO9Qi6ulWiD2Q - partials-zucchini-cs-macosx64-shippable/opt: K1pobAkuQGO6WadylEwlpw - partials-zucchini-cs-win32-shippable/opt: Mc6usv-IS_-NKjQDsyfQMA - partials-zucchini-cs-win64-aarch64-shippable/opt: MQMmkImeTAKNl20KfdczpA - partials-zucchini-cs-win64-shippable/opt: d_t-7tl8Rr2SqaQlfjvWGw - partials-zucchini-cy-linux-shippable/opt: Ge7H0yaPQHuc26f1iLPDFw - partials-zucchini-cy-linux64-aarch64-shippable/opt: SCXBBDc7Q_OdRAxy_Glk9g - partials-zucchini-cy-linux64-shippable/opt: GVE4HOUdTHOxfAL7MOH9NQ - partials-zucchini-cy-macosx64-shippable/opt: fkN43JA-Q_-K1mlZZahOZg - partials-zucchini-cy-win32-shippable/opt: Zc0z5XxXRNGEpt8lf_6wJw - partials-zucchini-cy-win64-aarch64-shippable/opt: JQ349GP3Szax26v78ee6hg - partials-zucchini-cy-win64-shippable/opt: fIJCjdsyQrmT5sT6j_PElw - partials-zucchini-da-linux-shippable/opt: PTbmKqySRtORlEzceaPWCQ - partials-zucchini-da-linux64-aarch64-shippable/opt: MG1rdbXPQNi5js_czYz6OA - partials-zucchini-da-linux64-shippable/opt: Gpv1F0ZrTQynYvW9-1_Jkg - partials-zucchini-da-macosx64-shippable/opt: T9q7J8Z0T0-Dpunqju4XAA - partials-zucchini-da-win32-shippable/opt: btublxmRSzO5APLMHqD-Jw - partials-zucchini-da-win64-aarch64-shippable/opt: f_7m2Z72RiOznQWm1L1QXw - partials-zucchini-da-win64-shippable/opt: CQdwYGu2TJSGjm8-Oya4rA - partials-zucchini-de-linux-shippable/opt: JUo60ttvTZ6Hynr2Y3cZ5A - partials-zucchini-de-linux64-aarch64-shippable/opt: PVsvv7NXRRWmc1dPEzQwuA - partials-zucchini-de-linux64-shippable/opt: YU5AZd4vT_KZ1b_DATzENQ - partials-zucchini-de-macosx64-shippable/opt: WEjjMI6YQbyaFSg8jymgBg - partials-zucchini-de-win32-shippable/opt: FLnZY-JTS4ubqAtzh-zajQ - partials-zucchini-de-win64-aarch64-shippable/opt: BMj4VjetQQOaJTpZgAiIhg - partials-zucchini-de-win64-shippable/opt: E7rNewq6RLW4SjxYN9ZOcw - partials-zucchini-dsb-linux-shippable/opt: Yk45YfJbQ6eTFjS3FAB0UQ - partials-zucchini-dsb-linux64-aarch64-shippable/opt: VyUTaruCRxaMkpfViO923A - partials-zucchini-dsb-linux64-shippable/opt: AzM0HlvvQrayivAChzTfcw - partials-zucchini-dsb-macosx64-shippable/opt: HLKYmjnQRVWbtyzImCBdtg - partials-zucchini-dsb-win32-shippable/opt: UVQdwnSYSKmLnBnNiJ5rkw - partials-zucchini-dsb-win64-aarch64-shippable/opt: PSJWG4SsRkCzwWf10VynDw - partials-zucchini-dsb-win64-shippable/opt: a0GIgP0mR9GFOY2Y4QuaKg - partials-zucchini-el-linux-shippable/opt: ZKZEGxy5S9Wg-gpdU4luRQ - partials-zucchini-el-linux64-aarch64-shippable/opt: VFP-Yn-_QX62bP7PfCVSBw - partials-zucchini-el-linux64-shippable/opt: HC71DcT_QfuwLNeNA0QIdg - partials-zucchini-el-macosx64-shippable/opt: f-uHtB_PT6W0lXKKEH-kvQ - partials-zucchini-el-win32-shippable/opt: AqWiWbn8TUizNFnF15XT3A - partials-zucchini-el-win64-aarch64-shippable/opt: L6WuKerYS3iNZW7nU5Ajqw - partials-zucchini-el-win64-shippable/opt: A7MUpcTXQqmzN7EseFnZug - partials-zucchini-en-CA-linux-shippable/opt: NMBgOfLTR2-E2gZrVM8bAw - partials-zucchini-en-CA-linux64-aarch64-shippable/opt: DIhrpzoPT7OL5WjdAaJpCg - partials-zucchini-en-CA-linux64-shippable/opt: Tw3kouf2R3mC0T9OG3HgCQ - partials-zucchini-en-CA-macosx64-shippable/opt: QLyZYB13QjagfUW46G5pQA - partials-zucchini-en-CA-win32-shippable/opt: cL-s-VQfTEiHkXtoIlRdig - partials-zucchini-en-CA-win64-aarch64-shippable/opt: cPR1E9yPTXWnwM4b_88-rg - partials-zucchini-en-CA-win64-shippable/opt: d25n6B10QM6dbxnaFDEFFg - partials-zucchini-en-GB-linux-shippable/opt: QOJlNYOFSEawcj2te9FkpA - partials-zucchini-en-GB-linux64-aarch64-shippable/opt: DwjP6yFpS1iS7sp4u1sxVg - partials-zucchini-en-GB-linux64-shippable/opt: MBbFPOsZQu-eGati7pdVww - partials-zucchini-en-GB-macosx64-shippable/opt: bydpWPwbRzWuID8IesGzDg - partials-zucchini-en-GB-win32-shippable/opt: c8xAb656T8ScljpcZy7wug - partials-zucchini-en-GB-win64-aarch64-shippable/opt: Q_9NnnYKSTa_jgiDM0CKpg - partials-zucchini-en-GB-win64-shippable/opt: GZWpFLxDTd2NyHkWlXp86A - partials-zucchini-eo-linux-shippable/opt: etPX_DgCRDalcR0O6123JA - partials-zucchini-eo-linux64-aarch64-shippable/opt: RbyXzV7uSk24q4SjsrqfzQ - partials-zucchini-eo-linux64-shippable/opt: YVcx247ORcG-VeBolKr8jA - partials-zucchini-eo-macosx64-shippable/opt: DESoKgIdRlO-cQ7KGG4O5Q - partials-zucchini-eo-win32-shippable/opt: Xn35UrG2S36Z9M0QTCKWsA - partials-zucchini-eo-win64-aarch64-shippable/opt: aoyBB29-TXOtH7JVV4r7VA - partials-zucchini-eo-win64-shippable/opt: VvXEYvFmTceGF9_18Fwx2A - partials-zucchini-es-AR-linux-shippable/opt: J1JMh05sSMKr0AHEZFLFeQ - partials-zucchini-es-AR-linux64-aarch64-shippable/opt: c78mr_DHRVCrJUA72yQn3w - partials-zucchini-es-AR-linux64-shippable/opt: IV2HCba4REyu2L0ZIjIRng - partials-zucchini-es-AR-macosx64-shippable/opt: RqqtkkvdT5a0iR-PbhrG3w - partials-zucchini-es-AR-win32-shippable/opt: IpSFKa8GTFKeHB1nAKXaig - partials-zucchini-es-AR-win64-aarch64-shippable/opt: VJNTGMzQRGmO964rShpk7Q - partials-zucchini-es-AR-win64-shippable/opt: ebr6CHUwRP-uHECy65d3sg - partials-zucchini-es-CL-linux-shippable/opt: ZAvcHs8sS2uKsqEspf_Qbg - partials-zucchini-es-CL-linux64-aarch64-shippable/opt: GASYvOPKRS6Vh28tU-yiTQ - partials-zucchini-es-CL-linux64-shippable/opt: af097BSiTZOx9tCbxgpAuA - partials-zucchini-es-CL-macosx64-shippable/opt: MkEV8wkaQJqT1AepkLz_Vg - partials-zucchini-es-CL-win32-shippable/opt: LMFoysHrQeWMN_DMRnxIvw - partials-zucchini-es-CL-win64-aarch64-shippable/opt: UfxpE-1qTIe7Bu_YdL-3sg - partials-zucchini-es-CL-win64-shippable/opt: JcEVYhjfRPC9_OLnOTwNiA - partials-zucchini-es-ES-linux-shippable/opt: AQUJiGQ0Sp643tSR0S31Nw - partials-zucchini-es-ES-linux64-aarch64-shippable/opt: frnE0ecKT7mmxjr1qQOEiQ - partials-zucchini-es-ES-linux64-shippable/opt: Yf7Lyp3RTpKCQXoBBVbfxA - partials-zucchini-es-ES-macosx64-shippable/opt: ZqlQ7QrYQmqaSnaWWuww7w - partials-zucchini-es-ES-win32-shippable/opt: W5C3c44uR32RhTrq9NbC9Q - partials-zucchini-es-ES-win64-aarch64-shippable/opt: aQ7AutwISF2qS0aOSrb84g - partials-zucchini-es-ES-win64-shippable/opt: fEnK_1zERpypkAXNdlzqxA - partials-zucchini-es-MX-linux-shippable/opt: SNAGG0zPRLC3u7zLx4bptA - partials-zucchini-es-MX-linux64-aarch64-shippable/opt: bP22XxXCQ7KVjr8m9X2Glw - partials-zucchini-es-MX-linux64-shippable/opt: bxOBREQXTz2GMwUNbITLTQ - partials-zucchini-es-MX-macosx64-shippable/opt: Et4W-gDAQcWr-ZiVIIPLJQ - partials-zucchini-es-MX-win32-shippable/opt: CTvW2Rh7SWmEC6rNClPrEQ - partials-zucchini-es-MX-win64-aarch64-shippable/opt: f04ceUz1RJ-LB0yFRwdZjQ - partials-zucchini-es-MX-win64-shippable/opt: NbpPIxSqQLOXOkS3fgHA1Q - partials-zucchini-et-linux-shippable/opt: czkIw7hYSX21fgPfI_LN0A - partials-zucchini-et-linux64-aarch64-shippable/opt: XO8vw9ExSEGFPuGfq00Q0Q - partials-zucchini-et-linux64-shippable/opt: Bu0h91BaRFi0T4knzlrIqA - partials-zucchini-et-macosx64-shippable/opt: d3cTZBmQS22IgMyiYlf5Nw - partials-zucchini-et-win32-shippable/opt: NqUQSCN7Tn23VxS3F4KI0Q - partials-zucchini-et-win64-aarch64-shippable/opt: AfyL9Rp8SwqbveokvYzldw - partials-zucchini-et-win64-shippable/opt: DOAgIuseTvuunsUvcS9Egw - partials-zucchini-eu-linux-shippable/opt: Y95masJKS7-1-s0KKugRzw - partials-zucchini-eu-linux64-aarch64-shippable/opt: BSkuNwbcQfWDpwLFT5Q21g - partials-zucchini-eu-linux64-shippable/opt: J68RQKm9Sry0QV6ll5Ac1w - partials-zucchini-eu-macosx64-shippable/opt: L3ddHs89QdSOHv9lH4jRTA - partials-zucchini-eu-win32-shippable/opt: eaikNQhCRACFDD9EBiErfg - partials-zucchini-eu-win64-aarch64-shippable/opt: eOtYiRPMT1CXgcd8TFk1Fg - partials-zucchini-eu-win64-shippable/opt: cGC3awPTQHercf4AAFlq1w - partials-zucchini-fa-linux-shippable/opt: eah3gwV3Q_2Ny4wtjpSjuQ - partials-zucchini-fa-linux64-aarch64-shippable/opt: bcCrY5J8TiOSdmn_v6L-lQ - partials-zucchini-fa-linux64-shippable/opt: czI0PPMRRWKaEDLIuNrgBw - partials-zucchini-fa-macosx64-shippable/opt: elVkNPdmSvCHMVJyElWCXw - partials-zucchini-fa-win32-shippable/opt: f0MxsAHFTN-pu4WQk9SuPA - partials-zucchini-fa-win64-aarch64-shippable/opt: QGSf3W7cTdqTwr5nAhs3nQ - partials-zucchini-fa-win64-shippable/opt: SF6T4sBjQdCKy9_2puOttA - partials-zucchini-ff-linux-shippable/opt: UQlR4A5pRZ276J5U-M6UFg - partials-zucchini-ff-linux64-aarch64-shippable/opt: MX41YrBcTTqhCk--PYRe4A - partials-zucchini-ff-linux64-shippable/opt: R5CB27GKQC603lMUnchfeA - partials-zucchini-ff-macosx64-shippable/opt: YrF8vxoQTIOIYbFTEYLJTQ - partials-zucchini-ff-win32-shippable/opt: bIIIzpGfQwyqxHknCXG1bQ - partials-zucchini-ff-win64-aarch64-shippable/opt: JSYzAsAITHKaQzganuRtQw - partials-zucchini-ff-win64-shippable/opt: VA9BN9gDTieLufP3bpDTBA - partials-zucchini-fi-linux-shippable/opt: Jn-rJcOhTGm0D_T1CxKsaA - partials-zucchini-fi-linux64-aarch64-shippable/opt: QlBmj_EwTl6RitHxda04nw - partials-zucchini-fi-linux64-shippable/opt: EdHaFN3RTeeuf7_q6_S9Vw - partials-zucchini-fi-macosx64-shippable/opt: D-CmhnVrTfymU1nsJ7dcmQ - partials-zucchini-fi-win32-shippable/opt: EUT7YVV9TzGXgP_0vxATUg - partials-zucchini-fi-win64-aarch64-shippable/opt: WnoTFA-dSqqpczcTXVSuOQ - partials-zucchini-fi-win64-shippable/opt: HgcsMb1nQ46mDJew0OXdmQ - partials-zucchini-fr-linux-shippable/opt: dUJsduVCQfeu5JEjLyXTDQ - partials-zucchini-fr-linux64-aarch64-shippable/opt: dIzuegWZQmy5G49JvcZOSw - partials-zucchini-fr-linux64-shippable/opt: eVTqy3AcSx6LgJUxSeGsRw - partials-zucchini-fr-macosx64-shippable/opt: MzLWeeaCTwS06Yg4oZQH1A - partials-zucchini-fr-win32-shippable/opt: D6vtyAiYTvSCiVdQsomOnw - partials-zucchini-fr-win64-aarch64-shippable/opt: J5dxAcPnT9aEYJzatXey5g - partials-zucchini-fr-win64-shippable/opt: aApuJQP0QkihF1tL-5vU1g - partials-zucchini-fur-linux-shippable/opt: WDlBht-0RuWjVeAdVEqJfA - partials-zucchini-fur-linux64-aarch64-shippable/opt: CJSgCcMcSLiSN8yYIjTT3Q - partials-zucchini-fur-linux64-shippable/opt: KjLHyBbGQMCWc3uL8YHJuw - partials-zucchini-fur-macosx64-shippable/opt: Xck2iu2dTBS1TReoqybM5A - partials-zucchini-fur-win32-shippable/opt: bcoNuCY1THqZzmL5GY1isg - partials-zucchini-fur-win64-aarch64-shippable/opt: bARZ3lhPQ_-bdbutC3OMjA - partials-zucchini-fur-win64-shippable/opt: TAtsZ-6GQBmLrQnzDzluiA - partials-zucchini-fy-NL-linux-shippable/opt: BDIjOiOnQwKmPIXe23tHig - partials-zucchini-fy-NL-linux64-aarch64-shippable/opt: J5p-6r7ES8610mxfh9phsw - partials-zucchini-fy-NL-linux64-shippable/opt: Tn2vHWVeQDCLFR73ZRz2iA - partials-zucchini-fy-NL-macosx64-shippable/opt: HWhUhrBpRCG3gzhCzPB-Xg - partials-zucchini-fy-NL-win32-shippable/opt: C8a9_G8pR9CS-vxun7lnOQ - partials-zucchini-fy-NL-win64-aarch64-shippable/opt: YLpxiCXASLmjNpCIhbW32A - partials-zucchini-fy-NL-win64-shippable/opt: PokjPGXwRMqK3kXXs6ixlA - partials-zucchini-ga-IE-linux-shippable/opt: CTbr886ZQGqHwNCONjtHLg - partials-zucchini-ga-IE-linux64-aarch64-shippable/opt: QpTtwZ00TyK9ONRpTzWCkg - partials-zucchini-ga-IE-linux64-shippable/opt: KgKJ4k-9QxqthVFkVFhXVw - partials-zucchini-ga-IE-macosx64-shippable/opt: Qk-Vi4GeTgCulnr_cWL5EA - partials-zucchini-ga-IE-win32-shippable/opt: bnQ2JqvQSM2GOjpZwKcx8A - partials-zucchini-ga-IE-win64-aarch64-shippable/opt: Wc6JCExPTuOSZs3MVnUDwg - partials-zucchini-ga-IE-win64-shippable/opt: Z7DIXc05Rk-YxJfPK_MGiw - partials-zucchini-gd-linux-shippable/opt: Ts5eZ1PQTr-FhNUPfb5wsA - partials-zucchini-gd-linux64-aarch64-shippable/opt: fzr82q4ASqaeAvh57tY2IA - partials-zucchini-gd-linux64-shippable/opt: ZmSLZw6iT8ONSIXgaaragw - partials-zucchini-gd-macosx64-shippable/opt: HFYjTl19T7qHmLRcm7V2Jw - partials-zucchini-gd-win32-shippable/opt: S-miwDgLRoStul4sK-XsJA - partials-zucchini-gd-win64-aarch64-shippable/opt: DzgqsAG-TgO-1JF0D3FLRw - partials-zucchini-gd-win64-shippable/opt: dg_3ZujYRRefpFkufe7PzQ - partials-zucchini-gl-linux-shippable/opt: O1a7v7IzQTioH3js4ThPZw - partials-zucchini-gl-linux64-aarch64-shippable/opt: W4NbB7CLSxeYcunrxpcrhg - partials-zucchini-gl-linux64-shippable/opt: RExzxNBNQdije17OV4jOzQ - partials-zucchini-gl-macosx64-shippable/opt: GN47v0q7TRGALHSKHcvjjw - partials-zucchini-gl-win32-shippable/opt: PkwGR_L2Tr6zal6HXEY1zQ - partials-zucchini-gl-win64-aarch64-shippable/opt: HKi-m0cnSfyyC9BUHpeiyw - partials-zucchini-gl-win64-shippable/opt: VCiA7OU1SyOV1gsPC-CRrA - partials-zucchini-gn-linux-shippable/opt: Hpf9d6ZQTmGrNR7g_Ft-Og - partials-zucchini-gn-linux64-aarch64-shippable/opt: NfYEPXUhSRKY8DNsIOGrAQ - partials-zucchini-gn-linux64-shippable/opt: F0b_d7oxSBus6vTA2nGf7w - partials-zucchini-gn-macosx64-shippable/opt: EOkANqZJSbihQZCfc39xlA - partials-zucchini-gn-win32-shippable/opt: YUcWSIFzQV6YEpncFbl6Yg - partials-zucchini-gn-win64-aarch64-shippable/opt: DPEsRYMRRIiab2S5idxsHg - partials-zucchini-gn-win64-shippable/opt: ddR4ixGnTxy2jVYpjhUd0w - partials-zucchini-gu-IN-linux-shippable/opt: QG9qto-tSKiJkkIp6usSug - partials-zucchini-gu-IN-linux64-aarch64-shippable/opt: Gtxd5wZ0TPi8dKXwB8K1Lg - partials-zucchini-gu-IN-linux64-shippable/opt: IHzYNWyzQ0ibGyYx90SN_Q - partials-zucchini-gu-IN-macosx64-shippable/opt: QPdwGlw2S8e3FnM_LI23Dw - partials-zucchini-gu-IN-win32-shippable/opt: e5CpDMNvTm-6Iz9OmWBokg - partials-zucchini-gu-IN-win64-aarch64-shippable/opt: S1-7lBlKSMiczyqURLHdoA - partials-zucchini-gu-IN-win64-shippable/opt: NJh7smf5RAusw86rVEByLQ - partials-zucchini-he-linux-shippable/opt: SkwdVXcDRdeb4UOpnaXpjw - partials-zucchini-he-linux64-aarch64-shippable/opt: XNS33LKIR4WkRReEOVEGwA - partials-zucchini-he-linux64-shippable/opt: UrZMKgfCS7ixFC1MGKD4aA - partials-zucchini-he-macosx64-shippable/opt: cdPTMchQQESLh7CIq1eDKw - partials-zucchini-he-win32-shippable/opt: N3yr5FaHTC2SPYGBG_vTzQ - partials-zucchini-he-win64-aarch64-shippable/opt: JGe5F7PIQhGzRXb_QyqVAg - partials-zucchini-he-win64-shippable/opt: RDkK71v6QjCK6PLdnlapjg - partials-zucchini-hi-IN-linux-shippable/opt: TEcnYl1HTxCgzuIfF_UCOg - partials-zucchini-hi-IN-linux64-aarch64-shippable/opt: eOVSfydCRfuIGxpq7vHRng - partials-zucchini-hi-IN-linux64-shippable/opt: UFYP1kJjRD-XtPcsA2ySIw - partials-zucchini-hi-IN-macosx64-shippable/opt: X5wrQZseRou-RqHXZK9vSQ - partials-zucchini-hi-IN-win32-shippable/opt: edo0REAuTuKmBuvHjQlgJA - partials-zucchini-hi-IN-win64-aarch64-shippable/opt: dDD3bDZcQces1iOip0lbwA - partials-zucchini-hi-IN-win64-shippable/opt: eKOa6Ev0Tvi2bJNjuKwZhg - partials-zucchini-hr-linux-shippable/opt: VKnmtWCSREaFBzzLQMBw5A - partials-zucchini-hr-linux64-aarch64-shippable/opt: W8XjYzfVQ7y2NjM054HfWw - partials-zucchini-hr-linux64-shippable/opt: f6GjuEvhR6mb8aMxOhuNlA - partials-zucchini-hr-macosx64-shippable/opt: Nu-7vRGGSnCT8m8NB14_eg - partials-zucchini-hr-win32-shippable/opt: IERR1IYEROuy5zJqRKUzaA - partials-zucchini-hr-win64-aarch64-shippable/opt: VtHwKvJ2RHu8BQ3njtWwsA - partials-zucchini-hr-win64-shippable/opt: KSKzTsOqRmask_gWpEZgvA - partials-zucchini-hsb-linux-shippable/opt: HHeaajFXTleQFBB8E5F3WA - partials-zucchini-hsb-linux64-aarch64-shippable/opt: ccaDjzPZRlaMW2eMHUPqHA - partials-zucchini-hsb-linux64-shippable/opt: XK-NtGi8Saa8-t44-kfGvA - partials-zucchini-hsb-macosx64-shippable/opt: bxz5smKoR0WOdbg_NBKfKw - partials-zucchini-hsb-win32-shippable/opt: UuUznJoOQXqquJFo7ehOBQ - partials-zucchini-hsb-win64-aarch64-shippable/opt: OAW0JbuYQAqappC75XAHhg - partials-zucchini-hsb-win64-shippable/opt: a7iZh5P4SZG61QF-1txKqQ - partials-zucchini-hu-linux-shippable/opt: X-xaEiHRTG-oisdboeG-Lg - partials-zucchini-hu-linux64-aarch64-shippable/opt: R8GSFZ3fQK2DDKMHGpKwlg - partials-zucchini-hu-linux64-shippable/opt: FNMLJTiBTFiFI5-b51S9SA - partials-zucchini-hu-macosx64-shippable/opt: WuTyI9C7S4u9ZgB6neRoAQ - partials-zucchini-hu-win32-shippable/opt: LWyl6CngRjC5BMf2xAyPbA - partials-zucchini-hu-win64-aarch64-shippable/opt: D4vxxkwNSyWp-6MzpOGiJw - partials-zucchini-hu-win64-shippable/opt: V_2mhGN9Q4y-hV_w6XJWRQ - partials-zucchini-hy-AM-linux-shippable/opt: WihOzAAIRKKdsqMYU3_DrQ - partials-zucchini-hy-AM-linux64-aarch64-shippable/opt: cjU5-ClUQImZg0dNYuMA1Q - partials-zucchini-hy-AM-linux64-shippable/opt: UCXobd9XQ6ytmaZJpmskNQ - partials-zucchini-hy-AM-macosx64-shippable/opt: QK4FRGWITuOinVR3eS7mCg - partials-zucchini-hy-AM-win32-shippable/opt: JOx6W2U6RR6yEqqZ-YUm7g - partials-zucchini-hy-AM-win64-aarch64-shippable/opt: D-QVEczdQKeCkrAENW91EQ - partials-zucchini-hy-AM-win64-shippable/opt: XYzYMy6rR1qtzAHCZJ5Yuw - partials-zucchini-ia-linux-shippable/opt: cAS6C7TBSe-HuZw-8DMRug - partials-zucchini-ia-linux64-aarch64-shippable/opt: cgyNmdPPQa61md2Md8chZw - partials-zucchini-ia-linux64-shippable/opt: OQnZOjWQR8Cpgizy5lhihQ - partials-zucchini-ia-macosx64-shippable/opt: T1jRmhcVQVaNAQ7YQgRwsw - partials-zucchini-ia-win32-shippable/opt: eK2mS6UjQYKvkiIAQAbg5A - partials-zucchini-ia-win64-aarch64-shippable/opt: A13q8NYiQ4GagRkfp6UvSg - partials-zucchini-ia-win64-shippable/opt: Y0E79O0kRNeQx8zcPGZa3g - partials-zucchini-id-linux-shippable/opt: d_XXranURQ6g3Uid5TiRFw - partials-zucchini-id-linux64-aarch64-shippable/opt: NcQIVHWOS1iRSTmDgtlGwA - partials-zucchini-id-linux64-shippable/opt: TzkBoREiToOwao9GSwBW7w - partials-zucchini-id-macosx64-shippable/opt: LoeC1hglTyqI8vdaDj2eIw - partials-zucchini-id-win32-shippable/opt: HyTa7usXQHaa2zH1Z7Cthg - partials-zucchini-id-win64-aarch64-shippable/opt: ZPfTNnrmT9a_z5XPU0sXjA - partials-zucchini-id-win64-shippable/opt: OhnIOeH7Q1WzJv-LgYnTMw - partials-zucchini-is-linux-shippable/opt: PhzYfSBBTNyLcC-iWcdd7A - partials-zucchini-is-linux64-aarch64-shippable/opt: TZ-aBWJlS_6OPDUyBN0ryQ - partials-zucchini-is-linux64-shippable/opt: XYIbiKvaS6mFbyWBj4qlrQ - partials-zucchini-is-macosx64-shippable/opt: XrwjB_NeS_m-QxRUJQVmww - partials-zucchini-is-win32-shippable/opt: JvaGJRv4Q7mZ1N1fMhHiqw - partials-zucchini-is-win64-aarch64-shippable/opt: dk7cywVPTfui91_1cEB5Pw - partials-zucchini-is-win64-shippable/opt: ae0UQTTEQo6YhRxtL1ZD0g - partials-zucchini-it-linux-shippable/opt: cBI4IlCFQ7KoLM78bT4KVA - partials-zucchini-it-linux64-aarch64-shippable/opt: KvGFlED7QC-AxuonM_fckg - partials-zucchini-it-linux64-shippable/opt: eiBDNd5eTXa5_jMmKB2UGg - partials-zucchini-it-macosx64-shippable/opt: aCsp6jb4S6GmZ4MeTWU81Q - partials-zucchini-it-win32-shippable/opt: AdVhsJPzRW6inaUzJuqJbQ - partials-zucchini-it-win64-aarch64-shippable/opt: IKM9ePl-Q2GQiMHHMYHCdQ - partials-zucchini-it-win64-shippable/opt: I1MubNdJQ4q1-q5AI3lJjQ - partials-zucchini-ja-JP-mac-macosx64-shippable/opt: I90R_RFAS8mM7DqGBFZMNg - partials-zucchini-ja-linux-shippable/opt: NkG2iWfISaWe3RpFHKgCgw - partials-zucchini-ja-linux64-aarch64-shippable/opt: bJh_T3twSnu-naROc-0wSw - partials-zucchini-ja-linux64-shippable/opt: L5y-i1CGQLa3bxk65uowGw - partials-zucchini-ja-win32-shippable/opt: aaf-Msb4QnWj1uB-ZzjdEA - partials-zucchini-ja-win64-aarch64-shippable/opt: K9apyzAxSfuPCNMNWM0yGA - partials-zucchini-ja-win64-shippable/opt: DC8NtKFVT9yLfXtSkMAwmw - partials-zucchini-ka-linux-shippable/opt: NxsXdeA0SKizOTvrC1tGWA - partials-zucchini-ka-linux64-aarch64-shippable/opt: TwW4L1QRSPCN_w2dQVMQkg - partials-zucchini-ka-linux64-shippable/opt: SW54NfvTQbmrobYn3bma_Q - partials-zucchini-ka-macosx64-shippable/opt: cUKOApgWTqKRV5rfco-i6g - partials-zucchini-ka-win32-shippable/opt: GYiHhAzqT8Cbr5tslGJEgQ - partials-zucchini-ka-win64-aarch64-shippable/opt: Oohr344fTeqDHJQEawFGIA - partials-zucchini-ka-win64-shippable/opt: LpgyHWSgR5KglILopnOwMg - partials-zucchini-kab-linux-shippable/opt: Qty1g1W8TG-ADj7Vul5-LA - partials-zucchini-kab-linux64-aarch64-shippable/opt: HY2Pfr1NRM6G_negcImS6w - partials-zucchini-kab-linux64-shippable/opt: VbbxP75VRKCZ-bfoWUSJWg - partials-zucchini-kab-macosx64-shippable/opt: WT9Cc_xDTEGjXNqyzG2Oxg - partials-zucchini-kab-win32-shippable/opt: asJCSd4EQ_e_-xjZly3gmg - partials-zucchini-kab-win64-aarch64-shippable/opt: RySfK1SLQ8ajSs7wQPAVCw - partials-zucchini-kab-win64-shippable/opt: ROne7ZysSuKNqPZDT3Z42w - partials-zucchini-kk-linux-shippable/opt: CBzRyf-0Ru-8OaBS8cJaKA - partials-zucchini-kk-linux64-aarch64-shippable/opt: Sk3tbpbNQz-f5stGM-1_Rg - partials-zucchini-kk-linux64-shippable/opt: f54qZ1EJSWWURHky01U0hw - partials-zucchini-kk-macosx64-shippable/opt: b0mBnfhjQGCTD53JvYB_gQ - partials-zucchini-kk-win32-shippable/opt: eG7AW-I8T2yNspSmjcbd0A - partials-zucchini-kk-win64-aarch64-shippable/opt: c4niGc4tQDqFYqHgf4nfPg - partials-zucchini-kk-win64-shippable/opt: HDiMYV8ySSiR53dYf1BUSw - partials-zucchini-km-linux-shippable/opt: fc3OfAX1QDy4jNVSyyGrZg - partials-zucchini-km-linux64-aarch64-shippable/opt: PQh9VqXeTDusVS2mTMilRA - partials-zucchini-km-linux64-shippable/opt: OGTKeyckRa6ZslH8-YXkwQ - partials-zucchini-km-macosx64-shippable/opt: A6ONJGPvR5OsZ3nwWceEoQ - partials-zucchini-km-win32-shippable/opt: OxKgvgZvSJCkZrld2JrfJA - partials-zucchini-km-win64-aarch64-shippable/opt: U68qp-aFRiykg7KlmZREAA - partials-zucchini-km-win64-shippable/opt: VgmHnDcJSzGEZGfgi67Z2A - partials-zucchini-kn-linux-shippable/opt: BrwCWOaHTginhYgNF1SkYw - partials-zucchini-kn-linux64-aarch64-shippable/opt: Pp0Bwms6T9KfPaXEXmIqZA - partials-zucchini-kn-linux64-shippable/opt: D824g1hmT0OM47PD1y9toQ - partials-zucchini-kn-macosx64-shippable/opt: EW-wME-6TC-h1Iezopcd4g - partials-zucchini-kn-win32-shippable/opt: Aw_n34NVSpemVCBEATOn7w - partials-zucchini-kn-win64-aarch64-shippable/opt: WgAVUptJQ-ii3WN1EMaPZQ - partials-zucchini-kn-win64-shippable/opt: OVWG3WIKS_S0sjtpVxY9KQ - partials-zucchini-ko-linux-shippable/opt: ONem83X0RheYFRDPR55C0Q - partials-zucchini-ko-linux64-aarch64-shippable/opt: c6HyOJkiSAquzCUqpgojJQ - partials-zucchini-ko-linux64-shippable/opt: Yc-ADP40SFOL8TAeYSuzbw - partials-zucchini-ko-macosx64-shippable/opt: ffNJKB0iTsy7WcZNrH_U2w - partials-zucchini-ko-win32-shippable/opt: VJYo9Rw6TaCdyOJhJNup7g - partials-zucchini-ko-win64-aarch64-shippable/opt: VmXh7WRlQEG90EDPg72STA - partials-zucchini-ko-win64-shippable/opt: c4jfHVmwQAyYv1KJ5mva8g - partials-zucchini-lij-linux-shippable/opt: Sx32uoVnTJahKFUQC7_jqw - partials-zucchini-lij-linux64-aarch64-shippable/opt: aPHVddVJT2W1caL7n0-1Ag - partials-zucchini-lij-linux64-shippable/opt: L1HQDkmTReWR1lWrRGsusA - partials-zucchini-lij-macosx64-shippable/opt: VHwJsy_3Q_C1DsRWQBg2ww - partials-zucchini-lij-win32-shippable/opt: GKzvmBPOQQSuRBw8xJMfYA - partials-zucchini-lij-win64-aarch64-shippable/opt: Y2CJhn_xTimDFEK2lMsE5g - partials-zucchini-lij-win64-shippable/opt: Om_kaHnsTeaQ_Vfed3lTdw - partials-zucchini-linux-shippable/opt: BbfVLiE1Tb6d8eX_C2QUeQ - partials-zucchini-linux64-aarch64-shippable/opt: bYmJEZLsQP6X_bDtqKqubA - partials-zucchini-linux64-shippable/opt: KzUAtD7FQn-VqxjWcc6WEA - partials-zucchini-lt-linux-shippable/opt: bvV4YYn3RhG6awXwCCr46g - partials-zucchini-lt-linux64-aarch64-shippable/opt: Tx8kXUmDS9aOufl7YyeKJg - partials-zucchini-lt-linux64-shippable/opt: I5lSOoHCR_CA2JHYflVNhA - partials-zucchini-lt-macosx64-shippable/opt: aUyASOqzT2aJ5Xd4KBFD3g - partials-zucchini-lt-win32-shippable/opt: cyb1jCjDQS2K-TPCGW1YLw - partials-zucchini-lt-win64-aarch64-shippable/opt: Spb1WRptTXeHxWhqfUYl4g - partials-zucchini-lt-win64-shippable/opt: KbDf2dSfSzy1oG1qKDuXzw - partials-zucchini-lv-linux-shippable/opt: QeFjitZyTxq9ehZ_vwmfRg - partials-zucchini-lv-linux64-aarch64-shippable/opt: b8jxwzYKQFSiMX1rBcTqwg - partials-zucchini-lv-linux64-shippable/opt: Cy70zCLRRzS64CjIoTausQ - partials-zucchini-lv-macosx64-shippable/opt: JB6hV79EQX-u4FpbLIBZKg - partials-zucchini-lv-win32-shippable/opt: U9zi7egjRUKt6yC0aBYFaQ - partials-zucchini-lv-win64-aarch64-shippable/opt: bUSr1bs5QCGXPT-hVQLTGw - partials-zucchini-lv-win64-shippable/opt: EOMpWUS7QzmVx-g3ikdi4w - partials-zucchini-macosx64-shippable/opt: al_9fq-eRDyDgn3usEasPQ - partials-zucchini-mk-linux-shippable/opt: b-wVvHg9S_aCAvuWiMlPKA - partials-zucchini-mk-linux64-aarch64-shippable/opt: Dokv2CCkThCMX5Wg7m0y4A - partials-zucchini-mk-linux64-shippable/opt: FkOvT9p-Tx2g_VMfU13YWQ - partials-zucchini-mk-macosx64-shippable/opt: H5L8t9TrR7u3r1xLfZ0OSg - partials-zucchini-mk-win32-shippable/opt: TB0OFeD2Toequo6uyX0oVw - partials-zucchini-mk-win64-aarch64-shippable/opt: AGxZlZ3SStuWlmSCNb1yLw - partials-zucchini-mk-win64-shippable/opt: XRKgBY60TOOlG_0_Hf4AnA - partials-zucchini-mr-linux-shippable/opt: E3ljAg4sQ32zy9pIKDCXvQ - partials-zucchini-mr-linux64-aarch64-shippable/opt: UUJCKv4TTBWoCfRdxy2-Ag - partials-zucchini-mr-linux64-shippable/opt: KRI2MRnYTcOVJZ2j-uzJUw - partials-zucchini-mr-macosx64-shippable/opt: BOJyxUJwTwKjoNRo7-GBvA - partials-zucchini-mr-win32-shippable/opt: du8YJT5rQFqAyutKoNvVvA - partials-zucchini-mr-win64-aarch64-shippable/opt: aS3SpLIJTjKD6pVSb6-5sg - partials-zucchini-mr-win64-shippable/opt: KyGze1AeSeilpo61jz0nNw - partials-zucchini-ms-linux-shippable/opt: OQ__aqP0Q9WUNUE1hI8mow - partials-zucchini-ms-linux64-aarch64-shippable/opt: FGClAhrQQ6--NyYR_fAaXw - partials-zucchini-ms-linux64-shippable/opt: S3i5uHPbROSsiK_nMHEOIw - partials-zucchini-ms-macosx64-shippable/opt: D8FvKzsbQ56JQInCWkJebA - partials-zucchini-ms-win32-shippable/opt: W6EDqkGnSOaXSrzNDQG2fA - partials-zucchini-ms-win64-aarch64-shippable/opt: So7PxGicRSm2HOBHGiJD3A - partials-zucchini-ms-win64-shippable/opt: UvrTc3xFQUu71jKWRf3n2A - partials-zucchini-my-linux-shippable/opt: MfWCNKdbQ5-k6iH55YlJBA - partials-zucchini-my-linux64-aarch64-shippable/opt: QZIULbniSwaGToW94VMauQ - partials-zucchini-my-linux64-shippable/opt: GTkh8vvxSWOJWpuI7wpibA - partials-zucchini-my-macosx64-shippable/opt: Ng7FXEuKRjeJUFZFoSRX9Q - partials-zucchini-my-win32-shippable/opt: WaETNNiyRZKjQXJrvyodxw - partials-zucchini-my-win64-aarch64-shippable/opt: WjgsHumlTmOtTKJJPGVhhw - partials-zucchini-my-win64-shippable/opt: Mpt6qxGDTouHKABLeBmsPg - partials-zucchini-nb-NO-linux-shippable/opt: PDwpWySwQ6G6Kj7zN7Xtig - partials-zucchini-nb-NO-linux64-aarch64-shippable/opt: EJ4gg16eRUqSt-CLcEkgZw - partials-zucchini-nb-NO-linux64-shippable/opt: V_9Un3RXSouNqShgDjtOHg - partials-zucchini-nb-NO-macosx64-shippable/opt: G4kpyBR5TX-3HoncGp9HSg - partials-zucchini-nb-NO-win32-shippable/opt: UrFBuCMsS_6jQuP9XSAyxA - partials-zucchini-nb-NO-win64-aarch64-shippable/opt: G7kAIhhHSReehxAAtXpk0w - partials-zucchini-nb-NO-win64-shippable/opt: VBmrZrtdSrO3wK0HMU81hg - partials-zucchini-ne-NP-linux-shippable/opt: bC-G5XiISQ-JIcwpFjfPyg - partials-zucchini-ne-NP-linux64-aarch64-shippable/opt: bXbg0P2ETtyQCgNtfNmKRw - partials-zucchini-ne-NP-linux64-shippable/opt: IJRUkVaTRD2eLeNDP7Cuxw - partials-zucchini-ne-NP-macosx64-shippable/opt: Peh4JhWUSU2g6Ddxkq_U9g - partials-zucchini-ne-NP-win32-shippable/opt: SEBA1VkITneUmgCX8V-ZHA - partials-zucchini-ne-NP-win64-aarch64-shippable/opt: a8GHwQHeQEG4J2mPSSSWRg - partials-zucchini-ne-NP-win64-shippable/opt: U9MHR6UTQeG0H-LcGiRcnw - partials-zucchini-nl-linux-shippable/opt: BHyM_M41RyqW78tLIXXLDg - partials-zucchini-nl-linux64-aarch64-shippable/opt: WqOZCAnRSbOWgcMW_Pg71g - partials-zucchini-nl-linux64-shippable/opt: Ehpm9HubQJeyTO0kxn2XDA - partials-zucchini-nl-macosx64-shippable/opt: LpgQo_ZiR-iuHDDlQtwO3Q - partials-zucchini-nl-win32-shippable/opt: Rqd9_8ZSQM208hadyl4tBA - partials-zucchini-nl-win64-aarch64-shippable/opt: RaZA0cZFQ8uXpIwuYnCh6Q - partials-zucchini-nl-win64-shippable/opt: Yn3hnX1NRmSLwA8Vku3UEg - partials-zucchini-nn-NO-linux-shippable/opt: NqMAOauARlOtNn3Zz9jvBA - partials-zucchini-nn-NO-linux64-aarch64-shippable/opt: MXAJUtNuSA-ahGaISlKpOg - partials-zucchini-nn-NO-linux64-shippable/opt: W573Zup8TIm3c9JBAfP9lw - partials-zucchini-nn-NO-macosx64-shippable/opt: BeAv70IHR0iWR4AditPEPw - partials-zucchini-nn-NO-win32-shippable/opt: Cd1Pl4CCTH-t0SyHnbO1Ww - partials-zucchini-nn-NO-win64-aarch64-shippable/opt: f0Zy73h3RUG3BN1z2SKn4Q - partials-zucchini-nn-NO-win64-shippable/opt: Rj4cWKUaSseLKQhYfXTOmw - partials-zucchini-oc-linux-shippable/opt: OY6XT7n1Q6KpQ_vPJbOChQ - partials-zucchini-oc-linux64-aarch64-shippable/opt: O135GN66Qxu4Mlz5CkaVfw - partials-zucchini-oc-linux64-shippable/opt: CCgtgYDfQp69aMhjBoGSQw - partials-zucchini-oc-macosx64-shippable/opt: U_ZLX11QT_at9UDsWrwEnQ - partials-zucchini-oc-win32-shippable/opt: GyeeMCSNSnKPKjeEmCM1Kw - partials-zucchini-oc-win64-aarch64-shippable/opt: DyRfALjPSwShKeDgIoDPTg - partials-zucchini-oc-win64-shippable/opt: dc_umLKiS2Oaj-OnJH2mng - partials-zucchini-pa-IN-linux-shippable/opt: YWgEincYQqaQbqQ3h0DxEA - partials-zucchini-pa-IN-linux64-aarch64-shippable/opt: HpbFT34lSgOyf7FIqv-dBw - partials-zucchini-pa-IN-linux64-shippable/opt: CeGt9F6bSm2xQBdziwVlyA - partials-zucchini-pa-IN-macosx64-shippable/opt: PTffFSw3SJCSVng9rEgclg - partials-zucchini-pa-IN-win32-shippable/opt: BGzcFHTqS1yPnhbOZ4O6SA - partials-zucchini-pa-IN-win64-aarch64-shippable/opt: PEccwdbKQwKSj_JqzxQykw - partials-zucchini-pa-IN-win64-shippable/opt: d8DXFgKWS7KBYywOyOnjGA - partials-zucchini-pl-linux-shippable/opt: WCc_lCcxRIqptn38pSvTjg - partials-zucchini-pl-linux64-aarch64-shippable/opt: LMCcWeofRCGYYzCb7lplvQ - partials-zucchini-pl-linux64-shippable/opt: XKmNUu8LSmy3iiTFGWFcvQ - partials-zucchini-pl-macosx64-shippable/opt: GQPaNLUdTZu8nSwz9r7Wmw - partials-zucchini-pl-win32-shippable/opt: ObKPUCMKRGywOqwm15zUMA - partials-zucchini-pl-win64-aarch64-shippable/opt: CzZVVZa0QTCWkWjXCPueiQ - partials-zucchini-pl-win64-shippable/opt: L-ZQlRAbSeakQ0IfyD-BAA - partials-zucchini-pt-BR-linux-shippable/opt: TajUI1l5THKoxhsagyE8jQ - partials-zucchini-pt-BR-linux64-aarch64-shippable/opt: Q09_Xd0_T0OtxoLZnf3Tfg - partials-zucchini-pt-BR-linux64-shippable/opt: ffgiaagmRtKzi8Wxqz1xzw - partials-zucchini-pt-BR-macosx64-shippable/opt: Frv0tMDaTRayovkFruiH3A - partials-zucchini-pt-BR-win32-shippable/opt: eyOpWyynSoKB2Zbs6Itthg - partials-zucchini-pt-BR-win64-aarch64-shippable/opt: Xyu-3302So6R9APJS9punw - partials-zucchini-pt-BR-win64-shippable/opt: BATrC4H1Qam-mPiOYFH2Gg - partials-zucchini-pt-PT-linux-shippable/opt: ZOi82_wXRRG11rKCpkr5nw - partials-zucchini-pt-PT-linux64-aarch64-shippable/opt: AQ_q5uyfTuuwRauje46hlA - partials-zucchini-pt-PT-linux64-shippable/opt: UPI6B3bvTYq57ZpM7VML1Q - partials-zucchini-pt-PT-macosx64-shippable/opt: Lwkq_JlWQRe0FpOl5xvUfg - partials-zucchini-pt-PT-win32-shippable/opt: VNzRqgb0SIau06jE3Q4sOA - partials-zucchini-pt-PT-win64-aarch64-shippable/opt: C829QqyRQo-xqMvf-IQiLg - partials-zucchini-pt-PT-win64-shippable/opt: N272RTbiSp6jZVmXBxVBaA - partials-zucchini-rm-linux-shippable/opt: fV1peTf4RViUJvQ0eEm4Dg - partials-zucchini-rm-linux64-aarch64-shippable/opt: eaEEgcz6Rhusuugsf0V-jg - partials-zucchini-rm-linux64-shippable/opt: HMexM3G7RLuVcOt70RfC8w - partials-zucchini-rm-macosx64-shippable/opt: P5-5NhXjQfCHxK4Es5NRcQ - partials-zucchini-rm-win32-shippable/opt: NZ6srDjaSbeNwb3kKeacoQ - partials-zucchini-rm-win64-aarch64-shippable/opt: L21-cLdFT9CuPRwPAwvbJA - partials-zucchini-rm-win64-shippable/opt: Ko2asA2CS16Boy4o-euzXA - partials-zucchini-ro-linux-shippable/opt: NuWoqlgEQW-qg_FUyujRqA - partials-zucchini-ro-linux64-aarch64-shippable/opt: UDGxKDtUR6yOBKhimjMqHw - partials-zucchini-ro-linux64-shippable/opt: ITwyvw1GTRaNWQZllQrhEw - partials-zucchini-ro-macosx64-shippable/opt: QN83Hu9FQu2uNOTcRIRepw - partials-zucchini-ro-win32-shippable/opt: e8jkXSiaS3eSZwvRmzuKzA - partials-zucchini-ro-win64-aarch64-shippable/opt: GH8o-ignQxiTVXzvIxBhsw - partials-zucchini-ro-win64-shippable/opt: YFGM3971RFm9z4rKNGwYmA - partials-zucchini-ru-linux-shippable/opt: MyvkHyc1RXqcPU42SAACWQ - partials-zucchini-ru-linux64-aarch64-shippable/opt: Q6i4l2EFS-6k480S9ETveQ - partials-zucchini-ru-linux64-shippable/opt: dzCGudNvSC6jPez98yDuSw - partials-zucchini-ru-macosx64-shippable/opt: cCebGEBvQkap1ktqP5-4ig - partials-zucchini-ru-win32-shippable/opt: U6zmUGqPT7iu_Y4A_iLRMA - partials-zucchini-ru-win64-aarch64-shippable/opt: O6L4TxLhTN2Bs60_6x64PA - partials-zucchini-ru-win64-shippable/opt: OzN15RnPQK6xmausrrbTpA - partials-zucchini-sat-linux-shippable/opt: Vdi35dxXRHi8meMPvKS5Yg - partials-zucchini-sat-linux64-aarch64-shippable/opt: XBIPKHXSTMyGjwp7NqDkaA - partials-zucchini-sat-linux64-shippable/opt: FkF_rBGLRQmw-q-Zczi8hg - partials-zucchini-sat-macosx64-shippable/opt: Q5JRHbeNQKS36na9HRIBIw - partials-zucchini-sat-win32-shippable/opt: ZhXUxdklRXqSb4S2B-_RQQ - partials-zucchini-sat-win64-aarch64-shippable/opt: B3rykGJzRuyVGXWdhG9iqw - partials-zucchini-sat-win64-shippable/opt: fTjXg5C9QcGcUlrXNjQh9A - partials-zucchini-sc-linux-shippable/opt: FfhhW9CcRtCd8Bxcsqal4Q - partials-zucchini-sc-linux64-aarch64-shippable/opt: cvyloZORR5aY-qLXL_rRWQ - partials-zucchini-sc-linux64-shippable/opt: byWmJ8m8Txm281jxGZAOVw - partials-zucchini-sc-macosx64-shippable/opt: dDYhHGAIRr6qNA8R5E3i3A - partials-zucchini-sc-win32-shippable/opt: czbP3KqyQHetYEzX-J5BBQ - partials-zucchini-sc-win64-aarch64-shippable/opt: JKkZuOF8TSS259TtuQe1vw - partials-zucchini-sc-win64-shippable/opt: JzhNYlWSQ4qoTWBI2bJQWg - partials-zucchini-sco-linux-shippable/opt: UGoJfR0qRvGhrA8q1MpgYA - partials-zucchini-sco-linux64-aarch64-shippable/opt: EKSDMgveQFGdOxErG0i7Xg - partials-zucchini-sco-linux64-shippable/opt: Hqu_xkUKSXa_n_LApJxGjw - partials-zucchini-sco-macosx64-shippable/opt: C_CM_WWoRPG6kTYRlZKNOg - partials-zucchini-sco-win32-shippable/opt: RxUNldYoSSGxvO2UnLytGA - partials-zucchini-sco-win64-aarch64-shippable/opt: cusiC2YrTyaaW9mC8nII1g - partials-zucchini-sco-win64-shippable/opt: IiqP-F3oRNaIx6X6Xtwumw - partials-zucchini-si-linux-shippable/opt: HcXG1eHgRJC1M0bjfItTUg - partials-zucchini-si-linux64-aarch64-shippable/opt: X51FdQgATDCu54MGSqeuuw - partials-zucchini-si-linux64-shippable/opt: JXH3Dq6hT7K5mmwqWxBYBQ - partials-zucchini-si-macosx64-shippable/opt: drVG5RKCRJywZB1fj83OVA - partials-zucchini-si-win32-shippable/opt: eiT_G-OwSIK8dSl9V6hQLg - partials-zucchini-si-win64-aarch64-shippable/opt: MD2nyeqNQACPx35h5oCBgw - partials-zucchini-si-win64-shippable/opt: YulK4si6SpqPgCXNyAqURw - partials-zucchini-sk-linux-shippable/opt: AedGE3Q2QQSbyiax0X1tug - partials-zucchini-sk-linux64-aarch64-shippable/opt: eN9IDh38RIqo-9D6jOfcoQ - partials-zucchini-sk-linux64-shippable/opt: WWFEarYcR6Wz_ODQlGQp1w - partials-zucchini-sk-macosx64-shippable/opt: KGYaXcxvTduIXfsQ4v2E7g - partials-zucchini-sk-win32-shippable/opt: UUidcQQgRXymEu8GvpCkbQ - partials-zucchini-sk-win64-aarch64-shippable/opt: B5OGaaqNQE2SF9kkzvm4tQ - partials-zucchini-sk-win64-shippable/opt: IOuqza8QTc-9N-N_66qnCA - partials-zucchini-skr-linux-shippable/opt: CMse6ELWQo2d5FSrvHkqkw - partials-zucchini-skr-linux64-aarch64-shippable/opt: c-uNqnAJRqiNxqXxVlvsrw - partials-zucchini-skr-linux64-shippable/opt: GQclyJhORGKJgvm3h7d5DQ - partials-zucchini-skr-macosx64-shippable/opt: TFcGPoRoTP2Z3EZzp6W2nA - partials-zucchini-skr-win32-shippable/opt: GFb31ltNQZ6s720cnP0j9w - partials-zucchini-skr-win64-aarch64-shippable/opt: GhAOjdNKR1WUWuKXA7Ag1Q - partials-zucchini-skr-win64-shippable/opt: SgyXS3scTGWvOOGeqs0Mlg - partials-zucchini-sl-linux-shippable/opt: UClKkeUmQ6Gp4Q2nuRKlyg - partials-zucchini-sl-linux64-aarch64-shippable/opt: e6y5x_EUTiq2TZaVtadfkg - partials-zucchini-sl-linux64-shippable/opt: ehPPhI-XSCGe-rUb3HP2qA - partials-zucchini-sl-macosx64-shippable/opt: CCuYsoVISReMpCFtpPSGHA - partials-zucchini-sl-win32-shippable/opt: W7Ml5wNATkqQWcpDRhUW1A - partials-zucchini-sl-win64-aarch64-shippable/opt: DshKMYpdQ3yiJZZnXUIVew - partials-zucchini-sl-win64-shippable/opt: VQbNyoSWQGWgHVoHBORwjg - partials-zucchini-son-linux-shippable/opt: ZEv5sK_ERtiP1F_beuhvng - partials-zucchini-son-linux64-aarch64-shippable/opt: SaL2VUSkSC2OklgjpG_oYw - partials-zucchini-son-linux64-shippable/opt: AcoMFiJDRk61yaVohtKJhA - partials-zucchini-son-macosx64-shippable/opt: f2JPa_aCRauezPoacDKiFw - partials-zucchini-son-win32-shippable/opt: PXqyLAbNToaiVBwtlWCg-w - partials-zucchini-son-win64-aarch64-shippable/opt: YpreaA6mT2WKSSbSwpzPrA - partials-zucchini-son-win64-shippable/opt: furcddWLQkey1U0RHlpG4w - partials-zucchini-sq-linux-shippable/opt: a3Z-aXWCSs2TTeWGx0__jg - partials-zucchini-sq-linux64-aarch64-shippable/opt: GIHUesRlT5-YXLGQOMzMmg - partials-zucchini-sq-linux64-shippable/opt: UD1yMnVCSf2r1FwTNb6KFg - partials-zucchini-sq-macosx64-shippable/opt: ZvfTAeskSYStnwyp3LFIpQ - partials-zucchini-sq-win32-shippable/opt: KYmeTmM9TLS6c4qyCTLwLg - partials-zucchini-sq-win64-aarch64-shippable/opt: TelpN2x0TuWtEsFmHrF24Q - partials-zucchini-sq-win64-shippable/opt: Mrdyi_ZSQHiV9ibxAMAV6Q - partials-zucchini-sr-linux-shippable/opt: CuyN1WBzR5uFydDDPZd5ng - partials-zucchini-sr-linux64-aarch64-shippable/opt: bVirNja2QzWzO9W0wJ_ZMg - partials-zucchini-sr-linux64-shippable/opt: VrKVQ5fIShKbiiDwL0qLHQ - partials-zucchini-sr-macosx64-shippable/opt: CpKTZ8LkTbiO0RSQV9nLpw - partials-zucchini-sr-win32-shippable/opt: WEfdz1TySuK3clQquQpNcg - partials-zucchini-sr-win64-aarch64-shippable/opt: D3LQgSfRRLWWOgvZ15zGsA - partials-zucchini-sr-win64-shippable/opt: O5J_MXBcQpGDX4LeQaX9dA - partials-zucchini-sv-SE-linux-shippable/opt: N301Gf05S8CEPRIYsurnag - partials-zucchini-sv-SE-linux64-aarch64-shippable/opt: flp6Vc6vR9u92T4hMYGybQ - partials-zucchini-sv-SE-linux64-shippable/opt: f_OVeZqZSc2lDS3-ZckYlw - partials-zucchini-sv-SE-macosx64-shippable/opt: a-I88AOnSpW44djyeSZEJg - partials-zucchini-sv-SE-win32-shippable/opt: ZdlVuFZ6Qo-Hy0TYFMLwDQ - partials-zucchini-sv-SE-win64-aarch64-shippable/opt: KhmCb1xzS3CfGTKgG1zc6A - partials-zucchini-sv-SE-win64-shippable/opt: PLAarnmGQJiG8qY-8orb_A - partials-zucchini-szl-linux-shippable/opt: FU0fjf5FTnemlSshAIcZpg - partials-zucchini-szl-linux64-aarch64-shippable/opt: Bc3Rb_YFSna5iK_pJvXh7w - partials-zucchini-szl-linux64-shippable/opt: cti5ZX-TRy-kQZoUeWu1CA - partials-zucchini-szl-macosx64-shippable/opt: TPoumzabSgeEQVeBwXPawQ - partials-zucchini-szl-win32-shippable/opt: MmUw5HugRCaZ08DWTYtaJg - partials-zucchini-szl-win64-aarch64-shippable/opt: eorgwk7tQgq2mSud67Ankg - partials-zucchini-szl-win64-shippable/opt: M5J3RAdxSfms5fl7PPEang - partials-zucchini-ta-linux-shippable/opt: FtS6vgrHR5ebD6rbmsHMlg - partials-zucchini-ta-linux64-aarch64-shippable/opt: Hiv5P6maTH-DUSvmAAsstA - partials-zucchini-ta-linux64-shippable/opt: FxMLTQlkQYGrHNt6MsD5jw - partials-zucchini-ta-macosx64-shippable/opt: AIRcwVQ9SmySd_u9MXCDvw - partials-zucchini-ta-win32-shippable/opt: QzACMCzETkeYOueumIRWKQ - partials-zucchini-ta-win64-aarch64-shippable/opt: O3EUXCGHSAiYZLzCC6yENQ - partials-zucchini-ta-win64-shippable/opt: bdtz5NtiSVS4xHPKfVI4cg - partials-zucchini-te-linux-shippable/opt: Ap_71AGwRzuZpbN805rYtA - partials-zucchini-te-linux64-aarch64-shippable/opt: YkoPIE47S8-o--xdivd2Tg - partials-zucchini-te-linux64-shippable/opt: aIzoyyCqQgiwX3iqCktEsg - partials-zucchini-te-macosx64-shippable/opt: ES3ejxPpRiWeLqyttpRGVA - partials-zucchini-te-win32-shippable/opt: WuJjIHadS06F5zyQjvCGDw - partials-zucchini-te-win64-aarch64-shippable/opt: OhT64EWKSkKNw2K2VBG6fw - partials-zucchini-te-win64-shippable/opt: AGN4cA10SP-oTne56hqoWg - partials-zucchini-tg-linux-shippable/opt: BRkId7fLQmmuLMto_FYULQ - partials-zucchini-tg-linux64-aarch64-shippable/opt: D6HrUrKaTHeFON9hmOxdbQ - partials-zucchini-tg-linux64-shippable/opt: Ky0FC0UGT8-MwGA0IuWatw - partials-zucchini-tg-macosx64-shippable/opt: FACZsRk-Ty6FJG92P7SoeA - partials-zucchini-tg-win32-shippable/opt: D_dJgVOWTNS2Q40jZdxnDw - partials-zucchini-tg-win64-aarch64-shippable/opt: AcCUOLx4QiW5Cery6rT6UA - partials-zucchini-tg-win64-shippable/opt: R8c0AJnHSVCjV4eQXvzHFw - partials-zucchini-th-linux-shippable/opt: VfBF5KTmTrOKGQKMU9ELyw - partials-zucchini-th-linux64-aarch64-shippable/opt: DnZAAt0XQCWBoYm787fRfA - partials-zucchini-th-linux64-shippable/opt: RkHILUqnRo6XhbmrsjNGTA - partials-zucchini-th-macosx64-shippable/opt: faCwK1HIQQ68rNNMUMj3DQ - partials-zucchini-th-win32-shippable/opt: RYKGFQ0wTR2YdESR8oKWZw - partials-zucchini-th-win64-aarch64-shippable/opt: QWl9rIPASwOOY6vqe3vCIA - partials-zucchini-th-win64-shippable/opt: D9keUQd0Tv6vAX7a4p3bcw - partials-zucchini-tl-linux-shippable/opt: OH1mWGtlQy-AYrm8L4YDLQ - partials-zucchini-tl-linux64-aarch64-shippable/opt: Y7fsZ0JrTO-6PyAKT_GnpA - partials-zucchini-tl-linux64-shippable/opt: Tcs4UgL_QTqGz9cw_b-SFQ - partials-zucchini-tl-macosx64-shippable/opt: OETf6mRkSGqnUibY6LY4Ig - partials-zucchini-tl-win32-shippable/opt: NngJyLxSS-WXiIdNLE4-ZQ - partials-zucchini-tl-win64-aarch64-shippable/opt: Olbm__R9QdyuCsl69B8VEA - partials-zucchini-tl-win64-shippable/opt: D5l4fF2OT8aaMH-UOCduIA - partials-zucchini-tr-linux-shippable/opt: Q_f7Yh1fQHqZXbI0U0Nx1Q - partials-zucchini-tr-linux64-aarch64-shippable/opt: XE9Tbn81QASzkL5vj5iCcQ - partials-zucchini-tr-linux64-shippable/opt: GyUVjkB5T_mQeAYjtM49xg - partials-zucchini-tr-macosx64-shippable/opt: XFxf_fR_Tg2IaRVF8JLbJg - partials-zucchini-tr-win32-shippable/opt: LKO00gTGSKOumSOM9-KNDQ - partials-zucchini-tr-win64-aarch64-shippable/opt: NTMWgw25S5GbTDNpn7sNmg - partials-zucchini-tr-win64-shippable/opt: ZFRGsCeuT4yi7Pjz0eFxFw - partials-zucchini-trs-linux-shippable/opt: LokdQCRVSBek8ZQDjla--g - partials-zucchini-trs-linux64-aarch64-shippable/opt: dQA5jJYhSHmG163Jvqa-UA - partials-zucchini-trs-linux64-shippable/opt: XLYXn3v0ScmcWDsUdQi87g - partials-zucchini-trs-macosx64-shippable/opt: BIXjP9TBQpuIvfax0TvNuQ - partials-zucchini-trs-win32-shippable/opt: drWSDATnSBSjG9jpreJ--A - partials-zucchini-trs-win64-aarch64-shippable/opt: Wakc_KxQTzOx7V1bOmJlig - partials-zucchini-trs-win64-shippable/opt: SVDPVlAGS5OaD9LhYnHVtg - partials-zucchini-uk-linux-shippable/opt: FmPbfLVNQ0-iuuBsjwWvFw - partials-zucchini-uk-linux64-aarch64-shippable/opt: ULRH9WTkTW-Ssq0xoRRzAw - partials-zucchini-uk-linux64-shippable/opt: WTweD13yRymErBlbkPVprg - partials-zucchini-uk-macosx64-shippable/opt: J_wwDPotSduF5Qv00_-1QQ - partials-zucchini-uk-win32-shippable/opt: TVTStCnMRty-Q0cvtaOiUw - partials-zucchini-uk-win64-aarch64-shippable/opt: Y0KaglD3QpmWDIeLbWCPKA - partials-zucchini-uk-win64-shippable/opt: FrE_eXwyS8i6yfaoZUUrBA - partials-zucchini-ur-linux-shippable/opt: WTTXGCh4SEquUk2yW_qrHw - partials-zucchini-ur-linux64-aarch64-shippable/opt: Z_p7Ht80Qc6UE80hHlFVew - partials-zucchini-ur-linux64-shippable/opt: e0opo3oYT-WBZuDE7Qc6-w - partials-zucchini-ur-macosx64-shippable/opt: HcHj0GXiR92wiJL1R07hJw - partials-zucchini-ur-win32-shippable/opt: c1zruw1fQEiMNRiPcJ84Iw - partials-zucchini-ur-win64-aarch64-shippable/opt: KHiPJPgkQveiWYpJOhejXQ - partials-zucchini-ur-win64-shippable/opt: WriboVv6SReE-HuvV40tdQ - partials-zucchini-uz-linux-shippable/opt: D4i9-MBKS2em19s3W_EXTw - partials-zucchini-uz-linux64-aarch64-shippable/opt: NwuY0hUnRUOsLUvs7TLqCw - partials-zucchini-uz-linux64-shippable/opt: TD0juj9vS8WOqbcmRvtbZg - partials-zucchini-uz-macosx64-shippable/opt: M8b3UwzfTtKmV8O8Cpt1sw - partials-zucchini-uz-win32-shippable/opt: UCbL6ZydQ2S-oddHEtHa-Q - partials-zucchini-uz-win64-aarch64-shippable/opt: VexK5mIERPmHwcedWdCJWw - partials-zucchini-uz-win64-shippable/opt: G_NE28lVTe2sjFvPpSWLeg - partials-zucchini-vi-linux-shippable/opt: ZAMxeyuoQCOtm9MeyFgOdg - partials-zucchini-vi-linux64-aarch64-shippable/opt: Nx1PO0qfQMKoVT0XCsJRWw - partials-zucchini-vi-linux64-shippable/opt: Hx-WE9D-STiXQD1aKw7rQg - partials-zucchini-vi-macosx64-shippable/opt: EtB9pv_hSo-jNIRJz5QmTA - partials-zucchini-vi-win32-shippable/opt: Yp9nzhdgS5axGc5HwVt6vg - partials-zucchini-vi-win64-aarch64-shippable/opt: Ew0m_GDrTPWx7sO6k--_rg - partials-zucchini-vi-win64-shippable/opt: UwsOS1RfTNmAvUJnehOzVA - partials-zucchini-win32-shippable/opt: X0h8ubm7SYONu7iXHyHfaQ - partials-zucchini-win64-aarch64-shippable/opt: dUm38hUpR_eneFSVAnvPrQ - partials-zucchini-win64-shippable/opt: WDGbwc5MRG-KdIXubHSFdA - partials-zucchini-xh-linux-shippable/opt: PVjjyzbvQJCLUnk-bq0ZPg - partials-zucchini-xh-linux64-aarch64-shippable/opt: N9xuuxNfQpGnCrdaRrZRJA - partials-zucchini-xh-linux64-shippable/opt: VhaRgCKQRoC6Yvdb7bXBLw - partials-zucchini-xh-macosx64-shippable/opt: EamYq2fYToyHq_xyq-ldKQ - partials-zucchini-xh-win32-shippable/opt: ZnS8P5rNSz-nepa-5PvEkQ - partials-zucchini-xh-win64-aarch64-shippable/opt: Uihf-creQI-BGvn2fME-FQ - partials-zucchini-xh-win64-shippable/opt: bBULmJ30SceAV6Bk7S2FqQ - partials-zucchini-zh-CN-linux-shippable/opt: Yx689K7QRVel0PhWsBnRqA - partials-zucchini-zh-CN-linux64-aarch64-shippable/opt: SM3ihatzRDq4AN41pFSqjw - partials-zucchini-zh-CN-linux64-shippable/opt: WNXW7ZhOQZycCFY-V3jUkg - partials-zucchini-zh-CN-macosx64-shippable/opt: K_o7mB25QaiRgcTAsWAW3Q - partials-zucchini-zh-CN-win32-shippable/opt: X7yelfN-TKiGDuEHKNwO7Q - partials-zucchini-zh-CN-win64-aarch64-shippable/opt: e4FOTTvxRRCiBBxVUOp_Bg - partials-zucchini-zh-CN-win64-shippable/opt: N0QVrJN4S5evfgGZ692iMA - partials-zucchini-zh-TW-linux-shippable/opt: AlF0mpKZRY-8qKtYoOArLA - partials-zucchini-zh-TW-linux64-aarch64-shippable/opt: SVKckv1CSMC2cN5skn-P5w - partials-zucchini-zh-TW-linux64-shippable/opt: Q9ARPjDySz6KJaTmy1xnEg - partials-zucchini-zh-TW-macosx64-shippable/opt: VrUMwnc0QFezzDPEeWp2WA - partials-zucchini-zh-TW-win32-shippable/opt: VYDoY-SQQuubDzhonBt3Jw - partials-zucchini-zh-TW-win64-aarch64-shippable/opt: UQ52bewrTHa7ARkToBwNbg - partials-zucchini-zh-TW-win64-shippable/opt: fkSw7-tMTPuAFKqfCs6pwA - post-balrog-dummy-icecat-linux-shippable-1: ay2Tde8zSzaFuNHYv5ql3g - post-balrog-dummy-icecat-linux64-aarch64-shippable-1: QFMXAlKjSHGVAFP5dz6FvA - post-balrog-dummy-icecat-linux64-shippable-1: RfmZTXcLRim_vxVWOgLsPw - post-balrog-dummy-icecat-macosx64-shippable-1: EiEIqdOLRpa8uV5BNbpCNQ - post-balrog-dummy-icecat-win32-shippable-1: LV26enBbTPaAxry_2EE4lA - post-balrog-dummy-icecat-win64-aarch64-shippable-1: ZT5Kbu9FSe6pmsHYU9RLRQ - post-balrog-dummy-icecat-win64-shippable-1: HZ7_nzdhSk-8Q1DItXfIvA - post-beetmover-checksums-dummy-icecat-promote-1: OaiqLqTUS5CRYsoUJkv6mw - post-beetmover-dummy-icecat-linux-shippable-1: eqqd3EPtRDe02QuIevSJUA - post-beetmover-dummy-icecat-linux64-aarch64-shippable-1: Efyrl2pRTzC_jrJueub7nw - post-beetmover-dummy-icecat-linux64-shippable-1: IQSB_55YRZ-NNSBWlC91vw - post-beetmover-dummy-icecat-macosx64-shippable-1: FgjWm7XdSSKd3uW01l-NvA - post-beetmover-dummy-icecat-win32-shippable-1: dEvTaCE_QZW-lkG3k7nl4Q - post-beetmover-dummy-icecat-win64-aarch64-shippable-1: SEyjDgQcQciJOQRF3MPraw - post-beetmover-dummy-icecat-win64-shippable-1: W9VudjBESmySguvdY_W56w - post-langpack-dummy-icecat-promote-1: DHaqSQoQRTKPb7QOVmcBXA - post-update-verify-dummy-icecat-linux-shippable-1: PUvgq_DBSMeDJGYkeBVrSQ - post-update-verify-dummy-icecat-linux64-aarch64-shippable-1: EkQ40MGgSJq5f16dsYyAeQ - post-update-verify-dummy-icecat-linux64-shippable-1: e_m-Z9frSsqcvJRtnp7_ow - post-update-verify-dummy-icecat-macosx64-shippable-1: DEQFN_wFQYaugdA3skzQ4Q - post-update-verify-dummy-icecat-win32-shippable-1: Ns_2skqrQF6ZA0c5rs887Q - post-update-verify-dummy-icecat-win64-aarch64-shippable-1: eRBQyQukQGyzl-HQ-pSjOA - post-update-verify-dummy-icecat-win64-shippable-1: RxIdCPpJRp-ReGdoMdWGwA - push-langpacks-build-linux64-shippable/opt: fKcUhx5qR_yKWlxCpX4ZWw - push-langpacks-shippable-l10n-linux64-shippable-1/opt: XiOoGQQSRSu6o7eiGDvdbg - push-langpacks-shippable-l10n-linux64-shippable-10/opt: Z6OeNGE4QAyCoLQJNp7b4Q - push-langpacks-shippable-l10n-linux64-shippable-11/opt: Ws88BJh6Rk6txbBStZ3r_w - push-langpacks-shippable-l10n-linux64-shippable-12/opt: bAg_mpekRrCWDh37p3JxsA - push-langpacks-shippable-l10n-linux64-shippable-13/opt: T9HQ6l3lRpi66rEVltGMdQ - push-langpacks-shippable-l10n-linux64-shippable-14/opt: fL3WVRI7QTOZ11OLe981HQ - push-langpacks-shippable-l10n-linux64-shippable-15/opt: VydCSN3HTYKhM6CSIl6OLQ - push-langpacks-shippable-l10n-linux64-shippable-16/opt: DNHf1-xQSmSQVKcTuBLOhg - push-langpacks-shippable-l10n-linux64-shippable-17/opt: TtXVG-81Ql6D1bZyNYvjJA - push-langpacks-shippable-l10n-linux64-shippable-18/opt: Wfx2ojxmT9iNrYKE2Z9SOA - push-langpacks-shippable-l10n-linux64-shippable-19/opt: TM_YDE4YQQCvjwtQqwRvPg - push-langpacks-shippable-l10n-linux64-shippable-2/opt: BoOUdi5rTwufz75oW0Y9OQ - push-langpacks-shippable-l10n-linux64-shippable-20/opt: AfEgUavjQ5qKyTNHlZTmlg - push-langpacks-shippable-l10n-linux64-shippable-21/opt: Hx-5BAfZQLeaiBzDCkeLWw - push-langpacks-shippable-l10n-linux64-shippable-3/opt: M7OPoH0ASMq0UaiTEFsrvw - push-langpacks-shippable-l10n-linux64-shippable-4/opt: Dl_geTg6QQOhizh0TFHzEw - push-langpacks-shippable-l10n-linux64-shippable-5/opt: DbXwATK5QHu7sY0E5abV3w - push-langpacks-shippable-l10n-linux64-shippable-6/opt: PORB_n85TrWvfn-Xg60DdQ - push-langpacks-shippable-l10n-linux64-shippable-7/opt: bxlA28JTQUGpbh4if-GVlw - push-langpacks-shippable-l10n-linux64-shippable-8/opt: OnPYNSSdS72ushJQmlBZTQ - push-langpacks-shippable-l10n-linux64-shippable-9/opt: cvGMPO6QSeOqHfVjhl5Rxg - push-langpacks-shippable-l10n-macosx64-shippable-ja-JP-mac/opt: IFxljHz-SEOKUfvT32umWQ - release-balrog-submit-toplevel-icecat: OlJ74PTuSA2ri8aSek2wUg - release-beetmover-signed-langpacks-checksums-linux-1/opt: AFjnvw9JRqKCZ0OQ991ayQ - release-beetmover-signed-langpacks-checksums-linux-10/opt: DqTUQ_GTQAO9roBwFnU9FQ - release-beetmover-signed-langpacks-checksums-linux-11/opt: cipqfGznTKe4nTYqsImflw - release-beetmover-signed-langpacks-checksums-linux-12/opt: N9A_vCe6SOqchhe2no9DPw - release-beetmover-signed-langpacks-checksums-linux-13/opt: DSA16B2NQX6gasHUhpuW9Q - release-beetmover-signed-langpacks-checksums-linux-14/opt: Amti-4HxSTuA6C62LKa9SQ - release-beetmover-signed-langpacks-checksums-linux-15/opt: Mv61gI2xSbWcevXv4XYWiQ - release-beetmover-signed-langpacks-checksums-linux-16/opt: EZoMkpqmSSigFRfBD9zM_A - release-beetmover-signed-langpacks-checksums-linux-17/opt: dBIHC8u1RcOezsdlLqS-Pg - release-beetmover-signed-langpacks-checksums-linux-18/opt: MbGZF4WjTAeME-Ad2flmRw - release-beetmover-signed-langpacks-checksums-linux-19/opt: Uw4z1aGqQfOafQIxpYxW7w - release-beetmover-signed-langpacks-checksums-linux-2/opt: Ubh5S-A6RtKgdCNakFUXig - release-beetmover-signed-langpacks-checksums-linux-20/opt: Xa0Mrwj3QqKbmil3_pSlQw - release-beetmover-signed-langpacks-checksums-linux-21/opt: FfyKja9rRSqYFLAjaSwTIg - release-beetmover-signed-langpacks-checksums-linux-3/opt: VzSbnHRTQGaEgsdVE7Sojw - release-beetmover-signed-langpacks-checksums-linux-4/opt: Uo4w73tPQjajNgBcSiebKA - release-beetmover-signed-langpacks-checksums-linux-5/opt: UdssSHhKTuiXtNGUllfi9g - release-beetmover-signed-langpacks-checksums-linux-6/opt: aQNxzxAGTCCtAvU0XNJu8A - release-beetmover-signed-langpacks-checksums-linux-7/opt: Mw9HZFgsSyunto9GpBqsJA - release-beetmover-signed-langpacks-checksums-linux-8/opt: L04QOrEsRVehfXFbnRiEpw - release-beetmover-signed-langpacks-checksums-linux-9/opt: EafFuw96SAOZoqhyx-iKjg - release-beetmover-signed-langpacks-checksums-linux/opt: HnJDXCVwS82IWFBcsZcJKw - release-beetmover-signed-langpacks-checksums-linux64-aarch64-1/opt: VgWaLepqQKSrBBGkVS8wyA - release-beetmover-signed-langpacks-checksums-linux64-aarch64-10/opt: BhSyu-YyTui5u4EObXSJ7g - release-beetmover-signed-langpacks-checksums-linux64-aarch64-11/opt: PicR28MsR36IBIpEIScQSg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-12/opt: HJB5IFXXQxyXhPzzOT7Osg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-13/opt: WQEk9FjjQQi0PjiEpszK-g - release-beetmover-signed-langpacks-checksums-linux64-aarch64-14/opt: bDFDWXb-T0G1spIt6aoEBQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-15/opt: OpeEbJX4SbSihriX9ruqtQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-16/opt: Sd-1ipzyQty8YkXD2K2VZQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-17/opt: O7hFRvCBRsKyMPxmnQnvQA - release-beetmover-signed-langpacks-checksums-linux64-aarch64-18/opt: X8yhOzgiSVSEVjRfXSlRug - release-beetmover-signed-langpacks-checksums-linux64-aarch64-19/opt: KZ4Eif70Qdy07QElyccO-Q - release-beetmover-signed-langpacks-checksums-linux64-aarch64-2/opt: KRNXtcxzRteWblpEPjKPSQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-20/opt: XqQR7VX8TTSFN-_tUFxzyw - release-beetmover-signed-langpacks-checksums-linux64-aarch64-21/opt: N2WDTDqjTvGeXV4IvPBmqQ - release-beetmover-signed-langpacks-checksums-linux64-aarch64-3/opt: INHynlpZSHS2qIt9DwbyMg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-4/opt: F-CI8v2wSS2ezyhNyF17bw - release-beetmover-signed-langpacks-checksums-linux64-aarch64-5/opt: ZCsQ9-pSSEO5h_toQOLtDg - release-beetmover-signed-langpacks-checksums-linux64-aarch64-6/opt: SEHIdKRNRPGLnOqzfs0QeA - release-beetmover-signed-langpacks-checksums-linux64-aarch64-7/opt: buWlE-iJRh2yZy3Jqr3v9A - release-beetmover-signed-langpacks-checksums-linux64-aarch64-8/opt: Fuvax7o0QkevLgNEvgfHow - release-beetmover-signed-langpacks-checksums-linux64-aarch64-9/opt: N5kHcxxZR2aTwSls1LRWNw - release-beetmover-signed-langpacks-checksums-linux64-aarch64/opt: N8MbtawkQ2KyIKP87xNwOg - release-beetmover-signed-langpacks-checksums-macosx64-1/opt: VWFcu29jRza9OAohHCpkfA - release-beetmover-signed-langpacks-checksums-macosx64-10/opt: DLo-peoPQqmMMdY1oYmEcg - release-beetmover-signed-langpacks-checksums-macosx64-11/opt: UH14neXDQAemg5y0mN8wVg - release-beetmover-signed-langpacks-checksums-macosx64-12/opt: EtYkOmrdS4O1USQTi-Oh-w - release-beetmover-signed-langpacks-checksums-macosx64-13/opt: auxrrCLPT8qpelSDqBFTcw - release-beetmover-signed-langpacks-checksums-macosx64-14/opt: ENRMNxTYSm6Q21NxC1uYZw - release-beetmover-signed-langpacks-checksums-macosx64-15/opt: f-Wzx8J7Q8Khmy-cYJ0TCQ - release-beetmover-signed-langpacks-checksums-macosx64-16/opt: awyKkM0kTiiukRMlfHz6rA - release-beetmover-signed-langpacks-checksums-macosx64-17/opt: OvvX_F3WRZ6sgefcv6XkuQ - release-beetmover-signed-langpacks-checksums-macosx64-18/opt: Zu2nwIRhRwOVZTZWpK3Xpw - release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ZLu0nrr7Q2mZvmmhL_krqA - release-beetmover-signed-langpacks-checksums-macosx64-2/opt: Lqzv9-lIQeKLWoWTkvc1Gg - release-beetmover-signed-langpacks-checksums-macosx64-20/opt: JGrB1-KySaecaesq1pir4Q - release-beetmover-signed-langpacks-checksums-macosx64-21/opt: DY49u2auSEeutEI8AuuR5g - release-beetmover-signed-langpacks-checksums-macosx64-3/opt: H8kzuFfXRomR1uIGNwZf6A - release-beetmover-signed-langpacks-checksums-macosx64-4/opt: MyloEjIhQwuxML6ZUC7AFA - release-beetmover-signed-langpacks-checksums-macosx64-5/opt: HKOdOWtSQ4msPVleHvcATA - release-beetmover-signed-langpacks-checksums-macosx64-6/opt: LAShF9dKQVe_WR-JAJyUCg - release-beetmover-signed-langpacks-checksums-macosx64-7/opt: ajM9KbZLR4isY682sqB1Xw - release-beetmover-signed-langpacks-checksums-macosx64-8/opt: F_218b1WQSCjDx0rgJ9nIA - release-beetmover-signed-langpacks-checksums-macosx64-9/opt: fX4w8TllQsKz8r-SODe2Sw - release-beetmover-signed-langpacks-checksums-macosx64/opt: PiDtCKOzQWaoUhKML9hTbQ - release-beetmover-signed-langpacks-checksums-win32-1/opt: enH3y40sStau3n_J7rnM4g - release-beetmover-signed-langpacks-checksums-win32-10/opt: IHNByM6LTee3YXdhbkjjtA - release-beetmover-signed-langpacks-checksums-win32-11/opt: dDSbV21JQwyloYAMaTNO1Q - release-beetmover-signed-langpacks-checksums-win32-12/opt: H-LuwKLgRR2DWTmBNl--TQ - release-beetmover-signed-langpacks-checksums-win32-13/opt: Y_Bg_yWvSRelLDioDxAYaQ - release-beetmover-signed-langpacks-checksums-win32-14/opt: BaUSnlb2SXCv7D6Er2K7gA - release-beetmover-signed-langpacks-checksums-win32-15/opt: U7QuRmE6QZqGvLa31WDw1w - release-beetmover-signed-langpacks-checksums-win32-16/opt: A-sY-2fnSB2i5QMQaEvv1w - release-beetmover-signed-langpacks-checksums-win32-17/opt: Iz0vPdcVS521dDm4oMxtLA - release-beetmover-signed-langpacks-checksums-win32-18/opt: C40nyNLQQUeBCJMqztEodA - release-beetmover-signed-langpacks-checksums-win32-19/opt: fopgZTCbRT-8CPm3P_TIuA - release-beetmover-signed-langpacks-checksums-win32-2/opt: cE5GrvRRTtaJxKWG96PTaQ - release-beetmover-signed-langpacks-checksums-win32-20/opt: Ix4onRq9RICVDC9Re2AETQ - release-beetmover-signed-langpacks-checksums-win32-21/opt: MuY0DBcES8uhZBJZpyM9bg - release-beetmover-signed-langpacks-checksums-win32-3/opt: BOI5M58aQ6OW2yp9iChfFw - release-beetmover-signed-langpacks-checksums-win32-4/opt: asAn9JsORNSbRlHRCBVELA - release-beetmover-signed-langpacks-checksums-win32-5/opt: f7bHAXsWR6e41f4pHj5y2Q - release-beetmover-signed-langpacks-checksums-win32-6/opt: a3amRU3KRvqvGXEelFjXgQ - release-beetmover-signed-langpacks-checksums-win32-7/opt: XGDaRoqnSmmM8H31ei46fQ - release-beetmover-signed-langpacks-checksums-win32-8/opt: NyC2cEBLRtWRC_Il-rV31g - release-beetmover-signed-langpacks-checksums-win32-9/opt: Sz4rW-HwQ7-dHN26KzsS7w - release-beetmover-signed-langpacks-checksums-win32/opt: YC2FF83CQaG5MW_6dhz1vA - release-beetmover-signed-langpacks-checksums-win64-1/opt: YAhYfhvaQ7edrxegH5YShA - release-beetmover-signed-langpacks-checksums-win64-10/opt: ZdvQEWiIQPiZb9Hkhaw9xw - release-beetmover-signed-langpacks-checksums-win64-11/opt: DrGliKLVS42RsnGCMwpzHw - release-beetmover-signed-langpacks-checksums-win64-12/opt: ZWimtGnTRAGxtCSksSo6fg - release-beetmover-signed-langpacks-checksums-win64-13/opt: Q7LUyCUgSN-lsfsI7KN2hg - release-beetmover-signed-langpacks-checksums-win64-14/opt: ahT8Q8UlQay6fe2W_KPOsg - release-beetmover-signed-langpacks-checksums-win64-15/opt: O-akVw7qREmIgWH35St2Hw - release-beetmover-signed-langpacks-checksums-win64-16/opt: IpsYABuNTRyeZ1lTT4HNFg - release-beetmover-signed-langpacks-checksums-win64-17/opt: czlhKSiFTxaW6LAmdAQJyg - release-beetmover-signed-langpacks-checksums-win64-18/opt: ZAs7DxKLSnqbxdGhKIyA-Q - release-beetmover-signed-langpacks-checksums-win64-19/opt: YHarZJ0-TYqQyq5_wNYI-w - release-beetmover-signed-langpacks-checksums-win64-2/opt: b6HEwSLTQz6jXxkEZxOYhA - release-beetmover-signed-langpacks-checksums-win64-20/opt: AvLqoga8Qsmpr98xwgmgZg - release-beetmover-signed-langpacks-checksums-win64-21/opt: J-8DkGiARVajPhFvgXm7Cw - release-beetmover-signed-langpacks-checksums-win64-3/opt: XSSFUf35SjWM7SkqCj-paQ - release-beetmover-signed-langpacks-checksums-win64-4/opt: XVsLetpXR1mToP8mqoAnTQ - release-beetmover-signed-langpacks-checksums-win64-5/opt: QM9JtiH9SVmMmOQPfWZQkg - release-beetmover-signed-langpacks-checksums-win64-6/opt: DadqQDMLSRSMTAtl1NnpDA - release-beetmover-signed-langpacks-checksums-win64-7/opt: TrSoMR3QRz6UP_BHz6BVNQ - release-beetmover-signed-langpacks-checksums-win64-8/opt: Wlkq6B11QNuJcxVyIVokfw - release-beetmover-signed-langpacks-checksums-win64-9/opt: Kh4tXwkBRzeUImS9IShUXg - release-beetmover-signed-langpacks-checksums-win64/opt: HWrNgwYGQI6esWudwxe_UA - release-beetmover-signed-langpacks-linux-shippable-1/opt: LkXZn5U_RWeY2Hwor5EG9w - release-beetmover-signed-langpacks-linux-shippable-10/opt: XRDMXalnTauWZ3gMZrIOsQ - release-beetmover-signed-langpacks-linux-shippable-11/opt: PUfJRsbHR_2SC3JzHx214Q - release-beetmover-signed-langpacks-linux-shippable-12/opt: fOPbX4SGQaS9XRBmEo_MTA - release-beetmover-signed-langpacks-linux-shippable-13/opt: XsEM470XQhW4-znuOqQBCA - release-beetmover-signed-langpacks-linux-shippable-14/opt: Mn4Yka0UQr-DzzDhr2jjCQ - release-beetmover-signed-langpacks-linux-shippable-15/opt: AYRtL345QiiZ5jYTrH4AxA - release-beetmover-signed-langpacks-linux-shippable-16/opt: EcSF_nXtQwCc5VjK99qArw - release-beetmover-signed-langpacks-linux-shippable-17/opt: dukC8VHDQnOqfMmiovcVew - release-beetmover-signed-langpacks-linux-shippable-18/opt: NpneK-_9QyKRhVwyewgY1A - release-beetmover-signed-langpacks-linux-shippable-19/opt: J-tnhNwWScCfbcK_2j1Yww - release-beetmover-signed-langpacks-linux-shippable-2/opt: e8EJ3rMDTJC0A2ChnjUe1w - release-beetmover-signed-langpacks-linux-shippable-20/opt: G2OXH-NsSoW9xHvYA39Vvw - release-beetmover-signed-langpacks-linux-shippable-21/opt: PgVLNrHmS-SGi84ysv_dmw - release-beetmover-signed-langpacks-linux-shippable-3/opt: SBswuU3GQeuDBvOoYmsG5g - release-beetmover-signed-langpacks-linux-shippable-4/opt: K07p7H8MQF6TSGKdvLqIbw - release-beetmover-signed-langpacks-linux-shippable-5/opt: M7j4K5chS6u6KwBuLNpfdw - release-beetmover-signed-langpacks-linux-shippable-6/opt: Vsjmo15pT8a5S7BpDGvy2Q - release-beetmover-signed-langpacks-linux-shippable-7/opt: fHsbK_AdRWC0Yltz3w3JGQ - release-beetmover-signed-langpacks-linux-shippable-8/opt: Rm2d6u6ZTDSu4Zz4AtoA4Q - release-beetmover-signed-langpacks-linux-shippable-9/opt: Z6y2nz-LTWG90_eRsYFdEw - release-beetmover-signed-langpacks-linux-shippable/opt: DaAOFyTkR9SA91dZNACfjw - release-beetmover-signed-langpacks-linux64-aarch64-shippable-1/opt: KNfBXfLzQJq9WSDS-pOBzw - release-beetmover-signed-langpacks-linux64-aarch64-shippable-10/opt: ESTlaLWrRFGum3ufP6eeZA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-11/opt: KxkRGCKMTEyDkNAJUH467w - release-beetmover-signed-langpacks-linux64-aarch64-shippable-12/opt: PamwR-L2QbyOol-dcmC-1Q - release-beetmover-signed-langpacks-linux64-aarch64-shippable-13/opt: TMhvoYKqQxuYAFTOTVhbuQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-14/opt: VuTWrh3oRZOPiwa7jezSsg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-15/opt: as8nGPvMQoyMN0W7wHZ6RA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-16/opt: NgCqtv_ETxKgVaLclU7MJg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-17/opt: IhKXJO57Qyi5jZAGOUSwAg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-18/opt: JVkwYxa0TmW8PYCkCnWJ2g - release-beetmover-signed-langpacks-linux64-aarch64-shippable-19/opt: MhQMKUm9Tqi9c4rV3mcVYg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-2/opt: X8lEY7FyR4-nG8Ji2K-uHQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-20/opt: SYzFMn8fSkeGYVPhdyDKMQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-21/opt: Ok_1p6y_S7a3OVrMh0TZJw - release-beetmover-signed-langpacks-linux64-aarch64-shippable-3/opt: cw8uehPlTuq2ubLsQVEKdQ - release-beetmover-signed-langpacks-linux64-aarch64-shippable-4/opt: IXCcIcHtSYKuxgZQ23P2Wg - release-beetmover-signed-langpacks-linux64-aarch64-shippable-5/opt: aO3SXVRUQq-W3G3RtYiMvA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-6/opt: PA8JqJwLSr6ODSQlC1wl2A - release-beetmover-signed-langpacks-linux64-aarch64-shippable-7/opt: Ou5j6yt3QDuYdLZFcSt1ig - release-beetmover-signed-langpacks-linux64-aarch64-shippable-8/opt: JXguXVerRuSxQ5deq-aJTA - release-beetmover-signed-langpacks-linux64-aarch64-shippable-9/opt: Ie53nYsJRri6Cgp8xWStuw - release-beetmover-signed-langpacks-linux64-aarch64-shippable/opt: RDB-tLoPTxuGl24hQU-2jQ - release-beetmover-signed-langpacks-macosx64-shippable-1/opt: LLF70OT6TwWfu6y-QlkN7w - release-beetmover-signed-langpacks-macosx64-shippable-10/opt: CAqBNbPfQqKIQh4jVNoHlQ - release-beetmover-signed-langpacks-macosx64-shippable-11/opt: QQIocu68RuiNvFNybIwaWw - release-beetmover-signed-langpacks-macosx64-shippable-12/opt: Ue36jrB_SSGXl6OKLVRezw - release-beetmover-signed-langpacks-macosx64-shippable-13/opt: RihxgXPZSUCLGnWg9BVJgw - release-beetmover-signed-langpacks-macosx64-shippable-14/opt: LqOJNOvNRM-csHcpJ6b-oA - release-beetmover-signed-langpacks-macosx64-shippable-15/opt: Gkc67NO_Suux1wYb3e9rqw - release-beetmover-signed-langpacks-macosx64-shippable-16/opt: ZZeejh67QoK7_ESFXNGsvA - release-beetmover-signed-langpacks-macosx64-shippable-17/opt: WzDUjKKrSaiHG1q4b4drKg - release-beetmover-signed-langpacks-macosx64-shippable-18/opt: b3RjuWmuR5yKRZqzCnjyUg - release-beetmover-signed-langpacks-macosx64-shippable-19/opt: ZB2yYo8uTy67rEYL0-h3NA - release-beetmover-signed-langpacks-macosx64-shippable-2/opt: EwCQ5gJGQ-K8NKkEM7roJA - release-beetmover-signed-langpacks-macosx64-shippable-20/opt: TBJW-8dLS_aOqX9WgJyJ3w - release-beetmover-signed-langpacks-macosx64-shippable-21/opt: dI8SHvBdRaGjQPEePt4myw - release-beetmover-signed-langpacks-macosx64-shippable-3/opt: IU8Fh5VaQ8G0feb7Qt84HA - release-beetmover-signed-langpacks-macosx64-shippable-4/opt: CjLkAhd5R-2XSmUMalqR9g - release-beetmover-signed-langpacks-macosx64-shippable-5/opt: BA1k7l3hS1y1cqqM5gU7lw - release-beetmover-signed-langpacks-macosx64-shippable-6/opt: BRPDU5M1R9a_LnXdkrR57A - release-beetmover-signed-langpacks-macosx64-shippable-7/opt: P35M4fduRP6_DALpHACGlw - release-beetmover-signed-langpacks-macosx64-shippable-8/opt: dk-85cjpRs2NimRIDpIjIw - release-beetmover-signed-langpacks-macosx64-shippable-9/opt: GnyzAFdLTX6RMt2fEdYevA - release-beetmover-signed-langpacks-macosx64-shippable/opt: KDY386v4S4KNs5T7atNyvQ - release-beetmover-signed-langpacks-win32-shippable-1/opt: F4LyR2JuR-CwRdTJWUKJZQ - release-beetmover-signed-langpacks-win32-shippable-10/opt: K3Exka2BTP6RrYgeopS8Hw - release-beetmover-signed-langpacks-win32-shippable-11/opt: WS7PklT_SoSB95mpltG_JA - release-beetmover-signed-langpacks-win32-shippable-12/opt: RBaARb8qTUqW1LevFoRwuQ - release-beetmover-signed-langpacks-win32-shippable-13/opt: WNc1Xog5TZCECQle8oKKEQ - release-beetmover-signed-langpacks-win32-shippable-14/opt: exoWjPtiS4Cjv7oxiQBq_w - release-beetmover-signed-langpacks-win32-shippable-15/opt: Es69D4sPTlqkHyhCPme1HQ - release-beetmover-signed-langpacks-win32-shippable-16/opt: c3PZGQHqTPOMEIHT0vegFw - release-beetmover-signed-langpacks-win32-shippable-17/opt: EtMHuiOqRjK6-aTKmLBI3g - release-beetmover-signed-langpacks-win32-shippable-18/opt: Pzi99EMLT46fJi7vd8mXrg - release-beetmover-signed-langpacks-win32-shippable-19/opt: TyLAHrLoQgSZjj94O_0uZw - release-beetmover-signed-langpacks-win32-shippable-2/opt: QOlCWkjlSq6KKXAYf8mW0A - release-beetmover-signed-langpacks-win32-shippable-20/opt: HNjdGBjqSDeYirM8SBqGzw - release-beetmover-signed-langpacks-win32-shippable-21/opt: TZMApbIjRRWNLkHQaM1fZw - release-beetmover-signed-langpacks-win32-shippable-3/opt: VDGu4loXTRGUxAeUmtbK5g - release-beetmover-signed-langpacks-win32-shippable-4/opt: WF-7gBEgRxK5y-YntXJu3A - release-beetmover-signed-langpacks-win32-shippable-5/opt: GWO-TdQXRKml_tRFJG_xIQ - release-beetmover-signed-langpacks-win32-shippable-6/opt: b7B_edMhRZqrP5FlYBAp4Q - release-beetmover-signed-langpacks-win32-shippable-7/opt: Jm2FwWNVR_CP0zUfeOcCvg - release-beetmover-signed-langpacks-win32-shippable-8/opt: USLpH3-sS_inBMdX84fq2A - release-beetmover-signed-langpacks-win32-shippable-9/opt: Vp7f7P__QVedOv37n9asYg - release-beetmover-signed-langpacks-win32-shippable/opt: GDyEEW9fQFWiesmNdt1fNA - release-beetmover-signed-langpacks-win64-shippable-1/opt: CmTA0icZRS-mQWmbvGkLQw - release-beetmover-signed-langpacks-win64-shippable-10/opt: Y_FEZFwHSMGEfh4MXQetIw - release-beetmover-signed-langpacks-win64-shippable-11/opt: BosSuuEGTiW8fE9gYR4sWQ - release-beetmover-signed-langpacks-win64-shippable-12/opt: XvGh0JA9RxWb1DWRJj71Xg - release-beetmover-signed-langpacks-win64-shippable-13/opt: EhDJdMOSScCNry8m-RQnHw - release-beetmover-signed-langpacks-win64-shippable-14/opt: dC1Xd4AOToKApKVBQCIsTQ - release-beetmover-signed-langpacks-win64-shippable-15/opt: F17Bq_enS0O9uklH8mtwdg - release-beetmover-signed-langpacks-win64-shippable-16/opt: YWbprOoKQbOKXWacfDY20g - release-beetmover-signed-langpacks-win64-shippable-17/opt: L3oLJhg5S9OpVzMnKGYSDg - release-beetmover-signed-langpacks-win64-shippable-18/opt: e93oIz-gRHytgo7tC2kxNQ - release-beetmover-signed-langpacks-win64-shippable-19/opt: TmAkNS8MSZ6QWSsQG9xNTA - release-beetmover-signed-langpacks-win64-shippable-2/opt: SJj9xuSfSrSHOIuAAm9kYg - release-beetmover-signed-langpacks-win64-shippable-20/opt: MvxtIufXRPC9VwEtfxtWIA - release-beetmover-signed-langpacks-win64-shippable-21/opt: eYTF4CDkTZukWSa7KyB7hQ - release-beetmover-signed-langpacks-win64-shippable-3/opt: ZDSsGnB3R2S0Wh86Wnz6XQ - release-beetmover-signed-langpacks-win64-shippable-4/opt: VwUjH7ZqReW-05TZo8IvxQ - release-beetmover-signed-langpacks-win64-shippable-5/opt: VNKi51FGQiSA1x17S-BL3g - release-beetmover-signed-langpacks-win64-shippable-6/opt: Enx1fkG_T5KAIihc99KLPg - release-beetmover-signed-langpacks-win64-shippable-7/opt: ZxVXm3MHS0ulnnRptWH47g - release-beetmover-signed-langpacks-win64-shippable-8/opt: XTU3J99uR0i6PMxhHJOFTQ - release-beetmover-signed-langpacks-win64-shippable-9/opt: fqCPeMWbQBeuZhkqkixS4Q - release-beetmover-signed-langpacks-win64-shippable/opt: bpH4fcxrSmCgedx9DajFjw - release-beetmover-source-checksums-icecat-source/opt: AiVzIs_9SAexRvi_3gg4FQ - release-bouncer-check-icecat: IV9rux5bTbWWpivnf91ZLw - release-bouncer-sub-icecat: WYJ6LMwmSZqJMJV9RLEZcQ - release-early-tagging-icecat: JmOqwNreTLyJpocLcE0TTQ - release-final-verify-icecat: Z-UlgRWwRsGhPaV8xY-TMQ - release-generate-checksums-icecat: PyCMfgNdRv-sSlF96_OYXw - release-generate-checksums-icecat-beetmover: Aex4zxb1RXiaWjLb2e0xjA - release-generate-checksums-icecat-signing: W0Af-CoBSLewHcVtHfWVdg - release-notify-av-announce-icecat: Hn-CHznNT6yBnSbHjYD96Q - release-notify-promote-icecat: SbjIm8kWRx2C-gMH27UYGA - release-notify-push-icecat: bgUEP7ckRjCvG0r7HpclPQ - release-notify-started-icecat: c4WldZhUTr-QV4vC3DPMGw - release-partner-repack-beetmover-linux-shippable-mozillaonline-esrOther-zh-CN: TKY8v5b_RyeV_K_UxDrAqA - release-partner-repack-beetmover-linux64-shippable-mozillaonline-esrOther-zh-CN: ZkMLJwShRkSJ8hkPrPDpIg - release-partner-repack-beetmover-macosx64-shippable-mozillaonline-esrOther-zh-CN: C-yWzz2bTyONRvtt3UfSTw - release-partner-repack-beetmover-win32-shippable-mozillaonline-esrWinFull-zh-CN: XIao0z-mR7WwmTlvzZTtdg - release-partner-repack-beetmover-win64-shippable-mozillaonline-esrWinFull-zh-CN: bk2up5igRFGaWLE5_JtiCw - release-partner-repack-chunking-dummy-linux-shippable-mozillaonline-esrOther-zh-CN: fCI-oCVKQtODmfskhosgVQ - release-partner-repack-chunking-dummy-linux64-shippable-mozillaonline-esrOther-zh-CN: T2lPAnqHRpmlI_tKgxq30A - release-partner-repack-linux-shippable: DBcTiyZ1QzWhF7sfNUHyiA - release-partner-repack-linux64-shippable: YQ-M_JJGSfaJ9CSoP_9rBQ - release-partner-repack-mac-notarization-macosx64-shippable-1: I2STa8x3QHafszuw1m3pBw - release-partner-repack-mac-signing-macosx64-shippable-1: DAuY4Q0WQDSQrRR6WAIVwQ - release-partner-repack-macosx64-shippable: UXotC8E0Tp6EF03-3jjn9A - release-partner-repack-repackage-macosx64-shippable-mozillaonline-esrOther-zh-CN: Qb-q73g5R8COAvOYVppZMg - release-partner-repack-repackage-signing-linux-shippable-mozillaonline-esrOther-zh-CN: TNZOlCecQv2iJQaxnC7RCw - release-partner-repack-repackage-signing-linux64-shippable-mozillaonline-esrOther-zh-CN: I_MwG3J7SdC-9SO6B1ncaQ - release-partner-repack-repackage-signing-macosx64-shippable-mozillaonline-esrOther-zh-CN: ArpBzX-kRqO_f4cb50nXEQ - release-partner-repack-repackage-signing-win32-shippable-mozillaonline-esrWinFull-zh-CN: Ah3rJhtxShCY2OkwhZLaeA - release-partner-repack-repackage-signing-win64-shippable-mozillaonline-esrWinFull-zh-CN: Qy2BJXYFTFiC9_I_jj6nsw - release-partner-repack-repackage-win32-shippable-mozillaonline-esrWinFull-zh-CN: U-ryjZqVT1Wm5WHV5IEyjg - release-partner-repack-repackage-win64-shippable-mozillaonline-esrWinFull-zh-CN: P70enjYiQdC0aYI9WvYggQ - release-partner-repack-win32-shippable: PDxjLbiOR8q3DmqRq_0ptw - release-partner-repack-win64-shippable: c4pmW1_8SEuYXCSiJAPZXg - release-source-checksums-signing-icecat-source/opt: G-BJofwvR3uPqhbZmL__BQ - release-source-icecat-source/opt: DUXxr9j0Tnu4vgf2ziAGNg - release-source-signing-icecat-source/opt: Ey7hEPb6QjqrYo7d_vL9yA - release-update-verify-config-icecat-linux: Nuso69GVR7aWWeANTWdGgQ - release-update-verify-config-icecat-linux64: CUha1NCZTDuiZv5bU1LBcg - release-update-verify-config-icecat-linux64-aarch64: H21KXvGCTm-ydF6ec4mY2g - release-update-verify-config-icecat-macosx64: Nc0_CuhlQMuwVo5NfzuEtA - release-update-verify-config-icecat-win32: eqa7-xcXQxO7XRkMaf7h3A - release-update-verify-config-icecat-win64: Z4uGdz-PT46p2Ylc5p0jLA - release-update-verify-config-icecat-win64-aarch64: M-ODcNP3S9mQnaJrKcK8pA - release-update-verify-icecat-linux-1/16: QXdtu7ZMRgSZlwdxzNUgFQ - release-update-verify-icecat-linux-10/16: ZCoOM9zqQQCoMBdSEuPOiQ - release-update-verify-icecat-linux-11/16: X0OPmUFuSZCG9AjJGtSSBg - release-update-verify-icecat-linux-12/16: PLI8CBP4RSWvrKIi-hFZyg - release-update-verify-icecat-linux-13/16: JiQfPoXXTvGFR9GsbT_qkA - release-update-verify-icecat-linux-14/16: RnH09FXiSPWwHE5IMJv9bw - release-update-verify-icecat-linux-15/16: OGWX_0hMTUynsBRKmixxqw - release-update-verify-icecat-linux-16/16: Ix5LuUCWQBiJnKgwK09Rpg - release-update-verify-icecat-linux-2/16: SALtA3xgQGWJMeaU9IkXmw - release-update-verify-icecat-linux-3/16: X_DV-gdYQ_u1GMi-G0xmRw - release-update-verify-icecat-linux-4/16: OcjYbSxzQtiH-hjqMd3kOA - release-update-verify-icecat-linux-5/16: VSuVfzvHTmuQUAU899z24Q - release-update-verify-icecat-linux-6/16: fp7zzCPWSgKSFtWCP9cPlg - release-update-verify-icecat-linux-7/16: QEbsvWgwSuGl2ZR8GKiIdA - release-update-verify-icecat-linux-8/16: Fvr-z8zJQ56RiEH2Afos8g - release-update-verify-icecat-linux-9/16: Gj2AwNo6SIG1WF6HnOuBzg - release-update-verify-icecat-linux64-1/16: TWngrlGDRHeX7mvM2OD_kQ - release-update-verify-icecat-linux64-10/16: S6hS3U9UTCaiPjwBcUO-YA - release-update-verify-icecat-linux64-11/16: HsY1E5huQ8u48qdCj1wYaA - release-update-verify-icecat-linux64-12/16: NuhQcFJHSyy7KjELAEmY6Q - release-update-verify-icecat-linux64-13/16: H11_6M9jR124FBdyCuK1kw - release-update-verify-icecat-linux64-14/16: Jv0_FaDjSZix5jLiwSqYtg - release-update-verify-icecat-linux64-15/16: BeScAkGCRaG0zp9qPKa_xQ - release-update-verify-icecat-linux64-16/16: c6G_0j30RaarLNEFM0aEZw - release-update-verify-icecat-linux64-2/16: VOTuf7AGRi2XvSP-KxBVdg - release-update-verify-icecat-linux64-3/16: Q_P3irKORyi5CfbhBSD_iA - release-update-verify-icecat-linux64-4/16: DUAjl_x7TrSxcWGF71vakA - release-update-verify-icecat-linux64-5/16: ZECOFAC8Ta26PPs1Vu7UjA - release-update-verify-icecat-linux64-6/16: JR0JCP4CTHms-yiDbuyA-w - release-update-verify-icecat-linux64-7/16: cP8LtJbCQFW63byCIS8Khg - release-update-verify-icecat-linux64-8/16: dd7EHrX_SRC2H3dqTFOMSg - release-update-verify-icecat-linux64-9/16: PPjTOB8ATmGFttHVzN39mQ - release-update-verify-icecat-linux64-aarch64-1/16: bxR8TRpFRweGLgw11Lj1fw - release-update-verify-icecat-linux64-aarch64-10/16: WU9rCxsLQmix-t8VhF9LZQ - release-update-verify-icecat-linux64-aarch64-11/16: GiWarx8ATvq3hgpBO4QGsA - release-update-verify-icecat-linux64-aarch64-12/16: HlV7vKrZQUu2W7Eg1O9JHA - release-update-verify-icecat-linux64-aarch64-13/16: HZ6WYxtPTXOCop6dPTSO5Q - release-update-verify-icecat-linux64-aarch64-14/16: SZC20KjpRLmB0J2tfmL2Sw - release-update-verify-icecat-linux64-aarch64-15/16: H6Qmnsr1S_i3XVlRk89uKA - release-update-verify-icecat-linux64-aarch64-16/16: SwuT9hs4SiCDRL80MxwTww - release-update-verify-icecat-linux64-aarch64-2/16: IUF_CqAYToGFCy2jbBDYzw - release-update-verify-icecat-linux64-aarch64-3/16: SoN8_I96TeGtOKXCFLkgZw - release-update-verify-icecat-linux64-aarch64-4/16: CPYrjYYgRtuS7pZ1e5eG9Q - release-update-verify-icecat-linux64-aarch64-5/16: KkSWudXlQVOKbeRGQDoYtg - release-update-verify-icecat-linux64-aarch64-6/16: AzhHF0beS9Sjx0USv2FU0Q - release-update-verify-icecat-linux64-aarch64-7/16: EoU1IvVlRLqNT1GQwu14LA - release-update-verify-icecat-linux64-aarch64-8/16: KLSZvkjOQoyErQ_-Yta_yw - release-update-verify-icecat-linux64-aarch64-9/16: MEfXkrdRSfasebGbYdqEnA - release-update-verify-icecat-macosx64-1/30: OjhRD707Rz6iBZySdRscXA - release-update-verify-icecat-macosx64-10/30: QPt-5NUgQ76t-1VJ8Whdhw - release-update-verify-icecat-macosx64-11/30: RwmISB44SxC4oeLbRdZxBQ - release-update-verify-icecat-macosx64-12/30: M-qWyVOwRUeV77XZlsK2Lg - release-update-verify-icecat-macosx64-13/30: Nz0DgUXnT7KsmQuD4XUQPw - release-update-verify-icecat-macosx64-14/30: Gc0TyvrkR2OSbwwvCtSXIQ - release-update-verify-icecat-macosx64-15/30: Hn1DDulxQMmcfjAfOAceEQ - release-update-verify-icecat-macosx64-16/30: OEa7pAVeTTC932GVX1NH2A - release-update-verify-icecat-macosx64-17/30: HJ60OaO6R8W8YGXf0pXnMA - release-update-verify-icecat-macosx64-18/30: QKRYHd5LTN6rHyOBq_lTqA - release-update-verify-icecat-macosx64-19/30: Wh7x3vQQSNKPdSyGvJiCug - release-update-verify-icecat-macosx64-2/30: H2syViagR56m5My0eLqVBQ - release-update-verify-icecat-macosx64-20/30: HfBV7JPTTsWVOhbfUTXAPw - release-update-verify-icecat-macosx64-21/30: AvPmJhbsSXe0H-3pgtxA8Q - release-update-verify-icecat-macosx64-22/30: b0V5bhMpQhKgL4yVPCGm1A - release-update-verify-icecat-macosx64-23/30: DeZgh3EuTTuFtKBEVpaTFg - release-update-verify-icecat-macosx64-24/30: YM_AEtwqRSO4m8fRdw73qw - release-update-verify-icecat-macosx64-25/30: BdFvxXdrRzaWhVIMkxqxGg - release-update-verify-icecat-macosx64-26/30: EP4ZjiQhRRGp3VlkfM5hUA - release-update-verify-icecat-macosx64-27/30: FTOPjABhSrypUbqP1hnqBg - release-update-verify-icecat-macosx64-28/30: NhYAos86RfO35zRGq9eVfA - release-update-verify-icecat-macosx64-29/30: SXtKb8TASfCCTIS1nIi_Og - release-update-verify-icecat-macosx64-3/30: a_eYswFKQBO2YZV1rrJcuw - release-update-verify-icecat-macosx64-30/30: DJJUWxo-QgG0dmyPsknc3A - release-update-verify-icecat-macosx64-4/30: XN2Pvya0Rne3JcP76WQ2FQ - release-update-verify-icecat-macosx64-5/30: H9dAwMzET8GVBrsKNnpSmQ - release-update-verify-icecat-macosx64-6/30: HZogCup-SJKkNOg94BO0-g - release-update-verify-icecat-macosx64-7/30: P7JbSZvlRP6R72ACOyI62g - release-update-verify-icecat-macosx64-8/30: IRFXGUVJSDWwghHP6ogqfA - release-update-verify-icecat-macosx64-9/30: Ir3O11xmRjeZandbv5DtLw - release-update-verify-icecat-win32-1/16: HZRDPlkgTEW1yQeW3ie6yA - release-update-verify-icecat-win32-10/16: bmpPaH1wSJi_9MUzWMe88g - release-update-verify-icecat-win32-11/16: P8hnOKAySF2c9EWTXGYq0Q - release-update-verify-icecat-win32-12/16: NkYf-0jgSiONB8qB9BjuBQ - release-update-verify-icecat-win32-13/16: WSLpe4goR9m91RdS0qjPHA - release-update-verify-icecat-win32-14/16: LFICw3j-Su-f019FU0B6dw - release-update-verify-icecat-win32-15/16: LSB5bfBaRbatXro-whnh2w - release-update-verify-icecat-win32-16/16: eDbVBI_1TwWc9xIRVF9-nw - release-update-verify-icecat-win32-2/16: ZniypksURjyLt6pKLgIldQ - release-update-verify-icecat-win32-3/16: OCLDfRDzR8GjVqf14S66bA - release-update-verify-icecat-win32-4/16: SX_8cGpKSHy4VGzZOsQBdg - release-update-verify-icecat-win32-5/16: EVlmC_Q6S5KJyKDbBJSj_g - release-update-verify-icecat-win32-6/16: TYeKuPfxRYefTaYvYleMBQ - release-update-verify-icecat-win32-7/16: YRVW2xV2Shy03WSoQkn9RQ - release-update-verify-icecat-win32-8/16: VIpGbSIoR3mLw9NLtywZ2A - release-update-verify-icecat-win32-9/16: egv5yR0MTcOc2DnGdpjieQ - release-update-verify-icecat-win64-1/16: Hjb5_NAZSQmRzo15-BW6hQ - release-update-verify-icecat-win64-10/16: RaIoyTLyQCe0sw18x2Zu3Q - release-update-verify-icecat-win64-11/16: a1SR7ZRBSASbHtbEgPR6sg - release-update-verify-icecat-win64-12/16: HK5A_WUQTiSSoYfo8NWNBA - release-update-verify-icecat-win64-13/16: Wfs3HtFUTc6W0OeUMGS1jA - release-update-verify-icecat-win64-14/16: D8On59dNQyG0QxCnaGinwQ - release-update-verify-icecat-win64-15/16: T9FoEC0wR7OCoxCEQJQGNw - release-update-verify-icecat-win64-16/16: eV8k9xBfTvSOhZ9bZL2qVA - release-update-verify-icecat-win64-2/16: b1kkPu22ThWKefP4A3sHhw - release-update-verify-icecat-win64-3/16: BNcIu-4dQLCVGkL4vPJ6PA - release-update-verify-icecat-win64-4/16: SuPC07JmQJ6nDEt9GkMFRQ - release-update-verify-icecat-win64-5/16: Lmj5O_OqSw6QJWPiQ4MzUA - release-update-verify-icecat-win64-6/16: Oy_jz7tBTcGrCH3VkR5NUA - release-update-verify-icecat-win64-7/16: X6G3MWkXT46gotnwgsr4kA - release-update-verify-icecat-win64-8/16: bE49rYG0QhmEfAQZOSzKjw - release-update-verify-icecat-win64-9/16: VuN3jl_qQ66bHGIOTRFmJA - release-update-verify-icecat-win64-aarch64-1/16: bURQYOMcS9iDtNd2Zu1ojQ - release-update-verify-icecat-win64-aarch64-10/16: czWtok2PSZKfNdkB2KvnhA - release-update-verify-icecat-win64-aarch64-11/16: SC9ooWD8QeqVE7htSN7g-w - release-update-verify-icecat-win64-aarch64-12/16: ZKe5eMOXTz2BGTK3U4FVpQ - release-update-verify-icecat-win64-aarch64-13/16: WSLdODJkTBGdz5SkM5ygRg - release-update-verify-icecat-win64-aarch64-14/16: BQlMnTZqQ9OWEMcyb5RDAQ - release-update-verify-icecat-win64-aarch64-15/16: flOQpiRaQt-JcBkV2lUkoA - release-update-verify-icecat-win64-aarch64-16/16: MH-XErQ7S3OCCfS5knuRPg - release-update-verify-icecat-win64-aarch64-2/16: LopuLdjBSWassEhoCBXW0Q - release-update-verify-icecat-win64-aarch64-3/16: Q9b2SPilReqwdEQSjH5KeQ - release-update-verify-icecat-win64-aarch64-4/16: XJbOtqmKQzuQG3Exrbad5w - release-update-verify-icecat-win64-aarch64-5/16: YCNHokgtSy602kk--3hELA - release-update-verify-icecat-win64-aarch64-6/16: OvryRSzfTqCIo_1zLQUz5A - release-update-verify-icecat-win64-aarch64-7/16: Ov-IPk_ARBCLyGRO_PTrag - release-update-verify-icecat-win64-aarch64-8/16: D_RujYbPTrelIXxy4EwAvw - release-update-verify-icecat-win64-aarch64-9/16: IeYgv82kQ4i6tgqLQUyVIg - repackage-deb-l10n-ach-linux64-shippable/opt: SWK2b5MTTXCGHtb8d9Lu7g - repackage-deb-l10n-af-linux64-shippable/opt: GCTixFsGS0GLgTILeXzRpA - repackage-deb-l10n-an-linux64-shippable/opt: VG7XmvgDTpGBg8QqjuqQAQ - repackage-deb-l10n-ar-linux64-shippable/opt: WkuzIGZARuKvimrbXZwiaQ - repackage-deb-l10n-ast-linux64-shippable/opt: U_Dfa1a1S3y1egOAfmI4oA - repackage-deb-l10n-az-linux64-shippable/opt: EgsG3CdtTMWrV069vnGU_Q - repackage-deb-l10n-be-linux64-shippable/opt: bZPa9K8_RD2bi60ddtnmcA - repackage-deb-l10n-bg-linux64-shippable/opt: crJJVXQBRIW3HEemeM7npg - repackage-deb-l10n-bn-linux64-shippable/opt: EUm3gdyJS_upehW4Oew8NQ - repackage-deb-l10n-br-linux64-shippable/opt: LEz9nQLYTseweMo9c9mslw - repackage-deb-l10n-bs-linux64-shippable/opt: Nh4MDyqeRdSMu-__Bo9RjA - repackage-deb-l10n-ca-linux64-shippable/opt: AFiUr_R-Qz6P7N-jHLz0AQ - repackage-deb-l10n-ca-valencia-linux64-shippable/opt: QmG7NyLpSyeQd6uzEGy9yQ - repackage-deb-l10n-cak-linux64-shippable/opt: X_ow2BcmTUaMGl_6lgBBDQ - repackage-deb-l10n-cs-linux64-shippable/opt: DBhgieCqSfauhhFWotvQzQ - repackage-deb-l10n-cy-linux64-shippable/opt: USwMWu_XTOKD9zxbtobC0g - repackage-deb-l10n-da-linux64-shippable/opt: QnEg3-g3SlWfQIo6-4rSng - repackage-deb-l10n-de-linux64-shippable/opt: FzEI8GLlTEGg_syccFQWIA - repackage-deb-l10n-dsb-linux64-shippable/opt: VFmF_EOjQpC_DjQW497dxw - repackage-deb-l10n-el-linux64-shippable/opt: cEI5_kmzQEymFSOG29WNTg - repackage-deb-l10n-en-CA-linux64-shippable/opt: cyFukl7ETIqUztB0zeFtzg - repackage-deb-l10n-en-GB-linux64-shippable/opt: J_39oRaXT52TQH3JFcOO5w - repackage-deb-l10n-eo-linux64-shippable/opt: Do-Gfj_bQK-THWwrSouI8g - repackage-deb-l10n-es-AR-linux64-shippable/opt: LqOa_N86SRSwjoB9UhugmA - repackage-deb-l10n-es-CL-linux64-shippable/opt: SBEJVk7fQuqF3aajng7Rmg - repackage-deb-l10n-es-ES-linux64-shippable/opt: bkNY6vNVSbCQeUMUxeYhmw - repackage-deb-l10n-es-MX-linux64-shippable/opt: COcqqmQEQZiEeHoXmb2tHw - repackage-deb-l10n-et-linux64-shippable/opt: DB8xxOixSXyZeoyDxtjT8w - repackage-deb-l10n-eu-linux64-shippable/opt: c8OvCxIdSPK6yH24LsI6xg - repackage-deb-l10n-fa-linux64-shippable/opt: P2QYv-WWQSa9ZkWmPYdl8w - repackage-deb-l10n-ff-linux64-shippable/opt: BNLo9bSlRAm3ijcj7l8Zag - repackage-deb-l10n-fi-linux64-shippable/opt: Pfbh926NQ8GjKUys_ogIjQ - repackage-deb-l10n-fr-linux64-shippable/opt: QZjyeQcaQqKNIksFCgmuYg - repackage-deb-l10n-fur-linux64-shippable/opt: dNNAz4lKQziAHI5ugaknFg - repackage-deb-l10n-fy-NL-linux64-shippable/opt: b8wbafuuTCW6iuYhVICNew - repackage-deb-l10n-ga-IE-linux64-shippable/opt: IrTr_BcJSYmBxT--4Oc9Ag - repackage-deb-l10n-gd-linux64-shippable/opt: V0O7rOszSVGq-8ShUWrlvA - repackage-deb-l10n-gl-linux64-shippable/opt: J6ipqK00Q1-77bAUEU8G2A - repackage-deb-l10n-gn-linux64-shippable/opt: RhRr7PMzQcete5fcL1s8ag - repackage-deb-l10n-gu-IN-linux64-shippable/opt: H-sFr83vTHCaW6p5otbrrA - repackage-deb-l10n-he-linux64-shippable/opt: T0822_BcTMGkcKYWw_106g - repackage-deb-l10n-hi-IN-linux64-shippable/opt: B_La3YxtQia2kNDE1EEy3g - repackage-deb-l10n-hr-linux64-shippable/opt: aIaroQVFQNW1jNj8CVPm9g - repackage-deb-l10n-hsb-linux64-shippable/opt: EqeSMFoZSke_SGTnPNLABA - repackage-deb-l10n-hu-linux64-shippable/opt: ch30HfhMSZC5OSf-wkj-Ew - repackage-deb-l10n-hy-AM-linux64-shippable/opt: e4BljbjGSh2IzVJeIRAVgA - repackage-deb-l10n-ia-linux64-shippable/opt: LKtZTVD7QOuArk9K4OE39A - repackage-deb-l10n-id-linux64-shippable/opt: WWR4UWTTTd-anQBT5NKvrg - repackage-deb-l10n-is-linux64-shippable/opt: RRtdz9OcTCSZ0EdLQMgrHA - repackage-deb-l10n-it-linux64-shippable/opt: Rv85BEqBQrOzF-70YEPKIw - repackage-deb-l10n-ja-linux64-shippable/opt: bRrMAFEZSMKLhT3M3O9k5A - repackage-deb-l10n-ka-linux64-shippable/opt: GG8Vt4c0S9qRlA51_Pv_8g - repackage-deb-l10n-kab-linux64-shippable/opt: YNxxM7EKQS2h7uSIFwcDmg - repackage-deb-l10n-kk-linux64-shippable/opt: Otpe3fCoSpePJjyjp5GzfA - repackage-deb-l10n-km-linux64-shippable/opt: P32TdEdiTSeaSq9hZ-_eWQ - repackage-deb-l10n-kn-linux64-shippable/opt: PqA8a_52R4WiEb6kJivB5w - repackage-deb-l10n-ko-linux64-shippable/opt: K5sdCWxkSlyaz6RtLpA7YA - repackage-deb-l10n-lij-linux64-shippable/opt: XCotskQuT_ywqbZ1Fz1IRg - repackage-deb-l10n-lt-linux64-shippable/opt: eq3HqM6lSRWqE6X4w9PJ1w - repackage-deb-l10n-lv-linux64-shippable/opt: Om3w_jhhT3-J_U51aAATKA - repackage-deb-l10n-mk-linux64-shippable/opt: ZRKit2DtSbq-0uAmgKNgPg - repackage-deb-l10n-mr-linux64-shippable/opt: CqayKLTBRJ-3Sr2Npch78Q - repackage-deb-l10n-ms-linux64-shippable/opt: Q6qNTP3gSduBI0Hz3ysQ5A - repackage-deb-l10n-my-linux64-shippable/opt: YfQfwkZdQpCWBQKQEYQfUg - repackage-deb-l10n-nb-NO-linux64-shippable/opt: SytEDn3wRiyb9MqGAAifWg - repackage-deb-l10n-ne-NP-linux64-shippable/opt: HqxLmOvAS-yxsJi_RmENqw - repackage-deb-l10n-nl-linux64-shippable/opt: RD-O7lYyRo2iiboUmRdOeA - repackage-deb-l10n-nn-NO-linux64-shippable/opt: aRwT9ZGLRFqkkW_On6tKow - repackage-deb-l10n-oc-linux64-shippable/opt: V-cJ_Kn6SwaFlzoOdQ5Q8Q - repackage-deb-l10n-pa-IN-linux64-shippable/opt: NO9tVSWkS62zlG7bpN0VnQ - repackage-deb-l10n-pl-linux64-shippable/opt: WBHSek-LTtujJ1ipgaiSUg - repackage-deb-l10n-pt-BR-linux64-shippable/opt: efuaAf8nSp6yUJoFYwqvxA - repackage-deb-l10n-pt-PT-linux64-shippable/opt: ZO9hK-A6RWSrVbfdmiEZJg - repackage-deb-l10n-rm-linux64-shippable/opt: A9AqSjIFRqumuLyC3tf5sg - repackage-deb-l10n-ro-linux64-shippable/opt: CYtABiXcRoiU3_zZL9Q3Qw - repackage-deb-l10n-ru-linux64-shippable/opt: HkpZQQmUSwaw4PAEIr0AHA - repackage-deb-l10n-sat-linux64-shippable/opt: MsuRDA9-TcK05e6ItYPLDw - repackage-deb-l10n-sc-linux64-shippable/opt: b684GqneQx6T7XASrYYijg - repackage-deb-l10n-sco-linux64-shippable/opt: JXxth6bRTOCoxMKB34AWZQ - repackage-deb-l10n-si-linux64-shippable/opt: XG5ylex5Ts2OKFz7Pvj2RA - repackage-deb-l10n-sk-linux64-shippable/opt: KHe2ljFcQviR9clo92HmVQ - repackage-deb-l10n-skr-linux64-shippable/opt: TuB8iDBzTyO2k35CC9niTQ - repackage-deb-l10n-sl-linux64-shippable/opt: Hv8e-fuwStmoybbGHKbHgA - repackage-deb-l10n-son-linux64-shippable/opt: aKP5q_44S_OruEABFn6oTA - repackage-deb-l10n-sq-linux64-shippable/opt: Ryq1jtw0RQGdeGQJA1lz6g - repackage-deb-l10n-sr-linux64-shippable/opt: DkS7rYvaQfqGewvaAJrvwg - repackage-deb-l10n-sv-SE-linux64-shippable/opt: Y_TBncDXQga1NwdzxIzGOw - repackage-deb-l10n-szl-linux64-shippable/opt: Y3aCye6fSSq2-SMXXumrSg - repackage-deb-l10n-ta-linux64-shippable/opt: Nl5Uf1nwQJSSWKJO0I71vQ - repackage-deb-l10n-te-linux64-shippable/opt: eJBusmnJQ12tDixHa21mxw - repackage-deb-l10n-tg-linux64-shippable/opt: R_DIe5C_SwalBbg2FOEAyg - repackage-deb-l10n-th-linux64-shippable/opt: ZFdBKYjuQEyCM2JjlWeMpw - repackage-deb-l10n-tl-linux64-shippable/opt: D3MNT3VnTUiBlPKJ5kCxyg - repackage-deb-l10n-tr-linux64-shippable/opt: Z9rfcwfOR52RYO-aEjxyRA - repackage-deb-l10n-trs-linux64-shippable/opt: IE1c8a9lRUu3pi4bvMOMVg - repackage-deb-l10n-uk-linux64-shippable/opt: CO_ftllPTIq8Bi1x0qeD0w - repackage-deb-l10n-ur-linux64-shippable/opt: DkXCML4cS6CDTlP8vYJOhA - repackage-deb-l10n-uz-linux64-shippable/opt: arEAHFSzRZCIlicS9mMiuQ - repackage-deb-l10n-vi-linux64-shippable/opt: UF6eh338Tz-60PsI_UkbAw - repackage-deb-l10n-xh-linux64-shippable/opt: fA10lvWkRBu5lzYPhfFACQ - repackage-deb-l10n-zh-CN-linux64-shippable/opt: QVIx-TDdQC-S5VxgFtZj5A - repackage-deb-l10n-zh-TW-linux64-shippable/opt: JeWKNHeXTF2qmZUkJ1_ogQ - repackage-deb-linux-shippable/opt: PdNC7eEsQQqpOp-Xo7gYtg - repackage-deb-linux64-aarch64-shippable/opt: D1rmhi-8Q9iY6vyRuxm9jw - repackage-deb-linux64-shippable/opt: fvzRcbP6T2mBiyQudMUcFA - repackage-flatpak-linux64-aarch64-shippable/opt: Z9NacGznS4CDhaPIpRzYqA - repackage-flatpak-linux64-shippable/opt: WdorChWbT0aDmT4RLAH_Fg - repackage-l10n-ach-linux-shippable/opt: V-YJVzEiTQCpRDunD9niSg - repackage-l10n-ach-linux64-aarch64-shippable/opt: cLHgWPziTAWHoiwaooMN0Q - repackage-l10n-ach-linux64-shippable/opt: BIea75ZVTHOBIxirobbhzA - repackage-l10n-ach-macosx64-shippable/opt: QtrXOe91Q4WvQ0NgyjPAbg - repackage-l10n-ach-win32-shippable/opt: SwjCRQYXSWW7xBkNnipwuw - repackage-l10n-ach-win64-aarch64-shippable/opt: XFuxqti6RQ22MhEvRCpksg - repackage-l10n-ach-win64-shippable/opt: Bjb3Tm0hQo-pq2uNXx0SeQ - repackage-l10n-af-linux-shippable/opt: AxF_cP1DSSW6yw-2lR4Cdg - repackage-l10n-af-linux64-aarch64-shippable/opt: X6qFsVyxSrGjHBjkyjmZtw - repackage-l10n-af-linux64-shippable/opt: GTjaSmXCRImdHgHkqEL7MA - repackage-l10n-af-macosx64-shippable/opt: IuLapToKQRODyKxiBePmtA - repackage-l10n-af-win32-shippable/opt: EI--Cy_0TvmKaZTDTDc-Uw - repackage-l10n-af-win64-aarch64-shippable/opt: PPYmP29sRMS3HBvmQgL9PQ - repackage-l10n-af-win64-shippable/opt: LQ9BJwtbSPGUc1jYqkxFfA - repackage-l10n-an-linux-shippable/opt: X2vpwJY5SdyL1zFVgIWtuQ - repackage-l10n-an-linux64-aarch64-shippable/opt: HoGJ8v0cSV2CCAz_dEA_fQ - repackage-l10n-an-linux64-shippable/opt: NHyGNDtITwG6vgXqWI3YrQ - repackage-l10n-an-macosx64-shippable/opt: MLyy2mMnT_m-UDUOHoXeAg - repackage-l10n-an-win32-shippable/opt: PHET7mEcSxuxgngz9_nvmg - repackage-l10n-an-win64-aarch64-shippable/opt: IxNNM4U6R_aFz23tnbjGYw - repackage-l10n-an-win64-shippable/opt: LTdB1HI0TdWYLMt4dLiJdw - repackage-l10n-ar-linux-shippable/opt: dRCEi01jThub_fYxeeYOlg - repackage-l10n-ar-linux64-aarch64-shippable/opt: EtacAQQlQ2aYmJ9Scc2DvQ - repackage-l10n-ar-linux64-shippable/opt: QM1tuwPTQMiXVjSD54gXRg - repackage-l10n-ar-macosx64-shippable/opt: UfLVqUamTGmaF_ZEvt7-3g - repackage-l10n-ar-win32-shippable/opt: QYXijuewTc68qffN6ZgzgQ - repackage-l10n-ar-win64-aarch64-shippable/opt: JpJ5IJujQN2jRPRjnCw66w - repackage-l10n-ar-win64-shippable/opt: Gv5KTnSKSU-id8rfw6mrxg - repackage-l10n-ast-linux-shippable/opt: P7SU1Im1SpWfC8MjSUXsUw - repackage-l10n-ast-linux64-aarch64-shippable/opt: JIxUsgEORMuiT7L_pfhw3Q - repackage-l10n-ast-linux64-shippable/opt: Oh78VcScRAutAAcWFIZneQ - repackage-l10n-ast-macosx64-shippable/opt: KdS9jEPESsO6xf3c8rFuYg - repackage-l10n-ast-win32-shippable/opt: d4xqBMx8RX-q1DKsydqnSg - repackage-l10n-ast-win64-aarch64-shippable/opt: Tu1igk_9RlyA9RbSBZnqlA - repackage-l10n-ast-win64-shippable/opt: MFDbM43OTTKZHdMkjasgPg - repackage-l10n-az-linux-shippable/opt: R3K68GGLRUSU6RP4XnizxA - repackage-l10n-az-linux64-aarch64-shippable/opt: XlGXaf25ScSu3elaJWt68Q - repackage-l10n-az-linux64-shippable/opt: Hf3CIeFYSK2dLSCxK0lwNQ - repackage-l10n-az-macosx64-shippable/opt: CjPLYkouSdGMuGMzu1X6sw - repackage-l10n-az-win32-shippable/opt: ZqUVifGPRLKuWZTAKDT2gw - repackage-l10n-az-win64-aarch64-shippable/opt: EfXn9P16Q66oJPilxyc0eA - repackage-l10n-az-win64-shippable/opt: HZPIBS2YSICAy2OOVA70cA - repackage-l10n-be-linux-shippable/opt: GIFknVUwQQamQ0hywPmEsw - repackage-l10n-be-linux64-aarch64-shippable/opt: Q2bdWx4GRBG7wE_M9TyJ3A - repackage-l10n-be-linux64-shippable/opt: SSTVHjAWT0awtzQoxf9lag - repackage-l10n-be-macosx64-shippable/opt: QrejfK7STSyvgPTMHQCV2w - repackage-l10n-be-win32-shippable/opt: L4igzcrhSK6TwLIj3ge6uQ - repackage-l10n-be-win64-aarch64-shippable/opt: D_lGLmGNSOa52wx8jAJGfw - repackage-l10n-be-win64-shippable/opt: GJRSuDsFSiKEPkKiakkjOQ - repackage-l10n-bg-linux-shippable/opt: d6HSE6IMTl-kv-oM22seCw - repackage-l10n-bg-linux64-aarch64-shippable/opt: YTpmKGsgSAixd2FyngMUDA - repackage-l10n-bg-linux64-shippable/opt: YRpRBcZITzqmf7LBZReFNw - repackage-l10n-bg-macosx64-shippable/opt: cogakjDWQG6YosvYmu0QIA - repackage-l10n-bg-win32-shippable/opt: VTcZ5sB1SaeV5sOD9KL2mQ - repackage-l10n-bg-win64-aarch64-shippable/opt: Lf7CJ3LuTG2PH42n6F1OfQ - repackage-l10n-bg-win64-shippable/opt: BMK9pOqGTjW8N41xTbBpJA - repackage-l10n-bn-linux-shippable/opt: NrpTwdhcStyidXrDH40vYw - repackage-l10n-bn-linux64-aarch64-shippable/opt: eJd6_MSfSWS3aWTMDLQfjA - repackage-l10n-bn-linux64-shippable/opt: Quq2AMDSSNeR_bRjTV_ozQ - repackage-l10n-bn-macosx64-shippable/opt: Aa1lR3u2S86UJK8WVguvGA - repackage-l10n-bn-win32-shippable/opt: PmCEc_c-Si-1Wk1JVvd8Rw - repackage-l10n-bn-win64-aarch64-shippable/opt: U4czMe6vRPGc7PyJ4rDSpw - repackage-l10n-bn-win64-shippable/opt: SuXRmox2QjWmmhQZbnGaww - repackage-l10n-br-linux-shippable/opt: XgPB-IZoQ1-pbfcsCnx-gw - repackage-l10n-br-linux64-aarch64-shippable/opt: er5qwYnRQByi3X2JTVHrsA - repackage-l10n-br-linux64-shippable/opt: ZctxWxbbStaTaqEwjZ8m1Q - repackage-l10n-br-macosx64-shippable/opt: QEMrn9RKQ_W2AoD4h5k8jQ - repackage-l10n-br-win32-shippable/opt: YA-J0dyoRDm3VecNaOYLfg - repackage-l10n-br-win64-aarch64-shippable/opt: XYB5BFRDRXO--u9oNeidvQ - repackage-l10n-br-win64-shippable/opt: CG1euqJbTuSDOy7ENXBxow - repackage-l10n-bs-linux-shippable/opt: Y07tk8NGTneloO_D5rQhjQ - repackage-l10n-bs-linux64-aarch64-shippable/opt: ZECr-KfDQheeOMqhb048Xw - repackage-l10n-bs-linux64-shippable/opt: PRdR_p4dSdybGmUCsU2HvQ - repackage-l10n-bs-macosx64-shippable/opt: WkFe6kL_T5mAF6xQ5O_Dzg - repackage-l10n-bs-win32-shippable/opt: dIYmOSZ9SmeFrLcQIqliDA - repackage-l10n-bs-win64-aarch64-shippable/opt: SJFrpL5ySu2E0VqGTFa9_g - repackage-l10n-bs-win64-shippable/opt: QTIaEtlGSpGAnjaT-qM90w - repackage-l10n-ca-linux-shippable/opt: Wo3pHm8WS4ekJrt_fzoWLQ - repackage-l10n-ca-linux64-aarch64-shippable/opt: durBzyDqSwyHpW44v0l4MQ - repackage-l10n-ca-linux64-shippable/opt: ZUN1_BydQhmm3_iEw_rDwg - repackage-l10n-ca-macosx64-shippable/opt: FxD6Xd3ATZud55TbidZ8tw - repackage-l10n-ca-valencia-linux-shippable/opt: GH83szsyTFWoClzZFmg5tw - repackage-l10n-ca-valencia-linux64-aarch64-shippable/opt: ExyrBj3xSVubj1eMKYc-aQ - repackage-l10n-ca-valencia-linux64-shippable/opt: RjyRS_niSBGH2pUybwltdQ - repackage-l10n-ca-valencia-macosx64-shippable/opt: b2FlM1IhR_CgS_nn0zut8g - repackage-l10n-ca-valencia-win32-shippable/opt: bqdMqFZFQ1G-6kDD8jLknA - repackage-l10n-ca-valencia-win64-aarch64-shippable/opt: SgFAyWu3RYOGEoXsf43RGw - repackage-l10n-ca-valencia-win64-shippable/opt: doDDpBl4SAOS220gse9ueQ - repackage-l10n-ca-win32-shippable/opt: CcOEykfbT0GeVasWc-riWQ - repackage-l10n-ca-win64-aarch64-shippable/opt: U1Bcrb3oSeWSDsj8jlVGYw - repackage-l10n-ca-win64-shippable/opt: ckH7CZXfSOqJxWbQGRx_MQ - repackage-l10n-cak-linux-shippable/opt: eh8ssLtfTVG16VmaBnUVzA - repackage-l10n-cak-linux64-aarch64-shippable/opt: bsVQYwQfRdWGq7uD_UV70g - repackage-l10n-cak-linux64-shippable/opt: DpxOKM2MR1mjgekbSrAjDA - repackage-l10n-cak-macosx64-shippable/opt: WerYBy9tQPuB5JkNMssk_g - repackage-l10n-cak-win32-shippable/opt: APA3kBCyRGCEXhg2YhO_3Q - repackage-l10n-cak-win64-aarch64-shippable/opt: N-LUcrcRTSW_JeS_k30Xrg - repackage-l10n-cak-win64-shippable/opt: Dijl3Dk2SNSfVJkFBCtPUw - repackage-l10n-cs-linux-shippable/opt: anaWad-PT1qfxGBx-epAjA - repackage-l10n-cs-linux64-aarch64-shippable/opt: ArCpywBIQL2ADUHFWHm9tw - repackage-l10n-cs-linux64-shippable/opt: fjtZK85DRyaPBUGzLJtcig - repackage-l10n-cs-macosx64-shippable/opt: K5ZOdX6MQJuSrHRWGGZv-A - repackage-l10n-cs-win32-shippable/opt: KKJicJ0_Qlinv6P5iJpzlA - repackage-l10n-cs-win64-aarch64-shippable/opt: VXwKc68QRCmoM2R5lPw8IA - repackage-l10n-cs-win64-shippable/opt: ekUgrxIzReyOy15POu9qSQ - repackage-l10n-cy-linux-shippable/opt: LXRQV8gBQ0GwEQ3df5Nf6g - repackage-l10n-cy-linux64-aarch64-shippable/opt: UVH8VOCsTRWhJeKksWsebw - repackage-l10n-cy-linux64-shippable/opt: ZTIN18jkTkGbrYAiiTpEzg - repackage-l10n-cy-macosx64-shippable/opt: M6Av91guTbCwdwOfdtBSpA - repackage-l10n-cy-win32-shippable/opt: Kaf0OCTNSsmwsxitvTefHA - repackage-l10n-cy-win64-aarch64-shippable/opt: Y8iIAmJ_TOS0sgvSPBqAtw - repackage-l10n-cy-win64-shippable/opt: aC0qTYVzQYW2-wUxZgyr-A - repackage-l10n-da-linux-shippable/opt: cK5qYgv6QUaetPeM9tgaIQ - repackage-l10n-da-linux64-aarch64-shippable/opt: K4837lVxR3K8m88ui61NTQ - repackage-l10n-da-linux64-shippable/opt: HGtYFrT8QPmDWEsh_POUsg - repackage-l10n-da-macosx64-shippable/opt: J9ssmfStQlO2y5p9KExC_w - repackage-l10n-da-win32-shippable/opt: RDz6q86OQvaaD2tBPRosuA - repackage-l10n-da-win64-aarch64-shippable/opt: aFAR9nduQh23sQeGyJvxoQ - repackage-l10n-da-win64-shippable/opt: Mo371bkFQsOwX0hr4kqw5w - repackage-l10n-de-linux-shippable/opt: b6BXm_f7Qd2hIMjOAXMIeA - repackage-l10n-de-linux64-aarch64-shippable/opt: V-XuZL7yTCydzdA9uJgxmw - repackage-l10n-de-linux64-shippable/opt: JJ4VwrE2TiComRQ9Pxzmxg - repackage-l10n-de-macosx64-shippable/opt: CK0hJpTIRgmRziI0Q5Z_HQ - repackage-l10n-de-win32-shippable/opt: UzK00-6mR3qK1NXrMF8GWQ - repackage-l10n-de-win64-aarch64-shippable/opt: fgya5ROwRSWGo3Rog6FTLQ - repackage-l10n-de-win64-shippable/opt: e4fl51e-SimtwxfDNK5djg - repackage-l10n-dsb-linux-shippable/opt: Xu7woDDYTAWicrby68xLsg - repackage-l10n-dsb-linux64-aarch64-shippable/opt: EKK3MxM4R7iLb1e9mvp_QA - repackage-l10n-dsb-linux64-shippable/opt: OJV3Hqm9Taqmyg1tUU2IFg - repackage-l10n-dsb-macosx64-shippable/opt: QUJp1pNNQQG1fWfe-7pYbg - repackage-l10n-dsb-win32-shippable/opt: Bp8jkf-kTfuu3ggY51qU1g - repackage-l10n-dsb-win64-aarch64-shippable/opt: dw13-rjTQAuZXU5GDT2cow - repackage-l10n-dsb-win64-shippable/opt: YRGkNAAfSJGMely8gcV8qA - repackage-l10n-el-linux-shippable/opt: J7YVpNA6Qfi9B8oQy2CXEw - repackage-l10n-el-linux64-aarch64-shippable/opt: VylI5EecTBa0atLaJoDmLg - repackage-l10n-el-linux64-shippable/opt: fn5kbdywR8iErsaopO4Osg - repackage-l10n-el-macosx64-shippable/opt: OorD4SyRQKmcSmXDTSiOlg - repackage-l10n-el-win32-shippable/opt: IEw5ATRhT_CqQwxwkTZGCg - repackage-l10n-el-win64-aarch64-shippable/opt: PSFf8hSwTFm06gKm5Yo2Tw - repackage-l10n-el-win64-shippable/opt: TRwwFqnJRD6cLCvk88s7Cg - repackage-l10n-en-CA-linux-shippable/opt: PmV4Lt-YROG5sPE4nQxfyQ - repackage-l10n-en-CA-linux64-aarch64-shippable/opt: Ehv-1_wLR4q-mAMMYe1TVw - repackage-l10n-en-CA-linux64-shippable/opt: EWd8xgJ9RfWIrjez5FU1PA - repackage-l10n-en-CA-macosx64-shippable/opt: UHnJNtbOR9icYlCUWx6zhg - repackage-l10n-en-CA-win32-shippable/opt: H6dfuJ_UT6G9Wwct1d9Plw - repackage-l10n-en-CA-win64-aarch64-shippable/opt: Jqdqzy74Rx2Sew5f1IAMrg - repackage-l10n-en-CA-win64-shippable/opt: aq3tY3PTTEqT_vN7yVBANw - repackage-l10n-en-GB-linux-shippable/opt: TQ0hhnDoRd6gh7T2rZQy8w - repackage-l10n-en-GB-linux64-aarch64-shippable/opt: LfSq3zU0Sb2NsOfTM76k2g - repackage-l10n-en-GB-linux64-shippable/opt: aAwXYiaZTvCzhLgOb7MzMw - repackage-l10n-en-GB-macosx64-shippable/opt: Hf0V44qiRniFn-aTn5FJnA - repackage-l10n-en-GB-win32-shippable/opt: BMXfIV3nSv-W6zsyB1e-yw - repackage-l10n-en-GB-win64-aarch64-shippable/opt: P8pKEz4WTWiQRKy3t66wMQ - repackage-l10n-en-GB-win64-shippable/opt: G0ESfRy8QpaNS76uJvAUXg - repackage-l10n-eo-linux-shippable/opt: BVc_WAIqTl-RSfm3KQ3Ybw - repackage-l10n-eo-linux64-aarch64-shippable/opt: X6x5Bp2vSOyDD7hr9XcBUA - repackage-l10n-eo-linux64-shippable/opt: PiLtAeILQ7WQcMnAkZcLPw - repackage-l10n-eo-macosx64-shippable/opt: Zd88W2nBQxWvTlyVPXf9ug - repackage-l10n-eo-win32-shippable/opt: aMerOUwYQhGPkif3fie7pw - repackage-l10n-eo-win64-aarch64-shippable/opt: MkGrRGtzSxe49shRpAPjQQ - repackage-l10n-eo-win64-shippable/opt: JuwSNcg7TB6hQhE3pz2bcQ - repackage-l10n-es-AR-linux-shippable/opt: PFx_JdQ-QcOAKuvtP_A__Q - repackage-l10n-es-AR-linux64-aarch64-shippable/opt: GcbPC0ZkTT-WJmHD55VBug - repackage-l10n-es-AR-linux64-shippable/opt: L94x82dDS463NZvRtJn_Mw - repackage-l10n-es-AR-macosx64-shippable/opt: CptOYQp9Qa610uZBpvxpSA - repackage-l10n-es-AR-win32-shippable/opt: XivO-bWSRX2N2Sd66MVytg - repackage-l10n-es-AR-win64-aarch64-shippable/opt: ANagJKddRAanPB6irqWhDA - repackage-l10n-es-AR-win64-shippable/opt: Wcn7myQgRZSZBRXnT1tu-g - repackage-l10n-es-CL-linux-shippable/opt: KdrOmACXTzuuKcIoXuWRZw - repackage-l10n-es-CL-linux64-aarch64-shippable/opt: WbrBoTpgRg2aeu92PXonpg - repackage-l10n-es-CL-linux64-shippable/opt: Et4e4i8GRmKqWJ_FItneig - repackage-l10n-es-CL-macosx64-shippable/opt: Ov2j_hXcSvqIE84SjURt-A - repackage-l10n-es-CL-win32-shippable/opt: LCP_p6k5TNSEAenKcPeHbA - repackage-l10n-es-CL-win64-aarch64-shippable/opt: WaAsu1gMRJOnXJp4lkfGUg - repackage-l10n-es-CL-win64-shippable/opt: Bs7uEeryQ-iSdi6vVz55Gg - repackage-l10n-es-ES-linux-shippable/opt: CWvDfRJaQ8qf2twd9f8L5Q - repackage-l10n-es-ES-linux64-aarch64-shippable/opt: Et8UJC9xQ1uk0q-xxPZIrQ - repackage-l10n-es-ES-linux64-shippable/opt: C1pgXZEOT3mBNzd2-BBX1Q - repackage-l10n-es-ES-macosx64-shippable/opt: f1ShJpEHRcuLjhMWM6JxjA - repackage-l10n-es-ES-win32-shippable/opt: VbkK0sKcS5atHQsJwDqYbg - repackage-l10n-es-ES-win64-aarch64-shippable/opt: ep-Rd5MQSOmGwurAioRE8g - repackage-l10n-es-ES-win64-shippable/opt: CbbcU9KLS7mwiCWvRtPS9w - repackage-l10n-es-MX-linux-shippable/opt: dkNGD03NSiSzSp5ZQYOECA - repackage-l10n-es-MX-linux64-aarch64-shippable/opt: En3tw8XZSWSORaFuSCEMFg - repackage-l10n-es-MX-linux64-shippable/opt: IvRkeN5RQDuONAaVcXW1Bw - repackage-l10n-es-MX-macosx64-shippable/opt: cdYGsIvIQwyhqazrCHX3iA - repackage-l10n-es-MX-win32-shippable/opt: XHWxRbkTTeqbz0ifaz9v-Q - repackage-l10n-es-MX-win64-aarch64-shippable/opt: YnTY0daySoKHsE5sQ6CgYw - repackage-l10n-es-MX-win64-shippable/opt: XmlmFjJkSYOEky0Ilt787Q - repackage-l10n-et-linux-shippable/opt: MIKi0SK7RuWNN2ZyJRQ_gQ - repackage-l10n-et-linux64-aarch64-shippable/opt: DcJUc5DmRMO-RGXBHwSsUA - repackage-l10n-et-linux64-shippable/opt: MBQHlHCXR5WogjxbygeUHQ - repackage-l10n-et-macosx64-shippable/opt: fMS2bcRsQIG3aDZJWAwiwQ - repackage-l10n-et-win32-shippable/opt: QF8dSq84QO2yUrnWNYUD4Q - repackage-l10n-et-win64-aarch64-shippable/opt: L32a-2NcSmCUGuw6oZZiTw - repackage-l10n-et-win64-shippable/opt: Ev1_x_n8T3m1VO5pyZCFDA - repackage-l10n-eu-linux-shippable/opt: bcFHiGLSQwKMI5JDC0rdnQ - repackage-l10n-eu-linux64-aarch64-shippable/opt: fBZjHCf2QsOc11C0phEbgw - repackage-l10n-eu-linux64-shippable/opt: L-PFSzwgTsOX1hKDL3yQKg - repackage-l10n-eu-macosx64-shippable/opt: HqnaOLSNSpSGpA1J5BaTVA - repackage-l10n-eu-win32-shippable/opt: D_qo1EfrRjiuQqQ5hJyRzA - repackage-l10n-eu-win64-aarch64-shippable/opt: eBT4w3kRS0umRd797y5jSg - repackage-l10n-eu-win64-shippable/opt: eFjeoX3RQmWwLZ5E0SNy_A - repackage-l10n-fa-linux-shippable/opt: VfRX8lGKT26RANGFSubEiA - repackage-l10n-fa-linux64-aarch64-shippable/opt: FxRuY6mMQ0Gi2vqI7faZVQ - repackage-l10n-fa-linux64-shippable/opt: fXjVq-6ESMCm_rlLoRRABw - repackage-l10n-fa-macosx64-shippable/opt: bMrLxEdlRf2y_Vx9a8uLXA - repackage-l10n-fa-win32-shippable/opt: ZNfAlJaKRlu3nZGIdaM1fQ - repackage-l10n-fa-win64-aarch64-shippable/opt: LK_e0_kSQvCTOenyy3sotw - repackage-l10n-fa-win64-shippable/opt: AeN_22STTnSRtQeQXw9HYw - repackage-l10n-ff-linux-shippable/opt: Ou85pHdaQ8OlH2ANV_7Agg - repackage-l10n-ff-linux64-aarch64-shippable/opt: MoaQ7JzdRzWRA7Id-WSM8w - repackage-l10n-ff-linux64-shippable/opt: WXF_1gBzThuOsCR9Jyt4IA - repackage-l10n-ff-macosx64-shippable/opt: H3Evq0OpTMaJR1lwwmdY7A - repackage-l10n-ff-win32-shippable/opt: ElAoMUWRS5Kra6FYXvdZmg - repackage-l10n-ff-win64-aarch64-shippable/opt: KG5Q-XdqQLmmCYk7sS5GpQ - repackage-l10n-ff-win64-shippable/opt: QVmRfiywRXq3gxK0hBvkrw - repackage-l10n-fi-linux-shippable/opt: aVTue_r0Se-p0biqZzSiDg - repackage-l10n-fi-linux64-aarch64-shippable/opt: csm2CkCqSe6A1MWXwJXy_Q - repackage-l10n-fi-linux64-shippable/opt: NJuZ_SdxT3yeskX4bBdvJA - repackage-l10n-fi-macosx64-shippable/opt: exFMf8SSRz68cWwiU_Kiqw - repackage-l10n-fi-win32-shippable/opt: aqjXRYgnQ96xYUmLT71y8A - repackage-l10n-fi-win64-aarch64-shippable/opt: E7M43DtrS_O2iz6LURbdmA - repackage-l10n-fi-win64-shippable/opt: PnYAyol0Ro6kwoX_Y6FBig - repackage-l10n-fr-linux-shippable/opt: Ke08dFV9STCzBJp_vZBFGg - repackage-l10n-fr-linux64-aarch64-shippable/opt: eSLumlcZRfa7vD0MnY5tzg - repackage-l10n-fr-linux64-shippable/opt: f9LLp9bDS0eP3uPll0clgg - repackage-l10n-fr-macosx64-shippable/opt: NIwIe8UgRey3XBvsC5trig - repackage-l10n-fr-win32-shippable/opt: TEPTey2sRFKMvPhnA5ss9w - repackage-l10n-fr-win64-aarch64-shippable/opt: Znggfnu4TTaHWcPs5UurYA - repackage-l10n-fr-win64-shippable/opt: POXerdb5SK-rvurMsCIutw - repackage-l10n-fur-linux-shippable/opt: PKfi5xsnTKWU3owV8sLZYQ - repackage-l10n-fur-linux64-aarch64-shippable/opt: cL5P7ko6RmS8hR5AqPKgMQ - repackage-l10n-fur-linux64-shippable/opt: PdWaE-SYRHSVbLvhLnL-IQ - repackage-l10n-fur-macosx64-shippable/opt: TelY6VJUScWJ7iVAwwH3aw - repackage-l10n-fur-win32-shippable/opt: cPfa1wpxRGeSdKhpWNTJIw - repackage-l10n-fur-win64-aarch64-shippable/opt: GUIPhOyPRuOFe-nRMVZGVg - repackage-l10n-fur-win64-shippable/opt: f2x5kviQSuKl-dcrCWYC1Q - repackage-l10n-fy-NL-linux-shippable/opt: IXrGkGJcS7SGtlc80NxzYQ - repackage-l10n-fy-NL-linux64-aarch64-shippable/opt: FkbYaCMvQ2GP1ycAVJSGAA - repackage-l10n-fy-NL-linux64-shippable/opt: PlW-KskSRPq1O9Pbg5DFQQ - repackage-l10n-fy-NL-macosx64-shippable/opt: EaQVjyy0T9SN2rGLYK7ayw - repackage-l10n-fy-NL-win32-shippable/opt: Aj6dvP-6TlifT-LEPuTFdg - repackage-l10n-fy-NL-win64-aarch64-shippable/opt: a5CY8sLCTcy7_MhCgI7jKw - repackage-l10n-fy-NL-win64-shippable/opt: W2gd270QSYq1DOwEqNEgQg - repackage-l10n-ga-IE-linux-shippable/opt: QIqNStdKSwav2mhedHNJEg - repackage-l10n-ga-IE-linux64-aarch64-shippable/opt: LIyRaegyRQKgaOWWehWMJA - repackage-l10n-ga-IE-linux64-shippable/opt: QfiXHDW1RNOl46mhCdKP-g - repackage-l10n-ga-IE-macosx64-shippable/opt: fzhUR4EySQKJ3ecga8zO9g - repackage-l10n-ga-IE-win32-shippable/opt: JdgzasaFRp2dk3a7_l8QGg - repackage-l10n-ga-IE-win64-aarch64-shippable/opt: JDwPk_THRmKGmGWb4XTHOg - repackage-l10n-ga-IE-win64-shippable/opt: a-CpS-xmTA2JPIE7t-mSyg - repackage-l10n-gd-linux-shippable/opt: HgCa_QOMSXOh-C-oNVIy0w - repackage-l10n-gd-linux64-aarch64-shippable/opt: Hlyat2P_SjqnXgCtreEGSQ - repackage-l10n-gd-linux64-shippable/opt: Z2dTtdbpTUa5HGwr0UGNnw - repackage-l10n-gd-macosx64-shippable/opt: PofMNrAoTXeIggIOyyHehA - repackage-l10n-gd-win32-shippable/opt: Bu0rZGENQd6j8csqqTwwIg - repackage-l10n-gd-win64-aarch64-shippable/opt: Gww8qFxuRV-UVOsEXhB06Q - repackage-l10n-gd-win64-shippable/opt: Ao3F-S0xR8itC0ZRbrjipA - repackage-l10n-gl-linux-shippable/opt: H8XoEIMNRTSDZcH-1RyZZg - repackage-l10n-gl-linux64-aarch64-shippable/opt: dC3pmw6HSgi8DO7UH-g39g - repackage-l10n-gl-linux64-shippable/opt: S4QYESyrRmS5BljnLbuenw - repackage-l10n-gl-macosx64-shippable/opt: TvtIwVuqTEuTD4-74GMe3w - repackage-l10n-gl-win32-shippable/opt: cYh7ejE2SeOzFqo4LqN8eg - repackage-l10n-gl-win64-aarch64-shippable/opt: Jk2n_fr4Qfe1QdAv4VwgRg - repackage-l10n-gl-win64-shippable/opt: IZmoXB4xTe-QghIR66LwvQ - repackage-l10n-gn-linux-shippable/opt: LxBulpM9SJyGhaUrZjSBJA - repackage-l10n-gn-linux64-aarch64-shippable/opt: UpZtOHvTRWmQ1K76R9VYgw - repackage-l10n-gn-linux64-shippable/opt: SBXJzd5MSDuvHPSuwxd7Nw - repackage-l10n-gn-macosx64-shippable/opt: fma7pJkQQDuyaO8SCuLraQ - repackage-l10n-gn-win32-shippable/opt: MDxH0UZ4Q_aPGHSRNd7BfA - repackage-l10n-gn-win64-aarch64-shippable/opt: GoeekwTGS4q3y_DppDZO-g - repackage-l10n-gn-win64-shippable/opt: IxJq_OwYTemk_rSJDTm1Ug - repackage-l10n-gu-IN-linux-shippable/opt: GPNRK4kWS-CDDYg-_q9feQ - repackage-l10n-gu-IN-linux64-aarch64-shippable/opt: M_6N6pFqSIKg2WZ625vK_A - repackage-l10n-gu-IN-linux64-shippable/opt: UyyLlRoPRh-ga4XkGKlcdg - repackage-l10n-gu-IN-macosx64-shippable/opt: Fgnf2eoWQXOiq8q74MvSjA - repackage-l10n-gu-IN-win32-shippable/opt: adOogGqTQh27uVwQl-_ZHg - repackage-l10n-gu-IN-win64-aarch64-shippable/opt: KFlQXoRiSHuVYcaku5NgSw - repackage-l10n-gu-IN-win64-shippable/opt: BkrJe5gaSUOTtfOOMmumGg - repackage-l10n-he-linux-shippable/opt: Fzaz6oQAS1ScdlD4Y0EQTA - repackage-l10n-he-linux64-aarch64-shippable/opt: bGzCoGwZQ0u8P3BfWMBbOQ - repackage-l10n-he-linux64-shippable/opt: WwOsAaB7T7e_kMt0KSvGNQ - repackage-l10n-he-macosx64-shippable/opt: LxucfAFjRNKVWHPsXCDGJw - repackage-l10n-he-win32-shippable/opt: EkJWJskRQ9qkgPaVVrQsiA - repackage-l10n-he-win64-aarch64-shippable/opt: K3PUZfFFRnOcp86TgbSk5w - repackage-l10n-he-win64-shippable/opt: SlmhC3LYQAmztH6tAqxarQ - repackage-l10n-hi-IN-linux-shippable/opt: YFKUmF0pTjmKweD9DPXPSw - repackage-l10n-hi-IN-linux64-aarch64-shippable/opt: TcAEVYcMTviPSuOpKZuOvw - repackage-l10n-hi-IN-linux64-shippable/opt: SXJf85gXQlmnlIixeRp65Q - repackage-l10n-hi-IN-macosx64-shippable/opt: CwCVlEJnQha_0svwiQU0nQ - repackage-l10n-hi-IN-win32-shippable/opt: VsHzFH0KT4ukoDDtrRJJAw - repackage-l10n-hi-IN-win64-aarch64-shippable/opt: BzWMFJLESv2Lua8uq-bvlQ - repackage-l10n-hi-IN-win64-shippable/opt: WwWDGBpOR86idzUQ6StvvQ - repackage-l10n-hr-linux-shippable/opt: Ga_Bq1C_TsyV6XzuLpxRUg - repackage-l10n-hr-linux64-aarch64-shippable/opt: L963NPlOQjC0wlwSd0xUvg - repackage-l10n-hr-linux64-shippable/opt: SCHmCHIVSU6o8una4ItFKQ - repackage-l10n-hr-macosx64-shippable/opt: NQjXSFjLTEqpICz14S9LjA - repackage-l10n-hr-win32-shippable/opt: Y3Aj6_AwRFuK3M3StHt1BA - repackage-l10n-hr-win64-aarch64-shippable/opt: bEt82G-RRja9ToMhCyrukA - repackage-l10n-hr-win64-shippable/opt: L05NtqRlR6Crz8ngrUdM4A - repackage-l10n-hsb-linux-shippable/opt: IvtqF_VpSo2bHLqHu9MKow - repackage-l10n-hsb-linux64-aarch64-shippable/opt: ZIIt1f-KT_madrUboX_KYg - repackage-l10n-hsb-linux64-shippable/opt: K_XaIN1JSImgekHD-BIBlg - repackage-l10n-hsb-macosx64-shippable/opt: Vf3Z_f8BQfuMWtva6OTmZQ - repackage-l10n-hsb-win32-shippable/opt: HoS5qheDQM-1MyY4SwohUg - repackage-l10n-hsb-win64-aarch64-shippable/opt: HMc08_iKS7O1uKbuZKuaMQ - repackage-l10n-hsb-win64-shippable/opt: IfLG6a7pTNC8TW2LeIdPVQ - repackage-l10n-hu-linux-shippable/opt: EjKyc-TpTjSO3yrovDbEaQ - repackage-l10n-hu-linux64-aarch64-shippable/opt: ROqyH60KTLCtv1WUA7vaXg - repackage-l10n-hu-linux64-shippable/opt: OJplNMNdR2-mLR_8ORTpOQ - repackage-l10n-hu-macosx64-shippable/opt: M0H4zkpaT3q1N7FpmzPLjA - repackage-l10n-hu-win32-shippable/opt: ZHF-l78hQjugbymS9H6J_g - repackage-l10n-hu-win64-aarch64-shippable/opt: cHIkW_ptS4eNlI44IEs52g - repackage-l10n-hu-win64-shippable/opt: U7FeS2zcTmG1kiweSCpjqw - repackage-l10n-hy-AM-linux-shippable/opt: DXsIZhnNTdGBAh7iEKPJpQ - repackage-l10n-hy-AM-linux64-aarch64-shippable/opt: GjujIwG2SNCTJPfnzOxjdQ - repackage-l10n-hy-AM-linux64-shippable/opt: MqC0Y1kfTX2J-Hvw9NULeQ - repackage-l10n-hy-AM-macosx64-shippable/opt: Cm1Zj9QbTx2dmxQVAOeqtQ - repackage-l10n-hy-AM-win32-shippable/opt: N5TzgWJEQm-Qhw_s4eelwQ - repackage-l10n-hy-AM-win64-aarch64-shippable/opt: KofNVyijQqSoea3UOW1KUQ - repackage-l10n-hy-AM-win64-shippable/opt: cZ_E-XBQQc-BZcXJBWwjMQ - repackage-l10n-ia-linux-shippable/opt: TpFMZk35QRqYCNefd6pPLA - repackage-l10n-ia-linux64-aarch64-shippable/opt: fQ4W-JG5SNCAoREjGpwftg - repackage-l10n-ia-linux64-shippable/opt: OET_ec2ZQEaaR30SMoazRA - repackage-l10n-ia-macosx64-shippable/opt: BLie0tTjSaGCqZOJj9nd0Q - repackage-l10n-ia-win32-shippable/opt: FwLt8S6nSHupvymwve3tQA - repackage-l10n-ia-win64-aarch64-shippable/opt: B_Niy7X3QrWJbWmX91X5gA - repackage-l10n-ia-win64-shippable/opt: fDfP8TqPS7C1vnlCcchGjA - repackage-l10n-id-linux-shippable/opt: SExJ_3n8Q5OzqLapar6F3A - repackage-l10n-id-linux64-aarch64-shippable/opt: VYmNV-3qShyo2rAJYsiP3w - repackage-l10n-id-linux64-shippable/opt: SE3d3lUOTNyhc9V92KFSoQ - repackage-l10n-id-macosx64-shippable/opt: CnzH-dCaQDa68aQaB8ZrrA - repackage-l10n-id-win32-shippable/opt: fRZ1mfjxQsigYHoGVfoY0A - repackage-l10n-id-win64-aarch64-shippable/opt: PMluufb_QJ6mPK2_uePizg - repackage-l10n-id-win64-shippable/opt: UpIfx4pcQ4SYm5LpKte_8g - repackage-l10n-is-linux-shippable/opt: CmyOJhwoTrWGADMEy5sjtQ - repackage-l10n-is-linux64-aarch64-shippable/opt: OGx3G7XSRhSIKTQO7IiRYg - repackage-l10n-is-linux64-shippable/opt: CYMr6f5rS8ut3R6O_owXVw - repackage-l10n-is-macosx64-shippable/opt: Zn7KwwY0SDWPzwGas579vA - repackage-l10n-is-win32-shippable/opt: OhZow1BMRJy6tk1RHHnrLg - repackage-l10n-is-win64-aarch64-shippable/opt: EBLn5J6MRl-Pyt06lS1DRw - repackage-l10n-is-win64-shippable/opt: HaHrbucBTUG1hC_Ri7HDPw - repackage-l10n-it-linux-shippable/opt: IvqryjUYRqW0g10JDMlZ2Q - repackage-l10n-it-linux64-aarch64-shippable/opt: Gvqm6eXBSiafR-yjmou_DQ - repackage-l10n-it-linux64-shippable/opt: Tfdr8pZCSn6CqNQVMPQx-A - repackage-l10n-it-macosx64-shippable/opt: PIU58WdsSdqa2mvb2A6WRg - repackage-l10n-it-win32-shippable/opt: e5xmBc5uQgKfZeQ4rG8icQ - repackage-l10n-it-win64-aarch64-shippable/opt: LgNGc7BLQPuWTYpqvDqUOQ - repackage-l10n-it-win64-shippable/opt: TgF_NjXSTQSegLcGUuBKLg - repackage-l10n-ja-JP-mac-macosx64-shippable/opt: Z8-96ZyURg6WD5K86vN3OA - repackage-l10n-ja-linux-shippable/opt: KjV2pxQOQQSiAzy8-jztUQ - repackage-l10n-ja-linux64-aarch64-shippable/opt: KU0Ec94-Q3-CAlLysBENVQ - repackage-l10n-ja-linux64-shippable/opt: Gy1pZmvqSkOfymuHOG9jMw - repackage-l10n-ja-win32-shippable/opt: RsfEfa-wR0KBQkrKwyR1zw - repackage-l10n-ja-win64-aarch64-shippable/opt: DusmzrPZRN29bQxrvRbFqw - repackage-l10n-ja-win64-shippable/opt: VumXtbjWR9y_MhBnyUqgLg - repackage-l10n-ka-linux-shippable/opt: Kami49C3SYej_AUzhbaKnQ - repackage-l10n-ka-linux64-aarch64-shippable/opt: MoPoU9XaTzWpj-T26MTQWQ - repackage-l10n-ka-linux64-shippable/opt: dfjF05CDTByv8kaN8mH7ug - repackage-l10n-ka-macosx64-shippable/opt: dcVtu4vyRFS1uNGxgCsvaA - repackage-l10n-ka-win32-shippable/opt: LJQv0_N5T7WTV_y4JfqJ5w - repackage-l10n-ka-win64-aarch64-shippable/opt: P7Ft-7lxSeCtmqxHxUiL6Q - repackage-l10n-ka-win64-shippable/opt: bvkp5nY9Tr-0xsJOVGIvRQ - repackage-l10n-kab-linux-shippable/opt: IjwejzihTGKS5rv98ULumg - repackage-l10n-kab-linux64-aarch64-shippable/opt: JFLIO97hSN2wRu8RmkKBlQ - repackage-l10n-kab-linux64-shippable/opt: IkjdkZn4Roqh5BDZZ8vUZA - repackage-l10n-kab-macosx64-shippable/opt: NyZdUvY8RPO79oBVhNh2Zw - repackage-l10n-kab-win32-shippable/opt: Ulk56xNcTjSCrwPCIJr3Bg - repackage-l10n-kab-win64-aarch64-shippable/opt: VAekUbzbQjmFdtdfnA-RbA - repackage-l10n-kab-win64-shippable/opt: CqHvs1lUQqqXyy9A__-EQw - repackage-l10n-kk-linux-shippable/opt: GxADtMzdQuqirj98bnGGOg - repackage-l10n-kk-linux64-aarch64-shippable/opt: C_9rKo12S-6kkxG1Z_rhnQ - repackage-l10n-kk-linux64-shippable/opt: H2tlkNDjRMubtDKxxoWEFA - repackage-l10n-kk-macosx64-shippable/opt: R-nP6Y3LQwSfoUzc09ADKw - repackage-l10n-kk-win32-shippable/opt: IXzQQ7G5QKKDexIiMkhmMQ - repackage-l10n-kk-win64-aarch64-shippable/opt: BpuTIaDHSeiZvBvPGGVBww - repackage-l10n-kk-win64-shippable/opt: HnM6l0j0SiOxiZ05knqiWg - repackage-l10n-km-linux-shippable/opt: ZzlNXsQESxmGYiW9f4EU1Q - repackage-l10n-km-linux64-aarch64-shippable/opt: QAXJ9YpHTj2V0EE_2LzOMg - repackage-l10n-km-linux64-shippable/opt: Ow0sCKF8Q62Mnvx6Q7cl6g - repackage-l10n-km-macosx64-shippable/opt: Y-u5IeisSK6jgrE7v0KjAA - repackage-l10n-km-win32-shippable/opt: CW-stdM9Q5esxeLk6jQK4g - repackage-l10n-km-win64-aarch64-shippable/opt: UA6R4WaOSBiosO5aWsaEkQ - repackage-l10n-km-win64-shippable/opt: No8APgKuQqmQv-8UF0vmFA - repackage-l10n-kn-linux-shippable/opt: UkkpgEDHRwWhjynVBpXBsg - repackage-l10n-kn-linux64-aarch64-shippable/opt: KNIVv_RrQji5dMq6FXHhJw - repackage-l10n-kn-linux64-shippable/opt: Xd-ZwDWiSoCPM_VRX6BX2Q - repackage-l10n-kn-macosx64-shippable/opt: VMV23pfLRb6l7SiI5aQSDw - repackage-l10n-kn-win32-shippable/opt: f4Mn2PwER2C4i9sKYB64GA - repackage-l10n-kn-win64-aarch64-shippable/opt: ZuO5EtBBQBaL1rlva6Nzrw - repackage-l10n-kn-win64-shippable/opt: drCgSWUgSeSLl2r8nUfAWQ - repackage-l10n-ko-linux-shippable/opt: HTIhYJsuQlyGJ_hShG8pBA - repackage-l10n-ko-linux64-aarch64-shippable/opt: ZkPC2n0mSrOgj4AgvK1wow - repackage-l10n-ko-linux64-shippable/opt: XH7hOrizRGm8qx-njzzFAA - repackage-l10n-ko-macosx64-shippable/opt: StJVarkKTde00jvKCM4NxQ - repackage-l10n-ko-win32-shippable/opt: YlzndowsQxSL5dkALxxLlA - repackage-l10n-ko-win64-aarch64-shippable/opt: OqE5u-yFS4WLpbAQS0BxlA - repackage-l10n-ko-win64-shippable/opt: L-NdS-DqQFe_nw_PWchtew - repackage-l10n-lij-linux-shippable/opt: dN7aY96YR7S2KJBMloH5Dg - repackage-l10n-lij-linux64-aarch64-shippable/opt: UNx4ulDMRx-FRj7abNnrOQ - repackage-l10n-lij-linux64-shippable/opt: J5QONnkET6y9hUiBch-YNQ - repackage-l10n-lij-macosx64-shippable/opt: UqF51kCLSJWUocC-yLHHtQ - repackage-l10n-lij-win32-shippable/opt: cXQ-xKKZQsqdUJgSWD6ivg - repackage-l10n-lij-win64-aarch64-shippable/opt: E4z_39U_Q6eBeXIhuBqH9w - repackage-l10n-lij-win64-shippable/opt: TirVVNI6QTG-r-4ajMe-NQ - repackage-l10n-lt-linux-shippable/opt: GkGNT2JbS7qeDFjYpcGDzA - repackage-l10n-lt-linux64-aarch64-shippable/opt: XUgH0wr9TyCNcNu4b2M-Ag - repackage-l10n-lt-linux64-shippable/opt: XKk3rig3RYulEA4xqrFFOA - repackage-l10n-lt-macosx64-shippable/opt: QSpruIG0RvGGQX0VSMYCzg - repackage-l10n-lt-win32-shippable/opt: Zn1ulKsnRZuWqlKUAzrfZA - repackage-l10n-lt-win64-aarch64-shippable/opt: Fbv7BB5CRW24Jy1eLEt8Sg - repackage-l10n-lt-win64-shippable/opt: NfPCz0NJT_q1TIBw7PRNUg - repackage-l10n-lv-linux-shippable/opt: cmyzNLjLTL-M3fYt9Qm3DA - repackage-l10n-lv-linux64-aarch64-shippable/opt: Gppw_k7XSPudPhyn3vzViw - repackage-l10n-lv-linux64-shippable/opt: YM6BpdEcSseCwsvq4SWhsw - repackage-l10n-lv-macosx64-shippable/opt: Dh1DZYJ0TuWNo1wb5jWm1A - repackage-l10n-lv-win32-shippable/opt: LbSlhcweQ_iGvLSjafe6OA - repackage-l10n-lv-win64-aarch64-shippable/opt: ONUvB61HRfOXh0nqeghNRQ - repackage-l10n-lv-win64-shippable/opt: FvqhSOScSZykJnkRj49y2Q - repackage-l10n-mk-linux-shippable/opt: c_6wSf23TxyZhwJNgwxEkw - repackage-l10n-mk-linux64-aarch64-shippable/opt: dioeNyoPRF-hL8I_4-avDg - repackage-l10n-mk-linux64-shippable/opt: Yg-_TDsrRwKVWVHtQ_tVRg - repackage-l10n-mk-macosx64-shippable/opt: NobYCQayQZqMvOed0f2vcQ - repackage-l10n-mk-win32-shippable/opt: RKIEspvuRQ6uqxB0_PhQMg - repackage-l10n-mk-win64-aarch64-shippable/opt: QCwMluudQKCXOpC25cD5Qg - repackage-l10n-mk-win64-shippable/opt: ILhGZkfdQa6gnSzFMfMgzA - repackage-l10n-mr-linux-shippable/opt: KaIN6vkhRGSaFaPrMvalSg - repackage-l10n-mr-linux64-aarch64-shippable/opt: b4YfkN_JTEyj8O11MrGwAg - repackage-l10n-mr-linux64-shippable/opt: dhZsm7lFT_S9JbI6MBLo7g - repackage-l10n-mr-macosx64-shippable/opt: dML1FEtKQLelIujsYJhv7A - repackage-l10n-mr-win32-shippable/opt: X3pa1fqvRRekcOElMTBn_A - repackage-l10n-mr-win64-aarch64-shippable/opt: Ro62aP-vQXOFZE67AtFuvA - repackage-l10n-mr-win64-shippable/opt: MUxHh9m5Sx6hfoz91dIJAQ - repackage-l10n-ms-linux-shippable/opt: JmzpcHNQQDSxXpOLoPy55A - repackage-l10n-ms-linux64-aarch64-shippable/opt: BC-nh044RmWU4lTwFO0QxQ - repackage-l10n-ms-linux64-shippable/opt: cNfmIhepTR635QSesLZy7Q - repackage-l10n-ms-macosx64-shippable/opt: BDxCqSA5RW2Ztn65CtZKAg - repackage-l10n-ms-win32-shippable/opt: Sp-GtKwnRUC1vhdnQxAqwg - repackage-l10n-ms-win64-aarch64-shippable/opt: f7SQ3roVRZaT-RRlHZSjBA - repackage-l10n-ms-win64-shippable/opt: N4H4oHAYQLanbCo5SOMN_w - repackage-l10n-my-linux-shippable/opt: exMB0K9rSAao97Dutwp9EA - repackage-l10n-my-linux64-aarch64-shippable/opt: OfMfmXipSrKGDrIoSeDieA - repackage-l10n-my-linux64-shippable/opt: JuBdR2JARRCg0nzYtxxXMQ - repackage-l10n-my-macosx64-shippable/opt: NBiSV1jAQ9a58BJgifDuAw - repackage-l10n-my-win32-shippable/opt: ZE7mhkT0RbWDuVdvV-9ssQ - repackage-l10n-my-win64-aarch64-shippable/opt: UrneTjevQ4Swt6bLUzIrfw - repackage-l10n-my-win64-shippable/opt: Dw9muIlxTd6TpbF5PZOgvQ - repackage-l10n-nb-NO-linux-shippable/opt: QbGPXtzSQiGinxzO-M2HZw - repackage-l10n-nb-NO-linux64-aarch64-shippable/opt: fWovq60yR9ulcFAzFSDaZg - repackage-l10n-nb-NO-linux64-shippable/opt: MuSvfGUbRwqEdn3S9wZChg - repackage-l10n-nb-NO-macosx64-shippable/opt: a0aNYkbWSyWnwxB5lJxXUA - repackage-l10n-nb-NO-win32-shippable/opt: CLhg30BeQNawJJmRr9oBfA - repackage-l10n-nb-NO-win64-aarch64-shippable/opt: WyIPT0XFTgizDxCc6Y1rIg - repackage-l10n-nb-NO-win64-shippable/opt: FwU2XX_LQ16Am8rGGQpMMg - repackage-l10n-ne-NP-linux-shippable/opt: AP5X7l2KR0Op8gbrl84G8A - repackage-l10n-ne-NP-linux64-aarch64-shippable/opt: M4Vr7Hw7TOC09AHwo-r4nw - repackage-l10n-ne-NP-linux64-shippable/opt: TolMKebjQl6F4actQcR4ZQ - repackage-l10n-ne-NP-macosx64-shippable/opt: DDjYeqy5TuKPtfNPVt9x6g - repackage-l10n-ne-NP-win32-shippable/opt: aU3T8GvDQ_mJYlpMeXcWFQ - repackage-l10n-ne-NP-win64-aarch64-shippable/opt: Xnaon1EzTUmEyRyLQM9w7Q - repackage-l10n-ne-NP-win64-shippable/opt: PbhDmJ3FQbWj4Jj24KXEtA - repackage-l10n-nl-linux-shippable/opt: TvlXeiYqRjaAfXsnb1e_IA - repackage-l10n-nl-linux64-aarch64-shippable/opt: ManiMdwnT4C-9-l2XS3qXw - repackage-l10n-nl-linux64-shippable/opt: ZMuCf48mTTC00oelOZ72jQ - repackage-l10n-nl-macosx64-shippable/opt: BdtGNUNvR_CKQiOMEdZAMQ - repackage-l10n-nl-win32-shippable/opt: fVlW7VwSSCSOzdPMwUt5BQ - repackage-l10n-nl-win64-aarch64-shippable/opt: K3-CC709QPiC90LO2qB2WQ - repackage-l10n-nl-win64-shippable/opt: T-LCDdaDSn-JI5Ye4pK0pA - repackage-l10n-nn-NO-linux-shippable/opt: fai8fr-8QUCu_I0NMqQokw - repackage-l10n-nn-NO-linux64-aarch64-shippable/opt: HvlupZoRR1mKfN5mnABCbQ - repackage-l10n-nn-NO-linux64-shippable/opt: Bu3xGKsoRb-kgZtBJYriMw - repackage-l10n-nn-NO-macosx64-shippable/opt: EMYmqp_bQVKoCOlbccRbsQ - repackage-l10n-nn-NO-win32-shippable/opt: d1m_t4LgSByvV5VtC_iO4w - repackage-l10n-nn-NO-win64-aarch64-shippable/opt: LqCjrFSJTBy3BlwFPxZj6Q - repackage-l10n-nn-NO-win64-shippable/opt: Z7y2puO1TCCb0FhdLVq7rg - repackage-l10n-oc-linux-shippable/opt: GR0b7gMbS2qd4z-RuofMgg - repackage-l10n-oc-linux64-aarch64-shippable/opt: LtgLOIf6RZ-0owf0nGjAfg - repackage-l10n-oc-linux64-shippable/opt: HA7tiLXAShWrMdAWyrhDrw - repackage-l10n-oc-macosx64-shippable/opt: UAYYQEYJQyGekpU1a-ZamQ - repackage-l10n-oc-win32-shippable/opt: HFy3r-HjQB6FdY7FJ0jImA - repackage-l10n-oc-win64-aarch64-shippable/opt: Q80pitU-R4mCn_N8P2JOPw - repackage-l10n-oc-win64-shippable/opt: Ms6YVNr9RISgMXIupUi5og - repackage-l10n-pa-IN-linux-shippable/opt: PfAUm5qQRT2JnJR5MkNe1Q - repackage-l10n-pa-IN-linux64-aarch64-shippable/opt: TWnZbRDkRVeKD6pMtfdgwg - repackage-l10n-pa-IN-linux64-shippable/opt: JUbpsBqqQ4qa7iNy2h9Suw - repackage-l10n-pa-IN-macosx64-shippable/opt: EO4hK4SGSAKbWiDBU9WHhw - repackage-l10n-pa-IN-win32-shippable/opt: Ki-e4hWSR1up6rgABY4qPw - repackage-l10n-pa-IN-win64-aarch64-shippable/opt: KfxLDjgvRh2sxAuOgIoMdw - repackage-l10n-pa-IN-win64-shippable/opt: W5oMcV0GS228qqf-BayxKA - repackage-l10n-pl-linux-shippable/opt: BwKlrNUoQYujt8y-3zWBOg - repackage-l10n-pl-linux64-aarch64-shippable/opt: Rh2AESfCT8ez0iQ3FCMe6Q - repackage-l10n-pl-linux64-shippable/opt: JDQOEVazQ8K-e-5PjuX6nw - repackage-l10n-pl-macosx64-shippable/opt: UCKjcS3BQFCfwGVlz3BO0g - repackage-l10n-pl-win32-shippable/opt: Y8r6PjUpSeSvIAh_LbV6aA - repackage-l10n-pl-win64-aarch64-shippable/opt: W2WdWay7RKOBr3w_FOjbHQ - repackage-l10n-pl-win64-shippable/opt: CwRI2F25Rmy6qmeB-Qbktg - repackage-l10n-pt-BR-linux-shippable/opt: WpLmiOzfTMGFD9oXm30WJw - repackage-l10n-pt-BR-linux64-aarch64-shippable/opt: WoHBKNp4RFKplJ1nZSBkEA - repackage-l10n-pt-BR-linux64-shippable/opt: eW88zgq8Qd-rmhNQXf81Dw - repackage-l10n-pt-BR-macosx64-shippable/opt: dVV-ZFcVSm6ArueuYzUpYA - repackage-l10n-pt-BR-win32-shippable/opt: FfiNsAXwTC6MqxpmkGYgRw - repackage-l10n-pt-BR-win64-aarch64-shippable/opt: doFxK6eyRUiDc8RqYuCWrg - repackage-l10n-pt-BR-win64-shippable/opt: QJRJdDTuRJyu5CyCEu2WXQ - repackage-l10n-pt-PT-linux-shippable/opt: JWgWs8VASiO00VGcu7t0jg - repackage-l10n-pt-PT-linux64-aarch64-shippable/opt: T068gPI5SM-nkHP4cjx1Vw - repackage-l10n-pt-PT-linux64-shippable/opt: N8PiBgOIR5a35okJVBjyEQ - repackage-l10n-pt-PT-macosx64-shippable/opt: ACd7Y0PGT72YZYADeeldDw - repackage-l10n-pt-PT-win32-shippable/opt: a011p80USp-G1TMnAjubfw - repackage-l10n-pt-PT-win64-aarch64-shippable/opt: NexCd7EzRJWYtqQ70uX0UQ - repackage-l10n-pt-PT-win64-shippable/opt: Ci3EWTqtSKePDfnOJGr7ng - repackage-l10n-rm-linux-shippable/opt: WKoeUJiuQZeJqG9dCNuW6w - repackage-l10n-rm-linux64-aarch64-shippable/opt: IhmOGn9vTP2Xo-n8rpubFQ - repackage-l10n-rm-linux64-shippable/opt: SN2nQ_4jQ6OvD_xVB2unxA - repackage-l10n-rm-macosx64-shippable/opt: aHOrp56iTY6ALMScWawlSg - repackage-l10n-rm-win32-shippable/opt: FIx5DKXXSZ67pzkBvmnWtg - repackage-l10n-rm-win64-aarch64-shippable/opt: b5dPjD9XR9CttU7F6mmDLw - repackage-l10n-rm-win64-shippable/opt: XT3fC1LER4qrjm5dJyvDYw - repackage-l10n-ro-linux-shippable/opt: A4hSa8vqS1KRF3NwfpZaVw - repackage-l10n-ro-linux64-aarch64-shippable/opt: c5puOiQ9S-ab4jG4Ac5DIQ - repackage-l10n-ro-linux64-shippable/opt: WCiO1PAITx6k8TuVpUlsmA - repackage-l10n-ro-macosx64-shippable/opt: SF9WTaYXSn6MQYBQMBCUQQ - repackage-l10n-ro-win32-shippable/opt: Jvt9_sVwTpaEi4mHwOhPgA - repackage-l10n-ro-win64-aarch64-shippable/opt: G-e1eDSzRAujYGTSpQsfiw - repackage-l10n-ro-win64-shippable/opt: KLsX9VxgTe22pfB1my3-ug - repackage-l10n-ru-linux-shippable/opt: OiHrzKIZTJ-lgy2KtDsryQ - repackage-l10n-ru-linux64-aarch64-shippable/opt: RWMAuNQJST-ZHWzOzKMVhw - repackage-l10n-ru-linux64-shippable/opt: O-IW7xYMT92qqzyF5F3rbw - repackage-l10n-ru-macosx64-shippable/opt: WqnWyjWvQS6DkOPFHMgK7A - repackage-l10n-ru-win32-shippable/opt: KieVKpuXSUuyEa3zAUAFCA - repackage-l10n-ru-win64-aarch64-shippable/opt: L7Pl-riKRxa3z7QZIyuOIg - repackage-l10n-ru-win64-shippable/opt: aF1H-aYESFC5dOOzmDY9UQ - repackage-l10n-sat-linux-shippable/opt: E-_fS_5SShiLrih1OGe7ow - repackage-l10n-sat-linux64-aarch64-shippable/opt: LuqkoTpoTHmPpSzwZj9O5A - repackage-l10n-sat-linux64-shippable/opt: cUY4ogS0Rze5_EGIEH7UdA - repackage-l10n-sat-macosx64-shippable/opt: SRybr9LtSIyoB67lXczvng - repackage-l10n-sat-win32-shippable/opt: NQyvRm9nTjO8FX-dMJbiUA - repackage-l10n-sat-win64-aarch64-shippable/opt: aG3uoveuS3GzV0Vvu9cgzg - repackage-l10n-sat-win64-shippable/opt: Y1T7I2mERYGtddGAhMVlBQ - repackage-l10n-sc-linux-shippable/opt: J9Ml5P0kRZq4Fuw817Xfzg - repackage-l10n-sc-linux64-aarch64-shippable/opt: ZGtA-Iy5QLGPtN9Hww0m4w - repackage-l10n-sc-linux64-shippable/opt: bFylCGRmTRaYVWWg6ExtjA - repackage-l10n-sc-macosx64-shippable/opt: VvO93k-7Ta-ZYfI3r0FjMw - repackage-l10n-sc-win32-shippable/opt: IutYM3e4T3uzomUF8he6Jg - repackage-l10n-sc-win64-aarch64-shippable/opt: QDMHyNpiRL6Q6_baKc7ajA - repackage-l10n-sc-win64-shippable/opt: aznEmbEWSeqKowpe9I5_HA - repackage-l10n-sco-linux-shippable/opt: HNkRcE4VSzuIHdNnLsP3SQ - repackage-l10n-sco-linux64-aarch64-shippable/opt: BwUvs6K-Q9e8VgrLx8LnDw - repackage-l10n-sco-linux64-shippable/opt: HSUYaieCSla3DxGY88rCOQ - repackage-l10n-sco-macosx64-shippable/opt: XL5MdxR2S-mgWbMlbtCiNg - repackage-l10n-sco-win32-shippable/opt: XX0GVZoMRdmCGNtzW8nSkA - repackage-l10n-sco-win64-aarch64-shippable/opt: NNzYxJiFRH633fQy61RnHQ - repackage-l10n-sco-win64-shippable/opt: MM-koYgCTiCAYmnu8R5XOg - repackage-l10n-si-linux-shippable/opt: S9K-isM-To2hgsnM9T9oPw - repackage-l10n-si-linux64-aarch64-shippable/opt: EicxSy81R9iLR42YgQ2zhA - repackage-l10n-si-linux64-shippable/opt: YJlHdGUOTwKm15x_LDSxBw - repackage-l10n-si-macosx64-shippable/opt: Nkpy4XUAS2eqrXUUbGBptQ - repackage-l10n-si-win32-shippable/opt: UYUwb8WQT4eOhtHQYSfE1w - repackage-l10n-si-win64-aarch64-shippable/opt: WUlWnyYtRoOUn93VzHY0iw - repackage-l10n-si-win64-shippable/opt: IdMxfR_6R5WcjGYygdHpMA - repackage-l10n-sk-linux-shippable/opt: FOjbAaqoQVuLl0FLF4R7pw - repackage-l10n-sk-linux64-aarch64-shippable/opt: PRg5Q8ovT-ShMJsm70PSRA - repackage-l10n-sk-linux64-shippable/opt: Ey2arjk5Ri2rvgD1Nunuqw - repackage-l10n-sk-macosx64-shippable/opt: fK11P0B2QTaNlD7JqrFJ0A - repackage-l10n-sk-win32-shippable/opt: R7X9AX9zQPm31c_e3G65Jg - repackage-l10n-sk-win64-aarch64-shippable/opt: ZthiHDcHR6GLAtqjINJqXA - repackage-l10n-sk-win64-shippable/opt: Z9WeQYf1QUypVKtsqEfFPw - repackage-l10n-skr-linux-shippable/opt: D-o8X8ygQLijtP3-iAdBVQ - repackage-l10n-skr-linux64-aarch64-shippable/opt: bFkaIVm4S0eW_rAFbEMM9Q - repackage-l10n-skr-linux64-shippable/opt: BuK0avS5TL-tCqZvskctjw - repackage-l10n-skr-macosx64-shippable/opt: eNQi8fx2RuG1k960AxdF6g - repackage-l10n-skr-win32-shippable/opt: BDmbabfzRPKFZw60YU3XQg - repackage-l10n-skr-win64-aarch64-shippable/opt: e3aiIEvjQFy2FiJ6-KMBNg - repackage-l10n-skr-win64-shippable/opt: UCDqtqqWSYOh8mZBYlYrRQ - repackage-l10n-sl-linux-shippable/opt: clEhQiwqRTS0b9XWJFqbtQ - repackage-l10n-sl-linux64-aarch64-shippable/opt: TN4IyV1GRcaIgjAxd-2-Dw - repackage-l10n-sl-linux64-shippable/opt: dxANL2g6Q4ugXRv3heI2Pw - repackage-l10n-sl-macosx64-shippable/opt: GNVKCBRtSg-s95UFwpCqLg - repackage-l10n-sl-win32-shippable/opt: VkgHR6zUS1midfzvWbj95A - repackage-l10n-sl-win64-aarch64-shippable/opt: XzXK1l1mQM2wJf9g6xzUUg - repackage-l10n-sl-win64-shippable/opt: Sl194YHpRh21ZJQSOQIfbw - repackage-l10n-son-linux-shippable/opt: IucLUk2cSfOhqqd4W733Kw - repackage-l10n-son-linux64-aarch64-shippable/opt: FIQGcnirQ7KWN657Q_d7XA - repackage-l10n-son-linux64-shippable/opt: VjNWOTOuTWOi5ZJDoh5kPw - repackage-l10n-son-macosx64-shippable/opt: G_eV072AR1aLCJF1wQYoew - repackage-l10n-son-win32-shippable/opt: GSSq3jbnSGiuQSt3ZSogmw - repackage-l10n-son-win64-aarch64-shippable/opt: UceGwYCwRw6C1IwIxnV3fQ - repackage-l10n-son-win64-shippable/opt: dNuAh7E4R8OqQeRCA3hZkw - repackage-l10n-sq-linux-shippable/opt: E8zXumTiR1-MXPrso592xg - repackage-l10n-sq-linux64-aarch64-shippable/opt: Oi9DW_6wQo6DW8amKAM_TQ - repackage-l10n-sq-linux64-shippable/opt: Yf6iKLunSS6kEMV39SUh1g - repackage-l10n-sq-macosx64-shippable/opt: YVfHnOd9Sg-wDoFwprkXOw - repackage-l10n-sq-win32-shippable/opt: Q-NzxoCvQOyyrNNG15gOSQ - repackage-l10n-sq-win64-aarch64-shippable/opt: JDYVYjQJTCW5u5kdyNh8Nw - repackage-l10n-sq-win64-shippable/opt: eSG1eMISSbic4EujBnlljg - repackage-l10n-sr-linux-shippable/opt: DcpE64cRSLCssppI6v2arg - repackage-l10n-sr-linux64-aarch64-shippable/opt: fXZGpMxxTBO5CJa2N5sxbA - repackage-l10n-sr-linux64-shippable/opt: COmo3ofmQ3K0Qnxib2oZWw - repackage-l10n-sr-macosx64-shippable/opt: d1d1kl9AQsq31pswfVOhZA - repackage-l10n-sr-win32-shippable/opt: Y1esYP76R6ec-dE-EMsh0w - repackage-l10n-sr-win64-aarch64-shippable/opt: XUySN8z3T52BvYLrgu6D7w - repackage-l10n-sr-win64-shippable/opt: BHz78i3tQC-e_G858WZIcw - repackage-l10n-sv-SE-linux-shippable/opt: My25PPhZQMu8-mrFhAHZ8A - repackage-l10n-sv-SE-linux64-aarch64-shippable/opt: cS_8Tf8zQiSf2nimtZ_Zrw - repackage-l10n-sv-SE-linux64-shippable/opt: PArc8wdgQbKmRwAyWCZCWw - repackage-l10n-sv-SE-macosx64-shippable/opt: O7KVXCjWRZ6NSyRSJVhAtA - repackage-l10n-sv-SE-win32-shippable/opt: Y6x4Cvt5Stul_EjS2uJA3Q - repackage-l10n-sv-SE-win64-aarch64-shippable/opt: VxElO_2wQTWQlDqeJFOglQ - repackage-l10n-sv-SE-win64-shippable/opt: QrNHb3LNSo-Il7_xpW--ng - repackage-l10n-szl-linux-shippable/opt: F27CMERXTdO72-25yyZcBA - repackage-l10n-szl-linux64-aarch64-shippable/opt: C3O-WIOmTD-D6Y8Ou6SZ2A - repackage-l10n-szl-linux64-shippable/opt: XW30ayhITNifzKBDeWb-ag - repackage-l10n-szl-macosx64-shippable/opt: Zj9kFPyaRwiIgsuIRicSFw - repackage-l10n-szl-win32-shippable/opt: H93H-VQaSyOgflVVxrpOUA - repackage-l10n-szl-win64-aarch64-shippable/opt: Q-dxEJTmRpen27FKI3ZDrA - repackage-l10n-szl-win64-shippable/opt: H1WmDqgnSEi5g5MTFEldfg - repackage-l10n-ta-linux-shippable/opt: FLokTNSjQTKuniyw3LZ9jg - repackage-l10n-ta-linux64-aarch64-shippable/opt: DQtnQeOVQaa3xfIfFB49BA - repackage-l10n-ta-linux64-shippable/opt: Kvt9ZYJZQQamobY288tNMw - repackage-l10n-ta-macosx64-shippable/opt: R4OC30PIQHq_cKvouRqkiw - repackage-l10n-ta-win32-shippable/opt: RlvHMK99QAuOYOM8coXh2A - repackage-l10n-ta-win64-aarch64-shippable/opt: TZpQTWwuSD635GMrxcqT8Q - repackage-l10n-ta-win64-shippable/opt: N97UAa_qThilxfxgl79aJA - repackage-l10n-te-linux-shippable/opt: Gkf6rRsGRSiCjWb1dEyyCg - repackage-l10n-te-linux64-aarch64-shippable/opt: f3JQHAblS9WauMZ4h8nekA - repackage-l10n-te-linux64-shippable/opt: X_Cio-IHR3GbwZnvQE-p7w - repackage-l10n-te-macosx64-shippable/opt: YSUkpf8QSAOXz-RyEDf8Vg - repackage-l10n-te-win32-shippable/opt: P2hbeA5wQ0ubquhbuaYOpg - repackage-l10n-te-win64-aarch64-shippable/opt: GMmUCBksRVib0uNbKwRuww - repackage-l10n-te-win64-shippable/opt: c-MrOoFoTDmPkwxDbkLlVQ - repackage-l10n-tg-linux-shippable/opt: Cx9D4WuOTfq4E10scdCe6g - repackage-l10n-tg-linux64-aarch64-shippable/opt: AX_BtNvQRCyPbvc5UwwX5Q - repackage-l10n-tg-linux64-shippable/opt: VxITxRE_RAGQkzTDtt0YhQ - repackage-l10n-tg-macosx64-shippable/opt: AagfwUPlTeyRGvZ8oSKksA - repackage-l10n-tg-win32-shippable/opt: EMQ3AiBuRoC_uGISRXRYqA - repackage-l10n-tg-win64-aarch64-shippable/opt: ZC6GP8ArQUiicT-FA-1mJQ - repackage-l10n-tg-win64-shippable/opt: I2IUb4xoSB-ESsvsXSj4GA - repackage-l10n-th-linux-shippable/opt: RkgiM0SkTvCpL0l9rafzvw - repackage-l10n-th-linux64-aarch64-shippable/opt: AubO3O09QE2pyU45BjB9Hw - repackage-l10n-th-linux64-shippable/opt: OEdHN0kgROiACmUWbWuB-Q - repackage-l10n-th-macosx64-shippable/opt: FJ_haoPcTlKr2uU5iB6Axw - repackage-l10n-th-win32-shippable/opt: WNjZHf7LRGeLeXXMv_4NIg - repackage-l10n-th-win64-aarch64-shippable/opt: IN9teeaMSYKzvXFYhhw26A - repackage-l10n-th-win64-shippable/opt: Clq_QDD4RiC1USGvtt2IxQ - repackage-l10n-tl-linux-shippable/opt: cbmUEciHSpCF2XdceMu5zA - repackage-l10n-tl-linux64-aarch64-shippable/opt: QfFh91hwSreR8jTiYgimjQ - repackage-l10n-tl-linux64-shippable/opt: VrnwAh4QTr-ynTtTe9UBiA - repackage-l10n-tl-macosx64-shippable/opt: D_IFWbJrT8eukIHdvtSWFw - repackage-l10n-tl-win32-shippable/opt: Z0wJWsEbRE2XTBuoOyluWA - repackage-l10n-tl-win64-aarch64-shippable/opt: RC41LR48SMaRJ9NybTFqQA - repackage-l10n-tl-win64-shippable/opt: amv98_MsSP20d9GguI_weQ - repackage-l10n-tr-linux-shippable/opt: b2ax1VyrROW50OeZCpC-ww - repackage-l10n-tr-linux64-aarch64-shippable/opt: bf0K8yiWSlmz2POFcViyAg - repackage-l10n-tr-linux64-shippable/opt: XIYX1FoyQNmYKQIxZAubmw - repackage-l10n-tr-macosx64-shippable/opt: Iu0pdRYrRku1ZqHmK9213A - repackage-l10n-tr-win32-shippable/opt: N9A57eOlQ6yxTsvu55F9kQ - repackage-l10n-tr-win64-aarch64-shippable/opt: WvHi_YpeSIuYgQ0HHU7V4g - repackage-l10n-tr-win64-shippable/opt: KA3C0JYMSKew9Ut11f3hcw - repackage-l10n-trs-linux-shippable/opt: DwP71pbORFarKEhhsp_hHg - repackage-l10n-trs-linux64-aarch64-shippable/opt: PeCeIylCTZWaBqCFEDHHpw - repackage-l10n-trs-linux64-shippable/opt: JuStct9YRi6GCO0GyCKQtA - repackage-l10n-trs-macosx64-shippable/opt: S7MigTvCRz-5ku-bvueO8w - repackage-l10n-trs-win32-shippable/opt: WpgmFKXRR8KRuBeFB66vRw - repackage-l10n-trs-win64-aarch64-shippable/opt: FKcrCLa1QImuATtlDumpRg - repackage-l10n-trs-win64-shippable/opt: HB8kAFAuTRupzB6qj03fFA - repackage-l10n-uk-linux-shippable/opt: UbemGgf1TcuMOQLOhB8hGg - repackage-l10n-uk-linux64-aarch64-shippable/opt: Nt0gOI7fSzuRcyFK-KK5Zg - repackage-l10n-uk-linux64-shippable/opt: MuSRj0X4TP6erOz2uPYr4A - repackage-l10n-uk-macosx64-shippable/opt: dQZ6z2y4Semv_I-YiGNtsQ - repackage-l10n-uk-win32-shippable/opt: ZroDx28YQBmTiWZ74ua-Lg - repackage-l10n-uk-win64-aarch64-shippable/opt: bwcQhLfDTv-tuucD8CLn-Q - repackage-l10n-uk-win64-shippable/opt: PrhtJuMsSSWSKxl8Nha2FA - repackage-l10n-ur-linux-shippable/opt: RiwehoE_RK-NZDw8L7eD3w - repackage-l10n-ur-linux64-aarch64-shippable/opt: VmCIM_I4TNGCL8dXOLohUQ - repackage-l10n-ur-linux64-shippable/opt: MLkWeoX0TqqizNP1BxoGBg - repackage-l10n-ur-macosx64-shippable/opt: YRzve8LrS96Evc2iJAaDlQ - repackage-l10n-ur-win32-shippable/opt: Z3TSYwjEROKZbpZ4Z9OnUw - repackage-l10n-ur-win64-aarch64-shippable/opt: S9JxEi6QTIeZxxKjY3wuAA - repackage-l10n-ur-win64-shippable/opt: ZTXn7_GDQ-GHBiMHiudA3g - repackage-l10n-uz-linux-shippable/opt: HsY1aUZ1Qri-M3fJ2tZs6w - repackage-l10n-uz-linux64-aarch64-shippable/opt: DA6vv3NNQ1OvWPnxarMtIQ - repackage-l10n-uz-linux64-shippable/opt: D7KefAbXSBuLqqK805XWjQ - repackage-l10n-uz-macosx64-shippable/opt: LhzD_umETGG7O0AO7VIYbg - repackage-l10n-uz-win32-shippable/opt: Nd0qoM1jSWu-332TtlXiHQ - repackage-l10n-uz-win64-aarch64-shippable/opt: M-ezsHG6SWC8hAJswFkIpQ - repackage-l10n-uz-win64-shippable/opt: ZE6M_RXCQO28deppanLQiA - repackage-l10n-vi-linux-shippable/opt: efCdMZA5TY6pe9QKhVlTLw - repackage-l10n-vi-linux64-aarch64-shippable/opt: Gct3Rb_JRwSHJgzzUy-yuQ - repackage-l10n-vi-linux64-shippable/opt: Gl4rFPwsR9W7qc9y7-h9Kg - repackage-l10n-vi-macosx64-shippable/opt: DZG8d6GyRWGXJ50SgDyUXw - repackage-l10n-vi-win32-shippable/opt: KMpOgVYkQiyAtL4Cwxp2iQ - repackage-l10n-vi-win64-aarch64-shippable/opt: B4maNjl8RVKEDvsKlN8J2Q - repackage-l10n-vi-win64-shippable/opt: VnAdnNYPQIymXGaqhQr45g - repackage-l10n-xh-linux-shippable/opt: Wsmp2fA9RouWHm27qguhEA - repackage-l10n-xh-linux64-aarch64-shippable/opt: bvshPGVkQDuMtk2HEWchQA - repackage-l10n-xh-linux64-shippable/opt: IAO1soUOSymb0fYjUDyxnQ - repackage-l10n-xh-macosx64-shippable/opt: OVYBlBV8RsmODGdd8ggCgw - repackage-l10n-xh-win32-shippable/opt: BfboBGbSQNixiDRsT1LHug - repackage-l10n-xh-win64-aarch64-shippable/opt: Bj1urfjwQV-OTABfWQa1mw - repackage-l10n-xh-win64-shippable/opt: KLuqF8BkQO6876lRS6sGeA - repackage-l10n-zh-CN-linux-shippable/opt: FUfe0G8ZTwiJ58OnZG7ySw - repackage-l10n-zh-CN-linux64-aarch64-shippable/opt: Dz8zsdvuTWentqYnV3Y9Pg - repackage-l10n-zh-CN-linux64-shippable/opt: LX87YCA8QYakikrEpP6p1A - repackage-l10n-zh-CN-macosx64-shippable/opt: bBg7gf-rTCOzeHI-McjpXg - repackage-l10n-zh-CN-win32-shippable/opt: HOMpzliwTUKkMtLo-_BfXg - repackage-l10n-zh-CN-win64-aarch64-shippable/opt: GI2op2NQTDqBzVTtGIUY4g - repackage-l10n-zh-CN-win64-shippable/opt: ZlaCAKnQS1qaaGDU-XtrvA - repackage-l10n-zh-TW-linux-shippable/opt: cBjvzMJjQYC5AkDtB_d44Q - repackage-l10n-zh-TW-linux64-aarch64-shippable/opt: FKVsCaUOQzCCKiZOKpPtbQ - repackage-l10n-zh-TW-linux64-shippable/opt: c1sDtpqdRneAma4v9AZC9A - repackage-l10n-zh-TW-macosx64-shippable/opt: MEAxQsdMT0i9ulS9I-mayw - repackage-l10n-zh-TW-win32-shippable/opt: CsQmySAUQYOLm1nxgdAP7Q - repackage-l10n-zh-TW-win64-aarch64-shippable/opt: UrbbJDRfRs6jjOEpUvlJbA - repackage-l10n-zh-TW-win64-shippable/opt: ZoiNJjwlQvqrU7gbUUIpsA - repackage-linux-shippable/opt: a6tlgH-VTq22sS71VHp7yw - repackage-linux64-aarch64-shippable/opt: Drc5NqttRT6wdDA7rn4WUA - repackage-linux64-shippable/opt: Gj_qY80BRla-MVEqc32Row - repackage-macosx64-aarch64/debug: U-M8qo9HTDG5rkpyX28Xhg - repackage-macosx64-shippable/opt: RRaP7yLTQuWTn9yC5I-bKw - repackage-macosx64/debug: bG_UTRQFS1mZ-32SLunSlQ - repackage-msi-ach-win32-shippable/opt: aEZ7qCsHRyyV1PhNra5tJw - repackage-msi-ach-win64-shippable/opt: C3x-PDprTPGN3uiQkRFeRA - repackage-msi-af-win32-shippable/opt: PEdAiFv-QJWa1kFdxgxycQ - repackage-msi-af-win64-shippable/opt: ZLfHs4AeSKOuePT71H3o-A - repackage-msi-an-win32-shippable/opt: US_BnmNhRsKVPDAcL666SA - repackage-msi-an-win64-shippable/opt: ErSeY8YkSMST5IrSfYzOjA - repackage-msi-ar-win32-shippable/opt: OFRKTWXVS92glJ67BL7KwA - repackage-msi-ar-win64-shippable/opt: Ej_g-0xjSHemOj_g2C_7bQ - repackage-msi-ast-win32-shippable/opt: SfU77Vp4TxyvWVJeKyI_Dw - repackage-msi-ast-win64-shippable/opt: GJze4HUuTpSbymifam_lnw - repackage-msi-az-win32-shippable/opt: KIrzQCl7QYmjWyP8hbnjhw - repackage-msi-az-win64-shippable/opt: LsWH0B4DRmWqiH5vpNyJMg - repackage-msi-be-win32-shippable/opt: TuVXqADMR9i6wJV4BaGa9Q - repackage-msi-be-win64-shippable/opt: GDNGN1hUSIKpqrJetSZIgA - repackage-msi-bg-win32-shippable/opt: bgH2JCHETL-t2uziKGABeg - repackage-msi-bg-win64-shippable/opt: U0JjNl-0RfOVfs4AdvTTaw - repackage-msi-bn-win32-shippable/opt: GGy3GOrkR8W1fT-EB2OT7g - repackage-msi-bn-win64-shippable/opt: VxOLl0yfTQmPqWC1QkgYiA - repackage-msi-br-win32-shippable/opt: JP2ym9K-T4-qyhoh1l45WQ - repackage-msi-br-win64-shippable/opt: GM2z_kTyRi-JXVfgnMBGiQ - repackage-msi-bs-win32-shippable/opt: FQQaOQW3RCSuZLuPzQwmNg - repackage-msi-bs-win64-shippable/opt: IjuV0pP0TnS58fJIM2KuiQ - repackage-msi-ca-valencia-win32-shippable/opt: CCWyu2BMTWybEMkGbejNSw - repackage-msi-ca-valencia-win64-shippable/opt: GR0u2EJ7Sn2MFkVUCz_oWg - repackage-msi-ca-win32-shippable/opt: EgBA_WkIRJ6JCBnODK-qrQ - repackage-msi-ca-win64-shippable/opt: PU3BddTEQ4GBbNmGHcPITw - repackage-msi-cak-win32-shippable/opt: HDJayyViTHWIiro6PrYn-g - repackage-msi-cak-win64-shippable/opt: Iwq4PrIaRFy5rp9aOc7bEA - repackage-msi-cs-win32-shippable/opt: SdY4HPStRgihFGclDdTl8Q - repackage-msi-cs-win64-shippable/opt: GpYkkb6JTUan4uLJJNEtrQ - repackage-msi-cy-win32-shippable/opt: XSM1564FSc6qtmln1dcSsg - repackage-msi-cy-win64-shippable/opt: MtGej6KlTvG-cpDay1qF1Q - repackage-msi-da-win32-shippable/opt: VejX8lfwRZKT_z6RPlQqUQ - repackage-msi-da-win64-shippable/opt: POG8TM_6RwGjIB1Qo2pRgA - repackage-msi-de-win32-shippable/opt: dfdcknV-Rz6NEWiHwqD81Q - repackage-msi-de-win64-shippable/opt: HWp0f-mxTYCQiGqxaRKhlw - repackage-msi-dsb-win32-shippable/opt: LmKT8jthQg6Yu8QAirwHYg - repackage-msi-dsb-win64-shippable/opt: a1cN20_SSemXiHTNDCHhow - repackage-msi-el-win32-shippable/opt: U2UTN8jvSL2w3j4-TIw0DQ - repackage-msi-el-win64-shippable/opt: JHGvYlqASEqBhSiWBOMGiw - repackage-msi-en-CA-win32-shippable/opt: El8CipvPTHWQ3hrBaLUxUQ - repackage-msi-en-CA-win64-shippable/opt: RLDOZOiqTo6yPOgh8TMCeg - repackage-msi-en-GB-win32-shippable/opt: YyhfpeARTJSgTejsAF2Q6Q - repackage-msi-en-GB-win64-shippable/opt: fHGXj6kuTpuFpREkDdHXEQ - repackage-msi-eo-win32-shippable/opt: eqcnY4qHQ4a2dNKwkDh0tw - repackage-msi-eo-win64-shippable/opt: cdxTdSEzSzKagMGiL23yJg - repackage-msi-es-AR-win32-shippable/opt: eyXyKe5cT7-rzcSkIiVFLg - repackage-msi-es-AR-win64-shippable/opt: XwFjhESMRVaKbBxc8onsKA - repackage-msi-es-CL-win32-shippable/opt: ZnBinM2VT0S4n6rNX7kCsQ - repackage-msi-es-CL-win64-shippable/opt: JIRm49KsTCKZx6CgX1ne5g - repackage-msi-es-ES-win32-shippable/opt: IvbBZSvJRwGcfjxgoQ-cLA - repackage-msi-es-ES-win64-shippable/opt: BIRDAlnYTyyGWJ238sBZOA - repackage-msi-es-MX-win32-shippable/opt: ESyLY7XiQ5ih3o24hcZfyg - repackage-msi-es-MX-win64-shippable/opt: P7DjSbLOREyRKZiADdeHrw - repackage-msi-et-win32-shippable/opt: D5RtxBwUSiuRAKsmNJNH5w - repackage-msi-et-win64-shippable/opt: BDnLv03nQbSm-gXHcg9GeQ - repackage-msi-eu-win32-shippable/opt: NtHIGIpkTiq63xFWVWNoew - repackage-msi-eu-win64-shippable/opt: HVePxdDMSPWNSNnOd03feg - repackage-msi-fa-win32-shippable/opt: ZHuFifh-QK6dPXIvhAV8Eg - repackage-msi-fa-win64-shippable/opt: Dk8RSGvpTxiD_HFo_7rAwQ - repackage-msi-ff-win32-shippable/opt: MasiFEzGSN-AamiLF2hWKg - repackage-msi-ff-win64-shippable/opt: ElUMInE4S96K18dUGHqwVQ - repackage-msi-fi-win32-shippable/opt: dOZ0OuTUQd-jf0Q2xoPf-A - repackage-msi-fi-win64-shippable/opt: KB4V09PYSX6SeKYZF5DRyg - repackage-msi-fr-win32-shippable/opt: DFts6g3YQ62gssQVrvaCHg - repackage-msi-fr-win64-shippable/opt: ZowbNkysQvG6gGaoDYkljg - repackage-msi-fur-win32-shippable/opt: Ih2rCsTJTMChys4aGXfObA - repackage-msi-fur-win64-shippable/opt: Z2cvhZCRRda5lO_AhzDemA - repackage-msi-fy-NL-win32-shippable/opt: Jpbn6E4cQVeuJ5nO2BRbKQ - repackage-msi-fy-NL-win64-shippable/opt: Alj4r4XJT_mABdHu1z53SA - repackage-msi-ga-IE-win32-shippable/opt: QXUxrvh_TVuixGYhQkVxPw - repackage-msi-ga-IE-win64-shippable/opt: dI4ZnOzTQ8yCyoRqwxeJFg - repackage-msi-gd-win32-shippable/opt: CeX04HfxSpKRuQG_i7_YvQ - repackage-msi-gd-win64-shippable/opt: Rwl537hBSzOQ6jaMYIVBXg - repackage-msi-gl-win32-shippable/opt: CR4MbSEqQ7-erVSkdp_phw - repackage-msi-gl-win64-shippable/opt: AA--2OlnTd6JSQUaWPAFYg - repackage-msi-gn-win32-shippable/opt: O_rdlN6VT4GTPNKxrx_0fA - repackage-msi-gn-win64-shippable/opt: Vx0QEEdmTfqviucBwgt6VA - repackage-msi-gu-IN-win32-shippable/opt: Gu8OM5S0RECsV6Ss0B2LSg - repackage-msi-gu-IN-win64-shippable/opt: HWcJ8OHYTpyskwjBxISbkA - repackage-msi-he-win32-shippable/opt: EeUaGKbVSIW38iqYww_yYA - repackage-msi-he-win64-shippable/opt: EiV5vfdVRjOgkTDYoB7AHg - repackage-msi-hi-IN-win32-shippable/opt: WzdARKj-QpWnI-qygUOJhQ - repackage-msi-hi-IN-win64-shippable/opt: Vy5zwHDcT3OUJi5y8-Ptrw - repackage-msi-hr-win32-shippable/opt: TeqKE9vYQdm_Y9es3vuw9A - repackage-msi-hr-win64-shippable/opt: Xe_szOqBTxmI0HC6DlqXWg - repackage-msi-hsb-win32-shippable/opt: SHKK_MxzTuCnBMJNEzcKbQ - repackage-msi-hsb-win64-shippable/opt: Bn_a3kjySRiSl0hTfeog-Q - repackage-msi-hu-win32-shippable/opt: dOmzkn_kRWmW5B6Kt5TgvQ - repackage-msi-hu-win64-shippable/opt: BLyI3j_UQYOpcF2I7wMClg - repackage-msi-hy-AM-win32-shippable/opt: KCenOY_TRtOAaq1zEATACg - repackage-msi-hy-AM-win64-shippable/opt: D89_5VyKQOCbtkqmmOCihQ - repackage-msi-ia-win32-shippable/opt: feHSVCahR0SNJNefFi0RFg - repackage-msi-ia-win64-shippable/opt: OMTqCgF6TLCldm5YAxmqJg - repackage-msi-id-win32-shippable/opt: eSG-px8-T6ORh_AkLVDuVQ - repackage-msi-id-win64-shippable/opt: XZg0kzqOToCPtquY5wkrMg - repackage-msi-is-win32-shippable/opt: QVGwFamWQku2ERvht2zndQ - repackage-msi-is-win64-shippable/opt: W43fotyrQUu51EihGJVNCA - repackage-msi-it-win32-shippable/opt: diDSmFvjQNi5z3WL-nAbMQ - repackage-msi-it-win64-shippable/opt: KJPcE6JoR4mXpdukhguK2w - repackage-msi-ja-win32-shippable/opt: aQY6QU-oQWWk4RO9DRf2lA - repackage-msi-ja-win64-shippable/opt: S94GlHrxQeCnfEnPpA-SBQ - repackage-msi-ka-win32-shippable/opt: BfXO_oBoQpmuuRODKZdKJg - repackage-msi-ka-win64-shippable/opt: HCdNwMkLQtahFSomcTEMRw - repackage-msi-kab-win32-shippable/opt: Xz6uuHGpRJOgnlFVNNSSSQ - repackage-msi-kab-win64-shippable/opt: GDfsDtb8Sbq2lSyQMgGhMA - repackage-msi-kk-win32-shippable/opt: KHvNQTGjSvaDUgcPiD6g4g - repackage-msi-kk-win64-shippable/opt: UIFQuOaDT42G16VKAcZnJw - repackage-msi-km-win32-shippable/opt: axFjzLRXRGy88YwaMUwrAQ - repackage-msi-km-win64-shippable/opt: EwHOTl05RNCtnElGq7-m3Q - repackage-msi-kn-win32-shippable/opt: L35h_YscSUW039aeZaznfA - repackage-msi-kn-win64-shippable/opt: SpB-_ewXT_mYVdUYJT3rcQ - repackage-msi-ko-win32-shippable/opt: cxR5cZTbSZ2JAx1uqlFkvg - repackage-msi-ko-win64-shippable/opt: AJ5PhfjpSi6FSdhhmj7CvQ - repackage-msi-lij-win32-shippable/opt: bW0D0QW1QaqEgOLJQ5ycPg - repackage-msi-lij-win64-shippable/opt: FGXMkeNpSIW_TfMIMJsByg - repackage-msi-lt-win32-shippable/opt: IbYexEWRR5OTyulTdsNURA - repackage-msi-lt-win64-shippable/opt: K_40hQvsQVyN_tB4cxsDyg - repackage-msi-lv-win32-shippable/opt: AoB8g_XpSi6veIzyZjNmIg - repackage-msi-lv-win64-shippable/opt: L-xAQiOgTIi_u31EFWZLDQ - repackage-msi-mk-win32-shippable/opt: BldJRtdKSdmDDNhiGPJKIA - repackage-msi-mk-win64-shippable/opt: QM6QjcbpThW-JPypI1P2BA - repackage-msi-mr-win32-shippable/opt: XcOygchWSOaXE3uuBjSbjg - repackage-msi-mr-win64-shippable/opt: WwOqfd4KSUm1QQT0ewqWrw - repackage-msi-ms-win32-shippable/opt: REDJYO8OTuy8id9QvwrV1A - repackage-msi-ms-win64-shippable/opt: WtGBN6jXQjWV3I3tmsxe9w - repackage-msi-my-win32-shippable/opt: NewtAgiMS2GHjW4HuVTQGA - repackage-msi-my-win64-shippable/opt: Rm5Xx_nJSOyy3CGpiB0sZQ - repackage-msi-nb-NO-win32-shippable/opt: DQY7YjTqTDSxaDmuNIpomQ - repackage-msi-nb-NO-win64-shippable/opt: AAmv9CNdQR2j338cKeO3EQ - repackage-msi-ne-NP-win32-shippable/opt: WKMeyZF4TPu9NAVM4T8dLQ - repackage-msi-ne-NP-win64-shippable/opt: ffVrpaXqQFWEGHYm5qejiQ - repackage-msi-nl-win32-shippable/opt: BlEaXikIS2yuzf4W9eA4dw - repackage-msi-nl-win64-shippable/opt: WvI6_WfiQv2fMPvmiCqrew - repackage-msi-nn-NO-win32-shippable/opt: IpMUrbGxQe6AHknBroDlEQ - repackage-msi-nn-NO-win64-shippable/opt: PtSuqN0RTfigIxzuK2MFVg - repackage-msi-oc-win32-shippable/opt: Jlayz7-aT7upuEbN5Z-GYQ - repackage-msi-oc-win64-shippable/opt: OZ8tOdnZT9eQkrIN7ZMzPg - repackage-msi-pa-IN-win32-shippable/opt: TAwvj3o5TMudtCgky4QfhA - repackage-msi-pa-IN-win64-shippable/opt: OFOKQk0-TaqQFp2XlrDtng - repackage-msi-pl-win32-shippable/opt: NXMBk-F3RDauExZv3V7oyg - repackage-msi-pl-win64-shippable/opt: TJa8wZ6NSTSnvUkNnnl1Sw - repackage-msi-pt-BR-win32-shippable/opt: BDpCLzRxSlaOOX_ELQtrxg - repackage-msi-pt-BR-win64-shippable/opt: b3M6Y7v_QGeea-PqEdPdsQ - repackage-msi-pt-PT-win32-shippable/opt: Pf9VNojXQqaOxtWnwsmaiw - repackage-msi-pt-PT-win64-shippable/opt: Cl_8rwyyS2WUvlXJpQ9ZtA - repackage-msi-rm-win32-shippable/opt: HQ0IrgTHTzSPMzaHIMO5Rw - repackage-msi-rm-win64-shippable/opt: HCMi-iD_Tbu3OruLg-3XRw - repackage-msi-ro-win32-shippable/opt: KzWEN2dRSz6w3XI8J3iMnw - repackage-msi-ro-win64-shippable/opt: TOgl2SjxRI2sKH7_DrlqrA - repackage-msi-ru-win32-shippable/opt: KhYRWDreQTqKokPTxDqMFA - repackage-msi-ru-win64-shippable/opt: DVUIdJLXSYGB5MhLyqBkhA - repackage-msi-sat-win32-shippable/opt: FMCTTYZpS7aDSfND9YKE0g - repackage-msi-sat-win64-shippable/opt: cyjdrnxWSp6XuexGVebtew - repackage-msi-sc-win32-shippable/opt: cDDyz5onSQi8zmzYK7p0WQ - repackage-msi-sc-win64-shippable/opt: E3L36QSqQOaBIqfQXV3uHA - repackage-msi-sco-win32-shippable/opt: I7_lVGP4TwOAPwWF85MG_w - repackage-msi-sco-win64-shippable/opt: C1iIqykhSfeDCO49lByn9w - repackage-msi-si-win32-shippable/opt: Zn0MjIipRQ-KTrlcu0USZQ - repackage-msi-si-win64-shippable/opt: ckx8zIKxR9-C7Zy6h9vfGg - repackage-msi-sk-win32-shippable/opt: Y233MfjRRCanvTRaf3SsiQ - repackage-msi-sk-win64-shippable/opt: TWcySl05Q7-mvY5M4vQ7Kg - repackage-msi-skr-win32-shippable/opt: E3NNFAbQQo2Oo-ZBamJOoQ - repackage-msi-skr-win64-shippable/opt: dRXYE8kMTgujuY_fnVsFrQ - repackage-msi-sl-win32-shippable/opt: Paj18rftQiGZ_iAPbhWzdw - repackage-msi-sl-win64-shippable/opt: WQeHdhIaShK4sXQ6703TCg - repackage-msi-son-win32-shippable/opt: JW59eUAWTRacz_iZSAKv3A - repackage-msi-son-win64-shippable/opt: JzYUK15GSvu4q_UWVy2wGA - repackage-msi-sq-win32-shippable/opt: dEwgjpBHSSOP7aI3ewgIow - repackage-msi-sq-win64-shippable/opt: Z690-CGSS12rNwn0cPUJlA - repackage-msi-sr-win32-shippable/opt: YaV3JhT7R-e3oYnBpjJNcg - repackage-msi-sr-win64-shippable/opt: CKi68FSST4iMazP3-R9i0Q - repackage-msi-sv-SE-win32-shippable/opt: ZrHp3AuwSLGqnbqXp7dmDQ - repackage-msi-sv-SE-win64-shippable/opt: ZM4rubBMR8iRHMKZ5zEboA - repackage-msi-szl-win32-shippable/opt: DtlFeBKwThiefe5880f-Bw - repackage-msi-szl-win64-shippable/opt: c2kvUfOYQUarIesbqjB63Q - repackage-msi-ta-win32-shippable/opt: PEtr0jIxT_eoFqRpvMlw9Q - repackage-msi-ta-win64-shippable/opt: Of1baSthQ4eFB4NSUhUIGQ - repackage-msi-te-win32-shippable/opt: OIp5RwffSkaDQ5yNBOZJBA - repackage-msi-te-win64-shippable/opt: amPfVyfEQbqKXpOT7AUorw - repackage-msi-tg-win32-shippable/opt: OPjfKnE7SQm76OAr4RNxvg - repackage-msi-tg-win64-shippable/opt: b9ofkccCShuMPmhzqJQiOQ - repackage-msi-th-win32-shippable/opt: f-1jrQleQwe1tVnh8stKbA - repackage-msi-th-win64-shippable/opt: AxHk7oYKQy6602wPKk1lag - repackage-msi-tl-win32-shippable/opt: H4fjBU3JTHCBYImGSv-oRw - repackage-msi-tl-win64-shippable/opt: GJXsfCAqT5qyfekBq_GDyQ - repackage-msi-tr-win32-shippable/opt: MBXr5FPGQi6VaDOYmjofDA - repackage-msi-tr-win64-shippable/opt: YgOXWcApROSyxMT9nwhkHw - repackage-msi-trs-win32-shippable/opt: HfIsg3znQ8ifaWFTVMHKCQ - repackage-msi-trs-win64-shippable/opt: Idkda9lTRhe0gMnxO7YFbA - repackage-msi-uk-win32-shippable/opt: aMMUVbeBSv-6M036hOYA9Q - repackage-msi-uk-win64-shippable/opt: fp9YRgEoSOy2y_eG2muhTg - repackage-msi-ur-win32-shippable/opt: USbuoG7RSae9dtzeTrUFUQ - repackage-msi-ur-win64-shippable/opt: Zv05TmTWRTqMBaYcPMs1Kw - repackage-msi-uz-win32-shippable/opt: drqyliAERTiL8e4cnmBL0Q - repackage-msi-uz-win64-shippable/opt: TH0qifNoQF2b_pL071rsxw - repackage-msi-vi-win32-shippable/opt: ePTMLarsTlmziiHWDeqjww - repackage-msi-vi-win64-shippable/opt: PmLTdh-wSaaEbBhD1gpcDg - repackage-msi-win32-shippable/opt: bzJdrd9wSdu33qaBUuvM6w - repackage-msi-win64-shippable/opt: D-kGeSCFRz6B6_Yuk1ZV5g - repackage-msi-xh-win32-shippable/opt: Cd6ftVJmR_O6QxLwPexk6g - repackage-msi-xh-win64-shippable/opt: Q44VdProQZ60fKAsbHMuwA - repackage-msi-zh-CN-win32-shippable/opt: dxiWl4y6R5Km0QFtasY6Kw - repackage-msi-zh-CN-win64-shippable/opt: SqfrarsMTmOLqMRi85C27Q - repackage-msi-zh-TW-win32-shippable/opt: SFWZ_6YOQfeovW-m-nUOpw - repackage-msi-zh-TW-win64-shippable/opt: Qha3HoRvQxeByNSrHObGLg - repackage-msix-win64/debug: NerpOP6ZQlOGsR9FJbGfSw - repackage-rpm-linux-shippable/opt: cEapTfHlTcuam6RrYLQs1A - repackage-rpm-linux64-aarch64-shippable/opt: a2xnNObeRQGtQq597srzkw - repackage-rpm-linux64-shippable/opt: QRcexftMQV6zkeB3pkGfGg - repackage-shippable-l10n-msix-win32-shippable/opt: X9Rtf7oQSwazSSP8zCa5MQ - repackage-shippable-l10n-msix-win64-aarch64-shippable/opt: fhUHy-gHQCewZXnvZIc6pA - repackage-shippable-l10n-msix-win64-shippable/opt: P70p805AQUWZ44ESzK4czA - repackage-signing-l10n-ach-win32-shippable/opt: bcmO20tHQ72XEeXw34jkGQ - repackage-signing-l10n-ach-win64-aarch64-shippable/opt: U8u45rnkSV-ZpaSg7mCb3Q - repackage-signing-l10n-ach-win64-shippable/opt: U1YZwBhAQE6TkYRudyvZlg - repackage-signing-l10n-af-win32-shippable/opt: J-ClxhwkSYqOUDoxJYWiFg - repackage-signing-l10n-af-win64-aarch64-shippable/opt: P7s_2gbsRBixIWbJH28Ljw - repackage-signing-l10n-af-win64-shippable/opt: XBqu4yOZTReaNEmwbwr5Zg - repackage-signing-l10n-an-win32-shippable/opt: FfMH1VbZT92oV-R0ud449Q - repackage-signing-l10n-an-win64-aarch64-shippable/opt: TeE2f_aCQ5u3Xz0LYokosA - repackage-signing-l10n-an-win64-shippable/opt: Y_R6_1ngR-SNPZXr-NEdZA - repackage-signing-l10n-ar-win32-shippable/opt: SnqD9nRlRtaLVut9M-vvmw - repackage-signing-l10n-ar-win64-aarch64-shippable/opt: LDbxtmYOTjySPKn3K6hNYw - repackage-signing-l10n-ar-win64-shippable/opt: LQkILV47Q1GRNLDbZYIcYA - repackage-signing-l10n-ast-win32-shippable/opt: LNsaibfuT9-SD8mb_fN5pA - repackage-signing-l10n-ast-win64-aarch64-shippable/opt: YCqR0-j6Q_KrdpKpLhRKfw - repackage-signing-l10n-ast-win64-shippable/opt: OYgajHp5SJO5XogULj6MLg - repackage-signing-l10n-az-win32-shippable/opt: Kyo6p7-zSdyk5fDPmqggng - repackage-signing-l10n-az-win64-aarch64-shippable/opt: WsYCyM0yRFm_RCCMlN_cgw - repackage-signing-l10n-az-win64-shippable/opt: A2vm4_ZtQ7KatycmIcOTIg - repackage-signing-l10n-be-win32-shippable/opt: GWQpANqeQSKo3iuvStco7w - repackage-signing-l10n-be-win64-aarch64-shippable/opt: fzeS6UciRs-iWAePsu_UvQ - repackage-signing-l10n-be-win64-shippable/opt: UOmgYWnfT-yjzTHIdty0zQ - repackage-signing-l10n-bg-win32-shippable/opt: fnG-XXaCSmWSHlpLfiSUdA - repackage-signing-l10n-bg-win64-aarch64-shippable/opt: PunjwgaLSyit0hvNn_4WTw - repackage-signing-l10n-bg-win64-shippable/opt: AbY_lvcWRmGd5imO5i7Dng - repackage-signing-l10n-bn-win32-shippable/opt: KJguMBkKQmeulOgGexnfYg - repackage-signing-l10n-bn-win64-aarch64-shippable/opt: CjGgbQTdTyCcTXuQoHML_Q - repackage-signing-l10n-bn-win64-shippable/opt: cDmpzvQURvasAoSPSdl4xw - repackage-signing-l10n-br-win32-shippable/opt: NuYy1lrKQLaxQ2MdhJD9fQ - repackage-signing-l10n-br-win64-aarch64-shippable/opt: FLjlFn-vR5SbdltF_Ejkng - repackage-signing-l10n-br-win64-shippable/opt: fD9e9Ks9Q6yVTf5ZAGHZCg - repackage-signing-l10n-bs-win32-shippable/opt: GGdRlNQAS5iCcJ7Q6P94Sg - repackage-signing-l10n-bs-win64-aarch64-shippable/opt: P7mOGteTSDeJ0X_cvxGxjA - repackage-signing-l10n-bs-win64-shippable/opt: f72sm1VLQCiVzaJ7lPVXAA - repackage-signing-l10n-ca-valencia-win32-shippable/opt: ChnUkhc0SgqiyX-tcSPMbg - repackage-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: fzymT5gER-iFHw-PKsXHHg - repackage-signing-l10n-ca-valencia-win64-shippable/opt: DhBcihPtSGOuDiLvf6MtMw - repackage-signing-l10n-ca-win32-shippable/opt: QrY9wLy_QCWBeBtfmJq5mw - repackage-signing-l10n-ca-win64-aarch64-shippable/opt: G6nOT7d1Q16OOKg_EMpVcQ - repackage-signing-l10n-ca-win64-shippable/opt: EEgdrPIlTE2w8smEvsECZQ - repackage-signing-l10n-cak-win32-shippable/opt: E615bpV7STi5LMsKbvA6-w - repackage-signing-l10n-cak-win64-aarch64-shippable/opt: GaUZMFdoShC4lUN1l95LIQ - repackage-signing-l10n-cak-win64-shippable/opt: X68Nu2LpTM6Ua3PGdyjrOg - repackage-signing-l10n-cs-win32-shippable/opt: HLw-oiUGS32_NBixGtjuGA - repackage-signing-l10n-cs-win64-aarch64-shippable/opt: EisJ2jakRo-bRfCvl9vYXQ - repackage-signing-l10n-cs-win64-shippable/opt: YOuG4nnLRWSLjfQx6pnYOA - repackage-signing-l10n-cy-win32-shippable/opt: NDGXkm3HT_KAA9CBRD_IMw - repackage-signing-l10n-cy-win64-aarch64-shippable/opt: doatv2hoSweSsT0Cs6ssrA - repackage-signing-l10n-cy-win64-shippable/opt: Fc2m8zj7Q-C1Cj_MeBic2w - repackage-signing-l10n-da-win32-shippable/opt: O_le5TC-Qvu3vwe2U9w3DA - repackage-signing-l10n-da-win64-aarch64-shippable/opt: LLxwwHW8S9mFbJLcTV45fA - repackage-signing-l10n-da-win64-shippable/opt: dWifOJgHS_aL0pU56DoCzQ - repackage-signing-l10n-de-win32-shippable/opt: EI7Ihc7sRYOBHDcOwT8sCA - repackage-signing-l10n-de-win64-aarch64-shippable/opt: ArjC1QOwRr2u6eUg3LtK8A - repackage-signing-l10n-de-win64-shippable/opt: FEJl1SsRTsG_NoQLllZm3Q - repackage-signing-l10n-dsb-win32-shippable/opt: fbB0dKEETemClXlo_W1ECA - repackage-signing-l10n-dsb-win64-aarch64-shippable/opt: eG7z89I0SZGmoz1GWzN9ew - repackage-signing-l10n-dsb-win64-shippable/opt: V0e-kF1ORt2MdjKmKkMwaw - repackage-signing-l10n-el-win32-shippable/opt: PG0_I4KdRvCj4MXyyI5j0g - repackage-signing-l10n-el-win64-aarch64-shippable/opt: HKtiBL1RT3KlsWNLnHcwXA - repackage-signing-l10n-el-win64-shippable/opt: VP4-5t9qTaWU3lbnmteJKg - repackage-signing-l10n-en-CA-win32-shippable/opt: ULvKL1l6R3OMOFx-COJhBA - repackage-signing-l10n-en-CA-win64-aarch64-shippable/opt: I4MpSSANR8-ot3aXmQs4vA - repackage-signing-l10n-en-CA-win64-shippable/opt: AvkuFmgYRdSqcQK43yivEg - repackage-signing-l10n-en-GB-win32-shippable/opt: bPmaW6kiRqqnyB6ACFqvGw - repackage-signing-l10n-en-GB-win64-aarch64-shippable/opt: eP567CUyQXu4OQ2M-ImX_Q - repackage-signing-l10n-en-GB-win64-shippable/opt: XnrN_k0eTleNd4YQhszJDw - repackage-signing-l10n-eo-win32-shippable/opt: No4g5w-CQ_KXFi8j12wx7Q - repackage-signing-l10n-eo-win64-aarch64-shippable/opt: RilP0MR6QTGrVWR4wmc-Hw - repackage-signing-l10n-eo-win64-shippable/opt: WwyC1mJXTMWz3LcWQsR4Og - repackage-signing-l10n-es-AR-win32-shippable/opt: JBTi5CXCTNuV5_bH18-LjA - repackage-signing-l10n-es-AR-win64-aarch64-shippable/opt: U2M_3jc2R7SUlqX5aH5TTA - repackage-signing-l10n-es-AR-win64-shippable/opt: PmWPximdSeGuHzPjPBRf8Q - repackage-signing-l10n-es-CL-win32-shippable/opt: arP2LZ8nQn2idT7r6blT7g - repackage-signing-l10n-es-CL-win64-aarch64-shippable/opt: OYhOWloAR2e_VMRhBw-kNA - repackage-signing-l10n-es-CL-win64-shippable/opt: UjLlK1YBRACBLaMGZ-6Cug - repackage-signing-l10n-es-ES-win32-shippable/opt: bQ2AlBSiRjqHZucdTPWlkw - repackage-signing-l10n-es-ES-win64-aarch64-shippable/opt: D2Gu7344Q-O_j0fx0QPstA - repackage-signing-l10n-es-ES-win64-shippable/opt: BuzL9FyzSFKGyD66FoJ03A - repackage-signing-l10n-es-MX-win32-shippable/opt: bD44DbKVSlypgIOwEEtQ4A - repackage-signing-l10n-es-MX-win64-aarch64-shippable/opt: O4vGOh_AQTmdHGgr1L_TJQ - repackage-signing-l10n-es-MX-win64-shippable/opt: fMkKn-noS8GFGFUq3eSJWA - repackage-signing-l10n-et-win32-shippable/opt: dnYLOjDmSle8OlTAsi5uJQ - repackage-signing-l10n-et-win64-aarch64-shippable/opt: X9LPGqCpTLqZ1GMnbu8Xsg - repackage-signing-l10n-et-win64-shippable/opt: EO9_XleXRzOKnV1WsEVf7g - repackage-signing-l10n-eu-win32-shippable/opt: Ht47MmkZQw-d6FoOHf86Dw - repackage-signing-l10n-eu-win64-aarch64-shippable/opt: O6J2l5lPSoCwR3fUHy7jQQ - repackage-signing-l10n-eu-win64-shippable/opt: WlApRHcrTViqp-hA0VsYvw - repackage-signing-l10n-fa-win32-shippable/opt: b7MMxpCxSuuu9_E1CA-0_w - repackage-signing-l10n-fa-win64-aarch64-shippable/opt: CLhiFBfmQXCY1IKPJqDTSA - repackage-signing-l10n-fa-win64-shippable/opt: WBHwMc1bQXCSjZm1EPGDgA - repackage-signing-l10n-ff-win32-shippable/opt: AWiFeiGOSCqvMnpxhm1Wog - repackage-signing-l10n-ff-win64-aarch64-shippable/opt: OTlMtUz7QE2yObZ_22gXJg - repackage-signing-l10n-ff-win64-shippable/opt: POiewI3UT_yo0ZYIo-QMDg - repackage-signing-l10n-fi-win32-shippable/opt: b1F_S_G9QK2gDx8B8t-90A - repackage-signing-l10n-fi-win64-aarch64-shippable/opt: NDIRMFshToKX9LvH0spAXA - repackage-signing-l10n-fi-win64-shippable/opt: R2LTNsNTRU6Pi4ACDe8Kjg - repackage-signing-l10n-fr-win32-shippable/opt: Yn8IywHdShighGzKORyMGw - repackage-signing-l10n-fr-win64-aarch64-shippable/opt: WRMosq71QJGVaJVwrm9mWg - repackage-signing-l10n-fr-win64-shippable/opt: XRUiWQVITvWllt0_ftPcHg - repackage-signing-l10n-fur-win32-shippable/opt: PdXm528eTee2fOJ8QqfIvg - repackage-signing-l10n-fur-win64-aarch64-shippable/opt: BLvnMwEKReCvuN9hlDDlBQ - repackage-signing-l10n-fur-win64-shippable/opt: ZyecijIoSuyJ3FnNtZxMAw - repackage-signing-l10n-fy-NL-win32-shippable/opt: Mls9g5snR4CSBI-Cw-YPMA - repackage-signing-l10n-fy-NL-win64-aarch64-shippable/opt: dJdCQ84TR52x9uiR882Mtg - repackage-signing-l10n-fy-NL-win64-shippable/opt: L-oyGhIqQ8ufFBdVNPm7PQ - repackage-signing-l10n-ga-IE-win32-shippable/opt: YyEK0GsSQk6x3bxQHpyDfQ - repackage-signing-l10n-ga-IE-win64-aarch64-shippable/opt: bzOqHYQbSviMRP7g5Fe_-w - repackage-signing-l10n-ga-IE-win64-shippable/opt: ff2MjEsqSyKZlOcjOtiXeQ - repackage-signing-l10n-gd-win32-shippable/opt: ablt_ZEJQ5KJstM1-fLUuQ - repackage-signing-l10n-gd-win64-aarch64-shippable/opt: E8QCDgaNQvCdjw0Fs1Aupg - repackage-signing-l10n-gd-win64-shippable/opt: bJdqVWUOQt6P4_TRdx6P4w - repackage-signing-l10n-gl-win32-shippable/opt: RHmGCrlVTMeJAJk5i7-ERw - repackage-signing-l10n-gl-win64-aarch64-shippable/opt: TofF3qVXRl2pTDj12KL_gA - repackage-signing-l10n-gl-win64-shippable/opt: Jxymwoo1Ry2rfNb6Z6m5lQ - repackage-signing-l10n-gn-win32-shippable/opt: TWQJ65HbSYuOluqmNc80Xg - repackage-signing-l10n-gn-win64-aarch64-shippable/opt: brN-RAUnTHOlGuy4GTyjCw - repackage-signing-l10n-gn-win64-shippable/opt: HeIkhVFbQ1WdoAP40TRgeQ - repackage-signing-l10n-gu-IN-win32-shippable/opt: c_wb8w-iR7SUpLj5MjwB2w - repackage-signing-l10n-gu-IN-win64-aarch64-shippable/opt: O1PP6GWSRsOOha2IvjFW5w - repackage-signing-l10n-gu-IN-win64-shippable/opt: ArRF9Jq7R5SxJCXshoFSLw - repackage-signing-l10n-he-win32-shippable/opt: a14w0DUwT4CcWpqfdsNg0Q - repackage-signing-l10n-he-win64-aarch64-shippable/opt: STtTKlXHQNGzY_ACmu9vLw - repackage-signing-l10n-he-win64-shippable/opt: AprffeU1TtOq0jpcSRRXAA - repackage-signing-l10n-hi-IN-win32-shippable/opt: MlsWht1SSd2vfPDPGvskRQ - repackage-signing-l10n-hi-IN-win64-aarch64-shippable/opt: epZEYz2dRvKLkJc6N2-GDA - repackage-signing-l10n-hi-IN-win64-shippable/opt: DgGi_-YHRlSM37CF8KZkZQ - repackage-signing-l10n-hr-win32-shippable/opt: JnW_iZ3WRwKduAbDUIIcxg - repackage-signing-l10n-hr-win64-aarch64-shippable/opt: KCQDStlvR0-N-aGbHpprtA - repackage-signing-l10n-hr-win64-shippable/opt: fwlCshIQQIGHPGOkrY0afw - repackage-signing-l10n-hsb-win32-shippable/opt: KuhdSZiDTBqD5IUiuDRq2g - repackage-signing-l10n-hsb-win64-aarch64-shippable/opt: ep3JPn-dRfSj7Oq-5JgObA - repackage-signing-l10n-hsb-win64-shippable/opt: YbCkwPq9RIG5TqqM-FbmkA - repackage-signing-l10n-hu-win32-shippable/opt: fxK70vJvTXqqDe_k9pdFvg - repackage-signing-l10n-hu-win64-aarch64-shippable/opt: U3xu1FUHQjqxwcphqe0Ifw - repackage-signing-l10n-hu-win64-shippable/opt: fUOjTuNvTPyGORX8rcwnnQ - repackage-signing-l10n-hy-AM-win32-shippable/opt: aaLy6kduRTq_BjB2aPxhZg - repackage-signing-l10n-hy-AM-win64-aarch64-shippable/opt: OK-lMctoTHuhfclbGzhKUQ - repackage-signing-l10n-hy-AM-win64-shippable/opt: W4LdpxlXQO67p-xWFNezWw - repackage-signing-l10n-ia-win32-shippable/opt: D3hJpyMxS5a90ZhS59y4bg - repackage-signing-l10n-ia-win64-aarch64-shippable/opt: bAiMHgreRsCjYZ5TJwq6zQ - repackage-signing-l10n-ia-win64-shippable/opt: RtmVPLtLRsCYlWu5mItGkw - repackage-signing-l10n-id-win32-shippable/opt: cbYqb1l9QiGKuAtOh7_WXQ - repackage-signing-l10n-id-win64-aarch64-shippable/opt: Di-MvgK2QkW7FwilB1dllA - repackage-signing-l10n-id-win64-shippable/opt: absH9_TtTtq35D2P0HMDjA - repackage-signing-l10n-is-win32-shippable/opt: PAY8-e44RHOa2JRyl5HSsA - repackage-signing-l10n-is-win64-aarch64-shippable/opt: ZsKexP0VRm2cbL9fcN_4pg - repackage-signing-l10n-is-win64-shippable/opt: dro2GA_jR8iBfhP2hBTzMw - repackage-signing-l10n-it-win32-shippable/opt: VZvItyXvSU2EpayahMjnSA - repackage-signing-l10n-it-win64-aarch64-shippable/opt: MlqpqpO2QLmfVFbutec7dA - repackage-signing-l10n-it-win64-shippable/opt: EmwMq4SJQa6TZHDZCKLDLg - repackage-signing-l10n-ja-win32-shippable/opt: MRPVov_JSBeStP__ZhSWLQ - repackage-signing-l10n-ja-win64-aarch64-shippable/opt: NauQgjJYQYCdXDmx1dLVpQ - repackage-signing-l10n-ja-win64-shippable/opt: Eee8FJ0tRWe21KLMyn47pg - repackage-signing-l10n-ka-win32-shippable/opt: HsroJuERSJSf3ZnSNwaFIg - repackage-signing-l10n-ka-win64-aarch64-shippable/opt: GLgp2zrwTsC5UzL25zDefw - repackage-signing-l10n-ka-win64-shippable/opt: B201Zi1IS4S2Q3JQQrhkIg - repackage-signing-l10n-kab-win32-shippable/opt: fMAJ_dIdRCiP2EuJ9m6D6g - repackage-signing-l10n-kab-win64-aarch64-shippable/opt: LT3mE0BOTRi-0SAGwo5TUg - repackage-signing-l10n-kab-win64-shippable/opt: FnL3rQZaRFujpCyON45peQ - repackage-signing-l10n-kk-win32-shippable/opt: a3GOyBtMSgCQLMj1oQfm2A - repackage-signing-l10n-kk-win64-aarch64-shippable/opt: NLyydotSRm6Q9nfVLvUvtQ - repackage-signing-l10n-kk-win64-shippable/opt: HNx5BDJ4RcafEv__mMZZmQ - repackage-signing-l10n-km-win32-shippable/opt: TMpROirsS5ehT3yGfjJzKg - repackage-signing-l10n-km-win64-aarch64-shippable/opt: VeUzQaqgQpWP_fTi3oNh5g - repackage-signing-l10n-km-win64-shippable/opt: UhPHOw2xS5uM2W0lQ_UCwg - repackage-signing-l10n-kn-win32-shippable/opt: Xoe1LTyoS3u_wqbst-RF8A - repackage-signing-l10n-kn-win64-aarch64-shippable/opt: IjHtDOGGQsSoeoXlIWZxwA - repackage-signing-l10n-kn-win64-shippable/opt: a94heZQlRSKuS1wO3CNsLA - repackage-signing-l10n-ko-win32-shippable/opt: PLIve-62Smq4NU2lc-ygQA - repackage-signing-l10n-ko-win64-aarch64-shippable/opt: SJgA0qHHSI-2Lb9CnbUfow - repackage-signing-l10n-ko-win64-shippable/opt: bPuOThK9RKm-yxmbLJXqTw - repackage-signing-l10n-lij-win32-shippable/opt: W1Pj-mYaRPatKyYdhPkCYw - repackage-signing-l10n-lij-win64-aarch64-shippable/opt: f_jhNPdNSaC7y5XFpdtC0g - repackage-signing-l10n-lij-win64-shippable/opt: cK31JyIaQYKunpuJq06EEg - repackage-signing-l10n-lt-win32-shippable/opt: EZE4QYQmRNGrUGusuFzFjg - repackage-signing-l10n-lt-win64-aarch64-shippable/opt: X_FYLcq4QIiKLEJCh3C_1Q - repackage-signing-l10n-lt-win64-shippable/opt: BR1U183vTXmNY5_Rdz_PuA - repackage-signing-l10n-lv-win32-shippable/opt: N1JGw6hdTKW5TlWrQXBc9A - repackage-signing-l10n-lv-win64-aarch64-shippable/opt: fQoBCzUSSAGnNOsrNZ_fzw - repackage-signing-l10n-lv-win64-shippable/opt: ZwKZkv3sT72TJWP8AbXyOw - repackage-signing-l10n-mk-win32-shippable/opt: L2Np98j3SRqa2xoVjZ5iOg - repackage-signing-l10n-mk-win64-aarch64-shippable/opt: dpn8eoBwRoWdnGpEhXQiag - repackage-signing-l10n-mk-win64-shippable/opt: ZEZO_SVKQKeZEPCdVdrIuA - repackage-signing-l10n-mr-win32-shippable/opt: cSf-FUfRToG2eB1IxbYY3A - repackage-signing-l10n-mr-win64-aarch64-shippable/opt: J21q0AfPQjqh7533tm1-JA - repackage-signing-l10n-mr-win64-shippable/opt: HSfSq0BySbOe2Ib3n2Glvw - repackage-signing-l10n-ms-win32-shippable/opt: cH_gXKEqQpygcIpVGvl4qA - repackage-signing-l10n-ms-win64-aarch64-shippable/opt: Colv3MVARbGAZWppOrYKKQ - repackage-signing-l10n-ms-win64-shippable/opt: Pi5ddWPiQd2JkDdhE9ETcw - repackage-signing-l10n-my-win32-shippable/opt: CzYKWrn7RZq9nt9Wf-VqUA - repackage-signing-l10n-my-win64-aarch64-shippable/opt: czs9flg4SAaVroEwqltNhg - repackage-signing-l10n-my-win64-shippable/opt: dSTLJMHCQZGVme0u_lPXVg - repackage-signing-l10n-nb-NO-win32-shippable/opt: Z4927ouwQ9e9ORU383iTiw - repackage-signing-l10n-nb-NO-win64-aarch64-shippable/opt: JkBtLJglRsWKBYGBWcS_sg - repackage-signing-l10n-nb-NO-win64-shippable/opt: QA3sFg8pQ3Gbro4lBuRQUw - repackage-signing-l10n-ne-NP-win32-shippable/opt: MCl_p5nCRhSXCD8ToHDPIA - repackage-signing-l10n-ne-NP-win64-aarch64-shippable/opt: Dv0xgXk_Qt6nwvce13eNpQ - repackage-signing-l10n-ne-NP-win64-shippable/opt: SlEis8nnQiaOIf37tNxqRQ - repackage-signing-l10n-nl-win32-shippable/opt: ff3VbnRZTZiBYjVOctD0Zw - repackage-signing-l10n-nl-win64-aarch64-shippable/opt: Zfz6R3BxTJ2yRzvTHJXP8Q - repackage-signing-l10n-nl-win64-shippable/opt: JTbOmYAxQ3WvYhN35JrVYQ - repackage-signing-l10n-nn-NO-win32-shippable/opt: Qr61UnCQQfqn6ukZGrPDDQ - repackage-signing-l10n-nn-NO-win64-aarch64-shippable/opt: AfzGz3ApQNiH0VfJ4VvczA - repackage-signing-l10n-nn-NO-win64-shippable/opt: UvvCrHHZSxGm0scdnM3O3w - repackage-signing-l10n-oc-win32-shippable/opt: YeDEF13FQn-ARDYN_mmJiA - repackage-signing-l10n-oc-win64-aarch64-shippable/opt: WzkyAlJgQWmGhytUIQRR5g - repackage-signing-l10n-oc-win64-shippable/opt: PGvWqMaDQJGmBeDEsr9Zlg - repackage-signing-l10n-pa-IN-win32-shippable/opt: dE15Wi71Qv28E2Vrlymn5Q - repackage-signing-l10n-pa-IN-win64-aarch64-shippable/opt: Rlrq3HMyTtymZHOsvxkFag - repackage-signing-l10n-pa-IN-win64-shippable/opt: PubBCr5wRfaOQjN_OG-6YQ - repackage-signing-l10n-pl-win32-shippable/opt: YJPQLZ3mRmmjCczfmLKUmQ - repackage-signing-l10n-pl-win64-aarch64-shippable/opt: N-yxIlW_SletUgLX3ehLkA - repackage-signing-l10n-pl-win64-shippable/opt: NvH_4iB1TP-hjdXE6p60Ag - repackage-signing-l10n-pt-BR-win32-shippable/opt: fR4yFTaRTL-1DPew_vAevA - repackage-signing-l10n-pt-BR-win64-aarch64-shippable/opt: F7QRCX0XTz-3cQE40uDWxQ - repackage-signing-l10n-pt-BR-win64-shippable/opt: Fl8vWP_6RpSHLSZQrqIWzQ - repackage-signing-l10n-pt-PT-win32-shippable/opt: HjqJ8jMzTgOoHR7f_pUg6g - repackage-signing-l10n-pt-PT-win64-aarch64-shippable/opt: Oia2rJ5sQ_iI3K8tadKMlg - repackage-signing-l10n-pt-PT-win64-shippable/opt: AjlD9noHSWiJqZNxFxYOoA - repackage-signing-l10n-rm-win32-shippable/opt: cNOQ9yazQpGuB92clYw4rw - repackage-signing-l10n-rm-win64-aarch64-shippable/opt: Qf7zjFufSu6KTdTkTs6icw - repackage-signing-l10n-rm-win64-shippable/opt: A9dmaM2ORhiS0Dwm5xpQUg - repackage-signing-l10n-ro-win32-shippable/opt: BGDSGgGUQIStViGccXjDwg - repackage-signing-l10n-ro-win64-aarch64-shippable/opt: Nt0LkNyaQPCx9H8eb0C-bg - repackage-signing-l10n-ro-win64-shippable/opt: PvYJO_STQ8e9NGHbkIKInw - repackage-signing-l10n-ru-win32-shippable/opt: Wa1xH8G_RbefNqr6bR11xA - repackage-signing-l10n-ru-win64-aarch64-shippable/opt: f0hFEBQpTwmIBor43WnFgA - repackage-signing-l10n-ru-win64-shippable/opt: Ht2Bwg9bSrq0MegeZD1XHQ - repackage-signing-l10n-sat-win32-shippable/opt: FUms_KDOQ7CaphcIaFhLqg - repackage-signing-l10n-sat-win64-aarch64-shippable/opt: BDsPR4XqRJCULA-kGsN7Sg - repackage-signing-l10n-sat-win64-shippable/opt: FWMnDJcTQZGGJpNG_0tT8A - repackage-signing-l10n-sc-win32-shippable/opt: WI04vk54QUa93SQXtW8n0Q - repackage-signing-l10n-sc-win64-aarch64-shippable/opt: HwO39PY8R6SUyZNjcd8Bgg - repackage-signing-l10n-sc-win64-shippable/opt: S0gMF2ESTK2VPRypMRVDBg - repackage-signing-l10n-sco-win32-shippable/opt: RGo_YHW2SVCkX8fGAftxxw - repackage-signing-l10n-sco-win64-aarch64-shippable/opt: LmWiu_7BQkK3difovYq1aQ - repackage-signing-l10n-sco-win64-shippable/opt: HNR7216zSsybxj4SjqcUqw - repackage-signing-l10n-si-win32-shippable/opt: NCErJl8bTj2Su2kB_dZ1KQ - repackage-signing-l10n-si-win64-aarch64-shippable/opt: D-SDasgiSJ6MstbqxWR_IQ - repackage-signing-l10n-si-win64-shippable/opt: NMkx74QEQUeshD5q28WMow - repackage-signing-l10n-sk-win32-shippable/opt: dlwV-g3kTEa_uHcXNjIJ9g - repackage-signing-l10n-sk-win64-aarch64-shippable/opt: Jbt3QWy-RU-NT4QYnB9qWg - repackage-signing-l10n-sk-win64-shippable/opt: IbQcLdZFTzKkiy3dnZ7Jlg - repackage-signing-l10n-skr-win32-shippable/opt: C5KKoD60T7qi2v641NLoCw - repackage-signing-l10n-skr-win64-aarch64-shippable/opt: cEPnvUNPQMiRS3sUB_ulJw - repackage-signing-l10n-skr-win64-shippable/opt: AzgKKzSTSsuKkhoWViy1hg - repackage-signing-l10n-sl-win32-shippable/opt: TF1gLpU9RDOlaixkd8_-rQ - repackage-signing-l10n-sl-win64-aarch64-shippable/opt: YPZtdfFtQv2SX51SOqVLug - repackage-signing-l10n-sl-win64-shippable/opt: JraQOVa5R16AyaffMFPJ7A - repackage-signing-l10n-son-win32-shippable/opt: Jw3QQX1QSiq0SjjPLhfceQ - repackage-signing-l10n-son-win64-aarch64-shippable/opt: MGtQQDUMTR-TGUz4Iirrog - repackage-signing-l10n-son-win64-shippable/opt: NswCjlp5QgCNVoGC5G8OpQ - repackage-signing-l10n-sq-win32-shippable/opt: AQdzmhGJRBCKBIYfdUQjlg - repackage-signing-l10n-sq-win64-aarch64-shippable/opt: JOa-A3GZTxKRnWQ8iveXeQ - repackage-signing-l10n-sq-win64-shippable/opt: a9-K_T_LTsq1vH9nqa140w - repackage-signing-l10n-sr-win32-shippable/opt: aEOxCDFbRTWGW9tgk9F4yQ - repackage-signing-l10n-sr-win64-aarch64-shippable/opt: N3IxrVvyT3CvF7lO_tAsNw - repackage-signing-l10n-sr-win64-shippable/opt: SVEQaVeZRXCqt6ji1pCusQ - repackage-signing-l10n-sv-SE-win32-shippable/opt: IOfEyZy2SZ-VBUeB09J5Sw - repackage-signing-l10n-sv-SE-win64-aarch64-shippable/opt: Lv8SPuLeTwSY7maXJJtzUQ - repackage-signing-l10n-sv-SE-win64-shippable/opt: YglJmUycRQKCnVc-OU-w4w - repackage-signing-l10n-szl-win32-shippable/opt: NZufPnahQHym0Ehhi8kyJw - repackage-signing-l10n-szl-win64-aarch64-shippable/opt: EANM6XBcSWWRBiALEqw1_g - repackage-signing-l10n-szl-win64-shippable/opt: c7Q1yxFSSo2mgyFcq3VbJA - repackage-signing-l10n-ta-win32-shippable/opt: IPleCIUTT9ujYIVfeSG_ww - repackage-signing-l10n-ta-win64-aarch64-shippable/opt: RHYwiWdHQRKfCdXbDXJurA - repackage-signing-l10n-ta-win64-shippable/opt: Cr-wkQ3OQUq-JqE0EJjTRA - repackage-signing-l10n-te-win32-shippable/opt: bh7QAyRHQNODcnqR9aUhHQ - repackage-signing-l10n-te-win64-aarch64-shippable/opt: I-jHd2oPQdCduVZv9Aq2xA - repackage-signing-l10n-te-win64-shippable/opt: Xg6Li3_zSCWqZrkHFl-exg - repackage-signing-l10n-tg-win32-shippable/opt: Lz_1MZxgTC-O1-VCUYz5OA - repackage-signing-l10n-tg-win64-aarch64-shippable/opt: DpuMti6sTJagOL13i8_KkA - repackage-signing-l10n-tg-win64-shippable/opt: KNlzepVUQW6uuZ71d-IR1A - repackage-signing-l10n-th-win32-shippable/opt: Fy6NUWsTSvuICOG7BzlY4g - repackage-signing-l10n-th-win64-aarch64-shippable/opt: NEXIhwhgT-2ySRUbzCpPgw - repackage-signing-l10n-th-win64-shippable/opt: AP07qM3ZTzuwgysHdb6l4A - repackage-signing-l10n-tl-win32-shippable/opt: UO96Zk_lQbO2p868ltgjng - repackage-signing-l10n-tl-win64-aarch64-shippable/opt: KW_gNegDSq-jkD_d9MNzmQ - repackage-signing-l10n-tl-win64-shippable/opt: eJW32KOcSu68UWXmjVmEuQ - repackage-signing-l10n-tr-win32-shippable/opt: YZl0YQvCRD6ib6MKSXW3mg - repackage-signing-l10n-tr-win64-aarch64-shippable/opt: T2j2PEr5TOCkxz8_XBcsxA - repackage-signing-l10n-tr-win64-shippable/opt: FXwOMmH7RqCnwK_Yh3tt6g - repackage-signing-l10n-trs-win32-shippable/opt: XE6dxcaZTjmTKpILqiCj8g - repackage-signing-l10n-trs-win64-aarch64-shippable/opt: SOm2SEERSf2BFGpw6rI5Pg - repackage-signing-l10n-trs-win64-shippable/opt: H02lsHyyTMeMQOJNVo4kZw - repackage-signing-l10n-uk-win32-shippable/opt: KSevlppARn6O0kVKk9b7Fw - repackage-signing-l10n-uk-win64-aarch64-shippable/opt: fJphszAjQAaO7wWXSM9t5g - repackage-signing-l10n-uk-win64-shippable/opt: BTGLfOwNTBejVXcvPmjIeg - repackage-signing-l10n-ur-win32-shippable/opt: RlsFneTETvyCt0qnXlAr4Q - repackage-signing-l10n-ur-win64-aarch64-shippable/opt: Lz9A6bqpTGmj7QDczPVyAg - repackage-signing-l10n-ur-win64-shippable/opt: Fi9E8FyDQdqRjGq_NmT_tw - repackage-signing-l10n-uz-win32-shippable/opt: Rno2F5HQS_-naki8zrFHyQ - repackage-signing-l10n-uz-win64-aarch64-shippable/opt: OTHOioIZROCGSMEtlzovpQ - repackage-signing-l10n-uz-win64-shippable/opt: BnoDVrlcS1a6ebw_VN3vqA - repackage-signing-l10n-vi-win32-shippable/opt: EBsvwKn4QmyrDTlnhHsl2g - repackage-signing-l10n-vi-win64-aarch64-shippable/opt: X46M8n-NTu6GxSfWfm7R4g - repackage-signing-l10n-vi-win64-shippable/opt: DSfhTMKOR9i86N72jVwTbg - repackage-signing-l10n-xh-win32-shippable/opt: fN5bOVsCSuu6Ti5Y_7_Qdw - repackage-signing-l10n-xh-win64-aarch64-shippable/opt: LVwd_eNeRIW4GtaHTmIIQw - repackage-signing-l10n-xh-win64-shippable/opt: WQyzW-dURuKnLhLVoyydXg - repackage-signing-l10n-zh-CN-win32-shippable/opt: Mziuk5PSTKGFqIqBHX5qaQ - repackage-signing-l10n-zh-CN-win64-aarch64-shippable/opt: UYad6jvoT7enO8Ske2aPkA - repackage-signing-l10n-zh-CN-win64-shippable/opt: aJjWzhsSTXOEvh2FDxKGcg - repackage-signing-l10n-zh-TW-win32-shippable/opt: baRuY9j9Qm26O0ZEvAro7Q - repackage-signing-l10n-zh-TW-win64-aarch64-shippable/opt: V3Mz0budTSGWZEh3fDbM-A - repackage-signing-l10n-zh-TW-win64-shippable/opt: WUzPTQ0JQ-CzyqSN3j2QKw - repackage-signing-msi-ach-win32-shippable/opt: XCT75zoMQm2UV5jwJvMjsw - repackage-signing-msi-ach-win64-shippable/opt: eyMVU2VeTkqTRNxQ59BEGg - repackage-signing-msi-af-win32-shippable/opt: UMQTCojiRZiu_h2A0LjnQw - repackage-signing-msi-af-win64-shippable/opt: JeZ6hf-yR9i6XCPCt9ppEw - repackage-signing-msi-an-win32-shippable/opt: SzWqYBbjQcau7IrJfARfgQ - repackage-signing-msi-an-win64-shippable/opt: MpHdCuneQ--lfGP6mUdJ5g - repackage-signing-msi-ar-win32-shippable/opt: PHXsV8V-SCC5Fv_DK0my9w - repackage-signing-msi-ar-win64-shippable/opt: c-C4KSZwRqOJpZ53JzFB3Q - repackage-signing-msi-ast-win32-shippable/opt: EN14hdpzRsK2rMyfXrmRHQ - repackage-signing-msi-ast-win64-shippable/opt: XoUOYuwoS0-V-iFUinhbtw - repackage-signing-msi-az-win32-shippable/opt: Zse5f96aR7GdbqOpGHDp-A - repackage-signing-msi-az-win64-shippable/opt: QRqF0GAeTSixDQD89cC_0g - repackage-signing-msi-be-win32-shippable/opt: SWTbzUyfTNKjXfVS5YhRqA - repackage-signing-msi-be-win64-shippable/opt: C_OKyhLxQlWGhfEMQadfcA - repackage-signing-msi-bg-win32-shippable/opt: JFFJwfy0R8CPNVySYlMzUw - repackage-signing-msi-bg-win64-shippable/opt: Q9CN8W6lQeawbrZNJ2zZsQ - repackage-signing-msi-bn-win32-shippable/opt: a710xhpDQSCqZn6y_LvC2w - repackage-signing-msi-bn-win64-shippable/opt: c-zW5vJ3TmK8rVRpIyLbjg - repackage-signing-msi-br-win32-shippable/opt: fot79iFMQxa013aienLT0Q - repackage-signing-msi-br-win64-shippable/opt: ZOKqtvAoQy2DJaNAsr7s3g - repackage-signing-msi-bs-win32-shippable/opt: HyfOwXDbQ9W6LzPQWepp1g - repackage-signing-msi-bs-win64-shippable/opt: bjtO2ighT8-g23jTjGde6w - repackage-signing-msi-ca-valencia-win32-shippable/opt: KZykuIWmRWeZ3udqL5F2Ug - repackage-signing-msi-ca-valencia-win64-shippable/opt: QkeQCP_nSj-Ua4A1VXxAiw - repackage-signing-msi-ca-win32-shippable/opt: ERkK1c_YQv2YPqcZATxjGg - repackage-signing-msi-ca-win64-shippable/opt: Xq3Sm-DfSkqof4CRpip3nA - repackage-signing-msi-cak-win32-shippable/opt: DExPdcMWSsmtDKDo5tWP5A - repackage-signing-msi-cak-win64-shippable/opt: J5ydRESqQ6KYVJxY49ibVg - repackage-signing-msi-cs-win32-shippable/opt: QutUjR3bR9S3QLItWy1UDQ - repackage-signing-msi-cs-win64-shippable/opt: UNnz-sZiTlavadnNJ_ik7g - repackage-signing-msi-cy-win32-shippable/opt: BL9xfsC2TPSSL6UGZjOOyA - repackage-signing-msi-cy-win64-shippable/opt: YpdR4hZDTAu5CTuzARu7HQ - repackage-signing-msi-da-win32-shippable/opt: OzLDE3N6RJiSVsmfKy1_9g - repackage-signing-msi-da-win64-shippable/opt: SLyWQz_TQsqhXhvuBu5XOg - repackage-signing-msi-de-win32-shippable/opt: GMdo3pzVQnKCUXnHNQpLeA - repackage-signing-msi-de-win64-shippable/opt: dsnKGqNSRmKSO7_9dENnEw - repackage-signing-msi-dsb-win32-shippable/opt: ZmP8RwOrQZu1Xle8EdWZAg - repackage-signing-msi-dsb-win64-shippable/opt: KFngDgmSRk-rVZ_h1xaGCA - repackage-signing-msi-el-win32-shippable/opt: Nvn3Xh0vS2iXjWmuvmzeEQ - repackage-signing-msi-el-win64-shippable/opt: fUVsJAZjRmeI8cqzcuCX5g - repackage-signing-msi-en-CA-win32-shippable/opt: A94UY5RgQr64ERMayvqjAQ - repackage-signing-msi-en-CA-win64-shippable/opt: JVwjtlM8QZeH60Efxj_Sug - repackage-signing-msi-en-GB-win32-shippable/opt: V5zd-oDnQlOtKyfFkSoISA - repackage-signing-msi-en-GB-win64-shippable/opt: KO1u0mR4SAiVwsGarBD59g - repackage-signing-msi-eo-win32-shippable/opt: AY_ut36xRf69uew7wyVwCg - repackage-signing-msi-eo-win64-shippable/opt: PbvBfcACQM-FuEp6alU1Lw - repackage-signing-msi-es-AR-win32-shippable/opt: A3LjAYL0Q02uhTp0BCUZPw - repackage-signing-msi-es-AR-win64-shippable/opt: O8yo2kUJTMmWauWepCpHbQ - repackage-signing-msi-es-CL-win32-shippable/opt: V26n3RW5TgerMOFbsG4csw - repackage-signing-msi-es-CL-win64-shippable/opt: WozejzVrROelHFHWtLAuNA - repackage-signing-msi-es-ES-win32-shippable/opt: EZ_iQaXeQTi1xVRuE-TUvg - repackage-signing-msi-es-ES-win64-shippable/opt: cf0f1qC3RJe4XkjHEZc7Mg - repackage-signing-msi-es-MX-win32-shippable/opt: ZLH3zQMsQUivKcdBZlwShA - repackage-signing-msi-es-MX-win64-shippable/opt: eCKIrTUaRXqswHxGhGQOEg - repackage-signing-msi-et-win32-shippable/opt: Nct-nQAaT_KWG2wmpzZZng - repackage-signing-msi-et-win64-shippable/opt: XY5lGTVST02lLA6chCGc0Q - repackage-signing-msi-eu-win32-shippable/opt: fkEXRoW0SpiTqWIUsSLvuA - repackage-signing-msi-eu-win64-shippable/opt: ZbjUlDRmRZ-p868lyW_G5A - repackage-signing-msi-fa-win32-shippable/opt: ZWdR7IpOSLCqKW9y4YAeww - repackage-signing-msi-fa-win64-shippable/opt: Rme5YFn3Rgy3wZ0L3IRmoQ - repackage-signing-msi-ff-win32-shippable/opt: F62WDB92Swu5U_zqkbP44A - repackage-signing-msi-ff-win64-shippable/opt: d-0BzojeSGysUBLpqCmJ8A - repackage-signing-msi-fi-win32-shippable/opt: Ji-LzuaKTJGBGSNCVuDjHg - repackage-signing-msi-fi-win64-shippable/opt: d8kwy_bmQL-VKqljB6h1yw - repackage-signing-msi-fr-win32-shippable/opt: Rn3fvPV7TnirJ7MY2nuvhA - repackage-signing-msi-fr-win64-shippable/opt: aV3GoNIIQoax4SWR9lS5tw - repackage-signing-msi-fur-win32-shippable/opt: Ik8xJCnlT5-zZrxLfZUYxQ - repackage-signing-msi-fur-win64-shippable/opt: RcBajb51Qo6asq_-ZS8lDA - repackage-signing-msi-fy-NL-win32-shippable/opt: Dh693RLJT4u9PhUosjf3Kw - repackage-signing-msi-fy-NL-win64-shippable/opt: DYrGSaoTSuqjBpbqb3ntIg - repackage-signing-msi-ga-IE-win32-shippable/opt: WXDY9IOYRj6_0VN2aG4Opw - repackage-signing-msi-ga-IE-win64-shippable/opt: DAdi2EuGRnaodsiA2kKKRw - repackage-signing-msi-gd-win32-shippable/opt: W-75RrmwSsaf7RgaiheptQ - repackage-signing-msi-gd-win64-shippable/opt: A0QMsTs7TzmiUUV8lDGHGA - repackage-signing-msi-gl-win32-shippable/opt: PFKPoF2aT4K0O0zDu5g6Iw - repackage-signing-msi-gl-win64-shippable/opt: dESdEhHDR-OmpZdOIBcclA - repackage-signing-msi-gn-win32-shippable/opt: ajSFx2nMQf68_gSZbGxwLg - repackage-signing-msi-gn-win64-shippable/opt: KY6GvaHRRxu84LFZZSagKQ - repackage-signing-msi-gu-IN-win32-shippable/opt: EYRk5zz4Q-ecdVWnWzyvuQ - repackage-signing-msi-gu-IN-win64-shippable/opt: W4iqV1CiRqWdI_Q2_LchPQ - repackage-signing-msi-he-win32-shippable/opt: Q3H5MCuwQmWEg547oN2vEA - repackage-signing-msi-he-win64-shippable/opt: OVMlGI5MScqG-YiwI_lhrA - repackage-signing-msi-hi-IN-win32-shippable/opt: d54jHq_WTe2HxigjKJOp3A - repackage-signing-msi-hi-IN-win64-shippable/opt: eSjiaGLMQ5Ks5rNIU-E70Q - repackage-signing-msi-hr-win32-shippable/opt: AKMIivGvTSSqsXZdPyGYiA - repackage-signing-msi-hr-win64-shippable/opt: OT9I9UODRq-nXR73rVvveQ - repackage-signing-msi-hsb-win32-shippable/opt: JiM17PWUSGGIUz85UDZ0eA - repackage-signing-msi-hsb-win64-shippable/opt: c-hsewW_RoKZxKy6HC_frQ - repackage-signing-msi-hu-win32-shippable/opt: EzDrCQUMRmqyGLY4uzm5Bw - repackage-signing-msi-hu-win64-shippable/opt: HjausjMlTbK58g1_zivTpw - repackage-signing-msi-hy-AM-win32-shippable/opt: BF22XfY3Q9-swjEXUO8i0Q - repackage-signing-msi-hy-AM-win64-shippable/opt: L6dD9vnPSIqsW0d87gUF1w - repackage-signing-msi-ia-win32-shippable/opt: CUT-oD93RHOPq_OjZZAnQQ - repackage-signing-msi-ia-win64-shippable/opt: aDH-hYTrRseedaYhosCSCQ - repackage-signing-msi-id-win32-shippable/opt: AP3e5qtgQ1a71EdKU02G4w - repackage-signing-msi-id-win64-shippable/opt: RtOStpPOTlCm7sRZece35Q - repackage-signing-msi-is-win32-shippable/opt: A6wvpZfkR2-QUIIQsbjsDA - repackage-signing-msi-is-win64-shippable/opt: X4WYUUceSoWxlX-dJj_GQQ - repackage-signing-msi-it-win32-shippable/opt: HDHRq_ASSDqD00YvpkJvRA - repackage-signing-msi-it-win64-shippable/opt: H27lgXp8QrSxsCMfksBcoA - repackage-signing-msi-ja-win32-shippable/opt: fHtyYtVoRdKNghbvZjrI1Q - repackage-signing-msi-ja-win64-shippable/opt: e9VsxJ5sRpqplgi_vBXFGw - repackage-signing-msi-ka-win32-shippable/opt: DhbrbD1cQyqPmhUSAe7-mg - repackage-signing-msi-ka-win64-shippable/opt: Cl97QulSRJuxEKRLQkmjVw - repackage-signing-msi-kab-win32-shippable/opt: BhPHdpowQAeS4tyZlHeg9w - repackage-signing-msi-kab-win64-shippable/opt: DAy24wI2SC6ruSQJ_wSVzQ - repackage-signing-msi-kk-win32-shippable/opt: afXg3IF3T8edrDLS0BHMLA - repackage-signing-msi-kk-win64-shippable/opt: b32sOavoTjyn3AOLsjDa7g - repackage-signing-msi-km-win32-shippable/opt: GcjvxOoZQCqbSDDzTrvUrA - repackage-signing-msi-km-win64-shippable/opt: GskbCjetSyqC8pbnpiyidw - repackage-signing-msi-kn-win32-shippable/opt: adEslGnpQ0-sYBuI9PagwQ - repackage-signing-msi-kn-win64-shippable/opt: MJ_UUXhATbuvbjs1azjk8w - repackage-signing-msi-ko-win32-shippable/opt: YzmLdEdaQX6TTAZf15YlRg - repackage-signing-msi-ko-win64-shippable/opt: COfywny3Q_2zXMwVls32YQ - repackage-signing-msi-lij-win32-shippable/opt: adJ6heI4Q_6mQz61GdXZAQ - repackage-signing-msi-lij-win64-shippable/opt: RfIUutfZSsmewGK_4pRPQA - repackage-signing-msi-lt-win32-shippable/opt: bfhPKqhhRSmjHXkv63zeyA - repackage-signing-msi-lt-win64-shippable/opt: aaGEAh90SkqWSFxMBa1hqw - repackage-signing-msi-lv-win32-shippable/opt: OIXZkzrEQtmN6iL2OPf1-A - repackage-signing-msi-lv-win64-shippable/opt: GnKaD7ELSC6qyeUSBUTdbA - repackage-signing-msi-mk-win32-shippable/opt: DaxE0HnTR1WA2U85ighvcA - repackage-signing-msi-mk-win64-shippable/opt: Ksl-kP1qSICFUHsrKiAAKg - repackage-signing-msi-mr-win32-shippable/opt: RBEfyfhbRPm6x_pvvUV0zw - repackage-signing-msi-mr-win64-shippable/opt: CsKHA4GCRZiPx_c7_niwlg - repackage-signing-msi-ms-win32-shippable/opt: MArThvxxQfuJHmUXc8VZ6w - repackage-signing-msi-ms-win64-shippable/opt: GQvD94FeTySfqVY3cE4gOg - repackage-signing-msi-my-win32-shippable/opt: Bw7AWNg9S2aA97f08ZQd-w - repackage-signing-msi-my-win64-shippable/opt: ZvPFwQpxRPeEvrWbqTusKw - repackage-signing-msi-nb-NO-win32-shippable/opt: Yhe-SdTBTzmKEbZRDlGWMw - repackage-signing-msi-nb-NO-win64-shippable/opt: VXJP7rblTxuydWq-Yg3JJw - repackage-signing-msi-ne-NP-win32-shippable/opt: Q2jmCWrHRiir6RJj1X1mSw - repackage-signing-msi-ne-NP-win64-shippable/opt: X1CECRE5SRO6JZb-R4-IzA - repackage-signing-msi-nl-win32-shippable/opt: BaWINvrwRUWiAiH7_G5klw - repackage-signing-msi-nl-win64-shippable/opt: KfB-CfONQNiGA_2L_R5rJg - repackage-signing-msi-nn-NO-win32-shippable/opt: CbrmwrCmRX6DbA1u9w82ag - repackage-signing-msi-nn-NO-win64-shippable/opt: J_JAdvTkQVG8UJNahJAW1A - repackage-signing-msi-oc-win32-shippable/opt: IN5-OE7xRKOhN1qL6OgUug - repackage-signing-msi-oc-win64-shippable/opt: B5xgvFepQVOp00GW_LAeEQ - repackage-signing-msi-pa-IN-win32-shippable/opt: BaTlDCA2QMOfihUp-O6fqg - repackage-signing-msi-pa-IN-win64-shippable/opt: B1xOaVSgSr-qdCnCybseMA - repackage-signing-msi-pl-win32-shippable/opt: Wbom5hzKReG1i-5lle9A5A - repackage-signing-msi-pl-win64-shippable/opt: TeZ5pLbUTB2l5NzXbcyNHw - repackage-signing-msi-pt-BR-win32-shippable/opt: J2Z97fHhSwKsL9dbFKfCaA - repackage-signing-msi-pt-BR-win64-shippable/opt: UeCtRMcDSAyiYF7U_nYjmA - repackage-signing-msi-pt-PT-win32-shippable/opt: bjCvDBkXQ-ic0NIFJFHi5w - repackage-signing-msi-pt-PT-win64-shippable/opt: IHf6yZb8SNiHf1uk_ojwkQ - repackage-signing-msi-rm-win32-shippable/opt: Nyuj09U8T3m4BiHeyK91VQ - repackage-signing-msi-rm-win64-shippable/opt: CYb7liI0RemjGlszaSp3NA - repackage-signing-msi-ro-win32-shippable/opt: KoYiKq7kTd-l2tBfS0qUrg - repackage-signing-msi-ro-win64-shippable/opt: f4-N0SWfTLm9fulr47kV-Q - repackage-signing-msi-ru-win32-shippable/opt: GycUuXBATVuTlDmd_S9OLg - repackage-signing-msi-ru-win64-shippable/opt: O2alyhRuQdO8eyHUKC6IoA - repackage-signing-msi-sat-win32-shippable/opt: c1ANVSMPRxi5elB_wEvNQg - repackage-signing-msi-sat-win64-shippable/opt: COpiLwdQSs-3jpVJfwttAg - repackage-signing-msi-sc-win32-shippable/opt: dGXjbkM_RnSvkX2HyWVyOA - repackage-signing-msi-sc-win64-shippable/opt: Vtj9FpQTT_KbiLavQO0laQ - repackage-signing-msi-sco-win32-shippable/opt: Z0NXBCkfSteeiYfhlVGMxA - repackage-signing-msi-sco-win64-shippable/opt: G9P-VU1oS66vS9vFdHmDrw - repackage-signing-msi-si-win32-shippable/opt: DFXFROinRjGJxSYn-N7YIA - repackage-signing-msi-si-win64-shippable/opt: bu1SkrzGRG-ym6edkYDXHg - repackage-signing-msi-sk-win32-shippable/opt: IJlgsXlrTUyFQ3yMJ4bDKw - repackage-signing-msi-sk-win64-shippable/opt: VT3hP_FkQVGWIWVkHkr0DA - repackage-signing-msi-skr-win32-shippable/opt: TOX7EhXuSCyJ0RLkcnXmdA - repackage-signing-msi-skr-win64-shippable/opt: Ic5aYP6WTwmFl3u3MT19-w - repackage-signing-msi-sl-win32-shippable/opt: P0ZYpW99SL2dbO56xTzokQ - repackage-signing-msi-sl-win64-shippable/opt: PnvkQeehRAqjkeM0MVOlOg - repackage-signing-msi-son-win32-shippable/opt: C_CxMfZ_TdCNycdH7rTfaQ - repackage-signing-msi-son-win64-shippable/opt: HdI4FP-FThiYTjJWfklsYg - repackage-signing-msi-sq-win32-shippable/opt: bCjGpJJLRr-HzCEOxy1Ftw - repackage-signing-msi-sq-win64-shippable/opt: fKPxZlT4QoefOS0FDodtRA - repackage-signing-msi-sr-win32-shippable/opt: et3oCGMEQgKESPY5ZmbePg - repackage-signing-msi-sr-win64-shippable/opt: eGsG8U-OTDySHzNMGoC8Dg - repackage-signing-msi-sv-SE-win32-shippable/opt: EyKx9ETaQOO5mJnoXmpcPg - repackage-signing-msi-sv-SE-win64-shippable/opt: BK38NttaQjOoxp673GtoaA - repackage-signing-msi-szl-win32-shippable/opt: FZjew__PQVCFm8xCT063lQ - repackage-signing-msi-szl-win64-shippable/opt: QYXnlz0HQlSsm-7ciSIviw - repackage-signing-msi-ta-win32-shippable/opt: DSNhnSqyQCu1KX2fbtAdbg - repackage-signing-msi-ta-win64-shippable/opt: fRItBdHNQEijvVuII4dcLQ - repackage-signing-msi-te-win32-shippable/opt: WcW4AdBeSY-bwJ_s7UvRbA - repackage-signing-msi-te-win64-shippable/opt: K11tXmaYRRijO0aus7n-XQ - repackage-signing-msi-tg-win32-shippable/opt: D4vHOqh0R9acNTSaYUliow - repackage-signing-msi-tg-win64-shippable/opt: DIvPouwcRdytOd0zt-hoDQ - repackage-signing-msi-th-win32-shippable/opt: ExkYoRHnRnuAV6fr4Vc_tg - repackage-signing-msi-th-win64-shippable/opt: ZIbOA7NyTjO2DIKPvj_WRA - repackage-signing-msi-tl-win32-shippable/opt: TSQwGh_gSsSh1c_UX7GyLQ - repackage-signing-msi-tl-win64-shippable/opt: S4hcM5jkTUuSh7f-csut0w - repackage-signing-msi-tr-win32-shippable/opt: VJ4ochGzRx28Sl4S5O1Ssg - repackage-signing-msi-tr-win64-shippable/opt: DcuQtVEcTq-DzBeCrNJpCw - repackage-signing-msi-trs-win32-shippable/opt: IXi8G2CHR4SV8hNlWAYoGw - repackage-signing-msi-trs-win64-shippable/opt: dDjG1NvrS7S8ydJO80k2HQ - repackage-signing-msi-uk-win32-shippable/opt: dsfGQNfsQfyWOPkPeAEXpQ - repackage-signing-msi-uk-win64-shippable/opt: fgYI6V07Tvik_rktrM5Tww - repackage-signing-msi-ur-win32-shippable/opt: EtHe-UOFSCSWpXJEY0d_Zg - repackage-signing-msi-ur-win64-shippable/opt: JJ5IjHzPTmetSRuFq917Mw - repackage-signing-msi-uz-win32-shippable/opt: dytakpWzRSSvvoJBNxDVDg - repackage-signing-msi-uz-win64-shippable/opt: RLbLInNDRbOqvjuDq00Ptg - repackage-signing-msi-vi-win32-shippable/opt: HzsChJmJR0SbZsEkWHhKNg - repackage-signing-msi-vi-win64-shippable/opt: LJtZABy4SQ2ptXH4XVdwww - repackage-signing-msi-win32-shippable/opt: c8KzN4ooTPO24Vq51DGtvQ - repackage-signing-msi-win64-shippable/opt: KqePlKTtSsSlFAghV_XzEA - repackage-signing-msi-xh-win32-shippable/opt: LUd-gqqEQCCMj0Xz6UyYtg - repackage-signing-msi-xh-win64-shippable/opt: fI_MuCqHQEawgJn-il3Opw - repackage-signing-msi-zh-CN-win32-shippable/opt: Pu4jmp58Tg-XnqeS1RRhag - repackage-signing-msi-zh-CN-win64-shippable/opt: IuHB6n5KTmmxF-jI_dSBvg - repackage-signing-msi-zh-TW-win32-shippable/opt: eeLc7ShJSMaJ09d0NnLb9Q - repackage-signing-msi-zh-TW-win64-shippable/opt: U8KmnyTNRFemeqQ2Eknppg - repackage-signing-msix-win64/debug: EO4h1p-5Te2k8NIENajDrw - repackage-signing-shippable-l10n-msix-win32-shippable/opt: UVrDYFoVR1q7NvvYKa6Ssw - repackage-signing-shippable-l10n-msix-win64-aarch64-shippable/opt: eheqaLXdSVKQejraiWt1uA - repackage-signing-shippable-l10n-msix-win64-shippable/opt: EcepTky1R3KiI1jlmyqKZA - repackage-signing-win32-shippable/opt: E5m4wah6T5ysxyYuW0w9Mw - repackage-signing-win64-aarch64-shippable/opt: RVIEKi1uQ_qd6r7c4TC9kA - repackage-signing-win64-shippable/opt: Wh180JmoTeOaNR2wKBUrJA - repackage-win32-shippable/opt: eWK7woTwSt-Ky_wRfCH0Lw - repackage-win64-aarch64-shippable/opt: exVfkjHVRuGoq3D0iOI6hA - repackage-win64-shippable/opt: DoLMVNbORjSKvOmO3DBTJA - shippable-l10n-linux-shippable-1/opt: AyeVxzteRtSH62uuD6gWDQ - shippable-l10n-linux-shippable-10/opt: NeIkdCtBRWyJJ3qQo1owqA - shippable-l10n-linux-shippable-11/opt: UKMyRIuJRRyv1t8WAV9mSg - shippable-l10n-linux-shippable-12/opt: KHtxxKy_QeS0iDxpMN3owQ - shippable-l10n-linux-shippable-13/opt: HlLjb0sdTDi4gGyG1wfiOg - shippable-l10n-linux-shippable-14/opt: XViWmdcBQuyyA_EYwZZA5g - shippable-l10n-linux-shippable-15/opt: co_eTxL7QbC58f_Ch3S5Jw - shippable-l10n-linux-shippable-16/opt: Mco2foawSEiuiIX6FscMhQ - shippable-l10n-linux-shippable-17/opt: Klgk-CxpTY6jMqxuZu_lmA - shippable-l10n-linux-shippable-18/opt: fVlkUioeQEK3fXcd9atLNw - shippable-l10n-linux-shippable-19/opt: d7ASGV1xRoKAPGuzyQo1MQ - shippable-l10n-linux-shippable-2/opt: CZcfh62USsuGA2-icy9IYA - shippable-l10n-linux-shippable-20/opt: VMrMcsGTSgaj6m-smXtcKA - shippable-l10n-linux-shippable-21/opt: WkE7uR6ATse00fdyRlZ1ew - shippable-l10n-linux-shippable-3/opt: fydjPUn4ThCTXqQzYneozg - shippable-l10n-linux-shippable-4/opt: X4wXbtTdRAyNyFZcYZmgvA - shippable-l10n-linux-shippable-5/opt: e_yAhkf7TQqAScQZyStSPA - shippable-l10n-linux-shippable-6/opt: eJcf7eBQTiyP9ywW49rf7A - shippable-l10n-linux-shippable-7/opt: XQCMSllWRVK3PlG7GS6EXg - shippable-l10n-linux-shippable-8/opt: WZlZeJZ-Q8-E1pZGiLHA3A - shippable-l10n-linux-shippable-9/opt: dYJD-hTgS4WoBJF-KWa-mA - shippable-l10n-linux64-aarch64-shippable-1/opt: VzMZI5x2T_mDnXK0jCjt7g - shippable-l10n-linux64-aarch64-shippable-10/opt: U90rwqs4T0yrlwviognhXw - shippable-l10n-linux64-aarch64-shippable-11/opt: G0bNPfFdTqaeopvATkuGGg - shippable-l10n-linux64-aarch64-shippable-12/opt: c_cIZSjjSJa8_y6mo_0mMQ - shippable-l10n-linux64-aarch64-shippable-13/opt: U9HAGv5jQv2plQdvTqcxmA - shippable-l10n-linux64-aarch64-shippable-14/opt: KKL2sKzFRPmgHI_llQTTrg - shippable-l10n-linux64-aarch64-shippable-15/opt: Lj0h38kvSRqLqk-M44wAbg - shippable-l10n-linux64-aarch64-shippable-16/opt: UXJOOq_fSdag2YpcNXF0tQ - shippable-l10n-linux64-aarch64-shippable-17/opt: JV3A8xKgQiWhyn9sh8tLVg - shippable-l10n-linux64-aarch64-shippable-18/opt: IPFmZHyRRcKGe1SngRGw3g - shippable-l10n-linux64-aarch64-shippable-19/opt: YfwgFAmuT-ypbOnKmzMNdg - shippable-l10n-linux64-aarch64-shippable-2/opt: deKmFtUtSrivjWN2kxV9mQ - shippable-l10n-linux64-aarch64-shippable-20/opt: YiXzdNKCTU-jWqo8lwZRUA - shippable-l10n-linux64-aarch64-shippable-21/opt: EruB3Z9lQmulkvX4vUGRyw - shippable-l10n-linux64-aarch64-shippable-3/opt: SvOp6xJyT4aTcOhkvhzfUg - shippable-l10n-linux64-aarch64-shippable-4/opt: LktWFFE3RMuc4pXLcapOEQ - shippable-l10n-linux64-aarch64-shippable-5/opt: AoSbS8-aQUGHdtrK3lIOkg - shippable-l10n-linux64-aarch64-shippable-6/opt: beKyd_V3RKem5QS6JUltCg - shippable-l10n-linux64-aarch64-shippable-7/opt: d_eazi64RRqPNLkCTclgAQ - shippable-l10n-linux64-aarch64-shippable-8/opt: Geh51UTjQZuU_YfjBCgIFw - shippable-l10n-linux64-aarch64-shippable-9/opt: YrWrG6bHS_iz3Ukr7fFe5w - shippable-l10n-linux64-shippable-1/opt: Cue1NgiwStiJHKmST3V0Xw - shippable-l10n-linux64-shippable-10/opt: DIrbnM1US1-BIk6xiZw0aA - shippable-l10n-linux64-shippable-11/opt: NJHeFSZWQhKuXV8pf9L-wA - shippable-l10n-linux64-shippable-12/opt: Fv7-Wa0sQCm3c0EewLfJmA - shippable-l10n-linux64-shippable-13/opt: Ol_3VUWhRP2WdLAwzLy4Mg - shippable-l10n-linux64-shippable-14/opt: LXYB9HFKT2q1HTUJ8wzwmA - shippable-l10n-linux64-shippable-15/opt: SdbFQ0AhSLOkfC3fOQhShw - shippable-l10n-linux64-shippable-16/opt: E4RCAIE-S_O7ARg5MbC9VA - shippable-l10n-linux64-shippable-17/opt: aALm7W6uR7aH742NAVCW2g - shippable-l10n-linux64-shippable-18/opt: GcJXVoBfRb2g_GhCJkQaCg - shippable-l10n-linux64-shippable-19/opt: Pds_gp0PQ0Kn5vF8aDt8oQ - shippable-l10n-linux64-shippable-2/opt: coFTjIDZQLGM9Y9Rh4hZvQ - shippable-l10n-linux64-shippable-20/opt: L4dELttERAGI9Fx09XXpmQ - shippable-l10n-linux64-shippable-21/opt: dGqYOOSyTQ-cF_aHZsGB7Q - shippable-l10n-linux64-shippable-3/opt: MmPeW9KyR0u9PG4obtjZPA - shippable-l10n-linux64-shippable-4/opt: CO4C_NCDRIyrUbHH7GuSkw - shippable-l10n-linux64-shippable-5/opt: NEPrNi3KQtCKd9nDdP-C7Q - shippable-l10n-linux64-shippable-6/opt: VNeeBXSIRheJsyrwt1jFUQ - shippable-l10n-linux64-shippable-7/opt: SZtt0USJT8qj8oxF6HRaQQ - shippable-l10n-linux64-shippable-8/opt: I4cgSNVpTM6xTDn6CwJHzQ - shippable-l10n-linux64-shippable-9/opt: VVc5fyp7QMeqkrv32pFZ-Q - shippable-l10n-mac-notarization-macosx64-shippable-1/opt: MiffDCHtSYK8-4qjg-AOnw - shippable-l10n-mac-notarization-macosx64-shippable-10/opt: Zk8UC6AWT4-H-_q0R5vyHg - shippable-l10n-mac-notarization-macosx64-shippable-11/opt: C6SyeVJlQ9u0tkFk73CUVQ - shippable-l10n-mac-notarization-macosx64-shippable-12/opt: RQbNTud2SWKOIjyWbglaEA - shippable-l10n-mac-notarization-macosx64-shippable-13/opt: ZY0D7mKESPavhZKnEKW6Dw - shippable-l10n-mac-notarization-macosx64-shippable-14/opt: XxeFbfidQz2dF51eHVMocQ - shippable-l10n-mac-notarization-macosx64-shippable-15/opt: ZnCtfPxZTN-AJnMNZ7Vf0w - shippable-l10n-mac-notarization-macosx64-shippable-16/opt: KsU0kjJ-TZ-Sml75MKqINg - shippable-l10n-mac-notarization-macosx64-shippable-17/opt: aOjC5_QGSJKgMuDq2ocF4A - shippable-l10n-mac-notarization-macosx64-shippable-18/opt: UaG66d94Q0qAEA_WU4R4Kw - shippable-l10n-mac-notarization-macosx64-shippable-19/opt: PgZcoqc3ROmbAOE70wzQxA - shippable-l10n-mac-notarization-macosx64-shippable-2/opt: WH9cEs4MRm-UsfI21uhErw - shippable-l10n-mac-notarization-macosx64-shippable-20/opt: ZHZ9OPlXSau4jiHydb3SKw - shippable-l10n-mac-notarization-macosx64-shippable-21/opt: ICZOVDbDSre3Y01WboDQPw - shippable-l10n-mac-notarization-macosx64-shippable-3/opt: C4RIjcx9SPCaFABP0S_2bQ - shippable-l10n-mac-notarization-macosx64-shippable-4/opt: HeJ1GU9mQhOptjT6L7KH9g - shippable-l10n-mac-notarization-macosx64-shippable-5/opt: QD1VxqEfTfauGLY019sIvQ - shippable-l10n-mac-notarization-macosx64-shippable-6/opt: cB2xmd5rRpWL2FZm_6563Q - shippable-l10n-mac-notarization-macosx64-shippable-7/opt: IOjwq0_aRquy3wt0K9WeYw - shippable-l10n-mac-notarization-macosx64-shippable-8/opt: TWQBdqwCQQ6tBLoXXmlcBA - shippable-l10n-mac-notarization-macosx64-shippable-9/opt: ATWtxnZEROy8K3uXkUJItg - shippable-l10n-mac-signing-macosx64-shippable-1/opt: YYi1XqZQSy6b7gwUw1wLyw - shippable-l10n-mac-signing-macosx64-shippable-10/opt: CZOXyaXSQhOoRLnbJtkcOQ - shippable-l10n-mac-signing-macosx64-shippable-11/opt: MfQDP__1T5i6Idh8sSTXCQ - shippable-l10n-mac-signing-macosx64-shippable-12/opt: NuVI-RFtQjaxltoJDZbSsg - shippable-l10n-mac-signing-macosx64-shippable-13/opt: AFc09C49Toig8LId0y1rMg - shippable-l10n-mac-signing-macosx64-shippable-14/opt: PP4p8-qHRq-Go4mUrwjzLw - shippable-l10n-mac-signing-macosx64-shippable-15/opt: YtpX7vl1QoqeMAo-1ys8Cw - shippable-l10n-mac-signing-macosx64-shippable-16/opt: TJeYf9eNSYiqdgL_b7eeIA - shippable-l10n-mac-signing-macosx64-shippable-17/opt: GSyel3vySyyQcraBrEKl4g - shippable-l10n-mac-signing-macosx64-shippable-18/opt: F5yPFdNWQBuTu6hnIUrK6g - shippable-l10n-mac-signing-macosx64-shippable-19/opt: D3_v6sobQYKMhyUbJCYqRA - shippable-l10n-mac-signing-macosx64-shippable-2/opt: Qm_jaqH8RuWD5ivKJnWx3Q - shippable-l10n-mac-signing-macosx64-shippable-20/opt: MMiC0xs1TYWkm4yj1wfy3A - shippable-l10n-mac-signing-macosx64-shippable-21/opt: DF73G4_jQf-WcO5RIwbdYw - shippable-l10n-mac-signing-macosx64-shippable-3/opt: f85QKV2ERS226LjzuKBZhw - shippable-l10n-mac-signing-macosx64-shippable-4/opt: Esz_DM9nRSqfqUqLx1E47A - shippable-l10n-mac-signing-macosx64-shippable-5/opt: cOFWvbxzRwKbu8vcREWf8g - shippable-l10n-mac-signing-macosx64-shippable-6/opt: S1JdRtqFSAqZ70pgXOpdQA - shippable-l10n-mac-signing-macosx64-shippable-7/opt: GI45pdRJSy28569HeK_88g - shippable-l10n-mac-signing-macosx64-shippable-8/opt: Bu0TMblzRmWakEs6ZwDJSg - shippable-l10n-mac-signing-macosx64-shippable-9/opt: BQjMaLeNQi-qeMqFvaw1gw - shippable-l10n-macosx64-shippable-1/opt: MZjB5tVaQymGt7ClIgfuSA - shippable-l10n-macosx64-shippable-10/opt: IqZUrWDwRYSHCc9LVaOqqw - shippable-l10n-macosx64-shippable-11/opt: U_Cvyq2ZSXqhxaBQDuXstg - shippable-l10n-macosx64-shippable-12/opt: GiXZ3uyWRWKEu0asiiJykQ - shippable-l10n-macosx64-shippable-13/opt: ZtVgW0wYSpe0YGPGhsGA2w - shippable-l10n-macosx64-shippable-14/opt: eyGgHxSaTMGXkBVtFlM-xw - shippable-l10n-macosx64-shippable-15/opt: fRQbtdrkT6GXPQrCRNiA8g - shippable-l10n-macosx64-shippable-16/opt: Mc8kTN7ZTTu7_TJg3-Ai6w - shippable-l10n-macosx64-shippable-17/opt: ZUG2o44wQb2cZrYBuWe7BA - shippable-l10n-macosx64-shippable-18/opt: MCB5DVt-Qj2TxKvgB5pEBA - shippable-l10n-macosx64-shippable-19/opt: X0Y8jVwMRlqIWkSY_gKRmg - shippable-l10n-macosx64-shippable-2/opt: bMrL_bUwTZS5rkVHW-VRIA - shippable-l10n-macosx64-shippable-20/opt: J4fgxVt9QPKbarCs7BMyLg - shippable-l10n-macosx64-shippable-21/opt: XE9eI67jTA6sBHaZy33yeg - shippable-l10n-macosx64-shippable-3/opt: YNTZe7DrRne5gowHL6DedQ - shippable-l10n-macosx64-shippable-4/opt: dJn-0baGQSm6Z6tzlbnZVQ - shippable-l10n-macosx64-shippable-5/opt: KIm9l2boSqqBYq8KKj5d5A - shippable-l10n-macosx64-shippable-6/opt: Lr38DBGPQDGKM4La-ZDgdg - shippable-l10n-macosx64-shippable-7/opt: CAboYXPERL6NQwf0ktCt5Q - shippable-l10n-macosx64-shippable-8/opt: cJTOqpnUSeKgk1SDn3i2Wg - shippable-l10n-macosx64-shippable-9/opt: FH_z3WYfQRmeE8CGB4s9Og - shippable-l10n-signing-linux-shippable-1/opt: DGgnHtAfTXKkfKNAhRSl8w - shippable-l10n-signing-linux-shippable-10/opt: PYgNCtnwTj2vKEpO8ha6uw - shippable-l10n-signing-linux-shippable-11/opt: GqQdu8u4QZSDWk_LBsdTYg - shippable-l10n-signing-linux-shippable-12/opt: IRV3V8ElQS6VQzyUhIqcXg - shippable-l10n-signing-linux-shippable-13/opt: GJ_LZJNjTCyvbeTbiY8zMw - shippable-l10n-signing-linux-shippable-14/opt: S-t9Rt1JRyekg8woqWL_vg - shippable-l10n-signing-linux-shippable-15/opt: OIUHKjvKQISuwcsEqfccFQ - shippable-l10n-signing-linux-shippable-16/opt: XuVZ_omnSxmKlmBbl14yjg - shippable-l10n-signing-linux-shippable-17/opt: b1WRyYK-TbG5P0AjqBuNfg - shippable-l10n-signing-linux-shippable-18/opt: N1uMcT7xTSixc02l0vZvvg - shippable-l10n-signing-linux-shippable-19/opt: AbFPbbL-RiSEkXwbzeadYg - shippable-l10n-signing-linux-shippable-2/opt: CJthz6_5QX-b0zQij3mQmA - shippable-l10n-signing-linux-shippable-20/opt: aPT15O7GRYu5vKmY_zXgOA - shippable-l10n-signing-linux-shippable-21/opt: RXfZTW7UQKS-em6Y3I63Tg - shippable-l10n-signing-linux-shippable-3/opt: TindvEBcR0ewqCaZ3PmJrw - shippable-l10n-signing-linux-shippable-4/opt: bJDzU_wwSUeL6HunPr7yKg - shippable-l10n-signing-linux-shippable-5/opt: YI8KECnTTOGwBpHHfy1UrQ - shippable-l10n-signing-linux-shippable-6/opt: Eqa9Cjt0Q1KQHPybWanrCg - shippable-l10n-signing-linux-shippable-7/opt: brXIEzNISWy-sK4L5W1shg - shippable-l10n-signing-linux-shippable-8/opt: ZeTU2ZxOR8uzMpVhlHhYbA - shippable-l10n-signing-linux-shippable-9/opt: K26cW-IsRAO7J-BfmgXUdg - shippable-l10n-signing-linux64-aarch64-shippable-1/opt: Sfjyc-6pTWayhJy0VkPfsA - shippable-l10n-signing-linux64-aarch64-shippable-10/opt: EgLH2GGoSs-LjHtsj9h6yw - shippable-l10n-signing-linux64-aarch64-shippable-11/opt: YNyGlcaaTU-O4GWbIaw1dA - shippable-l10n-signing-linux64-aarch64-shippable-12/opt: ZAuwPFS5Rc-EPto8KA6FLQ - shippable-l10n-signing-linux64-aarch64-shippable-13/opt: ROE1FWuARc-flQsCuvE9VQ - shippable-l10n-signing-linux64-aarch64-shippable-14/opt: KNMVJQTCRPCKZnchFCWqNw - shippable-l10n-signing-linux64-aarch64-shippable-15/opt: Hi9HGj6tQMeoB6DU7i5iyg - shippable-l10n-signing-linux64-aarch64-shippable-16/opt: EYXl2Xv_QhWkgkci621dkg - shippable-l10n-signing-linux64-aarch64-shippable-17/opt: HkL4V9-pQxu5mZorQvTVWA - shippable-l10n-signing-linux64-aarch64-shippable-18/opt: C0hs2xV6SWGxi2251PQ6QQ - shippable-l10n-signing-linux64-aarch64-shippable-19/opt: AqDTYx7ASPCjU-6Y0hRJrA - shippable-l10n-signing-linux64-aarch64-shippable-2/opt: SSlm4XZYTXisQ86HSXNaSg - shippable-l10n-signing-linux64-aarch64-shippable-20/opt: E4ORlxHWRSeqjwb5LzvZsQ - shippable-l10n-signing-linux64-aarch64-shippable-21/opt: buZbUodASz2fCWRrtyozlw - shippable-l10n-signing-linux64-aarch64-shippable-3/opt: EI63A6f0Q3mIKHUKrlwv-Q - shippable-l10n-signing-linux64-aarch64-shippable-4/opt: cUwfNjH1SzGgXCWJ4zJV1w - shippable-l10n-signing-linux64-aarch64-shippable-5/opt: Htqp6CekQL6zS7eevVgnpg - shippable-l10n-signing-linux64-aarch64-shippable-6/opt: S1TzLMzES-a4jLHUhPZyhw - shippable-l10n-signing-linux64-aarch64-shippable-7/opt: T4Fnl8wATrKRFg9nP2e7ZA - shippable-l10n-signing-linux64-aarch64-shippable-8/opt: GIJzqPMaRoiGSy5ri_0jOw - shippable-l10n-signing-linux64-aarch64-shippable-9/opt: LRrxY-KuQfCMNOno6tg7hA - shippable-l10n-signing-linux64-shippable-1/opt: cdyoQhUFR-GjIogt2OlDeg - shippable-l10n-signing-linux64-shippable-10/opt: VQRmcdsaQTKJkIKAuweqxg - shippable-l10n-signing-linux64-shippable-11/opt: BQx__0sITt6QR6cng3dNHA - shippable-l10n-signing-linux64-shippable-12/opt: JxkXdvznTnWru4PWIL4CRA - shippable-l10n-signing-linux64-shippable-13/opt: ScDJt8SoQ_6F47MvdoaTmQ - shippable-l10n-signing-linux64-shippable-14/opt: IN0wJO_OSx6T01yoNv-AXA - shippable-l10n-signing-linux64-shippable-15/opt: ABx7TBOhQ0eL8R2Itc_9Gg - shippable-l10n-signing-linux64-shippable-16/opt: Wz2QEoI2R7Swsuno89f1XQ - shippable-l10n-signing-linux64-shippable-17/opt: eTgv0M8mRaWtrmkD9kBy7g - shippable-l10n-signing-linux64-shippable-18/opt: TtDhIAbRRSyI-VnXgMEFfw - shippable-l10n-signing-linux64-shippable-19/opt: Zmka7YAVTfSpQsO7qBbDew - shippable-l10n-signing-linux64-shippable-2/opt: K1po2LGeR96zCe0FL-OmLQ - shippable-l10n-signing-linux64-shippable-20/opt: PaNPYJyURMeIunoc1p0oLQ - shippable-l10n-signing-linux64-shippable-21/opt: BqDDoPrPS3yNXRq2iZ9C2A - shippable-l10n-signing-linux64-shippable-3/opt: e1Vqr9XKSZyS3ZM_mcntXA - shippable-l10n-signing-linux64-shippable-4/opt: Dd3WWBXhS0OheF-DgWdNyg - shippable-l10n-signing-linux64-shippable-5/opt: Fz9lUBEVTH6TlcykwxnX6Q - shippable-l10n-signing-linux64-shippable-6/opt: b33KvsZiQfmqmN_U4s0Tiw - shippable-l10n-signing-linux64-shippable-7/opt: Pe7enQuhR9ywlhKRkkYc6A - shippable-l10n-signing-linux64-shippable-8/opt: YZPAuybMRGWjj2szt0T5_Q - shippable-l10n-signing-linux64-shippable-9/opt: ItplyXpuTfCRC6ymAdT4vg - shippable-l10n-signing-win32-shippable-1/opt: B5XquRwoTACibEC40HfT3Q - shippable-l10n-signing-win32-shippable-10/opt: PDXSEO5ETQeUgugw4W4Zew - shippable-l10n-signing-win32-shippable-11/opt: V1PxpSXrT5-uObjGs0BCnA - shippable-l10n-signing-win32-shippable-12/opt: aKRvkieYQImL1gb28EcL4Q - shippable-l10n-signing-win32-shippable-13/opt: KPvUykoNTGW8CfaTggQjjA - shippable-l10n-signing-win32-shippable-14/opt: ORBWg9jnSNK_2OF6L4xoHQ - shippable-l10n-signing-win32-shippable-15/opt: LBVU-_PjRQah6qOsOvfZ-w - shippable-l10n-signing-win32-shippable-16/opt: EN1poZ2aS8O8nWkxmvjSDQ - shippable-l10n-signing-win32-shippable-17/opt: L4s8qq-LSme2hYbD6PJrSA - shippable-l10n-signing-win32-shippable-18/opt: a5-8XPeGQ3m7dwjFKqq5hg - shippable-l10n-signing-win32-shippable-19/opt: JLZ9PbiNRM20l-dt-PEU1Q - shippable-l10n-signing-win32-shippable-2/opt: Q__s1b3nQ0quUr8GawZu0g - shippable-l10n-signing-win32-shippable-20/opt: ESrM1b4MSIaCHt9M1OR5_g - shippable-l10n-signing-win32-shippable-21/opt: DpA9_PY8S9C_LcQpKnNN_g - shippable-l10n-signing-win32-shippable-3/opt: A5t5A9QXQi6-RFL0P5-yQw - shippable-l10n-signing-win32-shippable-4/opt: VdkDtIo9SNC38JXl17R8Qg - shippable-l10n-signing-win32-shippable-5/opt: BBjebRsAQQa2Df4Y-I7kyw - shippable-l10n-signing-win32-shippable-6/opt: R5nit_cnSdKE6IkdNpLLWA - shippable-l10n-signing-win32-shippable-7/opt: c2LOIm9nTJyBc_h0A72t5A - shippable-l10n-signing-win32-shippable-8/opt: Fx_itWxcTEifCGMHfzis-Q - shippable-l10n-signing-win32-shippable-9/opt: HlnOXydPTzaQQ7IlnY7mFg - shippable-l10n-signing-win64-aarch64-shippable-1/opt: WBOg04wyQXq35nE7ibV3Fw - shippable-l10n-signing-win64-aarch64-shippable-10/opt: Ehsf0ASiQteTd1tePzXY6w - shippable-l10n-signing-win64-aarch64-shippable-11/opt: awdDsh7iSv-Id5bTQZn1kw - shippable-l10n-signing-win64-aarch64-shippable-12/opt: HOLlSqK3Tvucxg1jUqxyKQ - shippable-l10n-signing-win64-aarch64-shippable-13/opt: FPew2AhBR1yEgjYD3B1_Lw - shippable-l10n-signing-win64-aarch64-shippable-14/opt: Wh28V1c0SmGD8GmdoaL0PQ - shippable-l10n-signing-win64-aarch64-shippable-15/opt: B72avfa2QXuTLNVTdR_N1A - shippable-l10n-signing-win64-aarch64-shippable-16/opt: VvKLh93WTs6FHk7BRTFAMw - shippable-l10n-signing-win64-aarch64-shippable-17/opt: f8pL-gLhSOyKDQ36aB1-gA - shippable-l10n-signing-win64-aarch64-shippable-18/opt: KSNp4FpZRsOrLh-FBQZS8Q - shippable-l10n-signing-win64-aarch64-shippable-19/opt: VqgWPkraRX2WTrzYf4fOZQ - shippable-l10n-signing-win64-aarch64-shippable-2/opt: EwpjN2BAQqCYP6BeHewRxw - shippable-l10n-signing-win64-aarch64-shippable-20/opt: ASfZluRvSFCMaZkBPIjqMw - shippable-l10n-signing-win64-aarch64-shippable-21/opt: AGGH7Y91SVq-epPPz5w0Uw - shippable-l10n-signing-win64-aarch64-shippable-3/opt: BiwG97sgTb-1ZI0znXYPJA - shippable-l10n-signing-win64-aarch64-shippable-4/opt: YVFMQhABRDOQZG9gWBYH4w - shippable-l10n-signing-win64-aarch64-shippable-5/opt: W5P2MeWYTmWGwMtjNMzHSg - shippable-l10n-signing-win64-aarch64-shippable-6/opt: VylPPLr9SfuD8teeIG6kgg - shippable-l10n-signing-win64-aarch64-shippable-7/opt: ergun-9jS7KoK4a4-gBGGQ - shippable-l10n-signing-win64-aarch64-shippable-8/opt: ZKlz3FrXQB6f5qHJ4q53fw - shippable-l10n-signing-win64-aarch64-shippable-9/opt: VxPBfLhET2OLwk6uLrJ4XA - shippable-l10n-signing-win64-shippable-1/opt: anCLMcssRVWMYc45vobIxQ - shippable-l10n-signing-win64-shippable-10/opt: Ggpsa0JeRxieqE22ZxU-QQ - shippable-l10n-signing-win64-shippable-11/opt: S_JR7C0QTH6bKNzBHUJu2g - shippable-l10n-signing-win64-shippable-12/opt: eM-oesuLRuCDrodB5CEuLw - shippable-l10n-signing-win64-shippable-13/opt: XeCw6jEtRPO3UuWVr930WA - shippable-l10n-signing-win64-shippable-14/opt: f6fGCPWDR0e6rdi4DfzgLQ - shippable-l10n-signing-win64-shippable-15/opt: HPbDzuBuRr2aHne569dyxA - shippable-l10n-signing-win64-shippable-16/opt: Oiz7UtpvQPu23H39hsMsdA - shippable-l10n-signing-win64-shippable-17/opt: ReFVuTBBQuCCo67qI_fSIQ - shippable-l10n-signing-win64-shippable-18/opt: RZVBE-nJSpmqEVjwaM3erw - shippable-l10n-signing-win64-shippable-19/opt: EUuP8h-kRVme2GXUaInHkg - shippable-l10n-signing-win64-shippable-2/opt: LMxNjVOOQDaDqGVSLPm-nA - shippable-l10n-signing-win64-shippable-20/opt: JjxVxCFhRsuUwYumNuFjsA - shippable-l10n-signing-win64-shippable-21/opt: O501FuuhTcycKubxZI2lKA - shippable-l10n-signing-win64-shippable-3/opt: LLPDkbRjTpOTk3V3IjlGcA - shippable-l10n-signing-win64-shippable-4/opt: KwfwJNrLRhug0Tj_1tsYAQ - shippable-l10n-signing-win64-shippable-5/opt: en8aUDAWTrm1nSQGW7P5Iw - shippable-l10n-signing-win64-shippable-6/opt: ap11IAb3RU22x_pjvjl1Ug - shippable-l10n-signing-win64-shippable-7/opt: K2tGODUCQBKCandpj6bUQA - shippable-l10n-signing-win64-shippable-8/opt: S8jYUQzBRn2BMkLMNBepLw - shippable-l10n-signing-win64-shippable-9/opt: ajLZZ_tPT4qdaQHUV6QD7A - shippable-l10n-win32-shippable-1/opt: G5ovfNLWSqu_LpwePK6RVA - shippable-l10n-win32-shippable-10/opt: cnH2mS-aS4mlNpbU2RWfmg - shippable-l10n-win32-shippable-11/opt: VI-O8t7DTwW4wsK_9btZ7g - shippable-l10n-win32-shippable-12/opt: L1z_ceP6Ss2Dxedg5OXTJA - shippable-l10n-win32-shippable-13/opt: ID5Llcq8RgaRldoa-cWlDw - shippable-l10n-win32-shippable-14/opt: Ud95JnsVSxqPeM6C1JjT6A - shippable-l10n-win32-shippable-15/opt: E8-u1SpdR4iQfFdgT8hZKA - shippable-l10n-win32-shippable-16/opt: IIQsj_p4RCSq7asm2iCZuA - shippable-l10n-win32-shippable-17/opt: DdBj8dRMRSet8nALgXwkIg - shippable-l10n-win32-shippable-18/opt: J0KlCjtTRHmks5GMmX0oWw - shippable-l10n-win32-shippable-19/opt: BKYAfVkoSOeFfvvtg9qCjw - shippable-l10n-win32-shippable-2/opt: F0MahuI6TQqhHR1hZ6HIBw - shippable-l10n-win32-shippable-20/opt: FHeoIcnOQRyMbl0P49yCGA - shippable-l10n-win32-shippable-21/opt: R5fRoYm1SE2bPLbvfhjPyQ - shippable-l10n-win32-shippable-3/opt: cU84xI1QT16wqxEyO3Wq-A - shippable-l10n-win32-shippable-4/opt: cN0Vm8Q1RAKEhcUUU_I76g - shippable-l10n-win32-shippable-5/opt: DS6rkc0GTRuda46SnhTMJA - shippable-l10n-win32-shippable-6/opt: WMV8OtlSSgGfm_wisCDs8w - shippable-l10n-win32-shippable-7/opt: B25dFzzAS_ixcg1PqakKww - shippable-l10n-win32-shippable-8/opt: OUdNkTwVTDSwyw8gzFfGFw - shippable-l10n-win32-shippable-9/opt: Xmn1K00YRQqOg9fB21qd1Q - shippable-l10n-win64-aarch64-shippable-1/opt: OP-m1ppZSQuhFhjq0Cf2AA - shippable-l10n-win64-aarch64-shippable-10/opt: R1xxvggmTs2Ihu05OwNl0g - shippable-l10n-win64-aarch64-shippable-11/opt: fxrnm-1ATee_GRtYFlHgqg - shippable-l10n-win64-aarch64-shippable-12/opt: JqPN5mTKRSWDZyD_jOrMkw - shippable-l10n-win64-aarch64-shippable-13/opt: ZCFtIUN1QPOZ_aE0Dheasg - shippable-l10n-win64-aarch64-shippable-14/opt: bqIJIn8eQwWCQuT5Q96dug - shippable-l10n-win64-aarch64-shippable-15/opt: W6pbyOaKTfSxPLSaKN19qw - shippable-l10n-win64-aarch64-shippable-16/opt: AhqKzZxYTUWx9u9OcT7KQg - shippable-l10n-win64-aarch64-shippable-17/opt: NWR5tsizTTWjMvzgM8Y9xg - shippable-l10n-win64-aarch64-shippable-18/opt: SFmjKMyNR3G371MRmUHDFg - shippable-l10n-win64-aarch64-shippable-19/opt: XmMPrPvMQB-X5xm_9UXZgA - shippable-l10n-win64-aarch64-shippable-2/opt: VA2lA6TaSbyR5gUyw9LoDw - shippable-l10n-win64-aarch64-shippable-20/opt: LqGD-rQXRgG0Zeo4ZuGvgw - shippable-l10n-win64-aarch64-shippable-21/opt: AR5M-PnoQpq27RtXtPKtyw - shippable-l10n-win64-aarch64-shippable-3/opt: JNDnHo28TJ-t2CiyuKk1tQ - shippable-l10n-win64-aarch64-shippable-4/opt: a0EkMbySSEuRucFLcnBzYg - shippable-l10n-win64-aarch64-shippable-5/opt: KHHnl1xcTOOOdGcoBa3MxA - shippable-l10n-win64-aarch64-shippable-6/opt: XU0jSOwoRkiO-PSZ6-0Z1w - shippable-l10n-win64-aarch64-shippable-7/opt: fcGXQIQmRq6T5ZTMjd63Kw - shippable-l10n-win64-aarch64-shippable-8/opt: Lrp3CUy9Qy-h0-F4lAcGfA - shippable-l10n-win64-aarch64-shippable-9/opt: M0EguZ_yReukvFakQfFbnQ - shippable-l10n-win64-shippable-1/opt: SmaeREBoR1u9DZRFdlIwpg - shippable-l10n-win64-shippable-10/opt: YVdeOCmmTriAV02ZWJ7dNw - shippable-l10n-win64-shippable-11/opt: eXlzd5k7QZ2jDSWjRR9bBQ - shippable-l10n-win64-shippable-12/opt: N7tW67OOSiCcpSGP0-jLUw - shippable-l10n-win64-shippable-13/opt: P1fhoKalRR2sFXS7ir4Low - shippable-l10n-win64-shippable-14/opt: ADXhytUCQN2IuaIZD2fBTA - shippable-l10n-win64-shippable-15/opt: W0C2AUmqS32oEgOwXM7QOg - shippable-l10n-win64-shippable-16/opt: MtBYdgEkQpqcJ80YXnXiRg - shippable-l10n-win64-shippable-17/opt: Z_oOnIFZRySHS2KxfcPchA - shippable-l10n-win64-shippable-18/opt: XlthW3x5QoeQBu5U_vLQOw - shippable-l10n-win64-shippable-19/opt: JYDZDosBT_S_hYnAzsp0MA - shippable-l10n-win64-shippable-2/opt: Lh_S0B0dSma0GgOhtUBegQ - shippable-l10n-win64-shippable-20/opt: Iii_1zNWTaWSJsd61G23oA - shippable-l10n-win64-shippable-21/opt: Ceg807hAR_yUe2J69j62Qw - shippable-l10n-win64-shippable-3/opt: ZPliiVW8Q4WMsGmEN0X7yg - shippable-l10n-win64-shippable-4/opt: adj5hlQQSmCgkTDhThSFjA - shippable-l10n-win64-shippable-5/opt: brEAALk9TnOrLE6s0pw4BQ - shippable-l10n-win64-shippable-6/opt: FwkOK7anTEa3hUzZ-GhiFw - shippable-l10n-win64-shippable-7/opt: BT7tJGs-SCG1-tXKJZMKOw - shippable-l10n-win64-shippable-8/opt: Zq1nhsKKTfqSz5igRJxowQ - shippable-l10n-win64-shippable-9/opt: aLqaSPLESoSzS2fD3F4T1g - source-test-mozlint-clang-format: IOtRXCXaSGGy6Bo7H8qO1g - source-test-mozlint-codespell: SVEKinrHTFqKkguzjv9uaQ - source-test-mozlint-file-perm: Fp8ri34USsCPezWTRBWVsg - source-test-mozlint-file-whitespace: S0KPnIcCSuOMub7yoqAg6Q - source-test-mozlint-license: KbW8H_O2QkaNjsP4s2bf4Q - source-test-mozlint-lintpref: QeVeR5BITdOiwbVZ77ddQA - source-test-mozlint-mingw-cap: ERsm_XI8SACTXudLfd-lGg - source-test-mozlint-mscom-init: ejXzxCeTSVitJaoPzdvu0Q - source-test-mozlint-rejected-words: Qh8qVmWmSQa-ulFHiHnK-Q - source-test-mozlint-trojan-source: PfXbVEUHS8-w_fJLMZlqWg - source-test-mozlint-yaml: aslxREd_QWuxURZLhUGTDw - source-test-puppeteer-puppeteer-1: CAnjL0AmTpKgZTwJtqyIHg - source-test-puppeteer-puppeteer-2: EtYgBRfmRfKvlBfd7MWfSA - source-test-python-mozbuild-linux1804-64/opt-py3: ZeOuUis-Qh6LFmFpqdz7-g - source-test-python-mozbuild-macosx1470-64/opt-py3: Yo66fmM6RaOMA3XH3bLvxQ - source-test-python-mozbuild-windows11-64/opt-py3: aHHtJIT8Tv6HR19KtNvagQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-1: BnU-ddL7SDKN0kVrXlUImA - test-linux1804-32-shippable-qr/opt-web-platform-tests-10: bhlh4YliToWp8is2yRshHQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-2: UGx4m3AwSK6ISIft2yHouQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-3: D4lUJBK8Sniww-fJ0LLEFQ - test-linux1804-32-shippable-qr/opt-web-platform-tests-4: cEMeZDGaQ1OdxVPOog3ryg - test-linux1804-32-shippable-qr/opt-web-platform-tests-5: X01KpyCJTVm1urEEOaaFqA - test-linux1804-32-shippable-qr/opt-web-platform-tests-6: ObqO2stxSjOEerfhpKu23w - test-linux1804-32-shippable-qr/opt-web-platform-tests-7: dytYIMQwQ3uAo7EOTm0glA - test-linux1804-32-shippable-qr/opt-web-platform-tests-8: EFKNSXy4SLedR03TVllBpA - test-linux1804-32-shippable-qr/opt-web-platform-tests-9: bWmm-ru0SdOLWnapCvBb_Q - test-linux1804-32-shippable-qr/opt-web-platform-tests-eme: WJoEp5KFRJGCPDudp_DfMA - test-linux1804-32-shippable-qr/opt-web-platform-tests-pb: cEjLq4-cT_SKYVcG1hsXWg - test-linux1804-32-shippable-qr/opt-web-platform-tests-webcodecs: DznhGgYKROmxWEA-XaE0kA - test-linux1804-64-asan-qr/opt-cppunittest-1proc: IJ9PKhunTzKSBozbZ-3cXQ - test-linux1804-64-asan-qr/opt-crashtest: AXKEOFNkSJK8X26TjbABZA - test-linux1804-64-asan-qr/opt-crashtest-swr: cjgAhUEuSxiq1H4xeVsWsQ - test-linux1804-64-asan-qr/opt-icecat-ui-functional: CVZs-sYkRhuyeA05EGtVgg - test-linux1804-64-asan-qr/opt-gtest-1proc: WbyIFsvGSACD0z41rhq8Pw - test-linux1804-64-asan-qr/opt-marionette-1: AZamaRGRQZih1V6U6m2mfQ - test-linux1804-64-asan-qr/opt-marionette-2: MF41I2pgSY6Ey_zQPx_WTg - test-linux1804-64-asan-qr/opt-marionette-unittest: GE6PnSsMS3SOrERQeoEnRg - test-linux1804-64-asan-qr/opt-mochitest-a11y-1proc: SRHXNO9SRHWzt0K5QkkgRw - test-linux1804-64-asan-qr/opt-mochitest-browser-a11y-1: KHe0r-4qQRmE-EXn4B1qGA - test-linux1804-64-asan-qr/opt-mochitest-browser-a11y-2: YJsR4XBKTZaOWViHyjIxrA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-1: XBiPFn9vQWS8vdctrpPFDQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-10: fS5ONweISgqotXkHH-2hiw - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-11: cdBEJjK4TYeHF239fHbEEg - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-12: NW6S1Z7bThij87VeNsfeAQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-13: RbEVZhZtT26IAG_IlIShGA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-14: I8zjLflfQ0Cl0jYxdcNt7g - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-15: cnzjJ2JGQDSA4gB6RwufNQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-16: PyRjHn1_TquQe4vPD1eTow - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-2: d5uvjXuOTTaMTJSJvoMDVA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-3: amv5chlFQPKP8aCwuPlnIg - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-4: ZY1-SLVOSpybUfYaLtZmhQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-5: L-uNaUiXRuGXA9uPRaw4zA - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-6: bDm4mhtsTd6dJygmL3QN7A - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-7: D2Mq-ehDSj6i1jeUGqQ8oQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-8: Wd9r0d3nTZK7_cXXZ-jIIQ - test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-9: EODl5rS_T9GVR-KSj-9Ahw - test-linux1804-64-asan-qr/opt-mochitest-browser-media: LjLVhsonSsuVe2HcCEdLRw - test-linux1804-64-asan-qr/opt-mochitest-browser-translations: K5cL-UgITBGLPSuBl2D1WQ - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-1: De2EyLwyT1SJYJky3ZrH3A - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-2: dY8o8KeLQfuM6v4z9BvwVQ - test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-3: JvmTKkhXRrO4pem_-DQTEA - test-linux1804-64-asan-qr/opt-mochitest-chrome-gpu-1proc: XW6iyq1mS72GhNnOSaQE4w - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-1: RtbXbwcPRCKo__wzlgYFxA - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-2: JIEWu2yxT2mnF_4Q8PFlkg - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-3: Esp0hkVeT_mOU_yocO3_xQ - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-4: QTL-uhznSemhHlabH-xESw - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-5: BBtg8FohS_SjwpezE7Dwcw - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-6: I4S3L983QBKw3zE-Nf_KfA - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-7: HI61ycpOR--pqi8b6j7Wig - test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-8: DTHzj-TiTZynMew8vP0Ung - test-linux1804-64-asan-qr/opt-mochitest-media-1: TPq28mE6TUODrjK3_0DQGA - test-linux1804-64-asan-qr/opt-mochitest-media-2: UCKb-gzRSZyMVjBCGkV4hQ - test-linux1804-64-asan-qr/opt-mochitest-media-nogpu-1: YQ38dhJrTDe2MVTK6C13Kw - test-linux1804-64-asan-qr/opt-mochitest-media-nogpu-2: D8KbHRwJT7aQ7n_UdPaMTA - test-linux1804-64-asan-qr/opt-mochitest-media-spi-1: WSzpCOvFRACp4idt_Un3bQ - test-linux1804-64-asan-qr/opt-mochitest-media-spi-2: AwpYR2hYSiu1zfPP9DsNpA - test-linux1804-64-asan-qr/opt-mochitest-plain-1: cfGWqyuhTCSGrsfItau2fw - test-linux1804-64-asan-qr/opt-mochitest-plain-10: d9U3wO0zR0-bcfH0mjeqgg - test-linux1804-64-asan-qr/opt-mochitest-plain-2: cl9uQTaFTBiV9qu38rDgig - test-linux1804-64-asan-qr/opt-mochitest-plain-3: P8pW9-y7SX6J_PawXVzBJg - test-linux1804-64-asan-qr/opt-mochitest-plain-4: OC0lbGZPQkO1bHdaR5MfeQ - test-linux1804-64-asan-qr/opt-mochitest-plain-5: EhBoJzKGTHyEv1OeWOotBg - test-linux1804-64-asan-qr/opt-mochitest-plain-6: fnVvUEeaSnidVQdJC3Nf6Q - test-linux1804-64-asan-qr/opt-mochitest-plain-7: AO-QMAN9QjmZHqbqkNT5pg - test-linux1804-64-asan-qr/opt-mochitest-plain-8: GA1uBQULTsKQ3asofddTPg - test-linux1804-64-asan-qr/opt-mochitest-plain-9: cGmb41DlQ_WgXbx9p_8POg - test-linux1804-64-asan-qr/opt-mochitest-plain-gpu: UrxYjojeQHyzoOmFK0vgmQ - test-linux1804-64-asan-qr/opt-mochitest-remote: bnSuznaxTlig3B75qDYmTA - test-linux1804-64-asan-qr/opt-mochitest-webgl1-core: IuY_8AG1Q2udxPthP5ow5w - test-linux1804-64-asan-qr/opt-mochitest-webgl1-ext: GS8ZZPu0Q1CzZrN6N9uv1g - test-linux1804-64-asan-qr/opt-mochitest-webgl2-core: MXVxUCV6QUOiuj8BGoGg7w - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-1: ECAHgzP9Q02Eu-XdRuY6ww - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-2: CN8fUGthSyCc4YP-PGatSA - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-3: bfX5x87WSq6Ea4UjFSviIQ - test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-4: KpEU5_LKSDixk_G41YhywQ - test-linux1804-64-asan-qr/opt-reftest-swr-1: CRu4Gl4bT0q4SjyZ8NO23A - test-linux1804-64-asan-qr/opt-reftest-swr-2: dE8quLGwR9C0L2jCEtqEAg - test-linux1804-64-asan-qr/opt-reftest-swr-3: N6Ntx52jQ0G-BT-BnSWltg - test-linux1804-64-asan-qr/opt-reftest-swr-4: fX27_8BPTyS1YWdYb3p-8Q - test-linux1804-64-asan-qr/opt-reftest-swr-5: VZ0QA9w8Sd6Yr6fYDqlMOQ - test-linux1804-64-asan-qr/opt-reftest-swr-6: f8q4LqiJTqiA4Ze6hrG9mQ - test-linux1804-64-asan-qr/opt-reftest-swr-7: eqE2qHApQvG-uKdRLGi_6A - test-linux1804-64-asan-qr/opt-reftest-swr-8: VhPpuI3RRuGmOakPPBzPXw - test-linux1804-64-asan-qr/opt-telemetry-tests-client: b5IcvN_JQTuCm82WUMuZ-g - test-linux1804-64-asan-qr/opt-web-platform-tests-1: OBP35xafSfCxebqWWBpeXA - test-linux1804-64-asan-qr/opt-web-platform-tests-10: cMY9ucBSQKabvRuuhZPV2w - test-linux1804-64-asan-qr/opt-web-platform-tests-11: CP3dFg6xQQKKxJrCJnQPOw - test-linux1804-64-asan-qr/opt-web-platform-tests-12: SkKT4m0DTBqynWSxQ5dlJA - test-linux1804-64-asan-qr/opt-web-platform-tests-13: aCmHFFrnSSy_B0I3I_O1cg - test-linux1804-64-asan-qr/opt-web-platform-tests-14: d8qqQoo4QAmg9LHxyh_ZnQ - test-linux1804-64-asan-qr/opt-web-platform-tests-15: B48NZBsqSiOxC36MrcLuQw - test-linux1804-64-asan-qr/opt-web-platform-tests-16: XYXPKJGSQZu8PP-FEieqIw - test-linux1804-64-asan-qr/opt-web-platform-tests-17: Pyt5lSx1Q0OoFY7J2G2a9A - test-linux1804-64-asan-qr/opt-web-platform-tests-18: LySChIRPQ2SGMptvABLAew - test-linux1804-64-asan-qr/opt-web-platform-tests-19: PR-XvHcgQ5KWJbzE-hDiSQ - test-linux1804-64-asan-qr/opt-web-platform-tests-2: aHgO3vJ3SaqO3w5E1iTo-Q - test-linux1804-64-asan-qr/opt-web-platform-tests-20: CqG-BlJZQE68DQdSmeXt4w - test-linux1804-64-asan-qr/opt-web-platform-tests-21: BTOjYTPsR_yKVixYJZfJRg - test-linux1804-64-asan-qr/opt-web-platform-tests-22: Gwk9knzBTJ6P1wPHf0D9gg - test-linux1804-64-asan-qr/opt-web-platform-tests-3: TjqJWycDSs2oBcUK0kL9Ow - test-linux1804-64-asan-qr/opt-web-platform-tests-4: EScWWDwxSveyHB4WHqkEkw - test-linux1804-64-asan-qr/opt-web-platform-tests-5: LPnQfOUDSEGQe8H42OIwmA - test-linux1804-64-asan-qr/opt-web-platform-tests-6: JQFm88kBTvGXwgzM3mVRlg - test-linux1804-64-asan-qr/opt-web-platform-tests-7: QywvsZWERR6gtDN1sLJtYA - test-linux1804-64-asan-qr/opt-web-platform-tests-8: Keg_ushiRByLN3vpM-KHRQ - test-linux1804-64-asan-qr/opt-web-platform-tests-9: Tr7l0a5yRT6rZZ5Y6MqoFg - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-1: EFo4JlbaSX-Lq3XvAFdHIQ - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-2: a665XEOlSP2gWayXs567og - test-linux1804-64-asan-qr/opt-web-platform-tests-canvas-3: H0yxKo9RSte6ypPpWO_4xw - test-linux1804-64-asan-qr/opt-web-platform-tests-crashtest: YWp4B2WkTl62SdfNJ5nidQ - test-linux1804-64-asan-qr/opt-web-platform-tests-eme: IBWuDrhFST6zvm1HaP1hFQ - test-linux1804-64-asan-qr/opt-web-platform-tests-pb: ePrioGh6R0GtYOWAtk8XfA - test-linux1804-64-asan-qr/opt-web-platform-tests-print-reftest: TvRAIzKyQYmqrDNksC5Cpw - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-1: S3TqS9VlT7a_KpO49ujx0g - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-2: FVCZbG8lT4yAngpxE00DvQ - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-3: NzyBs9xMQYmxvUVyJAYBbA - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-4: RmOmq8yjSI2WHRAmrrVyZg - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-5: PRdp3VmQRxO1AsmpgYpWUg - test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-6: YX0UoHQlTeSnDHptu3pr_w - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-1: OkOxEgwgSMScyQ228n9iow - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-2: ZRHeRSjuTteD8d9lWZR43Q - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-3: f6Uxsrc9R7yboroE7S3_wg - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-4: MDzzHAsmSbyGgtHv81Vh0g - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-5: Lt3uv7p4QEm2Fu7q_t482w - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-1: Y-3kmgKVSbe8lOvb5R2doA - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-2: d4asqfphSfarE4OXGoKY6A - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-3: BfTxMfcGTcCoC9Uvi1AlHg - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-4: C2Y_6mGHRZGSJ2a0VQQUJw - test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-5: KRXm35rnSBmHom1mB-c_cQ - test-linux1804-64-asan-qr/opt-web-platform-tests-webcodecs: NiDSlYk2QEy_zCLFuRUKeg - test-linux1804-64-asan-qr/opt-xpcshell-1: OTgPbkESQNqaYmQehBx1rQ - test-linux1804-64-asan-qr/opt-xpcshell-2: WT6aw0KxRyiCjKJG2ZbQpA - test-linux1804-64-asan-qr/opt-xpcshell-3: Z9LsSRdTRfGlRuI1XnVZ7A - test-linux1804-64-asan-qr/opt-xpcshell-4: SBJ1NOsdQLeMEUZrpFQWNw - test-linux1804-64-qr/debug-cppunittest-1proc: MGru4JDbSyy6MyD-9li92A - test-linux1804-64-qr/debug-crashtest: SFRbJVgjSGyigTS3d3H0Iw - test-linux1804-64-qr/debug-crashtest-ioi: PBIIlJ9zQ7KX3arLs6Vm9A - test-linux1804-64-qr/debug-crashtest-swr: NXD8pKoGRSKONat4GyZ-aQ - test-linux1804-64-qr/debug-icecat-ui-functional: FewcQrsgR0uX9i-1Yn5VIg - test-linux1804-64-qr/debug-gtest-1proc: DWGjt5_4SCOyKir-hPQ1ew - test-linux1804-64-qr/debug-gtest-ioi: WFOb6WiIRC-VsyqSLLLzyw - test-linux1804-64-qr/debug-marionette: J0oDjsOPSMaBPi4Q3g1qqA - test-linux1804-64-qr/debug-marionette-ioi: WH7bn5_RQ4Gbg6DwQ2xzmw - test-linux1804-64-qr/debug-marionette-swr: BIck2ZmJR7it-h6NQ7GlTg - test-linux1804-64-qr/debug-marionette-unittest: VQ75B0ZuRtWzMANA7362UA - test-linux1804-64-qr/debug-marionette-unittest-swr: R7M6LgqMQ_m8lHQRGZUStA - test-linux1804-64-qr/debug-mochitest-a11y-1proc: M91gC7P6QOmvNJ_oLadm2w - test-linux1804-64-qr/debug-mochitest-a11y-swr-1proc: TD7JC6JnSou-j0idwqBikg - test-linux1804-64-qr/debug-mochitest-browser-a11y: ERSLtOJVQumS7IIJH1_IUg - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-1: D4KTkQRJRc-GJKOaIAikHA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-10: DOrPz76_RUe-Ojs6YDZnoQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-11: b39pv2TzQ8iokMw5FJdn7Q - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-12: f21BzDXMQkmxcQjeXdke0g - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-13: REIyS79pQJ2BUoKMrcnHvw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-14: bLj13AcCSxOtE7IXxMMWwA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-15: Wjp0qgpFSfq7SESXetGZhQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-16: ClZ83cShRB2t9XARKaEVLQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-2: cMrlfG29S7KFtC6sRB3DlA - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-3: baLGP4ZPS8-AVApo00EFtw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-4: X4-m3fFESye9DTeUlPVxDg - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-5: NtoYW0GQTuKxUedQQFal6Q - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-6: CsfX2-rdQWmpRB6Dgjsraw - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-7: C3Zxm5euQXyTUcJDZQ6miQ - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-8: Xht38F7YSCu2lB0PaWO68g - test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-9: cicfxAsyQCWWPC3eOWyYrw - test-linux1804-64-qr/debug-mochitest-browser-media: GvobJL42RlK8T-d2_kBWZQ - test-linux1804-64-qr/debug-mochitest-browser-translations: NBiPSTGOTI6WdzGo5-N3Jg - test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: SRu2Ob8lSnu1zLBPrU_-zw - test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: EiWn39CzToSgmsyoGnO34g - test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: brSNOKBtTBG3txD8x04R1Q - test-linux1804-64-qr/debug-mochitest-chrome-gpu-1proc: bZrS3j8HQaiGaqPLX0eVYg - test-linux1804-64-qr/debug-mochitest-chrome-gpu-swr-1proc: STtZ38AOQ7-RguOD_jQ3RQ - test-linux1804-64-qr/debug-mochitest-chrome-ioi: M3xIF-R_S5iVsjwdrgAFwQ - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-1: Xm4u30iQSly7vSlzbMOgRw - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-2: FLR-drYfTWCMUKyH7vVIqA - test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-3: WmW--AdqRc6Ery885IsLug - test-linux1804-64-qr/debug-mochitest-devtools-chrome-1: Cw5fRxnWRF6K2cMUAlmwxA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-10: JlHZreoXSsuVCX5NTw44UQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-11: XJTZUTQzS0yNMaCc9Fp4ww - test-linux1804-64-qr/debug-mochitest-devtools-chrome-12: Y_bpaddiSTuBe-lovF35Hw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-13: Z-MnmQxJQqC0h3CcNx9TtQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-14: IGWatsQBReWHNO17w-tgjA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-2: UHavfQR1QpirvVvJ6AVLfg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-3: OCoZHBKnQU-2MKVOk6MwGA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-4: SxB0M-caT3SaP51le48G9w - test-linux1804-64-qr/debug-mochitest-devtools-chrome-5: OSRMZd1wSc2LUBQtqt0NfQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-6: YepPnqLoRBaL7lfpLfZgOQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-7: ZmgWg4ZRRFqn9Oa557VJPw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-8: Klle_0gcT5KVaKOxR_eD8A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-9: Z1pCbKMdSkmKO6KHbBhTew - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-1: fjPwqjHRQrOrB7tiskC5qQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-10: bL8vA--tTl2DTMiwU9UfzA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-11: XFyTBrkWSzOIwAWvNfShEw - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-12: NVXd5N13QveYEWXZh05c-A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-13: c2TQFhEARz2xdcnIj35TCg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-14: WCX7_yopSLaaaXoi6Dc3ag - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-2: Cl0trn4nQ6eCLz6rzW4W-A - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-3: VKBnwJtgQ2qbyCwzuzO1aQ - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-4: Kd8Wf1mWRoKTpGj61f7iWg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-5: CPWv0E02TaqSEGm4FT8ALg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-6: JLOuQ-U3TOWSAW2QlvAqPg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-7: F9P3iRtEQdyH9DulrJFFLg - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-8: VjHdNNoiQyuDsrZz-7cNlA - test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-9: U_w-2FFxQxqOyJdZL8tK5A - test-linux1804-64-qr/debug-mochitest-media-1: VlXJprY4T-mFa35QNso4Sg - test-linux1804-64-qr/debug-mochitest-media-2: UyDiztMGScGVVAWSrvtkrA - test-linux1804-64-qr/debug-mochitest-media-3: ZsNvzbeAQhaykXT8_DFvmQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-1: OkbyZaDuRbi56MIugH92mQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-2: Lqv7ZYU-T2yN37VY9uWPNQ - test-linux1804-64-qr/debug-mochitest-media-nogpu-3: cpsXud4mS9mYoni1K_XEAw - test-linux1804-64-qr/debug-mochitest-media-spi-1: VODBgRmkRY-I2xKUMPXRsQ - test-linux1804-64-qr/debug-mochitest-media-spi-2: Q4B1x2T7RQ-e6m_I_dKL6A - test-linux1804-64-qr/debug-mochitest-media-spi-3: Nm53ZyK3RTqlIBBTeL2gWQ - test-linux1804-64-qr/debug-mochitest-plain-1: SO7en9R6Sx-i5iJ_BhbdXw - test-linux1804-64-qr/debug-mochitest-plain-10: MvnXcOTSRyeQYI53DoYXCQ - test-linux1804-64-qr/debug-mochitest-plain-11: K3hLlGKyTPehVxV4IzSJuQ - test-linux1804-64-qr/debug-mochitest-plain-12: E_GUF1BzTWWmBKUKlSHOuQ - test-linux1804-64-qr/debug-mochitest-plain-13: KvToZNpdRm27x8bNAsjT6w - test-linux1804-64-qr/debug-mochitest-plain-14: UCiTXcEPSvGO1IEtBHWBQQ - test-linux1804-64-qr/debug-mochitest-plain-15: AEsSLF7ATWSwMe7xf4iibQ - test-linux1804-64-qr/debug-mochitest-plain-16: Vjmd2rmvQD6zlfBqwqSLKQ - test-linux1804-64-qr/debug-mochitest-plain-2: MxL1tN_TTrSojZABLs0uYA - test-linux1804-64-qr/debug-mochitest-plain-3: E7EYGTqWQTqoJsD8-RB_vw - test-linux1804-64-qr/debug-mochitest-plain-4: dmLV3PbTSX6HnkTB9PjwQw - test-linux1804-64-qr/debug-mochitest-plain-5: fzsMsSpTQJi3Xe7hrs0YZA - test-linux1804-64-qr/debug-mochitest-plain-6: HcGVO2vKSUW8MhUMevsmKw - test-linux1804-64-qr/debug-mochitest-plain-7: DzR3cmOORAiNwNPVOjnO0A - test-linux1804-64-qr/debug-mochitest-plain-8: V6__2cerThy0FqosIWLgAg - test-linux1804-64-qr/debug-mochitest-plain-9: RMoeV1RbRd62q3BqHGmrmQ - test-linux1804-64-qr/debug-mochitest-plain-gpu: BKEPXv7ITcaucj_s5el2DQ - test-linux1804-64-qr/debug-mochitest-plain-gpu-swr: f80APx-OTsSkfdITKyNK6w - test-linux1804-64-qr/debug-mochitest-plain-http2-1: bBvMUydbRBK1pmS3ySLWxQ - test-linux1804-64-qr/debug-mochitest-plain-http2-10: MHy1UsKTQxqb4vna-QjE7Q - test-linux1804-64-qr/debug-mochitest-plain-http2-11: GsZzmEbiQ3uz1hAOXtVeUw - test-linux1804-64-qr/debug-mochitest-plain-http2-12: dokM-ASHT8CWuB25VeGc0Q - test-linux1804-64-qr/debug-mochitest-plain-http2-13: Ld252SyqRO6K4ha73Td6ow - test-linux1804-64-qr/debug-mochitest-plain-http2-14: WUXK6jSAQRmqkbTNoHFHEA - test-linux1804-64-qr/debug-mochitest-plain-http2-15: I7Lf_8IjTz2rkp5VoMMxrw - test-linux1804-64-qr/debug-mochitest-plain-http2-16: BEwqltfaTAmDfJ2ywMUviw - test-linux1804-64-qr/debug-mochitest-plain-http2-2: F7jfnNbiSCKPL-97W9rrfw - test-linux1804-64-qr/debug-mochitest-plain-http2-3: dMNsJzN2Rx6tGLVVIPnfFA - test-linux1804-64-qr/debug-mochitest-plain-http2-4: StKIh4zOSg-CaLKMOg66LQ - test-linux1804-64-qr/debug-mochitest-plain-http2-5: Dz-ozs25RySvCt7xHvuiNw - test-linux1804-64-qr/debug-mochitest-plain-http2-6: ciKrF852QuWr7RzG1pTpSQ - test-linux1804-64-qr/debug-mochitest-plain-http2-7: aDGFs8ANRpiBkq_O46lyxA - test-linux1804-64-qr/debug-mochitest-plain-http2-8: HbQaApiKSQSPM5-kj8bH4Q - test-linux1804-64-qr/debug-mochitest-plain-http2-9: bxa0STsFTcS5_kg_t76RFA - test-linux1804-64-qr/debug-mochitest-plain-http3-1: d1rdFCWSRmGAJdmMtBExpQ - test-linux1804-64-qr/debug-mochitest-plain-http3-10: I4OR6jNHTvWWtSB9d_4ePQ - test-linux1804-64-qr/debug-mochitest-plain-http3-11: KREj0b_eQDaeTTDd6ha0sA - test-linux1804-64-qr/debug-mochitest-plain-http3-12: Yyz7JpSyRJykBC5o0f5v6w - test-linux1804-64-qr/debug-mochitest-plain-http3-13: dLBZh2kXR7mtcsZ1M67opQ - test-linux1804-64-qr/debug-mochitest-plain-http3-14: eDBtyol-Q4O3vjkMaoH6jQ - test-linux1804-64-qr/debug-mochitest-plain-http3-15: SSz_5qvrQNi9Sqno-AgCDw - test-linux1804-64-qr/debug-mochitest-plain-http3-16: KScj4CxuSUOOyzrq_WaItA - test-linux1804-64-qr/debug-mochitest-plain-http3-2: IPGhkysNTLK4st5tG2_imA - test-linux1804-64-qr/debug-mochitest-plain-http3-3: QIfwQRQGTeSYFf41E0GdGA - test-linux1804-64-qr/debug-mochitest-plain-http3-4: eds3psdGTM2IOpd18VVDrw - test-linux1804-64-qr/debug-mochitest-plain-http3-5: DTJqupg5Q6mXh8sDIR601w - test-linux1804-64-qr/debug-mochitest-plain-http3-6: K_n1NSPYTKG55_NJlQ0pAg - test-linux1804-64-qr/debug-mochitest-plain-http3-7: Rnqy2r3qRFql6gbB-KuZdw - test-linux1804-64-qr/debug-mochitest-plain-http3-8: QNHkKuFeTie4LaP01ECJOw - test-linux1804-64-qr/debug-mochitest-plain-http3-9: csa1zMg8SCa1LyESjJgFbQ - test-linux1804-64-qr/debug-mochitest-plain-ioi: OXssbm3wRK-3OZy7mtKRYA - test-linux1804-64-qr/debug-mochitest-remote: bBMqaeQpTPezQi682TLiMw - test-linux1804-64-qr/debug-mochitest-webgl1-core: WrubNWvgRg2rbMY9lzJOzg - test-linux1804-64-qr/debug-mochitest-webgl1-core-swr: fM5y9qraSFCS03EdM7XaFA - test-linux1804-64-qr/debug-mochitest-webgl1-ext: KT9TpvlQR92_bZNQRPd3ew - test-linux1804-64-qr/debug-mochitest-webgl1-ext-swr: DY1SZVumS4W19W7VpxuqDw - test-linux1804-64-qr/debug-mochitest-webgl2-core: Gju445ShS_6pB5P-FC3s_Q - test-linux1804-64-qr/debug-mochitest-webgl2-core-swr: C3xTl358QSaA1hmp5LanLQ - test-linux1804-64-qr/debug-mochitest-webgl2-ext-1: Ot0g-hSNQF2YEWIFEg93qw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-2: LhpF1p79SNSsp1wZyLSYpA - test-linux1804-64-qr/debug-mochitest-webgl2-ext-3: I8tiahd4QV2wAOppKQK4nw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-4: Lxyagr28Q0KReYObBMyPCg - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-1: CE7nwzCcS46FJenhx0pVTw - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-2: IeBhYi6YTB6OgRC_TdmAhA - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-3: WsAJHLK8RUWIWU6zK4Bq0A - test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-4: N2OE-SqhQ0qKi3RTPkV0ng - test-linux1804-64-qr/debug-reftest-1: ORO-YxeWQ6u6DshQrcZn0A - test-linux1804-64-qr/debug-reftest-2: eZK4NT6zSfqaBHCTOBt8Ew - test-linux1804-64-qr/debug-reftest-3: WBZrHJSUTEWT-NY7-IW-sw - test-linux1804-64-qr/debug-reftest-4: f_HTxFdzQ2qGdaAJr8ft9g - test-linux1804-64-qr/debug-reftest-5: GL7zEmg8SeO8AY9kWGJ-8A - test-linux1804-64-qr/debug-reftest-6: Fcn_K-lbQIGIiJIez6aGOw - test-linux1804-64-qr/debug-reftest-7: EcmG73wqT-O2VogiZTAVMA - test-linux1804-64-qr/debug-reftest-8: AC-lWme0SoaXzodH5Udr_A - test-linux1804-64-qr/debug-reftest-nogpu-1: NunQZvjxRMueL6VZXzhs8w - test-linux1804-64-qr/debug-reftest-nogpu-2: Iqjxl3j7RZKJGAXfup_Jvg - test-linux1804-64-qr/debug-reftest-nogpu-3: DGlTnJYJTbyGrtVjPgen0g - test-linux1804-64-qr/debug-reftest-nogpu-4: HR18tPQXRiefAF8xhZ0PyA - test-linux1804-64-qr/debug-reftest-nogpu-5: KckTf1n-QcCWBAMYbfhAGg - test-linux1804-64-qr/debug-reftest-nogpu-6: At51U8YDTpWGOHfC4ZE4RA - test-linux1804-64-qr/debug-reftest-nogpu-7: Oy5xU-r-SUuCZX4yWvSJzA - test-linux1804-64-qr/debug-reftest-nogpu-8: ERWewBp9T425FOZqH2rUPA - test-linux1804-64-qr/debug-reftest-s-1: SnpFrzHnQV-TQ-0ikq1Pvw - test-linux1804-64-qr/debug-reftest-s-2: bUqEEY_qSWOlmr-C_CYCxQ - test-linux1804-64-qr/debug-reftest-s-3: clG3VY0PQT-_YXCZVRLDbQ - test-linux1804-64-qr/debug-reftest-s-4: EptoSFIFTjaV6AOqcRv7-Q - test-linux1804-64-qr/debug-reftest-s-5: Q-NaFBDmQz6ghTRCSFjeDg - test-linux1804-64-qr/debug-reftest-s-6: eRpqp4BeRhCGCsQ0EYc8Ig - test-linux1804-64-qr/debug-reftest-s-7: D7MBz0mWTNKCJL9r_CEtJA - test-linux1804-64-qr/debug-reftest-s-8: NcafSxLATJSxGjm7OX_43Q - test-linux1804-64-qr/debug-reftest-swr-1: ZuEb8JqeTS6iiHNOYKy7Rw - test-linux1804-64-qr/debug-reftest-swr-2: OxGvyxpeTw-go0dvCB5HIw - test-linux1804-64-qr/debug-reftest-swr-3: FnFsv6hDRA6DtbHRSGOihQ - test-linux1804-64-qr/debug-reftest-swr-4: AhyU_b01QaSiHwYzN0OD7Q - test-linux1804-64-qr/debug-reftest-swr-5: OfZSZ31vTXSlEm13x81Mxw - test-linux1804-64-qr/debug-reftest-swr-6: F30zB_-jSjKTQ-eUkmx-Jg - test-linux1804-64-qr/debug-reftest-swr-7: GTU96U8YTrygQK68o6T5LA - test-linux1804-64-qr/debug-reftest-swr-8: Wi_UjvrlQ8yv0IIzbnC_uQ - test-linux1804-64-qr/debug-telemetry-tests-client: Ap_cRHMARDGc8F75Pjy6CQ - test-linux1804-64-qr/debug-web-platform-tests-1: DfQy2AiWRzC4Mx7f9fth2A - test-linux1804-64-qr/debug-web-platform-tests-10: TI7vVJ-mRVag5NNc7JwKfA - test-linux1804-64-qr/debug-web-platform-tests-11: cWdYDIkuT9WO22rF7QY-8A - test-linux1804-64-qr/debug-web-platform-tests-12: TaGICJIXTCWVBshvrbBaPA - test-linux1804-64-qr/debug-web-platform-tests-13: Q7qck7kdRaiIyps1SkGfpw - test-linux1804-64-qr/debug-web-platform-tests-14: AhAnSFrCSYaDOt_0LHM2lA - test-linux1804-64-qr/debug-web-platform-tests-15: T0m5w7djRreFvh3W9TisGA - test-linux1804-64-qr/debug-web-platform-tests-16: TKzA_V6QQGSqtX7z5JQANA - test-linux1804-64-qr/debug-web-platform-tests-2: BcQ0_m4QQQewGM5qQdQUDw - test-linux1804-64-qr/debug-web-platform-tests-3: eO17ExVPTfGoj8Nw9IKSgw - test-linux1804-64-qr/debug-web-platform-tests-4: Tb8Ozv0gScmcXiYNpSRotg - test-linux1804-64-qr/debug-web-platform-tests-5: O5xPlUIjTM-d8yr0u48Nxg - test-linux1804-64-qr/debug-web-platform-tests-6: e1iFqYrGT1GyyImQPjn3cQ - test-linux1804-64-qr/debug-web-platform-tests-7: dh49P3JpSBmJ9W1DrqpAiw - test-linux1804-64-qr/debug-web-platform-tests-8: WBu3ZhpnSwqp5nH1lf1JQQ - test-linux1804-64-qr/debug-web-platform-tests-9: GzsGCuQnQcOnodyPSZrX0Q - test-linux1804-64-qr/debug-web-platform-tests-canvas-1: IQkbmeoDS96K6gstNx7_kw - test-linux1804-64-qr/debug-web-platform-tests-canvas-2: NC5aS6OxSYGzfZmXVhA8bA - test-linux1804-64-qr/debug-web-platform-tests-crashtest: duO-GaHTTSmPv2BRf9pmJw - test-linux1804-64-qr/debug-web-platform-tests-crashtest-swr: EMFaaVybTHu_vs61D8vOhg - test-linux1804-64-qr/debug-web-platform-tests-eme: QzNOPXj1SzmBSwtDUgyo8A - test-linux1804-64-qr/debug-web-platform-tests-ioi: IIfnQra3TC29eYPDDOtEhg - test-linux1804-64-qr/debug-web-platform-tests-pb: SQavglTwQuK8KuJpOKjw_w - test-linux1804-64-qr/debug-web-platform-tests-pb-ioi: CG2b1Dj6TlCOfAbJlD5xpQ - test-linux1804-64-qr/debug-web-platform-tests-print-reftest: Ro66zjrES2SwdQyGb96GjA - test-linux1804-64-qr/debug-web-platform-tests-print-reftest-swr: H3nafxwnTUmk7kUpPuEvBA - test-linux1804-64-qr/debug-web-platform-tests-reftest-1: KS7ls1pUR5GaCONgPySqAg - test-linux1804-64-qr/debug-web-platform-tests-reftest-2: N-UUNxjdTO27W7aHc2wkFg - test-linux1804-64-qr/debug-web-platform-tests-reftest-3: H-SUghiBRye83F9Y8EMeZQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-4: BLZpb8jMRT-IFNare-4d0A - test-linux1804-64-qr/debug-web-platform-tests-reftest-5: bb5UQayRRfGhLMyrHXSYiQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-6: NfFo6at_Q5-0repEF8CkJg - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-1: DT0CNRFSQ7GtQZNY0-yG0Q - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-2: P42MaKYOSVmqeUL_NvRZOQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-3: Vu_DrFg7QtmDdbeBP5J3fA - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-4: FOmsiMnGTbu5tPK4AX4VtQ - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-5: UmFoU1xISce_JFeNHal-hA - test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-6: KMVDXWJBT9K3TFf8mdVrBg - test-linux1804-64-qr/debug-web-platform-tests-wdspec-1: Do7GjyANQ_CT12FXzulSzg - test-linux1804-64-qr/debug-web-platform-tests-wdspec-2: LhnXRXOuRQGZ4chLzFVY-A - test-linux1804-64-qr/debug-web-platform-tests-wdspec-3: c9VxTsw7SGqMvmbFZqlbfw - test-linux1804-64-qr/debug-web-platform-tests-wdspec-4: Mf0Z-tOCTBC79yy7oRvtcQ - test-linux1804-64-qr/debug-web-platform-tests-wdspec-5: D-MNGJlSTjWEnhFgqpCj0Q - test-linux1804-64-qr/debug-web-platform-tests-wdspec-6: STpipcJmQJSQnm0yg5JCiA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-1: CAyVkprgQpSl-67FmJfCUA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-2: G6VqvtLTRc6bSyK5bP3jqA - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-3: dP-y2jd5S7WMegiaeLYWFw - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-4: ZEUmRHLjQeW6wLB6KL5vog - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-5: NoUVdezjQUC8ew-BehlJ7A - test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-6: epTqK6MpSHOX1Y3AVDF9VA - test-linux1804-64-qr/debug-web-platform-tests-webcodecs: J2aHR1cmRWGC8nrdHGV-qg - test-linux1804-64-qr/debug-xpcshell-1: a3VFYUm4TXimKQW_JDLMcQ - test-linux1804-64-qr/debug-xpcshell-2: F_jfXWTBT2aoiP1jR9n2og - test-linux1804-64-qr/debug-xpcshell-3: fM9D6W4DQ1WIwpxkBe9SEQ - test-linux1804-64-qr/debug-xpcshell-4: dzzYdL0OQlGGFQy-pshJaQ - test-linux1804-64-qr/debug-xpcshell-ioi: Q0CzXz9VQkuwoB9PyyTBGg - test-linux1804-64-shippable-qr/opt-cppunittest-1proc: TFMZzrDnSiOAT7ATKfUzPA - test-linux1804-64-shippable-qr/opt-crashtest: crQ3vybUSeCW4weTKLRtcw - test-linux1804-64-shippable-qr/opt-crashtest-ioi: GKqidZKcRAWpRELhOzpxcA - test-linux1804-64-shippable-qr/opt-icecat-ui-functional: GsaaKGHSROaLiFgbiNf9IQ - test-linux1804-64-shippable-qr/opt-gtest-1proc: OYXLHpFVQd61tJG992xzBw - test-linux1804-64-shippable-qr/opt-gtest-ioi: ctMO7sU-QgCuQEnNZ8VsQA - test-linux1804-64-shippable-qr/opt-marionette: GbUcgVSTRmOF3-pJhuxOyA - test-linux1804-64-shippable-qr/opt-marionette-headless: NlN16TSaTzWpZz5BhJ8C2A - test-linux1804-64-shippable-qr/opt-marionette-ioi: CswzeQpiQQKIFferluvJzw - test-linux1804-64-shippable-qr/opt-marionette-unittest: XAWQRRDSR--EQ7YrtJXfvg - test-linux1804-64-shippable-qr/opt-marionette-unittest-headless: Ap__68kKQoqe1KomS5wnLQ - test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: EQPslHmRQ9ikc_fEHVE6Qw - test-linux1804-64-shippable-qr/opt-mochitest-browser-a11y: Fu2pDs1WTq-eVrPc4PMNbg - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-1: XJOPQF70SaSy61LvJijgaQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-2: FFM_ew9RSES0z61_pe422Q - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-3: YV37dy38TPyvoZy1sIcuxA - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-4: HHnyngmqQWOjwjYzEmi6wg - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-5: GhOnNRtHQtyDEq-6LdAaiw - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-6: Z3h8s4DLSoyAXyxi4FYYTQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-7: HRbXFmWGQmGJwNGmGlfjDQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-8: FkR17wuMTBu-xX8hA8_PKA - test-linux1804-64-shippable-qr/opt-mochitest-browser-media: aTzeji9TRGia9Ud8VZYlyQ - test-linux1804-64-shippable-qr/opt-mochitest-browser-translations: RaewiY9HSWaD349GBUmj-g - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: L3jQ97HLS2a-QIDHw64zzg - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: RlUaApzjQuqsNTH4Rhd-VA - test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: UiW4AggDThOyNNfjZh8BVQ - test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: dA9YXZaITX60cY_-Mm0KHQ - test-linux1804-64-shippable-qr/opt-mochitest-chrome-ioi: Xbj8y7R-RHK2_I2UUhB97g - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-1: cld7_-fgRJi0DzG9Uqyozw - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-2: VEQ686tlS-6cSKsoMpiXgw - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-3: dOyCTzX_TXe2FOqtndSuEg - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-4: S3GavKezSlWqswNmxNL1QQ - test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-5: Rwb39MbbQTO-4xmnRwzjwQ - test-linux1804-64-shippable-qr/opt-mochitest-media-1: eSLQSnc_TQ69sunL5j3VLg - test-linux1804-64-shippable-qr/opt-mochitest-media-2: Ogg3KggFSsOYtUqz6ZtGZQ - test-linux1804-64-shippable-qr/opt-mochitest-media-nogpu-1: ICZyHBBMR3S1EpXLVNy1QQ - test-linux1804-64-shippable-qr/opt-mochitest-media-nogpu-2: fXZaL3VTSmOwvx3w8sk3Gg - test-linux1804-64-shippable-qr/opt-mochitest-media-spi-1: ekF5SOWuTESd5C4cm97XeA - test-linux1804-64-shippable-qr/opt-mochitest-media-spi-2: JUa2qiKASVu74pcBJp_KIA - test-linux1804-64-shippable-qr/opt-mochitest-plain-1: RTBLlCJjRBKDFRIklulghA - test-linux1804-64-shippable-qr/opt-mochitest-plain-2: btTy9weMQ5G27bqAeHBQ6A - test-linux1804-64-shippable-qr/opt-mochitest-plain-3: VhnTSQHcRA6Bsq3dWvImQQ - test-linux1804-64-shippable-qr/opt-mochitest-plain-4: InIWtYrRTXyx1opThu8Tew - test-linux1804-64-shippable-qr/opt-mochitest-plain-5: C5Sbc7vnQn6LL2_VDtMG0Q - test-linux1804-64-shippable-qr/opt-mochitest-plain-6: DUlUR3hSTHq1VARzh11pRw - test-linux1804-64-shippable-qr/opt-mochitest-plain-7: RtLxkBoOR2-A57BLxN_FLw - test-linux1804-64-shippable-qr/opt-mochitest-plain-8: F8OPMM1DSNKboNSY-y9-kg - test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu: WORMsqRVRZWbGfI3xS652g - test-linux1804-64-shippable-qr/opt-mochitest-plain-ioi: bSowmc0RT4-VhCmNLF-igw - test-linux1804-64-shippable-qr/opt-mochitest-remote: Op5cozQZQgSVqhfPJr5sBA - test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core: AVNjxHo1R-6VUWFKHP7oow - test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext: GWNVOxZeTWG62z222JKWgg - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core: XdVOqH4YRL6Nx3-qIHuieg - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-1: aTAJf6fySDeAdXtc1lUdkA - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-2: e6rAroJVQSGhK1loHmVCFA - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-3: RB74H1wjQr6qsy1eldfZ2A - test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-4: BbiQ0u53QIe0AhbU6MOi2Q - test-linux1804-64-shippable-qr/opt-reftest-1: TPQrmCvYSXWt7vPnzHknKQ - test-linux1804-64-shippable-qr/opt-reftest-2: cOxnoWhCTRiVDwcdOtjJrA - test-linux1804-64-shippable-qr/opt-reftest-3: Br_shjLxQ0iA3PjkJ9NSdw - test-linux1804-64-shippable-qr/opt-reftest-4: Mtk7PqveTGiKFaryb-CD2g - test-linux1804-64-shippable-qr/opt-reftest-5: PdRrY1LrQw2udS9oPcrjPQ - test-linux1804-64-shippable-qr/opt-reftest-nogpu-1: ONycFqpKR1CD4imjwwRlGw - test-linux1804-64-shippable-qr/opt-reftest-nogpu-2: bnsTTZMTTwmjIZZAZW-yGg - test-linux1804-64-shippable-qr/opt-reftest-nogpu-3: L56iNcPkSSeXHiUNvA-SwA - test-linux1804-64-shippable-qr/opt-reftest-nogpu-4: Q-rCa6zuR92YzqvNibYJ4w - test-linux1804-64-shippable-qr/opt-reftest-nogpu-5: bk5ajt-YTNS-JsqQBKD6Mg - test-linux1804-64-shippable-qr/opt-telemetry-tests-client: KzU1XAetTWmyDhM0vZMq0A - test-linux1804-64-shippable-qr/opt-web-platform-tests-1: W7JFeeNoQzmbkPuRqR8elA - test-linux1804-64-shippable-qr/opt-web-platform-tests-10: RCOu530gT3u6n0kHv07HGQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-2: Dwi3s3VPR8-WYP4FINTwcA - test-linux1804-64-shippable-qr/opt-web-platform-tests-3: Ay_ymMQKQi-zYqOrBbzVmQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-4: ImsBbldlQFCz3ouMSjTcmg - test-linux1804-64-shippable-qr/opt-web-platform-tests-5: Pma2_8d2RceDD33MDHgofA - test-linux1804-64-shippable-qr/opt-web-platform-tests-6: dem-U3rGQqiV_YMi_UHm5A - test-linux1804-64-shippable-qr/opt-web-platform-tests-7: KXe-SK__Q46o2ogSTAgfgw - test-linux1804-64-shippable-qr/opt-web-platform-tests-8: Q9D10FkbQSWju2esFxiq4g - test-linux1804-64-shippable-qr/opt-web-platform-tests-9: XzHW2Q0eRGiXhmjrlU4R2g - test-linux1804-64-shippable-qr/opt-web-platform-tests-canvas: adYGk3jDTeSUDBKkwE_fsQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest: YIMq7mtPSrSuvclLVK5stA - test-linux1804-64-shippable-qr/opt-web-platform-tests-eme: ANLoey-9TcKcYdPzvoWJGQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-ioi: Cx5CcZ7jTNGnD6EtglTpxg - test-linux1804-64-shippable-qr/opt-web-platform-tests-pb: TlO2D8oRRX21hgUzai6IZw - test-linux1804-64-shippable-qr/opt-web-platform-tests-pb-ioi: fM6t87ZfQpuzKqPVdHwnRQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest: aQwYOsrbSYmRsduM0IdBFA - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1: DB-6D-QfQb6aTMvtKQPp1g - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2: dDYaKWLiT-WfY5Z4jJAq1Q - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3: SUQ01S4TTW-JxdGfqixl3A - test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4: R-cj1yJ4QnSOvpZihAsQCw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1: U0_FL7kDTliCJqan6FRzEw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2: JktSWr9qSS6PmB94Dug2pA - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3: COoW7OydSK25_6XJDTQFJw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-4: Xwvm_sSLTbmEGENr1j-z-A - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-5: BVAhMqdCQuSUOuIianvqZg - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: Pp7xt0CaQsOJt9Ch6AcqRQ - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: R-FxhqVWTx6UB9SSFZTmew - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: ayfSln0OR3WvzgZxK3tdjw - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-4: KusllYZ5RVWeVRIF9JMt0g - test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-5: fL5Mkps1TRm3ZJIR90Mx_A - test-linux1804-64-shippable-qr/opt-web-platform-tests-webcodecs: IIZcmsyGS8ia0CxOY0KRIw - test-linux1804-64-shippable-qr/opt-xpcshell-1: IfySS7VyQmST0L0skoNe_g - test-linux1804-64-shippable-qr/opt-xpcshell-2: KaBThN7YSrCHlxsGGNyVrA - test-linux1804-64-shippable-qr/opt-xpcshell-ioi: dE3GZtiISJ-FwG-YfbFEbw - test-linux1804-64-tsan-qr/opt-cppunittest-1proc: Es0fJs_1SWSvZluTLeswRw - test-linux1804-64-tsan-qr/opt-crashtest-1: NSLiUWHuSmmPlLZCKvN_Lg - test-linux1804-64-tsan-qr/opt-crashtest-2: Nvh8BTKdQZy21GcThxjzrQ - test-linux1804-64-tsan-qr/opt-crashtest-3: aD2YDuV5RSCZ7v-K6JMhpw - test-linux1804-64-tsan-qr/opt-crashtest-4: BIYODUviR4eKwYVE4WHhwA - test-linux1804-64-tsan-qr/opt-crashtest-swr-1: QI5qO3y6RxuGryJi9_-PCQ - test-linux1804-64-tsan-qr/opt-crashtest-swr-2: cnG_ko1QTU2AeruS6W6yhQ - test-linux1804-64-tsan-qr/opt-crashtest-swr-3: U46cqy72S1G6Z0WaJlexDA - test-linux1804-64-tsan-qr/opt-crashtest-swr-4: SmoFjPvNSruTDNsV0IFZjw - test-linux1804-64-tsan-qr/opt-icecat-ui-functional: fqqP94HjTaCUsm0QPInEAg - test-linux1804-64-tsan-qr/opt-gtest-1proc: L3cJROOkToW3QW_-EvTG9Q - test-linux1804-64-tsan-qr/opt-marionette-1: ZbwzvHR3TUGLb7asyNRleg - test-linux1804-64-tsan-qr/opt-marionette-2: eM9rkrk0TsWyFQorfgr9UA - test-linux1804-64-tsan-qr/opt-marionette-unittest: IdlRmxbMQwaua9v2w9kD0Q - test-linux1804-64-tsan-qr/opt-mochitest-a11y-1proc: cIVGOKsRQ-GpMA4vE6rs8w - test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-1: IbXV4RwAQgu-P6ZXLJAzEg - test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-2: FBT43356QcSi1wMC9LCkvA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-1: P5LeI1gMRaixvGBMNhoJIg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-10: aFndVb9HQIGp2sU1OgGCNA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-11: QJXL4u3vR0Wokeoar2JaXA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-12: OqWHjjq4Qc2x5Hj0NOD7Pw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-13: eBFvW0AuTeOhipBDOqILmQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-14: C9Nd8Vr3Tx2PXqWMrkj1tA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-15: YYpC9WTkSgu3jc-4wndTzA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-16: ZoIXCi0ZS7KEx6k0uz-8FQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-17: EMythfQPSKKLnCkVPGMRGQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-18: HhJbn9mQQ3qDKJ0WlsiYvw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-19: Aa3UXItTQ-WP1UTm-hoXPQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-2: AZmpPPS2T_SqmA7JI3Bxyw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-20: eWcSdmiTRNGaVfZrkkCivg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-21: Q1M198iJTeWFvssZ1IRNnA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-22: RC31cxY2RtqZ4bEY3YRPKQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-23: ZJ4jpiBTSEqls_Z1AzkQ-A - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-24: SUDQmkdPQZybtFszQB67qQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-25: ejlEZ2vHTM-BR3QG0Gltzw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-26: cYNrNINQRLGATQ0P5oL0XQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-27: JjDvjQB2SHKS4TRAupQFSg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-28: DrNkEODKQsKgSSUNXQwGyw - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-29: JN_SvO5nRDWawLxKTfmizA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-3: YdqztO_bT8iMcv14g8k70w - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-30: bYRNxseURVa4d9A3HCEYPA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-31: TwVPT_nfTYCigb9CZOwjlg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-32: RUOlnzFiQ7-coHDunsm6_A - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-4: cTpk-JvtSKKT2QpZx2k5Yg - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-5: CZn2LElkTOOhyHeo6dIxCQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-6: NmBVaw5BSoaN-EIfsTRExA - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-7: dHaizgd0TMOChMcMdusxLQ - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-8: GxMYsvozQUaymUINWDQC1w - test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-9: aGbbKk12SH-yOc42z4BDFA - test-linux1804-64-tsan-qr/opt-mochitest-browser-media: ZHYsUP-tTv-gUeFai_GHKA - test-linux1804-64-tsan-qr/opt-mochitest-browser-translations: A10WJq7MS4CtBiRo48n-9A - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-1: Sbf_LEoiRNqyzYJV1aVG4Q - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-2: BJVQArbXRy2pdLWUScmTXw - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-3: ez1xmKnLTTevjBSTRd2EhA - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-4: ekCb1_oiRd2I5mDu0L30Gw - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-5: EbmsaRHZQvmWhUzLQjx_hg - test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-6: AxaFC_1QSQWMBsQthiznng - test-linux1804-64-tsan-qr/opt-mochitest-chrome-gpu-1proc: ep2kPwJ9RPWJWVSfZH-9iQ - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-1: a8sT2K9GSyiOcTTurqF9lg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-10: X35rBcfWT2u0oQbAAYi9Lg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-11: aeu2cftSQ06s7ZgSi_dufg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-12: b3Y6GHHXTpCDLJ4zT67Wtw - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-13: bfWee2BgRLCwLWXTND7NwA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-14: ftY3CcLnT1eLgZX0pVyZ2w - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-15: DV-IIEanT8iE_5gjXbG-Og - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-16: Cii3288PQGi0IqtyDxjhgA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-2: C9dtJXPzTI2DABuXZxeXZQ - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-3: ZJPGcdP9QOG24JkiyLhbVw - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-4: HLQr5c9LR7O19h6X8MB3aA - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-5: D9CGtjlmTXmGr-aSi-ZHRg - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-6: LfvlU4hgRk-9oIGz1Yny9A - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-7: OqsRINSvTJKgKLneop3G_A - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-8: dbfRwKHvTKa_jcoUSfGt0g - test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-9: NwfkrflRS_6dQ1fOSRthow - test-linux1804-64-tsan-qr/opt-mochitest-media-1: aqNBjMGaQNiJDYYsYyF71w - test-linux1804-64-tsan-qr/opt-mochitest-media-2: dmnixghpQx64VIuUZgJMIA - test-linux1804-64-tsan-qr/opt-mochitest-media-3: MYZsdMIhR3G7WZbrIiMcBA - test-linux1804-64-tsan-qr/opt-mochitest-media-4: ZH7WSBUuTw2BnQra7_UB-Q - test-linux1804-64-tsan-qr/opt-mochitest-media-5: WrWh1621TEiC_rtw2rKSRw - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-1: eo4xIyFYSs2Ws7qo5UwcSA - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-2: RBaL1fpNTDOXpswoV3hULg - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-3: Qz7XW6oqRTOdfVE2LPYrCg - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-4: dwCLWkN6RbKuf3AFYFy9JA - test-linux1804-64-tsan-qr/opt-mochitest-media-nogpu-5: HQyZ2f6wRjWftXtlAFCncg - test-linux1804-64-tsan-qr/opt-mochitest-plain-1: b8Vya2arT26UPFOT__bFNA - test-linux1804-64-tsan-qr/opt-mochitest-plain-10: DzY-JuoKQQm2NB5La5fm9A - test-linux1804-64-tsan-qr/opt-mochitest-plain-11: CFhgA1QxTPKoJNxnyEhdXw - test-linux1804-64-tsan-qr/opt-mochitest-plain-12: Rv94eL0LSB-aZ7I1N_yIvQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-13: OjRdPtAmRmOjUAAHSiz-ig - test-linux1804-64-tsan-qr/opt-mochitest-plain-14: AATfTuwMSWuacQURHHrVGw - test-linux1804-64-tsan-qr/opt-mochitest-plain-15: U1MYfZxYSZOFwxzcdXV0uQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-16: MUqi3x8jQ7WwI3WUKPS8Ew - test-linux1804-64-tsan-qr/opt-mochitest-plain-17: GCzgvSe3QNeX6r0KNvKxjw - test-linux1804-64-tsan-qr/opt-mochitest-plain-18: N_wSqJajR1y98kRPapf2iQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-19: QusPWKO_T-mSkEOvOLtJwA - test-linux1804-64-tsan-qr/opt-mochitest-plain-2: HwhR6hT1TemfWShgTPK6Nw - test-linux1804-64-tsan-qr/opt-mochitest-plain-20: EPwfUKIfRIe7N4vMXmrNdQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-3: VzvC7SvcR6OsxJ7CLnyftA - test-linux1804-64-tsan-qr/opt-mochitest-plain-4: SIawDvAsSyqDftF-lT0Z5g - test-linux1804-64-tsan-qr/opt-mochitest-plain-5: OfVbHVdxRHiqewrbaNYMbQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-6: MmULNhDlRNOvxBBXEsVTzQ - test-linux1804-64-tsan-qr/opt-mochitest-plain-7: OgAwKJZpTw2VD5gGJCFsIw - test-linux1804-64-tsan-qr/opt-mochitest-plain-8: OoocqXg6TdG-2C1CtCln2w - test-linux1804-64-tsan-qr/opt-mochitest-plain-9: XVtHRy4GQfCVoA3t19wqlw - test-linux1804-64-tsan-qr/opt-mochitest-plain-gpu: WtX1c6IpQ7SKRbr_C_U9FQ - test-linux1804-64-tsan-qr/opt-mochitest-remote: KN7g1cLETayXgsW-Mosecw - test-linux1804-64-tsan-qr/opt-reftest-1: XRT0o-0pRYafSmzfDt7Wxg - test-linux1804-64-tsan-qr/opt-reftest-10: LpozwxUoSlG1rTP2IcpY8A - test-linux1804-64-tsan-qr/opt-reftest-11: QY1SZk8NRhGw-n4MlsWALg - test-linux1804-64-tsan-qr/opt-reftest-12: RNuR3YqST0ag5xcU4n4AmQ - test-linux1804-64-tsan-qr/opt-reftest-13: Z9WKiNhRRTy-CfmAeRUI-A - test-linux1804-64-tsan-qr/opt-reftest-14: N5aeYFR7TH-2X0DhQGz0VQ - test-linux1804-64-tsan-qr/opt-reftest-15: E8DygEs5Tqi7W-3DWKNmQQ - test-linux1804-64-tsan-qr/opt-reftest-16: SYal1wJhQhOnfwwJ9rs95g - test-linux1804-64-tsan-qr/opt-reftest-2: Vs7lDumGTVujzUurK2EPhw - test-linux1804-64-tsan-qr/opt-reftest-3: ciCANP_8RmabnmlmxdevVQ - test-linux1804-64-tsan-qr/opt-reftest-4: J-hI1NE7RZu7zZMOPEQv9g - test-linux1804-64-tsan-qr/opt-reftest-5: U_RhZQ3zSUapXJXNrQi-vA - test-linux1804-64-tsan-qr/opt-reftest-6: UeJaFScxRve7hiDP6RSS-Q - test-linux1804-64-tsan-qr/opt-reftest-7: Moc7_GZtTpGsTpTLUEHpqg - test-linux1804-64-tsan-qr/opt-reftest-8: arixZe6ERmmJsuBEzemEaw - test-linux1804-64-tsan-qr/opt-reftest-9: IjEBYNhgT52CXtjsVYlzVA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-1: EQ6H_3FlQlCnXa5oz1iK_w - test-linux1804-64-tsan-qr/opt-reftest-nogpu-10: TxMI5tO_RRy-yNUYvMI0pQ - test-linux1804-64-tsan-qr/opt-reftest-nogpu-11: KEv0FAVyRouwBSvQclJx6g - test-linux1804-64-tsan-qr/opt-reftest-nogpu-12: GuDCrH2UTNCR7lJ7BeOKgA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-13: MAeKaRfrQi6o5V3lpRsxug - test-linux1804-64-tsan-qr/opt-reftest-nogpu-14: Wmnmgm2-TKSaWp5TnerL8A - test-linux1804-64-tsan-qr/opt-reftest-nogpu-15: Lz6zRKRvQ6O0Nw4KkNHZkA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-16: IL6-wbVGSpyJkDcsx8k8vg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-2: SikgsGoOSk2B-CQIBdVUyQ - test-linux1804-64-tsan-qr/opt-reftest-nogpu-3: LO2ukHuxTSiSwkxsnJRy5g - test-linux1804-64-tsan-qr/opt-reftest-nogpu-4: IZe7c3mfQliYr4_qDRMJ9A - test-linux1804-64-tsan-qr/opt-reftest-nogpu-5: G_Z7LuJ_Qs-Rru7zNtjGow - test-linux1804-64-tsan-qr/opt-reftest-nogpu-6: cJgwXefcTWizTypZ-rERHg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-7: Tp-TU9VWT2uYH3vA68iHmg - test-linux1804-64-tsan-qr/opt-reftest-nogpu-8: Ico1AzHjR8GtcFpbuwTqYA - test-linux1804-64-tsan-qr/opt-reftest-nogpu-9: dCsLSqQwSDG4EkhXJDl48w - test-linux1804-64-tsan-qr/opt-reftest-swr-1: HkT1cUfMSwmQHlIQTxNuNQ - test-linux1804-64-tsan-qr/opt-reftest-swr-10: GJvoIW-FQLaLLO8NkTJTiw - test-linux1804-64-tsan-qr/opt-reftest-swr-11: XT9qsb7HRAuCQweKknGmsQ - test-linux1804-64-tsan-qr/opt-reftest-swr-12: IAtGP_G0QTOE0bbYDnjhbQ - test-linux1804-64-tsan-qr/opt-reftest-swr-13: AXTZPf1gRUmJ-uLCR2vFOg - test-linux1804-64-tsan-qr/opt-reftest-swr-14: HxWa1whzSeWWaB24C7cpOA - test-linux1804-64-tsan-qr/opt-reftest-swr-15: UKBKee-6TPy9dKAjVOo52Q - test-linux1804-64-tsan-qr/opt-reftest-swr-16: CjSZOnvMSPafaXVrh7zaXw - test-linux1804-64-tsan-qr/opt-reftest-swr-2: NuWUZeCFTM6ADZmes99V5A - test-linux1804-64-tsan-qr/opt-reftest-swr-3: aojBOcoNRumpKYqgHnnrjQ - test-linux1804-64-tsan-qr/opt-reftest-swr-4: Yx-cBLeNSo-lW2Tgsu2qOA - test-linux1804-64-tsan-qr/opt-reftest-swr-5: LVNT2oDQQtmndZhIEencyQ - test-linux1804-64-tsan-qr/opt-reftest-swr-6: DGzdQ5L0R5Oq_hs8LN_TnQ - test-linux1804-64-tsan-qr/opt-reftest-swr-7: FfwbIRPxTfeoU8-kKiOz_Q - test-linux1804-64-tsan-qr/opt-reftest-swr-8: ZpwtPSJzRF6pHixxaXH-tA - test-linux1804-64-tsan-qr/opt-reftest-swr-9: G33Q094NQ1eiITFvU1ybdQ - test-linux1804-64-tsan-qr/opt-telemetry-tests-client: GKPCrIdbTB-7rU-hC4HrCA - test-linux1804-64-tsan-qr/opt-web-platform-tests-1: aa0JT53bQ2GP-O3BqyA5vw - test-linux1804-64-tsan-qr/opt-web-platform-tests-10: HZUJqdeBSTid3S5i3A4bEg - test-linux1804-64-tsan-qr/opt-web-platform-tests-11: UvkIOk6UT-6xioWhlmGo7g - test-linux1804-64-tsan-qr/opt-web-platform-tests-12: PxWRQ3dbTceTKftveBkthQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-13: BAVCa0QTQua9WWtPggQbcA - test-linux1804-64-tsan-qr/opt-web-platform-tests-14: Ucfk3GX8QI25ISd-Jzxh0g - test-linux1804-64-tsan-qr/opt-web-platform-tests-15: W050qERYQ2a2MFPDw2x3GA - test-linux1804-64-tsan-qr/opt-web-platform-tests-16: LQyP4XwIRHymYRc-L2BOaw - test-linux1804-64-tsan-qr/opt-web-platform-tests-17: GUSQcQ22RqO35NNt4IGNQg - test-linux1804-64-tsan-qr/opt-web-platform-tests-18: SIhboOTTSx6x7XGqM_nliw - test-linux1804-64-tsan-qr/opt-web-platform-tests-19: OQTLKfiyS4WfVmj2SdlOvA - test-linux1804-64-tsan-qr/opt-web-platform-tests-2: XGzo4TTMQjqH8QUsdOtiSg - test-linux1804-64-tsan-qr/opt-web-platform-tests-20: ELhYbhLmSp-m9DTMyT3vRg - test-linux1804-64-tsan-qr/opt-web-platform-tests-21: MrbIWXCSSj25RF9HOmDxOw - test-linux1804-64-tsan-qr/opt-web-platform-tests-22: UHc8l6qGRAuxcewqPE_aFg - test-linux1804-64-tsan-qr/opt-web-platform-tests-23: FUyZNj5mTCSZLzSKoeA21w - test-linux1804-64-tsan-qr/opt-web-platform-tests-24: CZpV9pbhTKCt-bjJBCKoPQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-25: WJVNqH-KSKC3gTUkZXjuEQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-26: OXn62e-BQ1yAXgpluzNkiw - test-linux1804-64-tsan-qr/opt-web-platform-tests-27: N3l0YlVpQumlVfv3uRAtMQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-28: JEMEvCEFRcCbR4l4xSPHtg - test-linux1804-64-tsan-qr/opt-web-platform-tests-29: VkGIRwqsQ9-X4hzwm9w58g - test-linux1804-64-tsan-qr/opt-web-platform-tests-3: UnIH1ggcTxyS5xHGTbwUoA - test-linux1804-64-tsan-qr/opt-web-platform-tests-30: RocLJIPCSMOrZJz7xYpKcg - test-linux1804-64-tsan-qr/opt-web-platform-tests-31: a3CTbZK-QHOSQW7fioLFgA - test-linux1804-64-tsan-qr/opt-web-platform-tests-32: FFNtODFYQHiUd5SOwJYDGA - test-linux1804-64-tsan-qr/opt-web-platform-tests-4: Jm47LVEQTEKj4CfUMs5Kgw - test-linux1804-64-tsan-qr/opt-web-platform-tests-5: Tm1rUPSKTPOEFZzSc95t1g - test-linux1804-64-tsan-qr/opt-web-platform-tests-6: BIf6649NSniLswRXvGYgeA - test-linux1804-64-tsan-qr/opt-web-platform-tests-7: JkZDQpzNQn6hCPR4S9MKug - test-linux1804-64-tsan-qr/opt-web-platform-tests-8: Mc9Dx2zSSVWGS9DhXfITpw - test-linux1804-64-tsan-qr/opt-web-platform-tests-9: VERqXymGROqAV4FhQ8Bk8Q - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-1: MrOszuwqRwu2Sq2qWkbE8Q - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-2: CNVHwObYS_KaoJKqRAP_9g - test-linux1804-64-tsan-qr/opt-web-platform-tests-canvas-3: Swz7qwr0R2KifUoditLVBA - test-linux1804-64-tsan-qr/opt-web-platform-tests-crashtest: FElM47-5TUK4Gp9w14Ab4w - test-linux1804-64-tsan-qr/opt-web-platform-tests-eme: KNATNL6jRAS8G38Sz7QNEQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-pb: edAJNe-5Rhafhgjleg-uhw - test-linux1804-64-tsan-qr/opt-web-platform-tests-print-reftest: KMPYj3DSQwmkhRQVz-HsnQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-1: LgxLRpdjRFmHyfPVu9XuPA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-10: ZFnwIpaPR2C-cIlJ1LPk9g - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-11: NpqCrF66SweUaJQkac4SbQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-12: WBE2kFHSTuuWyizOkNu0xg - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-13: Xbzx-N1lRpWy6uuH2eMMSA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-14: Hds5xzxdQCWCtm3PbzcIqQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-15: dGKjLFOETRKIiUQ5fD1xOg - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-16: AUt8XVZmQHCrslSYqF4_iQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-2: GIOp_6qtTMGdR2CzQ1T5qQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-3: Ib9DEXKISvKIeIbT0Ar2Qw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-4: erOEhcZOT_iexaQp5pFalw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-5: Hix5BhGaR_WFqe3hMrcSsQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-6: SiCCxoGVQRq_bXFwUJQiXA - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-7: LFdOg2f1TJerPJmAcf1WcQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-8: ekIcVAWASnOJRv4i6j-kjw - test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-9: f0s6NvSAR2WUm7R6wgs8aQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-1: W1qrOGjLT4i_NSPNkwWD4A - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-2: e2nY4I79SyWg7wQkYl-org - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-3: PT25SWjrQRKqESu7JgNFAw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-4: bGslJuekQOS3UdeAJ9Eqmw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-5: PLXZ5sMQSKej8mbN_Q-U0g - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-6: S6DOUc2ySqCLWKSWSvTYvw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-7: NJsxsUDQSEyu_CA5PTKJVg - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-8: P6hSN-9_Qb6UpFDrO_omoA - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-1: FSju-oT1QsunK1rDyw1A8w - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-2: cHaiHX0IQaKrylYxh0e1lQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-3: P3id6q2UT6mGQer0CfWUfA - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-4: eMSJTKTaQOmseshXEAJNvw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-5: B6hEIyX8Szmmx2H_B2DauQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-6: S6PjqDpyRSCCQj9zTrsgQw - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-7: ZCVk2qdGQPCzhxNYuOthxQ - test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-8: OqhBGIy9TgmCb1kB6mZjFg - test-linux1804-64-tsan-qr/opt-web-platform-tests-webcodecs: Da1XSRdsT5u_abhtfxAEEQ - test-linux1804-64-tsan-qr/opt-xpcshell-1: MyLzZIL1Sc-ytoPvzwn83g - test-linux1804-64-tsan-qr/opt-xpcshell-10: fp0OdvZKTFOYXOSqRrlK1g - test-linux1804-64-tsan-qr/opt-xpcshell-2: Ns_TDtWkT-ewyUifbvBzaA - test-linux1804-64-tsan-qr/opt-xpcshell-3: ZIJW_N_QS_6BTuI3Ali_Ag - test-linux1804-64-tsan-qr/opt-xpcshell-4: bBXYWEM3SJmLMzVa7y6IpA - test-linux1804-64-tsan-qr/opt-xpcshell-5: O6n_yGzZSBu3Q0GP8NGOtQ - test-linux1804-64-tsan-qr/opt-xpcshell-6: PtJE27tpTo6agX5B1gfmKQ - test-linux1804-64-tsan-qr/opt-xpcshell-7: cDfsADcmSDaS5Z_lo4A5kg - test-linux1804-64-tsan-qr/opt-xpcshell-8: OwziidTFSy-3jULh7shmBQ - test-linux1804-64-tsan-qr/opt-xpcshell-9: c5nCKdKgR_CyR8w806GhXw - test-linux2204-64-wayland-shippable/opt-cppunittest-1proc: J1p9A9bFQVydIJd_RC7wlA - test-linux2204-64-wayland-shippable/opt-crashtest: GqmBG3StSuWpA9lgamZUKA - test-linux2204-64-wayland-shippable/opt-icecat-ui-functional: N-PNbuEoQtCjfQ87IZBkNA - test-linux2204-64-wayland-shippable/opt-mochitest-a11y-1proc: AmB-ZTLiTdmNrZizDl84yA - test-linux2204-64-wayland-shippable/opt-mochitest-browser-media: FnHIxF1FTO-a1e1mVeL70g - test-linux2204-64-wayland-shippable/opt-mochitest-browser-translations: dM-SXWITThCL6AO_894PKA - test-linux2204-64-wayland-shippable/opt-mochitest-chrome-gpu-1proc: PKHY6ztSTMKtZ7z65OGKrQ - test-linux2204-64-wayland-shippable/opt-mochitest-plain-1: ZU16V-pDQvuw7zLuJ0GEaQ - test-linux2204-64-wayland-shippable/opt-mochitest-plain-2: JXW7eudIRralngGJrd91iw - test-linux2204-64-wayland-shippable/opt-mochitest-plain-3: WRB3rfFmQHiuutG2FkXQNA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-4: BWBTRAXMQeKMxxn7-mdLyA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-5: f_45mdfxR-On77ZCJp1MBg - test-linux2204-64-wayland-shippable/opt-mochitest-plain-6: WpBDtC6GTtKEv0g6ZblMxA - test-linux2204-64-wayland-shippable/opt-mochitest-plain-7: SQyoHiL_RlCQc0WgBTt02Q - test-linux2204-64-wayland-shippable/opt-mochitest-plain-8: fsBhvdlNTe-ur7iTwsQ5Ig - test-linux2204-64-wayland-shippable/opt-mochitest-plain-gpu: HgQ1cjBlRAyI5jOs2ASYFQ - test-linux2204-64-wayland-shippable/opt-mochitest-remote: KJ0mMmmvSF-OS98lJIH0Uw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl1-core: YV9bV8UGRLOdoCYvUCVNNA - test-linux2204-64-wayland-shippable/opt-mochitest-webgl1-ext: YmteotQATiS-oVZicZkRXw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-1: Cy2yKYINSoGTdMQVHsFahw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-2: GA2-TEwAS_Kli4PuofRRzQ - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-3: KpPDqpOFTz2NjLIOgClacw - test-linux2204-64-wayland-shippable/opt-mochitest-webgl2-ext-4: ZHq0bhE5QW67nkwRysxGKg - test-linux2204-64-wayland-shippable/opt-telemetry-tests-client: PJ8z0LPFRBGkscQ7U13q5g - test-linux2204-64-wayland-shippable/opt-web-platform-tests-crashtest: akutljoDRACCkVeAEca3gA - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-1: G7z7NwmNRAiYZQWCJGuFgQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-2: G9ryZS0RTM21iT8i-vPkpQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-3: BqRYKbAyRrCoVJKN0WRemw - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-4: cUPskFAQSw-1N22gGMhRJQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-5: QpJdt-0_Qk-Zf50JW52Mng - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-1: dOtA0rn4QL6wlZzsfWcEJg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-2: Y67N3EmHSZmtcfUYWN0KQg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-3: f8A0qcCfRuW9qKPCD3Eu_Q - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-4: VxhjrJ_kQbyzMoqhtzRKEg - test-linux2204-64-wayland-shippable/opt-web-platform-tests-wdspec-headless-5: baHboWqDTRi953xAjsL_WQ - test-linux2204-64-wayland-shippable/opt-web-platform-tests-webcodecs: UoJSy0J2QPKlS91um7Uvdw - test-linux2204-64-wayland/debug-cppunittest-1proc: AyQq-S9wQhaMGqShcQfdMw - test-linux2204-64-wayland/debug-icecat-ui-functional: Ita8j52uQN2TAmjaSKUBgA - test-linux2204-64-wayland/debug-mochitest-a11y-1proc: CATOk57-Su2kggkI9ofjBQ - test-linux2204-64-wayland/debug-mochitest-browser-media: Y9weoKoHTXKhK4LdnOTk8A - test-linux2204-64-wayland/debug-mochitest-browser-translations: XkDKYnoNTCuCUKclmma_fQ - test-linux2204-64-wayland/debug-mochitest-chrome-gpu-1proc: RV3k674YQWSHsi7GMGlSoA - test-linux2204-64-wayland/debug-mochitest-plain-1: PXExMJT8Sya31zJp5pkJ4A - test-linux2204-64-wayland/debug-mochitest-plain-10: MHbMg07kSEqxJxtCwCOb-w - test-linux2204-64-wayland/debug-mochitest-plain-11: Wrmj9bYZSkuEcRXyakWa6A - test-linux2204-64-wayland/debug-mochitest-plain-12: ZWDeZ0OZSaK80hg-MTAIng - test-linux2204-64-wayland/debug-mochitest-plain-13: HPiWuqygTKixpLUEz603wA - test-linux2204-64-wayland/debug-mochitest-plain-14: N2E1uVjSQJOTCDp48BuRdA - test-linux2204-64-wayland/debug-mochitest-plain-15: ZaWhmmhKS3KhFjIoJdB4xA - test-linux2204-64-wayland/debug-mochitest-plain-16: HJKQRLXpQlmQAy1E4NYJlA - test-linux2204-64-wayland/debug-mochitest-plain-2: Gv2f5OsKQ2iROr1OeZKLIg - test-linux2204-64-wayland/debug-mochitest-plain-3: fb6iTplURXyIVOwM48D6ew - test-linux2204-64-wayland/debug-mochitest-plain-4: L_e9KFt5T9qbgtk90wiRvw - test-linux2204-64-wayland/debug-mochitest-plain-5: GKeBBSNcTPqA3pX6dC_5CA - test-linux2204-64-wayland/debug-mochitest-plain-6: Xbj2wToIT4uxrOITV7SflA - test-linux2204-64-wayland/debug-mochitest-plain-7: J6QN59F-Qzq69U60slwJOw - test-linux2204-64-wayland/debug-mochitest-plain-8: R20pR2Z-SZGD4neqhxJwcA - test-linux2204-64-wayland/debug-mochitest-plain-9: EyQnoEFbRCu-1ROwqd-HLg - test-linux2204-64-wayland/debug-mochitest-plain-gpu: fwa7Avq7TMimCDOmxaoF1A - test-linux2204-64-wayland/debug-mochitest-remote: QlxZByxERZitop2diy_efg - test-linux2204-64-wayland/debug-mochitest-webgl1-core: W_NJ5_IeSrqZksDIvoY-RQ - test-linux2204-64-wayland/debug-mochitest-webgl1-ext: RdxbDGE_TuyjhM81wqHuTQ - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-1: OI8-q2j7QwK8txylOu1Gkw - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-2: aTvKL-F4Tg23FtzG0JLv5w - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-3: XpWNQgkkT1qT29uDiJfXcw - test-linux2204-64-wayland/debug-mochitest-webgl2-ext-4: OjFmHjhzRFCnRMZ0Iq7_tA - test-linux2204-64-wayland/debug-telemetry-tests-client: U1soooMJTAi3GgVutpWSqg - test-linux2204-64-wayland/debug-web-platform-tests-crashtest: PXjbQXMQQcOw2Mk9DfYPcw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-1: bDvszWxZTX2V1y7NdMyVRw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-2: eSGnEsg_QTC8K3zLSGwLvQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-3: DIl6EHMORcyplxEpmfvDBQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-4: CBk0ySMKTSS6O47r401Kuw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-5: IFeJVEi3RhChWztOZtFEGw - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-6: RD9CPdOFRzysZciwCtWz9Q - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-1: A-rOaWEdQCu0hctrf8sj8g - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-2: ElPRSi7sTemyiYpnN0CNRA - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-3: BUAtKMQzQpCFrT6_qIVulQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-4: ZQuuRbwzTPaKmL9iYnMQQQ - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-5: cCmRPJK6RY2PAWo_A5n_KA - test-linux2204-64-wayland/debug-web-platform-tests-wdspec-headless-6: dXutih7hTzWfTcZlwGzIfw - test-linux2204-64-wayland/debug-web-platform-tests-webcodecs: V8u0KQJwQyqe9a_hDu9XOg - test-macosx1015-64-qr/debug-cppunittest-1proc: XP3CUfbEQlCtPKnw6YU7yg - test-macosx1015-64-qr/debug-crashtest: PF4RmHSnQmenXJTg-2qH-w - test-macosx1015-64-qr/debug-crashtest-ioi: KsVleiSuQY2u7QlOeBsjVA - test-macosx1015-64-qr/debug-crashtest-swr: bPhSvpCFSHGMCTXIP2T7og - test-macosx1015-64-qr/debug-mochitest-browser-chrome-1: Mhokm979Rdek52uVHrmR-A - test-macosx1015-64-qr/debug-mochitest-browser-chrome-10: dUEhy1AeS52D-7OmGoB8BQ - test-macosx1015-64-qr/debug-mochitest-browser-chrome-11: alHW-FUfR5ClpbhP0QMeYg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-12: Yods_YbYT7iWehTXDfB1Tg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-2: e5IQIHBhSPWdE3_lFdiBsg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-3: E29rRsN2SoKfNEWIugkKRg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-4: C13QK-ydT_S8P3QaTLkLvA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-5: LgXPJjSZSDykNIKMdS3h5Q - test-macosx1015-64-qr/debug-mochitest-browser-chrome-6: N2ZG5YbhSkCH6d4J63zhWg - test-macosx1015-64-qr/debug-mochitest-browser-chrome-7: IsvIt_lbSBqI1xAZc1SQgA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-8: AIQ8uwaGS26FHtNleBCwYA - test-macosx1015-64-qr/debug-mochitest-browser-chrome-9: Tm4SXSnMRpm6h3w67IQnBg - test-macosx1015-64-qr/debug-mochitest-media-1: QIpnmwKjQc-aShrqBvgqLQ - test-macosx1015-64-qr/debug-mochitest-media-2: AWzVjqtYRZmPzHJNyFuHrQ - test-macosx1015-64-qr/debug-mochitest-media-spi-1: HbipiBQSRMWQV2iEd559xQ - test-macosx1015-64-qr/debug-mochitest-media-spi-2: R4dk5hxKQDaZIQ3T3x8qrw - test-macosx1015-64-qr/debug-mochitest-webgl1-core: TcbKgCUGRqCQlKz-C-NuIg - test-macosx1015-64-qr/debug-mochitest-webgl1-ext: B5z21vLDT02sW4BIxXoWxQ - test-macosx1015-64-qr/debug-mochitest-webgl2-core: EYulm87oRduBx_jmUgC2Ew - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-1: P9-ekwWiTuGMUOXrG_zNIg - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-2: BLL74ghrRpqO0bq3e948vA - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-3: LapbT7qIQiukpYg66su2ug - test-macosx1015-64-qr/debug-mochitest-webgl2-ext-4: S4kav91JRG2U2h_jOUrPAQ - test-macosx1015-64-qr/debug-xpcshell-1: PjONvbQNTtq_lykhwm2vjg - test-macosx1015-64-qr/debug-xpcshell-2: O8ipcFchTw-MoXk7ux-Brg - test-macosx1015-64-qr/debug-xpcshell-ioi: Pcv04TZlSF-wzSfGzQX3cA - test-macosx1015-64-shippable-qr/opt-cppunittest-1proc: dRqVTFf8R7qDBhOrg_6RMA - test-macosx1015-64-shippable-qr/opt-crashtest: FUc9YLZ5R22kPh46mUY73A - test-macosx1015-64-shippable-qr/opt-crashtest-ioi: FlRnWaMcQom0zU5L7Exfrw - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-1: Z2u5b0O7SlKPOsE35WegSg - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-10: BH-JKVEfRva0_6fBgUla_A - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-2: QJ9xRhzmSqqJIk6QIgXXIg - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-3: Q4ckEfKYTcqyhmQxMXwwEA - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-4: cA_781g_TQihFdsscNY9dw - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-5: CNtuPWGNTOi3Ye77TC_How - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-6: Hitr-oh5QJy3GDI-c7C18A - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-7: IJOt4djUSnOgW5DClpIEWA - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-8: EK8AqJH-RiOFecUYLMeIwQ - test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-9: SBp_BmlwRByEAPImulKRWg - test-macosx1015-64-shippable-qr/opt-mochitest-media: aDRUeTtdStK45itiW0jcIA - test-macosx1015-64-shippable-qr/opt-mochitest-media-spi: AglzIkkfQCOcXl6iJKrvGw - test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-core: YWfCnEw2SjSLX62LghPUYQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-ext: ERIG7W1kTrKTmGyHHkOJ0Q - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-core: PTeTZAUTTKCZotUUyuqXsA - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-1: GF359bv-SO6CfXThhDxh2Q - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-2: CGmRFPelSYex_p02HpmhdQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-3: V-vZStDMThazltKtqcWNJQ - test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-4: KWr4d0i2RQKgDRewYuZ6eA - test-macosx1015-64-shippable-qr/opt-xpcshell-1: NHsVfyDyTfqqceZ1AkjEJA - test-macosx1015-64-shippable-qr/opt-xpcshell-2: AtSeGNR7QmK0hv6k_T1yjA - test-macosx1015-64-shippable-qr/opt-xpcshell-ioi: UBs1ZJ2MTmKK40DmFhj6Zw - test-macosx1470-64-shippable/opt-cppunittest-1proc: OAE5V5yUTOCEM7DtCEwTvQ - test-macosx1470-64-shippable/opt-crashtest: fHxod8WqR8ukDesgQZ6bWQ - test-macosx1470-64-shippable/opt-crashtest-ioi: QEtUwuXkSjOoHM4p1nZ0Fw - test-macosx1470-64-shippable/opt-icecat-ui-functional: Plew-c2LQVGitDWjSTK2bQ - test-macosx1470-64-shippable/opt-gtest-1proc: F8VX2e4-RYee6Cq3XF5Wew - test-macosx1470-64-shippable/opt-gtest-ioi: McJsqtj1Rja-i7rIp00Ybg - test-macosx1470-64-shippable/opt-marionette: E9hRpNvgTv27Xb2j2vE5gg - test-macosx1470-64-shippable/opt-marionette-ioi: MY5YPAwyQB-x-LHAUyYt0g - test-macosx1470-64-shippable/opt-marionette-unittest: HdC8iw7wS9S8evELHKIVhQ - test-macosx1470-64-shippable/opt-mochitest-a11y-1proc: b-BTMcVmQWqPU2ILwY6fuA - test-macosx1470-64-shippable/opt-mochitest-browser-a11y: KR59ARoZQCmWYjERg6H9aA - test-macosx1470-64-shippable/opt-mochitest-browser-media: f5M3_2jTSjyD0Gb5_Mjsow - test-macosx1470-64-shippable/opt-mochitest-browser-translations: MLI2A6a_SY-pC8lFVeVH2w - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-1: E8LlJaDKTRadRX4-8QvXTQ - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-2: ZRFIR6MkQGWhJ2IX6ki2rg - test-macosx1470-64-shippable/opt-mochitest-chrome-1proc-3: Hk21X4iiRJKBs43Bdm3F2Q - test-macosx1470-64-shippable/opt-mochitest-chrome-gpu-1proc: UDdmgGCbS6-BapTDG1oK8Q - test-macosx1470-64-shippable/opt-mochitest-chrome-ioi: II9Le-NBRQWc2SOyPokEIQ - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-1: JwX-6v7jQziwRpM8PRcUzw - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-2: G1Ge0-w0TRSydmdzGC0EpQ - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-3: LEbYKX1iSKyO7C-DrDEtmA - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-4: Pm-GVJfUQlmMP4AFGnc89A - test-macosx1470-64-shippable/opt-mochitest-devtools-chrome-5: GakAQL-WRuSSZ2FGkv_TPw - test-macosx1470-64-shippable/opt-mochitest-media-spi: buETLG5UQhq9a_tbgE9DDw - test-macosx1470-64-shippable/opt-mochitest-plain-1: QYxbDDpVSKupRcQ878bHQg - test-macosx1470-64-shippable/opt-mochitest-plain-2: JnY2ATb3RYe287GSsCPRWA - test-macosx1470-64-shippable/opt-mochitest-plain-3: Jv5rc9wVR7-i6ObCK_oqfg - test-macosx1470-64-shippable/opt-mochitest-plain-4: Q9AZxIZMS9SahHb2sG3WhA - test-macosx1470-64-shippable/opt-mochitest-plain-5: QPCdsx77TZqbN14rJXEC0Q - test-macosx1470-64-shippable/opt-mochitest-plain-gpu: C1ImcaXXRFW88fnnLtvK2A - test-macosx1470-64-shippable/opt-mochitest-plain-ioi: FcCMovGmSw63ITzldijppA - test-macosx1470-64-shippable/opt-mochitest-remote: ME_gUIpERguhX7iunL9DWw - test-macosx1470-64-shippable/opt-mochitest-webgl1-core: C61EjVUQTGSQSYuYVwOl8A - test-macosx1470-64-shippable/opt-mochitest-webgl1-ext: JQO7_83yTRy9HaOVapv3aw - test-macosx1470-64-shippable/opt-mochitest-webgl2-core: DUEW4qquQXCgBGY9KKEzzQ - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-1: BZ0Oeza8Tqq2Ey_l0nWczw - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-2: O5njsb43Su6rOLLnSGh0Jg - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-3: G_h0pLe1T82Q2OOj3aLUYw - test-macosx1470-64-shippable/opt-mochitest-webgl2-ext-4: ZJlgvBZ0R_ieUFY5iGmt1w - test-macosx1470-64-shippable/opt-reftest-1: GXHsZFNPRvKV9EouXIuFwQ - test-macosx1470-64-shippable/opt-reftest-2: S93MbDJUSMyxnNtx7cBD8g - test-macosx1470-64-shippable/opt-reftest-3: Q9n12M5jT8mdSmMeJSgQpw - test-macosx1470-64-shippable/opt-telemetry-tests-client: DpNo040lSwmLmTFbYkq9rg - test-macosx1470-64-shippable/opt-web-platform-tests-1: SQFEDFFJQ8eI9M0xn-7b6A - test-macosx1470-64-shippable/opt-web-platform-tests-10: K9sFaUShQRudzQyAWlETCg - test-macosx1470-64-shippable/opt-web-platform-tests-2: fskTbx8hRJGuYC0nXxUS8A - test-macosx1470-64-shippable/opt-web-platform-tests-3: S2F2s7DGTVmEkZK-TFSEFA - test-macosx1470-64-shippable/opt-web-platform-tests-4: O03R1CfNTZiS-U9N-dijEA - test-macosx1470-64-shippable/opt-web-platform-tests-5: R84cvwzIS5eGeTiR2uhIwA - test-macosx1470-64-shippable/opt-web-platform-tests-6: I5GMs88lQeiBw9C-KH3lRw - test-macosx1470-64-shippable/opt-web-platform-tests-7: GcXPrB4fRqWsiBSMGnOWxw - test-macosx1470-64-shippable/opt-web-platform-tests-8: D6UfVbrcRgW66ekJaxTWHg - test-macosx1470-64-shippable/opt-web-platform-tests-9: cbHkUriMSMi66xxCS8oasQ - test-macosx1470-64-shippable/opt-web-platform-tests-canvas: SAjdGnb7Sr-4gE5wELhydQ - test-macosx1470-64-shippable/opt-web-platform-tests-crashtest: bZmGERB_Q6SR1WxvfS-xbg - test-macosx1470-64-shippable/opt-web-platform-tests-eme: M3hytLTGSxKufsTcUjQmRw - test-macosx1470-64-shippable/opt-web-platform-tests-ioi: TS_PV2c7Rv20WJxKS40ZlA - test-macosx1470-64-shippable/opt-web-platform-tests-pb: ej4Y5JgaRyKgSlrxFn_X0Q - test-macosx1470-64-shippable/opt-web-platform-tests-pb-ioi: TBMmES9HQwmQuWaYzaha-Q - test-macosx1470-64-shippable/opt-web-platform-tests-print-reftest: PYXqlk_nR9q31qq4cWXv-g - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-1: XhGBxDFQQZSzUmz1mtNOcA - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-2: ErI-JGtoRUOgW8V0MVbPBg - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-3: eoBnbvegSSm5lg-v5DTGHQ - test-macosx1470-64-shippable/opt-web-platform-tests-reftest-4: L7d5w6FATMqcCDdlo_CojA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-1: Mpw_m796RX22rlRvDtAFWg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-2: F82Wa--eQEayH8u-0Vo4Qg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-3: CZMZAuVkRICcQ6mWvq_5qw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-4: K0wO22NWQpyDFyDNV8vcbw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-5: PIPWl_j7QBuycTNl6aOmjA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-1: JeJUlrxzRQerTlkEd3-wYg - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-2: D4PwFUgVTvaF6JMwzDUmsw - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-3: JSxZ4XBTR2OnIXQ2uOyFgA - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-4: TKlzBGoiSnCzn67cVmPMMQ - test-macosx1470-64-shippable/opt-web-platform-tests-wdspec-headless-5: DuiiWtFDRnCe-pf7fwUAUw - test-macosx1470-64-shippable/opt-web-platform-tests-webcodecs: GUDGrt5yRvS1JLfYycMi3g - test-macosx1470-64-shippable/opt-xpcshell-1: EI3l-Q02QAa3VmE8OpLonw - test-macosx1470-64-shippable/opt-xpcshell-2: FSgas5EBRnau2UXFsHKLzw - test-macosx1470-64-shippable/opt-xpcshell-ioi: Bk3lhT9bSjuHhtYBstaQaw - test-macosx1470-64/debug-cppunittest-1proc: aqTK-QpzTrOKQ1k0_6K66g - test-macosx1470-64/debug-crashtest: JhE8MSuIQ56v1GH3ZvKfvg - test-macosx1470-64/debug-crashtest-ioi: EAH3F2FsTQG_C2rB61GJxg - test-macosx1470-64/debug-crashtest-swr: YEwS5DZ3TWylbhcZ9-tu-w - test-macosx1470-64/debug-icecat-ui-functional: GBORd1rcSp2NkyIOI_ccxA - test-macosx1470-64/debug-gtest-1proc: aafGdy7CTL6SIFeZV-Qeyg - test-macosx1470-64/debug-gtest-ioi: MeXDXjuCSuW6CdwieCXV2A - test-macosx1470-64/debug-marionette: X804mPPsTW6-uNJ_I_831w - test-macosx1470-64/debug-marionette-ioi: Zk0x4x4qToSLUXrOav00NQ - test-macosx1470-64/debug-marionette-swr: BQaCwe6gQSeuVbP6auAARw - test-macosx1470-64/debug-marionette-unittest: NanznSLsTl2eaKXmBJgrsg - test-macosx1470-64/debug-marionette-unittest-swr: JSLGkkw1Tf-s9-yZaiJuiA - test-macosx1470-64/debug-mochitest-a11y-1proc: BxggIn2gQI-ujB4yqo3PJg - test-macosx1470-64/debug-mochitest-browser-a11y: TCECJTCIR-qeKdAwNCX7nQ - test-macosx1470-64/debug-mochitest-browser-media: OF7ViSHQS2yFEl368241vA - test-macosx1470-64/debug-mochitest-browser-translations: NlmCUCVgS4mV9WSrcoyuqg - test-macosx1470-64/debug-mochitest-chrome-1proc-1: T9A7esMOSdSwmAJcgrPRmA - test-macosx1470-64/debug-mochitest-chrome-1proc-2: AWLWkqiTQkq2OPMR3ongxQ - test-macosx1470-64/debug-mochitest-chrome-1proc-3: Tv168Qa_S9eJvYzDCmT9pg - test-macosx1470-64/debug-mochitest-chrome-gpu-1proc: Q-LHB014Q6WAVY4yWb1HNQ - test-macosx1470-64/debug-mochitest-chrome-ioi: IujR0sc6SgSpdSzRSgdKIw - test-macosx1470-64/debug-mochitest-devtools-chrome-1: KXtXxM-8S0ePAhWhO8vr1A - test-macosx1470-64/debug-mochitest-devtools-chrome-2: amVFR9ZUR9WbbTHt_Dig8A - test-macosx1470-64/debug-mochitest-devtools-chrome-3: YEjJk5_6QsK50V-G02phHQ - test-macosx1470-64/debug-mochitest-devtools-chrome-4: C0EjhGcAQA6MZbL1Z8OM8w - test-macosx1470-64/debug-mochitest-devtools-chrome-5: PEj8qeamRhqRiZapkxkkJw - test-macosx1470-64/debug-mochitest-devtools-chrome-6: Ud9KoRjVRV22S1Oow_f7BQ - test-macosx1470-64/debug-mochitest-devtools-chrome-7: Sf9Eq0JfT3a3dKnfDzg5Qg - test-macosx1470-64/debug-mochitest-devtools-chrome-8: OGijaQeiQ52WWEPmHFtEmg - test-macosx1470-64/debug-mochitest-media-spi-1: NdTaW6JzQeCJ1pMHr5Z_1Q - test-macosx1470-64/debug-mochitest-media-spi-2: U4QFbBBiQmuWpHLvWp4v7w - test-macosx1470-64/debug-mochitest-plain-1: UaNisTinQi2a-l-XKCcYlA - test-macosx1470-64/debug-mochitest-plain-2: GWOdS4gZRRi0rjzuSCIVBA - test-macosx1470-64/debug-mochitest-plain-3: IW4IeAuNTiWI9bLFIkfIQA - test-macosx1470-64/debug-mochitest-plain-4: VPKtCcYaRlqT5KuXy94hQg - test-macosx1470-64/debug-mochitest-plain-5: el16JNSGQMyDqP4HGICiYA - test-macosx1470-64/debug-mochitest-plain-gpu: SETSuZ8tSAayu5k4U6CN8A - test-macosx1470-64/debug-mochitest-plain-ioi: c4lUO8iPTvapWW3zSOKBcQ - test-macosx1470-64/debug-mochitest-remote: cCoRttGiRqOJ0_b9BMIeWg - test-macosx1470-64/debug-mochitest-webgl1-core: DfJLmCuUTZaIgvmI-2BfFw - test-macosx1470-64/debug-mochitest-webgl1-ext: IJmKxueDR2maraXhZE9nmg - test-macosx1470-64/debug-mochitest-webgl2-core: GFcz2aNOQpuV-kI7kekYwQ - test-macosx1470-64/debug-mochitest-webgl2-ext-1: VZuo9RaYTMmhhrj4RdxRJw - test-macosx1470-64/debug-mochitest-webgl2-ext-2: TiCX0Zs2RpaFcnhMTsx5VA - test-macosx1470-64/debug-mochitest-webgl2-ext-3: c9tq2bPGT46P6uDQi3c_nw - test-macosx1470-64/debug-mochitest-webgl2-ext-4: KZLmyQNFTGmYY38iukR-Ww - test-macosx1470-64/debug-reftest-1: aDManJzaQHWq4pjmVmrYPg - test-macosx1470-64/debug-reftest-2: F9arW-u5Sk6ZE-WxEojgmw - test-macosx1470-64/debug-reftest-3: B3JGco_fQUqzFVoK27Jcjw - test-macosx1470-64/debug-reftest-4: Uw_XGD99S1S4Vm1fQVRYQg - test-macosx1470-64/debug-reftest-5: KkKImCGsSIGRz1UvdJSIBw - test-macosx1470-64/debug-reftest-6: S9bd7AG8Tw2bcU3W0uH67w - test-macosx1470-64/debug-reftest-swr-1: BI5ze1o4Qi6hpJ2o0PBa1A - test-macosx1470-64/debug-reftest-swr-2: cjPrpcNOQJKbkpC2jcjwxQ - test-macosx1470-64/debug-reftest-swr-3: D1mG5gXjQC2kLN0PqlumyA - test-macosx1470-64/debug-reftest-swr-4: ZcZoAifqSD6EMhak8UHHpw - test-macosx1470-64/debug-reftest-swr-5: DL-QR74BQQOM7WciDi8hVQ - test-macosx1470-64/debug-reftest-swr-6: ZICHgwTAQLqaFxhbh1l1XQ - test-macosx1470-64/debug-telemetry-tests-client: Qwr-n7SFSFuAYTcsGXiblg - test-macosx1470-64/debug-web-platform-tests-1: A1Na7pcQTw6a_hoqGLCkCg - test-macosx1470-64/debug-web-platform-tests-10: XfMLJ4v9S8ybZCk7h2JqMQ - test-macosx1470-64/debug-web-platform-tests-11: de4WQ4P6TWiBCRhyDx65BA - test-macosx1470-64/debug-web-platform-tests-12: UxSMTLc-RByD9Y5KNoAR6w - test-macosx1470-64/debug-web-platform-tests-13: dNUkWX9mT9C_15S5sfP7ng - test-macosx1470-64/debug-web-platform-tests-14: cIcKSmZsTEW5R6_--DlrIA - test-macosx1470-64/debug-web-platform-tests-15: RueaFqAMSdiQBUM8xvRG8w - test-macosx1470-64/debug-web-platform-tests-16: fb0njdPRT6iRYcTHnn0ixw - test-macosx1470-64/debug-web-platform-tests-17: QD21QoNeS-6rd0zAugOsfw - test-macosx1470-64/debug-web-platform-tests-18: BCU69ybxRHWbZqvYubshNw - test-macosx1470-64/debug-web-platform-tests-2: UsFJa1vvSyOc4VFiehIdMg - test-macosx1470-64/debug-web-platform-tests-3: LvpxMrrfTgSSIiRwAnpWIg - test-macosx1470-64/debug-web-platform-tests-4: SKZo7fQ2S-uPLuybmAPBgA - test-macosx1470-64/debug-web-platform-tests-5: OdFhtK6lRkOTmTuskDQUrA - test-macosx1470-64/debug-web-platform-tests-6: HTP85PZYQjKokrOnYaYtCA - test-macosx1470-64/debug-web-platform-tests-7: dCO-h059QbOQ5RUvU5ImkA - test-macosx1470-64/debug-web-platform-tests-8: CcK1ihJzTl-g505EkzkAGA - test-macosx1470-64/debug-web-platform-tests-9: E8OysAxESKOnpKAhr9PiMQ - test-macosx1470-64/debug-web-platform-tests-canvas: ZGD6A5uuQZSIFqLwSyFjhw - test-macosx1470-64/debug-web-platform-tests-crashtest: XpS6v9FFR_yVMzxSYIiKMw - test-macosx1470-64/debug-web-platform-tests-crashtest-swr: dqm9h6HQQx6ZEw3SVZygwQ - test-macosx1470-64/debug-web-platform-tests-eme: CVM1WcImR3W9X3JjPJocLg - test-macosx1470-64/debug-web-platform-tests-ioi: GHkJ7SczToSKvCNrqqZcaA - test-macosx1470-64/debug-web-platform-tests-pb: c8dfGmpiTcuQItr1aoArpQ - test-macosx1470-64/debug-web-platform-tests-pb-ioi: ZSyK03KWSCqKIsUgIw6Cew - test-macosx1470-64/debug-web-platform-tests-print-reftest: eaFizwnKQNi-M5WSqdLN6Q - test-macosx1470-64/debug-web-platform-tests-reftest-1: QIfZmwx8Q6KuqV53BretTw - test-macosx1470-64/debug-web-platform-tests-reftest-2: NnIgZ1l-TA6udUKlxQdYlQ - test-macosx1470-64/debug-web-platform-tests-reftest-3: V4qYSSlxQv24GxB39VwTlw - test-macosx1470-64/debug-web-platform-tests-reftest-4: Q_cxGC0uSwK0O759quZdEw - test-macosx1470-64/debug-web-platform-tests-reftest-5: KNN2epNnS9GyScwWShXsmQ - test-macosx1470-64/debug-web-platform-tests-reftest-6: OPW-vEFmRT-phJ7VTEtokA - test-macosx1470-64/debug-web-platform-tests-wdspec-1: da-0By9nRDaDmZJCdCQAKg - test-macosx1470-64/debug-web-platform-tests-wdspec-2: ExDIsVaXTU2Bb_xVASzRMA - test-macosx1470-64/debug-web-platform-tests-wdspec-3: H91ZFAG_RdSRrYCAr7cZeQ - test-macosx1470-64/debug-web-platform-tests-wdspec-4: A22cD1YLRVqM88BSFu2tUA - test-macosx1470-64/debug-web-platform-tests-wdspec-5: D_D7AY0FTaG4PEFHLleYJw - test-macosx1470-64/debug-web-platform-tests-wdspec-6: OVOAcieYRhC9lgtUWEI_Lw - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-1: WJ1-J3CVS-2sHztim4gaTA - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-2: ZsnmUecRT6mAIZksObfpDg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-3: RxeK3ebtTw-dwYpe0vQdfg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-4: U6dZeQygR0e5sgv3YqmCow - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-5: TxYDDS6AQM6rSwdyWpmvrg - test-macosx1470-64/debug-web-platform-tests-wdspec-headless-6: GJc4bYfMTA2eLjFDmAYw9g - test-macosx1470-64/debug-web-platform-tests-webcodecs: bdMWbKTbQkGml7RzCu2wEA - test-macosx1470-64/debug-xpcshell-1: d4K5l2thS62gvRVBhyVfRQ - test-macosx1470-64/debug-xpcshell-2: dvPBXS5gQSKfWxAm3xvyhg - test-macosx1470-64/debug-xpcshell-ioi: QAo9yXvOSISJM5qhnlgDnw - test-macosx1500-aarch64-shippable/opt-crashtest: XUtPGEOiSv2rwfla6H-U_w - test-macosx1500-aarch64-shippable/opt-crashtest-ioi: EtTdoNTpTI6scH83R-gkUg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-a11y: Q3YVz9IkQoamwS4fYb4KDQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-1: D_XGKycURgeWpELuwaS4dA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-10: Taz7SU6DQaCDZ4Qt_7Zgpg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-2: C3F1hdHeSlO9JDCsWjh6XQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-3: Ys6FpZoaTbuBDXzREv8WVQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-4: Kp-cDcPUSJGdaMjtI1aUJw - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-5: Co41Oi5jSMmhiAj3iuQKYQ - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-6: b4e6SE3WQ5-IxS2wa91Hyw - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-7: ZA2rm5_rQr2lesQOmycotg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-8: PjDwPNlUSi27c5e5Ia_LDA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-chrome-9: A7iEmkCgRZ2IndyVUtRsbA - test-macosx1500-aarch64-shippable/opt-mochitest-browser-media: eobwuHzuSLGwwcD8Sy-Ksg - test-macosx1500-aarch64-shippable/opt-mochitest-browser-translations: L1oDKd1mSuuPp_c5zbvdTg - test-macosx1500-aarch64-shippable/opt-mochitest-chrome-gpu-1proc: cSkfNevtQE2iWg1zfrkiYA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl1-core: JbKE-tgaRjGYb6_i3chqEA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl1-ext: YgHvfcgZRqC0Q0UWqCKbKA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-core: RDC30pLrQteTLWkRevVcHQ - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-1: CD4tWZ67Q_m-TH2z2tjk_g - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-2: dVCP3uNyR5yu8x0mVZ1CgA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-3: TBXk0YcOSqaw96R8tC7zMA - test-macosx1500-aarch64-shippable/opt-mochitest-webgl2-ext-4: YKesTYaZRj-ODKHdK5UoZw - test-macosx1500-aarch64-shippable/opt-reftest-1: WK2Sd5cQSrSEQHECbsUMgQ - test-macosx1500-aarch64-shippable/opt-reftest-2: YaYlc7AFSmu1mAtK-AC_xw - test-macosx1500-aarch64-shippable/opt-reftest-3: eqXxE19eRmmWoWidoRQ6og - test-macosx1500-aarch64-shippable/opt-reftest-4: SkQ3lSNxR0KeY4CnTlvbNw - test-macosx1500-aarch64-shippable/opt-reftest-5: Uxh09kOeS321lzxLiolPTA - test-macosx1500-aarch64-shippable/opt-reftest-6: DY7RmtvCTLibZTDr22vhMg - test-macosx1500-aarch64-shippable/opt-reftest-7: DFOhB5RHS4StLUGUCGf22w - test-macosx1500-aarch64-shippable/opt-reftest-8: P1WIGAVDSQi-t_CJWBKHkw - test-macosx1500-aarch64-shippable/opt-web-platform-tests-eme: Pmo0qviAQVexG_myb5zXMQ - test-macosx1500-aarch64-shippable/opt-web-platform-tests-webcodecs: RnBy4dHOTr63st48pNd5Iw - test-macosx1500-aarch64-shippable/opt-xpcshell-1: WEoU-ns1S0-t-1tgUKSq4g - test-macosx1500-aarch64-shippable/opt-xpcshell-2: UuiERZSPQv22DRaVIoxYMA - test-macosx1500-aarch64-shippable/opt-xpcshell-ioi: eNZysvVLSrGSAt-5b1k7Tg - test-macosx1500-aarch64/debug-cppunittest-1proc: blzfqOfaR4uweVku4ZsH_g - test-windows10-64-2009-qr/debug-cppunittest-1proc: a4OLa7VxRquglRpi77MTPQ - test-windows10-64-2009-qr/debug-gtest-1proc: Sj2qJFS2SfGf5GfwosBzag - test-windows10-64-2009-qr/debug-gtest-ioi: FvVlfiRrQxGJO2SY5w40fA - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-1: B-H-tXmISh-pHEyMMjMTEw - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-2: FrIgjvt4T8i8XoLgHrWxNQ - test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-3: UzGEl0ZdRWyMjba8MGKx2Q - test-windows10-64-2009-qr/debug-mochitest-chrome-gpu-1proc: f4YadnmsTqSLqB7mpJhCTQ - test-windows10-64-2009-qr/debug-mochitest-chrome-ioi: RGLPbAFaTPyNnEFvT3ycCA - test-windows10-64-2009-qr/debug-mochitest-plain-1: NIBvCwM3QRenoh5QHZ2fYQ - test-windows10-64-2009-qr/debug-mochitest-plain-2: VnvOIvjDTzipMOa0Q5ApgA - test-windows10-64-2009-qr/debug-mochitest-plain-3: FfEYW4VWSG-xxN5xxZxFhg - test-windows10-64-2009-qr/debug-mochitest-plain-4: GB0z0uiPT4CIltfX1dP7sQ - test-windows10-64-2009-qr/debug-mochitest-plain-5: N6PPabYiTHORhBSz68eX3w - test-windows10-64-2009-qr/debug-mochitest-plain-6: c4K1sDgDS_uinzK5Q9mIDw - test-windows10-64-2009-qr/debug-mochitest-plain-7: E2zLdclNSTGl90akQx1mWw - test-windows10-64-2009-qr/debug-mochitest-plain-8: WSx660G4SEGrVOc0Fw_94g - test-windows10-64-2009-qr/debug-mochitest-plain-gpu: WDng6A-eRliMTZX_5EanPw - test-windows10-64-2009-qr/debug-mochitest-plain-ioi: chFtECkaSdCT4tn89harWQ - test-windows10-64-2009-qr/debug-xpcshell-1: XsiU8xO0Tum2rBn41NkuKA - test-windows10-64-2009-qr/debug-xpcshell-2: GO8GcJasRV-tmRiteYzzXw - test-windows10-64-2009-qr/debug-xpcshell-3: S6ortWozSrWaCwhOEaDFxw - test-windows10-64-2009-qr/debug-xpcshell-4: J40dnn4EShiETQKU0x1DFA - test-windows10-64-2009-qr/debug-xpcshell-ioi: QOQXClkpRhqcRN_XzgeJgQ - test-windows10-64-2009-shippable-qr/opt-cppunittest-1proc: K1umEra5SduaJmN1Eu8uCw - test-windows10-64-2009-shippable-qr/opt-gtest-1proc: fIEbG4dtSzGoxQVjs0MxFg - test-windows10-64-2009-shippable-qr/opt-gtest-ioi: GDJfSHvdRvqSk1xh4m4Z3w - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: AMQzlSdZRCu_lCNuaJOd9A - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: MYiMzRSuQOmQHWZSj4rkkg - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: L-LzYFrbQ0eQXbiJJcpe_w - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: BxvSZVlZTYW-JLKqT_T92g - test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-ioi: MM0eHtn3Syqn4QJAFj6FXw - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-1: MxUIJoujSJiJP4m6QVVjaQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-2: ORiLz5bQRpi3F4W9M9t-aQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-3: LVbZ294CTWmbJ4RFwsuEwQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-4: CUfNxIxlSM2HhrAHmNqTLw - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-5: WflPESbRSeGCB2-q9reB1Q - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-gpu: BwYz10zQQNi5EUGIzfIpeQ - test-windows10-64-2009-shippable-qr/opt-mochitest-plain-ioi: Ldcuj97iRxKRhnlYvFpyVA - test-windows10-64-2009-shippable-qr/opt-xpcshell-1: UnHCRLfQS7WBmDofxsOB8w - test-windows10-64-2009-shippable-qr/opt-xpcshell-2: HvXHT1_HSyOB04w1m4TUJA - test-windows10-64-2009-shippable-qr/opt-xpcshell-3: G_i_DcO8TBuGIXRBaT92lg - test-windows10-64-2009-shippable-qr/opt-xpcshell-4: Yq8OqeW8R0KH14LnF4MY1A - test-windows10-64-2009-shippable-qr/opt-xpcshell-ioi: VZbn7Zy2Spefk1AjHA9NRw - test-windows11-32-24h2-mingwclang/debug-cppunittest-1proc: BexxFeGrS7-TCKl78u1g2g - test-windows11-32-24h2-mingwclang/debug-icecat-ui-functional: SDPsfqHORom4ImHtDA3F1w - test-windows11-32-24h2-mingwclang/debug-mochitest-a11y-1proc: Mbo2S_94SleOTnRws-94lQ - test-windows11-32-24h2-mingwclang/debug-mochitest-chrome-gpu-1proc: CM_3nc8EQeGe-LCHwfa8og - test-windows11-32-24h2-mingwclang/debug-mochitest-plain-gpu: NzYW0BzaTNWZdsnzTw_o0A - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl1-core: JQYC7vtUTeiH0NmZMW0p1Q - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl1-ext: TIQ9GcbfTAW3V_lLSK4i_w - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-core: CZL0lZcQSvKFTRfe69vCdQ - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-1: LXZAzIUES3qO8KnqCwc4Tw - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-2: C2YkjDEhTnGF_IQGmfneUw - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-3: dpuAD6DsT0WzTTdrlp27-Q - test-windows11-32-24h2-mingwclang/debug-mochitest-webgl2-ext-4: LEL9wkfSQ6CZvjKJTMfssg - test-windows11-32-24h2-mingwclang/debug-telemetry-tests-client: ZLl5WMJ_TPmQHUFvUJSBsA - test-windows11-32-24h2-mingwclang/opt-cppunittest-1proc: dGNXw093SD2vGhGUALEWRA - test-windows11-32-24h2-mingwclang/opt-mochitest-chrome-gpu-1proc: El0VRKdETA2vHVhzLp6Q0g - test-windows11-32-24h2-mingwclang/opt-mochitest-plain-gpu: SbH0hcDHSnKxpqpl0bllOQ - test-windows11-32-24h2-shippable/opt-cppunittest-1proc: X2Yd1PHaQs2NbE_c7aHDNA - test-windows11-32-24h2-shippable/opt-crashtest: O2WgnO2XS4KYRiAIS6dDaQ - test-windows11-32-24h2-shippable/opt-icecat-ui-functional: YzzmmcQqTCerpxTIafdJxQ - test-windows11-32-24h2-shippable/opt-gtest-1proc: Aw7gRVi8QsiCGoDWcBXzmA - test-windows11-32-24h2-shippable/opt-marionette: culTuNyaRDaZOkZTwjUs4Q - test-windows11-32-24h2-shippable/opt-marionette-unittest: cxdIOrkDRQuyuY_zSPNb0w - test-windows11-32-24h2-shippable/opt-mochitest-a11y-1proc: FQGfQKpYTa6YFWC85HW6TA - test-windows11-32-24h2-shippable/opt-mochitest-browser-a11y: OB2ePcBgSYqfvCzr_fXKUg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-1: ERa2XiJsT7SBx6l-YRoeTg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-10: BIyOImuKR7CXWeg0kGPfuw - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-2: MRxKqTYOQxqOr1Dl7RRfFg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-3: Hh57P6w8TgeGp8PymLWO0A - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-4: B5fdIumSQgWqpgmmZeUAyQ - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-5: JPTwMAX8RlSIqgDl0puQ2Q - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-6: IcIvMivaQOepoR6ZUNilIQ - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-7: T6td8CMDRjSlfSwCce60Pg - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-8: cQg9RwjfTcat7dVnf-pZ6w - test-windows11-32-24h2-shippable/opt-mochitest-browser-chrome-9: TyJ59SjtRTeLp7NzedfipA - test-windows11-32-24h2-shippable/opt-mochitest-browser-media: TNmOSYrIT6-PIJ0x_S5YbQ - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-1: amO5JZfATtagbkI35ncJOw - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-2: BAP_0rOwQ_-kM_ffozraDg - test-windows11-32-24h2-shippable/opt-mochitest-chrome-1proc-3: D34Ub3KIRfubtt1xCEAt1w - test-windows11-32-24h2-shippable/opt-mochitest-media: DAq4yvqVR-6eq1iu86wJbQ - test-windows11-32-24h2-shippable/opt-mochitest-media-nogpu: G8PJxfRaTDiqZioA32yWzA - test-windows11-32-24h2-shippable/opt-mochitest-media-spi: FohtoBskSXuYfCu-4mEJkg - test-windows11-32-24h2-shippable/opt-reftest-1: cQl3BgGHQ16CKUHab9NJ1Q - test-windows11-32-24h2-shippable/opt-reftest-2: YdA0G3VXQ2uDUPxTcnL77A - test-windows11-32-24h2-shippable/opt-reftest-3: fuQWl-iqRjOYgIv4ux_JLw - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-1: L1H5MTIGQom3oK0mlnOARA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-2: L1SaYde4T4qEGSS-IzbM-A - test-windows11-32-24h2-shippable/opt-reftest-wr-dc0-3: W4TwUAFKRVKqiBoLAWUbWA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-1: I_5StOcgRcy5_0boVJEwPQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-2: cJhf7cfrRWO8Dcg1DbYMLw - test-windows11-32-24h2-shippable/opt-reftest-wr-dc1-p-3: c-iXKDU6TNKBlmqeTsbdTA - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-1: HN7xN9ZzSqCO_hwEsP4Tdg - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-2: QsyPyz_4RLaQBqeOFulgWQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc2-o-3: VZ4-S1DQSj2jebGw_ll-gQ - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-1: aXysiyMLR_af_vv8liQxag - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-2: YOhY-pSGTEKdeQnKMqTn1g - test-windows11-32-24h2-shippable/opt-reftest-wr-dc3-c-3: YiFE-BWBScWZSHLF4dteSw - test-windows11-32-24h2-shippable/opt-web-platform-tests-1: SkI3j1xERs2tV_aXt1FN8Q - test-windows11-32-24h2-shippable/opt-web-platform-tests-10: LhR_QsquR_SuecNUc6a5gw - test-windows11-32-24h2-shippable/opt-web-platform-tests-11: OK209PxfTPu0qAOfp4KIXw - test-windows11-32-24h2-shippable/opt-web-platform-tests-12: Cm1w8p1XTUqCDajUQJI_pg - test-windows11-32-24h2-shippable/opt-web-platform-tests-2: bLC1rBIqTPatM5HSRovnhg - test-windows11-32-24h2-shippable/opt-web-platform-tests-3: f8Ye-asaRryUZDJQbGxeVA - test-windows11-32-24h2-shippable/opt-web-platform-tests-4: BkPPjyvcSB2gJ2WAeVjVEg - test-windows11-32-24h2-shippable/opt-web-platform-tests-5: CGpbY0-fSk60xrIkLZKKEw - test-windows11-32-24h2-shippable/opt-web-platform-tests-6: Q2L7mrlJQoiCQ9crlinYdQ - test-windows11-32-24h2-shippable/opt-web-platform-tests-7: B8WVZw9mS2Cma9xzoqZZcw - test-windows11-32-24h2-shippable/opt-web-platform-tests-8: M35he-cPQDeWFbO6ZEnHWQ - test-windows11-32-24h2-shippable/opt-web-platform-tests-9: dN6oAd37RLCQMDmwJ8O7mA - test-windows11-32-24h2-shippable/opt-web-platform-tests-crashtest: SzwPXr_mQM24fP5k3p8xRw - test-windows11-32-24h2-shippable/opt-web-platform-tests-pb: EwByfxGzQQ-KQDRcTE5ctg - test-windows11-32-24h2-shippable/opt-xpcshell-1: PvWUpnydS1eaPYLttPeaqQ - test-windows11-32-24h2-shippable/opt-xpcshell-2: f3CyvmA9TJq5NQjoWGQMIA - test-windows11-32-24h2-shippable/opt-xpcshell-3: WtAYkPFfQbCViSbrIliiZw - test-windows11-32-24h2-shippable/opt-xpcshell-4: VB5TzucjQM-8L9UQbfeUBg - test-windows11-32-24h2/debug-cppunittest-1proc: Xu6uSwYYQWK51BY5ra4ZYg - test-windows11-32-24h2/debug-crashtest: TJyPxo6yTGayblKxtQA7IA - test-windows11-32-24h2/debug-icecat-ui-functional: GLSKspYZQbG9rKgmjylPiw - test-windows11-32-24h2/debug-gtest-1proc: DpZD6-G0RUKen5ulxwQH0Q - test-windows11-32-24h2/debug-marionette: Zcj3hy7XQnOJbdg_Gq1B4Q - test-windows11-32-24h2/debug-marionette-swr: bBf_Z0IlQaCDODJcGRcXyg - test-windows11-32-24h2/debug-marionette-unittest: N2CYXxYWRRmnfNdxcQDe9w - test-windows11-32-24h2/debug-marionette-unittest-swr: aSkcd4rESGaPMb8bNKJP9w - test-windows11-32-24h2/debug-mochitest-a11y-1proc: dFYUXCxkRzmsrk3pbCtOhQ - test-windows11-32-24h2/debug-mochitest-browser-a11y: Go6Yn_gXTJ21T24LYiYAdQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-1: PS79Ai5rRNeZXl7G5CeLZA - test-windows11-32-24h2/debug-mochitest-browser-chrome-10: c9drNsiYS8qU05teL5AgwQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-11: DoMcYMwhS1m7D9vm0ALXVA - test-windows11-32-24h2/debug-mochitest-browser-chrome-12: NFZsB118Snyf4LElMzOQyQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-2: YnYIB7ffQimtolg-XemZuQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-3: Y-PzpRjARkGBMmFB7Dhrcw - test-windows11-32-24h2/debug-mochitest-browser-chrome-4: eldtovzARlu6pyl_2546UQ - test-windows11-32-24h2/debug-mochitest-browser-chrome-5: Xhr7hG7UQOG21e7zBvtnQA - test-windows11-32-24h2/debug-mochitest-browser-chrome-6: Z7FUgVgYSA2bkTll_NrXGA - test-windows11-32-24h2/debug-mochitest-browser-chrome-7: Ixm3H4sKRpSIoQ_5ctEDtg - test-windows11-32-24h2/debug-mochitest-browser-chrome-8: XO6zqpR0SLSKTufQHrdsjw - test-windows11-32-24h2/debug-mochitest-browser-chrome-9: NZz_SsrcSEKOuHIAwpDS6w - test-windows11-32-24h2/debug-mochitest-browser-media: b7I1R9fwRy2L-1nNM09T9g - test-windows11-32-24h2/debug-mochitest-chrome-1proc-1: TxjzG7NKSB2bg_fMFj-oaQ - test-windows11-32-24h2/debug-mochitest-chrome-1proc-2: F0r28wRcSi2v21IeJVeazw - test-windows11-32-24h2/debug-mochitest-chrome-1proc-3: ekgtUp0qRZCNaMqWnOQalQ - test-windows11-32-24h2/debug-mochitest-media-1: CJw960WtTzqeOJq7oymuVA - test-windows11-32-24h2/debug-mochitest-media-2: W83OMOvKQkuga3l_BNB1_w - test-windows11-32-24h2/debug-mochitest-media-nogpu-1: Cj0Own04TtC8OODC_tRhJg - test-windows11-32-24h2/debug-mochitest-media-nogpu-2: cNtMSFPETL640e2tsu7UiA - test-windows11-32-24h2/debug-mochitest-media-spi-1: Mv2oxyubT5aBK2daqia5Tw - test-windows11-32-24h2/debug-mochitest-media-spi-2: cjKObmZiTDyV_8upqokZzg - test-windows11-32-24h2/debug-reftest-1: ege_YNZVRMKDyG3hpgPFEQ - test-windows11-32-24h2/debug-reftest-2: S_TNBIeUTL60ZY2KAdVhTQ - test-windows11-32-24h2/debug-reftest-3: Uavk7EKlRz2NR1RyRSCLiA - test-windows11-32-24h2/debug-reftest-4: dFvI_PhrQkaj7iUNHiVz3A - test-windows11-32-24h2/debug-reftest-5: KEP1qDzTTvO3zWMeCyYtUg - test-windows11-32-24h2/debug-reftest-6: Km75VZvwSKS6-Mvtt8A58g - test-windows11-32-24h2/debug-reftest-wr-dc0-1: H4OSnMR0QXyObEu3XpPpWQ - test-windows11-32-24h2/debug-reftest-wr-dc0-2: Z0M5mEQkRwOO_GeLAvPrzw - test-windows11-32-24h2/debug-reftest-wr-dc0-3: NoAZzE8vRDiumXKK1lLS1A - test-windows11-32-24h2/debug-reftest-wr-dc0-4: E_4y4m9QSfW6DY8v1BkeZg - test-windows11-32-24h2/debug-reftest-wr-dc0-5: PUmm1f14TZe5G-VpBMA-Yg - test-windows11-32-24h2/debug-reftest-wr-dc0-6: PsvWZqMpTZinte0gaizjaQ - test-windows11-32-24h2/debug-reftest-wr-dc1-p-1: atIBNRrvRpezSOHpRjCjbQ - test-windows11-32-24h2/debug-reftest-wr-dc1-p-2: EF4NoO8rRw2YTFUiG2Zw6g - test-windows11-32-24h2/debug-reftest-wr-dc1-p-3: IrF6YtyXTdGYV4XMA8lPjA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-4: ewzB9cBrRyCQgOuT1ln3LA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-5: KLD2QII6Qv2in2o4i0ylGA - test-windows11-32-24h2/debug-reftest-wr-dc1-p-6: TKPPTJBtTQWxQ3T3ewoESw - test-windows11-32-24h2/debug-reftest-wr-dc2-o-1: ZqBUBHObRWmV53Soew1boA - test-windows11-32-24h2/debug-reftest-wr-dc2-o-2: GzfhIDhgRLyvUCHtqAX-YQ - test-windows11-32-24h2/debug-reftest-wr-dc2-o-3: UzKPVnlJSKe5Guekmaz9Gw - test-windows11-32-24h2/debug-reftest-wr-dc2-o-4: Rb5F9ZbUQvGfTSQOzml-yQ - test-windows11-32-24h2/debug-reftest-wr-dc2-o-5: HL4tNk70So2OOWenrfRkcg - test-windows11-32-24h2/debug-reftest-wr-dc2-o-6: O46QMpE2RqK1oGYLP5tm9w - test-windows11-32-24h2/debug-reftest-wr-dc3-c-1: VKEmFSunRbuOArkMu6CzqA - test-windows11-32-24h2/debug-reftest-wr-dc3-c-2: CLSdLUYNSHG5n_cxZnWF6Q - test-windows11-32-24h2/debug-reftest-wr-dc3-c-3: dGS2oDddSOChS4OTbecP0A - test-windows11-32-24h2/debug-reftest-wr-dc3-c-4: Qssh4VFYRSSBxhQAv23yDQ - test-windows11-32-24h2/debug-reftest-wr-dc3-c-5: AwSQ4wk8QkqD5_AJ1blxHQ - test-windows11-32-24h2/debug-reftest-wr-dc3-c-6: JZaxe9f9QWueQl4GVakgEg - test-windows11-32-24h2/debug-web-platform-tests-1: Bho1aHzoQNqaOJufgvNMsg - test-windows11-32-24h2/debug-web-platform-tests-10: A1mSYr-KQS61tQJhdGN8wA - test-windows11-32-24h2/debug-web-platform-tests-11: N-ea8CYGTYucTmeDl4qELg - test-windows11-32-24h2/debug-web-platform-tests-12: fTgordRCSia2PUVRaGNu5Q - test-windows11-32-24h2/debug-web-platform-tests-13: C8__NZ6WTtOsCo0OzOHmug - test-windows11-32-24h2/debug-web-platform-tests-14: cgRuFQ52TIuPYYmVPtt0Xw - test-windows11-32-24h2/debug-web-platform-tests-15: A6pZtMSFTTGgRmVzNPiYDg - test-windows11-32-24h2/debug-web-platform-tests-16: NsGw2r-qTQ2uB7h4VILuJg - test-windows11-32-24h2/debug-web-platform-tests-2: KQq-2DscTl2mWfrKgSwxDg - test-windows11-32-24h2/debug-web-platform-tests-3: QfsYfif8TjmLQT1DKl5uHw - test-windows11-32-24h2/debug-web-platform-tests-4: MsJ4203-R-W6cdFomUU4zQ - test-windows11-32-24h2/debug-web-platform-tests-5: afMhY17zRpqkr8te374yJg - test-windows11-32-24h2/debug-web-platform-tests-6: eNAID7YUT4-SYDlWPWidYQ - test-windows11-32-24h2/debug-web-platform-tests-7: LoQGEs5yQUiTjuWpzVYKpg - test-windows11-32-24h2/debug-web-platform-tests-8: cV8kEEvPRZG2Ed1CknWsww - test-windows11-32-24h2/debug-web-platform-tests-9: EL8NxIFNRQKvNBPt0dLhBQ - test-windows11-32-24h2/debug-web-platform-tests-crashtest: Gw9J8RDhTbS2Rn8eBswPLA - test-windows11-32-24h2/debug-web-platform-tests-pb: CkZ_NH_5ROypD72387DdvA - test-windows11-32-24h2/debug-xpcshell-1: RWSDcXGgSqqA9B80Ds_97g - test-windows11-32-24h2/debug-xpcshell-2: B_6lOdapTv2342XIoWMdzQ - test-windows11-32-24h2/debug-xpcshell-3: CUtvT3c_RBKVE8Ais0L3PA - test-windows11-32-24h2/debug-xpcshell-4: AFoTHql3QkCnnQ6qHARFhg - test-windows11-64-24h2-asan/opt-cppunittest-1proc: VRBaAC6iR1eoIYGG_RjW8w - test-windows11-64-24h2-asan/opt-crashtest: R9GJLEosS-GpXigp0MLWvA - test-windows11-64-24h2-asan/opt-crashtest-swr: HZ7ugjgrQdquw0cgUDM2Zw - test-windows11-64-24h2-asan/opt-icecat-ui-functional: UNJxaVYKQ9qEbELmDQh4wA - test-windows11-64-24h2-asan/opt-gtest-1proc: da4A4Fj3T8GQoRa5GORalA - test-windows11-64-24h2-asan/opt-marionette-1: RY1f10FQR0GoSa4WMzjLOw - test-windows11-64-24h2-asan/opt-marionette-2: Wb3M_HBiTOiRwdimrCXD_A - test-windows11-64-24h2-asan/opt-marionette-unittest: dq-c572jT0uhffEBmDSEBw - test-windows11-64-24h2-asan/opt-mochitest-a11y-1proc: f3MvQxMrQ4W60IrLi2gO2g - test-windows11-64-24h2-asan/opt-mochitest-browser-a11y-1: X1EmifHpT2-WxHD8ES_YTA - test-windows11-64-24h2-asan/opt-mochitest-browser-a11y-2: eXhtD_v-SuuCZhNi1Xnf-w - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-1: aypuGfLtRvCFEINV7Vdrtw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-10: eDNSzd5OTXCZ_mP17u7wAQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-11: c18eKVvnSKOaZA3G8-ZdTA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-12: JxtFPVBxTyiOm462PPu6TQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-13: OwbP1VO-Q2-aeg3LTJ2Wzw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-14: aWgz7IboSE2qFdut0TwfyA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-15: DA4ItLgkQxKrwEthIhuPWw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-16: GGZj8QbHSFSOKd9K5KOMYw - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-2: faDq00Z_ThGdtrjVFb7iXg - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-3: W0dDo7FVRZG1O48aTUDQLQ - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-4: KIkX_sxMTZGDSfkx2RlIaA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-5: Hv6LhfvcQVKP3MJb_sohhA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-6: Y4cmx5yZSyy4hnQvS2Nk-A - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-7: YKFI2pGyRMCfgT6Y0II9yA - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-8: Iq7zFgUkSe-7TWvSQaErxg - test-windows11-64-24h2-asan/opt-mochitest-browser-chrome-9: PxbHKpPFTxCCAQ3K9PBkAg - test-windows11-64-24h2-asan/opt-mochitest-browser-media: FrNikchhTLa8EJatCOZw_Q - test-windows11-64-24h2-asan/opt-mochitest-browser-translations: XB9ci_0RRZaS4ysbn3LIrw - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-1: fwwUtjRqQseWJU-w5_xoIA - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-2: fHmsg_VjQsSYeBjIKweXGg - test-windows11-64-24h2-asan/opt-mochitest-chrome-1proc-3: XnAGDg9QQUaub6fYaYSd-g - test-windows11-64-24h2-asan/opt-mochitest-chrome-gpu-1proc: QjmHSqwfQH-gyzadvXF-eg - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-1: M4M4pBVzTFaa-8vAntNq7Q - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-2: WjraNRMwSX6j4bGLS6X4wQ - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-3: DfbtL_IMQP2Kh4np_24QGw - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-4: IILazIKkTwilt2kMw8IHNA - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-5: A6_HLrgSRhqcr5l6VeXhgA - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-6: Y42BAFgETQqJ70WRgW8ReQ - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-7: OQTKbV5zReykX8SdwgBmfg - test-windows11-64-24h2-asan/opt-mochitest-devtools-chrome-8: SDitm-mUTTuAH956jDgfEg - test-windows11-64-24h2-asan/opt-mochitest-media-1: JBXubPx7S2SWSOJ3_c2OmA - test-windows11-64-24h2-asan/opt-mochitest-media-2: cx4j1YvFSO2vi4uMkL5UvQ - test-windows11-64-24h2-asan/opt-mochitest-media-nogpu-1: MBZmvwZyRzaWa4CDlYspOQ - test-windows11-64-24h2-asan/opt-mochitest-media-nogpu-2: avtabCo0TzegcAn4wjcYPg - test-windows11-64-24h2-asan/opt-mochitest-plain-1: M9n8qfdIR82CVRN46z-EkA - test-windows11-64-24h2-asan/opt-mochitest-plain-10: PS5VpXHDRgak8qsQEbth1g - test-windows11-64-24h2-asan/opt-mochitest-plain-2: TFFJpr3xSKCfNPP9pqAT-g - test-windows11-64-24h2-asan/opt-mochitest-plain-3: CmDOVlqDQHmhF3brHGT6GA - test-windows11-64-24h2-asan/opt-mochitest-plain-4: IgPU3wwETnKFnc_YijRZfg - test-windows11-64-24h2-asan/opt-mochitest-plain-5: MnV7BG7hQ6iJS1M2OuuBeA - test-windows11-64-24h2-asan/opt-mochitest-plain-6: X_C9qq4hT_SyyuJNEV6Zxw - test-windows11-64-24h2-asan/opt-mochitest-plain-7: D4kN2qZDSuOAa2nWGHqz1w - test-windows11-64-24h2-asan/opt-mochitest-plain-8: XWwowDzXSGGbd4Ye2SxpBA - test-windows11-64-24h2-asan/opt-mochitest-plain-9: RtHiYgB8QeW4EXWcgIfPag - test-windows11-64-24h2-asan/opt-mochitest-plain-gpu: FYyIStnfRGi2ujltJ0Mxbg - test-windows11-64-24h2-asan/opt-mochitest-remote: RfNpwDtTSECVkDMAUPdLHA - test-windows11-64-24h2-asan/opt-mochitest-webgl1-core: XIFKogElQtuozY6LgpLh8g - test-windows11-64-24h2-asan/opt-mochitest-webgl1-ext: FKgNUcqTSBqwtdNzHifiWw - test-windows11-64-24h2-asan/opt-mochitest-webgl2-core: CTubus5hRpCeKP2sQ4KiEQ - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-1: M6kyAEQjROOhtELgbfxWtw - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-2: SYQZ2peFQmWhnRlU-mtW5Q - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-3: FZm0PgNLR02t-iVhZmfNTQ - test-windows11-64-24h2-asan/opt-mochitest-webgl2-ext-4: DyILPdkERTqwJsNnJqMnPQ - test-windows11-64-24h2-asan/opt-reftest-1: BWgR2WhlSqiQY5cc_FZZ6w - test-windows11-64-24h2-asan/opt-reftest-2: H2mXGerFQ6eBKfmCV5GQNg - test-windows11-64-24h2-asan/opt-reftest-3: dMwCOkStTl2A038ObpIhew - test-windows11-64-24h2-asan/opt-reftest-swr-1: KWxU31QKQkiLlQBt1vobyQ - test-windows11-64-24h2-asan/opt-reftest-swr-2: H8iWAlFnRaqxNPLa43bOwg - test-windows11-64-24h2-asan/opt-reftest-swr-3: XCkav1CPQvGs7yqBCkibsA - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-1: B5H-00A-TVK5zRvLrNnJuw - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-2: AcT3F9ctRlyJgBobuBGd4Q - test-windows11-64-24h2-asan/opt-reftest-wr-dc0-3: d_2RdYR-RHaAzF9ZhR4beQ - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-1: dlKNH4t7R5mvzeu2je1rsw - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-2: XEM2VAmtSracRE6fb85VkA - test-windows11-64-24h2-asan/opt-reftest-wr-dc1-p-3: BqgoGwkyQ52wDwftR5-wYg - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-1: ANcf11LhRBS2-MUe6PGCKg - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-2: dnyUL98uR2qUZnhqvygVFw - test-windows11-64-24h2-asan/opt-reftest-wr-dc2-o-3: X0O7TWVkSe6v81ZaAtZJYQ - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-1: VkPTBwFJRSyqT6Lb1RJYOA - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-2: Bqv-coBtRA6X2bibXtElbA - test-windows11-64-24h2-asan/opt-reftest-wr-dc3-c-3: a2C9LxIhTB-eT5HfdGOV0A - test-windows11-64-24h2-asan/opt-telemetry-tests-client: XidnwOPUSEuiFTltSOwayw - test-windows11-64-24h2-mingwclang/debug-cppunittest-1proc: W0_q5sF6T-mmwfW9i3jc_A - test-windows11-64-24h2-mingwclang/debug-icecat-ui-functional: Nr6uyhp4QFm0D2n5OHq3MQ - test-windows11-64-24h2-mingwclang/debug-mochitest-a11y-1proc: MZBstEsRSE2Xx4UAcel6wg - test-windows11-64-24h2-mingwclang/debug-mochitest-chrome-gpu-1proc: CprNnrRoTQmBUpGr3tXrOw - test-windows11-64-24h2-mingwclang/debug-mochitest-plain-gpu: CqBseYlcTb-kGZjXQbZmVg - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl1-core: Kd560CjiTdC_ee9AApJoJQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl1-ext: YF8xoTf7R1qpQPs0ZHOFwQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-core: Fp-radosS5eGG-yjcdn-tw - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-1: QZRlc9c8Ty-Iqi-ONYSF3A - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-2: C1EXgX_zT5a3p5ejPj04XQ - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-3: BqI3abE2Spudd2SgiL_ZKA - test-windows11-64-24h2-mingwclang/debug-mochitest-webgl2-ext-4: QmPIdYABQQ6AzuOzJIQkMQ - test-windows11-64-24h2-mingwclang/debug-reftest-1: W7yvVgFGRhaT7Mj03D0wQQ - test-windows11-64-24h2-mingwclang/debug-reftest-2: cFsUh4h0Qr6azHA_x9sSSQ - test-windows11-64-24h2-mingwclang/debug-reftest-3: YQDwwlUbS5udt2-3TyZf0Q - test-windows11-64-24h2-mingwclang/debug-reftest-4: W1ZcDOlPSPy79c0aOo0-6w - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-1: Z9x622rmRJmIQdODDjRyOQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-2: TGL5ElnTSKmF5ikGFeOGVQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-3: DHo0QJz2Qi247Zxe0qJ-NA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc0-4: azGc2_-5TsWmwwx6sDX5oA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-1: J0ntONNuQH2wAbU8CU8EOQ - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-2: Rq1fRAJrQeyonpsC0KtuOw - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-3: dLWsMaTgTWm0gcZ95DwoOg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc1-p-4: RBxCopxlQWaVxayTY54r3Q - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-1: FXMWHc7cQN2BYtH3ebVOeg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-2: ZZNluyYXSCu6ALSGGsA99w - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-3: KNlBilhGSwu76R4-2av_ig - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc2-o-4: NgaE9BewSYO4p4oPx1G7gg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-1: co5yY8IyQlSSfJyxpZ5U6A - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-2: d4MHVj0LRwWLPCl_DRRZpg - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-3: C7iMoJhvS2eMZoD7FvV4DA - test-windows11-64-24h2-mingwclang/debug-reftest-wr-dc3-c-4: S430qccTTtCFjLPG40h7Hw - test-windows11-64-24h2-mingwclang/debug-telemetry-tests-client: I_jtdaTRS1ii5hNXPhnTNA - test-windows11-64-24h2-mingwclang/opt-cppunittest-1proc: AhHbmRkhTFG88iMl256RFg - test-windows11-64-24h2-mingwclang/opt-mochitest-chrome-gpu-1proc: MOJMIf04SjmieaIRT_nrdg - test-windows11-64-24h2-mingwclang/opt-mochitest-plain-gpu: dcu2oTajTIeUxX85OU8zdg - test-windows11-64-24h2-shippable/opt-cppunittest-1proc: Uvn-ZdGmTMyXai2W6PzBBw - test-windows11-64-24h2-shippable/opt-crashtest: PEHyrFabR-qNJjqx__FGAw - test-windows11-64-24h2-shippable/opt-crashtest-ioi: RXOuaePYQAWqO_BM_UC8KA - test-windows11-64-24h2-shippable/opt-icecat-ui-functional: WGx1RakFR3e6W33MFnCwZA - test-windows11-64-24h2-shippable/opt-gtest-1proc: fgij7lg8TkudSAjieJm4kg - test-windows11-64-24h2-shippable/opt-gtest-ioi: T68Ck-4LQ4SZaB225NXa2Q - test-windows11-64-24h2-shippable/opt-marionette: B0OJ43ieRw2UOCsSZl8tcA - test-windows11-64-24h2-shippable/opt-marionette-ioi: KcknrHk4SgWSTDyHwX-OOA - test-windows11-64-24h2-shippable/opt-marionette-unittest: cUg6KV7oRlKb1JMPFQMvEA - test-windows11-64-24h2-shippable/opt-mochitest-a11y-1proc: ISsrcfxjQG-g2M3OVNtv_w - test-windows11-64-24h2-shippable/opt-mochitest-browser-a11y: JiryUd2sQNiNbfdxOEYQqA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-1: Y1c6_g2iRga9nsXoSKHFsg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-10: VSx6t2hsR9iVisDVxgGmYA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-2: Cl1QN_92QkK5cz3Gnop_mw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-3: FMdGwJDFTYGm6ThJ8Fkk4w - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-4: DXVC3xHzScu-Ieu6XgCfFg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-5: ZafWC1LHRuK2G19JRk2SVA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-6: E6rNiKRUQ4SjhCu8QAwohw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-7: agIKfxbfSVWgFt0lwY4C3A - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-8: PoePZ6T2Td-hCRsp2CmpDg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-9: QKoNpYEfQRyQbbfV0b9lqA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-1: WiYZCNa3RKSIgKqoINhKRg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-2: TWl3Df_JSl-eBIl-_Aj-pg - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-3: N53NlaihQSGv7IyukHtQ_A - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-4: ChCFJxp_SVmgHO-aScRKeA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-5: FxfZxGa1SCC-wX9x-jHFDA - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-6: AyLaIZlNRFe0DpeXdJocUw - test-windows11-64-24h2-shippable/opt-mochitest-browser-chrome-msix-7: Ynt8Lu3VSGesUWQ4BmBwOw - test-windows11-64-24h2-shippable/opt-mochitest-browser-media: akQvZ-9KR4-WlMAFKxFxvw - test-windows11-64-24h2-shippable/opt-mochitest-browser-translations: O3iWBMFORymckJnIFwgk9w - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-1: W9CxEvqsTi68DqWzikCnLA - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-2: Yf0Cq-A_RiSI8AtnE_hvtQ - test-windows11-64-24h2-shippable/opt-mochitest-chrome-1proc-3: M04q8RAZRVuJyHxlrgCMJA - test-windows11-64-24h2-shippable/opt-mochitest-chrome-gpu-1proc: fLli2sOrQharIM-WypL_4Q - test-windows11-64-24h2-shippable/opt-mochitest-chrome-ioi: fHt2vtdtRJ68r3r8xQoglg - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-1: Cq9i05u2RQeK0O8j9DCWpQ - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-2: OaXarZMERdm3cEJq6T4Z9A - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-3: duxHJGdZRyafxX7h-DxdnA - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-4: JFUQoJN1QxC7I9-neU3TIQ - test-windows11-64-24h2-shippable/opt-mochitest-devtools-chrome-5: ANAy6tAGR4icVV1VP3BLtw - test-windows11-64-24h2-shippable/opt-mochitest-media: YA-77GdPTmWl6ef_Qau-uw - test-windows11-64-24h2-shippable/opt-mochitest-media-msix: QW58_T9CR7C0S8awgN72ag - test-windows11-64-24h2-shippable/opt-mochitest-media-nogpu: H9h6GBvxRuWdyXpyku2NRQ - test-windows11-64-24h2-shippable/opt-mochitest-media-spi: Q5IxZvxUQvCOO9SYge5yJA - test-windows11-64-24h2-shippable/opt-mochitest-plain-1: biXP-v1XSom3kTF3OPK5WQ - test-windows11-64-24h2-shippable/opt-mochitest-plain-2: NRKAzTgqRsuwO6oFSSqtyw - test-windows11-64-24h2-shippable/opt-mochitest-plain-3: AtBRJm_ZQviMu2gm9VfokA - test-windows11-64-24h2-shippable/opt-mochitest-plain-4: GKv-KEiRR6yhLnzgeezD2w - test-windows11-64-24h2-shippable/opt-mochitest-plain-5: edSBHkXNRK2cluJaQHm1Bg - test-windows11-64-24h2-shippable/opt-mochitest-plain-gpu: Q44MzYBAQ3uJ72ERSJFTVQ - test-windows11-64-24h2-shippable/opt-mochitest-plain-ioi: NmHJrx2-RFiLPlC7DSKHlg - test-windows11-64-24h2-shippable/opt-mochitest-remote: KrrCJrUvS1uwYVkJU9JpCw - test-windows11-64-24h2-shippable/opt-mochitest-webgl1-core: Y5k_4FqlTh2j4sBDtIKQ7Q - test-windows11-64-24h2-shippable/opt-mochitest-webgl1-ext: eHXJJ1BXSxKNgL9djmgAcw - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-core: Fx3v3WdSQIO7axlSdAUQtA - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-1: Xm7TSLHTRbWOYfSha2GA7w - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-2: LGRKO0S7Sy-EZWaROBK8rg - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-3: QiryeivlTliH9jYRA36SXQ - test-windows11-64-24h2-shippable/opt-mochitest-webgl2-ext-4: DCXHp_HSTDG0cafgQg288g - test-windows11-64-24h2-shippable/opt-reftest-1: cFs8q8dPTyuax9KHTrHkww - test-windows11-64-24h2-shippable/opt-reftest-2: L7oJIDcVQ7OorgkDQUdVzg - test-windows11-64-24h2-shippable/opt-reftest-3: YW0q_10YRCmkUGf7Hwx08A - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-1: A-AwWiD-QLW0S4UwkWjiyA - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-2: f5mFpV2RQHy5E7L8EANbAA - test-windows11-64-24h2-shippable/opt-reftest-wr-dc0-3: SlOMX8BRQCuIShsBE2tfCg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-1: FbMM6k-SSW2PlEb-HTUMAw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-2: BIAhvMbMSNyavt0K77xkEg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc1-p-3: D00CrsCiRjyJ-rFYXFMpOg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-1: V0Qa2vBCQYqQOXkQtJHfgw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-2: P7Xvv-w8TQe9Z5kmKkQSUw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc2-o-3: ZW3INPNHSbSKbdELXGWDKg - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-1: fVD6lx8YRIWBp4_MAUk05w - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-2: AuDVsvPcTGSObXOP6ag4Aw - test-windows11-64-24h2-shippable/opt-reftest-wr-dc3-c-3: ZICx6e3eRrCRwiW10BBkQQ - test-windows11-64-24h2-shippable/opt-telemetry-tests-client: Dd4kdImeRHWwucovqMJ5vA - test-windows11-64-24h2-shippable/opt-web-platform-tests-1: PuuYpp4gSe291EGdSuWVCg - test-windows11-64-24h2-shippable/opt-web-platform-tests-10: JGaqxEHbQyKBCxg-GTNaUQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-2: EYJFPXsxRy2aB787-7KTtw - test-windows11-64-24h2-shippable/opt-web-platform-tests-3: R29Xk5CmSLGJn_kDPBctcg - test-windows11-64-24h2-shippable/opt-web-platform-tests-4: LBTkdQEcQhCeu1Ym_EMG4g - test-windows11-64-24h2-shippable/opt-web-platform-tests-5: I3EkiJEzS0aK_lF5BtefjA - test-windows11-64-24h2-shippable/opt-web-platform-tests-6: Jjwwfo4WR3C0k11YfDkA9Q - test-windows11-64-24h2-shippable/opt-web-platform-tests-7: P9KMl-hcRPKc7mTt5A-BXA - test-windows11-64-24h2-shippable/opt-web-platform-tests-8: XCE73pKeS5yWn39851VQMw - test-windows11-64-24h2-shippable/opt-web-platform-tests-9: bLImsPXqTOOoQxfmX-4iBg - test-windows11-64-24h2-shippable/opt-web-platform-tests-canvas-1: X3x6bZk3QR6KkLVuECh9_w - test-windows11-64-24h2-shippable/opt-web-platform-tests-canvas-2: Y9XC8--sSfmykkyOWmONeg - test-windows11-64-24h2-shippable/opt-web-platform-tests-crashtest: fzxDFdrbQ6mR6z6jN7h_dg - test-windows11-64-24h2-shippable/opt-web-platform-tests-ioi: JlW-FKlaTHq6LjrNVvjLeA - test-windows11-64-24h2-shippable/opt-web-platform-tests-pb: CIEtmmS5TfG9ET72YfHcJA - test-windows11-64-24h2-shippable/opt-web-platform-tests-pb-ioi: fM0-DcviRPq6J2D0pwmyOQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-print-reftest: Jz4dGvBtSWmP9y2eGuCtag - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-1: AuO-g2abS9mEzA7RPeD3Ow - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-2: R5WHcu-KSRK0VpYLyi7aGQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-3: eAXC1EmTSu6AkgFrSfNHZw - test-windows11-64-24h2-shippable/opt-web-platform-tests-reftest-4: a8ogHKuMSb-HbTbWYAKG_g - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-1: f6eai1_qRjatWwuRJMMshQ - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-2: WqLqjPpzQdifm3QMiwDb5w - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-3: XbxOZKjpSDKSwI5y-qKQZA - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-4: cA9aplaKTaSAQjhmkkUWCg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-5: Mqbj12aTTvmc_XDdYK9sxg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-1: EVuOxLtbTYKJMs7bdA4nxg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-2: KtWYvcrcRVSa4iplE1lSOg - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-3: QBs5M_35SDysjhFx_lqrhw - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-4: AwvB1Z34Qn66glozMT6sfA - test-windows11-64-24h2-shippable/opt-web-platform-tests-wdspec-headless-5: SUSf0KgDSNCdK26Bcv3HYw - test-windows11-64-24h2-shippable/opt-web-platform-tests-webcodecs: f-minQuAQlK8448RMa3mJg - test-windows11-64-24h2-shippable/opt-xpcshell-1: APT6340MT2maY7TfeVkPcg - test-windows11-64-24h2-shippable/opt-xpcshell-2: fdDf8uKxRleHrfZt8bU_aQ - test-windows11-64-24h2-shippable/opt-xpcshell-3: ZVu8fZ_mRQ-Donrz-Iw_Hw - test-windows11-64-24h2-shippable/opt-xpcshell-4: SImNWEf6SKq2i6ZAAvGlBg - test-windows11-64-24h2-shippable/opt-xpcshell-ioi: Y91gyt4bRSuIIKmAKdMGJw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-1: ead2W4m1R_qfhiKCZfjquQ - test-windows11-64-24h2-shippable/opt-xpcshell-msix-2: VLFyzwmhTVms7oBydoYLIw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-3: DpKRXJ3NQwWTAnPBBDr7Iw - test-windows11-64-24h2-shippable/opt-xpcshell-msix-4: V2QBb8qzQyCsnj80qYN2RQ - test-windows11-64-24h2/debug-cppunittest-1proc: XXi949BKR5yGWbFJei4Wig - test-windows11-64-24h2/debug-crashtest: FG9j8qbIStayS2FknSRaDA - test-windows11-64-24h2/debug-crashtest-ioi: LrJeJJhVRYSCg1mWY47xOQ - test-windows11-64-24h2/debug-crashtest-swr: dR-27GxTS9iC-I3WjPW0NQ - test-windows11-64-24h2/debug-icecat-ui-functional: XFYxiCZTSdynBb1utjTHJQ - test-windows11-64-24h2/debug-gtest-1proc: SO1NRRidQriDX1RGQ_fD4A - test-windows11-64-24h2/debug-gtest-ioi: UwfK29bgSHaXug3nf35WSA - test-windows11-64-24h2/debug-marionette: fN12CWncSh-vjjOoNFORdg - test-windows11-64-24h2/debug-marionette-ioi: YlJGmQMvTnGb39BMHNrYHw - test-windows11-64-24h2/debug-marionette-swr: BFRf33hbSEalF27V1V9CbQ - test-windows11-64-24h2/debug-marionette-unittest: NiuYuU-WTaSmvptpQK3rlA - test-windows11-64-24h2/debug-marionette-unittest-swr: eqw2M8lNS4G-ObErS8Jexg - test-windows11-64-24h2/debug-mochitest-a11y-1proc: eqciCUL7SRCxnISmKGlzYg - test-windows11-64-24h2/debug-mochitest-browser-a11y: BWmlDDVoTmme2yDNDIb9ow - test-windows11-64-24h2/debug-mochitest-browser-chrome-1: ApV7uQK1R82JoxWoNDzdDg - test-windows11-64-24h2/debug-mochitest-browser-chrome-10: HNWP5x-KT1S0J_IWdyk-bg - test-windows11-64-24h2/debug-mochitest-browser-chrome-11: Jlh4oRjRS_SUzDY727CDRg - test-windows11-64-24h2/debug-mochitest-browser-chrome-12: MpiWQPXrTBK0GRoq0CBwhQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-2: WZ0-1sujSjWEMwsta1ynNQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-3: KLaqQQePQbS8UBcae227rw - test-windows11-64-24h2/debug-mochitest-browser-chrome-4: Nadz7W6eTie_wA25ofI10Q - test-windows11-64-24h2/debug-mochitest-browser-chrome-5: I2fRHjzrTmGfsLQ5m3e_CQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-6: TlIwpvOrQD6ZN2TOqQQyXw - test-windows11-64-24h2/debug-mochitest-browser-chrome-7: VxRxeOaQRritxT_wQyD2-Q - test-windows11-64-24h2/debug-mochitest-browser-chrome-8: VNVytDi5TnWAY3P8Rj4Clw - test-windows11-64-24h2/debug-mochitest-browser-chrome-9: PcfA8R3tRd6pO4cJfMTXJg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-1: SR7lbGwqQ4atR9ND3QRrmQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-10: DGY6-U2pRNesykujbSbr_w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-11: YvXZFUWvTN6tlnx7ABHlQw - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-12: BNiE6qQcS-G-_qeDR5rmNQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-13: aqNed-rcTF2uRDWT59UpOA - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-14: LVSlThHyS8q2S7ChqAS0jQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-15: NWmEmrl1SjuzTnEoiDuFjg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-16: ZyGVf7YGQ3afnSZK-QtHpQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-2: UbvThbXZSVSBCWcnuwuCPg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-3: cqqdb9dlTJ2ddLU_SAaz5w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-4: ey0crdFkRQ2SuQGRIk7wuQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-5: HrQALJb1RWWPW_KIIfpY-A - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-6: WYLr1Zz_RBmiD_oo0nBZ4w - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-7: BfqrLND5Rz-koLZOxNq7Eg - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-8: R8boj3H8RrSvTOeYLc0ceQ - test-windows11-64-24h2/debug-mochitest-browser-chrome-msix-9: KHd5eHUqRQCtHxooDAQcnA - test-windows11-64-24h2/debug-mochitest-browser-media: U66Kx7OlRXKxEJxAstModg - test-windows11-64-24h2/debug-mochitest-browser-translations: P7j6CNrEShuBjewfv7w0Iw - test-windows11-64-24h2/debug-mochitest-chrome-1proc-1: fqPyZJq3SQqArEtJnL5knA - test-windows11-64-24h2/debug-mochitest-chrome-1proc-2: GKqyigWGRNWMTPkH0suRpQ - test-windows11-64-24h2/debug-mochitest-chrome-1proc-3: ebYKwIszSLaZGgs5o3Nx1A - test-windows11-64-24h2/debug-mochitest-chrome-gpu-1proc: VMVxY0z2SfO8XNgJHNys2Q - test-windows11-64-24h2/debug-mochitest-chrome-ioi: INR2UyQTR7KjSywM615_pg - test-windows11-64-24h2/debug-mochitest-devtools-chrome-1: GyYmmlRmTwOuFK3dgSPyHA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-2: JP2nh7KFS625Y7rJ01ZSLQ - test-windows11-64-24h2/debug-mochitest-devtools-chrome-3: CBJDQrbIQ_WZvcS-yyLixA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-4: Q-pDBlyaRQuDAbA-qH2oww - test-windows11-64-24h2/debug-mochitest-devtools-chrome-5: JZebg0W1QMGbfFrC8CAO4Q - test-windows11-64-24h2/debug-mochitest-devtools-chrome-6: dbP0jUL2RtGTHmV2yX9NBA - test-windows11-64-24h2/debug-mochitest-devtools-chrome-7: Hp2Kg6eVTP6mgWRD3DoxKQ - test-windows11-64-24h2/debug-mochitest-devtools-chrome-8: LQkEK_4tSWWvz1OZlDPkyg - test-windows11-64-24h2/debug-mochitest-media-1: UgfTpgjiR9OPMPHN9h5KBg - test-windows11-64-24h2/debug-mochitest-media-2: HcnSinpARd-6Pta3dGUBuw - test-windows11-64-24h2/debug-mochitest-media-nogpu-1: Tt9o-BZdTQC5jqquY7NI9g - test-windows11-64-24h2/debug-mochitest-media-nogpu-2: GHy3MOODQuCpNfLQcbriSQ - test-windows11-64-24h2/debug-mochitest-media-spi-1: A40sjFXuRgu_izS2vE_0EQ - test-windows11-64-24h2/debug-mochitest-media-spi-2: CRktdtRKSzy4UNP7HV7dGg - test-windows11-64-24h2/debug-mochitest-plain-1: VAnyyNu-TYKIwyByR8H7Dw - test-windows11-64-24h2/debug-mochitest-plain-2: ZdOZobMSQrmklCBWfs1dEQ - test-windows11-64-24h2/debug-mochitest-plain-3: alX74lFqSUqJDSa3YlGUxA - test-windows11-64-24h2/debug-mochitest-plain-4: cFOJ4ZZ7RvGCMAqZxTPAYw - test-windows11-64-24h2/debug-mochitest-plain-5: Fgst50SVR2SQ4b5AOaSvxw - test-windows11-64-24h2/debug-mochitest-plain-6: RnB-2MvnQquhKYXyPk71Mg - test-windows11-64-24h2/debug-mochitest-plain-7: eBdx4Z9ASIGVzeC9xYXOgQ - test-windows11-64-24h2/debug-mochitest-plain-8: TAmlo9zBS2y3G3djRFC7-Q - test-windows11-64-24h2/debug-mochitest-plain-gpu: AFW7DC16TMK1w07SK7O0Rg - test-windows11-64-24h2/debug-mochitest-plain-ioi: Pj46Rn0mSUCuQ8iAKIEFHw - test-windows11-64-24h2/debug-mochitest-remote: aiXH5zsETWqEOi1VAgEszQ - test-windows11-64-24h2/debug-mochitest-webgl1-core: O7Sdqvb6Rb6VtjjcDoXhTQ - test-windows11-64-24h2/debug-mochitest-webgl1-ext: GZ2ImEk6TMCLvKZXe92-7Q - test-windows11-64-24h2/debug-mochitest-webgl2-core: ClUDrklLRryXB-6Y5A409w - test-windows11-64-24h2/debug-mochitest-webgl2-ext-1: O46-oMBlSOeE-AOa9NHSLA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-2: FQecePkLRnG3DQYMac-EuA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-3: LXGWryarSemmkeNB1o0QuA - test-windows11-64-24h2/debug-mochitest-webgl2-ext-4: ZwNoN_1XTTCs03DXIXhMXQ - test-windows11-64-24h2/debug-reftest-1: LPrBIxvRRC27VRTcY2uJJw - test-windows11-64-24h2/debug-reftest-2: MkNUE_OKSle-t4ZV41_P9w - test-windows11-64-24h2/debug-reftest-3: NbRUMIYFSVeDCPiqaQooUQ - test-windows11-64-24h2/debug-reftest-4: YZhEhIF9QqSmfzkBoc9V9A - test-windows11-64-24h2/debug-reftest-wr-dc0-1: JKaWq-_XS6eyfPmS_B2unA - test-windows11-64-24h2/debug-reftest-wr-dc0-2: CmjaS81nSyyXlr9MjGz4hw - test-windows11-64-24h2/debug-reftest-wr-dc0-3: ShfPrPNuTi2wlpFbvdf2pQ - test-windows11-64-24h2/debug-reftest-wr-dc0-4: TJ4c15wDTzSC8zBJO0o_Dg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-1: HQ-0GDRZTQ-lm9tzsuvokg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-2: YOgK-d7rQHuIvLfbusQfrg - test-windows11-64-24h2/debug-reftest-wr-dc1-p-3: UjH91RPVTtOppiwwB9oJHA - test-windows11-64-24h2/debug-reftest-wr-dc1-p-4: Vd1_bkxKQ5eB0TP_VHMeZQ - test-windows11-64-24h2/debug-reftest-wr-dc2-o-1: NI2I71EpQHSfTVu5LbEIgg - test-windows11-64-24h2/debug-reftest-wr-dc2-o-2: d70XD09uTlGFt6EY5j-vTw - test-windows11-64-24h2/debug-reftest-wr-dc2-o-3: WE7ktORiTnKeLTCsJ_U4tQ - test-windows11-64-24h2/debug-reftest-wr-dc2-o-4: L4Id6Cj_Tguo3aJRXRgaMg - test-windows11-64-24h2/debug-reftest-wr-dc3-c-1: I9uPB45yRo2Nx1USj5ybrw - test-windows11-64-24h2/debug-reftest-wr-dc3-c-2: OHFNwLphSceUAqPNehp4YA - test-windows11-64-24h2/debug-reftest-wr-dc3-c-3: eB6Mu2ReT62rnPoDuoImvw - test-windows11-64-24h2/debug-reftest-wr-dc3-c-4: ds1NFxf5TaCnNRIcDMnWeQ - test-windows11-64-24h2/debug-telemetry-tests-client: HFMwwR5STmOTKV3Bm81fVA - test-windows11-64-24h2/debug-web-platform-tests-1: N7AhPUneRWCJguVarcD2RA - test-windows11-64-24h2/debug-web-platform-tests-10: Ce-j8jjjRmGtvKKuQIF1Pg - test-windows11-64-24h2/debug-web-platform-tests-11: f3pGiclDSHabmDWAkdtG3A - test-windows11-64-24h2/debug-web-platform-tests-12: Ax7M5Ee6RIW07f-kdpGUdQ - test-windows11-64-24h2/debug-web-platform-tests-13: Z_MdhdZzSkegfmOnJ3mQLg - test-windows11-64-24h2/debug-web-platform-tests-14: DLMDuZ5NQleHvJVTol6tEg - test-windows11-64-24h2/debug-web-platform-tests-15: MIzDi-nqSWKgk59uFB-uOQ - test-windows11-64-24h2/debug-web-platform-tests-16: T1vt1uxmSoiBqpd76q4-AA - test-windows11-64-24h2/debug-web-platform-tests-2: C30sWAKBRO2cNz_TQOo2cQ - test-windows11-64-24h2/debug-web-platform-tests-3: esCOdvNqQ_WEiYx_PpPSKw - test-windows11-64-24h2/debug-web-platform-tests-4: JDS1lT4YRp62AMr8mdGB6A - test-windows11-64-24h2/debug-web-platform-tests-5: BGtKdmD-ShG2NiDofvZmmQ - test-windows11-64-24h2/debug-web-platform-tests-6: Ucj8AcwWQQ-ebT8KHW0EYw - test-windows11-64-24h2/debug-web-platform-tests-7: A7GX4lbATzGrPYD9IgpB9w - test-windows11-64-24h2/debug-web-platform-tests-8: TnYl06HQS4-QjNwkSUHtbA - test-windows11-64-24h2/debug-web-platform-tests-9: HproeM09QJOZwFA79k-ieA - test-windows11-64-24h2/debug-web-platform-tests-canvas-1: HTVUJ9MAS8q3TF9objeuyA - test-windows11-64-24h2/debug-web-platform-tests-canvas-2: L6okNkY7TJCpaa4gDP54qw - test-windows11-64-24h2/debug-web-platform-tests-crashtest: ORXqIqFDSTafcHQovqwlWA - test-windows11-64-24h2/debug-web-platform-tests-crashtest-swr: Qm4oFO0NRv2gZjMZcNpCcA - test-windows11-64-24h2/debug-web-platform-tests-ioi: Fg5UfFXvTJ6E-gzG8cAAmw - test-windows11-64-24h2/debug-web-platform-tests-pb: BNCRsFQXRomMicCfHzpTmw - test-windows11-64-24h2/debug-web-platform-tests-pb-ioi: cC53PPFKSYmyN6O74zUZLw - test-windows11-64-24h2/debug-web-platform-tests-print-reftest: ev9ouES4Q1OX3wN8iKAohQ - test-windows11-64-24h2/debug-web-platform-tests-print-reftest-swr: ZhTYF_pOQpe8xASRGWjRiA - test-windows11-64-24h2/debug-web-platform-tests-reftest-1: TEvSj5rDSN-4LOGKtDX1vw - test-windows11-64-24h2/debug-web-platform-tests-reftest-2: Yz6py4zsRR-HyXijfk4mHg - test-windows11-64-24h2/debug-web-platform-tests-reftest-3: SZX9y8rWTWKunkoM8xrE4Q - test-windows11-64-24h2/debug-web-platform-tests-reftest-4: KtT8ONuTRL6JEHXocFjRZw - test-windows11-64-24h2/debug-web-platform-tests-reftest-5: ZjWBeWNLQ9isFZYXm5xOYA - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-1: Rx2FQV2iSE-BKm-MdbXekg - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-2: ek__pvFbRxC4NUncWRyV1Q - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-3: YGy8WtajRuGVUR_CI3TqEw - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-4: aUUdjJ8fQtK-bbTFQ0LZVw - test-windows11-64-24h2/debug-web-platform-tests-reftest-swr-5: VU_SPNWWTwuK_SnCEG9ofg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-1: Q-q6atobR_aUDIPCZnye6w - test-windows11-64-24h2/debug-web-platform-tests-wdspec-2: IPN5RNQvRD-2a1F8R7QpTw - test-windows11-64-24h2/debug-web-platform-tests-wdspec-3: SBojeRjCTga2tq6lvwqqpw - test-windows11-64-24h2/debug-web-platform-tests-wdspec-4: DjARrBbcQQSIPPelRXm9sg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-5: YAigvfCNTzaF2-P7cEIzZQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-6: fpKaaK0QTe6UZeDd3EL6Xg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-1: An87Ky2cRa2yW14BjUAZdg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-2: Gk9gbFgwSZeceR_Q5UWAsA - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-3: Y3mkdz3xQLqMIocCrSjQxQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-4: MBZEMtLATyS-SKJAbypXuQ - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-5: I8XCz0XhQ9ms9hz29EJ9kg - test-windows11-64-24h2/debug-web-platform-tests-wdspec-headless-6: JMfrP0tiRT26ODoBsfPO_w - test-windows11-64-24h2/debug-web-platform-tests-webcodecs: a-TKE4uZScq_pJXYuLp7Dw - test-windows11-64-24h2/debug-xpcshell-1: XI0PfTDXQtOhQAoxBw3PhQ - test-windows11-64-24h2/debug-xpcshell-2: dph0GbrjQEu1cGFci4kXjg - test-windows11-64-24h2/debug-xpcshell-3: BZXQ5DfkQfm06av_IAtVPg - test-windows11-64-24h2/debug-xpcshell-4: V7Dg-R7mSh2Ij9-YOMrARg - test-windows11-64-24h2/debug-xpcshell-ioi: SWwMrOQgTvKv3benCdyB0g - test-windows11-64-24h2/debug-xpcshell-msix-1: Iy3Kud59RAy7GwlggyT4Sg - test-windows11-64-24h2/debug-xpcshell-msix-2: Q-ESz-AHSiWOTJyRLEozRg - test-windows11-64-24h2/debug-xpcshell-msix-3: SJAo9oMJTUOYFAwApBNpYg - test-windows11-64-24h2/debug-xpcshell-msix-4: CcfsVHqJTP-lbTrCedkbSw - toolchain-aboutwelcome-node-modules: Cv8OiVoaTryK9kZ6J4a4sg - toolchain-android-aarch64-compiler-rt-19: f5y75iVDTbmJVbYivOMAcA - toolchain-android-aarch64-compiler-rt-20: HGsdL6VQTsyrfIAUVDAXuw - toolchain-android-aarch64-libunwind-19: WvgZaHl4SWKZx-Jo2XRQRg - toolchain-android-aarch64-libunwind-20: et9109lPQIayuABq74pPAg - toolchain-android-arm-compiler-rt-19: MLapYE4VS-CgTZngebpxrg - toolchain-android-arm-compiler-rt-20: AerOtzuZSxynhwhYOgj9SQ - toolchain-android-arm-libunwind-19: OukWrr_uQoK6LCFDDluC1A - toolchain-android-arm-libunwind-20: cCrAQusqT_mFaYaPWG22pQ - toolchain-android-x64-compiler-rt-19: M_G6OrrISA20lJIIC6-D7A - toolchain-android-x64-compiler-rt-20: KDy6fNC4QH6brpPlRTlXuw - toolchain-android-x64-libunwind-19: MyUTrkqRQ8KwfqfyL3-gKQ - toolchain-android-x64-libunwind-20: KPIwDkHDTE-S0lo1aVmVSQ - toolchain-android-x86-compiler-rt-19: K6O_f94ZTpmrWO4jiEAHbw - toolchain-android-x86-compiler-rt-20: QmarLiwESxy5SbEvTdx9pg - toolchain-android-x86-libunwind-19: XqU_RftjSa-D3tZCHAmOkQ - toolchain-android-x86-libunwind-20: OGF4JfQfSDW2j33EY9xUXA - toolchain-asrouter-node-modules: Hn3KjXlyRLyV2cs1kTFpRA - toolchain-browsertime: C0UGNz6DQ0aeuYboEKjehA - toolchain-clang-dist-toolchain: e5saFzP4RJqzvqVx540iPg - toolchain-eslint-plugin-mozilla: XtjwE50jRpKOUyLuKLiaWA - toolchain-linux-python-dbusmock: b9wxef4zScq1clD51HqhHw - toolchain-linux32-llvm-symbolizer-19: GBg0-kgqR2iSTr5Ea-RsVQ - toolchain-linux32-toolchain-sysroot: JsDi0JmrRYe3HheYK7gYmA - toolchain-linux64-1804-dbus-python: OzAN2nmAQXSqVyr9g2D8jA - toolchain-linux64-2204-dbus-python: Ule2MRopSWivXhVNxc_Dsg - toolchain-linux64-2404-dbus-python: XuQMuI0tS3uHCNQUtLAQJg - toolchain-linux64-7zz: BZ2Ih7lET8aCvZ__YOQATQ - toolchain-linux64-aarch64-cbindgen: Hxxzen9nTnaRoLVKNfsdEw - toolchain-linux64-aarch64-clang-19: BEdas_P7TxiqSv9TALytMg - toolchain-linux64-aarch64-clang-19-raw: WPEefJ-GQ4SsxnJK8yr_MQ - toolchain-linux64-aarch64-clang-20: ZS1aF5OSR5y2MZtiO-sJYQ - toolchain-linux64-aarch64-clang-20-raw: IedPWrHJTqa8eXGbWzFvVQ - toolchain-linux64-aarch64-compiler-rt-19: R0bXLXFsQNWVfKG3kGsJcQ - toolchain-linux64-aarch64-compiler-rt-20: NL9NY0jXRKmlTM-6yrjNHg - toolchain-linux64-aarch64-libxml2: cQFHCvxSTHO0sOomw3Tlvg - toolchain-linux64-aarch64-node-22: DP3KwqlCTRe_AIf3JXv4lA - toolchain-linux64-aarch64-pkgconf: AR8-5Ky4SjiviUPxAEdFgw - toolchain-linux64-aarch64-python-3.11: VouNT6ufTNO2AliOBs-3YA - toolchain-linux64-aarch64-python-3.8: SxqKgEH_TrCBZaTmKAXygQ - toolchain-linux64-aarch64-toolchain-sysroot: eXBOGDyvRnewN08SicQcoA - toolchain-linux64-afl-instrumentation-4.0: flqPYV0fRIWKJTYsP6kChw - toolchain-linux64-android-avd-arm64-repack: ZFBnQrbRSQCHUQ0cSDUlwg - toolchain-linux64-android-avd-x86_64-repack: Dx0qUF8xTeidwZEVThcb2A - toolchain-linux64-android-gradle-dependencies: DFhjdzGsS1ajPw-ChS_M8Q - toolchain-linux64-android-ndk-linux-repack: XJsow5fAS2uOF0ai7EAExA - toolchain-linux64-android-sdk-linux-repack: YSqz5DVhQ-Odf9MKIgruWw - toolchain-linux64-binutils: AE13zHZ5Q5Cm2oVYc70kfg - toolchain-linux64-binutils-2.31.1: FL4qpQQ2TUyu5TxNJos8WQ - toolchain-linux64-breakpad-injector: DXHIcMoyRACx-vydOEY97w - toolchain-linux64-cabextract: CLtImnx0Q1qp_Ei4VNl7Dw - toolchain-linux64-cargo-vet: NU_wahE6TK-tPaNAzh5djg - toolchain-linux64-cbindgen: KFNkFQAjR1ekTqLqC4gmAw - toolchain-linux64-cbindgen-base: AJ3psz0oS0abVz_GTGhCiQ - toolchain-linux64-cctools-port: VFZ_ZETYSRmc295nb1bWLg - toolchain-linux64-clang-14: U3kOXJ7JQNGRsXG76Sflww - toolchain-linux64-clang-14-stage1: HClh21wvTXm7KNgVQ6qpGg - toolchain-linux64-clang-19: bhZ3JCyzTnK63PkS4U6Mtw - toolchain-linux64-clang-19-mingw-x64: fmhgX-CzQaC_9VnxLsNqTw - toolchain-linux64-clang-19-mingw-x86: F_l5xZjST4GhIRjoL_7fwQ - toolchain-linux64-clang-19-profile: OwR5xakhS-2BMhmGPHUb7w - toolchain-linux64-clang-19-raw: BAwoYaawR_y7k1kZsAjMMg - toolchain-linux64-clang-19-stage1: RTdP4bLQRkey0Ak_SlcQpg - toolchain-linux64-clang-20: GwRd4ZCWS9-Lk6Tb3HM_WA - toolchain-linux64-clang-20-profile: K6tiyNMSSYqo2CO7E0fUIQ - toolchain-linux64-clang-20-raw: cN_BZxSeS2CjyWkml1o97Q - toolchain-linux64-clang-20-stage1: V0V6uWGxSsuhvuiaQ1esFg - toolchain-linux64-clang-8.0: FShqmxsdQfapSC46JPslbQ - toolchain-linux64-clang-8.0-raw: NDockJdIR2q0EHqEUu05xA - toolchain-linux64-clang-tidy: eBWKd1gjTeqdxm3vZ5xSbA - toolchain-linux64-dump_syms: XBDimUnyQYG9EjVnZeMuvA - toolchain-linux64-fix-stacks: BmNwpRY_S2m2-4Dbm8WVTg - toolchain-linux64-gcc-11: GhptQbYXSB-XrZmx48jPJg - toolchain-linux64-gcc-8: T-dXO0-xT4SWA2NrzQu6jQ - toolchain-linux64-gcc-9: ENHlRNULQQKd_czDeAs8eA - toolchain-linux64-gcc-sixgill: VXChpelgQ0yLbdp0LhkpRA - toolchain-linux64-geckodriver: NgueRfXzTQiov3QgeM2X6g - toolchain-linux64-gn: dP1LE5yCQKSvDbin9rOZtQ - toolchain-linux64-hfsplus: EugTx5sWQEKW2wz0E9E-ew - toolchain-linux64-jdk-repack: ceXdzuLGQMmuCbm1nkpdGQ - toolchain-linux64-libdmg: WLvW1hVHTXKvGZO3rpIDsQ - toolchain-linux64-libxml2: EDo3svkjTHygWONM9Xau4Q - toolchain-linux64-llvm-symbolizer-19: RPhZmYSxTbSEMN8kYs1qpw - toolchain-linux64-makecab: IqhkT1JqRVmbvQEX9o3w-w - toolchain-linux64-mar-tools: CBO3Jx8MQFCk9VIRY5Boww - toolchain-linux64-mingw-fxc2-x86: ErVfv9C3RbONrmSDUB53lw - toolchain-linux64-mingw32-nsis: bw8jzAtLSpKcVL_LAVAFkA - toolchain-linux64-minidump-stackwalk: daZwKH1bQwONpHuczgTMJg - toolchain-linux64-mkbom: K5OJzM1KQV2jEj41vJC_Ew - toolchain-linux64-msix-packaging: TUWVet-3TzCnV88QmAp13Q - toolchain-linux64-nasm: QNMTA_a7RQmt3TG2slxMhw - toolchain-linux64-nasm-2.14.02: GGM18_oUTBG-CrIVNhf6yw - toolchain-linux64-node-12: QKCz54L7R9yIAYcXKYs3Xw - toolchain-linux64-node-22: FkGeKjmsTKa3g-aahnPByw - toolchain-linux64-pkgconf: b555-teRSx2LPcPpjdWaNQ - toolchain-linux64-python-3.11: R2rug4s-Tw-0bf2w5wL-8w - toolchain-linux64-python-3.8: RIIoknTgQzO7BaiTRJpohw - toolchain-linux64-rust-1.81-dev: bB_LKTrtSCW5QJI5PNTWEw - toolchain-linux64-rust-1.82: SoW3v-ZHSNqlimMGK_XxLQ - toolchain-linux64-rust-1.83: LZ8roHfkR7y5ODuiWlOsAQ - toolchain-linux64-rust-1.86: NHqHhruISoW_x1f4q-AiTg - toolchain-linux64-rust-cross-1.86: MMMFUmSdSHSCBJcsDBUobQ - toolchain-linux64-rust-macos-1.83: QS5dVULcSUGRi0gZos8I1Q - toolchain-linux64-rust-macos-1.86: PYaijO2_QwycCAewx-cC5g - toolchain-linux64-rust-size: cTWUiNnlSYO_jyfS0CHRxg - toolchain-linux64-rust-static-1.86: GYcmzxhYQ06rV_o75HwCPw - toolchain-linux64-rust-windows-1.83: UFoatDejSmueK0IaayadPg - toolchain-linux64-rust-windows-1.86: IB23a_chS7WG9ChVXJWKrg - toolchain-linux64-sccache: aGOg07hGRF216JnJ7H0zLw - toolchain-linux64-toolchain-sysroot: LRcVtG8ZSnW94FpLJU62Mg - toolchain-linux64-toolchain-sysroot-gcc10: WbV0YRW1TZKUcIQ7AAIEPg - toolchain-linux64-upx: MvT0WEpMSIyE5K5qGVRNxQ - toolchain-linux64-uv: IF7p1tiATcyf2If6OUymRA - toolchain-linux64-winchecksec: NpiOWoShTrSKPwrNgMss0Q - toolchain-linux64-wine: GZQVnljMRMWs_zt0cyz_Jg - toolchain-linux64-x64-compiler-rt-19: dviPrWreS3Kg4qla5FTBKA - toolchain-linux64-x64-compiler-rt-20: V6TqRH8LT3S2HoDkZ0ZVwg - toolchain-linux64-x86-compiler-rt-19: Y_oe4-7eQHWrZDuxVRNHlA - toolchain-linux64-x86-compiler-rt-20: dbA1EgTWS1eCUm6JWt0Wgw - toolchain-linux64-xar: dzrzMlhSSU2rLtDORB6WZg - toolchain-linux64-zucchini-bin: aGHDNfz_SYGScu5tp6z7Gw - toolchain-macosx64-aarch64-cargo-vet: CkNWCsHFSsG9UqftOvZGoA - toolchain-macosx64-aarch64-cbindgen: bWSqEiGKQFq5FMZyCbghhA - toolchain-macosx64-aarch64-clang-19: PgIv4w1PTZC43DG6GiDW7Q - toolchain-macosx64-aarch64-clang-19-profile: H2Zw95S9SKS3hUJ7xYk-Lw - toolchain-macosx64-aarch64-clang-19-raw: C_-v0l6YRgyDTcJwJtZlcw - toolchain-macosx64-aarch64-clang-19-stage2: YHNeOIlsT_-nFHL40tBmOQ - toolchain-macosx64-aarch64-clang-20: TVD75ZGcSm6OP877YMB7Ew - toolchain-macosx64-aarch64-clang-20-profile: EgnzA4INRNejEhtIBqIs-w - toolchain-macosx64-aarch64-clang-20-raw: fqo4yX0NSNWoqVoRhGy7Dw - toolchain-macosx64-aarch64-clang-20-stage2: NeblKSKIS7WKlI6Ct4R7yA - toolchain-macosx64-aarch64-clang-tidy: VCRe82vUSfOQhH5vjFhxcw - toolchain-macosx64-aarch64-compiler-rt-19: drsC-OAUTtCxeh0QqSxjWg - toolchain-macosx64-aarch64-compiler-rt-20: BAjsGX9yTAqNTlV59EQj4A - toolchain-macosx64-aarch64-dump_syms: deaJm9FJSHu03HhPuUYEsg - toolchain-macosx64-aarch64-fix-stacks: EENXfDy5T2aIuT6fsoCKPQ - toolchain-macosx64-aarch64-llvm-symbolizer-19: Kj6vlmzwRSW4voyufuuzkw - toolchain-macosx64-aarch64-minidump-stackwalk: FtJVyCyAS6qUkilk5ZyLwQ - toolchain-macosx64-aarch64-nasm: Ade4n4kOTc-IXi2Gwq04iw - toolchain-macosx64-aarch64-node-22: dXl-7tSKRr2cPg941azyQQ - toolchain-macosx64-aarch64-pkgconf: EQL1yDBqSSu5KAUYXtVcVA - toolchain-macosx64-aarch64-sccache: UkUkrymEQVGhW4kYQkdkxg - toolchain-macosx64-aarch64-uv: ZYaqQj0WS2mcIFww_xATzw - toolchain-macosx64-cargo-vet: LR0rDgMaQoSsyyB5KwgopQ - toolchain-macosx64-cbindgen: eFuYfqtzS8y9_i0BX-ABGA - toolchain-macosx64-clang-14-raw: TwTYzELmS56cFgLGMFbNpA - toolchain-macosx64-clang-19: TH-mq6NdRCeBpPBy0DoDEw - toolchain-macosx64-clang-19-profile: ambNS0S1QMiBY5aAUgIBAw - toolchain-macosx64-clang-19-raw: Z66viM8xQaK1XV_uqc_41Q - toolchain-macosx64-clang-19-stage2: eJD_KhM9Ssy9LnnJTp34mg - toolchain-macosx64-clang-20: BVTDwH0zTIKs-UWbhiDUyQ - toolchain-macosx64-clang-20-profile: Qwyet8weQVe-vNfhpVlcwA - toolchain-macosx64-clang-20-raw: R0yptG_ZTy23ISP7X95a0A - toolchain-macosx64-clang-20-stage2: CaJ6zLH5SlWFl2kwVOdZ0w - toolchain-macosx64-clang-tidy: byWhdastSd-wKGGK2liL2Q - toolchain-macosx64-dump_syms: SVzOy9eDRbSGfAcS2A3PxQ - toolchain-macosx64-fix-stacks: cMJ0_LfxSSexeIpnKCFv-w - toolchain-macosx64-geckodriver: H3JwpndAQmSh2_zExBwBfQ - toolchain-macosx64-gn: H_jGh321QhWFOPVkkZOEpw - toolchain-macosx64-llvm-symbolizer-19: PCbxqGUxT5q-kFp4HZFyaw - toolchain-macosx64-minidump-stackwalk: LZiPoe2mQCyaVzhG5ICSMA - toolchain-macosx64-nasm: LvPMEhYaTeiQRTYDR0pYJQ - toolchain-macosx64-node-22: b8fK_EjOT9-VrvgI2iIWFA - toolchain-macosx64-pkgconf: DjtgtdH7R6iit_QTCKwBRQ - toolchain-macosx64-python-3.11: fPWH26xtSten4kAaJ56L7g - toolchain-macosx64-python-3.8: fOheRbtyS0CXza_j8FVJjQ - toolchain-macosx64-rust-1.86: KeNYfozWSRGWerFu6Rr5Qg - toolchain-macosx64-sccache: DG86BgLOQp23QHOaBzX7-A - toolchain-macosx64-sdk-13.3: LBr3hugCROK-rhgsREfmFw - toolchain-macosx64-sdk-15.4: GJlf3AJATzOe5dFaSd9BiA - toolchain-macosx64-sdk-15.5: RLhk28ulTxmCFblsX4PmoA - toolchain-macosx64-uv: PcW9z8C4RdmdTG7SNePaYA - toolchain-macosx64-x64-compiler-rt-19: DJSeSNOTRQOgRLC5I5mGcg - toolchain-macosx64-x64-compiler-rt-20: dzvSjt60R2-wCCGIuGdzEg - toolchain-macosx64-xz: RwQudxINS6SqkaKmTnAEFw - toolchain-mingw32-rust-1.86: aEmne3D0SXi6HlZsKY4ejg - toolchain-newtab-node-modules: NIgJw15VRvKxx7rpofeH8g - toolchain-node-modules: K-KGvXeqTv-q-Ug2_9XJYg - toolchain-nsis: GBOrAZWyTJaAt2HCgVro_g - toolchain-rustc-dist-toolchain: E4oOfnbDSjyA9ErbJrRwQg - toolchain-stylelint-plugin-mozilla: arDTRsRfRses7FJjp4UPCQ - toolchain-sysroot-aarch64-linux-gnu: UfK82MaNSIO7pSqrmWB68Q - toolchain-sysroot-i686-linux-gnu: acymADRKRn6EXo7j2ufszw - toolchain-sysroot-wasm32-wasi-clang-19: P0hlFTLnT3qa5z50KjYGkw - toolchain-sysroot-wasm32-wasi-clang-20: CtCfdamrQK6WfO-VoPYRiA - toolchain-sysroot-wasm32-wasi-clang-8.0: WQ7_ZAH2SluOOnwdQpsO5w - toolchain-sysroot-x86_64-linux-gnu: Xf_AdHqjSd-OXsONpuOFYA - toolchain-sysroot-x86_64-linux-gnu-x11: KcQXF5ohRLKBYZ9gLBxXAg - toolchain-talos-pdfs: JT0pqE_DSUmx2cuODcf7kQ - toolchain-wasm32-wasi-compiler-rt-19: CJx_wybsQ2Om55xBRsHKFw - toolchain-wasm32-wasi-compiler-rt-20: ZLqAlxYhSD2jtXYEI5x81g - toolchain-wasm32-wasi-compiler-rt-8.0: aVWuONUWSPqH8nLtn8GIXA - toolchain-win32-compiler-rt-19: G8JbUuNKQ5GP5GS4JbkpsQ - toolchain-win32-compiler-rt-20: aJ8JHG1vSb66ogBh4XLAJw - toolchain-win32-fix-stacks: FxVHWnWZQZ6ywSdkUYvPDw - toolchain-win32-minidump-stackwalk: aTLCNnL-RVW3asaJKfmkyQ - toolchain-win32-node-22: HZBKlq8mSICEjsFrRliqcA - toolchain-win64-aarch64-cbindgen: FWv9BS_aREC_dbu_xJZOpQ - toolchain-win64-aarch64-clang-19: I1WakFQwSfqvinb_vF7wOg - toolchain-win64-aarch64-clang-19-raw: J_ZJ9lmzQuO8gKGPtJ0pxA - toolchain-win64-aarch64-clang-20: ddP6lKSNQJOeC3Ur8mRKXg - toolchain-win64-aarch64-clang-20-raw: LaG3m2kSRHCRjE2iV1bEsQ - toolchain-win64-aarch64-clang-tidy: YxKDYAqHT6um-twKYVGvcw - toolchain-win64-aarch64-compiler-rt-19: QBB2qstmSyuVqMgifIB_xg - toolchain-win64-aarch64-compiler-rt-20: AIl5Gf_nTLyTmCSq5qoaQw - toolchain-win64-aarch64-dxc: L5I_N1zMT82EzDobmzJjNQ - toolchain-win64-aarch64-libxml2: DXFVwymyTcyiPv2T4CfR6w - toolchain-win64-aarch64-mozmake: FuozNVm_S2yz8nL9zKTqLQ - toolchain-win64-aarch64-uv: N7pAlGSCQ-qeERWPtWhhxA - toolchain-win64-aarch64-vs2022: cNAqxrA0SLiljBsJY58p5Q - toolchain-win64-cargo-vet: VK7wZIy7T8eJWWMicEvgng - toolchain-win64-cbindgen: fSLkghzWSk2hyoP2meJglQ - toolchain-win64-clang-19: ZVyF12YmRz29tTrbEtKhWg - toolchain-win64-clang-19-profile: VimfqwnqTt-qKQGEtRYu_Q - toolchain-win64-clang-19-raw: Attwa1MzS4yBd_PAal1Iew - toolchain-win64-clang-19-stage2: WamZKSpaSf-Sk4xUf0qRbg - toolchain-win64-clang-20: UmeD8brcTeeZxpbVPwST6g - toolchain-win64-clang-20-profile: T_vX2e_PTcCUCKZIzHgNxQ - toolchain-win64-clang-20-raw: MKkxtQsJRvuKp6l1uJ9Szw - toolchain-win64-clang-20-stage2: Nc7dmlLkRm-VXqw-ivSU-Q - toolchain-win64-clang-tidy: Ap4NLUqRQwum0-JJ6yGV6A - toolchain-win64-cmake: HdVnY6FYTRufZ1yU9kvlsg - toolchain-win64-compiler-rt-19: Diypigw1QWiM1BqWtiNYdA - toolchain-win64-compiler-rt-20: BifjFRoOQK-RPr5CoXU74g - toolchain-win64-dump_syms: aI0dSSJORWC9rntH7AqUAw - toolchain-win64-dxc: FGQpxFvoSoOoKDYY88JB-A - toolchain-win64-fix-stacks: EfkanMCiR-mJoyjLBr8ZBA - toolchain-win64-geckodriver: AcEoI6TSQxqBqQ6A1KZd7g - toolchain-win64-gn: BzK2E_WIQmOMF72aEUl23A - toolchain-win64-grcov: HbUNkW3xQnelxikYoKz0cQ - toolchain-win64-libxml2: EuzTDzUBRxm4XRCMZv4ffA - toolchain-win64-llvm-symbolizer-19: Tg4PpcoqQ_mSJZbVcC6TfQ - toolchain-win64-minidump-stackwalk: UkiUZQDuRT-MQkIhYXktMQ - toolchain-win64-mozmake: B1tRmvriTdyo-V7tWhbDhg - toolchain-win64-nasm: ORTXxXV3RQOef4PkOnmKjg - toolchain-win64-node-22: bd_dHR19STWdK0ICZ0QhOw - toolchain-win64-pkgconf: IEbbWN0jRtqEW8K9qKlXtg - toolchain-win64-python-3.11: LyKFnI5rQcmYVScSm5brww - toolchain-win64-python-3.8: Eoy9gS_9Q5yyIqTxWrMyXw - toolchain-win64-rust-1.83: fwJsreDAQZOBGvjfBjBG0g - toolchain-win64-rust-1.86: L-JB51K4T26sa7IlCodl6Q - toolchain-win64-rust-size: HHN4UoEaRE-baEQKne12uw - toolchain-win64-sccache: FOE1EeNISLmpXrbrAzHrsA - toolchain-win64-uv: MJbXDvNoR4C2OPLs6kc0WQ - toolchain-win64-vs2022: S2Mdsj_eS7az9PgN1mAxjA - toolchain-win64-vs2022-car: P2oH7lxQQAi2s7mI1CU_kA - toolchain-win64-winchecksec: MWdkLe8CSa-Xs8w0_RBOWA - toolchain-windows-rs: du4qySbiT-O1muylCuUNkw - toolchain-wrench-deps: J57TpIuIQ6mnpD33rFaMtQ - upload-generated-sources-dummy-icecat-macosx64-shippable: VmNIfn-kTLqMlaFhIBIypA - upload-generated-sources-linux-shippable/opt: S4vvVyQHTDmr2tL4T2MrXw - upload-generated-sources-linux64-aarch64-shippable/opt: IqinBKqoQIqqx4QTCyzt1w - upload-generated-sources-linux64-shippable/opt: R6I3Nh6ORSCP-11RrjS_eg - upload-generated-sources-macosx64-aarch64-shippable/opt: H-6MExunTkqdWO-ehEJ3ng - upload-generated-sources-macosx64-x64-shippable/opt: IIH3ZklzR5icQrSN7YzgBQ - upload-generated-sources-win32-shippable/opt: P5s3YwlyRymL_GX5B2j4OA - upload-generated-sources-win64-aarch64-shippable/opt: aLCBduKbTnO62dfB3Ha9_g - upload-generated-sources-win64-shippable/opt: DSv0Z3tWRgewOdiAYzOGpQ - upload-symbols-dummy-icecat-macosx64-shippable: HJovZ5baTGaX55EEO2dvgg - valgrind-linux64-valgrind-qr/opt-swr: YUqbSn7gTDKItjwzeTnBXg + attribution-win32-ach-shippable/opt: UuE7Boz8RSSJfLKKuBIIUg + attribution-win32-af-shippable/opt: J4t7UEFsSkeDsDy5J-iIag + attribution-win32-an-shippable/opt: Z_9m1CumQ32e7rJ4FDNXUQ + attribution-win32-ar-shippable/opt: J-gzjDM-SsaUG09jQvCElQ + attribution-win32-ast-shippable/opt: W7knS5gLSx-_p1u7KLWgwg + attribution-win32-az-shippable/opt: NgNPcwv8R_S6EYmBNHZ74w + attribution-win32-be-shippable/opt: PoNYAvnGTN6E7z969L8ucA + attribution-win32-bg-shippable/opt: X5EeszzGSMChFwjHRDsuLA + attribution-win32-bn-shippable/opt: WF8sRu4aT12Q4Nfo5wQYGw + attribution-win32-br-shippable/opt: diyK8t1iQMCT25S_Mk-Iyg + attribution-win32-bs-shippable/opt: c9P_R9e3Spmw--GohMQBHw + attribution-win32-ca-shippable/opt: Sf9kHZJ5RaiSQQoiaHre8w + attribution-win32-ca-valencia-shippable/opt: GQkrma1pRmOk-mTepYSMfQ + attribution-win32-cak-shippable/opt: efQMzssrQ7yPTeUN7zg7qg + attribution-win32-cs-shippable/opt: CYDscrWsTsWqQKvnknxfiA + attribution-win32-cy-shippable/opt: dOw94-7lQF6gY2eifOlGuA + attribution-win32-da-shippable/opt: U1-1S5QAScWkPr9py6cqTw + attribution-win32-de-shippable/opt: OsSIU-0vQ9CT67dU4SVImQ + attribution-win32-dsb-shippable/opt: Z_HqJT2VRJGS2Z-6PqgbiQ + attribution-win32-el-shippable/opt: fKA6vRIMT02KoA_RldyJ_A + attribution-win32-en-CA-shippable/opt: AjkhZW-hR7eDm4irtFN3CQ + attribution-win32-en-GB-shippable/opt: NbkqKE6jQ5GW8uEBy4A9eg + attribution-win32-eo-shippable/opt: Sd1gZzARQYSi3ExSMC9shw + attribution-win32-es-AR-shippable/opt: LMLWQ3n_TGaFXfB0jt1WVQ + attribution-win32-es-CL-shippable/opt: UHLhiFHYQLuUu8rfmXFWvg + attribution-win32-es-ES-shippable/opt: UvX-cwK4RECASLL3ZzWAag + attribution-win32-es-MX-shippable/opt: MLjaryPXTrW4UPlVeGIKvg + attribution-win32-et-shippable/opt: bf2LWZR6RFi9j98dmttk0g + attribution-win32-eu-shippable/opt: Cl_l39nlTneMoGJrn-A4eQ + attribution-win32-fa-shippable/opt: SRaRDILTQEGRmj5N0cxMtg + attribution-win32-ff-shippable/opt: S4GmjVnCTaCgR8tvYVDi2Q + attribution-win32-fi-shippable/opt: Gm1zoavBQ3q6rn7wEH5PFA + attribution-win32-fr-shippable/opt: EA7yc1RpRUCGsQ1banJG1Q + attribution-win32-fur-shippable/opt: Pu-Jje5sSHu78Fih0JGvWg + attribution-win32-fy-NL-shippable/opt: SjvUXmCiSrqVmrAuLolqcw + attribution-win32-ga-IE-shippable/opt: PjRZdTIfRSizYNmWYI6F_Q + attribution-win32-gd-shippable/opt: RuZO20WuQS-w-prOLlXPxQ + attribution-win32-gl-shippable/opt: Qrcjln_HQre5podVpfVTKA + attribution-win32-gn-shippable/opt: EUgOLJKVQkmehkJkxHyLAA + attribution-win32-gu-IN-shippable/opt: aldKfb0zSSav8c1ccvAYfg + attribution-win32-he-shippable/opt: M3pUKsvNTuCIhjjpYASjSw + attribution-win32-hi-IN-shippable/opt: fzWtPAipSfu17VP8GbLz_w + attribution-win32-hr-shippable/opt: N9Pkq4XvR6uX5kGWGwrNAg + attribution-win32-hsb-shippable/opt: SRj4znCBQ2ihhVgQ6mDbiw + attribution-win32-hu-shippable/opt: CkItICkmREKMu4u6lozDnQ + attribution-win32-hy-AM-shippable/opt: WGXfyqyLS3-V3QT7p0eYlg + attribution-win32-ia-shippable/opt: EqQ-AtwRRrulmXdd5pJGtg + attribution-win32-id-shippable/opt: MyzbfmK6SOe_eiUxW8V87A + attribution-win32-is-shippable/opt: XHd88_MURRyLFnKNgqijBQ + attribution-win32-it-shippable/opt: KTkfShE-TQygvXXRe-qBAQ + attribution-win32-ja-shippable/opt: Kt4eG8nxRjqD3jpzIs29sA + attribution-win32-ka-shippable/opt: DmzIXoI7REOPIuzzneEKcQ + attribution-win32-kab-shippable/opt: OwWAZIFNQmmquiBm73fOtQ + attribution-win32-kk-shippable/opt: Z9e11WUYSdCTjbDBQO8NWg + attribution-win32-km-shippable/opt: JggnMkdQRMe9NAKKTjQUGQ + attribution-win32-kn-shippable/opt: MzTLGtyNSGyTY9mBSbPJqA + attribution-win32-ko-shippable/opt: cCEr5j-lR6mRiUFQPaBwKg + attribution-win32-lij-shippable/opt: Jn9SbZAGS0mwCZasrj-VyQ + attribution-win32-lt-shippable/opt: cpKCfb4FQmG_zeKJ-waYVA + attribution-win32-lv-shippable/opt: fXBQwPLBRtWqnt23_sAUCA + attribution-win32-mk-shippable/opt: cWfgOu12SJ-5FYtQD1WcDg + attribution-win32-mr-shippable/opt: B5Ejrl3mSUeKp7kNRu85Cg + attribution-win32-ms-shippable/opt: RzYeKnmvTCaA65egE_bE0w + attribution-win32-my-shippable/opt: B1EmPYJfTri5r-CZZjaHug + attribution-win32-nb-NO-shippable/opt: BztVdROKQHGINK1H2gXnxg + attribution-win32-ne-NP-shippable/opt: VNw2X5O-RrWsAfHx5x_n8g + attribution-win32-nl-shippable/opt: FpXLhog6TDSRyabJklPh2Q + attribution-win32-nn-NO-shippable/opt: Qf069Jf4SwGu1_GGDzaBQw + attribution-win32-oc-shippable/opt: TWC11KijQrurE3_pKawZSw + attribution-win32-pa-IN-shippable/opt: dCiC2EJeRkCTSjoxLzfStw + attribution-win32-pl-shippable/opt: acU9Ixq3Siasxx-0ndgYGQ + attribution-win32-pt-BR-shippable/opt: GZ3Y4QR2RCWs4L1-p7Pz9g + attribution-win32-pt-PT-shippable/opt: aenvlUj7SlGIG2sj9h68Pw + attribution-win32-rm-shippable/opt: ZC9EnzEKQhus1kphhUGKkg + attribution-win32-ro-shippable/opt: KkHZ83mmRVW-hjcPdQ42gA + attribution-win32-ru-shippable/opt: fe95HMM-RUugLQqkPo6sGg + attribution-win32-sc-shippable/opt: SVrN3oq6T9yuo16p5q9JaA + attribution-win32-sco-shippable/opt: GCmLrYehQ7KbAsp3kpdk0w + attribution-win32-shippable/opt: Amc00LvfQ7yeQ-UeXbYzbA + attribution-win32-si-shippable/opt: S3jB3m7iQwCjGY2elLz9EQ + attribution-win32-sk-shippable/opt: BB8je-SUTFSWdZW0T2NFKg + attribution-win32-sl-shippable/opt: dBPwwOHzRo22mwx_HlUDdw + attribution-win32-son-shippable/opt: RUtWuzPGT4mc0BjUzxHkYg + attribution-win32-sq-shippable/opt: GHVKcbovT-ybhtq7T3Igbg + attribution-win32-sr-shippable/opt: NuzaAcoHS36U3ArdNeaZRw + attribution-win32-sv-SE-shippable/opt: VEc8m1ZuRumcOLTyMiY4Lw + attribution-win32-szl-shippable/opt: UuR-E0xbSyibJOPStJJQJw + attribution-win32-ta-shippable/opt: cnjafnj6SKmIcQF38Uij1g + attribution-win32-te-shippable/opt: N16YSjADQAC5sBYp_W7RLg + attribution-win32-tg-shippable/opt: Xl7ZNi9WROyRJl02NrEStA + attribution-win32-th-shippable/opt: NqW-i265SJW4D4ZqKdLPvQ + attribution-win32-tl-shippable/opt: UV0HxSdsT8G3WQl4EqRmKw + attribution-win32-tr-shippable/opt: XEnN0Bg5QvOhMlpFX0J91Q + attribution-win32-trs-shippable/opt: XjudSLg5RIKkXIeoFBCDmg + attribution-win32-uk-shippable/opt: c0_80fvBQ9Cu6ZL6EaVgMg + attribution-win32-ur-shippable/opt: KQtD1P-rSjeo7twnlaVeHw + attribution-win32-uz-shippable/opt: HHEvQLXRQvWgaA5_67iX7g + attribution-win32-vi-shippable/opt: XYpbswSRQ5yM7xicYbEfog + attribution-win32-xh-shippable/opt: HfWW8WOZRk-tRQYtPuB61w + attribution-win32-zh-CN-shippable/opt: HlTPNpMyTNiY6UGP7yGVmA + attribution-win32-zh-TW-shippable/opt: G062guOJR4KPT8j6U9xp2g + attribution-win64-aarch64-ach-shippable/opt: O5bPOOn8TsSarTeeB4op8g + attribution-win64-aarch64-af-shippable/opt: S27wuP6HRkG2oznezqEp_A + attribution-win64-aarch64-an-shippable/opt: J2s7JkMES7ifrv_0903oDQ + attribution-win64-aarch64-ar-shippable/opt: cwlNLsz2Qzu-vVDQqXWe2A + attribution-win64-aarch64-ast-shippable/opt: FD9Upx1rRnGtdBjTqgJfnw + attribution-win64-aarch64-az-shippable/opt: bjoMKwOSQXK3HAKU_Ciz8w + attribution-win64-aarch64-be-shippable/opt: W0EuAdPCQ--EUkgi9uj1hw + attribution-win64-aarch64-bg-shippable/opt: QSbJ-cyfQNiv4RBa_XO08w + attribution-win64-aarch64-bn-shippable/opt: VRpm625cSDi66OyvTaHJHw + attribution-win64-aarch64-br-shippable/opt: AIZsRSZwQ6-eT-RiujTPtg + attribution-win64-aarch64-bs-shippable/opt: GXeQpSmnT-ujUMXFIB8kCg + attribution-win64-aarch64-ca-shippable/opt: NxgsH0DJQ-GgTpXUWGSJYg + attribution-win64-aarch64-ca-valencia-shippable/opt: S6vyGkCgTNSo29h2d_XqZw + attribution-win64-aarch64-cak-shippable/opt: KaBxjk-VR3OMtsnhjexQgg + attribution-win64-aarch64-cs-shippable/opt: RjvBfRNYQ4iz-oSE2zFABg + attribution-win64-aarch64-cy-shippable/opt: WsT5uztSQiGvZgm0Dco2og + attribution-win64-aarch64-da-shippable/opt: IjrYaTb_RZWv6GyQgkyggQ + attribution-win64-aarch64-de-shippable/opt: TDODbzGnSROjd0pBMtY_5w + attribution-win64-aarch64-dsb-shippable/opt: OZphZRHQQE6zzXHJg5vDtA + attribution-win64-aarch64-el-shippable/opt: BH6vknzZSgG82lCLLNOReg + attribution-win64-aarch64-en-CA-shippable/opt: ZbpnM77pT4yhiN_qSTvYrA + attribution-win64-aarch64-en-GB-shippable/opt: D9en0JzyT0S3EeEP6bCG-A + attribution-win64-aarch64-eo-shippable/opt: SI4eoSupSA2aGBC9aJrygg + attribution-win64-aarch64-es-AR-shippable/opt: bcNfrdMiSnqgsTbAMXSY1Q + attribution-win64-aarch64-es-CL-shippable/opt: ZK6CNEnGRGexwPqYWYP1fw + attribution-win64-aarch64-es-ES-shippable/opt: U7jn0Um3ROmOWuqHve5CvQ + attribution-win64-aarch64-es-MX-shippable/opt: Xo2ens4eRiKFPpALVZWszQ + attribution-win64-aarch64-et-shippable/opt: EsPXvUUdTFW2JDQPBEVaoQ + attribution-win64-aarch64-eu-shippable/opt: AwRPMoMgTCyGoJSN4ve_SA + attribution-win64-aarch64-fa-shippable/opt: U4JB5tIxSPKJl3DE6i7WDQ + attribution-win64-aarch64-ff-shippable/opt: PIPfE8V0RdOm8CM82cDJZw + attribution-win64-aarch64-fi-shippable/opt: RbvSIt7iQgO_1ihf_Wjhsg + attribution-win64-aarch64-fr-shippable/opt: fAInLwU6QN2RMYWVCiiKTA + attribution-win64-aarch64-fur-shippable/opt: eiYaGRngSD-YmgT1a2xs2g + attribution-win64-aarch64-fy-NL-shippable/opt: AsSt2BboQlGUfWfQJs_6lA + attribution-win64-aarch64-ga-IE-shippable/opt: DHvWeETrRU-DW2VqSdPx5Q + attribution-win64-aarch64-gd-shippable/opt: DdueeHdBSDaFYcDxkSV9GA + attribution-win64-aarch64-gl-shippable/opt: Fhx20KeXTU-kh6NbPzNmWQ + attribution-win64-aarch64-gn-shippable/opt: Y6HdVoNDRLGCIS-BcxievA + attribution-win64-aarch64-gu-IN-shippable/opt: U0bnc3FgQYCri38e-sh2Ag + attribution-win64-aarch64-he-shippable/opt: RDvNvCRKRnWiVIU0FZdNmg + attribution-win64-aarch64-hi-IN-shippable/opt: BRVlY4_ZTIS0QcLwjvMVtQ + attribution-win64-aarch64-hr-shippable/opt: Q_CHhCh7Qvue0n2h3DYz9g + attribution-win64-aarch64-hsb-shippable/opt: RfIBqYa3RfeYO8VsBk_-7Q + attribution-win64-aarch64-hu-shippable/opt: DZTgc2AeTMimSL6URmetXA + attribution-win64-aarch64-hy-AM-shippable/opt: cenZWFHCQlquaArk2igreg + attribution-win64-aarch64-ia-shippable/opt: PXcd0zzvSyOjEc51L_lpUw + attribution-win64-aarch64-id-shippable/opt: dWvt96O-QOW932CLHikg1A + attribution-win64-aarch64-is-shippable/opt: KYkKYxmPRY-VCeFCVvkZRg + attribution-win64-aarch64-it-shippable/opt: VRixsrckTXamllM1TDRy_w + attribution-win64-aarch64-ja-shippable/opt: cKxlvQf-Qt65VIFnyuIMSw + attribution-win64-aarch64-ka-shippable/opt: bR47Xlh0Qq2tUQe9ZfWH3Q + attribution-win64-aarch64-kab-shippable/opt: Lah5OxvHQlOA-wSTxaq2xg + attribution-win64-aarch64-kk-shippable/opt: azPWRzfURjOQX0NCEc5ViQ + attribution-win64-aarch64-km-shippable/opt: LXuBAAUbSZeoAhDzSG2nlg + attribution-win64-aarch64-kn-shippable/opt: S8D_tx5UT8mQChkM_TXIgg + attribution-win64-aarch64-ko-shippable/opt: AFvhlAybQ3yYVd8__1MApQ + attribution-win64-aarch64-lij-shippable/opt: aW_SpXBeQ3-8Dw2DphgnzA + attribution-win64-aarch64-lt-shippable/opt: d7EOxA_MTVKDcP0hzTfekg + attribution-win64-aarch64-lv-shippable/opt: dwjgvItPRNGP7Q1KBPKnTQ + attribution-win64-aarch64-mk-shippable/opt: dLucGUxZRo6zVMYKoC1wLw + attribution-win64-aarch64-mr-shippable/opt: PbUQNAJESzqSQeWq8Iwsqw + attribution-win64-aarch64-ms-shippable/opt: ZfsOi4NkTPaygVXNztIIlQ + attribution-win64-aarch64-my-shippable/opt: Tlcl0qMNQxaMoKTsLtvjyw + attribution-win64-aarch64-nb-NO-shippable/opt: ZP4U4Yb9QYando5j6fIoYg + attribution-win64-aarch64-ne-NP-shippable/opt: BgvxQE9kRIW-nsJg3-Jg-g + attribution-win64-aarch64-nl-shippable/opt: Y6jn87YGRnWAM6vXQyEg1A + attribution-win64-aarch64-nn-NO-shippable/opt: APirbtsnShSVFqppYW8XLQ + attribution-win64-aarch64-oc-shippable/opt: ULCcbytXSG2YFSCp5KnbIw + attribution-win64-aarch64-pa-IN-shippable/opt: RwJT_sWzS6ue6cDraHlcqA + attribution-win64-aarch64-pl-shippable/opt: WtC2Il8KTbqFlT79EhuAwg + attribution-win64-aarch64-pt-BR-shippable/opt: BKS7LvPbTJSF7xjoScVO4Q + attribution-win64-aarch64-pt-PT-shippable/opt: bzyT3xfQQNG4JK78yVjJRA + attribution-win64-aarch64-rm-shippable/opt: ZMuD1UYRSteYoKOxYZPPdw + attribution-win64-aarch64-ro-shippable/opt: H6X2yCRnS4ax43tPJUcliw + attribution-win64-aarch64-ru-shippable/opt: aSuZH9wZTim-_XQN_1YhlA + attribution-win64-aarch64-sc-shippable/opt: WcGSOPhsR7OtbF9DXTUv9A + attribution-win64-aarch64-sco-shippable/opt: AfQ4xhv7Q3-SPZ4tHRNquQ + attribution-win64-aarch64-shippable/opt: MBc245dPQUilDbYze_UNtQ + attribution-win64-aarch64-si-shippable/opt: fJz3Vgr-RwaxUw0IcWlXZA + attribution-win64-aarch64-sk-shippable/opt: Lf6eKxM8S6-tMuZliErBBQ + attribution-win64-aarch64-sl-shippable/opt: aabq1NWDRZe4pZsHe5Fd9g + attribution-win64-aarch64-son-shippable/opt: JfiXigIORfWcEVzd25-Ltw + attribution-win64-aarch64-sq-shippable/opt: KcchQn3DSGS2cM21ranpgA + attribution-win64-aarch64-sr-shippable/opt: H9EmRsGVS7WTEloecce6dg + attribution-win64-aarch64-sv-SE-shippable/opt: SvU11xI5QEKKVP_AXGw_ug + attribution-win64-aarch64-szl-shippable/opt: MX9OZMGHTeSV66Yj5cQ-fg + attribution-win64-aarch64-ta-shippable/opt: MwNCgRLQQjGcwiNQ10S47g + attribution-win64-aarch64-te-shippable/opt: OM5ms2czTySDqysQxea9HQ + attribution-win64-aarch64-tg-shippable/opt: c5WmootCT76Yx9d8fBtu-Q + attribution-win64-aarch64-th-shippable/opt: F0lYFpscSKuVuyvGBUuMUg + attribution-win64-aarch64-tl-shippable/opt: e5g_HXUlSEuWYVhoS4qt6Q + attribution-win64-aarch64-tr-shippable/opt: Ef0BVBitQd-p0KQ4tYUQRQ + attribution-win64-aarch64-trs-shippable/opt: GiPSuzSoTWqjer5xtANFyQ + attribution-win64-aarch64-uk-shippable/opt: Zfy2l3zXTgywfUdqhbzB_w + attribution-win64-aarch64-ur-shippable/opt: N2koCgzJTXyuzpjaTvSYXA + attribution-win64-aarch64-uz-shippable/opt: Ayz_B1zyRQa5iQ69Oo2BrQ + attribution-win64-aarch64-vi-shippable/opt: f9OUHKbSTCiU_u9M87erFw + attribution-win64-aarch64-xh-shippable/opt: PooCe372TGm9UziYQoNaeA + attribution-win64-aarch64-zh-CN-shippable/opt: ZmZg7BA-RcODymDxabUteQ + attribution-win64-aarch64-zh-TW-shippable/opt: RbGTq3UKSFeKcGyCDWfnhQ + attribution-win64-ach-shippable/opt: fw53EKdpTP6axd884X51bg + attribution-win64-af-shippable/opt: U_2WQ8_hSsyDbfzs_oLlDg + attribution-win64-an-shippable/opt: Hwm_ZffFSMqLIwbuobnrkw + attribution-win64-ar-shippable/opt: E3EsXorqRR-ybGFOBvqMjw + attribution-win64-ast-shippable/opt: eiGbY71_Tke3nEEgYGmfBw + attribution-win64-az-shippable/opt: cFemWrAMSGuOCNJkN3Yf3g + attribution-win64-be-shippable/opt: bDjddtL-SEOdj-KS5HrIPA + attribution-win64-bg-shippable/opt: eG9acBjgRHS1dXX_8-XzkA + attribution-win64-bn-shippable/opt: Sjt-VjCJR3yHW7wOPCGeMA + attribution-win64-br-shippable/opt: DqZcs2u6T_WZpM_NK1z68w + attribution-win64-bs-shippable/opt: ZII99vqSS_S5N1fnLbyWaQ + attribution-win64-ca-shippable/opt: MCv5Uq-dQbmTKzhQfE8fiQ + attribution-win64-ca-valencia-shippable/opt: HQjwCQdWQtmp8bZWZvARzg + attribution-win64-cak-shippable/opt: Siu8sOYASVuaXXr0owbGzA + attribution-win64-cs-shippable/opt: dbtVqQrATqSTKBTNz92w-Q + attribution-win64-cy-shippable/opt: Ky_ShNbGTImnrcUpsZgyCw + attribution-win64-da-shippable/opt: Ufbfrmr6SwOp-f64XXR98g + attribution-win64-de-shippable/opt: dm5MdQJpSXy1XkXqjqv0tA + attribution-win64-dsb-shippable/opt: Y6I42W2QSsiDffGP64T2sg + attribution-win64-el-shippable/opt: M3vfEJ_RTuud5L-bKuVRBQ + attribution-win64-en-CA-shippable/opt: YIczCZpJTsq4DtnmM-YJ8A + attribution-win64-en-GB-shippable/opt: QJKbJZJ-R2GamMS4wmv8Tw + attribution-win64-eo-shippable/opt: YlzMUmUVRKGC5bWAbPVKcg + attribution-win64-es-AR-shippable/opt: S2-9SBhgSqCurk_G4nozdA + attribution-win64-es-CL-shippable/opt: VIRpKHBLT6OHJzpSgA3B3g + attribution-win64-es-ES-shippable/opt: VuX4saJ1QMC23Ig4HSTYLA + attribution-win64-es-MX-shippable/opt: XMtWRJHDQmaHO8Kwrcm_Tg + attribution-win64-et-shippable/opt: b2q-ymLWTQGJDE54edWVuQ + attribution-win64-eu-shippable/opt: XURSNpcOQtaIgED23OUWqg + attribution-win64-fa-shippable/opt: Om_b8RouTlSXsd6ZbCOi1g + attribution-win64-ff-shippable/opt: IvUMj1NhSRG-GZ34Zyh0nw + attribution-win64-fi-shippable/opt: df8GQW6uS8ycXKb7KMwSwg + attribution-win64-fr-shippable/opt: ftI8Ew3zQVu2ttoWyP0urQ + attribution-win64-fur-shippable/opt: PCowX7e5QCqKguQxRxoi6Q + attribution-win64-fy-NL-shippable/opt: Afy_Dnk9SnqpaYtZOGIQlA + attribution-win64-ga-IE-shippable/opt: Vnm8O206QQGlGh6Qek7uhg + attribution-win64-gd-shippable/opt: MarZpgTqStCN07CN_EVa1w + attribution-win64-gl-shippable/opt: U3LOnpSjQrCvROO6ksHDlQ + attribution-win64-gn-shippable/opt: Mp0atu8pSSW8OBvKlFIHEQ + attribution-win64-gu-IN-shippable/opt: NErEdYm8T4aX_up2kT6_9A + attribution-win64-he-shippable/opt: R9mCgX8RSrKq8fmr682Ijw + attribution-win64-hi-IN-shippable/opt: VJhqKRxVTw-GpS3dWyhpwQ + attribution-win64-hr-shippable/opt: DfAPTiu9S0SthTZZdf25MA + attribution-win64-hsb-shippable/opt: MVuPDv1JT9iz0oLcsL5NDw + attribution-win64-hu-shippable/opt: UR4IBY3bSwukgDU3di5X7Q + attribution-win64-hy-AM-shippable/opt: OzIsnL64QX2_ydBRDlKo8A + attribution-win64-ia-shippable/opt: NxGrODUGSi6_JnPyeOm7dw + attribution-win64-id-shippable/opt: PuIZLX6NR4imqMdYy8dOMQ + attribution-win64-is-shippable/opt: YFdIAqFlTFmLmA3MUFErfQ + attribution-win64-it-shippable/opt: HxudkGLvQ_2GunZ7ReFwMg + attribution-win64-ja-shippable/opt: JXAb8cY0RtmPj5NgA_bP8Q + attribution-win64-ka-shippable/opt: bI_Uf9dpRrSYCjZJTbkIfg + attribution-win64-kab-shippable/opt: WcWbKeTCQLCd5Qu-PxqCTw + attribution-win64-kk-shippable/opt: ThLro3BJSJu6E1oC4lBDlQ + attribution-win64-km-shippable/opt: Xp8VDDsuTWaRei_QgSUltg + attribution-win64-kn-shippable/opt: bbo2uvJZSVWMSTKd2_SDvA + attribution-win64-ko-shippable/opt: DxSMHqiCSLK0TEzN8xeMvw + attribution-win64-lij-shippable/opt: aMg9wrA7T66xaVJ1y7Ep2w + attribution-win64-lt-shippable/opt: Q8lvipRyS6a_rcy992qeXw + attribution-win64-lv-shippable/opt: FPuGXXlvSqiCk1KCvD8NWg + attribution-win64-mk-shippable/opt: ReB4H4aPToK491_lFNoAyQ + attribution-win64-mr-shippable/opt: Y6llV16WRfS3kjyQPtSB1w + attribution-win64-ms-shippable/opt: eVL0vfh8QdW5_ICkRhQyqw + attribution-win64-my-shippable/opt: TdxN6cv6SyG66mCZxWpvgg + attribution-win64-nb-NO-shippable/opt: evkCR86BTdy3Als4twQ5lA + attribution-win64-ne-NP-shippable/opt: D54s1-9fTeKTZ9iYgi0hfA + attribution-win64-nl-shippable/opt: QyBObs3rSkaJLclAclV_bg + attribution-win64-nn-NO-shippable/opt: AG9KrU3wSsW3dc_QGlHjCA + attribution-win64-oc-shippable/opt: JuIGSJJASnGLOrKBjpfRrg + attribution-win64-pa-IN-shippable/opt: EDLxtj7JRQalGznAdA1m-g + attribution-win64-pl-shippable/opt: V_LnVs1MRjeHwfSz6l5Rdg + attribution-win64-pt-BR-shippable/opt: G4dOt6cIR0iXJAswuCFVqA + attribution-win64-pt-PT-shippable/opt: FaDc9iYITfKhEqdXn9WlJw + attribution-win64-rm-shippable/opt: HdnmsxRlSLaHBEaeWtMY2g + attribution-win64-ro-shippable/opt: GXatynQiSR-prAY9JlmolA + attribution-win64-ru-shippable/opt: C9JxrGcwQdeteEoKhSPpQg + attribution-win64-sc-shippable/opt: XVfvrPPzT1OHrguTeRQT_g + attribution-win64-sco-shippable/opt: GVJkuinIQy-oCBQpKZhqKA + attribution-win64-shippable/opt: FaJCybuEQP2WsCpClbodNQ + attribution-win64-si-shippable/opt: OQ71vCaQSECOoPWCFqmYyw + attribution-win64-sk-shippable/opt: WrfQaPApQdiPjtU8YmPhMw + attribution-win64-sl-shippable/opt: cBcvUQi6QsisSuMoX65WDQ + attribution-win64-son-shippable/opt: TNYeFjh1QlGHdLmucW5FnQ + attribution-win64-sq-shippable/opt: HAuQixjcRjauXWbCpL6EhQ + attribution-win64-sr-shippable/opt: KvIEeEslTK24YhCyVYK1Yw + attribution-win64-sv-SE-shippable/opt: W0ECxytCTS-we4KoE98B1g + attribution-win64-szl-shippable/opt: eEHEfx-dTsGDxAYVD0t4LQ + attribution-win64-ta-shippable/opt: OOpLkb0USquGZuOFm0U8Vg + attribution-win64-te-shippable/opt: BzY3c0FNRRaIlAZMwNfajQ + attribution-win64-tg-shippable/opt: VjQbMRvYSnaNiLaWgesFbQ + attribution-win64-th-shippable/opt: YQyvyG8eQ-yiFZLTJGMZeg + attribution-win64-tl-shippable/opt: A8syIDihTAiraY_p37gkWQ + attribution-win64-tr-shippable/opt: JXMYHebxRv-g8k8vaK2qaQ + attribution-win64-trs-shippable/opt: fQkMhB3-SSK1_LaI_9OvkQ + attribution-win64-uk-shippable/opt: VBb0HQjgT5WMrWytzkv2nw + attribution-win64-ur-shippable/opt: X6sJ5F9PTBmbwzdNLfv36Q + attribution-win64-uz-shippable/opt: f3u7E9zxRDmKXxEUSSzwOg + attribution-win64-vi-shippable/opt: brCqSbpIRjuPlQFlFrHqig + attribution-win64-xh-shippable/opt: OC3xMi9rQbilS5tBe4bqgQ + attribution-win64-zh-CN-shippable/opt: SAMeVdGqT_2SpVyNjnsJKQ + attribution-win64-zh-TW-shippable/opt: a5a3KKfpRjeaKXSLYkmr2A + balrog-ach-linux-shippable/opt: e4VZWBntS2y7M97Dy_vifQ + balrog-ach-linux64-shippable/opt: ChLiaj3rSx2rIalKxB9KKA + balrog-ach-macosx64-shippable/opt: JwQmpNisQvauXoZBQ1X-tA + balrog-ach-win32-shippable/opt: KrEE8P8LTBmPq3F6-JUQFA + balrog-ach-win64-aarch64-shippable/opt: R4BFJGjYQdC2TVV1bNpDXw + balrog-ach-win64-shippable/opt: fB9aI7ylRtSMbLmpYe5rJw + balrog-af-linux-shippable/opt: DFN8x2IKRPa4jwrli8ydrQ + balrog-af-linux64-shippable/opt: IO-SwurjSw2uYoou709LIA + balrog-af-macosx64-shippable/opt: WV3DRx7pSu6zSUeEiwv4DQ + balrog-af-win32-shippable/opt: DXuH02ZyTguRcg3egj_btA + balrog-af-win64-aarch64-shippable/opt: KWZ1AFWySuSPrrzSmZ6zfg + balrog-af-win64-shippable/opt: JmtmYLr4Q4CKstg28txtRg + balrog-an-linux-shippable/opt: Xi4yzPwWTOCC6ooSxYuW1g + balrog-an-linux64-shippable/opt: Zdeb24jMSKuWM4CXXTyPGA + balrog-an-macosx64-shippable/opt: SQzmZ6GKT1mjWFxpLg_sJg + balrog-an-win32-shippable/opt: SbHQxN0UShmDL2aCt6Kycg + balrog-an-win64-aarch64-shippable/opt: SOWf8AprS0KcNziHqkjzUA + balrog-an-win64-shippable/opt: L_pTPU7aSw6RRBJAWNeYhw + balrog-ar-linux-shippable/opt: YvQF88NxT7Gdqr_aWm8odw + balrog-ar-linux64-shippable/opt: JWS-I0NNQTu6qxciR7xsuQ + balrog-ar-macosx64-shippable/opt: KR8z6FlTTXit2Usqv6XJqA + balrog-ar-win32-shippable/opt: a1vWVOjmSp-kJ1y9Kmqi5Q + balrog-ar-win64-aarch64-shippable/opt: Ybxwap0HRSWxWuECvhIhaA + balrog-ar-win64-shippable/opt: G9V1nkzuTHer18ad6PLjfQ + balrog-ast-linux-shippable/opt: WLqTI5DeTpKPHLpgB00rKw + balrog-ast-linux64-shippable/opt: ScD7Iz6qSOKsWJa8dvbPNQ + balrog-ast-macosx64-shippable/opt: BCyQbOBIR9Gg-NkikaxVkg + balrog-ast-win32-shippable/opt: ET6ciavaQ_uqW6nYzQcDvA + balrog-ast-win64-aarch64-shippable/opt: G-qFtsF2Tm-NQlkIgGLBaA + balrog-ast-win64-shippable/opt: Iny48vFXRCqi-PUgnPFWMg + balrog-az-linux-shippable/opt: IHqjAVDWRUi9-oxQPYVj8A + balrog-az-linux64-shippable/opt: dQGxZq5oQDONR5lGFe6S2Q + balrog-az-macosx64-shippable/opt: WMbm7ij-R4u1cXnR0NeuiQ + balrog-az-win32-shippable/opt: cxCCNAEtRRqA9h4JqZokBQ + balrog-az-win64-aarch64-shippable/opt: QDQxkK7pRn-iP6irCwuEkg + balrog-az-win64-shippable/opt: afIcsYBHQIeuC_07EAqF2Q + balrog-be-linux-shippable/opt: AQKpoxRETPq43M6ihQybrQ + balrog-be-linux64-shippable/opt: PJBWIlF5Tde5VkbqwNDcoQ + balrog-be-macosx64-shippable/opt: K2U6fbDVT9mQr9oTayoemw + balrog-be-win32-shippable/opt: ETJlGUmTT9i1WrObTS9XQw + balrog-be-win64-aarch64-shippable/opt: Z6Z8nurkRymTwwK-wfUG-Q + balrog-be-win64-shippable/opt: MQPwXlFvQb-p8Mt6dLgXTA + balrog-bg-linux-shippable/opt: f70lYwJZQrmTcvxhgq9AwA + balrog-bg-linux64-shippable/opt: Vny0TJvtRQi5tdXEK_dTAg + balrog-bg-macosx64-shippable/opt: YEiQC-jYS4i7abRhaiRUoQ + balrog-bg-win32-shippable/opt: D6Tgl0gzROa5Aa3Mfa34pg + balrog-bg-win64-aarch64-shippable/opt: dJ6iUBTcQre3BoTbEBdodg + balrog-bg-win64-shippable/opt: bWRmRYSpTUmo1eSgw--HJg + balrog-bn-linux-shippable/opt: BV53RnBbRseUbpkzr2Q03A + balrog-bn-linux64-shippable/opt: ZHuMGHm3TZ2qGXaAXndc3g + balrog-bn-macosx64-shippable/opt: ejbmhu9jRhWc_xNXTM_wqw + balrog-bn-win32-shippable/opt: DgNHcLTZRoalAtnR1-XMpw + balrog-bn-win64-aarch64-shippable/opt: IeF6tcWlTrqYzM4U27c3Qg + balrog-bn-win64-shippable/opt: JA_sG4NjTDCVTYvEGRO3Mw + balrog-br-linux-shippable/opt: aIZaDSQ_RUWXr7dVCFDkUg + balrog-br-linux64-shippable/opt: e08BLBsvQZK7w7M5iyK4Ng + balrog-br-macosx64-shippable/opt: COt9lGO7T1uZMlwg9Dfk8A + balrog-br-win32-shippable/opt: BY7VAEoHRM6FayVZXcnfRA + balrog-br-win64-aarch64-shippable/opt: REMlcFTTSViDtg9yNbXmqA + balrog-br-win64-shippable/opt: MbjI6JmJRSiEIdTJe_tmug + balrog-bs-linux-shippable/opt: EzPq0qh8TqGjiZ-zDudpdQ + balrog-bs-linux64-shippable/opt: DR9k-fAeRg2Xzwumu7zxCA + balrog-bs-macosx64-shippable/opt: YxZF4oe_T2WZahegjJQ98w + balrog-bs-win32-shippable/opt: LKK7NhDaS1W9mdtl_YKI5g + balrog-bs-win64-aarch64-shippable/opt: P_1Z_sq_SoSoLyCC-cP2fw + balrog-bs-win64-shippable/opt: GNTRCJIuR0KerTjYVXbrtg + balrog-ca-linux-shippable/opt: cL8zmdEMS7SypujAxOPOfg + balrog-ca-linux64-shippable/opt: Qk7O-PCcQhiJ6loIfEHzbA + balrog-ca-macosx64-shippable/opt: LRW4mLJnR6yjh-xE6X_3Dw + balrog-ca-valencia-linux-shippable/opt: f4zF6XEaQ-61LZcHsF-X5A + balrog-ca-valencia-linux64-shippable/opt: Pz-AaqIlTHSlUz3I8AsceA + balrog-ca-valencia-macosx64-shippable/opt: UB0Tf6PCQnOELtb1IRRl4Q + balrog-ca-valencia-win32-shippable/opt: OXTfszJMS3S1kq3UyLVOsg + balrog-ca-valencia-win64-aarch64-shippable/opt: JErOUUHsQpuzt41_u_nLSA + balrog-ca-valencia-win64-shippable/opt: QJDiKCIQQpaudCXqpAjKFQ + balrog-ca-win32-shippable/opt: CVnk_vqGScm4j-BjUB7oTA + balrog-ca-win64-aarch64-shippable/opt: b_xb8sjDQJaQ0gRO3PjmQQ + balrog-ca-win64-shippable/opt: NIxSiwy_R9SGYuKu3TJS0g + balrog-cak-linux-shippable/opt: dfG_2FncQyCT6tdD8al6vQ + balrog-cak-linux64-shippable/opt: dpfPN3uKTHyxACdMJJ9FRA + balrog-cak-macosx64-shippable/opt: YPbZcsORRkC0_JpsXpxhZw + balrog-cak-win32-shippable/opt: YtLbWXIXTf2xpnhzX5VHrA + balrog-cak-win64-aarch64-shippable/opt: ILrYOO8aTWO-_YLzlQS-8Q + balrog-cak-win64-shippable/opt: PyxcXVHUTG2OxsmOxVgpSA + balrog-cs-linux-shippable/opt: ZNnyCs32T-mi7kRx9FweJA + balrog-cs-linux64-shippable/opt: YvgoMAlASmOlsxsNe0DZ3w + balrog-cs-macosx64-shippable/opt: OvYC-BSpSH2jjN-DC2Qiww + balrog-cs-win32-shippable/opt: UG7W8womQy6XvCQgwdYNTQ + balrog-cs-win64-aarch64-shippable/opt: cpiK93cZSPyUo-Td5uwPgw + balrog-cs-win64-shippable/opt: CTRnG3ADQaKsdAdTXZ3ESA + balrog-cy-linux-shippable/opt: TqxQr1FNQ_mgPrnf2h1xaA + balrog-cy-linux64-shippable/opt: Qwu_oBjyR5C9IgZoSWuEPQ + balrog-cy-macosx64-shippable/opt: Owg93CABQ1SVb2kbthKhDQ + balrog-cy-win32-shippable/opt: QLD5GaqjQK6OtAxTNxMHZA + balrog-cy-win64-aarch64-shippable/opt: GONKsX3kTYyH4nAFwWsdiA + balrog-cy-win64-shippable/opt: HR3OdI5-T7W2OnqRveJVzw + balrog-da-linux-shippable/opt: cIPEdd6QSreTaW8LgeufKA + balrog-da-linux64-shippable/opt: f-snSGKPR1iGxXGMcLjjPQ + balrog-da-macosx64-shippable/opt: IouSd3QpQAKutkU3nYcxjg + balrog-da-win32-shippable/opt: SNCIPUSrQ7e3JPTsGf5oXg + balrog-da-win64-aarch64-shippable/opt: BCFEICQ1T0mktJgjMfV_3w + balrog-da-win64-shippable/opt: KtdIHqpPRtuDGyJxwqc-NA + balrog-de-linux-shippable/opt: OV80RZ9_RTOmfG0XNMMwgg + balrog-de-linux64-shippable/opt: EHFKPeyASf-TTAyLW2cQVA + balrog-de-macosx64-shippable/opt: Uo2pIdgjSk2OfMjRcsj6iw + balrog-de-win32-shippable/opt: Vt6CfFlVRCay9bf5_HxtUQ + balrog-de-win64-aarch64-shippable/opt: Fehy8WctQPCLZTD0zzI1hw + balrog-de-win64-shippable/opt: fjfMHf7bTR611x2YS4x41Q + balrog-dsb-linux-shippable/opt: XPjoK9uXRryDRJb4hFdIsQ + balrog-dsb-linux64-shippable/opt: DDgL-UdmSQSrrAMDPoQB1w + balrog-dsb-macosx64-shippable/opt: Dz283hAqQRGVKE9hwEjh-A + balrog-dsb-win32-shippable/opt: SxbtPK2DSseJXasZ5SxG9A + balrog-dsb-win64-aarch64-shippable/opt: F7evmaGbQzu7XFl1hxQ9rQ + balrog-dsb-win64-shippable/opt: D6wYLe0qTk-JBjJ2fcCX4Q + balrog-el-linux-shippable/opt: RJ0MZvIuTwiZincabCDdng + balrog-el-linux64-shippable/opt: VCRvtPbASw6jLl9eY_xHHA + balrog-el-macosx64-shippable/opt: c_hqkbIhRKmeTNRJXrYmAA + balrog-el-win32-shippable/opt: TItMp3arQMWCqnIwKwvkkg + balrog-el-win64-aarch64-shippable/opt: Y8LZRdkgRsGsxkRWido9VA + balrog-el-win64-shippable/opt: bnvhykNoQfy1Fw-hxYveEA + balrog-en-CA-linux-shippable/opt: EPj7CuDKTKWKhs_B1DTelA + balrog-en-CA-linux64-shippable/opt: aD3mtxfyTae_-4aw_kxRDg + balrog-en-CA-macosx64-shippable/opt: DWtWMnyfT5OAn-gaDP5mqw + balrog-en-CA-win32-shippable/opt: fCcQOp3JSj2l5jsCiplk7g + balrog-en-CA-win64-aarch64-shippable/opt: eF1rysXiSXO-Wgs0r8mWag + balrog-en-CA-win64-shippable/opt: bSaJDIN2QM2HJJiCY57xOg + balrog-en-GB-linux-shippable/opt: X-eRvYclSEmwV42eDglZgA + balrog-en-GB-linux64-shippable/opt: SttT6m7wSp-QNdxqLwYpjA + balrog-en-GB-macosx64-shippable/opt: W_bRfn_aSjKW2wdJwBZpRQ + balrog-en-GB-win32-shippable/opt: agYLMf1MTOGFH1aEu1vgqA + balrog-en-GB-win64-aarch64-shippable/opt: Lh4eK60PSWiMb4r2epsAyQ + balrog-en-GB-win64-shippable/opt: IWQD9U04Si6UsDfIvAsPWg + balrog-eo-linux-shippable/opt: ae3KFtRlTS-Q7GtOselSVQ + balrog-eo-linux64-shippable/opt: GO6v7qFoRfOYeM1f21WFXA + balrog-eo-macosx64-shippable/opt: bsVYADq6Q_m7PSzVDt3Akw + balrog-eo-win32-shippable/opt: KgIFjsjtQheMVF6h-6PTwA + balrog-eo-win64-aarch64-shippable/opt: Ab_19bPBQwmoh-HxhZRRRQ + balrog-eo-win64-shippable/opt: LNVzgRrQTA-xQRhG3B9-pQ + balrog-es-AR-linux-shippable/opt: fJGFuC7lT1KnzrybSImB0Q + balrog-es-AR-linux64-shippable/opt: S-wKCjAsSvOmpnY6JZ-0gw + balrog-es-AR-macosx64-shippable/opt: GX_KUr-NQF-ZiP_IDoS4gQ + balrog-es-AR-win32-shippable/opt: clqOSEzNT5-y2ro8Arh9SA + balrog-es-AR-win64-aarch64-shippable/opt: cnNnafYOQaKP7dq3G4darg + balrog-es-AR-win64-shippable/opt: UH4fKokkRt6AilCH76Wf4A + balrog-es-CL-linux-shippable/opt: DCvi4vJHQA-ZPUM2EbMDBA + balrog-es-CL-linux64-shippable/opt: SnxME2RpR5-y-VIOp8ymSg + balrog-es-CL-macosx64-shippable/opt: NvpvtygTQTa4lImdh7ZVUg + balrog-es-CL-win32-shippable/opt: CWsATN3WT6mg7cGk8KaagQ + balrog-es-CL-win64-aarch64-shippable/opt: PpDEnbHNTNiNmQHHQvr-ew + balrog-es-CL-win64-shippable/opt: G7PBDrsGShGwVyiZ1TilJg + balrog-es-ES-linux-shippable/opt: TOhoBmxpQU-A24XEkglYGw + balrog-es-ES-linux64-shippable/opt: M8ETRj0JQBeyxj1gAEQ3zw + balrog-es-ES-macosx64-shippable/opt: P6n2qNm7R8yqNZ6kKL3TIA + balrog-es-ES-win32-shippable/opt: EbOmTbHtSJCZm7Xg06CRlQ + balrog-es-ES-win64-aarch64-shippable/opt: JddjCzUYQX-r5p7jKWTdwg + balrog-es-ES-win64-shippable/opt: IRHc0mvPSWumjveR5nahiw + balrog-es-MX-linux-shippable/opt: IM9QItMiQLyMzaemquB9aw + balrog-es-MX-linux64-shippable/opt: OBApgMgjQkuxJDpkE8D-zQ + balrog-es-MX-macosx64-shippable/opt: RVkN_vbLRf-Zc5cB8opsVw + balrog-es-MX-win32-shippable/opt: EmAMy76xQEeR9NOlubb8Qw + balrog-es-MX-win64-aarch64-shippable/opt: eH124JBNRLKCbaWvxlGQtQ + balrog-es-MX-win64-shippable/opt: FPsxY3hRSCeEDy8lbCJMsQ + balrog-et-linux-shippable/opt: Ls3w4JXKRCW4sz3mUAxoHw + balrog-et-linux64-shippable/opt: dD0oXxz6S0mt59qGsEZ7kw + balrog-et-macosx64-shippable/opt: drOcaoJEQk65fBYwQOvplA + balrog-et-win32-shippable/opt: Go_U6-QDR82zBlUm4sx_XA + balrog-et-win64-aarch64-shippable/opt: YOiYYeJVQlCO7DIrkWBlIQ + balrog-et-win64-shippable/opt: VUbEl7HaSzy_pot-8GpDeQ + balrog-eu-linux-shippable/opt: H8ww7K-2SzSRgS2RijJ6SQ + balrog-eu-linux64-shippable/opt: A9oxjVlUQMSF9yZJvjlTHg + balrog-eu-macosx64-shippable/opt: ceEz73TpSU6FBBu0Fo0fIw + balrog-eu-win32-shippable/opt: fFNAg-frSCCmdKeg-YXrzg + balrog-eu-win64-aarch64-shippable/opt: MWCPFz0PSbyjrSDtDgdjDQ + balrog-eu-win64-shippable/opt: aoxcHZz5T-eEdcVX2xTZ0w + balrog-fa-linux-shippable/opt: bvOYl1jyT1-SQKUQXPaJDQ + balrog-fa-linux64-shippable/opt: dLchtZcvQDq09_RvPVWmpg + balrog-fa-macosx64-shippable/opt: TGlebTn7RBKC-q_u8gNg_g + balrog-fa-win32-shippable/opt: Ar1c5AnZQlyue7EkeJshzQ + balrog-fa-win64-aarch64-shippable/opt: N709ZRghSUG5sWA-Ecad5Q + balrog-fa-win64-shippable/opt: LAdq5mgkQl6TKcDwnzWxRw + balrog-ff-linux-shippable/opt: DG3yh0tNQJGfROw6TY99UQ + balrog-ff-linux64-shippable/opt: IQGy9Z3BRdSKg-K07gG3PA + balrog-ff-macosx64-shippable/opt: L324FPrBQL-1mFQZNLKtaA + balrog-ff-win32-shippable/opt: eRtA3nT_RMWNK7bwpcmpTQ + balrog-ff-win64-aarch64-shippable/opt: SBHm9YHpSUy2BQgvBu4ykA + balrog-ff-win64-shippable/opt: MacBOqgfQ8ygfiCehlGgGg + balrog-fi-linux-shippable/opt: fJcVpRvLTXmOucLcv0yB8Q + balrog-fi-linux64-shippable/opt: EGXN-c9rTBO3OxfMkjIh0Q + balrog-fi-macosx64-shippable/opt: F5waYO1rS82NzvO-ggUiGQ + balrog-fi-win32-shippable/opt: RPxTl--BRV2KH10iBeBXGw + balrog-fi-win64-aarch64-shippable/opt: TyKN8OW-R-ifktWU3nwACA + balrog-fi-win64-shippable/opt: PW5WIv1oRGKbOIO0Hbyh8A + balrog-fr-linux-shippable/opt: ef9VA3wwQiKsb6VUUrhJQA + balrog-fr-linux64-shippable/opt: csAfvxXmQxCLYRKTMUGf7w + balrog-fr-macosx64-shippable/opt: UbUIf-M5TDuaH9vXxnKgpA + balrog-fr-win32-shippable/opt: fVuTdYMdS-mMtAfTZ4v0dw + balrog-fr-win64-aarch64-shippable/opt: XEaP9svoTEeIYKukgqYQ4A + balrog-fr-win64-shippable/opt: VlbJfOCKS3yw7hPpqTmE-A + balrog-fur-linux-shippable/opt: Ou93kAv0RC-THu2e7aVfzg + balrog-fur-linux64-shippable/opt: HyERvV7uTEuu337ymB31zg + balrog-fur-macosx64-shippable/opt: bO35axRmSh2DWHd377-Anw + balrog-fur-win32-shippable/opt: dv1_w6chSGyk-1FIkWfHxg + balrog-fur-win64-aarch64-shippable/opt: GGzaHoTsRbKN3h96XFmDVQ + balrog-fur-win64-shippable/opt: UAouiFfBQxeKoRBCVKtaMA + balrog-fy-NL-linux-shippable/opt: YyOgPQmcSo2x476h1gaVOQ + balrog-fy-NL-linux64-shippable/opt: CU1wJHiISjGUPRzc9WN7cg + balrog-fy-NL-macosx64-shippable/opt: LaOa97PKRHmSQmleaUMKRg + balrog-fy-NL-win32-shippable/opt: fS-sjUKbSbumZOwso2UYpw + balrog-fy-NL-win64-aarch64-shippable/opt: SBJAuBZjR-q3TuhvzXNPrg + balrog-fy-NL-win64-shippable/opt: Se9m_QlGSpSjRfkYdDPoxw + balrog-ga-IE-linux-shippable/opt: RVHrE1NJTmOLs8vlbMKB4Q + balrog-ga-IE-linux64-shippable/opt: MzdNTu_3Ss-mcOojSRb_hg + balrog-ga-IE-macosx64-shippable/opt: SrJDXCfQTLyfNpquLPo9kg + balrog-ga-IE-win32-shippable/opt: M6chz5xNRwGBSUW3Rexltw + balrog-ga-IE-win64-aarch64-shippable/opt: JR_ktWEsS3SBqdCE_AKK8A + balrog-ga-IE-win64-shippable/opt: fLfqi5lSSR2uHTFFYNMbzQ + balrog-gd-linux-shippable/opt: EeJN1I5ZSJmAdplPpsHilQ + balrog-gd-linux64-shippable/opt: Ed2x4_BXTDSF0CzjrxNw6A + balrog-gd-macosx64-shippable/opt: BAECuZKjQh2UJOYSBRzdHw + balrog-gd-win32-shippable/opt: fb4xXQfpT4Wzw6poUgFBig + balrog-gd-win64-aarch64-shippable/opt: ZgB1GGI1QsirUW28eMp7_g + balrog-gd-win64-shippable/opt: BdYj_BdyS4a-T6ZM9G8EMg + balrog-gl-linux-shippable/opt: dIX70gH8SqGerTyKtl2Q9Q + balrog-gl-linux64-shippable/opt: V2Yco_6kR4-Z6c4dwtiXNw + balrog-gl-macosx64-shippable/opt: JNz17gAnRcWvAOwC1aUjSQ + balrog-gl-win32-shippable/opt: Ulv3zvVgQ0ewCJ8MBmMWeg + balrog-gl-win64-aarch64-shippable/opt: FiWjDFeRQ-uelfmdEeP3Fw + balrog-gl-win64-shippable/opt: D-mLITu8SjKC9DNlKWsB4g + balrog-gn-linux-shippable/opt: GXv9obB5Rca-dJuDUd3VLA + balrog-gn-linux64-shippable/opt: cfZdoXvgTiy7p-C5wNwIYQ + balrog-gn-macosx64-shippable/opt: BOmNQCzNSoaw_pt7moSN8Q + balrog-gn-win32-shippable/opt: Gf1oK6l6RrW0ZUuPVXRzyQ + balrog-gn-win64-aarch64-shippable/opt: AxsQU0_LS42hlrrAIzrgVw + balrog-gn-win64-shippable/opt: HKLAdgXjR6yLEWHT9oLyag + balrog-gu-IN-linux-shippable/opt: HZ26VOe_SeSL-xYzzZrfHg + balrog-gu-IN-linux64-shippable/opt: AWc2bd9pTkivGRo5CLJkRA + balrog-gu-IN-macosx64-shippable/opt: TAMVAtLmSn-K6s_V62HwYw + balrog-gu-IN-win32-shippable/opt: UWLc0OEkSD2nMEMNVacGRw + balrog-gu-IN-win64-aarch64-shippable/opt: aBU_tKHBTg-aE5IxjWYPGQ + balrog-gu-IN-win64-shippable/opt: axGxYb0xSgOdcDefNprfbw + balrog-he-linux-shippable/opt: Euh9QqIXSXWfPz2MWXo42w + balrog-he-linux64-shippable/opt: D0FyHtouQNO1mHu4rAh3eg + balrog-he-macosx64-shippable/opt: Qbps8sVxRi-HdQzJnN1upQ + balrog-he-win32-shippable/opt: euVXhUiQTmejcwuDwMk22w + balrog-he-win64-aarch64-shippable/opt: cb9PPicHTneSb0fDUvypEQ + balrog-he-win64-shippable/opt: NGVex6t6QjKnA1J8-lL-kA + balrog-hi-IN-linux-shippable/opt: IWYw3EncR3y5VVF_veG0Qg + balrog-hi-IN-linux64-shippable/opt: Bvd4LlzrRrCvrK4c3Uvn0Q + balrog-hi-IN-macosx64-shippable/opt: X5jzw3aYSOCdAzt9s7Qkjw + balrog-hi-IN-win32-shippable/opt: az4TjoXZSWmdp1lAM3iVfA + balrog-hi-IN-win64-aarch64-shippable/opt: Y-VFSgR1TkWnD-BBhs67jQ + balrog-hi-IN-win64-shippable/opt: HFabUD_zQCGom88YQnZ10w + balrog-hr-linux-shippable/opt: eEaJQDC1RzGGjwYjzidSYw + balrog-hr-linux64-shippable/opt: FFtYNwVXRN6B4wbZnDaqgA + balrog-hr-macosx64-shippable/opt: QcPDbADBShKEZyGPl2HWQw + balrog-hr-win32-shippable/opt: FIMUPgQ8Ski7Qe2-0sgnGQ + balrog-hr-win64-aarch64-shippable/opt: e8CVq1-NSQag4r1BVcjSsw + balrog-hr-win64-shippable/opt: GegYukRfStqGQ5_aliIOcA + balrog-hsb-linux-shippable/opt: PdqI9N2MSqaccxrxhDTFwQ + balrog-hsb-linux64-shippable/opt: PiSEd4leTpuB7HrodaN-Uw + balrog-hsb-macosx64-shippable/opt: CeX4CTKVRGCBT3ICAxIIAw + balrog-hsb-win32-shippable/opt: UCz2rIKcQbOzv4bNuglQ6w + balrog-hsb-win64-aarch64-shippable/opt: IJsYwvnxRu6mQ37ZWF-_Bw + balrog-hsb-win64-shippable/opt: fUs7vLEzTgGqMo1BIV5xiA + balrog-hu-linux-shippable/opt: PfP-29e5TCqfHHEqpuQ25g + balrog-hu-linux64-shippable/opt: b5atAeZvS0iWdIJmHacAQQ + balrog-hu-macosx64-shippable/opt: NGZxW36NTrySMvV7zXYveA + balrog-hu-win32-shippable/opt: XBELCwEXQjOFSxS9ZSqeKQ + balrog-hu-win64-aarch64-shippable/opt: OCO2Cs4hTlejkTHyhNSSsw + balrog-hu-win64-shippable/opt: L0-cVxbLQgiiQ-MHwgo9Mw + balrog-hy-AM-linux-shippable/opt: ORRL7HEfTbKjPm8xYgFl2w + balrog-hy-AM-linux64-shippable/opt: bDfWp9maRv2EYJfz-ahZKg + balrog-hy-AM-macosx64-shippable/opt: KadkTd58QSqPSpHV-D9Obw + balrog-hy-AM-win32-shippable/opt: JhK9b7s9RDWbwxBVDewMyQ + balrog-hy-AM-win64-aarch64-shippable/opt: LheO3KIHRv6yIEksuzPOBA + balrog-hy-AM-win64-shippable/opt: DNJplATrROGZbHEtZlremw + balrog-ia-linux-shippable/opt: IpeDMW0QTbWQYlv6C6erkg + balrog-ia-linux64-shippable/opt: ZtRCr5-MSzWnydY4rNM9fw + balrog-ia-macosx64-shippable/opt: Wp7Ldx_JS3OC95SCJ9KK_g + balrog-ia-win32-shippable/opt: eHShpYltQnaHnt3oueVpvg + balrog-ia-win64-aarch64-shippable/opt: FDkr-EkAQne62OgRczDDAA + balrog-ia-win64-shippable/opt: MXePXBY7QP-zlwnMBvp-VQ + balrog-id-linux-shippable/opt: PJDxs2-hSAeMNR1E74O7NQ + balrog-id-linux64-shippable/opt: cSTkkEmPQniSwT6rlGwh1Q + balrog-id-macosx64-shippable/opt: JBof2h8MSUmrT-r5RkKWoQ + balrog-id-win32-shippable/opt: FtuBQKTzSTeEdf6SX3JbKA + balrog-id-win64-aarch64-shippable/opt: LzqrjSv-TG-dmX5ilcLYDA + balrog-id-win64-shippable/opt: TV0MRu9jQmW8VIZW8cb2kA + balrog-is-linux-shippable/opt: PSpIg5guQWu4oK_ACaBUgA + balrog-is-linux64-shippable/opt: c9VvvgCHTcK8I5tLss8v5w + balrog-is-macosx64-shippable/opt: dZCM_388Rd-wXyTzQHbeNQ + balrog-is-win32-shippable/opt: FoX3N7bYRsS2E_5zMEPwZQ + balrog-is-win64-aarch64-shippable/opt: dhT9OurLS4yGwD0k-Od48w + balrog-is-win64-shippable/opt: ICASvV3DRpqSqxvakMSaJg + balrog-it-linux-shippable/opt: Mq1nq5zDR8S-nLXFdJf61Q + balrog-it-linux64-shippable/opt: bkuqvUASQeefyMLGlU1YfA + balrog-it-macosx64-shippable/opt: Gvb1XP-DQS2GB1leKf04ng + balrog-it-win32-shippable/opt: eS-PxP4OTEudluJaohti2Q + balrog-it-win64-aarch64-shippable/opt: Ya6-nKe1QaONgPYPPBnQiA + balrog-it-win64-shippable/opt: JbB2y2SJR_ycnKef7G1fMQ + balrog-ja-JP-mac-macosx64-shippable/opt: ZCUlW1IkRaSP5FWB2xsetQ + balrog-ja-linux-shippable/opt: VMlhmGkoQlCa5iij3GEm2w + balrog-ja-linux64-shippable/opt: IdPRXrj9QiirWqta6STHbA + balrog-ja-win32-shippable/opt: Vg7oD74XQAmpdpyq0kOGuA + balrog-ja-win64-aarch64-shippable/opt: dMKtTGqsRp2YwXcMocfluQ + balrog-ja-win64-shippable/opt: fHoum3YeSA2hcxwzbQZr2Q + balrog-ka-linux-shippable/opt: Qu8e3DAkTVS2VngIcHYXPA + balrog-ka-linux64-shippable/opt: VrORG8EfRf-963CZ3DV6Dw + balrog-ka-macosx64-shippable/opt: Q8uiZJ-4Ta2GaDjl_JVMSw + balrog-ka-win32-shippable/opt: OrijHqRNSX6vrvmGfXs6Nw + balrog-ka-win64-aarch64-shippable/opt: SZpuN87ORsiDstnksUzYTQ + balrog-ka-win64-shippable/opt: BTbzh-W4RU2v2fRpOzhTiQ + balrog-kab-linux-shippable/opt: Vr2tLsT-QXa_szG00FLHGg + balrog-kab-linux64-shippable/opt: AbxbAYK7QJmbREMKzgHcsQ + balrog-kab-macosx64-shippable/opt: QYvbm-rHSS-Ve6oq6Wuwhw + balrog-kab-win32-shippable/opt: MSXzawccSZWQEIrUlMBy1w + balrog-kab-win64-aarch64-shippable/opt: X2SfJxWtSGCvdZA0Ggz36Q + balrog-kab-win64-shippable/opt: bevEvnzfRmmyhZtFpCSKgw + balrog-kk-linux-shippable/opt: YPC6ZoQjTA2dMVHsBAnx0w + balrog-kk-linux64-shippable/opt: QPM6zMIhTEajI5m0veIcqg + balrog-kk-macosx64-shippable/opt: VmP8XyUmR0as6xj3N4H7yA + balrog-kk-win32-shippable/opt: ILi8Qk2PStaWlJXRQXeg8Q + balrog-kk-win64-aarch64-shippable/opt: MfNEU4GqSY2kbEJqmbsOdQ + balrog-kk-win64-shippable/opt: fp73gFTiTGm535m1W_WQ_g + balrog-km-linux-shippable/opt: HR7cKqzFQj6hq7yEiogYUQ + balrog-km-linux64-shippable/opt: IXNJkKuASmyQSn1tHuUgpg + balrog-km-macosx64-shippable/opt: fveXjojnQMa-KecAu4RPPg + balrog-km-win32-shippable/opt: KkSXMGaZSe6KWAuuMepVcQ + balrog-km-win64-aarch64-shippable/opt: RTHhq2I9S1i4FxzYTexqgA + balrog-km-win64-shippable/opt: F78P4JxyTdCet8J1xNsHiw + balrog-kn-linux-shippable/opt: FQPHXa7xTdOZgrA6YZ5eqg + balrog-kn-linux64-shippable/opt: TLfTYvhsT0qTG-TPlu8q7w + balrog-kn-macosx64-shippable/opt: eBdA83-FQT6dNyuyhd4ZpQ + balrog-kn-win32-shippable/opt: bHQWOpL8TzuSg5XEp7R5zg + balrog-kn-win64-aarch64-shippable/opt: erfZFhYETNilAC89Nz1g6w + balrog-kn-win64-shippable/opt: MyzUglMCTD2wuiHVZPnd9Q + balrog-ko-linux-shippable/opt: etNTiFw6Sv6vRuOVbi8kng + balrog-ko-linux64-shippable/opt: bHlV5hojQeC6sndBEd886A + balrog-ko-macosx64-shippable/opt: b-f_rxoIRiepFMCYMiDEaw + balrog-ko-win32-shippable/opt: PhN1W4A6Q_aSE5MkrRFcpQ + balrog-ko-win64-aarch64-shippable/opt: UiLWWzIjRTuCZFSZPoo2Eg + balrog-ko-win64-shippable/opt: bIEq5fMFSIeLvsebKNR3pA + balrog-lij-linux-shippable/opt: Srg2u_hpSYi7SGQixnf5xA + balrog-lij-linux64-shippable/opt: JjmSRChQQG-VDlgrPNAR7w + balrog-lij-macosx64-shippable/opt: Gjph0bfPT7-NZJxnzImBjQ + balrog-lij-win32-shippable/opt: efJqtHMGQBuvtiSHICvs1Q + balrog-lij-win64-aarch64-shippable/opt: Cg3zU8kZQ9WvviE3ZwCHsg + balrog-lij-win64-shippable/opt: V-TRPdGeSYGQwYM7AYyypQ + balrog-linux-shippable/opt: OJiIxRnLQaaf5VwxIWOAgw + balrog-linux64-shippable/opt: CbOT0fFtTmeb6XKyj0q_Ow + balrog-lt-linux-shippable/opt: Liy48jRjTgCYIn68QJtkyg + balrog-lt-linux64-shippable/opt: GZU6zoIoQluTOJTtwZdtqg + balrog-lt-macosx64-shippable/opt: X6ql48dWQCCqid2QJLOQkQ + balrog-lt-win32-shippable/opt: Gihd1h4WTleHQBPrLtq-AA + balrog-lt-win64-aarch64-shippable/opt: e-X4ZDp1RUKYE5M_y_qX-w + balrog-lt-win64-shippable/opt: GeQvwES-TRKppF4TFVTjrg + balrog-lv-linux-shippable/opt: XKg1JTaUR2Of4dDCOJaXxg + balrog-lv-linux64-shippable/opt: SLW-CggYTNWMP6Hwd4QVwQ + balrog-lv-macosx64-shippable/opt: WJFnbpYtSTmDWij9T7v6KA + balrog-lv-win32-shippable/opt: NJ6os0VgQyqNoVyQEmVWtw + balrog-lv-win64-aarch64-shippable/opt: fpa_5HntS9uhdMQdTbemuw + balrog-lv-win64-shippable/opt: fS5KLx3rROqTm_nZtpVReg + balrog-macosx64-shippable/opt: au5SyEP0Th-Utmw9KRYJIA + balrog-mk-linux-shippable/opt: I6MdkoANSNCdOJzI70_Mjg + balrog-mk-linux64-shippable/opt: UMS8SgOyQRiyIYLV4Rh66Q + balrog-mk-macosx64-shippable/opt: C8Ku2PITQZ6vNaP24LiN8Q + balrog-mk-win32-shippable/opt: ZPfkMfGqQgqnUJybm48iWA + balrog-mk-win64-aarch64-shippable/opt: SW4NLr4-S-apxWo0LbQJgg + balrog-mk-win64-shippable/opt: RZFfKhvaTAWdZCRp-7Ay1A + balrog-mr-linux-shippable/opt: cNRMxpl-Ryyb90VFEatXHQ + balrog-mr-linux64-shippable/opt: dL9urDlxQcumBXTOM__pWQ + balrog-mr-macosx64-shippable/opt: Umztz77XSPeog7lzMMpJAw + balrog-mr-win32-shippable/opt: PG5_Tgc1R2G-687cmVllhg + balrog-mr-win64-aarch64-shippable/opt: d2nFq3vWQ_uzUxgREq3zmg + balrog-mr-win64-shippable/opt: HUKiGsxSR7ODHg8ak5HwNQ + balrog-ms-linux-shippable/opt: K5J1hXZyTnuiuC54TlDc2Q + balrog-ms-linux64-shippable/opt: KEt_dMS7SPesrt3WBi_yYg + balrog-ms-macosx64-shippable/opt: QIH7SiGfQM-LVLGBQMmkdg + balrog-ms-win32-shippable/opt: JUZHIt55RYaJ8DwKm8OGew + balrog-ms-win64-aarch64-shippable/opt: S4bB7SBJR0-gH79l4yfdbQ + balrog-ms-win64-shippable/opt: eBldxxDBRCKALWUz7VkAsw + balrog-my-linux-shippable/opt: dXn07nkZRGqXf4LTFy5yLw + balrog-my-linux64-shippable/opt: AL_jDJRGQF-1WlPMOfod2Q + balrog-my-macosx64-shippable/opt: XZ_pYF7DQq2vbtNx2SvnMg + balrog-my-win32-shippable/opt: bge34eRUQgSq9jCOG2cHow + balrog-my-win64-aarch64-shippable/opt: JLAgpC8xSYqRFPsHvj_KXw + balrog-my-win64-shippable/opt: FN2cTuWIR0GlrtQ7Bx4qYA + balrog-nb-NO-linux-shippable/opt: GK6hNG7WS7iyxjRmqeh_wQ + balrog-nb-NO-linux64-shippable/opt: OLtFior7TVepUQpBNyVvsA + balrog-nb-NO-macosx64-shippable/opt: NRzJ3WMmRRink4_7uJHjpw + balrog-nb-NO-win32-shippable/opt: Xrm_mLaoTHShd0w_K5dQsg + balrog-nb-NO-win64-aarch64-shippable/opt: MHjLLfUKS82YClwPW0nZUA + balrog-nb-NO-win64-shippable/opt: C3nhhLSESmKKMGb2QP6x_w + balrog-ne-NP-linux-shippable/opt: QOzkU3LkQCSpJ1GhLUjkww + balrog-ne-NP-linux64-shippable/opt: FnNUoBDdT5yHMmY7bkVGdg + balrog-ne-NP-macosx64-shippable/opt: GSV1xdG9RsKBJexHCZxWeA + balrog-ne-NP-win32-shippable/opt: W72cX3y3QPCeORFuMGKdBA + balrog-ne-NP-win64-aarch64-shippable/opt: bpx_qV0HTeqk9BeOSjUb9w + balrog-ne-NP-win64-shippable/opt: Zd2LR0SASSSzrkoOqhH1-w + balrog-nl-linux-shippable/opt: H3DZMmqvSvmCwWKmpvLXnA + balrog-nl-linux64-shippable/opt: G4uMUdhkTaq0Jh66ntCVmQ + balrog-nl-macosx64-shippable/opt: XKC_yGNsTL6uZDzuglnfhQ + balrog-nl-win32-shippable/opt: NDSDNcKqTl2-1qX38h9Y7Q + balrog-nl-win64-aarch64-shippable/opt: QVDgazeaT46Z1AiOHYMjnQ + balrog-nl-win64-shippable/opt: L1mtMP8GQYGKiDNvgSiBDA + balrog-nn-NO-linux-shippable/opt: FMo0CNDXSFyFXNO683pV3g + balrog-nn-NO-linux64-shippable/opt: JNFPyGNDT-CNvTO5rNM1iw + balrog-nn-NO-macosx64-shippable/opt: d1NrTPU9SMqjoYgnjq2eIw + balrog-nn-NO-win32-shippable/opt: ZPAYi9vVTg-PuAIhA7A_VQ + balrog-nn-NO-win64-aarch64-shippable/opt: bQwtxbiQTyGP_0jkSrxw7Q + balrog-nn-NO-win64-shippable/opt: DuKPAruSRCGOcJWiljblIw + balrog-oc-linux-shippable/opt: XkOWbKEKTG2i4WTyCZH40g + balrog-oc-linux64-shippable/opt: NgWQlEDyQQCpslmdpS9rXA + balrog-oc-macosx64-shippable/opt: UtOCicN8QMCA3yUU4EaOMQ + balrog-oc-win32-shippable/opt: HahAmq8OQLuLl8wBRsbHRQ + balrog-oc-win64-aarch64-shippable/opt: SMSoEtHSQuSRYpg5oPmaSw + balrog-oc-win64-shippable/opt: cqv2k4B-T36QTSVDU0eU8w + balrog-pa-IN-linux-shippable/opt: JtVKf5hCSt2hYXbEGdIquA + balrog-pa-IN-linux64-shippable/opt: ZokoSB7-TgG9ifYEqgJw6A + balrog-pa-IN-macosx64-shippable/opt: ImzXkANxR1uPztI641CB0g + balrog-pa-IN-win32-shippable/opt: OyMncRhqRnSSDaEDhCB49g + balrog-pa-IN-win64-aarch64-shippable/opt: JeJCbL8qRY2o-7NYWU7Uxg + balrog-pa-IN-win64-shippable/opt: JeHR2AM2SbiSSi3YacRvtw + balrog-pl-linux-shippable/opt: OnJ92WcJTiG_nIfwSWheWw + balrog-pl-linux64-shippable/opt: CrAyJ7P0QpOVH8QM81GnIQ + balrog-pl-macosx64-shippable/opt: FKL93aGHTCOaUPd2-j1mwA + balrog-pl-win32-shippable/opt: RPm_2pndQoGjvmAfK85Gig + balrog-pl-win64-aarch64-shippable/opt: bLTnkIB3RDO58mUpBJT46w + balrog-pl-win64-shippable/opt: Di3-j90LR5GhyhTJ0fE3hg + balrog-pt-BR-linux-shippable/opt: GBao86EpRg-KkutXjkjmwA + balrog-pt-BR-linux64-shippable/opt: GXCiWdjZRjaIQpJPpZ9eYw + balrog-pt-BR-macosx64-shippable/opt: JN-VMjZtS0q8jq3cnk3Bmw + balrog-pt-BR-win32-shippable/opt: IQ2SGATZT0eOF2wzBzv8MQ + balrog-pt-BR-win64-aarch64-shippable/opt: fQzD0A_2RxK886C8528v4Q + balrog-pt-BR-win64-shippable/opt: ado-uPBKQvemhM_UcdhtDA + balrog-pt-PT-linux-shippable/opt: dQLFjtlARny3Rh4B2uRRXQ + balrog-pt-PT-linux64-shippable/opt: ZC15Sw7RQtuW8oq38LCd1w + balrog-pt-PT-macosx64-shippable/opt: KwnbICbRTwGErpPWgxYRrA + balrog-pt-PT-win32-shippable/opt: aD5VOFobTUyNibq4RyevSQ + balrog-pt-PT-win64-aarch64-shippable/opt: OruQ73EpTtqpFsvM6Vc8Zw + balrog-pt-PT-win64-shippable/opt: F6l2gnUEQTKk4pxIBvvBoA + balrog-rm-linux-shippable/opt: MKpmH0ryRtCjldUGBRVg1w + balrog-rm-linux64-shippable/opt: POVn--7jQ42m0YcVyE0h8Q + balrog-rm-macosx64-shippable/opt: PlhkfoAxQ-S3pC4i9Is3RQ + balrog-rm-win32-shippable/opt: T1t2k2tMTmmpD1P0O1n5EQ + balrog-rm-win64-aarch64-shippable/opt: Nl27qwSUQjSNl0D79g8fVw + balrog-rm-win64-shippable/opt: WAfhIkZUQT6FJo-HOrNXmg + balrog-ro-linux-shippable/opt: a8mdEiwMTOq3A0pegypjJA + balrog-ro-linux64-shippable/opt: FKdEFsIpThqXZwaJILRDDg + balrog-ro-macosx64-shippable/opt: EcAVTOSqQb6a7_ipuEoeMA + balrog-ro-win32-shippable/opt: fX65mzoLTMmyJ8J6_UdS3A + balrog-ro-win64-aarch64-shippable/opt: AzYssqecROmkhMyZnJEWkQ + balrog-ro-win64-shippable/opt: fA5ngCdmT6G1S466MyslHg + balrog-ru-linux-shippable/opt: Br9cAygDTGCe3aQi7Hm8kQ + balrog-ru-linux64-shippable/opt: bzNX7JmZQla_GVYNjbK3tQ + balrog-ru-macosx64-shippable/opt: L5Ag8xfxSM6h7lhvL05zog + balrog-ru-win32-shippable/opt: JFbcL0wIQIqff0xWFH8Ipg + balrog-ru-win64-aarch64-shippable/opt: HbXCB0HcTqOOmWiXWEgj0A + balrog-ru-win64-shippable/opt: TT4zEfPCQm6zqruSKzXYbg + balrog-sc-linux-shippable/opt: V-r32T1VS963QfVDEVkBYQ + balrog-sc-linux64-shippable/opt: RZ9I3eM3QWGgii5JQKMNWA + balrog-sc-macosx64-shippable/opt: O5yujMX7T2us_J3HbWCm3w + balrog-sc-win32-shippable/opt: LuK4ALADRtiY7pyaxx8FfQ + balrog-sc-win64-aarch64-shippable/opt: frJZ93htQOu27xC7FIPxgg + balrog-sc-win64-shippable/opt: COFy5KytTMGtO_X_IoKfGA + balrog-sco-linux-shippable/opt: F38SevyzQJ-HcOXN1IW-5g + balrog-sco-linux64-shippable/opt: Ef-wOKKBS36G5TKhshw9kQ + balrog-sco-macosx64-shippable/opt: VjdxvT4DSeebXSI9t1gazA + balrog-sco-win32-shippable/opt: WQpDwBrzTCCkSAAtAbxN0A + balrog-sco-win64-aarch64-shippable/opt: QbRjLt2xTFa-mktSJNTCQg + balrog-sco-win64-shippable/opt: NnMOXv_RSGKlZ6sJWJkc5A + balrog-si-linux-shippable/opt: NaYZnRZmSziC_ZJGV2vt2w + balrog-si-linux64-shippable/opt: aGw1b7HqTwGYMm0tyG4W0A + balrog-si-macosx64-shippable/opt: TxoUZvf2QIC7vwZhn6wtvQ + balrog-si-win32-shippable/opt: Gw4nfl58TDO-WNDVNFbUvg + balrog-si-win64-aarch64-shippable/opt: G0eigxSkRsiE1FaSIZREew + balrog-si-win64-shippable/opt: LD6Nh06LTVeKeAJjRkvUvg + balrog-sk-linux-shippable/opt: akpQegBORbq-1NU0mGyL-Q + balrog-sk-linux64-shippable/opt: K-i2ZvGtRy2A1zASaDiojA + balrog-sk-macosx64-shippable/opt: QRIbI4UxSeGBR5rhSZdulA + balrog-sk-win32-shippable/opt: Ww2Hph0pScugkZ7rwagdcw + balrog-sk-win64-aarch64-shippable/opt: OmosLvLlT8-tHRhbALsOng + balrog-sk-win64-shippable/opt: QuU223DITGG5ecGQ0fF5jg + balrog-sl-linux-shippable/opt: Q8h7E1MDQHSs6m_caHlJEg + balrog-sl-linux64-shippable/opt: RRV1I461R5GKvMsaSWyjnA + balrog-sl-macosx64-shippable/opt: EOV4J1e2QyigIMwWPrbZxQ + balrog-sl-win32-shippable/opt: Q4eoBNxzS7iuNABYZbJo_Q + balrog-sl-win64-aarch64-shippable/opt: GM_cslodSPSnU8RDzNhVpg + balrog-sl-win64-shippable/opt: PHC31OhMQWK3fKWFoNg6xQ + balrog-son-linux-shippable/opt: IhZOgtUjSnCGXyk4Zj-QBA + balrog-son-linux64-shippable/opt: Km49e-8SSD6txxh88KbHlQ + balrog-son-macosx64-shippable/opt: EZBKX5zxQ3ObvGQ2KKr94A + balrog-son-win32-shippable/opt: ZL8tQYsISeWIPc13NzjJjA + balrog-son-win64-aarch64-shippable/opt: cyDhBh2BTJGBGknh-2uQIQ + balrog-son-win64-shippable/opt: JnUiQf9NReixnew80fauPw + balrog-sq-linux-shippable/opt: dGI_eKBLQAiy34kqHkF6eg + balrog-sq-linux64-shippable/opt: LEVuemJtRoWtwFa6g--hKg + balrog-sq-macosx64-shippable/opt: Fz5cQMIsTEW0zLbhHgzzkw + balrog-sq-win32-shippable/opt: fjexGxeNT9KfEc3CUL9fCw + balrog-sq-win64-aarch64-shippable/opt: eymSUS8eRoO-fFjJijVZcw + balrog-sq-win64-shippable/opt: YY7QTRmfSJKB9ppcYX4N3A + balrog-sr-linux-shippable/opt: TeLwWkx9Rbyg9Fj1c1Uvlg + balrog-sr-linux64-shippable/opt: GiEOdXjOT3Wfgsgo2I4wrw + balrog-sr-macosx64-shippable/opt: UJpdmUv3Q-i911VTDu9Gug + balrog-sr-win32-shippable/opt: bMaEHPjZRiCGVLnSdm_jFg + balrog-sr-win64-aarch64-shippable/opt: NBBus8XPS6O9FUaSKHarqg + balrog-sr-win64-shippable/opt: B7kikT1-SGWkXLZVYNUCnw + balrog-sv-SE-linux-shippable/opt: YMMJff6iQqmFK_GeIYACkg + balrog-sv-SE-linux64-shippable/opt: BWl8nu-5QOGKZUt-xiqZ2w + balrog-sv-SE-macosx64-shippable/opt: QBhiOYiyRVqIK8s8q3RVfQ + balrog-sv-SE-win32-shippable/opt: OWdKAVr8Rm6e1iudn-giRg + balrog-sv-SE-win64-aarch64-shippable/opt: Va3R_jFTRgKznxeFt6EOfg + balrog-sv-SE-win64-shippable/opt: U4NU3dCUR4mAL2EIGGUNSw + balrog-szl-linux-shippable/opt: IIbtT9wKRYWRsHM42UiOZA + balrog-szl-linux64-shippable/opt: DeczHkf3RRaPmH1yU_O_cQ + balrog-szl-macosx64-shippable/opt: Pz1IDR9rRrCLdGFQQtpIUg + balrog-szl-win32-shippable/opt: DVuFaN4OTCa_V8d5uxS-1Q + balrog-szl-win64-aarch64-shippable/opt: QsXOg3eySaOb78x3O9juCA + balrog-szl-win64-shippable/opt: Y92EFp1JSOeNOIAO5KOyAA + balrog-ta-linux-shippable/opt: S3eOWfrcTFe_oeWUEpaPrg + balrog-ta-linux64-shippable/opt: U_mwIq5aSlWz_2ufLjC1RA + balrog-ta-macosx64-shippable/opt: SMryqkpJT5Wh4eFClaq2ig + balrog-ta-win32-shippable/opt: ZLDoDAbRT-OumjR6_9s9SQ + balrog-ta-win64-aarch64-shippable/opt: FJJxAA27TzymzxospEMaAQ + balrog-ta-win64-shippable/opt: SbkOT-FmRAahqgggLtRrvA + balrog-te-linux-shippable/opt: YY-WIjcnQAWNGf0mSepMew + balrog-te-linux64-shippable/opt: EGN34ynJS7qQomWen6G9rw + balrog-te-macosx64-shippable/opt: Mm-f0NvpTjmy4BqKgNRzBQ + balrog-te-win32-shippable/opt: cEF_7_3fSXKrQs_FP_RUcw + balrog-te-win64-aarch64-shippable/opt: bYDSJxVQR6CBaQLz_uQboA + balrog-te-win64-shippable/opt: GVi9Qm9pQfez2wKCdcZRAg + balrog-tg-linux-shippable/opt: b1n31cFeQEuLqW2qaemVqA + balrog-tg-linux64-shippable/opt: CU4y-McjQA-evr5Y2YvjjQ + balrog-tg-macosx64-shippable/opt: GlgBkAHkS1OdZLbLl1Al5w + balrog-tg-win32-shippable/opt: aOhZ_iVwT7eEGwgIyT-kaw + balrog-tg-win64-aarch64-shippable/opt: WVqMEfkDS9uS7F99Nx2VpQ + balrog-tg-win64-shippable/opt: SRWIGvtHQumSq4OZfIAtpA + balrog-th-linux-shippable/opt: XXU_HqO8TbSCZHeMk3veIw + balrog-th-linux64-shippable/opt: OGcNDOe0TZej8fOyrEonCQ + balrog-th-macosx64-shippable/opt: NNSxBsj5RPerJ5fiHbytFQ + balrog-th-win32-shippable/opt: SstMQcqsQ3qOk31yhvFCxA + balrog-th-win64-aarch64-shippable/opt: RRMKfO24Sce7-nGwGBM0Lg + balrog-th-win64-shippable/opt: Fel3P4TvRVCEwre_Ht5w4w + balrog-tl-linux-shippable/opt: MKlZgyK2RX-9n1VsoHD5gQ + balrog-tl-linux64-shippable/opt: cSv1z3lKSUGlpsdRqOVM7g + balrog-tl-macosx64-shippable/opt: JrNheFfjSoK_HzPwT24w_A + balrog-tl-win32-shippable/opt: KGe6WghmS4Orc7MS6Ioquw + balrog-tl-win64-aarch64-shippable/opt: LIaE6zZlSCuenmAlifsZlA + balrog-tl-win64-shippable/opt: BysbfLOKQI2hbyWbnbYS0A + balrog-tr-linux-shippable/opt: Td53-w8aQzOktPaElTWKxQ + balrog-tr-linux64-shippable/opt: P9i7_UElSwyj7skrN206yg + balrog-tr-macosx64-shippable/opt: CvZdHyO8Twy39_kSZqM8kA + balrog-tr-win32-shippable/opt: Ptl5BwRDTVWdSkbOoCMR7A + balrog-tr-win64-aarch64-shippable/opt: T9mbl_1zQXilB6sh56YzKw + balrog-tr-win64-shippable/opt: TofOISkWRICeo_D4n7iS1Q + balrog-trs-linux-shippable/opt: cR6egttgQnSNSGP79GpcLg + balrog-trs-linux64-shippable/opt: a1YUr_yWSIaEcQlWpPKv7g + balrog-trs-macosx64-shippable/opt: GEhOmzR7SC2NjrkmRvkkWg + balrog-trs-win32-shippable/opt: XM4PMdKbRUupYnwAQSoj5A + balrog-trs-win64-aarch64-shippable/opt: LZkcud5FTWKL7teuzFG79A + balrog-trs-win64-shippable/opt: OIG41A4iT86N_5wN-rZeLw + balrog-uk-linux-shippable/opt: AbwqYXufTCSleq7lZvkAKg + balrog-uk-linux64-shippable/opt: DiR-ytaFQt-RX2Zi_mHvHA + balrog-uk-macosx64-shippable/opt: MW_2VR8iR6mhSavbevSWZQ + balrog-uk-win32-shippable/opt: fcq28oJRSjuQdZPeiuF1mg + balrog-uk-win64-aarch64-shippable/opt: e3PTv-OsT7eT9plk7LJFUQ + balrog-uk-win64-shippable/opt: YehNWiZvQZ20qjym1adbZQ + balrog-ur-linux-shippable/opt: KXOBz3K0S5qeu2vRNtyQzw + balrog-ur-linux64-shippable/opt: RLNSUt8mTeGP1zvYAtonAg + balrog-ur-macosx64-shippable/opt: NhH6UnjjQ7WJ9h0ZOf51Og + balrog-ur-win32-shippable/opt: IU2Da1HYTrqxP5WzVLWu7Q + balrog-ur-win64-aarch64-shippable/opt: Hp0mmhW9SwCBzBjAkuIGpA + balrog-ur-win64-shippable/opt: IUOpXTObSLCckAgN__4V7A + balrog-uz-linux-shippable/opt: bftjbFqiQUqdUla9QwR8Dg + balrog-uz-linux64-shippable/opt: U3OEqoMXTu2Q5uabjrT8dA + balrog-uz-macosx64-shippable/opt: XMNlEDXCT0uK4M-D3cRhFA + balrog-uz-win32-shippable/opt: CbvQeqFHSzqBCZxWdX1xAg + balrog-uz-win64-aarch64-shippable/opt: aTTofryvQ2aasFMXLFuv7w + balrog-uz-win64-shippable/opt: NxabXuPYS4-ae44CDd1sJA + balrog-vi-linux-shippable/opt: G-uCrUD5S9qoGAhDWRgRYQ + balrog-vi-linux64-shippable/opt: Ncy5pxA6R5aLlIN5qLcIGQ + balrog-vi-macosx64-shippable/opt: d1uCzWH2T0-LBwxeEIGkog + balrog-vi-win32-shippable/opt: FvY_0ohUQB2P1nKN_F6Oew + balrog-vi-win64-aarch64-shippable/opt: KNEYc6LDT6S5NXhjkQRZeA + balrog-vi-win64-shippable/opt: M2vDCQtnSv2yfVX6kh6rxg + balrog-win32-shippable/opt: AZ6KgP_oR-e7g0i_6kr26g + balrog-win64-aarch64-shippable/opt: HwH_hF7iR9msA9s8h_iTDg + balrog-win64-shippable/opt: OEZvnRolQ5yLlwKBoLN6Qg + balrog-xh-linux-shippable/opt: VJnJKfzsTCSS8IEpEqz1fg + balrog-xh-linux64-shippable/opt: Bnmu1HIeRmSFPZ92obirAA + balrog-xh-macosx64-shippable/opt: KdDRdnyoQNmvJftat4gmnQ + balrog-xh-win32-shippable/opt: ftl0x4bsTlC6bOJypTTqbw + balrog-xh-win64-aarch64-shippable/opt: apHfpWo8SdiRfEk3jkA4wQ + balrog-xh-win64-shippable/opt: HjnZgm-7QImlmgMMILQpxw + balrog-zh-CN-linux-shippable/opt: AGU03phQQyyCOefuNu5iog + balrog-zh-CN-linux64-shippable/opt: ZAPPTr_RQJaNaY_c3V_X4A + balrog-zh-CN-macosx64-shippable/opt: JqUYhvx8TX6qqb2V4vrw8Q + balrog-zh-CN-win32-shippable/opt: ZYq0TMKpQWWmXhqrENqRCg + balrog-zh-CN-win64-aarch64-shippable/opt: eCBIUj-0TbqlXdvKN8APtA + balrog-zh-CN-win64-shippable/opt: WSWZ6qlbSXSC8zNqnLYKJA + balrog-zh-TW-linux-shippable/opt: N9A6ix4vQ0SXzMNj82-9nA + balrog-zh-TW-linux64-shippable/opt: dk1QBknoS_SZnJXZplr9fA + balrog-zh-TW-macosx64-shippable/opt: TUHcNDSFSpOgp_z1rKtJJA + balrog-zh-TW-win32-shippable/opt: LwgBVdRwRKqMk0Ox8LA8fQ + balrog-zh-TW-win64-aarch64-shippable/opt: JP2VWZ0MS7ybs_wsGSFE2Q + balrog-zh-TW-win64-shippable/opt: J8RvUEKMSWO-yd8V7nUrtg + beetmover-checksums-ach-linux-shippable/opt: MrJKYX_CTTq0r1udasryRA + beetmover-checksums-ach-linux64-shippable/opt: WTldtZ8PRoeLUY_uGcL8Hg + beetmover-checksums-ach-macosx64-shippable/opt: NpcX-l8FS-uhzT7eMx7YdQ + beetmover-checksums-ach-win32-shippable/opt: PtqjvSb8RZSGMLE0jTdQTA + beetmover-checksums-ach-win64-aarch64-shippable/opt: X9j3OeeATiSQuty3hewdag + beetmover-checksums-ach-win64-shippable/opt: GqF1hgxvSySU0Q5SZmI32Q + beetmover-checksums-af-linux-shippable/opt: brCBaJTwTjq-OQr10S61SA + beetmover-checksums-af-linux64-shippable/opt: adegTjGVTaqn_IG5LJKX0Q + beetmover-checksums-af-macosx64-shippable/opt: fl4GBbDUT6-z7y1gmwkcOA + beetmover-checksums-af-win32-shippable/opt: aIG0dMhxT-moZJGIr_ipow + beetmover-checksums-af-win64-aarch64-shippable/opt: B7jCB8ZGQZmHWMmtKlWD7Q + beetmover-checksums-af-win64-shippable/opt: EfypTuxFRVmedICmlNPI4Q + beetmover-checksums-an-linux-shippable/opt: KqSIeIpyStCYJzR9ElT7qw + beetmover-checksums-an-linux64-shippable/opt: EXfkxmqUSZCg6DsZnJbM1Q + beetmover-checksums-an-macosx64-shippable/opt: IWGQIYGvSimri4kCsrVtnw + beetmover-checksums-an-win32-shippable/opt: M1P0MLoJSfCleW8h6_Otbg + beetmover-checksums-an-win64-aarch64-shippable/opt: BQuW0tr9SXSMWXvoV-FIxQ + beetmover-checksums-an-win64-shippable/opt: dWJJuLbOQzGHEpVHV55YAg + beetmover-checksums-ar-linux-shippable/opt: MMpKiN81QteCnVOcsR60SA + beetmover-checksums-ar-linux64-shippable/opt: e6Sn1R6lTP2aUb1geAKOxA + beetmover-checksums-ar-macosx64-shippable/opt: DwkmnhGlSzqyf4X5qjAYhw + beetmover-checksums-ar-win32-shippable/opt: Fm0ImCPvRu6XUg-dED89ag + beetmover-checksums-ar-win64-aarch64-shippable/opt: fDw4RUcpQ_G0Sr4GRSOrcA + beetmover-checksums-ar-win64-shippable/opt: BuhclKYXRVqSzKCvc1HNGA + beetmover-checksums-ast-linux-shippable/opt: bdhpSo1uS8eg0L_oBdOs3A + beetmover-checksums-ast-linux64-shippable/opt: R9z3Q6pVSQKORGDSuqj3Pw + beetmover-checksums-ast-macosx64-shippable/opt: c_FG8QumSKmhWyHtSd3T1w + beetmover-checksums-ast-win32-shippable/opt: HMWnonnERS2nDjYKTny60g + beetmover-checksums-ast-win64-aarch64-shippable/opt: DD_UNaSxTtqej6azdro89A + beetmover-checksums-ast-win64-shippable/opt: AQcJTHb8R1aweaPFbWUN-A + beetmover-checksums-az-linux-shippable/opt: bI3KdyCXQ9yIB1dJdYtKdg + beetmover-checksums-az-linux64-shippable/opt: OM9a4ja0QKimT_awc8xGUg + beetmover-checksums-az-macosx64-shippable/opt: eCE-ucpyRVmk00JbLTsbOQ + beetmover-checksums-az-win32-shippable/opt: fFnAOz_RQTCSGYFJcZ1U9Q + beetmover-checksums-az-win64-aarch64-shippable/opt: IyrVLhi8QqehMCbJc2yrsQ + beetmover-checksums-az-win64-shippable/opt: fPhiqIWoTmeqURarXfmDbg + beetmover-checksums-be-linux-shippable/opt: ShzwgSwGSn-xBfN7-ebsOg + beetmover-checksums-be-linux64-shippable/opt: AEbBvp4gS6W6RQza538PQA + beetmover-checksums-be-macosx64-shippable/opt: SUmeasvARwuEoP7zuxhfXA + beetmover-checksums-be-win32-shippable/opt: IYRFe42CQxW_YwseXAmWLA + beetmover-checksums-be-win64-aarch64-shippable/opt: enR77MbNQlm-UG4PzLOthg + beetmover-checksums-be-win64-shippable/opt: Yj68Tx6aTEK7FNh4NWiPMQ + beetmover-checksums-bg-linux-shippable/opt: EWD2FELQR9WcFijjVYlNyA + beetmover-checksums-bg-linux64-shippable/opt: UAbGaJ1OSnK1D4LOgs0DOg + beetmover-checksums-bg-macosx64-shippable/opt: Y2UfGkpCTOO6fyVrY131iw + beetmover-checksums-bg-win32-shippable/opt: UO4yQ_7WTdS_isjIwDoOpg + beetmover-checksums-bg-win64-aarch64-shippable/opt: BAxrAMhyQUOoFwC2OeOFiw + beetmover-checksums-bg-win64-shippable/opt: KhIDa2bXRGqZR6miJ8LqLA + beetmover-checksums-bn-linux-shippable/opt: YuBJyj4aR-qM2O5-UrmgkA + beetmover-checksums-bn-linux64-shippable/opt: VXj5fmorQwCWRAnzdk8gyg + beetmover-checksums-bn-macosx64-shippable/opt: Wz9b8cP0QLWDrWj9xqCaYg + beetmover-checksums-bn-win32-shippable/opt: VVXO7Zx9Rt-6aCjlNg7Khg + beetmover-checksums-bn-win64-aarch64-shippable/opt: KT_W6niIT3q5lUpAQRYRtg + beetmover-checksums-bn-win64-shippable/opt: Zu5jm4-CRN-o9VcczgNpFw + beetmover-checksums-br-linux-shippable/opt: CFSJP4N6T0W98nZz7r7ZeQ + beetmover-checksums-br-linux64-shippable/opt: JoTQwirORfuW29Y54XBYpQ + beetmover-checksums-br-macosx64-shippable/opt: K-Q1kKFrQcKEITEV5e1LbQ + beetmover-checksums-br-win32-shippable/opt: Y-H71TRORkik9w03Nr2BpQ + beetmover-checksums-br-win64-aarch64-shippable/opt: f6X0UZgPTme2JZ3FPldNxw + beetmover-checksums-br-win64-shippable/opt: MfzZUw2JSlWZC0egS6luGw + beetmover-checksums-bs-linux-shippable/opt: HQ5pfHutRZqA3z_mm1z2FQ + beetmover-checksums-bs-linux64-shippable/opt: YKEecIx3SImnUwVkaYFaxQ + beetmover-checksums-bs-macosx64-shippable/opt: bpG4ebnyRvaYAEQ0X4yoVw + beetmover-checksums-bs-win32-shippable/opt: ZobEA0u2SauKV9kzHN-zIw + beetmover-checksums-bs-win64-aarch64-shippable/opt: f_uEeh_mTRuG3XlmH5k7Gg + beetmover-checksums-bs-win64-shippable/opt: PFw88E23SlCrHCleske2nw + beetmover-checksums-ca-linux-shippable/opt: IarUmqGgSfqQ_-L1lzTIGg + beetmover-checksums-ca-linux64-shippable/opt: G31bA2zXSDOqbPIHwup5Rw + beetmover-checksums-ca-macosx64-shippable/opt: fdxkSVY4SdmyDLBFV0fosA + beetmover-checksums-ca-valencia-linux-shippable/opt: BwyOTDnWSTGAcCM5Ui9DUg + beetmover-checksums-ca-valencia-linux64-shippable/opt: f8t6DZ1USfOGKyGIXMd3kw + beetmover-checksums-ca-valencia-macosx64-shippable/opt: exjQoKd7TbuH0rW837SYBQ + beetmover-checksums-ca-valencia-win32-shippable/opt: K_FobHvbQJGaHvv_FFQVuw + beetmover-checksums-ca-valencia-win64-aarch64-shippable/opt: C3M-M_zTQnaTiEkyJTysrg + beetmover-checksums-ca-valencia-win64-shippable/opt: JYG2kTcaRRWy0vtRrrNBQg + beetmover-checksums-ca-win32-shippable/opt: cZvZPIYwSwOokxBzJ41RXw + beetmover-checksums-ca-win64-aarch64-shippable/opt: Xv6WhJlkRjiRU7JJfl4xTQ + beetmover-checksums-ca-win64-shippable/opt: AW8VQpVaRGOeWKOwJZZ-4Q + beetmover-checksums-cak-linux-shippable/opt: LM3mflGZR-GKnRwI6Go3KA + beetmover-checksums-cak-linux64-shippable/opt: bPVj2Uh0Qxq9aaM27nAF_Q + beetmover-checksums-cak-macosx64-shippable/opt: eLqTTgTRRqOjYB6wOFV0-Q + beetmover-checksums-cak-win32-shippable/opt: foZXetSLQJitVVKjJwu-XQ + beetmover-checksums-cak-win64-aarch64-shippable/opt: JXSRBC79TvaGPtfT6BiWgQ + beetmover-checksums-cak-win64-shippable/opt: O24YiLADTqGdkvFqk6XXQQ + beetmover-checksums-cs-linux-shippable/opt: JRod0dChR0usdFY1DUcgBQ + beetmover-checksums-cs-linux64-shippable/opt: JWeUYFTiTZ-ThS5bdkukkQ + beetmover-checksums-cs-macosx64-shippable/opt: E0v2On4HSdWlHe5ddeat_w + beetmover-checksums-cs-win32-shippable/opt: Tfa5ARksR6iNGDRMdHTR1g + beetmover-checksums-cs-win64-aarch64-shippable/opt: FN6i0_WWQb6aW0GGwGrRdQ + beetmover-checksums-cs-win64-shippable/opt: fg1kctE6SmewCLs178MINw + beetmover-checksums-cy-linux-shippable/opt: Jw0Wz-onQbSP4XUcNLbEEg + beetmover-checksums-cy-linux64-shippable/opt: N_CExY_0SumxtyVew-XJvQ + beetmover-checksums-cy-macosx64-shippable/opt: S5_76ZSTRLyoQDkV6PSWag + beetmover-checksums-cy-win32-shippable/opt: AiMWh8HIQ1iV9Dc82cm3Lw + beetmover-checksums-cy-win64-aarch64-shippable/opt: LVBb8XnGR-ieJ7p_-hlOcw + beetmover-checksums-cy-win64-shippable/opt: dhV3ZU24Qf-YxoYgMgsYbg + beetmover-checksums-da-linux-shippable/opt: ShuzChBLTBqSYRoYxK9kkQ + beetmover-checksums-da-linux64-shippable/opt: Pg6d_5QxQF-DzO9xIGqKew + beetmover-checksums-da-macosx64-shippable/opt: IUiJzXK8QBulXbtyDeBpxQ + beetmover-checksums-da-win32-shippable/opt: U-5VRtrbSciZfLXP7TjS2g + beetmover-checksums-da-win64-aarch64-shippable/opt: CH2yosGOSAuBfAKClcw8oA + beetmover-checksums-da-win64-shippable/opt: fTQ1OInmQM2AxVW9pUZxiA + beetmover-checksums-de-linux-shippable/opt: V-837SZvRtOHEShO0_mDBw + beetmover-checksums-de-linux64-shippable/opt: M1SPqEM0Tiygo4vpYRcWxQ + beetmover-checksums-de-macosx64-shippable/opt: Lxmm7lxCTvqtFwZnuqmaFA + beetmover-checksums-de-win32-shippable/opt: dn52Cd5GTsaLNtB-1zVYMg + beetmover-checksums-de-win64-aarch64-shippable/opt: T9qC7vDbScelOyoSQT_Yig + beetmover-checksums-de-win64-shippable/opt: aSqcfGFOT3qE0lTt_38zuQ + beetmover-checksums-dsb-linux-shippable/opt: WWjIph1jQKyyZq3snS7-oA + beetmover-checksums-dsb-linux64-shippable/opt: cFzR3irQRbSnX-iDcQ3WBA + beetmover-checksums-dsb-macosx64-shippable/opt: GDFP7QXVTl25DLr9_dZ5ug + beetmover-checksums-dsb-win32-shippable/opt: eh7id8jnQfiqmn1osUQYUg + beetmover-checksums-dsb-win64-aarch64-shippable/opt: AdUxex-mTuO8F352--0eig + beetmover-checksums-dsb-win64-shippable/opt: f0oERKaGROSSOMNtTHYXwg + beetmover-checksums-el-linux-shippable/opt: GrYvfAW2RLmlQBz-Q7LQnQ + beetmover-checksums-el-linux64-shippable/opt: Bz8WB_2RTvGKx7tOAGrhGw + beetmover-checksums-el-macosx64-shippable/opt: E6DuPuAhSuaOaiFCUo-RVA + beetmover-checksums-el-win32-shippable/opt: OFi4EfDjQEafQDcHIWoAkQ + beetmover-checksums-el-win64-aarch64-shippable/opt: frzwwoCETWeU6oSxZ8xCbw + beetmover-checksums-el-win64-shippable/opt: WyQxHv9TSo6GReUvNQsDiA + beetmover-checksums-en-CA-linux-shippable/opt: PHAze0ZESgqLztDfW_taXw + beetmover-checksums-en-CA-linux64-shippable/opt: U8uYQVR2QbWsjlQtpvVZKg + beetmover-checksums-en-CA-macosx64-shippable/opt: To5qETFBSrevBUIReMMM3w + beetmover-checksums-en-CA-win32-shippable/opt: bzzqQB8yRFOtNmm4l2a_uQ + beetmover-checksums-en-CA-win64-aarch64-shippable/opt: FYlyhp7bTdWo1a4gvqJcYg + beetmover-checksums-en-CA-win64-shippable/opt: TLDtuI82TLq1mzjkdc7UpA + beetmover-checksums-en-GB-linux-shippable/opt: aEOQo01LSNK8DZM8-z91Uw + beetmover-checksums-en-GB-linux64-shippable/opt: TPICpA_8QxyBqk6ZVHfiDg + beetmover-checksums-en-GB-macosx64-shippable/opt: eAWIx5TbS42UZy4WbvpFDA + beetmover-checksums-en-GB-win32-shippable/opt: Sgvg5DPlRGq0ubN9qExQ-w + beetmover-checksums-en-GB-win64-aarch64-shippable/opt: dAjKNB9-QRWBKJtDZMgGiw + beetmover-checksums-en-GB-win64-shippable/opt: XVKVVyiUSsikUtIEcftJrw + beetmover-checksums-eo-linux-shippable/opt: ZxLUmTjgR2CzFUEwaWV1gg + beetmover-checksums-eo-linux64-shippable/opt: ACqio5FgRi-lMQISDKssGQ + beetmover-checksums-eo-macosx64-shippable/opt: DhYcjOdaTUGGe5NJrI9pyQ + beetmover-checksums-eo-win32-shippable/opt: BkbtQAfjQ-q4heuIanZ09g + beetmover-checksums-eo-win64-aarch64-shippable/opt: LMltXTBXSWSzb1WUdUbhBg + beetmover-checksums-eo-win64-shippable/opt: f-O_3QcfR2uZGkQ1hUQeLQ + beetmover-checksums-es-AR-linux-shippable/opt: Lb6YL_clRGO80xXBK-x3-w + beetmover-checksums-es-AR-linux64-shippable/opt: NqyhH2jAS0uY2uPpKAuSKw + beetmover-checksums-es-AR-macosx64-shippable/opt: O91nzZlZR_qjy1-W2vUMpw + beetmover-checksums-es-AR-win32-shippable/opt: A_RHHSTuT66uT1ess8r61w + beetmover-checksums-es-AR-win64-aarch64-shippable/opt: EIpMoXOrQcasUyEHxFAneA + beetmover-checksums-es-AR-win64-shippable/opt: Glpnn-kSS2G3Pu9aYewU1g + beetmover-checksums-es-CL-linux-shippable/opt: HbzderzlRLegfV_x2WdbJA + beetmover-checksums-es-CL-linux64-shippable/opt: AbhE6H63QoGKpJ9PIEltCA + beetmover-checksums-es-CL-macosx64-shippable/opt: bThfFkleSn69SOU0Ta8jUA + beetmover-checksums-es-CL-win32-shippable/opt: DABkcbpUQ8K4WtBJz1bPQg + beetmover-checksums-es-CL-win64-aarch64-shippable/opt: YtBFK3rrRGCjAYS-BYpYcQ + beetmover-checksums-es-CL-win64-shippable/opt: Jw2foOFwS-WnBTf4-oAK_w + beetmover-checksums-es-ES-linux-shippable/opt: DOD_qPU0TUOShgVsBiZoIg + beetmover-checksums-es-ES-linux64-shippable/opt: Dc_tKJGCSfKNRl-fPMfdIw + beetmover-checksums-es-ES-macosx64-shippable/opt: cPL-GgUJSQ2gKAkEF8o1Qw + beetmover-checksums-es-ES-win32-shippable/opt: TThrB_nUQByYDl8xpZSWDQ + beetmover-checksums-es-ES-win64-aarch64-shippable/opt: M8GLajBCTFWsl_xbb2kKNA + beetmover-checksums-es-ES-win64-shippable/opt: QGFkGKUTTgqJQbiZQAkrwQ + beetmover-checksums-es-MX-linux-shippable/opt: c5dtJ99TQ8qz52e74lyJng + beetmover-checksums-es-MX-linux64-shippable/opt: J_2Nak1aRxegKBaPGofcLA + beetmover-checksums-es-MX-macosx64-shippable/opt: KUXUhZZmTRqbyu5foeetZw + beetmover-checksums-es-MX-win32-shippable/opt: cfIUGA-sQLCTv593Hpts-A + beetmover-checksums-es-MX-win64-aarch64-shippable/opt: I9B2YPWZRF6lPf_DWgsrHg + beetmover-checksums-es-MX-win64-shippable/opt: TSx80YdVRVS_sMSGOlcLWg + beetmover-checksums-et-linux-shippable/opt: IM4Kw1waSdO21tAcOWnPjQ + beetmover-checksums-et-linux64-shippable/opt: djLm96MMTK2DE9ji3IRlEg + beetmover-checksums-et-macosx64-shippable/opt: Gwz_jnZqQfunRX1cQFNeqg + beetmover-checksums-et-win32-shippable/opt: XgbWGVqpTJeuaaBJOo3yZw + beetmover-checksums-et-win64-aarch64-shippable/opt: cj7dRlx-TveC4WAwESv3rQ + beetmover-checksums-et-win64-shippable/opt: TDKQ8z25RV61u0PuECHGzQ + beetmover-checksums-eu-linux-shippable/opt: OxITvw_nShSSqGCix7d5OA + beetmover-checksums-eu-linux64-shippable/opt: GOfC5RKlTMOHzzRFvKPcXg + beetmover-checksums-eu-macosx64-shippable/opt: BFlzKcJNSjW-qEnQupwWsA + beetmover-checksums-eu-win32-shippable/opt: UCKs_SQaSaKznj5pLpTrFQ + beetmover-checksums-eu-win64-aarch64-shippable/opt: UtJHrEyASvSbeEar_bo2SA + beetmover-checksums-eu-win64-shippable/opt: J8D4rLhxQ-qvlfDF8Ga43w + beetmover-checksums-fa-linux-shippable/opt: E_6UJYexRfucRsgX-8Aznw + beetmover-checksums-fa-linux64-shippable/opt: CMV9-ht_TKCR9I8OIR0M8g + beetmover-checksums-fa-macosx64-shippable/opt: IJRVHPeBTrGrPFJt254Klw + beetmover-checksums-fa-win32-shippable/opt: fYfLlM2SSjuM-ruI-rGLIQ + beetmover-checksums-fa-win64-aarch64-shippable/opt: PFEsJ6AuRxievP4PVLl_bw + beetmover-checksums-fa-win64-shippable/opt: WHc1sWReSI2GGrHs7mQgug + beetmover-checksums-ff-linux-shippable/opt: HP_galKIT0SzsD7qWdRl3g + beetmover-checksums-ff-linux64-shippable/opt: ahEkEp4nQLCl5ytag2QvTA + beetmover-checksums-ff-macosx64-shippable/opt: EygdvvFcRJOov9VZXHehAQ + beetmover-checksums-ff-win32-shippable/opt: M_Rwq8gmQZOjjda_tDxFxA + beetmover-checksums-ff-win64-aarch64-shippable/opt: XVRRzv-YS6GdOUtM1HoONA + beetmover-checksums-ff-win64-shippable/opt: OspjS2NhQy-p5tgMbDxRXQ + beetmover-checksums-fi-linux-shippable/opt: Ei8ZvtQ1TnKIQZnzEOCc4g + beetmover-checksums-fi-linux64-shippable/opt: T51Xns6YRcKPrNJwC_IdRA + beetmover-checksums-fi-macosx64-shippable/opt: M8AmJiFzQiW3a14iojqs7g + beetmover-checksums-fi-win32-shippable/opt: VmjZPFPFQQSpGZjJ-GCyfw + beetmover-checksums-fi-win64-aarch64-shippable/opt: HX2fZQYRSCSnB1nfrWgfJw + beetmover-checksums-fi-win64-shippable/opt: cGWU6OOTQHWtYy6UXihf8A + beetmover-checksums-fr-linux-shippable/opt: QtQuhqQrSMOYYlMjqETGSg + beetmover-checksums-fr-linux64-shippable/opt: HpNWH8GZTlmIeCxTxFJ-Nw + beetmover-checksums-fr-macosx64-shippable/opt: Eca_9AraS9qAkCqVS1zo5w + beetmover-checksums-fr-win32-shippable/opt: a2FDD-0tRF-zqgEAV1U7wQ + beetmover-checksums-fr-win64-aarch64-shippable/opt: N9gj-ZOqQw6E08YE84f7mg + beetmover-checksums-fr-win64-shippable/opt: Q5fPkU0STVC_7xMWTYWtdg + beetmover-checksums-fur-linux-shippable/opt: OjJsY1gITL-TNGlUSPMvDA + beetmover-checksums-fur-linux64-shippable/opt: JF_d7mutQHKDXdHnkDjkZA + beetmover-checksums-fur-macosx64-shippable/opt: AQROrOUzRtuHiOFpK5XWmQ + beetmover-checksums-fur-win32-shippable/opt: dSfVc0dITmW4m-lSSsEHfw + beetmover-checksums-fur-win64-aarch64-shippable/opt: AweNfxcfT8OMdMpA16PIMQ + beetmover-checksums-fur-win64-shippable/opt: dTiG-df5QoSSOJ9Ubz2BIg + beetmover-checksums-fy-NL-linux-shippable/opt: EjRlaG-ORIeFOrEftx8Myw + beetmover-checksums-fy-NL-linux64-shippable/opt: GviKXCoAQRKWe9MibYyMig + beetmover-checksums-fy-NL-macosx64-shippable/opt: fxudvlkTTzKwTssDIz7l9A + beetmover-checksums-fy-NL-win32-shippable/opt: B-cee4i0RZy5WiGqjegAOQ + beetmover-checksums-fy-NL-win64-aarch64-shippable/opt: Wg1AWWOQTEGzyjOAn1bNSA + beetmover-checksums-fy-NL-win64-shippable/opt: EMBxLp0tQvy7cwhPYSyL3Q + beetmover-checksums-ga-IE-linux-shippable/opt: BvihMhLhQziwDwGa5Toz8Q + beetmover-checksums-ga-IE-linux64-shippable/opt: LAoYB3qLSJ-fDfeI5Ao4Lw + beetmover-checksums-ga-IE-macosx64-shippable/opt: UYgwCBqFSbaLfaaxkOx2iw + beetmover-checksums-ga-IE-win32-shippable/opt: dM94xRCHQDK8r9Y4VMaM8w + beetmover-checksums-ga-IE-win64-aarch64-shippable/opt: I7q6aKUIQh-_LrYtBh7JDA + beetmover-checksums-ga-IE-win64-shippable/opt: EFvMt9VMTDSYB5-MsNYxfg + beetmover-checksums-gd-linux-shippable/opt: Sfo1nBf0Q0eQ6JhYFvlfwg + beetmover-checksums-gd-linux64-shippable/opt: DjiUqR0GQmaklyGQWQ7v1A + beetmover-checksums-gd-macosx64-shippable/opt: cIWMb0mlQeatZZ-IFUS9AQ + beetmover-checksums-gd-win32-shippable/opt: Y5H_W3HHTi2t7pd6vjLXdQ + beetmover-checksums-gd-win64-aarch64-shippable/opt: XZSoWBOSQAqjE5aQn2f3mw + beetmover-checksums-gd-win64-shippable/opt: RHrob-D_SWiNa6qrBYYd-w + beetmover-checksums-gl-linux-shippable/opt: X4K9tEwvSIWiCd8InYSwiw + beetmover-checksums-gl-linux64-shippable/opt: fBGP_p5zRgO7Koa3QPXwCA + beetmover-checksums-gl-macosx64-shippable/opt: TrXBoKshQHq9QeiPGA3UeA + beetmover-checksums-gl-win32-shippable/opt: f8BSiyXbQw-rc2XqEMAlSA + beetmover-checksums-gl-win64-aarch64-shippable/opt: UEIa7LlIRQGaKHtePSmFng + beetmover-checksums-gl-win64-shippable/opt: eiVxv337RWW7JtBzMMsU1A + beetmover-checksums-gn-linux-shippable/opt: AzUhg-5YSbO0_PPm2CY47A + beetmover-checksums-gn-linux64-shippable/opt: bt8mktKaTdCV2PJqSgizFQ + beetmover-checksums-gn-macosx64-shippable/opt: Ztmq9XYRQDeaUvL5hA87eA + beetmover-checksums-gn-win32-shippable/opt: JRV1wm75S_-lbG4WCiozlQ + beetmover-checksums-gn-win64-aarch64-shippable/opt: bfGXIzn5SpqWSoMd0YMM_Q + beetmover-checksums-gn-win64-shippable/opt: e6xb2c8uS1u7Xx3Kta0lXg + beetmover-checksums-gu-IN-linux-shippable/opt: FpN8zy2CSC-Q7QIBfvGWGA + beetmover-checksums-gu-IN-linux64-shippable/opt: c8wS4eRnQv-Q2NC7yDehRg + beetmover-checksums-gu-IN-macosx64-shippable/opt: cbHypZBlRce3lbjnMwc80Q + beetmover-checksums-gu-IN-win32-shippable/opt: fDRkt1E1T5G2MpDbFS_mtQ + beetmover-checksums-gu-IN-win64-aarch64-shippable/opt: cgWqtNNJRKGzYDJGTD4QGQ + beetmover-checksums-gu-IN-win64-shippable/opt: Io2NeaUjQX2VGYy50s7oOw + beetmover-checksums-he-linux-shippable/opt: I7FncAZ1QE6X9kDElfcbvA + beetmover-checksums-he-linux64-shippable/opt: GpncZXYtQOaVMkQHAcN-LQ + beetmover-checksums-he-macosx64-shippable/opt: UdtpG5LESJ2GmVyJlVCGNQ + beetmover-checksums-he-win32-shippable/opt: bOrqi0HQStOkDC6e9IdAnA + beetmover-checksums-he-win64-aarch64-shippable/opt: TfiCdxFUS6-XcCe6zIWfmQ + beetmover-checksums-he-win64-shippable/opt: bEdVso3tTi2k5EiUP_rQ5Q + beetmover-checksums-hi-IN-linux-shippable/opt: dSccRIwERGyNIjzK9VGU6Q + beetmover-checksums-hi-IN-linux64-shippable/opt: Twwe-wASQNKma4GRoEKg9A + beetmover-checksums-hi-IN-macosx64-shippable/opt: dxREE9QHSi6KruGUl7jhWQ + beetmover-checksums-hi-IN-win32-shippable/opt: JJEKs7_tTyG59r5vonIqKg + beetmover-checksums-hi-IN-win64-aarch64-shippable/opt: NkK8iW4dSGqd3_eGWlaBtA + beetmover-checksums-hi-IN-win64-shippable/opt: OF3eyS-2Rz2JjNfSsMNWQQ + beetmover-checksums-hr-linux-shippable/opt: UMssxhZvTSSi2Ms9P8902A + beetmover-checksums-hr-linux64-shippable/opt: OyJ7-A_lQsuoe5ezR-3pRw + beetmover-checksums-hr-macosx64-shippable/opt: YIH0NTfBTZOfmgscXNwLUQ + beetmover-checksums-hr-win32-shippable/opt: FyRvco8UQUykMTwtKdIPBg + beetmover-checksums-hr-win64-aarch64-shippable/opt: Js0GkcoZRmWzZ-PIhBHcvQ + beetmover-checksums-hr-win64-shippable/opt: RucjGraESZevgxaxit-RdQ + beetmover-checksums-hsb-linux-shippable/opt: GXKHcVYUSdGeDpBnVfIrZA + beetmover-checksums-hsb-linux64-shippable/opt: YQCwf9CQQ3aBByTZKaWRlQ + beetmover-checksums-hsb-macosx64-shippable/opt: e-9R5K7oTuuJXm4IZMJQmQ + beetmover-checksums-hsb-win32-shippable/opt: Fa-FrTKHRIKZ2uAiMJPUIw + beetmover-checksums-hsb-win64-aarch64-shippable/opt: Wcdyc-srQJmXlH23UqvJtA + beetmover-checksums-hsb-win64-shippable/opt: LoX0fzgISj-xQtwuSTPhHA + beetmover-checksums-hu-linux-shippable/opt: EKcraxkzQli5VZ3daOg1Hw + beetmover-checksums-hu-linux64-shippable/opt: NrS8T9A9R0mmGKyrrN4c_w + beetmover-checksums-hu-macosx64-shippable/opt: SUWf7jf3SUiQfvqRGRD6rA + beetmover-checksums-hu-win32-shippable/opt: GHxEQ4XDRUyJk0emJpKe2w + beetmover-checksums-hu-win64-aarch64-shippable/opt: BE9vcCJ6TQ63QdNq0_MVKA + beetmover-checksums-hu-win64-shippable/opt: IT67G7ZUSAKQLqS-1G24sw + beetmover-checksums-hy-AM-linux-shippable/opt: C9gX3CjGRZitWvmVLlK1zQ + beetmover-checksums-hy-AM-linux64-shippable/opt: a-2suNuiRAuPFEhXmJSwEg + beetmover-checksums-hy-AM-macosx64-shippable/opt: fZKP5vwJSmuj_CGoBstq8w + beetmover-checksums-hy-AM-win32-shippable/opt: CQk4B2-ERGab_1i_Alxt7A + beetmover-checksums-hy-AM-win64-aarch64-shippable/opt: Dk-YJSl5TpGxUsmR0RLpDA + beetmover-checksums-hy-AM-win64-shippable/opt: YL-vAWBoQQCIDcXhhO8rRw + beetmover-checksums-ia-linux-shippable/opt: eSqffocZQOKbfelGlj-rsg + beetmover-checksums-ia-linux64-shippable/opt: G01d1uHoR06l47xPsQem_Q + beetmover-checksums-ia-macosx64-shippable/opt: HSrx13tRQQaQ1lGGkg6QmQ + beetmover-checksums-ia-win32-shippable/opt: FhzYrUQhTxiKL3Ta-D9SDQ + beetmover-checksums-ia-win64-aarch64-shippable/opt: DpNpv92RRHWktmw3LZbG_A + beetmover-checksums-ia-win64-shippable/opt: MIpUKdYdT3-eIRlVfnDlVw + beetmover-checksums-id-linux-shippable/opt: PAyMODGtSDaNm_-1FtMY1Q + beetmover-checksums-id-linux64-shippable/opt: YUdC2JDuRJqEpksZieOdDQ + beetmover-checksums-id-macosx64-shippable/opt: G08flsn6STO8TYdexayQwA + beetmover-checksums-id-win32-shippable/opt: Bh0Co_ESTnG-5SBDw1TU_A + beetmover-checksums-id-win64-aarch64-shippable/opt: UWGL8CHOQj-M6IBuHx-__w + beetmover-checksums-id-win64-shippable/opt: QFGQv815S166CKR55xD6Bw + beetmover-checksums-is-linux-shippable/opt: XtmM8UJLQQ23wVQsPMFP7A + beetmover-checksums-is-linux64-shippable/opt: MeElkk2MTjqHscop_qb1JA + beetmover-checksums-is-macosx64-shippable/opt: Ha-7Sv7CTW23DoEglMnU6Q + beetmover-checksums-is-win32-shippable/opt: dmWDQQJETXmYvMf1qbRFLg + beetmover-checksums-is-win64-aarch64-shippable/opt: VPJANiDKQ-eIBCFlO7TBJA + beetmover-checksums-is-win64-shippable/opt: QM0AxXdGRGaxip64jX9TmQ + beetmover-checksums-it-linux-shippable/opt: eHd5SYpeT86fYMJOj4GGZA + beetmover-checksums-it-linux64-shippable/opt: UKk3hyRzTyiqWmEpCgvd0w + beetmover-checksums-it-macosx64-shippable/opt: ezzufCUOSpWKV7pUCANI6Q + beetmover-checksums-it-win32-shippable/opt: erKjEQDJQcKT_TY3EQgzZQ + beetmover-checksums-it-win64-aarch64-shippable/opt: Mfk9yE4BT1KfDMeEmszbzw + beetmover-checksums-it-win64-shippable/opt: c4Vspjr2TceUDly5mmTIGg + beetmover-checksums-ja-JP-mac-macosx64-shippable/opt: JYkKNndiSO-o-RjcVjPvow + beetmover-checksums-ja-linux-shippable/opt: dbQoh7zDRHy3jC8QF9w3Uw + beetmover-checksums-ja-linux64-shippable/opt: beH632_WR-WVMea6Q2iq4A + beetmover-checksums-ja-win32-shippable/opt: MFZUUxfFR3eFDL6OeOwKlw + beetmover-checksums-ja-win64-aarch64-shippable/opt: UkGCEAdYTGS_RUS01Ed0yQ + beetmover-checksums-ja-win64-shippable/opt: PSr6iauRS5-TFgmG8wjq8g + beetmover-checksums-ka-linux-shippable/opt: J11HNwq0QqKbj5m6JGlDdw + beetmover-checksums-ka-linux64-shippable/opt: ZnSOjryGRaCTTjJvv_Jdcg + beetmover-checksums-ka-macosx64-shippable/opt: Djr5_Te3RvyBQ4x8pLDwSA + beetmover-checksums-ka-win32-shippable/opt: X6elT9WVRTSOzzrc2gIwYg + beetmover-checksums-ka-win64-aarch64-shippable/opt: fFXPvCJ-RTmhOtqz01-APA + beetmover-checksums-ka-win64-shippable/opt: arr6COrOSkW_zbFCWJog-Q + beetmover-checksums-kab-linux-shippable/opt: HndkoNqWQ7aslj_u4Rv6kg + beetmover-checksums-kab-linux64-shippable/opt: ECaispt3S8iehN1t9ZMPgw + beetmover-checksums-kab-macosx64-shippable/opt: dld-H-YNSNCAjask2njKXA + beetmover-checksums-kab-win32-shippable/opt: ZNlRC0yxRW6415kFo319yw + beetmover-checksums-kab-win64-aarch64-shippable/opt: eEp-CkXkRCaFZgtRNBoWsA + beetmover-checksums-kab-win64-shippable/opt: HxNiMHMVR9qZt_0efc0KTw + beetmover-checksums-kk-linux-shippable/opt: BCqyVHPyT-iKw3I5N3SqBg + beetmover-checksums-kk-linux64-shippable/opt: I6lAAWRiQWGGAYk6DVD3dw + beetmover-checksums-kk-macosx64-shippable/opt: YDFRa8koRE6VZ47T3ajgQA + beetmover-checksums-kk-win32-shippable/opt: fMqbF9PxRQWjJ5Dz1trbBA + beetmover-checksums-kk-win64-aarch64-shippable/opt: BxQuGuywRQmN0-5NlJej3g + beetmover-checksums-kk-win64-shippable/opt: FTnYCbBhTVivLkSw1mSczw + beetmover-checksums-km-linux-shippable/opt: FNJAjeqhTbieG5rQYQRWNA + beetmover-checksums-km-linux64-shippable/opt: BVoF7NN7TjS1e-hmjU-7pQ + beetmover-checksums-km-macosx64-shippable/opt: XMh8-r4NSGe1vD5qzmkkZQ + beetmover-checksums-km-win32-shippable/opt: XOFOrWJbSGOGCWs9fDLNdA + beetmover-checksums-km-win64-aarch64-shippable/opt: MuzirhSUS4O7YCEvwTRkTg + beetmover-checksums-km-win64-shippable/opt: C-42pgfLRT6bMICxxr8Cnw + beetmover-checksums-kn-linux-shippable/opt: AavHWqckSMq9KYnZDuQb7w + beetmover-checksums-kn-linux64-shippable/opt: RptHwce3TW-A3YtwA_Toqw + beetmover-checksums-kn-macosx64-shippable/opt: IcttiVjpSeyCdtRpxIO4qw + beetmover-checksums-kn-win32-shippable/opt: BWK2oXhDRoagpexP6sQhBQ + beetmover-checksums-kn-win64-aarch64-shippable/opt: Q320j_oKRBeAP0Q6bxyTHQ + beetmover-checksums-kn-win64-shippable/opt: MdIMXyjoSv24lLt1ZIul3g + beetmover-checksums-ko-linux-shippable/opt: BHTeFJnDRq-7sNhGiSSgwA + beetmover-checksums-ko-linux64-shippable/opt: RQj5PwT4QWC4cauhmZwUkA + beetmover-checksums-ko-macosx64-shippable/opt: bvQwuNeSQfm5R9sT4t43pw + beetmover-checksums-ko-win32-shippable/opt: fxDnmw9OSuG2pE9U8KK-ig + beetmover-checksums-ko-win64-aarch64-shippable/opt: YdTfXryhRra_MreRgQGgpw + beetmover-checksums-ko-win64-shippable/opt: b3X6E6hxTs6byvgxznrAow + beetmover-checksums-lij-linux-shippable/opt: dmJ7ekBZSg-Z8fIrQ3MrzQ + beetmover-checksums-lij-linux64-shippable/opt: Ia9ruTXxSc6DZal6BPR6dQ + beetmover-checksums-lij-macosx64-shippable/opt: JTd5W6b4Qi6iL-Dy7LPa8g + beetmover-checksums-lij-win32-shippable/opt: Xy33XJP4Q5Gi_1ks-P-urQ + beetmover-checksums-lij-win64-aarch64-shippable/opt: EFJiuedGR0mm2S8RO89qWg + beetmover-checksums-lij-win64-shippable/opt: Tqpm3pXNSDyayG48ujtdGA + beetmover-checksums-linux-shippable/opt: Yz6c_3k8T_-QCfCMQ3sMYA + beetmover-checksums-linux64-shippable/opt: NvkNG8CGTaG1JpoNDi5AQg + beetmover-checksums-lt-linux-shippable/opt: NNyaJxTlRoKkuhfkub_1Cg + beetmover-checksums-lt-linux64-shippable/opt: etMTdxOWShG5QR6PwZ06tw + beetmover-checksums-lt-macosx64-shippable/opt: X4aYA1w2Sv2vwtHHKEzLZw + beetmover-checksums-lt-win32-shippable/opt: fovPF0gbS2CnHeD7IoJUuw + beetmover-checksums-lt-win64-aarch64-shippable/opt: SH3GjthoQBK5mafRi4QTfg + beetmover-checksums-lt-win64-shippable/opt: CZ5WWhXgQWaMB_kB_h15Jg + beetmover-checksums-lv-linux-shippable/opt: I3hNW-ZNRzq2Ir1zW6_hjg + beetmover-checksums-lv-linux64-shippable/opt: foIkNiB5RCOTSg4id975Ow + beetmover-checksums-lv-macosx64-shippable/opt: fYTYRT3iSoi7h7Sc-f8Upg + beetmover-checksums-lv-win32-shippable/opt: PeXmn710SfKXFnCLtQj-3w + beetmover-checksums-lv-win64-aarch64-shippable/opt: F31L-stURQ-BdDLelLpq1g + beetmover-checksums-lv-win64-shippable/opt: MHaZ8tHrSiexSkq1ke9CZQ + beetmover-checksums-macosx64-shippable/opt: drwYO5NHQcuqqIbC4AV1lA + beetmover-checksums-mk-linux-shippable/opt: Oiooyd-JR-OhuicYT7DThw + beetmover-checksums-mk-linux64-shippable/opt: LYN_EEkwRlWQCNOfNV0K3g + beetmover-checksums-mk-macosx64-shippable/opt: XeG7EGZQTM-2zHgzqC8LiA + beetmover-checksums-mk-win32-shippable/opt: X4XrMNRUQdynnbgOUPjDxg + beetmover-checksums-mk-win64-aarch64-shippable/opt: CgH4M1PJSGK_MI3_GjihQQ + beetmover-checksums-mk-win64-shippable/opt: Ff6kRUO-Stiwm7Z5WtViAA + beetmover-checksums-mr-linux-shippable/opt: ZXSpeXKwSxKo7d3xDPX6WA + beetmover-checksums-mr-linux64-shippable/opt: YwJiDfUxQMe_D6jnWPMu4w + beetmover-checksums-mr-macosx64-shippable/opt: NAUQPVqfR3yHNiKj2dlOPw + beetmover-checksums-mr-win32-shippable/opt: Af1QJvzAQGWfbQccV_DOgw + beetmover-checksums-mr-win64-aarch64-shippable/opt: Xg7vOSd2R8u4OmXBOsGYjw + beetmover-checksums-mr-win64-shippable/opt: QhqwCdrjSuOf4ZkXBEwj5Q + beetmover-checksums-ms-linux-shippable/opt: Dl6pk1WCT2634HuqhyGG3Q + beetmover-checksums-ms-linux64-shippable/opt: FOdeNpBRTUuTykW78eDxQQ + beetmover-checksums-ms-macosx64-shippable/opt: IrzJozZYSbCLZA8mFBsArg + beetmover-checksums-ms-win32-shippable/opt: Y21GknNkRLWIT1kSDkYWHA + beetmover-checksums-ms-win64-aarch64-shippable/opt: e3dUyGoJR9mRYUanrZ4nNw + beetmover-checksums-ms-win64-shippable/opt: ckBbwh4ETnqJkKCxlaBl9A + beetmover-checksums-my-linux-shippable/opt: IyWGP4WKRNCKLaRKcvmrZA + beetmover-checksums-my-linux64-shippable/opt: LxP1cbwATTiYRKFLglSKhA + beetmover-checksums-my-macosx64-shippable/opt: GhNYU3G2SyC0tFhNwFWATg + beetmover-checksums-my-win32-shippable/opt: B3rd036RREiS4zm4xe0v1Q + beetmover-checksums-my-win64-aarch64-shippable/opt: R6sfvjxyTnuSygmOmRYwuA + beetmover-checksums-my-win64-shippable/opt: Nh1shZYSRdihAnvzarWTdw + beetmover-checksums-nb-NO-linux-shippable/opt: cUS-RCKXTD-LKsfxWKe8XQ + beetmover-checksums-nb-NO-linux64-shippable/opt: CaZ02eNgTKO2Elypu9o7fg + beetmover-checksums-nb-NO-macosx64-shippable/opt: fWL-ZH0_SFmGf98O5YJuoA + beetmover-checksums-nb-NO-win32-shippable/opt: aoMlYmM1TCKRoQs8eJAvzA + beetmover-checksums-nb-NO-win64-aarch64-shippable/opt: XZSViBnHRAKtWuIJKo4Ygw + beetmover-checksums-nb-NO-win64-shippable/opt: cMlxKVEbSIayHiatVX5jfg + beetmover-checksums-ne-NP-linux-shippable/opt: UPQGB5oURLCjSE5YVgBhIQ + beetmover-checksums-ne-NP-linux64-shippable/opt: HzyL7OreTpincCatY4C7Gg + beetmover-checksums-ne-NP-macosx64-shippable/opt: dv0sIrWGRFyONtINae2S8Q + beetmover-checksums-ne-NP-win32-shippable/opt: Jt_rk6WERtSoXcctwVJ_WA + beetmover-checksums-ne-NP-win64-aarch64-shippable/opt: EmMdFwCCS1a47eMqiocibg + beetmover-checksums-ne-NP-win64-shippable/opt: Z0orBXjhRlKBh2Cf8hRunA + beetmover-checksums-nl-linux-shippable/opt: GwVhSh2mRGiSrS_RWF3-ig + beetmover-checksums-nl-linux64-shippable/opt: R3MLIO5tR3uNP0hkXn70zg + beetmover-checksums-nl-macosx64-shippable/opt: LAvCDEEVTpmObnu70SY0mg + beetmover-checksums-nl-win32-shippable/opt: V0xzhO4ARrivVhTJZBUn4g + beetmover-checksums-nl-win64-aarch64-shippable/opt: UfvVOvHSTEKt_v6hOowMhQ + beetmover-checksums-nl-win64-shippable/opt: PyxR4jXER7KjXkYKR_RkeQ + beetmover-checksums-nn-NO-linux-shippable/opt: crslGg3URlekyngMh81lBw + beetmover-checksums-nn-NO-linux64-shippable/opt: UN9nWqHuSnKtU_F_g3s5oQ + beetmover-checksums-nn-NO-macosx64-shippable/opt: JvztgegiRKu-ilqpoR1ZCA + beetmover-checksums-nn-NO-win32-shippable/opt: fADsH__RSY25Cz50pRxIvQ + beetmover-checksums-nn-NO-win64-aarch64-shippable/opt: RIvo0ZLtQM-KhSYBjV9qvg + beetmover-checksums-nn-NO-win64-shippable/opt: Iwd6Vn05TrGHSqlwcEUpjQ + beetmover-checksums-oc-linux-shippable/opt: aRPhxYLOQTOBDNJBQiro4Q + beetmover-checksums-oc-linux64-shippable/opt: dZ-xKDqfTQygrJICDTOmmw + beetmover-checksums-oc-macosx64-shippable/opt: cYA56r0ATLiMbwTjx4Pesw + beetmover-checksums-oc-win32-shippable/opt: IpDw_GdrRwaZ0xT9GSZXFw + beetmover-checksums-oc-win64-aarch64-shippable/opt: AEcbTKttT8-kQxPMW3zm7Q + beetmover-checksums-oc-win64-shippable/opt: aA8oLNkxTzWvdWKP0f2kxA + beetmover-checksums-pa-IN-linux-shippable/opt: fFHsd9TpRyqBobFSbzn_EQ + beetmover-checksums-pa-IN-linux64-shippable/opt: AxJXPGYxRaOgfxBTPXOxxA + beetmover-checksums-pa-IN-macosx64-shippable/opt: Kiqz1gAzRqygdZ4jC7XkUQ + beetmover-checksums-pa-IN-win32-shippable/opt: Zb_bhoWxQCC4fopbd2ZkTg + beetmover-checksums-pa-IN-win64-aarch64-shippable/opt: XB0B53kKQ2iFtm0WiuUrbg + beetmover-checksums-pa-IN-win64-shippable/opt: Cn8SLKNaS1m9IeiXYHLebA + beetmover-checksums-pl-linux-shippable/opt: EjqSHKuPR5KIMMAS-w_IYw + beetmover-checksums-pl-linux64-shippable/opt: WE2AKSVwQ1KKevqaY45dww + beetmover-checksums-pl-macosx64-shippable/opt: IEir9O_5R0-mufLm1UK4zg + beetmover-checksums-pl-win32-shippable/opt: LgknTeXiSrKDzmip36YA4w + beetmover-checksums-pl-win64-aarch64-shippable/opt: O6wnd-FkSzyAMEe8N52lwQ + beetmover-checksums-pl-win64-shippable/opt: QSFpWyTjTcuFizV34db_PQ + beetmover-checksums-pt-BR-linux-shippable/opt: G6A9WBelR0ygDnCzFskHkw + beetmover-checksums-pt-BR-linux64-shippable/opt: VNwKix20Q-CI74XLVEEJBg + beetmover-checksums-pt-BR-macosx64-shippable/opt: QlHubqp3REqq3DPcqMN7PQ + beetmover-checksums-pt-BR-win32-shippable/opt: UJq2Q4tUTwS7iVU5tmMaFA + beetmover-checksums-pt-BR-win64-aarch64-shippable/opt: Oj4B3ksARmy0K9ZmfcKpUA + beetmover-checksums-pt-BR-win64-shippable/opt: URlxj12US7W6O3eQGbTLUQ + beetmover-checksums-pt-PT-linux-shippable/opt: BfQ13OmuTme51BbjCm9_pQ + beetmover-checksums-pt-PT-linux64-shippable/opt: GsW1sXenTMi2qXQImvEprA + beetmover-checksums-pt-PT-macosx64-shippable/opt: epPKwd7xREeCT8PREDClSw + beetmover-checksums-pt-PT-win32-shippable/opt: Oc_UDn_hR52ecuCgZ4hrPg + beetmover-checksums-pt-PT-win64-aarch64-shippable/opt: EugFhoOvSlCDPZ-7JTk97w + beetmover-checksums-pt-PT-win64-shippable/opt: c73MpuIfRp6l_sVhbrPFfA + beetmover-checksums-rm-linux-shippable/opt: PV2XjFvRSFe2hq9Lw4Xxnw + beetmover-checksums-rm-linux64-shippable/opt: GkcQf1ONTaeKJPDb98yPsg + beetmover-checksums-rm-macosx64-shippable/opt: fmXRH_bLQbu9JlPZ27aAzw + beetmover-checksums-rm-win32-shippable/opt: VanBZxHuT2qw_fH-4o6HZg + beetmover-checksums-rm-win64-aarch64-shippable/opt: Q-KEauEPRxC3nM2C98yvaw + beetmover-checksums-rm-win64-shippable/opt: czkCblKgTC2K7Hx1HmJriQ + beetmover-checksums-ro-linux-shippable/opt: AeaonFwASwKZEHIJ8NhV3g + beetmover-checksums-ro-linux64-shippable/opt: Kj8hekq_Rx-RyhMgA1zoAQ + beetmover-checksums-ro-macosx64-shippable/opt: WxGw_B6_SVudP1IhV6zvGg + beetmover-checksums-ro-win32-shippable/opt: RgGpW79jQh-ygedmH2EPQw + beetmover-checksums-ro-win64-aarch64-shippable/opt: VrOF8Oy0TtqxQiNTwjXsFQ + beetmover-checksums-ro-win64-shippable/opt: H-QcwQYLSmaOaWmpmLQBYA + beetmover-checksums-ru-linux-shippable/opt: fjUeZyADTwq29-hQFU8gxA + beetmover-checksums-ru-linux64-shippable/opt: bOnyTRnKR8CzV6yJu6cdag + beetmover-checksums-ru-macosx64-shippable/opt: JmNUuNFPRVS-588DCalIOQ + beetmover-checksums-ru-win32-shippable/opt: bapvFl8CSUuQOGQ0rttAdQ + beetmover-checksums-ru-win64-aarch64-shippable/opt: Kqpi0Nw6TW6Ikt4P6abSsg + beetmover-checksums-ru-win64-shippable/opt: b7PgAwbbQyWM2x25F5nK2A + beetmover-checksums-sc-linux-shippable/opt: bTn5zLCjSYaoig_91xAhyQ + beetmover-checksums-sc-linux64-shippable/opt: EIY7zoUPTVG0snMhMYM-Wg + beetmover-checksums-sc-macosx64-shippable/opt: ZBV1ZWNURI-4aOPcoOkUNw + beetmover-checksums-sc-win32-shippable/opt: RT_UBsKHT3OkC4Fn2SokMw + beetmover-checksums-sc-win64-aarch64-shippable/opt: QMFvIgJGTGyk1UL78NGA7w + beetmover-checksums-sc-win64-shippable/opt: UN2la5xtQfaMCaDe8OmfNA + beetmover-checksums-sco-linux-shippable/opt: VAqorAf-S5aWhPtO6VfMMA + beetmover-checksums-sco-linux64-shippable/opt: GMcWEL2tSS6OBzekyJlonQ + beetmover-checksums-sco-macosx64-shippable/opt: VY8pgJeoTsCNa-TVtm0qeQ + beetmover-checksums-sco-win32-shippable/opt: dVYsS2jAQkqCIhE0QZE7Sw + beetmover-checksums-sco-win64-aarch64-shippable/opt: Ld4XJypYShqNuYphwXg6Og + beetmover-checksums-sco-win64-shippable/opt: PZUQVP9SRR6H33eUyxJenw + beetmover-checksums-si-linux-shippable/opt: G-2IeSIxRS-ZZi_PSaPmMw + beetmover-checksums-si-linux64-shippable/opt: G5D2_UL5Q7qFGeeW95ug2w + beetmover-checksums-si-macosx64-shippable/opt: DSxWqI1vSWyqhaQmGAnZAQ + beetmover-checksums-si-win32-shippable/opt: XwC6PbJjQ9acXwomwiQ2-A + beetmover-checksums-si-win64-aarch64-shippable/opt: Ew-DMt5uSPe3s3ue-xdgtw + beetmover-checksums-si-win64-shippable/opt: Fy2YqGf_R1qJMW1pSqR60g + beetmover-checksums-sk-linux-shippable/opt: TpCxqicpRGKSZKWdOE8lKQ + beetmover-checksums-sk-linux64-shippable/opt: D2zjTKvxSVG4fR3XRauDWg + beetmover-checksums-sk-macosx64-shippable/opt: eGo2HFKMQauTAzCdP4MWFw + beetmover-checksums-sk-win32-shippable/opt: a-gtwXBMQLy2WBLkMTFM-A + beetmover-checksums-sk-win64-aarch64-shippable/opt: I4s9W00WRECo16suWu9sTQ + beetmover-checksums-sk-win64-shippable/opt: fYS_joU5SZGpnPpp0Slb4w + beetmover-checksums-sl-linux-shippable/opt: NMbgONLjTJiFdP032jx4DA + beetmover-checksums-sl-linux64-shippable/opt: HpqQX0diT02AyYY8fay3-g + beetmover-checksums-sl-macosx64-shippable/opt: fiQmApwETMac9PfxZv3Dbg + beetmover-checksums-sl-win32-shippable/opt: C7G6w_1xTZmPqIdepH5b_Q + beetmover-checksums-sl-win64-aarch64-shippable/opt: PqMQ1tDKRDKEH4x4VgLD0A + beetmover-checksums-sl-win64-shippable/opt: eDUNjSV-QA6ftWwBh5b5bA + beetmover-checksums-son-linux-shippable/opt: axlNUiqdTFCel7KxiLzKZg + beetmover-checksums-son-linux64-shippable/opt: Z4ylarByTuycQ58aCBYHCw + beetmover-checksums-son-macosx64-shippable/opt: OBOpuwAtTsuo6E7jVV7Ydw + beetmover-checksums-son-win32-shippable/opt: OTe7ucV_TfSTn7PcMyO7sA + beetmover-checksums-son-win64-aarch64-shippable/opt: MpPIBqxSSU6xMw-O-Yc8_g + beetmover-checksums-son-win64-shippable/opt: IkhLvhqVStGFWjdZs_Khvg + beetmover-checksums-sq-linux-shippable/opt: aJID52-PQ8ei90j-2kNHjA + beetmover-checksums-sq-linux64-shippable/opt: XZZDOrBrSJuuBkQye_QjtQ + beetmover-checksums-sq-macosx64-shippable/opt: NoMMU7wZT96KjrjdEIGQMA + beetmover-checksums-sq-win32-shippable/opt: UAEW3Cx9SFOnSJuPDx6lFQ + beetmover-checksums-sq-win64-aarch64-shippable/opt: Yprbgr6CRMy6dtLilvfJ0A + beetmover-checksums-sq-win64-shippable/opt: cd_DLqSZQRS-sYZboawTbg + beetmover-checksums-sr-linux-shippable/opt: GnfBx8iUTDW6Wd2B5Fem0Q + beetmover-checksums-sr-linux64-shippable/opt: Po9ka0WBSxiXLnu8NY9yXg + beetmover-checksums-sr-macosx64-shippable/opt: FYRldcMDROK_H5WUP9rI1w + beetmover-checksums-sr-win32-shippable/opt: ffVt7ZeiSP2Ug2piJctuhA + beetmover-checksums-sr-win64-aarch64-shippable/opt: Rbniuf72RTij_qD9mEFaxg + beetmover-checksums-sr-win64-shippable/opt: JHg3ac_BQaGRPRpeXezenw + beetmover-checksums-sv-SE-linux-shippable/opt: KekYVBnYQm2YWYX6ehZ7kg + beetmover-checksums-sv-SE-linux64-shippable/opt: flLOOX1aTwKOoYHAFN8oJw + beetmover-checksums-sv-SE-macosx64-shippable/opt: LQWy5szJSn-Wain9jihwbw + beetmover-checksums-sv-SE-win32-shippable/opt: Rvp4KGdvRuitecSy89puhQ + beetmover-checksums-sv-SE-win64-aarch64-shippable/opt: P8L9737_Rd-1sRYqgXNpfA + beetmover-checksums-sv-SE-win64-shippable/opt: S8gnwh2ZTj-DqjwqPXJ8jQ + beetmover-checksums-szl-linux-shippable/opt: SN9InqemSAyfMq9BMvVPpA + beetmover-checksums-szl-linux64-shippable/opt: C6-ALZ2DRBm7u8vKCYcx6A + beetmover-checksums-szl-macosx64-shippable/opt: T9qTKeGtTCmRVPYdlZc4Vg + beetmover-checksums-szl-win32-shippable/opt: ZUQ5nIexSQOd3WHNtphtfA + beetmover-checksums-szl-win64-aarch64-shippable/opt: ZqJsgbzgSLy2LGcT2skGeA + beetmover-checksums-szl-win64-shippable/opt: dYVgW8a1RX6lRCu87mA5yA + beetmover-checksums-ta-linux-shippable/opt: XUpiPjyjTGiQXKKHGGoX2g + beetmover-checksums-ta-linux64-shippable/opt: AP88D9tNQyisKQXmEDEYig + beetmover-checksums-ta-macosx64-shippable/opt: EwvfLYCRREmv6No3S52u1g + beetmover-checksums-ta-win32-shippable/opt: Ygoc7YlySXWYUCV943ekWg + beetmover-checksums-ta-win64-aarch64-shippable/opt: Tuhz91McQa-7TGjsNyPHMA + beetmover-checksums-ta-win64-shippable/opt: SemtR9PvRDO1gHgua6mRzA + beetmover-checksums-te-linux-shippable/opt: H63Oq0CUQ9aGbjIqyxV9Ow + beetmover-checksums-te-linux64-shippable/opt: dGNMyyRPSryPu-4SXMhDVg + beetmover-checksums-te-macosx64-shippable/opt: W-qtJDKLSymXAcigcnp_OA + beetmover-checksums-te-win32-shippable/opt: EaA41JoDQw6PdVox72Gm4w + beetmover-checksums-te-win64-aarch64-shippable/opt: d5EgWPgdRTi9C0lSB0CdCg + beetmover-checksums-te-win64-shippable/opt: fx17uEKoSUeEvsSZ4M9ydg + beetmover-checksums-tg-linux-shippable/opt: SYbzOU2-RWmVcgE9cTc72A + beetmover-checksums-tg-linux64-shippable/opt: b7_OhBXeRLixWBrXIEaIHQ + beetmover-checksums-tg-macosx64-shippable/opt: NDBScEuRTwuSi8ntCzUKmQ + beetmover-checksums-tg-win32-shippable/opt: dl1PPKI1ReyRWi715wZ4EQ + beetmover-checksums-tg-win64-aarch64-shippable/opt: dGtlAog1SoSbuirZyYXQpw + beetmover-checksums-tg-win64-shippable/opt: YSkuKz60SmOZkF2B35a4Jg + beetmover-checksums-th-linux-shippable/opt: c14nnV-QSPOu4eEwDLUTnQ + beetmover-checksums-th-linux64-shippable/opt: KJZrgmZFQzy0jjJ4P0B5uA + beetmover-checksums-th-macosx64-shippable/opt: MktT4WsMTr6z_S5F__M21A + beetmover-checksums-th-win32-shippable/opt: H81jkjpYQimsqOOqqJUkpA + beetmover-checksums-th-win64-aarch64-shippable/opt: acxHy_NJQNyyfDgtnwBaTw + beetmover-checksums-th-win64-shippable/opt: F70HDuJIT3eh5BDCfdHd3w + beetmover-checksums-tl-linux-shippable/opt: QSKVoj3OQqimRA0ZaCbIFQ + beetmover-checksums-tl-linux64-shippable/opt: R0cTwwHvTR-P8nR8i7iw1A + beetmover-checksums-tl-macosx64-shippable/opt: DcQbx37nQim3YvSsSRA6bw + beetmover-checksums-tl-win32-shippable/opt: R_M4-h4USYKbF9CZBuV1PQ + beetmover-checksums-tl-win64-aarch64-shippable/opt: IItJtZIiTlanp0oXJG1nDg + beetmover-checksums-tl-win64-shippable/opt: MZt3PAj7TT-22yq1AWTzUw + beetmover-checksums-tr-linux-shippable/opt: bU5FBE51Tr2jhYQKLEwfiA + beetmover-checksums-tr-linux64-shippable/opt: KDNKfmwyQVeay9lLcxXNjg + beetmover-checksums-tr-macosx64-shippable/opt: Ynn0nRk1TMejTd_gFDPzww + beetmover-checksums-tr-win32-shippable/opt: aC30Oj_lRqO7lJXin31lng + beetmover-checksums-tr-win64-aarch64-shippable/opt: FDs6Ht0sScaXFniTClWjeA + beetmover-checksums-tr-win64-shippable/opt: NzavwH2aQJKZRsBcMVtIEA + beetmover-checksums-trs-linux-shippable/opt: D4crTP1LSrui1Q44iMdTeQ + beetmover-checksums-trs-linux64-shippable/opt: GflBv_w_T5uYRgTNMiQ2wA + beetmover-checksums-trs-macosx64-shippable/opt: fBKIF4AYTGCx9gVs2F1zww + beetmover-checksums-trs-win32-shippable/opt: dL_hUhbqT3qdnO8wz9_Ylw + beetmover-checksums-trs-win64-aarch64-shippable/opt: Z1OOIu9mRDOOmE9xUQXETA + beetmover-checksums-trs-win64-shippable/opt: P7LYkx8-SY2yFss1LNrBGA + beetmover-checksums-uk-linux-shippable/opt: H7jlyhxtT4yzYTWhnuuT-g + beetmover-checksums-uk-linux64-shippable/opt: ByYNI0auTWGPb8T6B70Cnw + beetmover-checksums-uk-macosx64-shippable/opt: KMhR3TslQVyYHiBCH6bmnA + beetmover-checksums-uk-win32-shippable/opt: bUFznOIaTx2tqshxQmzzzg + beetmover-checksums-uk-win64-aarch64-shippable/opt: QwDkWjPUS7m3Qs6s_MMS3A + beetmover-checksums-uk-win64-shippable/opt: B1fux60_SMyocUDishNFOw + beetmover-checksums-ur-linux-shippable/opt: UoxBP6vLTFGnlQ-4ehYdIA + beetmover-checksums-ur-linux64-shippable/opt: XRxHGTTwTvGn1DJ3dageSQ + beetmover-checksums-ur-macosx64-shippable/opt: f1Yi9FOfTA27F03M-2ecdg + beetmover-checksums-ur-win32-shippable/opt: Gukbio2BQ_W7psweNtM3JQ + beetmover-checksums-ur-win64-aarch64-shippable/opt: ZbiHw8IbTx-pJLO_j45ZEA + beetmover-checksums-ur-win64-shippable/opt: C0lXG8vIQ62AuwQ7jyLszw + beetmover-checksums-uz-linux-shippable/opt: BAfxd5x_Rl6xtYb1fJ1oTw + beetmover-checksums-uz-linux64-shippable/opt: A2zTp94tR1eDZ9Ze9bgJig + beetmover-checksums-uz-macosx64-shippable/opt: fJxFGbMxTeyhTi5McGMhoA + beetmover-checksums-uz-win32-shippable/opt: DdpINKkpRlqW_Knl88sMfw + beetmover-checksums-uz-win64-aarch64-shippable/opt: JBR3nZjZTWSWyvda1z5pug + beetmover-checksums-uz-win64-shippable/opt: DwTaCfS3QNS2H_JqXFjGRg + beetmover-checksums-vi-linux-shippable/opt: EDsrntbJTRioG4KkNwLKIg + beetmover-checksums-vi-linux64-shippable/opt: DCL33tlKRGWgTcno0PCrWQ + beetmover-checksums-vi-macosx64-shippable/opt: RDf9NrTrQtGJNuDWfufLXw + beetmover-checksums-vi-win32-shippable/opt: UNQYeX5tTcC_lTUlSrmeiQ + beetmover-checksums-vi-win64-aarch64-shippable/opt: WLTI5OFpRWmX9e_HeYqzDw + beetmover-checksums-vi-win64-shippable/opt: L6S76vLzTzOyVNi9oa8CkA + beetmover-checksums-win32-shippable/opt: MgrevKNnT1C_1uLOGRV4dQ + beetmover-checksums-win64-aarch64-shippable/opt: My4iKouASzqzdYtrP3ke6Q + beetmover-checksums-win64-shippable/opt: LDNXRFZlT_q5iDPsignZcQ + beetmover-checksums-xh-linux-shippable/opt: CMxH1hMjStKVCmPk9DJYkw + beetmover-checksums-xh-linux64-shippable/opt: AK44lgJJSO6fqL2Sfa-b3g + beetmover-checksums-xh-macosx64-shippable/opt: eW26LzNeQcifWIJeCxdcrw + beetmover-checksums-xh-win32-shippable/opt: FUe_cFvWQUiilbPXpoyiEg + beetmover-checksums-xh-win64-aarch64-shippable/opt: D34EAY-6TP20HVB6VczL4Q + beetmover-checksums-xh-win64-shippable/opt: ShV5ioQ-Sfq-u6-PIP0EzQ + beetmover-checksums-zh-CN-linux-shippable/opt: WjKaoZQNQDaLSoYbPMw-iw + beetmover-checksums-zh-CN-linux64-shippable/opt: On1hx7TmSwusK2gmCR3OwQ + beetmover-checksums-zh-CN-macosx64-shippable/opt: OrNCCa_fQ5urFJ-vELxgsw + beetmover-checksums-zh-CN-win32-shippable/opt: YkPlLTHmQHaft41WLbfk_g + beetmover-checksums-zh-CN-win64-aarch64-shippable/opt: B8uXFBP5RTS73HpkkHN8BA + beetmover-checksums-zh-CN-win64-shippable/opt: cKBty6PhSS64SdsV2pT2mA + beetmover-checksums-zh-TW-linux-shippable/opt: OjloR8tgTsCtAPzt2IR-fw + beetmover-checksums-zh-TW-linux64-shippable/opt: ciVZ0HIlQk69ebZfsncVGA + beetmover-checksums-zh-TW-macosx64-shippable/opt: HE6XVdX4QFy_FBwxZJHLBA + beetmover-checksums-zh-TW-win32-shippable/opt: A7OW6tR_TrmVvinYhpX8cw + beetmover-checksums-zh-TW-win64-aarch64-shippable/opt: Sbv30I3CT7aX5UFTM5cOtw + beetmover-checksums-zh-TW-win64-shippable/opt: HVvEibBjQWKPhlWnDhdYZQ + beetmover-repackage-ach-linux-shippable/opt: IkzCa3SUTyC1dIZZIy2iYQ + beetmover-repackage-ach-linux64-shippable/opt: Z6iX1-5BRnSR53AzrOSc6Q + beetmover-repackage-ach-macosx64-shippable/opt: RabuTCtIQp2Tb5NyioJKuA + beetmover-repackage-ach-win32-shippable/opt: ELetT2EDQKerUaJ5Bh7umw + beetmover-repackage-ach-win64-aarch64-shippable/opt: GPRX4VQjQreZQkCrpLL2Sg + beetmover-repackage-ach-win64-shippable/opt: LbKTjGXgSqC2m50xJ3krcg + beetmover-repackage-af-linux-shippable/opt: Li4DfLGURnePMlhjYqJ0-w + beetmover-repackage-af-linux64-shippable/opt: O2Y2YJaYR2eDkY7LlJXBsg + beetmover-repackage-af-macosx64-shippable/opt: IuZoIc9yQCuiVwlGFeX6rA + beetmover-repackage-af-win32-shippable/opt: FUVJJpK1Qaerxv0iXkFd7Q + beetmover-repackage-af-win64-aarch64-shippable/opt: Cl5Qc6nvTZawejEBsGipmQ + beetmover-repackage-af-win64-shippable/opt: JXmr1EsGRoWbsDA7fZo-rQ + beetmover-repackage-an-linux-shippable/opt: YDz3hqVfQtWiQqJh8eE_Uw + beetmover-repackage-an-linux64-shippable/opt: Pt8p6M-lSIGj92SxSzyRbQ + beetmover-repackage-an-macosx64-shippable/opt: c1k6bNf1Rvys66G5jNaJsw + beetmover-repackage-an-win32-shippable/opt: d-XOXIE5S8qI8pU6Nz4k6w + beetmover-repackage-an-win64-aarch64-shippable/opt: XsOEpBW5REOkj0YEXiOBGg + beetmover-repackage-an-win64-shippable/opt: QgX8IWhxTRu76weHnNkXGQ + beetmover-repackage-ar-linux-shippable/opt: XbjgaXhaSa6f5Jy7CfgKFQ + beetmover-repackage-ar-linux64-shippable/opt: SSbWccGkToiStbZNequ8yg + beetmover-repackage-ar-macosx64-shippable/opt: Cw5hgWdnSii76FkU19_gNw + beetmover-repackage-ar-win32-shippable/opt: IjYWKg0NQ5C921VfpWaQRA + beetmover-repackage-ar-win64-aarch64-shippable/opt: YDjdiashQYuV56QCEnq4bQ + beetmover-repackage-ar-win64-shippable/opt: fL6Gggs4TUO_oJTNCLxrMg + beetmover-repackage-ast-linux-shippable/opt: Swpi33siToOv6Aq1CS-6xA + beetmover-repackage-ast-linux64-shippable/opt: KuWMRiCXQdSdyj65KTKSmg + beetmover-repackage-ast-macosx64-shippable/opt: d8OTtYsVS-uDWSg2FItFzw + beetmover-repackage-ast-win32-shippable/opt: JHV8EeO7Rcu4A7oLmmzxLQ + beetmover-repackage-ast-win64-aarch64-shippable/opt: R36L4j75T26uyca1VBfrHw + beetmover-repackage-ast-win64-shippable/opt: ZV2PXw52SU2lLsTPbFTQXg + beetmover-repackage-az-linux-shippable/opt: YD0pa2rmTrqYevU-qr53Fg + beetmover-repackage-az-linux64-shippable/opt: DR5oL51zRiu_w492exZxww + beetmover-repackage-az-macosx64-shippable/opt: H07EwUYCTKCYG34p6YbVVQ + beetmover-repackage-az-win32-shippable/opt: KQoC_ee6ReGpTVNEN3De2w + beetmover-repackage-az-win64-aarch64-shippable/opt: f9uqUZVHT-izNnd3nPMGXg + beetmover-repackage-az-win64-shippable/opt: Zc85tBSbQ8iARzk5Jj0pMQ + beetmover-repackage-be-linux-shippable/opt: L1xraXgsQZmNfkuex8Ii8A + beetmover-repackage-be-linux64-shippable/opt: RA17Yu0ITMWTTcgGzEvWww + beetmover-repackage-be-macosx64-shippable/opt: bETT3i48QzaG8YTnsZ4TbQ + beetmover-repackage-be-win32-shippable/opt: VSZ2EhmyRFKeEwMhwR5vzQ + beetmover-repackage-be-win64-aarch64-shippable/opt: WVo8LdyzR-2LMzmlt63pJw + beetmover-repackage-be-win64-shippable/opt: Lbl9cUBhQbSBJT4lOCYWQQ + beetmover-repackage-bg-linux-shippable/opt: CAfkL-yGT3awE9bH8qChqg + beetmover-repackage-bg-linux64-shippable/opt: IUsFxOFTQyqTzfPAdfEzCg + beetmover-repackage-bg-macosx64-shippable/opt: FXzKMs8-Q7aUVinlZhPhUw + beetmover-repackage-bg-win32-shippable/opt: PtcHzkkpT56i1EANzXzuFg + beetmover-repackage-bg-win64-aarch64-shippable/opt: Nzkf3dYKRgarir4Acg-CpA + beetmover-repackage-bg-win64-shippable/opt: Ev8alDCmTZaSzXdXGiUlwA + beetmover-repackage-bn-linux-shippable/opt: aj5t2Xw_SryyijWoCiYK9g + beetmover-repackage-bn-linux64-shippable/opt: VMpT34yOQ3qhU_MsV5jS3Q + beetmover-repackage-bn-macosx64-shippable/opt: GYXV1w3FToeU_T5H3UbKzQ + beetmover-repackage-bn-win32-shippable/opt: btTso3_sRZuSX78oc873pg + beetmover-repackage-bn-win64-aarch64-shippable/opt: Cm6OI2qSTOGl7DvpIZHVQQ + beetmover-repackage-bn-win64-shippable/opt: Eb1gg7BFQZGGw9VM2uAFhg + beetmover-repackage-br-linux-shippable/opt: AjP6iukHTtqNrRRWUN2O1Q + beetmover-repackage-br-linux64-shippable/opt: RIUZDudEQYW10EJ3q8T4Mw + beetmover-repackage-br-macosx64-shippable/opt: V7Qe1xKVSEiScOqc2C9oSg + beetmover-repackage-br-win32-shippable/opt: I9OliKM7QZykbxtOQMYsxw + beetmover-repackage-br-win64-aarch64-shippable/opt: FWWOfwHfRSmLFzx2pXL3ow + beetmover-repackage-br-win64-shippable/opt: VPnedqp8TmOIQ_qSBPf5NQ + beetmover-repackage-bs-linux-shippable/opt: WlUpC5faSraJxIZ6XURasQ + beetmover-repackage-bs-linux64-shippable/opt: Op9-_RYoSvKOcTHrbz1atA + beetmover-repackage-bs-macosx64-shippable/opt: AzFnHoWcTG2N5Rlhm_n3RQ + beetmover-repackage-bs-win32-shippable/opt: d0VBB9EKSz2FxJ4q8Npiig + beetmover-repackage-bs-win64-aarch64-shippable/opt: IKSezGS2R4OdehH6f4Gyfw + beetmover-repackage-bs-win64-shippable/opt: ei1y7_PrTwmpod2rLZ9cwQ + beetmover-repackage-ca-linux-shippable/opt: EmgTtRhJQR2T0xttaOr2og + beetmover-repackage-ca-linux64-shippable/opt: Tb_G4gJmTBO9MFrghBoSTw + beetmover-repackage-ca-macosx64-shippable/opt: Sk15y0MeTtScULLy0BhpWA + beetmover-repackage-ca-valencia-linux-shippable/opt: ZimH_49bQ4K6K5p26WEV5g + beetmover-repackage-ca-valencia-linux64-shippable/opt: MExZf8GORwKcRzjuUpGjnw + beetmover-repackage-ca-valencia-macosx64-shippable/opt: GjjZ3Z_dQB-G2QcMk3mgMw + beetmover-repackage-ca-valencia-win32-shippable/opt: VSQHiDDiR9GqHk_OhbyPxA + beetmover-repackage-ca-valencia-win64-aarch64-shippable/opt: VbjDQwD9SUufI2nYC0FUow + beetmover-repackage-ca-valencia-win64-shippable/opt: MIzeR1X9SzOYcbPRF2xdTA + beetmover-repackage-ca-win32-shippable/opt: BBDp1QfYTbOuwypyBaw7rw + beetmover-repackage-ca-win64-aarch64-shippable/opt: POiE8btmRgqrObGDq8YRgw + beetmover-repackage-ca-win64-shippable/opt: ddxChzQ6TqOdv01b7qwOjQ + beetmover-repackage-cak-linux-shippable/opt: QWLq5Y77SVK7IA3xVlBDYw + beetmover-repackage-cak-linux64-shippable/opt: cCVzF9HjS4uEMYFUXjGiJg + beetmover-repackage-cak-macosx64-shippable/opt: TNyAgJsGTQuvuiiP_e-tog + beetmover-repackage-cak-win32-shippable/opt: RbyTATU2QjqyPfoSexgaFw + beetmover-repackage-cak-win64-aarch64-shippable/opt: SpzDhZ01SEaDZ66yVLgRuA + beetmover-repackage-cak-win64-shippable/opt: R79qAjRHSeKJDDBaTnhQNQ + beetmover-repackage-cs-linux-shippable/opt: PdSbmW_1Qkmq_lPlJeceIg + beetmover-repackage-cs-linux64-shippable/opt: cYN-cWnSRGi3j0gZ7PSOpg + beetmover-repackage-cs-macosx64-shippable/opt: LcCJk-0cT8uF6HPCNOKuXw + beetmover-repackage-cs-win32-shippable/opt: YUB4xKsQQaKzVGCx7EqfCQ + beetmover-repackage-cs-win64-aarch64-shippable/opt: ESbom0GqRsmC35ozZ7o8Lw + beetmover-repackage-cs-win64-shippable/opt: bzJmT2dCT0qxJoZiaFlU7A + beetmover-repackage-cy-linux-shippable/opt: QyvC6I28TpCK8BQMG7QcSA + beetmover-repackage-cy-linux64-shippable/opt: Hb2geMisRHuHoDrpzq8FbA + beetmover-repackage-cy-macosx64-shippable/opt: QULqD_jWQFaXj3kqLX3Log + beetmover-repackage-cy-win32-shippable/opt: EC0Y392yT3KL9KfcEs83wA + beetmover-repackage-cy-win64-aarch64-shippable/opt: EaKzHriSTWiHSqdA7ONOfw + beetmover-repackage-cy-win64-shippable/opt: QzH7edqbQ2S_9og8SwQXvQ + beetmover-repackage-da-linux-shippable/opt: OsY6r7QtRo-ZVAg0c0NO0g + beetmover-repackage-da-linux64-shippable/opt: DK9SP627S3KRKPXpxwf-1w + beetmover-repackage-da-macosx64-shippable/opt: Vuz9KOktTjenD9CcCOxOuw + beetmover-repackage-da-win32-shippable/opt: cVhS7LxUQay4h_5ft_dw1g + beetmover-repackage-da-win64-aarch64-shippable/opt: e-p1ocXOR-WKFX1JTUDQaQ + beetmover-repackage-da-win64-shippable/opt: QoKiIMlAQiWJ3jiLOaXs2Q + beetmover-repackage-de-linux-shippable/opt: eEMt3hzxS5-2U8ZjZUSMEg + beetmover-repackage-de-linux64-shippable/opt: b2IjZPzmSpCRj_wPOMO9wQ + beetmover-repackage-de-macosx64-shippable/opt: MBWu02JoRxGMUnKMVUZ7bg + beetmover-repackage-de-win32-shippable/opt: f2asaR3DRWmx4gaKyiBLCg + beetmover-repackage-de-win64-aarch64-shippable/opt: T7M-6JZ4RZmgTKzGcKWknw + beetmover-repackage-de-win64-shippable/opt: QkZOcWc1R3i51A3DxDwPMg + beetmover-repackage-dsb-linux-shippable/opt: e4oEz7PgS3yUJBDejmQPiQ + beetmover-repackage-dsb-linux64-shippable/opt: N4shLQlGQ5iFdbqD7fmrmA + beetmover-repackage-dsb-macosx64-shippable/opt: IwqYOFx9TAuGynIAiZsucQ + beetmover-repackage-dsb-win32-shippable/opt: cK7LMs0tRmCPFBFi1pQSlw + beetmover-repackage-dsb-win64-aarch64-shippable/opt: OZURKr4lSHCu4ftMybVPew + beetmover-repackage-dsb-win64-shippable/opt: SL6D3e_MRuGu4Nghu4wxnw + beetmover-repackage-el-linux-shippable/opt: YIPDVfqQTFWW1Fct-1YXSQ + beetmover-repackage-el-linux64-shippable/opt: Ftp6FtseQTK8EixSY7Gbbw + beetmover-repackage-el-macosx64-shippable/opt: TKx3XNkeQhKsbm2BHvBOYA + beetmover-repackage-el-win32-shippable/opt: V8-AGl7yTju9wqqt0TERHA + beetmover-repackage-el-win64-aarch64-shippable/opt: bePqfmq8QeO3oP1no5BSXg + beetmover-repackage-el-win64-shippable/opt: TnLzRhuDQ0ysyc8QDj6Cog + beetmover-repackage-en-CA-linux-shippable/opt: bbwraNPYS76QTetsKc-mnw + beetmover-repackage-en-CA-linux64-shippable/opt: CYcjIfrnReGmYECs-_Ec2A + beetmover-repackage-en-CA-macosx64-shippable/opt: Cs4NDlgFS9OQhc43fUwS_A + beetmover-repackage-en-CA-win32-shippable/opt: WgY1X2bqRp26borJ48hbVw + beetmover-repackage-en-CA-win64-aarch64-shippable/opt: cnn1syrAQ7agbxl5kSvcaQ + beetmover-repackage-en-CA-win64-shippable/opt: W1iVJ0e0Qsmbf3an4sOYhw + beetmover-repackage-en-GB-linux-shippable/opt: fep1UxmwRu2_JCRnsg_NHw + beetmover-repackage-en-GB-linux64-shippable/opt: QxCj7zOaQlSUs4dRYO9puA + beetmover-repackage-en-GB-macosx64-shippable/opt: PKh33moAT9KB51Bt2p-UvQ + beetmover-repackage-en-GB-win32-shippable/opt: BwUxrd7OQWaUTyMC9bl0EA + beetmover-repackage-en-GB-win64-aarch64-shippable/opt: OkVBXPrwRWWma3Ci4jF9Zg + beetmover-repackage-en-GB-win64-shippable/opt: KUuTA_4LSaKuQQLpTzdTxA + beetmover-repackage-eo-linux-shippable/opt: EbzvZNo0QDa9WfyKVT0T-Q + beetmover-repackage-eo-linux64-shippable/opt: fD3OP3-JRK2wkpuJp_fx5Q + beetmover-repackage-eo-macosx64-shippable/opt: CKFnQ05PROGuVylqZ6Cs5w + beetmover-repackage-eo-win32-shippable/opt: X34t_fAAQmuiKKy8LxbGUQ + beetmover-repackage-eo-win64-aarch64-shippable/opt: GvSIdiStSx6vRMeJc2wRnA + beetmover-repackage-eo-win64-shippable/opt: TrS4IhIDSuKKQRH9oxfnVA + beetmover-repackage-es-AR-linux-shippable/opt: QnFed-SPToyY732B0yxmLg + beetmover-repackage-es-AR-linux64-shippable/opt: fGXP0mrlSX6258vZrGekaQ + beetmover-repackage-es-AR-macosx64-shippable/opt: DB77FoKSTGqDEiJcFD7RWQ + beetmover-repackage-es-AR-win32-shippable/opt: EPbIYHN4RnesptjBou8gVQ + beetmover-repackage-es-AR-win64-aarch64-shippable/opt: OxnV64a7QcieGzDRlcwgUg + beetmover-repackage-es-AR-win64-shippable/opt: Vs3R0zmCQHqRenuK8PyW1g + beetmover-repackage-es-CL-linux-shippable/opt: bN4vXGxHQ26N9ra0uxw8nA + beetmover-repackage-es-CL-linux64-shippable/opt: JI0D0B_CTzKRFl0hhyoXgw + beetmover-repackage-es-CL-macosx64-shippable/opt: AFi6JmQzRSi77vRd98koig + beetmover-repackage-es-CL-win32-shippable/opt: B6Pi241OQY2oVacpBVdl5g + beetmover-repackage-es-CL-win64-aarch64-shippable/opt: S5zFN166SHaDw7DCg5LwlQ + beetmover-repackage-es-CL-win64-shippable/opt: eONyKrNQTgqHIvNBsepmOA + beetmover-repackage-es-ES-linux-shippable/opt: AaBBZhsGQTeGqDrNkDbK1g + beetmover-repackage-es-ES-linux64-shippable/opt: QI1J_IxMSAOQtZESWeSmFw + beetmover-repackage-es-ES-macosx64-shippable/opt: fzwRuV4nSr-LZzWIxMwRGQ + beetmover-repackage-es-ES-win32-shippable/opt: QUns4gtJR56EW4YNGXYa2w + beetmover-repackage-es-ES-win64-aarch64-shippable/opt: KbbS2XchRJSWvnsU5toVSg + beetmover-repackage-es-ES-win64-shippable/opt: OpONNHS3S_WeNk5YaPoeJg + beetmover-repackage-es-MX-linux-shippable/opt: Oh6BsYyNRlmY8JY0Cotb9w + beetmover-repackage-es-MX-linux64-shippable/opt: JkWkCcz3TBGENdout1I4aw + beetmover-repackage-es-MX-macosx64-shippable/opt: GKByV8B3T4WVi3AechIs1w + beetmover-repackage-es-MX-win32-shippable/opt: RN2xGyUBRuCSuydBlYVAdg + beetmover-repackage-es-MX-win64-aarch64-shippable/opt: Okz8BCP1TQGvarJ2KVd4zA + beetmover-repackage-es-MX-win64-shippable/opt: cJdJ6udkQ7W1NTBzkBDtvA + beetmover-repackage-et-linux-shippable/opt: SgVytjDKTmC0MTw6LvvO2A + beetmover-repackage-et-linux64-shippable/opt: cMRnRgYHTZOqRs8TQw9Anw + beetmover-repackage-et-macosx64-shippable/opt: QhilGgqbQ-yvvXTJRq6afg + beetmover-repackage-et-win32-shippable/opt: Pq-CVJ9lQ323moQ9N84Vfw + beetmover-repackage-et-win64-aarch64-shippable/opt: Un8eltw1TK6XR3Ik7dlxZw + beetmover-repackage-et-win64-shippable/opt: UpGn8Ie4RDOeaM-KUOxugw + beetmover-repackage-eu-linux-shippable/opt: Ef0Ta9h5R0GfeudUwtqfng + beetmover-repackage-eu-linux64-shippable/opt: Z5CaPdwpQgiULTeTTYKp0g + beetmover-repackage-eu-macosx64-shippable/opt: WhIhs3qmTBi4Aib3ftGfvQ + beetmover-repackage-eu-win32-shippable/opt: VLod0nTyS_Wm5GcbXLwlbA + beetmover-repackage-eu-win64-aarch64-shippable/opt: Cp0nUsTUQN-FjK6n5LWl3g + beetmover-repackage-eu-win64-shippable/opt: IdbU_wWLQxu81SzVqDyM-A + beetmover-repackage-fa-linux-shippable/opt: O0jiKylRRrSMyJ4GtaSclA + beetmover-repackage-fa-linux64-shippable/opt: Fp0hpwMHSYCRw9OkbUGN0g + beetmover-repackage-fa-macosx64-shippable/opt: dCa35emPTSa6MpaHRWTVOQ + beetmover-repackage-fa-win32-shippable/opt: SN6lX9CASWClp2cq2w3ozw + beetmover-repackage-fa-win64-aarch64-shippable/opt: Oul1y69gTcO3bGyFmVpuyw + beetmover-repackage-fa-win64-shippable/opt: c24BpETpSy-nI6ltkS80VQ + beetmover-repackage-ff-linux-shippable/opt: NzfL8x9qRe6mhZqDpIHsDQ + beetmover-repackage-ff-linux64-shippable/opt: SlkzZ0mgSzG33LOk8hrOPQ + beetmover-repackage-ff-macosx64-shippable/opt: Ueood4DHRbu_nr2a-kbkoQ + beetmover-repackage-ff-win32-shippable/opt: OnjVSou1TuOSHlx4sTiNGw + beetmover-repackage-ff-win64-aarch64-shippable/opt: BhlwEMCsT42y46rVjMORFg + beetmover-repackage-ff-win64-shippable/opt: b3WIp21-RRqydbwSSiKJNA + beetmover-repackage-fi-linux-shippable/opt: Zd9tmLjVSXGlxm0MsoOJEQ + beetmover-repackage-fi-linux64-shippable/opt: OAE3NNAUT7ibm73wpjAzCg + beetmover-repackage-fi-macosx64-shippable/opt: RnJrtzP2QMGCRhgP_vyHbg + beetmover-repackage-fi-win32-shippable/opt: WTbl0viySN67BCChp_jGUg + beetmover-repackage-fi-win64-aarch64-shippable/opt: aN4LuPiaR-eE4RhanOk7Yg + beetmover-repackage-fi-win64-shippable/opt: HZcP1sxrRJGGGhoab6Q29Q + beetmover-repackage-fr-linux-shippable/opt: IeDqN3UmT--IqDyrHI0CZA + beetmover-repackage-fr-linux64-shippable/opt: R_DWsModSZC9ajliUY_edg + beetmover-repackage-fr-macosx64-shippable/opt: clPkBr8BSiCqRQpd9-dszg + beetmover-repackage-fr-win32-shippable/opt: NDtEReRHQ0W4q6Q8WSI3TA + beetmover-repackage-fr-win64-aarch64-shippable/opt: Dhp7fGpNTnSCkTKCAgTjSA + beetmover-repackage-fr-win64-shippable/opt: MwKJqTSKTeqzjFOxaYHM3g + beetmover-repackage-fur-linux-shippable/opt: VgMk7U_hSoS9tMDT4fTKpQ + beetmover-repackage-fur-linux64-shippable/opt: E5aO_OBNTNKytMlNCSMEwQ + beetmover-repackage-fur-macosx64-shippable/opt: Ufs0X0a2Q3ORC-wbf1X8FA + beetmover-repackage-fur-win32-shippable/opt: fy8lZwOMSzCcbYTlN5qKuA + beetmover-repackage-fur-win64-aarch64-shippable/opt: RpX1_kQGSsicqjjzLufJIg + beetmover-repackage-fur-win64-shippable/opt: RqXYAtqkR4a85T6pJautIg + beetmover-repackage-fy-NL-linux-shippable/opt: TeZodvZcT42MnG7gRtecmA + beetmover-repackage-fy-NL-linux64-shippable/opt: X1sgTDWNTpaJHsPMcvvxwA + beetmover-repackage-fy-NL-macosx64-shippable/opt: cUsizFXMQmuH0xuJmckTBQ + beetmover-repackage-fy-NL-win32-shippable/opt: XsajDZLeRgKP9x72KuI6SA + beetmover-repackage-fy-NL-win64-aarch64-shippable/opt: VPO9J5XSRQq0rwPRbG2XVw + beetmover-repackage-fy-NL-win64-shippable/opt: R7x59aTqTh6d5QVhrVMf7w + beetmover-repackage-ga-IE-linux-shippable/opt: OcwdeGZgQhuHf9xu9vvcyw + beetmover-repackage-ga-IE-linux64-shippable/opt: W6BV61YXQX6I0YXGj5PmDg + beetmover-repackage-ga-IE-macosx64-shippable/opt: cZuoTDZOQIucOsgxIuKtuw + beetmover-repackage-ga-IE-win32-shippable/opt: Zxwdtj4uRHu_68L-OxVIsA + beetmover-repackage-ga-IE-win64-aarch64-shippable/opt: VTteYuN1RoiHT_j4tT5cJw + beetmover-repackage-ga-IE-win64-shippable/opt: J-orGpfnRSOnVZfeFjfAZg + beetmover-repackage-gd-linux-shippable/opt: ZiW3Wfn9SiqKxyoDDurrng + beetmover-repackage-gd-linux64-shippable/opt: cfl9juX7Qq-5ikP3Ozy_rA + beetmover-repackage-gd-macosx64-shippable/opt: Y1Uv-6vWSPaY3kIH3hV2iw + beetmover-repackage-gd-win32-shippable/opt: S-sH9MvfTQGZ59__QTjpjw + beetmover-repackage-gd-win64-aarch64-shippable/opt: V_n3w5HdSFW7BXGeEnCxzg + beetmover-repackage-gd-win64-shippable/opt: awLXhLYwR86D8hIXahu05g + beetmover-repackage-gl-linux-shippable/opt: Pjo34EvoTOmx7rFQ-A_bgA + beetmover-repackage-gl-linux64-shippable/opt: DvscRJBlR1qaTStBVplmAw + beetmover-repackage-gl-macosx64-shippable/opt: W-X9-ioTSLGK9km25V6ScQ + beetmover-repackage-gl-win32-shippable/opt: LqqJZn8tTgqhWiYMK2JRbw + beetmover-repackage-gl-win64-aarch64-shippable/opt: ZpiOFDPzQr-ui5goagpLWg + beetmover-repackage-gl-win64-shippable/opt: OYvaRMXJRWyKd3uvqojvkQ + beetmover-repackage-gn-linux-shippable/opt: CH34lJa_RmSB5IMl_ZXDEg + beetmover-repackage-gn-linux64-shippable/opt: XduQOkAaQ0KezpGlICKTaQ + beetmover-repackage-gn-macosx64-shippable/opt: UGggz2RgRTWFdvERgJudYQ + beetmover-repackage-gn-win32-shippable/opt: NNqY6UoUSXOEtfhD8yAMDw + beetmover-repackage-gn-win64-aarch64-shippable/opt: Sqe3jD6lQh-fJW2H92-wIA + beetmover-repackage-gn-win64-shippable/opt: RVExmLfsSA6efwL5dYw6CA + beetmover-repackage-gu-IN-linux-shippable/opt: SgM3NGfpQPOyDOL6T6YtLQ + beetmover-repackage-gu-IN-linux64-shippable/opt: X6aIfzZDQ7OlDfPjaSn-bg + beetmover-repackage-gu-IN-macosx64-shippable/opt: FOYfHK6NTHSn7lleVhmW2w + beetmover-repackage-gu-IN-win32-shippable/opt: MmM8yWkPQCGmjoIbUQs5eQ + beetmover-repackage-gu-IN-win64-aarch64-shippable/opt: C9_9ZgqVRXW4gqk21bjgBg + beetmover-repackage-gu-IN-win64-shippable/opt: A6M3Y7NIS2-4oSx1qsg2cQ + beetmover-repackage-he-linux-shippable/opt: S7TUcBotQJOuoiW9CcQEsw + beetmover-repackage-he-linux64-shippable/opt: UU1AISDLQF65tmLCh22Ceg + beetmover-repackage-he-macosx64-shippable/opt: Igo9vm1-TQWlRJQc-aYLTQ + beetmover-repackage-he-win32-shippable/opt: Jb28iq0OTXuezflIAbxnrw + beetmover-repackage-he-win64-aarch64-shippable/opt: Nk1utc_gSsW6Bwc4gRdnXA + beetmover-repackage-he-win64-shippable/opt: RtW_9uieTSWPdEKZifF5-g + beetmover-repackage-hi-IN-linux-shippable/opt: clDHC68YSc67K3ItNp1DMA + beetmover-repackage-hi-IN-linux64-shippable/opt: fdGCw25lSb-wNH5TMxiNtw + beetmover-repackage-hi-IN-macosx64-shippable/opt: GhOCIQB9QTifopqh8ULHyA + beetmover-repackage-hi-IN-win32-shippable/opt: JfnnNZzzRfe5n6A-Bc5bvQ + beetmover-repackage-hi-IN-win64-aarch64-shippable/opt: VA7YUMSiQkWCRz0pM_KzRg + beetmover-repackage-hi-IN-win64-shippable/opt: TrXdb5GpRzu3eHY-q_-MCA + beetmover-repackage-hr-linux-shippable/opt: Zsu453d4Tqquv_zhJQPdFg + beetmover-repackage-hr-linux64-shippable/opt: IB15WaNMS7qyU2gFv-vE6g + beetmover-repackage-hr-macosx64-shippable/opt: HH1Q5xyLSXqnzr0lgPff3Q + beetmover-repackage-hr-win32-shippable/opt: KSskHLhuRi2usoqYdIHgjA + beetmover-repackage-hr-win64-aarch64-shippable/opt: BrhnTMgwRo6Uo75k7UC35Q + beetmover-repackage-hr-win64-shippable/opt: NVhygiysRt2TTU0We_aGrQ + beetmover-repackage-hsb-linux-shippable/opt: VefdZH9MSoG-WIBow0o7Dg + beetmover-repackage-hsb-linux64-shippable/opt: TU1DolExQ0OHOsKvL9EzeA + beetmover-repackage-hsb-macosx64-shippable/opt: fvGDQJoHRlakR7Fh8bR85A + beetmover-repackage-hsb-win32-shippable/opt: LxDsvPQ0S9eRS2sAv6sPCQ + beetmover-repackage-hsb-win64-aarch64-shippable/opt: IcrQSIGRST6e7kRgZeh4uQ + beetmover-repackage-hsb-win64-shippable/opt: LC38YVhJTH2CBM9MIJn9JQ + beetmover-repackage-hu-linux-shippable/opt: IjZJdG8YQgqM17tZ6DAh1A + beetmover-repackage-hu-linux64-shippable/opt: ZHOUXpThRJSka-euMRxaRw + beetmover-repackage-hu-macosx64-shippable/opt: ey6W8aQcTK66tVOWA-Hn1A + beetmover-repackage-hu-win32-shippable/opt: dEMGfH09Rc2Fh4oiTO85VA + beetmover-repackage-hu-win64-aarch64-shippable/opt: RZDXmmcZT_O9OyhkMxpsSQ + beetmover-repackage-hu-win64-shippable/opt: ci6c3VNlS0qU6yvcvKJYbA + beetmover-repackage-hy-AM-linux-shippable/opt: Qiok3Q7QQ1G3CDXiND7bug + beetmover-repackage-hy-AM-linux64-shippable/opt: fq_Nd38kR1qSAqeZ51OwjQ + beetmover-repackage-hy-AM-macosx64-shippable/opt: Tr-IFWZ_Q46WZtDal5FYsA + beetmover-repackage-hy-AM-win32-shippable/opt: MGyVKjsmSEuL59-VrHa-5A + beetmover-repackage-hy-AM-win64-aarch64-shippable/opt: RFZA4fOiTLeIt-aJhnbGhA + beetmover-repackage-hy-AM-win64-shippable/opt: E98g_UmLTXiGfa2gAt7rnQ + beetmover-repackage-ia-linux-shippable/opt: YE94Z49TQNCc8-Am8eMRWA + beetmover-repackage-ia-linux64-shippable/opt: Hnhe29qpRmyvUovuELZcfw + beetmover-repackage-ia-macosx64-shippable/opt: P6Kn0ozYSe2_C9IWLe9Zng + beetmover-repackage-ia-win32-shippable/opt: US9mIlsfTTe6swB_Z2fR9A + beetmover-repackage-ia-win64-aarch64-shippable/opt: F0LwR3lPQYq8h41JxPT_Bg + beetmover-repackage-ia-win64-shippable/opt: GZJuzLnxQraq_EX9MKEDGA + beetmover-repackage-id-linux-shippable/opt: ZhzJVKOrRXKObZVqUbtyHA + beetmover-repackage-id-linux64-shippable/opt: JoHC7qL5R92X8vc5lIN2GA + beetmover-repackage-id-macosx64-shippable/opt: HugK8VqHThKQhzsDqVvbVg + beetmover-repackage-id-win32-shippable/opt: DqKiWJPaS6Wy_2qyzUHavA + beetmover-repackage-id-win64-aarch64-shippable/opt: PjyiEaE6Q4uj1Ic689mmog + beetmover-repackage-id-win64-shippable/opt: X3qlwKEyQzGA23NyEMH3fw + beetmover-repackage-is-linux-shippable/opt: EHz6mi6BTLGSlEp389R5Yg + beetmover-repackage-is-linux64-shippable/opt: eGYI4UFZT9KheLLImjsSUA + beetmover-repackage-is-macosx64-shippable/opt: dBKliY5OTVqKXdkvZMpH_Q + beetmover-repackage-is-win32-shippable/opt: GQFovShdSSC1mFXETrglZQ + beetmover-repackage-is-win64-aarch64-shippable/opt: W_CEurLlQLWf_cMDdye2TQ + beetmover-repackage-is-win64-shippable/opt: Z0fLpNx1Qyq0NwhYh3FDsg + beetmover-repackage-it-linux-shippable/opt: C7flo_hoS-2vX6crpWO2jg + beetmover-repackage-it-linux64-shippable/opt: Wx0b9FtNQqSx7iZpCelmOw + beetmover-repackage-it-macosx64-shippable/opt: BQg9wZG1Rai4-utOE2X7zw + beetmover-repackage-it-win32-shippable/opt: Jpr7AJgQR4yeYRmjKYmJ9Q + beetmover-repackage-it-win64-aarch64-shippable/opt: bLgATtsGTd6aIoe_osk6vA + beetmover-repackage-it-win64-shippable/opt: a1lxkkWoT4GrNrfYUOZwkQ + beetmover-repackage-ja-JP-mac-macosx64-shippable/opt: aoMWCALDSSOIw2pZFSYpZg + beetmover-repackage-ja-linux-shippable/opt: eIBmZrncQtSmno7toOmHNA + beetmover-repackage-ja-linux64-shippable/opt: WUlyNgOzQfuPXv_3EUa__w + beetmover-repackage-ja-win32-shippable/opt: I82MqOuWSiyjOpnOhhlOdQ + beetmover-repackage-ja-win64-aarch64-shippable/opt: FeEcbkduSeG4LBVyB8VmVg + beetmover-repackage-ja-win64-shippable/opt: Bnm_us3qRLC7OTgjhLbtHQ + beetmover-repackage-ka-linux-shippable/opt: VARFLV3ZTMOPSE2k0HhrKg + beetmover-repackage-ka-linux64-shippable/opt: AUnmifNTRN2KHhXuldbo8g + beetmover-repackage-ka-macosx64-shippable/opt: XFGYYiD2QqSHWaWfSNTWag + beetmover-repackage-ka-win32-shippable/opt: feZlZmxtS3KvLzL77E4c_w + beetmover-repackage-ka-win64-aarch64-shippable/opt: emhlcyvwQsuq9cyWpYPKAQ + beetmover-repackage-ka-win64-shippable/opt: GOx-ugK5S1CQ0NbyIUPHJQ + beetmover-repackage-kab-linux-shippable/opt: VW8o0VHIS9eQafNfmyzndw + beetmover-repackage-kab-linux64-shippable/opt: YyMw2EIJT_iGsbANRGb4PA + beetmover-repackage-kab-macosx64-shippable/opt: dLv_PikMShu_RMs4vppsKQ + beetmover-repackage-kab-win32-shippable/opt: SRdEw5AlSKK502Qln446bw + beetmover-repackage-kab-win64-aarch64-shippable/opt: dotmd1uuTXCXzTo7KPcAsw + beetmover-repackage-kab-win64-shippable/opt: ck7j0pMCRhmVoXpSxB1b7g + beetmover-repackage-kk-linux-shippable/opt: N7J2nJ-iTXGMHdIaG8UGNg + beetmover-repackage-kk-linux64-shippable/opt: BIo7hC_kT6y4bKhb-M-90A + beetmover-repackage-kk-macosx64-shippable/opt: V1RaSHgtTZedpCOoTBJtUw + beetmover-repackage-kk-win32-shippable/opt: dzM17KFUSGqYSNJH43kgKQ + beetmover-repackage-kk-win64-aarch64-shippable/opt: DPHMZcXnRKGbOaOFrhs9fA + beetmover-repackage-kk-win64-shippable/opt: LQTovYOLTYOHndHBD1MdIg + beetmover-repackage-km-linux-shippable/opt: f55W99mrR4y6OZJ7LiuE9w + beetmover-repackage-km-linux64-shippable/opt: aN39Sba8Th6gYzkJXXlPtQ + beetmover-repackage-km-macosx64-shippable/opt: ZA9p1l33RvW0lHZ-LAXNPw + beetmover-repackage-km-win32-shippable/opt: UG4mgkbdRVK3HbzD_X299A + beetmover-repackage-km-win64-aarch64-shippable/opt: d3sirq8PSdqQ6CIWGzuH1Q + beetmover-repackage-km-win64-shippable/opt: ZiyTFaqJTTi2ECRk2--xVQ + beetmover-repackage-kn-linux-shippable/opt: Sd42VibjRo-hAg_J8XyOug + beetmover-repackage-kn-linux64-shippable/opt: Xjv9v2d5SO2o7p_NsfdG3w + beetmover-repackage-kn-macosx64-shippable/opt: BTlEDRtQRX2qwPLHRl5Bvw + beetmover-repackage-kn-win32-shippable/opt: BMB3UXduSf2Bq5UYQScx_Q + beetmover-repackage-kn-win64-aarch64-shippable/opt: COnoFIgqQY2To7numDwFRg + beetmover-repackage-kn-win64-shippable/opt: BqkvnegPR-yFaQktXmU0yA + beetmover-repackage-ko-linux-shippable/opt: LInpyeJSRiqTDvrtPwhvng + beetmover-repackage-ko-linux64-shippable/opt: IGm7ZbwVTeWbWMAqmH7Lsw + beetmover-repackage-ko-macosx64-shippable/opt: HTAs67knTxaoxOP7q2C9vw + beetmover-repackage-ko-win32-shippable/opt: OzP4T0_NQPKuIbwnO2jq3Q + beetmover-repackage-ko-win64-aarch64-shippable/opt: eNlGh17SSM-LwMacnW4SFw + beetmover-repackage-ko-win64-shippable/opt: aQlrTeV2QMKoUHq6YWnZkw + beetmover-repackage-lij-linux-shippable/opt: c0J9kSCtQlmmHeCnA-8XPQ + beetmover-repackage-lij-linux64-shippable/opt: IFKUcqoZSCyb3R3_CuIO5w + beetmover-repackage-lij-macosx64-shippable/opt: d85xruB2S_yPcIqU0YvThg + beetmover-repackage-lij-win32-shippable/opt: Jp2v9F6RRve1g2nROtBlDg + beetmover-repackage-lij-win64-aarch64-shippable/opt: TNAoU4NWTN60VFBxvJY5aw + beetmover-repackage-lij-win64-shippable/opt: Q39EgPkyRiuVEjTYBJbIhQ + beetmover-repackage-linux-shippable/opt: eckkRt5HRgOsaw4XqGPExw + beetmover-repackage-linux64-shippable/opt: AUAahsmmQe2Q51HsoOAZIg + beetmover-repackage-lt-linux-shippable/opt: Td-4v6M7QDOTfqTyHVaQAg + beetmover-repackage-lt-linux64-shippable/opt: E7AEjBbZQBiS8tEfpPQY5g + beetmover-repackage-lt-macosx64-shippable/opt: Shg79qFfTVqQMgEg1iCVvA + beetmover-repackage-lt-win32-shippable/opt: c3R60HgAQtmBpGuO12QEEw + beetmover-repackage-lt-win64-aarch64-shippable/opt: AMp-X4DPQTq09O_xe_4F6w + beetmover-repackage-lt-win64-shippable/opt: DghWX0Z-RSurmRgYCUo5Ug + beetmover-repackage-lv-linux-shippable/opt: HNxVIVvZSyu-5T9JNpMPeA + beetmover-repackage-lv-linux64-shippable/opt: X8eqjqGxQNGOKnVQvyV6tA + beetmover-repackage-lv-macosx64-shippable/opt: N6HPHATMSGmE0f8wJyudDA + beetmover-repackage-lv-win32-shippable/opt: OlfnDkjMQC-H_FbPhIadlA + beetmover-repackage-lv-win64-aarch64-shippable/opt: L7Cdqe6ATJuWXu-Z7B_bdA + beetmover-repackage-lv-win64-shippable/opt: X1L6CsLWScK2vehlem6xtw + beetmover-repackage-macosx64-shippable/opt: MItSdqxjR3C5QJOq6xkZEw + beetmover-repackage-mk-linux-shippable/opt: FN-pa5eyQ8iXqQFm8kC6UA + beetmover-repackage-mk-linux64-shippable/opt: B1FPzfqvTM-EwHalNANj0A + beetmover-repackage-mk-macosx64-shippable/opt: NZzVWZCmTEWFENTFqQxnng + beetmover-repackage-mk-win32-shippable/opt: JEpGvCZBSkK10r-DXkR3eA + beetmover-repackage-mk-win64-aarch64-shippable/opt: HKuhhfCVRkm5oXfEFgdeIg + beetmover-repackage-mk-win64-shippable/opt: HvVCy-iSQFyP_tq6lPRKkA + beetmover-repackage-mr-linux-shippable/opt: WtJLTIWeReyv1P2FCzNBXg + beetmover-repackage-mr-linux64-shippable/opt: CzF4xo9dSsKx_YoNprU2pw + beetmover-repackage-mr-macosx64-shippable/opt: L53aLqViQNG0XtNepl0aCQ + beetmover-repackage-mr-win32-shippable/opt: CsaQiRzTTV6zu6jj3OzgMw + beetmover-repackage-mr-win64-aarch64-shippable/opt: VX6prYmKRhmL4BTRp70m5Q + beetmover-repackage-mr-win64-shippable/opt: HbZB_SBYQNy2DouheWB_8Q + beetmover-repackage-ms-linux-shippable/opt: Jobe-gViTaiUEymSU9ifWA + beetmover-repackage-ms-linux64-shippable/opt: RMYa5bFmQg-XQPftUBs9AQ + beetmover-repackage-ms-macosx64-shippable/opt: fvLndXUzQqCg7iWVlkMd0w + beetmover-repackage-ms-win32-shippable/opt: BJuJ1iIDRY2R6K_8hF2sWg + beetmover-repackage-ms-win64-aarch64-shippable/opt: IH0UMoCwQ3OsRIQtJdz90A + beetmover-repackage-ms-win64-shippable/opt: XYL8T9pzRA6zy73uCFiswg + beetmover-repackage-my-linux-shippable/opt: KAp9ZHPvTwWkMmcJN-OeuQ + beetmover-repackage-my-linux64-shippable/opt: ZPLtjgGFTe2BbwbDkBz4eg + beetmover-repackage-my-macosx64-shippable/opt: Huse7fTlRDSH2mQ7HArtgA + beetmover-repackage-my-win32-shippable/opt: Tw_bMv8NR42xfthdPRc3ug + beetmover-repackage-my-win64-aarch64-shippable/opt: WVWfVbwVSkClbrC1YCLJZA + beetmover-repackage-my-win64-shippable/opt: UPDPxjewR4mAKsuvUMmY0Q + beetmover-repackage-nb-NO-linux-shippable/opt: BmdK1hg_RDWxx5fT-4Vzag + beetmover-repackage-nb-NO-linux64-shippable/opt: OE7clDcFR9m6mldZUPWVug + beetmover-repackage-nb-NO-macosx64-shippable/opt: c_F3sdwfRtylCFp01NHHgA + beetmover-repackage-nb-NO-win32-shippable/opt: VXrD-VYnSK6cmAOtfo8VUg + beetmover-repackage-nb-NO-win64-aarch64-shippable/opt: Y6HPAn1gQKqyoHYxf1qjsA + beetmover-repackage-nb-NO-win64-shippable/opt: NEbBbwoFTYmWcqoTJ9ISBg + beetmover-repackage-ne-NP-linux-shippable/opt: XrfAFxBgRK635PpFzIl_Yg + beetmover-repackage-ne-NP-linux64-shippable/opt: Ciz93KwITOqRYNKR8pkTRA + beetmover-repackage-ne-NP-macosx64-shippable/opt: eKdfO0rcQhStiiXEW2ENdA + beetmover-repackage-ne-NP-win32-shippable/opt: Gt8UFwm0R9S_8s6Z7Xx7NA + beetmover-repackage-ne-NP-win64-aarch64-shippable/opt: cqS94KPOR5CnjDC2puFS5g + beetmover-repackage-ne-NP-win64-shippable/opt: El1cjpLhQqyNsvbzKINpvA + beetmover-repackage-nl-linux-shippable/opt: Q4uSFwKVQz6slRXvj0acrA + beetmover-repackage-nl-linux64-shippable/opt: Dy1P6K-gQk6vJlNvcmrWKw + beetmover-repackage-nl-macosx64-shippable/opt: EIET9b-FQaKyayZRyHABqQ + beetmover-repackage-nl-win32-shippable/opt: BxM13hyATmKhhS3rEUDMLw + beetmover-repackage-nl-win64-aarch64-shippable/opt: WWsw8z33T3GVkOmkB17W_Q + beetmover-repackage-nl-win64-shippable/opt: DPxYbNQ_RhKwbXqUF6IDvQ + beetmover-repackage-nn-NO-linux-shippable/opt: Z1o6mRKRTMq-wZdpyfCAlA + beetmover-repackage-nn-NO-linux64-shippable/opt: VObi5ErHRpyVvu6rj3KbmQ + beetmover-repackage-nn-NO-macosx64-shippable/opt: N5WADjinTdSWR7ap4DbKCw + beetmover-repackage-nn-NO-win32-shippable/opt: Gip2_3BATSOohaWjziQwcA + beetmover-repackage-nn-NO-win64-aarch64-shippable/opt: dwShDp7xRWeAL2Yq-CEd7g + beetmover-repackage-nn-NO-win64-shippable/opt: BNZGyc2vS1yLkQzHMeusLA + beetmover-repackage-oc-linux-shippable/opt: V-oxxmRoRoyJIXc-3Uw6rA + beetmover-repackage-oc-linux64-shippable/opt: RSyOODwoTw2rhQvK3tzqsA + beetmover-repackage-oc-macosx64-shippable/opt: WdqXS6aNQbep_HMwQLV9hg + beetmover-repackage-oc-win32-shippable/opt: IA7PteOQQg-_zq0b7WkqyQ + beetmover-repackage-oc-win64-aarch64-shippable/opt: dFiu46EVTV6IGL8cuIlQXQ + beetmover-repackage-oc-win64-shippable/opt: fkGKehTEQmebvInxcFwmfw + beetmover-repackage-pa-IN-linux-shippable/opt: QwGnIJseRs26MDrjp-NhmQ + beetmover-repackage-pa-IN-linux64-shippable/opt: cplmJnL9QK2PRX2Nw-tgQw + beetmover-repackage-pa-IN-macosx64-shippable/opt: GYI4B2oWS8CN8LyrBKnIdA + beetmover-repackage-pa-IN-win32-shippable/opt: Yr-l8NINT6y9LpNV6M_YCw + beetmover-repackage-pa-IN-win64-aarch64-shippable/opt: TVtsgD12Q2qvGsTOFddHdw + beetmover-repackage-pa-IN-win64-shippable/opt: V9pHXCogT7S1MMQ9WEQW3w + beetmover-repackage-pl-linux-shippable/opt: dT1PMP9uTTaCRvoA8ABsDQ + beetmover-repackage-pl-linux64-shippable/opt: ftN7ZIlGTimDj-L7930y4A + beetmover-repackage-pl-macosx64-shippable/opt: KKtDRqqyTpCdQUb86g0lpQ + beetmover-repackage-pl-win32-shippable/opt: WsZV_yGoS7-rlF4JEpUUmQ + beetmover-repackage-pl-win64-aarch64-shippable/opt: dkJhK3hFSMOAOoTh2Lv7Wg + beetmover-repackage-pl-win64-shippable/opt: Bpd1knK2RVaHinVuVyASKA + beetmover-repackage-pt-BR-linux-shippable/opt: UElY7GoETj260YJO95yLCg + beetmover-repackage-pt-BR-linux64-shippable/opt: DInpcd3GRoSogzRqIHBqfQ + beetmover-repackage-pt-BR-macosx64-shippable/opt: NCBRRICGTN6TMe3KJKCieA + beetmover-repackage-pt-BR-win32-shippable/opt: Bfjrf7tqQvWVTKHGFk2Y_g + beetmover-repackage-pt-BR-win64-aarch64-shippable/opt: dzwf9O05TRG3AQw9eLdi5A + beetmover-repackage-pt-BR-win64-shippable/opt: cZ450sDBTxeY_Z-yf6XcuA + beetmover-repackage-pt-PT-linux-shippable/opt: SPgFGKW3Sy-0afqJClwzsA + beetmover-repackage-pt-PT-linux64-shippable/opt: QbPUtQufSOGJZ_L07Y3faw + beetmover-repackage-pt-PT-macosx64-shippable/opt: XygQfMj7TamAESq0rOxbIA + beetmover-repackage-pt-PT-win32-shippable/opt: EnufjoBcQRWwB93absQ4RQ + beetmover-repackage-pt-PT-win64-aarch64-shippable/opt: ENjIUNB7R8S41fB-n0uAYA + beetmover-repackage-pt-PT-win64-shippable/opt: N_ed5AN7SWGL0WxljM-VvQ + beetmover-repackage-rm-linux-shippable/opt: Sk4y5tZWSSyHaz5J5buUMA + beetmover-repackage-rm-linux64-shippable/opt: Dk0GbsG_Q96-MwC2MNCJiA + beetmover-repackage-rm-macosx64-shippable/opt: Q4NuZf_6QP2oF5jMkGWfUA + beetmover-repackage-rm-win32-shippable/opt: HurFLTekTAOjlLRDqoBnbA + beetmover-repackage-rm-win64-aarch64-shippable/opt: MvkKyEh3TqqwAG9uQI5knw + beetmover-repackage-rm-win64-shippable/opt: Mt5rILTpREWl23PMYfOFUg + beetmover-repackage-ro-linux-shippable/opt: Aszb_ZmuQDKj7UvPsewswg + beetmover-repackage-ro-linux64-shippable/opt: ZeJjDrUPQMaFTkFolKqJ7A + beetmover-repackage-ro-macosx64-shippable/opt: IhSd-q5qRnq9-kizIUAeJw + beetmover-repackage-ro-win32-shippable/opt: V7xh-Qs9QyWW0xf1zwSGjA + beetmover-repackage-ro-win64-aarch64-shippable/opt: bwvqFjGMS72SQW_G2RExKQ + beetmover-repackage-ro-win64-shippable/opt: YeD9gaUdQ3aSRaOQYIdQaA + beetmover-repackage-ru-linux-shippable/opt: DFiyQfOyT6e3GxQhcCysTg + beetmover-repackage-ru-linux64-shippable/opt: cQYAi9XXSmWPxkmY8hytug + beetmover-repackage-ru-macosx64-shippable/opt: ee0PkaDTRx6URR_XgjqfAQ + beetmover-repackage-ru-win32-shippable/opt: QrzemS7BS_-MpfqsE3z8kA + beetmover-repackage-ru-win64-aarch64-shippable/opt: Rt1j9O0rQGqmzi0fV31Oig + beetmover-repackage-ru-win64-shippable/opt: GlPqvwa1SQGhAM_4ymEAkg + beetmover-repackage-sc-linux-shippable/opt: J5f9z2fgTZy-Pfq9kQyLMw + beetmover-repackage-sc-linux64-shippable/opt: c7sRM7nURA-qflnaJpBiAw + beetmover-repackage-sc-macosx64-shippable/opt: RhDDHosiQCGhH-MhdyqFlw + beetmover-repackage-sc-win32-shippable/opt: akX3eox0Q_KBvRoKCaXLXw + beetmover-repackage-sc-win64-aarch64-shippable/opt: FVbwMMfPQJyI5rK5fKpsjA + beetmover-repackage-sc-win64-shippable/opt: JLb8NZCLSK-KHLlaEHMu0A + beetmover-repackage-sco-linux-shippable/opt: EJIzzXrCQiWU3dQdAC_Egw + beetmover-repackage-sco-linux64-shippable/opt: QIevd5TyQ1S5pjGduZBE2w + beetmover-repackage-sco-macosx64-shippable/opt: S7ESqJzXSieNPXGMkRD7Mg + beetmover-repackage-sco-win32-shippable/opt: UkwXwgmiQ6C6AHbHRGQRTg + beetmover-repackage-sco-win64-aarch64-shippable/opt: RP0V17pET2mWugE9y-Bo2w + beetmover-repackage-sco-win64-shippable/opt: UjGg-sjASYC5gKP4xCAzGA + beetmover-repackage-si-linux-shippable/opt: KrSG6vfqQoe2KXFxmmr2Hg + beetmover-repackage-si-linux64-shippable/opt: DhLI5tgcRzCqH4Fwdjv00w + beetmover-repackage-si-macosx64-shippable/opt: N2ORmpruTk6Cxabi_5QVTw + beetmover-repackage-si-win32-shippable/opt: FdcmBE_9SWGeR0wMMGMzIw + beetmover-repackage-si-win64-aarch64-shippable/opt: Rgs4XMtgRo2EYKEb_t93pA + beetmover-repackage-si-win64-shippable/opt: PSIN58loSm65NG3D3AbdHw + beetmover-repackage-sk-linux-shippable/opt: U0jp9_iGSD-42r-6wo9srw + beetmover-repackage-sk-linux64-shippable/opt: apLYbhjvRxu3hZofZhR88Q + beetmover-repackage-sk-macosx64-shippable/opt: B3Z0KQOERCWo1gu23yWBMA + beetmover-repackage-sk-win32-shippable/opt: ZQGyvAoTS7Srag1kqwOnXA + beetmover-repackage-sk-win64-aarch64-shippable/opt: RZWq8LnXQHGXZf6u64BJFA + beetmover-repackage-sk-win64-shippable/opt: E7aRc6QQTZmTyRLFyKwpXg + beetmover-repackage-sl-linux-shippable/opt: QHqZqYAoSZq6-ZDU0TXAmg + beetmover-repackage-sl-linux64-shippable/opt: HpvlLUyARe2LeCWh0V9_Yw + beetmover-repackage-sl-macosx64-shippable/opt: aDo0SAvpQEKwal6kjR1SHg + beetmover-repackage-sl-win32-shippable/opt: ZBobwX2aQCiC2lz3kpuMWA + beetmover-repackage-sl-win64-aarch64-shippable/opt: AFgs8Ff3TvuSwX6cKZK50A + beetmover-repackage-sl-win64-shippable/opt: JXmhQF0SQNGv0V0UCJNgKQ + beetmover-repackage-son-linux-shippable/opt: clD3sITcQwOLIEpE-az69g + beetmover-repackage-son-linux64-shippable/opt: T1e2ouNPQCSpZsyIt08vHw + beetmover-repackage-son-macosx64-shippable/opt: RpPn6jtvSpyTjrjNoME4hQ + beetmover-repackage-son-win32-shippable/opt: czvg1xwuT4u02PKYK4_d3Q + beetmover-repackage-son-win64-aarch64-shippable/opt: VmvTfQdQRS6Dvgd0kMahoA + beetmover-repackage-son-win64-shippable/opt: e3M1BKOqQsuRNIf2-Iekug + beetmover-repackage-sq-linux-shippable/opt: EzOOvT0dQXeF7li3wn3c_w + beetmover-repackage-sq-linux64-shippable/opt: T0RY_-liTDuPK5j-Os65Sw + beetmover-repackage-sq-macosx64-shippable/opt: L7W_s2b7Sturz5hSTEs0-w + beetmover-repackage-sq-win32-shippable/opt: YK5V1hYES8-v1hy2j6xHPQ + beetmover-repackage-sq-win64-aarch64-shippable/opt: O5j_10OlQACZ68p_U42tiw + beetmover-repackage-sq-win64-shippable/opt: E_Dv8Yv7SUCaJ6aWBI7kfg + beetmover-repackage-sr-linux-shippable/opt: E38RZHYSSluWWqWAoLb5gA + beetmover-repackage-sr-linux64-shippable/opt: R4ix6Si3QhaTHmxnzRGm1w + beetmover-repackage-sr-macosx64-shippable/opt: KxgxicnrQrK217c_tBn_ng + beetmover-repackage-sr-win32-shippable/opt: b-2emil0RwiyEzWAcudYIw + beetmover-repackage-sr-win64-aarch64-shippable/opt: NeLxHKRpQKKGhrbKhI1sBQ + beetmover-repackage-sr-win64-shippable/opt: QZrwzCq8ST2XtB2-SvccFQ + beetmover-repackage-sv-SE-linux-shippable/opt: fTwr5IGOSry0vdKpzFy-Ew + beetmover-repackage-sv-SE-linux64-shippable/opt: DnRZof-iTuekSJl8A6jXNQ + beetmover-repackage-sv-SE-macosx64-shippable/opt: TX2dEUAPS3utSajxaOfmPg + beetmover-repackage-sv-SE-win32-shippable/opt: fGFTWGjwQVq4Ij1qRL_arw + beetmover-repackage-sv-SE-win64-aarch64-shippable/opt: IkDn9zzJQKiiklSkVu-wpQ + beetmover-repackage-sv-SE-win64-shippable/opt: IXhov_kWQHmO4CZZgrboew + beetmover-repackage-szl-linux-shippable/opt: Sod-f8alSMevbixY2SkPcQ + beetmover-repackage-szl-linux64-shippable/opt: c_qRg1s0RQqnm-4KMVKV2g + beetmover-repackage-szl-macosx64-shippable/opt: Hj5Yv9LCT-WNWT3RJIzVEQ + beetmover-repackage-szl-win32-shippable/opt: cr8BM4w_SquoINeu0Xf_Yg + beetmover-repackage-szl-win64-aarch64-shippable/opt: K2trq_GKRJ2DzjNcYU1WHg + beetmover-repackage-szl-win64-shippable/opt: aEeeeyIMQ-K5whroolX7eQ + beetmover-repackage-ta-linux-shippable/opt: bKg2VAgYRRKNqARnn9l8JQ + beetmover-repackage-ta-linux64-shippable/opt: GwrBLJJlTrqgy6p__FEc2Q + beetmover-repackage-ta-macosx64-shippable/opt: d7UU0QrtSxeJDDxbgTVH0Q + beetmover-repackage-ta-win32-shippable/opt: AKoRoP5hQJyr2eX2nvxn6w + beetmover-repackage-ta-win64-aarch64-shippable/opt: NSnKqFLvRUO3tNaXMFBpAw + beetmover-repackage-ta-win64-shippable/opt: BBbS11DDSYqxGs0JDxVqOg + beetmover-repackage-te-linux-shippable/opt: Z8-W_nVeTVuwp38uiLeb7A + beetmover-repackage-te-linux64-shippable/opt: G-YOS_qbR-qcAGzDY4PnTw + beetmover-repackage-te-macosx64-shippable/opt: FJzwv1BUTz2PUI8rqYXN8w + beetmover-repackage-te-win32-shippable/opt: BnqNZZHyToGAP0KVQfcR1w + beetmover-repackage-te-win64-aarch64-shippable/opt: JI2Yve1gTT-j4GDEXMyWSA + beetmover-repackage-te-win64-shippable/opt: RVfxfN17SbespFQqd7whwA + beetmover-repackage-tg-linux-shippable/opt: EP40XjIFTBepiuaLiqRNdA + beetmover-repackage-tg-linux64-shippable/opt: FHG6M8SQQmWSDFkZhVVGcA + beetmover-repackage-tg-macosx64-shippable/opt: eJDmatIMQ9aBe7qf_6x2gA + beetmover-repackage-tg-win32-shippable/opt: YIQM_ohhRtyi4gkU7JJzvg + beetmover-repackage-tg-win64-aarch64-shippable/opt: C52bYiKUR8e3ga44TuqCMw + beetmover-repackage-tg-win64-shippable/opt: KZYNobbVQQG3iipiANZPvQ + beetmover-repackage-th-linux-shippable/opt: YelglvmTRlGQ4UE9JT7LIg + beetmover-repackage-th-linux64-shippable/opt: IXAZnsL-Qcmdwx1ybdMhaQ + beetmover-repackage-th-macosx64-shippable/opt: BUpIUNQIQkKgfLwyWjy5BQ + beetmover-repackage-th-win32-shippable/opt: CsrCT6ugSOiQT-imDKnm3A + beetmover-repackage-th-win64-aarch64-shippable/opt: bMS3yMd3RPmMNoCok0PXWQ + beetmover-repackage-th-win64-shippable/opt: Ad2R_QPyQGK672CP102Fog + beetmover-repackage-tl-linux-shippable/opt: arvmij-LSWK0BgQ7Xqw9tw + beetmover-repackage-tl-linux64-shippable/opt: KLKRsXcaQDSCeBIomWmYFg + beetmover-repackage-tl-macosx64-shippable/opt: IDelwCK9Q32rGvmpPrnJ2Q + beetmover-repackage-tl-win32-shippable/opt: O9z7FEZXRcqhUyuicoTL8A + beetmover-repackage-tl-win64-aarch64-shippable/opt: CRtsVv9JRWGsBXlKqFNc9g + beetmover-repackage-tl-win64-shippable/opt: Z4-8qlr9RXuNdaw3kdi63A + beetmover-repackage-tr-linux-shippable/opt: dvHtG2rCQWie0eiBq4fm-Q + beetmover-repackage-tr-linux64-shippable/opt: eRBNXjjnRya_W-y_OrNJnw + beetmover-repackage-tr-macosx64-shippable/opt: cPnOUaCPR8-b2NoOtVXUGw + beetmover-repackage-tr-win32-shippable/opt: KCeXJq_KTMCV3cFl5Ee1RQ + beetmover-repackage-tr-win64-aarch64-shippable/opt: PrOM19NzQW2eN9oAurDpxQ + beetmover-repackage-tr-win64-shippable/opt: TznMe6TDRle3P1XVxx4Sfg + beetmover-repackage-trs-linux-shippable/opt: H5UOnn1CRiyOk0khyiKOvg + beetmover-repackage-trs-linux64-shippable/opt: NsBUQcz0RDqlNvrNCCBv1Q + beetmover-repackage-trs-macosx64-shippable/opt: WBjvCzbkTtCqmkgrsFdC7A + beetmover-repackage-trs-win32-shippable/opt: JNqeJmLvRVe8wyjbbFR9jA + beetmover-repackage-trs-win64-aarch64-shippable/opt: cy8g2KXTRUOa-ZjgtcAkVg + beetmover-repackage-trs-win64-shippable/opt: LbquoXOFSlW6XODqQu5XTQ + beetmover-repackage-uk-linux-shippable/opt: GVDnTtYLRdq8GhSoyuECBw + beetmover-repackage-uk-linux64-shippable/opt: Q6NelpTETYiRgjxfgXSlFA + beetmover-repackage-uk-macosx64-shippable/opt: cYF4p9LoTtqtTsxTdpz5tQ + beetmover-repackage-uk-win32-shippable/opt: Nq2aQ__cRiOnhLnm7cZBBA + beetmover-repackage-uk-win64-aarch64-shippable/opt: cpVwYg8kQRadN4xut8dIHw + beetmover-repackage-uk-win64-shippable/opt: VXkzfB1mQtyytZCljQyAeQ + beetmover-repackage-ur-linux-shippable/opt: J8yKGVdrQiqa4gYhomC_dg + beetmover-repackage-ur-linux64-shippable/opt: JLqiQVUBQ0-rgf-KrBtTUA + beetmover-repackage-ur-macosx64-shippable/opt: F0MPwsMmTd28cMKSVfMexg + beetmover-repackage-ur-win32-shippable/opt: QJ9OmC8CTS6E-tbxMZB1RQ + beetmover-repackage-ur-win64-aarch64-shippable/opt: WhEoUgzVQsGH9qnLqwemLw + beetmover-repackage-ur-win64-shippable/opt: adeHANxPS8G23QVyF_nKhw + beetmover-repackage-uz-linux-shippable/opt: axfHOyGmSFuS6joWDxOnHg + beetmover-repackage-uz-linux64-shippable/opt: Ih4qqCGvQXyfot5G8CJiHA + beetmover-repackage-uz-macosx64-shippable/opt: VGOD9Eb7RSWm6hSZ-C1f-w + beetmover-repackage-uz-win32-shippable/opt: Ea4IeG4zSxiP1MWiwcs-dg + beetmover-repackage-uz-win64-aarch64-shippable/opt: Fv-h1qy_TzOdRkJF2YWVfA + beetmover-repackage-uz-win64-shippable/opt: Pidrwj_CSeW5-Mutv7OxCQ + beetmover-repackage-vi-linux-shippable/opt: I0kybZ7iSZ6UcBYIaUwyuA + beetmover-repackage-vi-linux64-shippable/opt: W24X7BeZQO274FibUB28yA + beetmover-repackage-vi-macosx64-shippable/opt: LoczeEbgT4mcmG0_alVO_g + beetmover-repackage-vi-win32-shippable/opt: Tmxuz3kBSXm59P4eWzNPYw + beetmover-repackage-vi-win64-aarch64-shippable/opt: eD0OyNhYTBmNtp-IYcTTtA + beetmover-repackage-vi-win64-shippable/opt: O43KSqHKQaC5cs6o2E-I1A + beetmover-repackage-win32-shippable/opt: D3O3gO6eRoymD9KMiofbyw + beetmover-repackage-win64-aarch64-shippable/opt: ckro6ZjaQT-ZmV6WG_QCEA + beetmover-repackage-win64-shippable/opt: bSKUW9-gT9a59GMSrR2vCg + beetmover-repackage-xh-linux-shippable/opt: Y8kAPh04QxaCbJBSqLjVBg + beetmover-repackage-xh-linux64-shippable/opt: R80e0qeRQ0K9eINzEnt6sg + beetmover-repackage-xh-macosx64-shippable/opt: Cp7uIjvnSxKItw4TRh7pqg + beetmover-repackage-xh-win32-shippable/opt: W2uekxzuRC-K21McWJaLmQ + beetmover-repackage-xh-win64-aarch64-shippable/opt: bgJwd-puQdiwL6q_yMXRKA + beetmover-repackage-xh-win64-shippable/opt: a02rijw1TVKAArANnJDH_A + beetmover-repackage-zh-CN-linux-shippable/opt: EsanQSTrTXCCvcY7wtEPEA + beetmover-repackage-zh-CN-linux64-shippable/opt: RaBXXELYSw2BpLyh5lQ3GA + beetmover-repackage-zh-CN-macosx64-shippable/opt: CaZIFoWlSyqCkm1sT4OCFA + beetmover-repackage-zh-CN-win32-shippable/opt: FnQayEjwTyq00zodr3XzJw + beetmover-repackage-zh-CN-win64-aarch64-shippable/opt: MX4jSpnDQ8OUlrPbCLTDuQ + beetmover-repackage-zh-CN-win64-shippable/opt: an1xy30yQ5mQSd4K_-5fvw + beetmover-repackage-zh-TW-linux-shippable/opt: HS0hS6-LR7ihLDBR44nAtg + beetmover-repackage-zh-TW-linux64-shippable/opt: MyjYDqMHSw2vGJ8_SCehqw + beetmover-repackage-zh-TW-macosx64-shippable/opt: U9PJ_m90RoimtOUUbrCRNg + beetmover-repackage-zh-TW-win32-shippable/opt: T-UFfrkzQtuwlDrdPoFQ_Q + beetmover-repackage-zh-TW-win64-aarch64-shippable/opt: fi3YPHGbRz-He45evjswhw + beetmover-repackage-zh-TW-win64-shippable/opt: SyrUc_vFSkqB4XMb5WmS6A + beetmover-source-icecat-source/opt: BMVRNc-NTaeHQ7zIzHne3w + build-linux-asan-fuzzing/opt: SeuwhSbtTVCrQgzAUWAxeA + build-linux-fuzzing/debug: NexysKhtQQCrWNJ7NPYnjQ + build-linux-shippable/opt: D5LaQhbqQcCVikQJvop5sg + build-linux-shippable/opt-upload-symbols: GEs73p7NQhuYlQG9QroW1g + build-linux/debug: KCU21ohUTtO6TOwymmcI0Q + build-linux/debug-upload-symbols: QGF_WOvNTuqMaXPen3shpg + build-linux64-asan-fuzzing-nyx/opt: EWUgakWjTZulhNrXJlO03A + build-linux64-asan-fuzzing/noopt: COuaEbXOTRyy15UGVLt19Q + build-linux64-asan-fuzzing/opt: PHPoDShZRvyIg1TmWFidDw + build-linux64-asan/debug: U0r--LG6SSqPZUXUallxwA + build-linux64-asan/opt: CXWqLgyCREqbEdPAHQibeg + build-linux64-base-toolchains-clang/debug: L4Ksyu8PRsakrzhLyuKLow + build-linux64-base-toolchains/debug: ZGjr_rWfQ8KGujnGH94lpg + build-linux64-fuzzing-noopt/debug: fbp_qSoYRya4nSCPqgZo8w + build-linux64-fuzzing/debug: fIQ-fU7jQLWIYAoE4pp5tA + build-linux64-shippable/opt: HMQpLM5wTDCiCHyCWp_CQA + build-linux64-shippable/opt-upload-symbols: Ag5sW7S9SYO2sEzUYR85iA + build-linux64-tsan-fuzzing/opt: dc5wE7EyRPWkxq4VPanoeQ + build-linux64-tsan/opt: HHGhIcK0SSKPsa8b6npohA + build-linux64/debug: HSSnCK9kTYasd28o2obejA + build-linux64/debug-upload-symbols: KTHnfB2tSWyGoE-Zj_0b-w + build-mac-notarization-macosx64-shippable/opt: ZTRWjld_TkiYm4GbPWJ1Qw + build-mac-signing-macosx64-shippable/opt: aHlzsNehSZSOuLwF6J_Elg + build-mac-signing-macosx64/debug: B9JBXRcHQOmyKkzt4iHwcQ + build-macosx64-aarch64-asan-fuzzing/opt: WKDzjKsFS_uPCUh45Cx8JQ + build-macosx64-aarch64-fuzzing/debug: Mwj6V5-mRIy0bIAPhzME8w + build-macosx64-aarch64-fuzzing/debug-upload-symbols: bq8BWIsURRuNVY0SGT1XJw + build-macosx64-aarch64-shippable/opt: Grf5sZpKQzmThO5rx8VDRA + build-macosx64-aarch64-shippable/opt-upload-symbols: EmzZWYRzQdOyTYzJecymrw + build-macosx64-asan-fuzzing/opt: beeHuCvkTSy9plYSILMTsw + build-macosx64-fuzzing/debug: ch8hlQVpS9OiSNhIcd07zQ + build-macosx64-fuzzing/debug-upload-symbols: LEVQlwk1RTKR-HqLFAk5eA + build-macosx64-shippable/opt: DfriLGXzRwWnrqK8KV1cpA + build-macosx64-x64-shippable/opt: KGtOxyOcT6aKfN1PZgRX3A + build-macosx64-x64-shippable/opt-upload-symbols: ZqvJStsQQKmCBVo-j_fejw + build-macosx64/debug: OFr87C6cRO66319RiR3cQA + build-macosx64/debug-upload-symbols: MDpfTL-RTKC_jXLZ2h_eDg + build-signing-linux-shippable/opt: epak00_zT_iLFWhzJKGJig + build-signing-linux64-shippable/opt: UByCJoK9RXGPkftfuVkpjQ + build-signing-win32-shippable/opt: K_IXw6tTQMikrC8iusAxdg + build-signing-win32/debug: SWw28V7OTy6I0gz8IZZfLQ + build-signing-win64-aarch64-shippable/opt: NImKMeUkSvuL8ckiZBTTbw + build-signing-win64-shippable/opt: HGz3BKFYTwerrjfC3cvNSA + build-signing-win64/debug: Vl66ngaaTcGDtD5tBizQ-A + build-win32-mingwclang/debug: eAE2g4Q0SvCk_6TffMdL-g + build-win32-mingwclang/opt: KUvC4ElNRgOSyaw2Hphe4w + build-win32-shippable/opt: K8_SPszNTkqFdNrUomQ4Hg + build-win32-shippable/opt-upload-symbols: EAZupIyeS1-TPAXA_GEarA + build-win32/debug: fmb4BUX7Q-uOPfcs0Bvtzg + build-win32/debug-upload-symbols: KGVeHthkQ6qgQczQijtCTg + build-win32/opt: IwleSbpqTfSuXVDiMjlw3w + build-win64-aarch64-eme/opt: GrZRv7RpSuefyMsq2vV_8w + build-win64-aarch64-shippable-no-eme/opt: XW4z-mV2SsGFQM2B4vzQgA + build-win64-aarch64-shippable-no-eme/opt-upload-symbols: d_I1eEEoTRqgIPeZI21J3g + build-win64-aarch64-shippable/opt: WfdsuKDlSh-h4nF1fhbtSw + build-win64-aarch64-shippable/opt-upload-symbols: aTvqQoCwRNypEkfF7nP5Zg + build-win64-aarch64/debug: ZF9SlL-BTsekGe6u80Pedg + build-win64-aarch64/debug-upload-symbols: PlXMpTs5R9mmLs1UsLquCw + build-win64-aarch64/opt: D_VW5anrT06uAMQIOg-RZg + build-win64-asan-fuzzing/opt: OoBi3ZitRxOTJbGvmw7OgA + build-win64-asan/debug: fgqF7KrZQz2i1CWkjSXfuw + build-win64-asan/opt: UWVbyCf7SGi8IRSfELmbkQ + build-win64-mingwclang/debug: XoY4q91yQOSKXDIGYW6W-A + build-win64-mingwclang/opt: Oe-9jPeYTLmGUqKl2VgQ2Q + build-win64-shippable/opt: SBZpqb_aTfWPfSRsQezD0g + build-win64-shippable/opt-upload-symbols: D1snplLFQYGrPdc6DGDXtg + build-win64/debug: JNYS1Lz6TXWdJJnGkSbgBA + build-win64/debug-upload-symbols: cbZkIFHRRLOEhwVA1BxKwg + diff-artifact-win64-aarch64-eme-validation: ADD0uXNJQ_iKnB7iC6_DOg + docker-image-android-build: LpxTeGk_QsaRdwAc4NqXbg + docker-image-condprof: RyVVLNIzSyWuqdswYDFa6g + docker-image-custom-car-linux: Svfv8eaBQRq_5hkPjcEUmw + docker-image-custom-v8: YsU8AkNkTYWs-gcxQYwU7g + docker-image-deb11-toolchain-build: TpetzDY_QHiUkG0FDcXrUw + docker-image-debian11-amd64-build: ebGkHWgVQxS-kF2GCuGPIQ + docker-image-debian11-base: IbXTakKdQfqi7jsTKdKo4g + docker-image-debian11-packages: NbtCjy4LRwip7FFEpZeIdA + docker-image-debian11-raw: Y-__5kGfTJam6qcyFXgk0w + docker-image-debian11-repackage: MBniWVI7QjSJt42qB-HWyA + docker-image-debian8-i386-packages: NEIw7A0qR8SJvv8WvdOqIA + docker-image-debian8-i386-raw: T8qZfqSTSNa4KPfp1j75Ww + docker-image-debian8-packages: IVnmyaxbToSvbgn8QmMFUg + docker-image-debian8-raw: TNiaNLncSH-2A0g6RKTLEg + docker-image-decision: JYoOLOrEQMCDeQ6rLo2JYw + docker-image-diffoscope: SKBazspeSX2z9a8s_y50ig + docker-image-fetch: ZJPm519oQyCmgteY6cOQ9Q + docker-image-icecat-flatpak: OM774m1cT0Wqy7Q87lqHLA + docker-image-icecat-snap: YmvNSMSfQWW3YG6x_Fcdbg + docker-image-funsize-update-generator: H14MbupWQoyjX2KXVFC7Cg + docker-image-gdb-test: WdZGFUBiTzyn5er0FJQUvw + docker-image-image_builder: MWRymupRSheUkuqIQwF8TA + docker-image-index-task: VIneOK4VRXGrcEmrEpleSA + docker-image-lint: Eeq8v2PJSbSivC61RBNaKg + docker-image-partner-repack: dWuSsRGgQASrrUUuy6SECA + docker-image-periodic-updates: XHugZ4MORyS_tZ2JuR_57A + docker-image-push-to-try: RjfJZLsfQJC0N6s9COPwTg + docker-image-sentry: UNHHsSOiTPyh2UIvfYyKnQ + docker-image-static-analysis-build: PnI26NxSQAOmG7NEROZzJw + docker-image-system-symbols-linux-scraper: HOupv5yoTKmMJqeMW31aFw + docker-image-system-symbols-mac: LnVHNZkdR_CAWouA141PwA + docker-image-system-symbols-win: NhiFCR2-QWqq1IfQHe_gRg + docker-image-ubuntu1804-base: KATF20G5SLOxKZ-9-Er0wA + docker-image-ubuntu1804-i386-packages: Dakk3qN1Q4GjXOsPUhk1nA + docker-image-ubuntu1804-i386-raw: XA_oUxFXRTSQ1EvmDGFkSw + docker-image-ubuntu1804-packages: Jr0fxIJnSmu3ZaRTz9oF7w + docker-image-ubuntu1804-raw: Fyx2nDcYTg2M231ZcL03UQ + docker-image-ubuntu1804-test: SfINLyQOTquveJV9O7YKDQ + docker-image-ubuntu1804-test-base: V0wWtDPIT927FniwmWVdfw + docker-image-ubuntu2004-base: NFe_iEGoSCS2F_LbYKvdNA + docker-image-ubuntu2004-packages: alSLN0VkRFSFnwf4qAvkig + docker-image-ubuntu2004-raw: Hacmx9CIQZq9wTR_0k7JOg + docker-image-update-verify: BCpoSWIqRe6CWV4KQkaSxA + docker-image-updatebot: eoJoqnQMQJi8as-x6JB1fQ + docker-image-valgrind-build: EQ69ibXNR3eZC7zvuu2fFQ + docker-image-webrender: H73T2utFRPKNCJYQKLoyqg + fetch-afl-2.5: dDLfrg52RNq82L-R7gh7UQ + fetch-android-ndk-rs: RlrZuvBETXW70s2gU4OHQQ + fetch-binutils-2.31.1: VuM4lv42T129BRsNoLlxSQ + fetch-binutils-2.36.1: ByA_wQrLSRecv9wsNxNvKg + fetch-bomutils: ThI-yuH7Sbai-ykwH000SQ + fetch-cargo-vet: f129L9oaTnmolGvke4dU2g + fetch-cbindgen-0.24.3: HpSr2rYxQTOSfeF5Yk5wRg + fetch-cctools-port: fH5bHUvMSEOKqRgcuC8MMA + fetch-clang-14: UCTFRtW9RJGjJD26W8NLQw + fetch-clang-16: PkJC2FcORo2by0TFEbdKiw + fetch-clang-7.0: IqMLKeAJR5eS8CtSg62Bfw + fetch-cmake: EDz-bhWqRai0Ke2oG3OwmQ + fetch-cpython-3.7.15: DYjrGxXVTXWnZEPx8P8B_Q + fetch-cpython-3.8.10: frS4H2j6S6-BjUeHrWPKQw + fetch-cpython-3.8.10.exe: CTbe-k2SSZeCWMk-o3Hrbg + fetch-dump-syms: cSP5DD9WS2u6d0urMVko6g + fetch-fix-stacks: K0lhfcfhQgKSW1XqDcoqAg + fetch-fxc2: Og99vG8zSvqATrJ475SyIg + fetch-gcc-8.5.0: MN_MWSxZT0CDzAsge_M-xA + fetch-gcc-9.5.0: MV71AtSJRZGVpPx_Wn3CpQ + fetch-gmp-6.1.0: HVLmHPdESnecmWMfzpngVA + fetch-gn: BtZfqBlOR0an-X2-CDtlzQ + fetch-gnumake: EnFlPtwZTg6KTpCnizAK-A + fetch-hfsplus-tools: d48tzJY1SOqF532M5poVJA + fetch-isl-0.16.1: QjbiBOZwTq-Ixs-5ZElX7w + fetch-ldid: KcCRwrZiQwO-Hv2JObw2mg + fetch-libdmg-hfsplus: PuW3Yc2_RcaM4JyinWk-kQ + fetch-libtapi: JhTPdkvRS9i7DIFH0Z_HtQ + fetch-llvm-mingw: MrfJe8U6Ta6KB6mvahuK5Q + fetch-makecab: USA4T1YSQjKc_uJCFwLTPQ + fetch-mingw-w64: Zx9szLuJTN-uVYpKEMIR7g + fetch-mpc-1.0.3: QNa4xolWSsKEhs53fma5Dw + fetch-mpfr-3.1.4: HtQWDve6SPy5Q-zaQaK0eA + fetch-msix-packaging: eKeNCZYpRP-e4PC0jmTrUw + fetch-nasm-2.14.02: f588w5qrSwS7nrTxrGdCqg + fetch-nasm-2.15.05: GKANxKq6S5qm93A_uHDu4g + fetch-ninja: MPXdEaLsSSmjh2uFjXSIdw + fetch-nodejs-12-linux64: WkFwb3-bTfK3NE2h_GefgQ + fetch-nodejs-12-macosx64: fKyyoKN3RlS9lmLaggLMNA + fetch-nodejs-12-win32: VEa4D1NMSk2O0JhH4n5pjA + fetch-nodejs-12-win64: ZR9yNbf7S-SvF1814cGXqA + fetch-nodejs-16-linux64: akIE5r6dQQWn-ovFx8JMtQ + fetch-nodejs-16-macosx64: SxnrHF9uQvi3oT7Us1N0tg + fetch-nodejs-16-macosx64-arm64: R1GrkKvuReCFhYgtZpTASg + fetch-nodejs-16-win32: GYHloKAQT_WBjXiDFL_3Qg + fetch-nodejs-16-win64: LJzydlw3Qg-9qJ1pruka1A + fetch-nsis-3.07: LiDuUpM_TguSosRvce61FQ + fetch-nsis-3.07-win: N1nR7Q9NTG659jIcOuDAXA + fetch-pkgconf: M-l_vjyVSpy4A3c4StbIQw + fetch-rust-1.69.0: A9sE0vehQyWxlle7pSB8Ig + fetch-rust-minidump: D6ce6KWARx2WoJ-qYOyHiQ + fetch-rust-size: Gp6GAye6Q2OjiyjZzY-dYg + fetch-sccache: aSQbFP5dSm2ilnm7KNNCjQ + fetch-upx-3.95-win: eHqPJkDcTwaBJ33C66L88g + fetch-wasi-sdk: XaseNINmTImQFMWk2yWDDQ + fetch-winchecksec: Lj4bDparQFKNB0NVnq_vZg + fetch-wine: PfhSZZF2Tsue4lqnzaVt9Q + fetch-wix-3.14.0: fQbbtuqtREi9d_Fr7jUbpA + fetch-xar: cx8fg6g_TLCyb3haAHVW4Q + fetch-zlib-1.2.13: eL_f1GRaQvqRiGyafHGZrg + icecat-push-to-release: a0wve67TSYCmtfTgV8LpRQ + fuzzing-python: PuRefW2zSiOkr1HoWZfXGQ + generate-profile-linux-shippable/opt: FwdlHX-VSiqJLwjslx_QdA + generate-profile-linux64-shippable/opt: OEXhs0YzS5yoPKUkuARNqA + generate-profile-macosx64-shippable/opt: XSd9RDNnTgmLna4xrhhSrA + generate-profile-win32-shippable/opt: JOofZe-pS6OwzHd86aTzEA + generate-profile-win64-shippable/opt: PkpZX47oSWW8eBQWHf-izQ + hazard-linux64-haz/debug: U5_icpIBRbasgPhPRnNzwQ + instrumented-build-linux-shippable/opt: eiVB-QhfTHmI0jZt5bkbJw + instrumented-build-linux64-shippable/opt: JtBaU1jKRvSDSArpwkv-Xw + instrumented-build-macosx64-shippable/opt: XgrWMJyvReCdm1uKC0crZw + instrumented-build-win32-shippable/opt: GcIGrHqTT8evRAtFXmO8eQ + instrumented-build-win64-shippable/opt: H3DSCOzERu2TB87vQmk-LQ + mar-signing-l10n-ach-linux-shippable/opt: N2tvo_SkQ_ijBR_pB6uB1Q + mar-signing-l10n-ach-linux64-shippable/opt: atehgYcVS_SwT-pMxL4cZg + mar-signing-l10n-ach-macosx64-shippable/opt: MH3iWAINTviDHJPwsH7rjQ + mar-signing-l10n-ach-win32-shippable/opt: aNEbn5-mQmWAQvxyRy0elQ + mar-signing-l10n-ach-win64-aarch64-shippable/opt: ALppuwLFQsOZPh9fAKYFFg + mar-signing-l10n-ach-win64-shippable/opt: Svmo0MB_TqKbR0XrZkYZWw + mar-signing-l10n-af-linux-shippable/opt: RC8-GgAlTs-RGEdGDkhXRA + mar-signing-l10n-af-linux64-shippable/opt: KNQJVKyoSEab7XVNGQTh_A + mar-signing-l10n-af-macosx64-shippable/opt: CYrWhHW5TsW__dRZ12yscw + mar-signing-l10n-af-win32-shippable/opt: UnhjAm3ySPudPA5pQFp1sw + mar-signing-l10n-af-win64-aarch64-shippable/opt: DajUtdxjSm2ZXUxlpZCFYg + mar-signing-l10n-af-win64-shippable/opt: FIJFtMT8Qr-GyV6pG3yokQ + mar-signing-l10n-an-linux-shippable/opt: V4PyJW7NSoCg-rApSpDkww + mar-signing-l10n-an-linux64-shippable/opt: fjbhORwKRFyH3vA5Smitqw + mar-signing-l10n-an-macosx64-shippable/opt: RcKNO4PRQqKdw4wxUVdZng + mar-signing-l10n-an-win32-shippable/opt: UDtB4ZbsSYeXeuNbRJde5w + mar-signing-l10n-an-win64-aarch64-shippable/opt: IYqqpwihROa42Kd4WTAYdg + mar-signing-l10n-an-win64-shippable/opt: CqX_HHnXRPOb3vcVwjrslw + mar-signing-l10n-ar-linux-shippable/opt: H395H7hJQUqc7f1fcdCoew + mar-signing-l10n-ar-linux64-shippable/opt: SfCAHae0R2y6ua5fV1avew + mar-signing-l10n-ar-macosx64-shippable/opt: BZZe09g5TxmUdtjSzs72PQ + mar-signing-l10n-ar-win32-shippable/opt: Ctj1kpUhTYeRM7aD9mLfSg + mar-signing-l10n-ar-win64-aarch64-shippable/opt: Y46RooH6QMKC_dkDaYGmAA + mar-signing-l10n-ar-win64-shippable/opt: H7UkOSqfSmurhk2pYVcSLA + mar-signing-l10n-ast-linux-shippable/opt: IQYgmYYrS1eQuqN9UpAk5A + mar-signing-l10n-ast-linux64-shippable/opt: bEEeib3oTiWx3Shnif8ACQ + mar-signing-l10n-ast-macosx64-shippable/opt: aCvHO4OhRoC8Fay1vy1qqg + mar-signing-l10n-ast-win32-shippable/opt: EPeETbLJRiqbHAaaIyWPvw + mar-signing-l10n-ast-win64-aarch64-shippable/opt: WkYeBiTGTy2AZcZ7ESMFNw + mar-signing-l10n-ast-win64-shippable/opt: elks1p2zQeeG-L2ckqrAdQ + mar-signing-l10n-az-linux-shippable/opt: JUGU7-Z0TzC0Gs2UiyCriw + mar-signing-l10n-az-linux64-shippable/opt: fVhne6pKQhipYG9waMWPaA + mar-signing-l10n-az-macosx64-shippable/opt: TWmEkjiIR8uZxYnWZRUQfQ + mar-signing-l10n-az-win32-shippable/opt: DPcEeXi8SOCvARKMIH0w7Q + mar-signing-l10n-az-win64-aarch64-shippable/opt: CmTmXFpjTgmR824QCb7ToA + mar-signing-l10n-az-win64-shippable/opt: DyBwiRZNRfeDLsLasmQpfw + mar-signing-l10n-be-linux-shippable/opt: SRRTfmADTPKo5ms1_PmaXg + mar-signing-l10n-be-linux64-shippable/opt: dNmqrbJUTImrM5cH0gGhCA + mar-signing-l10n-be-macosx64-shippable/opt: JdpNHy5qQW-ShyFgeiLw7w + mar-signing-l10n-be-win32-shippable/opt: aEAjaAoaRf-Zcmxq6JW_fw + mar-signing-l10n-be-win64-aarch64-shippable/opt: EZAspyjaSGmpw3o92xbqAQ + mar-signing-l10n-be-win64-shippable/opt: dLcaD6bsTQiToNRgfVx_5A + mar-signing-l10n-bg-linux-shippable/opt: LJ-oD88cTJWbxgLceMulOA + mar-signing-l10n-bg-linux64-shippable/opt: AEVWbV0XSf6l39WtqQjCJQ + mar-signing-l10n-bg-macosx64-shippable/opt: ZSw55FcSR_uMuiw5rOhLDA + mar-signing-l10n-bg-win32-shippable/opt: VUcmd4AiR6qxTfICQR4DGA + mar-signing-l10n-bg-win64-aarch64-shippable/opt: CX4keaBxQvWhJgyXbpFVaQ + mar-signing-l10n-bg-win64-shippable/opt: UJ3tank6SzmZqj2O1-FpMw + mar-signing-l10n-bn-linux-shippable/opt: ZiHFfdbfSg6XtR1hDdPJrQ + mar-signing-l10n-bn-linux64-shippable/opt: NpReIn2jSiuufxzTz5_m3A + mar-signing-l10n-bn-macosx64-shippable/opt: GZABOHCQRROE7poHKyDoJA + mar-signing-l10n-bn-win32-shippable/opt: Xe0aUsMJTF2sIrOLcZSYCQ + mar-signing-l10n-bn-win64-aarch64-shippable/opt: DDMCfTIASciUZ__4NNQE1w + mar-signing-l10n-bn-win64-shippable/opt: Zf8WiMYTTEmb8CYa3JsA3A + mar-signing-l10n-br-linux-shippable/opt: W_KU1b1sTfiMG-yMtla5Ig + mar-signing-l10n-br-linux64-shippable/opt: PswMcHq7RM2syg2fwoX_8Q + mar-signing-l10n-br-macosx64-shippable/opt: PhSoo8uWTL6mZiPL2HPxDQ + mar-signing-l10n-br-win32-shippable/opt: bdxcmSatQ4mICcVjXuS9Mg + mar-signing-l10n-br-win64-aarch64-shippable/opt: IAGLVB0YSreTmGypDihdCw + mar-signing-l10n-br-win64-shippable/opt: ZoJdLwIOTRS1Ih3EAX3_8A + mar-signing-l10n-bs-linux-shippable/opt: cIgDPNbOQMWwv9Bxf2_6Gg + mar-signing-l10n-bs-linux64-shippable/opt: IpYjVPDGSquAAeYFxbmsxw + mar-signing-l10n-bs-macosx64-shippable/opt: WHf0cFcuQpyH1wHaQmJgDg + mar-signing-l10n-bs-win32-shippable/opt: IvibQxXWQGiaC4zgwvFLeA + mar-signing-l10n-bs-win64-aarch64-shippable/opt: EGGOGZDdQHCHNNGkD49YwQ + mar-signing-l10n-bs-win64-shippable/opt: X0fH-MCWTAisDof6h3pI_g + mar-signing-l10n-ca-linux-shippable/opt: fBWb1325TIedZUSRM2Sdgw + mar-signing-l10n-ca-linux64-shippable/opt: FGKsPPGJQ3ih0uNqOw6YqQ + mar-signing-l10n-ca-macosx64-shippable/opt: D-iKPKtETyONA7qV1aVFcg + mar-signing-l10n-ca-valencia-linux-shippable/opt: XBOWH5A3R5aCTFOLbx0acQ + mar-signing-l10n-ca-valencia-linux64-shippable/opt: PCe_r2hgQSqH_Mn3KtbLvw + mar-signing-l10n-ca-valencia-macosx64-shippable/opt: ak3EPz0lRWSwA4X-yj2zhA + mar-signing-l10n-ca-valencia-win32-shippable/opt: ZV8dpp33ThuZZnrq8cRXzQ + mar-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: QlUME-EGSJe3CY4KQy8B8w + mar-signing-l10n-ca-valencia-win64-shippable/opt: FCtuiyJZSua-bqpwrDHPAg + mar-signing-l10n-ca-win32-shippable/opt: D8nYxQWuTe22yMOPSMq3ew + mar-signing-l10n-ca-win64-aarch64-shippable/opt: SbbO_CKdRpe50TmELGFHYg + mar-signing-l10n-ca-win64-shippable/opt: AiHo73rORfWu95jRV5wlcw + mar-signing-l10n-cak-linux-shippable/opt: R5fH1rT7ShShShMRmbMWXg + mar-signing-l10n-cak-linux64-shippable/opt: McQoCU28Twuh9zpoWTkZvQ + mar-signing-l10n-cak-macosx64-shippable/opt: DzWlRBH7R7GBC3uzgUbL8g + mar-signing-l10n-cak-win32-shippable/opt: fOhb8BFIT92AX6uHuIImIA + mar-signing-l10n-cak-win64-aarch64-shippable/opt: BjS7haMSRS61uT9lK1AEzQ + mar-signing-l10n-cak-win64-shippable/opt: GtfXcoc7SCe_-Wv2_LmyVg + mar-signing-l10n-cs-linux-shippable/opt: AFNpZZIxSOGywnS6LtenyA + mar-signing-l10n-cs-linux64-shippable/opt: NQj5A9uqT6e6X7-hDODUaw + mar-signing-l10n-cs-macosx64-shippable/opt: ZRjr1OD9Rj6V4txL707ryg + mar-signing-l10n-cs-win32-shippable/opt: e1gXUdx5QTGgtlAyJplFRw + mar-signing-l10n-cs-win64-aarch64-shippable/opt: UJuz6TIPTJuqKbLaUlLA5A + mar-signing-l10n-cs-win64-shippable/opt: Ki_vy7o5SDGxEYtIoH1kCA + mar-signing-l10n-cy-linux-shippable/opt: SmVRgCbTQ0SmLX1EAzmOnA + mar-signing-l10n-cy-linux64-shippable/opt: CPbDettBT166XvvBu3cByw + mar-signing-l10n-cy-macosx64-shippable/opt: N9MUF5x8T6-LNxRuVlzCrg + mar-signing-l10n-cy-win32-shippable/opt: MKsiW8hITEyVrqrawiCNNg + mar-signing-l10n-cy-win64-aarch64-shippable/opt: d4yk6HBtQD-f7KYpjrcxEQ + mar-signing-l10n-cy-win64-shippable/opt: QIMTRm7YR_a38mL9WhYOPw + mar-signing-l10n-da-linux-shippable/opt: QgE1S_rHQ4u0SlSNK3fp9Q + mar-signing-l10n-da-linux64-shippable/opt: TQnZe4i2Q-KfXCZ24H0MCA + mar-signing-l10n-da-macosx64-shippable/opt: RJbNqoh4TSehx2J9hFVRHg + mar-signing-l10n-da-win32-shippable/opt: fjAx-XsmQwaWFI4Uz9K1-Q + mar-signing-l10n-da-win64-aarch64-shippable/opt: NZcSbXAuS-qWcWwL1af75w + mar-signing-l10n-da-win64-shippable/opt: Wekrci58RqG9ame1pRWcow + mar-signing-l10n-de-linux-shippable/opt: cU8Up08vSCGpJ2di7bWFKw + mar-signing-l10n-de-linux64-shippable/opt: cB7Z3K0PTpKonvQzr7huuw + mar-signing-l10n-de-macosx64-shippable/opt: DZnhRp0uQ8yA6ngrLkv6CA + mar-signing-l10n-de-win32-shippable/opt: PCd3JwPqQYKnsd5tI39qQg + mar-signing-l10n-de-win64-aarch64-shippable/opt: AJvhJ0oASCySC2OExSVceA + mar-signing-l10n-de-win64-shippable/opt: OGCLWXuFR1ysCnCEGAC4ng + mar-signing-l10n-dsb-linux-shippable/opt: FUQg5H8RSNWXbBEBQNHL3Q + mar-signing-l10n-dsb-linux64-shippable/opt: VTPTDV9ERhyI359f5JaSDw + mar-signing-l10n-dsb-macosx64-shippable/opt: V18vZDM7QqejrSpBpAnACw + mar-signing-l10n-dsb-win32-shippable/opt: JgiiCaEaRlytMxJZIPkwYQ + mar-signing-l10n-dsb-win64-aarch64-shippable/opt: Sx9Zqs_RQMu-dz56t4ROgA + mar-signing-l10n-dsb-win64-shippable/opt: HnBlZwo3Q2OAY0C2JC83xQ + mar-signing-l10n-el-linux-shippable/opt: HIJXgTfHQrOSNrTQVUHwDg + mar-signing-l10n-el-linux64-shippable/opt: TIRIhyp7Qrm22s-WtXja6g + mar-signing-l10n-el-macosx64-shippable/opt: Fqo_DRyFSMC94I06Z-P6gA + mar-signing-l10n-el-win32-shippable/opt: TZokjtH6R9OFIsfXITegXg + mar-signing-l10n-el-win64-aarch64-shippable/opt: A4L-Alp1S52ZquCaw9jnqg + mar-signing-l10n-el-win64-shippable/opt: d4uVShwySkmvh0S-hXoo3g + mar-signing-l10n-en-CA-linux-shippable/opt: XgXBiO89RN6-jL7b84WI8g + mar-signing-l10n-en-CA-linux64-shippable/opt: TpZg45caRXKIIkGENAyF9w + mar-signing-l10n-en-CA-macosx64-shippable/opt: Gw4-Ez5zT2-n-U0zdquomQ + mar-signing-l10n-en-CA-win32-shippable/opt: EoqgmnfuR1uwW--YsQ8K5w + mar-signing-l10n-en-CA-win64-aarch64-shippable/opt: FwhAVFyyQGiHuVxmbL49gg + mar-signing-l10n-en-CA-win64-shippable/opt: A_tWXnEjTBmbezd3MfaZDw + mar-signing-l10n-en-GB-linux-shippable/opt: WATGYtQvQ2WFXeg9KZWsMg + mar-signing-l10n-en-GB-linux64-shippable/opt: GedaPbSdSXWfXUhYaYb15g + mar-signing-l10n-en-GB-macosx64-shippable/opt: DyeUzS_3RJC5LwVc076w-A + mar-signing-l10n-en-GB-win32-shippable/opt: P3AfcidiT_imVzOiF5F9Aw + mar-signing-l10n-en-GB-win64-aarch64-shippable/opt: Ss4v4Zc1TKCZxFGlId4x-g + mar-signing-l10n-en-GB-win64-shippable/opt: JriarS9jRwS056RNKuVzIA + mar-signing-l10n-eo-linux-shippable/opt: Gz_5U1VNRnaZZCigEAr1dQ + mar-signing-l10n-eo-linux64-shippable/opt: VJ5qdA09QVuJqKiR5IzZhQ + mar-signing-l10n-eo-macosx64-shippable/opt: MdXgGQ5VRT-ng7cLt4EPwg + mar-signing-l10n-eo-win32-shippable/opt: D7ejASErQgyVHp7vkjhAXA + mar-signing-l10n-eo-win64-aarch64-shippable/opt: QzvHSz-BRxK1wvFLcnoqRg + mar-signing-l10n-eo-win64-shippable/opt: dO9jRlnwQ363Y4qHxlvzlA + mar-signing-l10n-es-AR-linux-shippable/opt: Ge-Ahc_4STmZczn-50NzeQ + mar-signing-l10n-es-AR-linux64-shippable/opt: Wro40rEESQWTfxH6WPo91Q + mar-signing-l10n-es-AR-macosx64-shippable/opt: GUdXzls1RkGkuceixqnuOw + mar-signing-l10n-es-AR-win32-shippable/opt: ePyiRJ0nTAWXhMhWa5a98w + mar-signing-l10n-es-AR-win64-aarch64-shippable/opt: Hn5ux4gfSFWONnwMTtQZDg + mar-signing-l10n-es-AR-win64-shippable/opt: IFhHXXSHSoywuK5gTcCZ6A + mar-signing-l10n-es-CL-linux-shippable/opt: DhR40kSVQd6Q2zGAGan5cQ + mar-signing-l10n-es-CL-linux64-shippable/opt: Aqm25C4GTjSW5Zy3lzl0PA + mar-signing-l10n-es-CL-macosx64-shippable/opt: Cx5EvgJnTa-EY9NdvQhtHg + mar-signing-l10n-es-CL-win32-shippable/opt: HLYA62iWT9a1Ii1PGpoOIA + mar-signing-l10n-es-CL-win64-aarch64-shippable/opt: ZR6-y53ORXGC2Aei8cOCjA + mar-signing-l10n-es-CL-win64-shippable/opt: bZWJwtXeRQSkw4aoE35agQ + mar-signing-l10n-es-ES-linux-shippable/opt: K4xKb1-LQuuedNuEH83-nA + mar-signing-l10n-es-ES-linux64-shippable/opt: D75bzQdPRBekSNBxuGK6YQ + mar-signing-l10n-es-ES-macosx64-shippable/opt: KFVbLQzmRVexaObd1MGpuQ + mar-signing-l10n-es-ES-win32-shippable/opt: W5aXbMxKRn251IxgXi3B7w + mar-signing-l10n-es-ES-win64-aarch64-shippable/opt: N8c-qkksQ5mykAWhsA2xDQ + mar-signing-l10n-es-ES-win64-shippable/opt: UTXjQ7naTLKce9rg5JLIxQ + mar-signing-l10n-es-MX-linux-shippable/opt: TJuy7oRaTmaOEHX_luu-kA + mar-signing-l10n-es-MX-linux64-shippable/opt: LvYIiaMjTPCoAKz18RaWvA + mar-signing-l10n-es-MX-macosx64-shippable/opt: T7OtWU5iRwWLp1vi3UFGtA + mar-signing-l10n-es-MX-win32-shippable/opt: DIwlCf4OSdS09z6yzdO_BA + mar-signing-l10n-es-MX-win64-aarch64-shippable/opt: AkAaHQOHRsy3WpHE6HZ8mA + mar-signing-l10n-es-MX-win64-shippable/opt: aqreglMMTl2F65T82uigJA + mar-signing-l10n-et-linux-shippable/opt: UNmZ4h0jSISxMbtbNcE_4Q + mar-signing-l10n-et-linux64-shippable/opt: JPQ-DzUwTEaOnmqyO1T1-A + mar-signing-l10n-et-macosx64-shippable/opt: KfQRT6BoRlmpvnyN0FumaQ + mar-signing-l10n-et-win32-shippable/opt: HO5xtmJTTgiQx2GgwB0R5A + mar-signing-l10n-et-win64-aarch64-shippable/opt: Y4xJeTI2Tym1DhNZtcscyw + mar-signing-l10n-et-win64-shippable/opt: MNbnO17wTrazDAEPF__WYQ + mar-signing-l10n-eu-linux-shippable/opt: KfJG5xkdSICcPsSmN0P_5Q + mar-signing-l10n-eu-linux64-shippable/opt: ZDnatwiwT_OKI1dOxY0AMQ + mar-signing-l10n-eu-macosx64-shippable/opt: dAiYcA-8S5C1bIwhuvC29w + mar-signing-l10n-eu-win32-shippable/opt: bI-uoNkfS9SvrqN0F3RWKQ + mar-signing-l10n-eu-win64-aarch64-shippable/opt: ZJavwiJVRjOiyKZnk8GbKg + mar-signing-l10n-eu-win64-shippable/opt: OsuSQguASUyxMjjrw4e4Zg + mar-signing-l10n-fa-linux-shippable/opt: HjqVlkbvTM2K5pgKlELhbw + mar-signing-l10n-fa-linux64-shippable/opt: IWoCKfFoQxuuuUlchiYipA + mar-signing-l10n-fa-macosx64-shippable/opt: Qa8_FnD-QsezjzrOySy-pw + mar-signing-l10n-fa-win32-shippable/opt: Z-IbumVFSJqxIeglphkf3w + mar-signing-l10n-fa-win64-aarch64-shippable/opt: e41AzGexQzKsJuAENLhCLw + mar-signing-l10n-fa-win64-shippable/opt: X4RYqLQESwuRVUrPK3KRSA + mar-signing-l10n-ff-linux-shippable/opt: YHEni4QITuGwkAMOxRMd0w + mar-signing-l10n-ff-linux64-shippable/opt: KtnU6T2qQJCV_xmO8YWx6Q + mar-signing-l10n-ff-macosx64-shippable/opt: Zzo7ip6ITlSoQzGQ0WMPxw + mar-signing-l10n-ff-win32-shippable/opt: FKYQoC3iSI-cDg3PhAWYQQ + mar-signing-l10n-ff-win64-aarch64-shippable/opt: MOVGzImkStKlqwOtcGJniQ + mar-signing-l10n-ff-win64-shippable/opt: FtqpvrihRaCJda0JhwxiJA + mar-signing-l10n-fi-linux-shippable/opt: Sri0MvBgRl6mJz9jwpGsRw + mar-signing-l10n-fi-linux64-shippable/opt: ZXqYond1SWiVQaq0XDqBgw + mar-signing-l10n-fi-macosx64-shippable/opt: ZeKhtIINTkGTJDHHaBnWOA + mar-signing-l10n-fi-win32-shippable/opt: U09E-EegTfu7BEj7ay5X2A + mar-signing-l10n-fi-win64-aarch64-shippable/opt: PVpQPDWWSAey79hQ7HlYeA + mar-signing-l10n-fi-win64-shippable/opt: fGA5EpcZQYi6Jkuedx78tw + mar-signing-l10n-fr-linux-shippable/opt: QeQNvnqzT4ebEiu2I5621A + mar-signing-l10n-fr-linux64-shippable/opt: dzNff0A9Sm-_sKJFbfEc8w + mar-signing-l10n-fr-macosx64-shippable/opt: S18Z_2LOSnuec1N2FLbBjg + mar-signing-l10n-fr-win32-shippable/opt: OZuJpuZNS-uDiQOXcuvUUw + mar-signing-l10n-fr-win64-aarch64-shippable/opt: LUFIujJeSjafW6nlvdUGSw + mar-signing-l10n-fr-win64-shippable/opt: Izcia4LiQIK67ATjC4ystg + mar-signing-l10n-fur-linux-shippable/opt: A5kzkFz5RPudRDD0IQV5tw + mar-signing-l10n-fur-linux64-shippable/opt: Z3Ydf9KtSne3gg1GwqTajA + mar-signing-l10n-fur-macosx64-shippable/opt: DbhtD9LiS-S5ZHF0E1t_Dg + mar-signing-l10n-fur-win32-shippable/opt: WVyKs5CpRjaOvO8M5fgaBw + mar-signing-l10n-fur-win64-aarch64-shippable/opt: eVKZkBb4RTqUF8oiefVeUw + mar-signing-l10n-fur-win64-shippable/opt: LyQc_WVaQn-tYSKuZT4t9w + mar-signing-l10n-fy-NL-linux-shippable/opt: UUDCuZi9Rqe1OF1fKfshtg + mar-signing-l10n-fy-NL-linux64-shippable/opt: KcVZJjERSgumSIq6uslkXA + mar-signing-l10n-fy-NL-macosx64-shippable/opt: FQfJx7JATwikmb5WvuKohA + mar-signing-l10n-fy-NL-win32-shippable/opt: IXn7nyivQj6LMZYVvymzrg + mar-signing-l10n-fy-NL-win64-aarch64-shippable/opt: B8wmgmgzTdKr23cBEk3ZHA + mar-signing-l10n-fy-NL-win64-shippable/opt: bM4OPLUlQwmgweYf-EvtCQ + mar-signing-l10n-ga-IE-linux-shippable/opt: SU9Yf9hPR8WWcxBUp0UONA + mar-signing-l10n-ga-IE-linux64-shippable/opt: OKLUA9dHRFGm6FLPJAFs7w + mar-signing-l10n-ga-IE-macosx64-shippable/opt: AnLcm_2PTxuqvbREN_5CuQ + mar-signing-l10n-ga-IE-win32-shippable/opt: L5dKvgfCTfy5L75L6NVMLQ + mar-signing-l10n-ga-IE-win64-aarch64-shippable/opt: cHf2gAbFT1SHYKJ7dDo2gA + mar-signing-l10n-ga-IE-win64-shippable/opt: Wh6NYGf-T4KkxVlSVK3MFg + mar-signing-l10n-gd-linux-shippable/opt: bnk0mgNPSFi6zmUB34XMuA + mar-signing-l10n-gd-linux64-shippable/opt: Bia1ibzDQuObqHl_plEA8Q + mar-signing-l10n-gd-macosx64-shippable/opt: DqM7p8wCRsq8l3K7hj_Lng + mar-signing-l10n-gd-win32-shippable/opt: KSUaHLN7RsC_Sh_mykCPng + mar-signing-l10n-gd-win64-aarch64-shippable/opt: FGOeSsdRTBOJZFaou-3QRg + mar-signing-l10n-gd-win64-shippable/opt: LEWmU_rVSFui3Z4IGC1vdQ + mar-signing-l10n-gl-linux-shippable/opt: S2U-tX23S9CLJWB1-V9bpA + mar-signing-l10n-gl-linux64-shippable/opt: N9IlHcJdRn2Ly2ENSWZPQw + mar-signing-l10n-gl-macosx64-shippable/opt: Yn5jILHTSgiPretfxauAgw + mar-signing-l10n-gl-win32-shippable/opt: YR55Hr0MSXeXal5yHg-Zzg + mar-signing-l10n-gl-win64-aarch64-shippable/opt: NYvMkznCRAqOGZPH6rgqsQ + mar-signing-l10n-gl-win64-shippable/opt: UrZEXQ3yTeSH0Jw4QFGzYQ + mar-signing-l10n-gn-linux-shippable/opt: Tb7j_dfHQnO2fcqixClDcw + mar-signing-l10n-gn-linux64-shippable/opt: eBpWiy1gThCdh21v80nb2w + mar-signing-l10n-gn-macosx64-shippable/opt: KXjCKnNGR_uHyQP0EsvzAg + mar-signing-l10n-gn-win32-shippable/opt: JYp6tmGmSnCMCQmJnzlabw + mar-signing-l10n-gn-win64-aarch64-shippable/opt: E-fPyN_wSD-K8lV67nSScA + mar-signing-l10n-gn-win64-shippable/opt: ao4tgcCuRtyDPXvyKX7p7w + mar-signing-l10n-gu-IN-linux-shippable/opt: QX-ae61wTX-rHkt2zWNCpg + mar-signing-l10n-gu-IN-linux64-shippable/opt: Tp706c9mQZi1JXZ5ZrE7Mw + mar-signing-l10n-gu-IN-macosx64-shippable/opt: RuhkNJD5QKqhDBYHbdc8UQ + mar-signing-l10n-gu-IN-win32-shippable/opt: OnSAdrFGRMq__C2o3s8Mhw + mar-signing-l10n-gu-IN-win64-aarch64-shippable/opt: PqBNdO-iTHi2oKEljFR0Lg + mar-signing-l10n-gu-IN-win64-shippable/opt: Iv9PVIJVRrm6AgxBsbKFLQ + mar-signing-l10n-he-linux-shippable/opt: aGlKg3BjQ4qBTZceWPi3Tg + mar-signing-l10n-he-linux64-shippable/opt: KHD6kffvSuKxPWD4RzEbZQ + mar-signing-l10n-he-macosx64-shippable/opt: CEEwOpeFQg-btnvcNDciAA + mar-signing-l10n-he-win32-shippable/opt: f3Gd446nTlaXDNVOI8UShA + mar-signing-l10n-he-win64-aarch64-shippable/opt: aPWs-kDiQvWUUHhzeA8nyA + mar-signing-l10n-he-win64-shippable/opt: UTs3ponpQ8evLeOdRQJVcA + mar-signing-l10n-hi-IN-linux-shippable/opt: P51-CzIcRO-c0sPFNoQfvQ + mar-signing-l10n-hi-IN-linux64-shippable/opt: MiUXvgQ6RuunY8wEmGzIiA + mar-signing-l10n-hi-IN-macosx64-shippable/opt: GztW7yK6Sk6pArvLWqh8dg + mar-signing-l10n-hi-IN-win32-shippable/opt: CuOPddmORjelgvm3a7dZIQ + mar-signing-l10n-hi-IN-win64-aarch64-shippable/opt: Sfsy0zT0R-CQg3lGw7H6dA + mar-signing-l10n-hi-IN-win64-shippable/opt: D6ANwEAxQT28xwN4OabEIQ + mar-signing-l10n-hr-linux-shippable/opt: Dts9JMWUQ36p_63wDuqoFA + mar-signing-l10n-hr-linux64-shippable/opt: S-p8UvkcRgeOUTcYmoPBgA + mar-signing-l10n-hr-macosx64-shippable/opt: OyD_jsPVS2aC4UDJhuhcMQ + mar-signing-l10n-hr-win32-shippable/opt: MI8HGbSLQVSJ2819kGd4_A + mar-signing-l10n-hr-win64-aarch64-shippable/opt: YW3hxIliTIG5cxOyvf6O3w + mar-signing-l10n-hr-win64-shippable/opt: EkozbeuCR9KOZCjtZrVN_w + mar-signing-l10n-hsb-linux-shippable/opt: a7uG810mRZ63Xye8fEiqCQ + mar-signing-l10n-hsb-linux64-shippable/opt: AJtt0az_TvSUVy_p2-FzVg + mar-signing-l10n-hsb-macosx64-shippable/opt: Zms45Q7LRfaKNWdgel-NUA + mar-signing-l10n-hsb-win32-shippable/opt: WOga-IfhSiCijHvOec9CIA + mar-signing-l10n-hsb-win64-aarch64-shippable/opt: TDOS15TVRfm3iiQ1RhKtlQ + mar-signing-l10n-hsb-win64-shippable/opt: SrIHG2TbR66B9ZR7F56nvg + mar-signing-l10n-hu-linux-shippable/opt: DC5XZhywQ1e9kPWS2807eg + mar-signing-l10n-hu-linux64-shippable/opt: FgYNpE2nTp-X3mtz38bltg + mar-signing-l10n-hu-macosx64-shippable/opt: STWY4TonT7WnkaTqf6dfPA + mar-signing-l10n-hu-win32-shippable/opt: OnKBFkJVTaCDeTkD0VsYtw + mar-signing-l10n-hu-win64-aarch64-shippable/opt: WprhejZ5TACq1W-YdK_VdQ + mar-signing-l10n-hu-win64-shippable/opt: OvsiPUkiTZuvPeGoHBwNOA + mar-signing-l10n-hy-AM-linux-shippable/opt: Honoh9orRByejMXnDbqd2Q + mar-signing-l10n-hy-AM-linux64-shippable/opt: eDBDQfZBRHyqJF1yxJz2zg + mar-signing-l10n-hy-AM-macosx64-shippable/opt: MR9Hcd1oR5yz9NOtS42WpA + mar-signing-l10n-hy-AM-win32-shippable/opt: ZY4bXKljStyogd47Ezyp8w + mar-signing-l10n-hy-AM-win64-aarch64-shippable/opt: HKjTyrDXRIqyi6BwwW1UmA + mar-signing-l10n-hy-AM-win64-shippable/opt: VPMX7X1nQxCouIYkWJ2wHw + mar-signing-l10n-ia-linux-shippable/opt: QcTqvPpkRR-h4XsGJS4xyw + mar-signing-l10n-ia-linux64-shippable/opt: T_0Ve580TVqbqNoGcIH9aA + mar-signing-l10n-ia-macosx64-shippable/opt: DlWMjy5GRWi92ybIk4z6hQ + mar-signing-l10n-ia-win32-shippable/opt: JoUt0yMwQJ6GdjwE-2rbxg + mar-signing-l10n-ia-win64-aarch64-shippable/opt: aSZr9eHiQEy1T1ZSy3fuJw + mar-signing-l10n-ia-win64-shippable/opt: FHQ0oYcbT_-TDFAkQYOB3A + mar-signing-l10n-id-linux-shippable/opt: c1BuPjBrTP-6JDHNTZ9QFg + mar-signing-l10n-id-linux64-shippable/opt: eQKx-rJlQ_CP-bV812mwIQ + mar-signing-l10n-id-macosx64-shippable/opt: UQwjTTN5QeCErGWq0CwBfw + mar-signing-l10n-id-win32-shippable/opt: T7vqF_51RA6heaWFVL1x9g + mar-signing-l10n-id-win64-aarch64-shippable/opt: NtAfg53rS72PsDA-_zkWzw + mar-signing-l10n-id-win64-shippable/opt: d6rW0CbtS8m97Wm3PrDjIA + mar-signing-l10n-is-linux-shippable/opt: Scyb0odsT1ORnl8cNl8PmQ + mar-signing-l10n-is-linux64-shippable/opt: HTXIpb8bRpGHr9kG6yssOA + mar-signing-l10n-is-macosx64-shippable/opt: cQ9ofD0vQ8edyldc-bwHgA + mar-signing-l10n-is-win32-shippable/opt: OjcVtAwzTiCyo_yYhp5FNw + mar-signing-l10n-is-win64-aarch64-shippable/opt: GsKjWDCtRbG0t4CDLYN5og + mar-signing-l10n-is-win64-shippable/opt: eBWQJ80aT7Grht_aiJV9hw + mar-signing-l10n-it-linux-shippable/opt: Vg3KfdovQSSIn2e9CTfvng + mar-signing-l10n-it-linux64-shippable/opt: IoiK8A2CTTu8pJq8fhfn7Q + mar-signing-l10n-it-macosx64-shippable/opt: d5VT_LLtSTKGxzvm8ZbmOw + mar-signing-l10n-it-win32-shippable/opt: BZmzNbV3QkKcjBwL1GDM3A + mar-signing-l10n-it-win64-aarch64-shippable/opt: N6kmOg0NQxWY8UGq4FvtVQ + mar-signing-l10n-it-win64-shippable/opt: EIEQDVG4QhO0dH1_yfGxrw + mar-signing-l10n-ja-JP-mac-macosx64-shippable/opt: PSaBhpVCRkGjxYo8S7WIDQ + mar-signing-l10n-ja-linux-shippable/opt: Xt5gX_inTH-dmMzxhDmvNg + mar-signing-l10n-ja-linux64-shippable/opt: AGHAQL4kTOOORJ9VNpB2eg + mar-signing-l10n-ja-win32-shippable/opt: OR0MD6cEQVulBEHvX-L2Ew + mar-signing-l10n-ja-win64-aarch64-shippable/opt: bJIFPOQQTYKzb9vzj1MlbA + mar-signing-l10n-ja-win64-shippable/opt: X_kplEHuSx60cNMJwZTCFw + mar-signing-l10n-ka-linux-shippable/opt: QGt50WpGSWCu7s84upRTlA + mar-signing-l10n-ka-linux64-shippable/opt: H1FwynZMTvOZW7TIBeltqQ + mar-signing-l10n-ka-macosx64-shippable/opt: emYg0LjoSYeLVl9Zu70o2A + mar-signing-l10n-ka-win32-shippable/opt: JdCLdQMXT0GzKMRleyx6CA + mar-signing-l10n-ka-win64-aarch64-shippable/opt: b42uZvD7Qba2GMCyWTqj2g + mar-signing-l10n-ka-win64-shippable/opt: RRsDH055TKqgkGviWPJuCA + mar-signing-l10n-kab-linux-shippable/opt: BN0BFvO1S5q77XwjJ0x1ZQ + mar-signing-l10n-kab-linux64-shippable/opt: YkzMjUxDQd2_-H3dxFsRNw + mar-signing-l10n-kab-macosx64-shippable/opt: c4HcuylwRT-TUqYSSqqbpw + mar-signing-l10n-kab-win32-shippable/opt: Ch3t6gE3TimoQEa9_3Vf-w + mar-signing-l10n-kab-win64-aarch64-shippable/opt: Rtglc7KgQI6DNCkCdfbb0g + mar-signing-l10n-kab-win64-shippable/opt: KXCWSWX3QDqb2-OuQokx9g + mar-signing-l10n-kk-linux-shippable/opt: MCXs2qF1R1q6Aia_qbLXCg + mar-signing-l10n-kk-linux64-shippable/opt: cODGixKHSWqXS_iVxAXKyw + mar-signing-l10n-kk-macosx64-shippable/opt: GRTElgmbTIGclOIuTJ5Cdw + mar-signing-l10n-kk-win32-shippable/opt: RvFs_TVQQbeRNCw18QOvYA + mar-signing-l10n-kk-win64-aarch64-shippable/opt: CAkegRpYT4WqQV5XTcTf2A + mar-signing-l10n-kk-win64-shippable/opt: Iv-NI5INR_SgSipA5mnuZw + mar-signing-l10n-km-linux-shippable/opt: XeXrf7GGSWik05mBSWXvCg + mar-signing-l10n-km-linux64-shippable/opt: bJ5gIHRjRb2Hezp_1N5NFw + mar-signing-l10n-km-macosx64-shippable/opt: MUQfHV8qRYqnSyC9UmVrKQ + mar-signing-l10n-km-win32-shippable/opt: NafB_3v0SLaZXSklH9JjIQ + mar-signing-l10n-km-win64-aarch64-shippable/opt: Jo3SBelrRWWQQR5NNTXoyA + mar-signing-l10n-km-win64-shippable/opt: TAS7Ce51Sf2GcFSi49MmyQ + mar-signing-l10n-kn-linux-shippable/opt: L_3sttd7TD62RKbbCd6Elw + mar-signing-l10n-kn-linux64-shippable/opt: YLYlnU-kRiG35CChd3s9uA + mar-signing-l10n-kn-macosx64-shippable/opt: RMiujw5ZSjW9Ig6S5d1Vaw + mar-signing-l10n-kn-win32-shippable/opt: Umy_0RTqSBG1F-jyj9rfuw + mar-signing-l10n-kn-win64-aarch64-shippable/opt: RhFLHlofQSW05vvjkKerPA + mar-signing-l10n-kn-win64-shippable/opt: Vau3Td_JSHmlXZHWzs-uCQ + mar-signing-l10n-ko-linux-shippable/opt: eZ_SpnGSQ3ex4BOYHTk-7g + mar-signing-l10n-ko-linux64-shippable/opt: PlVY9EkNT8OyPfKqDYRx8Q + mar-signing-l10n-ko-macosx64-shippable/opt: bIsxTywwRo272PpVgDkgBQ + mar-signing-l10n-ko-win32-shippable/opt: F0AU4d1iTACfIc1W760hsg + mar-signing-l10n-ko-win64-aarch64-shippable/opt: SmrS6dQTTHqsggKBT9SNSA + mar-signing-l10n-ko-win64-shippable/opt: ZEuPMi4ISY2hfj-f9ww-MA + mar-signing-l10n-lij-linux-shippable/opt: aRVm4xJIRG2ftrSecbxw3w + mar-signing-l10n-lij-linux64-shippable/opt: TJFyBU1uQwul-nYac3qsJg + mar-signing-l10n-lij-macosx64-shippable/opt: a7LRMsRGRI2wrXGX69i6Nw + mar-signing-l10n-lij-win32-shippable/opt: OfpJ6g2ZTt6WrAgxqwHaaA + mar-signing-l10n-lij-win64-aarch64-shippable/opt: NC8-xRaNRteqW__VgoDYkg + mar-signing-l10n-lij-win64-shippable/opt: C6KwhJRGQYC9o3ZPnrM1lg + mar-signing-l10n-lt-linux-shippable/opt: CUAhjXr8SRKnuddh2d-fAA + mar-signing-l10n-lt-linux64-shippable/opt: OhUhpjivRYaBx6Rzw_vlcA + mar-signing-l10n-lt-macosx64-shippable/opt: Y0L3ewFeTWKbx3B6hiC79g + mar-signing-l10n-lt-win32-shippable/opt: TofICktNSaKOqjr1REFvRQ + mar-signing-l10n-lt-win64-aarch64-shippable/opt: bPQA3xKzTHG70b2531qnMw + mar-signing-l10n-lt-win64-shippable/opt: Mg4TSjo0SlS6bgzNfUacKw + mar-signing-l10n-lv-linux-shippable/opt: Hu-b5ke_RA6ijcJ2SIy3Ew + mar-signing-l10n-lv-linux64-shippable/opt: bNzYxs1xROyr1NnaIrIggw + mar-signing-l10n-lv-macosx64-shippable/opt: RKZrXYiURg-FIILl08KXcQ + mar-signing-l10n-lv-win32-shippable/opt: cgxB3FLPT3WRRfYu2gSpzw + mar-signing-l10n-lv-win64-aarch64-shippable/opt: UdWxpZJpQV2I6ACSNGQ9mw + mar-signing-l10n-lv-win64-shippable/opt: OLwKSOIbR3GSSTapA2OvpQ + mar-signing-l10n-mk-linux-shippable/opt: UFFpxLw3SOGF8O6XHcvSFA + mar-signing-l10n-mk-linux64-shippable/opt: OssvKA0FQsWmjutHrXPJtg + mar-signing-l10n-mk-macosx64-shippable/opt: JsEY6upjQnadl11SlkSxZw + mar-signing-l10n-mk-win32-shippable/opt: Lh82Y8ENRq2yz7I8y0jFbw + mar-signing-l10n-mk-win64-aarch64-shippable/opt: PEYH_F5vRw6mqOavJ9zmKw + mar-signing-l10n-mk-win64-shippable/opt: FicBRJ91SCKInWiPOKO2sg + mar-signing-l10n-mr-linux-shippable/opt: V21PO3cbRbiOfi6AhBvP2g + mar-signing-l10n-mr-linux64-shippable/opt: UH6eRGH7Q6ey8b_El0nBNQ + mar-signing-l10n-mr-macosx64-shippable/opt: D6nNa366SOCEBy0qw_zQhA + mar-signing-l10n-mr-win32-shippable/opt: UCjclOfBQHGlcooaxlSGjQ + mar-signing-l10n-mr-win64-aarch64-shippable/opt: KmQoaWaFRTqFu_fF17hykw + mar-signing-l10n-mr-win64-shippable/opt: eXI-za8ASUatuLFyoN0SBg + mar-signing-l10n-ms-linux-shippable/opt: NviZ7eOOQRWHAgJNELb-6Q + mar-signing-l10n-ms-linux64-shippable/opt: HU1GM9bXTpig-btN760P1A + mar-signing-l10n-ms-macosx64-shippable/opt: FIakir51R5aJZgxzDZEjrQ + mar-signing-l10n-ms-win32-shippable/opt: NkY46U17TP-HbWmjnsE2bQ + mar-signing-l10n-ms-win64-aarch64-shippable/opt: F9_y2pAlTLSor8Ruhcgztw + mar-signing-l10n-ms-win64-shippable/opt: CIb_XcMZTM-0bYhTssaoeA + mar-signing-l10n-my-linux-shippable/opt: OIG4ENT8SYi3TclH0P2Psw + mar-signing-l10n-my-linux64-shippable/opt: Z6XqP2JfRI2WVUnSPYnmYw + mar-signing-l10n-my-macosx64-shippable/opt: BxuxjaXlSK6iYIiDDHP91w + mar-signing-l10n-my-win32-shippable/opt: aSJBcz6fQn66bQp0Q2fT_A + mar-signing-l10n-my-win64-aarch64-shippable/opt: AajgH-KTTriY8GDfkDPuiQ + mar-signing-l10n-my-win64-shippable/opt: QnUbhrRSSXyQYQ3DxMnflg + mar-signing-l10n-nb-NO-linux-shippable/opt: VZMn3Aw_QHGVO1sw4Cd-4Q + mar-signing-l10n-nb-NO-linux64-shippable/opt: PiDdOs17Timm6p0ANSm0WQ + mar-signing-l10n-nb-NO-macosx64-shippable/opt: WdLUK73kSueFjawNNTdxVg + mar-signing-l10n-nb-NO-win32-shippable/opt: GEra12aSS1ustVTrN85usg + mar-signing-l10n-nb-NO-win64-aarch64-shippable/opt: cUMmevN-Sp2enkFtaixCNA + mar-signing-l10n-nb-NO-win64-shippable/opt: Ki85T2mnTI2olOKdbz533Q + mar-signing-l10n-ne-NP-linux-shippable/opt: bmJ0fansT4-VvPVB--kf1g + mar-signing-l10n-ne-NP-linux64-shippable/opt: VMZEMqPyRiKIaf8zeiaCJw + mar-signing-l10n-ne-NP-macosx64-shippable/opt: TkJcrlKXQvCW3X8ZvnlXoQ + mar-signing-l10n-ne-NP-win32-shippable/opt: VW9y0uDoSZKmyHzGvxj8aQ + mar-signing-l10n-ne-NP-win64-aarch64-shippable/opt: Rn8dR36PRc-PcpHVxYSrPw + mar-signing-l10n-ne-NP-win64-shippable/opt: DJs5PiiEQ-iFIj1JQUu1KQ + mar-signing-l10n-nl-linux-shippable/opt: HyEpZ-x2Rx2PJl3a-P64zg + mar-signing-l10n-nl-linux64-shippable/opt: DQaJ1mWVQNSdCGUmGsKnRA + mar-signing-l10n-nl-macosx64-shippable/opt: XGddrbmVRRCxFibkOwSgcA + mar-signing-l10n-nl-win32-shippable/opt: GImUNX4mSSCzHBjPVtkHBw + mar-signing-l10n-nl-win64-aarch64-shippable/opt: GXEYDokxTiG8chNdjuX8mg + mar-signing-l10n-nl-win64-shippable/opt: BrvRogFLRy-G_YB155fo9Q + mar-signing-l10n-nn-NO-linux-shippable/opt: FcT5deFKRXCSPa4gL6E54w + mar-signing-l10n-nn-NO-linux64-shippable/opt: FiDBKBA6SFSQaLTSXfxLxw + mar-signing-l10n-nn-NO-macosx64-shippable/opt: DfbslwdMTLS4H8vsf-DKaQ + mar-signing-l10n-nn-NO-win32-shippable/opt: JcKaqkGCSsSwCWJP_xyiyQ + mar-signing-l10n-nn-NO-win64-aarch64-shippable/opt: Vt80qDx6T1uES1H7OtByRw + mar-signing-l10n-nn-NO-win64-shippable/opt: NwbEOYWiQjWfZ9MG04BxUQ + mar-signing-l10n-oc-linux-shippable/opt: EV7nuinRQZ26xGKnXDDFew + mar-signing-l10n-oc-linux64-shippable/opt: Gh7bV5yvQrCJ9AOGaEKNPw + mar-signing-l10n-oc-macosx64-shippable/opt: Xjp1QmhPRrS4wpUv8Jtcxw + mar-signing-l10n-oc-win32-shippable/opt: Bl-ygUdKR6qcZm8trRsNDA + mar-signing-l10n-oc-win64-aarch64-shippable/opt: GmWfHatmQKi5sUwvk8uepQ + mar-signing-l10n-oc-win64-shippable/opt: TZ6luJdIRDm5XJHZPoYhQQ + mar-signing-l10n-pa-IN-linux-shippable/opt: dXvlelT_T-a9tD5pwQUmxg + mar-signing-l10n-pa-IN-linux64-shippable/opt: RBhUeYV6QtKwbfx0D7omDQ + mar-signing-l10n-pa-IN-macosx64-shippable/opt: QePwTELgT9eMEvuLtm59uA + mar-signing-l10n-pa-IN-win32-shippable/opt: Pwjdo5jVTtiBR8eY9-RsHQ + mar-signing-l10n-pa-IN-win64-aarch64-shippable/opt: KxG3MTFmT56jq0O96qr7xA + mar-signing-l10n-pa-IN-win64-shippable/opt: Q9bDBuauQi-Ep2lezqGymw + mar-signing-l10n-pl-linux-shippable/opt: aAtZ-yFjT3W4NjOo57L4Ig + mar-signing-l10n-pl-linux64-shippable/opt: FmXsmPa_Q_2RaXHiXxuZeA + mar-signing-l10n-pl-macosx64-shippable/opt: VfVBqVl9RymFmX9vAVW0tQ + mar-signing-l10n-pl-win32-shippable/opt: Apt4kz3pQYO2RAiEsWa9fw + mar-signing-l10n-pl-win64-aarch64-shippable/opt: NOFRW32uR1yuHfIrHeoHMg + mar-signing-l10n-pl-win64-shippable/opt: ASKdQzeKQ0iXxXJgWJQEwA + mar-signing-l10n-pt-BR-linux-shippable/opt: AuWOdbzWT9y4AgRw7XC6_g + mar-signing-l10n-pt-BR-linux64-shippable/opt: VKPer7XNR8iFh_q8ShFnNg + mar-signing-l10n-pt-BR-macosx64-shippable/opt: ft4P7ZJ-R8SXUzbJtwaytQ + mar-signing-l10n-pt-BR-win32-shippable/opt: Mg-3eNuDQNiLjLsQlNb1iQ + mar-signing-l10n-pt-BR-win64-aarch64-shippable/opt: QTEgI5rtTuiYTI0wZzZ8fw + mar-signing-l10n-pt-BR-win64-shippable/opt: YobLvNm5ScyGSSJ8KtQ6fQ + mar-signing-l10n-pt-PT-linux-shippable/opt: ci3rUkfeQq2FTYQjCM3LHw + mar-signing-l10n-pt-PT-linux64-shippable/opt: EwAGWmZ_R0q2qeGmqz23bQ + mar-signing-l10n-pt-PT-macosx64-shippable/opt: VGH__z_0S9-JRX1_KbVtJQ + mar-signing-l10n-pt-PT-win32-shippable/opt: QVYYV5LMRy2FP62C9dPuCA + mar-signing-l10n-pt-PT-win64-aarch64-shippable/opt: Z28ioJDSSv23R6uSTPUAAw + mar-signing-l10n-pt-PT-win64-shippable/opt: CPsi59HERdCmfl7SVM6wcw + mar-signing-l10n-rm-linux-shippable/opt: S-zcqNwTTeCCqKb-use9Hg + mar-signing-l10n-rm-linux64-shippable/opt: JETQY34TRVel_7ejYCNklg + mar-signing-l10n-rm-macosx64-shippable/opt: AFXPzzfXQ0aEsNuScRBsMQ + mar-signing-l10n-rm-win32-shippable/opt: aAiBV_2VSAG2EXvL3b72Uw + mar-signing-l10n-rm-win64-aarch64-shippable/opt: WFVm0suhSs6umn9_Rz8uCA + mar-signing-l10n-rm-win64-shippable/opt: XGT11hlzQxWoTkNi1bK2kA + mar-signing-l10n-ro-linux-shippable/opt: U4-6gAnpS16-yrGWufauWg + mar-signing-l10n-ro-linux64-shippable/opt: JAZogr_JRBeKcIU1FChqOQ + mar-signing-l10n-ro-macosx64-shippable/opt: NFF31xJ2TVOlCAsfxAkrVQ + mar-signing-l10n-ro-win32-shippable/opt: WVdhf4OlSlmQ8A4UcwVSPA + mar-signing-l10n-ro-win64-aarch64-shippable/opt: OCvnXlG9Q5CzlKS-ORrr4w + mar-signing-l10n-ro-win64-shippable/opt: bcHmjkkjQKWH2JphLmOWMQ + mar-signing-l10n-ru-linux-shippable/opt: ZT0CG2ugR3O9EUg3xhHFyw + mar-signing-l10n-ru-linux64-shippable/opt: fUqcKAe2RkOFUq6_LgUTAw + mar-signing-l10n-ru-macosx64-shippable/opt: VZHUkpTuSEqAW8IYCZucwA + mar-signing-l10n-ru-win32-shippable/opt: Bw2aTbIXTgSz1Sft5Wvoeg + mar-signing-l10n-ru-win64-aarch64-shippable/opt: QPuAc7lHRUq3E7kC0TiLpQ + mar-signing-l10n-ru-win64-shippable/opt: JYLkM7ByS0Csu3Jgjn5nGw + mar-signing-l10n-sc-linux-shippable/opt: ZMXCNI21RcqK3UFdXd0B0A + mar-signing-l10n-sc-linux64-shippable/opt: R48T7OP-QMGDcpPIS3O0xA + mar-signing-l10n-sc-macosx64-shippable/opt: JBgt4OHISOGcQ1vA0JlG5Q + mar-signing-l10n-sc-win32-shippable/opt: BChDPolwQ6Kw7SD1EnbTSQ + mar-signing-l10n-sc-win64-aarch64-shippable/opt: TaEbMUXeSU217bFFy8Chig + mar-signing-l10n-sc-win64-shippable/opt: Bde4DW_RQuiQpMkGVlFyKQ + mar-signing-l10n-sco-linux-shippable/opt: BkJzaCRNT_uZmf3e5oENdw + mar-signing-l10n-sco-linux64-shippable/opt: BOriZ3aWTxKAwTfsMv-tAA + mar-signing-l10n-sco-macosx64-shippable/opt: Wf993IRaRtm0RbQSip7QbQ + mar-signing-l10n-sco-win32-shippable/opt: K2m0KRgpQiicVQMHaLQqMA + mar-signing-l10n-sco-win64-aarch64-shippable/opt: ezbzWu8tTDCRnJL7vG_g7Q + mar-signing-l10n-sco-win64-shippable/opt: ZzQEddjMRtmV9WiXg78cYw + mar-signing-l10n-si-linux-shippable/opt: Tz077tPeRKmZunqj3d85dA + mar-signing-l10n-si-linux64-shippable/opt: EZO6DPtATpu6uv7mvReW8g + mar-signing-l10n-si-macosx64-shippable/opt: LO5z6gwaT8Cr9uPmiVNz5A + mar-signing-l10n-si-win32-shippable/opt: eLJxATPgRx-BWiKF3Uvrgg + mar-signing-l10n-si-win64-aarch64-shippable/opt: PmEofRuHRiq-ZPX5IytAjw + mar-signing-l10n-si-win64-shippable/opt: NWb6ynv9RLui7sa6KXl88g + mar-signing-l10n-sk-linux-shippable/opt: AjAlMSsmSpWri0tQp-kZvg + mar-signing-l10n-sk-linux64-shippable/opt: OZ2kkAHXReScixDHTWwQZQ + mar-signing-l10n-sk-macosx64-shippable/opt: VEuH75n6RGKPw912YUiubA + mar-signing-l10n-sk-win32-shippable/opt: C7SCVTLTQDebVgWBLInQJw + mar-signing-l10n-sk-win64-aarch64-shippable/opt: b5daHkOzQTm7PFCieMBzuw + mar-signing-l10n-sk-win64-shippable/opt: fnLCC3mmQFq8s8riF86JYA + mar-signing-l10n-sl-linux-shippable/opt: O4NsoJuDQW2YU5ZWNyKcIg + mar-signing-l10n-sl-linux64-shippable/opt: RZbelLfLQCKZa5gUBi8CGA + mar-signing-l10n-sl-macosx64-shippable/opt: DRBCsluATnmKTxLS-K3kcQ + mar-signing-l10n-sl-win32-shippable/opt: AczuAefwSWiO7njHx9M0bA + mar-signing-l10n-sl-win64-aarch64-shippable/opt: EXjqAz_7RfCOpnm6Q079aQ + mar-signing-l10n-sl-win64-shippable/opt: HOb7vyI6SsGT4tIxZIgtlg + mar-signing-l10n-son-linux-shippable/opt: QqU-cuBQTQCsv0o0krIy2g + mar-signing-l10n-son-linux64-shippable/opt: OYxsITMeSheMtnO9ysZi8A + mar-signing-l10n-son-macosx64-shippable/opt: a9CcNClCS8ORFNYqNsUsjQ + mar-signing-l10n-son-win32-shippable/opt: cAVrGHN4Rz2OhebdMpr1rA + mar-signing-l10n-son-win64-aarch64-shippable/opt: BFMDzWn1SB2cW_INFwkKlg + mar-signing-l10n-son-win64-shippable/opt: JglJ_H8yQZaiI06PF9sBgw + mar-signing-l10n-sq-linux-shippable/opt: UZfYgMWcQAeISNq4Or_7eA + mar-signing-l10n-sq-linux64-shippable/opt: bDHBUA-IR66SiYWF637BNQ + mar-signing-l10n-sq-macosx64-shippable/opt: XmShfRLZSRGhoN05bAnoBQ + mar-signing-l10n-sq-win32-shippable/opt: EucW7KM1S2CoQRTQaYJFhg + mar-signing-l10n-sq-win64-aarch64-shippable/opt: fIvFKiNQTS2hS31U9MCfrA + mar-signing-l10n-sq-win64-shippable/opt: cRVsU3z4QpmaOyf-mlXo9w + mar-signing-l10n-sr-linux-shippable/opt: aMF6wRzAR0qDfc0ayVrSdw + mar-signing-l10n-sr-linux64-shippable/opt: ESnRQ7x9QEqb9rq9ISN4XQ + mar-signing-l10n-sr-macosx64-shippable/opt: GS6g9B7ZTjeeaTZ5PdmOyA + mar-signing-l10n-sr-win32-shippable/opt: FEyWSTklQJqT4xY0pAW2uw + mar-signing-l10n-sr-win64-aarch64-shippable/opt: XQ3nOS1ZTEOfiuPcUyRSxA + mar-signing-l10n-sr-win64-shippable/opt: JGLKAC-bR3GmRGp8_g2WYA + mar-signing-l10n-sv-SE-linux-shippable/opt: GKN0uyMOQAi6DtdAsf_ssg + mar-signing-l10n-sv-SE-linux64-shippable/opt: EWTajGYSRvmkVgEzjbdlYg + mar-signing-l10n-sv-SE-macosx64-shippable/opt: SeF5CnAoQ6ah9NkvO5WrbA + mar-signing-l10n-sv-SE-win32-shippable/opt: HyVk_M3WTauNRN59vl9Urw + mar-signing-l10n-sv-SE-win64-aarch64-shippable/opt: dPXEQ5APSPOyMtoSoRrpIw + mar-signing-l10n-sv-SE-win64-shippable/opt: PJINBvJOTO6zkkM6mtSgNQ + mar-signing-l10n-szl-linux-shippable/opt: ZJKkyTOgSnKtr4PY13BQxQ + mar-signing-l10n-szl-linux64-shippable/opt: abz4uGNcTYi89laLX1_PDQ + mar-signing-l10n-szl-macosx64-shippable/opt: EZt1ZOhMQCC8sk0cnku2mw + mar-signing-l10n-szl-win32-shippable/opt: GgzOsNdqQCm13cVNoPlVJg + mar-signing-l10n-szl-win64-aarch64-shippable/opt: LNls8MQKS-OGDYxHROL4sQ + mar-signing-l10n-szl-win64-shippable/opt: XIpCOeSGRdyxBIAkCzKOPg + mar-signing-l10n-ta-linux-shippable/opt: O_g8RaAATBOFGwRE_tqqpA + mar-signing-l10n-ta-linux64-shippable/opt: JjLe_vi3S660EdGuRMniEQ + mar-signing-l10n-ta-macosx64-shippable/opt: R26lXDSkTVOwAxMGX63gaw + mar-signing-l10n-ta-win32-shippable/opt: HMF9F1kpQ0O15DTbpFBxZA + mar-signing-l10n-ta-win64-aarch64-shippable/opt: eijnb5nlQKu00WEsCndUvg + mar-signing-l10n-ta-win64-shippable/opt: U5aFItY5SsWeXwoHLzDycw + mar-signing-l10n-te-linux-shippable/opt: bv68bLkaQz--Ma5H4V7PMA + mar-signing-l10n-te-linux64-shippable/opt: IYQ4oOaoTiGmawY9-uXtMQ + mar-signing-l10n-te-macosx64-shippable/opt: DGH6HF7LTZ62rYfDb41oiQ + mar-signing-l10n-te-win32-shippable/opt: J1ArAK3wS2CiLn3SVsx2xQ + mar-signing-l10n-te-win64-aarch64-shippable/opt: Hbo7vgeSSCS2tk7QITeACQ + mar-signing-l10n-te-win64-shippable/opt: DvS3iB9aSriG5NN90osrzQ + mar-signing-l10n-tg-linux-shippable/opt: Kzo50JdiTBaIvmnqmwhT0w + mar-signing-l10n-tg-linux64-shippable/opt: CkF3KD7mRVG2ritFawTgYw + mar-signing-l10n-tg-macosx64-shippable/opt: M4zZbZ9GTrqHjBK6DOzzMQ + mar-signing-l10n-tg-win32-shippable/opt: embHh-ocTda3RdxJDx3OEQ + mar-signing-l10n-tg-win64-aarch64-shippable/opt: QmqfyQ9BQwyOS-b9XpEvTg + mar-signing-l10n-tg-win64-shippable/opt: cuRtyOeSSt6Z1MF0B3A3uA + mar-signing-l10n-th-linux-shippable/opt: Fnj4ADI-SJOLiW3pI2NnRA + mar-signing-l10n-th-linux64-shippable/opt: N_xUx3WwQzqEHyJ3Y193fw + mar-signing-l10n-th-macosx64-shippable/opt: J9rFHW0DQMGgmr83u1v1cQ + mar-signing-l10n-th-win32-shippable/opt: Rs1ZFl_wTD2z1ASQblGGvg + mar-signing-l10n-th-win64-aarch64-shippable/opt: SzmDoHiySdem9ZFJq6xTJA + mar-signing-l10n-th-win64-shippable/opt: dcQV9GJeR-qVJgucj0dLtg + mar-signing-l10n-tl-linux-shippable/opt: ZXQpAnW5SouhwovQQe3vrg + mar-signing-l10n-tl-linux64-shippable/opt: WBJ78rRCRiyp2AkarkXVVg + mar-signing-l10n-tl-macosx64-shippable/opt: dSP0Ty51RH6lWg5aLvOVGQ + mar-signing-l10n-tl-win32-shippable/opt: VEPMFF6XRI2LEPlj7zxTzA + mar-signing-l10n-tl-win64-aarch64-shippable/opt: F58sAYv3QDKzGA1kozE16Q + mar-signing-l10n-tl-win64-shippable/opt: FSC-bpvWTLGWCyJZNip5bw + mar-signing-l10n-tr-linux-shippable/opt: PL98TanpQ3OJYw1hUrptIQ + mar-signing-l10n-tr-linux64-shippable/opt: CaJcWFKWQQazET0dYpXibA + mar-signing-l10n-tr-macosx64-shippable/opt: ddDN8PTzTS-70ACd6IlEzg + mar-signing-l10n-tr-win32-shippable/opt: DuXCG18FSiisFf12YI7nYQ + mar-signing-l10n-tr-win64-aarch64-shippable/opt: d3aGs_uASkuL-cfIw04lpg + mar-signing-l10n-tr-win64-shippable/opt: Pju1xI0LSNmpCxkyNRW6kg + mar-signing-l10n-trs-linux-shippable/opt: DSLYVWrHQwmzlDcV3uYVmw + mar-signing-l10n-trs-linux64-shippable/opt: KQQH7cCuSH2HlFCRV49xLw + mar-signing-l10n-trs-macosx64-shippable/opt: FR84UdVLTmiZ555o8n97AQ + mar-signing-l10n-trs-win32-shippable/opt: L9ZrgG22SqS_3jbkrUwm4w + mar-signing-l10n-trs-win64-aarch64-shippable/opt: ae_NNc7KRU-nrPkk1By78A + mar-signing-l10n-trs-win64-shippable/opt: NyXiTA4QQdmwDxS3a0e82Q + mar-signing-l10n-uk-linux-shippable/opt: XnJV8n3BS_2aVC7veeWHXA + mar-signing-l10n-uk-linux64-shippable/opt: Chjpsy3BQCqcbttKbV9plA + mar-signing-l10n-uk-macosx64-shippable/opt: BbkK5bC4RU68rbIs7DXJLg + mar-signing-l10n-uk-win32-shippable/opt: c3_lHHYKRwCBcoGd7JhH4Q + mar-signing-l10n-uk-win64-aarch64-shippable/opt: AcFc4FAUTlSyMwOGeHobPA + mar-signing-l10n-uk-win64-shippable/opt: eVYKQjfVTVySzbqkI3YUQg + mar-signing-l10n-ur-linux-shippable/opt: PFGfiexvS62RtyQmkBXsyQ + mar-signing-l10n-ur-linux64-shippable/opt: JxjCuHLSQ6mDDIMsahjXiA + mar-signing-l10n-ur-macosx64-shippable/opt: HshTxfDlR-qJsBTe5Scxzw + mar-signing-l10n-ur-win32-shippable/opt: Q3vJBgCmTPGAdy7hKElb9g + mar-signing-l10n-ur-win64-aarch64-shippable/opt: QKCo71dNTamLcW-zDQJ_AQ + mar-signing-l10n-ur-win64-shippable/opt: Ixorh7HlTEC13_GUWMAK4A + mar-signing-l10n-uz-linux-shippable/opt: Qag-J9FYTiua9tTcopOHEw + mar-signing-l10n-uz-linux64-shippable/opt: QZ83XNVtRYC-JQekakMr4w + mar-signing-l10n-uz-macosx64-shippable/opt: bUSLaYBYSvGmitr-Ok80Ig + mar-signing-l10n-uz-win32-shippable/opt: Jiw6kGCNT-WHiSgeSeiLbQ + mar-signing-l10n-uz-win64-aarch64-shippable/opt: Ouj1UIK8T-KznVEXbkypuA + mar-signing-l10n-uz-win64-shippable/opt: HrUu-CcPR0mA2qP7h_Be7g + mar-signing-l10n-vi-linux-shippable/opt: CQoKRia7Rlagpa9xdlff0A + mar-signing-l10n-vi-linux64-shippable/opt: Ig2EBrE9QeGNqL5ilIShoQ + mar-signing-l10n-vi-macosx64-shippable/opt: YzkQrwkERbyeScG9AtGOUg + mar-signing-l10n-vi-win32-shippable/opt: eOFTFRZHSLyDFU5x724CMQ + mar-signing-l10n-vi-win64-aarch64-shippable/opt: flnAWc90QzmadFp4IaPOiA + mar-signing-l10n-vi-win64-shippable/opt: esTb-l4lT3ORAapvCuFyQg + mar-signing-l10n-xh-linux-shippable/opt: eYADFaS3TlSPA26N6HIZzQ + mar-signing-l10n-xh-linux64-shippable/opt: TfeNIebBRcOmoBvy1qgCfA + mar-signing-l10n-xh-macosx64-shippable/opt: eU7OQrtfS1G3tBzGpjnWeA + mar-signing-l10n-xh-win32-shippable/opt: PltcKu0HTuifKV7w0qHmGw + mar-signing-l10n-xh-win64-aarch64-shippable/opt: bdh8m_sRSOuSE2ENZIRqvg + mar-signing-l10n-xh-win64-shippable/opt: NEjxTm4BRvaeAEa1tTgypg + mar-signing-l10n-zh-CN-linux-shippable/opt: YSXOuSr7So2ljxPVwaBTCw + mar-signing-l10n-zh-CN-linux64-shippable/opt: W6nAAaj7ROmbpH-6RPUUxw + mar-signing-l10n-zh-CN-macosx64-shippable/opt: ctBO7ORLRxeUFBz7hI8Prw + mar-signing-l10n-zh-CN-win32-shippable/opt: PyIo1QmmRVC9uUDdDDEb9A + mar-signing-l10n-zh-CN-win64-aarch64-shippable/opt: AP1GR8J5RXS09LmZmXn22A + mar-signing-l10n-zh-CN-win64-shippable/opt: VkMasa15Q56zuRtIZqyv8w + mar-signing-l10n-zh-TW-linux-shippable/opt: ctsz-xrnQVik2bHeQpfJGg + mar-signing-l10n-zh-TW-linux64-shippable/opt: Q4E787zYQs-Qzil7dilEpA + mar-signing-l10n-zh-TW-macosx64-shippable/opt: WieO6wnESNWNsxzxPlu-aQ + mar-signing-l10n-zh-TW-win32-shippable/opt: fbcINuqxSI-9SFzOHziDFA + mar-signing-l10n-zh-TW-win64-aarch64-shippable/opt: WOzLUJ-7QrSUY_4y5S01vg + mar-signing-l10n-zh-TW-win64-shippable/opt: M8niKqQXQEeF1cPe_mNg1Q + mar-signing-linux-shippable/opt: IaoSDltcRlKSrhaPLkAqJA + mar-signing-linux64-shippable/opt: chkmoU3kRnqML08pbywUKA + mar-signing-macosx64-shippable/opt: ENdJY7R7S5y-ON80k-dTeA + mar-signing-win32-shippable/opt: b5NPh0mPTQiRaHKxIrermw + mar-signing-win64-aarch64-shippable/opt: Du4O9lHJSVWhL0rG_hi6UQ + mar-signing-win64-shippable/opt: Jz367506SESQyTkndE7Tsg + packages-deb11-cmake: Uv8i0OZtQzm7oBj291Ke4Q + packages-deb11-mercurial: bP2b8fXaTmitAEtWUJmOyg + packages-deb11-python-zstandard: WOYJHh4rTpaZjYawCuSH4Q + packages-deb11-valgrind: bPcu-zKYTMO2kzwLWvEhuQ + packages-deb8-32-gcc-8: QcCs85N2RSS_C4xsxKoBLw + packages-deb8-gcc-8: RyJ7rDycSy2_eWStcLlrbg + packages-deb8-gtk3: dtS0lNFkRweVt7rK5hWSbQ + packages-ub18-32-libc6: X0n4kRzXRgCX-cntxtZtUQ + packages-ub18-libc6: QfYgqhnAR3icWQHfI-RQ3A + packages-ub18-mercurial: Dy2O5OZvTmSHL0eq7BFFXg + packages-ub18-python-psutil: CxcTlF6dRe2bu5ppxLpLdA + packages-ub18-python-zstandard: AqYNqjmTQuaMordsE2gqjQ + packages-ub20-mercurial: FgZinnq1TXSatmKOZfwY8Q + packages-ub20-python-zstandard: XGAqmtKBR2afSz5FFaccbA + partials-ach-linux-shippable/opt: KSLMhtbLS2OBC175yGiSSw + partials-ach-linux64-shippable/opt: RTZMz47YTnSIwwnpRhbVEg + partials-ach-macosx64-shippable/opt: LatDfQfVS8eF2vB0ZMJFEw + partials-ach-win32-shippable/opt: LuDDLEmDQU2iF-O5Jox7eQ + partials-ach-win64-aarch64-shippable/opt: Vs11uS3eTv-3PKmIlPVpTA + partials-ach-win64-shippable/opt: HQl-iJXzQHGmINVaplxFrQ + partials-af-linux-shippable/opt: TUpz4akETz2ZTlQjkCEVsQ + partials-af-linux64-shippable/opt: J6gul09nS8e_muF-0dPIrw + partials-af-macosx64-shippable/opt: LMNJOTMGRVKRYJbZZv5KIQ + partials-af-win32-shippable/opt: YJqXY_RtSPOhM7CGHbhBuA + partials-af-win64-aarch64-shippable/opt: YVCm3_MzQayV86hgXYHKwQ + partials-af-win64-shippable/opt: F-2zt6fXSceQAg87LvVilQ + partials-an-linux-shippable/opt: Odv7m3tYRyObdvojXRaW0Q + partials-an-linux64-shippable/opt: EYSme3JxTtmNeVW491NC9A + partials-an-macosx64-shippable/opt: dyqpO0DDSsevDZ0XtSFtMw + partials-an-win32-shippable/opt: dTBMn9zMRfK-y0f2PtSwPg + partials-an-win64-aarch64-shippable/opt: SWy7jxEuRuK6FgP2-ZMyng + partials-an-win64-shippable/opt: akjiTtYbTs-iGocU2XR5RA + partials-ar-linux-shippable/opt: Aq9ESFyFSEC7ZDs9uLyMXw + partials-ar-linux64-shippable/opt: JVjKxVXKSFyKa6Lgd9odLQ + partials-ar-macosx64-shippable/opt: eoX8n2r7SjuUPkc_uQ36FA + partials-ar-win32-shippable/opt: RhkAv75cS8yeseM7_bpKog + partials-ar-win64-aarch64-shippable/opt: RuuZ1yYuSzmz5Q48G6T3Jg + partials-ar-win64-shippable/opt: HYtqgHAmSAauHOGo71R5RQ + partials-ast-linux-shippable/opt: dWr0QvsGSyGrw42iOPnpHg + partials-ast-linux64-shippable/opt: XLWizy33RjGpKYmtbxiCXQ + partials-ast-macosx64-shippable/opt: cKXJWgtPQXm6Pq2njBLOqg + partials-ast-win32-shippable/opt: ebNZKjmURhaHtdDFfdyKAw + partials-ast-win64-aarch64-shippable/opt: Ai8hLqduQz-8OnILz_x5JA + partials-ast-win64-shippable/opt: SOElKvTLRQe1smF_dWokwA + partials-az-linux-shippable/opt: fffihILUS1--Nty9thSlQw + partials-az-linux64-shippable/opt: P-rC3y53SSimEYpSEdJ3BQ + partials-az-macosx64-shippable/opt: NnZ12C0SQPeIIv7qU0rL0g + partials-az-win32-shippable/opt: P_74BCNISbuJZKSLvDBi7Q + partials-az-win64-aarch64-shippable/opt: Qd8Qb5LtSY-biiSicV8R2g + partials-az-win64-shippable/opt: amtFlIYuSE6DNdmp8Hc0tg + partials-be-linux-shippable/opt: DJOW4mqJTyuZosZPjmmpbA + partials-be-linux64-shippable/opt: PufIHEZ0QSepQKCQMDK-gg + partials-be-macosx64-shippable/opt: BfnBDG7_QAKPMzH9L_QaUA + partials-be-win32-shippable/opt: Mv0f8apuQ1OnIS4u7uebgg + partials-be-win64-aarch64-shippable/opt: Jgygqy4FS1adVFXEwlR5bg + partials-be-win64-shippable/opt: MprfLYqgRVelNWDlEUm8fw + partials-bg-linux-shippable/opt: SSVOZ9odQlmboO_x2pi4AA + partials-bg-linux64-shippable/opt: b_qMerZxRh2_JoTmqJ1ezw + partials-bg-macosx64-shippable/opt: Dz69Oy_qRMCX3yfajjBftQ + partials-bg-win32-shippable/opt: I4AK_tuiRCWT2AklBk4SQQ + partials-bg-win64-aarch64-shippable/opt: AUQmxFM7RwWeZ2OeG3NCrA + partials-bg-win64-shippable/opt: AL-KDYD1TuONjRId8GePKg + partials-bn-linux-shippable/opt: aFLrHBeuRaWdtXJIftur4Q + partials-bn-linux64-shippable/opt: CI2iikn3Tf2WR_L42719DQ + partials-bn-macosx64-shippable/opt: Q0ReBawcT5mB-0cp9XEkiQ + partials-bn-win32-shippable/opt: DMpZcOe2Qku7f49VO6GaGw + partials-bn-win64-aarch64-shippable/opt: TG_ZZqBZTtCK_EqYyFzA7w + partials-bn-win64-shippable/opt: GeEV91kJTkGdHBq4O4Tt-g + partials-br-linux-shippable/opt: JHUIetnWRou8lBT9b4nxUA + partials-br-linux64-shippable/opt: MZBfLLhMT1Om_gt7tzPRQw + partials-br-macosx64-shippable/opt: ViT3R7t-TBKmt1IWHCNHNQ + partials-br-win32-shippable/opt: MekiHTGFQiKrFKUX9O63IA + partials-br-win64-aarch64-shippable/opt: QpDznFyjSkOK8XDPJjnL3A + partials-br-win64-shippable/opt: Fkp2G35TRcW31Q2Ekwfgog + partials-bs-linux-shippable/opt: Ve7kiB3MSuixwqULpbAV1A + partials-bs-linux64-shippable/opt: YWRHijlYRjKgVHJk8LtsFg + partials-bs-macosx64-shippable/opt: KYkeulmsQ9e8PABe1YyXFA + partials-bs-win32-shippable/opt: H6SGrbC2RhaytKzuQYhsog + partials-bs-win64-aarch64-shippable/opt: eKi-7m_oTFSVFUBuXUocGQ + partials-bs-win64-shippable/opt: Uume72smRj6frxpg66kYAQ + partials-ca-linux-shippable/opt: NpnjVJgbRfOLw3nDTWXBRQ + partials-ca-linux64-shippable/opt: BDMjxFMwQDycyQUj1han2A + partials-ca-macosx64-shippable/opt: YfW8of4jTHmUo3HzGniRsw + partials-ca-valencia-linux-shippable/opt: eoxrYwLgRJilEPfbEi29bA + partials-ca-valencia-linux64-shippable/opt: TN-Qz4jFSf6RMue0cutZJg + partials-ca-valencia-macosx64-shippable/opt: DZUkdn1US5KpsTjWbxY_jw + partials-ca-valencia-win32-shippable/opt: OuE5LcNoRJCOB0lnvcV0Ww + partials-ca-valencia-win64-aarch64-shippable/opt: RdhwaQeURru0kNxPA-Q5_Q + partials-ca-valencia-win64-shippable/opt: bQ4mD6kvSdKDvRRrRCGCDA + partials-ca-win32-shippable/opt: OvnKU6OhQziyHdAs9SNoOg + partials-ca-win64-aarch64-shippable/opt: Uw078rN4QY-5261XUE3Slg + partials-ca-win64-shippable/opt: BJzfmSMnQXW0qo5x3hLkoA + partials-cak-linux-shippable/opt: PSKazhcvSZW1IRTab47_4g + partials-cak-linux64-shippable/opt: DaKTCfZ5Q5SMkYmCEOM3Sw + partials-cak-macosx64-shippable/opt: Jo9K7o2PQSiMEbYapvQt9g + partials-cak-win32-shippable/opt: COj9y9h-RPSToyZ6v9KOJA + partials-cak-win64-aarch64-shippable/opt: EGsR6QQkT_qGoqvkyN9u-Q + partials-cak-win64-shippable/opt: FS71LMWJRpGlPeP94TuH_w + partials-cs-linux-shippable/opt: K-67Z2DIQQGvowwaAM6r_w + partials-cs-linux64-shippable/opt: WoeTSuU-RMGhvUkyMu4zfg + partials-cs-macosx64-shippable/opt: Eg1QlEclRGGV_ZQt5tWsag + partials-cs-win32-shippable/opt: JtmeCgNCTq-2_twmoJqJ4w + partials-cs-win64-aarch64-shippable/opt: JCy2X3UlSUmmJ9Gl3VGt6A + partials-cs-win64-shippable/opt: e11FZsYZTxuLJp0kMoSSbA + partials-cy-linux-shippable/opt: Hdl94TIaSzSCkh2mZmtdcg + partials-cy-linux64-shippable/opt: Km2yCa1IQYmmpoZLStmgbg + partials-cy-macosx64-shippable/opt: X_hlcTzfS06i3jkVWLq8Kg + partials-cy-win32-shippable/opt: ccgNQP5rTl2ePwUKvMYygA + partials-cy-win64-aarch64-shippable/opt: NmzdrLyzQDSVts8HXhcAnA + partials-cy-win64-shippable/opt: LhaJAb_WS6SF4MC4z1y4FQ + partials-da-linux-shippable/opt: bHkjnYt2QZ2gY8Ct-eFz8Q + partials-da-linux64-shippable/opt: WJ7es6UxSmaDoldDvG__zQ + partials-da-macosx64-shippable/opt: fqopq-UxTfS5qZJv_-ZxTw + partials-da-win32-shippable/opt: ANpaqGNKSW-goXkjV9S12A + partials-da-win64-aarch64-shippable/opt: agco4dwTRUK8Xw4lbceypA + partials-da-win64-shippable/opt: ShauaRZfSrSxoYrDcHXqNA + partials-de-linux-shippable/opt: Jv7M2o0mRrWck2fGYY9AGg + partials-de-linux64-shippable/opt: KBc06laXRY2zW1eAmQNuTw + partials-de-macosx64-shippable/opt: EG5B-57kRh2GCQrx6W-qJg + partials-de-win32-shippable/opt: DTfLt1SyShK--2zZt1LIGg + partials-de-win64-aarch64-shippable/opt: KRSqbebDQ92BxxX-oKhQpA + partials-de-win64-shippable/opt: HhiqImoaQj2hs98lsP-NNg + partials-dsb-linux-shippable/opt: X6lg_hKzQra6qBD-LSUgQw + partials-dsb-linux64-shippable/opt: BjvZrJcOQMW-qLkogCa9wg + partials-dsb-macosx64-shippable/opt: DYBJ2_yEQ-Ct3ecTnPxHzA + partials-dsb-win32-shippable/opt: BGIboXKjToWjjd_KVMxGPA + partials-dsb-win64-aarch64-shippable/opt: a-JmrF3xTNCEXuW8BAOdJg + partials-dsb-win64-shippable/opt: QopdFm_uRLKZzez5fg5lRw + partials-el-linux-shippable/opt: Y-GMIZzxTmiRv5bnC2I-AA + partials-el-linux64-shippable/opt: TN15RG5rTc2Az2UYBUVE1g + partials-el-macosx64-shippable/opt: elV8Aw5nS7S4QZynYirVNw + partials-el-win32-shippable/opt: MHPUMavcQ0OVboOKdZNpSw + partials-el-win64-aarch64-shippable/opt: cfW31-hZRHOG0rH4BdIvFQ + partials-el-win64-shippable/opt: HomZb4rOQWKpnUYri8tEBQ + partials-en-CA-linux-shippable/opt: PIrcrB4IS8G4sjUQbSSxjQ + partials-en-CA-linux64-shippable/opt: c3OyUrYWTq67tqtZTxmLWw + partials-en-CA-macosx64-shippable/opt: GUsmfpvvR8GbDzV_EfR9KA + partials-en-CA-win32-shippable/opt: cPH5vSA0QJyzK3TZBQHoBg + partials-en-CA-win64-aarch64-shippable/opt: UuCYK-k0Qhm7BYNef07pTA + partials-en-CA-win64-shippable/opt: QvfigFwxQ5a9PpSYvLWd4g + partials-en-GB-linux-shippable/opt: JbZA68c8RhSqDw9mFAggrw + partials-en-GB-linux64-shippable/opt: QM7GfJY2S4WNPO2WV7KOnQ + partials-en-GB-macosx64-shippable/opt: dQ9jpbCRQV-56bM3WCNMfw + partials-en-GB-win32-shippable/opt: fcizPsB2Qg2Qhpjnk0HeTg + partials-en-GB-win64-aarch64-shippable/opt: cH8vq8-TTNCyT39p6p8TDg + partials-en-GB-win64-shippable/opt: IgduvthZQKyZrlAn9ejK9Q + partials-eo-linux-shippable/opt: Q6IiUkWmSS-tLPeD9sPjUw + partials-eo-linux64-shippable/opt: Bx0gzfQjTieK98aAnZUleg + partials-eo-macosx64-shippable/opt: BrgIUEAwS1uWpHOFQ4kVqg + partials-eo-win32-shippable/opt: PjtFmbuKTEOpYbHB7VGpFA + partials-eo-win64-aarch64-shippable/opt: WA9zlhXzQSejyg6vZdkCVQ + partials-eo-win64-shippable/opt: AybXi3zwTuWdNapntTk0FA + partials-es-AR-linux-shippable/opt: NFyTDc1aT_SSQJdWMnmMbw + partials-es-AR-linux64-shippable/opt: LJf5LVzzSJOPR1MDv6_Ivg + partials-es-AR-macosx64-shippable/opt: RmSLi6-tQ6y2-X6wEpG5Xg + partials-es-AR-win32-shippable/opt: VaA6RK94TXmpiFinVYkvxw + partials-es-AR-win64-aarch64-shippable/opt: MH-vbWxPRYKxgyY_118JRg + partials-es-AR-win64-shippable/opt: ZM6PK1CfSf2LolOmZ-M29A + partials-es-CL-linux-shippable/opt: PZRjU__ZR6-P5HKSu2ymmQ + partials-es-CL-linux64-shippable/opt: BzjYsGmHStafKQQZDmJjOA + partials-es-CL-macosx64-shippable/opt: XpUReuJRSliZhT0-c50-Vw + partials-es-CL-win32-shippable/opt: Y2u45wHQTIq9-01NJIj9kA + partials-es-CL-win64-aarch64-shippable/opt: Bkr_0DlFRN-zcIFGULRBUw + partials-es-CL-win64-shippable/opt: T2GQF6-fQDqB8ezfCwMwPQ + partials-es-ES-linux-shippable/opt: UcF-UTAhROytdq1de1Kpqw + partials-es-ES-linux64-shippable/opt: LDne_4ZWRP-sI_e05v308w + partials-es-ES-macosx64-shippable/opt: NarfnaVXT0Sh7gbedj8KJA + partials-es-ES-win32-shippable/opt: LzWh8XtdRACXwcm3vfeTzA + partials-es-ES-win64-aarch64-shippable/opt: akQoR7D4RkO8ZQPmVsT9gw + partials-es-ES-win64-shippable/opt: UXTNn6LfRK-bCF8dYdo-Qg + partials-es-MX-linux-shippable/opt: RtN3aZ8URUKQ9_G6LiC2PQ + partials-es-MX-linux64-shippable/opt: QSyuRnuQR2GBdRwwU_NJ_g + partials-es-MX-macosx64-shippable/opt: ZOrDBGYCR7WEZM35IRDfJg + partials-es-MX-win32-shippable/opt: bnQPrNuGScahGM0GNnyTzQ + partials-es-MX-win64-aarch64-shippable/opt: B4LUuYKORv6oxAEXkJreIA + partials-es-MX-win64-shippable/opt: FqwdofMZQ1SjM3kv65M3VQ + partials-et-linux-shippable/opt: KAlmNiR9T2qiSPSWmpD6Lg + partials-et-linux64-shippable/opt: f6ATvadNTxuOygDKGExMQA + partials-et-macosx64-shippable/opt: E_VU5YI9SSK4APK496kxeg + partials-et-win32-shippable/opt: FbTVWOkkQFe8UvYXDfqdxQ + partials-et-win64-aarch64-shippable/opt: dwJutsueQ2Kx-_rhTz297Q + partials-et-win64-shippable/opt: aGR87hnpTfqn6ToSngcdcw + partials-eu-linux-shippable/opt: UrZHCaosQ66GvXPrY7DhZg + partials-eu-linux64-shippable/opt: GuYa74hUSMuJnwInlw4LFg + partials-eu-macosx64-shippable/opt: FToqQqokR6KXcSGQtgriog + partials-eu-win32-shippable/opt: R3J4CNAdRHqd6WELR9gGyA + partials-eu-win64-aarch64-shippable/opt: Sin4QALRRUe1OH5MHaDgHg + partials-eu-win64-shippable/opt: MrMineiNQyi_mCL8BlMa6g + partials-fa-linux-shippable/opt: T_-GJtmXTom9xwYLcqo9tg + partials-fa-linux64-shippable/opt: XZItVVT3RsuZ2tX4f3HU_Q + partials-fa-macosx64-shippable/opt: aUN7CMZySfO1UpD2fK8dkw + partials-fa-win32-shippable/opt: JNeX6Xj5SWO2kgSmosJgAw + partials-fa-win64-aarch64-shippable/opt: ebcPpzXrQHukK4GURHorDQ + partials-fa-win64-shippable/opt: P0mxQm3JS7Su1vpAL1oE_g + partials-ff-linux-shippable/opt: fn6svlvORxmzuylrwxUnNA + partials-ff-linux64-shippable/opt: d1DJTJOFTlGN-G7z2cdv0g + partials-ff-macosx64-shippable/opt: SVUAsOyERra8i1g_qc4QAQ + partials-ff-win32-shippable/opt: Ca5hL66wTGqhcSD_Ge7d0A + partials-ff-win64-aarch64-shippable/opt: GtjYk6D3S-uCwG4wOWbfrQ + partials-ff-win64-shippable/opt: I5TzcsxmTz6LP3GoxiVFww + partials-fi-linux-shippable/opt: d8Fd9apiS1G8-iSva5p9SQ + partials-fi-linux64-shippable/opt: MQeGu5epThG5lik0MrRwBg + partials-fi-macosx64-shippable/opt: AGj1g1NYQR-AWSMsbt7TNw + partials-fi-win32-shippable/opt: UFXSe_PISGOYylgs_n4LpA + partials-fi-win64-aarch64-shippable/opt: OAdB5oo0S12TUxuffWZC9g + partials-fi-win64-shippable/opt: CD5jgDRORkG-17fm80XftQ + partials-fr-linux-shippable/opt: OQceSW88QfCQQWUaESYKgQ + partials-fr-linux64-shippable/opt: Z3NUah-zSBmR7yqniq51rA + partials-fr-macosx64-shippable/opt: Cadvw3ILQmWnkSScQ2KA1w + partials-fr-win32-shippable/opt: PYprJEcERXu1wnK0mcx0yw + partials-fr-win64-aarch64-shippable/opt: D3gBx6xsTSmyHw1qrxFgcQ + partials-fr-win64-shippable/opt: XiCUF3vMQ_mFfXSe5CBVyw + partials-fur-linux-shippable/opt: KHLphfI7SeWUG70VEfYzXQ + partials-fur-linux64-shippable/opt: c3HlCceRSJK3YiFE1ENjuA + partials-fur-macosx64-shippable/opt: Z6bl21EJQKWfSqO65Ut8ew + partials-fur-win32-shippable/opt: C6D7nuS0TNWxFLy8hH4mLw + partials-fur-win64-aarch64-shippable/opt: axB4m89xSmq0oUjjIXb0sA + partials-fur-win64-shippable/opt: PCxv1b9rQG-6pMnnGB9z_w + partials-fy-NL-linux-shippable/opt: EcHRQYpfRrOlRqlr3QMzKA + partials-fy-NL-linux64-shippable/opt: Ucdb1IU6RG62tLkmE59XAg + partials-fy-NL-macosx64-shippable/opt: WVWOEOfDRRGr0lNnOofd0A + partials-fy-NL-win32-shippable/opt: WXLoDR1EQPORy3wdTahI3A + partials-fy-NL-win64-aarch64-shippable/opt: WHT3JsHITZ6xSpIte5A8Fw + partials-fy-NL-win64-shippable/opt: GwDGDY8YTe2FfJXN6pcSQA + partials-ga-IE-linux-shippable/opt: T69Ug3vuSNalfPgy4chp9Q + partials-ga-IE-linux64-shippable/opt: UiLKLZnrRzqzTHpiArXFCQ + partials-ga-IE-macosx64-shippable/opt: FvgtKjzRReiCSzaD_L0f6w + partials-ga-IE-win32-shippable/opt: WFbjnMwKQbKrPF3UcVS5Og + partials-ga-IE-win64-aarch64-shippable/opt: fM-0OI48ScmkqoKABa4Nqg + partials-ga-IE-win64-shippable/opt: eg2xCDfXR1yekJY-MyXj7g + partials-gd-linux-shippable/opt: eWlOI9LxTtm_gaqh6wKIog + partials-gd-linux64-shippable/opt: bZMv1n5-Tf-3pas-bZT15Q + partials-gd-macosx64-shippable/opt: LQKdt26sT-Kd-gDnLinHmg + partials-gd-win32-shippable/opt: aOCorgHJRZW9vw3BX8ISPg + partials-gd-win64-aarch64-shippable/opt: dOgiJa4uQkamibIgyESNuA + partials-gd-win64-shippable/opt: GdN9rUyoRNuXrhqRFp67Yg + partials-gl-linux-shippable/opt: G4_mkjsgTt6uWmyk38GqJQ + partials-gl-linux64-shippable/opt: GqcKilPXScyeYHWte55jTA + partials-gl-macosx64-shippable/opt: eQ6EhjANTauFyGL39jQkjQ + partials-gl-win32-shippable/opt: dYZxQmAXQZqK-sPYrB7QNQ + partials-gl-win64-aarch64-shippable/opt: Ba87cxQUTb-onpkoBSA1Ug + partials-gl-win64-shippable/opt: OCim3MBVTl6_Cx4UoRwD9A + partials-gn-linux-shippable/opt: X10LQ7eZSBCsutbZjqUJMw + partials-gn-linux64-shippable/opt: dqqQviW6Qta59kJVH2F2DA + partials-gn-macosx64-shippable/opt: DtPv_nXFT5ixQ5hm6jCOrA + partials-gn-win32-shippable/opt: ciRf9ot7RA-EbjgUPb0HVg + partials-gn-win64-aarch64-shippable/opt: MyI6q_gcQDWYT1j0fhd1Ow + partials-gn-win64-shippable/opt: Sjw6zqWVQNuHX361_l89vw + partials-gu-IN-linux-shippable/opt: OFtuSgYuT7unMyiaU1LKiQ + partials-gu-IN-linux64-shippable/opt: WrmqswPFTxKQacokCmSuTg + partials-gu-IN-macosx64-shippable/opt: beIIV2C5RXOUD7S1RnNX0A + partials-gu-IN-win32-shippable/opt: Z5G1is7bQ4eH3hK6Ll35Vw + partials-gu-IN-win64-aarch64-shippable/opt: BM_72czsTraxwZ9UhkssrA + partials-gu-IN-win64-shippable/opt: EShJirLkQUSEihCuOJ1ZiQ + partials-he-linux-shippable/opt: JCShCDUASu6ht7BXvKNYSg + partials-he-linux64-shippable/opt: KyLN-uB0RuCOATShryegjQ + partials-he-macosx64-shippable/opt: bSWi_yc_R9-T_XBtc-UJCQ + partials-he-win32-shippable/opt: H5peEjWGSbWPnGJOOgbbIQ + partials-he-win64-aarch64-shippable/opt: dcrIn-P4R4yG2lV1i0S8Ww + partials-he-win64-shippable/opt: LNqcACbxTjyusEehgbIgcA + partials-hi-IN-linux-shippable/opt: R9qeDVcVR1ukuB4R-_Xnvw + partials-hi-IN-linux64-shippable/opt: e-kvNSFERjCmQFwIqRf84A + partials-hi-IN-macosx64-shippable/opt: GrTK6_fsSaqZyzsuKF07hg + partials-hi-IN-win32-shippable/opt: SSOZcTsfTJm7YWP6gV8Tig + partials-hi-IN-win64-aarch64-shippable/opt: bTOMg3FzSJO_jBuKV0BlHw + partials-hi-IN-win64-shippable/opt: BlkIF6zsRES010LL77LP0A + partials-hr-linux-shippable/opt: Ky29gH_xR36HcdisWUVEYA + partials-hr-linux64-shippable/opt: T49-3ebST-SX29XLne61Kg + partials-hr-macosx64-shippable/opt: as3synLyTs2Gp5Toq_JYjw + partials-hr-win32-shippable/opt: Hjiu9ukYQky2ysaYjw9k3w + partials-hr-win64-aarch64-shippable/opt: WIrQT0kmSKmqGhSlQ3Sviw + partials-hr-win64-shippable/opt: WFS-7VMGQ0OsMnA7HHigvw + partials-hsb-linux-shippable/opt: BQt_dDINQHO45gPFsNgFCA + partials-hsb-linux64-shippable/opt: SQ2uXaKeQQ2pEeBsvzE0Qw + partials-hsb-macosx64-shippable/opt: JnUbITpCSBybStzZI4O0Qw + partials-hsb-win32-shippable/opt: TiunSDKbQdaANiRN4oEqgA + partials-hsb-win64-aarch64-shippable/opt: P-yf6yxETFGXj15QqBCJQw + partials-hsb-win64-shippable/opt: ElAuaFEhQJS_ze-CKD98kg + partials-hu-linux-shippable/opt: WjsLoHEVQ1WPDbAHLOCJgw + partials-hu-linux64-shippable/opt: EirznRm-SmOXG-kG3euQkw + partials-hu-macosx64-shippable/opt: N-QBpOXdRg2tXL0lnIRTNQ + partials-hu-win32-shippable/opt: Twzna3HsTvK2uWAVnm_jJw + partials-hu-win64-aarch64-shippable/opt: WbsBSdU4RcueThajwWTtcg + partials-hu-win64-shippable/opt: YfpMykBFS76mm0AYdjv7-w + partials-hy-AM-linux-shippable/opt: Jn2sSB1kRCCQ4cHJP1XPpA + partials-hy-AM-linux64-shippable/opt: MPf5ci7PSR-yZWAhO46jMA + partials-hy-AM-macosx64-shippable/opt: VdStV2M0TBeWfVNrljeUKQ + partials-hy-AM-win32-shippable/opt: S_E6MfMgQ7GEsqsn2-AR0Q + partials-hy-AM-win64-aarch64-shippable/opt: TB5gO5HmSli6P_pPk-4yMQ + partials-hy-AM-win64-shippable/opt: OKn5YtN0RCq0_aOIYt6LdA + partials-ia-linux-shippable/opt: NlmDeFa-T_WDQxtSf3pkfA + partials-ia-linux64-shippable/opt: X2-pJxFZRc6RJ4ceg1yLDw + partials-ia-macosx64-shippable/opt: FeFtQcEOQquw4m_1DIs0DQ + partials-ia-win32-shippable/opt: LXORW7PRSCWwo6igWVZn_A + partials-ia-win64-aarch64-shippable/opt: AjH4Z6DvQEmc4n_PE5C9ww + partials-ia-win64-shippable/opt: WjhPEWEQQMyhttzWhBoWCw + partials-id-linux-shippable/opt: XBsOE7moRguQvJLIBa2yPA + partials-id-linux64-shippable/opt: Ef0oAMAYQuCM7YW67h5u7A + partials-id-macosx64-shippable/opt: SjcNS_htQN-Bv1Oi4pVWqw + partials-id-win32-shippable/opt: YSxkG_AiSPWfxdTbN17XEQ + partials-id-win64-aarch64-shippable/opt: Lwcjjsv6QRGBHmIFM3Q2rA + partials-id-win64-shippable/opt: eM6JTZDATsOynLLmSDA2eg + partials-is-linux-shippable/opt: Q140QIAxRBCyLOkc-Q0U2Q + partials-is-linux64-shippable/opt: O-1oRtB9Tz2wPWVR7SFIPg + partials-is-macosx64-shippable/opt: HSzWAsK_Rqeb7sYoE8x26w + partials-is-win32-shippable/opt: M3jJ6UztQumtsukFr0hjlA + partials-is-win64-aarch64-shippable/opt: AWmruGRGQi6OcROoRKY37A + partials-is-win64-shippable/opt: Of0y_rTjQqGcMzzKbKXVOA + partials-it-linux-shippable/opt: CwC0QYTsQkCy80P2rzRGDA + partials-it-linux64-shippable/opt: cgdMXds4SAC3J6gSRe6O6g + partials-it-macosx64-shippable/opt: HWiu990eTViXxofhmCe9Nw + partials-it-win32-shippable/opt: L3jxGg6zQgeRTUEYtgzCzA + partials-it-win64-aarch64-shippable/opt: CTPardNbQ7OH0Xo7GvooLw + partials-it-win64-shippable/opt: V1daf9ihS3u89hZLWVk5CQ + partials-ja-JP-mac-macosx64-shippable/opt: Ja6_v2CcTs-RrpL0z1q3lw + partials-ja-linux-shippable/opt: c3oY5Q9ARr232jRPIfnLoA + partials-ja-linux64-shippable/opt: cJ-Qmau3T1qA4wvaT7H8JQ + partials-ja-win32-shippable/opt: bbsNNWCKQLq7oI3tYO2ypg + partials-ja-win64-aarch64-shippable/opt: SCQuwIzYRLCAb4XM_-20rQ + partials-ja-win64-shippable/opt: FuW6kaexSKu0o2UNUxP2Mg + partials-ka-linux-shippable/opt: Aa-Vp2CFQRCIMdGs-DthlA + partials-ka-linux64-shippable/opt: eJNRK12CRzGiWFNQdALE3A + partials-ka-macosx64-shippable/opt: ViBoC9xkQFmJxqit2LsHeQ + partials-ka-win32-shippable/opt: IjYNiY02SB2xeFP4Qhl5SQ + partials-ka-win64-aarch64-shippable/opt: A_IjG6IsS1iFMWY9yHD_iQ + partials-ka-win64-shippable/opt: Jpcx1nI-S0qmZcXdlAnhYw + partials-kab-linux-shippable/opt: MnhCCGp2ROW9st66jXV2eA + partials-kab-linux64-shippable/opt: P4HT9QPITw6kg1Z2-dQDyg + partials-kab-macosx64-shippable/opt: Fr8RLqKbRXm5eOU6mcfoag + partials-kab-win32-shippable/opt: PkepuUzYRsynelGSEByNZw + partials-kab-win64-aarch64-shippable/opt: WNOcgF6ARQ2-44JwvtnZWg + partials-kab-win64-shippable/opt: OHDtrlduS--l2wnScvhyAQ + partials-kk-linux-shippable/opt: N-vox0wTQl6dcFu3vOaH_Q + partials-kk-linux64-shippable/opt: BAjcgr3YSyOQPRm1q-4D_Q + partials-kk-macosx64-shippable/opt: ElJxq3G-RwmZkYiHtrwWBw + partials-kk-win32-shippable/opt: SN4OIGmTS9if9PEPAOtONQ + partials-kk-win64-aarch64-shippable/opt: PC3EjDKqT0aT2kWVd1XS0Q + partials-kk-win64-shippable/opt: LDNSvrfVTkmOO8Me8ZvpRQ + partials-km-linux-shippable/opt: Xn3bVMoeRpuuFs5BVcunVg + partials-km-linux64-shippable/opt: W3Yd0MmpRmOr2V5oH24rHw + partials-km-macosx64-shippable/opt: TEqY0oakS3WO-Wmsr6takA + partials-km-win32-shippable/opt: BQnefVU_RYSXH9tJBdqluQ + partials-km-win64-aarch64-shippable/opt: Sb9j_e0rRWqi4HVbhB-Nzg + partials-km-win64-shippable/opt: Hmu0yev0RqKP2PTYcgBibw + partials-kn-linux-shippable/opt: bPhQ_e81RVO6-enNQ5PVRw + partials-kn-linux64-shippable/opt: feTwTKkGRWqSxChBiSOxWg + partials-kn-macosx64-shippable/opt: JRlOplO5RfaiKpCsil0LTQ + partials-kn-win32-shippable/opt: OP6urlzLRGeQ28OAU-0kHQ + partials-kn-win64-aarch64-shippable/opt: Az2DIK6mT7iBDoOlN30Gfw + partials-kn-win64-shippable/opt: E6aSmpVpQU-5_d7bAaW0yg + partials-ko-linux-shippable/opt: NVdDJ54aSE-TnqxIrX4Jsg + partials-ko-linux64-shippable/opt: SGhaWxfzR1iilAPbCdVI8g + partials-ko-macosx64-shippable/opt: PNgO0p9oQ6ygLathj_wQ9Q + partials-ko-win32-shippable/opt: Di9wag5bTsuBjtyuFpaiMw + partials-ko-win64-aarch64-shippable/opt: HtJRCpm9ScyTi6r5I53x4A + partials-ko-win64-shippable/opt: HY9YwI75SGOzyaFrcR8uXA + partials-lij-linux-shippable/opt: b_LRUl3KRNyhNTOQ9XklVQ + partials-lij-linux64-shippable/opt: UUEY9EtMTnacX5f9RxJB2A + partials-lij-macosx64-shippable/opt: Vzx9D1P7SVm5UOAid3Kntw + partials-lij-win32-shippable/opt: CH1clj9oS--rLPowY7JOGw + partials-lij-win64-aarch64-shippable/opt: MkSbz-h0QzKkHK2hWRs_6Q + partials-lij-win64-shippable/opt: ZMhWH_USTnSyHE5mHHtb0A + partials-linux-shippable/opt: c37poFLFTiOClVoZTr4KaA + partials-linux64-shippable/opt: d9TS2z9GTkuef-rUWBkEdg + partials-lt-linux-shippable/opt: KCkbwEkEQ3S90q108H9Wkw + partials-lt-linux64-shippable/opt: c--3WYEZRaSmPoOaXKoR7A + partials-lt-macosx64-shippable/opt: AQsewLqpSbO0a1jcyiXZ9g + partials-lt-win32-shippable/opt: PHZN1Ee_RzqPz3VD2WqWAQ + partials-lt-win64-aarch64-shippable/opt: NonULTrjQVSKRD8omCGntg + partials-lt-win64-shippable/opt: DyRPrbz5SLGtfhgAYJJh5g + partials-lv-linux-shippable/opt: Z8PfmW6zTHmIofOLFxlYkA + partials-lv-linux64-shippable/opt: c0Tn9EIHRmWj9KohbqieMg + partials-lv-macosx64-shippable/opt: NFXckeitScejAnRR8kUtBw + partials-lv-win32-shippable/opt: YUhGEbSqQaGiyRBnSqHf8g + partials-lv-win64-aarch64-shippable/opt: LiHhWfNgTNqr24e_jRuvUQ + partials-lv-win64-shippable/opt: EcwhS_NKTnSmEsfaAetJxw + partials-macosx64-shippable/opt: QHmy0bK4TlqDW6yANRjXcA + partials-mk-linux-shippable/opt: BI9SZzOcRNuRoaZa7hZQpg + partials-mk-linux64-shippable/opt: NXOB3c-0SHCqqKm1yvYDSQ + partials-mk-macosx64-shippable/opt: N0mdTYe2Q5islkIJY-vCDQ + partials-mk-win32-shippable/opt: b_gAsOirTF-MNdRwbI9_UA + partials-mk-win64-aarch64-shippable/opt: fVeICi33SSuTRKnj65y5Bg + partials-mk-win64-shippable/opt: T60tAwwPReSYoKfgPYJt7w + partials-mr-linux-shippable/opt: btG-8_PmSfWBJV7qsJ_DXg + partials-mr-linux64-shippable/opt: ZYZ9QBWURZqlCBaVljKMXA + partials-mr-macosx64-shippable/opt: KPTVZk4ATtG6c7ILFVDGgg + partials-mr-win32-shippable/opt: AiaaFJXNR7GoFg3OBKDRFQ + partials-mr-win64-aarch64-shippable/opt: diS2VsJ5RZaTDu59o5D_7w + partials-mr-win64-shippable/opt: WE2My0bXSbaC8HWuGrYPZQ + partials-ms-linux-shippable/opt: FtOUZaMjT5ey-bjTqU7abw + partials-ms-linux64-shippable/opt: TxodVU-4RKG31jhWXHLnbA + partials-ms-macosx64-shippable/opt: EeOTlwEIR5CflN_sZ9ZLgw + partials-ms-win32-shippable/opt: TVA80SC1TFegt6KPNs4vuA + partials-ms-win64-aarch64-shippable/opt: eVHagxagTsKQvvqJNAuxxA + partials-ms-win64-shippable/opt: CATmMIFxQgup6OQxATw-Kg + partials-my-linux-shippable/opt: Xf_8ZpzbRIG_Jd40prPQFQ + partials-my-linux64-shippable/opt: SEte8-fdQsywQ3us4UD6WA + partials-my-macosx64-shippable/opt: OgTtpcYYSZS7nzKEv8_61Q + partials-my-win32-shippable/opt: Yud3pDx6S5iz1HOM0cIKZw + partials-my-win64-aarch64-shippable/opt: cE-xY18VT7qCKU0S-NnMLw + partials-my-win64-shippable/opt: bReCTwZ9S568BW_e-qYFug + partials-nb-NO-linux-shippable/opt: LfGYp1l8TFuLAARv__HLcw + partials-nb-NO-linux64-shippable/opt: XuAHgolDSNSAq-YajvxClA + partials-nb-NO-macosx64-shippable/opt: P7ei7IBBQzSXOap1_wOi3A + partials-nb-NO-win32-shippable/opt: eZjcDsIIQh6ickI2wAo_mg + partials-nb-NO-win64-aarch64-shippable/opt: C-syvLORQ6uk4nVo_88L8Q + partials-nb-NO-win64-shippable/opt: P5wuvO5STKGZX28FxkUjkw + partials-ne-NP-linux-shippable/opt: IMwEN0lESpqvmnUfPDotfg + partials-ne-NP-linux64-shippable/opt: el8f_q1nTtGJyONiG1X7lg + partials-ne-NP-macosx64-shippable/opt: UGTCSn5mRVGR52hezX83yw + partials-ne-NP-win32-shippable/opt: YjkhV-7-TiivYuuF0jO6pA + partials-ne-NP-win64-aarch64-shippable/opt: P4qlgmUwSG-QMGCPAkLbaw + partials-ne-NP-win64-shippable/opt: V7Bcc32zR5C6SGi-Yi-gZw + partials-nl-linux-shippable/opt: EFFGGP1JTtiINDy7OI-JYQ + partials-nl-linux64-shippable/opt: U8HVO5d6Ska2Hvtx5lc1Lg + partials-nl-macosx64-shippable/opt: S0H6lnsMQbGnHlA1KFZztQ + partials-nl-win32-shippable/opt: JE0k9JpoSU6FJWxreCbCIA + partials-nl-win64-aarch64-shippable/opt: ROZFmBUIRGGetHDOi3Tzvw + partials-nl-win64-shippable/opt: duyFpvvoTm-AJsnL2m-MqA + partials-nn-NO-linux-shippable/opt: PiQBSKwRTPuF4mlGRX0TVw + partials-nn-NO-linux64-shippable/opt: DpkD8wM9T7etAXs78LGxBg + partials-nn-NO-macosx64-shippable/opt: I32Ml5R1Q2aGqm7MTCsbwg + partials-nn-NO-win32-shippable/opt: RKEcwlEqTtirrdiU8l5WIg + partials-nn-NO-win64-aarch64-shippable/opt: Nm3vaSCmQEqNgjZtDY62fQ + partials-nn-NO-win64-shippable/opt: c3M9PMgST6SP-y2e6l6FuA + partials-oc-linux-shippable/opt: Yt1ZYtnESI22NStYZKHN5w + partials-oc-linux64-shippable/opt: dkmkNwJjQTWIhKG1hNhnYQ + partials-oc-macosx64-shippable/opt: ffM0SsKYS2yT_H0p5bMUIQ + partials-oc-win32-shippable/opt: HXsek02BSRCNHfRhq0On8Q + partials-oc-win64-aarch64-shippable/opt: CgZdxw34SOCIyANWRXAo_w + partials-oc-win64-shippable/opt: WW38ufCnSU-dNMpuM_z5_A + partials-pa-IN-linux-shippable/opt: TN-_grJRTGaOH__B3e6cBQ + partials-pa-IN-linux64-shippable/opt: aknhiCYFS96WnrVQsFV9pA + partials-pa-IN-macosx64-shippable/opt: ItCT17XKQ3KgJDyIqjgHOw + partials-pa-IN-win32-shippable/opt: deKDFJASTveNIMu5_rTeaA + partials-pa-IN-win64-aarch64-shippable/opt: UiywGT9JSESEDWTzL04Rdw + partials-pa-IN-win64-shippable/opt: OfPRvCowTtGv0jc0oLKSzA + partials-pl-linux-shippable/opt: OwCVdwUHTaOqF_EA9xRHvg + partials-pl-linux64-shippable/opt: YX_uYXXYQauNemOSDP9PlQ + partials-pl-macosx64-shippable/opt: GJzvvyXIQPG1HGVeisM8DQ + partials-pl-win32-shippable/opt: ZoNCsoydTEyM11hCMulyTw + partials-pl-win64-aarch64-shippable/opt: GfTVoju_QPCvMnuwhvnI0w + partials-pl-win64-shippable/opt: CydWgrgUTxCZu1Um5TOXlw + partials-pt-BR-linux-shippable/opt: cB2RS5MlRS-WquTsbTaM9A + partials-pt-BR-linux64-shippable/opt: J6_rA__iSvikHDloOCzcTg + partials-pt-BR-macosx64-shippable/opt: Hv8ollu7R8yLmFqMYFGCng + partials-pt-BR-win32-shippable/opt: QWB9w3U2R_2OHDrTznLwww + partials-pt-BR-win64-aarch64-shippable/opt: UxziovlOQ32bw9WpZrmVPg + partials-pt-BR-win64-shippable/opt: e4dMaXkIRZS_ISDkkk10AA + partials-pt-PT-linux-shippable/opt: RUJgRsk9QAiHVAHchxkGTQ + partials-pt-PT-linux64-shippable/opt: V7Ty7QKETtiCncgHCzJDuw + partials-pt-PT-macosx64-shippable/opt: LSqPE6mlROKKaFX_rzlH6Q + partials-pt-PT-win32-shippable/opt: YGTBrLAmQKGBHm1uD9DY4A + partials-pt-PT-win64-aarch64-shippable/opt: RJtJQTU1SNSYJgjwlPBtRQ + partials-pt-PT-win64-shippable/opt: dWKeQ7chQa2l6LYID5-uqw + partials-rm-linux-shippable/opt: AvsBDWpjSBKmuPWBh_X9pw + partials-rm-linux64-shippable/opt: e2aLO9x_R0OJ2-nD6DiHDg + partials-rm-macosx64-shippable/opt: V_PULicJS0-o6hwsyDtigg + partials-rm-win32-shippable/opt: Xy0rWkgHSeiai8IUDDSuSQ + partials-rm-win64-aarch64-shippable/opt: DcBd2XgAQpm4v14Yvv0M_g + partials-rm-win64-shippable/opt: OgX2SifHSQavka6ERegmfw + partials-ro-linux-shippable/opt: cvwBXQDNQ7CYJZEQwb_29w + partials-ro-linux64-shippable/opt: Rdw4lpreRoCWAwope4E56g + partials-ro-macosx64-shippable/opt: SfoBFg48RXG_qmGZa0G1rQ + partials-ro-win32-shippable/opt: SY7guyuwQ4iloKD3ZwvpSg + partials-ro-win64-aarch64-shippable/opt: Je0yY7xER0qMPkbp8xqrhg + partials-ro-win64-shippable/opt: N37uOIAIQt2vBC0B7_PgxQ + partials-ru-linux-shippable/opt: IUHKL1F6Q6Ov71OTkABzDQ + partials-ru-linux64-shippable/opt: SNbYLBoIT6-6FakGFo5oeg + partials-ru-macosx64-shippable/opt: NGmofXuUSrm6vq65FKx2Cg + partials-ru-win32-shippable/opt: L8uHr_SNQ0C3UI79fem_3w + partials-ru-win64-aarch64-shippable/opt: VKxkZc5MSOad_GOArbJzdA + partials-ru-win64-shippable/opt: feejzQhZRFSt8q3U9RAJPA + partials-sc-linux-shippable/opt: GzHp5j9RSri55OJJQ7Wy9w + partials-sc-linux64-shippable/opt: IeoL2OlsRU-Uhxxi_jMjgg + partials-sc-macosx64-shippable/opt: Vhf2X8rSRhCQTbmeFimayw + partials-sc-win32-shippable/opt: MVPFRLceSLa8MeqIyWT6xg + partials-sc-win64-aarch64-shippable/opt: P1tk0XJER_uo0x8UbVc9KA + partials-sc-win64-shippable/opt: KRnqypZvQESuVlkoVMPVDw + partials-sco-linux-shippable/opt: HAUcw4WoRyaTAQrQ0AcTPA + partials-sco-linux64-shippable/opt: TS9wEuWYRvyARy6bcFUX6A + partials-sco-macosx64-shippable/opt: fE9StZ7hTCmHzjGFL40vnw + partials-sco-win32-shippable/opt: TFwIk5qfQOuyPX8neKR0-w + partials-sco-win64-aarch64-shippable/opt: WssUwCLjR4C9H7zrD7plIw + partials-sco-win64-shippable/opt: XQWpn9wNQfGNF5r9anwvaw + partials-si-linux-shippable/opt: cvYCRMbrRq6lnGKYOZN8lQ + partials-si-linux64-shippable/opt: KVfwbDB0QIG69tv5JQSRGw + partials-si-macosx64-shippable/opt: HeYk24EwTWGJou2Mq_0bgw + partials-si-win32-shippable/opt: FAkcdlcWTEiHn5pKo8mFeg + partials-si-win64-aarch64-shippable/opt: DBsbH208QWu_FLuoZiOyvQ + partials-si-win64-shippable/opt: ch8qAWTaS6qw5zGE8Mu_3A + partials-signing-ach-linux-shippable/opt: RkrcQJ6vSyK3GwcjT9DNlA + partials-signing-ach-linux64-shippable/opt: UwgYXel8TE-NZkhb0ehekw + partials-signing-ach-macosx64-shippable/opt: JhVoJZC3TrunnZoH2F5npA + partials-signing-ach-win32-shippable/opt: W-doNNd9QQS6EcG2t4YkGA + partials-signing-ach-win64-aarch64-shippable/opt: DP2gwJ9yT7SidO2WpoBr1Q + partials-signing-ach-win64-shippable/opt: I5Pf5Q_vTcKo65Sx2YgntA + partials-signing-af-linux-shippable/opt: Ptw0HCYgS22PcBGJMtgskQ + partials-signing-af-linux64-shippable/opt: cShBgLatTE6lnH77Hq45KQ + partials-signing-af-macosx64-shippable/opt: WkFfBiL-TNSenWgaYafGag + partials-signing-af-win32-shippable/opt: BuDPAI3jQQedt_mtrX3j2A + partials-signing-af-win64-aarch64-shippable/opt: c27MCQjRSl-ykRbSJfLQoQ + partials-signing-af-win64-shippable/opt: EgLWcSujQLq42ObO_McvuQ + partials-signing-an-linux-shippable/opt: N3YyMQkATzarmaMRfwk8Hg + partials-signing-an-linux64-shippable/opt: fAFMzyPhTK2v8OwI_sgHLQ + partials-signing-an-macosx64-shippable/opt: MYfG8RU5RO6UxTrIW_Qmwg + partials-signing-an-win32-shippable/opt: NlSonJ_qRq6aYBrsCOIR2w + partials-signing-an-win64-aarch64-shippable/opt: c70424ezRQay_mDphNQ63g + partials-signing-an-win64-shippable/opt: KYc7TjXPQI2hN3pVctBM1Q + partials-signing-ar-linux-shippable/opt: E9Q9lxjvTfyaOjUUYUBVhg + partials-signing-ar-linux64-shippable/opt: QHR0s7axTXOdn5n9D-6UIw + partials-signing-ar-macosx64-shippable/opt: fIEo1QQcRbahzk_otWOx_Q + partials-signing-ar-win32-shippable/opt: MP0k3Ky8QKuzOCaYWTmNEA + partials-signing-ar-win64-aarch64-shippable/opt: H9o1iUsxRl6k1deFCyhrYg + partials-signing-ar-win64-shippable/opt: Cv-fqE9RQZ2AcnaQwlIyVA + partials-signing-ast-linux-shippable/opt: CAJWFaUDQ-mbdaFC1g85ng + partials-signing-ast-linux64-shippable/opt: ch90IvtFTqGFQvaraX45rw + partials-signing-ast-macosx64-shippable/opt: cRQOWsHLS5ytRjjQxaCc4w + partials-signing-ast-win32-shippable/opt: IfhJ3hiVTPWjJznGoxkJJQ + partials-signing-ast-win64-aarch64-shippable/opt: TxCpGDtFTpm4l8LbewJ0iA + partials-signing-ast-win64-shippable/opt: Yl534v5tTVqH8DfhiXxjxg + partials-signing-az-linux-shippable/opt: Z1Bf56eQRSiE_EjUxUokdQ + partials-signing-az-linux64-shippable/opt: Q7uD-SU5QwKwt6SR5sv-lQ + partials-signing-az-macosx64-shippable/opt: YouEVl4ORrC7gej70AKkGg + partials-signing-az-win32-shippable/opt: KaU_gzMfRuCziSBdxIDAAA + partials-signing-az-win64-aarch64-shippable/opt: PKw0aHfWSoejvx__lj2C0w + partials-signing-az-win64-shippable/opt: fHpEEySQTieC-cJyAeTxCA + partials-signing-be-linux-shippable/opt: Y-MftiUFSOmCkW1r2aTgjQ + partials-signing-be-linux64-shippable/opt: GRbo8GbdQ_ejDM33jW1_gw + partials-signing-be-macosx64-shippable/opt: VdvsKl3mTiqQlLoz5Vr8Yg + partials-signing-be-win32-shippable/opt: E-LuakIvRR6bUm9KjEN-0g + partials-signing-be-win64-aarch64-shippable/opt: a2HYZU_ARJmAOuFJGbetpw + partials-signing-be-win64-shippable/opt: VxDcJstvQN-jcVSaiOgQlQ + partials-signing-bg-linux-shippable/opt: UnnyLboHSlqbMqoRzad-cg + partials-signing-bg-linux64-shippable/opt: ENqNBF-YSYSyH63PIlJtqA + partials-signing-bg-macosx64-shippable/opt: fy8jv6X8SWKNixNiSp9ksw + partials-signing-bg-win32-shippable/opt: DD7HgwI4TEy5HHhJAHHo-A + partials-signing-bg-win64-aarch64-shippable/opt: Y6Zq8c4wTB6VGrlIszYy6g + partials-signing-bg-win64-shippable/opt: fmlsUwsgSGOpTES9ZCehgA + partials-signing-bn-linux-shippable/opt: f2qS7DrWRlOHnoNtHI4ukA + partials-signing-bn-linux64-shippable/opt: TbLbbltST1SrLgXL_32R5A + partials-signing-bn-macosx64-shippable/opt: MK_0LxdDQwKTXa6zaTBqTw + partials-signing-bn-win32-shippable/opt: TWjtQWrgRTy7PJbX9f-5uQ + partials-signing-bn-win64-aarch64-shippable/opt: cklpNOAmS0GBRz0c3W4F-w + partials-signing-bn-win64-shippable/opt: LOHzVAasTfKh7v_zR90uAg + partials-signing-br-linux-shippable/opt: CoGNLDfSR1unfY0Grx5Y0w + partials-signing-br-linux64-shippable/opt: NlW0N8j4QAeMCfbb6U7Ydg + partials-signing-br-macosx64-shippable/opt: fiEA2Y3AT1eLzok-b3Dhqg + partials-signing-br-win32-shippable/opt: RkmPmhlVRRShJ2Cn6e-NBQ + partials-signing-br-win64-aarch64-shippable/opt: Ag19qn9FRYij120KPxZwcA + partials-signing-br-win64-shippable/opt: RX79-0AJQZ2x3M5XDImPpw + partials-signing-bs-linux-shippable/opt: F-fpc-7oRoewKCSSKV5cJQ + partials-signing-bs-linux64-shippable/opt: fxIreEDxQa6naXGw6iOLpw + partials-signing-bs-macosx64-shippable/opt: TmP8fCNyTo-db2grKDehmQ + partials-signing-bs-win32-shippable/opt: W5mrctWNSoOG0vYvbtPGGg + partials-signing-bs-win64-aarch64-shippable/opt: XO1LEU8gQgmBU8mU8HFiVw + partials-signing-bs-win64-shippable/opt: LtjzvygVTjO5yX-DK9C1nw + partials-signing-ca-linux-shippable/opt: NX948EzPQnqUxWWq2NqbzQ + partials-signing-ca-linux64-shippable/opt: SzztzlqmQ4eTVyv1mc32Sg + partials-signing-ca-macosx64-shippable/opt: WtPxaktaSR-bzuFXK2O0pw + partials-signing-ca-valencia-linux-shippable/opt: I9M_jnMIToq7T2_0zXJ0uw + partials-signing-ca-valencia-linux64-shippable/opt: aHB9t1s_Th-PrL1xzxirHg + partials-signing-ca-valencia-macosx64-shippable/opt: CZ-hPURnTm-tjb8SBQGfHA + partials-signing-ca-valencia-win32-shippable/opt: P2Bzd3zBQha577GZryGCug + partials-signing-ca-valencia-win64-aarch64-shippable/opt: ZPKTEn1zSY-GjDbZ-78fMg + partials-signing-ca-valencia-win64-shippable/opt: dYsEAUVCRfOkU3mOK3LusA + partials-signing-ca-win32-shippable/opt: BpfgIRJ1RG-ZpLWIcmSJzA + partials-signing-ca-win64-aarch64-shippable/opt: MGzVY_cZTQKvPh_HCwjRvw + partials-signing-ca-win64-shippable/opt: HKEa9a8fRIWHiE14wzGLsA + partials-signing-cak-linux-shippable/opt: Ekm6LPrXT7m619-vTFFduw + partials-signing-cak-linux64-shippable/opt: J8fJyNtCRfWx7-2ND_-Zqw + partials-signing-cak-macosx64-shippable/opt: e8BqnaZRRpechMOyoND8jw + partials-signing-cak-win32-shippable/opt: EnLxWdS9SuGgbgqODby_3A + partials-signing-cak-win64-aarch64-shippable/opt: b4WF4wEdSTS-O_08pM0rLg + partials-signing-cak-win64-shippable/opt: QpxWEGYITIqNfNzUkBNelg + partials-signing-cs-linux-shippable/opt: BU8sbnbrSg-qwtai8NncmQ + partials-signing-cs-linux64-shippable/opt: d70JAEtJRjufyggLFcl_mQ + partials-signing-cs-macosx64-shippable/opt: ds0x26kATBmWyH8dLvqZag + partials-signing-cs-win32-shippable/opt: PMt4BUogTdyGjzY_OlgphQ + partials-signing-cs-win64-aarch64-shippable/opt: UytMi5dCQu-rwHS5j0CKrg + partials-signing-cs-win64-shippable/opt: GXIO8Iw0Sxe-749ql7J0Dg + partials-signing-cy-linux-shippable/opt: fPQBcmjgRAy-0JXm8Pxbyg + partials-signing-cy-linux64-shippable/opt: f2Ke0yUrSVSVxq4UUwAWkQ + partials-signing-cy-macosx64-shippable/opt: NaxZE01-Rdm8X6zjy7HHlg + partials-signing-cy-win32-shippable/opt: KobblA8jS4-fpbAcdyud6A + partials-signing-cy-win64-aarch64-shippable/opt: XbdEaZuWTwaaP7NW8tHMow + partials-signing-cy-win64-shippable/opt: CoAcF2JtTgW32yWUXn1gFA + partials-signing-da-linux-shippable/opt: OnOj3C6PQXCx9qF21367sw + partials-signing-da-linux64-shippable/opt: OqkXLLVFTGCRVxhdOsoOQQ + partials-signing-da-macosx64-shippable/opt: U1AIZRkwSiq-bAR6T2xnFA + partials-signing-da-win32-shippable/opt: c8hVGE4MRm-8icBYAHeqvw + partials-signing-da-win64-aarch64-shippable/opt: aFAX2rj7ToewmyUP4D-gtw + partials-signing-da-win64-shippable/opt: YvU9Y_K5QtSJ9Wue9qsFoA + partials-signing-de-linux-shippable/opt: JB-hqga9T2O3qnInaNaRtw + partials-signing-de-linux64-shippable/opt: GGBVXD2MR7OT2grIGto5Lg + partials-signing-de-macosx64-shippable/opt: TLJES258TnaXXjk4O341CQ + partials-signing-de-win32-shippable/opt: Xosoup6NQhSnccJIu7Rz7Q + partials-signing-de-win64-aarch64-shippable/opt: KjCn49iERMmzlvnQBy9WZg + partials-signing-de-win64-shippable/opt: ZavWOjRgSfiQHhMnTDNoQg + partials-signing-dsb-linux-shippable/opt: OuuGrOtGSn6nYThIb8J2sw + partials-signing-dsb-linux64-shippable/opt: BEfOkDeARSi4b8aZ4sGaeg + partials-signing-dsb-macosx64-shippable/opt: cpUDSDrYRcmBENGJGVpv9g + partials-signing-dsb-win32-shippable/opt: d-7ElEwrTYCxwhIpXIWmGA + partials-signing-dsb-win64-aarch64-shippable/opt: A0CsdS5SQ3myXLbu1CKi0w + partials-signing-dsb-win64-shippable/opt: X0efscs_QZGlKRHLbZdtaw + partials-signing-el-linux-shippable/opt: TlKUK-UiSH6QiycIIyYFmw + partials-signing-el-linux64-shippable/opt: V2on1Zx3RKGOJtLSQImGZA + partials-signing-el-macosx64-shippable/opt: Sas-6I7oROetBOc7KozbIQ + partials-signing-el-win32-shippable/opt: JWZkNzyFSBqwntIBaUG8_g + partials-signing-el-win64-aarch64-shippable/opt: L-oc-TFuQSGO80J1Z9KjLg + partials-signing-el-win64-shippable/opt: Ld8-aMzURtSRexoNKC9hUA + partials-signing-en-CA-linux-shippable/opt: ShNnainfSD2A7bA6VOscuA + partials-signing-en-CA-linux64-shippable/opt: HX08hL3ETGCAdg6nSuiNKA + partials-signing-en-CA-macosx64-shippable/opt: Z49_H9DJRIK2_ZByGnjZaA + partials-signing-en-CA-win32-shippable/opt: b08PlDmcSBeoLRwfIwtfnA + partials-signing-en-CA-win64-aarch64-shippable/opt: fBQQ588JSYuopZF5JoL2pw + partials-signing-en-CA-win64-shippable/opt: Di2jCQ3USomINc59ANd2Qg + partials-signing-en-GB-linux-shippable/opt: O7cr5hR2Q32MH5-mTuvhng + partials-signing-en-GB-linux64-shippable/opt: UTmy0NBORHi5Yh_MDqqocA + partials-signing-en-GB-macosx64-shippable/opt: c494VbI7QoenHszCa7Om6w + partials-signing-en-GB-win32-shippable/opt: QhTTZzIDR2yexdyWKRcHHQ + partials-signing-en-GB-win64-aarch64-shippable/opt: bYfZu4DKRKyQteQY8yyylA + partials-signing-en-GB-win64-shippable/opt: H3_uoTNLStyOQSPV4yCUdQ + partials-signing-eo-linux-shippable/opt: ciFjX1LdTq-4OHbrqQgUow + partials-signing-eo-linux64-shippable/opt: QN4UCuFwTbe87jgBiKyJdg + partials-signing-eo-macosx64-shippable/opt: d27F5NFsSGqRWTajlpBr5g + partials-signing-eo-win32-shippable/opt: Um0lL824SomG5RetQIohSw + partials-signing-eo-win64-aarch64-shippable/opt: SAKRmOIVQPa96Mvx2vgCRg + partials-signing-eo-win64-shippable/opt: cst8NB5ETs-1Q5b_q3I83w + partials-signing-es-AR-linux-shippable/opt: RRYgQNDrQTaX-u-qJoTsTQ + partials-signing-es-AR-linux64-shippable/opt: UMlmBdYWRlKJ6wXTa52nSg + partials-signing-es-AR-macosx64-shippable/opt: GyMinkCZSTqSDPJ8OP79hA + partials-signing-es-AR-win32-shippable/opt: BiXLO5xOS5mAhTqaY2xJ1Q + partials-signing-es-AR-win64-aarch64-shippable/opt: JNCw15tCSdWFfd801tbyuQ + partials-signing-es-AR-win64-shippable/opt: SmZ3szarQEK7wuaLUo8bWQ + partials-signing-es-CL-linux-shippable/opt: cVT1v34_SYOiRAXShM_qXg + partials-signing-es-CL-linux64-shippable/opt: HaIOTFZVSqW2tJbRMLPfog + partials-signing-es-CL-macosx64-shippable/opt: MRPv_4y2Sbe97Ujsozwugw + partials-signing-es-CL-win32-shippable/opt: PoNmdjSDTgyD7YeaqstIZQ + partials-signing-es-CL-win64-aarch64-shippable/opt: ZCakHHp3TuCFk5BS4irUSw + partials-signing-es-CL-win64-shippable/opt: V25ZQkTgT5ixG3crcTIEUA + partials-signing-es-ES-linux-shippable/opt: M1fFQ3AbSD-kk99q90RVJg + partials-signing-es-ES-linux64-shippable/opt: QZv7T_0eTA-MRJpqUZoLMA + partials-signing-es-ES-macosx64-shippable/opt: A1972D57RwyMoEzab9Jhog + partials-signing-es-ES-win32-shippable/opt: Zp3x-bjWQUCBbLxr7BmROw + partials-signing-es-ES-win64-aarch64-shippable/opt: JVE5p92-QfqWVwBpWPJHpg + partials-signing-es-ES-win64-shippable/opt: bCnxeM-gQfeY8yDLkxh0Hg + partials-signing-es-MX-linux-shippable/opt: Y4ioxDJ0SXmbyfEv30pBsQ + partials-signing-es-MX-linux64-shippable/opt: K5P3wFEcQa-4BAhOjk1AEw + partials-signing-es-MX-macosx64-shippable/opt: C_ioL3BBQKi_DEwqHzcVaQ + partials-signing-es-MX-win32-shippable/opt: DIa3-mPLTwuEsDspbWmg6g + partials-signing-es-MX-win64-aarch64-shippable/opt: ft0r563qTZi-PAhM7YR1fQ + partials-signing-es-MX-win64-shippable/opt: Ue1XCg-XTPWpEWqCe98lhw + partials-signing-et-linux-shippable/opt: fL0ComtqSfySDBRbzk1JfA + partials-signing-et-linux64-shippable/opt: FxzPCgMBRleI_emalVnlBw + partials-signing-et-macosx64-shippable/opt: Jx1W-10OSrqZM7dF4sGA0g + partials-signing-et-win32-shippable/opt: CE2NfEGoRU6iBB-xvIOTLA + partials-signing-et-win64-aarch64-shippable/opt: IX_XB-HwRSSWaE4CljpI5g + partials-signing-et-win64-shippable/opt: RiHbwOMMQ6asYRhIHAqS5Q + partials-signing-eu-linux-shippable/opt: JevupCSUTSW6FsUF3tv-cQ + partials-signing-eu-linux64-shippable/opt: F5dd0M3TTpqVKtRxsO2lHA + partials-signing-eu-macosx64-shippable/opt: MYawcKVyRP-UpZ-cGe205Q + partials-signing-eu-win32-shippable/opt: WgKA_CNFSBennTjU-0XhNA + partials-signing-eu-win64-aarch64-shippable/opt: FnXJlDOaQLucnTmQM8UmZg + partials-signing-eu-win64-shippable/opt: BA-DdupCSReGeIBxbildZA + partials-signing-fa-linux-shippable/opt: Y4L7WDosQs2fD5kFKM0Cag + partials-signing-fa-linux64-shippable/opt: GuxWgAwpS1exWfS9HfFqLA + partials-signing-fa-macosx64-shippable/opt: CYe-8j14T-SW2ifFFTxpHQ + partials-signing-fa-win32-shippable/opt: ey8-B9qCTp-dCvy_HJMAQQ + partials-signing-fa-win64-aarch64-shippable/opt: FJUPEe-ASqmG_pmYcMrX7A + partials-signing-fa-win64-shippable/opt: JWfiWDnBRAWaVue6j6kB_g + partials-signing-ff-linux-shippable/opt: dgMZMdhwSqy478BCI6MkKQ + partials-signing-ff-linux64-shippable/opt: MdWKl9s7R4GOHOc5PlJo2A + partials-signing-ff-macosx64-shippable/opt: UWh_aA3uQRi_bGVQwqYzLg + partials-signing-ff-win32-shippable/opt: Is73NM_eRNWuvqHagoBIDg + partials-signing-ff-win64-aarch64-shippable/opt: EOqY58I3Rk2oFHRf8IUsWw + partials-signing-ff-win64-shippable/opt: EcjxqyecQ3SWTb7NMWO6hA + partials-signing-fi-linux-shippable/opt: RbeOqGn6QQiZjKVIVxY6JQ + partials-signing-fi-linux64-shippable/opt: dEVXFVQlRSe-OUO2jgvAnw + partials-signing-fi-macosx64-shippable/opt: XRrow0bQTgu0mGenwOzQwA + partials-signing-fi-win32-shippable/opt: BBOteiZtQ62v_9fbBAdceA + partials-signing-fi-win64-aarch64-shippable/opt: b2FTz2yUTiq_O4S5_QWtNw + partials-signing-fi-win64-shippable/opt: VRpFH1MEQgKkWQpevXCJpw + partials-signing-fr-linux-shippable/opt: URsy3aLoT5aHQjE2sLUW4Q + partials-signing-fr-linux64-shippable/opt: SzplQPwMTRKE3pJhCPN9Pw + partials-signing-fr-macosx64-shippable/opt: OjjPw70MRNaasbI5ufChgw + partials-signing-fr-win32-shippable/opt: d33T1iJkToOTWhrpWgYCbQ + partials-signing-fr-win64-aarch64-shippable/opt: UGgocHaCQTG5iCs5iXvoGQ + partials-signing-fr-win64-shippable/opt: Wx3wiSu_QUm1jKni_NuZDg + partials-signing-fur-linux-shippable/opt: BmJhJHuiRtOeltzXyEW_tQ + partials-signing-fur-linux64-shippable/opt: V0f_oHIqRlejvN0HlRSjFQ + partials-signing-fur-macosx64-shippable/opt: ApgrOK55TQmfw03mni56Bw + partials-signing-fur-win32-shippable/opt: LGWXcI-2S_GAhzYdL6WoDw + partials-signing-fur-win64-aarch64-shippable/opt: V4ruJDC4RLep636j7l5LBQ + partials-signing-fur-win64-shippable/opt: MP_j5Y6ASe2pXihUDPhCmg + partials-signing-fy-NL-linux-shippable/opt: e8WBjyzTSdqzQ5dTKzs4WA + partials-signing-fy-NL-linux64-shippable/opt: VjnK6lRDRnKC6WP60ympmw + partials-signing-fy-NL-macosx64-shippable/opt: Hn78-ygMQF6rdjL_obwn0g + partials-signing-fy-NL-win32-shippable/opt: COzLCohZQ9CUjNaWd1I-qw + partials-signing-fy-NL-win64-aarch64-shippable/opt: b4Iy0vk5RlSgOi5B9pG_9A + partials-signing-fy-NL-win64-shippable/opt: HggpchrxRuuLebD6COCtYA + partials-signing-ga-IE-linux-shippable/opt: Vsx9_7hhTnmGJYcU8p8KJg + partials-signing-ga-IE-linux64-shippable/opt: eR7gF2qwQ5mDvxQOCHhFbA + partials-signing-ga-IE-macosx64-shippable/opt: WYfy-X1KQQK0NqcGUR3pVg + partials-signing-ga-IE-win32-shippable/opt: S42PmIjqT1aaleFNL7c_nQ + partials-signing-ga-IE-win64-aarch64-shippable/opt: O4dJGdoTTtODqBQKjEvFig + partials-signing-ga-IE-win64-shippable/opt: JQuA-ToaTYCrEfeAkG7uJA + partials-signing-gd-linux-shippable/opt: KDQD3o8YQ9KpRAruhttjhA + partials-signing-gd-linux64-shippable/opt: VUr9F_FBQOCpombxABdShA + partials-signing-gd-macosx64-shippable/opt: B5821o1uR2OCecHpqW8Jdg + partials-signing-gd-win32-shippable/opt: L8VN9cs1StCo3qEdARRx6A + partials-signing-gd-win64-aarch64-shippable/opt: IILYZRn1TFyb-jaGrTj8Ug + partials-signing-gd-win64-shippable/opt: FKItN5Z1RROL1daFaoSUlg + partials-signing-gl-linux-shippable/opt: KpjWKzXnSpOC7sw9rmSHRA + partials-signing-gl-linux64-shippable/opt: cB9KEmQmTeqQet5Rxa3hTQ + partials-signing-gl-macosx64-shippable/opt: ZDaDfKM-R7arDBpW6Z6foA + partials-signing-gl-win32-shippable/opt: B9_zHGnuRTaY64K4HCi_Xw + partials-signing-gl-win64-aarch64-shippable/opt: BqPpLal1SEqi2Xi1NFMfJg + partials-signing-gl-win64-shippable/opt: Frf5tfefQRilnA3uoGb8cw + partials-signing-gn-linux-shippable/opt: GpoJmTIBSVig1xclwHqsSw + partials-signing-gn-linux64-shippable/opt: PRTIraUfQkKKN5_Ia2PeAA + partials-signing-gn-macosx64-shippable/opt: dYyXlDGgQoOA1bIcz05gUA + partials-signing-gn-win32-shippable/opt: XQv3RPDKRTC9nHAUwDAddw + partials-signing-gn-win64-aarch64-shippable/opt: V5TndPedTfKkY25KYbgu4g + partials-signing-gn-win64-shippable/opt: SXFORjEjT5ugjXDhhgNkFg + partials-signing-gu-IN-linux-shippable/opt: Ze_o6cffRJWV0_fdT-52cA + partials-signing-gu-IN-linux64-shippable/opt: E0iDlUMSTD6MZ-YbW_0mpw + partials-signing-gu-IN-macosx64-shippable/opt: ZHPblzL2R3uooODLdj2W3A + partials-signing-gu-IN-win32-shippable/opt: fdkeB_BfRJikxD7lB5aSDA + partials-signing-gu-IN-win64-aarch64-shippable/opt: G2kS9oC8Q1eTpag0cfFSEA + partials-signing-gu-IN-win64-shippable/opt: KPGaznzkScyAe9XkhPEJeQ + partials-signing-he-linux-shippable/opt: fKF6ugRQS928e9hpSmzGOw + partials-signing-he-linux64-shippable/opt: ccAsZbjfQr6yS61vL5blkw + partials-signing-he-macosx64-shippable/opt: H-PiIK-GRv648r4DdmEnuA + partials-signing-he-win32-shippable/opt: Cd_MDPwSQzm2iQl_xmkzTA + partials-signing-he-win64-aarch64-shippable/opt: NsNXQN-eTcuziBYSzOMiRA + partials-signing-he-win64-shippable/opt: WGrjYz5oQRigG48StAd4cg + partials-signing-hi-IN-linux-shippable/opt: bkRT60I7QL2DUFH8ucJ9wQ + partials-signing-hi-IN-linux64-shippable/opt: CUUrhC6MTImgmnGHp5WDOg + partials-signing-hi-IN-macosx64-shippable/opt: SqkHVGS9Tr6ne9WDFZD53w + partials-signing-hi-IN-win32-shippable/opt: XiBH05DWRRG9IMF31pcIrQ + partials-signing-hi-IN-win64-aarch64-shippable/opt: atDRFY06ROWnF0c8Og9QYA + partials-signing-hi-IN-win64-shippable/opt: ARFQOF3LSbK18KBAMwnIPw + partials-signing-hr-linux-shippable/opt: e-sZK13gQIeqM2dz7UhHQg + partials-signing-hr-linux64-shippable/opt: OfWEI1qyS6OHzK3aO6dIzA + partials-signing-hr-macosx64-shippable/opt: f-vcOrOEQuWQPKDQaLyHHg + partials-signing-hr-win32-shippable/opt: SQDqoq1EQ4yEs4oLi6wq5w + partials-signing-hr-win64-aarch64-shippable/opt: D4vBLDyASpyq96L962RY3g + partials-signing-hr-win64-shippable/opt: OKoCgoBSRf2mPIFYL0y4GQ + partials-signing-hsb-linux-shippable/opt: SKY5QgZCRBOSh6sWriNR9w + partials-signing-hsb-linux64-shippable/opt: DIwE72j_SMeDeV4EwelcLQ + partials-signing-hsb-macosx64-shippable/opt: TFzyr45xTYmd3v_Qz-s4kg + partials-signing-hsb-win32-shippable/opt: POq5EbXNRiWatoMnBohnsA + partials-signing-hsb-win64-aarch64-shippable/opt: cmWZ6xOESV6aGGJ7RBLrOA + partials-signing-hsb-win64-shippable/opt: AvpznW_QR0G4teXt-JnlaQ + partials-signing-hu-linux-shippable/opt: NqAeUoycRXK8eegzD_yD8Q + partials-signing-hu-linux64-shippable/opt: H1eNIHBDSiet740ijBo7Ew + partials-signing-hu-macosx64-shippable/opt: HhZktvuCRzOShGNqDdLRKw + partials-signing-hu-win32-shippable/opt: buE5OaGKT4ikpKFlCX0CrQ + partials-signing-hu-win64-aarch64-shippable/opt: ASd35Q5iReyyPm3B5MybqA + partials-signing-hu-win64-shippable/opt: Dv_QuCThS76o8Z0wAeGcwQ + partials-signing-hy-AM-linux-shippable/opt: cxGnJpnSRF6zefpInCiSJQ + partials-signing-hy-AM-linux64-shippable/opt: JikLyJj1SWKExK1cpfK31Q + partials-signing-hy-AM-macosx64-shippable/opt: NmZTytz-R3CW5bQbCtfTlg + partials-signing-hy-AM-win32-shippable/opt: SB4gFV_tS0astED5GKO8oA + partials-signing-hy-AM-win64-aarch64-shippable/opt: Puox1mo4ThClS3GQ75aOfg + partials-signing-hy-AM-win64-shippable/opt: AsybSumSS7iGOINzKYxicw + partials-signing-ia-linux-shippable/opt: OjaGpgOLRmOKaReUN_k8KQ + partials-signing-ia-linux64-shippable/opt: IVgYU4gjSYi3UswV_HtjOA + partials-signing-ia-macosx64-shippable/opt: EBRBqRzqRre8THojursOnQ + partials-signing-ia-win32-shippable/opt: R5DPcTfQTBaeyRJuTGZCPQ + partials-signing-ia-win64-aarch64-shippable/opt: eCML7FCESeKqvdEjqfST-w + partials-signing-ia-win64-shippable/opt: QxgWDsImSy6S0t8aLWwarg + partials-signing-id-linux-shippable/opt: E0d64jeRR5Sav9HeI6ECBQ + partials-signing-id-linux64-shippable/opt: Mfn1A0vZREOvlk3TsY6XQQ + partials-signing-id-macosx64-shippable/opt: bxOAm4OFTiegU1xHaWXRbQ + partials-signing-id-win32-shippable/opt: EQl2ILKcTfG0LEcwunxvFg + partials-signing-id-win64-aarch64-shippable/opt: Q2910ybARvSQljCqmUbdGg + partials-signing-id-win64-shippable/opt: XKHdqyBqTnONvPI4meJhSQ + partials-signing-is-linux-shippable/opt: PAzJNvn4RjOmk6ZJD_3NGw + partials-signing-is-linux64-shippable/opt: bnTvUDUYQreuDIfLkd4xLg + partials-signing-is-macosx64-shippable/opt: GYlk4nBAThqhiK0ZuI_N5Q + partials-signing-is-win32-shippable/opt: YU3HGCYlSPqwQFNiY7i27Q + partials-signing-is-win64-aarch64-shippable/opt: StROSkPbRCS17KY24aWeMg + partials-signing-is-win64-shippable/opt: YGV6gS3gQWmIeKXb8VKXQg + partials-signing-it-linux-shippable/opt: ezPxIsw6Q8WKkmyuqhycbg + partials-signing-it-linux64-shippable/opt: UiIIIFDyR86fGS4LgF3wJw + partials-signing-it-macosx64-shippable/opt: d5NnIWNJRqmw2sYdOIKpVg + partials-signing-it-win32-shippable/opt: Hnrv0kurT0WT_sn6ADZgtw + partials-signing-it-win64-aarch64-shippable/opt: RE1QYBE2QvynaoCwGELWaw + partials-signing-it-win64-shippable/opt: SJh5VaN8QDKlp08IkTFIig + partials-signing-ja-JP-mac-macosx64-shippable/opt: MSMpkTWkRrePT3pH2Th9Nw + partials-signing-ja-linux-shippable/opt: eBJLTCTfRSW09JvKWiVb6w + partials-signing-ja-linux64-shippable/opt: HBncxfP9QaeTlhYYFfBJww + partials-signing-ja-win32-shippable/opt: F76PwzOiR2K6t0iRmgE39Q + partials-signing-ja-win64-aarch64-shippable/opt: bheCGCEeQLmCMqSNw4mz1A + partials-signing-ja-win64-shippable/opt: cB76EQDsQpGAJEpJF_Wwdg + partials-signing-ka-linux-shippable/opt: UvHWak71QLCKEVVDUEUcHg + partials-signing-ka-linux64-shippable/opt: bjIDdELGRtez9t3tAmS1-g + partials-signing-ka-macosx64-shippable/opt: SJltkxJaT3iOzn1M45cz6A + partials-signing-ka-win32-shippable/opt: Rlf1HgwSROOX9edYGms7qw + partials-signing-ka-win64-aarch64-shippable/opt: Zb7kV6OeQgmUhe9RWoVqdg + partials-signing-ka-win64-shippable/opt: CpwzT811T-mYY6lmR9PVOQ + partials-signing-kab-linux-shippable/opt: eG53Z-IfQL2QTeHQdIHb6A + partials-signing-kab-linux64-shippable/opt: b_xF-1INSEWz3ojfHpIO4A + partials-signing-kab-macosx64-shippable/opt: MYYOb8kSS3Sp5w9mugFjDA + partials-signing-kab-win32-shippable/opt: Cc56cXUbQ9u6XJg-s5c6sA + partials-signing-kab-win64-aarch64-shippable/opt: Fg8OjaLfS2mDhjKKS-w50A + partials-signing-kab-win64-shippable/opt: QUfmPYO7SpGc0qS5eOiisQ + partials-signing-kk-linux-shippable/opt: WDYJtNvYSdOFZLOAZgj4fg + partials-signing-kk-linux64-shippable/opt: Wf7F7eE_T32PiVyMHBKYuA + partials-signing-kk-macosx64-shippable/opt: Vc9yXSeTSG61hW23GXMcKg + partials-signing-kk-win32-shippable/opt: Ghf58UEaSrG2j10vdPbYcg + partials-signing-kk-win64-aarch64-shippable/opt: C8B78gIjRMKMJPRtu9Bb1w + partials-signing-kk-win64-shippable/opt: cKCP4rRlRqSI_-hBHLlpkg + partials-signing-km-linux-shippable/opt: JxMUDjucRYOmv0sGZTJIAg + partials-signing-km-linux64-shippable/opt: eqqngHySSRGPe5pJx7op8w + partials-signing-km-macosx64-shippable/opt: SqkAOCpbS7-008qm59bOhA + partials-signing-km-win32-shippable/opt: VvyEiqPjSzCKc0DTbDSUfQ + partials-signing-km-win64-aarch64-shippable/opt: D3Ziemm9Sk6n7VYd_a7Xmw + partials-signing-km-win64-shippable/opt: K74Syv4WQtqz__CGR8gIag + partials-signing-kn-linux-shippable/opt: cPN5KdLpQ7W5LkpX4eN9Wg + partials-signing-kn-linux64-shippable/opt: S-hNDApxS1esxGTb_H-Czg + partials-signing-kn-macosx64-shippable/opt: Jnj21-AbR2ehizJurAF9WQ + partials-signing-kn-win32-shippable/opt: WuNkwsgKTKaX-JBIZ0Fv5g + partials-signing-kn-win64-aarch64-shippable/opt: U0n0NVnOSEqzaC4WBmUvKw + partials-signing-kn-win64-shippable/opt: NpJwvZd4SQqHiQEsqX87Ug + partials-signing-ko-linux-shippable/opt: K8w0yi8cSEaIUWt3AKMbPQ + partials-signing-ko-linux64-shippable/opt: cICgb7DWTgOmgKA2Ql4CzQ + partials-signing-ko-macosx64-shippable/opt: bGed8YUnSle4OtVjHplLWw + partials-signing-ko-win32-shippable/opt: aJa_gAHeRyOqhsJk2es7Gg + partials-signing-ko-win64-aarch64-shippable/opt: enb_HvPgRcOJ5FmXwGUcyg + partials-signing-ko-win64-shippable/opt: fnvgtjlNSSWy1F8v-xL2-g + partials-signing-lij-linux-shippable/opt: Gh2C7p40RleStHTf0vjyOw + partials-signing-lij-linux64-shippable/opt: Be_BUi11S1aN69WhY7w2pA + partials-signing-lij-macosx64-shippable/opt: cEp8gjhUQF6GT9Nv534bdg + partials-signing-lij-win32-shippable/opt: DkUB3ozoQL-od71cazoO9g + partials-signing-lij-win64-aarch64-shippable/opt: IbEawCQDQ1mEZj2NyEsPFA + partials-signing-lij-win64-shippable/opt: TBxPrE-xR1mGr1ggSVn8ww + partials-signing-linux-shippable/opt: FkODQb83TKKP5PeUjo4keg + partials-signing-linux64-shippable/opt: BwyksKa3QzuIiTrYyGTkiw + partials-signing-lt-linux-shippable/opt: DavG-8xNQoG3VC81BT9OXA + partials-signing-lt-linux64-shippable/opt: bx4gy12xSACldC5F1azZ7w + partials-signing-lt-macosx64-shippable/opt: TA9NrT03QICZpvgdD2O36g + partials-signing-lt-win32-shippable/opt: HlwvcNU6QV2o4EE7CdofYg + partials-signing-lt-win64-aarch64-shippable/opt: X-ob6ALfQQ-VtFAnwo34zw + partials-signing-lt-win64-shippable/opt: PsoKdcNDQBmr0nBy6JeAjQ + partials-signing-lv-linux-shippable/opt: HAD6S1Y1S0qSZVuZyNUfUw + partials-signing-lv-linux64-shippable/opt: fxZKxVgaSjCJYlXL5B6-WQ + partials-signing-lv-macosx64-shippable/opt: fgXGEpAgSAibzWKlKBtqpw + partials-signing-lv-win32-shippable/opt: Z25f1t09SWGH3PWnv9cmyw + partials-signing-lv-win64-aarch64-shippable/opt: etiYLDyrQ_uEhqnFN8mchw + partials-signing-lv-win64-shippable/opt: edts70BPS_qLvxITqmPcWg + partials-signing-macosx64-shippable/opt: NFn0kb6eRSur8lqMo0O_CA + partials-signing-mk-linux-shippable/opt: aXhXVfhwS-eEag_bIXLk3Q + partials-signing-mk-linux64-shippable/opt: JkAVpLzjQnu92rmpncffdg + partials-signing-mk-macosx64-shippable/opt: KIfAD66aSta5QgAai-2L5w + partials-signing-mk-win32-shippable/opt: AFbmeLhsTyuYdAQCQk_FTA + partials-signing-mk-win64-aarch64-shippable/opt: EQXL8H1nT6acOKXr1wkSxQ + partials-signing-mk-win64-shippable/opt: ZzACjGk7RNmM3ULLVEWBNg + partials-signing-mr-linux-shippable/opt: andS2WaZSHmvTR2s_fHdng + partials-signing-mr-linux64-shippable/opt: FLld0-aJRcmk7tJJMRMGWQ + partials-signing-mr-macosx64-shippable/opt: QIJ_IDfSQAKuaGcUpDHPGw + partials-signing-mr-win32-shippable/opt: Z5UkYqaJTp2xYGRadGeLfg + partials-signing-mr-win64-aarch64-shippable/opt: XV01ng57S5-MKID6h4GgeQ + partials-signing-mr-win64-shippable/opt: Vyd-VqYjQ1CZH8fjj2ZCvA + partials-signing-ms-linux-shippable/opt: YbII83hFR-iYF2R4KPUVmA + partials-signing-ms-linux64-shippable/opt: JcjtFdU3QiGpq_QBQg0IwA + partials-signing-ms-macosx64-shippable/opt: aza5AnHMQJC1hR_DKojTKA + partials-signing-ms-win32-shippable/opt: PirSFwXHSNmzOEbxkSXmSA + partials-signing-ms-win64-aarch64-shippable/opt: J6hW1P2mSQmE4QKXjDMAHA + partials-signing-ms-win64-shippable/opt: OLNOkqzXSr2ZB5hNyZiHRw + partials-signing-my-linux-shippable/opt: GhAM4RRyTuaUgnG-Cgm8OA + partials-signing-my-linux64-shippable/opt: I8DAb74_SDq0viv1AZq0_A + partials-signing-my-macosx64-shippable/opt: dzazT3vCRD6LE6kBGNQISg + partials-signing-my-win32-shippable/opt: YXLEaO9KSsmhh7eM5eWZkw + partials-signing-my-win64-aarch64-shippable/opt: bB-1MlmKQbWw6rmSpTd4nA + partials-signing-my-win64-shippable/opt: UKEdPzkETseazUY9iwg8_g + partials-signing-nb-NO-linux-shippable/opt: RnR8xH-lSyWAV6MdYCQ_ew + partials-signing-nb-NO-linux64-shippable/opt: AElcO9CMTSmzioPtZn_boA + partials-signing-nb-NO-macosx64-shippable/opt: X4FwR2x8Rr6axhHV0vJbqQ + partials-signing-nb-NO-win32-shippable/opt: Lcw0U2IVTZCzKzy0_6QlVg + partials-signing-nb-NO-win64-aarch64-shippable/opt: RIZPWN9OT92YS0JFNMWSbg + partials-signing-nb-NO-win64-shippable/opt: J6iQSVdXTuGmPjRGnv69_A + partials-signing-ne-NP-linux-shippable/opt: Z2xgkkYzRvm9zGdOykFQtA + partials-signing-ne-NP-linux64-shippable/opt: PQHUUI1dS6axNWmoPrUupg + partials-signing-ne-NP-macosx64-shippable/opt: e4E28EjXQyqzLxmSsB9QZA + partials-signing-ne-NP-win32-shippable/opt: ZxbanRFHQuy7JTT4DgYBRA + partials-signing-ne-NP-win64-aarch64-shippable/opt: aa2kpZRISIyxkakRwcWerQ + partials-signing-ne-NP-win64-shippable/opt: BJYDbZxESzSWzyY6lDkLHA + partials-signing-nl-linux-shippable/opt: B8eSyunxTXGHiSw09Vl7fA + partials-signing-nl-linux64-shippable/opt: JiadZaPSTrOj9xHf-W4EPw + partials-signing-nl-macosx64-shippable/opt: H1MKkwi2T9OMHTNL9OcJEg + partials-signing-nl-win32-shippable/opt: Yvwx6YohQuq0gytonuayfw + partials-signing-nl-win64-aarch64-shippable/opt: brxBUqJOTOyIuvswDCDxeg + partials-signing-nl-win64-shippable/opt: JGThm2zOTNWN6YtFsOIOCA + partials-signing-nn-NO-linux-shippable/opt: eEyODrphQAumhkbmgad44Q + partials-signing-nn-NO-linux64-shippable/opt: EMjhyZ2MQmqLnGSSkC4M-g + partials-signing-nn-NO-macosx64-shippable/opt: AZGTdCGmSNW3p7scALjUwA + partials-signing-nn-NO-win32-shippable/opt: bOgjXlqFTvu2BmHTSETEaA + partials-signing-nn-NO-win64-aarch64-shippable/opt: DHgA_L0XTWWH9-mbJ1tebA + partials-signing-nn-NO-win64-shippable/opt: D1oJDbQGRu6_aUsp7MoOUw + partials-signing-oc-linux-shippable/opt: SfSSyUhQQ5aZ6gPfCT3Wvw + partials-signing-oc-linux64-shippable/opt: cg0YDRorT1meXKE2AermHQ + partials-signing-oc-macosx64-shippable/opt: FeEvWnebQ2qaSreuGtn-wg + partials-signing-oc-win32-shippable/opt: NqT7bNs0S9-_ujgvKkEFgg + partials-signing-oc-win64-aarch64-shippable/opt: LfmgCoeyTPe5ypKucqk8Yg + partials-signing-oc-win64-shippable/opt: BqcXQeXzRTWY1H2PUnnBmg + partials-signing-pa-IN-linux-shippable/opt: HuUyy-SZQjaZ35CTQx8sYw + partials-signing-pa-IN-linux64-shippable/opt: WHjsS7THRmeVt3rWhj72uw + partials-signing-pa-IN-macosx64-shippable/opt: GFLfrBsQQiinXmUQ0hVWQQ + partials-signing-pa-IN-win32-shippable/opt: TUPKP30YTOWzYPZH369pzA + partials-signing-pa-IN-win64-aarch64-shippable/opt: BD0YNQzfR26Flrn5V378bQ + partials-signing-pa-IN-win64-shippable/opt: a2KFuJ9AQl6j-j2oWIovCQ + partials-signing-pl-linux-shippable/opt: S3gpgys1R4e4yz47OQYk5A + partials-signing-pl-linux64-shippable/opt: V6zOpIX5QkqqwuaGfulT_A + partials-signing-pl-macosx64-shippable/opt: WUQ3ixNwR-KYiLyQuJ68oA + partials-signing-pl-win32-shippable/opt: OtqCf_hsRkKTk_joSDRzlg + partials-signing-pl-win64-aarch64-shippable/opt: NYMuhVGjRW-bNps3DAKtFQ + partials-signing-pl-win64-shippable/opt: LhQz-DieSImU5oqqS4SYtQ + partials-signing-pt-BR-linux-shippable/opt: DIIb4uG8R-Kd7RDdGjqtrg + partials-signing-pt-BR-linux64-shippable/opt: C3Bq0bvgSwqzAMWPnbLl5g + partials-signing-pt-BR-macosx64-shippable/opt: asmdb9yEQ5-v8pB2SFAKtA + partials-signing-pt-BR-win32-shippable/opt: Db5vn-RXQ5a_OOdEUXwKQA + partials-signing-pt-BR-win64-aarch64-shippable/opt: T5ddkU3-RsGfIYGBZve5RQ + partials-signing-pt-BR-win64-shippable/opt: Mip6BwvgRYOkAQ2Hs2nGtA + partials-signing-pt-PT-linux-shippable/opt: R3QPCvMORxuOfVvlnO1_kQ + partials-signing-pt-PT-linux64-shippable/opt: ZsuA4ixWQSOuke4Dri-76Q + partials-signing-pt-PT-macosx64-shippable/opt: Sb-_hylLRFSIf9JNQwLHMg + partials-signing-pt-PT-win32-shippable/opt: VLNR5jmISv6n8eUfoiPpuA + partials-signing-pt-PT-win64-aarch64-shippable/opt: Vido1n7LQmqdWAG1Z6P4Zw + partials-signing-pt-PT-win64-shippable/opt: MZqpH_g_ScW8ACBnCew0Ew + partials-signing-rm-linux-shippable/opt: bRJRMrT4QvCGFYtkW_54cQ + partials-signing-rm-linux64-shippable/opt: VlW-alO4Sxym9rgVYQKH4w + partials-signing-rm-macosx64-shippable/opt: V-90ZTsXSYGAbVwc3oSjEA + partials-signing-rm-win32-shippable/opt: X-Wn5ga5SrCgX6MBvZM2pw + partials-signing-rm-win64-aarch64-shippable/opt: XaaofW3CQk6ZNrQf1hQeCg + partials-signing-rm-win64-shippable/opt: UgntK7PBR-C4q1ze3A7pow + partials-signing-ro-linux-shippable/opt: Y4DxZ5cqT_elf5ncgC-rWQ + partials-signing-ro-linux64-shippable/opt: DcPNCTJSReycMfKxBFkF6Q + partials-signing-ro-macosx64-shippable/opt: Bx-BlzpGTcim0dBaRuAdjg + partials-signing-ro-win32-shippable/opt: AG7rCtkkSeWgGver2OxFLA + partials-signing-ro-win64-aarch64-shippable/opt: PBK5bgoOT3KOsq2-W9AmDA + partials-signing-ro-win64-shippable/opt: MTnm-UGnSiWp9koJ4s2TPw + partials-signing-ru-linux-shippable/opt: T9-KYJIfSvuhqw4-ortKLw + partials-signing-ru-linux64-shippable/opt: VHfAuZZoSwirIJOQJOXS8Q + partials-signing-ru-macosx64-shippable/opt: F7C2tLZoT0qZsml3_6543Q + partials-signing-ru-win32-shippable/opt: exkVeZ5cTDSNtH3OG-tbrg + partials-signing-ru-win64-aarch64-shippable/opt: HqXrdFaySS-yytmn0Vym3A + partials-signing-ru-win64-shippable/opt: UFYh3JsvT76QNGY7zdAccg + partials-signing-sc-linux-shippable/opt: YLw-qugRR4mw_DFwK5WXzA + partials-signing-sc-linux64-shippable/opt: PArNtSNIQNKUMDT3aFGrag + partials-signing-sc-macosx64-shippable/opt: D-o57st1TjmWRJImp-sZqg + partials-signing-sc-win32-shippable/opt: QySyfFdDR12L-mO1y0xgwg + partials-signing-sc-win64-aarch64-shippable/opt: KfUv7_E6RnGSWt0zgazHtg + partials-signing-sc-win64-shippable/opt: bDBMXMveQniv2tIHQ9GAiw + partials-signing-sco-linux-shippable/opt: GCe8IDTfTUOAvw2s1QxEGQ + partials-signing-sco-linux64-shippable/opt: PAk0_s3tTUWu_Et24o0rBg + partials-signing-sco-macosx64-shippable/opt: cGW4NHIYT0OnqwT1RVUe4w + partials-signing-sco-win32-shippable/opt: QdaUgcS4SiCw49iOiF9p_g + partials-signing-sco-win64-aarch64-shippable/opt: DudBBUxTT529i-WrJd5YoA + partials-signing-sco-win64-shippable/opt: HGqD6HCCTnKjYSgxJCwlNg + partials-signing-si-linux-shippable/opt: TmqCpq3WS6qF0zicAiRTfA + partials-signing-si-linux64-shippable/opt: f_lU1QcuQJaGy2FtK8Sa9A + partials-signing-si-macosx64-shippable/opt: Ri1_0FwiTomSOue-DSBToA + partials-signing-si-win32-shippable/opt: XI2AuyB0QSeuPTw1QUC2bA + partials-signing-si-win64-aarch64-shippable/opt: NK1Qa7CNRHurrO6ytJCmpA + partials-signing-si-win64-shippable/opt: LlU6dz0XTJSLvywTv4Spew + partials-signing-sk-linux-shippable/opt: dKOzUUrURiub9BTTwMKvPA + partials-signing-sk-linux64-shippable/opt: bmQR6bgrSraUBMtINzme3A + partials-signing-sk-macosx64-shippable/opt: IkBZag4jShmXmTDDcT7BSA + partials-signing-sk-win32-shippable/opt: WEuxgOx8QKuLHtt8BZ8iWA + partials-signing-sk-win64-aarch64-shippable/opt: CkgEYHAMSOaPKZoL0rSLzg + partials-signing-sk-win64-shippable/opt: eBthdKXMTwOWBzYt3Sx-AQ + partials-signing-sl-linux-shippable/opt: VFjFOMbHRfaQ4aEialHS3g + partials-signing-sl-linux64-shippable/opt: KannJMqUTyuie6t6Bd35rw + partials-signing-sl-macosx64-shippable/opt: JnFzZ6rcRkyGY1LmfMVixw + partials-signing-sl-win32-shippable/opt: TRSG-OOgSfyBDCmXXLbeZg + partials-signing-sl-win64-aarch64-shippable/opt: QH5rHKhCSCG6XtnMkxapmw + partials-signing-sl-win64-shippable/opt: GaJAv3cgR3Wql7eBROOiVg + partials-signing-son-linux-shippable/opt: L8cbaZjYS3Wqy3u9XA7PSg + partials-signing-son-linux64-shippable/opt: akPprO5DRJiVTYBqbPxq3Q + partials-signing-son-macosx64-shippable/opt: STKRdyUOQo6-uqLaxgMwUg + partials-signing-son-win32-shippable/opt: EmKuLUeEQG-Gt1ttFdPxpA + partials-signing-son-win64-aarch64-shippable/opt: Q8rzzYujRtakplTvWBwJtw + partials-signing-son-win64-shippable/opt: NVRvLaTVQjqIvZeb_r9rMA + partials-signing-sq-linux-shippable/opt: dR4QBXKGQiyez0UmSwAYgw + partials-signing-sq-linux64-shippable/opt: W6sJhc8bQrS0Ie81_0_6NA + partials-signing-sq-macosx64-shippable/opt: FSdX8Lo-R9W-ZoKZro8jCA + partials-signing-sq-win32-shippable/opt: DP9b_WgwQHmbBNN_TD-gsw + partials-signing-sq-win64-aarch64-shippable/opt: L1JHFXATS1yufW7hquxSgw + partials-signing-sq-win64-shippable/opt: ACoq13fJTBCMp6WqcrV4aA + partials-signing-sr-linux-shippable/opt: KGmXOaTQQyKHO7T-rcaiSw + partials-signing-sr-linux64-shippable/opt: GzBzkJniTv2wTo8Au6MUZQ + partials-signing-sr-macosx64-shippable/opt: Xrr4eJGrSBmeRv5qbpD0dA + partials-signing-sr-win32-shippable/opt: ch35LATKRqCyDRQruSsaTw + partials-signing-sr-win64-aarch64-shippable/opt: XUdQb987SSuyjkOGZVAeXg + partials-signing-sr-win64-shippable/opt: S6lnZMuuQCuhAeL0yq3B2g + partials-signing-sv-SE-linux-shippable/opt: X_pAO1gURoOjZ8J_cjw4Ug + partials-signing-sv-SE-linux64-shippable/opt: R3vEM7lQTlys-Q9eJpU8_Q + partials-signing-sv-SE-macosx64-shippable/opt: Pwoq8uW8SVmynEymRQwvOg + partials-signing-sv-SE-win32-shippable/opt: akbpKKndQM6VFkvD1EKvJA + partials-signing-sv-SE-win64-aarch64-shippable/opt: de-z2eD2Tn-SosUfmrEBUQ + partials-signing-sv-SE-win64-shippable/opt: YA6w3WBXQdSuz8fGvdtOdg + partials-signing-szl-linux-shippable/opt: KFfm1JkFTPS5_GsbicP81w + partials-signing-szl-linux64-shippable/opt: IirghfwtSLqKOMwbNLy3DA + partials-signing-szl-macosx64-shippable/opt: LTKdVr47Rg2RdOpiWVfEDA + partials-signing-szl-win32-shippable/opt: OYTxleVeTq6Y2cB7CgC6eA + partials-signing-szl-win64-aarch64-shippable/opt: HyYXWRHjSmiznk9jdjxyHQ + partials-signing-szl-win64-shippable/opt: XlwCo7nDSNGFJRmmtlHQBQ + partials-signing-ta-linux-shippable/opt: HByjJxXvQA2-8RFCQvJaZA + partials-signing-ta-linux64-shippable/opt: KPUUg7qJT3qDLXANj8FRIg + partials-signing-ta-macosx64-shippable/opt: I0Ws9eeGSV2r1FYds3i1LA + partials-signing-ta-win32-shippable/opt: eiqS7LkCRZazUVc3y5tXgQ + partials-signing-ta-win64-aarch64-shippable/opt: enJ7EJnASXucrZ8j2fgIiQ + partials-signing-ta-win64-shippable/opt: XT1n7AE5SFCvm7D3nLkgrA + partials-signing-te-linux-shippable/opt: Eluxsy1XTPiFxLFvWx-j4Q + partials-signing-te-linux64-shippable/opt: GOhyZs1VQ6eeCUFwB9dAjQ + partials-signing-te-macosx64-shippable/opt: advQtMLFTIGRjxlp9nrABA + partials-signing-te-win32-shippable/opt: JdFr7yUzTzqWpsEvEzacIQ + partials-signing-te-win64-aarch64-shippable/opt: YF3KcTUnSh-WS9QmAqDGpA + partials-signing-te-win64-shippable/opt: BEvdQdgjRDe50IyIlztXAQ + partials-signing-tg-linux-shippable/opt: SzaepwyRQ6eDQkomvQiLEg + partials-signing-tg-linux64-shippable/opt: ACHFCAMFQsiGHXMivSrgIw + partials-signing-tg-macosx64-shippable/opt: FpSuI6Y7Tv2YwK8x_RwClA + partials-signing-tg-win32-shippable/opt: GW5brWciQBC67mVWARU08Q + partials-signing-tg-win64-aarch64-shippable/opt: VCMqC9AZRuG_YJEols095w + partials-signing-tg-win64-shippable/opt: Zxw_vd8ITMCEuimDvkQ1sQ + partials-signing-th-linux-shippable/opt: fe2uQcyPSliH6d0qtKI0qQ + partials-signing-th-linux64-shippable/opt: IeXYfGlTQCuhmx1HnoDrWQ + partials-signing-th-macosx64-shippable/opt: HnZa6S0ZRNe9NNA1VxXHZQ + partials-signing-th-win32-shippable/opt: LZZpub9BQeimVKYRXl2Yzg + partials-signing-th-win64-aarch64-shippable/opt: AZA0obWZQ7qzZN91d2IYrQ + partials-signing-th-win64-shippable/opt: YJga_jxhQbucm3XNj8PtSw + partials-signing-tl-linux-shippable/opt: bIIyXavjSouv4aZJuBmh8w + partials-signing-tl-linux64-shippable/opt: ApmJcZ5GSeGkbKh4AwtmhQ + partials-signing-tl-macosx64-shippable/opt: ExSBBbs7RjKjVJIjfGDafQ + partials-signing-tl-win32-shippable/opt: Er2hsTHKSNGOD_YjaMyONg + partials-signing-tl-win64-aarch64-shippable/opt: KI79c4QKQYWQQeIyzSFNug + partials-signing-tl-win64-shippable/opt: UC3d19mwRMSWyEpBnl9eig + partials-signing-tr-linux-shippable/opt: DkDccutkRs2mxucJlw96cg + partials-signing-tr-linux64-shippable/opt: BLT2owsIQmyPg2RGCdu6Eg + partials-signing-tr-macosx64-shippable/opt: AMQnYuajS7uzN0zQSQMnFQ + partials-signing-tr-win32-shippable/opt: Qu4u_fjCTP2fxMmyKyJcQQ + partials-signing-tr-win64-aarch64-shippable/opt: fyVlYadRTYacLRSZYyz-WQ + partials-signing-tr-win64-shippable/opt: EBfdDYk4SJmHU860VzRjcg + partials-signing-trs-linux-shippable/opt: VLo1GZnMRe6aDLsny4WsXQ + partials-signing-trs-linux64-shippable/opt: ZoI6IOsSSRGv_XOCyaVCdg + partials-signing-trs-macosx64-shippable/opt: Ln3nTsM-SDqZDU1tHtVM6A + partials-signing-trs-win32-shippable/opt: HoXZXKpTRlmT6vfD8SQsow + partials-signing-trs-win64-aarch64-shippable/opt: KX0elmhIQzCLJJMbFmoZ0Q + partials-signing-trs-win64-shippable/opt: V4E0PNRcQo-DYMOT3eqrSA + partials-signing-uk-linux-shippable/opt: aeDKOdUVSJK4hw8y-s9Vjw + partials-signing-uk-linux64-shippable/opt: YgpkcVoLTZCUtucTCImElg + partials-signing-uk-macosx64-shippable/opt: MQUHJKTCSrCKbpq_NqB20Q + partials-signing-uk-win32-shippable/opt: UWYVz9DpRGK4uBFbtV9UPg + partials-signing-uk-win64-aarch64-shippable/opt: JQB1dleJRWasCzPUsmCiXQ + partials-signing-uk-win64-shippable/opt: be1UVkwKThSD21tEaHQxNg + partials-signing-ur-linux-shippable/opt: UGJ5k7wxSoW63DyWl-VGhg + partials-signing-ur-linux64-shippable/opt: cvSnH1KlTFqbZoWcLDAF8g + partials-signing-ur-macosx64-shippable/opt: NIXqZnNxS6eVma3oQU2ZOQ + partials-signing-ur-win32-shippable/opt: Dj2pSsu0QJa6gUjUFIMQ-w + partials-signing-ur-win64-aarch64-shippable/opt: fbuSQ7CdRFa-sJdwjCWBCQ + partials-signing-ur-win64-shippable/opt: DcV7dmcuQ0ecm_hcvJZFmg + partials-signing-uz-linux-shippable/opt: MsxGIu4FTXC34yOB0QToww + partials-signing-uz-linux64-shippable/opt: JZhRYXSfRFiSFaUhtNoXrw + partials-signing-uz-macosx64-shippable/opt: fyB_N16DQRacKOKDGmxoEw + partials-signing-uz-win32-shippable/opt: SW5cVP2oRdWt8PoFKXkyyA + partials-signing-uz-win64-aarch64-shippable/opt: SYan7O0SRKqMr422N_YKHQ + partials-signing-uz-win64-shippable/opt: Vv0_Mm-oTSe1HMxNPBMW2Q + partials-signing-vi-linux-shippable/opt: CHpqXq1UQ5m8ZZ3-eX8Ovw + partials-signing-vi-linux64-shippable/opt: RKxJy-RwTsiCEaEarxtB1A + partials-signing-vi-macosx64-shippable/opt: HBdsbBhNTRymvkEVi5muVQ + partials-signing-vi-win32-shippable/opt: eUF_is7YSq-YwFKkfjy00Q + partials-signing-vi-win64-aarch64-shippable/opt: f6Ma60aeT_Cqlj2XHsdxZA + partials-signing-vi-win64-shippable/opt: NHkKl3-JT-uxfC9gjav09w + partials-signing-win32-shippable/opt: WC_fv5_fQl2yWH02Lltffw + partials-signing-win64-aarch64-shippable/opt: ZXueFroKQrmaBzZTuCH9iA + partials-signing-win64-shippable/opt: Em-N_o_JTR678Moe02W2QQ + partials-signing-xh-linux-shippable/opt: YFzJy0QxQAWwDdgi5PWWUw + partials-signing-xh-linux64-shippable/opt: fO640szoSLisMZaLx3_SVg + partials-signing-xh-macosx64-shippable/opt: dPdmNI2FSl-Z-kUmXgRBEA + partials-signing-xh-win32-shippable/opt: eIxAu58QQAe0U_3hUnYllA + partials-signing-xh-win64-aarch64-shippable/opt: b-zgbTl4SbqM1lUbvBANQA + partials-signing-xh-win64-shippable/opt: URGudZZMTJOpBF-k4eUMJw + partials-signing-zh-CN-linux-shippable/opt: SrZxTfoQQJCpFkyvEvYZlw + partials-signing-zh-CN-linux64-shippable/opt: At1Y5tRRTnaiB2ZUeCu0cw + partials-signing-zh-CN-macosx64-shippable/opt: TiROOOCBTbiJMVNmmKYaEA + partials-signing-zh-CN-win32-shippable/opt: FsSQHLBjR3qudjKr7vqahg + partials-signing-zh-CN-win64-aarch64-shippable/opt: Aw6VpzMhRUuJ-zcFJt6K_g + partials-signing-zh-CN-win64-shippable/opt: ade4R98mQ9KaF9zClv5n2Q + partials-signing-zh-TW-linux-shippable/opt: Vvihaid0QUqr09vQdcPjjw + partials-signing-zh-TW-linux64-shippable/opt: HlBNqrGFRoS_H8Re3AiATQ + partials-signing-zh-TW-macosx64-shippable/opt: R-uANiygTKqicwN8wH4OFg + partials-signing-zh-TW-win32-shippable/opt: YojmCp70T66-sdcNUREy-Q + partials-signing-zh-TW-win64-aarch64-shippable/opt: ZEZBA_yWTxqWY6hdQjMceQ + partials-signing-zh-TW-win64-shippable/opt: Jk7wKvA8Rbuy1u10PQXSeg + partials-sk-linux-shippable/opt: BV9OPcTWSkedijsO0rJGFA + partials-sk-linux64-shippable/opt: EWjFeD04Se-_axWDJLHMRA + partials-sk-macosx64-shippable/opt: GrBoN-pDR8agP4e_tZVx4Q + partials-sk-win32-shippable/opt: fL4qzFHdTeKYRKuHd0G3Iw + partials-sk-win64-aarch64-shippable/opt: Y5il1omJRKSL9cBUSCtL2w + partials-sk-win64-shippable/opt: PBMmAERAQz-6VFAO05JNNw + partials-sl-linux-shippable/opt: QdaeQhq4R5WXBzrrBq7LKg + partials-sl-linux64-shippable/opt: FClri4mRTfGs6HuYRo5d4w + partials-sl-macosx64-shippable/opt: FoZaFQf7QOiwKB8b27Moxw + partials-sl-win32-shippable/opt: e3NQg2F2RIK9Otwf28fs-w + partials-sl-win64-aarch64-shippable/opt: CxdwPi8_T-KSsg3BQHc9YQ + partials-sl-win64-shippable/opt: bRgMNV94SBuvi4iL9ZCuKQ + partials-son-linux-shippable/opt: QxwZY_IKQFWxPe-eLvCkeA + partials-son-linux64-shippable/opt: Hevuzz1pS_K44U-ipTnJ5Q + partials-son-macosx64-shippable/opt: Ym1wbTu0Q6OzWcXy2I6Wkw + partials-son-win32-shippable/opt: RI4P7LTTSwiNz3We2Ml1Zg + partials-son-win64-aarch64-shippable/opt: E2zFfBHQSNKnktpVmggZPw + partials-son-win64-shippable/opt: WQjndewmQBCjjXnVx9tdeA + partials-sq-linux-shippable/opt: I_VXLAVeQXCpaxbsUYA_ig + partials-sq-linux64-shippable/opt: bViXWddOTlOqAzjTj3Artg + partials-sq-macosx64-shippable/opt: CRnRC2kiTpatBOvAGPTrrQ + partials-sq-win32-shippable/opt: F5ezRueZS_OVB_XRayLFxQ + partials-sq-win64-aarch64-shippable/opt: S7gA4fnoTF2xSr5fVIQUsw + partials-sq-win64-shippable/opt: aWu24YPPQaWmvUvTcsrL8g + partials-sr-linux-shippable/opt: IF0laq7USzGtMkxPsuy-Cg + partials-sr-linux64-shippable/opt: J6Y36iOyTKCzxxPdSBE3zw + partials-sr-macosx64-shippable/opt: NS5wTlXbT_OH2ZtKqeT97Q + partials-sr-win32-shippable/opt: On6CPL0qTC2vngx4JZ9b0g + partials-sr-win64-aarch64-shippable/opt: SOaOiSjXRFqs4f9qx8LnYw + partials-sr-win64-shippable/opt: QGygcxxLQGuKPLh45LpZwQ + partials-sv-SE-linux-shippable/opt: Pao_oVZqSJSFMB_qAfmjIw + partials-sv-SE-linux64-shippable/opt: SlAPEdjHTS6LhRQOaGvG_A + partials-sv-SE-macosx64-shippable/opt: Ud9mme8HTWWX4ML2hA-8pA + partials-sv-SE-win32-shippable/opt: b5gT6jg3QIqxxzNl4SdOMQ + partials-sv-SE-win64-aarch64-shippable/opt: SBcL1l8QSLq38USMDQwhug + partials-sv-SE-win64-shippable/opt: NC9JcuAiShytd8DK0n1I0A + partials-szl-linux-shippable/opt: Ckngu4FzSXyu5AVaDPIU_Q + partials-szl-linux64-shippable/opt: H_4xGoAJRn6tDBhHQT8F2Q + partials-szl-macosx64-shippable/opt: SvMLeAvrRbONR7P2ix2IcQ + partials-szl-win32-shippable/opt: Cc7tJjyGQ1WxTM-Q1MSMdw + partials-szl-win64-aarch64-shippable/opt: dnd8mQohSzSuWOjRJN479A + partials-szl-win64-shippable/opt: YofCxY-iSumRFP2kaZ7O5Q + partials-ta-linux-shippable/opt: CR1s5B62TgSQKF32r4JsfQ + partials-ta-linux64-shippable/opt: XSUcvDBiQRGAbIXa8kPW2g + partials-ta-macosx64-shippable/opt: AQi9Ue1wSS2QmcmBTWxBjg + partials-ta-win32-shippable/opt: Dq10E9TPTZex4dAi-JlYpw + partials-ta-win64-aarch64-shippable/opt: PSYKME_aSF2ZQpUFLc3Klg + partials-ta-win64-shippable/opt: RZtLq6Y6STirZCg_1k2a1A + partials-te-linux-shippable/opt: LCvwBlM8T7OR_GnuHnHbGA + partials-te-linux64-shippable/opt: fx9yDsUcT7iHZXc_lAQd3Q + partials-te-macosx64-shippable/opt: EhJPHD22SMW6jgw5ZIhH9w + partials-te-win32-shippable/opt: Fiwpf7-yQ6CjCoXzrGEjUg + partials-te-win64-aarch64-shippable/opt: LLNWIvddSIim6ULxCvUH5g + partials-te-win64-shippable/opt: APFN0Rx4T3Cxznl5y2jJjg + partials-tg-linux-shippable/opt: DD6rYhD1RJygt320BZGB6g + partials-tg-linux64-shippable/opt: KKNwwEdWScCUhMu8olCnkw + partials-tg-macosx64-shippable/opt: RB8w1HAsTnOPt-MqPBb0Bg + partials-tg-win32-shippable/opt: RPYzzh49QAOmjGz-0_uh6g + partials-tg-win64-aarch64-shippable/opt: UFs0RhYZS_K-97pIczQlEQ + partials-tg-win64-shippable/opt: IMpOq8axT8S89DBv_my2cQ + partials-th-linux-shippable/opt: MEDMVlgpT32PxymvewO1lQ + partials-th-linux64-shippable/opt: DOugq5soSKqXQyKVKvVkrw + partials-th-macosx64-shippable/opt: a3yGY0vXTaGxxFztlIA7ww + partials-th-win32-shippable/opt: U8vlySjAS2OILt-F8Z9jOA + partials-th-win64-aarch64-shippable/opt: OyyfV-uySrCqcmFyftJ_9A + partials-th-win64-shippable/opt: evTahf5wRDGCM7U5MNuqjg + partials-tl-linux-shippable/opt: ZF1I3_oqTtWCg-v6u_-XkQ + partials-tl-linux64-shippable/opt: Cn7RDjSFT82V-hHI0lupuA + partials-tl-macosx64-shippable/opt: DoSh9FvHT_eTO6fIlrCCig + partials-tl-win32-shippable/opt: Fk7Zet1iR0KXHlp9ju6XuA + partials-tl-win64-aarch64-shippable/opt: cQqgt_gJRBeFyXx7k_F75g + partials-tl-win64-shippable/opt: D3l9dwaIQ-uQ8t2cKFyEmA + partials-tr-linux-shippable/opt: KqHWiMOOS6SrqVWqlFbk1Q + partials-tr-linux64-shippable/opt: Y2VtWh3KQo62fMqoy4LlWQ + partials-tr-macosx64-shippable/opt: AzN5qYViQcKg5stInMyOxw + partials-tr-win32-shippable/opt: Eqdf1a5FQL-6WM_gNm4-lA + partials-tr-win64-aarch64-shippable/opt: VMnXlqRxQtOmr-K2YupbqA + partials-tr-win64-shippable/opt: MXfeG1raSc-htxM_q82OdA + partials-trs-linux-shippable/opt: cwAgbndTQ8O2PlWI6lndCg + partials-trs-linux64-shippable/opt: ceSdVdlETfudO0AIbLAw0w + partials-trs-macosx64-shippable/opt: bbxM0DyZT9SVLfsEcCV68g + partials-trs-win32-shippable/opt: eyHLba-yRDeVUBGe5x4NrQ + partials-trs-win64-aarch64-shippable/opt: IoRqbTsBS5uR7XVoeoMjHw + partials-trs-win64-shippable/opt: aA-OBLGuThuZy1YJACbczA + partials-uk-linux-shippable/opt: b3h60IuDTE68V-sGtjJYLw + partials-uk-linux64-shippable/opt: NJHyN9ZcSW-P7E9fmCgPww + partials-uk-macosx64-shippable/opt: Q-X8n8EKT4-BHeR-cFltaA + partials-uk-win32-shippable/opt: PDNe2NkbQOKmBJKi01mxdA + partials-uk-win64-aarch64-shippable/opt: Tnro0iUrQQ27iUD-ffKcvA + partials-uk-win64-shippable/opt: cO2EH9QWQCSJCVOsuZ6sZQ + partials-ur-linux-shippable/opt: SHzpFRDJQT6E2vjlD-r3Sg + partials-ur-linux64-shippable/opt: c-I3d4-QTim9phoFsWpvJA + partials-ur-macosx64-shippable/opt: CHhMdbqQTxiNfthcy7mglQ + partials-ur-win32-shippable/opt: GOoF36OmTZ6dDIc611SJBg + partials-ur-win64-aarch64-shippable/opt: dE-h-Ue7Qpq6TvB33ukIZQ + partials-ur-win64-shippable/opt: GAeS7w6AS9qHhLnswJJ0OA + partials-uz-linux-shippable/opt: IggS-DVeQLGb7OC-Y-wLNA + partials-uz-linux64-shippable/opt: WREeq28hSAKSJl07LInsXA + partials-uz-macosx64-shippable/opt: ZdtKMVuRTWaP5AH6EcOr8w + partials-uz-win32-shippable/opt: RWFH18aNQsWvKlMz6AYGiw + partials-uz-win64-aarch64-shippable/opt: R4QRBIAwQt2KtchbLi6sLQ + partials-uz-win64-shippable/opt: AbjvI4NZQmCBh_t4lVGWhw + partials-vi-linux-shippable/opt: AO2qJSQuRNer-yLveXMwhg + partials-vi-linux64-shippable/opt: O5YoemZLS5yqAbfNMwU8yg + partials-vi-macosx64-shippable/opt: KNzSnk5pQiO2uUVXacx0rg + partials-vi-win32-shippable/opt: EfbYxefNRiePLt7BddvWAQ + partials-vi-win64-aarch64-shippable/opt: KL7nse7GQQOWVrdSSlvYUQ + partials-vi-win64-shippable/opt: caWbfxW8RMSGI7yNIjjAmA + partials-win32-shippable/opt: HL6TUX2wR-K_nUqS0hB8Lg + partials-win64-aarch64-shippable/opt: ATkt8ZKyTC-dtlEveC7ugQ + partials-win64-shippable/opt: Ey61eEbsTf6xdK3pqSao3g + partials-xh-linux-shippable/opt: OPAE08rUTTyPdCbbuKlXsg + partials-xh-linux64-shippable/opt: JN0rxHmgQ4G0ZzfzAlxF3Q + partials-xh-macosx64-shippable/opt: XyZIJ277S_OwjK1k5NpBqQ + partials-xh-win32-shippable/opt: OY0CUZu4Q0WKfZGB8aGodw + partials-xh-win64-aarch64-shippable/opt: eoNF41sbSIWXw8Ri-KqLcg + partials-xh-win64-shippable/opt: dkrMI4iSTZaY5GNO4ArlJA + partials-zh-CN-linux-shippable/opt: Q889ruKyTrKpM6Cm4p_1YA + partials-zh-CN-linux64-shippable/opt: Y7oGSBqBRqaFvLzmvBpi4Q + partials-zh-CN-macosx64-shippable/opt: Ow5DlidNRQWLkUMHRg1ATQ + partials-zh-CN-win32-shippable/opt: aNIBz4pQTamuKHYDBioblQ + partials-zh-CN-win64-aarch64-shippable/opt: WTW1SttzQCiqMzP1B1fA8A + partials-zh-CN-win64-shippable/opt: FJL-H-N0TSuTurho7b04-A + partials-zh-TW-linux-shippable/opt: FO-po4RJS7We7zQsr2tcTw + partials-zh-TW-linux64-shippable/opt: HTicwI9JRw6YgD4uEzXULQ + partials-zh-TW-macosx64-shippable/opt: dunhkN-LTHa7rMhkvEnxBw + partials-zh-TW-win32-shippable/opt: Z1vQJCkGSwKNgsIAbvxHNQ + partials-zh-TW-win64-aarch64-shippable/opt: V_NBJ3SlTBmqi3ltM_96wQ + partials-zh-TW-win64-shippable/opt: MYVHobLRTrmhhj1cbQyoqA + post-balrog-dummy-icecat-linux-shippable-1: WH-IS9sVRgWEnabnw6or9g + post-balrog-dummy-icecat-linux-shippable-2: YhRKssrNTKW4jqBiXi3SNA + post-balrog-dummy-icecat-linux64-shippable-1: ZT6dnxY-Tpq5Ioj-KVCwNw + post-balrog-dummy-icecat-linux64-shippable-2: WE8FTAxcTZmd9XP7OJlGLA + post-balrog-dummy-icecat-macosx64-shippable-1: XNivbF1LT1yTiZkEX28Bkg + post-balrog-dummy-icecat-macosx64-shippable-2: SgDgm_5DSZS6e_t0jnx6cA + post-balrog-dummy-icecat-win32-shippable-1: YhCZqnNPQViZ4N8l6quTHg + post-balrog-dummy-icecat-win32-shippable-2: HoQJrWwdRvOYVa-wqh6Drw + post-balrog-dummy-icecat-win64-aarch64-shippable-1: DAKQJtC_QtG1mKzmCZFrPg + post-balrog-dummy-icecat-win64-aarch64-shippable-2: bC2Yif6OS8-HVWzbkDt-NA + post-balrog-dummy-icecat-win64-shippable-1: E7syYr-cR2qgo-SjMEZK7A + post-balrog-dummy-icecat-win64-shippable-2: XjHVtP3QRU-9CSbvniep7g + post-beetmover-checksums-dummy-icecat-promote-1: JsQEci8JRoaJh6jiPv8evA + post-beetmover-checksums-dummy-icecat-promote-2: JN3wOzwrQpO1utF8p8VNDg + post-beetmover-checksums-dummy-icecat-promote-3: PV7AtUlfRAKaOE-7LWxbYQ + post-beetmover-checksums-dummy-icecat-promote-4: VVdWQ8kjRESV9NCS07YDkQ + post-beetmover-checksums-dummy-icecat-promote-5: Qo4lIqqsRpuzJ9l7oupfVA + post-beetmover-checksums-dummy-icecat-promote-6: fmq4701_QMu2kWCdCZxsrA + post-beetmover-checksums-dummy-icecat-promote-7: EsAjUV7ERfKykg319ADCQw + post-beetmover-dummy-icecat-linux-shippable-1: Wq-DGC9oT4mYLFmDKG2Jlg + post-beetmover-dummy-icecat-linux-shippable-2: f85ZxpTxRlaFnlH_GKhlPA + post-beetmover-dummy-icecat-linux-shippable-3: QXZuNqnpRIe5KzTUdbm3-w + post-beetmover-dummy-icecat-linux64-shippable-1: csSt4DNkR9aOlIXF86zOjw + post-beetmover-dummy-icecat-linux64-shippable-2: e0HZQe6bSvSXi-ggVHAxdw + post-beetmover-dummy-icecat-linux64-shippable-3: KYWmd7UZTtCFtpu0YbVbeg + post-beetmover-dummy-icecat-macosx64-shippable-1: RUkON30sSJ26nC_wwPWoDg + post-beetmover-dummy-icecat-macosx64-shippable-2: Ka74_5kfQfykHXM9rfd1Ww + post-beetmover-dummy-icecat-macosx64-shippable-3: S2u6Gtx9QQ2AiX-wJkoxdA + post-beetmover-dummy-icecat-win32-shippable-1: S2I_zpvMRvGEIndLy_EVKQ + post-beetmover-dummy-icecat-win32-shippable-2: JW8VLj7JRBOUaz6VZBpMtg + post-beetmover-dummy-icecat-win32-shippable-3: dwqHp6GsSs6az292po8KRQ + post-beetmover-dummy-icecat-win64-aarch64-shippable-1: J8SUapgMSWipkuwjxYW_qQ + post-beetmover-dummy-icecat-win64-aarch64-shippable-2: Pn1L6RpuTqiUITwPbmAc9w + post-beetmover-dummy-icecat-win64-aarch64-shippable-3: U5F-p_CXRDSzT3GAmuNINw + post-beetmover-dummy-icecat-win64-shippable-1: VJgUfW76RsmXF3LOBl1cpA + post-beetmover-dummy-icecat-win64-shippable-2: fKGDh5GlRkuqibKZj5HXww + post-beetmover-dummy-icecat-win64-shippable-3: MZTc9ByBTOaUSQPDh5Q6Hg + post-langpack-dummy-icecat-promote-1: SuOdyI6ZRFiPKOIm6rJVhA + post-update-verify-dummy-icecat-linux-shippable-1: bk-IFLquRfamSF6T8z1ssg + post-update-verify-dummy-icecat-linux64-shippable-1: bTNwU74NR52RMo_APGarpQ + post-update-verify-dummy-icecat-macosx64-shippable-1: JdRhZusSTZOQ-A_52_KMkw + post-update-verify-dummy-icecat-win32-shippable-1: EN1E7IEdSKmq9GFNgxxb5w + post-update-verify-dummy-icecat-win64-aarch64-shippable-1: S2uiDCFfTJCYyfk5qcXeDg + post-update-verify-dummy-icecat-win64-shippable-1: DXN-GYupRg-snNue4yAg3w + push-langpacks-build-linux64-shippable/opt: QdAVwgxeSbaNQ08vqJRx5w + push-langpacks-shippable-l10n-linux64-shippable-1/opt: EQk1BTqhT2qVK0k3YYcCyQ + push-langpacks-shippable-l10n-linux64-shippable-10/opt: G5NA6SkVQvO2TAxrX54kNg + push-langpacks-shippable-l10n-linux64-shippable-11/opt: Fb-ivCBXRpCpKfaPInT5Sw + push-langpacks-shippable-l10n-linux64-shippable-12/opt: Fgawx4zqS9Ocq89b-vOI4Q + push-langpacks-shippable-l10n-linux64-shippable-13/opt: EyM-81-mQsikk448wx2zNg + push-langpacks-shippable-l10n-linux64-shippable-14/opt: SiZkDR42S1mHQZ4t7sG_9Q + push-langpacks-shippable-l10n-linux64-shippable-15/opt: MPi_1VqIQZ-sFDk3E4o5oQ + push-langpacks-shippable-l10n-linux64-shippable-16/opt: b-TqJtMYTg-C7IMQfYBDyw + push-langpacks-shippable-l10n-linux64-shippable-17/opt: b-E-3dvxSoqr6CeC5VItfg + push-langpacks-shippable-l10n-linux64-shippable-18/opt: aWf6RGSFTtO9ih5TwJWP9g + push-langpacks-shippable-l10n-linux64-shippable-19/opt: DxPqhJmxQAi90_BPkPNG_w + push-langpacks-shippable-l10n-linux64-shippable-2/opt: WCfqlvuvTvCikrc_cKLbXg + push-langpacks-shippable-l10n-linux64-shippable-20/opt: VXR0_rX8TXeIxYizTpx3gA + push-langpacks-shippable-l10n-linux64-shippable-3/opt: QsWTvm7AR026XA33xmZqXQ + push-langpacks-shippable-l10n-linux64-shippable-4/opt: KQ0i5bLYQq-BssM_6Fyosw + push-langpacks-shippable-l10n-linux64-shippable-5/opt: GVxdK2ftQgC00nU8mbTDeg + push-langpacks-shippable-l10n-linux64-shippable-6/opt: Gfok_vrsSBeI5N70jDV4hA + push-langpacks-shippable-l10n-linux64-shippable-7/opt: eykEX3i7S1Why3RpcztwpQ + push-langpacks-shippable-l10n-linux64-shippable-8/opt: Hp2key1uRgSqJVL0rCy3aA + push-langpacks-shippable-l10n-linux64-shippable-9/opt: eJb24HGbS32PjrVKYCWQng + push-langpacks-shippable-l10n-macosx64-shippable-ja-JP-mac/opt: ZSkAI3aQSOCDm8sq5M1B5A + release-balrog-submit-toplevel-icecat: N9Hhi5y7RRu7a9vkg8afRg + release-beetmover-signed-langpacks-checksums-linux-1/opt: Yi1a95tMQji68cFTZSmbxA + release-beetmover-signed-langpacks-checksums-linux-10/opt: AVZ9PoJdS1CnZ_C4Cq2UAg + release-beetmover-signed-langpacks-checksums-linux-11/opt: bxKEUWfmQbCIQxMczFSBWQ + release-beetmover-signed-langpacks-checksums-linux-12/opt: ewEZDCoaRAehqFI2VS0cng + release-beetmover-signed-langpacks-checksums-linux-13/opt: XOqIjGfwSHaNuaeiaZnTBQ + release-beetmover-signed-langpacks-checksums-linux-14/opt: MsxrbQlvR2yY3b5aS7cIaA + release-beetmover-signed-langpacks-checksums-linux-15/opt: AjxglPraRveP4pQdnkgCNA + release-beetmover-signed-langpacks-checksums-linux-16/opt: JT3rKkM7Rt6hSi8b_tAmgg + release-beetmover-signed-langpacks-checksums-linux-17/opt: fRhXaCFsSeGJ07SvFXoWhw + release-beetmover-signed-langpacks-checksums-linux-18/opt: OKx3ylVKRkmby7H70luu_Q + release-beetmover-signed-langpacks-checksums-linux-19/opt: aW0W7GnsRjOPl8gcsDTOgw + release-beetmover-signed-langpacks-checksums-linux-2/opt: FKL_8nvSQZGcy0mYItR69w + release-beetmover-signed-langpacks-checksums-linux-20/opt: P3icpQrqTAirr8PujE4RBg + release-beetmover-signed-langpacks-checksums-linux-3/opt: RDzqxr_VST-bv7bL2cKE3g + release-beetmover-signed-langpacks-checksums-linux-4/opt: HqndCCfHTxOgxbmkJEO9Fg + release-beetmover-signed-langpacks-checksums-linux-5/opt: TAZ0OdROSty4ri25DfoUrg + release-beetmover-signed-langpacks-checksums-linux-6/opt: OOf2UGHVSyGkGYiEzgR3Ew + release-beetmover-signed-langpacks-checksums-linux-7/opt: JfkWAEUXRS6lkInqEemcgQ + release-beetmover-signed-langpacks-checksums-linux-8/opt: Ag9bUZvHScauOLetlnzozg + release-beetmover-signed-langpacks-checksums-linux-9/opt: UsfYpPedQh688yufny_lEg + release-beetmover-signed-langpacks-checksums-linux/opt: HGGoQnHxRA26W-V595_KPw + release-beetmover-signed-langpacks-checksums-macosx64-1/opt: JIBVxVVFQ8esN5tiB5pwGA + release-beetmover-signed-langpacks-checksums-macosx64-10/opt: YH3vpX6aQgaNtMC2eFTEVg + release-beetmover-signed-langpacks-checksums-macosx64-11/opt: T_QebpsIRxeBG_XJ8mqlFA + release-beetmover-signed-langpacks-checksums-macosx64-12/opt: I67kdIl9RLaISVzVWbDFew + release-beetmover-signed-langpacks-checksums-macosx64-13/opt: GoNaC6DzQZ-rJhA3Ja0s1Q + release-beetmover-signed-langpacks-checksums-macosx64-14/opt: Evb8fShqSLG7bsP09mFTSg + release-beetmover-signed-langpacks-checksums-macosx64-15/opt: MQl5o-eSQOWRawP5Zp2jFA + release-beetmover-signed-langpacks-checksums-macosx64-16/opt: chtYJq21TviMH3wxfTj8hA + release-beetmover-signed-langpacks-checksums-macosx64-17/opt: VSFyAqTxSYKsh5bBs3QyMA + release-beetmover-signed-langpacks-checksums-macosx64-18/opt: FygJ4sjlQgGPy7dmLSHaLA + release-beetmover-signed-langpacks-checksums-macosx64-19/opt: ZHIg8TVwTYGAePuIgezgaw + release-beetmover-signed-langpacks-checksums-macosx64-2/opt: F9vVva7IQt67ouQOBnr6tg + release-beetmover-signed-langpacks-checksums-macosx64-20/opt: PpQ8dxjWS72e1X8XnkiRWA + release-beetmover-signed-langpacks-checksums-macosx64-3/opt: EbAVTdvmQaKhWh2LwzWGUA + release-beetmover-signed-langpacks-checksums-macosx64-4/opt: eWnJHptSSqiod4RF6biVdg + release-beetmover-signed-langpacks-checksums-macosx64-5/opt: EsHwavj6Qj-qE8zJO3Fvxw + release-beetmover-signed-langpacks-checksums-macosx64-6/opt: A8ez2XnoQMK78MGVJaufnA + release-beetmover-signed-langpacks-checksums-macosx64-7/opt: b50WhnYvTUa4sHc5kSsWWA + release-beetmover-signed-langpacks-checksums-macosx64-8/opt: eNNLrtKCSc2qco4xGvpSjg + release-beetmover-signed-langpacks-checksums-macosx64-9/opt: VAi02fouQp2OFGybR9_uaw + release-beetmover-signed-langpacks-checksums-macosx64/opt: cNqOkm7tTvKXyDi_lySCDA + release-beetmover-signed-langpacks-checksums-win32-1/opt: PDHcmxEjSeajcxeXxADc7w + release-beetmover-signed-langpacks-checksums-win32-10/opt: MT8s3x2YQmeZGTTChHTacQ + release-beetmover-signed-langpacks-checksums-win32-11/opt: QdrLobysTpa9EHmAF6UckQ + release-beetmover-signed-langpacks-checksums-win32-12/opt: L4VTGbmwScK4QortH59ARw + release-beetmover-signed-langpacks-checksums-win32-13/opt: KJAVr_FwT668brPwUVDp3g + release-beetmover-signed-langpacks-checksums-win32-14/opt: fUpL0owwReyfoGk0fYi4XQ + release-beetmover-signed-langpacks-checksums-win32-15/opt: H7cq8ZOxRkKhbeLImx-4wQ + release-beetmover-signed-langpacks-checksums-win32-16/opt: R0MWJJ0ER-iszkvXGD9j_A + release-beetmover-signed-langpacks-checksums-win32-17/opt: C8ik4xA1TLqgOjGIdrfviA + release-beetmover-signed-langpacks-checksums-win32-18/opt: ZF1fJOPoR6G61VYuTHdTdg + release-beetmover-signed-langpacks-checksums-win32-19/opt: IvOOpqpMTvGLhmEZBYqlBw + release-beetmover-signed-langpacks-checksums-win32-2/opt: ACYwMHwySzCs_xpyGn9Giw + release-beetmover-signed-langpacks-checksums-win32-20/opt: LeqXw4vsQp-xjywlfxhGxQ + release-beetmover-signed-langpacks-checksums-win32-3/opt: VUeYjGRrTISJ0Zku5-vLYg + release-beetmover-signed-langpacks-checksums-win32-4/opt: bDuqYZXOT_yCbjSgITDSxA + release-beetmover-signed-langpacks-checksums-win32-5/opt: Dsbk-Uu2RUm3oQ4AFPXxQA + release-beetmover-signed-langpacks-checksums-win32-6/opt: HayfOvLiQhSUHibDSefb_g + release-beetmover-signed-langpacks-checksums-win32-7/opt: NESORRYySDuLvQBDH2_ElQ + release-beetmover-signed-langpacks-checksums-win32-8/opt: SkUXoUBGQxeJzt7sy9Kb-Q + release-beetmover-signed-langpacks-checksums-win32-9/opt: eV5kyMDySpu5Rsj2TVL9Lw + release-beetmover-signed-langpacks-checksums-win32/opt: Wt6F3i8HQcS8JyNNmynSeQ + release-beetmover-signed-langpacks-checksums-win64-1/opt: PvWeHR3BSdKLAbGM1TXtyQ + release-beetmover-signed-langpacks-checksums-win64-10/opt: WN9NvpofTPGgadgvcN6Atg + release-beetmover-signed-langpacks-checksums-win64-11/opt: FawZjNRTTqSe6aKgsbn_uw + release-beetmover-signed-langpacks-checksums-win64-12/opt: OdlvKy5fT4-LW_mgnZSpkQ + release-beetmover-signed-langpacks-checksums-win64-13/opt: bBupvnrURMKJ724oCgBl3w + release-beetmover-signed-langpacks-checksums-win64-14/opt: EpT-hFK2RrK1h1wUrfiCZA + release-beetmover-signed-langpacks-checksums-win64-15/opt: GIurvQy8QWi0sx9KyuWr-Q + release-beetmover-signed-langpacks-checksums-win64-16/opt: SngkCeVvTYCcpo8qFWUeIQ + release-beetmover-signed-langpacks-checksums-win64-17/opt: cdpSQAvHTGWJ761SgHYiEA + release-beetmover-signed-langpacks-checksums-win64-18/opt: ZbuipjCBQQ69J6K0UEpB7w + release-beetmover-signed-langpacks-checksums-win64-19/opt: QkgaPZWyQY6UcIP3Ik_evQ + release-beetmover-signed-langpacks-checksums-win64-2/opt: aB7QN-vyTA6FMm6q9mBV7A + release-beetmover-signed-langpacks-checksums-win64-20/opt: RjIIbtvXRkqsi6SKTRcFRg + release-beetmover-signed-langpacks-checksums-win64-3/opt: MnzhxLqvTZOToVPT-gMZzw + release-beetmover-signed-langpacks-checksums-win64-4/opt: RljJzYaUQaK7w8IgHeVkCQ + release-beetmover-signed-langpacks-checksums-win64-5/opt: U6JV-mGVRDG7OLJyK0dPFQ + release-beetmover-signed-langpacks-checksums-win64-6/opt: GJ4pKlqKRnyrPmqMK6O79w + release-beetmover-signed-langpacks-checksums-win64-7/opt: YEvn8y1ZTo-xrosK1nrBzg + release-beetmover-signed-langpacks-checksums-win64-8/opt: BciLCc2ATO-PcRA40qv8SQ + release-beetmover-signed-langpacks-checksums-win64-9/opt: BRGC6O4FT4qXFSrvIIgkmw + release-beetmover-signed-langpacks-checksums-win64/opt: dTOoXo-kTquQKV399I925Q + release-beetmover-signed-langpacks-linux-shippable-1/opt: FxLHLTxcR6GfO-A8EEihdQ + release-beetmover-signed-langpacks-linux-shippable-10/opt: cSQwZTKdQ-GbEqeJiXJstA + release-beetmover-signed-langpacks-linux-shippable-11/opt: CK6c_FL_QV-vYtLBmp9yPQ + release-beetmover-signed-langpacks-linux-shippable-12/opt: RCG6-ifSQrWg3Qb3AYKVJg + release-beetmover-signed-langpacks-linux-shippable-13/opt: eX3TKFxyRiy1p2nloaVJwA + release-beetmover-signed-langpacks-linux-shippable-14/opt: Q-8sHy-pSUGrxc98ISvulA + release-beetmover-signed-langpacks-linux-shippable-15/opt: Y392itf0S4CPLCS07QSouQ + release-beetmover-signed-langpacks-linux-shippable-16/opt: I9vRcURvRQ6v7OymdVb9gQ + release-beetmover-signed-langpacks-linux-shippable-17/opt: KP0i545wRZCqWzr4j362_g + release-beetmover-signed-langpacks-linux-shippable-18/opt: KRyMS6jpRb6oRuI0ttlAFg + release-beetmover-signed-langpacks-linux-shippable-19/opt: HlaAHkYJQbWS_9twezSKEA + release-beetmover-signed-langpacks-linux-shippable-2/opt: OmdV6SD1TlCNkd11WgesHQ + release-beetmover-signed-langpacks-linux-shippable-20/opt: R6Gxqi7sSk-Pbi0asDNTpg + release-beetmover-signed-langpacks-linux-shippable-3/opt: bwLqknVrR66oXnA6dSdnZg + release-beetmover-signed-langpacks-linux-shippable-4/opt: Ud2pRNgVStq8pC7IxBlZjQ + release-beetmover-signed-langpacks-linux-shippable-5/opt: IfP-SsjiRaWUoreD3yvg0Q + release-beetmover-signed-langpacks-linux-shippable-6/opt: QzpvAKQ5TfunD0klR1b50g + release-beetmover-signed-langpacks-linux-shippable-7/opt: PeEe6N6dQyaPnpAKksQgjQ + release-beetmover-signed-langpacks-linux-shippable-8/opt: MH_V9gNNTNmKgAV0tgABCw + release-beetmover-signed-langpacks-linux-shippable-9/opt: EWNNsa0oR7OU7mrLV3YXOA + release-beetmover-signed-langpacks-linux-shippable/opt: OUxdrKeVR7-QE79TjMBBZQ + release-beetmover-signed-langpacks-macosx64-shippable-1/opt: ckYzkF-ZTr-CNDnEv1EPzA + release-beetmover-signed-langpacks-macosx64-shippable-10/opt: Qlmvk6rKTEGSw2i1jfh8qg + release-beetmover-signed-langpacks-macosx64-shippable-11/opt: UW2UwEo0RVmwqccetdUETg + release-beetmover-signed-langpacks-macosx64-shippable-12/opt: SnXyh6R_ReWs_wo3RPl6mg + release-beetmover-signed-langpacks-macosx64-shippable-13/opt: RQKucrTJRmGe196FUBm68Q + release-beetmover-signed-langpacks-macosx64-shippable-14/opt: LqH9iUf-SCuJUucNdZaXHg + release-beetmover-signed-langpacks-macosx64-shippable-15/opt: aU03GOGHS6aBnrZX1VAFcw + release-beetmover-signed-langpacks-macosx64-shippable-16/opt: Zkvi5Mi6SW6w0zfCIv3Z8A + release-beetmover-signed-langpacks-macosx64-shippable-17/opt: bzyxUq0wQRS135zwaBlirw + release-beetmover-signed-langpacks-macosx64-shippable-18/opt: TvR8ebAPThW0qPXKNjsAhQ + release-beetmover-signed-langpacks-macosx64-shippable-19/opt: VbJNWXfeQaeQNstre5FsEw + release-beetmover-signed-langpacks-macosx64-shippable-2/opt: bhd9kmgMT3-g0yOZOLIiNA + release-beetmover-signed-langpacks-macosx64-shippable-20/opt: HuYxUD_pTxicL7NfcedcLQ + release-beetmover-signed-langpacks-macosx64-shippable-3/opt: POzP0csCQfGQWgsdB7-HWA + release-beetmover-signed-langpacks-macosx64-shippable-4/opt: KNcfT0AbQSW2huqNWkPdLQ + release-beetmover-signed-langpacks-macosx64-shippable-5/opt: de5DBRhcTYmzsAvwvvlKww + release-beetmover-signed-langpacks-macosx64-shippable-6/opt: VJq1Wos_Qb2--Z483OG-Ag + release-beetmover-signed-langpacks-macosx64-shippable-7/opt: OfJj65uhST2xpJomlO4AhQ + release-beetmover-signed-langpacks-macosx64-shippable-8/opt: AyzlGmu1ScOrvzCzOSBZ7w + release-beetmover-signed-langpacks-macosx64-shippable-9/opt: ZwRJMT0GQd-39xJyAXlP0g + release-beetmover-signed-langpacks-macosx64-shippable/opt: dBztWQ72QFG79ggl9Opbow + release-beetmover-signed-langpacks-win32-shippable-1/opt: Z7TkoqouRt-hPuHTkG5PcA + release-beetmover-signed-langpacks-win32-shippable-10/opt: NtyyCHOySOKcNcxNL0sFsg + release-beetmover-signed-langpacks-win32-shippable-11/opt: XyGFt8hGSMmwnFD6RC5TtQ + release-beetmover-signed-langpacks-win32-shippable-12/opt: FGGaIx5wTx-IFslJKi_CrA + release-beetmover-signed-langpacks-win32-shippable-13/opt: WkLIEmflSPiwlLayG7oCxg + release-beetmover-signed-langpacks-win32-shippable-14/opt: TFfXDt8QSemVE0poWY8KKw + release-beetmover-signed-langpacks-win32-shippable-15/opt: UaYSews8S0ikADosDv6pcA + release-beetmover-signed-langpacks-win32-shippable-16/opt: cStHpF1mTIuUR7k6GKJ5BQ + release-beetmover-signed-langpacks-win32-shippable-17/opt: P2vL_e7YQK2OtcT0I-iW3w + release-beetmover-signed-langpacks-win32-shippable-18/opt: C5bP0q-_TYOrK9___pW_Fw + release-beetmover-signed-langpacks-win32-shippable-19/opt: XWZM08BySniTIhvKGNiU_Q + release-beetmover-signed-langpacks-win32-shippable-2/opt: BVrKxyolTyKwJR82TrMgrQ + release-beetmover-signed-langpacks-win32-shippable-20/opt: cB6N1z2dT1iUHlhX3qIvQw + release-beetmover-signed-langpacks-win32-shippable-3/opt: FipkUlQ-RqKtKEXHwZzJ3Q + release-beetmover-signed-langpacks-win32-shippable-4/opt: Lu2lGCLeRr-nzB3fjXnmkg + release-beetmover-signed-langpacks-win32-shippable-5/opt: Cqj9CMk5QxKbIP74VbaqCg + release-beetmover-signed-langpacks-win32-shippable-6/opt: YEoMPUc_QHuThBXBX-CrHQ + release-beetmover-signed-langpacks-win32-shippable-7/opt: JedZYcgtRyiL0UUNP4JG5Q + release-beetmover-signed-langpacks-win32-shippable-8/opt: LUFkQI4ZRlaOcDkxpwnMhQ + release-beetmover-signed-langpacks-win32-shippable-9/opt: Zmr3EksySfWPghKRobTYWg + release-beetmover-signed-langpacks-win32-shippable/opt: IVZ0QgQJSRaoiWaKESwVWQ + release-beetmover-signed-langpacks-win64-shippable-1/opt: YN4CNm0wTV-yiuuQcH01IQ + release-beetmover-signed-langpacks-win64-shippable-10/opt: ckJXftu_S4KxPI5VwTzV5g + release-beetmover-signed-langpacks-win64-shippable-11/opt: D8ddghNMTq6qw7LXNUqqZg + release-beetmover-signed-langpacks-win64-shippable-12/opt: GCvjOEApRGWLTFv0frA7WA + release-beetmover-signed-langpacks-win64-shippable-13/opt: R0JkYe3GTjWbedE-B_45XQ + release-beetmover-signed-langpacks-win64-shippable-14/opt: HjToEPRBQMq3vbW8i7YPjw + release-beetmover-signed-langpacks-win64-shippable-15/opt: ATT1WvhbRzCsbcE5A1mzmA + release-beetmover-signed-langpacks-win64-shippable-16/opt: d0M2DFq7RtWlQT7sbiU4wA + release-beetmover-signed-langpacks-win64-shippable-17/opt: KnFOEkNiTnOCJ9OfPysG5g + release-beetmover-signed-langpacks-win64-shippable-18/opt: ZHwhW58VTDeo8KFkyrMcNg + release-beetmover-signed-langpacks-win64-shippable-19/opt: ZcnNmLfQRIKJiHhwvtkGkQ + release-beetmover-signed-langpacks-win64-shippable-2/opt: OFlve2jtQNmz0BBMI-h0bg + release-beetmover-signed-langpacks-win64-shippable-20/opt: fRvhkkaITK-Evdi2o9bBcw + release-beetmover-signed-langpacks-win64-shippable-3/opt: LObgU9KsQ36JAyg39mJTDw + release-beetmover-signed-langpacks-win64-shippable-4/opt: FSCpoqDbRZWmoXC9LRAE5Q + release-beetmover-signed-langpacks-win64-shippable-5/opt: L9VHksVbQ-muR5O1njSSAA + release-beetmover-signed-langpacks-win64-shippable-6/opt: H7rbiWXeQ9qj2lsQNo0q0Q + release-beetmover-signed-langpacks-win64-shippable-7/opt: ayCwCHQiQEq7mYTRzw2vdg + release-beetmover-signed-langpacks-win64-shippable-8/opt: BrgiClStSVW3iELDWpIlbA + release-beetmover-signed-langpacks-win64-shippable-9/opt: b03duh7jTeiTWkGsno2OAw + release-beetmover-signed-langpacks-win64-shippable/opt: M21GMl-EROWluVjnocKMxA + release-beetmover-source-checksums-icecat-source/opt: M2EKHuFaT6WpAZpkKBerjQ + release-bouncer-check-icecat: dLOvGoI0Rn61EyL29yDrug + release-bouncer-sub-icecat: e_OZAwP_QLuIpTLUHlOzWA + release-early-tagging-icecat: AUrISLuURQqvKIH7mvKc2g + release-final-verify-icecat: D1TyMrv2Sme1BJW7rA-VZQ + release-generate-checksums-icecat: RiQRUhJ8SkKt4vS-kc_tEg + release-generate-checksums-icecat-beetmover: Ko2krLg-RR6GGuD7p-xaHw + release-generate-checksums-icecat-signing: BqTyyE2lSHKTENKEuVEspg + release-notify-av-announce-icecat: CWfw3oZDQFSBiIeDolg8Tg + release-notify-promote-icecat: MLwEfP4zQOSuEH_4_DKkWQ + release-notify-push-icecat: T5IeQwadTq-Dc6UnRUOp8Q + release-notify-started-icecat: FfHwMHinTd6j9H9Srkk6FA + release-partner-repack-beetmover-linux-shippable-mozillaonline-esrOther-zh-CN-public: UhE2mWMUSyCz4EvwHkG_6g + release-partner-repack-beetmover-linux64-shippable-mozillaonline-esrOther-zh-CN-public: TKSXy9TcRBCp2ba2hTGahA + release-partner-repack-beetmover-macosx64-shippable-mozillaonline-esrOther-zh-CN-public: A9MZ_AawRt-LDkhQuxc2Cg + release-partner-repack-beetmover-win32-shippable-mozillaonline-esrWinFull-zh-CN-public: FrWnATEeROWTSYjwQmJTmw + release-partner-repack-beetmover-win64-shippable-mozillaonline-esrWinFull-zh-CN-public: DZaZktWWRB-JtlmOPRL0qQ + release-partner-repack-chunking-dummy-linux-shippable-mozillaonline-esrOther-zh-CN: U3ssBB0sR82w4PUMRxsIwA + release-partner-repack-chunking-dummy-linux64-shippable-mozillaonline-esrOther-zh-CN: JD3tUDM5QJS1I1_BclFUsQ + release-partner-repack-linux-shippable: Sjzpkrx2TR-dMqL1XBzb0g + release-partner-repack-linux64-shippable: STwKkNaVSPew2blC1dkEFg + release-partner-repack-mac-notarization-macosx64-shippable-1: MuRyL3weRlCmgU5O3-JErA + release-partner-repack-mac-signing-macosx64-shippable-1: L7fqDJ6ySlarX2WzZupRKw + release-partner-repack-macosx64-shippable: BESGPspYTNqg-tyZ9FMNWQ + release-partner-repack-repackage-macosx64-shippable-mozillaonline-esrOther-zh-CN: FFeR49oCTym2kBC9B_IlTA + release-partner-repack-repackage-signing-linux-shippable-mozillaonline-esrOther-zh-CN: AGKc4najRZicGbwLhPi1_g + release-partner-repack-repackage-signing-linux64-shippable-mozillaonline-esrOther-zh-CN: PEmDZYCtRgGMmhREA4sD1A + release-partner-repack-repackage-signing-macosx64-shippable-mozillaonline-esrOther-zh-CN: J_70xwtmTriL0T457Q4PmQ + release-partner-repack-repackage-signing-win32-shippable-mozillaonline-esrWinFull-zh-CN: Xq9UARzhTWCf0voz8kDmig + release-partner-repack-repackage-signing-win64-shippable-mozillaonline-esrWinFull-zh-CN: BFzTypmyRoO9H1FYwPHi3g + release-partner-repack-repackage-win32-shippable-mozillaonline-esrWinFull-zh-CN: MZrvLu28T1eKe7nG522P_A + release-partner-repack-repackage-win64-shippable-mozillaonline-esrWinFull-zh-CN: f1tFESTAQu673T8J3pr-Tw + release-partner-repack-win32-shippable: dtSzVf7tR2O_gmYscjym8g + release-partner-repack-win64-shippable: bhFpqmBjTEmJK4DzygTsOA + release-snap-repackage-icecat: EoLXXv1qRkKj6rU_2azQsA + release-source-checksums-signing-icecat-source/opt: VPfgmF02TNeEH19HWP5M0g + release-source-icecat-source/opt: M4l4y4c8TF6IvfP9zh9S4Q + release-source-signing-icecat-source/opt: NIIHiv3PTk-o6KDTeILXzg + release-update-verify-config-icecat-linux: bB6C7QpyRKq3MoymDx_kDw + release-update-verify-config-icecat-linux64: QlU5GAigRN20gcRdPZBMIA + release-update-verify-config-icecat-macosx64: K_wZnwvVQLKQ-X3qNsWdbQ + release-update-verify-config-icecat-win32: H3plKMoVSSeEp03LlAKutA + release-update-verify-config-icecat-win64: QGGc0Kq0R-ysDeZtfIYivA + release-update-verify-config-icecat-win64-aarch64: bWPCTRvITKykcVTG6L-TnA + release-update-verify-config-next-icecat-next-linux: NGAXKtk0SRGkPsVFAst42A + release-update-verify-config-next-icecat-next-linux64: chkbhUumRN-xRXST4CZrvQ + release-update-verify-config-next-icecat-next-macosx64: fNsyVsRERsy6NKKdi97bvw + release-update-verify-config-next-icecat-next-win32: WVA0LHXXTSux4-e0Cm_zQw + release-update-verify-config-next-icecat-next-win64: JJfMm-t6QCaG8tt0VM2kmw + release-update-verify-icecat-linux-1/16: YjLt9tyhRB-tvNt5ljkkaw + release-update-verify-icecat-linux-10/16: WeX4VP1bT6200ozkaBg6Ig + release-update-verify-icecat-linux-11/16: K_8npn37TRyqWIryJyYMjg + release-update-verify-icecat-linux-12/16: Fq--3hJ4QHukKM9WrP93UQ + release-update-verify-icecat-linux-13/16: Nzt54FIRRG6gohJzI04wYw + release-update-verify-icecat-linux-14/16: caiCx0GqR_6chr0O7uyiKg + release-update-verify-icecat-linux-15/16: LtKJINWjQ-y3GTesc59k5g + release-update-verify-icecat-linux-16/16: TkiEcCe1Smy2ACTgkWlO4Q + release-update-verify-icecat-linux-2/16: RkWU_84VT_mf4_4aRJg9JQ + release-update-verify-icecat-linux-3/16: ZTz6Rv_aTfW1dad9Td_BAg + release-update-verify-icecat-linux-4/16: H4dPCwNaTm2EJijrEUjC0A + release-update-verify-icecat-linux-5/16: dHtNpYPmQ6CRJkjakDnb-Q + release-update-verify-icecat-linux-6/16: A3NHJxxaS9ed62oW3rPenA + release-update-verify-icecat-linux-7/16: LoD3_dnmQhGF2IUsUuk9qA + release-update-verify-icecat-linux-8/16: H4sMH2ZdQYmo3V8Kev7sEw + release-update-verify-icecat-linux-9/16: IGVCBfJ_QcKf7fUG4H3pSw + release-update-verify-icecat-linux64-1/16: B1vrf9PkQpeusmKkt7PeQg + release-update-verify-icecat-linux64-10/16: ElHyovWcT4ikZcJiWsn2jQ + release-update-verify-icecat-linux64-11/16: A4Fuv6BESz2QCyhkaJ8NwQ + release-update-verify-icecat-linux64-12/16: JOQEojAyR8C0Dm-Pr-WqYw + release-update-verify-icecat-linux64-13/16: ZnyRyrvmTlCWI-Hs0i77Cw + release-update-verify-icecat-linux64-14/16: KytNRUP1T5uhuL8_QvXeYA + release-update-verify-icecat-linux64-15/16: WzyreA7WRBaszSv8NMMfMg + release-update-verify-icecat-linux64-16/16: eTMe8LM5RDK_PZ5BNc9-KQ + release-update-verify-icecat-linux64-2/16: CcP5kb0mThixwe3LkMu0-g + release-update-verify-icecat-linux64-3/16: Ede7jOw3RMKA7lNMaKX_Xg + release-update-verify-icecat-linux64-4/16: eAD5cWD2RA6TjjfBQkgBOg + release-update-verify-icecat-linux64-5/16: ZEA2shsAQ3-pKd5Zf6KvjQ + release-update-verify-icecat-linux64-6/16: HZ1J96udSieuzMHmZxf3fw + release-update-verify-icecat-linux64-7/16: X0UFTpZuRem6XiIS8zRlGw + release-update-verify-icecat-linux64-8/16: QEHMS0wwTqOgpPCLVbK45Q + release-update-verify-icecat-linux64-9/16: VZLKnJE8Q-uQ01xffk3ecA + release-update-verify-icecat-macosx64-1/30: a6LoToIiS-yIueMXEb4SPg + release-update-verify-icecat-macosx64-10/30: afytPe3OQyWJf1xcmSWvwA + release-update-verify-icecat-macosx64-11/30: C0qvRRnrRm2lqKYwdE297w + release-update-verify-icecat-macosx64-12/30: SbNAWoKmTyuXire64CX9Pw + release-update-verify-icecat-macosx64-13/30: CZ5VaI5ORUurPcpDusUfkg + release-update-verify-icecat-macosx64-14/30: QLt_O4xBRcmBFXUV5vqdqw + release-update-verify-icecat-macosx64-15/30: DFS0j7RkSL6-qQn99jC8Lw + release-update-verify-icecat-macosx64-16/30: YS8axiPUTnOys60ZuVx2lg + release-update-verify-icecat-macosx64-17/30: ecITe2p-T-O3t0xTAA1rrg + release-update-verify-icecat-macosx64-18/30: H_ArjdmvRlmVx9mCAx--EQ + release-update-verify-icecat-macosx64-19/30: CMzaR34ATee3GbzLnPsJqA + release-update-verify-icecat-macosx64-2/30: ACu1HLsJSs2Ho7-6l8qeNw + release-update-verify-icecat-macosx64-20/30: HxzjY7h1R225MzltGvbSdw + release-update-verify-icecat-macosx64-21/30: R7aZUBUWQtCRrVspzWr2_Q + release-update-verify-icecat-macosx64-22/30: Z_LYZaxLTNmS9LFtTxANKA + release-update-verify-icecat-macosx64-23/30: cDiUI5gcSg6n46G7L2BkQA + release-update-verify-icecat-macosx64-24/30: BetH6fPbTtWDVHbgop_RBg + release-update-verify-icecat-macosx64-25/30: JCQGHL-gQmirg-Onw3vtHw + release-update-verify-icecat-macosx64-26/30: P6g8Oa5pTEigB5aQdsVQtQ + release-update-verify-icecat-macosx64-27/30: GKo_xCzORFi3HH05nKS44w + release-update-verify-icecat-macosx64-28/30: QWV17YObRmWU4_kLu8K-rA + release-update-verify-icecat-macosx64-29/30: TNtv2KTfSbaGLWDG_jZeKw + release-update-verify-icecat-macosx64-3/30: NDWJ4bdSR2uqyBe49FBiZg + release-update-verify-icecat-macosx64-30/30: JzKPYlWHR7a351-VQ8qP9Q + release-update-verify-icecat-macosx64-4/30: Y-8yktc5RCqzGg30sdT29w + release-update-verify-icecat-macosx64-5/30: ChM9Jh8PSx2Hk74Fbn5jvQ + release-update-verify-icecat-macosx64-6/30: XhW-v0cwRGOF-mudHyCt-A + release-update-verify-icecat-macosx64-7/30: QcVdksoURSGa27Kf880Bwg + release-update-verify-icecat-macosx64-8/30: fcsEnkoHRlekmx8cPLBLvw + release-update-verify-icecat-macosx64-9/30: JI91ereaR3SNH0tZF7Huog + release-update-verify-icecat-next-linux-1/12: KfeF7FKLRc-w5VYH6NuA-A + release-update-verify-icecat-next-linux-10/12: IO0-yfEwRlqU00dkt1nfGw + release-update-verify-icecat-next-linux-11/12: QTzr9_IJTTCzEac-EKdh-w + release-update-verify-icecat-next-linux-12/12: QFQ0OZlgRVK3tdT1Po2Y_Q + release-update-verify-icecat-next-linux-2/12: YwW9N742RjikPFT8OwedZQ + release-update-verify-icecat-next-linux-3/12: WPzJmSRPRoiuyfRS12CIqA + release-update-verify-icecat-next-linux-4/12: CrS7PmcrSGOGqN5EviL43w + release-update-verify-icecat-next-linux-5/12: HDxW4wtHQd2d852T5AUUsQ + release-update-verify-icecat-next-linux-6/12: G_Vf_kAnSYSumKNNk3GfVg + release-update-verify-icecat-next-linux-7/12: Jj7icAjvQmCMowvIipyKnQ + release-update-verify-icecat-next-linux-8/12: E__j6hSjR3manycvyRFoUA + release-update-verify-icecat-next-linux-9/12: V-R2ZhIvRpmoDcorP51eNA + release-update-verify-icecat-next-linux64-1/12: fE0xSrK_QOeXpBB0MregCA + release-update-verify-icecat-next-linux64-10/12: bAAvasQSRJ2D5Q7kZ6S1ag + release-update-verify-icecat-next-linux64-11/12: GM61Mr2QT6iQDL1csZitFg + release-update-verify-icecat-next-linux64-12/12: dhzf8WvWTz-kx0zkZaQ-jw + release-update-verify-icecat-next-linux64-2/12: SxnZIuU0SVeIY1YBLP3GAQ + release-update-verify-icecat-next-linux64-3/12: O7nUiwFeQammOAnV_NmlMA + release-update-verify-icecat-next-linux64-4/12: f2ZHfKyHTgmXFtXOuel5tA + release-update-verify-icecat-next-linux64-5/12: XnuQ0RRUQsaiwH0nJdhQog + release-update-verify-icecat-next-linux64-6/12: ZufeByAWTt-lnDwNi1Dm_Q + release-update-verify-icecat-next-linux64-7/12: D8U4uqB6Q5GovC95TEzTCA + release-update-verify-icecat-next-linux64-8/12: Fn8ACv6uR1ysryRN7gGFrQ + release-update-verify-icecat-next-linux64-9/12: WSBR_w3QSZqsC6CVZYiYvA + release-update-verify-icecat-next-macosx64-1/12: F5Qb5K0cR7y8XQhrfRcTWg + release-update-verify-icecat-next-macosx64-10/12: TDdgdaLuQKeSZIU-O5QsZQ + release-update-verify-icecat-next-macosx64-11/12: B2qhbULZQDmrseN8HQJdcw + release-update-verify-icecat-next-macosx64-12/12: BO6PhF6nQAq0SEXZLTZXaA + release-update-verify-icecat-next-macosx64-2/12: enwxeUlOSiuLaWBRu2FjCA + release-update-verify-icecat-next-macosx64-3/12: AWrVh00eQMaOZCdeJNOWrA + release-update-verify-icecat-next-macosx64-4/12: eU4RX603TI-t5fkMNScvkw + release-update-verify-icecat-next-macosx64-5/12: VRSQuvm1QnC9WEUIuriYCg + release-update-verify-icecat-next-macosx64-6/12: WnBj61UJSFKzlJ_m9b9PAQ + release-update-verify-icecat-next-macosx64-7/12: QLMlsd-LRhSHh0GTy2x6WA + release-update-verify-icecat-next-macosx64-8/12: Lw8vD1QlQHqq8n4ipAmnWw + release-update-verify-icecat-next-macosx64-9/12: N-SFOORdRruVnkYPaPQG2Q + release-update-verify-icecat-next-win32-1/12: CZpDid9kSUCZOC3Pb5Spzg + release-update-verify-icecat-next-win32-10/12: f0_DEgWnTfy0ERctXNYmgg + release-update-verify-icecat-next-win32-11/12: ApzGW2gYRySYnpizVb-cMQ + release-update-verify-icecat-next-win32-12/12: LhgZYVGGTk6TZNCDE_erxw + release-update-verify-icecat-next-win32-2/12: c96S-GaDS_Galff4K8OYhg + release-update-verify-icecat-next-win32-3/12: T8W3UX7UTPiVeyfGDspVGw + release-update-verify-icecat-next-win32-4/12: etr5qvbBRomT-U3wrqFUGg + release-update-verify-icecat-next-win32-5/12: ZO9erSx8TSKB-BlEOXWJSw + release-update-verify-icecat-next-win32-6/12: DYaJIp6JRBWpUuMSmBo-GA + release-update-verify-icecat-next-win32-7/12: cLgo2HMTRBm6_S1l7pDzew + release-update-verify-icecat-next-win32-8/12: H2LN2wJYSNe0sRXte3q8sA + release-update-verify-icecat-next-win32-9/12: S1BhboudQZmOEBU_5Cb2sQ + release-update-verify-icecat-next-win64-1/12: fe1CuoyiT4epV1m0ZXLQKw + release-update-verify-icecat-next-win64-10/12: UZTTI60BRKyuaeRxleO1nQ + release-update-verify-icecat-next-win64-11/12: NXr94I9xTymvY6PhGYNvEQ + release-update-verify-icecat-next-win64-12/12: Lttzy0PeSgCh9_EYfTcMCQ + release-update-verify-icecat-next-win64-2/12: QUUIuvcLQnetNzrD1ccUfg + release-update-verify-icecat-next-win64-3/12: YYI9H9cAQumcINjmKA-wUw + release-update-verify-icecat-next-win64-4/12: Og-018AgSxKG7y1PzYp4GA + release-update-verify-icecat-next-win64-5/12: Q05fFxogSc27tCOYeBOtlA + release-update-verify-icecat-next-win64-6/12: aJ0mr7lTSyqV_rnFhs9u7Q + release-update-verify-icecat-next-win64-7/12: DIlJGc4PT-6ZcFRM5xso-Q + release-update-verify-icecat-next-win64-8/12: A_uCBRbeT9uCPPFVS2RxAg + release-update-verify-icecat-next-win64-9/12: TU8NS6eYTbyo2zRuWYYvVg + release-update-verify-icecat-win32-1/16: FWOxfFz0Rwq33XgVfXjksQ + release-update-verify-icecat-win32-10/16: e2mMIq8ER2mhau8Dysi4gg + release-update-verify-icecat-win32-11/16: Qxdqxg72TImGbdaDhh6umg + release-update-verify-icecat-win32-12/16: br_d4dllQdiVHQP5F05W7A + release-update-verify-icecat-win32-13/16: CVsOzoAjSJOlw4AMo99_sQ + release-update-verify-icecat-win32-14/16: I1dYQpDGTQSg3cRbkS78OQ + release-update-verify-icecat-win32-15/16: GSG1a0_vT1Wd1ksVLUYtCQ + release-update-verify-icecat-win32-16/16: bM3oK3HbRFePvS0Nhd8LzA + release-update-verify-icecat-win32-2/16: ZFsZRbroS32bHKuq7t9lnw + release-update-verify-icecat-win32-3/16: PR959-9rQEyOX4zKe8r3hQ + release-update-verify-icecat-win32-4/16: K9N1QNC7Q1SIi8t-EMskLA + release-update-verify-icecat-win32-5/16: WP0Uz9IMR8emDtQyX1n5mw + release-update-verify-icecat-win32-6/16: KEQhcVXpSrGg8UXlULsz7Q + release-update-verify-icecat-win32-7/16: QdAZ2ReLTUCf2t-H-kYRcw + release-update-verify-icecat-win32-8/16: UAIhADEkRN-77Hp5ICUfvw + release-update-verify-icecat-win32-9/16: XL85t_Q0Ru-MTsEcQzkupQ + release-update-verify-icecat-win64-1/16: Xw9ZtMaTQVuluWhLkzRFkg + release-update-verify-icecat-win64-10/16: MGFvIIgXQpWRjncfqY3IGw + release-update-verify-icecat-win64-11/16: FRSAEY8PS5qmw8lconCS0Q + release-update-verify-icecat-win64-12/16: dvQQBA4iTGqrFG9ubtOzKg + release-update-verify-icecat-win64-13/16: QUrxGfAzSSa8HtIqaV2v0w + release-update-verify-icecat-win64-14/16: FpmiWZJsSPqUmeWfwNfiCg + release-update-verify-icecat-win64-15/16: TKC_rfkuTVawLCN5Et8rFA + release-update-verify-icecat-win64-16/16: EZO3PTnYRRSqPCiIzN03ww + release-update-verify-icecat-win64-2/16: Hq-zJERCTJ-z5pB7MRwbRQ + release-update-verify-icecat-win64-3/16: Ws8bDFdOQpORDLdM4-KUNQ + release-update-verify-icecat-win64-4/16: I4n0QbYQReaTT2BVXTSffQ + release-update-verify-icecat-win64-5/16: YVsP0wDRS4i-TCY8Y91kJg + release-update-verify-icecat-win64-6/16: Vt833rJVT8CLGWVgHGQc1Q + release-update-verify-icecat-win64-7/16: Akq-cDEpRG6WTyYm1rBb1w + release-update-verify-icecat-win64-8/16: Y_8NMGpYR9yoRb6kzxxP7Q + release-update-verify-icecat-win64-9/16: ZeR2ue2SRWexaLZhYaZmRA + release-update-verify-icecat-win64-aarch64-1/16: RkQRm9-dSBCjxFCOqiKg7Q + release-update-verify-icecat-win64-aarch64-10/16: JXtWxV3tS3CSqk0tuhrxGA + release-update-verify-icecat-win64-aarch64-11/16: H1ft77JsQt6n29VAGGLqkg + release-update-verify-icecat-win64-aarch64-12/16: FmuaEy1WTS6OsFVQY6mSyw + release-update-verify-icecat-win64-aarch64-13/16: K1x8an7iQdyf99OLZw8AQQ + release-update-verify-icecat-win64-aarch64-14/16: FDmwR6d5SxShdna2mFWg3Q + release-update-verify-icecat-win64-aarch64-15/16: K3ygZGo3RTSYcGJm6_VNqQ + release-update-verify-icecat-win64-aarch64-16/16: epIW7rrCQAiWU10IbAvHIw + release-update-verify-icecat-win64-aarch64-2/16: VVEluTeuQ3KkcE8_LbEkYA + release-update-verify-icecat-win64-aarch64-3/16: MP6RmcBjTxivSzmBFHiajA + release-update-verify-icecat-win64-aarch64-4/16: PScLYdpqS-q1m1RDlpLsYg + release-update-verify-icecat-win64-aarch64-5/16: MdimzCqSQHm0QX_yK01nww + release-update-verify-icecat-win64-aarch64-6/16: J-6EZzNcSRm6n_dFmVmsag + release-update-verify-icecat-win64-aarch64-7/16: FCrun5rQRZa8MGxkEemHjg + release-update-verify-icecat-win64-aarch64-8/16: eLkcE7OJQcWrBn229H87tw + release-update-verify-icecat-win64-aarch64-9/16: OZKXlDtyS8G_A53Z5O6SDQ + repackage-deb-l10n-ach-linux64-shippable/opt: Y0MHtd3BTtmf90K-SWjYLg + repackage-deb-l10n-af-linux64-shippable/opt: MzsmZ7mhSZqvTHnu4Gm2HQ + repackage-deb-l10n-an-linux64-shippable/opt: Pcm-9tgaRgaYgr3uQ-QZTw + repackage-deb-l10n-ar-linux64-shippable/opt: IRbXtcPiQ7W3vWEqIqIUYw + repackage-deb-l10n-ast-linux64-shippable/opt: VXnqiv0WTMy8b7sZ1areOA + repackage-deb-l10n-az-linux64-shippable/opt: VXG27CCsSASGAlmPpuen4w + repackage-deb-l10n-be-linux64-shippable/opt: FvoMaOqKQFiDTB2XbaNBgA + repackage-deb-l10n-bg-linux64-shippable/opt: RXCP7lzxQW-U8w1AoYM9Bg + repackage-deb-l10n-bn-linux64-shippable/opt: arO_sUlNR3-jJpTo68AHdQ + repackage-deb-l10n-br-linux64-shippable/opt: RLNxkWj8QKuPdP198udtiw + repackage-deb-l10n-bs-linux64-shippable/opt: BiSHOAkbSHSohFn81yw9gQ + repackage-deb-l10n-ca-linux64-shippable/opt: QbFuZ7SEQLKSD4cGZMzslg + repackage-deb-l10n-ca-valencia-linux64-shippable/opt: GfmRAr60TYaeyD1o7DF1fA + repackage-deb-l10n-cak-linux64-shippable/opt: fSsV-FZ1T0i5RIPte2aOBg + repackage-deb-l10n-cs-linux64-shippable/opt: IbbSME9jTXKveG1p9tQD3A + repackage-deb-l10n-cy-linux64-shippable/opt: axWveB-ERSa37bHQ5vrmRg + repackage-deb-l10n-da-linux64-shippable/opt: F9RT6FOxS724Nzv1zqnKlA + repackage-deb-l10n-de-linux64-shippable/opt: NOfpM6mnQ8uy5dx1QspEpQ + repackage-deb-l10n-dsb-linux64-shippable/opt: X114zrB0RiiepH6BmAOzkg + repackage-deb-l10n-el-linux64-shippable/opt: ckJGfWDrT5uYHfLBVS2oMQ + repackage-deb-l10n-en-CA-linux64-shippable/opt: IcQooC2WSbOBHoY0uJqb0Q + repackage-deb-l10n-en-GB-linux64-shippable/opt: Y7K1LnF9T82zo3i9cFWQxg + repackage-deb-l10n-eo-linux64-shippable/opt: FsoIdL6NTSuiBTIOiW_Klg + repackage-deb-l10n-es-AR-linux64-shippable/opt: JfRj28-OQmO2DYVQwjAkrw + repackage-deb-l10n-es-CL-linux64-shippable/opt: OWKuocOcSje-OqZZ_lOUyQ + repackage-deb-l10n-es-ES-linux64-shippable/opt: T35FvSW3S3mlGLgAhDixFw + repackage-deb-l10n-es-MX-linux64-shippable/opt: c64oZWWcQP6pRWtvfSxMjw + repackage-deb-l10n-et-linux64-shippable/opt: VA6BxAU8QuuNmaCOFyuFPQ + repackage-deb-l10n-eu-linux64-shippable/opt: KImVaaNeTmK-U-s8pwicwQ + repackage-deb-l10n-fa-linux64-shippable/opt: KywRpEOLSKOCK5E2v_vnPQ + repackage-deb-l10n-ff-linux64-shippable/opt: VgyrPRTXS3KJvpEGhDbwcA + repackage-deb-l10n-fi-linux64-shippable/opt: G29QMNnYThq-OrVxCwLz9g + repackage-deb-l10n-fr-linux64-shippable/opt: SSU9BvlyQpCDrsridThbDQ + repackage-deb-l10n-fur-linux64-shippable/opt: D_0c-CbVTli_mYrR0uR_Ow + repackage-deb-l10n-fy-NL-linux64-shippable/opt: Rxa4xlskQliHUYxQkoQAog + repackage-deb-l10n-ga-IE-linux64-shippable/opt: BR_3Z0CWQz6_R6ea3XZnDg + repackage-deb-l10n-gd-linux64-shippable/opt: JE935SJkRIi9wwsGCPxkWw + repackage-deb-l10n-gl-linux64-shippable/opt: IbQV_DhBRBKkKy3qQkhOMA + repackage-deb-l10n-gn-linux64-shippable/opt: Wpjt4qnUS6eYqISgUvYM-Q + repackage-deb-l10n-gu-IN-linux64-shippable/opt: Htqx8IIPTPGvwqqSaH6K2A + repackage-deb-l10n-he-linux64-shippable/opt: bZe3gjKDQ2qo7nBsKN60ng + repackage-deb-l10n-hi-IN-linux64-shippable/opt: MGejH6mdQQe2h0ZSdqC-IA + repackage-deb-l10n-hr-linux64-shippable/opt: NytvrswqQsWL-zV8ABOi5A + repackage-deb-l10n-hsb-linux64-shippable/opt: C6t-B0kHQXizuRtwxpKQDQ + repackage-deb-l10n-hu-linux64-shippable/opt: UDgOHQ3kRwih_q4k27WAbA + repackage-deb-l10n-hy-AM-linux64-shippable/opt: L8KTo1fASEa72OaShUPRTQ + repackage-deb-l10n-ia-linux64-shippable/opt: JfII6O5xQCe4c-VMPNxA6A + repackage-deb-l10n-id-linux64-shippable/opt: alW5ebsLRpaC05yMyifYrA + repackage-deb-l10n-is-linux64-shippable/opt: L7lJx18_T8WAY7LXF2oOAg + repackage-deb-l10n-it-linux64-shippable/opt: UaipFC2-SNyWSwdKnU0SBg + repackage-deb-l10n-ja-linux64-shippable/opt: Voagk68yS6-hQIdZoslkhQ + repackage-deb-l10n-ka-linux64-shippable/opt: WmyDaXydQV-lN6QVV9yEnQ + repackage-deb-l10n-kab-linux64-shippable/opt: Na2kOV6XR6qyGQl5TQn8lQ + repackage-deb-l10n-kk-linux64-shippable/opt: I5Ro8ztyQuuJRp09ciACDg + repackage-deb-l10n-km-linux64-shippable/opt: d9vohNadRpu3xz83zQpQ5g + repackage-deb-l10n-kn-linux64-shippable/opt: V_8aET2gRaaYg1tc7k3HUw + repackage-deb-l10n-ko-linux64-shippable/opt: QAvzEeaoQ-6IhrSMbFksOQ + repackage-deb-l10n-lij-linux64-shippable/opt: KgM9XBn5SRKpAsjV-LhJEg + repackage-deb-l10n-lt-linux64-shippable/opt: Ytgu3GLHQSOpyZpfedQI8A + repackage-deb-l10n-lv-linux64-shippable/opt: HRpyDkL6SYexBUJo1XqLOQ + repackage-deb-l10n-mk-linux64-shippable/opt: DM4jYo82SHqLNmJUXLiY1g + repackage-deb-l10n-mr-linux64-shippable/opt: fl23ynnfRIqsWUub-cSU5A + repackage-deb-l10n-ms-linux64-shippable/opt: O55k3e_CTnKKMdvPKO1XUw + repackage-deb-l10n-my-linux64-shippable/opt: YRAuz4wBT-WmuvZDDoQioQ + repackage-deb-l10n-nb-NO-linux64-shippable/opt: NicKneNIRESNSr9bF4oNXg + repackage-deb-l10n-ne-NP-linux64-shippable/opt: CIB6olV_QsmH7ZLH_vc_4g + repackage-deb-l10n-nl-linux64-shippable/opt: fGA_V6aDR_6Kisml3RsVRA + repackage-deb-l10n-nn-NO-linux64-shippable/opt: A2U6_s6bRs6vX7xML4k5Rw + repackage-deb-l10n-oc-linux64-shippable/opt: VHg9GW_zQAON7sZHqsxRLQ + repackage-deb-l10n-pa-IN-linux64-shippable/opt: Ce3AYFmhStWgtnF4uQIkrw + repackage-deb-l10n-pl-linux64-shippable/opt: Xx3EiDSFSr6B7fBcTz8blQ + repackage-deb-l10n-pt-BR-linux64-shippable/opt: XaeDy9zoTfO1ccis9BR8Kg + repackage-deb-l10n-pt-PT-linux64-shippable/opt: ZqPiNpsySJy8sinUBcm_Dw + repackage-deb-l10n-rm-linux64-shippable/opt: Fu7Q-AaFRlmnCCqgoraqIQ + repackage-deb-l10n-ro-linux64-shippable/opt: fBPKFd6cQWmqxGR0GYPK6g + repackage-deb-l10n-ru-linux64-shippable/opt: TvRYI7WHTpqVmolC22dV3g + repackage-deb-l10n-sc-linux64-shippable/opt: fplpgPGdQEOKwVKbikaQ4g + repackage-deb-l10n-sco-linux64-shippable/opt: WR6-2jSzRF-iWu-epE9Vmg + repackage-deb-l10n-si-linux64-shippable/opt: AWTOPXOrTQyf0PGUESVbIQ + repackage-deb-l10n-sk-linux64-shippable/opt: ZDjrxxdORQ2BCHc2PZInYA + repackage-deb-l10n-sl-linux64-shippable/opt: V81YCONsQMWsE5DcGQ2wvg + repackage-deb-l10n-son-linux64-shippable/opt: ZhvyTmIQQZCxXz_d0I9_9A + repackage-deb-l10n-sq-linux64-shippable/opt: U_PtN8vqSamFmQCziZoxeA + repackage-deb-l10n-sr-linux64-shippable/opt: FNhEn4LeT4iVNS1bT35LhQ + repackage-deb-l10n-sv-SE-linux64-shippable/opt: ZBBV6qz6RcWUU9ggPaIC5g + repackage-deb-l10n-szl-linux64-shippable/opt: AsRtuVWjSWSs-2acMEfO-g + repackage-deb-l10n-ta-linux64-shippable/opt: eRIFdP9lTbO_DrbAz5dCJw + repackage-deb-l10n-te-linux64-shippable/opt: f4r1-QtKT76FX-5c52aHBA + repackage-deb-l10n-tg-linux64-shippable/opt: FX9E0Ix5QgSOnzcKidOZxg + repackage-deb-l10n-th-linux64-shippable/opt: P0WmlhXSQ5yxI4SfO2-K5w + repackage-deb-l10n-tl-linux64-shippable/opt: GIRpqhiTTAGXVFD9ydvl6g + repackage-deb-l10n-tr-linux64-shippable/opt: N2jbHPIES9mY-69tY0u15w + repackage-deb-l10n-trs-linux64-shippable/opt: f59RmnANR1eoqQtn84sxbQ + repackage-deb-l10n-uk-linux64-shippable/opt: PoZGJlj6RuqCh9N1vxJ5kw + repackage-deb-l10n-ur-linux64-shippable/opt: QehTvgVdQpCkbdJYW00g6g + repackage-deb-l10n-uz-linux64-shippable/opt: V3jUct6oSZitbzAoMsvAhQ + repackage-deb-l10n-vi-linux64-shippable/opt: J8NGJVMhT3G-KILfl1C7rA + repackage-deb-l10n-xh-linux64-shippable/opt: CrzdrWc2SdmD5ycNmcqVZA + repackage-deb-l10n-zh-CN-linux64-shippable/opt: NZz7cA6FQwu3tivDFIMsCA + repackage-deb-l10n-zh-TW-linux64-shippable/opt: JCzUn07FT2248ujbV92geA + repackage-deb-linux-shippable/opt: BUf6Z_yNRDmHjjBtxGpyog + repackage-deb-linux64-shippable/opt: E0fCAzgMQkykWJ-YHFlOjQ + repackage-l10n-ach-linux-shippable/opt: MA6yYIn6SYW8ExlZKSaKFg + repackage-l10n-ach-linux64-shippable/opt: S7Ae95-lSo2UIu_-UwVRIQ + repackage-l10n-ach-macosx64-shippable/opt: E3VS4q11TUKTletTjh6ZoQ + repackage-l10n-ach-win32-shippable/opt: J8_zpVejQMu_5AYmxFS1Yg + repackage-l10n-ach-win64-aarch64-shippable/opt: KcEb_AaiRBqyMBo7FTuLag + repackage-l10n-ach-win64-shippable/opt: cEWPxstASgObhEY6icWblg + repackage-l10n-af-linux-shippable/opt: ID3wpDZXR6qPFdZ5zGMqpg + repackage-l10n-af-linux64-shippable/opt: HYGYHBOJTJa0QbbkQn8IEA + repackage-l10n-af-macosx64-shippable/opt: Wr9AwGqCSQa5GCJZkqhvZA + repackage-l10n-af-win32-shippable/opt: Vu2Dl5KCQ0udkJ81a4HRAQ + repackage-l10n-af-win64-aarch64-shippable/opt: PaJ18b34RMu8skKTLMxYNw + repackage-l10n-af-win64-shippable/opt: ZVHGSD6QT5mBgtKRUlgzZg + repackage-l10n-an-linux-shippable/opt: Vwc10LgXTi6dAjQJwN4edg + repackage-l10n-an-linux64-shippable/opt: amEImcEATsqlZk8qYhKcwQ + repackage-l10n-an-macosx64-shippable/opt: XX40je6NQoWSVWoASs53AA + repackage-l10n-an-win32-shippable/opt: TriT46PDQwq8HA5FacjtAQ + repackage-l10n-an-win64-aarch64-shippable/opt: f--qM_foQQiNG7yaIaD-ZA + repackage-l10n-an-win64-shippable/opt: TtXjGCJMRre-aIdZneM8BQ + repackage-l10n-ar-linux-shippable/opt: AEvT3g-KQaSpnGEFH0UnBQ + repackage-l10n-ar-linux64-shippable/opt: dhMzYG4wSwaI22mogC7lmQ + repackage-l10n-ar-macosx64-shippable/opt: eJnQ3DPWSluaHAKEll0PUA + repackage-l10n-ar-win32-shippable/opt: aJhnb1f8QPqaZe7AAbiv_g + repackage-l10n-ar-win64-aarch64-shippable/opt: E4jJYzM1Rz2lCPavw60Uxw + repackage-l10n-ar-win64-shippable/opt: GTQfhmarTR-ITTAUWMREAg + repackage-l10n-ast-linux-shippable/opt: BvJKnudiTO-NfxXgNSxYgA + repackage-l10n-ast-linux64-shippable/opt: PjUiPe67Tvmg3NWL6rv1Lg + repackage-l10n-ast-macosx64-shippable/opt: AFjOtWbhSteZ_BlUaWahpA + repackage-l10n-ast-win32-shippable/opt: N2liOvCiTLSoSn3gNMbQEQ + repackage-l10n-ast-win64-aarch64-shippable/opt: KPKcXx3_SKyjgzF9fUFl2Q + repackage-l10n-ast-win64-shippable/opt: OkwAwKvMRF-qLEMUdV65fg + repackage-l10n-az-linux-shippable/opt: AxzvdNdGTBeWH4yB6asypQ + repackage-l10n-az-linux64-shippable/opt: QO4Y95oPTEi-7PPVI3jnXQ + repackage-l10n-az-macosx64-shippable/opt: Yy6efFIjR_mxGOwLjP5k2g + repackage-l10n-az-win32-shippable/opt: Xe7y6V3vSkWknVk-2p0-fA + repackage-l10n-az-win64-aarch64-shippable/opt: IkblpVicQEC3M3fiHAByrA + repackage-l10n-az-win64-shippable/opt: CS-YmYicT8KVSAyeRtsOsg + repackage-l10n-be-linux-shippable/opt: fgR_oSKqQz-CfqKSo5YfsQ + repackage-l10n-be-linux64-shippable/opt: YUzBNlFuTJWx1WaPeSaQMA + repackage-l10n-be-macosx64-shippable/opt: fA3HociHSgeWZiMUFyvIvQ + repackage-l10n-be-win32-shippable/opt: eR2hUP6kSX2pcMIr6uuTlA + repackage-l10n-be-win64-aarch64-shippable/opt: IVHD-CTER2afzo_P7KqqbQ + repackage-l10n-be-win64-shippable/opt: PTfEJJKCQ7qIDU_6kHHTwQ + repackage-l10n-bg-linux-shippable/opt: X1wo54c_Rz6bHiN9ad7tww + repackage-l10n-bg-linux64-shippable/opt: Zmiyp8USRROVq7ntEvG_Xg + repackage-l10n-bg-macosx64-shippable/opt: RcxrN29GRRWF9_q51GLWHg + repackage-l10n-bg-win32-shippable/opt: G4rAt6MyQViX928BfAfQhA + repackage-l10n-bg-win64-aarch64-shippable/opt: GK7LKmDCTAyLaCCteirVeA + repackage-l10n-bg-win64-shippable/opt: ZGs5A0mFT8-7Nj2QgIM-VQ + repackage-l10n-bn-linux-shippable/opt: GdwjEl9XTA-7K109YZAkGw + repackage-l10n-bn-linux64-shippable/opt: JE9ax71bRWCF8ccRr9gMYQ + repackage-l10n-bn-macosx64-shippable/opt: Sgj0BQ5GT0qpggPaqPxinA + repackage-l10n-bn-win32-shippable/opt: DiLPlp1hSBS5xOVTrUgRAw + repackage-l10n-bn-win64-aarch64-shippable/opt: AvxbU5MFTSGwZW9vCTEJOw + repackage-l10n-bn-win64-shippable/opt: ElNFLq6SR6C2ljLgBJG2KA + repackage-l10n-br-linux-shippable/opt: fnScqXPXT5GmNnOYtsxcwQ + repackage-l10n-br-linux64-shippable/opt: Fms0rZ9nT3-4re56bhcZgA + repackage-l10n-br-macosx64-shippable/opt: U1Rj0EzoRbiBgMN0ump3iw + repackage-l10n-br-win32-shippable/opt: Sv3ZKlwfQaez4JlhvczWWw + repackage-l10n-br-win64-aarch64-shippable/opt: SkNutpX4RpSFZ9ug6chOww + repackage-l10n-br-win64-shippable/opt: LwKA4tryR6y1O3er4eRPGw + repackage-l10n-bs-linux-shippable/opt: V2oN75W0Tz253XjUg9WYfQ + repackage-l10n-bs-linux64-shippable/opt: TGiIlhV7SmieY2JcJTDUWg + repackage-l10n-bs-macosx64-shippable/opt: NHVonOOvThioKFAxolSFqA + repackage-l10n-bs-win32-shippable/opt: LvxEt--vRAGRkzlTnFPLhw + repackage-l10n-bs-win64-aarch64-shippable/opt: Ox_kC2BDTAazMWW7v8I6CA + repackage-l10n-bs-win64-shippable/opt: N9V_WsiiT8KWX946FpB3RA + repackage-l10n-ca-linux-shippable/opt: IyHeWwWnQA6FKqgzouWiZg + repackage-l10n-ca-linux64-shippable/opt: Hgc76906STeNc3B-e62HRw + repackage-l10n-ca-macosx64-shippable/opt: dp_K26hWRMGY5UBZCupU_Q + repackage-l10n-ca-valencia-linux-shippable/opt: az92Cy_gTOeHTffVYcTcJQ + repackage-l10n-ca-valencia-linux64-shippable/opt: TYPlX4pDTV6_i4p4koCHNQ + repackage-l10n-ca-valencia-macosx64-shippable/opt: K3CV_yjjRRKtatm5zBOoxw + repackage-l10n-ca-valencia-win32-shippable/opt: HzN0MvoWQySBMvjVnnimcg + repackage-l10n-ca-valencia-win64-aarch64-shippable/opt: ANiz-8m4TrmalntZHQm0VQ + repackage-l10n-ca-valencia-win64-shippable/opt: fEphKR38SpKzw5JV30NTtg + repackage-l10n-ca-win32-shippable/opt: IsXy84E2Q0C46zb1_jjNdg + repackage-l10n-ca-win64-aarch64-shippable/opt: FklqO5gmRyetq8hOl5Rk3A + repackage-l10n-ca-win64-shippable/opt: a97Zav99Q_yAIGoU03prRw + repackage-l10n-cak-linux-shippable/opt: W918zGpFTm-fKkLjCjYJ-A + repackage-l10n-cak-linux64-shippable/opt: Dqp9xN1CSfKickNji6jpGQ + repackage-l10n-cak-macosx64-shippable/opt: dnws-JY1RVCz8z42cSqDZg + repackage-l10n-cak-win32-shippable/opt: P6eKgRUvTUuQyiE1xFXHTQ + repackage-l10n-cak-win64-aarch64-shippable/opt: WH3eTCgVQVK7U2SwOU13zg + repackage-l10n-cak-win64-shippable/opt: BiL-HBX9SSKKqWvoF9KSMg + repackage-l10n-cs-linux-shippable/opt: LarHrQNrTiejxMpqLo1OWA + repackage-l10n-cs-linux64-shippable/opt: FR_DqK24S9C8JkHRMjO8EA + repackage-l10n-cs-macosx64-shippable/opt: TeHFfzI1T3OMGEodmBEtwA + repackage-l10n-cs-win32-shippable/opt: IH_b-3DzQUeauTxOCS0YIg + repackage-l10n-cs-win64-aarch64-shippable/opt: SYHNK1YoSna3rRJ7dqtOZg + repackage-l10n-cs-win64-shippable/opt: aG93VZ2XT4OXV69WXi5y_g + repackage-l10n-cy-linux-shippable/opt: ON0As2I5R5uWtWyl1r788g + repackage-l10n-cy-linux64-shippable/opt: a28N25FLQFaktrmY1LEt-g + repackage-l10n-cy-macosx64-shippable/opt: GP174BbzRr64CJ9cfhffgw + repackage-l10n-cy-win32-shippable/opt: SiDM-x2-QHu5kzznCcGUZQ + repackage-l10n-cy-win64-aarch64-shippable/opt: S4aDnLGTT7enWqfOvyVqsg + repackage-l10n-cy-win64-shippable/opt: X-pFCJc8RMqlxtkEsPhKxg + repackage-l10n-da-linux-shippable/opt: Ewoup2rLQPORNlnx0n3RCg + repackage-l10n-da-linux64-shippable/opt: XnuCCWJmQXaTadSI6vYhdA + repackage-l10n-da-macosx64-shippable/opt: Mr2NbUsKSp60bq__1qqE_g + repackage-l10n-da-win32-shippable/opt: e4GKg-69SimFUiqomOPNiQ + repackage-l10n-da-win64-aarch64-shippable/opt: URBQ7OTRQJi5QQccEloaMA + repackage-l10n-da-win64-shippable/opt: YlOg-bGGTji59L1KqM_DJA + repackage-l10n-de-linux-shippable/opt: GEn4DNyoTjCIfqK9pKOGIg + repackage-l10n-de-linux64-shippable/opt: c3UK1BCqTdWTlL0mtpezDw + repackage-l10n-de-macosx64-shippable/opt: CQCw0ozaSpeTQqOEEbBT3w + repackage-l10n-de-win32-shippable/opt: S7B9GJYtRJiyzBHwRs84ng + repackage-l10n-de-win64-aarch64-shippable/opt: NttS6NAlTtqvpdRy9nTYJQ + repackage-l10n-de-win64-shippable/opt: J34mv5qESqeBrAYlH1V1aA + repackage-l10n-dsb-linux-shippable/opt: aUP7emHTTZWK5yz47xbfwQ + repackage-l10n-dsb-linux64-shippable/opt: P57L8NcDR9uWIqz2eyvSjQ + repackage-l10n-dsb-macosx64-shippable/opt: YnlwZ3axReGIQWIqOiSjvg + repackage-l10n-dsb-win32-shippable/opt: B1Hwm3gPTGOJcACqHyr1zw + repackage-l10n-dsb-win64-aarch64-shippable/opt: aU8sl2lVTyGdApFKdW_hqQ + repackage-l10n-dsb-win64-shippable/opt: V7qKP_KESoW2NKodFmugjw + repackage-l10n-el-linux-shippable/opt: Viuket3zSFKgOzitfpiFwg + repackage-l10n-el-linux64-shippable/opt: IkfQsWs8SGyD5wLPIhmS6Q + repackage-l10n-el-macosx64-shippable/opt: NbppDqasSmKRXBVFeM1njw + repackage-l10n-el-win32-shippable/opt: SXzJbWLVQDqlRBBW5bCZFg + repackage-l10n-el-win64-aarch64-shippable/opt: f-GY4_ZXTCy4g863G-jBYw + repackage-l10n-el-win64-shippable/opt: MXs1LrZ4Rh-NB13lBwc9GA + repackage-l10n-en-CA-linux-shippable/opt: JT_iYs_5QnurxFSYGtKVXQ + repackage-l10n-en-CA-linux64-shippable/opt: LjjNY3MJQGKFQkRMjVni0A + repackage-l10n-en-CA-macosx64-shippable/opt: B7U3QdzLTYSkm0M1GYImyg + repackage-l10n-en-CA-win32-shippable/opt: L_PvAGF-S9yDwg06gmLODQ + repackage-l10n-en-CA-win64-aarch64-shippable/opt: PPMciiJxQL63ZdWh7PJC7g + repackage-l10n-en-CA-win64-shippable/opt: ReubpRQGRaWpT-0K0ytsfA + repackage-l10n-en-GB-linux-shippable/opt: B7K5MI_ORsCEdb7aLEbspA + repackage-l10n-en-GB-linux64-shippable/opt: NOjQQ7caQRGFcESrH41qVQ + repackage-l10n-en-GB-macosx64-shippable/opt: SMVpS5JQS8G2ZUMRUArBrA + repackage-l10n-en-GB-win32-shippable/opt: IoOfCpChTDC1ObDO1Z7xdQ + repackage-l10n-en-GB-win64-aarch64-shippable/opt: LlJUEh5PRvyvzcgkMEht2g + repackage-l10n-en-GB-win64-shippable/opt: Yhwp4iCUQkazOCwJViSZ1g + repackage-l10n-eo-linux-shippable/opt: Ga__i99-QUWOWCcuBEAslw + repackage-l10n-eo-linux64-shippable/opt: EcxQwsQDTvy238Y9-tKZpw + repackage-l10n-eo-macosx64-shippable/opt: Gcd5mmytSAK7IzvxNnEwsQ + repackage-l10n-eo-win32-shippable/opt: YXXu0zd7SBiri9apDDcQTw + repackage-l10n-eo-win64-aarch64-shippable/opt: TIdZrY-1QemiWfe6DHqlYg + repackage-l10n-eo-win64-shippable/opt: V-_nuEk4RzCnhLn_F4OpKw + repackage-l10n-es-AR-linux-shippable/opt: LreOCBJLQQmmOVu5ohLE0w + repackage-l10n-es-AR-linux64-shippable/opt: f3STkDyVQauoUKYpPLvhIQ + repackage-l10n-es-AR-macosx64-shippable/opt: Htdy8fxOQf6mdiIjT1P7fQ + repackage-l10n-es-AR-win32-shippable/opt: W-HUrdpdSGevk1chQLNwIA + repackage-l10n-es-AR-win64-aarch64-shippable/opt: EQMLCzLhTiKxcQcCZlHHyw + repackage-l10n-es-AR-win64-shippable/opt: QIAtIqV3QSm9wZbKYN4HBQ + repackage-l10n-es-CL-linux-shippable/opt: SQkh2QNYQ2aY-OQSRfMS9Q + repackage-l10n-es-CL-linux64-shippable/opt: dmUHipG6SX-ooG1EIw7ijg + repackage-l10n-es-CL-macosx64-shippable/opt: c02ZSb1NSd6EBX_PXW516g + repackage-l10n-es-CL-win32-shippable/opt: F322w4dMTm68hHCoEijIPg + repackage-l10n-es-CL-win64-aarch64-shippable/opt: FH2dAVvQQ5Gr_s8vCoKVzg + repackage-l10n-es-CL-win64-shippable/opt: Dw2gTai8Sxa906MxyoRnZw + repackage-l10n-es-ES-linux-shippable/opt: PIKZphtISKCo8q8_a7Hl0A + repackage-l10n-es-ES-linux64-shippable/opt: RDpJAKvWTaKesGhUeFrMCA + repackage-l10n-es-ES-macosx64-shippable/opt: Q8N-a6I7SSqrtptRFW8Ngg + repackage-l10n-es-ES-win32-shippable/opt: L6Ax6UgFT8WrAQpLCYq40w + repackage-l10n-es-ES-win64-aarch64-shippable/opt: D-rXKnBYSCK7bswkw9vJbQ + repackage-l10n-es-ES-win64-shippable/opt: Ksi8UpmiSVCuMH2BkziDSw + repackage-l10n-es-MX-linux-shippable/opt: TeZLdDVkRmOyAJuoXDCgLg + repackage-l10n-es-MX-linux64-shippable/opt: acyiAJJrQmmWDMarNrjrCw + repackage-l10n-es-MX-macosx64-shippable/opt: Z8nY2XULRR-MFc-UFwXwBg + repackage-l10n-es-MX-win32-shippable/opt: A6QPfZMKTguQX-y4myWvFA + repackage-l10n-es-MX-win64-aarch64-shippable/opt: dG5FkTvNQuW-sPFCTyezCw + repackage-l10n-es-MX-win64-shippable/opt: EaGE0BnnS4qEDvUN6zljuQ + repackage-l10n-et-linux-shippable/opt: RSHkem0wQHGR7Sb8IjQTZA + repackage-l10n-et-linux64-shippable/opt: PAbJy7ZPSwyVs6oAKLNdpA + repackage-l10n-et-macosx64-shippable/opt: XXucMWo_QWWNMZ3U4SFV6A + repackage-l10n-et-win32-shippable/opt: XGWoR5vjRcmNGqEITFq_Pw + repackage-l10n-et-win64-aarch64-shippable/opt: YgKXNxIKQGWmFee7Ld7eYA + repackage-l10n-et-win64-shippable/opt: BxP9kEjjRK-b_dnM2nuIDw + repackage-l10n-eu-linux-shippable/opt: OJ6uxThhSU-fDJra5cigYw + repackage-l10n-eu-linux64-shippable/opt: AIXl5x5kR8imbnrmS8PMyA + repackage-l10n-eu-macosx64-shippable/opt: SteD3NamTfe-StEt0bY6RQ + repackage-l10n-eu-win32-shippable/opt: Xt4ncLOERoWt1k_5zx17dw + repackage-l10n-eu-win64-aarch64-shippable/opt: EuOQ9mg4QIq4EYnNZ9SC-w + repackage-l10n-eu-win64-shippable/opt: SkGQO7nHRS-f69JyEnSiMQ + repackage-l10n-fa-linux-shippable/opt: L_YYaTpPTnGPSHVl_fS0gg + repackage-l10n-fa-linux64-shippable/opt: RERJGgytStuUc83TEj20JA + repackage-l10n-fa-macosx64-shippable/opt: chXaJhD1TRaisF5a_6v0GQ + repackage-l10n-fa-win32-shippable/opt: RL7DQfM8R9iXQQFSq4pWUg + repackage-l10n-fa-win64-aarch64-shippable/opt: UY-3mSx-TYmAiEFYiNaCWQ + repackage-l10n-fa-win64-shippable/opt: OWPdXf7sQ-GNV0_W6ib-gw + repackage-l10n-ff-linux-shippable/opt: e_dTjY0sQTGIKBwCqb0Kew + repackage-l10n-ff-linux64-shippable/opt: dw5wzB_qRa2KiGfH_PunOw + repackage-l10n-ff-macosx64-shippable/opt: FiC4AiZ-QtK_SMv2on2QxA + repackage-l10n-ff-win32-shippable/opt: R2ja3wuFQPa2tnbgUBlHuQ + repackage-l10n-ff-win64-aarch64-shippable/opt: Jdkbp4wCQBuhLAwO5gS1QQ + repackage-l10n-ff-win64-shippable/opt: amnSUqDxR0miMUTlRt1UXA + repackage-l10n-fi-linux-shippable/opt: LOrO32tORCSmOzeaiKAcng + repackage-l10n-fi-linux64-shippable/opt: Z-PirRILTsKokUEE2XnJdQ + repackage-l10n-fi-macosx64-shippable/opt: b3QqboNaTyOvkzjxOLdIyg + repackage-l10n-fi-win32-shippable/opt: cbGNbbD-Q06O0xlU_759PQ + repackage-l10n-fi-win64-aarch64-shippable/opt: QV128dfHSmmdOdTwCP-L0w + repackage-l10n-fi-win64-shippable/opt: dpPcThR6QTe4CApnoqga6Q + repackage-l10n-fr-linux-shippable/opt: D5lUJ13aQvWWhVig3EmtlQ + repackage-l10n-fr-linux64-shippable/opt: c7-t3H2cRk-Jc2vcO9lSQA + repackage-l10n-fr-macosx64-shippable/opt: dMBitXwlSACnnhPW_3A5-w + repackage-l10n-fr-win32-shippable/opt: L4ADLGI8RUSqDDFLsmdopQ + repackage-l10n-fr-win64-aarch64-shippable/opt: ds4cfITFSTaN6--tXF4Tdw + repackage-l10n-fr-win64-shippable/opt: BuFO35snQ-23njnCZjTc3A + repackage-l10n-fur-linux-shippable/opt: JL0UYwuVRT2ElckA4dWNHQ + repackage-l10n-fur-linux64-shippable/opt: bEjTQ8umSg26tc8rg3AC0A + repackage-l10n-fur-macosx64-shippable/opt: Q1KR7jvbR1a3pr1gm-APKg + repackage-l10n-fur-win32-shippable/opt: NDUglIThQFet20xSHZVMQw + repackage-l10n-fur-win64-aarch64-shippable/opt: UjOteky6SI-h1bYlJ-T7cA + repackage-l10n-fur-win64-shippable/opt: Bbom6aKuROW-1-IZpcHtwA + repackage-l10n-fy-NL-linux-shippable/opt: KuhK8kfHSgSa6jZhr0LXug + repackage-l10n-fy-NL-linux64-shippable/opt: M4wShbsvTV2Eaz2U5pfbZA + repackage-l10n-fy-NL-macosx64-shippable/opt: IEnAIZa_RUWVt3p5JuvPbA + repackage-l10n-fy-NL-win32-shippable/opt: BdjL1bBYSR-h5TQO5JVhJw + repackage-l10n-fy-NL-win64-aarch64-shippable/opt: fectuYehQU2M2mglgu0HrQ + repackage-l10n-fy-NL-win64-shippable/opt: LDpxvXATTcSLa0LKV8_GQg + repackage-l10n-ga-IE-linux-shippable/opt: d1x5fenuTKi4VmrlRzz2Jg + repackage-l10n-ga-IE-linux64-shippable/opt: NRML7Qe8TgGUSHRqpNGSCg + repackage-l10n-ga-IE-macosx64-shippable/opt: G2QMiHNGQAalAHzTVcZZWA + repackage-l10n-ga-IE-win32-shippable/opt: VgNw9UeDTPOXYvS4vlYung + repackage-l10n-ga-IE-win64-aarch64-shippable/opt: QiJrjtEXSRistdWudG-ALA + repackage-l10n-ga-IE-win64-shippable/opt: ZPLTOhaSSRGc7czCGe2Hpw + repackage-l10n-gd-linux-shippable/opt: auLAkDF6SsC30ocv67O9wg + repackage-l10n-gd-linux64-shippable/opt: UDJ_vaJhQqSHnzZf1VmSYA + repackage-l10n-gd-macosx64-shippable/opt: K3LiALBZQ0OnJcGuwU4LSw + repackage-l10n-gd-win32-shippable/opt: Hk-PyaydRIWOAXt7VuJ4xQ + repackage-l10n-gd-win64-aarch64-shippable/opt: MrmFABpuTNWIfl9ieM-xWw + repackage-l10n-gd-win64-shippable/opt: OBrcTlYLSouS_5STQsjOrw + repackage-l10n-gl-linux-shippable/opt: ADCof4roQTaOdvKc2cP3jQ + repackage-l10n-gl-linux64-shippable/opt: Ynb5BDhUR5GK5XaETuvTUQ + repackage-l10n-gl-macosx64-shippable/opt: Ma5GwF85SZKiRYErHCH66w + repackage-l10n-gl-win32-shippable/opt: B_MqDpV5QCmCbUSYoboQOA + repackage-l10n-gl-win64-aarch64-shippable/opt: YYioF20QRj64vnRSZVTiWg + repackage-l10n-gl-win64-shippable/opt: RyOF2v2-TBqP9jqEs-Kc-w + repackage-l10n-gn-linux-shippable/opt: bCJgcxsVTQG0nciGLgMbVA + repackage-l10n-gn-linux64-shippable/opt: KIFcXJoESq6qwxr8zGXjtQ + repackage-l10n-gn-macosx64-shippable/opt: Fd8lyaCoSQ-0STpOAqudCw + repackage-l10n-gn-win32-shippable/opt: BR7Oq5FsTB6Pg7rRsyNNAg + repackage-l10n-gn-win64-aarch64-shippable/opt: bvUD8XodSnuLgegIn6HNLw + repackage-l10n-gn-win64-shippable/opt: cB9KBVy7RiS6SOCfER3OxQ + repackage-l10n-gu-IN-linux-shippable/opt: TyLRVMG6RkKpYiIZ4qH5ug + repackage-l10n-gu-IN-linux64-shippable/opt: RFsAJJ5eTimmIj-CI4Bkwg + repackage-l10n-gu-IN-macosx64-shippable/opt: ZGjHVUO2QruCk4cYaFfMMA + repackage-l10n-gu-IN-win32-shippable/opt: MPm3o4haRmKwZmsAMZMMDw + repackage-l10n-gu-IN-win64-aarch64-shippable/opt: IOeUYu2FQXGwXK1REIzvrg + repackage-l10n-gu-IN-win64-shippable/opt: DYSMceb-Qg6_3fS-8BBCQw + repackage-l10n-he-linux-shippable/opt: e9JUrA37ReqOcGLn74lTcA + repackage-l10n-he-linux64-shippable/opt: K5B35knMSCeVM1IfPkMWrg + repackage-l10n-he-macosx64-shippable/opt: e2-GFuVoR7ueba0o3R6wsQ + repackage-l10n-he-win32-shippable/opt: fOk0-6usRLWmtnTWgcp3FA + repackage-l10n-he-win64-aarch64-shippable/opt: flBaNRPxSLWH1zl_MWs7Rg + repackage-l10n-he-win64-shippable/opt: WmGAgXOhSHupy_s0aiOlyQ + repackage-l10n-hi-IN-linux-shippable/opt: Zt_PAymxR1GtH3o9kBaOng + repackage-l10n-hi-IN-linux64-shippable/opt: IrYrlWKoR1ytedlhvmS_pA + repackage-l10n-hi-IN-macosx64-shippable/opt: U3LmF3mDQYOW3D6WKA7ckw + repackage-l10n-hi-IN-win32-shippable/opt: bHiqrb8pRkWgBAQBnpTTBw + repackage-l10n-hi-IN-win64-aarch64-shippable/opt: C_fWKExzRiCyQVmUq2u3Ww + repackage-l10n-hi-IN-win64-shippable/opt: Fjo5iRq3TPm5P-ITWnkBvg + repackage-l10n-hr-linux-shippable/opt: MdTuU0PrSI6C2md6prVZow + repackage-l10n-hr-linux64-shippable/opt: KEroKBMMSiWLWgeKD8w4Og + repackage-l10n-hr-macosx64-shippable/opt: UiKgq5a4RNqW4xaZ7RzU0A + repackage-l10n-hr-win32-shippable/opt: aJVDyuCsR1ieaxc24BeATA + repackage-l10n-hr-win64-aarch64-shippable/opt: SS6_GU_hSvyH38-btzPReg + repackage-l10n-hr-win64-shippable/opt: Ay2SM7K5QxGXvjA5FpguTw + repackage-l10n-hsb-linux-shippable/opt: YwH46xw_SSeOzECvR8vSvg + repackage-l10n-hsb-linux64-shippable/opt: fMkKvLVjQe2VtsTSmF-coQ + repackage-l10n-hsb-macosx64-shippable/opt: QPq00krkRsCMgkVDChegVQ + repackage-l10n-hsb-win32-shippable/opt: YwHEwJwOQdORydh1KgEelQ + repackage-l10n-hsb-win64-aarch64-shippable/opt: UiGhvaK4RAmbTTiHcEmo9w + repackage-l10n-hsb-win64-shippable/opt: Gu0B-8F8SImRhs5Q_Wo3Yw + repackage-l10n-hu-linux-shippable/opt: bqc0GAEWR-O3R-JDxIt4-Q + repackage-l10n-hu-linux64-shippable/opt: NBqHOjUaQpW0wvkvvUJnSA + repackage-l10n-hu-macosx64-shippable/opt: IX_Z-N4kSFWonD3o1AS-9w + repackage-l10n-hu-win32-shippable/opt: BQQANuLvR-Suzzwdn6C68w + repackage-l10n-hu-win64-aarch64-shippable/opt: OzHgPiHKR9CkOgashdh8xQ + repackage-l10n-hu-win64-shippable/opt: Ny3JSb0zQzejNFRHcGJoEw + repackage-l10n-hy-AM-linux-shippable/opt: VydsstjxSj6L558yJEADaA + repackage-l10n-hy-AM-linux64-shippable/opt: G6kyA6YhQ2mLQogjJaHvjg + repackage-l10n-hy-AM-macosx64-shippable/opt: KtCgWYjTQKS9Cc42HV4WgQ + repackage-l10n-hy-AM-win32-shippable/opt: OZ46H1YBRdy874XjDqTOBQ + repackage-l10n-hy-AM-win64-aarch64-shippable/opt: QqcVYSY9R723TWuvsGtzBg + repackage-l10n-hy-AM-win64-shippable/opt: PlJNxfe-QS-mnOJ4lBSGOA + repackage-l10n-ia-linux-shippable/opt: V71iY-RdQUGXL6zp67LRhA + repackage-l10n-ia-linux64-shippable/opt: Re-2-JgZRpy9baD9q-r7NA + repackage-l10n-ia-macosx64-shippable/opt: a5fqHzeuR0-gznR3tZal4w + repackage-l10n-ia-win32-shippable/opt: SmBg73eESYeCdw9XBLUwng + repackage-l10n-ia-win64-aarch64-shippable/opt: Wl8EhSBSRt-jsUSrgwh5PQ + repackage-l10n-ia-win64-shippable/opt: dbPmVlv2TCG1xp-O2pxqZg + repackage-l10n-id-linux-shippable/opt: ZB55gNFVQHC-Jtc9X6zjYw + repackage-l10n-id-linux64-shippable/opt: F9hvKMHyQfuKeZIZVTalGg + repackage-l10n-id-macosx64-shippable/opt: LHIyoAacR8SbeqEfuQvCzQ + repackage-l10n-id-win32-shippable/opt: BzHFxGA_SOao7kVe9cdJ0A + repackage-l10n-id-win64-aarch64-shippable/opt: YtuhqYYuTyiF0SxZlx4kAA + repackage-l10n-id-win64-shippable/opt: MKtnICpbQgmMusn7Ct0B7Q + repackage-l10n-is-linux-shippable/opt: V14s_SkGRTqij4PZHrF8-g + repackage-l10n-is-linux64-shippable/opt: AdFMw6shSva6vyyRWUsxLg + repackage-l10n-is-macosx64-shippable/opt: fYOlvEDIQS63R5-Cs77Cog + repackage-l10n-is-win32-shippable/opt: d2zpZhraRtugTW5ZGD0HxQ + repackage-l10n-is-win64-aarch64-shippable/opt: BATHTgrhSRmNnYDCm3HvBA + repackage-l10n-is-win64-shippable/opt: PD9kXBZ7TkmOxOeDNl8iJA + repackage-l10n-it-linux-shippable/opt: cjZJvLETRh-W32MJpEXMow + repackage-l10n-it-linux64-shippable/opt: WN1HzRAHQ366m31y20NhGQ + repackage-l10n-it-macosx64-shippable/opt: Tsz_yicmTyWTOYaQqPR91Q + repackage-l10n-it-win32-shippable/opt: Hw-O6uheQhW__wNtguyCgA + repackage-l10n-it-win64-aarch64-shippable/opt: dwD0pwaZSm6vvaLKbNOhzg + repackage-l10n-it-win64-shippable/opt: CKeFeWz0Qm2fFJqVIBvb8A + repackage-l10n-ja-JP-mac-macosx64-shippable/opt: EhKse8DWQ56zRENZ8XlKwA + repackage-l10n-ja-linux-shippable/opt: GYrLHR5xTEmWZ9eA73mDFw + repackage-l10n-ja-linux64-shippable/opt: XPoTfEzMTLmMMlkA-nO8RA + repackage-l10n-ja-win32-shippable/opt: E2yFf5-gTUe5PTsI5oiHKQ + repackage-l10n-ja-win64-aarch64-shippable/opt: SOI1Ef0uQcyI0L6HskYGxQ + repackage-l10n-ja-win64-shippable/opt: BO0QMDgjRsqFkGmfeJjimA + repackage-l10n-ka-linux-shippable/opt: KVwC4S2JQDWUtJz9sy9kjg + repackage-l10n-ka-linux64-shippable/opt: AHnNCahNQ3q7m5sXJ2HtiA + repackage-l10n-ka-macosx64-shippable/opt: F9XdSv0ORLWjfmGBNe3_yA + repackage-l10n-ka-win32-shippable/opt: ebiwUMDMRVqPZPoXreK88g + repackage-l10n-ka-win64-aarch64-shippable/opt: L29w0WsfQnOZJeCZZ6FYgg + repackage-l10n-ka-win64-shippable/opt: PtUkQ2zkQ9aSNehKtma7eQ + repackage-l10n-kab-linux-shippable/opt: eEDNhW-XQASputIpf801Kg + repackage-l10n-kab-linux64-shippable/opt: CaQsjF3IRxmkWIg3Uq6DCA + repackage-l10n-kab-macosx64-shippable/opt: THNQ64FaTkS_dH1tz98K6w + repackage-l10n-kab-win32-shippable/opt: NAzyWfjLQ727o0sa7tyvjw + repackage-l10n-kab-win64-aarch64-shippable/opt: crPzEpICTLmkbQbmWP4E5g + repackage-l10n-kab-win64-shippable/opt: DWwuWZX3RYyBZcN86STLsg + repackage-l10n-kk-linux-shippable/opt: AJeXqSh1SNSwC-qfHZq3oA + repackage-l10n-kk-linux64-shippable/opt: FgQBmxDDQ7Oo4OfASFgTyw + repackage-l10n-kk-macosx64-shippable/opt: bD9y9DBcQ0GCrLsx8BKYXg + repackage-l10n-kk-win32-shippable/opt: WEqH0iFISSWUwKehDoAqGA + repackage-l10n-kk-win64-aarch64-shippable/opt: ZbifEtd8QlKGH6O8W9K_2w + repackage-l10n-kk-win64-shippable/opt: EM37CCYuTuKAIe_ARQAM2w + repackage-l10n-km-linux-shippable/opt: IOgH-zOqT3O_vWe7mZceUw + repackage-l10n-km-linux64-shippable/opt: Dkpw5rvVQlS_Mqlo2uiJ-g + repackage-l10n-km-macosx64-shippable/opt: J9xETaF5RbykphTQgnDqCA + repackage-l10n-km-win32-shippable/opt: b9Jix7Z2R_28ve8Nf_lp7A + repackage-l10n-km-win64-aarch64-shippable/opt: WjbhN_swRpmEgGcjQ4ToIw + repackage-l10n-km-win64-shippable/opt: VdJdw-vNR-OYj3T6VmUsWg + repackage-l10n-kn-linux-shippable/opt: LB6SOG7eRnK-D6SBF_d_RA + repackage-l10n-kn-linux64-shippable/opt: W91FVXtDTd-JVIeT6E1Ylw + repackage-l10n-kn-macosx64-shippable/opt: f3AqUaNXSx2z6KlzOm-QyA + repackage-l10n-kn-win32-shippable/opt: W1fGH00fT2-zwwiOTcgl5A + repackage-l10n-kn-win64-aarch64-shippable/opt: ThFja9_0QzO76k1mvEPRnw + repackage-l10n-kn-win64-shippable/opt: eOKAEUhjRWOErpRLQa12Zg + repackage-l10n-ko-linux-shippable/opt: etHMFEJjSCiBElK7bGaaOg + repackage-l10n-ko-linux64-shippable/opt: ZCaWX-pbTOKJ_5tZZ9KKzw + repackage-l10n-ko-macosx64-shippable/opt: ExC9nTkDQG6MnuzfpkVRnA + repackage-l10n-ko-win32-shippable/opt: QJzVSXeVS_GS4cXkFt-txA + repackage-l10n-ko-win64-aarch64-shippable/opt: UHEWv73cT_-4t_5NbqzHFg + repackage-l10n-ko-win64-shippable/opt: W-Gm7KOURJWdNTnfKJrg_w + repackage-l10n-lij-linux-shippable/opt: YgXM40jHRHGxZhBR_8FWMg + repackage-l10n-lij-linux64-shippable/opt: Bt3XQGFxQES3hVD4j6wvVA + repackage-l10n-lij-macosx64-shippable/opt: I8BTLfowSuOaVCBxA5CXHQ + repackage-l10n-lij-win32-shippable/opt: TNxTcYHzSliOVfjrzdkqLg + repackage-l10n-lij-win64-aarch64-shippable/opt: djnD3c1yRJqy9rr1DF7sFw + repackage-l10n-lij-win64-shippable/opt: UoPZrRk0TZWsbliigIOuFQ + repackage-l10n-lt-linux-shippable/opt: K6BYAOAnSb6SY7K9tcODVg + repackage-l10n-lt-linux64-shippable/opt: I67E0RDGTfaJM1pjcY2FqA + repackage-l10n-lt-macosx64-shippable/opt: Jhiw_4OmQlGB2cByQGZCBA + repackage-l10n-lt-win32-shippable/opt: UE1nmVHGSH2FCc3qbX4cEQ + repackage-l10n-lt-win64-aarch64-shippable/opt: UClJWkv8RoKcTY58p2AciQ + repackage-l10n-lt-win64-shippable/opt: YX2Oh20_TaKM4yR1H2cEUw + repackage-l10n-lv-linux-shippable/opt: VSXy_d96TtWHWzpApRj2cg + repackage-l10n-lv-linux64-shippable/opt: eULIT8usSgWuFXDIDhb3RA + repackage-l10n-lv-macosx64-shippable/opt: MP49-6QlSnupVlxQofMK1w + repackage-l10n-lv-win32-shippable/opt: VbJxxo1eTyOMwdheAv5YXA + repackage-l10n-lv-win64-aarch64-shippable/opt: YTPWc_F-R3uE-mnteHgpGg + repackage-l10n-lv-win64-shippable/opt: PlO60cI1T7yBANVJ9BwUew + repackage-l10n-mk-linux-shippable/opt: MS4KhIzcS9C5siM1k4tqyA + repackage-l10n-mk-linux64-shippable/opt: LplUMGiARDSgGlmHbNAM6Q + repackage-l10n-mk-macosx64-shippable/opt: elRRvWjERlSwLJ3tm37oeA + repackage-l10n-mk-win32-shippable/opt: NOBcRMxnRA6DtVdXDAOFzA + repackage-l10n-mk-win64-aarch64-shippable/opt: KK6it8nIR3yOVylxd8gdUw + repackage-l10n-mk-win64-shippable/opt: ddRkdPhWTzaFaxNufCGR7A + repackage-l10n-mr-linux-shippable/opt: YEhYZJ81TyixQoLp7XK2eg + repackage-l10n-mr-linux64-shippable/opt: QX3-77FiQdmBIrMwb-P4yw + repackage-l10n-mr-macosx64-shippable/opt: RQ_m5mhbQ7Otg6z4CUS6Eg + repackage-l10n-mr-win32-shippable/opt: JigHMqk7Rzak-_BYWEUuNQ + repackage-l10n-mr-win64-aarch64-shippable/opt: QOhWSKocRxu1ZDUIAYeZ6w + repackage-l10n-mr-win64-shippable/opt: ERtVUq69Q8qAocmYZfw0jQ + repackage-l10n-ms-linux-shippable/opt: ciMhK3dxTb6QOwYxXEUDeA + repackage-l10n-ms-linux64-shippable/opt: Hajv0pufTDWqdwu1TLaA7Q + repackage-l10n-ms-macosx64-shippable/opt: FltvvxFUQ_C--Nv0doJ_-w + repackage-l10n-ms-win32-shippable/opt: YriJQwV7RMqIqi65Mcz89g + repackage-l10n-ms-win64-aarch64-shippable/opt: GALaLhcVSc-JV9T9vLiH2g + repackage-l10n-ms-win64-shippable/opt: Y_rwLo3tQ1qW0VWMSyyIUg + repackage-l10n-my-linux-shippable/opt: bgss1xFhQweKgXL7mzm8Rw + repackage-l10n-my-linux64-shippable/opt: S--jXU7vQHGK_RKBH-ZhXg + repackage-l10n-my-macosx64-shippable/opt: YjPT8E6nR6u33tFc9ozlMA + repackage-l10n-my-win32-shippable/opt: VIZD2qFuSr-wEXGdRb_ExQ + repackage-l10n-my-win64-aarch64-shippable/opt: K4I7lEF-RnCq55TOq7ciDw + repackage-l10n-my-win64-shippable/opt: ChBjokxeSH66csGHXiIoNw + repackage-l10n-nb-NO-linux-shippable/opt: C_gWD6cQQl2YUZsyi4G0Gg + repackage-l10n-nb-NO-linux64-shippable/opt: VHJQIWb5QriJnkUN-HEfMA + repackage-l10n-nb-NO-macosx64-shippable/opt: FGEHsr9IRoqw0WZSStNOxw + repackage-l10n-nb-NO-win32-shippable/opt: GTbMjtKRQE-PNEhAKc4IsQ + repackage-l10n-nb-NO-win64-aarch64-shippable/opt: HEoQGACPSoK9BcyzHSKckQ + repackage-l10n-nb-NO-win64-shippable/opt: F8H8lNqVS6qPYfMsQeCj-w + repackage-l10n-ne-NP-linux-shippable/opt: U3qgluUuSE23XJLblh2fTA + repackage-l10n-ne-NP-linux64-shippable/opt: f01SfmNrTkWVRQXsHfyT5A + repackage-l10n-ne-NP-macosx64-shippable/opt: OX2a7HpjSd6I0CMOYHaleA + repackage-l10n-ne-NP-win32-shippable/opt: SEGlw0J2T1OnJQsxYd_v7w + repackage-l10n-ne-NP-win64-aarch64-shippable/opt: RbDHPqKQQ16Qpip6WuK5Aw + repackage-l10n-ne-NP-win64-shippable/opt: Z_zdiJwtT3WBtIA85nG9ag + repackage-l10n-nl-linux-shippable/opt: O2lDqs0mRiepVaHGFsZxLA + repackage-l10n-nl-linux64-shippable/opt: aATJA1QdQJOoffiVG_llNg + repackage-l10n-nl-macosx64-shippable/opt: SCeeTcp-RjuY7tOmkW8brw + repackage-l10n-nl-win32-shippable/opt: Fx4izlVRSqyfztqaKLTVIg + repackage-l10n-nl-win64-aarch64-shippable/opt: Q1JcCgCDRGywiiUfr3ULSA + repackage-l10n-nl-win64-shippable/opt: dPa5m2eSTRO25IbaO9VJdA + repackage-l10n-nn-NO-linux-shippable/opt: RQ0Hbro1RKWmqQAQzu15kg + repackage-l10n-nn-NO-linux64-shippable/opt: Ua4XzpvjTFucc8tt5BqdsQ + repackage-l10n-nn-NO-macosx64-shippable/opt: cPWoZNW9R8mbTqlG97vZVg + repackage-l10n-nn-NO-win32-shippable/opt: JCkx_SGCQjSMgPJq5621Jg + repackage-l10n-nn-NO-win64-aarch64-shippable/opt: RPzLI8dpTlKm5TfVhixdFw + repackage-l10n-nn-NO-win64-shippable/opt: RRuk16oNQbOIjO-zrtVlKg + repackage-l10n-oc-linux-shippable/opt: N0f_ELFrQWGJ22LDZvDzPw + repackage-l10n-oc-linux64-shippable/opt: aZQLTKt_STywWF30doFcRg + repackage-l10n-oc-macosx64-shippable/opt: JFG_6rGnTo2Z3j6FgpIC-g + repackage-l10n-oc-win32-shippable/opt: eA0YBx_xSZC__4KHBij8-g + repackage-l10n-oc-win64-aarch64-shippable/opt: dPpvI3sJQG2oifvXnX__mQ + repackage-l10n-oc-win64-shippable/opt: Kxvg5nhzSoCWfbno5zxU1g + repackage-l10n-pa-IN-linux-shippable/opt: EbCY8bdVRfSyJvW_u76Oag + repackage-l10n-pa-IN-linux64-shippable/opt: bOF-66P3QgqUhJAULIQuyA + repackage-l10n-pa-IN-macosx64-shippable/opt: KHknKvdjQ1Wbut9LCW6mDQ + repackage-l10n-pa-IN-win32-shippable/opt: X2Z3ENeSSPyCSwlKY1OyqA + repackage-l10n-pa-IN-win64-aarch64-shippable/opt: MKqKI0NNQnOU8lZEdOPxGw + repackage-l10n-pa-IN-win64-shippable/opt: ANjoRvpkSbeOk5_KPAluSg + repackage-l10n-pl-linux-shippable/opt: GwehA9joRCqnn-bJi0FWCw + repackage-l10n-pl-linux64-shippable/opt: KODB8NtqQUygEBgGFrkzAQ + repackage-l10n-pl-macosx64-shippable/opt: Q2xMJSUmR82ZeuDMI9-mOA + repackage-l10n-pl-win32-shippable/opt: aCe0XwmsQvKVsoQhFPZaNg + repackage-l10n-pl-win64-aarch64-shippable/opt: V9vqJOT9ScaLlgdbw-Lz2g + repackage-l10n-pl-win64-shippable/opt: KfyrX8A6RNSjByn62WZExQ + repackage-l10n-pt-BR-linux-shippable/opt: c0EfjETIQvmceuFBdpoHgA + repackage-l10n-pt-BR-linux64-shippable/opt: VB_ODcEBTJ63S2cGBw603g + repackage-l10n-pt-BR-macosx64-shippable/opt: B2DuJj0BTI-w7hyLqhtkng + repackage-l10n-pt-BR-win32-shippable/opt: epb2TxEzS-OorNLLQb-r-g + repackage-l10n-pt-BR-win64-aarch64-shippable/opt: Ysd_k-CPT7CMv1sOu1vmCw + repackage-l10n-pt-BR-win64-shippable/opt: fm26108gSC2Wavm2UriU0Q + repackage-l10n-pt-PT-linux-shippable/opt: LkBUB50aRoa-oJZkCcm5Gw + repackage-l10n-pt-PT-linux64-shippable/opt: OjbYx41OQnWPL7lzBBUzrQ + repackage-l10n-pt-PT-macosx64-shippable/opt: ah1s1OQsRB-xW2IROngyjQ + repackage-l10n-pt-PT-win32-shippable/opt: S_6cF56URW6VCoMdUFHu7Q + repackage-l10n-pt-PT-win64-aarch64-shippable/opt: T3kAK3TdTfSfkLQcfj9h1g + repackage-l10n-pt-PT-win64-shippable/opt: G6qav1KuSjWOivgGz41w-Q + repackage-l10n-rm-linux-shippable/opt: dO59840xQ9ulLLlNJVAarA + repackage-l10n-rm-linux64-shippable/opt: Udd8hQmITRK0falTxhFYnA + repackage-l10n-rm-macosx64-shippable/opt: FaIvcFCqTW6cUMFj6KftyA + repackage-l10n-rm-win32-shippable/opt: LDAfS4kYQGaALoGXYFH8WA + repackage-l10n-rm-win64-aarch64-shippable/opt: EGZX0ijyQduj6VvI6Ume9g + repackage-l10n-rm-win64-shippable/opt: fV_BIHVeTmi04J5XWbMAFw + repackage-l10n-ro-linux-shippable/opt: cJKmgFlUSjuB4y34DW94cA + repackage-l10n-ro-linux64-shippable/opt: Bk_w9iONTXiCNdX1UgGt-w + repackage-l10n-ro-macosx64-shippable/opt: QHWb6y0pRoS2L3UKEja7eg + repackage-l10n-ro-win32-shippable/opt: dbqKE3pgTKa36_v6mxR8CA + repackage-l10n-ro-win64-aarch64-shippable/opt: ci4nXjoLSQSbtXs7iWQ2Ww + repackage-l10n-ro-win64-shippable/opt: OjWMOjtSTDugJN7m0i-8sA + repackage-l10n-ru-linux-shippable/opt: bxoXC96jRamI45TJjfi5oA + repackage-l10n-ru-linux64-shippable/opt: QV3EGM0BSt2Mxfu1aH0seg + repackage-l10n-ru-macosx64-shippable/opt: OYy29NiTTdyr57UO2ytVWg + repackage-l10n-ru-win32-shippable/opt: TYgeUyh3Ttu-cfQCBQYpHQ + repackage-l10n-ru-win64-aarch64-shippable/opt: GN9_Ci1zTgGCnmcBEVziFA + repackage-l10n-ru-win64-shippable/opt: MVbF7GuDRXSmasrKxDhsQw + repackage-l10n-sc-linux-shippable/opt: QYcx7zg4Sva1qyjCHc-hXg + repackage-l10n-sc-linux64-shippable/opt: CzTvYOF0TpWE0HjRA2Uv-w + repackage-l10n-sc-macosx64-shippable/opt: SISuL9mwRUayvjNLkweC4A + repackage-l10n-sc-win32-shippable/opt: dNQFEHKJS5Odno2J6pKLuw + repackage-l10n-sc-win64-aarch64-shippable/opt: Y_-B6b8eT_uPG_hyQ9Uzcw + repackage-l10n-sc-win64-shippable/opt: GMCWbfbmS8OMv3hWIzIX3w + repackage-l10n-sco-linux-shippable/opt: P62HKMw0QfyjeH1Pny7QjQ + repackage-l10n-sco-linux64-shippable/opt: XlObECctQ1qcye6tqwX-Ug + repackage-l10n-sco-macosx64-shippable/opt: IUw_WbU2ThKffVLQvzEB-w + repackage-l10n-sco-win32-shippable/opt: eqtuzt2fSKu9gjbPeKg71w + repackage-l10n-sco-win64-aarch64-shippable/opt: PRZnj1TITZSDuxtN2TBTDQ + repackage-l10n-sco-win64-shippable/opt: DeZ5o64OQ3Czmsw4564HDA + repackage-l10n-si-linux-shippable/opt: VuBdKm8MSpKTpgnIYZm9Qg + repackage-l10n-si-linux64-shippable/opt: eWC5wcbhQ22SowoVj25jQw + repackage-l10n-si-macosx64-shippable/opt: RQfGQF6NSwuRMT0MllPWQA + repackage-l10n-si-win32-shippable/opt: FQS3zEKcTkmG7D_Gp0GrHw + repackage-l10n-si-win64-aarch64-shippable/opt: GJt6oOz1SxuyEb0RjiLeqw + repackage-l10n-si-win64-shippable/opt: QGLXnbI6Q7iRvciWfGXiqA + repackage-l10n-sk-linux-shippable/opt: dbPYzlwbQBOqYDyPK5tpgw + repackage-l10n-sk-linux64-shippable/opt: Ds7lgxlkQX-hl4Mum1bd4g + repackage-l10n-sk-macosx64-shippable/opt: Ym17JUxRTT-UvR5PJzv4ew + repackage-l10n-sk-win32-shippable/opt: CTEyqDsBR9CxEGb1rlNonw + repackage-l10n-sk-win64-aarch64-shippable/opt: YUe4ozJCQRmz_ATgj8caJg + repackage-l10n-sk-win64-shippable/opt: TN7w6hK_QeqVh0lxYVBogA + repackage-l10n-sl-linux-shippable/opt: IdFR2HIhTByD8wwNhio2TQ + repackage-l10n-sl-linux64-shippable/opt: Qj0SdDgTQhWmNmr3vB9gYQ + repackage-l10n-sl-macosx64-shippable/opt: eTHV7OeXSV-1TCQTEe1w5A + repackage-l10n-sl-win32-shippable/opt: EgOh0hKCSIusXnR7p4v9fA + repackage-l10n-sl-win64-aarch64-shippable/opt: PvXeizUfTfat32ViZEWV_w + repackage-l10n-sl-win64-shippable/opt: Lg6B2zFdS4KQBj66PrQUug + repackage-l10n-son-linux-shippable/opt: TJ4en7PRTFeM-DC1Pv3veg + repackage-l10n-son-linux64-shippable/opt: CppxFCCgSXajnP01diyFJg + repackage-l10n-son-macosx64-shippable/opt: Ds5_Mm23Q8C7ow3xr6ZW0w + repackage-l10n-son-win32-shippable/opt: eqiM23qzQaC_JH6T1z8_7A + repackage-l10n-son-win64-aarch64-shippable/opt: G2fgWfoxS0WUafSLFocxJQ + repackage-l10n-son-win64-shippable/opt: ReFYJYB3RPiuo-1qKluMZQ + repackage-l10n-sq-linux-shippable/opt: fvpzNAXYS2ir_9vQazSfHQ + repackage-l10n-sq-linux64-shippable/opt: NB-BGOP1Q0yFrZ7lFmaY3Q + repackage-l10n-sq-macosx64-shippable/opt: FnAi3mHSS2OOi8YfhLQgog + repackage-l10n-sq-win32-shippable/opt: VD74QtkGQ9K582Rl4lmtQQ + repackage-l10n-sq-win64-aarch64-shippable/opt: LPFGNH57R_2eobqkzav0Aw + repackage-l10n-sq-win64-shippable/opt: W9mfQVfqRISdQ4Q2Ob3u8A + repackage-l10n-sr-linux-shippable/opt: FxHGZeb3R-mANvGVTgcj7A + repackage-l10n-sr-linux64-shippable/opt: f39g15mSQg67OcZRFGzipA + repackage-l10n-sr-macosx64-shippable/opt: LkVKxFuKQ_Ok02Yi2bAo7Q + repackage-l10n-sr-win32-shippable/opt: OBZ8UAwoQY69Wxld3UrcYw + repackage-l10n-sr-win64-aarch64-shippable/opt: GcptGnqnTTCZueMGlhoFSg + repackage-l10n-sr-win64-shippable/opt: W8epwHohTbyphDx5Z414iA + repackage-l10n-sv-SE-linux-shippable/opt: KieSzNGwTY2DmZslDH5bJA + repackage-l10n-sv-SE-linux64-shippable/opt: QnLU2xAySeKdb4RVoZlGBA + repackage-l10n-sv-SE-macosx64-shippable/opt: E_l3_abzTNWRqbw36Qc0Gw + repackage-l10n-sv-SE-win32-shippable/opt: ZMNf46guTXiQzryqNwuThA + repackage-l10n-sv-SE-win64-aarch64-shippable/opt: YF8JPZytT8SoAbMyDpd3gw + repackage-l10n-sv-SE-win64-shippable/opt: besydPbNRW-cn6tres3sCw + repackage-l10n-szl-linux-shippable/opt: eXn4HTG_QealN9hMkASjXA + repackage-l10n-szl-linux64-shippable/opt: ctBHvPCbQueTcmdUquxHcQ + repackage-l10n-szl-macosx64-shippable/opt: EBf0-v1qQuyV8x74wc1Ogw + repackage-l10n-szl-win32-shippable/opt: BsBmyfGxRhCuRwhoUZWHdA + repackage-l10n-szl-win64-aarch64-shippable/opt: a0pFfqpwSBiUMODawncQlw + repackage-l10n-szl-win64-shippable/opt: EckJ4AJmTVeysRD3Weah3Q + repackage-l10n-ta-linux-shippable/opt: DcK-65bnQdWnLy6Kxucs9Q + repackage-l10n-ta-linux64-shippable/opt: K4f9Lfq8RUGdiFsHe35TRg + repackage-l10n-ta-macosx64-shippable/opt: AtPj2Y6pR1aG_7GTxWgRnA + repackage-l10n-ta-win32-shippable/opt: ANmlnwbZSAGtNdrazNhNRw + repackage-l10n-ta-win64-aarch64-shippable/opt: NfSuC16DQOaJuCHIwftc2w + repackage-l10n-ta-win64-shippable/opt: PUJMgtCYQSG9ww6XDiCpkQ + repackage-l10n-te-linux-shippable/opt: em38xFmgTzq6uiLUg_FZRA + repackage-l10n-te-linux64-shippable/opt: KckJmc1OSyWQR7JcgaQ8uQ + repackage-l10n-te-macosx64-shippable/opt: CjskcKXESXG9ycIwB4OJQA + repackage-l10n-te-win32-shippable/opt: bTaFyq_ATLmizHi6Ek-DvQ + repackage-l10n-te-win64-aarch64-shippable/opt: XEwXdBsfS-efNSlaSuL4yQ + repackage-l10n-te-win64-shippable/opt: HWJN2xFETEuWiBwV3hiURQ + repackage-l10n-tg-linux-shippable/opt: O_M4qadQQwe2yVA_DD0GpQ + repackage-l10n-tg-linux64-shippable/opt: CfvulUlzQAK8kZTCg-Z6pQ + repackage-l10n-tg-macosx64-shippable/opt: JImI_pJXTkiWbPfGLBHIhg + repackage-l10n-tg-win32-shippable/opt: BIm_s_lxTraKdXpK8JEw9g + repackage-l10n-tg-win64-aarch64-shippable/opt: QWlJg5ABRFKGfTlf2msULw + repackage-l10n-tg-win64-shippable/opt: QD66-iomTIyD6cetsSmpnw + repackage-l10n-th-linux-shippable/opt: QGlmpmlbTXex4hdWSKSuqQ + repackage-l10n-th-linux64-shippable/opt: YNsZ6wREQme2nPUnpT3_dA + repackage-l10n-th-macosx64-shippable/opt: elJoRAj7St-MpplrxqSiVg + repackage-l10n-th-win32-shippable/opt: culv4lJaQSG8LkVbOiciyw + repackage-l10n-th-win64-aarch64-shippable/opt: S7IEEkkJTC2I9Kj1zRvYeA + repackage-l10n-th-win64-shippable/opt: WUOKpKz1QMumE0pQgQz0XQ + repackage-l10n-tl-linux-shippable/opt: J_0LcfGTTsu__jAAWxAJvA + repackage-l10n-tl-linux64-shippable/opt: ZGXXqqIDQXuMWZybub7J6A + repackage-l10n-tl-macosx64-shippable/opt: N-s_hVvaSui1zhzEOgPpiA + repackage-l10n-tl-win32-shippable/opt: by4GKafcTGiW1kPUVre1dw + repackage-l10n-tl-win64-aarch64-shippable/opt: NKw2Jv39Q2aGDBEMXMIaTg + repackage-l10n-tl-win64-shippable/opt: P0HfMdABQwa-g51FsG1MtA + repackage-l10n-tr-linux-shippable/opt: HLeNTSiwRliZnKSypuhi2Q + repackage-l10n-tr-linux64-shippable/opt: VqStjM3kQoup0aMXPAvYZA + repackage-l10n-tr-macosx64-shippable/opt: AKN1-4gGRauDcK5pu_C-RQ + repackage-l10n-tr-win32-shippable/opt: eTERWvpVSGSaLHBTgZO7XQ + repackage-l10n-tr-win64-aarch64-shippable/opt: WrkqbFooRNqLI9vIh2BlEw + repackage-l10n-tr-win64-shippable/opt: YSfjYgRlTYiu2SIaIRFFhQ + repackage-l10n-trs-linux-shippable/opt: ekKRBIg5R2GlNSY9CD-blg + repackage-l10n-trs-linux64-shippable/opt: VIzHl8oESq-EUwfSZQQorg + repackage-l10n-trs-macosx64-shippable/opt: PEdGLBiBQ3aR6rlnKukL5w + repackage-l10n-trs-win32-shippable/opt: PIs2V1xuQwejA9wPX9S1eQ + repackage-l10n-trs-win64-aarch64-shippable/opt: UbheIUYwQTmfL447tbCs6g + repackage-l10n-trs-win64-shippable/opt: ASF6sj_CRgycNv5H2WeR4Q + repackage-l10n-uk-linux-shippable/opt: ZW-CSpAmRUy9IItzSjJ-kw + repackage-l10n-uk-linux64-shippable/opt: Zj-TJfBZQy6lkj2_rzEsHg + repackage-l10n-uk-macosx64-shippable/opt: Tyow15srRMuez5lFQj6l1w + repackage-l10n-uk-win32-shippable/opt: XSn0zAN2SDCdIjNHOnjv8Q + repackage-l10n-uk-win64-aarch64-shippable/opt: UhyyWAgeR2WXbiHQr4HOHQ + repackage-l10n-uk-win64-shippable/opt: UrJfzsFvSKS3IAlR0ni_wQ + repackage-l10n-ur-linux-shippable/opt: XMw5Wzf1RU2IaJ6F8oW8Hw + repackage-l10n-ur-linux64-shippable/opt: NaZ10uXBRW2N-hEFZfRjUw + repackage-l10n-ur-macosx64-shippable/opt: HgAsFtwhQTGkO9Qy5N49zA + repackage-l10n-ur-win32-shippable/opt: S6q0ULarQfyqIkwT7IYehA + repackage-l10n-ur-win64-aarch64-shippable/opt: ayTqIagGRyKmBfmp6c7VXg + repackage-l10n-ur-win64-shippable/opt: BqYPQF0VTou5_EIlmsWlhg + repackage-l10n-uz-linux-shippable/opt: f6gqVXR4SUO1lkt_UfEN0w + repackage-l10n-uz-linux64-shippable/opt: TvgoCjaDT3mbAzWNnexAJQ + repackage-l10n-uz-macosx64-shippable/opt: BNmw-g4iTVaXTUzk2gIBug + repackage-l10n-uz-win32-shippable/opt: HU1n5myZTqOXji8XM1sEhQ + repackage-l10n-uz-win64-aarch64-shippable/opt: RnLBGJqJTwy7Vd_21TrMSw + repackage-l10n-uz-win64-shippable/opt: W0T_uWQFQkCd3TKAUJ9AQw + repackage-l10n-vi-linux-shippable/opt: Ii3kzknARhegcz_XqNY3xg + repackage-l10n-vi-linux64-shippable/opt: fvSybmttSxShmYbDuXTtog + repackage-l10n-vi-macosx64-shippable/opt: VgDBxVq8QBOKYpFxnYMQkw + repackage-l10n-vi-win32-shippable/opt: AIEHYgzrTZulIIGu6ccLeQ + repackage-l10n-vi-win64-aarch64-shippable/opt: MoFkqCtPQdqjCXQseZSrJg + repackage-l10n-vi-win64-shippable/opt: KOD7NNZ3Rka_CDI62fJ5xA + repackage-l10n-xh-linux-shippable/opt: MdzrWAljT1ut6fs59QIziQ + repackage-l10n-xh-linux64-shippable/opt: dZcV2iGQShqc_PYK3oaJJg + repackage-l10n-xh-macosx64-shippable/opt: d6fT_tHzTeGiuops4FL-kg + repackage-l10n-xh-win32-shippable/opt: Md5L2YjyQG-K5zn4vU0KPg + repackage-l10n-xh-win64-aarch64-shippable/opt: YerJHMWwQp6WCexsuYECGQ + repackage-l10n-xh-win64-shippable/opt: G8EVbvgeRnC4WHTP09SVlw + repackage-l10n-zh-CN-linux-shippable/opt: KfRnojuzTAGC8tTbPhOuQA + repackage-l10n-zh-CN-linux64-shippable/opt: Rwh_nz4nTy26yFwhpjStGQ + repackage-l10n-zh-CN-macosx64-shippable/opt: fjBrH07qRZWYIuYLzp7K4w + repackage-l10n-zh-CN-win32-shippable/opt: aVjRk0v9RsSAT1LSqmnDzA + repackage-l10n-zh-CN-win64-aarch64-shippable/opt: GC97i8QtT-GVCs9ZWmLxQg + repackage-l10n-zh-CN-win64-shippable/opt: GKPdb-8kQrulJ1P8wd2P_g + repackage-l10n-zh-TW-linux-shippable/opt: WYLLDCJEQ4uu2ulhWCanNQ + repackage-l10n-zh-TW-linux64-shippable/opt: G4CIZCCYTmaENM4PS2PgBQ + repackage-l10n-zh-TW-macosx64-shippable/opt: EslBL7waRd67VwFAQHXQ_A + repackage-l10n-zh-TW-win32-shippable/opt: BeAd1ej4TmiyP7ihSGVzLw + repackage-l10n-zh-TW-win64-aarch64-shippable/opt: f2cDcDbbTCSMypo1EvuiQg + repackage-l10n-zh-TW-win64-shippable/opt: UVVIu4ceQDe02-iuQsyxtg + repackage-linux-shippable/opt: cqL7FABGSi-i_RueIwu2yA + repackage-linux64-shippable/opt: cIGy1dMDRCe0RW5gurkaeQ + repackage-macosx64-shippable/opt: eI-wq-IYRa6oT-oXiTPRdQ + repackage-macosx64/debug: UiHbDIkJTzu-vaITaWdGbg + repackage-msi-ach-win32-shippable/opt: emy1eHA8SUmk6hmLJx-OmQ + repackage-msi-ach-win64-shippable/opt: KOTrbmFWS0u61LVVa5b6nw + repackage-msi-af-win32-shippable/opt: fvvDl1wGTXOVBO3FWGWSGA + repackage-msi-af-win64-shippable/opt: aMz1QnRYRBy6RZO-9Nf45g + repackage-msi-an-win32-shippable/opt: W0w_fGWzQYeUjfF8Ek1aDw + repackage-msi-an-win64-shippable/opt: YR6iNPw6S5G71NnwUvRhmg + repackage-msi-ar-win32-shippable/opt: ccE-UyE9SBeso5ji22wPAQ + repackage-msi-ar-win64-shippable/opt: NFIb3GB9QNeBtgIAVeZ2sg + repackage-msi-ast-win32-shippable/opt: ECSlyPKnSVq-z2aWf6zPjQ + repackage-msi-ast-win64-shippable/opt: ATqxjfwYRKOh1zM3LA8C9Q + repackage-msi-az-win32-shippable/opt: NzKB5Oo9RGKNGfllh921RQ + repackage-msi-az-win64-shippable/opt: Z_bizngMRIK1Y-UoK0Fsjg + repackage-msi-be-win32-shippable/opt: bPaNYhmlS7WY6UOMLrx0yQ + repackage-msi-be-win64-shippable/opt: ZoBYZEQjQnCmfMviuyvRww + repackage-msi-bg-win32-shippable/opt: S7cs7olyT52mn1GdTRfHwg + repackage-msi-bg-win64-shippable/opt: eMA12IrlS26XR-2eGZt7HA + repackage-msi-bn-win32-shippable/opt: bX07sGHGTmuIlJWdWj_wzg + repackage-msi-bn-win64-shippable/opt: OQ3MQau1Q1KpE8SZluYp4w + repackage-msi-br-win32-shippable/opt: TUGgOlYSQs-gPUIJP_fa0Q + repackage-msi-br-win64-shippable/opt: VmcKHAaTSuOq6bwSLa8ytQ + repackage-msi-bs-win32-shippable/opt: Gu9TcXkHQt2Q3YZDVC5kgw + repackage-msi-bs-win64-shippable/opt: Hnu-R4taRTuywJSR4m6t4Q + repackage-msi-ca-valencia-win32-shippable/opt: T1S_1AkFQIyKMZuH9ZJvAw + repackage-msi-ca-valencia-win64-shippable/opt: FtZzeXoySzarWZEM_rTxGg + repackage-msi-ca-win32-shippable/opt: ZoJS9n2OQiuWHlkCYxSJCA + repackage-msi-ca-win64-shippable/opt: UIYzDQazS-a9rOye3JWXKw + repackage-msi-cak-win32-shippable/opt: FNkQIa7qTuu9snF680ACOA + repackage-msi-cak-win64-shippable/opt: IITtsZtAQaSG75HCbxpn0Q + repackage-msi-cs-win32-shippable/opt: TB3kTKrkQhKM2WYsreqIsQ + repackage-msi-cs-win64-shippable/opt: CFjUl8jYQP6YBLZn_raq7A + repackage-msi-cy-win32-shippable/opt: aQgyxESgQTWmTHLF_YXr1g + repackage-msi-cy-win64-shippable/opt: EBf-sutPQY6ahfpO3DQcRQ + repackage-msi-da-win32-shippable/opt: F-oWGGboQ5y5QmxoZb4P-g + repackage-msi-da-win64-shippable/opt: SLzJfu7sRZyivTmDRLd66Q + repackage-msi-de-win32-shippable/opt: d2glw4lDTMyz1baKDzXsyQ + repackage-msi-de-win64-shippable/opt: Zf-htpdrQ0qL_A-kXPU0ww + repackage-msi-dsb-win32-shippable/opt: WvijRiLrRWyOYseggnd4Lg + repackage-msi-dsb-win64-shippable/opt: G-lXaUDDSPm20TWtBbL86Q + repackage-msi-el-win32-shippable/opt: EHeqgA7VQKyYKsQjCa3iVw + repackage-msi-el-win64-shippable/opt: c9JTYT5mS5OXwgxVYrckEw + repackage-msi-en-CA-win32-shippable/opt: NvLld9E5TZWbt-kN47ZY6Q + repackage-msi-en-CA-win64-shippable/opt: WsCvQ901T7iEgzKGGyHcwA + repackage-msi-en-GB-win32-shippable/opt: QzmDE0uJQt6RgJZrGaJ7tg + repackage-msi-en-GB-win64-shippable/opt: aOc3HgzDSWu78r4f_JjLBw + repackage-msi-eo-win32-shippable/opt: Nw_WABskST6KpwlMy68MRg + repackage-msi-eo-win64-shippable/opt: E3HhABfjTqOOKldubrnbNA + repackage-msi-es-AR-win32-shippable/opt: aq5dhRN8RZ-AcgOX8UYiaQ + repackage-msi-es-AR-win64-shippable/opt: a2yDOpm6S22t1QkP-5Tp-g + repackage-msi-es-CL-win32-shippable/opt: P3PyP33kQOyTJSfZ4tRSag + repackage-msi-es-CL-win64-shippable/opt: azbySqcCQZuRqm4O3WJtyw + repackage-msi-es-ES-win32-shippable/opt: RkKlSDeZS2KTdRlvrZjclQ + repackage-msi-es-ES-win64-shippable/opt: E5mXaJAaQySzN8K1EloFGw + repackage-msi-es-MX-win32-shippable/opt: X-dAZllVQI60HtKnOd585Q + repackage-msi-es-MX-win64-shippable/opt: cRYpJjqKQJW7Jri0ui5ExA + repackage-msi-et-win32-shippable/opt: K9C_8TggRlWeVzDHYgAkdg + repackage-msi-et-win64-shippable/opt: Jr2hP8cwTjSab4eDiDy4JA + repackage-msi-eu-win32-shippable/opt: ThdzoaY6RgCtraC80bf4kg + repackage-msi-eu-win64-shippable/opt: TbziCI5kRFGyx2Pr8WSBgw + repackage-msi-fa-win32-shippable/opt: TBG48_NkSe2vdQNLMNeD0Q + repackage-msi-fa-win64-shippable/opt: cUxEFoQOR1WWPXlSYK5hdw + repackage-msi-ff-win32-shippable/opt: GLTwMDndQG2_oARQorii_w + repackage-msi-ff-win64-shippable/opt: VZ8IWRbZT7iC0Tl1LfRvtA + repackage-msi-fi-win32-shippable/opt: HcuRmeSYTqqbljVi1tFubw + repackage-msi-fi-win64-shippable/opt: JEJ2nlzTQDicdTAlqUDBGg + repackage-msi-fr-win32-shippable/opt: TjrmftvURTmW844L0ZI3Sw + repackage-msi-fr-win64-shippable/opt: D9Q8vX08T361UtU2ml-Oiw + repackage-msi-fur-win32-shippable/opt: JZ_vXZr0RgyWUFbjsVqShw + repackage-msi-fur-win64-shippable/opt: L2kw2mKhQ_eoDMfFKv5I6A + repackage-msi-fy-NL-win32-shippable/opt: Tqx3iZ2cQECluwY8RpDG3g + repackage-msi-fy-NL-win64-shippable/opt: AjY1dZkGTPuGllhk7vwgIQ + repackage-msi-ga-IE-win32-shippable/opt: cGmBPFldQhqSVbi_RQuYoA + repackage-msi-ga-IE-win64-shippable/opt: R3K3u7IJSGSdxKyeO6dP0w + repackage-msi-gd-win32-shippable/opt: NMYZu1msRD23HK1i5pYcfA + repackage-msi-gd-win64-shippable/opt: APuh5ygrRzG90-BOgmqSXw + repackage-msi-gl-win32-shippable/opt: CzxWGJEtSV6r9CUtMvc1qA + repackage-msi-gl-win64-shippable/opt: fukpId5jSuCTcXqAVS0CHA + repackage-msi-gn-win32-shippable/opt: WahgViFFRZiHJfr5EwHIzQ + repackage-msi-gn-win64-shippable/opt: IORFhODGTb6vUGiO_6b8Kw + repackage-msi-gu-IN-win32-shippable/opt: HlINU27gRUSsInU4Of1VLQ + repackage-msi-gu-IN-win64-shippable/opt: HxZbaMx3RX-VtLu8aWQVaw + repackage-msi-he-win32-shippable/opt: Mdhon2qkQ6qV9MuAzrcKdg + repackage-msi-he-win64-shippable/opt: Ck7FT1DQSr6chAYBmie78A + repackage-msi-hi-IN-win32-shippable/opt: e4O3FnnWQTSgrGomaXViIQ + repackage-msi-hi-IN-win64-shippable/opt: AppwCVdBSeq-XtYFXzAlvQ + repackage-msi-hr-win32-shippable/opt: E49olGzgQOGtQLzkFH5K1w + repackage-msi-hr-win64-shippable/opt: VmGMncvqRyKanBF7NibuGQ + repackage-msi-hsb-win32-shippable/opt: Bkg7PcT4QoOmgYyR9mciow + repackage-msi-hsb-win64-shippable/opt: GWY0EcOcQBqR7G6FCf1qHw + repackage-msi-hu-win32-shippable/opt: D3Jsa0xmSeG0w8fGk5L_HQ + repackage-msi-hu-win64-shippable/opt: UeQZfB3BRHaDhMS5mo5ukg + repackage-msi-hy-AM-win32-shippable/opt: VqMcrE_DRkqSgsr1FWuQ3w + repackage-msi-hy-AM-win64-shippable/opt: HF5AQK-SQXyt62RrM228dw + repackage-msi-ia-win32-shippable/opt: Z09lNlJYT26xBVYigsdOgQ + repackage-msi-ia-win64-shippable/opt: cdcDZWrHTJejc6dPguEamw + repackage-msi-id-win32-shippable/opt: Kizujw6oQP-J2PTkxsL3cg + repackage-msi-id-win64-shippable/opt: Q_3Ts2ZXTl-azu4I-vIvpA + repackage-msi-is-win32-shippable/opt: baF4QRaARGyzbrm4ToC0Vw + repackage-msi-is-win64-shippable/opt: G68F-DEHRsSmGamrPBG06g + repackage-msi-it-win32-shippable/opt: fTqvbMzZRByiQT9frvi5dA + repackage-msi-it-win64-shippable/opt: S2A6O4qfT1aNLfjdcgIZrQ + repackage-msi-ja-win32-shippable/opt: MZK0as9LS0m7WsHyPamxqw + repackage-msi-ja-win64-shippable/opt: H6Grwg9qTd67L9dTI3QHlg + repackage-msi-ka-win32-shippable/opt: Z9sH1euaQEWQegd3pxx08Q + repackage-msi-ka-win64-shippable/opt: eoWk2iWWTEmoPED99vz5dg + repackage-msi-kab-win32-shippable/opt: IWLHAgQJTou7EBuw6JEuwg + repackage-msi-kab-win64-shippable/opt: FeOiEDURTUCjsysdmEWMRg + repackage-msi-kk-win32-shippable/opt: bDzeumVPT8eRmXN4rp4XCw + repackage-msi-kk-win64-shippable/opt: QxTX0_zETPqX5s5YkbBSXg + repackage-msi-km-win32-shippable/opt: IDQji3uxQnCYVUt3nCdk9Q + repackage-msi-km-win64-shippable/opt: BT2wmpGGSLKZNi-STXpKdg + repackage-msi-kn-win32-shippable/opt: ceV8ZBJKQXuV4UCpMRdgDg + repackage-msi-kn-win64-shippable/opt: etM6y3g2SaC0WGqFTyNOng + repackage-msi-ko-win32-shippable/opt: N9V5T0YQSaGUpSTb1V3euw + repackage-msi-ko-win64-shippable/opt: HblLvdGATIOHADvxQfcgYQ + repackage-msi-lij-win32-shippable/opt: PuFS36KaQgO0GBtCCkQgPg + repackage-msi-lij-win64-shippable/opt: WgM8ctfxQguWIbxvyGaiUw + repackage-msi-lt-win32-shippable/opt: ILhErF9DQ7uoQht9gYaNtA + repackage-msi-lt-win64-shippable/opt: PyFgUcNDQb6QTv4lV93bKw + repackage-msi-lv-win32-shippable/opt: byWq6W-lTiGdEP0EMpBqdA + repackage-msi-lv-win64-shippable/opt: CGFuTj3jSriCpRsRitnrfg + repackage-msi-mk-win32-shippable/opt: euBMsGx3Tfelr5Eh7fGNQQ + repackage-msi-mk-win64-shippable/opt: dqxba6HsTAW5louDmyr8Fw + repackage-msi-mr-win32-shippable/opt: YRclpnFVR-CwOUybGMr9tw + repackage-msi-mr-win64-shippable/opt: GkSs2GOXSFWUH1laqon3Qg + repackage-msi-ms-win32-shippable/opt: K-9SYUVcQSiYO6TnjZuQuw + repackage-msi-ms-win64-shippable/opt: EWbbinYzSumZsoYFi03VYw + repackage-msi-my-win32-shippable/opt: CamHi0lNQjCknZXovlDDLA + repackage-msi-my-win64-shippable/opt: KM4IS2bESGaCqws0letiUw + repackage-msi-nb-NO-win32-shippable/opt: CB1wxLxGR6SeTyecweK3CA + repackage-msi-nb-NO-win64-shippable/opt: IeRigHcuSbKDfmUlknmhhw + repackage-msi-ne-NP-win32-shippable/opt: bqY4WDSnQPyHQh1DBwLUCQ + repackage-msi-ne-NP-win64-shippable/opt: cdCGiF4LRg6gxyxIT80ypg + repackage-msi-nl-win32-shippable/opt: YIDpEkyqTdmJ80j2RxEfjw + repackage-msi-nl-win64-shippable/opt: AzSxvukcTjyi78i3Il1u4w + repackage-msi-nn-NO-win32-shippable/opt: fny6W3eDREiK8IJLk4_5Gg + repackage-msi-nn-NO-win64-shippable/opt: WCOl9F3GTC-08-BNKxIijA + repackage-msi-oc-win32-shippable/opt: B8gODTZ3TFe3bJsbbNM5jA + repackage-msi-oc-win64-shippable/opt: e5fFxfTwRxetP8b0TNi0AA + repackage-msi-pa-IN-win32-shippable/opt: H2fdwItsTC-dazrhdV6c8Q + repackage-msi-pa-IN-win64-shippable/opt: dcdqLYvsR5CX30-8UidlkA + repackage-msi-pl-win32-shippable/opt: b-8fXiwGTEu1IVUBU19rzg + repackage-msi-pl-win64-shippable/opt: Rm4axog2Q_iAb6XS1BU1Gw + repackage-msi-pt-BR-win32-shippable/opt: T0LWHbBgS3m944-JUer3ww + repackage-msi-pt-BR-win64-shippable/opt: IRBjeJ0zSAuIwbVAiUm6gA + repackage-msi-pt-PT-win32-shippable/opt: WxItLZv7Txyh3wLZlsbwZA + repackage-msi-pt-PT-win64-shippable/opt: MAnoGpYTQJ-jruOW-CI1FA + repackage-msi-rm-win32-shippable/opt: HF1rX9rYTLW3To_kKpWSgw + repackage-msi-rm-win64-shippable/opt: M3uAPfxXQdaVVphR0Pd7lA + repackage-msi-ro-win32-shippable/opt: DgPtwRryTGW_JXHfUktJBw + repackage-msi-ro-win64-shippable/opt: B4jjDsiiT9KLrWHKUcJAZQ + repackage-msi-ru-win32-shippable/opt: ZMVhOhUpRCGWmUbMFXibbQ + repackage-msi-ru-win64-shippable/opt: FX-6Vk75TZ2dc1nZStPjkA + repackage-msi-sc-win32-shippable/opt: LwdJkqEqTueJYH4Z1QxiWg + repackage-msi-sc-win64-shippable/opt: GRi0i68TSAyFotApwxeY5Q + repackage-msi-sco-win32-shippable/opt: AE-hxMx0T3WRIj4IsE4dkw + repackage-msi-sco-win64-shippable/opt: XwSfgfXfS-ON2cNQxutx2g + repackage-msi-si-win32-shippable/opt: Bk73GeQjQO-STVfHQfCadA + repackage-msi-si-win64-shippable/opt: Nd_BPO8sTKyTWGW34gvnhA + repackage-msi-sk-win32-shippable/opt: Fv-pxWVIR_-kpWJuqncj0g + repackage-msi-sk-win64-shippable/opt: DYOJ8b9YSc2gMg9Du2SZ2A + repackage-msi-sl-win32-shippable/opt: OSun34SgTEqAlM7iXCc6sQ + repackage-msi-sl-win64-shippable/opt: JSI5puvhSACdQ4fQv6d46g + repackage-msi-son-win32-shippable/opt: OWGnR7zrSByRWU_5H3lNxw + repackage-msi-son-win64-shippable/opt: Oe_RJM2_SLW8tD71hDnejQ + repackage-msi-sq-win32-shippable/opt: OSl8T9aTT5qI5Sn3ZQlwGA + repackage-msi-sq-win64-shippable/opt: SwEDY249R9GFEz1eOVpwKw + repackage-msi-sr-win32-shippable/opt: OeBuR020SpeJHWdLM2K4Zw + repackage-msi-sr-win64-shippable/opt: UL2cZmTwS1iQBKgH16nqAw + repackage-msi-sv-SE-win32-shippable/opt: Qii-ltWBSZCeDHvrg6CgSw + repackage-msi-sv-SE-win64-shippable/opt: E-6gx60zSVmEcG2DvU0o5g + repackage-msi-szl-win32-shippable/opt: H97ARBMtRSqqz0XgM_l1yA + repackage-msi-szl-win64-shippable/opt: Z2o6RCN2QLKYFm02BBXcUw + repackage-msi-ta-win32-shippable/opt: eAElOUbPSL2C__YSjo4RXg + repackage-msi-ta-win64-shippable/opt: bc39rVxtRCO7RIRu69JF6w + repackage-msi-te-win32-shippable/opt: B2aL26LLQk2yXO13EFiuUw + repackage-msi-te-win64-shippable/opt: WOrxCe3URiCjSkiHrxuM2A + repackage-msi-tg-win32-shippable/opt: e8gF0k6NTOWMgMV_s14bqw + repackage-msi-tg-win64-shippable/opt: FXuyNJSqQa-D9PA7tktI4A + repackage-msi-th-win32-shippable/opt: SrCO-8-xSUKw-f1ghD7TnQ + repackage-msi-th-win64-shippable/opt: ZQvbSwenSUexvpuqxb7F_g + repackage-msi-tl-win32-shippable/opt: CJWXlYhkSrKtRL0RLWERgg + repackage-msi-tl-win64-shippable/opt: NVb-8_XeQuyq-uQi-MvKqw + repackage-msi-tr-win32-shippable/opt: FQZt0R2bTtO9FOpt0feEcw + repackage-msi-tr-win64-shippable/opt: HUOok7GmTAi8w7tfQXcN9A + repackage-msi-trs-win32-shippable/opt: QiSipOWATP-ymdvv5mtomw + repackage-msi-trs-win64-shippable/opt: KLJcCt3CRwm7MJU51o6KUw + repackage-msi-uk-win32-shippable/opt: TD5-YT1IRKmvLNDM6z-puw + repackage-msi-uk-win64-shippable/opt: TMoeI3pvSTimMXvXdnj7kA + repackage-msi-ur-win32-shippable/opt: IWVeAhdrTIGqhyqNKBqidQ + repackage-msi-ur-win64-shippable/opt: eG1aEr50Q928GysosTwZmA + repackage-msi-uz-win32-shippable/opt: ZTfkzfC1RHanM-6nmkHOQg + repackage-msi-uz-win64-shippable/opt: bGCptl45ToKPmwehdmH9Qg + repackage-msi-vi-win32-shippable/opt: Wib1rJlaR8agNEgtNJrmJA + repackage-msi-vi-win64-shippable/opt: HfA01hVCRsOQ0VnuaJCnHA + repackage-msi-win32-shippable/opt: duN6m4O_TJanFTImB-utrA + repackage-msi-win64-shippable/opt: aK37UAjAQjC1fl3JEArb6w + repackage-msi-xh-win32-shippable/opt: LpNA_KP2TUS9kq-m-zEsxA + repackage-msi-xh-win64-shippable/opt: e5ToZjYcR4WusYOPpPfB9Q + repackage-msi-zh-CN-win32-shippable/opt: UyAsTPBUR7elN-dOhZ4EMg + repackage-msi-zh-CN-win64-shippable/opt: V6QgCcWPTiCP8I70mWJiHA + repackage-msi-zh-TW-win32-shippable/opt: F_a7cc8zQHmGY0otjRLs2Q + repackage-msi-zh-TW-win64-shippable/opt: K7NBGvxtRUK_i-B__iQfBA + repackage-msix-win64/debug: YTbeETG7TzyAATsPNjn3oQ + repackage-shippable-l10n-msix-win32-shippable/opt: DSGjG-a_QFWiODgSt5hT6A + repackage-shippable-l10n-msix-win64-shippable/opt: NddAB2TDT22xCpYmAjI91Q + repackage-signing-l10n-ach-win32-shippable/opt: IWLDmMocQ-KBZ1zZ8uzibQ + repackage-signing-l10n-ach-win64-aarch64-shippable/opt: bHLvLtZBRLC7BD7AmE9znw + repackage-signing-l10n-ach-win64-shippable/opt: W77ky4vXRjW1Vo_nfActhQ + repackage-signing-l10n-af-win32-shippable/opt: dxNfhh2wQ0eQM-yC939AUw + repackage-signing-l10n-af-win64-aarch64-shippable/opt: M1NaMtseRDWbAUIC7jlzNA + repackage-signing-l10n-af-win64-shippable/opt: FtBQLp6GTtinLrG6HUJwdg + repackage-signing-l10n-an-win32-shippable/opt: UJrVpke_RaKRjYKVVBa1uA + repackage-signing-l10n-an-win64-aarch64-shippable/opt: WeMJYKb1RYKe9p84WDqAGw + repackage-signing-l10n-an-win64-shippable/opt: Xifa6GdzTACH0XOfGmIOug + repackage-signing-l10n-ar-win32-shippable/opt: PmJe8G8kS6uCGqSNd7iYFA + repackage-signing-l10n-ar-win64-aarch64-shippable/opt: KigS6KL_RkytOjb3PIt0Gw + repackage-signing-l10n-ar-win64-shippable/opt: FPLg16AtQOO2R2XIYIpoOg + repackage-signing-l10n-ast-win32-shippable/opt: IbfFd3AOQ-uJNpimx_q5CA + repackage-signing-l10n-ast-win64-aarch64-shippable/opt: RRRSwi8uQEWn2uYkq2ykCQ + repackage-signing-l10n-ast-win64-shippable/opt: MWwfsEglTBW-FOIkpCLVUQ + repackage-signing-l10n-az-win32-shippable/opt: dUHGZbVfTZ6mUec0ije-hQ + repackage-signing-l10n-az-win64-aarch64-shippable/opt: M0P82YC5RVe3GgeD46nDcA + repackage-signing-l10n-az-win64-shippable/opt: Ka8BVixySvyXjMp6K4f5EA + repackage-signing-l10n-be-win32-shippable/opt: duNvnDb6QC-1g958ub7FOw + repackage-signing-l10n-be-win64-aarch64-shippable/opt: LVaeoDh_TgOGUHOMe-CXPQ + repackage-signing-l10n-be-win64-shippable/opt: TDJwSeDESDONyyylyEPNAg + repackage-signing-l10n-bg-win32-shippable/opt: EFZg8RWKSp-bHrrmW0E4bw + repackage-signing-l10n-bg-win64-aarch64-shippable/opt: Fc4jwsPYSVu6ynRgCWvrEA + repackage-signing-l10n-bg-win64-shippable/opt: TyAPwbaiQrCRq8GbC_rOMw + repackage-signing-l10n-bn-win32-shippable/opt: cD1FbbDtRuCvq-afj6Iw9g + repackage-signing-l10n-bn-win64-aarch64-shippable/opt: UWiU1RsMRxiGlNPXnVN9Zw + repackage-signing-l10n-bn-win64-shippable/opt: VMaaEiyQQguAYDrYiLNYrw + repackage-signing-l10n-br-win32-shippable/opt: f_aLZAkeQsmnxUe_pJ7KaA + repackage-signing-l10n-br-win64-aarch64-shippable/opt: Mcssk5bSQFK_UzEYFBSS8Q + repackage-signing-l10n-br-win64-shippable/opt: EDQI-EnGQcOJe9Qov3U-dg + repackage-signing-l10n-bs-win32-shippable/opt: JATO0ICIQXO_OXnHG00O8g + repackage-signing-l10n-bs-win64-aarch64-shippable/opt: GBWkGePrQRC6d44CyLXn2A + repackage-signing-l10n-bs-win64-shippable/opt: A8o2yrsSQb-hPHPEZ_tjJw + repackage-signing-l10n-ca-valencia-win32-shippable/opt: NzRqUznkQQmp1_zzN9KHeA + repackage-signing-l10n-ca-valencia-win64-aarch64-shippable/opt: L1rFxhMKR8qRbCIU9ryXaQ + repackage-signing-l10n-ca-valencia-win64-shippable/opt: Bi4Y7YnURkKY64k3OGuZpg + repackage-signing-l10n-ca-win32-shippable/opt: eFqs7UpaRuKlg2Qj_HWXBA + repackage-signing-l10n-ca-win64-aarch64-shippable/opt: NB9WZC0XT9Oev_lrfYC3fA + repackage-signing-l10n-ca-win64-shippable/opt: edjguzgyS_aGvVHSCek6wQ + repackage-signing-l10n-cak-win32-shippable/opt: HrKvlSHcS5CfRpIXlx5LAg + repackage-signing-l10n-cak-win64-aarch64-shippable/opt: ellX63yGSSmWJP3pik-nFQ + repackage-signing-l10n-cak-win64-shippable/opt: ZnVFV89FSCiz7EImXtbfaA + repackage-signing-l10n-cs-win32-shippable/opt: b6OR5oFMT3SWWSXxWV7xwQ + repackage-signing-l10n-cs-win64-aarch64-shippable/opt: E78Nb_gDSeSRByL-PZ-haA + repackage-signing-l10n-cs-win64-shippable/opt: Bvq3sdvcRWOKYknkIhGCbQ + repackage-signing-l10n-cy-win32-shippable/opt: WkjgpQrFSl-5Nfd_OoGjDw + repackage-signing-l10n-cy-win64-aarch64-shippable/opt: Y1mmCFe4Qv2L7q5GA1aXig + repackage-signing-l10n-cy-win64-shippable/opt: Lsn080i6TjG6A3EeldJmIA + repackage-signing-l10n-da-win32-shippable/opt: LsBQCf_lSCue_zeVS0EIkg + repackage-signing-l10n-da-win64-aarch64-shippable/opt: X3L-w01sSkSgF8qiRkTdQA + repackage-signing-l10n-da-win64-shippable/opt: DLKRm1EHRZiGTDWI3y-g3Q + repackage-signing-l10n-de-win32-shippable/opt: diudMKIsQTyoUQ3CITsycA + repackage-signing-l10n-de-win64-aarch64-shippable/opt: AEEm7qoUTqW_NN_-WfbcjQ + repackage-signing-l10n-de-win64-shippable/opt: PI-R0HxERB-5HV84tSlOkw + repackage-signing-l10n-dsb-win32-shippable/opt: Pi8QcXasRHSHOCj9c4OZ4Q + repackage-signing-l10n-dsb-win64-aarch64-shippable/opt: NdNZXGy5QRStI-6kOf0Hlw + repackage-signing-l10n-dsb-win64-shippable/opt: ayWo4RuDTNuGw-rJZeBeVQ + repackage-signing-l10n-el-win32-shippable/opt: M_2Rue0NQuetknX6cIWY6w + repackage-signing-l10n-el-win64-aarch64-shippable/opt: DqK2pfKGTE2VqXvALHXGDQ + repackage-signing-l10n-el-win64-shippable/opt: TVd89BBsQ3CRD9tIFBEDzQ + repackage-signing-l10n-en-CA-win32-shippable/opt: KQb2YNrUReWvBP6fHHPOjA + repackage-signing-l10n-en-CA-win64-aarch64-shippable/opt: MwRa-51LQfuTTJqAt0x4XA + repackage-signing-l10n-en-CA-win64-shippable/opt: Ud79rODkQrC7o1fNhD9bSw + repackage-signing-l10n-en-GB-win32-shippable/opt: Go71FkrURtOeF8kYBPKsCw + repackage-signing-l10n-en-GB-win64-aarch64-shippable/opt: U2ZM9jzRTEWusckrtrwSXQ + repackage-signing-l10n-en-GB-win64-shippable/opt: U1h9XbajRny9HYzpKfur_Q + repackage-signing-l10n-eo-win32-shippable/opt: WfP6lgIIROmGsk4-n33flg + repackage-signing-l10n-eo-win64-aarch64-shippable/opt: IIfVlbttQeS_g9xemFfw4Q + repackage-signing-l10n-eo-win64-shippable/opt: WPhLJu8rTJitksdKdvEv2g + repackage-signing-l10n-es-AR-win32-shippable/opt: N2yZ6rEPTza1Z5zaq1o--g + repackage-signing-l10n-es-AR-win64-aarch64-shippable/opt: IPE-ra2XSnSAbldAm1JxjQ + repackage-signing-l10n-es-AR-win64-shippable/opt: X7wVdmUdR7uZoYf_7QCMig + repackage-signing-l10n-es-CL-win32-shippable/opt: JiSlT68VSqWigflg14nnaQ + repackage-signing-l10n-es-CL-win64-aarch64-shippable/opt: DFmrjbPOQZWVj4OhwY6dag + repackage-signing-l10n-es-CL-win64-shippable/opt: UQhshSa8SUmGNXRxSi3_8g + repackage-signing-l10n-es-ES-win32-shippable/opt: Y7MtEWuaTpefSm3v_mdtYA + repackage-signing-l10n-es-ES-win64-aarch64-shippable/opt: AfKFvavRTqGsJGHs5XFQ3Q + repackage-signing-l10n-es-ES-win64-shippable/opt: HyKTpjmQRGCFgmQA-X7PLg + repackage-signing-l10n-es-MX-win32-shippable/opt: UTKO69XgTsOiYxK3NqFb9A + repackage-signing-l10n-es-MX-win64-aarch64-shippable/opt: M6aomc8_QGG23P6L1kiTbQ + repackage-signing-l10n-es-MX-win64-shippable/opt: M7KJpwbKQQ2Eewtz-ADjXw + repackage-signing-l10n-et-win32-shippable/opt: eF7lpLISSJKbtJLKm22N7w + repackage-signing-l10n-et-win64-aarch64-shippable/opt: fL_2OkKuQ1qWPoOR6UXJag + repackage-signing-l10n-et-win64-shippable/opt: dfj0iTSRQSy_nGHkFQahIg + repackage-signing-l10n-eu-win32-shippable/opt: bc9zEQyKS9O4NPZgMjU9OQ + repackage-signing-l10n-eu-win64-aarch64-shippable/opt: CBQt5n5GR1y992elfltlEw + repackage-signing-l10n-eu-win64-shippable/opt: RxL2jBVDQe2ABwcFL8UMMg + repackage-signing-l10n-fa-win32-shippable/opt: TeK9ixvBRo2xAf4o0ngK8A + repackage-signing-l10n-fa-win64-aarch64-shippable/opt: cseBIfmJSwqCTen8XtsSOQ + repackage-signing-l10n-fa-win64-shippable/opt: IhePoIZ8SGmpe4rKWJrXxw + repackage-signing-l10n-ff-win32-shippable/opt: B0fX-A2ST56rxkEb_jM2Gw + repackage-signing-l10n-ff-win64-aarch64-shippable/opt: ETBoCnWFTbyC_4WhnbgKbQ + repackage-signing-l10n-ff-win64-shippable/opt: RirLLwxnSzK1L6xXwSd4gw + repackage-signing-l10n-fi-win32-shippable/opt: E5xZbY74SZSaLaN2iopQsg + repackage-signing-l10n-fi-win64-aarch64-shippable/opt: O5NlNU30SQGSgK_WqYJNpg + repackage-signing-l10n-fi-win64-shippable/opt: bIKS3hLZSaW919H-ehu8CA + repackage-signing-l10n-fr-win32-shippable/opt: D7aMjnBWQQySWVzQeTlAAA + repackage-signing-l10n-fr-win64-aarch64-shippable/opt: MltLBZy6T-Kyzzjxs2Dikw + repackage-signing-l10n-fr-win64-shippable/opt: NFU2iglVQVyOjLGU_LYuwQ + repackage-signing-l10n-fur-win32-shippable/opt: WbdQKQzlSb63twNy_Q_IfA + repackage-signing-l10n-fur-win64-aarch64-shippable/opt: Lh3DIa5BTFKb1jVHrlJ8gQ + repackage-signing-l10n-fur-win64-shippable/opt: BK5ZWrOKT8iXn8y9q6AprQ + repackage-signing-l10n-fy-NL-win32-shippable/opt: UQG99aTHTMqO7vTqSziJAg + repackage-signing-l10n-fy-NL-win64-aarch64-shippable/opt: NzgDvWa9QkCYrS0u-PFlKw + repackage-signing-l10n-fy-NL-win64-shippable/opt: Pk0q_DAGT9-URHtYK_oFLA + repackage-signing-l10n-ga-IE-win32-shippable/opt: b8_Bm1p4RZCO8CU1GSMAXA + repackage-signing-l10n-ga-IE-win64-aarch64-shippable/opt: O536SKiRTkCpx5aijv3GVQ + repackage-signing-l10n-ga-IE-win64-shippable/opt: CiLlqfj-TcKVvqoPHKkRNA + repackage-signing-l10n-gd-win32-shippable/opt: EevzqFYXTMqt1qNCBO2hhA + repackage-signing-l10n-gd-win64-aarch64-shippable/opt: TZWNJpLQQZuJr32b8nzQug + repackage-signing-l10n-gd-win64-shippable/opt: S6QpVDbiSc6ZxKPGfmcTOA + repackage-signing-l10n-gl-win32-shippable/opt: A5Av-VwuTymOe6rtfpGUcg + repackage-signing-l10n-gl-win64-aarch64-shippable/opt: XBCAgraxQ5qA96p7mHRbOw + repackage-signing-l10n-gl-win64-shippable/opt: C_AXUi_PSimGSZwlvkcfjg + repackage-signing-l10n-gn-win32-shippable/opt: RVbcSPPtQT-qjF3Kj9_vwg + repackage-signing-l10n-gn-win64-aarch64-shippable/opt: Y5O8BGzATwqhC5sLOijQ3w + repackage-signing-l10n-gn-win64-shippable/opt: BD1npif8Q3ab743DUD3OpA + repackage-signing-l10n-gu-IN-win32-shippable/opt: WqZCLmU4SuafIHAVCHdN7g + repackage-signing-l10n-gu-IN-win64-aarch64-shippable/opt: HeXHOCHaRem-LzjD_B22eg + repackage-signing-l10n-gu-IN-win64-shippable/opt: YTogwRfUSsaPhneT7CpKuA + repackage-signing-l10n-he-win32-shippable/opt: KVNS3zsYQOij7-duWNP6ug + repackage-signing-l10n-he-win64-aarch64-shippable/opt: DLZFdQ6XQfCS2d2iJeXHxA + repackage-signing-l10n-he-win64-shippable/opt: aOl6YNBqRsKwweICRIxojQ + repackage-signing-l10n-hi-IN-win32-shippable/opt: ZTptMCTEQsWtN5JMQL9nnQ + repackage-signing-l10n-hi-IN-win64-aarch64-shippable/opt: HW6iUbDrQaegyEDMsXJFqA + repackage-signing-l10n-hi-IN-win64-shippable/opt: Ihpl-xkFRzeK-g_CRTa1Gw + repackage-signing-l10n-hr-win32-shippable/opt: J14MX3BFQqS4E0uWr2zCIA + repackage-signing-l10n-hr-win64-aarch64-shippable/opt: BFMIAA3TTcCe1RCiDXwGdw + repackage-signing-l10n-hr-win64-shippable/opt: VhULsz8xS1-VUYDJgqRiAA + repackage-signing-l10n-hsb-win32-shippable/opt: DwfPK9b1Sf2r7W4oaZ-aFg + repackage-signing-l10n-hsb-win64-aarch64-shippable/opt: Y20Qo1XnTVCtlHGLBW3FSg + repackage-signing-l10n-hsb-win64-shippable/opt: RoiDKs50R7-LD6bqXncrHw + repackage-signing-l10n-hu-win32-shippable/opt: VQuc8oewQMW--8GWQwJdsQ + repackage-signing-l10n-hu-win64-aarch64-shippable/opt: VXu166uCSH2vG-t45WdtCA + repackage-signing-l10n-hu-win64-shippable/opt: F97nZpjoT2G926um2hIepg + repackage-signing-l10n-hy-AM-win32-shippable/opt: KcL28jmuR8qHcTgrFECB9Q + repackage-signing-l10n-hy-AM-win64-aarch64-shippable/opt: T4jLRAmhT32LLHVs8NWTqw + repackage-signing-l10n-hy-AM-win64-shippable/opt: RwL9d9UXREe5EcRstGKhJQ + repackage-signing-l10n-ia-win32-shippable/opt: FBDlgCUkQ4yZnyFwqnHscw + repackage-signing-l10n-ia-win64-aarch64-shippable/opt: MBF_3qjcRGyWHaCSM1LX1Q + repackage-signing-l10n-ia-win64-shippable/opt: deQlVR-CQjCSC3Q91bxRcA + repackage-signing-l10n-id-win32-shippable/opt: QvBSHnaySVuBWVwT1opHGg + repackage-signing-l10n-id-win64-aarch64-shippable/opt: VVq4G7-DToavxAUDNMS4tg + repackage-signing-l10n-id-win64-shippable/opt: ZLmpNdIlTqmUmNwi4yMHgg + repackage-signing-l10n-is-win32-shippable/opt: I7V5ffcvRPekFqQelDM8sg + repackage-signing-l10n-is-win64-aarch64-shippable/opt: WlM-SLT5QMe5Wg1NfYTNoQ + repackage-signing-l10n-is-win64-shippable/opt: cp1PFHXcRrurSGyQGSNLeg + repackage-signing-l10n-it-win32-shippable/opt: SMcQZNqiQzS0-QoYi8xEig + repackage-signing-l10n-it-win64-aarch64-shippable/opt: BMSEzbgMSrClJbStyLYfcA + repackage-signing-l10n-it-win64-shippable/opt: bgoOx0VZRRu_iIHNf-xhKw + repackage-signing-l10n-ja-win32-shippable/opt: H-l1hx2ZT9y5tgtqRE1yKQ + repackage-signing-l10n-ja-win64-aarch64-shippable/opt: G48AmlUnSB6FvJ9wC1tqNQ + repackage-signing-l10n-ja-win64-shippable/opt: W6BvbyqXTO60UEsrblAIAA + repackage-signing-l10n-ka-win32-shippable/opt: AT8JfMMnTN6qwC6kh6YA6w + repackage-signing-l10n-ka-win64-aarch64-shippable/opt: MRA75tI5TqCOAv5DHEAi8A + repackage-signing-l10n-ka-win64-shippable/opt: FAehEo9lR3OtOeJBlW1Mvw + repackage-signing-l10n-kab-win32-shippable/opt: dvoMMMPNQqW2BVbRRaKSuQ + repackage-signing-l10n-kab-win64-aarch64-shippable/opt: PD1HS_aNQH2A86LFo_YVfA + repackage-signing-l10n-kab-win64-shippable/opt: OrzxMYylQVmvUWbBVM6D9w + repackage-signing-l10n-kk-win32-shippable/opt: AbGOjz-DRKm1zJyJr8rcWg + repackage-signing-l10n-kk-win64-aarch64-shippable/opt: Q-Q7UJEERqO5jYDlQkO1OA + repackage-signing-l10n-kk-win64-shippable/opt: FevIKw8yTQC8zSqAssNfOw + repackage-signing-l10n-km-win32-shippable/opt: CZsutYiRTG6_ijQTggpxUQ + repackage-signing-l10n-km-win64-aarch64-shippable/opt: MXZ4fNwwTTmKM0MYYGUNrA + repackage-signing-l10n-km-win64-shippable/opt: GJ-K5Hb4QNOFVDCkpu52vA + repackage-signing-l10n-kn-win32-shippable/opt: EKIrMyfuS0O_pY7tV5rS9Q + repackage-signing-l10n-kn-win64-aarch64-shippable/opt: SPt1DAFCRDaJr58Mg5IdYQ + repackage-signing-l10n-kn-win64-shippable/opt: Vpli-YvhS--XKF-IkasXUg + repackage-signing-l10n-ko-win32-shippable/opt: dH5x-gBRQ8ikBNOLXf8s2w + repackage-signing-l10n-ko-win64-aarch64-shippable/opt: ZODjoVZYSDmd59lN6Hew9Q + repackage-signing-l10n-ko-win64-shippable/opt: dp4ZxeRjR4m8FiDsZLwUBQ + repackage-signing-l10n-lij-win32-shippable/opt: JfkAmMNZR4SF8-gcDO2iMA + repackage-signing-l10n-lij-win64-aarch64-shippable/opt: dubbG-3PRy6BjzPmePjUSQ + repackage-signing-l10n-lij-win64-shippable/opt: eRBbGQrGRWuK0IoaRye0Xg + repackage-signing-l10n-lt-win32-shippable/opt: TpsFAPv5SxmOQ_icUzlQLQ + repackage-signing-l10n-lt-win64-aarch64-shippable/opt: COHQnVHeSmKA6I_8bl9bvg + repackage-signing-l10n-lt-win64-shippable/opt: LBi95J0uQtKpTqzwb4AKyQ + repackage-signing-l10n-lv-win32-shippable/opt: AvSAxuIQRPmUseIVw_1lNw + repackage-signing-l10n-lv-win64-aarch64-shippable/opt: QcG4PMiIQHaY5KhzsMZwDw + repackage-signing-l10n-lv-win64-shippable/opt: BFEXme91Tk6lcHFoPgzlQA + repackage-signing-l10n-mk-win32-shippable/opt: LA0xWTiYT5u3IPiV0JnV8A + repackage-signing-l10n-mk-win64-aarch64-shippable/opt: NgH6U1jqQ52pUt3Ht56HMg + repackage-signing-l10n-mk-win64-shippable/opt: TQxZ0YtnSkG9Y36luIe4mg + repackage-signing-l10n-mr-win32-shippable/opt: D8abLRj1QYO--C61zOAqJg + repackage-signing-l10n-mr-win64-aarch64-shippable/opt: NTCfV8DCTw2jZTLS5wmH0A + repackage-signing-l10n-mr-win64-shippable/opt: L1towe63QpKSROMx9OGaRw + repackage-signing-l10n-ms-win32-shippable/opt: WqH05rfnTP69gfe_C6MGvQ + repackage-signing-l10n-ms-win64-aarch64-shippable/opt: Bbw9JaPYSuqUUgKIr2zB0Q + repackage-signing-l10n-ms-win64-shippable/opt: CWYkVe6xStCtedsOnnjSsw + repackage-signing-l10n-my-win32-shippable/opt: SM-Ht2MRQluQv2mBT-3oag + repackage-signing-l10n-my-win64-aarch64-shippable/opt: e6dJJ8B0R7WhXUwCd2sTTw + repackage-signing-l10n-my-win64-shippable/opt: fdXvNJOtQUCfHpIJtCyOBA + repackage-signing-l10n-nb-NO-win32-shippable/opt: HJ0u7jLVRmCqQz4X6KVJuw + repackage-signing-l10n-nb-NO-win64-aarch64-shippable/opt: eTrPyfUoSIWnSGfuuOxYJw + repackage-signing-l10n-nb-NO-win64-shippable/opt: Q95Twe23QiiiYcfWaIBrow + repackage-signing-l10n-ne-NP-win32-shippable/opt: GsFnpSIgRwi3-cF0iyt44Q + repackage-signing-l10n-ne-NP-win64-aarch64-shippable/opt: L2w2eVxnTEKFqLXabNeyZA + repackage-signing-l10n-ne-NP-win64-shippable/opt: TAgH6udIRTyGNhmBKWz9KA + repackage-signing-l10n-nl-win32-shippable/opt: OXd6qDElRUOMpoczR7v9iQ + repackage-signing-l10n-nl-win64-aarch64-shippable/opt: OJNJicSOT5Sj38MjYKw0Hg + repackage-signing-l10n-nl-win64-shippable/opt: YZWCOZ4_SnSN4K04Q9gaKg + repackage-signing-l10n-nn-NO-win32-shippable/opt: X64Z4-ruQmiBYcCmsK8lng + repackage-signing-l10n-nn-NO-win64-aarch64-shippable/opt: WDrmmSYuQ9qOOfVcceMQBw + repackage-signing-l10n-nn-NO-win64-shippable/opt: BKXj4l2UREWMz6LcSmGjHg + repackage-signing-l10n-oc-win32-shippable/opt: e67W0C3nSGi_cFqO3DT75g + repackage-signing-l10n-oc-win64-aarch64-shippable/opt: RSqXd0bYSguUQV3oZzh9cQ + repackage-signing-l10n-oc-win64-shippable/opt: Dp0FdA0UR6eSJLfP-RnX9Q + repackage-signing-l10n-pa-IN-win32-shippable/opt: Dr4i9SGYSY2lLKQuqmEfZA + repackage-signing-l10n-pa-IN-win64-aarch64-shippable/opt: D5pinotRS8e7Af2mK1FOPg + repackage-signing-l10n-pa-IN-win64-shippable/opt: SwBf3qgcQVW0eFq0d5A58g + repackage-signing-l10n-pl-win32-shippable/opt: FME44-luSw-gPB1X3BjCDA + repackage-signing-l10n-pl-win64-aarch64-shippable/opt: HanWNaMJTrybU0HEhNsYyA + repackage-signing-l10n-pl-win64-shippable/opt: b2TxRzHiQqC_yRG71VxzPQ + repackage-signing-l10n-pt-BR-win32-shippable/opt: JArAHNzLRtyO19CxzO2FFQ + repackage-signing-l10n-pt-BR-win64-aarch64-shippable/opt: AUQUS0z1Qga6XpTKu8O3hg + repackage-signing-l10n-pt-BR-win64-shippable/opt: TBG26cETSXOpGTFf81HdwA + repackage-signing-l10n-pt-PT-win32-shippable/opt: Cwh38arGSSSiH7Jy-QJRPw + repackage-signing-l10n-pt-PT-win64-aarch64-shippable/opt: HuQWOhFHSNK2J2_MrLKMlg + repackage-signing-l10n-pt-PT-win64-shippable/opt: ffJLLq-RR-aHRkhBzEG_BQ + repackage-signing-l10n-rm-win32-shippable/opt: a6xNJiUwS1-cQj3CbyybWQ + repackage-signing-l10n-rm-win64-aarch64-shippable/opt: D_7BPvk-TPqBNBCK6yoBDg + repackage-signing-l10n-rm-win64-shippable/opt: D0Su8_6SSZKlhuQAQ6_nUw + repackage-signing-l10n-ro-win32-shippable/opt: ZXCXo6mdQCu5pbdCi0Ho2w + repackage-signing-l10n-ro-win64-aarch64-shippable/opt: BH8X6mUXQjuf-3qvSZGnaw + repackage-signing-l10n-ro-win64-shippable/opt: UhwD8Ln6Q1yx_XZ1kSSMHA + repackage-signing-l10n-ru-win32-shippable/opt: TLG0tiupRHCBx2rU1mVBgQ + repackage-signing-l10n-ru-win64-aarch64-shippable/opt: Yu6QcrlbSyaMSgtosHhQ6g + repackage-signing-l10n-ru-win64-shippable/opt: IBe3XjG7S1Guk9tOrYQZPA + repackage-signing-l10n-sc-win32-shippable/opt: IavjhtL6RS2XigdcIoxjUQ + repackage-signing-l10n-sc-win64-aarch64-shippable/opt: SgvItnsKSPyi79WN-GKIaQ + repackage-signing-l10n-sc-win64-shippable/opt: RusG6hS-RNCxhTVRLxJ7Uw + repackage-signing-l10n-sco-win32-shippable/opt: PMYDVHHsQQiiSvMgPYqXcQ + repackage-signing-l10n-sco-win64-aarch64-shippable/opt: O1ml1pIJQseBX4UT8G3Wrw + repackage-signing-l10n-sco-win64-shippable/opt: M5RUH2eBTAieGD00LOkM2w + repackage-signing-l10n-si-win32-shippable/opt: ckvwvAzeTTeRRRiuSk8BxQ + repackage-signing-l10n-si-win64-aarch64-shippable/opt: IJa4azqpRECuvu9tp5cmVA + repackage-signing-l10n-si-win64-shippable/opt: cX3muXDcQdWO7qJ1iVrk8A + repackage-signing-l10n-sk-win32-shippable/opt: a3O5_SOwT2exxBTYMalWIw + repackage-signing-l10n-sk-win64-aarch64-shippable/opt: ScZsfD1NSw-6HZxesOLdGA + repackage-signing-l10n-sk-win64-shippable/opt: aqJ78tmcSAm7eUgJp3tdaA + repackage-signing-l10n-sl-win32-shippable/opt: ITP-DWMcT3SgBHXOwqxZgw + repackage-signing-l10n-sl-win64-aarch64-shippable/opt: GeLoTRrSRFe7A2IbVCc2TA + repackage-signing-l10n-sl-win64-shippable/opt: dI0jSc0YRpadJ0rK8rqjvQ + repackage-signing-l10n-son-win32-shippable/opt: MYwxkk7fQlKSMSYxjysXtg + repackage-signing-l10n-son-win64-aarch64-shippable/opt: MCY27MImQBulFIjdXa3XuQ + repackage-signing-l10n-son-win64-shippable/opt: PQd-iibSQwCFaPS0fsLpEA + repackage-signing-l10n-sq-win32-shippable/opt: HF_uvk4NTO6Pw9M9G6MORw + repackage-signing-l10n-sq-win64-aarch64-shippable/opt: F7NFlzcOTByChZDVQcel4w + repackage-signing-l10n-sq-win64-shippable/opt: YmEPqhE_SBuflhKbsQqR1A + repackage-signing-l10n-sr-win32-shippable/opt: cJysdjmqQ82kqgwbC59eyg + repackage-signing-l10n-sr-win64-aarch64-shippable/opt: bXVwFPFhSOqy6G_2vzBZvw + repackage-signing-l10n-sr-win64-shippable/opt: WZE9EPc5RseQfzLMsqF3Xw + repackage-signing-l10n-sv-SE-win32-shippable/opt: MN70o6x9TUqOjG_wB5sYZg + repackage-signing-l10n-sv-SE-win64-aarch64-shippable/opt: Aqo-o7kpTpWi0Fj1sQ6o7A + repackage-signing-l10n-sv-SE-win64-shippable/opt: UPmqzUc7TqiTHlvIcC4p-A + repackage-signing-l10n-szl-win32-shippable/opt: MFQCCmjKRvC78UK3N6IgQA + repackage-signing-l10n-szl-win64-aarch64-shippable/opt: ZypA1Jj-Rwyme8ydAM3D3w + repackage-signing-l10n-szl-win64-shippable/opt: RX5kNv3MQnSRF2VUDITgrQ + repackage-signing-l10n-ta-win32-shippable/opt: bM5YtxXpSguTz39NN5yvpg + repackage-signing-l10n-ta-win64-aarch64-shippable/opt: Psw1CQdqS62qtYF4pqEyfg + repackage-signing-l10n-ta-win64-shippable/opt: Etq7oC0VSHO7S9CP6Ce-Iw + repackage-signing-l10n-te-win32-shippable/opt: RtnFZW6jRv-AfCZuO5cHwA + repackage-signing-l10n-te-win64-aarch64-shippable/opt: Kq-cL4GsTGu82k2VVhSDfQ + repackage-signing-l10n-te-win64-shippable/opt: PASxzUngRvSJbJ5pXzMYnQ + repackage-signing-l10n-tg-win32-shippable/opt: cbtxdMIIT0ie3-x3OKug4w + repackage-signing-l10n-tg-win64-aarch64-shippable/opt: LhBRaf5hQB2r9HrAU43y3A + repackage-signing-l10n-tg-win64-shippable/opt: Bta1g0hvQVCYahZhRBe4ag + repackage-signing-l10n-th-win32-shippable/opt: aukFlFIMTU-JMt48lSoQwA + repackage-signing-l10n-th-win64-aarch64-shippable/opt: fCU7HinTQqiowmGTXyJPFQ + repackage-signing-l10n-th-win64-shippable/opt: D-JYPo03TKy8CfQNMxttsw + repackage-signing-l10n-tl-win32-shippable/opt: SDuqFf3YSMaW1JCpF_cWjQ + repackage-signing-l10n-tl-win64-aarch64-shippable/opt: XAv1APoPRRySOQVFa6HO9w + repackage-signing-l10n-tl-win64-shippable/opt: CrSKH8GeQzK9s2feIp4RBA + repackage-signing-l10n-tr-win32-shippable/opt: VF88w-OrTJaKX_aD-22i4w + repackage-signing-l10n-tr-win64-aarch64-shippable/opt: WDpvRxfPQniYA6lBlikxEw + repackage-signing-l10n-tr-win64-shippable/opt: ZD24vn9sRxWz_lmzOfVKPQ + repackage-signing-l10n-trs-win32-shippable/opt: WmpDs3hMTvK9MfWapXzT4g + repackage-signing-l10n-trs-win64-aarch64-shippable/opt: PrRZqCXhQ4mLuz2WfPTpHg + repackage-signing-l10n-trs-win64-shippable/opt: HSWd3BrVSsm1sNOOCJslnQ + repackage-signing-l10n-uk-win32-shippable/opt: Tn1lC8arTnWnPko_SiUqxQ + repackage-signing-l10n-uk-win64-aarch64-shippable/opt: Nl311BFmSd2kKxPGI7MOgA + repackage-signing-l10n-uk-win64-shippable/opt: OwbbOECdRiOAq-AEFT85ZA + repackage-signing-l10n-ur-win32-shippable/opt: EJfqm1HhTh-98hvqs1qnuQ + repackage-signing-l10n-ur-win64-aarch64-shippable/opt: ShUtmxPhRrWIHgaa0Un_FA + repackage-signing-l10n-ur-win64-shippable/opt: XYrf21gKQ_q0goB0jALLOQ + repackage-signing-l10n-uz-win32-shippable/opt: fvfRnrDIS0Wcu1TjusiLUg + repackage-signing-l10n-uz-win64-aarch64-shippable/opt: UoN5VCWUTdePi6yABQ9QMw + repackage-signing-l10n-uz-win64-shippable/opt: bqyPR-ESRim6mf29ptU9cw + repackage-signing-l10n-vi-win32-shippable/opt: BxANk9SETQunLjYMhWY_pQ + repackage-signing-l10n-vi-win64-aarch64-shippable/opt: NQ9TWqjpTHikFCSuuCrbGQ + repackage-signing-l10n-vi-win64-shippable/opt: V_9rZ2vuTpquu_ODH0-UjQ + repackage-signing-l10n-xh-win32-shippable/opt: UTdsp-sTRa2ZN322en1h8g + repackage-signing-l10n-xh-win64-aarch64-shippable/opt: UrQOVUFERSmme5RHinV_gA + repackage-signing-l10n-xh-win64-shippable/opt: cK6kbV9nTTClyr0bBgF5kA + repackage-signing-l10n-zh-CN-win32-shippable/opt: aZ5d_SitTKa2Rjwf4HqfXw + repackage-signing-l10n-zh-CN-win64-aarch64-shippable/opt: LKsUdr6YTaGmAj2Jge-6BQ + repackage-signing-l10n-zh-CN-win64-shippable/opt: Q6eG1ZxIQZ6mBmx2XRHFfA + repackage-signing-l10n-zh-TW-win32-shippable/opt: HFao6kGBRQaJ8gOLTAk4fA + repackage-signing-l10n-zh-TW-win64-aarch64-shippable/opt: EqdxnPQnRDSCLhXihSLSDQ + repackage-signing-l10n-zh-TW-win64-shippable/opt: Fyvoi8voTiKSe4vmG7MmAQ + repackage-signing-msi-ach-win32-shippable/opt: U4Yiq1GTSbuA5CPpOjw5AA + repackage-signing-msi-ach-win64-shippable/opt: J7NPnplGRIW1afsO3s-8pw + repackage-signing-msi-af-win32-shippable/opt: WE-APn3BQ8WlndM1qY_WHA + repackage-signing-msi-af-win64-shippable/opt: fBVli044S0qI96NH3nh31g + repackage-signing-msi-an-win32-shippable/opt: RfcJAcdfQYSWm5s3yP489w + repackage-signing-msi-an-win64-shippable/opt: T8jwmq86QKy7Ixs98a9HBA + repackage-signing-msi-ar-win32-shippable/opt: Sl6aEOBDTEetBYI92cOrww + repackage-signing-msi-ar-win64-shippable/opt: fMatTo4TSS6pPt6UHxmkAw + repackage-signing-msi-ast-win32-shippable/opt: EFwCT2IsRGWdtGuPVnF9Pg + repackage-signing-msi-ast-win64-shippable/opt: Cx9bHfWiTy261dD7YW0wYQ + repackage-signing-msi-az-win32-shippable/opt: QaOmG1wbTri85bWhqJr27Q + repackage-signing-msi-az-win64-shippable/opt: WGwaGp-1RzKieakggbBb-w + repackage-signing-msi-be-win32-shippable/opt: DqWv8gzzTYya3wS-gf6wAw + repackage-signing-msi-be-win64-shippable/opt: SDuQHppPTBqlDOTUYP_j6Q + repackage-signing-msi-bg-win32-shippable/opt: Y4kjQHj2TLSX37LIhOzhFg + repackage-signing-msi-bg-win64-shippable/opt: B-pfQgIoROiatCOnVH_gow + repackage-signing-msi-bn-win32-shippable/opt: JyhWpzEaSZi0fjtyHzgLWw + repackage-signing-msi-bn-win64-shippable/opt: VFubiRctRGmHCCPPxjh9oA + repackage-signing-msi-br-win32-shippable/opt: PihJBouwQ9u3MtbWUoBoKg + repackage-signing-msi-br-win64-shippable/opt: WaDKjbLkQ4KpfQlCBxk0EQ + repackage-signing-msi-bs-win32-shippable/opt: dVVCy_WUQMKnUvHv6H53ag + repackage-signing-msi-bs-win64-shippable/opt: ejY0BzJlSJebx9-JxrShRQ + repackage-signing-msi-ca-valencia-win32-shippable/opt: FZ3RHhQGTESK93WqzL2IJw + repackage-signing-msi-ca-valencia-win64-shippable/opt: Fx43OZvEQBWTa0qTXfiLaw + repackage-signing-msi-ca-win32-shippable/opt: HMVFRfUSQROJ--n2MkezZg + repackage-signing-msi-ca-win64-shippable/opt: cF691TisSfOhYeT39czwnA + repackage-signing-msi-cak-win32-shippable/opt: EsM3TXG8Q0KmbshVRSB21Q + repackage-signing-msi-cak-win64-shippable/opt: QbQjZ8XCR06z0Owd7pgjRA + repackage-signing-msi-cs-win32-shippable/opt: XKtsoktpSQe5UhfEtq9asw + repackage-signing-msi-cs-win64-shippable/opt: A7TutwPoRCCVw8OBN2W6DA + repackage-signing-msi-cy-win32-shippable/opt: ah8ZSpqMTS66dBWEfOoGBw + repackage-signing-msi-cy-win64-shippable/opt: ODeCFCIHS7mqi18dXOiLcg + repackage-signing-msi-da-win32-shippable/opt: MXXuv1tGSmWbiSdyIFwT7A + repackage-signing-msi-da-win64-shippable/opt: F30fT7nmRK6xe8gnP-IHSA + repackage-signing-msi-de-win32-shippable/opt: TuDAkN-_QfyoD6co6p9dfQ + repackage-signing-msi-de-win64-shippable/opt: dJslOU_zSW6vQF67LXMsmQ + repackage-signing-msi-dsb-win32-shippable/opt: YEgWSgLeRlW5__ziU6Lymg + repackage-signing-msi-dsb-win64-shippable/opt: NYPwfL1fSy2QgOywhPjILA + repackage-signing-msi-el-win32-shippable/opt: OhipwyPKQcCaYJ2i65DZww + repackage-signing-msi-el-win64-shippable/opt: ZHv3Y2aXTOyNjo89LKlsAg + repackage-signing-msi-en-CA-win32-shippable/opt: eEXaiEdRQziFYtUzE8A7qA + repackage-signing-msi-en-CA-win64-shippable/opt: EX9-oQv_RJazag6Q9wgZUA + repackage-signing-msi-en-GB-win32-shippable/opt: TJXMUMz-SuKcRDhpFKSJRg + repackage-signing-msi-en-GB-win64-shippable/opt: BEC3ZuJ4S_KLyaQ5t75hLg + repackage-signing-msi-eo-win32-shippable/opt: LRFeeSgWTO6THg4fgn84Ew + repackage-signing-msi-eo-win64-shippable/opt: VLADOAMYQ1mX5udybi-vYQ + repackage-signing-msi-es-AR-win32-shippable/opt: DKpCuPqhQa-LT9I0lxuzvw + repackage-signing-msi-es-AR-win64-shippable/opt: XsKjGN-sTlmOD_o2g_FRCA + repackage-signing-msi-es-CL-win32-shippable/opt: BYbuHVBzSMOacDSDozAclg + repackage-signing-msi-es-CL-win64-shippable/opt: ZW1mY1d2Ty-tHXJamYZRxg + repackage-signing-msi-es-ES-win32-shippable/opt: OEbX4byPSBy7yLTJ6dpJJg + repackage-signing-msi-es-ES-win64-shippable/opt: Q3L3hxTAS8W6D61VxyvocA + repackage-signing-msi-es-MX-win32-shippable/opt: UwFE1Xo3Sdi4xn6pmnxQOg + repackage-signing-msi-es-MX-win64-shippable/opt: OtpT2mDiQr-RwVxLKE2m-Q + repackage-signing-msi-et-win32-shippable/opt: Rug0HEzpQSKsKnZNWXylIQ + repackage-signing-msi-et-win64-shippable/opt: FN6TYED5RdSnJ0PwSJ0Emg + repackage-signing-msi-eu-win32-shippable/opt: KTP-tfwaS-iWSw7MA9-VWA + repackage-signing-msi-eu-win64-shippable/opt: bG0OFek6SCeG6xydYNSsTQ + repackage-signing-msi-fa-win32-shippable/opt: AzWmjO_1SuuTF25L_mGlsQ + repackage-signing-msi-fa-win64-shippable/opt: KEK1JsilRQ6ri6wqo16_Uw + repackage-signing-msi-ff-win32-shippable/opt: UF_n8bHBQ-2m4urMtGa-pw + repackage-signing-msi-ff-win64-shippable/opt: b-iwnysgTKiTZhVgU0t7Qw + repackage-signing-msi-fi-win32-shippable/opt: SZ3JOrRSSSaO75frJ3wXdQ + repackage-signing-msi-fi-win64-shippable/opt: fRK7TEulQ42US5oCBi4r5A + repackage-signing-msi-fr-win32-shippable/opt: SWETOpT-SOmZ1vmrdKBPwQ + repackage-signing-msi-fr-win64-shippable/opt: Np960Ym9ReevLgOScbp4eg + repackage-signing-msi-fur-win32-shippable/opt: Tg4n9Hn8QlG4unzdTZngCg + repackage-signing-msi-fur-win64-shippable/opt: E1Jpx3bTSauPYNiBMmXBTQ + repackage-signing-msi-fy-NL-win32-shippable/opt: fYV2jR5ITTyj66FG7xSYBQ + repackage-signing-msi-fy-NL-win64-shippable/opt: WiXa17LJS36DjAG5S7Fn9Q + repackage-signing-msi-ga-IE-win32-shippable/opt: KuMJbWR1Riew3Zl1NKHLAw + repackage-signing-msi-ga-IE-win64-shippable/opt: CDLjpjU5RV-ANQD3WmElvA + repackage-signing-msi-gd-win32-shippable/opt: U2HFo524SEi5NGd4ZzPdng + repackage-signing-msi-gd-win64-shippable/opt: fRoES4AIQCGXOuSQrr0h1Q + repackage-signing-msi-gl-win32-shippable/opt: Ep9-Z0SUQ8ijO_Dzmi7Y1g + repackage-signing-msi-gl-win64-shippable/opt: aJqtt-7PRrusvqBxHFZf7A + repackage-signing-msi-gn-win32-shippable/opt: L_sLMl4wSMimbTSpsRbzMQ + repackage-signing-msi-gn-win64-shippable/opt: ex3_sIcMQ2WG6oFkhEti-A + repackage-signing-msi-gu-IN-win32-shippable/opt: UURGiuHbQi-OIJ21IWN11Q + repackage-signing-msi-gu-IN-win64-shippable/opt: TA_Aiw18T5CTH4GznBlgLw + repackage-signing-msi-he-win32-shippable/opt: dHmRA9fxRzWclslZLPeGxg + repackage-signing-msi-he-win64-shippable/opt: JJqtUKj5TOWl1x7UIyx9qQ + repackage-signing-msi-hi-IN-win32-shippable/opt: Ef1esJoAR_CZ_3kyGK8O4Q + repackage-signing-msi-hi-IN-win64-shippable/opt: UacInoswSM-td0cu3GiMnQ + repackage-signing-msi-hr-win32-shippable/opt: GRbOTX4BTXqX7XKkXxxGjQ + repackage-signing-msi-hr-win64-shippable/opt: QjmMh5SkSlWHYOhUZrN-wg + repackage-signing-msi-hsb-win32-shippable/opt: WYa8Fa3xR8SeK7H3rFrcdw + repackage-signing-msi-hsb-win64-shippable/opt: VRjQDUdUTmux5nifdKOWxQ + repackage-signing-msi-hu-win32-shippable/opt: NVpcxrpdSPK2X9tZvKwj4A + repackage-signing-msi-hu-win64-shippable/opt: cokDAgFUSQCaUwbvJ-iJtg + repackage-signing-msi-hy-AM-win32-shippable/opt: BJoJARL1RzOvN5EmI1stYQ + repackage-signing-msi-hy-AM-win64-shippable/opt: eo7uvdJsSfa7oRfayjRtxw + repackage-signing-msi-ia-win32-shippable/opt: G3ECJFTTRYma9v0QeTFGzQ + repackage-signing-msi-ia-win64-shippable/opt: Rg25XVstQtym2KAkPI4o8w + repackage-signing-msi-id-win32-shippable/opt: KnhU7rHmRjapUv2tPrzpOA + repackage-signing-msi-id-win64-shippable/opt: Tj8XvGO-QhmTUzi_97STRg + repackage-signing-msi-is-win32-shippable/opt: Ebxea9w6RpufoyGn3XJNbw + repackage-signing-msi-is-win64-shippable/opt: MKCXrE-yQnuNDa9ubQ5LZw + repackage-signing-msi-it-win32-shippable/opt: P6NoYDVATdWHcNuYAxoD_Q + repackage-signing-msi-it-win64-shippable/opt: JFnf_mZnRvutFnrm6HwaFQ + repackage-signing-msi-ja-win32-shippable/opt: a6QwPe2OSl2DytmEt24Hzg + repackage-signing-msi-ja-win64-shippable/opt: KupJRqL2TJSkBM96PhDXyg + repackage-signing-msi-ka-win32-shippable/opt: KKZwOzVMS--Hx8w0d792tQ + repackage-signing-msi-ka-win64-shippable/opt: Dlfqr4S0S1a5gtkZzo2W8g + repackage-signing-msi-kab-win32-shippable/opt: XVkfk4YFSZGn62YuPF9xsA + repackage-signing-msi-kab-win64-shippable/opt: fQys_s5OS-SXAEUAbOccgA + repackage-signing-msi-kk-win32-shippable/opt: Cue2QrjZRSmokS2yZiuKdA + repackage-signing-msi-kk-win64-shippable/opt: KA4xnDE7RWOLsqyB1UPXXA + repackage-signing-msi-km-win32-shippable/opt: ECHp7KCFRGm6f_ZbHPbLaQ + repackage-signing-msi-km-win64-shippable/opt: N8k8U_tDRqqnnM0icifcVQ + repackage-signing-msi-kn-win32-shippable/opt: T97VIt1iTGu7vH8cCGwR4w + repackage-signing-msi-kn-win64-shippable/opt: WITAyxrvQ_2EJM7ew48g4g + repackage-signing-msi-ko-win32-shippable/opt: Z_-qqWIYTUi21L1g8gMpaA + repackage-signing-msi-ko-win64-shippable/opt: St5rUTFGRGm29OFgiZMvPg + repackage-signing-msi-lij-win32-shippable/opt: CgCiGEmSRnqygwL5IiYwhg + repackage-signing-msi-lij-win64-shippable/opt: AI20x8EFRpWHWarJiT-GSA + repackage-signing-msi-lt-win32-shippable/opt: H4orxpnOSVyjWCuMqoXg-A + repackage-signing-msi-lt-win64-shippable/opt: fFthFgC7QiKbt0-sEYVM0Q + repackage-signing-msi-lv-win32-shippable/opt: ekfeRy8pR_-MjauKsylHag + repackage-signing-msi-lv-win64-shippable/opt: EJebbENrQTOISzNo2X9_Eg + repackage-signing-msi-mk-win32-shippable/opt: Mh7wWaqdTOSQmH4mJCgonw + repackage-signing-msi-mk-win64-shippable/opt: Z6RB7kh2QGSBdvMzNhNOSA + repackage-signing-msi-mr-win32-shippable/opt: SvrEl2NjRHq-B58NYDtKDQ + repackage-signing-msi-mr-win64-shippable/opt: GFqeMQjLRVOXW5ATL1FFrg + repackage-signing-msi-ms-win32-shippable/opt: Spo7U6rgTZ2EQXJC1AcBdw + repackage-signing-msi-ms-win64-shippable/opt: Z7Y2N2DxTw-9wXBUwMK1PA + repackage-signing-msi-my-win32-shippable/opt: NjmFcPRqRzSAlMKrYM_HMA + repackage-signing-msi-my-win64-shippable/opt: TcNUfPr4Rq-wflOVwlt3KA + repackage-signing-msi-nb-NO-win32-shippable/opt: RCqkLZ5WTnK5R7Kmmomr4A + repackage-signing-msi-nb-NO-win64-shippable/opt: Bvv57sSrTlynbaTaHTqf0Q + repackage-signing-msi-ne-NP-win32-shippable/opt: JjuZLgW-TEOkBwltRrBIig + repackage-signing-msi-ne-NP-win64-shippable/opt: Wyd8RWyjTymINivuPKl-2A + repackage-signing-msi-nl-win32-shippable/opt: NK_JfXvcS3mss_fP4wza8A + repackage-signing-msi-nl-win64-shippable/opt: ZpBIBupWSDGs2BSmXMlaMw + repackage-signing-msi-nn-NO-win32-shippable/opt: bZSd96A6S96tcUSfBnbXtw + repackage-signing-msi-nn-NO-win64-shippable/opt: V5c50jJcQF2nmywqDEBvtA + repackage-signing-msi-oc-win32-shippable/opt: FjWBUDrmSxeyGSaUBhkz0g + repackage-signing-msi-oc-win64-shippable/opt: fFs9mV4kR6GVnTzlo22IGA + repackage-signing-msi-pa-IN-win32-shippable/opt: dxGraDDMSEyEcxvLa7xrqQ + repackage-signing-msi-pa-IN-win64-shippable/opt: AkHBEqy4Q7Gc7FOpJr3kPQ + repackage-signing-msi-pl-win32-shippable/opt: I2KvDzLORQ-UdQZVvpOwBA + repackage-signing-msi-pl-win64-shippable/opt: MgVpywwjSNu_6ec-OOcbIA + repackage-signing-msi-pt-BR-win32-shippable/opt: R-h4tpYnQGeN90huBHvQkg + repackage-signing-msi-pt-BR-win64-shippable/opt: NqEdKpC1T5qJpuetpjpRZA + repackage-signing-msi-pt-PT-win32-shippable/opt: I-zUNVZQQ9K4LpqG0t8pWA + repackage-signing-msi-pt-PT-win64-shippable/opt: NOoh5QXTRumWgK24dznw-g + repackage-signing-msi-rm-win32-shippable/opt: E6xPUEfaRxCZX66WPYsJ6Q + repackage-signing-msi-rm-win64-shippable/opt: JS0Z_3OiRgqZwfSPnVmMiQ + repackage-signing-msi-ro-win32-shippable/opt: Sj4VXYbCRgqmbc1WX92CWQ + repackage-signing-msi-ro-win64-shippable/opt: WXYRPkopR_Kb0GUEhnyv_g + repackage-signing-msi-ru-win32-shippable/opt: NVp8Op9cS8WblpPrAWEq5w + repackage-signing-msi-ru-win64-shippable/opt: Tut8Nde8RlOggxfCz4jUtg + repackage-signing-msi-sc-win32-shippable/opt: A4pnubcIRPqe8zF5ONfIVw + repackage-signing-msi-sc-win64-shippable/opt: QhHyVLkvR3e2xuNDNTJNRA + repackage-signing-msi-sco-win32-shippable/opt: FpfURmM4STWkFZmALibpaQ + repackage-signing-msi-sco-win64-shippable/opt: L0wg3l0lSQejIGSUYOo3MA + repackage-signing-msi-si-win32-shippable/opt: NF8MJiZ1QviKjw7bmkVMCQ + repackage-signing-msi-si-win64-shippable/opt: WUBZcaUbSEi-AMsW_g_N0Q + repackage-signing-msi-sk-win32-shippable/opt: cM_xz96mRcKkBfeEtewD2Q + repackage-signing-msi-sk-win64-shippable/opt: Fh0rCXroQmSiu-oQlPG_SA + repackage-signing-msi-sl-win32-shippable/opt: QDIf9gMnTiu-WjdyXfyQNg + repackage-signing-msi-sl-win64-shippable/opt: e3lqwsvETJyRup0sIAPD6A + repackage-signing-msi-son-win32-shippable/opt: FFRY1TdJQ5mRevn94_7SUg + repackage-signing-msi-son-win64-shippable/opt: K9EkY1ofRjqLACVhFW4ZIg + repackage-signing-msi-sq-win32-shippable/opt: ZhgajE5UTPWehA56p8HlbA + repackage-signing-msi-sq-win64-shippable/opt: HDqcE_53TO-yllgabxxdgw + repackage-signing-msi-sr-win32-shippable/opt: I41L9EvmS66alqA1qOekyA + repackage-signing-msi-sr-win64-shippable/opt: StBjtrUEQqm4kzLcA94AJA + repackage-signing-msi-sv-SE-win32-shippable/opt: LK-oHSr1RtO3Y-o6UDd-NQ + repackage-signing-msi-sv-SE-win64-shippable/opt: DhnKbxfeRMarRkstAG1zBA + repackage-signing-msi-szl-win32-shippable/opt: U2iHNWIkRR6pqI_3mTYh8g + repackage-signing-msi-szl-win64-shippable/opt: UpFBauhFT5qnNFYqoO9Xhg + repackage-signing-msi-ta-win32-shippable/opt: PubURZMNTP6g7lg-tLlN1w + repackage-signing-msi-ta-win64-shippable/opt: b2TqtWd9Sf6f9pjJAgqfkQ + repackage-signing-msi-te-win32-shippable/opt: aJSygkrlRcCw4Seb6kLK7w + repackage-signing-msi-te-win64-shippable/opt: KFL7hBj1S3qXr5NrdMdoDQ + repackage-signing-msi-tg-win32-shippable/opt: YegRKEJDQ_isNgkN0jD7jw + repackage-signing-msi-tg-win64-shippable/opt: ANymnr2QToONmq59P9yTng + repackage-signing-msi-th-win32-shippable/opt: PsBQIvbqRoCveTHT_heiUg + repackage-signing-msi-th-win64-shippable/opt: JVpJWAEjSae13eTLu74KkQ + repackage-signing-msi-tl-win32-shippable/opt: SeKN_psqQ-Gb5rgrMNnngQ + repackage-signing-msi-tl-win64-shippable/opt: WCQMS5j-TR6NQgvq6GhC1Q + repackage-signing-msi-tr-win32-shippable/opt: NH2HEKF4TmuK2KF8TWHt_A + repackage-signing-msi-tr-win64-shippable/opt: FdWuf0fuRIKvSE40Is3nww + repackage-signing-msi-trs-win32-shippable/opt: ZN7hMjnsQ66KerJ3DKfTIw + repackage-signing-msi-trs-win64-shippable/opt: Hs6q3SR6QeyPMLbOWEgxbw + repackage-signing-msi-uk-win32-shippable/opt: HptjZFiASheThJsKG2EyTA + repackage-signing-msi-uk-win64-shippable/opt: E85nJSHgQJqADLBc9OLf7w + repackage-signing-msi-ur-win32-shippable/opt: IBtu-M0WTWWXnhWC89CsCQ + repackage-signing-msi-ur-win64-shippable/opt: N2ewRVtDRsuFxpEXkj8vrQ + repackage-signing-msi-uz-win32-shippable/opt: fcoHPrE8RXOWX04mhtj34g + repackage-signing-msi-uz-win64-shippable/opt: OlnwkcG2SreRb7m6MhRMzg + repackage-signing-msi-vi-win32-shippable/opt: PjEuWGwTQD-G21YizoeJ2g + repackage-signing-msi-vi-win64-shippable/opt: UemISc9RQMW6yHAM2YSJyA + repackage-signing-msi-win32-shippable/opt: ct_KAxlUT3We5ytogUyijg + repackage-signing-msi-win64-shippable/opt: NvWc7g99T5Ko1oU2zPihXw + repackage-signing-msi-xh-win32-shippable/opt: XbquN_ZmQBKqqu5MRyeoZw + repackage-signing-msi-xh-win64-shippable/opt: Yu6sygadQWKMvlQjRQlr0w + repackage-signing-msi-zh-CN-win32-shippable/opt: alDk3mi9R6mudabp_eFo-w + repackage-signing-msi-zh-CN-win64-shippable/opt: FxWFJdbxSNqJjv5yIBdXHA + repackage-signing-msi-zh-TW-win32-shippable/opt: MNABtJGXTSOxfCB0lMmTag + repackage-signing-msi-zh-TW-win64-shippable/opt: e3JWE9ZiQBeqCjIP1cCXMQ + repackage-signing-msix-win64/debug: f_9YbH4xQWSJfzceo5pNog + repackage-signing-shippable-l10n-msix-win32-shippable/opt: HBay9vdqQjm6pYEzSD8axw + repackage-signing-shippable-l10n-msix-win64-shippable/opt: W9NAQXs5Syu_hZLH3AiXpg + repackage-signing-win32-shippable/opt: D5cGUTBHQ-WXhv1YhSZ0zA + repackage-signing-win64-aarch64-shippable/opt: HO5UFPKqR56AfXbvBvlmSw + repackage-signing-win64-shippable/opt: QNG3tk8DTwyXHueaAtSF9w + repackage-win32-shippable/opt: MYc8d3oBTjSUqmAaKSfuMw + repackage-win64-aarch64-shippable/opt: PhwO-BmVSRezkZsIjk0Mhg + repackage-win64-shippable/opt: P6nD-gtqQeinZ_HRN__GLg + shippable-l10n-linux-shippable-1/opt: ZSDoLw5BTS2m6GEaAHMsYg + shippable-l10n-linux-shippable-10/opt: RTxy2DuLQZyIMBTyX3toSg + shippable-l10n-linux-shippable-11/opt: EYymAm3ATxWfyrlmdotZEw + shippable-l10n-linux-shippable-12/opt: X8CChXm0Q-iMWeGPcMafAQ + shippable-l10n-linux-shippable-13/opt: QOxLOT8xQki_7LdOFI03sw + shippable-l10n-linux-shippable-14/opt: P2-7k3wRSIKvYTLPXMaKTg + shippable-l10n-linux-shippable-15/opt: WPbcPKAdQ9G0g-GxYD85SA + shippable-l10n-linux-shippable-16/opt: A_6snnS5Q0eN1oHUX-4o1A + shippable-l10n-linux-shippable-17/opt: K1EjGqPxS-uUoV-PcuAZwQ + shippable-l10n-linux-shippable-18/opt: BcYVULmTQdWaB83ZNzK6pA + shippable-l10n-linux-shippable-19/opt: BGw_Bk5VQGujgiqX3cu_Ig + shippable-l10n-linux-shippable-2/opt: WqAn9HcITom7GTR3OAwRsA + shippable-l10n-linux-shippable-20/opt: UcI0sqnUTZukTgBJ8Qq49Q + shippable-l10n-linux-shippable-3/opt: I5HfOULqQmycfVLYN0jwrg + shippable-l10n-linux-shippable-4/opt: Spf0Pr6NT82AJvwiLIncZA + shippable-l10n-linux-shippable-5/opt: Bp_nkCxCTUem1Hq-C_3eEQ + shippable-l10n-linux-shippable-6/opt: Q3F5uxWDReqFmXyAx0uy_w + shippable-l10n-linux-shippable-7/opt: Tz8NNFusTTaAXzGlVHLqeA + shippable-l10n-linux-shippable-8/opt: doMUKLvPTgyrcTdMeDTH8Q + shippable-l10n-linux-shippable-9/opt: BB52rKxTROiYxN0PzLElXg + shippable-l10n-linux64-shippable-1/opt: NO-ldAUhRv-pgIOttZjAeQ + shippable-l10n-linux64-shippable-10/opt: N05JVVQyQMKAy610DGe_1w + shippable-l10n-linux64-shippable-11/opt: Gay9gVzHSFimR90AXNyu1A + shippable-l10n-linux64-shippable-12/opt: cJn1NaRUQg6tCY-NbbCpNw + shippable-l10n-linux64-shippable-13/opt: boe9sKPqSWGfQlP6PD_pfg + shippable-l10n-linux64-shippable-14/opt: L9vKDfaySp6bndlih0XdjA + shippable-l10n-linux64-shippable-15/opt: JifxQv67RC6ZKCXbnSXXxg + shippable-l10n-linux64-shippable-16/opt: Oa4qeqWWRgaRP0K2Cp0YTg + shippable-l10n-linux64-shippable-17/opt: GIUDmDMsTQqADKecEPtiiQ + shippable-l10n-linux64-shippable-18/opt: XsPBdi--Qgiv9-HRttUqPA + shippable-l10n-linux64-shippable-19/opt: bk6KnvV7QYesBr5VP0N_-Q + shippable-l10n-linux64-shippable-2/opt: SpGeEaM9Q--wxWPK24Xi6Q + shippable-l10n-linux64-shippable-20/opt: FJOu1_qPS7OFw25exPVLhw + shippable-l10n-linux64-shippable-3/opt: HWYdH4yXQW2L6Bnckvc0kQ + shippable-l10n-linux64-shippable-4/opt: ceMge9qPTlCBe478dTMV2w + shippable-l10n-linux64-shippable-5/opt: DJvRnlG6TSOCTAkRNJrYKA + shippable-l10n-linux64-shippable-6/opt: Yr9zgyjFQV2mnRcWekM3rQ + shippable-l10n-linux64-shippable-7/opt: MLkQZDW9QAKmzpIBXSOKzw + shippable-l10n-linux64-shippable-8/opt: YrFYgP3NT-yPGmitqdm6Aw + shippable-l10n-linux64-shippable-9/opt: Ca9TurHyQWeTbhmlpzdxEQ + shippable-l10n-mac-notarization-macosx64-shippable-1/opt: O9IsYRO7QV2-Uacg908u-w + shippable-l10n-mac-notarization-macosx64-shippable-10/opt: AlR4ztM4SCuC4utLtiUmJg + shippable-l10n-mac-notarization-macosx64-shippable-11/opt: IkmOhcSlSfO4kRDSgogykQ + shippable-l10n-mac-notarization-macosx64-shippable-12/opt: UaWOKGaiStC8JhBJViRhww + shippable-l10n-mac-notarization-macosx64-shippable-13/opt: QwcdZQk6QJ6rXsiAi5_JZw + shippable-l10n-mac-notarization-macosx64-shippable-14/opt: MZNwww8FReiFNOYyOMSPrw + shippable-l10n-mac-notarization-macosx64-shippable-15/opt: LCqN3uY5QD68DkLJ8HIUTw + shippable-l10n-mac-notarization-macosx64-shippable-16/opt: IffIP8_CTdGeTgz-K_yDwQ + shippable-l10n-mac-notarization-macosx64-shippable-17/opt: CsR-5tGQTP2V7s7eae_SEw + shippable-l10n-mac-notarization-macosx64-shippable-18/opt: aX9ytPfcSpGryADnC2Y6ng + shippable-l10n-mac-notarization-macosx64-shippable-19/opt: F1FCChlxQSCIxiDp-GSvSg + shippable-l10n-mac-notarization-macosx64-shippable-2/opt: BNqcMdZ5RdGPSPte-o9cDg + shippable-l10n-mac-notarization-macosx64-shippable-20/opt: EbuoyT1aQXGzb-R5Q0yecw + shippable-l10n-mac-notarization-macosx64-shippable-3/opt: MRbzMZPKRduEB0NRHGm0VA + shippable-l10n-mac-notarization-macosx64-shippable-4/opt: MMHzj_MBQyK_dlXSFod-MA + shippable-l10n-mac-notarization-macosx64-shippable-5/opt: SIjD3Y5jTlKvpo4Gt9f0Yg + shippable-l10n-mac-notarization-macosx64-shippable-6/opt: S0GVRFZpR1GdDbCnB-RKkw + shippable-l10n-mac-notarization-macosx64-shippable-7/opt: f93alAyqSUi7OYRUP5PCKA + shippable-l10n-mac-notarization-macosx64-shippable-8/opt: IukzJi7rQ1qoJpK0WleOBA + shippable-l10n-mac-notarization-macosx64-shippable-9/opt: AWpCO5Y1R9OOtVd2j9WhhA + shippable-l10n-mac-signing-macosx64-shippable-1/opt: RE2XnNKhT2Kh3ehLRz3A7Q + shippable-l10n-mac-signing-macosx64-shippable-10/opt: U_F_R7pbTxKDOVqS3YYSRw + shippable-l10n-mac-signing-macosx64-shippable-11/opt: Hc9z0kOrTRuXealkvrWffg + shippable-l10n-mac-signing-macosx64-shippable-12/opt: H3QjqxanTz-MXgyhUz6xVQ + shippable-l10n-mac-signing-macosx64-shippable-13/opt: f-kbF4xYRguQ87T9vQvESw + shippable-l10n-mac-signing-macosx64-shippable-14/opt: Zobh6g4XRBGSUNVpGtV1Ag + shippable-l10n-mac-signing-macosx64-shippable-15/opt: cxDysiq9Sb-rgvmzDMEWZg + shippable-l10n-mac-signing-macosx64-shippable-16/opt: UwrYAmanSsu60LPr6QPsoQ + shippable-l10n-mac-signing-macosx64-shippable-17/opt: IF-kvwacTVSnPxAeMtyqtA + shippable-l10n-mac-signing-macosx64-shippable-18/opt: fTD4jpnaRdaV2r0MPPe5ig + shippable-l10n-mac-signing-macosx64-shippable-19/opt: eLcTjNGwRQql1htROi2w5g + shippable-l10n-mac-signing-macosx64-shippable-2/opt: AiNFgULeQOCtmjg65qdOcQ + shippable-l10n-mac-signing-macosx64-shippable-20/opt: FzZHGw3KTCyDqN9kbH5r9w + shippable-l10n-mac-signing-macosx64-shippable-3/opt: SJSHJuRnSWeo27MkcfZryQ + shippable-l10n-mac-signing-macosx64-shippable-4/opt: M9oBpd1pR1utQsdsLifLdA + shippable-l10n-mac-signing-macosx64-shippable-5/opt: Vny691LySPioVQlcP0DsWQ + shippable-l10n-mac-signing-macosx64-shippable-6/opt: P21shMzKSTShTU0YH9YzXQ + shippable-l10n-mac-signing-macosx64-shippable-7/opt: WPPyXaM6R-KlxesNYMBApg + shippable-l10n-mac-signing-macosx64-shippable-8/opt: KDKHgDrSS0q5-GJ5oWOXTQ + shippable-l10n-mac-signing-macosx64-shippable-9/opt: Kt53UQ4rRl6AdZ_OozUSLg + shippable-l10n-macosx64-shippable-1/opt: f4Ew3x4wSYCckJN_13HiRA + shippable-l10n-macosx64-shippable-10/opt: KKeOKImiSGujnTiA_hpd_Q + shippable-l10n-macosx64-shippable-11/opt: YXW-DdMtThisOmsQa02_XA + shippable-l10n-macosx64-shippable-12/opt: R40h4O8zQ16QpFvUnWK3mA + shippable-l10n-macosx64-shippable-13/opt: DfGcMf9xTl6hL41pVXzFcg + shippable-l10n-macosx64-shippable-14/opt: fWIre6C6SDejzc7tLrO2-w + shippable-l10n-macosx64-shippable-15/opt: KZD1pHvQSTmr7ik7byHdmA + shippable-l10n-macosx64-shippable-16/opt: av7uNn72Qk-wnvud7J_zVg + shippable-l10n-macosx64-shippable-17/opt: MUZyMOWPRwmim3F8pTVQZQ + shippable-l10n-macosx64-shippable-18/opt: I88RDWdKROK3ZB-LlxhrlA + shippable-l10n-macosx64-shippable-19/opt: aGFhD7l8QD6FVD0NlD7vvw + shippable-l10n-macosx64-shippable-2/opt: N-HfEo7PTmeDKyl6H8T8Fg + shippable-l10n-macosx64-shippable-20/opt: HhoKCVKfT5qQYX6nuDtUjg + shippable-l10n-macosx64-shippable-3/opt: ZlWfUhUmSxapcY9hCDEhsQ + shippable-l10n-macosx64-shippable-4/opt: JRR4zb_QSVW117kfHWa0cA + shippable-l10n-macosx64-shippable-5/opt: YY3HMZGLRTGnd9vn4jjlXA + shippable-l10n-macosx64-shippable-6/opt: dszYPlRUS1qfYVvv2ChYxg + shippable-l10n-macosx64-shippable-7/opt: TEvf9d6bT2uvuUmNPur3Gw + shippable-l10n-macosx64-shippable-8/opt: FSMqXU00QCSQoadMFL_3mQ + shippable-l10n-macosx64-shippable-9/opt: AftggT5gSYOtxlW3ViD0Fg + shippable-l10n-signing-linux-shippable-1/opt: OIKQ4_9ISyqD9gkkjQSzOQ + shippable-l10n-signing-linux-shippable-10/opt: SCrk_tUuQrij0rcJsH3FEw + shippable-l10n-signing-linux-shippable-11/opt: IhnfB50TTCK_Qc2g3-fRkw + shippable-l10n-signing-linux-shippable-12/opt: WZaef78QS8ms2uNe03nRIA + shippable-l10n-signing-linux-shippable-13/opt: Vg51s3fLR9yLSfGutyCOiA + shippable-l10n-signing-linux-shippable-14/opt: QAeJ4Wq0S2W2sU05GZJyLg + shippable-l10n-signing-linux-shippable-15/opt: ThGrVDc5Q_m6N_9BX0SX7A + shippable-l10n-signing-linux-shippable-16/opt: FyMSPDp6TAi0Lme5rK0Zdg + shippable-l10n-signing-linux-shippable-17/opt: BpMokTqwTSKpMg87FGchPQ + shippable-l10n-signing-linux-shippable-18/opt: baPg8H6RQ9efXj0xm2oa3w + shippable-l10n-signing-linux-shippable-19/opt: YfvNMCtTS-2j_bQUdNS-4g + shippable-l10n-signing-linux-shippable-2/opt: aLdYy7_fSCumS5MBg1EXIQ + shippable-l10n-signing-linux-shippable-20/opt: TTjzuFb3Tu6CtQnmDEG9WA + shippable-l10n-signing-linux-shippable-3/opt: RLNXsoHrQB2ylcnVIzjoPg + shippable-l10n-signing-linux-shippable-4/opt: GZbep1TqQU2C6qzSi07ggA + shippable-l10n-signing-linux-shippable-5/opt: K9RG9uthSNmCHM2I60NXlg + shippable-l10n-signing-linux-shippable-6/opt: RLOwDkmGSueRKAM5Ch3r2A + shippable-l10n-signing-linux-shippable-7/opt: TwoFpUq-RMePhJco5fnRYQ + shippable-l10n-signing-linux-shippable-8/opt: JzPxU-5TQvGIeBAisp86hw + shippable-l10n-signing-linux-shippable-9/opt: G1WGj4AjQyq5Lh0wMxreFw + shippable-l10n-signing-linux64-shippable-1/opt: Lnwx0rUjT7WdoaV4cW8hhg + shippable-l10n-signing-linux64-shippable-10/opt: Kgu3g-HwRZyp182DjrxQjQ + shippable-l10n-signing-linux64-shippable-11/opt: RCtp2688Rq2M09HyGQnF-g + shippable-l10n-signing-linux64-shippable-12/opt: Uzna_N_4QcG7viVtxWMI_Q + shippable-l10n-signing-linux64-shippable-13/opt: ANd5-nLkRb2tT46M4dmdyA + shippable-l10n-signing-linux64-shippable-14/opt: PFV6RYguQiCjm8mz7I_Trg + shippable-l10n-signing-linux64-shippable-15/opt: FXRp-QA9SJWPmHc8iJAzjw + shippable-l10n-signing-linux64-shippable-16/opt: cpqrx4RhSp2D05S0Lg5IpA + shippable-l10n-signing-linux64-shippable-17/opt: FDTyGGxjRbmKGuwbbE8qvg + shippable-l10n-signing-linux64-shippable-18/opt: bKYHGAx5TQ65JmxDh0hBCA + shippable-l10n-signing-linux64-shippable-19/opt: cZjak_ZNSACsYBvpcbLddg + shippable-l10n-signing-linux64-shippable-2/opt: G5w9JO80R-SIkEWm78N7bQ + shippable-l10n-signing-linux64-shippable-20/opt: HZs_PqY8TgW-0M-0A-rtQg + shippable-l10n-signing-linux64-shippable-3/opt: JLcvtfYnQBqgZofGq4Q40A + shippable-l10n-signing-linux64-shippable-4/opt: NPMgOyjgT7q6QrqzF9olZA + shippable-l10n-signing-linux64-shippable-5/opt: CnhBVlj9RZWA69dXD1jjow + shippable-l10n-signing-linux64-shippable-6/opt: XXSMJ2ceQwqXhJ8DabkLVw + shippable-l10n-signing-linux64-shippable-7/opt: PzQHNG05QcSesz6zu0c7_A + shippable-l10n-signing-linux64-shippable-8/opt: Ize68pcmS9C12kUoCROj4w + shippable-l10n-signing-linux64-shippable-9/opt: JyR84fGISCmfnrkfTm-_jQ + shippable-l10n-signing-win32-shippable-1/opt: ZG4fx_9qTrO9HKqF8cDsgA + shippable-l10n-signing-win32-shippable-10/opt: cRLJ9KvmSciwMychoLL82A + shippable-l10n-signing-win32-shippable-11/opt: QbDlIqnMTNSNVzWiWqXUqw + shippable-l10n-signing-win32-shippable-12/opt: HkrN_PYQQKS_IxVPz58mUg + shippable-l10n-signing-win32-shippable-13/opt: UMOeKhsuRKirgwBziU_dUA + shippable-l10n-signing-win32-shippable-14/opt: P1CSxHRGRquo6uNzPUBiDQ + shippable-l10n-signing-win32-shippable-15/opt: X-yO-mpXTlyQwVL8Zzx9bA + shippable-l10n-signing-win32-shippable-16/opt: B2RagIj6Saqx_8U__V-JlQ + shippable-l10n-signing-win32-shippable-17/opt: XHXmeoprSc-EghujEyeimg + shippable-l10n-signing-win32-shippable-18/opt: AQrL7k6KSMa_sddPIiWtYg + shippable-l10n-signing-win32-shippable-19/opt: ZHCmRTqNRWC51mdz8HewoA + shippable-l10n-signing-win32-shippable-2/opt: NH9HxhEcQNaHADKdokW4ug + shippable-l10n-signing-win32-shippable-20/opt: LJgj2xJkRrStThhHJVHKdw + shippable-l10n-signing-win32-shippable-3/opt: I-57vEHAQWGvh3wKeO8e0A + shippable-l10n-signing-win32-shippable-4/opt: DTR0msYeTkiOgmMrWxiVfA + shippable-l10n-signing-win32-shippable-5/opt: YMxXmHKtRzqmH-DIO8IBwg + shippable-l10n-signing-win32-shippable-6/opt: AzvO1wk0S4qIkx9Vn0-3vQ + shippable-l10n-signing-win32-shippable-7/opt: RUq_0tTWQ72YMxiV5xA7PQ + shippable-l10n-signing-win32-shippable-8/opt: Sd_ACjHJRYeyxGyDZWygmA + shippable-l10n-signing-win32-shippable-9/opt: Ssvsk76aT5y4254fw1SxEw + shippable-l10n-signing-win64-aarch64-shippable-1/opt: dBoorKL_QxSi818tshaMDA + shippable-l10n-signing-win64-aarch64-shippable-10/opt: JkqcYRV9RJqxJgD3C-P59g + shippable-l10n-signing-win64-aarch64-shippable-11/opt: YnaO_nCjQtaKiQZfXLcAXQ + shippable-l10n-signing-win64-aarch64-shippable-12/opt: SlqNQkCKQdC7KuZp6vhXhA + shippable-l10n-signing-win64-aarch64-shippable-13/opt: ePpt4PxDTMCwzJOzbk3HKA + shippable-l10n-signing-win64-aarch64-shippable-14/opt: UteQ9CFmRlappRtDnTxnVA + shippable-l10n-signing-win64-aarch64-shippable-15/opt: aB9R5ZfFQKWnlC5BLyy7uw + shippable-l10n-signing-win64-aarch64-shippable-16/opt: YV56XoGZRueSqb70hscohw + shippable-l10n-signing-win64-aarch64-shippable-17/opt: cLie92IGQPOwnaIf2WzbsA + shippable-l10n-signing-win64-aarch64-shippable-18/opt: ZDldRTQzQX6hs3OiY0QUWQ + shippable-l10n-signing-win64-aarch64-shippable-19/opt: PrYIClw2TpGlKr1AkKBNcg + shippable-l10n-signing-win64-aarch64-shippable-2/opt: ULdRfoRbRD-TeLe0q_aRMg + shippable-l10n-signing-win64-aarch64-shippable-20/opt: f-PixKHgSxe3WhU-_rW8hQ + shippable-l10n-signing-win64-aarch64-shippable-3/opt: ZT4Ij6MfQ02AuSrK4vuhSg + shippable-l10n-signing-win64-aarch64-shippable-4/opt: e02JY4pmSTqRdOwV5DMaiQ + shippable-l10n-signing-win64-aarch64-shippable-5/opt: XBGyTI66RhS2P98-OTZoWA + shippable-l10n-signing-win64-aarch64-shippable-6/opt: eA8FuZlORxyuc1LE0EYnCQ + shippable-l10n-signing-win64-aarch64-shippable-7/opt: Exhtw9CkS7OpEq_f3sbkEg + shippable-l10n-signing-win64-aarch64-shippable-8/opt: eUMps9C8QUKAucW3hI2i1g + shippable-l10n-signing-win64-aarch64-shippable-9/opt: XVBfuFViRNKZ5deOT9TLvA + shippable-l10n-signing-win64-shippable-1/opt: cNszmy5ISVijN2pQYBz6qA + shippable-l10n-signing-win64-shippable-10/opt: TZr1xvHZRyypQ607ok7Pig + shippable-l10n-signing-win64-shippable-11/opt: LVyOwJlNS5KX0IF-7hA-ng + shippable-l10n-signing-win64-shippable-12/opt: ES42KaPBRjujkC6h9c7dVQ + shippable-l10n-signing-win64-shippable-13/opt: P2Hf8BsGTmKQHX9THmovGA + shippable-l10n-signing-win64-shippable-14/opt: aro00R98QMKp-XBnNInnRA + shippable-l10n-signing-win64-shippable-15/opt: BB7bO8imReOlbeiMet9vgA + shippable-l10n-signing-win64-shippable-16/opt: dM6tzUqUTxeRm4hUT104Kw + shippable-l10n-signing-win64-shippable-17/opt: Y8CmuDIDTp6wOnsfQLp1_g + shippable-l10n-signing-win64-shippable-18/opt: M43brXxTT5uGYHVOwaSFmQ + shippable-l10n-signing-win64-shippable-19/opt: YrdJowdOSkOzdFmoh1a_Vw + shippable-l10n-signing-win64-shippable-2/opt: CluLCSgcRSiqoCvcbF1W7g + shippable-l10n-signing-win64-shippable-20/opt: S_B3QvyvSYOSR-W0rgKHkg + shippable-l10n-signing-win64-shippable-3/opt: R5vkAJ1zSOCiR_xH5BArSw + shippable-l10n-signing-win64-shippable-4/opt: ODQBiY0cTU26yVAemZuWtg + shippable-l10n-signing-win64-shippable-5/opt: YBbM5qTYTmmzJyxIPPPcpQ + shippable-l10n-signing-win64-shippable-6/opt: FxgORVMwT8evTZBjc2kekg + shippable-l10n-signing-win64-shippable-7/opt: XQ9mZ1CESM-GvorCPhOcjw + shippable-l10n-signing-win64-shippable-8/opt: IPVM_ghzQKGIaFuHQXkZLQ + shippable-l10n-signing-win64-shippable-9/opt: Wkkuy7vjRgqllynYKr2k5w + shippable-l10n-win32-shippable-1/opt: EiO96UXwTrC5ieBeTnNLSg + shippable-l10n-win32-shippable-10/opt: COmwxBomRMipO_WWNKLHYQ + shippable-l10n-win32-shippable-11/opt: f4eikeI6RFSAs60GyLFHDQ + shippable-l10n-win32-shippable-12/opt: aJ8zvkLJSqq_kOjIfDyRlA + shippable-l10n-win32-shippable-13/opt: TcoVTxFgTW2r6kCQwct9NA + shippable-l10n-win32-shippable-14/opt: TaQed1zGR2yph6rCQtXglg + shippable-l10n-win32-shippable-15/opt: GHy3yhLcQlWTFHafyatHww + shippable-l10n-win32-shippable-16/opt: YFsAk-HoTu-rah-19jA1lA + shippable-l10n-win32-shippable-17/opt: JAqfeOhXQhaynmYb22j4Sg + shippable-l10n-win32-shippable-18/opt: U2JQBQIHQtuq0xd4oTdT8w + shippable-l10n-win32-shippable-19/opt: H1MHmaXoTkmyWLvZZOZEFA + shippable-l10n-win32-shippable-2/opt: Vs_ikQMhRd6n-QsA3b1UKA + shippable-l10n-win32-shippable-20/opt: MavPBHDKQOGoC8wpJKn40g + shippable-l10n-win32-shippable-3/opt: G0IJ31KVReKnYFHy82s78A + shippable-l10n-win32-shippable-4/opt: EGoMIZVMSU-daew4hEK5Bg + shippable-l10n-win32-shippable-5/opt: RKzZhRLdTUuS0POYXVdcWw + shippable-l10n-win32-shippable-6/opt: fk0NiFxsS5WCqpPMO05KDg + shippable-l10n-win32-shippable-7/opt: U9qUzxjKRNq4Qy5nJVcZEQ + shippable-l10n-win32-shippable-8/opt: T6IpyRAqTFCKhBJAXrlDsg + shippable-l10n-win32-shippable-9/opt: JaTZX_j5TfabWGv2CaSBIg + shippable-l10n-win64-aarch64-shippable-1/opt: Z9-eEPOfQ12OItWXrAvfRQ + shippable-l10n-win64-aarch64-shippable-10/opt: SQ-5ZuUPS4yqbtfkrvJraw + shippable-l10n-win64-aarch64-shippable-11/opt: Gp7_DoAHSVKfUMZicPJmAQ + shippable-l10n-win64-aarch64-shippable-12/opt: L1dwsLisQWS54GRHsUORlQ + shippable-l10n-win64-aarch64-shippable-13/opt: K2IE0MQZToedMNuoubWwKA + shippable-l10n-win64-aarch64-shippable-14/opt: HuSQEet-RUS4jQPFVTE9Vw + shippable-l10n-win64-aarch64-shippable-15/opt: DKHZP_AnTI6e1wHj2Bg-qg + shippable-l10n-win64-aarch64-shippable-16/opt: JJRpnw4ITie1rUj6fNeVVQ + shippable-l10n-win64-aarch64-shippable-17/opt: OJ9bWq04SxWzNSzpnjcFmw + shippable-l10n-win64-aarch64-shippable-18/opt: cARAYEJRQaug7EoPHDviUw + shippable-l10n-win64-aarch64-shippable-19/opt: UydEC1xkRG6_-xf-qdFZsw + shippable-l10n-win64-aarch64-shippable-2/opt: RWIYENA5SUiPe15DKPyjxA + shippable-l10n-win64-aarch64-shippable-20/opt: TwNirOA6QASqRM7UYGn9gg + shippable-l10n-win64-aarch64-shippable-3/opt: XUbnXZhhSjuq2L6l6mIJsQ + shippable-l10n-win64-aarch64-shippable-4/opt: BB__bMHbSFmrf7uSSJ6_rQ + shippable-l10n-win64-aarch64-shippable-5/opt: CsNwOMhKQr2egtn1eyRopA + shippable-l10n-win64-aarch64-shippable-6/opt: XizR_3vxRrKDpIhQopV11g + shippable-l10n-win64-aarch64-shippable-7/opt: eK_PCOahREisKRT1QblhQQ + shippable-l10n-win64-aarch64-shippable-8/opt: HWJ5k6SmT8KXOjdQGlCGmQ + shippable-l10n-win64-aarch64-shippable-9/opt: WPJlvvXoSq-nSU1pPZ-J9g + shippable-l10n-win64-shippable-1/opt: LK0ASpJSQ6imw3qkBzwzBg + shippable-l10n-win64-shippable-10/opt: ReI3iFcYSWKNRQaLq4tvGg + shippable-l10n-win64-shippable-11/opt: Eths6O2uRti04VAuJdT4JQ + shippable-l10n-win64-shippable-12/opt: GHkYS5WFRKegzRZUEBB32Q + shippable-l10n-win64-shippable-13/opt: MXblHl5HRbe0HmlLamVjYA + shippable-l10n-win64-shippable-14/opt: bHIShKtrRrarAvTv0sf68Q + shippable-l10n-win64-shippable-15/opt: aHkSLgznSDu1-gVUZOUjGQ + shippable-l10n-win64-shippable-16/opt: Xg4jVCVAQni_WvpgejH67w + shippable-l10n-win64-shippable-17/opt: ZJqFNGnMThW0uM8vWAE4Ag + shippable-l10n-win64-shippable-18/opt: K31LkSH4Sxa6HCOyUscjNw + shippable-l10n-win64-shippable-19/opt: WlDHlLSJQhemSmsDFTW8jw + shippable-l10n-win64-shippable-2/opt: VGu2QrTjQxiGLQFTi3kftQ + shippable-l10n-win64-shippable-20/opt: JunIUFU-QDqXiTAAj6TwFQ + shippable-l10n-win64-shippable-3/opt: fCsr0C3CTr67clV8O4T72w + shippable-l10n-win64-shippable-4/opt: dY_Cze6mSeaDFnNXKOONAA + shippable-l10n-win64-shippable-5/opt: SDl-oBc0S8GtlI9KTn0HKA + shippable-l10n-win64-shippable-6/opt: PC1-B1pJQv6SSmDg3hTh-Q + shippable-l10n-win64-shippable-7/opt: FsQkSZrHQHGmG5NwAFB6jA + shippable-l10n-win64-shippable-8/opt: dk7EzCn_TGWU4wMH6veMjw + shippable-l10n-win64-shippable-9/opt: C15MDqJJRCGTE5jk3pypow + source-test-mozlint-eslint: a6JgqPQ2SwSsXappsVCk1g + source-test-puppeteer-puppeteer: BmJ5xpQSRCSjW18Ct56wvA + source-test-puppeteer-puppeteer-with-bidi: Ox0-HRkNQn6lFuJXUDs7AA + test-linux1804-32-shippable-qr/opt-web-platform-tests-1: cQFeTndpTAiQG0BVifJIdw + test-linux1804-32-shippable-qr/opt-web-platform-tests-10: XZM8ml17TX2GhMd5aHmT8Q + test-linux1804-32-shippable-qr/opt-web-platform-tests-2: LA9UX7YCQw2Nk7n9VzriKg + test-linux1804-32-shippable-qr/opt-web-platform-tests-3: X2gN78llTkmBQltRQQMYTA + test-linux1804-32-shippable-qr/opt-web-platform-tests-4: Fes3Lj_YQWuYMB7HndV5TA + test-linux1804-32-shippable-qr/opt-web-platform-tests-5: PAZYrRNtR4ulYFJAPUFiLA + test-linux1804-32-shippable-qr/opt-web-platform-tests-6: dXVhPiPKTZysAtA011FHTw + test-linux1804-32-shippable-qr/opt-web-platform-tests-7: PZLifyYURoiqczqxN-ORkw + test-linux1804-32-shippable-qr/opt-web-platform-tests-8: cy6o58PYQtmgtX4jYKVyPA + test-linux1804-32-shippable-qr/opt-web-platform-tests-9: Xy1wO5UxTn-IkW0G1PzlUQ + test-linux1804-64-asan-qr/opt-cppunit-1proc: NFyRt71zRK-UwSkEeAnQaQ + test-linux1804-64-asan-qr/opt-crashtest: cYycQBWpSBmVRD0KiN-iFw + test-linux1804-64-asan-qr/opt-crashtest-swr: fw20xJSiQLaXRU_o-T7wxg + test-linux1804-64-asan-qr/opt-icecat-ui-functional: NIf3tKEAQfuzxGfbCch-iw + test-linux1804-64-asan-qr/opt-gtest-1proc: UVKDdxNgRwK4LpD4GIGMlQ + test-linux1804-64-asan-qr/opt-marionette: PVje8YFXSaK1cs0PMV0KAg + test-linux1804-64-asan-qr/opt-mochitest-a11y-1proc: NtbMa7PzQr60h9GjsRDgWA + test-linux1804-64-asan-qr/opt-mochitest-browser-a11y: I5qrO8q-SRCq98hP2TgDRg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-1: QYve0CDOQGi04XAbceb4cQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-10: Dyf2nrrSTQWIR-a0foZ_cw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-11: fBVkKV2rQqGAlLR_pFi_tg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-12: VI6rn9LYQUK8hLOmduTAKQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-13: UJWEf12FQTCN0IVwYVpPsQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-14: Q284c_xRTuekd_UbmH4zsQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-15: SsOGAlpIRhWM5GDY-6eQSA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-16: bxVtbUWQR3yn7UuAdtw6zQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-2: fl_f1owoSAK-XVJQlKy2qg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-3: fRbvTpISQeOAQu02GopkRA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-4: GIgez8-fQYqAqimYYTj7jg + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-5: eTnLq3t9RMCtkRr7jiWTOw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-6: CZYXYJmUQWmjrdseaATmXA + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-7: NrheYt8MTX-DQcdx-wT_cw + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-8: NjkC5FmwTauq8DeMrIdoAQ + test-linux1804-64-asan-qr/opt-mochitest-browser-chrome-swr-9: Hp0lxZfWTqqJDIOcmkXoww + test-linux1804-64-asan-qr/opt-mochitest-browser-media: XErx6ErbRgC2LzoFVsdI2g + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-1: JPFH1RfnT7eYbEEDGIUfjA + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-2: P7I73M2IRYKCaBPzS9dZUg + test-linux1804-64-asan-qr/opt-mochitest-chrome-1proc-3: IEttNseKSF26JazvkEMtQw + test-linux1804-64-asan-qr/opt-mochitest-chrome-gpu-1proc: U4j6aOzRSimPSWVTUfjjzQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-1: aOL7t971Q0az4ufDcEgVlg + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-2: DZ-bx6wSTfixLEDJhAV6iw + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-3: DJQaddCoT6uE-rvdQlIyjA + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-4: LBPkHRRBQ0GgOrNg3JWbbQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-5: MovhSH6NT2qt1-GmXxCjfQ + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-6: Xf4XlnHsSYuGeAGLtPPA3g + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-7: byFHoXifSKue_-88grM6Hw + test-linux1804-64-asan-qr/opt-mochitest-devtools-chrome-8: PNc-skiETUaCF9KjU0HHQg + test-linux1804-64-asan-qr/opt-mochitest-media-1: YrHGw9HCShus3z0YtzBHHg + test-linux1804-64-asan-qr/opt-mochitest-media-2: YygK4vw1SvW_lGtKTeaxTg + test-linux1804-64-asan-qr/opt-mochitest-media-spi-1: QrzVtZHqTWqYkXwynywtzw + test-linux1804-64-asan-qr/opt-mochitest-media-spi-2: VXieUaS0RhqVpGBfuZxR5w + test-linux1804-64-asan-qr/opt-mochitest-plain-1: LsO1hX7aSa-Xsxibu-5rkw + test-linux1804-64-asan-qr/opt-mochitest-plain-2: SyhytcIXQwaBH4fFvvxgdQ + test-linux1804-64-asan-qr/opt-mochitest-plain-3: beVSfd7pTKKW1OpybY1Azw + test-linux1804-64-asan-qr/opt-mochitest-plain-4: WcIvHcQXRtuODe_jQ6oe7g + test-linux1804-64-asan-qr/opt-mochitest-plain-5: VB6SyTIpQO6Rta5RgbwDZA + test-linux1804-64-asan-qr/opt-mochitest-plain-gpu: SWdbGr7qQ2eE6pfgZapUQQ + test-linux1804-64-asan-qr/opt-mochitest-remote: LIhq4wzOSz2QDWaJLX31Bg + test-linux1804-64-asan-qr/opt-mochitest-webgl1-core: WM0N4yDxQgmRiHNOzTEYqw + test-linux1804-64-asan-qr/opt-mochitest-webgl1-ext: HB43ARpORXC2SkpYFG1vVA + test-linux1804-64-asan-qr/opt-mochitest-webgl2-core: cHZVmMKGStGXyeiFCP2aew + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-1: QNjtpq3eSTW5GbEOHmF0Bw + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-2: UYiWxXgjSGuGfF0FB05TmQ + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-3: ILW-ESGsRXi168FQGUz_Tg + test-linux1804-64-asan-qr/opt-mochitest-webgl2-ext-4: RzCEAWoDSLaeJc6VY8hj5A + test-linux1804-64-asan-qr/opt-reftest-1: AMwP-rl5QTOj7fR6w2ALiA + test-linux1804-64-asan-qr/opt-reftest-2: G8qcnuQ9RWmX-GcTBY4MfQ + test-linux1804-64-asan-qr/opt-reftest-3: JPA13xYWTxW7B8arhBSGAg + test-linux1804-64-asan-qr/opt-reftest-4: aw_QRnqjR2SqwOb1RqsBrQ + test-linux1804-64-asan-qr/opt-reftest-5: JPOvViWfQNuUIIDiDE7rDw + test-linux1804-64-asan-qr/opt-reftest-6: JBdbOeBSQmuVohXZqQ4xxw + test-linux1804-64-asan-qr/opt-reftest-7: MgPbyirRTcqvILtv7wsTbg + test-linux1804-64-asan-qr/opt-reftest-8: YenEXKw5THG1jVa6ULh6Fg + test-linux1804-64-asan-qr/opt-reftest-swr-1: ZLXZzwh4SmKeNvuWeT-6Qw + test-linux1804-64-asan-qr/opt-reftest-swr-2: DowUlP1iSUacbHrIYseLAQ + test-linux1804-64-asan-qr/opt-reftest-swr-3: Mwz5QW8HQ4SsD5zzINAh0w + test-linux1804-64-asan-qr/opt-reftest-swr-4: Zju43PzCScC0ak09U8rJFg + test-linux1804-64-asan-qr/opt-reftest-swr-5: JqQA4UdhTCuXmH3nSARxAw + test-linux1804-64-asan-qr/opt-reftest-swr-6: Y32spLLTT5KrSFCQWvFz5A + test-linux1804-64-asan-qr/opt-reftest-swr-7: bnMghHS2TRSdq_Fe71M31Q + test-linux1804-64-asan-qr/opt-reftest-swr-8: WNFQgoy9SaOILThYxBXAUQ + test-linux1804-64-asan-qr/opt-telemetry-tests-client: Ei_43929T3G5yOFzs26EZQ + test-linux1804-64-asan-qr/opt-web-platform-tests-1: VHlInl5KT8equh1V35Oi9w + test-linux1804-64-asan-qr/opt-web-platform-tests-10: R6jPl2USSjSkBtvtc8-IaA + test-linux1804-64-asan-qr/opt-web-platform-tests-11: dDpEpLBUTlmr8Bl2h7idZw + test-linux1804-64-asan-qr/opt-web-platform-tests-12: URdw76UIRkesS_UlbWg1QQ + test-linux1804-64-asan-qr/opt-web-platform-tests-13: FJyN4aIHRdyKECfnlWWFOg + test-linux1804-64-asan-qr/opt-web-platform-tests-14: SoRVJ30vQ3K38nbZi2b5Dw + test-linux1804-64-asan-qr/opt-web-platform-tests-15: di_nNNojS0qJtDFyOh17Fw + test-linux1804-64-asan-qr/opt-web-platform-tests-16: A4F61KpYSBaW5kxqNbw7PA + test-linux1804-64-asan-qr/opt-web-platform-tests-17: erxXXlshQxuKWqpuDhAdBw + test-linux1804-64-asan-qr/opt-web-platform-tests-18: PCzRs57mSiudidoGWte2IA + test-linux1804-64-asan-qr/opt-web-platform-tests-19: OammIfnhQ3GwxXTx3DL2OQ + test-linux1804-64-asan-qr/opt-web-platform-tests-2: NegDnTe1Sy6DHiRoU3YEzg + test-linux1804-64-asan-qr/opt-web-platform-tests-20: buQk3DgvQNCmLwlRcUMblw + test-linux1804-64-asan-qr/opt-web-platform-tests-21: Gh7o_GzGRVCKkpylk83GJg + test-linux1804-64-asan-qr/opt-web-platform-tests-22: U_mIpER2QLuIvSDsItygPQ + test-linux1804-64-asan-qr/opt-web-platform-tests-3: eBg0qDrzRcGv0qE6AaftPA + test-linux1804-64-asan-qr/opt-web-platform-tests-4: S8sXmXJCTZuLE3mZIiEtSA + test-linux1804-64-asan-qr/opt-web-platform-tests-5: d7-PFFKiSuy0yPIP5cvjEA + test-linux1804-64-asan-qr/opt-web-platform-tests-6: bpzRPhn_TqeL6PAWX5xXwg + test-linux1804-64-asan-qr/opt-web-platform-tests-7: O4EnWXu4QnuMvPy-AaFQ5g + test-linux1804-64-asan-qr/opt-web-platform-tests-8: dHJrTUlKR1CiV_WFAqF48A + test-linux1804-64-asan-qr/opt-web-platform-tests-9: D3xLT1bCTA-hTlTcbavQCQ + test-linux1804-64-asan-qr/opt-web-platform-tests-crashtest: R6OU16WfS-2jati3LfIRSg + test-linux1804-64-asan-qr/opt-web-platform-tests-print-reftest: NcPfbQ6jRTSPaswGVGc25w + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-1: fNGd8gb7S3SAmOu1aLRnAQ + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-2: SboBshc7Rka0GbDM0GXwyw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-3: eE04RC2kTOagzwJJTsFJQw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-4: TRZEHdIOQMKb0cv_kIAOeA + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-5: aTfP2kH6QQmvYbElxRCaMw + test-linux1804-64-asan-qr/opt-web-platform-tests-reftest-6: S_bAr50xQvCjLQ2CJVlKCg + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-1: BpGD-WtxQjOj2df3vW46Lw + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-2: cc8NrKzlQ5e6byTHG5gGjg + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-3: O5kiKNEXQXy3O_rVE06L6Q + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-1: UFt7HmJvSXOHbJzJUdhkTA + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-2: Yeb7yL3HSaiwHR0j-qK6QA + test-linux1804-64-asan-qr/opt-web-platform-tests-wdspec-headless-3: D9kurO8MQXeGpd8hEzME9w + test-linux1804-64-asan-qr/opt-xpcshell-1: QJoR2XeBQUq4iBt4qkg89Q + test-linux1804-64-asan-qr/opt-xpcshell-2: YY9um_5KScerURjYrAlWSg + test-linux1804-64-asan-qr/opt-xpcshell-3: DLrNlao7RBOU2Lp8qXYLGQ + test-linux1804-64-asan-qr/opt-xpcshell-4: OmBFVu_rT-qGNKWnvOVoig + test-linux1804-64-qr/debug-cppunit-1proc: B_TwdeRURGGDGZbsFnwaew + test-linux1804-64-qr/debug-crashtest: SpWOocK8R8yry4WUhegKdQ + test-linux1804-64-qr/debug-crashtest-swr: FGDZIeu7T9icNbULzLNUcA + test-linux1804-64-qr/debug-icecat-ui-functional: LdtKQuOxSz2UxjHoubliLw + test-linux1804-64-qr/debug-gtest-1proc: AmBpIbywS1uVuY1EzoT8WA + test-linux1804-64-qr/debug-marionette: ZIVPikgzR4qoRj__Vjr9Pw + test-linux1804-64-qr/debug-marionette-swr: JJkUOGJ5Te2XHxvsnSgGdw + test-linux1804-64-qr/debug-mochitest-a11y-1proc: QNhApjqlQlSXj0B_a_PCjA + test-linux1804-64-qr/debug-mochitest-a11y-swr-1proc: MlJCEDR1QiS-NmJd9ZYL4Q + test-linux1804-64-qr/debug-mochitest-browser-a11y: e9ZoEv7dQM23isfpq1mLSw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-1: b14NApdAQs6ksyvLAh4mFQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-10: dYl1YzeORAGUUnGtiZ61JA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-11: SLq6WIOVQ-SpoFs0OYNQxg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-12: AX-j0Q_ZRx28SFpbgIeeMw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-13: Qo-3LI9uTneWhlE0z1t4Jg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-14: IDRniRe8SgWRYrHhoqVDkw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-15: aMl-r7XaQ8mnMfulRk5EzQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-16: HvzSZjUKSzWVbumplsx-YQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-2: T1JEqDcYQBuYFHoOOl6n6g + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-3: Vc6u2Q5iR3uT6NQcPTWVKQ + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-4: QhRM2vy8RZGnckw7UmUD7w + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-5: cbHa0aCDQEONOXDqDsNgqA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-6: fVJ68O4OQCik_3fAN8XYWA + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-7: bjSDeBfTRUeCYmvOCoy7Rg + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-8: f_37jxo7RkqPCuQ5zSFAxw + test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-9: W4bMG_sxSZ2J_wKwufsEHg + test-linux1804-64-qr/debug-mochitest-browser-media: CckPg2FtSsavXkEyAJH3Cg + test-linux1804-64-qr/debug-mochitest-chrome-1proc-1: du48kZqxSDmKxmxyfZ4U7Q + test-linux1804-64-qr/debug-mochitest-chrome-1proc-2: dVbFxL3LTtCepKfLHUDk3w + test-linux1804-64-qr/debug-mochitest-chrome-1proc-3: CbI0vB5nQMqH_SK6pkLiCA + test-linux1804-64-qr/debug-mochitest-chrome-gpu-1proc: C2P1Z1sKS7282uS06mthHw + test-linux1804-64-qr/debug-mochitest-chrome-gpu-swr-1proc: cP73RHx_TpCkhoR_1BF2uA + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-1: fDWVa6EET-2AoHrKCxJXTQ + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-2: Y9p5E_20RiyydzZn0b1s5A + test-linux1804-64-qr/debug-mochitest-chrome-swr-1proc-3: YXpdlc71Qm29unUYeXXsQg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-1: ApS4Kpm7Snm_TakUTarFww + test-linux1804-64-qr/debug-mochitest-devtools-chrome-10: TFjnRyHeTzqPQxUapXYZ2g + test-linux1804-64-qr/debug-mochitest-devtools-chrome-11: JvWc62RLQwKU69Lo7xN0lw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-12: B0KTyGxiRMCYom0rZ9zG2A + test-linux1804-64-qr/debug-mochitest-devtools-chrome-2: fLCjSLqXT0urMZh23tczmw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-3: XZC8KN6jR6ClSBtc_Iythw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-4: eakxxZUzS1yJPhv_h2aLsw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-5: awa-mAz0RIKtnGFbT5ItuA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-6: LZCFJ74SSZizV0ac7EdSMg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-7: LzJ-OshfS--6Mnl-raaNhg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-8: bf9WYEMUQGi_8bcOvt8g4Q + test-linux1804-64-qr/debug-mochitest-devtools-chrome-9: LAVrPc7xTain8CPbiKZFYQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-1: O4iGaBI_SYqwfsVrM6Dp1Q + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-10: Mbm862YSRqG5pp9O_Tx4SA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-11: DciNoljBQj2PnbdXFMdqMQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-12: T_yOAKnrSF-N4vsyADr4eg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-2: GHkw6AdTQeeZNPXIojJo8w + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-3: MMKAbMiCRounZX4FPevBOA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-4: aAYF0gF2ROae5ex_iyTQCQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-5: Y07BcNdYQ7yDqXM6SjiOyg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-6: DCxEvr2wQbCrzdDKPOIjhQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-7: XDh0vxr2RKSh63sxj3BoBg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-8: QpqOORMaR9eDd_m_ZNew3g + test-linux1804-64-qr/debug-mochitest-devtools-chrome-http3-9: Q20hZUY2RY2UeFla9gS2EA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-1: GNc68yQBRR2ihK339u8XVw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-10: AhKCpD1qR7CJt1wjbsXuzg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-11: fpOzLduhT7igSqPKn0lhGQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-12: b75beJrmTnydnjvHDb03KA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-2: eSkzMJtBQaKzadkex8jsHQ + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-3: Uyp6G324QmankHCwlS87ZA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-4: WHfdovQ-Tpqtg51dvvGtIw + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-5: Krfk9LANSh2vmlJKjkO9zA + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-6: d5bqVCmpT8qd7IwSrH-iAg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-7: VFhm3wHeRpKTBf46ASC1xg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-8: cIRnG8RcSdWgvpAGnjmpGg + test-linux1804-64-qr/debug-mochitest-devtools-chrome-swr-9: U7iyUFzIQ56KBJ3VnEH8Xw + test-linux1804-64-qr/debug-mochitest-media-1: WvyO_PupTZ-DmTSXrquDuA + test-linux1804-64-qr/debug-mochitest-media-2: ZHiWaEu2RHy2g8tVlQho6Q + test-linux1804-64-qr/debug-mochitest-media-3: YsRpAX7hQoOcFpeasK9NYg + test-linux1804-64-qr/debug-mochitest-media-spi-1: M-P9rcnqQ7eNYSIUHjA2SA + test-linux1804-64-qr/debug-mochitest-media-spi-2: XpqBjHKqQSSpgKWZ2m755w + test-linux1804-64-qr/debug-mochitest-media-spi-3: FsSvhWDUSZ-wcAQq9qfR9w + test-linux1804-64-qr/debug-mochitest-plain-1: CHt6W57SSuCiqenGBvLfCg + test-linux1804-64-qr/debug-mochitest-plain-10: OK0CMrpxRd2shZszWvyY3w + test-linux1804-64-qr/debug-mochitest-plain-11: JQCNKDyyR1yxBDGnYxo8ug + test-linux1804-64-qr/debug-mochitest-plain-12: SaDd4FtRRXyJLwtYfY1qlg + test-linux1804-64-qr/debug-mochitest-plain-13: EtrTvhHcTM-Zv2E83lzW_Q + test-linux1804-64-qr/debug-mochitest-plain-14: TPF1dhDZSf-BURNZqq7yuQ + test-linux1804-64-qr/debug-mochitest-plain-15: YjEbSjIlSamkR3BInro_uQ + test-linux1804-64-qr/debug-mochitest-plain-16: eViT9yFtQTKng0aPoqrLOg + test-linux1804-64-qr/debug-mochitest-plain-2: YkeNjPIIR7yLfQ23KbBPdg + test-linux1804-64-qr/debug-mochitest-plain-3: bGqmCQzOSb2tZ3Y4i9cDrw + test-linux1804-64-qr/debug-mochitest-plain-4: A4_w9jLTRMCERlvSeP-mog + test-linux1804-64-qr/debug-mochitest-plain-5: XFkPE2k9TeaO76MfKVHKAw + test-linux1804-64-qr/debug-mochitest-plain-6: FAbvFdpwS7SOdnh4WV1JIQ + test-linux1804-64-qr/debug-mochitest-plain-7: TSA7t_OsT7OXpmFwHRcvuQ + test-linux1804-64-qr/debug-mochitest-plain-8: cOLurrdPSXil6nXtFX1nuw + test-linux1804-64-qr/debug-mochitest-plain-9: aONy8gifSB2L-GedmEjzHQ + test-linux1804-64-qr/debug-mochitest-plain-gpu: G8xaWFHxTda-se0btupkVQ + test-linux1804-64-qr/debug-mochitest-plain-gpu-swr: EzvUORhjQsiBDdBdC7SWFA + test-linux1804-64-qr/debug-mochitest-plain-http3-1: S_0nZ72-T1aeC2mwb9yKOg + test-linux1804-64-qr/debug-mochitest-plain-http3-10: O3niv7JTRQaJ2pZefjkd6g + test-linux1804-64-qr/debug-mochitest-plain-http3-11: ZjFx4IO9SSOLITU9yYH1og + test-linux1804-64-qr/debug-mochitest-plain-http3-12: S1YYN2rWQKmkdkijdKzB7w + test-linux1804-64-qr/debug-mochitest-plain-http3-13: WWL2ngIIQlKP-97MaG_mTw + test-linux1804-64-qr/debug-mochitest-plain-http3-14: UIL16BuCT3SY0kqavtzPTA + test-linux1804-64-qr/debug-mochitest-plain-http3-15: an93x4GgSOG3IsNhIIGIUw + test-linux1804-64-qr/debug-mochitest-plain-http3-16: UVTIZeZ5SM2nW9Smwvic1w + test-linux1804-64-qr/debug-mochitest-plain-http3-2: cR9vf131SK-ep_OcoKyphQ + test-linux1804-64-qr/debug-mochitest-plain-http3-3: e8RdhVKXTymnwyMNAUwDOw + test-linux1804-64-qr/debug-mochitest-plain-http3-4: QihMwghsSgOTsrfmHIL0UA + test-linux1804-64-qr/debug-mochitest-plain-http3-5: UAYsVDlkRS-KqFQNgq2yCA + test-linux1804-64-qr/debug-mochitest-plain-http3-6: VDsIml_vSnmWY45QAlavjQ + test-linux1804-64-qr/debug-mochitest-plain-http3-7: a50a5oVITKS_q2dFSEUkyQ + test-linux1804-64-qr/debug-mochitest-plain-http3-8: EJWVB6M_T6yOJiAjZMvWew + test-linux1804-64-qr/debug-mochitest-plain-http3-9: ZfMjUUDyRs2QhxuLydj3cg + test-linux1804-64-qr/debug-mochitest-plain-swr-1: VqObIwweSfWYvEXcMAANBA + test-linux1804-64-qr/debug-mochitest-plain-swr-10: VVMb3mUHRruGq6IOI-LAgw + test-linux1804-64-qr/debug-mochitest-plain-swr-11: GPSN53N9S5yTQpD5SO6uMA + test-linux1804-64-qr/debug-mochitest-plain-swr-12: OrtV2N6ZQV6kNxRIOsOoow + test-linux1804-64-qr/debug-mochitest-plain-swr-13: cFQSVXyLQhiZOLHhUrrk3A + test-linux1804-64-qr/debug-mochitest-plain-swr-14: TxDs9Jd1RDaiXQ3Nxa2Zxw + test-linux1804-64-qr/debug-mochitest-plain-swr-15: fsF4wWmJTsSUd8SY7oxWyA + test-linux1804-64-qr/debug-mochitest-plain-swr-16: cVyLF2_JSzi9wbmv4pl4Qg + test-linux1804-64-qr/debug-mochitest-plain-swr-2: Hnl048IzSqe73Uqood2Uig + test-linux1804-64-qr/debug-mochitest-plain-swr-3: GU59a5zrSUWj4E32D7mQTA + test-linux1804-64-qr/debug-mochitest-plain-swr-4: SxdXuIG4R5ahy63aPa2HFw + test-linux1804-64-qr/debug-mochitest-plain-swr-5: JXQTygvpRCCjpn-FkPKZVA + test-linux1804-64-qr/debug-mochitest-plain-swr-6: JUjCTOh5Q2eyihYdStpwBg + test-linux1804-64-qr/debug-mochitest-plain-swr-7: WgmA3TRbRA25epAi2D4e2w + test-linux1804-64-qr/debug-mochitest-plain-swr-8: WiguP3pkT6irPSKvF5n5BQ + test-linux1804-64-qr/debug-mochitest-plain-swr-9: OPTGcEdQSGeex0o3EO40lg + test-linux1804-64-qr/debug-mochitest-remote: OL-zdkNrQP-QoZL-DdablQ + test-linux1804-64-qr/debug-mochitest-remote-swr: UU_01vMdRSiphoPT6lEG4Q + test-linux1804-64-qr/debug-mochitest-webgl1-core: ZABVlT3QSdy1tt-PmnncuA + test-linux1804-64-qr/debug-mochitest-webgl1-core-swr: SJXbxmPqQzKptbO7hFpJQA + test-linux1804-64-qr/debug-mochitest-webgl1-ext: NipQe0qRRb644IVF9fJRRg + test-linux1804-64-qr/debug-mochitest-webgl1-ext-swr: TUUwzlFcReuXpAeNf17ZUA + test-linux1804-64-qr/debug-mochitest-webgl2-core: XGO1UBzVRjWZhEuTiffesQ + test-linux1804-64-qr/debug-mochitest-webgl2-core-swr: P5ob2nf2SNCCy7sbbXOA7Q + test-linux1804-64-qr/debug-mochitest-webgl2-ext-1: JOCVHphPTumlnaXEZlgq7g + test-linux1804-64-qr/debug-mochitest-webgl2-ext-2: LkI27uqhRGS4FGFP0IMwUg + test-linux1804-64-qr/debug-mochitest-webgl2-ext-3: EOkEY4gOQ2y1Ld8J3iWTtA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-4: FbW0duZeTyaVjyTxJuXkLQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-1: DtThvUPbSAe-QVmdFC_S2w + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-2: DJit90OUTiWvFGzgjwszpA + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-3: ZeDmMapgRLqVwT8wwBLKKQ + test-linux1804-64-qr/debug-mochitest-webgl2-ext-swr-4: LEZDwHbdQCyO7Ilm-CVa5Q + test-linux1804-64-qr/debug-reftest-1: fpGRBu5oTSiS-tPiN1OoTQ + test-linux1804-64-qr/debug-reftest-2: WRaXSaavS8WRBb7--w8bKg + test-linux1804-64-qr/debug-reftest-3: ULW4RCZ-RLWX3BgNvVZIFw + test-linux1804-64-qr/debug-reftest-4: Gs9i0n76S4KBazpJyWaDzg + test-linux1804-64-qr/debug-reftest-5: YRJMBzQHSw6y4XmimBAmXw + test-linux1804-64-qr/debug-reftest-6: V1Cju_8JTWmGoymR6z3P7g + test-linux1804-64-qr/debug-reftest-7: LCV2nI9uRuWQJn0Pt4fFCg + test-linux1804-64-qr/debug-reftest-8: LOIX7MwkTmy3G5maIq0RLA + test-linux1804-64-qr/debug-reftest-swr-1: csMcavtrQmukY8Ehjc3O-g + test-linux1804-64-qr/debug-reftest-swr-2: Ev0GmFlcR9iJcbj8hjdbeA + test-linux1804-64-qr/debug-reftest-swr-3: PdLn-W65TeSRRb85oCfmBA + test-linux1804-64-qr/debug-reftest-swr-4: AesAkqIqRUGLj21u0w67Gw + test-linux1804-64-qr/debug-reftest-swr-5: DM3U_NAbSaugbNpVrXqvVA + test-linux1804-64-qr/debug-reftest-swr-6: PkvLP2AkRWaUUnAICYHgvA + test-linux1804-64-qr/debug-reftest-swr-7: QXRFhs44QryuvgVA9WoFAw + test-linux1804-64-qr/debug-reftest-swr-8: a2ZT3WcFQSOmbR45_QWi2g + test-linux1804-64-qr/debug-telemetry-tests-client: VU9GPPkDQK6OCn8wUW0EKQ + test-linux1804-64-qr/debug-web-platform-tests-1: G7Z5tIdNS-y6fvOGR0V2zw + test-linux1804-64-qr/debug-web-platform-tests-10: TsKiUvMaQrKsdwK9NAzDOg + test-linux1804-64-qr/debug-web-platform-tests-11: PgOC-GkiRCqEBEDDWIJqCA + test-linux1804-64-qr/debug-web-platform-tests-12: Z8iuM_dCTB23j3BZHyb0fw + test-linux1804-64-qr/debug-web-platform-tests-13: S6BRpnZjSWyeIFvNaJoiZg + test-linux1804-64-qr/debug-web-platform-tests-14: ehYGWqcFQy-xXB69sJKO4g + test-linux1804-64-qr/debug-web-platform-tests-15: e6LiZrPjTeeuPLs6zJGI4Q + test-linux1804-64-qr/debug-web-platform-tests-16: UNXB4YDYRr2M8rO1_ZLWEg + test-linux1804-64-qr/debug-web-platform-tests-2: HwodacuFT4OYqnw7IWJbig + test-linux1804-64-qr/debug-web-platform-tests-3: TuVgG795QbqQ3wYaeHBZHw + test-linux1804-64-qr/debug-web-platform-tests-4: aEoP_XitTvWUWioZoH3MjA + test-linux1804-64-qr/debug-web-platform-tests-5: T5S_ImlLQgmdUVAj3lnVcw + test-linux1804-64-qr/debug-web-platform-tests-6: QiaQmJodQ4iKxSlpiVY_MQ + test-linux1804-64-qr/debug-web-platform-tests-7: LQeA879STuunCFO-AtqMqg + test-linux1804-64-qr/debug-web-platform-tests-8: aCtRv2INQKmKVhHW9ra1Tw + test-linux1804-64-qr/debug-web-platform-tests-9: Fdmd5KSVQJK_88-sC2WBSQ + test-linux1804-64-qr/debug-web-platform-tests-crashtest: IFgYsbcyQ46tdUwEA-TQXQ + test-linux1804-64-qr/debug-web-platform-tests-crashtest-swr: MFnd-cULSYqNVTmh0RSIsg + test-linux1804-64-qr/debug-web-platform-tests-print-reftest: b2nWGivlTCaSY1qObfYu_A + test-linux1804-64-qr/debug-web-platform-tests-print-reftest-swr: fQTh9zH3S-CN4PewigPEzA + test-linux1804-64-qr/debug-web-platform-tests-reftest-1: WXHdJ-b0Ry6ME94X1in94A + test-linux1804-64-qr/debug-web-platform-tests-reftest-2: Kwz2GwgDQIiQQhB9LrcApw + test-linux1804-64-qr/debug-web-platform-tests-reftest-3: IybppHgiTB2pmoKXgMglwg + test-linux1804-64-qr/debug-web-platform-tests-reftest-4: IF36a22MSvm0zmnK_YyBlw + test-linux1804-64-qr/debug-web-platform-tests-reftest-5: G8Gx2A-iRgSxicXfioJYSg + test-linux1804-64-qr/debug-web-platform-tests-reftest-6: X-5s4Th1TxS2RWSl29P2dg + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-1: aBnD60w7TUmh8FPPty1nmQ + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-2: bb8krd0XT56lTS2BnOiZMw + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-3: eoqEk5siTieeRLtuj9HRnA + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-4: TjSCDaJgTuabAO2Wf4y9Dg + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-5: F4vGs3heTsSNi15t0cLqow + test-linux1804-64-qr/debug-web-platform-tests-reftest-swr-6: XpMHmXOcSPqGjQbWkQCRjA + test-linux1804-64-qr/debug-web-platform-tests-swr-1: eb-1gbUPQj6X0OkiT3DnSQ + test-linux1804-64-qr/debug-web-platform-tests-swr-10: S_m4LAngT1S-0nGCR0JWsA + test-linux1804-64-qr/debug-web-platform-tests-swr-11: ZklpA-mmTP6Vky0nARfnxA + test-linux1804-64-qr/debug-web-platform-tests-swr-12: b1Xv2F82RM-e_XIH470vOQ + test-linux1804-64-qr/debug-web-platform-tests-swr-13: Me0LxIjvR-qTx_KNnEspTg + test-linux1804-64-qr/debug-web-platform-tests-swr-14: Ib5pgZsCQ0OsNHOggLWirw + test-linux1804-64-qr/debug-web-platform-tests-swr-15: SDIySI15S9-vOG2BI_jI9A + test-linux1804-64-qr/debug-web-platform-tests-swr-16: ajF-51LeTU6w2keTeVgN3A + test-linux1804-64-qr/debug-web-platform-tests-swr-2: SxwR_qSYTLqTC1Fgj_TXcw + test-linux1804-64-qr/debug-web-platform-tests-swr-3: D8kafLPOSkG4i8X9_LEe1w + test-linux1804-64-qr/debug-web-platform-tests-swr-4: I5VMhlkWT0W-YJBUWZELiQ + test-linux1804-64-qr/debug-web-platform-tests-swr-5: IjN-051eTLKts3V7ZeI7aA + test-linux1804-64-qr/debug-web-platform-tests-swr-6: C6jn8Hd8TWa-rqN3rIPoLw + test-linux1804-64-qr/debug-web-platform-tests-swr-7: GgPz9lpPRae454mzsKi6AA + test-linux1804-64-qr/debug-web-platform-tests-swr-8: IrDwA_rMRhWeNR_LvtPERA + test-linux1804-64-qr/debug-web-platform-tests-swr-9: P3Qcoo3sSRqghFh_GHyTKw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-1: I_jBYoh6RHeITQwWEyT9Ww + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-10: a1GoA8FdQQGDInQYK9lIVw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-11: UGJyLfK6Tliq_ZicRkYMrA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-12: I054DRtbQIat49YY1E3R-Q + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-13: ffSJD8tFS2SXBU1HgonUjA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-14: VhtjkYEGSdGyzXcu3MBcBg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-15: X00ZpyOCR3WXguTCUMPzjQ + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-16: bjCaxOS7Sh6aONPV28v0tA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-2: JxkDkAbsQYe1wuGs4SKtrA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-3: bpQEEyiuSiG9awiH2KA9iA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-4: JRy5rUQ0Smi3s5EoUD8hnQ + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-5: JZJ8yQDMRsGW1vp9h2ZhRw + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-6: YLxrTyQqSwmlIvo_802yCg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-7: JNR34W-jTQyZgusshCX6GA + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-8: aWl3SpZ-T6uTk6zlnOZ1Hg + test-linux1804-64-qr/debug-web-platform-tests-swr-nofis-9: VW0o4bqvTXCsqF2drXpYoA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-1: Xl-OPVbnTo-MP10N7FoJQA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-2: Nrqo_AgiRSGd_cBneA5i3w + test-linux1804-64-qr/debug-web-platform-tests-wdspec-3: IPseSKSaRy-r50sb34LXaQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-1: RstqACQWTp6iM0BZiE9ApQ + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-2: JeFfKs_SRISIt8tCC84DFg + test-linux1804-64-qr/debug-web-platform-tests-wdspec-headless-3: ejQ7WOWlRjW1J4jAgpVkRw + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-1: awKSHt5MRaqV3TW3G6EBXA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-2: TvuPLc3-SQiDr9zk8nrzOA + test-linux1804-64-qr/debug-web-platform-tests-wdspec-swr-3: Do5K0VKKRVWE_90vcSScwg + test-linux1804-64-qr/debug-xpcshell-1: Iyc7aeQrSfa52de4Bw9XpA + test-linux1804-64-qr/debug-xpcshell-2: dn1SLs6hTieoCiim9OkOsA + test-linux1804-64-qr/debug-xpcshell-3: dvgyY1WSS9Sfr8PQzA7RUQ + test-linux1804-64-qr/debug-xpcshell-4: d65CY9PkScuZV7wpBueQJw + test-linux1804-64-shippable-qr/opt-cppunit-1proc: fGDVkfH2SKSjq7JFC4PNZw + test-linux1804-64-shippable-qr/opt-crashtest: bts8QprJTmWdMeP00AzBbg + test-linux1804-64-shippable-qr/opt-icecat-ui-functional: Oc5keNJ5RimOzoX5QPnvYA + test-linux1804-64-shippable-qr/opt-gtest-1proc: HQGtOap0SVW60TqZokkuLg + test-linux1804-64-shippable-qr/opt-marionette: CaArIYDcT3-8L3NhuxIk-Q + test-linux1804-64-shippable-qr/opt-marionette-headless: BV6MQBWHTAeAf8HdCoSztw + test-linux1804-64-shippable-qr/opt-mochitest-a11y-1proc: NWgP7JJSTpCtPgP5ulFphw + test-linux1804-64-shippable-qr/opt-mochitest-browser-a11y: KOxsIj8TQJ6sua9aMK-m3A + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-1: XDhxGBdISMOUc5Q3nirgEA + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-2: VJ2i0S-lSjOtdzjWnLEBfw + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-3: WAk4peKVQQSr36lVz4a0Ag + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-4: W5j_jZQHRE23AXD9-nfJJg + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-5: OjMCcFXURXesOrwXNb9Q5g + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-6: VtgFS7ZuSFCgKGtNVoiG5Q + test-linux1804-64-shippable-qr/opt-mochitest-browser-chrome-swr-7: FGXbdegKT4K-1gg1PHFLAg + test-linux1804-64-shippable-qr/opt-mochitest-browser-media: KrDykprIQ9OEGJ9sDxNAwA + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-1: RBoCD3M3RcOenlWM4snySw + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-2: a1Rlcq-MSve6cYp0V3iBKg + test-linux1804-64-shippable-qr/opt-mochitest-chrome-1proc-3: Y61OzZFJRcinEnRYyEW17A + test-linux1804-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: VCWkcrkcTMeltmKhiqzyvg + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-1: YBuqNx4dQii0QbN-LqkMgw + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-2: BG9EYc7QT9KbYfrs5zBbFA + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-3: YcIOHocjR0ag-J_XCCmjow + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-4: AoRspCL9R6-9WZaLXyHQwQ + test-linux1804-64-shippable-qr/opt-mochitest-devtools-chrome-5: ZC2WrzmzSO2H8uJ_yaM7Ig + test-linux1804-64-shippable-qr/opt-mochitest-media-1: bdOqbmr7SiKPYvqmo_0-rQ + test-linux1804-64-shippable-qr/opt-mochitest-media-2: GWLDuCvARg-W2f-mccAMgw + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-1: PrxOyLqbRJGd1nvvYuDQrw + test-linux1804-64-shippable-qr/opt-mochitest-media-spi-2: c9C8fUFxQpGoZk96xxciuQ + test-linux1804-64-shippable-qr/opt-mochitest-plain-1: M-QQsUjMQLCBFRZWvH_hAw + test-linux1804-64-shippable-qr/opt-mochitest-plain-2: EaeXgFySSCe1-lBxtHkpxQ + test-linux1804-64-shippable-qr/opt-mochitest-plain-3: cX17h8rcQSqWBAPRCQMWmg + test-linux1804-64-shippable-qr/opt-mochitest-plain-4: Ntqo8JqTSRCPJxd5No1v4g + test-linux1804-64-shippable-qr/opt-mochitest-plain-5: YOX6WJ-BTYO7fck7x2V3Rw + test-linux1804-64-shippable-qr/opt-mochitest-plain-gpu: b3Ak4xchS1e20xs9fdukmg + test-linux1804-64-shippable-qr/opt-mochitest-remote: InP5kt0GTEKUP_e-Fc3g8w + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-core: Yi9bUEvSR7Wd6SyOGH3Iow + test-linux1804-64-shippable-qr/opt-mochitest-webgl1-ext: UsNDXfYVQhanzMsFiLqmUw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-core: WQu748n2QNeCIwNsi_C5Xg + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-1: Cq0R0PgnQySRy8_8LaYMFw + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-2: deNzSIDCRNCK5rEiz7QU3g + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-3: VL8TdwMIQtup6qTBWGVY0g + test-linux1804-64-shippable-qr/opt-mochitest-webgl2-ext-4: UZ2lA_egTCG91bFcBQMGGQ + test-linux1804-64-shippable-qr/opt-reftest-1: Y-4EwvsRS3qn53JOH0icmA + test-linux1804-64-shippable-qr/opt-reftest-2: QsY0t5SURDaD7JsOrL-6cw + test-linux1804-64-shippable-qr/opt-reftest-3: CtJEhtoYRg6TNuBxIffGoQ + test-linux1804-64-shippable-qr/opt-reftest-4: Q1CLQK2fThafRylXPxdXwA + test-linux1804-64-shippable-qr/opt-reftest-5: GdgleKBCRpygtbd5EyQsYg + test-linux1804-64-shippable-qr/opt-reftest-6: FTOmYz9RSw-w-izNFIp8_w + test-linux1804-64-shippable-qr/opt-reftest-7: fQLB5_SeSTOvEMRcgWkAYQ + test-linux1804-64-shippable-qr/opt-reftest-8: N0KWZwB7SEqPDeNDtLci3A + test-linux1804-64-shippable-qr/opt-telemetry-tests-client: W--1trQbTR2NHPTxSpBgAw + test-linux1804-64-shippable-qr/opt-web-platform-tests-1: aLU9phiNSzqtCiInQSQOOA + test-linux1804-64-shippable-qr/opt-web-platform-tests-10: GGlzjnZFScS0C7RW3aQD8A + test-linux1804-64-shippable-qr/opt-web-platform-tests-2: ZJWDmdylSo-iKEmCwGTscw + test-linux1804-64-shippable-qr/opt-web-platform-tests-3: WpDIe685TzeRFAPNDXQ5CA + test-linux1804-64-shippable-qr/opt-web-platform-tests-4: eDkIKPeIQoKnGoxqNoE_jg + test-linux1804-64-shippable-qr/opt-web-platform-tests-5: CuB_4-K0RUuHpuU2jrcqTQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-6: M2OA8ZiYRvSUYOjXQfuKIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-7: IsQ0DV4rQheswfP2vfCC8g + test-linux1804-64-shippable-qr/opt-web-platform-tests-8: HP1Yw7v1Q_abNRm-mZhMmw + test-linux1804-64-shippable-qr/opt-web-platform-tests-9: VzLBebzAQNSU_1_xjSUz_w + test-linux1804-64-shippable-qr/opt-web-platform-tests-crashtest: Mu-pqZTJQVqf4Z6lzzhwNg + test-linux1804-64-shippable-qr/opt-web-platform-tests-print-reftest: E14bJMwzTJa4iNOEsP1WIQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-1: PlqaMULOQ6OCug0hiAaLyw + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-2: ImaWFqlMSnSM815B7QmwAQ + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-3: I-0vmBghSjeacdfVPG3cEg + test-linux1804-64-shippable-qr/opt-web-platform-tests-reftest-4: fV5h5K3JRZa0_roRaPRwew + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-1: dU_4lxrLTKuaUuEQmiKVVw + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-2: SYfNN-ZGSaamXfYJeU_41A + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-3: UEgKLZXDT_WubjWBQASccw + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: BjoGlKKOS6qgg43kZjNQ-w + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: fBsZ3Hl6RqS19LX4ebFY1w + test-linux1804-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: XU0LATHeSr22cFKB2Kbanw + test-linux1804-64-shippable-qr/opt-xpcshell-1: Hhq83W_mTFShoY8wCdS5vg + test-linux1804-64-shippable-qr/opt-xpcshell-2: VDyM5lIDSry3ofQUdTEhiw + test-linux1804-64-tsan-qr/opt-cppunit-1proc: O59b2c75RyWzvs3rIYLyCQ + test-linux1804-64-tsan-qr/opt-crashtest-1: aeMwYM28TkOtR34vjQAwuw + test-linux1804-64-tsan-qr/opt-crashtest-10: UuU6P0j6T42ijXK51hWmFw + test-linux1804-64-tsan-qr/opt-crashtest-11: IpedHlnHTCaYgx7fRW4NQg + test-linux1804-64-tsan-qr/opt-crashtest-12: cFgY-prnRl63GA_4ZSqbng + test-linux1804-64-tsan-qr/opt-crashtest-13: Jt4ItLpLT4SbyLEMRyY8nQ + test-linux1804-64-tsan-qr/opt-crashtest-14: c4MORfzHSLmrxNCsEZq4Qw + test-linux1804-64-tsan-qr/opt-crashtest-15: CQCwJ70gQROj7SgJf2ZDHA + test-linux1804-64-tsan-qr/opt-crashtest-16: bADvN2tGRbqGFHKxPjSaZA + test-linux1804-64-tsan-qr/opt-crashtest-17: EHi8_wrgSG206PhpZm2stA + test-linux1804-64-tsan-qr/opt-crashtest-18: KDEcwHRTRZ2o-p8EQJ525w + test-linux1804-64-tsan-qr/opt-crashtest-19: HjN379jFQhmWg4GC-l-sXw + test-linux1804-64-tsan-qr/opt-crashtest-2: B7I6W3TSRbO7JT9Vj4q6ZQ + test-linux1804-64-tsan-qr/opt-crashtest-20: dCQDqnTKRjG31YMmORbZlw + test-linux1804-64-tsan-qr/opt-crashtest-21: JpNIKawPQ9i8a7vwHN7dtA + test-linux1804-64-tsan-qr/opt-crashtest-22: GmDK0K3XQk2Hp-GM5YpbvA + test-linux1804-64-tsan-qr/opt-crashtest-23: IOlLTE52QqqMciMccsxzyw + test-linux1804-64-tsan-qr/opt-crashtest-24: JDMcUCmHQ6Wp84cckMbdkg + test-linux1804-64-tsan-qr/opt-crashtest-25: bl4EhgdISZGfGotuyqKYbw + test-linux1804-64-tsan-qr/opt-crashtest-26: MNmI56qhRhO5oQQu8-Wpjg + test-linux1804-64-tsan-qr/opt-crashtest-27: bdgVfQ8YQPO7xTPJZEWL4g + test-linux1804-64-tsan-qr/opt-crashtest-28: UFIBLidzQz2BHpQX4GXDQg + test-linux1804-64-tsan-qr/opt-crashtest-29: I3ze2RJ_S1SQ3PUmpPl1aQ + test-linux1804-64-tsan-qr/opt-crashtest-3: Bjm5id_eTvqi2CTa74cWRg + test-linux1804-64-tsan-qr/opt-crashtest-30: IRVyghjOTny5HyLGB4TjPQ + test-linux1804-64-tsan-qr/opt-crashtest-31: QUQdXiq-RaaBBrNc4VMv1g + test-linux1804-64-tsan-qr/opt-crashtest-32: Z6J1tgMdROKwmt17EhIoDw + test-linux1804-64-tsan-qr/opt-crashtest-4: drJJPQxHQoeiRWvPG8LoFw + test-linux1804-64-tsan-qr/opt-crashtest-5: UgfjS8xYRwO1gDF4F1kbIw + test-linux1804-64-tsan-qr/opt-crashtest-6: UzYxhujTSTamKEQsvcMyAg + test-linux1804-64-tsan-qr/opt-crashtest-7: Ewh30O1HTYG6L2GF1vfhBw + test-linux1804-64-tsan-qr/opt-crashtest-8: V-fx37lRRDmDq38gZlrBog + test-linux1804-64-tsan-qr/opt-crashtest-9: IPuflh2mR0S717wwGpC1Cw + test-linux1804-64-tsan-qr/opt-crashtest-swr-1: LFjWXqjJQ7SUd4KkQnSyxA + test-linux1804-64-tsan-qr/opt-crashtest-swr-10: RAbokOOVSR62bLx2xCzm6w + test-linux1804-64-tsan-qr/opt-crashtest-swr-11: OjE32F30T-iImaNErwPOXw + test-linux1804-64-tsan-qr/opt-crashtest-swr-12: PPvBesdARu-PnlQo6h1Ltg + test-linux1804-64-tsan-qr/opt-crashtest-swr-13: HsgilTdHQOKgr2wbWz2sYg + test-linux1804-64-tsan-qr/opt-crashtest-swr-14: bsJE4srnTBmxIDraDvEGbQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-15: ZeNbPC9hSiSE8cc5SwKB9w + test-linux1804-64-tsan-qr/opt-crashtest-swr-16: G-70QCZAQP2Th2JqCgM70A + test-linux1804-64-tsan-qr/opt-crashtest-swr-17: fwLFaghqSPGxJVYgkc-MOA + test-linux1804-64-tsan-qr/opt-crashtest-swr-18: FJ_u-GpsSnqRAe1d87Bilw + test-linux1804-64-tsan-qr/opt-crashtest-swr-19: YzghSYvLQae3IbtLjpE6eQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-2: UgkWoA0FTSaO-r4E03Xueg + test-linux1804-64-tsan-qr/opt-crashtest-swr-20: f3v8WKU6Rh-gqXkr1uxXBA + test-linux1804-64-tsan-qr/opt-crashtest-swr-21: awxFppGESEOCZZvQiZl5WA + test-linux1804-64-tsan-qr/opt-crashtest-swr-22: NSrSk2rXSvyE8MQMH-hjSQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-23: PGtlVvd3QKefq4anuWvf_Q + test-linux1804-64-tsan-qr/opt-crashtest-swr-24: DvPC7FBHToe24xUv0S_2SQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-25: G0hNueDyQZGd-jPoz4IgOA + test-linux1804-64-tsan-qr/opt-crashtest-swr-26: GY3q_lcKR8OjTS-x7Eyd9g + test-linux1804-64-tsan-qr/opt-crashtest-swr-27: YKD2Rxc7Qh-_nCSXSuDSqg + test-linux1804-64-tsan-qr/opt-crashtest-swr-28: bdINsHrNQa-0xBaKoeNWFw + test-linux1804-64-tsan-qr/opt-crashtest-swr-29: VfGA9b3dRoqW4gRz6eRfuA + test-linux1804-64-tsan-qr/opt-crashtest-swr-3: Gh-kaArYRmKaH5fQiQqFEQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-30: fTUsa3-nQLiUndSe3J7_bA + test-linux1804-64-tsan-qr/opt-crashtest-swr-31: cDVkbFstRiKzCaMHDJqWTg + test-linux1804-64-tsan-qr/opt-crashtest-swr-32: TlsHsrxWQaGC7sui_nSlYQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-4: UjqDeNAcQq6apJhN4PJi5A + test-linux1804-64-tsan-qr/opt-crashtest-swr-5: RyPFNt9RTF2vS0bsNTG8FQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-6: IcihUw-vT5mXpk-MsojXxg + test-linux1804-64-tsan-qr/opt-crashtest-swr-7: bXKY-BHVQdy-lbVidrasHQ + test-linux1804-64-tsan-qr/opt-crashtest-swr-8: CeFf-O2xTnOobiGPOHyA0g + test-linux1804-64-tsan-qr/opt-crashtest-swr-9: BuzMnnljS8uy2m3GDCN7TA + test-linux1804-64-tsan-qr/opt-icecat-ui-functional: Y-6dRBOEQY2NePRsjZJiHg + test-linux1804-64-tsan-qr/opt-mochitest-a11y-1proc: aB3UPhRLSk2gweLPPZrWMw + test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-1: Vc9TK2zKT-Gxk-twBl-b6w + test-linux1804-64-tsan-qr/opt-mochitest-browser-a11y-2: aL1sZURmSyS8MRUS1X-cSg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-1: CEBJS6-YREuXTp9pv1oXeg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-10: GmupOCr1T_CE5mX9CHrjvg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-11: E9SB82wyRBObwiR_J_OTyA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-12: S9eLWpyrR0ugRsKGrbYcvA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-13: OCZCPT5QQh-ewHsle38nTA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-14: fBGclqNqTCG1tf7Ff8q-FA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-15: FHoXlDJYTpehwdKeX-8OYA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-16: O_NxYFd3TACGyLU1ptX3UA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-17: LO9UFcVySEq1rx6KmYgaoQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-18: UIPIIQhJQuq8CJDBV1eXuQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-19: QTKtzdMBTP68j8k9v4Ky5A + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-2: ItkZc8m2RTCgcX2D0M0AZQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-20: Miydwhb2Rv2NdsNazeYRGw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-21: NClgBoMLQMCj9dJ7wT1Dvw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-22: Af1N7fdoSXyXCuYsWynexQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-23: GWQy4k_BQT2GLgtLw-0BvQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-24: bxIu_7loSlOwCFy8JYtxGw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-25: bMWYeAdOSomtlEV8wb2krg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-26: JUKyxpnBTXe0Y1poWa-d1Q + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-27: HogFA8F4TauuCNxjduhL-w + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-28: Y807F_GgTd6jH0h5xvoiBA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-29: BxaXfqa9TOqXwKdEvmpCZw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-3: XB0iT_DaSSmI3RIN25CFiw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-30: A3gC3Vt9QMuIdEVMZcFqxw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-31: DMDdhyfTT_-QJY10AHYqRw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-32: LJ0j8Cc5QU-ktrO-jgll1A + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-4: CVoQ9BVeSVuy5XEu6y7Kaw + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-5: XaIDfVuaQM-S9qEWeg8Gmg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-6: QTt10hVeTwOB8zt4c0ypNg + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-7: ZNrXIOcdRH2kajlQCCExNQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-8: FO1OvhpQQt-6ajB_tNnnpA + test-linux1804-64-tsan-qr/opt-mochitest-browser-chrome-swr-9: YbG6wo5nQzqsbPnFjF7PmQ + test-linux1804-64-tsan-qr/opt-mochitest-browser-media: Bu-Ic8K3RT2QIVmtksAmSg + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-1: FuwgBRiqT-q3hyxOEiNuDw + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-2: GMGXcZw4Sxq3UgnqZ5djFQ + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-3: S2VZfPdrSOKWKtbMOL4T9g + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-4: QuPN7GIaSLGDdiogXhheIw + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-5: FB7LO9TuQqSEvgAoYz-J8Q + test-linux1804-64-tsan-qr/opt-mochitest-chrome-1proc-6: MUXj0_K6QGyc-PfKA-kSjg + test-linux1804-64-tsan-qr/opt-mochitest-chrome-gpu-1proc: eVftuoH2RHu9_lpI5ifZgQ + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-1: QkliPd1rSPyEPIGwg36hbg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-10: dAsUOhUvTbCBn0ajpA-Rag + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-11: eNH57RaaSGG5uXAQN5IlCA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-12: cRlrSMPiQ3SheyaoDeiuaA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-13: R-TV48WVT6GDOB02vrQ1NA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-14: fmW8VBA2RteDIDFq1o28fA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-15: Kv16unu2QzaJ8YGunfGy7w + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-16: fBXNmY4UTV60h63VStp8Yg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-2: Q5NPl37rRJOJIdk7d4-tPg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-3: QnRdQHKoTM-lTHSmBFTuYg + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-4: TPLA5vdgT-u6isLSsvs4qQ + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-5: dt1-OVdSTeKUJZGBidRV8w + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-6: B-IyA1ZCTh-y9zcNg0nAoA + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-7: PQXKUTfYQvWUXCuPU1m3Hw + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-8: RLiYQ_zjQ7WJ3vZ54goSPw + test-linux1804-64-tsan-qr/opt-mochitest-devtools-chrome-9: cpja0lC_Tq242ovQS6bqhg + test-linux1804-64-tsan-qr/opt-mochitest-plain-1: WoitlyRVT3GgxScLocFghQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-10: H0J1mtyJSJWg5w1QB2922w + test-linux1804-64-tsan-qr/opt-mochitest-plain-11: Ds8zhJh2TXqzgi73X1MHug + test-linux1804-64-tsan-qr/opt-mochitest-plain-12: cTZbhDaKSpeA6uHEK4_YtA + test-linux1804-64-tsan-qr/opt-mochitest-plain-13: Jukk4U6BQ2SN0sOmkN9dDw + test-linux1804-64-tsan-qr/opt-mochitest-plain-14: YcRuvxtgRB2t3_rlo6KTGA + test-linux1804-64-tsan-qr/opt-mochitest-plain-15: O4u9uW-oS4WHG3U34avZPQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-16: f3IRJSBkR3WwYqgoVrFKAg + test-linux1804-64-tsan-qr/opt-mochitest-plain-17: NQx59fl9TzqI20lgsTVU5w + test-linux1804-64-tsan-qr/opt-mochitest-plain-18: WhH0QPaASVawPvZAQgp-mg + test-linux1804-64-tsan-qr/opt-mochitest-plain-19: av8jegFOTOSC2LesTgTmrw + test-linux1804-64-tsan-qr/opt-mochitest-plain-2: F6HBZWytR0aEKbV5Efn0gw + test-linux1804-64-tsan-qr/opt-mochitest-plain-20: BkSK7c9lSy6HGvKRB7-ctA + test-linux1804-64-tsan-qr/opt-mochitest-plain-3: HlGPYtFdTSa2sjgr5BsYNw + test-linux1804-64-tsan-qr/opt-mochitest-plain-4: O6G5FWQXQBWggPT_9CdnUQ + test-linux1804-64-tsan-qr/opt-mochitest-plain-5: PO6lISa7TG2ALOf4qzU6Tw + test-linux1804-64-tsan-qr/opt-mochitest-plain-6: XNHgxQ6mQ36naWDNuSAE5w + test-linux1804-64-tsan-qr/opt-mochitest-plain-7: bl8NNu5JShOaRfSkjtCBmg + test-linux1804-64-tsan-qr/opt-mochitest-plain-8: PcxsA20pTJesBl2xLLbItA + test-linux1804-64-tsan-qr/opt-mochitest-plain-9: YzBBAe0HSkuSfGaJd_rVJg + test-linux1804-64-tsan-qr/opt-mochitest-plain-gpu: ZqxLQ2D8QrqERXhmQw0j6w + test-linux1804-64-tsan-qr/opt-mochitest-remote: dxoIB151T1CIPexhdMZDQg + test-linux1804-64-tsan-qr/opt-reftest-1: apy9Xf4uQhWz313Y_Cd01A + test-linux1804-64-tsan-qr/opt-reftest-10: CGVT3Q_tQvOEAKGMywiXPg + test-linux1804-64-tsan-qr/opt-reftest-11: NsofnNCaRJmqMUjBSxGOpw + test-linux1804-64-tsan-qr/opt-reftest-12: Cj-BP1NATKGXlUQXgVFIEw + test-linux1804-64-tsan-qr/opt-reftest-13: eK_bWNwMTWKR5pLPvpDKKA + test-linux1804-64-tsan-qr/opt-reftest-14: XMZHuWajSU-9skZzymGnvw + test-linux1804-64-tsan-qr/opt-reftest-15: Dn3sEXnJRfSBYD0TyJe9Ww + test-linux1804-64-tsan-qr/opt-reftest-16: be7VMbUGTBeKEy2SRphaXg + test-linux1804-64-tsan-qr/opt-reftest-17: XAEfhMxYQL2h0pzgqrsn8Q + test-linux1804-64-tsan-qr/opt-reftest-18: W7vWDyggQ8KxaQtiPPRL6Q + test-linux1804-64-tsan-qr/opt-reftest-19: MwMs8eP-R7SdVvfPaJOWiQ + test-linux1804-64-tsan-qr/opt-reftest-2: Eizd0rA1QxyKIH5cvjkSUA + test-linux1804-64-tsan-qr/opt-reftest-20: QDn1xcfHTlansWkvbVjSSg + test-linux1804-64-tsan-qr/opt-reftest-21: PvoYi4MET3CoR6oLQjjbvw + test-linux1804-64-tsan-qr/opt-reftest-22: CetindFGTtCGhLqPU-c_2A + test-linux1804-64-tsan-qr/opt-reftest-23: a2PycrGKQZKMrnkW6A86Jg + test-linux1804-64-tsan-qr/opt-reftest-24: B8r0eG5eTK-wJUz3Bsg7Tw + test-linux1804-64-tsan-qr/opt-reftest-25: YCz3nhxiTsyve0dd_BQW0Q + test-linux1804-64-tsan-qr/opt-reftest-26: ZQn8NhiXR3KVKeTwtWGg4g + test-linux1804-64-tsan-qr/opt-reftest-27: fRwmix16Toqt3wef4x8jKA + test-linux1804-64-tsan-qr/opt-reftest-28: XOHpo_buTNmuENICO4qynA + test-linux1804-64-tsan-qr/opt-reftest-29: ZOma35ccTSmY6_a81YnHrA + test-linux1804-64-tsan-qr/opt-reftest-3: bt8YwkSpRv-QQfk8WlYiiA + test-linux1804-64-tsan-qr/opt-reftest-30: XaedyYVwSZ6MSE8yoWtRww + test-linux1804-64-tsan-qr/opt-reftest-31: KZTKinoHTLa67arCI64mHQ + test-linux1804-64-tsan-qr/opt-reftest-32: ZtSHPx19Q2W5p8Q2h0rNOQ + test-linux1804-64-tsan-qr/opt-reftest-4: PEYwPUnmSn-rbdLLvqV8qw + test-linux1804-64-tsan-qr/opt-reftest-5: Mq17GDksTnOOf-qfS9FH8w + test-linux1804-64-tsan-qr/opt-reftest-6: Hr3qoYfDQq-tISokAUNGrw + test-linux1804-64-tsan-qr/opt-reftest-7: fDupYs3VRruHdL20As_HVA + test-linux1804-64-tsan-qr/opt-reftest-8: LfqDidutT82b2jtb43mBWw + test-linux1804-64-tsan-qr/opt-reftest-9: eFip0ztlQQ-WXe-hOjIg1g + test-linux1804-64-tsan-qr/opt-reftest-swr-1: OuSrKpR7RWGov-4j89tC5g + test-linux1804-64-tsan-qr/opt-reftest-swr-10: eU0AStz8T4yKTc8MgB3gMw + test-linux1804-64-tsan-qr/opt-reftest-swr-11: UWEigh22S5mHN6T0SLXBsA + test-linux1804-64-tsan-qr/opt-reftest-swr-12: E5TmmNx3S-Oxtlxab1ZThw + test-linux1804-64-tsan-qr/opt-reftest-swr-13: EZvJ23oiQdqpTDXrGalLtg + test-linux1804-64-tsan-qr/opt-reftest-swr-14: UocCOvtxTh6dsFUMVnx2Hg + test-linux1804-64-tsan-qr/opt-reftest-swr-15: bVLVYI3bR5m1v8ntDl3-Fg + test-linux1804-64-tsan-qr/opt-reftest-swr-16: QZMpW9veSK2KiMKpHUOTig + test-linux1804-64-tsan-qr/opt-reftest-swr-17: c6Q4EcIkRZGjTs3RpCS26Q + test-linux1804-64-tsan-qr/opt-reftest-swr-18: QkSfBSdwQnS9zY6bhzxLwA + test-linux1804-64-tsan-qr/opt-reftest-swr-19: CL0c2fS1QjGVwGhJY1gxpQ + test-linux1804-64-tsan-qr/opt-reftest-swr-2: GVw5tfN9QdW-szR8ck9JIA + test-linux1804-64-tsan-qr/opt-reftest-swr-20: NhaNgFXfSKiNULCvCY-2zQ + test-linux1804-64-tsan-qr/opt-reftest-swr-21: W5QmCVDEQbOwX9b3D2QDrg + test-linux1804-64-tsan-qr/opt-reftest-swr-22: XSmMQ3MhQJm4P-eQgDHAiw + test-linux1804-64-tsan-qr/opt-reftest-swr-23: YHRTboerRHSw18O3-Ao_-w + test-linux1804-64-tsan-qr/opt-reftest-swr-24: HyW4bsl8QWOoSpTupOBPZg + test-linux1804-64-tsan-qr/opt-reftest-swr-25: FaqhoZ2kQoynEsVtLCXy2g + test-linux1804-64-tsan-qr/opt-reftest-swr-26: XPrBYplhTP-liXEhs-IaMA + test-linux1804-64-tsan-qr/opt-reftest-swr-27: eG5ni7wWT1Sab8ncsRQrAA + test-linux1804-64-tsan-qr/opt-reftest-swr-28: a8wc-n1sRquiipKtj9bYHg + test-linux1804-64-tsan-qr/opt-reftest-swr-29: DGZNxBoCTiyuoSteAIcJOg + test-linux1804-64-tsan-qr/opt-reftest-swr-3: SHQOl5oZR5qYGSUgWyRQtA + test-linux1804-64-tsan-qr/opt-reftest-swr-30: ILlUx29_R5qU4K20WoYH8w + test-linux1804-64-tsan-qr/opt-reftest-swr-31: JLXe8ypnQBS975kREE-0pw + test-linux1804-64-tsan-qr/opt-reftest-swr-32: H-DFb3cDSXGV5yT08og93g + test-linux1804-64-tsan-qr/opt-reftest-swr-4: bVhygEU5QhC6yjwztvenqg + test-linux1804-64-tsan-qr/opt-reftest-swr-5: Oq2xTu4QTWaPRbaMebUkJw + test-linux1804-64-tsan-qr/opt-reftest-swr-6: VnRD8SVWSv6DA24cgsLm4A + test-linux1804-64-tsan-qr/opt-reftest-swr-7: InJXH9YuSmOdFD1JirRlEQ + test-linux1804-64-tsan-qr/opt-reftest-swr-8: U_M7upTjS1iluaPeVHXFNg + test-linux1804-64-tsan-qr/opt-reftest-swr-9: GZqy31FmQv696-wSj-TI2Q + test-linux1804-64-tsan-qr/opt-telemetry-tests-client: SsLTR8NhR4iaWLKTBfEFlQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-1: QwxzGVpwTV6huxhSatLsHQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-10: LDXe0Z5SSlq--CKEj3ZmHg + test-linux1804-64-tsan-qr/opt-web-platform-tests-11: LyPW3JmPRqady6vyhzKWJA + test-linux1804-64-tsan-qr/opt-web-platform-tests-12: GNQ_yIGuTdebELp13bBTNA + test-linux1804-64-tsan-qr/opt-web-platform-tests-13: POU22p0kToKaL_WvmT410w + test-linux1804-64-tsan-qr/opt-web-platform-tests-14: ZEKgE-CATSORjAGYo6foTg + test-linux1804-64-tsan-qr/opt-web-platform-tests-15: LjXif5ptRGexX06GdKaxCw + test-linux1804-64-tsan-qr/opt-web-platform-tests-16: AEM4tOtoTpeGQ5_iiXT35g + test-linux1804-64-tsan-qr/opt-web-platform-tests-17: EE_LRefTQL21b37HIxU7kQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-18: O8e-KV76TNSAiLRMlpjWEQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-19: GvK7wQNSTq2H0O8KnxI2_A + test-linux1804-64-tsan-qr/opt-web-platform-tests-2: PeqqbhU9TTumrWU5pu7uTA + test-linux1804-64-tsan-qr/opt-web-platform-tests-20: d8geRmRsRCW8dmADq1IaZQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-21: BFFbgQfmQfC0G6bzitls4g + test-linux1804-64-tsan-qr/opt-web-platform-tests-22: NjZd5QdJS52-v5Jf63hoqQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-23: WdavIMKSSc6rmdP7feCbQA + test-linux1804-64-tsan-qr/opt-web-platform-tests-24: FmBMuRa9R76yvOjdBksiqw + test-linux1804-64-tsan-qr/opt-web-platform-tests-25: GUEO6oj_RV2tZS3i1XORuA + test-linux1804-64-tsan-qr/opt-web-platform-tests-26: cFkPyWw3QEOP5Qcsuo9j6A + test-linux1804-64-tsan-qr/opt-web-platform-tests-27: HMFbgBEgTQay0tXXxdc1SA + test-linux1804-64-tsan-qr/opt-web-platform-tests-28: Im1buX5GRxKzFq1CXCZNCg + test-linux1804-64-tsan-qr/opt-web-platform-tests-29: Q6ibgfuRTwGCbWe4x-DiOQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-3: eZUXrJ7jSfimCXdK6pLd6g + test-linux1804-64-tsan-qr/opt-web-platform-tests-30: Tm6NlzybQrCtmPXIkknt2Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-31: NvjctxrjQ5ON_fFPRcWtmA + test-linux1804-64-tsan-qr/opt-web-platform-tests-32: CnyAat36QDKYsf54jvZc_w + test-linux1804-64-tsan-qr/opt-web-platform-tests-4: dEyX6AJSSKe96C2417wjHg + test-linux1804-64-tsan-qr/opt-web-platform-tests-5: Gxpz0OaGTEuAm1S8v3AUQQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-6: Gw5e8cnYRLGTi-Kms8SbDQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-7: Uc55jHt4TUqGZFAGJZGdVg + test-linux1804-64-tsan-qr/opt-web-platform-tests-8: Y77XcfRuSxyhpF1-fgA8UQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-9: EvAaBEEMQly5KMxmsS1Dcg + test-linux1804-64-tsan-qr/opt-web-platform-tests-crashtest: Hy7pfNU1TyWlFT5UFjrWlA + test-linux1804-64-tsan-qr/opt-web-platform-tests-print-reftest: NYf2uPReQDuY4RGuD5mj5Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-1: AmRCJyn5SSu4MKtO_19pFw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-10: KP41sYkwRVyBHutcSvEHww + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-11: R6wwip0xSkqX-37IrUT0Uw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-12: ZmPPYUqJTAa-XxLTYyy_3g + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-13: S1T-XcrbS4WFgZeE93ZDxQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-14: QSyyzkf7Qr-dxDjFww3c4g + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-15: OufQ_HiiRuKfSmx6CoHumw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-16: NfFupmnUR2Wnr_RRu8yE8w + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-2: Dm3lNJGSTt6wd4HMSU9bdA + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-3: FegDmHZGT9iDZyIwIxfF6A + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-4: KHzE8g6eRbyxwC58xXyTtw + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-5: cTTWAAhORm-YnklsglrXfQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-6: H-LGQeA4SqSZDZqspMDe1A + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-7: MEvytbiuTpKGpyOlm6Y1XA + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-8: AlRhLSuVRNOdJ8FB6kYE6Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-reftest-9: SwhhsRbhStCeZxSyOVD87w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-1: b3pdT_0XQ4-2mSlZhr9Ccg + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-2: BbxIwbGaQqa0hQbJoX6G8g + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-3: K_slGXPIQ0W9CF3leyxbxA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-4: Kzd9cDraRnijMtCHcfUnuA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-5: ONvedRvlS4awPR_OpVIw8w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-6: EtOy5ABgQSuHTL3J-mvY-w + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-7: VhnxWYJ-QieNtzbdql2LAA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-8: ATNObfl3QiCX1ItN7fwSpg + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-1: PmBwZBthTp-KRHOzj9AiwQ + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-2: apSV_TSoREiqhYuLf22huw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-3: VltVOFGzQACdSQwROWqpKA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-4: ThH3F1crSaW5xxRrVkQa_Q + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-5: XJwQx9XwRLuO_M0QMv_nPw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-6: GARa4O0SSU6ZLrD-LpfNVw + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-7: L9klzU7-RgOGGX99-JHtKA + test-linux1804-64-tsan-qr/opt-web-platform-tests-wdspec-headless-8: JmoC-2MHRLWfM50TCQknGA + test-linux1804-64-tsan-qr/opt-xpcshell-1: PX_BtE6GRkOHk4IPBxi8VA + test-linux1804-64-tsan-qr/opt-xpcshell-2: LqFx-4AGTwuQxAWd9sy7UA + test-linux1804-64-tsan-qr/opt-xpcshell-3: dp6NyDhZSEKANMRM445BHA + test-linux1804-64-tsan-qr/opt-xpcshell-4: MBAGxK4HRL--Sk5DtFWaPQ + test-linux1804-64-tsan-qr/opt-xpcshell-5: eqKAZfhjTsGM1yy4O6f2fw + test-linux1804-64-tsan-qr/opt-xpcshell-6: TJO6dnizQ-CKAScb3mGzdg + test-linux1804-64-tsan-qr/opt-xpcshell-7: AUqoxX6XRESNgoIu5dtUEw + test-linux1804-64-tsan-qr/opt-xpcshell-8: chBCzCGuQoS9ngKkB25ogA + test-macosx1015-64-qr/debug-cppunit-1proc: cathZtSHQDeNSo8XbRLGIw + test-macosx1015-64-qr/debug-crashtest: Yf2uI8k5TZqFfczxQp-_zQ + test-macosx1015-64-qr/debug-crashtest-swr: PwN8LfjBQIiferiA0PPWlA + test-macosx1015-64-qr/debug-icecat-ui-functional: BjCz0IoFT_uppliyo5ejAQ + test-macosx1015-64-qr/debug-gtest-1proc: CFB2Z5BsRbakMoKRbL052Q + test-macosx1015-64-qr/debug-marionette: FAzQP_b5RwCYzIARrKDYqg + test-macosx1015-64-qr/debug-marionette-swr: Gd21A-FHR3uqU1zvtpvbbw + test-macosx1015-64-qr/debug-mochitest-a11y-1proc: UBaSEbn-Soq9M0IB5HM_Qg + test-macosx1015-64-qr/debug-mochitest-browser-a11y: S3gt8dLxQKqCsNLn6GO3KQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-1: e3AUtgFxTV-RJm0MAbrAEQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-2: AVJJFjlIQK-jUcPmi1JBWQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-3: OWcv4HZiQ1iNn5Zvc5hziw + test-macosx1015-64-qr/debug-mochitest-browser-chrome-4: fs6PWnm9QryKwoxj092cMg + test-macosx1015-64-qr/debug-mochitest-browser-chrome-5: cvSxbXAzQRmjD2Gs5uT1og + test-macosx1015-64-qr/debug-mochitest-browser-chrome-6: CFFja-NQTOez6H7vDjlMfQ + test-macosx1015-64-qr/debug-mochitest-browser-chrome-7: Uns2HGRpReGjFR8GSvNktQ + test-macosx1015-64-qr/debug-mochitest-browser-media: X1wefVS7RTmj964pkC4icQ + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-1: PKBI5STWSU-Y1Y-dcaTY3A + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-2: YoQXqXaPQjq2zgsgf5BM2w + test-macosx1015-64-qr/debug-mochitest-chrome-1proc-3: Vx7YNdgCSBW-wcOQK8jx5g + test-macosx1015-64-qr/debug-mochitest-chrome-gpu-1proc: SqLjV6fSQiahtY4PfaQzug + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-1: CeyYJWAXQLO2a3u_62D7XQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-2: I2qDV70hSSemYup0UD6ZHg + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-3: IUkXnbDrRlmsxt2bNfZBHg + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-4: TMI3Tyg6S_SuWmM1srcWUQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-5: Jhhe61SnQIic_mkN2aOP-A + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-6: IlVXSRCrSBqlCB-LMp1o9A + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-7: cIOtjI92TBKjnhbAq4XdxQ + test-macosx1015-64-qr/debug-mochitest-devtools-chrome-8: fWLvg4NcS06VZ_KHTQ_bmQ + test-macosx1015-64-qr/debug-mochitest-media-1: WjoWFbjYTTCaJsOKvXaF4Q + test-macosx1015-64-qr/debug-mochitest-media-2: UtElOglzQoqSmSbTVDaNFw + test-macosx1015-64-qr/debug-mochitest-media-spi-1: URLWsLTMR1SDEdcLE_YZpQ + test-macosx1015-64-qr/debug-mochitest-media-spi-2: DGhKQmhiRImhsLMMzWcx2w + test-macosx1015-64-qr/debug-mochitest-plain-1: GVij-SftRgmEhE58_7a00Q + test-macosx1015-64-qr/debug-mochitest-plain-2: X56RF5VtQTaB_NetpZNZrw + test-macosx1015-64-qr/debug-mochitest-plain-3: acKqvIO8QduVzSCZoCuDrw + test-macosx1015-64-qr/debug-mochitest-plain-4: MSADRKmnQ2eHiKn3ZMy58w + test-macosx1015-64-qr/debug-mochitest-plain-5: BAFYn8FuRGGNa4XDDKIbXQ + test-macosx1015-64-qr/debug-mochitest-plain-gpu: SPuVzGPZQXS14RQvi_nJ0g + test-macosx1015-64-qr/debug-mochitest-remote: CxDo23VJQDOlCdFmI-R4pA + test-macosx1015-64-qr/debug-mochitest-webgl1-core: R4mV7CDqRrGl3vK7bI0WtA + test-macosx1015-64-qr/debug-mochitest-webgl1-ext: ZToIFK4mT8m_fWv5fQVIBw + test-macosx1015-64-qr/debug-mochitest-webgl2-core: IuCo2NETScGBRq1gBUBSug + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-1: amyj2GbIRFOaWocSRd5nJA + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-2: Uz54S4NpQ6ef9cBng1Davw + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-3: Xh0doBKhTgmAe4x-WYM68A + test-macosx1015-64-qr/debug-mochitest-webgl2-ext-4: NAgF-XHvSQGaNfkZJk_BMg + test-macosx1015-64-qr/debug-reftest-1: TaiRJlXpQSypq7rJu_znOA + test-macosx1015-64-qr/debug-reftest-2: J7kMyZFvThudBwbsC_5vUQ + test-macosx1015-64-qr/debug-reftest-3: VlrlTJcaQJCnYMydsgH5Xg + test-macosx1015-64-qr/debug-reftest-4: edktZ-zeQvqzYAJg-9BRSw + test-macosx1015-64-qr/debug-reftest-5: c0FQ8v0rTEe9onTeCQCfVA + test-macosx1015-64-qr/debug-reftest-6: bx9LwBk1T5izHFpDuftlaw + test-macosx1015-64-qr/debug-reftest-swr-1: fJ-2wECaRAKu2cKVVc22sQ + test-macosx1015-64-qr/debug-reftest-swr-2: fmzEDOV_SSCrZqTm9mzvhg + test-macosx1015-64-qr/debug-reftest-swr-3: cTX9_TykSz-fbQrlUooAfA + test-macosx1015-64-qr/debug-reftest-swr-4: bSyHQShJQoacWcMkLgGkMw + test-macosx1015-64-qr/debug-reftest-swr-5: NWw1VjYqT0GebiS-mcDVBQ + test-macosx1015-64-qr/debug-reftest-swr-6: L66twFr5QPOsT0Ttt5Gr1A + test-macosx1015-64-qr/debug-telemetry-tests-client: e6WE3XdQRCe4d6ObAbAEcQ + test-macosx1015-64-qr/debug-web-platform-tests-1: TGGs4sMZTwiuYYm_5kBy4w + test-macosx1015-64-qr/debug-web-platform-tests-10: HB9dP-gSQy-9X-Bu2Cn56g + test-macosx1015-64-qr/debug-web-platform-tests-11: F1S5fmiLS926wuI8k7lAgg + test-macosx1015-64-qr/debug-web-platform-tests-12: G0TxgFNhSPigi7xKcnGdvg + test-macosx1015-64-qr/debug-web-platform-tests-13: FyPHga6ISoGCfVFNzOu5Ng + test-macosx1015-64-qr/debug-web-platform-tests-14: FN_NMv1ZRC-gg2Jq83ivOg + test-macosx1015-64-qr/debug-web-platform-tests-15: HpZOfcmOT8WvWBxnFDlBdA + test-macosx1015-64-qr/debug-web-platform-tests-16: WvieOW2IRha09bDifvBWoQ + test-macosx1015-64-qr/debug-web-platform-tests-17: MIUf7W3HQ72E12INfEfZ6A + test-macosx1015-64-qr/debug-web-platform-tests-18: TABkyLEcTKeUPkl3LzJvvw + test-macosx1015-64-qr/debug-web-platform-tests-2: B-yNenKUR8yErOoDBdyDBg + test-macosx1015-64-qr/debug-web-platform-tests-3: VZ3BWRHFTuexuKR4zMhbOQ + test-macosx1015-64-qr/debug-web-platform-tests-4: SdfKfDVlSqiaN4PTx-jl5g + test-macosx1015-64-qr/debug-web-platform-tests-5: R5hgONTbSLCR2kDI-E5iyg + test-macosx1015-64-qr/debug-web-platform-tests-6: EpdHa7NVT9W1HETLR2tb2g + test-macosx1015-64-qr/debug-web-platform-tests-7: aF7nVmTtQWCE5d1mPmc55A + test-macosx1015-64-qr/debug-web-platform-tests-8: K9kziwI_TSWl3JhYn11anw + test-macosx1015-64-qr/debug-web-platform-tests-9: PzYAoZQ7RGW2nUQ21I29cg + test-macosx1015-64-qr/debug-web-platform-tests-crashtest: HNd-Om_RQ_iXJSgL6xw75w + test-macosx1015-64-qr/debug-web-platform-tests-crashtest-swr: AGDbTyRwRoq22cqYyjWDVQ + test-macosx1015-64-qr/debug-web-platform-tests-print-reftest: AVIJXxlgTcqKsC4RB3TF8Q + test-macosx1015-64-qr/debug-web-platform-tests-reftest-1: F2g6XW2AQmK2f3n0cTzB0Q + test-macosx1015-64-qr/debug-web-platform-tests-reftest-2: brnRWhSKT82gPVjfky280g + test-macosx1015-64-qr/debug-web-platform-tests-reftest-3: RuzHWeykSpe02Lbpc7Q39A + test-macosx1015-64-qr/debug-web-platform-tests-reftest-4: TMhYO1MIQx-RVfBIMCo8Cw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-1: DPhQvdd0SUeMlHF2XuVsGA + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-2: EBKHGziyR-2r8pvZP0pvvw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-3: ELeuP06nQVKYWZZcujrERg + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-1: PSUO28KEQhi5fuxwxYlV7w + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-2: Scvzh_KqTFa1810k3soBLw + test-macosx1015-64-qr/debug-web-platform-tests-wdspec-headless-3: IbV-cq4fS0GzmEnTRq2IRw + test-macosx1015-64-qr/debug-xpcshell-1: SYq8xSADSD2rchOE1wxyYA + test-macosx1015-64-qr/debug-xpcshell-2: bxz6HwovRsauydAeczCRrA + test-macosx1015-64-shippable-qr/opt-cppunit-1proc: B6HInIseTNKgSdZ2Ps1LVg + test-macosx1015-64-shippable-qr/opt-crashtest: CiYTbP30Sj2JJmnvPrUx3w + test-macosx1015-64-shippable-qr/opt-icecat-ui-functional: V80wgUlvT4uF1HpyQD26Rg + test-macosx1015-64-shippable-qr/opt-gtest-1proc: fX_Kkq_3SmeqJxNJtDoFjw + test-macosx1015-64-shippable-qr/opt-marionette: BBCnVoOYSQO9p1oA4_lPog + test-macosx1015-64-shippable-qr/opt-mochitest-a11y-1proc: fvA9Y3LhTY6wk9Hq0OMloA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-a11y: d2L9aroLQdauWDyzli_zaA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-1: fcssjF4dTCab6AtDxnDgFg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-2: cukdc3ejS7mPEUMuf8VJLA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-3: VWcPNKOtSSmSIHze1SV6Yw + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-4: YtdQcHnbROuWyAzh8Ofzxg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-5: H6BEVYkvSDOj-G83zNOVXg + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-6: HrhJ-9X2RmmzLuAjFntKUA + test-macosx1015-64-shippable-qr/opt-mochitest-browser-chrome-7: GWx3n2_HQc2EdJxFRVyUDw + test-macosx1015-64-shippable-qr/opt-mochitest-browser-media: Po31MBi1SZWjD8qZqabDGQ + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-1: BGoKI1RrQqycLAUFbXET_A + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-2: PrLapc3uSEOCvTu4dwtWIw + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-1proc-3: O7S4OVLXRviYa3RETqm2_A + test-macosx1015-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: X9DSgfuZQSu3Y8RIOKucQQ + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-1: ETL8M6HDQ7q8zINqSStWnA + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-2: ChnATJAORvW-aQyIKjdVVg + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-3: dGHf8WYlRPGkw5qXEfwIsw + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-4: IXKKUa7CRUC9R7MjedpGPw + test-macosx1015-64-shippable-qr/opt-mochitest-devtools-chrome-5: L2ciCGt4RYKURmmQoOnQwQ + test-macosx1015-64-shippable-qr/opt-mochitest-media: HSwMaYylTuCMoz4C2-jn_A + test-macosx1015-64-shippable-qr/opt-mochitest-media-spi: MMj-KffaSkOpM-U2DtFqJg + test-macosx1015-64-shippable-qr/opt-mochitest-plain-1: N-uLoWChRiuy5TvMc4laVQ + test-macosx1015-64-shippable-qr/opt-mochitest-plain-2: EtwfmoclT5StJHHq4Tag-Q + test-macosx1015-64-shippable-qr/opt-mochitest-plain-3: Uts9_F9GTxCUgKQlV9e92A + test-macosx1015-64-shippable-qr/opt-mochitest-plain-4: CjWjn5yLR5mzYwhJt2GWqQ + test-macosx1015-64-shippable-qr/opt-mochitest-plain-5: fXNT0YMsSMi2CPzcqM50xw + test-macosx1015-64-shippable-qr/opt-mochitest-plain-gpu: Qux5G90kSV6FEk5cdf32XQ + test-macosx1015-64-shippable-qr/opt-mochitest-remote: GlsnJljyR8i0U6TcHgDCdg + test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-core: bHaAcyVFRq-UAbQ0Q7MCVQ + test-macosx1015-64-shippable-qr/opt-mochitest-webgl1-ext: Z5F4ybaGR-ewrQ68vU2OBg + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-core: XJAkIB2oQ0WfKltt5kMNtA + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-1: Stw0EMTDQjORYcl95w5iFA + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-2: Ci0T8wwLRlavNp26tdi98w + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-3: GUl-Zty5S0Kk6Q-2L89M1w + test-macosx1015-64-shippable-qr/opt-mochitest-webgl2-ext-4: Sy9OetNjTzKn1ZAmjNtYig + test-macosx1015-64-shippable-qr/opt-reftest-1: II-3__SZREqh8_OxLVWZQg + test-macosx1015-64-shippable-qr/opt-reftest-2: ZlkGyUa3TGWay4YTloi7gg + test-macosx1015-64-shippable-qr/opt-reftest-3: YO8MeZUPTu27_t4rSq5T8g + test-macosx1015-64-shippable-qr/opt-telemetry-tests-client: V3h2Vj7gS0qsgZTyFKVQnw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-1: RzOPB6m6RkqAtjYy0gRGZA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-10: ELlwRF82R2SoWk4V29jXoA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-2: Oa1WXdFnRXWbX4X_71relg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-3: THbyBieOSb2a0MEJdIuU4g + test-macosx1015-64-shippable-qr/opt-web-platform-tests-4: W-OsdRpOQNWwzuEbBj5dTQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-5: ScNWSsJ5Q12FPlAZrd5r3w + test-macosx1015-64-shippable-qr/opt-web-platform-tests-6: bNvgKWTvTj-tChbOBCp8IA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-7: Nczz4we6SoujbQeYIUhNQA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-8: Snd9SONXQHmp4XtPMGxbxw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-9: YbQVrreOSHmhWrW0LjlvVw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-crashtest: evh0KEyDQ4ShtpjGOppiTA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-print-reftest: UYPVlpzDRcWB0DIYv4DN2g + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-1: TLe6HWe5RtqGPZ8xtQ_xkg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-2: FveZUU2nTLK-K0DyMb1rwQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-3: a3B-mqkDSMKmT4XrpcGcRA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-reftest-4: SPXxCqLNS8mU3g0djJkhLA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-1: VUTflE8mTeeG9kMETFtJVg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-2: FjDo4jUrSlWi_WZ_geKyKQ + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-3: Xrg2uUEqSFqr4yaezMsNNw + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-1: KGiIMAgKSUGIcucB2t1Jxg + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-2: Lcdpsu85TXixuhrnOUWNtA + test-macosx1015-64-shippable-qr/opt-web-platform-tests-wdspec-headless-3: OJhUzTA4TF2ocrrUfqKkdg + test-macosx1015-64-shippable-qr/opt-xpcshell-1: cM0mkZkrTeuwBvxAThio7g + test-macosx1015-64-shippable-qr/opt-xpcshell-2: BfTrFr7OR2eAv_DKXJV8_w + test-macosx1100-64-shippable-qr/opt-crashtest: ARTj1FdvSOaFUUjgF18dUA + test-macosx1100-64-shippable-qr/opt-mochitest-browser-a11y: Rr8TwjR4ShmTCGutRPUyPw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-1: YHnCOnrpQZCIax0-0p-xNw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-2: ZME3148ET5efwqKAYwDVHw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-3: GgddI3hQSg6EdYeebR4pXQ + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-4: YuhYTeCNT6GSRdtGgBRj8A + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-5: NgGjgrtGT1um1wS-uHhOhQ + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-6: Hx_R9GXtSp-jx-mTRMluKw + test-macosx1100-64-shippable-qr/opt-mochitest-browser-chrome-7: Sy7qFbLXQEytj3XDk0_cTA + test-macosx1100-64-shippable-qr/opt-mochitest-browser-media: UHvQ8ZaCR7OMH0YOZgOTEw + test-macosx1100-64-shippable-qr/opt-mochitest-chrome-gpu-1proc: YGVXBYmERCCgHNfApPvzaA + test-macosx1100-64-shippable-qr/opt-mochitest-media: Df1yxGFgTPyrfQGD70j9Nw + test-macosx1100-64-shippable-qr/opt-mochitest-media-spi: fbo1dweSQ86WM5LRSDcXCA + test-macosx1100-64-shippable-qr/opt-mochitest-webgl1-core: GieYjRI2QreokrNl1h-JNA + test-macosx1100-64-shippable-qr/opt-mochitest-webgl1-ext: N9cqasAKTRegSl258wyY5g + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-core: ObozWp0KTruwuLCvvy7sOQ + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-1: LPoAG8N1RreYCIy2HUngIQ + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-2: TzG7bl9ES0G-1_5ulSkwCg + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-3: Z7BpSKAFR3mJ0Dt7E1KU2g + test-macosx1100-64-shippable-qr/opt-mochitest-webgl2-ext-4: KanjidoFQvmtcLLi8Y-Lfw + test-macosx1100-64-shippable-qr/opt-reftest-1: E9uXzFYcQteNMshmYFnwLA + test-macosx1100-64-shippable-qr/opt-reftest-2: eAFCODveRgCpn6To9U0QtA + test-macosx1100-64-shippable-qr/opt-reftest-3: ON8d1OUoR2GJiNqUwvtRSQ + test-macosx1100-64-shippable-qr/opt-reftest-4: QeA5DWq-Slq4OYli5VEOVA + test-macosx1100-64-shippable-qr/opt-reftest-5: KPxr6XOsQ-q27YxMiCBtsw + test-macosx1100-64-shippable-qr/opt-reftest-6: biPfFGVeQ-uXum3jRCWnjA + test-macosx1100-64-shippable-qr/opt-reftest-7: A_43jc3sRV-QcfJc5hMINw + test-macosx1100-64-shippable-qr/opt-reftest-8: WeecU9gyRIGpuMPTtObGvw + test-macosx1100-64-shippable-qr/opt-xpcshell-1: VaYy4OevTRyQQaxTMvXXYQ + test-macosx1100-64-shippable-qr/opt-xpcshell-2: cMSZ3oiRRCymjyr3W4FSSQ + test-windows10-64-2009-qr/debug-cppunit-1proc: Hp2qb8W-TcWcxVQZoWCENA + test-windows10-64-2009-qr/debug-gtest-1proc: IOOc_KfNTB2_ellUOvv4Hw + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-1: cYIMSwmAQliewCyZsxAMPA + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-2: EmPX9aLoSSCExfhmAXbacA + test-windows10-64-2009-qr/debug-mochitest-chrome-1proc-3: MHIZN5TBQgK5MCsVIspS5g + test-windows10-64-2009-qr/debug-mochitest-chrome-gpu-1proc: JjNWzFC4QJadiesp9jSS7w + test-windows10-64-2009-qr/debug-mochitest-plain-1: XyCQPg8DQMiWG1WH-F_YPA + test-windows10-64-2009-qr/debug-mochitest-plain-2: ZPiFCs3oTgqAT5y6UIaMiQ + test-windows10-64-2009-qr/debug-mochitest-plain-3: OjzHfaUOSVuYVs11uf431Q + test-windows10-64-2009-qr/debug-mochitest-plain-4: Wh8fSsPnT8O4SJZO5G2b6A + test-windows10-64-2009-qr/debug-mochitest-plain-5: JWjnmf0ERCecV6S96c9PPQ + test-windows10-64-2009-qr/debug-mochitest-plain-gpu: TMHKJ_7hRcakUK1sDGLHaw + test-windows10-64-2009-qr/debug-xpcshell-1: PCORmn1WSTivUxy2W0UUPg + test-windows10-64-2009-qr/debug-xpcshell-2: G6MH1WdkTvO7ZIP9DlLcBA + test-windows10-64-2009-qr/debug-xpcshell-3: eB-4yFTJQxqQbajrMQOInQ + test-windows10-64-2009-qr/debug-xpcshell-4: Ab2hXB66Tkyd8NSdmV1K-w + test-windows10-64-2009-shippable-qr/opt-cppunit-1proc: HQOND5ILS4CwO0lxPbsraQ + test-windows10-64-2009-shippable-qr/opt-gtest-1proc: Eb8LxntxRLiFckXxj75XDA + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: OH6yKM1YQAmeusxvSJkd8g + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: d7VMtnfaSaCBTTREer0oJA + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: enex2MGaQ5qZO7GYi9RL2A + test-windows10-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: Fec5aBiTQjGkp-RiSJgm1g + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-1: JPZLDbMMRiiESyyFIE7GYw + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-2: Y6SYUSLeQq2OcWMG9LuC4w + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-3: e7UtOb9CTqOTV2Es_ppF5w + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-4: XXjFDrspSluCC4pnD031TQ + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-5: LVmFMkZHS7OHD8-bFNLwfg + test-windows10-64-2009-shippable-qr/opt-mochitest-plain-gpu: LzifIO8aRzae3y8TUHfmMA + test-windows10-64-2009-shippable-qr/opt-xpcshell-1: FwP0pQgbT9qwQxamzkU2Ag + test-windows10-64-2009-shippable-qr/opt-xpcshell-2: bs8RlnGKTOebtoPHGHt_4A + test-windows10-64-2009-shippable-qr/opt-xpcshell-3: Iaz8KBXKSIewrvj-gVicdg + test-windows10-64-2009-shippable-qr/opt-xpcshell-4: EB3_1-07RV6KJJ1qAeyRDg + test-windows11-32-2009-mingwclang-qr/debug-cppunit-1proc: MOexkxzUQ3q6-y8z9sBZpA + test-windows11-32-2009-mingwclang-qr/debug-icecat-ui-functional: fEk2jUkqTzyLH0o1MYqoQA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-a11y-1proc: RIjB2kQnTJyb1q14YZQ2NA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-chrome-gpu-1proc: HcbWBmHsSpyhG8y_YtOVpg + test-windows11-32-2009-mingwclang-qr/debug-mochitest-plain-gpu: SoioSVTCRrCHcicK6GeIzg + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl1-core: ROAHp97dRNG8jpKIHLLjSA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl1-ext: VCx9DJR0QsSsctuaXyoI1Q + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-core: aBUwAcP0SJmP8kyi7uCrIQ + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-1: O_zeJZspT5-iYmly0iX9XA + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-2: PcV_IM7-R_K7PZsRCQen0Q + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-3: W9nWGxzoQgGCY7U3ZZVbpw + test-windows11-32-2009-mingwclang-qr/debug-mochitest-webgl2-ext-4: CwlSFgRSS0GG17xYtceEJQ + test-windows11-32-2009-mingwclang-qr/debug-telemetry-tests-client: CAn19OWqRZyNH7XIpFldDw + test-windows11-32-2009-mingwclang-qr/opt-cppunit-1proc: BoSOS6tCRqGeM9RfacqvCw + test-windows11-32-2009-mingwclang-qr/opt-mochitest-chrome-gpu-1proc: OHyz5LDnTE6srwFBfk5UaA + test-windows11-32-2009-mingwclang-qr/opt-mochitest-plain-gpu: WSYia__XRve832vWUDU-6w + test-windows11-32-2009-qr/debug-cppunit-1proc: E65nQqPMSgiUQjaJj8skhA + test-windows11-32-2009-qr/debug-crashtest: ODQx8p_DT1eLi7J5fc04cA + test-windows11-32-2009-qr/debug-icecat-ui-functional: d5n2sDjwQdGwnv8GYZH2CQ + test-windows11-32-2009-qr/debug-gtest-1proc: BYjSeQ41Szq4POUMfRVu0A + test-windows11-32-2009-qr/debug-marionette: LRiZvHDgQkyiV_MaRfKQNg + test-windows11-32-2009-qr/debug-marionette-swr: CkGiqlaHR36StNB786JsOQ + test-windows11-32-2009-qr/debug-mochitest-a11y-1proc: M6iQxvUoSxe4MyPhJqQDLw + test-windows11-32-2009-qr/debug-mochitest-browser-a11y: MXrQoGZ2SX6bozvp-VlV1g + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-1: G3Bo6GSDRrK8GsOiRDVA7w + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-2: NEfYR5psSwicqiY8HmaZDw + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-3: HI7JAJfBS1es-IygnjCuXQ + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-4: GaIs2IBmQ-e6Vx57AJRuXw + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-5: KC5I4n1_SbiIJPdWpzJS0g + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-6: MMXvkopoSDu-V4oRhF19zQ + test-windows11-32-2009-qr/debug-mochitest-browser-chrome-7: cC69dUWJSuu-biQ7wGSTmw + test-windows11-32-2009-qr/debug-mochitest-browser-media: VUslue0tQAKma9LGoAmLdg + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-1: coWwUCm7QJONMWL2LukwGg + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-2: Kcmwuc-hREediUKGJpEeeA + test-windows11-32-2009-qr/debug-mochitest-chrome-1proc-3: bMBrOKviSPuqVjZd7IYoyA + test-windows11-32-2009-qr/debug-mochitest-chrome-gpu-1proc: PbWlIH2WQN6Mu0CWJJA1rQ + test-windows11-32-2009-qr/debug-mochitest-media-1: Awdl8ZAXRIyryoZybnVoJA + test-windows11-32-2009-qr/debug-mochitest-media-2: PzhWpd3hTvWuw8Yg_80IvA + test-windows11-32-2009-qr/debug-mochitest-media-spi-1: LmVcSRyFRJmb5VltlKXv0Q + test-windows11-32-2009-qr/debug-mochitest-media-spi-2: craSLkIlRSOc7erna__hqw + test-windows11-32-2009-qr/debug-mochitest-plain-1: S2xjIClCSsih4IRYq0mwsw + test-windows11-32-2009-qr/debug-mochitest-plain-2: IU5NqKr1RXa_EcWbrS1FsA + test-windows11-32-2009-qr/debug-mochitest-plain-3: X8P33JZSQVergkgmP-jW9A + test-windows11-32-2009-qr/debug-mochitest-plain-4: NVDIcvOhR1m8ChQjF_Wktg + test-windows11-32-2009-qr/debug-mochitest-plain-5: GZ71O_NISDW-6KS7851QhQ + test-windows11-32-2009-qr/debug-mochitest-plain-gpu: cITTCbXMRRCHtH14rJ3WYw + test-windows11-32-2009-qr/debug-mochitest-remote: VpbJ1FK5RkS3g80ZdRXy3Q + test-windows11-32-2009-qr/debug-reftest-1: eEqiq8oOTCmEJFEabGMG4w + test-windows11-32-2009-qr/debug-reftest-2: I0KWFX4rRuG89Z2dZg2VYg + test-windows11-32-2009-qr/debug-reftest-3: Ho7f2W87Rq2-16JcX8ZmTg + test-windows11-32-2009-qr/debug-reftest-4: Ia17r0xvSMuScNIzBqDQfA + test-windows11-32-2009-qr/debug-reftest-5: Tu3xAdswSMOj_XLkhGIv6w + test-windows11-32-2009-qr/debug-reftest-6: BjnqUmG6RwKOlgBHwM_9ug + test-windows11-32-2009-qr/debug-reftest-wr-dc0-1: dAtyUh-NSBylA41eeH5VaQ + test-windows11-32-2009-qr/debug-reftest-wr-dc0-2: UmlZcPG7TOmJWi_J_pqibw + test-windows11-32-2009-qr/debug-reftest-wr-dc0-3: MkD2Ydj-Q16oUO0OhkGq9Q + test-windows11-32-2009-qr/debug-reftest-wr-dc0-4: U6u7yxvdSZmLO-PBnIQkEQ + test-windows11-32-2009-qr/debug-reftest-wr-dc0-5: agI57GZCSFiONpMeA3majw + test-windows11-32-2009-qr/debug-reftest-wr-dc0-6: YfTWNedVT5eD6hefcwBqFA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-1: JxXvHFr5QM6MKJd6qiuThg + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-2: e4T1z0FwR0GA3EbXRsPFPA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-3: MoQOOaQPSuiVCAi-gpB3jw + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-4: TT9pwVuOQXSyi9AeBo0mOQ + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-5: KJtSCuY5Qmaf4VIQxglysA + test-windows11-32-2009-qr/debug-reftest-wr-dc1-p-6: TyxvYTXKTpq_rqI_XpIvdg + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-1: KUeYIPQuTE2NuMSQNS6RlQ + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-2: TnV3L2xRRyKTSq8vISBXbg + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-3: fSholjK9RomZYZ8UtuO_pQ + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-4: FNJqZtUwQiynPwj84qCG1A + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-5: GDPVd_ZMRmGzlCFuey-uWA + test-windows11-32-2009-qr/debug-reftest-wr-dc2-o-6: Wz3tVJo8RzKK3Tl63kjn5A + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-1: ctBEv0lUQau9ZQ1zU4fZ0g + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-2: D5IzfdYHTlGDsY1XPY-vug + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-3: Qi5nnrNoRp2083xHVcSi9Q + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-4: YuAvBqLzQDOUwsO2FLxrQw + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-5: MUDACnkYSeOiYNQf4ZzQaA + test-windows11-32-2009-qr/debug-reftest-wr-dc3-c-6: Zz6xj9KESQWalRqK4i0cwg + test-windows11-32-2009-qr/debug-telemetry-tests-client: WKJNLPtIRAK_bdg1xHr5rg + test-windows11-32-2009-qr/debug-web-platform-tests-1: Gh6YfZ4hT5KUt6H4lsraEw + test-windows11-32-2009-qr/debug-web-platform-tests-10: POpwONSJQ1ydf690LL-mIw + test-windows11-32-2009-qr/debug-web-platform-tests-11: adAEw82gSIieK5de81L4CQ + test-windows11-32-2009-qr/debug-web-platform-tests-12: Vkz6BjUJQW-c4Up8HVhO3g + test-windows11-32-2009-qr/debug-web-platform-tests-13: UHbvRp88RiyPpYsrsgChAg + test-windows11-32-2009-qr/debug-web-platform-tests-14: XSmLFWCES-mU559ISMGPjQ + test-windows11-32-2009-qr/debug-web-platform-tests-15: K9f6DOu_QKiV_3jKzIQJuQ + test-windows11-32-2009-qr/debug-web-platform-tests-16: R4h7HfGfS0GmLSFtjWG9WA + test-windows11-32-2009-qr/debug-web-platform-tests-2: c1GsHAwWSxe_wB5cnjO5qA + test-windows11-32-2009-qr/debug-web-platform-tests-3: HWnFok_-QfiaYxt02USpuw + test-windows11-32-2009-qr/debug-web-platform-tests-4: bwx47kywQlC_szAAtHYMZg + test-windows11-32-2009-qr/debug-web-platform-tests-5: P5JMyY6QTjKEWPpok-DVDw + test-windows11-32-2009-qr/debug-web-platform-tests-6: bmQpmuUURiiQLHlmylzR-g + test-windows11-32-2009-qr/debug-web-platform-tests-7: C3GKACMOR3yf5b-Fcfx0hQ + test-windows11-32-2009-qr/debug-web-platform-tests-8: JJVxidw9SwiONBTTSmy3yw + test-windows11-32-2009-qr/debug-web-platform-tests-9: AF4_T6tQRl6159smzQVtNQ + test-windows11-32-2009-qr/debug-web-platform-tests-crashtest: IJpXpU4dRH-gZCziC7nxJw + test-windows11-32-2009-qr/debug-web-platform-tests-print-reftest: XuHTQCW5SI6a4F_mIhfcGQ + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-1: F9klWPjZQSCQ_KL7ZMJpdg + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-2: AUldPXeTTha6QtKIcH0GDg + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-3: HtAsQhPSRBOzUfhivdUsEA + test-windows11-32-2009-qr/debug-web-platform-tests-reftest-4: SnvtyZFfRiWGiv4pBNutvw + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-1: UsprC0JTQQCAS79t4hcrQg + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-2: KtFiSvQIR5qsZ5-4Tpcoyg + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-3: alsrBkMwTwiLUUtokm0iww + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-1: IjIUGwHqSi6VpruAP_MP8w + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-2: Hpkrec33QnyhbQquhh9lZQ + test-windows11-32-2009-qr/debug-web-platform-tests-wdspec-headless-3: b1sJ8-F1TYyd0M8CZstdng + test-windows11-32-2009-qr/debug-xpcshell-1: LJjKCpz3QQiHj95sqjBfhw + test-windows11-32-2009-qr/debug-xpcshell-2: U3uQCcmvSW23Uvg28tOYyQ + test-windows11-32-2009-qr/debug-xpcshell-3: C5IFaf7VQwiqpdHw3mOUFw + test-windows11-32-2009-qr/debug-xpcshell-4: DXqdiOZIQ9W02W8X3XKt2Q + test-windows11-32-2009-shippable-qr/opt-cppunit-1proc: FDoFq76hQVaNauNXCbmVEA + test-windows11-32-2009-shippable-qr/opt-crashtest: Gr4bhKIHRg-1A7yhisfWKw + test-windows11-32-2009-shippable-qr/opt-icecat-ui-functional: SYiI3xdeTauiZOLh1dxpog + test-windows11-32-2009-shippable-qr/opt-gtest-1proc: FTJ-3SkrRpm6E6YJyzhrsQ + test-windows11-32-2009-shippable-qr/opt-marionette: Expc7E1STj26DC0eHvVhzw + test-windows11-32-2009-shippable-qr/opt-mochitest-a11y-1proc: HXCVnH0kRAeROMXcBnlsMg + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-1: FaaFvkZTQ86FAsawTu5ybw + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-2: MjZlbhT5TuWD7xqjJUpXyw + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-1proc-3: RkPq_aswTUWQmLE-KhDFKg + test-windows11-32-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: XUa83PL-Svymht0LHnHBlA + test-windows11-32-2009-shippable-qr/opt-mochitest-media: RwR73rGcTp2TKfrhLFvJ1A + test-windows11-32-2009-shippable-qr/opt-mochitest-media-spi: NZ9eS6UsQcqrWOc_4Vir1Q + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-1: EpGli_dxTcCV4sYax_WR3Q + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-2: VRUpLIhfT3agyC_m1QMgpw + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-3: LQaTsvRkT9GC6tFhgMAkiA + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-4: XwvCV9GlTk23nMC1NTNLyA + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-5: OLzZd8sJQK6-N4pn8_6dXQ + test-windows11-32-2009-shippable-qr/opt-mochitest-plain-gpu: Ce_ewaGLSiCsPtdIUkZk8Q + test-windows11-32-2009-shippable-qr/opt-mochitest-remote: Fm3TfgNJRESVPxlomU7WJQ + test-windows11-32-2009-shippable-qr/opt-reftest-1: P6zJbUQTRjGBFsH4vFeinQ + test-windows11-32-2009-shippable-qr/opt-reftest-2: A8w0HKOfRdGjyHVW_u6Omg + test-windows11-32-2009-shippable-qr/opt-reftest-3: T4fHnL8qT9WCWDmI7nsIVw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-1: P6tK0IJcTDmFW_RFrA1Hrg + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-2: WwtfPptFRTum2UNZQkiA4w + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc0-3: M3cwnQWTTHqRFZt1yaWCtw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-1: BGeIKVo4QPWCGGl2sp3EjQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-2: cBVcBLTcTf27RnKObSQVdQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc1-p-3: JMMfA7tORGGXEax6ny0A-A + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-1: XXOas_F5RlmZYGk-izRbCw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-2: A3HeM1DjSn6P2LLJs1J8kQ + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc2-o-3: YlJWGqi9R5e9JcmCpdPGiA + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-1: E-t0A42hTByXoPZ0hCN50g + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-2: QqhNo30iRJivd3ul6XvFYw + test-windows11-32-2009-shippable-qr/opt-reftest-wr-dc3-c-3: fWdwFH7oQ0qolIsohzCL6A + test-windows11-32-2009-shippable-qr/opt-telemetry-tests-client: BXA5oY6oQl-9-YAqztPQrQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-1: FW0tix_IRWmjhJHZOPZCpQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-10: IkO03U_OTLufyFZ1jdYgjw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-11: ZaMhUgKkRZmtMOiUYL5zNg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-12: NOKkN93ARcuDesZmuw5yJg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-2: SwL2eOiIQsGcQAUg-dsZBg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-3: LH1ri4K5TIWk9aPzbivOpQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-4: JgOk_P7wRIa_SSbJKnw-iQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-5: dgTVoxuFQ7eOt6quq2Y65g + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-6: cQRhKgmqSCijMKcLtbBCbg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-7: Om9mjphMQXqrUj6qc9V3-w + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-8: SMJlx2yHTsyFwissqh-bAA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-9: W3GMrA6RTjOcMzf6o6JvnQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-crashtest: VA_OBpLTRbSiM4bYWQFzig + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-print-reftest: GswAtwoISfO0FzXD2nFs1A + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-1: aMDReOI-RdmDusgQlandnA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-2: A138goyCTUuXTkI83PUyUw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-3: X6zpiovPT7ifOlfj_g-Auw + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-reftest-4: CyoIdymxQMSHXMtXjULIfA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-1: UtJGt6wFTcmBtABORB_yiQ + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-2: KkulTtFIQcWC6JYPGCq7FA + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-3: OIu-Ai8tSbW9g2OaEuDAeg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-1: TJgyWom_RviovIGNBTZigg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-2: KJVt7DOcRo6Wo7J4GbWnfg + test-windows11-32-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-3: K1IWRyugScy8w8sv0k8s8w + test-windows11-64-2009-asan-qr/opt-cppunit-1proc: MBJUF5rBQU-kNPBVqFjpLg + test-windows11-64-2009-asan-qr/opt-crashtest: XUc9phptQ2yxgws-GlV-lw + test-windows11-64-2009-asan-qr/opt-crashtest-swr: YcDKrF5kS2G3kFYkAXvlxg + test-windows11-64-2009-asan-qr/opt-icecat-ui-functional: HQ6JqD2FRJep9jq-4akPNA + test-windows11-64-2009-asan-qr/opt-gtest-1proc: FfDlxUEwTTOLPZ6Q8d3pWw + test-windows11-64-2009-asan-qr/opt-marionette: ABrrUHvsTFyttGFq2zt4nw + test-windows11-64-2009-asan-qr/opt-mochitest-a11y-1proc: ZoUGmaNGQM-eSuzWi72-2A + test-windows11-64-2009-asan-qr/opt-mochitest-browser-a11y: VThrCSTuRkKxJaHdE8QRDg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-1: C0bQYp-uSiSO_cXHytNoUg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-10: QQjuIkUVTXaf1_HnFRktFA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-11: Cx9SzPhQQxeD4fRV3zWLww + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-12: er8Le2gkTKiWrDmu9eX94Q + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-13: bxEiWUaXSo20G_mQW7am_w + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-14: YomC2HwbRl-8QHPC9s5wmg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-2: O6lTCE9YTRKv9FktnNkfnA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-3: JfZz5sUJTnGo0Ku069O3SA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-4: X7Pn6UNaRXeIoCoGPrCpKw + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-5: cZ770RhMRqy322U1aw1FCQ + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-6: AQJuDELCRESNDXq3y10ylA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-7: Kex2ckuRQd2TnWqef6Cwyg + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-8: Zib0iK34TyWoUmXdVRTqwA + test-windows11-64-2009-asan-qr/opt-mochitest-browser-chrome-9: FzLBTqL4Rc25X8SzXq8Cpw + test-windows11-64-2009-asan-qr/opt-mochitest-browser-media: AkFtIMXYRoy0Ac2yTCppJA + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-1: RAznv7JhQTiJuZIg2pQeZg + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-2: AmK9Xen9RpWbvifOFQG9hQ + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-1proc-3: DJ7o-gUQSjmp5R_CHpDRLg + test-windows11-64-2009-asan-qr/opt-mochitest-chrome-gpu-1proc: JZNkLetGSVmE4WWp1tyE1A + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-1: fAaLJLOSSuGztfhES0pE5A + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-2: dYGqPm6YSUitTaO9VcifEg + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-3: KnFbaKKzRO-MVBja7ry5SQ + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-4: aSM2yUYCThOa-lq6LoxI8g + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-5: dLiN8jvmSIWLqpeGjNGbYg + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-6: AK1FlurHTOOW15GnJlPqOA + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-7: ZaLqS91tRjuGG72npBg2wQ + test-windows11-64-2009-asan-qr/opt-mochitest-devtools-chrome-8: SsqzcOpxReWmPNFkXz4nJA + test-windows11-64-2009-asan-qr/opt-mochitest-media-1: MZhij9adRkaEJXH7XO1wHA + test-windows11-64-2009-asan-qr/opt-mochitest-media-2: CLVDQh7IRAe91p5kBE2CeQ + test-windows11-64-2009-asan-qr/opt-mochitest-media-spi-1: Vm1dW2SdTUKHTLmeK_iLTw + test-windows11-64-2009-asan-qr/opt-mochitest-media-spi-2: eex0qyq4Sw-nJRKgfuRgSw + test-windows11-64-2009-asan-qr/opt-mochitest-plain-1: J-YE0pGjTiaj4k5joWA9Ow + test-windows11-64-2009-asan-qr/opt-mochitest-plain-2: S6SUvH6eRXW2zlORUXkqIA + test-windows11-64-2009-asan-qr/opt-mochitest-plain-3: M3He8nuaSjmLw7bCsCXjXg + test-windows11-64-2009-asan-qr/opt-mochitest-plain-4: H-N_r7JZRtWuF8p78yjRRQ + test-windows11-64-2009-asan-qr/opt-mochitest-plain-5: UNmbsjotSNeD8UOpohTojg + test-windows11-64-2009-asan-qr/opt-mochitest-plain-gpu: LsUspQ7eTDmYudZCy3sepA + test-windows11-64-2009-asan-qr/opt-mochitest-remote: Z-jCGx_dRjiQlmuJC9N7fw + test-windows11-64-2009-asan-qr/opt-mochitest-webgl1-core: fApLljdKQhOhXCM1NL54cA + test-windows11-64-2009-asan-qr/opt-mochitest-webgl1-ext: UXWJmbutQAmTQdyrxyzPKw + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-core: BdLdX2ywSsuJ5pk7hnS1Fg + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-1: B4hGE99yS1S7vpYGIFdFpg + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-2: KnEpBI0PQ764YoPAf6LBZA + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-3: fnkS0KUGSu25d11K8IwHkQ + test-windows11-64-2009-asan-qr/opt-mochitest-webgl2-ext-4: UtD22HGkSG-wndt06l9Bww + test-windows11-64-2009-asan-qr/opt-reftest-1: JkatQrBFSVqEH19qoQvmWg + test-windows11-64-2009-asan-qr/opt-reftest-2: J6jmmYjMTFO5ue6I4UGhWQ + test-windows11-64-2009-asan-qr/opt-reftest-3: XTgdf2-bSSevBcZW12aIHA + test-windows11-64-2009-asan-qr/opt-reftest-swr-1: GG52klBHTP23QRr2lWfwjA + test-windows11-64-2009-asan-qr/opt-reftest-swr-2: Rv1k9hQTRJK7Qn-gTXgRfw + test-windows11-64-2009-asan-qr/opt-reftest-swr-3: B-1lXLt9QtuglAOHADL53g + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-1: LzLYptFSR8KQXocaiZBoTA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-2: F6FTIn3tQYemAPAswpxgCw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc0-3: V73UoeG6Rbua1xvZBKChYA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-1: fqcRUWqwQvKdQgZXU_Txyg + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-2: A3nQi3sgTBmIbpPT5yqkkw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc1-p-3: HNKq_LfARjGIXFpv0mrYhg + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-1: WeGnHBFSRbyjt8Rw2Z4ItA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-2: c3NW5VeiSOa6sfnOx4gDGw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc2-o-3: D45ymiXHSv29Yy_XtfFIfw + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-1: YdO91d3lTfGDvFgr3a8xLA + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-2: I_m7Onw5TjOd5Sj2dukA1g + test-windows11-64-2009-asan-qr/opt-reftest-wr-dc3-c-3: FjTQ_Mu3TxGQPwpYRgOskg + test-windows11-64-2009-asan-qr/opt-telemetry-tests-client: M_zYrWYWSMuTASbOrP367Q + test-windows11-64-2009-mingwclang-qr/debug-cppunit-1proc: QI1XChXPTXa5gy2TmqRUjg + test-windows11-64-2009-mingwclang-qr/debug-icecat-ui-functional: fNinfUl3R6aEfxihHZOfhQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-a11y-1proc: FZ7KsI61QDmnLCOaQiS0gQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-chrome-gpu-1proc: RTvAdIL0QjmkpgmTgqhLow + test-windows11-64-2009-mingwclang-qr/debug-mochitest-plain-gpu: CWXkuY9HRFi8dqrh7S9Vxg + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl1-core: EGXKHLEAR5yO-ovNTno5Mw + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl1-ext: HGa6UYmbSKiRjdVtCtyVbQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-core: YeEIxyKfQJSBCOy2zGKkPA + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-1: Z52lvUZSQtq2Dt7csAssUQ + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-2: V4BRVmn8SkmZNQhzpxj3_g + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-3: CZB8xa2aT-yof7PmOjjSyA + test-windows11-64-2009-mingwclang-qr/debug-mochitest-webgl2-ext-4: E0bm5cFRRfCJuVDgaJy7fg + test-windows11-64-2009-mingwclang-qr/debug-reftest-1: fw-m5jPXTy6V1YlruSrBBA + test-windows11-64-2009-mingwclang-qr/debug-reftest-2: ESPjRrwYQd-liRIUmcZfbA + test-windows11-64-2009-mingwclang-qr/debug-reftest-3: K-2RXUVoQ-mF89r4gHV4Ww + test-windows11-64-2009-mingwclang-qr/debug-reftest-4: G94nrgtQToaCD69nCUU93Q + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-1: DOfMFJTIRwmMJTzZdekfZA + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-2: L4zpyGHFRA2kI1h4Xm5_Fg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-3: I9BzIdaZR1utBFzb72Mnbw + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc0-4: ZkKYc0W4TWq_44NA5XwjZg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-1: RVhoTP2RTiWOeKcDhT5muQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-2: DFzvHvudS7iQbi9KI22SGA + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-3: YtfW15fASEKlBWMTofBhMg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc1-p-4: LHQ90iHySIi3NuVhWRikag + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-1: fUuJ8BDEQ4ulFPxwJ7FniQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-2: fiE0MnbmR-e-PAQcb9Kp8Q + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-3: RuFFWdNjQc2Y_s0PWHd02A + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc2-o-4: R7XixN9gTX67MQPGxp3lkg + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-1: Pv_xkorGTqu9qoTQkCOKPw + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-2: J3owyjloRbSkwA2WLDZ2jQ + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-3: ZJEJ98tASJi2HRtW1aTY-g + test-windows11-64-2009-mingwclang-qr/debug-reftest-wr-dc3-c-4: SaLTNU5bQ7qYJx6sTDjMXg + test-windows11-64-2009-mingwclang-qr/debug-telemetry-tests-client: P1cK6ZJXTG2mPMsQPwoxQg + test-windows11-64-2009-mingwclang-qr/opt-cppunit-1proc: GlenOagXQnm-ULW7lAf4MQ + test-windows11-64-2009-mingwclang-qr/opt-mochitest-chrome-gpu-1proc: Wr71vS4nStOWtZtKtjQCSg + test-windows11-64-2009-mingwclang-qr/opt-mochitest-plain-gpu: Uc3E0a64SquB211raUSSNA + test-windows11-64-2009-qr/debug-cppunit-1proc: X2ZPD6uyTFSSeqUMwNWRUA + test-windows11-64-2009-qr/debug-crashtest: WUtBZ7N6SHqGaSn_yQYExA + test-windows11-64-2009-qr/debug-crashtest-swr: Q2GjROlYTeaZRp5iGbUrsA + test-windows11-64-2009-qr/debug-icecat-ui-functional: CercUizNTJafWfJHzRLOKA + test-windows11-64-2009-qr/debug-gtest-1proc: XmOI8SwJSBe32f9k6AHeUQ + test-windows11-64-2009-qr/debug-marionette: UoMfMXynRrK6uO_Xn_QRNw + test-windows11-64-2009-qr/debug-marionette-swr: CV_yKaZQT1ydfVi2SeNQrw + test-windows11-64-2009-qr/debug-mochitest-a11y-1proc: PkThpJ2ASnKVRqdatxUWNg + test-windows11-64-2009-qr/debug-mochitest-browser-a11y: V2i9HFIPTwWgI9Uj_DPjWg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-1: B8P370okTiOfifi-yWdx6A + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-2: A8ekPy-lRKaOCSIL7gN9tQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-3: B-CWf-G4SUao8Fs-0E0r-w + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-4: D1bf-x45RaqtHQd24D4xOg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-5: E9hUdPVzTdypTsPuKX8V1A + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-6: bZPMlNDSSt69DD9JieAClg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-7: Ionl-_fbRgCrlJEtj-ZLWg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-1: FyQeToBOS_am60MafEcZhg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-2: E7XYdhirSkmX_oJ06yamwQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-3: eIdiFyyTRMq12e3Uv8XXew + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-4: eJGb3rCeT86xIxmxBz0znQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-5: cRaxGVxaQSC4asuy9EPYfA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-6: G1reXMDPRx-rHh434D219Q + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-msix-7: RvAW1T40S9abrKNzBuiqMA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-1: QoO-Buz8RZOJEpD_Jxf8dw + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-2: SPs83-yTTRC2SakoSRvSNg + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-3: Z9W2QgQOQh2HznTECKkEKQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-4: aWK7xs_IRDGWQ86xd4oGgA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-5: I5iCNahVSXufjk0kI9-6QQ + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-6: a7wDT6XyRISqo5LUH5IJsA + test-windows11-64-2009-qr/debug-mochitest-browser-chrome-swr-7: ZK0m7AtHRzSyS3DVX7eY9A + test-windows11-64-2009-qr/debug-mochitest-browser-media: Xn3G6021Tvamk8_FFiD1HQ + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-1: Zra-MhcyQOCQEKuiz6L0wg + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-2: aKJ9r4X_QX-wR12k6SZzgg + test-windows11-64-2009-qr/debug-mochitest-chrome-1proc-3: Lzne2QJRQ--h9thMwGz-yQ + test-windows11-64-2009-qr/debug-mochitest-chrome-gpu-1proc: SjP1_U87R-OTe2Lz5eE6KA + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-1: KR2Z-LspTxOT7FNy1Iwfkg + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-2: C7aSmqpnQZWK1LwG2wWI8Q + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-3: HXYmI9L3Sh-xp6zOz5XSOA + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-4: Y4QPKgldRmuxFGGEfcGjnQ + test-windows11-64-2009-qr/debug-mochitest-devtools-chrome-5: Eo-RvHmTSEGSnO87kWEcVQ + test-windows11-64-2009-qr/debug-mochitest-media-1: V1xLTUolQK24i8F_s-kTDA + test-windows11-64-2009-qr/debug-mochitest-media-2: GA8Q153vTE6vKK5aJJj3Zg + test-windows11-64-2009-qr/debug-mochitest-media-spi-1: Ax7cmHzzRJWOIQYkBbeUVw + test-windows11-64-2009-qr/debug-mochitest-media-spi-2: bIzc1Fs7T0-dp1LAqfvUjQ + test-windows11-64-2009-qr/debug-mochitest-plain-1: Df7iQVfWQXC0QSEEJyxiMQ + test-windows11-64-2009-qr/debug-mochitest-plain-2: LCGn125KR8ezEOvs5HFqkw + test-windows11-64-2009-qr/debug-mochitest-plain-3: NCZvX5DzR4ukreAq6KOg7g + test-windows11-64-2009-qr/debug-mochitest-plain-4: DyJz8TR5S82z569NGXyyhA + test-windows11-64-2009-qr/debug-mochitest-plain-5: Pd8QTkJ4SiG5apem1YD0nw + test-windows11-64-2009-qr/debug-mochitest-plain-gpu: YxXCfcW_T0mXmsjRLB-Bsg + test-windows11-64-2009-qr/debug-mochitest-remote: KOVf4RIoRn6miS7IkE5BXQ + test-windows11-64-2009-qr/debug-mochitest-webgl1-core: JRmF7uApSdyGrTKv-H3cFQ + test-windows11-64-2009-qr/debug-mochitest-webgl1-ext: CzG84yjXSFOqLm68AVqTng + test-windows11-64-2009-qr/debug-mochitest-webgl2-core: FYfcdyRHRMikGjFQGbApqQ + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-1: XC2Qtd1ITfyyZn_gsz2L0Q + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-2: D86ua2MQTf6ydHaIAGJAuQ + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-3: dVUKloAHQbmHyi59jOb1qg + test-windows11-64-2009-qr/debug-mochitest-webgl2-ext-4: cfAp-IB8QbeyajuGtraGUw + test-windows11-64-2009-qr/debug-reftest-1: W9NYzltUT3OtToHbjpH5LA + test-windows11-64-2009-qr/debug-reftest-2: N9YVErPkQtecliDyUe_sDQ + test-windows11-64-2009-qr/debug-reftest-3: NIfEB0RkSAWP6owSYufJCw + test-windows11-64-2009-qr/debug-reftest-4: HlNSlm_zQu2JQGQl2Kw1Sg + test-windows11-64-2009-qr/debug-reftest-wr-dc0-1: UbCQMd0_SDSL8RiN5HwK7w + test-windows11-64-2009-qr/debug-reftest-wr-dc0-2: SM-MiHw2S4-RZMMJD8dHtg + test-windows11-64-2009-qr/debug-reftest-wr-dc0-3: GhzLrPkKR0WE2oeReqjFng + test-windows11-64-2009-qr/debug-reftest-wr-dc0-4: PCSyX1MvQzSTqtV6FxIq0w + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-1: Bvi71A5QTzO4V23HQxcoZg + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-2: T0uTHWMBR1KmgQpaPVCKLQ + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-3: Np8xrkgjSPydI22xZEhiwQ + test-windows11-64-2009-qr/debug-reftest-wr-dc1-p-4: TNwBgL0eQzWvHEl4UxV2jg + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-1: dk02Lv3PSHyqy8CD2p2g9g + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-2: JM96GKgtQ96VEi_dfBkrSA + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-3: exZeAjOeSrunhjRx4ARQjw + test-windows11-64-2009-qr/debug-reftest-wr-dc2-o-4: S_TnnMcURiOm6MselddyPw + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-1: T58hJElYR4S9WPoM2jQsBg + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-2: PnWJbETpQtWiiL4TLl52kQ + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-3: fD7flVkUQCuB7s01kfNQxA + test-windows11-64-2009-qr/debug-reftest-wr-dc3-c-4: Rz4R4AL0SJ2hOEq9LpptaQ + test-windows11-64-2009-qr/debug-telemetry-tests-client: TJBf2aa1Tt6a5cGeCpRVbQ + test-windows11-64-2009-qr/debug-web-platform-tests-1: RmCO2nuSQCGELnvJyVktbg + test-windows11-64-2009-qr/debug-web-platform-tests-10: E1Ab1T4KT_SIzRgrFGgReQ + test-windows11-64-2009-qr/debug-web-platform-tests-11: K5X8Z2t1SbuadqUHqDL6GQ + test-windows11-64-2009-qr/debug-web-platform-tests-12: clKEWzivQsWU3eEw2BtjAQ + test-windows11-64-2009-qr/debug-web-platform-tests-13: BcCylHqESYiH9eLekncEOA + test-windows11-64-2009-qr/debug-web-platform-tests-14: FkV7jkamRK6XAhLGfYQTKQ + test-windows11-64-2009-qr/debug-web-platform-tests-15: ZsGPcW_kTG6pL2njGhdMAQ + test-windows11-64-2009-qr/debug-web-platform-tests-16: eTg0QEHzRKin-r1bp_YGGg + test-windows11-64-2009-qr/debug-web-platform-tests-2: J9BUH76YSIuzZMF7IkK6RQ + test-windows11-64-2009-qr/debug-web-platform-tests-3: UzsgO0bPREGcHA9sZqrulA + test-windows11-64-2009-qr/debug-web-platform-tests-4: ceazOca3Swy2HZGTMKnFBg + test-windows11-64-2009-qr/debug-web-platform-tests-5: FTblluTYT4ianm_dh5ESow + test-windows11-64-2009-qr/debug-web-platform-tests-6: U0vErpRZRFiyexwkAF7Gtw + test-windows11-64-2009-qr/debug-web-platform-tests-7: OMOrCXkHRfCTWE3AksJsjQ + test-windows11-64-2009-qr/debug-web-platform-tests-8: EjCvpAmGT8arQJM34Oycxw + test-windows11-64-2009-qr/debug-web-platform-tests-9: K8LIVXSuSKuteUhUr7ZU9w + test-windows11-64-2009-qr/debug-web-platform-tests-crashtest: IvrPgqxJQjGQxrrirwRXIA + test-windows11-64-2009-qr/debug-web-platform-tests-crashtest-swr: Xla1BV8xSVKmAI62Ty52BA + test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest: CN28Gv_GT-eqMLAA_Y5wqw + test-windows11-64-2009-qr/debug-web-platform-tests-print-reftest-swr: Dhba9lbhSZ-TquYHc1K24A + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-1: Eo-TBRnhTtujULRhUWmKMQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-2: e49IVyW6QdGRI53HqNA97Q + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-3: bVkwLcoBT1-f0E45Gs33WQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-4: PyBu8lnrSsypdBx7alMC5Q + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-1: S0053AbmSoeWi8i7agUzSA + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-2: ciYihb9SR6ybBmX8b2xNyg + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-3: Pj4pBAyYQp-_eMydIA_dTQ + test-windows11-64-2009-qr/debug-web-platform-tests-reftest-swr-4: X45N5SuUSmqO4_AV6h8Dcg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-1: VoHlM_02TWybzF9Y_5B7Gg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-10: dGNhbDCJQQKlCEqqXi1U-A + test-windows11-64-2009-qr/debug-web-platform-tests-swr-11: e0ql1LzRQyO_VWy0tk-ing + test-windows11-64-2009-qr/debug-web-platform-tests-swr-12: JAZy8sDCR9CDiSEpot8iUg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-13: OxxgvuHAQqOT5Cm-Z67XMQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-14: XqPrrmoDS967BLFyWbfR9Q + test-windows11-64-2009-qr/debug-web-platform-tests-swr-15: LgQtirteQhienNRHq40jnA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-16: EUFJwEgZRNKHwABcSXgSaA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-2: RX8rCYgLQ9yq1thmTB1hfg + test-windows11-64-2009-qr/debug-web-platform-tests-swr-3: dv54DywUQDex0TdD_DZVmw + test-windows11-64-2009-qr/debug-web-platform-tests-swr-4: fNQ8QRjgRwKSsBl-lRZbHQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-5: Z27VYSoVS2W81hrz7cqlaA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-6: czz7a1WOSK69OcBKclZZFA + test-windows11-64-2009-qr/debug-web-platform-tests-swr-7: PicFrnw-THuq_MkBYbpdFQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-8: UuahSzq2TGG7hS5nQYArdQ + test-windows11-64-2009-qr/debug-web-platform-tests-swr-9: F-S7JZ0HQCW6EWVsM6ZUOA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-1: ERcOVdrSQDmf7DPvnuRzkQ + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-2: FF7vRqmEQ_iNZ0OA9xFTWA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-3: Nnm6ungPS7SbVdgo0BJDlQ + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-1: Hs1OJRLeQHOMCUvzlr3efw + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-2: OCA3v-b-Tke0AEwTfj3QcA + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-headless-3: LuwsaqyGR5aQ2dUW4e-OUg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-1: NVCdUw9kR9uxrTszi1wpcg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-2: BN1Zea8FSGuuRPiWAqULvg + test-windows11-64-2009-qr/debug-web-platform-tests-wdspec-swr-3: MtkXIT0yTLKvErrrJetiag + test-windows11-64-2009-qr/debug-xpcshell-1: S9pmDvS2RhqvypSwz5P3XA + test-windows11-64-2009-qr/debug-xpcshell-2: VEA8-5v0SbuYQAmYreQJJQ + test-windows11-64-2009-qr/debug-xpcshell-3: Ac1se9XlQRi0x802dbhlGQ + test-windows11-64-2009-qr/debug-xpcshell-4: K2yK0-IyQIm8o-uRx0j-YQ + test-windows11-64-2009-qr/debug-xpcshell-msix-1: KjpllrqGRyqXZ4EY92EaFg + test-windows11-64-2009-qr/debug-xpcshell-msix-2: f8wCgNVUTuGt0feyTcjuCQ + test-windows11-64-2009-qr/debug-xpcshell-msix-3: Nf5-nRXgS-yTQ6v2gdRl_A + test-windows11-64-2009-qr/debug-xpcshell-msix-4: GFvY_5tUT5--_XrL4PbSfA + test-windows11-64-2009-shippable-qr/opt-cppunit-1proc: U9X3CRwXT_yHj80kqGQz9A + test-windows11-64-2009-shippable-qr/opt-crashtest: KoukseNXRnyiVB8Kdla26A + test-windows11-64-2009-shippable-qr/opt-icecat-ui-functional: EWYjhvG3QCae8gqUrWtwJg + test-windows11-64-2009-shippable-qr/opt-gtest-1proc: cxDH9O4GQeyqwtjp7ysSMg + test-windows11-64-2009-shippable-qr/opt-marionette: AvvDjnH2SIyEjyfCijbpPg + test-windows11-64-2009-shippable-qr/opt-mochitest-a11y-1proc: Dy9Dq6qSQ_Gmd56Ey7k-ng + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-a11y: MNqH0mYqSy2X_hmb4OV7OQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-1: Wsdqeo1CSHu0qq_-uxD5hg + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-2: VOBuHp1USsW4h0KQYJscaw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-3: Gi-apfLfTC6DSekxt0-Iig + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-4: Ttxgao9EQsSAC3NT4QjFkQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-5: XQPDpQvVQCefAAaT87F4Jw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-6: VAkwv1OlQX6SgPkdVIQ_zA + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-7: JMn526lpTL-DZa8NVzhaXQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-1: JB7bUdn5QAqMNyO-K_F7DQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-2: bFoDenhDTU6SID8TB1ZQkA + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-3: RZblCiINS_un0kvTaGxMcw + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-4: Fh9Oki15QcuZsXkCZp4jlQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-5: a4csWwvlS9mF0h2HOGjjxg + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-6: MXKUxvc0QbGYZh8Rm27zTQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-chrome-msix-7: cBs0ckrSSEScW_vwH8B5JQ + test-windows11-64-2009-shippable-qr/opt-mochitest-browser-media: b9HP4IM9T1GsoTJ0zyztyA + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-1: fvOj-tf7QMmJJAMPjGiZvw + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-2: Gggjok2IQfOd7004eijLKg + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-1proc-3: ISXaaRQEQQ2MOa7ZYQKJvQ + test-windows11-64-2009-shippable-qr/opt-mochitest-chrome-gpu-1proc: d5IXw1SlTdyfg97cdPP0qQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-1: Y-KXWPPESbSGhlDq1Sr1KQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-2: LPCKvBgSQVy5n-nGefHT0g + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-3: CMYr8y-BQp66aKSkWYdeMw + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-4: ArfQv6V2Tu219ZuSGspkaQ + test-windows11-64-2009-shippable-qr/opt-mochitest-devtools-chrome-5: fLPcAX7cRHCKG-qk825moQ + test-windows11-64-2009-shippable-qr/opt-mochitest-media: BC5voC46RTCjmo0Lc9WzDw + test-windows11-64-2009-shippable-qr/opt-mochitest-media-msix: Hd2NWcZ-R0un4DRlJ8ZdJw + test-windows11-64-2009-shippable-qr/opt-mochitest-media-spi: SIuIalVbQVapcz04LJsPMA + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-1: ENlANS4OQo-KCnuIxOpeeg + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-2: ChGSrzYgQBGy9xGHaOT18A + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-3: cSiBdUB2R6KEyY5j8vy76g + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-4: P05zaL1yS7michgVsmF5aQ + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-5: ek7aSFmnQiCaEvoPAHcbqA + test-windows11-64-2009-shippable-qr/opt-mochitest-plain-gpu: UWyropaQR9yCXtE9O92TSw + test-windows11-64-2009-shippable-qr/opt-mochitest-remote: KinlLYobRQOHRcSvEKLEAw + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl1-core: S7Jzpr6_Q4WxjFmwCoUKoA + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl1-ext: VXqQwgfCSm2ACa69d_zU_A + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-core: I9xrpIpBRpG8er3ilFKoYg + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-1: TKtWG8s8SLaC5SDUG_uBrA + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-2: B1wVu-M_SWG7DYftFd8i8A + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-3: NpkoIo5rQByGh59-QSSQ2w + test-windows11-64-2009-shippable-qr/opt-mochitest-webgl2-ext-4: Rk2IThKwT46ndB8wxPyLVA + test-windows11-64-2009-shippable-qr/opt-reftest-1: FFYZHi9EQiec6zKMwzcF8g + test-windows11-64-2009-shippable-qr/opt-reftest-2: AkfLvIuOSN6a1yershXBxw + test-windows11-64-2009-shippable-qr/opt-reftest-3: HY1aHNYKTOmqwmxBeKLKIw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-1: FIMTcBDETtKS4ITMLtzDJw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-2: F_LVaghNT4-k14fcSyhTqQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc0-3: f39ZD8uuQTu7W93DoiQt9g + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-1: CDzrApEBQxSHhEnnP9MXcA + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-2: OR2PVP3fTo6JaVEmu9ZlFQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc1-p-3: eZtHNmptSSmkOl8f_Q0AQQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-1: eN10iDonTuS7JuNNzreOlQ + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-2: AAoL2b9lQuuwYK9INlZ1Vg + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc2-o-3: HYtQNvF3TyuDmIctM-wN1g + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-1: dDFyTuTqRhyzHQXeyb7Rig + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-2: VXVRCSyAS92-6Gjpu6Wyaw + test-windows11-64-2009-shippable-qr/opt-reftest-wr-dc3-c-3: bhe0gNDFQ-q6Vs4GQcE0jg + test-windows11-64-2009-shippable-qr/opt-telemetry-tests-client: Bj5TH5rrQreu322_Zv-rcw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-1: OnbKASXeT6G4Q-B571_Wmg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-10: JrQd2fbMRJ2IeMyfq_AYNw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-2: UP77zw6QQnarBaF0AUJ4qQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-3: V3ocmUv_SnCQo01bOyZo8g + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-4: ekrM8HgDQ224P78YBj7pSQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-5: Tj5GgKE-RxWTyR1oiGogOA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-6: A1fDKgHASlazYYA3IF-Hnw + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-7: cgpo-vszSI2QOaycuPP6mA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-8: W2SFjsdXS6y1dkuKg4Rkrg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-9: eGalbpIvS3e1um40xURoQQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-crashtest: Y2kt-ZINSCWi5az5NtStZg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-print-reftest: TaNUFlU0Q02oLlXPwQZ3IQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-1: PLTPjNOwSK2trkVS6z0FIQ + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-2: BenxxAGRS0eSTzkDS450KA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-3: bEuTlvKEQBmGioPLUS3H8w + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-reftest-4: E5LHdDApRKm7D6NqYDfyWA + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-1: L-3soRDLQlioMxMh5zymbg + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-2: EOajuGFOSNKlsQ-xVZs5Og + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-3: YgmgAayfSY2hxYotzBSw3Q + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-1: YYwNm0CORe2vT4qINbLp3g + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-2: G1MEiu1uRfKf-ucJ9xGM5Q + test-windows11-64-2009-shippable-qr/opt-web-platform-tests-wdspec-headless-3: Eu-HdMW7QP6yTXMouXgmUg + test-windows11-64-2009-shippable-qr/opt-xpcshell-1: Potf1NwoRxqKbUMB8Z1X8w + test-windows11-64-2009-shippable-qr/opt-xpcshell-2: QJggIGENQKax6DxIVBL1oA + test-windows11-64-2009-shippable-qr/opt-xpcshell-3: ZNn5CCSMTFug4WAeXJKr5g + test-windows11-64-2009-shippable-qr/opt-xpcshell-4: TkrrZJ7qTL-1HzurR5vb0w + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-1: R2mvGBI9T5WZIiMdl8tLUQ + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-2: SYj1QB75ScGS_s_ylEL8Yw + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-3: cJswenEyS9eINDpWFmIcZQ + test-windows11-64-2009-shippable-qr/opt-xpcshell-msix-4: MpSsKUHmQUaTkTOnclKvwA + test-windows7-32-shippable-qr/opt-cppunit-1proc: FEoFH6GqQOeFb2i4K_HgNQ + test-windows7-32-shippable-qr/opt-crashtest: My2oIG_sRvi4j7gCoAEQ3g + test-windows7-32-shippable-qr/opt-gtest-1proc: baTxmZDAR9ya2BGgRvHeTg + test-windows7-32-shippable-qr/opt-mochitest-browser-a11y: LaDMZQe9Rh-DcYIU_R79Ig + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-1: RiNjldESRsKXLOdefV-TDQ + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-10: boyttOSpSwSayfMMQakTsw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-11: fGi8z2-5S-mWvAHqCNNKmA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-12: Gd4BzSG8QH-qjObxw4HovA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-13: AquWAqCAT8S8QAHlPaYr2w + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-14: ZuULVHN8SWCXj0PGxLm8jg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-15: M92tOlz3Q0qu_N-CzzKK1A + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-16: aZAO7t6OR7iN65PW0wGD-A + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-17: cFNUKAYnQFC9VE4eiZbfsg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-18: aDvHzd_zRxWBK4wMh694aA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-19: KkOI8fjPSeOF9RJeTW37dQ + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-2: ZxHmqYRhT56NlqRiK_xBwg + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-20: T-bwcr1VQTGpmj85ZRaTBw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-3: VDiY5yQ3TvyDSpknQwwqYA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-4: Fmu51t4YTvGoZ0OyuHuQsw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-5: VZUhV8jpRA2mRRUwinVcAw + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-6: dHYtszafQqqi2HlWgBqAHA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-7: C-t7zEzOR0uFfSwqRhsgqA + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-8: GYF26zchSiuo4QCwL8ht_g + test-windows7-32-shippable-qr/opt-mochitest-browser-chrome-9: FvMLB5xkSAy5jMaYmYfztg + test-windows7-32-shippable-qr/opt-mochitest-browser-media: OpItrOWuSUq8yF_vpfgIVg + test-windows7-32-shippable-qr/opt-mochitest-media-1: c3-O4oojQreEVjvnvPhX1g + test-windows7-32-shippable-qr/opt-mochitest-media-2: SAvLytEhT0-he584SpOYhw + test-windows7-32-shippable-qr/opt-xpcshell-1: O1rC-RewTw2ybVT9fSwQog + test-windows7-32-shippable-qr/opt-xpcshell-2: IxUSvj9US9Ol6NL0idHhCA + test-windows7-32-shippable-qr/opt-xpcshell-3: E6i7f2C2RSKC7ka176JEJA + test-windows7-32-shippable-qr/opt-xpcshell-4: Y0A6bCWCTP27T-jXZZcarQ + toolchain-android-aarch64-compiler-rt-16: TnRn-vFRSjyTs9Z-49534A + toolchain-android-aarch64-libunwind-16: Kri8UT1sTgmFNc0-USHjaQ + toolchain-android-arm-compiler-rt-16: NOzBONyeTaGGNd85Q9I-Ug + toolchain-android-arm-libunwind-16: JBZIolMrQ1et-WeyzeCXIQ + toolchain-android-x64-compiler-rt-16: VogJ2fY4TZKNJn1MYjwDXw + toolchain-android-x64-libunwind-16: QZOnAeWsTb6X7EXcMwkalQ + toolchain-android-x86-compiler-rt-16: LPmITGXjRwmk6RRqBPYorg + toolchain-android-x86-libunwind-16: aveX0gGbT3ydLB3mX5w2ag + toolchain-clang-dist-toolchain: clDGBrRFQ5qmfKNFpZ5jMg + toolchain-linux32-llvm-symbolizer-16: b00sSguDR1afiiWpzmKnCg + toolchain-linux32-toolchain-sysroot: WaiGPfSGSHmmU8c_HVEtsA + toolchain-linux64-aarch64-compiler-rt-16: Vx3Q69CrQ9q9aZ8DFw1VzA + toolchain-linux64-afl-instrumentation-2.5: A7_BN3M7TdO8-TxHR_OsJA + toolchain-linux64-android-avd-arm-repack: PNIDJ1eBRuebxCzdXIifWw + toolchain-linux64-android-avd-arm64-repack: cJxzEwTQRAWYadCb7W8OdQ + toolchain-linux64-android-avd-x86_64-repack: KR2dbYiBTyuunZj35eHVhg + toolchain-linux64-android-ndk-linux-repack: Q-JQhzdHQnmCqr54qFFojQ + toolchain-linux64-binutils: f81_nol8QbyHT-nUi07Eng + toolchain-linux64-binutils-2.31.1: FIVVjEl0SqKtVoIHhy9FTg + toolchain-linux64-breakpad-injector: HSvQKDT9Q7mGQGg73Ymd_w + toolchain-linux64-cargo-vet: LwvUfYIbQDe7wm1eEddOMQ + toolchain-linux64-cbindgen: FWhvCgYCR-G0bseThl5WJw + toolchain-linux64-cctools-port: W6CI9YSQShOY0a770Pq5ag + toolchain-linux64-clang-14: E9ae4CgOTfGZ_Jb8-Hhu3Q + toolchain-linux64-clang-14-stage1: EB1yU-1LSgaBxiKvzSJm4A + toolchain-linux64-clang-16: SV8vfdZaQ1-9JIVdCfEVxQ + toolchain-linux64-clang-16-mingw-x64: elZRAG9bSNuk5ApDEEHWQw + toolchain-linux64-clang-16-mingw-x86: KXP7oFpYT8OAXfY2WkFJww + toolchain-linux64-clang-16-profile: AaGLhKD3RnuXBkGxJBSG2A + toolchain-linux64-clang-16-raw: ask8A5KWTRCNqdcKC_EXLA + toolchain-linux64-clang-16-stage1: chmo8KG3QmCDkhy6erRP1g + toolchain-linux64-clang-7.0: DW8AzwsfRJG8NChP1X64bA + toolchain-linux64-clang-tidy: KUiB0U9ISHGniWK27haWLQ + toolchain-linux64-dump_syms: T1X_znpaTeuEMQDquKSjHA + toolchain-linux64-fix-stacks: MaNpREDWQi2jbqnK1qK9dw + toolchain-linux64-gcc-8: U26qLaJBQVa43aFD2btkzA + toolchain-linux64-gcc-9: K8pyi0ROS6CbdQbamdVDJg + toolchain-linux64-gcc-sixgill: DKKz3ufMRDqIYKfNZQjaow + toolchain-linux64-geckodriver: ezE2RLOLSf-1Z2WbdOGWJQ + toolchain-linux64-gn: ZPb84fQIT36Y9YLHsjHQWQ + toolchain-linux64-hfsplus: FhnREwoEQRmaL4OPg3sTXQ + toolchain-linux64-jdk-repack: XfMjSXDNRQ6NiTCyZCs07w + toolchain-linux64-libdmg: GL-BW8EoTVeVELvQvC-tWg + toolchain-linux64-llvm-symbolizer-16: KEr5RWW0Rte7AEOEDlPt0Q + toolchain-linux64-makecab: Ecr2GzsvRs676_49QnJrXQ + toolchain-linux64-mar-tools: CvNcaWoEQeCTsam6ARQ5kQ + toolchain-linux64-mingw-fxc2-x86: VH-7wA-ESKO6YTmB_cDK-Q + toolchain-linux64-mingw32-nsis: IYfjlGWeT8eQJOU584utHw + toolchain-linux64-minidump-stackwalk: UIRI49TWSkqCij-ucNeMoA + toolchain-linux64-mkbom: IJkWYdlURFKMkXo_tV8ScQ + toolchain-linux64-msix-packaging: PBItAfqbSsaF9vUGb2V57g + toolchain-linux64-nasm: JR09ov6XTzyBhKfUYiRSXg + toolchain-linux64-nasm-2.14.02: Fh1tjrVFSACoWSFs97f1rg + toolchain-linux64-node-12: VO_ycfGaT9SRsORPojFO1Q + toolchain-linux64-node-16: cQz1GGE6SLqbyjtWcyVTfQ + toolchain-linux64-pkgconf: b6-JQsdYTfar6MidVlLvvA + toolchain-linux64-python-3.7: O-wLDeOUT62C5KB8GrWGbA + toolchain-linux64-python-3.8: OhvgmPMSTlmIB5vVFmJy3A + toolchain-linux64-rust-1.65: VocVZTiMSKeGj59hSb2h6A + toolchain-linux64-rust-1.66: IaoVp3RoSwa_zIhy9HrIKg + toolchain-linux64-rust-1.69: FyKgFNcQQzW3jNtY1JYLkw + toolchain-linux64-rust-cross-1.69: eS75a2khQK6WSgdxpUWqFg + toolchain-linux64-rust-dev: E0pm-NMsSeCfQtvI_CwLZA + toolchain-linux64-rust-macos-1.65: dxaGSMehSiWHNUCoeFLASw + toolchain-linux64-rust-macos-1.69: MuEniHfFRteYZUVav0ecUg + toolchain-linux64-rust-size: W1Q7SSbcS76k2VW-gEyUlg + toolchain-linux64-rust-static-1.69: FSy6OIjwQdepNWIZKe6seg + toolchain-linux64-rust-windows-1.65: fJBOmPxTSSW2vLKVbsSZPQ + toolchain-linux64-rust-windows-1.69: F2EVBkvjT1yh50DmuNQKKA + toolchain-linux64-sccache: T-oI2iWRQ-CEE2fjTu6x1w + toolchain-linux64-toolchain-sysroot: JqOMSlqpR--el-NDF7SPbA + toolchain-linux64-upx: ILEygdkIQT6f5x77p15iFw + toolchain-linux64-winchecksec: fKhj283KSpy8tLLqz0SjMw + toolchain-linux64-wine: YF1iG3ynTxWXtilE4CfzQw + toolchain-linux64-x64-compiler-rt-16: VPQTxhhKRsqMULYxX1fDwg + toolchain-linux64-x86-compiler-rt-16: GcpY6FueQ0CuyrKJNdZjtw + toolchain-linux64-xar: YWldEboJTOm0_jXus7XQ0A + toolchain-macosx64-aarch64-cargo-vet: YhvITXBGRCqfEcIpD_BFEw + toolchain-macosx64-aarch64-cbindgen: HqQOKaIETMGz55LGQps1CA + toolchain-macosx64-aarch64-clang-16: GW4ZYvkHSRqnu95v8T_pGA + toolchain-macosx64-aarch64-clang-16-raw: Ecahw-P5Th2jD58GZxTVsQ + toolchain-macosx64-aarch64-clang-tidy: Y4h7coNTTn68aWYKbYJQgw + toolchain-macosx64-aarch64-compiler-rt-16: F_N9rkYxReeITfDxAd75gw + toolchain-macosx64-aarch64-dump_syms: OTryxKiBQvOwV_B-WWr8hA + toolchain-macosx64-aarch64-fix-stacks: QV7g3rY0SwKL1sB8kUU52g + toolchain-macosx64-aarch64-llvm-symbolizer-16: SlzCCE8eTLmQLDhpVzkuwg + toolchain-macosx64-aarch64-minidump-stackwalk: KkdQNNAkR1icyiUvN0M9xA + toolchain-macosx64-aarch64-nasm: feIcqKupQ_aNIhP6tgwhKg + toolchain-macosx64-aarch64-node-16: LITsE7xeS_y5VsbPwkAMjw + toolchain-macosx64-aarch64-pkgconf: QnWkafJ1QkmZkEuZ36FtPw + toolchain-macosx64-aarch64-sccache: a06ZaTzMTdixu6blf8lRmA + toolchain-macosx64-cargo-vet: GrmCDj7YSPShuqLh2AunRQ + toolchain-macosx64-cbindgen: V7ZHGAToRHiwbcoD9GqxEg + toolchain-macosx64-clang-14-raw: T_YsKzIfTH68r1tcOa3KpQ + toolchain-macosx64-clang-16: V7TB8Iy3TfCLfNh8RdumsA + toolchain-macosx64-clang-16-raw: dnnF_CX-RmewfspAUSJhdA + toolchain-macosx64-clang-tidy: KIes-BT1Sx-Yvkk4SDcFxw + toolchain-macosx64-dump_syms: Af6X6RAUTM-rFTEHlbEHKw + toolchain-macosx64-fix-stacks: WApGFdMtRfiBbUGliFBwBA + toolchain-macosx64-geckodriver: CHIpVtcHR2SulcA9x8hyRA + toolchain-macosx64-gn: RwhEqYaPRv6jYesXLYSOmQ + toolchain-macosx64-llvm-symbolizer-16: WvYTPKn7QD2B4f67-WiEDA + toolchain-macosx64-minidump-stackwalk: HuE597bmSQixubRlB8Q_9g + toolchain-macosx64-nasm: Ys6AZwKIQCWjJNQyfPa6UQ + toolchain-macosx64-node-12: Yk6rFXVZREmr7uAvr3cjtw + toolchain-macosx64-node-16: PMDzcVpAQN-aYw3lH3W5dw + toolchain-macosx64-pkgconf: T43w-ZejQXueoli_zja5Qg + toolchain-macosx64-python-3.8: MO3JSICrQkimC19_Swjvsw + toolchain-macosx64-rust-1.69: ZxMSkeQqS96rYlWdZLqK7g + toolchain-macosx64-sccache: DYliNQFCTHq8lfXWgn1pHA + toolchain-macosx64-sdk-13.3: DNhf822QTySWGHDFYsVSGw + toolchain-macosx64-x64-compiler-rt-16: TXjhyQfuTgSntl9MTNHrcA + toolchain-mingw32-rust-1.69: dtzgpHrRSm2FUA1FJflWJg + toolchain-nsis: JxKU35oFTma3EMcG_EYnyw + toolchain-rustc-dist-toolchain: QV0WDz3oSFWH4TRoJIeXrg + toolchain-sysroot-aarch64-linux-gnu: RtJwU-DKT32I7pBN3peMQA + toolchain-sysroot-i686-linux-gnu: KwF6AxgEQcKzXPhyxstCDg + toolchain-sysroot-wasm32-wasi-clang-16: ZXE0-McYT92-BxLId9zW7A + toolchain-sysroot-x86_64-linux-gnu: D_9V5RIyS9KIvoCrOQWyYg + toolchain-sysroot-x86_64-linux-gnu-x11: NuK4Oe-gRw288dFz5IEvyw + toolchain-wasm32-wasi-compiler-rt-16: c4gREoTzQzGnKZs4w3QohA + toolchain-win32-compiler-rt-16: VSHMsFA3TUO51_Vo98qfuA + toolchain-win32-fix-stacks: KwexEuJNSOK23g75PrxQCw + toolchain-win32-geckodriver: TSyvxm-CQjS4DeS7ctkfrQ + toolchain-win32-minidump-stackwalk: CunvhBLuRZuJ7sVfRbu-Gw + toolchain-win32-node-12: bt3T58anQ5itxXXu6bgyFQ + toolchain-win32-node-16: JGCCaok9QCi123Fa7L8FYQ + toolchain-win64-cargo-vet: JPr-zZ24SIuo32r7m8r5qA + toolchain-win64-cbindgen: Rfgyq2hJRR6ReAO44v2x0A + toolchain-win64-clang-16: TJMva_GNQDaAo18nlbSPkg + toolchain-win64-clang-16-raw: MHflS_gBSBWIUyJZblRAww + toolchain-win64-clang-16-stage1: fhAX5RkhQBikPujPb47oHA + toolchain-win64-clang-tidy: ChZIaUwxSaSP4lLrWJVtaQ + toolchain-win64-compiler-rt-16: P_7GyhmxS-y9P7sJB0Mv_Q + toolchain-win64-dump_syms: BnD57hEsRFyvgD9F_0KA5A + toolchain-win64-fix-stacks: IhwrPuWWSLC7oKx1Zyjq1g + toolchain-win64-geckodriver: c1SzOsazR7ugk9zQKQrPcA + toolchain-win64-gn: Y8M9IoHPQLutBV4oYhofzg + toolchain-win64-llvm-symbolizer-16: Gk3vQ8pkTiuAD4S6MJhHZA + toolchain-win64-minidump-stackwalk: e4IDvnPNQVqXnqwYQQreHw + toolchain-win64-mozmake: BPR86nQjQg-QcGI7-I_YeQ + toolchain-win64-nasm: BpUJuvjFQIarzt8U7r9z6g + toolchain-win64-node-12: VmAz87fmQWqA0STyxtSIcA + toolchain-win64-node-16: Q1URtR6dTHK2ObZRny5ikg + toolchain-win64-pkgconf: QnCs2mz6TA-p_6bfiATf6g + toolchain-win64-python-3.8: faBX13RcTTykGOZS7e5eSw + toolchain-win64-rust-1.69: FdFfARQTQVa61OIAAV1_Xg + toolchain-win64-sccache: djlshxVFQiGgnHbkRYu2xA + toolchain-win64-vs2019: Id_zrn5KTrWOZFIh1NS0VQ + toolchain-win64-vs2022: Bi85TCWMQWe363eCnVLKzg + toolchain-win64-winchecksec: Q1v5wqr3TyyhIpPSCdkIJA + toolchain-wrench-deps: KAOPKeu9QRaSQtWcvZVBjg + upload-generated-sources-dummy-icecat-macosx64-shippable: R04Lt8RPTmCsrS4Fs0pyOQ + upload-generated-sources-linux-shippable/opt: BOenJRrQR16zincslSDG8A + upload-generated-sources-linux64-shippable/opt: KkJiwFjzRTONanWcxRZMXA + upload-generated-sources-macosx64-aarch64-shippable/opt: Ea05qe4nQh-0flvldV8yoQ + upload-generated-sources-macosx64-x64-shippable/opt: bczPTAxETvm89DSAX1hphg + upload-generated-sources-win32-shippable/opt: FJ-RgGbvSqmRFZ-mnM3xjg + upload-generated-sources-win64-aarch64-shippable/opt: I_gveu3DQE-OOxUwdZw8eg + upload-generated-sources-win64-shippable/opt: UiEYunBAQ4qYJYYDpXlzlw + upload-symbols-dummy-icecat-macosx64-shippable: I3TP3buuSMaKKXpRCvELtg + valgrind-linux64-valgrind-qr/opt-swr: X-5Guhz8SYqI8x-V1xuxhg files_changed: - - dom/base/TimeoutManager.cpp - - dom/base/TimeoutManager.h - - dom/workers/WorkerPrivate.cpp - - dom/workers/WorkerPrivate.h - - dom/workers/WorkerScope.cpp - - modules/libpref/init/StaticPrefList.yaml + - dom/html/HTMLDetailsElement.cpp + - gfx/thebes/gfxUserFontSet.cpp filters: - target_tasks_method -head_git_rev: 73462f0ff623648c49b17892d06fab955d6a6ee1 -head_ref: 82e96a128bf5e3e7dd6e5180c9528f623ba5e0f7 -head_repository: https://hg.mozilla.org/releases/mozilla-esr140 -head_rev: 82e96a128bf5e3e7dd6e5180c9528f623ba5e0f7 +head_ref: 8a02a7c43f1eddfd18926f0266d188b4f359c0aa +head_repository: https://hg.mozilla.org/releases/mozilla-esr115 +head_rev: 8a02a7c43f1eddfd18926f0266d188b4f359c0aa head_tag: '' hg_branch: default level: '3' message: '' -moz_build_date: '20260106170501' -next_version: 140.7.1esr +moz_build_date: '20231113155436' +next_version: 115.5.1esr optimize_strategies: null optimize_target_tasks: true owner: user@example.com phabricator_diff: null -project: mozilla-esr140 -pushdate: 1767719101 -pushlog_id: '425' +project: mozilla-esr115 +pushdate: 1699890876 +pushlog_id: '162' release_enable_emefree: false -release_enable_partner_attribution: false +release_enable_partner_attribution: true release_enable_partner_repack: true -release_eta: '2026-01-13T14:00:35.136Z' +release_eta: '2023-11-21T14:00:00.000Z' release_history: {} release_partner_build_number: 1 release_partner_config: @@ -10058,7 +7984,7 @@ release_partner_config: upload_to_candidates: 'true' release_partners: null release_product: icecat -release_type: esr140 +release_type: esr115 repository_type: hg required_signoffs: [] signoff_urls: {} @@ -10068,4 +7994,4 @@ test_manifest_loader: default try_mode: null try_options: null try_task_config: {} -version: 140.7.0esr +version: 115.5.0esr diff --git a/icecat/taskcluster/test/params/update.sh b/icecat/taskcluster/test/params/update.sh index d23f25ec7c..cd362a412c 100644 --- a/icecat/taskcluster/test/params/update.sh +++ b/icecat/taskcluster/test/params/update.sh @@ -133,5 +133,5 @@ for f in $files; do ;; esac - curl -f -L ${TASKCLUSTER_ROOT_URL}/api/${service}/v1/task/${task}/artifacts/public%2Fparameters.yml | yq -oy "$filter" > "${f}" + curl -f -L ${TASKCLUSTER_ROOT_URL}/api/${service}/v1/task/${task}/artifacts/public%2Fparameters.yml | yq -y "$filter" > "${f}" done diff --git a/icecat/testing/marionette/harness/marionette_harness/www/layout/test_carets_columns.html b/icecat/testing/marionette/harness/marionette_harness/www/layout/test_carets_columns.html index 1df69e7a11..378e029ac2 100644 --- a/icecat/testing/marionette/harness/marionette_harness/www/layout/test_carets_columns.html +++ b/icecat/testing/marionette/harness/marionette_harness/www/layout/test_carets_columns.html @@ -15,7 +15,6 @@ img {
- Some text
Before image 1
After image 1
diff --git a/icecat/testing/update/mach_commands.py b/icecat/testing/update/mach_commands.py index 74a23978a6..a1c58127f1 100644 --- a/icecat/testing/update/mach_commands.py +++ b/icecat/testing/update/mach_commands.py @@ -2,131 +2,30 @@ # 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 json import logging -import re -import subprocess import sys import tempfile -from dataclasses import dataclass -from os import environ, makedirs from pathlib import Path +from platform import uname from shutil import copytree, unpack_archive -import mozinfo import mozinstall import requests -from gecko_taskgraph.transforms.update_test import ReleaseType from mach.decorators import Command, CommandArgument from mozbuild.base import BinaryNotFoundException from mozlog.structured import commandline -from mozrelease.update_verify import UpdateVerifyConfig -STAGING_POLICY_PAYLOAD = { - "policies": { - "AppUpdateURL": "https://stage.balrog.nonprod.cloudops.mozgcp.net/update/6/IceCat/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%SYSTEM_CAPABILITIES%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml" - } -} - - -@dataclass -class UpdateTestConfig: - """Track all needed test config""" - - channel: str = "release-localtest" - mar_channel: str = "icecat-mozilla-release" - app_dir_name: str = "fx_test" - manifest_loc: str = "testing/update/manifest.toml" - # Where in the list of allowable source versions should we default to testing - source_version_position: int = -3 - # How many major versions back can we test? - major_version_range: int = 3 - locale: str = "en-US" - update_verify_file: str = "update-verify.cfg" - update_verify_config = None - config_source = None - release_type: ReleaseType = ReleaseType.release - esr_version = None - staging_update = False - - def __post_init__(self): - if environ.get("UPLOAD_DIR"): - self.artifact_dir = Path(environ.get("UPLOAD_DIR"), "update-test") - makedirs(self.artifact_dir, exist_ok=True) - self.version_info_path = Path( - self.artifact_dir, environ.get("VERSION_LOG_FILENAME") - ) - - else: - self.version_info_path = None - - def set_channel(self, new_channel, esr_version=None): - self.channel = new_channel - if self.channel.startswith("release"): - self.mar_channel = "icecat-mozilla-release" - self.release_type = ReleaseType.release - elif self.channel.startswith("beta"): - self.mar_channel = "icecat-mozilla-beta,icecat-mozilla-release" - self.release_type = ReleaseType.beta - elif self.channel.startswith("esr"): - self.mar_channel = "icecat-mozilla-esr,icecat-mozilla-release" - self.release_type = ReleaseType.esr - self.esr_version = esr_version - else: - self.mar_channel = "icecat-mozilla-central" - self.release_type = ReleaseType.other - - def set_ftp_info(self): - """Get server URL and template for downloading application/installer""" - # The %release% string will be replaced by a version number later - platform, executable_name = get_fx_executable_name("%release%") - if self.update_verify_config: - full_info_release = next( - r for r in self.update_verify_config.releases if r.get("from") - ) - executable_name = Path(full_info_release["from"]).name - release_number = full_info_release["from"].split("/")[3] - executable_name = executable_name.replace(release_number, "%release%") - executable_name = executable_name.replace(".bz2", ".xz") - executable_name = executable_name.replace(".pkg", ".dmg") - executable_name = executable_name.replace(".msi", ".exe") - template = ( - f"https://archive.mozilla.org/pub/icecat/releases/%release%/{platform}/{self.locale}/" - + executable_name - ) - - self.ftp_server = template.split("%release%")[0] - self.url_template = template - - def add_update_verify_config(self, filename=None): - """Parse update-verify.cfg. Obtain a copy if not found in dep/commandline""" - if not filename: - platform, _ = get_fx_executable_name("") - config_route = ( - "https://icecat-ci-tc.services.mozilla.com/api/" - "index/v1/task/gecko.v2.mozilla-central.latest.icecat." - f"update-verify-config-icecat-{platform}-{self.channel}" - "/artifacts/public%2Fbuild%2Fupdate-verify.cfg" - ) - resp = requests.get(config_route) - try: - resp.raise_for_status() - filename = Path(self.tempdir, self.update_verify_file) - with open(filename, "wb") as fh: - fh.write(resp.content) - self.config_source = "route" - except requests.exceptions.HTTPError: - return None - - uv_config = UpdateVerifyConfig() - uv_config.read(filename) - self.update_verify_config = uv_config - # Beta display version example "140.0 Beta 3", Release just like "140.0" - if "Beta" in uv_config.to_display_version: - major, beta = uv_config.to_display_version.split(" Beta ") - self.target_version = f"{major}b{beta}" - else: - self.target_version = uv_config.to_display_version +TEST_UPDATE_CHANNEL = "release-localtest" +if TEST_UPDATE_CHANNEL.startswith("release"): + MAR_CHANNEL = "icecat-mozilla-release" +elif TEST_UPDATE_CHANNEL.startswith("beta"): + MAR_CHANNEL = "icecat-mozilla-beta" +else: + MAR_CHANNEL = "icecat-mozilla-central" +TEST_REGION = "en-US" +TEST_SOURCE_VERSION = "135.0.1" +FX_DOWNLOAD_DIR_URL = "https://archive.mozilla.org/pub/icecat/releases/" +APP_DIR_NAME = "fx_test" def setup_update_argument_parser(): @@ -140,179 +39,50 @@ def setup_update_argument_parser(): def get_fx_executable_name(version): - """Given a version string, get the expected downloadable name for the os""" - if mozinfo.os == "mac": - executable_platform = "mac" + u = uname() + + if u.system == "Darwin": + platform = "mac" executable_name = f"IceCat {version}.dmg" - if mozinfo.os == "linux": - executable_platform = "linux-x86_64" - try: - assert int(version.split(".")[0]) < 135 + if u.system == "Linux": + if "64" in u.machine: + platform = "linux-x86_64" + else: + platform = "linux-x86_64" + if int(version.split(".")[0]) < 135: executable_name = f"icecat-{version}.tar.bz2" - except (AssertionError, ValueError): + else: executable_name = f"icecat-{version}.tar.xz" - if mozinfo.os == "win": - if mozinfo.arch == "aarch64": - executable_platform = "win64-aarch64" - elif mozinfo.bits == "64": - executable_platform = "win64" + if u.system == "Windows": + if u.machine == "ARM64": + platform = "win64-aarch64" + elif "64" in u.machine: + platform = "win64" else: - executable_platform = "win32" + platform = "win32" executable_name = f"IceCat Setup {version}.exe" - return executable_platform, executable_name.replace(" ", "%20") + return platform, executable_name.replace(" ", "%20") -def get_valid_source_versions(config): - """ - Get a list of versions to update from, based on config. - For beta, this means a list of betas, not releases. - For ESR, this means a list of ESR versions where major version matches target. - """ - ftp_content = requests.get(config.ftp_server).content.decode() - # All versions start with e.g. 140.0, so beta and release can be int'ed - ver_head, ver_tail = config.target_version.split(".", 1) - latest_version = int(ver_head) - latest_minor_str = "" - # Versions like 130.10.1 and 130.0 are possible, capture the minor number - for c in ver_tail: - try: - int(c) - latest_minor_str = latest_minor_str + c - except ValueError: - break - - valid_versions: list[str] = [] - for major in range(latest_version - config.major_version_range, latest_version + 1): - minor_versions = [] - if config.release_type == ReleaseType.esr and major != latest_version: - continue - for minor in range(0, 11): - if ( - config.release_type == ReleaseType.release - and f"/{major}.{minor}/" in ftp_content - ): - if f"{major}.{minor}" == config.target_version: - break - minor_versions.append(minor) - valid_versions.append(f"{major}.{minor}") - elif config.release_type == ReleaseType.esr and re.compile( - rf"/{major}\.{minor}.*/" - ).search(ftp_content): - minor_versions.append(minor) - if f"/{major}.{minor}esr" in ftp_content: - valid_versions.append(f"{major}.{minor}") - elif config.release_type == ReleaseType.beta and minor == 0: - # Release 1xx.0 is not available, but 1xx.0b1 is: - minor_versions.append(minor) - - sep = "b" if config.release_type == ReleaseType.beta else "." - - for minor in minor_versions: - for dot in range(0, 15): - if f"{major}.{minor}{sep}{dot}" == config.target_version: - break - if config.release_type == ReleaseType.esr: - if f"/{major}.{minor}{sep}{dot}esr/" in ftp_content: - valid_versions.append(f"{major}.{minor}{sep}{dot}") - elif f"/{major}.{minor}{sep}{dot}/" in ftp_content: - valid_versions.append(f"{major}.{minor}{sep}{dot}") - - # Only test beta versions if channel is beta - if config.release_type == ReleaseType.beta: - valid_versions = [ver for ver in valid_versions if "b" in ver] - elif config.release_type == ReleaseType.esr: - valid_versions = [ - f"{ver}esr" if not ver.endswith("esr") else ver for ver in valid_versions - ] - valid_versions.sort() - while len(valid_versions) < 5: - valid_versions.insert(0, valid_versions[0]) - return valid_versions - - -def get_binary_path(config: UpdateTestConfig, **kwargs) -> str: +def get_binary_path(tempdir, **kwargs) -> str: # Install correct Fx and return executable location - if not config.source_version: - if config.update_verify_config: - # In future, we can modify this for watershed logic - source_versions = get_valid_source_versions(config) - else: - response = requests.get( - "https://product-details.mozilla.org/1.0/icecat_versions.json" - ) - response.raise_for_status() - product_details = response.json() - if config.release_type == ReleaseType.beta: - target_channel = "LATEST_ICECAT_RELEASED_DEVEL_VERSION" - elif config.release_type == ReleaseType.esr: - current_esr = product_details.get("ICECAT_ESR").split(".")[0] - if config.esr_version == current_esr: - target_channel = "ICECAT_ESR" - else: - target_channel = f"ICECAT_ESR{config.esr_version}" - else: - target_channel = "LATEST_ICECAT_VERSION" + platform, executable_name = get_fx_executable_name(TEST_SOURCE_VERSION) - target_version = product_details.get(target_channel) - config.target_version = target_version - source_versions = get_valid_source_versions(config) + executable_url = rf"{FX_DOWNLOAD_DIR_URL}{TEST_SOURCE_VERSION}/{platform}/{TEST_REGION}/{executable_name}" - # NB below: value 0 will get you the oldest acceptable version, not the newest - source_version = source_versions[config.source_version_position] - config.source_version = source_version - platform, executable_name = get_fx_executable_name(config.source_version) - - os_edition = f"{mozinfo.os} {mozinfo.os_version}" - if config.version_info_path: - # Only write the file on non-local runs - print(f"Writing source info to {config.version_info_path.resolve()}...") - with config.version_info_path.open("a") as fh: - fh.write(f"Test Type: {kwargs.get('test_type')}\n") - fh.write(f"UV Config Source: {config.config_source}\n") - fh.write(f"Region: {config.locale}\n") - fh.write(f"Source Version: {config.source_version}\n") - fh.write(f"Platform: {os_edition}\n") - with config.version_info_path.open() as fh: - print("".join(fh.readlines())) - else: - print( - f"Region: {config.locale}\nSource Version: {source_version}\nPlatform: {os_edition}" - ) - - executable_url = config.url_template.replace("%release%", config.source_version) - - installer_filename = Path(config.tempdir, Path(executable_url).name) - installed_app_dir = Path(config.tempdir, config.app_dir_name) + installer_filename = Path(tempdir, Path(executable_url).name) + installed_app_dir = Path(tempdir, APP_DIR_NAME) print(f"Downloading Fx from {executable_url}...") response = requests.get(executable_url) - response.raise_for_status() - print(f"Download successful, status {response.status_code}") - with installer_filename.open("wb") as fh: + if 199 < response.status_code < 300: + print(f"Download successful, status {response.status_code}") + with open(installer_filename, "wb") as fh: fh.write(response.content) fx_location = mozinstall.install(installer_filename, installed_app_dir) print(f"IceCat installed to {fx_location}") - - if config.staging_update: - print("Writing enterprise policy for update server") - fx_path = Path(fx_location) - policy_path = None - if mozinfo.os in ["linux", "win"]: - policy_path = fx_path / "distribution" - elif mozinfo.os == "mac": - policy_path = fx_path / "Contents" / "Resources" / "distribution" - else: - raise ValueError("Invalid OS.") - makedirs(policy_path) - policy_loc = policy_path / "policies.json" - print(f"Creating {policy_loc}...") - with policy_loc.open("w") as fh: - json.dump(STAGING_POLICY_PAYLOAD, fh, indent=2) - with policy_loc.open() as fh: - print(fh.read()) - return fx_location @@ -323,97 +93,18 @@ def get_binary_path(config: UpdateTestConfig, **kwargs) -> str: description="Test if the version can be updated to the latest patch successfully,", parser=setup_update_argument_parser, ) -@CommandArgument("--binary-path", help="IceCat executable path is needed") -@CommandArgument("--test-type", default="Base", help="Base/Background") -@CommandArgument("--source-version", help="IceCat build version to update from") -@CommandArgument( - "--source-versions-back", - help="Update from the version of Fx $N releases before current", -) -@CommandArgument("--source-locale", help="IceCat build locale to update from") -@CommandArgument("--channel", default="release-localtest", help="Update channel to use") -@CommandArgument( - "--esr-version", - help="ESR version, if set with --channel=esr, will only update within ESR major version", -) -@CommandArgument("--uv-config-file", help="Update Verify config file") -@CommandArgument( - "--use-balrog-staging", action="store_true", help="Update from staging, not prod" -) +@CommandArgument("--binary_path", help="IceCat executable path is needed") def build(command_context, binary_path, **kwargs): - config = UpdateTestConfig() - - fetches = environ.get("MOZ_FETCHES_DIR") - if fetches: - config_file = Path(fetches, config.update_verify_file) - if kwargs.get("uv_config_file"): - config.config_source = "commandline" - elif config_file.is_file(): - kwargs["uv_config_file"] = config_file - config.config_source = "kind_dependency" - - if not kwargs.get("uv_config_file"): - config.add_update_verify_config() - else: - config.add_update_verify_config(kwargs["uv_config_file"]) - # TODO: update tests to check against config version, not update server resp - # kwargs["to_display_version"] = uv_config.to_display_version - - if kwargs.get("source_locale"): - config.locale = kwargs["source_locale"] - - if kwargs.get("source_versions_back"): - config.source_version_position = -int(kwargs["source_versions_back"]) - - if kwargs.get("source_version"): - config.source_version = kwargs["source_version"] - else: - config.source_version = None - - config.set_ftp_info() - tempdir = tempfile.TemporaryDirectory() # If we have a symlink to the tmp directory, resolve it tempdir_name = str(Path(tempdir.name).resolve()) - config.tempdir = tempdir_name - test_type = kwargs.get("test_type") - - if kwargs.get("use_balrog_staging"): - config.staging_update = True - - # Select update channel - if kwargs.get("channel"): - config.set_channel(kwargs["channel"], kwargs.get("esr_version")) - # if (config.beta and not config.update_verify_config): - # logging.error("Non-release testing on local machines is not supported.") - # sys.exit(1) - - # Run the specified test in the suite - with open(config.manifest_loc) as f: - old_content = f.read() - - with open(config.manifest_loc, "w") as f: - f.write("[DEFAULT]\n\n") - if test_type.lower() == "base": - f.write('["test_apply_update.py"]') - elif test_type.lower() == "background": - f.write('["test_background_update.py"]') - else: - logging.ERROR("Invalid test type") - sys.exit(1) - - config.dir = command_context.topsrcdir - - if mozinfo.os == "win": - config.log_file_path = bits_pretest() try: kwargs["binary"] = set_up( - binary_path or get_binary_path(config, **kwargs), config + binary_path or get_binary_path(tempdir_name, **kwargs), tempdir=tempdir_name + ) + return run_tests( + topsrcdir=command_context.topsrcdir, tempdir=tempdir_name, **kwargs ) - # TODO: change tests to check against config, not update server response - # if not kwargs.get("to_display_version"): - # kwargs["to_display_version"] = config.target_version - return run_tests(config, **kwargs) except BinaryNotFoundException as e: command_context.log( logging.ERROR, @@ -424,20 +115,16 @@ def build(command_context, binary_path, **kwargs): command_context.log(logging.INFO, "update-test", {"help": e.help()}, "{help}") return 1 finally: - with open(config.manifest_loc, "w") as f: - f.write(old_content) - if mozinfo.os == "win": - bits_posttest(config) tempdir.cleanup() -def run_tests(config, **kwargs): +def run_tests(binary=None, topsrcdir=None, tempdir=None, **kwargs): from argparse import Namespace from marionette_harness.runtests import MarionetteHarness, MarionetteTestRunner args = Namespace() - args.binary = kwargs["binary"] + args.binary = binary args.logger = kwargs.pop("log", None) if not args.logger: args.logger = commandline.setup_logging( @@ -449,8 +136,8 @@ def run_tests(config, **kwargs): args.tests = [ Path( - config.dir, - config.manifest_loc, + topsrcdir, + "testing/update/manifest.toml", ) ] args.gecko_log = "-" @@ -459,25 +146,22 @@ def run_tests(config, **kwargs): parser.verify_usage(args) failed = MarionetteHarness(MarionetteTestRunner, args=vars(args)).run() - if config.version_info_path: - with config.version_info_path.open("a") as fh: - fh.write(f"Status: {'failed' if failed else 'passed'}\n") if failed > 0: return 1 return 0 -def copy_macos_channelprefs(config) -> str: +def copy_macos_channelprefs(tempdir) -> str: # Copy ChannelPrefs.framework to the correct location on MacOS, # return the location of the Fx executable - installed_app_dir = Path(config.tempdir, config.app_dir_name) + installed_app_dir = Path(tempdir, APP_DIR_NAME) bz_channelprefs_link = "https://bugzilla.mozilla.org/attachment.cgi?id=9417387" resp = requests.get(bz_channelprefs_link) - download_target = Path(config.tempdir, "channelprefs.zip") + download_target = Path(tempdir, "channelprefs.zip") unpack_target = str(download_target).rsplit(".", 1)[0] - with download_target.open("wb") as fh: + with open(download_target, "wb") as fh: fh.write(resp.content) unpack_archive(download_target, unpack_target) @@ -485,8 +169,8 @@ def copy_macos_channelprefs(config) -> str: f"Downloaded channelprefs.zip to {download_target} and unpacked to {unpack_target}" ) - src = Path(config.tempdir, "channelprefs", config.channel) - dst = Path(installed_app_dir, "IceCat.app", "Contents", "Frameworks") + src = Path(tempdir, "channelprefs", TEST_UPDATE_CHANNEL) + dst = Path(installed_app_dir, "Contents", "Frameworks") Path(installed_app_dir, "IceCat.app").chmod(455) # rwx for all users @@ -504,72 +188,20 @@ def copy_macos_channelprefs(config) -> str: return str(fx_executable) -def set_up(binary_path, config): +def set_up(binary_path, tempdir): # Set channel prefs for all OS targets binary_path_str = mozinstall.get_binary(binary_path, "IceCat") print(f"Binary path: {binary_path_str}") binary_dir = Path(binary_path_str).absolute().parent - if mozinfo.os == "mac": - return copy_macos_channelprefs(config) + if uname().system == "Darwin": + return copy_macos_channelprefs(tempdir) else: with Path(binary_dir, "update-settings.ini").open("w") as f: f.write("[Settings]\n") - f.write(f"ACCEPTED_MAR_CHANNEL_IDS={config.mar_channel}") + f.write(f"ACCEPTED_MAR_CHANNEL_IDS={MAR_CHANNEL}") with Path(binary_dir, "defaults", "pref", "channel-prefs.js").open("w") as f: - f.write(f'pref("app.update.channel", "{config.channel}");') + f.write(f'pref("app.update.channel", "{TEST_UPDATE_CHANNEL}");') return binary_path_str - - -def bits_pretest(): - # Check that BITS is enabled - for line in subprocess.check_output(["sc", "qc", "BITS"], text=True).split("\n"): - if "START_TYPE" in line: - assert "DISABLED" not in line - # Write all logs to a file to check for results later - log_file = tempfile.NamedTemporaryFile(mode="wt", delete=False) - sys.stdout = log_file - return log_file - - -def bits_posttest(config): - if config.staging_update: - # If we are in try, we didn't run the full test and BITS will fail. - return None - config.log_file_path.close() - sys.stdout = sys.__stdout__ - - failed = 0 - try: - # Check that all the expected logs are present - downloader_regex = r"UpdateService:makeBitsRequest - Starting BITS download with url: https?:\/\/.+, updateDir: .+, filename: .+" - bits_download_regex = ( - r"Downloader:downloadUpdate - BITS download running. BITS ID: {.+}" - ) - - with open(config.log_file_path.name, errors="ignore") as f: - logs = f.read() - assert re.search(downloader_regex, logs) - assert re.search(bits_download_regex, logs) - assert ( - "AUS:SVC Downloader:_canUseBits - Not using BITS because it was already tried" - not in logs - ) - assert ( - "AUS:SVC Downloader:downloadUpdate - Starting nsIIncrementalDownload with url:" - not in logs - ) - except (UnicodeDecodeError, AssertionError) as e: - failed = 1 - logging.error(e.__traceback__) - finally: - Path(config.log_file_path.name).unlink() - - if config.version_info_path: - with config.version_info_path.open("a") as fh: - fh.write(f"BITS: {'failed' if failed else 'passed'}\n") - - if failed: - sys.exit(1) diff --git a/icecat/testing/update/test_apply_update.py b/icecat/testing/update/test_apply_update.py index c27095e8db..de26aacdc0 100644 --- a/icecat/testing/update/test_apply_update.py +++ b/icecat/testing/update/test_apply_update.py @@ -1,8 +1,3 @@ -import xml.etree.ElementTree as ET -from os import environ -from pathlib import Path - -import requests from marionette_driver import expected from marionette_driver.by import By from marionette_driver.wait import Wait @@ -16,59 +11,18 @@ class TestApplyUpdate(MarionetteTestCase): def test_update_is_applied(self): self.marionette.set_pref("app.update.disabledForTesting", False) + self.marionette.set_pref("remote.system-access-check.enabled", False) self.marionette.set_pref("app.update.log", True) self.marionette.set_pref("remote.log.level", "Trace") - self.marionette.set_pref("remote.system-access-check.enabled", False) self.marionette.navigate(self.about_fx_url) - - self.marionette.set_context(self.marionette.CONTEXT_CHROME) - update_url = self.marionette.execute_async_script( - """ - (async function() { - const checker = Cc["@mozilla.org/updates/update-checker;1"].getService(Ci.nsIUpdateChecker); - let url = await checker.wrappedJSObject.getUpdateURL(checker.BACKGROUND_CHECK); - return url; - })().then(arguments[0]); - """ - ) - - response = requests.get(f"{update_url}?force=1") - response.raise_for_status() - - # Get the target version - root = ET.fromstring(response.text) - target_ver = root[0].get("appVersion") - - if environ.get("UPLOAD_DIR"): - version_info_log = Path( - environ.get("UPLOAD_DIR"), environ.get("VERSION_LOG_FILENAME") - ) - if version_info_log.is_file(): - with version_info_log.open("a") as fh: - fh.write(f"Target version: {target_ver}\n") - self.marionette.set_context(self.marionette.CONTEXT_CONTENT) - initial_ver = self.marionette.find_element(By.ID, "version").text - - # Try runs build unsigned updates, releases can't update on unsigned MARs - # ...so we're just going to check that balrog gives a reasonably-named file that exists - if environ.get("BALROG_STAGING"): - print("staging") - patch_url = root[0][0].get("URL") - assert ( - f"{target_ver}" in patch_url - ), f"{target_ver} not in patch url: {patch_url}" - patch_response = requests.get(patch_url) - patch_response.raise_for_status() - return True Wait(self.marionette, timeout=10).until( expected.element_displayed(By.ID, "downloadAndInstallButton") ) self.marionette.find_element(By.ID, "downloadAndInstallButton").click() - # Long timeouts are a known issue - Bug 2000040 - Wait(self.marionette, timeout=240).until( + Wait(self.marionette, timeout=200).until( expected.element_displayed(By.ID, "updateButton") ) @@ -77,31 +31,13 @@ class TestApplyUpdate(MarionetteTestCase): ) self.marionette.set_pref("app.update.disabledForTesting", False) + self.marionette.set_pref("remote.system-access-check.enabled", False) self.marionette.set_pref("app.update.log", True) self.marionette.set_pref("remote.log.level", "Trace") - self.marionette.set_pref("remote.system-access-check.enabled", False) self.marionette.navigate(self.about_fx_url) - - Wait(self.marionette, timeout=240).until( + Wait(self.marionette, timeout=200).until( expected.element_displayed(By.ID, "noUpdatesFound") ) - # Mini smoke test - try: - print(f"Updated from {initial_ver} to {target_ver}") - except UnicodeEncodeError: - print(f"Updated to {target_ver}") - version_text = self.marionette.find_element(By.ID, "version").text - assert target_ver in version_text - assert len(self.marionette.window_handles) == 1 - self.marionette.open("tab") - Wait(self.marionette, timeout=20).until( - lambda _: len(self.marionette.window_handles) == 2 - ) - self.marionette.close() - Wait(self.marionette, timeout=20).until( - lambda _: len(self.marionette.window_handles) == 1 - ) - def tearDown(self): MarionetteTestCase.tearDown(self) diff --git a/icecat/testing/update/test_background_update.py b/icecat/testing/update/test_background_update.py deleted file mode 100644 index d6872b9d4f..0000000000 --- a/icecat/testing/update/test_background_update.py +++ /dev/null @@ -1,147 +0,0 @@ -import xml.etree.ElementTree as ET -from os import environ -from pathlib import Path - -import requests -from marionette_driver import expected -from marionette_driver.by import By -from marionette_driver.wait import Wait -from marionette_harness import MarionetteTestCase - - -def get_update_server_response(update_url, force: int): - response = requests.get(f"{update_url}?force={force}") - if response.status_code != 200: - raise Exception( - f"Tried to fetch update.xml but got response code {response.status_code}" - ) - - return ET.fromstring(response.text) - - -def get_possible_target_versions(update_url): - """If throttled to a lower target version, return both possible versions""" - versions = [] - for n in range(2): - # Get the target version - root = get_update_server_response(update_url, n) - versions.append(root[0].get("appVersion")) - - return list(set(versions)) - - -class TestBackgroundUpdate(MarionetteTestCase): - def setUp(self): - MarionetteTestCase.setUp(self) - self.about_fx_url = "chrome://browser/content/aboutDialog.xhtml" - - def test_background_update_is_applied(self): - self.marionette.set_pref("app.update.disabledForTesting", False) - self.marionette.set_pref("remote.system-access-check.enabled", False) - self.marionette.set_pref("app.update.log", True) - self.marionette.set_pref("remote.log.level", "Trace") - self.marionette.set_pref("app.update.interval", 5) - self.marionette.navigate(self.about_fx_url) - - self.marionette.set_context(self.marionette.CONTEXT_CHROME) - update_url = self.marionette.execute_async_script( - """ - (async function() { - let { UpdateUtils } = ChromeUtils.importESModule( - "resource://gre/modules/UpdateUtils.sys.mjs" - ); - let url = await UpdateUtils.formatUpdateURL(Services.appinfo.updateURL); - return url; - })().then(arguments[0]); - """ - ) - - target_vers = get_possible_target_versions(update_url) - - if environ.get("UPLOAD_DIR"): - version_info_log = Path( - environ.get("UPLOAD_DIR"), environ.get("VERSION_LOG_FILENAME") - ) - if version_info_log.is_file(): - with version_info_log.open("a") as fh: - fh.write(f"Target version options: {', '.join(target_vers)}\n") - - # Wait for the background update to be ready by checking for popup - # Long timeouts are a known issue - Bug 2000040 - Wait(self.marionette, timeout=100).until( - lambda _: self.marionette.find_elements(By.ID, "appMenu-notification-popup") - ) - - # Try runs build unsigned updates, releases can't update on unsigned MARs - # ...so we're just going to check that balrog gives a reasonably-named file that exists - # We run the code here to maximize what gets run in try. - if environ.get("BALROG_STAGING"): - root = get_update_server_response(update_url, 1) - patch_url = root[0][0].get("URL") - assert ( - f"/{target_vers[-1]}esr-candidates" in patch_url - ), f'"/{target_vers[-1]}esr-candidates not in patch url: {patch_url}' - patch_response = requests.get(patch_url) - patch_response.raise_for_status() - return True - - # Dismiss the popup - self.marionette.find_element(By.ID, "urlbar-input").click() - self.marionette.find_element(By.ID, "PanelUI-menu-button").click() - self.marionette.find_element(By.ID, "urlbar-input").click() - self.marionette.find_element(By.ID, "PanelUI-menu-button").click() - - # Check that there is a green badge on hamburger menu - Wait(self.marionette, timeout=100).until( - lambda _: self.marionette.find_element( - By.ID, "PanelUI-menu-button" - ).get_attribute("badge-status") - == "update-available" - ) - - # Click the update button in hamburger menu to download the update - self.marionette.find_element(By.ID, "PanelUI-menu-button").click() - self.marionette.find_element(By.ID, "appMenu-update-banner").click() - - # Make sure that the download is finished - self.marionette.set_context(self.marionette.CONTEXT_CONTENT) - Wait(self.marionette, timeout=200).until( - expected.element_displayed(By.ID, "updateButton") - ) - initial_ver = self.marionette.find_element(By.ID, "version").text - - # Restart normally - self.marionette.restart() - - self.marionette.set_pref("app.update.disabledForTesting", False) - self.marionette.set_pref("remote.system-access-check.enabled", False) - self.marionette.set_pref("app.update.log", True) - self.marionette.set_pref("remote.log.level", "Trace") - self.marionette.navigate(self.about_fx_url) - Wait(self.marionette, timeout=100).until( - expected.element_displayed(By.ID, "version") - ) - - # Mini smoke test - target_ver_verified = False - version_text = self.marionette.find_element(By.ID, "version").text - for target_ver in target_vers: - if target_ver in version_text: - target_ver_verified = True - try: - print(f"Updated from {initial_ver} to {target_ver}") - except UnicodeEncodeError: - print(f"Updated to {target_ver}") - assert target_ver_verified - assert len(self.marionette.window_handles) == 1 - self.marionette.open("tab") - Wait(self.marionette, timeout=20).until( - lambda _: len(self.marionette.window_handles) == 2 - ) - self.marionette.close() - Wait(self.marionette, timeout=20).until( - lambda _: len(self.marionette.window_handles) == 1 - ) - - def tearDown(self): - MarionetteTestCase.tearDown(self) diff --git a/icecat/testing/web-platform/meta/editing/run/delete.html.ini b/icecat/testing/web-platform/meta/editing/run/delete.html.ini index f81ca647cd..e6ba9dbe87 100644 --- a/icecat/testing/web-platform/meta/editing/run/delete.html.ini +++ b/icecat/testing/web-platform/meta/editing/run/delete.html.ini @@ -137,6 +137,12 @@ [[["delete",""\]\] "
  1. foo
{}
" compare innerHTML] expected: FAIL + [[["defaultparagraphseparator","div"\],["delete",""\]\] "
  1. foo

{}
" compare innerHTML] + expected: FAIL + + [[["defaultparagraphseparator","p"\],["delete",""\]\] "

  1. foo

{}
" compare innerHTML] + expected: FAIL + [delete.html?2001-3000] expected: diff --git a/icecat/testing/web-platform/meta/editing/run/forwarddelete.html.ini b/icecat/testing/web-platform/meta/editing/run/forwarddelete.html.ini index fd76f5fd3b..d5aab9f071 100644 --- a/icecat/testing/web-platform/meta/editing/run/forwarddelete.html.ini +++ b/icecat/testing/web-platform/meta/editing/run/forwarddelete.html.ini @@ -550,6 +550,3 @@ [[["forwarddelete",""\]\] "

ab{}

": execCommand("forwarddelete", false, "") return value] expected: FAIL - - [[["forwarddelete",""\]\] "

abc{}


" compare innerHTML] - expected: FAIL diff --git a/icecat/testing/web-platform/meta/editing/run/multitest.html.ini b/icecat/testing/web-platform/meta/editing/run/multitest.html.ini index 0260ab7c33..1c2f7bc183 100644 --- a/icecat/testing/web-platform/meta/editing/run/multitest.html.ini +++ b/icecat/testing/web-platform/meta/editing/run/multitest.html.ini @@ -972,6 +972,3 @@ [[["styleWithCSS","false"\],["delete",""\],["inserttext","a"\]\] "
[abc\]
" compare innerHTML] expected: FAIL - - [[["forwarddelete",""\],["inserttext","d"\]\] "

abc[\]


" compare innerHTML] - expected: FAIL diff --git a/icecat/testing/web-platform/meta/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html.ini b/icecat/testing/web-platform/meta/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html.ini index b1e3e3634c..7c9c7fbf4d 100644 --- a/icecat/testing/web-platform/meta/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html.ini +++ b/icecat/testing/web-platform/meta/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html.ini @@ -1,7 +1,6 @@ [lfedcm-identity.create-store-collect.tentative.sub.https.html] expected: if (os == "mac") and not debug: [OK, TIMEOUT] - if asan or tsan: TIMEOUT [Collecting from no providers yields a promise with null resolution] expected: FAIL @@ -11,9 +10,7 @@ [Credentials can be collected silently, but preventSilentAccess is respected] expected: if (os == "mac") and not debug: [PASS, NOTRUN] - if asan or tsan: NOTRUN [Cross-origin identity credential collection is correctly filtered when the type does not match] expected: if (os == "mac") and not debug: [PASS, TIMEOUT] - if asan or tsan: TIMEOUT diff --git a/icecat/testing/web-platform/meta/fetch/content-type/response.window.js.ini b/icecat/testing/web-platform/meta/fetch/content-type/response.window.js.ini index 9556f59f82..08a51ab02a 100644 --- a/icecat/testing/web-platform/meta/fetch/content-type/response.window.js.ini +++ b/icecat/testing/web-platform/meta/fetch/content-type/response.window.js.ini @@ -35,6 +35,9 @@ [fetch(): combined response Content-Type: text/html;x=" text/plain] expected: FAIL + [